/*
Package exampleoc is a generated package which contains definitions
of structs which represent a YANG schema. The generated schema can be
compressed by a series of transformations (compression was true
in this case).

NOTE WELL: This is an example code file that is distributed with ygot.
It should not be used within your application, as it WILL change,
without warning. Rather, you should generate structs directly from
OpenConfig models using the ygot package.

This package was generated by github.com/openconfig/ygot
using the following YANG input files:
  - public/release/models/network-instance/openconfig-network-instance.yang
  - public/release/models/optical-transport/openconfig-optical-amplifier.yang
  - public/release/models/optical-transport/openconfig-terminal-device.yang
  - public/release/models/optical-transport/openconfig-transport-line-protection.yang
  - public/release/models/platform/openconfig-platform.yang
  - public/release/models/bgp/openconfig-bgp-policy.yang
  - public/release/models/policy/openconfig-routing-policy.yang
  - public/release/models/lacp/openconfig-lacp.yang
  - public/release/models/system/openconfig-system.yang
  - public/release/models/stp/openconfig-spanning-tree.yang
  - public/release/models/interfaces/openconfig-interfaces.yang
  - public/release/models/interfaces/openconfig-if-ip.yang
  - public/release/models/interfaces/openconfig-if-aggregate.yang
  - public/release/models/interfaces/openconfig-if-ethernet.yang
  - public/release/models/interfaces/openconfig-if-ip-ext.yang
  - public/release/models/relay-agent/openconfig-relay-agent.yang
  - public/release/models/aft/openconfig-aft-network-instance.yang
  - public/release/models/lldp/openconfig-lldp.yang

Imported modules were sourced from:
  - public/...
  - deps/...
*/
package exampleoc

import (
	"encoding/json"
	"fmt"
	"reflect"

	"github.com/openconfig/goyang/pkg/yang"
	"github.com/openconfig/ygot/ygot"
	"github.com/openconfig/ygot/ytypes"
)

// Binary is a type that is used for fields that have a YANG type of
// binary. It is used such that binary fields can be distinguished from
// leaf-lists of uint8s (which are mapped to []uint8, equivalent to
// []byte in reflection).
type Binary []byte

// YANGEmpty is a type that is used for fields that have a YANG type of
// empty. It is used such that empty fields can be distinguished from boolean fields
// in the generated code.
type YANGEmpty bool

// UnionInt8 is an int8 type assignable to unions of which it is a subtype.
type UnionInt8 int8

// UnionInt16 is an int16 type assignable to unions of which it is a subtype.
type UnionInt16 int16

// UnionInt32 is an int32 type assignable to unions of which it is a subtype.
type UnionInt32 int32

// UnionInt64 is an int64 type assignable to unions of which it is a subtype.
type UnionInt64 int64

// UnionUint8 is a uint8 type assignable to unions of which it is a subtype.
type UnionUint8 uint8

// UnionUint16 is a uint16 type assignable to unions of which it is a subtype.
type UnionUint16 uint16

// UnionUint32 is a uint32 type assignable to unions of which it is a subtype.
type UnionUint32 uint32

// UnionUint64 is a uint64 type assignable to unions of which it is a subtype.
type UnionUint64 uint64

// UnionFloat64 is a float64 type assignable to unions of which it is a subtype.
type UnionFloat64 float64

// UnionString is a string type assignable to unions of which it is a subtype.
type UnionString string

// UnionBool is a bool type assignable to unions of which it is a subtype.
type UnionBool bool

// UnionUnsupported is an interface{} wrapper type for unsupported types. It is
// assignable to unions of which it is a subtype.
type UnionUnsupported struct {
	Value interface{}
}

var (
	SchemaTree map[string]*yang.Entry
	ΛEnumTypes map[string][]reflect.Type
)

func init() {
	var err error
	initΛEnumTypes()
	if SchemaTree, err = UnzipSchema(); err != nil {
		panic("schema error: " + err.Error())
	}
}

// Schema returns the details of the generated schema.
func Schema() (*ytypes.Schema, error) {
	uzp, err := UnzipSchema()
	if err != nil {
		return nil, fmt.Errorf("cannot unzip schema, %v", err)
	}

	return &ytypes.Schema{
		Root:       &Device{},
		SchemaTree: uzp,
		Unmarshal:  Unmarshal,
	}, nil
}

// UnzipSchema unzips the zipped schema and returns a map of yang.Entry nodes,
// keyed by the name of the struct that the yang.Entry describes the schema for.
func UnzipSchema() (map[string]*yang.Entry, error) {
	var schemaTree map[string]*yang.Entry
	var err error
	if schemaTree, err = ygot.GzipToSchema(ySchema); err != nil {
		return nil, fmt.Errorf("could not unzip the schema; %v", err)
	}
	return schemaTree, nil
}

// Unmarshal unmarshals data, which must be RFC7951 JSON format, into
// destStruct, which must be non-nil and the correct GoStruct type. It returns
// an error if the destStruct is not found in the schema or the data cannot be
// unmarshaled. The supplied options (opts) are used to control the behaviour
// of the unmarshal function - for example, determining whether errors are
// thrown for unknown fields in the input JSON.
func Unmarshal(data []byte, destStruct ygot.GoStruct, opts ...ytypes.UnmarshalOpt) error {
	tn := reflect.TypeOf(destStruct).Elem().Name()
	schema, ok := SchemaTree[tn]
	if !ok {
		return fmt.Errorf("could not find schema for type %s", tn)
	}
	var jsonTree interface{}
	if err := json.Unmarshal([]byte(data), &jsonTree); err != nil {
		return err
	}
	return ytypes.Unmarshal(schema, destStruct, jsonTree, opts...)
}

// Acl represents the /openconfig-acl/acl YANG schema element.
type Acl struct {
	ΛMetadata          []ygot.Annotation              `path:"@" ygotAnnotation:"true"`
	AclSet             map[Acl_AclSet_Key]*Acl_AclSet `path:"acl-sets/acl-set" module:"openconfig-acl/openconfig-acl"`
	ΛAclSet            []ygot.Annotation              `path:"acl-sets/@acl-set" ygotAnnotation:"true"`
	CounterCapability  E_Acl_ACL_COUNTER_CAPABILITY   `path:"state/counter-capability" module:"openconfig-acl/openconfig-acl"`
	ΛCounterCapability []ygot.Annotation              `path:"state/@counter-capability" ygotAnnotation:"true"`
	Interface          map[string]*Acl_Interface      `path:"interfaces/interface" module:"openconfig-acl/openconfig-acl"`
	ΛInterface         []ygot.Annotation              `path:"interfaces/@interface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl) IsYANGGoStruct() {}

// Acl_AclSet_Key represents the key for list AclSet of element /openconfig-acl/acl.
type Acl_AclSet_Key struct {
	Name string         `path:"name"`
	Type E_Acl_ACL_TYPE `path:"type"`
}

// IsYANGGoKeyStruct ensures that Acl_AclSet_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (Acl_AclSet_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the Acl_AclSet_Key key struct.
func (t Acl_AclSet_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"name": t.Name,
		"type": t.Type,
	}, nil
}

// NewAclSet creates a new entry in the AclSet list of the
// Acl struct. The keys of the list are populated from the input
// arguments.
func (t *Acl) NewAclSet(Name string, Type E_Acl_ACL_TYPE) (*Acl_AclSet, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AclSet == nil {
		t.AclSet = make(map[Acl_AclSet_Key]*Acl_AclSet)
	}

	key := Acl_AclSet_Key{
		Name: Name,
		Type: Type,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AclSet[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AclSet", key)
	}

	t.AclSet[key] = &Acl_AclSet{
		Name: &Name,
		Type: Type,
	}

	return t.AclSet[key], nil
}

// RenameAclSet renames an entry in the list AclSet within
// the Acl struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Acl) RenameAclSet(oldK, newK Acl_AclSet_Key) error {
	if _, ok := t.AclSet[newK]; ok {
		return fmt.Errorf("key %v already exists in AclSet", newK)
	}

	e, ok := t.AclSet[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AclSet", oldK)
	}
	e.Name = &newK.Name
	e.Type = newK.Type

	t.AclSet[newK] = e
	delete(t.AclSet, oldK)
	return nil
}

// GetOrCreateAclSetMap returns the list (map) from Acl.
//
// It initializes the field if not already initialized.
func (t *Acl) GetOrCreateAclSetMap() map[Acl_AclSet_Key]*Acl_AclSet {
	if t.AclSet == nil {
		t.AclSet = make(map[Acl_AclSet_Key]*Acl_AclSet)
	}
	return t.AclSet
}

// GetOrCreateAclSet retrieves the value with the specified keys from
// the receiver Acl. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Acl) GetOrCreateAclSet(Name string, Type E_Acl_ACL_TYPE) *Acl_AclSet {

	key := Acl_AclSet_Key{
		Name: Name,
		Type: Type,
	}

	if v, ok := t.AclSet[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAclSet(Name, Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAclSet got unexpected error: %v", err))
	}
	return v
}

// GetAclSet retrieves the value with the specified key from
// the AclSet map field of Acl. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Acl) GetAclSet(Name string, Type E_Acl_ACL_TYPE) *Acl_AclSet {

	if t == nil {
		return nil
	}

	key := Acl_AclSet_Key{
		Name: Name,
		Type: Type,
	}

	if lm, ok := t.AclSet[key]; ok {
		return lm
	}
	return nil
}

// AppendAclSet appends the supplied Acl_AclSet struct to the
// list AclSet of Acl. If the key value(s) specified in
// the supplied Acl_AclSet already exist in the list, an error is
// returned.
func (t *Acl) AppendAclSet(v *Acl_AclSet) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key for Name")
	}

	key := Acl_AclSet_Key{
		Name: *v.Name,
		Type: v.Type,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AclSet == nil {
		t.AclSet = make(map[Acl_AclSet_Key]*Acl_AclSet)
	}

	if _, ok := t.AclSet[key]; ok {
		return fmt.Errorf("duplicate key for list AclSet %v", key)
	}

	t.AclSet[key] = v
	return nil
}

// NewInterface creates a new entry in the Interface list of the
// Acl struct. The keys of the list are populated from the input
// arguments.
func (t *Acl) NewInterface(Id string) (*Acl_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Acl_Interface)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &Acl_Interface{
		Id: &Id,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the Acl struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Acl) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.Id = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from Acl.
//
// It initializes the field if not already initialized.
func (t *Acl) GetOrCreateInterfaceMap() map[string]*Acl_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*Acl_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver Acl. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Acl) GetOrCreateInterface(Id string) *Acl_Interface {

	key := Id

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of Acl. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Acl) GetInterface(Id string) *Acl_Interface {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied Acl_Interface struct to the
// list Interface of Acl. If the key value(s) specified in
// the supplied Acl_Interface already exist in the list, an error is
// returned.
func (t *Acl) AppendInterface(v *Acl_Interface) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Acl_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// GetCounterCapability retrieves the value of the leaf CounterCapability from the Acl
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CounterCapability is set, it can
// safely use t.GetCounterCapability() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CounterCapability == nil' before retrieving the leaf's value.
func (t *Acl) GetCounterCapability() E_Acl_ACL_COUNTER_CAPABILITY {
	if t == nil || t.CounterCapability == 0 {
		return 0
	}
	return t.CounterCapability
}

// PopulateDefaults recursively populates unset leaf fields in the Acl
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.AclSet {
		e.PopulateDefaults()
	}
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl.
func (*Acl) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_AclSet represents the /openconfig-acl/acl/acl-sets/acl-set YANG schema element.
type Acl_AclSet struct {
	ΛMetadata    []ygot.Annotation               `path:"@" ygotAnnotation:"true"`
	AclEntry     map[uint32]*Acl_AclSet_AclEntry `path:"acl-entries/acl-entry" module:"openconfig-acl/openconfig-acl"`
	ΛAclEntry    []ygot.Annotation               `path:"acl-entries/@acl-entry" ygotAnnotation:"true"`
	Description  *string                         `path:"config/description" module:"openconfig-acl/openconfig-acl"`
	ΛDescription []ygot.Annotation               `path:"config/@description" ygotAnnotation:"true"`
	Name         *string                         `path:"config/name|name" module:"openconfig-acl/openconfig-acl|openconfig-acl"`
	ΛName        []ygot.Annotation               `path:"config/@name|@name" ygotAnnotation:"true"`
	Type         E_Acl_ACL_TYPE                  `path:"config/type|type" module:"openconfig-acl/openconfig-acl|openconfig-acl"`
	ΛType        []ygot.Annotation               `path:"config/@type|@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_AclSet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_AclSet) IsYANGGoStruct() {}

// NewAclEntry creates a new entry in the AclEntry list of the
// Acl_AclSet struct. The keys of the list are populated from the input
// arguments.
func (t *Acl_AclSet) NewAclEntry(SequenceId uint32) (*Acl_AclSet_AclEntry, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AclEntry == nil {
		t.AclEntry = make(map[uint32]*Acl_AclSet_AclEntry)
	}

	key := SequenceId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AclEntry[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AclEntry", key)
	}

	t.AclEntry[key] = &Acl_AclSet_AclEntry{
		SequenceId: &SequenceId,
	}

	return t.AclEntry[key], nil
}

// RenameAclEntry renames an entry in the list AclEntry within
// the Acl_AclSet struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Acl_AclSet) RenameAclEntry(oldK, newK uint32) error {
	if _, ok := t.AclEntry[newK]; ok {
		return fmt.Errorf("key %v already exists in AclEntry", newK)
	}

	e, ok := t.AclEntry[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AclEntry", oldK)
	}
	e.SequenceId = &newK

	t.AclEntry[newK] = e
	delete(t.AclEntry, oldK)
	return nil
}

// GetOrCreateAclEntryMap returns the list (map) from Acl_AclSet.
//
// It initializes the field if not already initialized.
func (t *Acl_AclSet) GetOrCreateAclEntryMap() map[uint32]*Acl_AclSet_AclEntry {
	if t.AclEntry == nil {
		t.AclEntry = make(map[uint32]*Acl_AclSet_AclEntry)
	}
	return t.AclEntry
}

// GetOrCreateAclEntry retrieves the value with the specified keys from
// the receiver Acl_AclSet. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Acl_AclSet) GetOrCreateAclEntry(SequenceId uint32) *Acl_AclSet_AclEntry {

	key := SequenceId

	if v, ok := t.AclEntry[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAclEntry(SequenceId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAclEntry got unexpected error: %v", err))
	}
	return v
}

// GetAclEntry retrieves the value with the specified key from
// the AclEntry map field of Acl_AclSet. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Acl_AclSet) GetAclEntry(SequenceId uint32) *Acl_AclSet_AclEntry {

	if t == nil {
		return nil
	}

	key := SequenceId

	if lm, ok := t.AclEntry[key]; ok {
		return lm
	}
	return nil
}

// AppendAclEntry appends the supplied Acl_AclSet_AclEntry struct to the
// list AclEntry of Acl_AclSet. If the key value(s) specified in
// the supplied Acl_AclSet_AclEntry already exist in the list, an error is
// returned.
func (t *Acl_AclSet) AppendAclEntry(v *Acl_AclSet_AclEntry) error {
	if v.SequenceId == nil {
		return fmt.Errorf("invalid nil key received for SequenceId")
	}

	key := *v.SequenceId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AclEntry == nil {
		t.AclEntry = make(map[uint32]*Acl_AclSet_AclEntry)
	}

	if _, ok := t.AclEntry[key]; ok {
		return fmt.Errorf("duplicate key for list AclEntry %v", key)
	}

	t.AclEntry[key] = v
	return nil
}

// GetDescription retrieves the value of the leaf Description from the Acl_AclSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *Acl_AclSet) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetName retrieves the value of the leaf Name from the Acl_AclSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Acl_AclSet) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetType retrieves the value of the leaf Type from the Acl_AclSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *Acl_AclSet) GetType() E_Acl_ACL_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_AclSet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_AclSet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.AclEntry {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the Acl_AclSet struct, which is a YANG list entry.
func (t *Acl_AclSet) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
		"type": t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_AclSet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_AclSet) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_AclSet.
func (*Acl_AclSet) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_AclSet_AclEntry represents the /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry YANG schema element.
type Acl_AclSet_AclEntry struct {
	ΛMetadata       []ygot.Annotation                   `path:"@" ygotAnnotation:"true"`
	Actions         *Acl_AclSet_AclEntry_Actions        `path:"actions" module:"openconfig-acl"`
	ΛActions        []ygot.Annotation                   `path:"@actions" ygotAnnotation:"true"`
	Description     *string                             `path:"config/description" module:"openconfig-acl/openconfig-acl"`
	ΛDescription    []ygot.Annotation                   `path:"config/@description" ygotAnnotation:"true"`
	InputInterface  *Acl_AclSet_AclEntry_InputInterface `path:"input-interface" module:"openconfig-acl"`
	ΛInputInterface []ygot.Annotation                   `path:"@input-interface" ygotAnnotation:"true"`
	Ipv4            *Acl_AclSet_AclEntry_Ipv4           `path:"ipv4" module:"openconfig-acl"`
	ΛIpv4           []ygot.Annotation                   `path:"@ipv4" ygotAnnotation:"true"`
	Ipv6            *Acl_AclSet_AclEntry_Ipv6           `path:"ipv6" module:"openconfig-acl"`
	ΛIpv6           []ygot.Annotation                   `path:"@ipv6" ygotAnnotation:"true"`
	L2              *Acl_AclSet_AclEntry_L2             `path:"l2" module:"openconfig-acl"`
	ΛL2             []ygot.Annotation                   `path:"@l2" ygotAnnotation:"true"`
	MatchedOctets   *uint64                             `path:"state/matched-octets" module:"openconfig-acl/openconfig-acl"`
	ΛMatchedOctets  []ygot.Annotation                   `path:"state/@matched-octets" ygotAnnotation:"true"`
	MatchedPackets  *uint64                             `path:"state/matched-packets" module:"openconfig-acl/openconfig-acl"`
	ΛMatchedPackets []ygot.Annotation                   `path:"state/@matched-packets" ygotAnnotation:"true"`
	Mpls            *Acl_AclSet_AclEntry_Mpls           `path:"mpls" module:"openconfig-acl"`
	ΛMpls           []ygot.Annotation                   `path:"@mpls" ygotAnnotation:"true"`
	SequenceId      *uint32                             `path:"config/sequence-id|sequence-id" module:"openconfig-acl/openconfig-acl|openconfig-acl"`
	ΛSequenceId     []ygot.Annotation                   `path:"config/@sequence-id|@sequence-id" ygotAnnotation:"true"`
	Transport       *Acl_AclSet_AclEntry_Transport      `path:"transport" module:"openconfig-acl"`
	ΛTransport      []ygot.Annotation                   `path:"@transport" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_AclSet_AclEntry implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_AclSet_AclEntry) IsYANGGoStruct() {}

// GetOrCreateActions retrieves the value of the Actions field
// or returns the existing field if it already exists.
func (t *Acl_AclSet_AclEntry) GetOrCreateActions() *Acl_AclSet_AclEntry_Actions {
	if t.Actions != nil {
		return t.Actions
	}
	t.Actions = &Acl_AclSet_AclEntry_Actions{}
	return t.Actions
}

// GetOrCreateInputInterface retrieves the value of the InputInterface field
// or returns the existing field if it already exists.
func (t *Acl_AclSet_AclEntry) GetOrCreateInputInterface() *Acl_AclSet_AclEntry_InputInterface {
	if t.InputInterface != nil {
		return t.InputInterface
	}
	t.InputInterface = &Acl_AclSet_AclEntry_InputInterface{}
	return t.InputInterface
}

// GetOrCreateIpv4 retrieves the value of the Ipv4 field
// or returns the existing field if it already exists.
func (t *Acl_AclSet_AclEntry) GetOrCreateIpv4() *Acl_AclSet_AclEntry_Ipv4 {
	if t.Ipv4 != nil {
		return t.Ipv4
	}
	t.Ipv4 = &Acl_AclSet_AclEntry_Ipv4{}
	return t.Ipv4
}

// GetOrCreateIpv6 retrieves the value of the Ipv6 field
// or returns the existing field if it already exists.
func (t *Acl_AclSet_AclEntry) GetOrCreateIpv6() *Acl_AclSet_AclEntry_Ipv6 {
	if t.Ipv6 != nil {
		return t.Ipv6
	}
	t.Ipv6 = &Acl_AclSet_AclEntry_Ipv6{}
	return t.Ipv6
}

// GetOrCreateL2 retrieves the value of the L2 field
// or returns the existing field if it already exists.
func (t *Acl_AclSet_AclEntry) GetOrCreateL2() *Acl_AclSet_AclEntry_L2 {
	if t.L2 != nil {
		return t.L2
	}
	t.L2 = &Acl_AclSet_AclEntry_L2{}
	return t.L2
}

// GetOrCreateMpls retrieves the value of the Mpls field
// or returns the existing field if it already exists.
func (t *Acl_AclSet_AclEntry) GetOrCreateMpls() *Acl_AclSet_AclEntry_Mpls {
	if t.Mpls != nil {
		return t.Mpls
	}
	t.Mpls = &Acl_AclSet_AclEntry_Mpls{}
	return t.Mpls
}

// GetOrCreateTransport retrieves the value of the Transport field
// or returns the existing field if it already exists.
func (t *Acl_AclSet_AclEntry) GetOrCreateTransport() *Acl_AclSet_AclEntry_Transport {
	if t.Transport != nil {
		return t.Transport
	}
	t.Transport = &Acl_AclSet_AclEntry_Transport{}
	return t.Transport
}

// GetActions returns the value of the Actions struct pointer
// from Acl_AclSet_AclEntry. If the receiver or the field Actions is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Acl_AclSet_AclEntry) GetActions() *Acl_AclSet_AclEntry_Actions {
	if t != nil && t.Actions != nil {
		return t.Actions
	}
	return nil
}

// GetInputInterface returns the value of the InputInterface struct pointer
// from Acl_AclSet_AclEntry. If the receiver or the field InputInterface is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Acl_AclSet_AclEntry) GetInputInterface() *Acl_AclSet_AclEntry_InputInterface {
	if t != nil && t.InputInterface != nil {
		return t.InputInterface
	}
	return nil
}

// GetIpv4 returns the value of the Ipv4 struct pointer
// from Acl_AclSet_AclEntry. If the receiver or the field Ipv4 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Acl_AclSet_AclEntry) GetIpv4() *Acl_AclSet_AclEntry_Ipv4 {
	if t != nil && t.Ipv4 != nil {
		return t.Ipv4
	}
	return nil
}

// GetIpv6 returns the value of the Ipv6 struct pointer
// from Acl_AclSet_AclEntry. If the receiver or the field Ipv6 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Acl_AclSet_AclEntry) GetIpv6() *Acl_AclSet_AclEntry_Ipv6 {
	if t != nil && t.Ipv6 != nil {
		return t.Ipv6
	}
	return nil
}

// GetL2 returns the value of the L2 struct pointer
// from Acl_AclSet_AclEntry. If the receiver or the field L2 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Acl_AclSet_AclEntry) GetL2() *Acl_AclSet_AclEntry_L2 {
	if t != nil && t.L2 != nil {
		return t.L2
	}
	return nil
}

// GetMpls returns the value of the Mpls struct pointer
// from Acl_AclSet_AclEntry. If the receiver or the field Mpls is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Acl_AclSet_AclEntry) GetMpls() *Acl_AclSet_AclEntry_Mpls {
	if t != nil && t.Mpls != nil {
		return t.Mpls
	}
	return nil
}

// GetTransport returns the value of the Transport struct pointer
// from Acl_AclSet_AclEntry. If the receiver or the field Transport is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Acl_AclSet_AclEntry) GetTransport() *Acl_AclSet_AclEntry_Transport {
	if t != nil && t.Transport != nil {
		return t.Transport
	}
	return nil
}

// GetDescription retrieves the value of the leaf Description from the Acl_AclSet_AclEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetMatchedOctets retrieves the value of the leaf MatchedOctets from the Acl_AclSet_AclEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MatchedOctets is set, it can
// safely use t.GetMatchedOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MatchedOctets == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry) GetMatchedOctets() uint64 {
	if t == nil || t.MatchedOctets == nil {
		return 0
	}
	return *t.MatchedOctets
}

// GetMatchedPackets retrieves the value of the leaf MatchedPackets from the Acl_AclSet_AclEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MatchedPackets is set, it can
// safely use t.GetMatchedPackets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MatchedPackets == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry) GetMatchedPackets() uint64 {
	if t == nil || t.MatchedPackets == nil {
		return 0
	}
	return *t.MatchedPackets
}

// GetSequenceId retrieves the value of the leaf SequenceId from the Acl_AclSet_AclEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SequenceId is set, it can
// safely use t.GetSequenceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SequenceId == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry) GetSequenceId() uint32 {
	if t == nil || t.SequenceId == nil {
		return 0
	}
	return *t.SequenceId
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_AclSet_AclEntry
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_AclSet_AclEntry) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Actions.PopulateDefaults()
	t.InputInterface.PopulateDefaults()
	t.Ipv4.PopulateDefaults()
	t.Ipv6.PopulateDefaults()
	t.L2.PopulateDefaults()
	t.Mpls.PopulateDefaults()
	t.Transport.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the Acl_AclSet_AclEntry struct, which is a YANG list entry.
func (t *Acl_AclSet_AclEntry) ΛListKeyMap() (map[string]interface{}, error) {
	if t.SequenceId == nil {
		return nil, fmt.Errorf("nil value for key SequenceId")
	}

	return map[string]interface{}{
		"sequence-id": *t.SequenceId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_AclSet_AclEntry"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_AclSet_AclEntry) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_AclSet_AclEntry.
func (*Acl_AclSet_AclEntry) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_AclSet_AclEntry_Actions represents the /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry/actions YANG schema element.
type Acl_AclSet_AclEntry_Actions struct {
	ΛMetadata         []ygot.Annotation       `path:"@" ygotAnnotation:"true"`
	ForwardingAction  E_Acl_FORWARDING_ACTION `path:"config/forwarding-action" module:"openconfig-acl/openconfig-acl"`
	ΛForwardingAction []ygot.Annotation       `path:"config/@forwarding-action" ygotAnnotation:"true"`
	LogAction         E_Acl_LOG_ACTION        `path:"config/log-action" module:"openconfig-acl/openconfig-acl"`
	ΛLogAction        []ygot.Annotation       `path:"config/@log-action" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_AclSet_AclEntry_Actions implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_AclSet_AclEntry_Actions) IsYANGGoStruct() {}

// GetForwardingAction retrieves the value of the leaf ForwardingAction from the Acl_AclSet_AclEntry_Actions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ForwardingAction is set, it can
// safely use t.GetForwardingAction() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ForwardingAction == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Actions) GetForwardingAction() E_Acl_FORWARDING_ACTION {
	if t == nil || t.ForwardingAction == 0 {
		return 0
	}
	return t.ForwardingAction
}

// GetLogAction retrieves the value of the leaf LogAction from the Acl_AclSet_AclEntry_Actions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LogAction is set, it can
// safely use t.GetLogAction() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LogAction == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Actions) GetLogAction() E_Acl_LOG_ACTION {
	if t == nil || t.LogAction == 0 {
		return Acl_LOG_ACTION_LOG_NONE
	}
	return t.LogAction
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_AclSet_AclEntry_Actions
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_AclSet_AclEntry_Actions) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.LogAction == 0 {
		t.LogAction = Acl_LOG_ACTION_LOG_NONE
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_Actions) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_AclSet_AclEntry_Actions"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_Actions) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_AclSet_AclEntry_Actions) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_AclSet_AclEntry_Actions.
func (*Acl_AclSet_AclEntry_Actions) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_AclSet_AclEntry_InputInterface represents the /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry/input-interface YANG schema element.
type Acl_AclSet_AclEntry_InputInterface struct {
	ΛMetadata     []ygot.Annotation                                `path:"@" ygotAnnotation:"true"`
	InterfaceRef  *Acl_AclSet_AclEntry_InputInterface_InterfaceRef `path:"interface-ref" module:"openconfig-acl"`
	ΛInterfaceRef []ygot.Annotation                                `path:"@interface-ref" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_AclSet_AclEntry_InputInterface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_AclSet_AclEntry_InputInterface) IsYANGGoStruct() {}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *Acl_AclSet_AclEntry_InputInterface) GetOrCreateInterfaceRef() *Acl_AclSet_AclEntry_InputInterface_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &Acl_AclSet_AclEntry_InputInterface_InterfaceRef{}
	return t.InterfaceRef
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from Acl_AclSet_AclEntry_InputInterface. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Acl_AclSet_AclEntry_InputInterface) GetInterfaceRef() *Acl_AclSet_AclEntry_InputInterface_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_AclSet_AclEntry_InputInterface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_AclSet_AclEntry_InputInterface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.InterfaceRef.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_InputInterface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_AclSet_AclEntry_InputInterface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_InputInterface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_AclSet_AclEntry_InputInterface) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_AclSet_AclEntry_InputInterface.
func (*Acl_AclSet_AclEntry_InputInterface) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_AclSet_AclEntry_InputInterface_InterfaceRef represents the /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry/input-interface/interface-ref YANG schema element.
type Acl_AclSet_AclEntry_InputInterface_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-acl/openconfig-acl"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-acl/openconfig-acl"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_AclSet_AclEntry_InputInterface_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_AclSet_AclEntry_InputInterface_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the Acl_AclSet_AclEntry_InputInterface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_InputInterface_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the Acl_AclSet_AclEntry_InputInterface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_InputInterface_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_AclSet_AclEntry_InputInterface_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_AclSet_AclEntry_InputInterface_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_InputInterface_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_AclSet_AclEntry_InputInterface_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_InputInterface_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_AclSet_AclEntry_InputInterface_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_AclSet_AclEntry_InputInterface_InterfaceRef.
func (*Acl_AclSet_AclEntry_InputInterface_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_AclSet_AclEntry_Ipv4 represents the /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4 YANG schema element.
type Acl_AclSet_AclEntry_Ipv4 struct {
	ΛMetadata                    []ygot.Annotation                       `path:"@" ygotAnnotation:"true"`
	DestinationAddress           *string                                 `path:"config/destination-address" module:"openconfig-acl/openconfig-acl"`
	ΛDestinationAddress          []ygot.Annotation                       `path:"config/@destination-address" ygotAnnotation:"true"`
	DestinationAddressPrefixSet  *string                                 `path:"config/destination-address-prefix-set" module:"openconfig-acl/openconfig-acl"`
	ΛDestinationAddressPrefixSet []ygot.Annotation                       `path:"config/@destination-address-prefix-set" ygotAnnotation:"true"`
	Dscp                         *uint8                                  `path:"config/dscp" module:"openconfig-acl/openconfig-acl"`
	ΛDscp                        []ygot.Annotation                       `path:"config/@dscp" ygotAnnotation:"true"`
	DscpSet                      []uint8                                 `path:"config/dscp-set" module:"openconfig-acl/openconfig-acl"`
	ΛDscpSet                     []ygot.Annotation                       `path:"config/@dscp-set" ygotAnnotation:"true"`
	HopLimit                     *uint8                                  `path:"config/hop-limit" module:"openconfig-acl/openconfig-acl"`
	ΛHopLimit                    []ygot.Annotation                       `path:"config/@hop-limit" ygotAnnotation:"true"`
	Icmpv4                       *Acl_AclSet_AclEntry_Ipv4_Icmpv4        `path:"icmpv4" module:"openconfig-acl"`
	ΛIcmpv4                      []ygot.Annotation                       `path:"@icmpv4" ygotAnnotation:"true"`
	Length                       *uint16                                 `path:"config/length" module:"openconfig-acl/openconfig-acl"`
	ΛLength                      []ygot.Annotation                       `path:"config/@length" ygotAnnotation:"true"`
	Protocol                     Acl_AclSet_AclEntry_Ipv4_Protocol_Union `path:"config/protocol" module:"openconfig-acl/openconfig-acl"`
	ΛProtocol                    []ygot.Annotation                       `path:"config/@protocol" ygotAnnotation:"true"`
	SourceAddress                *string                                 `path:"config/source-address" module:"openconfig-acl/openconfig-acl"`
	ΛSourceAddress               []ygot.Annotation                       `path:"config/@source-address" ygotAnnotation:"true"`
	SourceAddressPrefixSet       *string                                 `path:"config/source-address-prefix-set" module:"openconfig-acl/openconfig-acl"`
	ΛSourceAddressPrefixSet      []ygot.Annotation                       `path:"config/@source-address-prefix-set" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_AclSet_AclEntry_Ipv4 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_AclSet_AclEntry_Ipv4) IsYANGGoStruct() {}

// GetOrCreateIcmpv4 retrieves the value of the Icmpv4 field
// or returns the existing field if it already exists.
func (t *Acl_AclSet_AclEntry_Ipv4) GetOrCreateIcmpv4() *Acl_AclSet_AclEntry_Ipv4_Icmpv4 {
	if t.Icmpv4 != nil {
		return t.Icmpv4
	}
	t.Icmpv4 = &Acl_AclSet_AclEntry_Ipv4_Icmpv4{}
	return t.Icmpv4
}

// GetIcmpv4 returns the value of the Icmpv4 struct pointer
// from Acl_AclSet_AclEntry_Ipv4. If the receiver or the field Icmpv4 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Acl_AclSet_AclEntry_Ipv4) GetIcmpv4() *Acl_AclSet_AclEntry_Ipv4_Icmpv4 {
	if t != nil && t.Icmpv4 != nil {
		return t.Icmpv4
	}
	return nil
}

// GetDestinationAddress retrieves the value of the leaf DestinationAddress from the Acl_AclSet_AclEntry_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationAddress is set, it can
// safely use t.GetDestinationAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationAddress == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv4) GetDestinationAddress() string {
	if t == nil || t.DestinationAddress == nil {
		return ""
	}
	return *t.DestinationAddress
}

// GetDestinationAddressPrefixSet retrieves the value of the leaf DestinationAddressPrefixSet from the Acl_AclSet_AclEntry_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationAddressPrefixSet is set, it can
// safely use t.GetDestinationAddressPrefixSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationAddressPrefixSet == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv4) GetDestinationAddressPrefixSet() string {
	if t == nil || t.DestinationAddressPrefixSet == nil {
		return ""
	}
	return *t.DestinationAddressPrefixSet
}

// GetDscp retrieves the value of the leaf Dscp from the Acl_AclSet_AclEntry_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dscp is set, it can
// safely use t.GetDscp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dscp == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv4) GetDscp() uint8 {
	if t == nil || t.Dscp == nil {
		return 0
	}
	return *t.Dscp
}

// GetDscpSet retrieves the value of the leaf DscpSet from the Acl_AclSet_AclEntry_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DscpSet is set, it can
// safely use t.GetDscpSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DscpSet == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv4) GetDscpSet() []uint8 {
	if t == nil || t.DscpSet == nil {
		return nil
	}
	return t.DscpSet
}

// GetHopLimit retrieves the value of the leaf HopLimit from the Acl_AclSet_AclEntry_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HopLimit is set, it can
// safely use t.GetHopLimit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HopLimit == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv4) GetHopLimit() uint8 {
	if t == nil || t.HopLimit == nil {
		return 0
	}
	return *t.HopLimit
}

// GetLength retrieves the value of the leaf Length from the Acl_AclSet_AclEntry_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv4) GetLength() uint16 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetProtocol retrieves the value of the leaf Protocol from the Acl_AclSet_AclEntry_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Protocol is set, it can
// safely use t.GetProtocol() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Protocol == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv4) GetProtocol() Acl_AclSet_AclEntry_Ipv4_Protocol_Union {
	if t == nil || t.Protocol == nil {
		return nil
	}
	return t.Protocol
}

// GetSourceAddress retrieves the value of the leaf SourceAddress from the Acl_AclSet_AclEntry_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddress is set, it can
// safely use t.GetSourceAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddress == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv4) GetSourceAddress() string {
	if t == nil || t.SourceAddress == nil {
		return ""
	}
	return *t.SourceAddress
}

// GetSourceAddressPrefixSet retrieves the value of the leaf SourceAddressPrefixSet from the Acl_AclSet_AclEntry_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddressPrefixSet is set, it can
// safely use t.GetSourceAddressPrefixSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddressPrefixSet == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv4) GetSourceAddressPrefixSet() string {
	if t == nil || t.SourceAddressPrefixSet == nil {
		return ""
	}
	return *t.SourceAddressPrefixSet
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_AclSet_AclEntry_Ipv4
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_AclSet_AclEntry_Ipv4) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Icmpv4.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_Ipv4) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_AclSet_AclEntry_Ipv4"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_Ipv4) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_AclSet_AclEntry_Ipv4) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_AclSet_AclEntry_Ipv4.
func (*Acl_AclSet_AclEntry_Ipv4) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_AclSet_AclEntry_Ipv4_Protocol_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/config/protocol within the YANG schema.
// Union type can be one of [E_PacketMatchTypes_IP_PROTOCOL, UnionUint8].
type Acl_AclSet_AclEntry_Ipv4_Protocol_Union interface {
	// Union type can be one of [E_PacketMatchTypes_IP_PROTOCOL, UnionUint8]
	Documentation_for_Acl_AclSet_AclEntry_Ipv4_Protocol_Union()
}

// Documentation_for_Acl_AclSet_AclEntry_Ipv4_Protocol_Union ensures that E_PacketMatchTypes_IP_PROTOCOL
// implements the Acl_AclSet_AclEntry_Ipv4_Protocol_Union interface.
func (E_PacketMatchTypes_IP_PROTOCOL) Documentation_for_Acl_AclSet_AclEntry_Ipv4_Protocol_Union() {}

// Documentation_for_Acl_AclSet_AclEntry_Ipv4_Protocol_Union ensures that UnionUint8
// implements the Acl_AclSet_AclEntry_Ipv4_Protocol_Union interface.
func (UnionUint8) Documentation_for_Acl_AclSet_AclEntry_Ipv4_Protocol_Union() {}

// To_Acl_AclSet_AclEntry_Ipv4_Protocol_Union takes an input interface{} and attempts to convert it to a struct
// which implements the Acl_AclSet_AclEntry_Ipv4_Protocol_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *Acl_AclSet_AclEntry_Ipv4) To_Acl_AclSet_AclEntry_Ipv4_Protocol_Union(i interface{}) (Acl_AclSet_AclEntry_Ipv4_Protocol_Union, error) {
	if v, ok := i.(Acl_AclSet_AclEntry_Ipv4_Protocol_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint8:
		return UnionUint8(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to Acl_AclSet_AclEntry_Ipv4_Protocol_Union, unknown union type, got: %T, want any of [E_PacketMatchTypes_IP_PROTOCOL, uint8]", i, i)
}

// Acl_AclSet_AclEntry_Ipv4_Icmpv4 represents the /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/icmpv4 YANG schema element.
type Acl_AclSet_AclEntry_Ipv4_Icmpv4 struct {
	ΛMetadata []ygot.Annotation  `path:"@" ygotAnnotation:"true"`
	Code      E_Icmpv4Types_CODE `path:"config/code" module:"openconfig-acl/openconfig-acl"`
	ΛCode     []ygot.Annotation  `path:"config/@code" ygotAnnotation:"true"`
	Type      E_Icmpv4Types_TYPE `path:"config/type" module:"openconfig-acl/openconfig-acl"`
	ΛType     []ygot.Annotation  `path:"config/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_AclSet_AclEntry_Ipv4_Icmpv4 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_AclSet_AclEntry_Ipv4_Icmpv4) IsYANGGoStruct() {}

// GetCode retrieves the value of the leaf Code from the Acl_AclSet_AclEntry_Ipv4_Icmpv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Code is set, it can
// safely use t.GetCode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Code == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv4_Icmpv4) GetCode() E_Icmpv4Types_CODE {
	if t == nil || t.Code == 0 {
		return 0
	}
	return t.Code
}

// GetType retrieves the value of the leaf Type from the Acl_AclSet_AclEntry_Ipv4_Icmpv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv4_Icmpv4) GetType() E_Icmpv4Types_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_AclSet_AclEntry_Ipv4_Icmpv4
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_AclSet_AclEntry_Ipv4_Icmpv4) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_Ipv4_Icmpv4) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_AclSet_AclEntry_Ipv4_Icmpv4"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_Ipv4_Icmpv4) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_AclSet_AclEntry_Ipv4_Icmpv4) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_AclSet_AclEntry_Ipv4_Icmpv4.
func (*Acl_AclSet_AclEntry_Ipv4_Icmpv4) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_AclSet_AclEntry_Ipv6 represents the /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv6 YANG schema element.
type Acl_AclSet_AclEntry_Ipv6 struct {
	ΛMetadata                    []ygot.Annotation                       `path:"@" ygotAnnotation:"true"`
	DestinationAddress           *string                                 `path:"config/destination-address" module:"openconfig-acl/openconfig-acl"`
	ΛDestinationAddress          []ygot.Annotation                       `path:"config/@destination-address" ygotAnnotation:"true"`
	DestinationAddressPrefixSet  *string                                 `path:"config/destination-address-prefix-set" module:"openconfig-acl/openconfig-acl"`
	ΛDestinationAddressPrefixSet []ygot.Annotation                       `path:"config/@destination-address-prefix-set" ygotAnnotation:"true"`
	DestinationFlowLabel         *uint32                                 `path:"config/destination-flow-label" module:"openconfig-acl/openconfig-acl"`
	ΛDestinationFlowLabel        []ygot.Annotation                       `path:"config/@destination-flow-label" ygotAnnotation:"true"`
	Dscp                         *uint8                                  `path:"config/dscp" module:"openconfig-acl/openconfig-acl"`
	ΛDscp                        []ygot.Annotation                       `path:"config/@dscp" ygotAnnotation:"true"`
	DscpSet                      []uint8                                 `path:"config/dscp-set" module:"openconfig-acl/openconfig-acl"`
	ΛDscpSet                     []ygot.Annotation                       `path:"config/@dscp-set" ygotAnnotation:"true"`
	HopLimit                     *uint8                                  `path:"config/hop-limit" module:"openconfig-acl/openconfig-acl"`
	ΛHopLimit                    []ygot.Annotation                       `path:"config/@hop-limit" ygotAnnotation:"true"`
	Icmpv6                       *Acl_AclSet_AclEntry_Ipv6_Icmpv6        `path:"icmpv6" module:"openconfig-acl"`
	ΛIcmpv6                      []ygot.Annotation                       `path:"@icmpv6" ygotAnnotation:"true"`
	Length                       *uint16                                 `path:"config/length" module:"openconfig-acl/openconfig-acl"`
	ΛLength                      []ygot.Annotation                       `path:"config/@length" ygotAnnotation:"true"`
	Protocol                     Acl_AclSet_AclEntry_Ipv6_Protocol_Union `path:"config/protocol" module:"openconfig-acl/openconfig-acl"`
	ΛProtocol                    []ygot.Annotation                       `path:"config/@protocol" ygotAnnotation:"true"`
	SourceAddress                *string                                 `path:"config/source-address" module:"openconfig-acl/openconfig-acl"`
	ΛSourceAddress               []ygot.Annotation                       `path:"config/@source-address" ygotAnnotation:"true"`
	SourceAddressPrefixSet       *string                                 `path:"config/source-address-prefix-set" module:"openconfig-acl/openconfig-acl"`
	ΛSourceAddressPrefixSet      []ygot.Annotation                       `path:"config/@source-address-prefix-set" ygotAnnotation:"true"`
	SourceFlowLabel              *uint32                                 `path:"config/source-flow-label" module:"openconfig-acl/openconfig-acl"`
	ΛSourceFlowLabel             []ygot.Annotation                       `path:"config/@source-flow-label" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_AclSet_AclEntry_Ipv6 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_AclSet_AclEntry_Ipv6) IsYANGGoStruct() {}

// GetOrCreateIcmpv6 retrieves the value of the Icmpv6 field
// or returns the existing field if it already exists.
func (t *Acl_AclSet_AclEntry_Ipv6) GetOrCreateIcmpv6() *Acl_AclSet_AclEntry_Ipv6_Icmpv6 {
	if t.Icmpv6 != nil {
		return t.Icmpv6
	}
	t.Icmpv6 = &Acl_AclSet_AclEntry_Ipv6_Icmpv6{}
	return t.Icmpv6
}

// GetIcmpv6 returns the value of the Icmpv6 struct pointer
// from Acl_AclSet_AclEntry_Ipv6. If the receiver or the field Icmpv6 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Acl_AclSet_AclEntry_Ipv6) GetIcmpv6() *Acl_AclSet_AclEntry_Ipv6_Icmpv6 {
	if t != nil && t.Icmpv6 != nil {
		return t.Icmpv6
	}
	return nil
}

// GetDestinationAddress retrieves the value of the leaf DestinationAddress from the Acl_AclSet_AclEntry_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationAddress is set, it can
// safely use t.GetDestinationAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationAddress == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv6) GetDestinationAddress() string {
	if t == nil || t.DestinationAddress == nil {
		return ""
	}
	return *t.DestinationAddress
}

// GetDestinationAddressPrefixSet retrieves the value of the leaf DestinationAddressPrefixSet from the Acl_AclSet_AclEntry_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationAddressPrefixSet is set, it can
// safely use t.GetDestinationAddressPrefixSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationAddressPrefixSet == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv6) GetDestinationAddressPrefixSet() string {
	if t == nil || t.DestinationAddressPrefixSet == nil {
		return ""
	}
	return *t.DestinationAddressPrefixSet
}

// GetDestinationFlowLabel retrieves the value of the leaf DestinationFlowLabel from the Acl_AclSet_AclEntry_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationFlowLabel is set, it can
// safely use t.GetDestinationFlowLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationFlowLabel == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv6) GetDestinationFlowLabel() uint32 {
	if t == nil || t.DestinationFlowLabel == nil {
		return 0
	}
	return *t.DestinationFlowLabel
}

// GetDscp retrieves the value of the leaf Dscp from the Acl_AclSet_AclEntry_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dscp is set, it can
// safely use t.GetDscp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dscp == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv6) GetDscp() uint8 {
	if t == nil || t.Dscp == nil {
		return 0
	}
	return *t.Dscp
}

// GetDscpSet retrieves the value of the leaf DscpSet from the Acl_AclSet_AclEntry_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DscpSet is set, it can
// safely use t.GetDscpSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DscpSet == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv6) GetDscpSet() []uint8 {
	if t == nil || t.DscpSet == nil {
		return nil
	}
	return t.DscpSet
}

// GetHopLimit retrieves the value of the leaf HopLimit from the Acl_AclSet_AclEntry_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HopLimit is set, it can
// safely use t.GetHopLimit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HopLimit == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv6) GetHopLimit() uint8 {
	if t == nil || t.HopLimit == nil {
		return 0
	}
	return *t.HopLimit
}

// GetLength retrieves the value of the leaf Length from the Acl_AclSet_AclEntry_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv6) GetLength() uint16 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetProtocol retrieves the value of the leaf Protocol from the Acl_AclSet_AclEntry_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Protocol is set, it can
// safely use t.GetProtocol() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Protocol == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv6) GetProtocol() Acl_AclSet_AclEntry_Ipv6_Protocol_Union {
	if t == nil || t.Protocol == nil {
		return nil
	}
	return t.Protocol
}

// GetSourceAddress retrieves the value of the leaf SourceAddress from the Acl_AclSet_AclEntry_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddress is set, it can
// safely use t.GetSourceAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddress == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv6) GetSourceAddress() string {
	if t == nil || t.SourceAddress == nil {
		return ""
	}
	return *t.SourceAddress
}

// GetSourceAddressPrefixSet retrieves the value of the leaf SourceAddressPrefixSet from the Acl_AclSet_AclEntry_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddressPrefixSet is set, it can
// safely use t.GetSourceAddressPrefixSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddressPrefixSet == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv6) GetSourceAddressPrefixSet() string {
	if t == nil || t.SourceAddressPrefixSet == nil {
		return ""
	}
	return *t.SourceAddressPrefixSet
}

// GetSourceFlowLabel retrieves the value of the leaf SourceFlowLabel from the Acl_AclSet_AclEntry_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceFlowLabel is set, it can
// safely use t.GetSourceFlowLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceFlowLabel == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv6) GetSourceFlowLabel() uint32 {
	if t == nil || t.SourceFlowLabel == nil {
		return 0
	}
	return *t.SourceFlowLabel
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_AclSet_AclEntry_Ipv6
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_AclSet_AclEntry_Ipv6) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Icmpv6.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_Ipv6) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_AclSet_AclEntry_Ipv6"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_Ipv6) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_AclSet_AclEntry_Ipv6) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_AclSet_AclEntry_Ipv6.
func (*Acl_AclSet_AclEntry_Ipv6) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_AclSet_AclEntry_Ipv6_Protocol_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv6/config/protocol within the YANG schema.
// Union type can be one of [E_PacketMatchTypes_IP_PROTOCOL, UnionUint8].
type Acl_AclSet_AclEntry_Ipv6_Protocol_Union interface {
	// Union type can be one of [E_PacketMatchTypes_IP_PROTOCOL, UnionUint8]
	Documentation_for_Acl_AclSet_AclEntry_Ipv6_Protocol_Union()
}

// Documentation_for_Acl_AclSet_AclEntry_Ipv6_Protocol_Union ensures that E_PacketMatchTypes_IP_PROTOCOL
// implements the Acl_AclSet_AclEntry_Ipv6_Protocol_Union interface.
func (E_PacketMatchTypes_IP_PROTOCOL) Documentation_for_Acl_AclSet_AclEntry_Ipv6_Protocol_Union() {}

// Documentation_for_Acl_AclSet_AclEntry_Ipv6_Protocol_Union ensures that UnionUint8
// implements the Acl_AclSet_AclEntry_Ipv6_Protocol_Union interface.
func (UnionUint8) Documentation_for_Acl_AclSet_AclEntry_Ipv6_Protocol_Union() {}

// To_Acl_AclSet_AclEntry_Ipv6_Protocol_Union takes an input interface{} and attempts to convert it to a struct
// which implements the Acl_AclSet_AclEntry_Ipv6_Protocol_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *Acl_AclSet_AclEntry_Ipv6) To_Acl_AclSet_AclEntry_Ipv6_Protocol_Union(i interface{}) (Acl_AclSet_AclEntry_Ipv6_Protocol_Union, error) {
	if v, ok := i.(Acl_AclSet_AclEntry_Ipv6_Protocol_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint8:
		return UnionUint8(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to Acl_AclSet_AclEntry_Ipv6_Protocol_Union, unknown union type, got: %T, want any of [E_PacketMatchTypes_IP_PROTOCOL, uint8]", i, i)
}

// Acl_AclSet_AclEntry_Ipv6_Icmpv6 represents the /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv6/icmpv6 YANG schema element.
type Acl_AclSet_AclEntry_Ipv6_Icmpv6 struct {
	ΛMetadata []ygot.Annotation  `path:"@" ygotAnnotation:"true"`
	Code      E_Icmpv6Types_CODE `path:"config/code" module:"openconfig-acl/openconfig-acl"`
	ΛCode     []ygot.Annotation  `path:"config/@code" ygotAnnotation:"true"`
	Type      E_Icmpv6Types_TYPE `path:"config/type" module:"openconfig-acl/openconfig-acl"`
	ΛType     []ygot.Annotation  `path:"config/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_AclSet_AclEntry_Ipv6_Icmpv6 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_AclSet_AclEntry_Ipv6_Icmpv6) IsYANGGoStruct() {}

// GetCode retrieves the value of the leaf Code from the Acl_AclSet_AclEntry_Ipv6_Icmpv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Code is set, it can
// safely use t.GetCode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Code == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv6_Icmpv6) GetCode() E_Icmpv6Types_CODE {
	if t == nil || t.Code == 0 {
		return 0
	}
	return t.Code
}

// GetType retrieves the value of the leaf Type from the Acl_AclSet_AclEntry_Ipv6_Icmpv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Ipv6_Icmpv6) GetType() E_Icmpv6Types_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_AclSet_AclEntry_Ipv6_Icmpv6
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_AclSet_AclEntry_Ipv6_Icmpv6) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_Ipv6_Icmpv6) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_AclSet_AclEntry_Ipv6_Icmpv6"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_Ipv6_Icmpv6) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_AclSet_AclEntry_Ipv6_Icmpv6) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_AclSet_AclEntry_Ipv6_Icmpv6.
func (*Acl_AclSet_AclEntry_Ipv6_Icmpv6) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_AclSet_AclEntry_L2 represents the /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry/l2 YANG schema element.
type Acl_AclSet_AclEntry_L2 struct {
	ΛMetadata           []ygot.Annotation                      `path:"@" ygotAnnotation:"true"`
	DestinationMac      *string                                `path:"config/destination-mac" module:"openconfig-acl/openconfig-acl"`
	ΛDestinationMac     []ygot.Annotation                      `path:"config/@destination-mac" ygotAnnotation:"true"`
	DestinationMacMask  *string                                `path:"config/destination-mac-mask" module:"openconfig-acl/openconfig-acl"`
	ΛDestinationMacMask []ygot.Annotation                      `path:"config/@destination-mac-mask" ygotAnnotation:"true"`
	Ethertype           Acl_AclSet_AclEntry_L2_Ethertype_Union `path:"config/ethertype" module:"openconfig-acl/openconfig-acl"`
	ΛEthertype          []ygot.Annotation                      `path:"config/@ethertype" ygotAnnotation:"true"`
	SourceMac           *string                                `path:"config/source-mac" module:"openconfig-acl/openconfig-acl"`
	ΛSourceMac          []ygot.Annotation                      `path:"config/@source-mac" ygotAnnotation:"true"`
	SourceMacMask       *string                                `path:"config/source-mac-mask" module:"openconfig-acl/openconfig-acl"`
	ΛSourceMacMask      []ygot.Annotation                      `path:"config/@source-mac-mask" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_AclSet_AclEntry_L2 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_AclSet_AclEntry_L2) IsYANGGoStruct() {}

// GetDestinationMac retrieves the value of the leaf DestinationMac from the Acl_AclSet_AclEntry_L2
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationMac is set, it can
// safely use t.GetDestinationMac() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationMac == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_L2) GetDestinationMac() string {
	if t == nil || t.DestinationMac == nil {
		return ""
	}
	return *t.DestinationMac
}

// GetDestinationMacMask retrieves the value of the leaf DestinationMacMask from the Acl_AclSet_AclEntry_L2
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationMacMask is set, it can
// safely use t.GetDestinationMacMask() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationMacMask == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_L2) GetDestinationMacMask() string {
	if t == nil || t.DestinationMacMask == nil {
		return ""
	}
	return *t.DestinationMacMask
}

// GetEthertype retrieves the value of the leaf Ethertype from the Acl_AclSet_AclEntry_L2
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ethertype is set, it can
// safely use t.GetEthertype() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ethertype == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_L2) GetEthertype() Acl_AclSet_AclEntry_L2_Ethertype_Union {
	if t == nil || t.Ethertype == nil {
		return nil
	}
	return t.Ethertype
}

// GetSourceMac retrieves the value of the leaf SourceMac from the Acl_AclSet_AclEntry_L2
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceMac is set, it can
// safely use t.GetSourceMac() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceMac == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_L2) GetSourceMac() string {
	if t == nil || t.SourceMac == nil {
		return ""
	}
	return *t.SourceMac
}

// GetSourceMacMask retrieves the value of the leaf SourceMacMask from the Acl_AclSet_AclEntry_L2
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceMacMask is set, it can
// safely use t.GetSourceMacMask() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceMacMask == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_L2) GetSourceMacMask() string {
	if t == nil || t.SourceMacMask == nil {
		return ""
	}
	return *t.SourceMacMask
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_AclSet_AclEntry_L2
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_AclSet_AclEntry_L2) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_L2) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_AclSet_AclEntry_L2"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_L2) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_AclSet_AclEntry_L2) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_AclSet_AclEntry_L2.
func (*Acl_AclSet_AclEntry_L2) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_AclSet_AclEntry_L2_Ethertype_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry/l2/config/ethertype within the YANG schema.
// Union type can be one of [E_PacketMatchTypes_ETHERTYPE, UnionUint16].
type Acl_AclSet_AclEntry_L2_Ethertype_Union interface {
	// Union type can be one of [E_PacketMatchTypes_ETHERTYPE, UnionUint16]
	Documentation_for_Acl_AclSet_AclEntry_L2_Ethertype_Union()
}

// Documentation_for_Acl_AclSet_AclEntry_L2_Ethertype_Union ensures that E_PacketMatchTypes_ETHERTYPE
// implements the Acl_AclSet_AclEntry_L2_Ethertype_Union interface.
func (E_PacketMatchTypes_ETHERTYPE) Documentation_for_Acl_AclSet_AclEntry_L2_Ethertype_Union() {}

// Documentation_for_Acl_AclSet_AclEntry_L2_Ethertype_Union ensures that UnionUint16
// implements the Acl_AclSet_AclEntry_L2_Ethertype_Union interface.
func (UnionUint16) Documentation_for_Acl_AclSet_AclEntry_L2_Ethertype_Union() {}

// To_Acl_AclSet_AclEntry_L2_Ethertype_Union takes an input interface{} and attempts to convert it to a struct
// which implements the Acl_AclSet_AclEntry_L2_Ethertype_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *Acl_AclSet_AclEntry_L2) To_Acl_AclSet_AclEntry_L2_Ethertype_Union(i interface{}) (Acl_AclSet_AclEntry_L2_Ethertype_Union, error) {
	if v, ok := i.(Acl_AclSet_AclEntry_L2_Ethertype_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint16:
		return UnionUint16(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to Acl_AclSet_AclEntry_L2_Ethertype_Union, unknown union type, got: %T, want any of [E_PacketMatchTypes_ETHERTYPE, uint16]", i, i)
}

// Acl_AclSet_AclEntry_Mpls represents the /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry/mpls YANG schema element.
type Acl_AclSet_AclEntry_Mpls struct {
	ΛMetadata        []ygot.Annotation                              `path:"@" ygotAnnotation:"true"`
	EndLabelValue    Acl_AclSet_AclEntry_Mpls_EndLabelValue_Union   `path:"config/end-label-value" module:"openconfig-acl/openconfig-acl"`
	ΛEndLabelValue   []ygot.Annotation                              `path:"config/@end-label-value" ygotAnnotation:"true"`
	StartLabelValue  Acl_AclSet_AclEntry_Mpls_StartLabelValue_Union `path:"config/start-label-value" module:"openconfig-acl/openconfig-acl"`
	ΛStartLabelValue []ygot.Annotation                              `path:"config/@start-label-value" ygotAnnotation:"true"`
	TrafficClass     *uint8                                         `path:"config/traffic-class" module:"openconfig-acl/openconfig-acl"`
	ΛTrafficClass    []ygot.Annotation                              `path:"config/@traffic-class" ygotAnnotation:"true"`
	TtlValue         *uint8                                         `path:"config/ttl-value" module:"openconfig-acl/openconfig-acl"`
	ΛTtlValue        []ygot.Annotation                              `path:"config/@ttl-value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_AclSet_AclEntry_Mpls implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_AclSet_AclEntry_Mpls) IsYANGGoStruct() {}

// GetEndLabelValue retrieves the value of the leaf EndLabelValue from the Acl_AclSet_AclEntry_Mpls
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EndLabelValue is set, it can
// safely use t.GetEndLabelValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EndLabelValue == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Mpls) GetEndLabelValue() Acl_AclSet_AclEntry_Mpls_EndLabelValue_Union {
	if t == nil || t.EndLabelValue == nil {
		return nil
	}
	return t.EndLabelValue
}

// GetStartLabelValue retrieves the value of the leaf StartLabelValue from the Acl_AclSet_AclEntry_Mpls
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if StartLabelValue is set, it can
// safely use t.GetStartLabelValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.StartLabelValue == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Mpls) GetStartLabelValue() Acl_AclSet_AclEntry_Mpls_StartLabelValue_Union {
	if t == nil || t.StartLabelValue == nil {
		return nil
	}
	return t.StartLabelValue
}

// GetTrafficClass retrieves the value of the leaf TrafficClass from the Acl_AclSet_AclEntry_Mpls
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TrafficClass is set, it can
// safely use t.GetTrafficClass() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TrafficClass == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Mpls) GetTrafficClass() uint8 {
	if t == nil || t.TrafficClass == nil {
		return 0
	}
	return *t.TrafficClass
}

// GetTtlValue retrieves the value of the leaf TtlValue from the Acl_AclSet_AclEntry_Mpls
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TtlValue is set, it can
// safely use t.GetTtlValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TtlValue == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Mpls) GetTtlValue() uint8 {
	if t == nil || t.TtlValue == nil {
		return 0
	}
	return *t.TtlValue
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_AclSet_AclEntry_Mpls
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_AclSet_AclEntry_Mpls) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_Mpls) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_AclSet_AclEntry_Mpls"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_Mpls) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_AclSet_AclEntry_Mpls) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_AclSet_AclEntry_Mpls.
func (*Acl_AclSet_AclEntry_Mpls) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_AclSet_AclEntry_Mpls_EndLabelValue_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry/mpls/config/end-label-value within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type Acl_AclSet_AclEntry_Mpls_EndLabelValue_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_Acl_AclSet_AclEntry_Mpls_EndLabelValue_Union()
}

// Documentation_for_Acl_AclSet_AclEntry_Mpls_EndLabelValue_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the Acl_AclSet_AclEntry_Mpls_EndLabelValue_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_Acl_AclSet_AclEntry_Mpls_EndLabelValue_Union() {}

// Documentation_for_Acl_AclSet_AclEntry_Mpls_EndLabelValue_Union ensures that UnionUint32
// implements the Acl_AclSet_AclEntry_Mpls_EndLabelValue_Union interface.
func (UnionUint32) Documentation_for_Acl_AclSet_AclEntry_Mpls_EndLabelValue_Union() {}

// To_Acl_AclSet_AclEntry_Mpls_EndLabelValue_Union takes an input interface{} and attempts to convert it to a struct
// which implements the Acl_AclSet_AclEntry_Mpls_EndLabelValue_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *Acl_AclSet_AclEntry_Mpls) To_Acl_AclSet_AclEntry_Mpls_EndLabelValue_Union(i interface{}) (Acl_AclSet_AclEntry_Mpls_EndLabelValue_Union, error) {
	if v, ok := i.(Acl_AclSet_AclEntry_Mpls_EndLabelValue_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to Acl_AclSet_AclEntry_Mpls_EndLabelValue_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// Acl_AclSet_AclEntry_Mpls_StartLabelValue_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry/mpls/config/start-label-value within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type Acl_AclSet_AclEntry_Mpls_StartLabelValue_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_Acl_AclSet_AclEntry_Mpls_StartLabelValue_Union()
}

// Documentation_for_Acl_AclSet_AclEntry_Mpls_StartLabelValue_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the Acl_AclSet_AclEntry_Mpls_StartLabelValue_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_Acl_AclSet_AclEntry_Mpls_StartLabelValue_Union() {
}

// Documentation_for_Acl_AclSet_AclEntry_Mpls_StartLabelValue_Union ensures that UnionUint32
// implements the Acl_AclSet_AclEntry_Mpls_StartLabelValue_Union interface.
func (UnionUint32) Documentation_for_Acl_AclSet_AclEntry_Mpls_StartLabelValue_Union() {}

// To_Acl_AclSet_AclEntry_Mpls_StartLabelValue_Union takes an input interface{} and attempts to convert it to a struct
// which implements the Acl_AclSet_AclEntry_Mpls_StartLabelValue_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *Acl_AclSet_AclEntry_Mpls) To_Acl_AclSet_AclEntry_Mpls_StartLabelValue_Union(i interface{}) (Acl_AclSet_AclEntry_Mpls_StartLabelValue_Union, error) {
	if v, ok := i.(Acl_AclSet_AclEntry_Mpls_StartLabelValue_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to Acl_AclSet_AclEntry_Mpls_StartLabelValue_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// Acl_AclSet_AclEntry_Transport represents the /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry/transport YANG schema element.
type Acl_AclSet_AclEntry_Transport struct {
	ΛMetadata                []ygot.Annotation                                   `path:"@" ygotAnnotation:"true"`
	BuiltinDetail            E_Transport_BuiltinDetail                           `path:"config/builtin-detail" module:"openconfig-acl/openconfig-acl"`
	ΛBuiltinDetail           []ygot.Annotation                                   `path:"config/@builtin-detail" ygotAnnotation:"true"`
	DestinationPort          Acl_AclSet_AclEntry_Transport_DestinationPort_Union `path:"config/destination-port" module:"openconfig-acl/openconfig-acl"`
	ΛDestinationPort         []ygot.Annotation                                   `path:"config/@destination-port" ygotAnnotation:"true"`
	DestinationPortSet       *string                                             `path:"config/destination-port-set" module:"openconfig-acl/openconfig-acl"`
	ΛDestinationPortSet      []ygot.Annotation                                   `path:"config/@destination-port-set" ygotAnnotation:"true"`
	DetailMode               E_Transport_DetailMode                              `path:"config/detail-mode" module:"openconfig-acl/openconfig-acl"`
	ΛDetailMode              []ygot.Annotation                                   `path:"config/@detail-mode" ygotAnnotation:"true"`
	ExplicitDetailMatchMode  E_Transport_ExplicitDetailMatchMode                 `path:"config/explicit-detail-match-mode" module:"openconfig-acl/openconfig-acl"`
	ΛExplicitDetailMatchMode []ygot.Annotation                                   `path:"config/@explicit-detail-match-mode" ygotAnnotation:"true"`
	ExplicitTcpFlags         []E_PacketMatchTypes_TCP_FLAGS                      `path:"config/explicit-tcp-flags" module:"openconfig-acl/openconfig-acl"`
	ΛExplicitTcpFlags        []ygot.Annotation                                   `path:"config/@explicit-tcp-flags" ygotAnnotation:"true"`
	SourcePort               Acl_AclSet_AclEntry_Transport_SourcePort_Union      `path:"config/source-port" module:"openconfig-acl/openconfig-acl"`
	ΛSourcePort              []ygot.Annotation                                   `path:"config/@source-port" ygotAnnotation:"true"`
	SourcePortSet            *string                                             `path:"config/source-port-set" module:"openconfig-acl/openconfig-acl"`
	ΛSourcePortSet           []ygot.Annotation                                   `path:"config/@source-port-set" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_AclSet_AclEntry_Transport implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_AclSet_AclEntry_Transport) IsYANGGoStruct() {}

// GetBuiltinDetail retrieves the value of the leaf BuiltinDetail from the Acl_AclSet_AclEntry_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BuiltinDetail is set, it can
// safely use t.GetBuiltinDetail() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BuiltinDetail == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Transport) GetBuiltinDetail() E_Transport_BuiltinDetail {
	if t == nil || t.BuiltinDetail == 0 {
		return 0
	}
	return t.BuiltinDetail
}

// GetDestinationPort retrieves the value of the leaf DestinationPort from the Acl_AclSet_AclEntry_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationPort is set, it can
// safely use t.GetDestinationPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationPort == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Transport) GetDestinationPort() Acl_AclSet_AclEntry_Transport_DestinationPort_Union {
	if t == nil || t.DestinationPort == nil {
		return nil
	}
	return t.DestinationPort
}

// GetDestinationPortSet retrieves the value of the leaf DestinationPortSet from the Acl_AclSet_AclEntry_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationPortSet is set, it can
// safely use t.GetDestinationPortSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationPortSet == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Transport) GetDestinationPortSet() string {
	if t == nil || t.DestinationPortSet == nil {
		return ""
	}
	return *t.DestinationPortSet
}

// GetDetailMode retrieves the value of the leaf DetailMode from the Acl_AclSet_AclEntry_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DetailMode is set, it can
// safely use t.GetDetailMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DetailMode == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Transport) GetDetailMode() E_Transport_DetailMode {
	if t == nil || t.DetailMode == 0 {
		return 0
	}
	return t.DetailMode
}

// GetExplicitDetailMatchMode retrieves the value of the leaf ExplicitDetailMatchMode from the Acl_AclSet_AclEntry_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExplicitDetailMatchMode is set, it can
// safely use t.GetExplicitDetailMatchMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExplicitDetailMatchMode == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Transport) GetExplicitDetailMatchMode() E_Transport_ExplicitDetailMatchMode {
	if t == nil || t.ExplicitDetailMatchMode == 0 {
		return 0
	}
	return t.ExplicitDetailMatchMode
}

// GetExplicitTcpFlags retrieves the value of the leaf ExplicitTcpFlags from the Acl_AclSet_AclEntry_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExplicitTcpFlags is set, it can
// safely use t.GetExplicitTcpFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExplicitTcpFlags == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Transport) GetExplicitTcpFlags() []E_PacketMatchTypes_TCP_FLAGS {
	if t == nil || t.ExplicitTcpFlags == nil {
		return nil
	}
	return t.ExplicitTcpFlags
}

// GetSourcePort retrieves the value of the leaf SourcePort from the Acl_AclSet_AclEntry_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourcePort is set, it can
// safely use t.GetSourcePort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourcePort == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Transport) GetSourcePort() Acl_AclSet_AclEntry_Transport_SourcePort_Union {
	if t == nil || t.SourcePort == nil {
		return nil
	}
	return t.SourcePort
}

// GetSourcePortSet retrieves the value of the leaf SourcePortSet from the Acl_AclSet_AclEntry_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourcePortSet is set, it can
// safely use t.GetSourcePortSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourcePortSet == nil' before retrieving the leaf's value.
func (t *Acl_AclSet_AclEntry_Transport) GetSourcePortSet() string {
	if t == nil || t.SourcePortSet == nil {
		return ""
	}
	return *t.SourcePortSet
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_AclSet_AclEntry_Transport
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_AclSet_AclEntry_Transport) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_Transport) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_AclSet_AclEntry_Transport"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_AclSet_AclEntry_Transport) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_AclSet_AclEntry_Transport) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_AclSet_AclEntry_Transport.
func (*Acl_AclSet_AclEntry_Transport) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_AclSet_AclEntry_Transport_DestinationPort_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry/transport/config/destination-port within the YANG schema.
// Union type can be one of [E_PacketMatchTypes_PortNumRange_Enum, UnionString, UnionUint16].
type Acl_AclSet_AclEntry_Transport_DestinationPort_Union interface {
	// Union type can be one of [E_PacketMatchTypes_PortNumRange_Enum, UnionString, UnionUint16]
	Documentation_for_Acl_AclSet_AclEntry_Transport_DestinationPort_Union()
}

// Documentation_for_Acl_AclSet_AclEntry_Transport_DestinationPort_Union ensures that E_PacketMatchTypes_PortNumRange_Enum
// implements the Acl_AclSet_AclEntry_Transport_DestinationPort_Union interface.
func (E_PacketMatchTypes_PortNumRange_Enum) Documentation_for_Acl_AclSet_AclEntry_Transport_DestinationPort_Union() {
}

// Documentation_for_Acl_AclSet_AclEntry_Transport_DestinationPort_Union ensures that UnionString
// implements the Acl_AclSet_AclEntry_Transport_DestinationPort_Union interface.
func (UnionString) Documentation_for_Acl_AclSet_AclEntry_Transport_DestinationPort_Union() {}

// Documentation_for_Acl_AclSet_AclEntry_Transport_DestinationPort_Union ensures that UnionUint16
// implements the Acl_AclSet_AclEntry_Transport_DestinationPort_Union interface.
func (UnionUint16) Documentation_for_Acl_AclSet_AclEntry_Transport_DestinationPort_Union() {}

// To_Acl_AclSet_AclEntry_Transport_DestinationPort_Union takes an input interface{} and attempts to convert it to a struct
// which implements the Acl_AclSet_AclEntry_Transport_DestinationPort_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *Acl_AclSet_AclEntry_Transport) To_Acl_AclSet_AclEntry_Transport_DestinationPort_Union(i interface{}) (Acl_AclSet_AclEntry_Transport_DestinationPort_Union, error) {
	if v, ok := i.(Acl_AclSet_AclEntry_Transport_DestinationPort_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint16:
		return UnionUint16(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to Acl_AclSet_AclEntry_Transport_DestinationPort_Union, unknown union type, got: %T, want any of [E_PacketMatchTypes_PortNumRange_Enum, string, uint16]", i, i)
}

// Acl_AclSet_AclEntry_Transport_SourcePort_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-acl/acl/acl-sets/acl-set/acl-entries/acl-entry/transport/config/source-port within the YANG schema.
// Union type can be one of [E_PacketMatchTypes_PortNumRange_Enum, UnionString, UnionUint16].
type Acl_AclSet_AclEntry_Transport_SourcePort_Union interface {
	// Union type can be one of [E_PacketMatchTypes_PortNumRange_Enum, UnionString, UnionUint16]
	Documentation_for_Acl_AclSet_AclEntry_Transport_SourcePort_Union()
}

// Documentation_for_Acl_AclSet_AclEntry_Transport_SourcePort_Union ensures that E_PacketMatchTypes_PortNumRange_Enum
// implements the Acl_AclSet_AclEntry_Transport_SourcePort_Union interface.
func (E_PacketMatchTypes_PortNumRange_Enum) Documentation_for_Acl_AclSet_AclEntry_Transport_SourcePort_Union() {
}

// Documentation_for_Acl_AclSet_AclEntry_Transport_SourcePort_Union ensures that UnionString
// implements the Acl_AclSet_AclEntry_Transport_SourcePort_Union interface.
func (UnionString) Documentation_for_Acl_AclSet_AclEntry_Transport_SourcePort_Union() {}

// Documentation_for_Acl_AclSet_AclEntry_Transport_SourcePort_Union ensures that UnionUint16
// implements the Acl_AclSet_AclEntry_Transport_SourcePort_Union interface.
func (UnionUint16) Documentation_for_Acl_AclSet_AclEntry_Transport_SourcePort_Union() {}

// To_Acl_AclSet_AclEntry_Transport_SourcePort_Union takes an input interface{} and attempts to convert it to a struct
// which implements the Acl_AclSet_AclEntry_Transport_SourcePort_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *Acl_AclSet_AclEntry_Transport) To_Acl_AclSet_AclEntry_Transport_SourcePort_Union(i interface{}) (Acl_AclSet_AclEntry_Transport_SourcePort_Union, error) {
	if v, ok := i.(Acl_AclSet_AclEntry_Transport_SourcePort_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint16:
		return UnionUint16(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to Acl_AclSet_AclEntry_Transport_SourcePort_Union, unknown union type, got: %T, want any of [E_PacketMatchTypes_PortNumRange_Enum, string, uint16]", i, i)
}

// Acl_Interface represents the /openconfig-acl/acl/interfaces/interface YANG schema element.
type Acl_Interface struct {
	ΛMetadata      []ygot.Annotation                                                `path:"@" ygotAnnotation:"true"`
	EgressAclSet   map[Acl_Interface_EgressAclSet_Key]*Acl_Interface_EgressAclSet   `path:"egress-acl-sets/egress-acl-set" module:"openconfig-acl/openconfig-acl"`
	ΛEgressAclSet  []ygot.Annotation                                                `path:"egress-acl-sets/@egress-acl-set" ygotAnnotation:"true"`
	Id             *string                                                          `path:"config/id|id" module:"openconfig-acl/openconfig-acl|openconfig-acl"`
	ΛId            []ygot.Annotation                                                `path:"config/@id|@id" ygotAnnotation:"true"`
	IngressAclSet  map[Acl_Interface_IngressAclSet_Key]*Acl_Interface_IngressAclSet `path:"ingress-acl-sets/ingress-acl-set" module:"openconfig-acl/openconfig-acl"`
	ΛIngressAclSet []ygot.Annotation                                                `path:"ingress-acl-sets/@ingress-acl-set" ygotAnnotation:"true"`
	InterfaceRef   *Acl_Interface_InterfaceRef                                      `path:"interface-ref" module:"openconfig-acl"`
	ΛInterfaceRef  []ygot.Annotation                                                `path:"@interface-ref" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_Interface) IsYANGGoStruct() {}

// Acl_Interface_EgressAclSet_Key represents the key for list EgressAclSet of element /openconfig-acl/acl/interfaces/interface.
type Acl_Interface_EgressAclSet_Key struct {
	SetName string         `path:"set-name"`
	Type    E_Acl_ACL_TYPE `path:"type"`
}

// IsYANGGoKeyStruct ensures that Acl_Interface_EgressAclSet_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (Acl_Interface_EgressAclSet_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the Acl_Interface_EgressAclSet_Key key struct.
func (t Acl_Interface_EgressAclSet_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"set-name": t.SetName,
		"type":     t.Type,
	}, nil
}

// Acl_Interface_IngressAclSet_Key represents the key for list IngressAclSet of element /openconfig-acl/acl/interfaces/interface.
type Acl_Interface_IngressAclSet_Key struct {
	SetName string         `path:"set-name"`
	Type    E_Acl_ACL_TYPE `path:"type"`
}

// IsYANGGoKeyStruct ensures that Acl_Interface_IngressAclSet_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (Acl_Interface_IngressAclSet_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the Acl_Interface_IngressAclSet_Key key struct.
func (t Acl_Interface_IngressAclSet_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"set-name": t.SetName,
		"type":     t.Type,
	}, nil
}

// NewEgressAclSet creates a new entry in the EgressAclSet list of the
// Acl_Interface struct. The keys of the list are populated from the input
// arguments.
func (t *Acl_Interface) NewEgressAclSet(SetName string, Type E_Acl_ACL_TYPE) (*Acl_Interface_EgressAclSet, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.EgressAclSet == nil {
		t.EgressAclSet = make(map[Acl_Interface_EgressAclSet_Key]*Acl_Interface_EgressAclSet)
	}

	key := Acl_Interface_EgressAclSet_Key{
		SetName: SetName,
		Type:    Type,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.EgressAclSet[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list EgressAclSet", key)
	}

	t.EgressAclSet[key] = &Acl_Interface_EgressAclSet{
		SetName: &SetName,
		Type:    Type,
	}

	return t.EgressAclSet[key], nil
}

// RenameEgressAclSet renames an entry in the list EgressAclSet within
// the Acl_Interface struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Acl_Interface) RenameEgressAclSet(oldK, newK Acl_Interface_EgressAclSet_Key) error {
	if _, ok := t.EgressAclSet[newK]; ok {
		return fmt.Errorf("key %v already exists in EgressAclSet", newK)
	}

	e, ok := t.EgressAclSet[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in EgressAclSet", oldK)
	}
	e.SetName = &newK.SetName
	e.Type = newK.Type

	t.EgressAclSet[newK] = e
	delete(t.EgressAclSet, oldK)
	return nil
}

// GetOrCreateEgressAclSetMap returns the list (map) from Acl_Interface.
//
// It initializes the field if not already initialized.
func (t *Acl_Interface) GetOrCreateEgressAclSetMap() map[Acl_Interface_EgressAclSet_Key]*Acl_Interface_EgressAclSet {
	if t.EgressAclSet == nil {
		t.EgressAclSet = make(map[Acl_Interface_EgressAclSet_Key]*Acl_Interface_EgressAclSet)
	}
	return t.EgressAclSet
}

// GetOrCreateEgressAclSet retrieves the value with the specified keys from
// the receiver Acl_Interface. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Acl_Interface) GetOrCreateEgressAclSet(SetName string, Type E_Acl_ACL_TYPE) *Acl_Interface_EgressAclSet {

	key := Acl_Interface_EgressAclSet_Key{
		SetName: SetName,
		Type:    Type,
	}

	if v, ok := t.EgressAclSet[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewEgressAclSet(SetName, Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateEgressAclSet got unexpected error: %v", err))
	}
	return v
}

// GetEgressAclSet retrieves the value with the specified key from
// the EgressAclSet map field of Acl_Interface. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Acl_Interface) GetEgressAclSet(SetName string, Type E_Acl_ACL_TYPE) *Acl_Interface_EgressAclSet {

	if t == nil {
		return nil
	}

	key := Acl_Interface_EgressAclSet_Key{
		SetName: SetName,
		Type:    Type,
	}

	if lm, ok := t.EgressAclSet[key]; ok {
		return lm
	}
	return nil
}

// AppendEgressAclSet appends the supplied Acl_Interface_EgressAclSet struct to the
// list EgressAclSet of Acl_Interface. If the key value(s) specified in
// the supplied Acl_Interface_EgressAclSet already exist in the list, an error is
// returned.
func (t *Acl_Interface) AppendEgressAclSet(v *Acl_Interface_EgressAclSet) error {
	if v.SetName == nil {
		return fmt.Errorf("invalid nil key for SetName")
	}

	key := Acl_Interface_EgressAclSet_Key{
		SetName: *v.SetName,
		Type:    v.Type,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.EgressAclSet == nil {
		t.EgressAclSet = make(map[Acl_Interface_EgressAclSet_Key]*Acl_Interface_EgressAclSet)
	}

	if _, ok := t.EgressAclSet[key]; ok {
		return fmt.Errorf("duplicate key for list EgressAclSet %v", key)
	}

	t.EgressAclSet[key] = v
	return nil
}

// NewIngressAclSet creates a new entry in the IngressAclSet list of the
// Acl_Interface struct. The keys of the list are populated from the input
// arguments.
func (t *Acl_Interface) NewIngressAclSet(SetName string, Type E_Acl_ACL_TYPE) (*Acl_Interface_IngressAclSet, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.IngressAclSet == nil {
		t.IngressAclSet = make(map[Acl_Interface_IngressAclSet_Key]*Acl_Interface_IngressAclSet)
	}

	key := Acl_Interface_IngressAclSet_Key{
		SetName: SetName,
		Type:    Type,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.IngressAclSet[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list IngressAclSet", key)
	}

	t.IngressAclSet[key] = &Acl_Interface_IngressAclSet{
		SetName: &SetName,
		Type:    Type,
	}

	return t.IngressAclSet[key], nil
}

// RenameIngressAclSet renames an entry in the list IngressAclSet within
// the Acl_Interface struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Acl_Interface) RenameIngressAclSet(oldK, newK Acl_Interface_IngressAclSet_Key) error {
	if _, ok := t.IngressAclSet[newK]; ok {
		return fmt.Errorf("key %v already exists in IngressAclSet", newK)
	}

	e, ok := t.IngressAclSet[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in IngressAclSet", oldK)
	}
	e.SetName = &newK.SetName
	e.Type = newK.Type

	t.IngressAclSet[newK] = e
	delete(t.IngressAclSet, oldK)
	return nil
}

// GetOrCreateIngressAclSetMap returns the list (map) from Acl_Interface.
//
// It initializes the field if not already initialized.
func (t *Acl_Interface) GetOrCreateIngressAclSetMap() map[Acl_Interface_IngressAclSet_Key]*Acl_Interface_IngressAclSet {
	if t.IngressAclSet == nil {
		t.IngressAclSet = make(map[Acl_Interface_IngressAclSet_Key]*Acl_Interface_IngressAclSet)
	}
	return t.IngressAclSet
}

// GetOrCreateIngressAclSet retrieves the value with the specified keys from
// the receiver Acl_Interface. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Acl_Interface) GetOrCreateIngressAclSet(SetName string, Type E_Acl_ACL_TYPE) *Acl_Interface_IngressAclSet {

	key := Acl_Interface_IngressAclSet_Key{
		SetName: SetName,
		Type:    Type,
	}

	if v, ok := t.IngressAclSet[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewIngressAclSet(SetName, Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateIngressAclSet got unexpected error: %v", err))
	}
	return v
}

// GetIngressAclSet retrieves the value with the specified key from
// the IngressAclSet map field of Acl_Interface. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Acl_Interface) GetIngressAclSet(SetName string, Type E_Acl_ACL_TYPE) *Acl_Interface_IngressAclSet {

	if t == nil {
		return nil
	}

	key := Acl_Interface_IngressAclSet_Key{
		SetName: SetName,
		Type:    Type,
	}

	if lm, ok := t.IngressAclSet[key]; ok {
		return lm
	}
	return nil
}

// AppendIngressAclSet appends the supplied Acl_Interface_IngressAclSet struct to the
// list IngressAclSet of Acl_Interface. If the key value(s) specified in
// the supplied Acl_Interface_IngressAclSet already exist in the list, an error is
// returned.
func (t *Acl_Interface) AppendIngressAclSet(v *Acl_Interface_IngressAclSet) error {
	if v.SetName == nil {
		return fmt.Errorf("invalid nil key for SetName")
	}

	key := Acl_Interface_IngressAclSet_Key{
		SetName: *v.SetName,
		Type:    v.Type,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.IngressAclSet == nil {
		t.IngressAclSet = make(map[Acl_Interface_IngressAclSet_Key]*Acl_Interface_IngressAclSet)
	}

	if _, ok := t.IngressAclSet[key]; ok {
		return fmt.Errorf("duplicate key for list IngressAclSet %v", key)
	}

	t.IngressAclSet[key] = v
	return nil
}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *Acl_Interface) GetOrCreateInterfaceRef() *Acl_Interface_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &Acl_Interface_InterfaceRef{}
	return t.InterfaceRef
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from Acl_Interface. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Acl_Interface) GetInterfaceRef() *Acl_Interface_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetId retrieves the value of the leaf Id from the Acl_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *Acl_Interface) GetId() string {
	if t == nil || t.Id == nil {
		return ""
	}
	return *t.Id
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.InterfaceRef.PopulateDefaults()
	for _, e := range t.EgressAclSet {
		e.PopulateDefaults()
	}
	for _, e := range t.IngressAclSet {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the Acl_Interface struct, which is a YANG list entry.
func (t *Acl_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_Interface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_Interface.
func (*Acl_Interface) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_Interface_EgressAclSet represents the /openconfig-acl/acl/interfaces/interface/egress-acl-sets/egress-acl-set YANG schema element.
type Acl_Interface_EgressAclSet struct {
	ΛMetadata []ygot.Annotation                               `path:"@" ygotAnnotation:"true"`
	AclEntry  map[uint32]*Acl_Interface_EgressAclSet_AclEntry `path:"acl-entries/acl-entry" module:"openconfig-acl/openconfig-acl"`
	ΛAclEntry []ygot.Annotation                               `path:"acl-entries/@acl-entry" ygotAnnotation:"true"`
	SetName   *string                                         `path:"config/set-name|set-name" module:"openconfig-acl/openconfig-acl|openconfig-acl"`
	ΛSetName  []ygot.Annotation                               `path:"config/@set-name|@set-name" ygotAnnotation:"true"`
	Type      E_Acl_ACL_TYPE                                  `path:"config/type|type" module:"openconfig-acl/openconfig-acl|openconfig-acl"`
	ΛType     []ygot.Annotation                               `path:"config/@type|@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_Interface_EgressAclSet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_Interface_EgressAclSet) IsYANGGoStruct() {}

// NewAclEntry creates a new entry in the AclEntry list of the
// Acl_Interface_EgressAclSet struct. The keys of the list are populated from the input
// arguments.
func (t *Acl_Interface_EgressAclSet) NewAclEntry(SequenceId uint32) (*Acl_Interface_EgressAclSet_AclEntry, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AclEntry == nil {
		t.AclEntry = make(map[uint32]*Acl_Interface_EgressAclSet_AclEntry)
	}

	key := SequenceId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AclEntry[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AclEntry", key)
	}

	t.AclEntry[key] = &Acl_Interface_EgressAclSet_AclEntry{
		SequenceId: &SequenceId,
	}

	return t.AclEntry[key], nil
}

// RenameAclEntry renames an entry in the list AclEntry within
// the Acl_Interface_EgressAclSet struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Acl_Interface_EgressAclSet) RenameAclEntry(oldK, newK uint32) error {
	if _, ok := t.AclEntry[newK]; ok {
		return fmt.Errorf("key %v already exists in AclEntry", newK)
	}

	e, ok := t.AclEntry[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AclEntry", oldK)
	}
	e.SequenceId = &newK

	t.AclEntry[newK] = e
	delete(t.AclEntry, oldK)
	return nil
}

// GetOrCreateAclEntryMap returns the list (map) from Acl_Interface_EgressAclSet.
//
// It initializes the field if not already initialized.
func (t *Acl_Interface_EgressAclSet) GetOrCreateAclEntryMap() map[uint32]*Acl_Interface_EgressAclSet_AclEntry {
	if t.AclEntry == nil {
		t.AclEntry = make(map[uint32]*Acl_Interface_EgressAclSet_AclEntry)
	}
	return t.AclEntry
}

// GetOrCreateAclEntry retrieves the value with the specified keys from
// the receiver Acl_Interface_EgressAclSet. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Acl_Interface_EgressAclSet) GetOrCreateAclEntry(SequenceId uint32) *Acl_Interface_EgressAclSet_AclEntry {

	key := SequenceId

	if v, ok := t.AclEntry[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAclEntry(SequenceId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAclEntry got unexpected error: %v", err))
	}
	return v
}

// GetAclEntry retrieves the value with the specified key from
// the AclEntry map field of Acl_Interface_EgressAclSet. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Acl_Interface_EgressAclSet) GetAclEntry(SequenceId uint32) *Acl_Interface_EgressAclSet_AclEntry {

	if t == nil {
		return nil
	}

	key := SequenceId

	if lm, ok := t.AclEntry[key]; ok {
		return lm
	}
	return nil
}

// AppendAclEntry appends the supplied Acl_Interface_EgressAclSet_AclEntry struct to the
// list AclEntry of Acl_Interface_EgressAclSet. If the key value(s) specified in
// the supplied Acl_Interface_EgressAclSet_AclEntry already exist in the list, an error is
// returned.
func (t *Acl_Interface_EgressAclSet) AppendAclEntry(v *Acl_Interface_EgressAclSet_AclEntry) error {
	if v.SequenceId == nil {
		return fmt.Errorf("invalid nil key received for SequenceId")
	}

	key := *v.SequenceId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AclEntry == nil {
		t.AclEntry = make(map[uint32]*Acl_Interface_EgressAclSet_AclEntry)
	}

	if _, ok := t.AclEntry[key]; ok {
		return fmt.Errorf("duplicate key for list AclEntry %v", key)
	}

	t.AclEntry[key] = v
	return nil
}

// GetSetName retrieves the value of the leaf SetName from the Acl_Interface_EgressAclSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SetName is set, it can
// safely use t.GetSetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SetName == nil' before retrieving the leaf's value.
func (t *Acl_Interface_EgressAclSet) GetSetName() string {
	if t == nil || t.SetName == nil {
		return ""
	}
	return *t.SetName
}

// GetType retrieves the value of the leaf Type from the Acl_Interface_EgressAclSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *Acl_Interface_EgressAclSet) GetType() E_Acl_ACL_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_Interface_EgressAclSet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_Interface_EgressAclSet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.AclEntry {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the Acl_Interface_EgressAclSet struct, which is a YANG list entry.
func (t *Acl_Interface_EgressAclSet) ΛListKeyMap() (map[string]interface{}, error) {
	if t.SetName == nil {
		return nil, fmt.Errorf("nil value for key SetName")
	}

	return map[string]interface{}{
		"set-name": *t.SetName,
		"type":     t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_Interface_EgressAclSet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_Interface_EgressAclSet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_Interface_EgressAclSet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_Interface_EgressAclSet) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_Interface_EgressAclSet.
func (*Acl_Interface_EgressAclSet) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_Interface_EgressAclSet_AclEntry represents the /openconfig-acl/acl/interfaces/interface/egress-acl-sets/egress-acl-set/acl-entries/acl-entry YANG schema element.
type Acl_Interface_EgressAclSet_AclEntry struct {
	ΛMetadata       []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MatchedOctets   *uint64           `path:"state/matched-octets" module:"openconfig-acl/openconfig-acl"`
	ΛMatchedOctets  []ygot.Annotation `path:"state/@matched-octets" ygotAnnotation:"true"`
	MatchedPackets  *uint64           `path:"state/matched-packets" module:"openconfig-acl/openconfig-acl"`
	ΛMatchedPackets []ygot.Annotation `path:"state/@matched-packets" ygotAnnotation:"true"`
	SequenceId      *uint32           `path:"state/sequence-id|sequence-id" module:"openconfig-acl/openconfig-acl|openconfig-acl"`
	ΛSequenceId     []ygot.Annotation `path:"state/@sequence-id|@sequence-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_Interface_EgressAclSet_AclEntry implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_Interface_EgressAclSet_AclEntry) IsYANGGoStruct() {}

// GetMatchedOctets retrieves the value of the leaf MatchedOctets from the Acl_Interface_EgressAclSet_AclEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MatchedOctets is set, it can
// safely use t.GetMatchedOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MatchedOctets == nil' before retrieving the leaf's value.
func (t *Acl_Interface_EgressAclSet_AclEntry) GetMatchedOctets() uint64 {
	if t == nil || t.MatchedOctets == nil {
		return 0
	}
	return *t.MatchedOctets
}

// GetMatchedPackets retrieves the value of the leaf MatchedPackets from the Acl_Interface_EgressAclSet_AclEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MatchedPackets is set, it can
// safely use t.GetMatchedPackets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MatchedPackets == nil' before retrieving the leaf's value.
func (t *Acl_Interface_EgressAclSet_AclEntry) GetMatchedPackets() uint64 {
	if t == nil || t.MatchedPackets == nil {
		return 0
	}
	return *t.MatchedPackets
}

// GetSequenceId retrieves the value of the leaf SequenceId from the Acl_Interface_EgressAclSet_AclEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SequenceId is set, it can
// safely use t.GetSequenceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SequenceId == nil' before retrieving the leaf's value.
func (t *Acl_Interface_EgressAclSet_AclEntry) GetSequenceId() uint32 {
	if t == nil || t.SequenceId == nil {
		return 0
	}
	return *t.SequenceId
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_Interface_EgressAclSet_AclEntry
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_Interface_EgressAclSet_AclEntry) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the Acl_Interface_EgressAclSet_AclEntry struct, which is a YANG list entry.
func (t *Acl_Interface_EgressAclSet_AclEntry) ΛListKeyMap() (map[string]interface{}, error) {
	if t.SequenceId == nil {
		return nil, fmt.Errorf("nil value for key SequenceId")
	}

	return map[string]interface{}{
		"sequence-id": *t.SequenceId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_Interface_EgressAclSet_AclEntry) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_Interface_EgressAclSet_AclEntry"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_Interface_EgressAclSet_AclEntry) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_Interface_EgressAclSet_AclEntry) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_Interface_EgressAclSet_AclEntry.
func (*Acl_Interface_EgressAclSet_AclEntry) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_Interface_IngressAclSet represents the /openconfig-acl/acl/interfaces/interface/ingress-acl-sets/ingress-acl-set YANG schema element.
type Acl_Interface_IngressAclSet struct {
	ΛMetadata []ygot.Annotation                                `path:"@" ygotAnnotation:"true"`
	AclEntry  map[uint32]*Acl_Interface_IngressAclSet_AclEntry `path:"acl-entries/acl-entry" module:"openconfig-acl/openconfig-acl"`
	ΛAclEntry []ygot.Annotation                                `path:"acl-entries/@acl-entry" ygotAnnotation:"true"`
	SetName   *string                                          `path:"config/set-name|set-name" module:"openconfig-acl/openconfig-acl|openconfig-acl"`
	ΛSetName  []ygot.Annotation                                `path:"config/@set-name|@set-name" ygotAnnotation:"true"`
	Type      E_Acl_ACL_TYPE                                   `path:"config/type|type" module:"openconfig-acl/openconfig-acl|openconfig-acl"`
	ΛType     []ygot.Annotation                                `path:"config/@type|@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_Interface_IngressAclSet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_Interface_IngressAclSet) IsYANGGoStruct() {}

// NewAclEntry creates a new entry in the AclEntry list of the
// Acl_Interface_IngressAclSet struct. The keys of the list are populated from the input
// arguments.
func (t *Acl_Interface_IngressAclSet) NewAclEntry(SequenceId uint32) (*Acl_Interface_IngressAclSet_AclEntry, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AclEntry == nil {
		t.AclEntry = make(map[uint32]*Acl_Interface_IngressAclSet_AclEntry)
	}

	key := SequenceId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AclEntry[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AclEntry", key)
	}

	t.AclEntry[key] = &Acl_Interface_IngressAclSet_AclEntry{
		SequenceId: &SequenceId,
	}

	return t.AclEntry[key], nil
}

// RenameAclEntry renames an entry in the list AclEntry within
// the Acl_Interface_IngressAclSet struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Acl_Interface_IngressAclSet) RenameAclEntry(oldK, newK uint32) error {
	if _, ok := t.AclEntry[newK]; ok {
		return fmt.Errorf("key %v already exists in AclEntry", newK)
	}

	e, ok := t.AclEntry[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AclEntry", oldK)
	}
	e.SequenceId = &newK

	t.AclEntry[newK] = e
	delete(t.AclEntry, oldK)
	return nil
}

// GetOrCreateAclEntryMap returns the list (map) from Acl_Interface_IngressAclSet.
//
// It initializes the field if not already initialized.
func (t *Acl_Interface_IngressAclSet) GetOrCreateAclEntryMap() map[uint32]*Acl_Interface_IngressAclSet_AclEntry {
	if t.AclEntry == nil {
		t.AclEntry = make(map[uint32]*Acl_Interface_IngressAclSet_AclEntry)
	}
	return t.AclEntry
}

// GetOrCreateAclEntry retrieves the value with the specified keys from
// the receiver Acl_Interface_IngressAclSet. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Acl_Interface_IngressAclSet) GetOrCreateAclEntry(SequenceId uint32) *Acl_Interface_IngressAclSet_AclEntry {

	key := SequenceId

	if v, ok := t.AclEntry[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAclEntry(SequenceId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAclEntry got unexpected error: %v", err))
	}
	return v
}

// GetAclEntry retrieves the value with the specified key from
// the AclEntry map field of Acl_Interface_IngressAclSet. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Acl_Interface_IngressAclSet) GetAclEntry(SequenceId uint32) *Acl_Interface_IngressAclSet_AclEntry {

	if t == nil {
		return nil
	}

	key := SequenceId

	if lm, ok := t.AclEntry[key]; ok {
		return lm
	}
	return nil
}

// AppendAclEntry appends the supplied Acl_Interface_IngressAclSet_AclEntry struct to the
// list AclEntry of Acl_Interface_IngressAclSet. If the key value(s) specified in
// the supplied Acl_Interface_IngressAclSet_AclEntry already exist in the list, an error is
// returned.
func (t *Acl_Interface_IngressAclSet) AppendAclEntry(v *Acl_Interface_IngressAclSet_AclEntry) error {
	if v.SequenceId == nil {
		return fmt.Errorf("invalid nil key received for SequenceId")
	}

	key := *v.SequenceId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AclEntry == nil {
		t.AclEntry = make(map[uint32]*Acl_Interface_IngressAclSet_AclEntry)
	}

	if _, ok := t.AclEntry[key]; ok {
		return fmt.Errorf("duplicate key for list AclEntry %v", key)
	}

	t.AclEntry[key] = v
	return nil
}

// GetSetName retrieves the value of the leaf SetName from the Acl_Interface_IngressAclSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SetName is set, it can
// safely use t.GetSetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SetName == nil' before retrieving the leaf's value.
func (t *Acl_Interface_IngressAclSet) GetSetName() string {
	if t == nil || t.SetName == nil {
		return ""
	}
	return *t.SetName
}

// GetType retrieves the value of the leaf Type from the Acl_Interface_IngressAclSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *Acl_Interface_IngressAclSet) GetType() E_Acl_ACL_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_Interface_IngressAclSet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_Interface_IngressAclSet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.AclEntry {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the Acl_Interface_IngressAclSet struct, which is a YANG list entry.
func (t *Acl_Interface_IngressAclSet) ΛListKeyMap() (map[string]interface{}, error) {
	if t.SetName == nil {
		return nil, fmt.Errorf("nil value for key SetName")
	}

	return map[string]interface{}{
		"set-name": *t.SetName,
		"type":     t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_Interface_IngressAclSet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_Interface_IngressAclSet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_Interface_IngressAclSet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_Interface_IngressAclSet) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_Interface_IngressAclSet.
func (*Acl_Interface_IngressAclSet) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_Interface_IngressAclSet_AclEntry represents the /openconfig-acl/acl/interfaces/interface/ingress-acl-sets/ingress-acl-set/acl-entries/acl-entry YANG schema element.
type Acl_Interface_IngressAclSet_AclEntry struct {
	ΛMetadata       []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MatchedOctets   *uint64           `path:"state/matched-octets" module:"openconfig-acl/openconfig-acl"`
	ΛMatchedOctets  []ygot.Annotation `path:"state/@matched-octets" ygotAnnotation:"true"`
	MatchedPackets  *uint64           `path:"state/matched-packets" module:"openconfig-acl/openconfig-acl"`
	ΛMatchedPackets []ygot.Annotation `path:"state/@matched-packets" ygotAnnotation:"true"`
	SequenceId      *uint32           `path:"state/sequence-id|sequence-id" module:"openconfig-acl/openconfig-acl|openconfig-acl"`
	ΛSequenceId     []ygot.Annotation `path:"state/@sequence-id|@sequence-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_Interface_IngressAclSet_AclEntry implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_Interface_IngressAclSet_AclEntry) IsYANGGoStruct() {}

// GetMatchedOctets retrieves the value of the leaf MatchedOctets from the Acl_Interface_IngressAclSet_AclEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MatchedOctets is set, it can
// safely use t.GetMatchedOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MatchedOctets == nil' before retrieving the leaf's value.
func (t *Acl_Interface_IngressAclSet_AclEntry) GetMatchedOctets() uint64 {
	if t == nil || t.MatchedOctets == nil {
		return 0
	}
	return *t.MatchedOctets
}

// GetMatchedPackets retrieves the value of the leaf MatchedPackets from the Acl_Interface_IngressAclSet_AclEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MatchedPackets is set, it can
// safely use t.GetMatchedPackets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MatchedPackets == nil' before retrieving the leaf's value.
func (t *Acl_Interface_IngressAclSet_AclEntry) GetMatchedPackets() uint64 {
	if t == nil || t.MatchedPackets == nil {
		return 0
	}
	return *t.MatchedPackets
}

// GetSequenceId retrieves the value of the leaf SequenceId from the Acl_Interface_IngressAclSet_AclEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SequenceId is set, it can
// safely use t.GetSequenceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SequenceId == nil' before retrieving the leaf's value.
func (t *Acl_Interface_IngressAclSet_AclEntry) GetSequenceId() uint32 {
	if t == nil || t.SequenceId == nil {
		return 0
	}
	return *t.SequenceId
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_Interface_IngressAclSet_AclEntry
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_Interface_IngressAclSet_AclEntry) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the Acl_Interface_IngressAclSet_AclEntry struct, which is a YANG list entry.
func (t *Acl_Interface_IngressAclSet_AclEntry) ΛListKeyMap() (map[string]interface{}, error) {
	if t.SequenceId == nil {
		return nil, fmt.Errorf("nil value for key SequenceId")
	}

	return map[string]interface{}{
		"sequence-id": *t.SequenceId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_Interface_IngressAclSet_AclEntry) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_Interface_IngressAclSet_AclEntry"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_Interface_IngressAclSet_AclEntry) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_Interface_IngressAclSet_AclEntry) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_Interface_IngressAclSet_AclEntry.
func (*Acl_Interface_IngressAclSet_AclEntry) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Acl_Interface_InterfaceRef represents the /openconfig-acl/acl/interfaces/interface/interface-ref YANG schema element.
type Acl_Interface_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-acl/openconfig-acl"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-acl/openconfig-acl"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Acl_Interface_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Acl_Interface_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the Acl_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *Acl_Interface_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the Acl_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *Acl_Interface_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the Acl_Interface_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Acl_Interface_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_Interface_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Acl_Interface_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Acl_Interface_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Acl_Interface_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Acl_Interface_InterfaceRef.
func (*Acl_Interface_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-acl"
}

// Aps represents the /openconfig-transport-line-protection/aps YANG schema element.
type Aps struct {
	ΛMetadata  []ygot.Annotation         `path:"@" ygotAnnotation:"true"`
	ApsModule  map[string]*Aps_ApsModule `path:"aps-modules/aps-module" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛApsModule []ygot.Annotation         `path:"aps-modules/@aps-module" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Aps implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Aps) IsYANGGoStruct() {}

// NewApsModule creates a new entry in the ApsModule list of the
// Aps struct. The keys of the list are populated from the input
// arguments.
func (t *Aps) NewApsModule(Name string) (*Aps_ApsModule, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ApsModule == nil {
		t.ApsModule = make(map[string]*Aps_ApsModule)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.ApsModule[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list ApsModule", key)
	}

	t.ApsModule[key] = &Aps_ApsModule{
		Name: &Name,
	}

	return t.ApsModule[key], nil
}

// RenameApsModule renames an entry in the list ApsModule within
// the Aps struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Aps) RenameApsModule(oldK, newK string) error {
	if _, ok := t.ApsModule[newK]; ok {
		return fmt.Errorf("key %v already exists in ApsModule", newK)
	}

	e, ok := t.ApsModule[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in ApsModule", oldK)
	}
	e.Name = &newK

	t.ApsModule[newK] = e
	delete(t.ApsModule, oldK)
	return nil
}

// GetOrCreateApsModuleMap returns the list (map) from Aps.
//
// It initializes the field if not already initialized.
func (t *Aps) GetOrCreateApsModuleMap() map[string]*Aps_ApsModule {
	if t.ApsModule == nil {
		t.ApsModule = make(map[string]*Aps_ApsModule)
	}
	return t.ApsModule
}

// GetOrCreateApsModule retrieves the value with the specified keys from
// the receiver Aps. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Aps) GetOrCreateApsModule(Name string) *Aps_ApsModule {

	key := Name

	if v, ok := t.ApsModule[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewApsModule(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateApsModule got unexpected error: %v", err))
	}
	return v
}

// GetApsModule retrieves the value with the specified key from
// the ApsModule map field of Aps. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Aps) GetApsModule(Name string) *Aps_ApsModule {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.ApsModule[key]; ok {
		return lm
	}
	return nil
}

// AppendApsModule appends the supplied Aps_ApsModule struct to the
// list ApsModule of Aps. If the key value(s) specified in
// the supplied Aps_ApsModule already exist in the list, an error is
// returned.
func (t *Aps) AppendApsModule(v *Aps_ApsModule) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ApsModule == nil {
		t.ApsModule = make(map[string]*Aps_ApsModule)
	}

	if _, ok := t.ApsModule[key]; ok {
		return fmt.Errorf("duplicate key for list ApsModule %v", key)
	}

	t.ApsModule[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the Aps
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Aps) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.ApsModule {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Aps"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Aps) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Aps.
func (*Aps) ΛBelongingModule() string {
	return "openconfig-transport-line-protection"
}

// Aps_ApsModule represents the /openconfig-transport-line-protection/aps/aps-modules/aps-module YANG schema element.
type Aps_ApsModule struct {
	ΛMetadata                      []ygot.Annotation                   `path:"@" ygotAnnotation:"true"`
	ActivePath                     E_TransportLineProtection_APS_PATHS `path:"state/active-path" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛActivePath                    []ygot.Annotation                   `path:"state/@active-path" ygotAnnotation:"true"`
	ForceToPort                    E_ApsModule_ForceToPort             `path:"config/force-to-port" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛForceToPort                   []ygot.Annotation                   `path:"config/@force-to-port" ygotAnnotation:"true"`
	HoldOffTime                    *uint32                             `path:"config/hold-off-time" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛHoldOffTime                   []ygot.Annotation                   `path:"config/@hold-off-time" ygotAnnotation:"true"`
	Name                           *string                             `path:"config/name|name" module:"openconfig-transport-line-protection/openconfig-transport-line-protection|openconfig-transport-line-protection"`
	ΛName                          []ygot.Annotation                   `path:"config/@name|@name" ygotAnnotation:"true"`
	Ports                          *Aps_ApsModule_Ports                `path:"ports" module:"openconfig-transport-line-protection"`
	ΛPorts                         []ygot.Annotation                   `path:"@ports" ygotAnnotation:"true"`
	PrimarySwitchHysteresis        *float64                            `path:"config/primary-switch-hysteresis" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛPrimarySwitchHysteresis       []ygot.Annotation                   `path:"config/@primary-switch-hysteresis" ygotAnnotation:"true"`
	PrimarySwitchThreshold         *float64                            `path:"config/primary-switch-threshold" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛPrimarySwitchThreshold        []ygot.Annotation                   `path:"config/@primary-switch-threshold" ygotAnnotation:"true"`
	RelativeSwitchThreshold        *float64                            `path:"config/relative-switch-threshold" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛRelativeSwitchThreshold       []ygot.Annotation                   `path:"config/@relative-switch-threshold" ygotAnnotation:"true"`
	RelativeSwitchThresholdOffset  *float64                            `path:"config/relative-switch-threshold-offset" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛRelativeSwitchThresholdOffset []ygot.Annotation                   `path:"config/@relative-switch-threshold-offset" ygotAnnotation:"true"`
	Revertive                      *bool                               `path:"config/revertive" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛRevertive                     []ygot.Annotation                   `path:"config/@revertive" ygotAnnotation:"true"`
	SecondarySwitchThreshold       *float64                            `path:"config/secondary-switch-threshold" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛSecondarySwitchThreshold      []ygot.Annotation                   `path:"config/@secondary-switch-threshold" ygotAnnotation:"true"`
	WaitToRestoreTime              *uint32                             `path:"config/wait-to-restore-time" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛWaitToRestoreTime             []ygot.Annotation                   `path:"config/@wait-to-restore-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Aps_ApsModule implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Aps_ApsModule) IsYANGGoStruct() {}

// GetOrCreatePorts retrieves the value of the Ports field
// or returns the existing field if it already exists.
func (t *Aps_ApsModule) GetOrCreatePorts() *Aps_ApsModule_Ports {
	if t.Ports != nil {
		return t.Ports
	}
	t.Ports = &Aps_ApsModule_Ports{}
	return t.Ports
}

// GetPorts returns the value of the Ports struct pointer
// from Aps_ApsModule. If the receiver or the field Ports is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Aps_ApsModule) GetPorts() *Aps_ApsModule_Ports {
	if t != nil && t.Ports != nil {
		return t.Ports
	}
	return nil
}

// GetActivePath retrieves the value of the leaf ActivePath from the Aps_ApsModule
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ActivePath is set, it can
// safely use t.GetActivePath() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ActivePath == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule) GetActivePath() E_TransportLineProtection_APS_PATHS {
	if t == nil || t.ActivePath == 0 {
		return 0
	}
	return t.ActivePath
}

// GetForceToPort retrieves the value of the leaf ForceToPort from the Aps_ApsModule
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ForceToPort is set, it can
// safely use t.GetForceToPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ForceToPort == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule) GetForceToPort() E_ApsModule_ForceToPort {
	if t == nil || t.ForceToPort == 0 {
		return ApsModule_ForceToPort_NONE
	}
	return t.ForceToPort
}

// GetHoldOffTime retrieves the value of the leaf HoldOffTime from the Aps_ApsModule
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HoldOffTime is set, it can
// safely use t.GetHoldOffTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HoldOffTime == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule) GetHoldOffTime() uint32 {
	if t == nil || t.HoldOffTime == nil {
		return 0
	}
	return *t.HoldOffTime
}

// GetName retrieves the value of the leaf Name from the Aps_ApsModule
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetPrimarySwitchHysteresis retrieves the value of the leaf PrimarySwitchHysteresis from the Aps_ApsModule
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrimarySwitchHysteresis is set, it can
// safely use t.GetPrimarySwitchHysteresis() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrimarySwitchHysteresis == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule) GetPrimarySwitchHysteresis() float64 {
	if t == nil || t.PrimarySwitchHysteresis == nil {
		return 0
	}
	return *t.PrimarySwitchHysteresis
}

// GetPrimarySwitchThreshold retrieves the value of the leaf PrimarySwitchThreshold from the Aps_ApsModule
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrimarySwitchThreshold is set, it can
// safely use t.GetPrimarySwitchThreshold() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrimarySwitchThreshold == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule) GetPrimarySwitchThreshold() float64 {
	if t == nil || t.PrimarySwitchThreshold == nil {
		return 0.0
	}
	return *t.PrimarySwitchThreshold
}

// GetRelativeSwitchThreshold retrieves the value of the leaf RelativeSwitchThreshold from the Aps_ApsModule
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RelativeSwitchThreshold is set, it can
// safely use t.GetRelativeSwitchThreshold() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RelativeSwitchThreshold == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule) GetRelativeSwitchThreshold() float64 {
	if t == nil || t.RelativeSwitchThreshold == nil {
		return 0
	}
	return *t.RelativeSwitchThreshold
}

// GetRelativeSwitchThresholdOffset retrieves the value of the leaf RelativeSwitchThresholdOffset from the Aps_ApsModule
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RelativeSwitchThresholdOffset is set, it can
// safely use t.GetRelativeSwitchThresholdOffset() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RelativeSwitchThresholdOffset == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule) GetRelativeSwitchThresholdOffset() float64 {
	if t == nil || t.RelativeSwitchThresholdOffset == nil {
		return 0
	}
	return *t.RelativeSwitchThresholdOffset
}

// GetRevertive retrieves the value of the leaf Revertive from the Aps_ApsModule
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Revertive is set, it can
// safely use t.GetRevertive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Revertive == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule) GetRevertive() bool {
	if t == nil || t.Revertive == nil {
		return false
	}
	return *t.Revertive
}

// GetSecondarySwitchThreshold retrieves the value of the leaf SecondarySwitchThreshold from the Aps_ApsModule
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SecondarySwitchThreshold is set, it can
// safely use t.GetSecondarySwitchThreshold() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SecondarySwitchThreshold == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule) GetSecondarySwitchThreshold() float64 {
	if t == nil || t.SecondarySwitchThreshold == nil {
		return 0.0
	}
	return *t.SecondarySwitchThreshold
}

// GetWaitToRestoreTime retrieves the value of the leaf WaitToRestoreTime from the Aps_ApsModule
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WaitToRestoreTime is set, it can
// safely use t.GetWaitToRestoreTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WaitToRestoreTime == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule) GetWaitToRestoreTime() uint32 {
	if t == nil || t.WaitToRestoreTime == nil {
		return 0
	}
	return *t.WaitToRestoreTime
}

// PopulateDefaults recursively populates unset leaf fields in the Aps_ApsModule
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Aps_ApsModule) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.ForceToPort == 0 {
		t.ForceToPort = ApsModule_ForceToPort_NONE
	}
	if t.PrimarySwitchHysteresis == nil {
		var v float64 = 0
		t.PrimarySwitchHysteresis = &v
	}
	if t.RelativeSwitchThreshold == nil {
		var v float64 = 0
		t.RelativeSwitchThreshold = &v
	}
	if t.RelativeSwitchThresholdOffset == nil {
		var v float64 = 0
		t.RelativeSwitchThresholdOffset = &v
	}
	t.Ports.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the Aps_ApsModule struct, which is a YANG list entry.
func (t *Aps_ApsModule) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Aps_ApsModule"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Aps_ApsModule) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Aps_ApsModule.
func (*Aps_ApsModule) ΛBelongingModule() string {
	return "openconfig-transport-line-protection"
}

// Aps_ApsModule_Ports represents the /openconfig-transport-line-protection/aps/aps-modules/aps-module/ports YANG schema element.
type Aps_ApsModule_Ports struct {
	ΛMetadata         []ygot.Annotation                     `path:"@" ygotAnnotation:"true"`
	CommonIn          *Aps_ApsModule_Ports_CommonIn         `path:"common-in" module:"openconfig-transport-line-protection"`
	ΛCommonIn         []ygot.Annotation                     `path:"@common-in" ygotAnnotation:"true"`
	CommonOutput      *Aps_ApsModule_Ports_CommonOutput     `path:"common-output" module:"openconfig-transport-line-protection"`
	ΛCommonOutput     []ygot.Annotation                     `path:"@common-output" ygotAnnotation:"true"`
	LinePrimaryIn     *Aps_ApsModule_Ports_LinePrimaryIn    `path:"line-primary-in" module:"openconfig-transport-line-protection"`
	ΛLinePrimaryIn    []ygot.Annotation                     `path:"@line-primary-in" ygotAnnotation:"true"`
	LinePrimaryOut    *Aps_ApsModule_Ports_LinePrimaryOut   `path:"line-primary-out" module:"openconfig-transport-line-protection"`
	ΛLinePrimaryOut   []ygot.Annotation                     `path:"@line-primary-out" ygotAnnotation:"true"`
	LineSecondaryIn   *Aps_ApsModule_Ports_LineSecondaryIn  `path:"line-secondary-in" module:"openconfig-transport-line-protection"`
	ΛLineSecondaryIn  []ygot.Annotation                     `path:"@line-secondary-in" ygotAnnotation:"true"`
	LineSecondaryOut  *Aps_ApsModule_Ports_LineSecondaryOut `path:"line-secondary-out" module:"openconfig-transport-line-protection"`
	ΛLineSecondaryOut []ygot.Annotation                     `path:"@line-secondary-out" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Aps_ApsModule_Ports implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Aps_ApsModule_Ports) IsYANGGoStruct() {}

// GetOrCreateCommonIn retrieves the value of the CommonIn field
// or returns the existing field if it already exists.
func (t *Aps_ApsModule_Ports) GetOrCreateCommonIn() *Aps_ApsModule_Ports_CommonIn {
	if t.CommonIn != nil {
		return t.CommonIn
	}
	t.CommonIn = &Aps_ApsModule_Ports_CommonIn{}
	return t.CommonIn
}

// GetOrCreateCommonOutput retrieves the value of the CommonOutput field
// or returns the existing field if it already exists.
func (t *Aps_ApsModule_Ports) GetOrCreateCommonOutput() *Aps_ApsModule_Ports_CommonOutput {
	if t.CommonOutput != nil {
		return t.CommonOutput
	}
	t.CommonOutput = &Aps_ApsModule_Ports_CommonOutput{}
	return t.CommonOutput
}

// GetOrCreateLinePrimaryIn retrieves the value of the LinePrimaryIn field
// or returns the existing field if it already exists.
func (t *Aps_ApsModule_Ports) GetOrCreateLinePrimaryIn() *Aps_ApsModule_Ports_LinePrimaryIn {
	if t.LinePrimaryIn != nil {
		return t.LinePrimaryIn
	}
	t.LinePrimaryIn = &Aps_ApsModule_Ports_LinePrimaryIn{}
	return t.LinePrimaryIn
}

// GetOrCreateLinePrimaryOut retrieves the value of the LinePrimaryOut field
// or returns the existing field if it already exists.
func (t *Aps_ApsModule_Ports) GetOrCreateLinePrimaryOut() *Aps_ApsModule_Ports_LinePrimaryOut {
	if t.LinePrimaryOut != nil {
		return t.LinePrimaryOut
	}
	t.LinePrimaryOut = &Aps_ApsModule_Ports_LinePrimaryOut{}
	return t.LinePrimaryOut
}

// GetOrCreateLineSecondaryIn retrieves the value of the LineSecondaryIn field
// or returns the existing field if it already exists.
func (t *Aps_ApsModule_Ports) GetOrCreateLineSecondaryIn() *Aps_ApsModule_Ports_LineSecondaryIn {
	if t.LineSecondaryIn != nil {
		return t.LineSecondaryIn
	}
	t.LineSecondaryIn = &Aps_ApsModule_Ports_LineSecondaryIn{}
	return t.LineSecondaryIn
}

// GetOrCreateLineSecondaryOut retrieves the value of the LineSecondaryOut field
// or returns the existing field if it already exists.
func (t *Aps_ApsModule_Ports) GetOrCreateLineSecondaryOut() *Aps_ApsModule_Ports_LineSecondaryOut {
	if t.LineSecondaryOut != nil {
		return t.LineSecondaryOut
	}
	t.LineSecondaryOut = &Aps_ApsModule_Ports_LineSecondaryOut{}
	return t.LineSecondaryOut
}

// GetCommonIn returns the value of the CommonIn struct pointer
// from Aps_ApsModule_Ports. If the receiver or the field CommonIn is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Aps_ApsModule_Ports) GetCommonIn() *Aps_ApsModule_Ports_CommonIn {
	if t != nil && t.CommonIn != nil {
		return t.CommonIn
	}
	return nil
}

// GetCommonOutput returns the value of the CommonOutput struct pointer
// from Aps_ApsModule_Ports. If the receiver or the field CommonOutput is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Aps_ApsModule_Ports) GetCommonOutput() *Aps_ApsModule_Ports_CommonOutput {
	if t != nil && t.CommonOutput != nil {
		return t.CommonOutput
	}
	return nil
}

// GetLinePrimaryIn returns the value of the LinePrimaryIn struct pointer
// from Aps_ApsModule_Ports. If the receiver or the field LinePrimaryIn is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Aps_ApsModule_Ports) GetLinePrimaryIn() *Aps_ApsModule_Ports_LinePrimaryIn {
	if t != nil && t.LinePrimaryIn != nil {
		return t.LinePrimaryIn
	}
	return nil
}

// GetLinePrimaryOut returns the value of the LinePrimaryOut struct pointer
// from Aps_ApsModule_Ports. If the receiver or the field LinePrimaryOut is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Aps_ApsModule_Ports) GetLinePrimaryOut() *Aps_ApsModule_Ports_LinePrimaryOut {
	if t != nil && t.LinePrimaryOut != nil {
		return t.LinePrimaryOut
	}
	return nil
}

// GetLineSecondaryIn returns the value of the LineSecondaryIn struct pointer
// from Aps_ApsModule_Ports. If the receiver or the field LineSecondaryIn is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Aps_ApsModule_Ports) GetLineSecondaryIn() *Aps_ApsModule_Ports_LineSecondaryIn {
	if t != nil && t.LineSecondaryIn != nil {
		return t.LineSecondaryIn
	}
	return nil
}

// GetLineSecondaryOut returns the value of the LineSecondaryOut struct pointer
// from Aps_ApsModule_Ports. If the receiver or the field LineSecondaryOut is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Aps_ApsModule_Ports) GetLineSecondaryOut() *Aps_ApsModule_Ports_LineSecondaryOut {
	if t != nil && t.LineSecondaryOut != nil {
		return t.LineSecondaryOut
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the Aps_ApsModule_Ports
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Aps_ApsModule_Ports) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.CommonIn.PopulateDefaults()
	t.CommonOutput.PopulateDefaults()
	t.LinePrimaryIn.PopulateDefaults()
	t.LinePrimaryOut.PopulateDefaults()
	t.LineSecondaryIn.PopulateDefaults()
	t.LineSecondaryOut.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Aps_ApsModule_Ports"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Aps_ApsModule_Ports) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Aps_ApsModule_Ports.
func (*Aps_ApsModule_Ports) ΛBelongingModule() string {
	return "openconfig-transport-line-protection"
}

// Aps_ApsModule_Ports_CommonIn represents the /openconfig-transport-line-protection/aps/aps-modules/aps-module/ports/common-in YANG schema element.
type Aps_ApsModule_Ports_CommonIn struct {
	ΛMetadata          []ygot.Annotation                          `path:"@" ygotAnnotation:"true"`
	Attenuation        *float64                                   `path:"state/attenuation" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛAttenuation       []ygot.Annotation                          `path:"state/@attenuation" ygotAnnotation:"true"`
	Enabled            *bool                                      `path:"config/enabled" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛEnabled           []ygot.Annotation                          `path:"config/@enabled" ygotAnnotation:"true"`
	OpticalPower       *Aps_ApsModule_Ports_CommonIn_OpticalPower `path:"state/optical-power" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛOpticalPower      []ygot.Annotation                          `path:"state/@optical-power" ygotAnnotation:"true"`
	TargetAttenuation  *float64                                   `path:"config/target-attenuation" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛTargetAttenuation []ygot.Annotation                          `path:"config/@target-attenuation" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Aps_ApsModule_Ports_CommonIn implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Aps_ApsModule_Ports_CommonIn) IsYANGGoStruct() {}

// GetOrCreateOpticalPower retrieves the value of the OpticalPower field
// or returns the existing field if it already exists.
func (t *Aps_ApsModule_Ports_CommonIn) GetOrCreateOpticalPower() *Aps_ApsModule_Ports_CommonIn_OpticalPower {
	if t.OpticalPower != nil {
		return t.OpticalPower
	}
	t.OpticalPower = &Aps_ApsModule_Ports_CommonIn_OpticalPower{}
	return t.OpticalPower
}

// GetOpticalPower returns the value of the OpticalPower struct pointer
// from Aps_ApsModule_Ports_CommonIn. If the receiver or the field OpticalPower is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Aps_ApsModule_Ports_CommonIn) GetOpticalPower() *Aps_ApsModule_Ports_CommonIn_OpticalPower {
	if t != nil && t.OpticalPower != nil {
		return t.OpticalPower
	}
	return nil
}

// GetAttenuation retrieves the value of the leaf Attenuation from the Aps_ApsModule_Ports_CommonIn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Attenuation is set, it can
// safely use t.GetAttenuation() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Attenuation == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonIn) GetAttenuation() float64 {
	if t == nil || t.Attenuation == nil {
		return 0.0
	}
	return *t.Attenuation
}

// GetEnabled retrieves the value of the leaf Enabled from the Aps_ApsModule_Ports_CommonIn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonIn) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return true
	}
	return *t.Enabled
}

// GetTargetAttenuation retrieves the value of the leaf TargetAttenuation from the Aps_ApsModule_Ports_CommonIn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TargetAttenuation is set, it can
// safely use t.GetTargetAttenuation() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TargetAttenuation == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonIn) GetTargetAttenuation() float64 {
	if t == nil || t.TargetAttenuation == nil {
		return 0.0
	}
	return *t.TargetAttenuation
}

// PopulateDefaults recursively populates unset leaf fields in the Aps_ApsModule_Ports_CommonIn
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Aps_ApsModule_Ports_CommonIn) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = true
		t.Enabled = &v
	}
	t.OpticalPower.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_CommonIn) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Aps_ApsModule_Ports_CommonIn"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_CommonIn) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Aps_ApsModule_Ports_CommonIn) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Aps_ApsModule_Ports_CommonIn.
func (*Aps_ApsModule_Ports_CommonIn) ΛBelongingModule() string {
	return "openconfig-transport-line-protection"
}

// Aps_ApsModule_Ports_CommonIn_OpticalPower represents the /openconfig-transport-line-protection/aps/aps-modules/aps-module/ports/common-in/state/optical-power YANG schema element.
type Aps_ApsModule_Ports_CommonIn_OpticalPower struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-transport-line-protection"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-transport-line-protection"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-transport-line-protection"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-transport-line-protection"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-transport-line-protection"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-transport-line-protection"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-transport-line-protection"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Aps_ApsModule_Ports_CommonIn_OpticalPower implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Aps_ApsModule_Ports_CommonIn_OpticalPower) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Aps_ApsModule_Ports_CommonIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonIn_OpticalPower) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Aps_ApsModule_Ports_CommonIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonIn_OpticalPower) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Aps_ApsModule_Ports_CommonIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonIn_OpticalPower) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Aps_ApsModule_Ports_CommonIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonIn_OpticalPower) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Aps_ApsModule_Ports_CommonIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonIn_OpticalPower) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Aps_ApsModule_Ports_CommonIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonIn_OpticalPower) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Aps_ApsModule_Ports_CommonIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonIn_OpticalPower) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Aps_ApsModule_Ports_CommonIn_OpticalPower
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Aps_ApsModule_Ports_CommonIn_OpticalPower) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_CommonIn_OpticalPower) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Aps_ApsModule_Ports_CommonIn_OpticalPower"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_CommonIn_OpticalPower) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Aps_ApsModule_Ports_CommonIn_OpticalPower) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Aps_ApsModule_Ports_CommonIn_OpticalPower.
func (*Aps_ApsModule_Ports_CommonIn_OpticalPower) ΛBelongingModule() string {
	return "openconfig-transport-line-protection"
}

// Aps_ApsModule_Ports_CommonOutput represents the /openconfig-transport-line-protection/aps/aps-modules/aps-module/ports/common-output YANG schema element.
type Aps_ApsModule_Ports_CommonOutput struct {
	ΛMetadata          []ygot.Annotation                              `path:"@" ygotAnnotation:"true"`
	Attenuation        *float64                                       `path:"state/attenuation" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛAttenuation       []ygot.Annotation                              `path:"state/@attenuation" ygotAnnotation:"true"`
	OpticalPower       *Aps_ApsModule_Ports_CommonOutput_OpticalPower `path:"state/optical-power" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛOpticalPower      []ygot.Annotation                              `path:"state/@optical-power" ygotAnnotation:"true"`
	TargetAttenuation  *float64                                       `path:"config/target-attenuation" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛTargetAttenuation []ygot.Annotation                              `path:"config/@target-attenuation" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Aps_ApsModule_Ports_CommonOutput implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Aps_ApsModule_Ports_CommonOutput) IsYANGGoStruct() {}

// GetOrCreateOpticalPower retrieves the value of the OpticalPower field
// or returns the existing field if it already exists.
func (t *Aps_ApsModule_Ports_CommonOutput) GetOrCreateOpticalPower() *Aps_ApsModule_Ports_CommonOutput_OpticalPower {
	if t.OpticalPower != nil {
		return t.OpticalPower
	}
	t.OpticalPower = &Aps_ApsModule_Ports_CommonOutput_OpticalPower{}
	return t.OpticalPower
}

// GetOpticalPower returns the value of the OpticalPower struct pointer
// from Aps_ApsModule_Ports_CommonOutput. If the receiver or the field OpticalPower is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Aps_ApsModule_Ports_CommonOutput) GetOpticalPower() *Aps_ApsModule_Ports_CommonOutput_OpticalPower {
	if t != nil && t.OpticalPower != nil {
		return t.OpticalPower
	}
	return nil
}

// GetAttenuation retrieves the value of the leaf Attenuation from the Aps_ApsModule_Ports_CommonOutput
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Attenuation is set, it can
// safely use t.GetAttenuation() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Attenuation == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonOutput) GetAttenuation() float64 {
	if t == nil || t.Attenuation == nil {
		return 0.0
	}
	return *t.Attenuation
}

// GetTargetAttenuation retrieves the value of the leaf TargetAttenuation from the Aps_ApsModule_Ports_CommonOutput
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TargetAttenuation is set, it can
// safely use t.GetTargetAttenuation() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TargetAttenuation == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonOutput) GetTargetAttenuation() float64 {
	if t == nil || t.TargetAttenuation == nil {
		return 0.0
	}
	return *t.TargetAttenuation
}

// PopulateDefaults recursively populates unset leaf fields in the Aps_ApsModule_Ports_CommonOutput
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Aps_ApsModule_Ports_CommonOutput) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.OpticalPower.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_CommonOutput) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Aps_ApsModule_Ports_CommonOutput"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_CommonOutput) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Aps_ApsModule_Ports_CommonOutput) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Aps_ApsModule_Ports_CommonOutput.
func (*Aps_ApsModule_Ports_CommonOutput) ΛBelongingModule() string {
	return "openconfig-transport-line-protection"
}

// Aps_ApsModule_Ports_CommonOutput_OpticalPower represents the /openconfig-transport-line-protection/aps/aps-modules/aps-module/ports/common-output/state/optical-power YANG schema element.
type Aps_ApsModule_Ports_CommonOutput_OpticalPower struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-transport-line-protection"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-transport-line-protection"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-transport-line-protection"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-transport-line-protection"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-transport-line-protection"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-transport-line-protection"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-transport-line-protection"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Aps_ApsModule_Ports_CommonOutput_OpticalPower implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Aps_ApsModule_Ports_CommonOutput_OpticalPower) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Aps_ApsModule_Ports_CommonOutput_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonOutput_OpticalPower) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Aps_ApsModule_Ports_CommonOutput_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonOutput_OpticalPower) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Aps_ApsModule_Ports_CommonOutput_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonOutput_OpticalPower) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Aps_ApsModule_Ports_CommonOutput_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonOutput_OpticalPower) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Aps_ApsModule_Ports_CommonOutput_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonOutput_OpticalPower) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Aps_ApsModule_Ports_CommonOutput_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonOutput_OpticalPower) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Aps_ApsModule_Ports_CommonOutput_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_CommonOutput_OpticalPower) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Aps_ApsModule_Ports_CommonOutput_OpticalPower
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Aps_ApsModule_Ports_CommonOutput_OpticalPower) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_CommonOutput_OpticalPower) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Aps_ApsModule_Ports_CommonOutput_OpticalPower"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_CommonOutput_OpticalPower) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Aps_ApsModule_Ports_CommonOutput_OpticalPower) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Aps_ApsModule_Ports_CommonOutput_OpticalPower.
func (*Aps_ApsModule_Ports_CommonOutput_OpticalPower) ΛBelongingModule() string {
	return "openconfig-transport-line-protection"
}

// Aps_ApsModule_Ports_LinePrimaryIn represents the /openconfig-transport-line-protection/aps/aps-modules/aps-module/ports/line-primary-in YANG schema element.
type Aps_ApsModule_Ports_LinePrimaryIn struct {
	ΛMetadata          []ygot.Annotation                               `path:"@" ygotAnnotation:"true"`
	Attenuation        *float64                                        `path:"state/attenuation" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛAttenuation       []ygot.Annotation                               `path:"state/@attenuation" ygotAnnotation:"true"`
	Enabled            *bool                                           `path:"config/enabled" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛEnabled           []ygot.Annotation                               `path:"config/@enabled" ygotAnnotation:"true"`
	OpticalPower       *Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower `path:"state/optical-power" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛOpticalPower      []ygot.Annotation                               `path:"state/@optical-power" ygotAnnotation:"true"`
	TargetAttenuation  *float64                                        `path:"config/target-attenuation" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛTargetAttenuation []ygot.Annotation                               `path:"config/@target-attenuation" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Aps_ApsModule_Ports_LinePrimaryIn implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Aps_ApsModule_Ports_LinePrimaryIn) IsYANGGoStruct() {}

// GetOrCreateOpticalPower retrieves the value of the OpticalPower field
// or returns the existing field if it already exists.
func (t *Aps_ApsModule_Ports_LinePrimaryIn) GetOrCreateOpticalPower() *Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower {
	if t.OpticalPower != nil {
		return t.OpticalPower
	}
	t.OpticalPower = &Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower{}
	return t.OpticalPower
}

// GetOpticalPower returns the value of the OpticalPower struct pointer
// from Aps_ApsModule_Ports_LinePrimaryIn. If the receiver or the field OpticalPower is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Aps_ApsModule_Ports_LinePrimaryIn) GetOpticalPower() *Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower {
	if t != nil && t.OpticalPower != nil {
		return t.OpticalPower
	}
	return nil
}

// GetAttenuation retrieves the value of the leaf Attenuation from the Aps_ApsModule_Ports_LinePrimaryIn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Attenuation is set, it can
// safely use t.GetAttenuation() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Attenuation == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryIn) GetAttenuation() float64 {
	if t == nil || t.Attenuation == nil {
		return 0.0
	}
	return *t.Attenuation
}

// GetEnabled retrieves the value of the leaf Enabled from the Aps_ApsModule_Ports_LinePrimaryIn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryIn) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return true
	}
	return *t.Enabled
}

// GetTargetAttenuation retrieves the value of the leaf TargetAttenuation from the Aps_ApsModule_Ports_LinePrimaryIn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TargetAttenuation is set, it can
// safely use t.GetTargetAttenuation() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TargetAttenuation == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryIn) GetTargetAttenuation() float64 {
	if t == nil || t.TargetAttenuation == nil {
		return 0.0
	}
	return *t.TargetAttenuation
}

// PopulateDefaults recursively populates unset leaf fields in the Aps_ApsModule_Ports_LinePrimaryIn
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Aps_ApsModule_Ports_LinePrimaryIn) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = true
		t.Enabled = &v
	}
	t.OpticalPower.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_LinePrimaryIn) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Aps_ApsModule_Ports_LinePrimaryIn"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_LinePrimaryIn) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Aps_ApsModule_Ports_LinePrimaryIn) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Aps_ApsModule_Ports_LinePrimaryIn.
func (*Aps_ApsModule_Ports_LinePrimaryIn) ΛBelongingModule() string {
	return "openconfig-transport-line-protection"
}

// Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower represents the /openconfig-transport-line-protection/aps/aps-modules/aps-module/ports/line-primary-in/state/optical-power YANG schema element.
type Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-transport-line-protection"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-transport-line-protection"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-transport-line-protection"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-transport-line-protection"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-transport-line-protection"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-transport-line-protection"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-transport-line-protection"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower.
func (*Aps_ApsModule_Ports_LinePrimaryIn_OpticalPower) ΛBelongingModule() string {
	return "openconfig-transport-line-protection"
}

// Aps_ApsModule_Ports_LinePrimaryOut represents the /openconfig-transport-line-protection/aps/aps-modules/aps-module/ports/line-primary-out YANG schema element.
type Aps_ApsModule_Ports_LinePrimaryOut struct {
	ΛMetadata          []ygot.Annotation                                `path:"@" ygotAnnotation:"true"`
	Attenuation        *float64                                         `path:"state/attenuation" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛAttenuation       []ygot.Annotation                                `path:"state/@attenuation" ygotAnnotation:"true"`
	OpticalPower       *Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower `path:"state/optical-power" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛOpticalPower      []ygot.Annotation                                `path:"state/@optical-power" ygotAnnotation:"true"`
	TargetAttenuation  *float64                                         `path:"config/target-attenuation" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛTargetAttenuation []ygot.Annotation                                `path:"config/@target-attenuation" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Aps_ApsModule_Ports_LinePrimaryOut implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Aps_ApsModule_Ports_LinePrimaryOut) IsYANGGoStruct() {}

// GetOrCreateOpticalPower retrieves the value of the OpticalPower field
// or returns the existing field if it already exists.
func (t *Aps_ApsModule_Ports_LinePrimaryOut) GetOrCreateOpticalPower() *Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower {
	if t.OpticalPower != nil {
		return t.OpticalPower
	}
	t.OpticalPower = &Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower{}
	return t.OpticalPower
}

// GetOpticalPower returns the value of the OpticalPower struct pointer
// from Aps_ApsModule_Ports_LinePrimaryOut. If the receiver or the field OpticalPower is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Aps_ApsModule_Ports_LinePrimaryOut) GetOpticalPower() *Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower {
	if t != nil && t.OpticalPower != nil {
		return t.OpticalPower
	}
	return nil
}

// GetAttenuation retrieves the value of the leaf Attenuation from the Aps_ApsModule_Ports_LinePrimaryOut
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Attenuation is set, it can
// safely use t.GetAttenuation() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Attenuation == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryOut) GetAttenuation() float64 {
	if t == nil || t.Attenuation == nil {
		return 0.0
	}
	return *t.Attenuation
}

// GetTargetAttenuation retrieves the value of the leaf TargetAttenuation from the Aps_ApsModule_Ports_LinePrimaryOut
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TargetAttenuation is set, it can
// safely use t.GetTargetAttenuation() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TargetAttenuation == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryOut) GetTargetAttenuation() float64 {
	if t == nil || t.TargetAttenuation == nil {
		return 0.0
	}
	return *t.TargetAttenuation
}

// PopulateDefaults recursively populates unset leaf fields in the Aps_ApsModule_Ports_LinePrimaryOut
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Aps_ApsModule_Ports_LinePrimaryOut) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.OpticalPower.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_LinePrimaryOut) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Aps_ApsModule_Ports_LinePrimaryOut"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_LinePrimaryOut) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Aps_ApsModule_Ports_LinePrimaryOut) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Aps_ApsModule_Ports_LinePrimaryOut.
func (*Aps_ApsModule_Ports_LinePrimaryOut) ΛBelongingModule() string {
	return "openconfig-transport-line-protection"
}

// Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower represents the /openconfig-transport-line-protection/aps/aps-modules/aps-module/ports/line-primary-out/state/optical-power YANG schema element.
type Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-transport-line-protection"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-transport-line-protection"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-transport-line-protection"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-transport-line-protection"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-transport-line-protection"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-transport-line-protection"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-transport-line-protection"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower.
func (*Aps_ApsModule_Ports_LinePrimaryOut_OpticalPower) ΛBelongingModule() string {
	return "openconfig-transport-line-protection"
}

// Aps_ApsModule_Ports_LineSecondaryIn represents the /openconfig-transport-line-protection/aps/aps-modules/aps-module/ports/line-secondary-in YANG schema element.
type Aps_ApsModule_Ports_LineSecondaryIn struct {
	ΛMetadata          []ygot.Annotation                                 `path:"@" ygotAnnotation:"true"`
	Attenuation        *float64                                          `path:"state/attenuation" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛAttenuation       []ygot.Annotation                                 `path:"state/@attenuation" ygotAnnotation:"true"`
	Enabled            *bool                                             `path:"config/enabled" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛEnabled           []ygot.Annotation                                 `path:"config/@enabled" ygotAnnotation:"true"`
	OpticalPower       *Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower `path:"state/optical-power" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛOpticalPower      []ygot.Annotation                                 `path:"state/@optical-power" ygotAnnotation:"true"`
	TargetAttenuation  *float64                                          `path:"config/target-attenuation" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛTargetAttenuation []ygot.Annotation                                 `path:"config/@target-attenuation" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Aps_ApsModule_Ports_LineSecondaryIn implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Aps_ApsModule_Ports_LineSecondaryIn) IsYANGGoStruct() {}

// GetOrCreateOpticalPower retrieves the value of the OpticalPower field
// or returns the existing field if it already exists.
func (t *Aps_ApsModule_Ports_LineSecondaryIn) GetOrCreateOpticalPower() *Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower {
	if t.OpticalPower != nil {
		return t.OpticalPower
	}
	t.OpticalPower = &Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower{}
	return t.OpticalPower
}

// GetOpticalPower returns the value of the OpticalPower struct pointer
// from Aps_ApsModule_Ports_LineSecondaryIn. If the receiver or the field OpticalPower is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Aps_ApsModule_Ports_LineSecondaryIn) GetOpticalPower() *Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower {
	if t != nil && t.OpticalPower != nil {
		return t.OpticalPower
	}
	return nil
}

// GetAttenuation retrieves the value of the leaf Attenuation from the Aps_ApsModule_Ports_LineSecondaryIn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Attenuation is set, it can
// safely use t.GetAttenuation() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Attenuation == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryIn) GetAttenuation() float64 {
	if t == nil || t.Attenuation == nil {
		return 0.0
	}
	return *t.Attenuation
}

// GetEnabled retrieves the value of the leaf Enabled from the Aps_ApsModule_Ports_LineSecondaryIn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryIn) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return true
	}
	return *t.Enabled
}

// GetTargetAttenuation retrieves the value of the leaf TargetAttenuation from the Aps_ApsModule_Ports_LineSecondaryIn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TargetAttenuation is set, it can
// safely use t.GetTargetAttenuation() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TargetAttenuation == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryIn) GetTargetAttenuation() float64 {
	if t == nil || t.TargetAttenuation == nil {
		return 0.0
	}
	return *t.TargetAttenuation
}

// PopulateDefaults recursively populates unset leaf fields in the Aps_ApsModule_Ports_LineSecondaryIn
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Aps_ApsModule_Ports_LineSecondaryIn) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = true
		t.Enabled = &v
	}
	t.OpticalPower.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_LineSecondaryIn) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Aps_ApsModule_Ports_LineSecondaryIn"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_LineSecondaryIn) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Aps_ApsModule_Ports_LineSecondaryIn) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Aps_ApsModule_Ports_LineSecondaryIn.
func (*Aps_ApsModule_Ports_LineSecondaryIn) ΛBelongingModule() string {
	return "openconfig-transport-line-protection"
}

// Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower represents the /openconfig-transport-line-protection/aps/aps-modules/aps-module/ports/line-secondary-in/state/optical-power YANG schema element.
type Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-transport-line-protection"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-transport-line-protection"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-transport-line-protection"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-transport-line-protection"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-transport-line-protection"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-transport-line-protection"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-transport-line-protection"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower.
func (*Aps_ApsModule_Ports_LineSecondaryIn_OpticalPower) ΛBelongingModule() string {
	return "openconfig-transport-line-protection"
}

// Aps_ApsModule_Ports_LineSecondaryOut represents the /openconfig-transport-line-protection/aps/aps-modules/aps-module/ports/line-secondary-out YANG schema element.
type Aps_ApsModule_Ports_LineSecondaryOut struct {
	ΛMetadata          []ygot.Annotation                                  `path:"@" ygotAnnotation:"true"`
	Attenuation        *float64                                           `path:"state/attenuation" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛAttenuation       []ygot.Annotation                                  `path:"state/@attenuation" ygotAnnotation:"true"`
	OpticalPower       *Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower `path:"state/optical-power" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛOpticalPower      []ygot.Annotation                                  `path:"state/@optical-power" ygotAnnotation:"true"`
	TargetAttenuation  *float64                                           `path:"config/target-attenuation" module:"openconfig-transport-line-protection/openconfig-transport-line-protection"`
	ΛTargetAttenuation []ygot.Annotation                                  `path:"config/@target-attenuation" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Aps_ApsModule_Ports_LineSecondaryOut implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Aps_ApsModule_Ports_LineSecondaryOut) IsYANGGoStruct() {}

// GetOrCreateOpticalPower retrieves the value of the OpticalPower field
// or returns the existing field if it already exists.
func (t *Aps_ApsModule_Ports_LineSecondaryOut) GetOrCreateOpticalPower() *Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower {
	if t.OpticalPower != nil {
		return t.OpticalPower
	}
	t.OpticalPower = &Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower{}
	return t.OpticalPower
}

// GetOpticalPower returns the value of the OpticalPower struct pointer
// from Aps_ApsModule_Ports_LineSecondaryOut. If the receiver or the field OpticalPower is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Aps_ApsModule_Ports_LineSecondaryOut) GetOpticalPower() *Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower {
	if t != nil && t.OpticalPower != nil {
		return t.OpticalPower
	}
	return nil
}

// GetAttenuation retrieves the value of the leaf Attenuation from the Aps_ApsModule_Ports_LineSecondaryOut
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Attenuation is set, it can
// safely use t.GetAttenuation() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Attenuation == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryOut) GetAttenuation() float64 {
	if t == nil || t.Attenuation == nil {
		return 0.0
	}
	return *t.Attenuation
}

// GetTargetAttenuation retrieves the value of the leaf TargetAttenuation from the Aps_ApsModule_Ports_LineSecondaryOut
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TargetAttenuation is set, it can
// safely use t.GetTargetAttenuation() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TargetAttenuation == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryOut) GetTargetAttenuation() float64 {
	if t == nil || t.TargetAttenuation == nil {
		return 0.0
	}
	return *t.TargetAttenuation
}

// PopulateDefaults recursively populates unset leaf fields in the Aps_ApsModule_Ports_LineSecondaryOut
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Aps_ApsModule_Ports_LineSecondaryOut) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.OpticalPower.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_LineSecondaryOut) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Aps_ApsModule_Ports_LineSecondaryOut"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_LineSecondaryOut) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Aps_ApsModule_Ports_LineSecondaryOut) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Aps_ApsModule_Ports_LineSecondaryOut.
func (*Aps_ApsModule_Ports_LineSecondaryOut) ΛBelongingModule() string {
	return "openconfig-transport-line-protection"
}

// Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower represents the /openconfig-transport-line-protection/aps/aps-modules/aps-module/ports/line-secondary-out/state/optical-power YANG schema element.
type Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-transport-line-protection"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-transport-line-protection"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-transport-line-protection"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-transport-line-protection"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-transport-line-protection"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-transport-line-protection"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-transport-line-protection"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower.
func (*Aps_ApsModule_Ports_LineSecondaryOut_OpticalPower) ΛBelongingModule() string {
	return "openconfig-transport-line-protection"
}

// Bfd represents the /openconfig-bfd/bfd YANG schema element.
type Bfd struct {
	ΛMetadata  []ygot.Annotation         `path:"@" ygotAnnotation:"true"`
	Interface  map[string]*Bfd_Interface `path:"interfaces/interface" module:"openconfig-bfd/openconfig-bfd"`
	ΛInterface []ygot.Annotation         `path:"interfaces/@interface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Bfd implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Bfd) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// Bfd struct. The keys of the list are populated from the input
// arguments.
func (t *Bfd) NewInterface(Id string) (*Bfd_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Bfd_Interface)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &Bfd_Interface{
		Id: &Id,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the Bfd struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Bfd) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.Id = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from Bfd.
//
// It initializes the field if not already initialized.
func (t *Bfd) GetOrCreateInterfaceMap() map[string]*Bfd_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*Bfd_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver Bfd. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Bfd) GetOrCreateInterface(Id string) *Bfd_Interface {

	key := Id

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of Bfd. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Bfd) GetInterface(Id string) *Bfd_Interface {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied Bfd_Interface struct to the
// list Interface of Bfd. If the key value(s) specified in
// the supplied Bfd_Interface already exist in the list, an error is
// returned.
func (t *Bfd) AppendInterface(v *Bfd_Interface) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Bfd_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the Bfd
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Bfd) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Bfd) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Bfd"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Bfd) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Bfd) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Bfd.
func (*Bfd) ΛBelongingModule() string {
	return "openconfig-bfd"
}

// Bfd_Interface represents the /openconfig-bfd/bfd/interfaces/interface YANG schema element.
type Bfd_Interface struct {
	ΛMetadata                 []ygot.Annotation                         `path:"@" ygotAnnotation:"true"`
	DesiredMinimumTxInterval  *uint32                                   `path:"config/desired-minimum-tx-interval" module:"openconfig-bfd/openconfig-bfd"`
	ΛDesiredMinimumTxInterval []ygot.Annotation                         `path:"config/@desired-minimum-tx-interval" ygotAnnotation:"true"`
	DetectionMultiplier       *uint8                                    `path:"config/detection-multiplier" module:"openconfig-bfd/openconfig-bfd"`
	ΛDetectionMultiplier      []ygot.Annotation                         `path:"config/@detection-multiplier" ygotAnnotation:"true"`
	EnablePerMemberLink       *bool                                     `path:"config/enable-per-member-link" module:"openconfig-bfd/openconfig-bfd"`
	ΛEnablePerMemberLink      []ygot.Annotation                         `path:"config/@enable-per-member-link" ygotAnnotation:"true"`
	Enabled                   *bool                                     `path:"config/enabled" module:"openconfig-bfd/openconfig-bfd"`
	ΛEnabled                  []ygot.Annotation                         `path:"config/@enabled" ygotAnnotation:"true"`
	Id                        *string                                   `path:"config/id|id" module:"openconfig-bfd/openconfig-bfd|openconfig-bfd"`
	ΛId                       []ygot.Annotation                         `path:"config/@id|@id" ygotAnnotation:"true"`
	InterfaceRef              *Bfd_Interface_InterfaceRef               `path:"interface-ref" module:"openconfig-bfd"`
	ΛInterfaceRef             []ygot.Annotation                         `path:"@interface-ref" ygotAnnotation:"true"`
	LocalAddress              *string                                   `path:"config/local-address" module:"openconfig-bfd/openconfig-bfd"`
	ΛLocalAddress             []ygot.Annotation                         `path:"config/@local-address" ygotAnnotation:"true"`
	MicroBfdSession           map[string]*Bfd_Interface_MicroBfdSession `path:"micro-bfd-sessions/micro-bfd-session" module:"openconfig-bfd/openconfig-bfd"`
	ΛMicroBfdSession          []ygot.Annotation                         `path:"micro-bfd-sessions/@micro-bfd-session" ygotAnnotation:"true"`
	Peer                      map[string]*Bfd_Interface_Peer            `path:"peers/peer" module:"openconfig-bfd/openconfig-bfd"`
	ΛPeer                     []ygot.Annotation                         `path:"peers/@peer" ygotAnnotation:"true"`
	RequiredMinimumReceive    *uint32                                   `path:"config/required-minimum-receive" module:"openconfig-bfd/openconfig-bfd"`
	ΛRequiredMinimumReceive   []ygot.Annotation                         `path:"config/@required-minimum-receive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Bfd_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Bfd_Interface) IsYANGGoStruct() {}

// NewMicroBfdSession creates a new entry in the MicroBfdSession list of the
// Bfd_Interface struct. The keys of the list are populated from the input
// arguments.
func (t *Bfd_Interface) NewMicroBfdSession(MemberInterface string) (*Bfd_Interface_MicroBfdSession, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.MicroBfdSession == nil {
		t.MicroBfdSession = make(map[string]*Bfd_Interface_MicroBfdSession)
	}

	key := MemberInterface

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.MicroBfdSession[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list MicroBfdSession", key)
	}

	t.MicroBfdSession[key] = &Bfd_Interface_MicroBfdSession{
		MemberInterface: &MemberInterface,
	}

	return t.MicroBfdSession[key], nil
}

// RenameMicroBfdSession renames an entry in the list MicroBfdSession within
// the Bfd_Interface struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Bfd_Interface) RenameMicroBfdSession(oldK, newK string) error {
	if _, ok := t.MicroBfdSession[newK]; ok {
		return fmt.Errorf("key %v already exists in MicroBfdSession", newK)
	}

	e, ok := t.MicroBfdSession[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in MicroBfdSession", oldK)
	}
	e.MemberInterface = &newK

	t.MicroBfdSession[newK] = e
	delete(t.MicroBfdSession, oldK)
	return nil
}

// GetOrCreateMicroBfdSessionMap returns the list (map) from Bfd_Interface.
//
// It initializes the field if not already initialized.
func (t *Bfd_Interface) GetOrCreateMicroBfdSessionMap() map[string]*Bfd_Interface_MicroBfdSession {
	if t.MicroBfdSession == nil {
		t.MicroBfdSession = make(map[string]*Bfd_Interface_MicroBfdSession)
	}
	return t.MicroBfdSession
}

// GetOrCreateMicroBfdSession retrieves the value with the specified keys from
// the receiver Bfd_Interface. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Bfd_Interface) GetOrCreateMicroBfdSession(MemberInterface string) *Bfd_Interface_MicroBfdSession {

	key := MemberInterface

	if v, ok := t.MicroBfdSession[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewMicroBfdSession(MemberInterface)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateMicroBfdSession got unexpected error: %v", err))
	}
	return v
}

// GetMicroBfdSession retrieves the value with the specified key from
// the MicroBfdSession map field of Bfd_Interface. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Bfd_Interface) GetMicroBfdSession(MemberInterface string) *Bfd_Interface_MicroBfdSession {

	if t == nil {
		return nil
	}

	key := MemberInterface

	if lm, ok := t.MicroBfdSession[key]; ok {
		return lm
	}
	return nil
}

// AppendMicroBfdSession appends the supplied Bfd_Interface_MicroBfdSession struct to the
// list MicroBfdSession of Bfd_Interface. If the key value(s) specified in
// the supplied Bfd_Interface_MicroBfdSession already exist in the list, an error is
// returned.
func (t *Bfd_Interface) AppendMicroBfdSession(v *Bfd_Interface_MicroBfdSession) error {
	if v.MemberInterface == nil {
		return fmt.Errorf("invalid nil key received for MemberInterface")
	}

	key := *v.MemberInterface

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.MicroBfdSession == nil {
		t.MicroBfdSession = make(map[string]*Bfd_Interface_MicroBfdSession)
	}

	if _, ok := t.MicroBfdSession[key]; ok {
		return fmt.Errorf("duplicate key for list MicroBfdSession %v", key)
	}

	t.MicroBfdSession[key] = v
	return nil
}

// NewPeer creates a new entry in the Peer list of the
// Bfd_Interface struct. The keys of the list are populated from the input
// arguments.
func (t *Bfd_Interface) NewPeer(LocalDiscriminator string) (*Bfd_Interface_Peer, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Peer == nil {
		t.Peer = make(map[string]*Bfd_Interface_Peer)
	}

	key := LocalDiscriminator

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Peer[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Peer", key)
	}

	t.Peer[key] = &Bfd_Interface_Peer{
		LocalDiscriminator: &LocalDiscriminator,
	}

	return t.Peer[key], nil
}

// RenamePeer renames an entry in the list Peer within
// the Bfd_Interface struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Bfd_Interface) RenamePeer(oldK, newK string) error {
	if _, ok := t.Peer[newK]; ok {
		return fmt.Errorf("key %v already exists in Peer", newK)
	}

	e, ok := t.Peer[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Peer", oldK)
	}
	e.LocalDiscriminator = &newK

	t.Peer[newK] = e
	delete(t.Peer, oldK)
	return nil
}

// GetOrCreatePeerMap returns the list (map) from Bfd_Interface.
//
// It initializes the field if not already initialized.
func (t *Bfd_Interface) GetOrCreatePeerMap() map[string]*Bfd_Interface_Peer {
	if t.Peer == nil {
		t.Peer = make(map[string]*Bfd_Interface_Peer)
	}
	return t.Peer
}

// GetOrCreatePeer retrieves the value with the specified keys from
// the receiver Bfd_Interface. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Bfd_Interface) GetOrCreatePeer(LocalDiscriminator string) *Bfd_Interface_Peer {

	key := LocalDiscriminator

	if v, ok := t.Peer[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPeer(LocalDiscriminator)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePeer got unexpected error: %v", err))
	}
	return v
}

// GetPeer retrieves the value with the specified key from
// the Peer map field of Bfd_Interface. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Bfd_Interface) GetPeer(LocalDiscriminator string) *Bfd_Interface_Peer {

	if t == nil {
		return nil
	}

	key := LocalDiscriminator

	if lm, ok := t.Peer[key]; ok {
		return lm
	}
	return nil
}

// AppendPeer appends the supplied Bfd_Interface_Peer struct to the
// list Peer of Bfd_Interface. If the key value(s) specified in
// the supplied Bfd_Interface_Peer already exist in the list, an error is
// returned.
func (t *Bfd_Interface) AppendPeer(v *Bfd_Interface_Peer) error {
	if v.LocalDiscriminator == nil {
		return fmt.Errorf("invalid nil key received for LocalDiscriminator")
	}

	key := *v.LocalDiscriminator

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Peer == nil {
		t.Peer = make(map[string]*Bfd_Interface_Peer)
	}

	if _, ok := t.Peer[key]; ok {
		return fmt.Errorf("duplicate key for list Peer %v", key)
	}

	t.Peer[key] = v
	return nil
}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *Bfd_Interface) GetOrCreateInterfaceRef() *Bfd_Interface_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &Bfd_Interface_InterfaceRef{}
	return t.InterfaceRef
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from Bfd_Interface. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Bfd_Interface) GetInterfaceRef() *Bfd_Interface_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetDesiredMinimumTxInterval retrieves the value of the leaf DesiredMinimumTxInterval from the Bfd_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesiredMinimumTxInterval is set, it can
// safely use t.GetDesiredMinimumTxInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesiredMinimumTxInterval == nil' before retrieving the leaf's value.
func (t *Bfd_Interface) GetDesiredMinimumTxInterval() uint32 {
	if t == nil || t.DesiredMinimumTxInterval == nil {
		return 0
	}
	return *t.DesiredMinimumTxInterval
}

// GetDetectionMultiplier retrieves the value of the leaf DetectionMultiplier from the Bfd_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DetectionMultiplier is set, it can
// safely use t.GetDetectionMultiplier() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DetectionMultiplier == nil' before retrieving the leaf's value.
func (t *Bfd_Interface) GetDetectionMultiplier() uint8 {
	if t == nil || t.DetectionMultiplier == nil {
		return 0
	}
	return *t.DetectionMultiplier
}

// GetEnablePerMemberLink retrieves the value of the leaf EnablePerMemberLink from the Bfd_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EnablePerMemberLink is set, it can
// safely use t.GetEnablePerMemberLink() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EnablePerMemberLink == nil' before retrieving the leaf's value.
func (t *Bfd_Interface) GetEnablePerMemberLink() bool {
	if t == nil || t.EnablePerMemberLink == nil {
		return false
	}
	return *t.EnablePerMemberLink
}

// GetEnabled retrieves the value of the leaf Enabled from the Bfd_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Bfd_Interface) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetId retrieves the value of the leaf Id from the Bfd_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *Bfd_Interface) GetId() string {
	if t == nil || t.Id == nil {
		return ""
	}
	return *t.Id
}

// GetLocalAddress retrieves the value of the leaf LocalAddress from the Bfd_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalAddress is set, it can
// safely use t.GetLocalAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalAddress == nil' before retrieving the leaf's value.
func (t *Bfd_Interface) GetLocalAddress() string {
	if t == nil || t.LocalAddress == nil {
		return ""
	}
	return *t.LocalAddress
}

// GetRequiredMinimumReceive retrieves the value of the leaf RequiredMinimumReceive from the Bfd_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RequiredMinimumReceive is set, it can
// safely use t.GetRequiredMinimumReceive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RequiredMinimumReceive == nil' before retrieving the leaf's value.
func (t *Bfd_Interface) GetRequiredMinimumReceive() uint32 {
	if t == nil || t.RequiredMinimumReceive == nil {
		return 0
	}
	return *t.RequiredMinimumReceive
}

// PopulateDefaults recursively populates unset leaf fields in the Bfd_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Bfd_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.EnablePerMemberLink == nil {
		var v bool = false
		t.EnablePerMemberLink = &v
	}
	t.InterfaceRef.PopulateDefaults()
	for _, e := range t.MicroBfdSession {
		e.PopulateDefaults()
	}
	for _, e := range t.Peer {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the Bfd_Interface struct, which is a YANG list entry.
func (t *Bfd_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Bfd_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Bfd_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Bfd_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Bfd_Interface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Bfd_Interface.
func (*Bfd_Interface) ΛBelongingModule() string {
	return "openconfig-bfd"
}

// Bfd_Interface_InterfaceRef represents the /openconfig-bfd/bfd/interfaces/interface/interface-ref YANG schema element.
type Bfd_Interface_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-bfd/openconfig-bfd"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-bfd/openconfig-bfd"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Bfd_Interface_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Bfd_Interface_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the Bfd_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the Bfd_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the Bfd_Interface_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Bfd_Interface_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Bfd_Interface_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Bfd_Interface_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Bfd_Interface_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Bfd_Interface_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Bfd_Interface_InterfaceRef.
func (*Bfd_Interface_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-bfd"
}

// Bfd_Interface_MicroBfdSession represents the /openconfig-bfd/bfd/interfaces/interface/micro-bfd-sessions/micro-bfd-session YANG schema element.
type Bfd_Interface_MicroBfdSession struct {
	ΛMetadata                      []ygot.Annotation                    `path:"@" ygotAnnotation:"true"`
	Async                          *Bfd_Interface_MicroBfdSession_Async `path:"state/async" module:"openconfig-bfd/openconfig-bfd"`
	ΛAsync                         []ygot.Annotation                    `path:"state/@async" ygotAnnotation:"true"`
	DemandModeRequested            *bool                                `path:"state/demand-mode-requested" module:"openconfig-bfd/openconfig-bfd"`
	ΛDemandModeRequested           []ygot.Annotation                    `path:"state/@demand-mode-requested" ygotAnnotation:"true"`
	FailureTransitions             *uint64                              `path:"state/failure-transitions" module:"openconfig-bfd/openconfig-bfd"`
	ΛFailureTransitions            []ygot.Annotation                    `path:"state/@failure-transitions" ygotAnnotation:"true"`
	LastFailureTime                *uint64                              `path:"state/last-failure-time" module:"openconfig-bfd/openconfig-bfd"`
	ΛLastFailureTime               []ygot.Annotation                    `path:"state/@last-failure-time" ygotAnnotation:"true"`
	LocalAddress                   *string                              `path:"config/local-address" module:"openconfig-bfd/openconfig-bfd"`
	ΛLocalAddress                  []ygot.Annotation                    `path:"config/@local-address" ygotAnnotation:"true"`
	LocalDiagnosticCode            E_Bfd_BfdDiagnosticCode              `path:"state/local-diagnostic-code" module:"openconfig-bfd/openconfig-bfd"`
	ΛLocalDiagnosticCode           []ygot.Annotation                    `path:"state/@local-diagnostic-code" ygotAnnotation:"true"`
	LocalDiscriminator             *string                              `path:"state/local-discriminator" module:"openconfig-bfd/openconfig-bfd"`
	ΛLocalDiscriminator            []ygot.Annotation                    `path:"state/@local-discriminator" ygotAnnotation:"true"`
	MemberInterface                *string                              `path:"config/member-interface|member-interface" module:"openconfig-bfd/openconfig-bfd|openconfig-bfd"`
	ΛMemberInterface               []ygot.Annotation                    `path:"config/@member-interface|@member-interface" ygotAnnotation:"true"`
	RemoteAddress                  *string                              `path:"config/remote-address" module:"openconfig-bfd/openconfig-bfd"`
	ΛRemoteAddress                 []ygot.Annotation                    `path:"config/@remote-address" ygotAnnotation:"true"`
	RemoteAuthenticationEnabled    *bool                                `path:"state/remote-authentication-enabled" module:"openconfig-bfd/openconfig-bfd"`
	ΛRemoteAuthenticationEnabled   []ygot.Annotation                    `path:"state/@remote-authentication-enabled" ygotAnnotation:"true"`
	RemoteControlPlaneIndependent  *bool                                `path:"state/remote-control-plane-independent" module:"openconfig-bfd/openconfig-bfd"`
	ΛRemoteControlPlaneIndependent []ygot.Annotation                    `path:"state/@remote-control-plane-independent" ygotAnnotation:"true"`
	RemoteDiagnosticCode           E_Bfd_BfdDiagnosticCode              `path:"state/remote-diagnostic-code" module:"openconfig-bfd/openconfig-bfd"`
	ΛRemoteDiagnosticCode          []ygot.Annotation                    `path:"state/@remote-diagnostic-code" ygotAnnotation:"true"`
	RemoteDiscriminator            *string                              `path:"state/remote-discriminator" module:"openconfig-bfd/openconfig-bfd"`
	ΛRemoteDiscriminator           []ygot.Annotation                    `path:"state/@remote-discriminator" ygotAnnotation:"true"`
	RemoteMinimumReceiveInterval   *uint32                              `path:"state/remote-minimum-receive-interval" module:"openconfig-bfd/openconfig-bfd"`
	ΛRemoteMinimumReceiveInterval  []ygot.Annotation                    `path:"state/@remote-minimum-receive-interval" ygotAnnotation:"true"`
	RemoteSessionState             E_Bfd_BfdSessionState                `path:"state/remote-session-state" module:"openconfig-bfd/openconfig-bfd"`
	ΛRemoteSessionState            []ygot.Annotation                    `path:"state/@remote-session-state" ygotAnnotation:"true"`
	SessionState                   E_Bfd_BfdSessionState                `path:"state/session-state" module:"openconfig-bfd/openconfig-bfd"`
	ΛSessionState                  []ygot.Annotation                    `path:"state/@session-state" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Bfd_Interface_MicroBfdSession implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Bfd_Interface_MicroBfdSession) IsYANGGoStruct() {}

// GetOrCreateAsync retrieves the value of the Async field
// or returns the existing field if it already exists.
func (t *Bfd_Interface_MicroBfdSession) GetOrCreateAsync() *Bfd_Interface_MicroBfdSession_Async {
	if t.Async != nil {
		return t.Async
	}
	t.Async = &Bfd_Interface_MicroBfdSession_Async{}
	return t.Async
}

// GetAsync returns the value of the Async struct pointer
// from Bfd_Interface_MicroBfdSession. If the receiver or the field Async is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Bfd_Interface_MicroBfdSession) GetAsync() *Bfd_Interface_MicroBfdSession_Async {
	if t != nil && t.Async != nil {
		return t.Async
	}
	return nil
}

// GetDemandModeRequested retrieves the value of the leaf DemandModeRequested from the Bfd_Interface_MicroBfdSession
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DemandModeRequested is set, it can
// safely use t.GetDemandModeRequested() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DemandModeRequested == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession) GetDemandModeRequested() bool {
	if t == nil || t.DemandModeRequested == nil {
		return false
	}
	return *t.DemandModeRequested
}

// GetFailureTransitions retrieves the value of the leaf FailureTransitions from the Bfd_Interface_MicroBfdSession
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FailureTransitions is set, it can
// safely use t.GetFailureTransitions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FailureTransitions == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession) GetFailureTransitions() uint64 {
	if t == nil || t.FailureTransitions == nil {
		return 0
	}
	return *t.FailureTransitions
}

// GetLastFailureTime retrieves the value of the leaf LastFailureTime from the Bfd_Interface_MicroBfdSession
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastFailureTime is set, it can
// safely use t.GetLastFailureTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastFailureTime == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession) GetLastFailureTime() uint64 {
	if t == nil || t.LastFailureTime == nil {
		return 0
	}
	return *t.LastFailureTime
}

// GetLocalAddress retrieves the value of the leaf LocalAddress from the Bfd_Interface_MicroBfdSession
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalAddress is set, it can
// safely use t.GetLocalAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalAddress == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession) GetLocalAddress() string {
	if t == nil || t.LocalAddress == nil {
		return ""
	}
	return *t.LocalAddress
}

// GetLocalDiagnosticCode retrieves the value of the leaf LocalDiagnosticCode from the Bfd_Interface_MicroBfdSession
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalDiagnosticCode is set, it can
// safely use t.GetLocalDiagnosticCode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalDiagnosticCode == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession) GetLocalDiagnosticCode() E_Bfd_BfdDiagnosticCode {
	if t == nil || t.LocalDiagnosticCode == 0 {
		return 0
	}
	return t.LocalDiagnosticCode
}

// GetLocalDiscriminator retrieves the value of the leaf LocalDiscriminator from the Bfd_Interface_MicroBfdSession
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalDiscriminator is set, it can
// safely use t.GetLocalDiscriminator() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalDiscriminator == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession) GetLocalDiscriminator() string {
	if t == nil || t.LocalDiscriminator == nil {
		return ""
	}
	return *t.LocalDiscriminator
}

// GetMemberInterface retrieves the value of the leaf MemberInterface from the Bfd_Interface_MicroBfdSession
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MemberInterface is set, it can
// safely use t.GetMemberInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MemberInterface == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession) GetMemberInterface() string {
	if t == nil || t.MemberInterface == nil {
		return ""
	}
	return *t.MemberInterface
}

// GetRemoteAddress retrieves the value of the leaf RemoteAddress from the Bfd_Interface_MicroBfdSession
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteAddress is set, it can
// safely use t.GetRemoteAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteAddress == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession) GetRemoteAddress() string {
	if t == nil || t.RemoteAddress == nil {
		return ""
	}
	return *t.RemoteAddress
}

// GetRemoteAuthenticationEnabled retrieves the value of the leaf RemoteAuthenticationEnabled from the Bfd_Interface_MicroBfdSession
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteAuthenticationEnabled is set, it can
// safely use t.GetRemoteAuthenticationEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteAuthenticationEnabled == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession) GetRemoteAuthenticationEnabled() bool {
	if t == nil || t.RemoteAuthenticationEnabled == nil {
		return false
	}
	return *t.RemoteAuthenticationEnabled
}

// GetRemoteControlPlaneIndependent retrieves the value of the leaf RemoteControlPlaneIndependent from the Bfd_Interface_MicroBfdSession
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteControlPlaneIndependent is set, it can
// safely use t.GetRemoteControlPlaneIndependent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteControlPlaneIndependent == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession) GetRemoteControlPlaneIndependent() bool {
	if t == nil || t.RemoteControlPlaneIndependent == nil {
		return false
	}
	return *t.RemoteControlPlaneIndependent
}

// GetRemoteDiagnosticCode retrieves the value of the leaf RemoteDiagnosticCode from the Bfd_Interface_MicroBfdSession
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteDiagnosticCode is set, it can
// safely use t.GetRemoteDiagnosticCode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteDiagnosticCode == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession) GetRemoteDiagnosticCode() E_Bfd_BfdDiagnosticCode {
	if t == nil || t.RemoteDiagnosticCode == 0 {
		return 0
	}
	return t.RemoteDiagnosticCode
}

// GetRemoteDiscriminator retrieves the value of the leaf RemoteDiscriminator from the Bfd_Interface_MicroBfdSession
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteDiscriminator is set, it can
// safely use t.GetRemoteDiscriminator() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteDiscriminator == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession) GetRemoteDiscriminator() string {
	if t == nil || t.RemoteDiscriminator == nil {
		return ""
	}
	return *t.RemoteDiscriminator
}

// GetRemoteMinimumReceiveInterval retrieves the value of the leaf RemoteMinimumReceiveInterval from the Bfd_Interface_MicroBfdSession
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteMinimumReceiveInterval is set, it can
// safely use t.GetRemoteMinimumReceiveInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteMinimumReceiveInterval == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession) GetRemoteMinimumReceiveInterval() uint32 {
	if t == nil || t.RemoteMinimumReceiveInterval == nil {
		return 0
	}
	return *t.RemoteMinimumReceiveInterval
}

// GetRemoteSessionState retrieves the value of the leaf RemoteSessionState from the Bfd_Interface_MicroBfdSession
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteSessionState is set, it can
// safely use t.GetRemoteSessionState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteSessionState == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession) GetRemoteSessionState() E_Bfd_BfdSessionState {
	if t == nil || t.RemoteSessionState == 0 {
		return 0
	}
	return t.RemoteSessionState
}

// GetSessionState retrieves the value of the leaf SessionState from the Bfd_Interface_MicroBfdSession
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SessionState is set, it can
// safely use t.GetSessionState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SessionState == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession) GetSessionState() E_Bfd_BfdSessionState {
	if t == nil || t.SessionState == 0 {
		return 0
	}
	return t.SessionState
}

// PopulateDefaults recursively populates unset leaf fields in the Bfd_Interface_MicroBfdSession
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Bfd_Interface_MicroBfdSession) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Async.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the Bfd_Interface_MicroBfdSession struct, which is a YANG list entry.
func (t *Bfd_Interface_MicroBfdSession) ΛListKeyMap() (map[string]interface{}, error) {
	if t.MemberInterface == nil {
		return nil, fmt.Errorf("nil value for key MemberInterface")
	}

	return map[string]interface{}{
		"member-interface": *t.MemberInterface,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Bfd_Interface_MicroBfdSession) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Bfd_Interface_MicroBfdSession"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Bfd_Interface_MicroBfdSession) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Bfd_Interface_MicroBfdSession) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Bfd_Interface_MicroBfdSession.
func (*Bfd_Interface_MicroBfdSession) ΛBelongingModule() string {
	return "openconfig-bfd"
}

// Bfd_Interface_MicroBfdSession_Async represents the /openconfig-bfd/bfd/interfaces/interface/micro-bfd-sessions/micro-bfd-session/state/async YANG schema element.
type Bfd_Interface_MicroBfdSession_Async struct {
	ΛMetadata              []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	LastPacketReceived     *uint64           `path:"last-packet-received" module:"openconfig-bfd"`
	ΛLastPacketReceived    []ygot.Annotation `path:"@last-packet-received" ygotAnnotation:"true"`
	LastPacketTransmitted  *uint64           `path:"last-packet-transmitted" module:"openconfig-bfd"`
	ΛLastPacketTransmitted []ygot.Annotation `path:"@last-packet-transmitted" ygotAnnotation:"true"`
	ReceivedPackets        *uint64           `path:"received-packets" module:"openconfig-bfd"`
	ΛReceivedPackets       []ygot.Annotation `path:"@received-packets" ygotAnnotation:"true"`
	TransmittedPackets     *uint64           `path:"transmitted-packets" module:"openconfig-bfd"`
	ΛTransmittedPackets    []ygot.Annotation `path:"@transmitted-packets" ygotAnnotation:"true"`
	UpTransitions          *uint64           `path:"up-transitions" module:"openconfig-bfd"`
	ΛUpTransitions         []ygot.Annotation `path:"@up-transitions" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Bfd_Interface_MicroBfdSession_Async implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Bfd_Interface_MicroBfdSession_Async) IsYANGGoStruct() {}

// GetLastPacketReceived retrieves the value of the leaf LastPacketReceived from the Bfd_Interface_MicroBfdSession_Async
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastPacketReceived is set, it can
// safely use t.GetLastPacketReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastPacketReceived == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession_Async) GetLastPacketReceived() uint64 {
	if t == nil || t.LastPacketReceived == nil {
		return 0
	}
	return *t.LastPacketReceived
}

// GetLastPacketTransmitted retrieves the value of the leaf LastPacketTransmitted from the Bfd_Interface_MicroBfdSession_Async
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastPacketTransmitted is set, it can
// safely use t.GetLastPacketTransmitted() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastPacketTransmitted == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession_Async) GetLastPacketTransmitted() uint64 {
	if t == nil || t.LastPacketTransmitted == nil {
		return 0
	}
	return *t.LastPacketTransmitted
}

// GetReceivedPackets retrieves the value of the leaf ReceivedPackets from the Bfd_Interface_MicroBfdSession_Async
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReceivedPackets is set, it can
// safely use t.GetReceivedPackets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReceivedPackets == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession_Async) GetReceivedPackets() uint64 {
	if t == nil || t.ReceivedPackets == nil {
		return 0
	}
	return *t.ReceivedPackets
}

// GetTransmittedPackets retrieves the value of the leaf TransmittedPackets from the Bfd_Interface_MicroBfdSession_Async
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TransmittedPackets is set, it can
// safely use t.GetTransmittedPackets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TransmittedPackets == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession_Async) GetTransmittedPackets() uint64 {
	if t == nil || t.TransmittedPackets == nil {
		return 0
	}
	return *t.TransmittedPackets
}

// GetUpTransitions retrieves the value of the leaf UpTransitions from the Bfd_Interface_MicroBfdSession_Async
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UpTransitions is set, it can
// safely use t.GetUpTransitions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UpTransitions == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_MicroBfdSession_Async) GetUpTransitions() uint64 {
	if t == nil || t.UpTransitions == nil {
		return 0
	}
	return *t.UpTransitions
}

// PopulateDefaults recursively populates unset leaf fields in the Bfd_Interface_MicroBfdSession_Async
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Bfd_Interface_MicroBfdSession_Async) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Bfd_Interface_MicroBfdSession_Async) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Bfd_Interface_MicroBfdSession_Async"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Bfd_Interface_MicroBfdSession_Async) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Bfd_Interface_MicroBfdSession_Async) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Bfd_Interface_MicroBfdSession_Async.
func (*Bfd_Interface_MicroBfdSession_Async) ΛBelongingModule() string {
	return "openconfig-bfd"
}

// Bfd_Interface_Peer represents the /openconfig-bfd/bfd/interfaces/interface/peers/peer YANG schema element.
type Bfd_Interface_Peer struct {
	ΛMetadata                      []ygot.Annotation                     `path:"@" ygotAnnotation:"true"`
	Async                          *Bfd_Interface_Peer_Async             `path:"state/async" module:"openconfig-bfd/openconfig-bfd"`
	ΛAsync                         []ygot.Annotation                     `path:"state/@async" ygotAnnotation:"true"`
	DemandModeRequested            *bool                                 `path:"state/demand-mode-requested" module:"openconfig-bfd/openconfig-bfd"`
	ΛDemandModeRequested           []ygot.Annotation                     `path:"state/@demand-mode-requested" ygotAnnotation:"true"`
	Echo                           *Bfd_Interface_Peer_Echo              `path:"state/echo" module:"openconfig-bfd/openconfig-bfd"`
	ΛEcho                          []ygot.Annotation                     `path:"state/@echo" ygotAnnotation:"true"`
	FailureTransitions             *uint64                               `path:"state/failure-transitions" module:"openconfig-bfd/openconfig-bfd"`
	ΛFailureTransitions            []ygot.Annotation                     `path:"state/@failure-transitions" ygotAnnotation:"true"`
	LastFailureTime                *uint64                               `path:"state/last-failure-time" module:"openconfig-bfd/openconfig-bfd"`
	ΛLastFailureTime               []ygot.Annotation                     `path:"state/@last-failure-time" ygotAnnotation:"true"`
	LocalAddress                   *string                               `path:"state/local-address" module:"openconfig-bfd/openconfig-bfd"`
	ΛLocalAddress                  []ygot.Annotation                     `path:"state/@local-address" ygotAnnotation:"true"`
	LocalDiagnosticCode            E_Bfd_BfdDiagnosticCode               `path:"state/local-diagnostic-code" module:"openconfig-bfd/openconfig-bfd"`
	ΛLocalDiagnosticCode           []ygot.Annotation                     `path:"state/@local-diagnostic-code" ygotAnnotation:"true"`
	LocalDiscriminator             *string                               `path:"state/local-discriminator|local-discriminator" module:"openconfig-bfd/openconfig-bfd|openconfig-bfd"`
	ΛLocalDiscriminator            []ygot.Annotation                     `path:"state/@local-discriminator|@local-discriminator" ygotAnnotation:"true"`
	RemoteAddress                  *string                               `path:"state/remote-address" module:"openconfig-bfd/openconfig-bfd"`
	ΛRemoteAddress                 []ygot.Annotation                     `path:"state/@remote-address" ygotAnnotation:"true"`
	RemoteAuthenticationEnabled    *bool                                 `path:"state/remote-authentication-enabled" module:"openconfig-bfd/openconfig-bfd"`
	ΛRemoteAuthenticationEnabled   []ygot.Annotation                     `path:"state/@remote-authentication-enabled" ygotAnnotation:"true"`
	RemoteControlPlaneIndependent  *bool                                 `path:"state/remote-control-plane-independent" module:"openconfig-bfd/openconfig-bfd"`
	ΛRemoteControlPlaneIndependent []ygot.Annotation                     `path:"state/@remote-control-plane-independent" ygotAnnotation:"true"`
	RemoteDiagnosticCode           E_Bfd_BfdDiagnosticCode               `path:"state/remote-diagnostic-code" module:"openconfig-bfd/openconfig-bfd"`
	ΛRemoteDiagnosticCode          []ygot.Annotation                     `path:"state/@remote-diagnostic-code" ygotAnnotation:"true"`
	RemoteDiscriminator            *string                               `path:"state/remote-discriminator" module:"openconfig-bfd/openconfig-bfd"`
	ΛRemoteDiscriminator           []ygot.Annotation                     `path:"state/@remote-discriminator" ygotAnnotation:"true"`
	RemoteMinimumReceiveInterval   *uint32                               `path:"state/remote-minimum-receive-interval" module:"openconfig-bfd/openconfig-bfd"`
	ΛRemoteMinimumReceiveInterval  []ygot.Annotation                     `path:"state/@remote-minimum-receive-interval" ygotAnnotation:"true"`
	RemoteSessionState             E_Bfd_BfdSessionState                 `path:"state/remote-session-state" module:"openconfig-bfd/openconfig-bfd"`
	ΛRemoteSessionState            []ygot.Annotation                     `path:"state/@remote-session-state" ygotAnnotation:"true"`
	SessionState                   E_Bfd_BfdSessionState                 `path:"state/session-state" module:"openconfig-bfd/openconfig-bfd"`
	ΛSessionState                  []ygot.Annotation                     `path:"state/@session-state" ygotAnnotation:"true"`
	SubscribedProtocols            []E_PolicyTypes_INSTALL_PROTOCOL_TYPE `path:"state/subscribed-protocols" module:"openconfig-bfd/openconfig-bfd"`
	ΛSubscribedProtocols           []ygot.Annotation                     `path:"state/@subscribed-protocols" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Bfd_Interface_Peer implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Bfd_Interface_Peer) IsYANGGoStruct() {}

// GetOrCreateAsync retrieves the value of the Async field
// or returns the existing field if it already exists.
func (t *Bfd_Interface_Peer) GetOrCreateAsync() *Bfd_Interface_Peer_Async {
	if t.Async != nil {
		return t.Async
	}
	t.Async = &Bfd_Interface_Peer_Async{}
	return t.Async
}

// GetOrCreateEcho retrieves the value of the Echo field
// or returns the existing field if it already exists.
func (t *Bfd_Interface_Peer) GetOrCreateEcho() *Bfd_Interface_Peer_Echo {
	if t.Echo != nil {
		return t.Echo
	}
	t.Echo = &Bfd_Interface_Peer_Echo{}
	return t.Echo
}

// GetAsync returns the value of the Async struct pointer
// from Bfd_Interface_Peer. If the receiver or the field Async is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Bfd_Interface_Peer) GetAsync() *Bfd_Interface_Peer_Async {
	if t != nil && t.Async != nil {
		return t.Async
	}
	return nil
}

// GetEcho returns the value of the Echo struct pointer
// from Bfd_Interface_Peer. If the receiver or the field Echo is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Bfd_Interface_Peer) GetEcho() *Bfd_Interface_Peer_Echo {
	if t != nil && t.Echo != nil {
		return t.Echo
	}
	return nil
}

// GetDemandModeRequested retrieves the value of the leaf DemandModeRequested from the Bfd_Interface_Peer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DemandModeRequested is set, it can
// safely use t.GetDemandModeRequested() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DemandModeRequested == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer) GetDemandModeRequested() bool {
	if t == nil || t.DemandModeRequested == nil {
		return false
	}
	return *t.DemandModeRequested
}

// GetFailureTransitions retrieves the value of the leaf FailureTransitions from the Bfd_Interface_Peer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FailureTransitions is set, it can
// safely use t.GetFailureTransitions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FailureTransitions == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer) GetFailureTransitions() uint64 {
	if t == nil || t.FailureTransitions == nil {
		return 0
	}
	return *t.FailureTransitions
}

// GetLastFailureTime retrieves the value of the leaf LastFailureTime from the Bfd_Interface_Peer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastFailureTime is set, it can
// safely use t.GetLastFailureTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastFailureTime == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer) GetLastFailureTime() uint64 {
	if t == nil || t.LastFailureTime == nil {
		return 0
	}
	return *t.LastFailureTime
}

// GetLocalAddress retrieves the value of the leaf LocalAddress from the Bfd_Interface_Peer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalAddress is set, it can
// safely use t.GetLocalAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalAddress == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer) GetLocalAddress() string {
	if t == nil || t.LocalAddress == nil {
		return ""
	}
	return *t.LocalAddress
}

// GetLocalDiagnosticCode retrieves the value of the leaf LocalDiagnosticCode from the Bfd_Interface_Peer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalDiagnosticCode is set, it can
// safely use t.GetLocalDiagnosticCode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalDiagnosticCode == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer) GetLocalDiagnosticCode() E_Bfd_BfdDiagnosticCode {
	if t == nil || t.LocalDiagnosticCode == 0 {
		return 0
	}
	return t.LocalDiagnosticCode
}

// GetLocalDiscriminator retrieves the value of the leaf LocalDiscriminator from the Bfd_Interface_Peer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalDiscriminator is set, it can
// safely use t.GetLocalDiscriminator() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalDiscriminator == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer) GetLocalDiscriminator() string {
	if t == nil || t.LocalDiscriminator == nil {
		return ""
	}
	return *t.LocalDiscriminator
}

// GetRemoteAddress retrieves the value of the leaf RemoteAddress from the Bfd_Interface_Peer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteAddress is set, it can
// safely use t.GetRemoteAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteAddress == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer) GetRemoteAddress() string {
	if t == nil || t.RemoteAddress == nil {
		return ""
	}
	return *t.RemoteAddress
}

// GetRemoteAuthenticationEnabled retrieves the value of the leaf RemoteAuthenticationEnabled from the Bfd_Interface_Peer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteAuthenticationEnabled is set, it can
// safely use t.GetRemoteAuthenticationEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteAuthenticationEnabled == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer) GetRemoteAuthenticationEnabled() bool {
	if t == nil || t.RemoteAuthenticationEnabled == nil {
		return false
	}
	return *t.RemoteAuthenticationEnabled
}

// GetRemoteControlPlaneIndependent retrieves the value of the leaf RemoteControlPlaneIndependent from the Bfd_Interface_Peer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteControlPlaneIndependent is set, it can
// safely use t.GetRemoteControlPlaneIndependent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteControlPlaneIndependent == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer) GetRemoteControlPlaneIndependent() bool {
	if t == nil || t.RemoteControlPlaneIndependent == nil {
		return false
	}
	return *t.RemoteControlPlaneIndependent
}

// GetRemoteDiagnosticCode retrieves the value of the leaf RemoteDiagnosticCode from the Bfd_Interface_Peer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteDiagnosticCode is set, it can
// safely use t.GetRemoteDiagnosticCode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteDiagnosticCode == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer) GetRemoteDiagnosticCode() E_Bfd_BfdDiagnosticCode {
	if t == nil || t.RemoteDiagnosticCode == 0 {
		return 0
	}
	return t.RemoteDiagnosticCode
}

// GetRemoteDiscriminator retrieves the value of the leaf RemoteDiscriminator from the Bfd_Interface_Peer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteDiscriminator is set, it can
// safely use t.GetRemoteDiscriminator() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteDiscriminator == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer) GetRemoteDiscriminator() string {
	if t == nil || t.RemoteDiscriminator == nil {
		return ""
	}
	return *t.RemoteDiscriminator
}

// GetRemoteMinimumReceiveInterval retrieves the value of the leaf RemoteMinimumReceiveInterval from the Bfd_Interface_Peer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteMinimumReceiveInterval is set, it can
// safely use t.GetRemoteMinimumReceiveInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteMinimumReceiveInterval == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer) GetRemoteMinimumReceiveInterval() uint32 {
	if t == nil || t.RemoteMinimumReceiveInterval == nil {
		return 0
	}
	return *t.RemoteMinimumReceiveInterval
}

// GetRemoteSessionState retrieves the value of the leaf RemoteSessionState from the Bfd_Interface_Peer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteSessionState is set, it can
// safely use t.GetRemoteSessionState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteSessionState == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer) GetRemoteSessionState() E_Bfd_BfdSessionState {
	if t == nil || t.RemoteSessionState == 0 {
		return 0
	}
	return t.RemoteSessionState
}

// GetSessionState retrieves the value of the leaf SessionState from the Bfd_Interface_Peer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SessionState is set, it can
// safely use t.GetSessionState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SessionState == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer) GetSessionState() E_Bfd_BfdSessionState {
	if t == nil || t.SessionState == 0 {
		return 0
	}
	return t.SessionState
}

// GetSubscribedProtocols retrieves the value of the leaf SubscribedProtocols from the Bfd_Interface_Peer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SubscribedProtocols is set, it can
// safely use t.GetSubscribedProtocols() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SubscribedProtocols == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer) GetSubscribedProtocols() []E_PolicyTypes_INSTALL_PROTOCOL_TYPE {
	if t == nil || t.SubscribedProtocols == nil {
		return nil
	}
	return t.SubscribedProtocols
}

// PopulateDefaults recursively populates unset leaf fields in the Bfd_Interface_Peer
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Bfd_Interface_Peer) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Async.PopulateDefaults()
	t.Echo.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the Bfd_Interface_Peer struct, which is a YANG list entry.
func (t *Bfd_Interface_Peer) ΛListKeyMap() (map[string]interface{}, error) {
	if t.LocalDiscriminator == nil {
		return nil, fmt.Errorf("nil value for key LocalDiscriminator")
	}

	return map[string]interface{}{
		"local-discriminator": *t.LocalDiscriminator,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Bfd_Interface_Peer) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Bfd_Interface_Peer"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Bfd_Interface_Peer) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Bfd_Interface_Peer) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Bfd_Interface_Peer.
func (*Bfd_Interface_Peer) ΛBelongingModule() string {
	return "openconfig-bfd"
}

// Bfd_Interface_Peer_Async represents the /openconfig-bfd/bfd/interfaces/interface/peers/peer/state/async YANG schema element.
type Bfd_Interface_Peer_Async struct {
	ΛMetadata              []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	LastPacketReceived     *uint64           `path:"last-packet-received" module:"openconfig-bfd"`
	ΛLastPacketReceived    []ygot.Annotation `path:"@last-packet-received" ygotAnnotation:"true"`
	LastPacketTransmitted  *uint64           `path:"last-packet-transmitted" module:"openconfig-bfd"`
	ΛLastPacketTransmitted []ygot.Annotation `path:"@last-packet-transmitted" ygotAnnotation:"true"`
	ReceivedPackets        *uint64           `path:"received-packets" module:"openconfig-bfd"`
	ΛReceivedPackets       []ygot.Annotation `path:"@received-packets" ygotAnnotation:"true"`
	TransmittedPackets     *uint64           `path:"transmitted-packets" module:"openconfig-bfd"`
	ΛTransmittedPackets    []ygot.Annotation `path:"@transmitted-packets" ygotAnnotation:"true"`
	UpTransitions          *uint64           `path:"up-transitions" module:"openconfig-bfd"`
	ΛUpTransitions         []ygot.Annotation `path:"@up-transitions" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Bfd_Interface_Peer_Async implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Bfd_Interface_Peer_Async) IsYANGGoStruct() {}

// GetLastPacketReceived retrieves the value of the leaf LastPacketReceived from the Bfd_Interface_Peer_Async
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastPacketReceived is set, it can
// safely use t.GetLastPacketReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastPacketReceived == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer_Async) GetLastPacketReceived() uint64 {
	if t == nil || t.LastPacketReceived == nil {
		return 0
	}
	return *t.LastPacketReceived
}

// GetLastPacketTransmitted retrieves the value of the leaf LastPacketTransmitted from the Bfd_Interface_Peer_Async
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastPacketTransmitted is set, it can
// safely use t.GetLastPacketTransmitted() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastPacketTransmitted == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer_Async) GetLastPacketTransmitted() uint64 {
	if t == nil || t.LastPacketTransmitted == nil {
		return 0
	}
	return *t.LastPacketTransmitted
}

// GetReceivedPackets retrieves the value of the leaf ReceivedPackets from the Bfd_Interface_Peer_Async
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReceivedPackets is set, it can
// safely use t.GetReceivedPackets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReceivedPackets == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer_Async) GetReceivedPackets() uint64 {
	if t == nil || t.ReceivedPackets == nil {
		return 0
	}
	return *t.ReceivedPackets
}

// GetTransmittedPackets retrieves the value of the leaf TransmittedPackets from the Bfd_Interface_Peer_Async
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TransmittedPackets is set, it can
// safely use t.GetTransmittedPackets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TransmittedPackets == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer_Async) GetTransmittedPackets() uint64 {
	if t == nil || t.TransmittedPackets == nil {
		return 0
	}
	return *t.TransmittedPackets
}

// GetUpTransitions retrieves the value of the leaf UpTransitions from the Bfd_Interface_Peer_Async
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UpTransitions is set, it can
// safely use t.GetUpTransitions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UpTransitions == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer_Async) GetUpTransitions() uint64 {
	if t == nil || t.UpTransitions == nil {
		return 0
	}
	return *t.UpTransitions
}

// PopulateDefaults recursively populates unset leaf fields in the Bfd_Interface_Peer_Async
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Bfd_Interface_Peer_Async) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Bfd_Interface_Peer_Async) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Bfd_Interface_Peer_Async"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Bfd_Interface_Peer_Async) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Bfd_Interface_Peer_Async) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Bfd_Interface_Peer_Async.
func (*Bfd_Interface_Peer_Async) ΛBelongingModule() string {
	return "openconfig-bfd"
}

// Bfd_Interface_Peer_Echo represents the /openconfig-bfd/bfd/interfaces/interface/peers/peer/state/echo YANG schema element.
type Bfd_Interface_Peer_Echo struct {
	ΛMetadata              []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Active                 *bool             `path:"active" module:"openconfig-bfd"`
	ΛActive                []ygot.Annotation `path:"@active" ygotAnnotation:"true"`
	LastPacketReceived     *uint64           `path:"last-packet-received" module:"openconfig-bfd"`
	ΛLastPacketReceived    []ygot.Annotation `path:"@last-packet-received" ygotAnnotation:"true"`
	LastPacketTransmitted  *uint64           `path:"last-packet-transmitted" module:"openconfig-bfd"`
	ΛLastPacketTransmitted []ygot.Annotation `path:"@last-packet-transmitted" ygotAnnotation:"true"`
	ReceivedPackets        *uint64           `path:"received-packets" module:"openconfig-bfd"`
	ΛReceivedPackets       []ygot.Annotation `path:"@received-packets" ygotAnnotation:"true"`
	TransmittedPackets     *uint64           `path:"transmitted-packets" module:"openconfig-bfd"`
	ΛTransmittedPackets    []ygot.Annotation `path:"@transmitted-packets" ygotAnnotation:"true"`
	UpTransitions          *uint64           `path:"up-transitions" module:"openconfig-bfd"`
	ΛUpTransitions         []ygot.Annotation `path:"@up-transitions" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Bfd_Interface_Peer_Echo implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Bfd_Interface_Peer_Echo) IsYANGGoStruct() {}

// GetActive retrieves the value of the leaf Active from the Bfd_Interface_Peer_Echo
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Active is set, it can
// safely use t.GetActive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Active == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer_Echo) GetActive() bool {
	if t == nil || t.Active == nil {
		return false
	}
	return *t.Active
}

// GetLastPacketReceived retrieves the value of the leaf LastPacketReceived from the Bfd_Interface_Peer_Echo
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastPacketReceived is set, it can
// safely use t.GetLastPacketReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastPacketReceived == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer_Echo) GetLastPacketReceived() uint64 {
	if t == nil || t.LastPacketReceived == nil {
		return 0
	}
	return *t.LastPacketReceived
}

// GetLastPacketTransmitted retrieves the value of the leaf LastPacketTransmitted from the Bfd_Interface_Peer_Echo
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastPacketTransmitted is set, it can
// safely use t.GetLastPacketTransmitted() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastPacketTransmitted == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer_Echo) GetLastPacketTransmitted() uint64 {
	if t == nil || t.LastPacketTransmitted == nil {
		return 0
	}
	return *t.LastPacketTransmitted
}

// GetReceivedPackets retrieves the value of the leaf ReceivedPackets from the Bfd_Interface_Peer_Echo
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReceivedPackets is set, it can
// safely use t.GetReceivedPackets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReceivedPackets == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer_Echo) GetReceivedPackets() uint64 {
	if t == nil || t.ReceivedPackets == nil {
		return 0
	}
	return *t.ReceivedPackets
}

// GetTransmittedPackets retrieves the value of the leaf TransmittedPackets from the Bfd_Interface_Peer_Echo
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TransmittedPackets is set, it can
// safely use t.GetTransmittedPackets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TransmittedPackets == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer_Echo) GetTransmittedPackets() uint64 {
	if t == nil || t.TransmittedPackets == nil {
		return 0
	}
	return *t.TransmittedPackets
}

// GetUpTransitions retrieves the value of the leaf UpTransitions from the Bfd_Interface_Peer_Echo
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UpTransitions is set, it can
// safely use t.GetUpTransitions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UpTransitions == nil' before retrieving the leaf's value.
func (t *Bfd_Interface_Peer_Echo) GetUpTransitions() uint64 {
	if t == nil || t.UpTransitions == nil {
		return 0
	}
	return *t.UpTransitions
}

// PopulateDefaults recursively populates unset leaf fields in the Bfd_Interface_Peer_Echo
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Bfd_Interface_Peer_Echo) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Bfd_Interface_Peer_Echo) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Bfd_Interface_Peer_Echo"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Bfd_Interface_Peer_Echo) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Bfd_Interface_Peer_Echo) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Bfd_Interface_Peer_Echo.
func (*Bfd_Interface_Peer_Echo) ΛBelongingModule() string {
	return "openconfig-bfd"
}

// Component represents the /openconfig-platform/components/component YANG schema element.
type Component struct {
	ΛMetadata             []ygot.Annotation                       `path:"@" ygotAnnotation:"true"`
	AllocatedPower        *uint32                                 `path:"state/allocated-power" module:"openconfig-platform/openconfig-platform"`
	ΛAllocatedPower       []ygot.Annotation                       `path:"state/@allocated-power" ygotAnnotation:"true"`
	Backplane             *Component_Backplane                    `path:"backplane" module:"openconfig-platform"`
	ΛBackplane            []ygot.Annotation                       `path:"@backplane" ygotAnnotation:"true"`
	BaseMacAddress        *string                                 `path:"state/base-mac-address" module:"openconfig-platform/openconfig-platform"`
	ΛBaseMacAddress       []ygot.Annotation                       `path:"state/@base-mac-address" ygotAnnotation:"true"`
	Chassis               *Component_Chassis                      `path:"chassis" module:"openconfig-platform"`
	ΛChassis              []ygot.Annotation                       `path:"@chassis" ygotAnnotation:"true"`
	CleiCode              *string                                 `path:"state/clei-code" module:"openconfig-platform/openconfig-platform"`
	ΛCleiCode             []ygot.Annotation                       `path:"state/@clei-code" ygotAnnotation:"true"`
	ControllerCard        *Component_ControllerCard               `path:"controller-card" module:"openconfig-platform"`
	ΛControllerCard       []ygot.Annotation                       `path:"@controller-card" ygotAnnotation:"true"`
	Cpu                   *Component_Cpu                          `path:"cpu" module:"openconfig-platform"`
	ΛCpu                  []ygot.Annotation                       `path:"@cpu" ygotAnnotation:"true"`
	Description           *string                                 `path:"state/description" module:"openconfig-platform/openconfig-platform"`
	ΛDescription          []ygot.Annotation                       `path:"state/@description" ygotAnnotation:"true"`
	Empty                 *bool                                   `path:"state/empty" module:"openconfig-platform/openconfig-platform"`
	ΛEmpty                []ygot.Annotation                       `path:"state/@empty" ygotAnnotation:"true"`
	EquipmentFailure      *bool                                   `path:"state/equipment-failure" module:"openconfig-platform/openconfig-alarms"`
	ΛEquipmentFailure     []ygot.Annotation                       `path:"state/@equipment-failure" ygotAnnotation:"true"`
	EquipmentMismatch     *bool                                   `path:"state/equipment-mismatch" module:"openconfig-platform/openconfig-alarms"`
	ΛEquipmentMismatch    []ygot.Annotation                       `path:"state/@equipment-mismatch" ygotAnnotation:"true"`
	Fabric                *Component_Fabric                       `path:"fabric" module:"openconfig-platform"`
	ΛFabric               []ygot.Annotation                       `path:"@fabric" ygotAnnotation:"true"`
	Fan                   *Component_Fan                          `path:"fan" module:"openconfig-platform"`
	ΛFan                  []ygot.Annotation                       `path:"@fan" ygotAnnotation:"true"`
	FirmwareVersion       *string                                 `path:"state/firmware-version" module:"openconfig-platform/openconfig-platform"`
	ΛFirmwareVersion      []ygot.Annotation                       `path:"state/@firmware-version" ygotAnnotation:"true"`
	HardwareVersion       *string                                 `path:"state/hardware-version" module:"openconfig-platform/openconfig-platform"`
	ΛHardwareVersion      []ygot.Annotation                       `path:"state/@hardware-version" ygotAnnotation:"true"`
	Id                    *string                                 `path:"state/id" module:"openconfig-platform/openconfig-platform"`
	ΛId                   []ygot.Annotation                       `path:"state/@id" ygotAnnotation:"true"`
	IntegratedCircuit     *Component_IntegratedCircuit            `path:"integrated-circuit" module:"openconfig-platform"`
	ΛIntegratedCircuit    []ygot.Annotation                       `path:"@integrated-circuit" ygotAnnotation:"true"`
	LastRebootReason      E_PlatformTypes_COMPONENT_REBOOT_REASON `path:"state/last-reboot-reason" module:"openconfig-platform/openconfig-platform"`
	ΛLastRebootReason     []ygot.Annotation                       `path:"state/@last-reboot-reason" ygotAnnotation:"true"`
	LastRebootTime        *uint64                                 `path:"state/last-reboot-time" module:"openconfig-platform/openconfig-platform"`
	ΛLastRebootTime       []ygot.Annotation                       `path:"state/@last-reboot-time" ygotAnnotation:"true"`
	LastSwitchoverReason  *Component_LastSwitchoverReason         `path:"state/last-switchover-reason" module:"openconfig-platform/openconfig-platform"`
	ΛLastSwitchoverReason []ygot.Annotation                       `path:"state/@last-switchover-reason" ygotAnnotation:"true"`
	LastSwitchoverTime    *uint64                                 `path:"state/last-switchover-time" module:"openconfig-platform/openconfig-platform"`
	ΛLastSwitchoverTime   []ygot.Annotation                       `path:"state/@last-switchover-time" ygotAnnotation:"true"`
	Location              *string                                 `path:"state/location" module:"openconfig-platform/openconfig-platform"`
	ΛLocation             []ygot.Annotation                       `path:"state/@location" ygotAnnotation:"true"`
	Memory                *Component_Memory                       `path:"state/memory" module:"openconfig-platform/openconfig-platform"`
	ΛMemory               []ygot.Annotation                       `path:"state/@memory" ygotAnnotation:"true"`
	MfgDate               *string                                 `path:"state/mfg-date" module:"openconfig-platform/openconfig-platform"`
	ΛMfgDate              []ygot.Annotation                       `path:"state/@mfg-date" ygotAnnotation:"true"`
	MfgName               *string                                 `path:"state/mfg-name" module:"openconfig-platform/openconfig-platform"`
	ΛMfgName              []ygot.Annotation                       `path:"state/@mfg-name" ygotAnnotation:"true"`
	ModelName             *string                                 `path:"state/model-name" module:"openconfig-platform/openconfig-platform"`
	ΛModelName            []ygot.Annotation                       `path:"state/@model-name" ygotAnnotation:"true"`
	Name                  *string                                 `path:"config/name|name" module:"openconfig-platform/openconfig-platform|openconfig-platform"`
	ΛName                 []ygot.Annotation                       `path:"config/@name|@name" ygotAnnotation:"true"`
	OperStatus            E_PlatformTypes_COMPONENT_OPER_STATUS   `path:"state/oper-status" module:"openconfig-platform/openconfig-platform"`
	ΛOperStatus           []ygot.Annotation                       `path:"state/@oper-status" ygotAnnotation:"true"`
	OpticalChannel        *Component_OpticalChannel               `path:"optical-channel" module:"openconfig-terminal-device"`
	ΛOpticalChannel       []ygot.Annotation                       `path:"@optical-channel" ygotAnnotation:"true"`
	Parent                *string                                 `path:"state/parent" module:"openconfig-platform/openconfig-platform"`
	ΛParent               []ygot.Annotation                       `path:"state/@parent" ygotAnnotation:"true"`
	PartNo                *string                                 `path:"state/part-no" module:"openconfig-platform/openconfig-platform"`
	ΛPartNo               []ygot.Annotation                       `path:"state/@part-no" ygotAnnotation:"true"`
	Pcie                  *Component_Pcie                         `path:"state/pcie" module:"openconfig-platform/openconfig-platform"`
	ΛPcie                 []ygot.Annotation                       `path:"state/@pcie" ygotAnnotation:"true"`
	Port                  *Component_Port                         `path:"port" module:"openconfig-platform"`
	ΛPort                 []ygot.Annotation                       `path:"@port" ygotAnnotation:"true"`
	PowerSupply           *Component_PowerSupply                  `path:"power-supply" module:"openconfig-platform"`
	ΛPowerSupply          []ygot.Annotation                       `path:"@power-supply" ygotAnnotation:"true"`
	Property              map[string]*Component_Property          `path:"properties/property" module:"openconfig-platform/openconfig-platform"`
	ΛProperty             []ygot.Annotation                       `path:"properties/@property" ygotAnnotation:"true"`
	RedundantRole         E_PlatformTypes_ComponentRedundantRole  `path:"state/redundant-role" module:"openconfig-platform/openconfig-platform"`
	ΛRedundantRole        []ygot.Annotation                       `path:"state/@redundant-role" ygotAnnotation:"true"`
	Removable             *bool                                   `path:"state/removable" module:"openconfig-platform/openconfig-platform"`
	ΛRemovable            []ygot.Annotation                       `path:"state/@removable" ygotAnnotation:"true"`
	SerialNo              *string                                 `path:"state/serial-no" module:"openconfig-platform/openconfig-platform"`
	ΛSerialNo             []ygot.Annotation                       `path:"state/@serial-no" ygotAnnotation:"true"`
	SoftwareModule        *Component_SoftwareModule               `path:"software-module" module:"openconfig-platform"`
	ΛSoftwareModule       []ygot.Annotation                       `path:"@software-module" ygotAnnotation:"true"`
	SoftwareVersion       *string                                 `path:"state/software-version" module:"openconfig-platform/openconfig-platform"`
	ΛSoftwareVersion      []ygot.Annotation                       `path:"state/@software-version" ygotAnnotation:"true"`
	Storage               *Component_Storage                      `path:"storage" module:"openconfig-platform"`
	ΛStorage              []ygot.Annotation                       `path:"@storage" ygotAnnotation:"true"`
	Subcomponent          map[string]*Component_Subcomponent      `path:"subcomponents/subcomponent" module:"openconfig-platform/openconfig-platform"`
	ΛSubcomponent         []ygot.Annotation                       `path:"subcomponents/@subcomponent" ygotAnnotation:"true"`
	SwitchoverReady       *bool                                   `path:"state/switchover-ready" module:"openconfig-platform/openconfig-platform"`
	ΛSwitchoverReady      []ygot.Annotation                       `path:"state/@switchover-ready" ygotAnnotation:"true"`
	Temperature           *Component_Temperature                  `path:"state/temperature" module:"openconfig-platform/openconfig-platform"`
	ΛTemperature          []ygot.Annotation                       `path:"state/@temperature" ygotAnnotation:"true"`
	Transceiver           *Component_Transceiver                  `path:"transceiver" module:"openconfig-platform-transceiver"`
	ΛTransceiver          []ygot.Annotation                       `path:"@transceiver" ygotAnnotation:"true"`
	Type                  Component_Type_Union                    `path:"state/type" module:"openconfig-platform/openconfig-platform"`
	ΛType                 []ygot.Annotation                       `path:"state/@type" ygotAnnotation:"true"`
	UsedPower             *uint32                                 `path:"state/used-power" module:"openconfig-platform/openconfig-platform"`
	ΛUsedPower            []ygot.Annotation                       `path:"state/@used-power" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component) IsYANGGoStruct() {}

// NewProperty creates a new entry in the Property list of the
// Component struct. The keys of the list are populated from the input
// arguments.
func (t *Component) NewProperty(Name string) (*Component_Property, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Property == nil {
		t.Property = make(map[string]*Component_Property)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Property[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Property", key)
	}

	t.Property[key] = &Component_Property{
		Name: &Name,
	}

	return t.Property[key], nil
}

// RenameProperty renames an entry in the list Property within
// the Component struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Component) RenameProperty(oldK, newK string) error {
	if _, ok := t.Property[newK]; ok {
		return fmt.Errorf("key %v already exists in Property", newK)
	}

	e, ok := t.Property[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Property", oldK)
	}
	e.Name = &newK

	t.Property[newK] = e
	delete(t.Property, oldK)
	return nil
}

// GetOrCreatePropertyMap returns the list (map) from Component.
//
// It initializes the field if not already initialized.
func (t *Component) GetOrCreatePropertyMap() map[string]*Component_Property {
	if t.Property == nil {
		t.Property = make(map[string]*Component_Property)
	}
	return t.Property
}

// GetOrCreateProperty retrieves the value with the specified keys from
// the receiver Component. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Component) GetOrCreateProperty(Name string) *Component_Property {

	key := Name

	if v, ok := t.Property[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewProperty(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateProperty got unexpected error: %v", err))
	}
	return v
}

// GetProperty retrieves the value with the specified key from
// the Property map field of Component. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Component) GetProperty(Name string) *Component_Property {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Property[key]; ok {
		return lm
	}
	return nil
}

// AppendProperty appends the supplied Component_Property struct to the
// list Property of Component. If the key value(s) specified in
// the supplied Component_Property already exist in the list, an error is
// returned.
func (t *Component) AppendProperty(v *Component_Property) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Property == nil {
		t.Property = make(map[string]*Component_Property)
	}

	if _, ok := t.Property[key]; ok {
		return fmt.Errorf("duplicate key for list Property %v", key)
	}

	t.Property[key] = v
	return nil
}

// NewSubcomponent creates a new entry in the Subcomponent list of the
// Component struct. The keys of the list are populated from the input
// arguments.
func (t *Component) NewSubcomponent(Name string) (*Component_Subcomponent, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subcomponent == nil {
		t.Subcomponent = make(map[string]*Component_Subcomponent)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Subcomponent[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Subcomponent", key)
	}

	t.Subcomponent[key] = &Component_Subcomponent{
		Name: &Name,
	}

	return t.Subcomponent[key], nil
}

// RenameSubcomponent renames an entry in the list Subcomponent within
// the Component struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Component) RenameSubcomponent(oldK, newK string) error {
	if _, ok := t.Subcomponent[newK]; ok {
		return fmt.Errorf("key %v already exists in Subcomponent", newK)
	}

	e, ok := t.Subcomponent[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Subcomponent", oldK)
	}
	e.Name = &newK

	t.Subcomponent[newK] = e
	delete(t.Subcomponent, oldK)
	return nil
}

// GetOrCreateSubcomponentMap returns the list (map) from Component.
//
// It initializes the field if not already initialized.
func (t *Component) GetOrCreateSubcomponentMap() map[string]*Component_Subcomponent {
	if t.Subcomponent == nil {
		t.Subcomponent = make(map[string]*Component_Subcomponent)
	}
	return t.Subcomponent
}

// GetOrCreateSubcomponent retrieves the value with the specified keys from
// the receiver Component. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Component) GetOrCreateSubcomponent(Name string) *Component_Subcomponent {

	key := Name

	if v, ok := t.Subcomponent[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSubcomponent(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSubcomponent got unexpected error: %v", err))
	}
	return v
}

// GetSubcomponent retrieves the value with the specified key from
// the Subcomponent map field of Component. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Component) GetSubcomponent(Name string) *Component_Subcomponent {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Subcomponent[key]; ok {
		return lm
	}
	return nil
}

// AppendSubcomponent appends the supplied Component_Subcomponent struct to the
// list Subcomponent of Component. If the key value(s) specified in
// the supplied Component_Subcomponent already exist in the list, an error is
// returned.
func (t *Component) AppendSubcomponent(v *Component_Subcomponent) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subcomponent == nil {
		t.Subcomponent = make(map[string]*Component_Subcomponent)
	}

	if _, ok := t.Subcomponent[key]; ok {
		return fmt.Errorf("duplicate key for list Subcomponent %v", key)
	}

	t.Subcomponent[key] = v
	return nil
}

// GetOrCreateBackplane retrieves the value of the Backplane field
// or returns the existing field if it already exists.
func (t *Component) GetOrCreateBackplane() *Component_Backplane {
	if t.Backplane != nil {
		return t.Backplane
	}
	t.Backplane = &Component_Backplane{}
	return t.Backplane
}

// GetOrCreateChassis retrieves the value of the Chassis field
// or returns the existing field if it already exists.
func (t *Component) GetOrCreateChassis() *Component_Chassis {
	if t.Chassis != nil {
		return t.Chassis
	}
	t.Chassis = &Component_Chassis{}
	return t.Chassis
}

// GetOrCreateControllerCard retrieves the value of the ControllerCard field
// or returns the existing field if it already exists.
func (t *Component) GetOrCreateControllerCard() *Component_ControllerCard {
	if t.ControllerCard != nil {
		return t.ControllerCard
	}
	t.ControllerCard = &Component_ControllerCard{}
	return t.ControllerCard
}

// GetOrCreateCpu retrieves the value of the Cpu field
// or returns the existing field if it already exists.
func (t *Component) GetOrCreateCpu() *Component_Cpu {
	if t.Cpu != nil {
		return t.Cpu
	}
	t.Cpu = &Component_Cpu{}
	return t.Cpu
}

// GetOrCreateFabric retrieves the value of the Fabric field
// or returns the existing field if it already exists.
func (t *Component) GetOrCreateFabric() *Component_Fabric {
	if t.Fabric != nil {
		return t.Fabric
	}
	t.Fabric = &Component_Fabric{}
	return t.Fabric
}

// GetOrCreateFan retrieves the value of the Fan field
// or returns the existing field if it already exists.
func (t *Component) GetOrCreateFan() *Component_Fan {
	if t.Fan != nil {
		return t.Fan
	}
	t.Fan = &Component_Fan{}
	return t.Fan
}

// GetOrCreateIntegratedCircuit retrieves the value of the IntegratedCircuit field
// or returns the existing field if it already exists.
func (t *Component) GetOrCreateIntegratedCircuit() *Component_IntegratedCircuit {
	if t.IntegratedCircuit != nil {
		return t.IntegratedCircuit
	}
	t.IntegratedCircuit = &Component_IntegratedCircuit{}
	return t.IntegratedCircuit
}

// GetOrCreateLastSwitchoverReason retrieves the value of the LastSwitchoverReason field
// or returns the existing field if it already exists.
func (t *Component) GetOrCreateLastSwitchoverReason() *Component_LastSwitchoverReason {
	if t.LastSwitchoverReason != nil {
		return t.LastSwitchoverReason
	}
	t.LastSwitchoverReason = &Component_LastSwitchoverReason{}
	return t.LastSwitchoverReason
}

// GetOrCreateMemory retrieves the value of the Memory field
// or returns the existing field if it already exists.
func (t *Component) GetOrCreateMemory() *Component_Memory {
	if t.Memory != nil {
		return t.Memory
	}
	t.Memory = &Component_Memory{}
	return t.Memory
}

// GetOrCreateOpticalChannel retrieves the value of the OpticalChannel field
// or returns the existing field if it already exists.
func (t *Component) GetOrCreateOpticalChannel() *Component_OpticalChannel {
	if t.OpticalChannel != nil {
		return t.OpticalChannel
	}
	t.OpticalChannel = &Component_OpticalChannel{}
	return t.OpticalChannel
}

// GetOrCreatePcie retrieves the value of the Pcie field
// or returns the existing field if it already exists.
func (t *Component) GetOrCreatePcie() *Component_Pcie {
	if t.Pcie != nil {
		return t.Pcie
	}
	t.Pcie = &Component_Pcie{}
	return t.Pcie
}

// GetOrCreatePort retrieves the value of the Port field
// or returns the existing field if it already exists.
func (t *Component) GetOrCreatePort() *Component_Port {
	if t.Port != nil {
		return t.Port
	}
	t.Port = &Component_Port{}
	return t.Port
}

// GetOrCreatePowerSupply retrieves the value of the PowerSupply field
// or returns the existing field if it already exists.
func (t *Component) GetOrCreatePowerSupply() *Component_PowerSupply {
	if t.PowerSupply != nil {
		return t.PowerSupply
	}
	t.PowerSupply = &Component_PowerSupply{}
	return t.PowerSupply
}

// GetOrCreateSoftwareModule retrieves the value of the SoftwareModule field
// or returns the existing field if it already exists.
func (t *Component) GetOrCreateSoftwareModule() *Component_SoftwareModule {
	if t.SoftwareModule != nil {
		return t.SoftwareModule
	}
	t.SoftwareModule = &Component_SoftwareModule{}
	return t.SoftwareModule
}

// GetOrCreateStorage retrieves the value of the Storage field
// or returns the existing field if it already exists.
func (t *Component) GetOrCreateStorage() *Component_Storage {
	if t.Storage != nil {
		return t.Storage
	}
	t.Storage = &Component_Storage{}
	return t.Storage
}

// GetOrCreateTemperature retrieves the value of the Temperature field
// or returns the existing field if it already exists.
func (t *Component) GetOrCreateTemperature() *Component_Temperature {
	if t.Temperature != nil {
		return t.Temperature
	}
	t.Temperature = &Component_Temperature{}
	return t.Temperature
}

// GetOrCreateTransceiver retrieves the value of the Transceiver field
// or returns the existing field if it already exists.
func (t *Component) GetOrCreateTransceiver() *Component_Transceiver {
	if t.Transceiver != nil {
		return t.Transceiver
	}
	t.Transceiver = &Component_Transceiver{}
	return t.Transceiver
}

// GetBackplane returns the value of the Backplane struct pointer
// from Component. If the receiver or the field Backplane is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component) GetBackplane() *Component_Backplane {
	if t != nil && t.Backplane != nil {
		return t.Backplane
	}
	return nil
}

// GetChassis returns the value of the Chassis struct pointer
// from Component. If the receiver or the field Chassis is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component) GetChassis() *Component_Chassis {
	if t != nil && t.Chassis != nil {
		return t.Chassis
	}
	return nil
}

// GetControllerCard returns the value of the ControllerCard struct pointer
// from Component. If the receiver or the field ControllerCard is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component) GetControllerCard() *Component_ControllerCard {
	if t != nil && t.ControllerCard != nil {
		return t.ControllerCard
	}
	return nil
}

// GetCpu returns the value of the Cpu struct pointer
// from Component. If the receiver or the field Cpu is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component) GetCpu() *Component_Cpu {
	if t != nil && t.Cpu != nil {
		return t.Cpu
	}
	return nil
}

// GetFabric returns the value of the Fabric struct pointer
// from Component. If the receiver or the field Fabric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component) GetFabric() *Component_Fabric {
	if t != nil && t.Fabric != nil {
		return t.Fabric
	}
	return nil
}

// GetFan returns the value of the Fan struct pointer
// from Component. If the receiver or the field Fan is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component) GetFan() *Component_Fan {
	if t != nil && t.Fan != nil {
		return t.Fan
	}
	return nil
}

// GetIntegratedCircuit returns the value of the IntegratedCircuit struct pointer
// from Component. If the receiver or the field IntegratedCircuit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component) GetIntegratedCircuit() *Component_IntegratedCircuit {
	if t != nil && t.IntegratedCircuit != nil {
		return t.IntegratedCircuit
	}
	return nil
}

// GetLastSwitchoverReason returns the value of the LastSwitchoverReason struct pointer
// from Component. If the receiver or the field LastSwitchoverReason is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component) GetLastSwitchoverReason() *Component_LastSwitchoverReason {
	if t != nil && t.LastSwitchoverReason != nil {
		return t.LastSwitchoverReason
	}
	return nil
}

// GetMemory returns the value of the Memory struct pointer
// from Component. If the receiver or the field Memory is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component) GetMemory() *Component_Memory {
	if t != nil && t.Memory != nil {
		return t.Memory
	}
	return nil
}

// GetOpticalChannel returns the value of the OpticalChannel struct pointer
// from Component. If the receiver or the field OpticalChannel is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component) GetOpticalChannel() *Component_OpticalChannel {
	if t != nil && t.OpticalChannel != nil {
		return t.OpticalChannel
	}
	return nil
}

// GetPcie returns the value of the Pcie struct pointer
// from Component. If the receiver or the field Pcie is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component) GetPcie() *Component_Pcie {
	if t != nil && t.Pcie != nil {
		return t.Pcie
	}
	return nil
}

// GetPort returns the value of the Port struct pointer
// from Component. If the receiver or the field Port is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component) GetPort() *Component_Port {
	if t != nil && t.Port != nil {
		return t.Port
	}
	return nil
}

// GetPowerSupply returns the value of the PowerSupply struct pointer
// from Component. If the receiver or the field PowerSupply is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component) GetPowerSupply() *Component_PowerSupply {
	if t != nil && t.PowerSupply != nil {
		return t.PowerSupply
	}
	return nil
}

// GetSoftwareModule returns the value of the SoftwareModule struct pointer
// from Component. If the receiver or the field SoftwareModule is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component) GetSoftwareModule() *Component_SoftwareModule {
	if t != nil && t.SoftwareModule != nil {
		return t.SoftwareModule
	}
	return nil
}

// GetStorage returns the value of the Storage struct pointer
// from Component. If the receiver or the field Storage is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component) GetStorage() *Component_Storage {
	if t != nil && t.Storage != nil {
		return t.Storage
	}
	return nil
}

// GetTemperature returns the value of the Temperature struct pointer
// from Component. If the receiver or the field Temperature is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component) GetTemperature() *Component_Temperature {
	if t != nil && t.Temperature != nil {
		return t.Temperature
	}
	return nil
}

// GetTransceiver returns the value of the Transceiver struct pointer
// from Component. If the receiver or the field Transceiver is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component) GetTransceiver() *Component_Transceiver {
	if t != nil && t.Transceiver != nil {
		return t.Transceiver
	}
	return nil
}

// GetAllocatedPower retrieves the value of the leaf AllocatedPower from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AllocatedPower is set, it can
// safely use t.GetAllocatedPower() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AllocatedPower == nil' before retrieving the leaf's value.
func (t *Component) GetAllocatedPower() uint32 {
	if t == nil || t.AllocatedPower == nil {
		return 0
	}
	return *t.AllocatedPower
}

// GetBaseMacAddress retrieves the value of the leaf BaseMacAddress from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BaseMacAddress is set, it can
// safely use t.GetBaseMacAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BaseMacAddress == nil' before retrieving the leaf's value.
func (t *Component) GetBaseMacAddress() string {
	if t == nil || t.BaseMacAddress == nil {
		return ""
	}
	return *t.BaseMacAddress
}

// GetCleiCode retrieves the value of the leaf CleiCode from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CleiCode is set, it can
// safely use t.GetCleiCode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CleiCode == nil' before retrieving the leaf's value.
func (t *Component) GetCleiCode() string {
	if t == nil || t.CleiCode == nil {
		return ""
	}
	return *t.CleiCode
}

// GetDescription retrieves the value of the leaf Description from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *Component) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetEmpty retrieves the value of the leaf Empty from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Empty is set, it can
// safely use t.GetEmpty() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Empty == nil' before retrieving the leaf's value.
func (t *Component) GetEmpty() bool {
	if t == nil || t.Empty == nil {
		return false
	}
	return *t.Empty
}

// GetEquipmentFailure retrieves the value of the leaf EquipmentFailure from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EquipmentFailure is set, it can
// safely use t.GetEquipmentFailure() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EquipmentFailure == nil' before retrieving the leaf's value.
func (t *Component) GetEquipmentFailure() bool {
	if t == nil || t.EquipmentFailure == nil {
		return false
	}
	return *t.EquipmentFailure
}

// GetEquipmentMismatch retrieves the value of the leaf EquipmentMismatch from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EquipmentMismatch is set, it can
// safely use t.GetEquipmentMismatch() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EquipmentMismatch == nil' before retrieving the leaf's value.
func (t *Component) GetEquipmentMismatch() bool {
	if t == nil || t.EquipmentMismatch == nil {
		return false
	}
	return *t.EquipmentMismatch
}

// GetFirmwareVersion retrieves the value of the leaf FirmwareVersion from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FirmwareVersion is set, it can
// safely use t.GetFirmwareVersion() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FirmwareVersion == nil' before retrieving the leaf's value.
func (t *Component) GetFirmwareVersion() string {
	if t == nil || t.FirmwareVersion == nil {
		return ""
	}
	return *t.FirmwareVersion
}

// GetHardwareVersion retrieves the value of the leaf HardwareVersion from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HardwareVersion is set, it can
// safely use t.GetHardwareVersion() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HardwareVersion == nil' before retrieving the leaf's value.
func (t *Component) GetHardwareVersion() string {
	if t == nil || t.HardwareVersion == nil {
		return ""
	}
	return *t.HardwareVersion
}

// GetId retrieves the value of the leaf Id from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *Component) GetId() string {
	if t == nil || t.Id == nil {
		return ""
	}
	return *t.Id
}

// GetLastRebootReason retrieves the value of the leaf LastRebootReason from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastRebootReason is set, it can
// safely use t.GetLastRebootReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastRebootReason == nil' before retrieving the leaf's value.
func (t *Component) GetLastRebootReason() E_PlatformTypes_COMPONENT_REBOOT_REASON {
	if t == nil || t.LastRebootReason == 0 {
		return 0
	}
	return t.LastRebootReason
}

// GetLastRebootTime retrieves the value of the leaf LastRebootTime from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastRebootTime is set, it can
// safely use t.GetLastRebootTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastRebootTime == nil' before retrieving the leaf's value.
func (t *Component) GetLastRebootTime() uint64 {
	if t == nil || t.LastRebootTime == nil {
		return 0
	}
	return *t.LastRebootTime
}

// GetLastSwitchoverTime retrieves the value of the leaf LastSwitchoverTime from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastSwitchoverTime is set, it can
// safely use t.GetLastSwitchoverTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastSwitchoverTime == nil' before retrieving the leaf's value.
func (t *Component) GetLastSwitchoverTime() uint64 {
	if t == nil || t.LastSwitchoverTime == nil {
		return 0
	}
	return *t.LastSwitchoverTime
}

// GetLocation retrieves the value of the leaf Location from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Location is set, it can
// safely use t.GetLocation() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Location == nil' before retrieving the leaf's value.
func (t *Component) GetLocation() string {
	if t == nil || t.Location == nil {
		return ""
	}
	return *t.Location
}

// GetMfgDate retrieves the value of the leaf MfgDate from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MfgDate is set, it can
// safely use t.GetMfgDate() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MfgDate == nil' before retrieving the leaf's value.
func (t *Component) GetMfgDate() string {
	if t == nil || t.MfgDate == nil {
		return ""
	}
	return *t.MfgDate
}

// GetMfgName retrieves the value of the leaf MfgName from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MfgName is set, it can
// safely use t.GetMfgName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MfgName == nil' before retrieving the leaf's value.
func (t *Component) GetMfgName() string {
	if t == nil || t.MfgName == nil {
		return ""
	}
	return *t.MfgName
}

// GetModelName retrieves the value of the leaf ModelName from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ModelName is set, it can
// safely use t.GetModelName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ModelName == nil' before retrieving the leaf's value.
func (t *Component) GetModelName() string {
	if t == nil || t.ModelName == nil {
		return ""
	}
	return *t.ModelName
}

// GetName retrieves the value of the leaf Name from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Component) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetOperStatus retrieves the value of the leaf OperStatus from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OperStatus is set, it can
// safely use t.GetOperStatus() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OperStatus == nil' before retrieving the leaf's value.
func (t *Component) GetOperStatus() E_PlatformTypes_COMPONENT_OPER_STATUS {
	if t == nil || t.OperStatus == 0 {
		return 0
	}
	return t.OperStatus
}

// GetParent retrieves the value of the leaf Parent from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Parent is set, it can
// safely use t.GetParent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Parent == nil' before retrieving the leaf's value.
func (t *Component) GetParent() string {
	if t == nil || t.Parent == nil {
		return ""
	}
	return *t.Parent
}

// GetPartNo retrieves the value of the leaf PartNo from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PartNo is set, it can
// safely use t.GetPartNo() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PartNo == nil' before retrieving the leaf's value.
func (t *Component) GetPartNo() string {
	if t == nil || t.PartNo == nil {
		return ""
	}
	return *t.PartNo
}

// GetRedundantRole retrieves the value of the leaf RedundantRole from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RedundantRole is set, it can
// safely use t.GetRedundantRole() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RedundantRole == nil' before retrieving the leaf's value.
func (t *Component) GetRedundantRole() E_PlatformTypes_ComponentRedundantRole {
	if t == nil || t.RedundantRole == 0 {
		return 0
	}
	return t.RedundantRole
}

// GetRemovable retrieves the value of the leaf Removable from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Removable is set, it can
// safely use t.GetRemovable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Removable == nil' before retrieving the leaf's value.
func (t *Component) GetRemovable() bool {
	if t == nil || t.Removable == nil {
		return false
	}
	return *t.Removable
}

// GetSerialNo retrieves the value of the leaf SerialNo from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SerialNo is set, it can
// safely use t.GetSerialNo() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SerialNo == nil' before retrieving the leaf's value.
func (t *Component) GetSerialNo() string {
	if t == nil || t.SerialNo == nil {
		return ""
	}
	return *t.SerialNo
}

// GetSoftwareVersion retrieves the value of the leaf SoftwareVersion from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SoftwareVersion is set, it can
// safely use t.GetSoftwareVersion() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SoftwareVersion == nil' before retrieving the leaf's value.
func (t *Component) GetSoftwareVersion() string {
	if t == nil || t.SoftwareVersion == nil {
		return ""
	}
	return *t.SoftwareVersion
}

// GetSwitchoverReady retrieves the value of the leaf SwitchoverReady from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SwitchoverReady is set, it can
// safely use t.GetSwitchoverReady() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SwitchoverReady == nil' before retrieving the leaf's value.
func (t *Component) GetSwitchoverReady() bool {
	if t == nil || t.SwitchoverReady == nil {
		return false
	}
	return *t.SwitchoverReady
}

// GetType retrieves the value of the leaf Type from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *Component) GetType() Component_Type_Union {
	if t == nil || t.Type == nil {
		return nil
	}
	return t.Type
}

// GetUsedPower retrieves the value of the leaf UsedPower from the Component
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UsedPower is set, it can
// safely use t.GetUsedPower() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UsedPower == nil' before retrieving the leaf's value.
func (t *Component) GetUsedPower() uint32 {
	if t == nil || t.UsedPower == nil {
		return 0
	}
	return *t.UsedPower
}

// PopulateDefaults recursively populates unset leaf fields in the Component
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Empty == nil {
		var v bool = false
		t.Empty = &v
	}
	if t.EquipmentFailure == nil {
		var v bool = false
		t.EquipmentFailure = &v
	}
	if t.EquipmentMismatch == nil {
		var v bool = false
		t.EquipmentMismatch = &v
	}
	t.Backplane.PopulateDefaults()
	t.Chassis.PopulateDefaults()
	t.ControllerCard.PopulateDefaults()
	t.Cpu.PopulateDefaults()
	t.Fabric.PopulateDefaults()
	t.Fan.PopulateDefaults()
	t.IntegratedCircuit.PopulateDefaults()
	t.LastSwitchoverReason.PopulateDefaults()
	t.Memory.PopulateDefaults()
	t.OpticalChannel.PopulateDefaults()
	t.Pcie.PopulateDefaults()
	t.Port.PopulateDefaults()
	t.PowerSupply.PopulateDefaults()
	t.SoftwareModule.PopulateDefaults()
	t.Storage.PopulateDefaults()
	t.Temperature.PopulateDefaults()
	t.Transceiver.PopulateDefaults()
	for _, e := range t.Property {
		e.PopulateDefaults()
	}
	for _, e := range t.Subcomponent {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the Component struct, which is a YANG list entry.
func (t *Component) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component.
func (*Component) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Type_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-platform/components/component/state/type within the YANG schema.
// Union type can be one of [E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT, E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT].
type Component_Type_Union interface {
	// Union type can be one of [E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT, E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT]
	Documentation_for_Component_Type_Union()
}

// Documentation_for_Component_Type_Union ensures that E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
// implements the Component_Type_Union interface.
func (E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT) Documentation_for_Component_Type_Union() {}

// Documentation_for_Component_Type_Union ensures that E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT
// implements the Component_Type_Union interface.
func (E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT) Documentation_for_Component_Type_Union() {}

// To_Component_Type_Union takes an input interface{} and attempts to convert it to a struct
// which implements the Component_Type_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *Component) To_Component_Type_Union(i interface{}) (Component_Type_Union, error) {
	if v, ok := i.(Component_Type_Union); ok {
		return v, nil
	}
	return nil, fmt.Errorf("cannot convert %v to Component_Type_Union, unknown union type, got: %T, want any of [E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT, E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT]", i, i)
}

// Component_Backplane represents the /openconfig-platform/components/component/backplane YANG schema element.
type Component_Backplane struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Backplane implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Backplane) IsYANGGoStruct() {}

// PopulateDefaults recursively populates unset leaf fields in the Component_Backplane
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Backplane) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Backplane) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Backplane"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Backplane) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Backplane) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Backplane.
func (*Component_Backplane) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Chassis represents the /openconfig-platform/components/component/chassis YANG schema element.
type Component_Chassis struct {
	ΛMetadata    []ygot.Annotation              `path:"@" ygotAnnotation:"true"`
	Utilization  *Component_Chassis_Utilization `path:"utilization" module:"openconfig-platform"`
	ΛUtilization []ygot.Annotation              `path:"@utilization" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Chassis implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Chassis) IsYANGGoStruct() {}

// GetOrCreateUtilization retrieves the value of the Utilization field
// or returns the existing field if it already exists.
func (t *Component_Chassis) GetOrCreateUtilization() *Component_Chassis_Utilization {
	if t.Utilization != nil {
		return t.Utilization
	}
	t.Utilization = &Component_Chassis_Utilization{}
	return t.Utilization
}

// GetUtilization returns the value of the Utilization struct pointer
// from Component_Chassis. If the receiver or the field Utilization is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Chassis) GetUtilization() *Component_Chassis_Utilization {
	if t != nil && t.Utilization != nil {
		return t.Utilization
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Chassis
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Chassis) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Utilization.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Chassis) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Chassis"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Chassis) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Chassis) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Chassis.
func (*Component_Chassis) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Chassis_Utilization represents the /openconfig-platform/components/component/chassis/utilization YANG schema element.
type Component_Chassis_Utilization struct {
	ΛMetadata []ygot.Annotation                                  `path:"@" ygotAnnotation:"true"`
	Resource  map[string]*Component_Chassis_Utilization_Resource `path:"resources/resource" module:"openconfig-platform/openconfig-platform"`
	ΛResource []ygot.Annotation                                  `path:"resources/@resource" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Chassis_Utilization implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Chassis_Utilization) IsYANGGoStruct() {}

// NewResource creates a new entry in the Resource list of the
// Component_Chassis_Utilization struct. The keys of the list are populated from the input
// arguments.
func (t *Component_Chassis_Utilization) NewResource(Name string) (*Component_Chassis_Utilization_Resource, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Resource == nil {
		t.Resource = make(map[string]*Component_Chassis_Utilization_Resource)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Resource[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Resource", key)
	}

	t.Resource[key] = &Component_Chassis_Utilization_Resource{
		Name: &Name,
	}

	return t.Resource[key], nil
}

// RenameResource renames an entry in the list Resource within
// the Component_Chassis_Utilization struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Component_Chassis_Utilization) RenameResource(oldK, newK string) error {
	if _, ok := t.Resource[newK]; ok {
		return fmt.Errorf("key %v already exists in Resource", newK)
	}

	e, ok := t.Resource[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Resource", oldK)
	}
	e.Name = &newK

	t.Resource[newK] = e
	delete(t.Resource, oldK)
	return nil
}

// GetOrCreateResourceMap returns the list (map) from Component_Chassis_Utilization.
//
// It initializes the field if not already initialized.
func (t *Component_Chassis_Utilization) GetOrCreateResourceMap() map[string]*Component_Chassis_Utilization_Resource {
	if t.Resource == nil {
		t.Resource = make(map[string]*Component_Chassis_Utilization_Resource)
	}
	return t.Resource
}

// GetOrCreateResource retrieves the value with the specified keys from
// the receiver Component_Chassis_Utilization. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Component_Chassis_Utilization) GetOrCreateResource(Name string) *Component_Chassis_Utilization_Resource {

	key := Name

	if v, ok := t.Resource[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewResource(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateResource got unexpected error: %v", err))
	}
	return v
}

// GetResource retrieves the value with the specified key from
// the Resource map field of Component_Chassis_Utilization. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Component_Chassis_Utilization) GetResource(Name string) *Component_Chassis_Utilization_Resource {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Resource[key]; ok {
		return lm
	}
	return nil
}

// AppendResource appends the supplied Component_Chassis_Utilization_Resource struct to the
// list Resource of Component_Chassis_Utilization. If the key value(s) specified in
// the supplied Component_Chassis_Utilization_Resource already exist in the list, an error is
// returned.
func (t *Component_Chassis_Utilization) AppendResource(v *Component_Chassis_Utilization_Resource) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Resource == nil {
		t.Resource = make(map[string]*Component_Chassis_Utilization_Resource)
	}

	if _, ok := t.Resource[key]; ok {
		return fmt.Errorf("duplicate key for list Resource %v", key)
	}

	t.Resource[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Chassis_Utilization
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Chassis_Utilization) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Resource {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Chassis_Utilization) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Chassis_Utilization"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Chassis_Utilization) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Chassis_Utilization) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Chassis_Utilization.
func (*Component_Chassis_Utilization) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Chassis_Utilization_Resource represents the /openconfig-platform/components/component/chassis/utilization/resources/resource YANG schema element.
type Component_Chassis_Utilization_Resource struct {
	ΛMetadata                   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Committed                   *uint64           `path:"state/committed" module:"openconfig-platform/openconfig-platform"`
	ΛCommitted                  []ygot.Annotation `path:"state/@committed" ygotAnnotation:"true"`
	Free                        *uint64           `path:"state/free" module:"openconfig-platform/openconfig-platform"`
	ΛFree                       []ygot.Annotation `path:"state/@free" ygotAnnotation:"true"`
	HighWatermark               *uint64           `path:"state/high-watermark" module:"openconfig-platform/openconfig-platform"`
	ΛHighWatermark              []ygot.Annotation `path:"state/@high-watermark" ygotAnnotation:"true"`
	LastHighWatermark           *uint64           `path:"state/last-high-watermark" module:"openconfig-platform/openconfig-platform"`
	ΛLastHighWatermark          []ygot.Annotation `path:"state/@last-high-watermark" ygotAnnotation:"true"`
	MaxLimit                    *uint64           `path:"state/max-limit" module:"openconfig-platform/openconfig-platform"`
	ΛMaxLimit                   []ygot.Annotation `path:"state/@max-limit" ygotAnnotation:"true"`
	Name                        *string           `path:"config/name|name" module:"openconfig-platform/openconfig-platform|openconfig-platform"`
	ΛName                       []ygot.Annotation `path:"config/@name|@name" ygotAnnotation:"true"`
	Used                        *uint64           `path:"state/used" module:"openconfig-platform/openconfig-platform"`
	ΛUsed                       []ygot.Annotation `path:"state/@used" ygotAnnotation:"true"`
	UsedThresholdUpper          *uint8            `path:"config/used-threshold-upper" module:"openconfig-platform/openconfig-platform"`
	ΛUsedThresholdUpper         []ygot.Annotation `path:"config/@used-threshold-upper" ygotAnnotation:"true"`
	UsedThresholdUpperClear     *uint8            `path:"config/used-threshold-upper-clear" module:"openconfig-platform/openconfig-platform"`
	ΛUsedThresholdUpperClear    []ygot.Annotation `path:"config/@used-threshold-upper-clear" ygotAnnotation:"true"`
	UsedThresholdUpperExceeded  *bool             `path:"state/used-threshold-upper-exceeded" module:"openconfig-platform/openconfig-platform"`
	ΛUsedThresholdUpperExceeded []ygot.Annotation `path:"state/@used-threshold-upper-exceeded" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Chassis_Utilization_Resource implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Chassis_Utilization_Resource) IsYANGGoStruct() {}

// GetCommitted retrieves the value of the leaf Committed from the Component_Chassis_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Committed is set, it can
// safely use t.GetCommitted() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Committed == nil' before retrieving the leaf's value.
func (t *Component_Chassis_Utilization_Resource) GetCommitted() uint64 {
	if t == nil || t.Committed == nil {
		return 0
	}
	return *t.Committed
}

// GetFree retrieves the value of the leaf Free from the Component_Chassis_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Free is set, it can
// safely use t.GetFree() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Free == nil' before retrieving the leaf's value.
func (t *Component_Chassis_Utilization_Resource) GetFree() uint64 {
	if t == nil || t.Free == nil {
		return 0
	}
	return *t.Free
}

// GetHighWatermark retrieves the value of the leaf HighWatermark from the Component_Chassis_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HighWatermark is set, it can
// safely use t.GetHighWatermark() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HighWatermark == nil' before retrieving the leaf's value.
func (t *Component_Chassis_Utilization_Resource) GetHighWatermark() uint64 {
	if t == nil || t.HighWatermark == nil {
		return 0
	}
	return *t.HighWatermark
}

// GetLastHighWatermark retrieves the value of the leaf LastHighWatermark from the Component_Chassis_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastHighWatermark is set, it can
// safely use t.GetLastHighWatermark() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastHighWatermark == nil' before retrieving the leaf's value.
func (t *Component_Chassis_Utilization_Resource) GetLastHighWatermark() uint64 {
	if t == nil || t.LastHighWatermark == nil {
		return 0
	}
	return *t.LastHighWatermark
}

// GetMaxLimit retrieves the value of the leaf MaxLimit from the Component_Chassis_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxLimit is set, it can
// safely use t.GetMaxLimit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxLimit == nil' before retrieving the leaf's value.
func (t *Component_Chassis_Utilization_Resource) GetMaxLimit() uint64 {
	if t == nil || t.MaxLimit == nil {
		return 0
	}
	return *t.MaxLimit
}

// GetName retrieves the value of the leaf Name from the Component_Chassis_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Component_Chassis_Utilization_Resource) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetUsed retrieves the value of the leaf Used from the Component_Chassis_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Used is set, it can
// safely use t.GetUsed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Used == nil' before retrieving the leaf's value.
func (t *Component_Chassis_Utilization_Resource) GetUsed() uint64 {
	if t == nil || t.Used == nil {
		return 0
	}
	return *t.Used
}

// GetUsedThresholdUpper retrieves the value of the leaf UsedThresholdUpper from the Component_Chassis_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UsedThresholdUpper is set, it can
// safely use t.GetUsedThresholdUpper() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UsedThresholdUpper == nil' before retrieving the leaf's value.
func (t *Component_Chassis_Utilization_Resource) GetUsedThresholdUpper() uint8 {
	if t == nil || t.UsedThresholdUpper == nil {
		return 0
	}
	return *t.UsedThresholdUpper
}

// GetUsedThresholdUpperClear retrieves the value of the leaf UsedThresholdUpperClear from the Component_Chassis_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UsedThresholdUpperClear is set, it can
// safely use t.GetUsedThresholdUpperClear() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UsedThresholdUpperClear == nil' before retrieving the leaf's value.
func (t *Component_Chassis_Utilization_Resource) GetUsedThresholdUpperClear() uint8 {
	if t == nil || t.UsedThresholdUpperClear == nil {
		return 0
	}
	return *t.UsedThresholdUpperClear
}

// GetUsedThresholdUpperExceeded retrieves the value of the leaf UsedThresholdUpperExceeded from the Component_Chassis_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UsedThresholdUpperExceeded is set, it can
// safely use t.GetUsedThresholdUpperExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UsedThresholdUpperExceeded == nil' before retrieving the leaf's value.
func (t *Component_Chassis_Utilization_Resource) GetUsedThresholdUpperExceeded() bool {
	if t == nil || t.UsedThresholdUpperExceeded == nil {
		return false
	}
	return *t.UsedThresholdUpperExceeded
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Chassis_Utilization_Resource
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Chassis_Utilization_Resource) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the Component_Chassis_Utilization_Resource struct, which is a YANG list entry.
func (t *Component_Chassis_Utilization_Resource) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Chassis_Utilization_Resource) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Chassis_Utilization_Resource"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Chassis_Utilization_Resource) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Chassis_Utilization_Resource) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Chassis_Utilization_Resource.
func (*Component_Chassis_Utilization_Resource) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_ControllerCard represents the /openconfig-platform/components/component/controller-card YANG schema element.
type Component_ControllerCard struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_ControllerCard implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_ControllerCard) IsYANGGoStruct() {}

// PopulateDefaults recursively populates unset leaf fields in the Component_ControllerCard
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_ControllerCard) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_ControllerCard) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_ControllerCard"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_ControllerCard) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_ControllerCard) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_ControllerCard.
func (*Component_ControllerCard) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Cpu represents the /openconfig-platform/components/component/cpu YANG schema element.
type Component_Cpu struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Cpu implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Cpu) IsYANGGoStruct() {}

// PopulateDefaults recursively populates unset leaf fields in the Component_Cpu
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Cpu) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Cpu) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Cpu"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Cpu) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Cpu) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Cpu.
func (*Component_Cpu) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Fabric represents the /openconfig-platform/components/component/fabric YANG schema element.
type Component_Fabric struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Fabric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Fabric) IsYANGGoStruct() {}

// PopulateDefaults recursively populates unset leaf fields in the Component_Fabric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Fabric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Fabric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Fabric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Fabric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Fabric) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Fabric.
func (*Component_Fabric) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Fan represents the /openconfig-platform/components/component/fan YANG schema element.
type Component_Fan struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Fan implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Fan) IsYANGGoStruct() {}

// PopulateDefaults recursively populates unset leaf fields in the Component_Fan
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Fan) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Fan) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Fan"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Fan) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Fan) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Fan.
func (*Component_Fan) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_IntegratedCircuit represents the /openconfig-platform/components/component/integrated-circuit YANG schema element.
type Component_IntegratedCircuit struct {
	ΛMetadata    []ygot.Annotation                        `path:"@" ygotAnnotation:"true"`
	Utilization  *Component_IntegratedCircuit_Utilization `path:"utilization" module:"openconfig-platform"`
	ΛUtilization []ygot.Annotation                        `path:"@utilization" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_IntegratedCircuit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_IntegratedCircuit) IsYANGGoStruct() {}

// GetOrCreateUtilization retrieves the value of the Utilization field
// or returns the existing field if it already exists.
func (t *Component_IntegratedCircuit) GetOrCreateUtilization() *Component_IntegratedCircuit_Utilization {
	if t.Utilization != nil {
		return t.Utilization
	}
	t.Utilization = &Component_IntegratedCircuit_Utilization{}
	return t.Utilization
}

// GetUtilization returns the value of the Utilization struct pointer
// from Component_IntegratedCircuit. If the receiver or the field Utilization is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_IntegratedCircuit) GetUtilization() *Component_IntegratedCircuit_Utilization {
	if t != nil && t.Utilization != nil {
		return t.Utilization
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the Component_IntegratedCircuit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_IntegratedCircuit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Utilization.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_IntegratedCircuit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_IntegratedCircuit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_IntegratedCircuit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_IntegratedCircuit) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_IntegratedCircuit.
func (*Component_IntegratedCircuit) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_IntegratedCircuit_Utilization represents the /openconfig-platform/components/component/integrated-circuit/utilization YANG schema element.
type Component_IntegratedCircuit_Utilization struct {
	ΛMetadata []ygot.Annotation                                            `path:"@" ygotAnnotation:"true"`
	Resource  map[string]*Component_IntegratedCircuit_Utilization_Resource `path:"resources/resource" module:"openconfig-platform/openconfig-platform"`
	ΛResource []ygot.Annotation                                            `path:"resources/@resource" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_IntegratedCircuit_Utilization implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_IntegratedCircuit_Utilization) IsYANGGoStruct() {}

// NewResource creates a new entry in the Resource list of the
// Component_IntegratedCircuit_Utilization struct. The keys of the list are populated from the input
// arguments.
func (t *Component_IntegratedCircuit_Utilization) NewResource(Name string) (*Component_IntegratedCircuit_Utilization_Resource, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Resource == nil {
		t.Resource = make(map[string]*Component_IntegratedCircuit_Utilization_Resource)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Resource[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Resource", key)
	}

	t.Resource[key] = &Component_IntegratedCircuit_Utilization_Resource{
		Name: &Name,
	}

	return t.Resource[key], nil
}

// RenameResource renames an entry in the list Resource within
// the Component_IntegratedCircuit_Utilization struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Component_IntegratedCircuit_Utilization) RenameResource(oldK, newK string) error {
	if _, ok := t.Resource[newK]; ok {
		return fmt.Errorf("key %v already exists in Resource", newK)
	}

	e, ok := t.Resource[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Resource", oldK)
	}
	e.Name = &newK

	t.Resource[newK] = e
	delete(t.Resource, oldK)
	return nil
}

// GetOrCreateResourceMap returns the list (map) from Component_IntegratedCircuit_Utilization.
//
// It initializes the field if not already initialized.
func (t *Component_IntegratedCircuit_Utilization) GetOrCreateResourceMap() map[string]*Component_IntegratedCircuit_Utilization_Resource {
	if t.Resource == nil {
		t.Resource = make(map[string]*Component_IntegratedCircuit_Utilization_Resource)
	}
	return t.Resource
}

// GetOrCreateResource retrieves the value with the specified keys from
// the receiver Component_IntegratedCircuit_Utilization. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Component_IntegratedCircuit_Utilization) GetOrCreateResource(Name string) *Component_IntegratedCircuit_Utilization_Resource {

	key := Name

	if v, ok := t.Resource[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewResource(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateResource got unexpected error: %v", err))
	}
	return v
}

// GetResource retrieves the value with the specified key from
// the Resource map field of Component_IntegratedCircuit_Utilization. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Component_IntegratedCircuit_Utilization) GetResource(Name string) *Component_IntegratedCircuit_Utilization_Resource {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Resource[key]; ok {
		return lm
	}
	return nil
}

// AppendResource appends the supplied Component_IntegratedCircuit_Utilization_Resource struct to the
// list Resource of Component_IntegratedCircuit_Utilization. If the key value(s) specified in
// the supplied Component_IntegratedCircuit_Utilization_Resource already exist in the list, an error is
// returned.
func (t *Component_IntegratedCircuit_Utilization) AppendResource(v *Component_IntegratedCircuit_Utilization_Resource) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Resource == nil {
		t.Resource = make(map[string]*Component_IntegratedCircuit_Utilization_Resource)
	}

	if _, ok := t.Resource[key]; ok {
		return fmt.Errorf("duplicate key for list Resource %v", key)
	}

	t.Resource[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the Component_IntegratedCircuit_Utilization
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_IntegratedCircuit_Utilization) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Resource {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_IntegratedCircuit_Utilization) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_IntegratedCircuit_Utilization"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_IntegratedCircuit_Utilization) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_IntegratedCircuit_Utilization) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_IntegratedCircuit_Utilization.
func (*Component_IntegratedCircuit_Utilization) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_IntegratedCircuit_Utilization_Resource represents the /openconfig-platform/components/component/integrated-circuit/utilization/resources/resource YANG schema element.
type Component_IntegratedCircuit_Utilization_Resource struct {
	ΛMetadata                   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Committed                   *uint64           `path:"state/committed" module:"openconfig-platform/openconfig-platform"`
	ΛCommitted                  []ygot.Annotation `path:"state/@committed" ygotAnnotation:"true"`
	Free                        *uint64           `path:"state/free" module:"openconfig-platform/openconfig-platform"`
	ΛFree                       []ygot.Annotation `path:"state/@free" ygotAnnotation:"true"`
	HighWatermark               *uint64           `path:"state/high-watermark" module:"openconfig-platform/openconfig-platform"`
	ΛHighWatermark              []ygot.Annotation `path:"state/@high-watermark" ygotAnnotation:"true"`
	LastHighWatermark           *uint64           `path:"state/last-high-watermark" module:"openconfig-platform/openconfig-platform"`
	ΛLastHighWatermark          []ygot.Annotation `path:"state/@last-high-watermark" ygotAnnotation:"true"`
	MaxLimit                    *uint64           `path:"state/max-limit" module:"openconfig-platform/openconfig-platform"`
	ΛMaxLimit                   []ygot.Annotation `path:"state/@max-limit" ygotAnnotation:"true"`
	Name                        *string           `path:"config/name|name" module:"openconfig-platform/openconfig-platform|openconfig-platform"`
	ΛName                       []ygot.Annotation `path:"config/@name|@name" ygotAnnotation:"true"`
	Used                        *uint64           `path:"state/used" module:"openconfig-platform/openconfig-platform"`
	ΛUsed                       []ygot.Annotation `path:"state/@used" ygotAnnotation:"true"`
	UsedThresholdUpper          *uint8            `path:"config/used-threshold-upper" module:"openconfig-platform/openconfig-platform"`
	ΛUsedThresholdUpper         []ygot.Annotation `path:"config/@used-threshold-upper" ygotAnnotation:"true"`
	UsedThresholdUpperClear     *uint8            `path:"config/used-threshold-upper-clear" module:"openconfig-platform/openconfig-platform"`
	ΛUsedThresholdUpperClear    []ygot.Annotation `path:"config/@used-threshold-upper-clear" ygotAnnotation:"true"`
	UsedThresholdUpperExceeded  *bool             `path:"state/used-threshold-upper-exceeded" module:"openconfig-platform/openconfig-platform"`
	ΛUsedThresholdUpperExceeded []ygot.Annotation `path:"state/@used-threshold-upper-exceeded" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_IntegratedCircuit_Utilization_Resource implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_IntegratedCircuit_Utilization_Resource) IsYANGGoStruct() {}

// GetCommitted retrieves the value of the leaf Committed from the Component_IntegratedCircuit_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Committed is set, it can
// safely use t.GetCommitted() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Committed == nil' before retrieving the leaf's value.
func (t *Component_IntegratedCircuit_Utilization_Resource) GetCommitted() uint64 {
	if t == nil || t.Committed == nil {
		return 0
	}
	return *t.Committed
}

// GetFree retrieves the value of the leaf Free from the Component_IntegratedCircuit_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Free is set, it can
// safely use t.GetFree() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Free == nil' before retrieving the leaf's value.
func (t *Component_IntegratedCircuit_Utilization_Resource) GetFree() uint64 {
	if t == nil || t.Free == nil {
		return 0
	}
	return *t.Free
}

// GetHighWatermark retrieves the value of the leaf HighWatermark from the Component_IntegratedCircuit_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HighWatermark is set, it can
// safely use t.GetHighWatermark() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HighWatermark == nil' before retrieving the leaf's value.
func (t *Component_IntegratedCircuit_Utilization_Resource) GetHighWatermark() uint64 {
	if t == nil || t.HighWatermark == nil {
		return 0
	}
	return *t.HighWatermark
}

// GetLastHighWatermark retrieves the value of the leaf LastHighWatermark from the Component_IntegratedCircuit_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastHighWatermark is set, it can
// safely use t.GetLastHighWatermark() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastHighWatermark == nil' before retrieving the leaf's value.
func (t *Component_IntegratedCircuit_Utilization_Resource) GetLastHighWatermark() uint64 {
	if t == nil || t.LastHighWatermark == nil {
		return 0
	}
	return *t.LastHighWatermark
}

// GetMaxLimit retrieves the value of the leaf MaxLimit from the Component_IntegratedCircuit_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxLimit is set, it can
// safely use t.GetMaxLimit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxLimit == nil' before retrieving the leaf's value.
func (t *Component_IntegratedCircuit_Utilization_Resource) GetMaxLimit() uint64 {
	if t == nil || t.MaxLimit == nil {
		return 0
	}
	return *t.MaxLimit
}

// GetName retrieves the value of the leaf Name from the Component_IntegratedCircuit_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Component_IntegratedCircuit_Utilization_Resource) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetUsed retrieves the value of the leaf Used from the Component_IntegratedCircuit_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Used is set, it can
// safely use t.GetUsed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Used == nil' before retrieving the leaf's value.
func (t *Component_IntegratedCircuit_Utilization_Resource) GetUsed() uint64 {
	if t == nil || t.Used == nil {
		return 0
	}
	return *t.Used
}

// GetUsedThresholdUpper retrieves the value of the leaf UsedThresholdUpper from the Component_IntegratedCircuit_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UsedThresholdUpper is set, it can
// safely use t.GetUsedThresholdUpper() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UsedThresholdUpper == nil' before retrieving the leaf's value.
func (t *Component_IntegratedCircuit_Utilization_Resource) GetUsedThresholdUpper() uint8 {
	if t == nil || t.UsedThresholdUpper == nil {
		return 0
	}
	return *t.UsedThresholdUpper
}

// GetUsedThresholdUpperClear retrieves the value of the leaf UsedThresholdUpperClear from the Component_IntegratedCircuit_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UsedThresholdUpperClear is set, it can
// safely use t.GetUsedThresholdUpperClear() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UsedThresholdUpperClear == nil' before retrieving the leaf's value.
func (t *Component_IntegratedCircuit_Utilization_Resource) GetUsedThresholdUpperClear() uint8 {
	if t == nil || t.UsedThresholdUpperClear == nil {
		return 0
	}
	return *t.UsedThresholdUpperClear
}

// GetUsedThresholdUpperExceeded retrieves the value of the leaf UsedThresholdUpperExceeded from the Component_IntegratedCircuit_Utilization_Resource
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UsedThresholdUpperExceeded is set, it can
// safely use t.GetUsedThresholdUpperExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UsedThresholdUpperExceeded == nil' before retrieving the leaf's value.
func (t *Component_IntegratedCircuit_Utilization_Resource) GetUsedThresholdUpperExceeded() bool {
	if t == nil || t.UsedThresholdUpperExceeded == nil {
		return false
	}
	return *t.UsedThresholdUpperExceeded
}

// PopulateDefaults recursively populates unset leaf fields in the Component_IntegratedCircuit_Utilization_Resource
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_IntegratedCircuit_Utilization_Resource) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the Component_IntegratedCircuit_Utilization_Resource struct, which is a YANG list entry.
func (t *Component_IntegratedCircuit_Utilization_Resource) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_IntegratedCircuit_Utilization_Resource) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_IntegratedCircuit_Utilization_Resource"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_IntegratedCircuit_Utilization_Resource) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_IntegratedCircuit_Utilization_Resource) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_IntegratedCircuit_Utilization_Resource.
func (*Component_IntegratedCircuit_Utilization_Resource) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_LastSwitchoverReason represents the /openconfig-platform/components/component/state/last-switchover-reason YANG schema element.
type Component_LastSwitchoverReason struct {
	ΛMetadata []ygot.Annotation                                             `path:"@" ygotAnnotation:"true"`
	Details   *string                                                       `path:"details" module:"openconfig-platform"`
	ΛDetails  []ygot.Annotation                                             `path:"@details" ygotAnnotation:"true"`
	Trigger   E_PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger `path:"trigger" module:"openconfig-platform"`
	ΛTrigger  []ygot.Annotation                                             `path:"@trigger" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_LastSwitchoverReason implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_LastSwitchoverReason) IsYANGGoStruct() {}

// GetDetails retrieves the value of the leaf Details from the Component_LastSwitchoverReason
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Details is set, it can
// safely use t.GetDetails() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Details == nil' before retrieving the leaf's value.
func (t *Component_LastSwitchoverReason) GetDetails() string {
	if t == nil || t.Details == nil {
		return ""
	}
	return *t.Details
}

// GetTrigger retrieves the value of the leaf Trigger from the Component_LastSwitchoverReason
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Trigger is set, it can
// safely use t.GetTrigger() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Trigger == nil' before retrieving the leaf's value.
func (t *Component_LastSwitchoverReason) GetTrigger() E_PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger {
	if t == nil || t.Trigger == 0 {
		return 0
	}
	return t.Trigger
}

// PopulateDefaults recursively populates unset leaf fields in the Component_LastSwitchoverReason
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_LastSwitchoverReason) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_LastSwitchoverReason) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_LastSwitchoverReason"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_LastSwitchoverReason) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_LastSwitchoverReason) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_LastSwitchoverReason.
func (*Component_LastSwitchoverReason) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Memory represents the /openconfig-platform/components/component/state/memory YANG schema element.
type Component_Memory struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Available  *uint64           `path:"available" module:"openconfig-platform"`
	ΛAvailable []ygot.Annotation `path:"@available" ygotAnnotation:"true"`
	Utilized   *uint64           `path:"utilized" module:"openconfig-platform"`
	ΛUtilized  []ygot.Annotation `path:"@utilized" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Memory implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Memory) IsYANGGoStruct() {}

// GetAvailable retrieves the value of the leaf Available from the Component_Memory
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Available is set, it can
// safely use t.GetAvailable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Available == nil' before retrieving the leaf's value.
func (t *Component_Memory) GetAvailable() uint64 {
	if t == nil || t.Available == nil {
		return 0
	}
	return *t.Available
}

// GetUtilized retrieves the value of the leaf Utilized from the Component_Memory
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Utilized is set, it can
// safely use t.GetUtilized() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Utilized == nil' before retrieving the leaf's value.
func (t *Component_Memory) GetUtilized() uint64 {
	if t == nil || t.Utilized == nil {
		return 0
	}
	return *t.Utilized
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Memory
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Memory) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Memory) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Memory"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Memory) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Memory) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Memory.
func (*Component_Memory) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_OpticalChannel represents the /openconfig-platform/components/component/optical-channel YANG schema element.
type Component_OpticalChannel struct {
	ΛMetadata                              []ygot.Annotation                                               `path:"@" ygotAnnotation:"true"`
	CarrierFrequencyOffset                 *Component_OpticalChannel_CarrierFrequencyOffset                `path:"state/carrier-frequency-offset" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛCarrierFrequencyOffset                []ygot.Annotation                                               `path:"state/@carrier-frequency-offset" ygotAnnotation:"true"`
	ChromaticDispersion                    *Component_OpticalChannel_ChromaticDispersion                   `path:"state/chromatic-dispersion" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛChromaticDispersion                   []ygot.Annotation                                               `path:"state/@chromatic-dispersion" ygotAnnotation:"true"`
	Esnr                                   *Component_OpticalChannel_Esnr                                  `path:"state/esnr" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛEsnr                                  []ygot.Annotation                                               `path:"state/@esnr" ygotAnnotation:"true"`
	FecUncorrectableBlocks                 *uint64                                                         `path:"state/fec-uncorrectable-blocks" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛFecUncorrectableBlocks                []ygot.Annotation                                               `path:"state/@fec-uncorrectable-blocks" ygotAnnotation:"true"`
	Frequency                              *uint64                                                         `path:"config/frequency" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛFrequency                             []ygot.Annotation                                               `path:"config/@frequency" ygotAnnotation:"true"`
	GroupId                                *uint32                                                         `path:"state/group-id" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛGroupId                               []ygot.Annotation                                               `path:"state/@group-id" ygotAnnotation:"true"`
	InputPower                             *Component_OpticalChannel_InputPower                            `path:"state/input-power" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInputPower                            []ygot.Annotation                                               `path:"state/@input-power" ygotAnnotation:"true"`
	LaserBiasCurrent                       *Component_OpticalChannel_LaserBiasCurrent                      `path:"state/laser-bias-current" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛLaserBiasCurrent                      []ygot.Annotation                                               `path:"state/@laser-bias-current" ygotAnnotation:"true"`
	LinePort                               *string                                                         `path:"config/line-port" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛLinePort                              []ygot.Annotation                                               `path:"config/@line-port" ygotAnnotation:"true"`
	ModulationErrorRatio                   *Component_OpticalChannel_ModulationErrorRatio                  `path:"state/modulation-error-ratio" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛModulationErrorRatio                  []ygot.Annotation                                               `path:"state/@modulation-error-ratio" ygotAnnotation:"true"`
	ModulatorBiasXPhase                    *Component_OpticalChannel_ModulatorBiasXPhase                   `path:"state/modulator-bias-x-phase" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛModulatorBiasXPhase                   []ygot.Annotation                                               `path:"state/@modulator-bias-x-phase" ygotAnnotation:"true"`
	ModulatorBiasXi                        *Component_OpticalChannel_ModulatorBiasXi                       `path:"state/modulator-bias-xi" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛModulatorBiasXi                       []ygot.Annotation                                               `path:"state/@modulator-bias-xi" ygotAnnotation:"true"`
	ModulatorBiasXq                        *Component_OpticalChannel_ModulatorBiasXq                       `path:"state/modulator-bias-xq" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛModulatorBiasXq                       []ygot.Annotation                                               `path:"state/@modulator-bias-xq" ygotAnnotation:"true"`
	ModulatorBiasYPhase                    *Component_OpticalChannel_ModulatorBiasYPhase                   `path:"state/modulator-bias-y-phase" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛModulatorBiasYPhase                   []ygot.Annotation                                               `path:"state/@modulator-bias-y-phase" ygotAnnotation:"true"`
	ModulatorBiasYi                        *Component_OpticalChannel_ModulatorBiasYi                       `path:"state/modulator-bias-yi" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛModulatorBiasYi                       []ygot.Annotation                                               `path:"state/@modulator-bias-yi" ygotAnnotation:"true"`
	ModulatorBiasYq                        *Component_OpticalChannel_ModulatorBiasYq                       `path:"state/modulator-bias-yq" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛModulatorBiasYq                       []ygot.Annotation                                               `path:"state/@modulator-bias-yq" ygotAnnotation:"true"`
	OperationalMode                        *uint16                                                         `path:"config/operational-mode" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛOperationalMode                       []ygot.Annotation                                               `path:"config/@operational-mode" ygotAnnotation:"true"`
	Osnr                                   *Component_OpticalChannel_Osnr                                  `path:"state/osnr" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛOsnr                                  []ygot.Annotation                                               `path:"state/@osnr" ygotAnnotation:"true"`
	OutputPower                            *Component_OpticalChannel_OutputPower                           `path:"state/output-power" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛOutputPower                           []ygot.Annotation                                               `path:"state/@output-power" ygotAnnotation:"true"`
	PolarizationDependentLoss              *Component_OpticalChannel_PolarizationDependentLoss             `path:"state/polarization-dependent-loss" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛPolarizationDependentLoss             []ygot.Annotation                                               `path:"state/@polarization-dependent-loss" ygotAnnotation:"true"`
	PolarizationModeDispersion             *Component_OpticalChannel_PolarizationModeDispersion            `path:"state/polarization-mode-dispersion" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛPolarizationModeDispersion            []ygot.Annotation                                               `path:"state/@polarization-mode-dispersion" ygotAnnotation:"true"`
	PostFecBer                             *Component_OpticalChannel_PostFecBer                            `path:"state/post-fec-ber" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛPostFecBer                            []ygot.Annotation                                               `path:"state/@post-fec-ber" ygotAnnotation:"true"`
	PreFecBer                              *Component_OpticalChannel_PreFecBer                             `path:"state/pre-fec-ber" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛPreFecBer                             []ygot.Annotation                                               `path:"state/@pre-fec-ber" ygotAnnotation:"true"`
	QValue                                 *Component_OpticalChannel_QValue                                `path:"state/q-value" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛQValue                                []ygot.Annotation                                               `path:"state/@q-value" ygotAnnotation:"true"`
	SecondOrderPolarizationModeDispersion  *Component_OpticalChannel_SecondOrderPolarizationModeDispersion `path:"state/second-order-polarization-mode-dispersion" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛSecondOrderPolarizationModeDispersion []ygot.Annotation                                               `path:"state/@second-order-polarization-mode-dispersion" ygotAnnotation:"true"`
	SopRoc                                 *Component_OpticalChannel_SopRoc                                `path:"state/sop-roc" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛSopRoc                                []ygot.Annotation                                               `path:"state/@sop-roc" ygotAnnotation:"true"`
	TargetOutputPower                      *float64                                                        `path:"config/target-output-power" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛTargetOutputPower                     []ygot.Annotation                                               `path:"config/@target-output-power" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel) IsYANGGoStruct() {}

// GetOrCreateCarrierFrequencyOffset retrieves the value of the CarrierFrequencyOffset field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreateCarrierFrequencyOffset() *Component_OpticalChannel_CarrierFrequencyOffset {
	if t.CarrierFrequencyOffset != nil {
		return t.CarrierFrequencyOffset
	}
	t.CarrierFrequencyOffset = &Component_OpticalChannel_CarrierFrequencyOffset{}
	return t.CarrierFrequencyOffset
}

// GetOrCreateChromaticDispersion retrieves the value of the ChromaticDispersion field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreateChromaticDispersion() *Component_OpticalChannel_ChromaticDispersion {
	if t.ChromaticDispersion != nil {
		return t.ChromaticDispersion
	}
	t.ChromaticDispersion = &Component_OpticalChannel_ChromaticDispersion{}
	return t.ChromaticDispersion
}

// GetOrCreateEsnr retrieves the value of the Esnr field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreateEsnr() *Component_OpticalChannel_Esnr {
	if t.Esnr != nil {
		return t.Esnr
	}
	t.Esnr = &Component_OpticalChannel_Esnr{}
	return t.Esnr
}

// GetOrCreateInputPower retrieves the value of the InputPower field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreateInputPower() *Component_OpticalChannel_InputPower {
	if t.InputPower != nil {
		return t.InputPower
	}
	t.InputPower = &Component_OpticalChannel_InputPower{}
	return t.InputPower
}

// GetOrCreateLaserBiasCurrent retrieves the value of the LaserBiasCurrent field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreateLaserBiasCurrent() *Component_OpticalChannel_LaserBiasCurrent {
	if t.LaserBiasCurrent != nil {
		return t.LaserBiasCurrent
	}
	t.LaserBiasCurrent = &Component_OpticalChannel_LaserBiasCurrent{}
	return t.LaserBiasCurrent
}

// GetOrCreateModulationErrorRatio retrieves the value of the ModulationErrorRatio field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreateModulationErrorRatio() *Component_OpticalChannel_ModulationErrorRatio {
	if t.ModulationErrorRatio != nil {
		return t.ModulationErrorRatio
	}
	t.ModulationErrorRatio = &Component_OpticalChannel_ModulationErrorRatio{}
	return t.ModulationErrorRatio
}

// GetOrCreateModulatorBiasXPhase retrieves the value of the ModulatorBiasXPhase field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreateModulatorBiasXPhase() *Component_OpticalChannel_ModulatorBiasXPhase {
	if t.ModulatorBiasXPhase != nil {
		return t.ModulatorBiasXPhase
	}
	t.ModulatorBiasXPhase = &Component_OpticalChannel_ModulatorBiasXPhase{}
	return t.ModulatorBiasXPhase
}

// GetOrCreateModulatorBiasXi retrieves the value of the ModulatorBiasXi field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreateModulatorBiasXi() *Component_OpticalChannel_ModulatorBiasXi {
	if t.ModulatorBiasXi != nil {
		return t.ModulatorBiasXi
	}
	t.ModulatorBiasXi = &Component_OpticalChannel_ModulatorBiasXi{}
	return t.ModulatorBiasXi
}

// GetOrCreateModulatorBiasXq retrieves the value of the ModulatorBiasXq field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreateModulatorBiasXq() *Component_OpticalChannel_ModulatorBiasXq {
	if t.ModulatorBiasXq != nil {
		return t.ModulatorBiasXq
	}
	t.ModulatorBiasXq = &Component_OpticalChannel_ModulatorBiasXq{}
	return t.ModulatorBiasXq
}

// GetOrCreateModulatorBiasYPhase retrieves the value of the ModulatorBiasYPhase field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreateModulatorBiasYPhase() *Component_OpticalChannel_ModulatorBiasYPhase {
	if t.ModulatorBiasYPhase != nil {
		return t.ModulatorBiasYPhase
	}
	t.ModulatorBiasYPhase = &Component_OpticalChannel_ModulatorBiasYPhase{}
	return t.ModulatorBiasYPhase
}

// GetOrCreateModulatorBiasYi retrieves the value of the ModulatorBiasYi field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreateModulatorBiasYi() *Component_OpticalChannel_ModulatorBiasYi {
	if t.ModulatorBiasYi != nil {
		return t.ModulatorBiasYi
	}
	t.ModulatorBiasYi = &Component_OpticalChannel_ModulatorBiasYi{}
	return t.ModulatorBiasYi
}

// GetOrCreateModulatorBiasYq retrieves the value of the ModulatorBiasYq field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreateModulatorBiasYq() *Component_OpticalChannel_ModulatorBiasYq {
	if t.ModulatorBiasYq != nil {
		return t.ModulatorBiasYq
	}
	t.ModulatorBiasYq = &Component_OpticalChannel_ModulatorBiasYq{}
	return t.ModulatorBiasYq
}

// GetOrCreateOsnr retrieves the value of the Osnr field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreateOsnr() *Component_OpticalChannel_Osnr {
	if t.Osnr != nil {
		return t.Osnr
	}
	t.Osnr = &Component_OpticalChannel_Osnr{}
	return t.Osnr
}

// GetOrCreateOutputPower retrieves the value of the OutputPower field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreateOutputPower() *Component_OpticalChannel_OutputPower {
	if t.OutputPower != nil {
		return t.OutputPower
	}
	t.OutputPower = &Component_OpticalChannel_OutputPower{}
	return t.OutputPower
}

// GetOrCreatePolarizationDependentLoss retrieves the value of the PolarizationDependentLoss field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreatePolarizationDependentLoss() *Component_OpticalChannel_PolarizationDependentLoss {
	if t.PolarizationDependentLoss != nil {
		return t.PolarizationDependentLoss
	}
	t.PolarizationDependentLoss = &Component_OpticalChannel_PolarizationDependentLoss{}
	return t.PolarizationDependentLoss
}

// GetOrCreatePolarizationModeDispersion retrieves the value of the PolarizationModeDispersion field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreatePolarizationModeDispersion() *Component_OpticalChannel_PolarizationModeDispersion {
	if t.PolarizationModeDispersion != nil {
		return t.PolarizationModeDispersion
	}
	t.PolarizationModeDispersion = &Component_OpticalChannel_PolarizationModeDispersion{}
	return t.PolarizationModeDispersion
}

// GetOrCreatePostFecBer retrieves the value of the PostFecBer field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreatePostFecBer() *Component_OpticalChannel_PostFecBer {
	if t.PostFecBer != nil {
		return t.PostFecBer
	}
	t.PostFecBer = &Component_OpticalChannel_PostFecBer{}
	return t.PostFecBer
}

// GetOrCreatePreFecBer retrieves the value of the PreFecBer field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreatePreFecBer() *Component_OpticalChannel_PreFecBer {
	if t.PreFecBer != nil {
		return t.PreFecBer
	}
	t.PreFecBer = &Component_OpticalChannel_PreFecBer{}
	return t.PreFecBer
}

// GetOrCreateQValue retrieves the value of the QValue field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreateQValue() *Component_OpticalChannel_QValue {
	if t.QValue != nil {
		return t.QValue
	}
	t.QValue = &Component_OpticalChannel_QValue{}
	return t.QValue
}

// GetOrCreateSecondOrderPolarizationModeDispersion retrieves the value of the SecondOrderPolarizationModeDispersion field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreateSecondOrderPolarizationModeDispersion() *Component_OpticalChannel_SecondOrderPolarizationModeDispersion {
	if t.SecondOrderPolarizationModeDispersion != nil {
		return t.SecondOrderPolarizationModeDispersion
	}
	t.SecondOrderPolarizationModeDispersion = &Component_OpticalChannel_SecondOrderPolarizationModeDispersion{}
	return t.SecondOrderPolarizationModeDispersion
}

// GetOrCreateSopRoc retrieves the value of the SopRoc field
// or returns the existing field if it already exists.
func (t *Component_OpticalChannel) GetOrCreateSopRoc() *Component_OpticalChannel_SopRoc {
	if t.SopRoc != nil {
		return t.SopRoc
	}
	t.SopRoc = &Component_OpticalChannel_SopRoc{}
	return t.SopRoc
}

// GetCarrierFrequencyOffset returns the value of the CarrierFrequencyOffset struct pointer
// from Component_OpticalChannel. If the receiver or the field CarrierFrequencyOffset is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetCarrierFrequencyOffset() *Component_OpticalChannel_CarrierFrequencyOffset {
	if t != nil && t.CarrierFrequencyOffset != nil {
		return t.CarrierFrequencyOffset
	}
	return nil
}

// GetChromaticDispersion returns the value of the ChromaticDispersion struct pointer
// from Component_OpticalChannel. If the receiver or the field ChromaticDispersion is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetChromaticDispersion() *Component_OpticalChannel_ChromaticDispersion {
	if t != nil && t.ChromaticDispersion != nil {
		return t.ChromaticDispersion
	}
	return nil
}

// GetEsnr returns the value of the Esnr struct pointer
// from Component_OpticalChannel. If the receiver or the field Esnr is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetEsnr() *Component_OpticalChannel_Esnr {
	if t != nil && t.Esnr != nil {
		return t.Esnr
	}
	return nil
}

// GetInputPower returns the value of the InputPower struct pointer
// from Component_OpticalChannel. If the receiver or the field InputPower is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetInputPower() *Component_OpticalChannel_InputPower {
	if t != nil && t.InputPower != nil {
		return t.InputPower
	}
	return nil
}

// GetLaserBiasCurrent returns the value of the LaserBiasCurrent struct pointer
// from Component_OpticalChannel. If the receiver or the field LaserBiasCurrent is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetLaserBiasCurrent() *Component_OpticalChannel_LaserBiasCurrent {
	if t != nil && t.LaserBiasCurrent != nil {
		return t.LaserBiasCurrent
	}
	return nil
}

// GetModulationErrorRatio returns the value of the ModulationErrorRatio struct pointer
// from Component_OpticalChannel. If the receiver or the field ModulationErrorRatio is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetModulationErrorRatio() *Component_OpticalChannel_ModulationErrorRatio {
	if t != nil && t.ModulationErrorRatio != nil {
		return t.ModulationErrorRatio
	}
	return nil
}

// GetModulatorBiasXPhase returns the value of the ModulatorBiasXPhase struct pointer
// from Component_OpticalChannel. If the receiver or the field ModulatorBiasXPhase is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetModulatorBiasXPhase() *Component_OpticalChannel_ModulatorBiasXPhase {
	if t != nil && t.ModulatorBiasXPhase != nil {
		return t.ModulatorBiasXPhase
	}
	return nil
}

// GetModulatorBiasXi returns the value of the ModulatorBiasXi struct pointer
// from Component_OpticalChannel. If the receiver or the field ModulatorBiasXi is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetModulatorBiasXi() *Component_OpticalChannel_ModulatorBiasXi {
	if t != nil && t.ModulatorBiasXi != nil {
		return t.ModulatorBiasXi
	}
	return nil
}

// GetModulatorBiasXq returns the value of the ModulatorBiasXq struct pointer
// from Component_OpticalChannel. If the receiver or the field ModulatorBiasXq is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetModulatorBiasXq() *Component_OpticalChannel_ModulatorBiasXq {
	if t != nil && t.ModulatorBiasXq != nil {
		return t.ModulatorBiasXq
	}
	return nil
}

// GetModulatorBiasYPhase returns the value of the ModulatorBiasYPhase struct pointer
// from Component_OpticalChannel. If the receiver or the field ModulatorBiasYPhase is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetModulatorBiasYPhase() *Component_OpticalChannel_ModulatorBiasYPhase {
	if t != nil && t.ModulatorBiasYPhase != nil {
		return t.ModulatorBiasYPhase
	}
	return nil
}

// GetModulatorBiasYi returns the value of the ModulatorBiasYi struct pointer
// from Component_OpticalChannel. If the receiver or the field ModulatorBiasYi is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetModulatorBiasYi() *Component_OpticalChannel_ModulatorBiasYi {
	if t != nil && t.ModulatorBiasYi != nil {
		return t.ModulatorBiasYi
	}
	return nil
}

// GetModulatorBiasYq returns the value of the ModulatorBiasYq struct pointer
// from Component_OpticalChannel. If the receiver or the field ModulatorBiasYq is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetModulatorBiasYq() *Component_OpticalChannel_ModulatorBiasYq {
	if t != nil && t.ModulatorBiasYq != nil {
		return t.ModulatorBiasYq
	}
	return nil
}

// GetOsnr returns the value of the Osnr struct pointer
// from Component_OpticalChannel. If the receiver or the field Osnr is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetOsnr() *Component_OpticalChannel_Osnr {
	if t != nil && t.Osnr != nil {
		return t.Osnr
	}
	return nil
}

// GetOutputPower returns the value of the OutputPower struct pointer
// from Component_OpticalChannel. If the receiver or the field OutputPower is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetOutputPower() *Component_OpticalChannel_OutputPower {
	if t != nil && t.OutputPower != nil {
		return t.OutputPower
	}
	return nil
}

// GetPolarizationDependentLoss returns the value of the PolarizationDependentLoss struct pointer
// from Component_OpticalChannel. If the receiver or the field PolarizationDependentLoss is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetPolarizationDependentLoss() *Component_OpticalChannel_PolarizationDependentLoss {
	if t != nil && t.PolarizationDependentLoss != nil {
		return t.PolarizationDependentLoss
	}
	return nil
}

// GetPolarizationModeDispersion returns the value of the PolarizationModeDispersion struct pointer
// from Component_OpticalChannel. If the receiver or the field PolarizationModeDispersion is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetPolarizationModeDispersion() *Component_OpticalChannel_PolarizationModeDispersion {
	if t != nil && t.PolarizationModeDispersion != nil {
		return t.PolarizationModeDispersion
	}
	return nil
}

// GetPostFecBer returns the value of the PostFecBer struct pointer
// from Component_OpticalChannel. If the receiver or the field PostFecBer is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetPostFecBer() *Component_OpticalChannel_PostFecBer {
	if t != nil && t.PostFecBer != nil {
		return t.PostFecBer
	}
	return nil
}

// GetPreFecBer returns the value of the PreFecBer struct pointer
// from Component_OpticalChannel. If the receiver or the field PreFecBer is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetPreFecBer() *Component_OpticalChannel_PreFecBer {
	if t != nil && t.PreFecBer != nil {
		return t.PreFecBer
	}
	return nil
}

// GetQValue returns the value of the QValue struct pointer
// from Component_OpticalChannel. If the receiver or the field QValue is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetQValue() *Component_OpticalChannel_QValue {
	if t != nil && t.QValue != nil {
		return t.QValue
	}
	return nil
}

// GetSecondOrderPolarizationModeDispersion returns the value of the SecondOrderPolarizationModeDispersion struct pointer
// from Component_OpticalChannel. If the receiver or the field SecondOrderPolarizationModeDispersion is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetSecondOrderPolarizationModeDispersion() *Component_OpticalChannel_SecondOrderPolarizationModeDispersion {
	if t != nil && t.SecondOrderPolarizationModeDispersion != nil {
		return t.SecondOrderPolarizationModeDispersion
	}
	return nil
}

// GetSopRoc returns the value of the SopRoc struct pointer
// from Component_OpticalChannel. If the receiver or the field SopRoc is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_OpticalChannel) GetSopRoc() *Component_OpticalChannel_SopRoc {
	if t != nil && t.SopRoc != nil {
		return t.SopRoc
	}
	return nil
}

// GetFecUncorrectableBlocks retrieves the value of the leaf FecUncorrectableBlocks from the Component_OpticalChannel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FecUncorrectableBlocks is set, it can
// safely use t.GetFecUncorrectableBlocks() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FecUncorrectableBlocks == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel) GetFecUncorrectableBlocks() uint64 {
	if t == nil || t.FecUncorrectableBlocks == nil {
		return 0
	}
	return *t.FecUncorrectableBlocks
}

// GetFrequency retrieves the value of the leaf Frequency from the Component_OpticalChannel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Frequency is set, it can
// safely use t.GetFrequency() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Frequency == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel) GetFrequency() uint64 {
	if t == nil || t.Frequency == nil {
		return 0
	}
	return *t.Frequency
}

// GetGroupId retrieves the value of the leaf GroupId from the Component_OpticalChannel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if GroupId is set, it can
// safely use t.GetGroupId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.GroupId == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel) GetGroupId() uint32 {
	if t == nil || t.GroupId == nil {
		return 0
	}
	return *t.GroupId
}

// GetLinePort retrieves the value of the leaf LinePort from the Component_OpticalChannel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinePort is set, it can
// safely use t.GetLinePort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinePort == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel) GetLinePort() string {
	if t == nil || t.LinePort == nil {
		return ""
	}
	return *t.LinePort
}

// GetOperationalMode retrieves the value of the leaf OperationalMode from the Component_OpticalChannel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OperationalMode is set, it can
// safely use t.GetOperationalMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OperationalMode == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel) GetOperationalMode() uint16 {
	if t == nil || t.OperationalMode == nil {
		return 0
	}
	return *t.OperationalMode
}

// GetTargetOutputPower retrieves the value of the leaf TargetOutputPower from the Component_OpticalChannel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TargetOutputPower is set, it can
// safely use t.GetTargetOutputPower() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TargetOutputPower == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel) GetTargetOutputPower() float64 {
	if t == nil || t.TargetOutputPower == nil {
		return 0.0
	}
	return *t.TargetOutputPower
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.CarrierFrequencyOffset.PopulateDefaults()
	t.ChromaticDispersion.PopulateDefaults()
	t.Esnr.PopulateDefaults()
	t.InputPower.PopulateDefaults()
	t.LaserBiasCurrent.PopulateDefaults()
	t.ModulationErrorRatio.PopulateDefaults()
	t.ModulatorBiasXPhase.PopulateDefaults()
	t.ModulatorBiasXi.PopulateDefaults()
	t.ModulatorBiasXq.PopulateDefaults()
	t.ModulatorBiasYPhase.PopulateDefaults()
	t.ModulatorBiasYi.PopulateDefaults()
	t.ModulatorBiasYq.PopulateDefaults()
	t.Osnr.PopulateDefaults()
	t.OutputPower.PopulateDefaults()
	t.PolarizationDependentLoss.PopulateDefaults()
	t.PolarizationModeDispersion.PopulateDefaults()
	t.PostFecBer.PopulateDefaults()
	t.PreFecBer.PopulateDefaults()
	t.QValue.PopulateDefaults()
	t.SecondOrderPolarizationModeDispersion.PopulateDefaults()
	t.SopRoc.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel.
func (*Component_OpticalChannel) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_CarrierFrequencyOffset represents the /openconfig-platform/components/component/optical-channel/state/carrier-frequency-offset YANG schema element.
type Component_OpticalChannel_CarrierFrequencyOffset struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_CarrierFrequencyOffset implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_CarrierFrequencyOffset) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_CarrierFrequencyOffset
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_CarrierFrequencyOffset) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_CarrierFrequencyOffset
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_CarrierFrequencyOffset) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_CarrierFrequencyOffset
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_CarrierFrequencyOffset) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_CarrierFrequencyOffset
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_CarrierFrequencyOffset) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_CarrierFrequencyOffset
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_CarrierFrequencyOffset) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_CarrierFrequencyOffset
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_CarrierFrequencyOffset) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_CarrierFrequencyOffset
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_CarrierFrequencyOffset) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_CarrierFrequencyOffset
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_CarrierFrequencyOffset) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_CarrierFrequencyOffset) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_CarrierFrequencyOffset"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_CarrierFrequencyOffset) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_CarrierFrequencyOffset) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_CarrierFrequencyOffset.
func (*Component_OpticalChannel_CarrierFrequencyOffset) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_ChromaticDispersion represents the /openconfig-platform/components/component/optical-channel/state/chromatic-dispersion YANG schema element.
type Component_OpticalChannel_ChromaticDispersion struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_ChromaticDispersion implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_ChromaticDispersion) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_ChromaticDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ChromaticDispersion) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_ChromaticDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ChromaticDispersion) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_ChromaticDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ChromaticDispersion) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_ChromaticDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ChromaticDispersion) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_ChromaticDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ChromaticDispersion) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_ChromaticDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ChromaticDispersion) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_ChromaticDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ChromaticDispersion) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_ChromaticDispersion
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_ChromaticDispersion) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_ChromaticDispersion) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_ChromaticDispersion"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_ChromaticDispersion) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_ChromaticDispersion) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_ChromaticDispersion.
func (*Component_OpticalChannel_ChromaticDispersion) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_Esnr represents the /openconfig-platform/components/component/optical-channel/state/esnr YANG schema element.
type Component_OpticalChannel_Esnr struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_Esnr implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_Esnr) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_Esnr) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_Esnr) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_Esnr) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_Esnr) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_Esnr) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_Esnr) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_Esnr) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_Esnr
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_Esnr) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_Esnr) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_Esnr"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_Esnr) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_Esnr) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_Esnr.
func (*Component_OpticalChannel_Esnr) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_InputPower represents the /openconfig-platform/components/component/optical-channel/state/input-power YANG schema element.
type Component_OpticalChannel_InputPower struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_InputPower implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_InputPower) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_InputPower) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_InputPower) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_InputPower) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_InputPower) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_InputPower) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_InputPower) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_InputPower) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_InputPower
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_InputPower) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_InputPower) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_InputPower"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_InputPower) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_InputPower) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_InputPower.
func (*Component_OpticalChannel_InputPower) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_LaserBiasCurrent represents the /openconfig-platform/components/component/optical-channel/state/laser-bias-current YANG schema element.
type Component_OpticalChannel_LaserBiasCurrent struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_LaserBiasCurrent implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_LaserBiasCurrent) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_LaserBiasCurrent) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_LaserBiasCurrent) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_LaserBiasCurrent) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_LaserBiasCurrent) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_LaserBiasCurrent) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_LaserBiasCurrent) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_LaserBiasCurrent) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_LaserBiasCurrent
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_LaserBiasCurrent) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_LaserBiasCurrent) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_LaserBiasCurrent"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_LaserBiasCurrent) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_LaserBiasCurrent) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_LaserBiasCurrent.
func (*Component_OpticalChannel_LaserBiasCurrent) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_ModulationErrorRatio represents the /openconfig-platform/components/component/optical-channel/state/modulation-error-ratio YANG schema element.
type Component_OpticalChannel_ModulationErrorRatio struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_ModulationErrorRatio implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_ModulationErrorRatio) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_ModulationErrorRatio
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulationErrorRatio) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_ModulationErrorRatio
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulationErrorRatio) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_ModulationErrorRatio
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulationErrorRatio) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_ModulationErrorRatio
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulationErrorRatio) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_ModulationErrorRatio
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulationErrorRatio) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_ModulationErrorRatio
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulationErrorRatio) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_ModulationErrorRatio
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulationErrorRatio) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_ModulationErrorRatio
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_ModulationErrorRatio) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_ModulationErrorRatio) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_ModulationErrorRatio"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_ModulationErrorRatio) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_ModulationErrorRatio) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_ModulationErrorRatio.
func (*Component_OpticalChannel_ModulationErrorRatio) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_ModulatorBiasXPhase represents the /openconfig-platform/components/component/optical-channel/state/modulator-bias-x-phase YANG schema element.
type Component_OpticalChannel_ModulatorBiasXPhase struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_ModulatorBiasXPhase implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_ModulatorBiasXPhase) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_ModulatorBiasXPhase
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXPhase) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_ModulatorBiasXPhase
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXPhase) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_ModulatorBiasXPhase
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXPhase) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_ModulatorBiasXPhase
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXPhase) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_ModulatorBiasXPhase
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXPhase) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_ModulatorBiasXPhase
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXPhase) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_ModulatorBiasXPhase
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXPhase) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_ModulatorBiasXPhase
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_ModulatorBiasXPhase) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_ModulatorBiasXPhase) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_ModulatorBiasXPhase"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_ModulatorBiasXPhase) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_ModulatorBiasXPhase) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_ModulatorBiasXPhase.
func (*Component_OpticalChannel_ModulatorBiasXPhase) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_ModulatorBiasXi represents the /openconfig-platform/components/component/optical-channel/state/modulator-bias-xi YANG schema element.
type Component_OpticalChannel_ModulatorBiasXi struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_ModulatorBiasXi implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_ModulatorBiasXi) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_ModulatorBiasXi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXi) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_ModulatorBiasXi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXi) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_ModulatorBiasXi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXi) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_ModulatorBiasXi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXi) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_ModulatorBiasXi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXi) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_ModulatorBiasXi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXi) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_ModulatorBiasXi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXi) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_ModulatorBiasXi
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_ModulatorBiasXi) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_ModulatorBiasXi) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_ModulatorBiasXi"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_ModulatorBiasXi) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_ModulatorBiasXi) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_ModulatorBiasXi.
func (*Component_OpticalChannel_ModulatorBiasXi) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_ModulatorBiasXq represents the /openconfig-platform/components/component/optical-channel/state/modulator-bias-xq YANG schema element.
type Component_OpticalChannel_ModulatorBiasXq struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_ModulatorBiasXq implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_ModulatorBiasXq) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_ModulatorBiasXq
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXq) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_ModulatorBiasXq
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXq) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_ModulatorBiasXq
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXq) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_ModulatorBiasXq
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXq) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_ModulatorBiasXq
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXq) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_ModulatorBiasXq
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXq) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_ModulatorBiasXq
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasXq) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_ModulatorBiasXq
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_ModulatorBiasXq) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_ModulatorBiasXq) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_ModulatorBiasXq"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_ModulatorBiasXq) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_ModulatorBiasXq) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_ModulatorBiasXq.
func (*Component_OpticalChannel_ModulatorBiasXq) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_ModulatorBiasYPhase represents the /openconfig-platform/components/component/optical-channel/state/modulator-bias-y-phase YANG schema element.
type Component_OpticalChannel_ModulatorBiasYPhase struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_ModulatorBiasYPhase implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_ModulatorBiasYPhase) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_ModulatorBiasYPhase
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYPhase) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_ModulatorBiasYPhase
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYPhase) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_ModulatorBiasYPhase
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYPhase) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_ModulatorBiasYPhase
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYPhase) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_ModulatorBiasYPhase
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYPhase) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_ModulatorBiasYPhase
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYPhase) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_ModulatorBiasYPhase
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYPhase) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_ModulatorBiasYPhase
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_ModulatorBiasYPhase) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_ModulatorBiasYPhase) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_ModulatorBiasYPhase"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_ModulatorBiasYPhase) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_ModulatorBiasYPhase) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_ModulatorBiasYPhase.
func (*Component_OpticalChannel_ModulatorBiasYPhase) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_ModulatorBiasYi represents the /openconfig-platform/components/component/optical-channel/state/modulator-bias-yi YANG schema element.
type Component_OpticalChannel_ModulatorBiasYi struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_ModulatorBiasYi implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_ModulatorBiasYi) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_ModulatorBiasYi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYi) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_ModulatorBiasYi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYi) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_ModulatorBiasYi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYi) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_ModulatorBiasYi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYi) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_ModulatorBiasYi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYi) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_ModulatorBiasYi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYi) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_ModulatorBiasYi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYi) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_ModulatorBiasYi
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_ModulatorBiasYi) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_ModulatorBiasYi) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_ModulatorBiasYi"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_ModulatorBiasYi) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_ModulatorBiasYi) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_ModulatorBiasYi.
func (*Component_OpticalChannel_ModulatorBiasYi) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_ModulatorBiasYq represents the /openconfig-platform/components/component/optical-channel/state/modulator-bias-yq YANG schema element.
type Component_OpticalChannel_ModulatorBiasYq struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_ModulatorBiasYq implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_ModulatorBiasYq) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_ModulatorBiasYq
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYq) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_ModulatorBiasYq
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYq) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_ModulatorBiasYq
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYq) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_ModulatorBiasYq
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYq) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_ModulatorBiasYq
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYq) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_ModulatorBiasYq
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYq) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_ModulatorBiasYq
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_ModulatorBiasYq) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_ModulatorBiasYq
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_ModulatorBiasYq) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_ModulatorBiasYq) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_ModulatorBiasYq"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_ModulatorBiasYq) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_ModulatorBiasYq) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_ModulatorBiasYq.
func (*Component_OpticalChannel_ModulatorBiasYq) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_Osnr represents the /openconfig-platform/components/component/optical-channel/state/osnr YANG schema element.
type Component_OpticalChannel_Osnr struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_Osnr implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_Osnr) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_Osnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_Osnr) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_Osnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_Osnr) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_Osnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_Osnr) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_Osnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_Osnr) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_Osnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_Osnr) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_Osnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_Osnr) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_Osnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_Osnr) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_Osnr
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_Osnr) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_Osnr) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_Osnr"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_Osnr) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_Osnr) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_Osnr.
func (*Component_OpticalChannel_Osnr) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_OutputPower represents the /openconfig-platform/components/component/optical-channel/state/output-power YANG schema element.
type Component_OpticalChannel_OutputPower struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_OutputPower implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_OutputPower) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_OutputPower) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_OutputPower) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_OutputPower) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_OutputPower) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_OutputPower) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_OutputPower) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_OutputPower) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_OutputPower
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_OutputPower) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_OutputPower) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_OutputPower"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_OutputPower) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_OutputPower) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_OutputPower.
func (*Component_OpticalChannel_OutputPower) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_PolarizationDependentLoss represents the /openconfig-platform/components/component/optical-channel/state/polarization-dependent-loss YANG schema element.
type Component_OpticalChannel_PolarizationDependentLoss struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_PolarizationDependentLoss implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_PolarizationDependentLoss) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_PolarizationDependentLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PolarizationDependentLoss) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_PolarizationDependentLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PolarizationDependentLoss) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_PolarizationDependentLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PolarizationDependentLoss) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_PolarizationDependentLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PolarizationDependentLoss) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_PolarizationDependentLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PolarizationDependentLoss) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_PolarizationDependentLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PolarizationDependentLoss) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_PolarizationDependentLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PolarizationDependentLoss) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_PolarizationDependentLoss
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_PolarizationDependentLoss) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_PolarizationDependentLoss) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_PolarizationDependentLoss"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_PolarizationDependentLoss) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_PolarizationDependentLoss) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_PolarizationDependentLoss.
func (*Component_OpticalChannel_PolarizationDependentLoss) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_PolarizationModeDispersion represents the /openconfig-platform/components/component/optical-channel/state/polarization-mode-dispersion YANG schema element.
type Component_OpticalChannel_PolarizationModeDispersion struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_PolarizationModeDispersion implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_PolarizationModeDispersion) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_PolarizationModeDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PolarizationModeDispersion) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_PolarizationModeDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PolarizationModeDispersion) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_PolarizationModeDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PolarizationModeDispersion) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_PolarizationModeDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PolarizationModeDispersion) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_PolarizationModeDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PolarizationModeDispersion) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_PolarizationModeDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PolarizationModeDispersion) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_PolarizationModeDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PolarizationModeDispersion) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_PolarizationModeDispersion
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_PolarizationModeDispersion) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_PolarizationModeDispersion) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_PolarizationModeDispersion"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_PolarizationModeDispersion) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_PolarizationModeDispersion) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_PolarizationModeDispersion.
func (*Component_OpticalChannel_PolarizationModeDispersion) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_PostFecBer represents the /openconfig-platform/components/component/optical-channel/state/post-fec-ber YANG schema element.
type Component_OpticalChannel_PostFecBer struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_PostFecBer implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_PostFecBer) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PostFecBer) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PostFecBer) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PostFecBer) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PostFecBer) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PostFecBer) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PostFecBer) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PostFecBer) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_PostFecBer
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_PostFecBer) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_PostFecBer) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_PostFecBer"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_PostFecBer) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_PostFecBer) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_PostFecBer.
func (*Component_OpticalChannel_PostFecBer) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_PreFecBer represents the /openconfig-platform/components/component/optical-channel/state/pre-fec-ber YANG schema element.
type Component_OpticalChannel_PreFecBer struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_PreFecBer implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_PreFecBer) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PreFecBer) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PreFecBer) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PreFecBer) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PreFecBer) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PreFecBer) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PreFecBer) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_PreFecBer) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_PreFecBer
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_PreFecBer) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_PreFecBer) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_PreFecBer"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_PreFecBer) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_PreFecBer) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_PreFecBer.
func (*Component_OpticalChannel_PreFecBer) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_QValue represents the /openconfig-platform/components/component/optical-channel/state/q-value YANG schema element.
type Component_OpticalChannel_QValue struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_QValue implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_QValue) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_QValue) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_QValue) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_QValue) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_QValue) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_QValue) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_QValue) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_QValue) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_QValue
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_QValue) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_QValue) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_QValue"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_QValue) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_QValue) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_QValue.
func (*Component_OpticalChannel_QValue) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_SecondOrderPolarizationModeDispersion represents the /openconfig-platform/components/component/optical-channel/state/second-order-polarization-mode-dispersion YANG schema element.
type Component_OpticalChannel_SecondOrderPolarizationModeDispersion struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_SecondOrderPolarizationModeDispersion implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_SecondOrderPolarizationModeDispersion) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_SecondOrderPolarizationModeDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_SecondOrderPolarizationModeDispersion) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_SecondOrderPolarizationModeDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_SecondOrderPolarizationModeDispersion) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_SecondOrderPolarizationModeDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_SecondOrderPolarizationModeDispersion) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_SecondOrderPolarizationModeDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_SecondOrderPolarizationModeDispersion) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_SecondOrderPolarizationModeDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_SecondOrderPolarizationModeDispersion) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_SecondOrderPolarizationModeDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_SecondOrderPolarizationModeDispersion) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_SecondOrderPolarizationModeDispersion
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_SecondOrderPolarizationModeDispersion) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_SecondOrderPolarizationModeDispersion
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_SecondOrderPolarizationModeDispersion) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_SecondOrderPolarizationModeDispersion) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_SecondOrderPolarizationModeDispersion"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_SecondOrderPolarizationModeDispersion) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_SecondOrderPolarizationModeDispersion) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_SecondOrderPolarizationModeDispersion.
func (*Component_OpticalChannel_SecondOrderPolarizationModeDispersion) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_OpticalChannel_SopRoc represents the /openconfig-platform/components/component/optical-channel/state/sop-roc YANG schema element.
type Component_OpticalChannel_SopRoc struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_OpticalChannel_SopRoc implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_OpticalChannel_SopRoc) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_OpticalChannel_SopRoc
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_SopRoc) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_OpticalChannel_SopRoc
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_SopRoc) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_OpticalChannel_SopRoc
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_SopRoc) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_OpticalChannel_SopRoc
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_SopRoc) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_OpticalChannel_SopRoc
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_SopRoc) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_OpticalChannel_SopRoc
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_SopRoc) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_OpticalChannel_SopRoc
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_OpticalChannel_SopRoc) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_OpticalChannel_SopRoc
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_OpticalChannel_SopRoc) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_SopRoc) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_OpticalChannel_SopRoc"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_OpticalChannel_SopRoc) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_OpticalChannel_SopRoc) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_OpticalChannel_SopRoc.
func (*Component_OpticalChannel_SopRoc) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// Component_Pcie represents the /openconfig-platform/components/component/state/pcie YANG schema element.
type Component_Pcie struct {
	ΛMetadata          []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	CorrectableErrors  *Component_Pcie_CorrectableErrors `path:"correctable-errors" module:"openconfig-platform"`
	ΛCorrectableErrors []ygot.Annotation                 `path:"@correctable-errors" ygotAnnotation:"true"`
	FatalErrors        *Component_Pcie_FatalErrors       `path:"fatal-errors" module:"openconfig-platform"`
	ΛFatalErrors       []ygot.Annotation                 `path:"@fatal-errors" ygotAnnotation:"true"`
	NonFatalErrors     *Component_Pcie_NonFatalErrors    `path:"non-fatal-errors" module:"openconfig-platform"`
	ΛNonFatalErrors    []ygot.Annotation                 `path:"@non-fatal-errors" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Pcie implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Pcie) IsYANGGoStruct() {}

// GetOrCreateCorrectableErrors retrieves the value of the CorrectableErrors field
// or returns the existing field if it already exists.
func (t *Component_Pcie) GetOrCreateCorrectableErrors() *Component_Pcie_CorrectableErrors {
	if t.CorrectableErrors != nil {
		return t.CorrectableErrors
	}
	t.CorrectableErrors = &Component_Pcie_CorrectableErrors{}
	return t.CorrectableErrors
}

// GetOrCreateFatalErrors retrieves the value of the FatalErrors field
// or returns the existing field if it already exists.
func (t *Component_Pcie) GetOrCreateFatalErrors() *Component_Pcie_FatalErrors {
	if t.FatalErrors != nil {
		return t.FatalErrors
	}
	t.FatalErrors = &Component_Pcie_FatalErrors{}
	return t.FatalErrors
}

// GetOrCreateNonFatalErrors retrieves the value of the NonFatalErrors field
// or returns the existing field if it already exists.
func (t *Component_Pcie) GetOrCreateNonFatalErrors() *Component_Pcie_NonFatalErrors {
	if t.NonFatalErrors != nil {
		return t.NonFatalErrors
	}
	t.NonFatalErrors = &Component_Pcie_NonFatalErrors{}
	return t.NonFatalErrors
}

// GetCorrectableErrors returns the value of the CorrectableErrors struct pointer
// from Component_Pcie. If the receiver or the field CorrectableErrors is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Pcie) GetCorrectableErrors() *Component_Pcie_CorrectableErrors {
	if t != nil && t.CorrectableErrors != nil {
		return t.CorrectableErrors
	}
	return nil
}

// GetFatalErrors returns the value of the FatalErrors struct pointer
// from Component_Pcie. If the receiver or the field FatalErrors is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Pcie) GetFatalErrors() *Component_Pcie_FatalErrors {
	if t != nil && t.FatalErrors != nil {
		return t.FatalErrors
	}
	return nil
}

// GetNonFatalErrors returns the value of the NonFatalErrors struct pointer
// from Component_Pcie. If the receiver or the field NonFatalErrors is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Pcie) GetNonFatalErrors() *Component_Pcie_NonFatalErrors {
	if t != nil && t.NonFatalErrors != nil {
		return t.NonFatalErrors
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Pcie
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Pcie) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.CorrectableErrors.PopulateDefaults()
	t.FatalErrors.PopulateDefaults()
	t.NonFatalErrors.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Pcie) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Pcie"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Pcie) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Pcie) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Pcie.
func (*Component_Pcie) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Pcie_CorrectableErrors represents the /openconfig-platform/components/component/state/pcie/correctable-errors YANG schema element.
type Component_Pcie_CorrectableErrors struct {
	ΛMetadata               []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AdvisoryNonFatalErrors  *uint64           `path:"advisory-non-fatal-errors" module:"openconfig-platform"`
	ΛAdvisoryNonFatalErrors []ygot.Annotation `path:"@advisory-non-fatal-errors" ygotAnnotation:"true"`
	BadDllpErrors           *uint64           `path:"bad-dllp-errors" module:"openconfig-platform"`
	ΛBadDllpErrors          []ygot.Annotation `path:"@bad-dllp-errors" ygotAnnotation:"true"`
	BadTlpErrors            *uint64           `path:"bad-tlp-errors" module:"openconfig-platform"`
	ΛBadTlpErrors           []ygot.Annotation `path:"@bad-tlp-errors" ygotAnnotation:"true"`
	HdrLogOverflowErrors    *uint64           `path:"hdr-log-overflow-errors" module:"openconfig-platform"`
	ΛHdrLogOverflowErrors   []ygot.Annotation `path:"@hdr-log-overflow-errors" ygotAnnotation:"true"`
	InternalErrors          *uint64           `path:"internal-errors" module:"openconfig-platform"`
	ΛInternalErrors         []ygot.Annotation `path:"@internal-errors" ygotAnnotation:"true"`
	ReceiverErrors          *uint64           `path:"receiver-errors" module:"openconfig-platform"`
	ΛReceiverErrors         []ygot.Annotation `path:"@receiver-errors" ygotAnnotation:"true"`
	RelayRolloverErrors     *uint64           `path:"relay-rollover-errors" module:"openconfig-platform"`
	ΛRelayRolloverErrors    []ygot.Annotation `path:"@relay-rollover-errors" ygotAnnotation:"true"`
	ReplayTimeoutErrors     *uint64           `path:"replay-timeout-errors" module:"openconfig-platform"`
	ΛReplayTimeoutErrors    []ygot.Annotation `path:"@replay-timeout-errors" ygotAnnotation:"true"`
	TotalErrors             *uint64           `path:"total-errors" module:"openconfig-platform"`
	ΛTotalErrors            []ygot.Annotation `path:"@total-errors" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Pcie_CorrectableErrors implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Pcie_CorrectableErrors) IsYANGGoStruct() {}

// GetAdvisoryNonFatalErrors retrieves the value of the leaf AdvisoryNonFatalErrors from the Component_Pcie_CorrectableErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdvisoryNonFatalErrors is set, it can
// safely use t.GetAdvisoryNonFatalErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdvisoryNonFatalErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_CorrectableErrors) GetAdvisoryNonFatalErrors() uint64 {
	if t == nil || t.AdvisoryNonFatalErrors == nil {
		return 0
	}
	return *t.AdvisoryNonFatalErrors
}

// GetBadDllpErrors retrieves the value of the leaf BadDllpErrors from the Component_Pcie_CorrectableErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BadDllpErrors is set, it can
// safely use t.GetBadDllpErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BadDllpErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_CorrectableErrors) GetBadDllpErrors() uint64 {
	if t == nil || t.BadDllpErrors == nil {
		return 0
	}
	return *t.BadDllpErrors
}

// GetBadTlpErrors retrieves the value of the leaf BadTlpErrors from the Component_Pcie_CorrectableErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BadTlpErrors is set, it can
// safely use t.GetBadTlpErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BadTlpErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_CorrectableErrors) GetBadTlpErrors() uint64 {
	if t == nil || t.BadTlpErrors == nil {
		return 0
	}
	return *t.BadTlpErrors
}

// GetHdrLogOverflowErrors retrieves the value of the leaf HdrLogOverflowErrors from the Component_Pcie_CorrectableErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HdrLogOverflowErrors is set, it can
// safely use t.GetHdrLogOverflowErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HdrLogOverflowErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_CorrectableErrors) GetHdrLogOverflowErrors() uint64 {
	if t == nil || t.HdrLogOverflowErrors == nil {
		return 0
	}
	return *t.HdrLogOverflowErrors
}

// GetInternalErrors retrieves the value of the leaf InternalErrors from the Component_Pcie_CorrectableErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InternalErrors is set, it can
// safely use t.GetInternalErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InternalErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_CorrectableErrors) GetInternalErrors() uint64 {
	if t == nil || t.InternalErrors == nil {
		return 0
	}
	return *t.InternalErrors
}

// GetReceiverErrors retrieves the value of the leaf ReceiverErrors from the Component_Pcie_CorrectableErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReceiverErrors is set, it can
// safely use t.GetReceiverErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReceiverErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_CorrectableErrors) GetReceiverErrors() uint64 {
	if t == nil || t.ReceiverErrors == nil {
		return 0
	}
	return *t.ReceiverErrors
}

// GetRelayRolloverErrors retrieves the value of the leaf RelayRolloverErrors from the Component_Pcie_CorrectableErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RelayRolloverErrors is set, it can
// safely use t.GetRelayRolloverErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RelayRolloverErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_CorrectableErrors) GetRelayRolloverErrors() uint64 {
	if t == nil || t.RelayRolloverErrors == nil {
		return 0
	}
	return *t.RelayRolloverErrors
}

// GetReplayTimeoutErrors retrieves the value of the leaf ReplayTimeoutErrors from the Component_Pcie_CorrectableErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReplayTimeoutErrors is set, it can
// safely use t.GetReplayTimeoutErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReplayTimeoutErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_CorrectableErrors) GetReplayTimeoutErrors() uint64 {
	if t == nil || t.ReplayTimeoutErrors == nil {
		return 0
	}
	return *t.ReplayTimeoutErrors
}

// GetTotalErrors retrieves the value of the leaf TotalErrors from the Component_Pcie_CorrectableErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalErrors is set, it can
// safely use t.GetTotalErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_CorrectableErrors) GetTotalErrors() uint64 {
	if t == nil || t.TotalErrors == nil {
		return 0
	}
	return *t.TotalErrors
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Pcie_CorrectableErrors
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Pcie_CorrectableErrors) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Pcie_CorrectableErrors) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Pcie_CorrectableErrors"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Pcie_CorrectableErrors) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Pcie_CorrectableErrors) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Pcie_CorrectableErrors.
func (*Component_Pcie_CorrectableErrors) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Pcie_FatalErrors represents the /openconfig-platform/components/component/state/pcie/fatal-errors YANG schema element.
type Component_Pcie_FatalErrors struct {
	ΛMetadata                   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AcsViolationErrors          *uint64           `path:"acs-violation-errors" module:"openconfig-platform"`
	ΛAcsViolationErrors         []ygot.Annotation `path:"@acs-violation-errors" ygotAnnotation:"true"`
	AtomicOpBlockedErrors       *uint64           `path:"atomic-op-blocked-errors" module:"openconfig-platform"`
	ΛAtomicOpBlockedErrors      []ygot.Annotation `path:"@atomic-op-blocked-errors" ygotAnnotation:"true"`
	BlockedTlpErrors            *uint64           `path:"blocked-tlp-errors" module:"openconfig-platform"`
	ΛBlockedTlpErrors           []ygot.Annotation `path:"@blocked-tlp-errors" ygotAnnotation:"true"`
	CompletionAbortErrors       *uint64           `path:"completion-abort-errors" module:"openconfig-platform"`
	ΛCompletionAbortErrors      []ygot.Annotation `path:"@completion-abort-errors" ygotAnnotation:"true"`
	CompletionTimeoutErrors     *uint64           `path:"completion-timeout-errors" module:"openconfig-platform"`
	ΛCompletionTimeoutErrors    []ygot.Annotation `path:"@completion-timeout-errors" ygotAnnotation:"true"`
	DataLinkErrors              *uint64           `path:"data-link-errors" module:"openconfig-platform"`
	ΛDataLinkErrors             []ygot.Annotation `path:"@data-link-errors" ygotAnnotation:"true"`
	EcrcErrors                  *uint64           `path:"ecrc-errors" module:"openconfig-platform"`
	ΛEcrcErrors                 []ygot.Annotation `path:"@ecrc-errors" ygotAnnotation:"true"`
	FlowControlProtocolErrors   *uint64           `path:"flow-control-protocol-errors" module:"openconfig-platform"`
	ΛFlowControlProtocolErrors  []ygot.Annotation `path:"@flow-control-protocol-errors" ygotAnnotation:"true"`
	InternalErrors              *uint64           `path:"internal-errors" module:"openconfig-platform"`
	ΛInternalErrors             []ygot.Annotation `path:"@internal-errors" ygotAnnotation:"true"`
	MalformedTlpErrors          *uint64           `path:"malformed-tlp-errors" module:"openconfig-platform"`
	ΛMalformedTlpErrors         []ygot.Annotation `path:"@malformed-tlp-errors" ygotAnnotation:"true"`
	PoisonedTlpErrors           *uint64           `path:"poisoned-tlp-errors" module:"openconfig-platform"`
	ΛPoisonedTlpErrors          []ygot.Annotation `path:"@poisoned-tlp-errors" ygotAnnotation:"true"`
	ReceiverOverflowErrors      *uint64           `path:"receiver-overflow-errors" module:"openconfig-platform"`
	ΛReceiverOverflowErrors     []ygot.Annotation `path:"@receiver-overflow-errors" ygotAnnotation:"true"`
	SurpriseDownErrors          *uint64           `path:"surprise-down-errors" module:"openconfig-platform"`
	ΛSurpriseDownErrors         []ygot.Annotation `path:"@surprise-down-errors" ygotAnnotation:"true"`
	TlpPrefixBlockedErrors      *uint64           `path:"tlp-prefix-blocked-errors" module:"openconfig-platform"`
	ΛTlpPrefixBlockedErrors     []ygot.Annotation `path:"@tlp-prefix-blocked-errors" ygotAnnotation:"true"`
	TotalErrors                 *uint64           `path:"total-errors" module:"openconfig-platform"`
	ΛTotalErrors                []ygot.Annotation `path:"@total-errors" ygotAnnotation:"true"`
	UndefinedErrors             *uint64           `path:"undefined-errors" module:"openconfig-platform"`
	ΛUndefinedErrors            []ygot.Annotation `path:"@undefined-errors" ygotAnnotation:"true"`
	UnexpectedCompletionErrors  *uint64           `path:"unexpected-completion-errors" module:"openconfig-platform"`
	ΛUnexpectedCompletionErrors []ygot.Annotation `path:"@unexpected-completion-errors" ygotAnnotation:"true"`
	UnsupportedRequestErrors    *uint64           `path:"unsupported-request-errors" module:"openconfig-platform"`
	ΛUnsupportedRequestErrors   []ygot.Annotation `path:"@unsupported-request-errors" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Pcie_FatalErrors implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Pcie_FatalErrors) IsYANGGoStruct() {}

// GetAcsViolationErrors retrieves the value of the leaf AcsViolationErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AcsViolationErrors is set, it can
// safely use t.GetAcsViolationErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AcsViolationErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetAcsViolationErrors() uint64 {
	if t == nil || t.AcsViolationErrors == nil {
		return 0
	}
	return *t.AcsViolationErrors
}

// GetAtomicOpBlockedErrors retrieves the value of the leaf AtomicOpBlockedErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AtomicOpBlockedErrors is set, it can
// safely use t.GetAtomicOpBlockedErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AtomicOpBlockedErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetAtomicOpBlockedErrors() uint64 {
	if t == nil || t.AtomicOpBlockedErrors == nil {
		return 0
	}
	return *t.AtomicOpBlockedErrors
}

// GetBlockedTlpErrors retrieves the value of the leaf BlockedTlpErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BlockedTlpErrors is set, it can
// safely use t.GetBlockedTlpErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BlockedTlpErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetBlockedTlpErrors() uint64 {
	if t == nil || t.BlockedTlpErrors == nil {
		return 0
	}
	return *t.BlockedTlpErrors
}

// GetCompletionAbortErrors retrieves the value of the leaf CompletionAbortErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CompletionAbortErrors is set, it can
// safely use t.GetCompletionAbortErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CompletionAbortErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetCompletionAbortErrors() uint64 {
	if t == nil || t.CompletionAbortErrors == nil {
		return 0
	}
	return *t.CompletionAbortErrors
}

// GetCompletionTimeoutErrors retrieves the value of the leaf CompletionTimeoutErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CompletionTimeoutErrors is set, it can
// safely use t.GetCompletionTimeoutErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CompletionTimeoutErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetCompletionTimeoutErrors() uint64 {
	if t == nil || t.CompletionTimeoutErrors == nil {
		return 0
	}
	return *t.CompletionTimeoutErrors
}

// GetDataLinkErrors retrieves the value of the leaf DataLinkErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DataLinkErrors is set, it can
// safely use t.GetDataLinkErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DataLinkErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetDataLinkErrors() uint64 {
	if t == nil || t.DataLinkErrors == nil {
		return 0
	}
	return *t.DataLinkErrors
}

// GetEcrcErrors retrieves the value of the leaf EcrcErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EcrcErrors is set, it can
// safely use t.GetEcrcErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EcrcErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetEcrcErrors() uint64 {
	if t == nil || t.EcrcErrors == nil {
		return 0
	}
	return *t.EcrcErrors
}

// GetFlowControlProtocolErrors retrieves the value of the leaf FlowControlProtocolErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FlowControlProtocolErrors is set, it can
// safely use t.GetFlowControlProtocolErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FlowControlProtocolErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetFlowControlProtocolErrors() uint64 {
	if t == nil || t.FlowControlProtocolErrors == nil {
		return 0
	}
	return *t.FlowControlProtocolErrors
}

// GetInternalErrors retrieves the value of the leaf InternalErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InternalErrors is set, it can
// safely use t.GetInternalErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InternalErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetInternalErrors() uint64 {
	if t == nil || t.InternalErrors == nil {
		return 0
	}
	return *t.InternalErrors
}

// GetMalformedTlpErrors retrieves the value of the leaf MalformedTlpErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MalformedTlpErrors is set, it can
// safely use t.GetMalformedTlpErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MalformedTlpErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetMalformedTlpErrors() uint64 {
	if t == nil || t.MalformedTlpErrors == nil {
		return 0
	}
	return *t.MalformedTlpErrors
}

// GetPoisonedTlpErrors retrieves the value of the leaf PoisonedTlpErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PoisonedTlpErrors is set, it can
// safely use t.GetPoisonedTlpErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PoisonedTlpErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetPoisonedTlpErrors() uint64 {
	if t == nil || t.PoisonedTlpErrors == nil {
		return 0
	}
	return *t.PoisonedTlpErrors
}

// GetReceiverOverflowErrors retrieves the value of the leaf ReceiverOverflowErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReceiverOverflowErrors is set, it can
// safely use t.GetReceiverOverflowErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReceiverOverflowErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetReceiverOverflowErrors() uint64 {
	if t == nil || t.ReceiverOverflowErrors == nil {
		return 0
	}
	return *t.ReceiverOverflowErrors
}

// GetSurpriseDownErrors retrieves the value of the leaf SurpriseDownErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SurpriseDownErrors is set, it can
// safely use t.GetSurpriseDownErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SurpriseDownErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetSurpriseDownErrors() uint64 {
	if t == nil || t.SurpriseDownErrors == nil {
		return 0
	}
	return *t.SurpriseDownErrors
}

// GetTlpPrefixBlockedErrors retrieves the value of the leaf TlpPrefixBlockedErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TlpPrefixBlockedErrors is set, it can
// safely use t.GetTlpPrefixBlockedErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TlpPrefixBlockedErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetTlpPrefixBlockedErrors() uint64 {
	if t == nil || t.TlpPrefixBlockedErrors == nil {
		return 0
	}
	return *t.TlpPrefixBlockedErrors
}

// GetTotalErrors retrieves the value of the leaf TotalErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalErrors is set, it can
// safely use t.GetTotalErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetTotalErrors() uint64 {
	if t == nil || t.TotalErrors == nil {
		return 0
	}
	return *t.TotalErrors
}

// GetUndefinedErrors retrieves the value of the leaf UndefinedErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UndefinedErrors is set, it can
// safely use t.GetUndefinedErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UndefinedErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetUndefinedErrors() uint64 {
	if t == nil || t.UndefinedErrors == nil {
		return 0
	}
	return *t.UndefinedErrors
}

// GetUnexpectedCompletionErrors retrieves the value of the leaf UnexpectedCompletionErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UnexpectedCompletionErrors is set, it can
// safely use t.GetUnexpectedCompletionErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UnexpectedCompletionErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetUnexpectedCompletionErrors() uint64 {
	if t == nil || t.UnexpectedCompletionErrors == nil {
		return 0
	}
	return *t.UnexpectedCompletionErrors
}

// GetUnsupportedRequestErrors retrieves the value of the leaf UnsupportedRequestErrors from the Component_Pcie_FatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UnsupportedRequestErrors is set, it can
// safely use t.GetUnsupportedRequestErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UnsupportedRequestErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_FatalErrors) GetUnsupportedRequestErrors() uint64 {
	if t == nil || t.UnsupportedRequestErrors == nil {
		return 0
	}
	return *t.UnsupportedRequestErrors
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Pcie_FatalErrors
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Pcie_FatalErrors) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Pcie_FatalErrors) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Pcie_FatalErrors"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Pcie_FatalErrors) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Pcie_FatalErrors) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Pcie_FatalErrors.
func (*Component_Pcie_FatalErrors) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Pcie_NonFatalErrors represents the /openconfig-platform/components/component/state/pcie/non-fatal-errors YANG schema element.
type Component_Pcie_NonFatalErrors struct {
	ΛMetadata                   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AcsViolationErrors          *uint64           `path:"acs-violation-errors" module:"openconfig-platform"`
	ΛAcsViolationErrors         []ygot.Annotation `path:"@acs-violation-errors" ygotAnnotation:"true"`
	AtomicOpBlockedErrors       *uint64           `path:"atomic-op-blocked-errors" module:"openconfig-platform"`
	ΛAtomicOpBlockedErrors      []ygot.Annotation `path:"@atomic-op-blocked-errors" ygotAnnotation:"true"`
	BlockedTlpErrors            *uint64           `path:"blocked-tlp-errors" module:"openconfig-platform"`
	ΛBlockedTlpErrors           []ygot.Annotation `path:"@blocked-tlp-errors" ygotAnnotation:"true"`
	CompletionAbortErrors       *uint64           `path:"completion-abort-errors" module:"openconfig-platform"`
	ΛCompletionAbortErrors      []ygot.Annotation `path:"@completion-abort-errors" ygotAnnotation:"true"`
	CompletionTimeoutErrors     *uint64           `path:"completion-timeout-errors" module:"openconfig-platform"`
	ΛCompletionTimeoutErrors    []ygot.Annotation `path:"@completion-timeout-errors" ygotAnnotation:"true"`
	DataLinkErrors              *uint64           `path:"data-link-errors" module:"openconfig-platform"`
	ΛDataLinkErrors             []ygot.Annotation `path:"@data-link-errors" ygotAnnotation:"true"`
	EcrcErrors                  *uint64           `path:"ecrc-errors" module:"openconfig-platform"`
	ΛEcrcErrors                 []ygot.Annotation `path:"@ecrc-errors" ygotAnnotation:"true"`
	FlowControlProtocolErrors   *uint64           `path:"flow-control-protocol-errors" module:"openconfig-platform"`
	ΛFlowControlProtocolErrors  []ygot.Annotation `path:"@flow-control-protocol-errors" ygotAnnotation:"true"`
	InternalErrors              *uint64           `path:"internal-errors" module:"openconfig-platform"`
	ΛInternalErrors             []ygot.Annotation `path:"@internal-errors" ygotAnnotation:"true"`
	MalformedTlpErrors          *uint64           `path:"malformed-tlp-errors" module:"openconfig-platform"`
	ΛMalformedTlpErrors         []ygot.Annotation `path:"@malformed-tlp-errors" ygotAnnotation:"true"`
	PoisonedTlpErrors           *uint64           `path:"poisoned-tlp-errors" module:"openconfig-platform"`
	ΛPoisonedTlpErrors          []ygot.Annotation `path:"@poisoned-tlp-errors" ygotAnnotation:"true"`
	ReceiverOverflowErrors      *uint64           `path:"receiver-overflow-errors" module:"openconfig-platform"`
	ΛReceiverOverflowErrors     []ygot.Annotation `path:"@receiver-overflow-errors" ygotAnnotation:"true"`
	SurpriseDownErrors          *uint64           `path:"surprise-down-errors" module:"openconfig-platform"`
	ΛSurpriseDownErrors         []ygot.Annotation `path:"@surprise-down-errors" ygotAnnotation:"true"`
	TlpPrefixBlockedErrors      *uint64           `path:"tlp-prefix-blocked-errors" module:"openconfig-platform"`
	ΛTlpPrefixBlockedErrors     []ygot.Annotation `path:"@tlp-prefix-blocked-errors" ygotAnnotation:"true"`
	TotalErrors                 *uint64           `path:"total-errors" module:"openconfig-platform"`
	ΛTotalErrors                []ygot.Annotation `path:"@total-errors" ygotAnnotation:"true"`
	UndefinedErrors             *uint64           `path:"undefined-errors" module:"openconfig-platform"`
	ΛUndefinedErrors            []ygot.Annotation `path:"@undefined-errors" ygotAnnotation:"true"`
	UnexpectedCompletionErrors  *uint64           `path:"unexpected-completion-errors" module:"openconfig-platform"`
	ΛUnexpectedCompletionErrors []ygot.Annotation `path:"@unexpected-completion-errors" ygotAnnotation:"true"`
	UnsupportedRequestErrors    *uint64           `path:"unsupported-request-errors" module:"openconfig-platform"`
	ΛUnsupportedRequestErrors   []ygot.Annotation `path:"@unsupported-request-errors" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Pcie_NonFatalErrors implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Pcie_NonFatalErrors) IsYANGGoStruct() {}

// GetAcsViolationErrors retrieves the value of the leaf AcsViolationErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AcsViolationErrors is set, it can
// safely use t.GetAcsViolationErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AcsViolationErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetAcsViolationErrors() uint64 {
	if t == nil || t.AcsViolationErrors == nil {
		return 0
	}
	return *t.AcsViolationErrors
}

// GetAtomicOpBlockedErrors retrieves the value of the leaf AtomicOpBlockedErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AtomicOpBlockedErrors is set, it can
// safely use t.GetAtomicOpBlockedErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AtomicOpBlockedErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetAtomicOpBlockedErrors() uint64 {
	if t == nil || t.AtomicOpBlockedErrors == nil {
		return 0
	}
	return *t.AtomicOpBlockedErrors
}

// GetBlockedTlpErrors retrieves the value of the leaf BlockedTlpErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BlockedTlpErrors is set, it can
// safely use t.GetBlockedTlpErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BlockedTlpErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetBlockedTlpErrors() uint64 {
	if t == nil || t.BlockedTlpErrors == nil {
		return 0
	}
	return *t.BlockedTlpErrors
}

// GetCompletionAbortErrors retrieves the value of the leaf CompletionAbortErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CompletionAbortErrors is set, it can
// safely use t.GetCompletionAbortErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CompletionAbortErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetCompletionAbortErrors() uint64 {
	if t == nil || t.CompletionAbortErrors == nil {
		return 0
	}
	return *t.CompletionAbortErrors
}

// GetCompletionTimeoutErrors retrieves the value of the leaf CompletionTimeoutErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CompletionTimeoutErrors is set, it can
// safely use t.GetCompletionTimeoutErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CompletionTimeoutErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetCompletionTimeoutErrors() uint64 {
	if t == nil || t.CompletionTimeoutErrors == nil {
		return 0
	}
	return *t.CompletionTimeoutErrors
}

// GetDataLinkErrors retrieves the value of the leaf DataLinkErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DataLinkErrors is set, it can
// safely use t.GetDataLinkErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DataLinkErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetDataLinkErrors() uint64 {
	if t == nil || t.DataLinkErrors == nil {
		return 0
	}
	return *t.DataLinkErrors
}

// GetEcrcErrors retrieves the value of the leaf EcrcErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EcrcErrors is set, it can
// safely use t.GetEcrcErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EcrcErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetEcrcErrors() uint64 {
	if t == nil || t.EcrcErrors == nil {
		return 0
	}
	return *t.EcrcErrors
}

// GetFlowControlProtocolErrors retrieves the value of the leaf FlowControlProtocolErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FlowControlProtocolErrors is set, it can
// safely use t.GetFlowControlProtocolErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FlowControlProtocolErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetFlowControlProtocolErrors() uint64 {
	if t == nil || t.FlowControlProtocolErrors == nil {
		return 0
	}
	return *t.FlowControlProtocolErrors
}

// GetInternalErrors retrieves the value of the leaf InternalErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InternalErrors is set, it can
// safely use t.GetInternalErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InternalErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetInternalErrors() uint64 {
	if t == nil || t.InternalErrors == nil {
		return 0
	}
	return *t.InternalErrors
}

// GetMalformedTlpErrors retrieves the value of the leaf MalformedTlpErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MalformedTlpErrors is set, it can
// safely use t.GetMalformedTlpErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MalformedTlpErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetMalformedTlpErrors() uint64 {
	if t == nil || t.MalformedTlpErrors == nil {
		return 0
	}
	return *t.MalformedTlpErrors
}

// GetPoisonedTlpErrors retrieves the value of the leaf PoisonedTlpErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PoisonedTlpErrors is set, it can
// safely use t.GetPoisonedTlpErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PoisonedTlpErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetPoisonedTlpErrors() uint64 {
	if t == nil || t.PoisonedTlpErrors == nil {
		return 0
	}
	return *t.PoisonedTlpErrors
}

// GetReceiverOverflowErrors retrieves the value of the leaf ReceiverOverflowErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReceiverOverflowErrors is set, it can
// safely use t.GetReceiverOverflowErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReceiverOverflowErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetReceiverOverflowErrors() uint64 {
	if t == nil || t.ReceiverOverflowErrors == nil {
		return 0
	}
	return *t.ReceiverOverflowErrors
}

// GetSurpriseDownErrors retrieves the value of the leaf SurpriseDownErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SurpriseDownErrors is set, it can
// safely use t.GetSurpriseDownErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SurpriseDownErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetSurpriseDownErrors() uint64 {
	if t == nil || t.SurpriseDownErrors == nil {
		return 0
	}
	return *t.SurpriseDownErrors
}

// GetTlpPrefixBlockedErrors retrieves the value of the leaf TlpPrefixBlockedErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TlpPrefixBlockedErrors is set, it can
// safely use t.GetTlpPrefixBlockedErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TlpPrefixBlockedErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetTlpPrefixBlockedErrors() uint64 {
	if t == nil || t.TlpPrefixBlockedErrors == nil {
		return 0
	}
	return *t.TlpPrefixBlockedErrors
}

// GetTotalErrors retrieves the value of the leaf TotalErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalErrors is set, it can
// safely use t.GetTotalErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetTotalErrors() uint64 {
	if t == nil || t.TotalErrors == nil {
		return 0
	}
	return *t.TotalErrors
}

// GetUndefinedErrors retrieves the value of the leaf UndefinedErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UndefinedErrors is set, it can
// safely use t.GetUndefinedErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UndefinedErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetUndefinedErrors() uint64 {
	if t == nil || t.UndefinedErrors == nil {
		return 0
	}
	return *t.UndefinedErrors
}

// GetUnexpectedCompletionErrors retrieves the value of the leaf UnexpectedCompletionErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UnexpectedCompletionErrors is set, it can
// safely use t.GetUnexpectedCompletionErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UnexpectedCompletionErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetUnexpectedCompletionErrors() uint64 {
	if t == nil || t.UnexpectedCompletionErrors == nil {
		return 0
	}
	return *t.UnexpectedCompletionErrors
}

// GetUnsupportedRequestErrors retrieves the value of the leaf UnsupportedRequestErrors from the Component_Pcie_NonFatalErrors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UnsupportedRequestErrors is set, it can
// safely use t.GetUnsupportedRequestErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UnsupportedRequestErrors == nil' before retrieving the leaf's value.
func (t *Component_Pcie_NonFatalErrors) GetUnsupportedRequestErrors() uint64 {
	if t == nil || t.UnsupportedRequestErrors == nil {
		return 0
	}
	return *t.UnsupportedRequestErrors
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Pcie_NonFatalErrors
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Pcie_NonFatalErrors) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Pcie_NonFatalErrors) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Pcie_NonFatalErrors"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Pcie_NonFatalErrors) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Pcie_NonFatalErrors) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Pcie_NonFatalErrors.
func (*Component_Pcie_NonFatalErrors) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Port represents the /openconfig-platform/components/component/port YANG schema element.
type Component_Port struct {
	ΛMetadata     []ygot.Annotation            `path:"@" ygotAnnotation:"true"`
	BreakoutMode  *Component_Port_BreakoutMode `path:"breakout-mode" module:"openconfig-platform-port"`
	ΛBreakoutMode []ygot.Annotation            `path:"@breakout-mode" ygotAnnotation:"true"`
	OpticalPort   *Component_Port_OpticalPort  `path:"optical-port" module:"openconfig-transport-line-common"`
	ΛOpticalPort  []ygot.Annotation            `path:"@optical-port" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Port implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Port) IsYANGGoStruct() {}

// GetOrCreateBreakoutMode retrieves the value of the BreakoutMode field
// or returns the existing field if it already exists.
func (t *Component_Port) GetOrCreateBreakoutMode() *Component_Port_BreakoutMode {
	if t.BreakoutMode != nil {
		return t.BreakoutMode
	}
	t.BreakoutMode = &Component_Port_BreakoutMode{}
	return t.BreakoutMode
}

// GetOrCreateOpticalPort retrieves the value of the OpticalPort field
// or returns the existing field if it already exists.
func (t *Component_Port) GetOrCreateOpticalPort() *Component_Port_OpticalPort {
	if t.OpticalPort != nil {
		return t.OpticalPort
	}
	t.OpticalPort = &Component_Port_OpticalPort{}
	return t.OpticalPort
}

// GetBreakoutMode returns the value of the BreakoutMode struct pointer
// from Component_Port. If the receiver or the field BreakoutMode is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Port) GetBreakoutMode() *Component_Port_BreakoutMode {
	if t != nil && t.BreakoutMode != nil {
		return t.BreakoutMode
	}
	return nil
}

// GetOpticalPort returns the value of the OpticalPort struct pointer
// from Component_Port. If the receiver or the field OpticalPort is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Port) GetOpticalPort() *Component_Port_OpticalPort {
	if t != nil && t.OpticalPort != nil {
		return t.OpticalPort
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Port
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Port) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.BreakoutMode.PopulateDefaults()
	t.OpticalPort.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Port) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Port"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Port) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Port) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Port.
func (*Component_Port) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Port_BreakoutMode represents the /openconfig-platform/components/component/port/breakout-mode YANG schema element.
type Component_Port_BreakoutMode struct {
	ΛMetadata []ygot.Annotation                            `path:"@" ygotAnnotation:"true"`
	Group     map[uint8]*Component_Port_BreakoutMode_Group `path:"groups/group" module:"openconfig-platform-port/openconfig-platform-port"`
	ΛGroup    []ygot.Annotation                            `path:"groups/@group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Port_BreakoutMode implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Port_BreakoutMode) IsYANGGoStruct() {}

// NewGroup creates a new entry in the Group list of the
// Component_Port_BreakoutMode struct. The keys of the list are populated from the input
// arguments.
func (t *Component_Port_BreakoutMode) NewGroup(Index uint8) (*Component_Port_BreakoutMode_Group, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Group == nil {
		t.Group = make(map[uint8]*Component_Port_BreakoutMode_Group)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Group[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Group", key)
	}

	t.Group[key] = &Component_Port_BreakoutMode_Group{
		Index: &Index,
	}

	return t.Group[key], nil
}

// RenameGroup renames an entry in the list Group within
// the Component_Port_BreakoutMode struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Component_Port_BreakoutMode) RenameGroup(oldK, newK uint8) error {
	if _, ok := t.Group[newK]; ok {
		return fmt.Errorf("key %v already exists in Group", newK)
	}

	e, ok := t.Group[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Group", oldK)
	}
	e.Index = &newK

	t.Group[newK] = e
	delete(t.Group, oldK)
	return nil
}

// GetOrCreateGroupMap returns the list (map) from Component_Port_BreakoutMode.
//
// It initializes the field if not already initialized.
func (t *Component_Port_BreakoutMode) GetOrCreateGroupMap() map[uint8]*Component_Port_BreakoutMode_Group {
	if t.Group == nil {
		t.Group = make(map[uint8]*Component_Port_BreakoutMode_Group)
	}
	return t.Group
}

// GetOrCreateGroup retrieves the value with the specified keys from
// the receiver Component_Port_BreakoutMode. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Component_Port_BreakoutMode) GetOrCreateGroup(Index uint8) *Component_Port_BreakoutMode_Group {

	key := Index

	if v, ok := t.Group[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewGroup(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateGroup got unexpected error: %v", err))
	}
	return v
}

// GetGroup retrieves the value with the specified key from
// the Group map field of Component_Port_BreakoutMode. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Component_Port_BreakoutMode) GetGroup(Index uint8) *Component_Port_BreakoutMode_Group {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.Group[key]; ok {
		return lm
	}
	return nil
}

// AppendGroup appends the supplied Component_Port_BreakoutMode_Group struct to the
// list Group of Component_Port_BreakoutMode. If the key value(s) specified in
// the supplied Component_Port_BreakoutMode_Group already exist in the list, an error is
// returned.
func (t *Component_Port_BreakoutMode) AppendGroup(v *Component_Port_BreakoutMode_Group) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Group == nil {
		t.Group = make(map[uint8]*Component_Port_BreakoutMode_Group)
	}

	if _, ok := t.Group[key]; ok {
		return fmt.Errorf("duplicate key for list Group %v", key)
	}

	t.Group[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Port_BreakoutMode
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Port_BreakoutMode) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Group {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Port_BreakoutMode) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Port_BreakoutMode"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Port_BreakoutMode) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Port_BreakoutMode) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Port_BreakoutMode.
func (*Component_Port_BreakoutMode) ΛBelongingModule() string {
	return "openconfig-platform-port"
}

// Component_Port_BreakoutMode_Group represents the /openconfig-platform/components/component/port/breakout-mode/groups/group YANG schema element.
type Component_Port_BreakoutMode_Group struct {
	ΛMetadata            []ygot.Annotation           `path:"@" ygotAnnotation:"true"`
	BreakoutSpeed        E_IfEthernet_ETHERNET_SPEED `path:"config/breakout-speed" module:"openconfig-platform-port/openconfig-platform-port"`
	ΛBreakoutSpeed       []ygot.Annotation           `path:"config/@breakout-speed" ygotAnnotation:"true"`
	Index                *uint8                      `path:"config/index|index" module:"openconfig-platform-port/openconfig-platform-port|openconfig-platform-port"`
	ΛIndex               []ygot.Annotation           `path:"config/@index|@index" ygotAnnotation:"true"`
	NumBreakouts         *uint8                      `path:"config/num-breakouts" module:"openconfig-platform-port/openconfig-platform-port"`
	ΛNumBreakouts        []ygot.Annotation           `path:"config/@num-breakouts" ygotAnnotation:"true"`
	NumPhysicalChannels  *uint8                      `path:"config/num-physical-channels" module:"openconfig-platform-port/openconfig-platform-port"`
	ΛNumPhysicalChannels []ygot.Annotation           `path:"config/@num-physical-channels" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Port_BreakoutMode_Group implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Port_BreakoutMode_Group) IsYANGGoStruct() {}

// GetBreakoutSpeed retrieves the value of the leaf BreakoutSpeed from the Component_Port_BreakoutMode_Group
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BreakoutSpeed is set, it can
// safely use t.GetBreakoutSpeed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BreakoutSpeed == nil' before retrieving the leaf's value.
func (t *Component_Port_BreakoutMode_Group) GetBreakoutSpeed() E_IfEthernet_ETHERNET_SPEED {
	if t == nil || t.BreakoutSpeed == 0 {
		return 0
	}
	return t.BreakoutSpeed
}

// GetIndex retrieves the value of the leaf Index from the Component_Port_BreakoutMode_Group
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *Component_Port_BreakoutMode_Group) GetIndex() uint8 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetNumBreakouts retrieves the value of the leaf NumBreakouts from the Component_Port_BreakoutMode_Group
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NumBreakouts is set, it can
// safely use t.GetNumBreakouts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NumBreakouts == nil' before retrieving the leaf's value.
func (t *Component_Port_BreakoutMode_Group) GetNumBreakouts() uint8 {
	if t == nil || t.NumBreakouts == nil {
		return 0
	}
	return *t.NumBreakouts
}

// GetNumPhysicalChannels retrieves the value of the leaf NumPhysicalChannels from the Component_Port_BreakoutMode_Group
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NumPhysicalChannels is set, it can
// safely use t.GetNumPhysicalChannels() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NumPhysicalChannels == nil' before retrieving the leaf's value.
func (t *Component_Port_BreakoutMode_Group) GetNumPhysicalChannels() uint8 {
	if t == nil || t.NumPhysicalChannels == nil {
		return 0
	}
	return *t.NumPhysicalChannels
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Port_BreakoutMode_Group
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Port_BreakoutMode_Group) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the Component_Port_BreakoutMode_Group struct, which is a YANG list entry.
func (t *Component_Port_BreakoutMode_Group) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Port_BreakoutMode_Group) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Port_BreakoutMode_Group"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Port_BreakoutMode_Group) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Port_BreakoutMode_Group) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Port_BreakoutMode_Group.
func (*Component_Port_BreakoutMode_Group) ΛBelongingModule() string {
	return "openconfig-platform-port"
}

// Component_Port_OpticalPort represents the /openconfig-platform/components/component/port/optical-port YANG schema element.
type Component_Port_OpticalPort struct {
	ΛMetadata        []ygot.Annotation                       `path:"@" ygotAnnotation:"true"`
	AdminState       E_TransportTypes_AdminStateType         `path:"config/admin-state" module:"openconfig-transport-line-common/openconfig-transport-line-common"`
	ΛAdminState      []ygot.Annotation                       `path:"config/@admin-state" ygotAnnotation:"true"`
	InputPower       *Component_Port_OpticalPort_InputPower  `path:"state/input-power" module:"openconfig-transport-line-common/openconfig-transport-line-common"`
	ΛInputPower      []ygot.Annotation                       `path:"state/@input-power" ygotAnnotation:"true"`
	OpticalPortType  E_TransportTypes_OPTICAL_PORT_TYPE      `path:"state/optical-port-type" module:"openconfig-transport-line-common/openconfig-transport-line-common"`
	ΛOpticalPortType []ygot.Annotation                       `path:"state/@optical-port-type" ygotAnnotation:"true"`
	OutputPower      *Component_Port_OpticalPort_OutputPower `path:"state/output-power" module:"openconfig-transport-line-common/openconfig-transport-line-common"`
	ΛOutputPower     []ygot.Annotation                       `path:"state/@output-power" ygotAnnotation:"true"`
	Tilt             *float64                                `path:"state/tilt" module:"openconfig-transport-line-common/openconfig-transport-line-common"`
	ΛTilt            []ygot.Annotation                       `path:"state/@tilt" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Port_OpticalPort implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Port_OpticalPort) IsYANGGoStruct() {}

// GetOrCreateInputPower retrieves the value of the InputPower field
// or returns the existing field if it already exists.
func (t *Component_Port_OpticalPort) GetOrCreateInputPower() *Component_Port_OpticalPort_InputPower {
	if t.InputPower != nil {
		return t.InputPower
	}
	t.InputPower = &Component_Port_OpticalPort_InputPower{}
	return t.InputPower
}

// GetOrCreateOutputPower retrieves the value of the OutputPower field
// or returns the existing field if it already exists.
func (t *Component_Port_OpticalPort) GetOrCreateOutputPower() *Component_Port_OpticalPort_OutputPower {
	if t.OutputPower != nil {
		return t.OutputPower
	}
	t.OutputPower = &Component_Port_OpticalPort_OutputPower{}
	return t.OutputPower
}

// GetInputPower returns the value of the InputPower struct pointer
// from Component_Port_OpticalPort. If the receiver or the field InputPower is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Port_OpticalPort) GetInputPower() *Component_Port_OpticalPort_InputPower {
	if t != nil && t.InputPower != nil {
		return t.InputPower
	}
	return nil
}

// GetOutputPower returns the value of the OutputPower struct pointer
// from Component_Port_OpticalPort. If the receiver or the field OutputPower is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Port_OpticalPort) GetOutputPower() *Component_Port_OpticalPort_OutputPower {
	if t != nil && t.OutputPower != nil {
		return t.OutputPower
	}
	return nil
}

// GetAdminState retrieves the value of the leaf AdminState from the Component_Port_OpticalPort
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdminState is set, it can
// safely use t.GetAdminState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdminState == nil' before retrieving the leaf's value.
func (t *Component_Port_OpticalPort) GetAdminState() E_TransportTypes_AdminStateType {
	if t == nil || t.AdminState == 0 {
		return 0
	}
	return t.AdminState
}

// GetOpticalPortType retrieves the value of the leaf OpticalPortType from the Component_Port_OpticalPort
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OpticalPortType is set, it can
// safely use t.GetOpticalPortType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OpticalPortType == nil' before retrieving the leaf's value.
func (t *Component_Port_OpticalPort) GetOpticalPortType() E_TransportTypes_OPTICAL_PORT_TYPE {
	if t == nil || t.OpticalPortType == 0 {
		return 0
	}
	return t.OpticalPortType
}

// GetTilt retrieves the value of the leaf Tilt from the Component_Port_OpticalPort
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tilt is set, it can
// safely use t.GetTilt() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tilt == nil' before retrieving the leaf's value.
func (t *Component_Port_OpticalPort) GetTilt() float64 {
	if t == nil || t.Tilt == nil {
		return 0.0
	}
	return *t.Tilt
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Port_OpticalPort
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Port_OpticalPort) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.InputPower.PopulateDefaults()
	t.OutputPower.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Port_OpticalPort) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Port_OpticalPort"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Port_OpticalPort) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Port_OpticalPort) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Port_OpticalPort.
func (*Component_Port_OpticalPort) ΛBelongingModule() string {
	return "openconfig-transport-line-common"
}

// Component_Port_OpticalPort_InputPower represents the /openconfig-platform/components/component/port/optical-port/state/input-power YANG schema element.
type Component_Port_OpticalPort_InputPower struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-transport-line-common"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-transport-line-common"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-transport-line-common"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-transport-line-common"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-transport-line-common"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-transport-line-common"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-transport-line-common"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Port_OpticalPort_InputPower implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Port_OpticalPort_InputPower) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_Port_OpticalPort_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_Port_OpticalPort_InputPower) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_Port_OpticalPort_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_Port_OpticalPort_InputPower) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_Port_OpticalPort_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_Port_OpticalPort_InputPower) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_Port_OpticalPort_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_Port_OpticalPort_InputPower) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_Port_OpticalPort_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_Port_OpticalPort_InputPower) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_Port_OpticalPort_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_Port_OpticalPort_InputPower) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_Port_OpticalPort_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_Port_OpticalPort_InputPower) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Port_OpticalPort_InputPower
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Port_OpticalPort_InputPower) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Port_OpticalPort_InputPower) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Port_OpticalPort_InputPower"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Port_OpticalPort_InputPower) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Port_OpticalPort_InputPower) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Port_OpticalPort_InputPower.
func (*Component_Port_OpticalPort_InputPower) ΛBelongingModule() string {
	return "openconfig-transport-line-common"
}

// Component_Port_OpticalPort_OutputPower represents the /openconfig-platform/components/component/port/optical-port/state/output-power YANG schema element.
type Component_Port_OpticalPort_OutputPower struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-transport-line-common"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-transport-line-common"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-transport-line-common"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-transport-line-common"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-transport-line-common"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-transport-line-common"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-transport-line-common"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Port_OpticalPort_OutputPower implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Port_OpticalPort_OutputPower) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_Port_OpticalPort_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_Port_OpticalPort_OutputPower) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_Port_OpticalPort_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_Port_OpticalPort_OutputPower) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_Port_OpticalPort_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_Port_OpticalPort_OutputPower) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_Port_OpticalPort_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_Port_OpticalPort_OutputPower) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_Port_OpticalPort_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_Port_OpticalPort_OutputPower) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_Port_OpticalPort_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_Port_OpticalPort_OutputPower) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_Port_OpticalPort_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_Port_OpticalPort_OutputPower) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Port_OpticalPort_OutputPower
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Port_OpticalPort_OutputPower) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Port_OpticalPort_OutputPower) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Port_OpticalPort_OutputPower"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Port_OpticalPort_OutputPower) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Port_OpticalPort_OutputPower) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Port_OpticalPort_OutputPower.
func (*Component_Port_OpticalPort_OutputPower) ΛBelongingModule() string {
	return "openconfig-transport-line-common"
}

// Component_PowerSupply represents the /openconfig-platform/components/component/power-supply YANG schema element.
type Component_PowerSupply struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_PowerSupply implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_PowerSupply) IsYANGGoStruct() {}

// PopulateDefaults recursively populates unset leaf fields in the Component_PowerSupply
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_PowerSupply) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_PowerSupply) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_PowerSupply"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_PowerSupply) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_PowerSupply) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_PowerSupply.
func (*Component_PowerSupply) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Property represents the /openconfig-platform/components/component/properties/property YANG schema element.
type Component_Property struct {
	ΛMetadata     []ygot.Annotation              `path:"@" ygotAnnotation:"true"`
	Configurable  *bool                          `path:"state/configurable" module:"openconfig-platform/openconfig-platform"`
	ΛConfigurable []ygot.Annotation              `path:"state/@configurable" ygotAnnotation:"true"`
	Name          *string                        `path:"config/name|name" module:"openconfig-platform/openconfig-platform|openconfig-platform"`
	ΛName         []ygot.Annotation              `path:"config/@name|@name" ygotAnnotation:"true"`
	Value         Component_Property_Value_Union `path:"config/value" module:"openconfig-platform/openconfig-platform"`
	ΛValue        []ygot.Annotation              `path:"config/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Property implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Property) IsYANGGoStruct() {}

// GetConfigurable retrieves the value of the leaf Configurable from the Component_Property
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Configurable is set, it can
// safely use t.GetConfigurable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Configurable == nil' before retrieving the leaf's value.
func (t *Component_Property) GetConfigurable() bool {
	if t == nil || t.Configurable == nil {
		return false
	}
	return *t.Configurable
}

// GetName retrieves the value of the leaf Name from the Component_Property
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Component_Property) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetValue retrieves the value of the leaf Value from the Component_Property
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *Component_Property) GetValue() Component_Property_Value_Union {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Property
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Property) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the Component_Property struct, which is a YANG list entry.
func (t *Component_Property) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Property) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Property"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Property) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Property) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Property.
func (*Component_Property) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Property_Value_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-platform/components/component/properties/property/config/value within the YANG schema.
// Union type can be one of [UnionBool, UnionFloat64, UnionInt64, UnionString, UnionUint64].
type Component_Property_Value_Union interface {
	// Union type can be one of [UnionBool, UnionFloat64, UnionInt64, UnionString, UnionUint64]
	Documentation_for_Component_Property_Value_Union()
}

// Documentation_for_Component_Property_Value_Union ensures that UnionBool
// implements the Component_Property_Value_Union interface.
func (UnionBool) Documentation_for_Component_Property_Value_Union() {}

// Documentation_for_Component_Property_Value_Union ensures that UnionFloat64
// implements the Component_Property_Value_Union interface.
func (UnionFloat64) Documentation_for_Component_Property_Value_Union() {}

// Documentation_for_Component_Property_Value_Union ensures that UnionInt64
// implements the Component_Property_Value_Union interface.
func (UnionInt64) Documentation_for_Component_Property_Value_Union() {}

// Documentation_for_Component_Property_Value_Union ensures that UnionString
// implements the Component_Property_Value_Union interface.
func (UnionString) Documentation_for_Component_Property_Value_Union() {}

// Documentation_for_Component_Property_Value_Union ensures that UnionUint64
// implements the Component_Property_Value_Union interface.
func (UnionUint64) Documentation_for_Component_Property_Value_Union() {}

// To_Component_Property_Value_Union takes an input interface{} and attempts to convert it to a struct
// which implements the Component_Property_Value_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *Component_Property) To_Component_Property_Value_Union(i interface{}) (Component_Property_Value_Union, error) {
	if v, ok := i.(Component_Property_Value_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case bool:
		return UnionBool(v), nil
	case float64:
		return UnionFloat64(v), nil
	case int64:
		return UnionInt64(v), nil
	case string:
		return UnionString(v), nil
	case uint64:
		return UnionUint64(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to Component_Property_Value_Union, unknown union type, got: %T, want any of [bool, float64, int64, string, uint64]", i, i)
}

// Component_SoftwareModule represents the /openconfig-platform/components/component/software-module YANG schema element.
type Component_SoftwareModule struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_SoftwareModule implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_SoftwareModule) IsYANGGoStruct() {}

// PopulateDefaults recursively populates unset leaf fields in the Component_SoftwareModule
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_SoftwareModule) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_SoftwareModule) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_SoftwareModule"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_SoftwareModule) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_SoftwareModule) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_SoftwareModule.
func (*Component_SoftwareModule) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Storage represents the /openconfig-platform/components/component/storage YANG schema element.
type Component_Storage struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Storage implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Storage) IsYANGGoStruct() {}

// PopulateDefaults recursively populates unset leaf fields in the Component_Storage
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Storage) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Storage) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Storage"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Storage) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Storage) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Storage.
func (*Component_Storage) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Subcomponent represents the /openconfig-platform/components/component/subcomponents/subcomponent YANG schema element.
type Component_Subcomponent struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Name      *string           `path:"config/name|name" module:"openconfig-platform/openconfig-platform|openconfig-platform"`
	ΛName     []ygot.Annotation `path:"config/@name|@name" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Subcomponent implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Subcomponent) IsYANGGoStruct() {}

// GetName retrieves the value of the leaf Name from the Component_Subcomponent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Component_Subcomponent) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Subcomponent
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Subcomponent) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the Component_Subcomponent struct, which is a YANG list entry.
func (t *Component_Subcomponent) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Subcomponent) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Subcomponent"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Subcomponent) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Subcomponent) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Subcomponent.
func (*Component_Subcomponent) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Temperature represents the /openconfig-platform/components/component/state/temperature YANG schema element.
type Component_Temperature struct {
	ΛMetadata       []ygot.Annotation                      `path:"@" ygotAnnotation:"true"`
	AlarmSeverity   E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY `path:"alarm-severity" module:"openconfig-platform"`
	ΛAlarmSeverity  []ygot.Annotation                      `path:"@alarm-severity" ygotAnnotation:"true"`
	AlarmStatus     *bool                                  `path:"alarm-status" module:"openconfig-platform"`
	ΛAlarmStatus    []ygot.Annotation                      `path:"@alarm-status" ygotAnnotation:"true"`
	AlarmThreshold  *uint32                                `path:"alarm-threshold" module:"openconfig-platform"`
	ΛAlarmThreshold []ygot.Annotation                      `path:"@alarm-threshold" ygotAnnotation:"true"`
	Avg             *float64                               `path:"avg" module:"openconfig-platform"`
	ΛAvg            []ygot.Annotation                      `path:"@avg" ygotAnnotation:"true"`
	Instant         *float64                               `path:"instant" module:"openconfig-platform"`
	ΛInstant        []ygot.Annotation                      `path:"@instant" ygotAnnotation:"true"`
	Interval        *uint64                                `path:"interval" module:"openconfig-platform"`
	ΛInterval       []ygot.Annotation                      `path:"@interval" ygotAnnotation:"true"`
	Max             *float64                               `path:"max" module:"openconfig-platform"`
	ΛMax            []ygot.Annotation                      `path:"@max" ygotAnnotation:"true"`
	MaxTime         *uint64                                `path:"max-time" module:"openconfig-platform"`
	ΛMaxTime        []ygot.Annotation                      `path:"@max-time" ygotAnnotation:"true"`
	Min             *float64                               `path:"min" module:"openconfig-platform"`
	ΛMin            []ygot.Annotation                      `path:"@min" ygotAnnotation:"true"`
	MinTime         *uint64                                `path:"min-time" module:"openconfig-platform"`
	ΛMinTime        []ygot.Annotation                      `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Temperature implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Temperature) IsYANGGoStruct() {}

// GetAlarmSeverity retrieves the value of the leaf AlarmSeverity from the Component_Temperature
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AlarmSeverity is set, it can
// safely use t.GetAlarmSeverity() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AlarmSeverity == nil' before retrieving the leaf's value.
func (t *Component_Temperature) GetAlarmSeverity() E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY {
	if t == nil || t.AlarmSeverity == 0 {
		return 0
	}
	return t.AlarmSeverity
}

// GetAlarmStatus retrieves the value of the leaf AlarmStatus from the Component_Temperature
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AlarmStatus is set, it can
// safely use t.GetAlarmStatus() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AlarmStatus == nil' before retrieving the leaf's value.
func (t *Component_Temperature) GetAlarmStatus() bool {
	if t == nil || t.AlarmStatus == nil {
		return false
	}
	return *t.AlarmStatus
}

// GetAlarmThreshold retrieves the value of the leaf AlarmThreshold from the Component_Temperature
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AlarmThreshold is set, it can
// safely use t.GetAlarmThreshold() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AlarmThreshold == nil' before retrieving the leaf's value.
func (t *Component_Temperature) GetAlarmThreshold() uint32 {
	if t == nil || t.AlarmThreshold == nil {
		return 0
	}
	return *t.AlarmThreshold
}

// GetAvg retrieves the value of the leaf Avg from the Component_Temperature
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_Temperature) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_Temperature
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_Temperature) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_Temperature
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_Temperature) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_Temperature
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_Temperature) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_Temperature
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_Temperature) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_Temperature
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_Temperature) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_Temperature
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_Temperature) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Temperature
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Temperature) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Temperature) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Temperature"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Temperature) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Temperature) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Temperature.
func (*Component_Temperature) ΛBelongingModule() string {
	return "openconfig-platform"
}

// Component_Transceiver represents the /openconfig-platform/components/component/transceiver YANG schema element.
type Component_Transceiver struct {
	ΛMetadata               []ygot.Annotation                                                           `path:"@" ygotAnnotation:"true"`
	Channel                 map[uint16]*Component_Transceiver_Channel                                   `path:"physical-channels/channel" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛChannel                []ygot.Annotation                                                           `path:"physical-channels/@channel" ygotAnnotation:"true"`
	ConnectorType           E_TransportTypes_FIBER_CONNECTOR_TYPE                                       `path:"state/connector-type" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛConnectorType          []ygot.Annotation                                                           `path:"state/@connector-type" ygotAnnotation:"true"`
	DateCode                *string                                                                     `path:"state/date-code" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛDateCode               []ygot.Annotation                                                           `path:"state/@date-code" ygotAnnotation:"true"`
	Enabled                 *bool                                                                       `path:"config/enabled" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛEnabled                []ygot.Annotation                                                           `path:"config/@enabled" ygotAnnotation:"true"`
	EthernetPmd             E_TransportTypes_ETHERNET_PMD_TYPE                                          `path:"state/ethernet-pmd" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛEthernetPmd            []ygot.Annotation                                                           `path:"state/@ethernet-pmd" ygotAnnotation:"true"`
	EthernetPmdPreconf      E_TransportTypes_ETHERNET_PMD_TYPE                                          `path:"config/ethernet-pmd-preconf" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛEthernetPmdPreconf     []ygot.Annotation                                                           `path:"config/@ethernet-pmd-preconf" ygotAnnotation:"true"`
	FaultCondition          *bool                                                                       `path:"state/fault-condition" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛFaultCondition         []ygot.Annotation                                                           `path:"state/@fault-condition" ygotAnnotation:"true"`
	FecCorrectedBits        *uint64                                                                     `path:"state/fec-corrected-bits" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛFecCorrectedBits       []ygot.Annotation                                                           `path:"state/@fec-corrected-bits" ygotAnnotation:"true"`
	FecCorrectedBytes       *uint64                                                                     `path:"state/fec-corrected-bytes" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛFecCorrectedBytes      []ygot.Annotation                                                           `path:"state/@fec-corrected-bytes" ygotAnnotation:"true"`
	FecMode                 E_PlatformTypes_FEC_MODE_TYPE                                               `path:"config/fec-mode" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛFecMode                []ygot.Annotation                                                           `path:"config/@fec-mode" ygotAnnotation:"true"`
	FecStatus               E_PlatformTypes_FEC_STATUS_TYPE                                             `path:"state/fec-status" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛFecStatus              []ygot.Annotation                                                           `path:"state/@fec-status" ygotAnnotation:"true"`
	FecUncorrectableBlocks  *uint64                                                                     `path:"state/fec-uncorrectable-blocks" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛFecUncorrectableBlocks []ygot.Annotation                                                           `path:"state/@fec-uncorrectable-blocks" ygotAnnotation:"true"`
	FecUncorrectableWords   *uint64                                                                     `path:"state/fec-uncorrectable-words" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛFecUncorrectableWords  []ygot.Annotation                                                           `path:"state/@fec-uncorrectable-words" ygotAnnotation:"true"`
	FormFactor              E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE                               `path:"state/form-factor" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛFormFactor             []ygot.Annotation                                                           `path:"state/@form-factor" ygotAnnotation:"true"`
	FormFactorPreconf       E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE                               `path:"config/form-factor-preconf" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛFormFactorPreconf      []ygot.Annotation                                                           `path:"config/@form-factor-preconf" ygotAnnotation:"true"`
	InputPower              *Component_Transceiver_InputPower                                           `path:"state/input-power" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛInputPower             []ygot.Annotation                                                           `path:"state/@input-power" ygotAnnotation:"true"`
	LaserBiasCurrent        *Component_Transceiver_LaserBiasCurrent                                     `path:"state/laser-bias-current" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛLaserBiasCurrent       []ygot.Annotation                                                           `path:"state/@laser-bias-current" ygotAnnotation:"true"`
	ModuleFunctionalType    E_TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE                         `path:"config/module-functional-type" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛModuleFunctionalType   []ygot.Annotation                                                           `path:"config/@module-functional-type" ygotAnnotation:"true"`
	OtnComplianceCode       E_TransportTypes_OTN_APPLICATION_CODE                                       `path:"state/otn-compliance-code" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛOtnComplianceCode      []ygot.Annotation                                                           `path:"state/@otn-compliance-code" ygotAnnotation:"true"`
	OutputPower             *Component_Transceiver_OutputPower                                          `path:"state/output-power" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛOutputPower            []ygot.Annotation                                                           `path:"state/@output-power" ygotAnnotation:"true"`
	PostFecBer              *Component_Transceiver_PostFecBer                                           `path:"state/post-fec-ber" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛPostFecBer             []ygot.Annotation                                                           `path:"state/@post-fec-ber" ygotAnnotation:"true"`
	PreFecBer               *Component_Transceiver_PreFecBer                                            `path:"state/pre-fec-ber" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛPreFecBer              []ygot.Annotation                                                           `path:"state/@pre-fec-ber" ygotAnnotation:"true"`
	Present                 E_Transceiver_Present                                                       `path:"state/present" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛPresent                []ygot.Annotation                                                           `path:"state/@present" ygotAnnotation:"true"`
	SerialNo                *string                                                                     `path:"state/serial-no" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛSerialNo               []ygot.Annotation                                                           `path:"state/@serial-no" ygotAnnotation:"true"`
	SonetSdhComplianceCode  E_TransportTypes_SONET_APPLICATION_CODE                                     `path:"state/sonet-sdh-compliance-code" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛSonetSdhComplianceCode []ygot.Annotation                                                           `path:"state/@sonet-sdh-compliance-code" ygotAnnotation:"true"`
	SupplyVoltage           *Component_Transceiver_SupplyVoltage                                        `path:"state/supply-voltage" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛSupplyVoltage          []ygot.Annotation                                                           `path:"state/@supply-voltage" ygotAnnotation:"true"`
	Threshold               map[E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY]*Component_Transceiver_Threshold `path:"thresholds/threshold" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛThreshold              []ygot.Annotation                                                           `path:"thresholds/@threshold" ygotAnnotation:"true"`
	Vendor                  *string                                                                     `path:"state/vendor" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛVendor                 []ygot.Annotation                                                           `path:"state/@vendor" ygotAnnotation:"true"`
	VendorPart              *string                                                                     `path:"state/vendor-part" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛVendorPart             []ygot.Annotation                                                           `path:"state/@vendor-part" ygotAnnotation:"true"`
	VendorRev               *string                                                                     `path:"state/vendor-rev" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛVendorRev              []ygot.Annotation                                                           `path:"state/@vendor-rev" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Transceiver implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Transceiver) IsYANGGoStruct() {}

// NewChannel creates a new entry in the Channel list of the
// Component_Transceiver struct. The keys of the list are populated from the input
// arguments.
func (t *Component_Transceiver) NewChannel(Index uint16) (*Component_Transceiver_Channel, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Channel == nil {
		t.Channel = make(map[uint16]*Component_Transceiver_Channel)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Channel[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Channel", key)
	}

	t.Channel[key] = &Component_Transceiver_Channel{
		Index: &Index,
	}

	return t.Channel[key], nil
}

// RenameChannel renames an entry in the list Channel within
// the Component_Transceiver struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Component_Transceiver) RenameChannel(oldK, newK uint16) error {
	if _, ok := t.Channel[newK]; ok {
		return fmt.Errorf("key %v already exists in Channel", newK)
	}

	e, ok := t.Channel[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Channel", oldK)
	}
	e.Index = &newK

	t.Channel[newK] = e
	delete(t.Channel, oldK)
	return nil
}

// GetOrCreateChannelMap returns the list (map) from Component_Transceiver.
//
// It initializes the field if not already initialized.
func (t *Component_Transceiver) GetOrCreateChannelMap() map[uint16]*Component_Transceiver_Channel {
	if t.Channel == nil {
		t.Channel = make(map[uint16]*Component_Transceiver_Channel)
	}
	return t.Channel
}

// GetOrCreateChannel retrieves the value with the specified keys from
// the receiver Component_Transceiver. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Component_Transceiver) GetOrCreateChannel(Index uint16) *Component_Transceiver_Channel {

	key := Index

	if v, ok := t.Channel[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewChannel(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateChannel got unexpected error: %v", err))
	}
	return v
}

// GetChannel retrieves the value with the specified key from
// the Channel map field of Component_Transceiver. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Component_Transceiver) GetChannel(Index uint16) *Component_Transceiver_Channel {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.Channel[key]; ok {
		return lm
	}
	return nil
}

// AppendChannel appends the supplied Component_Transceiver_Channel struct to the
// list Channel of Component_Transceiver. If the key value(s) specified in
// the supplied Component_Transceiver_Channel already exist in the list, an error is
// returned.
func (t *Component_Transceiver) AppendChannel(v *Component_Transceiver_Channel) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Channel == nil {
		t.Channel = make(map[uint16]*Component_Transceiver_Channel)
	}

	if _, ok := t.Channel[key]; ok {
		return fmt.Errorf("duplicate key for list Channel %v", key)
	}

	t.Channel[key] = v
	return nil
}

// NewThreshold creates a new entry in the Threshold list of the
// Component_Transceiver struct. The keys of the list are populated from the input
// arguments.
func (t *Component_Transceiver) NewThreshold(Severity E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY) (*Component_Transceiver_Threshold, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Threshold == nil {
		t.Threshold = make(map[E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY]*Component_Transceiver_Threshold)
	}

	key := Severity

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Threshold[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Threshold", key)
	}

	t.Threshold[key] = &Component_Transceiver_Threshold{
		Severity: Severity,
	}

	return t.Threshold[key], nil
}

// RenameThreshold renames an entry in the list Threshold within
// the Component_Transceiver struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Component_Transceiver) RenameThreshold(oldK, newK E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY) error {
	if _, ok := t.Threshold[newK]; ok {
		return fmt.Errorf("key %v already exists in Threshold", newK)
	}

	e, ok := t.Threshold[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Threshold", oldK)
	}
	e.Severity = newK

	t.Threshold[newK] = e
	delete(t.Threshold, oldK)
	return nil
}

// GetOrCreateThresholdMap returns the list (map) from Component_Transceiver.
//
// It initializes the field if not already initialized.
func (t *Component_Transceiver) GetOrCreateThresholdMap() map[E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY]*Component_Transceiver_Threshold {
	if t.Threshold == nil {
		t.Threshold = make(map[E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY]*Component_Transceiver_Threshold)
	}
	return t.Threshold
}

// GetOrCreateThreshold retrieves the value with the specified keys from
// the receiver Component_Transceiver. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Component_Transceiver) GetOrCreateThreshold(Severity E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY) *Component_Transceiver_Threshold {

	key := Severity

	if v, ok := t.Threshold[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewThreshold(Severity)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateThreshold got unexpected error: %v", err))
	}
	return v
}

// GetThreshold retrieves the value with the specified key from
// the Threshold map field of Component_Transceiver. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Component_Transceiver) GetThreshold(Severity E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY) *Component_Transceiver_Threshold {

	if t == nil {
		return nil
	}

	key := Severity

	if lm, ok := t.Threshold[key]; ok {
		return lm
	}
	return nil
}

// AppendThreshold appends the supplied Component_Transceiver_Threshold struct to the
// list Threshold of Component_Transceiver. If the key value(s) specified in
// the supplied Component_Transceiver_Threshold already exist in the list, an error is
// returned.
func (t *Component_Transceiver) AppendThreshold(v *Component_Transceiver_Threshold) error {
	key := v.Severity

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Threshold == nil {
		t.Threshold = make(map[E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY]*Component_Transceiver_Threshold)
	}

	if _, ok := t.Threshold[key]; ok {
		return fmt.Errorf("duplicate key for list Threshold %v", key)
	}

	t.Threshold[key] = v
	return nil
}

// GetOrCreateInputPower retrieves the value of the InputPower field
// or returns the existing field if it already exists.
func (t *Component_Transceiver) GetOrCreateInputPower() *Component_Transceiver_InputPower {
	if t.InputPower != nil {
		return t.InputPower
	}
	t.InputPower = &Component_Transceiver_InputPower{}
	return t.InputPower
}

// GetOrCreateLaserBiasCurrent retrieves the value of the LaserBiasCurrent field
// or returns the existing field if it already exists.
func (t *Component_Transceiver) GetOrCreateLaserBiasCurrent() *Component_Transceiver_LaserBiasCurrent {
	if t.LaserBiasCurrent != nil {
		return t.LaserBiasCurrent
	}
	t.LaserBiasCurrent = &Component_Transceiver_LaserBiasCurrent{}
	return t.LaserBiasCurrent
}

// GetOrCreateOutputPower retrieves the value of the OutputPower field
// or returns the existing field if it already exists.
func (t *Component_Transceiver) GetOrCreateOutputPower() *Component_Transceiver_OutputPower {
	if t.OutputPower != nil {
		return t.OutputPower
	}
	t.OutputPower = &Component_Transceiver_OutputPower{}
	return t.OutputPower
}

// GetOrCreatePostFecBer retrieves the value of the PostFecBer field
// or returns the existing field if it already exists.
func (t *Component_Transceiver) GetOrCreatePostFecBer() *Component_Transceiver_PostFecBer {
	if t.PostFecBer != nil {
		return t.PostFecBer
	}
	t.PostFecBer = &Component_Transceiver_PostFecBer{}
	return t.PostFecBer
}

// GetOrCreatePreFecBer retrieves the value of the PreFecBer field
// or returns the existing field if it already exists.
func (t *Component_Transceiver) GetOrCreatePreFecBer() *Component_Transceiver_PreFecBer {
	if t.PreFecBer != nil {
		return t.PreFecBer
	}
	t.PreFecBer = &Component_Transceiver_PreFecBer{}
	return t.PreFecBer
}

// GetOrCreateSupplyVoltage retrieves the value of the SupplyVoltage field
// or returns the existing field if it already exists.
func (t *Component_Transceiver) GetOrCreateSupplyVoltage() *Component_Transceiver_SupplyVoltage {
	if t.SupplyVoltage != nil {
		return t.SupplyVoltage
	}
	t.SupplyVoltage = &Component_Transceiver_SupplyVoltage{}
	return t.SupplyVoltage
}

// GetInputPower returns the value of the InputPower struct pointer
// from Component_Transceiver. If the receiver or the field InputPower is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Transceiver) GetInputPower() *Component_Transceiver_InputPower {
	if t != nil && t.InputPower != nil {
		return t.InputPower
	}
	return nil
}

// GetLaserBiasCurrent returns the value of the LaserBiasCurrent struct pointer
// from Component_Transceiver. If the receiver or the field LaserBiasCurrent is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Transceiver) GetLaserBiasCurrent() *Component_Transceiver_LaserBiasCurrent {
	if t != nil && t.LaserBiasCurrent != nil {
		return t.LaserBiasCurrent
	}
	return nil
}

// GetOutputPower returns the value of the OutputPower struct pointer
// from Component_Transceiver. If the receiver or the field OutputPower is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Transceiver) GetOutputPower() *Component_Transceiver_OutputPower {
	if t != nil && t.OutputPower != nil {
		return t.OutputPower
	}
	return nil
}

// GetPostFecBer returns the value of the PostFecBer struct pointer
// from Component_Transceiver. If the receiver or the field PostFecBer is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Transceiver) GetPostFecBer() *Component_Transceiver_PostFecBer {
	if t != nil && t.PostFecBer != nil {
		return t.PostFecBer
	}
	return nil
}

// GetPreFecBer returns the value of the PreFecBer struct pointer
// from Component_Transceiver. If the receiver or the field PreFecBer is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Transceiver) GetPreFecBer() *Component_Transceiver_PreFecBer {
	if t != nil && t.PreFecBer != nil {
		return t.PreFecBer
	}
	return nil
}

// GetSupplyVoltage returns the value of the SupplyVoltage struct pointer
// from Component_Transceiver. If the receiver or the field SupplyVoltage is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Transceiver) GetSupplyVoltage() *Component_Transceiver_SupplyVoltage {
	if t != nil && t.SupplyVoltage != nil {
		return t.SupplyVoltage
	}
	return nil
}

// GetConnectorType retrieves the value of the leaf ConnectorType from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ConnectorType is set, it can
// safely use t.GetConnectorType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ConnectorType == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetConnectorType() E_TransportTypes_FIBER_CONNECTOR_TYPE {
	if t == nil || t.ConnectorType == 0 {
		return 0
	}
	return t.ConnectorType
}

// GetDateCode retrieves the value of the leaf DateCode from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DateCode is set, it can
// safely use t.GetDateCode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DateCode == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetDateCode() string {
	if t == nil || t.DateCode == nil {
		return ""
	}
	return *t.DateCode
}

// GetEnabled retrieves the value of the leaf Enabled from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetEthernetPmd retrieves the value of the leaf EthernetPmd from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EthernetPmd is set, it can
// safely use t.GetEthernetPmd() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EthernetPmd == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetEthernetPmd() E_TransportTypes_ETHERNET_PMD_TYPE {
	if t == nil || t.EthernetPmd == 0 {
		return 0
	}
	return t.EthernetPmd
}

// GetEthernetPmdPreconf retrieves the value of the leaf EthernetPmdPreconf from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EthernetPmdPreconf is set, it can
// safely use t.GetEthernetPmdPreconf() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EthernetPmdPreconf == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetEthernetPmdPreconf() E_TransportTypes_ETHERNET_PMD_TYPE {
	if t == nil || t.EthernetPmdPreconf == 0 {
		return 0
	}
	return t.EthernetPmdPreconf
}

// GetFaultCondition retrieves the value of the leaf FaultCondition from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FaultCondition is set, it can
// safely use t.GetFaultCondition() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FaultCondition == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetFaultCondition() bool {
	if t == nil || t.FaultCondition == nil {
		return false
	}
	return *t.FaultCondition
}

// GetFecCorrectedBits retrieves the value of the leaf FecCorrectedBits from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FecCorrectedBits is set, it can
// safely use t.GetFecCorrectedBits() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FecCorrectedBits == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetFecCorrectedBits() uint64 {
	if t == nil || t.FecCorrectedBits == nil {
		return 0
	}
	return *t.FecCorrectedBits
}

// GetFecCorrectedBytes retrieves the value of the leaf FecCorrectedBytes from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FecCorrectedBytes is set, it can
// safely use t.GetFecCorrectedBytes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FecCorrectedBytes == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetFecCorrectedBytes() uint64 {
	if t == nil || t.FecCorrectedBytes == nil {
		return 0
	}
	return *t.FecCorrectedBytes
}

// GetFecMode retrieves the value of the leaf FecMode from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FecMode is set, it can
// safely use t.GetFecMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FecMode == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetFecMode() E_PlatformTypes_FEC_MODE_TYPE {
	if t == nil || t.FecMode == 0 {
		return 0
	}
	return t.FecMode
}

// GetFecStatus retrieves the value of the leaf FecStatus from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FecStatus is set, it can
// safely use t.GetFecStatus() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FecStatus == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetFecStatus() E_PlatformTypes_FEC_STATUS_TYPE {
	if t == nil || t.FecStatus == 0 {
		return 0
	}
	return t.FecStatus
}

// GetFecUncorrectableBlocks retrieves the value of the leaf FecUncorrectableBlocks from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FecUncorrectableBlocks is set, it can
// safely use t.GetFecUncorrectableBlocks() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FecUncorrectableBlocks == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetFecUncorrectableBlocks() uint64 {
	if t == nil || t.FecUncorrectableBlocks == nil {
		return 0
	}
	return *t.FecUncorrectableBlocks
}

// GetFecUncorrectableWords retrieves the value of the leaf FecUncorrectableWords from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FecUncorrectableWords is set, it can
// safely use t.GetFecUncorrectableWords() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FecUncorrectableWords == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetFecUncorrectableWords() uint64 {
	if t == nil || t.FecUncorrectableWords == nil {
		return 0
	}
	return *t.FecUncorrectableWords
}

// GetFormFactor retrieves the value of the leaf FormFactor from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FormFactor is set, it can
// safely use t.GetFormFactor() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FormFactor == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetFormFactor() E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE {
	if t == nil || t.FormFactor == 0 {
		return 0
	}
	return t.FormFactor
}

// GetFormFactorPreconf retrieves the value of the leaf FormFactorPreconf from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FormFactorPreconf is set, it can
// safely use t.GetFormFactorPreconf() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FormFactorPreconf == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetFormFactorPreconf() E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE {
	if t == nil || t.FormFactorPreconf == 0 {
		return 0
	}
	return t.FormFactorPreconf
}

// GetModuleFunctionalType retrieves the value of the leaf ModuleFunctionalType from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ModuleFunctionalType is set, it can
// safely use t.GetModuleFunctionalType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ModuleFunctionalType == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetModuleFunctionalType() E_TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE {
	if t == nil || t.ModuleFunctionalType == 0 {
		return 0
	}
	return t.ModuleFunctionalType
}

// GetOtnComplianceCode retrieves the value of the leaf OtnComplianceCode from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OtnComplianceCode is set, it can
// safely use t.GetOtnComplianceCode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OtnComplianceCode == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetOtnComplianceCode() E_TransportTypes_OTN_APPLICATION_CODE {
	if t == nil || t.OtnComplianceCode == 0 {
		return 0
	}
	return t.OtnComplianceCode
}

// GetPresent retrieves the value of the leaf Present from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Present is set, it can
// safely use t.GetPresent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Present == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetPresent() E_Transceiver_Present {
	if t == nil || t.Present == 0 {
		return 0
	}
	return t.Present
}

// GetSerialNo retrieves the value of the leaf SerialNo from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SerialNo is set, it can
// safely use t.GetSerialNo() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SerialNo == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetSerialNo() string {
	if t == nil || t.SerialNo == nil {
		return ""
	}
	return *t.SerialNo
}

// GetSonetSdhComplianceCode retrieves the value of the leaf SonetSdhComplianceCode from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SonetSdhComplianceCode is set, it can
// safely use t.GetSonetSdhComplianceCode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SonetSdhComplianceCode == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetSonetSdhComplianceCode() E_TransportTypes_SONET_APPLICATION_CODE {
	if t == nil || t.SonetSdhComplianceCode == 0 {
		return 0
	}
	return t.SonetSdhComplianceCode
}

// GetVendor retrieves the value of the leaf Vendor from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Vendor is set, it can
// safely use t.GetVendor() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Vendor == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetVendor() string {
	if t == nil || t.Vendor == nil {
		return ""
	}
	return *t.Vendor
}

// GetVendorPart retrieves the value of the leaf VendorPart from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VendorPart is set, it can
// safely use t.GetVendorPart() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VendorPart == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetVendorPart() string {
	if t == nil || t.VendorPart == nil {
		return ""
	}
	return *t.VendorPart
}

// GetVendorRev retrieves the value of the leaf VendorRev from the Component_Transceiver
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VendorRev is set, it can
// safely use t.GetVendorRev() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VendorRev == nil' before retrieving the leaf's value.
func (t *Component_Transceiver) GetVendorRev() string {
	if t == nil || t.VendorRev == nil {
		return ""
	}
	return *t.VendorRev
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Transceiver
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Transceiver) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.InputPower.PopulateDefaults()
	t.LaserBiasCurrent.PopulateDefaults()
	t.OutputPower.PopulateDefaults()
	t.PostFecBer.PopulateDefaults()
	t.PreFecBer.PopulateDefaults()
	t.SupplyVoltage.PopulateDefaults()
	for _, e := range t.Channel {
		e.PopulateDefaults()
	}
	for _, e := range t.Threshold {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Transceiver"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Transceiver) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Transceiver.
func (*Component_Transceiver) ΛBelongingModule() string {
	return "openconfig-platform-transceiver"
}

// Component_Transceiver_Channel represents the /openconfig-platform/components/component/transceiver/physical-channels/channel YANG schema element.
type Component_Transceiver_Channel struct {
	ΛMetadata                 []ygot.Annotation                                       `path:"@" ygotAnnotation:"true"`
	AssociatedOpticalChannel  *string                                                 `path:"config/associated-optical-channel" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛAssociatedOpticalChannel []ygot.Annotation                                       `path:"config/@associated-optical-channel" ygotAnnotation:"true"`
	Description               *string                                                 `path:"config/description" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛDescription              []ygot.Annotation                                       `path:"config/@description" ygotAnnotation:"true"`
	Index                     *uint16                                                 `path:"config/index|index" module:"openconfig-platform-transceiver/openconfig-platform-transceiver|openconfig-platform-transceiver"`
	ΛIndex                    []ygot.Annotation                                       `path:"config/@index|@index" ygotAnnotation:"true"`
	InputPower                *Component_Transceiver_Channel_InputPower               `path:"state/input-power" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛInputPower               []ygot.Annotation                                       `path:"state/@input-power" ygotAnnotation:"true"`
	LaserAge                  *uint8                                                  `path:"state/laser-age" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛLaserAge                 []ygot.Annotation                                       `path:"state/@laser-age" ygotAnnotation:"true"`
	LaserBiasCurrent          *Component_Transceiver_Channel_LaserBiasCurrent         `path:"state/laser-bias-current" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛLaserBiasCurrent         []ygot.Annotation                                       `path:"state/@laser-bias-current" ygotAnnotation:"true"`
	LaserTemperature          *Component_Transceiver_Channel_LaserTemperature         `path:"state/laser-temperature" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛLaserTemperature         []ygot.Annotation                                       `path:"state/@laser-temperature" ygotAnnotation:"true"`
	OutputFrequency           *uint64                                                 `path:"state/output-frequency" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛOutputFrequency          []ygot.Annotation                                       `path:"state/@output-frequency" ygotAnnotation:"true"`
	OutputPower               *Component_Transceiver_Channel_OutputPower              `path:"state/output-power" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛOutputPower              []ygot.Annotation                                       `path:"state/@output-power" ygotAnnotation:"true"`
	TargetFrequencyDeviation  *Component_Transceiver_Channel_TargetFrequencyDeviation `path:"state/target-frequency-deviation" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛTargetFrequencyDeviation []ygot.Annotation                                       `path:"state/@target-frequency-deviation" ygotAnnotation:"true"`
	TargetOutputPower         *float64                                                `path:"config/target-output-power" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛTargetOutputPower        []ygot.Annotation                                       `path:"config/@target-output-power" ygotAnnotation:"true"`
	TecCurrent                *Component_Transceiver_Channel_TecCurrent               `path:"state/tec-current" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛTecCurrent               []ygot.Annotation                                       `path:"state/@tec-current" ygotAnnotation:"true"`
	TxLaser                   *bool                                                   `path:"config/tx-laser" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛTxLaser                  []ygot.Annotation                                       `path:"config/@tx-laser" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Transceiver_Channel implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Transceiver_Channel) IsYANGGoStruct() {}

// GetOrCreateInputPower retrieves the value of the InputPower field
// or returns the existing field if it already exists.
func (t *Component_Transceiver_Channel) GetOrCreateInputPower() *Component_Transceiver_Channel_InputPower {
	if t.InputPower != nil {
		return t.InputPower
	}
	t.InputPower = &Component_Transceiver_Channel_InputPower{}
	return t.InputPower
}

// GetOrCreateLaserBiasCurrent retrieves the value of the LaserBiasCurrent field
// or returns the existing field if it already exists.
func (t *Component_Transceiver_Channel) GetOrCreateLaserBiasCurrent() *Component_Transceiver_Channel_LaserBiasCurrent {
	if t.LaserBiasCurrent != nil {
		return t.LaserBiasCurrent
	}
	t.LaserBiasCurrent = &Component_Transceiver_Channel_LaserBiasCurrent{}
	return t.LaserBiasCurrent
}

// GetOrCreateLaserTemperature retrieves the value of the LaserTemperature field
// or returns the existing field if it already exists.
func (t *Component_Transceiver_Channel) GetOrCreateLaserTemperature() *Component_Transceiver_Channel_LaserTemperature {
	if t.LaserTemperature != nil {
		return t.LaserTemperature
	}
	t.LaserTemperature = &Component_Transceiver_Channel_LaserTemperature{}
	return t.LaserTemperature
}

// GetOrCreateOutputPower retrieves the value of the OutputPower field
// or returns the existing field if it already exists.
func (t *Component_Transceiver_Channel) GetOrCreateOutputPower() *Component_Transceiver_Channel_OutputPower {
	if t.OutputPower != nil {
		return t.OutputPower
	}
	t.OutputPower = &Component_Transceiver_Channel_OutputPower{}
	return t.OutputPower
}

// GetOrCreateTargetFrequencyDeviation retrieves the value of the TargetFrequencyDeviation field
// or returns the existing field if it already exists.
func (t *Component_Transceiver_Channel) GetOrCreateTargetFrequencyDeviation() *Component_Transceiver_Channel_TargetFrequencyDeviation {
	if t.TargetFrequencyDeviation != nil {
		return t.TargetFrequencyDeviation
	}
	t.TargetFrequencyDeviation = &Component_Transceiver_Channel_TargetFrequencyDeviation{}
	return t.TargetFrequencyDeviation
}

// GetOrCreateTecCurrent retrieves the value of the TecCurrent field
// or returns the existing field if it already exists.
func (t *Component_Transceiver_Channel) GetOrCreateTecCurrent() *Component_Transceiver_Channel_TecCurrent {
	if t.TecCurrent != nil {
		return t.TecCurrent
	}
	t.TecCurrent = &Component_Transceiver_Channel_TecCurrent{}
	return t.TecCurrent
}

// GetInputPower returns the value of the InputPower struct pointer
// from Component_Transceiver_Channel. If the receiver or the field InputPower is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Transceiver_Channel) GetInputPower() *Component_Transceiver_Channel_InputPower {
	if t != nil && t.InputPower != nil {
		return t.InputPower
	}
	return nil
}

// GetLaserBiasCurrent returns the value of the LaserBiasCurrent struct pointer
// from Component_Transceiver_Channel. If the receiver or the field LaserBiasCurrent is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Transceiver_Channel) GetLaserBiasCurrent() *Component_Transceiver_Channel_LaserBiasCurrent {
	if t != nil && t.LaserBiasCurrent != nil {
		return t.LaserBiasCurrent
	}
	return nil
}

// GetLaserTemperature returns the value of the LaserTemperature struct pointer
// from Component_Transceiver_Channel. If the receiver or the field LaserTemperature is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Transceiver_Channel) GetLaserTemperature() *Component_Transceiver_Channel_LaserTemperature {
	if t != nil && t.LaserTemperature != nil {
		return t.LaserTemperature
	}
	return nil
}

// GetOutputPower returns the value of the OutputPower struct pointer
// from Component_Transceiver_Channel. If the receiver or the field OutputPower is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Transceiver_Channel) GetOutputPower() *Component_Transceiver_Channel_OutputPower {
	if t != nil && t.OutputPower != nil {
		return t.OutputPower
	}
	return nil
}

// GetTargetFrequencyDeviation returns the value of the TargetFrequencyDeviation struct pointer
// from Component_Transceiver_Channel. If the receiver or the field TargetFrequencyDeviation is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Transceiver_Channel) GetTargetFrequencyDeviation() *Component_Transceiver_Channel_TargetFrequencyDeviation {
	if t != nil && t.TargetFrequencyDeviation != nil {
		return t.TargetFrequencyDeviation
	}
	return nil
}

// GetTecCurrent returns the value of the TecCurrent struct pointer
// from Component_Transceiver_Channel. If the receiver or the field TecCurrent is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Component_Transceiver_Channel) GetTecCurrent() *Component_Transceiver_Channel_TecCurrent {
	if t != nil && t.TecCurrent != nil {
		return t.TecCurrent
	}
	return nil
}

// GetAssociatedOpticalChannel retrieves the value of the leaf AssociatedOpticalChannel from the Component_Transceiver_Channel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AssociatedOpticalChannel is set, it can
// safely use t.GetAssociatedOpticalChannel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AssociatedOpticalChannel == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel) GetAssociatedOpticalChannel() string {
	if t == nil || t.AssociatedOpticalChannel == nil {
		return ""
	}
	return *t.AssociatedOpticalChannel
}

// GetDescription retrieves the value of the leaf Description from the Component_Transceiver_Channel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetIndex retrieves the value of the leaf Index from the Component_Transceiver_Channel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel) GetIndex() uint16 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetLaserAge retrieves the value of the leaf LaserAge from the Component_Transceiver_Channel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LaserAge is set, it can
// safely use t.GetLaserAge() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LaserAge == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel) GetLaserAge() uint8 {
	if t == nil || t.LaserAge == nil {
		return 0
	}
	return *t.LaserAge
}

// GetOutputFrequency retrieves the value of the leaf OutputFrequency from the Component_Transceiver_Channel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutputFrequency is set, it can
// safely use t.GetOutputFrequency() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutputFrequency == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel) GetOutputFrequency() uint64 {
	if t == nil || t.OutputFrequency == nil {
		return 0
	}
	return *t.OutputFrequency
}

// GetTargetOutputPower retrieves the value of the leaf TargetOutputPower from the Component_Transceiver_Channel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TargetOutputPower is set, it can
// safely use t.GetTargetOutputPower() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TargetOutputPower == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel) GetTargetOutputPower() float64 {
	if t == nil || t.TargetOutputPower == nil {
		return 0.0
	}
	return *t.TargetOutputPower
}

// GetTxLaser retrieves the value of the leaf TxLaser from the Component_Transceiver_Channel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TxLaser is set, it can
// safely use t.GetTxLaser() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TxLaser == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel) GetTxLaser() bool {
	if t == nil || t.TxLaser == nil {
		return false
	}
	return *t.TxLaser
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Transceiver_Channel
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Transceiver_Channel) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.InputPower.PopulateDefaults()
	t.LaserBiasCurrent.PopulateDefaults()
	t.LaserTemperature.PopulateDefaults()
	t.OutputPower.PopulateDefaults()
	t.TargetFrequencyDeviation.PopulateDefaults()
	t.TecCurrent.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the Component_Transceiver_Channel struct, which is a YANG list entry.
func (t *Component_Transceiver_Channel) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_Channel) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Transceiver_Channel"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_Channel) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Transceiver_Channel) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Transceiver_Channel.
func (*Component_Transceiver_Channel) ΛBelongingModule() string {
	return "openconfig-platform-transceiver"
}

// Component_Transceiver_Channel_InputPower represents the /openconfig-platform/components/component/transceiver/physical-channels/channel/state/input-power YANG schema element.
type Component_Transceiver_Channel_InputPower struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-platform-transceiver"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-platform-transceiver"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-platform-transceiver"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-platform-transceiver"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-platform-transceiver"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-platform-transceiver"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-platform-transceiver"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Transceiver_Channel_InputPower implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Transceiver_Channel_InputPower) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_Transceiver_Channel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_InputPower) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_Transceiver_Channel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_InputPower) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_Transceiver_Channel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_InputPower) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_Transceiver_Channel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_InputPower) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_Transceiver_Channel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_InputPower) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_Transceiver_Channel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_InputPower) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_Transceiver_Channel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_InputPower) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Transceiver_Channel_InputPower
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Transceiver_Channel_InputPower) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_Channel_InputPower) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Transceiver_Channel_InputPower"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_Channel_InputPower) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Transceiver_Channel_InputPower) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Transceiver_Channel_InputPower.
func (*Component_Transceiver_Channel_InputPower) ΛBelongingModule() string {
	return "openconfig-platform-transceiver"
}

// Component_Transceiver_Channel_LaserBiasCurrent represents the /openconfig-platform/components/component/transceiver/physical-channels/channel/state/laser-bias-current YANG schema element.
type Component_Transceiver_Channel_LaserBiasCurrent struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-platform-transceiver"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-platform-transceiver"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-platform-transceiver"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-platform-transceiver"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-platform-transceiver"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-platform-transceiver"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-platform-transceiver"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Transceiver_Channel_LaserBiasCurrent implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Transceiver_Channel_LaserBiasCurrent) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_Transceiver_Channel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_LaserBiasCurrent) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_Transceiver_Channel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_LaserBiasCurrent) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_Transceiver_Channel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_LaserBiasCurrent) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_Transceiver_Channel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_LaserBiasCurrent) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_Transceiver_Channel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_LaserBiasCurrent) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_Transceiver_Channel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_LaserBiasCurrent) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_Transceiver_Channel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_LaserBiasCurrent) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Transceiver_Channel_LaserBiasCurrent
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Transceiver_Channel_LaserBiasCurrent) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_Channel_LaserBiasCurrent) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Transceiver_Channel_LaserBiasCurrent"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_Channel_LaserBiasCurrent) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Transceiver_Channel_LaserBiasCurrent) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Transceiver_Channel_LaserBiasCurrent.
func (*Component_Transceiver_Channel_LaserBiasCurrent) ΛBelongingModule() string {
	return "openconfig-platform-transceiver"
}

// Component_Transceiver_Channel_LaserTemperature represents the /openconfig-platform/components/component/transceiver/physical-channels/channel/state/laser-temperature YANG schema element.
type Component_Transceiver_Channel_LaserTemperature struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-platform-transceiver"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-platform-transceiver"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-platform-transceiver"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-platform-transceiver"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-platform-transceiver"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-platform-transceiver"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-platform-transceiver"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Transceiver_Channel_LaserTemperature implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Transceiver_Channel_LaserTemperature) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_Transceiver_Channel_LaserTemperature
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_LaserTemperature) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_Transceiver_Channel_LaserTemperature
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_LaserTemperature) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_Transceiver_Channel_LaserTemperature
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_LaserTemperature) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_Transceiver_Channel_LaserTemperature
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_LaserTemperature) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_Transceiver_Channel_LaserTemperature
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_LaserTemperature) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_Transceiver_Channel_LaserTemperature
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_LaserTemperature) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_Transceiver_Channel_LaserTemperature
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_LaserTemperature) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Transceiver_Channel_LaserTemperature
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Transceiver_Channel_LaserTemperature) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_Channel_LaserTemperature) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Transceiver_Channel_LaserTemperature"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_Channel_LaserTemperature) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Transceiver_Channel_LaserTemperature) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Transceiver_Channel_LaserTemperature.
func (*Component_Transceiver_Channel_LaserTemperature) ΛBelongingModule() string {
	return "openconfig-platform-transceiver"
}

// Component_Transceiver_Channel_OutputPower represents the /openconfig-platform/components/component/transceiver/physical-channels/channel/state/output-power YANG schema element.
type Component_Transceiver_Channel_OutputPower struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-platform-transceiver"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-platform-transceiver"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-platform-transceiver"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-platform-transceiver"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-platform-transceiver"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-platform-transceiver"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-platform-transceiver"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Transceiver_Channel_OutputPower implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Transceiver_Channel_OutputPower) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_Transceiver_Channel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_OutputPower) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_Transceiver_Channel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_OutputPower) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_Transceiver_Channel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_OutputPower) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_Transceiver_Channel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_OutputPower) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_Transceiver_Channel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_OutputPower) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_Transceiver_Channel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_OutputPower) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_Transceiver_Channel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_OutputPower) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Transceiver_Channel_OutputPower
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Transceiver_Channel_OutputPower) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_Channel_OutputPower) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Transceiver_Channel_OutputPower"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_Channel_OutputPower) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Transceiver_Channel_OutputPower) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Transceiver_Channel_OutputPower.
func (*Component_Transceiver_Channel_OutputPower) ΛBelongingModule() string {
	return "openconfig-platform-transceiver"
}

// Component_Transceiver_Channel_TargetFrequencyDeviation represents the /openconfig-platform/components/component/transceiver/physical-channels/channel/state/target-frequency-deviation YANG schema element.
type Component_Transceiver_Channel_TargetFrequencyDeviation struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-platform-transceiver"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-platform-transceiver"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-platform-transceiver"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-platform-transceiver"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-platform-transceiver"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-platform-transceiver"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-platform-transceiver"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Transceiver_Channel_TargetFrequencyDeviation implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Transceiver_Channel_TargetFrequencyDeviation) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_Transceiver_Channel_TargetFrequencyDeviation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_TargetFrequencyDeviation) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_Transceiver_Channel_TargetFrequencyDeviation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_TargetFrequencyDeviation) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_Transceiver_Channel_TargetFrequencyDeviation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_TargetFrequencyDeviation) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_Transceiver_Channel_TargetFrequencyDeviation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_TargetFrequencyDeviation) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_Transceiver_Channel_TargetFrequencyDeviation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_TargetFrequencyDeviation) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_Transceiver_Channel_TargetFrequencyDeviation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_TargetFrequencyDeviation) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_Transceiver_Channel_TargetFrequencyDeviation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_TargetFrequencyDeviation) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Transceiver_Channel_TargetFrequencyDeviation
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Transceiver_Channel_TargetFrequencyDeviation) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_Channel_TargetFrequencyDeviation) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Transceiver_Channel_TargetFrequencyDeviation"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_Channel_TargetFrequencyDeviation) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Transceiver_Channel_TargetFrequencyDeviation) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Transceiver_Channel_TargetFrequencyDeviation.
func (*Component_Transceiver_Channel_TargetFrequencyDeviation) ΛBelongingModule() string {
	return "openconfig-platform-transceiver"
}

// Component_Transceiver_Channel_TecCurrent represents the /openconfig-platform/components/component/transceiver/physical-channels/channel/state/tec-current YANG schema element.
type Component_Transceiver_Channel_TecCurrent struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-platform-transceiver"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-platform-transceiver"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-platform-transceiver"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-platform-transceiver"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-platform-transceiver"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-platform-transceiver"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-platform-transceiver"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Transceiver_Channel_TecCurrent implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Transceiver_Channel_TecCurrent) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_Transceiver_Channel_TecCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_TecCurrent) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_Transceiver_Channel_TecCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_TecCurrent) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_Transceiver_Channel_TecCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_TecCurrent) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_Transceiver_Channel_TecCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_TecCurrent) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_Transceiver_Channel_TecCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_TecCurrent) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_Transceiver_Channel_TecCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_TecCurrent) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_Transceiver_Channel_TecCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Channel_TecCurrent) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Transceiver_Channel_TecCurrent
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Transceiver_Channel_TecCurrent) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_Channel_TecCurrent) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Transceiver_Channel_TecCurrent"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_Channel_TecCurrent) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Transceiver_Channel_TecCurrent) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Transceiver_Channel_TecCurrent.
func (*Component_Transceiver_Channel_TecCurrent) ΛBelongingModule() string {
	return "openconfig-platform-transceiver"
}

// Component_Transceiver_InputPower represents the /openconfig-platform/components/component/transceiver/state/input-power YANG schema element.
type Component_Transceiver_InputPower struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-platform-transceiver"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-platform-transceiver"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-platform-transceiver"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-platform-transceiver"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-platform-transceiver"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-platform-transceiver"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-platform-transceiver"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Transceiver_InputPower implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Transceiver_InputPower) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_Transceiver_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_InputPower) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_Transceiver_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_InputPower) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_Transceiver_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_InputPower) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_Transceiver_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_InputPower) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_Transceiver_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_InputPower) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_Transceiver_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_InputPower) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_Transceiver_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_InputPower) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Transceiver_InputPower
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Transceiver_InputPower) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_InputPower) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Transceiver_InputPower"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_InputPower) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Transceiver_InputPower) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Transceiver_InputPower.
func (*Component_Transceiver_InputPower) ΛBelongingModule() string {
	return "openconfig-platform-transceiver"
}

// Component_Transceiver_LaserBiasCurrent represents the /openconfig-platform/components/component/transceiver/state/laser-bias-current YANG schema element.
type Component_Transceiver_LaserBiasCurrent struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-platform-transceiver"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-platform-transceiver"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-platform-transceiver"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-platform-transceiver"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-platform-transceiver"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-platform-transceiver"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-platform-transceiver"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Transceiver_LaserBiasCurrent implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Transceiver_LaserBiasCurrent) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_Transceiver_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_LaserBiasCurrent) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_Transceiver_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_LaserBiasCurrent) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_Transceiver_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_LaserBiasCurrent) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_Transceiver_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_LaserBiasCurrent) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_Transceiver_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_LaserBiasCurrent) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_Transceiver_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_LaserBiasCurrent) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_Transceiver_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_LaserBiasCurrent) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Transceiver_LaserBiasCurrent
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Transceiver_LaserBiasCurrent) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_LaserBiasCurrent) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Transceiver_LaserBiasCurrent"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_LaserBiasCurrent) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Transceiver_LaserBiasCurrent) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Transceiver_LaserBiasCurrent.
func (*Component_Transceiver_LaserBiasCurrent) ΛBelongingModule() string {
	return "openconfig-platform-transceiver"
}

// Component_Transceiver_OutputPower represents the /openconfig-platform/components/component/transceiver/state/output-power YANG schema element.
type Component_Transceiver_OutputPower struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-platform-transceiver"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-platform-transceiver"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-platform-transceiver"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-platform-transceiver"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-platform-transceiver"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-platform-transceiver"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-platform-transceiver"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Transceiver_OutputPower implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Transceiver_OutputPower) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_Transceiver_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_OutputPower) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_Transceiver_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_OutputPower) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_Transceiver_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_OutputPower) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_Transceiver_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_OutputPower) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_Transceiver_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_OutputPower) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_Transceiver_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_OutputPower) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_Transceiver_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_OutputPower) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Transceiver_OutputPower
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Transceiver_OutputPower) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_OutputPower) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Transceiver_OutputPower"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_OutputPower) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Transceiver_OutputPower) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Transceiver_OutputPower.
func (*Component_Transceiver_OutputPower) ΛBelongingModule() string {
	return "openconfig-platform-transceiver"
}

// Component_Transceiver_PostFecBer represents the /openconfig-platform/components/component/transceiver/state/post-fec-ber YANG schema element.
type Component_Transceiver_PostFecBer struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-platform-transceiver"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-platform-transceiver"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-platform-transceiver"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-platform-transceiver"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-platform-transceiver"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-platform-transceiver"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-platform-transceiver"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Transceiver_PostFecBer implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Transceiver_PostFecBer) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_Transceiver_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_PostFecBer) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_Transceiver_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_PostFecBer) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_Transceiver_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_PostFecBer) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_Transceiver_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_PostFecBer) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_Transceiver_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_PostFecBer) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_Transceiver_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_PostFecBer) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_Transceiver_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_PostFecBer) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Transceiver_PostFecBer
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Transceiver_PostFecBer) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_PostFecBer) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Transceiver_PostFecBer"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_PostFecBer) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Transceiver_PostFecBer) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Transceiver_PostFecBer.
func (*Component_Transceiver_PostFecBer) ΛBelongingModule() string {
	return "openconfig-platform-transceiver"
}

// Component_Transceiver_PreFecBer represents the /openconfig-platform/components/component/transceiver/state/pre-fec-ber YANG schema element.
type Component_Transceiver_PreFecBer struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-platform-transceiver"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-platform-transceiver"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-platform-transceiver"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-platform-transceiver"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-platform-transceiver"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-platform-transceiver"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-platform-transceiver"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Transceiver_PreFecBer implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Transceiver_PreFecBer) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_Transceiver_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_PreFecBer) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_Transceiver_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_PreFecBer) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_Transceiver_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_PreFecBer) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_Transceiver_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_PreFecBer) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_Transceiver_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_PreFecBer) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_Transceiver_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_PreFecBer) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_Transceiver_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_PreFecBer) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Transceiver_PreFecBer
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Transceiver_PreFecBer) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_PreFecBer) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Transceiver_PreFecBer"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_PreFecBer) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Transceiver_PreFecBer) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Transceiver_PreFecBer.
func (*Component_Transceiver_PreFecBer) ΛBelongingModule() string {
	return "openconfig-platform-transceiver"
}

// Component_Transceiver_SupplyVoltage represents the /openconfig-platform/components/component/transceiver/state/supply-voltage YANG schema element.
type Component_Transceiver_SupplyVoltage struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-platform-transceiver"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-platform-transceiver"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-platform-transceiver"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-platform-transceiver"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-platform-transceiver"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-platform-transceiver"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-platform-transceiver"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Transceiver_SupplyVoltage implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Transceiver_SupplyVoltage) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the Component_Transceiver_SupplyVoltage
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_SupplyVoltage) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the Component_Transceiver_SupplyVoltage
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_SupplyVoltage) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the Component_Transceiver_SupplyVoltage
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_SupplyVoltage) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the Component_Transceiver_SupplyVoltage
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_SupplyVoltage) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the Component_Transceiver_SupplyVoltage
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_SupplyVoltage) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the Component_Transceiver_SupplyVoltage
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_SupplyVoltage) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the Component_Transceiver_SupplyVoltage
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_SupplyVoltage) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Transceiver_SupplyVoltage
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Transceiver_SupplyVoltage) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_SupplyVoltage) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Transceiver_SupplyVoltage"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_SupplyVoltage) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Transceiver_SupplyVoltage) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Transceiver_SupplyVoltage.
func (*Component_Transceiver_SupplyVoltage) ΛBelongingModule() string {
	return "openconfig-platform-transceiver"
}

// Component_Transceiver_Threshold represents the /openconfig-platform/components/component/transceiver/thresholds/threshold YANG schema element.
type Component_Transceiver_Threshold struct {
	ΛMetadata               []ygot.Annotation                      `path:"@" ygotAnnotation:"true"`
	InputPowerLower         *float64                               `path:"state/input-power-lower" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛInputPowerLower        []ygot.Annotation                      `path:"state/@input-power-lower" ygotAnnotation:"true"`
	InputPowerUpper         *float64                               `path:"state/input-power-upper" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛInputPowerUpper        []ygot.Annotation                      `path:"state/@input-power-upper" ygotAnnotation:"true"`
	LaserBiasCurrentLower   *float64                               `path:"state/laser-bias-current-lower" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛLaserBiasCurrentLower  []ygot.Annotation                      `path:"state/@laser-bias-current-lower" ygotAnnotation:"true"`
	LaserBiasCurrentUpper   *float64                               `path:"state/laser-bias-current-upper" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛLaserBiasCurrentUpper  []ygot.Annotation                      `path:"state/@laser-bias-current-upper" ygotAnnotation:"true"`
	LaserTemperatureLower   *float64                               `path:"state/laser-temperature-lower" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛLaserTemperatureLower  []ygot.Annotation                      `path:"state/@laser-temperature-lower" ygotAnnotation:"true"`
	LaserTemperatureUpper   *float64                               `path:"state/laser-temperature-upper" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛLaserTemperatureUpper  []ygot.Annotation                      `path:"state/@laser-temperature-upper" ygotAnnotation:"true"`
	ModuleTemperatureLower  *float64                               `path:"state/module-temperature-lower" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛModuleTemperatureLower []ygot.Annotation                      `path:"state/@module-temperature-lower" ygotAnnotation:"true"`
	ModuleTemperatureUpper  *float64                               `path:"state/module-temperature-upper" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛModuleTemperatureUpper []ygot.Annotation                      `path:"state/@module-temperature-upper" ygotAnnotation:"true"`
	OutputPowerLower        *float64                               `path:"state/output-power-lower" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛOutputPowerLower       []ygot.Annotation                      `path:"state/@output-power-lower" ygotAnnotation:"true"`
	OutputPowerUpper        *float64                               `path:"state/output-power-upper" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛOutputPowerUpper       []ygot.Annotation                      `path:"state/@output-power-upper" ygotAnnotation:"true"`
	Severity                E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY `path:"state/severity|severity" module:"openconfig-platform-transceiver/openconfig-platform-transceiver|openconfig-platform-transceiver"`
	ΛSeverity               []ygot.Annotation                      `path:"state/@severity|@severity" ygotAnnotation:"true"`
	SupplyVoltageLower      *float64                               `path:"state/supply-voltage-lower" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛSupplyVoltageLower     []ygot.Annotation                      `path:"state/@supply-voltage-lower" ygotAnnotation:"true"`
	SupplyVoltageUpper      *float64                               `path:"state/supply-voltage-upper" module:"openconfig-platform-transceiver/openconfig-platform-transceiver"`
	ΛSupplyVoltageUpper     []ygot.Annotation                      `path:"state/@supply-voltage-upper" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Component_Transceiver_Threshold implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Component_Transceiver_Threshold) IsYANGGoStruct() {}

// GetInputPowerLower retrieves the value of the leaf InputPowerLower from the Component_Transceiver_Threshold
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InputPowerLower is set, it can
// safely use t.GetInputPowerLower() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InputPowerLower == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Threshold) GetInputPowerLower() float64 {
	if t == nil || t.InputPowerLower == nil {
		return 0.0
	}
	return *t.InputPowerLower
}

// GetInputPowerUpper retrieves the value of the leaf InputPowerUpper from the Component_Transceiver_Threshold
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InputPowerUpper is set, it can
// safely use t.GetInputPowerUpper() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InputPowerUpper == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Threshold) GetInputPowerUpper() float64 {
	if t == nil || t.InputPowerUpper == nil {
		return 0.0
	}
	return *t.InputPowerUpper
}

// GetLaserBiasCurrentLower retrieves the value of the leaf LaserBiasCurrentLower from the Component_Transceiver_Threshold
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LaserBiasCurrentLower is set, it can
// safely use t.GetLaserBiasCurrentLower() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LaserBiasCurrentLower == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Threshold) GetLaserBiasCurrentLower() float64 {
	if t == nil || t.LaserBiasCurrentLower == nil {
		return 0.0
	}
	return *t.LaserBiasCurrentLower
}

// GetLaserBiasCurrentUpper retrieves the value of the leaf LaserBiasCurrentUpper from the Component_Transceiver_Threshold
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LaserBiasCurrentUpper is set, it can
// safely use t.GetLaserBiasCurrentUpper() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LaserBiasCurrentUpper == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Threshold) GetLaserBiasCurrentUpper() float64 {
	if t == nil || t.LaserBiasCurrentUpper == nil {
		return 0.0
	}
	return *t.LaserBiasCurrentUpper
}

// GetLaserTemperatureLower retrieves the value of the leaf LaserTemperatureLower from the Component_Transceiver_Threshold
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LaserTemperatureLower is set, it can
// safely use t.GetLaserTemperatureLower() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LaserTemperatureLower == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Threshold) GetLaserTemperatureLower() float64 {
	if t == nil || t.LaserTemperatureLower == nil {
		return 0.0
	}
	return *t.LaserTemperatureLower
}

// GetLaserTemperatureUpper retrieves the value of the leaf LaserTemperatureUpper from the Component_Transceiver_Threshold
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LaserTemperatureUpper is set, it can
// safely use t.GetLaserTemperatureUpper() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LaserTemperatureUpper == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Threshold) GetLaserTemperatureUpper() float64 {
	if t == nil || t.LaserTemperatureUpper == nil {
		return 0.0
	}
	return *t.LaserTemperatureUpper
}

// GetModuleTemperatureLower retrieves the value of the leaf ModuleTemperatureLower from the Component_Transceiver_Threshold
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ModuleTemperatureLower is set, it can
// safely use t.GetModuleTemperatureLower() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ModuleTemperatureLower == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Threshold) GetModuleTemperatureLower() float64 {
	if t == nil || t.ModuleTemperatureLower == nil {
		return 0.0
	}
	return *t.ModuleTemperatureLower
}

// GetModuleTemperatureUpper retrieves the value of the leaf ModuleTemperatureUpper from the Component_Transceiver_Threshold
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ModuleTemperatureUpper is set, it can
// safely use t.GetModuleTemperatureUpper() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ModuleTemperatureUpper == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Threshold) GetModuleTemperatureUpper() float64 {
	if t == nil || t.ModuleTemperatureUpper == nil {
		return 0.0
	}
	return *t.ModuleTemperatureUpper
}

// GetOutputPowerLower retrieves the value of the leaf OutputPowerLower from the Component_Transceiver_Threshold
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutputPowerLower is set, it can
// safely use t.GetOutputPowerLower() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutputPowerLower == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Threshold) GetOutputPowerLower() float64 {
	if t == nil || t.OutputPowerLower == nil {
		return 0.0
	}
	return *t.OutputPowerLower
}

// GetOutputPowerUpper retrieves the value of the leaf OutputPowerUpper from the Component_Transceiver_Threshold
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutputPowerUpper is set, it can
// safely use t.GetOutputPowerUpper() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutputPowerUpper == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Threshold) GetOutputPowerUpper() float64 {
	if t == nil || t.OutputPowerUpper == nil {
		return 0.0
	}
	return *t.OutputPowerUpper
}

// GetSeverity retrieves the value of the leaf Severity from the Component_Transceiver_Threshold
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Severity is set, it can
// safely use t.GetSeverity() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Severity == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Threshold) GetSeverity() E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY {
	if t == nil || t.Severity == 0 {
		return 0
	}
	return t.Severity
}

// GetSupplyVoltageLower retrieves the value of the leaf SupplyVoltageLower from the Component_Transceiver_Threshold
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SupplyVoltageLower is set, it can
// safely use t.GetSupplyVoltageLower() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SupplyVoltageLower == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Threshold) GetSupplyVoltageLower() float64 {
	if t == nil || t.SupplyVoltageLower == nil {
		return 0.0
	}
	return *t.SupplyVoltageLower
}

// GetSupplyVoltageUpper retrieves the value of the leaf SupplyVoltageUpper from the Component_Transceiver_Threshold
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SupplyVoltageUpper is set, it can
// safely use t.GetSupplyVoltageUpper() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SupplyVoltageUpper == nil' before retrieving the leaf's value.
func (t *Component_Transceiver_Threshold) GetSupplyVoltageUpper() float64 {
	if t == nil || t.SupplyVoltageUpper == nil {
		return 0.0
	}
	return *t.SupplyVoltageUpper
}

// PopulateDefaults recursively populates unset leaf fields in the Component_Transceiver_Threshold
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Component_Transceiver_Threshold) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the Component_Transceiver_Threshold struct, which is a YANG list entry.
func (t *Component_Transceiver_Threshold) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"severity": t.Severity,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_Threshold) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Component_Transceiver_Threshold"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Component_Transceiver_Threshold) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Component_Transceiver_Threshold) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Component_Transceiver_Threshold.
func (*Component_Transceiver_Threshold) ΛBelongingModule() string {
	return "openconfig-platform-transceiver"
}

// DefinedSets represents the /openconfig-defined-sets/defined-sets YANG schema element.
type DefinedSets struct {
	ΛMetadata      []ygot.Annotation                     `path:"@" ygotAnnotation:"true"`
	Ipv4PrefixSet  map[string]*DefinedSets_Ipv4PrefixSet `path:"ipv4-prefix-sets/ipv4-prefix-set" module:"openconfig-defined-sets/openconfig-defined-sets"`
	ΛIpv4PrefixSet []ygot.Annotation                     `path:"ipv4-prefix-sets/@ipv4-prefix-set" ygotAnnotation:"true"`
	Ipv6PrefixSet  map[string]*DefinedSets_Ipv6PrefixSet `path:"ipv6-prefix-sets/ipv6-prefix-set" module:"openconfig-defined-sets/openconfig-defined-sets"`
	ΛIpv6PrefixSet []ygot.Annotation                     `path:"ipv6-prefix-sets/@ipv6-prefix-set" ygotAnnotation:"true"`
	PortSet        map[string]*DefinedSets_PortSet       `path:"port-sets/port-set" module:"openconfig-defined-sets/openconfig-defined-sets"`
	ΛPortSet       []ygot.Annotation                     `path:"port-sets/@port-set" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that DefinedSets implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*DefinedSets) IsYANGGoStruct() {}

// NewIpv4PrefixSet creates a new entry in the Ipv4PrefixSet list of the
// DefinedSets struct. The keys of the list are populated from the input
// arguments.
func (t *DefinedSets) NewIpv4PrefixSet(Name string) (*DefinedSets_Ipv4PrefixSet, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Ipv4PrefixSet == nil {
		t.Ipv4PrefixSet = make(map[string]*DefinedSets_Ipv4PrefixSet)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Ipv4PrefixSet[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Ipv4PrefixSet", key)
	}

	t.Ipv4PrefixSet[key] = &DefinedSets_Ipv4PrefixSet{
		Name: &Name,
	}

	return t.Ipv4PrefixSet[key], nil
}

// RenameIpv4PrefixSet renames an entry in the list Ipv4PrefixSet within
// the DefinedSets struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *DefinedSets) RenameIpv4PrefixSet(oldK, newK string) error {
	if _, ok := t.Ipv4PrefixSet[newK]; ok {
		return fmt.Errorf("key %v already exists in Ipv4PrefixSet", newK)
	}

	e, ok := t.Ipv4PrefixSet[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Ipv4PrefixSet", oldK)
	}
	e.Name = &newK

	t.Ipv4PrefixSet[newK] = e
	delete(t.Ipv4PrefixSet, oldK)
	return nil
}

// GetOrCreateIpv4PrefixSetMap returns the list (map) from DefinedSets.
//
// It initializes the field if not already initialized.
func (t *DefinedSets) GetOrCreateIpv4PrefixSetMap() map[string]*DefinedSets_Ipv4PrefixSet {
	if t.Ipv4PrefixSet == nil {
		t.Ipv4PrefixSet = make(map[string]*DefinedSets_Ipv4PrefixSet)
	}
	return t.Ipv4PrefixSet
}

// GetOrCreateIpv4PrefixSet retrieves the value with the specified keys from
// the receiver DefinedSets. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *DefinedSets) GetOrCreateIpv4PrefixSet(Name string) *DefinedSets_Ipv4PrefixSet {

	key := Name

	if v, ok := t.Ipv4PrefixSet[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewIpv4PrefixSet(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateIpv4PrefixSet got unexpected error: %v", err))
	}
	return v
}

// GetIpv4PrefixSet retrieves the value with the specified key from
// the Ipv4PrefixSet map field of DefinedSets. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *DefinedSets) GetIpv4PrefixSet(Name string) *DefinedSets_Ipv4PrefixSet {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Ipv4PrefixSet[key]; ok {
		return lm
	}
	return nil
}

// AppendIpv4PrefixSet appends the supplied DefinedSets_Ipv4PrefixSet struct to the
// list Ipv4PrefixSet of DefinedSets. If the key value(s) specified in
// the supplied DefinedSets_Ipv4PrefixSet already exist in the list, an error is
// returned.
func (t *DefinedSets) AppendIpv4PrefixSet(v *DefinedSets_Ipv4PrefixSet) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Ipv4PrefixSet == nil {
		t.Ipv4PrefixSet = make(map[string]*DefinedSets_Ipv4PrefixSet)
	}

	if _, ok := t.Ipv4PrefixSet[key]; ok {
		return fmt.Errorf("duplicate key for list Ipv4PrefixSet %v", key)
	}

	t.Ipv4PrefixSet[key] = v
	return nil
}

// NewIpv6PrefixSet creates a new entry in the Ipv6PrefixSet list of the
// DefinedSets struct. The keys of the list are populated from the input
// arguments.
func (t *DefinedSets) NewIpv6PrefixSet(Name string) (*DefinedSets_Ipv6PrefixSet, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Ipv6PrefixSet == nil {
		t.Ipv6PrefixSet = make(map[string]*DefinedSets_Ipv6PrefixSet)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Ipv6PrefixSet[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Ipv6PrefixSet", key)
	}

	t.Ipv6PrefixSet[key] = &DefinedSets_Ipv6PrefixSet{
		Name: &Name,
	}

	return t.Ipv6PrefixSet[key], nil
}

// RenameIpv6PrefixSet renames an entry in the list Ipv6PrefixSet within
// the DefinedSets struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *DefinedSets) RenameIpv6PrefixSet(oldK, newK string) error {
	if _, ok := t.Ipv6PrefixSet[newK]; ok {
		return fmt.Errorf("key %v already exists in Ipv6PrefixSet", newK)
	}

	e, ok := t.Ipv6PrefixSet[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Ipv6PrefixSet", oldK)
	}
	e.Name = &newK

	t.Ipv6PrefixSet[newK] = e
	delete(t.Ipv6PrefixSet, oldK)
	return nil
}

// GetOrCreateIpv6PrefixSetMap returns the list (map) from DefinedSets.
//
// It initializes the field if not already initialized.
func (t *DefinedSets) GetOrCreateIpv6PrefixSetMap() map[string]*DefinedSets_Ipv6PrefixSet {
	if t.Ipv6PrefixSet == nil {
		t.Ipv6PrefixSet = make(map[string]*DefinedSets_Ipv6PrefixSet)
	}
	return t.Ipv6PrefixSet
}

// GetOrCreateIpv6PrefixSet retrieves the value with the specified keys from
// the receiver DefinedSets. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *DefinedSets) GetOrCreateIpv6PrefixSet(Name string) *DefinedSets_Ipv6PrefixSet {

	key := Name

	if v, ok := t.Ipv6PrefixSet[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewIpv6PrefixSet(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateIpv6PrefixSet got unexpected error: %v", err))
	}
	return v
}

// GetIpv6PrefixSet retrieves the value with the specified key from
// the Ipv6PrefixSet map field of DefinedSets. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *DefinedSets) GetIpv6PrefixSet(Name string) *DefinedSets_Ipv6PrefixSet {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Ipv6PrefixSet[key]; ok {
		return lm
	}
	return nil
}

// AppendIpv6PrefixSet appends the supplied DefinedSets_Ipv6PrefixSet struct to the
// list Ipv6PrefixSet of DefinedSets. If the key value(s) specified in
// the supplied DefinedSets_Ipv6PrefixSet already exist in the list, an error is
// returned.
func (t *DefinedSets) AppendIpv6PrefixSet(v *DefinedSets_Ipv6PrefixSet) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Ipv6PrefixSet == nil {
		t.Ipv6PrefixSet = make(map[string]*DefinedSets_Ipv6PrefixSet)
	}

	if _, ok := t.Ipv6PrefixSet[key]; ok {
		return fmt.Errorf("duplicate key for list Ipv6PrefixSet %v", key)
	}

	t.Ipv6PrefixSet[key] = v
	return nil
}

// NewPortSet creates a new entry in the PortSet list of the
// DefinedSets struct. The keys of the list are populated from the input
// arguments.
func (t *DefinedSets) NewPortSet(Name string) (*DefinedSets_PortSet, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PortSet == nil {
		t.PortSet = make(map[string]*DefinedSets_PortSet)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.PortSet[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list PortSet", key)
	}

	t.PortSet[key] = &DefinedSets_PortSet{
		Name: &Name,
	}

	return t.PortSet[key], nil
}

// RenamePortSet renames an entry in the list PortSet within
// the DefinedSets struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *DefinedSets) RenamePortSet(oldK, newK string) error {
	if _, ok := t.PortSet[newK]; ok {
		return fmt.Errorf("key %v already exists in PortSet", newK)
	}

	e, ok := t.PortSet[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in PortSet", oldK)
	}
	e.Name = &newK

	t.PortSet[newK] = e
	delete(t.PortSet, oldK)
	return nil
}

// GetOrCreatePortSetMap returns the list (map) from DefinedSets.
//
// It initializes the field if not already initialized.
func (t *DefinedSets) GetOrCreatePortSetMap() map[string]*DefinedSets_PortSet {
	if t.PortSet == nil {
		t.PortSet = make(map[string]*DefinedSets_PortSet)
	}
	return t.PortSet
}

// GetOrCreatePortSet retrieves the value with the specified keys from
// the receiver DefinedSets. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *DefinedSets) GetOrCreatePortSet(Name string) *DefinedSets_PortSet {

	key := Name

	if v, ok := t.PortSet[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPortSet(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePortSet got unexpected error: %v", err))
	}
	return v
}

// GetPortSet retrieves the value with the specified key from
// the PortSet map field of DefinedSets. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *DefinedSets) GetPortSet(Name string) *DefinedSets_PortSet {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.PortSet[key]; ok {
		return lm
	}
	return nil
}

// AppendPortSet appends the supplied DefinedSets_PortSet struct to the
// list PortSet of DefinedSets. If the key value(s) specified in
// the supplied DefinedSets_PortSet already exist in the list, an error is
// returned.
func (t *DefinedSets) AppendPortSet(v *DefinedSets_PortSet) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PortSet == nil {
		t.PortSet = make(map[string]*DefinedSets_PortSet)
	}

	if _, ok := t.PortSet[key]; ok {
		return fmt.Errorf("duplicate key for list PortSet %v", key)
	}

	t.PortSet[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the DefinedSets
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *DefinedSets) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Ipv4PrefixSet {
		e.PopulateDefaults()
	}
	for _, e := range t.Ipv6PrefixSet {
		e.PopulateDefaults()
	}
	for _, e := range t.PortSet {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *DefinedSets) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["DefinedSets"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *DefinedSets) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *DefinedSets) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of DefinedSets.
func (*DefinedSets) ΛBelongingModule() string {
	return "openconfig-defined-sets"
}

// DefinedSets_Ipv4PrefixSet represents the /openconfig-defined-sets/defined-sets/ipv4-prefix-sets/ipv4-prefix-set YANG schema element.
type DefinedSets_Ipv4PrefixSet struct {
	ΛMetadata    []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Description  *string           `path:"config/description" module:"openconfig-defined-sets/openconfig-defined-sets"`
	ΛDescription []ygot.Annotation `path:"config/@description" ygotAnnotation:"true"`
	Name         *string           `path:"config/name|name" module:"openconfig-defined-sets/openconfig-defined-sets|openconfig-defined-sets"`
	ΛName        []ygot.Annotation `path:"config/@name|@name" ygotAnnotation:"true"`
	Prefix       []string          `path:"config/prefix" module:"openconfig-defined-sets/openconfig-defined-sets"`
	ΛPrefix      []ygot.Annotation `path:"config/@prefix" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that DefinedSets_Ipv4PrefixSet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*DefinedSets_Ipv4PrefixSet) IsYANGGoStruct() {}

// GetDescription retrieves the value of the leaf Description from the DefinedSets_Ipv4PrefixSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *DefinedSets_Ipv4PrefixSet) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetName retrieves the value of the leaf Name from the DefinedSets_Ipv4PrefixSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *DefinedSets_Ipv4PrefixSet) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetPrefix retrieves the value of the leaf Prefix from the DefinedSets_Ipv4PrefixSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *DefinedSets_Ipv4PrefixSet) GetPrefix() []string {
	if t == nil || t.Prefix == nil {
		return nil
	}
	return t.Prefix
}

// PopulateDefaults recursively populates unset leaf fields in the DefinedSets_Ipv4PrefixSet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *DefinedSets_Ipv4PrefixSet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the DefinedSets_Ipv4PrefixSet struct, which is a YANG list entry.
func (t *DefinedSets_Ipv4PrefixSet) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *DefinedSets_Ipv4PrefixSet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["DefinedSets_Ipv4PrefixSet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *DefinedSets_Ipv4PrefixSet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *DefinedSets_Ipv4PrefixSet) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of DefinedSets_Ipv4PrefixSet.
func (*DefinedSets_Ipv4PrefixSet) ΛBelongingModule() string {
	return "openconfig-defined-sets"
}

// DefinedSets_Ipv6PrefixSet represents the /openconfig-defined-sets/defined-sets/ipv6-prefix-sets/ipv6-prefix-set YANG schema element.
type DefinedSets_Ipv6PrefixSet struct {
	ΛMetadata    []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Description  *string           `path:"config/description" module:"openconfig-defined-sets/openconfig-defined-sets"`
	ΛDescription []ygot.Annotation `path:"config/@description" ygotAnnotation:"true"`
	Name         *string           `path:"config/name|name" module:"openconfig-defined-sets/openconfig-defined-sets|openconfig-defined-sets"`
	ΛName        []ygot.Annotation `path:"config/@name|@name" ygotAnnotation:"true"`
	Prefix       []string          `path:"config/prefix" module:"openconfig-defined-sets/openconfig-defined-sets"`
	ΛPrefix      []ygot.Annotation `path:"config/@prefix" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that DefinedSets_Ipv6PrefixSet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*DefinedSets_Ipv6PrefixSet) IsYANGGoStruct() {}

// GetDescription retrieves the value of the leaf Description from the DefinedSets_Ipv6PrefixSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *DefinedSets_Ipv6PrefixSet) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetName retrieves the value of the leaf Name from the DefinedSets_Ipv6PrefixSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *DefinedSets_Ipv6PrefixSet) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetPrefix retrieves the value of the leaf Prefix from the DefinedSets_Ipv6PrefixSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *DefinedSets_Ipv6PrefixSet) GetPrefix() []string {
	if t == nil || t.Prefix == nil {
		return nil
	}
	return t.Prefix
}

// PopulateDefaults recursively populates unset leaf fields in the DefinedSets_Ipv6PrefixSet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *DefinedSets_Ipv6PrefixSet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the DefinedSets_Ipv6PrefixSet struct, which is a YANG list entry.
func (t *DefinedSets_Ipv6PrefixSet) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *DefinedSets_Ipv6PrefixSet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["DefinedSets_Ipv6PrefixSet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *DefinedSets_Ipv6PrefixSet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *DefinedSets_Ipv6PrefixSet) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of DefinedSets_Ipv6PrefixSet.
func (*DefinedSets_Ipv6PrefixSet) ΛBelongingModule() string {
	return "openconfig-defined-sets"
}

// DefinedSets_PortSet represents the /openconfig-defined-sets/defined-sets/port-sets/port-set YANG schema element.
type DefinedSets_PortSet struct {
	ΛMetadata    []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Description  *string                          `path:"config/description" module:"openconfig-defined-sets/openconfig-defined-sets"`
	ΛDescription []ygot.Annotation                `path:"config/@description" ygotAnnotation:"true"`
	Name         *string                          `path:"config/name|name" module:"openconfig-defined-sets/openconfig-defined-sets|openconfig-defined-sets"`
	ΛName        []ygot.Annotation                `path:"config/@name|@name" ygotAnnotation:"true"`
	Port         []DefinedSets_PortSet_Port_Union `path:"config/port" module:"openconfig-defined-sets/openconfig-defined-sets"`
	ΛPort        []ygot.Annotation                `path:"config/@port" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that DefinedSets_PortSet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*DefinedSets_PortSet) IsYANGGoStruct() {}

// GetDescription retrieves the value of the leaf Description from the DefinedSets_PortSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *DefinedSets_PortSet) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetName retrieves the value of the leaf Name from the DefinedSets_PortSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *DefinedSets_PortSet) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetPort retrieves the value of the leaf Port from the DefinedSets_PortSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Port is set, it can
// safely use t.GetPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Port == nil' before retrieving the leaf's value.
func (t *DefinedSets_PortSet) GetPort() []DefinedSets_PortSet_Port_Union {
	if t == nil || t.Port == nil {
		return nil
	}
	return t.Port
}

// PopulateDefaults recursively populates unset leaf fields in the DefinedSets_PortSet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *DefinedSets_PortSet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the DefinedSets_PortSet struct, which is a YANG list entry.
func (t *DefinedSets_PortSet) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *DefinedSets_PortSet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["DefinedSets_PortSet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *DefinedSets_PortSet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *DefinedSets_PortSet) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of DefinedSets_PortSet.
func (*DefinedSets_PortSet) ΛBelongingModule() string {
	return "openconfig-defined-sets"
}

// DefinedSets_PortSet_Port_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-defined-sets/defined-sets/port-sets/port-set/config/port within the YANG schema.
// Union type can be one of [E_PacketMatchTypes_PortNumRange_Enum, UnionString, UnionUint16].
type DefinedSets_PortSet_Port_Union interface {
	// Union type can be one of [E_PacketMatchTypes_PortNumRange_Enum, UnionString, UnionUint16]
	Documentation_for_DefinedSets_PortSet_Port_Union()
}

// Documentation_for_DefinedSets_PortSet_Port_Union ensures that E_PacketMatchTypes_PortNumRange_Enum
// implements the DefinedSets_PortSet_Port_Union interface.
func (E_PacketMatchTypes_PortNumRange_Enum) Documentation_for_DefinedSets_PortSet_Port_Union() {}

// Documentation_for_DefinedSets_PortSet_Port_Union ensures that UnionString
// implements the DefinedSets_PortSet_Port_Union interface.
func (UnionString) Documentation_for_DefinedSets_PortSet_Port_Union() {}

// Documentation_for_DefinedSets_PortSet_Port_Union ensures that UnionUint16
// implements the DefinedSets_PortSet_Port_Union interface.
func (UnionUint16) Documentation_for_DefinedSets_PortSet_Port_Union() {}

// To_DefinedSets_PortSet_Port_Union takes an input interface{} and attempts to convert it to a struct
// which implements the DefinedSets_PortSet_Port_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *DefinedSets_PortSet) To_DefinedSets_PortSet_Port_Union(i interface{}) (DefinedSets_PortSet_Port_Union, error) {
	if v, ok := i.(DefinedSets_PortSet_Port_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint16:
		return UnionUint16(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to DefinedSets_PortSet_Port_Union, unknown union type, got: %T, want any of [E_PacketMatchTypes_PortNumRange_Enum, string, uint16]", i, i)
}

// Device represents the /device YANG schema element.
type Device struct {
	ΛMetadata         []ygot.Annotation           `path:"@" ygotAnnotation:"true"`
	Acl               *Acl                        `path:"acl" module:"openconfig-acl"`
	ΛAcl              []ygot.Annotation           `path:"@acl" ygotAnnotation:"true"`
	Aps               *Aps                        `path:"aps" module:"openconfig-transport-line-protection"`
	ΛAps              []ygot.Annotation           `path:"@aps" ygotAnnotation:"true"`
	Bfd               *Bfd                        `path:"bfd" module:"openconfig-bfd"`
	ΛBfd              []ygot.Annotation           `path:"@bfd" ygotAnnotation:"true"`
	Component         map[string]*Component       `path:"components/component" module:"openconfig-platform/openconfig-platform"`
	ΛComponent        []ygot.Annotation           `path:"components/@component" ygotAnnotation:"true"`
	DefinedSets       *DefinedSets                `path:"defined-sets" module:"openconfig-defined-sets"`
	ΛDefinedSets      []ygot.Annotation           `path:"@defined-sets" ygotAnnotation:"true"`
	Interface         map[string]*Interface       `path:"interfaces/interface" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛInterface        []ygot.Annotation           `path:"interfaces/@interface" ygotAnnotation:"true"`
	Keychain          map[string]*Keychain        `path:"keychains/keychain" module:"openconfig-keychain/openconfig-keychain"`
	ΛKeychain         []ygot.Annotation           `path:"keychains/@keychain" ygotAnnotation:"true"`
	Lacp              *Lacp                       `path:"lacp" module:"openconfig-lacp"`
	ΛLacp             []ygot.Annotation           `path:"@lacp" ygotAnnotation:"true"`
	Lldp              *Lldp                       `path:"lldp" module:"openconfig-lldp"`
	ΛLldp             []ygot.Annotation           `path:"@lldp" ygotAnnotation:"true"`
	Messages          *Messages                   `path:"messages" module:"openconfig-messages"`
	ΛMessages         []ygot.Annotation           `path:"@messages" ygotAnnotation:"true"`
	NetworkInstance   map[string]*NetworkInstance `path:"network-instances/network-instance" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNetworkInstance  []ygot.Annotation           `path:"network-instances/@network-instance" ygotAnnotation:"true"`
	OpticalAmplifier  *OpticalAmplifier           `path:"optical-amplifier" module:"openconfig-optical-amplifier"`
	ΛOpticalAmplifier []ygot.Annotation           `path:"@optical-amplifier" ygotAnnotation:"true"`
	RelayAgent        *RelayAgent                 `path:"relay-agent" module:"openconfig-relay-agent"`
	ΛRelayAgent       []ygot.Annotation           `path:"@relay-agent" ygotAnnotation:"true"`
	RoutingPolicy     *RoutingPolicy              `path:"routing-policy" module:"openconfig-routing-policy"`
	ΛRoutingPolicy    []ygot.Annotation           `path:"@routing-policy" ygotAnnotation:"true"`
	Stp               *Stp                        `path:"stp" module:"openconfig-spanning-tree"`
	ΛStp              []ygot.Annotation           `path:"@stp" ygotAnnotation:"true"`
	System            *System                     `path:"system" module:"openconfig-system"`
	ΛSystem           []ygot.Annotation           `path:"@system" ygotAnnotation:"true"`
	TerminalDevice    *TerminalDevice             `path:"terminal-device" module:"openconfig-terminal-device"`
	ΛTerminalDevice   []ygot.Annotation           `path:"@terminal-device" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Device implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Device) IsYANGGoStruct() {}

// NewComponent creates a new entry in the Component list of the
// Device struct. The keys of the list are populated from the input
// arguments.
func (t *Device) NewComponent(Name string) (*Component, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Component == nil {
		t.Component = make(map[string]*Component)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Component[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Component", key)
	}

	t.Component[key] = &Component{
		Name: &Name,
	}

	return t.Component[key], nil
}

// RenameComponent renames an entry in the list Component within
// the Device struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Device) RenameComponent(oldK, newK string) error {
	if _, ok := t.Component[newK]; ok {
		return fmt.Errorf("key %v already exists in Component", newK)
	}

	e, ok := t.Component[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Component", oldK)
	}
	e.Name = &newK

	t.Component[newK] = e
	delete(t.Component, oldK)
	return nil
}

// GetOrCreateComponentMap returns the list (map) from Device.
//
// It initializes the field if not already initialized.
func (t *Device) GetOrCreateComponentMap() map[string]*Component {
	if t.Component == nil {
		t.Component = make(map[string]*Component)
	}
	return t.Component
}

// GetOrCreateComponent retrieves the value with the specified keys from
// the receiver Device. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Device) GetOrCreateComponent(Name string) *Component {

	key := Name

	if v, ok := t.Component[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewComponent(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateComponent got unexpected error: %v", err))
	}
	return v
}

// GetComponent retrieves the value with the specified key from
// the Component map field of Device. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Device) GetComponent(Name string) *Component {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Component[key]; ok {
		return lm
	}
	return nil
}

// AppendComponent appends the supplied Component struct to the
// list Component of Device. If the key value(s) specified in
// the supplied Component already exist in the list, an error is
// returned.
func (t *Device) AppendComponent(v *Component) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Component == nil {
		t.Component = make(map[string]*Component)
	}

	if _, ok := t.Component[key]; ok {
		return fmt.Errorf("duplicate key for list Component %v", key)
	}

	t.Component[key] = v
	return nil
}

// NewInterface creates a new entry in the Interface list of the
// Device struct. The keys of the list are populated from the input
// arguments.
func (t *Device) NewInterface(Name string) (*Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Interface)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &Interface{
		Name: &Name,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the Device struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Device) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.Name = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from Device.
//
// It initializes the field if not already initialized.
func (t *Device) GetOrCreateInterfaceMap() map[string]*Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver Device. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Device) GetOrCreateInterface(Name string) *Interface {

	key := Name

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of Device. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Device) GetInterface(Name string) *Interface {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied Interface struct to the
// list Interface of Device. If the key value(s) specified in
// the supplied Interface already exist in the list, an error is
// returned.
func (t *Device) AppendInterface(v *Interface) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// NewKeychain creates a new entry in the Keychain list of the
// Device struct. The keys of the list are populated from the input
// arguments.
func (t *Device) NewKeychain(Name string) (*Keychain, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Keychain == nil {
		t.Keychain = make(map[string]*Keychain)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Keychain[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Keychain", key)
	}

	t.Keychain[key] = &Keychain{
		Name: &Name,
	}

	return t.Keychain[key], nil
}

// RenameKeychain renames an entry in the list Keychain within
// the Device struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Device) RenameKeychain(oldK, newK string) error {
	if _, ok := t.Keychain[newK]; ok {
		return fmt.Errorf("key %v already exists in Keychain", newK)
	}

	e, ok := t.Keychain[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Keychain", oldK)
	}
	e.Name = &newK

	t.Keychain[newK] = e
	delete(t.Keychain, oldK)
	return nil
}

// GetOrCreateKeychainMap returns the list (map) from Device.
//
// It initializes the field if not already initialized.
func (t *Device) GetOrCreateKeychainMap() map[string]*Keychain {
	if t.Keychain == nil {
		t.Keychain = make(map[string]*Keychain)
	}
	return t.Keychain
}

// GetOrCreateKeychain retrieves the value with the specified keys from
// the receiver Device. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Device) GetOrCreateKeychain(Name string) *Keychain {

	key := Name

	if v, ok := t.Keychain[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewKeychain(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateKeychain got unexpected error: %v", err))
	}
	return v
}

// GetKeychain retrieves the value with the specified key from
// the Keychain map field of Device. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Device) GetKeychain(Name string) *Keychain {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Keychain[key]; ok {
		return lm
	}
	return nil
}

// AppendKeychain appends the supplied Keychain struct to the
// list Keychain of Device. If the key value(s) specified in
// the supplied Keychain already exist in the list, an error is
// returned.
func (t *Device) AppendKeychain(v *Keychain) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Keychain == nil {
		t.Keychain = make(map[string]*Keychain)
	}

	if _, ok := t.Keychain[key]; ok {
		return fmt.Errorf("duplicate key for list Keychain %v", key)
	}

	t.Keychain[key] = v
	return nil
}

// NewNetworkInstance creates a new entry in the NetworkInstance list of the
// Device struct. The keys of the list are populated from the input
// arguments.
func (t *Device) NewNetworkInstance(Name string) (*NetworkInstance, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NetworkInstance == nil {
		t.NetworkInstance = make(map[string]*NetworkInstance)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.NetworkInstance[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list NetworkInstance", key)
	}

	t.NetworkInstance[key] = &NetworkInstance{
		Name: &Name,
	}

	return t.NetworkInstance[key], nil
}

// RenameNetworkInstance renames an entry in the list NetworkInstance within
// the Device struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Device) RenameNetworkInstance(oldK, newK string) error {
	if _, ok := t.NetworkInstance[newK]; ok {
		return fmt.Errorf("key %v already exists in NetworkInstance", newK)
	}

	e, ok := t.NetworkInstance[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in NetworkInstance", oldK)
	}
	e.Name = &newK

	t.NetworkInstance[newK] = e
	delete(t.NetworkInstance, oldK)
	return nil
}

// GetOrCreateNetworkInstanceMap returns the list (map) from Device.
//
// It initializes the field if not already initialized.
func (t *Device) GetOrCreateNetworkInstanceMap() map[string]*NetworkInstance {
	if t.NetworkInstance == nil {
		t.NetworkInstance = make(map[string]*NetworkInstance)
	}
	return t.NetworkInstance
}

// GetOrCreateNetworkInstance retrieves the value with the specified keys from
// the receiver Device. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Device) GetOrCreateNetworkInstance(Name string) *NetworkInstance {

	key := Name

	if v, ok := t.NetworkInstance[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNetworkInstance(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNetworkInstance got unexpected error: %v", err))
	}
	return v
}

// GetNetworkInstance retrieves the value with the specified key from
// the NetworkInstance map field of Device. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Device) GetNetworkInstance(Name string) *NetworkInstance {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.NetworkInstance[key]; ok {
		return lm
	}
	return nil
}

// AppendNetworkInstance appends the supplied NetworkInstance struct to the
// list NetworkInstance of Device. If the key value(s) specified in
// the supplied NetworkInstance already exist in the list, an error is
// returned.
func (t *Device) AppendNetworkInstance(v *NetworkInstance) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NetworkInstance == nil {
		t.NetworkInstance = make(map[string]*NetworkInstance)
	}

	if _, ok := t.NetworkInstance[key]; ok {
		return fmt.Errorf("duplicate key for list NetworkInstance %v", key)
	}

	t.NetworkInstance[key] = v
	return nil
}

// GetOrCreateAcl retrieves the value of the Acl field
// or returns the existing field if it already exists.
func (t *Device) GetOrCreateAcl() *Acl {
	if t.Acl != nil {
		return t.Acl
	}
	t.Acl = &Acl{}
	return t.Acl
}

// GetOrCreateAps retrieves the value of the Aps field
// or returns the existing field if it already exists.
func (t *Device) GetOrCreateAps() *Aps {
	if t.Aps != nil {
		return t.Aps
	}
	t.Aps = &Aps{}
	return t.Aps
}

// GetOrCreateBfd retrieves the value of the Bfd field
// or returns the existing field if it already exists.
func (t *Device) GetOrCreateBfd() *Bfd {
	if t.Bfd != nil {
		return t.Bfd
	}
	t.Bfd = &Bfd{}
	return t.Bfd
}

// GetOrCreateDefinedSets retrieves the value of the DefinedSets field
// or returns the existing field if it already exists.
func (t *Device) GetOrCreateDefinedSets() *DefinedSets {
	if t.DefinedSets != nil {
		return t.DefinedSets
	}
	t.DefinedSets = &DefinedSets{}
	return t.DefinedSets
}

// GetOrCreateLacp retrieves the value of the Lacp field
// or returns the existing field if it already exists.
func (t *Device) GetOrCreateLacp() *Lacp {
	if t.Lacp != nil {
		return t.Lacp
	}
	t.Lacp = &Lacp{}
	return t.Lacp
}

// GetOrCreateLldp retrieves the value of the Lldp field
// or returns the existing field if it already exists.
func (t *Device) GetOrCreateLldp() *Lldp {
	if t.Lldp != nil {
		return t.Lldp
	}
	t.Lldp = &Lldp{}
	return t.Lldp
}

// GetOrCreateMessages retrieves the value of the Messages field
// or returns the existing field if it already exists.
func (t *Device) GetOrCreateMessages() *Messages {
	if t.Messages != nil {
		return t.Messages
	}
	t.Messages = &Messages{}
	return t.Messages
}

// GetOrCreateOpticalAmplifier retrieves the value of the OpticalAmplifier field
// or returns the existing field if it already exists.
func (t *Device) GetOrCreateOpticalAmplifier() *OpticalAmplifier {
	if t.OpticalAmplifier != nil {
		return t.OpticalAmplifier
	}
	t.OpticalAmplifier = &OpticalAmplifier{}
	return t.OpticalAmplifier
}

// GetOrCreateRelayAgent retrieves the value of the RelayAgent field
// or returns the existing field if it already exists.
func (t *Device) GetOrCreateRelayAgent() *RelayAgent {
	if t.RelayAgent != nil {
		return t.RelayAgent
	}
	t.RelayAgent = &RelayAgent{}
	return t.RelayAgent
}

// GetOrCreateRoutingPolicy retrieves the value of the RoutingPolicy field
// or returns the existing field if it already exists.
func (t *Device) GetOrCreateRoutingPolicy() *RoutingPolicy {
	if t.RoutingPolicy != nil {
		return t.RoutingPolicy
	}
	t.RoutingPolicy = &RoutingPolicy{}
	return t.RoutingPolicy
}

// GetOrCreateStp retrieves the value of the Stp field
// or returns the existing field if it already exists.
func (t *Device) GetOrCreateStp() *Stp {
	if t.Stp != nil {
		return t.Stp
	}
	t.Stp = &Stp{}
	return t.Stp
}

// GetOrCreateSystem retrieves the value of the System field
// or returns the existing field if it already exists.
func (t *Device) GetOrCreateSystem() *System {
	if t.System != nil {
		return t.System
	}
	t.System = &System{}
	return t.System
}

// GetOrCreateTerminalDevice retrieves the value of the TerminalDevice field
// or returns the existing field if it already exists.
func (t *Device) GetOrCreateTerminalDevice() *TerminalDevice {
	if t.TerminalDevice != nil {
		return t.TerminalDevice
	}
	t.TerminalDevice = &TerminalDevice{}
	return t.TerminalDevice
}

// GetAcl returns the value of the Acl struct pointer
// from Device. If the receiver or the field Acl is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Device) GetAcl() *Acl {
	if t != nil && t.Acl != nil {
		return t.Acl
	}
	return nil
}

// GetAps returns the value of the Aps struct pointer
// from Device. If the receiver or the field Aps is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Device) GetAps() *Aps {
	if t != nil && t.Aps != nil {
		return t.Aps
	}
	return nil
}

// GetBfd returns the value of the Bfd struct pointer
// from Device. If the receiver or the field Bfd is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Device) GetBfd() *Bfd {
	if t != nil && t.Bfd != nil {
		return t.Bfd
	}
	return nil
}

// GetDefinedSets returns the value of the DefinedSets struct pointer
// from Device. If the receiver or the field DefinedSets is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Device) GetDefinedSets() *DefinedSets {
	if t != nil && t.DefinedSets != nil {
		return t.DefinedSets
	}
	return nil
}

// GetLacp returns the value of the Lacp struct pointer
// from Device. If the receiver or the field Lacp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Device) GetLacp() *Lacp {
	if t != nil && t.Lacp != nil {
		return t.Lacp
	}
	return nil
}

// GetLldp returns the value of the Lldp struct pointer
// from Device. If the receiver or the field Lldp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Device) GetLldp() *Lldp {
	if t != nil && t.Lldp != nil {
		return t.Lldp
	}
	return nil
}

// GetMessages returns the value of the Messages struct pointer
// from Device. If the receiver or the field Messages is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Device) GetMessages() *Messages {
	if t != nil && t.Messages != nil {
		return t.Messages
	}
	return nil
}

// GetOpticalAmplifier returns the value of the OpticalAmplifier struct pointer
// from Device. If the receiver or the field OpticalAmplifier is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Device) GetOpticalAmplifier() *OpticalAmplifier {
	if t != nil && t.OpticalAmplifier != nil {
		return t.OpticalAmplifier
	}
	return nil
}

// GetRelayAgent returns the value of the RelayAgent struct pointer
// from Device. If the receiver or the field RelayAgent is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Device) GetRelayAgent() *RelayAgent {
	if t != nil && t.RelayAgent != nil {
		return t.RelayAgent
	}
	return nil
}

// GetRoutingPolicy returns the value of the RoutingPolicy struct pointer
// from Device. If the receiver or the field RoutingPolicy is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Device) GetRoutingPolicy() *RoutingPolicy {
	if t != nil && t.RoutingPolicy != nil {
		return t.RoutingPolicy
	}
	return nil
}

// GetStp returns the value of the Stp struct pointer
// from Device. If the receiver or the field Stp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Device) GetStp() *Stp {
	if t != nil && t.Stp != nil {
		return t.Stp
	}
	return nil
}

// GetSystem returns the value of the System struct pointer
// from Device. If the receiver or the field System is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Device) GetSystem() *System {
	if t != nil && t.System != nil {
		return t.System
	}
	return nil
}

// GetTerminalDevice returns the value of the TerminalDevice struct pointer
// from Device. If the receiver or the field TerminalDevice is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Device) GetTerminalDevice() *TerminalDevice {
	if t != nil && t.TerminalDevice != nil {
		return t.TerminalDevice
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the Device
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Device) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Acl.PopulateDefaults()
	t.Aps.PopulateDefaults()
	t.Bfd.PopulateDefaults()
	t.DefinedSets.PopulateDefaults()
	t.Lacp.PopulateDefaults()
	t.Lldp.PopulateDefaults()
	t.Messages.PopulateDefaults()
	t.OpticalAmplifier.PopulateDefaults()
	t.RelayAgent.PopulateDefaults()
	t.RoutingPolicy.PopulateDefaults()
	t.Stp.PopulateDefaults()
	t.System.PopulateDefaults()
	t.TerminalDevice.PopulateDefaults()
	for _, e := range t.Component {
		e.PopulateDefaults()
	}
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
	for _, e := range t.Keychain {
		e.PopulateDefaults()
	}
	for _, e := range t.NetworkInstance {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Device) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Device"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Device) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Device) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Device.
func (*Device) ΛBelongingModule() string {
	return ""
}

// Interface represents the /openconfig-interfaces/interfaces/interface YANG schema element.
type Interface struct {
	ΛMetadata         []ygot.Annotation                  `path:"@" ygotAnnotation:"true"`
	AdminStatus       E_Interface_AdminStatus            `path:"state/admin-status" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛAdminStatus      []ygot.Annotation                  `path:"state/@admin-status" ygotAnnotation:"true"`
	Aggregation       *Interface_Aggregation             `path:"aggregation" module:"openconfig-if-aggregate"`
	ΛAggregation      []ygot.Annotation                  `path:"@aggregation" ygotAnnotation:"true"`
	Counters          *Interface_Counters                `path:"state/counters" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛCounters         []ygot.Annotation                  `path:"state/@counters" ygotAnnotation:"true"`
	Cpu               *bool                              `path:"state/cpu" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛCpu              []ygot.Annotation                  `path:"state/@cpu" ygotAnnotation:"true"`
	Description       *string                            `path:"config/description" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛDescription      []ygot.Annotation                  `path:"config/@description" ygotAnnotation:"true"`
	Enabled           *bool                              `path:"config/enabled" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛEnabled          []ygot.Annotation                  `path:"config/@enabled" ygotAnnotation:"true"`
	Ethernet          *Interface_Ethernet                `path:"ethernet" module:"openconfig-if-ethernet"`
	ΛEthernet         []ygot.Annotation                  `path:"@ethernet" ygotAnnotation:"true"`
	HardwarePort      *string                            `path:"state/hardware-port" module:"openconfig-interfaces/openconfig-platform-port"`
	ΛHardwarePort     []ygot.Annotation                  `path:"state/@hardware-port" ygotAnnotation:"true"`
	HoldTime          *Interface_HoldTime                `path:"hold-time" module:"openconfig-interfaces"`
	ΛHoldTime         []ygot.Annotation                  `path:"@hold-time" ygotAnnotation:"true"`
	Ifindex           *uint32                            `path:"state/ifindex" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛIfindex          []ygot.Annotation                  `path:"state/@ifindex" ygotAnnotation:"true"`
	LastChange        *uint64                            `path:"state/last-change" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛLastChange       []ygot.Annotation                  `path:"state/@last-change" ygotAnnotation:"true"`
	Logical           *bool                              `path:"state/logical" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛLogical          []ygot.Annotation                  `path:"state/@logical" ygotAnnotation:"true"`
	LoopbackMode      E_TransportTypes_LoopbackModeType  `path:"config/loopback-mode" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛLoopbackMode     []ygot.Annotation                  `path:"config/@loopback-mode" ygotAnnotation:"true"`
	Management        *bool                              `path:"state/management" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛManagement       []ygot.Annotation                  `path:"state/@management" ygotAnnotation:"true"`
	Mtu               *uint16                            `path:"config/mtu" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛMtu              []ygot.Annotation                  `path:"config/@mtu" ygotAnnotation:"true"`
	Name              *string                            `path:"config/name|name" module:"openconfig-interfaces/openconfig-interfaces|openconfig-interfaces"`
	ΛName             []ygot.Annotation                  `path:"config/@name|@name" ygotAnnotation:"true"`
	OperStatus        E_Interface_OperStatus             `path:"state/oper-status" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛOperStatus       []ygot.Annotation                  `path:"state/@oper-status" ygotAnnotation:"true"`
	PenaltyBasedAied  *Interface_PenaltyBasedAied        `path:"penalty-based-aied" module:"openconfig-interfaces"`
	ΛPenaltyBasedAied []ygot.Annotation                  `path:"@penalty-based-aied" ygotAnnotation:"true"`
	PhysicalChannel   []uint16                           `path:"state/physical-channel" module:"openconfig-interfaces/openconfig-platform-transceiver"`
	ΛPhysicalChannel  []ygot.Annotation                  `path:"state/@physical-channel" ygotAnnotation:"true"`
	RoutedVlan        *Interface_RoutedVlan              `path:"routed-vlan" module:"openconfig-vlan"`
	ΛRoutedVlan       []ygot.Annotation                  `path:"@routed-vlan" ygotAnnotation:"true"`
	Sonet             *Interface_Sonet                   `path:"sonet" module:"openconfig-transport-line-common"`
	ΛSonet            []ygot.Annotation                  `path:"@sonet" ygotAnnotation:"true"`
	Subinterface      map[uint32]*Interface_Subinterface `path:"subinterfaces/subinterface" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛSubinterface     []ygot.Annotation                  `path:"subinterfaces/@subinterface" ygotAnnotation:"true"`
	Tpid              E_VlanTypes_TPID_TYPES             `path:"config/tpid" module:"openconfig-interfaces/openconfig-vlan"`
	ΛTpid             []ygot.Annotation                  `path:"config/@tpid" ygotAnnotation:"true"`
	Transceiver       *string                            `path:"state/transceiver" module:"openconfig-interfaces/openconfig-platform-transceiver"`
	ΛTransceiver      []ygot.Annotation                  `path:"state/@transceiver" ygotAnnotation:"true"`
	Type              E_IETFInterfaces_InterfaceType     `path:"config/type" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛType             []ygot.Annotation                  `path:"config/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface) IsYANGGoStruct() {}

// NewSubinterface creates a new entry in the Subinterface list of the
// Interface struct. The keys of the list are populated from the input
// arguments.
func (t *Interface) NewSubinterface(Index uint32) (*Interface_Subinterface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subinterface == nil {
		t.Subinterface = make(map[uint32]*Interface_Subinterface)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Subinterface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Subinterface", key)
	}

	t.Subinterface[key] = &Interface_Subinterface{
		Index: &Index,
	}

	return t.Subinterface[key], nil
}

// RenameSubinterface renames an entry in the list Subinterface within
// the Interface struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Interface) RenameSubinterface(oldK, newK uint32) error {
	if _, ok := t.Subinterface[newK]; ok {
		return fmt.Errorf("key %v already exists in Subinterface", newK)
	}

	e, ok := t.Subinterface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Subinterface", oldK)
	}
	e.Index = &newK

	t.Subinterface[newK] = e
	delete(t.Subinterface, oldK)
	return nil
}

// GetOrCreateSubinterfaceMap returns the list (map) from Interface.
//
// It initializes the field if not already initialized.
func (t *Interface) GetOrCreateSubinterfaceMap() map[uint32]*Interface_Subinterface {
	if t.Subinterface == nil {
		t.Subinterface = make(map[uint32]*Interface_Subinterface)
	}
	return t.Subinterface
}

// GetOrCreateSubinterface retrieves the value with the specified keys from
// the receiver Interface. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Interface) GetOrCreateSubinterface(Index uint32) *Interface_Subinterface {

	key := Index

	if v, ok := t.Subinterface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSubinterface(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSubinterface got unexpected error: %v", err))
	}
	return v
}

// GetSubinterface retrieves the value with the specified key from
// the Subinterface map field of Interface. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Interface) GetSubinterface(Index uint32) *Interface_Subinterface {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.Subinterface[key]; ok {
		return lm
	}
	return nil
}

// AppendSubinterface appends the supplied Interface_Subinterface struct to the
// list Subinterface of Interface. If the key value(s) specified in
// the supplied Interface_Subinterface already exist in the list, an error is
// returned.
func (t *Interface) AppendSubinterface(v *Interface_Subinterface) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subinterface == nil {
		t.Subinterface = make(map[uint32]*Interface_Subinterface)
	}

	if _, ok := t.Subinterface[key]; ok {
		return fmt.Errorf("duplicate key for list Subinterface %v", key)
	}

	t.Subinterface[key] = v
	return nil
}

// GetOrCreateAggregation retrieves the value of the Aggregation field
// or returns the existing field if it already exists.
func (t *Interface) GetOrCreateAggregation() *Interface_Aggregation {
	if t.Aggregation != nil {
		return t.Aggregation
	}
	t.Aggregation = &Interface_Aggregation{}
	return t.Aggregation
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *Interface) GetOrCreateCounters() *Interface_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &Interface_Counters{}
	return t.Counters
}

// GetOrCreateEthernet retrieves the value of the Ethernet field
// or returns the existing field if it already exists.
func (t *Interface) GetOrCreateEthernet() *Interface_Ethernet {
	if t.Ethernet != nil {
		return t.Ethernet
	}
	t.Ethernet = &Interface_Ethernet{}
	return t.Ethernet
}

// GetOrCreateHoldTime retrieves the value of the HoldTime field
// or returns the existing field if it already exists.
func (t *Interface) GetOrCreateHoldTime() *Interface_HoldTime {
	if t.HoldTime != nil {
		return t.HoldTime
	}
	t.HoldTime = &Interface_HoldTime{}
	return t.HoldTime
}

// GetOrCreatePenaltyBasedAied retrieves the value of the PenaltyBasedAied field
// or returns the existing field if it already exists.
func (t *Interface) GetOrCreatePenaltyBasedAied() *Interface_PenaltyBasedAied {
	if t.PenaltyBasedAied != nil {
		return t.PenaltyBasedAied
	}
	t.PenaltyBasedAied = &Interface_PenaltyBasedAied{}
	return t.PenaltyBasedAied
}

// GetOrCreateRoutedVlan retrieves the value of the RoutedVlan field
// or returns the existing field if it already exists.
func (t *Interface) GetOrCreateRoutedVlan() *Interface_RoutedVlan {
	if t.RoutedVlan != nil {
		return t.RoutedVlan
	}
	t.RoutedVlan = &Interface_RoutedVlan{}
	return t.RoutedVlan
}

// GetOrCreateSonet retrieves the value of the Sonet field
// or returns the existing field if it already exists.
func (t *Interface) GetOrCreateSonet() *Interface_Sonet {
	if t.Sonet != nil {
		return t.Sonet
	}
	t.Sonet = &Interface_Sonet{}
	return t.Sonet
}

// GetAggregation returns the value of the Aggregation struct pointer
// from Interface. If the receiver or the field Aggregation is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface) GetAggregation() *Interface_Aggregation {
	if t != nil && t.Aggregation != nil {
		return t.Aggregation
	}
	return nil
}

// GetCounters returns the value of the Counters struct pointer
// from Interface. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface) GetCounters() *Interface_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetEthernet returns the value of the Ethernet struct pointer
// from Interface. If the receiver or the field Ethernet is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface) GetEthernet() *Interface_Ethernet {
	if t != nil && t.Ethernet != nil {
		return t.Ethernet
	}
	return nil
}

// GetHoldTime returns the value of the HoldTime struct pointer
// from Interface. If the receiver or the field HoldTime is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface) GetHoldTime() *Interface_HoldTime {
	if t != nil && t.HoldTime != nil {
		return t.HoldTime
	}
	return nil
}

// GetPenaltyBasedAied returns the value of the PenaltyBasedAied struct pointer
// from Interface. If the receiver or the field PenaltyBasedAied is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface) GetPenaltyBasedAied() *Interface_PenaltyBasedAied {
	if t != nil && t.PenaltyBasedAied != nil {
		return t.PenaltyBasedAied
	}
	return nil
}

// GetRoutedVlan returns the value of the RoutedVlan struct pointer
// from Interface. If the receiver or the field RoutedVlan is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface) GetRoutedVlan() *Interface_RoutedVlan {
	if t != nil && t.RoutedVlan != nil {
		return t.RoutedVlan
	}
	return nil
}

// GetSonet returns the value of the Sonet struct pointer
// from Interface. If the receiver or the field Sonet is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface) GetSonet() *Interface_Sonet {
	if t != nil && t.Sonet != nil {
		return t.Sonet
	}
	return nil
}

// GetAdminStatus retrieves the value of the leaf AdminStatus from the Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdminStatus is set, it can
// safely use t.GetAdminStatus() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdminStatus == nil' before retrieving the leaf's value.
func (t *Interface) GetAdminStatus() E_Interface_AdminStatus {
	if t == nil || t.AdminStatus == 0 {
		return 0
	}
	return t.AdminStatus
}

// GetCpu retrieves the value of the leaf Cpu from the Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Cpu is set, it can
// safely use t.GetCpu() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Cpu == nil' before retrieving the leaf's value.
func (t *Interface) GetCpu() bool {
	if t == nil || t.Cpu == nil {
		return false
	}
	return *t.Cpu
}

// GetDescription retrieves the value of the leaf Description from the Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *Interface) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetEnabled retrieves the value of the leaf Enabled from the Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Interface) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return true
	}
	return *t.Enabled
}

// GetHardwarePort retrieves the value of the leaf HardwarePort from the Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HardwarePort is set, it can
// safely use t.GetHardwarePort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HardwarePort == nil' before retrieving the leaf's value.
func (t *Interface) GetHardwarePort() string {
	if t == nil || t.HardwarePort == nil {
		return ""
	}
	return *t.HardwarePort
}

// GetIfindex retrieves the value of the leaf Ifindex from the Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ifindex is set, it can
// safely use t.GetIfindex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ifindex == nil' before retrieving the leaf's value.
func (t *Interface) GetIfindex() uint32 {
	if t == nil || t.Ifindex == nil {
		return 0
	}
	return *t.Ifindex
}

// GetLastChange retrieves the value of the leaf LastChange from the Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastChange is set, it can
// safely use t.GetLastChange() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastChange == nil' before retrieving the leaf's value.
func (t *Interface) GetLastChange() uint64 {
	if t == nil || t.LastChange == nil {
		return 0
	}
	return *t.LastChange
}

// GetLogical retrieves the value of the leaf Logical from the Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Logical is set, it can
// safely use t.GetLogical() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Logical == nil' before retrieving the leaf's value.
func (t *Interface) GetLogical() bool {
	if t == nil || t.Logical == nil {
		return false
	}
	return *t.Logical
}

// GetLoopbackMode retrieves the value of the leaf LoopbackMode from the Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LoopbackMode is set, it can
// safely use t.GetLoopbackMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LoopbackMode == nil' before retrieving the leaf's value.
func (t *Interface) GetLoopbackMode() E_TransportTypes_LoopbackModeType {
	if t == nil || t.LoopbackMode == 0 {
		return TransportTypes_LoopbackModeType_NONE
	}
	return t.LoopbackMode
}

// GetManagement retrieves the value of the leaf Management from the Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Management is set, it can
// safely use t.GetManagement() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Management == nil' before retrieving the leaf's value.
func (t *Interface) GetManagement() bool {
	if t == nil || t.Management == nil {
		return false
	}
	return *t.Management
}

// GetMtu retrieves the value of the leaf Mtu from the Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mtu is set, it can
// safely use t.GetMtu() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mtu == nil' before retrieving the leaf's value.
func (t *Interface) GetMtu() uint16 {
	if t == nil || t.Mtu == nil {
		return 0
	}
	return *t.Mtu
}

// GetName retrieves the value of the leaf Name from the Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Interface) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetOperStatus retrieves the value of the leaf OperStatus from the Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OperStatus is set, it can
// safely use t.GetOperStatus() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OperStatus == nil' before retrieving the leaf's value.
func (t *Interface) GetOperStatus() E_Interface_OperStatus {
	if t == nil || t.OperStatus == 0 {
		return 0
	}
	return t.OperStatus
}

// GetPhysicalChannel retrieves the value of the leaf PhysicalChannel from the Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PhysicalChannel is set, it can
// safely use t.GetPhysicalChannel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PhysicalChannel == nil' before retrieving the leaf's value.
func (t *Interface) GetPhysicalChannel() []uint16 {
	if t == nil || t.PhysicalChannel == nil {
		return nil
	}
	return t.PhysicalChannel
}

// GetTpid retrieves the value of the leaf Tpid from the Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tpid is set, it can
// safely use t.GetTpid() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tpid == nil' before retrieving the leaf's value.
func (t *Interface) GetTpid() E_VlanTypes_TPID_TYPES {
	if t == nil || t.Tpid == 0 {
		return VlanTypes_TPID_TYPES_TPID_0X8100
	}
	return t.Tpid
}

// GetTransceiver retrieves the value of the leaf Transceiver from the Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transceiver is set, it can
// safely use t.GetTransceiver() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transceiver == nil' before retrieving the leaf's value.
func (t *Interface) GetTransceiver() string {
	if t == nil || t.Transceiver == nil {
		return ""
	}
	return *t.Transceiver
}

// GetType retrieves the value of the leaf Type from the Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *Interface) GetType() E_IETFInterfaces_InterfaceType {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = true
		t.Enabled = &v
	}
	if t.LoopbackMode == 0 {
		t.LoopbackMode = TransportTypes_LoopbackModeType_NONE
	}
	if t.Tpid == 0 {
		t.Tpid = VlanTypes_TPID_TYPES_TPID_0X8100
	}
	t.Aggregation.PopulateDefaults()
	t.Counters.PopulateDefaults()
	t.Ethernet.PopulateDefaults()
	t.HoldTime.PopulateDefaults()
	t.PenaltyBasedAied.PopulateDefaults()
	t.RoutedVlan.PopulateDefaults()
	t.Sonet.PopulateDefaults()
	for _, e := range t.Subinterface {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the Interface struct, which is a YANG list entry.
func (t *Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface.
func (*Interface) ΛBelongingModule() string {
	return "openconfig-interfaces"
}

// Interface_Aggregation represents the /openconfig-interfaces/interfaces/interface/aggregation YANG schema element.
type Interface_Aggregation struct {
	ΛMetadata     []ygot.Annotation                   `path:"@" ygotAnnotation:"true"`
	LagSpeed      *uint32                             `path:"state/lag-speed" module:"openconfig-if-aggregate/openconfig-if-aggregate"`
	ΛLagSpeed     []ygot.Annotation                   `path:"state/@lag-speed" ygotAnnotation:"true"`
	LagType       E_IfAggregate_AggregationType       `path:"config/lag-type" module:"openconfig-if-aggregate/openconfig-if-aggregate"`
	ΛLagType      []ygot.Annotation                   `path:"config/@lag-type" ygotAnnotation:"true"`
	Member        []string                            `path:"state/member" module:"openconfig-if-aggregate/openconfig-if-aggregate"`
	ΛMember       []ygot.Annotation                   `path:"state/@member" ygotAnnotation:"true"`
	MinLinks      *uint16                             `path:"config/min-links" module:"openconfig-if-aggregate/openconfig-if-aggregate"`
	ΛMinLinks     []ygot.Annotation                   `path:"config/@min-links" ygotAnnotation:"true"`
	SwitchedVlan  *Interface_Aggregation_SwitchedVlan `path:"switched-vlan" module:"openconfig-vlan"`
	ΛSwitchedVlan []ygot.Annotation                   `path:"@switched-vlan" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Aggregation implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Aggregation) IsYANGGoStruct() {}

// GetOrCreateSwitchedVlan retrieves the value of the SwitchedVlan field
// or returns the existing field if it already exists.
func (t *Interface_Aggregation) GetOrCreateSwitchedVlan() *Interface_Aggregation_SwitchedVlan {
	if t.SwitchedVlan != nil {
		return t.SwitchedVlan
	}
	t.SwitchedVlan = &Interface_Aggregation_SwitchedVlan{}
	return t.SwitchedVlan
}

// GetSwitchedVlan returns the value of the SwitchedVlan struct pointer
// from Interface_Aggregation. If the receiver or the field SwitchedVlan is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Aggregation) GetSwitchedVlan() *Interface_Aggregation_SwitchedVlan {
	if t != nil && t.SwitchedVlan != nil {
		return t.SwitchedVlan
	}
	return nil
}

// GetLagSpeed retrieves the value of the leaf LagSpeed from the Interface_Aggregation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LagSpeed is set, it can
// safely use t.GetLagSpeed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LagSpeed == nil' before retrieving the leaf's value.
func (t *Interface_Aggregation) GetLagSpeed() uint32 {
	if t == nil || t.LagSpeed == nil {
		return 0
	}
	return *t.LagSpeed
}

// GetLagType retrieves the value of the leaf LagType from the Interface_Aggregation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LagType is set, it can
// safely use t.GetLagType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LagType == nil' before retrieving the leaf's value.
func (t *Interface_Aggregation) GetLagType() E_IfAggregate_AggregationType {
	if t == nil || t.LagType == 0 {
		return 0
	}
	return t.LagType
}

// GetMember retrieves the value of the leaf Member from the Interface_Aggregation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Member is set, it can
// safely use t.GetMember() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Member == nil' before retrieving the leaf's value.
func (t *Interface_Aggregation) GetMember() []string {
	if t == nil || t.Member == nil {
		return nil
	}
	return t.Member
}

// GetMinLinks retrieves the value of the leaf MinLinks from the Interface_Aggregation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinLinks is set, it can
// safely use t.GetMinLinks() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinLinks == nil' before retrieving the leaf's value.
func (t *Interface_Aggregation) GetMinLinks() uint16 {
	if t == nil || t.MinLinks == nil {
		return 0
	}
	return *t.MinLinks
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Aggregation
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Aggregation) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.SwitchedVlan.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Aggregation) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Aggregation"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Aggregation) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Aggregation) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Aggregation.
func (*Interface_Aggregation) ΛBelongingModule() string {
	return "openconfig-if-aggregate"
}

// Interface_Aggregation_SwitchedVlan represents the /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan YANG schema element.
type Interface_Aggregation_SwitchedVlan struct {
	ΛMetadata      []ygot.Annotation                                     `path:"@" ygotAnnotation:"true"`
	AccessVlan     *uint16                                               `path:"config/access-vlan" module:"openconfig-vlan/openconfig-vlan"`
	ΛAccessVlan    []ygot.Annotation                                     `path:"config/@access-vlan" ygotAnnotation:"true"`
	InterfaceMode  E_VlanTypes_VlanModeType                              `path:"config/interface-mode" module:"openconfig-vlan/openconfig-vlan"`
	ΛInterfaceMode []ygot.Annotation                                     `path:"config/@interface-mode" ygotAnnotation:"true"`
	NativeVlan     *uint16                                               `path:"config/native-vlan" module:"openconfig-vlan/openconfig-vlan"`
	ΛNativeVlan    []ygot.Annotation                                     `path:"config/@native-vlan" ygotAnnotation:"true"`
	TrunkVlans     []Interface_Aggregation_SwitchedVlan_TrunkVlans_Union `path:"config/trunk-vlans" module:"openconfig-vlan/openconfig-vlan"`
	ΛTrunkVlans    []ygot.Annotation                                     `path:"config/@trunk-vlans" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Aggregation_SwitchedVlan implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Aggregation_SwitchedVlan) IsYANGGoStruct() {}

// GetAccessVlan retrieves the value of the leaf AccessVlan from the Interface_Aggregation_SwitchedVlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AccessVlan is set, it can
// safely use t.GetAccessVlan() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AccessVlan == nil' before retrieving the leaf's value.
func (t *Interface_Aggregation_SwitchedVlan) GetAccessVlan() uint16 {
	if t == nil || t.AccessVlan == nil {
		return 0
	}
	return *t.AccessVlan
}

// GetInterfaceMode retrieves the value of the leaf InterfaceMode from the Interface_Aggregation_SwitchedVlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceMode is set, it can
// safely use t.GetInterfaceMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceMode == nil' before retrieving the leaf's value.
func (t *Interface_Aggregation_SwitchedVlan) GetInterfaceMode() E_VlanTypes_VlanModeType {
	if t == nil || t.InterfaceMode == 0 {
		return 0
	}
	return t.InterfaceMode
}

// GetNativeVlan retrieves the value of the leaf NativeVlan from the Interface_Aggregation_SwitchedVlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NativeVlan is set, it can
// safely use t.GetNativeVlan() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NativeVlan == nil' before retrieving the leaf's value.
func (t *Interface_Aggregation_SwitchedVlan) GetNativeVlan() uint16 {
	if t == nil || t.NativeVlan == nil {
		return 0
	}
	return *t.NativeVlan
}

// GetTrunkVlans retrieves the value of the leaf TrunkVlans from the Interface_Aggregation_SwitchedVlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TrunkVlans is set, it can
// safely use t.GetTrunkVlans() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TrunkVlans == nil' before retrieving the leaf's value.
func (t *Interface_Aggregation_SwitchedVlan) GetTrunkVlans() []Interface_Aggregation_SwitchedVlan_TrunkVlans_Union {
	if t == nil || t.TrunkVlans == nil {
		return nil
	}
	return t.TrunkVlans
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Aggregation_SwitchedVlan
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Aggregation_SwitchedVlan) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Aggregation_SwitchedVlan) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Aggregation_SwitchedVlan"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Aggregation_SwitchedVlan) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Aggregation_SwitchedVlan) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Aggregation_SwitchedVlan.
func (*Interface_Aggregation_SwitchedVlan) ΛBelongingModule() string {
	return "openconfig-vlan"
}

// Interface_Aggregation_SwitchedVlan_TrunkVlans_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/trunk-vlans within the YANG schema.
// Union type can be one of [UnionString, UnionUint16].
type Interface_Aggregation_SwitchedVlan_TrunkVlans_Union interface {
	// Union type can be one of [UnionString, UnionUint16]
	Documentation_for_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union()
}

// Documentation_for_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union ensures that UnionString
// implements the Interface_Aggregation_SwitchedVlan_TrunkVlans_Union interface.
func (UnionString) Documentation_for_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union() {}

// Documentation_for_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union ensures that UnionUint16
// implements the Interface_Aggregation_SwitchedVlan_TrunkVlans_Union interface.
func (UnionUint16) Documentation_for_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union() {}

// To_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union takes an input interface{} and attempts to convert it to a struct
// which implements the Interface_Aggregation_SwitchedVlan_TrunkVlans_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *Interface_Aggregation_SwitchedVlan) To_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union(i interface{}) (Interface_Aggregation_SwitchedVlan_TrunkVlans_Union, error) {
	if v, ok := i.(Interface_Aggregation_SwitchedVlan_TrunkVlans_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint16:
		return UnionUint16(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to Interface_Aggregation_SwitchedVlan_TrunkVlans_Union, unknown union type, got: %T, want any of [string, uint16]", i, i)
}

// Interface_Counters represents the /openconfig-interfaces/interfaces/interface/state/counters YANG schema element.
type Interface_Counters struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	CarrierTransitions  *uint64           `path:"carrier-transitions" module:"openconfig-interfaces"`
	ΛCarrierTransitions []ygot.Annotation `path:"@carrier-transitions" ygotAnnotation:"true"`
	InBroadcastPkts     *uint64           `path:"in-broadcast-pkts" module:"openconfig-interfaces"`
	ΛInBroadcastPkts    []ygot.Annotation `path:"@in-broadcast-pkts" ygotAnnotation:"true"`
	InDiscards          *uint64           `path:"in-discards" module:"openconfig-interfaces"`
	ΛInDiscards         []ygot.Annotation `path:"@in-discards" ygotAnnotation:"true"`
	InErrors            *uint64           `path:"in-errors" module:"openconfig-interfaces"`
	ΛInErrors           []ygot.Annotation `path:"@in-errors" ygotAnnotation:"true"`
	InFcsErrors         *uint64           `path:"in-fcs-errors" module:"openconfig-interfaces"`
	ΛInFcsErrors        []ygot.Annotation `path:"@in-fcs-errors" ygotAnnotation:"true"`
	InMulticastPkts     *uint64           `path:"in-multicast-pkts" module:"openconfig-interfaces"`
	ΛInMulticastPkts    []ygot.Annotation `path:"@in-multicast-pkts" ygotAnnotation:"true"`
	InOctets            *uint64           `path:"in-octets" module:"openconfig-interfaces"`
	ΛInOctets           []ygot.Annotation `path:"@in-octets" ygotAnnotation:"true"`
	InPkts              *uint64           `path:"in-pkts" module:"openconfig-interfaces"`
	ΛInPkts             []ygot.Annotation `path:"@in-pkts" ygotAnnotation:"true"`
	InUnicastPkts       *uint64           `path:"in-unicast-pkts" module:"openconfig-interfaces"`
	ΛInUnicastPkts      []ygot.Annotation `path:"@in-unicast-pkts" ygotAnnotation:"true"`
	InUnknownProtos     *uint64           `path:"in-unknown-protos" module:"openconfig-interfaces"`
	ΛInUnknownProtos    []ygot.Annotation `path:"@in-unknown-protos" ygotAnnotation:"true"`
	LastClear           *uint64           `path:"last-clear" module:"openconfig-interfaces"`
	ΛLastClear          []ygot.Annotation `path:"@last-clear" ygotAnnotation:"true"`
	OutBroadcastPkts    *uint64           `path:"out-broadcast-pkts" module:"openconfig-interfaces"`
	ΛOutBroadcastPkts   []ygot.Annotation `path:"@out-broadcast-pkts" ygotAnnotation:"true"`
	OutDiscards         *uint64           `path:"out-discards" module:"openconfig-interfaces"`
	ΛOutDiscards        []ygot.Annotation `path:"@out-discards" ygotAnnotation:"true"`
	OutErrors           *uint64           `path:"out-errors" module:"openconfig-interfaces"`
	ΛOutErrors          []ygot.Annotation `path:"@out-errors" ygotAnnotation:"true"`
	OutMulticastPkts    *uint64           `path:"out-multicast-pkts" module:"openconfig-interfaces"`
	ΛOutMulticastPkts   []ygot.Annotation `path:"@out-multicast-pkts" ygotAnnotation:"true"`
	OutOctets           *uint64           `path:"out-octets" module:"openconfig-interfaces"`
	ΛOutOctets          []ygot.Annotation `path:"@out-octets" ygotAnnotation:"true"`
	OutPkts             *uint64           `path:"out-pkts" module:"openconfig-interfaces"`
	ΛOutPkts            []ygot.Annotation `path:"@out-pkts" ygotAnnotation:"true"`
	OutUnicastPkts      *uint64           `path:"out-unicast-pkts" module:"openconfig-interfaces"`
	ΛOutUnicastPkts     []ygot.Annotation `path:"@out-unicast-pkts" ygotAnnotation:"true"`
	Resets              *uint64           `path:"resets" module:"openconfig-interfaces"`
	ΛResets             []ygot.Annotation `path:"@resets" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Counters) IsYANGGoStruct() {}

// GetCarrierTransitions retrieves the value of the leaf CarrierTransitions from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CarrierTransitions is set, it can
// safely use t.GetCarrierTransitions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CarrierTransitions == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetCarrierTransitions() uint64 {
	if t == nil || t.CarrierTransitions == nil {
		return 0
	}
	return *t.CarrierTransitions
}

// GetInBroadcastPkts retrieves the value of the leaf InBroadcastPkts from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InBroadcastPkts is set, it can
// safely use t.GetInBroadcastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InBroadcastPkts == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetInBroadcastPkts() uint64 {
	if t == nil || t.InBroadcastPkts == nil {
		return 0
	}
	return *t.InBroadcastPkts
}

// GetInDiscards retrieves the value of the leaf InDiscards from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InDiscards is set, it can
// safely use t.GetInDiscards() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InDiscards == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetInDiscards() uint64 {
	if t == nil || t.InDiscards == nil {
		return 0
	}
	return *t.InDiscards
}

// GetInErrors retrieves the value of the leaf InErrors from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InErrors is set, it can
// safely use t.GetInErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InErrors == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetInErrors() uint64 {
	if t == nil || t.InErrors == nil {
		return 0
	}
	return *t.InErrors
}

// GetInFcsErrors retrieves the value of the leaf InFcsErrors from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InFcsErrors is set, it can
// safely use t.GetInFcsErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InFcsErrors == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetInFcsErrors() uint64 {
	if t == nil || t.InFcsErrors == nil {
		return 0
	}
	return *t.InFcsErrors
}

// GetInMulticastPkts retrieves the value of the leaf InMulticastPkts from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMulticastPkts is set, it can
// safely use t.GetInMulticastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMulticastPkts == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetInMulticastPkts() uint64 {
	if t == nil || t.InMulticastPkts == nil {
		return 0
	}
	return *t.InMulticastPkts
}

// GetInOctets retrieves the value of the leaf InOctets from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InOctets is set, it can
// safely use t.GetInOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InOctets == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetInOctets() uint64 {
	if t == nil || t.InOctets == nil {
		return 0
	}
	return *t.InOctets
}

// GetInPkts retrieves the value of the leaf InPkts from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPkts is set, it can
// safely use t.GetInPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPkts == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetInPkts() uint64 {
	if t == nil || t.InPkts == nil {
		return 0
	}
	return *t.InPkts
}

// GetInUnicastPkts retrieves the value of the leaf InUnicastPkts from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InUnicastPkts is set, it can
// safely use t.GetInUnicastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InUnicastPkts == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetInUnicastPkts() uint64 {
	if t == nil || t.InUnicastPkts == nil {
		return 0
	}
	return *t.InUnicastPkts
}

// GetInUnknownProtos retrieves the value of the leaf InUnknownProtos from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InUnknownProtos is set, it can
// safely use t.GetInUnknownProtos() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InUnknownProtos == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetInUnknownProtos() uint64 {
	if t == nil || t.InUnknownProtos == nil {
		return 0
	}
	return *t.InUnknownProtos
}

// GetLastClear retrieves the value of the leaf LastClear from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastClear is set, it can
// safely use t.GetLastClear() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastClear == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetLastClear() uint64 {
	if t == nil || t.LastClear == nil {
		return 0
	}
	return *t.LastClear
}

// GetOutBroadcastPkts retrieves the value of the leaf OutBroadcastPkts from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutBroadcastPkts is set, it can
// safely use t.GetOutBroadcastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutBroadcastPkts == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetOutBroadcastPkts() uint64 {
	if t == nil || t.OutBroadcastPkts == nil {
		return 0
	}
	return *t.OutBroadcastPkts
}

// GetOutDiscards retrieves the value of the leaf OutDiscards from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutDiscards is set, it can
// safely use t.GetOutDiscards() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutDiscards == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetOutDiscards() uint64 {
	if t == nil || t.OutDiscards == nil {
		return 0
	}
	return *t.OutDiscards
}

// GetOutErrors retrieves the value of the leaf OutErrors from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutErrors is set, it can
// safely use t.GetOutErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutErrors == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetOutErrors() uint64 {
	if t == nil || t.OutErrors == nil {
		return 0
	}
	return *t.OutErrors
}

// GetOutMulticastPkts retrieves the value of the leaf OutMulticastPkts from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutMulticastPkts is set, it can
// safely use t.GetOutMulticastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutMulticastPkts == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetOutMulticastPkts() uint64 {
	if t == nil || t.OutMulticastPkts == nil {
		return 0
	}
	return *t.OutMulticastPkts
}

// GetOutOctets retrieves the value of the leaf OutOctets from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutOctets is set, it can
// safely use t.GetOutOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutOctets == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetOutOctets() uint64 {
	if t == nil || t.OutOctets == nil {
		return 0
	}
	return *t.OutOctets
}

// GetOutPkts retrieves the value of the leaf OutPkts from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPkts is set, it can
// safely use t.GetOutPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPkts == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetOutPkts() uint64 {
	if t == nil || t.OutPkts == nil {
		return 0
	}
	return *t.OutPkts
}

// GetOutUnicastPkts retrieves the value of the leaf OutUnicastPkts from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutUnicastPkts is set, it can
// safely use t.GetOutUnicastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutUnicastPkts == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetOutUnicastPkts() uint64 {
	if t == nil || t.OutUnicastPkts == nil {
		return 0
	}
	return *t.OutUnicastPkts
}

// GetResets retrieves the value of the leaf Resets from the Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Resets is set, it can
// safely use t.GetResets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Resets == nil' before retrieving the leaf's value.
func (t *Interface_Counters) GetResets() uint64 {
	if t == nil || t.Resets == nil {
		return 0
	}
	return *t.Resets
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Counters.
func (*Interface_Counters) ΛBelongingModule() string {
	return "openconfig-interfaces"
}

// Interface_Ethernet represents the /openconfig-interfaces/interfaces/interface/ethernet YANG schema element.
type Interface_Ethernet struct {
	ΛMetadata               []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	AggregateId             *string                          `path:"config/aggregate-id" module:"openconfig-if-ethernet/openconfig-if-aggregate"`
	ΛAggregateId            []ygot.Annotation                `path:"config/@aggregate-id" ygotAnnotation:"true"`
	AutoNegotiate           *bool                            `path:"config/auto-negotiate" module:"openconfig-if-ethernet/openconfig-if-ethernet"`
	ΛAutoNegotiate          []ygot.Annotation                `path:"config/@auto-negotiate" ygotAnnotation:"true"`
	Counters                *Interface_Ethernet_Counters     `path:"state/counters" module:"openconfig-if-ethernet/openconfig-if-ethernet"`
	ΛCounters               []ygot.Annotation                `path:"state/@counters" ygotAnnotation:"true"`
	DuplexMode              E_Ethernet_DuplexMode            `path:"config/duplex-mode" module:"openconfig-if-ethernet/openconfig-if-ethernet"`
	ΛDuplexMode             []ygot.Annotation                `path:"config/@duplex-mode" ygotAnnotation:"true"`
	EnableFlowControl       *bool                            `path:"config/enable-flow-control" module:"openconfig-if-ethernet/openconfig-if-ethernet"`
	ΛEnableFlowControl      []ygot.Annotation                `path:"config/@enable-flow-control" ygotAnnotation:"true"`
	FecMode                 E_IfEthernet_INTERFACE_FEC       `path:"config/fec-mode" module:"openconfig-if-ethernet/openconfig-if-ethernet"`
	ΛFecMode                []ygot.Annotation                `path:"config/@fec-mode" ygotAnnotation:"true"`
	HwMacAddress            *string                          `path:"state/hw-mac-address" module:"openconfig-if-ethernet/openconfig-if-ethernet"`
	ΛHwMacAddress           []ygot.Annotation                `path:"state/@hw-mac-address" ygotAnnotation:"true"`
	MacAddress              *string                          `path:"config/mac-address" module:"openconfig-if-ethernet/openconfig-if-ethernet"`
	ΛMacAddress             []ygot.Annotation                `path:"config/@mac-address" ygotAnnotation:"true"`
	NegotiatedDuplexMode    E_Ethernet_NegotiatedDuplexMode  `path:"state/negotiated-duplex-mode" module:"openconfig-if-ethernet/openconfig-if-ethernet"`
	ΛNegotiatedDuplexMode   []ygot.Annotation                `path:"state/@negotiated-duplex-mode" ygotAnnotation:"true"`
	NegotiatedPortSpeed     E_IfEthernet_ETHERNET_SPEED      `path:"state/negotiated-port-speed" module:"openconfig-if-ethernet/openconfig-if-ethernet"`
	ΛNegotiatedPortSpeed    []ygot.Annotation                `path:"state/@negotiated-port-speed" ygotAnnotation:"true"`
	PortSpeed               E_IfEthernet_ETHERNET_SPEED      `path:"config/port-speed" module:"openconfig-if-ethernet/openconfig-if-ethernet"`
	ΛPortSpeed              []ygot.Annotation                `path:"config/@port-speed" ygotAnnotation:"true"`
	StandaloneLinkTraining  *bool                            `path:"config/standalone-link-training" module:"openconfig-if-ethernet/openconfig-if-ethernet"`
	ΛStandaloneLinkTraining []ygot.Annotation                `path:"config/@standalone-link-training" ygotAnnotation:"true"`
	SwitchedVlan            *Interface_Ethernet_SwitchedVlan `path:"switched-vlan" module:"openconfig-vlan"`
	ΛSwitchedVlan           []ygot.Annotation                `path:"@switched-vlan" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Ethernet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Ethernet) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *Interface_Ethernet) GetOrCreateCounters() *Interface_Ethernet_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &Interface_Ethernet_Counters{}
	return t.Counters
}

// GetOrCreateSwitchedVlan retrieves the value of the SwitchedVlan field
// or returns the existing field if it already exists.
func (t *Interface_Ethernet) GetOrCreateSwitchedVlan() *Interface_Ethernet_SwitchedVlan {
	if t.SwitchedVlan != nil {
		return t.SwitchedVlan
	}
	t.SwitchedVlan = &Interface_Ethernet_SwitchedVlan{}
	return t.SwitchedVlan
}

// GetCounters returns the value of the Counters struct pointer
// from Interface_Ethernet. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Ethernet) GetCounters() *Interface_Ethernet_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetSwitchedVlan returns the value of the SwitchedVlan struct pointer
// from Interface_Ethernet. If the receiver or the field SwitchedVlan is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Ethernet) GetSwitchedVlan() *Interface_Ethernet_SwitchedVlan {
	if t != nil && t.SwitchedVlan != nil {
		return t.SwitchedVlan
	}
	return nil
}

// GetAggregateId retrieves the value of the leaf AggregateId from the Interface_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AggregateId is set, it can
// safely use t.GetAggregateId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AggregateId == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet) GetAggregateId() string {
	if t == nil || t.AggregateId == nil {
		return ""
	}
	return *t.AggregateId
}

// GetAutoNegotiate retrieves the value of the leaf AutoNegotiate from the Interface_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AutoNegotiate is set, it can
// safely use t.GetAutoNegotiate() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AutoNegotiate == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet) GetAutoNegotiate() bool {
	if t == nil || t.AutoNegotiate == nil {
		return true
	}
	return *t.AutoNegotiate
}

// GetDuplexMode retrieves the value of the leaf DuplexMode from the Interface_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DuplexMode is set, it can
// safely use t.GetDuplexMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DuplexMode == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet) GetDuplexMode() E_Ethernet_DuplexMode {
	if t == nil || t.DuplexMode == 0 {
		return 0
	}
	return t.DuplexMode
}

// GetEnableFlowControl retrieves the value of the leaf EnableFlowControl from the Interface_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EnableFlowControl is set, it can
// safely use t.GetEnableFlowControl() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EnableFlowControl == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet) GetEnableFlowControl() bool {
	if t == nil || t.EnableFlowControl == nil {
		return false
	}
	return *t.EnableFlowControl
}

// GetFecMode retrieves the value of the leaf FecMode from the Interface_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FecMode is set, it can
// safely use t.GetFecMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FecMode == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet) GetFecMode() E_IfEthernet_INTERFACE_FEC {
	if t == nil || t.FecMode == 0 {
		return 0
	}
	return t.FecMode
}

// GetHwMacAddress retrieves the value of the leaf HwMacAddress from the Interface_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HwMacAddress is set, it can
// safely use t.GetHwMacAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HwMacAddress == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet) GetHwMacAddress() string {
	if t == nil || t.HwMacAddress == nil {
		return ""
	}
	return *t.HwMacAddress
}

// GetMacAddress retrieves the value of the leaf MacAddress from the Interface_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MacAddress is set, it can
// safely use t.GetMacAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MacAddress == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet) GetMacAddress() string {
	if t == nil || t.MacAddress == nil {
		return ""
	}
	return *t.MacAddress
}

// GetNegotiatedDuplexMode retrieves the value of the leaf NegotiatedDuplexMode from the Interface_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NegotiatedDuplexMode is set, it can
// safely use t.GetNegotiatedDuplexMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NegotiatedDuplexMode == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet) GetNegotiatedDuplexMode() E_Ethernet_NegotiatedDuplexMode {
	if t == nil || t.NegotiatedDuplexMode == 0 {
		return 0
	}
	return t.NegotiatedDuplexMode
}

// GetNegotiatedPortSpeed retrieves the value of the leaf NegotiatedPortSpeed from the Interface_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NegotiatedPortSpeed is set, it can
// safely use t.GetNegotiatedPortSpeed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NegotiatedPortSpeed == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet) GetNegotiatedPortSpeed() E_IfEthernet_ETHERNET_SPEED {
	if t == nil || t.NegotiatedPortSpeed == 0 {
		return 0
	}
	return t.NegotiatedPortSpeed
}

// GetPortSpeed retrieves the value of the leaf PortSpeed from the Interface_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortSpeed is set, it can
// safely use t.GetPortSpeed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortSpeed == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet) GetPortSpeed() E_IfEthernet_ETHERNET_SPEED {
	if t == nil || t.PortSpeed == 0 {
		return 0
	}
	return t.PortSpeed
}

// GetStandaloneLinkTraining retrieves the value of the leaf StandaloneLinkTraining from the Interface_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if StandaloneLinkTraining is set, it can
// safely use t.GetStandaloneLinkTraining() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.StandaloneLinkTraining == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet) GetStandaloneLinkTraining() bool {
	if t == nil || t.StandaloneLinkTraining == nil {
		return false
	}
	return *t.StandaloneLinkTraining
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Ethernet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Ethernet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AutoNegotiate == nil {
		var v bool = true
		t.AutoNegotiate = &v
	}
	if t.EnableFlowControl == nil {
		var v bool = false
		t.EnableFlowControl = &v
	}
	if t.StandaloneLinkTraining == nil {
		var v bool = false
		t.StandaloneLinkTraining = &v
	}
	t.Counters.PopulateDefaults()
	t.SwitchedVlan.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Ethernet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Ethernet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Ethernet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Ethernet) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Ethernet.
func (*Interface_Ethernet) ΛBelongingModule() string {
	return "openconfig-if-ethernet"
}

// Interface_Ethernet_Counters represents the /openconfig-interfaces/interfaces/interface/ethernet/state/counters YANG schema element.
type Interface_Ethernet_Counters struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	In_8021QFrames       *uint64           `path:"in-8021q-frames" module:"openconfig-if-ethernet"`
	ΛIn_8021QFrames      []ygot.Annotation `path:"@in-8021q-frames" ygotAnnotation:"true"`
	InBlockErrors        *uint64           `path:"in-block-errors" module:"openconfig-if-ethernet"`
	ΛInBlockErrors       []ygot.Annotation `path:"@in-block-errors" ygotAnnotation:"true"`
	InCarrierErrors      *uint64           `path:"in-carrier-errors" module:"openconfig-if-ethernet"`
	ΛInCarrierErrors     []ygot.Annotation `path:"@in-carrier-errors" ygotAnnotation:"true"`
	InCrcErrors          *uint64           `path:"in-crc-errors" module:"openconfig-if-ethernet"`
	ΛInCrcErrors         []ygot.Annotation `path:"@in-crc-errors" ygotAnnotation:"true"`
	InFragmentFrames     *uint64           `path:"in-fragment-frames" module:"openconfig-if-ethernet"`
	ΛInFragmentFrames    []ygot.Annotation `path:"@in-fragment-frames" ygotAnnotation:"true"`
	InInterruptedTx      *uint64           `path:"in-interrupted-tx" module:"openconfig-if-ethernet"`
	ΛInInterruptedTx     []ygot.Annotation `path:"@in-interrupted-tx" ygotAnnotation:"true"`
	InJabberFrames       *uint64           `path:"in-jabber-frames" module:"openconfig-if-ethernet"`
	ΛInJabberFrames      []ygot.Annotation `path:"@in-jabber-frames" ygotAnnotation:"true"`
	InLateCollision      *uint64           `path:"in-late-collision" module:"openconfig-if-ethernet"`
	ΛInLateCollision     []ygot.Annotation `path:"@in-late-collision" ygotAnnotation:"true"`
	InMacControlFrames   *uint64           `path:"in-mac-control-frames" module:"openconfig-if-ethernet"`
	ΛInMacControlFrames  []ygot.Annotation `path:"@in-mac-control-frames" ygotAnnotation:"true"`
	InMacErrorsRx        *uint64           `path:"in-mac-errors-rx" module:"openconfig-if-ethernet"`
	ΛInMacErrorsRx       []ygot.Annotation `path:"@in-mac-errors-rx" ygotAnnotation:"true"`
	InMacPauseFrames     *uint64           `path:"in-mac-pause-frames" module:"openconfig-if-ethernet"`
	ΛInMacPauseFrames    []ygot.Annotation `path:"@in-mac-pause-frames" ygotAnnotation:"true"`
	InMaxsizeExceeded    *uint64           `path:"in-maxsize-exceeded" module:"openconfig-if-ethernet"`
	ΛInMaxsizeExceeded   []ygot.Annotation `path:"@in-maxsize-exceeded" ygotAnnotation:"true"`
	InOversizeFrames     *uint64           `path:"in-oversize-frames" module:"openconfig-if-ethernet"`
	ΛInOversizeFrames    []ygot.Annotation `path:"@in-oversize-frames" ygotAnnotation:"true"`
	InSingleCollision    *uint64           `path:"in-single-collision" module:"openconfig-if-ethernet"`
	ΛInSingleCollision   []ygot.Annotation `path:"@in-single-collision" ygotAnnotation:"true"`
	InSymbolError        *uint64           `path:"in-symbol-error" module:"openconfig-if-ethernet"`
	ΛInSymbolError       []ygot.Annotation `path:"@in-symbol-error" ygotAnnotation:"true"`
	InUndersizeFrames    *uint64           `path:"in-undersize-frames" module:"openconfig-if-ethernet"`
	ΛInUndersizeFrames   []ygot.Annotation `path:"@in-undersize-frames" ygotAnnotation:"true"`
	Out_8021QFrames      *uint64           `path:"out-8021q-frames" module:"openconfig-if-ethernet"`
	ΛOut_8021QFrames     []ygot.Annotation `path:"@out-8021q-frames" ygotAnnotation:"true"`
	OutMacControlFrames  *uint64           `path:"out-mac-control-frames" module:"openconfig-if-ethernet"`
	ΛOutMacControlFrames []ygot.Annotation `path:"@out-mac-control-frames" ygotAnnotation:"true"`
	OutMacErrorsTx       *uint64           `path:"out-mac-errors-tx" module:"openconfig-if-ethernet"`
	ΛOutMacErrorsTx      []ygot.Annotation `path:"@out-mac-errors-tx" ygotAnnotation:"true"`
	OutMacPauseFrames    *uint64           `path:"out-mac-pause-frames" module:"openconfig-if-ethernet"`
	ΛOutMacPauseFrames   []ygot.Annotation `path:"@out-mac-pause-frames" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Ethernet_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Ethernet_Counters) IsYANGGoStruct() {}

// GetIn_8021QFrames retrieves the value of the leaf In_8021QFrames from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if In_8021QFrames is set, it can
// safely use t.GetIn_8021QFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.In_8021QFrames == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetIn_8021QFrames() uint64 {
	if t == nil || t.In_8021QFrames == nil {
		return 0
	}
	return *t.In_8021QFrames
}

// GetInBlockErrors retrieves the value of the leaf InBlockErrors from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InBlockErrors is set, it can
// safely use t.GetInBlockErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InBlockErrors == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetInBlockErrors() uint64 {
	if t == nil || t.InBlockErrors == nil {
		return 0
	}
	return *t.InBlockErrors
}

// GetInCarrierErrors retrieves the value of the leaf InCarrierErrors from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InCarrierErrors is set, it can
// safely use t.GetInCarrierErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InCarrierErrors == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetInCarrierErrors() uint64 {
	if t == nil || t.InCarrierErrors == nil {
		return 0
	}
	return *t.InCarrierErrors
}

// GetInCrcErrors retrieves the value of the leaf InCrcErrors from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InCrcErrors is set, it can
// safely use t.GetInCrcErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InCrcErrors == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetInCrcErrors() uint64 {
	if t == nil || t.InCrcErrors == nil {
		return 0
	}
	return *t.InCrcErrors
}

// GetInFragmentFrames retrieves the value of the leaf InFragmentFrames from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InFragmentFrames is set, it can
// safely use t.GetInFragmentFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InFragmentFrames == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetInFragmentFrames() uint64 {
	if t == nil || t.InFragmentFrames == nil {
		return 0
	}
	return *t.InFragmentFrames
}

// GetInInterruptedTx retrieves the value of the leaf InInterruptedTx from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InInterruptedTx is set, it can
// safely use t.GetInInterruptedTx() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InInterruptedTx == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetInInterruptedTx() uint64 {
	if t == nil || t.InInterruptedTx == nil {
		return 0
	}
	return *t.InInterruptedTx
}

// GetInJabberFrames retrieves the value of the leaf InJabberFrames from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InJabberFrames is set, it can
// safely use t.GetInJabberFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InJabberFrames == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetInJabberFrames() uint64 {
	if t == nil || t.InJabberFrames == nil {
		return 0
	}
	return *t.InJabberFrames
}

// GetInLateCollision retrieves the value of the leaf InLateCollision from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InLateCollision is set, it can
// safely use t.GetInLateCollision() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InLateCollision == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetInLateCollision() uint64 {
	if t == nil || t.InLateCollision == nil {
		return 0
	}
	return *t.InLateCollision
}

// GetInMacControlFrames retrieves the value of the leaf InMacControlFrames from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMacControlFrames is set, it can
// safely use t.GetInMacControlFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMacControlFrames == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetInMacControlFrames() uint64 {
	if t == nil || t.InMacControlFrames == nil {
		return 0
	}
	return *t.InMacControlFrames
}

// GetInMacErrorsRx retrieves the value of the leaf InMacErrorsRx from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMacErrorsRx is set, it can
// safely use t.GetInMacErrorsRx() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMacErrorsRx == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetInMacErrorsRx() uint64 {
	if t == nil || t.InMacErrorsRx == nil {
		return 0
	}
	return *t.InMacErrorsRx
}

// GetInMacPauseFrames retrieves the value of the leaf InMacPauseFrames from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMacPauseFrames is set, it can
// safely use t.GetInMacPauseFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMacPauseFrames == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetInMacPauseFrames() uint64 {
	if t == nil || t.InMacPauseFrames == nil {
		return 0
	}
	return *t.InMacPauseFrames
}

// GetInMaxsizeExceeded retrieves the value of the leaf InMaxsizeExceeded from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMaxsizeExceeded is set, it can
// safely use t.GetInMaxsizeExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMaxsizeExceeded == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetInMaxsizeExceeded() uint64 {
	if t == nil || t.InMaxsizeExceeded == nil {
		return 0
	}
	return *t.InMaxsizeExceeded
}

// GetInOversizeFrames retrieves the value of the leaf InOversizeFrames from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InOversizeFrames is set, it can
// safely use t.GetInOversizeFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InOversizeFrames == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetInOversizeFrames() uint64 {
	if t == nil || t.InOversizeFrames == nil {
		return 0
	}
	return *t.InOversizeFrames
}

// GetInSingleCollision retrieves the value of the leaf InSingleCollision from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InSingleCollision is set, it can
// safely use t.GetInSingleCollision() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InSingleCollision == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetInSingleCollision() uint64 {
	if t == nil || t.InSingleCollision == nil {
		return 0
	}
	return *t.InSingleCollision
}

// GetInSymbolError retrieves the value of the leaf InSymbolError from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InSymbolError is set, it can
// safely use t.GetInSymbolError() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InSymbolError == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetInSymbolError() uint64 {
	if t == nil || t.InSymbolError == nil {
		return 0
	}
	return *t.InSymbolError
}

// GetInUndersizeFrames retrieves the value of the leaf InUndersizeFrames from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InUndersizeFrames is set, it can
// safely use t.GetInUndersizeFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InUndersizeFrames == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetInUndersizeFrames() uint64 {
	if t == nil || t.InUndersizeFrames == nil {
		return 0
	}
	return *t.InUndersizeFrames
}

// GetOut_8021QFrames retrieves the value of the leaf Out_8021QFrames from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Out_8021QFrames is set, it can
// safely use t.GetOut_8021QFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Out_8021QFrames == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetOut_8021QFrames() uint64 {
	if t == nil || t.Out_8021QFrames == nil {
		return 0
	}
	return *t.Out_8021QFrames
}

// GetOutMacControlFrames retrieves the value of the leaf OutMacControlFrames from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutMacControlFrames is set, it can
// safely use t.GetOutMacControlFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutMacControlFrames == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetOutMacControlFrames() uint64 {
	if t == nil || t.OutMacControlFrames == nil {
		return 0
	}
	return *t.OutMacControlFrames
}

// GetOutMacErrorsTx retrieves the value of the leaf OutMacErrorsTx from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutMacErrorsTx is set, it can
// safely use t.GetOutMacErrorsTx() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutMacErrorsTx == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetOutMacErrorsTx() uint64 {
	if t == nil || t.OutMacErrorsTx == nil {
		return 0
	}
	return *t.OutMacErrorsTx
}

// GetOutMacPauseFrames retrieves the value of the leaf OutMacPauseFrames from the Interface_Ethernet_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutMacPauseFrames is set, it can
// safely use t.GetOutMacPauseFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutMacPauseFrames == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_Counters) GetOutMacPauseFrames() uint64 {
	if t == nil || t.OutMacPauseFrames == nil {
		return 0
	}
	return *t.OutMacPauseFrames
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Ethernet_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Ethernet_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Ethernet_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Ethernet_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Ethernet_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Ethernet_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Ethernet_Counters.
func (*Interface_Ethernet_Counters) ΛBelongingModule() string {
	return "openconfig-if-ethernet"
}

// Interface_Ethernet_SwitchedVlan represents the /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan YANG schema element.
type Interface_Ethernet_SwitchedVlan struct {
	ΛMetadata      []ygot.Annotation                                  `path:"@" ygotAnnotation:"true"`
	AccessVlan     *uint16                                            `path:"config/access-vlan" module:"openconfig-vlan/openconfig-vlan"`
	ΛAccessVlan    []ygot.Annotation                                  `path:"config/@access-vlan" ygotAnnotation:"true"`
	InterfaceMode  E_VlanTypes_VlanModeType                           `path:"config/interface-mode" module:"openconfig-vlan/openconfig-vlan"`
	ΛInterfaceMode []ygot.Annotation                                  `path:"config/@interface-mode" ygotAnnotation:"true"`
	NativeVlan     *uint16                                            `path:"config/native-vlan" module:"openconfig-vlan/openconfig-vlan"`
	ΛNativeVlan    []ygot.Annotation                                  `path:"config/@native-vlan" ygotAnnotation:"true"`
	TrunkVlans     []Interface_Ethernet_SwitchedVlan_TrunkVlans_Union `path:"config/trunk-vlans" module:"openconfig-vlan/openconfig-vlan"`
	ΛTrunkVlans    []ygot.Annotation                                  `path:"config/@trunk-vlans" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Ethernet_SwitchedVlan implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Ethernet_SwitchedVlan) IsYANGGoStruct() {}

// GetAccessVlan retrieves the value of the leaf AccessVlan from the Interface_Ethernet_SwitchedVlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AccessVlan is set, it can
// safely use t.GetAccessVlan() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AccessVlan == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_SwitchedVlan) GetAccessVlan() uint16 {
	if t == nil || t.AccessVlan == nil {
		return 0
	}
	return *t.AccessVlan
}

// GetInterfaceMode retrieves the value of the leaf InterfaceMode from the Interface_Ethernet_SwitchedVlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceMode is set, it can
// safely use t.GetInterfaceMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceMode == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_SwitchedVlan) GetInterfaceMode() E_VlanTypes_VlanModeType {
	if t == nil || t.InterfaceMode == 0 {
		return 0
	}
	return t.InterfaceMode
}

// GetNativeVlan retrieves the value of the leaf NativeVlan from the Interface_Ethernet_SwitchedVlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NativeVlan is set, it can
// safely use t.GetNativeVlan() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NativeVlan == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_SwitchedVlan) GetNativeVlan() uint16 {
	if t == nil || t.NativeVlan == nil {
		return 0
	}
	return *t.NativeVlan
}

// GetTrunkVlans retrieves the value of the leaf TrunkVlans from the Interface_Ethernet_SwitchedVlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TrunkVlans is set, it can
// safely use t.GetTrunkVlans() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TrunkVlans == nil' before retrieving the leaf's value.
func (t *Interface_Ethernet_SwitchedVlan) GetTrunkVlans() []Interface_Ethernet_SwitchedVlan_TrunkVlans_Union {
	if t == nil || t.TrunkVlans == nil {
		return nil
	}
	return t.TrunkVlans
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Ethernet_SwitchedVlan
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Ethernet_SwitchedVlan) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Ethernet_SwitchedVlan) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Ethernet_SwitchedVlan"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Ethernet_SwitchedVlan) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Ethernet_SwitchedVlan) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Ethernet_SwitchedVlan.
func (*Interface_Ethernet_SwitchedVlan) ΛBelongingModule() string {
	return "openconfig-vlan"
}

// Interface_Ethernet_SwitchedVlan_TrunkVlans_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/trunk-vlans within the YANG schema.
// Union type can be one of [UnionString, UnionUint16].
type Interface_Ethernet_SwitchedVlan_TrunkVlans_Union interface {
	// Union type can be one of [UnionString, UnionUint16]
	Documentation_for_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union()
}

// Documentation_for_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union ensures that UnionString
// implements the Interface_Ethernet_SwitchedVlan_TrunkVlans_Union interface.
func (UnionString) Documentation_for_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union() {}

// Documentation_for_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union ensures that UnionUint16
// implements the Interface_Ethernet_SwitchedVlan_TrunkVlans_Union interface.
func (UnionUint16) Documentation_for_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union() {}

// To_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union takes an input interface{} and attempts to convert it to a struct
// which implements the Interface_Ethernet_SwitchedVlan_TrunkVlans_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *Interface_Ethernet_SwitchedVlan) To_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union(i interface{}) (Interface_Ethernet_SwitchedVlan_TrunkVlans_Union, error) {
	if v, ok := i.(Interface_Ethernet_SwitchedVlan_TrunkVlans_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint16:
		return UnionUint16(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to Interface_Ethernet_SwitchedVlan_TrunkVlans_Union, unknown union type, got: %T, want any of [string, uint16]", i, i)
}

// Interface_HoldTime represents the /openconfig-interfaces/interfaces/interface/hold-time YANG schema element.
type Interface_HoldTime struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Down      *uint32           `path:"config/down" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛDown     []ygot.Annotation `path:"config/@down" ygotAnnotation:"true"`
	Up        *uint32           `path:"config/up" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛUp       []ygot.Annotation `path:"config/@up" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_HoldTime implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_HoldTime) IsYANGGoStruct() {}

// GetDown retrieves the value of the leaf Down from the Interface_HoldTime
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Down is set, it can
// safely use t.GetDown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Down == nil' before retrieving the leaf's value.
func (t *Interface_HoldTime) GetDown() uint32 {
	if t == nil || t.Down == nil {
		return 0
	}
	return *t.Down
}

// GetUp retrieves the value of the leaf Up from the Interface_HoldTime
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Up is set, it can
// safely use t.GetUp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Up == nil' before retrieving the leaf's value.
func (t *Interface_HoldTime) GetUp() uint32 {
	if t == nil || t.Up == nil {
		return 0
	}
	return *t.Up
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_HoldTime
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_HoldTime) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Down == nil {
		var v uint32 = 0
		t.Down = &v
	}
	if t.Up == nil {
		var v uint32 = 0
		t.Up = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_HoldTime) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_HoldTime"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_HoldTime) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_HoldTime) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_HoldTime.
func (*Interface_HoldTime) ΛBelongingModule() string {
	return "openconfig-interfaces"
}

// Interface_PenaltyBasedAied represents the /openconfig-interfaces/interfaces/interface/penalty-based-aied YANG schema element.
type Interface_PenaltyBasedAied struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	DecayHalfLife      *uint32           `path:"config/decay-half-life" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛDecayHalfLife     []ygot.Annotation `path:"config/@decay-half-life" ygotAnnotation:"true"`
	FlapPenalty        *uint32           `path:"config/flap-penalty" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛFlapPenalty       []ygot.Annotation `path:"config/@flap-penalty" ygotAnnotation:"true"`
	MaxSuppressTime    *uint32           `path:"config/max-suppress-time" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛMaxSuppressTime   []ygot.Annotation `path:"config/@max-suppress-time" ygotAnnotation:"true"`
	ReuseThreshold     *uint32           `path:"config/reuse-threshold" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛReuseThreshold    []ygot.Annotation `path:"config/@reuse-threshold" ygotAnnotation:"true"`
	SuppressThreshold  *uint32           `path:"config/suppress-threshold" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛSuppressThreshold []ygot.Annotation `path:"config/@suppress-threshold" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_PenaltyBasedAied implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_PenaltyBasedAied) IsYANGGoStruct() {}

// GetDecayHalfLife retrieves the value of the leaf DecayHalfLife from the Interface_PenaltyBasedAied
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DecayHalfLife is set, it can
// safely use t.GetDecayHalfLife() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DecayHalfLife == nil' before retrieving the leaf's value.
func (t *Interface_PenaltyBasedAied) GetDecayHalfLife() uint32 {
	if t == nil || t.DecayHalfLife == nil {
		return 0
	}
	return *t.DecayHalfLife
}

// GetFlapPenalty retrieves the value of the leaf FlapPenalty from the Interface_PenaltyBasedAied
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FlapPenalty is set, it can
// safely use t.GetFlapPenalty() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FlapPenalty == nil' before retrieving the leaf's value.
func (t *Interface_PenaltyBasedAied) GetFlapPenalty() uint32 {
	if t == nil || t.FlapPenalty == nil {
		return 0
	}
	return *t.FlapPenalty
}

// GetMaxSuppressTime retrieves the value of the leaf MaxSuppressTime from the Interface_PenaltyBasedAied
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxSuppressTime is set, it can
// safely use t.GetMaxSuppressTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxSuppressTime == nil' before retrieving the leaf's value.
func (t *Interface_PenaltyBasedAied) GetMaxSuppressTime() uint32 {
	if t == nil || t.MaxSuppressTime == nil {
		return 0
	}
	return *t.MaxSuppressTime
}

// GetReuseThreshold retrieves the value of the leaf ReuseThreshold from the Interface_PenaltyBasedAied
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReuseThreshold is set, it can
// safely use t.GetReuseThreshold() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReuseThreshold == nil' before retrieving the leaf's value.
func (t *Interface_PenaltyBasedAied) GetReuseThreshold() uint32 {
	if t == nil || t.ReuseThreshold == nil {
		return 0
	}
	return *t.ReuseThreshold
}

// GetSuppressThreshold retrieves the value of the leaf SuppressThreshold from the Interface_PenaltyBasedAied
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SuppressThreshold is set, it can
// safely use t.GetSuppressThreshold() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SuppressThreshold == nil' before retrieving the leaf's value.
func (t *Interface_PenaltyBasedAied) GetSuppressThreshold() uint32 {
	if t == nil || t.SuppressThreshold == nil {
		return 0
	}
	return *t.SuppressThreshold
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_PenaltyBasedAied
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_PenaltyBasedAied) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DecayHalfLife == nil {
		var v uint32 = 0
		t.DecayHalfLife = &v
	}
	if t.FlapPenalty == nil {
		var v uint32 = 0
		t.FlapPenalty = &v
	}
	if t.MaxSuppressTime == nil {
		var v uint32 = 0
		t.MaxSuppressTime = &v
	}
	if t.ReuseThreshold == nil {
		var v uint32 = 0
		t.ReuseThreshold = &v
	}
	if t.SuppressThreshold == nil {
		var v uint32 = 0
		t.SuppressThreshold = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_PenaltyBasedAied) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_PenaltyBasedAied"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_PenaltyBasedAied) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_PenaltyBasedAied) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_PenaltyBasedAied.
func (*Interface_PenaltyBasedAied) ΛBelongingModule() string {
	return "openconfig-interfaces"
}

// Interface_RoutedVlan represents the /openconfig-interfaces/interfaces/interface/routed-vlan YANG schema element.
type Interface_RoutedVlan struct {
	ΛMetadata []ygot.Annotation               `path:"@" ygotAnnotation:"true"`
	Ipv4      *Interface_RoutedVlan_Ipv4      `path:"ipv4" module:"openconfig-if-ip"`
	ΛIpv4     []ygot.Annotation               `path:"@ipv4" ygotAnnotation:"true"`
	Ipv6      *Interface_RoutedVlan_Ipv6      `path:"ipv6" module:"openconfig-if-ip"`
	ΛIpv6     []ygot.Annotation               `path:"@ipv6" ygotAnnotation:"true"`
	Vlan      Interface_RoutedVlan_Vlan_Union `path:"config/vlan" module:"openconfig-vlan/openconfig-vlan"`
	ΛVlan     []ygot.Annotation               `path:"config/@vlan" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan) IsYANGGoStruct() {}

// GetOrCreateIpv4 retrieves the value of the Ipv4 field
// or returns the existing field if it already exists.
func (t *Interface_RoutedVlan) GetOrCreateIpv4() *Interface_RoutedVlan_Ipv4 {
	if t.Ipv4 != nil {
		return t.Ipv4
	}
	t.Ipv4 = &Interface_RoutedVlan_Ipv4{}
	return t.Ipv4
}

// GetOrCreateIpv6 retrieves the value of the Ipv6 field
// or returns the existing field if it already exists.
func (t *Interface_RoutedVlan) GetOrCreateIpv6() *Interface_RoutedVlan_Ipv6 {
	if t.Ipv6 != nil {
		return t.Ipv6
	}
	t.Ipv6 = &Interface_RoutedVlan_Ipv6{}
	return t.Ipv6
}

// GetIpv4 returns the value of the Ipv4 struct pointer
// from Interface_RoutedVlan. If the receiver or the field Ipv4 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_RoutedVlan) GetIpv4() *Interface_RoutedVlan_Ipv4 {
	if t != nil && t.Ipv4 != nil {
		return t.Ipv4
	}
	return nil
}

// GetIpv6 returns the value of the Ipv6 struct pointer
// from Interface_RoutedVlan. If the receiver or the field Ipv6 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_RoutedVlan) GetIpv6() *Interface_RoutedVlan_Ipv6 {
	if t != nil && t.Ipv6 != nil {
		return t.Ipv6
	}
	return nil
}

// GetVlan retrieves the value of the leaf Vlan from the Interface_RoutedVlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Vlan is set, it can
// safely use t.GetVlan() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Vlan == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan) GetVlan() Interface_RoutedVlan_Vlan_Union {
	if t == nil || t.Vlan == nil {
		return nil
	}
	return t.Vlan
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Ipv4.PopulateDefaults()
	t.Ipv6.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan.
func (*Interface_RoutedVlan) ΛBelongingModule() string {
	return "openconfig-vlan"
}

// Interface_RoutedVlan_Vlan_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-interfaces/interfaces/interface/routed-vlan/config/vlan within the YANG schema.
// Union type can be one of [UnionString, UnionUint16].
type Interface_RoutedVlan_Vlan_Union interface {
	// Union type can be one of [UnionString, UnionUint16]
	Documentation_for_Interface_RoutedVlan_Vlan_Union()
}

// Documentation_for_Interface_RoutedVlan_Vlan_Union ensures that UnionString
// implements the Interface_RoutedVlan_Vlan_Union interface.
func (UnionString) Documentation_for_Interface_RoutedVlan_Vlan_Union() {}

// Documentation_for_Interface_RoutedVlan_Vlan_Union ensures that UnionUint16
// implements the Interface_RoutedVlan_Vlan_Union interface.
func (UnionUint16) Documentation_for_Interface_RoutedVlan_Vlan_Union() {}

// To_Interface_RoutedVlan_Vlan_Union takes an input interface{} and attempts to convert it to a struct
// which implements the Interface_RoutedVlan_Vlan_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *Interface_RoutedVlan) To_Interface_RoutedVlan_Vlan_Union(i interface{}) (Interface_RoutedVlan_Vlan_Union, error) {
	if v, ok := i.(Interface_RoutedVlan_Vlan_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint16:
		return UnionUint16(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to Interface_RoutedVlan_Vlan_Union, unknown union type, got: %T, want any of [string, uint16]", i, i)
}

// Interface_RoutedVlan_Ipv4 represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4 YANG schema element.
type Interface_RoutedVlan_Ipv4 struct {
	ΛMetadata   []ygot.Annotation                              `path:"@" ygotAnnotation:"true"`
	Address     map[string]*Interface_RoutedVlan_Ipv4_Address  `path:"addresses/address" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛAddress    []ygot.Annotation                              `path:"addresses/@address" ygotAnnotation:"true"`
	Counters    *Interface_RoutedVlan_Ipv4_Counters            `path:"state/counters" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛCounters   []ygot.Annotation                              `path:"state/@counters" ygotAnnotation:"true"`
	DhcpClient  *bool                                          `path:"config/dhcp-client" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛDhcpClient []ygot.Annotation                              `path:"config/@dhcp-client" ygotAnnotation:"true"`
	Enabled     *bool                                          `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛEnabled    []ygot.Annotation                              `path:"config/@enabled" ygotAnnotation:"true"`
	Mtu         *uint16                                        `path:"config/mtu" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛMtu        []ygot.Annotation                              `path:"config/@mtu" ygotAnnotation:"true"`
	Neighbor    map[string]*Interface_RoutedVlan_Ipv4_Neighbor `path:"neighbors/neighbor" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛNeighbor   []ygot.Annotation                              `path:"neighbors/@neighbor" ygotAnnotation:"true"`
	ProxyArp    *Interface_RoutedVlan_Ipv4_ProxyArp            `path:"proxy-arp" module:"openconfig-if-ip"`
	ΛProxyArp   []ygot.Annotation                              `path:"@proxy-arp" ygotAnnotation:"true"`
	Unnumbered  *Interface_RoutedVlan_Ipv4_Unnumbered          `path:"unnumbered" module:"openconfig-if-ip"`
	ΛUnnumbered []ygot.Annotation                              `path:"@unnumbered" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv4) IsYANGGoStruct() {}

// NewAddress creates a new entry in the Address list of the
// Interface_RoutedVlan_Ipv4 struct. The keys of the list are populated from the input
// arguments.
func (t *Interface_RoutedVlan_Ipv4) NewAddress(Ip string) (*Interface_RoutedVlan_Ipv4_Address, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Address == nil {
		t.Address = make(map[string]*Interface_RoutedVlan_Ipv4_Address)
	}

	key := Ip

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Address[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Address", key)
	}

	t.Address[key] = &Interface_RoutedVlan_Ipv4_Address{
		Ip: &Ip,
	}

	return t.Address[key], nil
}

// RenameAddress renames an entry in the list Address within
// the Interface_RoutedVlan_Ipv4 struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Interface_RoutedVlan_Ipv4) RenameAddress(oldK, newK string) error {
	if _, ok := t.Address[newK]; ok {
		return fmt.Errorf("key %v already exists in Address", newK)
	}

	e, ok := t.Address[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Address", oldK)
	}
	e.Ip = &newK

	t.Address[newK] = e
	delete(t.Address, oldK)
	return nil
}

// GetOrCreateAddressMap returns the list (map) from Interface_RoutedVlan_Ipv4.
//
// It initializes the field if not already initialized.
func (t *Interface_RoutedVlan_Ipv4) GetOrCreateAddressMap() map[string]*Interface_RoutedVlan_Ipv4_Address {
	if t.Address == nil {
		t.Address = make(map[string]*Interface_RoutedVlan_Ipv4_Address)
	}
	return t.Address
}

// GetOrCreateAddress retrieves the value with the specified keys from
// the receiver Interface_RoutedVlan_Ipv4. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Interface_RoutedVlan_Ipv4) GetOrCreateAddress(Ip string) *Interface_RoutedVlan_Ipv4_Address {

	key := Ip

	if v, ok := t.Address[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAddress(Ip)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAddress got unexpected error: %v", err))
	}
	return v
}

// GetAddress retrieves the value with the specified key from
// the Address map field of Interface_RoutedVlan_Ipv4. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Interface_RoutedVlan_Ipv4) GetAddress(Ip string) *Interface_RoutedVlan_Ipv4_Address {

	if t == nil {
		return nil
	}

	key := Ip

	if lm, ok := t.Address[key]; ok {
		return lm
	}
	return nil
}

// AppendAddress appends the supplied Interface_RoutedVlan_Ipv4_Address struct to the
// list Address of Interface_RoutedVlan_Ipv4. If the key value(s) specified in
// the supplied Interface_RoutedVlan_Ipv4_Address already exist in the list, an error is
// returned.
func (t *Interface_RoutedVlan_Ipv4) AppendAddress(v *Interface_RoutedVlan_Ipv4_Address) error {
	if v.Ip == nil {
		return fmt.Errorf("invalid nil key received for Ip")
	}

	key := *v.Ip

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Address == nil {
		t.Address = make(map[string]*Interface_RoutedVlan_Ipv4_Address)
	}

	if _, ok := t.Address[key]; ok {
		return fmt.Errorf("duplicate key for list Address %v", key)
	}

	t.Address[key] = v
	return nil
}

// NewNeighbor creates a new entry in the Neighbor list of the
// Interface_RoutedVlan_Ipv4 struct. The keys of the list are populated from the input
// arguments.
func (t *Interface_RoutedVlan_Ipv4) NewNeighbor(Ip string) (*Interface_RoutedVlan_Ipv4_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*Interface_RoutedVlan_Ipv4_Neighbor)
	}

	key := Ip

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &Interface_RoutedVlan_Ipv4_Neighbor{
		Ip: &Ip,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the Interface_RoutedVlan_Ipv4 struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Interface_RoutedVlan_Ipv4) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.Ip = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from Interface_RoutedVlan_Ipv4.
//
// It initializes the field if not already initialized.
func (t *Interface_RoutedVlan_Ipv4) GetOrCreateNeighborMap() map[string]*Interface_RoutedVlan_Ipv4_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*Interface_RoutedVlan_Ipv4_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver Interface_RoutedVlan_Ipv4. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Interface_RoutedVlan_Ipv4) GetOrCreateNeighbor(Ip string) *Interface_RoutedVlan_Ipv4_Neighbor {

	key := Ip

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(Ip)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of Interface_RoutedVlan_Ipv4. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Interface_RoutedVlan_Ipv4) GetNeighbor(Ip string) *Interface_RoutedVlan_Ipv4_Neighbor {

	if t == nil {
		return nil
	}

	key := Ip

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied Interface_RoutedVlan_Ipv4_Neighbor struct to the
// list Neighbor of Interface_RoutedVlan_Ipv4. If the key value(s) specified in
// the supplied Interface_RoutedVlan_Ipv4_Neighbor already exist in the list, an error is
// returned.
func (t *Interface_RoutedVlan_Ipv4) AppendNeighbor(v *Interface_RoutedVlan_Ipv4_Neighbor) error {
	if v.Ip == nil {
		return fmt.Errorf("invalid nil key received for Ip")
	}

	key := *v.Ip

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*Interface_RoutedVlan_Ipv4_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *Interface_RoutedVlan_Ipv4) GetOrCreateCounters() *Interface_RoutedVlan_Ipv4_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &Interface_RoutedVlan_Ipv4_Counters{}
	return t.Counters
}

// GetOrCreateProxyArp retrieves the value of the ProxyArp field
// or returns the existing field if it already exists.
func (t *Interface_RoutedVlan_Ipv4) GetOrCreateProxyArp() *Interface_RoutedVlan_Ipv4_ProxyArp {
	if t.ProxyArp != nil {
		return t.ProxyArp
	}
	t.ProxyArp = &Interface_RoutedVlan_Ipv4_ProxyArp{}
	return t.ProxyArp
}

// GetOrCreateUnnumbered retrieves the value of the Unnumbered field
// or returns the existing field if it already exists.
func (t *Interface_RoutedVlan_Ipv4) GetOrCreateUnnumbered() *Interface_RoutedVlan_Ipv4_Unnumbered {
	if t.Unnumbered != nil {
		return t.Unnumbered
	}
	t.Unnumbered = &Interface_RoutedVlan_Ipv4_Unnumbered{}
	return t.Unnumbered
}

// GetCounters returns the value of the Counters struct pointer
// from Interface_RoutedVlan_Ipv4. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_RoutedVlan_Ipv4) GetCounters() *Interface_RoutedVlan_Ipv4_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetProxyArp returns the value of the ProxyArp struct pointer
// from Interface_RoutedVlan_Ipv4. If the receiver or the field ProxyArp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_RoutedVlan_Ipv4) GetProxyArp() *Interface_RoutedVlan_Ipv4_ProxyArp {
	if t != nil && t.ProxyArp != nil {
		return t.ProxyArp
	}
	return nil
}

// GetUnnumbered returns the value of the Unnumbered struct pointer
// from Interface_RoutedVlan_Ipv4. If the receiver or the field Unnumbered is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_RoutedVlan_Ipv4) GetUnnumbered() *Interface_RoutedVlan_Ipv4_Unnumbered {
	if t != nil && t.Unnumbered != nil {
		return t.Unnumbered
	}
	return nil
}

// GetDhcpClient retrieves the value of the leaf DhcpClient from the Interface_RoutedVlan_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DhcpClient is set, it can
// safely use t.GetDhcpClient() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DhcpClient == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4) GetDhcpClient() bool {
	if t == nil || t.DhcpClient == nil {
		return false
	}
	return *t.DhcpClient
}

// GetEnabled retrieves the value of the leaf Enabled from the Interface_RoutedVlan_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return true
	}
	return *t.Enabled
}

// GetMtu retrieves the value of the leaf Mtu from the Interface_RoutedVlan_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mtu is set, it can
// safely use t.GetMtu() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mtu == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4) GetMtu() uint16 {
	if t == nil || t.Mtu == nil {
		return 0
	}
	return *t.Mtu
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv4
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv4) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DhcpClient == nil {
		var v bool = false
		t.DhcpClient = &v
	}
	if t.Enabled == nil {
		var v bool = true
		t.Enabled = &v
	}
	t.Counters.PopulateDefaults()
	t.ProxyArp.PopulateDefaults()
	t.Unnumbered.PopulateDefaults()
	for _, e := range t.Address {
		e.PopulateDefaults()
	}
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv4) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv4.
func (*Interface_RoutedVlan_Ipv4) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv4_Address represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/addresses/address YANG schema element.
type Interface_RoutedVlan_Ipv4_Address struct {
	ΛMetadata     []ygot.Annotation                                      `path:"@" ygotAnnotation:"true"`
	Ip            *string                                                `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"`
	ΛIp           []ygot.Annotation                                      `path:"config/@ip|@ip" ygotAnnotation:"true"`
	Origin        E_IfIp_IpAddressOrigin                                 `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛOrigin       []ygot.Annotation                                      `path:"state/@origin" ygotAnnotation:"true"`
	PrefixLength  *uint8                                                 `path:"config/prefix-length" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPrefixLength []ygot.Annotation                                      `path:"config/@prefix-length" ygotAnnotation:"true"`
	Type          E_IfIp_Ipv4AddressType                                 `path:"config/type" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛType         []ygot.Annotation                                      `path:"config/@type" ygotAnnotation:"true"`
	VrrpGroup     map[uint8]*Interface_RoutedVlan_Ipv4_Address_VrrpGroup `path:"vrrp/vrrp-group" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛVrrpGroup    []ygot.Annotation                                      `path:"vrrp/@vrrp-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Address implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv4_Address) IsYANGGoStruct() {}

// NewVrrpGroup creates a new entry in the VrrpGroup list of the
// Interface_RoutedVlan_Ipv4_Address struct. The keys of the list are populated from the input
// arguments.
func (t *Interface_RoutedVlan_Ipv4_Address) NewVrrpGroup(VirtualRouterId uint8) (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.VrrpGroup == nil {
		t.VrrpGroup = make(map[uint8]*Interface_RoutedVlan_Ipv4_Address_VrrpGroup)
	}

	key := VirtualRouterId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.VrrpGroup[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list VrrpGroup", key)
	}

	t.VrrpGroup[key] = &Interface_RoutedVlan_Ipv4_Address_VrrpGroup{
		VirtualRouterId: &VirtualRouterId,
	}

	return t.VrrpGroup[key], nil
}

// RenameVrrpGroup renames an entry in the list VrrpGroup within
// the Interface_RoutedVlan_Ipv4_Address struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Interface_RoutedVlan_Ipv4_Address) RenameVrrpGroup(oldK, newK uint8) error {
	if _, ok := t.VrrpGroup[newK]; ok {
		return fmt.Errorf("key %v already exists in VrrpGroup", newK)
	}

	e, ok := t.VrrpGroup[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in VrrpGroup", oldK)
	}
	e.VirtualRouterId = &newK

	t.VrrpGroup[newK] = e
	delete(t.VrrpGroup, oldK)
	return nil
}

// GetOrCreateVrrpGroupMap returns the list (map) from Interface_RoutedVlan_Ipv4_Address.
//
// It initializes the field if not already initialized.
func (t *Interface_RoutedVlan_Ipv4_Address) GetOrCreateVrrpGroupMap() map[uint8]*Interface_RoutedVlan_Ipv4_Address_VrrpGroup {
	if t.VrrpGroup == nil {
		t.VrrpGroup = make(map[uint8]*Interface_RoutedVlan_Ipv4_Address_VrrpGroup)
	}
	return t.VrrpGroup
}

// GetOrCreateVrrpGroup retrieves the value with the specified keys from
// the receiver Interface_RoutedVlan_Ipv4_Address. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Interface_RoutedVlan_Ipv4_Address) GetOrCreateVrrpGroup(VirtualRouterId uint8) *Interface_RoutedVlan_Ipv4_Address_VrrpGroup {

	key := VirtualRouterId

	if v, ok := t.VrrpGroup[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewVrrpGroup(VirtualRouterId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateVrrpGroup got unexpected error: %v", err))
	}
	return v
}

// GetVrrpGroup retrieves the value with the specified key from
// the VrrpGroup map field of Interface_RoutedVlan_Ipv4_Address. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Interface_RoutedVlan_Ipv4_Address) GetVrrpGroup(VirtualRouterId uint8) *Interface_RoutedVlan_Ipv4_Address_VrrpGroup {

	if t == nil {
		return nil
	}

	key := VirtualRouterId

	if lm, ok := t.VrrpGroup[key]; ok {
		return lm
	}
	return nil
}

// AppendVrrpGroup appends the supplied Interface_RoutedVlan_Ipv4_Address_VrrpGroup struct to the
// list VrrpGroup of Interface_RoutedVlan_Ipv4_Address. If the key value(s) specified in
// the supplied Interface_RoutedVlan_Ipv4_Address_VrrpGroup already exist in the list, an error is
// returned.
func (t *Interface_RoutedVlan_Ipv4_Address) AppendVrrpGroup(v *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) error {
	if v.VirtualRouterId == nil {
		return fmt.Errorf("invalid nil key received for VirtualRouterId")
	}

	key := *v.VirtualRouterId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.VrrpGroup == nil {
		t.VrrpGroup = make(map[uint8]*Interface_RoutedVlan_Ipv4_Address_VrrpGroup)
	}

	if _, ok := t.VrrpGroup[key]; ok {
		return fmt.Errorf("duplicate key for list VrrpGroup %v", key)
	}

	t.VrrpGroup[key] = v
	return nil
}

// GetIp retrieves the value of the leaf Ip from the Interface_RoutedVlan_Ipv4_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ip is set, it can
// safely use t.GetIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ip == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Address) GetIp() string {
	if t == nil || t.Ip == nil {
		return ""
	}
	return *t.Ip
}

// GetOrigin retrieves the value of the leaf Origin from the Interface_RoutedVlan_Ipv4_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Origin is set, it can
// safely use t.GetOrigin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Origin == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Address) GetOrigin() E_IfIp_IpAddressOrigin {
	if t == nil || t.Origin == 0 {
		return 0
	}
	return t.Origin
}

// GetPrefixLength retrieves the value of the leaf PrefixLength from the Interface_RoutedVlan_Ipv4_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLength is set, it can
// safely use t.GetPrefixLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLength == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Address) GetPrefixLength() uint8 {
	if t == nil || t.PrefixLength == nil {
		return 0
	}
	return *t.PrefixLength
}

// GetType retrieves the value of the leaf Type from the Interface_RoutedVlan_Ipv4_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Address) GetType() E_IfIp_Ipv4AddressType {
	if t == nil || t.Type == 0 {
		return IfIp_Ipv4AddressType_PRIMARY
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv4_Address
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv4_Address) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Type == 0 {
		t.Type = IfIp_Ipv4AddressType_PRIMARY
	}
	for _, e := range t.VrrpGroup {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv4_Address struct, which is a YANG list entry.
func (t *Interface_RoutedVlan_Ipv4_Address) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Ip == nil {
		return nil, fmt.Errorf("nil value for key Ip")
	}

	return map[string]interface{}{
		"ip": *t.Ip,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4_Address) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Address"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4_Address) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv4_Address) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv4_Address.
func (*Interface_RoutedVlan_Ipv4_Address) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv4_Address_VrrpGroup represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group YANG schema element.
type Interface_RoutedVlan_Ipv4_Address_VrrpGroup struct {
	ΛMetadata              []ygot.Annotation                                              `path:"@" ygotAnnotation:"true"`
	AcceptMode             *bool                                                          `path:"config/accept-mode" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛAcceptMode            []ygot.Annotation                                              `path:"config/@accept-mode" ygotAnnotation:"true"`
	AdvertisementInterval  *uint16                                                        `path:"config/advertisement-interval" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛAdvertisementInterval []ygot.Annotation                                              `path:"config/@advertisement-interval" ygotAnnotation:"true"`
	CurrentPriority        *uint8                                                         `path:"state/current-priority" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛCurrentPriority       []ygot.Annotation                                              `path:"state/@current-priority" ygotAnnotation:"true"`
	InterfaceTracking      *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking `path:"interface-tracking" module:"openconfig-if-ip"`
	ΛInterfaceTracking     []ygot.Annotation                                              `path:"@interface-tracking" ygotAnnotation:"true"`
	Preempt                *bool                                                          `path:"config/preempt" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPreempt               []ygot.Annotation                                              `path:"config/@preempt" ygotAnnotation:"true"`
	PreemptDelay           *uint16                                                        `path:"config/preempt-delay" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPreemptDelay          []ygot.Annotation                                              `path:"config/@preempt-delay" ygotAnnotation:"true"`
	Priority               *uint8                                                         `path:"config/priority" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPriority              []ygot.Annotation                                              `path:"config/@priority" ygotAnnotation:"true"`
	VirtualAddress         []string                                                       `path:"config/virtual-address" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛVirtualAddress        []ygot.Annotation                                              `path:"config/@virtual-address" ygotAnnotation:"true"`
	VirtualRouterId        *uint8                                                         `path:"config/virtual-router-id|virtual-router-id" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"`
	ΛVirtualRouterId       []ygot.Annotation                                              `path:"config/@virtual-router-id|@virtual-router-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Address_VrrpGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup) IsYANGGoStruct() {}

// GetOrCreateInterfaceTracking retrieves the value of the InterfaceTracking field
// or returns the existing field if it already exists.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) GetOrCreateInterfaceTracking() *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking {
	if t.InterfaceTracking != nil {
		return t.InterfaceTracking
	}
	t.InterfaceTracking = &Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking{}
	return t.InterfaceTracking
}

// GetInterfaceTracking returns the value of the InterfaceTracking struct pointer
// from Interface_RoutedVlan_Ipv4_Address_VrrpGroup. If the receiver or the field InterfaceTracking is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) GetInterfaceTracking() *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking {
	if t != nil && t.InterfaceTracking != nil {
		return t.InterfaceTracking
	}
	return nil
}

// GetAcceptMode retrieves the value of the leaf AcceptMode from the Interface_RoutedVlan_Ipv4_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AcceptMode is set, it can
// safely use t.GetAcceptMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AcceptMode == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) GetAcceptMode() bool {
	if t == nil || t.AcceptMode == nil {
		return false
	}
	return *t.AcceptMode
}

// GetAdvertisementInterval retrieves the value of the leaf AdvertisementInterval from the Interface_RoutedVlan_Ipv4_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdvertisementInterval is set, it can
// safely use t.GetAdvertisementInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdvertisementInterval == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) GetAdvertisementInterval() uint16 {
	if t == nil || t.AdvertisementInterval == nil {
		return 100
	}
	return *t.AdvertisementInterval
}

// GetCurrentPriority retrieves the value of the leaf CurrentPriority from the Interface_RoutedVlan_Ipv4_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CurrentPriority is set, it can
// safely use t.GetCurrentPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CurrentPriority == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) GetCurrentPriority() uint8 {
	if t == nil || t.CurrentPriority == nil {
		return 0
	}
	return *t.CurrentPriority
}

// GetPreempt retrieves the value of the leaf Preempt from the Interface_RoutedVlan_Ipv4_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Preempt is set, it can
// safely use t.GetPreempt() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Preempt == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) GetPreempt() bool {
	if t == nil || t.Preempt == nil {
		return true
	}
	return *t.Preempt
}

// GetPreemptDelay retrieves the value of the leaf PreemptDelay from the Interface_RoutedVlan_Ipv4_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreemptDelay is set, it can
// safely use t.GetPreemptDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreemptDelay == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) GetPreemptDelay() uint16 {
	if t == nil || t.PreemptDelay == nil {
		return 0
	}
	return *t.PreemptDelay
}

// GetPriority retrieves the value of the leaf Priority from the Interface_RoutedVlan_Ipv4_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) GetPriority() uint8 {
	if t == nil || t.Priority == nil {
		return 100
	}
	return *t.Priority
}

// GetVirtualAddress retrieves the value of the leaf VirtualAddress from the Interface_RoutedVlan_Ipv4_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VirtualAddress is set, it can
// safely use t.GetVirtualAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VirtualAddress == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) GetVirtualAddress() []string {
	if t == nil || t.VirtualAddress == nil {
		return nil
	}
	return t.VirtualAddress
}

// GetVirtualRouterId retrieves the value of the leaf VirtualRouterId from the Interface_RoutedVlan_Ipv4_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VirtualRouterId is set, it can
// safely use t.GetVirtualRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VirtualRouterId == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) GetVirtualRouterId() uint8 {
	if t == nil || t.VirtualRouterId == nil {
		return 0
	}
	return *t.VirtualRouterId
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv4_Address_VrrpGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AcceptMode == nil {
		var v bool = false
		t.AcceptMode = &v
	}
	if t.AdvertisementInterval == nil {
		var v uint16 = 100
		t.AdvertisementInterval = &v
	}
	if t.Preempt == nil {
		var v bool = true
		t.Preempt = &v
	}
	if t.PreemptDelay == nil {
		var v uint16 = 0
		t.PreemptDelay = &v
	}
	if t.Priority == nil {
		var v uint8 = 100
		t.Priority = &v
	}
	t.InterfaceTracking.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv4_Address_VrrpGroup struct, which is a YANG list entry.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) ΛListKeyMap() (map[string]interface{}, error) {
	if t.VirtualRouterId == nil {
		return nil, fmt.Errorf("nil value for key VirtualRouterId")
	}

	return map[string]interface{}{
		"virtual-router-id": *t.VirtualRouterId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Address_VrrpGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv4_Address_VrrpGroup.
func (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group/interface-tracking YANG schema element.
type Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	PriorityDecrement  *uint8            `path:"config/priority-decrement" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPriorityDecrement []ygot.Annotation `path:"config/@priority-decrement" ygotAnnotation:"true"`
	TrackInterface     []string          `path:"config/track-interface" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛTrackInterface    []ygot.Annotation `path:"config/@track-interface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) IsYANGGoStruct() {}

// GetPriorityDecrement retrieves the value of the leaf PriorityDecrement from the Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PriorityDecrement is set, it can
// safely use t.GetPriorityDecrement() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PriorityDecrement == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) GetPriorityDecrement() uint8 {
	if t == nil || t.PriorityDecrement == nil {
		return 0
	}
	return *t.PriorityDecrement
}

// GetTrackInterface retrieves the value of the leaf TrackInterface from the Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TrackInterface is set, it can
// safely use t.GetTrackInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TrackInterface == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) GetTrackInterface() []string {
	if t == nil || t.TrackInterface == nil {
		return nil
	}
	return t.TrackInterface
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PriorityDecrement == nil {
		var v uint8 = 0
		t.PriorityDecrement = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking.
func (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv4_Counters represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/state/counters YANG schema element.
type Interface_RoutedVlan_Ipv4_Counters struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	InDiscardedPkts     *uint64           `path:"in-discarded-pkts" module:"openconfig-if-ip"`
	ΛInDiscardedPkts    []ygot.Annotation `path:"@in-discarded-pkts" ygotAnnotation:"true"`
	InErrorPkts         *uint64           `path:"in-error-pkts" module:"openconfig-if-ip"`
	ΛInErrorPkts        []ygot.Annotation `path:"@in-error-pkts" ygotAnnotation:"true"`
	InForwardedOctets   *uint64           `path:"in-forwarded-octets" module:"openconfig-if-ip"`
	ΛInForwardedOctets  []ygot.Annotation `path:"@in-forwarded-octets" ygotAnnotation:"true"`
	InForwardedPkts     *uint64           `path:"in-forwarded-pkts" module:"openconfig-if-ip"`
	ΛInForwardedPkts    []ygot.Annotation `path:"@in-forwarded-pkts" ygotAnnotation:"true"`
	InMulticastOctets   *uint64           `path:"in-multicast-octets" module:"openconfig-if-ip"`
	ΛInMulticastOctets  []ygot.Annotation `path:"@in-multicast-octets" ygotAnnotation:"true"`
	InMulticastPkts     *uint64           `path:"in-multicast-pkts" module:"openconfig-if-ip"`
	ΛInMulticastPkts    []ygot.Annotation `path:"@in-multicast-pkts" ygotAnnotation:"true"`
	InOctets            *uint64           `path:"in-octets" module:"openconfig-if-ip"`
	ΛInOctets           []ygot.Annotation `path:"@in-octets" ygotAnnotation:"true"`
	InPkts              *uint64           `path:"in-pkts" module:"openconfig-if-ip"`
	ΛInPkts             []ygot.Annotation `path:"@in-pkts" ygotAnnotation:"true"`
	OutDiscardedPkts    *uint64           `path:"out-discarded-pkts" module:"openconfig-if-ip"`
	ΛOutDiscardedPkts   []ygot.Annotation `path:"@out-discarded-pkts" ygotAnnotation:"true"`
	OutErrorPkts        *uint64           `path:"out-error-pkts" module:"openconfig-if-ip"`
	ΛOutErrorPkts       []ygot.Annotation `path:"@out-error-pkts" ygotAnnotation:"true"`
	OutForwardedOctets  *uint64           `path:"out-forwarded-octets" module:"openconfig-if-ip"`
	ΛOutForwardedOctets []ygot.Annotation `path:"@out-forwarded-octets" ygotAnnotation:"true"`
	OutForwardedPkts    *uint64           `path:"out-forwarded-pkts" module:"openconfig-if-ip"`
	ΛOutForwardedPkts   []ygot.Annotation `path:"@out-forwarded-pkts" ygotAnnotation:"true"`
	OutMulticastOctets  *uint64           `path:"out-multicast-octets" module:"openconfig-if-ip"`
	ΛOutMulticastOctets []ygot.Annotation `path:"@out-multicast-octets" ygotAnnotation:"true"`
	OutMulticastPkts    *uint64           `path:"out-multicast-pkts" module:"openconfig-if-ip"`
	ΛOutMulticastPkts   []ygot.Annotation `path:"@out-multicast-pkts" ygotAnnotation:"true"`
	OutOctets           *uint64           `path:"out-octets" module:"openconfig-if-ip"`
	ΛOutOctets          []ygot.Annotation `path:"@out-octets" ygotAnnotation:"true"`
	OutPkts             *uint64           `path:"out-pkts" module:"openconfig-if-ip"`
	ΛOutPkts            []ygot.Annotation `path:"@out-pkts" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv4_Counters) IsYANGGoStruct() {}

// GetInDiscardedPkts retrieves the value of the leaf InDiscardedPkts from the Interface_RoutedVlan_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InDiscardedPkts is set, it can
// safely use t.GetInDiscardedPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InDiscardedPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Counters) GetInDiscardedPkts() uint64 {
	if t == nil || t.InDiscardedPkts == nil {
		return 0
	}
	return *t.InDiscardedPkts
}

// GetInErrorPkts retrieves the value of the leaf InErrorPkts from the Interface_RoutedVlan_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InErrorPkts is set, it can
// safely use t.GetInErrorPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InErrorPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Counters) GetInErrorPkts() uint64 {
	if t == nil || t.InErrorPkts == nil {
		return 0
	}
	return *t.InErrorPkts
}

// GetInForwardedOctets retrieves the value of the leaf InForwardedOctets from the Interface_RoutedVlan_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InForwardedOctets is set, it can
// safely use t.GetInForwardedOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InForwardedOctets == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Counters) GetInForwardedOctets() uint64 {
	if t == nil || t.InForwardedOctets == nil {
		return 0
	}
	return *t.InForwardedOctets
}

// GetInForwardedPkts retrieves the value of the leaf InForwardedPkts from the Interface_RoutedVlan_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InForwardedPkts is set, it can
// safely use t.GetInForwardedPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InForwardedPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Counters) GetInForwardedPkts() uint64 {
	if t == nil || t.InForwardedPkts == nil {
		return 0
	}
	return *t.InForwardedPkts
}

// GetInMulticastOctets retrieves the value of the leaf InMulticastOctets from the Interface_RoutedVlan_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMulticastOctets is set, it can
// safely use t.GetInMulticastOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMulticastOctets == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Counters) GetInMulticastOctets() uint64 {
	if t == nil || t.InMulticastOctets == nil {
		return 0
	}
	return *t.InMulticastOctets
}

// GetInMulticastPkts retrieves the value of the leaf InMulticastPkts from the Interface_RoutedVlan_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMulticastPkts is set, it can
// safely use t.GetInMulticastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMulticastPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Counters) GetInMulticastPkts() uint64 {
	if t == nil || t.InMulticastPkts == nil {
		return 0
	}
	return *t.InMulticastPkts
}

// GetInOctets retrieves the value of the leaf InOctets from the Interface_RoutedVlan_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InOctets is set, it can
// safely use t.GetInOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InOctets == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Counters) GetInOctets() uint64 {
	if t == nil || t.InOctets == nil {
		return 0
	}
	return *t.InOctets
}

// GetInPkts retrieves the value of the leaf InPkts from the Interface_RoutedVlan_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPkts is set, it can
// safely use t.GetInPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Counters) GetInPkts() uint64 {
	if t == nil || t.InPkts == nil {
		return 0
	}
	return *t.InPkts
}

// GetOutDiscardedPkts retrieves the value of the leaf OutDiscardedPkts from the Interface_RoutedVlan_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutDiscardedPkts is set, it can
// safely use t.GetOutDiscardedPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutDiscardedPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Counters) GetOutDiscardedPkts() uint64 {
	if t == nil || t.OutDiscardedPkts == nil {
		return 0
	}
	return *t.OutDiscardedPkts
}

// GetOutErrorPkts retrieves the value of the leaf OutErrorPkts from the Interface_RoutedVlan_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutErrorPkts is set, it can
// safely use t.GetOutErrorPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutErrorPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Counters) GetOutErrorPkts() uint64 {
	if t == nil || t.OutErrorPkts == nil {
		return 0
	}
	return *t.OutErrorPkts
}

// GetOutForwardedOctets retrieves the value of the leaf OutForwardedOctets from the Interface_RoutedVlan_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutForwardedOctets is set, it can
// safely use t.GetOutForwardedOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutForwardedOctets == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Counters) GetOutForwardedOctets() uint64 {
	if t == nil || t.OutForwardedOctets == nil {
		return 0
	}
	return *t.OutForwardedOctets
}

// GetOutForwardedPkts retrieves the value of the leaf OutForwardedPkts from the Interface_RoutedVlan_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutForwardedPkts is set, it can
// safely use t.GetOutForwardedPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutForwardedPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Counters) GetOutForwardedPkts() uint64 {
	if t == nil || t.OutForwardedPkts == nil {
		return 0
	}
	return *t.OutForwardedPkts
}

// GetOutMulticastOctets retrieves the value of the leaf OutMulticastOctets from the Interface_RoutedVlan_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutMulticastOctets is set, it can
// safely use t.GetOutMulticastOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutMulticastOctets == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Counters) GetOutMulticastOctets() uint64 {
	if t == nil || t.OutMulticastOctets == nil {
		return 0
	}
	return *t.OutMulticastOctets
}

// GetOutMulticastPkts retrieves the value of the leaf OutMulticastPkts from the Interface_RoutedVlan_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutMulticastPkts is set, it can
// safely use t.GetOutMulticastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutMulticastPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Counters) GetOutMulticastPkts() uint64 {
	if t == nil || t.OutMulticastPkts == nil {
		return 0
	}
	return *t.OutMulticastPkts
}

// GetOutOctets retrieves the value of the leaf OutOctets from the Interface_RoutedVlan_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutOctets is set, it can
// safely use t.GetOutOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutOctets == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Counters) GetOutOctets() uint64 {
	if t == nil || t.OutOctets == nil {
		return 0
	}
	return *t.OutOctets
}

// GetOutPkts retrieves the value of the leaf OutPkts from the Interface_RoutedVlan_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPkts is set, it can
// safely use t.GetOutPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Counters) GetOutPkts() uint64 {
	if t == nil || t.OutPkts == nil {
		return 0
	}
	return *t.OutPkts
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv4_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv4_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv4_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv4_Counters.
func (*Interface_RoutedVlan_Ipv4_Counters) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv4_Neighbor represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/neighbors/neighbor YANG schema element.
type Interface_RoutedVlan_Ipv4_Neighbor struct {
	ΛMetadata         []ygot.Annotation     `path:"@" ygotAnnotation:"true"`
	Ip                *string               `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"`
	ΛIp               []ygot.Annotation     `path:"config/@ip|@ip" ygotAnnotation:"true"`
	LinkLayerAddress  *string               `path:"config/link-layer-address" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛLinkLayerAddress []ygot.Annotation     `path:"config/@link-layer-address" ygotAnnotation:"true"`
	Origin            E_IfIp_NeighborOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛOrigin           []ygot.Annotation     `path:"state/@origin" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv4_Neighbor) IsYANGGoStruct() {}

// GetIp retrieves the value of the leaf Ip from the Interface_RoutedVlan_Ipv4_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ip is set, it can
// safely use t.GetIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ip == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Neighbor) GetIp() string {
	if t == nil || t.Ip == nil {
		return ""
	}
	return *t.Ip
}

// GetLinkLayerAddress retrieves the value of the leaf LinkLayerAddress from the Interface_RoutedVlan_Ipv4_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkLayerAddress is set, it can
// safely use t.GetLinkLayerAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkLayerAddress == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Neighbor) GetLinkLayerAddress() string {
	if t == nil || t.LinkLayerAddress == nil {
		return ""
	}
	return *t.LinkLayerAddress
}

// GetOrigin retrieves the value of the leaf Origin from the Interface_RoutedVlan_Ipv4_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Origin is set, it can
// safely use t.GetOrigin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Origin == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Neighbor) GetOrigin() E_IfIp_NeighborOrigin {
	if t == nil || t.Origin == 0 {
		return 0
	}
	return t.Origin
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv4_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv4_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv4_Neighbor struct, which is a YANG list entry.
func (t *Interface_RoutedVlan_Ipv4_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Ip == nil {
		return nil, fmt.Errorf("nil value for key Ip")
	}

	return map[string]interface{}{
		"ip": *t.Ip,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv4_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv4_Neighbor.
func (*Interface_RoutedVlan_Ipv4_Neighbor) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv4_ProxyArp represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/proxy-arp YANG schema element.
type Interface_RoutedVlan_Ipv4_ProxyArp struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Mode      E_ProxyArp_Mode   `path:"config/mode" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛMode     []ygot.Annotation `path:"config/@mode" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_ProxyArp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv4_ProxyArp) IsYANGGoStruct() {}

// GetMode retrieves the value of the leaf Mode from the Interface_RoutedVlan_Ipv4_ProxyArp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mode is set, it can
// safely use t.GetMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mode == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_ProxyArp) GetMode() E_ProxyArp_Mode {
	if t == nil || t.Mode == 0 {
		return ProxyArp_Mode_DISABLE
	}
	return t.Mode
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv4_ProxyArp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv4_ProxyArp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Mode == 0 {
		t.Mode = ProxyArp_Mode_DISABLE
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4_ProxyArp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_ProxyArp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4_ProxyArp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv4_ProxyArp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv4_ProxyArp.
func (*Interface_RoutedVlan_Ipv4_ProxyArp) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv4_Unnumbered represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/unnumbered YANG schema element.
type Interface_RoutedVlan_Ipv4_Unnumbered struct {
	ΛMetadata     []ygot.Annotation                                  `path:"@" ygotAnnotation:"true"`
	Enabled       *bool                                              `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛEnabled      []ygot.Annotation                                  `path:"config/@enabled" ygotAnnotation:"true"`
	InterfaceRef  *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef `path:"interface-ref" module:"openconfig-if-ip"`
	ΛInterfaceRef []ygot.Annotation                                  `path:"@interface-ref" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Unnumbered implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv4_Unnumbered) IsYANGGoStruct() {}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *Interface_RoutedVlan_Ipv4_Unnumbered) GetOrCreateInterfaceRef() *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef{}
	return t.InterfaceRef
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from Interface_RoutedVlan_Ipv4_Unnumbered. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_RoutedVlan_Ipv4_Unnumbered) GetInterfaceRef() *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetEnabled retrieves the value of the leaf Enabled from the Interface_RoutedVlan_Ipv4_Unnumbered
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Unnumbered) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv4_Unnumbered
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv4_Unnumbered) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	t.InterfaceRef.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4_Unnumbered) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Unnumbered"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4_Unnumbered) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv4_Unnumbered) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv4_Unnumbered.
func (*Interface_RoutedVlan_Ipv4_Unnumbered) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/unnumbered/interface-ref YANG schema element.
type Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef.
func (*Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv6 represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6 YANG schema element.
type Interface_RoutedVlan_Ipv6 struct {
	ΛMetadata               []ygot.Annotation                              `path:"@" ygotAnnotation:"true"`
	Address                 map[string]*Interface_RoutedVlan_Ipv6_Address  `path:"addresses/address" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛAddress                []ygot.Annotation                              `path:"addresses/@address" ygotAnnotation:"true"`
	Counters                *Interface_RoutedVlan_Ipv6_Counters            `path:"state/counters" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛCounters               []ygot.Annotation                              `path:"state/@counters" ygotAnnotation:"true"`
	DhcpClient              *bool                                          `path:"config/dhcp-client" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛDhcpClient             []ygot.Annotation                              `path:"config/@dhcp-client" ygotAnnotation:"true"`
	DupAddrDetectTransmits  *uint32                                        `path:"config/dup-addr-detect-transmits" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛDupAddrDetectTransmits []ygot.Annotation                              `path:"config/@dup-addr-detect-transmits" ygotAnnotation:"true"`
	Enabled                 *bool                                          `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛEnabled                []ygot.Annotation                              `path:"config/@enabled" ygotAnnotation:"true"`
	Mtu                     *uint32                                        `path:"config/mtu" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛMtu                    []ygot.Annotation                              `path:"config/@mtu" ygotAnnotation:"true"`
	Neighbor                map[string]*Interface_RoutedVlan_Ipv6_Neighbor `path:"neighbors/neighbor" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛNeighbor               []ygot.Annotation                              `path:"neighbors/@neighbor" ygotAnnotation:"true"`
	RouterAdvertisement     *Interface_RoutedVlan_Ipv6_RouterAdvertisement `path:"router-advertisement" module:"openconfig-if-ip"`
	ΛRouterAdvertisement    []ygot.Annotation                              `path:"@router-advertisement" ygotAnnotation:"true"`
	Unnumbered              *Interface_RoutedVlan_Ipv6_Unnumbered          `path:"unnumbered" module:"openconfig-if-ip"`
	ΛUnnumbered             []ygot.Annotation                              `path:"@unnumbered" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv6) IsYANGGoStruct() {}

// NewAddress creates a new entry in the Address list of the
// Interface_RoutedVlan_Ipv6 struct. The keys of the list are populated from the input
// arguments.
func (t *Interface_RoutedVlan_Ipv6) NewAddress(Ip string) (*Interface_RoutedVlan_Ipv6_Address, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Address == nil {
		t.Address = make(map[string]*Interface_RoutedVlan_Ipv6_Address)
	}

	key := Ip

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Address[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Address", key)
	}

	t.Address[key] = &Interface_RoutedVlan_Ipv6_Address{
		Ip: &Ip,
	}

	return t.Address[key], nil
}

// RenameAddress renames an entry in the list Address within
// the Interface_RoutedVlan_Ipv6 struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Interface_RoutedVlan_Ipv6) RenameAddress(oldK, newK string) error {
	if _, ok := t.Address[newK]; ok {
		return fmt.Errorf("key %v already exists in Address", newK)
	}

	e, ok := t.Address[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Address", oldK)
	}
	e.Ip = &newK

	t.Address[newK] = e
	delete(t.Address, oldK)
	return nil
}

// GetOrCreateAddressMap returns the list (map) from Interface_RoutedVlan_Ipv6.
//
// It initializes the field if not already initialized.
func (t *Interface_RoutedVlan_Ipv6) GetOrCreateAddressMap() map[string]*Interface_RoutedVlan_Ipv6_Address {
	if t.Address == nil {
		t.Address = make(map[string]*Interface_RoutedVlan_Ipv6_Address)
	}
	return t.Address
}

// GetOrCreateAddress retrieves the value with the specified keys from
// the receiver Interface_RoutedVlan_Ipv6. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Interface_RoutedVlan_Ipv6) GetOrCreateAddress(Ip string) *Interface_RoutedVlan_Ipv6_Address {

	key := Ip

	if v, ok := t.Address[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAddress(Ip)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAddress got unexpected error: %v", err))
	}
	return v
}

// GetAddress retrieves the value with the specified key from
// the Address map field of Interface_RoutedVlan_Ipv6. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Interface_RoutedVlan_Ipv6) GetAddress(Ip string) *Interface_RoutedVlan_Ipv6_Address {

	if t == nil {
		return nil
	}

	key := Ip

	if lm, ok := t.Address[key]; ok {
		return lm
	}
	return nil
}

// AppendAddress appends the supplied Interface_RoutedVlan_Ipv6_Address struct to the
// list Address of Interface_RoutedVlan_Ipv6. If the key value(s) specified in
// the supplied Interface_RoutedVlan_Ipv6_Address already exist in the list, an error is
// returned.
func (t *Interface_RoutedVlan_Ipv6) AppendAddress(v *Interface_RoutedVlan_Ipv6_Address) error {
	if v.Ip == nil {
		return fmt.Errorf("invalid nil key received for Ip")
	}

	key := *v.Ip

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Address == nil {
		t.Address = make(map[string]*Interface_RoutedVlan_Ipv6_Address)
	}

	if _, ok := t.Address[key]; ok {
		return fmt.Errorf("duplicate key for list Address %v", key)
	}

	t.Address[key] = v
	return nil
}

// NewNeighbor creates a new entry in the Neighbor list of the
// Interface_RoutedVlan_Ipv6 struct. The keys of the list are populated from the input
// arguments.
func (t *Interface_RoutedVlan_Ipv6) NewNeighbor(Ip string) (*Interface_RoutedVlan_Ipv6_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*Interface_RoutedVlan_Ipv6_Neighbor)
	}

	key := Ip

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &Interface_RoutedVlan_Ipv6_Neighbor{
		Ip: &Ip,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the Interface_RoutedVlan_Ipv6 struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Interface_RoutedVlan_Ipv6) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.Ip = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from Interface_RoutedVlan_Ipv6.
//
// It initializes the field if not already initialized.
func (t *Interface_RoutedVlan_Ipv6) GetOrCreateNeighborMap() map[string]*Interface_RoutedVlan_Ipv6_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*Interface_RoutedVlan_Ipv6_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver Interface_RoutedVlan_Ipv6. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Interface_RoutedVlan_Ipv6) GetOrCreateNeighbor(Ip string) *Interface_RoutedVlan_Ipv6_Neighbor {

	key := Ip

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(Ip)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of Interface_RoutedVlan_Ipv6. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Interface_RoutedVlan_Ipv6) GetNeighbor(Ip string) *Interface_RoutedVlan_Ipv6_Neighbor {

	if t == nil {
		return nil
	}

	key := Ip

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied Interface_RoutedVlan_Ipv6_Neighbor struct to the
// list Neighbor of Interface_RoutedVlan_Ipv6. If the key value(s) specified in
// the supplied Interface_RoutedVlan_Ipv6_Neighbor already exist in the list, an error is
// returned.
func (t *Interface_RoutedVlan_Ipv6) AppendNeighbor(v *Interface_RoutedVlan_Ipv6_Neighbor) error {
	if v.Ip == nil {
		return fmt.Errorf("invalid nil key received for Ip")
	}

	key := *v.Ip

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*Interface_RoutedVlan_Ipv6_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *Interface_RoutedVlan_Ipv6) GetOrCreateCounters() *Interface_RoutedVlan_Ipv6_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &Interface_RoutedVlan_Ipv6_Counters{}
	return t.Counters
}

// GetOrCreateRouterAdvertisement retrieves the value of the RouterAdvertisement field
// or returns the existing field if it already exists.
func (t *Interface_RoutedVlan_Ipv6) GetOrCreateRouterAdvertisement() *Interface_RoutedVlan_Ipv6_RouterAdvertisement {
	if t.RouterAdvertisement != nil {
		return t.RouterAdvertisement
	}
	t.RouterAdvertisement = &Interface_RoutedVlan_Ipv6_RouterAdvertisement{}
	return t.RouterAdvertisement
}

// GetOrCreateUnnumbered retrieves the value of the Unnumbered field
// or returns the existing field if it already exists.
func (t *Interface_RoutedVlan_Ipv6) GetOrCreateUnnumbered() *Interface_RoutedVlan_Ipv6_Unnumbered {
	if t.Unnumbered != nil {
		return t.Unnumbered
	}
	t.Unnumbered = &Interface_RoutedVlan_Ipv6_Unnumbered{}
	return t.Unnumbered
}

// GetCounters returns the value of the Counters struct pointer
// from Interface_RoutedVlan_Ipv6. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_RoutedVlan_Ipv6) GetCounters() *Interface_RoutedVlan_Ipv6_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetRouterAdvertisement returns the value of the RouterAdvertisement struct pointer
// from Interface_RoutedVlan_Ipv6. If the receiver or the field RouterAdvertisement is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_RoutedVlan_Ipv6) GetRouterAdvertisement() *Interface_RoutedVlan_Ipv6_RouterAdvertisement {
	if t != nil && t.RouterAdvertisement != nil {
		return t.RouterAdvertisement
	}
	return nil
}

// GetUnnumbered returns the value of the Unnumbered struct pointer
// from Interface_RoutedVlan_Ipv6. If the receiver or the field Unnumbered is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_RoutedVlan_Ipv6) GetUnnumbered() *Interface_RoutedVlan_Ipv6_Unnumbered {
	if t != nil && t.Unnumbered != nil {
		return t.Unnumbered
	}
	return nil
}

// GetDhcpClient retrieves the value of the leaf DhcpClient from the Interface_RoutedVlan_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DhcpClient is set, it can
// safely use t.GetDhcpClient() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DhcpClient == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6) GetDhcpClient() bool {
	if t == nil || t.DhcpClient == nil {
		return false
	}
	return *t.DhcpClient
}

// GetDupAddrDetectTransmits retrieves the value of the leaf DupAddrDetectTransmits from the Interface_RoutedVlan_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DupAddrDetectTransmits is set, it can
// safely use t.GetDupAddrDetectTransmits() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DupAddrDetectTransmits == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6) GetDupAddrDetectTransmits() uint32 {
	if t == nil || t.DupAddrDetectTransmits == nil {
		return 1
	}
	return *t.DupAddrDetectTransmits
}

// GetEnabled retrieves the value of the leaf Enabled from the Interface_RoutedVlan_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return true
	}
	return *t.Enabled
}

// GetMtu retrieves the value of the leaf Mtu from the Interface_RoutedVlan_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mtu is set, it can
// safely use t.GetMtu() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mtu == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6) GetMtu() uint32 {
	if t == nil || t.Mtu == nil {
		return 0
	}
	return *t.Mtu
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv6
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv6) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DhcpClient == nil {
		var v bool = false
		t.DhcpClient = &v
	}
	if t.DupAddrDetectTransmits == nil {
		var v uint32 = 1
		t.DupAddrDetectTransmits = &v
	}
	if t.Enabled == nil {
		var v bool = true
		t.Enabled = &v
	}
	t.Counters.PopulateDefaults()
	t.RouterAdvertisement.PopulateDefaults()
	t.Unnumbered.PopulateDefaults()
	for _, e := range t.Address {
		e.PopulateDefaults()
	}
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv6) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv6.
func (*Interface_RoutedVlan_Ipv6) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv6_Address represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/addresses/address YANG schema element.
type Interface_RoutedVlan_Ipv6_Address struct {
	ΛMetadata     []ygot.Annotation                                      `path:"@" ygotAnnotation:"true"`
	Ip            *string                                                `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"`
	ΛIp           []ygot.Annotation                                      `path:"config/@ip|@ip" ygotAnnotation:"true"`
	Origin        E_IfIp_IpAddressOrigin                                 `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛOrigin       []ygot.Annotation                                      `path:"state/@origin" ygotAnnotation:"true"`
	PrefixLength  *uint8                                                 `path:"config/prefix-length" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPrefixLength []ygot.Annotation                                      `path:"config/@prefix-length" ygotAnnotation:"true"`
	Status        E_Address_Status                                       `path:"state/status" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛStatus       []ygot.Annotation                                      `path:"state/@status" ygotAnnotation:"true"`
	Type          E_InetTypes_Ipv6AddressType                            `path:"config/type" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛType         []ygot.Annotation                                      `path:"config/@type" ygotAnnotation:"true"`
	VrrpGroup     map[uint8]*Interface_RoutedVlan_Ipv6_Address_VrrpGroup `path:"vrrp/vrrp-group" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛVrrpGroup    []ygot.Annotation                                      `path:"vrrp/@vrrp-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Address implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv6_Address) IsYANGGoStruct() {}

// NewVrrpGroup creates a new entry in the VrrpGroup list of the
// Interface_RoutedVlan_Ipv6_Address struct. The keys of the list are populated from the input
// arguments.
func (t *Interface_RoutedVlan_Ipv6_Address) NewVrrpGroup(VirtualRouterId uint8) (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.VrrpGroup == nil {
		t.VrrpGroup = make(map[uint8]*Interface_RoutedVlan_Ipv6_Address_VrrpGroup)
	}

	key := VirtualRouterId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.VrrpGroup[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list VrrpGroup", key)
	}

	t.VrrpGroup[key] = &Interface_RoutedVlan_Ipv6_Address_VrrpGroup{
		VirtualRouterId: &VirtualRouterId,
	}

	return t.VrrpGroup[key], nil
}

// RenameVrrpGroup renames an entry in the list VrrpGroup within
// the Interface_RoutedVlan_Ipv6_Address struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Interface_RoutedVlan_Ipv6_Address) RenameVrrpGroup(oldK, newK uint8) error {
	if _, ok := t.VrrpGroup[newK]; ok {
		return fmt.Errorf("key %v already exists in VrrpGroup", newK)
	}

	e, ok := t.VrrpGroup[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in VrrpGroup", oldK)
	}
	e.VirtualRouterId = &newK

	t.VrrpGroup[newK] = e
	delete(t.VrrpGroup, oldK)
	return nil
}

// GetOrCreateVrrpGroupMap returns the list (map) from Interface_RoutedVlan_Ipv6_Address.
//
// It initializes the field if not already initialized.
func (t *Interface_RoutedVlan_Ipv6_Address) GetOrCreateVrrpGroupMap() map[uint8]*Interface_RoutedVlan_Ipv6_Address_VrrpGroup {
	if t.VrrpGroup == nil {
		t.VrrpGroup = make(map[uint8]*Interface_RoutedVlan_Ipv6_Address_VrrpGroup)
	}
	return t.VrrpGroup
}

// GetOrCreateVrrpGroup retrieves the value with the specified keys from
// the receiver Interface_RoutedVlan_Ipv6_Address. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Interface_RoutedVlan_Ipv6_Address) GetOrCreateVrrpGroup(VirtualRouterId uint8) *Interface_RoutedVlan_Ipv6_Address_VrrpGroup {

	key := VirtualRouterId

	if v, ok := t.VrrpGroup[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewVrrpGroup(VirtualRouterId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateVrrpGroup got unexpected error: %v", err))
	}
	return v
}

// GetVrrpGroup retrieves the value with the specified key from
// the VrrpGroup map field of Interface_RoutedVlan_Ipv6_Address. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Interface_RoutedVlan_Ipv6_Address) GetVrrpGroup(VirtualRouterId uint8) *Interface_RoutedVlan_Ipv6_Address_VrrpGroup {

	if t == nil {
		return nil
	}

	key := VirtualRouterId

	if lm, ok := t.VrrpGroup[key]; ok {
		return lm
	}
	return nil
}

// AppendVrrpGroup appends the supplied Interface_RoutedVlan_Ipv6_Address_VrrpGroup struct to the
// list VrrpGroup of Interface_RoutedVlan_Ipv6_Address. If the key value(s) specified in
// the supplied Interface_RoutedVlan_Ipv6_Address_VrrpGroup already exist in the list, an error is
// returned.
func (t *Interface_RoutedVlan_Ipv6_Address) AppendVrrpGroup(v *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) error {
	if v.VirtualRouterId == nil {
		return fmt.Errorf("invalid nil key received for VirtualRouterId")
	}

	key := *v.VirtualRouterId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.VrrpGroup == nil {
		t.VrrpGroup = make(map[uint8]*Interface_RoutedVlan_Ipv6_Address_VrrpGroup)
	}

	if _, ok := t.VrrpGroup[key]; ok {
		return fmt.Errorf("duplicate key for list VrrpGroup %v", key)
	}

	t.VrrpGroup[key] = v
	return nil
}

// GetIp retrieves the value of the leaf Ip from the Interface_RoutedVlan_Ipv6_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ip is set, it can
// safely use t.GetIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ip == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Address) GetIp() string {
	if t == nil || t.Ip == nil {
		return ""
	}
	return *t.Ip
}

// GetOrigin retrieves the value of the leaf Origin from the Interface_RoutedVlan_Ipv6_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Origin is set, it can
// safely use t.GetOrigin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Origin == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Address) GetOrigin() E_IfIp_IpAddressOrigin {
	if t == nil || t.Origin == 0 {
		return 0
	}
	return t.Origin
}

// GetPrefixLength retrieves the value of the leaf PrefixLength from the Interface_RoutedVlan_Ipv6_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLength is set, it can
// safely use t.GetPrefixLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLength == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Address) GetPrefixLength() uint8 {
	if t == nil || t.PrefixLength == nil {
		return 0
	}
	return *t.PrefixLength
}

// GetStatus retrieves the value of the leaf Status from the Interface_RoutedVlan_Ipv6_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Status is set, it can
// safely use t.GetStatus() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Status == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Address) GetStatus() E_Address_Status {
	if t == nil || t.Status == 0 {
		return 0
	}
	return t.Status
}

// GetType retrieves the value of the leaf Type from the Interface_RoutedVlan_Ipv6_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Address) GetType() E_InetTypes_Ipv6AddressType {
	if t == nil || t.Type == 0 {
		return InetTypes_Ipv6AddressType_GLOBAL_UNICAST
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv6_Address
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv6_Address) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Type == 0 {
		t.Type = InetTypes_Ipv6AddressType_GLOBAL_UNICAST
	}
	for _, e := range t.VrrpGroup {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv6_Address struct, which is a YANG list entry.
func (t *Interface_RoutedVlan_Ipv6_Address) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Ip == nil {
		return nil, fmt.Errorf("nil value for key Ip")
	}

	return map[string]interface{}{
		"ip": *t.Ip,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_Address) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Address"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_Address) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv6_Address) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv6_Address.
func (*Interface_RoutedVlan_Ipv6_Address) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv6_Address_VrrpGroup represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group YANG schema element.
type Interface_RoutedVlan_Ipv6_Address_VrrpGroup struct {
	ΛMetadata              []ygot.Annotation                                              `path:"@" ygotAnnotation:"true"`
	AcceptMode             *bool                                                          `path:"config/accept-mode" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛAcceptMode            []ygot.Annotation                                              `path:"config/@accept-mode" ygotAnnotation:"true"`
	AdvertisementInterval  *uint16                                                        `path:"config/advertisement-interval" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛAdvertisementInterval []ygot.Annotation                                              `path:"config/@advertisement-interval" ygotAnnotation:"true"`
	CurrentPriority        *uint8                                                         `path:"state/current-priority" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛCurrentPriority       []ygot.Annotation                                              `path:"state/@current-priority" ygotAnnotation:"true"`
	InterfaceTracking      *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking `path:"interface-tracking" module:"openconfig-if-ip"`
	ΛInterfaceTracking     []ygot.Annotation                                              `path:"@interface-tracking" ygotAnnotation:"true"`
	Preempt                *bool                                                          `path:"config/preempt" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPreempt               []ygot.Annotation                                              `path:"config/@preempt" ygotAnnotation:"true"`
	PreemptDelay           *uint16                                                        `path:"config/preempt-delay" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPreemptDelay          []ygot.Annotation                                              `path:"config/@preempt-delay" ygotAnnotation:"true"`
	Priority               *uint8                                                         `path:"config/priority" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPriority              []ygot.Annotation                                              `path:"config/@priority" ygotAnnotation:"true"`
	VirtualAddress         []string                                                       `path:"config/virtual-address" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛVirtualAddress        []ygot.Annotation                                              `path:"config/@virtual-address" ygotAnnotation:"true"`
	VirtualLinkLocal       *string                                                        `path:"config/virtual-link-local" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛVirtualLinkLocal      []ygot.Annotation                                              `path:"config/@virtual-link-local" ygotAnnotation:"true"`
	VirtualRouterId        *uint8                                                         `path:"config/virtual-router-id|virtual-router-id" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"`
	ΛVirtualRouterId       []ygot.Annotation                                              `path:"config/@virtual-router-id|@virtual-router-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Address_VrrpGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup) IsYANGGoStruct() {}

// GetOrCreateInterfaceTracking retrieves the value of the InterfaceTracking field
// or returns the existing field if it already exists.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) GetOrCreateInterfaceTracking() *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking {
	if t.InterfaceTracking != nil {
		return t.InterfaceTracking
	}
	t.InterfaceTracking = &Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking{}
	return t.InterfaceTracking
}

// GetInterfaceTracking returns the value of the InterfaceTracking struct pointer
// from Interface_RoutedVlan_Ipv6_Address_VrrpGroup. If the receiver or the field InterfaceTracking is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) GetInterfaceTracking() *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking {
	if t != nil && t.InterfaceTracking != nil {
		return t.InterfaceTracking
	}
	return nil
}

// GetAcceptMode retrieves the value of the leaf AcceptMode from the Interface_RoutedVlan_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AcceptMode is set, it can
// safely use t.GetAcceptMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AcceptMode == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) GetAcceptMode() bool {
	if t == nil || t.AcceptMode == nil {
		return false
	}
	return *t.AcceptMode
}

// GetAdvertisementInterval retrieves the value of the leaf AdvertisementInterval from the Interface_RoutedVlan_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdvertisementInterval is set, it can
// safely use t.GetAdvertisementInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdvertisementInterval == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) GetAdvertisementInterval() uint16 {
	if t == nil || t.AdvertisementInterval == nil {
		return 100
	}
	return *t.AdvertisementInterval
}

// GetCurrentPriority retrieves the value of the leaf CurrentPriority from the Interface_RoutedVlan_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CurrentPriority is set, it can
// safely use t.GetCurrentPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CurrentPriority == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) GetCurrentPriority() uint8 {
	if t == nil || t.CurrentPriority == nil {
		return 0
	}
	return *t.CurrentPriority
}

// GetPreempt retrieves the value of the leaf Preempt from the Interface_RoutedVlan_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Preempt is set, it can
// safely use t.GetPreempt() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Preempt == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) GetPreempt() bool {
	if t == nil || t.Preempt == nil {
		return true
	}
	return *t.Preempt
}

// GetPreemptDelay retrieves the value of the leaf PreemptDelay from the Interface_RoutedVlan_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreemptDelay is set, it can
// safely use t.GetPreemptDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreemptDelay == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) GetPreemptDelay() uint16 {
	if t == nil || t.PreemptDelay == nil {
		return 0
	}
	return *t.PreemptDelay
}

// GetPriority retrieves the value of the leaf Priority from the Interface_RoutedVlan_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) GetPriority() uint8 {
	if t == nil || t.Priority == nil {
		return 100
	}
	return *t.Priority
}

// GetVirtualAddress retrieves the value of the leaf VirtualAddress from the Interface_RoutedVlan_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VirtualAddress is set, it can
// safely use t.GetVirtualAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VirtualAddress == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) GetVirtualAddress() []string {
	if t == nil || t.VirtualAddress == nil {
		return nil
	}
	return t.VirtualAddress
}

// GetVirtualLinkLocal retrieves the value of the leaf VirtualLinkLocal from the Interface_RoutedVlan_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VirtualLinkLocal is set, it can
// safely use t.GetVirtualLinkLocal() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VirtualLinkLocal == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) GetVirtualLinkLocal() string {
	if t == nil || t.VirtualLinkLocal == nil {
		return ""
	}
	return *t.VirtualLinkLocal
}

// GetVirtualRouterId retrieves the value of the leaf VirtualRouterId from the Interface_RoutedVlan_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VirtualRouterId is set, it can
// safely use t.GetVirtualRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VirtualRouterId == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) GetVirtualRouterId() uint8 {
	if t == nil || t.VirtualRouterId == nil {
		return 0
	}
	return *t.VirtualRouterId
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv6_Address_VrrpGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AcceptMode == nil {
		var v bool = false
		t.AcceptMode = &v
	}
	if t.AdvertisementInterval == nil {
		var v uint16 = 100
		t.AdvertisementInterval = &v
	}
	if t.Preempt == nil {
		var v bool = true
		t.Preempt = &v
	}
	if t.PreemptDelay == nil {
		var v uint16 = 0
		t.PreemptDelay = &v
	}
	if t.Priority == nil {
		var v uint8 = 100
		t.Priority = &v
	}
	t.InterfaceTracking.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv6_Address_VrrpGroup struct, which is a YANG list entry.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) ΛListKeyMap() (map[string]interface{}, error) {
	if t.VirtualRouterId == nil {
		return nil, fmt.Errorf("nil value for key VirtualRouterId")
	}

	return map[string]interface{}{
		"virtual-router-id": *t.VirtualRouterId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Address_VrrpGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv6_Address_VrrpGroup.
func (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group/interface-tracking YANG schema element.
type Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	PriorityDecrement  *uint8            `path:"config/priority-decrement" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPriorityDecrement []ygot.Annotation `path:"config/@priority-decrement" ygotAnnotation:"true"`
	TrackInterface     []string          `path:"config/track-interface" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛTrackInterface    []ygot.Annotation `path:"config/@track-interface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) IsYANGGoStruct() {}

// GetPriorityDecrement retrieves the value of the leaf PriorityDecrement from the Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PriorityDecrement is set, it can
// safely use t.GetPriorityDecrement() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PriorityDecrement == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) GetPriorityDecrement() uint8 {
	if t == nil || t.PriorityDecrement == nil {
		return 0
	}
	return *t.PriorityDecrement
}

// GetTrackInterface retrieves the value of the leaf TrackInterface from the Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TrackInterface is set, it can
// safely use t.GetTrackInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TrackInterface == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) GetTrackInterface() []string {
	if t == nil || t.TrackInterface == nil {
		return nil
	}
	return t.TrackInterface
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PriorityDecrement == nil {
		var v uint8 = 0
		t.PriorityDecrement = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking.
func (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv6_Counters represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/state/counters YANG schema element.
type Interface_RoutedVlan_Ipv6_Counters struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	InDiscardedPkts     *uint64           `path:"in-discarded-pkts" module:"openconfig-if-ip"`
	ΛInDiscardedPkts    []ygot.Annotation `path:"@in-discarded-pkts" ygotAnnotation:"true"`
	InErrorPkts         *uint64           `path:"in-error-pkts" module:"openconfig-if-ip"`
	ΛInErrorPkts        []ygot.Annotation `path:"@in-error-pkts" ygotAnnotation:"true"`
	InForwardedOctets   *uint64           `path:"in-forwarded-octets" module:"openconfig-if-ip"`
	ΛInForwardedOctets  []ygot.Annotation `path:"@in-forwarded-octets" ygotAnnotation:"true"`
	InForwardedPkts     *uint64           `path:"in-forwarded-pkts" module:"openconfig-if-ip"`
	ΛInForwardedPkts    []ygot.Annotation `path:"@in-forwarded-pkts" ygotAnnotation:"true"`
	InMulticastOctets   *uint64           `path:"in-multicast-octets" module:"openconfig-if-ip"`
	ΛInMulticastOctets  []ygot.Annotation `path:"@in-multicast-octets" ygotAnnotation:"true"`
	InMulticastPkts     *uint64           `path:"in-multicast-pkts" module:"openconfig-if-ip"`
	ΛInMulticastPkts    []ygot.Annotation `path:"@in-multicast-pkts" ygotAnnotation:"true"`
	InOctets            *uint64           `path:"in-octets" module:"openconfig-if-ip"`
	ΛInOctets           []ygot.Annotation `path:"@in-octets" ygotAnnotation:"true"`
	InPkts              *uint64           `path:"in-pkts" module:"openconfig-if-ip"`
	ΛInPkts             []ygot.Annotation `path:"@in-pkts" ygotAnnotation:"true"`
	OutDiscardedPkts    *uint64           `path:"out-discarded-pkts" module:"openconfig-if-ip"`
	ΛOutDiscardedPkts   []ygot.Annotation `path:"@out-discarded-pkts" ygotAnnotation:"true"`
	OutErrorPkts        *uint64           `path:"out-error-pkts" module:"openconfig-if-ip"`
	ΛOutErrorPkts       []ygot.Annotation `path:"@out-error-pkts" ygotAnnotation:"true"`
	OutForwardedOctets  *uint64           `path:"out-forwarded-octets" module:"openconfig-if-ip"`
	ΛOutForwardedOctets []ygot.Annotation `path:"@out-forwarded-octets" ygotAnnotation:"true"`
	OutForwardedPkts    *uint64           `path:"out-forwarded-pkts" module:"openconfig-if-ip"`
	ΛOutForwardedPkts   []ygot.Annotation `path:"@out-forwarded-pkts" ygotAnnotation:"true"`
	OutMulticastOctets  *uint64           `path:"out-multicast-octets" module:"openconfig-if-ip"`
	ΛOutMulticastOctets []ygot.Annotation `path:"@out-multicast-octets" ygotAnnotation:"true"`
	OutMulticastPkts    *uint64           `path:"out-multicast-pkts" module:"openconfig-if-ip"`
	ΛOutMulticastPkts   []ygot.Annotation `path:"@out-multicast-pkts" ygotAnnotation:"true"`
	OutOctets           *uint64           `path:"out-octets" module:"openconfig-if-ip"`
	ΛOutOctets          []ygot.Annotation `path:"@out-octets" ygotAnnotation:"true"`
	OutPkts             *uint64           `path:"out-pkts" module:"openconfig-if-ip"`
	ΛOutPkts            []ygot.Annotation `path:"@out-pkts" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv6_Counters) IsYANGGoStruct() {}

// GetInDiscardedPkts retrieves the value of the leaf InDiscardedPkts from the Interface_RoutedVlan_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InDiscardedPkts is set, it can
// safely use t.GetInDiscardedPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InDiscardedPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Counters) GetInDiscardedPkts() uint64 {
	if t == nil || t.InDiscardedPkts == nil {
		return 0
	}
	return *t.InDiscardedPkts
}

// GetInErrorPkts retrieves the value of the leaf InErrorPkts from the Interface_RoutedVlan_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InErrorPkts is set, it can
// safely use t.GetInErrorPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InErrorPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Counters) GetInErrorPkts() uint64 {
	if t == nil || t.InErrorPkts == nil {
		return 0
	}
	return *t.InErrorPkts
}

// GetInForwardedOctets retrieves the value of the leaf InForwardedOctets from the Interface_RoutedVlan_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InForwardedOctets is set, it can
// safely use t.GetInForwardedOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InForwardedOctets == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Counters) GetInForwardedOctets() uint64 {
	if t == nil || t.InForwardedOctets == nil {
		return 0
	}
	return *t.InForwardedOctets
}

// GetInForwardedPkts retrieves the value of the leaf InForwardedPkts from the Interface_RoutedVlan_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InForwardedPkts is set, it can
// safely use t.GetInForwardedPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InForwardedPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Counters) GetInForwardedPkts() uint64 {
	if t == nil || t.InForwardedPkts == nil {
		return 0
	}
	return *t.InForwardedPkts
}

// GetInMulticastOctets retrieves the value of the leaf InMulticastOctets from the Interface_RoutedVlan_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMulticastOctets is set, it can
// safely use t.GetInMulticastOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMulticastOctets == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Counters) GetInMulticastOctets() uint64 {
	if t == nil || t.InMulticastOctets == nil {
		return 0
	}
	return *t.InMulticastOctets
}

// GetInMulticastPkts retrieves the value of the leaf InMulticastPkts from the Interface_RoutedVlan_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMulticastPkts is set, it can
// safely use t.GetInMulticastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMulticastPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Counters) GetInMulticastPkts() uint64 {
	if t == nil || t.InMulticastPkts == nil {
		return 0
	}
	return *t.InMulticastPkts
}

// GetInOctets retrieves the value of the leaf InOctets from the Interface_RoutedVlan_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InOctets is set, it can
// safely use t.GetInOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InOctets == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Counters) GetInOctets() uint64 {
	if t == nil || t.InOctets == nil {
		return 0
	}
	return *t.InOctets
}

// GetInPkts retrieves the value of the leaf InPkts from the Interface_RoutedVlan_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPkts is set, it can
// safely use t.GetInPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Counters) GetInPkts() uint64 {
	if t == nil || t.InPkts == nil {
		return 0
	}
	return *t.InPkts
}

// GetOutDiscardedPkts retrieves the value of the leaf OutDiscardedPkts from the Interface_RoutedVlan_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutDiscardedPkts is set, it can
// safely use t.GetOutDiscardedPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutDiscardedPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Counters) GetOutDiscardedPkts() uint64 {
	if t == nil || t.OutDiscardedPkts == nil {
		return 0
	}
	return *t.OutDiscardedPkts
}

// GetOutErrorPkts retrieves the value of the leaf OutErrorPkts from the Interface_RoutedVlan_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutErrorPkts is set, it can
// safely use t.GetOutErrorPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutErrorPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Counters) GetOutErrorPkts() uint64 {
	if t == nil || t.OutErrorPkts == nil {
		return 0
	}
	return *t.OutErrorPkts
}

// GetOutForwardedOctets retrieves the value of the leaf OutForwardedOctets from the Interface_RoutedVlan_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutForwardedOctets is set, it can
// safely use t.GetOutForwardedOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutForwardedOctets == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Counters) GetOutForwardedOctets() uint64 {
	if t == nil || t.OutForwardedOctets == nil {
		return 0
	}
	return *t.OutForwardedOctets
}

// GetOutForwardedPkts retrieves the value of the leaf OutForwardedPkts from the Interface_RoutedVlan_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutForwardedPkts is set, it can
// safely use t.GetOutForwardedPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutForwardedPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Counters) GetOutForwardedPkts() uint64 {
	if t == nil || t.OutForwardedPkts == nil {
		return 0
	}
	return *t.OutForwardedPkts
}

// GetOutMulticastOctets retrieves the value of the leaf OutMulticastOctets from the Interface_RoutedVlan_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutMulticastOctets is set, it can
// safely use t.GetOutMulticastOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutMulticastOctets == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Counters) GetOutMulticastOctets() uint64 {
	if t == nil || t.OutMulticastOctets == nil {
		return 0
	}
	return *t.OutMulticastOctets
}

// GetOutMulticastPkts retrieves the value of the leaf OutMulticastPkts from the Interface_RoutedVlan_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutMulticastPkts is set, it can
// safely use t.GetOutMulticastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutMulticastPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Counters) GetOutMulticastPkts() uint64 {
	if t == nil || t.OutMulticastPkts == nil {
		return 0
	}
	return *t.OutMulticastPkts
}

// GetOutOctets retrieves the value of the leaf OutOctets from the Interface_RoutedVlan_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutOctets is set, it can
// safely use t.GetOutOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutOctets == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Counters) GetOutOctets() uint64 {
	if t == nil || t.OutOctets == nil {
		return 0
	}
	return *t.OutOctets
}

// GetOutPkts retrieves the value of the leaf OutPkts from the Interface_RoutedVlan_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPkts is set, it can
// safely use t.GetOutPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPkts == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Counters) GetOutPkts() uint64 {
	if t == nil || t.OutPkts == nil {
		return 0
	}
	return *t.OutPkts
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv6_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv6_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv6_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv6_Counters.
func (*Interface_RoutedVlan_Ipv6_Counters) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv6_Neighbor represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor YANG schema element.
type Interface_RoutedVlan_Ipv6_Neighbor struct {
	ΛMetadata         []ygot.Annotation        `path:"@" ygotAnnotation:"true"`
	Ip                *string                  `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"`
	ΛIp               []ygot.Annotation        `path:"config/@ip|@ip" ygotAnnotation:"true"`
	IsRouter          *bool                    `path:"state/is-router" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛIsRouter         []ygot.Annotation        `path:"state/@is-router" ygotAnnotation:"true"`
	LinkLayerAddress  *string                  `path:"config/link-layer-address" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛLinkLayerAddress []ygot.Annotation        `path:"config/@link-layer-address" ygotAnnotation:"true"`
	NeighborState     E_Neighbor_NeighborState `path:"state/neighbor-state" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛNeighborState    []ygot.Annotation        `path:"state/@neighbor-state" ygotAnnotation:"true"`
	Origin            E_IfIp_NeighborOrigin    `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛOrigin           []ygot.Annotation        `path:"state/@origin" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv6_Neighbor) IsYANGGoStruct() {}

// GetIp retrieves the value of the leaf Ip from the Interface_RoutedVlan_Ipv6_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ip is set, it can
// safely use t.GetIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ip == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Neighbor) GetIp() string {
	if t == nil || t.Ip == nil {
		return ""
	}
	return *t.Ip
}

// GetIsRouter retrieves the value of the leaf IsRouter from the Interface_RoutedVlan_Ipv6_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IsRouter is set, it can
// safely use t.GetIsRouter() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IsRouter == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Neighbor) GetIsRouter() bool {
	if t == nil || t.IsRouter == nil {
		return false
	}
	return *t.IsRouter
}

// GetLinkLayerAddress retrieves the value of the leaf LinkLayerAddress from the Interface_RoutedVlan_Ipv6_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkLayerAddress is set, it can
// safely use t.GetLinkLayerAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkLayerAddress == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Neighbor) GetLinkLayerAddress() string {
	if t == nil || t.LinkLayerAddress == nil {
		return ""
	}
	return *t.LinkLayerAddress
}

// GetNeighborState retrieves the value of the leaf NeighborState from the Interface_RoutedVlan_Ipv6_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborState is set, it can
// safely use t.GetNeighborState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborState == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Neighbor) GetNeighborState() E_Neighbor_NeighborState {
	if t == nil || t.NeighborState == 0 {
		return 0
	}
	return t.NeighborState
}

// GetOrigin retrieves the value of the leaf Origin from the Interface_RoutedVlan_Ipv6_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Origin is set, it can
// safely use t.GetOrigin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Origin == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Neighbor) GetOrigin() E_IfIp_NeighborOrigin {
	if t == nil || t.Origin == 0 {
		return 0
	}
	return t.Origin
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv6_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv6_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv6_Neighbor struct, which is a YANG list entry.
func (t *Interface_RoutedVlan_Ipv6_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Ip == nil {
		return nil, fmt.Errorf("nil value for key Ip")
	}

	return map[string]interface{}{
		"ip": *t.Ip,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv6_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv6_Neighbor.
func (*Interface_RoutedVlan_Ipv6_Neighbor) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv6_RouterAdvertisement represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/router-advertisement YANG schema element.
type Interface_RoutedVlan_Ipv6_RouterAdvertisement struct {
	ΛMetadata    []ygot.Annotation                                                `path:"@" ygotAnnotation:"true"`
	Enable       *bool                                                            `path:"config/enable" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛEnable      []ygot.Annotation                                                `path:"config/@enable" ygotAnnotation:"true"`
	Interval     *uint32                                                          `path:"config/interval" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛInterval    []ygot.Annotation                                                `path:"config/@interval" ygotAnnotation:"true"`
	Lifetime     *uint32                                                          `path:"config/lifetime" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛLifetime    []ygot.Annotation                                                `path:"config/@lifetime" ygotAnnotation:"true"`
	Managed      *bool                                                            `path:"config/managed" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛManaged     []ygot.Annotation                                                `path:"config/@managed" ygotAnnotation:"true"`
	Mode         E_RouterAdvertisement_Mode                                       `path:"config/mode" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛMode        []ygot.Annotation                                                `path:"config/@mode" ygotAnnotation:"true"`
	OtherConfig  *bool                                                            `path:"config/other-config" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛOtherConfig []ygot.Annotation                                                `path:"config/@other-config" ygotAnnotation:"true"`
	Prefix       map[string]*Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix `path:"prefixes/prefix" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPrefix      []ygot.Annotation                                                `path:"prefixes/@prefix" ygotAnnotation:"true"`
	Suppress     *bool                                                            `path:"config/suppress" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛSuppress    []ygot.Annotation                                                `path:"config/@suppress" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_RouterAdvertisement implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv6_RouterAdvertisement) IsYANGGoStruct() {}

// NewPrefix creates a new entry in the Prefix list of the
// Interface_RoutedVlan_Ipv6_RouterAdvertisement struct. The keys of the list are populated from the input
// arguments.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement) NewPrefix(Prefix string) (*Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[string]*Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix)
	}

	key := Prefix

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Prefix[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Prefix", key)
	}

	t.Prefix[key] = &Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix{
		Prefix: &Prefix,
	}

	return t.Prefix[key], nil
}

// RenamePrefix renames an entry in the list Prefix within
// the Interface_RoutedVlan_Ipv6_RouterAdvertisement struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement) RenamePrefix(oldK, newK string) error {
	if _, ok := t.Prefix[newK]; ok {
		return fmt.Errorf("key %v already exists in Prefix", newK)
	}

	e, ok := t.Prefix[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Prefix", oldK)
	}
	e.Prefix = &newK

	t.Prefix[newK] = e
	delete(t.Prefix, oldK)
	return nil
}

// GetOrCreatePrefixMap returns the list (map) from Interface_RoutedVlan_Ipv6_RouterAdvertisement.
//
// It initializes the field if not already initialized.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement) GetOrCreatePrefixMap() map[string]*Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix {
	if t.Prefix == nil {
		t.Prefix = make(map[string]*Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix)
	}
	return t.Prefix
}

// GetOrCreatePrefix retrieves the value with the specified keys from
// the receiver Interface_RoutedVlan_Ipv6_RouterAdvertisement. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement) GetOrCreatePrefix(Prefix string) *Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix {

	key := Prefix

	if v, ok := t.Prefix[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPrefix(Prefix)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePrefix got unexpected error: %v", err))
	}
	return v
}

// GetPrefix retrieves the value with the specified key from
// the Prefix map field of Interface_RoutedVlan_Ipv6_RouterAdvertisement. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement) GetPrefix(Prefix string) *Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix {

	if t == nil {
		return nil
	}

	key := Prefix

	if lm, ok := t.Prefix[key]; ok {
		return lm
	}
	return nil
}

// AppendPrefix appends the supplied Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix struct to the
// list Prefix of Interface_RoutedVlan_Ipv6_RouterAdvertisement. If the key value(s) specified in
// the supplied Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix already exist in the list, an error is
// returned.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement) AppendPrefix(v *Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key received for Prefix")
	}

	key := *v.Prefix

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[string]*Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix)
	}

	if _, ok := t.Prefix[key]; ok {
		return fmt.Errorf("duplicate key for list Prefix %v", key)
	}

	t.Prefix[key] = v
	return nil
}

// GetEnable retrieves the value of the leaf Enable from the Interface_RoutedVlan_Ipv6_RouterAdvertisement
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enable is set, it can
// safely use t.GetEnable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enable == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement) GetEnable() bool {
	if t == nil || t.Enable == nil {
		return true
	}
	return *t.Enable
}

// GetInterval retrieves the value of the leaf Interval from the Interface_RoutedVlan_Ipv6_RouterAdvertisement
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement) GetInterval() uint32 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetLifetime retrieves the value of the leaf Lifetime from the Interface_RoutedVlan_Ipv6_RouterAdvertisement
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Lifetime is set, it can
// safely use t.GetLifetime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Lifetime == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement) GetLifetime() uint32 {
	if t == nil || t.Lifetime == nil {
		return 0
	}
	return *t.Lifetime
}

// GetManaged retrieves the value of the leaf Managed from the Interface_RoutedVlan_Ipv6_RouterAdvertisement
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Managed is set, it can
// safely use t.GetManaged() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Managed == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement) GetManaged() bool {
	if t == nil || t.Managed == nil {
		return false
	}
	return *t.Managed
}

// GetMode retrieves the value of the leaf Mode from the Interface_RoutedVlan_Ipv6_RouterAdvertisement
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mode is set, it can
// safely use t.GetMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mode == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement) GetMode() E_RouterAdvertisement_Mode {
	if t == nil || t.Mode == 0 {
		return RouterAdvertisement_Mode_ALL
	}
	return t.Mode
}

// GetOtherConfig retrieves the value of the leaf OtherConfig from the Interface_RoutedVlan_Ipv6_RouterAdvertisement
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OtherConfig is set, it can
// safely use t.GetOtherConfig() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OtherConfig == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement) GetOtherConfig() bool {
	if t == nil || t.OtherConfig == nil {
		return false
	}
	return *t.OtherConfig
}

// GetSuppress retrieves the value of the leaf Suppress from the Interface_RoutedVlan_Ipv6_RouterAdvertisement
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Suppress is set, it can
// safely use t.GetSuppress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Suppress == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement) GetSuppress() bool {
	if t == nil || t.Suppress == nil {
		return false
	}
	return *t.Suppress
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv6_RouterAdvertisement
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enable == nil {
		var v bool = true
		t.Enable = &v
	}
	if t.Managed == nil {
		var v bool = false
		t.Managed = &v
	}
	if t.Mode == 0 {
		t.Mode = RouterAdvertisement_Mode_ALL
	}
	if t.OtherConfig == nil {
		var v bool = false
		t.OtherConfig = &v
	}
	if t.Suppress == nil {
		var v bool = false
		t.Suppress = &v
	}
	for _, e := range t.Prefix {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_RouterAdvertisement"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv6_RouterAdvertisement.
func (*Interface_RoutedVlan_Ipv6_RouterAdvertisement) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/router-advertisement/prefixes/prefix YANG schema element.
type Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix struct {
	ΛMetadata                 []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	DisableAdvertisement      *bool             `path:"config/disable-advertisement" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛDisableAdvertisement     []ygot.Annotation `path:"config/@disable-advertisement" ygotAnnotation:"true"`
	DisableAutoconfiguration  *bool             `path:"config/disable-autoconfiguration" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛDisableAutoconfiguration []ygot.Annotation `path:"config/@disable-autoconfiguration" ygotAnnotation:"true"`
	EnableOnlink              *bool             `path:"config/enable-onlink" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛEnableOnlink             []ygot.Annotation `path:"config/@enable-onlink" ygotAnnotation:"true"`
	PreferredLifetime         *uint32           `path:"config/preferred-lifetime" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPreferredLifetime        []ygot.Annotation `path:"config/@preferred-lifetime" ygotAnnotation:"true"`
	Prefix                    *string           `path:"config/prefix|prefix" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"`
	ΛPrefix                   []ygot.Annotation `path:"config/@prefix|@prefix" ygotAnnotation:"true"`
	ValidLifetime             *uint32           `path:"config/valid-lifetime" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛValidLifetime            []ygot.Annotation `path:"config/@valid-lifetime" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix) IsYANGGoStruct() {}

// GetDisableAdvertisement retrieves the value of the leaf DisableAdvertisement from the Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DisableAdvertisement is set, it can
// safely use t.GetDisableAdvertisement() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DisableAdvertisement == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix) GetDisableAdvertisement() bool {
	if t == nil || t.DisableAdvertisement == nil {
		return false
	}
	return *t.DisableAdvertisement
}

// GetDisableAutoconfiguration retrieves the value of the leaf DisableAutoconfiguration from the Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DisableAutoconfiguration is set, it can
// safely use t.GetDisableAutoconfiguration() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DisableAutoconfiguration == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix) GetDisableAutoconfiguration() bool {
	if t == nil || t.DisableAutoconfiguration == nil {
		return false
	}
	return *t.DisableAutoconfiguration
}

// GetEnableOnlink retrieves the value of the leaf EnableOnlink from the Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EnableOnlink is set, it can
// safely use t.GetEnableOnlink() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EnableOnlink == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix) GetEnableOnlink() bool {
	if t == nil || t.EnableOnlink == nil {
		return false
	}
	return *t.EnableOnlink
}

// GetPreferredLifetime retrieves the value of the leaf PreferredLifetime from the Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreferredLifetime is set, it can
// safely use t.GetPreferredLifetime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreferredLifetime == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix) GetPreferredLifetime() uint32 {
	if t == nil || t.PreferredLifetime == nil {
		return 0
	}
	return *t.PreferredLifetime
}

// GetPrefix retrieves the value of the leaf Prefix from the Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetValidLifetime retrieves the value of the leaf ValidLifetime from the Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidLifetime is set, it can
// safely use t.GetValidLifetime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidLifetime == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix) GetValidLifetime() uint32 {
	if t == nil || t.ValidLifetime == nil {
		return 0
	}
	return *t.ValidLifetime
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix struct, which is a YANG list entry.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"prefix": *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix.
func (*Interface_RoutedVlan_Ipv6_RouterAdvertisement_Prefix) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv6_Unnumbered represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/unnumbered YANG schema element.
type Interface_RoutedVlan_Ipv6_Unnumbered struct {
	ΛMetadata     []ygot.Annotation                                  `path:"@" ygotAnnotation:"true"`
	Enabled       *bool                                              `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛEnabled      []ygot.Annotation                                  `path:"config/@enabled" ygotAnnotation:"true"`
	InterfaceRef  *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef `path:"interface-ref" module:"openconfig-if-ip"`
	ΛInterfaceRef []ygot.Annotation                                  `path:"@interface-ref" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Unnumbered implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv6_Unnumbered) IsYANGGoStruct() {}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *Interface_RoutedVlan_Ipv6_Unnumbered) GetOrCreateInterfaceRef() *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef{}
	return t.InterfaceRef
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from Interface_RoutedVlan_Ipv6_Unnumbered. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_RoutedVlan_Ipv6_Unnumbered) GetInterfaceRef() *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetEnabled retrieves the value of the leaf Enabled from the Interface_RoutedVlan_Ipv6_Unnumbered
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Unnumbered) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv6_Unnumbered
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv6_Unnumbered) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	t.InterfaceRef.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_Unnumbered) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Unnumbered"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_Unnumbered) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv6_Unnumbered) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv6_Unnumbered.
func (*Interface_RoutedVlan_Ipv6_Unnumbered) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/unnumbered/interface-ref YANG schema element.
type Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef.
func (*Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Sonet represents the /openconfig-interfaces/interfaces/interface/sonet YANG schema element.
type Interface_Sonet struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Sonet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Sonet) IsYANGGoStruct() {}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Sonet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Sonet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Sonet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Sonet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Sonet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Sonet) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Sonet.
func (*Interface_Sonet) ΛBelongingModule() string {
	return "openconfig-transport-line-common"
}

// Interface_Subinterface represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface YANG schema element.
type Interface_Subinterface struct {
	ΛMetadata    []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	AdminStatus  E_Interface_AdminStatus          `path:"state/admin-status" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛAdminStatus []ygot.Annotation                `path:"state/@admin-status" ygotAnnotation:"true"`
	Counters     *Interface_Subinterface_Counters `path:"state/counters" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛCounters    []ygot.Annotation                `path:"state/@counters" ygotAnnotation:"true"`
	Cpu          *bool                            `path:"state/cpu" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛCpu         []ygot.Annotation                `path:"state/@cpu" ygotAnnotation:"true"`
	Description  *string                          `path:"config/description" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛDescription []ygot.Annotation                `path:"config/@description" ygotAnnotation:"true"`
	Enabled      *bool                            `path:"config/enabled" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛEnabled     []ygot.Annotation                `path:"config/@enabled" ygotAnnotation:"true"`
	Ifindex      *uint32                          `path:"state/ifindex" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛIfindex     []ygot.Annotation                `path:"state/@ifindex" ygotAnnotation:"true"`
	Index        *uint32                          `path:"config/index|index" module:"openconfig-interfaces/openconfig-interfaces|openconfig-interfaces"`
	ΛIndex       []ygot.Annotation                `path:"config/@index|@index" ygotAnnotation:"true"`
	Ipv4         *Interface_Subinterface_Ipv4     `path:"ipv4" module:"openconfig-if-ip"`
	ΛIpv4        []ygot.Annotation                `path:"@ipv4" ygotAnnotation:"true"`
	Ipv6         *Interface_Subinterface_Ipv6     `path:"ipv6" module:"openconfig-if-ip"`
	ΛIpv6        []ygot.Annotation                `path:"@ipv6" ygotAnnotation:"true"`
	LastChange   *uint64                          `path:"state/last-change" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛLastChange  []ygot.Annotation                `path:"state/@last-change" ygotAnnotation:"true"`
	Logical      *bool                            `path:"state/logical" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛLogical     []ygot.Annotation                `path:"state/@logical" ygotAnnotation:"true"`
	Management   *bool                            `path:"state/management" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛManagement  []ygot.Annotation                `path:"state/@management" ygotAnnotation:"true"`
	Name         *string                          `path:"state/name" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛName        []ygot.Annotation                `path:"state/@name" ygotAnnotation:"true"`
	OperStatus   E_Interface_OperStatus           `path:"state/oper-status" module:"openconfig-interfaces/openconfig-interfaces"`
	ΛOperStatus  []ygot.Annotation                `path:"state/@oper-status" ygotAnnotation:"true"`
	Vlan         *Interface_Subinterface_Vlan     `path:"vlan" module:"openconfig-vlan"`
	ΛVlan        []ygot.Annotation                `path:"@vlan" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface) GetOrCreateCounters() *Interface_Subinterface_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &Interface_Subinterface_Counters{}
	return t.Counters
}

// GetOrCreateIpv4 retrieves the value of the Ipv4 field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface) GetOrCreateIpv4() *Interface_Subinterface_Ipv4 {
	if t.Ipv4 != nil {
		return t.Ipv4
	}
	t.Ipv4 = &Interface_Subinterface_Ipv4{}
	return t.Ipv4
}

// GetOrCreateIpv6 retrieves the value of the Ipv6 field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface) GetOrCreateIpv6() *Interface_Subinterface_Ipv6 {
	if t.Ipv6 != nil {
		return t.Ipv6
	}
	t.Ipv6 = &Interface_Subinterface_Ipv6{}
	return t.Ipv6
}

// GetOrCreateVlan retrieves the value of the Vlan field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface) GetOrCreateVlan() *Interface_Subinterface_Vlan {
	if t.Vlan != nil {
		return t.Vlan
	}
	t.Vlan = &Interface_Subinterface_Vlan{}
	return t.Vlan
}

// GetCounters returns the value of the Counters struct pointer
// from Interface_Subinterface. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface) GetCounters() *Interface_Subinterface_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetIpv4 returns the value of the Ipv4 struct pointer
// from Interface_Subinterface. If the receiver or the field Ipv4 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface) GetIpv4() *Interface_Subinterface_Ipv4 {
	if t != nil && t.Ipv4 != nil {
		return t.Ipv4
	}
	return nil
}

// GetIpv6 returns the value of the Ipv6 struct pointer
// from Interface_Subinterface. If the receiver or the field Ipv6 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface) GetIpv6() *Interface_Subinterface_Ipv6 {
	if t != nil && t.Ipv6 != nil {
		return t.Ipv6
	}
	return nil
}

// GetVlan returns the value of the Vlan struct pointer
// from Interface_Subinterface. If the receiver or the field Vlan is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface) GetVlan() *Interface_Subinterface_Vlan {
	if t != nil && t.Vlan != nil {
		return t.Vlan
	}
	return nil
}

// GetAdminStatus retrieves the value of the leaf AdminStatus from the Interface_Subinterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdminStatus is set, it can
// safely use t.GetAdminStatus() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdminStatus == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface) GetAdminStatus() E_Interface_AdminStatus {
	if t == nil || t.AdminStatus == 0 {
		return 0
	}
	return t.AdminStatus
}

// GetCpu retrieves the value of the leaf Cpu from the Interface_Subinterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Cpu is set, it can
// safely use t.GetCpu() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Cpu == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface) GetCpu() bool {
	if t == nil || t.Cpu == nil {
		return false
	}
	return *t.Cpu
}

// GetDescription retrieves the value of the leaf Description from the Interface_Subinterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetEnabled retrieves the value of the leaf Enabled from the Interface_Subinterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return true
	}
	return *t.Enabled
}

// GetIfindex retrieves the value of the leaf Ifindex from the Interface_Subinterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ifindex is set, it can
// safely use t.GetIfindex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ifindex == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface) GetIfindex() uint32 {
	if t == nil || t.Ifindex == nil {
		return 0
	}
	return *t.Ifindex
}

// GetIndex retrieves the value of the leaf Index from the Interface_Subinterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface) GetIndex() uint32 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetLastChange retrieves the value of the leaf LastChange from the Interface_Subinterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastChange is set, it can
// safely use t.GetLastChange() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastChange == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface) GetLastChange() uint64 {
	if t == nil || t.LastChange == nil {
		return 0
	}
	return *t.LastChange
}

// GetLogical retrieves the value of the leaf Logical from the Interface_Subinterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Logical is set, it can
// safely use t.GetLogical() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Logical == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface) GetLogical() bool {
	if t == nil || t.Logical == nil {
		return false
	}
	return *t.Logical
}

// GetManagement retrieves the value of the leaf Management from the Interface_Subinterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Management is set, it can
// safely use t.GetManagement() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Management == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface) GetManagement() bool {
	if t == nil || t.Management == nil {
		return false
	}
	return *t.Management
}

// GetName retrieves the value of the leaf Name from the Interface_Subinterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetOperStatus retrieves the value of the leaf OperStatus from the Interface_Subinterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OperStatus is set, it can
// safely use t.GetOperStatus() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OperStatus == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface) GetOperStatus() E_Interface_OperStatus {
	if t == nil || t.OperStatus == 0 {
		return 0
	}
	return t.OperStatus
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = true
		t.Enabled = &v
	}
	if t.Index == nil {
		var v uint32 = 0
		t.Index = &v
	}
	t.Counters.PopulateDefaults()
	t.Ipv4.PopulateDefaults()
	t.Ipv6.PopulateDefaults()
	t.Vlan.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the Interface_Subinterface struct, which is a YANG list entry.
func (t *Interface_Subinterface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface.
func (*Interface_Subinterface) ΛBelongingModule() string {
	return "openconfig-interfaces"
}

// Interface_Subinterface_Counters represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/state/counters YANG schema element.
type Interface_Subinterface_Counters struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	CarrierTransitions  *uint64           `path:"carrier-transitions" module:"openconfig-interfaces"`
	ΛCarrierTransitions []ygot.Annotation `path:"@carrier-transitions" ygotAnnotation:"true"`
	InBroadcastPkts     *uint64           `path:"in-broadcast-pkts" module:"openconfig-interfaces"`
	ΛInBroadcastPkts    []ygot.Annotation `path:"@in-broadcast-pkts" ygotAnnotation:"true"`
	InDiscards          *uint64           `path:"in-discards" module:"openconfig-interfaces"`
	ΛInDiscards         []ygot.Annotation `path:"@in-discards" ygotAnnotation:"true"`
	InErrors            *uint64           `path:"in-errors" module:"openconfig-interfaces"`
	ΛInErrors           []ygot.Annotation `path:"@in-errors" ygotAnnotation:"true"`
	InFcsErrors         *uint64           `path:"in-fcs-errors" module:"openconfig-interfaces"`
	ΛInFcsErrors        []ygot.Annotation `path:"@in-fcs-errors" ygotAnnotation:"true"`
	InMulticastPkts     *uint64           `path:"in-multicast-pkts" module:"openconfig-interfaces"`
	ΛInMulticastPkts    []ygot.Annotation `path:"@in-multicast-pkts" ygotAnnotation:"true"`
	InOctets            *uint64           `path:"in-octets" module:"openconfig-interfaces"`
	ΛInOctets           []ygot.Annotation `path:"@in-octets" ygotAnnotation:"true"`
	InPkts              *uint64           `path:"in-pkts" module:"openconfig-interfaces"`
	ΛInPkts             []ygot.Annotation `path:"@in-pkts" ygotAnnotation:"true"`
	InUnicastPkts       *uint64           `path:"in-unicast-pkts" module:"openconfig-interfaces"`
	ΛInUnicastPkts      []ygot.Annotation `path:"@in-unicast-pkts" ygotAnnotation:"true"`
	InUnknownProtos     *uint64           `path:"in-unknown-protos" module:"openconfig-interfaces"`
	ΛInUnknownProtos    []ygot.Annotation `path:"@in-unknown-protos" ygotAnnotation:"true"`
	LastClear           *uint64           `path:"last-clear" module:"openconfig-interfaces"`
	ΛLastClear          []ygot.Annotation `path:"@last-clear" ygotAnnotation:"true"`
	OutBroadcastPkts    *uint64           `path:"out-broadcast-pkts" module:"openconfig-interfaces"`
	ΛOutBroadcastPkts   []ygot.Annotation `path:"@out-broadcast-pkts" ygotAnnotation:"true"`
	OutDiscards         *uint64           `path:"out-discards" module:"openconfig-interfaces"`
	ΛOutDiscards        []ygot.Annotation `path:"@out-discards" ygotAnnotation:"true"`
	OutErrors           *uint64           `path:"out-errors" module:"openconfig-interfaces"`
	ΛOutErrors          []ygot.Annotation `path:"@out-errors" ygotAnnotation:"true"`
	OutMulticastPkts    *uint64           `path:"out-multicast-pkts" module:"openconfig-interfaces"`
	ΛOutMulticastPkts   []ygot.Annotation `path:"@out-multicast-pkts" ygotAnnotation:"true"`
	OutOctets           *uint64           `path:"out-octets" module:"openconfig-interfaces"`
	ΛOutOctets          []ygot.Annotation `path:"@out-octets" ygotAnnotation:"true"`
	OutPkts             *uint64           `path:"out-pkts" module:"openconfig-interfaces"`
	ΛOutPkts            []ygot.Annotation `path:"@out-pkts" ygotAnnotation:"true"`
	OutUnicastPkts      *uint64           `path:"out-unicast-pkts" module:"openconfig-interfaces"`
	ΛOutUnicastPkts     []ygot.Annotation `path:"@out-unicast-pkts" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Counters) IsYANGGoStruct() {}

// GetCarrierTransitions retrieves the value of the leaf CarrierTransitions from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CarrierTransitions is set, it can
// safely use t.GetCarrierTransitions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CarrierTransitions == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetCarrierTransitions() uint64 {
	if t == nil || t.CarrierTransitions == nil {
		return 0
	}
	return *t.CarrierTransitions
}

// GetInBroadcastPkts retrieves the value of the leaf InBroadcastPkts from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InBroadcastPkts is set, it can
// safely use t.GetInBroadcastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InBroadcastPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetInBroadcastPkts() uint64 {
	if t == nil || t.InBroadcastPkts == nil {
		return 0
	}
	return *t.InBroadcastPkts
}

// GetInDiscards retrieves the value of the leaf InDiscards from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InDiscards is set, it can
// safely use t.GetInDiscards() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InDiscards == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetInDiscards() uint64 {
	if t == nil || t.InDiscards == nil {
		return 0
	}
	return *t.InDiscards
}

// GetInErrors retrieves the value of the leaf InErrors from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InErrors is set, it can
// safely use t.GetInErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InErrors == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetInErrors() uint64 {
	if t == nil || t.InErrors == nil {
		return 0
	}
	return *t.InErrors
}

// GetInFcsErrors retrieves the value of the leaf InFcsErrors from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InFcsErrors is set, it can
// safely use t.GetInFcsErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InFcsErrors == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetInFcsErrors() uint64 {
	if t == nil || t.InFcsErrors == nil {
		return 0
	}
	return *t.InFcsErrors
}

// GetInMulticastPkts retrieves the value of the leaf InMulticastPkts from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMulticastPkts is set, it can
// safely use t.GetInMulticastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMulticastPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetInMulticastPkts() uint64 {
	if t == nil || t.InMulticastPkts == nil {
		return 0
	}
	return *t.InMulticastPkts
}

// GetInOctets retrieves the value of the leaf InOctets from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InOctets is set, it can
// safely use t.GetInOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InOctets == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetInOctets() uint64 {
	if t == nil || t.InOctets == nil {
		return 0
	}
	return *t.InOctets
}

// GetInPkts retrieves the value of the leaf InPkts from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPkts is set, it can
// safely use t.GetInPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetInPkts() uint64 {
	if t == nil || t.InPkts == nil {
		return 0
	}
	return *t.InPkts
}

// GetInUnicastPkts retrieves the value of the leaf InUnicastPkts from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InUnicastPkts is set, it can
// safely use t.GetInUnicastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InUnicastPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetInUnicastPkts() uint64 {
	if t == nil || t.InUnicastPkts == nil {
		return 0
	}
	return *t.InUnicastPkts
}

// GetInUnknownProtos retrieves the value of the leaf InUnknownProtos from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InUnknownProtos is set, it can
// safely use t.GetInUnknownProtos() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InUnknownProtos == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetInUnknownProtos() uint64 {
	if t == nil || t.InUnknownProtos == nil {
		return 0
	}
	return *t.InUnknownProtos
}

// GetLastClear retrieves the value of the leaf LastClear from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastClear is set, it can
// safely use t.GetLastClear() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastClear == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetLastClear() uint64 {
	if t == nil || t.LastClear == nil {
		return 0
	}
	return *t.LastClear
}

// GetOutBroadcastPkts retrieves the value of the leaf OutBroadcastPkts from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutBroadcastPkts is set, it can
// safely use t.GetOutBroadcastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutBroadcastPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetOutBroadcastPkts() uint64 {
	if t == nil || t.OutBroadcastPkts == nil {
		return 0
	}
	return *t.OutBroadcastPkts
}

// GetOutDiscards retrieves the value of the leaf OutDiscards from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutDiscards is set, it can
// safely use t.GetOutDiscards() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutDiscards == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetOutDiscards() uint64 {
	if t == nil || t.OutDiscards == nil {
		return 0
	}
	return *t.OutDiscards
}

// GetOutErrors retrieves the value of the leaf OutErrors from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutErrors is set, it can
// safely use t.GetOutErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutErrors == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetOutErrors() uint64 {
	if t == nil || t.OutErrors == nil {
		return 0
	}
	return *t.OutErrors
}

// GetOutMulticastPkts retrieves the value of the leaf OutMulticastPkts from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutMulticastPkts is set, it can
// safely use t.GetOutMulticastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutMulticastPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetOutMulticastPkts() uint64 {
	if t == nil || t.OutMulticastPkts == nil {
		return 0
	}
	return *t.OutMulticastPkts
}

// GetOutOctets retrieves the value of the leaf OutOctets from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutOctets is set, it can
// safely use t.GetOutOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutOctets == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetOutOctets() uint64 {
	if t == nil || t.OutOctets == nil {
		return 0
	}
	return *t.OutOctets
}

// GetOutPkts retrieves the value of the leaf OutPkts from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPkts is set, it can
// safely use t.GetOutPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetOutPkts() uint64 {
	if t == nil || t.OutPkts == nil {
		return 0
	}
	return *t.OutPkts
}

// GetOutUnicastPkts retrieves the value of the leaf OutUnicastPkts from the Interface_Subinterface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutUnicastPkts is set, it can
// safely use t.GetOutUnicastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutUnicastPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Counters) GetOutUnicastPkts() uint64 {
	if t == nil || t.OutUnicastPkts == nil {
		return 0
	}
	return *t.OutUnicastPkts
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Counters.
func (*Interface_Subinterface_Counters) ΛBelongingModule() string {
	return "openconfig-interfaces"
}

// Interface_Subinterface_Ipv4 represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4 YANG schema element.
type Interface_Subinterface_Ipv4 struct {
	ΛMetadata   []ygot.Annotation                                `path:"@" ygotAnnotation:"true"`
	Address     map[string]*Interface_Subinterface_Ipv4_Address  `path:"addresses/address" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛAddress    []ygot.Annotation                                `path:"addresses/@address" ygotAnnotation:"true"`
	Counters    *Interface_Subinterface_Ipv4_Counters            `path:"state/counters" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛCounters   []ygot.Annotation                                `path:"state/@counters" ygotAnnotation:"true"`
	DhcpClient  *bool                                            `path:"config/dhcp-client" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛDhcpClient []ygot.Annotation                                `path:"config/@dhcp-client" ygotAnnotation:"true"`
	Enabled     *bool                                            `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛEnabled    []ygot.Annotation                                `path:"config/@enabled" ygotAnnotation:"true"`
	Mtu         *uint16                                          `path:"config/mtu" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛMtu        []ygot.Annotation                                `path:"config/@mtu" ygotAnnotation:"true"`
	Neighbor    map[string]*Interface_Subinterface_Ipv4_Neighbor `path:"neighbors/neighbor" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛNeighbor   []ygot.Annotation                                `path:"neighbors/@neighbor" ygotAnnotation:"true"`
	ProxyArp    *Interface_Subinterface_Ipv4_ProxyArp            `path:"proxy-arp" module:"openconfig-if-ip"`
	ΛProxyArp   []ygot.Annotation                                `path:"@proxy-arp" ygotAnnotation:"true"`
	Unnumbered  *Interface_Subinterface_Ipv4_Unnumbered          `path:"unnumbered" module:"openconfig-if-ip"`
	ΛUnnumbered []ygot.Annotation                                `path:"@unnumbered" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv4) IsYANGGoStruct() {}

// NewAddress creates a new entry in the Address list of the
// Interface_Subinterface_Ipv4 struct. The keys of the list are populated from the input
// arguments.
func (t *Interface_Subinterface_Ipv4) NewAddress(Ip string) (*Interface_Subinterface_Ipv4_Address, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Address == nil {
		t.Address = make(map[string]*Interface_Subinterface_Ipv4_Address)
	}

	key := Ip

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Address[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Address", key)
	}

	t.Address[key] = &Interface_Subinterface_Ipv4_Address{
		Ip: &Ip,
	}

	return t.Address[key], nil
}

// RenameAddress renames an entry in the list Address within
// the Interface_Subinterface_Ipv4 struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Interface_Subinterface_Ipv4) RenameAddress(oldK, newK string) error {
	if _, ok := t.Address[newK]; ok {
		return fmt.Errorf("key %v already exists in Address", newK)
	}

	e, ok := t.Address[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Address", oldK)
	}
	e.Ip = &newK

	t.Address[newK] = e
	delete(t.Address, oldK)
	return nil
}

// GetOrCreateAddressMap returns the list (map) from Interface_Subinterface_Ipv4.
//
// It initializes the field if not already initialized.
func (t *Interface_Subinterface_Ipv4) GetOrCreateAddressMap() map[string]*Interface_Subinterface_Ipv4_Address {
	if t.Address == nil {
		t.Address = make(map[string]*Interface_Subinterface_Ipv4_Address)
	}
	return t.Address
}

// GetOrCreateAddress retrieves the value with the specified keys from
// the receiver Interface_Subinterface_Ipv4. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Interface_Subinterface_Ipv4) GetOrCreateAddress(Ip string) *Interface_Subinterface_Ipv4_Address {

	key := Ip

	if v, ok := t.Address[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAddress(Ip)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAddress got unexpected error: %v", err))
	}
	return v
}

// GetAddress retrieves the value with the specified key from
// the Address map field of Interface_Subinterface_Ipv4. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Interface_Subinterface_Ipv4) GetAddress(Ip string) *Interface_Subinterface_Ipv4_Address {

	if t == nil {
		return nil
	}

	key := Ip

	if lm, ok := t.Address[key]; ok {
		return lm
	}
	return nil
}

// AppendAddress appends the supplied Interface_Subinterface_Ipv4_Address struct to the
// list Address of Interface_Subinterface_Ipv4. If the key value(s) specified in
// the supplied Interface_Subinterface_Ipv4_Address already exist in the list, an error is
// returned.
func (t *Interface_Subinterface_Ipv4) AppendAddress(v *Interface_Subinterface_Ipv4_Address) error {
	if v.Ip == nil {
		return fmt.Errorf("invalid nil key received for Ip")
	}

	key := *v.Ip

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Address == nil {
		t.Address = make(map[string]*Interface_Subinterface_Ipv4_Address)
	}

	if _, ok := t.Address[key]; ok {
		return fmt.Errorf("duplicate key for list Address %v", key)
	}

	t.Address[key] = v
	return nil
}

// NewNeighbor creates a new entry in the Neighbor list of the
// Interface_Subinterface_Ipv4 struct. The keys of the list are populated from the input
// arguments.
func (t *Interface_Subinterface_Ipv4) NewNeighbor(Ip string) (*Interface_Subinterface_Ipv4_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*Interface_Subinterface_Ipv4_Neighbor)
	}

	key := Ip

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &Interface_Subinterface_Ipv4_Neighbor{
		Ip: &Ip,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the Interface_Subinterface_Ipv4 struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Interface_Subinterface_Ipv4) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.Ip = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from Interface_Subinterface_Ipv4.
//
// It initializes the field if not already initialized.
func (t *Interface_Subinterface_Ipv4) GetOrCreateNeighborMap() map[string]*Interface_Subinterface_Ipv4_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*Interface_Subinterface_Ipv4_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver Interface_Subinterface_Ipv4. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Interface_Subinterface_Ipv4) GetOrCreateNeighbor(Ip string) *Interface_Subinterface_Ipv4_Neighbor {

	key := Ip

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(Ip)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of Interface_Subinterface_Ipv4. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Interface_Subinterface_Ipv4) GetNeighbor(Ip string) *Interface_Subinterface_Ipv4_Neighbor {

	if t == nil {
		return nil
	}

	key := Ip

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied Interface_Subinterface_Ipv4_Neighbor struct to the
// list Neighbor of Interface_Subinterface_Ipv4. If the key value(s) specified in
// the supplied Interface_Subinterface_Ipv4_Neighbor already exist in the list, an error is
// returned.
func (t *Interface_Subinterface_Ipv4) AppendNeighbor(v *Interface_Subinterface_Ipv4_Neighbor) error {
	if v.Ip == nil {
		return fmt.Errorf("invalid nil key received for Ip")
	}

	key := *v.Ip

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*Interface_Subinterface_Ipv4_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Ipv4) GetOrCreateCounters() *Interface_Subinterface_Ipv4_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &Interface_Subinterface_Ipv4_Counters{}
	return t.Counters
}

// GetOrCreateProxyArp retrieves the value of the ProxyArp field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Ipv4) GetOrCreateProxyArp() *Interface_Subinterface_Ipv4_ProxyArp {
	if t.ProxyArp != nil {
		return t.ProxyArp
	}
	t.ProxyArp = &Interface_Subinterface_Ipv4_ProxyArp{}
	return t.ProxyArp
}

// GetOrCreateUnnumbered retrieves the value of the Unnumbered field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Ipv4) GetOrCreateUnnumbered() *Interface_Subinterface_Ipv4_Unnumbered {
	if t.Unnumbered != nil {
		return t.Unnumbered
	}
	t.Unnumbered = &Interface_Subinterface_Ipv4_Unnumbered{}
	return t.Unnumbered
}

// GetCounters returns the value of the Counters struct pointer
// from Interface_Subinterface_Ipv4. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Ipv4) GetCounters() *Interface_Subinterface_Ipv4_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetProxyArp returns the value of the ProxyArp struct pointer
// from Interface_Subinterface_Ipv4. If the receiver or the field ProxyArp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Ipv4) GetProxyArp() *Interface_Subinterface_Ipv4_ProxyArp {
	if t != nil && t.ProxyArp != nil {
		return t.ProxyArp
	}
	return nil
}

// GetUnnumbered returns the value of the Unnumbered struct pointer
// from Interface_Subinterface_Ipv4. If the receiver or the field Unnumbered is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Ipv4) GetUnnumbered() *Interface_Subinterface_Ipv4_Unnumbered {
	if t != nil && t.Unnumbered != nil {
		return t.Unnumbered
	}
	return nil
}

// GetDhcpClient retrieves the value of the leaf DhcpClient from the Interface_Subinterface_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DhcpClient is set, it can
// safely use t.GetDhcpClient() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DhcpClient == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4) GetDhcpClient() bool {
	if t == nil || t.DhcpClient == nil {
		return false
	}
	return *t.DhcpClient
}

// GetEnabled retrieves the value of the leaf Enabled from the Interface_Subinterface_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return true
	}
	return *t.Enabled
}

// GetMtu retrieves the value of the leaf Mtu from the Interface_Subinterface_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mtu is set, it can
// safely use t.GetMtu() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mtu == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4) GetMtu() uint16 {
	if t == nil || t.Mtu == nil {
		return 0
	}
	return *t.Mtu
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv4
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv4) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DhcpClient == nil {
		var v bool = false
		t.DhcpClient = &v
	}
	if t.Enabled == nil {
		var v bool = true
		t.Enabled = &v
	}
	t.Counters.PopulateDefaults()
	t.ProxyArp.PopulateDefaults()
	t.Unnumbered.PopulateDefaults()
	for _, e := range t.Address {
		e.PopulateDefaults()
	}
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv4) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv4.
func (*Interface_Subinterface_Ipv4) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv4_Address represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address YANG schema element.
type Interface_Subinterface_Ipv4_Address struct {
	ΛMetadata     []ygot.Annotation                                        `path:"@" ygotAnnotation:"true"`
	Ip            *string                                                  `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"`
	ΛIp           []ygot.Annotation                                        `path:"config/@ip|@ip" ygotAnnotation:"true"`
	Origin        E_IfIp_IpAddressOrigin                                   `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛOrigin       []ygot.Annotation                                        `path:"state/@origin" ygotAnnotation:"true"`
	PrefixLength  *uint8                                                   `path:"config/prefix-length" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPrefixLength []ygot.Annotation                                        `path:"config/@prefix-length" ygotAnnotation:"true"`
	Type          E_IfIp_Ipv4AddressType                                   `path:"config/type" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛType         []ygot.Annotation                                        `path:"config/@type" ygotAnnotation:"true"`
	VrrpGroup     map[uint8]*Interface_Subinterface_Ipv4_Address_VrrpGroup `path:"vrrp/vrrp-group" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛVrrpGroup    []ygot.Annotation                                        `path:"vrrp/@vrrp-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Address implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv4_Address) IsYANGGoStruct() {}

// NewVrrpGroup creates a new entry in the VrrpGroup list of the
// Interface_Subinterface_Ipv4_Address struct. The keys of the list are populated from the input
// arguments.
func (t *Interface_Subinterface_Ipv4_Address) NewVrrpGroup(VirtualRouterId uint8) (*Interface_Subinterface_Ipv4_Address_VrrpGroup, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.VrrpGroup == nil {
		t.VrrpGroup = make(map[uint8]*Interface_Subinterface_Ipv4_Address_VrrpGroup)
	}

	key := VirtualRouterId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.VrrpGroup[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list VrrpGroup", key)
	}

	t.VrrpGroup[key] = &Interface_Subinterface_Ipv4_Address_VrrpGroup{
		VirtualRouterId: &VirtualRouterId,
	}

	return t.VrrpGroup[key], nil
}

// RenameVrrpGroup renames an entry in the list VrrpGroup within
// the Interface_Subinterface_Ipv4_Address struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Interface_Subinterface_Ipv4_Address) RenameVrrpGroup(oldK, newK uint8) error {
	if _, ok := t.VrrpGroup[newK]; ok {
		return fmt.Errorf("key %v already exists in VrrpGroup", newK)
	}

	e, ok := t.VrrpGroup[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in VrrpGroup", oldK)
	}
	e.VirtualRouterId = &newK

	t.VrrpGroup[newK] = e
	delete(t.VrrpGroup, oldK)
	return nil
}

// GetOrCreateVrrpGroupMap returns the list (map) from Interface_Subinterface_Ipv4_Address.
//
// It initializes the field if not already initialized.
func (t *Interface_Subinterface_Ipv4_Address) GetOrCreateVrrpGroupMap() map[uint8]*Interface_Subinterface_Ipv4_Address_VrrpGroup {
	if t.VrrpGroup == nil {
		t.VrrpGroup = make(map[uint8]*Interface_Subinterface_Ipv4_Address_VrrpGroup)
	}
	return t.VrrpGroup
}

// GetOrCreateVrrpGroup retrieves the value with the specified keys from
// the receiver Interface_Subinterface_Ipv4_Address. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Interface_Subinterface_Ipv4_Address) GetOrCreateVrrpGroup(VirtualRouterId uint8) *Interface_Subinterface_Ipv4_Address_VrrpGroup {

	key := VirtualRouterId

	if v, ok := t.VrrpGroup[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewVrrpGroup(VirtualRouterId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateVrrpGroup got unexpected error: %v", err))
	}
	return v
}

// GetVrrpGroup retrieves the value with the specified key from
// the VrrpGroup map field of Interface_Subinterface_Ipv4_Address. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Interface_Subinterface_Ipv4_Address) GetVrrpGroup(VirtualRouterId uint8) *Interface_Subinterface_Ipv4_Address_VrrpGroup {

	if t == nil {
		return nil
	}

	key := VirtualRouterId

	if lm, ok := t.VrrpGroup[key]; ok {
		return lm
	}
	return nil
}

// AppendVrrpGroup appends the supplied Interface_Subinterface_Ipv4_Address_VrrpGroup struct to the
// list VrrpGroup of Interface_Subinterface_Ipv4_Address. If the key value(s) specified in
// the supplied Interface_Subinterface_Ipv4_Address_VrrpGroup already exist in the list, an error is
// returned.
func (t *Interface_Subinterface_Ipv4_Address) AppendVrrpGroup(v *Interface_Subinterface_Ipv4_Address_VrrpGroup) error {
	if v.VirtualRouterId == nil {
		return fmt.Errorf("invalid nil key received for VirtualRouterId")
	}

	key := *v.VirtualRouterId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.VrrpGroup == nil {
		t.VrrpGroup = make(map[uint8]*Interface_Subinterface_Ipv4_Address_VrrpGroup)
	}

	if _, ok := t.VrrpGroup[key]; ok {
		return fmt.Errorf("duplicate key for list VrrpGroup %v", key)
	}

	t.VrrpGroup[key] = v
	return nil
}

// GetIp retrieves the value of the leaf Ip from the Interface_Subinterface_Ipv4_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ip is set, it can
// safely use t.GetIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ip == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Address) GetIp() string {
	if t == nil || t.Ip == nil {
		return ""
	}
	return *t.Ip
}

// GetOrigin retrieves the value of the leaf Origin from the Interface_Subinterface_Ipv4_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Origin is set, it can
// safely use t.GetOrigin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Origin == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Address) GetOrigin() E_IfIp_IpAddressOrigin {
	if t == nil || t.Origin == 0 {
		return 0
	}
	return t.Origin
}

// GetPrefixLength retrieves the value of the leaf PrefixLength from the Interface_Subinterface_Ipv4_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLength is set, it can
// safely use t.GetPrefixLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLength == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Address) GetPrefixLength() uint8 {
	if t == nil || t.PrefixLength == nil {
		return 0
	}
	return *t.PrefixLength
}

// GetType retrieves the value of the leaf Type from the Interface_Subinterface_Ipv4_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Address) GetType() E_IfIp_Ipv4AddressType {
	if t == nil || t.Type == 0 {
		return IfIp_Ipv4AddressType_PRIMARY
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv4_Address
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv4_Address) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Type == 0 {
		t.Type = IfIp_Ipv4AddressType_PRIMARY
	}
	for _, e := range t.VrrpGroup {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv4_Address struct, which is a YANG list entry.
func (t *Interface_Subinterface_Ipv4_Address) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Ip == nil {
		return nil, fmt.Errorf("nil value for key Ip")
	}

	return map[string]interface{}{
		"ip": *t.Ip,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4_Address) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Address"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4_Address) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv4_Address) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv4_Address.
func (*Interface_Subinterface_Ipv4_Address) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv4_Address_VrrpGroup represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group YANG schema element.
type Interface_Subinterface_Ipv4_Address_VrrpGroup struct {
	ΛMetadata              []ygot.Annotation                                                `path:"@" ygotAnnotation:"true"`
	AcceptMode             *bool                                                            `path:"config/accept-mode" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛAcceptMode            []ygot.Annotation                                                `path:"config/@accept-mode" ygotAnnotation:"true"`
	AdvertisementInterval  *uint16                                                          `path:"config/advertisement-interval" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛAdvertisementInterval []ygot.Annotation                                                `path:"config/@advertisement-interval" ygotAnnotation:"true"`
	CurrentPriority        *uint8                                                           `path:"state/current-priority" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛCurrentPriority       []ygot.Annotation                                                `path:"state/@current-priority" ygotAnnotation:"true"`
	InterfaceTracking      *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking `path:"interface-tracking" module:"openconfig-if-ip"`
	ΛInterfaceTracking     []ygot.Annotation                                                `path:"@interface-tracking" ygotAnnotation:"true"`
	Preempt                *bool                                                            `path:"config/preempt" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPreempt               []ygot.Annotation                                                `path:"config/@preempt" ygotAnnotation:"true"`
	PreemptDelay           *uint16                                                          `path:"config/preempt-delay" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPreemptDelay          []ygot.Annotation                                                `path:"config/@preempt-delay" ygotAnnotation:"true"`
	Priority               *uint8                                                           `path:"config/priority" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPriority              []ygot.Annotation                                                `path:"config/@priority" ygotAnnotation:"true"`
	VirtualAddress         []string                                                         `path:"config/virtual-address" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛVirtualAddress        []ygot.Annotation                                                `path:"config/@virtual-address" ygotAnnotation:"true"`
	VirtualRouterId        *uint8                                                           `path:"config/virtual-router-id|virtual-router-id" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"`
	ΛVirtualRouterId       []ygot.Annotation                                                `path:"config/@virtual-router-id|@virtual-router-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Address_VrrpGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv4_Address_VrrpGroup) IsYANGGoStruct() {}

// GetOrCreateInterfaceTracking retrieves the value of the InterfaceTracking field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) GetOrCreateInterfaceTracking() *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking {
	if t.InterfaceTracking != nil {
		return t.InterfaceTracking
	}
	t.InterfaceTracking = &Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking{}
	return t.InterfaceTracking
}

// GetInterfaceTracking returns the value of the InterfaceTracking struct pointer
// from Interface_Subinterface_Ipv4_Address_VrrpGroup. If the receiver or the field InterfaceTracking is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) GetInterfaceTracking() *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking {
	if t != nil && t.InterfaceTracking != nil {
		return t.InterfaceTracking
	}
	return nil
}

// GetAcceptMode retrieves the value of the leaf AcceptMode from the Interface_Subinterface_Ipv4_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AcceptMode is set, it can
// safely use t.GetAcceptMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AcceptMode == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) GetAcceptMode() bool {
	if t == nil || t.AcceptMode == nil {
		return false
	}
	return *t.AcceptMode
}

// GetAdvertisementInterval retrieves the value of the leaf AdvertisementInterval from the Interface_Subinterface_Ipv4_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdvertisementInterval is set, it can
// safely use t.GetAdvertisementInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdvertisementInterval == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) GetAdvertisementInterval() uint16 {
	if t == nil || t.AdvertisementInterval == nil {
		return 100
	}
	return *t.AdvertisementInterval
}

// GetCurrentPriority retrieves the value of the leaf CurrentPriority from the Interface_Subinterface_Ipv4_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CurrentPriority is set, it can
// safely use t.GetCurrentPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CurrentPriority == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) GetCurrentPriority() uint8 {
	if t == nil || t.CurrentPriority == nil {
		return 0
	}
	return *t.CurrentPriority
}

// GetPreempt retrieves the value of the leaf Preempt from the Interface_Subinterface_Ipv4_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Preempt is set, it can
// safely use t.GetPreempt() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Preempt == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) GetPreempt() bool {
	if t == nil || t.Preempt == nil {
		return true
	}
	return *t.Preempt
}

// GetPreemptDelay retrieves the value of the leaf PreemptDelay from the Interface_Subinterface_Ipv4_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreemptDelay is set, it can
// safely use t.GetPreemptDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreemptDelay == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) GetPreemptDelay() uint16 {
	if t == nil || t.PreemptDelay == nil {
		return 0
	}
	return *t.PreemptDelay
}

// GetPriority retrieves the value of the leaf Priority from the Interface_Subinterface_Ipv4_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) GetPriority() uint8 {
	if t == nil || t.Priority == nil {
		return 100
	}
	return *t.Priority
}

// GetVirtualAddress retrieves the value of the leaf VirtualAddress from the Interface_Subinterface_Ipv4_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VirtualAddress is set, it can
// safely use t.GetVirtualAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VirtualAddress == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) GetVirtualAddress() []string {
	if t == nil || t.VirtualAddress == nil {
		return nil
	}
	return t.VirtualAddress
}

// GetVirtualRouterId retrieves the value of the leaf VirtualRouterId from the Interface_Subinterface_Ipv4_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VirtualRouterId is set, it can
// safely use t.GetVirtualRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VirtualRouterId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) GetVirtualRouterId() uint8 {
	if t == nil || t.VirtualRouterId == nil {
		return 0
	}
	return *t.VirtualRouterId
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv4_Address_VrrpGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AcceptMode == nil {
		var v bool = false
		t.AcceptMode = &v
	}
	if t.AdvertisementInterval == nil {
		var v uint16 = 100
		t.AdvertisementInterval = &v
	}
	if t.Preempt == nil {
		var v bool = true
		t.Preempt = &v
	}
	if t.PreemptDelay == nil {
		var v uint16 = 0
		t.PreemptDelay = &v
	}
	if t.Priority == nil {
		var v uint8 = 100
		t.Priority = &v
	}
	t.InterfaceTracking.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv4_Address_VrrpGroup struct, which is a YANG list entry.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) ΛListKeyMap() (map[string]interface{}, error) {
	if t.VirtualRouterId == nil {
		return nil, fmt.Errorf("nil value for key VirtualRouterId")
	}

	return map[string]interface{}{
		"virtual-router-id": *t.VirtualRouterId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Address_VrrpGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv4_Address_VrrpGroup.
func (*Interface_Subinterface_Ipv4_Address_VrrpGroup) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group/interface-tracking YANG schema element.
type Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	PriorityDecrement  *uint8            `path:"config/priority-decrement" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPriorityDecrement []ygot.Annotation `path:"config/@priority-decrement" ygotAnnotation:"true"`
	TrackInterface     []string          `path:"config/track-interface" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛTrackInterface    []ygot.Annotation `path:"config/@track-interface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) IsYANGGoStruct() {}

// GetPriorityDecrement retrieves the value of the leaf PriorityDecrement from the Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PriorityDecrement is set, it can
// safely use t.GetPriorityDecrement() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PriorityDecrement == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) GetPriorityDecrement() uint8 {
	if t == nil || t.PriorityDecrement == nil {
		return 0
	}
	return *t.PriorityDecrement
}

// GetTrackInterface retrieves the value of the leaf TrackInterface from the Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TrackInterface is set, it can
// safely use t.GetTrackInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TrackInterface == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) GetTrackInterface() []string {
	if t == nil || t.TrackInterface == nil {
		return nil
	}
	return t.TrackInterface
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PriorityDecrement == nil {
		var v uint8 = 0
		t.PriorityDecrement = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking.
func (*Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv4_Counters represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters YANG schema element.
type Interface_Subinterface_Ipv4_Counters struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	InDiscardedPkts     *uint64           `path:"in-discarded-pkts" module:"openconfig-if-ip"`
	ΛInDiscardedPkts    []ygot.Annotation `path:"@in-discarded-pkts" ygotAnnotation:"true"`
	InErrorPkts         *uint64           `path:"in-error-pkts" module:"openconfig-if-ip"`
	ΛInErrorPkts        []ygot.Annotation `path:"@in-error-pkts" ygotAnnotation:"true"`
	InForwardedOctets   *uint64           `path:"in-forwarded-octets" module:"openconfig-if-ip"`
	ΛInForwardedOctets  []ygot.Annotation `path:"@in-forwarded-octets" ygotAnnotation:"true"`
	InForwardedPkts     *uint64           `path:"in-forwarded-pkts" module:"openconfig-if-ip"`
	ΛInForwardedPkts    []ygot.Annotation `path:"@in-forwarded-pkts" ygotAnnotation:"true"`
	InMulticastOctets   *uint64           `path:"in-multicast-octets" module:"openconfig-if-ip"`
	ΛInMulticastOctets  []ygot.Annotation `path:"@in-multicast-octets" ygotAnnotation:"true"`
	InMulticastPkts     *uint64           `path:"in-multicast-pkts" module:"openconfig-if-ip"`
	ΛInMulticastPkts    []ygot.Annotation `path:"@in-multicast-pkts" ygotAnnotation:"true"`
	InOctets            *uint64           `path:"in-octets" module:"openconfig-if-ip"`
	ΛInOctets           []ygot.Annotation `path:"@in-octets" ygotAnnotation:"true"`
	InPkts              *uint64           `path:"in-pkts" module:"openconfig-if-ip"`
	ΛInPkts             []ygot.Annotation `path:"@in-pkts" ygotAnnotation:"true"`
	OutDiscardedPkts    *uint64           `path:"out-discarded-pkts" module:"openconfig-if-ip"`
	ΛOutDiscardedPkts   []ygot.Annotation `path:"@out-discarded-pkts" ygotAnnotation:"true"`
	OutErrorPkts        *uint64           `path:"out-error-pkts" module:"openconfig-if-ip"`
	ΛOutErrorPkts       []ygot.Annotation `path:"@out-error-pkts" ygotAnnotation:"true"`
	OutForwardedOctets  *uint64           `path:"out-forwarded-octets" module:"openconfig-if-ip"`
	ΛOutForwardedOctets []ygot.Annotation `path:"@out-forwarded-octets" ygotAnnotation:"true"`
	OutForwardedPkts    *uint64           `path:"out-forwarded-pkts" module:"openconfig-if-ip"`
	ΛOutForwardedPkts   []ygot.Annotation `path:"@out-forwarded-pkts" ygotAnnotation:"true"`
	OutMulticastOctets  *uint64           `path:"out-multicast-octets" module:"openconfig-if-ip"`
	ΛOutMulticastOctets []ygot.Annotation `path:"@out-multicast-octets" ygotAnnotation:"true"`
	OutMulticastPkts    *uint64           `path:"out-multicast-pkts" module:"openconfig-if-ip"`
	ΛOutMulticastPkts   []ygot.Annotation `path:"@out-multicast-pkts" ygotAnnotation:"true"`
	OutOctets           *uint64           `path:"out-octets" module:"openconfig-if-ip"`
	ΛOutOctets          []ygot.Annotation `path:"@out-octets" ygotAnnotation:"true"`
	OutPkts             *uint64           `path:"out-pkts" module:"openconfig-if-ip"`
	ΛOutPkts            []ygot.Annotation `path:"@out-pkts" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv4_Counters) IsYANGGoStruct() {}

// GetInDiscardedPkts retrieves the value of the leaf InDiscardedPkts from the Interface_Subinterface_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InDiscardedPkts is set, it can
// safely use t.GetInDiscardedPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InDiscardedPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Counters) GetInDiscardedPkts() uint64 {
	if t == nil || t.InDiscardedPkts == nil {
		return 0
	}
	return *t.InDiscardedPkts
}

// GetInErrorPkts retrieves the value of the leaf InErrorPkts from the Interface_Subinterface_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InErrorPkts is set, it can
// safely use t.GetInErrorPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InErrorPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Counters) GetInErrorPkts() uint64 {
	if t == nil || t.InErrorPkts == nil {
		return 0
	}
	return *t.InErrorPkts
}

// GetInForwardedOctets retrieves the value of the leaf InForwardedOctets from the Interface_Subinterface_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InForwardedOctets is set, it can
// safely use t.GetInForwardedOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InForwardedOctets == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Counters) GetInForwardedOctets() uint64 {
	if t == nil || t.InForwardedOctets == nil {
		return 0
	}
	return *t.InForwardedOctets
}

// GetInForwardedPkts retrieves the value of the leaf InForwardedPkts from the Interface_Subinterface_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InForwardedPkts is set, it can
// safely use t.GetInForwardedPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InForwardedPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Counters) GetInForwardedPkts() uint64 {
	if t == nil || t.InForwardedPkts == nil {
		return 0
	}
	return *t.InForwardedPkts
}

// GetInMulticastOctets retrieves the value of the leaf InMulticastOctets from the Interface_Subinterface_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMulticastOctets is set, it can
// safely use t.GetInMulticastOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMulticastOctets == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Counters) GetInMulticastOctets() uint64 {
	if t == nil || t.InMulticastOctets == nil {
		return 0
	}
	return *t.InMulticastOctets
}

// GetInMulticastPkts retrieves the value of the leaf InMulticastPkts from the Interface_Subinterface_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMulticastPkts is set, it can
// safely use t.GetInMulticastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMulticastPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Counters) GetInMulticastPkts() uint64 {
	if t == nil || t.InMulticastPkts == nil {
		return 0
	}
	return *t.InMulticastPkts
}

// GetInOctets retrieves the value of the leaf InOctets from the Interface_Subinterface_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InOctets is set, it can
// safely use t.GetInOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InOctets == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Counters) GetInOctets() uint64 {
	if t == nil || t.InOctets == nil {
		return 0
	}
	return *t.InOctets
}

// GetInPkts retrieves the value of the leaf InPkts from the Interface_Subinterface_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPkts is set, it can
// safely use t.GetInPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Counters) GetInPkts() uint64 {
	if t == nil || t.InPkts == nil {
		return 0
	}
	return *t.InPkts
}

// GetOutDiscardedPkts retrieves the value of the leaf OutDiscardedPkts from the Interface_Subinterface_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutDiscardedPkts is set, it can
// safely use t.GetOutDiscardedPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutDiscardedPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Counters) GetOutDiscardedPkts() uint64 {
	if t == nil || t.OutDiscardedPkts == nil {
		return 0
	}
	return *t.OutDiscardedPkts
}

// GetOutErrorPkts retrieves the value of the leaf OutErrorPkts from the Interface_Subinterface_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutErrorPkts is set, it can
// safely use t.GetOutErrorPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutErrorPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Counters) GetOutErrorPkts() uint64 {
	if t == nil || t.OutErrorPkts == nil {
		return 0
	}
	return *t.OutErrorPkts
}

// GetOutForwardedOctets retrieves the value of the leaf OutForwardedOctets from the Interface_Subinterface_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutForwardedOctets is set, it can
// safely use t.GetOutForwardedOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutForwardedOctets == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Counters) GetOutForwardedOctets() uint64 {
	if t == nil || t.OutForwardedOctets == nil {
		return 0
	}
	return *t.OutForwardedOctets
}

// GetOutForwardedPkts retrieves the value of the leaf OutForwardedPkts from the Interface_Subinterface_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutForwardedPkts is set, it can
// safely use t.GetOutForwardedPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutForwardedPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Counters) GetOutForwardedPkts() uint64 {
	if t == nil || t.OutForwardedPkts == nil {
		return 0
	}
	return *t.OutForwardedPkts
}

// GetOutMulticastOctets retrieves the value of the leaf OutMulticastOctets from the Interface_Subinterface_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutMulticastOctets is set, it can
// safely use t.GetOutMulticastOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutMulticastOctets == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Counters) GetOutMulticastOctets() uint64 {
	if t == nil || t.OutMulticastOctets == nil {
		return 0
	}
	return *t.OutMulticastOctets
}

// GetOutMulticastPkts retrieves the value of the leaf OutMulticastPkts from the Interface_Subinterface_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutMulticastPkts is set, it can
// safely use t.GetOutMulticastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutMulticastPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Counters) GetOutMulticastPkts() uint64 {
	if t == nil || t.OutMulticastPkts == nil {
		return 0
	}
	return *t.OutMulticastPkts
}

// GetOutOctets retrieves the value of the leaf OutOctets from the Interface_Subinterface_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutOctets is set, it can
// safely use t.GetOutOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutOctets == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Counters) GetOutOctets() uint64 {
	if t == nil || t.OutOctets == nil {
		return 0
	}
	return *t.OutOctets
}

// GetOutPkts retrieves the value of the leaf OutPkts from the Interface_Subinterface_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPkts is set, it can
// safely use t.GetOutPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Counters) GetOutPkts() uint64 {
	if t == nil || t.OutPkts == nil {
		return 0
	}
	return *t.OutPkts
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv4_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv4_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv4_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv4_Counters.
func (*Interface_Subinterface_Ipv4_Counters) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv4_Neighbor represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/neighbors/neighbor YANG schema element.
type Interface_Subinterface_Ipv4_Neighbor struct {
	ΛMetadata         []ygot.Annotation     `path:"@" ygotAnnotation:"true"`
	Ip                *string               `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"`
	ΛIp               []ygot.Annotation     `path:"config/@ip|@ip" ygotAnnotation:"true"`
	LinkLayerAddress  *string               `path:"config/link-layer-address" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛLinkLayerAddress []ygot.Annotation     `path:"config/@link-layer-address" ygotAnnotation:"true"`
	Origin            E_IfIp_NeighborOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛOrigin           []ygot.Annotation     `path:"state/@origin" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv4_Neighbor) IsYANGGoStruct() {}

// GetIp retrieves the value of the leaf Ip from the Interface_Subinterface_Ipv4_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ip is set, it can
// safely use t.GetIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ip == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Neighbor) GetIp() string {
	if t == nil || t.Ip == nil {
		return ""
	}
	return *t.Ip
}

// GetLinkLayerAddress retrieves the value of the leaf LinkLayerAddress from the Interface_Subinterface_Ipv4_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkLayerAddress is set, it can
// safely use t.GetLinkLayerAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkLayerAddress == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Neighbor) GetLinkLayerAddress() string {
	if t == nil || t.LinkLayerAddress == nil {
		return ""
	}
	return *t.LinkLayerAddress
}

// GetOrigin retrieves the value of the leaf Origin from the Interface_Subinterface_Ipv4_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Origin is set, it can
// safely use t.GetOrigin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Origin == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Neighbor) GetOrigin() E_IfIp_NeighborOrigin {
	if t == nil || t.Origin == 0 {
		return 0
	}
	return t.Origin
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv4_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv4_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv4_Neighbor struct, which is a YANG list entry.
func (t *Interface_Subinterface_Ipv4_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Ip == nil {
		return nil, fmt.Errorf("nil value for key Ip")
	}

	return map[string]interface{}{
		"ip": *t.Ip,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv4_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv4_Neighbor.
func (*Interface_Subinterface_Ipv4_Neighbor) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv4_ProxyArp represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/proxy-arp YANG schema element.
type Interface_Subinterface_Ipv4_ProxyArp struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Mode      E_ProxyArp_Mode   `path:"config/mode" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛMode     []ygot.Annotation `path:"config/@mode" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_ProxyArp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv4_ProxyArp) IsYANGGoStruct() {}

// GetMode retrieves the value of the leaf Mode from the Interface_Subinterface_Ipv4_ProxyArp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mode is set, it can
// safely use t.GetMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mode == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_ProxyArp) GetMode() E_ProxyArp_Mode {
	if t == nil || t.Mode == 0 {
		return ProxyArp_Mode_DISABLE
	}
	return t.Mode
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv4_ProxyArp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv4_ProxyArp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Mode == 0 {
		t.Mode = ProxyArp_Mode_DISABLE
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4_ProxyArp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_ProxyArp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4_ProxyArp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv4_ProxyArp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv4_ProxyArp.
func (*Interface_Subinterface_Ipv4_ProxyArp) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv4_Unnumbered represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/unnumbered YANG schema element.
type Interface_Subinterface_Ipv4_Unnumbered struct {
	ΛMetadata     []ygot.Annotation                                    `path:"@" ygotAnnotation:"true"`
	Enabled       *bool                                                `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛEnabled      []ygot.Annotation                                    `path:"config/@enabled" ygotAnnotation:"true"`
	InterfaceRef  *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef `path:"interface-ref" module:"openconfig-if-ip"`
	ΛInterfaceRef []ygot.Annotation                                    `path:"@interface-ref" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Unnumbered implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv4_Unnumbered) IsYANGGoStruct() {}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Ipv4_Unnumbered) GetOrCreateInterfaceRef() *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef{}
	return t.InterfaceRef
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from Interface_Subinterface_Ipv4_Unnumbered. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Ipv4_Unnumbered) GetInterfaceRef() *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetEnabled retrieves the value of the leaf Enabled from the Interface_Subinterface_Ipv4_Unnumbered
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Unnumbered) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv4_Unnumbered
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv4_Unnumbered) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	t.InterfaceRef.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4_Unnumbered) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Unnumbered"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4_Unnumbered) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv4_Unnumbered) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv4_Unnumbered.
func (*Interface_Subinterface_Ipv4_Unnumbered) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/unnumbered/interface-ref YANG schema element.
type Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef.
func (*Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv6 represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6 YANG schema element.
type Interface_Subinterface_Ipv6 struct {
	ΛMetadata               []ygot.Annotation                                `path:"@" ygotAnnotation:"true"`
	Address                 map[string]*Interface_Subinterface_Ipv6_Address  `path:"addresses/address" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛAddress                []ygot.Annotation                                `path:"addresses/@address" ygotAnnotation:"true"`
	Autoconf                *Interface_Subinterface_Ipv6_Autoconf            `path:"autoconf" module:"openconfig-if-ip-ext"`
	ΛAutoconf               []ygot.Annotation                                `path:"@autoconf" ygotAnnotation:"true"`
	Counters                *Interface_Subinterface_Ipv6_Counters            `path:"state/counters" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛCounters               []ygot.Annotation                                `path:"state/@counters" ygotAnnotation:"true"`
	DhcpClient              *bool                                            `path:"config/dhcp-client" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛDhcpClient             []ygot.Annotation                                `path:"config/@dhcp-client" ygotAnnotation:"true"`
	DupAddrDetectTransmits  *uint32                                          `path:"config/dup-addr-detect-transmits" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛDupAddrDetectTransmits []ygot.Annotation                                `path:"config/@dup-addr-detect-transmits" ygotAnnotation:"true"`
	Enabled                 *bool                                            `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛEnabled                []ygot.Annotation                                `path:"config/@enabled" ygotAnnotation:"true"`
	Mtu                     *uint32                                          `path:"config/mtu" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛMtu                    []ygot.Annotation                                `path:"config/@mtu" ygotAnnotation:"true"`
	Neighbor                map[string]*Interface_Subinterface_Ipv6_Neighbor `path:"neighbors/neighbor" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛNeighbor               []ygot.Annotation                                `path:"neighbors/@neighbor" ygotAnnotation:"true"`
	RouterAdvertisement     *Interface_Subinterface_Ipv6_RouterAdvertisement `path:"router-advertisement" module:"openconfig-if-ip"`
	ΛRouterAdvertisement    []ygot.Annotation                                `path:"@router-advertisement" ygotAnnotation:"true"`
	Unnumbered              *Interface_Subinterface_Ipv6_Unnumbered          `path:"unnumbered" module:"openconfig-if-ip"`
	ΛUnnumbered             []ygot.Annotation                                `path:"@unnumbered" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv6) IsYANGGoStruct() {}

// NewAddress creates a new entry in the Address list of the
// Interface_Subinterface_Ipv6 struct. The keys of the list are populated from the input
// arguments.
func (t *Interface_Subinterface_Ipv6) NewAddress(Ip string) (*Interface_Subinterface_Ipv6_Address, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Address == nil {
		t.Address = make(map[string]*Interface_Subinterface_Ipv6_Address)
	}

	key := Ip

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Address[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Address", key)
	}

	t.Address[key] = &Interface_Subinterface_Ipv6_Address{
		Ip: &Ip,
	}

	return t.Address[key], nil
}

// RenameAddress renames an entry in the list Address within
// the Interface_Subinterface_Ipv6 struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Interface_Subinterface_Ipv6) RenameAddress(oldK, newK string) error {
	if _, ok := t.Address[newK]; ok {
		return fmt.Errorf("key %v already exists in Address", newK)
	}

	e, ok := t.Address[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Address", oldK)
	}
	e.Ip = &newK

	t.Address[newK] = e
	delete(t.Address, oldK)
	return nil
}

// GetOrCreateAddressMap returns the list (map) from Interface_Subinterface_Ipv6.
//
// It initializes the field if not already initialized.
func (t *Interface_Subinterface_Ipv6) GetOrCreateAddressMap() map[string]*Interface_Subinterface_Ipv6_Address {
	if t.Address == nil {
		t.Address = make(map[string]*Interface_Subinterface_Ipv6_Address)
	}
	return t.Address
}

// GetOrCreateAddress retrieves the value with the specified keys from
// the receiver Interface_Subinterface_Ipv6. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Interface_Subinterface_Ipv6) GetOrCreateAddress(Ip string) *Interface_Subinterface_Ipv6_Address {

	key := Ip

	if v, ok := t.Address[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAddress(Ip)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAddress got unexpected error: %v", err))
	}
	return v
}

// GetAddress retrieves the value with the specified key from
// the Address map field of Interface_Subinterface_Ipv6. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Interface_Subinterface_Ipv6) GetAddress(Ip string) *Interface_Subinterface_Ipv6_Address {

	if t == nil {
		return nil
	}

	key := Ip

	if lm, ok := t.Address[key]; ok {
		return lm
	}
	return nil
}

// AppendAddress appends the supplied Interface_Subinterface_Ipv6_Address struct to the
// list Address of Interface_Subinterface_Ipv6. If the key value(s) specified in
// the supplied Interface_Subinterface_Ipv6_Address already exist in the list, an error is
// returned.
func (t *Interface_Subinterface_Ipv6) AppendAddress(v *Interface_Subinterface_Ipv6_Address) error {
	if v.Ip == nil {
		return fmt.Errorf("invalid nil key received for Ip")
	}

	key := *v.Ip

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Address == nil {
		t.Address = make(map[string]*Interface_Subinterface_Ipv6_Address)
	}

	if _, ok := t.Address[key]; ok {
		return fmt.Errorf("duplicate key for list Address %v", key)
	}

	t.Address[key] = v
	return nil
}

// NewNeighbor creates a new entry in the Neighbor list of the
// Interface_Subinterface_Ipv6 struct. The keys of the list are populated from the input
// arguments.
func (t *Interface_Subinterface_Ipv6) NewNeighbor(Ip string) (*Interface_Subinterface_Ipv6_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*Interface_Subinterface_Ipv6_Neighbor)
	}

	key := Ip

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &Interface_Subinterface_Ipv6_Neighbor{
		Ip: &Ip,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the Interface_Subinterface_Ipv6 struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Interface_Subinterface_Ipv6) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.Ip = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from Interface_Subinterface_Ipv6.
//
// It initializes the field if not already initialized.
func (t *Interface_Subinterface_Ipv6) GetOrCreateNeighborMap() map[string]*Interface_Subinterface_Ipv6_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*Interface_Subinterface_Ipv6_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver Interface_Subinterface_Ipv6. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Interface_Subinterface_Ipv6) GetOrCreateNeighbor(Ip string) *Interface_Subinterface_Ipv6_Neighbor {

	key := Ip

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(Ip)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of Interface_Subinterface_Ipv6. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Interface_Subinterface_Ipv6) GetNeighbor(Ip string) *Interface_Subinterface_Ipv6_Neighbor {

	if t == nil {
		return nil
	}

	key := Ip

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied Interface_Subinterface_Ipv6_Neighbor struct to the
// list Neighbor of Interface_Subinterface_Ipv6. If the key value(s) specified in
// the supplied Interface_Subinterface_Ipv6_Neighbor already exist in the list, an error is
// returned.
func (t *Interface_Subinterface_Ipv6) AppendNeighbor(v *Interface_Subinterface_Ipv6_Neighbor) error {
	if v.Ip == nil {
		return fmt.Errorf("invalid nil key received for Ip")
	}

	key := *v.Ip

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*Interface_Subinterface_Ipv6_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// GetOrCreateAutoconf retrieves the value of the Autoconf field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Ipv6) GetOrCreateAutoconf() *Interface_Subinterface_Ipv6_Autoconf {
	if t.Autoconf != nil {
		return t.Autoconf
	}
	t.Autoconf = &Interface_Subinterface_Ipv6_Autoconf{}
	return t.Autoconf
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Ipv6) GetOrCreateCounters() *Interface_Subinterface_Ipv6_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &Interface_Subinterface_Ipv6_Counters{}
	return t.Counters
}

// GetOrCreateRouterAdvertisement retrieves the value of the RouterAdvertisement field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Ipv6) GetOrCreateRouterAdvertisement() *Interface_Subinterface_Ipv6_RouterAdvertisement {
	if t.RouterAdvertisement != nil {
		return t.RouterAdvertisement
	}
	t.RouterAdvertisement = &Interface_Subinterface_Ipv6_RouterAdvertisement{}
	return t.RouterAdvertisement
}

// GetOrCreateUnnumbered retrieves the value of the Unnumbered field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Ipv6) GetOrCreateUnnumbered() *Interface_Subinterface_Ipv6_Unnumbered {
	if t.Unnumbered != nil {
		return t.Unnumbered
	}
	t.Unnumbered = &Interface_Subinterface_Ipv6_Unnumbered{}
	return t.Unnumbered
}

// GetAutoconf returns the value of the Autoconf struct pointer
// from Interface_Subinterface_Ipv6. If the receiver or the field Autoconf is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Ipv6) GetAutoconf() *Interface_Subinterface_Ipv6_Autoconf {
	if t != nil && t.Autoconf != nil {
		return t.Autoconf
	}
	return nil
}

// GetCounters returns the value of the Counters struct pointer
// from Interface_Subinterface_Ipv6. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Ipv6) GetCounters() *Interface_Subinterface_Ipv6_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetRouterAdvertisement returns the value of the RouterAdvertisement struct pointer
// from Interface_Subinterface_Ipv6. If the receiver or the field RouterAdvertisement is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Ipv6) GetRouterAdvertisement() *Interface_Subinterface_Ipv6_RouterAdvertisement {
	if t != nil && t.RouterAdvertisement != nil {
		return t.RouterAdvertisement
	}
	return nil
}

// GetUnnumbered returns the value of the Unnumbered struct pointer
// from Interface_Subinterface_Ipv6. If the receiver or the field Unnumbered is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Ipv6) GetUnnumbered() *Interface_Subinterface_Ipv6_Unnumbered {
	if t != nil && t.Unnumbered != nil {
		return t.Unnumbered
	}
	return nil
}

// GetDhcpClient retrieves the value of the leaf DhcpClient from the Interface_Subinterface_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DhcpClient is set, it can
// safely use t.GetDhcpClient() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DhcpClient == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6) GetDhcpClient() bool {
	if t == nil || t.DhcpClient == nil {
		return false
	}
	return *t.DhcpClient
}

// GetDupAddrDetectTransmits retrieves the value of the leaf DupAddrDetectTransmits from the Interface_Subinterface_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DupAddrDetectTransmits is set, it can
// safely use t.GetDupAddrDetectTransmits() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DupAddrDetectTransmits == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6) GetDupAddrDetectTransmits() uint32 {
	if t == nil || t.DupAddrDetectTransmits == nil {
		return 1
	}
	return *t.DupAddrDetectTransmits
}

// GetEnabled retrieves the value of the leaf Enabled from the Interface_Subinterface_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return true
	}
	return *t.Enabled
}

// GetMtu retrieves the value of the leaf Mtu from the Interface_Subinterface_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mtu is set, it can
// safely use t.GetMtu() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mtu == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6) GetMtu() uint32 {
	if t == nil || t.Mtu == nil {
		return 0
	}
	return *t.Mtu
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv6
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv6) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DhcpClient == nil {
		var v bool = false
		t.DhcpClient = &v
	}
	if t.DupAddrDetectTransmits == nil {
		var v uint32 = 1
		t.DupAddrDetectTransmits = &v
	}
	if t.Enabled == nil {
		var v bool = true
		t.Enabled = &v
	}
	t.Autoconf.PopulateDefaults()
	t.Counters.PopulateDefaults()
	t.RouterAdvertisement.PopulateDefaults()
	t.Unnumbered.PopulateDefaults()
	for _, e := range t.Address {
		e.PopulateDefaults()
	}
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv6) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv6.
func (*Interface_Subinterface_Ipv6) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv6_Address represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address YANG schema element.
type Interface_Subinterface_Ipv6_Address struct {
	ΛMetadata     []ygot.Annotation                                        `path:"@" ygotAnnotation:"true"`
	Ip            *string                                                  `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"`
	ΛIp           []ygot.Annotation                                        `path:"config/@ip|@ip" ygotAnnotation:"true"`
	Origin        E_IfIp_IpAddressOrigin                                   `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛOrigin       []ygot.Annotation                                        `path:"state/@origin" ygotAnnotation:"true"`
	PrefixLength  *uint8                                                   `path:"config/prefix-length" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPrefixLength []ygot.Annotation                                        `path:"config/@prefix-length" ygotAnnotation:"true"`
	Status        E_Address_Status                                         `path:"state/status" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛStatus       []ygot.Annotation                                        `path:"state/@status" ygotAnnotation:"true"`
	Type          E_InetTypes_Ipv6AddressType                              `path:"config/type" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛType         []ygot.Annotation                                        `path:"config/@type" ygotAnnotation:"true"`
	VrrpGroup     map[uint8]*Interface_Subinterface_Ipv6_Address_VrrpGroup `path:"vrrp/vrrp-group" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛVrrpGroup    []ygot.Annotation                                        `path:"vrrp/@vrrp-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Address implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv6_Address) IsYANGGoStruct() {}

// NewVrrpGroup creates a new entry in the VrrpGroup list of the
// Interface_Subinterface_Ipv6_Address struct. The keys of the list are populated from the input
// arguments.
func (t *Interface_Subinterface_Ipv6_Address) NewVrrpGroup(VirtualRouterId uint8) (*Interface_Subinterface_Ipv6_Address_VrrpGroup, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.VrrpGroup == nil {
		t.VrrpGroup = make(map[uint8]*Interface_Subinterface_Ipv6_Address_VrrpGroup)
	}

	key := VirtualRouterId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.VrrpGroup[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list VrrpGroup", key)
	}

	t.VrrpGroup[key] = &Interface_Subinterface_Ipv6_Address_VrrpGroup{
		VirtualRouterId: &VirtualRouterId,
	}

	return t.VrrpGroup[key], nil
}

// RenameVrrpGroup renames an entry in the list VrrpGroup within
// the Interface_Subinterface_Ipv6_Address struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Interface_Subinterface_Ipv6_Address) RenameVrrpGroup(oldK, newK uint8) error {
	if _, ok := t.VrrpGroup[newK]; ok {
		return fmt.Errorf("key %v already exists in VrrpGroup", newK)
	}

	e, ok := t.VrrpGroup[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in VrrpGroup", oldK)
	}
	e.VirtualRouterId = &newK

	t.VrrpGroup[newK] = e
	delete(t.VrrpGroup, oldK)
	return nil
}

// GetOrCreateVrrpGroupMap returns the list (map) from Interface_Subinterface_Ipv6_Address.
//
// It initializes the field if not already initialized.
func (t *Interface_Subinterface_Ipv6_Address) GetOrCreateVrrpGroupMap() map[uint8]*Interface_Subinterface_Ipv6_Address_VrrpGroup {
	if t.VrrpGroup == nil {
		t.VrrpGroup = make(map[uint8]*Interface_Subinterface_Ipv6_Address_VrrpGroup)
	}
	return t.VrrpGroup
}

// GetOrCreateVrrpGroup retrieves the value with the specified keys from
// the receiver Interface_Subinterface_Ipv6_Address. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Interface_Subinterface_Ipv6_Address) GetOrCreateVrrpGroup(VirtualRouterId uint8) *Interface_Subinterface_Ipv6_Address_VrrpGroup {

	key := VirtualRouterId

	if v, ok := t.VrrpGroup[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewVrrpGroup(VirtualRouterId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateVrrpGroup got unexpected error: %v", err))
	}
	return v
}

// GetVrrpGroup retrieves the value with the specified key from
// the VrrpGroup map field of Interface_Subinterface_Ipv6_Address. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Interface_Subinterface_Ipv6_Address) GetVrrpGroup(VirtualRouterId uint8) *Interface_Subinterface_Ipv6_Address_VrrpGroup {

	if t == nil {
		return nil
	}

	key := VirtualRouterId

	if lm, ok := t.VrrpGroup[key]; ok {
		return lm
	}
	return nil
}

// AppendVrrpGroup appends the supplied Interface_Subinterface_Ipv6_Address_VrrpGroup struct to the
// list VrrpGroup of Interface_Subinterface_Ipv6_Address. If the key value(s) specified in
// the supplied Interface_Subinterface_Ipv6_Address_VrrpGroup already exist in the list, an error is
// returned.
func (t *Interface_Subinterface_Ipv6_Address) AppendVrrpGroup(v *Interface_Subinterface_Ipv6_Address_VrrpGroup) error {
	if v.VirtualRouterId == nil {
		return fmt.Errorf("invalid nil key received for VirtualRouterId")
	}

	key := *v.VirtualRouterId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.VrrpGroup == nil {
		t.VrrpGroup = make(map[uint8]*Interface_Subinterface_Ipv6_Address_VrrpGroup)
	}

	if _, ok := t.VrrpGroup[key]; ok {
		return fmt.Errorf("duplicate key for list VrrpGroup %v", key)
	}

	t.VrrpGroup[key] = v
	return nil
}

// GetIp retrieves the value of the leaf Ip from the Interface_Subinterface_Ipv6_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ip is set, it can
// safely use t.GetIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ip == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Address) GetIp() string {
	if t == nil || t.Ip == nil {
		return ""
	}
	return *t.Ip
}

// GetOrigin retrieves the value of the leaf Origin from the Interface_Subinterface_Ipv6_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Origin is set, it can
// safely use t.GetOrigin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Origin == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Address) GetOrigin() E_IfIp_IpAddressOrigin {
	if t == nil || t.Origin == 0 {
		return 0
	}
	return t.Origin
}

// GetPrefixLength retrieves the value of the leaf PrefixLength from the Interface_Subinterface_Ipv6_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLength is set, it can
// safely use t.GetPrefixLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLength == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Address) GetPrefixLength() uint8 {
	if t == nil || t.PrefixLength == nil {
		return 0
	}
	return *t.PrefixLength
}

// GetStatus retrieves the value of the leaf Status from the Interface_Subinterface_Ipv6_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Status is set, it can
// safely use t.GetStatus() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Status == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Address) GetStatus() E_Address_Status {
	if t == nil || t.Status == 0 {
		return 0
	}
	return t.Status
}

// GetType retrieves the value of the leaf Type from the Interface_Subinterface_Ipv6_Address
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Address) GetType() E_InetTypes_Ipv6AddressType {
	if t == nil || t.Type == 0 {
		return InetTypes_Ipv6AddressType_GLOBAL_UNICAST
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv6_Address
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv6_Address) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Type == 0 {
		t.Type = InetTypes_Ipv6AddressType_GLOBAL_UNICAST
	}
	for _, e := range t.VrrpGroup {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv6_Address struct, which is a YANG list entry.
func (t *Interface_Subinterface_Ipv6_Address) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Ip == nil {
		return nil, fmt.Errorf("nil value for key Ip")
	}

	return map[string]interface{}{
		"ip": *t.Ip,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_Address) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Address"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_Address) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv6_Address) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv6_Address.
func (*Interface_Subinterface_Ipv6_Address) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv6_Address_VrrpGroup represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group YANG schema element.
type Interface_Subinterface_Ipv6_Address_VrrpGroup struct {
	ΛMetadata              []ygot.Annotation                                                `path:"@" ygotAnnotation:"true"`
	AcceptMode             *bool                                                            `path:"config/accept-mode" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛAcceptMode            []ygot.Annotation                                                `path:"config/@accept-mode" ygotAnnotation:"true"`
	AdvertisementInterval  *uint16                                                          `path:"config/advertisement-interval" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛAdvertisementInterval []ygot.Annotation                                                `path:"config/@advertisement-interval" ygotAnnotation:"true"`
	CurrentPriority        *uint8                                                           `path:"state/current-priority" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛCurrentPriority       []ygot.Annotation                                                `path:"state/@current-priority" ygotAnnotation:"true"`
	InterfaceTracking      *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking `path:"interface-tracking" module:"openconfig-if-ip"`
	ΛInterfaceTracking     []ygot.Annotation                                                `path:"@interface-tracking" ygotAnnotation:"true"`
	Preempt                *bool                                                            `path:"config/preempt" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPreempt               []ygot.Annotation                                                `path:"config/@preempt" ygotAnnotation:"true"`
	PreemptDelay           *uint16                                                          `path:"config/preempt-delay" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPreemptDelay          []ygot.Annotation                                                `path:"config/@preempt-delay" ygotAnnotation:"true"`
	Priority               *uint8                                                           `path:"config/priority" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPriority              []ygot.Annotation                                                `path:"config/@priority" ygotAnnotation:"true"`
	VirtualAddress         []string                                                         `path:"config/virtual-address" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛVirtualAddress        []ygot.Annotation                                                `path:"config/@virtual-address" ygotAnnotation:"true"`
	VirtualLinkLocal       *string                                                          `path:"config/virtual-link-local" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛVirtualLinkLocal      []ygot.Annotation                                                `path:"config/@virtual-link-local" ygotAnnotation:"true"`
	VirtualRouterId        *uint8                                                           `path:"config/virtual-router-id|virtual-router-id" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"`
	ΛVirtualRouterId       []ygot.Annotation                                                `path:"config/@virtual-router-id|@virtual-router-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Address_VrrpGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv6_Address_VrrpGroup) IsYANGGoStruct() {}

// GetOrCreateInterfaceTracking retrieves the value of the InterfaceTracking field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) GetOrCreateInterfaceTracking() *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking {
	if t.InterfaceTracking != nil {
		return t.InterfaceTracking
	}
	t.InterfaceTracking = &Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking{}
	return t.InterfaceTracking
}

// GetInterfaceTracking returns the value of the InterfaceTracking struct pointer
// from Interface_Subinterface_Ipv6_Address_VrrpGroup. If the receiver or the field InterfaceTracking is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) GetInterfaceTracking() *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking {
	if t != nil && t.InterfaceTracking != nil {
		return t.InterfaceTracking
	}
	return nil
}

// GetAcceptMode retrieves the value of the leaf AcceptMode from the Interface_Subinterface_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AcceptMode is set, it can
// safely use t.GetAcceptMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AcceptMode == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) GetAcceptMode() bool {
	if t == nil || t.AcceptMode == nil {
		return false
	}
	return *t.AcceptMode
}

// GetAdvertisementInterval retrieves the value of the leaf AdvertisementInterval from the Interface_Subinterface_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdvertisementInterval is set, it can
// safely use t.GetAdvertisementInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdvertisementInterval == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) GetAdvertisementInterval() uint16 {
	if t == nil || t.AdvertisementInterval == nil {
		return 100
	}
	return *t.AdvertisementInterval
}

// GetCurrentPriority retrieves the value of the leaf CurrentPriority from the Interface_Subinterface_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CurrentPriority is set, it can
// safely use t.GetCurrentPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CurrentPriority == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) GetCurrentPriority() uint8 {
	if t == nil || t.CurrentPriority == nil {
		return 0
	}
	return *t.CurrentPriority
}

// GetPreempt retrieves the value of the leaf Preempt from the Interface_Subinterface_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Preempt is set, it can
// safely use t.GetPreempt() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Preempt == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) GetPreempt() bool {
	if t == nil || t.Preempt == nil {
		return true
	}
	return *t.Preempt
}

// GetPreemptDelay retrieves the value of the leaf PreemptDelay from the Interface_Subinterface_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreemptDelay is set, it can
// safely use t.GetPreemptDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreemptDelay == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) GetPreemptDelay() uint16 {
	if t == nil || t.PreemptDelay == nil {
		return 0
	}
	return *t.PreemptDelay
}

// GetPriority retrieves the value of the leaf Priority from the Interface_Subinterface_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) GetPriority() uint8 {
	if t == nil || t.Priority == nil {
		return 100
	}
	return *t.Priority
}

// GetVirtualAddress retrieves the value of the leaf VirtualAddress from the Interface_Subinterface_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VirtualAddress is set, it can
// safely use t.GetVirtualAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VirtualAddress == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) GetVirtualAddress() []string {
	if t == nil || t.VirtualAddress == nil {
		return nil
	}
	return t.VirtualAddress
}

// GetVirtualLinkLocal retrieves the value of the leaf VirtualLinkLocal from the Interface_Subinterface_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VirtualLinkLocal is set, it can
// safely use t.GetVirtualLinkLocal() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VirtualLinkLocal == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) GetVirtualLinkLocal() string {
	if t == nil || t.VirtualLinkLocal == nil {
		return ""
	}
	return *t.VirtualLinkLocal
}

// GetVirtualRouterId retrieves the value of the leaf VirtualRouterId from the Interface_Subinterface_Ipv6_Address_VrrpGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VirtualRouterId is set, it can
// safely use t.GetVirtualRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VirtualRouterId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) GetVirtualRouterId() uint8 {
	if t == nil || t.VirtualRouterId == nil {
		return 0
	}
	return *t.VirtualRouterId
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv6_Address_VrrpGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AcceptMode == nil {
		var v bool = false
		t.AcceptMode = &v
	}
	if t.AdvertisementInterval == nil {
		var v uint16 = 100
		t.AdvertisementInterval = &v
	}
	if t.Preempt == nil {
		var v bool = true
		t.Preempt = &v
	}
	if t.PreemptDelay == nil {
		var v uint16 = 0
		t.PreemptDelay = &v
	}
	if t.Priority == nil {
		var v uint8 = 100
		t.Priority = &v
	}
	t.InterfaceTracking.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv6_Address_VrrpGroup struct, which is a YANG list entry.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) ΛListKeyMap() (map[string]interface{}, error) {
	if t.VirtualRouterId == nil {
		return nil, fmt.Errorf("nil value for key VirtualRouterId")
	}

	return map[string]interface{}{
		"virtual-router-id": *t.VirtualRouterId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Address_VrrpGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv6_Address_VrrpGroup.
func (*Interface_Subinterface_Ipv6_Address_VrrpGroup) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group/interface-tracking YANG schema element.
type Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	PriorityDecrement  *uint8            `path:"config/priority-decrement" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPriorityDecrement []ygot.Annotation `path:"config/@priority-decrement" ygotAnnotation:"true"`
	TrackInterface     []string          `path:"config/track-interface" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛTrackInterface    []ygot.Annotation `path:"config/@track-interface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) IsYANGGoStruct() {}

// GetPriorityDecrement retrieves the value of the leaf PriorityDecrement from the Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PriorityDecrement is set, it can
// safely use t.GetPriorityDecrement() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PriorityDecrement == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) GetPriorityDecrement() uint8 {
	if t == nil || t.PriorityDecrement == nil {
		return 0
	}
	return *t.PriorityDecrement
}

// GetTrackInterface retrieves the value of the leaf TrackInterface from the Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TrackInterface is set, it can
// safely use t.GetTrackInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TrackInterface == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) GetTrackInterface() []string {
	if t == nil || t.TrackInterface == nil {
		return nil
	}
	return t.TrackInterface
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PriorityDecrement == nil {
		var v uint8 = 0
		t.PriorityDecrement = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking.
func (*Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv6_Autoconf represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/autoconf YANG schema element.
type Interface_Subinterface_Ipv6_Autoconf struct {
	ΛMetadata                   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	CreateGlobalAddresses       *bool             `path:"config/create-global-addresses" module:"openconfig-if-ip-ext/openconfig-if-ip-ext"`
	ΛCreateGlobalAddresses      []ygot.Annotation `path:"config/@create-global-addresses" ygotAnnotation:"true"`
	CreateTemporaryAddresses    *bool             `path:"config/create-temporary-addresses" module:"openconfig-if-ip-ext/openconfig-if-ip-ext"`
	ΛCreateTemporaryAddresses   []ygot.Annotation `path:"config/@create-temporary-addresses" ygotAnnotation:"true"`
	TemporaryPreferredLifetime  *uint32           `path:"config/temporary-preferred-lifetime" module:"openconfig-if-ip-ext/openconfig-if-ip-ext"`
	ΛTemporaryPreferredLifetime []ygot.Annotation `path:"config/@temporary-preferred-lifetime" ygotAnnotation:"true"`
	TemporaryValidLifetime      *uint32           `path:"config/temporary-valid-lifetime" module:"openconfig-if-ip-ext/openconfig-if-ip-ext"`
	ΛTemporaryValidLifetime     []ygot.Annotation `path:"config/@temporary-valid-lifetime" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Autoconf implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv6_Autoconf) IsYANGGoStruct() {}

// GetCreateGlobalAddresses retrieves the value of the leaf CreateGlobalAddresses from the Interface_Subinterface_Ipv6_Autoconf
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CreateGlobalAddresses is set, it can
// safely use t.GetCreateGlobalAddresses() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CreateGlobalAddresses == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Autoconf) GetCreateGlobalAddresses() bool {
	if t == nil || t.CreateGlobalAddresses == nil {
		return true
	}
	return *t.CreateGlobalAddresses
}

// GetCreateTemporaryAddresses retrieves the value of the leaf CreateTemporaryAddresses from the Interface_Subinterface_Ipv6_Autoconf
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CreateTemporaryAddresses is set, it can
// safely use t.GetCreateTemporaryAddresses() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CreateTemporaryAddresses == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Autoconf) GetCreateTemporaryAddresses() bool {
	if t == nil || t.CreateTemporaryAddresses == nil {
		return false
	}
	return *t.CreateTemporaryAddresses
}

// GetTemporaryPreferredLifetime retrieves the value of the leaf TemporaryPreferredLifetime from the Interface_Subinterface_Ipv6_Autoconf
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TemporaryPreferredLifetime is set, it can
// safely use t.GetTemporaryPreferredLifetime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TemporaryPreferredLifetime == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Autoconf) GetTemporaryPreferredLifetime() uint32 {
	if t == nil || t.TemporaryPreferredLifetime == nil {
		return 86400
	}
	return *t.TemporaryPreferredLifetime
}

// GetTemporaryValidLifetime retrieves the value of the leaf TemporaryValidLifetime from the Interface_Subinterface_Ipv6_Autoconf
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TemporaryValidLifetime is set, it can
// safely use t.GetTemporaryValidLifetime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TemporaryValidLifetime == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Autoconf) GetTemporaryValidLifetime() uint32 {
	if t == nil || t.TemporaryValidLifetime == nil {
		return 604800
	}
	return *t.TemporaryValidLifetime
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv6_Autoconf
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv6_Autoconf) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.CreateGlobalAddresses == nil {
		var v bool = true
		t.CreateGlobalAddresses = &v
	}
	if t.CreateTemporaryAddresses == nil {
		var v bool = false
		t.CreateTemporaryAddresses = &v
	}
	if t.TemporaryPreferredLifetime == nil {
		var v uint32 = 86400
		t.TemporaryPreferredLifetime = &v
	}
	if t.TemporaryValidLifetime == nil {
		var v uint32 = 604800
		t.TemporaryValidLifetime = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_Autoconf) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Autoconf"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_Autoconf) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv6_Autoconf) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv6_Autoconf.
func (*Interface_Subinterface_Ipv6_Autoconf) ΛBelongingModule() string {
	return "openconfig-if-ip-ext"
}

// Interface_Subinterface_Ipv6_Counters represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters YANG schema element.
type Interface_Subinterface_Ipv6_Counters struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	InDiscardedPkts     *uint64           `path:"in-discarded-pkts" module:"openconfig-if-ip"`
	ΛInDiscardedPkts    []ygot.Annotation `path:"@in-discarded-pkts" ygotAnnotation:"true"`
	InErrorPkts         *uint64           `path:"in-error-pkts" module:"openconfig-if-ip"`
	ΛInErrorPkts        []ygot.Annotation `path:"@in-error-pkts" ygotAnnotation:"true"`
	InForwardedOctets   *uint64           `path:"in-forwarded-octets" module:"openconfig-if-ip"`
	ΛInForwardedOctets  []ygot.Annotation `path:"@in-forwarded-octets" ygotAnnotation:"true"`
	InForwardedPkts     *uint64           `path:"in-forwarded-pkts" module:"openconfig-if-ip"`
	ΛInForwardedPkts    []ygot.Annotation `path:"@in-forwarded-pkts" ygotAnnotation:"true"`
	InMulticastOctets   *uint64           `path:"in-multicast-octets" module:"openconfig-if-ip"`
	ΛInMulticastOctets  []ygot.Annotation `path:"@in-multicast-octets" ygotAnnotation:"true"`
	InMulticastPkts     *uint64           `path:"in-multicast-pkts" module:"openconfig-if-ip"`
	ΛInMulticastPkts    []ygot.Annotation `path:"@in-multicast-pkts" ygotAnnotation:"true"`
	InOctets            *uint64           `path:"in-octets" module:"openconfig-if-ip"`
	ΛInOctets           []ygot.Annotation `path:"@in-octets" ygotAnnotation:"true"`
	InPkts              *uint64           `path:"in-pkts" module:"openconfig-if-ip"`
	ΛInPkts             []ygot.Annotation `path:"@in-pkts" ygotAnnotation:"true"`
	OutDiscardedPkts    *uint64           `path:"out-discarded-pkts" module:"openconfig-if-ip"`
	ΛOutDiscardedPkts   []ygot.Annotation `path:"@out-discarded-pkts" ygotAnnotation:"true"`
	OutErrorPkts        *uint64           `path:"out-error-pkts" module:"openconfig-if-ip"`
	ΛOutErrorPkts       []ygot.Annotation `path:"@out-error-pkts" ygotAnnotation:"true"`
	OutForwardedOctets  *uint64           `path:"out-forwarded-octets" module:"openconfig-if-ip"`
	ΛOutForwardedOctets []ygot.Annotation `path:"@out-forwarded-octets" ygotAnnotation:"true"`
	OutForwardedPkts    *uint64           `path:"out-forwarded-pkts" module:"openconfig-if-ip"`
	ΛOutForwardedPkts   []ygot.Annotation `path:"@out-forwarded-pkts" ygotAnnotation:"true"`
	OutMulticastOctets  *uint64           `path:"out-multicast-octets" module:"openconfig-if-ip"`
	ΛOutMulticastOctets []ygot.Annotation `path:"@out-multicast-octets" ygotAnnotation:"true"`
	OutMulticastPkts    *uint64           `path:"out-multicast-pkts" module:"openconfig-if-ip"`
	ΛOutMulticastPkts   []ygot.Annotation `path:"@out-multicast-pkts" ygotAnnotation:"true"`
	OutOctets           *uint64           `path:"out-octets" module:"openconfig-if-ip"`
	ΛOutOctets          []ygot.Annotation `path:"@out-octets" ygotAnnotation:"true"`
	OutPkts             *uint64           `path:"out-pkts" module:"openconfig-if-ip"`
	ΛOutPkts            []ygot.Annotation `path:"@out-pkts" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv6_Counters) IsYANGGoStruct() {}

// GetInDiscardedPkts retrieves the value of the leaf InDiscardedPkts from the Interface_Subinterface_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InDiscardedPkts is set, it can
// safely use t.GetInDiscardedPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InDiscardedPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Counters) GetInDiscardedPkts() uint64 {
	if t == nil || t.InDiscardedPkts == nil {
		return 0
	}
	return *t.InDiscardedPkts
}

// GetInErrorPkts retrieves the value of the leaf InErrorPkts from the Interface_Subinterface_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InErrorPkts is set, it can
// safely use t.GetInErrorPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InErrorPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Counters) GetInErrorPkts() uint64 {
	if t == nil || t.InErrorPkts == nil {
		return 0
	}
	return *t.InErrorPkts
}

// GetInForwardedOctets retrieves the value of the leaf InForwardedOctets from the Interface_Subinterface_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InForwardedOctets is set, it can
// safely use t.GetInForwardedOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InForwardedOctets == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Counters) GetInForwardedOctets() uint64 {
	if t == nil || t.InForwardedOctets == nil {
		return 0
	}
	return *t.InForwardedOctets
}

// GetInForwardedPkts retrieves the value of the leaf InForwardedPkts from the Interface_Subinterface_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InForwardedPkts is set, it can
// safely use t.GetInForwardedPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InForwardedPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Counters) GetInForwardedPkts() uint64 {
	if t == nil || t.InForwardedPkts == nil {
		return 0
	}
	return *t.InForwardedPkts
}

// GetInMulticastOctets retrieves the value of the leaf InMulticastOctets from the Interface_Subinterface_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMulticastOctets is set, it can
// safely use t.GetInMulticastOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMulticastOctets == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Counters) GetInMulticastOctets() uint64 {
	if t == nil || t.InMulticastOctets == nil {
		return 0
	}
	return *t.InMulticastOctets
}

// GetInMulticastPkts retrieves the value of the leaf InMulticastPkts from the Interface_Subinterface_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMulticastPkts is set, it can
// safely use t.GetInMulticastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMulticastPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Counters) GetInMulticastPkts() uint64 {
	if t == nil || t.InMulticastPkts == nil {
		return 0
	}
	return *t.InMulticastPkts
}

// GetInOctets retrieves the value of the leaf InOctets from the Interface_Subinterface_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InOctets is set, it can
// safely use t.GetInOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InOctets == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Counters) GetInOctets() uint64 {
	if t == nil || t.InOctets == nil {
		return 0
	}
	return *t.InOctets
}

// GetInPkts retrieves the value of the leaf InPkts from the Interface_Subinterface_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPkts is set, it can
// safely use t.GetInPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Counters) GetInPkts() uint64 {
	if t == nil || t.InPkts == nil {
		return 0
	}
	return *t.InPkts
}

// GetOutDiscardedPkts retrieves the value of the leaf OutDiscardedPkts from the Interface_Subinterface_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutDiscardedPkts is set, it can
// safely use t.GetOutDiscardedPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutDiscardedPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Counters) GetOutDiscardedPkts() uint64 {
	if t == nil || t.OutDiscardedPkts == nil {
		return 0
	}
	return *t.OutDiscardedPkts
}

// GetOutErrorPkts retrieves the value of the leaf OutErrorPkts from the Interface_Subinterface_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutErrorPkts is set, it can
// safely use t.GetOutErrorPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutErrorPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Counters) GetOutErrorPkts() uint64 {
	if t == nil || t.OutErrorPkts == nil {
		return 0
	}
	return *t.OutErrorPkts
}

// GetOutForwardedOctets retrieves the value of the leaf OutForwardedOctets from the Interface_Subinterface_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutForwardedOctets is set, it can
// safely use t.GetOutForwardedOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutForwardedOctets == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Counters) GetOutForwardedOctets() uint64 {
	if t == nil || t.OutForwardedOctets == nil {
		return 0
	}
	return *t.OutForwardedOctets
}

// GetOutForwardedPkts retrieves the value of the leaf OutForwardedPkts from the Interface_Subinterface_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutForwardedPkts is set, it can
// safely use t.GetOutForwardedPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutForwardedPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Counters) GetOutForwardedPkts() uint64 {
	if t == nil || t.OutForwardedPkts == nil {
		return 0
	}
	return *t.OutForwardedPkts
}

// GetOutMulticastOctets retrieves the value of the leaf OutMulticastOctets from the Interface_Subinterface_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutMulticastOctets is set, it can
// safely use t.GetOutMulticastOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutMulticastOctets == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Counters) GetOutMulticastOctets() uint64 {
	if t == nil || t.OutMulticastOctets == nil {
		return 0
	}
	return *t.OutMulticastOctets
}

// GetOutMulticastPkts retrieves the value of the leaf OutMulticastPkts from the Interface_Subinterface_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutMulticastPkts is set, it can
// safely use t.GetOutMulticastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutMulticastPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Counters) GetOutMulticastPkts() uint64 {
	if t == nil || t.OutMulticastPkts == nil {
		return 0
	}
	return *t.OutMulticastPkts
}

// GetOutOctets retrieves the value of the leaf OutOctets from the Interface_Subinterface_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutOctets is set, it can
// safely use t.GetOutOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutOctets == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Counters) GetOutOctets() uint64 {
	if t == nil || t.OutOctets == nil {
		return 0
	}
	return *t.OutOctets
}

// GetOutPkts retrieves the value of the leaf OutPkts from the Interface_Subinterface_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPkts is set, it can
// safely use t.GetOutPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPkts == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Counters) GetOutPkts() uint64 {
	if t == nil || t.OutPkts == nil {
		return 0
	}
	return *t.OutPkts
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv6_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv6_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv6_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv6_Counters.
func (*Interface_Subinterface_Ipv6_Counters) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv6_Neighbor represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor YANG schema element.
type Interface_Subinterface_Ipv6_Neighbor struct {
	ΛMetadata         []ygot.Annotation        `path:"@" ygotAnnotation:"true"`
	Ip                *string                  `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"`
	ΛIp               []ygot.Annotation        `path:"config/@ip|@ip" ygotAnnotation:"true"`
	IsRouter          *bool                    `path:"state/is-router" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛIsRouter         []ygot.Annotation        `path:"state/@is-router" ygotAnnotation:"true"`
	LinkLayerAddress  *string                  `path:"config/link-layer-address" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛLinkLayerAddress []ygot.Annotation        `path:"config/@link-layer-address" ygotAnnotation:"true"`
	NeighborState     E_Neighbor_NeighborState `path:"state/neighbor-state" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛNeighborState    []ygot.Annotation        `path:"state/@neighbor-state" ygotAnnotation:"true"`
	Origin            E_IfIp_NeighborOrigin    `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛOrigin           []ygot.Annotation        `path:"state/@origin" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv6_Neighbor) IsYANGGoStruct() {}

// GetIp retrieves the value of the leaf Ip from the Interface_Subinterface_Ipv6_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ip is set, it can
// safely use t.GetIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ip == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Neighbor) GetIp() string {
	if t == nil || t.Ip == nil {
		return ""
	}
	return *t.Ip
}

// GetIsRouter retrieves the value of the leaf IsRouter from the Interface_Subinterface_Ipv6_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IsRouter is set, it can
// safely use t.GetIsRouter() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IsRouter == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Neighbor) GetIsRouter() bool {
	if t == nil || t.IsRouter == nil {
		return false
	}
	return *t.IsRouter
}

// GetLinkLayerAddress retrieves the value of the leaf LinkLayerAddress from the Interface_Subinterface_Ipv6_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkLayerAddress is set, it can
// safely use t.GetLinkLayerAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkLayerAddress == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Neighbor) GetLinkLayerAddress() string {
	if t == nil || t.LinkLayerAddress == nil {
		return ""
	}
	return *t.LinkLayerAddress
}

// GetNeighborState retrieves the value of the leaf NeighborState from the Interface_Subinterface_Ipv6_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborState is set, it can
// safely use t.GetNeighborState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborState == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Neighbor) GetNeighborState() E_Neighbor_NeighborState {
	if t == nil || t.NeighborState == 0 {
		return 0
	}
	return t.NeighborState
}

// GetOrigin retrieves the value of the leaf Origin from the Interface_Subinterface_Ipv6_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Origin is set, it can
// safely use t.GetOrigin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Origin == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Neighbor) GetOrigin() E_IfIp_NeighborOrigin {
	if t == nil || t.Origin == 0 {
		return 0
	}
	return t.Origin
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv6_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv6_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv6_Neighbor struct, which is a YANG list entry.
func (t *Interface_Subinterface_Ipv6_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Ip == nil {
		return nil, fmt.Errorf("nil value for key Ip")
	}

	return map[string]interface{}{
		"ip": *t.Ip,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv6_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv6_Neighbor.
func (*Interface_Subinterface_Ipv6_Neighbor) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv6_RouterAdvertisement represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/router-advertisement YANG schema element.
type Interface_Subinterface_Ipv6_RouterAdvertisement struct {
	ΛMetadata    []ygot.Annotation                                                  `path:"@" ygotAnnotation:"true"`
	Enable       *bool                                                              `path:"config/enable" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛEnable      []ygot.Annotation                                                  `path:"config/@enable" ygotAnnotation:"true"`
	Interval     *uint32                                                            `path:"config/interval" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛInterval    []ygot.Annotation                                                  `path:"config/@interval" ygotAnnotation:"true"`
	Lifetime     *uint32                                                            `path:"config/lifetime" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛLifetime    []ygot.Annotation                                                  `path:"config/@lifetime" ygotAnnotation:"true"`
	Managed      *bool                                                              `path:"config/managed" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛManaged     []ygot.Annotation                                                  `path:"config/@managed" ygotAnnotation:"true"`
	Mode         E_RouterAdvertisement_Mode                                         `path:"config/mode" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛMode        []ygot.Annotation                                                  `path:"config/@mode" ygotAnnotation:"true"`
	OtherConfig  *bool                                                              `path:"config/other-config" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛOtherConfig []ygot.Annotation                                                  `path:"config/@other-config" ygotAnnotation:"true"`
	Prefix       map[string]*Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix `path:"prefixes/prefix" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPrefix      []ygot.Annotation                                                  `path:"prefixes/@prefix" ygotAnnotation:"true"`
	Suppress     *bool                                                              `path:"config/suppress" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛSuppress    []ygot.Annotation                                                  `path:"config/@suppress" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_RouterAdvertisement implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv6_RouterAdvertisement) IsYANGGoStruct() {}

// NewPrefix creates a new entry in the Prefix list of the
// Interface_Subinterface_Ipv6_RouterAdvertisement struct. The keys of the list are populated from the input
// arguments.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement) NewPrefix(Prefix string) (*Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[string]*Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix)
	}

	key := Prefix

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Prefix[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Prefix", key)
	}

	t.Prefix[key] = &Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix{
		Prefix: &Prefix,
	}

	return t.Prefix[key], nil
}

// RenamePrefix renames an entry in the list Prefix within
// the Interface_Subinterface_Ipv6_RouterAdvertisement struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement) RenamePrefix(oldK, newK string) error {
	if _, ok := t.Prefix[newK]; ok {
		return fmt.Errorf("key %v already exists in Prefix", newK)
	}

	e, ok := t.Prefix[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Prefix", oldK)
	}
	e.Prefix = &newK

	t.Prefix[newK] = e
	delete(t.Prefix, oldK)
	return nil
}

// GetOrCreatePrefixMap returns the list (map) from Interface_Subinterface_Ipv6_RouterAdvertisement.
//
// It initializes the field if not already initialized.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement) GetOrCreatePrefixMap() map[string]*Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix {
	if t.Prefix == nil {
		t.Prefix = make(map[string]*Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix)
	}
	return t.Prefix
}

// GetOrCreatePrefix retrieves the value with the specified keys from
// the receiver Interface_Subinterface_Ipv6_RouterAdvertisement. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement) GetOrCreatePrefix(Prefix string) *Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix {

	key := Prefix

	if v, ok := t.Prefix[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPrefix(Prefix)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePrefix got unexpected error: %v", err))
	}
	return v
}

// GetPrefix retrieves the value with the specified key from
// the Prefix map field of Interface_Subinterface_Ipv6_RouterAdvertisement. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement) GetPrefix(Prefix string) *Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix {

	if t == nil {
		return nil
	}

	key := Prefix

	if lm, ok := t.Prefix[key]; ok {
		return lm
	}
	return nil
}

// AppendPrefix appends the supplied Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix struct to the
// list Prefix of Interface_Subinterface_Ipv6_RouterAdvertisement. If the key value(s) specified in
// the supplied Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix already exist in the list, an error is
// returned.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement) AppendPrefix(v *Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key received for Prefix")
	}

	key := *v.Prefix

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[string]*Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix)
	}

	if _, ok := t.Prefix[key]; ok {
		return fmt.Errorf("duplicate key for list Prefix %v", key)
	}

	t.Prefix[key] = v
	return nil
}

// GetEnable retrieves the value of the leaf Enable from the Interface_Subinterface_Ipv6_RouterAdvertisement
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enable is set, it can
// safely use t.GetEnable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enable == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement) GetEnable() bool {
	if t == nil || t.Enable == nil {
		return true
	}
	return *t.Enable
}

// GetInterval retrieves the value of the leaf Interval from the Interface_Subinterface_Ipv6_RouterAdvertisement
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement) GetInterval() uint32 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetLifetime retrieves the value of the leaf Lifetime from the Interface_Subinterface_Ipv6_RouterAdvertisement
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Lifetime is set, it can
// safely use t.GetLifetime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Lifetime == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement) GetLifetime() uint32 {
	if t == nil || t.Lifetime == nil {
		return 0
	}
	return *t.Lifetime
}

// GetManaged retrieves the value of the leaf Managed from the Interface_Subinterface_Ipv6_RouterAdvertisement
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Managed is set, it can
// safely use t.GetManaged() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Managed == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement) GetManaged() bool {
	if t == nil || t.Managed == nil {
		return false
	}
	return *t.Managed
}

// GetMode retrieves the value of the leaf Mode from the Interface_Subinterface_Ipv6_RouterAdvertisement
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mode is set, it can
// safely use t.GetMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mode == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement) GetMode() E_RouterAdvertisement_Mode {
	if t == nil || t.Mode == 0 {
		return RouterAdvertisement_Mode_ALL
	}
	return t.Mode
}

// GetOtherConfig retrieves the value of the leaf OtherConfig from the Interface_Subinterface_Ipv6_RouterAdvertisement
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OtherConfig is set, it can
// safely use t.GetOtherConfig() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OtherConfig == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement) GetOtherConfig() bool {
	if t == nil || t.OtherConfig == nil {
		return false
	}
	return *t.OtherConfig
}

// GetSuppress retrieves the value of the leaf Suppress from the Interface_Subinterface_Ipv6_RouterAdvertisement
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Suppress is set, it can
// safely use t.GetSuppress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Suppress == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement) GetSuppress() bool {
	if t == nil || t.Suppress == nil {
		return false
	}
	return *t.Suppress
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv6_RouterAdvertisement
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enable == nil {
		var v bool = true
		t.Enable = &v
	}
	if t.Managed == nil {
		var v bool = false
		t.Managed = &v
	}
	if t.Mode == 0 {
		t.Mode = RouterAdvertisement_Mode_ALL
	}
	if t.OtherConfig == nil {
		var v bool = false
		t.OtherConfig = &v
	}
	if t.Suppress == nil {
		var v bool = false
		t.Suppress = &v
	}
	for _, e := range t.Prefix {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_RouterAdvertisement"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv6_RouterAdvertisement.
func (*Interface_Subinterface_Ipv6_RouterAdvertisement) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/router-advertisement/prefixes/prefix YANG schema element.
type Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix struct {
	ΛMetadata                 []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	DisableAdvertisement      *bool             `path:"config/disable-advertisement" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛDisableAdvertisement     []ygot.Annotation `path:"config/@disable-advertisement" ygotAnnotation:"true"`
	DisableAutoconfiguration  *bool             `path:"config/disable-autoconfiguration" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛDisableAutoconfiguration []ygot.Annotation `path:"config/@disable-autoconfiguration" ygotAnnotation:"true"`
	EnableOnlink              *bool             `path:"config/enable-onlink" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛEnableOnlink             []ygot.Annotation `path:"config/@enable-onlink" ygotAnnotation:"true"`
	PreferredLifetime         *uint32           `path:"config/preferred-lifetime" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛPreferredLifetime        []ygot.Annotation `path:"config/@preferred-lifetime" ygotAnnotation:"true"`
	Prefix                    *string           `path:"config/prefix|prefix" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"`
	ΛPrefix                   []ygot.Annotation `path:"config/@prefix|@prefix" ygotAnnotation:"true"`
	ValidLifetime             *uint32           `path:"config/valid-lifetime" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛValidLifetime            []ygot.Annotation `path:"config/@valid-lifetime" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix) IsYANGGoStruct() {}

// GetDisableAdvertisement retrieves the value of the leaf DisableAdvertisement from the Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DisableAdvertisement is set, it can
// safely use t.GetDisableAdvertisement() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DisableAdvertisement == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix) GetDisableAdvertisement() bool {
	if t == nil || t.DisableAdvertisement == nil {
		return false
	}
	return *t.DisableAdvertisement
}

// GetDisableAutoconfiguration retrieves the value of the leaf DisableAutoconfiguration from the Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DisableAutoconfiguration is set, it can
// safely use t.GetDisableAutoconfiguration() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DisableAutoconfiguration == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix) GetDisableAutoconfiguration() bool {
	if t == nil || t.DisableAutoconfiguration == nil {
		return false
	}
	return *t.DisableAutoconfiguration
}

// GetEnableOnlink retrieves the value of the leaf EnableOnlink from the Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EnableOnlink is set, it can
// safely use t.GetEnableOnlink() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EnableOnlink == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix) GetEnableOnlink() bool {
	if t == nil || t.EnableOnlink == nil {
		return false
	}
	return *t.EnableOnlink
}

// GetPreferredLifetime retrieves the value of the leaf PreferredLifetime from the Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreferredLifetime is set, it can
// safely use t.GetPreferredLifetime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreferredLifetime == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix) GetPreferredLifetime() uint32 {
	if t == nil || t.PreferredLifetime == nil {
		return 0
	}
	return *t.PreferredLifetime
}

// GetPrefix retrieves the value of the leaf Prefix from the Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetValidLifetime retrieves the value of the leaf ValidLifetime from the Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidLifetime is set, it can
// safely use t.GetValidLifetime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidLifetime == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix) GetValidLifetime() uint32 {
	if t == nil || t.ValidLifetime == nil {
		return 0
	}
	return *t.ValidLifetime
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix struct, which is a YANG list entry.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"prefix": *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix.
func (*Interface_Subinterface_Ipv6_RouterAdvertisement_Prefix) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv6_Unnumbered represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/unnumbered YANG schema element.
type Interface_Subinterface_Ipv6_Unnumbered struct {
	ΛMetadata     []ygot.Annotation                                    `path:"@" ygotAnnotation:"true"`
	Enabled       *bool                                                `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛEnabled      []ygot.Annotation                                    `path:"config/@enabled" ygotAnnotation:"true"`
	InterfaceRef  *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef `path:"interface-ref" module:"openconfig-if-ip"`
	ΛInterfaceRef []ygot.Annotation                                    `path:"@interface-ref" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Unnumbered implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv6_Unnumbered) IsYANGGoStruct() {}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Ipv6_Unnumbered) GetOrCreateInterfaceRef() *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef{}
	return t.InterfaceRef
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from Interface_Subinterface_Ipv6_Unnumbered. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Ipv6_Unnumbered) GetInterfaceRef() *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetEnabled retrieves the value of the leaf Enabled from the Interface_Subinterface_Ipv6_Unnumbered
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Unnumbered) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv6_Unnumbered
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv6_Unnumbered) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	t.InterfaceRef.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_Unnumbered) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Unnumbered"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_Unnumbered) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv6_Unnumbered) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv6_Unnumbered.
func (*Interface_Subinterface_Ipv6_Unnumbered) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/unnumbered/interface-ref YANG schema element.
type Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-if-ip/openconfig-if-ip"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef.
func (*Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-if-ip"
}

// Interface_Subinterface_Vlan represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan YANG schema element.
type Interface_Subinterface_Vlan struct {
	ΛMetadata       []ygot.Annotation                           `path:"@" ygotAnnotation:"true"`
	EgressMapping   *Interface_Subinterface_Vlan_EgressMapping  `path:"egress-mapping" module:"openconfig-vlan"`
	ΛEgressMapping  []ygot.Annotation                           `path:"@egress-mapping" ygotAnnotation:"true"`
	IngressMapping  *Interface_Subinterface_Vlan_IngressMapping `path:"ingress-mapping" module:"openconfig-vlan"`
	ΛIngressMapping []ygot.Annotation                           `path:"@ingress-mapping" ygotAnnotation:"true"`
	Match           *Interface_Subinterface_Vlan_Match          `path:"match" module:"openconfig-vlan"`
	ΛMatch          []ygot.Annotation                           `path:"@match" ygotAnnotation:"true"`
	VlanId          Interface_Subinterface_Vlan_VlanId_Union    `path:"config/vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛVlanId         []ygot.Annotation                           `path:"config/@vlan-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Vlan implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Vlan) IsYANGGoStruct() {}

// GetOrCreateEgressMapping retrieves the value of the EgressMapping field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Vlan) GetOrCreateEgressMapping() *Interface_Subinterface_Vlan_EgressMapping {
	if t.EgressMapping != nil {
		return t.EgressMapping
	}
	t.EgressMapping = &Interface_Subinterface_Vlan_EgressMapping{}
	return t.EgressMapping
}

// GetOrCreateIngressMapping retrieves the value of the IngressMapping field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Vlan) GetOrCreateIngressMapping() *Interface_Subinterface_Vlan_IngressMapping {
	if t.IngressMapping != nil {
		return t.IngressMapping
	}
	t.IngressMapping = &Interface_Subinterface_Vlan_IngressMapping{}
	return t.IngressMapping
}

// GetOrCreateMatch retrieves the value of the Match field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Vlan) GetOrCreateMatch() *Interface_Subinterface_Vlan_Match {
	if t.Match != nil {
		return t.Match
	}
	t.Match = &Interface_Subinterface_Vlan_Match{}
	return t.Match
}

// GetEgressMapping returns the value of the EgressMapping struct pointer
// from Interface_Subinterface_Vlan. If the receiver or the field EgressMapping is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Vlan) GetEgressMapping() *Interface_Subinterface_Vlan_EgressMapping {
	if t != nil && t.EgressMapping != nil {
		return t.EgressMapping
	}
	return nil
}

// GetIngressMapping returns the value of the IngressMapping struct pointer
// from Interface_Subinterface_Vlan. If the receiver or the field IngressMapping is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Vlan) GetIngressMapping() *Interface_Subinterface_Vlan_IngressMapping {
	if t != nil && t.IngressMapping != nil {
		return t.IngressMapping
	}
	return nil
}

// GetMatch returns the value of the Match struct pointer
// from Interface_Subinterface_Vlan. If the receiver or the field Match is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Vlan) GetMatch() *Interface_Subinterface_Vlan_Match {
	if t != nil && t.Match != nil {
		return t.Match
	}
	return nil
}

// GetVlanId retrieves the value of the leaf VlanId from the Interface_Subinterface_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VlanId is set, it can
// safely use t.GetVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan) GetVlanId() Interface_Subinterface_Vlan_VlanId_Union {
	if t == nil || t.VlanId == nil {
		return nil
	}
	return t.VlanId
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Vlan
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Vlan) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.EgressMapping.PopulateDefaults()
	t.IngressMapping.PopulateDefaults()
	t.Match.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Vlan"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Vlan) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Vlan.
func (*Interface_Subinterface_Vlan) ΛBelongingModule() string {
	return "openconfig-vlan"
}

// Interface_Subinterface_Vlan_VlanId_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/config/vlan-id within the YANG schema.
// Union type can be one of [UnionString, UnionUint16].
type Interface_Subinterface_Vlan_VlanId_Union interface {
	// Union type can be one of [UnionString, UnionUint16]
	Documentation_for_Interface_Subinterface_Vlan_VlanId_Union()
}

// Documentation_for_Interface_Subinterface_Vlan_VlanId_Union ensures that UnionString
// implements the Interface_Subinterface_Vlan_VlanId_Union interface.
func (UnionString) Documentation_for_Interface_Subinterface_Vlan_VlanId_Union() {}

// Documentation_for_Interface_Subinterface_Vlan_VlanId_Union ensures that UnionUint16
// implements the Interface_Subinterface_Vlan_VlanId_Union interface.
func (UnionUint16) Documentation_for_Interface_Subinterface_Vlan_VlanId_Union() {}

// To_Interface_Subinterface_Vlan_VlanId_Union takes an input interface{} and attempts to convert it to a struct
// which implements the Interface_Subinterface_Vlan_VlanId_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *Interface_Subinterface_Vlan) To_Interface_Subinterface_Vlan_VlanId_Union(i interface{}) (Interface_Subinterface_Vlan_VlanId_Union, error) {
	if v, ok := i.(Interface_Subinterface_Vlan_VlanId_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint16:
		return UnionUint16(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to Interface_Subinterface_Vlan_VlanId_Union, unknown union type, got: %T, want any of [string, uint16]", i, i)
}

// Interface_Subinterface_Vlan_EgressMapping represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/egress-mapping YANG schema element.
type Interface_Subinterface_Vlan_EgressMapping struct {
	ΛMetadata        []ygot.Annotation           `path:"@" ygotAnnotation:"true"`
	Tpid             E_VlanTypes_TPID_TYPES      `path:"config/tpid" module:"openconfig-vlan/openconfig-vlan"`
	ΛTpid            []ygot.Annotation           `path:"config/@tpid" ygotAnnotation:"true"`
	VlanId           *uint16                     `path:"config/vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛVlanId          []ygot.Annotation           `path:"config/@vlan-id" ygotAnnotation:"true"`
	VlanStackAction  E_VlanTypes_VlanStackAction `path:"config/vlan-stack-action" module:"openconfig-vlan/openconfig-vlan"`
	ΛVlanStackAction []ygot.Annotation           `path:"config/@vlan-stack-action" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Vlan_EgressMapping implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Vlan_EgressMapping) IsYANGGoStruct() {}

// GetTpid retrieves the value of the leaf Tpid from the Interface_Subinterface_Vlan_EgressMapping
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tpid is set, it can
// safely use t.GetTpid() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tpid == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_EgressMapping) GetTpid() E_VlanTypes_TPID_TYPES {
	if t == nil || t.Tpid == 0 {
		return 0
	}
	return t.Tpid
}

// GetVlanId retrieves the value of the leaf VlanId from the Interface_Subinterface_Vlan_EgressMapping
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VlanId is set, it can
// safely use t.GetVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_EgressMapping) GetVlanId() uint16 {
	if t == nil || t.VlanId == nil {
		return 0
	}
	return *t.VlanId
}

// GetVlanStackAction retrieves the value of the leaf VlanStackAction from the Interface_Subinterface_Vlan_EgressMapping
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VlanStackAction is set, it can
// safely use t.GetVlanStackAction() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VlanStackAction == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_EgressMapping) GetVlanStackAction() E_VlanTypes_VlanStackAction {
	if t == nil || t.VlanStackAction == 0 {
		return 0
	}
	return t.VlanStackAction
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Vlan_EgressMapping
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Vlan_EgressMapping) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_EgressMapping) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Vlan_EgressMapping"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_EgressMapping) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Vlan_EgressMapping) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Vlan_EgressMapping.
func (*Interface_Subinterface_Vlan_EgressMapping) ΛBelongingModule() string {
	return "openconfig-vlan"
}

// Interface_Subinterface_Vlan_IngressMapping represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/ingress-mapping YANG schema element.
type Interface_Subinterface_Vlan_IngressMapping struct {
	ΛMetadata        []ygot.Annotation           `path:"@" ygotAnnotation:"true"`
	Tpid             E_VlanTypes_TPID_TYPES      `path:"config/tpid" module:"openconfig-vlan/openconfig-vlan"`
	ΛTpid            []ygot.Annotation           `path:"config/@tpid" ygotAnnotation:"true"`
	VlanId           *uint16                     `path:"config/vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛVlanId          []ygot.Annotation           `path:"config/@vlan-id" ygotAnnotation:"true"`
	VlanStackAction  E_VlanTypes_VlanStackAction `path:"config/vlan-stack-action" module:"openconfig-vlan/openconfig-vlan"`
	ΛVlanStackAction []ygot.Annotation           `path:"config/@vlan-stack-action" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Vlan_IngressMapping implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Vlan_IngressMapping) IsYANGGoStruct() {}

// GetTpid retrieves the value of the leaf Tpid from the Interface_Subinterface_Vlan_IngressMapping
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tpid is set, it can
// safely use t.GetTpid() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tpid == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_IngressMapping) GetTpid() E_VlanTypes_TPID_TYPES {
	if t == nil || t.Tpid == 0 {
		return 0
	}
	return t.Tpid
}

// GetVlanId retrieves the value of the leaf VlanId from the Interface_Subinterface_Vlan_IngressMapping
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VlanId is set, it can
// safely use t.GetVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_IngressMapping) GetVlanId() uint16 {
	if t == nil || t.VlanId == nil {
		return 0
	}
	return *t.VlanId
}

// GetVlanStackAction retrieves the value of the leaf VlanStackAction from the Interface_Subinterface_Vlan_IngressMapping
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VlanStackAction is set, it can
// safely use t.GetVlanStackAction() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VlanStackAction == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_IngressMapping) GetVlanStackAction() E_VlanTypes_VlanStackAction {
	if t == nil || t.VlanStackAction == 0 {
		return 0
	}
	return t.VlanStackAction
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Vlan_IngressMapping
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Vlan_IngressMapping) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_IngressMapping) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Vlan_IngressMapping"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_IngressMapping) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Vlan_IngressMapping) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Vlan_IngressMapping.
func (*Interface_Subinterface_Vlan_IngressMapping) ΛBelongingModule() string {
	return "openconfig-vlan"
}

// Interface_Subinterface_Vlan_Match represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/match YANG schema element.
type Interface_Subinterface_Vlan_Match struct {
	ΛMetadata                    []ygot.Annotation                                              `path:"@" ygotAnnotation:"true"`
	DoubleTagged                 *Interface_Subinterface_Vlan_Match_DoubleTagged                `path:"double-tagged" module:"openconfig-vlan"`
	ΛDoubleTagged                []ygot.Annotation                                              `path:"@double-tagged" ygotAnnotation:"true"`
	DoubleTaggedInnerList        *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList       `path:"double-tagged-inner-list" module:"openconfig-vlan"`
	ΛDoubleTaggedInnerList       []ygot.Annotation                                              `path:"@double-tagged-inner-list" ygotAnnotation:"true"`
	DoubleTaggedInnerOuterRange  *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange `path:"double-tagged-inner-outer-range" module:"openconfig-vlan"`
	ΛDoubleTaggedInnerOuterRange []ygot.Annotation                                              `path:"@double-tagged-inner-outer-range" ygotAnnotation:"true"`
	DoubleTaggedInnerRange       *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange      `path:"double-tagged-inner-range" module:"openconfig-vlan"`
	ΛDoubleTaggedInnerRange      []ygot.Annotation                                              `path:"@double-tagged-inner-range" ygotAnnotation:"true"`
	DoubleTaggedOuterList        *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList       `path:"double-tagged-outer-list" module:"openconfig-vlan"`
	ΛDoubleTaggedOuterList       []ygot.Annotation                                              `path:"@double-tagged-outer-list" ygotAnnotation:"true"`
	DoubleTaggedOuterRange       *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange      `path:"double-tagged-outer-range" module:"openconfig-vlan"`
	ΛDoubleTaggedOuterRange      []ygot.Annotation                                              `path:"@double-tagged-outer-range" ygotAnnotation:"true"`
	SingleTagged                 *Interface_Subinterface_Vlan_Match_SingleTagged                `path:"single-tagged" module:"openconfig-vlan"`
	ΛSingleTagged                []ygot.Annotation                                              `path:"@single-tagged" ygotAnnotation:"true"`
	SingleTaggedList             *Interface_Subinterface_Vlan_Match_SingleTaggedList            `path:"single-tagged-list" module:"openconfig-vlan"`
	ΛSingleTaggedList            []ygot.Annotation                                              `path:"@single-tagged-list" ygotAnnotation:"true"`
	SingleTaggedRange            *Interface_Subinterface_Vlan_Match_SingleTaggedRange           `path:"single-tagged-range" module:"openconfig-vlan"`
	ΛSingleTaggedRange           []ygot.Annotation                                              `path:"@single-tagged-range" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Vlan_Match implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Vlan_Match) IsYANGGoStruct() {}

// GetOrCreateDoubleTagged retrieves the value of the DoubleTagged field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Vlan_Match) GetOrCreateDoubleTagged() *Interface_Subinterface_Vlan_Match_DoubleTagged {
	if t.DoubleTagged != nil {
		return t.DoubleTagged
	}
	t.DoubleTagged = &Interface_Subinterface_Vlan_Match_DoubleTagged{}
	return t.DoubleTagged
}

// GetOrCreateDoubleTaggedInnerList retrieves the value of the DoubleTaggedInnerList field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Vlan_Match) GetOrCreateDoubleTaggedInnerList() *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList {
	if t.DoubleTaggedInnerList != nil {
		return t.DoubleTaggedInnerList
	}
	t.DoubleTaggedInnerList = &Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList{}
	return t.DoubleTaggedInnerList
}

// GetOrCreateDoubleTaggedInnerOuterRange retrieves the value of the DoubleTaggedInnerOuterRange field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Vlan_Match) GetOrCreateDoubleTaggedInnerOuterRange() *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange {
	if t.DoubleTaggedInnerOuterRange != nil {
		return t.DoubleTaggedInnerOuterRange
	}
	t.DoubleTaggedInnerOuterRange = &Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange{}
	return t.DoubleTaggedInnerOuterRange
}

// GetOrCreateDoubleTaggedInnerRange retrieves the value of the DoubleTaggedInnerRange field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Vlan_Match) GetOrCreateDoubleTaggedInnerRange() *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange {
	if t.DoubleTaggedInnerRange != nil {
		return t.DoubleTaggedInnerRange
	}
	t.DoubleTaggedInnerRange = &Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange{}
	return t.DoubleTaggedInnerRange
}

// GetOrCreateDoubleTaggedOuterList retrieves the value of the DoubleTaggedOuterList field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Vlan_Match) GetOrCreateDoubleTaggedOuterList() *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList {
	if t.DoubleTaggedOuterList != nil {
		return t.DoubleTaggedOuterList
	}
	t.DoubleTaggedOuterList = &Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList{}
	return t.DoubleTaggedOuterList
}

// GetOrCreateDoubleTaggedOuterRange retrieves the value of the DoubleTaggedOuterRange field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Vlan_Match) GetOrCreateDoubleTaggedOuterRange() *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange {
	if t.DoubleTaggedOuterRange != nil {
		return t.DoubleTaggedOuterRange
	}
	t.DoubleTaggedOuterRange = &Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange{}
	return t.DoubleTaggedOuterRange
}

// GetOrCreateSingleTagged retrieves the value of the SingleTagged field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Vlan_Match) GetOrCreateSingleTagged() *Interface_Subinterface_Vlan_Match_SingleTagged {
	if t.SingleTagged != nil {
		return t.SingleTagged
	}
	t.SingleTagged = &Interface_Subinterface_Vlan_Match_SingleTagged{}
	return t.SingleTagged
}

// GetOrCreateSingleTaggedList retrieves the value of the SingleTaggedList field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Vlan_Match) GetOrCreateSingleTaggedList() *Interface_Subinterface_Vlan_Match_SingleTaggedList {
	if t.SingleTaggedList != nil {
		return t.SingleTaggedList
	}
	t.SingleTaggedList = &Interface_Subinterface_Vlan_Match_SingleTaggedList{}
	return t.SingleTaggedList
}

// GetOrCreateSingleTaggedRange retrieves the value of the SingleTaggedRange field
// or returns the existing field if it already exists.
func (t *Interface_Subinterface_Vlan_Match) GetOrCreateSingleTaggedRange() *Interface_Subinterface_Vlan_Match_SingleTaggedRange {
	if t.SingleTaggedRange != nil {
		return t.SingleTaggedRange
	}
	t.SingleTaggedRange = &Interface_Subinterface_Vlan_Match_SingleTaggedRange{}
	return t.SingleTaggedRange
}

// GetDoubleTagged returns the value of the DoubleTagged struct pointer
// from Interface_Subinterface_Vlan_Match. If the receiver or the field DoubleTagged is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Vlan_Match) GetDoubleTagged() *Interface_Subinterface_Vlan_Match_DoubleTagged {
	if t != nil && t.DoubleTagged != nil {
		return t.DoubleTagged
	}
	return nil
}

// GetDoubleTaggedInnerList returns the value of the DoubleTaggedInnerList struct pointer
// from Interface_Subinterface_Vlan_Match. If the receiver or the field DoubleTaggedInnerList is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Vlan_Match) GetDoubleTaggedInnerList() *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList {
	if t != nil && t.DoubleTaggedInnerList != nil {
		return t.DoubleTaggedInnerList
	}
	return nil
}

// GetDoubleTaggedInnerOuterRange returns the value of the DoubleTaggedInnerOuterRange struct pointer
// from Interface_Subinterface_Vlan_Match. If the receiver or the field DoubleTaggedInnerOuterRange is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Vlan_Match) GetDoubleTaggedInnerOuterRange() *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange {
	if t != nil && t.DoubleTaggedInnerOuterRange != nil {
		return t.DoubleTaggedInnerOuterRange
	}
	return nil
}

// GetDoubleTaggedInnerRange returns the value of the DoubleTaggedInnerRange struct pointer
// from Interface_Subinterface_Vlan_Match. If the receiver or the field DoubleTaggedInnerRange is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Vlan_Match) GetDoubleTaggedInnerRange() *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange {
	if t != nil && t.DoubleTaggedInnerRange != nil {
		return t.DoubleTaggedInnerRange
	}
	return nil
}

// GetDoubleTaggedOuterList returns the value of the DoubleTaggedOuterList struct pointer
// from Interface_Subinterface_Vlan_Match. If the receiver or the field DoubleTaggedOuterList is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Vlan_Match) GetDoubleTaggedOuterList() *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList {
	if t != nil && t.DoubleTaggedOuterList != nil {
		return t.DoubleTaggedOuterList
	}
	return nil
}

// GetDoubleTaggedOuterRange returns the value of the DoubleTaggedOuterRange struct pointer
// from Interface_Subinterface_Vlan_Match. If the receiver or the field DoubleTaggedOuterRange is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Vlan_Match) GetDoubleTaggedOuterRange() *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange {
	if t != nil && t.DoubleTaggedOuterRange != nil {
		return t.DoubleTaggedOuterRange
	}
	return nil
}

// GetSingleTagged returns the value of the SingleTagged struct pointer
// from Interface_Subinterface_Vlan_Match. If the receiver or the field SingleTagged is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Vlan_Match) GetSingleTagged() *Interface_Subinterface_Vlan_Match_SingleTagged {
	if t != nil && t.SingleTagged != nil {
		return t.SingleTagged
	}
	return nil
}

// GetSingleTaggedList returns the value of the SingleTaggedList struct pointer
// from Interface_Subinterface_Vlan_Match. If the receiver or the field SingleTaggedList is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Vlan_Match) GetSingleTaggedList() *Interface_Subinterface_Vlan_Match_SingleTaggedList {
	if t != nil && t.SingleTaggedList != nil {
		return t.SingleTaggedList
	}
	return nil
}

// GetSingleTaggedRange returns the value of the SingleTaggedRange struct pointer
// from Interface_Subinterface_Vlan_Match. If the receiver or the field SingleTaggedRange is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Interface_Subinterface_Vlan_Match) GetSingleTaggedRange() *Interface_Subinterface_Vlan_Match_SingleTaggedRange {
	if t != nil && t.SingleTaggedRange != nil {
		return t.SingleTaggedRange
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Vlan_Match
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Vlan_Match) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.DoubleTagged.PopulateDefaults()
	t.DoubleTaggedInnerList.PopulateDefaults()
	t.DoubleTaggedInnerOuterRange.PopulateDefaults()
	t.DoubleTaggedInnerRange.PopulateDefaults()
	t.DoubleTaggedOuterList.PopulateDefaults()
	t.DoubleTaggedOuterRange.PopulateDefaults()
	t.SingleTagged.PopulateDefaults()
	t.SingleTaggedList.PopulateDefaults()
	t.SingleTaggedRange.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Vlan_Match"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Vlan_Match) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Vlan_Match.
func (*Interface_Subinterface_Vlan_Match) ΛBelongingModule() string {
	return "openconfig-vlan"
}

// Interface_Subinterface_Vlan_Match_DoubleTagged represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged YANG schema element.
type Interface_Subinterface_Vlan_Match_DoubleTagged struct {
	ΛMetadata    []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	InnerVlanId  *uint16           `path:"config/inner-vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛInnerVlanId []ygot.Annotation `path:"config/@inner-vlan-id" ygotAnnotation:"true"`
	OuterVlanId  *uint16           `path:"config/outer-vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛOuterVlanId []ygot.Annotation `path:"config/@outer-vlan-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Vlan_Match_DoubleTagged implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Vlan_Match_DoubleTagged) IsYANGGoStruct() {}

// GetInnerVlanId retrieves the value of the leaf InnerVlanId from the Interface_Subinterface_Vlan_Match_DoubleTagged
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InnerVlanId is set, it can
// safely use t.GetInnerVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InnerVlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_DoubleTagged) GetInnerVlanId() uint16 {
	if t == nil || t.InnerVlanId == nil {
		return 0
	}
	return *t.InnerVlanId
}

// GetOuterVlanId retrieves the value of the leaf OuterVlanId from the Interface_Subinterface_Vlan_Match_DoubleTagged
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OuterVlanId is set, it can
// safely use t.GetOuterVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OuterVlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_DoubleTagged) GetOuterVlanId() uint16 {
	if t == nil || t.OuterVlanId == nil {
		return 0
	}
	return *t.OuterVlanId
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Vlan_Match_DoubleTagged
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Vlan_Match_DoubleTagged) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_DoubleTagged) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Vlan_Match_DoubleTagged"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_DoubleTagged) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Vlan_Match_DoubleTagged) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Vlan_Match_DoubleTagged.
func (*Interface_Subinterface_Vlan_Match_DoubleTagged) ΛBelongingModule() string {
	return "openconfig-vlan"
}

// Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-inner-list YANG schema element.
type Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	InnerVlanIds  []uint16          `path:"config/inner-vlan-ids" module:"openconfig-vlan/openconfig-vlan"`
	ΛInnerVlanIds []ygot.Annotation `path:"config/@inner-vlan-ids" ygotAnnotation:"true"`
	OuterVlanId   *uint16           `path:"config/outer-vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛOuterVlanId  []ygot.Annotation `path:"config/@outer-vlan-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList) IsYANGGoStruct() {}

// GetInnerVlanIds retrieves the value of the leaf InnerVlanIds from the Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InnerVlanIds is set, it can
// safely use t.GetInnerVlanIds() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InnerVlanIds == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList) GetInnerVlanIds() []uint16 {
	if t == nil || t.InnerVlanIds == nil {
		return nil
	}
	return t.InnerVlanIds
}

// GetOuterVlanId retrieves the value of the leaf OuterVlanId from the Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OuterVlanId is set, it can
// safely use t.GetOuterVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OuterVlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList) GetOuterVlanId() uint16 {
	if t == nil || t.OuterVlanId == nil {
		return 0
	}
	return *t.OuterVlanId
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList.
func (*Interface_Subinterface_Vlan_Match_DoubleTaggedInnerList) ΛBelongingModule() string {
	return "openconfig-vlan"
}

// Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-inner-outer-range YANG schema element.
type Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	InnerHighVlanId  *uint16           `path:"config/inner-high-vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛInnerHighVlanId []ygot.Annotation `path:"config/@inner-high-vlan-id" ygotAnnotation:"true"`
	InnerLowVlanId   *uint16           `path:"config/inner-low-vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛInnerLowVlanId  []ygot.Annotation `path:"config/@inner-low-vlan-id" ygotAnnotation:"true"`
	OuterHighVlanId  *uint16           `path:"config/outer-high-vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛOuterHighVlanId []ygot.Annotation `path:"config/@outer-high-vlan-id" ygotAnnotation:"true"`
	OuterLowVlanId   *uint16           `path:"config/outer-low-vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛOuterLowVlanId  []ygot.Annotation `path:"config/@outer-low-vlan-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange) IsYANGGoStruct() {}

// GetInnerHighVlanId retrieves the value of the leaf InnerHighVlanId from the Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InnerHighVlanId is set, it can
// safely use t.GetInnerHighVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InnerHighVlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange) GetInnerHighVlanId() uint16 {
	if t == nil || t.InnerHighVlanId == nil {
		return 0
	}
	return *t.InnerHighVlanId
}

// GetInnerLowVlanId retrieves the value of the leaf InnerLowVlanId from the Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InnerLowVlanId is set, it can
// safely use t.GetInnerLowVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InnerLowVlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange) GetInnerLowVlanId() uint16 {
	if t == nil || t.InnerLowVlanId == nil {
		return 0
	}
	return *t.InnerLowVlanId
}

// GetOuterHighVlanId retrieves the value of the leaf OuterHighVlanId from the Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OuterHighVlanId is set, it can
// safely use t.GetOuterHighVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OuterHighVlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange) GetOuterHighVlanId() uint16 {
	if t == nil || t.OuterHighVlanId == nil {
		return 0
	}
	return *t.OuterHighVlanId
}

// GetOuterLowVlanId retrieves the value of the leaf OuterLowVlanId from the Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OuterLowVlanId is set, it can
// safely use t.GetOuterLowVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OuterLowVlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange) GetOuterLowVlanId() uint16 {
	if t == nil || t.OuterLowVlanId == nil {
		return 0
	}
	return *t.OuterLowVlanId
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange.
func (*Interface_Subinterface_Vlan_Match_DoubleTaggedInnerOuterRange) ΛBelongingModule() string {
	return "openconfig-vlan"
}

// Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-inner-range YANG schema element.
type Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	InnerHighVlanId  *uint16           `path:"config/inner-high-vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛInnerHighVlanId []ygot.Annotation `path:"config/@inner-high-vlan-id" ygotAnnotation:"true"`
	InnerLowVlanId   *uint16           `path:"config/inner-low-vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛInnerLowVlanId  []ygot.Annotation `path:"config/@inner-low-vlan-id" ygotAnnotation:"true"`
	OuterVlanId      []uint16          `path:"config/outer-vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛOuterVlanId     []ygot.Annotation `path:"config/@outer-vlan-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange) IsYANGGoStruct() {}

// GetInnerHighVlanId retrieves the value of the leaf InnerHighVlanId from the Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InnerHighVlanId is set, it can
// safely use t.GetInnerHighVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InnerHighVlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange) GetInnerHighVlanId() uint16 {
	if t == nil || t.InnerHighVlanId == nil {
		return 0
	}
	return *t.InnerHighVlanId
}

// GetInnerLowVlanId retrieves the value of the leaf InnerLowVlanId from the Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InnerLowVlanId is set, it can
// safely use t.GetInnerLowVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InnerLowVlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange) GetInnerLowVlanId() uint16 {
	if t == nil || t.InnerLowVlanId == nil {
		return 0
	}
	return *t.InnerLowVlanId
}

// GetOuterVlanId retrieves the value of the leaf OuterVlanId from the Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OuterVlanId is set, it can
// safely use t.GetOuterVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OuterVlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange) GetOuterVlanId() []uint16 {
	if t == nil || t.OuterVlanId == nil {
		return nil
	}
	return t.OuterVlanId
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange.
func (*Interface_Subinterface_Vlan_Match_DoubleTaggedInnerRange) ΛBelongingModule() string {
	return "openconfig-vlan"
}

// Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-outer-list YANG schema element.
type Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	InnerVlanId   *uint16           `path:"config/inner-vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛInnerVlanId  []ygot.Annotation `path:"config/@inner-vlan-id" ygotAnnotation:"true"`
	OuterVlanIds  []uint16          `path:"config/outer-vlan-ids" module:"openconfig-vlan/openconfig-vlan"`
	ΛOuterVlanIds []ygot.Annotation `path:"config/@outer-vlan-ids" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList) IsYANGGoStruct() {}

// GetInnerVlanId retrieves the value of the leaf InnerVlanId from the Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InnerVlanId is set, it can
// safely use t.GetInnerVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InnerVlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList) GetInnerVlanId() uint16 {
	if t == nil || t.InnerVlanId == nil {
		return 0
	}
	return *t.InnerVlanId
}

// GetOuterVlanIds retrieves the value of the leaf OuterVlanIds from the Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OuterVlanIds is set, it can
// safely use t.GetOuterVlanIds() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OuterVlanIds == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList) GetOuterVlanIds() []uint16 {
	if t == nil || t.OuterVlanIds == nil {
		return nil
	}
	return t.OuterVlanIds
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList.
func (*Interface_Subinterface_Vlan_Match_DoubleTaggedOuterList) ΛBelongingModule() string {
	return "openconfig-vlan"
}

// Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-outer-range YANG schema element.
type Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	InnerVlanId      *uint16           `path:"config/inner-vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛInnerVlanId     []ygot.Annotation `path:"config/@inner-vlan-id" ygotAnnotation:"true"`
	OuterHighVlanId  *uint16           `path:"config/outer-high-vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛOuterHighVlanId []ygot.Annotation `path:"config/@outer-high-vlan-id" ygotAnnotation:"true"`
	OuterLowVlanId   *uint16           `path:"config/outer-low-vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛOuterLowVlanId  []ygot.Annotation `path:"config/@outer-low-vlan-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange) IsYANGGoStruct() {}

// GetInnerVlanId retrieves the value of the leaf InnerVlanId from the Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InnerVlanId is set, it can
// safely use t.GetInnerVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InnerVlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange) GetInnerVlanId() uint16 {
	if t == nil || t.InnerVlanId == nil {
		return 0
	}
	return *t.InnerVlanId
}

// GetOuterHighVlanId retrieves the value of the leaf OuterHighVlanId from the Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OuterHighVlanId is set, it can
// safely use t.GetOuterHighVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OuterHighVlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange) GetOuterHighVlanId() uint16 {
	if t == nil || t.OuterHighVlanId == nil {
		return 0
	}
	return *t.OuterHighVlanId
}

// GetOuterLowVlanId retrieves the value of the leaf OuterLowVlanId from the Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OuterLowVlanId is set, it can
// safely use t.GetOuterLowVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OuterLowVlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange) GetOuterLowVlanId() uint16 {
	if t == nil || t.OuterLowVlanId == nil {
		return 0
	}
	return *t.OuterLowVlanId
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange.
func (*Interface_Subinterface_Vlan_Match_DoubleTaggedOuterRange) ΛBelongingModule() string {
	return "openconfig-vlan"
}

// Interface_Subinterface_Vlan_Match_SingleTagged represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/match/single-tagged YANG schema element.
type Interface_Subinterface_Vlan_Match_SingleTagged struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	VlanId    *uint16           `path:"config/vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛVlanId   []ygot.Annotation `path:"config/@vlan-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Vlan_Match_SingleTagged implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Vlan_Match_SingleTagged) IsYANGGoStruct() {}

// GetVlanId retrieves the value of the leaf VlanId from the Interface_Subinterface_Vlan_Match_SingleTagged
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VlanId is set, it can
// safely use t.GetVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_SingleTagged) GetVlanId() uint16 {
	if t == nil || t.VlanId == nil {
		return 0
	}
	return *t.VlanId
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Vlan_Match_SingleTagged
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Vlan_Match_SingleTagged) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_SingleTagged) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Vlan_Match_SingleTagged"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_SingleTagged) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Vlan_Match_SingleTagged) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Vlan_Match_SingleTagged.
func (*Interface_Subinterface_Vlan_Match_SingleTagged) ΛBelongingModule() string {
	return "openconfig-vlan"
}

// Interface_Subinterface_Vlan_Match_SingleTaggedList represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/match/single-tagged-list YANG schema element.
type Interface_Subinterface_Vlan_Match_SingleTaggedList struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	VlanIds   []uint16          `path:"config/vlan-ids" module:"openconfig-vlan/openconfig-vlan"`
	ΛVlanIds  []ygot.Annotation `path:"config/@vlan-ids" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Vlan_Match_SingleTaggedList implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Vlan_Match_SingleTaggedList) IsYANGGoStruct() {}

// GetVlanIds retrieves the value of the leaf VlanIds from the Interface_Subinterface_Vlan_Match_SingleTaggedList
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VlanIds is set, it can
// safely use t.GetVlanIds() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VlanIds == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_SingleTaggedList) GetVlanIds() []uint16 {
	if t == nil || t.VlanIds == nil {
		return nil
	}
	return t.VlanIds
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Vlan_Match_SingleTaggedList
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Vlan_Match_SingleTaggedList) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_SingleTaggedList) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Vlan_Match_SingleTaggedList"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_SingleTaggedList) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Vlan_Match_SingleTaggedList) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Vlan_Match_SingleTaggedList.
func (*Interface_Subinterface_Vlan_Match_SingleTaggedList) ΛBelongingModule() string {
	return "openconfig-vlan"
}

// Interface_Subinterface_Vlan_Match_SingleTaggedRange represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/match/single-tagged-range YANG schema element.
type Interface_Subinterface_Vlan_Match_SingleTaggedRange struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	HighVlanId  *uint16           `path:"config/high-vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛHighVlanId []ygot.Annotation `path:"config/@high-vlan-id" ygotAnnotation:"true"`
	LowVlanId   *uint16           `path:"config/low-vlan-id" module:"openconfig-vlan/openconfig-vlan"`
	ΛLowVlanId  []ygot.Annotation `path:"config/@low-vlan-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Interface_Subinterface_Vlan_Match_SingleTaggedRange implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Interface_Subinterface_Vlan_Match_SingleTaggedRange) IsYANGGoStruct() {}

// GetHighVlanId retrieves the value of the leaf HighVlanId from the Interface_Subinterface_Vlan_Match_SingleTaggedRange
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HighVlanId is set, it can
// safely use t.GetHighVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HighVlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_SingleTaggedRange) GetHighVlanId() uint16 {
	if t == nil || t.HighVlanId == nil {
		return 0
	}
	return *t.HighVlanId
}

// GetLowVlanId retrieves the value of the leaf LowVlanId from the Interface_Subinterface_Vlan_Match_SingleTaggedRange
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LowVlanId is set, it can
// safely use t.GetLowVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LowVlanId == nil' before retrieving the leaf's value.
func (t *Interface_Subinterface_Vlan_Match_SingleTaggedRange) GetLowVlanId() uint16 {
	if t == nil || t.LowVlanId == nil {
		return 0
	}
	return *t.LowVlanId
}

// PopulateDefaults recursively populates unset leaf fields in the Interface_Subinterface_Vlan_Match_SingleTaggedRange
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Interface_Subinterface_Vlan_Match_SingleTaggedRange) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_SingleTaggedRange) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Vlan_Match_SingleTaggedRange"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Interface_Subinterface_Vlan_Match_SingleTaggedRange) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Interface_Subinterface_Vlan_Match_SingleTaggedRange) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Interface_Subinterface_Vlan_Match_SingleTaggedRange.
func (*Interface_Subinterface_Vlan_Match_SingleTaggedRange) ΛBelongingModule() string {
	return "openconfig-vlan"
}

// Keychain represents the /openconfig-keychain/keychains/keychain YANG schema element.
type Keychain struct {
	ΛMetadata  []ygot.Annotation                          `path:"@" ygotAnnotation:"true"`
	Key        map[Keychain_Key_KeyId_Union]*Keychain_Key `path:"keys/key" module:"openconfig-keychain/openconfig-keychain"`
	ΛKey       []ygot.Annotation                          `path:"keys/@key" ygotAnnotation:"true"`
	Name       *string                                    `path:"config/name|name" module:"openconfig-keychain/openconfig-keychain|openconfig-keychain"`
	ΛName      []ygot.Annotation                          `path:"config/@name|@name" ygotAnnotation:"true"`
	Tolerance  Keychain_Tolerance_Union                   `path:"config/tolerance" module:"openconfig-keychain/openconfig-keychain"`
	ΛTolerance []ygot.Annotation                          `path:"config/@tolerance" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Keychain implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Keychain) IsYANGGoStruct() {}

// NewKey creates a new entry in the Key list of the
// Keychain struct. The keys of the list are populated from the input
// arguments.
func (t *Keychain) NewKey(KeyId Keychain_Key_KeyId_Union) (*Keychain_Key, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Key == nil {
		t.Key = make(map[Keychain_Key_KeyId_Union]*Keychain_Key)
	}

	key := KeyId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Key[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Key", key)
	}

	t.Key[key] = &Keychain_Key{
		KeyId: KeyId,
	}

	return t.Key[key], nil
}

// RenameKey renames an entry in the list Key within
// the Keychain struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Keychain) RenameKey(oldK, newK Keychain_Key_KeyId_Union) error {
	if _, ok := t.Key[newK]; ok {
		return fmt.Errorf("key %v already exists in Key", newK)
	}

	e, ok := t.Key[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Key", oldK)
	}
	e.KeyId = newK

	t.Key[newK] = e
	delete(t.Key, oldK)
	return nil
}

// GetOrCreateKeyMap returns the list (map) from Keychain.
//
// It initializes the field if not already initialized.
func (t *Keychain) GetOrCreateKeyMap() map[Keychain_Key_KeyId_Union]*Keychain_Key {
	if t.Key == nil {
		t.Key = make(map[Keychain_Key_KeyId_Union]*Keychain_Key)
	}
	return t.Key
}

// GetOrCreateKey retrieves the value with the specified keys from
// the receiver Keychain. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Keychain) GetOrCreateKey(KeyId Keychain_Key_KeyId_Union) *Keychain_Key {

	key := KeyId

	if v, ok := t.Key[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewKey(KeyId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateKey got unexpected error: %v", err))
	}
	return v
}

// GetKey retrieves the value with the specified key from
// the Key map field of Keychain. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Keychain) GetKey(KeyId Keychain_Key_KeyId_Union) *Keychain_Key {

	if t == nil {
		return nil
	}

	key := KeyId

	if lm, ok := t.Key[key]; ok {
		return lm
	}
	return nil
}

// AppendKey appends the supplied Keychain_Key struct to the
// list Key of Keychain. If the key value(s) specified in
// the supplied Keychain_Key already exist in the list, an error is
// returned.
func (t *Keychain) AppendKey(v *Keychain_Key) error {
	key := v.KeyId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Key == nil {
		t.Key = make(map[Keychain_Key_KeyId_Union]*Keychain_Key)
	}

	if _, ok := t.Key[key]; ok {
		return fmt.Errorf("duplicate key for list Key %v", key)
	}

	t.Key[key] = v
	return nil
}

// GetName retrieves the value of the leaf Name from the Keychain
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Keychain) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetTolerance retrieves the value of the leaf Tolerance from the Keychain
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tolerance is set, it can
// safely use t.GetTolerance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tolerance == nil' before retrieving the leaf's value.
func (t *Keychain) GetTolerance() Keychain_Tolerance_Union {
	if t == nil || t.Tolerance == nil {
		return nil
	}
	return t.Tolerance
}

// PopulateDefaults recursively populates unset leaf fields in the Keychain
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Keychain) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Key {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the Keychain struct, which is a YANG list entry.
func (t *Keychain) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Keychain) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Keychain"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Keychain) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Keychain) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Keychain.
func (*Keychain) ΛBelongingModule() string {
	return "openconfig-keychain"
}

// Keychain_Tolerance_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-keychain/keychains/keychain/config/tolerance within the YANG schema.
// Union type can be one of [E_Keychain_Tolerance_Enum, UnionUint32].
type Keychain_Tolerance_Union interface {
	// Union type can be one of [E_Keychain_Tolerance_Enum, UnionUint32]
	Documentation_for_Keychain_Tolerance_Union()
}

// Documentation_for_Keychain_Tolerance_Union ensures that E_Keychain_Tolerance_Enum
// implements the Keychain_Tolerance_Union interface.
func (E_Keychain_Tolerance_Enum) Documentation_for_Keychain_Tolerance_Union() {}

// Documentation_for_Keychain_Tolerance_Union ensures that UnionUint32
// implements the Keychain_Tolerance_Union interface.
func (UnionUint32) Documentation_for_Keychain_Tolerance_Union() {}

// To_Keychain_Tolerance_Union takes an input interface{} and attempts to convert it to a struct
// which implements the Keychain_Tolerance_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *Keychain) To_Keychain_Tolerance_Union(i interface{}) (Keychain_Tolerance_Union, error) {
	if v, ok := i.(Keychain_Tolerance_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to Keychain_Tolerance_Union, unknown union type, got: %T, want any of [E_Keychain_Tolerance_Enum, uint32]", i, i)
}

// Keychain_Key represents the /openconfig-keychain/keychains/keychain/keys/key YANG schema element.
type Keychain_Key struct {
	ΛMetadata        []ygot.Annotation             `path:"@" ygotAnnotation:"true"`
	CryptoAlgorithm  E_KeychainTypes_CRYPTO_TYPE   `path:"config/crypto-algorithm" module:"openconfig-keychain/openconfig-keychain"`
	ΛCryptoAlgorithm []ygot.Annotation             `path:"config/@crypto-algorithm" ygotAnnotation:"true"`
	KeyId            Keychain_Key_KeyId_Union      `path:"config/key-id|key-id" module:"openconfig-keychain/openconfig-keychain|openconfig-keychain"`
	ΛKeyId           []ygot.Annotation             `path:"config/@key-id|@key-id" ygotAnnotation:"true"`
	ReceiveLifetime  *Keychain_Key_ReceiveLifetime `path:"receive-lifetime" module:"openconfig-keychain"`
	ΛReceiveLifetime []ygot.Annotation             `path:"@receive-lifetime" ygotAnnotation:"true"`
	SecretKey        *string                       `path:"config/secret-key" module:"openconfig-keychain/openconfig-keychain"`
	ΛSecretKey       []ygot.Annotation             `path:"config/@secret-key" ygotAnnotation:"true"`
	SendLifetime     *Keychain_Key_SendLifetime    `path:"send-lifetime" module:"openconfig-keychain"`
	ΛSendLifetime    []ygot.Annotation             `path:"@send-lifetime" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Keychain_Key implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Keychain_Key) IsYANGGoStruct() {}

// GetOrCreateReceiveLifetime retrieves the value of the ReceiveLifetime field
// or returns the existing field if it already exists.
func (t *Keychain_Key) GetOrCreateReceiveLifetime() *Keychain_Key_ReceiveLifetime {
	if t.ReceiveLifetime != nil {
		return t.ReceiveLifetime
	}
	t.ReceiveLifetime = &Keychain_Key_ReceiveLifetime{}
	return t.ReceiveLifetime
}

// GetOrCreateSendLifetime retrieves the value of the SendLifetime field
// or returns the existing field if it already exists.
func (t *Keychain_Key) GetOrCreateSendLifetime() *Keychain_Key_SendLifetime {
	if t.SendLifetime != nil {
		return t.SendLifetime
	}
	t.SendLifetime = &Keychain_Key_SendLifetime{}
	return t.SendLifetime
}

// GetReceiveLifetime returns the value of the ReceiveLifetime struct pointer
// from Keychain_Key. If the receiver or the field ReceiveLifetime is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Keychain_Key) GetReceiveLifetime() *Keychain_Key_ReceiveLifetime {
	if t != nil && t.ReceiveLifetime != nil {
		return t.ReceiveLifetime
	}
	return nil
}

// GetSendLifetime returns the value of the SendLifetime struct pointer
// from Keychain_Key. If the receiver or the field SendLifetime is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Keychain_Key) GetSendLifetime() *Keychain_Key_SendLifetime {
	if t != nil && t.SendLifetime != nil {
		return t.SendLifetime
	}
	return nil
}

// GetCryptoAlgorithm retrieves the value of the leaf CryptoAlgorithm from the Keychain_Key
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CryptoAlgorithm is set, it can
// safely use t.GetCryptoAlgorithm() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CryptoAlgorithm == nil' before retrieving the leaf's value.
func (t *Keychain_Key) GetCryptoAlgorithm() E_KeychainTypes_CRYPTO_TYPE {
	if t == nil || t.CryptoAlgorithm == 0 {
		return 0
	}
	return t.CryptoAlgorithm
}

// GetKeyId retrieves the value of the leaf KeyId from the Keychain_Key
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if KeyId is set, it can
// safely use t.GetKeyId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.KeyId == nil' before retrieving the leaf's value.
func (t *Keychain_Key) GetKeyId() Keychain_Key_KeyId_Union {
	if t == nil || t.KeyId == nil {
		return nil
	}
	return t.KeyId
}

// GetSecretKey retrieves the value of the leaf SecretKey from the Keychain_Key
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SecretKey is set, it can
// safely use t.GetSecretKey() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SecretKey == nil' before retrieving the leaf's value.
func (t *Keychain_Key) GetSecretKey() string {
	if t == nil || t.SecretKey == nil {
		return ""
	}
	return *t.SecretKey
}

// PopulateDefaults recursively populates unset leaf fields in the Keychain_Key
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Keychain_Key) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.ReceiveLifetime.PopulateDefaults()
	t.SendLifetime.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the Keychain_Key struct, which is a YANG list entry.
func (t *Keychain_Key) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"key-id": t.KeyId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Keychain_Key) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Keychain_Key"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Keychain_Key) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Keychain_Key) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Keychain_Key.
func (*Keychain_Key) ΛBelongingModule() string {
	return "openconfig-keychain"
}

// Keychain_Key_KeyId_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-keychain/keychains/keychain/keys/key/config/key-id within the YANG schema.
// Union type can be one of [UnionString, UnionUint64].
type Keychain_Key_KeyId_Union interface {
	// Union type can be one of [UnionString, UnionUint64]
	Documentation_for_Keychain_Key_KeyId_Union()
}

// Documentation_for_Keychain_Key_KeyId_Union ensures that UnionString
// implements the Keychain_Key_KeyId_Union interface.
func (UnionString) Documentation_for_Keychain_Key_KeyId_Union() {}

// Documentation_for_Keychain_Key_KeyId_Union ensures that UnionUint64
// implements the Keychain_Key_KeyId_Union interface.
func (UnionUint64) Documentation_for_Keychain_Key_KeyId_Union() {}

// To_Keychain_Key_KeyId_Union takes an input interface{} and attempts to convert it to a struct
// which implements the Keychain_Key_KeyId_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *Keychain_Key) To_Keychain_Key_KeyId_Union(i interface{}) (Keychain_Key_KeyId_Union, error) {
	if v, ok := i.(Keychain_Key_KeyId_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint64:
		return UnionUint64(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to Keychain_Key_KeyId_Union, unknown union type, got: %T, want any of [string, uint64]", i, i)
}

// Keychain_Key_ReceiveLifetime represents the /openconfig-keychain/keychains/keychain/keys/key/receive-lifetime YANG schema element.
type Keychain_Key_ReceiveLifetime struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	EndTime    *uint64           `path:"config/end-time" module:"openconfig-keychain/openconfig-keychain"`
	ΛEndTime   []ygot.Annotation `path:"config/@end-time" ygotAnnotation:"true"`
	StartTime  *uint64           `path:"config/start-time" module:"openconfig-keychain/openconfig-keychain"`
	ΛStartTime []ygot.Annotation `path:"config/@start-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Keychain_Key_ReceiveLifetime implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Keychain_Key_ReceiveLifetime) IsYANGGoStruct() {}

// GetEndTime retrieves the value of the leaf EndTime from the Keychain_Key_ReceiveLifetime
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EndTime is set, it can
// safely use t.GetEndTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EndTime == nil' before retrieving the leaf's value.
func (t *Keychain_Key_ReceiveLifetime) GetEndTime() uint64 {
	if t == nil || t.EndTime == nil {
		return 0
	}
	return *t.EndTime
}

// GetStartTime retrieves the value of the leaf StartTime from the Keychain_Key_ReceiveLifetime
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if StartTime is set, it can
// safely use t.GetStartTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.StartTime == nil' before retrieving the leaf's value.
func (t *Keychain_Key_ReceiveLifetime) GetStartTime() uint64 {
	if t == nil || t.StartTime == nil {
		return 0
	}
	return *t.StartTime
}

// PopulateDefaults recursively populates unset leaf fields in the Keychain_Key_ReceiveLifetime
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Keychain_Key_ReceiveLifetime) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Keychain_Key_ReceiveLifetime) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Keychain_Key_ReceiveLifetime"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Keychain_Key_ReceiveLifetime) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Keychain_Key_ReceiveLifetime) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Keychain_Key_ReceiveLifetime.
func (*Keychain_Key_ReceiveLifetime) ΛBelongingModule() string {
	return "openconfig-keychain"
}

// Keychain_Key_SendLifetime represents the /openconfig-keychain/keychains/keychain/keys/key/send-lifetime YANG schema element.
type Keychain_Key_SendLifetime struct {
	ΛMetadata       []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	EndTime         *uint64           `path:"config/end-time" module:"openconfig-keychain/openconfig-keychain"`
	ΛEndTime        []ygot.Annotation `path:"config/@end-time" ygotAnnotation:"true"`
	SendAndReceive  *bool             `path:"config/send-and-receive" module:"openconfig-keychain/openconfig-keychain"`
	ΛSendAndReceive []ygot.Annotation `path:"config/@send-and-receive" ygotAnnotation:"true"`
	StartTime       *uint64           `path:"config/start-time" module:"openconfig-keychain/openconfig-keychain"`
	ΛStartTime      []ygot.Annotation `path:"config/@start-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Keychain_Key_SendLifetime implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Keychain_Key_SendLifetime) IsYANGGoStruct() {}

// GetEndTime retrieves the value of the leaf EndTime from the Keychain_Key_SendLifetime
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EndTime is set, it can
// safely use t.GetEndTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EndTime == nil' before retrieving the leaf's value.
func (t *Keychain_Key_SendLifetime) GetEndTime() uint64 {
	if t == nil || t.EndTime == nil {
		return 0
	}
	return *t.EndTime
}

// GetSendAndReceive retrieves the value of the leaf SendAndReceive from the Keychain_Key_SendLifetime
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SendAndReceive is set, it can
// safely use t.GetSendAndReceive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SendAndReceive == nil' before retrieving the leaf's value.
func (t *Keychain_Key_SendLifetime) GetSendAndReceive() bool {
	if t == nil || t.SendAndReceive == nil {
		return true
	}
	return *t.SendAndReceive
}

// GetStartTime retrieves the value of the leaf StartTime from the Keychain_Key_SendLifetime
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if StartTime is set, it can
// safely use t.GetStartTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.StartTime == nil' before retrieving the leaf's value.
func (t *Keychain_Key_SendLifetime) GetStartTime() uint64 {
	if t == nil || t.StartTime == nil {
		return 0
	}
	return *t.StartTime
}

// PopulateDefaults recursively populates unset leaf fields in the Keychain_Key_SendLifetime
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Keychain_Key_SendLifetime) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.SendAndReceive == nil {
		var v bool = true
		t.SendAndReceive = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Keychain_Key_SendLifetime) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Keychain_Key_SendLifetime"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Keychain_Key_SendLifetime) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Keychain_Key_SendLifetime) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Keychain_Key_SendLifetime.
func (*Keychain_Key_SendLifetime) ΛBelongingModule() string {
	return "openconfig-keychain"
}

// Lacp represents the /openconfig-lacp/lacp YANG schema element.
type Lacp struct {
	ΛMetadata       []ygot.Annotation          `path:"@" ygotAnnotation:"true"`
	Interface       map[string]*Lacp_Interface `path:"interfaces/interface" module:"openconfig-lacp/openconfig-lacp"`
	ΛInterface      []ygot.Annotation          `path:"interfaces/@interface" ygotAnnotation:"true"`
	SystemPriority  *uint16                    `path:"config/system-priority" module:"openconfig-lacp/openconfig-lacp"`
	ΛSystemPriority []ygot.Annotation          `path:"config/@system-priority" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Lacp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Lacp) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// Lacp struct. The keys of the list are populated from the input
// arguments.
func (t *Lacp) NewInterface(Name string) (*Lacp_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Lacp_Interface)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &Lacp_Interface{
		Name: &Name,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the Lacp struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Lacp) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.Name = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from Lacp.
//
// It initializes the field if not already initialized.
func (t *Lacp) GetOrCreateInterfaceMap() map[string]*Lacp_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*Lacp_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver Lacp. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Lacp) GetOrCreateInterface(Name string) *Lacp_Interface {

	key := Name

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of Lacp. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Lacp) GetInterface(Name string) *Lacp_Interface {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied Lacp_Interface struct to the
// list Interface of Lacp. If the key value(s) specified in
// the supplied Lacp_Interface already exist in the list, an error is
// returned.
func (t *Lacp) AppendInterface(v *Lacp_Interface) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Lacp_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// GetSystemPriority retrieves the value of the leaf SystemPriority from the Lacp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemPriority is set, it can
// safely use t.GetSystemPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemPriority == nil' before retrieving the leaf's value.
func (t *Lacp) GetSystemPriority() uint16 {
	if t == nil || t.SystemPriority == nil {
		return 0
	}
	return *t.SystemPriority
}

// PopulateDefaults recursively populates unset leaf fields in the Lacp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Lacp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lacp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Lacp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lacp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Lacp) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Lacp.
func (*Lacp) ΛBelongingModule() string {
	return "openconfig-lacp"
}

// Lacp_Interface represents the /openconfig-lacp/lacp/interfaces/interface YANG schema element.
type Lacp_Interface struct {
	ΛMetadata       []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	Interval        E_Lacp_LacpPeriodType             `path:"config/interval" module:"openconfig-lacp/openconfig-lacp"`
	ΛInterval       []ygot.Annotation                 `path:"config/@interval" ygotAnnotation:"true"`
	LacpMode        E_Lacp_LacpActivityType           `path:"config/lacp-mode" module:"openconfig-lacp/openconfig-lacp"`
	ΛLacpMode       []ygot.Annotation                 `path:"config/@lacp-mode" ygotAnnotation:"true"`
	Member          map[string]*Lacp_Interface_Member `path:"members/member" module:"openconfig-lacp/openconfig-lacp"`
	ΛMember         []ygot.Annotation                 `path:"members/@member" ygotAnnotation:"true"`
	Name            *string                           `path:"config/name|name" module:"openconfig-lacp/openconfig-lacp|openconfig-lacp"`
	ΛName           []ygot.Annotation                 `path:"config/@name|@name" ygotAnnotation:"true"`
	SystemIdMac     *string                           `path:"config/system-id-mac" module:"openconfig-lacp/openconfig-lacp"`
	ΛSystemIdMac    []ygot.Annotation                 `path:"config/@system-id-mac" ygotAnnotation:"true"`
	SystemPriority  *uint16                           `path:"config/system-priority" module:"openconfig-lacp/openconfig-lacp"`
	ΛSystemPriority []ygot.Annotation                 `path:"config/@system-priority" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Lacp_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Lacp_Interface) IsYANGGoStruct() {}

// NewMember creates a new entry in the Member list of the
// Lacp_Interface struct. The keys of the list are populated from the input
// arguments.
func (t *Lacp_Interface) NewMember(Interface string) (*Lacp_Interface_Member, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Member == nil {
		t.Member = make(map[string]*Lacp_Interface_Member)
	}

	key := Interface

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Member[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Member", key)
	}

	t.Member[key] = &Lacp_Interface_Member{
		Interface: &Interface,
	}

	return t.Member[key], nil
}

// RenameMember renames an entry in the list Member within
// the Lacp_Interface struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Lacp_Interface) RenameMember(oldK, newK string) error {
	if _, ok := t.Member[newK]; ok {
		return fmt.Errorf("key %v already exists in Member", newK)
	}

	e, ok := t.Member[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Member", oldK)
	}
	e.Interface = &newK

	t.Member[newK] = e
	delete(t.Member, oldK)
	return nil
}

// GetOrCreateMemberMap returns the list (map) from Lacp_Interface.
//
// It initializes the field if not already initialized.
func (t *Lacp_Interface) GetOrCreateMemberMap() map[string]*Lacp_Interface_Member {
	if t.Member == nil {
		t.Member = make(map[string]*Lacp_Interface_Member)
	}
	return t.Member
}

// GetOrCreateMember retrieves the value with the specified keys from
// the receiver Lacp_Interface. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Lacp_Interface) GetOrCreateMember(Interface string) *Lacp_Interface_Member {

	key := Interface

	if v, ok := t.Member[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewMember(Interface)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateMember got unexpected error: %v", err))
	}
	return v
}

// GetMember retrieves the value with the specified key from
// the Member map field of Lacp_Interface. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Lacp_Interface) GetMember(Interface string) *Lacp_Interface_Member {

	if t == nil {
		return nil
	}

	key := Interface

	if lm, ok := t.Member[key]; ok {
		return lm
	}
	return nil
}

// AppendMember appends the supplied Lacp_Interface_Member struct to the
// list Member of Lacp_Interface. If the key value(s) specified in
// the supplied Lacp_Interface_Member already exist in the list, an error is
// returned.
func (t *Lacp_Interface) AppendMember(v *Lacp_Interface_Member) error {
	if v.Interface == nil {
		return fmt.Errorf("invalid nil key received for Interface")
	}

	key := *v.Interface

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Member == nil {
		t.Member = make(map[string]*Lacp_Interface_Member)
	}

	if _, ok := t.Member[key]; ok {
		return fmt.Errorf("duplicate key for list Member %v", key)
	}

	t.Member[key] = v
	return nil
}

// GetInterval retrieves the value of the leaf Interval from the Lacp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *Lacp_Interface) GetInterval() E_Lacp_LacpPeriodType {
	if t == nil || t.Interval == 0 {
		return Lacp_LacpPeriodType_SLOW
	}
	return t.Interval
}

// GetLacpMode retrieves the value of the leaf LacpMode from the Lacp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LacpMode is set, it can
// safely use t.GetLacpMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LacpMode == nil' before retrieving the leaf's value.
func (t *Lacp_Interface) GetLacpMode() E_Lacp_LacpActivityType {
	if t == nil || t.LacpMode == 0 {
		return Lacp_LacpActivityType_ACTIVE
	}
	return t.LacpMode
}

// GetName retrieves the value of the leaf Name from the Lacp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Lacp_Interface) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetSystemIdMac retrieves the value of the leaf SystemIdMac from the Lacp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemIdMac is set, it can
// safely use t.GetSystemIdMac() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemIdMac == nil' before retrieving the leaf's value.
func (t *Lacp_Interface) GetSystemIdMac() string {
	if t == nil || t.SystemIdMac == nil {
		return ""
	}
	return *t.SystemIdMac
}

// GetSystemPriority retrieves the value of the leaf SystemPriority from the Lacp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemPriority is set, it can
// safely use t.GetSystemPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemPriority == nil' before retrieving the leaf's value.
func (t *Lacp_Interface) GetSystemPriority() uint16 {
	if t == nil || t.SystemPriority == nil {
		return 0
	}
	return *t.SystemPriority
}

// PopulateDefaults recursively populates unset leaf fields in the Lacp_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Lacp_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Interval == 0 {
		t.Interval = Lacp_LacpPeriodType_SLOW
	}
	if t.LacpMode == 0 {
		t.LacpMode = Lacp_LacpActivityType_ACTIVE
	}
	for _, e := range t.Member {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the Lacp_Interface struct, which is a YANG list entry.
func (t *Lacp_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lacp_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Lacp_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lacp_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Lacp_Interface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Lacp_Interface.
func (*Lacp_Interface) ΛBelongingModule() string {
	return "openconfig-lacp"
}

// Lacp_Interface_Member represents the /openconfig-lacp/lacp/interfaces/interface/members/member YANG schema element.
type Lacp_Interface_Member struct {
	ΛMetadata            []ygot.Annotation               `path:"@" ygotAnnotation:"true"`
	Activity             E_Lacp_LacpActivityType         `path:"state/activity" module:"openconfig-lacp/openconfig-lacp"`
	ΛActivity            []ygot.Annotation               `path:"state/@activity" ygotAnnotation:"true"`
	Aggregatable         *bool                           `path:"state/aggregatable" module:"openconfig-lacp/openconfig-lacp"`
	ΛAggregatable        []ygot.Annotation               `path:"state/@aggregatable" ygotAnnotation:"true"`
	Collecting           *bool                           `path:"state/collecting" module:"openconfig-lacp/openconfig-lacp"`
	ΛCollecting          []ygot.Annotation               `path:"state/@collecting" ygotAnnotation:"true"`
	Counters             *Lacp_Interface_Member_Counters `path:"state/counters" module:"openconfig-lacp/openconfig-lacp"`
	ΛCounters            []ygot.Annotation               `path:"state/@counters" ygotAnnotation:"true"`
	Distributing         *bool                           `path:"state/distributing" module:"openconfig-lacp/openconfig-lacp"`
	ΛDistributing        []ygot.Annotation               `path:"state/@distributing" ygotAnnotation:"true"`
	Interface            *string                         `path:"config/interface|interface" module:"openconfig-lacp/openconfig-lacp|openconfig-lacp"`
	ΛInterface           []ygot.Annotation               `path:"config/@interface|@interface" ygotAnnotation:"true"`
	LastChange           *uint64                         `path:"state/last-change" module:"openconfig-lacp/openconfig-lacp"`
	ΛLastChange          []ygot.Annotation               `path:"state/@last-change" ygotAnnotation:"true"`
	OperKey              *uint16                         `path:"state/oper-key" module:"openconfig-lacp/openconfig-lacp"`
	ΛOperKey             []ygot.Annotation               `path:"state/@oper-key" ygotAnnotation:"true"`
	PartnerId            *string                         `path:"state/partner-id" module:"openconfig-lacp/openconfig-lacp"`
	ΛPartnerId           []ygot.Annotation               `path:"state/@partner-id" ygotAnnotation:"true"`
	PartnerKey           *uint16                         `path:"state/partner-key" module:"openconfig-lacp/openconfig-lacp"`
	ΛPartnerKey          []ygot.Annotation               `path:"state/@partner-key" ygotAnnotation:"true"`
	PartnerPortNum       *uint16                         `path:"state/partner-port-num" module:"openconfig-lacp/openconfig-lacp"`
	ΛPartnerPortNum      []ygot.Annotation               `path:"state/@partner-port-num" ygotAnnotation:"true"`
	PartnerPortPriority  *uint16                         `path:"state/partner-port-priority" module:"openconfig-lacp/openconfig-lacp"`
	ΛPartnerPortPriority []ygot.Annotation               `path:"state/@partner-port-priority" ygotAnnotation:"true"`
	PortNum              *uint16                         `path:"state/port-num" module:"openconfig-lacp/openconfig-lacp"`
	ΛPortNum             []ygot.Annotation               `path:"state/@port-num" ygotAnnotation:"true"`
	PortPriority         *uint16                         `path:"config/port-priority" module:"openconfig-lacp/openconfig-lacp"`
	ΛPortPriority        []ygot.Annotation               `path:"config/@port-priority" ygotAnnotation:"true"`
	Synchronization      E_Lacp_LacpSynchronizationType  `path:"state/synchronization" module:"openconfig-lacp/openconfig-lacp"`
	ΛSynchronization     []ygot.Annotation               `path:"state/@synchronization" ygotAnnotation:"true"`
	SystemId             *string                         `path:"state/system-id" module:"openconfig-lacp/openconfig-lacp"`
	ΛSystemId            []ygot.Annotation               `path:"state/@system-id" ygotAnnotation:"true"`
	Timeout              E_Lacp_LacpTimeoutType          `path:"state/timeout" module:"openconfig-lacp/openconfig-lacp"`
	ΛTimeout             []ygot.Annotation               `path:"state/@timeout" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Lacp_Interface_Member implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Lacp_Interface_Member) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *Lacp_Interface_Member) GetOrCreateCounters() *Lacp_Interface_Member_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &Lacp_Interface_Member_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from Lacp_Interface_Member. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Lacp_Interface_Member) GetCounters() *Lacp_Interface_Member_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetActivity retrieves the value of the leaf Activity from the Lacp_Interface_Member
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Activity is set, it can
// safely use t.GetActivity() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Activity == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member) GetActivity() E_Lacp_LacpActivityType {
	if t == nil || t.Activity == 0 {
		return 0
	}
	return t.Activity
}

// GetAggregatable retrieves the value of the leaf Aggregatable from the Lacp_Interface_Member
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Aggregatable is set, it can
// safely use t.GetAggregatable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Aggregatable == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member) GetAggregatable() bool {
	if t == nil || t.Aggregatable == nil {
		return false
	}
	return *t.Aggregatable
}

// GetCollecting retrieves the value of the leaf Collecting from the Lacp_Interface_Member
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Collecting is set, it can
// safely use t.GetCollecting() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Collecting == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member) GetCollecting() bool {
	if t == nil || t.Collecting == nil {
		return false
	}
	return *t.Collecting
}

// GetDistributing retrieves the value of the leaf Distributing from the Lacp_Interface_Member
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Distributing is set, it can
// safely use t.GetDistributing() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Distributing == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member) GetDistributing() bool {
	if t == nil || t.Distributing == nil {
		return false
	}
	return *t.Distributing
}

// GetInterface retrieves the value of the leaf Interface from the Lacp_Interface_Member
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetLastChange retrieves the value of the leaf LastChange from the Lacp_Interface_Member
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastChange is set, it can
// safely use t.GetLastChange() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastChange == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member) GetLastChange() uint64 {
	if t == nil || t.LastChange == nil {
		return 0
	}
	return *t.LastChange
}

// GetOperKey retrieves the value of the leaf OperKey from the Lacp_Interface_Member
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OperKey is set, it can
// safely use t.GetOperKey() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OperKey == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member) GetOperKey() uint16 {
	if t == nil || t.OperKey == nil {
		return 0
	}
	return *t.OperKey
}

// GetPartnerId retrieves the value of the leaf PartnerId from the Lacp_Interface_Member
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PartnerId is set, it can
// safely use t.GetPartnerId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PartnerId == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member) GetPartnerId() string {
	if t == nil || t.PartnerId == nil {
		return ""
	}
	return *t.PartnerId
}

// GetPartnerKey retrieves the value of the leaf PartnerKey from the Lacp_Interface_Member
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PartnerKey is set, it can
// safely use t.GetPartnerKey() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PartnerKey == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member) GetPartnerKey() uint16 {
	if t == nil || t.PartnerKey == nil {
		return 0
	}
	return *t.PartnerKey
}

// GetPartnerPortNum retrieves the value of the leaf PartnerPortNum from the Lacp_Interface_Member
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PartnerPortNum is set, it can
// safely use t.GetPartnerPortNum() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PartnerPortNum == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member) GetPartnerPortNum() uint16 {
	if t == nil || t.PartnerPortNum == nil {
		return 0
	}
	return *t.PartnerPortNum
}

// GetPartnerPortPriority retrieves the value of the leaf PartnerPortPriority from the Lacp_Interface_Member
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PartnerPortPriority is set, it can
// safely use t.GetPartnerPortPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PartnerPortPriority == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member) GetPartnerPortPriority() uint16 {
	if t == nil || t.PartnerPortPriority == nil {
		return 0
	}
	return *t.PartnerPortPriority
}

// GetPortNum retrieves the value of the leaf PortNum from the Lacp_Interface_Member
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortNum is set, it can
// safely use t.GetPortNum() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortNum == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member) GetPortNum() uint16 {
	if t == nil || t.PortNum == nil {
		return 0
	}
	return *t.PortNum
}

// GetPortPriority retrieves the value of the leaf PortPriority from the Lacp_Interface_Member
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortPriority is set, it can
// safely use t.GetPortPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortPriority == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member) GetPortPriority() uint16 {
	if t == nil || t.PortPriority == nil {
		return 0
	}
	return *t.PortPriority
}

// GetSynchronization retrieves the value of the leaf Synchronization from the Lacp_Interface_Member
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Synchronization is set, it can
// safely use t.GetSynchronization() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Synchronization == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member) GetSynchronization() E_Lacp_LacpSynchronizationType {
	if t == nil || t.Synchronization == 0 {
		return 0
	}
	return t.Synchronization
}

// GetSystemId retrieves the value of the leaf SystemId from the Lacp_Interface_Member
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemId is set, it can
// safely use t.GetSystemId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemId == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member) GetSystemId() string {
	if t == nil || t.SystemId == nil {
		return ""
	}
	return *t.SystemId
}

// GetTimeout retrieves the value of the leaf Timeout from the Lacp_Interface_Member
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Timeout is set, it can
// safely use t.GetTimeout() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Timeout == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member) GetTimeout() E_Lacp_LacpTimeoutType {
	if t == nil || t.Timeout == 0 {
		return 0
	}
	return t.Timeout
}

// PopulateDefaults recursively populates unset leaf fields in the Lacp_Interface_Member
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Lacp_Interface_Member) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Counters.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the Lacp_Interface_Member struct, which is a YANG list entry.
func (t *Lacp_Interface_Member) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Interface == nil {
		return nil, fmt.Errorf("nil value for key Interface")
	}

	return map[string]interface{}{
		"interface": *t.Interface,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lacp_Interface_Member) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Lacp_Interface_Member"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lacp_Interface_Member) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Lacp_Interface_Member) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Lacp_Interface_Member.
func (*Lacp_Interface_Member) ΛBelongingModule() string {
	return "openconfig-lacp"
}

// Lacp_Interface_Member_Counters represents the /openconfig-lacp/lacp/interfaces/interface/members/member/state/counters YANG schema element.
type Lacp_Interface_Member_Counters struct {
	ΛMetadata               []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	LacpErrors              *uint64           `path:"lacp-errors" module:"openconfig-lacp"`
	ΛLacpErrors             []ygot.Annotation `path:"@lacp-errors" ygotAnnotation:"true"`
	LacpInPkts              *uint64           `path:"lacp-in-pkts" module:"openconfig-lacp"`
	ΛLacpInPkts             []ygot.Annotation `path:"@lacp-in-pkts" ygotAnnotation:"true"`
	LacpOutPkts             *uint64           `path:"lacp-out-pkts" module:"openconfig-lacp"`
	ΛLacpOutPkts            []ygot.Annotation `path:"@lacp-out-pkts" ygotAnnotation:"true"`
	LacpRxErrors            *uint64           `path:"lacp-rx-errors" module:"openconfig-lacp"`
	ΛLacpRxErrors           []ygot.Annotation `path:"@lacp-rx-errors" ygotAnnotation:"true"`
	LacpTimeoutTransitions  *uint64           `path:"lacp-timeout-transitions" module:"openconfig-lacp"`
	ΛLacpTimeoutTransitions []ygot.Annotation `path:"@lacp-timeout-transitions" ygotAnnotation:"true"`
	LacpTxErrors            *uint64           `path:"lacp-tx-errors" module:"openconfig-lacp"`
	ΛLacpTxErrors           []ygot.Annotation `path:"@lacp-tx-errors" ygotAnnotation:"true"`
	LacpUnknownErrors       *uint64           `path:"lacp-unknown-errors" module:"openconfig-lacp"`
	ΛLacpUnknownErrors      []ygot.Annotation `path:"@lacp-unknown-errors" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Lacp_Interface_Member_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Lacp_Interface_Member_Counters) IsYANGGoStruct() {}

// GetLacpErrors retrieves the value of the leaf LacpErrors from the Lacp_Interface_Member_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LacpErrors is set, it can
// safely use t.GetLacpErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LacpErrors == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member_Counters) GetLacpErrors() uint64 {
	if t == nil || t.LacpErrors == nil {
		return 0
	}
	return *t.LacpErrors
}

// GetLacpInPkts retrieves the value of the leaf LacpInPkts from the Lacp_Interface_Member_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LacpInPkts is set, it can
// safely use t.GetLacpInPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LacpInPkts == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member_Counters) GetLacpInPkts() uint64 {
	if t == nil || t.LacpInPkts == nil {
		return 0
	}
	return *t.LacpInPkts
}

// GetLacpOutPkts retrieves the value of the leaf LacpOutPkts from the Lacp_Interface_Member_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LacpOutPkts is set, it can
// safely use t.GetLacpOutPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LacpOutPkts == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member_Counters) GetLacpOutPkts() uint64 {
	if t == nil || t.LacpOutPkts == nil {
		return 0
	}
	return *t.LacpOutPkts
}

// GetLacpRxErrors retrieves the value of the leaf LacpRxErrors from the Lacp_Interface_Member_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LacpRxErrors is set, it can
// safely use t.GetLacpRxErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LacpRxErrors == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member_Counters) GetLacpRxErrors() uint64 {
	if t == nil || t.LacpRxErrors == nil {
		return 0
	}
	return *t.LacpRxErrors
}

// GetLacpTimeoutTransitions retrieves the value of the leaf LacpTimeoutTransitions from the Lacp_Interface_Member_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LacpTimeoutTransitions is set, it can
// safely use t.GetLacpTimeoutTransitions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LacpTimeoutTransitions == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member_Counters) GetLacpTimeoutTransitions() uint64 {
	if t == nil || t.LacpTimeoutTransitions == nil {
		return 0
	}
	return *t.LacpTimeoutTransitions
}

// GetLacpTxErrors retrieves the value of the leaf LacpTxErrors from the Lacp_Interface_Member_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LacpTxErrors is set, it can
// safely use t.GetLacpTxErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LacpTxErrors == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member_Counters) GetLacpTxErrors() uint64 {
	if t == nil || t.LacpTxErrors == nil {
		return 0
	}
	return *t.LacpTxErrors
}

// GetLacpUnknownErrors retrieves the value of the leaf LacpUnknownErrors from the Lacp_Interface_Member_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LacpUnknownErrors is set, it can
// safely use t.GetLacpUnknownErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LacpUnknownErrors == nil' before retrieving the leaf's value.
func (t *Lacp_Interface_Member_Counters) GetLacpUnknownErrors() uint64 {
	if t == nil || t.LacpUnknownErrors == nil {
		return 0
	}
	return *t.LacpUnknownErrors
}

// PopulateDefaults recursively populates unset leaf fields in the Lacp_Interface_Member_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Lacp_Interface_Member_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lacp_Interface_Member_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Lacp_Interface_Member_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lacp_Interface_Member_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Lacp_Interface_Member_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Lacp_Interface_Member_Counters.
func (*Lacp_Interface_Member_Counters) ΛBelongingModule() string {
	return "openconfig-lacp"
}

// Lldp represents the /openconfig-lldp/lldp YANG schema element.
type Lldp struct {
	ΛMetadata                 []ygot.Annotation          `path:"@" ygotAnnotation:"true"`
	ChassisId                 *string                    `path:"config/chassis-id" module:"openconfig-lldp/openconfig-lldp"`
	ΛChassisId                []ygot.Annotation          `path:"config/@chassis-id" ygotAnnotation:"true"`
	ChassisIdType             E_LldpTypes_ChassisIdType  `path:"config/chassis-id-type" module:"openconfig-lldp/openconfig-lldp"`
	ΛChassisIdType            []ygot.Annotation          `path:"config/@chassis-id-type" ygotAnnotation:"true"`
	Counters                  *Lldp_Counters             `path:"state/counters" module:"openconfig-lldp/openconfig-lldp"`
	ΛCounters                 []ygot.Annotation          `path:"state/@counters" ygotAnnotation:"true"`
	Enabled                   *bool                      `path:"config/enabled" module:"openconfig-lldp/openconfig-lldp"`
	ΛEnabled                  []ygot.Annotation          `path:"config/@enabled" ygotAnnotation:"true"`
	HelloTimer                *uint64                    `path:"config/hello-timer" module:"openconfig-lldp/openconfig-lldp"`
	ΛHelloTimer               []ygot.Annotation          `path:"config/@hello-timer" ygotAnnotation:"true"`
	Interface                 map[string]*Lldp_Interface `path:"interfaces/interface" module:"openconfig-lldp/openconfig-lldp"`
	ΛInterface                []ygot.Annotation          `path:"interfaces/@interface" ygotAnnotation:"true"`
	SuppressTlvAdvertisement  []E_LldpTypes_LLDP_TLV     `path:"config/suppress-tlv-advertisement" module:"openconfig-lldp/openconfig-lldp"`
	ΛSuppressTlvAdvertisement []ygot.Annotation          `path:"config/@suppress-tlv-advertisement" ygotAnnotation:"true"`
	SystemDescription         *string                    `path:"config/system-description" module:"openconfig-lldp/openconfig-lldp"`
	ΛSystemDescription        []ygot.Annotation          `path:"config/@system-description" ygotAnnotation:"true"`
	SystemName                *string                    `path:"config/system-name" module:"openconfig-lldp/openconfig-lldp"`
	ΛSystemName               []ygot.Annotation          `path:"config/@system-name" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Lldp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Lldp) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// Lldp struct. The keys of the list are populated from the input
// arguments.
func (t *Lldp) NewInterface(Name string) (*Lldp_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Lldp_Interface)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &Lldp_Interface{
		Name: &Name,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the Lldp struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Lldp) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.Name = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from Lldp.
//
// It initializes the field if not already initialized.
func (t *Lldp) GetOrCreateInterfaceMap() map[string]*Lldp_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*Lldp_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver Lldp. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Lldp) GetOrCreateInterface(Name string) *Lldp_Interface {

	key := Name

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of Lldp. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Lldp) GetInterface(Name string) *Lldp_Interface {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied Lldp_Interface struct to the
// list Interface of Lldp. If the key value(s) specified in
// the supplied Lldp_Interface already exist in the list, an error is
// returned.
func (t *Lldp) AppendInterface(v *Lldp_Interface) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Lldp_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *Lldp) GetOrCreateCounters() *Lldp_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &Lldp_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from Lldp. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Lldp) GetCounters() *Lldp_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetChassisId retrieves the value of the leaf ChassisId from the Lldp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ChassisId is set, it can
// safely use t.GetChassisId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ChassisId == nil' before retrieving the leaf's value.
func (t *Lldp) GetChassisId() string {
	if t == nil || t.ChassisId == nil {
		return ""
	}
	return *t.ChassisId
}

// GetChassisIdType retrieves the value of the leaf ChassisIdType from the Lldp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ChassisIdType is set, it can
// safely use t.GetChassisIdType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ChassisIdType == nil' before retrieving the leaf's value.
func (t *Lldp) GetChassisIdType() E_LldpTypes_ChassisIdType {
	if t == nil || t.ChassisIdType == 0 {
		return 0
	}
	return t.ChassisIdType
}

// GetEnabled retrieves the value of the leaf Enabled from the Lldp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Lldp) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return true
	}
	return *t.Enabled
}

// GetHelloTimer retrieves the value of the leaf HelloTimer from the Lldp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloTimer is set, it can
// safely use t.GetHelloTimer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloTimer == nil' before retrieving the leaf's value.
func (t *Lldp) GetHelloTimer() uint64 {
	if t == nil || t.HelloTimer == nil {
		return 0
	}
	return *t.HelloTimer
}

// GetSuppressTlvAdvertisement retrieves the value of the leaf SuppressTlvAdvertisement from the Lldp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SuppressTlvAdvertisement is set, it can
// safely use t.GetSuppressTlvAdvertisement() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SuppressTlvAdvertisement == nil' before retrieving the leaf's value.
func (t *Lldp) GetSuppressTlvAdvertisement() []E_LldpTypes_LLDP_TLV {
	if t == nil || t.SuppressTlvAdvertisement == nil {
		return nil
	}
	return t.SuppressTlvAdvertisement
}

// GetSystemDescription retrieves the value of the leaf SystemDescription from the Lldp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemDescription is set, it can
// safely use t.GetSystemDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemDescription == nil' before retrieving the leaf's value.
func (t *Lldp) GetSystemDescription() string {
	if t == nil || t.SystemDescription == nil {
		return ""
	}
	return *t.SystemDescription
}

// GetSystemName retrieves the value of the leaf SystemName from the Lldp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemName is set, it can
// safely use t.GetSystemName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemName == nil' before retrieving the leaf's value.
func (t *Lldp) GetSystemName() string {
	if t == nil || t.SystemName == nil {
		return ""
	}
	return *t.SystemName
}

// PopulateDefaults recursively populates unset leaf fields in the Lldp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Lldp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = true
		t.Enabled = &v
	}
	t.Counters.PopulateDefaults()
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lldp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Lldp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lldp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Lldp) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Lldp.
func (*Lldp) ΛBelongingModule() string {
	return "openconfig-lldp"
}

// Lldp_Counters represents the /openconfig-lldp/lldp/state/counters YANG schema element.
type Lldp_Counters struct {
	ΛMetadata       []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	EntriesAgedOut  *uint64           `path:"entries-aged-out" module:"openconfig-lldp"`
	ΛEntriesAgedOut []ygot.Annotation `path:"@entries-aged-out" ygotAnnotation:"true"`
	FrameDiscard    *uint64           `path:"frame-discard" module:"openconfig-lldp"`
	ΛFrameDiscard   []ygot.Annotation `path:"@frame-discard" ygotAnnotation:"true"`
	FrameErrorIn    *uint64           `path:"frame-error-in" module:"openconfig-lldp"`
	ΛFrameErrorIn   []ygot.Annotation `path:"@frame-error-in" ygotAnnotation:"true"`
	FrameIn         *uint64           `path:"frame-in" module:"openconfig-lldp"`
	ΛFrameIn        []ygot.Annotation `path:"@frame-in" ygotAnnotation:"true"`
	FrameOut        *uint64           `path:"frame-out" module:"openconfig-lldp"`
	ΛFrameOut       []ygot.Annotation `path:"@frame-out" ygotAnnotation:"true"`
	LastClear       *string           `path:"last-clear" module:"openconfig-lldp"`
	ΛLastClear      []ygot.Annotation `path:"@last-clear" ygotAnnotation:"true"`
	TlvAccepted     *uint64           `path:"tlv-accepted" module:"openconfig-lldp"`
	ΛTlvAccepted    []ygot.Annotation `path:"@tlv-accepted" ygotAnnotation:"true"`
	TlvDiscard      *uint64           `path:"tlv-discard" module:"openconfig-lldp"`
	ΛTlvDiscard     []ygot.Annotation `path:"@tlv-discard" ygotAnnotation:"true"`
	TlvUnknown      *uint64           `path:"tlv-unknown" module:"openconfig-lldp"`
	ΛTlvUnknown     []ygot.Annotation `path:"@tlv-unknown" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Lldp_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Lldp_Counters) IsYANGGoStruct() {}

// GetEntriesAgedOut retrieves the value of the leaf EntriesAgedOut from the Lldp_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EntriesAgedOut is set, it can
// safely use t.GetEntriesAgedOut() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EntriesAgedOut == nil' before retrieving the leaf's value.
func (t *Lldp_Counters) GetEntriesAgedOut() uint64 {
	if t == nil || t.EntriesAgedOut == nil {
		return 0
	}
	return *t.EntriesAgedOut
}

// GetFrameDiscard retrieves the value of the leaf FrameDiscard from the Lldp_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FrameDiscard is set, it can
// safely use t.GetFrameDiscard() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FrameDiscard == nil' before retrieving the leaf's value.
func (t *Lldp_Counters) GetFrameDiscard() uint64 {
	if t == nil || t.FrameDiscard == nil {
		return 0
	}
	return *t.FrameDiscard
}

// GetFrameErrorIn retrieves the value of the leaf FrameErrorIn from the Lldp_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FrameErrorIn is set, it can
// safely use t.GetFrameErrorIn() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FrameErrorIn == nil' before retrieving the leaf's value.
func (t *Lldp_Counters) GetFrameErrorIn() uint64 {
	if t == nil || t.FrameErrorIn == nil {
		return 0
	}
	return *t.FrameErrorIn
}

// GetFrameIn retrieves the value of the leaf FrameIn from the Lldp_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FrameIn is set, it can
// safely use t.GetFrameIn() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FrameIn == nil' before retrieving the leaf's value.
func (t *Lldp_Counters) GetFrameIn() uint64 {
	if t == nil || t.FrameIn == nil {
		return 0
	}
	return *t.FrameIn
}

// GetFrameOut retrieves the value of the leaf FrameOut from the Lldp_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FrameOut is set, it can
// safely use t.GetFrameOut() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FrameOut == nil' before retrieving the leaf's value.
func (t *Lldp_Counters) GetFrameOut() uint64 {
	if t == nil || t.FrameOut == nil {
		return 0
	}
	return *t.FrameOut
}

// GetLastClear retrieves the value of the leaf LastClear from the Lldp_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastClear is set, it can
// safely use t.GetLastClear() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastClear == nil' before retrieving the leaf's value.
func (t *Lldp_Counters) GetLastClear() string {
	if t == nil || t.LastClear == nil {
		return ""
	}
	return *t.LastClear
}

// GetTlvAccepted retrieves the value of the leaf TlvAccepted from the Lldp_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TlvAccepted is set, it can
// safely use t.GetTlvAccepted() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TlvAccepted == nil' before retrieving the leaf's value.
func (t *Lldp_Counters) GetTlvAccepted() uint64 {
	if t == nil || t.TlvAccepted == nil {
		return 0
	}
	return *t.TlvAccepted
}

// GetTlvDiscard retrieves the value of the leaf TlvDiscard from the Lldp_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TlvDiscard is set, it can
// safely use t.GetTlvDiscard() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TlvDiscard == nil' before retrieving the leaf's value.
func (t *Lldp_Counters) GetTlvDiscard() uint64 {
	if t == nil || t.TlvDiscard == nil {
		return 0
	}
	return *t.TlvDiscard
}

// GetTlvUnknown retrieves the value of the leaf TlvUnknown from the Lldp_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TlvUnknown is set, it can
// safely use t.GetTlvUnknown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TlvUnknown == nil' before retrieving the leaf's value.
func (t *Lldp_Counters) GetTlvUnknown() uint64 {
	if t == nil || t.TlvUnknown == nil {
		return 0
	}
	return *t.TlvUnknown
}

// PopulateDefaults recursively populates unset leaf fields in the Lldp_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Lldp_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lldp_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Lldp_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lldp_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Lldp_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Lldp_Counters.
func (*Lldp_Counters) ΛBelongingModule() string {
	return "openconfig-lldp"
}

// Lldp_Interface represents the /openconfig-lldp/lldp/interfaces/interface YANG schema element.
type Lldp_Interface struct {
	ΛMetadata []ygot.Annotation                   `path:"@" ygotAnnotation:"true"`
	Counters  *Lldp_Interface_Counters            `path:"state/counters" module:"openconfig-lldp/openconfig-lldp"`
	ΛCounters []ygot.Annotation                   `path:"state/@counters" ygotAnnotation:"true"`
	Enabled   *bool                               `path:"config/enabled" module:"openconfig-lldp/openconfig-lldp"`
	ΛEnabled  []ygot.Annotation                   `path:"config/@enabled" ygotAnnotation:"true"`
	Name      *string                             `path:"config/name|name" module:"openconfig-lldp/openconfig-lldp|openconfig-lldp"`
	ΛName     []ygot.Annotation                   `path:"config/@name|@name" ygotAnnotation:"true"`
	Neighbor  map[string]*Lldp_Interface_Neighbor `path:"neighbors/neighbor" module:"openconfig-lldp/openconfig-lldp"`
	ΛNeighbor []ygot.Annotation                   `path:"neighbors/@neighbor" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Lldp_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Lldp_Interface) IsYANGGoStruct() {}

// NewNeighbor creates a new entry in the Neighbor list of the
// Lldp_Interface struct. The keys of the list are populated from the input
// arguments.
func (t *Lldp_Interface) NewNeighbor(Id string) (*Lldp_Interface_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*Lldp_Interface_Neighbor)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &Lldp_Interface_Neighbor{
		Id: &Id,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the Lldp_Interface struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Lldp_Interface) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.Id = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from Lldp_Interface.
//
// It initializes the field if not already initialized.
func (t *Lldp_Interface) GetOrCreateNeighborMap() map[string]*Lldp_Interface_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*Lldp_Interface_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver Lldp_Interface. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Lldp_Interface) GetOrCreateNeighbor(Id string) *Lldp_Interface_Neighbor {

	key := Id

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of Lldp_Interface. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Lldp_Interface) GetNeighbor(Id string) *Lldp_Interface_Neighbor {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied Lldp_Interface_Neighbor struct to the
// list Neighbor of Lldp_Interface. If the key value(s) specified in
// the supplied Lldp_Interface_Neighbor already exist in the list, an error is
// returned.
func (t *Lldp_Interface) AppendNeighbor(v *Lldp_Interface_Neighbor) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*Lldp_Interface_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *Lldp_Interface) GetOrCreateCounters() *Lldp_Interface_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &Lldp_Interface_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from Lldp_Interface. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Lldp_Interface) GetCounters() *Lldp_Interface_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetEnabled retrieves the value of the leaf Enabled from the Lldp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Lldp_Interface) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return true
	}
	return *t.Enabled
}

// GetName retrieves the value of the leaf Name from the Lldp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Lldp_Interface) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// PopulateDefaults recursively populates unset leaf fields in the Lldp_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Lldp_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = true
		t.Enabled = &v
	}
	t.Counters.PopulateDefaults()
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the Lldp_Interface struct, which is a YANG list entry.
func (t *Lldp_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lldp_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Lldp_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lldp_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Lldp_Interface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Lldp_Interface.
func (*Lldp_Interface) ΛBelongingModule() string {
	return "openconfig-lldp"
}

// Lldp_Interface_Counters represents the /openconfig-lldp/lldp/interfaces/interface/state/counters YANG schema element.
type Lldp_Interface_Counters struct {
	ΛMetadata      []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	FrameDiscard   *uint64           `path:"frame-discard" module:"openconfig-lldp"`
	ΛFrameDiscard  []ygot.Annotation `path:"@frame-discard" ygotAnnotation:"true"`
	FrameErrorIn   *uint64           `path:"frame-error-in" module:"openconfig-lldp"`
	ΛFrameErrorIn  []ygot.Annotation `path:"@frame-error-in" ygotAnnotation:"true"`
	FrameErrorOut  *uint64           `path:"frame-error-out" module:"openconfig-lldp"`
	ΛFrameErrorOut []ygot.Annotation `path:"@frame-error-out" ygotAnnotation:"true"`
	FrameIn        *uint64           `path:"frame-in" module:"openconfig-lldp"`
	ΛFrameIn       []ygot.Annotation `path:"@frame-in" ygotAnnotation:"true"`
	FrameOut       *uint64           `path:"frame-out" module:"openconfig-lldp"`
	ΛFrameOut      []ygot.Annotation `path:"@frame-out" ygotAnnotation:"true"`
	LastClear      *string           `path:"last-clear" module:"openconfig-lldp"`
	ΛLastClear     []ygot.Annotation `path:"@last-clear" ygotAnnotation:"true"`
	TlvDiscard     *uint64           `path:"tlv-discard" module:"openconfig-lldp"`
	ΛTlvDiscard    []ygot.Annotation `path:"@tlv-discard" ygotAnnotation:"true"`
	TlvUnknown     *uint64           `path:"tlv-unknown" module:"openconfig-lldp"`
	ΛTlvUnknown    []ygot.Annotation `path:"@tlv-unknown" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Lldp_Interface_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Lldp_Interface_Counters) IsYANGGoStruct() {}

// GetFrameDiscard retrieves the value of the leaf FrameDiscard from the Lldp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FrameDiscard is set, it can
// safely use t.GetFrameDiscard() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FrameDiscard == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Counters) GetFrameDiscard() uint64 {
	if t == nil || t.FrameDiscard == nil {
		return 0
	}
	return *t.FrameDiscard
}

// GetFrameErrorIn retrieves the value of the leaf FrameErrorIn from the Lldp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FrameErrorIn is set, it can
// safely use t.GetFrameErrorIn() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FrameErrorIn == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Counters) GetFrameErrorIn() uint64 {
	if t == nil || t.FrameErrorIn == nil {
		return 0
	}
	return *t.FrameErrorIn
}

// GetFrameErrorOut retrieves the value of the leaf FrameErrorOut from the Lldp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FrameErrorOut is set, it can
// safely use t.GetFrameErrorOut() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FrameErrorOut == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Counters) GetFrameErrorOut() uint64 {
	if t == nil || t.FrameErrorOut == nil {
		return 0
	}
	return *t.FrameErrorOut
}

// GetFrameIn retrieves the value of the leaf FrameIn from the Lldp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FrameIn is set, it can
// safely use t.GetFrameIn() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FrameIn == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Counters) GetFrameIn() uint64 {
	if t == nil || t.FrameIn == nil {
		return 0
	}
	return *t.FrameIn
}

// GetFrameOut retrieves the value of the leaf FrameOut from the Lldp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FrameOut is set, it can
// safely use t.GetFrameOut() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FrameOut == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Counters) GetFrameOut() uint64 {
	if t == nil || t.FrameOut == nil {
		return 0
	}
	return *t.FrameOut
}

// GetLastClear retrieves the value of the leaf LastClear from the Lldp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastClear is set, it can
// safely use t.GetLastClear() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastClear == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Counters) GetLastClear() string {
	if t == nil || t.LastClear == nil {
		return ""
	}
	return *t.LastClear
}

// GetTlvDiscard retrieves the value of the leaf TlvDiscard from the Lldp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TlvDiscard is set, it can
// safely use t.GetTlvDiscard() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TlvDiscard == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Counters) GetTlvDiscard() uint64 {
	if t == nil || t.TlvDiscard == nil {
		return 0
	}
	return *t.TlvDiscard
}

// GetTlvUnknown retrieves the value of the leaf TlvUnknown from the Lldp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TlvUnknown is set, it can
// safely use t.GetTlvUnknown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TlvUnknown == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Counters) GetTlvUnknown() uint64 {
	if t == nil || t.TlvUnknown == nil {
		return 0
	}
	return *t.TlvUnknown
}

// PopulateDefaults recursively populates unset leaf fields in the Lldp_Interface_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Lldp_Interface_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lldp_Interface_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Lldp_Interface_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lldp_Interface_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Lldp_Interface_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Lldp_Interface_Counters.
func (*Lldp_Interface_Counters) ΛBelongingModule() string {
	return "openconfig-lldp"
}

// Lldp_Interface_Neighbor represents the /openconfig-lldp/lldp/interfaces/interface/neighbors/neighbor YANG schema element.
type Lldp_Interface_Neighbor struct {
	ΛMetadata              []ygot.Annotation                                                          `path:"@" ygotAnnotation:"true"`
	Age                    *uint64                                                                    `path:"state/age" module:"openconfig-lldp/openconfig-lldp"`
	ΛAge                   []ygot.Annotation                                                          `path:"state/@age" ygotAnnotation:"true"`
	Capability             map[E_LldpTypes_LLDP_SYSTEM_CAPABILITY]*Lldp_Interface_Neighbor_Capability `path:"capabilities/capability" module:"openconfig-lldp/openconfig-lldp"`
	ΛCapability            []ygot.Annotation                                                          `path:"capabilities/@capability" ygotAnnotation:"true"`
	ChassisId              *string                                                                    `path:"state/chassis-id" module:"openconfig-lldp/openconfig-lldp"`
	ΛChassisId             []ygot.Annotation                                                          `path:"state/@chassis-id" ygotAnnotation:"true"`
	ChassisIdType          E_LldpTypes_ChassisIdType                                                  `path:"state/chassis-id-type" module:"openconfig-lldp/openconfig-lldp"`
	ΛChassisIdType         []ygot.Annotation                                                          `path:"state/@chassis-id-type" ygotAnnotation:"true"`
	Id                     *string                                                                    `path:"state/id|id" module:"openconfig-lldp/openconfig-lldp|openconfig-lldp"`
	ΛId                    []ygot.Annotation                                                          `path:"state/@id|@id" ygotAnnotation:"true"`
	LastUpdate             *int64                                                                     `path:"state/last-update" module:"openconfig-lldp/openconfig-lldp"`
	ΛLastUpdate            []ygot.Annotation                                                          `path:"state/@last-update" ygotAnnotation:"true"`
	ManagementAddress      *string                                                                    `path:"state/management-address" module:"openconfig-lldp/openconfig-lldp"`
	ΛManagementAddress     []ygot.Annotation                                                          `path:"state/@management-address" ygotAnnotation:"true"`
	ManagementAddressType  *string                                                                    `path:"state/management-address-type" module:"openconfig-lldp/openconfig-lldp"`
	ΛManagementAddressType []ygot.Annotation                                                          `path:"state/@management-address-type" ygotAnnotation:"true"`
	PortDescription        *string                                                                    `path:"state/port-description" module:"openconfig-lldp/openconfig-lldp"`
	ΛPortDescription       []ygot.Annotation                                                          `path:"state/@port-description" ygotAnnotation:"true"`
	PortId                 *string                                                                    `path:"state/port-id" module:"openconfig-lldp/openconfig-lldp"`
	ΛPortId                []ygot.Annotation                                                          `path:"state/@port-id" ygotAnnotation:"true"`
	PortIdType             E_LldpTypes_PortIdType                                                     `path:"state/port-id-type" module:"openconfig-lldp/openconfig-lldp"`
	ΛPortIdType            []ygot.Annotation                                                          `path:"state/@port-id-type" ygotAnnotation:"true"`
	SystemDescription      *string                                                                    `path:"state/system-description" module:"openconfig-lldp/openconfig-lldp"`
	ΛSystemDescription     []ygot.Annotation                                                          `path:"state/@system-description" ygotAnnotation:"true"`
	SystemName             *string                                                                    `path:"state/system-name" module:"openconfig-lldp/openconfig-lldp"`
	ΛSystemName            []ygot.Annotation                                                          `path:"state/@system-name" ygotAnnotation:"true"`
	Tlv                    map[Lldp_Interface_Neighbor_Tlv_Key]*Lldp_Interface_Neighbor_Tlv           `path:"custom-tlvs/tlv" module:"openconfig-lldp/openconfig-lldp"`
	ΛTlv                   []ygot.Annotation                                                          `path:"custom-tlvs/@tlv" ygotAnnotation:"true"`
	Ttl                    *uint16                                                                    `path:"state/ttl" module:"openconfig-lldp/openconfig-lldp"`
	ΛTtl                   []ygot.Annotation                                                          `path:"state/@ttl" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Lldp_Interface_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Lldp_Interface_Neighbor) IsYANGGoStruct() {}

// Lldp_Interface_Neighbor_Tlv_Key represents the key for list Tlv of element /openconfig-lldp/lldp/interfaces/interface/neighbors/neighbor.
type Lldp_Interface_Neighbor_Tlv_Key struct {
	Type       int32  `path:"type"`
	Oui        string `path:"oui"`
	OuiSubtype string `path:"oui-subtype"`
}

// IsYANGGoKeyStruct ensures that Lldp_Interface_Neighbor_Tlv_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (Lldp_Interface_Neighbor_Tlv_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the Lldp_Interface_Neighbor_Tlv_Key key struct.
func (t Lldp_Interface_Neighbor_Tlv_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"type":        t.Type,
		"oui":         t.Oui,
		"oui-subtype": t.OuiSubtype,
	}, nil
}

// NewCapability creates a new entry in the Capability list of the
// Lldp_Interface_Neighbor struct. The keys of the list are populated from the input
// arguments.
func (t *Lldp_Interface_Neighbor) NewCapability(Name E_LldpTypes_LLDP_SYSTEM_CAPABILITY) (*Lldp_Interface_Neighbor_Capability, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Capability == nil {
		t.Capability = make(map[E_LldpTypes_LLDP_SYSTEM_CAPABILITY]*Lldp_Interface_Neighbor_Capability)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Capability[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Capability", key)
	}

	t.Capability[key] = &Lldp_Interface_Neighbor_Capability{
		Name: Name,
	}

	return t.Capability[key], nil
}

// RenameCapability renames an entry in the list Capability within
// the Lldp_Interface_Neighbor struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Lldp_Interface_Neighbor) RenameCapability(oldK, newK E_LldpTypes_LLDP_SYSTEM_CAPABILITY) error {
	if _, ok := t.Capability[newK]; ok {
		return fmt.Errorf("key %v already exists in Capability", newK)
	}

	e, ok := t.Capability[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Capability", oldK)
	}
	e.Name = newK

	t.Capability[newK] = e
	delete(t.Capability, oldK)
	return nil
}

// GetOrCreateCapabilityMap returns the list (map) from Lldp_Interface_Neighbor.
//
// It initializes the field if not already initialized.
func (t *Lldp_Interface_Neighbor) GetOrCreateCapabilityMap() map[E_LldpTypes_LLDP_SYSTEM_CAPABILITY]*Lldp_Interface_Neighbor_Capability {
	if t.Capability == nil {
		t.Capability = make(map[E_LldpTypes_LLDP_SYSTEM_CAPABILITY]*Lldp_Interface_Neighbor_Capability)
	}
	return t.Capability
}

// GetOrCreateCapability retrieves the value with the specified keys from
// the receiver Lldp_Interface_Neighbor. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Lldp_Interface_Neighbor) GetOrCreateCapability(Name E_LldpTypes_LLDP_SYSTEM_CAPABILITY) *Lldp_Interface_Neighbor_Capability {

	key := Name

	if v, ok := t.Capability[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewCapability(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateCapability got unexpected error: %v", err))
	}
	return v
}

// GetCapability retrieves the value with the specified key from
// the Capability map field of Lldp_Interface_Neighbor. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Lldp_Interface_Neighbor) GetCapability(Name E_LldpTypes_LLDP_SYSTEM_CAPABILITY) *Lldp_Interface_Neighbor_Capability {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Capability[key]; ok {
		return lm
	}
	return nil
}

// AppendCapability appends the supplied Lldp_Interface_Neighbor_Capability struct to the
// list Capability of Lldp_Interface_Neighbor. If the key value(s) specified in
// the supplied Lldp_Interface_Neighbor_Capability already exist in the list, an error is
// returned.
func (t *Lldp_Interface_Neighbor) AppendCapability(v *Lldp_Interface_Neighbor_Capability) error {
	key := v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Capability == nil {
		t.Capability = make(map[E_LldpTypes_LLDP_SYSTEM_CAPABILITY]*Lldp_Interface_Neighbor_Capability)
	}

	if _, ok := t.Capability[key]; ok {
		return fmt.Errorf("duplicate key for list Capability %v", key)
	}

	t.Capability[key] = v
	return nil
}

// NewTlv creates a new entry in the Tlv list of the
// Lldp_Interface_Neighbor struct. The keys of the list are populated from the input
// arguments.
func (t *Lldp_Interface_Neighbor) NewTlv(Type int32, Oui string, OuiSubtype string) (*Lldp_Interface_Neighbor_Tlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Tlv == nil {
		t.Tlv = make(map[Lldp_Interface_Neighbor_Tlv_Key]*Lldp_Interface_Neighbor_Tlv)
	}

	key := Lldp_Interface_Neighbor_Tlv_Key{
		Type:       Type,
		Oui:        Oui,
		OuiSubtype: OuiSubtype,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Tlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Tlv", key)
	}

	t.Tlv[key] = &Lldp_Interface_Neighbor_Tlv{
		Type:       &Type,
		Oui:        &Oui,
		OuiSubtype: &OuiSubtype,
	}

	return t.Tlv[key], nil
}

// RenameTlv renames an entry in the list Tlv within
// the Lldp_Interface_Neighbor struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Lldp_Interface_Neighbor) RenameTlv(oldK, newK Lldp_Interface_Neighbor_Tlv_Key) error {
	if _, ok := t.Tlv[newK]; ok {
		return fmt.Errorf("key %v already exists in Tlv", newK)
	}

	e, ok := t.Tlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Tlv", oldK)
	}
	e.Type = &newK.Type
	e.Oui = &newK.Oui
	e.OuiSubtype = &newK.OuiSubtype

	t.Tlv[newK] = e
	delete(t.Tlv, oldK)
	return nil
}

// GetOrCreateTlvMap returns the list (map) from Lldp_Interface_Neighbor.
//
// It initializes the field if not already initialized.
func (t *Lldp_Interface_Neighbor) GetOrCreateTlvMap() map[Lldp_Interface_Neighbor_Tlv_Key]*Lldp_Interface_Neighbor_Tlv {
	if t.Tlv == nil {
		t.Tlv = make(map[Lldp_Interface_Neighbor_Tlv_Key]*Lldp_Interface_Neighbor_Tlv)
	}
	return t.Tlv
}

// GetOrCreateTlv retrieves the value with the specified keys from
// the receiver Lldp_Interface_Neighbor. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Lldp_Interface_Neighbor) GetOrCreateTlv(Type int32, Oui string, OuiSubtype string) *Lldp_Interface_Neighbor_Tlv {

	key := Lldp_Interface_Neighbor_Tlv_Key{
		Type:       Type,
		Oui:        Oui,
		OuiSubtype: OuiSubtype,
	}

	if v, ok := t.Tlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTlv(Type, Oui, OuiSubtype)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTlv got unexpected error: %v", err))
	}
	return v
}

// GetTlv retrieves the value with the specified key from
// the Tlv map field of Lldp_Interface_Neighbor. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Lldp_Interface_Neighbor) GetTlv(Type int32, Oui string, OuiSubtype string) *Lldp_Interface_Neighbor_Tlv {

	if t == nil {
		return nil
	}

	key := Lldp_Interface_Neighbor_Tlv_Key{
		Type:       Type,
		Oui:        Oui,
		OuiSubtype: OuiSubtype,
	}

	if lm, ok := t.Tlv[key]; ok {
		return lm
	}
	return nil
}

// AppendTlv appends the supplied Lldp_Interface_Neighbor_Tlv struct to the
// list Tlv of Lldp_Interface_Neighbor. If the key value(s) specified in
// the supplied Lldp_Interface_Neighbor_Tlv already exist in the list, an error is
// returned.
func (t *Lldp_Interface_Neighbor) AppendTlv(v *Lldp_Interface_Neighbor_Tlv) error {
	if v.Type == nil {
		return fmt.Errorf("invalid nil key for Type")
	}

	if v.Oui == nil {
		return fmt.Errorf("invalid nil key for Oui")
	}

	if v.OuiSubtype == nil {
		return fmt.Errorf("invalid nil key for OuiSubtype")
	}

	key := Lldp_Interface_Neighbor_Tlv_Key{
		Type:       *v.Type,
		Oui:        *v.Oui,
		OuiSubtype: *v.OuiSubtype,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Tlv == nil {
		t.Tlv = make(map[Lldp_Interface_Neighbor_Tlv_Key]*Lldp_Interface_Neighbor_Tlv)
	}

	if _, ok := t.Tlv[key]; ok {
		return fmt.Errorf("duplicate key for list Tlv %v", key)
	}

	t.Tlv[key] = v
	return nil
}

// GetAge retrieves the value of the leaf Age from the Lldp_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Age is set, it can
// safely use t.GetAge() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Age == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor) GetAge() uint64 {
	if t == nil || t.Age == nil {
		return 0
	}
	return *t.Age
}

// GetChassisId retrieves the value of the leaf ChassisId from the Lldp_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ChassisId is set, it can
// safely use t.GetChassisId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ChassisId == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor) GetChassisId() string {
	if t == nil || t.ChassisId == nil {
		return ""
	}
	return *t.ChassisId
}

// GetChassisIdType retrieves the value of the leaf ChassisIdType from the Lldp_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ChassisIdType is set, it can
// safely use t.GetChassisIdType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ChassisIdType == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor) GetChassisIdType() E_LldpTypes_ChassisIdType {
	if t == nil || t.ChassisIdType == 0 {
		return 0
	}
	return t.ChassisIdType
}

// GetId retrieves the value of the leaf Id from the Lldp_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor) GetId() string {
	if t == nil || t.Id == nil {
		return ""
	}
	return *t.Id
}

// GetLastUpdate retrieves the value of the leaf LastUpdate from the Lldp_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastUpdate is set, it can
// safely use t.GetLastUpdate() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastUpdate == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor) GetLastUpdate() int64 {
	if t == nil || t.LastUpdate == nil {
		return 0
	}
	return *t.LastUpdate
}

// GetManagementAddress retrieves the value of the leaf ManagementAddress from the Lldp_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ManagementAddress is set, it can
// safely use t.GetManagementAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ManagementAddress == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor) GetManagementAddress() string {
	if t == nil || t.ManagementAddress == nil {
		return ""
	}
	return *t.ManagementAddress
}

// GetManagementAddressType retrieves the value of the leaf ManagementAddressType from the Lldp_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ManagementAddressType is set, it can
// safely use t.GetManagementAddressType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ManagementAddressType == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor) GetManagementAddressType() string {
	if t == nil || t.ManagementAddressType == nil {
		return ""
	}
	return *t.ManagementAddressType
}

// GetPortDescription retrieves the value of the leaf PortDescription from the Lldp_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortDescription is set, it can
// safely use t.GetPortDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortDescription == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor) GetPortDescription() string {
	if t == nil || t.PortDescription == nil {
		return ""
	}
	return *t.PortDescription
}

// GetPortId retrieves the value of the leaf PortId from the Lldp_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortId is set, it can
// safely use t.GetPortId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortId == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor) GetPortId() string {
	if t == nil || t.PortId == nil {
		return ""
	}
	return *t.PortId
}

// GetPortIdType retrieves the value of the leaf PortIdType from the Lldp_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortIdType is set, it can
// safely use t.GetPortIdType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortIdType == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor) GetPortIdType() E_LldpTypes_PortIdType {
	if t == nil || t.PortIdType == 0 {
		return 0
	}
	return t.PortIdType
}

// GetSystemDescription retrieves the value of the leaf SystemDescription from the Lldp_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemDescription is set, it can
// safely use t.GetSystemDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemDescription == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor) GetSystemDescription() string {
	if t == nil || t.SystemDescription == nil {
		return ""
	}
	return *t.SystemDescription
}

// GetSystemName retrieves the value of the leaf SystemName from the Lldp_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemName is set, it can
// safely use t.GetSystemName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemName == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor) GetSystemName() string {
	if t == nil || t.SystemName == nil {
		return ""
	}
	return *t.SystemName
}

// GetTtl retrieves the value of the leaf Ttl from the Lldp_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ttl is set, it can
// safely use t.GetTtl() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ttl == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor) GetTtl() uint16 {
	if t == nil || t.Ttl == nil {
		return 0
	}
	return *t.Ttl
}

// PopulateDefaults recursively populates unset leaf fields in the Lldp_Interface_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Lldp_Interface_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Capability {
		e.PopulateDefaults()
	}
	for _, e := range t.Tlv {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the Lldp_Interface_Neighbor struct, which is a YANG list entry.
func (t *Lldp_Interface_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lldp_Interface_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Lldp_Interface_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lldp_Interface_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Lldp_Interface_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Lldp_Interface_Neighbor.
func (*Lldp_Interface_Neighbor) ΛBelongingModule() string {
	return "openconfig-lldp"
}

// Lldp_Interface_Neighbor_Capability represents the /openconfig-lldp/lldp/interfaces/interface/neighbors/neighbor/capabilities/capability YANG schema element.
type Lldp_Interface_Neighbor_Capability struct {
	ΛMetadata []ygot.Annotation                  `path:"@" ygotAnnotation:"true"`
	Enabled   *bool                              `path:"state/enabled" module:"openconfig-lldp/openconfig-lldp"`
	ΛEnabled  []ygot.Annotation                  `path:"state/@enabled" ygotAnnotation:"true"`
	Name      E_LldpTypes_LLDP_SYSTEM_CAPABILITY `path:"state/name|name" module:"openconfig-lldp/openconfig-lldp|openconfig-lldp"`
	ΛName     []ygot.Annotation                  `path:"state/@name|@name" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Lldp_Interface_Neighbor_Capability implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Lldp_Interface_Neighbor_Capability) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the Lldp_Interface_Neighbor_Capability
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor_Capability) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetName retrieves the value of the leaf Name from the Lldp_Interface_Neighbor_Capability
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor_Capability) GetName() E_LldpTypes_LLDP_SYSTEM_CAPABILITY {
	if t == nil || t.Name == 0 {
		return 0
	}
	return t.Name
}

// PopulateDefaults recursively populates unset leaf fields in the Lldp_Interface_Neighbor_Capability
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Lldp_Interface_Neighbor_Capability) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the Lldp_Interface_Neighbor_Capability struct, which is a YANG list entry.
func (t *Lldp_Interface_Neighbor_Capability) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"name": t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lldp_Interface_Neighbor_Capability) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Lldp_Interface_Neighbor_Capability"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lldp_Interface_Neighbor_Capability) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Lldp_Interface_Neighbor_Capability) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Lldp_Interface_Neighbor_Capability.
func (*Lldp_Interface_Neighbor_Capability) ΛBelongingModule() string {
	return "openconfig-lldp"
}

// Lldp_Interface_Neighbor_Tlv represents the /openconfig-lldp/lldp/interfaces/interface/neighbors/neighbor/custom-tlvs/tlv YANG schema element.
type Lldp_Interface_Neighbor_Tlv struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Oui         *string           `path:"state/oui|oui" module:"openconfig-lldp/openconfig-lldp|openconfig-lldp"`
	ΛOui        []ygot.Annotation `path:"state/@oui|@oui" ygotAnnotation:"true"`
	OuiSubtype  *string           `path:"state/oui-subtype|oui-subtype" module:"openconfig-lldp/openconfig-lldp|openconfig-lldp"`
	ΛOuiSubtype []ygot.Annotation `path:"state/@oui-subtype|@oui-subtype" ygotAnnotation:"true"`
	Type        *int32            `path:"state/type|type" module:"openconfig-lldp/openconfig-lldp|openconfig-lldp"`
	ΛType       []ygot.Annotation `path:"state/@type|@type" ygotAnnotation:"true"`
	Value       Binary            `path:"state/value" module:"openconfig-lldp/openconfig-lldp"`
	ΛValue      []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Lldp_Interface_Neighbor_Tlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Lldp_Interface_Neighbor_Tlv) IsYANGGoStruct() {}

// GetOui retrieves the value of the leaf Oui from the Lldp_Interface_Neighbor_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Oui is set, it can
// safely use t.GetOui() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Oui == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor_Tlv) GetOui() string {
	if t == nil || t.Oui == nil {
		return ""
	}
	return *t.Oui
}

// GetOuiSubtype retrieves the value of the leaf OuiSubtype from the Lldp_Interface_Neighbor_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OuiSubtype is set, it can
// safely use t.GetOuiSubtype() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OuiSubtype == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor_Tlv) GetOuiSubtype() string {
	if t == nil || t.OuiSubtype == nil {
		return ""
	}
	return *t.OuiSubtype
}

// GetType retrieves the value of the leaf Type from the Lldp_Interface_Neighbor_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor_Tlv) GetType() int32 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the Lldp_Interface_Neighbor_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *Lldp_Interface_Neighbor_Tlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the Lldp_Interface_Neighbor_Tlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Lldp_Interface_Neighbor_Tlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the Lldp_Interface_Neighbor_Tlv struct, which is a YANG list entry.
func (t *Lldp_Interface_Neighbor_Tlv) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Oui == nil {
		return nil, fmt.Errorf("nil value for key Oui")
	}

	if t.OuiSubtype == nil {
		return nil, fmt.Errorf("nil value for key OuiSubtype")
	}

	if t.Type == nil {
		return nil, fmt.Errorf("nil value for key Type")
	}

	return map[string]interface{}{
		"oui":         *t.Oui,
		"oui-subtype": *t.OuiSubtype,
		"type":        *t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lldp_Interface_Neighbor_Tlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Lldp_Interface_Neighbor_Tlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Lldp_Interface_Neighbor_Tlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Lldp_Interface_Neighbor_Tlv) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Lldp_Interface_Neighbor_Tlv.
func (*Lldp_Interface_Neighbor_Tlv) ΛBelongingModule() string {
	return "openconfig-lldp"
}

// Messages represents the /openconfig-messages/messages YANG schema element.
type Messages struct {
	ΛMetadata     []ygot.Annotation                                   `path:"@" ygotAnnotation:"true"`
	DebugService  map[E_Messages_DEBUG_SERVICE]*Messages_DebugService `path:"debug-entries/debug-service" module:"openconfig-messages/openconfig-messages"`
	ΛDebugService []ygot.Annotation                                   `path:"debug-entries/@debug-service" ygotAnnotation:"true"`
	Message       *Messages_Message                                   `path:"state/message" module:"openconfig-messages/openconfig-messages"`
	ΛMessage      []ygot.Annotation                                   `path:"state/@message" ygotAnnotation:"true"`
	Severity      E_SystemLogging_SyslogSeverity                      `path:"config/severity" module:"openconfig-messages/openconfig-messages"`
	ΛSeverity     []ygot.Annotation                                   `path:"config/@severity" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Messages implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Messages) IsYANGGoStruct() {}

// NewDebugService creates a new entry in the DebugService list of the
// Messages struct. The keys of the list are populated from the input
// arguments.
func (t *Messages) NewDebugService(Service E_Messages_DEBUG_SERVICE) (*Messages_DebugService, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.DebugService == nil {
		t.DebugService = make(map[E_Messages_DEBUG_SERVICE]*Messages_DebugService)
	}

	key := Service

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.DebugService[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list DebugService", key)
	}

	t.DebugService[key] = &Messages_DebugService{
		Service: Service,
	}

	return t.DebugService[key], nil
}

// RenameDebugService renames an entry in the list DebugService within
// the Messages struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Messages) RenameDebugService(oldK, newK E_Messages_DEBUG_SERVICE) error {
	if _, ok := t.DebugService[newK]; ok {
		return fmt.Errorf("key %v already exists in DebugService", newK)
	}

	e, ok := t.DebugService[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in DebugService", oldK)
	}
	e.Service = newK

	t.DebugService[newK] = e
	delete(t.DebugService, oldK)
	return nil
}

// GetOrCreateDebugServiceMap returns the list (map) from Messages.
//
// It initializes the field if not already initialized.
func (t *Messages) GetOrCreateDebugServiceMap() map[E_Messages_DEBUG_SERVICE]*Messages_DebugService {
	if t.DebugService == nil {
		t.DebugService = make(map[E_Messages_DEBUG_SERVICE]*Messages_DebugService)
	}
	return t.DebugService
}

// GetOrCreateDebugService retrieves the value with the specified keys from
// the receiver Messages. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Messages) GetOrCreateDebugService(Service E_Messages_DEBUG_SERVICE) *Messages_DebugService {

	key := Service

	if v, ok := t.DebugService[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewDebugService(Service)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateDebugService got unexpected error: %v", err))
	}
	return v
}

// GetDebugService retrieves the value with the specified key from
// the DebugService map field of Messages. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Messages) GetDebugService(Service E_Messages_DEBUG_SERVICE) *Messages_DebugService {

	if t == nil {
		return nil
	}

	key := Service

	if lm, ok := t.DebugService[key]; ok {
		return lm
	}
	return nil
}

// AppendDebugService appends the supplied Messages_DebugService struct to the
// list DebugService of Messages. If the key value(s) specified in
// the supplied Messages_DebugService already exist in the list, an error is
// returned.
func (t *Messages) AppendDebugService(v *Messages_DebugService) error {
	key := v.Service

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.DebugService == nil {
		t.DebugService = make(map[E_Messages_DEBUG_SERVICE]*Messages_DebugService)
	}

	if _, ok := t.DebugService[key]; ok {
		return fmt.Errorf("duplicate key for list DebugService %v", key)
	}

	t.DebugService[key] = v
	return nil
}

// GetOrCreateMessage retrieves the value of the Message field
// or returns the existing field if it already exists.
func (t *Messages) GetOrCreateMessage() *Messages_Message {
	if t.Message != nil {
		return t.Message
	}
	t.Message = &Messages_Message{}
	return t.Message
}

// GetMessage returns the value of the Message struct pointer
// from Messages. If the receiver or the field Message is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Messages) GetMessage() *Messages_Message {
	if t != nil && t.Message != nil {
		return t.Message
	}
	return nil
}

// GetSeverity retrieves the value of the leaf Severity from the Messages
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Severity is set, it can
// safely use t.GetSeverity() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Severity == nil' before retrieving the leaf's value.
func (t *Messages) GetSeverity() E_SystemLogging_SyslogSeverity {
	if t == nil || t.Severity == 0 {
		return 0
	}
	return t.Severity
}

// PopulateDefaults recursively populates unset leaf fields in the Messages
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Messages) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Message.PopulateDefaults()
	for _, e := range t.DebugService {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Messages) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Messages"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Messages) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Messages) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Messages.
func (*Messages) ΛBelongingModule() string {
	return "openconfig-messages"
}

// Messages_DebugService represents the /openconfig-messages/messages/debug-entries/debug-service YANG schema element.
type Messages_DebugService struct {
	ΛMetadata []ygot.Annotation        `path:"@" ygotAnnotation:"true"`
	Enabled   *bool                    `path:"config/enabled" module:"openconfig-messages/openconfig-messages"`
	ΛEnabled  []ygot.Annotation        `path:"config/@enabled" ygotAnnotation:"true"`
	Service   E_Messages_DEBUG_SERVICE `path:"config/service|service" module:"openconfig-messages/openconfig-messages|openconfig-messages"`
	ΛService  []ygot.Annotation        `path:"config/@service|@service" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Messages_DebugService implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Messages_DebugService) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the Messages_DebugService
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *Messages_DebugService) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetService retrieves the value of the leaf Service from the Messages_DebugService
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Service is set, it can
// safely use t.GetService() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Service == nil' before retrieving the leaf's value.
func (t *Messages_DebugService) GetService() E_Messages_DEBUG_SERVICE {
	if t == nil || t.Service == 0 {
		return 0
	}
	return t.Service
}

// PopulateDefaults recursively populates unset leaf fields in the Messages_DebugService
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Messages_DebugService) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
}

// ΛListKeyMap returns the keys of the Messages_DebugService struct, which is a YANG list entry.
func (t *Messages_DebugService) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"service": t.Service,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Messages_DebugService) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Messages_DebugService"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Messages_DebugService) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Messages_DebugService) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Messages_DebugService.
func (*Messages_DebugService) ΛBelongingModule() string {
	return "openconfig-messages"
}

// Messages_Message represents the /openconfig-messages/messages/state/message YANG schema element.
type Messages_Message struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AppName   *string           `path:"app-name" module:"openconfig-messages"`
	ΛAppName  []ygot.Annotation `path:"@app-name" ygotAnnotation:"true"`
	Msg       *string           `path:"msg" module:"openconfig-messages"`
	ΛMsg      []ygot.Annotation `path:"@msg" ygotAnnotation:"true"`
	Msgid     *string           `path:"msgid" module:"openconfig-messages"`
	ΛMsgid    []ygot.Annotation `path:"@msgid" ygotAnnotation:"true"`
	Priority  *uint8            `path:"priority" module:"openconfig-messages"`
	ΛPriority []ygot.Annotation `path:"@priority" ygotAnnotation:"true"`
	Procid    *string           `path:"procid" module:"openconfig-messages"`
	ΛProcid   []ygot.Annotation `path:"@procid" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Messages_Message implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Messages_Message) IsYANGGoStruct() {}

// GetAppName retrieves the value of the leaf AppName from the Messages_Message
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AppName is set, it can
// safely use t.GetAppName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AppName == nil' before retrieving the leaf's value.
func (t *Messages_Message) GetAppName() string {
	if t == nil || t.AppName == nil {
		return ""
	}
	return *t.AppName
}

// GetMsg retrieves the value of the leaf Msg from the Messages_Message
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Msg is set, it can
// safely use t.GetMsg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Msg == nil' before retrieving the leaf's value.
func (t *Messages_Message) GetMsg() string {
	if t == nil || t.Msg == nil {
		return ""
	}
	return *t.Msg
}

// GetMsgid retrieves the value of the leaf Msgid from the Messages_Message
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Msgid is set, it can
// safely use t.GetMsgid() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Msgid == nil' before retrieving the leaf's value.
func (t *Messages_Message) GetMsgid() string {
	if t == nil || t.Msgid == nil {
		return ""
	}
	return *t.Msgid
}

// GetPriority retrieves the value of the leaf Priority from the Messages_Message
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *Messages_Message) GetPriority() uint8 {
	if t == nil || t.Priority == nil {
		return 0
	}
	return *t.Priority
}

// GetProcid retrieves the value of the leaf Procid from the Messages_Message
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Procid is set, it can
// safely use t.GetProcid() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Procid == nil' before retrieving the leaf's value.
func (t *Messages_Message) GetProcid() string {
	if t == nil || t.Procid == nil {
		return ""
	}
	return *t.Procid
}

// PopulateDefaults recursively populates unset leaf fields in the Messages_Message
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Messages_Message) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Messages_Message) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Messages_Message"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Messages_Message) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Messages_Message) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Messages_Message.
func (*Messages_Message) ΛBelongingModule() string {
	return "openconfig-messages"
}

// NetworkInstance represents the /openconfig-network-instance/network-instances/network-instance YANG schema element.
type NetworkInstance struct {
	ΛMetadata                []ygot.Annotation                                                        `path:"@" ygotAnnotation:"true"`
	Afts                     *NetworkInstance_Afts                                                    `path:"afts" module:"openconfig-network-instance"`
	ΛAfts                    []ygot.Annotation                                                        `path:"@afts" ygotAnnotation:"true"`
	ConnectionPoint          map[string]*NetworkInstance_ConnectionPoint                              `path:"connection-points/connection-point" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛConnectionPoint         []ygot.Annotation                                                        `path:"connection-points/@connection-point" ygotAnnotation:"true"`
	Description              *string                                                                  `path:"config/description" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDescription             []ygot.Annotation                                                        `path:"config/@description" ygotAnnotation:"true"`
	Encapsulation            *NetworkInstance_Encapsulation                                           `path:"encapsulation" module:"openconfig-network-instance"`
	ΛEncapsulation           []ygot.Annotation                                                        `path:"@encapsulation" ygotAnnotation:"true"`
	Evpn                     *NetworkInstance_Evpn                                                    `path:"evpn" module:"openconfig-network-instance"`
	ΛEvpn                    []ygot.Annotation                                                        `path:"@evpn" ygotAnnotation:"true"`
	FallbackNetworkInstance  *string                                                                  `path:"config/fallback-network-instance" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFallbackNetworkInstance []ygot.Annotation                                                        `path:"config/@fallback-network-instance" ygotAnnotation:"true"`
	Fdb                      *NetworkInstance_Fdb                                                     `path:"fdb" module:"openconfig-network-instance"`
	ΛFdb                     []ygot.Annotation                                                        `path:"@fdb" ygotAnnotation:"true"`
	InterInstancePolicies    *NetworkInstance_InterInstancePolicies                                   `path:"inter-instance-policies" module:"openconfig-network-instance"`
	ΛInterInstancePolicies   []ygot.Annotation                                                        `path:"@inter-instance-policies" ygotAnnotation:"true"`
	Interface                map[string]*NetworkInstance_Interface                                    `path:"interfaces/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface               []ygot.Annotation                                                        `path:"interfaces/@interface" ygotAnnotation:"true"`
	Mpls                     *NetworkInstance_Mpls                                                    `path:"mpls" module:"openconfig-network-instance"`
	ΛMpls                    []ygot.Annotation                                                        `path:"@mpls" ygotAnnotation:"true"`
	Name                     *string                                                                  `path:"config/name|name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛName                    []ygot.Annotation                                                        `path:"config/@name|@name" ygotAnnotation:"true"`
	PolicyForwarding         *NetworkInstance_PolicyForwarding                                        `path:"policy-forwarding" module:"openconfig-network-instance"`
	ΛPolicyForwarding        []ygot.Annotation                                                        `path:"@policy-forwarding" ygotAnnotation:"true"`
	Protocol                 map[NetworkInstance_Protocol_Key]*NetworkInstance_Protocol               `path:"protocols/protocol" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProtocol                []ygot.Annotation                                                        `path:"protocols/@protocol" ygotAnnotation:"true"`
	RouteDistinguisher       *string                                                                  `path:"config/route-distinguisher" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouteDistinguisher      []ygot.Annotation                                                        `path:"config/@route-distinguisher" ygotAnnotation:"true"`
	RouteLimit               map[E_Types_ADDRESS_FAMILY]*NetworkInstance_RouteLimit                   `path:"route-limits/route-limit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouteLimit              []ygot.Annotation                                                        `path:"route-limits/@route-limit" ygotAnnotation:"true"`
	RouterId                 *string                                                                  `path:"config/router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouterId                []ygot.Annotation                                                        `path:"config/@router-id" ygotAnnotation:"true"`
	SegmentRouting           *NetworkInstance_SegmentRouting                                          `path:"segment-routing" module:"openconfig-network-instance"`
	ΛSegmentRouting          []ygot.Annotation                                                        `path:"@segment-routing" ygotAnnotation:"true"`
	Table                    map[NetworkInstance_Table_Key]*NetworkInstance_Table                     `path:"tables/table" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTable                   []ygot.Annotation                                                        `path:"tables/@table" ygotAnnotation:"true"`
	TableConnection          map[NetworkInstance_TableConnection_Key]*NetworkInstance_TableConnection `path:"table-connections/table-connection" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTableConnection         []ygot.Annotation                                                        `path:"table-connections/@table-connection" ygotAnnotation:"true"`
	Type                     E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE                             `path:"config/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType                    []ygot.Annotation                                                        `path:"config/@type" ygotAnnotation:"true"`
	Vlan                     map[uint16]*NetworkInstance_Vlan                                         `path:"vlans/vlan" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛVlan                    []ygot.Annotation                                                        `path:"vlans/@vlan" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Key represents the key for list Protocol of element /openconfig-network-instance/network-instances/network-instance.
type NetworkInstance_Protocol_Key struct {
	Identifier E_PolicyTypes_INSTALL_PROTOCOL_TYPE `path:"identifier"`
	Name       string                              `path:"name"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Key key struct.
func (t NetworkInstance_Protocol_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"identifier": t.Identifier,
		"name":       t.Name,
	}, nil
}

// NetworkInstance_Table_Key represents the key for list Table of element /openconfig-network-instance/network-instances/network-instance.
type NetworkInstance_Table_Key struct {
	Protocol      E_PolicyTypes_INSTALL_PROTOCOL_TYPE `path:"protocol"`
	AddressFamily E_Types_ADDRESS_FAMILY              `path:"address-family"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Table_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Table_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_Table_Key key struct.
func (t NetworkInstance_Table_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"protocol":       t.Protocol,
		"address-family": t.AddressFamily,
	}, nil
}

// NetworkInstance_TableConnection_Key represents the key for list TableConnection of element /openconfig-network-instance/network-instances/network-instance.
type NetworkInstance_TableConnection_Key struct {
	SrcProtocol   E_PolicyTypes_INSTALL_PROTOCOL_TYPE `path:"src-protocol"`
	DstProtocol   E_PolicyTypes_INSTALL_PROTOCOL_TYPE `path:"dst-protocol"`
	AddressFamily E_Types_ADDRESS_FAMILY              `path:"address-family"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_TableConnection_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_TableConnection_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_TableConnection_Key key struct.
func (t NetworkInstance_TableConnection_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"src-protocol":   t.SrcProtocol,
		"dst-protocol":   t.DstProtocol,
		"address-family": t.AddressFamily,
	}, nil
}

// NewConnectionPoint creates a new entry in the ConnectionPoint list of the
// NetworkInstance struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance) NewConnectionPoint(ConnectionPointId string) (*NetworkInstance_ConnectionPoint, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ConnectionPoint == nil {
		t.ConnectionPoint = make(map[string]*NetworkInstance_ConnectionPoint)
	}

	key := ConnectionPointId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.ConnectionPoint[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list ConnectionPoint", key)
	}

	t.ConnectionPoint[key] = &NetworkInstance_ConnectionPoint{
		ConnectionPointId: &ConnectionPointId,
	}

	return t.ConnectionPoint[key], nil
}

// RenameConnectionPoint renames an entry in the list ConnectionPoint within
// the NetworkInstance struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance) RenameConnectionPoint(oldK, newK string) error {
	if _, ok := t.ConnectionPoint[newK]; ok {
		return fmt.Errorf("key %v already exists in ConnectionPoint", newK)
	}

	e, ok := t.ConnectionPoint[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in ConnectionPoint", oldK)
	}
	e.ConnectionPointId = &newK

	t.ConnectionPoint[newK] = e
	delete(t.ConnectionPoint, oldK)
	return nil
}

// GetOrCreateConnectionPointMap returns the list (map) from NetworkInstance.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance) GetOrCreateConnectionPointMap() map[string]*NetworkInstance_ConnectionPoint {
	if t.ConnectionPoint == nil {
		t.ConnectionPoint = make(map[string]*NetworkInstance_ConnectionPoint)
	}
	return t.ConnectionPoint
}

// GetOrCreateConnectionPoint retrieves the value with the specified keys from
// the receiver NetworkInstance. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance) GetOrCreateConnectionPoint(ConnectionPointId string) *NetworkInstance_ConnectionPoint {

	key := ConnectionPointId

	if v, ok := t.ConnectionPoint[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewConnectionPoint(ConnectionPointId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateConnectionPoint got unexpected error: %v", err))
	}
	return v
}

// GetConnectionPoint retrieves the value with the specified key from
// the ConnectionPoint map field of NetworkInstance. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance) GetConnectionPoint(ConnectionPointId string) *NetworkInstance_ConnectionPoint {

	if t == nil {
		return nil
	}

	key := ConnectionPointId

	if lm, ok := t.ConnectionPoint[key]; ok {
		return lm
	}
	return nil
}

// AppendConnectionPoint appends the supplied NetworkInstance_ConnectionPoint struct to the
// list ConnectionPoint of NetworkInstance. If the key value(s) specified in
// the supplied NetworkInstance_ConnectionPoint already exist in the list, an error is
// returned.
func (t *NetworkInstance) AppendConnectionPoint(v *NetworkInstance_ConnectionPoint) error {
	if v.ConnectionPointId == nil {
		return fmt.Errorf("invalid nil key received for ConnectionPointId")
	}

	key := *v.ConnectionPointId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ConnectionPoint == nil {
		t.ConnectionPoint = make(map[string]*NetworkInstance_ConnectionPoint)
	}

	if _, ok := t.ConnectionPoint[key]; ok {
		return fmt.Errorf("duplicate key for list ConnectionPoint %v", key)
	}

	t.ConnectionPoint[key] = v
	return nil
}

// NewInterface creates a new entry in the Interface list of the
// NetworkInstance struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance) NewInterface(Id string) (*NetworkInstance_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Interface)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &NetworkInstance_Interface{
		Id: &Id,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the NetworkInstance struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.Id = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from NetworkInstance.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance) GetOrCreateInterfaceMap() map[string]*NetworkInstance_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver NetworkInstance. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance) GetOrCreateInterface(Id string) *NetworkInstance_Interface {

	key := Id

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of NetworkInstance. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance) GetInterface(Id string) *NetworkInstance_Interface {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied NetworkInstance_Interface struct to the
// list Interface of NetworkInstance. If the key value(s) specified in
// the supplied NetworkInstance_Interface already exist in the list, an error is
// returned.
func (t *NetworkInstance) AppendInterface(v *NetworkInstance_Interface) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// NewProtocol creates a new entry in the Protocol list of the
// NetworkInstance struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance) NewProtocol(Identifier E_PolicyTypes_INSTALL_PROTOCOL_TYPE, Name string) (*NetworkInstance_Protocol, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Protocol == nil {
		t.Protocol = make(map[NetworkInstance_Protocol_Key]*NetworkInstance_Protocol)
	}

	key := NetworkInstance_Protocol_Key{
		Identifier: Identifier,
		Name:       Name,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Protocol[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Protocol", key)
	}

	t.Protocol[key] = &NetworkInstance_Protocol{
		Identifier: Identifier,
		Name:       &Name,
	}

	return t.Protocol[key], nil
}

// RenameProtocol renames an entry in the list Protocol within
// the NetworkInstance struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance) RenameProtocol(oldK, newK NetworkInstance_Protocol_Key) error {
	if _, ok := t.Protocol[newK]; ok {
		return fmt.Errorf("key %v already exists in Protocol", newK)
	}

	e, ok := t.Protocol[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Protocol", oldK)
	}
	e.Identifier = newK.Identifier
	e.Name = &newK.Name

	t.Protocol[newK] = e
	delete(t.Protocol, oldK)
	return nil
}

// GetOrCreateProtocolMap returns the list (map) from NetworkInstance.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance) GetOrCreateProtocolMap() map[NetworkInstance_Protocol_Key]*NetworkInstance_Protocol {
	if t.Protocol == nil {
		t.Protocol = make(map[NetworkInstance_Protocol_Key]*NetworkInstance_Protocol)
	}
	return t.Protocol
}

// GetOrCreateProtocol retrieves the value with the specified keys from
// the receiver NetworkInstance. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance) GetOrCreateProtocol(Identifier E_PolicyTypes_INSTALL_PROTOCOL_TYPE, Name string) *NetworkInstance_Protocol {

	key := NetworkInstance_Protocol_Key{
		Identifier: Identifier,
		Name:       Name,
	}

	if v, ok := t.Protocol[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewProtocol(Identifier, Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateProtocol got unexpected error: %v", err))
	}
	return v
}

// GetProtocol retrieves the value with the specified key from
// the Protocol map field of NetworkInstance. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance) GetProtocol(Identifier E_PolicyTypes_INSTALL_PROTOCOL_TYPE, Name string) *NetworkInstance_Protocol {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Key{
		Identifier: Identifier,
		Name:       Name,
	}

	if lm, ok := t.Protocol[key]; ok {
		return lm
	}
	return nil
}

// AppendProtocol appends the supplied NetworkInstance_Protocol struct to the
// list Protocol of NetworkInstance. If the key value(s) specified in
// the supplied NetworkInstance_Protocol already exist in the list, an error is
// returned.
func (t *NetworkInstance) AppendProtocol(v *NetworkInstance_Protocol) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key for Name")
	}

	key := NetworkInstance_Protocol_Key{
		Identifier: v.Identifier,
		Name:       *v.Name,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Protocol == nil {
		t.Protocol = make(map[NetworkInstance_Protocol_Key]*NetworkInstance_Protocol)
	}

	if _, ok := t.Protocol[key]; ok {
		return fmt.Errorf("duplicate key for list Protocol %v", key)
	}

	t.Protocol[key] = v
	return nil
}

// NewRouteLimit creates a new entry in the RouteLimit list of the
// NetworkInstance struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance) NewRouteLimit(Afi E_Types_ADDRESS_FAMILY) (*NetworkInstance_RouteLimit, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.RouteLimit == nil {
		t.RouteLimit = make(map[E_Types_ADDRESS_FAMILY]*NetworkInstance_RouteLimit)
	}

	key := Afi

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.RouteLimit[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list RouteLimit", key)
	}

	t.RouteLimit[key] = &NetworkInstance_RouteLimit{
		Afi: Afi,
	}

	return t.RouteLimit[key], nil
}

// RenameRouteLimit renames an entry in the list RouteLimit within
// the NetworkInstance struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance) RenameRouteLimit(oldK, newK E_Types_ADDRESS_FAMILY) error {
	if _, ok := t.RouteLimit[newK]; ok {
		return fmt.Errorf("key %v already exists in RouteLimit", newK)
	}

	e, ok := t.RouteLimit[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in RouteLimit", oldK)
	}
	e.Afi = newK

	t.RouteLimit[newK] = e
	delete(t.RouteLimit, oldK)
	return nil
}

// GetOrCreateRouteLimitMap returns the list (map) from NetworkInstance.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance) GetOrCreateRouteLimitMap() map[E_Types_ADDRESS_FAMILY]*NetworkInstance_RouteLimit {
	if t.RouteLimit == nil {
		t.RouteLimit = make(map[E_Types_ADDRESS_FAMILY]*NetworkInstance_RouteLimit)
	}
	return t.RouteLimit
}

// GetOrCreateRouteLimit retrieves the value with the specified keys from
// the receiver NetworkInstance. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance) GetOrCreateRouteLimit(Afi E_Types_ADDRESS_FAMILY) *NetworkInstance_RouteLimit {

	key := Afi

	if v, ok := t.RouteLimit[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRouteLimit(Afi)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRouteLimit got unexpected error: %v", err))
	}
	return v
}

// GetRouteLimit retrieves the value with the specified key from
// the RouteLimit map field of NetworkInstance. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance) GetRouteLimit(Afi E_Types_ADDRESS_FAMILY) *NetworkInstance_RouteLimit {

	if t == nil {
		return nil
	}

	key := Afi

	if lm, ok := t.RouteLimit[key]; ok {
		return lm
	}
	return nil
}

// AppendRouteLimit appends the supplied NetworkInstance_RouteLimit struct to the
// list RouteLimit of NetworkInstance. If the key value(s) specified in
// the supplied NetworkInstance_RouteLimit already exist in the list, an error is
// returned.
func (t *NetworkInstance) AppendRouteLimit(v *NetworkInstance_RouteLimit) error {
	key := v.Afi

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.RouteLimit == nil {
		t.RouteLimit = make(map[E_Types_ADDRESS_FAMILY]*NetworkInstance_RouteLimit)
	}

	if _, ok := t.RouteLimit[key]; ok {
		return fmt.Errorf("duplicate key for list RouteLimit %v", key)
	}

	t.RouteLimit[key] = v
	return nil
}

// NewTable creates a new entry in the Table list of the
// NetworkInstance struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance) NewTable(Protocol E_PolicyTypes_INSTALL_PROTOCOL_TYPE, AddressFamily E_Types_ADDRESS_FAMILY) (*NetworkInstance_Table, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Table == nil {
		t.Table = make(map[NetworkInstance_Table_Key]*NetworkInstance_Table)
	}

	key := NetworkInstance_Table_Key{
		Protocol:      Protocol,
		AddressFamily: AddressFamily,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Table[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Table", key)
	}

	t.Table[key] = &NetworkInstance_Table{
		Protocol:      Protocol,
		AddressFamily: AddressFamily,
	}

	return t.Table[key], nil
}

// RenameTable renames an entry in the list Table within
// the NetworkInstance struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance) RenameTable(oldK, newK NetworkInstance_Table_Key) error {
	if _, ok := t.Table[newK]; ok {
		return fmt.Errorf("key %v already exists in Table", newK)
	}

	e, ok := t.Table[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Table", oldK)
	}
	e.Protocol = newK.Protocol
	e.AddressFamily = newK.AddressFamily

	t.Table[newK] = e
	delete(t.Table, oldK)
	return nil
}

// GetOrCreateTableMap returns the list (map) from NetworkInstance.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance) GetOrCreateTableMap() map[NetworkInstance_Table_Key]*NetworkInstance_Table {
	if t.Table == nil {
		t.Table = make(map[NetworkInstance_Table_Key]*NetworkInstance_Table)
	}
	return t.Table
}

// GetOrCreateTable retrieves the value with the specified keys from
// the receiver NetworkInstance. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance) GetOrCreateTable(Protocol E_PolicyTypes_INSTALL_PROTOCOL_TYPE, AddressFamily E_Types_ADDRESS_FAMILY) *NetworkInstance_Table {

	key := NetworkInstance_Table_Key{
		Protocol:      Protocol,
		AddressFamily: AddressFamily,
	}

	if v, ok := t.Table[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTable(Protocol, AddressFamily)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTable got unexpected error: %v", err))
	}
	return v
}

// GetTable retrieves the value with the specified key from
// the Table map field of NetworkInstance. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance) GetTable(Protocol E_PolicyTypes_INSTALL_PROTOCOL_TYPE, AddressFamily E_Types_ADDRESS_FAMILY) *NetworkInstance_Table {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Table_Key{
		Protocol:      Protocol,
		AddressFamily: AddressFamily,
	}

	if lm, ok := t.Table[key]; ok {
		return lm
	}
	return nil
}

// AppendTable appends the supplied NetworkInstance_Table struct to the
// list Table of NetworkInstance. If the key value(s) specified in
// the supplied NetworkInstance_Table already exist in the list, an error is
// returned.
func (t *NetworkInstance) AppendTable(v *NetworkInstance_Table) error {
	key := NetworkInstance_Table_Key{
		Protocol:      v.Protocol,
		AddressFamily: v.AddressFamily,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Table == nil {
		t.Table = make(map[NetworkInstance_Table_Key]*NetworkInstance_Table)
	}

	if _, ok := t.Table[key]; ok {
		return fmt.Errorf("duplicate key for list Table %v", key)
	}

	t.Table[key] = v
	return nil
}

// NewTableConnection creates a new entry in the TableConnection list of the
// NetworkInstance struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance) NewTableConnection(SrcProtocol E_PolicyTypes_INSTALL_PROTOCOL_TYPE, DstProtocol E_PolicyTypes_INSTALL_PROTOCOL_TYPE, AddressFamily E_Types_ADDRESS_FAMILY) (*NetworkInstance_TableConnection, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TableConnection == nil {
		t.TableConnection = make(map[NetworkInstance_TableConnection_Key]*NetworkInstance_TableConnection)
	}

	key := NetworkInstance_TableConnection_Key{
		SrcProtocol:   SrcProtocol,
		DstProtocol:   DstProtocol,
		AddressFamily: AddressFamily,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.TableConnection[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list TableConnection", key)
	}

	t.TableConnection[key] = &NetworkInstance_TableConnection{
		SrcProtocol:   SrcProtocol,
		DstProtocol:   DstProtocol,
		AddressFamily: AddressFamily,
	}

	return t.TableConnection[key], nil
}

// RenameTableConnection renames an entry in the list TableConnection within
// the NetworkInstance struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance) RenameTableConnection(oldK, newK NetworkInstance_TableConnection_Key) error {
	if _, ok := t.TableConnection[newK]; ok {
		return fmt.Errorf("key %v already exists in TableConnection", newK)
	}

	e, ok := t.TableConnection[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in TableConnection", oldK)
	}
	e.SrcProtocol = newK.SrcProtocol
	e.DstProtocol = newK.DstProtocol
	e.AddressFamily = newK.AddressFamily

	t.TableConnection[newK] = e
	delete(t.TableConnection, oldK)
	return nil
}

// GetOrCreateTableConnectionMap returns the list (map) from NetworkInstance.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance) GetOrCreateTableConnectionMap() map[NetworkInstance_TableConnection_Key]*NetworkInstance_TableConnection {
	if t.TableConnection == nil {
		t.TableConnection = make(map[NetworkInstance_TableConnection_Key]*NetworkInstance_TableConnection)
	}
	return t.TableConnection
}

// GetOrCreateTableConnection retrieves the value with the specified keys from
// the receiver NetworkInstance. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance) GetOrCreateTableConnection(SrcProtocol E_PolicyTypes_INSTALL_PROTOCOL_TYPE, DstProtocol E_PolicyTypes_INSTALL_PROTOCOL_TYPE, AddressFamily E_Types_ADDRESS_FAMILY) *NetworkInstance_TableConnection {

	key := NetworkInstance_TableConnection_Key{
		SrcProtocol:   SrcProtocol,
		DstProtocol:   DstProtocol,
		AddressFamily: AddressFamily,
	}

	if v, ok := t.TableConnection[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTableConnection(SrcProtocol, DstProtocol, AddressFamily)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTableConnection got unexpected error: %v", err))
	}
	return v
}

// GetTableConnection retrieves the value with the specified key from
// the TableConnection map field of NetworkInstance. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance) GetTableConnection(SrcProtocol E_PolicyTypes_INSTALL_PROTOCOL_TYPE, DstProtocol E_PolicyTypes_INSTALL_PROTOCOL_TYPE, AddressFamily E_Types_ADDRESS_FAMILY) *NetworkInstance_TableConnection {

	if t == nil {
		return nil
	}

	key := NetworkInstance_TableConnection_Key{
		SrcProtocol:   SrcProtocol,
		DstProtocol:   DstProtocol,
		AddressFamily: AddressFamily,
	}

	if lm, ok := t.TableConnection[key]; ok {
		return lm
	}
	return nil
}

// AppendTableConnection appends the supplied NetworkInstance_TableConnection struct to the
// list TableConnection of NetworkInstance. If the key value(s) specified in
// the supplied NetworkInstance_TableConnection already exist in the list, an error is
// returned.
func (t *NetworkInstance) AppendTableConnection(v *NetworkInstance_TableConnection) error {
	key := NetworkInstance_TableConnection_Key{
		SrcProtocol:   v.SrcProtocol,
		DstProtocol:   v.DstProtocol,
		AddressFamily: v.AddressFamily,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TableConnection == nil {
		t.TableConnection = make(map[NetworkInstance_TableConnection_Key]*NetworkInstance_TableConnection)
	}

	if _, ok := t.TableConnection[key]; ok {
		return fmt.Errorf("duplicate key for list TableConnection %v", key)
	}

	t.TableConnection[key] = v
	return nil
}

// NewVlan creates a new entry in the Vlan list of the
// NetworkInstance struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance) NewVlan(VlanId uint16) (*NetworkInstance_Vlan, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Vlan == nil {
		t.Vlan = make(map[uint16]*NetworkInstance_Vlan)
	}

	key := VlanId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Vlan[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Vlan", key)
	}

	t.Vlan[key] = &NetworkInstance_Vlan{
		VlanId: &VlanId,
	}

	return t.Vlan[key], nil
}

// RenameVlan renames an entry in the list Vlan within
// the NetworkInstance struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance) RenameVlan(oldK, newK uint16) error {
	if _, ok := t.Vlan[newK]; ok {
		return fmt.Errorf("key %v already exists in Vlan", newK)
	}

	e, ok := t.Vlan[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Vlan", oldK)
	}
	e.VlanId = &newK

	t.Vlan[newK] = e
	delete(t.Vlan, oldK)
	return nil
}

// GetOrCreateVlanMap returns the list (map) from NetworkInstance.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance) GetOrCreateVlanMap() map[uint16]*NetworkInstance_Vlan {
	if t.Vlan == nil {
		t.Vlan = make(map[uint16]*NetworkInstance_Vlan)
	}
	return t.Vlan
}

// GetOrCreateVlan retrieves the value with the specified keys from
// the receiver NetworkInstance. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance) GetOrCreateVlan(VlanId uint16) *NetworkInstance_Vlan {

	key := VlanId

	if v, ok := t.Vlan[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewVlan(VlanId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateVlan got unexpected error: %v", err))
	}
	return v
}

// GetVlan retrieves the value with the specified key from
// the Vlan map field of NetworkInstance. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance) GetVlan(VlanId uint16) *NetworkInstance_Vlan {

	if t == nil {
		return nil
	}

	key := VlanId

	if lm, ok := t.Vlan[key]; ok {
		return lm
	}
	return nil
}

// AppendVlan appends the supplied NetworkInstance_Vlan struct to the
// list Vlan of NetworkInstance. If the key value(s) specified in
// the supplied NetworkInstance_Vlan already exist in the list, an error is
// returned.
func (t *NetworkInstance) AppendVlan(v *NetworkInstance_Vlan) error {
	if v.VlanId == nil {
		return fmt.Errorf("invalid nil key received for VlanId")
	}

	key := *v.VlanId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Vlan == nil {
		t.Vlan = make(map[uint16]*NetworkInstance_Vlan)
	}

	if _, ok := t.Vlan[key]; ok {
		return fmt.Errorf("duplicate key for list Vlan %v", key)
	}

	t.Vlan[key] = v
	return nil
}

// GetOrCreateAfts retrieves the value of the Afts field
// or returns the existing field if it already exists.
func (t *NetworkInstance) GetOrCreateAfts() *NetworkInstance_Afts {
	if t.Afts != nil {
		return t.Afts
	}
	t.Afts = &NetworkInstance_Afts{}
	return t.Afts
}

// GetOrCreateEncapsulation retrieves the value of the Encapsulation field
// or returns the existing field if it already exists.
func (t *NetworkInstance) GetOrCreateEncapsulation() *NetworkInstance_Encapsulation {
	if t.Encapsulation != nil {
		return t.Encapsulation
	}
	t.Encapsulation = &NetworkInstance_Encapsulation{}
	return t.Encapsulation
}

// GetOrCreateEvpn retrieves the value of the Evpn field
// or returns the existing field if it already exists.
func (t *NetworkInstance) GetOrCreateEvpn() *NetworkInstance_Evpn {
	if t.Evpn != nil {
		return t.Evpn
	}
	t.Evpn = &NetworkInstance_Evpn{}
	return t.Evpn
}

// GetOrCreateFdb retrieves the value of the Fdb field
// or returns the existing field if it already exists.
func (t *NetworkInstance) GetOrCreateFdb() *NetworkInstance_Fdb {
	if t.Fdb != nil {
		return t.Fdb
	}
	t.Fdb = &NetworkInstance_Fdb{}
	return t.Fdb
}

// GetOrCreateInterInstancePolicies retrieves the value of the InterInstancePolicies field
// or returns the existing field if it already exists.
func (t *NetworkInstance) GetOrCreateInterInstancePolicies() *NetworkInstance_InterInstancePolicies {
	if t.InterInstancePolicies != nil {
		return t.InterInstancePolicies
	}
	t.InterInstancePolicies = &NetworkInstance_InterInstancePolicies{}
	return t.InterInstancePolicies
}

// GetOrCreateMpls retrieves the value of the Mpls field
// or returns the existing field if it already exists.
func (t *NetworkInstance) GetOrCreateMpls() *NetworkInstance_Mpls {
	if t.Mpls != nil {
		return t.Mpls
	}
	t.Mpls = &NetworkInstance_Mpls{}
	return t.Mpls
}

// GetOrCreatePolicyForwarding retrieves the value of the PolicyForwarding field
// or returns the existing field if it already exists.
func (t *NetworkInstance) GetOrCreatePolicyForwarding() *NetworkInstance_PolicyForwarding {
	if t.PolicyForwarding != nil {
		return t.PolicyForwarding
	}
	t.PolicyForwarding = &NetworkInstance_PolicyForwarding{}
	return t.PolicyForwarding
}

// GetOrCreateSegmentRouting retrieves the value of the SegmentRouting field
// or returns the existing field if it already exists.
func (t *NetworkInstance) GetOrCreateSegmentRouting() *NetworkInstance_SegmentRouting {
	if t.SegmentRouting != nil {
		return t.SegmentRouting
	}
	t.SegmentRouting = &NetworkInstance_SegmentRouting{}
	return t.SegmentRouting
}

// GetAfts returns the value of the Afts struct pointer
// from NetworkInstance. If the receiver or the field Afts is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance) GetAfts() *NetworkInstance_Afts {
	if t != nil && t.Afts != nil {
		return t.Afts
	}
	return nil
}

// GetEncapsulation returns the value of the Encapsulation struct pointer
// from NetworkInstance. If the receiver or the field Encapsulation is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance) GetEncapsulation() *NetworkInstance_Encapsulation {
	if t != nil && t.Encapsulation != nil {
		return t.Encapsulation
	}
	return nil
}

// GetEvpn returns the value of the Evpn struct pointer
// from NetworkInstance. If the receiver or the field Evpn is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance) GetEvpn() *NetworkInstance_Evpn {
	if t != nil && t.Evpn != nil {
		return t.Evpn
	}
	return nil
}

// GetFdb returns the value of the Fdb struct pointer
// from NetworkInstance. If the receiver or the field Fdb is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance) GetFdb() *NetworkInstance_Fdb {
	if t != nil && t.Fdb != nil {
		return t.Fdb
	}
	return nil
}

// GetInterInstancePolicies returns the value of the InterInstancePolicies struct pointer
// from NetworkInstance. If the receiver or the field InterInstancePolicies is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance) GetInterInstancePolicies() *NetworkInstance_InterInstancePolicies {
	if t != nil && t.InterInstancePolicies != nil {
		return t.InterInstancePolicies
	}
	return nil
}

// GetMpls returns the value of the Mpls struct pointer
// from NetworkInstance. If the receiver or the field Mpls is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance) GetMpls() *NetworkInstance_Mpls {
	if t != nil && t.Mpls != nil {
		return t.Mpls
	}
	return nil
}

// GetPolicyForwarding returns the value of the PolicyForwarding struct pointer
// from NetworkInstance. If the receiver or the field PolicyForwarding is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance) GetPolicyForwarding() *NetworkInstance_PolicyForwarding {
	if t != nil && t.PolicyForwarding != nil {
		return t.PolicyForwarding
	}
	return nil
}

// GetSegmentRouting returns the value of the SegmentRouting struct pointer
// from NetworkInstance. If the receiver or the field SegmentRouting is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance) GetSegmentRouting() *NetworkInstance_SegmentRouting {
	if t != nil && t.SegmentRouting != nil {
		return t.SegmentRouting
	}
	return nil
}

// GetDescription retrieves the value of the leaf Description from the NetworkInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *NetworkInstance) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetFallbackNetworkInstance retrieves the value of the leaf FallbackNetworkInstance from the NetworkInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FallbackNetworkInstance is set, it can
// safely use t.GetFallbackNetworkInstance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FallbackNetworkInstance == nil' before retrieving the leaf's value.
func (t *NetworkInstance) GetFallbackNetworkInstance() string {
	if t == nil || t.FallbackNetworkInstance == nil {
		return ""
	}
	return *t.FallbackNetworkInstance
}

// GetName retrieves the value of the leaf Name from the NetworkInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *NetworkInstance) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetRouteDistinguisher retrieves the value of the leaf RouteDistinguisher from the NetworkInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouteDistinguisher is set, it can
// safely use t.GetRouteDistinguisher() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouteDistinguisher == nil' before retrieving the leaf's value.
func (t *NetworkInstance) GetRouteDistinguisher() string {
	if t == nil || t.RouteDistinguisher == nil {
		return ""
	}
	return *t.RouteDistinguisher
}

// GetRouterId retrieves the value of the leaf RouterId from the NetworkInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterId is set, it can
// safely use t.GetRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance) GetRouterId() string {
	if t == nil || t.RouterId == nil {
		return ""
	}
	return *t.RouterId
}

// GetType retrieves the value of the leaf Type from the NetworkInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance) GetType() E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Afts.PopulateDefaults()
	t.Encapsulation.PopulateDefaults()
	t.Evpn.PopulateDefaults()
	t.Fdb.PopulateDefaults()
	t.InterInstancePolicies.PopulateDefaults()
	t.Mpls.PopulateDefaults()
	t.PolicyForwarding.PopulateDefaults()
	t.SegmentRouting.PopulateDefaults()
	for _, e := range t.ConnectionPoint {
		e.PopulateDefaults()
	}
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
	for _, e := range t.Protocol {
		e.PopulateDefaults()
	}
	for _, e := range t.RouteLimit {
		e.PopulateDefaults()
	}
	for _, e := range t.Table {
		e.PopulateDefaults()
	}
	for _, e := range t.TableConnection {
		e.PopulateDefaults()
	}
	for _, e := range t.Vlan {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance struct, which is a YANG list entry.
func (t *NetworkInstance) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance.
func (*NetworkInstance) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts represents the /openconfig-network-instance/network-instances/network-instance/afts YANG schema element.
type NetworkInstance_Afts struct {
	ΛMetadata              []ygot.Annotation                                                                `path:"@" ygotAnnotation:"true"`
	Ipv4Entry              map[string]*NetworkInstance_Afts_Ipv4Entry                                       `path:"ipv4-unicast/ipv4-entry" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpv4Entry             []ygot.Annotation                                                                `path:"ipv4-unicast/@ipv4-entry" ygotAnnotation:"true"`
	Ipv6Entry              map[string]*NetworkInstance_Afts_Ipv6Entry                                       `path:"ipv6-unicast/ipv6-entry" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpv6Entry             []ygot.Annotation                                                                `path:"ipv6-unicast/@ipv6-entry" ygotAnnotation:"true"`
	LabelEntry             map[NetworkInstance_Afts_LabelEntry_Label_Union]*NetworkInstance_Afts_LabelEntry `path:"mpls/label-entry" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabelEntry            []ygot.Annotation                                                                `path:"mpls/@label-entry" ygotAnnotation:"true"`
	MacEntry               map[string]*NetworkInstance_Afts_MacEntry                                        `path:"ethernet/mac-entry" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMacEntry              []ygot.Annotation                                                                `path:"ethernet/@mac-entry" ygotAnnotation:"true"`
	NextHop                map[uint64]*NetworkInstance_Afts_NextHop                                         `path:"next-hops/next-hop" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHop               []ygot.Annotation                                                                `path:"next-hops/@next-hop" ygotAnnotation:"true"`
	NextHopGroup           map[uint64]*NetworkInstance_Afts_NextHopGroup                                    `path:"next-hop-groups/next-hop-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHopGroup          []ygot.Annotation                                                                `path:"next-hop-groups/@next-hop-group" ygotAnnotation:"true"`
	PolicyForwardingEntry  map[uint64]*NetworkInstance_Afts_PolicyForwardingEntry                           `path:"policy-forwarding/policy-forwarding-entry" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPolicyForwardingEntry []ygot.Annotation                                                                `path:"policy-forwarding/@policy-forwarding-entry" ygotAnnotation:"true"`
	StateSynced            *NetworkInstance_Afts_StateSynced                                                `path:"state-synced" module:"openconfig-network-instance"`
	ΛStateSynced           []ygot.Annotation                                                                `path:"@state-synced" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts) IsYANGGoStruct() {}

// NewIpv4Entry creates a new entry in the Ipv4Entry list of the
// NetworkInstance_Afts struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Afts) NewIpv4Entry(Prefix string) (*NetworkInstance_Afts_Ipv4Entry, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Ipv4Entry == nil {
		t.Ipv4Entry = make(map[string]*NetworkInstance_Afts_Ipv4Entry)
	}

	key := Prefix

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Ipv4Entry[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Ipv4Entry", key)
	}

	t.Ipv4Entry[key] = &NetworkInstance_Afts_Ipv4Entry{
		Prefix: &Prefix,
	}

	return t.Ipv4Entry[key], nil
}

// RenameIpv4Entry renames an entry in the list Ipv4Entry within
// the NetworkInstance_Afts struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Afts) RenameIpv4Entry(oldK, newK string) error {
	if _, ok := t.Ipv4Entry[newK]; ok {
		return fmt.Errorf("key %v already exists in Ipv4Entry", newK)
	}

	e, ok := t.Ipv4Entry[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Ipv4Entry", oldK)
	}
	e.Prefix = &newK

	t.Ipv4Entry[newK] = e
	delete(t.Ipv4Entry, oldK)
	return nil
}

// GetOrCreateIpv4EntryMap returns the list (map) from NetworkInstance_Afts.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Afts) GetOrCreateIpv4EntryMap() map[string]*NetworkInstance_Afts_Ipv4Entry {
	if t.Ipv4Entry == nil {
		t.Ipv4Entry = make(map[string]*NetworkInstance_Afts_Ipv4Entry)
	}
	return t.Ipv4Entry
}

// GetOrCreateIpv4Entry retrieves the value with the specified keys from
// the receiver NetworkInstance_Afts. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Afts) GetOrCreateIpv4Entry(Prefix string) *NetworkInstance_Afts_Ipv4Entry {

	key := Prefix

	if v, ok := t.Ipv4Entry[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewIpv4Entry(Prefix)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateIpv4Entry got unexpected error: %v", err))
	}
	return v
}

// GetIpv4Entry retrieves the value with the specified key from
// the Ipv4Entry map field of NetworkInstance_Afts. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Afts) GetIpv4Entry(Prefix string) *NetworkInstance_Afts_Ipv4Entry {

	if t == nil {
		return nil
	}

	key := Prefix

	if lm, ok := t.Ipv4Entry[key]; ok {
		return lm
	}
	return nil
}

// AppendIpv4Entry appends the supplied NetworkInstance_Afts_Ipv4Entry struct to the
// list Ipv4Entry of NetworkInstance_Afts. If the key value(s) specified in
// the supplied NetworkInstance_Afts_Ipv4Entry already exist in the list, an error is
// returned.
func (t *NetworkInstance_Afts) AppendIpv4Entry(v *NetworkInstance_Afts_Ipv4Entry) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key received for Prefix")
	}

	key := *v.Prefix

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Ipv4Entry == nil {
		t.Ipv4Entry = make(map[string]*NetworkInstance_Afts_Ipv4Entry)
	}

	if _, ok := t.Ipv4Entry[key]; ok {
		return fmt.Errorf("duplicate key for list Ipv4Entry %v", key)
	}

	t.Ipv4Entry[key] = v
	return nil
}

// NewIpv6Entry creates a new entry in the Ipv6Entry list of the
// NetworkInstance_Afts struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Afts) NewIpv6Entry(Prefix string) (*NetworkInstance_Afts_Ipv6Entry, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Ipv6Entry == nil {
		t.Ipv6Entry = make(map[string]*NetworkInstance_Afts_Ipv6Entry)
	}

	key := Prefix

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Ipv6Entry[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Ipv6Entry", key)
	}

	t.Ipv6Entry[key] = &NetworkInstance_Afts_Ipv6Entry{
		Prefix: &Prefix,
	}

	return t.Ipv6Entry[key], nil
}

// RenameIpv6Entry renames an entry in the list Ipv6Entry within
// the NetworkInstance_Afts struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Afts) RenameIpv6Entry(oldK, newK string) error {
	if _, ok := t.Ipv6Entry[newK]; ok {
		return fmt.Errorf("key %v already exists in Ipv6Entry", newK)
	}

	e, ok := t.Ipv6Entry[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Ipv6Entry", oldK)
	}
	e.Prefix = &newK

	t.Ipv6Entry[newK] = e
	delete(t.Ipv6Entry, oldK)
	return nil
}

// GetOrCreateIpv6EntryMap returns the list (map) from NetworkInstance_Afts.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Afts) GetOrCreateIpv6EntryMap() map[string]*NetworkInstance_Afts_Ipv6Entry {
	if t.Ipv6Entry == nil {
		t.Ipv6Entry = make(map[string]*NetworkInstance_Afts_Ipv6Entry)
	}
	return t.Ipv6Entry
}

// GetOrCreateIpv6Entry retrieves the value with the specified keys from
// the receiver NetworkInstance_Afts. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Afts) GetOrCreateIpv6Entry(Prefix string) *NetworkInstance_Afts_Ipv6Entry {

	key := Prefix

	if v, ok := t.Ipv6Entry[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewIpv6Entry(Prefix)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateIpv6Entry got unexpected error: %v", err))
	}
	return v
}

// GetIpv6Entry retrieves the value with the specified key from
// the Ipv6Entry map field of NetworkInstance_Afts. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Afts) GetIpv6Entry(Prefix string) *NetworkInstance_Afts_Ipv6Entry {

	if t == nil {
		return nil
	}

	key := Prefix

	if lm, ok := t.Ipv6Entry[key]; ok {
		return lm
	}
	return nil
}

// AppendIpv6Entry appends the supplied NetworkInstance_Afts_Ipv6Entry struct to the
// list Ipv6Entry of NetworkInstance_Afts. If the key value(s) specified in
// the supplied NetworkInstance_Afts_Ipv6Entry already exist in the list, an error is
// returned.
func (t *NetworkInstance_Afts) AppendIpv6Entry(v *NetworkInstance_Afts_Ipv6Entry) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key received for Prefix")
	}

	key := *v.Prefix

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Ipv6Entry == nil {
		t.Ipv6Entry = make(map[string]*NetworkInstance_Afts_Ipv6Entry)
	}

	if _, ok := t.Ipv6Entry[key]; ok {
		return fmt.Errorf("duplicate key for list Ipv6Entry %v", key)
	}

	t.Ipv6Entry[key] = v
	return nil
}

// NewLabelEntry creates a new entry in the LabelEntry list of the
// NetworkInstance_Afts struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Afts) NewLabelEntry(Label NetworkInstance_Afts_LabelEntry_Label_Union) (*NetworkInstance_Afts_LabelEntry, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.LabelEntry == nil {
		t.LabelEntry = make(map[NetworkInstance_Afts_LabelEntry_Label_Union]*NetworkInstance_Afts_LabelEntry)
	}

	key := Label

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.LabelEntry[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list LabelEntry", key)
	}

	t.LabelEntry[key] = &NetworkInstance_Afts_LabelEntry{
		Label: Label,
	}

	return t.LabelEntry[key], nil
}

// RenameLabelEntry renames an entry in the list LabelEntry within
// the NetworkInstance_Afts struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Afts) RenameLabelEntry(oldK, newK NetworkInstance_Afts_LabelEntry_Label_Union) error {
	if _, ok := t.LabelEntry[newK]; ok {
		return fmt.Errorf("key %v already exists in LabelEntry", newK)
	}

	e, ok := t.LabelEntry[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in LabelEntry", oldK)
	}
	e.Label = newK

	t.LabelEntry[newK] = e
	delete(t.LabelEntry, oldK)
	return nil
}

// GetOrCreateLabelEntryMap returns the list (map) from NetworkInstance_Afts.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Afts) GetOrCreateLabelEntryMap() map[NetworkInstance_Afts_LabelEntry_Label_Union]*NetworkInstance_Afts_LabelEntry {
	if t.LabelEntry == nil {
		t.LabelEntry = make(map[NetworkInstance_Afts_LabelEntry_Label_Union]*NetworkInstance_Afts_LabelEntry)
	}
	return t.LabelEntry
}

// GetOrCreateLabelEntry retrieves the value with the specified keys from
// the receiver NetworkInstance_Afts. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Afts) GetOrCreateLabelEntry(Label NetworkInstance_Afts_LabelEntry_Label_Union) *NetworkInstance_Afts_LabelEntry {

	key := Label

	if v, ok := t.LabelEntry[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewLabelEntry(Label)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateLabelEntry got unexpected error: %v", err))
	}
	return v
}

// GetLabelEntry retrieves the value with the specified key from
// the LabelEntry map field of NetworkInstance_Afts. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Afts) GetLabelEntry(Label NetworkInstance_Afts_LabelEntry_Label_Union) *NetworkInstance_Afts_LabelEntry {

	if t == nil {
		return nil
	}

	key := Label

	if lm, ok := t.LabelEntry[key]; ok {
		return lm
	}
	return nil
}

// AppendLabelEntry appends the supplied NetworkInstance_Afts_LabelEntry struct to the
// list LabelEntry of NetworkInstance_Afts. If the key value(s) specified in
// the supplied NetworkInstance_Afts_LabelEntry already exist in the list, an error is
// returned.
func (t *NetworkInstance_Afts) AppendLabelEntry(v *NetworkInstance_Afts_LabelEntry) error {
	key := v.Label

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.LabelEntry == nil {
		t.LabelEntry = make(map[NetworkInstance_Afts_LabelEntry_Label_Union]*NetworkInstance_Afts_LabelEntry)
	}

	if _, ok := t.LabelEntry[key]; ok {
		return fmt.Errorf("duplicate key for list LabelEntry %v", key)
	}

	t.LabelEntry[key] = v
	return nil
}

// NewMacEntry creates a new entry in the MacEntry list of the
// NetworkInstance_Afts struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Afts) NewMacEntry(MacAddress string) (*NetworkInstance_Afts_MacEntry, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.MacEntry == nil {
		t.MacEntry = make(map[string]*NetworkInstance_Afts_MacEntry)
	}

	key := MacAddress

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.MacEntry[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list MacEntry", key)
	}

	t.MacEntry[key] = &NetworkInstance_Afts_MacEntry{
		MacAddress: &MacAddress,
	}

	return t.MacEntry[key], nil
}

// RenameMacEntry renames an entry in the list MacEntry within
// the NetworkInstance_Afts struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Afts) RenameMacEntry(oldK, newK string) error {
	if _, ok := t.MacEntry[newK]; ok {
		return fmt.Errorf("key %v already exists in MacEntry", newK)
	}

	e, ok := t.MacEntry[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in MacEntry", oldK)
	}
	e.MacAddress = &newK

	t.MacEntry[newK] = e
	delete(t.MacEntry, oldK)
	return nil
}

// GetOrCreateMacEntryMap returns the list (map) from NetworkInstance_Afts.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Afts) GetOrCreateMacEntryMap() map[string]*NetworkInstance_Afts_MacEntry {
	if t.MacEntry == nil {
		t.MacEntry = make(map[string]*NetworkInstance_Afts_MacEntry)
	}
	return t.MacEntry
}

// GetOrCreateMacEntry retrieves the value with the specified keys from
// the receiver NetworkInstance_Afts. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Afts) GetOrCreateMacEntry(MacAddress string) *NetworkInstance_Afts_MacEntry {

	key := MacAddress

	if v, ok := t.MacEntry[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewMacEntry(MacAddress)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateMacEntry got unexpected error: %v", err))
	}
	return v
}

// GetMacEntry retrieves the value with the specified key from
// the MacEntry map field of NetworkInstance_Afts. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Afts) GetMacEntry(MacAddress string) *NetworkInstance_Afts_MacEntry {

	if t == nil {
		return nil
	}

	key := MacAddress

	if lm, ok := t.MacEntry[key]; ok {
		return lm
	}
	return nil
}

// AppendMacEntry appends the supplied NetworkInstance_Afts_MacEntry struct to the
// list MacEntry of NetworkInstance_Afts. If the key value(s) specified in
// the supplied NetworkInstance_Afts_MacEntry already exist in the list, an error is
// returned.
func (t *NetworkInstance_Afts) AppendMacEntry(v *NetworkInstance_Afts_MacEntry) error {
	if v.MacAddress == nil {
		return fmt.Errorf("invalid nil key received for MacAddress")
	}

	key := *v.MacAddress

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.MacEntry == nil {
		t.MacEntry = make(map[string]*NetworkInstance_Afts_MacEntry)
	}

	if _, ok := t.MacEntry[key]; ok {
		return fmt.Errorf("duplicate key for list MacEntry %v", key)
	}

	t.MacEntry[key] = v
	return nil
}

// NewNextHop creates a new entry in the NextHop list of the
// NetworkInstance_Afts struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Afts) NewNextHop(Index uint64) (*NetworkInstance_Afts_NextHop, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Afts_NextHop)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.NextHop[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list NextHop", key)
	}

	t.NextHop[key] = &NetworkInstance_Afts_NextHop{
		Index: &Index,
	}

	return t.NextHop[key], nil
}

// RenameNextHop renames an entry in the list NextHop within
// the NetworkInstance_Afts struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Afts) RenameNextHop(oldK, newK uint64) error {
	if _, ok := t.NextHop[newK]; ok {
		return fmt.Errorf("key %v already exists in NextHop", newK)
	}

	e, ok := t.NextHop[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in NextHop", oldK)
	}
	e.Index = &newK

	t.NextHop[newK] = e
	delete(t.NextHop, oldK)
	return nil
}

// GetOrCreateNextHopMap returns the list (map) from NetworkInstance_Afts.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Afts) GetOrCreateNextHopMap() map[uint64]*NetworkInstance_Afts_NextHop {
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Afts_NextHop)
	}
	return t.NextHop
}

// GetOrCreateNextHop retrieves the value with the specified keys from
// the receiver NetworkInstance_Afts. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Afts) GetOrCreateNextHop(Index uint64) *NetworkInstance_Afts_NextHop {

	key := Index

	if v, ok := t.NextHop[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNextHop(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNextHop got unexpected error: %v", err))
	}
	return v
}

// GetNextHop retrieves the value with the specified key from
// the NextHop map field of NetworkInstance_Afts. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Afts) GetNextHop(Index uint64) *NetworkInstance_Afts_NextHop {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.NextHop[key]; ok {
		return lm
	}
	return nil
}

// AppendNextHop appends the supplied NetworkInstance_Afts_NextHop struct to the
// list NextHop of NetworkInstance_Afts. If the key value(s) specified in
// the supplied NetworkInstance_Afts_NextHop already exist in the list, an error is
// returned.
func (t *NetworkInstance_Afts) AppendNextHop(v *NetworkInstance_Afts_NextHop) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Afts_NextHop)
	}

	if _, ok := t.NextHop[key]; ok {
		return fmt.Errorf("duplicate key for list NextHop %v", key)
	}

	t.NextHop[key] = v
	return nil
}

// NewNextHopGroup creates a new entry in the NextHopGroup list of the
// NetworkInstance_Afts struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Afts) NewNextHopGroup(Id uint64) (*NetworkInstance_Afts_NextHopGroup, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHopGroup == nil {
		t.NextHopGroup = make(map[uint64]*NetworkInstance_Afts_NextHopGroup)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.NextHopGroup[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list NextHopGroup", key)
	}

	t.NextHopGroup[key] = &NetworkInstance_Afts_NextHopGroup{
		Id: &Id,
	}

	return t.NextHopGroup[key], nil
}

// RenameNextHopGroup renames an entry in the list NextHopGroup within
// the NetworkInstance_Afts struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Afts) RenameNextHopGroup(oldK, newK uint64) error {
	if _, ok := t.NextHopGroup[newK]; ok {
		return fmt.Errorf("key %v already exists in NextHopGroup", newK)
	}

	e, ok := t.NextHopGroup[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in NextHopGroup", oldK)
	}
	e.Id = &newK

	t.NextHopGroup[newK] = e
	delete(t.NextHopGroup, oldK)
	return nil
}

// GetOrCreateNextHopGroupMap returns the list (map) from NetworkInstance_Afts.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Afts) GetOrCreateNextHopGroupMap() map[uint64]*NetworkInstance_Afts_NextHopGroup {
	if t.NextHopGroup == nil {
		t.NextHopGroup = make(map[uint64]*NetworkInstance_Afts_NextHopGroup)
	}
	return t.NextHopGroup
}

// GetOrCreateNextHopGroup retrieves the value with the specified keys from
// the receiver NetworkInstance_Afts. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Afts) GetOrCreateNextHopGroup(Id uint64) *NetworkInstance_Afts_NextHopGroup {

	key := Id

	if v, ok := t.NextHopGroup[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNextHopGroup(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNextHopGroup got unexpected error: %v", err))
	}
	return v
}

// GetNextHopGroup retrieves the value with the specified key from
// the NextHopGroup map field of NetworkInstance_Afts. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Afts) GetNextHopGroup(Id uint64) *NetworkInstance_Afts_NextHopGroup {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.NextHopGroup[key]; ok {
		return lm
	}
	return nil
}

// AppendNextHopGroup appends the supplied NetworkInstance_Afts_NextHopGroup struct to the
// list NextHopGroup of NetworkInstance_Afts. If the key value(s) specified in
// the supplied NetworkInstance_Afts_NextHopGroup already exist in the list, an error is
// returned.
func (t *NetworkInstance_Afts) AppendNextHopGroup(v *NetworkInstance_Afts_NextHopGroup) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHopGroup == nil {
		t.NextHopGroup = make(map[uint64]*NetworkInstance_Afts_NextHopGroup)
	}

	if _, ok := t.NextHopGroup[key]; ok {
		return fmt.Errorf("duplicate key for list NextHopGroup %v", key)
	}

	t.NextHopGroup[key] = v
	return nil
}

// NewPolicyForwardingEntry creates a new entry in the PolicyForwardingEntry list of the
// NetworkInstance_Afts struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Afts) NewPolicyForwardingEntry(Index uint64) (*NetworkInstance_Afts_PolicyForwardingEntry, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PolicyForwardingEntry == nil {
		t.PolicyForwardingEntry = make(map[uint64]*NetworkInstance_Afts_PolicyForwardingEntry)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.PolicyForwardingEntry[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list PolicyForwardingEntry", key)
	}

	t.PolicyForwardingEntry[key] = &NetworkInstance_Afts_PolicyForwardingEntry{
		Index: &Index,
	}

	return t.PolicyForwardingEntry[key], nil
}

// RenamePolicyForwardingEntry renames an entry in the list PolicyForwardingEntry within
// the NetworkInstance_Afts struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Afts) RenamePolicyForwardingEntry(oldK, newK uint64) error {
	if _, ok := t.PolicyForwardingEntry[newK]; ok {
		return fmt.Errorf("key %v already exists in PolicyForwardingEntry", newK)
	}

	e, ok := t.PolicyForwardingEntry[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in PolicyForwardingEntry", oldK)
	}
	e.Index = &newK

	t.PolicyForwardingEntry[newK] = e
	delete(t.PolicyForwardingEntry, oldK)
	return nil
}

// GetOrCreatePolicyForwardingEntryMap returns the list (map) from NetworkInstance_Afts.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Afts) GetOrCreatePolicyForwardingEntryMap() map[uint64]*NetworkInstance_Afts_PolicyForwardingEntry {
	if t.PolicyForwardingEntry == nil {
		t.PolicyForwardingEntry = make(map[uint64]*NetworkInstance_Afts_PolicyForwardingEntry)
	}
	return t.PolicyForwardingEntry
}

// GetOrCreatePolicyForwardingEntry retrieves the value with the specified keys from
// the receiver NetworkInstance_Afts. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Afts) GetOrCreatePolicyForwardingEntry(Index uint64) *NetworkInstance_Afts_PolicyForwardingEntry {

	key := Index

	if v, ok := t.PolicyForwardingEntry[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPolicyForwardingEntry(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePolicyForwardingEntry got unexpected error: %v", err))
	}
	return v
}

// GetPolicyForwardingEntry retrieves the value with the specified key from
// the PolicyForwardingEntry map field of NetworkInstance_Afts. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Afts) GetPolicyForwardingEntry(Index uint64) *NetworkInstance_Afts_PolicyForwardingEntry {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.PolicyForwardingEntry[key]; ok {
		return lm
	}
	return nil
}

// AppendPolicyForwardingEntry appends the supplied NetworkInstance_Afts_PolicyForwardingEntry struct to the
// list PolicyForwardingEntry of NetworkInstance_Afts. If the key value(s) specified in
// the supplied NetworkInstance_Afts_PolicyForwardingEntry already exist in the list, an error is
// returned.
func (t *NetworkInstance_Afts) AppendPolicyForwardingEntry(v *NetworkInstance_Afts_PolicyForwardingEntry) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PolicyForwardingEntry == nil {
		t.PolicyForwardingEntry = make(map[uint64]*NetworkInstance_Afts_PolicyForwardingEntry)
	}

	if _, ok := t.PolicyForwardingEntry[key]; ok {
		return fmt.Errorf("duplicate key for list PolicyForwardingEntry %v", key)
	}

	t.PolicyForwardingEntry[key] = v
	return nil
}

// GetOrCreateStateSynced retrieves the value of the StateSynced field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Afts) GetOrCreateStateSynced() *NetworkInstance_Afts_StateSynced {
	if t.StateSynced != nil {
		return t.StateSynced
	}
	t.StateSynced = &NetworkInstance_Afts_StateSynced{}
	return t.StateSynced
}

// GetStateSynced returns the value of the StateSynced struct pointer
// from NetworkInstance_Afts. If the receiver or the field StateSynced is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Afts) GetStateSynced() *NetworkInstance_Afts_StateSynced {
	if t != nil && t.StateSynced != nil {
		return t.StateSynced
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.StateSynced.PopulateDefaults()
	for _, e := range t.Ipv4Entry {
		e.PopulateDefaults()
	}
	for _, e := range t.Ipv6Entry {
		e.PopulateDefaults()
	}
	for _, e := range t.LabelEntry {
		e.PopulateDefaults()
	}
	for _, e := range t.MacEntry {
		e.PopulateDefaults()
	}
	for _, e := range t.NextHop {
		e.PopulateDefaults()
	}
	for _, e := range t.NextHopGroup {
		e.PopulateDefaults()
	}
	for _, e := range t.PolicyForwardingEntry {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts.
func (*NetworkInstance_Afts) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_Ipv4Entry represents the /openconfig-network-instance/network-instances/network-instance/afts/ipv4-unicast/ipv4-entry YANG schema element.
type NetworkInstance_Afts_Ipv4Entry struct {
	ΛMetadata                    []ygot.Annotation                        `path:"@" ygotAnnotation:"true"`
	Counters                     *NetworkInstance_Afts_Ipv4Entry_Counters `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters                    []ygot.Annotation                        `path:"state/@counters" ygotAnnotation:"true"`
	DecapsulateHeader            E_AftTypes_EncapsulationHeaderType       `path:"state/decapsulate-header" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDecapsulateHeader           []ygot.Annotation                        `path:"state/@decapsulate-header" ygotAnnotation:"true"`
	EntryMetadata                Binary                                   `path:"state/entry-metadata" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEntryMetadata               []ygot.Annotation                        `path:"state/@entry-metadata" ygotAnnotation:"true"`
	NextHopGroup                 *uint64                                  `path:"state/next-hop-group" module:"openconfig-network-instance/openconfig-aft-network-instance"`
	ΛNextHopGroup                []ygot.Annotation                        `path:"state/@next-hop-group" ygotAnnotation:"true"`
	NextHopGroupNetworkInstance  *string                                  `path:"state/next-hop-group-network-instance" module:"openconfig-network-instance/openconfig-aft-network-instance"`
	ΛNextHopGroupNetworkInstance []ygot.Annotation                        `path:"state/@next-hop-group-network-instance" ygotAnnotation:"true"`
	OriginNetworkInstance        *string                                  `path:"state/origin-network-instance" module:"openconfig-network-instance/openconfig-aft-network-instance"`
	ΛOriginNetworkInstance       []ygot.Annotation                        `path:"state/@origin-network-instance" ygotAnnotation:"true"`
	OriginProtocol               E_PolicyTypes_INSTALL_PROTOCOL_TYPE      `path:"state/origin-protocol" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOriginProtocol              []ygot.Annotation                        `path:"state/@origin-protocol" ygotAnnotation:"true"`
	Prefix                       *string                                  `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix                      []ygot.Annotation                        `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_Ipv4Entry implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_Ipv4Entry) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Afts_Ipv4Entry) GetOrCreateCounters() *NetworkInstance_Afts_Ipv4Entry_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_Afts_Ipv4Entry_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_Afts_Ipv4Entry. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Afts_Ipv4Entry) GetCounters() *NetworkInstance_Afts_Ipv4Entry_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetDecapsulateHeader retrieves the value of the leaf DecapsulateHeader from the NetworkInstance_Afts_Ipv4Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DecapsulateHeader is set, it can
// safely use t.GetDecapsulateHeader() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DecapsulateHeader == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv4Entry) GetDecapsulateHeader() E_AftTypes_EncapsulationHeaderType {
	if t == nil || t.DecapsulateHeader == 0 {
		return 0
	}
	return t.DecapsulateHeader
}

// GetEntryMetadata retrieves the value of the leaf EntryMetadata from the NetworkInstance_Afts_Ipv4Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EntryMetadata is set, it can
// safely use t.GetEntryMetadata() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EntryMetadata == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv4Entry) GetEntryMetadata() Binary {
	if t == nil || t.EntryMetadata == nil {
		return nil
	}
	return t.EntryMetadata
}

// GetNextHopGroup retrieves the value of the leaf NextHopGroup from the NetworkInstance_Afts_Ipv4Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHopGroup is set, it can
// safely use t.GetNextHopGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHopGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv4Entry) GetNextHopGroup() uint64 {
	if t == nil || t.NextHopGroup == nil {
		return 0
	}
	return *t.NextHopGroup
}

// GetNextHopGroupNetworkInstance retrieves the value of the leaf NextHopGroupNetworkInstance from the NetworkInstance_Afts_Ipv4Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHopGroupNetworkInstance is set, it can
// safely use t.GetNextHopGroupNetworkInstance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHopGroupNetworkInstance == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv4Entry) GetNextHopGroupNetworkInstance() string {
	if t == nil || t.NextHopGroupNetworkInstance == nil {
		return ""
	}
	return *t.NextHopGroupNetworkInstance
}

// GetOriginNetworkInstance retrieves the value of the leaf OriginNetworkInstance from the NetworkInstance_Afts_Ipv4Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OriginNetworkInstance is set, it can
// safely use t.GetOriginNetworkInstance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OriginNetworkInstance == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv4Entry) GetOriginNetworkInstance() string {
	if t == nil || t.OriginNetworkInstance == nil {
		return ""
	}
	return *t.OriginNetworkInstance
}

// GetOriginProtocol retrieves the value of the leaf OriginProtocol from the NetworkInstance_Afts_Ipv4Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OriginProtocol is set, it can
// safely use t.GetOriginProtocol() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OriginProtocol == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv4Entry) GetOriginProtocol() E_PolicyTypes_INSTALL_PROTOCOL_TYPE {
	if t == nil || t.OriginProtocol == 0 {
		return 0
	}
	return t.OriginProtocol
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Afts_Ipv4Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv4Entry) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_Ipv4Entry
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_Ipv4Entry) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Counters.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Afts_Ipv4Entry struct, which is a YANG list entry.
func (t *NetworkInstance_Afts_Ipv4Entry) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"prefix": *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_Ipv4Entry) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_Ipv4Entry"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_Ipv4Entry) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_Ipv4Entry) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_Ipv4Entry.
func (*NetworkInstance_Afts_Ipv4Entry) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_Ipv4Entry_Counters represents the /openconfig-network-instance/network-instances/network-instance/afts/ipv4-unicast/ipv4-entry/state/counters YANG schema element.
type NetworkInstance_Afts_Ipv4Entry_Counters struct {
	ΛMetadata         []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	OctetsForwarded   *uint64           `path:"octets-forwarded" module:"openconfig-network-instance"`
	ΛOctetsForwarded  []ygot.Annotation `path:"@octets-forwarded" ygotAnnotation:"true"`
	PacketsForwarded  *uint64           `path:"packets-forwarded" module:"openconfig-network-instance"`
	ΛPacketsForwarded []ygot.Annotation `path:"@packets-forwarded" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_Ipv4Entry_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_Ipv4Entry_Counters) IsYANGGoStruct() {}

// GetOctetsForwarded retrieves the value of the leaf OctetsForwarded from the NetworkInstance_Afts_Ipv4Entry_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OctetsForwarded is set, it can
// safely use t.GetOctetsForwarded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OctetsForwarded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv4Entry_Counters) GetOctetsForwarded() uint64 {
	if t == nil || t.OctetsForwarded == nil {
		return 0
	}
	return *t.OctetsForwarded
}

// GetPacketsForwarded retrieves the value of the leaf PacketsForwarded from the NetworkInstance_Afts_Ipv4Entry_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PacketsForwarded is set, it can
// safely use t.GetPacketsForwarded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PacketsForwarded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv4Entry_Counters) GetPacketsForwarded() uint64 {
	if t == nil || t.PacketsForwarded == nil {
		return 0
	}
	return *t.PacketsForwarded
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_Ipv4Entry_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_Ipv4Entry_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_Ipv4Entry_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_Ipv4Entry_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_Ipv4Entry_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_Ipv4Entry_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_Ipv4Entry_Counters.
func (*NetworkInstance_Afts_Ipv4Entry_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_Ipv6Entry represents the /openconfig-network-instance/network-instances/network-instance/afts/ipv6-unicast/ipv6-entry YANG schema element.
type NetworkInstance_Afts_Ipv6Entry struct {
	ΛMetadata                    []ygot.Annotation                        `path:"@" ygotAnnotation:"true"`
	Counters                     *NetworkInstance_Afts_Ipv6Entry_Counters `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters                    []ygot.Annotation                        `path:"state/@counters" ygotAnnotation:"true"`
	DecapsulateHeader            E_AftTypes_EncapsulationHeaderType       `path:"state/decapsulate-header" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDecapsulateHeader           []ygot.Annotation                        `path:"state/@decapsulate-header" ygotAnnotation:"true"`
	EntryMetadata                Binary                                   `path:"state/entry-metadata" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEntryMetadata               []ygot.Annotation                        `path:"state/@entry-metadata" ygotAnnotation:"true"`
	NextHopGroup                 *uint64                                  `path:"state/next-hop-group" module:"openconfig-network-instance/openconfig-aft-network-instance"`
	ΛNextHopGroup                []ygot.Annotation                        `path:"state/@next-hop-group" ygotAnnotation:"true"`
	NextHopGroupNetworkInstance  *string                                  `path:"state/next-hop-group-network-instance" module:"openconfig-network-instance/openconfig-aft-network-instance"`
	ΛNextHopGroupNetworkInstance []ygot.Annotation                        `path:"state/@next-hop-group-network-instance" ygotAnnotation:"true"`
	OriginNetworkInstance        *string                                  `path:"state/origin-network-instance" module:"openconfig-network-instance/openconfig-aft-network-instance"`
	ΛOriginNetworkInstance       []ygot.Annotation                        `path:"state/@origin-network-instance" ygotAnnotation:"true"`
	OriginProtocol               E_PolicyTypes_INSTALL_PROTOCOL_TYPE      `path:"state/origin-protocol" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOriginProtocol              []ygot.Annotation                        `path:"state/@origin-protocol" ygotAnnotation:"true"`
	Prefix                       *string                                  `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix                      []ygot.Annotation                        `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_Ipv6Entry implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_Ipv6Entry) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Afts_Ipv6Entry) GetOrCreateCounters() *NetworkInstance_Afts_Ipv6Entry_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_Afts_Ipv6Entry_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_Afts_Ipv6Entry. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Afts_Ipv6Entry) GetCounters() *NetworkInstance_Afts_Ipv6Entry_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetDecapsulateHeader retrieves the value of the leaf DecapsulateHeader from the NetworkInstance_Afts_Ipv6Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DecapsulateHeader is set, it can
// safely use t.GetDecapsulateHeader() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DecapsulateHeader == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv6Entry) GetDecapsulateHeader() E_AftTypes_EncapsulationHeaderType {
	if t == nil || t.DecapsulateHeader == 0 {
		return 0
	}
	return t.DecapsulateHeader
}

// GetEntryMetadata retrieves the value of the leaf EntryMetadata from the NetworkInstance_Afts_Ipv6Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EntryMetadata is set, it can
// safely use t.GetEntryMetadata() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EntryMetadata == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv6Entry) GetEntryMetadata() Binary {
	if t == nil || t.EntryMetadata == nil {
		return nil
	}
	return t.EntryMetadata
}

// GetNextHopGroup retrieves the value of the leaf NextHopGroup from the NetworkInstance_Afts_Ipv6Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHopGroup is set, it can
// safely use t.GetNextHopGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHopGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv6Entry) GetNextHopGroup() uint64 {
	if t == nil || t.NextHopGroup == nil {
		return 0
	}
	return *t.NextHopGroup
}

// GetNextHopGroupNetworkInstance retrieves the value of the leaf NextHopGroupNetworkInstance from the NetworkInstance_Afts_Ipv6Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHopGroupNetworkInstance is set, it can
// safely use t.GetNextHopGroupNetworkInstance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHopGroupNetworkInstance == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv6Entry) GetNextHopGroupNetworkInstance() string {
	if t == nil || t.NextHopGroupNetworkInstance == nil {
		return ""
	}
	return *t.NextHopGroupNetworkInstance
}

// GetOriginNetworkInstance retrieves the value of the leaf OriginNetworkInstance from the NetworkInstance_Afts_Ipv6Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OriginNetworkInstance is set, it can
// safely use t.GetOriginNetworkInstance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OriginNetworkInstance == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv6Entry) GetOriginNetworkInstance() string {
	if t == nil || t.OriginNetworkInstance == nil {
		return ""
	}
	return *t.OriginNetworkInstance
}

// GetOriginProtocol retrieves the value of the leaf OriginProtocol from the NetworkInstance_Afts_Ipv6Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OriginProtocol is set, it can
// safely use t.GetOriginProtocol() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OriginProtocol == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv6Entry) GetOriginProtocol() E_PolicyTypes_INSTALL_PROTOCOL_TYPE {
	if t == nil || t.OriginProtocol == 0 {
		return 0
	}
	return t.OriginProtocol
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Afts_Ipv6Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv6Entry) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_Ipv6Entry
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_Ipv6Entry) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Counters.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Afts_Ipv6Entry struct, which is a YANG list entry.
func (t *NetworkInstance_Afts_Ipv6Entry) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"prefix": *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_Ipv6Entry) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_Ipv6Entry"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_Ipv6Entry) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_Ipv6Entry) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_Ipv6Entry.
func (*NetworkInstance_Afts_Ipv6Entry) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_Ipv6Entry_Counters represents the /openconfig-network-instance/network-instances/network-instance/afts/ipv6-unicast/ipv6-entry/state/counters YANG schema element.
type NetworkInstance_Afts_Ipv6Entry_Counters struct {
	ΛMetadata         []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	OctetsForwarded   *uint64           `path:"octets-forwarded" module:"openconfig-network-instance"`
	ΛOctetsForwarded  []ygot.Annotation `path:"@octets-forwarded" ygotAnnotation:"true"`
	PacketsForwarded  *uint64           `path:"packets-forwarded" module:"openconfig-network-instance"`
	ΛPacketsForwarded []ygot.Annotation `path:"@packets-forwarded" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_Ipv6Entry_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_Ipv6Entry_Counters) IsYANGGoStruct() {}

// GetOctetsForwarded retrieves the value of the leaf OctetsForwarded from the NetworkInstance_Afts_Ipv6Entry_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OctetsForwarded is set, it can
// safely use t.GetOctetsForwarded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OctetsForwarded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv6Entry_Counters) GetOctetsForwarded() uint64 {
	if t == nil || t.OctetsForwarded == nil {
		return 0
	}
	return *t.OctetsForwarded
}

// GetPacketsForwarded retrieves the value of the leaf PacketsForwarded from the NetworkInstance_Afts_Ipv6Entry_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PacketsForwarded is set, it can
// safely use t.GetPacketsForwarded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PacketsForwarded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_Ipv6Entry_Counters) GetPacketsForwarded() uint64 {
	if t == nil || t.PacketsForwarded == nil {
		return 0
	}
	return *t.PacketsForwarded
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_Ipv6Entry_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_Ipv6Entry_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_Ipv6Entry_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_Ipv6Entry_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_Ipv6Entry_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_Ipv6Entry_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_Ipv6Entry_Counters.
func (*NetworkInstance_Afts_Ipv6Entry_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_LabelEntry represents the /openconfig-network-instance/network-instances/network-instance/afts/mpls/label-entry YANG schema element.
type NetworkInstance_Afts_LabelEntry struct {
	ΛMetadata                    []ygot.Annotation                                            `path:"@" ygotAnnotation:"true"`
	Counters                     *NetworkInstance_Afts_LabelEntry_Counters                    `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters                    []ygot.Annotation                                            `path:"state/@counters" ygotAnnotation:"true"`
	EntryMetadata                Binary                                                       `path:"state/entry-metadata" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEntryMetadata               []ygot.Annotation                                            `path:"state/@entry-metadata" ygotAnnotation:"true"`
	Label                        NetworkInstance_Afts_LabelEntry_Label_Union                  `path:"state/label|label" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛLabel                       []ygot.Annotation                                            `path:"state/@label|@label" ygotAnnotation:"true"`
	NextHopGroup                 *uint64                                                      `path:"state/next-hop-group" module:"openconfig-network-instance/openconfig-aft-network-instance"`
	ΛNextHopGroup                []ygot.Annotation                                            `path:"state/@next-hop-group" ygotAnnotation:"true"`
	NextHopGroupNetworkInstance  *string                                                      `path:"state/next-hop-group-network-instance" module:"openconfig-network-instance/openconfig-aft-network-instance"`
	ΛNextHopGroupNetworkInstance []ygot.Annotation                                            `path:"state/@next-hop-group-network-instance" ygotAnnotation:"true"`
	PoppedMplsLabelStack         []NetworkInstance_Afts_LabelEntry_PoppedMplsLabelStack_Union `path:"state/popped-mpls-label-stack" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPoppedMplsLabelStack        []ygot.Annotation                                            `path:"state/@popped-mpls-label-stack" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_LabelEntry implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_LabelEntry) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Afts_LabelEntry) GetOrCreateCounters() *NetworkInstance_Afts_LabelEntry_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_Afts_LabelEntry_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_Afts_LabelEntry. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Afts_LabelEntry) GetCounters() *NetworkInstance_Afts_LabelEntry_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetEntryMetadata retrieves the value of the leaf EntryMetadata from the NetworkInstance_Afts_LabelEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EntryMetadata is set, it can
// safely use t.GetEntryMetadata() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EntryMetadata == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_LabelEntry) GetEntryMetadata() Binary {
	if t == nil || t.EntryMetadata == nil {
		return nil
	}
	return t.EntryMetadata
}

// GetLabel retrieves the value of the leaf Label from the NetworkInstance_Afts_LabelEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Label is set, it can
// safely use t.GetLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Label == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_LabelEntry) GetLabel() NetworkInstance_Afts_LabelEntry_Label_Union {
	if t == nil || t.Label == nil {
		return nil
	}
	return t.Label
}

// GetNextHopGroup retrieves the value of the leaf NextHopGroup from the NetworkInstance_Afts_LabelEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHopGroup is set, it can
// safely use t.GetNextHopGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHopGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_LabelEntry) GetNextHopGroup() uint64 {
	if t == nil || t.NextHopGroup == nil {
		return 0
	}
	return *t.NextHopGroup
}

// GetNextHopGroupNetworkInstance retrieves the value of the leaf NextHopGroupNetworkInstance from the NetworkInstance_Afts_LabelEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHopGroupNetworkInstance is set, it can
// safely use t.GetNextHopGroupNetworkInstance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHopGroupNetworkInstance == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_LabelEntry) GetNextHopGroupNetworkInstance() string {
	if t == nil || t.NextHopGroupNetworkInstance == nil {
		return ""
	}
	return *t.NextHopGroupNetworkInstance
}

// GetPoppedMplsLabelStack retrieves the value of the leaf PoppedMplsLabelStack from the NetworkInstance_Afts_LabelEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PoppedMplsLabelStack is set, it can
// safely use t.GetPoppedMplsLabelStack() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PoppedMplsLabelStack == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_LabelEntry) GetPoppedMplsLabelStack() []NetworkInstance_Afts_LabelEntry_PoppedMplsLabelStack_Union {
	if t == nil || t.PoppedMplsLabelStack == nil {
		return nil
	}
	return t.PoppedMplsLabelStack
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_LabelEntry
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_LabelEntry) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Counters.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Afts_LabelEntry struct, which is a YANG list entry.
func (t *NetworkInstance_Afts_LabelEntry) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"label": t.Label,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_LabelEntry) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_LabelEntry"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_LabelEntry) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_LabelEntry) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_LabelEntry.
func (*NetworkInstance_Afts_LabelEntry) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_LabelEntry_Label_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/afts/mpls/label-entry/state/label within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Afts_LabelEntry_Label_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Afts_LabelEntry_Label_Union()
}

// Documentation_for_NetworkInstance_Afts_LabelEntry_Label_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Afts_LabelEntry_Label_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Afts_LabelEntry_Label_Union() {}

// Documentation_for_NetworkInstance_Afts_LabelEntry_Label_Union ensures that UnionUint32
// implements the NetworkInstance_Afts_LabelEntry_Label_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Afts_LabelEntry_Label_Union() {}

// To_NetworkInstance_Afts_LabelEntry_Label_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Afts_LabelEntry_Label_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Afts_LabelEntry) To_NetworkInstance_Afts_LabelEntry_Label_Union(i interface{}) (NetworkInstance_Afts_LabelEntry_Label_Union, error) {
	if v, ok := i.(NetworkInstance_Afts_LabelEntry_Label_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Afts_LabelEntry_Label_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Afts_LabelEntry_PoppedMplsLabelStack_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/afts/mpls/label-entry/state/popped-mpls-label-stack within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Afts_LabelEntry_PoppedMplsLabelStack_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Afts_LabelEntry_PoppedMplsLabelStack_Union()
}

// Documentation_for_NetworkInstance_Afts_LabelEntry_PoppedMplsLabelStack_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Afts_LabelEntry_PoppedMplsLabelStack_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Afts_LabelEntry_PoppedMplsLabelStack_Union() {
}

// Documentation_for_NetworkInstance_Afts_LabelEntry_PoppedMplsLabelStack_Union ensures that UnionUint32
// implements the NetworkInstance_Afts_LabelEntry_PoppedMplsLabelStack_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Afts_LabelEntry_PoppedMplsLabelStack_Union() {}

// To_NetworkInstance_Afts_LabelEntry_PoppedMplsLabelStack_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Afts_LabelEntry_PoppedMplsLabelStack_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Afts_LabelEntry) To_NetworkInstance_Afts_LabelEntry_PoppedMplsLabelStack_Union(i interface{}) (NetworkInstance_Afts_LabelEntry_PoppedMplsLabelStack_Union, error) {
	if v, ok := i.(NetworkInstance_Afts_LabelEntry_PoppedMplsLabelStack_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Afts_LabelEntry_PoppedMplsLabelStack_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Afts_LabelEntry_Counters represents the /openconfig-network-instance/network-instances/network-instance/afts/mpls/label-entry/state/counters YANG schema element.
type NetworkInstance_Afts_LabelEntry_Counters struct {
	ΛMetadata         []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	OctetsForwarded   *uint64           `path:"octets-forwarded" module:"openconfig-network-instance"`
	ΛOctetsForwarded  []ygot.Annotation `path:"@octets-forwarded" ygotAnnotation:"true"`
	PacketsForwarded  *uint64           `path:"packets-forwarded" module:"openconfig-network-instance"`
	ΛPacketsForwarded []ygot.Annotation `path:"@packets-forwarded" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_LabelEntry_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_LabelEntry_Counters) IsYANGGoStruct() {}

// GetOctetsForwarded retrieves the value of the leaf OctetsForwarded from the NetworkInstance_Afts_LabelEntry_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OctetsForwarded is set, it can
// safely use t.GetOctetsForwarded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OctetsForwarded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_LabelEntry_Counters) GetOctetsForwarded() uint64 {
	if t == nil || t.OctetsForwarded == nil {
		return 0
	}
	return *t.OctetsForwarded
}

// GetPacketsForwarded retrieves the value of the leaf PacketsForwarded from the NetworkInstance_Afts_LabelEntry_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PacketsForwarded is set, it can
// safely use t.GetPacketsForwarded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PacketsForwarded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_LabelEntry_Counters) GetPacketsForwarded() uint64 {
	if t == nil || t.PacketsForwarded == nil {
		return 0
	}
	return *t.PacketsForwarded
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_LabelEntry_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_LabelEntry_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_LabelEntry_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_LabelEntry_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_LabelEntry_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_LabelEntry_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_LabelEntry_Counters.
func (*NetworkInstance_Afts_LabelEntry_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_MacEntry represents the /openconfig-network-instance/network-instances/network-instance/afts/ethernet/mac-entry YANG schema element.
type NetworkInstance_Afts_MacEntry struct {
	ΛMetadata                    []ygot.Annotation                       `path:"@" ygotAnnotation:"true"`
	Counters                     *NetworkInstance_Afts_MacEntry_Counters `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters                    []ygot.Annotation                       `path:"state/@counters" ygotAnnotation:"true"`
	EntryMetadata                Binary                                  `path:"state/entry-metadata" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEntryMetadata               []ygot.Annotation                       `path:"state/@entry-metadata" ygotAnnotation:"true"`
	MacAddress                   *string                                 `path:"state/mac-address|mac-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛMacAddress                  []ygot.Annotation                       `path:"state/@mac-address|@mac-address" ygotAnnotation:"true"`
	NextHopGroup                 *uint64                                 `path:"state/next-hop-group" module:"openconfig-network-instance/openconfig-aft-network-instance"`
	ΛNextHopGroup                []ygot.Annotation                       `path:"state/@next-hop-group" ygotAnnotation:"true"`
	NextHopGroupNetworkInstance  *string                                 `path:"state/next-hop-group-network-instance" module:"openconfig-network-instance/openconfig-aft-network-instance"`
	ΛNextHopGroupNetworkInstance []ygot.Annotation                       `path:"state/@next-hop-group-network-instance" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_MacEntry implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_MacEntry) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Afts_MacEntry) GetOrCreateCounters() *NetworkInstance_Afts_MacEntry_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_Afts_MacEntry_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_Afts_MacEntry. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Afts_MacEntry) GetCounters() *NetworkInstance_Afts_MacEntry_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetEntryMetadata retrieves the value of the leaf EntryMetadata from the NetworkInstance_Afts_MacEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EntryMetadata is set, it can
// safely use t.GetEntryMetadata() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EntryMetadata == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_MacEntry) GetEntryMetadata() Binary {
	if t == nil || t.EntryMetadata == nil {
		return nil
	}
	return t.EntryMetadata
}

// GetMacAddress retrieves the value of the leaf MacAddress from the NetworkInstance_Afts_MacEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MacAddress is set, it can
// safely use t.GetMacAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MacAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_MacEntry) GetMacAddress() string {
	if t == nil || t.MacAddress == nil {
		return ""
	}
	return *t.MacAddress
}

// GetNextHopGroup retrieves the value of the leaf NextHopGroup from the NetworkInstance_Afts_MacEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHopGroup is set, it can
// safely use t.GetNextHopGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHopGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_MacEntry) GetNextHopGroup() uint64 {
	if t == nil || t.NextHopGroup == nil {
		return 0
	}
	return *t.NextHopGroup
}

// GetNextHopGroupNetworkInstance retrieves the value of the leaf NextHopGroupNetworkInstance from the NetworkInstance_Afts_MacEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHopGroupNetworkInstance is set, it can
// safely use t.GetNextHopGroupNetworkInstance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHopGroupNetworkInstance == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_MacEntry) GetNextHopGroupNetworkInstance() string {
	if t == nil || t.NextHopGroupNetworkInstance == nil {
		return ""
	}
	return *t.NextHopGroupNetworkInstance
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_MacEntry
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_MacEntry) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Counters.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Afts_MacEntry struct, which is a YANG list entry.
func (t *NetworkInstance_Afts_MacEntry) ΛListKeyMap() (map[string]interface{}, error) {
	if t.MacAddress == nil {
		return nil, fmt.Errorf("nil value for key MacAddress")
	}

	return map[string]interface{}{
		"mac-address": *t.MacAddress,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_MacEntry) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_MacEntry"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_MacEntry) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_MacEntry) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_MacEntry.
func (*NetworkInstance_Afts_MacEntry) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_MacEntry_Counters represents the /openconfig-network-instance/network-instances/network-instance/afts/ethernet/mac-entry/state/counters YANG schema element.
type NetworkInstance_Afts_MacEntry_Counters struct {
	ΛMetadata         []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	OctetsForwarded   *uint64           `path:"octets-forwarded" module:"openconfig-network-instance"`
	ΛOctetsForwarded  []ygot.Annotation `path:"@octets-forwarded" ygotAnnotation:"true"`
	PacketsForwarded  *uint64           `path:"packets-forwarded" module:"openconfig-network-instance"`
	ΛPacketsForwarded []ygot.Annotation `path:"@packets-forwarded" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_MacEntry_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_MacEntry_Counters) IsYANGGoStruct() {}

// GetOctetsForwarded retrieves the value of the leaf OctetsForwarded from the NetworkInstance_Afts_MacEntry_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OctetsForwarded is set, it can
// safely use t.GetOctetsForwarded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OctetsForwarded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_MacEntry_Counters) GetOctetsForwarded() uint64 {
	if t == nil || t.OctetsForwarded == nil {
		return 0
	}
	return *t.OctetsForwarded
}

// GetPacketsForwarded retrieves the value of the leaf PacketsForwarded from the NetworkInstance_Afts_MacEntry_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PacketsForwarded is set, it can
// safely use t.GetPacketsForwarded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PacketsForwarded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_MacEntry_Counters) GetPacketsForwarded() uint64 {
	if t == nil || t.PacketsForwarded == nil {
		return 0
	}
	return *t.PacketsForwarded
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_MacEntry_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_MacEntry_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_MacEntry_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_MacEntry_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_MacEntry_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_MacEntry_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_MacEntry_Counters.
func (*NetworkInstance_Afts_MacEntry_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_NextHop represents the /openconfig-network-instance/network-instances/network-instance/afts/next-hops/next-hop YANG schema element.
type NetworkInstance_Afts_NextHop struct {
	ΛMetadata             []ygot.Annotation                                         `path:"@" ygotAnnotation:"true"`
	Counters              *NetworkInstance_Afts_NextHop_Counters                    `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters             []ygot.Annotation                                         `path:"state/@counters" ygotAnnotation:"true"`
	DecapsulateHeader     E_AftTypes_EncapsulationHeaderType                        `path:"state/decapsulate-header" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDecapsulateHeader    []ygot.Annotation                                         `path:"state/@decapsulate-header" ygotAnnotation:"true"`
	EncapsulateHeader     E_AftTypes_EncapsulationHeaderType                        `path:"state/encapsulate-header" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEncapsulateHeader    []ygot.Annotation                                         `path:"state/@encapsulate-header" ygotAnnotation:"true"`
	Index                 *uint64                                                   `path:"state/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex                []ygot.Annotation                                         `path:"state/@index|@index" ygotAnnotation:"true"`
	InterfaceRef          *NetworkInstance_Afts_NextHop_InterfaceRef                `path:"interface-ref" module:"openconfig-network-instance"`
	ΛInterfaceRef         []ygot.Annotation                                         `path:"@interface-ref" ygotAnnotation:"true"`
	IpAddress             *string                                                   `path:"state/ip-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpAddress            []ygot.Annotation                                         `path:"state/@ip-address" ygotAnnotation:"true"`
	IpInIp                *NetworkInstance_Afts_NextHop_IpInIp                      `path:"ip-in-ip" module:"openconfig-network-instance"`
	ΛIpInIp               []ygot.Annotation                                         `path:"@ip-in-ip" ygotAnnotation:"true"`
	LspName               *string                                                   `path:"state/lsp-name" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLspName              []ygot.Annotation                                         `path:"state/@lsp-name" ygotAnnotation:"true"`
	MacAddress            *string                                                   `path:"state/mac-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMacAddress           []ygot.Annotation                                         `path:"state/@mac-address" ygotAnnotation:"true"`
	NetworkInstance       *string                                                   `path:"state/network-instance" module:"openconfig-network-instance/openconfig-aft-network-instance"`
	ΛNetworkInstance      []ygot.Annotation                                         `path:"state/@network-instance" ygotAnnotation:"true"`
	OriginProtocol        E_PolicyTypes_INSTALL_PROTOCOL_TYPE                       `path:"state/origin-protocol" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOriginProtocol       []ygot.Annotation                                         `path:"state/@origin-protocol" ygotAnnotation:"true"`
	PopTopLabel           *bool                                                     `path:"state/pop-top-label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPopTopLabel          []ygot.Annotation                                         `path:"state/@pop-top-label" ygotAnnotation:"true"`
	ProgrammedIndex       *uint64                                                   `path:"state/programmed-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProgrammedIndex      []ygot.Annotation                                         `path:"state/@programmed-index" ygotAnnotation:"true"`
	PushedMplsLabelStack  []NetworkInstance_Afts_NextHop_PushedMplsLabelStack_Union `path:"state/pushed-mpls-label-stack" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPushedMplsLabelStack []ygot.Annotation                                         `path:"state/@pushed-mpls-label-stack" ygotAnnotation:"true"`
	TunnelSrcIpAddress    *string                                                   `path:"state/tunnel-src-ip-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTunnelSrcIpAddress   []ygot.Annotation                                         `path:"state/@tunnel-src-ip-address" ygotAnnotation:"true"`
	VniLabel              *uint32                                                   `path:"state/vni-label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛVniLabel             []ygot.Annotation                                         `path:"state/@vni-label" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_NextHop implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_NextHop) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Afts_NextHop) GetOrCreateCounters() *NetworkInstance_Afts_NextHop_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_Afts_NextHop_Counters{}
	return t.Counters
}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Afts_NextHop) GetOrCreateInterfaceRef() *NetworkInstance_Afts_NextHop_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &NetworkInstance_Afts_NextHop_InterfaceRef{}
	return t.InterfaceRef
}

// GetOrCreateIpInIp retrieves the value of the IpInIp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Afts_NextHop) GetOrCreateIpInIp() *NetworkInstance_Afts_NextHop_IpInIp {
	if t.IpInIp != nil {
		return t.IpInIp
	}
	t.IpInIp = &NetworkInstance_Afts_NextHop_IpInIp{}
	return t.IpInIp
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_Afts_NextHop. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Afts_NextHop) GetCounters() *NetworkInstance_Afts_NextHop_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from NetworkInstance_Afts_NextHop. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Afts_NextHop) GetInterfaceRef() *NetworkInstance_Afts_NextHop_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetIpInIp returns the value of the IpInIp struct pointer
// from NetworkInstance_Afts_NextHop. If the receiver or the field IpInIp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Afts_NextHop) GetIpInIp() *NetworkInstance_Afts_NextHop_IpInIp {
	if t != nil && t.IpInIp != nil {
		return t.IpInIp
	}
	return nil
}

// GetDecapsulateHeader retrieves the value of the leaf DecapsulateHeader from the NetworkInstance_Afts_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DecapsulateHeader is set, it can
// safely use t.GetDecapsulateHeader() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DecapsulateHeader == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop) GetDecapsulateHeader() E_AftTypes_EncapsulationHeaderType {
	if t == nil || t.DecapsulateHeader == 0 {
		return 0
	}
	return t.DecapsulateHeader
}

// GetEncapsulateHeader retrieves the value of the leaf EncapsulateHeader from the NetworkInstance_Afts_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EncapsulateHeader is set, it can
// safely use t.GetEncapsulateHeader() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EncapsulateHeader == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop) GetEncapsulateHeader() E_AftTypes_EncapsulationHeaderType {
	if t == nil || t.EncapsulateHeader == 0 {
		return 0
	}
	return t.EncapsulateHeader
}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_Afts_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop) GetIndex() uint64 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetIpAddress retrieves the value of the leaf IpAddress from the NetworkInstance_Afts_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IpAddress is set, it can
// safely use t.GetIpAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IpAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop) GetIpAddress() string {
	if t == nil || t.IpAddress == nil {
		return ""
	}
	return *t.IpAddress
}

// GetLspName retrieves the value of the leaf LspName from the NetworkInstance_Afts_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LspName is set, it can
// safely use t.GetLspName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LspName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop) GetLspName() string {
	if t == nil || t.LspName == nil {
		return ""
	}
	return *t.LspName
}

// GetMacAddress retrieves the value of the leaf MacAddress from the NetworkInstance_Afts_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MacAddress is set, it can
// safely use t.GetMacAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MacAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop) GetMacAddress() string {
	if t == nil || t.MacAddress == nil {
		return ""
	}
	return *t.MacAddress
}

// GetNetworkInstance retrieves the value of the leaf NetworkInstance from the NetworkInstance_Afts_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NetworkInstance is set, it can
// safely use t.GetNetworkInstance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NetworkInstance == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop) GetNetworkInstance() string {
	if t == nil || t.NetworkInstance == nil {
		return ""
	}
	return *t.NetworkInstance
}

// GetOriginProtocol retrieves the value of the leaf OriginProtocol from the NetworkInstance_Afts_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OriginProtocol is set, it can
// safely use t.GetOriginProtocol() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OriginProtocol == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop) GetOriginProtocol() E_PolicyTypes_INSTALL_PROTOCOL_TYPE {
	if t == nil || t.OriginProtocol == 0 {
		return 0
	}
	return t.OriginProtocol
}

// GetPopTopLabel retrieves the value of the leaf PopTopLabel from the NetworkInstance_Afts_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PopTopLabel is set, it can
// safely use t.GetPopTopLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PopTopLabel == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop) GetPopTopLabel() bool {
	if t == nil || t.PopTopLabel == nil {
		return false
	}
	return *t.PopTopLabel
}

// GetProgrammedIndex retrieves the value of the leaf ProgrammedIndex from the NetworkInstance_Afts_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ProgrammedIndex is set, it can
// safely use t.GetProgrammedIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ProgrammedIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop) GetProgrammedIndex() uint64 {
	if t == nil || t.ProgrammedIndex == nil {
		return 0
	}
	return *t.ProgrammedIndex
}

// GetPushedMplsLabelStack retrieves the value of the leaf PushedMplsLabelStack from the NetworkInstance_Afts_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PushedMplsLabelStack is set, it can
// safely use t.GetPushedMplsLabelStack() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PushedMplsLabelStack == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop) GetPushedMplsLabelStack() []NetworkInstance_Afts_NextHop_PushedMplsLabelStack_Union {
	if t == nil || t.PushedMplsLabelStack == nil {
		return nil
	}
	return t.PushedMplsLabelStack
}

// GetTunnelSrcIpAddress retrieves the value of the leaf TunnelSrcIpAddress from the NetworkInstance_Afts_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TunnelSrcIpAddress is set, it can
// safely use t.GetTunnelSrcIpAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TunnelSrcIpAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop) GetTunnelSrcIpAddress() string {
	if t == nil || t.TunnelSrcIpAddress == nil {
		return ""
	}
	return *t.TunnelSrcIpAddress
}

// GetVniLabel retrieves the value of the leaf VniLabel from the NetworkInstance_Afts_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VniLabel is set, it can
// safely use t.GetVniLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VniLabel == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop) GetVniLabel() uint32 {
	if t == nil || t.VniLabel == nil {
		return 0
	}
	return *t.VniLabel
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_NextHop
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_NextHop) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PopTopLabel == nil {
		var v bool = false
		t.PopTopLabel = &v
	}
	t.Counters.PopulateDefaults()
	t.InterfaceRef.PopulateDefaults()
	t.IpInIp.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Afts_NextHop struct, which is a YANG list entry.
func (t *NetworkInstance_Afts_NextHop) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_NextHop) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_NextHop"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_NextHop) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_NextHop) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_NextHop.
func (*NetworkInstance_Afts_NextHop) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_NextHop_PushedMplsLabelStack_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/afts/next-hops/next-hop/state/pushed-mpls-label-stack within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Afts_NextHop_PushedMplsLabelStack_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Afts_NextHop_PushedMplsLabelStack_Union()
}

// Documentation_for_NetworkInstance_Afts_NextHop_PushedMplsLabelStack_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Afts_NextHop_PushedMplsLabelStack_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Afts_NextHop_PushedMplsLabelStack_Union() {
}

// Documentation_for_NetworkInstance_Afts_NextHop_PushedMplsLabelStack_Union ensures that UnionUint32
// implements the NetworkInstance_Afts_NextHop_PushedMplsLabelStack_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Afts_NextHop_PushedMplsLabelStack_Union() {}

// To_NetworkInstance_Afts_NextHop_PushedMplsLabelStack_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Afts_NextHop_PushedMplsLabelStack_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Afts_NextHop) To_NetworkInstance_Afts_NextHop_PushedMplsLabelStack_Union(i interface{}) (NetworkInstance_Afts_NextHop_PushedMplsLabelStack_Union, error) {
	if v, ok := i.(NetworkInstance_Afts_NextHop_PushedMplsLabelStack_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Afts_NextHop_PushedMplsLabelStack_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Afts_NextHopGroup represents the /openconfig-network-instance/network-instances/network-instance/afts/next-hop-groups/next-hop-group YANG schema element.
type NetworkInstance_Afts_NextHopGroup struct {
	ΛMetadata           []ygot.Annotation                                       `path:"@" ygotAnnotation:"true"`
	BackupNextHopGroup  *uint64                                                 `path:"state/backup-next-hop-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBackupNextHopGroup []ygot.Annotation                                       `path:"state/@backup-next-hop-group" ygotAnnotation:"true"`
	Color               *uint64                                                 `path:"state/color" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛColor              []ygot.Annotation                                       `path:"state/@color" ygotAnnotation:"true"`
	Condition           map[uint64]*NetworkInstance_Afts_NextHopGroup_Condition `path:"conditional/condition" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCondition          []ygot.Annotation                                       `path:"conditional/@condition" ygotAnnotation:"true"`
	Id                  *uint64                                                 `path:"state/id|id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛId                 []ygot.Annotation                                       `path:"state/@id|@id" ygotAnnotation:"true"`
	NextHop             map[uint64]*NetworkInstance_Afts_NextHopGroup_NextHop   `path:"next-hops/next-hop" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHop            []ygot.Annotation                                       `path:"next-hops/@next-hop" ygotAnnotation:"true"`
	NextHopGroupName    *string                                                 `path:"state/next-hop-group-name" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHopGroupName   []ygot.Annotation                                       `path:"state/@next-hop-group-name" ygotAnnotation:"true"`
	ProgrammedId        *uint64                                                 `path:"state/programmed-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProgrammedId       []ygot.Annotation                                       `path:"state/@programmed-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_NextHopGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_NextHopGroup) IsYANGGoStruct() {}

// NewCondition creates a new entry in the Condition list of the
// NetworkInstance_Afts_NextHopGroup struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Afts_NextHopGroup) NewCondition(Id uint64) (*NetworkInstance_Afts_NextHopGroup_Condition, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Condition == nil {
		t.Condition = make(map[uint64]*NetworkInstance_Afts_NextHopGroup_Condition)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Condition[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Condition", key)
	}

	t.Condition[key] = &NetworkInstance_Afts_NextHopGroup_Condition{
		Id: &Id,
	}

	return t.Condition[key], nil
}

// RenameCondition renames an entry in the list Condition within
// the NetworkInstance_Afts_NextHopGroup struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Afts_NextHopGroup) RenameCondition(oldK, newK uint64) error {
	if _, ok := t.Condition[newK]; ok {
		return fmt.Errorf("key %v already exists in Condition", newK)
	}

	e, ok := t.Condition[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Condition", oldK)
	}
	e.Id = &newK

	t.Condition[newK] = e
	delete(t.Condition, oldK)
	return nil
}

// GetOrCreateConditionMap returns the list (map) from NetworkInstance_Afts_NextHopGroup.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Afts_NextHopGroup) GetOrCreateConditionMap() map[uint64]*NetworkInstance_Afts_NextHopGroup_Condition {
	if t.Condition == nil {
		t.Condition = make(map[uint64]*NetworkInstance_Afts_NextHopGroup_Condition)
	}
	return t.Condition
}

// GetOrCreateCondition retrieves the value with the specified keys from
// the receiver NetworkInstance_Afts_NextHopGroup. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Afts_NextHopGroup) GetOrCreateCondition(Id uint64) *NetworkInstance_Afts_NextHopGroup_Condition {

	key := Id

	if v, ok := t.Condition[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewCondition(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateCondition got unexpected error: %v", err))
	}
	return v
}

// GetCondition retrieves the value with the specified key from
// the Condition map field of NetworkInstance_Afts_NextHopGroup. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Afts_NextHopGroup) GetCondition(Id uint64) *NetworkInstance_Afts_NextHopGroup_Condition {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.Condition[key]; ok {
		return lm
	}
	return nil
}

// AppendCondition appends the supplied NetworkInstance_Afts_NextHopGroup_Condition struct to the
// list Condition of NetworkInstance_Afts_NextHopGroup. If the key value(s) specified in
// the supplied NetworkInstance_Afts_NextHopGroup_Condition already exist in the list, an error is
// returned.
func (t *NetworkInstance_Afts_NextHopGroup) AppendCondition(v *NetworkInstance_Afts_NextHopGroup_Condition) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Condition == nil {
		t.Condition = make(map[uint64]*NetworkInstance_Afts_NextHopGroup_Condition)
	}

	if _, ok := t.Condition[key]; ok {
		return fmt.Errorf("duplicate key for list Condition %v", key)
	}

	t.Condition[key] = v
	return nil
}

// NewNextHop creates a new entry in the NextHop list of the
// NetworkInstance_Afts_NextHopGroup struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Afts_NextHopGroup) NewNextHop(Index uint64) (*NetworkInstance_Afts_NextHopGroup_NextHop, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Afts_NextHopGroup_NextHop)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.NextHop[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list NextHop", key)
	}

	t.NextHop[key] = &NetworkInstance_Afts_NextHopGroup_NextHop{
		Index: &Index,
	}

	return t.NextHop[key], nil
}

// RenameNextHop renames an entry in the list NextHop within
// the NetworkInstance_Afts_NextHopGroup struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Afts_NextHopGroup) RenameNextHop(oldK, newK uint64) error {
	if _, ok := t.NextHop[newK]; ok {
		return fmt.Errorf("key %v already exists in NextHop", newK)
	}

	e, ok := t.NextHop[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in NextHop", oldK)
	}
	e.Index = &newK

	t.NextHop[newK] = e
	delete(t.NextHop, oldK)
	return nil
}

// GetOrCreateNextHopMap returns the list (map) from NetworkInstance_Afts_NextHopGroup.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Afts_NextHopGroup) GetOrCreateNextHopMap() map[uint64]*NetworkInstance_Afts_NextHopGroup_NextHop {
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Afts_NextHopGroup_NextHop)
	}
	return t.NextHop
}

// GetOrCreateNextHop retrieves the value with the specified keys from
// the receiver NetworkInstance_Afts_NextHopGroup. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Afts_NextHopGroup) GetOrCreateNextHop(Index uint64) *NetworkInstance_Afts_NextHopGroup_NextHop {

	key := Index

	if v, ok := t.NextHop[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNextHop(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNextHop got unexpected error: %v", err))
	}
	return v
}

// GetNextHop retrieves the value with the specified key from
// the NextHop map field of NetworkInstance_Afts_NextHopGroup. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Afts_NextHopGroup) GetNextHop(Index uint64) *NetworkInstance_Afts_NextHopGroup_NextHop {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.NextHop[key]; ok {
		return lm
	}
	return nil
}

// AppendNextHop appends the supplied NetworkInstance_Afts_NextHopGroup_NextHop struct to the
// list NextHop of NetworkInstance_Afts_NextHopGroup. If the key value(s) specified in
// the supplied NetworkInstance_Afts_NextHopGroup_NextHop already exist in the list, an error is
// returned.
func (t *NetworkInstance_Afts_NextHopGroup) AppendNextHop(v *NetworkInstance_Afts_NextHopGroup_NextHop) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Afts_NextHopGroup_NextHop)
	}

	if _, ok := t.NextHop[key]; ok {
		return fmt.Errorf("duplicate key for list NextHop %v", key)
	}

	t.NextHop[key] = v
	return nil
}

// GetBackupNextHopGroup retrieves the value of the leaf BackupNextHopGroup from the NetworkInstance_Afts_NextHopGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BackupNextHopGroup is set, it can
// safely use t.GetBackupNextHopGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BackupNextHopGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHopGroup) GetBackupNextHopGroup() uint64 {
	if t == nil || t.BackupNextHopGroup == nil {
		return 0
	}
	return *t.BackupNextHopGroup
}

// GetColor retrieves the value of the leaf Color from the NetworkInstance_Afts_NextHopGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Color is set, it can
// safely use t.GetColor() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Color == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHopGroup) GetColor() uint64 {
	if t == nil || t.Color == nil {
		return 0
	}
	return *t.Color
}

// GetId retrieves the value of the leaf Id from the NetworkInstance_Afts_NextHopGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHopGroup) GetId() uint64 {
	if t == nil || t.Id == nil {
		return 0
	}
	return *t.Id
}

// GetNextHopGroupName retrieves the value of the leaf NextHopGroupName from the NetworkInstance_Afts_NextHopGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHopGroupName is set, it can
// safely use t.GetNextHopGroupName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHopGroupName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHopGroup) GetNextHopGroupName() string {
	if t == nil || t.NextHopGroupName == nil {
		return ""
	}
	return *t.NextHopGroupName
}

// GetProgrammedId retrieves the value of the leaf ProgrammedId from the NetworkInstance_Afts_NextHopGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ProgrammedId is set, it can
// safely use t.GetProgrammedId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ProgrammedId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHopGroup) GetProgrammedId() uint64 {
	if t == nil || t.ProgrammedId == nil {
		return 0
	}
	return *t.ProgrammedId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_NextHopGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_NextHopGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Condition {
		e.PopulateDefaults()
	}
	for _, e := range t.NextHop {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Afts_NextHopGroup struct, which is a YANG list entry.
func (t *NetworkInstance_Afts_NextHopGroup) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_NextHopGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_NextHopGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_NextHopGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_NextHopGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_NextHopGroup.
func (*NetworkInstance_Afts_NextHopGroup) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_NextHopGroup_Condition represents the /openconfig-network-instance/network-instances/network-instance/afts/next-hop-groups/next-hop-group/conditional/condition YANG schema element.
type NetworkInstance_Afts_NextHopGroup_Condition struct {
	ΛMetadata       []ygot.Annotation                                                      `path:"@" ygotAnnotation:"true"`
	Dscp            []uint8                                                                `path:"state/dscp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDscp           []ygot.Annotation                                                      `path:"state/@dscp" ygotAnnotation:"true"`
	Id              *uint64                                                                `path:"state/id|id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛId             []ygot.Annotation                                                      `path:"state/@id|@id" ygotAnnotation:"true"`
	InputInterface  map[string]*NetworkInstance_Afts_NextHopGroup_Condition_InputInterface `path:"input-interfaces/input-interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInputInterface []ygot.Annotation                                                      `path:"input-interfaces/@input-interface" ygotAnnotation:"true"`
	NextHopGroup    *uint64                                                                `path:"state/next-hop-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHopGroup   []ygot.Annotation                                                      `path:"state/@next-hop-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_NextHopGroup_Condition implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_NextHopGroup_Condition) IsYANGGoStruct() {}

// NewInputInterface creates a new entry in the InputInterface list of the
// NetworkInstance_Afts_NextHopGroup_Condition struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Afts_NextHopGroup_Condition) NewInputInterface(Id string) (*NetworkInstance_Afts_NextHopGroup_Condition_InputInterface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.InputInterface == nil {
		t.InputInterface = make(map[string]*NetworkInstance_Afts_NextHopGroup_Condition_InputInterface)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.InputInterface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list InputInterface", key)
	}

	t.InputInterface[key] = &NetworkInstance_Afts_NextHopGroup_Condition_InputInterface{
		Id: &Id,
	}

	return t.InputInterface[key], nil
}

// RenameInputInterface renames an entry in the list InputInterface within
// the NetworkInstance_Afts_NextHopGroup_Condition struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Afts_NextHopGroup_Condition) RenameInputInterface(oldK, newK string) error {
	if _, ok := t.InputInterface[newK]; ok {
		return fmt.Errorf("key %v already exists in InputInterface", newK)
	}

	e, ok := t.InputInterface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in InputInterface", oldK)
	}
	e.Id = &newK

	t.InputInterface[newK] = e
	delete(t.InputInterface, oldK)
	return nil
}

// GetOrCreateInputInterfaceMap returns the list (map) from NetworkInstance_Afts_NextHopGroup_Condition.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Afts_NextHopGroup_Condition) GetOrCreateInputInterfaceMap() map[string]*NetworkInstance_Afts_NextHopGroup_Condition_InputInterface {
	if t.InputInterface == nil {
		t.InputInterface = make(map[string]*NetworkInstance_Afts_NextHopGroup_Condition_InputInterface)
	}
	return t.InputInterface
}

// GetOrCreateInputInterface retrieves the value with the specified keys from
// the receiver NetworkInstance_Afts_NextHopGroup_Condition. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Afts_NextHopGroup_Condition) GetOrCreateInputInterface(Id string) *NetworkInstance_Afts_NextHopGroup_Condition_InputInterface {

	key := Id

	if v, ok := t.InputInterface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInputInterface(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInputInterface got unexpected error: %v", err))
	}
	return v
}

// GetInputInterface retrieves the value with the specified key from
// the InputInterface map field of NetworkInstance_Afts_NextHopGroup_Condition. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Afts_NextHopGroup_Condition) GetInputInterface(Id string) *NetworkInstance_Afts_NextHopGroup_Condition_InputInterface {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.InputInterface[key]; ok {
		return lm
	}
	return nil
}

// AppendInputInterface appends the supplied NetworkInstance_Afts_NextHopGroup_Condition_InputInterface struct to the
// list InputInterface of NetworkInstance_Afts_NextHopGroup_Condition. If the key value(s) specified in
// the supplied NetworkInstance_Afts_NextHopGroup_Condition_InputInterface already exist in the list, an error is
// returned.
func (t *NetworkInstance_Afts_NextHopGroup_Condition) AppendInputInterface(v *NetworkInstance_Afts_NextHopGroup_Condition_InputInterface) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.InputInterface == nil {
		t.InputInterface = make(map[string]*NetworkInstance_Afts_NextHopGroup_Condition_InputInterface)
	}

	if _, ok := t.InputInterface[key]; ok {
		return fmt.Errorf("duplicate key for list InputInterface %v", key)
	}

	t.InputInterface[key] = v
	return nil
}

// GetDscp retrieves the value of the leaf Dscp from the NetworkInstance_Afts_NextHopGroup_Condition
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dscp is set, it can
// safely use t.GetDscp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dscp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHopGroup_Condition) GetDscp() []uint8 {
	if t == nil || t.Dscp == nil {
		return nil
	}
	return t.Dscp
}

// GetId retrieves the value of the leaf Id from the NetworkInstance_Afts_NextHopGroup_Condition
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHopGroup_Condition) GetId() uint64 {
	if t == nil || t.Id == nil {
		return 0
	}
	return *t.Id
}

// GetNextHopGroup retrieves the value of the leaf NextHopGroup from the NetworkInstance_Afts_NextHopGroup_Condition
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHopGroup is set, it can
// safely use t.GetNextHopGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHopGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHopGroup_Condition) GetNextHopGroup() uint64 {
	if t == nil || t.NextHopGroup == nil {
		return 0
	}
	return *t.NextHopGroup
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_NextHopGroup_Condition
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_NextHopGroup_Condition) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.InputInterface {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Afts_NextHopGroup_Condition struct, which is a YANG list entry.
func (t *NetworkInstance_Afts_NextHopGroup_Condition) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_NextHopGroup_Condition) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_NextHopGroup_Condition"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_NextHopGroup_Condition) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_NextHopGroup_Condition) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_NextHopGroup_Condition.
func (*NetworkInstance_Afts_NextHopGroup_Condition) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_NextHopGroup_Condition_InputInterface represents the /openconfig-network-instance/network-instances/network-instance/afts/next-hop-groups/next-hop-group/conditional/condition/input-interfaces/input-interface YANG schema element.
type NetworkInstance_Afts_NextHopGroup_Condition_InputInterface struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Id            *string           `path:"state/id|id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛId           []ygot.Annotation `path:"state/@id|@id" ygotAnnotation:"true"`
	Interface     *string           `path:"state/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"state/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"state/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"state/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_NextHopGroup_Condition_InputInterface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_NextHopGroup_Condition_InputInterface) IsYANGGoStruct() {}

// GetId retrieves the value of the leaf Id from the NetworkInstance_Afts_NextHopGroup_Condition_InputInterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHopGroup_Condition_InputInterface) GetId() string {
	if t == nil || t.Id == nil {
		return ""
	}
	return *t.Id
}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Afts_NextHopGroup_Condition_InputInterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHopGroup_Condition_InputInterface) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Afts_NextHopGroup_Condition_InputInterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHopGroup_Condition_InputInterface) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_NextHopGroup_Condition_InputInterface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_NextHopGroup_Condition_InputInterface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Afts_NextHopGroup_Condition_InputInterface struct, which is a YANG list entry.
func (t *NetworkInstance_Afts_NextHopGroup_Condition_InputInterface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_NextHopGroup_Condition_InputInterface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_NextHopGroup_Condition_InputInterface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_NextHopGroup_Condition_InputInterface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_NextHopGroup_Condition_InputInterface) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_NextHopGroup_Condition_InputInterface.
func (*NetworkInstance_Afts_NextHopGroup_Condition_InputInterface) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_NextHopGroup_NextHop represents the /openconfig-network-instance/network-instances/network-instance/afts/next-hop-groups/next-hop-group/next-hops/next-hop YANG schema element.
type NetworkInstance_Afts_NextHopGroup_NextHop struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Index     *uint64           `path:"state/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex    []ygot.Annotation `path:"state/@index|@index" ygotAnnotation:"true"`
	Weight    *uint64           `path:"state/weight" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWeight   []ygot.Annotation `path:"state/@weight" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_NextHopGroup_NextHop implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_NextHopGroup_NextHop) IsYANGGoStruct() {}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_Afts_NextHopGroup_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHopGroup_NextHop) GetIndex() uint64 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetWeight retrieves the value of the leaf Weight from the NetworkInstance_Afts_NextHopGroup_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Weight is set, it can
// safely use t.GetWeight() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Weight == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHopGroup_NextHop) GetWeight() uint64 {
	if t == nil || t.Weight == nil {
		return 0
	}
	return *t.Weight
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_NextHopGroup_NextHop
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_NextHopGroup_NextHop) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Afts_NextHopGroup_NextHop struct, which is a YANG list entry.
func (t *NetworkInstance_Afts_NextHopGroup_NextHop) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_NextHopGroup_NextHop) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_NextHopGroup_NextHop"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_NextHopGroup_NextHop) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_NextHopGroup_NextHop) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_NextHopGroup_NextHop.
func (*NetworkInstance_Afts_NextHopGroup_NextHop) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_NextHop_Counters represents the /openconfig-network-instance/network-instances/network-instance/afts/next-hops/next-hop/state/counters YANG schema element.
type NetworkInstance_Afts_NextHop_Counters struct {
	ΛMetadata         []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	OctetsForwarded   *uint64           `path:"octets-forwarded" module:"openconfig-network-instance"`
	ΛOctetsForwarded  []ygot.Annotation `path:"@octets-forwarded" ygotAnnotation:"true"`
	PacketsForwarded  *uint64           `path:"packets-forwarded" module:"openconfig-network-instance"`
	ΛPacketsForwarded []ygot.Annotation `path:"@packets-forwarded" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_NextHop_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_NextHop_Counters) IsYANGGoStruct() {}

// GetOctetsForwarded retrieves the value of the leaf OctetsForwarded from the NetworkInstance_Afts_NextHop_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OctetsForwarded is set, it can
// safely use t.GetOctetsForwarded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OctetsForwarded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop_Counters) GetOctetsForwarded() uint64 {
	if t == nil || t.OctetsForwarded == nil {
		return 0
	}
	return *t.OctetsForwarded
}

// GetPacketsForwarded retrieves the value of the leaf PacketsForwarded from the NetworkInstance_Afts_NextHop_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PacketsForwarded is set, it can
// safely use t.GetPacketsForwarded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PacketsForwarded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop_Counters) GetPacketsForwarded() uint64 {
	if t == nil || t.PacketsForwarded == nil {
		return 0
	}
	return *t.PacketsForwarded
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_NextHop_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_NextHop_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_NextHop_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_NextHop_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_NextHop_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_NextHop_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_NextHop_Counters.
func (*NetworkInstance_Afts_NextHop_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_NextHop_InterfaceRef represents the /openconfig-network-instance/network-instances/network-instance/afts/next-hops/next-hop/interface-ref YANG schema element.
type NetworkInstance_Afts_NextHop_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"state/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"state/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"state/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"state/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_NextHop_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_NextHop_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Afts_NextHop_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Afts_NextHop_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_NextHop_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_NextHop_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_NextHop_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_NextHop_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_NextHop_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_NextHop_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_NextHop_InterfaceRef.
func (*NetworkInstance_Afts_NextHop_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_NextHop_IpInIp represents the /openconfig-network-instance/network-instances/network-instance/afts/next-hops/next-hop/ip-in-ip YANG schema element.
type NetworkInstance_Afts_NextHop_IpInIp struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	DstIp     *string           `path:"state/dst-ip" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDstIp    []ygot.Annotation `path:"state/@dst-ip" ygotAnnotation:"true"`
	SrcIp     *string           `path:"state/src-ip" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSrcIp    []ygot.Annotation `path:"state/@src-ip" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_NextHop_IpInIp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_NextHop_IpInIp) IsYANGGoStruct() {}

// GetDstIp retrieves the value of the leaf DstIp from the NetworkInstance_Afts_NextHop_IpInIp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DstIp is set, it can
// safely use t.GetDstIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DstIp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop_IpInIp) GetDstIp() string {
	if t == nil || t.DstIp == nil {
		return ""
	}
	return *t.DstIp
}

// GetSrcIp retrieves the value of the leaf SrcIp from the NetworkInstance_Afts_NextHop_IpInIp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SrcIp is set, it can
// safely use t.GetSrcIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SrcIp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_NextHop_IpInIp) GetSrcIp() string {
	if t == nil || t.SrcIp == nil {
		return ""
	}
	return *t.SrcIp
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_NextHop_IpInIp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_NextHop_IpInIp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_NextHop_IpInIp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_NextHop_IpInIp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_NextHop_IpInIp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_NextHop_IpInIp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_NextHop_IpInIp.
func (*NetworkInstance_Afts_NextHop_IpInIp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_PolicyForwardingEntry represents the /openconfig-network-instance/network-instances/network-instance/afts/policy-forwarding/policy-forwarding-entry YANG schema element.
type NetworkInstance_Afts_PolicyForwardingEntry struct {
	ΛMetadata                    []ygot.Annotation                                           `path:"@" ygotAnnotation:"true"`
	Counters                     *NetworkInstance_Afts_PolicyForwardingEntry_Counters        `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters                    []ygot.Annotation                                           `path:"state/@counters" ygotAnnotation:"true"`
	EntryMetadata                Binary                                                      `path:"state/entry-metadata" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEntryMetadata               []ygot.Annotation                                           `path:"state/@entry-metadata" ygotAnnotation:"true"`
	Index                        *uint64                                                     `path:"state/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex                       []ygot.Annotation                                           `path:"state/@index|@index" ygotAnnotation:"true"`
	IpDscp                       *uint8                                                      `path:"state/ip-dscp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpDscp                      []ygot.Annotation                                           `path:"state/@ip-dscp" ygotAnnotation:"true"`
	IpPrefix                     *string                                                     `path:"state/ip-prefix" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpPrefix                    []ygot.Annotation                                           `path:"state/@ip-prefix" ygotAnnotation:"true"`
	IpProtocol                   NetworkInstance_Afts_PolicyForwardingEntry_IpProtocol_Union `path:"state/ip-protocol" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpProtocol                  []ygot.Annotation                                           `path:"state/@ip-protocol" ygotAnnotation:"true"`
	L4DstPort                    *uint16                                                     `path:"state/l4-dst-port" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛL4DstPort                   []ygot.Annotation                                           `path:"state/@l4-dst-port" ygotAnnotation:"true"`
	L4SrcPort                    *uint16                                                     `path:"state/l4-src-port" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛL4SrcPort                   []ygot.Annotation                                           `path:"state/@l4-src-port" ygotAnnotation:"true"`
	MacAddress                   *string                                                     `path:"state/mac-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMacAddress                  []ygot.Annotation                                           `path:"state/@mac-address" ygotAnnotation:"true"`
	MplsLabel                    NetworkInstance_Afts_PolicyForwardingEntry_MplsLabel_Union  `path:"state/mpls-label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMplsLabel                   []ygot.Annotation                                           `path:"state/@mpls-label" ygotAnnotation:"true"`
	MplsTc                       *uint8                                                      `path:"state/mpls-tc" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMplsTc                      []ygot.Annotation                                           `path:"state/@mpls-tc" ygotAnnotation:"true"`
	NextHopGroup                 *uint64                                                     `path:"state/next-hop-group" module:"openconfig-network-instance/openconfig-aft-network-instance"`
	ΛNextHopGroup                []ygot.Annotation                                           `path:"state/@next-hop-group" ygotAnnotation:"true"`
	NextHopGroupNetworkInstance  *string                                                     `path:"state/next-hop-group-network-instance" module:"openconfig-network-instance/openconfig-aft-network-instance"`
	ΛNextHopGroupNetworkInstance []ygot.Annotation                                           `path:"state/@next-hop-group-network-instance" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_PolicyForwardingEntry implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_PolicyForwardingEntry) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) GetOrCreateCounters() *NetworkInstance_Afts_PolicyForwardingEntry_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_Afts_PolicyForwardingEntry_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_Afts_PolicyForwardingEntry. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) GetCounters() *NetworkInstance_Afts_PolicyForwardingEntry_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetEntryMetadata retrieves the value of the leaf EntryMetadata from the NetworkInstance_Afts_PolicyForwardingEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EntryMetadata is set, it can
// safely use t.GetEntryMetadata() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EntryMetadata == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) GetEntryMetadata() Binary {
	if t == nil || t.EntryMetadata == nil {
		return nil
	}
	return t.EntryMetadata
}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_Afts_PolicyForwardingEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) GetIndex() uint64 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetIpDscp retrieves the value of the leaf IpDscp from the NetworkInstance_Afts_PolicyForwardingEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IpDscp is set, it can
// safely use t.GetIpDscp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IpDscp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) GetIpDscp() uint8 {
	if t == nil || t.IpDscp == nil {
		return 0
	}
	return *t.IpDscp
}

// GetIpPrefix retrieves the value of the leaf IpPrefix from the NetworkInstance_Afts_PolicyForwardingEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IpPrefix is set, it can
// safely use t.GetIpPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IpPrefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) GetIpPrefix() string {
	if t == nil || t.IpPrefix == nil {
		return ""
	}
	return *t.IpPrefix
}

// GetIpProtocol retrieves the value of the leaf IpProtocol from the NetworkInstance_Afts_PolicyForwardingEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IpProtocol is set, it can
// safely use t.GetIpProtocol() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IpProtocol == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) GetIpProtocol() NetworkInstance_Afts_PolicyForwardingEntry_IpProtocol_Union {
	if t == nil || t.IpProtocol == nil {
		return nil
	}
	return t.IpProtocol
}

// GetL4DstPort retrieves the value of the leaf L4DstPort from the NetworkInstance_Afts_PolicyForwardingEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if L4DstPort is set, it can
// safely use t.GetL4DstPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.L4DstPort == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) GetL4DstPort() uint16 {
	if t == nil || t.L4DstPort == nil {
		return 0
	}
	return *t.L4DstPort
}

// GetL4SrcPort retrieves the value of the leaf L4SrcPort from the NetworkInstance_Afts_PolicyForwardingEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if L4SrcPort is set, it can
// safely use t.GetL4SrcPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.L4SrcPort == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) GetL4SrcPort() uint16 {
	if t == nil || t.L4SrcPort == nil {
		return 0
	}
	return *t.L4SrcPort
}

// GetMacAddress retrieves the value of the leaf MacAddress from the NetworkInstance_Afts_PolicyForwardingEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MacAddress is set, it can
// safely use t.GetMacAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MacAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) GetMacAddress() string {
	if t == nil || t.MacAddress == nil {
		return ""
	}
	return *t.MacAddress
}

// GetMplsLabel retrieves the value of the leaf MplsLabel from the NetworkInstance_Afts_PolicyForwardingEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MplsLabel is set, it can
// safely use t.GetMplsLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MplsLabel == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) GetMplsLabel() NetworkInstance_Afts_PolicyForwardingEntry_MplsLabel_Union {
	if t == nil || t.MplsLabel == nil {
		return nil
	}
	return t.MplsLabel
}

// GetMplsTc retrieves the value of the leaf MplsTc from the NetworkInstance_Afts_PolicyForwardingEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MplsTc is set, it can
// safely use t.GetMplsTc() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MplsTc == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) GetMplsTc() uint8 {
	if t == nil || t.MplsTc == nil {
		return 0
	}
	return *t.MplsTc
}

// GetNextHopGroup retrieves the value of the leaf NextHopGroup from the NetworkInstance_Afts_PolicyForwardingEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHopGroup is set, it can
// safely use t.GetNextHopGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHopGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) GetNextHopGroup() uint64 {
	if t == nil || t.NextHopGroup == nil {
		return 0
	}
	return *t.NextHopGroup
}

// GetNextHopGroupNetworkInstance retrieves the value of the leaf NextHopGroupNetworkInstance from the NetworkInstance_Afts_PolicyForwardingEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHopGroupNetworkInstance is set, it can
// safely use t.GetNextHopGroupNetworkInstance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHopGroupNetworkInstance == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) GetNextHopGroupNetworkInstance() string {
	if t == nil || t.NextHopGroupNetworkInstance == nil {
		return ""
	}
	return *t.NextHopGroupNetworkInstance
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_PolicyForwardingEntry
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Counters.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Afts_PolicyForwardingEntry struct, which is a YANG list entry.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_PolicyForwardingEntry"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_PolicyForwardingEntry.
func (*NetworkInstance_Afts_PolicyForwardingEntry) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_PolicyForwardingEntry_IpProtocol_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/afts/policy-forwarding/policy-forwarding-entry/state/ip-protocol within the YANG schema.
// Union type can be one of [E_PacketMatchTypes_IP_PROTOCOL, UnionUint8].
type NetworkInstance_Afts_PolicyForwardingEntry_IpProtocol_Union interface {
	// Union type can be one of [E_PacketMatchTypes_IP_PROTOCOL, UnionUint8]
	Documentation_for_NetworkInstance_Afts_PolicyForwardingEntry_IpProtocol_Union()
}

// Documentation_for_NetworkInstance_Afts_PolicyForwardingEntry_IpProtocol_Union ensures that E_PacketMatchTypes_IP_PROTOCOL
// implements the NetworkInstance_Afts_PolicyForwardingEntry_IpProtocol_Union interface.
func (E_PacketMatchTypes_IP_PROTOCOL) Documentation_for_NetworkInstance_Afts_PolicyForwardingEntry_IpProtocol_Union() {
}

// Documentation_for_NetworkInstance_Afts_PolicyForwardingEntry_IpProtocol_Union ensures that UnionUint8
// implements the NetworkInstance_Afts_PolicyForwardingEntry_IpProtocol_Union interface.
func (UnionUint8) Documentation_for_NetworkInstance_Afts_PolicyForwardingEntry_IpProtocol_Union() {}

// To_NetworkInstance_Afts_PolicyForwardingEntry_IpProtocol_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Afts_PolicyForwardingEntry_IpProtocol_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) To_NetworkInstance_Afts_PolicyForwardingEntry_IpProtocol_Union(i interface{}) (NetworkInstance_Afts_PolicyForwardingEntry_IpProtocol_Union, error) {
	if v, ok := i.(NetworkInstance_Afts_PolicyForwardingEntry_IpProtocol_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint8:
		return UnionUint8(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Afts_PolicyForwardingEntry_IpProtocol_Union, unknown union type, got: %T, want any of [E_PacketMatchTypes_IP_PROTOCOL, uint8]", i, i)
}

// NetworkInstance_Afts_PolicyForwardingEntry_MplsLabel_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/afts/policy-forwarding/policy-forwarding-entry/state/mpls-label within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Afts_PolicyForwardingEntry_MplsLabel_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Afts_PolicyForwardingEntry_MplsLabel_Union()
}

// Documentation_for_NetworkInstance_Afts_PolicyForwardingEntry_MplsLabel_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Afts_PolicyForwardingEntry_MplsLabel_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Afts_PolicyForwardingEntry_MplsLabel_Union() {
}

// Documentation_for_NetworkInstance_Afts_PolicyForwardingEntry_MplsLabel_Union ensures that UnionUint32
// implements the NetworkInstance_Afts_PolicyForwardingEntry_MplsLabel_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Afts_PolicyForwardingEntry_MplsLabel_Union() {}

// To_NetworkInstance_Afts_PolicyForwardingEntry_MplsLabel_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Afts_PolicyForwardingEntry_MplsLabel_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Afts_PolicyForwardingEntry) To_NetworkInstance_Afts_PolicyForwardingEntry_MplsLabel_Union(i interface{}) (NetworkInstance_Afts_PolicyForwardingEntry_MplsLabel_Union, error) {
	if v, ok := i.(NetworkInstance_Afts_PolicyForwardingEntry_MplsLabel_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Afts_PolicyForwardingEntry_MplsLabel_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Afts_PolicyForwardingEntry_Counters represents the /openconfig-network-instance/network-instances/network-instance/afts/policy-forwarding/policy-forwarding-entry/state/counters YANG schema element.
type NetworkInstance_Afts_PolicyForwardingEntry_Counters struct {
	ΛMetadata         []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	OctetsForwarded   *uint64           `path:"octets-forwarded" module:"openconfig-network-instance"`
	ΛOctetsForwarded  []ygot.Annotation `path:"@octets-forwarded" ygotAnnotation:"true"`
	PacketsForwarded  *uint64           `path:"packets-forwarded" module:"openconfig-network-instance"`
	ΛPacketsForwarded []ygot.Annotation `path:"@packets-forwarded" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_PolicyForwardingEntry_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_PolicyForwardingEntry_Counters) IsYANGGoStruct() {}

// GetOctetsForwarded retrieves the value of the leaf OctetsForwarded from the NetworkInstance_Afts_PolicyForwardingEntry_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OctetsForwarded is set, it can
// safely use t.GetOctetsForwarded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OctetsForwarded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_PolicyForwardingEntry_Counters) GetOctetsForwarded() uint64 {
	if t == nil || t.OctetsForwarded == nil {
		return 0
	}
	return *t.OctetsForwarded
}

// GetPacketsForwarded retrieves the value of the leaf PacketsForwarded from the NetworkInstance_Afts_PolicyForwardingEntry_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PacketsForwarded is set, it can
// safely use t.GetPacketsForwarded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PacketsForwarded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_PolicyForwardingEntry_Counters) GetPacketsForwarded() uint64 {
	if t == nil || t.PacketsForwarded == nil {
		return 0
	}
	return *t.PacketsForwarded
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_PolicyForwardingEntry_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_PolicyForwardingEntry_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_PolicyForwardingEntry_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_PolicyForwardingEntry_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_PolicyForwardingEntry_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_PolicyForwardingEntry_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_PolicyForwardingEntry_Counters.
func (*NetworkInstance_Afts_PolicyForwardingEntry_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Afts_StateSynced represents the /openconfig-network-instance/network-instances/network-instance/afts/state-synced YANG schema element.
type NetworkInstance_Afts_StateSynced struct {
	ΛMetadata    []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Ipv4Unicast  *bool             `path:"state/ipv4-unicast" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpv4Unicast []ygot.Annotation `path:"state/@ipv4-unicast" ygotAnnotation:"true"`
	Ipv6Unicast  *bool             `path:"state/ipv6-unicast" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpv6Unicast []ygot.Annotation `path:"state/@ipv6-unicast" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Afts_StateSynced implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Afts_StateSynced) IsYANGGoStruct() {}

// GetIpv4Unicast retrieves the value of the leaf Ipv4Unicast from the NetworkInstance_Afts_StateSynced
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ipv4Unicast is set, it can
// safely use t.GetIpv4Unicast() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ipv4Unicast == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_StateSynced) GetIpv4Unicast() bool {
	if t == nil || t.Ipv4Unicast == nil {
		return false
	}
	return *t.Ipv4Unicast
}

// GetIpv6Unicast retrieves the value of the leaf Ipv6Unicast from the NetworkInstance_Afts_StateSynced
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ipv6Unicast is set, it can
// safely use t.GetIpv6Unicast() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ipv6Unicast == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Afts_StateSynced) GetIpv6Unicast() bool {
	if t == nil || t.Ipv6Unicast == nil {
		return false
	}
	return *t.Ipv6Unicast
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Afts_StateSynced
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Afts_StateSynced) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Ipv4Unicast == nil {
		var v bool = false
		t.Ipv4Unicast = &v
	}
	if t.Ipv6Unicast == nil {
		var v bool = false
		t.Ipv6Unicast = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_StateSynced) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Afts_StateSynced"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Afts_StateSynced) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Afts_StateSynced) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Afts_StateSynced.
func (*NetworkInstance_Afts_StateSynced) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_ConnectionPoint represents the /openconfig-network-instance/network-instances/network-instance/connection-points/connection-point YANG schema element.
type NetworkInstance_ConnectionPoint struct {
	ΛMetadata          []ygot.Annotation                                    `path:"@" ygotAnnotation:"true"`
	ConnectionPointId  *string                                              `path:"config/connection-point-id|connection-point-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛConnectionPointId []ygot.Annotation                                    `path:"config/@connection-point-id|@connection-point-id" ygotAnnotation:"true"`
	Endpoint           map[string]*NetworkInstance_ConnectionPoint_Endpoint `path:"endpoints/endpoint" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEndpoint          []ygot.Annotation                                    `path:"endpoints/@endpoint" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_ConnectionPoint implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_ConnectionPoint) IsYANGGoStruct() {}

// NewEndpoint creates a new entry in the Endpoint list of the
// NetworkInstance_ConnectionPoint struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_ConnectionPoint) NewEndpoint(EndpointId string) (*NetworkInstance_ConnectionPoint_Endpoint, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Endpoint == nil {
		t.Endpoint = make(map[string]*NetworkInstance_ConnectionPoint_Endpoint)
	}

	key := EndpointId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Endpoint[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Endpoint", key)
	}

	t.Endpoint[key] = &NetworkInstance_ConnectionPoint_Endpoint{
		EndpointId: &EndpointId,
	}

	return t.Endpoint[key], nil
}

// RenameEndpoint renames an entry in the list Endpoint within
// the NetworkInstance_ConnectionPoint struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_ConnectionPoint) RenameEndpoint(oldK, newK string) error {
	if _, ok := t.Endpoint[newK]; ok {
		return fmt.Errorf("key %v already exists in Endpoint", newK)
	}

	e, ok := t.Endpoint[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Endpoint", oldK)
	}
	e.EndpointId = &newK

	t.Endpoint[newK] = e
	delete(t.Endpoint, oldK)
	return nil
}

// GetOrCreateEndpointMap returns the list (map) from NetworkInstance_ConnectionPoint.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_ConnectionPoint) GetOrCreateEndpointMap() map[string]*NetworkInstance_ConnectionPoint_Endpoint {
	if t.Endpoint == nil {
		t.Endpoint = make(map[string]*NetworkInstance_ConnectionPoint_Endpoint)
	}
	return t.Endpoint
}

// GetOrCreateEndpoint retrieves the value with the specified keys from
// the receiver NetworkInstance_ConnectionPoint. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_ConnectionPoint) GetOrCreateEndpoint(EndpointId string) *NetworkInstance_ConnectionPoint_Endpoint {

	key := EndpointId

	if v, ok := t.Endpoint[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewEndpoint(EndpointId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateEndpoint got unexpected error: %v", err))
	}
	return v
}

// GetEndpoint retrieves the value with the specified key from
// the Endpoint map field of NetworkInstance_ConnectionPoint. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_ConnectionPoint) GetEndpoint(EndpointId string) *NetworkInstance_ConnectionPoint_Endpoint {

	if t == nil {
		return nil
	}

	key := EndpointId

	if lm, ok := t.Endpoint[key]; ok {
		return lm
	}
	return nil
}

// AppendEndpoint appends the supplied NetworkInstance_ConnectionPoint_Endpoint struct to the
// list Endpoint of NetworkInstance_ConnectionPoint. If the key value(s) specified in
// the supplied NetworkInstance_ConnectionPoint_Endpoint already exist in the list, an error is
// returned.
func (t *NetworkInstance_ConnectionPoint) AppendEndpoint(v *NetworkInstance_ConnectionPoint_Endpoint) error {
	if v.EndpointId == nil {
		return fmt.Errorf("invalid nil key received for EndpointId")
	}

	key := *v.EndpointId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Endpoint == nil {
		t.Endpoint = make(map[string]*NetworkInstance_ConnectionPoint_Endpoint)
	}

	if _, ok := t.Endpoint[key]; ok {
		return fmt.Errorf("duplicate key for list Endpoint %v", key)
	}

	t.Endpoint[key] = v
	return nil
}

// GetConnectionPointId retrieves the value of the leaf ConnectionPointId from the NetworkInstance_ConnectionPoint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ConnectionPointId is set, it can
// safely use t.GetConnectionPointId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ConnectionPointId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint) GetConnectionPointId() string {
	if t == nil || t.ConnectionPointId == nil {
		return ""
	}
	return *t.ConnectionPointId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_ConnectionPoint
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_ConnectionPoint) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Endpoint {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_ConnectionPoint struct, which is a YANG list entry.
func (t *NetworkInstance_ConnectionPoint) ΛListKeyMap() (map[string]interface{}, error) {
	if t.ConnectionPointId == nil {
		return nil, fmt.Errorf("nil value for key ConnectionPointId")
	}

	return map[string]interface{}{
		"connection-point-id": *t.ConnectionPointId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_ConnectionPoint"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_ConnectionPoint) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_ConnectionPoint.
func (*NetworkInstance_ConnectionPoint) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_ConnectionPoint_Endpoint represents the /openconfig-network-instance/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint YANG schema element.
type NetworkInstance_ConnectionPoint_Endpoint struct {
	ΛMetadata   []ygot.Annotation                                `path:"@" ygotAnnotation:"true"`
	Active      *bool                                            `path:"state/active" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛActive     []ygot.Annotation                                `path:"state/@active" ygotAnnotation:"true"`
	EndpointId  *string                                          `path:"config/endpoint-id|endpoint-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEndpointId []ygot.Annotation                                `path:"config/@endpoint-id|@endpoint-id" ygotAnnotation:"true"`
	Local       *NetworkInstance_ConnectionPoint_Endpoint_Local  `path:"local" module:"openconfig-network-instance"`
	ΛLocal      []ygot.Annotation                                `path:"@local" ygotAnnotation:"true"`
	Precedence  *uint16                                          `path:"config/precedence" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrecedence []ygot.Annotation                                `path:"config/@precedence" ygotAnnotation:"true"`
	Remote      *NetworkInstance_ConnectionPoint_Endpoint_Remote `path:"remote" module:"openconfig-network-instance"`
	ΛRemote     []ygot.Annotation                                `path:"@remote" ygotAnnotation:"true"`
	Type        E_NetworkInstanceTypes_ENDPOINT_TYPE             `path:"config/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType       []ygot.Annotation                                `path:"config/@type" ygotAnnotation:"true"`
	Vxlan       *NetworkInstance_ConnectionPoint_Endpoint_Vxlan  `path:"vxlan" module:"openconfig-network-instance"`
	ΛVxlan      []ygot.Annotation                                `path:"@vxlan" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_ConnectionPoint_Endpoint implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_ConnectionPoint_Endpoint) IsYANGGoStruct() {}

// GetOrCreateLocal retrieves the value of the Local field
// or returns the existing field if it already exists.
func (t *NetworkInstance_ConnectionPoint_Endpoint) GetOrCreateLocal() *NetworkInstance_ConnectionPoint_Endpoint_Local {
	if t.Local != nil {
		return t.Local
	}
	t.Local = &NetworkInstance_ConnectionPoint_Endpoint_Local{}
	return t.Local
}

// GetOrCreateRemote retrieves the value of the Remote field
// or returns the existing field if it already exists.
func (t *NetworkInstance_ConnectionPoint_Endpoint) GetOrCreateRemote() *NetworkInstance_ConnectionPoint_Endpoint_Remote {
	if t.Remote != nil {
		return t.Remote
	}
	t.Remote = &NetworkInstance_ConnectionPoint_Endpoint_Remote{}
	return t.Remote
}

// GetOrCreateVxlan retrieves the value of the Vxlan field
// or returns the existing field if it already exists.
func (t *NetworkInstance_ConnectionPoint_Endpoint) GetOrCreateVxlan() *NetworkInstance_ConnectionPoint_Endpoint_Vxlan {
	if t.Vxlan != nil {
		return t.Vxlan
	}
	t.Vxlan = &NetworkInstance_ConnectionPoint_Endpoint_Vxlan{}
	return t.Vxlan
}

// GetLocal returns the value of the Local struct pointer
// from NetworkInstance_ConnectionPoint_Endpoint. If the receiver or the field Local is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_ConnectionPoint_Endpoint) GetLocal() *NetworkInstance_ConnectionPoint_Endpoint_Local {
	if t != nil && t.Local != nil {
		return t.Local
	}
	return nil
}

// GetRemote returns the value of the Remote struct pointer
// from NetworkInstance_ConnectionPoint_Endpoint. If the receiver or the field Remote is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_ConnectionPoint_Endpoint) GetRemote() *NetworkInstance_ConnectionPoint_Endpoint_Remote {
	if t != nil && t.Remote != nil {
		return t.Remote
	}
	return nil
}

// GetVxlan returns the value of the Vxlan struct pointer
// from NetworkInstance_ConnectionPoint_Endpoint. If the receiver or the field Vxlan is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_ConnectionPoint_Endpoint) GetVxlan() *NetworkInstance_ConnectionPoint_Endpoint_Vxlan {
	if t != nil && t.Vxlan != nil {
		return t.Vxlan
	}
	return nil
}

// GetActive retrieves the value of the leaf Active from the NetworkInstance_ConnectionPoint_Endpoint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Active is set, it can
// safely use t.GetActive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Active == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint) GetActive() bool {
	if t == nil || t.Active == nil {
		return false
	}
	return *t.Active
}

// GetEndpointId retrieves the value of the leaf EndpointId from the NetworkInstance_ConnectionPoint_Endpoint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EndpointId is set, it can
// safely use t.GetEndpointId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EndpointId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint) GetEndpointId() string {
	if t == nil || t.EndpointId == nil {
		return ""
	}
	return *t.EndpointId
}

// GetPrecedence retrieves the value of the leaf Precedence from the NetworkInstance_ConnectionPoint_Endpoint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Precedence is set, it can
// safely use t.GetPrecedence() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Precedence == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint) GetPrecedence() uint16 {
	if t == nil || t.Precedence == nil {
		return 0
	}
	return *t.Precedence
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_ConnectionPoint_Endpoint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint) GetType() E_NetworkInstanceTypes_ENDPOINT_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_ConnectionPoint_Endpoint
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_ConnectionPoint_Endpoint) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Local.PopulateDefaults()
	t.Remote.PopulateDefaults()
	t.Vxlan.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_ConnectionPoint_Endpoint struct, which is a YANG list entry.
func (t *NetworkInstance_ConnectionPoint_Endpoint) ΛListKeyMap() (map[string]interface{}, error) {
	if t.EndpointId == nil {
		return nil, fmt.Errorf("nil value for key EndpointId")
	}

	return map[string]interface{}{
		"endpoint-id": *t.EndpointId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_ConnectionPoint_Endpoint"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_ConnectionPoint_Endpoint) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_ConnectionPoint_Endpoint.
func (*NetworkInstance_ConnectionPoint_Endpoint) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_ConnectionPoint_Endpoint_Local represents the /openconfig-network-instance/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/local YANG schema element.
type NetworkInstance_ConnectionPoint_Endpoint_Local struct {
	ΛMetadata             []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface             *string           `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface            []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	SiteId                *uint16           `path:"config/site-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSiteId               []ygot.Annotation `path:"config/@site-id" ygotAnnotation:"true"`
	SiteLabelBlockOffset  *uint16           `path:"config/site-label-block-offset" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSiteLabelBlockOffset []ygot.Annotation `path:"config/@site-label-block-offset" ygotAnnotation:"true"`
	SiteLabelBlockSize    *uint16           `path:"config/site-label-block-size" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSiteLabelBlockSize   []ygot.Annotation `path:"config/@site-label-block-size" ygotAnnotation:"true"`
	Subinterface          *uint32           `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface         []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_ConnectionPoint_Endpoint_Local implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_ConnectionPoint_Endpoint_Local) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_ConnectionPoint_Endpoint_Local
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Local) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSiteId retrieves the value of the leaf SiteId from the NetworkInstance_ConnectionPoint_Endpoint_Local
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SiteId is set, it can
// safely use t.GetSiteId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SiteId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Local) GetSiteId() uint16 {
	if t == nil || t.SiteId == nil {
		return 0
	}
	return *t.SiteId
}

// GetSiteLabelBlockOffset retrieves the value of the leaf SiteLabelBlockOffset from the NetworkInstance_ConnectionPoint_Endpoint_Local
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SiteLabelBlockOffset is set, it can
// safely use t.GetSiteLabelBlockOffset() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SiteLabelBlockOffset == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Local) GetSiteLabelBlockOffset() uint16 {
	if t == nil || t.SiteLabelBlockOffset == nil {
		return 0
	}
	return *t.SiteLabelBlockOffset
}

// GetSiteLabelBlockSize retrieves the value of the leaf SiteLabelBlockSize from the NetworkInstance_ConnectionPoint_Endpoint_Local
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SiteLabelBlockSize is set, it can
// safely use t.GetSiteLabelBlockSize() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SiteLabelBlockSize == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Local) GetSiteLabelBlockSize() uint16 {
	if t == nil || t.SiteLabelBlockSize == nil {
		return 0
	}
	return *t.SiteLabelBlockSize
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_ConnectionPoint_Endpoint_Local
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Local) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_ConnectionPoint_Endpoint_Local
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Local) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Local) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_ConnectionPoint_Endpoint_Local"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Local) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Local) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_ConnectionPoint_Endpoint_Local.
func (*NetworkInstance_ConnectionPoint_Endpoint_Local) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_ConnectionPoint_Endpoint_Remote represents the /openconfig-network-instance/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/remote YANG schema element.
type NetworkInstance_ConnectionPoint_Endpoint_Remote struct {
	ΛMetadata                 []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	RemoteSystem              *string           `path:"config/remote-system" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRemoteSystem             []ygot.Annotation `path:"config/@remote-system" ygotAnnotation:"true"`
	SiteId                    *uint16           `path:"config/site-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSiteId                   []ygot.Annotation `path:"config/@site-id" ygotAnnotation:"true"`
	VirtualCircuitIdentifier  *uint32           `path:"config/virtual-circuit-identifier" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛVirtualCircuitIdentifier []ygot.Annotation `path:"config/@virtual-circuit-identifier" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_ConnectionPoint_Endpoint_Remote implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_ConnectionPoint_Endpoint_Remote) IsYANGGoStruct() {}

// GetRemoteSystem retrieves the value of the leaf RemoteSystem from the NetworkInstance_ConnectionPoint_Endpoint_Remote
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteSystem is set, it can
// safely use t.GetRemoteSystem() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteSystem == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Remote) GetRemoteSystem() string {
	if t == nil || t.RemoteSystem == nil {
		return ""
	}
	return *t.RemoteSystem
}

// GetSiteId retrieves the value of the leaf SiteId from the NetworkInstance_ConnectionPoint_Endpoint_Remote
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SiteId is set, it can
// safely use t.GetSiteId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SiteId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Remote) GetSiteId() uint16 {
	if t == nil || t.SiteId == nil {
		return 0
	}
	return *t.SiteId
}

// GetVirtualCircuitIdentifier retrieves the value of the leaf VirtualCircuitIdentifier from the NetworkInstance_ConnectionPoint_Endpoint_Remote
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VirtualCircuitIdentifier is set, it can
// safely use t.GetVirtualCircuitIdentifier() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VirtualCircuitIdentifier == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Remote) GetVirtualCircuitIdentifier() uint32 {
	if t == nil || t.VirtualCircuitIdentifier == nil {
		return 0
	}
	return *t.VirtualCircuitIdentifier
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_ConnectionPoint_Endpoint_Remote
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Remote) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Remote) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_ConnectionPoint_Endpoint_Remote"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Remote) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Remote) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_ConnectionPoint_Endpoint_Remote.
func (*NetworkInstance_ConnectionPoint_Endpoint_Remote) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_ConnectionPoint_Endpoint_Vxlan represents the /openconfig-network-instance/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan YANG schema element.
type NetworkInstance_ConnectionPoint_Endpoint_Vxlan struct {
	ΛMetadata        []ygot.Annotation                                                       `path:"@" ygotAnnotation:"true"`
	Description      *string                                                                 `path:"config/description" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDescription     []ygot.Annotation                                                       `path:"config/@description" ygotAnnotation:"true"`
	Enabled          *bool                                                                   `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled         []ygot.Annotation                                                       `path:"config/@enabled" ygotAnnotation:"true"`
	EndpointPeer     map[string]*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer `path:"endpoint-peers/endpoint-peer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEndpointPeer    []ygot.Annotation                                                       `path:"endpoint-peers/@endpoint-peer" ygotAnnotation:"true"`
	EndpointVni      map[uint32]*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni  `path:"endpoint-vnis/endpoint-vni" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEndpointVni     []ygot.Annotation                                                       `path:"endpoint-vnis/@endpoint-vni" ygotAnnotation:"true"`
	SourceInterface  *string                                                                 `path:"config/source-interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSourceInterface []ygot.Annotation                                                       `path:"config/@source-interface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_ConnectionPoint_Endpoint_Vxlan implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan) IsYANGGoStruct() {}

// NewEndpointPeer creates a new entry in the EndpointPeer list of the
// NetworkInstance_ConnectionPoint_Endpoint_Vxlan struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) NewEndpointPeer(PeerAddress string) (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.EndpointPeer == nil {
		t.EndpointPeer = make(map[string]*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer)
	}

	key := PeerAddress

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.EndpointPeer[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list EndpointPeer", key)
	}

	t.EndpointPeer[key] = &NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer{
		PeerAddress: &PeerAddress,
	}

	return t.EndpointPeer[key], nil
}

// RenameEndpointPeer renames an entry in the list EndpointPeer within
// the NetworkInstance_ConnectionPoint_Endpoint_Vxlan struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) RenameEndpointPeer(oldK, newK string) error {
	if _, ok := t.EndpointPeer[newK]; ok {
		return fmt.Errorf("key %v already exists in EndpointPeer", newK)
	}

	e, ok := t.EndpointPeer[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in EndpointPeer", oldK)
	}
	e.PeerAddress = &newK

	t.EndpointPeer[newK] = e
	delete(t.EndpointPeer, oldK)
	return nil
}

// GetOrCreateEndpointPeerMap returns the list (map) from NetworkInstance_ConnectionPoint_Endpoint_Vxlan.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) GetOrCreateEndpointPeerMap() map[string]*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer {
	if t.EndpointPeer == nil {
		t.EndpointPeer = make(map[string]*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer)
	}
	return t.EndpointPeer
}

// GetOrCreateEndpointPeer retrieves the value with the specified keys from
// the receiver NetworkInstance_ConnectionPoint_Endpoint_Vxlan. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) GetOrCreateEndpointPeer(PeerAddress string) *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer {

	key := PeerAddress

	if v, ok := t.EndpointPeer[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewEndpointPeer(PeerAddress)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateEndpointPeer got unexpected error: %v", err))
	}
	return v
}

// GetEndpointPeer retrieves the value with the specified key from
// the EndpointPeer map field of NetworkInstance_ConnectionPoint_Endpoint_Vxlan. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) GetEndpointPeer(PeerAddress string) *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer {

	if t == nil {
		return nil
	}

	key := PeerAddress

	if lm, ok := t.EndpointPeer[key]; ok {
		return lm
	}
	return nil
}

// AppendEndpointPeer appends the supplied NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer struct to the
// list EndpointPeer of NetworkInstance_ConnectionPoint_Endpoint_Vxlan. If the key value(s) specified in
// the supplied NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer already exist in the list, an error is
// returned.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) AppendEndpointPeer(v *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) error {
	if v.PeerAddress == nil {
		return fmt.Errorf("invalid nil key received for PeerAddress")
	}

	key := *v.PeerAddress

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.EndpointPeer == nil {
		t.EndpointPeer = make(map[string]*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer)
	}

	if _, ok := t.EndpointPeer[key]; ok {
		return fmt.Errorf("duplicate key for list EndpointPeer %v", key)
	}

	t.EndpointPeer[key] = v
	return nil
}

// NewEndpointVni creates a new entry in the EndpointVni list of the
// NetworkInstance_ConnectionPoint_Endpoint_Vxlan struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) NewEndpointVni(Vni uint32) (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.EndpointVni == nil {
		t.EndpointVni = make(map[uint32]*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni)
	}

	key := Vni

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.EndpointVni[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list EndpointVni", key)
	}

	t.EndpointVni[key] = &NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni{
		Vni: &Vni,
	}

	return t.EndpointVni[key], nil
}

// RenameEndpointVni renames an entry in the list EndpointVni within
// the NetworkInstance_ConnectionPoint_Endpoint_Vxlan struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) RenameEndpointVni(oldK, newK uint32) error {
	if _, ok := t.EndpointVni[newK]; ok {
		return fmt.Errorf("key %v already exists in EndpointVni", newK)
	}

	e, ok := t.EndpointVni[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in EndpointVni", oldK)
	}
	e.Vni = &newK

	t.EndpointVni[newK] = e
	delete(t.EndpointVni, oldK)
	return nil
}

// GetOrCreateEndpointVniMap returns the list (map) from NetworkInstance_ConnectionPoint_Endpoint_Vxlan.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) GetOrCreateEndpointVniMap() map[uint32]*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni {
	if t.EndpointVni == nil {
		t.EndpointVni = make(map[uint32]*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni)
	}
	return t.EndpointVni
}

// GetOrCreateEndpointVni retrieves the value with the specified keys from
// the receiver NetworkInstance_ConnectionPoint_Endpoint_Vxlan. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) GetOrCreateEndpointVni(Vni uint32) *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni {

	key := Vni

	if v, ok := t.EndpointVni[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewEndpointVni(Vni)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateEndpointVni got unexpected error: %v", err))
	}
	return v
}

// GetEndpointVni retrieves the value with the specified key from
// the EndpointVni map field of NetworkInstance_ConnectionPoint_Endpoint_Vxlan. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) GetEndpointVni(Vni uint32) *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni {

	if t == nil {
		return nil
	}

	key := Vni

	if lm, ok := t.EndpointVni[key]; ok {
		return lm
	}
	return nil
}

// AppendEndpointVni appends the supplied NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni struct to the
// list EndpointVni of NetworkInstance_ConnectionPoint_Endpoint_Vxlan. If the key value(s) specified in
// the supplied NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni already exist in the list, an error is
// returned.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) AppendEndpointVni(v *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) error {
	if v.Vni == nil {
		return fmt.Errorf("invalid nil key received for Vni")
	}

	key := *v.Vni

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.EndpointVni == nil {
		t.EndpointVni = make(map[uint32]*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni)
	}

	if _, ok := t.EndpointVni[key]; ok {
		return fmt.Errorf("duplicate key for list EndpointVni %v", key)
	}

	t.EndpointVni[key] = v
	return nil
}

// GetDescription retrieves the value of the leaf Description from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetSourceInterface retrieves the value of the leaf SourceInterface from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceInterface is set, it can
// safely use t.GetSourceInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceInterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) GetSourceInterface() string {
	if t == nil || t.SourceInterface == nil {
		return ""
	}
	return *t.SourceInterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_ConnectionPoint_Endpoint_Vxlan
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.EndpointPeer {
		e.PopulateDefaults()
	}
	for _, e := range t.EndpointVni {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_ConnectionPoint_Endpoint_Vxlan"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_ConnectionPoint_Endpoint_Vxlan.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer represents the /openconfig-network-instance/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-peers/endpoint-peer YANG schema element.
type NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer struct {
	ΛMetadata         []ygot.Annotation                                                                                                                                          `path:"@" ygotAnnotation:"true"`
	ControlPlaneVnis  []uint32                                                                                                                                                   `path:"state/control-plane-vnis" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛControlPlaneVnis []ygot.Annotation                                                                                                                                          `path:"state/@control-plane-vnis" ygotAnnotation:"true"`
	Counters          *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters                                                                                      `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters         []ygot.Annotation                                                                                                                                          `path:"state/@counters" ygotAnnotation:"true"`
	PeerAddress       *string                                                                                                                                                    `path:"state/peer-address|peer-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPeerAddress      []ygot.Annotation                                                                                                                                          `path:"state/@peer-address|@peer-address" ygotAnnotation:"true"`
	PeerState         E_EndpointPeer_PeerState                                                                                                                                   `path:"state/peer-state" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPeerState        []ygot.Annotation                                                                                                                                          `path:"state/@peer-state" ygotAnnotation:"true"`
	RouterMac         *string                                                                                                                                                    `path:"state/router-mac" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouterMac        []ygot.Annotation                                                                                                                                          `path:"state/@router-mac" ygotAnnotation:"true"`
	Uptime            *uint64                                                                                                                                                    `path:"state/uptime" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUptime           []ygot.Annotation                                                                                                                                          `path:"state/@uptime" ygotAnnotation:"true"`
	VniPeerGroup      map[NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup_Key]*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup `path:"vni-peer-groups/vni-peer-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛVniPeerGroup     []ygot.Annotation                                                                                                                                          `path:"vni-peer-groups/@vni-peer-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) IsYANGGoStruct() {}

// NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup_Key represents the key for list VniPeerGroup of element /openconfig-network-instance/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-peers/endpoint-peer.
type NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup_Key struct {
	CpVni     uint32 `path:"cp-vni"`
	EgressVni uint32 `path:"egress-vni"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup_Key key struct.
func (t NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"cp-vni":     t.CpVni,
		"egress-vni": t.EgressVni,
	}, nil
}

// NewVniPeerGroup creates a new entry in the VniPeerGroup list of the
// NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) NewVniPeerGroup(CpVni uint32, EgressVni uint32) (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.VniPeerGroup == nil {
		t.VniPeerGroup = make(map[NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup_Key]*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup)
	}

	key := NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup_Key{
		CpVni:     CpVni,
		EgressVni: EgressVni,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.VniPeerGroup[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list VniPeerGroup", key)
	}

	t.VniPeerGroup[key] = &NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup{
		CpVni:     &CpVni,
		EgressVni: &EgressVni,
	}

	return t.VniPeerGroup[key], nil
}

// RenameVniPeerGroup renames an entry in the list VniPeerGroup within
// the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) RenameVniPeerGroup(oldK, newK NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup_Key) error {
	if _, ok := t.VniPeerGroup[newK]; ok {
		return fmt.Errorf("key %v already exists in VniPeerGroup", newK)
	}

	e, ok := t.VniPeerGroup[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in VniPeerGroup", oldK)
	}
	e.CpVni = &newK.CpVni
	e.EgressVni = &newK.EgressVni

	t.VniPeerGroup[newK] = e
	delete(t.VniPeerGroup, oldK)
	return nil
}

// GetOrCreateVniPeerGroupMap returns the list (map) from NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) GetOrCreateVniPeerGroupMap() map[NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup_Key]*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup {
	if t.VniPeerGroup == nil {
		t.VniPeerGroup = make(map[NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup_Key]*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup)
	}
	return t.VniPeerGroup
}

// GetOrCreateVniPeerGroup retrieves the value with the specified keys from
// the receiver NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) GetOrCreateVniPeerGroup(CpVni uint32, EgressVni uint32) *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup {

	key := NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup_Key{
		CpVni:     CpVni,
		EgressVni: EgressVni,
	}

	if v, ok := t.VniPeerGroup[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewVniPeerGroup(CpVni, EgressVni)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateVniPeerGroup got unexpected error: %v", err))
	}
	return v
}

// GetVniPeerGroup retrieves the value with the specified key from
// the VniPeerGroup map field of NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) GetVniPeerGroup(CpVni uint32, EgressVni uint32) *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup {

	if t == nil {
		return nil
	}

	key := NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup_Key{
		CpVni:     CpVni,
		EgressVni: EgressVni,
	}

	if lm, ok := t.VniPeerGroup[key]; ok {
		return lm
	}
	return nil
}

// AppendVniPeerGroup appends the supplied NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup struct to the
// list VniPeerGroup of NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer. If the key value(s) specified in
// the supplied NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup already exist in the list, an error is
// returned.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) AppendVniPeerGroup(v *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup) error {
	if v.CpVni == nil {
		return fmt.Errorf("invalid nil key for CpVni")
	}

	if v.EgressVni == nil {
		return fmt.Errorf("invalid nil key for EgressVni")
	}

	key := NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup_Key{
		CpVni:     *v.CpVni,
		EgressVni: *v.EgressVni,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.VniPeerGroup == nil {
		t.VniPeerGroup = make(map[NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup_Key]*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup)
	}

	if _, ok := t.VniPeerGroup[key]; ok {
		return fmt.Errorf("duplicate key for list VniPeerGroup %v", key)
	}

	t.VniPeerGroup[key] = v
	return nil
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) GetOrCreateCounters() *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) GetCounters() *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetControlPlaneVnis retrieves the value of the leaf ControlPlaneVnis from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ControlPlaneVnis is set, it can
// safely use t.GetControlPlaneVnis() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ControlPlaneVnis == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) GetControlPlaneVnis() []uint32 {
	if t == nil || t.ControlPlaneVnis == nil {
		return nil
	}
	return t.ControlPlaneVnis
}

// GetPeerAddress retrieves the value of the leaf PeerAddress from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerAddress is set, it can
// safely use t.GetPeerAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) GetPeerAddress() string {
	if t == nil || t.PeerAddress == nil {
		return ""
	}
	return *t.PeerAddress
}

// GetPeerState retrieves the value of the leaf PeerState from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerState is set, it can
// safely use t.GetPeerState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerState == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) GetPeerState() E_EndpointPeer_PeerState {
	if t == nil || t.PeerState == 0 {
		return 0
	}
	return t.PeerState
}

// GetRouterMac retrieves the value of the leaf RouterMac from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterMac is set, it can
// safely use t.GetRouterMac() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterMac == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) GetRouterMac() string {
	if t == nil || t.RouterMac == nil {
		return ""
	}
	return *t.RouterMac
}

// GetUptime retrieves the value of the leaf Uptime from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Uptime is set, it can
// safely use t.GetUptime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Uptime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) GetUptime() uint64 {
	if t == nil || t.Uptime == nil {
		return 0
	}
	return *t.Uptime
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Counters.PopulateDefaults()
	for _, e := range t.VniPeerGroup {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer struct, which is a YANG list entry.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) ΛListKeyMap() (map[string]interface{}, error) {
	if t.PeerAddress == nil {
		return nil, fmt.Errorf("nil value for key PeerAddress")
	}

	return map[string]interface{}{
		"peer-address": *t.PeerAddress,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters represents the /openconfig-network-instance/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-peers/endpoint-peer/state/counters YANG schema element.
type NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters struct {
	ΛMetadata              []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	BumDecapIrPkts         *uint64           `path:"bum-decap-ir-pkts" module:"openconfig-network-instance"`
	ΛBumDecapIrPkts        []ygot.Annotation `path:"@bum-decap-ir-pkts" ygotAnnotation:"true"`
	BumDecapMulticastPkts  *uint64           `path:"bum-decap-multicast-pkts" module:"openconfig-network-instance"`
	ΛBumDecapMulticastPkts []ygot.Annotation `path:"@bum-decap-multicast-pkts" ygotAnnotation:"true"`
	BumDecapPkts           *uint64           `path:"bum-decap-pkts" module:"openconfig-network-instance"`
	ΛBumDecapPkts          []ygot.Annotation `path:"@bum-decap-pkts" ygotAnnotation:"true"`
	BumEncapPkts           *uint64           `path:"bum-encap-pkts" module:"openconfig-network-instance"`
	ΛBumEncapPkts          []ygot.Annotation `path:"@bum-encap-pkts" ygotAnnotation:"true"`
	DropDecapPkts          *uint64           `path:"drop-decap-pkts" module:"openconfig-network-instance"`
	ΛDropDecapPkts         []ygot.Annotation `path:"@drop-decap-pkts" ygotAnnotation:"true"`
	ExceptDecapPkts        *uint64           `path:"except-decap-pkts" module:"openconfig-network-instance"`
	ΛExceptDecapPkts       []ygot.Annotation `path:"@except-decap-pkts" ygotAnnotation:"true"`
	TotalDecapBytes        *uint64           `path:"total-decap-bytes" module:"openconfig-network-instance"`
	ΛTotalDecapBytes       []ygot.Annotation `path:"@total-decap-bytes" ygotAnnotation:"true"`
	TotalDecapPkts         *uint64           `path:"total-decap-pkts" module:"openconfig-network-instance"`
	ΛTotalDecapPkts        []ygot.Annotation `path:"@total-decap-pkts" ygotAnnotation:"true"`
	TotalEncapBytes        *uint64           `path:"total-encap-bytes" module:"openconfig-network-instance"`
	ΛTotalEncapBytes       []ygot.Annotation `path:"@total-encap-bytes" ygotAnnotation:"true"`
	TotalEncapPkts         *uint64           `path:"total-encap-pkts" module:"openconfig-network-instance"`
	ΛTotalEncapPkts        []ygot.Annotation `path:"@total-encap-pkts" ygotAnnotation:"true"`
	UnicastDecapPkts       *uint64           `path:"unicast-decap-pkts" module:"openconfig-network-instance"`
	ΛUnicastDecapPkts      []ygot.Annotation `path:"@unicast-decap-pkts" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters) IsYANGGoStruct() {}

// GetBumDecapIrPkts retrieves the value of the leaf BumDecapIrPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BumDecapIrPkts is set, it can
// safely use t.GetBumDecapIrPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BumDecapIrPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters) GetBumDecapIrPkts() uint64 {
	if t == nil || t.BumDecapIrPkts == nil {
		return 0
	}
	return *t.BumDecapIrPkts
}

// GetBumDecapMulticastPkts retrieves the value of the leaf BumDecapMulticastPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BumDecapMulticastPkts is set, it can
// safely use t.GetBumDecapMulticastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BumDecapMulticastPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters) GetBumDecapMulticastPkts() uint64 {
	if t == nil || t.BumDecapMulticastPkts == nil {
		return 0
	}
	return *t.BumDecapMulticastPkts
}

// GetBumDecapPkts retrieves the value of the leaf BumDecapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BumDecapPkts is set, it can
// safely use t.GetBumDecapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BumDecapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters) GetBumDecapPkts() uint64 {
	if t == nil || t.BumDecapPkts == nil {
		return 0
	}
	return *t.BumDecapPkts
}

// GetBumEncapPkts retrieves the value of the leaf BumEncapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BumEncapPkts is set, it can
// safely use t.GetBumEncapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BumEncapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters) GetBumEncapPkts() uint64 {
	if t == nil || t.BumEncapPkts == nil {
		return 0
	}
	return *t.BumEncapPkts
}

// GetDropDecapPkts retrieves the value of the leaf DropDecapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DropDecapPkts is set, it can
// safely use t.GetDropDecapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DropDecapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters) GetDropDecapPkts() uint64 {
	if t == nil || t.DropDecapPkts == nil {
		return 0
	}
	return *t.DropDecapPkts
}

// GetExceptDecapPkts retrieves the value of the leaf ExceptDecapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExceptDecapPkts is set, it can
// safely use t.GetExceptDecapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExceptDecapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters) GetExceptDecapPkts() uint64 {
	if t == nil || t.ExceptDecapPkts == nil {
		return 0
	}
	return *t.ExceptDecapPkts
}

// GetTotalDecapBytes retrieves the value of the leaf TotalDecapBytes from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalDecapBytes is set, it can
// safely use t.GetTotalDecapBytes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalDecapBytes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters) GetTotalDecapBytes() uint64 {
	if t == nil || t.TotalDecapBytes == nil {
		return 0
	}
	return *t.TotalDecapBytes
}

// GetTotalDecapPkts retrieves the value of the leaf TotalDecapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalDecapPkts is set, it can
// safely use t.GetTotalDecapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalDecapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters) GetTotalDecapPkts() uint64 {
	if t == nil || t.TotalDecapPkts == nil {
		return 0
	}
	return *t.TotalDecapPkts
}

// GetTotalEncapBytes retrieves the value of the leaf TotalEncapBytes from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalEncapBytes is set, it can
// safely use t.GetTotalEncapBytes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalEncapBytes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters) GetTotalEncapBytes() uint64 {
	if t == nil || t.TotalEncapBytes == nil {
		return 0
	}
	return *t.TotalEncapBytes
}

// GetTotalEncapPkts retrieves the value of the leaf TotalEncapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalEncapPkts is set, it can
// safely use t.GetTotalEncapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalEncapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters) GetTotalEncapPkts() uint64 {
	if t == nil || t.TotalEncapPkts == nil {
		return 0
	}
	return *t.TotalEncapPkts
}

// GetUnicastDecapPkts retrieves the value of the leaf UnicastDecapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UnicastDecapPkts is set, it can
// safely use t.GetUnicastDecapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UnicastDecapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters) GetUnicastDecapPkts() uint64 {
	if t == nil || t.UnicastDecapPkts == nil {
		return 0
	}
	return *t.UnicastDecapPkts
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup represents the /openconfig-network-instance/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-peers/endpoint-peer/vni-peer-groups/vni-peer-group YANG schema element.
type NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	CpVni      *uint32           `path:"state/cp-vni|cp-vni" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛCpVni     []ygot.Annotation `path:"state/@cp-vni|@cp-vni" ygotAnnotation:"true"`
	EgressVni  *uint32           `path:"state/egress-vni|egress-vni" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEgressVni []ygot.Annotation `path:"state/@egress-vni|@egress-vni" ygotAnnotation:"true"`
	RouterMac  *string           `path:"state/router-mac" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouterMac []ygot.Annotation `path:"state/@router-mac" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup) IsYANGGoStruct() {}

// GetCpVni retrieves the value of the leaf CpVni from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CpVni is set, it can
// safely use t.GetCpVni() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CpVni == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup) GetCpVni() uint32 {
	if t == nil || t.CpVni == nil {
		return 0
	}
	return *t.CpVni
}

// GetEgressVni retrieves the value of the leaf EgressVni from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EgressVni is set, it can
// safely use t.GetEgressVni() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EgressVni == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup) GetEgressVni() uint32 {
	if t == nil || t.EgressVni == nil {
		return 0
	}
	return *t.EgressVni
}

// GetRouterMac retrieves the value of the leaf RouterMac from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterMac is set, it can
// safely use t.GetRouterMac() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterMac == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup) GetRouterMac() string {
	if t == nil || t.RouterMac == nil {
		return ""
	}
	return *t.RouterMac
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup struct, which is a YANG list entry.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup) ΛListKeyMap() (map[string]interface{}, error) {
	if t.CpVni == nil {
		return nil, fmt.Errorf("nil value for key CpVni")
	}

	if t.EgressVni == nil {
		return nil, fmt.Errorf("nil value for key EgressVni")
	}

	return map[string]interface{}{
		"cp-vni":     *t.CpVni,
		"egress-vni": *t.EgressVni,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointPeer_VniPeerGroup) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni represents the /openconfig-network-instance/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-vnis/endpoint-vni YANG schema element.
type NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni struct {
	ΛMetadata                []ygot.Annotation                                                                        `path:"@" ygotAnnotation:"true"`
	BridgeDomain             *uint32                                                                                  `path:"state/bridge-domain" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBridgeDomain            []ygot.Annotation                                                                        `path:"state/@bridge-domain" ygotAnnotation:"true"`
	Ipv4                     *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4                         `path:"ipv4" module:"openconfig-network-instance"`
	ΛIpv4                    []ygot.Annotation                                                                        `path:"@ipv4" ygotAnnotation:"true"`
	Ipv6                     *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6                         `path:"ipv6" module:"openconfig-network-instance"`
	ΛIpv6                    []ygot.Annotation                                                                        `path:"@ipv6" ygotAnnotation:"true"`
	L3VrfName                *string                                                                                  `path:"state/l3-vrf-name" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛL3VrfName               []ygot.Annotation                                                                        `path:"state/@l3-vrf-name" ygotAnnotation:"true"`
	LearningMode             E_EvpnTypes_LearningMode                                                                 `path:"state/learning-mode" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLearningMode            []ygot.Annotation                                                                        `path:"state/@learning-mode" ygotAnnotation:"true"`
	MultidestinationTraffic  NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_MultidestinationTraffic_Union `path:"state/multidestination-traffic" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMultidestinationTraffic []ygot.Annotation                                                                        `path:"state/@multidestination-traffic" ygotAnnotation:"true"`
	SviState                 E_EndpointVni_SviState                                                                   `path:"state/svi-state" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSviState                []ygot.Annotation                                                                        `path:"state/@svi-state" ygotAnnotation:"true"`
	Vni                      *uint32                                                                                  `path:"state/vni|vni" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛVni                     []ygot.Annotation                                                                        `path:"state/@vni|@vni" ygotAnnotation:"true"`
	VniState                 E_EndpointVni_VniState                                                                   `path:"state/vni-state" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛVniState                []ygot.Annotation                                                                        `path:"state/@vni-state" ygotAnnotation:"true"`
	VniType                  E_EndpointVni_VniType                                                                    `path:"state/vni-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛVniType                 []ygot.Annotation                                                                        `path:"state/@vni-type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) IsYANGGoStruct() {}

// GetOrCreateIpv4 retrieves the value of the Ipv4 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) GetOrCreateIpv4() *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4 {
	if t.Ipv4 != nil {
		return t.Ipv4
	}
	t.Ipv4 = &NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4{}
	return t.Ipv4
}

// GetOrCreateIpv6 retrieves the value of the Ipv6 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) GetOrCreateIpv6() *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6 {
	if t.Ipv6 != nil {
		return t.Ipv6
	}
	t.Ipv6 = &NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6{}
	return t.Ipv6
}

// GetIpv4 returns the value of the Ipv4 struct pointer
// from NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni. If the receiver or the field Ipv4 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) GetIpv4() *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4 {
	if t != nil && t.Ipv4 != nil {
		return t.Ipv4
	}
	return nil
}

// GetIpv6 returns the value of the Ipv6 struct pointer
// from NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni. If the receiver or the field Ipv6 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) GetIpv6() *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6 {
	if t != nil && t.Ipv6 != nil {
		return t.Ipv6
	}
	return nil
}

// GetBridgeDomain retrieves the value of the leaf BridgeDomain from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BridgeDomain is set, it can
// safely use t.GetBridgeDomain() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BridgeDomain == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) GetBridgeDomain() uint32 {
	if t == nil || t.BridgeDomain == nil {
		return 0
	}
	return *t.BridgeDomain
}

// GetL3VrfName retrieves the value of the leaf L3VrfName from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if L3VrfName is set, it can
// safely use t.GetL3VrfName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.L3VrfName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) GetL3VrfName() string {
	if t == nil || t.L3VrfName == nil {
		return ""
	}
	return *t.L3VrfName
}

// GetLearningMode retrieves the value of the leaf LearningMode from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LearningMode is set, it can
// safely use t.GetLearningMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LearningMode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) GetLearningMode() E_EvpnTypes_LearningMode {
	if t == nil || t.LearningMode == 0 {
		return 0
	}
	return t.LearningMode
}

// GetMultidestinationTraffic retrieves the value of the leaf MultidestinationTraffic from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MultidestinationTraffic is set, it can
// safely use t.GetMultidestinationTraffic() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MultidestinationTraffic == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) GetMultidestinationTraffic() NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_MultidestinationTraffic_Union {
	if t == nil || t.MultidestinationTraffic == nil {
		return nil
	}
	return t.MultidestinationTraffic
}

// GetSviState retrieves the value of the leaf SviState from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SviState is set, it can
// safely use t.GetSviState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SviState == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) GetSviState() E_EndpointVni_SviState {
	if t == nil || t.SviState == 0 {
		return 0
	}
	return t.SviState
}

// GetVni retrieves the value of the leaf Vni from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Vni is set, it can
// safely use t.GetVni() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Vni == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) GetVni() uint32 {
	if t == nil || t.Vni == nil {
		return 0
	}
	return *t.Vni
}

// GetVniState retrieves the value of the leaf VniState from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VniState is set, it can
// safely use t.GetVniState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VniState == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) GetVniState() E_EndpointVni_VniState {
	if t == nil || t.VniState == 0 {
		return 0
	}
	return t.VniState
}

// GetVniType retrieves the value of the leaf VniType from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VniType is set, it can
// safely use t.GetVniType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VniType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) GetVniType() E_EndpointVni_VniType {
	if t == nil || t.VniType == 0 {
		return 0
	}
	return t.VniType
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Ipv4.PopulateDefaults()
	t.Ipv6.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni struct, which is a YANG list entry.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Vni == nil {
		return nil, fmt.Errorf("nil value for key Vni")
	}

	return map[string]interface{}{
		"vni": *t.Vni,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_MultidestinationTraffic_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-vnis/endpoint-vni/state/multidestination-traffic within the YANG schema.
// Union type can be one of [E_EndpointVni_MultidestinationTraffic_Enum, UnionString].
type NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_MultidestinationTraffic_Union interface {
	// Union type can be one of [E_EndpointVni_MultidestinationTraffic_Enum, UnionString]
	Documentation_for_NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_MultidestinationTraffic_Union()
}

// Documentation_for_NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_MultidestinationTraffic_Union ensures that E_EndpointVni_MultidestinationTraffic_Enum
// implements the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_MultidestinationTraffic_Union interface.
func (E_EndpointVni_MultidestinationTraffic_Enum) Documentation_for_NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_MultidestinationTraffic_Union() {
}

// Documentation_for_NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_MultidestinationTraffic_Union ensures that UnionString
// implements the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_MultidestinationTraffic_Union interface.
func (UnionString) Documentation_for_NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_MultidestinationTraffic_Union() {
}

// To_NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_MultidestinationTraffic_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_MultidestinationTraffic_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni) To_NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_MultidestinationTraffic_Union(i interface{}) (NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_MultidestinationTraffic_Union, error) {
	if v, ok := i.(NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_MultidestinationTraffic_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_MultidestinationTraffic_Union, unknown union type, got: %T, want any of [E_EndpointVni_MultidestinationTraffic_Enum, string]", i, i)
}

// NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4 represents the /openconfig-network-instance/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-vnis/endpoint-vni/ipv4 YANG schema element.
type NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4 struct {
	ΛMetadata []ygot.Annotation                                                         `path:"@" ygotAnnotation:"true"`
	Counters  *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters []ygot.Annotation                                                         `path:"state/@counters" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4) GetOrCreateCounters() *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4) GetCounters() *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Counters.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters represents the /openconfig-network-instance/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-vnis/endpoint-vni/ipv4/state/counters YANG schema element.
type NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters struct {
	ΛMetadata              []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	BumDecapIrPkts         *uint64           `path:"bum-decap-ir-pkts" module:"openconfig-network-instance"`
	ΛBumDecapIrPkts        []ygot.Annotation `path:"@bum-decap-ir-pkts" ygotAnnotation:"true"`
	BumDecapMulticastPkts  *uint64           `path:"bum-decap-multicast-pkts" module:"openconfig-network-instance"`
	ΛBumDecapMulticastPkts []ygot.Annotation `path:"@bum-decap-multicast-pkts" ygotAnnotation:"true"`
	BumDecapPkts           *uint64           `path:"bum-decap-pkts" module:"openconfig-network-instance"`
	ΛBumDecapPkts          []ygot.Annotation `path:"@bum-decap-pkts" ygotAnnotation:"true"`
	BumEncapPkts           *uint64           `path:"bum-encap-pkts" module:"openconfig-network-instance"`
	ΛBumEncapPkts          []ygot.Annotation `path:"@bum-encap-pkts" ygotAnnotation:"true"`
	DropDecapPkts          *uint64           `path:"drop-decap-pkts" module:"openconfig-network-instance"`
	ΛDropDecapPkts         []ygot.Annotation `path:"@drop-decap-pkts" ygotAnnotation:"true"`
	ExceptDecapPkts        *uint64           `path:"except-decap-pkts" module:"openconfig-network-instance"`
	ΛExceptDecapPkts       []ygot.Annotation `path:"@except-decap-pkts" ygotAnnotation:"true"`
	TotalDecapBytes        *uint64           `path:"total-decap-bytes" module:"openconfig-network-instance"`
	ΛTotalDecapBytes       []ygot.Annotation `path:"@total-decap-bytes" ygotAnnotation:"true"`
	TotalDecapPkts         *uint64           `path:"total-decap-pkts" module:"openconfig-network-instance"`
	ΛTotalDecapPkts        []ygot.Annotation `path:"@total-decap-pkts" ygotAnnotation:"true"`
	TotalEncapBytes        *uint64           `path:"total-encap-bytes" module:"openconfig-network-instance"`
	ΛTotalEncapBytes       []ygot.Annotation `path:"@total-encap-bytes" ygotAnnotation:"true"`
	TotalEncapPkts         *uint64           `path:"total-encap-pkts" module:"openconfig-network-instance"`
	ΛTotalEncapPkts        []ygot.Annotation `path:"@total-encap-pkts" ygotAnnotation:"true"`
	UnicastDecapPkts       *uint64           `path:"unicast-decap-pkts" module:"openconfig-network-instance"`
	ΛUnicastDecapPkts      []ygot.Annotation `path:"@unicast-decap-pkts" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters) IsYANGGoStruct() {}

// GetBumDecapIrPkts retrieves the value of the leaf BumDecapIrPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BumDecapIrPkts is set, it can
// safely use t.GetBumDecapIrPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BumDecapIrPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters) GetBumDecapIrPkts() uint64 {
	if t == nil || t.BumDecapIrPkts == nil {
		return 0
	}
	return *t.BumDecapIrPkts
}

// GetBumDecapMulticastPkts retrieves the value of the leaf BumDecapMulticastPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BumDecapMulticastPkts is set, it can
// safely use t.GetBumDecapMulticastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BumDecapMulticastPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters) GetBumDecapMulticastPkts() uint64 {
	if t == nil || t.BumDecapMulticastPkts == nil {
		return 0
	}
	return *t.BumDecapMulticastPkts
}

// GetBumDecapPkts retrieves the value of the leaf BumDecapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BumDecapPkts is set, it can
// safely use t.GetBumDecapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BumDecapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters) GetBumDecapPkts() uint64 {
	if t == nil || t.BumDecapPkts == nil {
		return 0
	}
	return *t.BumDecapPkts
}

// GetBumEncapPkts retrieves the value of the leaf BumEncapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BumEncapPkts is set, it can
// safely use t.GetBumEncapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BumEncapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters) GetBumEncapPkts() uint64 {
	if t == nil || t.BumEncapPkts == nil {
		return 0
	}
	return *t.BumEncapPkts
}

// GetDropDecapPkts retrieves the value of the leaf DropDecapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DropDecapPkts is set, it can
// safely use t.GetDropDecapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DropDecapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters) GetDropDecapPkts() uint64 {
	if t == nil || t.DropDecapPkts == nil {
		return 0
	}
	return *t.DropDecapPkts
}

// GetExceptDecapPkts retrieves the value of the leaf ExceptDecapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExceptDecapPkts is set, it can
// safely use t.GetExceptDecapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExceptDecapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters) GetExceptDecapPkts() uint64 {
	if t == nil || t.ExceptDecapPkts == nil {
		return 0
	}
	return *t.ExceptDecapPkts
}

// GetTotalDecapBytes retrieves the value of the leaf TotalDecapBytes from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalDecapBytes is set, it can
// safely use t.GetTotalDecapBytes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalDecapBytes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters) GetTotalDecapBytes() uint64 {
	if t == nil || t.TotalDecapBytes == nil {
		return 0
	}
	return *t.TotalDecapBytes
}

// GetTotalDecapPkts retrieves the value of the leaf TotalDecapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalDecapPkts is set, it can
// safely use t.GetTotalDecapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalDecapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters) GetTotalDecapPkts() uint64 {
	if t == nil || t.TotalDecapPkts == nil {
		return 0
	}
	return *t.TotalDecapPkts
}

// GetTotalEncapBytes retrieves the value of the leaf TotalEncapBytes from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalEncapBytes is set, it can
// safely use t.GetTotalEncapBytes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalEncapBytes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters) GetTotalEncapBytes() uint64 {
	if t == nil || t.TotalEncapBytes == nil {
		return 0
	}
	return *t.TotalEncapBytes
}

// GetTotalEncapPkts retrieves the value of the leaf TotalEncapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalEncapPkts is set, it can
// safely use t.GetTotalEncapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalEncapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters) GetTotalEncapPkts() uint64 {
	if t == nil || t.TotalEncapPkts == nil {
		return 0
	}
	return *t.TotalEncapPkts
}

// GetUnicastDecapPkts retrieves the value of the leaf UnicastDecapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UnicastDecapPkts is set, it can
// safely use t.GetUnicastDecapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UnicastDecapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters) GetUnicastDecapPkts() uint64 {
	if t == nil || t.UnicastDecapPkts == nil {
		return 0
	}
	return *t.UnicastDecapPkts
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv4_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6 represents the /openconfig-network-instance/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-vnis/endpoint-vni/ipv6 YANG schema element.
type NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6 struct {
	ΛMetadata []ygot.Annotation                                                         `path:"@" ygotAnnotation:"true"`
	Counters  *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters []ygot.Annotation                                                         `path:"state/@counters" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6) GetOrCreateCounters() *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6) GetCounters() *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Counters.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters represents the /openconfig-network-instance/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-vnis/endpoint-vni/ipv6/state/counters YANG schema element.
type NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters struct {
	ΛMetadata              []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	BumDecapIrPkts         *uint64           `path:"bum-decap-ir-pkts" module:"openconfig-network-instance"`
	ΛBumDecapIrPkts        []ygot.Annotation `path:"@bum-decap-ir-pkts" ygotAnnotation:"true"`
	BumDecapMulticastPkts  *uint64           `path:"bum-decap-multicast-pkts" module:"openconfig-network-instance"`
	ΛBumDecapMulticastPkts []ygot.Annotation `path:"@bum-decap-multicast-pkts" ygotAnnotation:"true"`
	BumDecapPkts           *uint64           `path:"bum-decap-pkts" module:"openconfig-network-instance"`
	ΛBumDecapPkts          []ygot.Annotation `path:"@bum-decap-pkts" ygotAnnotation:"true"`
	BumEncapPkts           *uint64           `path:"bum-encap-pkts" module:"openconfig-network-instance"`
	ΛBumEncapPkts          []ygot.Annotation `path:"@bum-encap-pkts" ygotAnnotation:"true"`
	DropDecapPkts          *uint64           `path:"drop-decap-pkts" module:"openconfig-network-instance"`
	ΛDropDecapPkts         []ygot.Annotation `path:"@drop-decap-pkts" ygotAnnotation:"true"`
	ExceptDecapPkts        *uint64           `path:"except-decap-pkts" module:"openconfig-network-instance"`
	ΛExceptDecapPkts       []ygot.Annotation `path:"@except-decap-pkts" ygotAnnotation:"true"`
	TotalDecapBytes        *uint64           `path:"total-decap-bytes" module:"openconfig-network-instance"`
	ΛTotalDecapBytes       []ygot.Annotation `path:"@total-decap-bytes" ygotAnnotation:"true"`
	TotalDecapPkts         *uint64           `path:"total-decap-pkts" module:"openconfig-network-instance"`
	ΛTotalDecapPkts        []ygot.Annotation `path:"@total-decap-pkts" ygotAnnotation:"true"`
	TotalEncapBytes        *uint64           `path:"total-encap-bytes" module:"openconfig-network-instance"`
	ΛTotalEncapBytes       []ygot.Annotation `path:"@total-encap-bytes" ygotAnnotation:"true"`
	TotalEncapPkts         *uint64           `path:"total-encap-pkts" module:"openconfig-network-instance"`
	ΛTotalEncapPkts        []ygot.Annotation `path:"@total-encap-pkts" ygotAnnotation:"true"`
	UnicastDecapPkts       *uint64           `path:"unicast-decap-pkts" module:"openconfig-network-instance"`
	ΛUnicastDecapPkts      []ygot.Annotation `path:"@unicast-decap-pkts" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters) IsYANGGoStruct() {}

// GetBumDecapIrPkts retrieves the value of the leaf BumDecapIrPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BumDecapIrPkts is set, it can
// safely use t.GetBumDecapIrPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BumDecapIrPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters) GetBumDecapIrPkts() uint64 {
	if t == nil || t.BumDecapIrPkts == nil {
		return 0
	}
	return *t.BumDecapIrPkts
}

// GetBumDecapMulticastPkts retrieves the value of the leaf BumDecapMulticastPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BumDecapMulticastPkts is set, it can
// safely use t.GetBumDecapMulticastPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BumDecapMulticastPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters) GetBumDecapMulticastPkts() uint64 {
	if t == nil || t.BumDecapMulticastPkts == nil {
		return 0
	}
	return *t.BumDecapMulticastPkts
}

// GetBumDecapPkts retrieves the value of the leaf BumDecapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BumDecapPkts is set, it can
// safely use t.GetBumDecapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BumDecapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters) GetBumDecapPkts() uint64 {
	if t == nil || t.BumDecapPkts == nil {
		return 0
	}
	return *t.BumDecapPkts
}

// GetBumEncapPkts retrieves the value of the leaf BumEncapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BumEncapPkts is set, it can
// safely use t.GetBumEncapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BumEncapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters) GetBumEncapPkts() uint64 {
	if t == nil || t.BumEncapPkts == nil {
		return 0
	}
	return *t.BumEncapPkts
}

// GetDropDecapPkts retrieves the value of the leaf DropDecapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DropDecapPkts is set, it can
// safely use t.GetDropDecapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DropDecapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters) GetDropDecapPkts() uint64 {
	if t == nil || t.DropDecapPkts == nil {
		return 0
	}
	return *t.DropDecapPkts
}

// GetExceptDecapPkts retrieves the value of the leaf ExceptDecapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExceptDecapPkts is set, it can
// safely use t.GetExceptDecapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExceptDecapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters) GetExceptDecapPkts() uint64 {
	if t == nil || t.ExceptDecapPkts == nil {
		return 0
	}
	return *t.ExceptDecapPkts
}

// GetTotalDecapBytes retrieves the value of the leaf TotalDecapBytes from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalDecapBytes is set, it can
// safely use t.GetTotalDecapBytes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalDecapBytes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters) GetTotalDecapBytes() uint64 {
	if t == nil || t.TotalDecapBytes == nil {
		return 0
	}
	return *t.TotalDecapBytes
}

// GetTotalDecapPkts retrieves the value of the leaf TotalDecapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalDecapPkts is set, it can
// safely use t.GetTotalDecapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalDecapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters) GetTotalDecapPkts() uint64 {
	if t == nil || t.TotalDecapPkts == nil {
		return 0
	}
	return *t.TotalDecapPkts
}

// GetTotalEncapBytes retrieves the value of the leaf TotalEncapBytes from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalEncapBytes is set, it can
// safely use t.GetTotalEncapBytes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalEncapBytes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters) GetTotalEncapBytes() uint64 {
	if t == nil || t.TotalEncapBytes == nil {
		return 0
	}
	return *t.TotalEncapBytes
}

// GetTotalEncapPkts retrieves the value of the leaf TotalEncapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalEncapPkts is set, it can
// safely use t.GetTotalEncapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalEncapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters) GetTotalEncapPkts() uint64 {
	if t == nil || t.TotalEncapPkts == nil {
		return 0
	}
	return *t.TotalEncapPkts
}

// GetUnicastDecapPkts retrieves the value of the leaf UnicastDecapPkts from the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UnicastDecapPkts is set, it can
// safely use t.GetUnicastDecapPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UnicastDecapPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters) GetUnicastDecapPkts() uint64 {
	if t == nil || t.UnicastDecapPkts == nil {
		return 0
	}
	return *t.UnicastDecapPkts
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters.
func (*NetworkInstance_ConnectionPoint_Endpoint_Vxlan_EndpointVni_Ipv6_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Encapsulation represents the /openconfig-network-instance/network-instances/network-instance/encapsulation YANG schema element.
type NetworkInstance_Encapsulation struct {
	ΛMetadata            []ygot.Annotation                            `path:"@" ygotAnnotation:"true"`
	ControlWord          *bool                                        `path:"config/control-word" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛControlWord         []ygot.Annotation                            `path:"config/@control-word" ygotAnnotation:"true"`
	EncapsulationType    E_NetworkInstanceTypes_ENCAPSULATION         `path:"config/encapsulation-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEncapsulationType   []ygot.Annotation                            `path:"config/@encapsulation-type" ygotAnnotation:"true"`
	LabelAllocationMode  E_NetworkInstanceTypes_LABEL_ALLOCATION_MODE `path:"config/label-allocation-mode" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabelAllocationMode []ygot.Annotation                            `path:"config/@label-allocation-mode" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Encapsulation implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Encapsulation) IsYANGGoStruct() {}

// GetControlWord retrieves the value of the leaf ControlWord from the NetworkInstance_Encapsulation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ControlWord is set, it can
// safely use t.GetControlWord() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ControlWord == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Encapsulation) GetControlWord() bool {
	if t == nil || t.ControlWord == nil {
		return false
	}
	return *t.ControlWord
}

// GetEncapsulationType retrieves the value of the leaf EncapsulationType from the NetworkInstance_Encapsulation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EncapsulationType is set, it can
// safely use t.GetEncapsulationType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EncapsulationType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Encapsulation) GetEncapsulationType() E_NetworkInstanceTypes_ENCAPSULATION {
	if t == nil || t.EncapsulationType == 0 {
		return 0
	}
	return t.EncapsulationType
}

// GetLabelAllocationMode retrieves the value of the leaf LabelAllocationMode from the NetworkInstance_Encapsulation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LabelAllocationMode is set, it can
// safely use t.GetLabelAllocationMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LabelAllocationMode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Encapsulation) GetLabelAllocationMode() E_NetworkInstanceTypes_LABEL_ALLOCATION_MODE {
	if t == nil || t.LabelAllocationMode == 0 {
		return 0
	}
	return t.LabelAllocationMode
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Encapsulation
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Encapsulation) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Encapsulation) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Encapsulation"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Encapsulation) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Encapsulation) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Encapsulation.
func (*NetworkInstance_Encapsulation) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Evpn represents the /openconfig-network-instance/network-instances/network-instance/evpn YANG schema element.
type NetworkInstance_Evpn struct {
	ΛMetadata     []ygot.Annotation                             `path:"@" ygotAnnotation:"true"`
	EvpnInstance  map[string]*NetworkInstance_Evpn_EvpnInstance `path:"evpn-instances/evpn-instance" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEvpnInstance []ygot.Annotation                             `path:"evpn-instances/@evpn-instance" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Evpn implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Evpn) IsYANGGoStruct() {}

// NewEvpnInstance creates a new entry in the EvpnInstance list of the
// NetworkInstance_Evpn struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Evpn) NewEvpnInstance(Evi string) (*NetworkInstance_Evpn_EvpnInstance, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.EvpnInstance == nil {
		t.EvpnInstance = make(map[string]*NetworkInstance_Evpn_EvpnInstance)
	}

	key := Evi

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.EvpnInstance[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list EvpnInstance", key)
	}

	t.EvpnInstance[key] = &NetworkInstance_Evpn_EvpnInstance{
		Evi: &Evi,
	}

	return t.EvpnInstance[key], nil
}

// RenameEvpnInstance renames an entry in the list EvpnInstance within
// the NetworkInstance_Evpn struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Evpn) RenameEvpnInstance(oldK, newK string) error {
	if _, ok := t.EvpnInstance[newK]; ok {
		return fmt.Errorf("key %v already exists in EvpnInstance", newK)
	}

	e, ok := t.EvpnInstance[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in EvpnInstance", oldK)
	}
	e.Evi = &newK

	t.EvpnInstance[newK] = e
	delete(t.EvpnInstance, oldK)
	return nil
}

// GetOrCreateEvpnInstanceMap returns the list (map) from NetworkInstance_Evpn.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Evpn) GetOrCreateEvpnInstanceMap() map[string]*NetworkInstance_Evpn_EvpnInstance {
	if t.EvpnInstance == nil {
		t.EvpnInstance = make(map[string]*NetworkInstance_Evpn_EvpnInstance)
	}
	return t.EvpnInstance
}

// GetOrCreateEvpnInstance retrieves the value with the specified keys from
// the receiver NetworkInstance_Evpn. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Evpn) GetOrCreateEvpnInstance(Evi string) *NetworkInstance_Evpn_EvpnInstance {

	key := Evi

	if v, ok := t.EvpnInstance[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewEvpnInstance(Evi)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateEvpnInstance got unexpected error: %v", err))
	}
	return v
}

// GetEvpnInstance retrieves the value with the specified key from
// the EvpnInstance map field of NetworkInstance_Evpn. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Evpn) GetEvpnInstance(Evi string) *NetworkInstance_Evpn_EvpnInstance {

	if t == nil {
		return nil
	}

	key := Evi

	if lm, ok := t.EvpnInstance[key]; ok {
		return lm
	}
	return nil
}

// AppendEvpnInstance appends the supplied NetworkInstance_Evpn_EvpnInstance struct to the
// list EvpnInstance of NetworkInstance_Evpn. If the key value(s) specified in
// the supplied NetworkInstance_Evpn_EvpnInstance already exist in the list, an error is
// returned.
func (t *NetworkInstance_Evpn) AppendEvpnInstance(v *NetworkInstance_Evpn_EvpnInstance) error {
	if v.Evi == nil {
		return fmt.Errorf("invalid nil key received for Evi")
	}

	key := *v.Evi

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.EvpnInstance == nil {
		t.EvpnInstance = make(map[string]*NetworkInstance_Evpn_EvpnInstance)
	}

	if _, ok := t.EvpnInstance[key]; ok {
		return fmt.Errorf("duplicate key for list EvpnInstance %v", key)
	}

	t.EvpnInstance[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Evpn
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Evpn) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.EvpnInstance {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Evpn) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Evpn"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Evpn) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Evpn) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Evpn.
func (*NetworkInstance_Evpn) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Evpn_EvpnInstance represents the /openconfig-network-instance/network-instances/network-instance/evpn/evpn-instances/evpn-instance YANG schema element.
type NetworkInstance_Evpn_EvpnInstance struct {
	ΛMetadata           []ygot.Annotation                                          `path:"@" ygotAnnotation:"true"`
	BComponent          map[string]*NetworkInstance_Evpn_EvpnInstance_BComponent   `path:"pbb/b-component" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBComponent         []ygot.Annotation                                          `path:"pbb/@b-component" ygotAnnotation:"true"`
	ControlWordEnabled  *bool                                                      `path:"config/control-word-enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛControlWordEnabled []ygot.Annotation                                          `path:"config/@control-word-enabled" ygotAnnotation:"true"`
	EncapsulationType   E_NetworkInstanceTypes_ENCAPSULATION                       `path:"config/encapsulation-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEncapsulationType  []ygot.Annotation                                          `path:"config/@encapsulation-type" ygotAnnotation:"true"`
	Evi                 *string                                                    `path:"config/evi|evi" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEvi                []ygot.Annotation                                          `path:"config/@evi|@evi" ygotAnnotation:"true"`
	ImportExportPolicy  *NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy      `path:"import-export-policy" module:"openconfig-network-instance"`
	ΛImportExportPolicy []ygot.Annotation                                          `path:"@import-export-policy" ygotAnnotation:"true"`
	MulticastGroup      *string                                                    `path:"config/multicast-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMulticastGroup     []ygot.Annotation                                          `path:"config/@multicast-group" ygotAnnotation:"true"`
	MulticastMask       *string                                                    `path:"config/multicast-mask" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMulticastMask      []ygot.Annotation                                          `path:"config/@multicast-mask" ygotAnnotation:"true"`
	ReplicationMode     E_EvpnInstance_ReplicationMode                             `path:"config/replication-mode" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReplicationMode    []ygot.Annotation                                          `path:"config/@replication-mode" ygotAnnotation:"true"`
	RouteDistinguisher  NetworkInstance_Evpn_EvpnInstance_RouteDistinguisher_Union `path:"config/route-distinguisher" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouteDistinguisher []ygot.Annotation                                          `path:"config/@route-distinguisher" ygotAnnotation:"true"`
	ServiceType         E_EvpnTypes_EVPN_TYPE                                      `path:"config/service-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛServiceType        []ygot.Annotation                                          `path:"config/@service-type" ygotAnnotation:"true"`
	Vxlan               *NetworkInstance_Evpn_EvpnInstance_Vxlan                   `path:"vxlan" module:"openconfig-network-instance"`
	ΛVxlan              []ygot.Annotation                                          `path:"@vxlan" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Evpn_EvpnInstance implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Evpn_EvpnInstance) IsYANGGoStruct() {}

// NewBComponent creates a new entry in the BComponent list of the
// NetworkInstance_Evpn_EvpnInstance struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Evpn_EvpnInstance) NewBComponent(BComponentName string) (*NetworkInstance_Evpn_EvpnInstance_BComponent, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.BComponent == nil {
		t.BComponent = make(map[string]*NetworkInstance_Evpn_EvpnInstance_BComponent)
	}

	key := BComponentName

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.BComponent[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list BComponent", key)
	}

	t.BComponent[key] = &NetworkInstance_Evpn_EvpnInstance_BComponent{
		BComponentName: &BComponentName,
	}

	return t.BComponent[key], nil
}

// RenameBComponent renames an entry in the list BComponent within
// the NetworkInstance_Evpn_EvpnInstance struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Evpn_EvpnInstance) RenameBComponent(oldK, newK string) error {
	if _, ok := t.BComponent[newK]; ok {
		return fmt.Errorf("key %v already exists in BComponent", newK)
	}

	e, ok := t.BComponent[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in BComponent", oldK)
	}
	e.BComponentName = &newK

	t.BComponent[newK] = e
	delete(t.BComponent, oldK)
	return nil
}

// GetOrCreateBComponentMap returns the list (map) from NetworkInstance_Evpn_EvpnInstance.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Evpn_EvpnInstance) GetOrCreateBComponentMap() map[string]*NetworkInstance_Evpn_EvpnInstance_BComponent {
	if t.BComponent == nil {
		t.BComponent = make(map[string]*NetworkInstance_Evpn_EvpnInstance_BComponent)
	}
	return t.BComponent
}

// GetOrCreateBComponent retrieves the value with the specified keys from
// the receiver NetworkInstance_Evpn_EvpnInstance. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Evpn_EvpnInstance) GetOrCreateBComponent(BComponentName string) *NetworkInstance_Evpn_EvpnInstance_BComponent {

	key := BComponentName

	if v, ok := t.BComponent[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewBComponent(BComponentName)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateBComponent got unexpected error: %v", err))
	}
	return v
}

// GetBComponent retrieves the value with the specified key from
// the BComponent map field of NetworkInstance_Evpn_EvpnInstance. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Evpn_EvpnInstance) GetBComponent(BComponentName string) *NetworkInstance_Evpn_EvpnInstance_BComponent {

	if t == nil {
		return nil
	}

	key := BComponentName

	if lm, ok := t.BComponent[key]; ok {
		return lm
	}
	return nil
}

// AppendBComponent appends the supplied NetworkInstance_Evpn_EvpnInstance_BComponent struct to the
// list BComponent of NetworkInstance_Evpn_EvpnInstance. If the key value(s) specified in
// the supplied NetworkInstance_Evpn_EvpnInstance_BComponent already exist in the list, an error is
// returned.
func (t *NetworkInstance_Evpn_EvpnInstance) AppendBComponent(v *NetworkInstance_Evpn_EvpnInstance_BComponent) error {
	if v.BComponentName == nil {
		return fmt.Errorf("invalid nil key received for BComponentName")
	}

	key := *v.BComponentName

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.BComponent == nil {
		t.BComponent = make(map[string]*NetworkInstance_Evpn_EvpnInstance_BComponent)
	}

	if _, ok := t.BComponent[key]; ok {
		return fmt.Errorf("duplicate key for list BComponent %v", key)
	}

	t.BComponent[key] = v
	return nil
}

// GetOrCreateImportExportPolicy retrieves the value of the ImportExportPolicy field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Evpn_EvpnInstance) GetOrCreateImportExportPolicy() *NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy {
	if t.ImportExportPolicy != nil {
		return t.ImportExportPolicy
	}
	t.ImportExportPolicy = &NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy{}
	return t.ImportExportPolicy
}

// GetOrCreateVxlan retrieves the value of the Vxlan field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Evpn_EvpnInstance) GetOrCreateVxlan() *NetworkInstance_Evpn_EvpnInstance_Vxlan {
	if t.Vxlan != nil {
		return t.Vxlan
	}
	t.Vxlan = &NetworkInstance_Evpn_EvpnInstance_Vxlan{}
	return t.Vxlan
}

// GetImportExportPolicy returns the value of the ImportExportPolicy struct pointer
// from NetworkInstance_Evpn_EvpnInstance. If the receiver or the field ImportExportPolicy is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Evpn_EvpnInstance) GetImportExportPolicy() *NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy {
	if t != nil && t.ImportExportPolicy != nil {
		return t.ImportExportPolicy
	}
	return nil
}

// GetVxlan returns the value of the Vxlan struct pointer
// from NetworkInstance_Evpn_EvpnInstance. If the receiver or the field Vxlan is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Evpn_EvpnInstance) GetVxlan() *NetworkInstance_Evpn_EvpnInstance_Vxlan {
	if t != nil && t.Vxlan != nil {
		return t.Vxlan
	}
	return nil
}

// GetControlWordEnabled retrieves the value of the leaf ControlWordEnabled from the NetworkInstance_Evpn_EvpnInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ControlWordEnabled is set, it can
// safely use t.GetControlWordEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ControlWordEnabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance) GetControlWordEnabled() bool {
	if t == nil || t.ControlWordEnabled == nil {
		return false
	}
	return *t.ControlWordEnabled
}

// GetEncapsulationType retrieves the value of the leaf EncapsulationType from the NetworkInstance_Evpn_EvpnInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EncapsulationType is set, it can
// safely use t.GetEncapsulationType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EncapsulationType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance) GetEncapsulationType() E_NetworkInstanceTypes_ENCAPSULATION {
	if t == nil || t.EncapsulationType == 0 {
		return 0
	}
	return t.EncapsulationType
}

// GetEvi retrieves the value of the leaf Evi from the NetworkInstance_Evpn_EvpnInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Evi is set, it can
// safely use t.GetEvi() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Evi == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance) GetEvi() string {
	if t == nil || t.Evi == nil {
		return ""
	}
	return *t.Evi
}

// GetMulticastGroup retrieves the value of the leaf MulticastGroup from the NetworkInstance_Evpn_EvpnInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MulticastGroup is set, it can
// safely use t.GetMulticastGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MulticastGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance) GetMulticastGroup() string {
	if t == nil || t.MulticastGroup == nil {
		return ""
	}
	return *t.MulticastGroup
}

// GetMulticastMask retrieves the value of the leaf MulticastMask from the NetworkInstance_Evpn_EvpnInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MulticastMask is set, it can
// safely use t.GetMulticastMask() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MulticastMask == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance) GetMulticastMask() string {
	if t == nil || t.MulticastMask == nil {
		return ""
	}
	return *t.MulticastMask
}

// GetReplicationMode retrieves the value of the leaf ReplicationMode from the NetworkInstance_Evpn_EvpnInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReplicationMode is set, it can
// safely use t.GetReplicationMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReplicationMode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance) GetReplicationMode() E_EvpnInstance_ReplicationMode {
	if t == nil || t.ReplicationMode == 0 {
		return 0
	}
	return t.ReplicationMode
}

// GetRouteDistinguisher retrieves the value of the leaf RouteDistinguisher from the NetworkInstance_Evpn_EvpnInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouteDistinguisher is set, it can
// safely use t.GetRouteDistinguisher() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouteDistinguisher == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance) GetRouteDistinguisher() NetworkInstance_Evpn_EvpnInstance_RouteDistinguisher_Union {
	if t == nil || t.RouteDistinguisher == nil {
		return nil
	}
	return t.RouteDistinguisher
}

// GetServiceType retrieves the value of the leaf ServiceType from the NetworkInstance_Evpn_EvpnInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ServiceType is set, it can
// safely use t.GetServiceType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ServiceType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance) GetServiceType() E_EvpnTypes_EVPN_TYPE {
	if t == nil || t.ServiceType == 0 {
		return 0
	}
	return t.ServiceType
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Evpn_EvpnInstance
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Evpn_EvpnInstance) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.ImportExportPolicy.PopulateDefaults()
	t.Vxlan.PopulateDefaults()
	for _, e := range t.BComponent {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Evpn_EvpnInstance struct, which is a YANG list entry.
func (t *NetworkInstance_Evpn_EvpnInstance) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Evi == nil {
		return nil, fmt.Errorf("nil value for key Evi")
	}

	return map[string]interface{}{
		"evi": *t.Evi,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Evpn_EvpnInstance) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Evpn_EvpnInstance"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Evpn_EvpnInstance) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Evpn_EvpnInstance) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Evpn_EvpnInstance.
func (*NetworkInstance_Evpn_EvpnInstance) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Evpn_EvpnInstance_RouteDistinguisher_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/evpn/evpn-instances/evpn-instance/config/route-distinguisher within the YANG schema.
// Union type can be one of [E_EvpnInstance_RouteDistinguisher_Enum, UnionString].
type NetworkInstance_Evpn_EvpnInstance_RouteDistinguisher_Union interface {
	// Union type can be one of [E_EvpnInstance_RouteDistinguisher_Enum, UnionString]
	Documentation_for_NetworkInstance_Evpn_EvpnInstance_RouteDistinguisher_Union()
}

// Documentation_for_NetworkInstance_Evpn_EvpnInstance_RouteDistinguisher_Union ensures that E_EvpnInstance_RouteDistinguisher_Enum
// implements the NetworkInstance_Evpn_EvpnInstance_RouteDistinguisher_Union interface.
func (E_EvpnInstance_RouteDistinguisher_Enum) Documentation_for_NetworkInstance_Evpn_EvpnInstance_RouteDistinguisher_Union() {
}

// Documentation_for_NetworkInstance_Evpn_EvpnInstance_RouteDistinguisher_Union ensures that UnionString
// implements the NetworkInstance_Evpn_EvpnInstance_RouteDistinguisher_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Evpn_EvpnInstance_RouteDistinguisher_Union() {}

// To_NetworkInstance_Evpn_EvpnInstance_RouteDistinguisher_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Evpn_EvpnInstance_RouteDistinguisher_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Evpn_EvpnInstance) To_NetworkInstance_Evpn_EvpnInstance_RouteDistinguisher_Union(i interface{}) (NetworkInstance_Evpn_EvpnInstance_RouteDistinguisher_Union, error) {
	if v, ok := i.(NetworkInstance_Evpn_EvpnInstance_RouteDistinguisher_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Evpn_EvpnInstance_RouteDistinguisher_Union, unknown union type, got: %T, want any of [E_EvpnInstance_RouteDistinguisher_Enum, string]", i, i)
}

// NetworkInstance_Evpn_EvpnInstance_BComponent represents the /openconfig-network-instance/network-instances/network-instance/evpn/evpn-instances/evpn-instance/pbb/b-component YANG schema element.
type NetworkInstance_Evpn_EvpnInstance_BComponent struct {
	ΛMetadata       []ygot.Annotation                                                   `path:"@" ygotAnnotation:"true"`
	BComponentName  *string                                                             `path:"config/b-component-name|b-component-name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛBComponentName []ygot.Annotation                                                   `path:"config/@b-component-name|@b-component-name" ygotAnnotation:"true"`
	BackboneSrcMac  *string                                                             `path:"config/backbone-src-mac" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBackboneSrcMac []ygot.Annotation                                                   `path:"config/@backbone-src-mac" ygotAnnotation:"true"`
	IComponent      map[uint32]*NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent `path:"i-components/i-component" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIComponent     []ygot.Annotation                                                   `path:"i-components/@i-component" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Evpn_EvpnInstance_BComponent implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Evpn_EvpnInstance_BComponent) IsYANGGoStruct() {}

// NewIComponent creates a new entry in the IComponent list of the
// NetworkInstance_Evpn_EvpnInstance_BComponent struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent) NewIComponent(ISid uint32) (*NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.IComponent == nil {
		t.IComponent = make(map[uint32]*NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent)
	}

	key := ISid

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.IComponent[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list IComponent", key)
	}

	t.IComponent[key] = &NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent{
		ISid: &ISid,
	}

	return t.IComponent[key], nil
}

// RenameIComponent renames an entry in the list IComponent within
// the NetworkInstance_Evpn_EvpnInstance_BComponent struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent) RenameIComponent(oldK, newK uint32) error {
	if _, ok := t.IComponent[newK]; ok {
		return fmt.Errorf("key %v already exists in IComponent", newK)
	}

	e, ok := t.IComponent[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in IComponent", oldK)
	}
	e.ISid = &newK

	t.IComponent[newK] = e
	delete(t.IComponent, oldK)
	return nil
}

// GetOrCreateIComponentMap returns the list (map) from NetworkInstance_Evpn_EvpnInstance_BComponent.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent) GetOrCreateIComponentMap() map[uint32]*NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent {
	if t.IComponent == nil {
		t.IComponent = make(map[uint32]*NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent)
	}
	return t.IComponent
}

// GetOrCreateIComponent retrieves the value with the specified keys from
// the receiver NetworkInstance_Evpn_EvpnInstance_BComponent. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent) GetOrCreateIComponent(ISid uint32) *NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent {

	key := ISid

	if v, ok := t.IComponent[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewIComponent(ISid)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateIComponent got unexpected error: %v", err))
	}
	return v
}

// GetIComponent retrieves the value with the specified key from
// the IComponent map field of NetworkInstance_Evpn_EvpnInstance_BComponent. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent) GetIComponent(ISid uint32) *NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent {

	if t == nil {
		return nil
	}

	key := ISid

	if lm, ok := t.IComponent[key]; ok {
		return lm
	}
	return nil
}

// AppendIComponent appends the supplied NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent struct to the
// list IComponent of NetworkInstance_Evpn_EvpnInstance_BComponent. If the key value(s) specified in
// the supplied NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent already exist in the list, an error is
// returned.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent) AppendIComponent(v *NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent) error {
	if v.ISid == nil {
		return fmt.Errorf("invalid nil key received for ISid")
	}

	key := *v.ISid

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.IComponent == nil {
		t.IComponent = make(map[uint32]*NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent)
	}

	if _, ok := t.IComponent[key]; ok {
		return fmt.Errorf("duplicate key for list IComponent %v", key)
	}

	t.IComponent[key] = v
	return nil
}

// GetBComponentName retrieves the value of the leaf BComponentName from the NetworkInstance_Evpn_EvpnInstance_BComponent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BComponentName is set, it can
// safely use t.GetBComponentName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BComponentName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent) GetBComponentName() string {
	if t == nil || t.BComponentName == nil {
		return ""
	}
	return *t.BComponentName
}

// GetBackboneSrcMac retrieves the value of the leaf BackboneSrcMac from the NetworkInstance_Evpn_EvpnInstance_BComponent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BackboneSrcMac is set, it can
// safely use t.GetBackboneSrcMac() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BackboneSrcMac == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent) GetBackboneSrcMac() string {
	if t == nil || t.BackboneSrcMac == nil {
		return ""
	}
	return *t.BackboneSrcMac
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Evpn_EvpnInstance_BComponent
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.IComponent {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Evpn_EvpnInstance_BComponent struct, which is a YANG list entry.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent) ΛListKeyMap() (map[string]interface{}, error) {
	if t.BComponentName == nil {
		return nil, fmt.Errorf("nil value for key BComponentName")
	}

	return map[string]interface{}{
		"b-component-name": *t.BComponentName,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Evpn_EvpnInstance_BComponent"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Evpn_EvpnInstance_BComponent.
func (*NetworkInstance_Evpn_EvpnInstance_BComponent) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent represents the /openconfig-network-instance/network-instances/network-instance/evpn/evpn-instances/evpn-instance/pbb/b-component/i-components/i-component YANG schema element.
type NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ISid      *uint32           `path:"config/i-sid|i-sid" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛISid     []ygot.Annotation `path:"config/@i-sid|@i-sid" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent) IsYANGGoStruct() {}

// GetISid retrieves the value of the leaf ISid from the NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ISid is set, it can
// safely use t.GetISid() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ISid == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent) GetISid() uint32 {
	if t == nil || t.ISid == nil {
		return 0
	}
	return *t.ISid
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent struct, which is a YANG list entry.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent) ΛListKeyMap() (map[string]interface{}, error) {
	if t.ISid == nil {
		return nil, fmt.Errorf("nil value for key ISid")
	}

	return map[string]interface{}{
		"i-sid": *t.ISid,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent.
func (*NetworkInstance_Evpn_EvpnInstance_BComponent_IComponent) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy represents the /openconfig-network-instance/network-instances/network-instance/evpn/evpn-instances/evpn-instance/import-export-policy YANG schema element.
type NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy struct {
	ΛMetadata          []ygot.Annotation                                                              `path:"@" ygotAnnotation:"true"`
	ExportRouteTarget  []NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ExportRouteTarget_Union `path:"config/export-route-target" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExportRouteTarget []ygot.Annotation                                                              `path:"config/@export-route-target" ygotAnnotation:"true"`
	ImportRouteTarget  []NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ImportRouteTarget_Union `path:"config/import-route-target" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛImportRouteTarget []ygot.Annotation                                                              `path:"config/@import-route-target" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy) IsYANGGoStruct() {}

// GetExportRouteTarget retrieves the value of the leaf ExportRouteTarget from the NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExportRouteTarget is set, it can
// safely use t.GetExportRouteTarget() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExportRouteTarget == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy) GetExportRouteTarget() []NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ExportRouteTarget_Union {
	if t == nil || t.ExportRouteTarget == nil {
		return nil
	}
	return t.ExportRouteTarget
}

// GetImportRouteTarget retrieves the value of the leaf ImportRouteTarget from the NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ImportRouteTarget is set, it can
// safely use t.GetImportRouteTarget() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ImportRouteTarget == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy) GetImportRouteTarget() []NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ImportRouteTarget_Union {
	if t == nil || t.ImportRouteTarget == nil {
		return nil
	}
	return t.ImportRouteTarget
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy.
func (*NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ExportRouteTarget_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/evpn/evpn-instances/evpn-instance/import-export-policy/config/export-route-target within the YANG schema.
// Union type can be one of [E_ImportExportPolicy_ExportRouteTarget_Enum, UnionString].
type NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ExportRouteTarget_Union interface {
	// Union type can be one of [E_ImportExportPolicy_ExportRouteTarget_Enum, UnionString]
	Documentation_for_NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ExportRouteTarget_Union()
}

// Documentation_for_NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ExportRouteTarget_Union ensures that E_ImportExportPolicy_ExportRouteTarget_Enum
// implements the NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ExportRouteTarget_Union interface.
func (E_ImportExportPolicy_ExportRouteTarget_Enum) Documentation_for_NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ExportRouteTarget_Union() {
}

// Documentation_for_NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ExportRouteTarget_Union ensures that UnionString
// implements the NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ExportRouteTarget_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ExportRouteTarget_Union() {
}

// To_NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ExportRouteTarget_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ExportRouteTarget_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy) To_NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ExportRouteTarget_Union(i interface{}) (NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ExportRouteTarget_Union, error) {
	if v, ok := i.(NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ExportRouteTarget_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ExportRouteTarget_Union, unknown union type, got: %T, want any of [E_ImportExportPolicy_ExportRouteTarget_Enum, string]", i, i)
}

// NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ImportRouteTarget_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/evpn/evpn-instances/evpn-instance/import-export-policy/config/import-route-target within the YANG schema.
// Union type can be one of [E_ImportExportPolicy_ImportRouteTarget_Enum, UnionString].
type NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ImportRouteTarget_Union interface {
	// Union type can be one of [E_ImportExportPolicy_ImportRouteTarget_Enum, UnionString]
	Documentation_for_NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ImportRouteTarget_Union()
}

// Documentation_for_NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ImportRouteTarget_Union ensures that E_ImportExportPolicy_ImportRouteTarget_Enum
// implements the NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ImportRouteTarget_Union interface.
func (E_ImportExportPolicy_ImportRouteTarget_Enum) Documentation_for_NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ImportRouteTarget_Union() {
}

// Documentation_for_NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ImportRouteTarget_Union ensures that UnionString
// implements the NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ImportRouteTarget_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ImportRouteTarget_Union() {
}

// To_NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ImportRouteTarget_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ImportRouteTarget_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy) To_NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ImportRouteTarget_Union(i interface{}) (NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ImportRouteTarget_Union, error) {
	if v, ok := i.(NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ImportRouteTarget_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Evpn_EvpnInstance_ImportExportPolicy_ImportRouteTarget_Union, unknown union type, got: %T, want any of [E_ImportExportPolicy_ImportRouteTarget_Enum, string]", i, i)
}

// NetworkInstance_Evpn_EvpnInstance_Vxlan represents the /openconfig-network-instance/network-instances/network-instance/evpn/evpn-instances/evpn-instance/vxlan YANG schema element.
type NetworkInstance_Evpn_EvpnInstance_Vxlan struct {
	ΛMetadata                       []ygot.Annotation                                               `path:"@" ygotAnnotation:"true"`
	AnycastSourceInterface          *NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface `path:"anycast-source-interface" module:"openconfig-network-instance"`
	ΛAnycastSourceInterface         []ygot.Annotation                                               `path:"@anycast-source-interface" ygotAnnotation:"true"`
	HostReachabilityBgp             *bool                                                           `path:"config/host-reachability-bgp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHostReachabilityBgp            []ygot.Annotation                                               `path:"config/@host-reachability-bgp" ygotAnnotation:"true"`
	MulticastGroup                  *string                                                         `path:"config/multicast-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMulticastGroup                 []ygot.Annotation                                               `path:"config/@multicast-group" ygotAnnotation:"true"`
	MulticastMask                   *string                                                         `path:"config/multicast-mask" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMulticastMask                  []ygot.Annotation                                               `path:"config/@multicast-mask" ygotAnnotation:"true"`
	OverlayEndpoint                 *string                                                         `path:"config/overlay-endpoint" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOverlayEndpoint                []ygot.Annotation                                               `path:"config/@overlay-endpoint" ygotAnnotation:"true"`
	OverlayEndpointNetworkInstance  *string                                                         `path:"config/overlay-endpoint-network-instance" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOverlayEndpointNetworkInstance []ygot.Annotation                                               `path:"config/@overlay-endpoint-network-instance" ygotAnnotation:"true"`
	Vni                             *uint32                                                         `path:"config/vni" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛVni                            []ygot.Annotation                                               `path:"config/@vni" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Evpn_EvpnInstance_Vxlan implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Evpn_EvpnInstance_Vxlan) IsYANGGoStruct() {}

// GetOrCreateAnycastSourceInterface retrieves the value of the AnycastSourceInterface field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan) GetOrCreateAnycastSourceInterface() *NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface {
	if t.AnycastSourceInterface != nil {
		return t.AnycastSourceInterface
	}
	t.AnycastSourceInterface = &NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface{}
	return t.AnycastSourceInterface
}

// GetAnycastSourceInterface returns the value of the AnycastSourceInterface struct pointer
// from NetworkInstance_Evpn_EvpnInstance_Vxlan. If the receiver or the field AnycastSourceInterface is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan) GetAnycastSourceInterface() *NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface {
	if t != nil && t.AnycastSourceInterface != nil {
		return t.AnycastSourceInterface
	}
	return nil
}

// GetHostReachabilityBgp retrieves the value of the leaf HostReachabilityBgp from the NetworkInstance_Evpn_EvpnInstance_Vxlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HostReachabilityBgp is set, it can
// safely use t.GetHostReachabilityBgp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HostReachabilityBgp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan) GetHostReachabilityBgp() bool {
	if t == nil || t.HostReachabilityBgp == nil {
		return false
	}
	return *t.HostReachabilityBgp
}

// GetMulticastGroup retrieves the value of the leaf MulticastGroup from the NetworkInstance_Evpn_EvpnInstance_Vxlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MulticastGroup is set, it can
// safely use t.GetMulticastGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MulticastGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan) GetMulticastGroup() string {
	if t == nil || t.MulticastGroup == nil {
		return ""
	}
	return *t.MulticastGroup
}

// GetMulticastMask retrieves the value of the leaf MulticastMask from the NetworkInstance_Evpn_EvpnInstance_Vxlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MulticastMask is set, it can
// safely use t.GetMulticastMask() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MulticastMask == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan) GetMulticastMask() string {
	if t == nil || t.MulticastMask == nil {
		return ""
	}
	return *t.MulticastMask
}

// GetOverlayEndpoint retrieves the value of the leaf OverlayEndpoint from the NetworkInstance_Evpn_EvpnInstance_Vxlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OverlayEndpoint is set, it can
// safely use t.GetOverlayEndpoint() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OverlayEndpoint == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan) GetOverlayEndpoint() string {
	if t == nil || t.OverlayEndpoint == nil {
		return ""
	}
	return *t.OverlayEndpoint
}

// GetOverlayEndpointNetworkInstance retrieves the value of the leaf OverlayEndpointNetworkInstance from the NetworkInstance_Evpn_EvpnInstance_Vxlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OverlayEndpointNetworkInstance is set, it can
// safely use t.GetOverlayEndpointNetworkInstance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OverlayEndpointNetworkInstance == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan) GetOverlayEndpointNetworkInstance() string {
	if t == nil || t.OverlayEndpointNetworkInstance == nil {
		return ""
	}
	return *t.OverlayEndpointNetworkInstance
}

// GetVni retrieves the value of the leaf Vni from the NetworkInstance_Evpn_EvpnInstance_Vxlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Vni is set, it can
// safely use t.GetVni() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Vni == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan) GetVni() uint32 {
	if t == nil || t.Vni == nil {
		return 0
	}
	return *t.Vni
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Evpn_EvpnInstance_Vxlan
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AnycastSourceInterface.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Evpn_EvpnInstance_Vxlan"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Evpn_EvpnInstance_Vxlan.
func (*NetworkInstance_Evpn_EvpnInstance_Vxlan) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface represents the /openconfig-network-instance/network-instances/network-instance/evpn/evpn-instances/evpn-instance/vxlan/anycast-source-interface YANG schema element.
type NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface.
func (*NetworkInstance_Evpn_EvpnInstance_Vxlan_AnycastSourceInterface) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb represents the /openconfig-network-instance/network-instances/network-instance/fdb YANG schema element.
type NetworkInstance_Fdb struct {
	ΛMetadata                      []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	AnycastGatewayMac              *string                          `path:"config/anycast-gateway-mac" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAnycastGatewayMac             []ygot.Annotation                `path:"config/@anycast-gateway-mac" ygotAnnotation:"true"`
	ArpProxy                       *NetworkInstance_Fdb_ArpProxy    `path:"arp-proxy" module:"openconfig-network-instance"`
	ΛArpProxy                      []ygot.Annotation                `path:"@arp-proxy" ygotAnnotation:"true"`
	FloodUnknownUnicastSupression  *bool                            `path:"config/flood-unknown-unicast-supression" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFloodUnknownUnicastSupression []ygot.Annotation                `path:"config/@flood-unknown-unicast-supression" ygotAnnotation:"true"`
	L2Rib                          *NetworkInstance_Fdb_L2Rib       `path:"l2rib" module:"openconfig-network-instance"`
	ΛL2Rib                         []ygot.Annotation                `path:"@l2rib" ygotAnnotation:"true"`
	MacAgingTime                   *uint16                          `path:"config/mac-aging-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMacAgingTime                  []ygot.Annotation                `path:"config/@mac-aging-time" ygotAnnotation:"true"`
	MacLearning                    *bool                            `path:"config/mac-learning" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMacLearning                   []ygot.Annotation                `path:"config/@mac-learning" ygotAnnotation:"true"`
	MacMobility                    *NetworkInstance_Fdb_MacMobility `path:"mac-mobility" module:"openconfig-network-instance"`
	ΛMacMobility                   []ygot.Annotation                `path:"@mac-mobility" ygotAnnotation:"true"`
	MacTable                       *NetworkInstance_Fdb_MacTable    `path:"mac-table" module:"openconfig-network-instance"`
	ΛMacTable                      []ygot.Annotation                `path:"@mac-table" ygotAnnotation:"true"`
	MaximumEntries                 *uint16                          `path:"config/maximum-entries" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximumEntries                []ygot.Annotation                `path:"config/@maximum-entries" ygotAnnotation:"true"`
	NdProxy                        *NetworkInstance_Fdb_NdProxy     `path:"nd-proxy" module:"openconfig-network-instance"`
	ΛNdProxy                       []ygot.Annotation                `path:"@nd-proxy" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb) IsYANGGoStruct() {}

// GetOrCreateArpProxy retrieves the value of the ArpProxy field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Fdb) GetOrCreateArpProxy() *NetworkInstance_Fdb_ArpProxy {
	if t.ArpProxy != nil {
		return t.ArpProxy
	}
	t.ArpProxy = &NetworkInstance_Fdb_ArpProxy{}
	return t.ArpProxy
}

// GetOrCreateL2Rib retrieves the value of the L2Rib field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Fdb) GetOrCreateL2Rib() *NetworkInstance_Fdb_L2Rib {
	if t.L2Rib != nil {
		return t.L2Rib
	}
	t.L2Rib = &NetworkInstance_Fdb_L2Rib{}
	return t.L2Rib
}

// GetOrCreateMacMobility retrieves the value of the MacMobility field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Fdb) GetOrCreateMacMobility() *NetworkInstance_Fdb_MacMobility {
	if t.MacMobility != nil {
		return t.MacMobility
	}
	t.MacMobility = &NetworkInstance_Fdb_MacMobility{}
	return t.MacMobility
}

// GetOrCreateMacTable retrieves the value of the MacTable field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Fdb) GetOrCreateMacTable() *NetworkInstance_Fdb_MacTable {
	if t.MacTable != nil {
		return t.MacTable
	}
	t.MacTable = &NetworkInstance_Fdb_MacTable{}
	return t.MacTable
}

// GetOrCreateNdProxy retrieves the value of the NdProxy field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Fdb) GetOrCreateNdProxy() *NetworkInstance_Fdb_NdProxy {
	if t.NdProxy != nil {
		return t.NdProxy
	}
	t.NdProxy = &NetworkInstance_Fdb_NdProxy{}
	return t.NdProxy
}

// GetArpProxy returns the value of the ArpProxy struct pointer
// from NetworkInstance_Fdb. If the receiver or the field ArpProxy is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Fdb) GetArpProxy() *NetworkInstance_Fdb_ArpProxy {
	if t != nil && t.ArpProxy != nil {
		return t.ArpProxy
	}
	return nil
}

// GetL2Rib returns the value of the L2Rib struct pointer
// from NetworkInstance_Fdb. If the receiver or the field L2Rib is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Fdb) GetL2Rib() *NetworkInstance_Fdb_L2Rib {
	if t != nil && t.L2Rib != nil {
		return t.L2Rib
	}
	return nil
}

// GetMacMobility returns the value of the MacMobility struct pointer
// from NetworkInstance_Fdb. If the receiver or the field MacMobility is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Fdb) GetMacMobility() *NetworkInstance_Fdb_MacMobility {
	if t != nil && t.MacMobility != nil {
		return t.MacMobility
	}
	return nil
}

// GetMacTable returns the value of the MacTable struct pointer
// from NetworkInstance_Fdb. If the receiver or the field MacTable is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Fdb) GetMacTable() *NetworkInstance_Fdb_MacTable {
	if t != nil && t.MacTable != nil {
		return t.MacTable
	}
	return nil
}

// GetNdProxy returns the value of the NdProxy struct pointer
// from NetworkInstance_Fdb. If the receiver or the field NdProxy is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Fdb) GetNdProxy() *NetworkInstance_Fdb_NdProxy {
	if t != nil && t.NdProxy != nil {
		return t.NdProxy
	}
	return nil
}

// GetAnycastGatewayMac retrieves the value of the leaf AnycastGatewayMac from the NetworkInstance_Fdb
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AnycastGatewayMac is set, it can
// safely use t.GetAnycastGatewayMac() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AnycastGatewayMac == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb) GetAnycastGatewayMac() string {
	if t == nil || t.AnycastGatewayMac == nil {
		return ""
	}
	return *t.AnycastGatewayMac
}

// GetFloodUnknownUnicastSupression retrieves the value of the leaf FloodUnknownUnicastSupression from the NetworkInstance_Fdb
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FloodUnknownUnicastSupression is set, it can
// safely use t.GetFloodUnknownUnicastSupression() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FloodUnknownUnicastSupression == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb) GetFloodUnknownUnicastSupression() bool {
	if t == nil || t.FloodUnknownUnicastSupression == nil {
		return false
	}
	return *t.FloodUnknownUnicastSupression
}

// GetMacAgingTime retrieves the value of the leaf MacAgingTime from the NetworkInstance_Fdb
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MacAgingTime is set, it can
// safely use t.GetMacAgingTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MacAgingTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb) GetMacAgingTime() uint16 {
	if t == nil || t.MacAgingTime == nil {
		return 0
	}
	return *t.MacAgingTime
}

// GetMacLearning retrieves the value of the leaf MacLearning from the NetworkInstance_Fdb
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MacLearning is set, it can
// safely use t.GetMacLearning() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MacLearning == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb) GetMacLearning() bool {
	if t == nil || t.MacLearning == nil {
		return false
	}
	return *t.MacLearning
}

// GetMaximumEntries retrieves the value of the leaf MaximumEntries from the NetworkInstance_Fdb
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaximumEntries is set, it can
// safely use t.GetMaximumEntries() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaximumEntries == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb) GetMaximumEntries() uint16 {
	if t == nil || t.MaximumEntries == nil {
		return 0
	}
	return *t.MaximumEntries
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.FloodUnknownUnicastSupression == nil {
		var v bool = false
		t.FloodUnknownUnicastSupression = &v
	}
	t.ArpProxy.PopulateDefaults()
	t.L2Rib.PopulateDefaults()
	t.MacMobility.PopulateDefaults()
	t.MacTable.PopulateDefaults()
	t.NdProxy.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb.
func (*NetworkInstance_Fdb) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_ArpProxy represents the /openconfig-network-instance/network-instances/network-instance/fdb/arp-proxy YANG schema element.
type NetworkInstance_Fdb_ArpProxy struct {
	ΛMetadata                     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ArpSuppression                *bool             `path:"config/arp-suppression" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛArpSuppression               []ygot.Annotation `path:"config/@arp-suppression" ygotAnnotation:"true"`
	DuplicateIpDetectionInterval  *uint16           `path:"config/duplicate-ip-detection-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDuplicateIpDetectionInterval []ygot.Annotation `path:"config/@duplicate-ip-detection-interval" ygotAnnotation:"true"`
	Enable                        *bool             `path:"config/enable" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnable                       []ygot.Annotation `path:"config/@enable" ygotAnnotation:"true"`
	IpMobilityThreshold           *uint16           `path:"config/ip-mobility-threshold" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpMobilityThreshold          []ygot.Annotation `path:"config/@ip-mobility-threshold" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_ArpProxy implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_ArpProxy) IsYANGGoStruct() {}

// GetArpSuppression retrieves the value of the leaf ArpSuppression from the NetworkInstance_Fdb_ArpProxy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ArpSuppression is set, it can
// safely use t.GetArpSuppression() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ArpSuppression == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_ArpProxy) GetArpSuppression() bool {
	if t == nil || t.ArpSuppression == nil {
		return false
	}
	return *t.ArpSuppression
}

// GetDuplicateIpDetectionInterval retrieves the value of the leaf DuplicateIpDetectionInterval from the NetworkInstance_Fdb_ArpProxy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DuplicateIpDetectionInterval is set, it can
// safely use t.GetDuplicateIpDetectionInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DuplicateIpDetectionInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_ArpProxy) GetDuplicateIpDetectionInterval() uint16 {
	if t == nil || t.DuplicateIpDetectionInterval == nil {
		return 0
	}
	return *t.DuplicateIpDetectionInterval
}

// GetEnable retrieves the value of the leaf Enable from the NetworkInstance_Fdb_ArpProxy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enable is set, it can
// safely use t.GetEnable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enable == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_ArpProxy) GetEnable() bool {
	if t == nil || t.Enable == nil {
		return false
	}
	return *t.Enable
}

// GetIpMobilityThreshold retrieves the value of the leaf IpMobilityThreshold from the NetworkInstance_Fdb_ArpProxy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IpMobilityThreshold is set, it can
// safely use t.GetIpMobilityThreshold() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IpMobilityThreshold == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_ArpProxy) GetIpMobilityThreshold() uint16 {
	if t == nil || t.IpMobilityThreshold == nil {
		return 0
	}
	return *t.IpMobilityThreshold
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_ArpProxy
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_ArpProxy) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.ArpSuppression == nil {
		var v bool = false
		t.ArpSuppression = &v
	}
	if t.Enable == nil {
		var v bool = false
		t.Enable = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_ArpProxy) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_ArpProxy"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_ArpProxy) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_ArpProxy) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_ArpProxy.
func (*NetworkInstance_Fdb_ArpProxy) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_L2Rib represents the /openconfig-network-instance/network-instances/network-instance/fdb/l2rib YANG schema element.
type NetworkInstance_Fdb_L2Rib struct {
	ΛMetadata   []ygot.Annotation                     `path:"@" ygotAnnotation:"true"`
	MacIpTable  *NetworkInstance_Fdb_L2Rib_MacIpTable `path:"mac-ip-table" module:"openconfig-network-instance"`
	ΛMacIpTable []ygot.Annotation                     `path:"@mac-ip-table" ygotAnnotation:"true"`
	MacTable    *NetworkInstance_Fdb_L2Rib_MacTable   `path:"mac-table" module:"openconfig-network-instance"`
	ΛMacTable   []ygot.Annotation                     `path:"@mac-table" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_L2Rib implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_L2Rib) IsYANGGoStruct() {}

// GetOrCreateMacIpTable retrieves the value of the MacIpTable field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Fdb_L2Rib) GetOrCreateMacIpTable() *NetworkInstance_Fdb_L2Rib_MacIpTable {
	if t.MacIpTable != nil {
		return t.MacIpTable
	}
	t.MacIpTable = &NetworkInstance_Fdb_L2Rib_MacIpTable{}
	return t.MacIpTable
}

// GetOrCreateMacTable retrieves the value of the MacTable field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Fdb_L2Rib) GetOrCreateMacTable() *NetworkInstance_Fdb_L2Rib_MacTable {
	if t.MacTable != nil {
		return t.MacTable
	}
	t.MacTable = &NetworkInstance_Fdb_L2Rib_MacTable{}
	return t.MacTable
}

// GetMacIpTable returns the value of the MacIpTable struct pointer
// from NetworkInstance_Fdb_L2Rib. If the receiver or the field MacIpTable is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Fdb_L2Rib) GetMacIpTable() *NetworkInstance_Fdb_L2Rib_MacIpTable {
	if t != nil && t.MacIpTable != nil {
		return t.MacIpTable
	}
	return nil
}

// GetMacTable returns the value of the MacTable struct pointer
// from NetworkInstance_Fdb_L2Rib. If the receiver or the field MacTable is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Fdb_L2Rib) GetMacTable() *NetworkInstance_Fdb_L2Rib_MacTable {
	if t != nil && t.MacTable != nil {
		return t.MacTable
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_L2Rib
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_L2Rib) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.MacIpTable.PopulateDefaults()
	t.MacTable.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_L2Rib"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_L2Rib) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_L2Rib.
func (*NetworkInstance_Fdb_L2Rib) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_L2Rib_MacIpTable represents the /openconfig-network-instance/network-instances/network-instance/fdb/l2rib/mac-ip-table YANG schema element.
type NetworkInstance_Fdb_L2Rib_MacIpTable struct {
	ΛMetadata     []ygot.Annotation                                                                              `path:"@" ygotAnnotation:"true"`
	Entry         map[NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Key]*NetworkInstance_Fdb_L2Rib_MacIpTable_Entry `path:"entries/entry" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEntry        []ygot.Annotation                                                                              `path:"entries/@entry" ygotAnnotation:"true"`
	NextHop       map[uint64]*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop                                       `path:"next-hops/next-hop" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHop      []ygot.Annotation                                                                              `path:"next-hops/@next-hop" ygotAnnotation:"true"`
	NextHopGroup  map[uint64]*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup                                  `path:"next-hop-groups/next-hop-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHopGroup []ygot.Annotation                                                                              `path:"next-hop-groups/@next-hop-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_L2Rib_MacIpTable implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_L2Rib_MacIpTable) IsYANGGoStruct() {}

// NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Key represents the key for list Entry of element /openconfig-network-instance/network-instances/network-instance/fdb/l2rib/mac-ip-table.
type NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Key struct {
	MacAddress string `path:"mac-address"`
	HostIp     string `path:"host-ip"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Key key struct.
func (t NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"mac-address": t.MacAddress,
		"host-ip":     t.HostIp,
	}, nil
}

// NewEntry creates a new entry in the Entry list of the
// NetworkInstance_Fdb_L2Rib_MacIpTable struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) NewEntry(MacAddress string, HostIp string) (*NetworkInstance_Fdb_L2Rib_MacIpTable_Entry, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Entry == nil {
		t.Entry = make(map[NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Key]*NetworkInstance_Fdb_L2Rib_MacIpTable_Entry)
	}

	key := NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Key{
		MacAddress: MacAddress,
		HostIp:     HostIp,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Entry[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Entry", key)
	}

	t.Entry[key] = &NetworkInstance_Fdb_L2Rib_MacIpTable_Entry{
		MacAddress: &MacAddress,
		HostIp:     &HostIp,
	}

	return t.Entry[key], nil
}

// RenameEntry renames an entry in the list Entry within
// the NetworkInstance_Fdb_L2Rib_MacIpTable struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) RenameEntry(oldK, newK NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Key) error {
	if _, ok := t.Entry[newK]; ok {
		return fmt.Errorf("key %v already exists in Entry", newK)
	}

	e, ok := t.Entry[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Entry", oldK)
	}
	e.MacAddress = &newK.MacAddress
	e.HostIp = &newK.HostIp

	t.Entry[newK] = e
	delete(t.Entry, oldK)
	return nil
}

// GetOrCreateEntryMap returns the list (map) from NetworkInstance_Fdb_L2Rib_MacIpTable.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) GetOrCreateEntryMap() map[NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Key]*NetworkInstance_Fdb_L2Rib_MacIpTable_Entry {
	if t.Entry == nil {
		t.Entry = make(map[NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Key]*NetworkInstance_Fdb_L2Rib_MacIpTable_Entry)
	}
	return t.Entry
}

// GetOrCreateEntry retrieves the value with the specified keys from
// the receiver NetworkInstance_Fdb_L2Rib_MacIpTable. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) GetOrCreateEntry(MacAddress string, HostIp string) *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry {

	key := NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Key{
		MacAddress: MacAddress,
		HostIp:     HostIp,
	}

	if v, ok := t.Entry[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewEntry(MacAddress, HostIp)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateEntry got unexpected error: %v", err))
	}
	return v
}

// GetEntry retrieves the value with the specified key from
// the Entry map field of NetworkInstance_Fdb_L2Rib_MacIpTable. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) GetEntry(MacAddress string, HostIp string) *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Key{
		MacAddress: MacAddress,
		HostIp:     HostIp,
	}

	if lm, ok := t.Entry[key]; ok {
		return lm
	}
	return nil
}

// AppendEntry appends the supplied NetworkInstance_Fdb_L2Rib_MacIpTable_Entry struct to the
// list Entry of NetworkInstance_Fdb_L2Rib_MacIpTable. If the key value(s) specified in
// the supplied NetworkInstance_Fdb_L2Rib_MacIpTable_Entry already exist in the list, an error is
// returned.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) AppendEntry(v *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) error {
	if v.MacAddress == nil {
		return fmt.Errorf("invalid nil key for MacAddress")
	}

	if v.HostIp == nil {
		return fmt.Errorf("invalid nil key for HostIp")
	}

	key := NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Key{
		MacAddress: *v.MacAddress,
		HostIp:     *v.HostIp,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Entry == nil {
		t.Entry = make(map[NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Key]*NetworkInstance_Fdb_L2Rib_MacIpTable_Entry)
	}

	if _, ok := t.Entry[key]; ok {
		return fmt.Errorf("duplicate key for list Entry %v", key)
	}

	t.Entry[key] = v
	return nil
}

// NewNextHop creates a new entry in the NextHop list of the
// NetworkInstance_Fdb_L2Rib_MacIpTable struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) NewNextHop(Index uint64) (*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.NextHop[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list NextHop", key)
	}

	t.NextHop[key] = &NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop{
		Index: &Index,
	}

	return t.NextHop[key], nil
}

// RenameNextHop renames an entry in the list NextHop within
// the NetworkInstance_Fdb_L2Rib_MacIpTable struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) RenameNextHop(oldK, newK uint64) error {
	if _, ok := t.NextHop[newK]; ok {
		return fmt.Errorf("key %v already exists in NextHop", newK)
	}

	e, ok := t.NextHop[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in NextHop", oldK)
	}
	e.Index = &newK

	t.NextHop[newK] = e
	delete(t.NextHop, oldK)
	return nil
}

// GetOrCreateNextHopMap returns the list (map) from NetworkInstance_Fdb_L2Rib_MacIpTable.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) GetOrCreateNextHopMap() map[uint64]*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop {
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop)
	}
	return t.NextHop
}

// GetOrCreateNextHop retrieves the value with the specified keys from
// the receiver NetworkInstance_Fdb_L2Rib_MacIpTable. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) GetOrCreateNextHop(Index uint64) *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop {

	key := Index

	if v, ok := t.NextHop[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNextHop(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNextHop got unexpected error: %v", err))
	}
	return v
}

// GetNextHop retrieves the value with the specified key from
// the NextHop map field of NetworkInstance_Fdb_L2Rib_MacIpTable. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) GetNextHop(Index uint64) *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.NextHop[key]; ok {
		return lm
	}
	return nil
}

// AppendNextHop appends the supplied NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop struct to the
// list NextHop of NetworkInstance_Fdb_L2Rib_MacIpTable. If the key value(s) specified in
// the supplied NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop already exist in the list, an error is
// returned.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) AppendNextHop(v *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop)
	}

	if _, ok := t.NextHop[key]; ok {
		return fmt.Errorf("duplicate key for list NextHop %v", key)
	}

	t.NextHop[key] = v
	return nil
}

// NewNextHopGroup creates a new entry in the NextHopGroup list of the
// NetworkInstance_Fdb_L2Rib_MacIpTable struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) NewNextHopGroup(Id uint64) (*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHopGroup == nil {
		t.NextHopGroup = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.NextHopGroup[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list NextHopGroup", key)
	}

	t.NextHopGroup[key] = &NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup{
		Id: &Id,
	}

	return t.NextHopGroup[key], nil
}

// RenameNextHopGroup renames an entry in the list NextHopGroup within
// the NetworkInstance_Fdb_L2Rib_MacIpTable struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) RenameNextHopGroup(oldK, newK uint64) error {
	if _, ok := t.NextHopGroup[newK]; ok {
		return fmt.Errorf("key %v already exists in NextHopGroup", newK)
	}

	e, ok := t.NextHopGroup[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in NextHopGroup", oldK)
	}
	e.Id = &newK

	t.NextHopGroup[newK] = e
	delete(t.NextHopGroup, oldK)
	return nil
}

// GetOrCreateNextHopGroupMap returns the list (map) from NetworkInstance_Fdb_L2Rib_MacIpTable.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) GetOrCreateNextHopGroupMap() map[uint64]*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup {
	if t.NextHopGroup == nil {
		t.NextHopGroup = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup)
	}
	return t.NextHopGroup
}

// GetOrCreateNextHopGroup retrieves the value with the specified keys from
// the receiver NetworkInstance_Fdb_L2Rib_MacIpTable. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) GetOrCreateNextHopGroup(Id uint64) *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup {

	key := Id

	if v, ok := t.NextHopGroup[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNextHopGroup(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNextHopGroup got unexpected error: %v", err))
	}
	return v
}

// GetNextHopGroup retrieves the value with the specified key from
// the NextHopGroup map field of NetworkInstance_Fdb_L2Rib_MacIpTable. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) GetNextHopGroup(Id uint64) *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.NextHopGroup[key]; ok {
		return lm
	}
	return nil
}

// AppendNextHopGroup appends the supplied NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup struct to the
// list NextHopGroup of NetworkInstance_Fdb_L2Rib_MacIpTable. If the key value(s) specified in
// the supplied NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup already exist in the list, an error is
// returned.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) AppendNextHopGroup(v *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHopGroup == nil {
		t.NextHopGroup = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup)
	}

	if _, ok := t.NextHopGroup[key]; ok {
		return fmt.Errorf("duplicate key for list NextHopGroup %v", key)
	}

	t.NextHopGroup[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_L2Rib_MacIpTable
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Entry {
		e.PopulateDefaults()
	}
	for _, e := range t.NextHop {
		e.PopulateDefaults()
	}
	for _, e := range t.NextHopGroup {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_L2Rib_MacIpTable"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_L2Rib_MacIpTable.
func (*NetworkInstance_Fdb_L2Rib_MacIpTable) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_L2Rib_MacIpTable_Entry represents the /openconfig-network-instance/network-instances/network-instance/fdb/l2rib/mac-ip-table/entries/entry YANG schema element.
type NetworkInstance_Fdb_L2Rib_MacIpTable_Entry struct {
	ΛMetadata   []ygot.Annotation                                                            `path:"@" ygotAnnotation:"true"`
	Evi         *uint32                                                                      `path:"state/evi" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEvi        []ygot.Annotation                                                            `path:"state/@evi" ygotAnnotation:"true"`
	HostIp      *string                                                                      `path:"state/host-ip|host-ip" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛHostIp     []ygot.Annotation                                                            `path:"state/@host-ip|@host-ip" ygotAnnotation:"true"`
	L2Vni       *uint32                                                                      `path:"state/l2-vni" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛL2Vni      []ygot.Annotation                                                            `path:"state/@l2-vni" ygotAnnotation:"true"`
	L3Vni       *uint32                                                                      `path:"state/l3-vni" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛL3Vni      []ygot.Annotation                                                            `path:"state/@l3-vni" ygotAnnotation:"true"`
	MacAddress  *string                                                                      `path:"state/mac-address|mac-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛMacAddress []ygot.Annotation                                                            `path:"state/@mac-address|@mac-address" ygotAnnotation:"true"`
	Producer    map[E_Producer_Producer]*NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer `path:"producers/producer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProducer   []ygot.Annotation                                                            `path:"producers/@producer" ygotAnnotation:"true"`
	Vlan        *uint16                                                                      `path:"state/vlan" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛVlan       []ygot.Annotation                                                            `path:"state/@vlan" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_L2Rib_MacIpTable_Entry implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) IsYANGGoStruct() {}

// NewProducer creates a new entry in the Producer list of the
// NetworkInstance_Fdb_L2Rib_MacIpTable_Entry struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) NewProducer(Producer E_Producer_Producer) (*NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Producer == nil {
		t.Producer = make(map[E_Producer_Producer]*NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer)
	}

	key := Producer

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Producer[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Producer", key)
	}

	t.Producer[key] = &NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer{
		Producer: Producer,
	}

	return t.Producer[key], nil
}

// RenameProducer renames an entry in the list Producer within
// the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) RenameProducer(oldK, newK E_Producer_Producer) error {
	if _, ok := t.Producer[newK]; ok {
		return fmt.Errorf("key %v already exists in Producer", newK)
	}

	e, ok := t.Producer[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Producer", oldK)
	}
	e.Producer = newK

	t.Producer[newK] = e
	delete(t.Producer, oldK)
	return nil
}

// GetOrCreateProducerMap returns the list (map) from NetworkInstance_Fdb_L2Rib_MacIpTable_Entry.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) GetOrCreateProducerMap() map[E_Producer_Producer]*NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer {
	if t.Producer == nil {
		t.Producer = make(map[E_Producer_Producer]*NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer)
	}
	return t.Producer
}

// GetOrCreateProducer retrieves the value with the specified keys from
// the receiver NetworkInstance_Fdb_L2Rib_MacIpTable_Entry. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) GetOrCreateProducer(Producer E_Producer_Producer) *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer {

	key := Producer

	if v, ok := t.Producer[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewProducer(Producer)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateProducer got unexpected error: %v", err))
	}
	return v
}

// GetProducer retrieves the value with the specified key from
// the Producer map field of NetworkInstance_Fdb_L2Rib_MacIpTable_Entry. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) GetProducer(Producer E_Producer_Producer) *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer {

	if t == nil {
		return nil
	}

	key := Producer

	if lm, ok := t.Producer[key]; ok {
		return lm
	}
	return nil
}

// AppendProducer appends the supplied NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer struct to the
// list Producer of NetworkInstance_Fdb_L2Rib_MacIpTable_Entry. If the key value(s) specified in
// the supplied NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer already exist in the list, an error is
// returned.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) AppendProducer(v *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer) error {
	key := v.Producer

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Producer == nil {
		t.Producer = make(map[E_Producer_Producer]*NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer)
	}

	if _, ok := t.Producer[key]; ok {
		return fmt.Errorf("duplicate key for list Producer %v", key)
	}

	t.Producer[key] = v
	return nil
}

// GetEvi retrieves the value of the leaf Evi from the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Evi is set, it can
// safely use t.GetEvi() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Evi == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) GetEvi() uint32 {
	if t == nil || t.Evi == nil {
		return 0
	}
	return *t.Evi
}

// GetHostIp retrieves the value of the leaf HostIp from the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HostIp is set, it can
// safely use t.GetHostIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HostIp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) GetHostIp() string {
	if t == nil || t.HostIp == nil {
		return ""
	}
	return *t.HostIp
}

// GetL2Vni retrieves the value of the leaf L2Vni from the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if L2Vni is set, it can
// safely use t.GetL2Vni() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.L2Vni == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) GetL2Vni() uint32 {
	if t == nil || t.L2Vni == nil {
		return 0
	}
	return *t.L2Vni
}

// GetL3Vni retrieves the value of the leaf L3Vni from the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if L3Vni is set, it can
// safely use t.GetL3Vni() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.L3Vni == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) GetL3Vni() uint32 {
	if t == nil || t.L3Vni == nil {
		return 0
	}
	return *t.L3Vni
}

// GetMacAddress retrieves the value of the leaf MacAddress from the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MacAddress is set, it can
// safely use t.GetMacAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MacAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) GetMacAddress() string {
	if t == nil || t.MacAddress == nil {
		return ""
	}
	return *t.MacAddress
}

// GetVlan retrieves the value of the leaf Vlan from the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Vlan is set, it can
// safely use t.GetVlan() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Vlan == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) GetVlan() uint16 {
	if t == nil || t.Vlan == nil {
		return 0
	}
	return *t.Vlan
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Producer {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry struct, which is a YANG list entry.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) ΛListKeyMap() (map[string]interface{}, error) {
	if t.HostIp == nil {
		return nil, fmt.Errorf("nil value for key HostIp")
	}

	if t.MacAddress == nil {
		return nil, fmt.Errorf("nil value for key MacAddress")
	}

	return map[string]interface{}{
		"host-ip":     *t.HostIp,
		"mac-address": *t.MacAddress,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_L2Rib_MacIpTable_Entry"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_L2Rib_MacIpTable_Entry.
func (*NetworkInstance_Fdb_L2Rib_MacIpTable_Entry) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer represents the /openconfig-network-instance/network-instances/network-instance/fdb/l2rib/mac-ip-table/entries/entry/producers/producer YANG schema element.
type NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer struct {
	ΛMetadata      []ygot.Annotation        `path:"@" ygotAnnotation:"true"`
	Esi            *string                  `path:"state/esi" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEsi           []ygot.Annotation        `path:"state/@esi" ygotAnnotation:"true"`
	MobilityState  E_Producer_MobilityState `path:"state/mobility-state" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMobilityState []ygot.Annotation        `path:"state/@mobility-state" ygotAnnotation:"true"`
	NextHop        *uint64                  `path:"state/next-hop" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHop       []ygot.Annotation        `path:"state/@next-hop" ygotAnnotation:"true"`
	NextHopGroup   []uint64                 `path:"state/next-hop-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHopGroup  []ygot.Annotation        `path:"state/@next-hop-group" ygotAnnotation:"true"`
	Producer       E_Producer_Producer      `path:"state/producer|producer" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛProducer      []ygot.Annotation        `path:"state/@producer|@producer" ygotAnnotation:"true"`
	SeqNumber      *uint32                  `path:"state/seq-number" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSeqNumber     []ygot.Annotation        `path:"state/@seq-number" ygotAnnotation:"true"`
	Sticky         *bool                    `path:"state/sticky" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSticky        []ygot.Annotation        `path:"state/@sticky" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer) IsYANGGoStruct() {}

// GetEsi retrieves the value of the leaf Esi from the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Esi is set, it can
// safely use t.GetEsi() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Esi == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer) GetEsi() string {
	if t == nil || t.Esi == nil {
		return ""
	}
	return *t.Esi
}

// GetMobilityState retrieves the value of the leaf MobilityState from the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MobilityState is set, it can
// safely use t.GetMobilityState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MobilityState == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer) GetMobilityState() E_Producer_MobilityState {
	if t == nil || t.MobilityState == 0 {
		return 0
	}
	return t.MobilityState
}

// GetNextHop retrieves the value of the leaf NextHop from the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHop is set, it can
// safely use t.GetNextHop() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHop == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer) GetNextHop() uint64 {
	if t == nil || t.NextHop == nil {
		return 0
	}
	return *t.NextHop
}

// GetNextHopGroup retrieves the value of the leaf NextHopGroup from the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHopGroup is set, it can
// safely use t.GetNextHopGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHopGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer) GetNextHopGroup() []uint64 {
	if t == nil || t.NextHopGroup == nil {
		return nil
	}
	return t.NextHopGroup
}

// GetProducer retrieves the value of the leaf Producer from the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Producer is set, it can
// safely use t.GetProducer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Producer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer) GetProducer() E_Producer_Producer {
	if t == nil || t.Producer == 0 {
		return 0
	}
	return t.Producer
}

// GetSeqNumber retrieves the value of the leaf SeqNumber from the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SeqNumber is set, it can
// safely use t.GetSeqNumber() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SeqNumber == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer) GetSeqNumber() uint32 {
	if t == nil || t.SeqNumber == nil {
		return 0
	}
	return *t.SeqNumber
}

// GetSticky retrieves the value of the leaf Sticky from the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Sticky is set, it can
// safely use t.GetSticky() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Sticky == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer) GetSticky() bool {
	if t == nil || t.Sticky == nil {
		return false
	}
	return *t.Sticky
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer struct, which is a YANG list entry.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"producer": t.Producer,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer.
func (*NetworkInstance_Fdb_L2Rib_MacIpTable_Entry_Producer) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop represents the /openconfig-network-instance/network-instances/network-instance/fdb/l2rib/mac-ip-table/next-hops/next-hop YANG schema element.
type NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Esi           *string           `path:"state/esi" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEsi          []ygot.Annotation `path:"state/@esi" ygotAnnotation:"true"`
	Index         *uint64           `path:"state/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex        []ygot.Annotation `path:"state/@index|@index" ygotAnnotation:"true"`
	Interface     *string           `path:"state/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"state/@interface" ygotAnnotation:"true"`
	Label         *uint32           `path:"state/label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabel        []ygot.Annotation `path:"state/@label" ygotAnnotation:"true"`
	PeerIp        *string           `path:"state/peer-ip" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPeerIp       []ygot.Annotation `path:"state/@peer-ip" ygotAnnotation:"true"`
	Resolved      *bool             `path:"state/resolved" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛResolved     []ygot.Annotation `path:"state/@resolved" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"state/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"state/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop) IsYANGGoStruct() {}

// GetEsi retrieves the value of the leaf Esi from the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Esi is set, it can
// safely use t.GetEsi() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Esi == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop) GetEsi() string {
	if t == nil || t.Esi == nil {
		return ""
	}
	return *t.Esi
}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop) GetIndex() uint64 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetLabel retrieves the value of the leaf Label from the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Label is set, it can
// safely use t.GetLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Label == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop) GetLabel() uint32 {
	if t == nil || t.Label == nil {
		return 0
	}
	return *t.Label
}

// GetPeerIp retrieves the value of the leaf PeerIp from the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerIp is set, it can
// safely use t.GetPeerIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerIp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop) GetPeerIp() string {
	if t == nil || t.PeerIp == nil {
		return ""
	}
	return *t.PeerIp
}

// GetResolved retrieves the value of the leaf Resolved from the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Resolved is set, it can
// safely use t.GetResolved() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Resolved == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop) GetResolved() bool {
	if t == nil || t.Resolved == nil {
		return false
	}
	return *t.Resolved
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop struct, which is a YANG list entry.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop.
func (*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHop) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup represents the /openconfig-network-instance/network-instances/network-instance/fdb/l2rib/mac-ip-table/next-hop-groups/next-hop-group YANG schema element.
type NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup struct {
	ΛMetadata []ygot.Annotation                                                     `path:"@" ygotAnnotation:"true"`
	Esi       *string                                                               `path:"state/esi" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEsi      []ygot.Annotation                                                     `path:"state/@esi" ygotAnnotation:"true"`
	Id        *uint64                                                               `path:"state/id|id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛId       []ygot.Annotation                                                     `path:"state/@id|@id" ygotAnnotation:"true"`
	NextHop   map[uint64]*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop `path:"next-hops/next-hop" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHop  []ygot.Annotation                                                     `path:"next-hops/@next-hop" ygotAnnotation:"true"`
	Type      E_NextHopGroup_Type                                                   `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                                                     `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup) IsYANGGoStruct() {}

// NewNextHop creates a new entry in the NextHop list of the
// NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup) NewNextHop(Index uint64) (*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.NextHop[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list NextHop", key)
	}

	t.NextHop[key] = &NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop{
		Index: &Index,
	}

	return t.NextHop[key], nil
}

// RenameNextHop renames an entry in the list NextHop within
// the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup) RenameNextHop(oldK, newK uint64) error {
	if _, ok := t.NextHop[newK]; ok {
		return fmt.Errorf("key %v already exists in NextHop", newK)
	}

	e, ok := t.NextHop[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in NextHop", oldK)
	}
	e.Index = &newK

	t.NextHop[newK] = e
	delete(t.NextHop, oldK)
	return nil
}

// GetOrCreateNextHopMap returns the list (map) from NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup) GetOrCreateNextHopMap() map[uint64]*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop {
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop)
	}
	return t.NextHop
}

// GetOrCreateNextHop retrieves the value with the specified keys from
// the receiver NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup) GetOrCreateNextHop(Index uint64) *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop {

	key := Index

	if v, ok := t.NextHop[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNextHop(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNextHop got unexpected error: %v", err))
	}
	return v
}

// GetNextHop retrieves the value with the specified key from
// the NextHop map field of NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup) GetNextHop(Index uint64) *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.NextHop[key]; ok {
		return lm
	}
	return nil
}

// AppendNextHop appends the supplied NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop struct to the
// list NextHop of NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup. If the key value(s) specified in
// the supplied NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop already exist in the list, an error is
// returned.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup) AppendNextHop(v *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop)
	}

	if _, ok := t.NextHop[key]; ok {
		return fmt.Errorf("duplicate key for list NextHop %v", key)
	}

	t.NextHop[key] = v
	return nil
}

// GetEsi retrieves the value of the leaf Esi from the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Esi is set, it can
// safely use t.GetEsi() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Esi == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup) GetEsi() string {
	if t == nil || t.Esi == nil {
		return ""
	}
	return *t.Esi
}

// GetId retrieves the value of the leaf Id from the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup) GetId() uint64 {
	if t == nil || t.Id == nil {
		return 0
	}
	return *t.Id
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup) GetType() E_NextHopGroup_Type {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.NextHop {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup struct, which is a YANG list entry.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup.
func (*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop represents the /openconfig-network-instance/network-instances/network-instance/fdb/l2rib/mac-ip-table/next-hop-groups/next-hop-group/next-hops/next-hop YANG schema element.
type NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Index     *uint64           `path:"state/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex    []ygot.Annotation `path:"state/@index|@index" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop) IsYANGGoStruct() {}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop) GetIndex() uint64 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop struct, which is a YANG list entry.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop.
func (*NetworkInstance_Fdb_L2Rib_MacIpTable_NextHopGroup_NextHop) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_L2Rib_MacTable represents the /openconfig-network-instance/network-instances/network-instance/fdb/l2rib/mac-table YANG schema element.
type NetworkInstance_Fdb_L2Rib_MacTable struct {
	ΛMetadata     []ygot.Annotation                                           `path:"@" ygotAnnotation:"true"`
	Entry         map[string]*NetworkInstance_Fdb_L2Rib_MacTable_Entry        `path:"entries/entry" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEntry        []ygot.Annotation                                           `path:"entries/@entry" ygotAnnotation:"true"`
	NextHop       map[uint64]*NetworkInstance_Fdb_L2Rib_MacTable_NextHop      `path:"next-hops/next-hop" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHop      []ygot.Annotation                                           `path:"next-hops/@next-hop" ygotAnnotation:"true"`
	NextHopGroup  map[uint64]*NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup `path:"next-hop-groups/next-hop-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHopGroup []ygot.Annotation                                           `path:"next-hop-groups/@next-hop-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_L2Rib_MacTable implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_L2Rib_MacTable) IsYANGGoStruct() {}

// NewEntry creates a new entry in the Entry list of the
// NetworkInstance_Fdb_L2Rib_MacTable struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) NewEntry(MacAddress string) (*NetworkInstance_Fdb_L2Rib_MacTable_Entry, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Entry == nil {
		t.Entry = make(map[string]*NetworkInstance_Fdb_L2Rib_MacTable_Entry)
	}

	key := MacAddress

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Entry[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Entry", key)
	}

	t.Entry[key] = &NetworkInstance_Fdb_L2Rib_MacTable_Entry{
		MacAddress: &MacAddress,
	}

	return t.Entry[key], nil
}

// RenameEntry renames an entry in the list Entry within
// the NetworkInstance_Fdb_L2Rib_MacTable struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) RenameEntry(oldK, newK string) error {
	if _, ok := t.Entry[newK]; ok {
		return fmt.Errorf("key %v already exists in Entry", newK)
	}

	e, ok := t.Entry[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Entry", oldK)
	}
	e.MacAddress = &newK

	t.Entry[newK] = e
	delete(t.Entry, oldK)
	return nil
}

// GetOrCreateEntryMap returns the list (map) from NetworkInstance_Fdb_L2Rib_MacTable.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) GetOrCreateEntryMap() map[string]*NetworkInstance_Fdb_L2Rib_MacTable_Entry {
	if t.Entry == nil {
		t.Entry = make(map[string]*NetworkInstance_Fdb_L2Rib_MacTable_Entry)
	}
	return t.Entry
}

// GetOrCreateEntry retrieves the value with the specified keys from
// the receiver NetworkInstance_Fdb_L2Rib_MacTable. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) GetOrCreateEntry(MacAddress string) *NetworkInstance_Fdb_L2Rib_MacTable_Entry {

	key := MacAddress

	if v, ok := t.Entry[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewEntry(MacAddress)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateEntry got unexpected error: %v", err))
	}
	return v
}

// GetEntry retrieves the value with the specified key from
// the Entry map field of NetworkInstance_Fdb_L2Rib_MacTable. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) GetEntry(MacAddress string) *NetworkInstance_Fdb_L2Rib_MacTable_Entry {

	if t == nil {
		return nil
	}

	key := MacAddress

	if lm, ok := t.Entry[key]; ok {
		return lm
	}
	return nil
}

// AppendEntry appends the supplied NetworkInstance_Fdb_L2Rib_MacTable_Entry struct to the
// list Entry of NetworkInstance_Fdb_L2Rib_MacTable. If the key value(s) specified in
// the supplied NetworkInstance_Fdb_L2Rib_MacTable_Entry already exist in the list, an error is
// returned.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) AppendEntry(v *NetworkInstance_Fdb_L2Rib_MacTable_Entry) error {
	if v.MacAddress == nil {
		return fmt.Errorf("invalid nil key received for MacAddress")
	}

	key := *v.MacAddress

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Entry == nil {
		t.Entry = make(map[string]*NetworkInstance_Fdb_L2Rib_MacTable_Entry)
	}

	if _, ok := t.Entry[key]; ok {
		return fmt.Errorf("duplicate key for list Entry %v", key)
	}

	t.Entry[key] = v
	return nil
}

// NewNextHop creates a new entry in the NextHop list of the
// NetworkInstance_Fdb_L2Rib_MacTable struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) NewNextHop(Index uint64) (*NetworkInstance_Fdb_L2Rib_MacTable_NextHop, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacTable_NextHop)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.NextHop[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list NextHop", key)
	}

	t.NextHop[key] = &NetworkInstance_Fdb_L2Rib_MacTable_NextHop{
		Index: &Index,
	}

	return t.NextHop[key], nil
}

// RenameNextHop renames an entry in the list NextHop within
// the NetworkInstance_Fdb_L2Rib_MacTable struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) RenameNextHop(oldK, newK uint64) error {
	if _, ok := t.NextHop[newK]; ok {
		return fmt.Errorf("key %v already exists in NextHop", newK)
	}

	e, ok := t.NextHop[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in NextHop", oldK)
	}
	e.Index = &newK

	t.NextHop[newK] = e
	delete(t.NextHop, oldK)
	return nil
}

// GetOrCreateNextHopMap returns the list (map) from NetworkInstance_Fdb_L2Rib_MacTable.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) GetOrCreateNextHopMap() map[uint64]*NetworkInstance_Fdb_L2Rib_MacTable_NextHop {
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacTable_NextHop)
	}
	return t.NextHop
}

// GetOrCreateNextHop retrieves the value with the specified keys from
// the receiver NetworkInstance_Fdb_L2Rib_MacTable. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) GetOrCreateNextHop(Index uint64) *NetworkInstance_Fdb_L2Rib_MacTable_NextHop {

	key := Index

	if v, ok := t.NextHop[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNextHop(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNextHop got unexpected error: %v", err))
	}
	return v
}

// GetNextHop retrieves the value with the specified key from
// the NextHop map field of NetworkInstance_Fdb_L2Rib_MacTable. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) GetNextHop(Index uint64) *NetworkInstance_Fdb_L2Rib_MacTable_NextHop {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.NextHop[key]; ok {
		return lm
	}
	return nil
}

// AppendNextHop appends the supplied NetworkInstance_Fdb_L2Rib_MacTable_NextHop struct to the
// list NextHop of NetworkInstance_Fdb_L2Rib_MacTable. If the key value(s) specified in
// the supplied NetworkInstance_Fdb_L2Rib_MacTable_NextHop already exist in the list, an error is
// returned.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) AppendNextHop(v *NetworkInstance_Fdb_L2Rib_MacTable_NextHop) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacTable_NextHop)
	}

	if _, ok := t.NextHop[key]; ok {
		return fmt.Errorf("duplicate key for list NextHop %v", key)
	}

	t.NextHop[key] = v
	return nil
}

// NewNextHopGroup creates a new entry in the NextHopGroup list of the
// NetworkInstance_Fdb_L2Rib_MacTable struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) NewNextHopGroup(Id uint64) (*NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHopGroup == nil {
		t.NextHopGroup = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.NextHopGroup[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list NextHopGroup", key)
	}

	t.NextHopGroup[key] = &NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup{
		Id: &Id,
	}

	return t.NextHopGroup[key], nil
}

// RenameNextHopGroup renames an entry in the list NextHopGroup within
// the NetworkInstance_Fdb_L2Rib_MacTable struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) RenameNextHopGroup(oldK, newK uint64) error {
	if _, ok := t.NextHopGroup[newK]; ok {
		return fmt.Errorf("key %v already exists in NextHopGroup", newK)
	}

	e, ok := t.NextHopGroup[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in NextHopGroup", oldK)
	}
	e.Id = &newK

	t.NextHopGroup[newK] = e
	delete(t.NextHopGroup, oldK)
	return nil
}

// GetOrCreateNextHopGroupMap returns the list (map) from NetworkInstance_Fdb_L2Rib_MacTable.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) GetOrCreateNextHopGroupMap() map[uint64]*NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup {
	if t.NextHopGroup == nil {
		t.NextHopGroup = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup)
	}
	return t.NextHopGroup
}

// GetOrCreateNextHopGroup retrieves the value with the specified keys from
// the receiver NetworkInstance_Fdb_L2Rib_MacTable. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) GetOrCreateNextHopGroup(Id uint64) *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup {

	key := Id

	if v, ok := t.NextHopGroup[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNextHopGroup(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNextHopGroup got unexpected error: %v", err))
	}
	return v
}

// GetNextHopGroup retrieves the value with the specified key from
// the NextHopGroup map field of NetworkInstance_Fdb_L2Rib_MacTable. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) GetNextHopGroup(Id uint64) *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.NextHopGroup[key]; ok {
		return lm
	}
	return nil
}

// AppendNextHopGroup appends the supplied NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup struct to the
// list NextHopGroup of NetworkInstance_Fdb_L2Rib_MacTable. If the key value(s) specified in
// the supplied NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup already exist in the list, an error is
// returned.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) AppendNextHopGroup(v *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHopGroup == nil {
		t.NextHopGroup = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup)
	}

	if _, ok := t.NextHopGroup[key]; ok {
		return fmt.Errorf("duplicate key for list NextHopGroup %v", key)
	}

	t.NextHopGroup[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_L2Rib_MacTable
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Entry {
		e.PopulateDefaults()
	}
	for _, e := range t.NextHop {
		e.PopulateDefaults()
	}
	for _, e := range t.NextHopGroup {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_L2Rib_MacTable"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_L2Rib_MacTable) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_L2Rib_MacTable.
func (*NetworkInstance_Fdb_L2Rib_MacTable) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_L2Rib_MacTable_Entry represents the /openconfig-network-instance/network-instances/network-instance/fdb/l2rib/mac-table/entries/entry YANG schema element.
type NetworkInstance_Fdb_L2Rib_MacTable_Entry struct {
	ΛMetadata   []ygot.Annotation                                                          `path:"@" ygotAnnotation:"true"`
	Evi         *uint32                                                                    `path:"state/evi" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEvi        []ygot.Annotation                                                          `path:"state/@evi" ygotAnnotation:"true"`
	L2Vni       *uint32                                                                    `path:"state/l2-vni" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛL2Vni      []ygot.Annotation                                                          `path:"state/@l2-vni" ygotAnnotation:"true"`
	MacAddress  *string                                                                    `path:"state/mac-address|mac-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛMacAddress []ygot.Annotation                                                          `path:"state/@mac-address|@mac-address" ygotAnnotation:"true"`
	Producer    map[E_Producer_Producer]*NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer `path:"producers/producer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProducer   []ygot.Annotation                                                          `path:"producers/@producer" ygotAnnotation:"true"`
	Vlan        *uint16                                                                    `path:"state/vlan" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛVlan       []ygot.Annotation                                                          `path:"state/@vlan" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_L2Rib_MacTable_Entry implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_L2Rib_MacTable_Entry) IsYANGGoStruct() {}

// NewProducer creates a new entry in the Producer list of the
// NetworkInstance_Fdb_L2Rib_MacTable_Entry struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry) NewProducer(Producer E_Producer_Producer) (*NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Producer == nil {
		t.Producer = make(map[E_Producer_Producer]*NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer)
	}

	key := Producer

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Producer[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Producer", key)
	}

	t.Producer[key] = &NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer{
		Producer: Producer,
	}

	return t.Producer[key], nil
}

// RenameProducer renames an entry in the list Producer within
// the NetworkInstance_Fdb_L2Rib_MacTable_Entry struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry) RenameProducer(oldK, newK E_Producer_Producer) error {
	if _, ok := t.Producer[newK]; ok {
		return fmt.Errorf("key %v already exists in Producer", newK)
	}

	e, ok := t.Producer[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Producer", oldK)
	}
	e.Producer = newK

	t.Producer[newK] = e
	delete(t.Producer, oldK)
	return nil
}

// GetOrCreateProducerMap returns the list (map) from NetworkInstance_Fdb_L2Rib_MacTable_Entry.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry) GetOrCreateProducerMap() map[E_Producer_Producer]*NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer {
	if t.Producer == nil {
		t.Producer = make(map[E_Producer_Producer]*NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer)
	}
	return t.Producer
}

// GetOrCreateProducer retrieves the value with the specified keys from
// the receiver NetworkInstance_Fdb_L2Rib_MacTable_Entry. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry) GetOrCreateProducer(Producer E_Producer_Producer) *NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer {

	key := Producer

	if v, ok := t.Producer[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewProducer(Producer)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateProducer got unexpected error: %v", err))
	}
	return v
}

// GetProducer retrieves the value with the specified key from
// the Producer map field of NetworkInstance_Fdb_L2Rib_MacTable_Entry. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry) GetProducer(Producer E_Producer_Producer) *NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer {

	if t == nil {
		return nil
	}

	key := Producer

	if lm, ok := t.Producer[key]; ok {
		return lm
	}
	return nil
}

// AppendProducer appends the supplied NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer struct to the
// list Producer of NetworkInstance_Fdb_L2Rib_MacTable_Entry. If the key value(s) specified in
// the supplied NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer already exist in the list, an error is
// returned.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry) AppendProducer(v *NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer) error {
	key := v.Producer

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Producer == nil {
		t.Producer = make(map[E_Producer_Producer]*NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer)
	}

	if _, ok := t.Producer[key]; ok {
		return fmt.Errorf("duplicate key for list Producer %v", key)
	}

	t.Producer[key] = v
	return nil
}

// GetEvi retrieves the value of the leaf Evi from the NetworkInstance_Fdb_L2Rib_MacTable_Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Evi is set, it can
// safely use t.GetEvi() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Evi == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry) GetEvi() uint32 {
	if t == nil || t.Evi == nil {
		return 0
	}
	return *t.Evi
}

// GetL2Vni retrieves the value of the leaf L2Vni from the NetworkInstance_Fdb_L2Rib_MacTable_Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if L2Vni is set, it can
// safely use t.GetL2Vni() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.L2Vni == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry) GetL2Vni() uint32 {
	if t == nil || t.L2Vni == nil {
		return 0
	}
	return *t.L2Vni
}

// GetMacAddress retrieves the value of the leaf MacAddress from the NetworkInstance_Fdb_L2Rib_MacTable_Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MacAddress is set, it can
// safely use t.GetMacAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MacAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry) GetMacAddress() string {
	if t == nil || t.MacAddress == nil {
		return ""
	}
	return *t.MacAddress
}

// GetVlan retrieves the value of the leaf Vlan from the NetworkInstance_Fdb_L2Rib_MacTable_Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Vlan is set, it can
// safely use t.GetVlan() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Vlan == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry) GetVlan() uint16 {
	if t == nil || t.Vlan == nil {
		return 0
	}
	return *t.Vlan
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_L2Rib_MacTable_Entry
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Producer {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Fdb_L2Rib_MacTable_Entry struct, which is a YANG list entry.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry) ΛListKeyMap() (map[string]interface{}, error) {
	if t.MacAddress == nil {
		return nil, fmt.Errorf("nil value for key MacAddress")
	}

	return map[string]interface{}{
		"mac-address": *t.MacAddress,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_L2Rib_MacTable_Entry"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_L2Rib_MacTable_Entry.
func (*NetworkInstance_Fdb_L2Rib_MacTable_Entry) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer represents the /openconfig-network-instance/network-instances/network-instance/fdb/l2rib/mac-table/entries/entry/producers/producer YANG schema element.
type NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer struct {
	ΛMetadata         []ygot.Annotation        `path:"@" ygotAnnotation:"true"`
	DerivedFromMacIp  *bool                    `path:"state/derived-from-mac-ip" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDerivedFromMacIp []ygot.Annotation        `path:"state/@derived-from-mac-ip" ygotAnnotation:"true"`
	DirectlyReceived  *bool                    `path:"state/directly-received" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDirectlyReceived []ygot.Annotation        `path:"state/@directly-received" ygotAnnotation:"true"`
	Esi               *string                  `path:"state/esi" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEsi              []ygot.Annotation        `path:"state/@esi" ygotAnnotation:"true"`
	MobilityState     E_Producer_MobilityState `path:"state/mobility-state" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMobilityState    []ygot.Annotation        `path:"state/@mobility-state" ygotAnnotation:"true"`
	NextHop           *uint64                  `path:"state/next-hop" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHop          []ygot.Annotation        `path:"state/@next-hop" ygotAnnotation:"true"`
	NextHopGroup      []uint64                 `path:"state/next-hop-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHopGroup     []ygot.Annotation        `path:"state/@next-hop-group" ygotAnnotation:"true"`
	Producer          E_Producer_Producer      `path:"state/producer|producer" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛProducer         []ygot.Annotation        `path:"state/@producer|@producer" ygotAnnotation:"true"`
	SeqNumber         *uint32                  `path:"state/seq-number" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSeqNumber        []ygot.Annotation        `path:"state/@seq-number" ygotAnnotation:"true"`
	Sticky            *bool                    `path:"state/sticky" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSticky           []ygot.Annotation        `path:"state/@sticky" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer) IsYANGGoStruct() {}

// GetDerivedFromMacIp retrieves the value of the leaf DerivedFromMacIp from the NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DerivedFromMacIp is set, it can
// safely use t.GetDerivedFromMacIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DerivedFromMacIp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer) GetDerivedFromMacIp() bool {
	if t == nil || t.DerivedFromMacIp == nil {
		return false
	}
	return *t.DerivedFromMacIp
}

// GetDirectlyReceived retrieves the value of the leaf DirectlyReceived from the NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DirectlyReceived is set, it can
// safely use t.GetDirectlyReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DirectlyReceived == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer) GetDirectlyReceived() bool {
	if t == nil || t.DirectlyReceived == nil {
		return false
	}
	return *t.DirectlyReceived
}

// GetEsi retrieves the value of the leaf Esi from the NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Esi is set, it can
// safely use t.GetEsi() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Esi == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer) GetEsi() string {
	if t == nil || t.Esi == nil {
		return ""
	}
	return *t.Esi
}

// GetMobilityState retrieves the value of the leaf MobilityState from the NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MobilityState is set, it can
// safely use t.GetMobilityState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MobilityState == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer) GetMobilityState() E_Producer_MobilityState {
	if t == nil || t.MobilityState == 0 {
		return 0
	}
	return t.MobilityState
}

// GetNextHop retrieves the value of the leaf NextHop from the NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHop is set, it can
// safely use t.GetNextHop() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHop == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer) GetNextHop() uint64 {
	if t == nil || t.NextHop == nil {
		return 0
	}
	return *t.NextHop
}

// GetNextHopGroup retrieves the value of the leaf NextHopGroup from the NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHopGroup is set, it can
// safely use t.GetNextHopGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHopGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer) GetNextHopGroup() []uint64 {
	if t == nil || t.NextHopGroup == nil {
		return nil
	}
	return t.NextHopGroup
}

// GetProducer retrieves the value of the leaf Producer from the NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Producer is set, it can
// safely use t.GetProducer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Producer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer) GetProducer() E_Producer_Producer {
	if t == nil || t.Producer == 0 {
		return 0
	}
	return t.Producer
}

// GetSeqNumber retrieves the value of the leaf SeqNumber from the NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SeqNumber is set, it can
// safely use t.GetSeqNumber() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SeqNumber == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer) GetSeqNumber() uint32 {
	if t == nil || t.SeqNumber == nil {
		return 0
	}
	return *t.SeqNumber
}

// GetSticky retrieves the value of the leaf Sticky from the NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Sticky is set, it can
// safely use t.GetSticky() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Sticky == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer) GetSticky() bool {
	if t == nil || t.Sticky == nil {
		return false
	}
	return *t.Sticky
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer struct, which is a YANG list entry.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"producer": t.Producer,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer.
func (*NetworkInstance_Fdb_L2Rib_MacTable_Entry_Producer) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_L2Rib_MacTable_NextHop represents the /openconfig-network-instance/network-instances/network-instance/fdb/l2rib/mac-table/next-hops/next-hop YANG schema element.
type NetworkInstance_Fdb_L2Rib_MacTable_NextHop struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Esi           *string           `path:"state/esi" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEsi          []ygot.Annotation `path:"state/@esi" ygotAnnotation:"true"`
	Index         *uint64           `path:"state/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex        []ygot.Annotation `path:"state/@index|@index" ygotAnnotation:"true"`
	Interface     *string           `path:"state/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"state/@interface" ygotAnnotation:"true"`
	Label         *uint32           `path:"state/label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabel        []ygot.Annotation `path:"state/@label" ygotAnnotation:"true"`
	PeerIp        *string           `path:"state/peer-ip" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPeerIp       []ygot.Annotation `path:"state/@peer-ip" ygotAnnotation:"true"`
	Resolved      *bool             `path:"state/resolved" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛResolved     []ygot.Annotation `path:"state/@resolved" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"state/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"state/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_L2Rib_MacTable_NextHop implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_L2Rib_MacTable_NextHop) IsYANGGoStruct() {}

// GetEsi retrieves the value of the leaf Esi from the NetworkInstance_Fdb_L2Rib_MacTable_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Esi is set, it can
// safely use t.GetEsi() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Esi == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHop) GetEsi() string {
	if t == nil || t.Esi == nil {
		return ""
	}
	return *t.Esi
}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_Fdb_L2Rib_MacTable_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHop) GetIndex() uint64 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Fdb_L2Rib_MacTable_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHop) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetLabel retrieves the value of the leaf Label from the NetworkInstance_Fdb_L2Rib_MacTable_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Label is set, it can
// safely use t.GetLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Label == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHop) GetLabel() uint32 {
	if t == nil || t.Label == nil {
		return 0
	}
	return *t.Label
}

// GetPeerIp retrieves the value of the leaf PeerIp from the NetworkInstance_Fdb_L2Rib_MacTable_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerIp is set, it can
// safely use t.GetPeerIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerIp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHop) GetPeerIp() string {
	if t == nil || t.PeerIp == nil {
		return ""
	}
	return *t.PeerIp
}

// GetResolved retrieves the value of the leaf Resolved from the NetworkInstance_Fdb_L2Rib_MacTable_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Resolved is set, it can
// safely use t.GetResolved() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Resolved == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHop) GetResolved() bool {
	if t == nil || t.Resolved == nil {
		return false
	}
	return *t.Resolved
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Fdb_L2Rib_MacTable_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHop) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_L2Rib_MacTable_NextHop
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHop) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Fdb_L2Rib_MacTable_NextHop struct, which is a YANG list entry.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHop) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHop) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_L2Rib_MacTable_NextHop"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHop) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHop) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_L2Rib_MacTable_NextHop.
func (*NetworkInstance_Fdb_L2Rib_MacTable_NextHop) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup represents the /openconfig-network-instance/network-instances/network-instance/fdb/l2rib/mac-table/next-hop-groups/next-hop-group YANG schema element.
type NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup struct {
	ΛMetadata []ygot.Annotation                                                   `path:"@" ygotAnnotation:"true"`
	Esi       *string                                                             `path:"state/esi" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEsi      []ygot.Annotation                                                   `path:"state/@esi" ygotAnnotation:"true"`
	Id        *uint64                                                             `path:"state/id|id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛId       []ygot.Annotation                                                   `path:"state/@id|@id" ygotAnnotation:"true"`
	NextHop   map[uint64]*NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop `path:"next-hops/next-hop" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHop  []ygot.Annotation                                                   `path:"next-hops/@next-hop" ygotAnnotation:"true"`
	Type      E_NextHopGroup_Type                                                 `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                                                   `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup) IsYANGGoStruct() {}

// NewNextHop creates a new entry in the NextHop list of the
// NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup) NewNextHop(Index uint64) (*NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.NextHop[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list NextHop", key)
	}

	t.NextHop[key] = &NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop{
		Index: &Index,
	}

	return t.NextHop[key], nil
}

// RenameNextHop renames an entry in the list NextHop within
// the NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup) RenameNextHop(oldK, newK uint64) error {
	if _, ok := t.NextHop[newK]; ok {
		return fmt.Errorf("key %v already exists in NextHop", newK)
	}

	e, ok := t.NextHop[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in NextHop", oldK)
	}
	e.Index = &newK

	t.NextHop[newK] = e
	delete(t.NextHop, oldK)
	return nil
}

// GetOrCreateNextHopMap returns the list (map) from NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup) GetOrCreateNextHopMap() map[uint64]*NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop {
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop)
	}
	return t.NextHop
}

// GetOrCreateNextHop retrieves the value with the specified keys from
// the receiver NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup) GetOrCreateNextHop(Index uint64) *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop {

	key := Index

	if v, ok := t.NextHop[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNextHop(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNextHop got unexpected error: %v", err))
	}
	return v
}

// GetNextHop retrieves the value with the specified key from
// the NextHop map field of NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup) GetNextHop(Index uint64) *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.NextHop[key]; ok {
		return lm
	}
	return nil
}

// AppendNextHop appends the supplied NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop struct to the
// list NextHop of NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup. If the key value(s) specified in
// the supplied NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop already exist in the list, an error is
// returned.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup) AppendNextHop(v *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop)
	}

	if _, ok := t.NextHop[key]; ok {
		return fmt.Errorf("duplicate key for list NextHop %v", key)
	}

	t.NextHop[key] = v
	return nil
}

// GetEsi retrieves the value of the leaf Esi from the NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Esi is set, it can
// safely use t.GetEsi() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Esi == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup) GetEsi() string {
	if t == nil || t.Esi == nil {
		return ""
	}
	return *t.Esi
}

// GetId retrieves the value of the leaf Id from the NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup) GetId() uint64 {
	if t == nil || t.Id == nil {
		return 0
	}
	return *t.Id
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup) GetType() E_NextHopGroup_Type {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.NextHop {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup struct, which is a YANG list entry.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup.
func (*NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop represents the /openconfig-network-instance/network-instances/network-instance/fdb/l2rib/mac-table/next-hop-groups/next-hop-group/next-hops/next-hop YANG schema element.
type NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Index     *uint64           `path:"state/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex    []ygot.Annotation `path:"state/@index|@index" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop) IsYANGGoStruct() {}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop) GetIndex() uint64 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop struct, which is a YANG list entry.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop.
func (*NetworkInstance_Fdb_L2Rib_MacTable_NextHopGroup_NextHop) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_MacMobility represents the /openconfig-network-instance/network-instances/network-instance/fdb/mac-mobility YANG schema element.
type NetworkInstance_Fdb_MacMobility struct {
	ΛMetadata                     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	DuplicateIpDetectionInterval  *uint16           `path:"config/duplicate-ip-detection-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDuplicateIpDetectionInterval []ygot.Annotation `path:"config/@duplicate-ip-detection-interval" ygotAnnotation:"true"`
	IpMobilityThreshold           *uint16           `path:"config/ip-mobility-threshold" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpMobilityThreshold          []ygot.Annotation `path:"config/@ip-mobility-threshold" ygotAnnotation:"true"`
	MacMobility                   *bool             `path:"config/mac-mobility" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMacMobility                  []ygot.Annotation `path:"config/@mac-mobility" ygotAnnotation:"true"`
	MacMobilityThreshold          *uint8            `path:"config/mac-mobility-threshold" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMacMobilityThreshold         []ygot.Annotation `path:"config/@mac-mobility-threshold" ygotAnnotation:"true"`
	MacMobilityWindow             *uint16           `path:"config/mac-mobility-window" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMacMobilityWindow            []ygot.Annotation `path:"config/@mac-mobility-window" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_MacMobility implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_MacMobility) IsYANGGoStruct() {}

// GetDuplicateIpDetectionInterval retrieves the value of the leaf DuplicateIpDetectionInterval from the NetworkInstance_Fdb_MacMobility
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DuplicateIpDetectionInterval is set, it can
// safely use t.GetDuplicateIpDetectionInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DuplicateIpDetectionInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_MacMobility) GetDuplicateIpDetectionInterval() uint16 {
	if t == nil || t.DuplicateIpDetectionInterval == nil {
		return 0
	}
	return *t.DuplicateIpDetectionInterval
}

// GetIpMobilityThreshold retrieves the value of the leaf IpMobilityThreshold from the NetworkInstance_Fdb_MacMobility
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IpMobilityThreshold is set, it can
// safely use t.GetIpMobilityThreshold() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IpMobilityThreshold == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_MacMobility) GetIpMobilityThreshold() uint16 {
	if t == nil || t.IpMobilityThreshold == nil {
		return 0
	}
	return *t.IpMobilityThreshold
}

// GetMacMobility retrieves the value of the leaf MacMobility from the NetworkInstance_Fdb_MacMobility
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MacMobility is set, it can
// safely use t.GetMacMobility() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MacMobility == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_MacMobility) GetMacMobility() bool {
	if t == nil || t.MacMobility == nil {
		return false
	}
	return *t.MacMobility
}

// GetMacMobilityThreshold retrieves the value of the leaf MacMobilityThreshold from the NetworkInstance_Fdb_MacMobility
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MacMobilityThreshold is set, it can
// safely use t.GetMacMobilityThreshold() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MacMobilityThreshold == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_MacMobility) GetMacMobilityThreshold() uint8 {
	if t == nil || t.MacMobilityThreshold == nil {
		return 5
	}
	return *t.MacMobilityThreshold
}

// GetMacMobilityWindow retrieves the value of the leaf MacMobilityWindow from the NetworkInstance_Fdb_MacMobility
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MacMobilityWindow is set, it can
// safely use t.GetMacMobilityWindow() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MacMobilityWindow == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_MacMobility) GetMacMobilityWindow() uint16 {
	if t == nil || t.MacMobilityWindow == nil {
		return 180
	}
	return *t.MacMobilityWindow
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_MacMobility
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_MacMobility) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MacMobilityThreshold == nil {
		var v uint8 = 5
		t.MacMobilityThreshold = &v
	}
	if t.MacMobilityWindow == nil {
		var v uint16 = 180
		t.MacMobilityWindow = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_MacMobility) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_MacMobility"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_MacMobility) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_MacMobility) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_MacMobility.
func (*NetworkInstance_Fdb_MacMobility) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_MacTable represents the /openconfig-network-instance/network-instances/network-instance/fdb/mac-table YANG schema element.
type NetworkInstance_Fdb_MacTable struct {
	ΛMetadata []ygot.Annotation                                                              `path:"@" ygotAnnotation:"true"`
	Entry     map[NetworkInstance_Fdb_MacTable_Entry_Key]*NetworkInstance_Fdb_MacTable_Entry `path:"entries/entry" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEntry    []ygot.Annotation                                                              `path:"entries/@entry" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_MacTable implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_MacTable) IsYANGGoStruct() {}

// NetworkInstance_Fdb_MacTable_Entry_Key represents the key for list Entry of element /openconfig-network-instance/network-instances/network-instance/fdb/mac-table.
type NetworkInstance_Fdb_MacTable_Entry_Key struct {
	MacAddress string `path:"mac-address"`
	Vlan       uint16 `path:"vlan"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Fdb_MacTable_Entry_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Fdb_MacTable_Entry_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_Fdb_MacTable_Entry_Key key struct.
func (t NetworkInstance_Fdb_MacTable_Entry_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"mac-address": t.MacAddress,
		"vlan":        t.Vlan,
	}, nil
}

// NewEntry creates a new entry in the Entry list of the
// NetworkInstance_Fdb_MacTable struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Fdb_MacTable) NewEntry(MacAddress string, Vlan uint16) (*NetworkInstance_Fdb_MacTable_Entry, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Entry == nil {
		t.Entry = make(map[NetworkInstance_Fdb_MacTable_Entry_Key]*NetworkInstance_Fdb_MacTable_Entry)
	}

	key := NetworkInstance_Fdb_MacTable_Entry_Key{
		MacAddress: MacAddress,
		Vlan:       Vlan,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Entry[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Entry", key)
	}

	t.Entry[key] = &NetworkInstance_Fdb_MacTable_Entry{
		MacAddress: &MacAddress,
		Vlan:       &Vlan,
	}

	return t.Entry[key], nil
}

// RenameEntry renames an entry in the list Entry within
// the NetworkInstance_Fdb_MacTable struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Fdb_MacTable) RenameEntry(oldK, newK NetworkInstance_Fdb_MacTable_Entry_Key) error {
	if _, ok := t.Entry[newK]; ok {
		return fmt.Errorf("key %v already exists in Entry", newK)
	}

	e, ok := t.Entry[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Entry", oldK)
	}
	e.MacAddress = &newK.MacAddress
	e.Vlan = &newK.Vlan

	t.Entry[newK] = e
	delete(t.Entry, oldK)
	return nil
}

// GetOrCreateEntryMap returns the list (map) from NetworkInstance_Fdb_MacTable.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Fdb_MacTable) GetOrCreateEntryMap() map[NetworkInstance_Fdb_MacTable_Entry_Key]*NetworkInstance_Fdb_MacTable_Entry {
	if t.Entry == nil {
		t.Entry = make(map[NetworkInstance_Fdb_MacTable_Entry_Key]*NetworkInstance_Fdb_MacTable_Entry)
	}
	return t.Entry
}

// GetOrCreateEntry retrieves the value with the specified keys from
// the receiver NetworkInstance_Fdb_MacTable. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Fdb_MacTable) GetOrCreateEntry(MacAddress string, Vlan uint16) *NetworkInstance_Fdb_MacTable_Entry {

	key := NetworkInstance_Fdb_MacTable_Entry_Key{
		MacAddress: MacAddress,
		Vlan:       Vlan,
	}

	if v, ok := t.Entry[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewEntry(MacAddress, Vlan)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateEntry got unexpected error: %v", err))
	}
	return v
}

// GetEntry retrieves the value with the specified key from
// the Entry map field of NetworkInstance_Fdb_MacTable. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Fdb_MacTable) GetEntry(MacAddress string, Vlan uint16) *NetworkInstance_Fdb_MacTable_Entry {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Fdb_MacTable_Entry_Key{
		MacAddress: MacAddress,
		Vlan:       Vlan,
	}

	if lm, ok := t.Entry[key]; ok {
		return lm
	}
	return nil
}

// AppendEntry appends the supplied NetworkInstance_Fdb_MacTable_Entry struct to the
// list Entry of NetworkInstance_Fdb_MacTable. If the key value(s) specified in
// the supplied NetworkInstance_Fdb_MacTable_Entry already exist in the list, an error is
// returned.
func (t *NetworkInstance_Fdb_MacTable) AppendEntry(v *NetworkInstance_Fdb_MacTable_Entry) error {
	if v.MacAddress == nil {
		return fmt.Errorf("invalid nil key for MacAddress")
	}

	if v.Vlan == nil {
		return fmt.Errorf("invalid nil key for Vlan")
	}

	key := NetworkInstance_Fdb_MacTable_Entry_Key{
		MacAddress: *v.MacAddress,
		Vlan:       *v.Vlan,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Entry == nil {
		t.Entry = make(map[NetworkInstance_Fdb_MacTable_Entry_Key]*NetworkInstance_Fdb_MacTable_Entry)
	}

	if _, ok := t.Entry[key]; ok {
		return fmt.Errorf("duplicate key for list Entry %v", key)
	}

	t.Entry[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_MacTable
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_MacTable) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Entry {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_MacTable) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_MacTable"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_MacTable) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_MacTable) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_MacTable.
func (*NetworkInstance_Fdb_MacTable) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_MacTable_Entry represents the /openconfig-network-instance/network-instances/network-instance/fdb/mac-table/entries/entry YANG schema element.
type NetworkInstance_Fdb_MacTable_Entry struct {
	ΛMetadata   []ygot.Annotation                             `path:"@" ygotAnnotation:"true"`
	Age         *uint64                                       `path:"state/age" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAge        []ygot.Annotation                             `path:"state/@age" ygotAnnotation:"true"`
	EntryType   E_Entry_EntryType                             `path:"state/entry-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEntryType  []ygot.Annotation                             `path:"state/@entry-type" ygotAnnotation:"true"`
	Evi         *uint32                                       `path:"state/evi" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEvi        []ygot.Annotation                             `path:"state/@evi" ygotAnnotation:"true"`
	Interface   *NetworkInstance_Fdb_MacTable_Entry_Interface `path:"interface" module:"openconfig-network-instance"`
	ΛInterface  []ygot.Annotation                             `path:"@interface" ygotAnnotation:"true"`
	MacAddress  *string                                       `path:"config/mac-address|mac-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛMacAddress []ygot.Annotation                             `path:"config/@mac-address|@mac-address" ygotAnnotation:"true"`
	Vlan        *uint16                                       `path:"config/vlan|vlan" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛVlan       []ygot.Annotation                             `path:"config/@vlan|@vlan" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_MacTable_Entry implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_MacTable_Entry) IsYANGGoStruct() {}

// GetOrCreateInterface retrieves the value of the Interface field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Fdb_MacTable_Entry) GetOrCreateInterface() *NetworkInstance_Fdb_MacTable_Entry_Interface {
	if t.Interface != nil {
		return t.Interface
	}
	t.Interface = &NetworkInstance_Fdb_MacTable_Entry_Interface{}
	return t.Interface
}

// GetInterface returns the value of the Interface struct pointer
// from NetworkInstance_Fdb_MacTable_Entry. If the receiver or the field Interface is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Fdb_MacTable_Entry) GetInterface() *NetworkInstance_Fdb_MacTable_Entry_Interface {
	if t != nil && t.Interface != nil {
		return t.Interface
	}
	return nil
}

// GetAge retrieves the value of the leaf Age from the NetworkInstance_Fdb_MacTable_Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Age is set, it can
// safely use t.GetAge() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Age == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_MacTable_Entry) GetAge() uint64 {
	if t == nil || t.Age == nil {
		return 0
	}
	return *t.Age
}

// GetEntryType retrieves the value of the leaf EntryType from the NetworkInstance_Fdb_MacTable_Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EntryType is set, it can
// safely use t.GetEntryType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EntryType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_MacTable_Entry) GetEntryType() E_Entry_EntryType {
	if t == nil || t.EntryType == 0 {
		return 0
	}
	return t.EntryType
}

// GetEvi retrieves the value of the leaf Evi from the NetworkInstance_Fdb_MacTable_Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Evi is set, it can
// safely use t.GetEvi() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Evi == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_MacTable_Entry) GetEvi() uint32 {
	if t == nil || t.Evi == nil {
		return 0
	}
	return *t.Evi
}

// GetMacAddress retrieves the value of the leaf MacAddress from the NetworkInstance_Fdb_MacTable_Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MacAddress is set, it can
// safely use t.GetMacAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MacAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_MacTable_Entry) GetMacAddress() string {
	if t == nil || t.MacAddress == nil {
		return ""
	}
	return *t.MacAddress
}

// GetVlan retrieves the value of the leaf Vlan from the NetworkInstance_Fdb_MacTable_Entry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Vlan is set, it can
// safely use t.GetVlan() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Vlan == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_MacTable_Entry) GetVlan() uint16 {
	if t == nil || t.Vlan == nil {
		return 0
	}
	return *t.Vlan
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_MacTable_Entry
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_MacTable_Entry) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Interface.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Fdb_MacTable_Entry struct, which is a YANG list entry.
func (t *NetworkInstance_Fdb_MacTable_Entry) ΛListKeyMap() (map[string]interface{}, error) {
	if t.MacAddress == nil {
		return nil, fmt.Errorf("nil value for key MacAddress")
	}

	if t.Vlan == nil {
		return nil, fmt.Errorf("nil value for key Vlan")
	}

	return map[string]interface{}{
		"mac-address": *t.MacAddress,
		"vlan":        *t.Vlan,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_MacTable_Entry) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_MacTable_Entry"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_MacTable_Entry) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_MacTable_Entry) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_MacTable_Entry.
func (*NetworkInstance_Fdb_MacTable_Entry) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_MacTable_Entry_Interface represents the /openconfig-network-instance/network-instances/network-instance/fdb/mac-table/entries/entry/interface YANG schema element.
type NetworkInstance_Fdb_MacTable_Entry_Interface struct {
	ΛMetadata     []ygot.Annotation                                          `path:"@" ygotAnnotation:"true"`
	InterfaceRef  *NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef `path:"interface-ref" module:"openconfig-network-instance"`
	ΛInterfaceRef []ygot.Annotation                                          `path:"@interface-ref" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_MacTable_Entry_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_MacTable_Entry_Interface) IsYANGGoStruct() {}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Fdb_MacTable_Entry_Interface) GetOrCreateInterfaceRef() *NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef{}
	return t.InterfaceRef
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from NetworkInstance_Fdb_MacTable_Entry_Interface. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Fdb_MacTable_Entry_Interface) GetInterfaceRef() *NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_MacTable_Entry_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_MacTable_Entry_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.InterfaceRef.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_MacTable_Entry_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_MacTable_Entry_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_MacTable_Entry_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_MacTable_Entry_Interface) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_MacTable_Entry_Interface.
func (*NetworkInstance_Fdb_MacTable_Entry_Interface) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef represents the /openconfig-network-instance/network-instances/network-instance/fdb/mac-table/entries/entry/interface/interface-ref YANG schema element.
type NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef.
func (*NetworkInstance_Fdb_MacTable_Entry_Interface_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Fdb_NdProxy represents the /openconfig-network-instance/network-instances/network-instance/fdb/nd-proxy YANG schema element.
type NetworkInstance_Fdb_NdProxy struct {
	ΛMetadata                     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	DuplicateIpDetectionInterval  *uint16           `path:"config/duplicate-ip-detection-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDuplicateIpDetectionInterval []ygot.Annotation `path:"config/@duplicate-ip-detection-interval" ygotAnnotation:"true"`
	Enable                        *bool             `path:"config/enable" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnable                       []ygot.Annotation `path:"config/@enable" ygotAnnotation:"true"`
	IpMobilityThreshold           *uint16           `path:"config/ip-mobility-threshold" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpMobilityThreshold          []ygot.Annotation `path:"config/@ip-mobility-threshold" ygotAnnotation:"true"`
	NdSuppression                 *bool             `path:"config/nd-suppression" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNdSuppression                []ygot.Annotation `path:"config/@nd-suppression" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Fdb_NdProxy implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Fdb_NdProxy) IsYANGGoStruct() {}

// GetDuplicateIpDetectionInterval retrieves the value of the leaf DuplicateIpDetectionInterval from the NetworkInstance_Fdb_NdProxy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DuplicateIpDetectionInterval is set, it can
// safely use t.GetDuplicateIpDetectionInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DuplicateIpDetectionInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_NdProxy) GetDuplicateIpDetectionInterval() uint16 {
	if t == nil || t.DuplicateIpDetectionInterval == nil {
		return 0
	}
	return *t.DuplicateIpDetectionInterval
}

// GetEnable retrieves the value of the leaf Enable from the NetworkInstance_Fdb_NdProxy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enable is set, it can
// safely use t.GetEnable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enable == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_NdProxy) GetEnable() bool {
	if t == nil || t.Enable == nil {
		return false
	}
	return *t.Enable
}

// GetIpMobilityThreshold retrieves the value of the leaf IpMobilityThreshold from the NetworkInstance_Fdb_NdProxy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IpMobilityThreshold is set, it can
// safely use t.GetIpMobilityThreshold() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IpMobilityThreshold == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_NdProxy) GetIpMobilityThreshold() uint16 {
	if t == nil || t.IpMobilityThreshold == nil {
		return 0
	}
	return *t.IpMobilityThreshold
}

// GetNdSuppression retrieves the value of the leaf NdSuppression from the NetworkInstance_Fdb_NdProxy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NdSuppression is set, it can
// safely use t.GetNdSuppression() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NdSuppression == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Fdb_NdProxy) GetNdSuppression() bool {
	if t == nil || t.NdSuppression == nil {
		return false
	}
	return *t.NdSuppression
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Fdb_NdProxy
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Fdb_NdProxy) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enable == nil {
		var v bool = false
		t.Enable = &v
	}
	if t.NdSuppression == nil {
		var v bool = false
		t.NdSuppression = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_NdProxy) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Fdb_NdProxy"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Fdb_NdProxy) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Fdb_NdProxy) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Fdb_NdProxy.
func (*NetworkInstance_Fdb_NdProxy) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_InterInstancePolicies represents the /openconfig-network-instance/network-instances/network-instance/inter-instance-policies YANG schema element.
type NetworkInstance_InterInstancePolicies struct {
	ΛMetadata           []ygot.Annotation                                         `path:"@" ygotAnnotation:"true"`
	ApplyPolicy         *NetworkInstance_InterInstancePolicies_ApplyPolicy        `path:"apply-policy" module:"openconfig-network-instance"`
	ΛApplyPolicy        []ygot.Annotation                                         `path:"@apply-policy" ygotAnnotation:"true"`
	ImportExportPolicy  *NetworkInstance_InterInstancePolicies_ImportExportPolicy `path:"import-export-policy" module:"openconfig-network-instance"`
	ΛImportExportPolicy []ygot.Annotation                                         `path:"@import-export-policy" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_InterInstancePolicies implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_InterInstancePolicies) IsYANGGoStruct() {}

// GetOrCreateApplyPolicy retrieves the value of the ApplyPolicy field
// or returns the existing field if it already exists.
func (t *NetworkInstance_InterInstancePolicies) GetOrCreateApplyPolicy() *NetworkInstance_InterInstancePolicies_ApplyPolicy {
	if t.ApplyPolicy != nil {
		return t.ApplyPolicy
	}
	t.ApplyPolicy = &NetworkInstance_InterInstancePolicies_ApplyPolicy{}
	return t.ApplyPolicy
}

// GetOrCreateImportExportPolicy retrieves the value of the ImportExportPolicy field
// or returns the existing field if it already exists.
func (t *NetworkInstance_InterInstancePolicies) GetOrCreateImportExportPolicy() *NetworkInstance_InterInstancePolicies_ImportExportPolicy {
	if t.ImportExportPolicy != nil {
		return t.ImportExportPolicy
	}
	t.ImportExportPolicy = &NetworkInstance_InterInstancePolicies_ImportExportPolicy{}
	return t.ImportExportPolicy
}

// GetApplyPolicy returns the value of the ApplyPolicy struct pointer
// from NetworkInstance_InterInstancePolicies. If the receiver or the field ApplyPolicy is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_InterInstancePolicies) GetApplyPolicy() *NetworkInstance_InterInstancePolicies_ApplyPolicy {
	if t != nil && t.ApplyPolicy != nil {
		return t.ApplyPolicy
	}
	return nil
}

// GetImportExportPolicy returns the value of the ImportExportPolicy struct pointer
// from NetworkInstance_InterInstancePolicies. If the receiver or the field ImportExportPolicy is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_InterInstancePolicies) GetImportExportPolicy() *NetworkInstance_InterInstancePolicies_ImportExportPolicy {
	if t != nil && t.ImportExportPolicy != nil {
		return t.ImportExportPolicy
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_InterInstancePolicies
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_InterInstancePolicies) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.ApplyPolicy.PopulateDefaults()
	t.ImportExportPolicy.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_InterInstancePolicies) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_InterInstancePolicies"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_InterInstancePolicies) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_InterInstancePolicies) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_InterInstancePolicies.
func (*NetworkInstance_InterInstancePolicies) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_InterInstancePolicies_ApplyPolicy represents the /openconfig-network-instance/network-instances/network-instance/inter-instance-policies/apply-policy YANG schema element.
type NetworkInstance_InterInstancePolicies_ApplyPolicy struct {
	ΛMetadata            []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	DefaultExportPolicy  E_RoutingPolicy_DefaultPolicyType `path:"config/default-export-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultExportPolicy []ygot.Annotation                 `path:"config/@default-export-policy" ygotAnnotation:"true"`
	DefaultImportPolicy  E_RoutingPolicy_DefaultPolicyType `path:"config/default-import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultImportPolicy []ygot.Annotation                 `path:"config/@default-import-policy" ygotAnnotation:"true"`
	ExportPolicy         []string                          `path:"config/export-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExportPolicy        []ygot.Annotation                 `path:"config/@export-policy" ygotAnnotation:"true"`
	ImportPolicy         []string                          `path:"config/import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛImportPolicy        []ygot.Annotation                 `path:"config/@import-policy" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_InterInstancePolicies_ApplyPolicy implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_InterInstancePolicies_ApplyPolicy) IsYANGGoStruct() {}

// GetDefaultExportPolicy retrieves the value of the leaf DefaultExportPolicy from the NetworkInstance_InterInstancePolicies_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultExportPolicy is set, it can
// safely use t.GetDefaultExportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultExportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_InterInstancePolicies_ApplyPolicy) GetDefaultExportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultExportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultExportPolicy
}

// GetDefaultImportPolicy retrieves the value of the leaf DefaultImportPolicy from the NetworkInstance_InterInstancePolicies_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultImportPolicy is set, it can
// safely use t.GetDefaultImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_InterInstancePolicies_ApplyPolicy) GetDefaultImportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultImportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultImportPolicy
}

// GetExportPolicy retrieves the value of the leaf ExportPolicy from the NetworkInstance_InterInstancePolicies_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExportPolicy is set, it can
// safely use t.GetExportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_InterInstancePolicies_ApplyPolicy) GetExportPolicy() []string {
	if t == nil || t.ExportPolicy == nil {
		return nil
	}
	return t.ExportPolicy
}

// GetImportPolicy retrieves the value of the leaf ImportPolicy from the NetworkInstance_InterInstancePolicies_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ImportPolicy is set, it can
// safely use t.GetImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_InterInstancePolicies_ApplyPolicy) GetImportPolicy() []string {
	if t == nil || t.ImportPolicy == nil {
		return nil
	}
	return t.ImportPolicy
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_InterInstancePolicies_ApplyPolicy
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_InterInstancePolicies_ApplyPolicy) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DefaultExportPolicy == 0 {
		t.DefaultExportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	if t.DefaultImportPolicy == 0 {
		t.DefaultImportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_InterInstancePolicies_ApplyPolicy) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_InterInstancePolicies_ApplyPolicy"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_InterInstancePolicies_ApplyPolicy) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_InterInstancePolicies_ApplyPolicy) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_InterInstancePolicies_ApplyPolicy.
func (*NetworkInstance_InterInstancePolicies_ApplyPolicy) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_InterInstancePolicies_ImportExportPolicy represents the /openconfig-network-instance/network-instances/network-instance/inter-instance-policies/import-export-policy YANG schema element.
type NetworkInstance_InterInstancePolicies_ImportExportPolicy struct {
	ΛMetadata          []ygot.Annotation                                                                  `path:"@" ygotAnnotation:"true"`
	ExportRouteTarget  []NetworkInstance_InterInstancePolicies_ImportExportPolicy_ExportRouteTarget_Union `path:"config/export-route-target" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExportRouteTarget []ygot.Annotation                                                                  `path:"config/@export-route-target" ygotAnnotation:"true"`
	ImportRouteTarget  []NetworkInstance_InterInstancePolicies_ImportExportPolicy_ImportRouteTarget_Union `path:"config/import-route-target" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛImportRouteTarget []ygot.Annotation                                                                  `path:"config/@import-route-target" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_InterInstancePolicies_ImportExportPolicy implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_InterInstancePolicies_ImportExportPolicy) IsYANGGoStruct() {}

// GetExportRouteTarget retrieves the value of the leaf ExportRouteTarget from the NetworkInstance_InterInstancePolicies_ImportExportPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExportRouteTarget is set, it can
// safely use t.GetExportRouteTarget() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExportRouteTarget == nil' before retrieving the leaf's value.
func (t *NetworkInstance_InterInstancePolicies_ImportExportPolicy) GetExportRouteTarget() []NetworkInstance_InterInstancePolicies_ImportExportPolicy_ExportRouteTarget_Union {
	if t == nil || t.ExportRouteTarget == nil {
		return nil
	}
	return t.ExportRouteTarget
}

// GetImportRouteTarget retrieves the value of the leaf ImportRouteTarget from the NetworkInstance_InterInstancePolicies_ImportExportPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ImportRouteTarget is set, it can
// safely use t.GetImportRouteTarget() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ImportRouteTarget == nil' before retrieving the leaf's value.
func (t *NetworkInstance_InterInstancePolicies_ImportExportPolicy) GetImportRouteTarget() []NetworkInstance_InterInstancePolicies_ImportExportPolicy_ImportRouteTarget_Union {
	if t == nil || t.ImportRouteTarget == nil {
		return nil
	}
	return t.ImportRouteTarget
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_InterInstancePolicies_ImportExportPolicy
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_InterInstancePolicies_ImportExportPolicy) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_InterInstancePolicies_ImportExportPolicy) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_InterInstancePolicies_ImportExportPolicy"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_InterInstancePolicies_ImportExportPolicy) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_InterInstancePolicies_ImportExportPolicy) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_InterInstancePolicies_ImportExportPolicy.
func (*NetworkInstance_InterInstancePolicies_ImportExportPolicy) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_InterInstancePolicies_ImportExportPolicy_ExportRouteTarget_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/inter-instance-policies/import-export-policy/config/export-route-target within the YANG schema.
// Union type can be one of [E_ImportExportPolicy_ExportRouteTarget_Enum, UnionString].
type NetworkInstance_InterInstancePolicies_ImportExportPolicy_ExportRouteTarget_Union interface {
	// Union type can be one of [E_ImportExportPolicy_ExportRouteTarget_Enum, UnionString]
	Documentation_for_NetworkInstance_InterInstancePolicies_ImportExportPolicy_ExportRouteTarget_Union()
}

// Documentation_for_NetworkInstance_InterInstancePolicies_ImportExportPolicy_ExportRouteTarget_Union ensures that E_ImportExportPolicy_ExportRouteTarget_Enum
// implements the NetworkInstance_InterInstancePolicies_ImportExportPolicy_ExportRouteTarget_Union interface.
func (E_ImportExportPolicy_ExportRouteTarget_Enum) Documentation_for_NetworkInstance_InterInstancePolicies_ImportExportPolicy_ExportRouteTarget_Union() {
}

// Documentation_for_NetworkInstance_InterInstancePolicies_ImportExportPolicy_ExportRouteTarget_Union ensures that UnionString
// implements the NetworkInstance_InterInstancePolicies_ImportExportPolicy_ExportRouteTarget_Union interface.
func (UnionString) Documentation_for_NetworkInstance_InterInstancePolicies_ImportExportPolicy_ExportRouteTarget_Union() {
}

// To_NetworkInstance_InterInstancePolicies_ImportExportPolicy_ExportRouteTarget_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_InterInstancePolicies_ImportExportPolicy_ExportRouteTarget_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_InterInstancePolicies_ImportExportPolicy) To_NetworkInstance_InterInstancePolicies_ImportExportPolicy_ExportRouteTarget_Union(i interface{}) (NetworkInstance_InterInstancePolicies_ImportExportPolicy_ExportRouteTarget_Union, error) {
	if v, ok := i.(NetworkInstance_InterInstancePolicies_ImportExportPolicy_ExportRouteTarget_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_InterInstancePolicies_ImportExportPolicy_ExportRouteTarget_Union, unknown union type, got: %T, want any of [E_ImportExportPolicy_ExportRouteTarget_Enum, string]", i, i)
}

// NetworkInstance_InterInstancePolicies_ImportExportPolicy_ImportRouteTarget_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/inter-instance-policies/import-export-policy/config/import-route-target within the YANG schema.
// Union type can be one of [E_ImportExportPolicy_ImportRouteTarget_Enum, UnionString].
type NetworkInstance_InterInstancePolicies_ImportExportPolicy_ImportRouteTarget_Union interface {
	// Union type can be one of [E_ImportExportPolicy_ImportRouteTarget_Enum, UnionString]
	Documentation_for_NetworkInstance_InterInstancePolicies_ImportExportPolicy_ImportRouteTarget_Union()
}

// Documentation_for_NetworkInstance_InterInstancePolicies_ImportExportPolicy_ImportRouteTarget_Union ensures that E_ImportExportPolicy_ImportRouteTarget_Enum
// implements the NetworkInstance_InterInstancePolicies_ImportExportPolicy_ImportRouteTarget_Union interface.
func (E_ImportExportPolicy_ImportRouteTarget_Enum) Documentation_for_NetworkInstance_InterInstancePolicies_ImportExportPolicy_ImportRouteTarget_Union() {
}

// Documentation_for_NetworkInstance_InterInstancePolicies_ImportExportPolicy_ImportRouteTarget_Union ensures that UnionString
// implements the NetworkInstance_InterInstancePolicies_ImportExportPolicy_ImportRouteTarget_Union interface.
func (UnionString) Documentation_for_NetworkInstance_InterInstancePolicies_ImportExportPolicy_ImportRouteTarget_Union() {
}

// To_NetworkInstance_InterInstancePolicies_ImportExportPolicy_ImportRouteTarget_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_InterInstancePolicies_ImportExportPolicy_ImportRouteTarget_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_InterInstancePolicies_ImportExportPolicy) To_NetworkInstance_InterInstancePolicies_ImportExportPolicy_ImportRouteTarget_Union(i interface{}) (NetworkInstance_InterInstancePolicies_ImportExportPolicy_ImportRouteTarget_Union, error) {
	if v, ok := i.(NetworkInstance_InterInstancePolicies_ImportExportPolicy_ImportRouteTarget_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_InterInstancePolicies_ImportExportPolicy_ImportRouteTarget_Union, unknown union type, got: %T, want any of [E_ImportExportPolicy_ImportRouteTarget_Enum, string]", i, i)
}

// NetworkInstance_Interface represents the /openconfig-network-instance/network-instances/network-instance/interfaces/interface YANG schema element.
type NetworkInstance_Interface struct {
	ΛMetadata                  []ygot.Annotation             `path:"@" ygotAnnotation:"true"`
	AssociatedAddressFamilies  []E_Types_ADDRESS_FAMILY      `path:"config/associated-address-families" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAssociatedAddressFamilies []ygot.Annotation             `path:"config/@associated-address-families" ygotAnnotation:"true"`
	Id                         *string                       `path:"config/id|id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛId                        []ygot.Annotation             `path:"config/@id|@id" ygotAnnotation:"true"`
	Interface                  *string                       `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface                 []ygot.Annotation             `path:"config/@interface" ygotAnnotation:"true"`
	IrbAnycastGateway          E_Interface_IrbAnycastGateway `path:"config/irb-anycast-gateway" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIrbAnycastGateway         []ygot.Annotation             `path:"config/@irb-anycast-gateway" ygotAnnotation:"true"`
	MacPinning                 *bool                         `path:"config/mac-pinning" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMacPinning                []ygot.Annotation             `path:"config/@mac-pinning" ygotAnnotation:"true"`
	Subinterface               *uint32                       `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface              []ygot.Annotation             `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Interface) IsYANGGoStruct() {}

// GetAssociatedAddressFamilies retrieves the value of the leaf AssociatedAddressFamilies from the NetworkInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AssociatedAddressFamilies is set, it can
// safely use t.GetAssociatedAddressFamilies() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AssociatedAddressFamilies == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Interface) GetAssociatedAddressFamilies() []E_Types_ADDRESS_FAMILY {
	if t == nil || t.AssociatedAddressFamilies == nil {
		return nil
	}
	return t.AssociatedAddressFamilies
}

// GetId retrieves the value of the leaf Id from the NetworkInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Interface) GetId() string {
	if t == nil || t.Id == nil {
		return ""
	}
	return *t.Id
}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Interface) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetIrbAnycastGateway retrieves the value of the leaf IrbAnycastGateway from the NetworkInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IrbAnycastGateway is set, it can
// safely use t.GetIrbAnycastGateway() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IrbAnycastGateway == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Interface) GetIrbAnycastGateway() E_Interface_IrbAnycastGateway {
	if t == nil || t.IrbAnycastGateway == 0 {
		return 0
	}
	return t.IrbAnycastGateway
}

// GetMacPinning retrieves the value of the leaf MacPinning from the NetworkInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MacPinning is set, it can
// safely use t.GetMacPinning() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MacPinning == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Interface) GetMacPinning() bool {
	if t == nil || t.MacPinning == nil {
		return false
	}
	return *t.MacPinning
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Interface) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Interface struct, which is a YANG list entry.
func (t *NetworkInstance_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Interface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Interface.
func (*NetworkInstance_Interface) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls represents the /openconfig-network-instance/network-instances/network-instance/mpls YANG schema element.
type NetworkInstance_Mpls struct {
	ΛMetadata           []ygot.Annotation                          `path:"@" ygotAnnotation:"true"`
	Global              *NetworkInstance_Mpls_Global               `path:"global" module:"openconfig-network-instance"`
	ΛGlobal             []ygot.Annotation                          `path:"@global" ygotAnnotation:"true"`
	Interface           map[string]*NetworkInstance_Mpls_Interface `path:"te-interface-attributes/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface          []ygot.Annotation                          `path:"te-interface-attributes/@interface" ygotAnnotation:"true"`
	Lsps                *NetworkInstance_Mpls_Lsps                 `path:"lsps" module:"openconfig-network-instance"`
	ΛLsps               []ygot.Annotation                          `path:"@lsps" ygotAnnotation:"true"`
	SignalingProtocols  *NetworkInstance_Mpls_SignalingProtocols   `path:"signaling-protocols" module:"openconfig-network-instance"`
	ΛSignalingProtocols []ygot.Annotation                          `path:"@signaling-protocols" ygotAnnotation:"true"`
	TeGlobalAttributes  *NetworkInstance_Mpls_TeGlobalAttributes   `path:"te-global-attributes" module:"openconfig-network-instance"`
	ΛTeGlobalAttributes []ygot.Annotation                          `path:"@te-global-attributes" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// NetworkInstance_Mpls struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls) NewInterface(InterfaceId string) (*NetworkInstance_Mpls_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Mpls_Interface)
	}

	key := InterfaceId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &NetworkInstance_Mpls_Interface{
		InterfaceId: &InterfaceId,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the NetworkInstance_Mpls struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.InterfaceId = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from NetworkInstance_Mpls.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls) GetOrCreateInterfaceMap() map[string]*NetworkInstance_Mpls_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Mpls_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls) GetOrCreateInterface(InterfaceId string) *NetworkInstance_Mpls_Interface {

	key := InterfaceId

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(InterfaceId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of NetworkInstance_Mpls. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls) GetInterface(InterfaceId string) *NetworkInstance_Mpls_Interface {

	if t == nil {
		return nil
	}

	key := InterfaceId

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied NetworkInstance_Mpls_Interface struct to the
// list Interface of NetworkInstance_Mpls. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_Interface already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls) AppendInterface(v *NetworkInstance_Mpls_Interface) error {
	if v.InterfaceId == nil {
		return fmt.Errorf("invalid nil key received for InterfaceId")
	}

	key := *v.InterfaceId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Mpls_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// GetOrCreateGlobal retrieves the value of the Global field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls) GetOrCreateGlobal() *NetworkInstance_Mpls_Global {
	if t.Global != nil {
		return t.Global
	}
	t.Global = &NetworkInstance_Mpls_Global{}
	return t.Global
}

// GetOrCreateLsps retrieves the value of the Lsps field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls) GetOrCreateLsps() *NetworkInstance_Mpls_Lsps {
	if t.Lsps != nil {
		return t.Lsps
	}
	t.Lsps = &NetworkInstance_Mpls_Lsps{}
	return t.Lsps
}

// GetOrCreateSignalingProtocols retrieves the value of the SignalingProtocols field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls) GetOrCreateSignalingProtocols() *NetworkInstance_Mpls_SignalingProtocols {
	if t.SignalingProtocols != nil {
		return t.SignalingProtocols
	}
	t.SignalingProtocols = &NetworkInstance_Mpls_SignalingProtocols{}
	return t.SignalingProtocols
}

// GetOrCreateTeGlobalAttributes retrieves the value of the TeGlobalAttributes field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls) GetOrCreateTeGlobalAttributes() *NetworkInstance_Mpls_TeGlobalAttributes {
	if t.TeGlobalAttributes != nil {
		return t.TeGlobalAttributes
	}
	t.TeGlobalAttributes = &NetworkInstance_Mpls_TeGlobalAttributes{}
	return t.TeGlobalAttributes
}

// GetGlobal returns the value of the Global struct pointer
// from NetworkInstance_Mpls. If the receiver or the field Global is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls) GetGlobal() *NetworkInstance_Mpls_Global {
	if t != nil && t.Global != nil {
		return t.Global
	}
	return nil
}

// GetLsps returns the value of the Lsps struct pointer
// from NetworkInstance_Mpls. If the receiver or the field Lsps is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls) GetLsps() *NetworkInstance_Mpls_Lsps {
	if t != nil && t.Lsps != nil {
		return t.Lsps
	}
	return nil
}

// GetSignalingProtocols returns the value of the SignalingProtocols struct pointer
// from NetworkInstance_Mpls. If the receiver or the field SignalingProtocols is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls) GetSignalingProtocols() *NetworkInstance_Mpls_SignalingProtocols {
	if t != nil && t.SignalingProtocols != nil {
		return t.SignalingProtocols
	}
	return nil
}

// GetTeGlobalAttributes returns the value of the TeGlobalAttributes struct pointer
// from NetworkInstance_Mpls. If the receiver or the field TeGlobalAttributes is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls) GetTeGlobalAttributes() *NetworkInstance_Mpls_TeGlobalAttributes {
	if t != nil && t.TeGlobalAttributes != nil {
		return t.TeGlobalAttributes
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Global.PopulateDefaults()
	t.Lsps.PopulateDefaults()
	t.SignalingProtocols.PopulateDefaults()
	t.TeGlobalAttributes.PopulateDefaults()
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls.
func (*NetworkInstance_Mpls) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Global represents the /openconfig-network-instance/network-instances/network-instance/mpls/global YANG schema element.
type NetworkInstance_Mpls_Global struct {
	ΛMetadata           []ygot.Annotation                                          `path:"@" ygotAnnotation:"true"`
	Interface           map[string]*NetworkInstance_Mpls_Global_Interface          `path:"interface-attributes/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface          []ygot.Annotation                                          `path:"interface-attributes/@interface" ygotAnnotation:"true"`
	NullLabel           E_MplsTypes_NULL_LABEL_TYPE                                `path:"config/null-label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNullLabel          []ygot.Annotation                                          `path:"config/@null-label" ygotAnnotation:"true"`
	PwEncapsulation     E_MplsTypes_PSEUDOWIRE_ENCAPSULATION                       `path:"config/pw-encapsulation" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPwEncapsulation    []ygot.Annotation                                          `path:"config/@pw-encapsulation" ygotAnnotation:"true"`
	ReservedLabelBlock  map[string]*NetworkInstance_Mpls_Global_ReservedLabelBlock `path:"reserved-label-blocks/reserved-label-block" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReservedLabelBlock []ygot.Annotation                                          `path:"reserved-label-blocks/@reserved-label-block" ygotAnnotation:"true"`
	TtlPropagation      *bool                                                      `path:"config/ttl-propagation" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTtlPropagation     []ygot.Annotation                                          `path:"config/@ttl-propagation" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Global implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Global) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// NetworkInstance_Mpls_Global struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_Global) NewInterface(InterfaceId string) (*NetworkInstance_Mpls_Global_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Mpls_Global_Interface)
	}

	key := InterfaceId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &NetworkInstance_Mpls_Global_Interface{
		InterfaceId: &InterfaceId,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the NetworkInstance_Mpls_Global struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_Global) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.InterfaceId = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from NetworkInstance_Mpls_Global.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_Global) GetOrCreateInterfaceMap() map[string]*NetworkInstance_Mpls_Global_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Mpls_Global_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_Global. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_Global) GetOrCreateInterface(InterfaceId string) *NetworkInstance_Mpls_Global_Interface {

	key := InterfaceId

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(InterfaceId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of NetworkInstance_Mpls_Global. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_Global) GetInterface(InterfaceId string) *NetworkInstance_Mpls_Global_Interface {

	if t == nil {
		return nil
	}

	key := InterfaceId

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied NetworkInstance_Mpls_Global_Interface struct to the
// list Interface of NetworkInstance_Mpls_Global. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_Global_Interface already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_Global) AppendInterface(v *NetworkInstance_Mpls_Global_Interface) error {
	if v.InterfaceId == nil {
		return fmt.Errorf("invalid nil key received for InterfaceId")
	}

	key := *v.InterfaceId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Mpls_Global_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// NewReservedLabelBlock creates a new entry in the ReservedLabelBlock list of the
// NetworkInstance_Mpls_Global struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_Global) NewReservedLabelBlock(LocalId string) (*NetworkInstance_Mpls_Global_ReservedLabelBlock, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ReservedLabelBlock == nil {
		t.ReservedLabelBlock = make(map[string]*NetworkInstance_Mpls_Global_ReservedLabelBlock)
	}

	key := LocalId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.ReservedLabelBlock[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list ReservedLabelBlock", key)
	}

	t.ReservedLabelBlock[key] = &NetworkInstance_Mpls_Global_ReservedLabelBlock{
		LocalId: &LocalId,
	}

	return t.ReservedLabelBlock[key], nil
}

// RenameReservedLabelBlock renames an entry in the list ReservedLabelBlock within
// the NetworkInstance_Mpls_Global struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_Global) RenameReservedLabelBlock(oldK, newK string) error {
	if _, ok := t.ReservedLabelBlock[newK]; ok {
		return fmt.Errorf("key %v already exists in ReservedLabelBlock", newK)
	}

	e, ok := t.ReservedLabelBlock[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in ReservedLabelBlock", oldK)
	}
	e.LocalId = &newK

	t.ReservedLabelBlock[newK] = e
	delete(t.ReservedLabelBlock, oldK)
	return nil
}

// GetOrCreateReservedLabelBlockMap returns the list (map) from NetworkInstance_Mpls_Global.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_Global) GetOrCreateReservedLabelBlockMap() map[string]*NetworkInstance_Mpls_Global_ReservedLabelBlock {
	if t.ReservedLabelBlock == nil {
		t.ReservedLabelBlock = make(map[string]*NetworkInstance_Mpls_Global_ReservedLabelBlock)
	}
	return t.ReservedLabelBlock
}

// GetOrCreateReservedLabelBlock retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_Global. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_Global) GetOrCreateReservedLabelBlock(LocalId string) *NetworkInstance_Mpls_Global_ReservedLabelBlock {

	key := LocalId

	if v, ok := t.ReservedLabelBlock[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewReservedLabelBlock(LocalId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateReservedLabelBlock got unexpected error: %v", err))
	}
	return v
}

// GetReservedLabelBlock retrieves the value with the specified key from
// the ReservedLabelBlock map field of NetworkInstance_Mpls_Global. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_Global) GetReservedLabelBlock(LocalId string) *NetworkInstance_Mpls_Global_ReservedLabelBlock {

	if t == nil {
		return nil
	}

	key := LocalId

	if lm, ok := t.ReservedLabelBlock[key]; ok {
		return lm
	}
	return nil
}

// AppendReservedLabelBlock appends the supplied NetworkInstance_Mpls_Global_ReservedLabelBlock struct to the
// list ReservedLabelBlock of NetworkInstance_Mpls_Global. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_Global_ReservedLabelBlock already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_Global) AppendReservedLabelBlock(v *NetworkInstance_Mpls_Global_ReservedLabelBlock) error {
	if v.LocalId == nil {
		return fmt.Errorf("invalid nil key received for LocalId")
	}

	key := *v.LocalId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ReservedLabelBlock == nil {
		t.ReservedLabelBlock = make(map[string]*NetworkInstance_Mpls_Global_ReservedLabelBlock)
	}

	if _, ok := t.ReservedLabelBlock[key]; ok {
		return fmt.Errorf("duplicate key for list ReservedLabelBlock %v", key)
	}

	t.ReservedLabelBlock[key] = v
	return nil
}

// GetNullLabel retrieves the value of the leaf NullLabel from the NetworkInstance_Mpls_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NullLabel is set, it can
// safely use t.GetNullLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NullLabel == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Global) GetNullLabel() E_MplsTypes_NULL_LABEL_TYPE {
	if t == nil || t.NullLabel == 0 {
		return MplsTypes_NULL_LABEL_TYPE_IMPLICIT
	}
	return t.NullLabel
}

// GetPwEncapsulation retrieves the value of the leaf PwEncapsulation from the NetworkInstance_Mpls_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PwEncapsulation is set, it can
// safely use t.GetPwEncapsulation() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PwEncapsulation == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Global) GetPwEncapsulation() E_MplsTypes_PSEUDOWIRE_ENCAPSULATION {
	if t == nil || t.PwEncapsulation == 0 {
		return 0
	}
	return t.PwEncapsulation
}

// GetTtlPropagation retrieves the value of the leaf TtlPropagation from the NetworkInstance_Mpls_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TtlPropagation is set, it can
// safely use t.GetTtlPropagation() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TtlPropagation == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Global) GetTtlPropagation() bool {
	if t == nil || t.TtlPropagation == nil {
		return true
	}
	return *t.TtlPropagation
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Global
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Global) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.NullLabel == 0 {
		t.NullLabel = MplsTypes_NULL_LABEL_TYPE_IMPLICIT
	}
	if t.TtlPropagation == nil {
		var v bool = true
		t.TtlPropagation = &v
	}
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
	for _, e := range t.ReservedLabelBlock {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Global) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Global"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Global) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Global) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Global.
func (*NetworkInstance_Mpls_Global) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Global_Interface represents the /openconfig-network-instance/network-instances/network-instance/mpls/global/interface-attributes/interface YANG schema element.
type NetworkInstance_Mpls_Global_Interface struct {
	ΛMetadata     []ygot.Annotation                                   `path:"@" ygotAnnotation:"true"`
	InterfaceId   *string                                             `path:"config/interface-id|interface-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛInterfaceId  []ygot.Annotation                                   `path:"config/@interface-id|@interface-id" ygotAnnotation:"true"`
	InterfaceRef  *NetworkInstance_Mpls_Global_Interface_InterfaceRef `path:"interface-ref" module:"openconfig-network-instance"`
	ΛInterfaceRef []ygot.Annotation                                   `path:"@interface-ref" ygotAnnotation:"true"`
	MplsEnabled   *bool                                               `path:"config/mpls-enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMplsEnabled  []ygot.Annotation                                   `path:"config/@mpls-enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Global_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Global_Interface) IsYANGGoStruct() {}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Global_Interface) GetOrCreateInterfaceRef() *NetworkInstance_Mpls_Global_Interface_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &NetworkInstance_Mpls_Global_Interface_InterfaceRef{}
	return t.InterfaceRef
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from NetworkInstance_Mpls_Global_Interface. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Global_Interface) GetInterfaceRef() *NetworkInstance_Mpls_Global_Interface_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetInterfaceId retrieves the value of the leaf InterfaceId from the NetworkInstance_Mpls_Global_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceId is set, it can
// safely use t.GetInterfaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Global_Interface) GetInterfaceId() string {
	if t == nil || t.InterfaceId == nil {
		return ""
	}
	return *t.InterfaceId
}

// GetMplsEnabled retrieves the value of the leaf MplsEnabled from the NetworkInstance_Mpls_Global_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MplsEnabled is set, it can
// safely use t.GetMplsEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MplsEnabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Global_Interface) GetMplsEnabled() bool {
	if t == nil || t.MplsEnabled == nil {
		return false
	}
	return *t.MplsEnabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Global_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Global_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MplsEnabled == nil {
		var v bool = false
		t.MplsEnabled = &v
	}
	t.InterfaceRef.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_Global_Interface struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_Global_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.InterfaceId == nil {
		return nil, fmt.Errorf("nil value for key InterfaceId")
	}

	return map[string]interface{}{
		"interface-id": *t.InterfaceId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Global_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Global_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Global_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Global_Interface) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Global_Interface.
func (*NetworkInstance_Mpls_Global_Interface) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Global_Interface_InterfaceRef represents the /openconfig-network-instance/network-instances/network-instance/mpls/global/interface-attributes/interface/interface-ref YANG schema element.
type NetworkInstance_Mpls_Global_Interface_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Global_Interface_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Global_Interface_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Mpls_Global_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Global_Interface_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Mpls_Global_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Global_Interface_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Global_Interface_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Global_Interface_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Global_Interface_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Global_Interface_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Global_Interface_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Global_Interface_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Global_Interface_InterfaceRef.
func (*NetworkInstance_Mpls_Global_Interface_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Global_ReservedLabelBlock represents the /openconfig-network-instance/network-instances/network-instance/mpls/global/reserved-label-blocks/reserved-label-block YANG schema element.
type NetworkInstance_Mpls_Global_ReservedLabelBlock struct {
	ΛMetadata   []ygot.Annotation                                               `path:"@" ygotAnnotation:"true"`
	LocalId     *string                                                         `path:"config/local-id|local-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛLocalId    []ygot.Annotation                                               `path:"config/@local-id|@local-id" ygotAnnotation:"true"`
	LowerBound  NetworkInstance_Mpls_Global_ReservedLabelBlock_LowerBound_Union `path:"config/lower-bound" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLowerBound []ygot.Annotation                                               `path:"config/@lower-bound" ygotAnnotation:"true"`
	UpperBound  NetworkInstance_Mpls_Global_ReservedLabelBlock_UpperBound_Union `path:"config/upper-bound" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUpperBound []ygot.Annotation                                               `path:"config/@upper-bound" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Global_ReservedLabelBlock implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Global_ReservedLabelBlock) IsYANGGoStruct() {}

// GetLocalId retrieves the value of the leaf LocalId from the NetworkInstance_Mpls_Global_ReservedLabelBlock
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalId is set, it can
// safely use t.GetLocalId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Global_ReservedLabelBlock) GetLocalId() string {
	if t == nil || t.LocalId == nil {
		return ""
	}
	return *t.LocalId
}

// GetLowerBound retrieves the value of the leaf LowerBound from the NetworkInstance_Mpls_Global_ReservedLabelBlock
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LowerBound is set, it can
// safely use t.GetLowerBound() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LowerBound == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Global_ReservedLabelBlock) GetLowerBound() NetworkInstance_Mpls_Global_ReservedLabelBlock_LowerBound_Union {
	if t == nil || t.LowerBound == nil {
		return nil
	}
	return t.LowerBound
}

// GetUpperBound retrieves the value of the leaf UpperBound from the NetworkInstance_Mpls_Global_ReservedLabelBlock
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UpperBound is set, it can
// safely use t.GetUpperBound() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UpperBound == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Global_ReservedLabelBlock) GetUpperBound() NetworkInstance_Mpls_Global_ReservedLabelBlock_UpperBound_Union {
	if t == nil || t.UpperBound == nil {
		return nil
	}
	return t.UpperBound
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Global_ReservedLabelBlock
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Global_ReservedLabelBlock) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_Global_ReservedLabelBlock struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_Global_ReservedLabelBlock) ΛListKeyMap() (map[string]interface{}, error) {
	if t.LocalId == nil {
		return nil, fmt.Errorf("nil value for key LocalId")
	}

	return map[string]interface{}{
		"local-id": *t.LocalId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Global_ReservedLabelBlock) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Global_ReservedLabelBlock"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Global_ReservedLabelBlock) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Global_ReservedLabelBlock) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Global_ReservedLabelBlock.
func (*NetworkInstance_Mpls_Global_ReservedLabelBlock) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Global_ReservedLabelBlock_LowerBound_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/mpls/global/reserved-label-blocks/reserved-label-block/config/lower-bound within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Mpls_Global_ReservedLabelBlock_LowerBound_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Mpls_Global_ReservedLabelBlock_LowerBound_Union()
}

// Documentation_for_NetworkInstance_Mpls_Global_ReservedLabelBlock_LowerBound_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Mpls_Global_ReservedLabelBlock_LowerBound_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Mpls_Global_ReservedLabelBlock_LowerBound_Union() {
}

// Documentation_for_NetworkInstance_Mpls_Global_ReservedLabelBlock_LowerBound_Union ensures that UnionUint32
// implements the NetworkInstance_Mpls_Global_ReservedLabelBlock_LowerBound_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Mpls_Global_ReservedLabelBlock_LowerBound_Union() {
}

// To_NetworkInstance_Mpls_Global_ReservedLabelBlock_LowerBound_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Mpls_Global_ReservedLabelBlock_LowerBound_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Mpls_Global_ReservedLabelBlock) To_NetworkInstance_Mpls_Global_ReservedLabelBlock_LowerBound_Union(i interface{}) (NetworkInstance_Mpls_Global_ReservedLabelBlock_LowerBound_Union, error) {
	if v, ok := i.(NetworkInstance_Mpls_Global_ReservedLabelBlock_LowerBound_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Mpls_Global_ReservedLabelBlock_LowerBound_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Mpls_Global_ReservedLabelBlock_UpperBound_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/mpls/global/reserved-label-blocks/reserved-label-block/config/upper-bound within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Mpls_Global_ReservedLabelBlock_UpperBound_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Mpls_Global_ReservedLabelBlock_UpperBound_Union()
}

// Documentation_for_NetworkInstance_Mpls_Global_ReservedLabelBlock_UpperBound_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Mpls_Global_ReservedLabelBlock_UpperBound_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Mpls_Global_ReservedLabelBlock_UpperBound_Union() {
}

// Documentation_for_NetworkInstance_Mpls_Global_ReservedLabelBlock_UpperBound_Union ensures that UnionUint32
// implements the NetworkInstance_Mpls_Global_ReservedLabelBlock_UpperBound_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Mpls_Global_ReservedLabelBlock_UpperBound_Union() {
}

// To_NetworkInstance_Mpls_Global_ReservedLabelBlock_UpperBound_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Mpls_Global_ReservedLabelBlock_UpperBound_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Mpls_Global_ReservedLabelBlock) To_NetworkInstance_Mpls_Global_ReservedLabelBlock_UpperBound_Union(i interface{}) (NetworkInstance_Mpls_Global_ReservedLabelBlock_UpperBound_Union, error) {
	if v, ok := i.(NetworkInstance_Mpls_Global_ReservedLabelBlock_UpperBound_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Mpls_Global_ReservedLabelBlock_UpperBound_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Mpls_Interface represents the /openconfig-network-instance/network-instances/network-instance/mpls/te-interface-attributes/interface YANG schema element.
type NetworkInstance_Mpls_Interface struct {
	ΛMetadata             []ygot.Annotation                                    `path:"@" ygotAnnotation:"true"`
	AdminGroup            []string                                             `path:"config/admin-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdminGroup           []ygot.Annotation                                    `path:"config/@admin-group" ygotAnnotation:"true"`
	IgpFloodingBandwidth  *NetworkInstance_Mpls_Interface_IgpFloodingBandwidth `path:"igp-flooding-bandwidth" module:"openconfig-network-instance"`
	ΛIgpFloodingBandwidth []ygot.Annotation                                    `path:"@igp-flooding-bandwidth" ygotAnnotation:"true"`
	InterfaceId           *string                                              `path:"config/interface-id|interface-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛInterfaceId          []ygot.Annotation                                    `path:"config/@interface-id|@interface-id" ygotAnnotation:"true"`
	InterfaceRef          *NetworkInstance_Mpls_Interface_InterfaceRef         `path:"interface-ref" module:"openconfig-network-instance"`
	ΛInterfaceRef         []ygot.Annotation                                    `path:"@interface-ref" ygotAnnotation:"true"`
	SrlgMembership        []string                                             `path:"config/srlg-membership" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSrlgMembership       []ygot.Annotation                                    `path:"config/@srlg-membership" ygotAnnotation:"true"`
	TeMetric              *uint32                                              `path:"config/te-metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTeMetric             []ygot.Annotation                                    `path:"config/@te-metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Interface) IsYANGGoStruct() {}

// GetOrCreateIgpFloodingBandwidth retrieves the value of the IgpFloodingBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Interface) GetOrCreateIgpFloodingBandwidth() *NetworkInstance_Mpls_Interface_IgpFloodingBandwidth {
	if t.IgpFloodingBandwidth != nil {
		return t.IgpFloodingBandwidth
	}
	t.IgpFloodingBandwidth = &NetworkInstance_Mpls_Interface_IgpFloodingBandwidth{}
	return t.IgpFloodingBandwidth
}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Interface) GetOrCreateInterfaceRef() *NetworkInstance_Mpls_Interface_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &NetworkInstance_Mpls_Interface_InterfaceRef{}
	return t.InterfaceRef
}

// GetIgpFloodingBandwidth returns the value of the IgpFloodingBandwidth struct pointer
// from NetworkInstance_Mpls_Interface. If the receiver or the field IgpFloodingBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Interface) GetIgpFloodingBandwidth() *NetworkInstance_Mpls_Interface_IgpFloodingBandwidth {
	if t != nil && t.IgpFloodingBandwidth != nil {
		return t.IgpFloodingBandwidth
	}
	return nil
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from NetworkInstance_Mpls_Interface. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Interface) GetInterfaceRef() *NetworkInstance_Mpls_Interface_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetAdminGroup retrieves the value of the leaf AdminGroup from the NetworkInstance_Mpls_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdminGroup is set, it can
// safely use t.GetAdminGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdminGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Interface) GetAdminGroup() []string {
	if t == nil || t.AdminGroup == nil {
		return nil
	}
	return t.AdminGroup
}

// GetInterfaceId retrieves the value of the leaf InterfaceId from the NetworkInstance_Mpls_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceId is set, it can
// safely use t.GetInterfaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Interface) GetInterfaceId() string {
	if t == nil || t.InterfaceId == nil {
		return ""
	}
	return *t.InterfaceId
}

// GetSrlgMembership retrieves the value of the leaf SrlgMembership from the NetworkInstance_Mpls_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SrlgMembership is set, it can
// safely use t.GetSrlgMembership() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SrlgMembership == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Interface) GetSrlgMembership() []string {
	if t == nil || t.SrlgMembership == nil {
		return nil
	}
	return t.SrlgMembership
}

// GetTeMetric retrieves the value of the leaf TeMetric from the NetworkInstance_Mpls_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TeMetric is set, it can
// safely use t.GetTeMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TeMetric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Interface) GetTeMetric() uint32 {
	if t == nil || t.TeMetric == nil {
		return 0
	}
	return *t.TeMetric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.IgpFloodingBandwidth.PopulateDefaults()
	t.InterfaceRef.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_Interface struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.InterfaceId == nil {
		return nil, fmt.Errorf("nil value for key InterfaceId")
	}

	return map[string]interface{}{
		"interface-id": *t.InterfaceId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Interface) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Interface.
func (*NetworkInstance_Mpls_Interface) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Interface_IgpFloodingBandwidth represents the /openconfig-network-instance/network-instances/network-instance/mpls/te-interface-attributes/interface/igp-flooding-bandwidth YANG schema element.
type NetworkInstance_Mpls_Interface_IgpFloodingBandwidth struct {
	ΛMetadata               []ygot.Annotation                             `path:"@" ygotAnnotation:"true"`
	DeltaPercentage         *uint8                                        `path:"config/delta-percentage" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDeltaPercentage        []ygot.Annotation                             `path:"config/@delta-percentage" ygotAnnotation:"true"`
	DownThresholds          []uint8                                       `path:"config/down-thresholds" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDownThresholds         []ygot.Annotation                             `path:"config/@down-thresholds" ygotAnnotation:"true"`
	ThresholdSpecification  E_IgpFloodingBandwidth_ThresholdSpecification `path:"config/threshold-specification" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛThresholdSpecification []ygot.Annotation                             `path:"config/@threshold-specification" ygotAnnotation:"true"`
	ThresholdType           E_IgpFloodingBandwidth_ThresholdType          `path:"config/threshold-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛThresholdType          []ygot.Annotation                             `path:"config/@threshold-type" ygotAnnotation:"true"`
	UpDownThresholds        []uint8                                       `path:"config/up-down-thresholds" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUpDownThresholds       []ygot.Annotation                             `path:"config/@up-down-thresholds" ygotAnnotation:"true"`
	UpThresholds            []uint8                                       `path:"config/up-thresholds" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUpThresholds           []ygot.Annotation                             `path:"config/@up-thresholds" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Interface_IgpFloodingBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Interface_IgpFloodingBandwidth) IsYANGGoStruct() {}

// GetDeltaPercentage retrieves the value of the leaf DeltaPercentage from the NetworkInstance_Mpls_Interface_IgpFloodingBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DeltaPercentage is set, it can
// safely use t.GetDeltaPercentage() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DeltaPercentage == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Interface_IgpFloodingBandwidth) GetDeltaPercentage() uint8 {
	if t == nil || t.DeltaPercentage == nil {
		return 0
	}
	return *t.DeltaPercentage
}

// GetDownThresholds retrieves the value of the leaf DownThresholds from the NetworkInstance_Mpls_Interface_IgpFloodingBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DownThresholds is set, it can
// safely use t.GetDownThresholds() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DownThresholds == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Interface_IgpFloodingBandwidth) GetDownThresholds() []uint8 {
	if t == nil || t.DownThresholds == nil {
		return nil
	}
	return t.DownThresholds
}

// GetThresholdSpecification retrieves the value of the leaf ThresholdSpecification from the NetworkInstance_Mpls_Interface_IgpFloodingBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ThresholdSpecification is set, it can
// safely use t.GetThresholdSpecification() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ThresholdSpecification == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Interface_IgpFloodingBandwidth) GetThresholdSpecification() E_IgpFloodingBandwidth_ThresholdSpecification {
	if t == nil || t.ThresholdSpecification == 0 {
		return 0
	}
	return t.ThresholdSpecification
}

// GetThresholdType retrieves the value of the leaf ThresholdType from the NetworkInstance_Mpls_Interface_IgpFloodingBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ThresholdType is set, it can
// safely use t.GetThresholdType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ThresholdType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Interface_IgpFloodingBandwidth) GetThresholdType() E_IgpFloodingBandwidth_ThresholdType {
	if t == nil || t.ThresholdType == 0 {
		return 0
	}
	return t.ThresholdType
}

// GetUpDownThresholds retrieves the value of the leaf UpDownThresholds from the NetworkInstance_Mpls_Interface_IgpFloodingBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UpDownThresholds is set, it can
// safely use t.GetUpDownThresholds() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UpDownThresholds == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Interface_IgpFloodingBandwidth) GetUpDownThresholds() []uint8 {
	if t == nil || t.UpDownThresholds == nil {
		return nil
	}
	return t.UpDownThresholds
}

// GetUpThresholds retrieves the value of the leaf UpThresholds from the NetworkInstance_Mpls_Interface_IgpFloodingBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UpThresholds is set, it can
// safely use t.GetUpThresholds() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UpThresholds == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Interface_IgpFloodingBandwidth) GetUpThresholds() []uint8 {
	if t == nil || t.UpThresholds == nil {
		return nil
	}
	return t.UpThresholds
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Interface_IgpFloodingBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Interface_IgpFloodingBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Interface_IgpFloodingBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Interface_IgpFloodingBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Interface_IgpFloodingBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Interface_IgpFloodingBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Interface_IgpFloodingBandwidth.
func (*NetworkInstance_Mpls_Interface_IgpFloodingBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Interface_InterfaceRef represents the /openconfig-network-instance/network-instances/network-instance/mpls/te-interface-attributes/interface/interface-ref YANG schema element.
type NetworkInstance_Mpls_Interface_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Interface_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Interface_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Mpls_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Interface_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Mpls_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Interface_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Interface_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Interface_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Interface_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Interface_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Interface_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Interface_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Interface_InterfaceRef.
func (*NetworkInstance_Mpls_Interface_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps YANG schema element.
type NetworkInstance_Mpls_Lsps struct {
	ΛMetadata          []ygot.Annotation                               `path:"@" ygotAnnotation:"true"`
	ConstrainedPath    *NetworkInstance_Mpls_Lsps_ConstrainedPath      `path:"constrained-path" module:"openconfig-network-instance"`
	ΛConstrainedPath   []ygot.Annotation                               `path:"@constrained-path" ygotAnnotation:"true"`
	StaticLsp          map[string]*NetworkInstance_Mpls_Lsps_StaticLsp `path:"static-lsps/static-lsp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛStaticLsp         []ygot.Annotation                               `path:"static-lsps/@static-lsp" ygotAnnotation:"true"`
	UnconstrainedPath  *NetworkInstance_Mpls_Lsps_UnconstrainedPath    `path:"unconstrained-path" module:"openconfig-network-instance"`
	ΛUnconstrainedPath []ygot.Annotation                               `path:"@unconstrained-path" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps) IsYANGGoStruct() {}

// NewStaticLsp creates a new entry in the StaticLsp list of the
// NetworkInstance_Mpls_Lsps struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_Lsps) NewStaticLsp(Name string) (*NetworkInstance_Mpls_Lsps_StaticLsp, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.StaticLsp == nil {
		t.StaticLsp = make(map[string]*NetworkInstance_Mpls_Lsps_StaticLsp)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.StaticLsp[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list StaticLsp", key)
	}

	t.StaticLsp[key] = &NetworkInstance_Mpls_Lsps_StaticLsp{
		Name: &Name,
	}

	return t.StaticLsp[key], nil
}

// RenameStaticLsp renames an entry in the list StaticLsp within
// the NetworkInstance_Mpls_Lsps struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_Lsps) RenameStaticLsp(oldK, newK string) error {
	if _, ok := t.StaticLsp[newK]; ok {
		return fmt.Errorf("key %v already exists in StaticLsp", newK)
	}

	e, ok := t.StaticLsp[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in StaticLsp", oldK)
	}
	e.Name = &newK

	t.StaticLsp[newK] = e
	delete(t.StaticLsp, oldK)
	return nil
}

// GetOrCreateStaticLspMap returns the list (map) from NetworkInstance_Mpls_Lsps.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_Lsps) GetOrCreateStaticLspMap() map[string]*NetworkInstance_Mpls_Lsps_StaticLsp {
	if t.StaticLsp == nil {
		t.StaticLsp = make(map[string]*NetworkInstance_Mpls_Lsps_StaticLsp)
	}
	return t.StaticLsp
}

// GetOrCreateStaticLsp retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_Lsps. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_Lsps) GetOrCreateStaticLsp(Name string) *NetworkInstance_Mpls_Lsps_StaticLsp {

	key := Name

	if v, ok := t.StaticLsp[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewStaticLsp(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateStaticLsp got unexpected error: %v", err))
	}
	return v
}

// GetStaticLsp retrieves the value with the specified key from
// the StaticLsp map field of NetworkInstance_Mpls_Lsps. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_Lsps) GetStaticLsp(Name string) *NetworkInstance_Mpls_Lsps_StaticLsp {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.StaticLsp[key]; ok {
		return lm
	}
	return nil
}

// AppendStaticLsp appends the supplied NetworkInstance_Mpls_Lsps_StaticLsp struct to the
// list StaticLsp of NetworkInstance_Mpls_Lsps. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_Lsps_StaticLsp already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_Lsps) AppendStaticLsp(v *NetworkInstance_Mpls_Lsps_StaticLsp) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.StaticLsp == nil {
		t.StaticLsp = make(map[string]*NetworkInstance_Mpls_Lsps_StaticLsp)
	}

	if _, ok := t.StaticLsp[key]; ok {
		return fmt.Errorf("duplicate key for list StaticLsp %v", key)
	}

	t.StaticLsp[key] = v
	return nil
}

// GetOrCreateConstrainedPath retrieves the value of the ConstrainedPath field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Lsps) GetOrCreateConstrainedPath() *NetworkInstance_Mpls_Lsps_ConstrainedPath {
	if t.ConstrainedPath != nil {
		return t.ConstrainedPath
	}
	t.ConstrainedPath = &NetworkInstance_Mpls_Lsps_ConstrainedPath{}
	return t.ConstrainedPath
}

// GetOrCreateUnconstrainedPath retrieves the value of the UnconstrainedPath field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Lsps) GetOrCreateUnconstrainedPath() *NetworkInstance_Mpls_Lsps_UnconstrainedPath {
	if t.UnconstrainedPath != nil {
		return t.UnconstrainedPath
	}
	t.UnconstrainedPath = &NetworkInstance_Mpls_Lsps_UnconstrainedPath{}
	return t.UnconstrainedPath
}

// GetConstrainedPath returns the value of the ConstrainedPath struct pointer
// from NetworkInstance_Mpls_Lsps. If the receiver or the field ConstrainedPath is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Lsps) GetConstrainedPath() *NetworkInstance_Mpls_Lsps_ConstrainedPath {
	if t != nil && t.ConstrainedPath != nil {
		return t.ConstrainedPath
	}
	return nil
}

// GetUnconstrainedPath returns the value of the UnconstrainedPath struct pointer
// from NetworkInstance_Mpls_Lsps. If the receiver or the field UnconstrainedPath is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Lsps) GetUnconstrainedPath() *NetworkInstance_Mpls_Lsps_UnconstrainedPath {
	if t != nil && t.UnconstrainedPath != nil {
		return t.UnconstrainedPath
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.ConstrainedPath.PopulateDefaults()
	t.UnconstrainedPath.PopulateDefaults()
	for _, e := range t.StaticLsp {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps.
func (*NetworkInstance_Mpls_Lsps) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_ConstrainedPath represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/constrained-path YANG schema element.
type NetworkInstance_Mpls_Lsps_ConstrainedPath struct {
	ΛMetadata          []ygot.Annotation                                                       `path:"@" ygotAnnotation:"true"`
	NamedExplicitPath  map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath `path:"named-explicit-paths/named-explicit-path" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNamedExplicitPath []ygot.Annotation                                                       `path:"named-explicit-paths/@named-explicit-path" ygotAnnotation:"true"`
	Tunnel             map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel            `path:"tunnels/tunnel" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTunnel            []ygot.Annotation                                                       `path:"tunnels/@tunnel" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_ConstrainedPath implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath) IsYANGGoStruct() {}

// NewNamedExplicitPath creates a new entry in the NamedExplicitPath list of the
// NetworkInstance_Mpls_Lsps_ConstrainedPath struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath) NewNamedExplicitPath(Name string) (*NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NamedExplicitPath == nil {
		t.NamedExplicitPath = make(map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.NamedExplicitPath[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list NamedExplicitPath", key)
	}

	t.NamedExplicitPath[key] = &NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath{
		Name: &Name,
	}

	return t.NamedExplicitPath[key], nil
}

// RenameNamedExplicitPath renames an entry in the list NamedExplicitPath within
// the NetworkInstance_Mpls_Lsps_ConstrainedPath struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath) RenameNamedExplicitPath(oldK, newK string) error {
	if _, ok := t.NamedExplicitPath[newK]; ok {
		return fmt.Errorf("key %v already exists in NamedExplicitPath", newK)
	}

	e, ok := t.NamedExplicitPath[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in NamedExplicitPath", oldK)
	}
	e.Name = &newK

	t.NamedExplicitPath[newK] = e
	delete(t.NamedExplicitPath, oldK)
	return nil
}

// GetOrCreateNamedExplicitPathMap returns the list (map) from NetworkInstance_Mpls_Lsps_ConstrainedPath.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath) GetOrCreateNamedExplicitPathMap() map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath {
	if t.NamedExplicitPath == nil {
		t.NamedExplicitPath = make(map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath)
	}
	return t.NamedExplicitPath
}

// GetOrCreateNamedExplicitPath retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_Lsps_ConstrainedPath. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath) GetOrCreateNamedExplicitPath(Name string) *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath {

	key := Name

	if v, ok := t.NamedExplicitPath[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNamedExplicitPath(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNamedExplicitPath got unexpected error: %v", err))
	}
	return v
}

// GetNamedExplicitPath retrieves the value with the specified key from
// the NamedExplicitPath map field of NetworkInstance_Mpls_Lsps_ConstrainedPath. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath) GetNamedExplicitPath(Name string) *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.NamedExplicitPath[key]; ok {
		return lm
	}
	return nil
}

// AppendNamedExplicitPath appends the supplied NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath struct to the
// list NamedExplicitPath of NetworkInstance_Mpls_Lsps_ConstrainedPath. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath) AppendNamedExplicitPath(v *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NamedExplicitPath == nil {
		t.NamedExplicitPath = make(map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath)
	}

	if _, ok := t.NamedExplicitPath[key]; ok {
		return fmt.Errorf("duplicate key for list NamedExplicitPath %v", key)
	}

	t.NamedExplicitPath[key] = v
	return nil
}

// NewTunnel creates a new entry in the Tunnel list of the
// NetworkInstance_Mpls_Lsps_ConstrainedPath struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath) NewTunnel(Name string) (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Tunnel == nil {
		t.Tunnel = make(map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Tunnel[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Tunnel", key)
	}

	t.Tunnel[key] = &NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel{
		Name: &Name,
	}

	return t.Tunnel[key], nil
}

// RenameTunnel renames an entry in the list Tunnel within
// the NetworkInstance_Mpls_Lsps_ConstrainedPath struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath) RenameTunnel(oldK, newK string) error {
	if _, ok := t.Tunnel[newK]; ok {
		return fmt.Errorf("key %v already exists in Tunnel", newK)
	}

	e, ok := t.Tunnel[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Tunnel", oldK)
	}
	e.Name = &newK

	t.Tunnel[newK] = e
	delete(t.Tunnel, oldK)
	return nil
}

// GetOrCreateTunnelMap returns the list (map) from NetworkInstance_Mpls_Lsps_ConstrainedPath.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath) GetOrCreateTunnelMap() map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel {
	if t.Tunnel == nil {
		t.Tunnel = make(map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel)
	}
	return t.Tunnel
}

// GetOrCreateTunnel retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_Lsps_ConstrainedPath. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath) GetOrCreateTunnel(Name string) *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel {

	key := Name

	if v, ok := t.Tunnel[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTunnel(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTunnel got unexpected error: %v", err))
	}
	return v
}

// GetTunnel retrieves the value with the specified key from
// the Tunnel map field of NetworkInstance_Mpls_Lsps_ConstrainedPath. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath) GetTunnel(Name string) *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Tunnel[key]; ok {
		return lm
	}
	return nil
}

// AppendTunnel appends the supplied NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel struct to the
// list Tunnel of NetworkInstance_Mpls_Lsps_ConstrainedPath. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath) AppendTunnel(v *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Tunnel == nil {
		t.Tunnel = make(map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel)
	}

	if _, ok := t.Tunnel[key]; ok {
		return fmt.Errorf("duplicate key for list Tunnel %v", key)
	}

	t.Tunnel[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_ConstrainedPath
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.NamedExplicitPath {
		e.PopulateDefaults()
	}
	for _, e := range t.Tunnel {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_ConstrainedPath"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_ConstrainedPath.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/constrained-path/named-explicit-paths/named-explicit-path YANG schema element.
type NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath struct {
	ΛMetadata              []ygot.Annotation                                                                          `path:"@" ygotAnnotation:"true"`
	ExplicitRouteObject    map[uint8]*NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject `path:"explicit-route-objects/explicit-route-object" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExplicitRouteObject   []ygot.Annotation                                                                          `path:"explicit-route-objects/@explicit-route-object" ygotAnnotation:"true"`
	Name                   *string                                                                                    `path:"config/name|name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛName                  []ygot.Annotation                                                                          `path:"config/@name|@name" ygotAnnotation:"true"`
	SidProtectionRequired  *bool                                                                                      `path:"config/sid-protection-required" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSidProtectionRequired []ygot.Annotation                                                                          `path:"config/@sid-protection-required" ygotAnnotation:"true"`
	SidSelectionMode       E_NamedExplicitPath_SidSelectionMode                                                       `path:"config/sid-selection-mode" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSidSelectionMode      []ygot.Annotation                                                                          `path:"config/@sid-selection-mode" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath) IsYANGGoStruct() {}

// NewExplicitRouteObject creates a new entry in the ExplicitRouteObject list of the
// NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath) NewExplicitRouteObject(Index uint8) (*NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ExplicitRouteObject == nil {
		t.ExplicitRouteObject = make(map[uint8]*NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.ExplicitRouteObject[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list ExplicitRouteObject", key)
	}

	t.ExplicitRouteObject[key] = &NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject{
		Index: &Index,
	}

	return t.ExplicitRouteObject[key], nil
}

// RenameExplicitRouteObject renames an entry in the list ExplicitRouteObject within
// the NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath) RenameExplicitRouteObject(oldK, newK uint8) error {
	if _, ok := t.ExplicitRouteObject[newK]; ok {
		return fmt.Errorf("key %v already exists in ExplicitRouteObject", newK)
	}

	e, ok := t.ExplicitRouteObject[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in ExplicitRouteObject", oldK)
	}
	e.Index = &newK

	t.ExplicitRouteObject[newK] = e
	delete(t.ExplicitRouteObject, oldK)
	return nil
}

// GetOrCreateExplicitRouteObjectMap returns the list (map) from NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath) GetOrCreateExplicitRouteObjectMap() map[uint8]*NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject {
	if t.ExplicitRouteObject == nil {
		t.ExplicitRouteObject = make(map[uint8]*NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject)
	}
	return t.ExplicitRouteObject
}

// GetOrCreateExplicitRouteObject retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath) GetOrCreateExplicitRouteObject(Index uint8) *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject {

	key := Index

	if v, ok := t.ExplicitRouteObject[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewExplicitRouteObject(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateExplicitRouteObject got unexpected error: %v", err))
	}
	return v
}

// GetExplicitRouteObject retrieves the value with the specified key from
// the ExplicitRouteObject map field of NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath) GetExplicitRouteObject(Index uint8) *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.ExplicitRouteObject[key]; ok {
		return lm
	}
	return nil
}

// AppendExplicitRouteObject appends the supplied NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject struct to the
// list ExplicitRouteObject of NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath) AppendExplicitRouteObject(v *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ExplicitRouteObject == nil {
		t.ExplicitRouteObject = make(map[uint8]*NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject)
	}

	if _, ok := t.ExplicitRouteObject[key]; ok {
		return fmt.Errorf("duplicate key for list ExplicitRouteObject %v", key)
	}

	t.ExplicitRouteObject[key] = v
	return nil
}

// GetName retrieves the value of the leaf Name from the NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetSidProtectionRequired retrieves the value of the leaf SidProtectionRequired from the NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SidProtectionRequired is set, it can
// safely use t.GetSidProtectionRequired() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SidProtectionRequired == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath) GetSidProtectionRequired() bool {
	if t == nil || t.SidProtectionRequired == nil {
		return false
	}
	return *t.SidProtectionRequired
}

// GetSidSelectionMode retrieves the value of the leaf SidSelectionMode from the NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SidSelectionMode is set, it can
// safely use t.GetSidSelectionMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SidSelectionMode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath) GetSidSelectionMode() E_NamedExplicitPath_SidSelectionMode {
	if t == nil || t.SidSelectionMode == 0 {
		return NamedExplicitPath_SidSelectionMode_MIXED_MODE
	}
	return t.SidSelectionMode
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.SidProtectionRequired == nil {
		var v bool = false
		t.SidProtectionRequired = &v
	}
	if t.SidSelectionMode == 0 {
		t.SidSelectionMode = NamedExplicitPath_SidSelectionMode_MIXED_MODE
	}
	for _, e := range t.ExplicitRouteObject {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/constrained-path/named-explicit-paths/named-explicit-path/explicit-route-objects/explicit-route-object YANG schema element.
type NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject struct {
	ΛMetadata []ygot.Annotation  `path:"@" ygotAnnotation:"true"`
	Address   *string            `path:"config/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation  `path:"config/@address" ygotAnnotation:"true"`
	HopType   E_Mpls_MplsHopType `path:"config/hop-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHopType  []ygot.Annotation  `path:"config/@hop-type" ygotAnnotation:"true"`
	Index     *uint8             `path:"config/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex    []ygot.Annotation  `path:"config/@index|@index" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject) GetAddress() string {
	if t == nil || t.Address == nil {
		return ""
	}
	return *t.Address
}

// GetHopType retrieves the value of the leaf HopType from the NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HopType is set, it can
// safely use t.GetHopType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HopType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject) GetHopType() E_Mpls_MplsHopType {
	if t == nil || t.HopType == 0 {
		return 0
	}
	return t.HopType
}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject) GetIndex() uint8 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_NamedExplicitPath_ExplicitRouteObject) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel YANG schema element.
type NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel struct {
	ΛMetadata                 []ygot.Annotation                                                     `path:"@" ygotAnnotation:"true"`
	AdminStatus               E_MplsTypes_TUNNEL_ADMIN_STATUS                                       `path:"config/admin-status" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdminStatus              []ygot.Annotation                                                     `path:"config/@admin-status" ygotAnnotation:"true"`
	AutoGenerated             *bool                                                                 `path:"state/auto-generated" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAutoGenerated            []ygot.Annotation                                                     `path:"state/@auto-generated" ygotAnnotation:"true"`
	Bandwidth                 *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth           `path:"bandwidth" module:"openconfig-network-instance"`
	ΛBandwidth                []ygot.Annotation                                                     `path:"@bandwidth" ygotAnnotation:"true"`
	Counters                  *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters            `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters                 []ygot.Annotation                                                     `path:"state/@counters" ygotAnnotation:"true"`
	Description               *string                                                               `path:"config/description" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDescription              []ygot.Annotation                                                     `path:"config/@description" ygotAnnotation:"true"`
	HoldPriority              *uint8                                                                `path:"config/hold-priority" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHoldPriority             []ygot.Annotation                                                     `path:"config/@hold-priority" ygotAnnotation:"true"`
	Metric                    *int32                                                                `path:"config/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric                   []ygot.Annotation                                                     `path:"config/@metric" ygotAnnotation:"true"`
	MetricType                E_MplsTypes_LSP_METRIC_TYPE                                           `path:"config/metric-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetricType               []ygot.Annotation                                                     `path:"config/@metric-type" ygotAnnotation:"true"`
	Name                      *string                                                               `path:"config/name|name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛName                     []ygot.Annotation                                                     `path:"config/@name|@name" ygotAnnotation:"true"`
	OperStatus                E_MplsTypes_LSP_OPER_STATUS                                           `path:"state/oper-status" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOperStatus               []ygot.Annotation                                                     `path:"state/@oper-status" ygotAnnotation:"true"`
	P2PTunnelAttributes       *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes `path:"p2p-tunnel-attributes" module:"openconfig-network-instance"`
	ΛP2PTunnelAttributes      []ygot.Annotation                                                     `path:"@p2p-tunnel-attributes" ygotAnnotation:"true"`
	Preference                *uint8                                                                `path:"config/preference" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreference               []ygot.Annotation                                                     `path:"config/@preference" ygotAnnotation:"true"`
	ProtectionStyleRequested  E_MplsTypes_PROTECTION_TYPE                                           `path:"config/protection-style-requested" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProtectionStyleRequested []ygot.Annotation                                                     `path:"config/@protection-style-requested" ygotAnnotation:"true"`
	ReoptimizeTimer           *uint16                                                               `path:"config/reoptimize-timer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReoptimizeTimer          []ygot.Annotation                                                     `path:"config/@reoptimize-timer" ygotAnnotation:"true"`
	Role                      E_MplsTypes_LSP_ROLE                                                  `path:"state/role" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRole                     []ygot.Annotation                                                     `path:"state/@role" ygotAnnotation:"true"`
	SetupPriority             *uint8                                                                `path:"config/setup-priority" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSetupPriority            []ygot.Annotation                                                     `path:"config/@setup-priority" ygotAnnotation:"true"`
	ShortcutEligible          *bool                                                                 `path:"config/shortcut-eligible" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛShortcutEligible         []ygot.Annotation                                                     `path:"config/@shortcut-eligible" ygotAnnotation:"true"`
	SignalingProtocol         E_MplsTypes_PATH_SETUP_PROTOCOL                                       `path:"config/signaling-protocol" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSignalingProtocol        []ygot.Annotation                                                     `path:"config/@signaling-protocol" ygotAnnotation:"true"`
	SoftPreemption            *bool                                                                 `path:"config/soft-preemption" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSoftPreemption           []ygot.Annotation                                                     `path:"config/@soft-preemption" ygotAnnotation:"true"`
	Source                    *string                                                               `path:"config/source" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSource                   []ygot.Annotation                                                     `path:"config/@source" ygotAnnotation:"true"`
	Type                      E_MplsTypes_TUNNEL_TYPE                                               `path:"config/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType                     []ygot.Annotation                                                     `path:"config/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) IsYANGGoStruct() {}

// GetOrCreateBandwidth retrieves the value of the Bandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetOrCreateBandwidth() *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth {
	if t.Bandwidth != nil {
		return t.Bandwidth
	}
	t.Bandwidth = &NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth{}
	return t.Bandwidth
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetOrCreateCounters() *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters{}
	return t.Counters
}

// GetOrCreateP2PTunnelAttributes retrieves the value of the P2PTunnelAttributes field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetOrCreateP2PTunnelAttributes() *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes {
	if t.P2PTunnelAttributes != nil {
		return t.P2PTunnelAttributes
	}
	t.P2PTunnelAttributes = &NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes{}
	return t.P2PTunnelAttributes
}

// GetBandwidth returns the value of the Bandwidth struct pointer
// from NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel. If the receiver or the field Bandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetBandwidth() *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth {
	if t != nil && t.Bandwidth != nil {
		return t.Bandwidth
	}
	return nil
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetCounters() *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetP2PTunnelAttributes returns the value of the P2PTunnelAttributes struct pointer
// from NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel. If the receiver or the field P2PTunnelAttributes is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetP2PTunnelAttributes() *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes {
	if t != nil && t.P2PTunnelAttributes != nil {
		return t.P2PTunnelAttributes
	}
	return nil
}

// GetAdminStatus retrieves the value of the leaf AdminStatus from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdminStatus is set, it can
// safely use t.GetAdminStatus() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdminStatus == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetAdminStatus() E_MplsTypes_TUNNEL_ADMIN_STATUS {
	if t == nil || t.AdminStatus == 0 {
		return MplsTypes_TUNNEL_ADMIN_STATUS_ADMIN_UP
	}
	return t.AdminStatus
}

// GetAutoGenerated retrieves the value of the leaf AutoGenerated from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AutoGenerated is set, it can
// safely use t.GetAutoGenerated() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AutoGenerated == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetAutoGenerated() bool {
	if t == nil || t.AutoGenerated == nil {
		return false
	}
	return *t.AutoGenerated
}

// GetDescription retrieves the value of the leaf Description from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetHoldPriority retrieves the value of the leaf HoldPriority from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HoldPriority is set, it can
// safely use t.GetHoldPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HoldPriority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetHoldPriority() uint8 {
	if t == nil || t.HoldPriority == nil {
		return 0
	}
	return *t.HoldPriority
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetMetric() int32 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetMetricType retrieves the value of the leaf MetricType from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MetricType is set, it can
// safely use t.GetMetricType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MetricType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetMetricType() E_MplsTypes_LSP_METRIC_TYPE {
	if t == nil || t.MetricType == 0 {
		return MplsTypes_LSP_METRIC_TYPE_LSP_METRIC_INHERITED
	}
	return t.MetricType
}

// GetName retrieves the value of the leaf Name from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetOperStatus retrieves the value of the leaf OperStatus from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OperStatus is set, it can
// safely use t.GetOperStatus() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OperStatus == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetOperStatus() E_MplsTypes_LSP_OPER_STATUS {
	if t == nil || t.OperStatus == 0 {
		return 0
	}
	return t.OperStatus
}

// GetPreference retrieves the value of the leaf Preference from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Preference is set, it can
// safely use t.GetPreference() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Preference == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetPreference() uint8 {
	if t == nil || t.Preference == nil {
		return 0
	}
	return *t.Preference
}

// GetProtectionStyleRequested retrieves the value of the leaf ProtectionStyleRequested from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ProtectionStyleRequested is set, it can
// safely use t.GetProtectionStyleRequested() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ProtectionStyleRequested == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetProtectionStyleRequested() E_MplsTypes_PROTECTION_TYPE {
	if t == nil || t.ProtectionStyleRequested == 0 {
		return MplsTypes_PROTECTION_TYPE_UNPROTECTED
	}
	return t.ProtectionStyleRequested
}

// GetReoptimizeTimer retrieves the value of the leaf ReoptimizeTimer from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReoptimizeTimer is set, it can
// safely use t.GetReoptimizeTimer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReoptimizeTimer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetReoptimizeTimer() uint16 {
	if t == nil || t.ReoptimizeTimer == nil {
		return 0
	}
	return *t.ReoptimizeTimer
}

// GetRole retrieves the value of the leaf Role from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Role is set, it can
// safely use t.GetRole() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Role == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetRole() E_MplsTypes_LSP_ROLE {
	if t == nil || t.Role == 0 {
		return 0
	}
	return t.Role
}

// GetSetupPriority retrieves the value of the leaf SetupPriority from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SetupPriority is set, it can
// safely use t.GetSetupPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SetupPriority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetSetupPriority() uint8 {
	if t == nil || t.SetupPriority == nil {
		return 7
	}
	return *t.SetupPriority
}

// GetShortcutEligible retrieves the value of the leaf ShortcutEligible from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ShortcutEligible is set, it can
// safely use t.GetShortcutEligible() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ShortcutEligible == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetShortcutEligible() bool {
	if t == nil || t.ShortcutEligible == nil {
		return true
	}
	return *t.ShortcutEligible
}

// GetSignalingProtocol retrieves the value of the leaf SignalingProtocol from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SignalingProtocol is set, it can
// safely use t.GetSignalingProtocol() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SignalingProtocol == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetSignalingProtocol() E_MplsTypes_PATH_SETUP_PROTOCOL {
	if t == nil || t.SignalingProtocol == 0 {
		return 0
	}
	return t.SignalingProtocol
}

// GetSoftPreemption retrieves the value of the leaf SoftPreemption from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SoftPreemption is set, it can
// safely use t.GetSoftPreemption() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SoftPreemption == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetSoftPreemption() bool {
	if t == nil || t.SoftPreemption == nil {
		return false
	}
	return *t.SoftPreemption
}

// GetSource retrieves the value of the leaf Source from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Source is set, it can
// safely use t.GetSource() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Source == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetSource() string {
	if t == nil || t.Source == nil {
		return ""
	}
	return *t.Source
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) GetType() E_MplsTypes_TUNNEL_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AdminStatus == 0 {
		t.AdminStatus = MplsTypes_TUNNEL_ADMIN_STATUS_ADMIN_UP
	}
	if t.HoldPriority == nil {
		var v uint8 = 0
		t.HoldPriority = &v
	}
	if t.MetricType == 0 {
		t.MetricType = MplsTypes_LSP_METRIC_TYPE_LSP_METRIC_INHERITED
	}
	if t.ProtectionStyleRequested == 0 {
		t.ProtectionStyleRequested = MplsTypes_PROTECTION_TYPE_UNPROTECTED
	}
	if t.SetupPriority == nil {
		var v uint8 = 7
		t.SetupPriority = &v
	}
	if t.ShortcutEligible == nil {
		var v bool = true
		t.ShortcutEligible = &v
	}
	if t.SoftPreemption == nil {
		var v bool = false
		t.SoftPreemption = &v
	}
	t.Bandwidth.PopulateDefaults()
	t.Counters.PopulateDefaults()
	t.P2PTunnelAttributes.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/bandwidth YANG schema element.
type NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth struct {
	ΛMetadata          []ygot.Annotation                                                         `path:"@" ygotAnnotation:"true"`
	AutoBandwidth      *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth `path:"auto-bandwidth" module:"openconfig-network-instance"`
	ΛAutoBandwidth     []ygot.Annotation                                                         `path:"@auto-bandwidth" ygotAnnotation:"true"`
	SetBandwidth       *uint64                                                                   `path:"config/set-bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSetBandwidth      []ygot.Annotation                                                         `path:"config/@set-bandwidth" ygotAnnotation:"true"`
	SignaledBandwidth  *uint64                                                                   `path:"state/signaled-bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSignaledBandwidth []ygot.Annotation                                                         `path:"state/@signaled-bandwidth" ygotAnnotation:"true"`
	SpecificationType  E_Mpls_TeBandwidthType                                                    `path:"config/specification-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSpecificationType []ygot.Annotation                                                         `path:"config/@specification-type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth) IsYANGGoStruct() {}

// GetOrCreateAutoBandwidth retrieves the value of the AutoBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth) GetOrCreateAutoBandwidth() *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth {
	if t.AutoBandwidth != nil {
		return t.AutoBandwidth
	}
	t.AutoBandwidth = &NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth{}
	return t.AutoBandwidth
}

// GetAutoBandwidth returns the value of the AutoBandwidth struct pointer
// from NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth. If the receiver or the field AutoBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth) GetAutoBandwidth() *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth {
	if t != nil && t.AutoBandwidth != nil {
		return t.AutoBandwidth
	}
	return nil
}

// GetSetBandwidth retrieves the value of the leaf SetBandwidth from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SetBandwidth is set, it can
// safely use t.GetSetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SetBandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth) GetSetBandwidth() uint64 {
	if t == nil || t.SetBandwidth == nil {
		return 0
	}
	return *t.SetBandwidth
}

// GetSignaledBandwidth retrieves the value of the leaf SignaledBandwidth from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SignaledBandwidth is set, it can
// safely use t.GetSignaledBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SignaledBandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth) GetSignaledBandwidth() uint64 {
	if t == nil || t.SignaledBandwidth == nil {
		return 0
	}
	return *t.SignaledBandwidth
}

// GetSpecificationType retrieves the value of the leaf SpecificationType from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SpecificationType is set, it can
// safely use t.GetSpecificationType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SpecificationType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth) GetSpecificationType() E_Mpls_TeBandwidthType {
	if t == nil || t.SpecificationType == 0 {
		return Mpls_TeBandwidthType_SPECIFIED
	}
	return t.SpecificationType
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.SpecificationType == 0 {
		t.SpecificationType = Mpls_TeBandwidthType_SPECIFIED
	}
	t.AutoBandwidth.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/bandwidth/auto-bandwidth YANG schema element.
type NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth struct {
	ΛMetadata        []ygot.Annotation                                                                   `path:"@" ygotAnnotation:"true"`
	AdjustInterval   *uint32                                                                             `path:"config/adjust-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdjustInterval  []ygot.Annotation                                                                   `path:"config/@adjust-interval" ygotAnnotation:"true"`
	AdjustThreshold  *uint8                                                                              `path:"config/adjust-threshold" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdjustThreshold []ygot.Annotation                                                                   `path:"config/@adjust-threshold" ygotAnnotation:"true"`
	Enabled          *bool                                                                               `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled         []ygot.Annotation                                                                   `path:"config/@enabled" ygotAnnotation:"true"`
	IntervalHighBw   *uint64                                                                             `path:"state/interval-high-bw" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIntervalHighBw  []ygot.Annotation                                                                   `path:"state/@interval-high-bw" ygotAnnotation:"true"`
	MaxBw            *uint64                                                                             `path:"config/max-bw" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxBw           []ygot.Annotation                                                                   `path:"config/@max-bw" ygotAnnotation:"true"`
	MinBw            *uint64                                                                             `path:"config/min-bw" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMinBw           []ygot.Annotation                                                                   `path:"config/@min-bw" ygotAnnotation:"true"`
	Overflow         *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow  `path:"overflow" module:"openconfig-network-instance"`
	ΛOverflow        []ygot.Annotation                                                                   `path:"@overflow" ygotAnnotation:"true"`
	Underflow        *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow `path:"underflow" module:"openconfig-network-instance"`
	ΛUnderflow       []ygot.Annotation                                                                   `path:"@underflow" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth) IsYANGGoStruct() {}

// GetOrCreateOverflow retrieves the value of the Overflow field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth) GetOrCreateOverflow() *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow {
	if t.Overflow != nil {
		return t.Overflow
	}
	t.Overflow = &NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow{}
	return t.Overflow
}

// GetOrCreateUnderflow retrieves the value of the Underflow field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth) GetOrCreateUnderflow() *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow {
	if t.Underflow != nil {
		return t.Underflow
	}
	t.Underflow = &NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow{}
	return t.Underflow
}

// GetOverflow returns the value of the Overflow struct pointer
// from NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth. If the receiver or the field Overflow is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth) GetOverflow() *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow {
	if t != nil && t.Overflow != nil {
		return t.Overflow
	}
	return nil
}

// GetUnderflow returns the value of the Underflow struct pointer
// from NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth. If the receiver or the field Underflow is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth) GetUnderflow() *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow {
	if t != nil && t.Underflow != nil {
		return t.Underflow
	}
	return nil
}

// GetAdjustInterval retrieves the value of the leaf AdjustInterval from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdjustInterval is set, it can
// safely use t.GetAdjustInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdjustInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth) GetAdjustInterval() uint32 {
	if t == nil || t.AdjustInterval == nil {
		return 0
	}
	return *t.AdjustInterval
}

// GetAdjustThreshold retrieves the value of the leaf AdjustThreshold from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdjustThreshold is set, it can
// safely use t.GetAdjustThreshold() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdjustThreshold == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth) GetAdjustThreshold() uint8 {
	if t == nil || t.AdjustThreshold == nil {
		return 0
	}
	return *t.AdjustThreshold
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetIntervalHighBw retrieves the value of the leaf IntervalHighBw from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IntervalHighBw is set, it can
// safely use t.GetIntervalHighBw() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IntervalHighBw == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth) GetIntervalHighBw() uint64 {
	if t == nil || t.IntervalHighBw == nil {
		return 0
	}
	return *t.IntervalHighBw
}

// GetMaxBw retrieves the value of the leaf MaxBw from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxBw is set, it can
// safely use t.GetMaxBw() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxBw == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth) GetMaxBw() uint64 {
	if t == nil || t.MaxBw == nil {
		return 0
	}
	return *t.MaxBw
}

// GetMinBw retrieves the value of the leaf MinBw from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinBw is set, it can
// safely use t.GetMinBw() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinBw == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth) GetMinBw() uint64 {
	if t == nil || t.MinBw == nil {
		return 0
	}
	return *t.MinBw
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	t.Overflow.PopulateDefaults()
	t.Underflow.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/bandwidth/auto-bandwidth/overflow YANG schema element.
type NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled            *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled           []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
	OverflowThreshold  *uint8            `path:"config/overflow-threshold" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOverflowThreshold []ygot.Annotation `path:"config/@overflow-threshold" ygotAnnotation:"true"`
	TriggerEventCount  *uint16           `path:"config/trigger-event-count" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTriggerEventCount []ygot.Annotation `path:"config/@trigger-event-count" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow) IsYANGGoStruct() {
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetOverflowThreshold retrieves the value of the leaf OverflowThreshold from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OverflowThreshold is set, it can
// safely use t.GetOverflowThreshold() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OverflowThreshold == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow) GetOverflowThreshold() uint8 {
	if t == nil || t.OverflowThreshold == nil {
		return 0
	}
	return *t.OverflowThreshold
}

// GetTriggerEventCount retrieves the value of the leaf TriggerEventCount from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TriggerEventCount is set, it can
// safely use t.GetTriggerEventCount() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TriggerEventCount == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow) GetTriggerEventCount() uint16 {
	if t == nil || t.TriggerEventCount == nil {
		return 0
	}
	return *t.TriggerEventCount
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Overflow) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/bandwidth/auto-bandwidth/underflow YANG schema element.
type NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled             *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled            []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
	TriggerEventCount   *uint16           `path:"config/trigger-event-count" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTriggerEventCount  []ygot.Annotation `path:"config/@trigger-event-count" ygotAnnotation:"true"`
	UnderflowThreshold  *uint8            `path:"config/underflow-threshold" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnderflowThreshold []ygot.Annotation `path:"config/@underflow-threshold" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow) IsYANGGoStruct() {
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetTriggerEventCount retrieves the value of the leaf TriggerEventCount from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TriggerEventCount is set, it can
// safely use t.GetTriggerEventCount() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TriggerEventCount == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow) GetTriggerEventCount() uint16 {
	if t == nil || t.TriggerEventCount == nil {
		return 0
	}
	return *t.TriggerEventCount
}

// GetUnderflowThreshold retrieves the value of the leaf UnderflowThreshold from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UnderflowThreshold is set, it can
// safely use t.GetUnderflowThreshold() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UnderflowThreshold == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow) GetUnderflowThreshold() uint8 {
	if t == nil || t.UnderflowThreshold == nil {
		return 0
	}
	return *t.UnderflowThreshold
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Bandwidth_AutoBandwidth_Underflow) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/state/counters YANG schema element.
type NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters struct {
	ΛMetadata               []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bytes                   *uint64           `path:"bytes" module:"openconfig-network-instance"`
	ΛBytes                  []ygot.Annotation `path:"@bytes" ygotAnnotation:"true"`
	CurrentPathTime         *uint64           `path:"current-path-time" module:"openconfig-network-instance"`
	ΛCurrentPathTime        []ygot.Annotation `path:"@current-path-time" ygotAnnotation:"true"`
	NextReoptimizationTime  *uint64           `path:"next-reoptimization-time" module:"openconfig-network-instance"`
	ΛNextReoptimizationTime []ygot.Annotation `path:"@next-reoptimization-time" ygotAnnotation:"true"`
	OnlineTime              *uint64           `path:"online-time" module:"openconfig-network-instance"`
	ΛOnlineTime             []ygot.Annotation `path:"@online-time" ygotAnnotation:"true"`
	Packets                 *uint64           `path:"packets" module:"openconfig-network-instance"`
	ΛPackets                []ygot.Annotation `path:"@packets" ygotAnnotation:"true"`
	PathChanges             *uint64           `path:"path-changes" module:"openconfig-network-instance"`
	ΛPathChanges            []ygot.Annotation `path:"@path-changes" ygotAnnotation:"true"`
	StateChanges            *uint64           `path:"state-changes" module:"openconfig-network-instance"`
	ΛStateChanges           []ygot.Annotation `path:"@state-changes" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters) IsYANGGoStruct() {}

// GetBytes retrieves the value of the leaf Bytes from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bytes is set, it can
// safely use t.GetBytes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bytes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters) GetBytes() uint64 {
	if t == nil || t.Bytes == nil {
		return 0
	}
	return *t.Bytes
}

// GetCurrentPathTime retrieves the value of the leaf CurrentPathTime from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CurrentPathTime is set, it can
// safely use t.GetCurrentPathTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CurrentPathTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters) GetCurrentPathTime() uint64 {
	if t == nil || t.CurrentPathTime == nil {
		return 0
	}
	return *t.CurrentPathTime
}

// GetNextReoptimizationTime retrieves the value of the leaf NextReoptimizationTime from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextReoptimizationTime is set, it can
// safely use t.GetNextReoptimizationTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextReoptimizationTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters) GetNextReoptimizationTime() uint64 {
	if t == nil || t.NextReoptimizationTime == nil {
		return 0
	}
	return *t.NextReoptimizationTime
}

// GetOnlineTime retrieves the value of the leaf OnlineTime from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OnlineTime is set, it can
// safely use t.GetOnlineTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OnlineTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters) GetOnlineTime() uint64 {
	if t == nil || t.OnlineTime == nil {
		return 0
	}
	return *t.OnlineTime
}

// GetPackets retrieves the value of the leaf Packets from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Packets is set, it can
// safely use t.GetPackets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Packets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters) GetPackets() uint64 {
	if t == nil || t.Packets == nil {
		return 0
	}
	return *t.Packets
}

// GetPathChanges retrieves the value of the leaf PathChanges from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathChanges is set, it can
// safely use t.GetPathChanges() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathChanges == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters) GetPathChanges() uint64 {
	if t == nil || t.PathChanges == nil {
		return 0
	}
	return *t.PathChanges
}

// GetStateChanges retrieves the value of the leaf StateChanges from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if StateChanges is set, it can
// safely use t.GetStateChanges() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.StateChanges == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters) GetStateChanges() uint64 {
	if t == nil || t.StateChanges == nil {
		return 0
	}
	return *t.StateChanges
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes YANG schema element.
type NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes struct {
	ΛMetadata           []ygot.Annotation                                                                                 `path:"@" ygotAnnotation:"true"`
	Destination         *string                                                                                           `path:"config/destination" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDestination        []ygot.Annotation                                                                                 `path:"config/@destination" ygotAnnotation:"true"`
	P2PPrimaryPath      map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath   `path:"p2p-primary-path/p2p-primary-path" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛP2PPrimaryPath     []ygot.Annotation                                                                                 `path:"p2p-primary-path/@p2p-primary-path" ygotAnnotation:"true"`
	P2PSecondaryPath    map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath `path:"p2p-secondary-paths/p2p-secondary-path" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛP2PSecondaryPath   []ygot.Annotation                                                                                 `path:"p2p-secondary-paths/@p2p-secondary-path" ygotAnnotation:"true"`
	RecordRouteEnabled  *bool                                                                                             `path:"config/record-route-enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRecordRouteEnabled []ygot.Annotation                                                                                 `path:"config/@record-route-enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) IsYANGGoStruct() {}

// NewP2PPrimaryPath creates a new entry in the P2PPrimaryPath list of the
// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) NewP2PPrimaryPath(Name string) (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.P2PPrimaryPath == nil {
		t.P2PPrimaryPath = make(map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.P2PPrimaryPath[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list P2PPrimaryPath", key)
	}

	t.P2PPrimaryPath[key] = &NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath{
		Name: &Name,
	}

	return t.P2PPrimaryPath[key], nil
}

// RenameP2PPrimaryPath renames an entry in the list P2PPrimaryPath within
// the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) RenameP2PPrimaryPath(oldK, newK string) error {
	if _, ok := t.P2PPrimaryPath[newK]; ok {
		return fmt.Errorf("key %v already exists in P2PPrimaryPath", newK)
	}

	e, ok := t.P2PPrimaryPath[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in P2PPrimaryPath", oldK)
	}
	e.Name = &newK

	t.P2PPrimaryPath[newK] = e
	delete(t.P2PPrimaryPath, oldK)
	return nil
}

// GetOrCreateP2PPrimaryPathMap returns the list (map) from NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) GetOrCreateP2PPrimaryPathMap() map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath {
	if t.P2PPrimaryPath == nil {
		t.P2PPrimaryPath = make(map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath)
	}
	return t.P2PPrimaryPath
}

// GetOrCreateP2PPrimaryPath retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) GetOrCreateP2PPrimaryPath(Name string) *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath {

	key := Name

	if v, ok := t.P2PPrimaryPath[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewP2PPrimaryPath(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateP2PPrimaryPath got unexpected error: %v", err))
	}
	return v
}

// GetP2PPrimaryPath retrieves the value with the specified key from
// the P2PPrimaryPath map field of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) GetP2PPrimaryPath(Name string) *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.P2PPrimaryPath[key]; ok {
		return lm
	}
	return nil
}

// AppendP2PPrimaryPath appends the supplied NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath struct to the
// list P2PPrimaryPath of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) AppendP2PPrimaryPath(v *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.P2PPrimaryPath == nil {
		t.P2PPrimaryPath = make(map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath)
	}

	if _, ok := t.P2PPrimaryPath[key]; ok {
		return fmt.Errorf("duplicate key for list P2PPrimaryPath %v", key)
	}

	t.P2PPrimaryPath[key] = v
	return nil
}

// NewP2PSecondaryPath creates a new entry in the P2PSecondaryPath list of the
// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) NewP2PSecondaryPath(Name string) (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.P2PSecondaryPath == nil {
		t.P2PSecondaryPath = make(map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.P2PSecondaryPath[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list P2PSecondaryPath", key)
	}

	t.P2PSecondaryPath[key] = &NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath{
		Name: &Name,
	}

	return t.P2PSecondaryPath[key], nil
}

// RenameP2PSecondaryPath renames an entry in the list P2PSecondaryPath within
// the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) RenameP2PSecondaryPath(oldK, newK string) error {
	if _, ok := t.P2PSecondaryPath[newK]; ok {
		return fmt.Errorf("key %v already exists in P2PSecondaryPath", newK)
	}

	e, ok := t.P2PSecondaryPath[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in P2PSecondaryPath", oldK)
	}
	e.Name = &newK

	t.P2PSecondaryPath[newK] = e
	delete(t.P2PSecondaryPath, oldK)
	return nil
}

// GetOrCreateP2PSecondaryPathMap returns the list (map) from NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) GetOrCreateP2PSecondaryPathMap() map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath {
	if t.P2PSecondaryPath == nil {
		t.P2PSecondaryPath = make(map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath)
	}
	return t.P2PSecondaryPath
}

// GetOrCreateP2PSecondaryPath retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) GetOrCreateP2PSecondaryPath(Name string) *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath {

	key := Name

	if v, ok := t.P2PSecondaryPath[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewP2PSecondaryPath(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateP2PSecondaryPath got unexpected error: %v", err))
	}
	return v
}

// GetP2PSecondaryPath retrieves the value with the specified key from
// the P2PSecondaryPath map field of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) GetP2PSecondaryPath(Name string) *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.P2PSecondaryPath[key]; ok {
		return lm
	}
	return nil
}

// AppendP2PSecondaryPath appends the supplied NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath struct to the
// list P2PSecondaryPath of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) AppendP2PSecondaryPath(v *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.P2PSecondaryPath == nil {
		t.P2PSecondaryPath = make(map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath)
	}

	if _, ok := t.P2PSecondaryPath[key]; ok {
		return fmt.Errorf("duplicate key for list P2PSecondaryPath %v", key)
	}

	t.P2PSecondaryPath[key] = v
	return nil
}

// GetDestination retrieves the value of the leaf Destination from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Destination is set, it can
// safely use t.GetDestination() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Destination == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) GetDestination() string {
	if t == nil || t.Destination == nil {
		return ""
	}
	return *t.Destination
}

// GetRecordRouteEnabled retrieves the value of the leaf RecordRouteEnabled from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RecordRouteEnabled is set, it can
// safely use t.GetRecordRouteEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RecordRouteEnabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) GetRecordRouteEnabled() bool {
	if t == nil || t.RecordRouteEnabled == nil {
		return false
	}
	return *t.RecordRouteEnabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.P2PPrimaryPath {
		e.PopulateDefaults()
	}
	for _, e := range t.P2PSecondaryPath {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-primary-path/p2p-primary-path YANG schema element.
type NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath struct {
	ΛMetadata                  []ygot.Annotation                                                                                                                               `path:"@" ygotAnnotation:"true"`
	AdminGroups                *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups                                                `path:"admin-groups" module:"openconfig-network-instance"`
	ΛAdminGroups               []ygot.Annotation                                                                                                                               `path:"@admin-groups" ygotAnnotation:"true"`
	AssociatedRsvpSessions     []uint64                                                                                                                                        `path:"state/associated-rsvp-sessions" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAssociatedRsvpSessions    []ygot.Annotation                                                                                                                               `path:"state/@associated-rsvp-sessions" ygotAnnotation:"true"`
	CandidateSecondaryPath     map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath                          `path:"candidate-secondary-paths/candidate-secondary-path" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCandidateSecondaryPath    []ygot.Annotation                                                                                                                               `path:"candidate-secondary-paths/@candidate-secondary-path" ygotAnnotation:"true"`
	CspfMetric                 *uint64                                                                                                                                         `path:"state/cspf-metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCspfMetric                []ygot.Annotation                                                                                                                               `path:"state/@cspf-metric" ygotAnnotation:"true"`
	CspfTiebreaker             E_Mpls_CspfTieBreaking                                                                                                                          `path:"config/cspf-tiebreaker" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCspfTiebreaker            []ygot.Annotation                                                                                                                               `path:"config/@cspf-tiebreaker" ygotAnnotation:"true"`
	ExplicitPathName           *string                                                                                                                                         `path:"config/explicit-path-name" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExplicitPathName          []ygot.Annotation                                                                                                                               `path:"config/@explicit-path-name" ygotAnnotation:"true"`
	HoldPriority               *uint8                                                                                                                                          `path:"config/hold-priority" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHoldPriority              []ygot.Annotation                                                                                                                               `path:"config/@hold-priority" ygotAnnotation:"true"`
	Name                       *string                                                                                                                                         `path:"config/name|name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛName                      []ygot.Annotation                                                                                                                               `path:"config/@name|@name" ygotAnnotation:"true"`
	PathComputationMethod      E_MplsTypes_PATH_COMPUTATION_METHOD                                                                                                             `path:"config/path-computation-method" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPathComputationMethod     []ygot.Annotation                                                                                                                               `path:"config/@path-computation-method" ygotAnnotation:"true"`
	PathComputationServer      *string                                                                                                                                         `path:"config/path-computation-server" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPathComputationServer     []ygot.Annotation                                                                                                                               `path:"config/@path-computation-server" ygotAnnotation:"true"`
	PathControl                E_Pcep_LspControlType                                                                                                                           `path:"config/path-control" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPathControl               []ygot.Annotation                                                                                                                               `path:"config/@path-control" ygotAnnotation:"true"`
	PathMetricBoundConstraint  map[E_MplsTypes_PATH_METRIC_TYPE]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint `path:"path-metric-bound-constraints/path-metric-bound-constraint" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPathMetricBoundConstraint []ygot.Annotation                                                                                                                               `path:"path-metric-bound-constraints/@path-metric-bound-constraint" ygotAnnotation:"true"`
	Preference                 *uint8                                                                                                                                          `path:"config/preference" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreference                []ygot.Annotation                                                                                                                               `path:"config/@preference" ygotAnnotation:"true"`
	RetryTimer                 *uint16                                                                                                                                         `path:"config/retry-timer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRetryTimer                []ygot.Annotation                                                                                                                               `path:"config/@retry-timer" ygotAnnotation:"true"`
	SetupPriority              *uint8                                                                                                                                          `path:"config/setup-priority" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSetupPriority             []ygot.Annotation                                                                                                                               `path:"config/@setup-priority" ygotAnnotation:"true"`
	SpfMetric                  *uint64                                                                                                                                         `path:"state/spf-metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSpfMetric                 []ygot.Annotation                                                                                                                               `path:"state/@spf-metric" ygotAnnotation:"true"`
	UseCspf                    *bool                                                                                                                                           `path:"config/use-cspf" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUseCspf                   []ygot.Annotation                                                                                                                               `path:"config/@use-cspf" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) IsYANGGoStruct() {
}

// NewCandidateSecondaryPath creates a new entry in the CandidateSecondaryPath list of the
// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) NewCandidateSecondaryPath(SecondaryPath string) (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.CandidateSecondaryPath == nil {
		t.CandidateSecondaryPath = make(map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath)
	}

	key := SecondaryPath

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.CandidateSecondaryPath[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list CandidateSecondaryPath", key)
	}

	t.CandidateSecondaryPath[key] = &NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath{
		SecondaryPath: &SecondaryPath,
	}

	return t.CandidateSecondaryPath[key], nil
}

// RenameCandidateSecondaryPath renames an entry in the list CandidateSecondaryPath within
// the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) RenameCandidateSecondaryPath(oldK, newK string) error {
	if _, ok := t.CandidateSecondaryPath[newK]; ok {
		return fmt.Errorf("key %v already exists in CandidateSecondaryPath", newK)
	}

	e, ok := t.CandidateSecondaryPath[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in CandidateSecondaryPath", oldK)
	}
	e.SecondaryPath = &newK

	t.CandidateSecondaryPath[newK] = e
	delete(t.CandidateSecondaryPath, oldK)
	return nil
}

// GetOrCreateCandidateSecondaryPathMap returns the list (map) from NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetOrCreateCandidateSecondaryPathMap() map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath {
	if t.CandidateSecondaryPath == nil {
		t.CandidateSecondaryPath = make(map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath)
	}
	return t.CandidateSecondaryPath
}

// GetOrCreateCandidateSecondaryPath retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetOrCreateCandidateSecondaryPath(SecondaryPath string) *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath {

	key := SecondaryPath

	if v, ok := t.CandidateSecondaryPath[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewCandidateSecondaryPath(SecondaryPath)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateCandidateSecondaryPath got unexpected error: %v", err))
	}
	return v
}

// GetCandidateSecondaryPath retrieves the value with the specified key from
// the CandidateSecondaryPath map field of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetCandidateSecondaryPath(SecondaryPath string) *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath {

	if t == nil {
		return nil
	}

	key := SecondaryPath

	if lm, ok := t.CandidateSecondaryPath[key]; ok {
		return lm
	}
	return nil
}

// AppendCandidateSecondaryPath appends the supplied NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath struct to the
// list CandidateSecondaryPath of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) AppendCandidateSecondaryPath(v *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath) error {
	if v.SecondaryPath == nil {
		return fmt.Errorf("invalid nil key received for SecondaryPath")
	}

	key := *v.SecondaryPath

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.CandidateSecondaryPath == nil {
		t.CandidateSecondaryPath = make(map[string]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath)
	}

	if _, ok := t.CandidateSecondaryPath[key]; ok {
		return fmt.Errorf("duplicate key for list CandidateSecondaryPath %v", key)
	}

	t.CandidateSecondaryPath[key] = v
	return nil
}

// NewPathMetricBoundConstraint creates a new entry in the PathMetricBoundConstraint list of the
// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) NewPathMetricBoundConstraint(Type E_MplsTypes_PATH_METRIC_TYPE) (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PathMetricBoundConstraint == nil {
		t.PathMetricBoundConstraint = make(map[E_MplsTypes_PATH_METRIC_TYPE]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.PathMetricBoundConstraint[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list PathMetricBoundConstraint", key)
	}

	t.PathMetricBoundConstraint[key] = &NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint{
		Type: Type,
	}

	return t.PathMetricBoundConstraint[key], nil
}

// RenamePathMetricBoundConstraint renames an entry in the list PathMetricBoundConstraint within
// the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) RenamePathMetricBoundConstraint(oldK, newK E_MplsTypes_PATH_METRIC_TYPE) error {
	if _, ok := t.PathMetricBoundConstraint[newK]; ok {
		return fmt.Errorf("key %v already exists in PathMetricBoundConstraint", newK)
	}

	e, ok := t.PathMetricBoundConstraint[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in PathMetricBoundConstraint", oldK)
	}
	e.Type = newK

	t.PathMetricBoundConstraint[newK] = e
	delete(t.PathMetricBoundConstraint, oldK)
	return nil
}

// GetOrCreatePathMetricBoundConstraintMap returns the list (map) from NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetOrCreatePathMetricBoundConstraintMap() map[E_MplsTypes_PATH_METRIC_TYPE]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint {
	if t.PathMetricBoundConstraint == nil {
		t.PathMetricBoundConstraint = make(map[E_MplsTypes_PATH_METRIC_TYPE]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint)
	}
	return t.PathMetricBoundConstraint
}

// GetOrCreatePathMetricBoundConstraint retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetOrCreatePathMetricBoundConstraint(Type E_MplsTypes_PATH_METRIC_TYPE) *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint {

	key := Type

	if v, ok := t.PathMetricBoundConstraint[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPathMetricBoundConstraint(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePathMetricBoundConstraint got unexpected error: %v", err))
	}
	return v
}

// GetPathMetricBoundConstraint retrieves the value with the specified key from
// the PathMetricBoundConstraint map field of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetPathMetricBoundConstraint(Type E_MplsTypes_PATH_METRIC_TYPE) *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.PathMetricBoundConstraint[key]; ok {
		return lm
	}
	return nil
}

// AppendPathMetricBoundConstraint appends the supplied NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint struct to the
// list PathMetricBoundConstraint of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) AppendPathMetricBoundConstraint(v *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint) error {
	key := v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PathMetricBoundConstraint == nil {
		t.PathMetricBoundConstraint = make(map[E_MplsTypes_PATH_METRIC_TYPE]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint)
	}

	if _, ok := t.PathMetricBoundConstraint[key]; ok {
		return fmt.Errorf("duplicate key for list PathMetricBoundConstraint %v", key)
	}

	t.PathMetricBoundConstraint[key] = v
	return nil
}

// GetOrCreateAdminGroups retrieves the value of the AdminGroups field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetOrCreateAdminGroups() *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups {
	if t.AdminGroups != nil {
		return t.AdminGroups
	}
	t.AdminGroups = &NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups{}
	return t.AdminGroups
}

// GetAdminGroups returns the value of the AdminGroups struct pointer
// from NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath. If the receiver or the field AdminGroups is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetAdminGroups() *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups {
	if t != nil && t.AdminGroups != nil {
		return t.AdminGroups
	}
	return nil
}

// GetAssociatedRsvpSessions retrieves the value of the leaf AssociatedRsvpSessions from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AssociatedRsvpSessions is set, it can
// safely use t.GetAssociatedRsvpSessions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AssociatedRsvpSessions == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetAssociatedRsvpSessions() []uint64 {
	if t == nil || t.AssociatedRsvpSessions == nil {
		return nil
	}
	return t.AssociatedRsvpSessions
}

// GetCspfMetric retrieves the value of the leaf CspfMetric from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CspfMetric is set, it can
// safely use t.GetCspfMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CspfMetric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetCspfMetric() uint64 {
	if t == nil || t.CspfMetric == nil {
		return 0
	}
	return *t.CspfMetric
}

// GetCspfTiebreaker retrieves the value of the leaf CspfTiebreaker from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CspfTiebreaker is set, it can
// safely use t.GetCspfTiebreaker() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CspfTiebreaker == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetCspfTiebreaker() E_Mpls_CspfTieBreaking {
	if t == nil || t.CspfTiebreaker == 0 {
		return Mpls_CspfTieBreaking_RANDOM
	}
	return t.CspfTiebreaker
}

// GetExplicitPathName retrieves the value of the leaf ExplicitPathName from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExplicitPathName is set, it can
// safely use t.GetExplicitPathName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExplicitPathName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetExplicitPathName() string {
	if t == nil || t.ExplicitPathName == nil {
		return ""
	}
	return *t.ExplicitPathName
}

// GetHoldPriority retrieves the value of the leaf HoldPriority from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HoldPriority is set, it can
// safely use t.GetHoldPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HoldPriority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetHoldPriority() uint8 {
	if t == nil || t.HoldPriority == nil {
		return 0
	}
	return *t.HoldPriority
}

// GetName retrieves the value of the leaf Name from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetPathComputationMethod retrieves the value of the leaf PathComputationMethod from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathComputationMethod is set, it can
// safely use t.GetPathComputationMethod() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathComputationMethod == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetPathComputationMethod() E_MplsTypes_PATH_COMPUTATION_METHOD {
	if t == nil || t.PathComputationMethod == 0 {
		return MplsTypes_PATH_COMPUTATION_METHOD_LOCALLY_COMPUTED
	}
	return t.PathComputationMethod
}

// GetPathComputationServer retrieves the value of the leaf PathComputationServer from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathComputationServer is set, it can
// safely use t.GetPathComputationServer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathComputationServer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetPathComputationServer() string {
	if t == nil || t.PathComputationServer == nil {
		return ""
	}
	return *t.PathComputationServer
}

// GetPathControl retrieves the value of the leaf PathControl from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathControl is set, it can
// safely use t.GetPathControl() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathControl == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetPathControl() E_Pcep_LspControlType {
	if t == nil || t.PathControl == 0 {
		return 0
	}
	return t.PathControl
}

// GetPreference retrieves the value of the leaf Preference from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Preference is set, it can
// safely use t.GetPreference() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Preference == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetPreference() uint8 {
	if t == nil || t.Preference == nil {
		return 0
	}
	return *t.Preference
}

// GetRetryTimer retrieves the value of the leaf RetryTimer from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RetryTimer is set, it can
// safely use t.GetRetryTimer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RetryTimer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetRetryTimer() uint16 {
	if t == nil || t.RetryTimer == nil {
		return 0
	}
	return *t.RetryTimer
}

// GetSetupPriority retrieves the value of the leaf SetupPriority from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SetupPriority is set, it can
// safely use t.GetSetupPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SetupPriority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetSetupPriority() uint8 {
	if t == nil || t.SetupPriority == nil {
		return 7
	}
	return *t.SetupPriority
}

// GetSpfMetric retrieves the value of the leaf SpfMetric from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SpfMetric is set, it can
// safely use t.GetSpfMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SpfMetric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetSpfMetric() uint64 {
	if t == nil || t.SpfMetric == nil {
		return 0
	}
	return *t.SpfMetric
}

// GetUseCspf retrieves the value of the leaf UseCspf from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UseCspf is set, it can
// safely use t.GetUseCspf() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UseCspf == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) GetUseCspf() bool {
	if t == nil || t.UseCspf == nil {
		return false
	}
	return *t.UseCspf
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.CspfTiebreaker == 0 {
		t.CspfTiebreaker = Mpls_CspfTieBreaking_RANDOM
	}
	if t.HoldPriority == nil {
		var v uint8 = 0
		t.HoldPriority = &v
	}
	if t.PathComputationMethod == 0 {
		t.PathComputationMethod = MplsTypes_PATH_COMPUTATION_METHOD_LOCALLY_COMPUTED
	}
	if t.SetupPriority == nil {
		var v uint8 = 7
		t.SetupPriority = &v
	}
	t.AdminGroups.PopulateDefaults()
	for _, e := range t.CandidateSecondaryPath {
		e.PopulateDefaults()
	}
	for _, e := range t.PathMetricBoundConstraint {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-primary-path/p2p-primary-path/admin-groups YANG schema element.
type NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ExcludeGroup     []string          `path:"config/exclude-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExcludeGroup    []ygot.Annotation `path:"config/@exclude-group" ygotAnnotation:"true"`
	IncludeAllGroup  []string          `path:"config/include-all-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIncludeAllGroup []ygot.Annotation `path:"config/@include-all-group" ygotAnnotation:"true"`
	IncludeAnyGroup  []string          `path:"config/include-any-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIncludeAnyGroup []ygot.Annotation `path:"config/@include-any-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups) IsYANGGoStruct() {
}

// GetExcludeGroup retrieves the value of the leaf ExcludeGroup from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExcludeGroup is set, it can
// safely use t.GetExcludeGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExcludeGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups) GetExcludeGroup() []string {
	if t == nil || t.ExcludeGroup == nil {
		return nil
	}
	return t.ExcludeGroup
}

// GetIncludeAllGroup retrieves the value of the leaf IncludeAllGroup from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IncludeAllGroup is set, it can
// safely use t.GetIncludeAllGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IncludeAllGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups) GetIncludeAllGroup() []string {
	if t == nil || t.IncludeAllGroup == nil {
		return nil
	}
	return t.IncludeAllGroup
}

// GetIncludeAnyGroup retrieves the value of the leaf IncludeAnyGroup from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IncludeAnyGroup is set, it can
// safely use t.GetIncludeAnyGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IncludeAnyGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups) GetIncludeAnyGroup() []string {
	if t == nil || t.IncludeAnyGroup == nil {
		return nil
	}
	return t.IncludeAnyGroup
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_AdminGroups) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-primary-path/p2p-primary-path/candidate-secondary-paths/candidate-secondary-path YANG schema element.
type NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath struct {
	ΛMetadata      []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Active         *bool             `path:"state/active" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛActive        []ygot.Annotation `path:"state/@active" ygotAnnotation:"true"`
	Priority       *uint16           `path:"config/priority" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPriority      []ygot.Annotation `path:"config/@priority" ygotAnnotation:"true"`
	SecondaryPath  *string           `path:"config/secondary-path|secondary-path" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSecondaryPath []ygot.Annotation `path:"config/@secondary-path|@secondary-path" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath) IsYANGGoStruct() {
}

// GetActive retrieves the value of the leaf Active from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Active is set, it can
// safely use t.GetActive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Active == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath) GetActive() bool {
	if t == nil || t.Active == nil {
		return false
	}
	return *t.Active
}

// GetPriority retrieves the value of the leaf Priority from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath) GetPriority() uint16 {
	if t == nil || t.Priority == nil {
		return 0
	}
	return *t.Priority
}

// GetSecondaryPath retrieves the value of the leaf SecondaryPath from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SecondaryPath is set, it can
// safely use t.GetSecondaryPath() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SecondaryPath == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath) GetSecondaryPath() string {
	if t == nil || t.SecondaryPath == nil {
		return ""
	}
	return *t.SecondaryPath
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath) ΛListKeyMap() (map[string]interface{}, error) {
	if t.SecondaryPath == nil {
		return nil, fmt.Errorf("nil value for key SecondaryPath")
	}

	return map[string]interface{}{
		"secondary-path": *t.SecondaryPath,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_CandidateSecondaryPath) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-primary-path/p2p-primary-path/path-metric-bound-constraints/path-metric-bound-constraint YANG schema element.
type NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint struct {
	ΛMetadata         []ygot.Annotation            `path:"@" ygotAnnotation:"true"`
	MetricUpperBound  *uint64                      `path:"config/metric-upper-bound" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetricUpperBound []ygot.Annotation            `path:"config/@metric-upper-bound" ygotAnnotation:"true"`
	Type              E_MplsTypes_PATH_METRIC_TYPE `path:"config/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType             []ygot.Annotation            `path:"config/@type|@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint) IsYANGGoStruct() {
}

// GetMetricUpperBound retrieves the value of the leaf MetricUpperBound from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MetricUpperBound is set, it can
// safely use t.GetMetricUpperBound() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MetricUpperBound == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint) GetMetricUpperBound() uint64 {
	if t == nil || t.MetricUpperBound == nil {
		return 0
	}
	return *t.MetricUpperBound
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint) GetType() E_MplsTypes_PATH_METRIC_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MetricUpperBound == nil {
		var v uint64 = 0
		t.MetricUpperBound = &v
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"type": t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PPrimaryPath_PathMetricBoundConstraint) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-secondary-paths/p2p-secondary-path YANG schema element.
type NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath struct {
	ΛMetadata                  []ygot.Annotation                                                                                                                                 `path:"@" ygotAnnotation:"true"`
	AdminGroups                *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups                                                `path:"admin-groups" module:"openconfig-network-instance"`
	ΛAdminGroups               []ygot.Annotation                                                                                                                                 `path:"@admin-groups" ygotAnnotation:"true"`
	AssociatedRsvpSessions     []uint64                                                                                                                                          `path:"state/associated-rsvp-sessions" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAssociatedRsvpSessions    []ygot.Annotation                                                                                                                                 `path:"state/@associated-rsvp-sessions" ygotAnnotation:"true"`
	CspfMetric                 *uint64                                                                                                                                           `path:"state/cspf-metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCspfMetric                []ygot.Annotation                                                                                                                                 `path:"state/@cspf-metric" ygotAnnotation:"true"`
	CspfTiebreaker             E_Mpls_CspfTieBreaking                                                                                                                            `path:"config/cspf-tiebreaker" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCspfTiebreaker            []ygot.Annotation                                                                                                                                 `path:"config/@cspf-tiebreaker" ygotAnnotation:"true"`
	ExplicitPathName           *string                                                                                                                                           `path:"config/explicit-path-name" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExplicitPathName          []ygot.Annotation                                                                                                                                 `path:"config/@explicit-path-name" ygotAnnotation:"true"`
	HoldPriority               *uint8                                                                                                                                            `path:"config/hold-priority" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHoldPriority              []ygot.Annotation                                                                                                                                 `path:"config/@hold-priority" ygotAnnotation:"true"`
	Name                       *string                                                                                                                                           `path:"config/name|name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛName                      []ygot.Annotation                                                                                                                                 `path:"config/@name|@name" ygotAnnotation:"true"`
	PathComputationMethod      E_MplsTypes_PATH_COMPUTATION_METHOD                                                                                                               `path:"config/path-computation-method" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPathComputationMethod     []ygot.Annotation                                                                                                                                 `path:"config/@path-computation-method" ygotAnnotation:"true"`
	PathComputationServer      *string                                                                                                                                           `path:"config/path-computation-server" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPathComputationServer     []ygot.Annotation                                                                                                                                 `path:"config/@path-computation-server" ygotAnnotation:"true"`
	PathControl                E_Pcep_LspControlType                                                                                                                             `path:"config/path-control" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPathControl               []ygot.Annotation                                                                                                                                 `path:"config/@path-control" ygotAnnotation:"true"`
	PathMetricBoundConstraint  map[E_MplsTypes_PATH_METRIC_TYPE]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint `path:"path-metric-bound-constraints/path-metric-bound-constraint" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPathMetricBoundConstraint []ygot.Annotation                                                                                                                                 `path:"path-metric-bound-constraints/@path-metric-bound-constraint" ygotAnnotation:"true"`
	Preference                 *uint8                                                                                                                                            `path:"config/preference" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreference                []ygot.Annotation                                                                                                                                 `path:"config/@preference" ygotAnnotation:"true"`
	RetryTimer                 *uint16                                                                                                                                           `path:"config/retry-timer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRetryTimer                []ygot.Annotation                                                                                                                                 `path:"config/@retry-timer" ygotAnnotation:"true"`
	SetupPriority              *uint8                                                                                                                                            `path:"config/setup-priority" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSetupPriority             []ygot.Annotation                                                                                                                                 `path:"config/@setup-priority" ygotAnnotation:"true"`
	SpfMetric                  *uint64                                                                                                                                           `path:"state/spf-metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSpfMetric                 []ygot.Annotation                                                                                                                                 `path:"state/@spf-metric" ygotAnnotation:"true"`
	UseCspf                    *bool                                                                                                                                             `path:"config/use-cspf" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUseCspf                   []ygot.Annotation                                                                                                                                 `path:"config/@use-cspf" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) IsYANGGoStruct() {
}

// NewPathMetricBoundConstraint creates a new entry in the PathMetricBoundConstraint list of the
// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) NewPathMetricBoundConstraint(Type E_MplsTypes_PATH_METRIC_TYPE) (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PathMetricBoundConstraint == nil {
		t.PathMetricBoundConstraint = make(map[E_MplsTypes_PATH_METRIC_TYPE]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.PathMetricBoundConstraint[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list PathMetricBoundConstraint", key)
	}

	t.PathMetricBoundConstraint[key] = &NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint{
		Type: Type,
	}

	return t.PathMetricBoundConstraint[key], nil
}

// RenamePathMetricBoundConstraint renames an entry in the list PathMetricBoundConstraint within
// the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) RenamePathMetricBoundConstraint(oldK, newK E_MplsTypes_PATH_METRIC_TYPE) error {
	if _, ok := t.PathMetricBoundConstraint[newK]; ok {
		return fmt.Errorf("key %v already exists in PathMetricBoundConstraint", newK)
	}

	e, ok := t.PathMetricBoundConstraint[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in PathMetricBoundConstraint", oldK)
	}
	e.Type = newK

	t.PathMetricBoundConstraint[newK] = e
	delete(t.PathMetricBoundConstraint, oldK)
	return nil
}

// GetOrCreatePathMetricBoundConstraintMap returns the list (map) from NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetOrCreatePathMetricBoundConstraintMap() map[E_MplsTypes_PATH_METRIC_TYPE]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint {
	if t.PathMetricBoundConstraint == nil {
		t.PathMetricBoundConstraint = make(map[E_MplsTypes_PATH_METRIC_TYPE]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint)
	}
	return t.PathMetricBoundConstraint
}

// GetOrCreatePathMetricBoundConstraint retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetOrCreatePathMetricBoundConstraint(Type E_MplsTypes_PATH_METRIC_TYPE) *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint {

	key := Type

	if v, ok := t.PathMetricBoundConstraint[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPathMetricBoundConstraint(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePathMetricBoundConstraint got unexpected error: %v", err))
	}
	return v
}

// GetPathMetricBoundConstraint retrieves the value with the specified key from
// the PathMetricBoundConstraint map field of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetPathMetricBoundConstraint(Type E_MplsTypes_PATH_METRIC_TYPE) *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.PathMetricBoundConstraint[key]; ok {
		return lm
	}
	return nil
}

// AppendPathMetricBoundConstraint appends the supplied NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint struct to the
// list PathMetricBoundConstraint of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) AppendPathMetricBoundConstraint(v *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint) error {
	key := v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PathMetricBoundConstraint == nil {
		t.PathMetricBoundConstraint = make(map[E_MplsTypes_PATH_METRIC_TYPE]*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint)
	}

	if _, ok := t.PathMetricBoundConstraint[key]; ok {
		return fmt.Errorf("duplicate key for list PathMetricBoundConstraint %v", key)
	}

	t.PathMetricBoundConstraint[key] = v
	return nil
}

// GetOrCreateAdminGroups retrieves the value of the AdminGroups field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetOrCreateAdminGroups() *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups {
	if t.AdminGroups != nil {
		return t.AdminGroups
	}
	t.AdminGroups = &NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups{}
	return t.AdminGroups
}

// GetAdminGroups returns the value of the AdminGroups struct pointer
// from NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath. If the receiver or the field AdminGroups is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetAdminGroups() *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups {
	if t != nil && t.AdminGroups != nil {
		return t.AdminGroups
	}
	return nil
}

// GetAssociatedRsvpSessions retrieves the value of the leaf AssociatedRsvpSessions from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AssociatedRsvpSessions is set, it can
// safely use t.GetAssociatedRsvpSessions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AssociatedRsvpSessions == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetAssociatedRsvpSessions() []uint64 {
	if t == nil || t.AssociatedRsvpSessions == nil {
		return nil
	}
	return t.AssociatedRsvpSessions
}

// GetCspfMetric retrieves the value of the leaf CspfMetric from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CspfMetric is set, it can
// safely use t.GetCspfMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CspfMetric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetCspfMetric() uint64 {
	if t == nil || t.CspfMetric == nil {
		return 0
	}
	return *t.CspfMetric
}

// GetCspfTiebreaker retrieves the value of the leaf CspfTiebreaker from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CspfTiebreaker is set, it can
// safely use t.GetCspfTiebreaker() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CspfTiebreaker == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetCspfTiebreaker() E_Mpls_CspfTieBreaking {
	if t == nil || t.CspfTiebreaker == 0 {
		return Mpls_CspfTieBreaking_RANDOM
	}
	return t.CspfTiebreaker
}

// GetExplicitPathName retrieves the value of the leaf ExplicitPathName from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExplicitPathName is set, it can
// safely use t.GetExplicitPathName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExplicitPathName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetExplicitPathName() string {
	if t == nil || t.ExplicitPathName == nil {
		return ""
	}
	return *t.ExplicitPathName
}

// GetHoldPriority retrieves the value of the leaf HoldPriority from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HoldPriority is set, it can
// safely use t.GetHoldPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HoldPriority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetHoldPriority() uint8 {
	if t == nil || t.HoldPriority == nil {
		return 0
	}
	return *t.HoldPriority
}

// GetName retrieves the value of the leaf Name from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetPathComputationMethod retrieves the value of the leaf PathComputationMethod from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathComputationMethod is set, it can
// safely use t.GetPathComputationMethod() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathComputationMethod == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetPathComputationMethod() E_MplsTypes_PATH_COMPUTATION_METHOD {
	if t == nil || t.PathComputationMethod == 0 {
		return MplsTypes_PATH_COMPUTATION_METHOD_LOCALLY_COMPUTED
	}
	return t.PathComputationMethod
}

// GetPathComputationServer retrieves the value of the leaf PathComputationServer from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathComputationServer is set, it can
// safely use t.GetPathComputationServer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathComputationServer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetPathComputationServer() string {
	if t == nil || t.PathComputationServer == nil {
		return ""
	}
	return *t.PathComputationServer
}

// GetPathControl retrieves the value of the leaf PathControl from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathControl is set, it can
// safely use t.GetPathControl() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathControl == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetPathControl() E_Pcep_LspControlType {
	if t == nil || t.PathControl == 0 {
		return 0
	}
	return t.PathControl
}

// GetPreference retrieves the value of the leaf Preference from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Preference is set, it can
// safely use t.GetPreference() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Preference == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetPreference() uint8 {
	if t == nil || t.Preference == nil {
		return 0
	}
	return *t.Preference
}

// GetRetryTimer retrieves the value of the leaf RetryTimer from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RetryTimer is set, it can
// safely use t.GetRetryTimer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RetryTimer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetRetryTimer() uint16 {
	if t == nil || t.RetryTimer == nil {
		return 0
	}
	return *t.RetryTimer
}

// GetSetupPriority retrieves the value of the leaf SetupPriority from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SetupPriority is set, it can
// safely use t.GetSetupPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SetupPriority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetSetupPriority() uint8 {
	if t == nil || t.SetupPriority == nil {
		return 7
	}
	return *t.SetupPriority
}

// GetSpfMetric retrieves the value of the leaf SpfMetric from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SpfMetric is set, it can
// safely use t.GetSpfMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SpfMetric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetSpfMetric() uint64 {
	if t == nil || t.SpfMetric == nil {
		return 0
	}
	return *t.SpfMetric
}

// GetUseCspf retrieves the value of the leaf UseCspf from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UseCspf is set, it can
// safely use t.GetUseCspf() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UseCspf == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) GetUseCspf() bool {
	if t == nil || t.UseCspf == nil {
		return false
	}
	return *t.UseCspf
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.CspfTiebreaker == 0 {
		t.CspfTiebreaker = Mpls_CspfTieBreaking_RANDOM
	}
	if t.HoldPriority == nil {
		var v uint8 = 0
		t.HoldPriority = &v
	}
	if t.PathComputationMethod == 0 {
		t.PathComputationMethod = MplsTypes_PATH_COMPUTATION_METHOD_LOCALLY_COMPUTED
	}
	if t.SetupPriority == nil {
		var v uint8 = 7
		t.SetupPriority = &v
	}
	t.AdminGroups.PopulateDefaults()
	for _, e := range t.PathMetricBoundConstraint {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-secondary-paths/p2p-secondary-path/admin-groups YANG schema element.
type NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ExcludeGroup     []string          `path:"config/exclude-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExcludeGroup    []ygot.Annotation `path:"config/@exclude-group" ygotAnnotation:"true"`
	IncludeAllGroup  []string          `path:"config/include-all-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIncludeAllGroup []ygot.Annotation `path:"config/@include-all-group" ygotAnnotation:"true"`
	IncludeAnyGroup  []string          `path:"config/include-any-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIncludeAnyGroup []ygot.Annotation `path:"config/@include-any-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups) IsYANGGoStruct() {
}

// GetExcludeGroup retrieves the value of the leaf ExcludeGroup from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExcludeGroup is set, it can
// safely use t.GetExcludeGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExcludeGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups) GetExcludeGroup() []string {
	if t == nil || t.ExcludeGroup == nil {
		return nil
	}
	return t.ExcludeGroup
}

// GetIncludeAllGroup retrieves the value of the leaf IncludeAllGroup from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IncludeAllGroup is set, it can
// safely use t.GetIncludeAllGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IncludeAllGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups) GetIncludeAllGroup() []string {
	if t == nil || t.IncludeAllGroup == nil {
		return nil
	}
	return t.IncludeAllGroup
}

// GetIncludeAnyGroup retrieves the value of the leaf IncludeAnyGroup from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IncludeAnyGroup is set, it can
// safely use t.GetIncludeAnyGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IncludeAnyGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups) GetIncludeAnyGroup() []string {
	if t == nil || t.IncludeAnyGroup == nil {
		return nil
	}
	return t.IncludeAnyGroup
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_AdminGroups) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-secondary-paths/p2p-secondary-path/path-metric-bound-constraints/path-metric-bound-constraint YANG schema element.
type NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint struct {
	ΛMetadata         []ygot.Annotation            `path:"@" ygotAnnotation:"true"`
	MetricUpperBound  *uint64                      `path:"config/metric-upper-bound" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetricUpperBound []ygot.Annotation            `path:"config/@metric-upper-bound" ygotAnnotation:"true"`
	Type              E_MplsTypes_PATH_METRIC_TYPE `path:"config/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType             []ygot.Annotation            `path:"config/@type|@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint) IsYANGGoStruct() {
}

// GetMetricUpperBound retrieves the value of the leaf MetricUpperBound from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MetricUpperBound is set, it can
// safely use t.GetMetricUpperBound() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MetricUpperBound == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint) GetMetricUpperBound() uint64 {
	if t == nil || t.MetricUpperBound == nil {
		return 0
	}
	return *t.MetricUpperBound
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint) GetType() E_MplsTypes_PATH_METRIC_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MetricUpperBound == nil {
		var v uint64 = 0
		t.MetricUpperBound = &v
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"type": t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint.
func (*NetworkInstance_Mpls_Lsps_ConstrainedPath_Tunnel_P2PTunnelAttributes_P2PSecondaryPath_PathMetricBoundConstraint) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_StaticLsp represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp YANG schema element.
type NetworkInstance_Mpls_Lsps_StaticLsp struct {
	ΛMetadata []ygot.Annotation                            `path:"@" ygotAnnotation:"true"`
	Egress    *NetworkInstance_Mpls_Lsps_StaticLsp_Egress  `path:"egress" module:"openconfig-network-instance"`
	ΛEgress   []ygot.Annotation                            `path:"@egress" ygotAnnotation:"true"`
	Ingress   *NetworkInstance_Mpls_Lsps_StaticLsp_Ingress `path:"ingress" module:"openconfig-network-instance"`
	ΛIngress  []ygot.Annotation                            `path:"@ingress" ygotAnnotation:"true"`
	Name      *string                                      `path:"config/name|name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛName     []ygot.Annotation                            `path:"config/@name|@name" ygotAnnotation:"true"`
	Transit   *NetworkInstance_Mpls_Lsps_StaticLsp_Transit `path:"transit" module:"openconfig-network-instance"`
	ΛTransit  []ygot.Annotation                            `path:"@transit" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_StaticLsp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_StaticLsp) IsYANGGoStruct() {}

// GetOrCreateEgress retrieves the value of the Egress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp) GetOrCreateEgress() *NetworkInstance_Mpls_Lsps_StaticLsp_Egress {
	if t.Egress != nil {
		return t.Egress
	}
	t.Egress = &NetworkInstance_Mpls_Lsps_StaticLsp_Egress{}
	return t.Egress
}

// GetOrCreateIngress retrieves the value of the Ingress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp) GetOrCreateIngress() *NetworkInstance_Mpls_Lsps_StaticLsp_Ingress {
	if t.Ingress != nil {
		return t.Ingress
	}
	t.Ingress = &NetworkInstance_Mpls_Lsps_StaticLsp_Ingress{}
	return t.Ingress
}

// GetOrCreateTransit retrieves the value of the Transit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp) GetOrCreateTransit() *NetworkInstance_Mpls_Lsps_StaticLsp_Transit {
	if t.Transit != nil {
		return t.Transit
	}
	t.Transit = &NetworkInstance_Mpls_Lsps_StaticLsp_Transit{}
	return t.Transit
}

// GetEgress returns the value of the Egress struct pointer
// from NetworkInstance_Mpls_Lsps_StaticLsp. If the receiver or the field Egress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp) GetEgress() *NetworkInstance_Mpls_Lsps_StaticLsp_Egress {
	if t != nil && t.Egress != nil {
		return t.Egress
	}
	return nil
}

// GetIngress returns the value of the Ingress struct pointer
// from NetworkInstance_Mpls_Lsps_StaticLsp. If the receiver or the field Ingress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp) GetIngress() *NetworkInstance_Mpls_Lsps_StaticLsp_Ingress {
	if t != nil && t.Ingress != nil {
		return t.Ingress
	}
	return nil
}

// GetTransit returns the value of the Transit struct pointer
// from NetworkInstance_Mpls_Lsps_StaticLsp. If the receiver or the field Transit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp) GetTransit() *NetworkInstance_Mpls_Lsps_StaticLsp_Transit {
	if t != nil && t.Transit != nil {
		return t.Transit
	}
	return nil
}

// GetName retrieves the value of the leaf Name from the NetworkInstance_Mpls_Lsps_StaticLsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_StaticLsp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Egress.PopulateDefaults()
	t.Ingress.PopulateDefaults()
	t.Transit.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_Lsps_StaticLsp struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_StaticLsp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_StaticLsp.
func (*NetworkInstance_Mpls_Lsps_StaticLsp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_StaticLsp_Egress represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/egress YANG schema element.
type NetworkInstance_Mpls_Lsps_StaticLsp_Egress struct {
	ΛMetadata      []ygot.Annotation                                              `path:"@" ygotAnnotation:"true"`
	IncomingLabel  NetworkInstance_Mpls_Lsps_StaticLsp_Egress_IncomingLabel_Union `path:"config/incoming-label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIncomingLabel []ygot.Annotation                                              `path:"config/@incoming-label" ygotAnnotation:"true"`
	Interface      *string                                                        `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface     []ygot.Annotation                                              `path:"config/@interface" ygotAnnotation:"true"`
	Metric         *uint8                                                         `path:"config/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric        []ygot.Annotation                                              `path:"config/@metric" ygotAnnotation:"true"`
	NextHop        *string                                                        `path:"config/next-hop" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHop       []ygot.Annotation                                              `path:"config/@next-hop" ygotAnnotation:"true"`
	PushLabel      NetworkInstance_Mpls_Lsps_StaticLsp_Egress_PushLabel_Union     `path:"config/push-label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPushLabel     []ygot.Annotation                                              `path:"config/@push-label" ygotAnnotation:"true"`
	Subinterface   *uint32                                                        `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface  []ygot.Annotation                                              `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_StaticLsp_Egress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_StaticLsp_Egress) IsYANGGoStruct() {}

// GetIncomingLabel retrieves the value of the leaf IncomingLabel from the NetworkInstance_Mpls_Lsps_StaticLsp_Egress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IncomingLabel is set, it can
// safely use t.GetIncomingLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IncomingLabel == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Egress) GetIncomingLabel() NetworkInstance_Mpls_Lsps_StaticLsp_Egress_IncomingLabel_Union {
	if t == nil || t.IncomingLabel == nil {
		return nil
	}
	return t.IncomingLabel
}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Mpls_Lsps_StaticLsp_Egress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Egress) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Mpls_Lsps_StaticLsp_Egress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Egress) GetMetric() uint8 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetNextHop retrieves the value of the leaf NextHop from the NetworkInstance_Mpls_Lsps_StaticLsp_Egress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHop is set, it can
// safely use t.GetNextHop() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHop == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Egress) GetNextHop() string {
	if t == nil || t.NextHop == nil {
		return ""
	}
	return *t.NextHop
}

// GetPushLabel retrieves the value of the leaf PushLabel from the NetworkInstance_Mpls_Lsps_StaticLsp_Egress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PushLabel is set, it can
// safely use t.GetPushLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PushLabel == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Egress) GetPushLabel() NetworkInstance_Mpls_Lsps_StaticLsp_Egress_PushLabel_Union {
	if t == nil || t.PushLabel == nil {
		return nil
	}
	return t.PushLabel
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Mpls_Lsps_StaticLsp_Egress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Egress) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_StaticLsp_Egress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Egress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Egress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_StaticLsp_Egress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Egress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Egress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_StaticLsp_Egress.
func (*NetworkInstance_Mpls_Lsps_StaticLsp_Egress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_StaticLsp_Egress_IncomingLabel_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/egress/config/incoming-label within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Mpls_Lsps_StaticLsp_Egress_IncomingLabel_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Egress_IncomingLabel_Union()
}

// Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Egress_IncomingLabel_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Mpls_Lsps_StaticLsp_Egress_IncomingLabel_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Egress_IncomingLabel_Union() {
}

// Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Egress_IncomingLabel_Union ensures that UnionUint32
// implements the NetworkInstance_Mpls_Lsps_StaticLsp_Egress_IncomingLabel_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Egress_IncomingLabel_Union() {
}

// To_NetworkInstance_Mpls_Lsps_StaticLsp_Egress_IncomingLabel_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Mpls_Lsps_StaticLsp_Egress_IncomingLabel_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Egress) To_NetworkInstance_Mpls_Lsps_StaticLsp_Egress_IncomingLabel_Union(i interface{}) (NetworkInstance_Mpls_Lsps_StaticLsp_Egress_IncomingLabel_Union, error) {
	if v, ok := i.(NetworkInstance_Mpls_Lsps_StaticLsp_Egress_IncomingLabel_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Mpls_Lsps_StaticLsp_Egress_IncomingLabel_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Mpls_Lsps_StaticLsp_Egress_PushLabel_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/egress/config/push-label within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Mpls_Lsps_StaticLsp_Egress_PushLabel_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Egress_PushLabel_Union()
}

// Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Egress_PushLabel_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Mpls_Lsps_StaticLsp_Egress_PushLabel_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Egress_PushLabel_Union() {
}

// Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Egress_PushLabel_Union ensures that UnionUint32
// implements the NetworkInstance_Mpls_Lsps_StaticLsp_Egress_PushLabel_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Egress_PushLabel_Union() {}

// To_NetworkInstance_Mpls_Lsps_StaticLsp_Egress_PushLabel_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Mpls_Lsps_StaticLsp_Egress_PushLabel_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Egress) To_NetworkInstance_Mpls_Lsps_StaticLsp_Egress_PushLabel_Union(i interface{}) (NetworkInstance_Mpls_Lsps_StaticLsp_Egress_PushLabel_Union, error) {
	if v, ok := i.(NetworkInstance_Mpls_Lsps_StaticLsp_Egress_PushLabel_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Mpls_Lsps_StaticLsp_Egress_PushLabel_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Mpls_Lsps_StaticLsp_Ingress represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/ingress YANG schema element.
type NetworkInstance_Mpls_Lsps_StaticLsp_Ingress struct {
	ΛMetadata      []ygot.Annotation                                               `path:"@" ygotAnnotation:"true"`
	IncomingLabel  NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_IncomingLabel_Union `path:"config/incoming-label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIncomingLabel []ygot.Annotation                                               `path:"config/@incoming-label" ygotAnnotation:"true"`
	Interface      *string                                                         `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface     []ygot.Annotation                                               `path:"config/@interface" ygotAnnotation:"true"`
	Metric         *uint8                                                          `path:"config/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric        []ygot.Annotation                                               `path:"config/@metric" ygotAnnotation:"true"`
	NextHop        *string                                                         `path:"config/next-hop" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHop       []ygot.Annotation                                               `path:"config/@next-hop" ygotAnnotation:"true"`
	PushLabel      NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_PushLabel_Union     `path:"config/push-label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPushLabel     []ygot.Annotation                                               `path:"config/@push-label" ygotAnnotation:"true"`
	Subinterface   *uint32                                                         `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface  []ygot.Annotation                                               `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_StaticLsp_Ingress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_StaticLsp_Ingress) IsYANGGoStruct() {}

// GetIncomingLabel retrieves the value of the leaf IncomingLabel from the NetworkInstance_Mpls_Lsps_StaticLsp_Ingress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IncomingLabel is set, it can
// safely use t.GetIncomingLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IncomingLabel == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Ingress) GetIncomingLabel() NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_IncomingLabel_Union {
	if t == nil || t.IncomingLabel == nil {
		return nil
	}
	return t.IncomingLabel
}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Mpls_Lsps_StaticLsp_Ingress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Ingress) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Mpls_Lsps_StaticLsp_Ingress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Ingress) GetMetric() uint8 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetNextHop retrieves the value of the leaf NextHop from the NetworkInstance_Mpls_Lsps_StaticLsp_Ingress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHop is set, it can
// safely use t.GetNextHop() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHop == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Ingress) GetNextHop() string {
	if t == nil || t.NextHop == nil {
		return ""
	}
	return *t.NextHop
}

// GetPushLabel retrieves the value of the leaf PushLabel from the NetworkInstance_Mpls_Lsps_StaticLsp_Ingress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PushLabel is set, it can
// safely use t.GetPushLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PushLabel == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Ingress) GetPushLabel() NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_PushLabel_Union {
	if t == nil || t.PushLabel == nil {
		return nil
	}
	return t.PushLabel
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Mpls_Lsps_StaticLsp_Ingress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Ingress) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_StaticLsp_Ingress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Ingress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Ingress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_StaticLsp_Ingress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Ingress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Ingress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_StaticLsp_Ingress.
func (*NetworkInstance_Mpls_Lsps_StaticLsp_Ingress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_IncomingLabel_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/ingress/config/incoming-label within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_IncomingLabel_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_IncomingLabel_Union()
}

// Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_IncomingLabel_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_IncomingLabel_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_IncomingLabel_Union() {
}

// Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_IncomingLabel_Union ensures that UnionUint32
// implements the NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_IncomingLabel_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_IncomingLabel_Union() {
}

// To_NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_IncomingLabel_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_IncomingLabel_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Ingress) To_NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_IncomingLabel_Union(i interface{}) (NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_IncomingLabel_Union, error) {
	if v, ok := i.(NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_IncomingLabel_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_IncomingLabel_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_PushLabel_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/ingress/config/push-label within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_PushLabel_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_PushLabel_Union()
}

// Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_PushLabel_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_PushLabel_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_PushLabel_Union() {
}

// Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_PushLabel_Union ensures that UnionUint32
// implements the NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_PushLabel_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_PushLabel_Union() {}

// To_NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_PushLabel_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_PushLabel_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Ingress) To_NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_PushLabel_Union(i interface{}) (NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_PushLabel_Union, error) {
	if v, ok := i.(NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_PushLabel_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Mpls_Lsps_StaticLsp_Ingress_PushLabel_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Mpls_Lsps_StaticLsp_Transit represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/transit YANG schema element.
type NetworkInstance_Mpls_Lsps_StaticLsp_Transit struct {
	ΛMetadata      []ygot.Annotation                                               `path:"@" ygotAnnotation:"true"`
	IncomingLabel  NetworkInstance_Mpls_Lsps_StaticLsp_Transit_IncomingLabel_Union `path:"config/incoming-label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIncomingLabel []ygot.Annotation                                               `path:"config/@incoming-label" ygotAnnotation:"true"`
	Interface      *string                                                         `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface     []ygot.Annotation                                               `path:"config/@interface" ygotAnnotation:"true"`
	Metric         *uint8                                                          `path:"config/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric        []ygot.Annotation                                               `path:"config/@metric" ygotAnnotation:"true"`
	NextHop        *string                                                         `path:"config/next-hop" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHop       []ygot.Annotation                                               `path:"config/@next-hop" ygotAnnotation:"true"`
	PushLabel      NetworkInstance_Mpls_Lsps_StaticLsp_Transit_PushLabel_Union     `path:"config/push-label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPushLabel     []ygot.Annotation                                               `path:"config/@push-label" ygotAnnotation:"true"`
	Subinterface   *uint32                                                         `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface  []ygot.Annotation                                               `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_StaticLsp_Transit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_StaticLsp_Transit) IsYANGGoStruct() {}

// GetIncomingLabel retrieves the value of the leaf IncomingLabel from the NetworkInstance_Mpls_Lsps_StaticLsp_Transit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IncomingLabel is set, it can
// safely use t.GetIncomingLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IncomingLabel == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Transit) GetIncomingLabel() NetworkInstance_Mpls_Lsps_StaticLsp_Transit_IncomingLabel_Union {
	if t == nil || t.IncomingLabel == nil {
		return nil
	}
	return t.IncomingLabel
}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Mpls_Lsps_StaticLsp_Transit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Transit) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Mpls_Lsps_StaticLsp_Transit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Transit) GetMetric() uint8 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetNextHop retrieves the value of the leaf NextHop from the NetworkInstance_Mpls_Lsps_StaticLsp_Transit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHop is set, it can
// safely use t.GetNextHop() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHop == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Transit) GetNextHop() string {
	if t == nil || t.NextHop == nil {
		return ""
	}
	return *t.NextHop
}

// GetPushLabel retrieves the value of the leaf PushLabel from the NetworkInstance_Mpls_Lsps_StaticLsp_Transit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PushLabel is set, it can
// safely use t.GetPushLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PushLabel == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Transit) GetPushLabel() NetworkInstance_Mpls_Lsps_StaticLsp_Transit_PushLabel_Union {
	if t == nil || t.PushLabel == nil {
		return nil
	}
	return t.PushLabel
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Mpls_Lsps_StaticLsp_Transit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Transit) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_StaticLsp_Transit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Transit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Transit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_StaticLsp_Transit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Transit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Transit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_StaticLsp_Transit.
func (*NetworkInstance_Mpls_Lsps_StaticLsp_Transit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_StaticLsp_Transit_IncomingLabel_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/transit/config/incoming-label within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Mpls_Lsps_StaticLsp_Transit_IncomingLabel_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Transit_IncomingLabel_Union()
}

// Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Transit_IncomingLabel_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Mpls_Lsps_StaticLsp_Transit_IncomingLabel_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Transit_IncomingLabel_Union() {
}

// Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Transit_IncomingLabel_Union ensures that UnionUint32
// implements the NetworkInstance_Mpls_Lsps_StaticLsp_Transit_IncomingLabel_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Transit_IncomingLabel_Union() {
}

// To_NetworkInstance_Mpls_Lsps_StaticLsp_Transit_IncomingLabel_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Mpls_Lsps_StaticLsp_Transit_IncomingLabel_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Transit) To_NetworkInstance_Mpls_Lsps_StaticLsp_Transit_IncomingLabel_Union(i interface{}) (NetworkInstance_Mpls_Lsps_StaticLsp_Transit_IncomingLabel_Union, error) {
	if v, ok := i.(NetworkInstance_Mpls_Lsps_StaticLsp_Transit_IncomingLabel_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Mpls_Lsps_StaticLsp_Transit_IncomingLabel_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Mpls_Lsps_StaticLsp_Transit_PushLabel_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/transit/config/push-label within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Mpls_Lsps_StaticLsp_Transit_PushLabel_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Transit_PushLabel_Union()
}

// Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Transit_PushLabel_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Mpls_Lsps_StaticLsp_Transit_PushLabel_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Transit_PushLabel_Union() {
}

// Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Transit_PushLabel_Union ensures that UnionUint32
// implements the NetworkInstance_Mpls_Lsps_StaticLsp_Transit_PushLabel_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Mpls_Lsps_StaticLsp_Transit_PushLabel_Union() {}

// To_NetworkInstance_Mpls_Lsps_StaticLsp_Transit_PushLabel_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Mpls_Lsps_StaticLsp_Transit_PushLabel_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Mpls_Lsps_StaticLsp_Transit) To_NetworkInstance_Mpls_Lsps_StaticLsp_Transit_PushLabel_Union(i interface{}) (NetworkInstance_Mpls_Lsps_StaticLsp_Transit_PushLabel_Union, error) {
	if v, ok := i.(NetworkInstance_Mpls_Lsps_StaticLsp_Transit_PushLabel_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Mpls_Lsps_StaticLsp_Transit_PushLabel_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Mpls_Lsps_UnconstrainedPath represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/unconstrained-path YANG schema element.
type NetworkInstance_Mpls_Lsps_UnconstrainedPath struct {
	ΛMetadata          []ygot.Annotation                                              `path:"@" ygotAnnotation:"true"`
	PathSetupProtocol  *NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol `path:"path-setup-protocol" module:"openconfig-network-instance"`
	ΛPathSetupProtocol []ygot.Annotation                                              `path:"@path-setup-protocol" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_UnconstrainedPath implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_UnconstrainedPath) IsYANGGoStruct() {}

// GetOrCreatePathSetupProtocol retrieves the value of the PathSetupProtocol field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Lsps_UnconstrainedPath) GetOrCreatePathSetupProtocol() *NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol {
	if t.PathSetupProtocol != nil {
		return t.PathSetupProtocol
	}
	t.PathSetupProtocol = &NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol{}
	return t.PathSetupProtocol
}

// GetPathSetupProtocol returns the value of the PathSetupProtocol struct pointer
// from NetworkInstance_Mpls_Lsps_UnconstrainedPath. If the receiver or the field PathSetupProtocol is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Lsps_UnconstrainedPath) GetPathSetupProtocol() *NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol {
	if t != nil && t.PathSetupProtocol != nil {
		return t.PathSetupProtocol
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_UnconstrainedPath
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_UnconstrainedPath) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PathSetupProtocol.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_UnconstrainedPath) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_UnconstrainedPath"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_UnconstrainedPath) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_UnconstrainedPath) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_UnconstrainedPath.
func (*NetworkInstance_Mpls_Lsps_UnconstrainedPath) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/unconstrained-path/path-setup-protocol YANG schema element.
type NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol struct {
	ΛMetadata []ygot.Annotation                                                  `path:"@" ygotAnnotation:"true"`
	Ldp       *NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol_Ldp `path:"ldp" module:"openconfig-network-instance"`
	ΛLdp      []ygot.Annotation                                                  `path:"@ldp" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol) IsYANGGoStruct() {}

// GetOrCreateLdp retrieves the value of the Ldp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol) GetOrCreateLdp() *NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol_Ldp {
	if t.Ldp != nil {
		return t.Ldp
	}
	t.Ldp = &NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol_Ldp{}
	return t.Ldp
}

// GetLdp returns the value of the Ldp struct pointer
// from NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol. If the receiver or the field Ldp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol) GetLdp() *NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol_Ldp {
	if t != nil && t.Ldp != nil {
		return t.Ldp
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Ldp.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol.
func (*NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol_Ldp represents the /openconfig-network-instance/network-instances/network-instance/mpls/lsps/unconstrained-path/path-setup-protocol/ldp YANG schema element.
type NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol_Ldp struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol_Ldp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol_Ldp) IsYANGGoStruct() {}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol_Ldp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol_Ldp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol_Ldp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol_Ldp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol_Ldp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol_Ldp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol_Ldp.
func (*NetworkInstance_Mpls_Lsps_UnconstrainedPath_PathSetupProtocol_Ldp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols struct {
	ΛMetadata       []ygot.Annotation                                       `path:"@" ygotAnnotation:"true"`
	Ldp             *NetworkInstance_Mpls_SignalingProtocols_Ldp            `path:"ldp" module:"openconfig-network-instance"`
	ΛLdp            []ygot.Annotation                                       `path:"@ldp" ygotAnnotation:"true"`
	RsvpTe          *NetworkInstance_Mpls_SignalingProtocols_RsvpTe         `path:"rsvp-te" module:"openconfig-network-instance"`
	ΛRsvpTe         []ygot.Annotation                                       `path:"@rsvp-te" ygotAnnotation:"true"`
	SegmentRouting  *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting `path:"segment-routing" module:"openconfig-network-instance"`
	ΛSegmentRouting []ygot.Annotation                                       `path:"@segment-routing" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols) IsYANGGoStruct() {}

// GetOrCreateLdp retrieves the value of the Ldp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols) GetOrCreateLdp() *NetworkInstance_Mpls_SignalingProtocols_Ldp {
	if t.Ldp != nil {
		return t.Ldp
	}
	t.Ldp = &NetworkInstance_Mpls_SignalingProtocols_Ldp{}
	return t.Ldp
}

// GetOrCreateRsvpTe retrieves the value of the RsvpTe field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols) GetOrCreateRsvpTe() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe {
	if t.RsvpTe != nil {
		return t.RsvpTe
	}
	t.RsvpTe = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe{}
	return t.RsvpTe
}

// GetOrCreateSegmentRouting retrieves the value of the SegmentRouting field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols) GetOrCreateSegmentRouting() *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting {
	if t.SegmentRouting != nil {
		return t.SegmentRouting
	}
	t.SegmentRouting = &NetworkInstance_Mpls_SignalingProtocols_SegmentRouting{}
	return t.SegmentRouting
}

// GetLdp returns the value of the Ldp struct pointer
// from NetworkInstance_Mpls_SignalingProtocols. If the receiver or the field Ldp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols) GetLdp() *NetworkInstance_Mpls_SignalingProtocols_Ldp {
	if t != nil && t.Ldp != nil {
		return t.Ldp
	}
	return nil
}

// GetRsvpTe returns the value of the RsvpTe struct pointer
// from NetworkInstance_Mpls_SignalingProtocols. If the receiver or the field RsvpTe is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols) GetRsvpTe() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe {
	if t != nil && t.RsvpTe != nil {
		return t.RsvpTe
	}
	return nil
}

// GetSegmentRouting returns the value of the SegmentRouting struct pointer
// from NetworkInstance_Mpls_SignalingProtocols. If the receiver or the field SegmentRouting is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols) GetSegmentRouting() *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting {
	if t != nil && t.SegmentRouting != nil {
		return t.SegmentRouting
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Ldp.PopulateDefaults()
	t.RsvpTe.PopulateDefaults()
	t.SegmentRouting.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols.
func (*NetworkInstance_Mpls_SignalingProtocols) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_Ldp represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_Ldp struct {
	ΛMetadata            []ygot.Annotation                                                                                                  `path:"@" ygotAnnotation:"true"`
	Global               *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global                                                                `path:"global" module:"openconfig-network-instance"`
	ΛGlobal              []ygot.Annotation                                                                                                  `path:"@global" ygotAnnotation:"true"`
	InterfaceAttributes  *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes                                                   `path:"interface-attributes" module:"openconfig-network-instance"`
	ΛInterfaceAttributes []ygot.Annotation                                                                                                  `path:"@interface-attributes" ygotAnnotation:"true"`
	Neighbor             map[NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Key]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor `path:"neighbors/neighbor" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighbor            []ygot.Annotation                                                                                                  `path:"neighbors/@neighbor" ygotAnnotation:"true"`
	Targeted             *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted                                                              `path:"targeted" module:"openconfig-network-instance"`
	ΛTargeted            []ygot.Annotation                                                                                                  `path:"@targeted" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp) IsYANGGoStruct() {}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Key represents the key for list Neighbor of element /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Key struct {
	LsrId        string `path:"lsr-id"`
	LabelSpaceId uint16 `path:"label-space-id"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Key key struct.
func (t NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"lsr-id":         t.LsrId,
		"label-space-id": t.LabelSpaceId,
	}, nil
}

// NewNeighbor creates a new entry in the Neighbor list of the
// NetworkInstance_Mpls_SignalingProtocols_Ldp struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp) NewNeighbor(LsrId string, LabelSpaceId uint16) (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Key]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor)
	}

	key := NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Key{
		LsrId:        LsrId,
		LabelSpaceId: LabelSpaceId,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor{
		LsrId:        &LsrId,
		LabelSpaceId: &LabelSpaceId,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the NetworkInstance_Mpls_SignalingProtocols_Ldp struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp) RenameNeighbor(oldK, newK NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Key) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.LsrId = &newK.LsrId
	e.LabelSpaceId = &newK.LabelSpaceId

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from NetworkInstance_Mpls_SignalingProtocols_Ldp.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp) GetOrCreateNeighborMap() map[NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Key]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Key]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_SignalingProtocols_Ldp. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp) GetOrCreateNeighbor(LsrId string, LabelSpaceId uint16) *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor {

	key := NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Key{
		LsrId:        LsrId,
		LabelSpaceId: LabelSpaceId,
	}

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(LsrId, LabelSpaceId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of NetworkInstance_Mpls_SignalingProtocols_Ldp. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp) GetNeighbor(LsrId string, LabelSpaceId uint16) *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Key{
		LsrId:        LsrId,
		LabelSpaceId: LabelSpaceId,
	}

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor struct to the
// list Neighbor of NetworkInstance_Mpls_SignalingProtocols_Ldp. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp) AppendNeighbor(v *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) error {
	if v.LsrId == nil {
		return fmt.Errorf("invalid nil key for LsrId")
	}

	if v.LabelSpaceId == nil {
		return fmt.Errorf("invalid nil key for LabelSpaceId")
	}

	key := NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Key{
		LsrId:        *v.LsrId,
		LabelSpaceId: *v.LabelSpaceId,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Key]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// GetOrCreateGlobal retrieves the value of the Global field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp) GetOrCreateGlobal() *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global {
	if t.Global != nil {
		return t.Global
	}
	t.Global = &NetworkInstance_Mpls_SignalingProtocols_Ldp_Global{}
	return t.Global
}

// GetOrCreateInterfaceAttributes retrieves the value of the InterfaceAttributes field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp) GetOrCreateInterfaceAttributes() *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes {
	if t.InterfaceAttributes != nil {
		return t.InterfaceAttributes
	}
	t.InterfaceAttributes = &NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes{}
	return t.InterfaceAttributes
}

// GetOrCreateTargeted retrieves the value of the Targeted field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp) GetOrCreateTargeted() *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted {
	if t.Targeted != nil {
		return t.Targeted
	}
	t.Targeted = &NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted{}
	return t.Targeted
}

// GetGlobal returns the value of the Global struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_Ldp. If the receiver or the field Global is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp) GetGlobal() *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global {
	if t != nil && t.Global != nil {
		return t.Global
	}
	return nil
}

// GetInterfaceAttributes returns the value of the InterfaceAttributes struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_Ldp. If the receiver or the field InterfaceAttributes is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp) GetInterfaceAttributes() *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes {
	if t != nil && t.InterfaceAttributes != nil {
		return t.InterfaceAttributes
	}
	return nil
}

// GetTargeted returns the value of the Targeted struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_Ldp. If the receiver or the field Targeted is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp) GetTargeted() *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted {
	if t != nil && t.Targeted != nil {
		return t.Targeted
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_Ldp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Global.PopulateDefaults()
	t.InterfaceAttributes.PopulateDefaults()
	t.Targeted.PopulateDefaults()
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_Ldp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_Ldp.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_Global represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp/global YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_Global struct {
	ΛMetadata        []ygot.Annotation                                                   `path:"@" ygotAnnotation:"true"`
	Authentication   *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication  `path:"authentication" module:"openconfig-network-instance"`
	ΛAuthentication  []ygot.Annotation                                                   `path:"@authentication" ygotAnnotation:"true"`
	GracefulRestart  *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart `path:"graceful-restart" module:"openconfig-network-instance"`
	ΛGracefulRestart []ygot.Annotation                                                   `path:"@graceful-restart" ygotAnnotation:"true"`
	LsrId            *string                                                             `path:"config/lsr-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLsrId           []ygot.Annotation                                                   `path:"config/@lsr-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_Global implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Global) IsYANGGoStruct() {}

// GetOrCreateAuthentication retrieves the value of the Authentication field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global) GetOrCreateAuthentication() *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication {
	if t.Authentication != nil {
		return t.Authentication
	}
	t.Authentication = &NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication{}
	return t.Authentication
}

// GetOrCreateGracefulRestart retrieves the value of the GracefulRestart field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global) GetOrCreateGracefulRestart() *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart {
	if t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	t.GracefulRestart = &NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart{}
	return t.GracefulRestart
}

// GetAuthentication returns the value of the Authentication struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_Ldp_Global. If the receiver or the field Authentication is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global) GetAuthentication() *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication {
	if t != nil && t.Authentication != nil {
		return t.Authentication
	}
	return nil
}

// GetGracefulRestart returns the value of the GracefulRestart struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_Ldp_Global. If the receiver or the field GracefulRestart is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global) GetGracefulRestart() *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart {
	if t != nil && t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	return nil
}

// GetLsrId retrieves the value of the leaf LsrId from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LsrId is set, it can
// safely use t.GetLsrId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LsrId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global) GetLsrId() string {
	if t == nil || t.LsrId == nil {
		return ""
	}
	return *t.LsrId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_Ldp_Global
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Authentication.PopulateDefaults()
	t.GracefulRestart.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_Ldp_Global"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_Ldp_Global.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Global) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp/global/authentication YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AuthenticationKey  *string           `path:"config/authentication-key" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthenticationKey []ygot.Annotation `path:"config/@authentication-key" ygotAnnotation:"true"`
	Enable             *bool             `path:"config/enable" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnable            []ygot.Annotation `path:"config/@enable" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication) IsYANGGoStruct() {}

// GetAuthenticationKey retrieves the value of the leaf AuthenticationKey from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthenticationKey is set, it can
// safely use t.GetAuthenticationKey() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthenticationKey == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication) GetAuthenticationKey() string {
	if t == nil || t.AuthenticationKey == nil {
		return ""
	}
	return *t.AuthenticationKey
}

// GetEnable retrieves the value of the leaf Enable from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enable is set, it can
// safely use t.GetEnable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enable == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication) GetEnable() bool {
	if t == nil || t.Enable == nil {
		return false
	}
	return *t.Enable
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enable == nil {
		var v bool = false
		t.Enable = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_Authentication) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp/global/graceful-restart YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled             *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled            []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
	ForwardingHoldtime  *uint16           `path:"config/forwarding-holdtime" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛForwardingHoldtime []ygot.Annotation `path:"config/@forwarding-holdtime" ygotAnnotation:"true"`
	HelperEnable        *bool             `path:"config/helper-enable" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelperEnable       []ygot.Annotation `path:"config/@helper-enable" ygotAnnotation:"true"`
	ReconnectTime       *uint16           `path:"config/reconnect-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReconnectTime      []ygot.Annotation `path:"config/@reconnect-time" ygotAnnotation:"true"`
	RecoveryTime        *uint16           `path:"config/recovery-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRecoveryTime       []ygot.Annotation `path:"config/@recovery-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetForwardingHoldtime retrieves the value of the leaf ForwardingHoldtime from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ForwardingHoldtime is set, it can
// safely use t.GetForwardingHoldtime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ForwardingHoldtime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart) GetForwardingHoldtime() uint16 {
	if t == nil || t.ForwardingHoldtime == nil {
		return 0
	}
	return *t.ForwardingHoldtime
}

// GetHelperEnable retrieves the value of the leaf HelperEnable from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelperEnable is set, it can
// safely use t.GetHelperEnable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelperEnable == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart) GetHelperEnable() bool {
	if t == nil || t.HelperEnable == nil {
		return false
	}
	return *t.HelperEnable
}

// GetReconnectTime retrieves the value of the leaf ReconnectTime from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReconnectTime is set, it can
// safely use t.GetReconnectTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReconnectTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart) GetReconnectTime() uint16 {
	if t == nil || t.ReconnectTime == nil {
		return 0
	}
	return *t.ReconnectTime
}

// GetRecoveryTime retrieves the value of the leaf RecoveryTime from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RecoveryTime is set, it can
// safely use t.GetRecoveryTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RecoveryTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart) GetRecoveryTime() uint16 {
	if t == nil || t.RecoveryTime == nil {
		return 0
	}
	return *t.RecoveryTime
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Global_GracefulRestart) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp/interface-attributes YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes struct {
	ΛMetadata      []ygot.Annotation                                                                     `path:"@" ygotAnnotation:"true"`
	HelloHoldtime  *uint16                                                                               `path:"config/hello-holdtime" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloHoldtime []ygot.Annotation                                                                     `path:"config/@hello-holdtime" ygotAnnotation:"true"`
	HelloInterval  *uint16                                                                               `path:"config/hello-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloInterval []ygot.Annotation                                                                     `path:"config/@hello-interval" ygotAnnotation:"true"`
	Interface      map[string]*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface `path:"interfaces/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface     []ygot.Annotation                                                                     `path:"interfaces/@interface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes) NewInterface(InterfaceId string) (*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface)
	}

	key := InterfaceId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface{
		InterfaceId: &InterfaceId,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.InterfaceId = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes) GetOrCreateInterfaceMap() map[string]*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes) GetOrCreateInterface(InterfaceId string) *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface {

	key := InterfaceId

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(InterfaceId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes) GetInterface(InterfaceId string) *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface {

	if t == nil {
		return nil
	}

	key := InterfaceId

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface struct to the
// list Interface of NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes) AppendInterface(v *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) error {
	if v.InterfaceId == nil {
		return fmt.Errorf("invalid nil key received for InterfaceId")
	}

	key := *v.InterfaceId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// GetHelloHoldtime retrieves the value of the leaf HelloHoldtime from the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloHoldtime is set, it can
// safely use t.GetHelloHoldtime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloHoldtime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes) GetHelloHoldtime() uint16 {
	if t == nil || t.HelloHoldtime == nil {
		return 0
	}
	return *t.HelloHoldtime
}

// GetHelloInterval retrieves the value of the leaf HelloInterval from the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloInterval is set, it can
// safely use t.GetHelloInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes) GetHelloInterval() uint16 {
	if t == nil || t.HelloInterval == nil {
		return 0
	}
	return *t.HelloInterval
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp/interface-attributes/interfaces/interface YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface struct {
	ΛMetadata      []ygot.Annotation                                                                                                 `path:"@" ygotAnnotation:"true"`
	AddressFamily  map[E_MplsLdp_MplsLdpAfi]*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily `path:"address-families/address-family" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddressFamily []ygot.Annotation                                                                                                 `path:"address-families/@address-family" ygotAnnotation:"true"`
	Counters       *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_Counters                               `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters      []ygot.Annotation                                                                                                 `path:"state/@counters" ygotAnnotation:"true"`
	HelloHoldtime  *uint16                                                                                                           `path:"config/hello-holdtime" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloHoldtime []ygot.Annotation                                                                                                 `path:"config/@hello-holdtime" ygotAnnotation:"true"`
	HelloInterval  *uint16                                                                                                           `path:"config/hello-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloInterval []ygot.Annotation                                                                                                 `path:"config/@hello-interval" ygotAnnotation:"true"`
	InterfaceId    *string                                                                                                           `path:"config/interface-id|interface-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛInterfaceId   []ygot.Annotation                                                                                                 `path:"config/@interface-id|@interface-id" ygotAnnotation:"true"`
	InterfaceRef   *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef                           `path:"interface-ref" module:"openconfig-network-instance"`
	ΛInterfaceRef  []ygot.Annotation                                                                                                 `path:"@interface-ref" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) IsYANGGoStruct() {}

// NewAddressFamily creates a new entry in the AddressFamily list of the
// NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) NewAddressFamily(AfiName E_MplsLdp_MplsLdpAfi) (*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AddressFamily == nil {
		t.AddressFamily = make(map[E_MplsLdp_MplsLdpAfi]*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily)
	}

	key := AfiName

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AddressFamily[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AddressFamily", key)
	}

	t.AddressFamily[key] = &NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily{
		AfiName: AfiName,
	}

	return t.AddressFamily[key], nil
}

// RenameAddressFamily renames an entry in the list AddressFamily within
// the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) RenameAddressFamily(oldK, newK E_MplsLdp_MplsLdpAfi) error {
	if _, ok := t.AddressFamily[newK]; ok {
		return fmt.Errorf("key %v already exists in AddressFamily", newK)
	}

	e, ok := t.AddressFamily[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AddressFamily", oldK)
	}
	e.AfiName = newK

	t.AddressFamily[newK] = e
	delete(t.AddressFamily, oldK)
	return nil
}

// GetOrCreateAddressFamilyMap returns the list (map) from NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) GetOrCreateAddressFamilyMap() map[E_MplsLdp_MplsLdpAfi]*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily {
	if t.AddressFamily == nil {
		t.AddressFamily = make(map[E_MplsLdp_MplsLdpAfi]*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily)
	}
	return t.AddressFamily
}

// GetOrCreateAddressFamily retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) GetOrCreateAddressFamily(AfiName E_MplsLdp_MplsLdpAfi) *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily {

	key := AfiName

	if v, ok := t.AddressFamily[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAddressFamily(AfiName)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAddressFamily got unexpected error: %v", err))
	}
	return v
}

// GetAddressFamily retrieves the value with the specified key from
// the AddressFamily map field of NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) GetAddressFamily(AfiName E_MplsLdp_MplsLdpAfi) *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily {

	if t == nil {
		return nil
	}

	key := AfiName

	if lm, ok := t.AddressFamily[key]; ok {
		return lm
	}
	return nil
}

// AppendAddressFamily appends the supplied NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily struct to the
// list AddressFamily of NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) AppendAddressFamily(v *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily) error {
	key := v.AfiName

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AddressFamily == nil {
		t.AddressFamily = make(map[E_MplsLdp_MplsLdpAfi]*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily)
	}

	if _, ok := t.AddressFamily[key]; ok {
		return fmt.Errorf("duplicate key for list AddressFamily %v", key)
	}

	t.AddressFamily[key] = v
	return nil
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) GetOrCreateCounters() *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_Counters{}
	return t.Counters
}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) GetOrCreateInterfaceRef() *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef{}
	return t.InterfaceRef
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) GetCounters() *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) GetInterfaceRef() *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetHelloHoldtime retrieves the value of the leaf HelloHoldtime from the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloHoldtime is set, it can
// safely use t.GetHelloHoldtime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloHoldtime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) GetHelloHoldtime() uint16 {
	if t == nil || t.HelloHoldtime == nil {
		return 0
	}
	return *t.HelloHoldtime
}

// GetHelloInterval retrieves the value of the leaf HelloInterval from the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloInterval is set, it can
// safely use t.GetHelloInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) GetHelloInterval() uint16 {
	if t == nil || t.HelloInterval == nil {
		return 0
	}
	return *t.HelloInterval
}

// GetInterfaceId retrieves the value of the leaf InterfaceId from the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceId is set, it can
// safely use t.GetInterfaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) GetInterfaceId() string {
	if t == nil || t.InterfaceId == nil {
		return ""
	}
	return *t.InterfaceId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Counters.PopulateDefaults()
	t.InterfaceRef.PopulateDefaults()
	for _, e := range t.AddressFamily {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.InterfaceId == nil {
		return nil, fmt.Errorf("nil value for key InterfaceId")
	}

	return map[string]interface{}{
		"interface-id": *t.InterfaceId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp/interface-attributes/interfaces/interface/address-families/address-family YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily struct {
	ΛMetadata []ygot.Annotation    `path:"@" ygotAnnotation:"true"`
	AfiName   E_MplsLdp_MplsLdpAfi `path:"config/afi-name|afi-name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAfiName  []ygot.Annotation    `path:"config/@afi-name|@afi-name" ygotAnnotation:"true"`
	Enabled   *bool                `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation    `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily) IsYANGGoStruct() {
}

// GetAfiName retrieves the value of the leaf AfiName from the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AfiName is set, it can
// safely use t.GetAfiName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AfiName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily) GetAfiName() E_MplsLdp_MplsLdpAfi {
	if t == nil || t.AfiName == 0 {
		return 0
	}
	return t.AfiName
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"afi-name": t.AfiName,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_AddressFamily) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_Counters represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp/interface-attributes/interfaces/interface/state/counters YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_Counters struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_Counters) IsYANGGoStruct() {
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_Counters.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp/interface-attributes/interfaces/interface/interface-ref YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef) IsYANGGoStruct() {
}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_InterfaceAttributes_Interface_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp/neighbors/neighbor YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor struct {
	ΛMetadata                         []ygot.Annotation                                                                                                                                `path:"@" ygotAnnotation:"true"`
	Authentication                    *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication                                                                             `path:"authentication" module:"openconfig-network-instance"`
	ΛAuthentication                   []ygot.Annotation                                                                                                                                `path:"@authentication" ygotAnnotation:"true"`
	EnableDownstreamOnDemand          *bool                                                                                                                                            `path:"config/enable-downstream-on-demand" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnableDownstreamOnDemand         []ygot.Annotation                                                                                                                                `path:"config/@enable-downstream-on-demand" ygotAnnotation:"true"`
	HelloAdjacency                    map[NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_Key]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency `path:"hello-adjacencies/hello-adjacency" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloAdjacency                   []ygot.Annotation                                                                                                                                `path:"hello-adjacencies/@hello-adjacency" ygotAnnotation:"true"`
	LabelSpaceId                      *uint16                                                                                                                                          `path:"config/label-space-id|label-space-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛLabelSpaceId                     []ygot.Annotation                                                                                                                                `path:"config/@label-space-id|@label-space-id" ygotAnnotation:"true"`
	LsrId                             *string                                                                                                                                          `path:"config/lsr-id|lsr-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛLsrId                            []ygot.Annotation                                                                                                                                `path:"config/@lsr-id|@lsr-id" ygotAnnotation:"true"`
	NegotiatedLabelAdvertisementMode  E_MplsLdp_LabelAdvertisementMode                                                                                                                 `path:"state/negotiated-label-advertisement-mode" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNegotiatedLabelAdvertisementMode []ygot.Annotation                                                                                                                                `path:"state/@negotiated-label-advertisement-mode" ygotAnnotation:"true"`
	PeerLabelAdvertisementMode        E_MplsLdp_LabelAdvertisementMode                                                                                                                 `path:"state/peer-label-advertisement-mode" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPeerLabelAdvertisementMode       []ygot.Annotation                                                                                                                                `path:"state/@peer-label-advertisement-mode" ygotAnnotation:"true"`
	SessionState                      E_MplsLdp_Neighbor_SessionState                                                                                                                  `path:"state/session-state" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSessionState                     []ygot.Annotation                                                                                                                                `path:"state/@session-state" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) IsYANGGoStruct() {}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_Key represents the key for list HelloAdjacency of element /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp/neighbors/neighbor.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_Key struct {
	RemoteAddress string `path:"remote-address"`
	LocalAddress  string `path:"local-address"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_Key key struct.
func (t NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"remote-address": t.RemoteAddress,
		"local-address":  t.LocalAddress,
	}, nil
}

// NewHelloAdjacency creates a new entry in the HelloAdjacency list of the
// NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) NewHelloAdjacency(RemoteAddress string, LocalAddress string) (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.HelloAdjacency == nil {
		t.HelloAdjacency = make(map[NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_Key]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency)
	}

	key := NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_Key{
		RemoteAddress: RemoteAddress,
		LocalAddress:  LocalAddress,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.HelloAdjacency[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list HelloAdjacency", key)
	}

	t.HelloAdjacency[key] = &NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency{
		RemoteAddress: &RemoteAddress,
		LocalAddress:  &LocalAddress,
	}

	return t.HelloAdjacency[key], nil
}

// RenameHelloAdjacency renames an entry in the list HelloAdjacency within
// the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) RenameHelloAdjacency(oldK, newK NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_Key) error {
	if _, ok := t.HelloAdjacency[newK]; ok {
		return fmt.Errorf("key %v already exists in HelloAdjacency", newK)
	}

	e, ok := t.HelloAdjacency[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in HelloAdjacency", oldK)
	}
	e.RemoteAddress = &newK.RemoteAddress
	e.LocalAddress = &newK.LocalAddress

	t.HelloAdjacency[newK] = e
	delete(t.HelloAdjacency, oldK)
	return nil
}

// GetOrCreateHelloAdjacencyMap returns the list (map) from NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) GetOrCreateHelloAdjacencyMap() map[NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_Key]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency {
	if t.HelloAdjacency == nil {
		t.HelloAdjacency = make(map[NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_Key]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency)
	}
	return t.HelloAdjacency
}

// GetOrCreateHelloAdjacency retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) GetOrCreateHelloAdjacency(RemoteAddress string, LocalAddress string) *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency {

	key := NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_Key{
		RemoteAddress: RemoteAddress,
		LocalAddress:  LocalAddress,
	}

	if v, ok := t.HelloAdjacency[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewHelloAdjacency(RemoteAddress, LocalAddress)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateHelloAdjacency got unexpected error: %v", err))
	}
	return v
}

// GetHelloAdjacency retrieves the value with the specified key from
// the HelloAdjacency map field of NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) GetHelloAdjacency(RemoteAddress string, LocalAddress string) *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_Key{
		RemoteAddress: RemoteAddress,
		LocalAddress:  LocalAddress,
	}

	if lm, ok := t.HelloAdjacency[key]; ok {
		return lm
	}
	return nil
}

// AppendHelloAdjacency appends the supplied NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency struct to the
// list HelloAdjacency of NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) AppendHelloAdjacency(v *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) error {
	if v.RemoteAddress == nil {
		return fmt.Errorf("invalid nil key for RemoteAddress")
	}

	if v.LocalAddress == nil {
		return fmt.Errorf("invalid nil key for LocalAddress")
	}

	key := NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_Key{
		RemoteAddress: *v.RemoteAddress,
		LocalAddress:  *v.LocalAddress,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.HelloAdjacency == nil {
		t.HelloAdjacency = make(map[NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_Key]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency)
	}

	if _, ok := t.HelloAdjacency[key]; ok {
		return fmt.Errorf("duplicate key for list HelloAdjacency %v", key)
	}

	t.HelloAdjacency[key] = v
	return nil
}

// GetOrCreateAuthentication retrieves the value of the Authentication field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) GetOrCreateAuthentication() *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication {
	if t.Authentication != nil {
		return t.Authentication
	}
	t.Authentication = &NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication{}
	return t.Authentication
}

// GetAuthentication returns the value of the Authentication struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor. If the receiver or the field Authentication is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) GetAuthentication() *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication {
	if t != nil && t.Authentication != nil {
		return t.Authentication
	}
	return nil
}

// GetEnableDownstreamOnDemand retrieves the value of the leaf EnableDownstreamOnDemand from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EnableDownstreamOnDemand is set, it can
// safely use t.GetEnableDownstreamOnDemand() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EnableDownstreamOnDemand == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) GetEnableDownstreamOnDemand() bool {
	if t == nil || t.EnableDownstreamOnDemand == nil {
		return false
	}
	return *t.EnableDownstreamOnDemand
}

// GetLabelSpaceId retrieves the value of the leaf LabelSpaceId from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LabelSpaceId is set, it can
// safely use t.GetLabelSpaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LabelSpaceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) GetLabelSpaceId() uint16 {
	if t == nil || t.LabelSpaceId == nil {
		return 0
	}
	return *t.LabelSpaceId
}

// GetLsrId retrieves the value of the leaf LsrId from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LsrId is set, it can
// safely use t.GetLsrId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LsrId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) GetLsrId() string {
	if t == nil || t.LsrId == nil {
		return ""
	}
	return *t.LsrId
}

// GetNegotiatedLabelAdvertisementMode retrieves the value of the leaf NegotiatedLabelAdvertisementMode from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NegotiatedLabelAdvertisementMode is set, it can
// safely use t.GetNegotiatedLabelAdvertisementMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NegotiatedLabelAdvertisementMode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) GetNegotiatedLabelAdvertisementMode() E_MplsLdp_LabelAdvertisementMode {
	if t == nil || t.NegotiatedLabelAdvertisementMode == 0 {
		return 0
	}
	return t.NegotiatedLabelAdvertisementMode
}

// GetPeerLabelAdvertisementMode retrieves the value of the leaf PeerLabelAdvertisementMode from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerLabelAdvertisementMode is set, it can
// safely use t.GetPeerLabelAdvertisementMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerLabelAdvertisementMode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) GetPeerLabelAdvertisementMode() E_MplsLdp_LabelAdvertisementMode {
	if t == nil || t.PeerLabelAdvertisementMode == 0 {
		return 0
	}
	return t.PeerLabelAdvertisementMode
}

// GetSessionState retrieves the value of the leaf SessionState from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SessionState is set, it can
// safely use t.GetSessionState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SessionState == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) GetSessionState() E_MplsLdp_Neighbor_SessionState {
	if t == nil || t.SessionState == 0 {
		return 0
	}
	return t.SessionState
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.EnableDownstreamOnDemand == nil {
		var v bool = false
		t.EnableDownstreamOnDemand = &v
	}
	t.Authentication.PopulateDefaults()
	for _, e := range t.HelloAdjacency {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.LabelSpaceId == nil {
		return nil, fmt.Errorf("nil value for key LabelSpaceId")
	}

	if t.LsrId == nil {
		return nil, fmt.Errorf("nil value for key LsrId")
	}

	return map[string]interface{}{
		"label-space-id": *t.LabelSpaceId,
		"lsr-id":         *t.LsrId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp/neighbors/neighbor/authentication YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AuthenticationKey  *string           `path:"config/authentication-key" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthenticationKey []ygot.Annotation `path:"config/@authentication-key" ygotAnnotation:"true"`
	Enable             *bool             `path:"config/enable" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnable            []ygot.Annotation `path:"config/@enable" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication) IsYANGGoStruct() {}

// GetAuthenticationKey retrieves the value of the leaf AuthenticationKey from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthenticationKey is set, it can
// safely use t.GetAuthenticationKey() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthenticationKey == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication) GetAuthenticationKey() string {
	if t == nil || t.AuthenticationKey == nil {
		return ""
	}
	return *t.AuthenticationKey
}

// GetEnable retrieves the value of the leaf Enable from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enable is set, it can
// safely use t.GetEnable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enable == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication) GetEnable() bool {
	if t == nil || t.Enable == nil {
		return false
	}
	return *t.Enable
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enable == nil {
		var v bool = false
		t.Enable = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_Authentication) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp/neighbors/neighbor/hello-adjacencies/hello-adjacency YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency struct {
	ΛMetadata      []ygot.Annotation                                                                  `path:"@" ygotAnnotation:"true"`
	AdjacencyType  E_MplsLdp_MplsLdpAdjacencyType                                                     `path:"state/adjacency-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdjacencyType []ygot.Annotation                                                                  `path:"state/@adjacency-type" ygotAnnotation:"true"`
	HelloDropped   *uint64                                                                            `path:"state/hello-dropped" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloDropped  []ygot.Annotation                                                                  `path:"state/@hello-dropped" ygotAnnotation:"true"`
	HelloHoldtime  *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime `path:"hello-holdtime" module:"openconfig-network-instance"`
	ΛHelloHoldtime []ygot.Annotation                                                                  `path:"@hello-holdtime" ygotAnnotation:"true"`
	HelloReceived  *uint64                                                                            `path:"state/hello-received" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloReceived []ygot.Annotation                                                                  `path:"state/@hello-received" ygotAnnotation:"true"`
	InterfaceRef   *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef  `path:"interface-ref" module:"openconfig-network-instance"`
	ΛInterfaceRef  []ygot.Annotation                                                                  `path:"@interface-ref" ygotAnnotation:"true"`
	LastClear      *uint64                                                                            `path:"state/last-clear" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastClear     []ygot.Annotation                                                                  `path:"state/@last-clear" ygotAnnotation:"true"`
	LocalAddress   *string                                                                            `path:"state/local-address|local-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛLocalAddress  []ygot.Annotation                                                                  `path:"state/@local-address|@local-address" ygotAnnotation:"true"`
	RemoteAddress  *string                                                                            `path:"state/remote-address|remote-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛRemoteAddress []ygot.Annotation                                                                  `path:"state/@remote-address|@remote-address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) IsYANGGoStruct() {}

// GetOrCreateHelloHoldtime retrieves the value of the HelloHoldtime field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) GetOrCreateHelloHoldtime() *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime {
	if t.HelloHoldtime != nil {
		return t.HelloHoldtime
	}
	t.HelloHoldtime = &NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime{}
	return t.HelloHoldtime
}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) GetOrCreateInterfaceRef() *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef{}
	return t.InterfaceRef
}

// GetHelloHoldtime returns the value of the HelloHoldtime struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency. If the receiver or the field HelloHoldtime is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) GetHelloHoldtime() *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime {
	if t != nil && t.HelloHoldtime != nil {
		return t.HelloHoldtime
	}
	return nil
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) GetInterfaceRef() *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetAdjacencyType retrieves the value of the leaf AdjacencyType from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdjacencyType is set, it can
// safely use t.GetAdjacencyType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdjacencyType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) GetAdjacencyType() E_MplsLdp_MplsLdpAdjacencyType {
	if t == nil || t.AdjacencyType == 0 {
		return 0
	}
	return t.AdjacencyType
}

// GetHelloDropped retrieves the value of the leaf HelloDropped from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloDropped is set, it can
// safely use t.GetHelloDropped() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloDropped == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) GetHelloDropped() uint64 {
	if t == nil || t.HelloDropped == nil {
		return 0
	}
	return *t.HelloDropped
}

// GetHelloReceived retrieves the value of the leaf HelloReceived from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloReceived is set, it can
// safely use t.GetHelloReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloReceived == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) GetHelloReceived() uint64 {
	if t == nil || t.HelloReceived == nil {
		return 0
	}
	return *t.HelloReceived
}

// GetLastClear retrieves the value of the leaf LastClear from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastClear is set, it can
// safely use t.GetLastClear() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastClear == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) GetLastClear() uint64 {
	if t == nil || t.LastClear == nil {
		return 0
	}
	return *t.LastClear
}

// GetLocalAddress retrieves the value of the leaf LocalAddress from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalAddress is set, it can
// safely use t.GetLocalAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) GetLocalAddress() string {
	if t == nil || t.LocalAddress == nil {
		return ""
	}
	return *t.LocalAddress
}

// GetRemoteAddress retrieves the value of the leaf RemoteAddress from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteAddress is set, it can
// safely use t.GetRemoteAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) GetRemoteAddress() string {
	if t == nil || t.RemoteAddress == nil {
		return ""
	}
	return *t.RemoteAddress
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.HelloHoldtime.PopulateDefaults()
	t.InterfaceRef.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) ΛListKeyMap() (map[string]interface{}, error) {
	if t.LocalAddress == nil {
		return nil, fmt.Errorf("nil value for key LocalAddress")
	}

	if t.RemoteAddress == nil {
		return nil, fmt.Errorf("nil value for key RemoteAddress")
	}

	return map[string]interface{}{
		"local-address":  *t.LocalAddress,
		"remote-address": *t.RemoteAddress,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp/neighbors/neighbor/hello-adjacencies/hello-adjacency/hello-holdtime YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Adjacent         *uint16           `path:"state/adjacent" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdjacent        []ygot.Annotation `path:"state/@adjacent" ygotAnnotation:"true"`
	HelloExpiration  *uint64           `path:"state/hello-expiration" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloExpiration []ygot.Annotation `path:"state/@hello-expiration" ygotAnnotation:"true"`
	Negotiated       *uint16           `path:"state/negotiated" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNegotiated      []ygot.Annotation `path:"state/@negotiated" ygotAnnotation:"true"`
	NextHello        *uint64           `path:"state/next-hello" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHello       []ygot.Annotation `path:"state/@next-hello" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime) IsYANGGoStruct() {
}

// GetAdjacent retrieves the value of the leaf Adjacent from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Adjacent is set, it can
// safely use t.GetAdjacent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Adjacent == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime) GetAdjacent() uint16 {
	if t == nil || t.Adjacent == nil {
		return 0
	}
	return *t.Adjacent
}

// GetHelloExpiration retrieves the value of the leaf HelloExpiration from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloExpiration is set, it can
// safely use t.GetHelloExpiration() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloExpiration == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime) GetHelloExpiration() uint64 {
	if t == nil || t.HelloExpiration == nil {
		return 0
	}
	return *t.HelloExpiration
}

// GetNegotiated retrieves the value of the leaf Negotiated from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Negotiated is set, it can
// safely use t.GetNegotiated() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Negotiated == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime) GetNegotiated() uint16 {
	if t == nil || t.Negotiated == nil {
		return 0
	}
	return *t.Negotiated
}

// GetNextHello retrieves the value of the leaf NextHello from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHello is set, it can
// safely use t.GetNextHello() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHello == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime) GetNextHello() uint64 {
	if t == nil || t.NextHello == nil {
		return 0
	}
	return *t.NextHello
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_HelloHoldtime) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp/neighbors/neighbor/hello-adjacencies/hello-adjacency/interface-ref YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"state/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"state/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"state/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"state/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef) IsYANGGoStruct() {
}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Neighbor_HelloAdjacency_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp/targeted YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted struct {
	ΛMetadata      []ygot.Annotation                                                                            `path:"@" ygotAnnotation:"true"`
	AddressFamily  map[E_MplsLdp_MplsLdpAfi]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily `path:"address-families/address-family" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddressFamily []ygot.Annotation                                                                            `path:"address-families/@address-family" ygotAnnotation:"true"`
	HelloAccept    *bool                                                                                        `path:"config/hello-accept" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloAccept   []ygot.Annotation                                                                            `path:"config/@hello-accept" ygotAnnotation:"true"`
	HelloHoldtime  *uint16                                                                                      `path:"config/hello-holdtime" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloHoldtime []ygot.Annotation                                                                            `path:"config/@hello-holdtime" ygotAnnotation:"true"`
	HelloInterval  *uint16                                                                                      `path:"config/hello-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloInterval []ygot.Annotation                                                                            `path:"config/@hello-interval" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted) IsYANGGoStruct() {}

// NewAddressFamily creates a new entry in the AddressFamily list of the
// NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted) NewAddressFamily(AfiName E_MplsLdp_MplsLdpAfi) (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AddressFamily == nil {
		t.AddressFamily = make(map[E_MplsLdp_MplsLdpAfi]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily)
	}

	key := AfiName

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AddressFamily[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AddressFamily", key)
	}

	t.AddressFamily[key] = &NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily{
		AfiName: AfiName,
	}

	return t.AddressFamily[key], nil
}

// RenameAddressFamily renames an entry in the list AddressFamily within
// the NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted) RenameAddressFamily(oldK, newK E_MplsLdp_MplsLdpAfi) error {
	if _, ok := t.AddressFamily[newK]; ok {
		return fmt.Errorf("key %v already exists in AddressFamily", newK)
	}

	e, ok := t.AddressFamily[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AddressFamily", oldK)
	}
	e.AfiName = newK

	t.AddressFamily[newK] = e
	delete(t.AddressFamily, oldK)
	return nil
}

// GetOrCreateAddressFamilyMap returns the list (map) from NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted) GetOrCreateAddressFamilyMap() map[E_MplsLdp_MplsLdpAfi]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily {
	if t.AddressFamily == nil {
		t.AddressFamily = make(map[E_MplsLdp_MplsLdpAfi]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily)
	}
	return t.AddressFamily
}

// GetOrCreateAddressFamily retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted) GetOrCreateAddressFamily(AfiName E_MplsLdp_MplsLdpAfi) *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily {

	key := AfiName

	if v, ok := t.AddressFamily[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAddressFamily(AfiName)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAddressFamily got unexpected error: %v", err))
	}
	return v
}

// GetAddressFamily retrieves the value with the specified key from
// the AddressFamily map field of NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted) GetAddressFamily(AfiName E_MplsLdp_MplsLdpAfi) *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily {

	if t == nil {
		return nil
	}

	key := AfiName

	if lm, ok := t.AddressFamily[key]; ok {
		return lm
	}
	return nil
}

// AppendAddressFamily appends the supplied NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily struct to the
// list AddressFamily of NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted) AppendAddressFamily(v *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily) error {
	key := v.AfiName

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AddressFamily == nil {
		t.AddressFamily = make(map[E_MplsLdp_MplsLdpAfi]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily)
	}

	if _, ok := t.AddressFamily[key]; ok {
		return fmt.Errorf("duplicate key for list AddressFamily %v", key)
	}

	t.AddressFamily[key] = v
	return nil
}

// GetHelloAccept retrieves the value of the leaf HelloAccept from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloAccept is set, it can
// safely use t.GetHelloAccept() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloAccept == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted) GetHelloAccept() bool {
	if t == nil || t.HelloAccept == nil {
		return false
	}
	return *t.HelloAccept
}

// GetHelloHoldtime retrieves the value of the leaf HelloHoldtime from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloHoldtime is set, it can
// safely use t.GetHelloHoldtime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloHoldtime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted) GetHelloHoldtime() uint16 {
	if t == nil || t.HelloHoldtime == nil {
		return 0
	}
	return *t.HelloHoldtime
}

// GetHelloInterval retrieves the value of the leaf HelloInterval from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloInterval is set, it can
// safely use t.GetHelloInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted) GetHelloInterval() uint16 {
	if t == nil || t.HelloInterval == nil {
		return 0
	}
	return *t.HelloInterval
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.AddressFamily {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp/targeted/address-families/address-family YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily struct {
	ΛMetadata []ygot.Annotation                                                                     `path:"@" ygotAnnotation:"true"`
	AfiName   E_MplsLdp_MplsLdpAfi                                                                  `path:"config/afi-name|afi-name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAfiName  []ygot.Annotation                                                                     `path:"config/@afi-name|@afi-name" ygotAnnotation:"true"`
	Target    map[string]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target `path:"targets/target" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTarget   []ygot.Annotation                                                                     `path:"targets/@target" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily) IsYANGGoStruct() {}

// NewTarget creates a new entry in the Target list of the
// NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily) NewTarget(RemoteAddress string) (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Target == nil {
		t.Target = make(map[string]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target)
	}

	key := RemoteAddress

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Target[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Target", key)
	}

	t.Target[key] = &NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target{
		RemoteAddress: &RemoteAddress,
	}

	return t.Target[key], nil
}

// RenameTarget renames an entry in the list Target within
// the NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily) RenameTarget(oldK, newK string) error {
	if _, ok := t.Target[newK]; ok {
		return fmt.Errorf("key %v already exists in Target", newK)
	}

	e, ok := t.Target[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Target", oldK)
	}
	e.RemoteAddress = &newK

	t.Target[newK] = e
	delete(t.Target, oldK)
	return nil
}

// GetOrCreateTargetMap returns the list (map) from NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily) GetOrCreateTargetMap() map[string]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target {
	if t.Target == nil {
		t.Target = make(map[string]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target)
	}
	return t.Target
}

// GetOrCreateTarget retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily) GetOrCreateTarget(RemoteAddress string) *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target {

	key := RemoteAddress

	if v, ok := t.Target[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTarget(RemoteAddress)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTarget got unexpected error: %v", err))
	}
	return v
}

// GetTarget retrieves the value with the specified key from
// the Target map field of NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily) GetTarget(RemoteAddress string) *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target {

	if t == nil {
		return nil
	}

	key := RemoteAddress

	if lm, ok := t.Target[key]; ok {
		return lm
	}
	return nil
}

// AppendTarget appends the supplied NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target struct to the
// list Target of NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily) AppendTarget(v *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target) error {
	if v.RemoteAddress == nil {
		return fmt.Errorf("invalid nil key received for RemoteAddress")
	}

	key := *v.RemoteAddress

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Target == nil {
		t.Target = make(map[string]*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target)
	}

	if _, ok := t.Target[key]; ok {
		return fmt.Errorf("duplicate key for list Target %v", key)
	}

	t.Target[key] = v
	return nil
}

// GetAfiName retrieves the value of the leaf AfiName from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AfiName is set, it can
// safely use t.GetAfiName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AfiName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily) GetAfiName() E_MplsLdp_MplsLdpAfi {
	if t == nil || t.AfiName == 0 {
		return 0
	}
	return t.AfiName
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Target {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"afi-name": t.AfiName,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/ldp/targeted/address-families/address-family/targets/target YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target struct {
	ΛMetadata      []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled        *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled       []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
	HelloHoldtime  *uint16           `path:"config/hello-holdtime" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloHoldtime []ygot.Annotation `path:"config/@hello-holdtime" ygotAnnotation:"true"`
	HelloInterval  *uint16           `path:"config/hello-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloInterval []ygot.Annotation `path:"config/@hello-interval" ygotAnnotation:"true"`
	LocalAddress   *string           `path:"config/local-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalAddress  []ygot.Annotation `path:"config/@local-address" ygotAnnotation:"true"`
	RemoteAddress  *string           `path:"config/remote-address|remote-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛRemoteAddress []ygot.Annotation `path:"config/@remote-address|@remote-address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetHelloHoldtime retrieves the value of the leaf HelloHoldtime from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloHoldtime is set, it can
// safely use t.GetHelloHoldtime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloHoldtime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target) GetHelloHoldtime() uint16 {
	if t == nil || t.HelloHoldtime == nil {
		return 0
	}
	return *t.HelloHoldtime
}

// GetHelloInterval retrieves the value of the leaf HelloInterval from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloInterval is set, it can
// safely use t.GetHelloInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target) GetHelloInterval() uint16 {
	if t == nil || t.HelloInterval == nil {
		return 0
	}
	return *t.HelloInterval
}

// GetLocalAddress retrieves the value of the leaf LocalAddress from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalAddress is set, it can
// safely use t.GetLocalAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target) GetLocalAddress() string {
	if t == nil || t.LocalAddress == nil {
		return ""
	}
	return *t.LocalAddress
}

// GetRemoteAddress retrieves the value of the leaf RemoteAddress from the NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteAddress is set, it can
// safely use t.GetRemoteAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target) GetRemoteAddress() string {
	if t == nil || t.RemoteAddress == nil {
		return ""
	}
	return *t.RemoteAddress
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target) ΛListKeyMap() (map[string]interface{}, error) {
	if t.RemoteAddress == nil {
		return nil, fmt.Errorf("nil value for key RemoteAddress")
	}

	return map[string]interface{}{
		"remote-address": *t.RemoteAddress,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target.
func (*NetworkInstance_Mpls_SignalingProtocols_Ldp_Targeted_AddressFamily_Target) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe struct {
	ΛMetadata  []ygot.Annotation                                                    `path:"@" ygotAnnotation:"true"`
	Global     *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global               `path:"global" module:"openconfig-network-instance"`
	ΛGlobal    []ygot.Annotation                                                    `path:"@global" ygotAnnotation:"true"`
	Interface  map[string]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface `path:"interface-attributes/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface []ygot.Annotation                                                    `path:"interface-attributes/@interface" ygotAnnotation:"true"`
	Neighbor   map[string]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor  `path:"neighbors/neighbor" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighbor  []ygot.Annotation                                                    `path:"neighbors/@neighbor" ygotAnnotation:"true"`
	Session    map[uint64]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session   `path:"sessions/session" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSession   []ygot.Annotation                                                    `path:"sessions/@session" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// NetworkInstance_Mpls_SignalingProtocols_RsvpTe struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) NewInterface(InterfaceId string) (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface)
	}

	key := InterfaceId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface{
		InterfaceId: &InterfaceId,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the NetworkInstance_Mpls_SignalingProtocols_RsvpTe struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.InterfaceId = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from NetworkInstance_Mpls_SignalingProtocols_RsvpTe.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) GetOrCreateInterfaceMap() map[string]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_SignalingProtocols_RsvpTe. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) GetOrCreateInterface(InterfaceId string) *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface {

	key := InterfaceId

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(InterfaceId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of NetworkInstance_Mpls_SignalingProtocols_RsvpTe. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) GetInterface(InterfaceId string) *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface {

	if t == nil {
		return nil
	}

	key := InterfaceId

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface struct to the
// list Interface of NetworkInstance_Mpls_SignalingProtocols_RsvpTe. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) AppendInterface(v *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) error {
	if v.InterfaceId == nil {
		return fmt.Errorf("invalid nil key received for InterfaceId")
	}

	key := *v.InterfaceId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// NewNeighbor creates a new entry in the Neighbor list of the
// NetworkInstance_Mpls_SignalingProtocols_RsvpTe struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) NewNeighbor(Address string) (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor)
	}

	key := Address

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor{
		Address: &Address,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the NetworkInstance_Mpls_SignalingProtocols_RsvpTe struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.Address = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from NetworkInstance_Mpls_SignalingProtocols_RsvpTe.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) GetOrCreateNeighborMap() map[string]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_SignalingProtocols_RsvpTe. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) GetOrCreateNeighbor(Address string) *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor {

	key := Address

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(Address)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of NetworkInstance_Mpls_SignalingProtocols_RsvpTe. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) GetNeighbor(Address string) *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor {

	if t == nil {
		return nil
	}

	key := Address

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor struct to the
// list Neighbor of NetworkInstance_Mpls_SignalingProtocols_RsvpTe. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) AppendNeighbor(v *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor) error {
	if v.Address == nil {
		return fmt.Errorf("invalid nil key received for Address")
	}

	key := *v.Address

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// NewSession creates a new entry in the Session list of the
// NetworkInstance_Mpls_SignalingProtocols_RsvpTe struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) NewSession(LocalIndex uint64) (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Session == nil {
		t.Session = make(map[uint64]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session)
	}

	key := LocalIndex

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Session[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Session", key)
	}

	t.Session[key] = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session{
		LocalIndex: &LocalIndex,
	}

	return t.Session[key], nil
}

// RenameSession renames an entry in the list Session within
// the NetworkInstance_Mpls_SignalingProtocols_RsvpTe struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) RenameSession(oldK, newK uint64) error {
	if _, ok := t.Session[newK]; ok {
		return fmt.Errorf("key %v already exists in Session", newK)
	}

	e, ok := t.Session[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Session", oldK)
	}
	e.LocalIndex = &newK

	t.Session[newK] = e
	delete(t.Session, oldK)
	return nil
}

// GetOrCreateSessionMap returns the list (map) from NetworkInstance_Mpls_SignalingProtocols_RsvpTe.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) GetOrCreateSessionMap() map[uint64]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session {
	if t.Session == nil {
		t.Session = make(map[uint64]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session)
	}
	return t.Session
}

// GetOrCreateSession retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_SignalingProtocols_RsvpTe. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) GetOrCreateSession(LocalIndex uint64) *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session {

	key := LocalIndex

	if v, ok := t.Session[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSession(LocalIndex)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSession got unexpected error: %v", err))
	}
	return v
}

// GetSession retrieves the value with the specified key from
// the Session map field of NetworkInstance_Mpls_SignalingProtocols_RsvpTe. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) GetSession(LocalIndex uint64) *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session {

	if t == nil {
		return nil
	}

	key := LocalIndex

	if lm, ok := t.Session[key]; ok {
		return lm
	}
	return nil
}

// AppendSession appends the supplied NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session struct to the
// list Session of NetworkInstance_Mpls_SignalingProtocols_RsvpTe. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) AppendSession(v *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) error {
	if v.LocalIndex == nil {
		return fmt.Errorf("invalid nil key received for LocalIndex")
	}

	key := *v.LocalIndex

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Session == nil {
		t.Session = make(map[uint64]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session)
	}

	if _, ok := t.Session[key]; ok {
		return fmt.Errorf("duplicate key for list Session %v", key)
	}

	t.Session[key] = v
	return nil
}

// GetOrCreateGlobal retrieves the value of the Global field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) GetOrCreateGlobal() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global {
	if t.Global != nil {
		return t.Global
	}
	t.Global = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global{}
	return t.Global
}

// GetGlobal returns the value of the Global struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_RsvpTe. If the receiver or the field Global is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) GetGlobal() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global {
	if t != nil && t.Global != nil {
		return t.Global
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Global.PopulateDefaults()
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
	for _, e := range t.Session {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/global YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global struct {
	ΛMetadata        []ygot.Annotation                                                      `path:"@" ygotAnnotation:"true"`
	Counters         *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters        `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters        []ygot.Annotation                                                      `path:"state/@counters" ygotAnnotation:"true"`
	GracefulRestart  *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart `path:"graceful-restart" module:"openconfig-network-instance"`
	ΛGracefulRestart []ygot.Annotation                                                      `path:"@graceful-restart" ygotAnnotation:"true"`
	Hellos           *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos          `path:"hellos" module:"openconfig-network-instance"`
	ΛHellos          []ygot.Annotation                                                      `path:"@hellos" ygotAnnotation:"true"`
	SoftPreemption   *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption  `path:"soft-preemption" module:"openconfig-network-instance"`
	ΛSoftPreemption  []ygot.Annotation                                                      `path:"@soft-preemption" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global) GetOrCreateCounters() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters{}
	return t.Counters
}

// GetOrCreateGracefulRestart retrieves the value of the GracefulRestart field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global) GetOrCreateGracefulRestart() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart {
	if t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	t.GracefulRestart = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart{}
	return t.GracefulRestart
}

// GetOrCreateHellos retrieves the value of the Hellos field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global) GetOrCreateHellos() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos {
	if t.Hellos != nil {
		return t.Hellos
	}
	t.Hellos = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos{}
	return t.Hellos
}

// GetOrCreateSoftPreemption retrieves the value of the SoftPreemption field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global) GetOrCreateSoftPreemption() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption {
	if t.SoftPreemption != nil {
		return t.SoftPreemption
	}
	t.SoftPreemption = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption{}
	return t.SoftPreemption
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global) GetCounters() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetGracefulRestart returns the value of the GracefulRestart struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global. If the receiver or the field GracefulRestart is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global) GetGracefulRestart() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart {
	if t != nil && t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	return nil
}

// GetHellos returns the value of the Hellos struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global. If the receiver or the field Hellos is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global) GetHellos() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos {
	if t != nil && t.Hellos != nil {
		return t.Hellos
	}
	return nil
}

// GetSoftPreemption returns the value of the SoftPreemption struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global. If the receiver or the field SoftPreemption is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global) GetSoftPreemption() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption {
	if t != nil && t.SoftPreemption != nil {
		return t.SoftPreemption
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Counters.PopulateDefaults()
	t.GracefulRestart.PopulateDefaults()
	t.Hellos.PopulateDefaults()
	t.SoftPreemption.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/global/state/counters YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters struct {
	ΛMetadata                    []ygot.Annotation                                                      `path:"@" ygotAnnotation:"true"`
	Errors                       *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors `path:"errors" module:"openconfig-network-instance"`
	ΛErrors                      []ygot.Annotation                                                      `path:"@errors" ygotAnnotation:"true"`
	InAckMessages                *uint64                                                                `path:"in-ack-messages" module:"openconfig-network-instance"`
	ΛInAckMessages               []ygot.Annotation                                                      `path:"@in-ack-messages" ygotAnnotation:"true"`
	InHelloMessages              *uint64                                                                `path:"in-hello-messages" module:"openconfig-network-instance"`
	ΛInHelloMessages             []ygot.Annotation                                                      `path:"@in-hello-messages" ygotAnnotation:"true"`
	InPathErrorMessages          *uint64                                                                `path:"in-path-error-messages" module:"openconfig-network-instance"`
	ΛInPathErrorMessages         []ygot.Annotation                                                      `path:"@in-path-error-messages" ygotAnnotation:"true"`
	InPathMessages               *uint64                                                                `path:"in-path-messages" module:"openconfig-network-instance"`
	ΛInPathMessages              []ygot.Annotation                                                      `path:"@in-path-messages" ygotAnnotation:"true"`
	InPathTearMessages           *uint64                                                                `path:"in-path-tear-messages" module:"openconfig-network-instance"`
	ΛInPathTearMessages          []ygot.Annotation                                                      `path:"@in-path-tear-messages" ygotAnnotation:"true"`
	InReservationErrorMessages   *uint64                                                                `path:"in-reservation-error-messages" module:"openconfig-network-instance"`
	ΛInReservationErrorMessages  []ygot.Annotation                                                      `path:"@in-reservation-error-messages" ygotAnnotation:"true"`
	InReservationMessages        *uint64                                                                `path:"in-reservation-messages" module:"openconfig-network-instance"`
	ΛInReservationMessages       []ygot.Annotation                                                      `path:"@in-reservation-messages" ygotAnnotation:"true"`
	InReservationTearMessages    *uint64                                                                `path:"in-reservation-tear-messages" module:"openconfig-network-instance"`
	ΛInReservationTearMessages   []ygot.Annotation                                                      `path:"@in-reservation-tear-messages" ygotAnnotation:"true"`
	InSrefreshMessages           *uint64                                                                `path:"in-srefresh-messages" module:"openconfig-network-instance"`
	ΛInSrefreshMessages          []ygot.Annotation                                                      `path:"@in-srefresh-messages" ygotAnnotation:"true"`
	OutAckMessages               *uint64                                                                `path:"out-ack-messages" module:"openconfig-network-instance"`
	ΛOutAckMessages              []ygot.Annotation                                                      `path:"@out-ack-messages" ygotAnnotation:"true"`
	OutHelloMessages             *uint64                                                                `path:"out-hello-messages" module:"openconfig-network-instance"`
	ΛOutHelloMessages            []ygot.Annotation                                                      `path:"@out-hello-messages" ygotAnnotation:"true"`
	OutPathErrorMessages         *uint64                                                                `path:"out-path-error-messages" module:"openconfig-network-instance"`
	ΛOutPathErrorMessages        []ygot.Annotation                                                      `path:"@out-path-error-messages" ygotAnnotation:"true"`
	OutPathMessages              *uint64                                                                `path:"out-path-messages" module:"openconfig-network-instance"`
	ΛOutPathMessages             []ygot.Annotation                                                      `path:"@out-path-messages" ygotAnnotation:"true"`
	OutPathTearMessages          *uint64                                                                `path:"out-path-tear-messages" module:"openconfig-network-instance"`
	ΛOutPathTearMessages         []ygot.Annotation                                                      `path:"@out-path-tear-messages" ygotAnnotation:"true"`
	OutReservationErrorMessages  *uint64                                                                `path:"out-reservation-error-messages" module:"openconfig-network-instance"`
	ΛOutReservationErrorMessages []ygot.Annotation                                                      `path:"@out-reservation-error-messages" ygotAnnotation:"true"`
	OutReservationMessages       *uint64                                                                `path:"out-reservation-messages" module:"openconfig-network-instance"`
	ΛOutReservationMessages      []ygot.Annotation                                                      `path:"@out-reservation-messages" ygotAnnotation:"true"`
	OutReservationTearMessages   *uint64                                                                `path:"out-reservation-tear-messages" module:"openconfig-network-instance"`
	ΛOutReservationTearMessages  []ygot.Annotation                                                      `path:"@out-reservation-tear-messages" ygotAnnotation:"true"`
	OutSrefreshMessages          *uint64                                                                `path:"out-srefresh-messages" module:"openconfig-network-instance"`
	ΛOutSrefreshMessages         []ygot.Annotation                                                      `path:"@out-srefresh-messages" ygotAnnotation:"true"`
	PathTimeouts                 *uint64                                                                `path:"path-timeouts" module:"openconfig-network-instance"`
	ΛPathTimeouts                []ygot.Annotation                                                      `path:"@path-timeouts" ygotAnnotation:"true"`
	RateLimitedMessages          *uint64                                                                `path:"rate-limited-messages" module:"openconfig-network-instance"`
	ΛRateLimitedMessages         []ygot.Annotation                                                      `path:"@rate-limited-messages" ygotAnnotation:"true"`
	ReservationTimeouts          *uint64                                                                `path:"reservation-timeouts" module:"openconfig-network-instance"`
	ΛReservationTimeouts         []ygot.Annotation                                                      `path:"@reservation-timeouts" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) IsYANGGoStruct() {}

// GetOrCreateErrors retrieves the value of the Errors field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetOrCreateErrors() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors {
	if t.Errors != nil {
		return t.Errors
	}
	t.Errors = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors{}
	return t.Errors
}

// GetErrors returns the value of the Errors struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters. If the receiver or the field Errors is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetErrors() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors {
	if t != nil && t.Errors != nil {
		return t.Errors
	}
	return nil
}

// GetInAckMessages retrieves the value of the leaf InAckMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InAckMessages is set, it can
// safely use t.GetInAckMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InAckMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetInAckMessages() uint64 {
	if t == nil || t.InAckMessages == nil {
		return 0
	}
	return *t.InAckMessages
}

// GetInHelloMessages retrieves the value of the leaf InHelloMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InHelloMessages is set, it can
// safely use t.GetInHelloMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InHelloMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetInHelloMessages() uint64 {
	if t == nil || t.InHelloMessages == nil {
		return 0
	}
	return *t.InHelloMessages
}

// GetInPathErrorMessages retrieves the value of the leaf InPathErrorMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPathErrorMessages is set, it can
// safely use t.GetInPathErrorMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPathErrorMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetInPathErrorMessages() uint64 {
	if t == nil || t.InPathErrorMessages == nil {
		return 0
	}
	return *t.InPathErrorMessages
}

// GetInPathMessages retrieves the value of the leaf InPathMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPathMessages is set, it can
// safely use t.GetInPathMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPathMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetInPathMessages() uint64 {
	if t == nil || t.InPathMessages == nil {
		return 0
	}
	return *t.InPathMessages
}

// GetInPathTearMessages retrieves the value of the leaf InPathTearMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPathTearMessages is set, it can
// safely use t.GetInPathTearMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPathTearMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetInPathTearMessages() uint64 {
	if t == nil || t.InPathTearMessages == nil {
		return 0
	}
	return *t.InPathTearMessages
}

// GetInReservationErrorMessages retrieves the value of the leaf InReservationErrorMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InReservationErrorMessages is set, it can
// safely use t.GetInReservationErrorMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InReservationErrorMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetInReservationErrorMessages() uint64 {
	if t == nil || t.InReservationErrorMessages == nil {
		return 0
	}
	return *t.InReservationErrorMessages
}

// GetInReservationMessages retrieves the value of the leaf InReservationMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InReservationMessages is set, it can
// safely use t.GetInReservationMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InReservationMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetInReservationMessages() uint64 {
	if t == nil || t.InReservationMessages == nil {
		return 0
	}
	return *t.InReservationMessages
}

// GetInReservationTearMessages retrieves the value of the leaf InReservationTearMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InReservationTearMessages is set, it can
// safely use t.GetInReservationTearMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InReservationTearMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetInReservationTearMessages() uint64 {
	if t == nil || t.InReservationTearMessages == nil {
		return 0
	}
	return *t.InReservationTearMessages
}

// GetInSrefreshMessages retrieves the value of the leaf InSrefreshMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InSrefreshMessages is set, it can
// safely use t.GetInSrefreshMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InSrefreshMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetInSrefreshMessages() uint64 {
	if t == nil || t.InSrefreshMessages == nil {
		return 0
	}
	return *t.InSrefreshMessages
}

// GetOutAckMessages retrieves the value of the leaf OutAckMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutAckMessages is set, it can
// safely use t.GetOutAckMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutAckMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetOutAckMessages() uint64 {
	if t == nil || t.OutAckMessages == nil {
		return 0
	}
	return *t.OutAckMessages
}

// GetOutHelloMessages retrieves the value of the leaf OutHelloMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutHelloMessages is set, it can
// safely use t.GetOutHelloMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutHelloMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetOutHelloMessages() uint64 {
	if t == nil || t.OutHelloMessages == nil {
		return 0
	}
	return *t.OutHelloMessages
}

// GetOutPathErrorMessages retrieves the value of the leaf OutPathErrorMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPathErrorMessages is set, it can
// safely use t.GetOutPathErrorMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPathErrorMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetOutPathErrorMessages() uint64 {
	if t == nil || t.OutPathErrorMessages == nil {
		return 0
	}
	return *t.OutPathErrorMessages
}

// GetOutPathMessages retrieves the value of the leaf OutPathMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPathMessages is set, it can
// safely use t.GetOutPathMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPathMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetOutPathMessages() uint64 {
	if t == nil || t.OutPathMessages == nil {
		return 0
	}
	return *t.OutPathMessages
}

// GetOutPathTearMessages retrieves the value of the leaf OutPathTearMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPathTearMessages is set, it can
// safely use t.GetOutPathTearMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPathTearMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetOutPathTearMessages() uint64 {
	if t == nil || t.OutPathTearMessages == nil {
		return 0
	}
	return *t.OutPathTearMessages
}

// GetOutReservationErrorMessages retrieves the value of the leaf OutReservationErrorMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutReservationErrorMessages is set, it can
// safely use t.GetOutReservationErrorMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutReservationErrorMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetOutReservationErrorMessages() uint64 {
	if t == nil || t.OutReservationErrorMessages == nil {
		return 0
	}
	return *t.OutReservationErrorMessages
}

// GetOutReservationMessages retrieves the value of the leaf OutReservationMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutReservationMessages is set, it can
// safely use t.GetOutReservationMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutReservationMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetOutReservationMessages() uint64 {
	if t == nil || t.OutReservationMessages == nil {
		return 0
	}
	return *t.OutReservationMessages
}

// GetOutReservationTearMessages retrieves the value of the leaf OutReservationTearMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutReservationTearMessages is set, it can
// safely use t.GetOutReservationTearMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutReservationTearMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetOutReservationTearMessages() uint64 {
	if t == nil || t.OutReservationTearMessages == nil {
		return 0
	}
	return *t.OutReservationTearMessages
}

// GetOutSrefreshMessages retrieves the value of the leaf OutSrefreshMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutSrefreshMessages is set, it can
// safely use t.GetOutSrefreshMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutSrefreshMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetOutSrefreshMessages() uint64 {
	if t == nil || t.OutSrefreshMessages == nil {
		return 0
	}
	return *t.OutSrefreshMessages
}

// GetPathTimeouts retrieves the value of the leaf PathTimeouts from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathTimeouts is set, it can
// safely use t.GetPathTimeouts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathTimeouts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetPathTimeouts() uint64 {
	if t == nil || t.PathTimeouts == nil {
		return 0
	}
	return *t.PathTimeouts
}

// GetRateLimitedMessages retrieves the value of the leaf RateLimitedMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RateLimitedMessages is set, it can
// safely use t.GetRateLimitedMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RateLimitedMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetRateLimitedMessages() uint64 {
	if t == nil || t.RateLimitedMessages == nil {
		return 0
	}
	return *t.RateLimitedMessages
}

// GetReservationTimeouts retrieves the value of the leaf ReservationTimeouts from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReservationTimeouts is set, it can
// safely use t.GetReservationTimeouts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReservationTimeouts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) GetReservationTimeouts() uint64 {
	if t == nil || t.ReservationTimeouts == nil {
		return 0
	}
	return *t.ReservationTimeouts
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Errors.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/global/state/counters/errors YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AuthenticationFail  *uint64           `path:"authentication-fail" module:"openconfig-network-instance"`
	ΛAuthenticationFail []ygot.Annotation `path:"@authentication-fail" ygotAnnotation:"true"`
	BadChecksum         *uint64           `path:"bad-checksum" module:"openconfig-network-instance"`
	ΛBadChecksum        []ygot.Annotation `path:"@bad-checksum" ygotAnnotation:"true"`
	BadPacketFormat     *uint64           `path:"bad-packet-format" module:"openconfig-network-instance"`
	ΛBadPacketFormat    []ygot.Annotation `path:"@bad-packet-format" ygotAnnotation:"true"`
	BadPacketLength     *uint64           `path:"bad-packet-length" module:"openconfig-network-instance"`
	ΛBadPacketLength    []ygot.Annotation `path:"@bad-packet-length" ygotAnnotation:"true"`
	OutOfOrder          *uint64           `path:"out-of-order" module:"openconfig-network-instance"`
	ΛOutOfOrder         []ygot.Annotation `path:"@out-of-order" ygotAnnotation:"true"`
	ReceivedNack        *uint64           `path:"received-nack" module:"openconfig-network-instance"`
	ΛReceivedNack       []ygot.Annotation `path:"@received-nack" ygotAnnotation:"true"`
	TransmitFailure     *uint64           `path:"transmit-failure" module:"openconfig-network-instance"`
	ΛTransmitFailure    []ygot.Annotation `path:"@transmit-failure" ygotAnnotation:"true"`
	TransmitQueueFull   *uint64           `path:"transmit-queue-full" module:"openconfig-network-instance"`
	ΛTransmitQueueFull  []ygot.Annotation `path:"@transmit-queue-full" ygotAnnotation:"true"`
	UnknownAck          *uint64           `path:"unknown-ack" module:"openconfig-network-instance"`
	ΛUnknownAck         []ygot.Annotation `path:"@unknown-ack" ygotAnnotation:"true"`
	UnknownNack         *uint64           `path:"unknown-nack" module:"openconfig-network-instance"`
	ΛUnknownNack        []ygot.Annotation `path:"@unknown-nack" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors) IsYANGGoStruct() {}

// GetAuthenticationFail retrieves the value of the leaf AuthenticationFail from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthenticationFail is set, it can
// safely use t.GetAuthenticationFail() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthenticationFail == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors) GetAuthenticationFail() uint64 {
	if t == nil || t.AuthenticationFail == nil {
		return 0
	}
	return *t.AuthenticationFail
}

// GetBadChecksum retrieves the value of the leaf BadChecksum from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BadChecksum is set, it can
// safely use t.GetBadChecksum() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BadChecksum == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors) GetBadChecksum() uint64 {
	if t == nil || t.BadChecksum == nil {
		return 0
	}
	return *t.BadChecksum
}

// GetBadPacketFormat retrieves the value of the leaf BadPacketFormat from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BadPacketFormat is set, it can
// safely use t.GetBadPacketFormat() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BadPacketFormat == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors) GetBadPacketFormat() uint64 {
	if t == nil || t.BadPacketFormat == nil {
		return 0
	}
	return *t.BadPacketFormat
}

// GetBadPacketLength retrieves the value of the leaf BadPacketLength from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BadPacketLength is set, it can
// safely use t.GetBadPacketLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BadPacketLength == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors) GetBadPacketLength() uint64 {
	if t == nil || t.BadPacketLength == nil {
		return 0
	}
	return *t.BadPacketLength
}

// GetOutOfOrder retrieves the value of the leaf OutOfOrder from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutOfOrder is set, it can
// safely use t.GetOutOfOrder() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutOfOrder == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors) GetOutOfOrder() uint64 {
	if t == nil || t.OutOfOrder == nil {
		return 0
	}
	return *t.OutOfOrder
}

// GetReceivedNack retrieves the value of the leaf ReceivedNack from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReceivedNack is set, it can
// safely use t.GetReceivedNack() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReceivedNack == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors) GetReceivedNack() uint64 {
	if t == nil || t.ReceivedNack == nil {
		return 0
	}
	return *t.ReceivedNack
}

// GetTransmitFailure retrieves the value of the leaf TransmitFailure from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TransmitFailure is set, it can
// safely use t.GetTransmitFailure() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TransmitFailure == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors) GetTransmitFailure() uint64 {
	if t == nil || t.TransmitFailure == nil {
		return 0
	}
	return *t.TransmitFailure
}

// GetTransmitQueueFull retrieves the value of the leaf TransmitQueueFull from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TransmitQueueFull is set, it can
// safely use t.GetTransmitQueueFull() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TransmitQueueFull == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors) GetTransmitQueueFull() uint64 {
	if t == nil || t.TransmitQueueFull == nil {
		return 0
	}
	return *t.TransmitQueueFull
}

// GetUnknownAck retrieves the value of the leaf UnknownAck from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UnknownAck is set, it can
// safely use t.GetUnknownAck() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UnknownAck == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors) GetUnknownAck() uint64 {
	if t == nil || t.UnknownAck == nil {
		return 0
	}
	return *t.UnknownAck
}

// GetUnknownNack retrieves the value of the leaf UnknownNack from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UnknownNack is set, it can
// safely use t.GetUnknownNack() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UnknownNack == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors) GetUnknownNack() uint64 {
	if t == nil || t.UnknownNack == nil {
		return 0
	}
	return *t.UnknownNack
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Counters_Errors) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/global/graceful-restart YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enable        *bool             `path:"config/enable" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnable       []ygot.Annotation `path:"config/@enable" ygotAnnotation:"true"`
	RecoveryTime  *uint32           `path:"config/recovery-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRecoveryTime []ygot.Annotation `path:"config/@recovery-time" ygotAnnotation:"true"`
	RestartTime   *uint32           `path:"config/restart-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRestartTime  []ygot.Annotation `path:"config/@restart-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart) IsYANGGoStruct() {}

// GetEnable retrieves the value of the leaf Enable from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enable is set, it can
// safely use t.GetEnable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enable == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart) GetEnable() bool {
	if t == nil || t.Enable == nil {
		return false
	}
	return *t.Enable
}

// GetRecoveryTime retrieves the value of the leaf RecoveryTime from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RecoveryTime is set, it can
// safely use t.GetRecoveryTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RecoveryTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart) GetRecoveryTime() uint32 {
	if t == nil || t.RecoveryTime == nil {
		return 0
	}
	return *t.RecoveryTime
}

// GetRestartTime retrieves the value of the leaf RestartTime from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RestartTime is set, it can
// safely use t.GetRestartTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RestartTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart) GetRestartTime() uint32 {
	if t == nil || t.RestartTime == nil {
		return 0
	}
	return *t.RestartTime
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enable == nil {
		var v bool = false
		t.Enable = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_GracefulRestart) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/global/hellos YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos struct {
	ΛMetadata         []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	HelloInterval     *uint16           `path:"config/hello-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloInterval    []ygot.Annotation `path:"config/@hello-interval" ygotAnnotation:"true"`
	RefreshReduction  *bool             `path:"config/refresh-reduction" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRefreshReduction []ygot.Annotation `path:"config/@refresh-reduction" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos) IsYANGGoStruct() {}

// GetHelloInterval retrieves the value of the leaf HelloInterval from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloInterval is set, it can
// safely use t.GetHelloInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos) GetHelloInterval() uint16 {
	if t == nil || t.HelloInterval == nil {
		return 9000
	}
	return *t.HelloInterval
}

// GetRefreshReduction retrieves the value of the leaf RefreshReduction from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RefreshReduction is set, it can
// safely use t.GetRefreshReduction() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RefreshReduction == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos) GetRefreshReduction() bool {
	if t == nil || t.RefreshReduction == nil {
		return true
	}
	return *t.RefreshReduction
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.HelloInterval == nil {
		var v uint16 = 9000
		t.HelloInterval = &v
	}
	if t.RefreshReduction == nil {
		var v bool = true
		t.RefreshReduction = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_Hellos) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/global/soft-preemption YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption struct {
	ΛMetadata              []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enable                 *bool             `path:"config/enable" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnable                []ygot.Annotation `path:"config/@enable" ygotAnnotation:"true"`
	SoftPreemptionTimeout  *uint16           `path:"config/soft-preemption-timeout" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSoftPreemptionTimeout []ygot.Annotation `path:"config/@soft-preemption-timeout" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption) IsYANGGoStruct() {}

// GetEnable retrieves the value of the leaf Enable from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enable is set, it can
// safely use t.GetEnable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enable == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption) GetEnable() bool {
	if t == nil || t.Enable == nil {
		return false
	}
	return *t.Enable
}

// GetSoftPreemptionTimeout retrieves the value of the leaf SoftPreemptionTimeout from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SoftPreemptionTimeout is set, it can
// safely use t.GetSoftPreemptionTimeout() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SoftPreemptionTimeout == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption) GetSoftPreemptionTimeout() uint16 {
	if t == nil || t.SoftPreemptionTimeout == nil {
		return 30
	}
	return *t.SoftPreemptionTimeout
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enable == nil {
		var v bool = false
		t.Enable = &v
	}
	if t.SoftPreemptionTimeout == nil {
		var v uint16 = 30
		t.SoftPreemptionTimeout = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Global_SoftPreemption) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/interface-attributes/interface YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface struct {
	ΛMetadata             []ygot.Annotation                                                                                                                                                               `path:"@" ygotAnnotation:"true"`
	Authentication        *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication                                                                                                        `path:"authentication" module:"openconfig-network-instance"`
	ΛAuthentication       []ygot.Annotation                                                                                                                                                               `path:"@authentication" ygotAnnotation:"true"`
	BandwidthReservation  map[NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation `path:"bandwidth-reservations/bandwidth-reservation" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidthReservation []ygot.Annotation                                                                                                                                                               `path:"bandwidth-reservations/@bandwidth-reservation" ygotAnnotation:"true"`
	Counters              *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters                                                                                                              `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters             []ygot.Annotation                                                                                                                                                               `path:"state/@counters" ygotAnnotation:"true"`
	Hellos                *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos                                                                                                                `path:"hellos" module:"openconfig-network-instance"`
	ΛHellos               []ygot.Annotation                                                                                                                                                               `path:"@hellos" ygotAnnotation:"true"`
	InterfaceId           *string                                                                                                                                                                         `path:"config/interface-id|interface-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛInterfaceId          []ygot.Annotation                                                                                                                                                               `path:"config/@interface-id|@interface-id" ygotAnnotation:"true"`
	InterfaceRef          *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef                                                                                                          `path:"interface-ref" module:"openconfig-network-instance"`
	ΛInterfaceRef         []ygot.Annotation                                                                                                                                                               `path:"@interface-ref" ygotAnnotation:"true"`
	MaxLinkBandwidth      *uint64                                                                                                                                                                         `path:"state/max-link-bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxLinkBandwidth     []ygot.Annotation                                                                                                                                                               `path:"state/@max-link-bandwidth" ygotAnnotation:"true"`
	Protection            *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection                                                                                                            `path:"protection" module:"openconfig-network-instance"`
	ΛProtection           []ygot.Annotation                                                                                                                                                               `path:"@protection" ygotAnnotation:"true"`
	Subscription          *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription                                                                                                          `path:"subscription" module:"openconfig-network-instance"`
	ΛSubscription         []ygot.Annotation                                                                                                                                                               `path:"@subscription" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) IsYANGGoStruct() {}

// NewBandwidthReservation creates a new entry in the BandwidthReservation list of the
// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) NewBandwidthReservation(Priority NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union) (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.BandwidthReservation == nil {
		t.BandwidthReservation = make(map[NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation)
	}

	key := Priority

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.BandwidthReservation[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list BandwidthReservation", key)
	}

	t.BandwidthReservation[key] = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation{
		Priority: Priority,
	}

	return t.BandwidthReservation[key], nil
}

// RenameBandwidthReservation renames an entry in the list BandwidthReservation within
// the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) RenameBandwidthReservation(oldK, newK NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union) error {
	if _, ok := t.BandwidthReservation[newK]; ok {
		return fmt.Errorf("key %v already exists in BandwidthReservation", newK)
	}

	e, ok := t.BandwidthReservation[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in BandwidthReservation", oldK)
	}
	e.Priority = newK

	t.BandwidthReservation[newK] = e
	delete(t.BandwidthReservation, oldK)
	return nil
}

// GetOrCreateBandwidthReservationMap returns the list (map) from NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) GetOrCreateBandwidthReservationMap() map[NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation {
	if t.BandwidthReservation == nil {
		t.BandwidthReservation = make(map[NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation)
	}
	return t.BandwidthReservation
}

// GetOrCreateBandwidthReservation retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) GetOrCreateBandwidthReservation(Priority NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union) *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation {

	key := Priority

	if v, ok := t.BandwidthReservation[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewBandwidthReservation(Priority)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateBandwidthReservation got unexpected error: %v", err))
	}
	return v
}

// GetBandwidthReservation retrieves the value with the specified key from
// the BandwidthReservation map field of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) GetBandwidthReservation(Priority NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union) *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation {

	if t == nil {
		return nil
	}

	key := Priority

	if lm, ok := t.BandwidthReservation[key]; ok {
		return lm
	}
	return nil
}

// AppendBandwidthReservation appends the supplied NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation struct to the
// list BandwidthReservation of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) AppendBandwidthReservation(v *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation) error {
	key := v.Priority

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.BandwidthReservation == nil {
		t.BandwidthReservation = make(map[NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation)
	}

	if _, ok := t.BandwidthReservation[key]; ok {
		return fmt.Errorf("duplicate key for list BandwidthReservation %v", key)
	}

	t.BandwidthReservation[key] = v
	return nil
}

// GetOrCreateAuthentication retrieves the value of the Authentication field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) GetOrCreateAuthentication() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication {
	if t.Authentication != nil {
		return t.Authentication
	}
	t.Authentication = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication{}
	return t.Authentication
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) GetOrCreateCounters() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters{}
	return t.Counters
}

// GetOrCreateHellos retrieves the value of the Hellos field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) GetOrCreateHellos() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos {
	if t.Hellos != nil {
		return t.Hellos
	}
	t.Hellos = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos{}
	return t.Hellos
}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) GetOrCreateInterfaceRef() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef{}
	return t.InterfaceRef
}

// GetOrCreateProtection retrieves the value of the Protection field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) GetOrCreateProtection() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection {
	if t.Protection != nil {
		return t.Protection
	}
	t.Protection = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection{}
	return t.Protection
}

// GetOrCreateSubscription retrieves the value of the Subscription field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) GetOrCreateSubscription() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription {
	if t.Subscription != nil {
		return t.Subscription
	}
	t.Subscription = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription{}
	return t.Subscription
}

// GetAuthentication returns the value of the Authentication struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface. If the receiver or the field Authentication is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) GetAuthentication() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication {
	if t != nil && t.Authentication != nil {
		return t.Authentication
	}
	return nil
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) GetCounters() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetHellos returns the value of the Hellos struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface. If the receiver or the field Hellos is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) GetHellos() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos {
	if t != nil && t.Hellos != nil {
		return t.Hellos
	}
	return nil
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) GetInterfaceRef() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetProtection returns the value of the Protection struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface. If the receiver or the field Protection is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) GetProtection() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection {
	if t != nil && t.Protection != nil {
		return t.Protection
	}
	return nil
}

// GetSubscription returns the value of the Subscription struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface. If the receiver or the field Subscription is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) GetSubscription() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription {
	if t != nil && t.Subscription != nil {
		return t.Subscription
	}
	return nil
}

// GetInterfaceId retrieves the value of the leaf InterfaceId from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceId is set, it can
// safely use t.GetInterfaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) GetInterfaceId() string {
	if t == nil || t.InterfaceId == nil {
		return ""
	}
	return *t.InterfaceId
}

// GetMaxLinkBandwidth retrieves the value of the leaf MaxLinkBandwidth from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxLinkBandwidth is set, it can
// safely use t.GetMaxLinkBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxLinkBandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) GetMaxLinkBandwidth() uint64 {
	if t == nil || t.MaxLinkBandwidth == nil {
		return 0
	}
	return *t.MaxLinkBandwidth
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Authentication.PopulateDefaults()
	t.Counters.PopulateDefaults()
	t.Hellos.PopulateDefaults()
	t.InterfaceRef.PopulateDefaults()
	t.Protection.PopulateDefaults()
	t.Subscription.PopulateDefaults()
	for _, e := range t.BandwidthReservation {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.InterfaceId == nil {
		return nil, fmt.Errorf("nil value for key InterfaceId")
	}

	return map[string]interface{}{
		"interface-id": *t.InterfaceId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/interface-attributes/interface/authentication YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication struct {
	ΛMetadata           []ygot.Annotation          `path:"@" ygotAnnotation:"true"`
	AuthenticationKey   *string                    `path:"config/authentication-key" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthenticationKey  []ygot.Annotation          `path:"config/@authentication-key" ygotAnnotation:"true"`
	AuthenticationType  E_MplsTypes_RSVP_AUTH_TYPE `path:"config/authentication-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthenticationType []ygot.Annotation          `path:"config/@authentication-type" ygotAnnotation:"true"`
	Enable              *bool                      `path:"config/enable" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnable             []ygot.Annotation          `path:"config/@enable" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication) IsYANGGoStruct() {}

// GetAuthenticationKey retrieves the value of the leaf AuthenticationKey from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthenticationKey is set, it can
// safely use t.GetAuthenticationKey() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthenticationKey == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication) GetAuthenticationKey() string {
	if t == nil || t.AuthenticationKey == nil {
		return ""
	}
	return *t.AuthenticationKey
}

// GetAuthenticationType retrieves the value of the leaf AuthenticationType from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthenticationType is set, it can
// safely use t.GetAuthenticationType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthenticationType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication) GetAuthenticationType() E_MplsTypes_RSVP_AUTH_TYPE {
	if t == nil || t.AuthenticationType == 0 {
		return 0
	}
	return t.AuthenticationType
}

// GetEnable retrieves the value of the leaf Enable from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enable is set, it can
// safely use t.GetEnable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enable == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication) GetEnable() bool {
	if t == nil || t.Enable == nil {
		return false
	}
	return *t.Enable
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enable == nil {
		var v bool = false
		t.Enable = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Authentication) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/interface-attributes/interface/bandwidth-reservations/bandwidth-reservation YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation struct {
	ΛMetadata                []ygot.Annotation                                                                            `path:"@" ygotAnnotation:"true"`
	ActiveReservationsCount  *uint64                                                                                      `path:"state/active-reservations-count" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛActiveReservationsCount []ygot.Annotation                                                                            `path:"state/@active-reservations-count" ygotAnnotation:"true"`
	AvailableBandwidth       *uint64                                                                                      `path:"state/available-bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAvailableBandwidth      []ygot.Annotation                                                                            `path:"state/@available-bandwidth" ygotAnnotation:"true"`
	HighwaterMark            *uint64                                                                                      `path:"state/highwater-mark" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHighwaterMark           []ygot.Annotation                                                                            `path:"state/@highwater-mark" ygotAnnotation:"true"`
	Priority                 NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union `path:"state/priority|priority" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPriority                []ygot.Annotation                                                                            `path:"state/@priority|@priority" ygotAnnotation:"true"`
	ReservedBandwidth        *uint64                                                                                      `path:"state/reserved-bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReservedBandwidth       []ygot.Annotation                                                                            `path:"state/@reserved-bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation) IsYANGGoStruct() {
}

// GetActiveReservationsCount retrieves the value of the leaf ActiveReservationsCount from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ActiveReservationsCount is set, it can
// safely use t.GetActiveReservationsCount() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ActiveReservationsCount == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation) GetActiveReservationsCount() uint64 {
	if t == nil || t.ActiveReservationsCount == nil {
		return 0
	}
	return *t.ActiveReservationsCount
}

// GetAvailableBandwidth retrieves the value of the leaf AvailableBandwidth from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AvailableBandwidth is set, it can
// safely use t.GetAvailableBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AvailableBandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation) GetAvailableBandwidth() uint64 {
	if t == nil || t.AvailableBandwidth == nil {
		return 0
	}
	return *t.AvailableBandwidth
}

// GetHighwaterMark retrieves the value of the leaf HighwaterMark from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HighwaterMark is set, it can
// safely use t.GetHighwaterMark() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HighwaterMark == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation) GetHighwaterMark() uint64 {
	if t == nil || t.HighwaterMark == nil {
		return 0
	}
	return *t.HighwaterMark
}

// GetPriority retrieves the value of the leaf Priority from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation) GetPriority() NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union {
	if t == nil || t.Priority == nil {
		return nil
	}
	return t.Priority
}

// GetReservedBandwidth retrieves the value of the leaf ReservedBandwidth from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReservedBandwidth is set, it can
// safely use t.GetReservedBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReservedBandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation) GetReservedBandwidth() uint64 {
	if t == nil || t.ReservedBandwidth == nil {
		return 0
	}
	return *t.ReservedBandwidth
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"priority": t.Priority,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/interface-attributes/interface/bandwidth-reservations/bandwidth-reservation/state/priority within the YANG schema.
// Union type can be one of [E_BandwidthReservation_Priority_Enum, UnionUint8].
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union interface {
	// Union type can be one of [E_BandwidthReservation_Priority_Enum, UnionUint8]
	Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union()
}

// Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union ensures that E_BandwidthReservation_Priority_Enum
// implements the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union interface.
func (E_BandwidthReservation_Priority_Enum) Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union() {
}

// Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union ensures that UnionUint8
// implements the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union interface.
func (UnionUint8) Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union() {
}

// To_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation) To_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union(i interface{}) (NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union, error) {
	if v, ok := i.(NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint8:
		return UnionUint8(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_BandwidthReservation_Priority_Union, unknown union type, got: %T, want any of [E_BandwidthReservation_Priority_Enum, uint8]", i, i)
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/interface-attributes/interface/state/counters YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters struct {
	ΛMetadata                    []ygot.Annotation                                                         `path:"@" ygotAnnotation:"true"`
	Errors                       *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors `path:"errors" module:"openconfig-network-instance"`
	ΛErrors                      []ygot.Annotation                                                         `path:"@errors" ygotAnnotation:"true"`
	InAckMessages                *uint64                                                                   `path:"in-ack-messages" module:"openconfig-network-instance"`
	ΛInAckMessages               []ygot.Annotation                                                         `path:"@in-ack-messages" ygotAnnotation:"true"`
	InHelloMessages              *uint64                                                                   `path:"in-hello-messages" module:"openconfig-network-instance"`
	ΛInHelloMessages             []ygot.Annotation                                                         `path:"@in-hello-messages" ygotAnnotation:"true"`
	InPathErrorMessages          *uint64                                                                   `path:"in-path-error-messages" module:"openconfig-network-instance"`
	ΛInPathErrorMessages         []ygot.Annotation                                                         `path:"@in-path-error-messages" ygotAnnotation:"true"`
	InPathMessages               *uint64                                                                   `path:"in-path-messages" module:"openconfig-network-instance"`
	ΛInPathMessages              []ygot.Annotation                                                         `path:"@in-path-messages" ygotAnnotation:"true"`
	InPathTearMessages           *uint64                                                                   `path:"in-path-tear-messages" module:"openconfig-network-instance"`
	ΛInPathTearMessages          []ygot.Annotation                                                         `path:"@in-path-tear-messages" ygotAnnotation:"true"`
	InReservationErrorMessages   *uint64                                                                   `path:"in-reservation-error-messages" module:"openconfig-network-instance"`
	ΛInReservationErrorMessages  []ygot.Annotation                                                         `path:"@in-reservation-error-messages" ygotAnnotation:"true"`
	InReservationMessages        *uint64                                                                   `path:"in-reservation-messages" module:"openconfig-network-instance"`
	ΛInReservationMessages       []ygot.Annotation                                                         `path:"@in-reservation-messages" ygotAnnotation:"true"`
	InReservationTearMessages    *uint64                                                                   `path:"in-reservation-tear-messages" module:"openconfig-network-instance"`
	ΛInReservationTearMessages   []ygot.Annotation                                                         `path:"@in-reservation-tear-messages" ygotAnnotation:"true"`
	InSrefreshMessages           *uint64                                                                   `path:"in-srefresh-messages" module:"openconfig-network-instance"`
	ΛInSrefreshMessages          []ygot.Annotation                                                         `path:"@in-srefresh-messages" ygotAnnotation:"true"`
	OutAckMessages               *uint64                                                                   `path:"out-ack-messages" module:"openconfig-network-instance"`
	ΛOutAckMessages              []ygot.Annotation                                                         `path:"@out-ack-messages" ygotAnnotation:"true"`
	OutHelloMessages             *uint64                                                                   `path:"out-hello-messages" module:"openconfig-network-instance"`
	ΛOutHelloMessages            []ygot.Annotation                                                         `path:"@out-hello-messages" ygotAnnotation:"true"`
	OutPathErrorMessages         *uint64                                                                   `path:"out-path-error-messages" module:"openconfig-network-instance"`
	ΛOutPathErrorMessages        []ygot.Annotation                                                         `path:"@out-path-error-messages" ygotAnnotation:"true"`
	OutPathMessages              *uint64                                                                   `path:"out-path-messages" module:"openconfig-network-instance"`
	ΛOutPathMessages             []ygot.Annotation                                                         `path:"@out-path-messages" ygotAnnotation:"true"`
	OutPathTearMessages          *uint64                                                                   `path:"out-path-tear-messages" module:"openconfig-network-instance"`
	ΛOutPathTearMessages         []ygot.Annotation                                                         `path:"@out-path-tear-messages" ygotAnnotation:"true"`
	OutReservationErrorMessages  *uint64                                                                   `path:"out-reservation-error-messages" module:"openconfig-network-instance"`
	ΛOutReservationErrorMessages []ygot.Annotation                                                         `path:"@out-reservation-error-messages" ygotAnnotation:"true"`
	OutReservationMessages       *uint64                                                                   `path:"out-reservation-messages" module:"openconfig-network-instance"`
	ΛOutReservationMessages      []ygot.Annotation                                                         `path:"@out-reservation-messages" ygotAnnotation:"true"`
	OutReservationTearMessages   *uint64                                                                   `path:"out-reservation-tear-messages" module:"openconfig-network-instance"`
	ΛOutReservationTearMessages  []ygot.Annotation                                                         `path:"@out-reservation-tear-messages" ygotAnnotation:"true"`
	OutSrefreshMessages          *uint64                                                                   `path:"out-srefresh-messages" module:"openconfig-network-instance"`
	ΛOutSrefreshMessages         []ygot.Annotation                                                         `path:"@out-srefresh-messages" ygotAnnotation:"true"`
	RateLimitedMessages          *uint64                                                                   `path:"rate-limited-messages" module:"openconfig-network-instance"`
	ΛRateLimitedMessages         []ygot.Annotation                                                         `path:"@rate-limited-messages" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) IsYANGGoStruct() {}

// GetOrCreateErrors retrieves the value of the Errors field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetOrCreateErrors() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors {
	if t.Errors != nil {
		return t.Errors
	}
	t.Errors = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors{}
	return t.Errors
}

// GetErrors returns the value of the Errors struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters. If the receiver or the field Errors is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetErrors() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors {
	if t != nil && t.Errors != nil {
		return t.Errors
	}
	return nil
}

// GetInAckMessages retrieves the value of the leaf InAckMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InAckMessages is set, it can
// safely use t.GetInAckMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InAckMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetInAckMessages() uint64 {
	if t == nil || t.InAckMessages == nil {
		return 0
	}
	return *t.InAckMessages
}

// GetInHelloMessages retrieves the value of the leaf InHelloMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InHelloMessages is set, it can
// safely use t.GetInHelloMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InHelloMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetInHelloMessages() uint64 {
	if t == nil || t.InHelloMessages == nil {
		return 0
	}
	return *t.InHelloMessages
}

// GetInPathErrorMessages retrieves the value of the leaf InPathErrorMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPathErrorMessages is set, it can
// safely use t.GetInPathErrorMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPathErrorMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetInPathErrorMessages() uint64 {
	if t == nil || t.InPathErrorMessages == nil {
		return 0
	}
	return *t.InPathErrorMessages
}

// GetInPathMessages retrieves the value of the leaf InPathMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPathMessages is set, it can
// safely use t.GetInPathMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPathMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetInPathMessages() uint64 {
	if t == nil || t.InPathMessages == nil {
		return 0
	}
	return *t.InPathMessages
}

// GetInPathTearMessages retrieves the value of the leaf InPathTearMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPathTearMessages is set, it can
// safely use t.GetInPathTearMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPathTearMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetInPathTearMessages() uint64 {
	if t == nil || t.InPathTearMessages == nil {
		return 0
	}
	return *t.InPathTearMessages
}

// GetInReservationErrorMessages retrieves the value of the leaf InReservationErrorMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InReservationErrorMessages is set, it can
// safely use t.GetInReservationErrorMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InReservationErrorMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetInReservationErrorMessages() uint64 {
	if t == nil || t.InReservationErrorMessages == nil {
		return 0
	}
	return *t.InReservationErrorMessages
}

// GetInReservationMessages retrieves the value of the leaf InReservationMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InReservationMessages is set, it can
// safely use t.GetInReservationMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InReservationMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetInReservationMessages() uint64 {
	if t == nil || t.InReservationMessages == nil {
		return 0
	}
	return *t.InReservationMessages
}

// GetInReservationTearMessages retrieves the value of the leaf InReservationTearMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InReservationTearMessages is set, it can
// safely use t.GetInReservationTearMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InReservationTearMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetInReservationTearMessages() uint64 {
	if t == nil || t.InReservationTearMessages == nil {
		return 0
	}
	return *t.InReservationTearMessages
}

// GetInSrefreshMessages retrieves the value of the leaf InSrefreshMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InSrefreshMessages is set, it can
// safely use t.GetInSrefreshMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InSrefreshMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetInSrefreshMessages() uint64 {
	if t == nil || t.InSrefreshMessages == nil {
		return 0
	}
	return *t.InSrefreshMessages
}

// GetOutAckMessages retrieves the value of the leaf OutAckMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutAckMessages is set, it can
// safely use t.GetOutAckMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutAckMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetOutAckMessages() uint64 {
	if t == nil || t.OutAckMessages == nil {
		return 0
	}
	return *t.OutAckMessages
}

// GetOutHelloMessages retrieves the value of the leaf OutHelloMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutHelloMessages is set, it can
// safely use t.GetOutHelloMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutHelloMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetOutHelloMessages() uint64 {
	if t == nil || t.OutHelloMessages == nil {
		return 0
	}
	return *t.OutHelloMessages
}

// GetOutPathErrorMessages retrieves the value of the leaf OutPathErrorMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPathErrorMessages is set, it can
// safely use t.GetOutPathErrorMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPathErrorMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetOutPathErrorMessages() uint64 {
	if t == nil || t.OutPathErrorMessages == nil {
		return 0
	}
	return *t.OutPathErrorMessages
}

// GetOutPathMessages retrieves the value of the leaf OutPathMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPathMessages is set, it can
// safely use t.GetOutPathMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPathMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetOutPathMessages() uint64 {
	if t == nil || t.OutPathMessages == nil {
		return 0
	}
	return *t.OutPathMessages
}

// GetOutPathTearMessages retrieves the value of the leaf OutPathTearMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPathTearMessages is set, it can
// safely use t.GetOutPathTearMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPathTearMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetOutPathTearMessages() uint64 {
	if t == nil || t.OutPathTearMessages == nil {
		return 0
	}
	return *t.OutPathTearMessages
}

// GetOutReservationErrorMessages retrieves the value of the leaf OutReservationErrorMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutReservationErrorMessages is set, it can
// safely use t.GetOutReservationErrorMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutReservationErrorMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetOutReservationErrorMessages() uint64 {
	if t == nil || t.OutReservationErrorMessages == nil {
		return 0
	}
	return *t.OutReservationErrorMessages
}

// GetOutReservationMessages retrieves the value of the leaf OutReservationMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutReservationMessages is set, it can
// safely use t.GetOutReservationMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutReservationMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetOutReservationMessages() uint64 {
	if t == nil || t.OutReservationMessages == nil {
		return 0
	}
	return *t.OutReservationMessages
}

// GetOutReservationTearMessages retrieves the value of the leaf OutReservationTearMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutReservationTearMessages is set, it can
// safely use t.GetOutReservationTearMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutReservationTearMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetOutReservationTearMessages() uint64 {
	if t == nil || t.OutReservationTearMessages == nil {
		return 0
	}
	return *t.OutReservationTearMessages
}

// GetOutSrefreshMessages retrieves the value of the leaf OutSrefreshMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutSrefreshMessages is set, it can
// safely use t.GetOutSrefreshMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutSrefreshMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetOutSrefreshMessages() uint64 {
	if t == nil || t.OutSrefreshMessages == nil {
		return 0
	}
	return *t.OutSrefreshMessages
}

// GetRateLimitedMessages retrieves the value of the leaf RateLimitedMessages from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RateLimitedMessages is set, it can
// safely use t.GetRateLimitedMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RateLimitedMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) GetRateLimitedMessages() uint64 {
	if t == nil || t.RateLimitedMessages == nil {
		return 0
	}
	return *t.RateLimitedMessages
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Errors.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/interface-attributes/interface/state/counters/errors YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AuthenticationFail  *uint64           `path:"authentication-fail" module:"openconfig-network-instance"`
	ΛAuthenticationFail []ygot.Annotation `path:"@authentication-fail" ygotAnnotation:"true"`
	BadChecksum         *uint64           `path:"bad-checksum" module:"openconfig-network-instance"`
	ΛBadChecksum        []ygot.Annotation `path:"@bad-checksum" ygotAnnotation:"true"`
	BadPacketFormat     *uint64           `path:"bad-packet-format" module:"openconfig-network-instance"`
	ΛBadPacketFormat    []ygot.Annotation `path:"@bad-packet-format" ygotAnnotation:"true"`
	BadPacketLength     *uint64           `path:"bad-packet-length" module:"openconfig-network-instance"`
	ΛBadPacketLength    []ygot.Annotation `path:"@bad-packet-length" ygotAnnotation:"true"`
	OutOfOrder          *uint64           `path:"out-of-order" module:"openconfig-network-instance"`
	ΛOutOfOrder         []ygot.Annotation `path:"@out-of-order" ygotAnnotation:"true"`
	ReceivedNack        *uint64           `path:"received-nack" module:"openconfig-network-instance"`
	ΛReceivedNack       []ygot.Annotation `path:"@received-nack" ygotAnnotation:"true"`
	TransmitFailure     *uint64           `path:"transmit-failure" module:"openconfig-network-instance"`
	ΛTransmitFailure    []ygot.Annotation `path:"@transmit-failure" ygotAnnotation:"true"`
	TransmitQueueFull   *uint64           `path:"transmit-queue-full" module:"openconfig-network-instance"`
	ΛTransmitQueueFull  []ygot.Annotation `path:"@transmit-queue-full" ygotAnnotation:"true"`
	UnknownAck          *uint64           `path:"unknown-ack" module:"openconfig-network-instance"`
	ΛUnknownAck         []ygot.Annotation `path:"@unknown-ack" ygotAnnotation:"true"`
	UnknownNack         *uint64           `path:"unknown-nack" module:"openconfig-network-instance"`
	ΛUnknownNack        []ygot.Annotation `path:"@unknown-nack" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors) IsYANGGoStruct() {}

// GetAuthenticationFail retrieves the value of the leaf AuthenticationFail from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthenticationFail is set, it can
// safely use t.GetAuthenticationFail() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthenticationFail == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors) GetAuthenticationFail() uint64 {
	if t == nil || t.AuthenticationFail == nil {
		return 0
	}
	return *t.AuthenticationFail
}

// GetBadChecksum retrieves the value of the leaf BadChecksum from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BadChecksum is set, it can
// safely use t.GetBadChecksum() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BadChecksum == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors) GetBadChecksum() uint64 {
	if t == nil || t.BadChecksum == nil {
		return 0
	}
	return *t.BadChecksum
}

// GetBadPacketFormat retrieves the value of the leaf BadPacketFormat from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BadPacketFormat is set, it can
// safely use t.GetBadPacketFormat() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BadPacketFormat == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors) GetBadPacketFormat() uint64 {
	if t == nil || t.BadPacketFormat == nil {
		return 0
	}
	return *t.BadPacketFormat
}

// GetBadPacketLength retrieves the value of the leaf BadPacketLength from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BadPacketLength is set, it can
// safely use t.GetBadPacketLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BadPacketLength == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors) GetBadPacketLength() uint64 {
	if t == nil || t.BadPacketLength == nil {
		return 0
	}
	return *t.BadPacketLength
}

// GetOutOfOrder retrieves the value of the leaf OutOfOrder from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutOfOrder is set, it can
// safely use t.GetOutOfOrder() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutOfOrder == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors) GetOutOfOrder() uint64 {
	if t == nil || t.OutOfOrder == nil {
		return 0
	}
	return *t.OutOfOrder
}

// GetReceivedNack retrieves the value of the leaf ReceivedNack from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReceivedNack is set, it can
// safely use t.GetReceivedNack() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReceivedNack == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors) GetReceivedNack() uint64 {
	if t == nil || t.ReceivedNack == nil {
		return 0
	}
	return *t.ReceivedNack
}

// GetTransmitFailure retrieves the value of the leaf TransmitFailure from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TransmitFailure is set, it can
// safely use t.GetTransmitFailure() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TransmitFailure == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors) GetTransmitFailure() uint64 {
	if t == nil || t.TransmitFailure == nil {
		return 0
	}
	return *t.TransmitFailure
}

// GetTransmitQueueFull retrieves the value of the leaf TransmitQueueFull from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TransmitQueueFull is set, it can
// safely use t.GetTransmitQueueFull() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TransmitQueueFull == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors) GetTransmitQueueFull() uint64 {
	if t == nil || t.TransmitQueueFull == nil {
		return 0
	}
	return *t.TransmitQueueFull
}

// GetUnknownAck retrieves the value of the leaf UnknownAck from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UnknownAck is set, it can
// safely use t.GetUnknownAck() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UnknownAck == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors) GetUnknownAck() uint64 {
	if t == nil || t.UnknownAck == nil {
		return 0
	}
	return *t.UnknownAck
}

// GetUnknownNack retrieves the value of the leaf UnknownNack from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UnknownNack is set, it can
// safely use t.GetUnknownNack() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UnknownNack == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors) GetUnknownNack() uint64 {
	if t == nil || t.UnknownNack == nil {
		return 0
	}
	return *t.UnknownNack
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Counters_Errors) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/interface-attributes/interface/hellos YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos struct {
	ΛMetadata         []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	HelloInterval     *uint16           `path:"config/hello-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloInterval    []ygot.Annotation `path:"config/@hello-interval" ygotAnnotation:"true"`
	RefreshReduction  *bool             `path:"config/refresh-reduction" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRefreshReduction []ygot.Annotation `path:"config/@refresh-reduction" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos) IsYANGGoStruct() {}

// GetHelloInterval retrieves the value of the leaf HelloInterval from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloInterval is set, it can
// safely use t.GetHelloInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos) GetHelloInterval() uint16 {
	if t == nil || t.HelloInterval == nil {
		return 9000
	}
	return *t.HelloInterval
}

// GetRefreshReduction retrieves the value of the leaf RefreshReduction from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RefreshReduction is set, it can
// safely use t.GetRefreshReduction() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RefreshReduction == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos) GetRefreshReduction() bool {
	if t == nil || t.RefreshReduction == nil {
		return true
	}
	return *t.RefreshReduction
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.HelloInterval == nil {
		var v uint16 = 9000
		t.HelloInterval = &v
	}
	if t.RefreshReduction == nil {
		var v bool = true
		t.RefreshReduction = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Hellos) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/interface-attributes/interface/interface-ref YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/interface-attributes/interface/protection YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection struct {
	ΛMetadata                     []ygot.Annotation           `path:"@" ygotAnnotation:"true"`
	BypassOptimizeInterval        *uint16                     `path:"config/bypass-optimize-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBypassOptimizeInterval       []ygot.Annotation           `path:"config/@bypass-optimize-interval" ygotAnnotation:"true"`
	LinkProtectionStyleRequested  E_MplsTypes_PROTECTION_TYPE `path:"config/link-protection-style-requested" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLinkProtectionStyleRequested []ygot.Annotation           `path:"config/@link-protection-style-requested" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection) IsYANGGoStruct() {}

// GetBypassOptimizeInterval retrieves the value of the leaf BypassOptimizeInterval from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BypassOptimizeInterval is set, it can
// safely use t.GetBypassOptimizeInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BypassOptimizeInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection) GetBypassOptimizeInterval() uint16 {
	if t == nil || t.BypassOptimizeInterval == nil {
		return 0
	}
	return *t.BypassOptimizeInterval
}

// GetLinkProtectionStyleRequested retrieves the value of the leaf LinkProtectionStyleRequested from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkProtectionStyleRequested is set, it can
// safely use t.GetLinkProtectionStyleRequested() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkProtectionStyleRequested == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection) GetLinkProtectionStyleRequested() E_MplsTypes_PROTECTION_TYPE {
	if t == nil || t.LinkProtectionStyleRequested == 0 {
		return MplsTypes_PROTECTION_TYPE_LINK_NODE_PROTECTION_REQUESTED
	}
	return t.LinkProtectionStyleRequested
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.LinkProtectionStyleRequested == 0 {
		t.LinkProtectionStyleRequested = MplsTypes_PROTECTION_TYPE_LINK_NODE_PROTECTION_REQUESTED
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Protection) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/interface-attributes/interface/subscription YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription struct {
	ΛMetadata                         []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	CalculatedAbsoluteSubscriptionBw  *uint64           `path:"state/calculated-absolute-subscription-bw" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCalculatedAbsoluteSubscriptionBw []ygot.Annotation `path:"state/@calculated-absolute-subscription-bw" ygotAnnotation:"true"`
	Subscription                      *uint8            `path:"config/subscription" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubscription                     []ygot.Annotation `path:"config/@subscription" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription) IsYANGGoStruct() {}

// GetCalculatedAbsoluteSubscriptionBw retrieves the value of the leaf CalculatedAbsoluteSubscriptionBw from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CalculatedAbsoluteSubscriptionBw is set, it can
// safely use t.GetCalculatedAbsoluteSubscriptionBw() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CalculatedAbsoluteSubscriptionBw == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription) GetCalculatedAbsoluteSubscriptionBw() uint64 {
	if t == nil || t.CalculatedAbsoluteSubscriptionBw == nil {
		return 0
	}
	return *t.CalculatedAbsoluteSubscriptionBw
}

// GetSubscription retrieves the value of the leaf Subscription from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subscription is set, it can
// safely use t.GetSubscription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subscription == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription) GetSubscription() uint8 {
	if t == nil || t.Subscription == nil {
		return 0
	}
	return *t.Subscription
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Interface_Subscription) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/neighbors/neighbor YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor struct {
	ΛMetadata          []ygot.Annotation         `path:"@" ygotAnnotation:"true"`
	Address            *string                   `path:"state/address|address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAddress           []ygot.Annotation         `path:"state/@address|@address" ygotAnnotation:"true"`
	DetectedInterface  *string                   `path:"state/detected-interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDetectedInterface []ygot.Annotation         `path:"state/@detected-interface" ygotAnnotation:"true"`
	NeighborStatus     E_Neighbor_NeighborStatus `path:"state/neighbor-status" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighborStatus    []ygot.Annotation         `path:"state/@neighbor-status" ygotAnnotation:"true"`
	RefreshReduction   *bool                     `path:"state/refresh-reduction" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRefreshReduction  []ygot.Annotation         `path:"state/@refresh-reduction" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor) IsYANGGoStruct() {}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor) GetAddress() string {
	if t == nil || t.Address == nil {
		return ""
	}
	return *t.Address
}

// GetDetectedInterface retrieves the value of the leaf DetectedInterface from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DetectedInterface is set, it can
// safely use t.GetDetectedInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DetectedInterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor) GetDetectedInterface() string {
	if t == nil || t.DetectedInterface == nil {
		return ""
	}
	return *t.DetectedInterface
}

// GetNeighborStatus retrieves the value of the leaf NeighborStatus from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborStatus is set, it can
// safely use t.GetNeighborStatus() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborStatus == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor) GetNeighborStatus() E_Neighbor_NeighborStatus {
	if t == nil || t.NeighborStatus == 0 {
		return 0
	}
	return t.NeighborStatus
}

// GetRefreshReduction retrieves the value of the leaf RefreshReduction from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RefreshReduction is set, it can
// safely use t.GetRefreshReduction() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RefreshReduction == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor) GetRefreshReduction() bool {
	if t == nil || t.RefreshReduction == nil {
		return false
	}
	return *t.RefreshReduction
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Address == nil {
		return nil, fmt.Errorf("nil value for key Address")
	}

	return map[string]interface{}{
		"address": *t.Address,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Neighbor) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/sessions/session YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session struct {
	ΛMetadata            []ygot.Annotation                                                                      `path:"@" ygotAnnotation:"true"`
	DestinationAddress   *string                                                                                `path:"state/destination-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDestinationAddress  []ygot.Annotation                                                                      `path:"state/@destination-address" ygotAnnotation:"true"`
	ExplicitRouteObject  map[uint64]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject `path:"explicit-route-objects/explicit-route-object" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExplicitRouteObject []ygot.Annotation                                                                      `path:"explicit-route-objects/@explicit-route-object" ygotAnnotation:"true"`
	LabelIn              NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelIn_Union                   `path:"state/label-in" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabelIn             []ygot.Annotation                                                                      `path:"state/@label-in" ygotAnnotation:"true"`
	LabelOut             NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelOut_Union                  `path:"state/label-out" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabelOut            []ygot.Annotation                                                                      `path:"state/@label-out" ygotAnnotation:"true"`
	LocalIndex           *uint64                                                                                `path:"state/local-index|local-index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛLocalIndex          []ygot.Annotation                                                                      `path:"state/@local-index|@local-index" ygotAnnotation:"true"`
	LspId                *uint16                                                                                `path:"state/lsp-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLspId               []ygot.Annotation                                                                      `path:"state/@lsp-id" ygotAnnotation:"true"`
	ProtectionRequested  E_MplsTypes_PROTECTION_TYPE                                                            `path:"state/protection-requested" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProtectionRequested []ygot.Annotation                                                                      `path:"state/@protection-requested" ygotAnnotation:"true"`
	RecordRouteObject    map[uint8]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject    `path:"record-route-objects/record-route-object" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRecordRouteObject   []ygot.Annotation                                                                      `path:"record-route-objects/@record-route-object" ygotAnnotation:"true"`
	SenderTspec          *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec                    `path:"state/sender-tspec" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSenderTspec         []ygot.Annotation                                                                      `path:"state/@sender-tspec" ygotAnnotation:"true"`
	SessionName          *string                                                                                `path:"state/session-name" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSessionName         []ygot.Annotation                                                                      `path:"state/@session-name" ygotAnnotation:"true"`
	SourceAddress        *string                                                                                `path:"state/source-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSourceAddress       []ygot.Annotation                                                                      `path:"state/@source-address" ygotAnnotation:"true"`
	Status               E_Session_Status                                                                       `path:"state/status" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛStatus              []ygot.Annotation                                                                      `path:"state/@status" ygotAnnotation:"true"`
	TunnelId             *uint16                                                                                `path:"state/tunnel-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTunnelId            []ygot.Annotation                                                                      `path:"state/@tunnel-id" ygotAnnotation:"true"`
	Type                 E_MplsTypes_LSP_ROLE                                                                   `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType                []ygot.Annotation                                                                      `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) IsYANGGoStruct() {}

// NewExplicitRouteObject creates a new entry in the ExplicitRouteObject list of the
// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) NewExplicitRouteObject(Index uint64) (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ExplicitRouteObject == nil {
		t.ExplicitRouteObject = make(map[uint64]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.ExplicitRouteObject[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list ExplicitRouteObject", key)
	}

	t.ExplicitRouteObject[key] = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject{
		Index: &Index,
	}

	return t.ExplicitRouteObject[key], nil
}

// RenameExplicitRouteObject renames an entry in the list ExplicitRouteObject within
// the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) RenameExplicitRouteObject(oldK, newK uint64) error {
	if _, ok := t.ExplicitRouteObject[newK]; ok {
		return fmt.Errorf("key %v already exists in ExplicitRouteObject", newK)
	}

	e, ok := t.ExplicitRouteObject[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in ExplicitRouteObject", oldK)
	}
	e.Index = &newK

	t.ExplicitRouteObject[newK] = e
	delete(t.ExplicitRouteObject, oldK)
	return nil
}

// GetOrCreateExplicitRouteObjectMap returns the list (map) from NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetOrCreateExplicitRouteObjectMap() map[uint64]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject {
	if t.ExplicitRouteObject == nil {
		t.ExplicitRouteObject = make(map[uint64]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject)
	}
	return t.ExplicitRouteObject
}

// GetOrCreateExplicitRouteObject retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetOrCreateExplicitRouteObject(Index uint64) *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject {

	key := Index

	if v, ok := t.ExplicitRouteObject[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewExplicitRouteObject(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateExplicitRouteObject got unexpected error: %v", err))
	}
	return v
}

// GetExplicitRouteObject retrieves the value with the specified key from
// the ExplicitRouteObject map field of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetExplicitRouteObject(Index uint64) *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.ExplicitRouteObject[key]; ok {
		return lm
	}
	return nil
}

// AppendExplicitRouteObject appends the supplied NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject struct to the
// list ExplicitRouteObject of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) AppendExplicitRouteObject(v *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ExplicitRouteObject == nil {
		t.ExplicitRouteObject = make(map[uint64]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject)
	}

	if _, ok := t.ExplicitRouteObject[key]; ok {
		return fmt.Errorf("duplicate key for list ExplicitRouteObject %v", key)
	}

	t.ExplicitRouteObject[key] = v
	return nil
}

// NewRecordRouteObject creates a new entry in the RecordRouteObject list of the
// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) NewRecordRouteObject(Index uint8) (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.RecordRouteObject == nil {
		t.RecordRouteObject = make(map[uint8]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.RecordRouteObject[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list RecordRouteObject", key)
	}

	t.RecordRouteObject[key] = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject{
		Index: &Index,
	}

	return t.RecordRouteObject[key], nil
}

// RenameRecordRouteObject renames an entry in the list RecordRouteObject within
// the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) RenameRecordRouteObject(oldK, newK uint8) error {
	if _, ok := t.RecordRouteObject[newK]; ok {
		return fmt.Errorf("key %v already exists in RecordRouteObject", newK)
	}

	e, ok := t.RecordRouteObject[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in RecordRouteObject", oldK)
	}
	e.Index = &newK

	t.RecordRouteObject[newK] = e
	delete(t.RecordRouteObject, oldK)
	return nil
}

// GetOrCreateRecordRouteObjectMap returns the list (map) from NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetOrCreateRecordRouteObjectMap() map[uint8]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject {
	if t.RecordRouteObject == nil {
		t.RecordRouteObject = make(map[uint8]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject)
	}
	return t.RecordRouteObject
}

// GetOrCreateRecordRouteObject retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetOrCreateRecordRouteObject(Index uint8) *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject {

	key := Index

	if v, ok := t.RecordRouteObject[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRecordRouteObject(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRecordRouteObject got unexpected error: %v", err))
	}
	return v
}

// GetRecordRouteObject retrieves the value with the specified key from
// the RecordRouteObject map field of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetRecordRouteObject(Index uint8) *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.RecordRouteObject[key]; ok {
		return lm
	}
	return nil
}

// AppendRecordRouteObject appends the supplied NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject struct to the
// list RecordRouteObject of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) AppendRecordRouteObject(v *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.RecordRouteObject == nil {
		t.RecordRouteObject = make(map[uint8]*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject)
	}

	if _, ok := t.RecordRouteObject[key]; ok {
		return fmt.Errorf("duplicate key for list RecordRouteObject %v", key)
	}

	t.RecordRouteObject[key] = v
	return nil
}

// GetOrCreateSenderTspec retrieves the value of the SenderTspec field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetOrCreateSenderTspec() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec {
	if t.SenderTspec != nil {
		return t.SenderTspec
	}
	t.SenderTspec = &NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec{}
	return t.SenderTspec
}

// GetSenderTspec returns the value of the SenderTspec struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session. If the receiver or the field SenderTspec is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetSenderTspec() *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec {
	if t != nil && t.SenderTspec != nil {
		return t.SenderTspec
	}
	return nil
}

// GetDestinationAddress retrieves the value of the leaf DestinationAddress from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationAddress is set, it can
// safely use t.GetDestinationAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetDestinationAddress() string {
	if t == nil || t.DestinationAddress == nil {
		return ""
	}
	return *t.DestinationAddress
}

// GetLabelIn retrieves the value of the leaf LabelIn from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LabelIn is set, it can
// safely use t.GetLabelIn() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LabelIn == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetLabelIn() NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelIn_Union {
	if t == nil || t.LabelIn == nil {
		return nil
	}
	return t.LabelIn
}

// GetLabelOut retrieves the value of the leaf LabelOut from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LabelOut is set, it can
// safely use t.GetLabelOut() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LabelOut == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetLabelOut() NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelOut_Union {
	if t == nil || t.LabelOut == nil {
		return nil
	}
	return t.LabelOut
}

// GetLocalIndex retrieves the value of the leaf LocalIndex from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalIndex is set, it can
// safely use t.GetLocalIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetLocalIndex() uint64 {
	if t == nil || t.LocalIndex == nil {
		return 0
	}
	return *t.LocalIndex
}

// GetLspId retrieves the value of the leaf LspId from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LspId is set, it can
// safely use t.GetLspId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LspId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetLspId() uint16 {
	if t == nil || t.LspId == nil {
		return 0
	}
	return *t.LspId
}

// GetProtectionRequested retrieves the value of the leaf ProtectionRequested from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ProtectionRequested is set, it can
// safely use t.GetProtectionRequested() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ProtectionRequested == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetProtectionRequested() E_MplsTypes_PROTECTION_TYPE {
	if t == nil || t.ProtectionRequested == 0 {
		return 0
	}
	return t.ProtectionRequested
}

// GetSessionName retrieves the value of the leaf SessionName from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SessionName is set, it can
// safely use t.GetSessionName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SessionName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetSessionName() string {
	if t == nil || t.SessionName == nil {
		return ""
	}
	return *t.SessionName
}

// GetSourceAddress retrieves the value of the leaf SourceAddress from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddress is set, it can
// safely use t.GetSourceAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetSourceAddress() string {
	if t == nil || t.SourceAddress == nil {
		return ""
	}
	return *t.SourceAddress
}

// GetStatus retrieves the value of the leaf Status from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Status is set, it can
// safely use t.GetStatus() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Status == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetStatus() E_Session_Status {
	if t == nil || t.Status == 0 {
		return 0
	}
	return t.Status
}

// GetTunnelId retrieves the value of the leaf TunnelId from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TunnelId is set, it can
// safely use t.GetTunnelId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TunnelId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetTunnelId() uint16 {
	if t == nil || t.TunnelId == nil {
		return 0
	}
	return *t.TunnelId
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) GetType() E_MplsTypes_LSP_ROLE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.SenderTspec.PopulateDefaults()
	for _, e := range t.ExplicitRouteObject {
		e.PopulateDefaults()
	}
	for _, e := range t.RecordRouteObject {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) ΛListKeyMap() (map[string]interface{}, error) {
	if t.LocalIndex == nil {
		return nil, fmt.Errorf("nil value for key LocalIndex")
	}

	return map[string]interface{}{
		"local-index": *t.LocalIndex,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelIn_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/sessions/session/state/label-in within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelIn_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelIn_Union()
}

// Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelIn_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelIn_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelIn_Union() {
}

// Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelIn_Union ensures that UnionUint32
// implements the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelIn_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelIn_Union() {
}

// To_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelIn_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelIn_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) To_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelIn_Union(i interface{}) (NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelIn_Union, error) {
	if v, ok := i.(NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelIn_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelIn_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelOut_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/sessions/session/state/label-out within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelOut_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelOut_Union()
}

// Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelOut_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelOut_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelOut_Union() {
}

// Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelOut_Union ensures that UnionUint32
// implements the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelOut_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelOut_Union() {
}

// To_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelOut_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelOut_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session) To_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelOut_Union(i interface{}) (NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelOut_Union, error) {
	if v, ok := i.(NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelOut_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_LabelOut_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/sessions/session/explicit-route-objects/explicit-route-object YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject struct {
	ΛMetadata    []ygot.Annotation                                                                      `path:"@" ygotAnnotation:"true"`
	Asn          *uint32                                                                                `path:"state/asn" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAsn         []ygot.Annotation                                                                      `path:"state/@asn" ygotAnnotation:"true"`
	Index        *uint64                                                                                `path:"state/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex       []ygot.Annotation                                                                      `path:"state/@index|@index" ygotAnnotation:"true"`
	InterfaceId  *uint32                                                                                `path:"state/interface-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterfaceId []ygot.Annotation                                                                      `path:"state/@interface-id" ygotAnnotation:"true"`
	IpPrefix     *string                                                                                `path:"state/ip-prefix" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpPrefix    []ygot.Annotation                                                                      `path:"state/@ip-prefix" ygotAnnotation:"true"`
	Label        NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject_Label_Union `path:"state/label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabel       []ygot.Annotation                                                                      `path:"state/@label" ygotAnnotation:"true"`
	Loose        *bool                                                                                  `path:"state/loose" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLoose       []ygot.Annotation                                                                      `path:"state/@loose" ygotAnnotation:"true"`
	Type         E_ExplicitRouteObject_Type                                                             `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType        []ygot.Annotation                                                                      `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject) IsYANGGoStruct() {}

// GetAsn retrieves the value of the leaf Asn from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Asn is set, it can
// safely use t.GetAsn() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Asn == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject) GetAsn() uint32 {
	if t == nil || t.Asn == nil {
		return 0
	}
	return *t.Asn
}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject) GetIndex() uint64 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetInterfaceId retrieves the value of the leaf InterfaceId from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceId is set, it can
// safely use t.GetInterfaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject) GetInterfaceId() uint32 {
	if t == nil || t.InterfaceId == nil {
		return 0
	}
	return *t.InterfaceId
}

// GetIpPrefix retrieves the value of the leaf IpPrefix from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IpPrefix is set, it can
// safely use t.GetIpPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IpPrefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject) GetIpPrefix() string {
	if t == nil || t.IpPrefix == nil {
		return ""
	}
	return *t.IpPrefix
}

// GetLabel retrieves the value of the leaf Label from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Label is set, it can
// safely use t.GetLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Label == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject) GetLabel() NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject_Label_Union {
	if t == nil || t.Label == nil {
		return nil
	}
	return t.Label
}

// GetLoose retrieves the value of the leaf Loose from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Loose is set, it can
// safely use t.GetLoose() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Loose == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject) GetLoose() bool {
	if t == nil || t.Loose == nil {
		return false
	}
	return *t.Loose
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject) GetType() E_ExplicitRouteObject_Type {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject_Label_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/sessions/session/explicit-route-objects/explicit-route-object/state/label within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject_Label_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject_Label_Union()
}

// Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject_Label_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject_Label_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject_Label_Union() {
}

// Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject_Label_Union ensures that UnionUint32
// implements the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject_Label_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject_Label_Union() {
}

// To_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject_Label_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject_Label_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject) To_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject_Label_Union(i interface{}) (NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject_Label_Union, error) {
	if v, ok := i.(NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject_Label_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_ExplicitRouteObject_Label_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/sessions/session/record-route-objects/record-route-object YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject struct {
	ΛMetadata      []ygot.Annotation                                                                            `path:"@" ygotAnnotation:"true"`
	Address        *string                                                                                      `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress       []ygot.Annotation                                                                            `path:"state/@address" ygotAnnotation:"true"`
	Index          *uint8                                                                                       `path:"state/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex         []ygot.Annotation                                                                            `path:"state/@index|@index" ygotAnnotation:"true"`
	ReportedFlags  *uint8                                                                                       `path:"state/reported-flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReportedFlags []ygot.Annotation                                                                            `path:"state/@reported-flags" ygotAnnotation:"true"`
	ReportedLabel  NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject_ReportedLabel_Union `path:"state/reported-label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReportedLabel []ygot.Annotation                                                                            `path:"state/@reported-label" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject) IsYANGGoStruct() {}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject) GetAddress() string {
	if t == nil || t.Address == nil {
		return ""
	}
	return *t.Address
}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject) GetIndex() uint8 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetReportedFlags retrieves the value of the leaf ReportedFlags from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReportedFlags is set, it can
// safely use t.GetReportedFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReportedFlags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject) GetReportedFlags() uint8 {
	if t == nil || t.ReportedFlags == nil {
		return 0
	}
	return *t.ReportedFlags
}

// GetReportedLabel retrieves the value of the leaf ReportedLabel from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReportedLabel is set, it can
// safely use t.GetReportedLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReportedLabel == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject) GetReportedLabel() NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject_ReportedLabel_Union {
	if t == nil || t.ReportedLabel == nil {
		return nil
	}
	return t.ReportedLabel
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject_ReportedLabel_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/sessions/session/record-route-objects/record-route-object/state/reported-label within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject_ReportedLabel_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject_ReportedLabel_Union()
}

// Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject_ReportedLabel_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject_ReportedLabel_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject_ReportedLabel_Union() {
}

// Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject_ReportedLabel_Union ensures that UnionUint32
// implements the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject_ReportedLabel_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject_ReportedLabel_Union() {
}

// To_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject_ReportedLabel_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject_ReportedLabel_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject) To_NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject_ReportedLabel_Union(i interface{}) (NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject_ReportedLabel_Union, error) {
	if v, ok := i.(NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject_ReportedLabel_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_RecordRouteObject_ReportedLabel_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/sessions/session/state/sender-tspec YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	PeakDataRate  Binary            `path:"peak-data-rate" module:"openconfig-network-instance"`
	ΛPeakDataRate []ygot.Annotation `path:"@peak-data-rate" ygotAnnotation:"true"`
	Rate          Binary            `path:"rate" module:"openconfig-network-instance"`
	ΛRate         []ygot.Annotation `path:"@rate" ygotAnnotation:"true"`
	Size          Binary            `path:"size" module:"openconfig-network-instance"`
	ΛSize         []ygot.Annotation `path:"@size" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec) IsYANGGoStruct() {}

// GetPeakDataRate retrieves the value of the leaf PeakDataRate from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeakDataRate is set, it can
// safely use t.GetPeakDataRate() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeakDataRate == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec) GetPeakDataRate() Binary {
	if t == nil || t.PeakDataRate == nil {
		return nil
	}
	return t.PeakDataRate
}

// GetRate retrieves the value of the leaf Rate from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Rate is set, it can
// safely use t.GetRate() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Rate == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec) GetRate() Binary {
	if t == nil || t.Rate == nil {
		return nil
	}
	return t.Rate
}

// GetSize retrieves the value of the leaf Size from the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Size is set, it can
// safely use t.GetSize() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Size == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec) GetSize() Binary {
	if t == nil || t.Size == nil {
		return nil
	}
	return t.Size
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec.
func (*NetworkInstance_Mpls_SignalingProtocols_RsvpTe_Session_SenderTspec) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_SegmentRouting represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/segment-routing YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_SegmentRouting struct {
	ΛMetadata            []ygot.Annotation                                                                                                                                                          `path:"@" ygotAnnotation:"true"`
	AggregateSidCounter  map[NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter `path:"aggregate-sid-counters/aggregate-sid-counter" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAggregateSidCounter []ygot.Annotation                                                                                                                                                          `path:"aggregate-sid-counters/@aggregate-sid-counter" ygotAnnotation:"true"`
	Interface            map[string]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface                                                                                               `path:"interfaces/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface           []ygot.Annotation                                                                                                                                                          `path:"interfaces/@interface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_SegmentRouting implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) IsYANGGoStruct() {}

// NewAggregateSidCounter creates a new entry in the AggregateSidCounter list of the
// NetworkInstance_Mpls_SignalingProtocols_SegmentRouting struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) NewAggregateSidCounter(MplsLabel NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union) (*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AggregateSidCounter == nil {
		t.AggregateSidCounter = make(map[NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter)
	}

	key := MplsLabel

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AggregateSidCounter[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AggregateSidCounter", key)
	}

	t.AggregateSidCounter[key] = &NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter{
		MplsLabel: MplsLabel,
	}

	return t.AggregateSidCounter[key], nil
}

// RenameAggregateSidCounter renames an entry in the list AggregateSidCounter within
// the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) RenameAggregateSidCounter(oldK, newK NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union) error {
	if _, ok := t.AggregateSidCounter[newK]; ok {
		return fmt.Errorf("key %v already exists in AggregateSidCounter", newK)
	}

	e, ok := t.AggregateSidCounter[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AggregateSidCounter", oldK)
	}
	e.MplsLabel = newK

	t.AggregateSidCounter[newK] = e
	delete(t.AggregateSidCounter, oldK)
	return nil
}

// GetOrCreateAggregateSidCounterMap returns the list (map) from NetworkInstance_Mpls_SignalingProtocols_SegmentRouting.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) GetOrCreateAggregateSidCounterMap() map[NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter {
	if t.AggregateSidCounter == nil {
		t.AggregateSidCounter = make(map[NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter)
	}
	return t.AggregateSidCounter
}

// GetOrCreateAggregateSidCounter retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_SignalingProtocols_SegmentRouting. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) GetOrCreateAggregateSidCounter(MplsLabel NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union) *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter {

	key := MplsLabel

	if v, ok := t.AggregateSidCounter[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAggregateSidCounter(MplsLabel)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAggregateSidCounter got unexpected error: %v", err))
	}
	return v
}

// GetAggregateSidCounter retrieves the value with the specified key from
// the AggregateSidCounter map field of NetworkInstance_Mpls_SignalingProtocols_SegmentRouting. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) GetAggregateSidCounter(MplsLabel NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union) *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter {

	if t == nil {
		return nil
	}

	key := MplsLabel

	if lm, ok := t.AggregateSidCounter[key]; ok {
		return lm
	}
	return nil
}

// AppendAggregateSidCounter appends the supplied NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter struct to the
// list AggregateSidCounter of NetworkInstance_Mpls_SignalingProtocols_SegmentRouting. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) AppendAggregateSidCounter(v *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter) error {
	key := v.MplsLabel

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AggregateSidCounter == nil {
		t.AggregateSidCounter = make(map[NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter)
	}

	if _, ok := t.AggregateSidCounter[key]; ok {
		return fmt.Errorf("duplicate key for list AggregateSidCounter %v", key)
	}

	t.AggregateSidCounter[key] = v
	return nil
}

// NewInterface creates a new entry in the Interface list of the
// NetworkInstance_Mpls_SignalingProtocols_SegmentRouting struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) NewInterface(InterfaceId string) (*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface)
	}

	key := InterfaceId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface{
		InterfaceId: &InterfaceId,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.InterfaceId = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from NetworkInstance_Mpls_SignalingProtocols_SegmentRouting.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) GetOrCreateInterfaceMap() map[string]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_SignalingProtocols_SegmentRouting. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) GetOrCreateInterface(InterfaceId string) *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface {

	key := InterfaceId

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(InterfaceId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of NetworkInstance_Mpls_SignalingProtocols_SegmentRouting. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) GetInterface(InterfaceId string) *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface {

	if t == nil {
		return nil
	}

	key := InterfaceId

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface struct to the
// list Interface of NetworkInstance_Mpls_SignalingProtocols_SegmentRouting. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) AppendInterface(v *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) error {
	if v.InterfaceId == nil {
		return fmt.Errorf("invalid nil key received for InterfaceId")
	}

	key := *v.InterfaceId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.AggregateSidCounter {
		e.PopulateDefaults()
	}
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_SegmentRouting"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_SegmentRouting.
func (*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/segment-routing/aggregate-sid-counters/aggregate-sid-counter YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter struct {
	ΛMetadata  []ygot.Annotation                                                                          `path:"@" ygotAnnotation:"true"`
	InOctets   *uint64                                                                                    `path:"state/in-octets" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInOctets  []ygot.Annotation                                                                          `path:"state/@in-octets" ygotAnnotation:"true"`
	InPkts     *uint64                                                                                    `path:"state/in-pkts" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInPkts    []ygot.Annotation                                                                          `path:"state/@in-pkts" ygotAnnotation:"true"`
	MplsLabel  NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union `path:"state/mpls-label|mpls-label" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛMplsLabel []ygot.Annotation                                                                          `path:"state/@mpls-label|@mpls-label" ygotAnnotation:"true"`
	OutOctets  *uint64                                                                                    `path:"state/out-octets" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOutOctets []ygot.Annotation                                                                          `path:"state/@out-octets" ygotAnnotation:"true"`
	OutPkts    *uint64                                                                                    `path:"state/out-pkts" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOutPkts   []ygot.Annotation                                                                          `path:"state/@out-pkts" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter) IsYANGGoStruct() {}

// GetInOctets retrieves the value of the leaf InOctets from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InOctets is set, it can
// safely use t.GetInOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InOctets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter) GetInOctets() uint64 {
	if t == nil || t.InOctets == nil {
		return 0
	}
	return *t.InOctets
}

// GetInPkts retrieves the value of the leaf InPkts from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPkts is set, it can
// safely use t.GetInPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter) GetInPkts() uint64 {
	if t == nil || t.InPkts == nil {
		return 0
	}
	return *t.InPkts
}

// GetMplsLabel retrieves the value of the leaf MplsLabel from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MplsLabel is set, it can
// safely use t.GetMplsLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MplsLabel == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter) GetMplsLabel() NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union {
	if t == nil || t.MplsLabel == nil {
		return nil
	}
	return t.MplsLabel
}

// GetOutOctets retrieves the value of the leaf OutOctets from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutOctets is set, it can
// safely use t.GetOutOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutOctets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter) GetOutOctets() uint64 {
	if t == nil || t.OutOctets == nil {
		return 0
	}
	return *t.OutOctets
}

// GetOutPkts retrieves the value of the leaf OutPkts from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPkts is set, it can
// safely use t.GetOutPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter) GetOutPkts() uint64 {
	if t == nil || t.OutPkts == nil {
		return 0
	}
	return *t.OutPkts
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"mpls-label": t.MplsLabel,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter.
func (*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/segment-routing/aggregate-sid-counters/aggregate-sid-counter/state/mpls-label within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union()
}

// Documentation_for_NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union() {
}

// Documentation_for_NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union ensures that UnionUint32
// implements the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union() {
}

// To_NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter) To_NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union(i interface{}) (NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union, error) {
	if v, ok := i.(NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_AggregateSidCounter_MplsLabel_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/segment-routing/interfaces/interface YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface struct {
	ΛMetadata     []ygot.Annotation                                                                                                                                                            `path:"@" ygotAnnotation:"true"`
	InOctets      *uint64                                                                                                                                                                      `path:"state/in-octets" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInOctets     []ygot.Annotation                                                                                                                                                            `path:"state/@in-octets" ygotAnnotation:"true"`
	InPkts        *uint64                                                                                                                                                                      `path:"state/in-pkts" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInPkts       []ygot.Annotation                                                                                                                                                            `path:"state/@in-pkts" ygotAnnotation:"true"`
	InterfaceId   *string                                                                                                                                                                      `path:"config/interface-id|interface-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛInterfaceId  []ygot.Annotation                                                                                                                                                            `path:"config/@interface-id|@interface-id" ygotAnnotation:"true"`
	InterfaceRef  *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef                                                                                               `path:"interface-ref" module:"openconfig-network-instance"`
	ΛInterfaceRef []ygot.Annotation                                                                                                                                                            `path:"@interface-ref" ygotAnnotation:"true"`
	OutOctets     *uint64                                                                                                                                                                      `path:"state/out-octets" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOutOctets    []ygot.Annotation                                                                                                                                                            `path:"state/@out-octets" ygotAnnotation:"true"`
	OutPkts       *uint64                                                                                                                                                                      `path:"state/out-pkts" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOutPkts      []ygot.Annotation                                                                                                                                                            `path:"state/@out-pkts" ygotAnnotation:"true"`
	SidCounter    map[NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter `path:"sid-counters/sid-counter" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSidCounter   []ygot.Annotation                                                                                                                                                            `path:"sid-counters/@sid-counter" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) IsYANGGoStruct() {}

// NewSidCounter creates a new entry in the SidCounter list of the
// NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) NewSidCounter(MplsLabel NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union) (*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SidCounter == nil {
		t.SidCounter = make(map[NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter)
	}

	key := MplsLabel

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.SidCounter[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list SidCounter", key)
	}

	t.SidCounter[key] = &NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter{
		MplsLabel: MplsLabel,
	}

	return t.SidCounter[key], nil
}

// RenameSidCounter renames an entry in the list SidCounter within
// the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) RenameSidCounter(oldK, newK NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union) error {
	if _, ok := t.SidCounter[newK]; ok {
		return fmt.Errorf("key %v already exists in SidCounter", newK)
	}

	e, ok := t.SidCounter[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in SidCounter", oldK)
	}
	e.MplsLabel = newK

	t.SidCounter[newK] = e
	delete(t.SidCounter, oldK)
	return nil
}

// GetOrCreateSidCounterMap returns the list (map) from NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) GetOrCreateSidCounterMap() map[NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter {
	if t.SidCounter == nil {
		t.SidCounter = make(map[NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter)
	}
	return t.SidCounter
}

// GetOrCreateSidCounter retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) GetOrCreateSidCounter(MplsLabel NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union) *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter {

	key := MplsLabel

	if v, ok := t.SidCounter[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSidCounter(MplsLabel)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSidCounter got unexpected error: %v", err))
	}
	return v
}

// GetSidCounter retrieves the value with the specified key from
// the SidCounter map field of NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) GetSidCounter(MplsLabel NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union) *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter {

	if t == nil {
		return nil
	}

	key := MplsLabel

	if lm, ok := t.SidCounter[key]; ok {
		return lm
	}
	return nil
}

// AppendSidCounter appends the supplied NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter struct to the
// list SidCounter of NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) AppendSidCounter(v *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) error {
	key := v.MplsLabel

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SidCounter == nil {
		t.SidCounter = make(map[NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter)
	}

	if _, ok := t.SidCounter[key]; ok {
		return fmt.Errorf("duplicate key for list SidCounter %v", key)
	}

	t.SidCounter[key] = v
	return nil
}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) GetOrCreateInterfaceRef() *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef{}
	return t.InterfaceRef
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) GetInterfaceRef() *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetInOctets retrieves the value of the leaf InOctets from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InOctets is set, it can
// safely use t.GetInOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InOctets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) GetInOctets() uint64 {
	if t == nil || t.InOctets == nil {
		return 0
	}
	return *t.InOctets
}

// GetInPkts retrieves the value of the leaf InPkts from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPkts is set, it can
// safely use t.GetInPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) GetInPkts() uint64 {
	if t == nil || t.InPkts == nil {
		return 0
	}
	return *t.InPkts
}

// GetInterfaceId retrieves the value of the leaf InterfaceId from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceId is set, it can
// safely use t.GetInterfaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) GetInterfaceId() string {
	if t == nil || t.InterfaceId == nil {
		return ""
	}
	return *t.InterfaceId
}

// GetOutOctets retrieves the value of the leaf OutOctets from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutOctets is set, it can
// safely use t.GetOutOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutOctets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) GetOutOctets() uint64 {
	if t == nil || t.OutOctets == nil {
		return 0
	}
	return *t.OutOctets
}

// GetOutPkts retrieves the value of the leaf OutPkts from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPkts is set, it can
// safely use t.GetOutPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) GetOutPkts() uint64 {
	if t == nil || t.OutPkts == nil {
		return 0
	}
	return *t.OutPkts
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.InterfaceRef.PopulateDefaults()
	for _, e := range t.SidCounter {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.InterfaceId == nil {
		return nil, fmt.Errorf("nil value for key InterfaceId")
	}

	return map[string]interface{}{
		"interface-id": *t.InterfaceId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface.
func (*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/segment-routing/interfaces/interface/interface-ref YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef) IsYANGGoStruct() {
}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef.
func (*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/segment-routing/interfaces/interface/sid-counters/sid-counter YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter struct {
	ΛMetadata        []ygot.Annotation                                                                                      `path:"@" ygotAnnotation:"true"`
	ForwardingClass  map[uint8]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass `path:"forwarding-classes/forwarding-class" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛForwardingClass []ygot.Annotation                                                                                      `path:"forwarding-classes/@forwarding-class" ygotAnnotation:"true"`
	InOctets         *uint64                                                                                                `path:"state/in-octets" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInOctets        []ygot.Annotation                                                                                      `path:"state/@in-octets" ygotAnnotation:"true"`
	InPkts           *uint64                                                                                                `path:"state/in-pkts" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInPkts          []ygot.Annotation                                                                                      `path:"state/@in-pkts" ygotAnnotation:"true"`
	MplsLabel        NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union            `path:"state/mpls-label|mpls-label" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛMplsLabel       []ygot.Annotation                                                                                      `path:"state/@mpls-label|@mpls-label" ygotAnnotation:"true"`
	OutOctets        *uint64                                                                                                `path:"state/out-octets" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOutOctets       []ygot.Annotation                                                                                      `path:"state/@out-octets" ygotAnnotation:"true"`
	OutPkts          *uint64                                                                                                `path:"state/out-pkts" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOutPkts         []ygot.Annotation                                                                                      `path:"state/@out-pkts" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) IsYANGGoStruct() {
}

// NewForwardingClass creates a new entry in the ForwardingClass list of the
// NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) NewForwardingClass(Exp uint8) (*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ForwardingClass == nil {
		t.ForwardingClass = make(map[uint8]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass)
	}

	key := Exp

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.ForwardingClass[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list ForwardingClass", key)
	}

	t.ForwardingClass[key] = &NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass{
		Exp: &Exp,
	}

	return t.ForwardingClass[key], nil
}

// RenameForwardingClass renames an entry in the list ForwardingClass within
// the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) RenameForwardingClass(oldK, newK uint8) error {
	if _, ok := t.ForwardingClass[newK]; ok {
		return fmt.Errorf("key %v already exists in ForwardingClass", newK)
	}

	e, ok := t.ForwardingClass[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in ForwardingClass", oldK)
	}
	e.Exp = &newK

	t.ForwardingClass[newK] = e
	delete(t.ForwardingClass, oldK)
	return nil
}

// GetOrCreateForwardingClassMap returns the list (map) from NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) GetOrCreateForwardingClassMap() map[uint8]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass {
	if t.ForwardingClass == nil {
		t.ForwardingClass = make(map[uint8]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass)
	}
	return t.ForwardingClass
}

// GetOrCreateForwardingClass retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) GetOrCreateForwardingClass(Exp uint8) *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass {

	key := Exp

	if v, ok := t.ForwardingClass[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewForwardingClass(Exp)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateForwardingClass got unexpected error: %v", err))
	}
	return v
}

// GetForwardingClass retrieves the value with the specified key from
// the ForwardingClass map field of NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) GetForwardingClass(Exp uint8) *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass {

	if t == nil {
		return nil
	}

	key := Exp

	if lm, ok := t.ForwardingClass[key]; ok {
		return lm
	}
	return nil
}

// AppendForwardingClass appends the supplied NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass struct to the
// list ForwardingClass of NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) AppendForwardingClass(v *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass) error {
	if v.Exp == nil {
		return fmt.Errorf("invalid nil key received for Exp")
	}

	key := *v.Exp

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ForwardingClass == nil {
		t.ForwardingClass = make(map[uint8]*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass)
	}

	if _, ok := t.ForwardingClass[key]; ok {
		return fmt.Errorf("duplicate key for list ForwardingClass %v", key)
	}

	t.ForwardingClass[key] = v
	return nil
}

// GetInOctets retrieves the value of the leaf InOctets from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InOctets is set, it can
// safely use t.GetInOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InOctets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) GetInOctets() uint64 {
	if t == nil || t.InOctets == nil {
		return 0
	}
	return *t.InOctets
}

// GetInPkts retrieves the value of the leaf InPkts from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPkts is set, it can
// safely use t.GetInPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) GetInPkts() uint64 {
	if t == nil || t.InPkts == nil {
		return 0
	}
	return *t.InPkts
}

// GetMplsLabel retrieves the value of the leaf MplsLabel from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MplsLabel is set, it can
// safely use t.GetMplsLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MplsLabel == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) GetMplsLabel() NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union {
	if t == nil || t.MplsLabel == nil {
		return nil
	}
	return t.MplsLabel
}

// GetOutOctets retrieves the value of the leaf OutOctets from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutOctets is set, it can
// safely use t.GetOutOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutOctets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) GetOutOctets() uint64 {
	if t == nil || t.OutOctets == nil {
		return 0
	}
	return *t.OutOctets
}

// GetOutPkts retrieves the value of the leaf OutPkts from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPkts is set, it can
// safely use t.GetOutPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) GetOutPkts() uint64 {
	if t == nil || t.OutPkts == nil {
		return 0
	}
	return *t.OutPkts
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.ForwardingClass {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"mpls-label": t.MplsLabel,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter.
func (*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/segment-routing/interfaces/interface/sid-counters/sid-counter/state/mpls-label within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union()
}

// Documentation_for_NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union() {
}

// Documentation_for_NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union ensures that UnionUint32
// implements the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union() {
}

// To_NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter) To_NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union(i interface{}) (NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union, error) {
	if v, ok := i.(NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_MplsLabel_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass represents the /openconfig-network-instance/network-instances/network-instance/mpls/signaling-protocols/segment-routing/interfaces/interface/sid-counters/sid-counter/forwarding-classes/forwarding-class YANG schema element.
type NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Exp        *uint8            `path:"state/exp|exp" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛExp       []ygot.Annotation `path:"state/@exp|@exp" ygotAnnotation:"true"`
	InOctets   *uint64           `path:"state/in-octets" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInOctets  []ygot.Annotation `path:"state/@in-octets" ygotAnnotation:"true"`
	InPkts     *uint64           `path:"state/in-pkts" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInPkts    []ygot.Annotation `path:"state/@in-pkts" ygotAnnotation:"true"`
	OutOctets  *uint64           `path:"state/out-octets" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOutOctets []ygot.Annotation `path:"state/@out-octets" ygotAnnotation:"true"`
	OutPkts    *uint64           `path:"state/out-pkts" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOutPkts   []ygot.Annotation `path:"state/@out-pkts" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass) IsYANGGoStruct() {
}

// GetExp retrieves the value of the leaf Exp from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Exp is set, it can
// safely use t.GetExp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Exp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass) GetExp() uint8 {
	if t == nil || t.Exp == nil {
		return 0
	}
	return *t.Exp
}

// GetInOctets retrieves the value of the leaf InOctets from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InOctets is set, it can
// safely use t.GetInOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InOctets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass) GetInOctets() uint64 {
	if t == nil || t.InOctets == nil {
		return 0
	}
	return *t.InOctets
}

// GetInPkts retrieves the value of the leaf InPkts from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPkts is set, it can
// safely use t.GetInPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass) GetInPkts() uint64 {
	if t == nil || t.InPkts == nil {
		return 0
	}
	return *t.InPkts
}

// GetOutOctets retrieves the value of the leaf OutOctets from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutOctets is set, it can
// safely use t.GetOutOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutOctets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass) GetOutOctets() uint64 {
	if t == nil || t.OutOctets == nil {
		return 0
	}
	return *t.OutOctets
}

// GetOutPkts retrieves the value of the leaf OutPkts from the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPkts is set, it can
// safely use t.GetOutPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass) GetOutPkts() uint64 {
	if t == nil || t.OutPkts == nil {
		return 0
	}
	return *t.OutPkts
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Exp == nil {
		return nil, fmt.Errorf("nil value for key Exp")
	}

	return map[string]interface{}{
		"exp": *t.Exp,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass.
func (*NetworkInstance_Mpls_SignalingProtocols_SegmentRouting_Interface_SidCounter_ForwardingClass) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_TeGlobalAttributes represents the /openconfig-network-instance/network-instances/network-instance/mpls/te-global-attributes YANG schema element.
type NetworkInstance_Mpls_TeGlobalAttributes struct {
	ΛMetadata    []ygot.Annotation                                              `path:"@" ygotAnnotation:"true"`
	AdminGroup   map[string]*NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup `path:"mpls-admin-groups/admin-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdminGroup  []ygot.Annotation                                              `path:"mpls-admin-groups/@admin-group" ygotAnnotation:"true"`
	Srlg         map[string]*NetworkInstance_Mpls_TeGlobalAttributes_Srlg       `path:"srlgs/srlg" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSrlg        []ygot.Annotation                                              `path:"srlgs/@srlg" ygotAnnotation:"true"`
	TeLspTimers  *NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers           `path:"te-lsp-timers" module:"openconfig-network-instance"`
	ΛTeLspTimers []ygot.Annotation                                              `path:"@te-lsp-timers" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_TeGlobalAttributes implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_TeGlobalAttributes) IsYANGGoStruct() {}

// NewAdminGroup creates a new entry in the AdminGroup list of the
// NetworkInstance_Mpls_TeGlobalAttributes struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) NewAdminGroup(AdminGroupName string) (*NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AdminGroup == nil {
		t.AdminGroup = make(map[string]*NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup)
	}

	key := AdminGroupName

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AdminGroup[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AdminGroup", key)
	}

	t.AdminGroup[key] = &NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup{
		AdminGroupName: &AdminGroupName,
	}

	return t.AdminGroup[key], nil
}

// RenameAdminGroup renames an entry in the list AdminGroup within
// the NetworkInstance_Mpls_TeGlobalAttributes struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) RenameAdminGroup(oldK, newK string) error {
	if _, ok := t.AdminGroup[newK]; ok {
		return fmt.Errorf("key %v already exists in AdminGroup", newK)
	}

	e, ok := t.AdminGroup[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AdminGroup", oldK)
	}
	e.AdminGroupName = &newK

	t.AdminGroup[newK] = e
	delete(t.AdminGroup, oldK)
	return nil
}

// GetOrCreateAdminGroupMap returns the list (map) from NetworkInstance_Mpls_TeGlobalAttributes.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) GetOrCreateAdminGroupMap() map[string]*NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup {
	if t.AdminGroup == nil {
		t.AdminGroup = make(map[string]*NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup)
	}
	return t.AdminGroup
}

// GetOrCreateAdminGroup retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_TeGlobalAttributes. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) GetOrCreateAdminGroup(AdminGroupName string) *NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup {

	key := AdminGroupName

	if v, ok := t.AdminGroup[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAdminGroup(AdminGroupName)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAdminGroup got unexpected error: %v", err))
	}
	return v
}

// GetAdminGroup retrieves the value with the specified key from
// the AdminGroup map field of NetworkInstance_Mpls_TeGlobalAttributes. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) GetAdminGroup(AdminGroupName string) *NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup {

	if t == nil {
		return nil
	}

	key := AdminGroupName

	if lm, ok := t.AdminGroup[key]; ok {
		return lm
	}
	return nil
}

// AppendAdminGroup appends the supplied NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup struct to the
// list AdminGroup of NetworkInstance_Mpls_TeGlobalAttributes. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) AppendAdminGroup(v *NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup) error {
	if v.AdminGroupName == nil {
		return fmt.Errorf("invalid nil key received for AdminGroupName")
	}

	key := *v.AdminGroupName

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AdminGroup == nil {
		t.AdminGroup = make(map[string]*NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup)
	}

	if _, ok := t.AdminGroup[key]; ok {
		return fmt.Errorf("duplicate key for list AdminGroup %v", key)
	}

	t.AdminGroup[key] = v
	return nil
}

// NewSrlg creates a new entry in the Srlg list of the
// NetworkInstance_Mpls_TeGlobalAttributes struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) NewSrlg(Name string) (*NetworkInstance_Mpls_TeGlobalAttributes_Srlg, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Srlg == nil {
		t.Srlg = make(map[string]*NetworkInstance_Mpls_TeGlobalAttributes_Srlg)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Srlg[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Srlg", key)
	}

	t.Srlg[key] = &NetworkInstance_Mpls_TeGlobalAttributes_Srlg{
		Name: &Name,
	}

	return t.Srlg[key], nil
}

// RenameSrlg renames an entry in the list Srlg within
// the NetworkInstance_Mpls_TeGlobalAttributes struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) RenameSrlg(oldK, newK string) error {
	if _, ok := t.Srlg[newK]; ok {
		return fmt.Errorf("key %v already exists in Srlg", newK)
	}

	e, ok := t.Srlg[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Srlg", oldK)
	}
	e.Name = &newK

	t.Srlg[newK] = e
	delete(t.Srlg, oldK)
	return nil
}

// GetOrCreateSrlgMap returns the list (map) from NetworkInstance_Mpls_TeGlobalAttributes.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) GetOrCreateSrlgMap() map[string]*NetworkInstance_Mpls_TeGlobalAttributes_Srlg {
	if t.Srlg == nil {
		t.Srlg = make(map[string]*NetworkInstance_Mpls_TeGlobalAttributes_Srlg)
	}
	return t.Srlg
}

// GetOrCreateSrlg retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_TeGlobalAttributes. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) GetOrCreateSrlg(Name string) *NetworkInstance_Mpls_TeGlobalAttributes_Srlg {

	key := Name

	if v, ok := t.Srlg[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSrlg(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSrlg got unexpected error: %v", err))
	}
	return v
}

// GetSrlg retrieves the value with the specified key from
// the Srlg map field of NetworkInstance_Mpls_TeGlobalAttributes. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) GetSrlg(Name string) *NetworkInstance_Mpls_TeGlobalAttributes_Srlg {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Srlg[key]; ok {
		return lm
	}
	return nil
}

// AppendSrlg appends the supplied NetworkInstance_Mpls_TeGlobalAttributes_Srlg struct to the
// list Srlg of NetworkInstance_Mpls_TeGlobalAttributes. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_TeGlobalAttributes_Srlg already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) AppendSrlg(v *NetworkInstance_Mpls_TeGlobalAttributes_Srlg) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Srlg == nil {
		t.Srlg = make(map[string]*NetworkInstance_Mpls_TeGlobalAttributes_Srlg)
	}

	if _, ok := t.Srlg[key]; ok {
		return fmt.Errorf("duplicate key for list Srlg %v", key)
	}

	t.Srlg[key] = v
	return nil
}

// GetOrCreateTeLspTimers retrieves the value of the TeLspTimers field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) GetOrCreateTeLspTimers() *NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers {
	if t.TeLspTimers != nil {
		return t.TeLspTimers
	}
	t.TeLspTimers = &NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers{}
	return t.TeLspTimers
}

// GetTeLspTimers returns the value of the TeLspTimers struct pointer
// from NetworkInstance_Mpls_TeGlobalAttributes. If the receiver or the field TeLspTimers is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) GetTeLspTimers() *NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers {
	if t != nil && t.TeLspTimers != nil {
		return t.TeLspTimers
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_TeGlobalAttributes
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.TeLspTimers.PopulateDefaults()
	for _, e := range t.AdminGroup {
		e.PopulateDefaults()
	}
	for _, e := range t.Srlg {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_TeGlobalAttributes"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_TeGlobalAttributes) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_TeGlobalAttributes.
func (*NetworkInstance_Mpls_TeGlobalAttributes) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup represents the /openconfig-network-instance/network-instances/network-instance/mpls/te-global-attributes/mpls-admin-groups/admin-group YANG schema element.
type NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup struct {
	ΛMetadata       []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AdminGroupName  *string           `path:"config/admin-group-name|admin-group-name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAdminGroupName []ygot.Annotation `path:"config/@admin-group-name|@admin-group-name" ygotAnnotation:"true"`
	BitPosition     *uint32           `path:"config/bit-position" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBitPosition    []ygot.Annotation `path:"config/@bit-position" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup) IsYANGGoStruct() {}

// GetAdminGroupName retrieves the value of the leaf AdminGroupName from the NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdminGroupName is set, it can
// safely use t.GetAdminGroupName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdminGroupName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup) GetAdminGroupName() string {
	if t == nil || t.AdminGroupName == nil {
		return ""
	}
	return *t.AdminGroupName
}

// GetBitPosition retrieves the value of the leaf BitPosition from the NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BitPosition is set, it can
// safely use t.GetBitPosition() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BitPosition == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup) GetBitPosition() uint32 {
	if t == nil || t.BitPosition == nil {
		return 0
	}
	return *t.BitPosition
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AdminGroupName == nil {
		return nil, fmt.Errorf("nil value for key AdminGroupName")
	}

	return map[string]interface{}{
		"admin-group-name": *t.AdminGroupName,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup.
func (*NetworkInstance_Mpls_TeGlobalAttributes_AdminGroup) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_TeGlobalAttributes_Srlg represents the /openconfig-network-instance/network-instances/network-instance/mpls/te-global-attributes/srlgs/srlg YANG schema element.
type NetworkInstance_Mpls_TeGlobalAttributes_Srlg struct {
	ΛMetadata     []ygot.Annotation                                                    `path:"@" ygotAnnotation:"true"`
	Cost          *uint32                                                              `path:"config/cost" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCost         []ygot.Annotation                                                    `path:"config/@cost" ygotAnnotation:"true"`
	FloodingType  E_Mpls_MplsSrlgFloodingType                                          `path:"config/flooding-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFloodingType []ygot.Annotation                                                    `path:"config/@flooding-type" ygotAnnotation:"true"`
	MembersList   map[string]*NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList `path:"static-srlg-members/members-list" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMembersList  []ygot.Annotation                                                    `path:"static-srlg-members/@members-list" ygotAnnotation:"true"`
	Name          *string                                                              `path:"config/name|name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛName         []ygot.Annotation                                                    `path:"config/@name|@name" ygotAnnotation:"true"`
	Value         *uint32                                                              `path:"config/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue        []ygot.Annotation                                                    `path:"config/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_TeGlobalAttributes_Srlg implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_TeGlobalAttributes_Srlg) IsYANGGoStruct() {}

// NewMembersList creates a new entry in the MembersList list of the
// NetworkInstance_Mpls_TeGlobalAttributes_Srlg struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg) NewMembersList(FromAddress string) (*NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.MembersList == nil {
		t.MembersList = make(map[string]*NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList)
	}

	key := FromAddress

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.MembersList[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list MembersList", key)
	}

	t.MembersList[key] = &NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList{
		FromAddress: &FromAddress,
	}

	return t.MembersList[key], nil
}

// RenameMembersList renames an entry in the list MembersList within
// the NetworkInstance_Mpls_TeGlobalAttributes_Srlg struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg) RenameMembersList(oldK, newK string) error {
	if _, ok := t.MembersList[newK]; ok {
		return fmt.Errorf("key %v already exists in MembersList", newK)
	}

	e, ok := t.MembersList[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in MembersList", oldK)
	}
	e.FromAddress = &newK

	t.MembersList[newK] = e
	delete(t.MembersList, oldK)
	return nil
}

// GetOrCreateMembersListMap returns the list (map) from NetworkInstance_Mpls_TeGlobalAttributes_Srlg.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg) GetOrCreateMembersListMap() map[string]*NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList {
	if t.MembersList == nil {
		t.MembersList = make(map[string]*NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList)
	}
	return t.MembersList
}

// GetOrCreateMembersList retrieves the value with the specified keys from
// the receiver NetworkInstance_Mpls_TeGlobalAttributes_Srlg. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg) GetOrCreateMembersList(FromAddress string) *NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList {

	key := FromAddress

	if v, ok := t.MembersList[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewMembersList(FromAddress)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateMembersList got unexpected error: %v", err))
	}
	return v
}

// GetMembersList retrieves the value with the specified key from
// the MembersList map field of NetworkInstance_Mpls_TeGlobalAttributes_Srlg. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg) GetMembersList(FromAddress string) *NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList {

	if t == nil {
		return nil
	}

	key := FromAddress

	if lm, ok := t.MembersList[key]; ok {
		return lm
	}
	return nil
}

// AppendMembersList appends the supplied NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList struct to the
// list MembersList of NetworkInstance_Mpls_TeGlobalAttributes_Srlg. If the key value(s) specified in
// the supplied NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList already exist in the list, an error is
// returned.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg) AppendMembersList(v *NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList) error {
	if v.FromAddress == nil {
		return fmt.Errorf("invalid nil key received for FromAddress")
	}

	key := *v.FromAddress

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.MembersList == nil {
		t.MembersList = make(map[string]*NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList)
	}

	if _, ok := t.MembersList[key]; ok {
		return fmt.Errorf("duplicate key for list MembersList %v", key)
	}

	t.MembersList[key] = v
	return nil
}

// GetCost retrieves the value of the leaf Cost from the NetworkInstance_Mpls_TeGlobalAttributes_Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Cost is set, it can
// safely use t.GetCost() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Cost == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg) GetCost() uint32 {
	if t == nil || t.Cost == nil {
		return 0
	}
	return *t.Cost
}

// GetFloodingType retrieves the value of the leaf FloodingType from the NetworkInstance_Mpls_TeGlobalAttributes_Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FloodingType is set, it can
// safely use t.GetFloodingType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FloodingType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg) GetFloodingType() E_Mpls_MplsSrlgFloodingType {
	if t == nil || t.FloodingType == 0 {
		return Mpls_MplsSrlgFloodingType_FLOODED_SRLG
	}
	return t.FloodingType
}

// GetName retrieves the value of the leaf Name from the NetworkInstance_Mpls_TeGlobalAttributes_Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Mpls_TeGlobalAttributes_Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg) GetValue() uint32 {
	if t == nil || t.Value == nil {
		return 0
	}
	return *t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_TeGlobalAttributes_Srlg
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.FloodingType == 0 {
		t.FloodingType = Mpls_MplsSrlgFloodingType_FLOODED_SRLG
	}
	for _, e := range t.MembersList {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_TeGlobalAttributes_Srlg struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_TeGlobalAttributes_Srlg"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_TeGlobalAttributes_Srlg.
func (*NetworkInstance_Mpls_TeGlobalAttributes_Srlg) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList represents the /openconfig-network-instance/network-instances/network-instance/mpls/te-global-attributes/srlgs/srlg/static-srlg-members/members-list YANG schema element.
type NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList struct {
	ΛMetadata    []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	FromAddress  *string           `path:"config/from-address|from-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛFromAddress []ygot.Annotation `path:"config/@from-address|@from-address" ygotAnnotation:"true"`
	ToAddress    *string           `path:"config/to-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛToAddress   []ygot.Annotation `path:"config/@to-address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList) IsYANGGoStruct() {}

// GetFromAddress retrieves the value of the leaf FromAddress from the NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FromAddress is set, it can
// safely use t.GetFromAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FromAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList) GetFromAddress() string {
	if t == nil || t.FromAddress == nil {
		return ""
	}
	return *t.FromAddress
}

// GetToAddress retrieves the value of the leaf ToAddress from the NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ToAddress is set, it can
// safely use t.GetToAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ToAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList) GetToAddress() string {
	if t == nil || t.ToAddress == nil {
		return ""
	}
	return *t.ToAddress
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList struct, which is a YANG list entry.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList) ΛListKeyMap() (map[string]interface{}, error) {
	if t.FromAddress == nil {
		return nil, fmt.Errorf("nil value for key FromAddress")
	}

	return map[string]interface{}{
		"from-address": *t.FromAddress,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList.
func (*NetworkInstance_Mpls_TeGlobalAttributes_Srlg_MembersList) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers represents the /openconfig-network-instance/network-instances/network-instance/mpls/te-global-attributes/te-lsp-timers YANG schema element.
type NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	CleanupDelay     *uint16           `path:"config/cleanup-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCleanupDelay    []ygot.Annotation `path:"config/@cleanup-delay" ygotAnnotation:"true"`
	InstallDelay     *uint16           `path:"config/install-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInstallDelay    []ygot.Annotation `path:"config/@install-delay" ygotAnnotation:"true"`
	ReoptimizeTimer  *uint16           `path:"config/reoptimize-timer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReoptimizeTimer []ygot.Annotation `path:"config/@reoptimize-timer" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers) IsYANGGoStruct() {}

// GetCleanupDelay retrieves the value of the leaf CleanupDelay from the NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CleanupDelay is set, it can
// safely use t.GetCleanupDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CleanupDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers) GetCleanupDelay() uint16 {
	if t == nil || t.CleanupDelay == nil {
		return 0
	}
	return *t.CleanupDelay
}

// GetInstallDelay retrieves the value of the leaf InstallDelay from the NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InstallDelay is set, it can
// safely use t.GetInstallDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InstallDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers) GetInstallDelay() uint16 {
	if t == nil || t.InstallDelay == nil {
		return 0
	}
	return *t.InstallDelay
}

// GetReoptimizeTimer retrieves the value of the leaf ReoptimizeTimer from the NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReoptimizeTimer is set, it can
// safely use t.GetReoptimizeTimer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReoptimizeTimer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers) GetReoptimizeTimer() uint16 {
	if t == nil || t.ReoptimizeTimer == nil {
		return 0
	}
	return *t.ReoptimizeTimer
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers.
func (*NetworkInstance_Mpls_TeGlobalAttributes_TeLspTimers) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_PolicyForwarding represents the /openconfig-network-instance/network-instances/network-instance/policy-forwarding YANG schema element.
type NetworkInstance_PolicyForwarding struct {
	ΛMetadata           []ygot.Annotation                                               `path:"@" ygotAnnotation:"true"`
	Interface           map[string]*NetworkInstance_PolicyForwarding_Interface          `path:"interfaces/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface          []ygot.Annotation                                               `path:"interfaces/@interface" ygotAnnotation:"true"`
	PathSelectionGroup  map[string]*NetworkInstance_PolicyForwarding_PathSelectionGroup `path:"path-selection-groups/path-selection-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPathSelectionGroup []ygot.Annotation                                               `path:"path-selection-groups/@path-selection-group" ygotAnnotation:"true"`
	Policy              map[string]*NetworkInstance_PolicyForwarding_Policy             `path:"policies/policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPolicy             []ygot.Annotation                                               `path:"policies/@policy" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_PolicyForwarding implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_PolicyForwarding) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// NetworkInstance_PolicyForwarding struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_PolicyForwarding) NewInterface(InterfaceId string) (*NetworkInstance_PolicyForwarding_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_PolicyForwarding_Interface)
	}

	key := InterfaceId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &NetworkInstance_PolicyForwarding_Interface{
		InterfaceId: &InterfaceId,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the NetworkInstance_PolicyForwarding struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_PolicyForwarding) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.InterfaceId = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from NetworkInstance_PolicyForwarding.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_PolicyForwarding) GetOrCreateInterfaceMap() map[string]*NetworkInstance_PolicyForwarding_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_PolicyForwarding_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver NetworkInstance_PolicyForwarding. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_PolicyForwarding) GetOrCreateInterface(InterfaceId string) *NetworkInstance_PolicyForwarding_Interface {

	key := InterfaceId

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(InterfaceId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of NetworkInstance_PolicyForwarding. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_PolicyForwarding) GetInterface(InterfaceId string) *NetworkInstance_PolicyForwarding_Interface {

	if t == nil {
		return nil
	}

	key := InterfaceId

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied NetworkInstance_PolicyForwarding_Interface struct to the
// list Interface of NetworkInstance_PolicyForwarding. If the key value(s) specified in
// the supplied NetworkInstance_PolicyForwarding_Interface already exist in the list, an error is
// returned.
func (t *NetworkInstance_PolicyForwarding) AppendInterface(v *NetworkInstance_PolicyForwarding_Interface) error {
	if v.InterfaceId == nil {
		return fmt.Errorf("invalid nil key received for InterfaceId")
	}

	key := *v.InterfaceId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_PolicyForwarding_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// NewPathSelectionGroup creates a new entry in the PathSelectionGroup list of the
// NetworkInstance_PolicyForwarding struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_PolicyForwarding) NewPathSelectionGroup(GroupId string) (*NetworkInstance_PolicyForwarding_PathSelectionGroup, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PathSelectionGroup == nil {
		t.PathSelectionGroup = make(map[string]*NetworkInstance_PolicyForwarding_PathSelectionGroup)
	}

	key := GroupId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.PathSelectionGroup[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list PathSelectionGroup", key)
	}

	t.PathSelectionGroup[key] = &NetworkInstance_PolicyForwarding_PathSelectionGroup{
		GroupId: &GroupId,
	}

	return t.PathSelectionGroup[key], nil
}

// RenamePathSelectionGroup renames an entry in the list PathSelectionGroup within
// the NetworkInstance_PolicyForwarding struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_PolicyForwarding) RenamePathSelectionGroup(oldK, newK string) error {
	if _, ok := t.PathSelectionGroup[newK]; ok {
		return fmt.Errorf("key %v already exists in PathSelectionGroup", newK)
	}

	e, ok := t.PathSelectionGroup[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in PathSelectionGroup", oldK)
	}
	e.GroupId = &newK

	t.PathSelectionGroup[newK] = e
	delete(t.PathSelectionGroup, oldK)
	return nil
}

// GetOrCreatePathSelectionGroupMap returns the list (map) from NetworkInstance_PolicyForwarding.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_PolicyForwarding) GetOrCreatePathSelectionGroupMap() map[string]*NetworkInstance_PolicyForwarding_PathSelectionGroup {
	if t.PathSelectionGroup == nil {
		t.PathSelectionGroup = make(map[string]*NetworkInstance_PolicyForwarding_PathSelectionGroup)
	}
	return t.PathSelectionGroup
}

// GetOrCreatePathSelectionGroup retrieves the value with the specified keys from
// the receiver NetworkInstance_PolicyForwarding. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_PolicyForwarding) GetOrCreatePathSelectionGroup(GroupId string) *NetworkInstance_PolicyForwarding_PathSelectionGroup {

	key := GroupId

	if v, ok := t.PathSelectionGroup[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPathSelectionGroup(GroupId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePathSelectionGroup got unexpected error: %v", err))
	}
	return v
}

// GetPathSelectionGroup retrieves the value with the specified key from
// the PathSelectionGroup map field of NetworkInstance_PolicyForwarding. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_PolicyForwarding) GetPathSelectionGroup(GroupId string) *NetworkInstance_PolicyForwarding_PathSelectionGroup {

	if t == nil {
		return nil
	}

	key := GroupId

	if lm, ok := t.PathSelectionGroup[key]; ok {
		return lm
	}
	return nil
}

// AppendPathSelectionGroup appends the supplied NetworkInstance_PolicyForwarding_PathSelectionGroup struct to the
// list PathSelectionGroup of NetworkInstance_PolicyForwarding. If the key value(s) specified in
// the supplied NetworkInstance_PolicyForwarding_PathSelectionGroup already exist in the list, an error is
// returned.
func (t *NetworkInstance_PolicyForwarding) AppendPathSelectionGroup(v *NetworkInstance_PolicyForwarding_PathSelectionGroup) error {
	if v.GroupId == nil {
		return fmt.Errorf("invalid nil key received for GroupId")
	}

	key := *v.GroupId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PathSelectionGroup == nil {
		t.PathSelectionGroup = make(map[string]*NetworkInstance_PolicyForwarding_PathSelectionGroup)
	}

	if _, ok := t.PathSelectionGroup[key]; ok {
		return fmt.Errorf("duplicate key for list PathSelectionGroup %v", key)
	}

	t.PathSelectionGroup[key] = v
	return nil
}

// NewPolicy creates a new entry in the Policy list of the
// NetworkInstance_PolicyForwarding struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_PolicyForwarding) NewPolicy(PolicyId string) (*NetworkInstance_PolicyForwarding_Policy, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Policy == nil {
		t.Policy = make(map[string]*NetworkInstance_PolicyForwarding_Policy)
	}

	key := PolicyId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Policy[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Policy", key)
	}

	t.Policy[key] = &NetworkInstance_PolicyForwarding_Policy{
		PolicyId: &PolicyId,
	}

	return t.Policy[key], nil
}

// RenamePolicy renames an entry in the list Policy within
// the NetworkInstance_PolicyForwarding struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_PolicyForwarding) RenamePolicy(oldK, newK string) error {
	if _, ok := t.Policy[newK]; ok {
		return fmt.Errorf("key %v already exists in Policy", newK)
	}

	e, ok := t.Policy[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Policy", oldK)
	}
	e.PolicyId = &newK

	t.Policy[newK] = e
	delete(t.Policy, oldK)
	return nil
}

// GetOrCreatePolicyMap returns the list (map) from NetworkInstance_PolicyForwarding.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_PolicyForwarding) GetOrCreatePolicyMap() map[string]*NetworkInstance_PolicyForwarding_Policy {
	if t.Policy == nil {
		t.Policy = make(map[string]*NetworkInstance_PolicyForwarding_Policy)
	}
	return t.Policy
}

// GetOrCreatePolicy retrieves the value with the specified keys from
// the receiver NetworkInstance_PolicyForwarding. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_PolicyForwarding) GetOrCreatePolicy(PolicyId string) *NetworkInstance_PolicyForwarding_Policy {

	key := PolicyId

	if v, ok := t.Policy[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPolicy(PolicyId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePolicy got unexpected error: %v", err))
	}
	return v
}

// GetPolicy retrieves the value with the specified key from
// the Policy map field of NetworkInstance_PolicyForwarding. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_PolicyForwarding) GetPolicy(PolicyId string) *NetworkInstance_PolicyForwarding_Policy {

	if t == nil {
		return nil
	}

	key := PolicyId

	if lm, ok := t.Policy[key]; ok {
		return lm
	}
	return nil
}

// AppendPolicy appends the supplied NetworkInstance_PolicyForwarding_Policy struct to the
// list Policy of NetworkInstance_PolicyForwarding. If the key value(s) specified in
// the supplied NetworkInstance_PolicyForwarding_Policy already exist in the list, an error is
// returned.
func (t *NetworkInstance_PolicyForwarding) AppendPolicy(v *NetworkInstance_PolicyForwarding_Policy) error {
	if v.PolicyId == nil {
		return fmt.Errorf("invalid nil key received for PolicyId")
	}

	key := *v.PolicyId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Policy == nil {
		t.Policy = make(map[string]*NetworkInstance_PolicyForwarding_Policy)
	}

	if _, ok := t.Policy[key]; ok {
		return fmt.Errorf("duplicate key for list Policy %v", key)
	}

	t.Policy[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_PolicyForwarding
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_PolicyForwarding) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
	for _, e := range t.PathSelectionGroup {
		e.PopulateDefaults()
	}
	for _, e := range t.Policy {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_PolicyForwarding"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_PolicyForwarding) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_PolicyForwarding.
func (*NetworkInstance_PolicyForwarding) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_PolicyForwarding_Interface represents the /openconfig-network-instance/network-instances/network-instance/policy-forwarding/interfaces/interface YANG schema element.
type NetworkInstance_PolicyForwarding_Interface struct {
	ΛMetadata                []ygot.Annotation                                        `path:"@" ygotAnnotation:"true"`
	ApplyForwardingPolicy    *string                                                  `path:"config/apply-forwarding-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛApplyForwardingPolicy   []ygot.Annotation                                        `path:"config/@apply-forwarding-policy" ygotAnnotation:"true"`
	ApplyVrfSelectionPolicy  *string                                                  `path:"config/apply-vrf-selection-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛApplyVrfSelectionPolicy []ygot.Annotation                                        `path:"config/@apply-vrf-selection-policy" ygotAnnotation:"true"`
	InterfaceId              *string                                                  `path:"config/interface-id|interface-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛInterfaceId             []ygot.Annotation                                        `path:"config/@interface-id|@interface-id" ygotAnnotation:"true"`
	InterfaceRef             *NetworkInstance_PolicyForwarding_Interface_InterfaceRef `path:"interface-ref" module:"openconfig-network-instance"`
	ΛInterfaceRef            []ygot.Annotation                                        `path:"@interface-ref" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_PolicyForwarding_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_PolicyForwarding_Interface) IsYANGGoStruct() {}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *NetworkInstance_PolicyForwarding_Interface) GetOrCreateInterfaceRef() *NetworkInstance_PolicyForwarding_Interface_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &NetworkInstance_PolicyForwarding_Interface_InterfaceRef{}
	return t.InterfaceRef
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from NetworkInstance_PolicyForwarding_Interface. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_PolicyForwarding_Interface) GetInterfaceRef() *NetworkInstance_PolicyForwarding_Interface_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetApplyForwardingPolicy retrieves the value of the leaf ApplyForwardingPolicy from the NetworkInstance_PolicyForwarding_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ApplyForwardingPolicy is set, it can
// safely use t.GetApplyForwardingPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ApplyForwardingPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Interface) GetApplyForwardingPolicy() string {
	if t == nil || t.ApplyForwardingPolicy == nil {
		return ""
	}
	return *t.ApplyForwardingPolicy
}

// GetApplyVrfSelectionPolicy retrieves the value of the leaf ApplyVrfSelectionPolicy from the NetworkInstance_PolicyForwarding_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ApplyVrfSelectionPolicy is set, it can
// safely use t.GetApplyVrfSelectionPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ApplyVrfSelectionPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Interface) GetApplyVrfSelectionPolicy() string {
	if t == nil || t.ApplyVrfSelectionPolicy == nil {
		return ""
	}
	return *t.ApplyVrfSelectionPolicy
}

// GetInterfaceId retrieves the value of the leaf InterfaceId from the NetworkInstance_PolicyForwarding_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceId is set, it can
// safely use t.GetInterfaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Interface) GetInterfaceId() string {
	if t == nil || t.InterfaceId == nil {
		return ""
	}
	return *t.InterfaceId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_PolicyForwarding_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_PolicyForwarding_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.InterfaceRef.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_PolicyForwarding_Interface struct, which is a YANG list entry.
func (t *NetworkInstance_PolicyForwarding_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.InterfaceId == nil {
		return nil, fmt.Errorf("nil value for key InterfaceId")
	}

	return map[string]interface{}{
		"interface-id": *t.InterfaceId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_PolicyForwarding_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_PolicyForwarding_Interface) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_PolicyForwarding_Interface.
func (*NetworkInstance_PolicyForwarding_Interface) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_PolicyForwarding_Interface_InterfaceRef represents the /openconfig-network-instance/network-instances/network-instance/policy-forwarding/interfaces/interface/interface-ref YANG schema element.
type NetworkInstance_PolicyForwarding_Interface_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_PolicyForwarding_Interface_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_PolicyForwarding_Interface_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_PolicyForwarding_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Interface_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_PolicyForwarding_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Interface_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_PolicyForwarding_Interface_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_PolicyForwarding_Interface_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Interface_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_PolicyForwarding_Interface_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Interface_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_PolicyForwarding_Interface_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_PolicyForwarding_Interface_InterfaceRef.
func (*NetworkInstance_PolicyForwarding_Interface_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_PolicyForwarding_PathSelectionGroup represents the /openconfig-network-instance/network-instances/network-instance/policy-forwarding/path-selection-groups/path-selection-group YANG schema element.
type NetworkInstance_PolicyForwarding_PathSelectionGroup struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	GroupId   *string           `path:"config/group-id|group-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛGroupId  []ygot.Annotation `path:"config/@group-id|@group-id" ygotAnnotation:"true"`
	MplsLsp   []string          `path:"config/mpls-lsp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMplsLsp  []ygot.Annotation `path:"config/@mpls-lsp" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_PolicyForwarding_PathSelectionGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_PolicyForwarding_PathSelectionGroup) IsYANGGoStruct() {}

// GetGroupId retrieves the value of the leaf GroupId from the NetworkInstance_PolicyForwarding_PathSelectionGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if GroupId is set, it can
// safely use t.GetGroupId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.GroupId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_PathSelectionGroup) GetGroupId() string {
	if t == nil || t.GroupId == nil {
		return ""
	}
	return *t.GroupId
}

// GetMplsLsp retrieves the value of the leaf MplsLsp from the NetworkInstance_PolicyForwarding_PathSelectionGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MplsLsp is set, it can
// safely use t.GetMplsLsp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MplsLsp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_PathSelectionGroup) GetMplsLsp() []string {
	if t == nil || t.MplsLsp == nil {
		return nil
	}
	return t.MplsLsp
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_PolicyForwarding_PathSelectionGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_PolicyForwarding_PathSelectionGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_PolicyForwarding_PathSelectionGroup struct, which is a YANG list entry.
func (t *NetworkInstance_PolicyForwarding_PathSelectionGroup) ΛListKeyMap() (map[string]interface{}, error) {
	if t.GroupId == nil {
		return nil, fmt.Errorf("nil value for key GroupId")
	}

	return map[string]interface{}{
		"group-id": *t.GroupId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_PathSelectionGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_PolicyForwarding_PathSelectionGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_PathSelectionGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_PolicyForwarding_PathSelectionGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_PolicyForwarding_PathSelectionGroup.
func (*NetworkInstance_PolicyForwarding_PathSelectionGroup) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_PolicyForwarding_Policy represents the /openconfig-network-instance/network-instances/network-instance/policy-forwarding/policies/policy YANG schema element.
type NetworkInstance_PolicyForwarding_Policy struct {
	ΛMetadata []ygot.Annotation                                        `path:"@" ygotAnnotation:"true"`
	PolicyId  *string                                                  `path:"config/policy-id|policy-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPolicyId []ygot.Annotation                                        `path:"config/@policy-id|@policy-id" ygotAnnotation:"true"`
	Rule      map[uint32]*NetworkInstance_PolicyForwarding_Policy_Rule `path:"rules/rule" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRule     []ygot.Annotation                                        `path:"rules/@rule" ygotAnnotation:"true"`
	Type      E_Policy_Type                                            `path:"config/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                                        `path:"config/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_PolicyForwarding_Policy implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_PolicyForwarding_Policy) IsYANGGoStruct() {}

// NewRule creates a new entry in the Rule list of the
// NetworkInstance_PolicyForwarding_Policy struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_PolicyForwarding_Policy) NewRule(SequenceId uint32) (*NetworkInstance_PolicyForwarding_Policy_Rule, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Rule == nil {
		t.Rule = make(map[uint32]*NetworkInstance_PolicyForwarding_Policy_Rule)
	}

	key := SequenceId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Rule[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Rule", key)
	}

	t.Rule[key] = &NetworkInstance_PolicyForwarding_Policy_Rule{
		SequenceId: &SequenceId,
	}

	return t.Rule[key], nil
}

// RenameRule renames an entry in the list Rule within
// the NetworkInstance_PolicyForwarding_Policy struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_PolicyForwarding_Policy) RenameRule(oldK, newK uint32) error {
	if _, ok := t.Rule[newK]; ok {
		return fmt.Errorf("key %v already exists in Rule", newK)
	}

	e, ok := t.Rule[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Rule", oldK)
	}
	e.SequenceId = &newK

	t.Rule[newK] = e
	delete(t.Rule, oldK)
	return nil
}

// GetOrCreateRuleMap returns the list (map) from NetworkInstance_PolicyForwarding_Policy.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_PolicyForwarding_Policy) GetOrCreateRuleMap() map[uint32]*NetworkInstance_PolicyForwarding_Policy_Rule {
	if t.Rule == nil {
		t.Rule = make(map[uint32]*NetworkInstance_PolicyForwarding_Policy_Rule)
	}
	return t.Rule
}

// GetOrCreateRule retrieves the value with the specified keys from
// the receiver NetworkInstance_PolicyForwarding_Policy. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_PolicyForwarding_Policy) GetOrCreateRule(SequenceId uint32) *NetworkInstance_PolicyForwarding_Policy_Rule {

	key := SequenceId

	if v, ok := t.Rule[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRule(SequenceId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRule got unexpected error: %v", err))
	}
	return v
}

// GetRule retrieves the value with the specified key from
// the Rule map field of NetworkInstance_PolicyForwarding_Policy. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_PolicyForwarding_Policy) GetRule(SequenceId uint32) *NetworkInstance_PolicyForwarding_Policy_Rule {

	if t == nil {
		return nil
	}

	key := SequenceId

	if lm, ok := t.Rule[key]; ok {
		return lm
	}
	return nil
}

// AppendRule appends the supplied NetworkInstance_PolicyForwarding_Policy_Rule struct to the
// list Rule of NetworkInstance_PolicyForwarding_Policy. If the key value(s) specified in
// the supplied NetworkInstance_PolicyForwarding_Policy_Rule already exist in the list, an error is
// returned.
func (t *NetworkInstance_PolicyForwarding_Policy) AppendRule(v *NetworkInstance_PolicyForwarding_Policy_Rule) error {
	if v.SequenceId == nil {
		return fmt.Errorf("invalid nil key received for SequenceId")
	}

	key := *v.SequenceId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Rule == nil {
		t.Rule = make(map[uint32]*NetworkInstance_PolicyForwarding_Policy_Rule)
	}

	if _, ok := t.Rule[key]; ok {
		return fmt.Errorf("duplicate key for list Rule %v", key)
	}

	t.Rule[key] = v
	return nil
}

// GetPolicyId retrieves the value of the leaf PolicyId from the NetworkInstance_PolicyForwarding_Policy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PolicyId is set, it can
// safely use t.GetPolicyId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PolicyId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy) GetPolicyId() string {
	if t == nil || t.PolicyId == nil {
		return ""
	}
	return *t.PolicyId
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_PolicyForwarding_Policy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy) GetType() E_Policy_Type {
	if t == nil || t.Type == 0 {
		return Policy_Type_PBR_POLICY
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_PolicyForwarding_Policy
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_PolicyForwarding_Policy) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Type == 0 {
		t.Type = Policy_Type_PBR_POLICY
	}
	for _, e := range t.Rule {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_PolicyForwarding_Policy struct, which is a YANG list entry.
func (t *NetworkInstance_PolicyForwarding_Policy) ΛListKeyMap() (map[string]interface{}, error) {
	if t.PolicyId == nil {
		return nil, fmt.Errorf("nil value for key PolicyId")
	}

	return map[string]interface{}{
		"policy-id": *t.PolicyId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_PolicyForwarding_Policy"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_PolicyForwarding_Policy) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_PolicyForwarding_Policy.
func (*NetworkInstance_PolicyForwarding_Policy) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_PolicyForwarding_Policy_Rule represents the /openconfig-network-instance/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule YANG schema element.
type NetworkInstance_PolicyForwarding_Policy_Rule struct {
	ΛMetadata      []ygot.Annotation                                       `path:"@" ygotAnnotation:"true"`
	Action         *NetworkInstance_PolicyForwarding_Policy_Rule_Action    `path:"action" module:"openconfig-network-instance"`
	ΛAction        []ygot.Annotation                                       `path:"@action" ygotAnnotation:"true"`
	Ipv4           *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4      `path:"ipv4" module:"openconfig-network-instance"`
	ΛIpv4          []ygot.Annotation                                       `path:"@ipv4" ygotAnnotation:"true"`
	Ipv6           *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6      `path:"ipv6" module:"openconfig-network-instance"`
	ΛIpv6          []ygot.Annotation                                       `path:"@ipv6" ygotAnnotation:"true"`
	L2             *NetworkInstance_PolicyForwarding_Policy_Rule_L2        `path:"l2" module:"openconfig-network-instance"`
	ΛL2            []ygot.Annotation                                       `path:"@l2" ygotAnnotation:"true"`
	MatchedOctets  *uint64                                                 `path:"state/matched-octets" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMatchedOctets []ygot.Annotation                                       `path:"state/@matched-octets" ygotAnnotation:"true"`
	MatchedPkts    *uint64                                                 `path:"state/matched-pkts" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMatchedPkts   []ygot.Annotation                                       `path:"state/@matched-pkts" ygotAnnotation:"true"`
	SequenceId     *uint32                                                 `path:"config/sequence-id|sequence-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSequenceId    []ygot.Annotation                                       `path:"config/@sequence-id|@sequence-id" ygotAnnotation:"true"`
	Transport      *NetworkInstance_PolicyForwarding_Policy_Rule_Transport `path:"transport" module:"openconfig-network-instance"`
	ΛTransport     []ygot.Annotation                                       `path:"@transport" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_PolicyForwarding_Policy_Rule implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_PolicyForwarding_Policy_Rule) IsYANGGoStruct() {}

// GetOrCreateAction retrieves the value of the Action field
// or returns the existing field if it already exists.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) GetOrCreateAction() *NetworkInstance_PolicyForwarding_Policy_Rule_Action {
	if t.Action != nil {
		return t.Action
	}
	t.Action = &NetworkInstance_PolicyForwarding_Policy_Rule_Action{}
	return t.Action
}

// GetOrCreateIpv4 retrieves the value of the Ipv4 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) GetOrCreateIpv4() *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4 {
	if t.Ipv4 != nil {
		return t.Ipv4
	}
	t.Ipv4 = &NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4{}
	return t.Ipv4
}

// GetOrCreateIpv6 retrieves the value of the Ipv6 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) GetOrCreateIpv6() *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6 {
	if t.Ipv6 != nil {
		return t.Ipv6
	}
	t.Ipv6 = &NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6{}
	return t.Ipv6
}

// GetOrCreateL2 retrieves the value of the L2 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) GetOrCreateL2() *NetworkInstance_PolicyForwarding_Policy_Rule_L2 {
	if t.L2 != nil {
		return t.L2
	}
	t.L2 = &NetworkInstance_PolicyForwarding_Policy_Rule_L2{}
	return t.L2
}

// GetOrCreateTransport retrieves the value of the Transport field
// or returns the existing field if it already exists.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) GetOrCreateTransport() *NetworkInstance_PolicyForwarding_Policy_Rule_Transport {
	if t.Transport != nil {
		return t.Transport
	}
	t.Transport = &NetworkInstance_PolicyForwarding_Policy_Rule_Transport{}
	return t.Transport
}

// GetAction returns the value of the Action struct pointer
// from NetworkInstance_PolicyForwarding_Policy_Rule. If the receiver or the field Action is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) GetAction() *NetworkInstance_PolicyForwarding_Policy_Rule_Action {
	if t != nil && t.Action != nil {
		return t.Action
	}
	return nil
}

// GetIpv4 returns the value of the Ipv4 struct pointer
// from NetworkInstance_PolicyForwarding_Policy_Rule. If the receiver or the field Ipv4 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) GetIpv4() *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4 {
	if t != nil && t.Ipv4 != nil {
		return t.Ipv4
	}
	return nil
}

// GetIpv6 returns the value of the Ipv6 struct pointer
// from NetworkInstance_PolicyForwarding_Policy_Rule. If the receiver or the field Ipv6 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) GetIpv6() *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6 {
	if t != nil && t.Ipv6 != nil {
		return t.Ipv6
	}
	return nil
}

// GetL2 returns the value of the L2 struct pointer
// from NetworkInstance_PolicyForwarding_Policy_Rule. If the receiver or the field L2 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) GetL2() *NetworkInstance_PolicyForwarding_Policy_Rule_L2 {
	if t != nil && t.L2 != nil {
		return t.L2
	}
	return nil
}

// GetTransport returns the value of the Transport struct pointer
// from NetworkInstance_PolicyForwarding_Policy_Rule. If the receiver or the field Transport is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) GetTransport() *NetworkInstance_PolicyForwarding_Policy_Rule_Transport {
	if t != nil && t.Transport != nil {
		return t.Transport
	}
	return nil
}

// GetMatchedOctets retrieves the value of the leaf MatchedOctets from the NetworkInstance_PolicyForwarding_Policy_Rule
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MatchedOctets is set, it can
// safely use t.GetMatchedOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MatchedOctets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) GetMatchedOctets() uint64 {
	if t == nil || t.MatchedOctets == nil {
		return 0
	}
	return *t.MatchedOctets
}

// GetMatchedPkts retrieves the value of the leaf MatchedPkts from the NetworkInstance_PolicyForwarding_Policy_Rule
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MatchedPkts is set, it can
// safely use t.GetMatchedPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MatchedPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) GetMatchedPkts() uint64 {
	if t == nil || t.MatchedPkts == nil {
		return 0
	}
	return *t.MatchedPkts
}

// GetSequenceId retrieves the value of the leaf SequenceId from the NetworkInstance_PolicyForwarding_Policy_Rule
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SequenceId is set, it can
// safely use t.GetSequenceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SequenceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) GetSequenceId() uint32 {
	if t == nil || t.SequenceId == nil {
		return 0
	}
	return *t.SequenceId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_PolicyForwarding_Policy_Rule
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Action.PopulateDefaults()
	t.Ipv4.PopulateDefaults()
	t.Ipv6.PopulateDefaults()
	t.L2.PopulateDefaults()
	t.Transport.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_PolicyForwarding_Policy_Rule struct, which is a YANG list entry.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) ΛListKeyMap() (map[string]interface{}, error) {
	if t.SequenceId == nil {
		return nil, fmt.Errorf("nil value for key SequenceId")
	}

	return map[string]interface{}{
		"sequence-id": *t.SequenceId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_PolicyForwarding_Policy_Rule"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_PolicyForwarding_Policy_Rule.
func (*NetworkInstance_PolicyForwarding_Policy_Rule) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_PolicyForwarding_Policy_Rule_Action represents the /openconfig-network-instance/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action YANG schema element.
type NetworkInstance_PolicyForwarding_Policy_Rule_Action struct {
	ΛMetadata                     []ygot.Annotation                                                   `path:"@" ygotAnnotation:"true"`
	DecapFallbackNetworkInstance  *string                                                             `path:"config/decap-fallback-network-instance" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDecapFallbackNetworkInstance []ygot.Annotation                                                   `path:"config/@decap-fallback-network-instance" ygotAnnotation:"true"`
	DecapNetworkInstance          *string                                                             `path:"config/decap-network-instance" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDecapNetworkInstance         []ygot.Annotation                                                   `path:"config/@decap-network-instance" ygotAnnotation:"true"`
	DecapsulateGre                *bool                                                               `path:"config/decapsulate-gre" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDecapsulateGre               []ygot.Annotation                                                   `path:"config/@decapsulate-gre" ygotAnnotation:"true"`
	DecapsulateGue                *bool                                                               `path:"config/decapsulate-gue" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDecapsulateGue               []ygot.Annotation                                                   `path:"config/@decapsulate-gue" ygotAnnotation:"true"`
	DecapsulateMplsInUdp          *bool                                                               `path:"config/decapsulate-mpls-in-udp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDecapsulateMplsInUdp         []ygot.Annotation                                                   `path:"config/@decapsulate-mpls-in-udp" ygotAnnotation:"true"`
	Discard                       *bool                                                               `path:"config/discard" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDiscard                      []ygot.Annotation                                                   `path:"config/@discard" ygotAnnotation:"true"`
	EncapsulateGre                *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre `path:"encapsulate-gre" module:"openconfig-network-instance"`
	ΛEncapsulateGre               []ygot.Annotation                                                   `path:"@encapsulate-gre" ygotAnnotation:"true"`
	NetworkInstance               *string                                                             `path:"config/network-instance" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNetworkInstance              []ygot.Annotation                                                   `path:"config/@network-instance" ygotAnnotation:"true"`
	NextHop                       *string                                                             `path:"config/next-hop" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHop                      []ygot.Annotation                                                   `path:"config/@next-hop" ygotAnnotation:"true"`
	PathSelectionGroup            *string                                                             `path:"config/path-selection-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPathSelectionGroup           []ygot.Annotation                                                   `path:"config/@path-selection-group" ygotAnnotation:"true"`
	PostDecapNetworkInstance      *string                                                             `path:"config/post-decap-network-instance" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPostDecapNetworkInstance     []ygot.Annotation                                                   `path:"config/@post-decap-network-instance" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_PolicyForwarding_Policy_Rule_Action implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_Action) IsYANGGoStruct() {}

// GetOrCreateEncapsulateGre retrieves the value of the EncapsulateGre field
// or returns the existing field if it already exists.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action) GetOrCreateEncapsulateGre() *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre {
	if t.EncapsulateGre != nil {
		return t.EncapsulateGre
	}
	t.EncapsulateGre = &NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre{}
	return t.EncapsulateGre
}

// GetEncapsulateGre returns the value of the EncapsulateGre struct pointer
// from NetworkInstance_PolicyForwarding_Policy_Rule_Action. If the receiver or the field EncapsulateGre is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action) GetEncapsulateGre() *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre {
	if t != nil && t.EncapsulateGre != nil {
		return t.EncapsulateGre
	}
	return nil
}

// GetDecapFallbackNetworkInstance retrieves the value of the leaf DecapFallbackNetworkInstance from the NetworkInstance_PolicyForwarding_Policy_Rule_Action
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DecapFallbackNetworkInstance is set, it can
// safely use t.GetDecapFallbackNetworkInstance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DecapFallbackNetworkInstance == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action) GetDecapFallbackNetworkInstance() string {
	if t == nil || t.DecapFallbackNetworkInstance == nil {
		return ""
	}
	return *t.DecapFallbackNetworkInstance
}

// GetDecapNetworkInstance retrieves the value of the leaf DecapNetworkInstance from the NetworkInstance_PolicyForwarding_Policy_Rule_Action
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DecapNetworkInstance is set, it can
// safely use t.GetDecapNetworkInstance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DecapNetworkInstance == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action) GetDecapNetworkInstance() string {
	if t == nil || t.DecapNetworkInstance == nil {
		return ""
	}
	return *t.DecapNetworkInstance
}

// GetDecapsulateGre retrieves the value of the leaf DecapsulateGre from the NetworkInstance_PolicyForwarding_Policy_Rule_Action
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DecapsulateGre is set, it can
// safely use t.GetDecapsulateGre() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DecapsulateGre == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action) GetDecapsulateGre() bool {
	if t == nil || t.DecapsulateGre == nil {
		return false
	}
	return *t.DecapsulateGre
}

// GetDecapsulateGue retrieves the value of the leaf DecapsulateGue from the NetworkInstance_PolicyForwarding_Policy_Rule_Action
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DecapsulateGue is set, it can
// safely use t.GetDecapsulateGue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DecapsulateGue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action) GetDecapsulateGue() bool {
	if t == nil || t.DecapsulateGue == nil {
		return false
	}
	return *t.DecapsulateGue
}

// GetDecapsulateMplsInUdp retrieves the value of the leaf DecapsulateMplsInUdp from the NetworkInstance_PolicyForwarding_Policy_Rule_Action
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DecapsulateMplsInUdp is set, it can
// safely use t.GetDecapsulateMplsInUdp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DecapsulateMplsInUdp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action) GetDecapsulateMplsInUdp() bool {
	if t == nil || t.DecapsulateMplsInUdp == nil {
		return false
	}
	return *t.DecapsulateMplsInUdp
}

// GetDiscard retrieves the value of the leaf Discard from the NetworkInstance_PolicyForwarding_Policy_Rule_Action
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Discard is set, it can
// safely use t.GetDiscard() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Discard == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action) GetDiscard() bool {
	if t == nil || t.Discard == nil {
		return false
	}
	return *t.Discard
}

// GetNetworkInstance retrieves the value of the leaf NetworkInstance from the NetworkInstance_PolicyForwarding_Policy_Rule_Action
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NetworkInstance is set, it can
// safely use t.GetNetworkInstance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NetworkInstance == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action) GetNetworkInstance() string {
	if t == nil || t.NetworkInstance == nil {
		return ""
	}
	return *t.NetworkInstance
}

// GetNextHop retrieves the value of the leaf NextHop from the NetworkInstance_PolicyForwarding_Policy_Rule_Action
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHop is set, it can
// safely use t.GetNextHop() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHop == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action) GetNextHop() string {
	if t == nil || t.NextHop == nil {
		return ""
	}
	return *t.NextHop
}

// GetPathSelectionGroup retrieves the value of the leaf PathSelectionGroup from the NetworkInstance_PolicyForwarding_Policy_Rule_Action
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathSelectionGroup is set, it can
// safely use t.GetPathSelectionGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathSelectionGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action) GetPathSelectionGroup() string {
	if t == nil || t.PathSelectionGroup == nil {
		return ""
	}
	return *t.PathSelectionGroup
}

// GetPostDecapNetworkInstance retrieves the value of the leaf PostDecapNetworkInstance from the NetworkInstance_PolicyForwarding_Policy_Rule_Action
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PostDecapNetworkInstance is set, it can
// safely use t.GetPostDecapNetworkInstance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PostDecapNetworkInstance == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action) GetPostDecapNetworkInstance() string {
	if t == nil || t.PostDecapNetworkInstance == nil {
		return ""
	}
	return *t.PostDecapNetworkInstance
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_PolicyForwarding_Policy_Rule_Action
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DecapsulateGre == nil {
		var v bool = false
		t.DecapsulateGre = &v
	}
	if t.DecapsulateGue == nil {
		var v bool = false
		t.DecapsulateGue = &v
	}
	if t.DecapsulateMplsInUdp == nil {
		var v bool = false
		t.DecapsulateMplsInUdp = &v
	}
	if t.Discard == nil {
		var v bool = false
		t.Discard = &v
	}
	t.EncapsulateGre.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_PolicyForwarding_Policy_Rule_Action"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_PolicyForwarding_Policy_Rule_Action.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_Action) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre represents the /openconfig-network-instance/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/encapsulate-gre YANG schema element.
type NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre struct {
	ΛMetadata          []ygot.Annotation                                                                     `path:"@" ygotAnnotation:"true"`
	IdentifyingPrefix  *string                                                                               `path:"config/identifying-prefix" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIdentifyingPrefix []ygot.Annotation                                                                     `path:"config/@identifying-prefix" ygotAnnotation:"true"`
	Target             map[string]*NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target `path:"targets/target" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTarget            []ygot.Annotation                                                                     `path:"targets/@target" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre) IsYANGGoStruct() {}

// NewTarget creates a new entry in the Target list of the
// NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre) NewTarget(Id string) (*NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Target == nil {
		t.Target = make(map[string]*NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Target[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Target", key)
	}

	t.Target[key] = &NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target{
		Id: &Id,
	}

	return t.Target[key], nil
}

// RenameTarget renames an entry in the list Target within
// the NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre) RenameTarget(oldK, newK string) error {
	if _, ok := t.Target[newK]; ok {
		return fmt.Errorf("key %v already exists in Target", newK)
	}

	e, ok := t.Target[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Target", oldK)
	}
	e.Id = &newK

	t.Target[newK] = e
	delete(t.Target, oldK)
	return nil
}

// GetOrCreateTargetMap returns the list (map) from NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre) GetOrCreateTargetMap() map[string]*NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target {
	if t.Target == nil {
		t.Target = make(map[string]*NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target)
	}
	return t.Target
}

// GetOrCreateTarget retrieves the value with the specified keys from
// the receiver NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre) GetOrCreateTarget(Id string) *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target {

	key := Id

	if v, ok := t.Target[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTarget(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTarget got unexpected error: %v", err))
	}
	return v
}

// GetTarget retrieves the value with the specified key from
// the Target map field of NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre) GetTarget(Id string) *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.Target[key]; ok {
		return lm
	}
	return nil
}

// AppendTarget appends the supplied NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target struct to the
// list Target of NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre. If the key value(s) specified in
// the supplied NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target already exist in the list, an error is
// returned.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre) AppendTarget(v *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Target == nil {
		t.Target = make(map[string]*NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target)
	}

	if _, ok := t.Target[key]; ok {
		return fmt.Errorf("duplicate key for list Target %v", key)
	}

	t.Target[key] = v
	return nil
}

// GetIdentifyingPrefix retrieves the value of the leaf IdentifyingPrefix from the NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IdentifyingPrefix is set, it can
// safely use t.GetIdentifyingPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IdentifyingPrefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre) GetIdentifyingPrefix() string {
	if t == nil || t.IdentifyingPrefix == nil {
		return ""
	}
	return *t.IdentifyingPrefix
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Target {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target represents the /openconfig-network-instance/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/encapsulate-gre/targets/target YANG schema element.
type NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target struct {
	ΛMetadata    []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Destination  *string           `path:"config/destination" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDestination []ygot.Annotation `path:"config/@destination" ygotAnnotation:"true"`
	Id           *string           `path:"config/id|id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛId          []ygot.Annotation `path:"config/@id|@id" ygotAnnotation:"true"`
	IpTtl        *uint8            `path:"config/ip-ttl" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpTtl       []ygot.Annotation `path:"config/@ip-ttl" ygotAnnotation:"true"`
	Source       *string           `path:"config/source" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSource      []ygot.Annotation `path:"config/@source" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target) IsYANGGoStruct() {}

// GetDestination retrieves the value of the leaf Destination from the NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Destination is set, it can
// safely use t.GetDestination() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Destination == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target) GetDestination() string {
	if t == nil || t.Destination == nil {
		return ""
	}
	return *t.Destination
}

// GetId retrieves the value of the leaf Id from the NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target) GetId() string {
	if t == nil || t.Id == nil {
		return ""
	}
	return *t.Id
}

// GetIpTtl retrieves the value of the leaf IpTtl from the NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IpTtl is set, it can
// safely use t.GetIpTtl() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IpTtl == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target) GetIpTtl() uint8 {
	if t == nil || t.IpTtl == nil {
		return 0
	}
	return *t.IpTtl
}

// GetSource retrieves the value of the leaf Source from the NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Source is set, it can
// safely use t.GetSource() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Source == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target) GetSource() string {
	if t == nil || t.Source == nil {
		return ""
	}
	return *t.Source
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target struct, which is a YANG list entry.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_Action_EncapsulateGre_Target) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4 represents the /openconfig-network-instance/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4 YANG schema element.
type NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4 struct {
	ΛMetadata                    []ygot.Annotation                                                `path:"@" ygotAnnotation:"true"`
	DestinationAddress           *string                                                          `path:"config/destination-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDestinationAddress          []ygot.Annotation                                                `path:"config/@destination-address" ygotAnnotation:"true"`
	DestinationAddressPrefixSet  *string                                                          `path:"config/destination-address-prefix-set" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDestinationAddressPrefixSet []ygot.Annotation                                                `path:"config/@destination-address-prefix-set" ygotAnnotation:"true"`
	Dscp                         *uint8                                                           `path:"config/dscp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDscp                        []ygot.Annotation                                                `path:"config/@dscp" ygotAnnotation:"true"`
	DscpSet                      []uint8                                                          `path:"config/dscp-set" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDscpSet                     []ygot.Annotation                                                `path:"config/@dscp-set" ygotAnnotation:"true"`
	HopLimit                     *uint8                                                           `path:"config/hop-limit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHopLimit                    []ygot.Annotation                                                `path:"config/@hop-limit" ygotAnnotation:"true"`
	Icmpv4                       *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4        `path:"icmpv4" module:"openconfig-network-instance"`
	ΛIcmpv4                      []ygot.Annotation                                                `path:"@icmpv4" ygotAnnotation:"true"`
	Length                       *uint16                                                          `path:"config/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength                      []ygot.Annotation                                                `path:"config/@length" ygotAnnotation:"true"`
	Protocol                     NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Protocol_Union `path:"config/protocol" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProtocol                    []ygot.Annotation                                                `path:"config/@protocol" ygotAnnotation:"true"`
	SourceAddress                *string                                                          `path:"config/source-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSourceAddress               []ygot.Annotation                                                `path:"config/@source-address" ygotAnnotation:"true"`
	SourceAddressPrefixSet       *string                                                          `path:"config/source-address-prefix-set" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSourceAddressPrefixSet      []ygot.Annotation                                                `path:"config/@source-address-prefix-set" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) IsYANGGoStruct() {}

// GetOrCreateIcmpv4 retrieves the value of the Icmpv4 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) GetOrCreateIcmpv4() *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4 {
	if t.Icmpv4 != nil {
		return t.Icmpv4
	}
	t.Icmpv4 = &NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4{}
	return t.Icmpv4
}

// GetIcmpv4 returns the value of the Icmpv4 struct pointer
// from NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4. If the receiver or the field Icmpv4 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) GetIcmpv4() *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4 {
	if t != nil && t.Icmpv4 != nil {
		return t.Icmpv4
	}
	return nil
}

// GetDestinationAddress retrieves the value of the leaf DestinationAddress from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationAddress is set, it can
// safely use t.GetDestinationAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) GetDestinationAddress() string {
	if t == nil || t.DestinationAddress == nil {
		return ""
	}
	return *t.DestinationAddress
}

// GetDestinationAddressPrefixSet retrieves the value of the leaf DestinationAddressPrefixSet from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationAddressPrefixSet is set, it can
// safely use t.GetDestinationAddressPrefixSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationAddressPrefixSet == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) GetDestinationAddressPrefixSet() string {
	if t == nil || t.DestinationAddressPrefixSet == nil {
		return ""
	}
	return *t.DestinationAddressPrefixSet
}

// GetDscp retrieves the value of the leaf Dscp from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dscp is set, it can
// safely use t.GetDscp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dscp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) GetDscp() uint8 {
	if t == nil || t.Dscp == nil {
		return 0
	}
	return *t.Dscp
}

// GetDscpSet retrieves the value of the leaf DscpSet from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DscpSet is set, it can
// safely use t.GetDscpSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DscpSet == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) GetDscpSet() []uint8 {
	if t == nil || t.DscpSet == nil {
		return nil
	}
	return t.DscpSet
}

// GetHopLimit retrieves the value of the leaf HopLimit from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HopLimit is set, it can
// safely use t.GetHopLimit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HopLimit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) GetHopLimit() uint8 {
	if t == nil || t.HopLimit == nil {
		return 0
	}
	return *t.HopLimit
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) GetLength() uint16 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetProtocol retrieves the value of the leaf Protocol from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Protocol is set, it can
// safely use t.GetProtocol() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Protocol == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) GetProtocol() NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Protocol_Union {
	if t == nil || t.Protocol == nil {
		return nil
	}
	return t.Protocol
}

// GetSourceAddress retrieves the value of the leaf SourceAddress from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddress is set, it can
// safely use t.GetSourceAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) GetSourceAddress() string {
	if t == nil || t.SourceAddress == nil {
		return ""
	}
	return *t.SourceAddress
}

// GetSourceAddressPrefixSet retrieves the value of the leaf SourceAddressPrefixSet from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddressPrefixSet is set, it can
// safely use t.GetSourceAddressPrefixSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddressPrefixSet == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) GetSourceAddressPrefixSet() string {
	if t == nil || t.SourceAddressPrefixSet == nil {
		return ""
	}
	return *t.SourceAddressPrefixSet
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Icmpv4.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Protocol_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/config/protocol within the YANG schema.
// Union type can be one of [E_PacketMatchTypes_IP_PROTOCOL, UnionUint8].
type NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Protocol_Union interface {
	// Union type can be one of [E_PacketMatchTypes_IP_PROTOCOL, UnionUint8]
	Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Protocol_Union()
}

// Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Protocol_Union ensures that E_PacketMatchTypes_IP_PROTOCOL
// implements the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Protocol_Union interface.
func (E_PacketMatchTypes_IP_PROTOCOL) Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Protocol_Union() {
}

// Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Protocol_Union ensures that UnionUint8
// implements the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Protocol_Union interface.
func (UnionUint8) Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Protocol_Union() {
}

// To_NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Protocol_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Protocol_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4) To_NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Protocol_Union(i interface{}) (NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Protocol_Union, error) {
	if v, ok := i.(NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Protocol_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint8:
		return UnionUint8(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Protocol_Union, unknown union type, got: %T, want any of [E_PacketMatchTypes_IP_PROTOCOL, uint8]", i, i)
}

// NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4 represents the /openconfig-network-instance/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/icmpv4 YANG schema element.
type NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4 struct {
	ΛMetadata []ygot.Annotation  `path:"@" ygotAnnotation:"true"`
	Code      E_Icmpv4Types_CODE `path:"config/code" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCode     []ygot.Annotation  `path:"config/@code" ygotAnnotation:"true"`
	Type      E_Icmpv4Types_TYPE `path:"config/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation  `path:"config/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4) IsYANGGoStruct() {}

// GetCode retrieves the value of the leaf Code from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Code is set, it can
// safely use t.GetCode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Code == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4) GetCode() E_Icmpv4Types_CODE {
	if t == nil || t.Code == 0 {
		return 0
	}
	return t.Code
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4) GetType() E_Icmpv4Types_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_Ipv4_Icmpv4) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6 represents the /openconfig-network-instance/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6 YANG schema element.
type NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6 struct {
	ΛMetadata                    []ygot.Annotation                                                `path:"@" ygotAnnotation:"true"`
	DestinationAddress           *string                                                          `path:"config/destination-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDestinationAddress          []ygot.Annotation                                                `path:"config/@destination-address" ygotAnnotation:"true"`
	DestinationAddressPrefixSet  *string                                                          `path:"config/destination-address-prefix-set" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDestinationAddressPrefixSet []ygot.Annotation                                                `path:"config/@destination-address-prefix-set" ygotAnnotation:"true"`
	DestinationFlowLabel         *uint32                                                          `path:"config/destination-flow-label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDestinationFlowLabel        []ygot.Annotation                                                `path:"config/@destination-flow-label" ygotAnnotation:"true"`
	Dscp                         *uint8                                                           `path:"config/dscp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDscp                        []ygot.Annotation                                                `path:"config/@dscp" ygotAnnotation:"true"`
	DscpSet                      []uint8                                                          `path:"config/dscp-set" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDscpSet                     []ygot.Annotation                                                `path:"config/@dscp-set" ygotAnnotation:"true"`
	HopLimit                     *uint8                                                           `path:"config/hop-limit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHopLimit                    []ygot.Annotation                                                `path:"config/@hop-limit" ygotAnnotation:"true"`
	Icmpv6                       *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6        `path:"icmpv6" module:"openconfig-network-instance"`
	ΛIcmpv6                      []ygot.Annotation                                                `path:"@icmpv6" ygotAnnotation:"true"`
	Length                       *uint16                                                          `path:"config/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength                      []ygot.Annotation                                                `path:"config/@length" ygotAnnotation:"true"`
	Protocol                     NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Protocol_Union `path:"config/protocol" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProtocol                    []ygot.Annotation                                                `path:"config/@protocol" ygotAnnotation:"true"`
	SourceAddress                *string                                                          `path:"config/source-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSourceAddress               []ygot.Annotation                                                `path:"config/@source-address" ygotAnnotation:"true"`
	SourceAddressPrefixSet       *string                                                          `path:"config/source-address-prefix-set" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSourceAddressPrefixSet      []ygot.Annotation                                                `path:"config/@source-address-prefix-set" ygotAnnotation:"true"`
	SourceFlowLabel              *uint32                                                          `path:"config/source-flow-label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSourceFlowLabel             []ygot.Annotation                                                `path:"config/@source-flow-label" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) IsYANGGoStruct() {}

// GetOrCreateIcmpv6 retrieves the value of the Icmpv6 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) GetOrCreateIcmpv6() *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6 {
	if t.Icmpv6 != nil {
		return t.Icmpv6
	}
	t.Icmpv6 = &NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6{}
	return t.Icmpv6
}

// GetIcmpv6 returns the value of the Icmpv6 struct pointer
// from NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6. If the receiver or the field Icmpv6 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) GetIcmpv6() *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6 {
	if t != nil && t.Icmpv6 != nil {
		return t.Icmpv6
	}
	return nil
}

// GetDestinationAddress retrieves the value of the leaf DestinationAddress from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationAddress is set, it can
// safely use t.GetDestinationAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) GetDestinationAddress() string {
	if t == nil || t.DestinationAddress == nil {
		return ""
	}
	return *t.DestinationAddress
}

// GetDestinationAddressPrefixSet retrieves the value of the leaf DestinationAddressPrefixSet from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationAddressPrefixSet is set, it can
// safely use t.GetDestinationAddressPrefixSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationAddressPrefixSet == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) GetDestinationAddressPrefixSet() string {
	if t == nil || t.DestinationAddressPrefixSet == nil {
		return ""
	}
	return *t.DestinationAddressPrefixSet
}

// GetDestinationFlowLabel retrieves the value of the leaf DestinationFlowLabel from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationFlowLabel is set, it can
// safely use t.GetDestinationFlowLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationFlowLabel == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) GetDestinationFlowLabel() uint32 {
	if t == nil || t.DestinationFlowLabel == nil {
		return 0
	}
	return *t.DestinationFlowLabel
}

// GetDscp retrieves the value of the leaf Dscp from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dscp is set, it can
// safely use t.GetDscp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dscp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) GetDscp() uint8 {
	if t == nil || t.Dscp == nil {
		return 0
	}
	return *t.Dscp
}

// GetDscpSet retrieves the value of the leaf DscpSet from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DscpSet is set, it can
// safely use t.GetDscpSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DscpSet == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) GetDscpSet() []uint8 {
	if t == nil || t.DscpSet == nil {
		return nil
	}
	return t.DscpSet
}

// GetHopLimit retrieves the value of the leaf HopLimit from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HopLimit is set, it can
// safely use t.GetHopLimit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HopLimit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) GetHopLimit() uint8 {
	if t == nil || t.HopLimit == nil {
		return 0
	}
	return *t.HopLimit
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) GetLength() uint16 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetProtocol retrieves the value of the leaf Protocol from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Protocol is set, it can
// safely use t.GetProtocol() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Protocol == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) GetProtocol() NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Protocol_Union {
	if t == nil || t.Protocol == nil {
		return nil
	}
	return t.Protocol
}

// GetSourceAddress retrieves the value of the leaf SourceAddress from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddress is set, it can
// safely use t.GetSourceAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) GetSourceAddress() string {
	if t == nil || t.SourceAddress == nil {
		return ""
	}
	return *t.SourceAddress
}

// GetSourceAddressPrefixSet retrieves the value of the leaf SourceAddressPrefixSet from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddressPrefixSet is set, it can
// safely use t.GetSourceAddressPrefixSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddressPrefixSet == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) GetSourceAddressPrefixSet() string {
	if t == nil || t.SourceAddressPrefixSet == nil {
		return ""
	}
	return *t.SourceAddressPrefixSet
}

// GetSourceFlowLabel retrieves the value of the leaf SourceFlowLabel from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceFlowLabel is set, it can
// safely use t.GetSourceFlowLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceFlowLabel == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) GetSourceFlowLabel() uint32 {
	if t == nil || t.SourceFlowLabel == nil {
		return 0
	}
	return *t.SourceFlowLabel
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Icmpv6.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Protocol_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/config/protocol within the YANG schema.
// Union type can be one of [E_PacketMatchTypes_IP_PROTOCOL, UnionUint8].
type NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Protocol_Union interface {
	// Union type can be one of [E_PacketMatchTypes_IP_PROTOCOL, UnionUint8]
	Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Protocol_Union()
}

// Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Protocol_Union ensures that E_PacketMatchTypes_IP_PROTOCOL
// implements the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Protocol_Union interface.
func (E_PacketMatchTypes_IP_PROTOCOL) Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Protocol_Union() {
}

// Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Protocol_Union ensures that UnionUint8
// implements the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Protocol_Union interface.
func (UnionUint8) Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Protocol_Union() {
}

// To_NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Protocol_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Protocol_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6) To_NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Protocol_Union(i interface{}) (NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Protocol_Union, error) {
	if v, ok := i.(NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Protocol_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint8:
		return UnionUint8(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Protocol_Union, unknown union type, got: %T, want any of [E_PacketMatchTypes_IP_PROTOCOL, uint8]", i, i)
}

// NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6 represents the /openconfig-network-instance/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/icmpv6 YANG schema element.
type NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6 struct {
	ΛMetadata []ygot.Annotation  `path:"@" ygotAnnotation:"true"`
	Code      E_Icmpv6Types_CODE `path:"config/code" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCode     []ygot.Annotation  `path:"config/@code" ygotAnnotation:"true"`
	Type      E_Icmpv6Types_TYPE `path:"config/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation  `path:"config/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6) IsYANGGoStruct() {}

// GetCode retrieves the value of the leaf Code from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Code is set, it can
// safely use t.GetCode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Code == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6) GetCode() E_Icmpv6Types_CODE {
	if t == nil || t.Code == 0 {
		return 0
	}
	return t.Code
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6) GetType() E_Icmpv6Types_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_Ipv6_Icmpv6) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_PolicyForwarding_Policy_Rule_L2 represents the /openconfig-network-instance/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/l2 YANG schema element.
type NetworkInstance_PolicyForwarding_Policy_Rule_L2 struct {
	ΛMetadata           []ygot.Annotation                                               `path:"@" ygotAnnotation:"true"`
	DestinationMac      *string                                                         `path:"config/destination-mac" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDestinationMac     []ygot.Annotation                                               `path:"config/@destination-mac" ygotAnnotation:"true"`
	DestinationMacMask  *string                                                         `path:"config/destination-mac-mask" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDestinationMacMask []ygot.Annotation                                               `path:"config/@destination-mac-mask" ygotAnnotation:"true"`
	Ethertype           NetworkInstance_PolicyForwarding_Policy_Rule_L2_Ethertype_Union `path:"config/ethertype" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEthertype          []ygot.Annotation                                               `path:"config/@ethertype" ygotAnnotation:"true"`
	SourceMac           *string                                                         `path:"config/source-mac" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSourceMac          []ygot.Annotation                                               `path:"config/@source-mac" ygotAnnotation:"true"`
	SourceMacMask       *string                                                         `path:"config/source-mac-mask" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSourceMacMask      []ygot.Annotation                                               `path:"config/@source-mac-mask" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_PolicyForwarding_Policy_Rule_L2 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_L2) IsYANGGoStruct() {}

// GetDestinationMac retrieves the value of the leaf DestinationMac from the NetworkInstance_PolicyForwarding_Policy_Rule_L2
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationMac is set, it can
// safely use t.GetDestinationMac() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationMac == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_L2) GetDestinationMac() string {
	if t == nil || t.DestinationMac == nil {
		return ""
	}
	return *t.DestinationMac
}

// GetDestinationMacMask retrieves the value of the leaf DestinationMacMask from the NetworkInstance_PolicyForwarding_Policy_Rule_L2
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationMacMask is set, it can
// safely use t.GetDestinationMacMask() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationMacMask == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_L2) GetDestinationMacMask() string {
	if t == nil || t.DestinationMacMask == nil {
		return ""
	}
	return *t.DestinationMacMask
}

// GetEthertype retrieves the value of the leaf Ethertype from the NetworkInstance_PolicyForwarding_Policy_Rule_L2
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ethertype is set, it can
// safely use t.GetEthertype() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ethertype == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_L2) GetEthertype() NetworkInstance_PolicyForwarding_Policy_Rule_L2_Ethertype_Union {
	if t == nil || t.Ethertype == nil {
		return nil
	}
	return t.Ethertype
}

// GetSourceMac retrieves the value of the leaf SourceMac from the NetworkInstance_PolicyForwarding_Policy_Rule_L2
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceMac is set, it can
// safely use t.GetSourceMac() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceMac == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_L2) GetSourceMac() string {
	if t == nil || t.SourceMac == nil {
		return ""
	}
	return *t.SourceMac
}

// GetSourceMacMask retrieves the value of the leaf SourceMacMask from the NetworkInstance_PolicyForwarding_Policy_Rule_L2
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceMacMask is set, it can
// safely use t.GetSourceMacMask() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceMacMask == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_L2) GetSourceMacMask() string {
	if t == nil || t.SourceMacMask == nil {
		return ""
	}
	return *t.SourceMacMask
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_PolicyForwarding_Policy_Rule_L2
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_L2) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_L2) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_PolicyForwarding_Policy_Rule_L2"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_L2) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_L2) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_PolicyForwarding_Policy_Rule_L2.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_L2) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_PolicyForwarding_Policy_Rule_L2_Ethertype_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/l2/config/ethertype within the YANG schema.
// Union type can be one of [E_PacketMatchTypes_ETHERTYPE, UnionUint16].
type NetworkInstance_PolicyForwarding_Policy_Rule_L2_Ethertype_Union interface {
	// Union type can be one of [E_PacketMatchTypes_ETHERTYPE, UnionUint16]
	Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_L2_Ethertype_Union()
}

// Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_L2_Ethertype_Union ensures that E_PacketMatchTypes_ETHERTYPE
// implements the NetworkInstance_PolicyForwarding_Policy_Rule_L2_Ethertype_Union interface.
func (E_PacketMatchTypes_ETHERTYPE) Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_L2_Ethertype_Union() {
}

// Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_L2_Ethertype_Union ensures that UnionUint16
// implements the NetworkInstance_PolicyForwarding_Policy_Rule_L2_Ethertype_Union interface.
func (UnionUint16) Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_L2_Ethertype_Union() {
}

// To_NetworkInstance_PolicyForwarding_Policy_Rule_L2_Ethertype_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_PolicyForwarding_Policy_Rule_L2_Ethertype_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_L2) To_NetworkInstance_PolicyForwarding_Policy_Rule_L2_Ethertype_Union(i interface{}) (NetworkInstance_PolicyForwarding_Policy_Rule_L2_Ethertype_Union, error) {
	if v, ok := i.(NetworkInstance_PolicyForwarding_Policy_Rule_L2_Ethertype_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint16:
		return UnionUint16(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_PolicyForwarding_Policy_Rule_L2_Ethertype_Union, unknown union type, got: %T, want any of [E_PacketMatchTypes_ETHERTYPE, uint16]", i, i)
}

// NetworkInstance_PolicyForwarding_Policy_Rule_Transport represents the /openconfig-network-instance/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/transport YANG schema element.
type NetworkInstance_PolicyForwarding_Policy_Rule_Transport struct {
	ΛMetadata                []ygot.Annotation                                                            `path:"@" ygotAnnotation:"true"`
	BuiltinDetail            E_Transport_BuiltinDetail                                                    `path:"config/builtin-detail" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBuiltinDetail           []ygot.Annotation                                                            `path:"config/@builtin-detail" ygotAnnotation:"true"`
	DestinationPort          NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union `path:"config/destination-port" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDestinationPort         []ygot.Annotation                                                            `path:"config/@destination-port" ygotAnnotation:"true"`
	DestinationPortSet       *string                                                                      `path:"config/destination-port-set" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDestinationPortSet      []ygot.Annotation                                                            `path:"config/@destination-port-set" ygotAnnotation:"true"`
	DetailMode               E_Transport_DetailMode                                                       `path:"config/detail-mode" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDetailMode              []ygot.Annotation                                                            `path:"config/@detail-mode" ygotAnnotation:"true"`
	ExplicitDetailMatchMode  E_Transport_ExplicitDetailMatchMode                                          `path:"config/explicit-detail-match-mode" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExplicitDetailMatchMode []ygot.Annotation                                                            `path:"config/@explicit-detail-match-mode" ygotAnnotation:"true"`
	ExplicitTcpFlags         []E_PacketMatchTypes_TCP_FLAGS                                               `path:"config/explicit-tcp-flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExplicitTcpFlags        []ygot.Annotation                                                            `path:"config/@explicit-tcp-flags" ygotAnnotation:"true"`
	SourcePort               NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union      `path:"config/source-port" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSourcePort              []ygot.Annotation                                                            `path:"config/@source-port" ygotAnnotation:"true"`
	SourcePortSet            *string                                                                      `path:"config/source-port-set" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSourcePortSet           []ygot.Annotation                                                            `path:"config/@source-port-set" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_PolicyForwarding_Policy_Rule_Transport implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_Transport) IsYANGGoStruct() {}

// GetBuiltinDetail retrieves the value of the leaf BuiltinDetail from the NetworkInstance_PolicyForwarding_Policy_Rule_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BuiltinDetail is set, it can
// safely use t.GetBuiltinDetail() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BuiltinDetail == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Transport) GetBuiltinDetail() E_Transport_BuiltinDetail {
	if t == nil || t.BuiltinDetail == 0 {
		return 0
	}
	return t.BuiltinDetail
}

// GetDestinationPort retrieves the value of the leaf DestinationPort from the NetworkInstance_PolicyForwarding_Policy_Rule_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationPort is set, it can
// safely use t.GetDestinationPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationPort == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Transport) GetDestinationPort() NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union {
	if t == nil || t.DestinationPort == nil {
		return nil
	}
	return t.DestinationPort
}

// GetDestinationPortSet retrieves the value of the leaf DestinationPortSet from the NetworkInstance_PolicyForwarding_Policy_Rule_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DestinationPortSet is set, it can
// safely use t.GetDestinationPortSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DestinationPortSet == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Transport) GetDestinationPortSet() string {
	if t == nil || t.DestinationPortSet == nil {
		return ""
	}
	return *t.DestinationPortSet
}

// GetDetailMode retrieves the value of the leaf DetailMode from the NetworkInstance_PolicyForwarding_Policy_Rule_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DetailMode is set, it can
// safely use t.GetDetailMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DetailMode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Transport) GetDetailMode() E_Transport_DetailMode {
	if t == nil || t.DetailMode == 0 {
		return 0
	}
	return t.DetailMode
}

// GetExplicitDetailMatchMode retrieves the value of the leaf ExplicitDetailMatchMode from the NetworkInstance_PolicyForwarding_Policy_Rule_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExplicitDetailMatchMode is set, it can
// safely use t.GetExplicitDetailMatchMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExplicitDetailMatchMode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Transport) GetExplicitDetailMatchMode() E_Transport_ExplicitDetailMatchMode {
	if t == nil || t.ExplicitDetailMatchMode == 0 {
		return 0
	}
	return t.ExplicitDetailMatchMode
}

// GetExplicitTcpFlags retrieves the value of the leaf ExplicitTcpFlags from the NetworkInstance_PolicyForwarding_Policy_Rule_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExplicitTcpFlags is set, it can
// safely use t.GetExplicitTcpFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExplicitTcpFlags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Transport) GetExplicitTcpFlags() []E_PacketMatchTypes_TCP_FLAGS {
	if t == nil || t.ExplicitTcpFlags == nil {
		return nil
	}
	return t.ExplicitTcpFlags
}

// GetSourcePort retrieves the value of the leaf SourcePort from the NetworkInstance_PolicyForwarding_Policy_Rule_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourcePort is set, it can
// safely use t.GetSourcePort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourcePort == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Transport) GetSourcePort() NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union {
	if t == nil || t.SourcePort == nil {
		return nil
	}
	return t.SourcePort
}

// GetSourcePortSet retrieves the value of the leaf SourcePortSet from the NetworkInstance_PolicyForwarding_Policy_Rule_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourcePortSet is set, it can
// safely use t.GetSourcePortSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourcePortSet == nil' before retrieving the leaf's value.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Transport) GetSourcePortSet() string {
	if t == nil || t.SourcePortSet == nil {
		return ""
	}
	return *t.SourcePortSet
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_PolicyForwarding_Policy_Rule_Transport
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Transport) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Transport) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_PolicyForwarding_Policy_Rule_Transport"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Transport) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Transport) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_PolicyForwarding_Policy_Rule_Transport.
func (*NetworkInstance_PolicyForwarding_Policy_Rule_Transport) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/transport/config/destination-port within the YANG schema.
// Union type can be one of [E_PacketMatchTypes_PortNumRange_Enum, UnionString, UnionUint16].
type NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union interface {
	// Union type can be one of [E_PacketMatchTypes_PortNumRange_Enum, UnionString, UnionUint16]
	Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union()
}

// Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union ensures that E_PacketMatchTypes_PortNumRange_Enum
// implements the NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union interface.
func (E_PacketMatchTypes_PortNumRange_Enum) Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union() {
}

// Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union ensures that UnionString
// implements the NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union interface.
func (UnionString) Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union() {
}

// Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union ensures that UnionUint16
// implements the NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union interface.
func (UnionUint16) Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union() {
}

// To_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Transport) To_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union(i interface{}) (NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union, error) {
	if v, ok := i.(NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint16:
		return UnionUint16(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_PolicyForwarding_Policy_Rule_Transport_DestinationPort_Union, unknown union type, got: %T, want any of [E_PacketMatchTypes_PortNumRange_Enum, string, uint16]", i, i)
}

// NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/transport/config/source-port within the YANG schema.
// Union type can be one of [E_PacketMatchTypes_PortNumRange_Enum, UnionString, UnionUint16].
type NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union interface {
	// Union type can be one of [E_PacketMatchTypes_PortNumRange_Enum, UnionString, UnionUint16]
	Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union()
}

// Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union ensures that E_PacketMatchTypes_PortNumRange_Enum
// implements the NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union interface.
func (E_PacketMatchTypes_PortNumRange_Enum) Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union() {
}

// Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union ensures that UnionString
// implements the NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union interface.
func (UnionString) Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union() {
}

// Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union ensures that UnionUint16
// implements the NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union interface.
func (UnionUint16) Documentation_for_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union() {
}

// To_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_PolicyForwarding_Policy_Rule_Transport) To_NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union(i interface{}) (NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union, error) {
	if v, ok := i.(NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint16:
		return UnionUint16(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_PolicyForwarding_Policy_Rule_Transport_SourcePort_Union, unknown union type, got: %T, want any of [E_PacketMatchTypes_PortNumRange_Enum, string, uint16]", i, i)
}

// NetworkInstance_Protocol represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol YANG schema element.
type NetworkInstance_Protocol struct {
	ΛMetadata      []ygot.Annotation                              `path:"@" ygotAnnotation:"true"`
	Aggregate      map[string]*NetworkInstance_Protocol_Aggregate `path:"local-aggregates/aggregate" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAggregate     []ygot.Annotation                              `path:"local-aggregates/@aggregate" ygotAnnotation:"true"`
	Bgp            *NetworkInstance_Protocol_Bgp                  `path:"bgp" module:"openconfig-network-instance"`
	ΛBgp           []ygot.Annotation                              `path:"@bgp" ygotAnnotation:"true"`
	DefaultMetric  *uint32                                        `path:"config/default-metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultMetric []ygot.Annotation                              `path:"config/@default-metric" ygotAnnotation:"true"`
	Enabled        *bool                                          `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled       []ygot.Annotation                              `path:"config/@enabled" ygotAnnotation:"true"`
	Identifier     E_PolicyTypes_INSTALL_PROTOCOL_TYPE            `path:"config/identifier|identifier" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIdentifier    []ygot.Annotation                              `path:"config/@identifier|@identifier" ygotAnnotation:"true"`
	Igmp           *NetworkInstance_Protocol_Igmp                 `path:"igmp" module:"openconfig-network-instance"`
	ΛIgmp          []ygot.Annotation                              `path:"@igmp" ygotAnnotation:"true"`
	Isis           *NetworkInstance_Protocol_Isis                 `path:"isis" module:"openconfig-network-instance"`
	ΛIsis          []ygot.Annotation                              `path:"@isis" ygotAnnotation:"true"`
	Name           *string                                        `path:"config/name|name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛName          []ygot.Annotation                              `path:"config/@name|@name" ygotAnnotation:"true"`
	Ospfv2         *NetworkInstance_Protocol_Ospfv2               `path:"ospfv2" module:"openconfig-network-instance"`
	ΛOspfv2        []ygot.Annotation                              `path:"@ospfv2" ygotAnnotation:"true"`
	Pcep           *NetworkInstance_Protocol_Pcep                 `path:"pcep" module:"openconfig-network-instance"`
	ΛPcep          []ygot.Annotation                              `path:"@pcep" ygotAnnotation:"true"`
	Pim            *NetworkInstance_Protocol_Pim                  `path:"pim" module:"openconfig-network-instance"`
	ΛPim           []ygot.Annotation                              `path:"@pim" ygotAnnotation:"true"`
	Static         map[string]*NetworkInstance_Protocol_Static    `path:"static-routes/static" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛStatic        []ygot.Annotation                              `path:"static-routes/@static" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol) IsYANGGoStruct() {}

// NewAggregate creates a new entry in the Aggregate list of the
// NetworkInstance_Protocol struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol) NewAggregate(Prefix string) (*NetworkInstance_Protocol_Aggregate, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Aggregate == nil {
		t.Aggregate = make(map[string]*NetworkInstance_Protocol_Aggregate)
	}

	key := Prefix

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Aggregate[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Aggregate", key)
	}

	t.Aggregate[key] = &NetworkInstance_Protocol_Aggregate{
		Prefix: &Prefix,
	}

	return t.Aggregate[key], nil
}

// RenameAggregate renames an entry in the list Aggregate within
// the NetworkInstance_Protocol struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol) RenameAggregate(oldK, newK string) error {
	if _, ok := t.Aggregate[newK]; ok {
		return fmt.Errorf("key %v already exists in Aggregate", newK)
	}

	e, ok := t.Aggregate[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Aggregate", oldK)
	}
	e.Prefix = &newK

	t.Aggregate[newK] = e
	delete(t.Aggregate, oldK)
	return nil
}

// GetOrCreateAggregateMap returns the list (map) from NetworkInstance_Protocol.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol) GetOrCreateAggregateMap() map[string]*NetworkInstance_Protocol_Aggregate {
	if t.Aggregate == nil {
		t.Aggregate = make(map[string]*NetworkInstance_Protocol_Aggregate)
	}
	return t.Aggregate
}

// GetOrCreateAggregate retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol) GetOrCreateAggregate(Prefix string) *NetworkInstance_Protocol_Aggregate {

	key := Prefix

	if v, ok := t.Aggregate[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAggregate(Prefix)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAggregate got unexpected error: %v", err))
	}
	return v
}

// GetAggregate retrieves the value with the specified key from
// the Aggregate map field of NetworkInstance_Protocol. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol) GetAggregate(Prefix string) *NetworkInstance_Protocol_Aggregate {

	if t == nil {
		return nil
	}

	key := Prefix

	if lm, ok := t.Aggregate[key]; ok {
		return lm
	}
	return nil
}

// AppendAggregate appends the supplied NetworkInstance_Protocol_Aggregate struct to the
// list Aggregate of NetworkInstance_Protocol. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Aggregate already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol) AppendAggregate(v *NetworkInstance_Protocol_Aggregate) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key received for Prefix")
	}

	key := *v.Prefix

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Aggregate == nil {
		t.Aggregate = make(map[string]*NetworkInstance_Protocol_Aggregate)
	}

	if _, ok := t.Aggregate[key]; ok {
		return fmt.Errorf("duplicate key for list Aggregate %v", key)
	}

	t.Aggregate[key] = v
	return nil
}

// NewStatic creates a new entry in the Static list of the
// NetworkInstance_Protocol struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol) NewStatic(Prefix string) (*NetworkInstance_Protocol_Static, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Static == nil {
		t.Static = make(map[string]*NetworkInstance_Protocol_Static)
	}

	key := Prefix

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Static[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Static", key)
	}

	t.Static[key] = &NetworkInstance_Protocol_Static{
		Prefix: &Prefix,
	}

	return t.Static[key], nil
}

// RenameStatic renames an entry in the list Static within
// the NetworkInstance_Protocol struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol) RenameStatic(oldK, newK string) error {
	if _, ok := t.Static[newK]; ok {
		return fmt.Errorf("key %v already exists in Static", newK)
	}

	e, ok := t.Static[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Static", oldK)
	}
	e.Prefix = &newK

	t.Static[newK] = e
	delete(t.Static, oldK)
	return nil
}

// GetOrCreateStaticMap returns the list (map) from NetworkInstance_Protocol.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol) GetOrCreateStaticMap() map[string]*NetworkInstance_Protocol_Static {
	if t.Static == nil {
		t.Static = make(map[string]*NetworkInstance_Protocol_Static)
	}
	return t.Static
}

// GetOrCreateStatic retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol) GetOrCreateStatic(Prefix string) *NetworkInstance_Protocol_Static {

	key := Prefix

	if v, ok := t.Static[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewStatic(Prefix)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateStatic got unexpected error: %v", err))
	}
	return v
}

// GetStatic retrieves the value with the specified key from
// the Static map field of NetworkInstance_Protocol. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol) GetStatic(Prefix string) *NetworkInstance_Protocol_Static {

	if t == nil {
		return nil
	}

	key := Prefix

	if lm, ok := t.Static[key]; ok {
		return lm
	}
	return nil
}

// AppendStatic appends the supplied NetworkInstance_Protocol_Static struct to the
// list Static of NetworkInstance_Protocol. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Static already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol) AppendStatic(v *NetworkInstance_Protocol_Static) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key received for Prefix")
	}

	key := *v.Prefix

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Static == nil {
		t.Static = make(map[string]*NetworkInstance_Protocol_Static)
	}

	if _, ok := t.Static[key]; ok {
		return fmt.Errorf("duplicate key for list Static %v", key)
	}

	t.Static[key] = v
	return nil
}

// GetOrCreateBgp retrieves the value of the Bgp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol) GetOrCreateBgp() *NetworkInstance_Protocol_Bgp {
	if t.Bgp != nil {
		return t.Bgp
	}
	t.Bgp = &NetworkInstance_Protocol_Bgp{}
	return t.Bgp
}

// GetOrCreateIgmp retrieves the value of the Igmp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol) GetOrCreateIgmp() *NetworkInstance_Protocol_Igmp {
	if t.Igmp != nil {
		return t.Igmp
	}
	t.Igmp = &NetworkInstance_Protocol_Igmp{}
	return t.Igmp
}

// GetOrCreateIsis retrieves the value of the Isis field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol) GetOrCreateIsis() *NetworkInstance_Protocol_Isis {
	if t.Isis != nil {
		return t.Isis
	}
	t.Isis = &NetworkInstance_Protocol_Isis{}
	return t.Isis
}

// GetOrCreateOspfv2 retrieves the value of the Ospfv2 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol) GetOrCreateOspfv2() *NetworkInstance_Protocol_Ospfv2 {
	if t.Ospfv2 != nil {
		return t.Ospfv2
	}
	t.Ospfv2 = &NetworkInstance_Protocol_Ospfv2{}
	return t.Ospfv2
}

// GetOrCreatePcep retrieves the value of the Pcep field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol) GetOrCreatePcep() *NetworkInstance_Protocol_Pcep {
	if t.Pcep != nil {
		return t.Pcep
	}
	t.Pcep = &NetworkInstance_Protocol_Pcep{}
	return t.Pcep
}

// GetOrCreatePim retrieves the value of the Pim field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol) GetOrCreatePim() *NetworkInstance_Protocol_Pim {
	if t.Pim != nil {
		return t.Pim
	}
	t.Pim = &NetworkInstance_Protocol_Pim{}
	return t.Pim
}

// GetBgp returns the value of the Bgp struct pointer
// from NetworkInstance_Protocol. If the receiver or the field Bgp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol) GetBgp() *NetworkInstance_Protocol_Bgp {
	if t != nil && t.Bgp != nil {
		return t.Bgp
	}
	return nil
}

// GetIgmp returns the value of the Igmp struct pointer
// from NetworkInstance_Protocol. If the receiver or the field Igmp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol) GetIgmp() *NetworkInstance_Protocol_Igmp {
	if t != nil && t.Igmp != nil {
		return t.Igmp
	}
	return nil
}

// GetIsis returns the value of the Isis struct pointer
// from NetworkInstance_Protocol. If the receiver or the field Isis is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol) GetIsis() *NetworkInstance_Protocol_Isis {
	if t != nil && t.Isis != nil {
		return t.Isis
	}
	return nil
}

// GetOspfv2 returns the value of the Ospfv2 struct pointer
// from NetworkInstance_Protocol. If the receiver or the field Ospfv2 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol) GetOspfv2() *NetworkInstance_Protocol_Ospfv2 {
	if t != nil && t.Ospfv2 != nil {
		return t.Ospfv2
	}
	return nil
}

// GetPcep returns the value of the Pcep struct pointer
// from NetworkInstance_Protocol. If the receiver or the field Pcep is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol) GetPcep() *NetworkInstance_Protocol_Pcep {
	if t != nil && t.Pcep != nil {
		return t.Pcep
	}
	return nil
}

// GetPim returns the value of the Pim struct pointer
// from NetworkInstance_Protocol. If the receiver or the field Pim is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol) GetPim() *NetworkInstance_Protocol_Pim {
	if t != nil && t.Pim != nil {
		return t.Pim
	}
	return nil
}

// GetDefaultMetric retrieves the value of the leaf DefaultMetric from the NetworkInstance_Protocol
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultMetric is set, it can
// safely use t.GetDefaultMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultMetric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol) GetDefaultMetric() uint32 {
	if t == nil || t.DefaultMetric == nil {
		return 0
	}
	return *t.DefaultMetric
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetIdentifier retrieves the value of the leaf Identifier from the NetworkInstance_Protocol
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Identifier is set, it can
// safely use t.GetIdentifier() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Identifier == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol) GetIdentifier() E_PolicyTypes_INSTALL_PROTOCOL_TYPE {
	if t == nil || t.Identifier == 0 {
		return 0
	}
	return t.Identifier
}

// GetName retrieves the value of the leaf Name from the NetworkInstance_Protocol
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol) GetName() string {
	if t == nil || t.Name == nil {
		return "DEFAULT"
	}
	return *t.Name
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Name == nil {
		var v string = "DEFAULT"
		t.Name = &v
	}
	t.Bgp.PopulateDefaults()
	t.Igmp.PopulateDefaults()
	t.Isis.PopulateDefaults()
	t.Ospfv2.PopulateDefaults()
	t.Pcep.PopulateDefaults()
	t.Pim.PopulateDefaults()
	for _, e := range t.Aggregate {
		e.PopulateDefaults()
	}
	for _, e := range t.Static {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol) ΛListKeyMap() (map[string]interface{}, error) {

	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"identifier": t.Identifier,
		"name":       *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol.
func (*NetworkInstance_Protocol) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Aggregate represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/local-aggregates/aggregate YANG schema element.
type NetworkInstance_Protocol_Aggregate struct {
	ΛMetadata    []ygot.Annotation                               `path:"@" ygotAnnotation:"true"`
	Description  *string                                         `path:"config/description" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDescription []ygot.Annotation                               `path:"config/@description" ygotAnnotation:"true"`
	Discard      *bool                                           `path:"config/discard" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDiscard     []ygot.Annotation                               `path:"config/@discard" ygotAnnotation:"true"`
	Metric       *uint32                                         `path:"config/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric      []ygot.Annotation                               `path:"config/@metric" ygotAnnotation:"true"`
	Preference   *uint32                                         `path:"config/preference" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreference  []ygot.Annotation                               `path:"config/@preference" ygotAnnotation:"true"`
	Prefix       *string                                         `path:"config/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix      []ygot.Annotation                               `path:"config/@prefix|@prefix" ygotAnnotation:"true"`
	SetTag       NetworkInstance_Protocol_Aggregate_SetTag_Union `path:"config/set-tag" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSetTag      []ygot.Annotation                               `path:"config/@set-tag" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Aggregate implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Aggregate) IsYANGGoStruct() {}

// GetDescription retrieves the value of the leaf Description from the NetworkInstance_Protocol_Aggregate
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Aggregate) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetDiscard retrieves the value of the leaf Discard from the NetworkInstance_Protocol_Aggregate
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Discard is set, it can
// safely use t.GetDiscard() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Discard == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Aggregate) GetDiscard() bool {
	if t == nil || t.Discard == nil {
		return false
	}
	return *t.Discard
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Aggregate
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Aggregate) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetPreference retrieves the value of the leaf Preference from the NetworkInstance_Protocol_Aggregate
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Preference is set, it can
// safely use t.GetPreference() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Preference == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Aggregate) GetPreference() uint32 {
	if t == nil || t.Preference == nil {
		return 0
	}
	return *t.Preference
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Aggregate
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Aggregate) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetSetTag retrieves the value of the leaf SetTag from the NetworkInstance_Protocol_Aggregate
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SetTag is set, it can
// safely use t.GetSetTag() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SetTag == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Aggregate) GetSetTag() NetworkInstance_Protocol_Aggregate_SetTag_Union {
	if t == nil || t.SetTag == nil {
		return nil
	}
	return t.SetTag
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Aggregate
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Aggregate) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Discard == nil {
		var v bool = false
		t.Discard = &v
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Aggregate struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Aggregate) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"prefix": *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Aggregate) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Aggregate"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Aggregate) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Aggregate) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Aggregate.
func (*NetworkInstance_Protocol_Aggregate) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Aggregate_SetTag_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/local-aggregates/aggregate/config/set-tag within the YANG schema.
// Union type can be one of [UnionString, UnionUint32].
type NetworkInstance_Protocol_Aggregate_SetTag_Union interface {
	// Union type can be one of [UnionString, UnionUint32]
	Documentation_for_NetworkInstance_Protocol_Aggregate_SetTag_Union()
}

// Documentation_for_NetworkInstance_Protocol_Aggregate_SetTag_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Aggregate_SetTag_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Aggregate_SetTag_Union() {}

// Documentation_for_NetworkInstance_Protocol_Aggregate_SetTag_Union ensures that UnionUint32
// implements the NetworkInstance_Protocol_Aggregate_SetTag_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Protocol_Aggregate_SetTag_Union() {}

// To_NetworkInstance_Protocol_Aggregate_SetTag_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Aggregate_SetTag_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Aggregate) To_NetworkInstance_Protocol_Aggregate_SetTag_Union(i interface{}) (NetworkInstance_Protocol_Aggregate_SetTag_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Aggregate_SetTag_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Aggregate_SetTag_Union, unknown union type, got: %T, want any of [string, uint32]", i, i)
}

// NetworkInstance_Protocol_Bgp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp YANG schema element.
type NetworkInstance_Protocol_Bgp struct {
	ΛMetadata  []ygot.Annotation                                  `path:"@" ygotAnnotation:"true"`
	Global     *NetworkInstance_Protocol_Bgp_Global               `path:"global" module:"openconfig-network-instance"`
	ΛGlobal    []ygot.Annotation                                  `path:"@global" ygotAnnotation:"true"`
	Neighbor   map[string]*NetworkInstance_Protocol_Bgp_Neighbor  `path:"neighbors/neighbor" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighbor  []ygot.Annotation                                  `path:"neighbors/@neighbor" ygotAnnotation:"true"`
	PeerGroup  map[string]*NetworkInstance_Protocol_Bgp_PeerGroup `path:"peer-groups/peer-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPeerGroup []ygot.Annotation                                  `path:"peer-groups/@peer-group" ygotAnnotation:"true"`
	Rib        *NetworkInstance_Protocol_Bgp_Rib                  `path:"rib" module:"openconfig-network-instance"`
	ΛRib       []ygot.Annotation                                  `path:"@rib" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp) IsYANGGoStruct() {}

// NewNeighbor creates a new entry in the Neighbor list of the
// NetworkInstance_Protocol_Bgp struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp) NewNeighbor(NeighborAddress string) (*NetworkInstance_Protocol_Bgp_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Neighbor)
	}

	key := NeighborAddress

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &NetworkInstance_Protocol_Bgp_Neighbor{
		NeighborAddress: &NeighborAddress,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the NetworkInstance_Protocol_Bgp struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.NeighborAddress = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from NetworkInstance_Protocol_Bgp.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp) GetOrCreateNeighborMap() map[string]*NetworkInstance_Protocol_Bgp_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp) GetOrCreateNeighbor(NeighborAddress string) *NetworkInstance_Protocol_Bgp_Neighbor {

	key := NeighborAddress

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(NeighborAddress)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of NetworkInstance_Protocol_Bgp. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp) GetNeighbor(NeighborAddress string) *NetworkInstance_Protocol_Bgp_Neighbor {

	if t == nil {
		return nil
	}

	key := NeighborAddress

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied NetworkInstance_Protocol_Bgp_Neighbor struct to the
// list Neighbor of NetworkInstance_Protocol_Bgp. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Neighbor already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp) AppendNeighbor(v *NetworkInstance_Protocol_Bgp_Neighbor) error {
	if v.NeighborAddress == nil {
		return fmt.Errorf("invalid nil key received for NeighborAddress")
	}

	key := *v.NeighborAddress

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// NewPeerGroup creates a new entry in the PeerGroup list of the
// NetworkInstance_Protocol_Bgp struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp) NewPeerGroup(PeerGroupName string) (*NetworkInstance_Protocol_Bgp_PeerGroup, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PeerGroup == nil {
		t.PeerGroup = make(map[string]*NetworkInstance_Protocol_Bgp_PeerGroup)
	}

	key := PeerGroupName

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.PeerGroup[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list PeerGroup", key)
	}

	t.PeerGroup[key] = &NetworkInstance_Protocol_Bgp_PeerGroup{
		PeerGroupName: &PeerGroupName,
	}

	return t.PeerGroup[key], nil
}

// RenamePeerGroup renames an entry in the list PeerGroup within
// the NetworkInstance_Protocol_Bgp struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp) RenamePeerGroup(oldK, newK string) error {
	if _, ok := t.PeerGroup[newK]; ok {
		return fmt.Errorf("key %v already exists in PeerGroup", newK)
	}

	e, ok := t.PeerGroup[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in PeerGroup", oldK)
	}
	e.PeerGroupName = &newK

	t.PeerGroup[newK] = e
	delete(t.PeerGroup, oldK)
	return nil
}

// GetOrCreatePeerGroupMap returns the list (map) from NetworkInstance_Protocol_Bgp.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp) GetOrCreatePeerGroupMap() map[string]*NetworkInstance_Protocol_Bgp_PeerGroup {
	if t.PeerGroup == nil {
		t.PeerGroup = make(map[string]*NetworkInstance_Protocol_Bgp_PeerGroup)
	}
	return t.PeerGroup
}

// GetOrCreatePeerGroup retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp) GetOrCreatePeerGroup(PeerGroupName string) *NetworkInstance_Protocol_Bgp_PeerGroup {

	key := PeerGroupName

	if v, ok := t.PeerGroup[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPeerGroup(PeerGroupName)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePeerGroup got unexpected error: %v", err))
	}
	return v
}

// GetPeerGroup retrieves the value with the specified key from
// the PeerGroup map field of NetworkInstance_Protocol_Bgp. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp) GetPeerGroup(PeerGroupName string) *NetworkInstance_Protocol_Bgp_PeerGroup {

	if t == nil {
		return nil
	}

	key := PeerGroupName

	if lm, ok := t.PeerGroup[key]; ok {
		return lm
	}
	return nil
}

// AppendPeerGroup appends the supplied NetworkInstance_Protocol_Bgp_PeerGroup struct to the
// list PeerGroup of NetworkInstance_Protocol_Bgp. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_PeerGroup already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp) AppendPeerGroup(v *NetworkInstance_Protocol_Bgp_PeerGroup) error {
	if v.PeerGroupName == nil {
		return fmt.Errorf("invalid nil key received for PeerGroupName")
	}

	key := *v.PeerGroupName

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PeerGroup == nil {
		t.PeerGroup = make(map[string]*NetworkInstance_Protocol_Bgp_PeerGroup)
	}

	if _, ok := t.PeerGroup[key]; ok {
		return fmt.Errorf("duplicate key for list PeerGroup %v", key)
	}

	t.PeerGroup[key] = v
	return nil
}

// GetOrCreateGlobal retrieves the value of the Global field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp) GetOrCreateGlobal() *NetworkInstance_Protocol_Bgp_Global {
	if t.Global != nil {
		return t.Global
	}
	t.Global = &NetworkInstance_Protocol_Bgp_Global{}
	return t.Global
}

// GetOrCreateRib retrieves the value of the Rib field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp) GetOrCreateRib() *NetworkInstance_Protocol_Bgp_Rib {
	if t.Rib != nil {
		return t.Rib
	}
	t.Rib = &NetworkInstance_Protocol_Bgp_Rib{}
	return t.Rib
}

// GetGlobal returns the value of the Global struct pointer
// from NetworkInstance_Protocol_Bgp. If the receiver or the field Global is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp) GetGlobal() *NetworkInstance_Protocol_Bgp_Global {
	if t != nil && t.Global != nil {
		return t.Global
	}
	return nil
}

// GetRib returns the value of the Rib struct pointer
// from NetworkInstance_Protocol_Bgp. If the receiver or the field Rib is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp) GetRib() *NetworkInstance_Protocol_Bgp_Rib {
	if t != nil && t.Rib != nil {
		return t.Rib
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Global.PopulateDefaults()
	t.Rib.PopulateDefaults()
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
	for _, e := range t.PeerGroup {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp.
func (*NetworkInstance_Protocol_Bgp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global YANG schema element.
type NetworkInstance_Protocol_Bgp_Global struct {
	ΛMetadata              []ygot.Annotation                                                         `path:"@" ygotAnnotation:"true"`
	AfiSafi                map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_Global_AfiSafi `path:"afi-safis/afi-safi" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAfiSafi               []ygot.Annotation                                                         `path:"afi-safis/@afi-safi" ygotAnnotation:"true"`
	ApplyPolicy            *NetworkInstance_Protocol_Bgp_Global_ApplyPolicy                          `path:"apply-policy" module:"openconfig-network-instance"`
	ΛApplyPolicy           []ygot.Annotation                                                         `path:"@apply-policy" ygotAnnotation:"true"`
	As                     *uint32                                                                   `path:"config/as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAs                    []ygot.Annotation                                                         `path:"config/@as" ygotAnnotation:"true"`
	Confederation          *NetworkInstance_Protocol_Bgp_Global_Confederation                        `path:"confederation" module:"openconfig-network-instance"`
	ΛConfederation         []ygot.Annotation                                                         `path:"@confederation" ygotAnnotation:"true"`
	DefaultRouteDistance   *NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance                 `path:"default-route-distance" module:"openconfig-network-instance"`
	ΛDefaultRouteDistance  []ygot.Annotation                                                         `path:"@default-route-distance" ygotAnnotation:"true"`
	DynamicNeighborPrefix  map[string]*NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix     `path:"dynamic-neighbor-prefixes/dynamic-neighbor-prefix" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDynamicNeighborPrefix []ygot.Annotation                                                         `path:"dynamic-neighbor-prefixes/@dynamic-neighbor-prefix" ygotAnnotation:"true"`
	GracefulRestart        *NetworkInstance_Protocol_Bgp_Global_GracefulRestart                      `path:"graceful-restart" module:"openconfig-network-instance"`
	ΛGracefulRestart       []ygot.Annotation                                                         `path:"@graceful-restart" ygotAnnotation:"true"`
	RouteSelectionOptions  *NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions                `path:"route-selection-options" module:"openconfig-network-instance"`
	ΛRouteSelectionOptions []ygot.Annotation                                                         `path:"@route-selection-options" ygotAnnotation:"true"`
	RouterId               *string                                                                   `path:"config/router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouterId              []ygot.Annotation                                                         `path:"config/@router-id" ygotAnnotation:"true"`
	TotalPaths             *uint32                                                                   `path:"state/total-paths" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTotalPaths            []ygot.Annotation                                                         `path:"state/@total-paths" ygotAnnotation:"true"`
	TotalPrefixes          *uint32                                                                   `path:"state/total-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTotalPrefixes         []ygot.Annotation                                                         `path:"state/@total-prefixes" ygotAnnotation:"true"`
	UseMultiplePaths       *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths                     `path:"use-multiple-paths" module:"openconfig-network-instance"`
	ΛUseMultiplePaths      []ygot.Annotation                                                         `path:"@use-multiple-paths" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global) IsYANGGoStruct() {}

// NewAfiSafi creates a new entry in the AfiSafi list of the
// NetworkInstance_Protocol_Bgp_Global struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Global) NewAfiSafi(AfiSafiName E_BgpTypes_AFI_SAFI_TYPE) (*NetworkInstance_Protocol_Bgp_Global_AfiSafi, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AfiSafi == nil {
		t.AfiSafi = make(map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_Global_AfiSafi)
	}

	key := AfiSafiName

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AfiSafi[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AfiSafi", key)
	}

	t.AfiSafi[key] = &NetworkInstance_Protocol_Bgp_Global_AfiSafi{
		AfiSafiName: AfiSafiName,
	}

	return t.AfiSafi[key], nil
}

// RenameAfiSafi renames an entry in the list AfiSafi within
// the NetworkInstance_Protocol_Bgp_Global struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Global) RenameAfiSafi(oldK, newK E_BgpTypes_AFI_SAFI_TYPE) error {
	if _, ok := t.AfiSafi[newK]; ok {
		return fmt.Errorf("key %v already exists in AfiSafi", newK)
	}

	e, ok := t.AfiSafi[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AfiSafi", oldK)
	}
	e.AfiSafiName = newK

	t.AfiSafi[newK] = e
	delete(t.AfiSafi, oldK)
	return nil
}

// GetOrCreateAfiSafiMap returns the list (map) from NetworkInstance_Protocol_Bgp_Global.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Global) GetOrCreateAfiSafiMap() map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_Global_AfiSafi {
	if t.AfiSafi == nil {
		t.AfiSafi = make(map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_Global_AfiSafi)
	}
	return t.AfiSafi
}

// GetOrCreateAfiSafi retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Global. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Global) GetOrCreateAfiSafi(AfiSafiName E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_Global_AfiSafi {

	key := AfiSafiName

	if v, ok := t.AfiSafi[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAfiSafi(AfiSafiName)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAfiSafi got unexpected error: %v", err))
	}
	return v
}

// GetAfiSafi retrieves the value with the specified key from
// the AfiSafi map field of NetworkInstance_Protocol_Bgp_Global. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global) GetAfiSafi(AfiSafiName E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_Global_AfiSafi {

	if t == nil {
		return nil
	}

	key := AfiSafiName

	if lm, ok := t.AfiSafi[key]; ok {
		return lm
	}
	return nil
}

// AppendAfiSafi appends the supplied NetworkInstance_Protocol_Bgp_Global_AfiSafi struct to the
// list AfiSafi of NetworkInstance_Protocol_Bgp_Global. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Global_AfiSafi already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Global) AppendAfiSafi(v *NetworkInstance_Protocol_Bgp_Global_AfiSafi) error {
	key := v.AfiSafiName

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AfiSafi == nil {
		t.AfiSafi = make(map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_Global_AfiSafi)
	}

	if _, ok := t.AfiSafi[key]; ok {
		return fmt.Errorf("duplicate key for list AfiSafi %v", key)
	}

	t.AfiSafi[key] = v
	return nil
}

// NewDynamicNeighborPrefix creates a new entry in the DynamicNeighborPrefix list of the
// NetworkInstance_Protocol_Bgp_Global struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Global) NewDynamicNeighborPrefix(Prefix string) (*NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.DynamicNeighborPrefix == nil {
		t.DynamicNeighborPrefix = make(map[string]*NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix)
	}

	key := Prefix

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.DynamicNeighborPrefix[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list DynamicNeighborPrefix", key)
	}

	t.DynamicNeighborPrefix[key] = &NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix{
		Prefix: &Prefix,
	}

	return t.DynamicNeighborPrefix[key], nil
}

// RenameDynamicNeighborPrefix renames an entry in the list DynamicNeighborPrefix within
// the NetworkInstance_Protocol_Bgp_Global struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Global) RenameDynamicNeighborPrefix(oldK, newK string) error {
	if _, ok := t.DynamicNeighborPrefix[newK]; ok {
		return fmt.Errorf("key %v already exists in DynamicNeighborPrefix", newK)
	}

	e, ok := t.DynamicNeighborPrefix[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in DynamicNeighborPrefix", oldK)
	}
	e.Prefix = &newK

	t.DynamicNeighborPrefix[newK] = e
	delete(t.DynamicNeighborPrefix, oldK)
	return nil
}

// GetOrCreateDynamicNeighborPrefixMap returns the list (map) from NetworkInstance_Protocol_Bgp_Global.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Global) GetOrCreateDynamicNeighborPrefixMap() map[string]*NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix {
	if t.DynamicNeighborPrefix == nil {
		t.DynamicNeighborPrefix = make(map[string]*NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix)
	}
	return t.DynamicNeighborPrefix
}

// GetOrCreateDynamicNeighborPrefix retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Global. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Global) GetOrCreateDynamicNeighborPrefix(Prefix string) *NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix {

	key := Prefix

	if v, ok := t.DynamicNeighborPrefix[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewDynamicNeighborPrefix(Prefix)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateDynamicNeighborPrefix got unexpected error: %v", err))
	}
	return v
}

// GetDynamicNeighborPrefix retrieves the value with the specified key from
// the DynamicNeighborPrefix map field of NetworkInstance_Protocol_Bgp_Global. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global) GetDynamicNeighborPrefix(Prefix string) *NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix {

	if t == nil {
		return nil
	}

	key := Prefix

	if lm, ok := t.DynamicNeighborPrefix[key]; ok {
		return lm
	}
	return nil
}

// AppendDynamicNeighborPrefix appends the supplied NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix struct to the
// list DynamicNeighborPrefix of NetworkInstance_Protocol_Bgp_Global. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Global) AppendDynamicNeighborPrefix(v *NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key received for Prefix")
	}

	key := *v.Prefix

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.DynamicNeighborPrefix == nil {
		t.DynamicNeighborPrefix = make(map[string]*NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix)
	}

	if _, ok := t.DynamicNeighborPrefix[key]; ok {
		return fmt.Errorf("duplicate key for list DynamicNeighborPrefix %v", key)
	}

	t.DynamicNeighborPrefix[key] = v
	return nil
}

// GetOrCreateApplyPolicy retrieves the value of the ApplyPolicy field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global) GetOrCreateApplyPolicy() *NetworkInstance_Protocol_Bgp_Global_ApplyPolicy {
	if t.ApplyPolicy != nil {
		return t.ApplyPolicy
	}
	t.ApplyPolicy = &NetworkInstance_Protocol_Bgp_Global_ApplyPolicy{}
	return t.ApplyPolicy
}

// GetOrCreateConfederation retrieves the value of the Confederation field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global) GetOrCreateConfederation() *NetworkInstance_Protocol_Bgp_Global_Confederation {
	if t.Confederation != nil {
		return t.Confederation
	}
	t.Confederation = &NetworkInstance_Protocol_Bgp_Global_Confederation{}
	return t.Confederation
}

// GetOrCreateDefaultRouteDistance retrieves the value of the DefaultRouteDistance field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global) GetOrCreateDefaultRouteDistance() *NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance {
	if t.DefaultRouteDistance != nil {
		return t.DefaultRouteDistance
	}
	t.DefaultRouteDistance = &NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance{}
	return t.DefaultRouteDistance
}

// GetOrCreateGracefulRestart retrieves the value of the GracefulRestart field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global) GetOrCreateGracefulRestart() *NetworkInstance_Protocol_Bgp_Global_GracefulRestart {
	if t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	t.GracefulRestart = &NetworkInstance_Protocol_Bgp_Global_GracefulRestart{}
	return t.GracefulRestart
}

// GetOrCreateRouteSelectionOptions retrieves the value of the RouteSelectionOptions field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global) GetOrCreateRouteSelectionOptions() *NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions {
	if t.RouteSelectionOptions != nil {
		return t.RouteSelectionOptions
	}
	t.RouteSelectionOptions = &NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions{}
	return t.RouteSelectionOptions
}

// GetOrCreateUseMultiplePaths retrieves the value of the UseMultiplePaths field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global) GetOrCreateUseMultiplePaths() *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths {
	if t.UseMultiplePaths != nil {
		return t.UseMultiplePaths
	}
	t.UseMultiplePaths = &NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths{}
	return t.UseMultiplePaths
}

// GetApplyPolicy returns the value of the ApplyPolicy struct pointer
// from NetworkInstance_Protocol_Bgp_Global. If the receiver or the field ApplyPolicy is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global) GetApplyPolicy() *NetworkInstance_Protocol_Bgp_Global_ApplyPolicy {
	if t != nil && t.ApplyPolicy != nil {
		return t.ApplyPolicy
	}
	return nil
}

// GetConfederation returns the value of the Confederation struct pointer
// from NetworkInstance_Protocol_Bgp_Global. If the receiver or the field Confederation is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global) GetConfederation() *NetworkInstance_Protocol_Bgp_Global_Confederation {
	if t != nil && t.Confederation != nil {
		return t.Confederation
	}
	return nil
}

// GetDefaultRouteDistance returns the value of the DefaultRouteDistance struct pointer
// from NetworkInstance_Protocol_Bgp_Global. If the receiver or the field DefaultRouteDistance is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global) GetDefaultRouteDistance() *NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance {
	if t != nil && t.DefaultRouteDistance != nil {
		return t.DefaultRouteDistance
	}
	return nil
}

// GetGracefulRestart returns the value of the GracefulRestart struct pointer
// from NetworkInstance_Protocol_Bgp_Global. If the receiver or the field GracefulRestart is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global) GetGracefulRestart() *NetworkInstance_Protocol_Bgp_Global_GracefulRestart {
	if t != nil && t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	return nil
}

// GetRouteSelectionOptions returns the value of the RouteSelectionOptions struct pointer
// from NetworkInstance_Protocol_Bgp_Global. If the receiver or the field RouteSelectionOptions is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global) GetRouteSelectionOptions() *NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions {
	if t != nil && t.RouteSelectionOptions != nil {
		return t.RouteSelectionOptions
	}
	return nil
}

// GetUseMultiplePaths returns the value of the UseMultiplePaths struct pointer
// from NetworkInstance_Protocol_Bgp_Global. If the receiver or the field UseMultiplePaths is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global) GetUseMultiplePaths() *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths {
	if t != nil && t.UseMultiplePaths != nil {
		return t.UseMultiplePaths
	}
	return nil
}

// GetAs retrieves the value of the leaf As from the NetworkInstance_Protocol_Bgp_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if As is set, it can
// safely use t.GetAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.As == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global) GetAs() uint32 {
	if t == nil || t.As == nil {
		return 0
	}
	return *t.As
}

// GetRouterId retrieves the value of the leaf RouterId from the NetworkInstance_Protocol_Bgp_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterId is set, it can
// safely use t.GetRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global) GetRouterId() string {
	if t == nil || t.RouterId == nil {
		return ""
	}
	return *t.RouterId
}

// GetTotalPaths retrieves the value of the leaf TotalPaths from the NetworkInstance_Protocol_Bgp_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalPaths is set, it can
// safely use t.GetTotalPaths() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalPaths == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global) GetTotalPaths() uint32 {
	if t == nil || t.TotalPaths == nil {
		return 0
	}
	return *t.TotalPaths
}

// GetTotalPrefixes retrieves the value of the leaf TotalPrefixes from the NetworkInstance_Protocol_Bgp_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalPrefixes is set, it can
// safely use t.GetTotalPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global) GetTotalPrefixes() uint32 {
	if t == nil || t.TotalPrefixes == nil {
		return 0
	}
	return *t.TotalPrefixes
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.ApplyPolicy.PopulateDefaults()
	t.Confederation.PopulateDefaults()
	t.DefaultRouteDistance.PopulateDefaults()
	t.GracefulRestart.PopulateDefaults()
	t.RouteSelectionOptions.PopulateDefaults()
	t.UseMultiplePaths.PopulateDefaults()
	for _, e := range t.AfiSafi {
		e.PopulateDefaults()
	}
	for _, e := range t.DynamicNeighborPrefix {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global.
func (*NetworkInstance_Protocol_Bgp_Global) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi struct {
	ΛMetadata              []ygot.Annotation                                                  `path:"@" ygotAnnotation:"true"`
	AddPaths               *NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths              `path:"add-paths" module:"openconfig-network-instance"`
	ΛAddPaths              []ygot.Annotation                                                  `path:"@add-paths" ygotAnnotation:"true"`
	AfiSafiName            E_BgpTypes_AFI_SAFI_TYPE                                           `path:"config/afi-safi-name|afi-safi-name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAfiSafiName           []ygot.Annotation                                                  `path:"config/@afi-safi-name|@afi-safi-name" ygotAnnotation:"true"`
	ApplyPolicy            *NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy           `path:"apply-policy" module:"openconfig-network-instance"`
	ΛApplyPolicy           []ygot.Annotation                                                  `path:"@apply-policy" ygotAnnotation:"true"`
	Enabled                *bool                                                              `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled               []ygot.Annotation                                                  `path:"config/@enabled" ygotAnnotation:"true"`
	GracefulRestart        *NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart       `path:"graceful-restart" module:"openconfig-network-instance"`
	ΛGracefulRestart       []ygot.Annotation                                                  `path:"@graceful-restart" ygotAnnotation:"true"`
	Ipv4LabeledUnicast     *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast    `path:"ipv4-labeled-unicast" module:"openconfig-network-instance"`
	ΛIpv4LabeledUnicast    []ygot.Annotation                                                  `path:"@ipv4-labeled-unicast" ygotAnnotation:"true"`
	Ipv4Unicast            *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast           `path:"ipv4-unicast" module:"openconfig-network-instance"`
	ΛIpv4Unicast           []ygot.Annotation                                                  `path:"@ipv4-unicast" ygotAnnotation:"true"`
	Ipv6LabeledUnicast     *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast    `path:"ipv6-labeled-unicast" module:"openconfig-network-instance"`
	ΛIpv6LabeledUnicast    []ygot.Annotation                                                  `path:"@ipv6-labeled-unicast" ygotAnnotation:"true"`
	Ipv6Unicast            *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast           `path:"ipv6-unicast" module:"openconfig-network-instance"`
	ΛIpv6Unicast           []ygot.Annotation                                                  `path:"@ipv6-unicast" ygotAnnotation:"true"`
	L2VpnEvpn              *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn             `path:"l2vpn-evpn" module:"openconfig-network-instance"`
	ΛL2VpnEvpn             []ygot.Annotation                                                  `path:"@l2vpn-evpn" ygotAnnotation:"true"`
	L2VpnVpls              *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls             `path:"l2vpn-vpls" module:"openconfig-network-instance"`
	ΛL2VpnVpls             []ygot.Annotation                                                  `path:"@l2vpn-vpls" ygotAnnotation:"true"`
	L3VpnIpv4Multicast     *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast    `path:"l3vpn-ipv4-multicast" module:"openconfig-network-instance"`
	ΛL3VpnIpv4Multicast    []ygot.Annotation                                                  `path:"@l3vpn-ipv4-multicast" ygotAnnotation:"true"`
	L3VpnIpv4Unicast       *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast      `path:"l3vpn-ipv4-unicast" module:"openconfig-network-instance"`
	ΛL3VpnIpv4Unicast      []ygot.Annotation                                                  `path:"@l3vpn-ipv4-unicast" ygotAnnotation:"true"`
	L3VpnIpv6Multicast     *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast    `path:"l3vpn-ipv6-multicast" module:"openconfig-network-instance"`
	ΛL3VpnIpv6Multicast    []ygot.Annotation                                                  `path:"@l3vpn-ipv6-multicast" ygotAnnotation:"true"`
	L3VpnIpv6Unicast       *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast      `path:"l3vpn-ipv6-unicast" module:"openconfig-network-instance"`
	ΛL3VpnIpv6Unicast      []ygot.Annotation                                                  `path:"@l3vpn-ipv6-unicast" ygotAnnotation:"true"`
	RouteSelectionOptions  *NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions `path:"route-selection-options" module:"openconfig-network-instance"`
	ΛRouteSelectionOptions []ygot.Annotation                                                  `path:"@route-selection-options" ygotAnnotation:"true"`
	SendCommunityType      []E_BgpTypes_CommunityType                                         `path:"config/send-community-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSendCommunityType     []ygot.Annotation                                                  `path:"config/@send-community-type" ygotAnnotation:"true"`
	SrtePolicyIpv4         *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4        `path:"srte-policy-ipv4" module:"openconfig-network-instance"`
	ΛSrtePolicyIpv4        []ygot.Annotation                                                  `path:"@srte-policy-ipv4" ygotAnnotation:"true"`
	SrtePolicyIpv6         *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6        `path:"srte-policy-ipv6" module:"openconfig-network-instance"`
	ΛSrtePolicyIpv6        []ygot.Annotation                                                  `path:"@srte-policy-ipv6" ygotAnnotation:"true"`
	TotalPaths             *uint32                                                            `path:"state/total-paths" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTotalPaths            []ygot.Annotation                                                  `path:"state/@total-paths" ygotAnnotation:"true"`
	TotalPrefixes          *uint32                                                            `path:"state/total-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTotalPrefixes         []ygot.Annotation                                                  `path:"state/@total-prefixes" ygotAnnotation:"true"`
	UseMultiplePaths       *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths      `path:"use-multiple-paths" module:"openconfig-network-instance"`
	ΛUseMultiplePaths      []ygot.Annotation                                                  `path:"@use-multiple-paths" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi) IsYANGGoStruct() {}

// GetOrCreateAddPaths retrieves the value of the AddPaths field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetOrCreateAddPaths() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths {
	if t.AddPaths != nil {
		return t.AddPaths
	}
	t.AddPaths = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths{}
	return t.AddPaths
}

// GetOrCreateApplyPolicy retrieves the value of the ApplyPolicy field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetOrCreateApplyPolicy() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy {
	if t.ApplyPolicy != nil {
		return t.ApplyPolicy
	}
	t.ApplyPolicy = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy{}
	return t.ApplyPolicy
}

// GetOrCreateGracefulRestart retrieves the value of the GracefulRestart field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetOrCreateGracefulRestart() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart {
	if t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	t.GracefulRestart = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart{}
	return t.GracefulRestart
}

// GetOrCreateIpv4LabeledUnicast retrieves the value of the Ipv4LabeledUnicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetOrCreateIpv4LabeledUnicast() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast {
	if t.Ipv4LabeledUnicast != nil {
		return t.Ipv4LabeledUnicast
	}
	t.Ipv4LabeledUnicast = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast{}
	return t.Ipv4LabeledUnicast
}

// GetOrCreateIpv4Unicast retrieves the value of the Ipv4Unicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetOrCreateIpv4Unicast() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast {
	if t.Ipv4Unicast != nil {
		return t.Ipv4Unicast
	}
	t.Ipv4Unicast = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast{}
	return t.Ipv4Unicast
}

// GetOrCreateIpv6LabeledUnicast retrieves the value of the Ipv6LabeledUnicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetOrCreateIpv6LabeledUnicast() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast {
	if t.Ipv6LabeledUnicast != nil {
		return t.Ipv6LabeledUnicast
	}
	t.Ipv6LabeledUnicast = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast{}
	return t.Ipv6LabeledUnicast
}

// GetOrCreateIpv6Unicast retrieves the value of the Ipv6Unicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetOrCreateIpv6Unicast() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast {
	if t.Ipv6Unicast != nil {
		return t.Ipv6Unicast
	}
	t.Ipv6Unicast = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast{}
	return t.Ipv6Unicast
}

// GetOrCreateL2VpnEvpn retrieves the value of the L2VpnEvpn field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetOrCreateL2VpnEvpn() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn {
	if t.L2VpnEvpn != nil {
		return t.L2VpnEvpn
	}
	t.L2VpnEvpn = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn{}
	return t.L2VpnEvpn
}

// GetOrCreateL2VpnVpls retrieves the value of the L2VpnVpls field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetOrCreateL2VpnVpls() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls {
	if t.L2VpnVpls != nil {
		return t.L2VpnVpls
	}
	t.L2VpnVpls = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls{}
	return t.L2VpnVpls
}

// GetOrCreateL3VpnIpv4Multicast retrieves the value of the L3VpnIpv4Multicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetOrCreateL3VpnIpv4Multicast() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast {
	if t.L3VpnIpv4Multicast != nil {
		return t.L3VpnIpv4Multicast
	}
	t.L3VpnIpv4Multicast = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast{}
	return t.L3VpnIpv4Multicast
}

// GetOrCreateL3VpnIpv4Unicast retrieves the value of the L3VpnIpv4Unicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetOrCreateL3VpnIpv4Unicast() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast {
	if t.L3VpnIpv4Unicast != nil {
		return t.L3VpnIpv4Unicast
	}
	t.L3VpnIpv4Unicast = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast{}
	return t.L3VpnIpv4Unicast
}

// GetOrCreateL3VpnIpv6Multicast retrieves the value of the L3VpnIpv6Multicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetOrCreateL3VpnIpv6Multicast() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast {
	if t.L3VpnIpv6Multicast != nil {
		return t.L3VpnIpv6Multicast
	}
	t.L3VpnIpv6Multicast = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast{}
	return t.L3VpnIpv6Multicast
}

// GetOrCreateL3VpnIpv6Unicast retrieves the value of the L3VpnIpv6Unicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetOrCreateL3VpnIpv6Unicast() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast {
	if t.L3VpnIpv6Unicast != nil {
		return t.L3VpnIpv6Unicast
	}
	t.L3VpnIpv6Unicast = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast{}
	return t.L3VpnIpv6Unicast
}

// GetOrCreateRouteSelectionOptions retrieves the value of the RouteSelectionOptions field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetOrCreateRouteSelectionOptions() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions {
	if t.RouteSelectionOptions != nil {
		return t.RouteSelectionOptions
	}
	t.RouteSelectionOptions = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions{}
	return t.RouteSelectionOptions
}

// GetOrCreateSrtePolicyIpv4 retrieves the value of the SrtePolicyIpv4 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetOrCreateSrtePolicyIpv4() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4 {
	if t.SrtePolicyIpv4 != nil {
		return t.SrtePolicyIpv4
	}
	t.SrtePolicyIpv4 = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4{}
	return t.SrtePolicyIpv4
}

// GetOrCreateSrtePolicyIpv6 retrieves the value of the SrtePolicyIpv6 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetOrCreateSrtePolicyIpv6() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6 {
	if t.SrtePolicyIpv6 != nil {
		return t.SrtePolicyIpv6
	}
	t.SrtePolicyIpv6 = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6{}
	return t.SrtePolicyIpv6
}

// GetOrCreateUseMultiplePaths retrieves the value of the UseMultiplePaths field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetOrCreateUseMultiplePaths() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths {
	if t.UseMultiplePaths != nil {
		return t.UseMultiplePaths
	}
	t.UseMultiplePaths = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths{}
	return t.UseMultiplePaths
}

// GetAddPaths returns the value of the AddPaths struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi. If the receiver or the field AddPaths is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetAddPaths() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths {
	if t != nil && t.AddPaths != nil {
		return t.AddPaths
	}
	return nil
}

// GetApplyPolicy returns the value of the ApplyPolicy struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi. If the receiver or the field ApplyPolicy is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetApplyPolicy() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy {
	if t != nil && t.ApplyPolicy != nil {
		return t.ApplyPolicy
	}
	return nil
}

// GetGracefulRestart returns the value of the GracefulRestart struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi. If the receiver or the field GracefulRestart is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetGracefulRestart() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart {
	if t != nil && t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	return nil
}

// GetIpv4LabeledUnicast returns the value of the Ipv4LabeledUnicast struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi. If the receiver or the field Ipv4LabeledUnicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetIpv4LabeledUnicast() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast {
	if t != nil && t.Ipv4LabeledUnicast != nil {
		return t.Ipv4LabeledUnicast
	}
	return nil
}

// GetIpv4Unicast returns the value of the Ipv4Unicast struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi. If the receiver or the field Ipv4Unicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetIpv4Unicast() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast {
	if t != nil && t.Ipv4Unicast != nil {
		return t.Ipv4Unicast
	}
	return nil
}

// GetIpv6LabeledUnicast returns the value of the Ipv6LabeledUnicast struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi. If the receiver or the field Ipv6LabeledUnicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetIpv6LabeledUnicast() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast {
	if t != nil && t.Ipv6LabeledUnicast != nil {
		return t.Ipv6LabeledUnicast
	}
	return nil
}

// GetIpv6Unicast returns the value of the Ipv6Unicast struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi. If the receiver or the field Ipv6Unicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetIpv6Unicast() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast {
	if t != nil && t.Ipv6Unicast != nil {
		return t.Ipv6Unicast
	}
	return nil
}

// GetL2VpnEvpn returns the value of the L2VpnEvpn struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi. If the receiver or the field L2VpnEvpn is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetL2VpnEvpn() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn {
	if t != nil && t.L2VpnEvpn != nil {
		return t.L2VpnEvpn
	}
	return nil
}

// GetL2VpnVpls returns the value of the L2VpnVpls struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi. If the receiver or the field L2VpnVpls is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetL2VpnVpls() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls {
	if t != nil && t.L2VpnVpls != nil {
		return t.L2VpnVpls
	}
	return nil
}

// GetL3VpnIpv4Multicast returns the value of the L3VpnIpv4Multicast struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi. If the receiver or the field L3VpnIpv4Multicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetL3VpnIpv4Multicast() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast {
	if t != nil && t.L3VpnIpv4Multicast != nil {
		return t.L3VpnIpv4Multicast
	}
	return nil
}

// GetL3VpnIpv4Unicast returns the value of the L3VpnIpv4Unicast struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi. If the receiver or the field L3VpnIpv4Unicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetL3VpnIpv4Unicast() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast {
	if t != nil && t.L3VpnIpv4Unicast != nil {
		return t.L3VpnIpv4Unicast
	}
	return nil
}

// GetL3VpnIpv6Multicast returns the value of the L3VpnIpv6Multicast struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi. If the receiver or the field L3VpnIpv6Multicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetL3VpnIpv6Multicast() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast {
	if t != nil && t.L3VpnIpv6Multicast != nil {
		return t.L3VpnIpv6Multicast
	}
	return nil
}

// GetL3VpnIpv6Unicast returns the value of the L3VpnIpv6Unicast struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi. If the receiver or the field L3VpnIpv6Unicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetL3VpnIpv6Unicast() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast {
	if t != nil && t.L3VpnIpv6Unicast != nil {
		return t.L3VpnIpv6Unicast
	}
	return nil
}

// GetRouteSelectionOptions returns the value of the RouteSelectionOptions struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi. If the receiver or the field RouteSelectionOptions is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetRouteSelectionOptions() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions {
	if t != nil && t.RouteSelectionOptions != nil {
		return t.RouteSelectionOptions
	}
	return nil
}

// GetSrtePolicyIpv4 returns the value of the SrtePolicyIpv4 struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi. If the receiver or the field SrtePolicyIpv4 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetSrtePolicyIpv4() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4 {
	if t != nil && t.SrtePolicyIpv4 != nil {
		return t.SrtePolicyIpv4
	}
	return nil
}

// GetSrtePolicyIpv6 returns the value of the SrtePolicyIpv6 struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi. If the receiver or the field SrtePolicyIpv6 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetSrtePolicyIpv6() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6 {
	if t != nil && t.SrtePolicyIpv6 != nil {
		return t.SrtePolicyIpv6
	}
	return nil
}

// GetUseMultiplePaths returns the value of the UseMultiplePaths struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi. If the receiver or the field UseMultiplePaths is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetUseMultiplePaths() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths {
	if t != nil && t.UseMultiplePaths != nil {
		return t.UseMultiplePaths
	}
	return nil
}

// GetAfiSafiName retrieves the value of the leaf AfiSafiName from the NetworkInstance_Protocol_Bgp_Global_AfiSafi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AfiSafiName is set, it can
// safely use t.GetAfiSafiName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AfiSafiName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetAfiSafiName() E_BgpTypes_AFI_SAFI_TYPE {
	if t == nil || t.AfiSafiName == 0 {
		return 0
	}
	return t.AfiSafiName
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_Global_AfiSafi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetSendCommunityType retrieves the value of the leaf SendCommunityType from the NetworkInstance_Protocol_Bgp_Global_AfiSafi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SendCommunityType is set, it can
// safely use t.GetSendCommunityType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SendCommunityType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetSendCommunityType() []E_BgpTypes_CommunityType {
	if t == nil || t.SendCommunityType == nil {
		return nil
	}
	return t.SendCommunityType
}

// GetTotalPaths retrieves the value of the leaf TotalPaths from the NetworkInstance_Protocol_Bgp_Global_AfiSafi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalPaths is set, it can
// safely use t.GetTotalPaths() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalPaths == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetTotalPaths() uint32 {
	if t == nil || t.TotalPaths == nil {
		return 0
	}
	return *t.TotalPaths
}

// GetTotalPrefixes retrieves the value of the leaf TotalPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalPrefixes is set, it can
// safely use t.GetTotalPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) GetTotalPrefixes() uint32 {
	if t == nil || t.TotalPrefixes == nil {
		return 0
	}
	return *t.TotalPrefixes
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	t.AddPaths.PopulateDefaults()
	t.ApplyPolicy.PopulateDefaults()
	t.GracefulRestart.PopulateDefaults()
	t.Ipv4LabeledUnicast.PopulateDefaults()
	t.Ipv4Unicast.PopulateDefaults()
	t.Ipv6LabeledUnicast.PopulateDefaults()
	t.Ipv6Unicast.PopulateDefaults()
	t.L2VpnEvpn.PopulateDefaults()
	t.L2VpnVpls.PopulateDefaults()
	t.L3VpnIpv4Multicast.PopulateDefaults()
	t.L3VpnIpv4Unicast.PopulateDefaults()
	t.L3VpnIpv6Multicast.PopulateDefaults()
	t.L3VpnIpv6Unicast.PopulateDefaults()
	t.RouteSelectionOptions.PopulateDefaults()
	t.SrtePolicyIpv4.PopulateDefaults()
	t.SrtePolicyIpv6.PopulateDefaults()
	t.UseMultiplePaths.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Global_AfiSafi struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"afi-safi-name": t.AfiSafiName,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/add-paths YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths struct {
	ΛMetadata             []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	EligiblePrefixPolicy  *string           `path:"config/eligible-prefix-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEligiblePrefixPolicy []ygot.Annotation `path:"config/@eligible-prefix-policy" ygotAnnotation:"true"`
	Receive               *bool             `path:"config/receive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReceive              []ygot.Annotation `path:"config/@receive" ygotAnnotation:"true"`
	Send                  *bool             `path:"config/send" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSend                 []ygot.Annotation `path:"config/@send" ygotAnnotation:"true"`
	SendMax               *uint8            `path:"config/send-max" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSendMax              []ygot.Annotation `path:"config/@send-max" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths) IsYANGGoStruct() {}

// GetEligiblePrefixPolicy retrieves the value of the leaf EligiblePrefixPolicy from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EligiblePrefixPolicy is set, it can
// safely use t.GetEligiblePrefixPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EligiblePrefixPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths) GetEligiblePrefixPolicy() string {
	if t == nil || t.EligiblePrefixPolicy == nil {
		return ""
	}
	return *t.EligiblePrefixPolicy
}

// GetReceive retrieves the value of the leaf Receive from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Receive is set, it can
// safely use t.GetReceive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Receive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths) GetReceive() bool {
	if t == nil || t.Receive == nil {
		return false
	}
	return *t.Receive
}

// GetSend retrieves the value of the leaf Send from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Send is set, it can
// safely use t.GetSend() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Send == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths) GetSend() bool {
	if t == nil || t.Send == nil {
		return false
	}
	return *t.Send
}

// GetSendMax retrieves the value of the leaf SendMax from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SendMax is set, it can
// safely use t.GetSendMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SendMax == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths) GetSendMax() uint8 {
	if t == nil || t.SendMax == nil {
		return 0
	}
	return *t.SendMax
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Receive == nil {
		var v bool = false
		t.Receive = &v
	}
	if t.Send == nil {
		var v bool = false
		t.Send = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_AddPaths) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/apply-policy YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy struct {
	ΛMetadata            []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	DefaultExportPolicy  E_RoutingPolicy_DefaultPolicyType `path:"config/default-export-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultExportPolicy []ygot.Annotation                 `path:"config/@default-export-policy" ygotAnnotation:"true"`
	DefaultImportPolicy  E_RoutingPolicy_DefaultPolicyType `path:"config/default-import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultImportPolicy []ygot.Annotation                 `path:"config/@default-import-policy" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy) IsYANGGoStruct() {}

// GetDefaultExportPolicy retrieves the value of the leaf DefaultExportPolicy from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultExportPolicy is set, it can
// safely use t.GetDefaultExportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultExportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy) GetDefaultExportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultExportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultExportPolicy
}

// GetDefaultImportPolicy retrieves the value of the leaf DefaultImportPolicy from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultImportPolicy is set, it can
// safely use t.GetDefaultImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy) GetDefaultImportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultImportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultImportPolicy
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DefaultExportPolicy == 0 {
		t.DefaultExportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	if t.DefaultImportPolicy == 0 {
		t.DefaultImportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_ApplyPolicy) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/graceful-restart YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_GracefulRestart) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/ipv4-labeled-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast struct {
	ΛMetadata            []ygot.Annotation                                                                   `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                   `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                   `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/ipv4-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast struct {
	ΛMetadata                []ygot.Annotation                                                            `path:"@" ygotAnnotation:"true"`
	ExtendedNextHopEncoding  *bool                                                                        `path:"config/extended-next-hop-encoding" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtendedNextHopEncoding []ygot.Annotation                                                            `path:"config/@extended-next-hop-encoding" ygotAnnotation:"true"`
	PrefixLimit              *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit             []ygot.Annotation                                                            `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived      *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived     []ygot.Annotation                                                            `path:"@prefix-limit-received" ygotAnnotation:"true"`
	SendDefaultRoute         *bool                                                                        `path:"config/send-default-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSendDefaultRoute        []ygot.Annotation                                                            `path:"config/@send-default-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// GetExtendedNextHopEncoding retrieves the value of the leaf ExtendedNextHopEncoding from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtendedNextHopEncoding is set, it can
// safely use t.GetExtendedNextHopEncoding() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtendedNextHopEncoding == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast) GetExtendedNextHopEncoding() bool {
	if t == nil || t.ExtendedNextHopEncoding == nil {
		return false
	}
	return *t.ExtendedNextHopEncoding
}

// GetSendDefaultRoute retrieves the value of the leaf SendDefaultRoute from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SendDefaultRoute is set, it can
// safely use t.GetSendDefaultRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SendDefaultRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast) GetSendDefaultRoute() bool {
	if t == nil || t.SendDefaultRoute == nil {
		return false
	}
	return *t.SendDefaultRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.ExtendedNextHopEncoding == nil {
		var v bool = false
		t.ExtendedNextHopEncoding = &v
	}
	if t.SendDefaultRoute == nil {
		var v bool = false
		t.SendDefaultRoute = &v
	}
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/ipv4-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/ipv4-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv4Unicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/ipv6-labeled-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast struct {
	ΛMetadata            []ygot.Annotation                                                                   `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                   `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                   `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/ipv6-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast struct {
	ΛMetadata            []ygot.Annotation                                                            `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                            `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                            `path:"@prefix-limit-received" ygotAnnotation:"true"`
	SendDefaultRoute     *bool                                                                        `path:"config/send-default-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSendDefaultRoute    []ygot.Annotation                                                            `path:"config/@send-default-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// GetSendDefaultRoute retrieves the value of the leaf SendDefaultRoute from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SendDefaultRoute is set, it can
// safely use t.GetSendDefaultRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SendDefaultRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast) GetSendDefaultRoute() bool {
	if t == nil || t.SendDefaultRoute == nil {
		return false
	}
	return *t.SendDefaultRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.SendDefaultRoute == nil {
		var v bool = false
		t.SendDefaultRoute = &v
	}
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/ipv6-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/ipv6-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_Ipv6Unicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l2vpn-evpn YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn struct {
	ΛMetadata            []ygot.Annotation                                                          `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                          `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                          `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l2vpn-evpn/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l2vpn-evpn/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnEvpn_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l2vpn-vpls YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls struct {
	ΛMetadata            []ygot.Annotation                                                          `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                          `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                          `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l2vpn-vpls/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l2vpn-vpls/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L2VpnVpls_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l3vpn-ipv4-multicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast struct {
	ΛMetadata            []ygot.Annotation                                                                   `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                   `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                   `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l3vpn-ipv4-multicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l3vpn-ipv4-multicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l3vpn-ipv4-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast struct {
	ΛMetadata            []ygot.Annotation                                                                 `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                 `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                 `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l3vpn-ipv6-multicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast struct {
	ΛMetadata            []ygot.Annotation                                                                   `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                   `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                   `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l3vpn-ipv6-multicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l3vpn-ipv6-multicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l3vpn-ipv6-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast struct {
	ΛMetadata            []ygot.Annotation                                                                 `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                 `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                 `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/route-selection-options YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions struct {
	ΛMetadata                []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AdvertiseInactiveRoutes  *bool             `path:"config/advertise-inactive-routes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdvertiseInactiveRoutes []ygot.Annotation `path:"config/@advertise-inactive-routes" ygotAnnotation:"true"`
	AlwaysCompareMed         *bool             `path:"config/always-compare-med" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAlwaysCompareMed        []ygot.Annotation `path:"config/@always-compare-med" ygotAnnotation:"true"`
	EnableAigp               *bool             `path:"config/enable-aigp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnableAigp              []ygot.Annotation `path:"config/@enable-aigp" ygotAnnotation:"true"`
	ExternalCompareRouterId  *bool             `path:"config/external-compare-router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExternalCompareRouterId []ygot.Annotation `path:"config/@external-compare-router-id" ygotAnnotation:"true"`
	IgnoreAsPathLength       *bool             `path:"config/ignore-as-path-length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIgnoreAsPathLength      []ygot.Annotation `path:"config/@ignore-as-path-length" ygotAnnotation:"true"`
	IgnoreNextHopIgpMetric   *bool             `path:"config/ignore-next-hop-igp-metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIgnoreNextHopIgpMetric  []ygot.Annotation `path:"config/@ignore-next-hop-igp-metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions) IsYANGGoStruct() {}

// GetAdvertiseInactiveRoutes retrieves the value of the leaf AdvertiseInactiveRoutes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdvertiseInactiveRoutes is set, it can
// safely use t.GetAdvertiseInactiveRoutes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdvertiseInactiveRoutes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions) GetAdvertiseInactiveRoutes() bool {
	if t == nil || t.AdvertiseInactiveRoutes == nil {
		return false
	}
	return *t.AdvertiseInactiveRoutes
}

// GetAlwaysCompareMed retrieves the value of the leaf AlwaysCompareMed from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AlwaysCompareMed is set, it can
// safely use t.GetAlwaysCompareMed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AlwaysCompareMed == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions) GetAlwaysCompareMed() bool {
	if t == nil || t.AlwaysCompareMed == nil {
		return false
	}
	return *t.AlwaysCompareMed
}

// GetEnableAigp retrieves the value of the leaf EnableAigp from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EnableAigp is set, it can
// safely use t.GetEnableAigp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EnableAigp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions) GetEnableAigp() bool {
	if t == nil || t.EnableAigp == nil {
		return false
	}
	return *t.EnableAigp
}

// GetExternalCompareRouterId retrieves the value of the leaf ExternalCompareRouterId from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExternalCompareRouterId is set, it can
// safely use t.GetExternalCompareRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExternalCompareRouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions) GetExternalCompareRouterId() bool {
	if t == nil || t.ExternalCompareRouterId == nil {
		return true
	}
	return *t.ExternalCompareRouterId
}

// GetIgnoreAsPathLength retrieves the value of the leaf IgnoreAsPathLength from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IgnoreAsPathLength is set, it can
// safely use t.GetIgnoreAsPathLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IgnoreAsPathLength == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions) GetIgnoreAsPathLength() bool {
	if t == nil || t.IgnoreAsPathLength == nil {
		return false
	}
	return *t.IgnoreAsPathLength
}

// GetIgnoreNextHopIgpMetric retrieves the value of the leaf IgnoreNextHopIgpMetric from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IgnoreNextHopIgpMetric is set, it can
// safely use t.GetIgnoreNextHopIgpMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IgnoreNextHopIgpMetric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions) GetIgnoreNextHopIgpMetric() bool {
	if t == nil || t.IgnoreNextHopIgpMetric == nil {
		return false
	}
	return *t.IgnoreNextHopIgpMetric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AdvertiseInactiveRoutes == nil {
		var v bool = false
		t.AdvertiseInactiveRoutes = &v
	}
	if t.AlwaysCompareMed == nil {
		var v bool = false
		t.AlwaysCompareMed = &v
	}
	if t.EnableAigp == nil {
		var v bool = false
		t.EnableAigp = &v
	}
	if t.ExternalCompareRouterId == nil {
		var v bool = true
		t.ExternalCompareRouterId = &v
	}
	if t.IgnoreAsPathLength == nil {
		var v bool = false
		t.IgnoreAsPathLength = &v
	}
	if t.IgnoreNextHopIgpMetric == nil {
		var v bool = false
		t.IgnoreNextHopIgpMetric = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_RouteSelectionOptions) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4 represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/srte-policy-ipv4 YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4 struct {
	ΛMetadata            []ygot.Annotation                                                               `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                               `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                               `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/srte-policy-ipv4/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/srte-policy-ipv4/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6 represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/srte-policy-ipv6 YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6 struct {
	ΛMetadata            []ygot.Annotation                                                               `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                               `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                               `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/srte-policy-ipv6/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/srte-policy-ipv6/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/use-multiple-paths YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths struct {
	ΛMetadata []ygot.Annotation                                                  `path:"@" ygotAnnotation:"true"`
	Ebgp      *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp `path:"ebgp" module:"openconfig-network-instance"`
	ΛEbgp     []ygot.Annotation                                                  `path:"@ebgp" ygotAnnotation:"true"`
	Enabled   *bool                                                              `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation                                                  `path:"config/@enabled" ygotAnnotation:"true"`
	Ibgp      *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp `path:"ibgp" module:"openconfig-network-instance"`
	ΛIbgp     []ygot.Annotation                                                  `path:"@ibgp" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths) IsYANGGoStruct() {}

// GetOrCreateEbgp retrieves the value of the Ebgp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths) GetOrCreateEbgp() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp {
	if t.Ebgp != nil {
		return t.Ebgp
	}
	t.Ebgp = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp{}
	return t.Ebgp
}

// GetOrCreateIbgp retrieves the value of the Ibgp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths) GetOrCreateIbgp() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp {
	if t.Ibgp != nil {
		return t.Ibgp
	}
	t.Ibgp = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp{}
	return t.Ibgp
}

// GetEbgp returns the value of the Ebgp struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths. If the receiver or the field Ebgp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths) GetEbgp() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp {
	if t != nil && t.Ebgp != nil {
		return t.Ebgp
	}
	return nil
}

// GetIbgp returns the value of the Ibgp struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths. If the receiver or the field Ibgp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths) GetIbgp() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp {
	if t != nil && t.Ibgp != nil {
		return t.Ibgp
	}
	return nil
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	t.Ebgp.PopulateDefaults()
	t.Ibgp.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/use-multiple-paths/ebgp YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp struct {
	ΛMetadata                  []ygot.Annotation                                                                            `path:"@" ygotAnnotation:"true"`
	AllowMultipleAs            *bool                                                                                        `path:"config/allow-multiple-as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAllowMultipleAs           []ygot.Annotation                                                                            `path:"config/@allow-multiple-as" ygotAnnotation:"true"`
	LinkBandwidthExtCommunity  *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity `path:"link-bandwidth-ext-community" module:"openconfig-network-instance"`
	ΛLinkBandwidthExtCommunity []ygot.Annotation                                                                            `path:"@link-bandwidth-ext-community" ygotAnnotation:"true"`
	MaximumPaths               *uint32                                                                                      `path:"config/maximum-paths" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximumPaths              []ygot.Annotation                                                                            `path:"config/@maximum-paths" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp) IsYANGGoStruct() {}

// GetOrCreateLinkBandwidthExtCommunity retrieves the value of the LinkBandwidthExtCommunity field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp) GetOrCreateLinkBandwidthExtCommunity() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity {
	if t.LinkBandwidthExtCommunity != nil {
		return t.LinkBandwidthExtCommunity
	}
	t.LinkBandwidthExtCommunity = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity{}
	return t.LinkBandwidthExtCommunity
}

// GetLinkBandwidthExtCommunity returns the value of the LinkBandwidthExtCommunity struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp. If the receiver or the field LinkBandwidthExtCommunity is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp) GetLinkBandwidthExtCommunity() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity {
	if t != nil && t.LinkBandwidthExtCommunity != nil {
		return t.LinkBandwidthExtCommunity
	}
	return nil
}

// GetAllowMultipleAs retrieves the value of the leaf AllowMultipleAs from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AllowMultipleAs is set, it can
// safely use t.GetAllowMultipleAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AllowMultipleAs == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp) GetAllowMultipleAs() bool {
	if t == nil || t.AllowMultipleAs == nil {
		return false
	}
	return *t.AllowMultipleAs
}

// GetMaximumPaths retrieves the value of the leaf MaximumPaths from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaximumPaths is set, it can
// safely use t.GetMaximumPaths() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaximumPaths == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp) GetMaximumPaths() uint32 {
	if t == nil || t.MaximumPaths == nil {
		return 1
	}
	return *t.MaximumPaths
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AllowMultipleAs == nil {
		var v bool = false
		t.AllowMultipleAs = &v
	}
	if t.MaximumPaths == nil {
		var v uint32 = 1
		t.MaximumPaths = &v
	}
	t.LinkBandwidthExtCommunity.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/use-multiple-paths/ebgp/link-bandwidth-ext-community YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) IsYANGGoStruct() {
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/use-multiple-paths/ibgp YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp struct {
	ΛMetadata                  []ygot.Annotation                                                                            `path:"@" ygotAnnotation:"true"`
	LinkBandwidthExtCommunity  *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity `path:"link-bandwidth-ext-community" module:"openconfig-network-instance"`
	ΛLinkBandwidthExtCommunity []ygot.Annotation                                                                            `path:"@link-bandwidth-ext-community" ygotAnnotation:"true"`
	MaximumPaths               *uint32                                                                                      `path:"config/maximum-paths" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximumPaths              []ygot.Annotation                                                                            `path:"config/@maximum-paths" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp) IsYANGGoStruct() {}

// GetOrCreateLinkBandwidthExtCommunity retrieves the value of the LinkBandwidthExtCommunity field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp) GetOrCreateLinkBandwidthExtCommunity() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity {
	if t.LinkBandwidthExtCommunity != nil {
		return t.LinkBandwidthExtCommunity
	}
	t.LinkBandwidthExtCommunity = &NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity{}
	return t.LinkBandwidthExtCommunity
}

// GetLinkBandwidthExtCommunity returns the value of the LinkBandwidthExtCommunity struct pointer
// from NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp. If the receiver or the field LinkBandwidthExtCommunity is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp) GetLinkBandwidthExtCommunity() *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity {
	if t != nil && t.LinkBandwidthExtCommunity != nil {
		return t.LinkBandwidthExtCommunity
	}
	return nil
}

// GetMaximumPaths retrieves the value of the leaf MaximumPaths from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaximumPaths is set, it can
// safely use t.GetMaximumPaths() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaximumPaths == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp) GetMaximumPaths() uint32 {
	if t == nil || t.MaximumPaths == nil {
		return 1
	}
	return *t.MaximumPaths
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MaximumPaths == nil {
		var v uint32 = 1
		t.MaximumPaths = &v
	}
	t.LinkBandwidthExtCommunity.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/use-multiple-paths/ibgp/link-bandwidth-ext-community YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) IsYANGGoStruct() {
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity.
func (*NetworkInstance_Protocol_Bgp_Global_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_ApplyPolicy represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/apply-policy YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_ApplyPolicy struct {
	ΛMetadata            []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	DefaultExportPolicy  E_RoutingPolicy_DefaultPolicyType `path:"config/default-export-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultExportPolicy []ygot.Annotation                 `path:"config/@default-export-policy" ygotAnnotation:"true"`
	DefaultImportPolicy  E_RoutingPolicy_DefaultPolicyType `path:"config/default-import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultImportPolicy []ygot.Annotation                 `path:"config/@default-import-policy" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_ApplyPolicy implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_ApplyPolicy) IsYANGGoStruct() {}

// GetDefaultExportPolicy retrieves the value of the leaf DefaultExportPolicy from the NetworkInstance_Protocol_Bgp_Global_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultExportPolicy is set, it can
// safely use t.GetDefaultExportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultExportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_ApplyPolicy) GetDefaultExportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultExportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultExportPolicy
}

// GetDefaultImportPolicy retrieves the value of the leaf DefaultImportPolicy from the NetworkInstance_Protocol_Bgp_Global_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultImportPolicy is set, it can
// safely use t.GetDefaultImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_ApplyPolicy) GetDefaultImportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultImportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultImportPolicy
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_ApplyPolicy
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_ApplyPolicy) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DefaultExportPolicy == 0 {
		t.DefaultExportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	if t.DefaultImportPolicy == 0 {
		t.DefaultImportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_ApplyPolicy) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_ApplyPolicy"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_ApplyPolicy) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_ApplyPolicy) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_ApplyPolicy.
func (*NetworkInstance_Protocol_Bgp_Global_ApplyPolicy) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_Confederation represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/confederation YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_Confederation struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Identifier  *uint32           `path:"config/identifier" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIdentifier []ygot.Annotation `path:"config/@identifier" ygotAnnotation:"true"`
	MemberAs    []uint32          `path:"config/member-as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMemberAs   []ygot.Annotation `path:"config/@member-as" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_Confederation implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_Confederation) IsYANGGoStruct() {}

// GetIdentifier retrieves the value of the leaf Identifier from the NetworkInstance_Protocol_Bgp_Global_Confederation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Identifier is set, it can
// safely use t.GetIdentifier() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Identifier == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_Confederation) GetIdentifier() uint32 {
	if t == nil || t.Identifier == nil {
		return 0
	}
	return *t.Identifier
}

// GetMemberAs retrieves the value of the leaf MemberAs from the NetworkInstance_Protocol_Bgp_Global_Confederation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MemberAs is set, it can
// safely use t.GetMemberAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MemberAs == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_Confederation) GetMemberAs() []uint32 {
	if t == nil || t.MemberAs == nil {
		return nil
	}
	return t.MemberAs
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_Confederation
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_Confederation) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_Confederation) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_Confederation"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_Confederation) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_Confederation) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_Confederation.
func (*NetworkInstance_Protocol_Bgp_Global_Confederation) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/default-route-distance YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance struct {
	ΛMetadata              []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ExternalRouteDistance  *uint8            `path:"config/external-route-distance" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExternalRouteDistance []ygot.Annotation `path:"config/@external-route-distance" ygotAnnotation:"true"`
	InternalRouteDistance  *uint8            `path:"config/internal-route-distance" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInternalRouteDistance []ygot.Annotation `path:"config/@internal-route-distance" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance) IsYANGGoStruct() {}

// GetExternalRouteDistance retrieves the value of the leaf ExternalRouteDistance from the NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExternalRouteDistance is set, it can
// safely use t.GetExternalRouteDistance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExternalRouteDistance == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance) GetExternalRouteDistance() uint8 {
	if t == nil || t.ExternalRouteDistance == nil {
		return 0
	}
	return *t.ExternalRouteDistance
}

// GetInternalRouteDistance retrieves the value of the leaf InternalRouteDistance from the NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InternalRouteDistance is set, it can
// safely use t.GetInternalRouteDistance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InternalRouteDistance == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance) GetInternalRouteDistance() uint8 {
	if t == nil || t.InternalRouteDistance == nil {
		return 0
	}
	return *t.InternalRouteDistance
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance.
func (*NetworkInstance_Protocol_Bgp_Global_DefaultRouteDistance) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/dynamic-neighbor-prefixes/dynamic-neighbor-prefix YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	PeerGroup  *string           `path:"config/peer-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPeerGroup []ygot.Annotation `path:"config/@peer-group" ygotAnnotation:"true"`
	Prefix     *string           `path:"config/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix    []ygot.Annotation `path:"config/@prefix|@prefix" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix) IsYANGGoStruct() {}

// GetPeerGroup retrieves the value of the leaf PeerGroup from the NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerGroup is set, it can
// safely use t.GetPeerGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix) GetPeerGroup() string {
	if t == nil || t.PeerGroup == nil {
		return ""
	}
	return *t.PeerGroup
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"prefix": *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix.
func (*NetworkInstance_Protocol_Bgp_Global_DynamicNeighborPrefix) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_GracefulRestart represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/graceful-restart YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_GracefulRestart struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled          *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled         []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
	HelperOnly       *bool             `path:"config/helper-only" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelperOnly      []ygot.Annotation `path:"config/@helper-only" ygotAnnotation:"true"`
	RestartTime      *uint16           `path:"config/restart-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRestartTime     []ygot.Annotation `path:"config/@restart-time" ygotAnnotation:"true"`
	StaleRoutesTime  *uint16           `path:"config/stale-routes-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛStaleRoutesTime []ygot.Annotation `path:"config/@stale-routes-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_GracefulRestart implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_GracefulRestart) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_GracefulRestart) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetHelperOnly retrieves the value of the leaf HelperOnly from the NetworkInstance_Protocol_Bgp_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelperOnly is set, it can
// safely use t.GetHelperOnly() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelperOnly == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_GracefulRestart) GetHelperOnly() bool {
	if t == nil || t.HelperOnly == nil {
		return false
	}
	return *t.HelperOnly
}

// GetRestartTime retrieves the value of the leaf RestartTime from the NetworkInstance_Protocol_Bgp_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RestartTime is set, it can
// safely use t.GetRestartTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RestartTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_GracefulRestart) GetRestartTime() uint16 {
	if t == nil || t.RestartTime == nil {
		return 0
	}
	return *t.RestartTime
}

// GetStaleRoutesTime retrieves the value of the leaf StaleRoutesTime from the NetworkInstance_Protocol_Bgp_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if StaleRoutesTime is set, it can
// safely use t.GetStaleRoutesTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.StaleRoutesTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_GracefulRestart) GetStaleRoutesTime() uint16 {
	if t == nil || t.StaleRoutesTime == nil {
		return 0
	}
	return *t.StaleRoutesTime
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_GracefulRestart
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_GracefulRestart) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_GracefulRestart) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_GracefulRestart"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_GracefulRestart) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_GracefulRestart) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_GracefulRestart.
func (*NetworkInstance_Protocol_Bgp_Global_GracefulRestart) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/route-selection-options YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions struct {
	ΛMetadata                []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AdvertiseInactiveRoutes  *bool             `path:"config/advertise-inactive-routes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdvertiseInactiveRoutes []ygot.Annotation `path:"config/@advertise-inactive-routes" ygotAnnotation:"true"`
	AlwaysCompareMed         *bool             `path:"config/always-compare-med" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAlwaysCompareMed        []ygot.Annotation `path:"config/@always-compare-med" ygotAnnotation:"true"`
	EnableAigp               *bool             `path:"config/enable-aigp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnableAigp              []ygot.Annotation `path:"config/@enable-aigp" ygotAnnotation:"true"`
	ExternalCompareRouterId  *bool             `path:"config/external-compare-router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExternalCompareRouterId []ygot.Annotation `path:"config/@external-compare-router-id" ygotAnnotation:"true"`
	IgnoreAsPathLength       *bool             `path:"config/ignore-as-path-length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIgnoreAsPathLength      []ygot.Annotation `path:"config/@ignore-as-path-length" ygotAnnotation:"true"`
	IgnoreNextHopIgpMetric   *bool             `path:"config/ignore-next-hop-igp-metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIgnoreNextHopIgpMetric  []ygot.Annotation `path:"config/@ignore-next-hop-igp-metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions) IsYANGGoStruct() {}

// GetAdvertiseInactiveRoutes retrieves the value of the leaf AdvertiseInactiveRoutes from the NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdvertiseInactiveRoutes is set, it can
// safely use t.GetAdvertiseInactiveRoutes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdvertiseInactiveRoutes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions) GetAdvertiseInactiveRoutes() bool {
	if t == nil || t.AdvertiseInactiveRoutes == nil {
		return false
	}
	return *t.AdvertiseInactiveRoutes
}

// GetAlwaysCompareMed retrieves the value of the leaf AlwaysCompareMed from the NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AlwaysCompareMed is set, it can
// safely use t.GetAlwaysCompareMed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AlwaysCompareMed == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions) GetAlwaysCompareMed() bool {
	if t == nil || t.AlwaysCompareMed == nil {
		return false
	}
	return *t.AlwaysCompareMed
}

// GetEnableAigp retrieves the value of the leaf EnableAigp from the NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EnableAigp is set, it can
// safely use t.GetEnableAigp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EnableAigp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions) GetEnableAigp() bool {
	if t == nil || t.EnableAigp == nil {
		return false
	}
	return *t.EnableAigp
}

// GetExternalCompareRouterId retrieves the value of the leaf ExternalCompareRouterId from the NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExternalCompareRouterId is set, it can
// safely use t.GetExternalCompareRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExternalCompareRouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions) GetExternalCompareRouterId() bool {
	if t == nil || t.ExternalCompareRouterId == nil {
		return true
	}
	return *t.ExternalCompareRouterId
}

// GetIgnoreAsPathLength retrieves the value of the leaf IgnoreAsPathLength from the NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IgnoreAsPathLength is set, it can
// safely use t.GetIgnoreAsPathLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IgnoreAsPathLength == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions) GetIgnoreAsPathLength() bool {
	if t == nil || t.IgnoreAsPathLength == nil {
		return false
	}
	return *t.IgnoreAsPathLength
}

// GetIgnoreNextHopIgpMetric retrieves the value of the leaf IgnoreNextHopIgpMetric from the NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IgnoreNextHopIgpMetric is set, it can
// safely use t.GetIgnoreNextHopIgpMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IgnoreNextHopIgpMetric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions) GetIgnoreNextHopIgpMetric() bool {
	if t == nil || t.IgnoreNextHopIgpMetric == nil {
		return false
	}
	return *t.IgnoreNextHopIgpMetric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AdvertiseInactiveRoutes == nil {
		var v bool = false
		t.AdvertiseInactiveRoutes = &v
	}
	if t.AlwaysCompareMed == nil {
		var v bool = false
		t.AlwaysCompareMed = &v
	}
	if t.EnableAigp == nil {
		var v bool = false
		t.EnableAigp = &v
	}
	if t.ExternalCompareRouterId == nil {
		var v bool = true
		t.ExternalCompareRouterId = &v
	}
	if t.IgnoreAsPathLength == nil {
		var v bool = false
		t.IgnoreAsPathLength = &v
	}
	if t.IgnoreNextHopIgpMetric == nil {
		var v bool = false
		t.IgnoreNextHopIgpMetric = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions.
func (*NetworkInstance_Protocol_Bgp_Global_RouteSelectionOptions) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/use-multiple-paths YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths struct {
	ΛMetadata []ygot.Annotation                                          `path:"@" ygotAnnotation:"true"`
	Ebgp      *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp `path:"ebgp" module:"openconfig-network-instance"`
	ΛEbgp     []ygot.Annotation                                          `path:"@ebgp" ygotAnnotation:"true"`
	Enabled   *bool                                                      `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation                                          `path:"config/@enabled" ygotAnnotation:"true"`
	Ibgp      *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp `path:"ibgp" module:"openconfig-network-instance"`
	ΛIbgp     []ygot.Annotation                                          `path:"@ibgp" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths) IsYANGGoStruct() {}

// GetOrCreateEbgp retrieves the value of the Ebgp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths) GetOrCreateEbgp() *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp {
	if t.Ebgp != nil {
		return t.Ebgp
	}
	t.Ebgp = &NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp{}
	return t.Ebgp
}

// GetOrCreateIbgp retrieves the value of the Ibgp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths) GetOrCreateIbgp() *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp {
	if t.Ibgp != nil {
		return t.Ibgp
	}
	t.Ibgp = &NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp{}
	return t.Ibgp
}

// GetEbgp returns the value of the Ebgp struct pointer
// from NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths. If the receiver or the field Ebgp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths) GetEbgp() *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp {
	if t != nil && t.Ebgp != nil {
		return t.Ebgp
	}
	return nil
}

// GetIbgp returns the value of the Ibgp struct pointer
// from NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths. If the receiver or the field Ibgp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths) GetIbgp() *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp {
	if t != nil && t.Ibgp != nil {
		return t.Ibgp
	}
	return nil
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	t.Ebgp.PopulateDefaults()
	t.Ibgp.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths.
func (*NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/use-multiple-paths/ebgp YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp struct {
	ΛMetadata                  []ygot.Annotation                                                                    `path:"@" ygotAnnotation:"true"`
	AllowMultipleAs            *bool                                                                                `path:"config/allow-multiple-as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAllowMultipleAs           []ygot.Annotation                                                                    `path:"config/@allow-multiple-as" ygotAnnotation:"true"`
	LinkBandwidthExtCommunity  *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity `path:"link-bandwidth-ext-community" module:"openconfig-network-instance"`
	ΛLinkBandwidthExtCommunity []ygot.Annotation                                                                    `path:"@link-bandwidth-ext-community" ygotAnnotation:"true"`
	MaximumPaths               *uint32                                                                              `path:"config/maximum-paths" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximumPaths              []ygot.Annotation                                                                    `path:"config/@maximum-paths" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp) IsYANGGoStruct() {}

// GetOrCreateLinkBandwidthExtCommunity retrieves the value of the LinkBandwidthExtCommunity field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp) GetOrCreateLinkBandwidthExtCommunity() *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity {
	if t.LinkBandwidthExtCommunity != nil {
		return t.LinkBandwidthExtCommunity
	}
	t.LinkBandwidthExtCommunity = &NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity{}
	return t.LinkBandwidthExtCommunity
}

// GetLinkBandwidthExtCommunity returns the value of the LinkBandwidthExtCommunity struct pointer
// from NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp. If the receiver or the field LinkBandwidthExtCommunity is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp) GetLinkBandwidthExtCommunity() *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity {
	if t != nil && t.LinkBandwidthExtCommunity != nil {
		return t.LinkBandwidthExtCommunity
	}
	return nil
}

// GetAllowMultipleAs retrieves the value of the leaf AllowMultipleAs from the NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AllowMultipleAs is set, it can
// safely use t.GetAllowMultipleAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AllowMultipleAs == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp) GetAllowMultipleAs() bool {
	if t == nil || t.AllowMultipleAs == nil {
		return false
	}
	return *t.AllowMultipleAs
}

// GetMaximumPaths retrieves the value of the leaf MaximumPaths from the NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaximumPaths is set, it can
// safely use t.GetMaximumPaths() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaximumPaths == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp) GetMaximumPaths() uint32 {
	if t == nil || t.MaximumPaths == nil {
		return 1
	}
	return *t.MaximumPaths
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AllowMultipleAs == nil {
		var v bool = false
		t.AllowMultipleAs = &v
	}
	if t.MaximumPaths == nil {
		var v uint32 = 1
		t.MaximumPaths = &v
	}
	t.LinkBandwidthExtCommunity.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp.
func (*NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/use-multiple-paths/ebgp/link-bandwidth-ext-community YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) IsYANGGoStruct() {
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity.
func (*NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/use-multiple-paths/ibgp YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp struct {
	ΛMetadata                  []ygot.Annotation                                                                    `path:"@" ygotAnnotation:"true"`
	LinkBandwidthExtCommunity  *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity `path:"link-bandwidth-ext-community" module:"openconfig-network-instance"`
	ΛLinkBandwidthExtCommunity []ygot.Annotation                                                                    `path:"@link-bandwidth-ext-community" ygotAnnotation:"true"`
	MaximumPaths               *uint32                                                                              `path:"config/maximum-paths" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximumPaths              []ygot.Annotation                                                                    `path:"config/@maximum-paths" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp) IsYANGGoStruct() {}

// GetOrCreateLinkBandwidthExtCommunity retrieves the value of the LinkBandwidthExtCommunity field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp) GetOrCreateLinkBandwidthExtCommunity() *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity {
	if t.LinkBandwidthExtCommunity != nil {
		return t.LinkBandwidthExtCommunity
	}
	t.LinkBandwidthExtCommunity = &NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity{}
	return t.LinkBandwidthExtCommunity
}

// GetLinkBandwidthExtCommunity returns the value of the LinkBandwidthExtCommunity struct pointer
// from NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp. If the receiver or the field LinkBandwidthExtCommunity is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp) GetLinkBandwidthExtCommunity() *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity {
	if t != nil && t.LinkBandwidthExtCommunity != nil {
		return t.LinkBandwidthExtCommunity
	}
	return nil
}

// GetMaximumPaths retrieves the value of the leaf MaximumPaths from the NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaximumPaths is set, it can
// safely use t.GetMaximumPaths() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaximumPaths == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp) GetMaximumPaths() uint32 {
	if t == nil || t.MaximumPaths == nil {
		return 1
	}
	return *t.MaximumPaths
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MaximumPaths == nil {
		var v uint32 = 1
		t.MaximumPaths = &v
	}
	t.LinkBandwidthExtCommunity.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp.
func (*NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/global/use-multiple-paths/ibgp/link-bandwidth-ext-community YANG schema element.
type NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) IsYANGGoStruct() {
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity.
func (*NetworkInstance_Protocol_Bgp_Global_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor struct {
	ΛMetadata                []ygot.Annotation                                                           `path:"@" ygotAnnotation:"true"`
	AfiSafi                  map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi `path:"afi-safis/afi-safi" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAfiSafi                 []ygot.Annotation                                                           `path:"afi-safis/@afi-safi" ygotAnnotation:"true"`
	ApplyPolicy              *NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy                          `path:"apply-policy" module:"openconfig-network-instance"`
	ΛApplyPolicy             []ygot.Annotation                                                           `path:"@apply-policy" ygotAnnotation:"true"`
	AsPathOptions            *NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions                        `path:"as-path-options" module:"openconfig-network-instance"`
	ΛAsPathOptions           []ygot.Annotation                                                           `path:"@as-path-options" ygotAnnotation:"true"`
	AuthPassword             *string                                                                     `path:"config/auth-password" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthPassword            []ygot.Annotation                                                           `path:"config/@auth-password" ygotAnnotation:"true"`
	Description              *string                                                                     `path:"config/description" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDescription             []ygot.Annotation                                                           `path:"config/@description" ygotAnnotation:"true"`
	DynamicallyConfigured    *bool                                                                       `path:"state/dynamically-configured" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDynamicallyConfigured   []ygot.Annotation                                                           `path:"state/@dynamically-configured" ygotAnnotation:"true"`
	EbgpMultihop             *NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop                         `path:"ebgp-multihop" module:"openconfig-network-instance"`
	ΛEbgpMultihop            []ygot.Annotation                                                           `path:"@ebgp-multihop" ygotAnnotation:"true"`
	EnableBfd                *NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd                            `path:"enable-bfd" module:"openconfig-network-instance"`
	ΛEnableBfd               []ygot.Annotation                                                           `path:"@enable-bfd" ygotAnnotation:"true"`
	Enabled                  *bool                                                                       `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled                 []ygot.Annotation                                                           `path:"config/@enabled" ygotAnnotation:"true"`
	ErrorHandling            *NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling                        `path:"error-handling" module:"openconfig-network-instance"`
	ΛErrorHandling           []ygot.Annotation                                                           `path:"@error-handling" ygotAnnotation:"true"`
	EstablishedTransitions   *uint64                                                                     `path:"state/established-transitions" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEstablishedTransitions  []ygot.Annotation                                                           `path:"state/@established-transitions" ygotAnnotation:"true"`
	GracefulRestart          *NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart                      `path:"graceful-restart" module:"openconfig-network-instance"`
	ΛGracefulRestart         []ygot.Annotation                                                           `path:"@graceful-restart" ygotAnnotation:"true"`
	LastEstablished          *uint64                                                                     `path:"state/last-established" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastEstablished         []ygot.Annotation                                                           `path:"state/@last-established" ygotAnnotation:"true"`
	LastPrefixLimitExceeded  *uint64                                                                     `path:"state/last-prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastPrefixLimitExceeded []ygot.Annotation                                                           `path:"state/@last-prefix-limit-exceeded" ygotAnnotation:"true"`
	LocalAs                  *uint32                                                                     `path:"config/local-as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalAs                 []ygot.Annotation                                                           `path:"config/@local-as" ygotAnnotation:"true"`
	LoggingOptions           *NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions                       `path:"logging-options" module:"openconfig-network-instance"`
	ΛLoggingOptions          []ygot.Annotation                                                           `path:"@logging-options" ygotAnnotation:"true"`
	Messages                 *NetworkInstance_Protocol_Bgp_Neighbor_Messages                             `path:"state/messages" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMessages                []ygot.Annotation                                                           `path:"state/@messages" ygotAnnotation:"true"`
	NeighborAddress          *string                                                                     `path:"config/neighbor-address|neighbor-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛNeighborAddress         []ygot.Annotation                                                           `path:"config/@neighbor-address|@neighbor-address" ygotAnnotation:"true"`
	NeighborPort             *uint16                                                                     `path:"config/neighbor-port" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighborPort            []ygot.Annotation                                                           `path:"config/@neighbor-port" ygotAnnotation:"true"`
	PeerAs                   *uint32                                                                     `path:"config/peer-as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPeerAs                  []ygot.Annotation                                                           `path:"config/@peer-as" ygotAnnotation:"true"`
	PeerGroup                *string                                                                     `path:"config/peer-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPeerGroup               []ygot.Annotation                                                           `path:"config/@peer-group" ygotAnnotation:"true"`
	PeerType                 E_BgpTypes_PeerType                                                         `path:"config/peer-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPeerType                []ygot.Annotation                                                           `path:"config/@peer-type" ygotAnnotation:"true"`
	Queues                   *NetworkInstance_Protocol_Bgp_Neighbor_Queues                               `path:"state/queues" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛQueues                  []ygot.Annotation                                                           `path:"state/@queues" ygotAnnotation:"true"`
	RemovePrivateAs          E_BgpTypes_RemovePrivateAsOption                                            `path:"config/remove-private-as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRemovePrivateAs         []ygot.Annotation                                                           `path:"config/@remove-private-as" ygotAnnotation:"true"`
	RouteFlapDamping         *bool                                                                       `path:"config/route-flap-damping" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouteFlapDamping        []ygot.Annotation                                                           `path:"config/@route-flap-damping" ygotAnnotation:"true"`
	RouteReflector           *NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector                       `path:"route-reflector" module:"openconfig-network-instance"`
	ΛRouteReflector          []ygot.Annotation                                                           `path:"@route-reflector" ygotAnnotation:"true"`
	SendCommunity            E_BgpTypes_CommunityType                                                    `path:"config/send-community" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSendCommunity           []ygot.Annotation                                                           `path:"config/@send-community" ygotAnnotation:"true"`
	SendCommunityType        []E_BgpTypes_CommunityType                                                  `path:"config/send-community-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSendCommunityType       []ygot.Annotation                                                           `path:"config/@send-community-type" ygotAnnotation:"true"`
	SessionState             E_Bgp_Neighbor_SessionState                                                 `path:"state/session-state" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSessionState            []ygot.Annotation                                                           `path:"state/@session-state" ygotAnnotation:"true"`
	SupportedCapabilities    []E_BgpTypes_BGP_CAPABILITY                                                 `path:"state/supported-capabilities" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSupportedCapabilities   []ygot.Annotation                                                           `path:"state/@supported-capabilities" ygotAnnotation:"true"`
	Timers                   *NetworkInstance_Protocol_Bgp_Neighbor_Timers                               `path:"timers" module:"openconfig-network-instance"`
	ΛTimers                  []ygot.Annotation                                                           `path:"@timers" ygotAnnotation:"true"`
	Transport                *NetworkInstance_Protocol_Bgp_Neighbor_Transport                            `path:"transport" module:"openconfig-network-instance"`
	ΛTransport               []ygot.Annotation                                                           `path:"@transport" ygotAnnotation:"true"`
	UseMultiplePaths         *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths                     `path:"use-multiple-paths" module:"openconfig-network-instance"`
	ΛUseMultiplePaths        []ygot.Annotation                                                           `path:"@use-multiple-paths" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor) IsYANGGoStruct() {}

// NewAfiSafi creates a new entry in the AfiSafi list of the
// NetworkInstance_Protocol_Bgp_Neighbor struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) NewAfiSafi(AfiSafiName E_BgpTypes_AFI_SAFI_TYPE) (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AfiSafi == nil {
		t.AfiSafi = make(map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi)
	}

	key := AfiSafiName

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AfiSafi[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AfiSafi", key)
	}

	t.AfiSafi[key] = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi{
		AfiSafiName: AfiSafiName,
	}

	return t.AfiSafi[key], nil
}

// RenameAfiSafi renames an entry in the list AfiSafi within
// the NetworkInstance_Protocol_Bgp_Neighbor struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) RenameAfiSafi(oldK, newK E_BgpTypes_AFI_SAFI_TYPE) error {
	if _, ok := t.AfiSafi[newK]; ok {
		return fmt.Errorf("key %v already exists in AfiSafi", newK)
	}

	e, ok := t.AfiSafi[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AfiSafi", oldK)
	}
	e.AfiSafiName = newK

	t.AfiSafi[newK] = e
	delete(t.AfiSafi, oldK)
	return nil
}

// GetOrCreateAfiSafiMap returns the list (map) from NetworkInstance_Protocol_Bgp_Neighbor.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetOrCreateAfiSafiMap() map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi {
	if t.AfiSafi == nil {
		t.AfiSafi = make(map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi)
	}
	return t.AfiSafi
}

// GetOrCreateAfiSafi retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Neighbor. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetOrCreateAfiSafi(AfiSafiName E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi {

	key := AfiSafiName

	if v, ok := t.AfiSafi[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAfiSafi(AfiSafiName)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAfiSafi got unexpected error: %v", err))
	}
	return v
}

// GetAfiSafi retrieves the value with the specified key from
// the AfiSafi map field of NetworkInstance_Protocol_Bgp_Neighbor. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetAfiSafi(AfiSafiName E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi {

	if t == nil {
		return nil
	}

	key := AfiSafiName

	if lm, ok := t.AfiSafi[key]; ok {
		return lm
	}
	return nil
}

// AppendAfiSafi appends the supplied NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi struct to the
// list AfiSafi of NetworkInstance_Protocol_Bgp_Neighbor. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) AppendAfiSafi(v *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) error {
	key := v.AfiSafiName

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AfiSafi == nil {
		t.AfiSafi = make(map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi)
	}

	if _, ok := t.AfiSafi[key]; ok {
		return fmt.Errorf("duplicate key for list AfiSafi %v", key)
	}

	t.AfiSafi[key] = v
	return nil
}

// GetOrCreateApplyPolicy retrieves the value of the ApplyPolicy field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetOrCreateApplyPolicy() *NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy {
	if t.ApplyPolicy != nil {
		return t.ApplyPolicy
	}
	t.ApplyPolicy = &NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy{}
	return t.ApplyPolicy
}

// GetOrCreateAsPathOptions retrieves the value of the AsPathOptions field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetOrCreateAsPathOptions() *NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions {
	if t.AsPathOptions != nil {
		return t.AsPathOptions
	}
	t.AsPathOptions = &NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions{}
	return t.AsPathOptions
}

// GetOrCreateEbgpMultihop retrieves the value of the EbgpMultihop field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetOrCreateEbgpMultihop() *NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop {
	if t.EbgpMultihop != nil {
		return t.EbgpMultihop
	}
	t.EbgpMultihop = &NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop{}
	return t.EbgpMultihop
}

// GetOrCreateEnableBfd retrieves the value of the EnableBfd field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetOrCreateEnableBfd() *NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd {
	if t.EnableBfd != nil {
		return t.EnableBfd
	}
	t.EnableBfd = &NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd{}
	return t.EnableBfd
}

// GetOrCreateErrorHandling retrieves the value of the ErrorHandling field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetOrCreateErrorHandling() *NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling {
	if t.ErrorHandling != nil {
		return t.ErrorHandling
	}
	t.ErrorHandling = &NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling{}
	return t.ErrorHandling
}

// GetOrCreateGracefulRestart retrieves the value of the GracefulRestart field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetOrCreateGracefulRestart() *NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart {
	if t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	t.GracefulRestart = &NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart{}
	return t.GracefulRestart
}

// GetOrCreateLoggingOptions retrieves the value of the LoggingOptions field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetOrCreateLoggingOptions() *NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions {
	if t.LoggingOptions != nil {
		return t.LoggingOptions
	}
	t.LoggingOptions = &NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions{}
	return t.LoggingOptions
}

// GetOrCreateMessages retrieves the value of the Messages field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetOrCreateMessages() *NetworkInstance_Protocol_Bgp_Neighbor_Messages {
	if t.Messages != nil {
		return t.Messages
	}
	t.Messages = &NetworkInstance_Protocol_Bgp_Neighbor_Messages{}
	return t.Messages
}

// GetOrCreateQueues retrieves the value of the Queues field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetOrCreateQueues() *NetworkInstance_Protocol_Bgp_Neighbor_Queues {
	if t.Queues != nil {
		return t.Queues
	}
	t.Queues = &NetworkInstance_Protocol_Bgp_Neighbor_Queues{}
	return t.Queues
}

// GetOrCreateRouteReflector retrieves the value of the RouteReflector field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetOrCreateRouteReflector() *NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector {
	if t.RouteReflector != nil {
		return t.RouteReflector
	}
	t.RouteReflector = &NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector{}
	return t.RouteReflector
}

// GetOrCreateTimers retrieves the value of the Timers field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetOrCreateTimers() *NetworkInstance_Protocol_Bgp_Neighbor_Timers {
	if t.Timers != nil {
		return t.Timers
	}
	t.Timers = &NetworkInstance_Protocol_Bgp_Neighbor_Timers{}
	return t.Timers
}

// GetOrCreateTransport retrieves the value of the Transport field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetOrCreateTransport() *NetworkInstance_Protocol_Bgp_Neighbor_Transport {
	if t.Transport != nil {
		return t.Transport
	}
	t.Transport = &NetworkInstance_Protocol_Bgp_Neighbor_Transport{}
	return t.Transport
}

// GetOrCreateUseMultiplePaths retrieves the value of the UseMultiplePaths field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetOrCreateUseMultiplePaths() *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths {
	if t.UseMultiplePaths != nil {
		return t.UseMultiplePaths
	}
	t.UseMultiplePaths = &NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths{}
	return t.UseMultiplePaths
}

// GetApplyPolicy returns the value of the ApplyPolicy struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor. If the receiver or the field ApplyPolicy is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetApplyPolicy() *NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy {
	if t != nil && t.ApplyPolicy != nil {
		return t.ApplyPolicy
	}
	return nil
}

// GetAsPathOptions returns the value of the AsPathOptions struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor. If the receiver or the field AsPathOptions is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetAsPathOptions() *NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions {
	if t != nil && t.AsPathOptions != nil {
		return t.AsPathOptions
	}
	return nil
}

// GetEbgpMultihop returns the value of the EbgpMultihop struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor. If the receiver or the field EbgpMultihop is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetEbgpMultihop() *NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop {
	if t != nil && t.EbgpMultihop != nil {
		return t.EbgpMultihop
	}
	return nil
}

// GetEnableBfd returns the value of the EnableBfd struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor. If the receiver or the field EnableBfd is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetEnableBfd() *NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd {
	if t != nil && t.EnableBfd != nil {
		return t.EnableBfd
	}
	return nil
}

// GetErrorHandling returns the value of the ErrorHandling struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor. If the receiver or the field ErrorHandling is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetErrorHandling() *NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling {
	if t != nil && t.ErrorHandling != nil {
		return t.ErrorHandling
	}
	return nil
}

// GetGracefulRestart returns the value of the GracefulRestart struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor. If the receiver or the field GracefulRestart is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetGracefulRestart() *NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart {
	if t != nil && t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	return nil
}

// GetLoggingOptions returns the value of the LoggingOptions struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor. If the receiver or the field LoggingOptions is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetLoggingOptions() *NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions {
	if t != nil && t.LoggingOptions != nil {
		return t.LoggingOptions
	}
	return nil
}

// GetMessages returns the value of the Messages struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor. If the receiver or the field Messages is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetMessages() *NetworkInstance_Protocol_Bgp_Neighbor_Messages {
	if t != nil && t.Messages != nil {
		return t.Messages
	}
	return nil
}

// GetQueues returns the value of the Queues struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor. If the receiver or the field Queues is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetQueues() *NetworkInstance_Protocol_Bgp_Neighbor_Queues {
	if t != nil && t.Queues != nil {
		return t.Queues
	}
	return nil
}

// GetRouteReflector returns the value of the RouteReflector struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor. If the receiver or the field RouteReflector is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetRouteReflector() *NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector {
	if t != nil && t.RouteReflector != nil {
		return t.RouteReflector
	}
	return nil
}

// GetTimers returns the value of the Timers struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor. If the receiver or the field Timers is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetTimers() *NetworkInstance_Protocol_Bgp_Neighbor_Timers {
	if t != nil && t.Timers != nil {
		return t.Timers
	}
	return nil
}

// GetTransport returns the value of the Transport struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor. If the receiver or the field Transport is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetTransport() *NetworkInstance_Protocol_Bgp_Neighbor_Transport {
	if t != nil && t.Transport != nil {
		return t.Transport
	}
	return nil
}

// GetUseMultiplePaths returns the value of the UseMultiplePaths struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor. If the receiver or the field UseMultiplePaths is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetUseMultiplePaths() *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths {
	if t != nil && t.UseMultiplePaths != nil {
		return t.UseMultiplePaths
	}
	return nil
}

// GetAuthPassword retrieves the value of the leaf AuthPassword from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthPassword is set, it can
// safely use t.GetAuthPassword() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthPassword == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetAuthPassword() string {
	if t == nil || t.AuthPassword == nil {
		return ""
	}
	return *t.AuthPassword
}

// GetDescription retrieves the value of the leaf Description from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetDynamicallyConfigured retrieves the value of the leaf DynamicallyConfigured from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DynamicallyConfigured is set, it can
// safely use t.GetDynamicallyConfigured() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DynamicallyConfigured == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetDynamicallyConfigured() bool {
	if t == nil || t.DynamicallyConfigured == nil {
		return false
	}
	return *t.DynamicallyConfigured
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return true
	}
	return *t.Enabled
}

// GetEstablishedTransitions retrieves the value of the leaf EstablishedTransitions from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EstablishedTransitions is set, it can
// safely use t.GetEstablishedTransitions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EstablishedTransitions == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetEstablishedTransitions() uint64 {
	if t == nil || t.EstablishedTransitions == nil {
		return 0
	}
	return *t.EstablishedTransitions
}

// GetLastEstablished retrieves the value of the leaf LastEstablished from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastEstablished is set, it can
// safely use t.GetLastEstablished() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastEstablished == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetLastEstablished() uint64 {
	if t == nil || t.LastEstablished == nil {
		return 0
	}
	return *t.LastEstablished
}

// GetLastPrefixLimitExceeded retrieves the value of the leaf LastPrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastPrefixLimitExceeded is set, it can
// safely use t.GetLastPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastPrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetLastPrefixLimitExceeded() uint64 {
	if t == nil || t.LastPrefixLimitExceeded == nil {
		return 0
	}
	return *t.LastPrefixLimitExceeded
}

// GetLocalAs retrieves the value of the leaf LocalAs from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalAs is set, it can
// safely use t.GetLocalAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalAs == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetLocalAs() uint32 {
	if t == nil || t.LocalAs == nil {
		return 0
	}
	return *t.LocalAs
}

// GetNeighborAddress retrieves the value of the leaf NeighborAddress from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborAddress is set, it can
// safely use t.GetNeighborAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetNeighborAddress() string {
	if t == nil || t.NeighborAddress == nil {
		return ""
	}
	return *t.NeighborAddress
}

// GetNeighborPort retrieves the value of the leaf NeighborPort from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborPort is set, it can
// safely use t.GetNeighborPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborPort == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetNeighborPort() uint16 {
	if t == nil || t.NeighborPort == nil {
		return 179
	}
	return *t.NeighborPort
}

// GetPeerAs retrieves the value of the leaf PeerAs from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerAs is set, it can
// safely use t.GetPeerAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerAs == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetPeerAs() uint32 {
	if t == nil || t.PeerAs == nil {
		return 0
	}
	return *t.PeerAs
}

// GetPeerGroup retrieves the value of the leaf PeerGroup from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerGroup is set, it can
// safely use t.GetPeerGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetPeerGroup() string {
	if t == nil || t.PeerGroup == nil {
		return ""
	}
	return *t.PeerGroup
}

// GetPeerType retrieves the value of the leaf PeerType from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerType is set, it can
// safely use t.GetPeerType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetPeerType() E_BgpTypes_PeerType {
	if t == nil || t.PeerType == 0 {
		return 0
	}
	return t.PeerType
}

// GetRemovePrivateAs retrieves the value of the leaf RemovePrivateAs from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemovePrivateAs is set, it can
// safely use t.GetRemovePrivateAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemovePrivateAs == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetRemovePrivateAs() E_BgpTypes_RemovePrivateAsOption {
	if t == nil || t.RemovePrivateAs == 0 {
		return 0
	}
	return t.RemovePrivateAs
}

// GetRouteFlapDamping retrieves the value of the leaf RouteFlapDamping from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouteFlapDamping is set, it can
// safely use t.GetRouteFlapDamping() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouteFlapDamping == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetRouteFlapDamping() bool {
	if t == nil || t.RouteFlapDamping == nil {
		return false
	}
	return *t.RouteFlapDamping
}

// GetSendCommunity retrieves the value of the leaf SendCommunity from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SendCommunity is set, it can
// safely use t.GetSendCommunity() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SendCommunity == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetSendCommunity() E_BgpTypes_CommunityType {
	if t == nil || t.SendCommunity == 0 {
		return BgpTypes_CommunityType_NONE
	}
	return t.SendCommunity
}

// GetSendCommunityType retrieves the value of the leaf SendCommunityType from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SendCommunityType is set, it can
// safely use t.GetSendCommunityType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SendCommunityType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetSendCommunityType() []E_BgpTypes_CommunityType {
	if t == nil || t.SendCommunityType == nil {
		return nil
	}
	return t.SendCommunityType
}

// GetSessionState retrieves the value of the leaf SessionState from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SessionState is set, it can
// safely use t.GetSessionState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SessionState == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetSessionState() E_Bgp_Neighbor_SessionState {
	if t == nil || t.SessionState == 0 {
		return 0
	}
	return t.SessionState
}

// GetSupportedCapabilities retrieves the value of the leaf SupportedCapabilities from the NetworkInstance_Protocol_Bgp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SupportedCapabilities is set, it can
// safely use t.GetSupportedCapabilities() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SupportedCapabilities == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) GetSupportedCapabilities() []E_BgpTypes_BGP_CAPABILITY {
	if t == nil || t.SupportedCapabilities == nil {
		return nil
	}
	return t.SupportedCapabilities
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DynamicallyConfigured == nil {
		var v bool = false
		t.DynamicallyConfigured = &v
	}
	if t.Enabled == nil {
		var v bool = true
		t.Enabled = &v
	}
	if t.NeighborPort == nil {
		var v uint16 = 179
		t.NeighborPort = &v
	}
	if t.RouteFlapDamping == nil {
		var v bool = false
		t.RouteFlapDamping = &v
	}
	if t.SendCommunity == 0 {
		t.SendCommunity = BgpTypes_CommunityType_NONE
	}
	t.ApplyPolicy.PopulateDefaults()
	t.AsPathOptions.PopulateDefaults()
	t.EbgpMultihop.PopulateDefaults()
	t.EnableBfd.PopulateDefaults()
	t.ErrorHandling.PopulateDefaults()
	t.GracefulRestart.PopulateDefaults()
	t.LoggingOptions.PopulateDefaults()
	t.Messages.PopulateDefaults()
	t.Queues.PopulateDefaults()
	t.RouteReflector.PopulateDefaults()
	t.Timers.PopulateDefaults()
	t.Transport.PopulateDefaults()
	t.UseMultiplePaths.PopulateDefaults()
	for _, e := range t.AfiSafi {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Neighbor struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.NeighborAddress == nil {
		return nil, fmt.Errorf("nil value for key NeighborAddress")
	}

	return map[string]interface{}{
		"neighbor-address": *t.NeighborAddress,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor.
func (*NetworkInstance_Protocol_Bgp_Neighbor) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi struct {
	ΛMetadata           []ygot.Annotation                                                 `path:"@" ygotAnnotation:"true"`
	Active              *bool                                                             `path:"state/active" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛActive             []ygot.Annotation                                                 `path:"state/@active" ygotAnnotation:"true"`
	AddPaths            *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths           `path:"add-paths" module:"openconfig-network-instance"`
	ΛAddPaths           []ygot.Annotation                                                 `path:"@add-paths" ygotAnnotation:"true"`
	AfiSafiName         E_BgpTypes_AFI_SAFI_TYPE                                          `path:"config/afi-safi-name|afi-safi-name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAfiSafiName        []ygot.Annotation                                                 `path:"config/@afi-safi-name|@afi-safi-name" ygotAnnotation:"true"`
	ApplyPolicy         *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy        `path:"apply-policy" module:"openconfig-network-instance"`
	ΛApplyPolicy        []ygot.Annotation                                                 `path:"@apply-policy" ygotAnnotation:"true"`
	Enabled             *bool                                                             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled            []ygot.Annotation                                                 `path:"config/@enabled" ygotAnnotation:"true"`
	GracefulRestart     *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart    `path:"graceful-restart" module:"openconfig-network-instance"`
	ΛGracefulRestart    []ygot.Annotation                                                 `path:"@graceful-restart" ygotAnnotation:"true"`
	Ipv4LabeledUnicast  *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast `path:"ipv4-labeled-unicast" module:"openconfig-network-instance"`
	ΛIpv4LabeledUnicast []ygot.Annotation                                                 `path:"@ipv4-labeled-unicast" ygotAnnotation:"true"`
	Ipv4Unicast         *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast        `path:"ipv4-unicast" module:"openconfig-network-instance"`
	ΛIpv4Unicast        []ygot.Annotation                                                 `path:"@ipv4-unicast" ygotAnnotation:"true"`
	Ipv6LabeledUnicast  *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast `path:"ipv6-labeled-unicast" module:"openconfig-network-instance"`
	ΛIpv6LabeledUnicast []ygot.Annotation                                                 `path:"@ipv6-labeled-unicast" ygotAnnotation:"true"`
	Ipv6Unicast         *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast        `path:"ipv6-unicast" module:"openconfig-network-instance"`
	ΛIpv6Unicast        []ygot.Annotation                                                 `path:"@ipv6-unicast" ygotAnnotation:"true"`
	L2VpnEvpn           *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn          `path:"l2vpn-evpn" module:"openconfig-network-instance"`
	ΛL2VpnEvpn          []ygot.Annotation                                                 `path:"@l2vpn-evpn" ygotAnnotation:"true"`
	L2VpnVpls           *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls          `path:"l2vpn-vpls" module:"openconfig-network-instance"`
	ΛL2VpnVpls          []ygot.Annotation                                                 `path:"@l2vpn-vpls" ygotAnnotation:"true"`
	L3VpnIpv4Multicast  *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast `path:"l3vpn-ipv4-multicast" module:"openconfig-network-instance"`
	ΛL3VpnIpv4Multicast []ygot.Annotation                                                 `path:"@l3vpn-ipv4-multicast" ygotAnnotation:"true"`
	L3VpnIpv4Unicast    *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast   `path:"l3vpn-ipv4-unicast" module:"openconfig-network-instance"`
	ΛL3VpnIpv4Unicast   []ygot.Annotation                                                 `path:"@l3vpn-ipv4-unicast" ygotAnnotation:"true"`
	L3VpnIpv6Multicast  *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast `path:"l3vpn-ipv6-multicast" module:"openconfig-network-instance"`
	ΛL3VpnIpv6Multicast []ygot.Annotation                                                 `path:"@l3vpn-ipv6-multicast" ygotAnnotation:"true"`
	L3VpnIpv6Unicast    *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast   `path:"l3vpn-ipv6-unicast" module:"openconfig-network-instance"`
	ΛL3VpnIpv6Unicast   []ygot.Annotation                                                 `path:"@l3vpn-ipv6-unicast" ygotAnnotation:"true"`
	Prefixes            *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes           `path:"state/prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixes           []ygot.Annotation                                                 `path:"state/@prefixes" ygotAnnotation:"true"`
	SendCommunityType   []E_BgpTypes_CommunityType                                        `path:"config/send-community-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSendCommunityType  []ygot.Annotation                                                 `path:"config/@send-community-type" ygotAnnotation:"true"`
	SrtePolicyIpv4      *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4     `path:"srte-policy-ipv4" module:"openconfig-network-instance"`
	ΛSrtePolicyIpv4     []ygot.Annotation                                                 `path:"@srte-policy-ipv4" ygotAnnotation:"true"`
	SrtePolicyIpv6      *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6     `path:"srte-policy-ipv6" module:"openconfig-network-instance"`
	ΛSrtePolicyIpv6     []ygot.Annotation                                                 `path:"@srte-policy-ipv6" ygotAnnotation:"true"`
	UseMultiplePaths    *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths   `path:"use-multiple-paths" module:"openconfig-network-instance"`
	ΛUseMultiplePaths   []ygot.Annotation                                                 `path:"@use-multiple-paths" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) IsYANGGoStruct() {}

// GetOrCreateAddPaths retrieves the value of the AddPaths field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetOrCreateAddPaths() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths {
	if t.AddPaths != nil {
		return t.AddPaths
	}
	t.AddPaths = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths{}
	return t.AddPaths
}

// GetOrCreateApplyPolicy retrieves the value of the ApplyPolicy field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetOrCreateApplyPolicy() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy {
	if t.ApplyPolicy != nil {
		return t.ApplyPolicy
	}
	t.ApplyPolicy = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy{}
	return t.ApplyPolicy
}

// GetOrCreateGracefulRestart retrieves the value of the GracefulRestart field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetOrCreateGracefulRestart() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart {
	if t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	t.GracefulRestart = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart{}
	return t.GracefulRestart
}

// GetOrCreateIpv4LabeledUnicast retrieves the value of the Ipv4LabeledUnicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetOrCreateIpv4LabeledUnicast() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast {
	if t.Ipv4LabeledUnicast != nil {
		return t.Ipv4LabeledUnicast
	}
	t.Ipv4LabeledUnicast = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast{}
	return t.Ipv4LabeledUnicast
}

// GetOrCreateIpv4Unicast retrieves the value of the Ipv4Unicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetOrCreateIpv4Unicast() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast {
	if t.Ipv4Unicast != nil {
		return t.Ipv4Unicast
	}
	t.Ipv4Unicast = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast{}
	return t.Ipv4Unicast
}

// GetOrCreateIpv6LabeledUnicast retrieves the value of the Ipv6LabeledUnicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetOrCreateIpv6LabeledUnicast() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast {
	if t.Ipv6LabeledUnicast != nil {
		return t.Ipv6LabeledUnicast
	}
	t.Ipv6LabeledUnicast = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast{}
	return t.Ipv6LabeledUnicast
}

// GetOrCreateIpv6Unicast retrieves the value of the Ipv6Unicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetOrCreateIpv6Unicast() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast {
	if t.Ipv6Unicast != nil {
		return t.Ipv6Unicast
	}
	t.Ipv6Unicast = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast{}
	return t.Ipv6Unicast
}

// GetOrCreateL2VpnEvpn retrieves the value of the L2VpnEvpn field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetOrCreateL2VpnEvpn() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn {
	if t.L2VpnEvpn != nil {
		return t.L2VpnEvpn
	}
	t.L2VpnEvpn = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn{}
	return t.L2VpnEvpn
}

// GetOrCreateL2VpnVpls retrieves the value of the L2VpnVpls field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetOrCreateL2VpnVpls() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls {
	if t.L2VpnVpls != nil {
		return t.L2VpnVpls
	}
	t.L2VpnVpls = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls{}
	return t.L2VpnVpls
}

// GetOrCreateL3VpnIpv4Multicast retrieves the value of the L3VpnIpv4Multicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetOrCreateL3VpnIpv4Multicast() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast {
	if t.L3VpnIpv4Multicast != nil {
		return t.L3VpnIpv4Multicast
	}
	t.L3VpnIpv4Multicast = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast{}
	return t.L3VpnIpv4Multicast
}

// GetOrCreateL3VpnIpv4Unicast retrieves the value of the L3VpnIpv4Unicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetOrCreateL3VpnIpv4Unicast() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast {
	if t.L3VpnIpv4Unicast != nil {
		return t.L3VpnIpv4Unicast
	}
	t.L3VpnIpv4Unicast = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast{}
	return t.L3VpnIpv4Unicast
}

// GetOrCreateL3VpnIpv6Multicast retrieves the value of the L3VpnIpv6Multicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetOrCreateL3VpnIpv6Multicast() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast {
	if t.L3VpnIpv6Multicast != nil {
		return t.L3VpnIpv6Multicast
	}
	t.L3VpnIpv6Multicast = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast{}
	return t.L3VpnIpv6Multicast
}

// GetOrCreateL3VpnIpv6Unicast retrieves the value of the L3VpnIpv6Unicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetOrCreateL3VpnIpv6Unicast() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast {
	if t.L3VpnIpv6Unicast != nil {
		return t.L3VpnIpv6Unicast
	}
	t.L3VpnIpv6Unicast = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast{}
	return t.L3VpnIpv6Unicast
}

// GetOrCreatePrefixes retrieves the value of the Prefixes field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetOrCreatePrefixes() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes {
	if t.Prefixes != nil {
		return t.Prefixes
	}
	t.Prefixes = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes{}
	return t.Prefixes
}

// GetOrCreateSrtePolicyIpv4 retrieves the value of the SrtePolicyIpv4 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetOrCreateSrtePolicyIpv4() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4 {
	if t.SrtePolicyIpv4 != nil {
		return t.SrtePolicyIpv4
	}
	t.SrtePolicyIpv4 = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4{}
	return t.SrtePolicyIpv4
}

// GetOrCreateSrtePolicyIpv6 retrieves the value of the SrtePolicyIpv6 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetOrCreateSrtePolicyIpv6() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6 {
	if t.SrtePolicyIpv6 != nil {
		return t.SrtePolicyIpv6
	}
	t.SrtePolicyIpv6 = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6{}
	return t.SrtePolicyIpv6
}

// GetOrCreateUseMultiplePaths retrieves the value of the UseMultiplePaths field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetOrCreateUseMultiplePaths() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths {
	if t.UseMultiplePaths != nil {
		return t.UseMultiplePaths
	}
	t.UseMultiplePaths = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths{}
	return t.UseMultiplePaths
}

// GetAddPaths returns the value of the AddPaths struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi. If the receiver or the field AddPaths is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetAddPaths() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths {
	if t != nil && t.AddPaths != nil {
		return t.AddPaths
	}
	return nil
}

// GetApplyPolicy returns the value of the ApplyPolicy struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi. If the receiver or the field ApplyPolicy is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetApplyPolicy() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy {
	if t != nil && t.ApplyPolicy != nil {
		return t.ApplyPolicy
	}
	return nil
}

// GetGracefulRestart returns the value of the GracefulRestart struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi. If the receiver or the field GracefulRestart is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetGracefulRestart() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart {
	if t != nil && t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	return nil
}

// GetIpv4LabeledUnicast returns the value of the Ipv4LabeledUnicast struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi. If the receiver or the field Ipv4LabeledUnicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetIpv4LabeledUnicast() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast {
	if t != nil && t.Ipv4LabeledUnicast != nil {
		return t.Ipv4LabeledUnicast
	}
	return nil
}

// GetIpv4Unicast returns the value of the Ipv4Unicast struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi. If the receiver or the field Ipv4Unicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetIpv4Unicast() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast {
	if t != nil && t.Ipv4Unicast != nil {
		return t.Ipv4Unicast
	}
	return nil
}

// GetIpv6LabeledUnicast returns the value of the Ipv6LabeledUnicast struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi. If the receiver or the field Ipv6LabeledUnicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetIpv6LabeledUnicast() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast {
	if t != nil && t.Ipv6LabeledUnicast != nil {
		return t.Ipv6LabeledUnicast
	}
	return nil
}

// GetIpv6Unicast returns the value of the Ipv6Unicast struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi. If the receiver or the field Ipv6Unicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetIpv6Unicast() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast {
	if t != nil && t.Ipv6Unicast != nil {
		return t.Ipv6Unicast
	}
	return nil
}

// GetL2VpnEvpn returns the value of the L2VpnEvpn struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi. If the receiver or the field L2VpnEvpn is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetL2VpnEvpn() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn {
	if t != nil && t.L2VpnEvpn != nil {
		return t.L2VpnEvpn
	}
	return nil
}

// GetL2VpnVpls returns the value of the L2VpnVpls struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi. If the receiver or the field L2VpnVpls is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetL2VpnVpls() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls {
	if t != nil && t.L2VpnVpls != nil {
		return t.L2VpnVpls
	}
	return nil
}

// GetL3VpnIpv4Multicast returns the value of the L3VpnIpv4Multicast struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi. If the receiver or the field L3VpnIpv4Multicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetL3VpnIpv4Multicast() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast {
	if t != nil && t.L3VpnIpv4Multicast != nil {
		return t.L3VpnIpv4Multicast
	}
	return nil
}

// GetL3VpnIpv4Unicast returns the value of the L3VpnIpv4Unicast struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi. If the receiver or the field L3VpnIpv4Unicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetL3VpnIpv4Unicast() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast {
	if t != nil && t.L3VpnIpv4Unicast != nil {
		return t.L3VpnIpv4Unicast
	}
	return nil
}

// GetL3VpnIpv6Multicast returns the value of the L3VpnIpv6Multicast struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi. If the receiver or the field L3VpnIpv6Multicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetL3VpnIpv6Multicast() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast {
	if t != nil && t.L3VpnIpv6Multicast != nil {
		return t.L3VpnIpv6Multicast
	}
	return nil
}

// GetL3VpnIpv6Unicast returns the value of the L3VpnIpv6Unicast struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi. If the receiver or the field L3VpnIpv6Unicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetL3VpnIpv6Unicast() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast {
	if t != nil && t.L3VpnIpv6Unicast != nil {
		return t.L3VpnIpv6Unicast
	}
	return nil
}

// GetPrefixes returns the value of the Prefixes struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi. If the receiver or the field Prefixes is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetPrefixes() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes {
	if t != nil && t.Prefixes != nil {
		return t.Prefixes
	}
	return nil
}

// GetSrtePolicyIpv4 returns the value of the SrtePolicyIpv4 struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi. If the receiver or the field SrtePolicyIpv4 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetSrtePolicyIpv4() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4 {
	if t != nil && t.SrtePolicyIpv4 != nil {
		return t.SrtePolicyIpv4
	}
	return nil
}

// GetSrtePolicyIpv6 returns the value of the SrtePolicyIpv6 struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi. If the receiver or the field SrtePolicyIpv6 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetSrtePolicyIpv6() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6 {
	if t != nil && t.SrtePolicyIpv6 != nil {
		return t.SrtePolicyIpv6
	}
	return nil
}

// GetUseMultiplePaths returns the value of the UseMultiplePaths struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi. If the receiver or the field UseMultiplePaths is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetUseMultiplePaths() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths {
	if t != nil && t.UseMultiplePaths != nil {
		return t.UseMultiplePaths
	}
	return nil
}

// GetActive retrieves the value of the leaf Active from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Active is set, it can
// safely use t.GetActive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Active == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetActive() bool {
	if t == nil || t.Active == nil {
		return false
	}
	return *t.Active
}

// GetAfiSafiName retrieves the value of the leaf AfiSafiName from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AfiSafiName is set, it can
// safely use t.GetAfiSafiName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AfiSafiName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetAfiSafiName() E_BgpTypes_AFI_SAFI_TYPE {
	if t == nil || t.AfiSafiName == 0 {
		return 0
	}
	return t.AfiSafiName
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetSendCommunityType retrieves the value of the leaf SendCommunityType from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SendCommunityType is set, it can
// safely use t.GetSendCommunityType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SendCommunityType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) GetSendCommunityType() []E_BgpTypes_CommunityType {
	if t == nil || t.SendCommunityType == nil {
		return nil
	}
	return t.SendCommunityType
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AddPaths.PopulateDefaults()
	t.ApplyPolicy.PopulateDefaults()
	t.GracefulRestart.PopulateDefaults()
	t.Ipv4LabeledUnicast.PopulateDefaults()
	t.Ipv4Unicast.PopulateDefaults()
	t.Ipv6LabeledUnicast.PopulateDefaults()
	t.Ipv6Unicast.PopulateDefaults()
	t.L2VpnEvpn.PopulateDefaults()
	t.L2VpnVpls.PopulateDefaults()
	t.L3VpnIpv4Multicast.PopulateDefaults()
	t.L3VpnIpv4Unicast.PopulateDefaults()
	t.L3VpnIpv6Multicast.PopulateDefaults()
	t.L3VpnIpv6Unicast.PopulateDefaults()
	t.Prefixes.PopulateDefaults()
	t.SrtePolicyIpv4.PopulateDefaults()
	t.SrtePolicyIpv6.PopulateDefaults()
	t.UseMultiplePaths.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"afi-safi-name": t.AfiSafiName,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/add-paths YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths struct {
	ΛMetadata             []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	EligiblePrefixPolicy  *string           `path:"config/eligible-prefix-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEligiblePrefixPolicy []ygot.Annotation `path:"config/@eligible-prefix-policy" ygotAnnotation:"true"`
	Receive               *bool             `path:"config/receive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReceive              []ygot.Annotation `path:"config/@receive" ygotAnnotation:"true"`
	Send                  *bool             `path:"config/send" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSend                 []ygot.Annotation `path:"config/@send" ygotAnnotation:"true"`
	SendMax               *uint8            `path:"config/send-max" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSendMax              []ygot.Annotation `path:"config/@send-max" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths) IsYANGGoStruct() {}

// GetEligiblePrefixPolicy retrieves the value of the leaf EligiblePrefixPolicy from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EligiblePrefixPolicy is set, it can
// safely use t.GetEligiblePrefixPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EligiblePrefixPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths) GetEligiblePrefixPolicy() string {
	if t == nil || t.EligiblePrefixPolicy == nil {
		return ""
	}
	return *t.EligiblePrefixPolicy
}

// GetReceive retrieves the value of the leaf Receive from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Receive is set, it can
// safely use t.GetReceive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Receive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths) GetReceive() bool {
	if t == nil || t.Receive == nil {
		return false
	}
	return *t.Receive
}

// GetSend retrieves the value of the leaf Send from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Send is set, it can
// safely use t.GetSend() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Send == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths) GetSend() bool {
	if t == nil || t.Send == nil {
		return false
	}
	return *t.Send
}

// GetSendMax retrieves the value of the leaf SendMax from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SendMax is set, it can
// safely use t.GetSendMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SendMax == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths) GetSendMax() uint8 {
	if t == nil || t.SendMax == nil {
		return 0
	}
	return *t.SendMax
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Receive == nil {
		var v bool = false
		t.Receive = &v
	}
	if t.Send == nil {
		var v bool = false
		t.Send = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_AddPaths) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/apply-policy YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy struct {
	ΛMetadata            []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	DefaultExportPolicy  E_RoutingPolicy_DefaultPolicyType `path:"config/default-export-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultExportPolicy []ygot.Annotation                 `path:"config/@default-export-policy" ygotAnnotation:"true"`
	DefaultImportPolicy  E_RoutingPolicy_DefaultPolicyType `path:"config/default-import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultImportPolicy []ygot.Annotation                 `path:"config/@default-import-policy" ygotAnnotation:"true"`
	ExportPolicy         []string                          `path:"config/export-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExportPolicy        []ygot.Annotation                 `path:"config/@export-policy" ygotAnnotation:"true"`
	ImportPolicy         []string                          `path:"config/import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛImportPolicy        []ygot.Annotation                 `path:"config/@import-policy" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy) IsYANGGoStruct() {}

// GetDefaultExportPolicy retrieves the value of the leaf DefaultExportPolicy from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultExportPolicy is set, it can
// safely use t.GetDefaultExportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultExportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy) GetDefaultExportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultExportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultExportPolicy
}

// GetDefaultImportPolicy retrieves the value of the leaf DefaultImportPolicy from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultImportPolicy is set, it can
// safely use t.GetDefaultImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy) GetDefaultImportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultImportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultImportPolicy
}

// GetExportPolicy retrieves the value of the leaf ExportPolicy from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExportPolicy is set, it can
// safely use t.GetExportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy) GetExportPolicy() []string {
	if t == nil || t.ExportPolicy == nil {
		return nil
	}
	return t.ExportPolicy
}

// GetImportPolicy retrieves the value of the leaf ImportPolicy from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ImportPolicy is set, it can
// safely use t.GetImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy) GetImportPolicy() []string {
	if t == nil || t.ImportPolicy == nil {
		return nil
	}
	return t.ImportPolicy
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DefaultExportPolicy == 0 {
		t.DefaultExportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	if t.DefaultImportPolicy == 0 {
		t.DefaultImportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_ApplyPolicy) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/graceful-restart YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Advertised  *bool             `path:"state/advertised" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdvertised []ygot.Annotation `path:"state/@advertised" ygotAnnotation:"true"`
	Enabled     *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled    []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
	Received    *bool             `path:"state/received" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReceived   []ygot.Annotation `path:"state/@received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart) IsYANGGoStruct() {}

// GetAdvertised retrieves the value of the leaf Advertised from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Advertised is set, it can
// safely use t.GetAdvertised() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Advertised == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart) GetAdvertised() bool {
	if t == nil || t.Advertised == nil {
		return false
	}
	return *t.Advertised
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetReceived retrieves the value of the leaf Received from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Received is set, it can
// safely use t.GetReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Received == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart) GetReceived() bool {
	if t == nil || t.Received == nil {
		return false
	}
	return *t.Received
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_GracefulRestart) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast struct {
	ΛMetadata            []ygot.Annotation                                                                     `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                     `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                     `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast struct {
	ΛMetadata                []ygot.Annotation                                                              `path:"@" ygotAnnotation:"true"`
	ExtendedNextHopEncoding  *bool                                                                          `path:"config/extended-next-hop-encoding" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtendedNextHopEncoding []ygot.Annotation                                                              `path:"config/@extended-next-hop-encoding" ygotAnnotation:"true"`
	PrefixLimit              *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit             []ygot.Annotation                                                              `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived      *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived     []ygot.Annotation                                                              `path:"@prefix-limit-received" ygotAnnotation:"true"`
	SendDefaultRoute         *bool                                                                          `path:"config/send-default-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSendDefaultRoute        []ygot.Annotation                                                              `path:"config/@send-default-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// GetExtendedNextHopEncoding retrieves the value of the leaf ExtendedNextHopEncoding from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtendedNextHopEncoding is set, it can
// safely use t.GetExtendedNextHopEncoding() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtendedNextHopEncoding == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast) GetExtendedNextHopEncoding() bool {
	if t == nil || t.ExtendedNextHopEncoding == nil {
		return false
	}
	return *t.ExtendedNextHopEncoding
}

// GetSendDefaultRoute retrieves the value of the leaf SendDefaultRoute from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SendDefaultRoute is set, it can
// safely use t.GetSendDefaultRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SendDefaultRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast) GetSendDefaultRoute() bool {
	if t == nil || t.SendDefaultRoute == nil {
		return false
	}
	return *t.SendDefaultRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.ExtendedNextHopEncoding == nil {
		var v bool = false
		t.ExtendedNextHopEncoding = &v
	}
	if t.SendDefaultRoute == nil {
		var v bool = false
		t.SendDefaultRoute = &v
	}
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv4Unicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast struct {
	ΛMetadata            []ygot.Annotation                                                                     `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                     `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                     `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast struct {
	ΛMetadata            []ygot.Annotation                                                              `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                              `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                              `path:"@prefix-limit-received" ygotAnnotation:"true"`
	SendDefaultRoute     *bool                                                                          `path:"config/send-default-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSendDefaultRoute    []ygot.Annotation                                                              `path:"config/@send-default-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// GetSendDefaultRoute retrieves the value of the leaf SendDefaultRoute from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SendDefaultRoute is set, it can
// safely use t.GetSendDefaultRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SendDefaultRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast) GetSendDefaultRoute() bool {
	if t == nil || t.SendDefaultRoute == nil {
		return false
	}
	return *t.SendDefaultRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.SendDefaultRoute == nil {
		var v bool = false
		t.SendDefaultRoute = &v
	}
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Ipv6Unicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l2vpn-evpn YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn struct {
	ΛMetadata            []ygot.Annotation                                                            `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                            `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                            `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l2vpn-evpn/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l2vpn-evpn/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnEvpn_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l2vpn-vpls YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls struct {
	ΛMetadata            []ygot.Annotation                                                            `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                            `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                            `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l2vpn-vpls/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l2vpn-vpls/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L2VpnVpls_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-multicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast struct {
	ΛMetadata            []ygot.Annotation                                                                     `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                     `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                     `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-multicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-multicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast struct {
	ΛMetadata            []ygot.Annotation                                                                   `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                   `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                   `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-multicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast struct {
	ΛMetadata            []ygot.Annotation                                                                     `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                     `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                     `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-multicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-multicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast struct {
	ΛMetadata            []ygot.Annotation                                                                   `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                   `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                   `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/state/prefixes YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Installed          *uint32           `path:"installed" module:"openconfig-network-instance"`
	ΛInstalled         []ygot.Annotation `path:"@installed" ygotAnnotation:"true"`
	Received           *uint32           `path:"received" module:"openconfig-network-instance"`
	ΛReceived          []ygot.Annotation `path:"@received" ygotAnnotation:"true"`
	ReceivedPrePolicy  *uint32           `path:"received-pre-policy" module:"openconfig-network-instance"`
	ΛReceivedPrePolicy []ygot.Annotation `path:"@received-pre-policy" ygotAnnotation:"true"`
	Sent               *uint32           `path:"sent" module:"openconfig-network-instance"`
	ΛSent              []ygot.Annotation `path:"@sent" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes) IsYANGGoStruct() {}

// GetInstalled retrieves the value of the leaf Installed from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Installed is set, it can
// safely use t.GetInstalled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Installed == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes) GetInstalled() uint32 {
	if t == nil || t.Installed == nil {
		return 0
	}
	return *t.Installed
}

// GetReceived retrieves the value of the leaf Received from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Received is set, it can
// safely use t.GetReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Received == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes) GetReceived() uint32 {
	if t == nil || t.Received == nil {
		return 0
	}
	return *t.Received
}

// GetReceivedPrePolicy retrieves the value of the leaf ReceivedPrePolicy from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReceivedPrePolicy is set, it can
// safely use t.GetReceivedPrePolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReceivedPrePolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes) GetReceivedPrePolicy() uint32 {
	if t == nil || t.ReceivedPrePolicy == nil {
		return 0
	}
	return *t.ReceivedPrePolicy
}

// GetSent retrieves the value of the leaf Sent from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Sent is set, it can
// safely use t.GetSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Sent == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes) GetSent() uint32 {
	if t == nil || t.Sent == nil {
		return 0
	}
	return *t.Sent
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_Prefixes) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4 represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/srte-policy-ipv4 YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4 struct {
	ΛMetadata            []ygot.Annotation                                                                 `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                 `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                 `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/srte-policy-ipv4/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/srte-policy-ipv4/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6 represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/srte-policy-ipv6 YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6 struct {
	ΛMetadata            []ygot.Annotation                                                                 `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                 `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                 `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/srte-policy-ipv6/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/srte-policy-ipv6/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/use-multiple-paths YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths struct {
	ΛMetadata []ygot.Annotation                                                    `path:"@" ygotAnnotation:"true"`
	Ebgp      *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp `path:"ebgp" module:"openconfig-network-instance"`
	ΛEbgp     []ygot.Annotation                                                    `path:"@ebgp" ygotAnnotation:"true"`
	Enabled   *bool                                                                `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation                                                    `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths) IsYANGGoStruct() {}

// GetOrCreateEbgp retrieves the value of the Ebgp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths) GetOrCreateEbgp() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp {
	if t.Ebgp != nil {
		return t.Ebgp
	}
	t.Ebgp = &NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp{}
	return t.Ebgp
}

// GetEbgp returns the value of the Ebgp struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths. If the receiver or the field Ebgp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths) GetEbgp() *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp {
	if t != nil && t.Ebgp != nil {
		return t.Ebgp
	}
	return nil
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	t.Ebgp.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/use-multiple-paths/ebgp YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AllowMultipleAs  *bool             `path:"config/allow-multiple-as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAllowMultipleAs []ygot.Annotation `path:"config/@allow-multiple-as" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp) IsYANGGoStruct() {}

// GetAllowMultipleAs retrieves the value of the leaf AllowMultipleAs from the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AllowMultipleAs is set, it can
// safely use t.GetAllowMultipleAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AllowMultipleAs == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp) GetAllowMultipleAs() bool {
	if t == nil || t.AllowMultipleAs == nil {
		return false
	}
	return *t.AllowMultipleAs
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AllowMultipleAs == nil {
		var v bool = false
		t.AllowMultipleAs = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AfiSafi_UseMultiplePaths_Ebgp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/apply-policy YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy struct {
	ΛMetadata            []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	DefaultExportPolicy  E_RoutingPolicy_DefaultPolicyType `path:"config/default-export-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultExportPolicy []ygot.Annotation                 `path:"config/@default-export-policy" ygotAnnotation:"true"`
	DefaultImportPolicy  E_RoutingPolicy_DefaultPolicyType `path:"config/default-import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultImportPolicy []ygot.Annotation                 `path:"config/@default-import-policy" ygotAnnotation:"true"`
	ExportPolicy         []string                          `path:"config/export-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExportPolicy        []ygot.Annotation                 `path:"config/@export-policy" ygotAnnotation:"true"`
	ImportPolicy         []string                          `path:"config/import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛImportPolicy        []ygot.Annotation                 `path:"config/@import-policy" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy) IsYANGGoStruct() {}

// GetDefaultExportPolicy retrieves the value of the leaf DefaultExportPolicy from the NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultExportPolicy is set, it can
// safely use t.GetDefaultExportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultExportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy) GetDefaultExportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultExportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultExportPolicy
}

// GetDefaultImportPolicy retrieves the value of the leaf DefaultImportPolicy from the NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultImportPolicy is set, it can
// safely use t.GetDefaultImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy) GetDefaultImportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultImportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultImportPolicy
}

// GetExportPolicy retrieves the value of the leaf ExportPolicy from the NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExportPolicy is set, it can
// safely use t.GetExportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy) GetExportPolicy() []string {
	if t == nil || t.ExportPolicy == nil {
		return nil
	}
	return t.ExportPolicy
}

// GetImportPolicy retrieves the value of the leaf ImportPolicy from the NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ImportPolicy is set, it can
// safely use t.GetImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy) GetImportPolicy() []string {
	if t == nil || t.ImportPolicy == nil {
		return nil
	}
	return t.ImportPolicy
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DefaultExportPolicy == 0 {
		t.DefaultExportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	if t.DefaultImportPolicy == 0 {
		t.DefaultImportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy.
func (*NetworkInstance_Protocol_Bgp_Neighbor_ApplyPolicy) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/as-path-options YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AllowOwnAs           *uint8            `path:"config/allow-own-as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAllowOwnAs          []ygot.Annotation `path:"config/@allow-own-as" ygotAnnotation:"true"`
	DisablePeerAsFilter  *bool             `path:"config/disable-peer-as-filter" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDisablePeerAsFilter []ygot.Annotation `path:"config/@disable-peer-as-filter" ygotAnnotation:"true"`
	ReplacePeerAs        *bool             `path:"config/replace-peer-as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReplacePeerAs       []ygot.Annotation `path:"config/@replace-peer-as" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions) IsYANGGoStruct() {}

// GetAllowOwnAs retrieves the value of the leaf AllowOwnAs from the NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AllowOwnAs is set, it can
// safely use t.GetAllowOwnAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AllowOwnAs == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions) GetAllowOwnAs() uint8 {
	if t == nil || t.AllowOwnAs == nil {
		return 0
	}
	return *t.AllowOwnAs
}

// GetDisablePeerAsFilter retrieves the value of the leaf DisablePeerAsFilter from the NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DisablePeerAsFilter is set, it can
// safely use t.GetDisablePeerAsFilter() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DisablePeerAsFilter == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions) GetDisablePeerAsFilter() bool {
	if t == nil || t.DisablePeerAsFilter == nil {
		return false
	}
	return *t.DisablePeerAsFilter
}

// GetReplacePeerAs retrieves the value of the leaf ReplacePeerAs from the NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReplacePeerAs is set, it can
// safely use t.GetReplacePeerAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReplacePeerAs == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions) GetReplacePeerAs() bool {
	if t == nil || t.ReplacePeerAs == nil {
		return false
	}
	return *t.ReplacePeerAs
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AllowOwnAs == nil {
		var v uint8 = 0
		t.AllowOwnAs = &v
	}
	if t.DisablePeerAsFilter == nil {
		var v bool = false
		t.DisablePeerAsFilter = &v
	}
	if t.ReplacePeerAs == nil {
		var v bool = false
		t.ReplacePeerAs = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions.
func (*NetworkInstance_Protocol_Bgp_Neighbor_AsPathOptions) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/ebgp-multihop YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop struct {
	ΛMetadata    []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled      *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled     []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
	MultihopTtl  *uint8            `path:"config/multihop-ttl" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMultihopTtl []ygot.Annotation `path:"config/@multihop-ttl" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetMultihopTtl retrieves the value of the leaf MultihopTtl from the NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MultihopTtl is set, it can
// safely use t.GetMultihopTtl() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MultihopTtl == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop) GetMultihopTtl() uint8 {
	if t == nil || t.MultihopTtl == nil {
		return 0
	}
	return *t.MultihopTtl
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop.
func (*NetworkInstance_Protocol_Bgp_Neighbor_EbgpMultihop) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/enable-bfd YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd.
func (*NetworkInstance_Protocol_Bgp_Neighbor_EnableBfd) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/error-handling YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling struct {
	ΛMetadata                []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ErroneousUpdateMessages  *uint32           `path:"state/erroneous-update-messages" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛErroneousUpdateMessages []ygot.Annotation `path:"state/@erroneous-update-messages" ygotAnnotation:"true"`
	TreatAsWithdraw          *bool             `path:"config/treat-as-withdraw" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTreatAsWithdraw         []ygot.Annotation `path:"config/@treat-as-withdraw" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling) IsYANGGoStruct() {}

// GetErroneousUpdateMessages retrieves the value of the leaf ErroneousUpdateMessages from the NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ErroneousUpdateMessages is set, it can
// safely use t.GetErroneousUpdateMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ErroneousUpdateMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling) GetErroneousUpdateMessages() uint32 {
	if t == nil || t.ErroneousUpdateMessages == nil {
		return 0
	}
	return *t.ErroneousUpdateMessages
}

// GetTreatAsWithdraw retrieves the value of the leaf TreatAsWithdraw from the NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TreatAsWithdraw is set, it can
// safely use t.GetTreatAsWithdraw() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TreatAsWithdraw == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling) GetTreatAsWithdraw() bool {
	if t == nil || t.TreatAsWithdraw == nil {
		return false
	}
	return *t.TreatAsWithdraw
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.TreatAsWithdraw == nil {
		var v bool = false
		t.TreatAsWithdraw = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling.
func (*NetworkInstance_Protocol_Bgp_Neighbor_ErrorHandling) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/graceful-restart YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart struct {
	ΛMetadata        []ygot.Annotation      `path:"@" ygotAnnotation:"true"`
	Enabled          *bool                  `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled         []ygot.Annotation      `path:"config/@enabled" ygotAnnotation:"true"`
	HelperOnly       *bool                  `path:"config/helper-only" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelperOnly      []ygot.Annotation      `path:"config/@helper-only" ygotAnnotation:"true"`
	LocalRestarting  *bool                  `path:"state/local-restarting" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalRestarting []ygot.Annotation      `path:"state/@local-restarting" ygotAnnotation:"true"`
	Mode             E_GracefulRestart_Mode `path:"state/mode" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMode            []ygot.Annotation      `path:"state/@mode" ygotAnnotation:"true"`
	PeerRestartTime  *uint16                `path:"state/peer-restart-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPeerRestartTime []ygot.Annotation      `path:"state/@peer-restart-time" ygotAnnotation:"true"`
	PeerRestarting   *bool                  `path:"state/peer-restarting" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPeerRestarting  []ygot.Annotation      `path:"state/@peer-restarting" ygotAnnotation:"true"`
	RestartTime      *uint16                `path:"config/restart-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRestartTime     []ygot.Annotation      `path:"config/@restart-time" ygotAnnotation:"true"`
	StaleRoutesTime  *uint16                `path:"config/stale-routes-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛStaleRoutesTime []ygot.Annotation      `path:"config/@stale-routes-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetHelperOnly retrieves the value of the leaf HelperOnly from the NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelperOnly is set, it can
// safely use t.GetHelperOnly() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelperOnly == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart) GetHelperOnly() bool {
	if t == nil || t.HelperOnly == nil {
		return false
	}
	return *t.HelperOnly
}

// GetLocalRestarting retrieves the value of the leaf LocalRestarting from the NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalRestarting is set, it can
// safely use t.GetLocalRestarting() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalRestarting == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart) GetLocalRestarting() bool {
	if t == nil || t.LocalRestarting == nil {
		return false
	}
	return *t.LocalRestarting
}

// GetMode retrieves the value of the leaf Mode from the NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mode is set, it can
// safely use t.GetMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart) GetMode() E_GracefulRestart_Mode {
	if t == nil || t.Mode == 0 {
		return 0
	}
	return t.Mode
}

// GetPeerRestartTime retrieves the value of the leaf PeerRestartTime from the NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerRestartTime is set, it can
// safely use t.GetPeerRestartTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerRestartTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart) GetPeerRestartTime() uint16 {
	if t == nil || t.PeerRestartTime == nil {
		return 0
	}
	return *t.PeerRestartTime
}

// GetPeerRestarting retrieves the value of the leaf PeerRestarting from the NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerRestarting is set, it can
// safely use t.GetPeerRestarting() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerRestarting == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart) GetPeerRestarting() bool {
	if t == nil || t.PeerRestarting == nil {
		return false
	}
	return *t.PeerRestarting
}

// GetRestartTime retrieves the value of the leaf RestartTime from the NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RestartTime is set, it can
// safely use t.GetRestartTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RestartTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart) GetRestartTime() uint16 {
	if t == nil || t.RestartTime == nil {
		return 0
	}
	return *t.RestartTime
}

// GetStaleRoutesTime retrieves the value of the leaf StaleRoutesTime from the NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if StaleRoutesTime is set, it can
// safely use t.GetStaleRoutesTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.StaleRoutesTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart) GetStaleRoutesTime() uint16 {
	if t == nil || t.StaleRoutesTime == nil {
		return 0
	}
	return *t.StaleRoutesTime
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart.
func (*NetworkInstance_Protocol_Bgp_Neighbor_GracefulRestart) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/logging-options YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions struct {
	ΛMetadata                []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	LogNeighborStateChanges  *bool             `path:"config/log-neighbor-state-changes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLogNeighborStateChanges []ygot.Annotation `path:"config/@log-neighbor-state-changes" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions) IsYANGGoStruct() {}

// GetLogNeighborStateChanges retrieves the value of the leaf LogNeighborStateChanges from the NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LogNeighborStateChanges is set, it can
// safely use t.GetLogNeighborStateChanges() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LogNeighborStateChanges == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions) GetLogNeighborStateChanges() bool {
	if t == nil || t.LogNeighborStateChanges == nil {
		return true
	}
	return *t.LogNeighborStateChanges
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.LogNeighborStateChanges == nil {
		var v bool = true
		t.LogNeighborStateChanges = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions.
func (*NetworkInstance_Protocol_Bgp_Neighbor_LoggingOptions) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_Messages represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/messages YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_Messages struct {
	ΛMetadata []ygot.Annotation                                        `path:"@" ygotAnnotation:"true"`
	Received  *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received `path:"received" module:"openconfig-network-instance"`
	ΛReceived []ygot.Annotation                                        `path:"@received" ygotAnnotation:"true"`
	Sent      *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent     `path:"sent" module:"openconfig-network-instance"`
	ΛSent     []ygot.Annotation                                        `path:"@sent" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_Messages implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_Messages) IsYANGGoStruct() {}

// GetOrCreateReceived retrieves the value of the Received field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages) GetOrCreateReceived() *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received {
	if t.Received != nil {
		return t.Received
	}
	t.Received = &NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received{}
	return t.Received
}

// GetOrCreateSent retrieves the value of the Sent field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages) GetOrCreateSent() *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent {
	if t.Sent != nil {
		return t.Sent
	}
	t.Sent = &NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent{}
	return t.Sent
}

// GetReceived returns the value of the Received struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_Messages. If the receiver or the field Received is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages) GetReceived() *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received {
	if t != nil && t.Received != nil {
		return t.Received
	}
	return nil
}

// GetSent returns the value of the Sent struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_Messages. If the receiver or the field Sent is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages) GetSent() *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent {
	if t != nil && t.Sent != nil {
		return t.Sent
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_Messages
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Received.PopulateDefaults()
	t.Sent.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_Messages"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_Messages.
func (*NetworkInstance_Protocol_Bgp_Neighbor_Messages) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/messages/received YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received struct {
	ΛMetadata                     []ygot.Annotation            `path:"@" ygotAnnotation:"true"`
	NOTIFICATION                  *uint64                      `path:"NOTIFICATION" module:"openconfig-network-instance"`
	ΛNOTIFICATION                 []ygot.Annotation            `path:"@NOTIFICATION" ygotAnnotation:"true"`
	UPDATE                        *uint64                      `path:"UPDATE" module:"openconfig-network-instance"`
	ΛUPDATE                       []ygot.Annotation            `path:"@UPDATE" ygotAnnotation:"true"`
	LastNotificationErrorCode     E_BgpTypes_BGP_ERROR_CODE    `path:"last-notification-error-code" module:"openconfig-network-instance"`
	ΛLastNotificationErrorCode    []ygot.Annotation            `path:"@last-notification-error-code" ygotAnnotation:"true"`
	LastNotificationErrorSubcode  E_BgpTypes_BGP_ERROR_SUBCODE `path:"last-notification-error-subcode" module:"openconfig-network-instance"`
	ΛLastNotificationErrorSubcode []ygot.Annotation            `path:"@last-notification-error-subcode" ygotAnnotation:"true"`
	LastNotificationTime          *uint64                      `path:"last-notification-time" module:"openconfig-network-instance"`
	ΛLastNotificationTime         []ygot.Annotation            `path:"@last-notification-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received) IsYANGGoStruct() {}

// GetNOTIFICATION retrieves the value of the leaf NOTIFICATION from the NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NOTIFICATION is set, it can
// safely use t.GetNOTIFICATION() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NOTIFICATION == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received) GetNOTIFICATION() uint64 {
	if t == nil || t.NOTIFICATION == nil {
		return 0
	}
	return *t.NOTIFICATION
}

// GetUPDATE retrieves the value of the leaf UPDATE from the NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UPDATE is set, it can
// safely use t.GetUPDATE() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UPDATE == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received) GetUPDATE() uint64 {
	if t == nil || t.UPDATE == nil {
		return 0
	}
	return *t.UPDATE
}

// GetLastNotificationErrorCode retrieves the value of the leaf LastNotificationErrorCode from the NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastNotificationErrorCode is set, it can
// safely use t.GetLastNotificationErrorCode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastNotificationErrorCode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received) GetLastNotificationErrorCode() E_BgpTypes_BGP_ERROR_CODE {
	if t == nil || t.LastNotificationErrorCode == 0 {
		return 0
	}
	return t.LastNotificationErrorCode
}

// GetLastNotificationErrorSubcode retrieves the value of the leaf LastNotificationErrorSubcode from the NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastNotificationErrorSubcode is set, it can
// safely use t.GetLastNotificationErrorSubcode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastNotificationErrorSubcode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received) GetLastNotificationErrorSubcode() E_BgpTypes_BGP_ERROR_SUBCODE {
	if t == nil || t.LastNotificationErrorSubcode == 0 {
		return 0
	}
	return t.LastNotificationErrorSubcode
}

// GetLastNotificationTime retrieves the value of the leaf LastNotificationTime from the NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastNotificationTime is set, it can
// safely use t.GetLastNotificationTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastNotificationTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received) GetLastNotificationTime() uint64 {
	if t == nil || t.LastNotificationTime == nil {
		return 0
	}
	return *t.LastNotificationTime
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received.
func (*NetworkInstance_Protocol_Bgp_Neighbor_Messages_Received) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/messages/sent YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent struct {
	ΛMetadata                     []ygot.Annotation            `path:"@" ygotAnnotation:"true"`
	NOTIFICATION                  *uint64                      `path:"NOTIFICATION" module:"openconfig-network-instance"`
	ΛNOTIFICATION                 []ygot.Annotation            `path:"@NOTIFICATION" ygotAnnotation:"true"`
	UPDATE                        *uint64                      `path:"UPDATE" module:"openconfig-network-instance"`
	ΛUPDATE                       []ygot.Annotation            `path:"@UPDATE" ygotAnnotation:"true"`
	LastNotificationErrorCode     E_BgpTypes_BGP_ERROR_CODE    `path:"last-notification-error-code" module:"openconfig-network-instance"`
	ΛLastNotificationErrorCode    []ygot.Annotation            `path:"@last-notification-error-code" ygotAnnotation:"true"`
	LastNotificationErrorSubcode  E_BgpTypes_BGP_ERROR_SUBCODE `path:"last-notification-error-subcode" module:"openconfig-network-instance"`
	ΛLastNotificationErrorSubcode []ygot.Annotation            `path:"@last-notification-error-subcode" ygotAnnotation:"true"`
	LastNotificationTime          *uint64                      `path:"last-notification-time" module:"openconfig-network-instance"`
	ΛLastNotificationTime         []ygot.Annotation            `path:"@last-notification-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent) IsYANGGoStruct() {}

// GetNOTIFICATION retrieves the value of the leaf NOTIFICATION from the NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NOTIFICATION is set, it can
// safely use t.GetNOTIFICATION() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NOTIFICATION == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent) GetNOTIFICATION() uint64 {
	if t == nil || t.NOTIFICATION == nil {
		return 0
	}
	return *t.NOTIFICATION
}

// GetUPDATE retrieves the value of the leaf UPDATE from the NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UPDATE is set, it can
// safely use t.GetUPDATE() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UPDATE == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent) GetUPDATE() uint64 {
	if t == nil || t.UPDATE == nil {
		return 0
	}
	return *t.UPDATE
}

// GetLastNotificationErrorCode retrieves the value of the leaf LastNotificationErrorCode from the NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastNotificationErrorCode is set, it can
// safely use t.GetLastNotificationErrorCode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastNotificationErrorCode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent) GetLastNotificationErrorCode() E_BgpTypes_BGP_ERROR_CODE {
	if t == nil || t.LastNotificationErrorCode == 0 {
		return 0
	}
	return t.LastNotificationErrorCode
}

// GetLastNotificationErrorSubcode retrieves the value of the leaf LastNotificationErrorSubcode from the NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastNotificationErrorSubcode is set, it can
// safely use t.GetLastNotificationErrorSubcode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastNotificationErrorSubcode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent) GetLastNotificationErrorSubcode() E_BgpTypes_BGP_ERROR_SUBCODE {
	if t == nil || t.LastNotificationErrorSubcode == 0 {
		return 0
	}
	return t.LastNotificationErrorSubcode
}

// GetLastNotificationTime retrieves the value of the leaf LastNotificationTime from the NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastNotificationTime is set, it can
// safely use t.GetLastNotificationTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastNotificationTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent) GetLastNotificationTime() uint64 {
	if t == nil || t.LastNotificationTime == nil {
		return 0
	}
	return *t.LastNotificationTime
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent.
func (*NetworkInstance_Protocol_Bgp_Neighbor_Messages_Sent) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_Queues represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/queues YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_Queues struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Input     *uint32           `path:"input" module:"openconfig-network-instance"`
	ΛInput    []ygot.Annotation `path:"@input" ygotAnnotation:"true"`
	Output    *uint32           `path:"output" module:"openconfig-network-instance"`
	ΛOutput   []ygot.Annotation `path:"@output" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_Queues implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_Queues) IsYANGGoStruct() {}

// GetInput retrieves the value of the leaf Input from the NetworkInstance_Protocol_Bgp_Neighbor_Queues
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Input is set, it can
// safely use t.GetInput() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Input == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Queues) GetInput() uint32 {
	if t == nil || t.Input == nil {
		return 0
	}
	return *t.Input
}

// GetOutput retrieves the value of the leaf Output from the NetworkInstance_Protocol_Bgp_Neighbor_Queues
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Output is set, it can
// safely use t.GetOutput() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Output == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Queues) GetOutput() uint32 {
	if t == nil || t.Output == nil {
		return 0
	}
	return *t.Output
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_Queues
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Queues) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Queues) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_Queues"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Queues) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Queues) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_Queues.
func (*NetworkInstance_Protocol_Bgp_Neighbor_Queues) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/route-reflector YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector struct {
	ΛMetadata                []ygot.Annotation                                                                  `path:"@" ygotAnnotation:"true"`
	RouteReflectorClient     *bool                                                                              `path:"config/route-reflector-client" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouteReflectorClient    []ygot.Annotation                                                                  `path:"config/@route-reflector-client" ygotAnnotation:"true"`
	RouteReflectorClusterId  NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector_RouteReflectorClusterId_Union `path:"config/route-reflector-cluster-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouteReflectorClusterId []ygot.Annotation                                                                  `path:"config/@route-reflector-cluster-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector) IsYANGGoStruct() {}

// GetRouteReflectorClient retrieves the value of the leaf RouteReflectorClient from the NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouteReflectorClient is set, it can
// safely use t.GetRouteReflectorClient() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouteReflectorClient == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector) GetRouteReflectorClient() bool {
	if t == nil || t.RouteReflectorClient == nil {
		return false
	}
	return *t.RouteReflectorClient
}

// GetRouteReflectorClusterId retrieves the value of the leaf RouteReflectorClusterId from the NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouteReflectorClusterId is set, it can
// safely use t.GetRouteReflectorClusterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouteReflectorClusterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector) GetRouteReflectorClusterId() NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector_RouteReflectorClusterId_Union {
	if t == nil || t.RouteReflectorClusterId == nil {
		return nil
	}
	return t.RouteReflectorClusterId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.RouteReflectorClient == nil {
		var v bool = false
		t.RouteReflectorClient = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector.
func (*NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector_RouteReflectorClusterId_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/route-reflector/config/route-reflector-cluster-id within the YANG schema.
// Union type can be one of [UnionString, UnionUint32].
type NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector_RouteReflectorClusterId_Union interface {
	// Union type can be one of [UnionString, UnionUint32]
	Documentation_for_NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector_RouteReflectorClusterId_Union()
}

// Documentation_for_NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector_RouteReflectorClusterId_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector_RouteReflectorClusterId_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector_RouteReflectorClusterId_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector_RouteReflectorClusterId_Union ensures that UnionUint32
// implements the NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector_RouteReflectorClusterId_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector_RouteReflectorClusterId_Union() {
}

// To_NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector_RouteReflectorClusterId_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector_RouteReflectorClusterId_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector) To_NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector_RouteReflectorClusterId_Union(i interface{}) (NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector_RouteReflectorClusterId_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector_RouteReflectorClusterId_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Bgp_Neighbor_RouteReflector_RouteReflectorClusterId_Union, unknown union type, got: %T, want any of [string, uint32]", i, i)
}

// NetworkInstance_Protocol_Bgp_Neighbor_Timers represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/timers YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_Timers struct {
	ΛMetadata                     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ConnectRetry                  *uint16           `path:"config/connect-retry" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛConnectRetry                 []ygot.Annotation `path:"config/@connect-retry" ygotAnnotation:"true"`
	HoldTime                      *uint16           `path:"config/hold-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHoldTime                     []ygot.Annotation `path:"config/@hold-time" ygotAnnotation:"true"`
	KeepaliveInterval             *uint16           `path:"config/keepalive-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛKeepaliveInterval            []ygot.Annotation `path:"config/@keepalive-interval" ygotAnnotation:"true"`
	MinimumAdvertisementInterval  *uint16           `path:"config/minimum-advertisement-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMinimumAdvertisementInterval []ygot.Annotation `path:"config/@minimum-advertisement-interval" ygotAnnotation:"true"`
	NegotiatedHoldTime            *uint16           `path:"state/negotiated-hold-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNegotiatedHoldTime           []ygot.Annotation `path:"state/@negotiated-hold-time" ygotAnnotation:"true"`
	RestartTime                   *uint16           `path:"config/restart-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRestartTime                  []ygot.Annotation `path:"config/@restart-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_Timers implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_Timers) IsYANGGoStruct() {}

// GetConnectRetry retrieves the value of the leaf ConnectRetry from the NetworkInstance_Protocol_Bgp_Neighbor_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ConnectRetry is set, it can
// safely use t.GetConnectRetry() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ConnectRetry == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Timers) GetConnectRetry() uint16 {
	if t == nil || t.ConnectRetry == nil {
		return 30
	}
	return *t.ConnectRetry
}

// GetHoldTime retrieves the value of the leaf HoldTime from the NetworkInstance_Protocol_Bgp_Neighbor_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HoldTime is set, it can
// safely use t.GetHoldTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HoldTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Timers) GetHoldTime() uint16 {
	if t == nil || t.HoldTime == nil {
		return 90
	}
	return *t.HoldTime
}

// GetKeepaliveInterval retrieves the value of the leaf KeepaliveInterval from the NetworkInstance_Protocol_Bgp_Neighbor_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if KeepaliveInterval is set, it can
// safely use t.GetKeepaliveInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.KeepaliveInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Timers) GetKeepaliveInterval() uint16 {
	if t == nil || t.KeepaliveInterval == nil {
		return 30
	}
	return *t.KeepaliveInterval
}

// GetMinimumAdvertisementInterval retrieves the value of the leaf MinimumAdvertisementInterval from the NetworkInstance_Protocol_Bgp_Neighbor_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinimumAdvertisementInterval is set, it can
// safely use t.GetMinimumAdvertisementInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinimumAdvertisementInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Timers) GetMinimumAdvertisementInterval() uint16 {
	if t == nil || t.MinimumAdvertisementInterval == nil {
		return 30
	}
	return *t.MinimumAdvertisementInterval
}

// GetNegotiatedHoldTime retrieves the value of the leaf NegotiatedHoldTime from the NetworkInstance_Protocol_Bgp_Neighbor_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NegotiatedHoldTime is set, it can
// safely use t.GetNegotiatedHoldTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NegotiatedHoldTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Timers) GetNegotiatedHoldTime() uint16 {
	if t == nil || t.NegotiatedHoldTime == nil {
		return 0
	}
	return *t.NegotiatedHoldTime
}

// GetRestartTime retrieves the value of the leaf RestartTime from the NetworkInstance_Protocol_Bgp_Neighbor_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RestartTime is set, it can
// safely use t.GetRestartTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RestartTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Timers) GetRestartTime() uint16 {
	if t == nil || t.RestartTime == nil {
		return 0
	}
	return *t.RestartTime
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_Timers
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Timers) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.ConnectRetry == nil {
		var v uint16 = 30
		t.ConnectRetry = &v
	}
	if t.HoldTime == nil {
		var v uint16 = 90
		t.HoldTime = &v
	}
	if t.KeepaliveInterval == nil {
		var v uint16 = 30
		t.KeepaliveInterval = &v
	}
	if t.MinimumAdvertisementInterval == nil {
		var v uint16 = 30
		t.MinimumAdvertisementInterval = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Timers) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_Timers"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Timers) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Timers) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_Timers.
func (*NetworkInstance_Protocol_Bgp_Neighbor_Timers) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_Transport represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/transport YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_Transport struct {
	ΛMetadata      []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	LocalAddress   *string           `path:"config/local-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalAddress  []ygot.Annotation `path:"config/@local-address" ygotAnnotation:"true"`
	LocalPort      *uint16           `path:"state/local-port" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalPort     []ygot.Annotation `path:"state/@local-port" ygotAnnotation:"true"`
	MtuDiscovery   *bool             `path:"config/mtu-discovery" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMtuDiscovery  []ygot.Annotation `path:"config/@mtu-discovery" ygotAnnotation:"true"`
	PassiveMode    *bool             `path:"config/passive-mode" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPassiveMode   []ygot.Annotation `path:"config/@passive-mode" ygotAnnotation:"true"`
	RemoteAddress  *string           `path:"state/remote-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRemoteAddress []ygot.Annotation `path:"state/@remote-address" ygotAnnotation:"true"`
	RemotePort     *uint16           `path:"state/remote-port" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRemotePort    []ygot.Annotation `path:"state/@remote-port" ygotAnnotation:"true"`
	TcpMss         *uint16           `path:"config/tcp-mss" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTcpMss        []ygot.Annotation `path:"config/@tcp-mss" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_Transport implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_Transport) IsYANGGoStruct() {}

// GetLocalAddress retrieves the value of the leaf LocalAddress from the NetworkInstance_Protocol_Bgp_Neighbor_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalAddress is set, it can
// safely use t.GetLocalAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Transport) GetLocalAddress() string {
	if t == nil || t.LocalAddress == nil {
		return ""
	}
	return *t.LocalAddress
}

// GetLocalPort retrieves the value of the leaf LocalPort from the NetworkInstance_Protocol_Bgp_Neighbor_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalPort is set, it can
// safely use t.GetLocalPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalPort == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Transport) GetLocalPort() uint16 {
	if t == nil || t.LocalPort == nil {
		return 0
	}
	return *t.LocalPort
}

// GetMtuDiscovery retrieves the value of the leaf MtuDiscovery from the NetworkInstance_Protocol_Bgp_Neighbor_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MtuDiscovery is set, it can
// safely use t.GetMtuDiscovery() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MtuDiscovery == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Transport) GetMtuDiscovery() bool {
	if t == nil || t.MtuDiscovery == nil {
		return false
	}
	return *t.MtuDiscovery
}

// GetPassiveMode retrieves the value of the leaf PassiveMode from the NetworkInstance_Protocol_Bgp_Neighbor_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PassiveMode is set, it can
// safely use t.GetPassiveMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PassiveMode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Transport) GetPassiveMode() bool {
	if t == nil || t.PassiveMode == nil {
		return false
	}
	return *t.PassiveMode
}

// GetRemoteAddress retrieves the value of the leaf RemoteAddress from the NetworkInstance_Protocol_Bgp_Neighbor_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteAddress is set, it can
// safely use t.GetRemoteAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Transport) GetRemoteAddress() string {
	if t == nil || t.RemoteAddress == nil {
		return ""
	}
	return *t.RemoteAddress
}

// GetRemotePort retrieves the value of the leaf RemotePort from the NetworkInstance_Protocol_Bgp_Neighbor_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemotePort is set, it can
// safely use t.GetRemotePort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemotePort == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Transport) GetRemotePort() uint16 {
	if t == nil || t.RemotePort == nil {
		return 0
	}
	return *t.RemotePort
}

// GetTcpMss retrieves the value of the leaf TcpMss from the NetworkInstance_Protocol_Bgp_Neighbor_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TcpMss is set, it can
// safely use t.GetTcpMss() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TcpMss == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Transport) GetTcpMss() uint16 {
	if t == nil || t.TcpMss == nil {
		return 0
	}
	return *t.TcpMss
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_Transport
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Transport) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MtuDiscovery == nil {
		var v bool = false
		t.MtuDiscovery = &v
	}
	if t.PassiveMode == nil {
		var v bool = false
		t.PassiveMode = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Transport) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_Transport"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Transport) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_Transport) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_Transport.
func (*NetworkInstance_Protocol_Bgp_Neighbor_Transport) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/use-multiple-paths YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths struct {
	ΛMetadata []ygot.Annotation                                            `path:"@" ygotAnnotation:"true"`
	Ebgp      *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp `path:"ebgp" module:"openconfig-network-instance"`
	ΛEbgp     []ygot.Annotation                                            `path:"@ebgp" ygotAnnotation:"true"`
	Enabled   *bool                                                        `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation                                            `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths) IsYANGGoStruct() {}

// GetOrCreateEbgp retrieves the value of the Ebgp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths) GetOrCreateEbgp() *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp {
	if t.Ebgp != nil {
		return t.Ebgp
	}
	t.Ebgp = &NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp{}
	return t.Ebgp
}

// GetEbgp returns the value of the Ebgp struct pointer
// from NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths. If the receiver or the field Ebgp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths) GetEbgp() *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp {
	if t != nil && t.Ebgp != nil {
		return t.Ebgp
	}
	return nil
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	t.Ebgp.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths.
func (*NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/use-multiple-paths/ebgp YANG schema element.
type NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AllowMultipleAs  *bool             `path:"config/allow-multiple-as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAllowMultipleAs []ygot.Annotation `path:"config/@allow-multiple-as" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp) IsYANGGoStruct() {}

// GetAllowMultipleAs retrieves the value of the leaf AllowMultipleAs from the NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AllowMultipleAs is set, it can
// safely use t.GetAllowMultipleAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AllowMultipleAs == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp) GetAllowMultipleAs() bool {
	if t == nil || t.AllowMultipleAs == nil {
		return false
	}
	return *t.AllowMultipleAs
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AllowMultipleAs == nil {
		var v bool = false
		t.AllowMultipleAs = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp.
func (*NetworkInstance_Protocol_Bgp_Neighbor_UseMultiplePaths_Ebgp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup struct {
	ΛMetadata          []ygot.Annotation                                                            `path:"@" ygotAnnotation:"true"`
	AfiSafi            map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi `path:"afi-safis/afi-safi" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAfiSafi           []ygot.Annotation                                                            `path:"afi-safis/@afi-safi" ygotAnnotation:"true"`
	ApplyPolicy        *NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy                          `path:"apply-policy" module:"openconfig-network-instance"`
	ΛApplyPolicy       []ygot.Annotation                                                            `path:"@apply-policy" ygotAnnotation:"true"`
	AsPathOptions      *NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions                        `path:"as-path-options" module:"openconfig-network-instance"`
	ΛAsPathOptions     []ygot.Annotation                                                            `path:"@as-path-options" ygotAnnotation:"true"`
	AuthPassword       *string                                                                      `path:"config/auth-password" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthPassword      []ygot.Annotation                                                            `path:"config/@auth-password" ygotAnnotation:"true"`
	Description        *string                                                                      `path:"config/description" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDescription       []ygot.Annotation                                                            `path:"config/@description" ygotAnnotation:"true"`
	EbgpMultihop       *NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop                         `path:"ebgp-multihop" module:"openconfig-network-instance"`
	ΛEbgpMultihop      []ygot.Annotation                                                            `path:"@ebgp-multihop" ygotAnnotation:"true"`
	EnableBfd          *NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd                            `path:"enable-bfd" module:"openconfig-network-instance"`
	ΛEnableBfd         []ygot.Annotation                                                            `path:"@enable-bfd" ygotAnnotation:"true"`
	ErrorHandling      *NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling                        `path:"error-handling" module:"openconfig-network-instance"`
	ΛErrorHandling     []ygot.Annotation                                                            `path:"@error-handling" ygotAnnotation:"true"`
	GracefulRestart    *NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart                      `path:"graceful-restart" module:"openconfig-network-instance"`
	ΛGracefulRestart   []ygot.Annotation                                                            `path:"@graceful-restart" ygotAnnotation:"true"`
	LocalAs            *uint32                                                                      `path:"config/local-as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalAs           []ygot.Annotation                                                            `path:"config/@local-as" ygotAnnotation:"true"`
	LoggingOptions     *NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions                       `path:"logging-options" module:"openconfig-network-instance"`
	ΛLoggingOptions    []ygot.Annotation                                                            `path:"@logging-options" ygotAnnotation:"true"`
	PeerAs             *uint32                                                                      `path:"config/peer-as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPeerAs            []ygot.Annotation                                                            `path:"config/@peer-as" ygotAnnotation:"true"`
	PeerGroupName      *string                                                                      `path:"config/peer-group-name|peer-group-name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPeerGroupName     []ygot.Annotation                                                            `path:"config/@peer-group-name|@peer-group-name" ygotAnnotation:"true"`
	PeerType           E_BgpTypes_PeerType                                                          `path:"config/peer-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPeerType          []ygot.Annotation                                                            `path:"config/@peer-type" ygotAnnotation:"true"`
	RemovePrivateAs    E_BgpTypes_RemovePrivateAsOption                                             `path:"config/remove-private-as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRemovePrivateAs   []ygot.Annotation                                                            `path:"config/@remove-private-as" ygotAnnotation:"true"`
	RouteFlapDamping   *bool                                                                        `path:"config/route-flap-damping" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouteFlapDamping  []ygot.Annotation                                                            `path:"config/@route-flap-damping" ygotAnnotation:"true"`
	RouteReflector     *NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector                       `path:"route-reflector" module:"openconfig-network-instance"`
	ΛRouteReflector    []ygot.Annotation                                                            `path:"@route-reflector" ygotAnnotation:"true"`
	SendCommunity      E_BgpTypes_CommunityType                                                     `path:"config/send-community" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSendCommunity     []ygot.Annotation                                                            `path:"config/@send-community" ygotAnnotation:"true"`
	SendCommunityType  []E_BgpTypes_CommunityType                                                   `path:"config/send-community-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSendCommunityType []ygot.Annotation                                                            `path:"config/@send-community-type" ygotAnnotation:"true"`
	Timers             *NetworkInstance_Protocol_Bgp_PeerGroup_Timers                               `path:"timers" module:"openconfig-network-instance"`
	ΛTimers            []ygot.Annotation                                                            `path:"@timers" ygotAnnotation:"true"`
	TotalPaths         *uint32                                                                      `path:"state/total-paths" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTotalPaths        []ygot.Annotation                                                            `path:"state/@total-paths" ygotAnnotation:"true"`
	TotalPrefixes      *uint32                                                                      `path:"state/total-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTotalPrefixes     []ygot.Annotation                                                            `path:"state/@total-prefixes" ygotAnnotation:"true"`
	Transport          *NetworkInstance_Protocol_Bgp_PeerGroup_Transport                            `path:"transport" module:"openconfig-network-instance"`
	ΛTransport         []ygot.Annotation                                                            `path:"@transport" ygotAnnotation:"true"`
	UseMultiplePaths   *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths                     `path:"use-multiple-paths" module:"openconfig-network-instance"`
	ΛUseMultiplePaths  []ygot.Annotation                                                            `path:"@use-multiple-paths" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup) IsYANGGoStruct() {}

// NewAfiSafi creates a new entry in the AfiSafi list of the
// NetworkInstance_Protocol_Bgp_PeerGroup struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) NewAfiSafi(AfiSafiName E_BgpTypes_AFI_SAFI_TYPE) (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AfiSafi == nil {
		t.AfiSafi = make(map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi)
	}

	key := AfiSafiName

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AfiSafi[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AfiSafi", key)
	}

	t.AfiSafi[key] = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi{
		AfiSafiName: AfiSafiName,
	}

	return t.AfiSafi[key], nil
}

// RenameAfiSafi renames an entry in the list AfiSafi within
// the NetworkInstance_Protocol_Bgp_PeerGroup struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) RenameAfiSafi(oldK, newK E_BgpTypes_AFI_SAFI_TYPE) error {
	if _, ok := t.AfiSafi[newK]; ok {
		return fmt.Errorf("key %v already exists in AfiSafi", newK)
	}

	e, ok := t.AfiSafi[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AfiSafi", oldK)
	}
	e.AfiSafiName = newK

	t.AfiSafi[newK] = e
	delete(t.AfiSafi, oldK)
	return nil
}

// GetOrCreateAfiSafiMap returns the list (map) from NetworkInstance_Protocol_Bgp_PeerGroup.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetOrCreateAfiSafiMap() map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi {
	if t.AfiSafi == nil {
		t.AfiSafi = make(map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi)
	}
	return t.AfiSafi
}

// GetOrCreateAfiSafi retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_PeerGroup. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetOrCreateAfiSafi(AfiSafiName E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi {

	key := AfiSafiName

	if v, ok := t.AfiSafi[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAfiSafi(AfiSafiName)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAfiSafi got unexpected error: %v", err))
	}
	return v
}

// GetAfiSafi retrieves the value with the specified key from
// the AfiSafi map field of NetworkInstance_Protocol_Bgp_PeerGroup. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetAfiSafi(AfiSafiName E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi {

	if t == nil {
		return nil
	}

	key := AfiSafiName

	if lm, ok := t.AfiSafi[key]; ok {
		return lm
	}
	return nil
}

// AppendAfiSafi appends the supplied NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi struct to the
// list AfiSafi of NetworkInstance_Protocol_Bgp_PeerGroup. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) AppendAfiSafi(v *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) error {
	key := v.AfiSafiName

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AfiSafi == nil {
		t.AfiSafi = make(map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi)
	}

	if _, ok := t.AfiSafi[key]; ok {
		return fmt.Errorf("duplicate key for list AfiSafi %v", key)
	}

	t.AfiSafi[key] = v
	return nil
}

// GetOrCreateApplyPolicy retrieves the value of the ApplyPolicy field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetOrCreateApplyPolicy() *NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy {
	if t.ApplyPolicy != nil {
		return t.ApplyPolicy
	}
	t.ApplyPolicy = &NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy{}
	return t.ApplyPolicy
}

// GetOrCreateAsPathOptions retrieves the value of the AsPathOptions field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetOrCreateAsPathOptions() *NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions {
	if t.AsPathOptions != nil {
		return t.AsPathOptions
	}
	t.AsPathOptions = &NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions{}
	return t.AsPathOptions
}

// GetOrCreateEbgpMultihop retrieves the value of the EbgpMultihop field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetOrCreateEbgpMultihop() *NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop {
	if t.EbgpMultihop != nil {
		return t.EbgpMultihop
	}
	t.EbgpMultihop = &NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop{}
	return t.EbgpMultihop
}

// GetOrCreateEnableBfd retrieves the value of the EnableBfd field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetOrCreateEnableBfd() *NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd {
	if t.EnableBfd != nil {
		return t.EnableBfd
	}
	t.EnableBfd = &NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd{}
	return t.EnableBfd
}

// GetOrCreateErrorHandling retrieves the value of the ErrorHandling field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetOrCreateErrorHandling() *NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling {
	if t.ErrorHandling != nil {
		return t.ErrorHandling
	}
	t.ErrorHandling = &NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling{}
	return t.ErrorHandling
}

// GetOrCreateGracefulRestart retrieves the value of the GracefulRestart field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetOrCreateGracefulRestart() *NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart {
	if t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	t.GracefulRestart = &NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart{}
	return t.GracefulRestart
}

// GetOrCreateLoggingOptions retrieves the value of the LoggingOptions field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetOrCreateLoggingOptions() *NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions {
	if t.LoggingOptions != nil {
		return t.LoggingOptions
	}
	t.LoggingOptions = &NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions{}
	return t.LoggingOptions
}

// GetOrCreateRouteReflector retrieves the value of the RouteReflector field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetOrCreateRouteReflector() *NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector {
	if t.RouteReflector != nil {
		return t.RouteReflector
	}
	t.RouteReflector = &NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector{}
	return t.RouteReflector
}

// GetOrCreateTimers retrieves the value of the Timers field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetOrCreateTimers() *NetworkInstance_Protocol_Bgp_PeerGroup_Timers {
	if t.Timers != nil {
		return t.Timers
	}
	t.Timers = &NetworkInstance_Protocol_Bgp_PeerGroup_Timers{}
	return t.Timers
}

// GetOrCreateTransport retrieves the value of the Transport field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetOrCreateTransport() *NetworkInstance_Protocol_Bgp_PeerGroup_Transport {
	if t.Transport != nil {
		return t.Transport
	}
	t.Transport = &NetworkInstance_Protocol_Bgp_PeerGroup_Transport{}
	return t.Transport
}

// GetOrCreateUseMultiplePaths retrieves the value of the UseMultiplePaths field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetOrCreateUseMultiplePaths() *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths {
	if t.UseMultiplePaths != nil {
		return t.UseMultiplePaths
	}
	t.UseMultiplePaths = &NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths{}
	return t.UseMultiplePaths
}

// GetApplyPolicy returns the value of the ApplyPolicy struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup. If the receiver or the field ApplyPolicy is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetApplyPolicy() *NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy {
	if t != nil && t.ApplyPolicy != nil {
		return t.ApplyPolicy
	}
	return nil
}

// GetAsPathOptions returns the value of the AsPathOptions struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup. If the receiver or the field AsPathOptions is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetAsPathOptions() *NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions {
	if t != nil && t.AsPathOptions != nil {
		return t.AsPathOptions
	}
	return nil
}

// GetEbgpMultihop returns the value of the EbgpMultihop struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup. If the receiver or the field EbgpMultihop is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetEbgpMultihop() *NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop {
	if t != nil && t.EbgpMultihop != nil {
		return t.EbgpMultihop
	}
	return nil
}

// GetEnableBfd returns the value of the EnableBfd struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup. If the receiver or the field EnableBfd is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetEnableBfd() *NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd {
	if t != nil && t.EnableBfd != nil {
		return t.EnableBfd
	}
	return nil
}

// GetErrorHandling returns the value of the ErrorHandling struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup. If the receiver or the field ErrorHandling is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetErrorHandling() *NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling {
	if t != nil && t.ErrorHandling != nil {
		return t.ErrorHandling
	}
	return nil
}

// GetGracefulRestart returns the value of the GracefulRestart struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup. If the receiver or the field GracefulRestart is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetGracefulRestart() *NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart {
	if t != nil && t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	return nil
}

// GetLoggingOptions returns the value of the LoggingOptions struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup. If the receiver or the field LoggingOptions is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetLoggingOptions() *NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions {
	if t != nil && t.LoggingOptions != nil {
		return t.LoggingOptions
	}
	return nil
}

// GetRouteReflector returns the value of the RouteReflector struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup. If the receiver or the field RouteReflector is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetRouteReflector() *NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector {
	if t != nil && t.RouteReflector != nil {
		return t.RouteReflector
	}
	return nil
}

// GetTimers returns the value of the Timers struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup. If the receiver or the field Timers is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetTimers() *NetworkInstance_Protocol_Bgp_PeerGroup_Timers {
	if t != nil && t.Timers != nil {
		return t.Timers
	}
	return nil
}

// GetTransport returns the value of the Transport struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup. If the receiver or the field Transport is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetTransport() *NetworkInstance_Protocol_Bgp_PeerGroup_Transport {
	if t != nil && t.Transport != nil {
		return t.Transport
	}
	return nil
}

// GetUseMultiplePaths returns the value of the UseMultiplePaths struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup. If the receiver or the field UseMultiplePaths is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetUseMultiplePaths() *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths {
	if t != nil && t.UseMultiplePaths != nil {
		return t.UseMultiplePaths
	}
	return nil
}

// GetAuthPassword retrieves the value of the leaf AuthPassword from the NetworkInstance_Protocol_Bgp_PeerGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthPassword is set, it can
// safely use t.GetAuthPassword() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthPassword == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetAuthPassword() string {
	if t == nil || t.AuthPassword == nil {
		return ""
	}
	return *t.AuthPassword
}

// GetDescription retrieves the value of the leaf Description from the NetworkInstance_Protocol_Bgp_PeerGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetLocalAs retrieves the value of the leaf LocalAs from the NetworkInstance_Protocol_Bgp_PeerGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalAs is set, it can
// safely use t.GetLocalAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalAs == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetLocalAs() uint32 {
	if t == nil || t.LocalAs == nil {
		return 0
	}
	return *t.LocalAs
}

// GetPeerAs retrieves the value of the leaf PeerAs from the NetworkInstance_Protocol_Bgp_PeerGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerAs is set, it can
// safely use t.GetPeerAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerAs == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetPeerAs() uint32 {
	if t == nil || t.PeerAs == nil {
		return 0
	}
	return *t.PeerAs
}

// GetPeerGroupName retrieves the value of the leaf PeerGroupName from the NetworkInstance_Protocol_Bgp_PeerGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerGroupName is set, it can
// safely use t.GetPeerGroupName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerGroupName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetPeerGroupName() string {
	if t == nil || t.PeerGroupName == nil {
		return ""
	}
	return *t.PeerGroupName
}

// GetPeerType retrieves the value of the leaf PeerType from the NetworkInstance_Protocol_Bgp_PeerGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerType is set, it can
// safely use t.GetPeerType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetPeerType() E_BgpTypes_PeerType {
	if t == nil || t.PeerType == 0 {
		return 0
	}
	return t.PeerType
}

// GetRemovePrivateAs retrieves the value of the leaf RemovePrivateAs from the NetworkInstance_Protocol_Bgp_PeerGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemovePrivateAs is set, it can
// safely use t.GetRemovePrivateAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemovePrivateAs == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetRemovePrivateAs() E_BgpTypes_RemovePrivateAsOption {
	if t == nil || t.RemovePrivateAs == 0 {
		return 0
	}
	return t.RemovePrivateAs
}

// GetRouteFlapDamping retrieves the value of the leaf RouteFlapDamping from the NetworkInstance_Protocol_Bgp_PeerGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouteFlapDamping is set, it can
// safely use t.GetRouteFlapDamping() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouteFlapDamping == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetRouteFlapDamping() bool {
	if t == nil || t.RouteFlapDamping == nil {
		return false
	}
	return *t.RouteFlapDamping
}

// GetSendCommunity retrieves the value of the leaf SendCommunity from the NetworkInstance_Protocol_Bgp_PeerGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SendCommunity is set, it can
// safely use t.GetSendCommunity() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SendCommunity == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetSendCommunity() E_BgpTypes_CommunityType {
	if t == nil || t.SendCommunity == 0 {
		return BgpTypes_CommunityType_NONE
	}
	return t.SendCommunity
}

// GetSendCommunityType retrieves the value of the leaf SendCommunityType from the NetworkInstance_Protocol_Bgp_PeerGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SendCommunityType is set, it can
// safely use t.GetSendCommunityType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SendCommunityType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetSendCommunityType() []E_BgpTypes_CommunityType {
	if t == nil || t.SendCommunityType == nil {
		return nil
	}
	return t.SendCommunityType
}

// GetTotalPaths retrieves the value of the leaf TotalPaths from the NetworkInstance_Protocol_Bgp_PeerGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalPaths is set, it can
// safely use t.GetTotalPaths() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalPaths == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetTotalPaths() uint32 {
	if t == nil || t.TotalPaths == nil {
		return 0
	}
	return *t.TotalPaths
}

// GetTotalPrefixes retrieves the value of the leaf TotalPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalPrefixes is set, it can
// safely use t.GetTotalPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) GetTotalPrefixes() uint32 {
	if t == nil || t.TotalPrefixes == nil {
		return 0
	}
	return *t.TotalPrefixes
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.RouteFlapDamping == nil {
		var v bool = false
		t.RouteFlapDamping = &v
	}
	if t.SendCommunity == 0 {
		t.SendCommunity = BgpTypes_CommunityType_NONE
	}
	t.ApplyPolicy.PopulateDefaults()
	t.AsPathOptions.PopulateDefaults()
	t.EbgpMultihop.PopulateDefaults()
	t.EnableBfd.PopulateDefaults()
	t.ErrorHandling.PopulateDefaults()
	t.GracefulRestart.PopulateDefaults()
	t.LoggingOptions.PopulateDefaults()
	t.RouteReflector.PopulateDefaults()
	t.Timers.PopulateDefaults()
	t.Transport.PopulateDefaults()
	t.UseMultiplePaths.PopulateDefaults()
	for _, e := range t.AfiSafi {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_PeerGroup struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) ΛListKeyMap() (map[string]interface{}, error) {
	if t.PeerGroupName == nil {
		return nil, fmt.Errorf("nil value for key PeerGroupName")
	}

	return map[string]interface{}{
		"peer-group-name": *t.PeerGroupName,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup.
func (*NetworkInstance_Protocol_Bgp_PeerGroup) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi struct {
	ΛMetadata           []ygot.Annotation                                                  `path:"@" ygotAnnotation:"true"`
	AddPaths            *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths           `path:"add-paths" module:"openconfig-network-instance"`
	ΛAddPaths           []ygot.Annotation                                                  `path:"@add-paths" ygotAnnotation:"true"`
	AfiSafiName         E_BgpTypes_AFI_SAFI_TYPE                                           `path:"config/afi-safi-name|afi-safi-name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAfiSafiName        []ygot.Annotation                                                  `path:"config/@afi-safi-name|@afi-safi-name" ygotAnnotation:"true"`
	ApplyPolicy         *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy        `path:"apply-policy" module:"openconfig-network-instance"`
	ΛApplyPolicy        []ygot.Annotation                                                  `path:"@apply-policy" ygotAnnotation:"true"`
	Enabled             *bool                                                              `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled            []ygot.Annotation                                                  `path:"config/@enabled" ygotAnnotation:"true"`
	GracefulRestart     *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart    `path:"graceful-restart" module:"openconfig-network-instance"`
	ΛGracefulRestart    []ygot.Annotation                                                  `path:"@graceful-restart" ygotAnnotation:"true"`
	Ipv4LabeledUnicast  *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast `path:"ipv4-labeled-unicast" module:"openconfig-network-instance"`
	ΛIpv4LabeledUnicast []ygot.Annotation                                                  `path:"@ipv4-labeled-unicast" ygotAnnotation:"true"`
	Ipv4Unicast         *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast        `path:"ipv4-unicast" module:"openconfig-network-instance"`
	ΛIpv4Unicast        []ygot.Annotation                                                  `path:"@ipv4-unicast" ygotAnnotation:"true"`
	Ipv6LabeledUnicast  *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast `path:"ipv6-labeled-unicast" module:"openconfig-network-instance"`
	ΛIpv6LabeledUnicast []ygot.Annotation                                                  `path:"@ipv6-labeled-unicast" ygotAnnotation:"true"`
	Ipv6Unicast         *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast        `path:"ipv6-unicast" module:"openconfig-network-instance"`
	ΛIpv6Unicast        []ygot.Annotation                                                  `path:"@ipv6-unicast" ygotAnnotation:"true"`
	L2VpnEvpn           *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn          `path:"l2vpn-evpn" module:"openconfig-network-instance"`
	ΛL2VpnEvpn          []ygot.Annotation                                                  `path:"@l2vpn-evpn" ygotAnnotation:"true"`
	L2VpnVpls           *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls          `path:"l2vpn-vpls" module:"openconfig-network-instance"`
	ΛL2VpnVpls          []ygot.Annotation                                                  `path:"@l2vpn-vpls" ygotAnnotation:"true"`
	L3VpnIpv4Multicast  *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast `path:"l3vpn-ipv4-multicast" module:"openconfig-network-instance"`
	ΛL3VpnIpv4Multicast []ygot.Annotation                                                  `path:"@l3vpn-ipv4-multicast" ygotAnnotation:"true"`
	L3VpnIpv4Unicast    *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast   `path:"l3vpn-ipv4-unicast" module:"openconfig-network-instance"`
	ΛL3VpnIpv4Unicast   []ygot.Annotation                                                  `path:"@l3vpn-ipv4-unicast" ygotAnnotation:"true"`
	L3VpnIpv6Multicast  *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast `path:"l3vpn-ipv6-multicast" module:"openconfig-network-instance"`
	ΛL3VpnIpv6Multicast []ygot.Annotation                                                  `path:"@l3vpn-ipv6-multicast" ygotAnnotation:"true"`
	L3VpnIpv6Unicast    *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast   `path:"l3vpn-ipv6-unicast" module:"openconfig-network-instance"`
	ΛL3VpnIpv6Unicast   []ygot.Annotation                                                  `path:"@l3vpn-ipv6-unicast" ygotAnnotation:"true"`
	SendCommunityType   []E_BgpTypes_CommunityType                                         `path:"config/send-community-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSendCommunityType  []ygot.Annotation                                                  `path:"config/@send-community-type" ygotAnnotation:"true"`
	SrtePolicyIpv4      *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4     `path:"srte-policy-ipv4" module:"openconfig-network-instance"`
	ΛSrtePolicyIpv4     []ygot.Annotation                                                  `path:"@srte-policy-ipv4" ygotAnnotation:"true"`
	SrtePolicyIpv6      *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6     `path:"srte-policy-ipv6" module:"openconfig-network-instance"`
	ΛSrtePolicyIpv6     []ygot.Annotation                                                  `path:"@srte-policy-ipv6" ygotAnnotation:"true"`
	UseMultiplePaths    *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths   `path:"use-multiple-paths" module:"openconfig-network-instance"`
	ΛUseMultiplePaths   []ygot.Annotation                                                  `path:"@use-multiple-paths" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) IsYANGGoStruct() {}

// GetOrCreateAddPaths retrieves the value of the AddPaths field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetOrCreateAddPaths() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths {
	if t.AddPaths != nil {
		return t.AddPaths
	}
	t.AddPaths = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths{}
	return t.AddPaths
}

// GetOrCreateApplyPolicy retrieves the value of the ApplyPolicy field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetOrCreateApplyPolicy() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy {
	if t.ApplyPolicy != nil {
		return t.ApplyPolicy
	}
	t.ApplyPolicy = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy{}
	return t.ApplyPolicy
}

// GetOrCreateGracefulRestart retrieves the value of the GracefulRestart field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetOrCreateGracefulRestart() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart {
	if t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	t.GracefulRestart = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart{}
	return t.GracefulRestart
}

// GetOrCreateIpv4LabeledUnicast retrieves the value of the Ipv4LabeledUnicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetOrCreateIpv4LabeledUnicast() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast {
	if t.Ipv4LabeledUnicast != nil {
		return t.Ipv4LabeledUnicast
	}
	t.Ipv4LabeledUnicast = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast{}
	return t.Ipv4LabeledUnicast
}

// GetOrCreateIpv4Unicast retrieves the value of the Ipv4Unicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetOrCreateIpv4Unicast() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast {
	if t.Ipv4Unicast != nil {
		return t.Ipv4Unicast
	}
	t.Ipv4Unicast = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast{}
	return t.Ipv4Unicast
}

// GetOrCreateIpv6LabeledUnicast retrieves the value of the Ipv6LabeledUnicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetOrCreateIpv6LabeledUnicast() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast {
	if t.Ipv6LabeledUnicast != nil {
		return t.Ipv6LabeledUnicast
	}
	t.Ipv6LabeledUnicast = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast{}
	return t.Ipv6LabeledUnicast
}

// GetOrCreateIpv6Unicast retrieves the value of the Ipv6Unicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetOrCreateIpv6Unicast() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast {
	if t.Ipv6Unicast != nil {
		return t.Ipv6Unicast
	}
	t.Ipv6Unicast = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast{}
	return t.Ipv6Unicast
}

// GetOrCreateL2VpnEvpn retrieves the value of the L2VpnEvpn field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetOrCreateL2VpnEvpn() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn {
	if t.L2VpnEvpn != nil {
		return t.L2VpnEvpn
	}
	t.L2VpnEvpn = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn{}
	return t.L2VpnEvpn
}

// GetOrCreateL2VpnVpls retrieves the value of the L2VpnVpls field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetOrCreateL2VpnVpls() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls {
	if t.L2VpnVpls != nil {
		return t.L2VpnVpls
	}
	t.L2VpnVpls = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls{}
	return t.L2VpnVpls
}

// GetOrCreateL3VpnIpv4Multicast retrieves the value of the L3VpnIpv4Multicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetOrCreateL3VpnIpv4Multicast() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast {
	if t.L3VpnIpv4Multicast != nil {
		return t.L3VpnIpv4Multicast
	}
	t.L3VpnIpv4Multicast = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast{}
	return t.L3VpnIpv4Multicast
}

// GetOrCreateL3VpnIpv4Unicast retrieves the value of the L3VpnIpv4Unicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetOrCreateL3VpnIpv4Unicast() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast {
	if t.L3VpnIpv4Unicast != nil {
		return t.L3VpnIpv4Unicast
	}
	t.L3VpnIpv4Unicast = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast{}
	return t.L3VpnIpv4Unicast
}

// GetOrCreateL3VpnIpv6Multicast retrieves the value of the L3VpnIpv6Multicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetOrCreateL3VpnIpv6Multicast() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast {
	if t.L3VpnIpv6Multicast != nil {
		return t.L3VpnIpv6Multicast
	}
	t.L3VpnIpv6Multicast = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast{}
	return t.L3VpnIpv6Multicast
}

// GetOrCreateL3VpnIpv6Unicast retrieves the value of the L3VpnIpv6Unicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetOrCreateL3VpnIpv6Unicast() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast {
	if t.L3VpnIpv6Unicast != nil {
		return t.L3VpnIpv6Unicast
	}
	t.L3VpnIpv6Unicast = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast{}
	return t.L3VpnIpv6Unicast
}

// GetOrCreateSrtePolicyIpv4 retrieves the value of the SrtePolicyIpv4 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetOrCreateSrtePolicyIpv4() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4 {
	if t.SrtePolicyIpv4 != nil {
		return t.SrtePolicyIpv4
	}
	t.SrtePolicyIpv4 = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4{}
	return t.SrtePolicyIpv4
}

// GetOrCreateSrtePolicyIpv6 retrieves the value of the SrtePolicyIpv6 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetOrCreateSrtePolicyIpv6() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6 {
	if t.SrtePolicyIpv6 != nil {
		return t.SrtePolicyIpv6
	}
	t.SrtePolicyIpv6 = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6{}
	return t.SrtePolicyIpv6
}

// GetOrCreateUseMultiplePaths retrieves the value of the UseMultiplePaths field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetOrCreateUseMultiplePaths() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths {
	if t.UseMultiplePaths != nil {
		return t.UseMultiplePaths
	}
	t.UseMultiplePaths = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths{}
	return t.UseMultiplePaths
}

// GetAddPaths returns the value of the AddPaths struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi. If the receiver or the field AddPaths is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetAddPaths() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths {
	if t != nil && t.AddPaths != nil {
		return t.AddPaths
	}
	return nil
}

// GetApplyPolicy returns the value of the ApplyPolicy struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi. If the receiver or the field ApplyPolicy is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetApplyPolicy() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy {
	if t != nil && t.ApplyPolicy != nil {
		return t.ApplyPolicy
	}
	return nil
}

// GetGracefulRestart returns the value of the GracefulRestart struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi. If the receiver or the field GracefulRestart is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetGracefulRestart() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart {
	if t != nil && t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	return nil
}

// GetIpv4LabeledUnicast returns the value of the Ipv4LabeledUnicast struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi. If the receiver or the field Ipv4LabeledUnicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetIpv4LabeledUnicast() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast {
	if t != nil && t.Ipv4LabeledUnicast != nil {
		return t.Ipv4LabeledUnicast
	}
	return nil
}

// GetIpv4Unicast returns the value of the Ipv4Unicast struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi. If the receiver or the field Ipv4Unicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetIpv4Unicast() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast {
	if t != nil && t.Ipv4Unicast != nil {
		return t.Ipv4Unicast
	}
	return nil
}

// GetIpv6LabeledUnicast returns the value of the Ipv6LabeledUnicast struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi. If the receiver or the field Ipv6LabeledUnicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetIpv6LabeledUnicast() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast {
	if t != nil && t.Ipv6LabeledUnicast != nil {
		return t.Ipv6LabeledUnicast
	}
	return nil
}

// GetIpv6Unicast returns the value of the Ipv6Unicast struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi. If the receiver or the field Ipv6Unicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetIpv6Unicast() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast {
	if t != nil && t.Ipv6Unicast != nil {
		return t.Ipv6Unicast
	}
	return nil
}

// GetL2VpnEvpn returns the value of the L2VpnEvpn struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi. If the receiver or the field L2VpnEvpn is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetL2VpnEvpn() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn {
	if t != nil && t.L2VpnEvpn != nil {
		return t.L2VpnEvpn
	}
	return nil
}

// GetL2VpnVpls returns the value of the L2VpnVpls struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi. If the receiver or the field L2VpnVpls is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetL2VpnVpls() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls {
	if t != nil && t.L2VpnVpls != nil {
		return t.L2VpnVpls
	}
	return nil
}

// GetL3VpnIpv4Multicast returns the value of the L3VpnIpv4Multicast struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi. If the receiver or the field L3VpnIpv4Multicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetL3VpnIpv4Multicast() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast {
	if t != nil && t.L3VpnIpv4Multicast != nil {
		return t.L3VpnIpv4Multicast
	}
	return nil
}

// GetL3VpnIpv4Unicast returns the value of the L3VpnIpv4Unicast struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi. If the receiver or the field L3VpnIpv4Unicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetL3VpnIpv4Unicast() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast {
	if t != nil && t.L3VpnIpv4Unicast != nil {
		return t.L3VpnIpv4Unicast
	}
	return nil
}

// GetL3VpnIpv6Multicast returns the value of the L3VpnIpv6Multicast struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi. If the receiver or the field L3VpnIpv6Multicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetL3VpnIpv6Multicast() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast {
	if t != nil && t.L3VpnIpv6Multicast != nil {
		return t.L3VpnIpv6Multicast
	}
	return nil
}

// GetL3VpnIpv6Unicast returns the value of the L3VpnIpv6Unicast struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi. If the receiver or the field L3VpnIpv6Unicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetL3VpnIpv6Unicast() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast {
	if t != nil && t.L3VpnIpv6Unicast != nil {
		return t.L3VpnIpv6Unicast
	}
	return nil
}

// GetSrtePolicyIpv4 returns the value of the SrtePolicyIpv4 struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi. If the receiver or the field SrtePolicyIpv4 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetSrtePolicyIpv4() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4 {
	if t != nil && t.SrtePolicyIpv4 != nil {
		return t.SrtePolicyIpv4
	}
	return nil
}

// GetSrtePolicyIpv6 returns the value of the SrtePolicyIpv6 struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi. If the receiver or the field SrtePolicyIpv6 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetSrtePolicyIpv6() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6 {
	if t != nil && t.SrtePolicyIpv6 != nil {
		return t.SrtePolicyIpv6
	}
	return nil
}

// GetUseMultiplePaths returns the value of the UseMultiplePaths struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi. If the receiver or the field UseMultiplePaths is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetUseMultiplePaths() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths {
	if t != nil && t.UseMultiplePaths != nil {
		return t.UseMultiplePaths
	}
	return nil
}

// GetAfiSafiName retrieves the value of the leaf AfiSafiName from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AfiSafiName is set, it can
// safely use t.GetAfiSafiName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AfiSafiName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetAfiSafiName() E_BgpTypes_AFI_SAFI_TYPE {
	if t == nil || t.AfiSafiName == 0 {
		return 0
	}
	return t.AfiSafiName
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetSendCommunityType retrieves the value of the leaf SendCommunityType from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SendCommunityType is set, it can
// safely use t.GetSendCommunityType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SendCommunityType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) GetSendCommunityType() []E_BgpTypes_CommunityType {
	if t == nil || t.SendCommunityType == nil {
		return nil
	}
	return t.SendCommunityType
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AddPaths.PopulateDefaults()
	t.ApplyPolicy.PopulateDefaults()
	t.GracefulRestart.PopulateDefaults()
	t.Ipv4LabeledUnicast.PopulateDefaults()
	t.Ipv4Unicast.PopulateDefaults()
	t.Ipv6LabeledUnicast.PopulateDefaults()
	t.Ipv6Unicast.PopulateDefaults()
	t.L2VpnEvpn.PopulateDefaults()
	t.L2VpnVpls.PopulateDefaults()
	t.L3VpnIpv4Multicast.PopulateDefaults()
	t.L3VpnIpv4Unicast.PopulateDefaults()
	t.L3VpnIpv6Multicast.PopulateDefaults()
	t.L3VpnIpv6Unicast.PopulateDefaults()
	t.SrtePolicyIpv4.PopulateDefaults()
	t.SrtePolicyIpv6.PopulateDefaults()
	t.UseMultiplePaths.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"afi-safi-name": t.AfiSafiName,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/add-paths YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths struct {
	ΛMetadata             []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	EligiblePrefixPolicy  *string           `path:"config/eligible-prefix-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEligiblePrefixPolicy []ygot.Annotation `path:"config/@eligible-prefix-policy" ygotAnnotation:"true"`
	Receive               *bool             `path:"config/receive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReceive              []ygot.Annotation `path:"config/@receive" ygotAnnotation:"true"`
	Send                  *bool             `path:"config/send" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSend                 []ygot.Annotation `path:"config/@send" ygotAnnotation:"true"`
	SendMax               *uint8            `path:"config/send-max" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSendMax              []ygot.Annotation `path:"config/@send-max" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths) IsYANGGoStruct() {}

// GetEligiblePrefixPolicy retrieves the value of the leaf EligiblePrefixPolicy from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EligiblePrefixPolicy is set, it can
// safely use t.GetEligiblePrefixPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EligiblePrefixPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths) GetEligiblePrefixPolicy() string {
	if t == nil || t.EligiblePrefixPolicy == nil {
		return ""
	}
	return *t.EligiblePrefixPolicy
}

// GetReceive retrieves the value of the leaf Receive from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Receive is set, it can
// safely use t.GetReceive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Receive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths) GetReceive() bool {
	if t == nil || t.Receive == nil {
		return false
	}
	return *t.Receive
}

// GetSend retrieves the value of the leaf Send from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Send is set, it can
// safely use t.GetSend() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Send == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths) GetSend() bool {
	if t == nil || t.Send == nil {
		return false
	}
	return *t.Send
}

// GetSendMax retrieves the value of the leaf SendMax from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SendMax is set, it can
// safely use t.GetSendMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SendMax == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths) GetSendMax() uint8 {
	if t == nil || t.SendMax == nil {
		return 0
	}
	return *t.SendMax
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Receive == nil {
		var v bool = false
		t.Receive = &v
	}
	if t.Send == nil {
		var v bool = false
		t.Send = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_AddPaths) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/apply-policy YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy struct {
	ΛMetadata            []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	DefaultExportPolicy  E_RoutingPolicy_DefaultPolicyType `path:"config/default-export-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultExportPolicy []ygot.Annotation                 `path:"config/@default-export-policy" ygotAnnotation:"true"`
	DefaultImportPolicy  E_RoutingPolicy_DefaultPolicyType `path:"config/default-import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultImportPolicy []ygot.Annotation                 `path:"config/@default-import-policy" ygotAnnotation:"true"`
	ExportPolicy         []string                          `path:"config/export-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExportPolicy        []ygot.Annotation                 `path:"config/@export-policy" ygotAnnotation:"true"`
	ImportPolicy         []string                          `path:"config/import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛImportPolicy        []ygot.Annotation                 `path:"config/@import-policy" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy) IsYANGGoStruct() {}

// GetDefaultExportPolicy retrieves the value of the leaf DefaultExportPolicy from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultExportPolicy is set, it can
// safely use t.GetDefaultExportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultExportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy) GetDefaultExportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultExportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultExportPolicy
}

// GetDefaultImportPolicy retrieves the value of the leaf DefaultImportPolicy from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultImportPolicy is set, it can
// safely use t.GetDefaultImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy) GetDefaultImportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultImportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultImportPolicy
}

// GetExportPolicy retrieves the value of the leaf ExportPolicy from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExportPolicy is set, it can
// safely use t.GetExportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy) GetExportPolicy() []string {
	if t == nil || t.ExportPolicy == nil {
		return nil
	}
	return t.ExportPolicy
}

// GetImportPolicy retrieves the value of the leaf ImportPolicy from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ImportPolicy is set, it can
// safely use t.GetImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy) GetImportPolicy() []string {
	if t == nil || t.ImportPolicy == nil {
		return nil
	}
	return t.ImportPolicy
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DefaultExportPolicy == 0 {
		t.DefaultExportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	if t.DefaultImportPolicy == 0 {
		t.DefaultImportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_ApplyPolicy) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/graceful-restart YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_GracefulRestart) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast struct {
	ΛMetadata            []ygot.Annotation                                                                      `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                      `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                      `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4LabeledUnicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast struct {
	ΛMetadata                []ygot.Annotation                                                               `path:"@" ygotAnnotation:"true"`
	ExtendedNextHopEncoding  *bool                                                                           `path:"config/extended-next-hop-encoding" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtendedNextHopEncoding []ygot.Annotation                                                               `path:"config/@extended-next-hop-encoding" ygotAnnotation:"true"`
	PrefixLimit              *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit             []ygot.Annotation                                                               `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived      *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived     []ygot.Annotation                                                               `path:"@prefix-limit-received" ygotAnnotation:"true"`
	SendDefaultRoute         *bool                                                                           `path:"config/send-default-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSendDefaultRoute        []ygot.Annotation                                                               `path:"config/@send-default-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// GetExtendedNextHopEncoding retrieves the value of the leaf ExtendedNextHopEncoding from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtendedNextHopEncoding is set, it can
// safely use t.GetExtendedNextHopEncoding() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtendedNextHopEncoding == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast) GetExtendedNextHopEncoding() bool {
	if t == nil || t.ExtendedNextHopEncoding == nil {
		return false
	}
	return *t.ExtendedNextHopEncoding
}

// GetSendDefaultRoute retrieves the value of the leaf SendDefaultRoute from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SendDefaultRoute is set, it can
// safely use t.GetSendDefaultRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SendDefaultRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast) GetSendDefaultRoute() bool {
	if t == nil || t.SendDefaultRoute == nil {
		return false
	}
	return *t.SendDefaultRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.ExtendedNextHopEncoding == nil {
		var v bool = false
		t.ExtendedNextHopEncoding = &v
	}
	if t.SendDefaultRoute == nil {
		var v bool = false
		t.SendDefaultRoute = &v
	}
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv4Unicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast struct {
	ΛMetadata            []ygot.Annotation                                                                      `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                      `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                      `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6LabeledUnicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast struct {
	ΛMetadata            []ygot.Annotation                                                               `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                               `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                               `path:"@prefix-limit-received" ygotAnnotation:"true"`
	SendDefaultRoute     *bool                                                                           `path:"config/send-default-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSendDefaultRoute    []ygot.Annotation                                                               `path:"config/@send-default-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// GetSendDefaultRoute retrieves the value of the leaf SendDefaultRoute from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SendDefaultRoute is set, it can
// safely use t.GetSendDefaultRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SendDefaultRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast) GetSendDefaultRoute() bool {
	if t == nil || t.SendDefaultRoute == nil {
		return false
	}
	return *t.SendDefaultRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.SendDefaultRoute == nil {
		var v bool = false
		t.SendDefaultRoute = &v
	}
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_Ipv6Unicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l2vpn-evpn YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn struct {
	ΛMetadata            []ygot.Annotation                                                             `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                             `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                             `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l2vpn-evpn/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l2vpn-evpn/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnEvpn_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l2vpn-vpls YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls struct {
	ΛMetadata            []ygot.Annotation                                                             `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                             `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                             `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l2vpn-vpls/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l2vpn-vpls/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L2VpnVpls_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-multicast YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast struct {
	ΛMetadata            []ygot.Annotation                                                                      `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                      `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                      `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-multicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-multicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Multicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast struct {
	ΛMetadata            []ygot.Annotation                                                                    `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                    `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                    `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv4Unicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-multicast YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast struct {
	ΛMetadata            []ygot.Annotation                                                                      `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                      `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                      `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-multicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-multicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Multicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast struct {
	ΛMetadata            []ygot.Annotation                                                                    `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                    `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                    `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_L3VpnIpv6Unicast_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4 represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/srte-policy-ipv4 YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4 struct {
	ΛMetadata            []ygot.Annotation                                                                  `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                  `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                  `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/srte-policy-ipv4/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/srte-policy-ipv4/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv4_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6 represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/srte-policy-ipv6 YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6 struct {
	ΛMetadata            []ygot.Annotation                                                                  `path:"@" ygotAnnotation:"true"`
	PrefixLimit          *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit         `path:"prefix-limit" module:"openconfig-network-instance"`
	ΛPrefixLimit         []ygot.Annotation                                                                  `path:"@prefix-limit" ygotAnnotation:"true"`
	PrefixLimitReceived  *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived `path:"prefix-limit-received" module:"openconfig-network-instance"`
	ΛPrefixLimitReceived []ygot.Annotation                                                                  `path:"@prefix-limit-received" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6) IsYANGGoStruct() {}

// GetOrCreatePrefixLimit retrieves the value of the PrefixLimit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6) GetOrCreatePrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit {
	if t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	t.PrefixLimit = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit{}
	return t.PrefixLimit
}

// GetOrCreatePrefixLimitReceived retrieves the value of the PrefixLimitReceived field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6) GetOrCreatePrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived {
	if t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	t.PrefixLimitReceived = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived{}
	return t.PrefixLimitReceived
}

// GetPrefixLimit returns the value of the PrefixLimit struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6. If the receiver or the field PrefixLimit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6) GetPrefixLimit() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit {
	if t != nil && t.PrefixLimit != nil {
		return t.PrefixLimit
	}
	return nil
}

// GetPrefixLimitReceived returns the value of the PrefixLimitReceived struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6. If the receiver or the field PrefixLimitReceived is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6) GetPrefixLimitReceived() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived {
	if t != nil && t.PrefixLimitReceived != nil {
		return t.PrefixLimitReceived
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.PrefixLimit.PopulateDefaults()
	t.PrefixLimitReceived.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/srte-policy-ipv6/prefix-limit YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit) IsYANGGoStruct() {}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/srte-policy-ipv6/prefix-limit-received YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	MaxPrefixes          *uint32           `path:"config/max-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxPrefixes         []ygot.Annotation `path:"config/@max-prefixes" ygotAnnotation:"true"`
	PrefixLimitExceeded  *bool             `path:"state/prefix-limit-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLimitExceeded []ygot.Annotation `path:"state/@prefix-limit-exceeded" ygotAnnotation:"true"`
	PreventTeardown      *bool             `path:"config/prevent-teardown" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreventTeardown     []ygot.Annotation `path:"config/@prevent-teardown" ygotAnnotation:"true"`
	WarningThresholdPct  *uint8            `path:"config/warning-threshold-pct" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningThresholdPct []ygot.Annotation `path:"config/@warning-threshold-pct" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) IsYANGGoStruct() {
}

// GetMaxPrefixes retrieves the value of the leaf MaxPrefixes from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxPrefixes is set, it can
// safely use t.GetMaxPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) GetMaxPrefixes() uint32 {
	if t == nil || t.MaxPrefixes == nil {
		return 0
	}
	return *t.MaxPrefixes
}

// GetPrefixLimitExceeded retrieves the value of the leaf PrefixLimitExceeded from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLimitExceeded is set, it can
// safely use t.GetPrefixLimitExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLimitExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) GetPrefixLimitExceeded() bool {
	if t == nil || t.PrefixLimitExceeded == nil {
		return false
	}
	return *t.PrefixLimitExceeded
}

// GetPreventTeardown retrieves the value of the leaf PreventTeardown from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PreventTeardown is set, it can
// safely use t.GetPreventTeardown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PreventTeardown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) GetPreventTeardown() bool {
	if t == nil || t.PreventTeardown == nil {
		return false
	}
	return *t.PreventTeardown
}

// GetWarningThresholdPct retrieves the value of the leaf WarningThresholdPct from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningThresholdPct is set, it can
// safely use t.GetWarningThresholdPct() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningThresholdPct == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) GetWarningThresholdPct() uint8 {
	if t == nil || t.WarningThresholdPct == nil {
		return 0
	}
	return *t.WarningThresholdPct
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PreventTeardown == nil {
		var v bool = false
		t.PreventTeardown = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_SrtePolicyIpv6_PrefixLimitReceived) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/use-multiple-paths YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths struct {
	ΛMetadata []ygot.Annotation                                                     `path:"@" ygotAnnotation:"true"`
	Ebgp      *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp `path:"ebgp" module:"openconfig-network-instance"`
	ΛEbgp     []ygot.Annotation                                                     `path:"@ebgp" ygotAnnotation:"true"`
	Enabled   *bool                                                                 `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation                                                     `path:"config/@enabled" ygotAnnotation:"true"`
	Ibgp      *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp `path:"ibgp" module:"openconfig-network-instance"`
	ΛIbgp     []ygot.Annotation                                                     `path:"@ibgp" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths) IsYANGGoStruct() {}

// GetOrCreateEbgp retrieves the value of the Ebgp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths) GetOrCreateEbgp() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp {
	if t.Ebgp != nil {
		return t.Ebgp
	}
	t.Ebgp = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp{}
	return t.Ebgp
}

// GetOrCreateIbgp retrieves the value of the Ibgp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths) GetOrCreateIbgp() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp {
	if t.Ibgp != nil {
		return t.Ibgp
	}
	t.Ibgp = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp{}
	return t.Ibgp
}

// GetEbgp returns the value of the Ebgp struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths. If the receiver or the field Ebgp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths) GetEbgp() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp {
	if t != nil && t.Ebgp != nil {
		return t.Ebgp
	}
	return nil
}

// GetIbgp returns the value of the Ibgp struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths. If the receiver or the field Ibgp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths) GetIbgp() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp {
	if t != nil && t.Ibgp != nil {
		return t.Ibgp
	}
	return nil
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	t.Ebgp.PopulateDefaults()
	t.Ibgp.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/use-multiple-paths/ebgp YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp struct {
	ΛMetadata                  []ygot.Annotation                                                                               `path:"@" ygotAnnotation:"true"`
	AllowMultipleAs            *bool                                                                                           `path:"config/allow-multiple-as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAllowMultipleAs           []ygot.Annotation                                                                               `path:"config/@allow-multiple-as" ygotAnnotation:"true"`
	LinkBandwidthExtCommunity  *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity `path:"link-bandwidth-ext-community" module:"openconfig-network-instance"`
	ΛLinkBandwidthExtCommunity []ygot.Annotation                                                                               `path:"@link-bandwidth-ext-community" ygotAnnotation:"true"`
	MaximumPaths               *uint32                                                                                         `path:"config/maximum-paths" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximumPaths              []ygot.Annotation                                                                               `path:"config/@maximum-paths" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp) IsYANGGoStruct() {}

// GetOrCreateLinkBandwidthExtCommunity retrieves the value of the LinkBandwidthExtCommunity field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp) GetOrCreateLinkBandwidthExtCommunity() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity {
	if t.LinkBandwidthExtCommunity != nil {
		return t.LinkBandwidthExtCommunity
	}
	t.LinkBandwidthExtCommunity = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity{}
	return t.LinkBandwidthExtCommunity
}

// GetLinkBandwidthExtCommunity returns the value of the LinkBandwidthExtCommunity struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp. If the receiver or the field LinkBandwidthExtCommunity is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp) GetLinkBandwidthExtCommunity() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity {
	if t != nil && t.LinkBandwidthExtCommunity != nil {
		return t.LinkBandwidthExtCommunity
	}
	return nil
}

// GetAllowMultipleAs retrieves the value of the leaf AllowMultipleAs from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AllowMultipleAs is set, it can
// safely use t.GetAllowMultipleAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AllowMultipleAs == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp) GetAllowMultipleAs() bool {
	if t == nil || t.AllowMultipleAs == nil {
		return false
	}
	return *t.AllowMultipleAs
}

// GetMaximumPaths retrieves the value of the leaf MaximumPaths from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaximumPaths is set, it can
// safely use t.GetMaximumPaths() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaximumPaths == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp) GetMaximumPaths() uint32 {
	if t == nil || t.MaximumPaths == nil {
		return 1
	}
	return *t.MaximumPaths
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AllowMultipleAs == nil {
		var v bool = false
		t.AllowMultipleAs = &v
	}
	if t.MaximumPaths == nil {
		var v uint32 = 1
		t.MaximumPaths = &v
	}
	t.LinkBandwidthExtCommunity.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/use-multiple-paths/ebgp/link-bandwidth-ext-community YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) IsYANGGoStruct() {
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/use-multiple-paths/ibgp YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp struct {
	ΛMetadata                  []ygot.Annotation                                                                               `path:"@" ygotAnnotation:"true"`
	LinkBandwidthExtCommunity  *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity `path:"link-bandwidth-ext-community" module:"openconfig-network-instance"`
	ΛLinkBandwidthExtCommunity []ygot.Annotation                                                                               `path:"@link-bandwidth-ext-community" ygotAnnotation:"true"`
	MaximumPaths               *uint32                                                                                         `path:"config/maximum-paths" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximumPaths              []ygot.Annotation                                                                               `path:"config/@maximum-paths" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp) IsYANGGoStruct() {}

// GetOrCreateLinkBandwidthExtCommunity retrieves the value of the LinkBandwidthExtCommunity field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp) GetOrCreateLinkBandwidthExtCommunity() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity {
	if t.LinkBandwidthExtCommunity != nil {
		return t.LinkBandwidthExtCommunity
	}
	t.LinkBandwidthExtCommunity = &NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity{}
	return t.LinkBandwidthExtCommunity
}

// GetLinkBandwidthExtCommunity returns the value of the LinkBandwidthExtCommunity struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp. If the receiver or the field LinkBandwidthExtCommunity is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp) GetLinkBandwidthExtCommunity() *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity {
	if t != nil && t.LinkBandwidthExtCommunity != nil {
		return t.LinkBandwidthExtCommunity
	}
	return nil
}

// GetMaximumPaths retrieves the value of the leaf MaximumPaths from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaximumPaths is set, it can
// safely use t.GetMaximumPaths() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaximumPaths == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp) GetMaximumPaths() uint32 {
	if t == nil || t.MaximumPaths == nil {
		return 1
	}
	return *t.MaximumPaths
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MaximumPaths == nil {
		var v uint32 = 1
		t.MaximumPaths = &v
	}
	t.LinkBandwidthExtCommunity.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/use-multiple-paths/ibgp/link-bandwidth-ext-community YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) IsYANGGoStruct() {
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AfiSafi_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/apply-policy YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy struct {
	ΛMetadata            []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	DefaultExportPolicy  E_RoutingPolicy_DefaultPolicyType `path:"config/default-export-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultExportPolicy []ygot.Annotation                 `path:"config/@default-export-policy" ygotAnnotation:"true"`
	DefaultImportPolicy  E_RoutingPolicy_DefaultPolicyType `path:"config/default-import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultImportPolicy []ygot.Annotation                 `path:"config/@default-import-policy" ygotAnnotation:"true"`
	ExportPolicy         []string                          `path:"config/export-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExportPolicy        []ygot.Annotation                 `path:"config/@export-policy" ygotAnnotation:"true"`
	ImportPolicy         []string                          `path:"config/import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛImportPolicy        []ygot.Annotation                 `path:"config/@import-policy" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy) IsYANGGoStruct() {}

// GetDefaultExportPolicy retrieves the value of the leaf DefaultExportPolicy from the NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultExportPolicy is set, it can
// safely use t.GetDefaultExportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultExportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy) GetDefaultExportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultExportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultExportPolicy
}

// GetDefaultImportPolicy retrieves the value of the leaf DefaultImportPolicy from the NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultImportPolicy is set, it can
// safely use t.GetDefaultImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy) GetDefaultImportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultImportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultImportPolicy
}

// GetExportPolicy retrieves the value of the leaf ExportPolicy from the NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExportPolicy is set, it can
// safely use t.GetExportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy) GetExportPolicy() []string {
	if t == nil || t.ExportPolicy == nil {
		return nil
	}
	return t.ExportPolicy
}

// GetImportPolicy retrieves the value of the leaf ImportPolicy from the NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ImportPolicy is set, it can
// safely use t.GetImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy) GetImportPolicy() []string {
	if t == nil || t.ImportPolicy == nil {
		return nil
	}
	return t.ImportPolicy
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DefaultExportPolicy == 0 {
		t.DefaultExportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	if t.DefaultImportPolicy == 0 {
		t.DefaultImportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_ApplyPolicy) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/as-path-options YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AllowOwnAs           *uint8            `path:"config/allow-own-as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAllowOwnAs          []ygot.Annotation `path:"config/@allow-own-as" ygotAnnotation:"true"`
	DisablePeerAsFilter  *bool             `path:"config/disable-peer-as-filter" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDisablePeerAsFilter []ygot.Annotation `path:"config/@disable-peer-as-filter" ygotAnnotation:"true"`
	ReplacePeerAs        *bool             `path:"config/replace-peer-as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReplacePeerAs       []ygot.Annotation `path:"config/@replace-peer-as" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions) IsYANGGoStruct() {}

// GetAllowOwnAs retrieves the value of the leaf AllowOwnAs from the NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AllowOwnAs is set, it can
// safely use t.GetAllowOwnAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AllowOwnAs == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions) GetAllowOwnAs() uint8 {
	if t == nil || t.AllowOwnAs == nil {
		return 0
	}
	return *t.AllowOwnAs
}

// GetDisablePeerAsFilter retrieves the value of the leaf DisablePeerAsFilter from the NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DisablePeerAsFilter is set, it can
// safely use t.GetDisablePeerAsFilter() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DisablePeerAsFilter == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions) GetDisablePeerAsFilter() bool {
	if t == nil || t.DisablePeerAsFilter == nil {
		return false
	}
	return *t.DisablePeerAsFilter
}

// GetReplacePeerAs retrieves the value of the leaf ReplacePeerAs from the NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReplacePeerAs is set, it can
// safely use t.GetReplacePeerAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReplacePeerAs == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions) GetReplacePeerAs() bool {
	if t == nil || t.ReplacePeerAs == nil {
		return false
	}
	return *t.ReplacePeerAs
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AllowOwnAs == nil {
		var v uint8 = 0
		t.AllowOwnAs = &v
	}
	if t.DisablePeerAsFilter == nil {
		var v bool = false
		t.DisablePeerAsFilter = &v
	}
	if t.ReplacePeerAs == nil {
		var v bool = false
		t.ReplacePeerAs = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_AsPathOptions) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/ebgp-multihop YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop struct {
	ΛMetadata    []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled      *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled     []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
	MultihopTtl  *uint8            `path:"config/multihop-ttl" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMultihopTtl []ygot.Annotation `path:"config/@multihop-ttl" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetMultihopTtl retrieves the value of the leaf MultihopTtl from the NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MultihopTtl is set, it can
// safely use t.GetMultihopTtl() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MultihopTtl == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop) GetMultihopTtl() uint8 {
	if t == nil || t.MultihopTtl == nil {
		return 0
	}
	return *t.MultihopTtl
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_EbgpMultihop) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/enable-bfd YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_EnableBfd) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/error-handling YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	TreatAsWithdraw  *bool             `path:"config/treat-as-withdraw" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTreatAsWithdraw []ygot.Annotation `path:"config/@treat-as-withdraw" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling) IsYANGGoStruct() {}

// GetTreatAsWithdraw retrieves the value of the leaf TreatAsWithdraw from the NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TreatAsWithdraw is set, it can
// safely use t.GetTreatAsWithdraw() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TreatAsWithdraw == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling) GetTreatAsWithdraw() bool {
	if t == nil || t.TreatAsWithdraw == nil {
		return false
	}
	return *t.TreatAsWithdraw
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.TreatAsWithdraw == nil {
		var v bool = false
		t.TreatAsWithdraw = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_ErrorHandling) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/graceful-restart YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled          *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled         []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
	HelperOnly       *bool             `path:"config/helper-only" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelperOnly      []ygot.Annotation `path:"config/@helper-only" ygotAnnotation:"true"`
	RestartTime      *uint16           `path:"config/restart-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRestartTime     []ygot.Annotation `path:"config/@restart-time" ygotAnnotation:"true"`
	StaleRoutesTime  *uint16           `path:"config/stale-routes-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛStaleRoutesTime []ygot.Annotation `path:"config/@stale-routes-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetHelperOnly retrieves the value of the leaf HelperOnly from the NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelperOnly is set, it can
// safely use t.GetHelperOnly() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelperOnly == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart) GetHelperOnly() bool {
	if t == nil || t.HelperOnly == nil {
		return false
	}
	return *t.HelperOnly
}

// GetRestartTime retrieves the value of the leaf RestartTime from the NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RestartTime is set, it can
// safely use t.GetRestartTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RestartTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart) GetRestartTime() uint16 {
	if t == nil || t.RestartTime == nil {
		return 0
	}
	return *t.RestartTime
}

// GetStaleRoutesTime retrieves the value of the leaf StaleRoutesTime from the NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if StaleRoutesTime is set, it can
// safely use t.GetStaleRoutesTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.StaleRoutesTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart) GetStaleRoutesTime() uint16 {
	if t == nil || t.StaleRoutesTime == nil {
		return 0
	}
	return *t.StaleRoutesTime
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_GracefulRestart) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/logging-options YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions struct {
	ΛMetadata                []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	LogNeighborStateChanges  *bool             `path:"config/log-neighbor-state-changes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLogNeighborStateChanges []ygot.Annotation `path:"config/@log-neighbor-state-changes" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions) IsYANGGoStruct() {}

// GetLogNeighborStateChanges retrieves the value of the leaf LogNeighborStateChanges from the NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LogNeighborStateChanges is set, it can
// safely use t.GetLogNeighborStateChanges() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LogNeighborStateChanges == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions) GetLogNeighborStateChanges() bool {
	if t == nil || t.LogNeighborStateChanges == nil {
		return true
	}
	return *t.LogNeighborStateChanges
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.LogNeighborStateChanges == nil {
		var v bool = true
		t.LogNeighborStateChanges = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_LoggingOptions) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/route-reflector YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector struct {
	ΛMetadata                []ygot.Annotation                                                                   `path:"@" ygotAnnotation:"true"`
	RouteReflectorClient     *bool                                                                               `path:"config/route-reflector-client" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouteReflectorClient    []ygot.Annotation                                                                   `path:"config/@route-reflector-client" ygotAnnotation:"true"`
	RouteReflectorClusterId  NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector_RouteReflectorClusterId_Union `path:"config/route-reflector-cluster-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouteReflectorClusterId []ygot.Annotation                                                                   `path:"config/@route-reflector-cluster-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector) IsYANGGoStruct() {}

// GetRouteReflectorClient retrieves the value of the leaf RouteReflectorClient from the NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouteReflectorClient is set, it can
// safely use t.GetRouteReflectorClient() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouteReflectorClient == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector) GetRouteReflectorClient() bool {
	if t == nil || t.RouteReflectorClient == nil {
		return false
	}
	return *t.RouteReflectorClient
}

// GetRouteReflectorClusterId retrieves the value of the leaf RouteReflectorClusterId from the NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouteReflectorClusterId is set, it can
// safely use t.GetRouteReflectorClusterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouteReflectorClusterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector) GetRouteReflectorClusterId() NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector_RouteReflectorClusterId_Union {
	if t == nil || t.RouteReflectorClusterId == nil {
		return nil
	}
	return t.RouteReflectorClusterId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.RouteReflectorClient == nil {
		var v bool = false
		t.RouteReflectorClient = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector_RouteReflectorClusterId_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/route-reflector/config/route-reflector-cluster-id within the YANG schema.
// Union type can be one of [UnionString, UnionUint32].
type NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector_RouteReflectorClusterId_Union interface {
	// Union type can be one of [UnionString, UnionUint32]
	Documentation_for_NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector_RouteReflectorClusterId_Union()
}

// Documentation_for_NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector_RouteReflectorClusterId_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector_RouteReflectorClusterId_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector_RouteReflectorClusterId_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector_RouteReflectorClusterId_Union ensures that UnionUint32
// implements the NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector_RouteReflectorClusterId_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector_RouteReflectorClusterId_Union() {
}

// To_NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector_RouteReflectorClusterId_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector_RouteReflectorClusterId_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector) To_NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector_RouteReflectorClusterId_Union(i interface{}) (NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector_RouteReflectorClusterId_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector_RouteReflectorClusterId_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Bgp_PeerGroup_RouteReflector_RouteReflectorClusterId_Union, unknown union type, got: %T, want any of [string, uint32]", i, i)
}

// NetworkInstance_Protocol_Bgp_PeerGroup_Timers represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/timers YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_Timers struct {
	ΛMetadata                     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ConnectRetry                  *uint16           `path:"config/connect-retry" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛConnectRetry                 []ygot.Annotation `path:"config/@connect-retry" ygotAnnotation:"true"`
	HoldTime                      *uint16           `path:"config/hold-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHoldTime                     []ygot.Annotation `path:"config/@hold-time" ygotAnnotation:"true"`
	KeepaliveInterval             *uint16           `path:"config/keepalive-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛKeepaliveInterval            []ygot.Annotation `path:"config/@keepalive-interval" ygotAnnotation:"true"`
	MinimumAdvertisementInterval  *uint16           `path:"config/minimum-advertisement-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMinimumAdvertisementInterval []ygot.Annotation `path:"config/@minimum-advertisement-interval" ygotAnnotation:"true"`
	RestartTime                   *uint16           `path:"config/restart-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRestartTime                  []ygot.Annotation `path:"config/@restart-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_Timers implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_Timers) IsYANGGoStruct() {}

// GetConnectRetry retrieves the value of the leaf ConnectRetry from the NetworkInstance_Protocol_Bgp_PeerGroup_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ConnectRetry is set, it can
// safely use t.GetConnectRetry() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ConnectRetry == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_Timers) GetConnectRetry() uint16 {
	if t == nil || t.ConnectRetry == nil {
		return 30
	}
	return *t.ConnectRetry
}

// GetHoldTime retrieves the value of the leaf HoldTime from the NetworkInstance_Protocol_Bgp_PeerGroup_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HoldTime is set, it can
// safely use t.GetHoldTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HoldTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_Timers) GetHoldTime() uint16 {
	if t == nil || t.HoldTime == nil {
		return 90
	}
	return *t.HoldTime
}

// GetKeepaliveInterval retrieves the value of the leaf KeepaliveInterval from the NetworkInstance_Protocol_Bgp_PeerGroup_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if KeepaliveInterval is set, it can
// safely use t.GetKeepaliveInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.KeepaliveInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_Timers) GetKeepaliveInterval() uint16 {
	if t == nil || t.KeepaliveInterval == nil {
		return 30
	}
	return *t.KeepaliveInterval
}

// GetMinimumAdvertisementInterval retrieves the value of the leaf MinimumAdvertisementInterval from the NetworkInstance_Protocol_Bgp_PeerGroup_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinimumAdvertisementInterval is set, it can
// safely use t.GetMinimumAdvertisementInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinimumAdvertisementInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_Timers) GetMinimumAdvertisementInterval() uint16 {
	if t == nil || t.MinimumAdvertisementInterval == nil {
		return 30
	}
	return *t.MinimumAdvertisementInterval
}

// GetRestartTime retrieves the value of the leaf RestartTime from the NetworkInstance_Protocol_Bgp_PeerGroup_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RestartTime is set, it can
// safely use t.GetRestartTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RestartTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_Timers) GetRestartTime() uint16 {
	if t == nil || t.RestartTime == nil {
		return 0
	}
	return *t.RestartTime
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_Timers
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_Timers) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.ConnectRetry == nil {
		var v uint16 = 30
		t.ConnectRetry = &v
	}
	if t.HoldTime == nil {
		var v uint16 = 90
		t.HoldTime = &v
	}
	if t.KeepaliveInterval == nil {
		var v uint16 = 30
		t.KeepaliveInterval = &v
	}
	if t.MinimumAdvertisementInterval == nil {
		var v uint16 = 30
		t.MinimumAdvertisementInterval = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_Timers) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_Timers"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_Timers) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_Timers) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_Timers.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_Timers) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_Transport represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/transport YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_Transport struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	LocalAddress  *string           `path:"config/local-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalAddress []ygot.Annotation `path:"config/@local-address" ygotAnnotation:"true"`
	MtuDiscovery  *bool             `path:"config/mtu-discovery" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMtuDiscovery []ygot.Annotation `path:"config/@mtu-discovery" ygotAnnotation:"true"`
	PassiveMode   *bool             `path:"config/passive-mode" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPassiveMode  []ygot.Annotation `path:"config/@passive-mode" ygotAnnotation:"true"`
	TcpMss        *uint16           `path:"config/tcp-mss" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTcpMss       []ygot.Annotation `path:"config/@tcp-mss" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_Transport implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_Transport) IsYANGGoStruct() {}

// GetLocalAddress retrieves the value of the leaf LocalAddress from the NetworkInstance_Protocol_Bgp_PeerGroup_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalAddress is set, it can
// safely use t.GetLocalAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_Transport) GetLocalAddress() string {
	if t == nil || t.LocalAddress == nil {
		return ""
	}
	return *t.LocalAddress
}

// GetMtuDiscovery retrieves the value of the leaf MtuDiscovery from the NetworkInstance_Protocol_Bgp_PeerGroup_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MtuDiscovery is set, it can
// safely use t.GetMtuDiscovery() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MtuDiscovery == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_Transport) GetMtuDiscovery() bool {
	if t == nil || t.MtuDiscovery == nil {
		return false
	}
	return *t.MtuDiscovery
}

// GetPassiveMode retrieves the value of the leaf PassiveMode from the NetworkInstance_Protocol_Bgp_PeerGroup_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PassiveMode is set, it can
// safely use t.GetPassiveMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PassiveMode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_Transport) GetPassiveMode() bool {
	if t == nil || t.PassiveMode == nil {
		return false
	}
	return *t.PassiveMode
}

// GetTcpMss retrieves the value of the leaf TcpMss from the NetworkInstance_Protocol_Bgp_PeerGroup_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TcpMss is set, it can
// safely use t.GetTcpMss() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TcpMss == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_Transport) GetTcpMss() uint16 {
	if t == nil || t.TcpMss == nil {
		return 0
	}
	return *t.TcpMss
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_Transport
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_Transport) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MtuDiscovery == nil {
		var v bool = false
		t.MtuDiscovery = &v
	}
	if t.PassiveMode == nil {
		var v bool = false
		t.PassiveMode = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_Transport) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_Transport"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_Transport) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_Transport) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_Transport.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_Transport) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/use-multiple-paths YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths struct {
	ΛMetadata []ygot.Annotation                                             `path:"@" ygotAnnotation:"true"`
	Ebgp      *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp `path:"ebgp" module:"openconfig-network-instance"`
	ΛEbgp     []ygot.Annotation                                             `path:"@ebgp" ygotAnnotation:"true"`
	Enabled   *bool                                                         `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation                                             `path:"config/@enabled" ygotAnnotation:"true"`
	Ibgp      *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp `path:"ibgp" module:"openconfig-network-instance"`
	ΛIbgp     []ygot.Annotation                                             `path:"@ibgp" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths) IsYANGGoStruct() {}

// GetOrCreateEbgp retrieves the value of the Ebgp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths) GetOrCreateEbgp() *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp {
	if t.Ebgp != nil {
		return t.Ebgp
	}
	t.Ebgp = &NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp{}
	return t.Ebgp
}

// GetOrCreateIbgp retrieves the value of the Ibgp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths) GetOrCreateIbgp() *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp {
	if t.Ibgp != nil {
		return t.Ibgp
	}
	t.Ibgp = &NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp{}
	return t.Ibgp
}

// GetEbgp returns the value of the Ebgp struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths. If the receiver or the field Ebgp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths) GetEbgp() *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp {
	if t != nil && t.Ebgp != nil {
		return t.Ebgp
	}
	return nil
}

// GetIbgp returns the value of the Ibgp struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths. If the receiver or the field Ibgp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths) GetIbgp() *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp {
	if t != nil && t.Ibgp != nil {
		return t.Ibgp
	}
	return nil
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	t.Ebgp.PopulateDefaults()
	t.Ibgp.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/use-multiple-paths/ebgp YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp struct {
	ΛMetadata                  []ygot.Annotation                                                                       `path:"@" ygotAnnotation:"true"`
	AllowMultipleAs            *bool                                                                                   `path:"config/allow-multiple-as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAllowMultipleAs           []ygot.Annotation                                                                       `path:"config/@allow-multiple-as" ygotAnnotation:"true"`
	LinkBandwidthExtCommunity  *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity `path:"link-bandwidth-ext-community" module:"openconfig-network-instance"`
	ΛLinkBandwidthExtCommunity []ygot.Annotation                                                                       `path:"@link-bandwidth-ext-community" ygotAnnotation:"true"`
	MaximumPaths               *uint32                                                                                 `path:"config/maximum-paths" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximumPaths              []ygot.Annotation                                                                       `path:"config/@maximum-paths" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp) IsYANGGoStruct() {}

// GetOrCreateLinkBandwidthExtCommunity retrieves the value of the LinkBandwidthExtCommunity field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp) GetOrCreateLinkBandwidthExtCommunity() *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity {
	if t.LinkBandwidthExtCommunity != nil {
		return t.LinkBandwidthExtCommunity
	}
	t.LinkBandwidthExtCommunity = &NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity{}
	return t.LinkBandwidthExtCommunity
}

// GetLinkBandwidthExtCommunity returns the value of the LinkBandwidthExtCommunity struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp. If the receiver or the field LinkBandwidthExtCommunity is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp) GetLinkBandwidthExtCommunity() *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity {
	if t != nil && t.LinkBandwidthExtCommunity != nil {
		return t.LinkBandwidthExtCommunity
	}
	return nil
}

// GetAllowMultipleAs retrieves the value of the leaf AllowMultipleAs from the NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AllowMultipleAs is set, it can
// safely use t.GetAllowMultipleAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AllowMultipleAs == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp) GetAllowMultipleAs() bool {
	if t == nil || t.AllowMultipleAs == nil {
		return false
	}
	return *t.AllowMultipleAs
}

// GetMaximumPaths retrieves the value of the leaf MaximumPaths from the NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaximumPaths is set, it can
// safely use t.GetMaximumPaths() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaximumPaths == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp) GetMaximumPaths() uint32 {
	if t == nil || t.MaximumPaths == nil {
		return 1
	}
	return *t.MaximumPaths
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AllowMultipleAs == nil {
		var v bool = false
		t.AllowMultipleAs = &v
	}
	if t.MaximumPaths == nil {
		var v uint32 = 1
		t.MaximumPaths = &v
	}
	t.LinkBandwidthExtCommunity.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/use-multiple-paths/ebgp/link-bandwidth-ext-community YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) IsYANGGoStruct() {
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ebgp_LinkBandwidthExtCommunity) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/use-multiple-paths/ibgp YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp struct {
	ΛMetadata                  []ygot.Annotation                                                                       `path:"@" ygotAnnotation:"true"`
	LinkBandwidthExtCommunity  *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity `path:"link-bandwidth-ext-community" module:"openconfig-network-instance"`
	ΛLinkBandwidthExtCommunity []ygot.Annotation                                                                       `path:"@link-bandwidth-ext-community" ygotAnnotation:"true"`
	MaximumPaths               *uint32                                                                                 `path:"config/maximum-paths" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximumPaths              []ygot.Annotation                                                                       `path:"config/@maximum-paths" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp) IsYANGGoStruct() {}

// GetOrCreateLinkBandwidthExtCommunity retrieves the value of the LinkBandwidthExtCommunity field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp) GetOrCreateLinkBandwidthExtCommunity() *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity {
	if t.LinkBandwidthExtCommunity != nil {
		return t.LinkBandwidthExtCommunity
	}
	t.LinkBandwidthExtCommunity = &NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity{}
	return t.LinkBandwidthExtCommunity
}

// GetLinkBandwidthExtCommunity returns the value of the LinkBandwidthExtCommunity struct pointer
// from NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp. If the receiver or the field LinkBandwidthExtCommunity is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp) GetLinkBandwidthExtCommunity() *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity {
	if t != nil && t.LinkBandwidthExtCommunity != nil {
		return t.LinkBandwidthExtCommunity
	}
	return nil
}

// GetMaximumPaths retrieves the value of the leaf MaximumPaths from the NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaximumPaths is set, it can
// safely use t.GetMaximumPaths() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaximumPaths == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp) GetMaximumPaths() uint32 {
	if t == nil || t.MaximumPaths == nil {
		return 1
	}
	return *t.MaximumPaths
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MaximumPaths == nil {
		var v uint32 = 1
		t.MaximumPaths = &v
	}
	t.LinkBandwidthExtCommunity.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/use-multiple-paths/ibgp/link-bandwidth-ext-community YANG schema element.
type NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) IsYANGGoStruct() {
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity.
func (*NetworkInstance_Protocol_Bgp_PeerGroup_UseMultiplePaths_Ibgp_LinkBandwidthExtCommunity) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib struct {
	ΛMetadata     []ygot.Annotation                                                      `path:"@" ygotAnnotation:"true"`
	AfiSafi       map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi `path:"afi-safis/afi-safi" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAfiSafi      []ygot.Annotation                                                      `path:"afi-safis/@afi-safi" ygotAnnotation:"true"`
	AttrSet       map[uint64]*NetworkInstance_Protocol_Bgp_Rib_AttrSet                   `path:"attr-sets/attr-set" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrSet      []ygot.Annotation                                                      `path:"attr-sets/@attr-set" ygotAnnotation:"true"`
	Community     map[uint64]*NetworkInstance_Protocol_Bgp_Rib_Community                 `path:"communities/community" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunity    []ygot.Annotation                                                      `path:"communities/@community" ygotAnnotation:"true"`
	ExtCommunity  map[uint64]*NetworkInstance_Protocol_Bgp_Rib_ExtCommunity              `path:"ext-communities/ext-community" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunity []ygot.Annotation                                                      `path:"ext-communities/@ext-community" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib) IsYANGGoStruct() {}

// NewAfiSafi creates a new entry in the AfiSafi list of the
// NetworkInstance_Protocol_Bgp_Rib struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib) NewAfiSafi(AfiSafiName E_BgpTypes_AFI_SAFI_TYPE) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AfiSafi == nil {
		t.AfiSafi = make(map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi)
	}

	key := AfiSafiName

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AfiSafi[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AfiSafi", key)
	}

	t.AfiSafi[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi{
		AfiSafiName: AfiSafiName,
	}

	return t.AfiSafi[key], nil
}

// RenameAfiSafi renames an entry in the list AfiSafi within
// the NetworkInstance_Protocol_Bgp_Rib struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib) RenameAfiSafi(oldK, newK E_BgpTypes_AFI_SAFI_TYPE) error {
	if _, ok := t.AfiSafi[newK]; ok {
		return fmt.Errorf("key %v already exists in AfiSafi", newK)
	}

	e, ok := t.AfiSafi[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AfiSafi", oldK)
	}
	e.AfiSafiName = newK

	t.AfiSafi[newK] = e
	delete(t.AfiSafi, oldK)
	return nil
}

// GetOrCreateAfiSafiMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib) GetOrCreateAfiSafiMap() map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi {
	if t.AfiSafi == nil {
		t.AfiSafi = make(map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi)
	}
	return t.AfiSafi
}

// GetOrCreateAfiSafi retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib) GetOrCreateAfiSafi(AfiSafiName E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi {

	key := AfiSafiName

	if v, ok := t.AfiSafi[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAfiSafi(AfiSafiName)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAfiSafi got unexpected error: %v", err))
	}
	return v
}

// GetAfiSafi retrieves the value with the specified key from
// the AfiSafi map field of NetworkInstance_Protocol_Bgp_Rib. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib) GetAfiSafi(AfiSafiName E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi {

	if t == nil {
		return nil
	}

	key := AfiSafiName

	if lm, ok := t.AfiSafi[key]; ok {
		return lm
	}
	return nil
}

// AppendAfiSafi appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi struct to the
// list AfiSafi of NetworkInstance_Protocol_Bgp_Rib. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib) AppendAfiSafi(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi) error {
	key := v.AfiSafiName

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AfiSafi == nil {
		t.AfiSafi = make(map[E_BgpTypes_AFI_SAFI_TYPE]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi)
	}

	if _, ok := t.AfiSafi[key]; ok {
		return fmt.Errorf("duplicate key for list AfiSafi %v", key)
	}

	t.AfiSafi[key] = v
	return nil
}

// NewAttrSet creates a new entry in the AttrSet list of the
// NetworkInstance_Protocol_Bgp_Rib struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib) NewAttrSet(Index uint64) (*NetworkInstance_Protocol_Bgp_Rib_AttrSet, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AttrSet == nil {
		t.AttrSet = make(map[uint64]*NetworkInstance_Protocol_Bgp_Rib_AttrSet)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AttrSet[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AttrSet", key)
	}

	t.AttrSet[key] = &NetworkInstance_Protocol_Bgp_Rib_AttrSet{
		Index: &Index,
	}

	return t.AttrSet[key], nil
}

// RenameAttrSet renames an entry in the list AttrSet within
// the NetworkInstance_Protocol_Bgp_Rib struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib) RenameAttrSet(oldK, newK uint64) error {
	if _, ok := t.AttrSet[newK]; ok {
		return fmt.Errorf("key %v already exists in AttrSet", newK)
	}

	e, ok := t.AttrSet[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AttrSet", oldK)
	}
	e.Index = &newK

	t.AttrSet[newK] = e
	delete(t.AttrSet, oldK)
	return nil
}

// GetOrCreateAttrSetMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib) GetOrCreateAttrSetMap() map[uint64]*NetworkInstance_Protocol_Bgp_Rib_AttrSet {
	if t.AttrSet == nil {
		t.AttrSet = make(map[uint64]*NetworkInstance_Protocol_Bgp_Rib_AttrSet)
	}
	return t.AttrSet
}

// GetOrCreateAttrSet retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib) GetOrCreateAttrSet(Index uint64) *NetworkInstance_Protocol_Bgp_Rib_AttrSet {

	key := Index

	if v, ok := t.AttrSet[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAttrSet(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAttrSet got unexpected error: %v", err))
	}
	return v
}

// GetAttrSet retrieves the value with the specified key from
// the AttrSet map field of NetworkInstance_Protocol_Bgp_Rib. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib) GetAttrSet(Index uint64) *NetworkInstance_Protocol_Bgp_Rib_AttrSet {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.AttrSet[key]; ok {
		return lm
	}
	return nil
}

// AppendAttrSet appends the supplied NetworkInstance_Protocol_Bgp_Rib_AttrSet struct to the
// list AttrSet of NetworkInstance_Protocol_Bgp_Rib. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AttrSet already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib) AppendAttrSet(v *NetworkInstance_Protocol_Bgp_Rib_AttrSet) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AttrSet == nil {
		t.AttrSet = make(map[uint64]*NetworkInstance_Protocol_Bgp_Rib_AttrSet)
	}

	if _, ok := t.AttrSet[key]; ok {
		return fmt.Errorf("duplicate key for list AttrSet %v", key)
	}

	t.AttrSet[key] = v
	return nil
}

// NewCommunity creates a new entry in the Community list of the
// NetworkInstance_Protocol_Bgp_Rib struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib) NewCommunity(Index uint64) (*NetworkInstance_Protocol_Bgp_Rib_Community, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Community == nil {
		t.Community = make(map[uint64]*NetworkInstance_Protocol_Bgp_Rib_Community)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Community[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Community", key)
	}

	t.Community[key] = &NetworkInstance_Protocol_Bgp_Rib_Community{
		Index: &Index,
	}

	return t.Community[key], nil
}

// RenameCommunity renames an entry in the list Community within
// the NetworkInstance_Protocol_Bgp_Rib struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib) RenameCommunity(oldK, newK uint64) error {
	if _, ok := t.Community[newK]; ok {
		return fmt.Errorf("key %v already exists in Community", newK)
	}

	e, ok := t.Community[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Community", oldK)
	}
	e.Index = &newK

	t.Community[newK] = e
	delete(t.Community, oldK)
	return nil
}

// GetOrCreateCommunityMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib) GetOrCreateCommunityMap() map[uint64]*NetworkInstance_Protocol_Bgp_Rib_Community {
	if t.Community == nil {
		t.Community = make(map[uint64]*NetworkInstance_Protocol_Bgp_Rib_Community)
	}
	return t.Community
}

// GetOrCreateCommunity retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib) GetOrCreateCommunity(Index uint64) *NetworkInstance_Protocol_Bgp_Rib_Community {

	key := Index

	if v, ok := t.Community[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewCommunity(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateCommunity got unexpected error: %v", err))
	}
	return v
}

// GetCommunity retrieves the value with the specified key from
// the Community map field of NetworkInstance_Protocol_Bgp_Rib. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib) GetCommunity(Index uint64) *NetworkInstance_Protocol_Bgp_Rib_Community {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.Community[key]; ok {
		return lm
	}
	return nil
}

// AppendCommunity appends the supplied NetworkInstance_Protocol_Bgp_Rib_Community struct to the
// list Community of NetworkInstance_Protocol_Bgp_Rib. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_Community already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib) AppendCommunity(v *NetworkInstance_Protocol_Bgp_Rib_Community) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Community == nil {
		t.Community = make(map[uint64]*NetworkInstance_Protocol_Bgp_Rib_Community)
	}

	if _, ok := t.Community[key]; ok {
		return fmt.Errorf("duplicate key for list Community %v", key)
	}

	t.Community[key] = v
	return nil
}

// NewExtCommunity creates a new entry in the ExtCommunity list of the
// NetworkInstance_Protocol_Bgp_Rib struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib) NewExtCommunity(Index uint64) (*NetworkInstance_Protocol_Bgp_Rib_ExtCommunity, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ExtCommunity == nil {
		t.ExtCommunity = make(map[uint64]*NetworkInstance_Protocol_Bgp_Rib_ExtCommunity)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.ExtCommunity[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list ExtCommunity", key)
	}

	t.ExtCommunity[key] = &NetworkInstance_Protocol_Bgp_Rib_ExtCommunity{
		Index: &Index,
	}

	return t.ExtCommunity[key], nil
}

// RenameExtCommunity renames an entry in the list ExtCommunity within
// the NetworkInstance_Protocol_Bgp_Rib struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib) RenameExtCommunity(oldK, newK uint64) error {
	if _, ok := t.ExtCommunity[newK]; ok {
		return fmt.Errorf("key %v already exists in ExtCommunity", newK)
	}

	e, ok := t.ExtCommunity[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in ExtCommunity", oldK)
	}
	e.Index = &newK

	t.ExtCommunity[newK] = e
	delete(t.ExtCommunity, oldK)
	return nil
}

// GetOrCreateExtCommunityMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib) GetOrCreateExtCommunityMap() map[uint64]*NetworkInstance_Protocol_Bgp_Rib_ExtCommunity {
	if t.ExtCommunity == nil {
		t.ExtCommunity = make(map[uint64]*NetworkInstance_Protocol_Bgp_Rib_ExtCommunity)
	}
	return t.ExtCommunity
}

// GetOrCreateExtCommunity retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib) GetOrCreateExtCommunity(Index uint64) *NetworkInstance_Protocol_Bgp_Rib_ExtCommunity {

	key := Index

	if v, ok := t.ExtCommunity[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewExtCommunity(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateExtCommunity got unexpected error: %v", err))
	}
	return v
}

// GetExtCommunity retrieves the value with the specified key from
// the ExtCommunity map field of NetworkInstance_Protocol_Bgp_Rib. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib) GetExtCommunity(Index uint64) *NetworkInstance_Protocol_Bgp_Rib_ExtCommunity {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.ExtCommunity[key]; ok {
		return lm
	}
	return nil
}

// AppendExtCommunity appends the supplied NetworkInstance_Protocol_Bgp_Rib_ExtCommunity struct to the
// list ExtCommunity of NetworkInstance_Protocol_Bgp_Rib. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_ExtCommunity already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib) AppendExtCommunity(v *NetworkInstance_Protocol_Bgp_Rib_ExtCommunity) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ExtCommunity == nil {
		t.ExtCommunity = make(map[uint64]*NetworkInstance_Protocol_Bgp_Rib_ExtCommunity)
	}

	if _, ok := t.ExtCommunity[key]; ok {
		return fmt.Errorf("duplicate key for list ExtCommunity %v", key)
	}

	t.ExtCommunity[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.AfiSafi {
		e.PopulateDefaults()
	}
	for _, e := range t.AttrSet {
		e.PopulateDefaults()
	}
	for _, e := range t.Community {
		e.PopulateDefaults()
	}
	for _, e := range t.ExtCommunity {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib.
func (*NetworkInstance_Protocol_Bgp_Rib) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi struct {
	ΛMetadata       []ygot.Annotation                                        `path:"@" ygotAnnotation:"true"`
	AfiSafiName     E_BgpTypes_AFI_SAFI_TYPE                                 `path:"state/afi-safi-name|afi-safi-name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAfiSafiName    []ygot.Annotation                                        `path:"state/@afi-safi-name|@afi-safi-name" ygotAnnotation:"true"`
	Ipv4SrtePolicy  *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy `path:"ipv4-srte-policy" module:"openconfig-network-instance"`
	ΛIpv4SrtePolicy []ygot.Annotation                                        `path:"@ipv4-srte-policy" ygotAnnotation:"true"`
	Ipv4Unicast     *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast    `path:"ipv4-unicast" module:"openconfig-network-instance"`
	ΛIpv4Unicast    []ygot.Annotation                                        `path:"@ipv4-unicast" ygotAnnotation:"true"`
	Ipv6SrtePolicy  *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy `path:"ipv6-srte-policy" module:"openconfig-network-instance"`
	ΛIpv6SrtePolicy []ygot.Annotation                                        `path:"@ipv6-srte-policy" ygotAnnotation:"true"`
	Ipv6Unicast     *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast    `path:"ipv6-unicast" module:"openconfig-network-instance"`
	ΛIpv6Unicast    []ygot.Annotation                                        `path:"@ipv6-unicast" ygotAnnotation:"true"`
	L2VpnEvpn       *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn      `path:"l2vpn-evpn" module:"openconfig-network-instance"`
	ΛL2VpnEvpn      []ygot.Annotation                                        `path:"@l2vpn-evpn" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi) IsYANGGoStruct() {}

// GetOrCreateIpv4SrtePolicy retrieves the value of the Ipv4SrtePolicy field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi) GetOrCreateIpv4SrtePolicy() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy {
	if t.Ipv4SrtePolicy != nil {
		return t.Ipv4SrtePolicy
	}
	t.Ipv4SrtePolicy = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy{}
	return t.Ipv4SrtePolicy
}

// GetOrCreateIpv4Unicast retrieves the value of the Ipv4Unicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi) GetOrCreateIpv4Unicast() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast {
	if t.Ipv4Unicast != nil {
		return t.Ipv4Unicast
	}
	t.Ipv4Unicast = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast{}
	return t.Ipv4Unicast
}

// GetOrCreateIpv6SrtePolicy retrieves the value of the Ipv6SrtePolicy field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi) GetOrCreateIpv6SrtePolicy() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy {
	if t.Ipv6SrtePolicy != nil {
		return t.Ipv6SrtePolicy
	}
	t.Ipv6SrtePolicy = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy{}
	return t.Ipv6SrtePolicy
}

// GetOrCreateIpv6Unicast retrieves the value of the Ipv6Unicast field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi) GetOrCreateIpv6Unicast() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast {
	if t.Ipv6Unicast != nil {
		return t.Ipv6Unicast
	}
	t.Ipv6Unicast = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast{}
	return t.Ipv6Unicast
}

// GetOrCreateL2VpnEvpn retrieves the value of the L2VpnEvpn field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi) GetOrCreateL2VpnEvpn() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn {
	if t.L2VpnEvpn != nil {
		return t.L2VpnEvpn
	}
	t.L2VpnEvpn = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn{}
	return t.L2VpnEvpn
}

// GetIpv4SrtePolicy returns the value of the Ipv4SrtePolicy struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi. If the receiver or the field Ipv4SrtePolicy is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi) GetIpv4SrtePolicy() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy {
	if t != nil && t.Ipv4SrtePolicy != nil {
		return t.Ipv4SrtePolicy
	}
	return nil
}

// GetIpv4Unicast returns the value of the Ipv4Unicast struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi. If the receiver or the field Ipv4Unicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi) GetIpv4Unicast() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast {
	if t != nil && t.Ipv4Unicast != nil {
		return t.Ipv4Unicast
	}
	return nil
}

// GetIpv6SrtePolicy returns the value of the Ipv6SrtePolicy struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi. If the receiver or the field Ipv6SrtePolicy is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi) GetIpv6SrtePolicy() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy {
	if t != nil && t.Ipv6SrtePolicy != nil {
		return t.Ipv6SrtePolicy
	}
	return nil
}

// GetIpv6Unicast returns the value of the Ipv6Unicast struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi. If the receiver or the field Ipv6Unicast is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi) GetIpv6Unicast() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast {
	if t != nil && t.Ipv6Unicast != nil {
		return t.Ipv6Unicast
	}
	return nil
}

// GetL2VpnEvpn returns the value of the L2VpnEvpn struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi. If the receiver or the field L2VpnEvpn is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi) GetL2VpnEvpn() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn {
	if t != nil && t.L2VpnEvpn != nil {
		return t.L2VpnEvpn
	}
	return nil
}

// GetAfiSafiName retrieves the value of the leaf AfiSafiName from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AfiSafiName is set, it can
// safely use t.GetAfiSafiName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AfiSafiName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi) GetAfiSafiName() E_BgpTypes_AFI_SAFI_TYPE {
	if t == nil || t.AfiSafiName == 0 {
		return 0
	}
	return t.AfiSafiName
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Ipv4SrtePolicy.PopulateDefaults()
	t.Ipv4Unicast.PopulateDefaults()
	t.Ipv6SrtePolicy.PopulateDefaults()
	t.Ipv6Unicast.PopulateDefaults()
	t.L2VpnEvpn.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"afi-safi-name": t.AfiSafiName,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy struct {
	ΛMetadata []ygot.Annotation                                                            `path:"@" ygotAnnotation:"true"`
	LocRib    *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib              `path:"loc-rib" module:"openconfig-network-instance"`
	ΛLocRib   []ygot.Annotation                                                            `path:"@loc-rib" ygotAnnotation:"true"`
	Neighbor  map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor `path:"neighbors/neighbor" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighbor []ygot.Annotation                                                            `path:"neighbors/@neighbor" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy) IsYANGGoStruct() {}

// NewNeighbor creates a new entry in the Neighbor list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy) NewNeighbor(NeighborAddress string) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor)
	}

	key := NeighborAddress

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor{
		NeighborAddress: &NeighborAddress,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.NeighborAddress = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy) GetOrCreateNeighborMap() map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy) GetOrCreateNeighbor(NeighborAddress string) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor {

	key := NeighborAddress

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(NeighborAddress)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy) GetNeighbor(NeighborAddress string) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor {

	if t == nil {
		return nil
	}

	key := NeighborAddress

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor struct to the
// list Neighbor of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy) AppendNeighbor(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor) error {
	if v.NeighborAddress == nil {
		return fmt.Errorf("invalid nil key received for NeighborAddress")
	}

	key := *v.NeighborAddress

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// GetOrCreateLocRib retrieves the value of the LocRib field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy) GetOrCreateLocRib() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib {
	if t.LocRib != nil {
		return t.LocRib
	}
	t.LocRib = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib{}
	return t.LocRib
}

// GetLocRib returns the value of the LocRib struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy. If the receiver or the field LocRib is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy) GetLocRib() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib {
	if t != nil && t.LocRib != nil {
		return t.LocRib
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.LocRib.PopulateDefaults()
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/loc-rib YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib struct {
	ΛMetadata []ygot.Annotation                                                                                                                                  `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                  `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/loc-rib.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_Key struct {
	PathId   uint32 `path:"path-id"`
	Endpoint string `path:"endpoint"`
	Color    uint32 `path:"color"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"path-id":  t.PathId,
		"endpoint": t.Endpoint,
		"color":    t.Color,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib) NewRoute(PathId uint32, Endpoint string, Color uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route{
		PathId:   &PathId,
		Endpoint: &Endpoint,
		Color:    &Color,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.PathId = &newK.PathId
	e.Endpoint = &newK.Endpoint
	e.Color = &newK.Color

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib) GetOrCreateRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(PathId, Endpoint, Color)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib) GetRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) error {
	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	if v.Endpoint == nil {
		return fmt.Errorf("invalid nil key for Endpoint")
	}

	if v.Color == nil {
		return fmt.Errorf("invalid nil key for Color")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_Key{
		PathId:   *v.PathId,
		Endpoint: *v.Endpoint,
		Color:    *v.Color,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/loc-rib/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                          `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                `path:"state/@attr-index" ygotAnnotation:"true"`
	Color              *uint32                                                                                          `path:"state/color|color" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛColor             []ygot.Annotation                                                                                `path:"state/@color|@color" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                          `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                `path:"state/@community-index" ygotAnnotation:"true"`
	Endpoint           *string                                                                                          `path:"state/endpoint|endpoint" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEndpoint          []ygot.Annotation                                                                                `path:"state/@endpoint|@endpoint" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                          `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                               `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                          `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                          `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                            `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) IsYANGGoStruct() {}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetColor retrieves the value of the leaf Color from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Color is set, it can
// safely use t.GetColor() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Color == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) GetColor() uint32 {
	if t == nil || t.Color == nil {
		return 0
	}
	return *t.Color
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetEndpoint retrieves the value of the leaf Endpoint from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Endpoint is set, it can
// safely use t.GetEndpoint() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Endpoint == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) GetEndpoint() string {
	if t == nil || t.Endpoint == nil {
		return ""
	}
	return *t.Endpoint
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PathId == nil {
		var v uint32 = 0
		t.PathId = &v
	}
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Color == nil {
		return nil, fmt.Errorf("nil value for key Color")
	}

	if t.Endpoint == nil {
		return nil, fmt.Errorf("nil value for key Endpoint")
	}

	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	return map[string]interface{}{
		"color":    *t.Color,
		"endpoint": *t.Endpoint,
		"path-id":  *t.PathId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/loc-rib/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_LocRib_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor struct {
	ΛMetadata        []ygot.Annotation                                                               `path:"@" ygotAnnotation:"true"`
	AdjRibInPost     *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost  `path:"adj-rib-in-post" module:"openconfig-network-instance"`
	ΛAdjRibInPost    []ygot.Annotation                                                               `path:"@adj-rib-in-post" ygotAnnotation:"true"`
	AdjRibInPre      *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre   `path:"adj-rib-in-pre" module:"openconfig-network-instance"`
	ΛAdjRibInPre     []ygot.Annotation                                                               `path:"@adj-rib-in-pre" ygotAnnotation:"true"`
	AdjRibOutPost    *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost `path:"adj-rib-out-post" module:"openconfig-network-instance"`
	ΛAdjRibOutPost   []ygot.Annotation                                                               `path:"@adj-rib-out-post" ygotAnnotation:"true"`
	AdjRibOutPre     *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre  `path:"adj-rib-out-pre" module:"openconfig-network-instance"`
	ΛAdjRibOutPre    []ygot.Annotation                                                               `path:"@adj-rib-out-pre" ygotAnnotation:"true"`
	NeighborAddress  *string                                                                         `path:"state/neighbor-address|neighbor-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛNeighborAddress []ygot.Annotation                                                               `path:"state/@neighbor-address|@neighbor-address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor) IsYANGGoStruct() {}

// GetOrCreateAdjRibInPost retrieves the value of the AdjRibInPost field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor) GetOrCreateAdjRibInPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost {
	if t.AdjRibInPost != nil {
		return t.AdjRibInPost
	}
	t.AdjRibInPost = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost{}
	return t.AdjRibInPost
}

// GetOrCreateAdjRibInPre retrieves the value of the AdjRibInPre field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor) GetOrCreateAdjRibInPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre {
	if t.AdjRibInPre != nil {
		return t.AdjRibInPre
	}
	t.AdjRibInPre = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre{}
	return t.AdjRibInPre
}

// GetOrCreateAdjRibOutPost retrieves the value of the AdjRibOutPost field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor) GetOrCreateAdjRibOutPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost {
	if t.AdjRibOutPost != nil {
		return t.AdjRibOutPost
	}
	t.AdjRibOutPost = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost{}
	return t.AdjRibOutPost
}

// GetOrCreateAdjRibOutPre retrieves the value of the AdjRibOutPre field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor) GetOrCreateAdjRibOutPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre {
	if t.AdjRibOutPre != nil {
		return t.AdjRibOutPre
	}
	t.AdjRibOutPre = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre{}
	return t.AdjRibOutPre
}

// GetAdjRibInPost returns the value of the AdjRibInPost struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor. If the receiver or the field AdjRibInPost is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor) GetAdjRibInPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost {
	if t != nil && t.AdjRibInPost != nil {
		return t.AdjRibInPost
	}
	return nil
}

// GetAdjRibInPre returns the value of the AdjRibInPre struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor. If the receiver or the field AdjRibInPre is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor) GetAdjRibInPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre {
	if t != nil && t.AdjRibInPre != nil {
		return t.AdjRibInPre
	}
	return nil
}

// GetAdjRibOutPost returns the value of the AdjRibOutPost struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor. If the receiver or the field AdjRibOutPost is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor) GetAdjRibOutPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost {
	if t != nil && t.AdjRibOutPost != nil {
		return t.AdjRibOutPost
	}
	return nil
}

// GetAdjRibOutPre returns the value of the AdjRibOutPre struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor. If the receiver or the field AdjRibOutPre is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor) GetAdjRibOutPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre {
	if t != nil && t.AdjRibOutPre != nil {
		return t.AdjRibOutPre
	}
	return nil
}

// GetNeighborAddress retrieves the value of the leaf NeighborAddress from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborAddress is set, it can
// safely use t.GetNeighborAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor) GetNeighborAddress() string {
	if t == nil || t.NeighborAddress == nil {
		return ""
	}
	return *t.NeighborAddress
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AdjRibInPost.PopulateDefaults()
	t.AdjRibInPre.PopulateDefaults()
	t.AdjRibOutPost.PopulateDefaults()
	t.AdjRibOutPre.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.NeighborAddress == nil {
		return nil, fmt.Errorf("nil value for key NeighborAddress")
	}

	return map[string]interface{}{
		"neighbor-address": *t.NeighborAddress,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-in-post YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost struct {
	ΛMetadata []ygot.Annotation                                                                                                                                                                `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                                                `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost) IsYANGGoStruct() {
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-in-post.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_Key struct {
	PathId   uint32 `path:"path-id"`
	Endpoint string `path:"endpoint"`
	Color    uint32 `path:"color"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"path-id":  t.PathId,
		"endpoint": t.Endpoint,
		"color":    t.Color,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost) NewRoute(PathId uint32, Endpoint string, Color uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route{
		PathId:   &PathId,
		Endpoint: &Endpoint,
		Color:    &Color,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.PathId = &newK.PathId
	e.Endpoint = &newK.Endpoint
	e.Color = &newK.Color

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost) GetOrCreateRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(PathId, Endpoint, Color)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost) GetRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) error {
	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	if v.Endpoint == nil {
		return fmt.Errorf("invalid nil key for Endpoint")
	}

	if v.Color == nil {
		return fmt.Errorf("invalid nil key for Color")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_Key{
		PathId:   *v.PathId,
		Endpoint: *v.Endpoint,
		Color:    *v.Color,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-in-post/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                               `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                                         `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                               `path:"state/@attr-index" ygotAnnotation:"true"`
	BestPath           *bool                                                                                                           `path:"state/best-path" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBestPath          []ygot.Annotation                                                                                               `path:"state/@best-path" ygotAnnotation:"true"`
	Color              *uint32                                                                                                         `path:"state/color|color" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛColor             []ygot.Annotation                                                                                               `path:"state/@color|@color" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                                         `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                               `path:"state/@community-index" ygotAnnotation:"true"`
	Endpoint           *string                                                                                                         `path:"state/endpoint|endpoint" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEndpoint          []ygot.Annotation                                                                                               `path:"state/@endpoint|@endpoint" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                                         `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                               `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                                              `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                               `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                                         `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                               `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                                         `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                               `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                               `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                                           `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                               `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetBestPath retrieves the value of the leaf BestPath from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BestPath is set, it can
// safely use t.GetBestPath() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BestPath == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) GetBestPath() bool {
	if t == nil || t.BestPath == nil {
		return false
	}
	return *t.BestPath
}

// GetColor retrieves the value of the leaf Color from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Color is set, it can
// safely use t.GetColor() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Color == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) GetColor() uint32 {
	if t == nil || t.Color == nil {
		return 0
	}
	return *t.Color
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetEndpoint retrieves the value of the leaf Endpoint from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Endpoint is set, it can
// safely use t.GetEndpoint() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Endpoint == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) GetEndpoint() string {
	if t == nil || t.Endpoint == nil {
		return ""
	}
	return *t.Endpoint
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PathId == nil {
		var v uint32 = 0
		t.PathId = &v
	}
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Color == nil {
		return nil, fmt.Errorf("nil value for key Color")
	}

	if t.Endpoint == nil {
		return nil, fmt.Errorf("nil value for key Endpoint")
	}

	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	return map[string]interface{}{
		"color":    *t.Color,
		"endpoint": *t.Endpoint,
		"path-id":  *t.PathId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-in-post/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-in-pre YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre struct {
	ΛMetadata []ygot.Annotation                                                                                                                                                              `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                                              `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre) IsYANGGoStruct() {
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-in-pre.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_Key struct {
	PathId   uint32 `path:"path-id"`
	Endpoint string `path:"endpoint"`
	Color    uint32 `path:"color"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"path-id":  t.PathId,
		"endpoint": t.Endpoint,
		"color":    t.Color,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre) NewRoute(PathId uint32, Endpoint string, Color uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route{
		PathId:   &PathId,
		Endpoint: &Endpoint,
		Color:    &Color,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.PathId = &newK.PathId
	e.Endpoint = &newK.Endpoint
	e.Color = &newK.Color

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre) GetOrCreateRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(PathId, Endpoint, Color)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre) GetRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) error {
	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	if v.Endpoint == nil {
		return fmt.Errorf("invalid nil key for Endpoint")
	}

	if v.Color == nil {
		return fmt.Errorf("invalid nil key for Color")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_Key{
		PathId:   *v.PathId,
		Endpoint: *v.Endpoint,
		Color:    *v.Color,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-in-pre/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                              `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                                        `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                              `path:"state/@attr-index" ygotAnnotation:"true"`
	Color              *uint32                                                                                                        `path:"state/color|color" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛColor             []ygot.Annotation                                                                                              `path:"state/@color|@color" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                                        `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                              `path:"state/@community-index" ygotAnnotation:"true"`
	Endpoint           *string                                                                                                        `path:"state/endpoint|endpoint" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEndpoint          []ygot.Annotation                                                                                              `path:"state/@endpoint|@endpoint" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                                        `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                              `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                                             `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                              `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                                        `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                              `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                                        `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                              `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                              `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                                          `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                              `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetColor retrieves the value of the leaf Color from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Color is set, it can
// safely use t.GetColor() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Color == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) GetColor() uint32 {
	if t == nil || t.Color == nil {
		return 0
	}
	return *t.Color
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetEndpoint retrieves the value of the leaf Endpoint from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Endpoint is set, it can
// safely use t.GetEndpoint() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Endpoint == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) GetEndpoint() string {
	if t == nil || t.Endpoint == nil {
		return ""
	}
	return *t.Endpoint
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PathId == nil {
		var v uint32 = 0
		t.PathId = &v
	}
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Color == nil {
		return nil, fmt.Errorf("nil value for key Color")
	}

	if t.Endpoint == nil {
		return nil, fmt.Errorf("nil value for key Endpoint")
	}

	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	return map[string]interface{}{
		"color":    *t.Color,
		"endpoint": *t.Endpoint,
		"path-id":  *t.PathId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-in-pre/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-out-post YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost struct {
	ΛMetadata []ygot.Annotation                                                                                                                                                                  `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                                                  `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost) IsYANGGoStruct() {
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-out-post.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_Key struct {
	PathId   uint32 `path:"path-id"`
	Endpoint string `path:"endpoint"`
	Color    uint32 `path:"color"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"path-id":  t.PathId,
		"endpoint": t.Endpoint,
		"color":    t.Color,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost) NewRoute(PathId uint32, Endpoint string, Color uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route{
		PathId:   &PathId,
		Endpoint: &Endpoint,
		Color:    &Color,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.PathId = &newK.PathId
	e.Endpoint = &newK.Endpoint
	e.Color = &newK.Color

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost) GetOrCreateRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(PathId, Endpoint, Color)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost) GetRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) error {
	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	if v.Endpoint == nil {
		return fmt.Errorf("invalid nil key for Endpoint")
	}

	if v.Color == nil {
		return fmt.Errorf("invalid nil key for Color")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_Key{
		PathId:   *v.PathId,
		Endpoint: *v.Endpoint,
		Color:    *v.Color,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-out-post/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                                `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                                          `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                                `path:"state/@attr-index" ygotAnnotation:"true"`
	Color              *uint32                                                                                                          `path:"state/color|color" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛColor             []ygot.Annotation                                                                                                `path:"state/@color|@color" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                                          `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                                `path:"state/@community-index" ygotAnnotation:"true"`
	Endpoint           *string                                                                                                          `path:"state/endpoint|endpoint" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEndpoint          []ygot.Annotation                                                                                                `path:"state/@endpoint|@endpoint" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                                          `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                                `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                                               `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                                `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                                          `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                                `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                                          `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                                `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                                `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                                            `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                                `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetColor retrieves the value of the leaf Color from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Color is set, it can
// safely use t.GetColor() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Color == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) GetColor() uint32 {
	if t == nil || t.Color == nil {
		return 0
	}
	return *t.Color
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetEndpoint retrieves the value of the leaf Endpoint from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Endpoint is set, it can
// safely use t.GetEndpoint() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Endpoint == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) GetEndpoint() string {
	if t == nil || t.Endpoint == nil {
		return ""
	}
	return *t.Endpoint
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PathId == nil {
		var v uint32 = 0
		t.PathId = &v
	}
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Color == nil {
		return nil, fmt.Errorf("nil value for key Color")
	}

	if t.Endpoint == nil {
		return nil, fmt.Errorf("nil value for key Endpoint")
	}

	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	return map[string]interface{}{
		"color":    *t.Color,
		"endpoint": *t.Endpoint,
		"path-id":  *t.PathId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-out-post/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-out-pre YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre struct {
	ΛMetadata []ygot.Annotation                                                                                                                                                                `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                                                `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre) IsYANGGoStruct() {
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-out-pre.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_Key struct {
	PathId   uint32 `path:"path-id"`
	Endpoint string `path:"endpoint"`
	Color    uint32 `path:"color"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"path-id":  t.PathId,
		"endpoint": t.Endpoint,
		"color":    t.Color,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre) NewRoute(PathId uint32, Endpoint string, Color uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route{
		PathId:   &PathId,
		Endpoint: &Endpoint,
		Color:    &Color,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.PathId = &newK.PathId
	e.Endpoint = &newK.Endpoint
	e.Color = &newK.Color

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre) GetOrCreateRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(PathId, Endpoint, Color)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre) GetRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) error {
	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	if v.Endpoint == nil {
		return fmt.Errorf("invalid nil key for Endpoint")
	}

	if v.Color == nil {
		return fmt.Errorf("invalid nil key for Color")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_Key{
		PathId:   *v.PathId,
		Endpoint: *v.Endpoint,
		Color:    *v.Color,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-out-pre/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                               `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                                         `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                               `path:"state/@attr-index" ygotAnnotation:"true"`
	Color              *uint32                                                                                                         `path:"state/color|color" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛColor             []ygot.Annotation                                                                                               `path:"state/@color|@color" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                                         `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                               `path:"state/@community-index" ygotAnnotation:"true"`
	Endpoint           *string                                                                                                         `path:"state/endpoint|endpoint" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEndpoint          []ygot.Annotation                                                                                               `path:"state/@endpoint|@endpoint" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                                         `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                               `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                                              `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                               `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                                         `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                               `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                                         `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                               `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                               `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                                           `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                               `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetColor retrieves the value of the leaf Color from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Color is set, it can
// safely use t.GetColor() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Color == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) GetColor() uint32 {
	if t == nil || t.Color == nil {
		return 0
	}
	return *t.Color
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetEndpoint retrieves the value of the leaf Endpoint from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Endpoint is set, it can
// safely use t.GetEndpoint() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Endpoint == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) GetEndpoint() string {
	if t == nil || t.Endpoint == nil {
		return ""
	}
	return *t.Endpoint
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PathId == nil {
		var v uint32 = 0
		t.PathId = &v
	}
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Color == nil {
		return nil, fmt.Errorf("nil value for key Color")
	}

	if t.Endpoint == nil {
		return nil, fmt.Errorf("nil value for key Endpoint")
	}

	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	return map[string]interface{}{
		"color":    *t.Color,
		"endpoint": *t.Endpoint,
		"path-id":  *t.PathId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-out-pre/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast struct {
	ΛMetadata []ygot.Annotation                                                         `path:"@" ygotAnnotation:"true"`
	LocRib    *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib              `path:"loc-rib" module:"openconfig-network-instance"`
	ΛLocRib   []ygot.Annotation                                                         `path:"@loc-rib" ygotAnnotation:"true"`
	Neighbor  map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor `path:"neighbors/neighbor" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighbor []ygot.Annotation                                                         `path:"neighbors/@neighbor" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast) IsYANGGoStruct() {}

// NewNeighbor creates a new entry in the Neighbor list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast) NewNeighbor(NeighborAddress string) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor)
	}

	key := NeighborAddress

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor{
		NeighborAddress: &NeighborAddress,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.NeighborAddress = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast) GetOrCreateNeighborMap() map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast) GetOrCreateNeighbor(NeighborAddress string) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor {

	key := NeighborAddress

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(NeighborAddress)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast) GetNeighbor(NeighborAddress string) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor {

	if t == nil {
		return nil
	}

	key := NeighborAddress

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor struct to the
// list Neighbor of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast) AppendNeighbor(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor) error {
	if v.NeighborAddress == nil {
		return fmt.Errorf("invalid nil key received for NeighborAddress")
	}

	key := *v.NeighborAddress

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// GetOrCreateLocRib retrieves the value of the LocRib field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast) GetOrCreateLocRib() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib {
	if t.LocRib != nil {
		return t.LocRib
	}
	t.LocRib = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib{}
	return t.LocRib
}

// GetLocRib returns the value of the LocRib struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast. If the receiver or the field LocRib is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast) GetLocRib() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib {
	if t != nil && t.LocRib != nil {
		return t.LocRib
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.LocRib.PopulateDefaults()
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/loc-rib YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib struct {
	ΛMetadata []ygot.Annotation                                                                                                                            `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                            `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/loc-rib.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Key struct {
	Prefix string                                                                         `path:"prefix"`
	Origin NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union `path:"origin"`
	PathId uint32                                                                         `path:"path-id"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"prefix":  t.Prefix,
		"origin":  t.Origin,
		"path-id": t.PathId,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib) NewRoute(Prefix string, Origin NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union, PathId uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Key{
		Prefix: Prefix,
		Origin: Origin,
		PathId: PathId,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route{
		Prefix: &Prefix,
		Origin: Origin,
		PathId: &PathId,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.Prefix = &newK.Prefix
	e.Origin = newK.Origin
	e.PathId = &newK.PathId

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib) GetOrCreateRoute(Prefix string, Origin NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Key{
		Prefix: Prefix,
		Origin: Origin,
		PathId: PathId,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(Prefix, Origin, PathId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib) GetRoute(Prefix string, Origin NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Key{
		Prefix: Prefix,
		Origin: Origin,
		PathId: PathId,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key for Prefix")
	}

	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Key{
		Prefix: *v.Prefix,
		Origin: v.Origin,
		PathId: *v.PathId,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/loc-rib/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route struct {
	ΛMetadata          []ygot.Annotation                                                                             `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                       `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                             `path:"state/@attr-index" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                       `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                             `path:"state/@community-index" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                       `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                             `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                            `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                             `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                       `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                             `path:"state/@last-modified" ygotAnnotation:"true"`
	Origin             NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union                `path:"state/origin|origin" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛOrigin            []ygot.Annotation                                                                             `path:"state/@origin|@origin" ygotAnnotation:"true"`
	PathId             *uint32                                                                                       `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                             `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	Prefix             *string                                                                                       `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix            []ygot.Annotation                                                                             `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                             `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                         `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                             `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) IsYANGGoStruct() {}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetOrigin retrieves the value of the leaf Origin from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Origin is set, it can
// safely use t.GetOrigin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Origin == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) GetOrigin() NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union {
	if t == nil || t.Origin == nil {
		return nil
	}
	return t.Origin
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PathId == nil {
		var v uint32 = 0
		t.PathId = &v
	}
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) ΛListKeyMap() (map[string]interface{}, error) {

	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"origin":  t.Origin,
		"path-id": *t.PathId,
		"prefix":  *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/loc-rib/routes/route/state/origin within the YANG schema.
// Union type can be one of [E_PolicyTypes_INSTALL_PROTOCOL_TYPE, UnionString].
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union interface {
	// Union type can be one of [E_PolicyTypes_INSTALL_PROTOCOL_TYPE, UnionString]
	Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union()
}

// Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union ensures that E_PolicyTypes_INSTALL_PROTOCOL_TYPE
// implements the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union interface.
func (E_PolicyTypes_INSTALL_PROTOCOL_TYPE) Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union() {
}

// To_NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route) To_NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union(i interface{}) (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_Origin_Union, unknown union type, got: %T, want any of [E_PolicyTypes_INSTALL_PROTOCOL_TYPE, string]", i, i)
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/loc-rib/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_LocRib_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor struct {
	ΛMetadata        []ygot.Annotation                                                            `path:"@" ygotAnnotation:"true"`
	AdjRibInPost     *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost  `path:"adj-rib-in-post" module:"openconfig-network-instance"`
	ΛAdjRibInPost    []ygot.Annotation                                                            `path:"@adj-rib-in-post" ygotAnnotation:"true"`
	AdjRibInPre      *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre   `path:"adj-rib-in-pre" module:"openconfig-network-instance"`
	ΛAdjRibInPre     []ygot.Annotation                                                            `path:"@adj-rib-in-pre" ygotAnnotation:"true"`
	AdjRibOutPost    *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost `path:"adj-rib-out-post" module:"openconfig-network-instance"`
	ΛAdjRibOutPost   []ygot.Annotation                                                            `path:"@adj-rib-out-post" ygotAnnotation:"true"`
	AdjRibOutPre     *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre  `path:"adj-rib-out-pre" module:"openconfig-network-instance"`
	ΛAdjRibOutPre    []ygot.Annotation                                                            `path:"@adj-rib-out-pre" ygotAnnotation:"true"`
	NeighborAddress  *string                                                                      `path:"state/neighbor-address|neighbor-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛNeighborAddress []ygot.Annotation                                                            `path:"state/@neighbor-address|@neighbor-address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor) IsYANGGoStruct() {}

// GetOrCreateAdjRibInPost retrieves the value of the AdjRibInPost field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor) GetOrCreateAdjRibInPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost {
	if t.AdjRibInPost != nil {
		return t.AdjRibInPost
	}
	t.AdjRibInPost = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost{}
	return t.AdjRibInPost
}

// GetOrCreateAdjRibInPre retrieves the value of the AdjRibInPre field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor) GetOrCreateAdjRibInPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre {
	if t.AdjRibInPre != nil {
		return t.AdjRibInPre
	}
	t.AdjRibInPre = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre{}
	return t.AdjRibInPre
}

// GetOrCreateAdjRibOutPost retrieves the value of the AdjRibOutPost field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor) GetOrCreateAdjRibOutPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost {
	if t.AdjRibOutPost != nil {
		return t.AdjRibOutPost
	}
	t.AdjRibOutPost = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost{}
	return t.AdjRibOutPost
}

// GetOrCreateAdjRibOutPre retrieves the value of the AdjRibOutPre field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor) GetOrCreateAdjRibOutPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre {
	if t.AdjRibOutPre != nil {
		return t.AdjRibOutPre
	}
	t.AdjRibOutPre = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre{}
	return t.AdjRibOutPre
}

// GetAdjRibInPost returns the value of the AdjRibInPost struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor. If the receiver or the field AdjRibInPost is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor) GetAdjRibInPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost {
	if t != nil && t.AdjRibInPost != nil {
		return t.AdjRibInPost
	}
	return nil
}

// GetAdjRibInPre returns the value of the AdjRibInPre struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor. If the receiver or the field AdjRibInPre is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor) GetAdjRibInPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre {
	if t != nil && t.AdjRibInPre != nil {
		return t.AdjRibInPre
	}
	return nil
}

// GetAdjRibOutPost returns the value of the AdjRibOutPost struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor. If the receiver or the field AdjRibOutPost is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor) GetAdjRibOutPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost {
	if t != nil && t.AdjRibOutPost != nil {
		return t.AdjRibOutPost
	}
	return nil
}

// GetAdjRibOutPre returns the value of the AdjRibOutPre struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor. If the receiver or the field AdjRibOutPre is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor) GetAdjRibOutPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre {
	if t != nil && t.AdjRibOutPre != nil {
		return t.AdjRibOutPre
	}
	return nil
}

// GetNeighborAddress retrieves the value of the leaf NeighborAddress from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborAddress is set, it can
// safely use t.GetNeighborAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor) GetNeighborAddress() string {
	if t == nil || t.NeighborAddress == nil {
		return ""
	}
	return *t.NeighborAddress
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AdjRibInPost.PopulateDefaults()
	t.AdjRibInPre.PopulateDefaults()
	t.AdjRibOutPost.PopulateDefaults()
	t.AdjRibOutPre.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.NeighborAddress == nil {
		return nil, fmt.Errorf("nil value for key NeighborAddress")
	}

	return map[string]interface{}{
		"neighbor-address": *t.NeighborAddress,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-in-post YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost struct {
	ΛMetadata []ygot.Annotation                                                                                                                                                          `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                                          `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-in-post.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_Key struct {
	Prefix string `path:"prefix"`
	PathId uint32 `path:"path-id"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"prefix":  t.Prefix,
		"path-id": t.PathId,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost) NewRoute(Prefix string, PathId uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route{
		Prefix: &Prefix,
		PathId: &PathId,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.Prefix = &newK.Prefix
	e.PathId = &newK.PathId

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost) GetOrCreateRoute(Prefix string, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(Prefix, PathId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost) GetRoute(Prefix string, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key for Prefix")
	}

	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_Key{
		Prefix: *v.Prefix,
		PathId: *v.PathId,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-in-post/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                            `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                                      `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                            `path:"state/@attr-index" ygotAnnotation:"true"`
	BestPath           *bool                                                                                                        `path:"state/best-path" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBestPath          []ygot.Annotation                                                                                            `path:"state/@best-path" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                                      `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                            `path:"state/@community-index" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                                      `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                            `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                                           `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                            `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                                      `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                            `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                                      `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                            `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	Prefix             *string                                                                                                      `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix            []ygot.Annotation                                                                                            `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                            `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                                        `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                            `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetBestPath retrieves the value of the leaf BestPath from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BestPath is set, it can
// safely use t.GetBestPath() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BestPath == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) GetBestPath() bool {
	if t == nil || t.BestPath == nil {
		return false
	}
	return *t.BestPath
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"path-id": *t.PathId,
		"prefix":  *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-in-post/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-in-pre YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre struct {
	ΛMetadata []ygot.Annotation                                                                                                                                                        `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                                        `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-in-pre.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_Key struct {
	Prefix string `path:"prefix"`
	PathId uint32 `path:"path-id"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"prefix":  t.Prefix,
		"path-id": t.PathId,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre) NewRoute(Prefix string, PathId uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route{
		Prefix: &Prefix,
		PathId: &PathId,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.Prefix = &newK.Prefix
	e.PathId = &newK.PathId

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre) GetOrCreateRoute(Prefix string, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(Prefix, PathId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre) GetRoute(Prefix string, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key for Prefix")
	}

	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_Key{
		Prefix: *v.Prefix,
		PathId: *v.PathId,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-in-pre/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                           `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                                     `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                           `path:"state/@attr-index" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                                     `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                           `path:"state/@community-index" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                                     `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                           `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                                          `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                           `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                                     `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                           `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                                     `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                           `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	Prefix             *string                                                                                                     `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix            []ygot.Annotation                                                                                           `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                           `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                                       `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                           `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"path-id": *t.PathId,
		"prefix":  *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-in-pre/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-out-post YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost struct {
	ΛMetadata []ygot.Annotation                                                                                                                                                            `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                                            `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost) IsYANGGoStruct() {
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-out-post.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_Key struct {
	Prefix string `path:"prefix"`
	PathId uint32 `path:"path-id"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"prefix":  t.Prefix,
		"path-id": t.PathId,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost) NewRoute(Prefix string, PathId uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route{
		Prefix: &Prefix,
		PathId: &PathId,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.Prefix = &newK.Prefix
	e.PathId = &newK.PathId

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost) GetOrCreateRoute(Prefix string, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(Prefix, PathId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost) GetRoute(Prefix string, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key for Prefix")
	}

	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_Key{
		Prefix: *v.Prefix,
		PathId: *v.PathId,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-out-post/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                             `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                                       `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                             `path:"state/@attr-index" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                                       `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                             `path:"state/@community-index" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                                       `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                             `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                                            `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                             `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                                       `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                             `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                                       `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                             `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	Prefix             *string                                                                                                       `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix            []ygot.Annotation                                                                                             `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                             `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                                         `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                             `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"path-id": *t.PathId,
		"prefix":  *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-out-post/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-out-pre YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre struct {
	ΛMetadata []ygot.Annotation                                                                                                                                                          `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                                          `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-out-pre.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_Key struct {
	Prefix string `path:"prefix"`
	PathId uint32 `path:"path-id"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"prefix":  t.Prefix,
		"path-id": t.PathId,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre) NewRoute(Prefix string, PathId uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route{
		Prefix: &Prefix,
		PathId: &PathId,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.Prefix = &newK.Prefix
	e.PathId = &newK.PathId

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre) GetOrCreateRoute(Prefix string, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(Prefix, PathId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre) GetRoute(Prefix string, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key for Prefix")
	}

	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_Key{
		Prefix: *v.Prefix,
		PathId: *v.PathId,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-out-pre/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                            `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                                      `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                            `path:"state/@attr-index" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                                      `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                            `path:"state/@community-index" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                                      `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                            `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                                           `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                            `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                                      `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                            `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                                      `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                            `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	Prefix             *string                                                                                                      `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix            []ygot.Annotation                                                                                            `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                            `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                                        `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                            `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"path-id": *t.PathId,
		"prefix":  *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-out-pre/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv4Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy struct {
	ΛMetadata []ygot.Annotation                                                            `path:"@" ygotAnnotation:"true"`
	LocRib    *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib              `path:"loc-rib" module:"openconfig-network-instance"`
	ΛLocRib   []ygot.Annotation                                                            `path:"@loc-rib" ygotAnnotation:"true"`
	Neighbor  map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor `path:"neighbors/neighbor" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighbor []ygot.Annotation                                                            `path:"neighbors/@neighbor" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy) IsYANGGoStruct() {}

// NewNeighbor creates a new entry in the Neighbor list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy) NewNeighbor(NeighborAddress string) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor)
	}

	key := NeighborAddress

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor{
		NeighborAddress: &NeighborAddress,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.NeighborAddress = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy) GetOrCreateNeighborMap() map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy) GetOrCreateNeighbor(NeighborAddress string) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor {

	key := NeighborAddress

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(NeighborAddress)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy) GetNeighbor(NeighborAddress string) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor {

	if t == nil {
		return nil
	}

	key := NeighborAddress

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor struct to the
// list Neighbor of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy) AppendNeighbor(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor) error {
	if v.NeighborAddress == nil {
		return fmt.Errorf("invalid nil key received for NeighborAddress")
	}

	key := *v.NeighborAddress

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// GetOrCreateLocRib retrieves the value of the LocRib field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy) GetOrCreateLocRib() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib {
	if t.LocRib != nil {
		return t.LocRib
	}
	t.LocRib = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib{}
	return t.LocRib
}

// GetLocRib returns the value of the LocRib struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy. If the receiver or the field LocRib is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy) GetLocRib() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib {
	if t != nil && t.LocRib != nil {
		return t.LocRib
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.LocRib.PopulateDefaults()
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/loc-rib YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib struct {
	ΛMetadata []ygot.Annotation                                                                                                                                  `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                  `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/loc-rib.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_Key struct {
	PathId   uint32 `path:"path-id"`
	Endpoint string `path:"endpoint"`
	Color    uint32 `path:"color"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"path-id":  t.PathId,
		"endpoint": t.Endpoint,
		"color":    t.Color,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib) NewRoute(PathId uint32, Endpoint string, Color uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route{
		PathId:   &PathId,
		Endpoint: &Endpoint,
		Color:    &Color,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.PathId = &newK.PathId
	e.Endpoint = &newK.Endpoint
	e.Color = &newK.Color

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib) GetOrCreateRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(PathId, Endpoint, Color)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib) GetRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) error {
	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	if v.Endpoint == nil {
		return fmt.Errorf("invalid nil key for Endpoint")
	}

	if v.Color == nil {
		return fmt.Errorf("invalid nil key for Color")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_Key{
		PathId:   *v.PathId,
		Endpoint: *v.Endpoint,
		Color:    *v.Color,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/loc-rib/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                          `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                `path:"state/@attr-index" ygotAnnotation:"true"`
	Color              *uint32                                                                                          `path:"state/color|color" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛColor             []ygot.Annotation                                                                                `path:"state/@color|@color" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                          `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                `path:"state/@community-index" ygotAnnotation:"true"`
	Endpoint           *string                                                                                          `path:"state/endpoint|endpoint" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEndpoint          []ygot.Annotation                                                                                `path:"state/@endpoint|@endpoint" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                          `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                               `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                          `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                          `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                            `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) IsYANGGoStruct() {}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetColor retrieves the value of the leaf Color from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Color is set, it can
// safely use t.GetColor() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Color == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) GetColor() uint32 {
	if t == nil || t.Color == nil {
		return 0
	}
	return *t.Color
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetEndpoint retrieves the value of the leaf Endpoint from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Endpoint is set, it can
// safely use t.GetEndpoint() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Endpoint == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) GetEndpoint() string {
	if t == nil || t.Endpoint == nil {
		return ""
	}
	return *t.Endpoint
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PathId == nil {
		var v uint32 = 0
		t.PathId = &v
	}
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Color == nil {
		return nil, fmt.Errorf("nil value for key Color")
	}

	if t.Endpoint == nil {
		return nil, fmt.Errorf("nil value for key Endpoint")
	}

	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	return map[string]interface{}{
		"color":    *t.Color,
		"endpoint": *t.Endpoint,
		"path-id":  *t.PathId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/loc-rib/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_LocRib_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor struct {
	ΛMetadata        []ygot.Annotation                                                               `path:"@" ygotAnnotation:"true"`
	AdjRibInPost     *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost  `path:"adj-rib-in-post" module:"openconfig-network-instance"`
	ΛAdjRibInPost    []ygot.Annotation                                                               `path:"@adj-rib-in-post" ygotAnnotation:"true"`
	AdjRibInPre      *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre   `path:"adj-rib-in-pre" module:"openconfig-network-instance"`
	ΛAdjRibInPre     []ygot.Annotation                                                               `path:"@adj-rib-in-pre" ygotAnnotation:"true"`
	AdjRibOutPost    *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost `path:"adj-rib-out-post" module:"openconfig-network-instance"`
	ΛAdjRibOutPost   []ygot.Annotation                                                               `path:"@adj-rib-out-post" ygotAnnotation:"true"`
	AdjRibOutPre     *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre  `path:"adj-rib-out-pre" module:"openconfig-network-instance"`
	ΛAdjRibOutPre    []ygot.Annotation                                                               `path:"@adj-rib-out-pre" ygotAnnotation:"true"`
	NeighborAddress  *string                                                                         `path:"state/neighbor-address|neighbor-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛNeighborAddress []ygot.Annotation                                                               `path:"state/@neighbor-address|@neighbor-address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor) IsYANGGoStruct() {}

// GetOrCreateAdjRibInPost retrieves the value of the AdjRibInPost field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor) GetOrCreateAdjRibInPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost {
	if t.AdjRibInPost != nil {
		return t.AdjRibInPost
	}
	t.AdjRibInPost = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost{}
	return t.AdjRibInPost
}

// GetOrCreateAdjRibInPre retrieves the value of the AdjRibInPre field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor) GetOrCreateAdjRibInPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre {
	if t.AdjRibInPre != nil {
		return t.AdjRibInPre
	}
	t.AdjRibInPre = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre{}
	return t.AdjRibInPre
}

// GetOrCreateAdjRibOutPost retrieves the value of the AdjRibOutPost field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor) GetOrCreateAdjRibOutPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost {
	if t.AdjRibOutPost != nil {
		return t.AdjRibOutPost
	}
	t.AdjRibOutPost = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost{}
	return t.AdjRibOutPost
}

// GetOrCreateAdjRibOutPre retrieves the value of the AdjRibOutPre field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor) GetOrCreateAdjRibOutPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre {
	if t.AdjRibOutPre != nil {
		return t.AdjRibOutPre
	}
	t.AdjRibOutPre = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre{}
	return t.AdjRibOutPre
}

// GetAdjRibInPost returns the value of the AdjRibInPost struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor. If the receiver or the field AdjRibInPost is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor) GetAdjRibInPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost {
	if t != nil && t.AdjRibInPost != nil {
		return t.AdjRibInPost
	}
	return nil
}

// GetAdjRibInPre returns the value of the AdjRibInPre struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor. If the receiver or the field AdjRibInPre is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor) GetAdjRibInPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre {
	if t != nil && t.AdjRibInPre != nil {
		return t.AdjRibInPre
	}
	return nil
}

// GetAdjRibOutPost returns the value of the AdjRibOutPost struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor. If the receiver or the field AdjRibOutPost is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor) GetAdjRibOutPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost {
	if t != nil && t.AdjRibOutPost != nil {
		return t.AdjRibOutPost
	}
	return nil
}

// GetAdjRibOutPre returns the value of the AdjRibOutPre struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor. If the receiver or the field AdjRibOutPre is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor) GetAdjRibOutPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre {
	if t != nil && t.AdjRibOutPre != nil {
		return t.AdjRibOutPre
	}
	return nil
}

// GetNeighborAddress retrieves the value of the leaf NeighborAddress from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborAddress is set, it can
// safely use t.GetNeighborAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor) GetNeighborAddress() string {
	if t == nil || t.NeighborAddress == nil {
		return ""
	}
	return *t.NeighborAddress
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AdjRibInPost.PopulateDefaults()
	t.AdjRibInPre.PopulateDefaults()
	t.AdjRibOutPost.PopulateDefaults()
	t.AdjRibOutPre.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.NeighborAddress == nil {
		return nil, fmt.Errorf("nil value for key NeighborAddress")
	}

	return map[string]interface{}{
		"neighbor-address": *t.NeighborAddress,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-in-post YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost struct {
	ΛMetadata []ygot.Annotation                                                                                                                                                                `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                                                `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost) IsYANGGoStruct() {
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-in-post.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_Key struct {
	PathId   uint32 `path:"path-id"`
	Endpoint string `path:"endpoint"`
	Color    uint32 `path:"color"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"path-id":  t.PathId,
		"endpoint": t.Endpoint,
		"color":    t.Color,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost) NewRoute(PathId uint32, Endpoint string, Color uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route{
		PathId:   &PathId,
		Endpoint: &Endpoint,
		Color:    &Color,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.PathId = &newK.PathId
	e.Endpoint = &newK.Endpoint
	e.Color = &newK.Color

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost) GetOrCreateRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(PathId, Endpoint, Color)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost) GetRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) error {
	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	if v.Endpoint == nil {
		return fmt.Errorf("invalid nil key for Endpoint")
	}

	if v.Color == nil {
		return fmt.Errorf("invalid nil key for Color")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_Key{
		PathId:   *v.PathId,
		Endpoint: *v.Endpoint,
		Color:    *v.Color,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-in-post/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                               `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                                         `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                               `path:"state/@attr-index" ygotAnnotation:"true"`
	BestPath           *bool                                                                                                           `path:"state/best-path" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBestPath          []ygot.Annotation                                                                                               `path:"state/@best-path" ygotAnnotation:"true"`
	Color              *uint32                                                                                                         `path:"state/color|color" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛColor             []ygot.Annotation                                                                                               `path:"state/@color|@color" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                                         `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                               `path:"state/@community-index" ygotAnnotation:"true"`
	Endpoint           *string                                                                                                         `path:"state/endpoint|endpoint" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEndpoint          []ygot.Annotation                                                                                               `path:"state/@endpoint|@endpoint" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                                         `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                               `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                                              `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                               `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                                         `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                               `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                                         `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                               `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                               `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                                           `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                               `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetBestPath retrieves the value of the leaf BestPath from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BestPath is set, it can
// safely use t.GetBestPath() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BestPath == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) GetBestPath() bool {
	if t == nil || t.BestPath == nil {
		return false
	}
	return *t.BestPath
}

// GetColor retrieves the value of the leaf Color from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Color is set, it can
// safely use t.GetColor() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Color == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) GetColor() uint32 {
	if t == nil || t.Color == nil {
		return 0
	}
	return *t.Color
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetEndpoint retrieves the value of the leaf Endpoint from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Endpoint is set, it can
// safely use t.GetEndpoint() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Endpoint == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) GetEndpoint() string {
	if t == nil || t.Endpoint == nil {
		return ""
	}
	return *t.Endpoint
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PathId == nil {
		var v uint32 = 0
		t.PathId = &v
	}
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Color == nil {
		return nil, fmt.Errorf("nil value for key Color")
	}

	if t.Endpoint == nil {
		return nil, fmt.Errorf("nil value for key Endpoint")
	}

	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	return map[string]interface{}{
		"color":    *t.Color,
		"endpoint": *t.Endpoint,
		"path-id":  *t.PathId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-in-post/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPost_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-in-pre YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre struct {
	ΛMetadata []ygot.Annotation                                                                                                                                                              `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                                              `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre) IsYANGGoStruct() {
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-in-pre.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_Key struct {
	PathId   uint32 `path:"path-id"`
	Endpoint string `path:"endpoint"`
	Color    uint32 `path:"color"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"path-id":  t.PathId,
		"endpoint": t.Endpoint,
		"color":    t.Color,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre) NewRoute(PathId uint32, Endpoint string, Color uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route{
		PathId:   &PathId,
		Endpoint: &Endpoint,
		Color:    &Color,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.PathId = &newK.PathId
	e.Endpoint = &newK.Endpoint
	e.Color = &newK.Color

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre) GetOrCreateRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(PathId, Endpoint, Color)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre) GetRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) error {
	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	if v.Endpoint == nil {
		return fmt.Errorf("invalid nil key for Endpoint")
	}

	if v.Color == nil {
		return fmt.Errorf("invalid nil key for Color")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_Key{
		PathId:   *v.PathId,
		Endpoint: *v.Endpoint,
		Color:    *v.Color,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-in-pre/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                              `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                                        `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                              `path:"state/@attr-index" ygotAnnotation:"true"`
	Color              *uint32                                                                                                        `path:"state/color|color" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛColor             []ygot.Annotation                                                                                              `path:"state/@color|@color" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                                        `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                              `path:"state/@community-index" ygotAnnotation:"true"`
	Endpoint           *string                                                                                                        `path:"state/endpoint|endpoint" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEndpoint          []ygot.Annotation                                                                                              `path:"state/@endpoint|@endpoint" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                                        `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                              `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                                             `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                              `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                                        `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                              `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                                        `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                              `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                              `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                                          `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                              `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetColor retrieves the value of the leaf Color from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Color is set, it can
// safely use t.GetColor() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Color == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) GetColor() uint32 {
	if t == nil || t.Color == nil {
		return 0
	}
	return *t.Color
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetEndpoint retrieves the value of the leaf Endpoint from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Endpoint is set, it can
// safely use t.GetEndpoint() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Endpoint == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) GetEndpoint() string {
	if t == nil || t.Endpoint == nil {
		return ""
	}
	return *t.Endpoint
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PathId == nil {
		var v uint32 = 0
		t.PathId = &v
	}
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Color == nil {
		return nil, fmt.Errorf("nil value for key Color")
	}

	if t.Endpoint == nil {
		return nil, fmt.Errorf("nil value for key Endpoint")
	}

	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	return map[string]interface{}{
		"color":    *t.Color,
		"endpoint": *t.Endpoint,
		"path-id":  *t.PathId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-in-pre/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibInPre_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-out-post YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost struct {
	ΛMetadata []ygot.Annotation                                                                                                                                                                  `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                                                  `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost) IsYANGGoStruct() {
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-out-post.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_Key struct {
	PathId   uint32 `path:"path-id"`
	Endpoint string `path:"endpoint"`
	Color    uint32 `path:"color"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"path-id":  t.PathId,
		"endpoint": t.Endpoint,
		"color":    t.Color,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost) NewRoute(PathId uint32, Endpoint string, Color uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route{
		PathId:   &PathId,
		Endpoint: &Endpoint,
		Color:    &Color,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.PathId = &newK.PathId
	e.Endpoint = &newK.Endpoint
	e.Color = &newK.Color

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost) GetOrCreateRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(PathId, Endpoint, Color)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost) GetRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) error {
	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	if v.Endpoint == nil {
		return fmt.Errorf("invalid nil key for Endpoint")
	}

	if v.Color == nil {
		return fmt.Errorf("invalid nil key for Color")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_Key{
		PathId:   *v.PathId,
		Endpoint: *v.Endpoint,
		Color:    *v.Color,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-out-post/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                                `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                                          `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                                `path:"state/@attr-index" ygotAnnotation:"true"`
	Color              *uint32                                                                                                          `path:"state/color|color" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛColor             []ygot.Annotation                                                                                                `path:"state/@color|@color" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                                          `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                                `path:"state/@community-index" ygotAnnotation:"true"`
	Endpoint           *string                                                                                                          `path:"state/endpoint|endpoint" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEndpoint          []ygot.Annotation                                                                                                `path:"state/@endpoint|@endpoint" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                                          `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                                `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                                               `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                                `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                                          `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                                `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                                          `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                                `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                                `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                                            `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                                `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetColor retrieves the value of the leaf Color from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Color is set, it can
// safely use t.GetColor() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Color == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) GetColor() uint32 {
	if t == nil || t.Color == nil {
		return 0
	}
	return *t.Color
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetEndpoint retrieves the value of the leaf Endpoint from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Endpoint is set, it can
// safely use t.GetEndpoint() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Endpoint == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) GetEndpoint() string {
	if t == nil || t.Endpoint == nil {
		return ""
	}
	return *t.Endpoint
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PathId == nil {
		var v uint32 = 0
		t.PathId = &v
	}
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Color == nil {
		return nil, fmt.Errorf("nil value for key Color")
	}

	if t.Endpoint == nil {
		return nil, fmt.Errorf("nil value for key Endpoint")
	}

	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	return map[string]interface{}{
		"color":    *t.Color,
		"endpoint": *t.Endpoint,
		"path-id":  *t.PathId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-out-post/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPost_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-out-pre YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre struct {
	ΛMetadata []ygot.Annotation                                                                                                                                                                `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                                                `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre) IsYANGGoStruct() {
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-out-pre.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_Key struct {
	PathId   uint32 `path:"path-id"`
	Endpoint string `path:"endpoint"`
	Color    uint32 `path:"color"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"path-id":  t.PathId,
		"endpoint": t.Endpoint,
		"color":    t.Color,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre) NewRoute(PathId uint32, Endpoint string, Color uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route{
		PathId:   &PathId,
		Endpoint: &Endpoint,
		Color:    &Color,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.PathId = &newK.PathId
	e.Endpoint = &newK.Endpoint
	e.Color = &newK.Color

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre) GetOrCreateRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(PathId, Endpoint, Color)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre) GetRoute(PathId uint32, Endpoint string, Color uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_Key{
		PathId:   PathId,
		Endpoint: Endpoint,
		Color:    Color,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) error {
	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	if v.Endpoint == nil {
		return fmt.Errorf("invalid nil key for Endpoint")
	}

	if v.Color == nil {
		return fmt.Errorf("invalid nil key for Color")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_Key{
		PathId:   *v.PathId,
		Endpoint: *v.Endpoint,
		Color:    *v.Color,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-out-pre/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                               `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                                         `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                               `path:"state/@attr-index" ygotAnnotation:"true"`
	Color              *uint32                                                                                                         `path:"state/color|color" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛColor             []ygot.Annotation                                                                                               `path:"state/@color|@color" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                                         `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                               `path:"state/@community-index" ygotAnnotation:"true"`
	Endpoint           *string                                                                                                         `path:"state/endpoint|endpoint" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEndpoint          []ygot.Annotation                                                                                               `path:"state/@endpoint|@endpoint" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                                         `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                               `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                                              `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                               `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                                         `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                               `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                                         `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                               `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                               `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                                           `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                               `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetColor retrieves the value of the leaf Color from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Color is set, it can
// safely use t.GetColor() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Color == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) GetColor() uint32 {
	if t == nil || t.Color == nil {
		return 0
	}
	return *t.Color
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetEndpoint retrieves the value of the leaf Endpoint from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Endpoint is set, it can
// safely use t.GetEndpoint() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Endpoint == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) GetEndpoint() string {
	if t == nil || t.Endpoint == nil {
		return ""
	}
	return *t.Endpoint
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PathId == nil {
		var v uint32 = 0
		t.PathId = &v
	}
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Color == nil {
		return nil, fmt.Errorf("nil value for key Color")
	}

	if t.Endpoint == nil {
		return nil, fmt.Errorf("nil value for key Endpoint")
	}

	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	return map[string]interface{}{
		"color":    *t.Color,
		"endpoint": *t.Endpoint,
		"path-id":  *t.PathId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-out-pre/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6SrtePolicy_Neighbor_AdjRibOutPre_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast struct {
	ΛMetadata []ygot.Annotation                                                         `path:"@" ygotAnnotation:"true"`
	LocRib    *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib              `path:"loc-rib" module:"openconfig-network-instance"`
	ΛLocRib   []ygot.Annotation                                                         `path:"@loc-rib" ygotAnnotation:"true"`
	Neighbor  map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor `path:"neighbors/neighbor" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighbor []ygot.Annotation                                                         `path:"neighbors/@neighbor" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast) IsYANGGoStruct() {}

// NewNeighbor creates a new entry in the Neighbor list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast) NewNeighbor(NeighborAddress string) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor)
	}

	key := NeighborAddress

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor{
		NeighborAddress: &NeighborAddress,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.NeighborAddress = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast) GetOrCreateNeighborMap() map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast) GetOrCreateNeighbor(NeighborAddress string) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor {

	key := NeighborAddress

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(NeighborAddress)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast) GetNeighbor(NeighborAddress string) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor {

	if t == nil {
		return nil
	}

	key := NeighborAddress

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor struct to the
// list Neighbor of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast) AppendNeighbor(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor) error {
	if v.NeighborAddress == nil {
		return fmt.Errorf("invalid nil key received for NeighborAddress")
	}

	key := *v.NeighborAddress

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// GetOrCreateLocRib retrieves the value of the LocRib field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast) GetOrCreateLocRib() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib {
	if t.LocRib != nil {
		return t.LocRib
	}
	t.LocRib = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib{}
	return t.LocRib
}

// GetLocRib returns the value of the LocRib struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast. If the receiver or the field LocRib is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast) GetLocRib() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib {
	if t != nil && t.LocRib != nil {
		return t.LocRib
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.LocRib.PopulateDefaults()
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/loc-rib YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib struct {
	ΛMetadata []ygot.Annotation                                                                                                                            `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                            `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/loc-rib.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Key struct {
	Prefix string                                                                         `path:"prefix"`
	Origin NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union `path:"origin"`
	PathId uint32                                                                         `path:"path-id"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"prefix":  t.Prefix,
		"origin":  t.Origin,
		"path-id": t.PathId,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib) NewRoute(Prefix string, Origin NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union, PathId uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Key{
		Prefix: Prefix,
		Origin: Origin,
		PathId: PathId,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route{
		Prefix: &Prefix,
		Origin: Origin,
		PathId: &PathId,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.Prefix = &newK.Prefix
	e.Origin = newK.Origin
	e.PathId = &newK.PathId

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib) GetOrCreateRoute(Prefix string, Origin NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Key{
		Prefix: Prefix,
		Origin: Origin,
		PathId: PathId,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(Prefix, Origin, PathId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib) GetRoute(Prefix string, Origin NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Key{
		Prefix: Prefix,
		Origin: Origin,
		PathId: PathId,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key for Prefix")
	}

	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Key{
		Prefix: *v.Prefix,
		Origin: v.Origin,
		PathId: *v.PathId,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/loc-rib/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route struct {
	ΛMetadata          []ygot.Annotation                                                                             `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                       `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                             `path:"state/@attr-index" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                       `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                             `path:"state/@community-index" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                       `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                             `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                            `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                             `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                       `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                             `path:"state/@last-modified" ygotAnnotation:"true"`
	Origin             NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union                `path:"state/origin|origin" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛOrigin            []ygot.Annotation                                                                             `path:"state/@origin|@origin" ygotAnnotation:"true"`
	PathId             *uint32                                                                                       `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                             `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	Prefix             *string                                                                                       `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix            []ygot.Annotation                                                                             `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                             `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                         `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                             `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) IsYANGGoStruct() {}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetOrigin retrieves the value of the leaf Origin from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Origin is set, it can
// safely use t.GetOrigin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Origin == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) GetOrigin() NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union {
	if t == nil || t.Origin == nil {
		return nil
	}
	return t.Origin
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PathId == nil {
		var v uint32 = 0
		t.PathId = &v
	}
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) ΛListKeyMap() (map[string]interface{}, error) {

	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"origin":  t.Origin,
		"path-id": *t.PathId,
		"prefix":  *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/loc-rib/routes/route/state/origin within the YANG schema.
// Union type can be one of [E_PolicyTypes_INSTALL_PROTOCOL_TYPE, UnionString].
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union interface {
	// Union type can be one of [E_PolicyTypes_INSTALL_PROTOCOL_TYPE, UnionString]
	Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union()
}

// Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union ensures that E_PolicyTypes_INSTALL_PROTOCOL_TYPE
// implements the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union interface.
func (E_PolicyTypes_INSTALL_PROTOCOL_TYPE) Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union() {
}

// To_NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route) To_NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union(i interface{}) (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_Origin_Union, unknown union type, got: %T, want any of [E_PolicyTypes_INSTALL_PROTOCOL_TYPE, string]", i, i)
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/loc-rib/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_LocRib_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor struct {
	ΛMetadata        []ygot.Annotation                                                            `path:"@" ygotAnnotation:"true"`
	AdjRibInPost     *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost  `path:"adj-rib-in-post" module:"openconfig-network-instance"`
	ΛAdjRibInPost    []ygot.Annotation                                                            `path:"@adj-rib-in-post" ygotAnnotation:"true"`
	AdjRibInPre      *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre   `path:"adj-rib-in-pre" module:"openconfig-network-instance"`
	ΛAdjRibInPre     []ygot.Annotation                                                            `path:"@adj-rib-in-pre" ygotAnnotation:"true"`
	AdjRibOutPost    *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost `path:"adj-rib-out-post" module:"openconfig-network-instance"`
	ΛAdjRibOutPost   []ygot.Annotation                                                            `path:"@adj-rib-out-post" ygotAnnotation:"true"`
	AdjRibOutPre     *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre  `path:"adj-rib-out-pre" module:"openconfig-network-instance"`
	ΛAdjRibOutPre    []ygot.Annotation                                                            `path:"@adj-rib-out-pre" ygotAnnotation:"true"`
	NeighborAddress  *string                                                                      `path:"state/neighbor-address|neighbor-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛNeighborAddress []ygot.Annotation                                                            `path:"state/@neighbor-address|@neighbor-address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor) IsYANGGoStruct() {}

// GetOrCreateAdjRibInPost retrieves the value of the AdjRibInPost field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor) GetOrCreateAdjRibInPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost {
	if t.AdjRibInPost != nil {
		return t.AdjRibInPost
	}
	t.AdjRibInPost = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost{}
	return t.AdjRibInPost
}

// GetOrCreateAdjRibInPre retrieves the value of the AdjRibInPre field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor) GetOrCreateAdjRibInPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre {
	if t.AdjRibInPre != nil {
		return t.AdjRibInPre
	}
	t.AdjRibInPre = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre{}
	return t.AdjRibInPre
}

// GetOrCreateAdjRibOutPost retrieves the value of the AdjRibOutPost field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor) GetOrCreateAdjRibOutPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost {
	if t.AdjRibOutPost != nil {
		return t.AdjRibOutPost
	}
	t.AdjRibOutPost = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost{}
	return t.AdjRibOutPost
}

// GetOrCreateAdjRibOutPre retrieves the value of the AdjRibOutPre field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor) GetOrCreateAdjRibOutPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre {
	if t.AdjRibOutPre != nil {
		return t.AdjRibOutPre
	}
	t.AdjRibOutPre = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre{}
	return t.AdjRibOutPre
}

// GetAdjRibInPost returns the value of the AdjRibInPost struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor. If the receiver or the field AdjRibInPost is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor) GetAdjRibInPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost {
	if t != nil && t.AdjRibInPost != nil {
		return t.AdjRibInPost
	}
	return nil
}

// GetAdjRibInPre returns the value of the AdjRibInPre struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor. If the receiver or the field AdjRibInPre is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor) GetAdjRibInPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre {
	if t != nil && t.AdjRibInPre != nil {
		return t.AdjRibInPre
	}
	return nil
}

// GetAdjRibOutPost returns the value of the AdjRibOutPost struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor. If the receiver or the field AdjRibOutPost is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor) GetAdjRibOutPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost {
	if t != nil && t.AdjRibOutPost != nil {
		return t.AdjRibOutPost
	}
	return nil
}

// GetAdjRibOutPre returns the value of the AdjRibOutPre struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor. If the receiver or the field AdjRibOutPre is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor) GetAdjRibOutPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre {
	if t != nil && t.AdjRibOutPre != nil {
		return t.AdjRibOutPre
	}
	return nil
}

// GetNeighborAddress retrieves the value of the leaf NeighborAddress from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborAddress is set, it can
// safely use t.GetNeighborAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor) GetNeighborAddress() string {
	if t == nil || t.NeighborAddress == nil {
		return ""
	}
	return *t.NeighborAddress
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AdjRibInPost.PopulateDefaults()
	t.AdjRibInPre.PopulateDefaults()
	t.AdjRibOutPost.PopulateDefaults()
	t.AdjRibOutPre.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.NeighborAddress == nil {
		return nil, fmt.Errorf("nil value for key NeighborAddress")
	}

	return map[string]interface{}{
		"neighbor-address": *t.NeighborAddress,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-in-post YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost struct {
	ΛMetadata []ygot.Annotation                                                                                                                                                          `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                                          `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-in-post.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_Key struct {
	Prefix string `path:"prefix"`
	PathId uint32 `path:"path-id"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"prefix":  t.Prefix,
		"path-id": t.PathId,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost) NewRoute(Prefix string, PathId uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route{
		Prefix: &Prefix,
		PathId: &PathId,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.Prefix = &newK.Prefix
	e.PathId = &newK.PathId

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost) GetOrCreateRoute(Prefix string, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(Prefix, PathId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost) GetRoute(Prefix string, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key for Prefix")
	}

	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_Key{
		Prefix: *v.Prefix,
		PathId: *v.PathId,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-in-post/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                            `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                                      `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                            `path:"state/@attr-index" ygotAnnotation:"true"`
	BestPath           *bool                                                                                                        `path:"state/best-path" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBestPath          []ygot.Annotation                                                                                            `path:"state/@best-path" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                                      `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                            `path:"state/@community-index" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                                      `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                            `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                                           `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                            `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                                      `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                            `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                                      `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                            `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	Prefix             *string                                                                                                      `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix            []ygot.Annotation                                                                                            `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                            `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                                        `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                            `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetBestPath retrieves the value of the leaf BestPath from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BestPath is set, it can
// safely use t.GetBestPath() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BestPath == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) GetBestPath() bool {
	if t == nil || t.BestPath == nil {
		return false
	}
	return *t.BestPath
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"path-id": *t.PathId,
		"prefix":  *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-in-post/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPost_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-in-pre YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre struct {
	ΛMetadata []ygot.Annotation                                                                                                                                                        `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                                        `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-in-pre.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_Key struct {
	Prefix string `path:"prefix"`
	PathId uint32 `path:"path-id"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"prefix":  t.Prefix,
		"path-id": t.PathId,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre) NewRoute(Prefix string, PathId uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route{
		Prefix: &Prefix,
		PathId: &PathId,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.Prefix = &newK.Prefix
	e.PathId = &newK.PathId

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre) GetOrCreateRoute(Prefix string, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(Prefix, PathId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre) GetRoute(Prefix string, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key for Prefix")
	}

	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_Key{
		Prefix: *v.Prefix,
		PathId: *v.PathId,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-in-pre/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                           `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                                     `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                           `path:"state/@attr-index" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                                     `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                           `path:"state/@community-index" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                                     `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                           `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                                          `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                           `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                                     `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                           `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                                     `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                           `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	Prefix             *string                                                                                                     `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix            []ygot.Annotation                                                                                           `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                           `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                                       `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                           `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"path-id": *t.PathId,
		"prefix":  *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-in-pre/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibInPre_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-out-post YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost struct {
	ΛMetadata []ygot.Annotation                                                                                                                                                            `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                                            `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost) IsYANGGoStruct() {
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-out-post.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_Key struct {
	Prefix string `path:"prefix"`
	PathId uint32 `path:"path-id"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"prefix":  t.Prefix,
		"path-id": t.PathId,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost) NewRoute(Prefix string, PathId uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route{
		Prefix: &Prefix,
		PathId: &PathId,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.Prefix = &newK.Prefix
	e.PathId = &newK.PathId

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost) GetOrCreateRoute(Prefix string, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(Prefix, PathId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost) GetRoute(Prefix string, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key for Prefix")
	}

	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_Key{
		Prefix: *v.Prefix,
		PathId: *v.PathId,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-out-post/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                             `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                                       `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                             `path:"state/@attr-index" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                                       `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                             `path:"state/@community-index" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                                       `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                             `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                                            `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                             `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                                       `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                             `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                                       `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                             `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	Prefix             *string                                                                                                       `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix            []ygot.Annotation                                                                                             `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                             `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                                         `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                             `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"path-id": *t.PathId,
		"prefix":  *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-out-post/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPost_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-out-pre YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre struct {
	ΛMetadata []ygot.Annotation                                                                                                                                                          `path:"@" ygotAnnotation:"true"`
	Route     map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route `path:"routes/route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRoute    []ygot.Annotation                                                                                                                                                          `path:"routes/@route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_Key represents the key for list Route of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-out-pre.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_Key struct {
	Prefix string `path:"prefix"`
	PathId uint32 `path:"path-id"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"prefix":  t.Prefix,
		"path-id": t.PathId,
	}, nil
}

// NewRoute creates a new entry in the Route list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre) NewRoute(Prefix string, PathId uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Route[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Route", key)
	}

	t.Route[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route{
		Prefix: &Prefix,
		PathId: &PathId,
	}

	return t.Route[key], nil
}

// RenameRoute renames an entry in the list Route within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre) RenameRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_Key) error {
	if _, ok := t.Route[newK]; ok {
		return fmt.Errorf("key %v already exists in Route", newK)
	}

	e, ok := t.Route[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Route", oldK)
	}
	e.Prefix = &newK.Prefix
	e.PathId = &newK.PathId

	t.Route[newK] = e
	delete(t.Route, oldK)
	return nil
}

// GetOrCreateRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre) GetOrCreateRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route {
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route)
	}
	return t.Route
}

// GetOrCreateRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre) GetOrCreateRoute(Prefix string, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	if v, ok := t.Route[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRoute(Prefix, PathId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRoute got unexpected error: %v", err))
	}
	return v
}

// GetRoute retrieves the value with the specified key from
// the Route map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre) GetRoute(Prefix string, PathId uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_Key{
		Prefix: Prefix,
		PathId: PathId,
	}

	if lm, ok := t.Route[key]; ok {
		return lm
	}
	return nil
}

// AppendRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route struct to the
// list Route of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre) AppendRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key for Prefix")
	}

	if v.PathId == nil {
		return fmt.Errorf("invalid nil key for PathId")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_Key{
		Prefix: *v.Prefix,
		PathId: *v.PathId,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Route == nil {
		t.Route = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route)
	}

	if _, ok := t.Route[key]; ok {
		return fmt.Errorf("duplicate key for list Route %v", key)
	}

	t.Route[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Route {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-out-pre/routes/route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route struct {
	ΛMetadata          []ygot.Annotation                                                                                            `path:"@" ygotAnnotation:"true"`
	AttrIndex          *uint64                                                                                                      `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex         []ygot.Annotation                                                                                            `path:"state/@attr-index" ygotAnnotation:"true"`
	CommunityIndex     *uint64                                                                                                      `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex    []ygot.Annotation                                                                                            `path:"state/@community-index" ygotAnnotation:"true"`
	ExtCommunityIndex  *uint64                                                                                                      `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex []ygot.Annotation                                                                                            `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason      E_RibBgpTypes_INVALID_ROUTE_REASON                                                                           `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason     []ygot.Annotation                                                                                            `path:"state/@invalid-reason" ygotAnnotation:"true"`
	LastModified       *uint64                                                                                                      `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified      []ygot.Annotation                                                                                            `path:"state/@last-modified" ygotAnnotation:"true"`
	PathId             *uint32                                                                                                      `path:"state/path-id|path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPathId            []ygot.Annotation                                                                                            `path:"state/@path-id|@path-id" ygotAnnotation:"true"`
	Prefix             *string                                                                                                      `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix            []ygot.Annotation                                                                                            `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
	UnknownAttribute   map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute  []ygot.Annotation                                                                                            `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute         *bool                                                                                                        `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute        []ygot.Annotation                                                                                            `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetPathId retrieves the value of the leaf PathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PathId is set, it can
// safely use t.GetPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) GetPathId() uint32 {
	if t == nil || t.PathId == nil {
		return 0
	}
	return *t.PathId
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) ΛListKeyMap() (map[string]interface{}, error) {
	if t.PathId == nil {
		return nil, fmt.Errorf("nil value for key PathId")
	}

	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"path-id": *t.PathId,
		"prefix":  *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-out-pre/routes/route/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_Ipv6Unicast_Neighbor_AdjRibOutPre_Route_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn struct {
	ΛMetadata []ygot.Annotation                                                       `path:"@" ygotAnnotation:"true"`
	LocRib    *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib              `path:"loc-rib" module:"openconfig-network-instance"`
	ΛLocRib   []ygot.Annotation                                                       `path:"@loc-rib" ygotAnnotation:"true"`
	Neighbor  map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor `path:"neighbors/neighbor" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighbor []ygot.Annotation                                                       `path:"neighbors/@neighbor" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn) IsYANGGoStruct() {}

// NewNeighbor creates a new entry in the Neighbor list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn) NewNeighbor(NeighborAddress string) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor)
	}

	key := NeighborAddress

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor{
		NeighborAddress: &NeighborAddress,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.NeighborAddress = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn) GetOrCreateNeighborMap() map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn) GetOrCreateNeighbor(NeighborAddress string) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor {

	key := NeighborAddress

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(NeighborAddress)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn) GetNeighbor(NeighborAddress string) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor {

	if t == nil {
		return nil
	}

	key := NeighborAddress

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor struct to the
// list Neighbor of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn) AppendNeighbor(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor) error {
	if v.NeighborAddress == nil {
		return fmt.Errorf("invalid nil key received for NeighborAddress")
	}

	key := *v.NeighborAddress

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// GetOrCreateLocRib retrieves the value of the LocRib field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn) GetOrCreateLocRib() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib {
	if t.LocRib != nil {
		return t.LocRib
	}
	t.LocRib = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib{}
	return t.LocRib
}

// GetLocRib returns the value of the LocRib struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn. If the receiver or the field LocRib is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn) GetLocRib() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib {
	if t != nil && t.LocRib != nil {
		return t.LocRib
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.LocRib.PopulateDefaults()
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib struct {
	ΛMetadata           []ygot.Annotation                                                                        `path:"@" ygotAnnotation:"true"`
	RouteDistinguisher  map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher `path:"routes/route-distinguisher" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouteDistinguisher []ygot.Annotation                                                                        `path:"routes/@route-distinguisher" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib) IsYANGGoStruct() {}

// NewRouteDistinguisher creates a new entry in the RouteDistinguisher list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib) NewRouteDistinguisher(RouteDistinguisher string) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.RouteDistinguisher == nil {
		t.RouteDistinguisher = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher)
	}

	key := RouteDistinguisher

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.RouteDistinguisher[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list RouteDistinguisher", key)
	}

	t.RouteDistinguisher[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher{
		RouteDistinguisher: &RouteDistinguisher,
	}

	return t.RouteDistinguisher[key], nil
}

// RenameRouteDistinguisher renames an entry in the list RouteDistinguisher within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib) RenameRouteDistinguisher(oldK, newK string) error {
	if _, ok := t.RouteDistinguisher[newK]; ok {
		return fmt.Errorf("key %v already exists in RouteDistinguisher", newK)
	}

	e, ok := t.RouteDistinguisher[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in RouteDistinguisher", oldK)
	}
	e.RouteDistinguisher = &newK

	t.RouteDistinguisher[newK] = e
	delete(t.RouteDistinguisher, oldK)
	return nil
}

// GetOrCreateRouteDistinguisherMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib) GetOrCreateRouteDistinguisherMap() map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher {
	if t.RouteDistinguisher == nil {
		t.RouteDistinguisher = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher)
	}
	return t.RouteDistinguisher
}

// GetOrCreateRouteDistinguisher retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib) GetOrCreateRouteDistinguisher(RouteDistinguisher string) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher {

	key := RouteDistinguisher

	if v, ok := t.RouteDistinguisher[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRouteDistinguisher(RouteDistinguisher)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRouteDistinguisher got unexpected error: %v", err))
	}
	return v
}

// GetRouteDistinguisher retrieves the value with the specified key from
// the RouteDistinguisher map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib) GetRouteDistinguisher(RouteDistinguisher string) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher {

	if t == nil {
		return nil
	}

	key := RouteDistinguisher

	if lm, ok := t.RouteDistinguisher[key]; ok {
		return lm
	}
	return nil
}

// AppendRouteDistinguisher appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher struct to the
// list RouteDistinguisher of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib) AppendRouteDistinguisher(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) error {
	if v.RouteDistinguisher == nil {
		return fmt.Errorf("invalid nil key received for RouteDistinguisher")
	}

	key := *v.RouteDistinguisher

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.RouteDistinguisher == nil {
		t.RouteDistinguisher = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher)
	}

	if _, ok := t.RouteDistinguisher[key]; ok {
		return fmt.Errorf("duplicate key for list RouteDistinguisher %v", key)
	}

	t.RouteDistinguisher[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.RouteDistinguisher {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher struct {
	ΛMetadata           []ygot.Annotation                                                                                                                                                                                `path:"@" ygotAnnotation:"true"`
	RouteDistinguisher  *string                                                                                                                                                                                          `path:"state/route-distinguisher|route-distinguisher" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛRouteDistinguisher []ygot.Annotation                                                                                                                                                                                `path:"state/@route-distinguisher|@route-distinguisher" ygotAnnotation:"true"`
	TypeFiveRoute       map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute   `path:"type-five-ip-prefix/type-five-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTypeFiveRoute      []ygot.Annotation                                                                                                                                                                                `path:"type-five-ip-prefix/@type-five-route" ygotAnnotation:"true"`
	TypeFourRoute       map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute   `path:"type-four-ethernet-segment/type-four-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTypeFourRoute      []ygot.Annotation                                                                                                                                                                                `path:"type-four-ethernet-segment/@type-four-route" ygotAnnotation:"true"`
	TypeOneRoute        map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute     `path:"type-one-ethernet-auto-discovery/type-one-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTypeOneRoute       []ygot.Annotation                                                                                                                                                                                `path:"type-one-ethernet-auto-discovery/@type-one-route" ygotAnnotation:"true"`
	TypeThreeRoute      map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute `path:"type-three-inclusive-multicast-ethernet-tag/type-three-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTypeThreeRoute     []ygot.Annotation                                                                                                                                                                                `path:"type-three-inclusive-multicast-ethernet-tag/@type-three-route" ygotAnnotation:"true"`
	TypeTwoRoute        map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute     `path:"type-two-mac-ip-advertisement/type-two-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTypeTwoRoute       []ygot.Annotation                                                                                                                                                                                `path:"type-two-mac-ip-advertisement/@type-two-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) IsYANGGoStruct() {
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Key represents the key for list TypeFiveRoute of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Key struct {
	EthernetTag    uint32 `path:"ethernet-tag"`
	IpPrefixLength string `path:"ip-prefix-length"`
	IpPrefix       string `path:"ip-prefix"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"ethernet-tag":     t.EthernetTag,
		"ip-prefix-length": t.IpPrefixLength,
		"ip-prefix":        t.IpPrefix,
	}, nil
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Key represents the key for list TypeFourRoute of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Key struct {
	Esi                 string `path:"esi"`
	OriginatingRouterIp string `path:"originating-router-ip"`
	OriginatorIpLength  uint32 `path:"originator-ip-length"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"esi":                   t.Esi,
		"originating-router-ip": t.OriginatingRouterIp,
		"originator-ip-length":  t.OriginatorIpLength,
	}, nil
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Key represents the key for list TypeOneRoute of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Key struct {
	Esi         string `path:"esi"`
	EthernetTag uint32 `path:"ethernet-tag"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"esi":          t.Esi,
		"ethernet-tag": t.EthernetTag,
	}, nil
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Key represents the key for list TypeThreeRoute of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Key struct {
	EthernetTag         uint32 `path:"ethernet-tag"`
	OriginatingRouterIp string `path:"originating-router-ip"`
	OriginatorIpLength  uint32 `path:"originator-ip-length"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"ethernet-tag":          t.EthernetTag,
		"originating-router-ip": t.OriginatingRouterIp,
		"originator-ip-length":  t.OriginatorIpLength,
	}, nil
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Key represents the key for list TypeTwoRoute of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Key struct {
	EthernetTag uint32 `path:"ethernet-tag"`
	MacAddress  string `path:"mac-address"`
	MacLength   uint32 `path:"mac-length"`
	IpPrefix    string `path:"ip-prefix"`
	IpLength    uint32 `path:"ip-length"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"ethernet-tag": t.EthernetTag,
		"mac-address":  t.MacAddress,
		"mac-length":   t.MacLength,
		"ip-prefix":    t.IpPrefix,
		"ip-length":    t.IpLength,
	}, nil
}

// NewTypeFiveRoute creates a new entry in the TypeFiveRoute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) NewTypeFiveRoute(EthernetTag uint32, IpPrefixLength string, IpPrefix string) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeFiveRoute == nil {
		t.TypeFiveRoute = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Key{
		EthernetTag:    EthernetTag,
		IpPrefixLength: IpPrefixLength,
		IpPrefix:       IpPrefix,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.TypeFiveRoute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list TypeFiveRoute", key)
	}

	t.TypeFiveRoute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute{
		EthernetTag:    &EthernetTag,
		IpPrefixLength: &IpPrefixLength,
		IpPrefix:       &IpPrefix,
	}

	return t.TypeFiveRoute[key], nil
}

// RenameTypeFiveRoute renames an entry in the list TypeFiveRoute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) RenameTypeFiveRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Key) error {
	if _, ok := t.TypeFiveRoute[newK]; ok {
		return fmt.Errorf("key %v already exists in TypeFiveRoute", newK)
	}

	e, ok := t.TypeFiveRoute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in TypeFiveRoute", oldK)
	}
	e.EthernetTag = &newK.EthernetTag
	e.IpPrefixLength = &newK.IpPrefixLength
	e.IpPrefix = &newK.IpPrefix

	t.TypeFiveRoute[newK] = e
	delete(t.TypeFiveRoute, oldK)
	return nil
}

// GetOrCreateTypeFiveRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) GetOrCreateTypeFiveRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute {
	if t.TypeFiveRoute == nil {
		t.TypeFiveRoute = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute)
	}
	return t.TypeFiveRoute
}

// GetOrCreateTypeFiveRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) GetOrCreateTypeFiveRoute(EthernetTag uint32, IpPrefixLength string, IpPrefix string) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Key{
		EthernetTag:    EthernetTag,
		IpPrefixLength: IpPrefixLength,
		IpPrefix:       IpPrefix,
	}

	if v, ok := t.TypeFiveRoute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTypeFiveRoute(EthernetTag, IpPrefixLength, IpPrefix)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTypeFiveRoute got unexpected error: %v", err))
	}
	return v
}

// GetTypeFiveRoute retrieves the value with the specified key from
// the TypeFiveRoute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) GetTypeFiveRoute(EthernetTag uint32, IpPrefixLength string, IpPrefix string) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Key{
		EthernetTag:    EthernetTag,
		IpPrefixLength: IpPrefixLength,
		IpPrefix:       IpPrefix,
	}

	if lm, ok := t.TypeFiveRoute[key]; ok {
		return lm
	}
	return nil
}

// AppendTypeFiveRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute struct to the
// list TypeFiveRoute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) AppendTypeFiveRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute) error {
	if v.EthernetTag == nil {
		return fmt.Errorf("invalid nil key for EthernetTag")
	}

	if v.IpPrefixLength == nil {
		return fmt.Errorf("invalid nil key for IpPrefixLength")
	}

	if v.IpPrefix == nil {
		return fmt.Errorf("invalid nil key for IpPrefix")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Key{
		EthernetTag:    *v.EthernetTag,
		IpPrefixLength: *v.IpPrefixLength,
		IpPrefix:       *v.IpPrefix,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeFiveRoute == nil {
		t.TypeFiveRoute = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute)
	}

	if _, ok := t.TypeFiveRoute[key]; ok {
		return fmt.Errorf("duplicate key for list TypeFiveRoute %v", key)
	}

	t.TypeFiveRoute[key] = v
	return nil
}

// NewTypeFourRoute creates a new entry in the TypeFourRoute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) NewTypeFourRoute(Esi string, OriginatingRouterIp string, OriginatorIpLength uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeFourRoute == nil {
		t.TypeFourRoute = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Key{
		Esi:                 Esi,
		OriginatingRouterIp: OriginatingRouterIp,
		OriginatorIpLength:  OriginatorIpLength,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.TypeFourRoute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list TypeFourRoute", key)
	}

	t.TypeFourRoute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute{
		Esi:                 &Esi,
		OriginatingRouterIp: &OriginatingRouterIp,
		OriginatorIpLength:  &OriginatorIpLength,
	}

	return t.TypeFourRoute[key], nil
}

// RenameTypeFourRoute renames an entry in the list TypeFourRoute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) RenameTypeFourRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Key) error {
	if _, ok := t.TypeFourRoute[newK]; ok {
		return fmt.Errorf("key %v already exists in TypeFourRoute", newK)
	}

	e, ok := t.TypeFourRoute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in TypeFourRoute", oldK)
	}
	e.Esi = &newK.Esi
	e.OriginatingRouterIp = &newK.OriginatingRouterIp
	e.OriginatorIpLength = &newK.OriginatorIpLength

	t.TypeFourRoute[newK] = e
	delete(t.TypeFourRoute, oldK)
	return nil
}

// GetOrCreateTypeFourRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) GetOrCreateTypeFourRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute {
	if t.TypeFourRoute == nil {
		t.TypeFourRoute = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute)
	}
	return t.TypeFourRoute
}

// GetOrCreateTypeFourRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) GetOrCreateTypeFourRoute(Esi string, OriginatingRouterIp string, OriginatorIpLength uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Key{
		Esi:                 Esi,
		OriginatingRouterIp: OriginatingRouterIp,
		OriginatorIpLength:  OriginatorIpLength,
	}

	if v, ok := t.TypeFourRoute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTypeFourRoute(Esi, OriginatingRouterIp, OriginatorIpLength)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTypeFourRoute got unexpected error: %v", err))
	}
	return v
}

// GetTypeFourRoute retrieves the value with the specified key from
// the TypeFourRoute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) GetTypeFourRoute(Esi string, OriginatingRouterIp string, OriginatorIpLength uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Key{
		Esi:                 Esi,
		OriginatingRouterIp: OriginatingRouterIp,
		OriginatorIpLength:  OriginatorIpLength,
	}

	if lm, ok := t.TypeFourRoute[key]; ok {
		return lm
	}
	return nil
}

// AppendTypeFourRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute struct to the
// list TypeFourRoute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) AppendTypeFourRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute) error {
	if v.Esi == nil {
		return fmt.Errorf("invalid nil key for Esi")
	}

	if v.OriginatingRouterIp == nil {
		return fmt.Errorf("invalid nil key for OriginatingRouterIp")
	}

	if v.OriginatorIpLength == nil {
		return fmt.Errorf("invalid nil key for OriginatorIpLength")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Key{
		Esi:                 *v.Esi,
		OriginatingRouterIp: *v.OriginatingRouterIp,
		OriginatorIpLength:  *v.OriginatorIpLength,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeFourRoute == nil {
		t.TypeFourRoute = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute)
	}

	if _, ok := t.TypeFourRoute[key]; ok {
		return fmt.Errorf("duplicate key for list TypeFourRoute %v", key)
	}

	t.TypeFourRoute[key] = v
	return nil
}

// NewTypeOneRoute creates a new entry in the TypeOneRoute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) NewTypeOneRoute(Esi string, EthernetTag uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeOneRoute == nil {
		t.TypeOneRoute = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Key{
		Esi:         Esi,
		EthernetTag: EthernetTag,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.TypeOneRoute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list TypeOneRoute", key)
	}

	t.TypeOneRoute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute{
		Esi:         &Esi,
		EthernetTag: &EthernetTag,
	}

	return t.TypeOneRoute[key], nil
}

// RenameTypeOneRoute renames an entry in the list TypeOneRoute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) RenameTypeOneRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Key) error {
	if _, ok := t.TypeOneRoute[newK]; ok {
		return fmt.Errorf("key %v already exists in TypeOneRoute", newK)
	}

	e, ok := t.TypeOneRoute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in TypeOneRoute", oldK)
	}
	e.Esi = &newK.Esi
	e.EthernetTag = &newK.EthernetTag

	t.TypeOneRoute[newK] = e
	delete(t.TypeOneRoute, oldK)
	return nil
}

// GetOrCreateTypeOneRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) GetOrCreateTypeOneRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute {
	if t.TypeOneRoute == nil {
		t.TypeOneRoute = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute)
	}
	return t.TypeOneRoute
}

// GetOrCreateTypeOneRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) GetOrCreateTypeOneRoute(Esi string, EthernetTag uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Key{
		Esi:         Esi,
		EthernetTag: EthernetTag,
	}

	if v, ok := t.TypeOneRoute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTypeOneRoute(Esi, EthernetTag)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTypeOneRoute got unexpected error: %v", err))
	}
	return v
}

// GetTypeOneRoute retrieves the value with the specified key from
// the TypeOneRoute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) GetTypeOneRoute(Esi string, EthernetTag uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Key{
		Esi:         Esi,
		EthernetTag: EthernetTag,
	}

	if lm, ok := t.TypeOneRoute[key]; ok {
		return lm
	}
	return nil
}

// AppendTypeOneRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute struct to the
// list TypeOneRoute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) AppendTypeOneRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute) error {
	if v.Esi == nil {
		return fmt.Errorf("invalid nil key for Esi")
	}

	if v.EthernetTag == nil {
		return fmt.Errorf("invalid nil key for EthernetTag")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Key{
		Esi:         *v.Esi,
		EthernetTag: *v.EthernetTag,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeOneRoute == nil {
		t.TypeOneRoute = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute)
	}

	if _, ok := t.TypeOneRoute[key]; ok {
		return fmt.Errorf("duplicate key for list TypeOneRoute %v", key)
	}

	t.TypeOneRoute[key] = v
	return nil
}

// NewTypeThreeRoute creates a new entry in the TypeThreeRoute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) NewTypeThreeRoute(EthernetTag uint32, OriginatingRouterIp string, OriginatorIpLength uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeThreeRoute == nil {
		t.TypeThreeRoute = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Key{
		EthernetTag:         EthernetTag,
		OriginatingRouterIp: OriginatingRouterIp,
		OriginatorIpLength:  OriginatorIpLength,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.TypeThreeRoute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list TypeThreeRoute", key)
	}

	t.TypeThreeRoute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute{
		EthernetTag:         &EthernetTag,
		OriginatingRouterIp: &OriginatingRouterIp,
		OriginatorIpLength:  &OriginatorIpLength,
	}

	return t.TypeThreeRoute[key], nil
}

// RenameTypeThreeRoute renames an entry in the list TypeThreeRoute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) RenameTypeThreeRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Key) error {
	if _, ok := t.TypeThreeRoute[newK]; ok {
		return fmt.Errorf("key %v already exists in TypeThreeRoute", newK)
	}

	e, ok := t.TypeThreeRoute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in TypeThreeRoute", oldK)
	}
	e.EthernetTag = &newK.EthernetTag
	e.OriginatingRouterIp = &newK.OriginatingRouterIp
	e.OriginatorIpLength = &newK.OriginatorIpLength

	t.TypeThreeRoute[newK] = e
	delete(t.TypeThreeRoute, oldK)
	return nil
}

// GetOrCreateTypeThreeRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) GetOrCreateTypeThreeRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute {
	if t.TypeThreeRoute == nil {
		t.TypeThreeRoute = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute)
	}
	return t.TypeThreeRoute
}

// GetOrCreateTypeThreeRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) GetOrCreateTypeThreeRoute(EthernetTag uint32, OriginatingRouterIp string, OriginatorIpLength uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Key{
		EthernetTag:         EthernetTag,
		OriginatingRouterIp: OriginatingRouterIp,
		OriginatorIpLength:  OriginatorIpLength,
	}

	if v, ok := t.TypeThreeRoute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTypeThreeRoute(EthernetTag, OriginatingRouterIp, OriginatorIpLength)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTypeThreeRoute got unexpected error: %v", err))
	}
	return v
}

// GetTypeThreeRoute retrieves the value with the specified key from
// the TypeThreeRoute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) GetTypeThreeRoute(EthernetTag uint32, OriginatingRouterIp string, OriginatorIpLength uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Key{
		EthernetTag:         EthernetTag,
		OriginatingRouterIp: OriginatingRouterIp,
		OriginatorIpLength:  OriginatorIpLength,
	}

	if lm, ok := t.TypeThreeRoute[key]; ok {
		return lm
	}
	return nil
}

// AppendTypeThreeRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute struct to the
// list TypeThreeRoute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) AppendTypeThreeRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute) error {
	if v.EthernetTag == nil {
		return fmt.Errorf("invalid nil key for EthernetTag")
	}

	if v.OriginatingRouterIp == nil {
		return fmt.Errorf("invalid nil key for OriginatingRouterIp")
	}

	if v.OriginatorIpLength == nil {
		return fmt.Errorf("invalid nil key for OriginatorIpLength")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Key{
		EthernetTag:         *v.EthernetTag,
		OriginatingRouterIp: *v.OriginatingRouterIp,
		OriginatorIpLength:  *v.OriginatorIpLength,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeThreeRoute == nil {
		t.TypeThreeRoute = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute)
	}

	if _, ok := t.TypeThreeRoute[key]; ok {
		return fmt.Errorf("duplicate key for list TypeThreeRoute %v", key)
	}

	t.TypeThreeRoute[key] = v
	return nil
}

// NewTypeTwoRoute creates a new entry in the TypeTwoRoute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) NewTypeTwoRoute(EthernetTag uint32, MacAddress string, MacLength uint32, IpPrefix string, IpLength uint32) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeTwoRoute == nil {
		t.TypeTwoRoute = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Key{
		EthernetTag: EthernetTag,
		MacAddress:  MacAddress,
		MacLength:   MacLength,
		IpPrefix:    IpPrefix,
		IpLength:    IpLength,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.TypeTwoRoute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list TypeTwoRoute", key)
	}

	t.TypeTwoRoute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute{
		EthernetTag: &EthernetTag,
		MacAddress:  &MacAddress,
		MacLength:   &MacLength,
		IpPrefix:    &IpPrefix,
		IpLength:    &IpLength,
	}

	return t.TypeTwoRoute[key], nil
}

// RenameTypeTwoRoute renames an entry in the list TypeTwoRoute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) RenameTypeTwoRoute(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Key) error {
	if _, ok := t.TypeTwoRoute[newK]; ok {
		return fmt.Errorf("key %v already exists in TypeTwoRoute", newK)
	}

	e, ok := t.TypeTwoRoute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in TypeTwoRoute", oldK)
	}
	e.EthernetTag = &newK.EthernetTag
	e.MacAddress = &newK.MacAddress
	e.MacLength = &newK.MacLength
	e.IpPrefix = &newK.IpPrefix
	e.IpLength = &newK.IpLength

	t.TypeTwoRoute[newK] = e
	delete(t.TypeTwoRoute, oldK)
	return nil
}

// GetOrCreateTypeTwoRouteMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) GetOrCreateTypeTwoRouteMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute {
	if t.TypeTwoRoute == nil {
		t.TypeTwoRoute = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute)
	}
	return t.TypeTwoRoute
}

// GetOrCreateTypeTwoRoute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) GetOrCreateTypeTwoRoute(EthernetTag uint32, MacAddress string, MacLength uint32, IpPrefix string, IpLength uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Key{
		EthernetTag: EthernetTag,
		MacAddress:  MacAddress,
		MacLength:   MacLength,
		IpPrefix:    IpPrefix,
		IpLength:    IpLength,
	}

	if v, ok := t.TypeTwoRoute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTypeTwoRoute(EthernetTag, MacAddress, MacLength, IpPrefix, IpLength)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTypeTwoRoute got unexpected error: %v", err))
	}
	return v
}

// GetTypeTwoRoute retrieves the value with the specified key from
// the TypeTwoRoute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) GetTypeTwoRoute(EthernetTag uint32, MacAddress string, MacLength uint32, IpPrefix string, IpLength uint32) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Key{
		EthernetTag: EthernetTag,
		MacAddress:  MacAddress,
		MacLength:   MacLength,
		IpPrefix:    IpPrefix,
		IpLength:    IpLength,
	}

	if lm, ok := t.TypeTwoRoute[key]; ok {
		return lm
	}
	return nil
}

// AppendTypeTwoRoute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute struct to the
// list TypeTwoRoute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) AppendTypeTwoRoute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) error {
	if v.EthernetTag == nil {
		return fmt.Errorf("invalid nil key for EthernetTag")
	}

	if v.MacAddress == nil {
		return fmt.Errorf("invalid nil key for MacAddress")
	}

	if v.MacLength == nil {
		return fmt.Errorf("invalid nil key for MacLength")
	}

	if v.IpPrefix == nil {
		return fmt.Errorf("invalid nil key for IpPrefix")
	}

	if v.IpLength == nil {
		return fmt.Errorf("invalid nil key for IpLength")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Key{
		EthernetTag: *v.EthernetTag,
		MacAddress:  *v.MacAddress,
		MacLength:   *v.MacLength,
		IpPrefix:    *v.IpPrefix,
		IpLength:    *v.IpLength,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeTwoRoute == nil {
		t.TypeTwoRoute = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute)
	}

	if _, ok := t.TypeTwoRoute[key]; ok {
		return fmt.Errorf("duplicate key for list TypeTwoRoute %v", key)
	}

	t.TypeTwoRoute[key] = v
	return nil
}

// GetRouteDistinguisher retrieves the value of the leaf RouteDistinguisher from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouteDistinguisher is set, it can
// safely use t.GetRouteDistinguisher() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouteDistinguisher == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) GetRouteDistinguisher() string {
	if t == nil || t.RouteDistinguisher == nil {
		return ""
	}
	return *t.RouteDistinguisher
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.TypeFiveRoute {
		e.PopulateDefaults()
	}
	for _, e := range t.TypeFourRoute {
		e.PopulateDefaults()
	}
	for _, e := range t.TypeOneRoute {
		e.PopulateDefaults()
	}
	for _, e := range t.TypeThreeRoute {
		e.PopulateDefaults()
	}
	for _, e := range t.TypeTwoRoute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) ΛListKeyMap() (map[string]interface{}, error) {
	if t.RouteDistinguisher == nil {
		return nil, fmt.Errorf("nil value for key RouteDistinguisher")
	}

	return map[string]interface{}{
		"route-distinguisher": *t.RouteDistinguisher,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-five-ip-prefix/type-five-route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute struct {
	ΛMetadata       []ygot.Annotation                                                                                                                                                                                        `path:"@" ygotAnnotation:"true"`
	EthernetTag     *uint32                                                                                                                                                                                                  `path:"state/ethernet-tag|ethernet-tag" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEthernetTag    []ygot.Annotation                                                                                                                                                                                        `path:"state/@ethernet-tag|@ethernet-tag" ygotAnnotation:"true"`
	IpPrefix        *string                                                                                                                                                                                                  `path:"state/ip-prefix|ip-prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIpPrefix       []ygot.Annotation                                                                                                                                                                                        `path:"state/@ip-prefix|@ip-prefix" ygotAnnotation:"true"`
	IpPrefixLength  *string                                                                                                                                                                                                  `path:"state/ip-prefix-length|ip-prefix-length" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIpPrefixLength []ygot.Annotation                                                                                                                                                                                        `path:"state/@ip-prefix-length|@ip-prefix-length" ygotAnnotation:"true"`
	Path            map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path `path:"paths/path" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPath           []ygot.Annotation                                                                                                                                                                                        `path:"paths/@path" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute) IsYANGGoStruct() {
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_Key represents the key for list Path of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-five-ip-prefix/type-five-route.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_Key struct {
	PeerIp                   string                   `path:"peer-ip"`
	PeerPathId               uint32                   `path:"peer-path-id"`
	SourceRouteDistinguisher string                   `path:"source-route-distinguisher"`
	SourceAddressFamily      E_BgpTypes_AFI_SAFI_TYPE `path:"source-address-family"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"peer-ip":                    t.PeerIp,
		"peer-path-id":               t.PeerPathId,
		"source-route-distinguisher": t.SourceRouteDistinguisher,
		"source-address-family":      t.SourceAddressFamily,
	}, nil
}

// NewPath creates a new entry in the Path list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute) NewPath(PeerIp string, PeerPathId uint32, SourceRouteDistinguisher string, SourceAddressFamily E_BgpTypes_AFI_SAFI_TYPE) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Path == nil {
		t.Path = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_Key{
		PeerIp:                   PeerIp,
		PeerPathId:               PeerPathId,
		SourceRouteDistinguisher: SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Path[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Path", key)
	}

	t.Path[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path{
		PeerIp:                   &PeerIp,
		PeerPathId:               &PeerPathId,
		SourceRouteDistinguisher: &SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	return t.Path[key], nil
}

// RenamePath renames an entry in the list Path within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute) RenamePath(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_Key) error {
	if _, ok := t.Path[newK]; ok {
		return fmt.Errorf("key %v already exists in Path", newK)
	}

	e, ok := t.Path[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Path", oldK)
	}
	e.PeerIp = &newK.PeerIp
	e.PeerPathId = &newK.PeerPathId
	e.SourceRouteDistinguisher = &newK.SourceRouteDistinguisher
	e.SourceAddressFamily = newK.SourceAddressFamily

	t.Path[newK] = e
	delete(t.Path, oldK)
	return nil
}

// GetOrCreatePathMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute) GetOrCreatePathMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path {
	if t.Path == nil {
		t.Path = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path)
	}
	return t.Path
}

// GetOrCreatePath retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute) GetOrCreatePath(PeerIp string, PeerPathId uint32, SourceRouteDistinguisher string, SourceAddressFamily E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_Key{
		PeerIp:                   PeerIp,
		PeerPathId:               PeerPathId,
		SourceRouteDistinguisher: SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	if v, ok := t.Path[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPath(PeerIp, PeerPathId, SourceRouteDistinguisher, SourceAddressFamily)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePath got unexpected error: %v", err))
	}
	return v
}

// GetPath retrieves the value with the specified key from
// the Path map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute) GetPath(PeerIp string, PeerPathId uint32, SourceRouteDistinguisher string, SourceAddressFamily E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_Key{
		PeerIp:                   PeerIp,
		PeerPathId:               PeerPathId,
		SourceRouteDistinguisher: SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	if lm, ok := t.Path[key]; ok {
		return lm
	}
	return nil
}

// AppendPath appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path struct to the
// list Path of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute) AppendPath(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) error {
	if v.PeerIp == nil {
		return fmt.Errorf("invalid nil key for PeerIp")
	}

	if v.PeerPathId == nil {
		return fmt.Errorf("invalid nil key for PeerPathId")
	}

	if v.SourceRouteDistinguisher == nil {
		return fmt.Errorf("invalid nil key for SourceRouteDistinguisher")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_Key{
		PeerIp:                   *v.PeerIp,
		PeerPathId:               *v.PeerPathId,
		SourceRouteDistinguisher: *v.SourceRouteDistinguisher,
		SourceAddressFamily:      v.SourceAddressFamily,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Path == nil {
		t.Path = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path)
	}

	if _, ok := t.Path[key]; ok {
		return fmt.Errorf("duplicate key for list Path %v", key)
	}

	t.Path[key] = v
	return nil
}

// GetEthernetTag retrieves the value of the leaf EthernetTag from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EthernetTag is set, it can
// safely use t.GetEthernetTag() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EthernetTag == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute) GetEthernetTag() uint32 {
	if t == nil || t.EthernetTag == nil {
		return 0
	}
	return *t.EthernetTag
}

// GetIpPrefix retrieves the value of the leaf IpPrefix from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IpPrefix is set, it can
// safely use t.GetIpPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IpPrefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute) GetIpPrefix() string {
	if t == nil || t.IpPrefix == nil {
		return ""
	}
	return *t.IpPrefix
}

// GetIpPrefixLength retrieves the value of the leaf IpPrefixLength from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IpPrefixLength is set, it can
// safely use t.GetIpPrefixLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IpPrefixLength == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute) GetIpPrefixLength() string {
	if t == nil || t.IpPrefixLength == nil {
		return ""
	}
	return *t.IpPrefixLength
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Path {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.EthernetTag == nil {
		return nil, fmt.Errorf("nil value for key EthernetTag")
	}

	if t.IpPrefix == nil {
		return nil, fmt.Errorf("nil value for key IpPrefix")
	}

	if t.IpPrefixLength == nil {
		return nil, fmt.Errorf("nil value for key IpPrefixLength")
	}

	return map[string]interface{}{
		"ethernet-tag":     *t.EthernetTag,
		"ip-prefix":        *t.IpPrefix,
		"ip-prefix-length": *t.IpPrefixLength,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-five-ip-prefix/type-five-route/paths/path YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path struct {
	ΛMetadata                 []ygot.Annotation                                                                                                           `path:"@" ygotAnnotation:"true"`
	AdvertisedToPeer          []string                                                                                                                    `path:"state/advertised-to-peer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdvertisedToPeer         []ygot.Annotation                                                                                                           `path:"state/@advertised-to-peer" ygotAnnotation:"true"`
	AttrIndex                 *uint64                                                                                                                     `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex                []ygot.Annotation                                                                                                           `path:"state/@attr-index" ygotAnnotation:"true"`
	Backup                    *bool                                                                                                                       `path:"state/backup" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBackup                   []ygot.Annotation                                                                                                           `path:"state/@backup" ygotAnnotation:"true"`
	Bestpath                  *bool                                                                                                                       `path:"state/bestpath" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBestpath                 []ygot.Annotation                                                                                                           `path:"state/@bestpath" ygotAnnotation:"true"`
	CommunityIndex            *uint64                                                                                                                     `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex           []ygot.Annotation                                                                                                           `path:"state/@community-index" ygotAnnotation:"true"`
	Esi                       *string                                                                                                                     `path:"state/esi" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEsi                      []ygot.Annotation                                                                                                           `path:"state/@esi" ygotAnnotation:"true"`
	ExtCommunityIndex         *uint64                                                                                                                     `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex        []ygot.Annotation                                                                                                           `path:"state/@ext-community-index" ygotAnnotation:"true"`
	GatewayIpAddress          *string                                                                                                                     `path:"state/gateway-ip-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛGatewayIpAddress         []ygot.Annotation                                                                                                           `path:"state/@gateway-ip-address" ygotAnnotation:"true"`
	InvalidReason             E_RibBgpTypes_INVALID_ROUTE_REASON                                                                                          `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason            []ygot.Annotation                                                                                                           `path:"state/@invalid-reason" ygotAnnotation:"true"`
	Label                     *string                                                                                                                     `path:"state/label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabel                    []ygot.Annotation                                                                                                           `path:"state/@label" ygotAnnotation:"true"`
	Label2                    *string                                                                                                                     `path:"state/label2" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabel2                   []ygot.Annotation                                                                                                           `path:"state/@label2" ygotAnnotation:"true"`
	LastModified              *uint64                                                                                                                     `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified             []ygot.Annotation                                                                                                           `path:"state/@last-modified" ygotAnnotation:"true"`
	Multipath                 *bool                                                                                                                       `path:"state/multipath" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMultipath                []ygot.Annotation                                                                                                           `path:"state/@multipath" ygotAnnotation:"true"`
	PeerIp                    *string                                                                                                                     `path:"state/peer-ip|peer-ip" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPeerIp                   []ygot.Annotation                                                                                                           `path:"state/@peer-ip|@peer-ip" ygotAnnotation:"true"`
	PeerPathId                *uint32                                                                                                                     `path:"state/peer-path-id|peer-path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPeerPathId               []ygot.Annotation                                                                                                           `path:"state/@peer-path-id|@peer-path-id" ygotAnnotation:"true"`
	SourceAddressFamily       E_BgpTypes_AFI_SAFI_TYPE                                                                                                    `path:"state/source-address-family|source-address-family" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSourceAddressFamily      []ygot.Annotation                                                                                                           `path:"state/@source-address-family|@source-address-family" ygotAnnotation:"true"`
	SourceRouteDistinguisher  *string                                                                                                                     `path:"state/source-route-distinguisher|source-route-distinguisher" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSourceRouteDistinguisher []ygot.Annotation                                                                                                           `path:"state/@source-route-distinguisher|@source-route-distinguisher" ygotAnnotation:"true"`
	UnknownAttribute          map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute         []ygot.Annotation                                                                                                           `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute                *bool                                                                                                                       `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute               []ygot.Annotation                                                                                                           `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAdvertisedToPeer retrieves the value of the leaf AdvertisedToPeer from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdvertisedToPeer is set, it can
// safely use t.GetAdvertisedToPeer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdvertisedToPeer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetAdvertisedToPeer() []string {
	if t == nil || t.AdvertisedToPeer == nil {
		return nil
	}
	return t.AdvertisedToPeer
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetBackup retrieves the value of the leaf Backup from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Backup is set, it can
// safely use t.GetBackup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Backup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetBackup() bool {
	if t == nil || t.Backup == nil {
		return false
	}
	return *t.Backup
}

// GetBestpath retrieves the value of the leaf Bestpath from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bestpath is set, it can
// safely use t.GetBestpath() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bestpath == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetBestpath() bool {
	if t == nil || t.Bestpath == nil {
		return false
	}
	return *t.Bestpath
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetEsi retrieves the value of the leaf Esi from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Esi is set, it can
// safely use t.GetEsi() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Esi == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetEsi() string {
	if t == nil || t.Esi == nil {
		return ""
	}
	return *t.Esi
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetGatewayIpAddress retrieves the value of the leaf GatewayIpAddress from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if GatewayIpAddress is set, it can
// safely use t.GetGatewayIpAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.GatewayIpAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetGatewayIpAddress() string {
	if t == nil || t.GatewayIpAddress == nil {
		return ""
	}
	return *t.GatewayIpAddress
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLabel retrieves the value of the leaf Label from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Label is set, it can
// safely use t.GetLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Label == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetLabel() string {
	if t == nil || t.Label == nil {
		return ""
	}
	return *t.Label
}

// GetLabel2 retrieves the value of the leaf Label2 from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Label2 is set, it can
// safely use t.GetLabel2() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Label2 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetLabel2() string {
	if t == nil || t.Label2 == nil {
		return ""
	}
	return *t.Label2
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetMultipath retrieves the value of the leaf Multipath from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Multipath is set, it can
// safely use t.GetMultipath() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Multipath == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetMultipath() bool {
	if t == nil || t.Multipath == nil {
		return false
	}
	return *t.Multipath
}

// GetPeerIp retrieves the value of the leaf PeerIp from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerIp is set, it can
// safely use t.GetPeerIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerIp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetPeerIp() string {
	if t == nil || t.PeerIp == nil {
		return ""
	}
	return *t.PeerIp
}

// GetPeerPathId retrieves the value of the leaf PeerPathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerPathId is set, it can
// safely use t.GetPeerPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerPathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetPeerPathId() uint32 {
	if t == nil || t.PeerPathId == nil {
		return 0
	}
	return *t.PeerPathId
}

// GetSourceAddressFamily retrieves the value of the leaf SourceAddressFamily from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddressFamily is set, it can
// safely use t.GetSourceAddressFamily() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddressFamily == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetSourceAddressFamily() E_BgpTypes_AFI_SAFI_TYPE {
	if t == nil || t.SourceAddressFamily == 0 {
		return 0
	}
	return t.SourceAddressFamily
}

// GetSourceRouteDistinguisher retrieves the value of the leaf SourceRouteDistinguisher from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceRouteDistinguisher is set, it can
// safely use t.GetSourceRouteDistinguisher() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceRouteDistinguisher == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetSourceRouteDistinguisher() string {
	if t == nil || t.SourceRouteDistinguisher == nil {
		return ""
	}
	return *t.SourceRouteDistinguisher
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) ΛListKeyMap() (map[string]interface{}, error) {
	if t.PeerIp == nil {
		return nil, fmt.Errorf("nil value for key PeerIp")
	}

	if t.PeerPathId == nil {
		return nil, fmt.Errorf("nil value for key PeerPathId")
	}

	if t.SourceRouteDistinguisher == nil {
		return nil, fmt.Errorf("nil value for key SourceRouteDistinguisher")
	}

	return map[string]interface{}{
		"peer-ip":                    *t.PeerIp,
		"peer-path-id":               *t.PeerPathId,
		"source-address-family":      t.SourceAddressFamily,
		"source-route-distinguisher": *t.SourceRouteDistinguisher,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-five-ip-prefix/type-five-route/paths/path/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFiveRoute_Path_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-four-ethernet-segment/type-four-route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute struct {
	ΛMetadata            []ygot.Annotation                                                                                                                                                                                        `path:"@" ygotAnnotation:"true"`
	Esi                  *string                                                                                                                                                                                                  `path:"state/esi|esi" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEsi                 []ygot.Annotation                                                                                                                                                                                        `path:"state/@esi|@esi" ygotAnnotation:"true"`
	OriginatingRouterIp  *string                                                                                                                                                                                                  `path:"state/originating-router-ip|originating-router-ip" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛOriginatingRouterIp []ygot.Annotation                                                                                                                                                                                        `path:"state/@originating-router-ip|@originating-router-ip" ygotAnnotation:"true"`
	OriginatorIpLength   *uint32                                                                                                                                                                                                  `path:"state/originator-ip-length|originator-ip-length" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛOriginatorIpLength  []ygot.Annotation                                                                                                                                                                                        `path:"state/@originator-ip-length|@originator-ip-length" ygotAnnotation:"true"`
	Path                 map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path `path:"paths/path" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPath                []ygot.Annotation                                                                                                                                                                                        `path:"paths/@path" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute) IsYANGGoStruct() {
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_Key represents the key for list Path of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-four-ethernet-segment/type-four-route.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_Key struct {
	PeerIp                   string                   `path:"peer-ip"`
	PeerPathId               uint32                   `path:"peer-path-id"`
	SourceRouteDistinguisher string                   `path:"source-route-distinguisher"`
	SourceAddressFamily      E_BgpTypes_AFI_SAFI_TYPE `path:"source-address-family"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"peer-ip":                    t.PeerIp,
		"peer-path-id":               t.PeerPathId,
		"source-route-distinguisher": t.SourceRouteDistinguisher,
		"source-address-family":      t.SourceAddressFamily,
	}, nil
}

// NewPath creates a new entry in the Path list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute) NewPath(PeerIp string, PeerPathId uint32, SourceRouteDistinguisher string, SourceAddressFamily E_BgpTypes_AFI_SAFI_TYPE) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Path == nil {
		t.Path = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_Key{
		PeerIp:                   PeerIp,
		PeerPathId:               PeerPathId,
		SourceRouteDistinguisher: SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Path[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Path", key)
	}

	t.Path[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path{
		PeerIp:                   &PeerIp,
		PeerPathId:               &PeerPathId,
		SourceRouteDistinguisher: &SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	return t.Path[key], nil
}

// RenamePath renames an entry in the list Path within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute) RenamePath(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_Key) error {
	if _, ok := t.Path[newK]; ok {
		return fmt.Errorf("key %v already exists in Path", newK)
	}

	e, ok := t.Path[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Path", oldK)
	}
	e.PeerIp = &newK.PeerIp
	e.PeerPathId = &newK.PeerPathId
	e.SourceRouteDistinguisher = &newK.SourceRouteDistinguisher
	e.SourceAddressFamily = newK.SourceAddressFamily

	t.Path[newK] = e
	delete(t.Path, oldK)
	return nil
}

// GetOrCreatePathMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute) GetOrCreatePathMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path {
	if t.Path == nil {
		t.Path = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path)
	}
	return t.Path
}

// GetOrCreatePath retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute) GetOrCreatePath(PeerIp string, PeerPathId uint32, SourceRouteDistinguisher string, SourceAddressFamily E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_Key{
		PeerIp:                   PeerIp,
		PeerPathId:               PeerPathId,
		SourceRouteDistinguisher: SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	if v, ok := t.Path[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPath(PeerIp, PeerPathId, SourceRouteDistinguisher, SourceAddressFamily)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePath got unexpected error: %v", err))
	}
	return v
}

// GetPath retrieves the value with the specified key from
// the Path map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute) GetPath(PeerIp string, PeerPathId uint32, SourceRouteDistinguisher string, SourceAddressFamily E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_Key{
		PeerIp:                   PeerIp,
		PeerPathId:               PeerPathId,
		SourceRouteDistinguisher: SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	if lm, ok := t.Path[key]; ok {
		return lm
	}
	return nil
}

// AppendPath appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path struct to the
// list Path of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute) AppendPath(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) error {
	if v.PeerIp == nil {
		return fmt.Errorf("invalid nil key for PeerIp")
	}

	if v.PeerPathId == nil {
		return fmt.Errorf("invalid nil key for PeerPathId")
	}

	if v.SourceRouteDistinguisher == nil {
		return fmt.Errorf("invalid nil key for SourceRouteDistinguisher")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_Key{
		PeerIp:                   *v.PeerIp,
		PeerPathId:               *v.PeerPathId,
		SourceRouteDistinguisher: *v.SourceRouteDistinguisher,
		SourceAddressFamily:      v.SourceAddressFamily,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Path == nil {
		t.Path = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path)
	}

	if _, ok := t.Path[key]; ok {
		return fmt.Errorf("duplicate key for list Path %v", key)
	}

	t.Path[key] = v
	return nil
}

// GetEsi retrieves the value of the leaf Esi from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Esi is set, it can
// safely use t.GetEsi() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Esi == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute) GetEsi() string {
	if t == nil || t.Esi == nil {
		return ""
	}
	return *t.Esi
}

// GetOriginatingRouterIp retrieves the value of the leaf OriginatingRouterIp from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OriginatingRouterIp is set, it can
// safely use t.GetOriginatingRouterIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OriginatingRouterIp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute) GetOriginatingRouterIp() string {
	if t == nil || t.OriginatingRouterIp == nil {
		return ""
	}
	return *t.OriginatingRouterIp
}

// GetOriginatorIpLength retrieves the value of the leaf OriginatorIpLength from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OriginatorIpLength is set, it can
// safely use t.GetOriginatorIpLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OriginatorIpLength == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute) GetOriginatorIpLength() uint32 {
	if t == nil || t.OriginatorIpLength == nil {
		return 0
	}
	return *t.OriginatorIpLength
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Path {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Esi == nil {
		return nil, fmt.Errorf("nil value for key Esi")
	}

	if t.OriginatingRouterIp == nil {
		return nil, fmt.Errorf("nil value for key OriginatingRouterIp")
	}

	if t.OriginatorIpLength == nil {
		return nil, fmt.Errorf("nil value for key OriginatorIpLength")
	}

	return map[string]interface{}{
		"esi":                   *t.Esi,
		"originating-router-ip": *t.OriginatingRouterIp,
		"originator-ip-length":  *t.OriginatorIpLength,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-four-ethernet-segment/type-four-route/paths/path YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path struct {
	ΛMetadata                 []ygot.Annotation                                                                                                           `path:"@" ygotAnnotation:"true"`
	AdvertisedToPeer          []string                                                                                                                    `path:"state/advertised-to-peer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdvertisedToPeer         []ygot.Annotation                                                                                                           `path:"state/@advertised-to-peer" ygotAnnotation:"true"`
	AttrIndex                 *uint64                                                                                                                     `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex                []ygot.Annotation                                                                                                           `path:"state/@attr-index" ygotAnnotation:"true"`
	Backup                    *bool                                                                                                                       `path:"state/backup" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBackup                   []ygot.Annotation                                                                                                           `path:"state/@backup" ygotAnnotation:"true"`
	Bestpath                  *bool                                                                                                                       `path:"state/bestpath" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBestpath                 []ygot.Annotation                                                                                                           `path:"state/@bestpath" ygotAnnotation:"true"`
	CommunityIndex            *uint64                                                                                                                     `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex           []ygot.Annotation                                                                                                           `path:"state/@community-index" ygotAnnotation:"true"`
	ExtCommunityIndex         *uint64                                                                                                                     `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex        []ygot.Annotation                                                                                                           `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason             E_RibBgpTypes_INVALID_ROUTE_REASON                                                                                          `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason            []ygot.Annotation                                                                                                           `path:"state/@invalid-reason" ygotAnnotation:"true"`
	Label                     *string                                                                                                                     `path:"state/label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabel                    []ygot.Annotation                                                                                                           `path:"state/@label" ygotAnnotation:"true"`
	Label2                    *string                                                                                                                     `path:"state/label2" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabel2                   []ygot.Annotation                                                                                                           `path:"state/@label2" ygotAnnotation:"true"`
	LastModified              *uint64                                                                                                                     `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified             []ygot.Annotation                                                                                                           `path:"state/@last-modified" ygotAnnotation:"true"`
	Multipath                 *bool                                                                                                                       `path:"state/multipath" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMultipath                []ygot.Annotation                                                                                                           `path:"state/@multipath" ygotAnnotation:"true"`
	PeerIp                    *string                                                                                                                     `path:"state/peer-ip|peer-ip" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPeerIp                   []ygot.Annotation                                                                                                           `path:"state/@peer-ip|@peer-ip" ygotAnnotation:"true"`
	PeerPathId                *uint32                                                                                                                     `path:"state/peer-path-id|peer-path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPeerPathId               []ygot.Annotation                                                                                                           `path:"state/@peer-path-id|@peer-path-id" ygotAnnotation:"true"`
	SourceAddressFamily       E_BgpTypes_AFI_SAFI_TYPE                                                                                                    `path:"state/source-address-family|source-address-family" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSourceAddressFamily      []ygot.Annotation                                                                                                           `path:"state/@source-address-family|@source-address-family" ygotAnnotation:"true"`
	SourceRouteDistinguisher  *string                                                                                                                     `path:"state/source-route-distinguisher|source-route-distinguisher" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSourceRouteDistinguisher []ygot.Annotation                                                                                                           `path:"state/@source-route-distinguisher|@source-route-distinguisher" ygotAnnotation:"true"`
	UnknownAttribute          map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute         []ygot.Annotation                                                                                                           `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute                *bool                                                                                                                       `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute               []ygot.Annotation                                                                                                           `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAdvertisedToPeer retrieves the value of the leaf AdvertisedToPeer from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdvertisedToPeer is set, it can
// safely use t.GetAdvertisedToPeer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdvertisedToPeer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetAdvertisedToPeer() []string {
	if t == nil || t.AdvertisedToPeer == nil {
		return nil
	}
	return t.AdvertisedToPeer
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetBackup retrieves the value of the leaf Backup from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Backup is set, it can
// safely use t.GetBackup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Backup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetBackup() bool {
	if t == nil || t.Backup == nil {
		return false
	}
	return *t.Backup
}

// GetBestpath retrieves the value of the leaf Bestpath from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bestpath is set, it can
// safely use t.GetBestpath() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bestpath == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetBestpath() bool {
	if t == nil || t.Bestpath == nil {
		return false
	}
	return *t.Bestpath
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLabel retrieves the value of the leaf Label from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Label is set, it can
// safely use t.GetLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Label == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetLabel() string {
	if t == nil || t.Label == nil {
		return ""
	}
	return *t.Label
}

// GetLabel2 retrieves the value of the leaf Label2 from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Label2 is set, it can
// safely use t.GetLabel2() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Label2 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetLabel2() string {
	if t == nil || t.Label2 == nil {
		return ""
	}
	return *t.Label2
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetMultipath retrieves the value of the leaf Multipath from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Multipath is set, it can
// safely use t.GetMultipath() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Multipath == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetMultipath() bool {
	if t == nil || t.Multipath == nil {
		return false
	}
	return *t.Multipath
}

// GetPeerIp retrieves the value of the leaf PeerIp from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerIp is set, it can
// safely use t.GetPeerIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerIp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetPeerIp() string {
	if t == nil || t.PeerIp == nil {
		return ""
	}
	return *t.PeerIp
}

// GetPeerPathId retrieves the value of the leaf PeerPathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerPathId is set, it can
// safely use t.GetPeerPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerPathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetPeerPathId() uint32 {
	if t == nil || t.PeerPathId == nil {
		return 0
	}
	return *t.PeerPathId
}

// GetSourceAddressFamily retrieves the value of the leaf SourceAddressFamily from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddressFamily is set, it can
// safely use t.GetSourceAddressFamily() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddressFamily == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetSourceAddressFamily() E_BgpTypes_AFI_SAFI_TYPE {
	if t == nil || t.SourceAddressFamily == 0 {
		return 0
	}
	return t.SourceAddressFamily
}

// GetSourceRouteDistinguisher retrieves the value of the leaf SourceRouteDistinguisher from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceRouteDistinguisher is set, it can
// safely use t.GetSourceRouteDistinguisher() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceRouteDistinguisher == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetSourceRouteDistinguisher() string {
	if t == nil || t.SourceRouteDistinguisher == nil {
		return ""
	}
	return *t.SourceRouteDistinguisher
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) ΛListKeyMap() (map[string]interface{}, error) {
	if t.PeerIp == nil {
		return nil, fmt.Errorf("nil value for key PeerIp")
	}

	if t.PeerPathId == nil {
		return nil, fmt.Errorf("nil value for key PeerPathId")
	}

	if t.SourceRouteDistinguisher == nil {
		return nil, fmt.Errorf("nil value for key SourceRouteDistinguisher")
	}

	return map[string]interface{}{
		"peer-ip":                    *t.PeerIp,
		"peer-path-id":               *t.PeerPathId,
		"source-address-family":      t.SourceAddressFamily,
		"source-route-distinguisher": *t.SourceRouteDistinguisher,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-four-ethernet-segment/type-four-route/paths/path/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeFourRoute_Path_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-one-ethernet-auto-discovery/type-one-route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute struct {
	ΛMetadata    []ygot.Annotation                                                                                                                                                                                      `path:"@" ygotAnnotation:"true"`
	Esi          *string                                                                                                                                                                                                `path:"state/esi|esi" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEsi         []ygot.Annotation                                                                                                                                                                                      `path:"state/@esi|@esi" ygotAnnotation:"true"`
	EthernetTag  *uint32                                                                                                                                                                                                `path:"state/ethernet-tag|ethernet-tag" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEthernetTag []ygot.Annotation                                                                                                                                                                                      `path:"state/@ethernet-tag|@ethernet-tag" ygotAnnotation:"true"`
	Path         map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path `path:"paths/path" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPath        []ygot.Annotation                                                                                                                                                                                      `path:"paths/@path" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute) IsYANGGoStruct() {
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_Key represents the key for list Path of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-one-ethernet-auto-discovery/type-one-route.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_Key struct {
	PeerIp                   string                   `path:"peer-ip"`
	PeerPathId               uint32                   `path:"peer-path-id"`
	SourceRouteDistinguisher string                   `path:"source-route-distinguisher"`
	SourceAddressFamily      E_BgpTypes_AFI_SAFI_TYPE `path:"source-address-family"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"peer-ip":                    t.PeerIp,
		"peer-path-id":               t.PeerPathId,
		"source-route-distinguisher": t.SourceRouteDistinguisher,
		"source-address-family":      t.SourceAddressFamily,
	}, nil
}

// NewPath creates a new entry in the Path list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute) NewPath(PeerIp string, PeerPathId uint32, SourceRouteDistinguisher string, SourceAddressFamily E_BgpTypes_AFI_SAFI_TYPE) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Path == nil {
		t.Path = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_Key{
		PeerIp:                   PeerIp,
		PeerPathId:               PeerPathId,
		SourceRouteDistinguisher: SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Path[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Path", key)
	}

	t.Path[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path{
		PeerIp:                   &PeerIp,
		PeerPathId:               &PeerPathId,
		SourceRouteDistinguisher: &SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	return t.Path[key], nil
}

// RenamePath renames an entry in the list Path within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute) RenamePath(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_Key) error {
	if _, ok := t.Path[newK]; ok {
		return fmt.Errorf("key %v already exists in Path", newK)
	}

	e, ok := t.Path[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Path", oldK)
	}
	e.PeerIp = &newK.PeerIp
	e.PeerPathId = &newK.PeerPathId
	e.SourceRouteDistinguisher = &newK.SourceRouteDistinguisher
	e.SourceAddressFamily = newK.SourceAddressFamily

	t.Path[newK] = e
	delete(t.Path, oldK)
	return nil
}

// GetOrCreatePathMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute) GetOrCreatePathMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path {
	if t.Path == nil {
		t.Path = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path)
	}
	return t.Path
}

// GetOrCreatePath retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute) GetOrCreatePath(PeerIp string, PeerPathId uint32, SourceRouteDistinguisher string, SourceAddressFamily E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_Key{
		PeerIp:                   PeerIp,
		PeerPathId:               PeerPathId,
		SourceRouteDistinguisher: SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	if v, ok := t.Path[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPath(PeerIp, PeerPathId, SourceRouteDistinguisher, SourceAddressFamily)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePath got unexpected error: %v", err))
	}
	return v
}

// GetPath retrieves the value with the specified key from
// the Path map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute) GetPath(PeerIp string, PeerPathId uint32, SourceRouteDistinguisher string, SourceAddressFamily E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_Key{
		PeerIp:                   PeerIp,
		PeerPathId:               PeerPathId,
		SourceRouteDistinguisher: SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	if lm, ok := t.Path[key]; ok {
		return lm
	}
	return nil
}

// AppendPath appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path struct to the
// list Path of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute) AppendPath(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) error {
	if v.PeerIp == nil {
		return fmt.Errorf("invalid nil key for PeerIp")
	}

	if v.PeerPathId == nil {
		return fmt.Errorf("invalid nil key for PeerPathId")
	}

	if v.SourceRouteDistinguisher == nil {
		return fmt.Errorf("invalid nil key for SourceRouteDistinguisher")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_Key{
		PeerIp:                   *v.PeerIp,
		PeerPathId:               *v.PeerPathId,
		SourceRouteDistinguisher: *v.SourceRouteDistinguisher,
		SourceAddressFamily:      v.SourceAddressFamily,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Path == nil {
		t.Path = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path)
	}

	if _, ok := t.Path[key]; ok {
		return fmt.Errorf("duplicate key for list Path %v", key)
	}

	t.Path[key] = v
	return nil
}

// GetEsi retrieves the value of the leaf Esi from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Esi is set, it can
// safely use t.GetEsi() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Esi == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute) GetEsi() string {
	if t == nil || t.Esi == nil {
		return ""
	}
	return *t.Esi
}

// GetEthernetTag retrieves the value of the leaf EthernetTag from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EthernetTag is set, it can
// safely use t.GetEthernetTag() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EthernetTag == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute) GetEthernetTag() uint32 {
	if t == nil || t.EthernetTag == nil {
		return 0
	}
	return *t.EthernetTag
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Path {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Esi == nil {
		return nil, fmt.Errorf("nil value for key Esi")
	}

	if t.EthernetTag == nil {
		return nil, fmt.Errorf("nil value for key EthernetTag")
	}

	return map[string]interface{}{
		"esi":          *t.Esi,
		"ethernet-tag": *t.EthernetTag,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-one-ethernet-auto-discovery/type-one-route/paths/path YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path struct {
	ΛMetadata                 []ygot.Annotation                                                                                                          `path:"@" ygotAnnotation:"true"`
	AdvertisedToPeer          []string                                                                                                                   `path:"state/advertised-to-peer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdvertisedToPeer         []ygot.Annotation                                                                                                          `path:"state/@advertised-to-peer" ygotAnnotation:"true"`
	AttrIndex                 *uint64                                                                                                                    `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex                []ygot.Annotation                                                                                                          `path:"state/@attr-index" ygotAnnotation:"true"`
	Backup                    *bool                                                                                                                      `path:"state/backup" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBackup                   []ygot.Annotation                                                                                                          `path:"state/@backup" ygotAnnotation:"true"`
	Bestpath                  *bool                                                                                                                      `path:"state/bestpath" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBestpath                 []ygot.Annotation                                                                                                          `path:"state/@bestpath" ygotAnnotation:"true"`
	CommunityIndex            *uint64                                                                                                                    `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex           []ygot.Annotation                                                                                                          `path:"state/@community-index" ygotAnnotation:"true"`
	ExtCommunityIndex         *uint64                                                                                                                    `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex        []ygot.Annotation                                                                                                          `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason             E_RibBgpTypes_INVALID_ROUTE_REASON                                                                                         `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason            []ygot.Annotation                                                                                                          `path:"state/@invalid-reason" ygotAnnotation:"true"`
	Label                     *string                                                                                                                    `path:"state/label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabel                    []ygot.Annotation                                                                                                          `path:"state/@label" ygotAnnotation:"true"`
	Label2                    *string                                                                                                                    `path:"state/label2" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabel2                   []ygot.Annotation                                                                                                          `path:"state/@label2" ygotAnnotation:"true"`
	LastModified              *uint64                                                                                                                    `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified             []ygot.Annotation                                                                                                          `path:"state/@last-modified" ygotAnnotation:"true"`
	Multipath                 *bool                                                                                                                      `path:"state/multipath" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMultipath                []ygot.Annotation                                                                                                          `path:"state/@multipath" ygotAnnotation:"true"`
	PeerIp                    *string                                                                                                                    `path:"state/peer-ip|peer-ip" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPeerIp                   []ygot.Annotation                                                                                                          `path:"state/@peer-ip|@peer-ip" ygotAnnotation:"true"`
	PeerPathId                *uint32                                                                                                                    `path:"state/peer-path-id|peer-path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPeerPathId               []ygot.Annotation                                                                                                          `path:"state/@peer-path-id|@peer-path-id" ygotAnnotation:"true"`
	SourceAddressFamily       E_BgpTypes_AFI_SAFI_TYPE                                                                                                   `path:"state/source-address-family|source-address-family" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSourceAddressFamily      []ygot.Annotation                                                                                                          `path:"state/@source-address-family|@source-address-family" ygotAnnotation:"true"`
	SourceRouteDistinguisher  *string                                                                                                                    `path:"state/source-route-distinguisher|source-route-distinguisher" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSourceRouteDistinguisher []ygot.Annotation                                                                                                          `path:"state/@source-route-distinguisher|@source-route-distinguisher" ygotAnnotation:"true"`
	UnknownAttribute          map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute         []ygot.Annotation                                                                                                          `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute                *bool                                                                                                                      `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute               []ygot.Annotation                                                                                                          `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAdvertisedToPeer retrieves the value of the leaf AdvertisedToPeer from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdvertisedToPeer is set, it can
// safely use t.GetAdvertisedToPeer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdvertisedToPeer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetAdvertisedToPeer() []string {
	if t == nil || t.AdvertisedToPeer == nil {
		return nil
	}
	return t.AdvertisedToPeer
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetBackup retrieves the value of the leaf Backup from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Backup is set, it can
// safely use t.GetBackup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Backup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetBackup() bool {
	if t == nil || t.Backup == nil {
		return false
	}
	return *t.Backup
}

// GetBestpath retrieves the value of the leaf Bestpath from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bestpath is set, it can
// safely use t.GetBestpath() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bestpath == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetBestpath() bool {
	if t == nil || t.Bestpath == nil {
		return false
	}
	return *t.Bestpath
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLabel retrieves the value of the leaf Label from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Label is set, it can
// safely use t.GetLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Label == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetLabel() string {
	if t == nil || t.Label == nil {
		return ""
	}
	return *t.Label
}

// GetLabel2 retrieves the value of the leaf Label2 from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Label2 is set, it can
// safely use t.GetLabel2() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Label2 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetLabel2() string {
	if t == nil || t.Label2 == nil {
		return ""
	}
	return *t.Label2
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetMultipath retrieves the value of the leaf Multipath from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Multipath is set, it can
// safely use t.GetMultipath() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Multipath == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetMultipath() bool {
	if t == nil || t.Multipath == nil {
		return false
	}
	return *t.Multipath
}

// GetPeerIp retrieves the value of the leaf PeerIp from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerIp is set, it can
// safely use t.GetPeerIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerIp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetPeerIp() string {
	if t == nil || t.PeerIp == nil {
		return ""
	}
	return *t.PeerIp
}

// GetPeerPathId retrieves the value of the leaf PeerPathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerPathId is set, it can
// safely use t.GetPeerPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerPathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetPeerPathId() uint32 {
	if t == nil || t.PeerPathId == nil {
		return 0
	}
	return *t.PeerPathId
}

// GetSourceAddressFamily retrieves the value of the leaf SourceAddressFamily from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddressFamily is set, it can
// safely use t.GetSourceAddressFamily() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddressFamily == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetSourceAddressFamily() E_BgpTypes_AFI_SAFI_TYPE {
	if t == nil || t.SourceAddressFamily == 0 {
		return 0
	}
	return t.SourceAddressFamily
}

// GetSourceRouteDistinguisher retrieves the value of the leaf SourceRouteDistinguisher from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceRouteDistinguisher is set, it can
// safely use t.GetSourceRouteDistinguisher() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceRouteDistinguisher == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetSourceRouteDistinguisher() string {
	if t == nil || t.SourceRouteDistinguisher == nil {
		return ""
	}
	return *t.SourceRouteDistinguisher
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) ΛListKeyMap() (map[string]interface{}, error) {
	if t.PeerIp == nil {
		return nil, fmt.Errorf("nil value for key PeerIp")
	}

	if t.PeerPathId == nil {
		return nil, fmt.Errorf("nil value for key PeerPathId")
	}

	if t.SourceRouteDistinguisher == nil {
		return nil, fmt.Errorf("nil value for key SourceRouteDistinguisher")
	}

	return map[string]interface{}{
		"peer-ip":                    *t.PeerIp,
		"peer-path-id":               *t.PeerPathId,
		"source-address-family":      t.SourceAddressFamily,
		"source-route-distinguisher": *t.SourceRouteDistinguisher,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-one-ethernet-auto-discovery/type-one-route/paths/path/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeOneRoute_Path_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-three-inclusive-multicast-ethernet-tag/type-three-route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute struct {
	ΛMetadata            []ygot.Annotation                                                                                                                                                                                          `path:"@" ygotAnnotation:"true"`
	EthernetTag          *uint32                                                                                                                                                                                                    `path:"state/ethernet-tag|ethernet-tag" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEthernetTag         []ygot.Annotation                                                                                                                                                                                          `path:"state/@ethernet-tag|@ethernet-tag" ygotAnnotation:"true"`
	OriginatingRouterIp  *string                                                                                                                                                                                                    `path:"state/originating-router-ip|originating-router-ip" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛOriginatingRouterIp []ygot.Annotation                                                                                                                                                                                          `path:"state/@originating-router-ip|@originating-router-ip" ygotAnnotation:"true"`
	OriginatorIpLength   *uint32                                                                                                                                                                                                    `path:"state/originator-ip-length|originator-ip-length" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛOriginatorIpLength  []ygot.Annotation                                                                                                                                                                                          `path:"state/@originator-ip-length|@originator-ip-length" ygotAnnotation:"true"`
	Path                 map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path `path:"paths/path" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPath                []ygot.Annotation                                                                                                                                                                                          `path:"paths/@path" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute) IsYANGGoStruct() {
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_Key represents the key for list Path of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-three-inclusive-multicast-ethernet-tag/type-three-route.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_Key struct {
	PeerIp                   string                   `path:"peer-ip"`
	PeerPathId               uint32                   `path:"peer-path-id"`
	SourceRouteDistinguisher string                   `path:"source-route-distinguisher"`
	SourceAddressFamily      E_BgpTypes_AFI_SAFI_TYPE `path:"source-address-family"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"peer-ip":                    t.PeerIp,
		"peer-path-id":               t.PeerPathId,
		"source-route-distinguisher": t.SourceRouteDistinguisher,
		"source-address-family":      t.SourceAddressFamily,
	}, nil
}

// NewPath creates a new entry in the Path list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute) NewPath(PeerIp string, PeerPathId uint32, SourceRouteDistinguisher string, SourceAddressFamily E_BgpTypes_AFI_SAFI_TYPE) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Path == nil {
		t.Path = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_Key{
		PeerIp:                   PeerIp,
		PeerPathId:               PeerPathId,
		SourceRouteDistinguisher: SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Path[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Path", key)
	}

	t.Path[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path{
		PeerIp:                   &PeerIp,
		PeerPathId:               &PeerPathId,
		SourceRouteDistinguisher: &SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	return t.Path[key], nil
}

// RenamePath renames an entry in the list Path within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute) RenamePath(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_Key) error {
	if _, ok := t.Path[newK]; ok {
		return fmt.Errorf("key %v already exists in Path", newK)
	}

	e, ok := t.Path[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Path", oldK)
	}
	e.PeerIp = &newK.PeerIp
	e.PeerPathId = &newK.PeerPathId
	e.SourceRouteDistinguisher = &newK.SourceRouteDistinguisher
	e.SourceAddressFamily = newK.SourceAddressFamily

	t.Path[newK] = e
	delete(t.Path, oldK)
	return nil
}

// GetOrCreatePathMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute) GetOrCreatePathMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path {
	if t.Path == nil {
		t.Path = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path)
	}
	return t.Path
}

// GetOrCreatePath retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute) GetOrCreatePath(PeerIp string, PeerPathId uint32, SourceRouteDistinguisher string, SourceAddressFamily E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_Key{
		PeerIp:                   PeerIp,
		PeerPathId:               PeerPathId,
		SourceRouteDistinguisher: SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	if v, ok := t.Path[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPath(PeerIp, PeerPathId, SourceRouteDistinguisher, SourceAddressFamily)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePath got unexpected error: %v", err))
	}
	return v
}

// GetPath retrieves the value with the specified key from
// the Path map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute) GetPath(PeerIp string, PeerPathId uint32, SourceRouteDistinguisher string, SourceAddressFamily E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_Key{
		PeerIp:                   PeerIp,
		PeerPathId:               PeerPathId,
		SourceRouteDistinguisher: SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	if lm, ok := t.Path[key]; ok {
		return lm
	}
	return nil
}

// AppendPath appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path struct to the
// list Path of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute) AppendPath(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) error {
	if v.PeerIp == nil {
		return fmt.Errorf("invalid nil key for PeerIp")
	}

	if v.PeerPathId == nil {
		return fmt.Errorf("invalid nil key for PeerPathId")
	}

	if v.SourceRouteDistinguisher == nil {
		return fmt.Errorf("invalid nil key for SourceRouteDistinguisher")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_Key{
		PeerIp:                   *v.PeerIp,
		PeerPathId:               *v.PeerPathId,
		SourceRouteDistinguisher: *v.SourceRouteDistinguisher,
		SourceAddressFamily:      v.SourceAddressFamily,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Path == nil {
		t.Path = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path)
	}

	if _, ok := t.Path[key]; ok {
		return fmt.Errorf("duplicate key for list Path %v", key)
	}

	t.Path[key] = v
	return nil
}

// GetEthernetTag retrieves the value of the leaf EthernetTag from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EthernetTag is set, it can
// safely use t.GetEthernetTag() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EthernetTag == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute) GetEthernetTag() uint32 {
	if t == nil || t.EthernetTag == nil {
		return 0
	}
	return *t.EthernetTag
}

// GetOriginatingRouterIp retrieves the value of the leaf OriginatingRouterIp from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OriginatingRouterIp is set, it can
// safely use t.GetOriginatingRouterIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OriginatingRouterIp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute) GetOriginatingRouterIp() string {
	if t == nil || t.OriginatingRouterIp == nil {
		return ""
	}
	return *t.OriginatingRouterIp
}

// GetOriginatorIpLength retrieves the value of the leaf OriginatorIpLength from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OriginatorIpLength is set, it can
// safely use t.GetOriginatorIpLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OriginatorIpLength == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute) GetOriginatorIpLength() uint32 {
	if t == nil || t.OriginatorIpLength == nil {
		return 0
	}
	return *t.OriginatorIpLength
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Path {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.EthernetTag == nil {
		return nil, fmt.Errorf("nil value for key EthernetTag")
	}

	if t.OriginatingRouterIp == nil {
		return nil, fmt.Errorf("nil value for key OriginatingRouterIp")
	}

	if t.OriginatorIpLength == nil {
		return nil, fmt.Errorf("nil value for key OriginatorIpLength")
	}

	return map[string]interface{}{
		"ethernet-tag":          *t.EthernetTag,
		"originating-router-ip": *t.OriginatingRouterIp,
		"originator-ip-length":  *t.OriginatorIpLength,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-three-inclusive-multicast-ethernet-tag/type-three-route/paths/path YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path struct {
	ΛMetadata                 []ygot.Annotation                                                                                                            `path:"@" ygotAnnotation:"true"`
	AdvertisedToPeer          []string                                                                                                                     `path:"state/advertised-to-peer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdvertisedToPeer         []ygot.Annotation                                                                                                            `path:"state/@advertised-to-peer" ygotAnnotation:"true"`
	AttrIndex                 *uint64                                                                                                                      `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex                []ygot.Annotation                                                                                                            `path:"state/@attr-index" ygotAnnotation:"true"`
	Backup                    *bool                                                                                                                        `path:"state/backup" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBackup                   []ygot.Annotation                                                                                                            `path:"state/@backup" ygotAnnotation:"true"`
	Bestpath                  *bool                                                                                                                        `path:"state/bestpath" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBestpath                 []ygot.Annotation                                                                                                            `path:"state/@bestpath" ygotAnnotation:"true"`
	CommunityIndex            *uint64                                                                                                                      `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex           []ygot.Annotation                                                                                                            `path:"state/@community-index" ygotAnnotation:"true"`
	ExtCommunityIndex         *uint64                                                                                                                      `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex        []ygot.Annotation                                                                                                            `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason             E_RibBgpTypes_INVALID_ROUTE_REASON                                                                                           `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason            []ygot.Annotation                                                                                                            `path:"state/@invalid-reason" ygotAnnotation:"true"`
	Label                     *string                                                                                                                      `path:"state/label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabel                    []ygot.Annotation                                                                                                            `path:"state/@label" ygotAnnotation:"true"`
	Label2                    *string                                                                                                                      `path:"state/label2" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabel2                   []ygot.Annotation                                                                                                            `path:"state/@label2" ygotAnnotation:"true"`
	LastModified              *uint64                                                                                                                      `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified             []ygot.Annotation                                                                                                            `path:"state/@last-modified" ygotAnnotation:"true"`
	Multipath                 *bool                                                                                                                        `path:"state/multipath" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMultipath                []ygot.Annotation                                                                                                            `path:"state/@multipath" ygotAnnotation:"true"`
	PeerIp                    *string                                                                                                                      `path:"state/peer-ip|peer-ip" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPeerIp                   []ygot.Annotation                                                                                                            `path:"state/@peer-ip|@peer-ip" ygotAnnotation:"true"`
	PeerPathId                *uint32                                                                                                                      `path:"state/peer-path-id|peer-path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPeerPathId               []ygot.Annotation                                                                                                            `path:"state/@peer-path-id|@peer-path-id" ygotAnnotation:"true"`
	SourceAddressFamily       E_BgpTypes_AFI_SAFI_TYPE                                                                                                     `path:"state/source-address-family|source-address-family" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSourceAddressFamily      []ygot.Annotation                                                                                                            `path:"state/@source-address-family|@source-address-family" ygotAnnotation:"true"`
	SourceRouteDistinguisher  *string                                                                                                                      `path:"state/source-route-distinguisher|source-route-distinguisher" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSourceRouteDistinguisher []ygot.Annotation                                                                                                            `path:"state/@source-route-distinguisher|@source-route-distinguisher" ygotAnnotation:"true"`
	UnknownAttribute          map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute         []ygot.Annotation                                                                                                            `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute                *bool                                                                                                                        `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute               []ygot.Annotation                                                                                                            `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAdvertisedToPeer retrieves the value of the leaf AdvertisedToPeer from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdvertisedToPeer is set, it can
// safely use t.GetAdvertisedToPeer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdvertisedToPeer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetAdvertisedToPeer() []string {
	if t == nil || t.AdvertisedToPeer == nil {
		return nil
	}
	return t.AdvertisedToPeer
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetBackup retrieves the value of the leaf Backup from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Backup is set, it can
// safely use t.GetBackup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Backup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetBackup() bool {
	if t == nil || t.Backup == nil {
		return false
	}
	return *t.Backup
}

// GetBestpath retrieves the value of the leaf Bestpath from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bestpath is set, it can
// safely use t.GetBestpath() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bestpath == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetBestpath() bool {
	if t == nil || t.Bestpath == nil {
		return false
	}
	return *t.Bestpath
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLabel retrieves the value of the leaf Label from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Label is set, it can
// safely use t.GetLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Label == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetLabel() string {
	if t == nil || t.Label == nil {
		return ""
	}
	return *t.Label
}

// GetLabel2 retrieves the value of the leaf Label2 from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Label2 is set, it can
// safely use t.GetLabel2() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Label2 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetLabel2() string {
	if t == nil || t.Label2 == nil {
		return ""
	}
	return *t.Label2
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetMultipath retrieves the value of the leaf Multipath from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Multipath is set, it can
// safely use t.GetMultipath() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Multipath == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetMultipath() bool {
	if t == nil || t.Multipath == nil {
		return false
	}
	return *t.Multipath
}

// GetPeerIp retrieves the value of the leaf PeerIp from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerIp is set, it can
// safely use t.GetPeerIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerIp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetPeerIp() string {
	if t == nil || t.PeerIp == nil {
		return ""
	}
	return *t.PeerIp
}

// GetPeerPathId retrieves the value of the leaf PeerPathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerPathId is set, it can
// safely use t.GetPeerPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerPathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetPeerPathId() uint32 {
	if t == nil || t.PeerPathId == nil {
		return 0
	}
	return *t.PeerPathId
}

// GetSourceAddressFamily retrieves the value of the leaf SourceAddressFamily from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddressFamily is set, it can
// safely use t.GetSourceAddressFamily() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddressFamily == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetSourceAddressFamily() E_BgpTypes_AFI_SAFI_TYPE {
	if t == nil || t.SourceAddressFamily == 0 {
		return 0
	}
	return t.SourceAddressFamily
}

// GetSourceRouteDistinguisher retrieves the value of the leaf SourceRouteDistinguisher from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceRouteDistinguisher is set, it can
// safely use t.GetSourceRouteDistinguisher() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceRouteDistinguisher == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetSourceRouteDistinguisher() string {
	if t == nil || t.SourceRouteDistinguisher == nil {
		return ""
	}
	return *t.SourceRouteDistinguisher
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) ΛListKeyMap() (map[string]interface{}, error) {
	if t.PeerIp == nil {
		return nil, fmt.Errorf("nil value for key PeerIp")
	}

	if t.PeerPathId == nil {
		return nil, fmt.Errorf("nil value for key PeerPathId")
	}

	if t.SourceRouteDistinguisher == nil {
		return nil, fmt.Errorf("nil value for key SourceRouteDistinguisher")
	}

	return map[string]interface{}{
		"peer-ip":                    *t.PeerIp,
		"peer-path-id":               *t.PeerPathId,
		"source-address-family":      t.SourceAddressFamily,
		"source-route-distinguisher": *t.SourceRouteDistinguisher,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-three-inclusive-multicast-ethernet-tag/type-three-route/paths/path/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeThreeRoute_Path_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-two-mac-ip-advertisement/type-two-route YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute struct {
	ΛMetadata    []ygot.Annotation                                                                                                                                                                                      `path:"@" ygotAnnotation:"true"`
	EthernetTag  *uint32                                                                                                                                                                                                `path:"state/ethernet-tag|ethernet-tag" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEthernetTag []ygot.Annotation                                                                                                                                                                                      `path:"state/@ethernet-tag|@ethernet-tag" ygotAnnotation:"true"`
	IpLength     *uint32                                                                                                                                                                                                `path:"state/ip-length|ip-length" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIpLength    []ygot.Annotation                                                                                                                                                                                      `path:"state/@ip-length|@ip-length" ygotAnnotation:"true"`
	IpPrefix     *string                                                                                                                                                                                                `path:"state/ip-prefix|ip-prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIpPrefix    []ygot.Annotation                                                                                                                                                                                      `path:"state/@ip-prefix|@ip-prefix" ygotAnnotation:"true"`
	MacAddress   *string                                                                                                                                                                                                `path:"state/mac-address|mac-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛMacAddress  []ygot.Annotation                                                                                                                                                                                      `path:"state/@mac-address|@mac-address" ygotAnnotation:"true"`
	MacLength    *uint32                                                                                                                                                                                                `path:"state/mac-length|mac-length" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛMacLength   []ygot.Annotation                                                                                                                                                                                      `path:"state/@mac-length|@mac-length" ygotAnnotation:"true"`
	Path         map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path `path:"paths/path" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPath        []ygot.Annotation                                                                                                                                                                                      `path:"paths/@path" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) IsYANGGoStruct() {
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_Key represents the key for list Path of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-two-mac-ip-advertisement/type-two-route.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_Key struct {
	PeerIp                   string                   `path:"peer-ip"`
	PeerPathId               uint32                   `path:"peer-path-id"`
	SourceRouteDistinguisher string                   `path:"source-route-distinguisher"`
	SourceAddressFamily      E_BgpTypes_AFI_SAFI_TYPE `path:"source-address-family"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_Key key struct.
func (t NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"peer-ip":                    t.PeerIp,
		"peer-path-id":               t.PeerPathId,
		"source-route-distinguisher": t.SourceRouteDistinguisher,
		"source-address-family":      t.SourceAddressFamily,
	}, nil
}

// NewPath creates a new entry in the Path list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) NewPath(PeerIp string, PeerPathId uint32, SourceRouteDistinguisher string, SourceAddressFamily E_BgpTypes_AFI_SAFI_TYPE) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Path == nil {
		t.Path = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path)
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_Key{
		PeerIp:                   PeerIp,
		PeerPathId:               PeerPathId,
		SourceRouteDistinguisher: SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Path[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Path", key)
	}

	t.Path[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path{
		PeerIp:                   &PeerIp,
		PeerPathId:               &PeerPathId,
		SourceRouteDistinguisher: &SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	return t.Path[key], nil
}

// RenamePath renames an entry in the list Path within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) RenamePath(oldK, newK NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_Key) error {
	if _, ok := t.Path[newK]; ok {
		return fmt.Errorf("key %v already exists in Path", newK)
	}

	e, ok := t.Path[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Path", oldK)
	}
	e.PeerIp = &newK.PeerIp
	e.PeerPathId = &newK.PeerPathId
	e.SourceRouteDistinguisher = &newK.SourceRouteDistinguisher
	e.SourceAddressFamily = newK.SourceAddressFamily

	t.Path[newK] = e
	delete(t.Path, oldK)
	return nil
}

// GetOrCreatePathMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) GetOrCreatePathMap() map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path {
	if t.Path == nil {
		t.Path = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path)
	}
	return t.Path
}

// GetOrCreatePath retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) GetOrCreatePath(PeerIp string, PeerPathId uint32, SourceRouteDistinguisher string, SourceAddressFamily E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path {

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_Key{
		PeerIp:                   PeerIp,
		PeerPathId:               PeerPathId,
		SourceRouteDistinguisher: SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	if v, ok := t.Path[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPath(PeerIp, PeerPathId, SourceRouteDistinguisher, SourceAddressFamily)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePath got unexpected error: %v", err))
	}
	return v
}

// GetPath retrieves the value with the specified key from
// the Path map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) GetPath(PeerIp string, PeerPathId uint32, SourceRouteDistinguisher string, SourceAddressFamily E_BgpTypes_AFI_SAFI_TYPE) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_Key{
		PeerIp:                   PeerIp,
		PeerPathId:               PeerPathId,
		SourceRouteDistinguisher: SourceRouteDistinguisher,
		SourceAddressFamily:      SourceAddressFamily,
	}

	if lm, ok := t.Path[key]; ok {
		return lm
	}
	return nil
}

// AppendPath appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path struct to the
// list Path of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) AppendPath(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) error {
	if v.PeerIp == nil {
		return fmt.Errorf("invalid nil key for PeerIp")
	}

	if v.PeerPathId == nil {
		return fmt.Errorf("invalid nil key for PeerPathId")
	}

	if v.SourceRouteDistinguisher == nil {
		return fmt.Errorf("invalid nil key for SourceRouteDistinguisher")
	}

	key := NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_Key{
		PeerIp:                   *v.PeerIp,
		PeerPathId:               *v.PeerPathId,
		SourceRouteDistinguisher: *v.SourceRouteDistinguisher,
		SourceAddressFamily:      v.SourceAddressFamily,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Path == nil {
		t.Path = make(map[NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_Key]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path)
	}

	if _, ok := t.Path[key]; ok {
		return fmt.Errorf("duplicate key for list Path %v", key)
	}

	t.Path[key] = v
	return nil
}

// GetEthernetTag retrieves the value of the leaf EthernetTag from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EthernetTag is set, it can
// safely use t.GetEthernetTag() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EthernetTag == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) GetEthernetTag() uint32 {
	if t == nil || t.EthernetTag == nil {
		return 0
	}
	return *t.EthernetTag
}

// GetIpLength retrieves the value of the leaf IpLength from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IpLength is set, it can
// safely use t.GetIpLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IpLength == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) GetIpLength() uint32 {
	if t == nil || t.IpLength == nil {
		return 0
	}
	return *t.IpLength
}

// GetIpPrefix retrieves the value of the leaf IpPrefix from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IpPrefix is set, it can
// safely use t.GetIpPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IpPrefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) GetIpPrefix() string {
	if t == nil || t.IpPrefix == nil {
		return ""
	}
	return *t.IpPrefix
}

// GetMacAddress retrieves the value of the leaf MacAddress from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MacAddress is set, it can
// safely use t.GetMacAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MacAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) GetMacAddress() string {
	if t == nil || t.MacAddress == nil {
		return ""
	}
	return *t.MacAddress
}

// GetMacLength retrieves the value of the leaf MacLength from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MacLength is set, it can
// safely use t.GetMacLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MacLength == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) GetMacLength() uint32 {
	if t == nil || t.MacLength == nil {
		return 0
	}
	return *t.MacLength
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Path {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.EthernetTag == nil {
		return nil, fmt.Errorf("nil value for key EthernetTag")
	}

	if t.IpLength == nil {
		return nil, fmt.Errorf("nil value for key IpLength")
	}

	if t.IpPrefix == nil {
		return nil, fmt.Errorf("nil value for key IpPrefix")
	}

	if t.MacAddress == nil {
		return nil, fmt.Errorf("nil value for key MacAddress")
	}

	if t.MacLength == nil {
		return nil, fmt.Errorf("nil value for key MacLength")
	}

	return map[string]interface{}{
		"ethernet-tag": *t.EthernetTag,
		"ip-length":    *t.IpLength,
		"ip-prefix":    *t.IpPrefix,
		"mac-address":  *t.MacAddress,
		"mac-length":   *t.MacLength,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-two-mac-ip-advertisement/type-two-route/paths/path YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path struct {
	ΛMetadata                 []ygot.Annotation                                                                                                          `path:"@" ygotAnnotation:"true"`
	AdvertisedToPeer          []string                                                                                                                   `path:"state/advertised-to-peer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdvertisedToPeer         []ygot.Annotation                                                                                                          `path:"state/@advertised-to-peer" ygotAnnotation:"true"`
	AttrIndex                 *uint64                                                                                                                    `path:"state/attr-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrIndex                []ygot.Annotation                                                                                                          `path:"state/@attr-index" ygotAnnotation:"true"`
	Backup                    *bool                                                                                                                      `path:"state/backup" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBackup                   []ygot.Annotation                                                                                                          `path:"state/@backup" ygotAnnotation:"true"`
	Bestpath                  *bool                                                                                                                      `path:"state/bestpath" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBestpath                 []ygot.Annotation                                                                                                          `path:"state/@bestpath" ygotAnnotation:"true"`
	CommunityIndex            *uint64                                                                                                                    `path:"state/community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunityIndex           []ygot.Annotation                                                                                                          `path:"state/@community-index" ygotAnnotation:"true"`
	Esi                       *string                                                                                                                    `path:"state/esi" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEsi                      []ygot.Annotation                                                                                                          `path:"state/@esi" ygotAnnotation:"true"`
	ExtCommunityIndex         *uint64                                                                                                                    `path:"state/ext-community-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunityIndex        []ygot.Annotation                                                                                                          `path:"state/@ext-community-index" ygotAnnotation:"true"`
	InvalidReason             E_RibBgpTypes_INVALID_ROUTE_REASON                                                                                         `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason            []ygot.Annotation                                                                                                          `path:"state/@invalid-reason" ygotAnnotation:"true"`
	Label                     *string                                                                                                                    `path:"state/label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabel                    []ygot.Annotation                                                                                                          `path:"state/@label" ygotAnnotation:"true"`
	Label2                    *string                                                                                                                    `path:"state/label2" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabel2                   []ygot.Annotation                                                                                                          `path:"state/@label2" ygotAnnotation:"true"`
	LastModified              *uint64                                                                                                                    `path:"state/last-modified" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastModified             []ygot.Annotation                                                                                                          `path:"state/@last-modified" ygotAnnotation:"true"`
	Multipath                 *bool                                                                                                                      `path:"state/multipath" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMultipath                []ygot.Annotation                                                                                                          `path:"state/@multipath" ygotAnnotation:"true"`
	PeerIp                    *string                                                                                                                    `path:"state/peer-ip|peer-ip" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPeerIp                   []ygot.Annotation                                                                                                          `path:"state/@peer-ip|@peer-ip" ygotAnnotation:"true"`
	PeerPathId                *uint32                                                                                                                    `path:"state/peer-path-id|peer-path-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPeerPathId               []ygot.Annotation                                                                                                          `path:"state/@peer-path-id|@peer-path-id" ygotAnnotation:"true"`
	SourceAddressFamily       E_BgpTypes_AFI_SAFI_TYPE                                                                                                   `path:"state/source-address-family|source-address-family" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSourceAddressFamily      []ygot.Annotation                                                                                                          `path:"state/@source-address-family|@source-address-family" ygotAnnotation:"true"`
	SourceRouteDistinguisher  *string                                                                                                                    `path:"state/source-route-distinguisher|source-route-distinguisher" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSourceRouteDistinguisher []ygot.Annotation                                                                                                          `path:"state/@source-route-distinguisher|@source-route-distinguisher" ygotAnnotation:"true"`
	UnknownAttribute          map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute `path:"unknown-attributes/unknown-attribute" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownAttribute         []ygot.Annotation                                                                                                          `path:"unknown-attributes/@unknown-attribute" ygotAnnotation:"true"`
	ValidRoute                *bool                                                                                                                      `path:"state/valid-route" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValidRoute               []ygot.Annotation                                                                                                          `path:"state/@valid-route" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) IsYANGGoStruct() {
}

// NewUnknownAttribute creates a new entry in the UnknownAttribute list of the
// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) NewUnknownAttribute(AttrType uint8) (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute)
	}

	key := AttrType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnknownAttribute[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnknownAttribute", key)
	}

	t.UnknownAttribute[key] = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute{
		AttrType: &AttrType,
	}

	return t.UnknownAttribute[key], nil
}

// RenameUnknownAttribute renames an entry in the list UnknownAttribute within
// the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) RenameUnknownAttribute(oldK, newK uint8) error {
	if _, ok := t.UnknownAttribute[newK]; ok {
		return fmt.Errorf("key %v already exists in UnknownAttribute", newK)
	}

	e, ok := t.UnknownAttribute[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnknownAttribute", oldK)
	}
	e.AttrType = &newK

	t.UnknownAttribute[newK] = e
	delete(t.UnknownAttribute, oldK)
	return nil
}

// GetOrCreateUnknownAttributeMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetOrCreateUnknownAttributeMap() map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute {
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute)
	}
	return t.UnknownAttribute
}

// GetOrCreateUnknownAttribute retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetOrCreateUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute {

	key := AttrType

	if v, ok := t.UnknownAttribute[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnknownAttribute(AttrType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnknownAttribute got unexpected error: %v", err))
	}
	return v
}

// GetUnknownAttribute retrieves the value with the specified key from
// the UnknownAttribute map field of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetUnknownAttribute(AttrType uint8) *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute {

	if t == nil {
		return nil
	}

	key := AttrType

	if lm, ok := t.UnknownAttribute[key]; ok {
		return lm
	}
	return nil
}

// AppendUnknownAttribute appends the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute struct to the
// list UnknownAttribute of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) AppendUnknownAttribute(v *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute) error {
	if v.AttrType == nil {
		return fmt.Errorf("invalid nil key received for AttrType")
	}

	key := *v.AttrType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnknownAttribute == nil {
		t.UnknownAttribute = make(map[uint8]*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute)
	}

	if _, ok := t.UnknownAttribute[key]; ok {
		return fmt.Errorf("duplicate key for list UnknownAttribute %v", key)
	}

	t.UnknownAttribute[key] = v
	return nil
}

// GetAdvertisedToPeer retrieves the value of the leaf AdvertisedToPeer from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdvertisedToPeer is set, it can
// safely use t.GetAdvertisedToPeer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdvertisedToPeer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetAdvertisedToPeer() []string {
	if t == nil || t.AdvertisedToPeer == nil {
		return nil
	}
	return t.AdvertisedToPeer
}

// GetAttrIndex retrieves the value of the leaf AttrIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrIndex is set, it can
// safely use t.GetAttrIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetAttrIndex() uint64 {
	if t == nil || t.AttrIndex == nil {
		return 0
	}
	return *t.AttrIndex
}

// GetBackup retrieves the value of the leaf Backup from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Backup is set, it can
// safely use t.GetBackup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Backup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetBackup() bool {
	if t == nil || t.Backup == nil {
		return false
	}
	return *t.Backup
}

// GetBestpath retrieves the value of the leaf Bestpath from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bestpath is set, it can
// safely use t.GetBestpath() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bestpath == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetBestpath() bool {
	if t == nil || t.Bestpath == nil {
		return false
	}
	return *t.Bestpath
}

// GetCommunityIndex retrieves the value of the leaf CommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityIndex is set, it can
// safely use t.GetCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetCommunityIndex() uint64 {
	if t == nil || t.CommunityIndex == nil {
		return 0
	}
	return *t.CommunityIndex
}

// GetEsi retrieves the value of the leaf Esi from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Esi is set, it can
// safely use t.GetEsi() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Esi == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetEsi() string {
	if t == nil || t.Esi == nil {
		return ""
	}
	return *t.Esi
}

// GetExtCommunityIndex retrieves the value of the leaf ExtCommunityIndex from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityIndex is set, it can
// safely use t.GetExtCommunityIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetExtCommunityIndex() uint64 {
	if t == nil || t.ExtCommunityIndex == nil {
		return 0
	}
	return *t.ExtCommunityIndex
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetInvalidReason() E_RibBgpTypes_INVALID_ROUTE_REASON {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetLabel retrieves the value of the leaf Label from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Label is set, it can
// safely use t.GetLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Label == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetLabel() string {
	if t == nil || t.Label == nil {
		return ""
	}
	return *t.Label
}

// GetLabel2 retrieves the value of the leaf Label2 from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Label2 is set, it can
// safely use t.GetLabel2() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Label2 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetLabel2() string {
	if t == nil || t.Label2 == nil {
		return ""
	}
	return *t.Label2
}

// GetLastModified retrieves the value of the leaf LastModified from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastModified is set, it can
// safely use t.GetLastModified() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastModified == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetLastModified() uint64 {
	if t == nil || t.LastModified == nil {
		return 0
	}
	return *t.LastModified
}

// GetMultipath retrieves the value of the leaf Multipath from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Multipath is set, it can
// safely use t.GetMultipath() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Multipath == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetMultipath() bool {
	if t == nil || t.Multipath == nil {
		return false
	}
	return *t.Multipath
}

// GetPeerIp retrieves the value of the leaf PeerIp from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerIp is set, it can
// safely use t.GetPeerIp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerIp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetPeerIp() string {
	if t == nil || t.PeerIp == nil {
		return ""
	}
	return *t.PeerIp
}

// GetPeerPathId retrieves the value of the leaf PeerPathId from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PeerPathId is set, it can
// safely use t.GetPeerPathId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PeerPathId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetPeerPathId() uint32 {
	if t == nil || t.PeerPathId == nil {
		return 0
	}
	return *t.PeerPathId
}

// GetSourceAddressFamily retrieves the value of the leaf SourceAddressFamily from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddressFamily is set, it can
// safely use t.GetSourceAddressFamily() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddressFamily == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetSourceAddressFamily() E_BgpTypes_AFI_SAFI_TYPE {
	if t == nil || t.SourceAddressFamily == 0 {
		return 0
	}
	return t.SourceAddressFamily
}

// GetSourceRouteDistinguisher retrieves the value of the leaf SourceRouteDistinguisher from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceRouteDistinguisher is set, it can
// safely use t.GetSourceRouteDistinguisher() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceRouteDistinguisher == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetSourceRouteDistinguisher() string {
	if t == nil || t.SourceRouteDistinguisher == nil {
		return ""
	}
	return *t.SourceRouteDistinguisher
}

// GetValidRoute retrieves the value of the leaf ValidRoute from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ValidRoute is set, it can
// safely use t.GetValidRoute() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ValidRoute == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) GetValidRoute() bool {
	if t == nil || t.ValidRoute == nil {
		return false
	}
	return *t.ValidRoute
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.UnknownAttribute {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) ΛListKeyMap() (map[string]interface{}, error) {
	if t.PeerIp == nil {
		return nil, fmt.Errorf("nil value for key PeerIp")
	}

	if t.PeerPathId == nil {
		return nil, fmt.Errorf("nil value for key PeerPathId")
	}

	if t.SourceRouteDistinguisher == nil {
		return nil, fmt.Errorf("nil value for key SourceRouteDistinguisher")
	}

	return map[string]interface{}{
		"peer-ip":                    *t.PeerIp,
		"peer-path-id":               *t.PeerPathId,
		"source-address-family":      t.SourceAddressFamily,
		"source-route-distinguisher": *t.SourceRouteDistinguisher,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-two-mac-ip-advertisement/type-two-route/paths/path/unknown-attributes/unknown-attribute YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttrLen     *uint16           `path:"state/attr-len" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrLen    []ygot.Annotation `path:"state/@attr-len" ygotAnnotation:"true"`
	AttrType    *uint8            `path:"state/attr-type|attr-type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAttrType   []ygot.Annotation `path:"state/@attr-type|@attr-type" ygotAnnotation:"true"`
	AttrValue   Binary            `path:"state/attr-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttrValue  []ygot.Annotation `path:"state/@attr-value" ygotAnnotation:"true"`
	Extended    *bool             `path:"state/extended" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtended   []ygot.Annotation `path:"state/@extended" ygotAnnotation:"true"`
	Optional    *bool             `path:"state/optional" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptional   []ygot.Annotation `path:"state/@optional" ygotAnnotation:"true"`
	Partial     *bool             `path:"state/partial" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartial    []ygot.Annotation `path:"state/@partial" ygotAnnotation:"true"`
	Transitive  *bool             `path:"state/transitive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTransitive []ygot.Annotation `path:"state/@transitive" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute) IsYANGGoStruct() {
}

// GetAttrLen retrieves the value of the leaf AttrLen from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrLen is set, it can
// safely use t.GetAttrLen() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrLen == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute) GetAttrLen() uint16 {
	if t == nil || t.AttrLen == nil {
		return 0
	}
	return *t.AttrLen
}

// GetAttrType retrieves the value of the leaf AttrType from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrType is set, it can
// safely use t.GetAttrType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute) GetAttrType() uint8 {
	if t == nil || t.AttrType == nil {
		return 0
	}
	return *t.AttrType
}

// GetAttrValue retrieves the value of the leaf AttrValue from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttrValue is set, it can
// safely use t.GetAttrValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttrValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute) GetAttrValue() Binary {
	if t == nil || t.AttrValue == nil {
		return nil
	}
	return t.AttrValue
}

// GetExtended retrieves the value of the leaf Extended from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Extended is set, it can
// safely use t.GetExtended() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Extended == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute) GetExtended() bool {
	if t == nil || t.Extended == nil {
		return false
	}
	return *t.Extended
}

// GetOptional retrieves the value of the leaf Optional from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Optional is set, it can
// safely use t.GetOptional() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Optional == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute) GetOptional() bool {
	if t == nil || t.Optional == nil {
		return false
	}
	return *t.Optional
}

// GetPartial retrieves the value of the leaf Partial from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Partial is set, it can
// safely use t.GetPartial() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Partial == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute) GetPartial() bool {
	if t == nil || t.Partial == nil {
		return false
	}
	return *t.Partial
}

// GetTransitive retrieves the value of the leaf Transitive from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transitive is set, it can
// safely use t.GetTransitive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transitive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute) GetTransitive() bool {
	if t == nil || t.Transitive == nil {
		return false
	}
	return *t.Transitive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AttrType == nil {
		return nil, fmt.Errorf("nil value for key AttrType")
	}

	return map[string]interface{}{
		"attr-type": *t.AttrType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_LocRib_RouteDistinguisher_TypeTwoRoute_Path_UnknownAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/neighbors/neighbor YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor struct {
	ΛMetadata        []ygot.Annotation                                                          `path:"@" ygotAnnotation:"true"`
	AdjRibInPost     *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPost  `path:"adj-rib-in-post" module:"openconfig-network-instance"`
	ΛAdjRibInPost    []ygot.Annotation                                                          `path:"@adj-rib-in-post" ygotAnnotation:"true"`
	AdjRibInPre      *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPre   `path:"adj-rib-in-pre" module:"openconfig-network-instance"`
	ΛAdjRibInPre     []ygot.Annotation                                                          `path:"@adj-rib-in-pre" ygotAnnotation:"true"`
	AdjRibOutPost    *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPost `path:"adj-rib-out-post" module:"openconfig-network-instance"`
	ΛAdjRibOutPost   []ygot.Annotation                                                          `path:"@adj-rib-out-post" ygotAnnotation:"true"`
	AdjRibOutPre     *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPre  `path:"adj-rib-out-pre" module:"openconfig-network-instance"`
	ΛAdjRibOutPre    []ygot.Annotation                                                          `path:"@adj-rib-out-pre" ygotAnnotation:"true"`
	NeighborAddress  *string                                                                    `path:"state/neighbor-address|neighbor-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛNeighborAddress []ygot.Annotation                                                          `path:"state/@neighbor-address|@neighbor-address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor) IsYANGGoStruct() {}

// GetOrCreateAdjRibInPost retrieves the value of the AdjRibInPost field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor) GetOrCreateAdjRibInPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPost {
	if t.AdjRibInPost != nil {
		return t.AdjRibInPost
	}
	t.AdjRibInPost = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPost{}
	return t.AdjRibInPost
}

// GetOrCreateAdjRibInPre retrieves the value of the AdjRibInPre field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor) GetOrCreateAdjRibInPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPre {
	if t.AdjRibInPre != nil {
		return t.AdjRibInPre
	}
	t.AdjRibInPre = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPre{}
	return t.AdjRibInPre
}

// GetOrCreateAdjRibOutPost retrieves the value of the AdjRibOutPost field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor) GetOrCreateAdjRibOutPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPost {
	if t.AdjRibOutPost != nil {
		return t.AdjRibOutPost
	}
	t.AdjRibOutPost = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPost{}
	return t.AdjRibOutPost
}

// GetOrCreateAdjRibOutPre retrieves the value of the AdjRibOutPre field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor) GetOrCreateAdjRibOutPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPre {
	if t.AdjRibOutPre != nil {
		return t.AdjRibOutPre
	}
	t.AdjRibOutPre = &NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPre{}
	return t.AdjRibOutPre
}

// GetAdjRibInPost returns the value of the AdjRibInPost struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor. If the receiver or the field AdjRibInPost is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor) GetAdjRibInPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPost {
	if t != nil && t.AdjRibInPost != nil {
		return t.AdjRibInPost
	}
	return nil
}

// GetAdjRibInPre returns the value of the AdjRibInPre struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor. If the receiver or the field AdjRibInPre is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor) GetAdjRibInPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPre {
	if t != nil && t.AdjRibInPre != nil {
		return t.AdjRibInPre
	}
	return nil
}

// GetAdjRibOutPost returns the value of the AdjRibOutPost struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor. If the receiver or the field AdjRibOutPost is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor) GetAdjRibOutPost() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPost {
	if t != nil && t.AdjRibOutPost != nil {
		return t.AdjRibOutPost
	}
	return nil
}

// GetAdjRibOutPre returns the value of the AdjRibOutPre struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor. If the receiver or the field AdjRibOutPre is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor) GetAdjRibOutPre() *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPre {
	if t != nil && t.AdjRibOutPre != nil {
		return t.AdjRibOutPre
	}
	return nil
}

// GetNeighborAddress retrieves the value of the leaf NeighborAddress from the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborAddress is set, it can
// safely use t.GetNeighborAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor) GetNeighborAddress() string {
	if t == nil || t.NeighborAddress == nil {
		return ""
	}
	return *t.NeighborAddress
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AdjRibInPost.PopulateDefaults()
	t.AdjRibInPre.PopulateDefaults()
	t.AdjRibOutPost.PopulateDefaults()
	t.AdjRibOutPre.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.NeighborAddress == nil {
		return nil, fmt.Errorf("nil value for key NeighborAddress")
	}

	return map[string]interface{}{
		"neighbor-address": *t.NeighborAddress,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPost represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/neighbors/neighbor/adj-rib-in-post YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPost struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPost implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPost) IsYANGGoStruct() {}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPost
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPost) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPost) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPost"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPost) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPost) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPost.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPost) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPre represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/neighbors/neighbor/adj-rib-in-pre YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPre struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPre implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPre) IsYANGGoStruct() {}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPre
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPre) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPre) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPre"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPre) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPre) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPre.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibInPre) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPost represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/neighbors/neighbor/adj-rib-out-post YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPost struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPost implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPost) IsYANGGoStruct() {}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPost
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPost) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPost) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPost"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPost) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPost) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPost.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPost) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPre represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/neighbors/neighbor/adj-rib-out-pre YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPre struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPre implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPre) IsYANGGoStruct() {}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPre
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPre) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPre) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPre"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPre) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPre) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPre.
func (*NetworkInstance_Protocol_Bgp_Rib_AfiSafi_L2VpnEvpn_Neighbor_AdjRibOutPre) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AttrSet represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AttrSet struct {
	ΛMetadata            []ygot.Annotation                                               `path:"@" ygotAnnotation:"true"`
	Aggregator           *NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator            `path:"aggregator" module:"openconfig-network-instance"`
	ΛAggregator          []ygot.Annotation                                               `path:"@aggregator" ygotAnnotation:"true"`
	Aigp                 *uint64                                                         `path:"state/aigp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAigp                []ygot.Annotation                                               `path:"state/@aigp" ygotAnnotation:"true"`
	AsSegment            map[uint32]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment  `path:"as-path/as-segment" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAsSegment           []ygot.Annotation                                               `path:"as-path/@as-segment" ygotAnnotation:"true"`
	As4Segment           map[uint32]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment `path:"as4-path/as4-segment" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAs4Segment          []ygot.Annotation                                               `path:"as4-path/@as4-segment" ygotAnnotation:"true"`
	AtomicAggregate      *bool                                                           `path:"state/atomic-aggregate" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAtomicAggregate     []ygot.Annotation                                               `path:"state/@atomic-aggregate" ygotAnnotation:"true"`
	ClusterList          []string                                                        `path:"state/cluster-list" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛClusterList         []ygot.Annotation                                               `path:"state/@cluster-list" ygotAnnotation:"true"`
	Index                *uint64                                                         `path:"state/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex               []ygot.Annotation                                               `path:"state/@index|@index" ygotAnnotation:"true"`
	LocalPref            *uint32                                                         `path:"state/local-pref" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalPref           []ygot.Annotation                                               `path:"state/@local-pref" ygotAnnotation:"true"`
	Med                  *uint32                                                         `path:"state/med" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMed                 []ygot.Annotation                                               `path:"state/@med" ygotAnnotation:"true"`
	NextHop              *string                                                         `path:"state/next-hop" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHop             []ygot.Annotation                                               `path:"state/@next-hop" ygotAnnotation:"true"`
	Origin               E_BgpTypes_BgpOriginAttrType                                    `path:"state/origin" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOrigin              []ygot.Annotation                                               `path:"state/@origin" ygotAnnotation:"true"`
	OriginatorId         *string                                                         `path:"state/originator-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOriginatorId        []ygot.Annotation                                               `path:"state/@originator-id" ygotAnnotation:"true"`
	TunnelEncapsulation  *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation   `path:"tunnel-encapsulation" module:"openconfig-network-instance"`
	ΛTunnelEncapsulation []ygot.Annotation                                               `path:"@tunnel-encapsulation" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AttrSet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet) IsYANGGoStruct() {}

// NewAsSegment creates a new entry in the AsSegment list of the
// NetworkInstance_Protocol_Bgp_Rib_AttrSet struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) NewAsSegment(Index uint32) (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AsSegment == nil {
		t.AsSegment = make(map[uint32]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AsSegment[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AsSegment", key)
	}

	t.AsSegment[key] = &NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment{
		Index: &Index,
	}

	return t.AsSegment[key], nil
}

// RenameAsSegment renames an entry in the list AsSegment within
// the NetworkInstance_Protocol_Bgp_Rib_AttrSet struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) RenameAsSegment(oldK, newK uint32) error {
	if _, ok := t.AsSegment[newK]; ok {
		return fmt.Errorf("key %v already exists in AsSegment", newK)
	}

	e, ok := t.AsSegment[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AsSegment", oldK)
	}
	e.Index = &newK

	t.AsSegment[newK] = e
	delete(t.AsSegment, oldK)
	return nil
}

// GetOrCreateAsSegmentMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AttrSet.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetOrCreateAsSegmentMap() map[uint32]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment {
	if t.AsSegment == nil {
		t.AsSegment = make(map[uint32]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment)
	}
	return t.AsSegment
}

// GetOrCreateAsSegment retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AttrSet. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetOrCreateAsSegment(Index uint32) *NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment {

	key := Index

	if v, ok := t.AsSegment[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAsSegment(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAsSegment got unexpected error: %v", err))
	}
	return v
}

// GetAsSegment retrieves the value with the specified key from
// the AsSegment map field of NetworkInstance_Protocol_Bgp_Rib_AttrSet. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetAsSegment(Index uint32) *NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.AsSegment[key]; ok {
		return lm
	}
	return nil
}

// AppendAsSegment appends the supplied NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment struct to the
// list AsSegment of NetworkInstance_Protocol_Bgp_Rib_AttrSet. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) AppendAsSegment(v *NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AsSegment == nil {
		t.AsSegment = make(map[uint32]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment)
	}

	if _, ok := t.AsSegment[key]; ok {
		return fmt.Errorf("duplicate key for list AsSegment %v", key)
	}

	t.AsSegment[key] = v
	return nil
}

// NewAs4Segment creates a new entry in the As4Segment list of the
// NetworkInstance_Protocol_Bgp_Rib_AttrSet struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) NewAs4Segment(Index uint32) (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.As4Segment == nil {
		t.As4Segment = make(map[uint32]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.As4Segment[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list As4Segment", key)
	}

	t.As4Segment[key] = &NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment{
		Index: &Index,
	}

	return t.As4Segment[key], nil
}

// RenameAs4Segment renames an entry in the list As4Segment within
// the NetworkInstance_Protocol_Bgp_Rib_AttrSet struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) RenameAs4Segment(oldK, newK uint32) error {
	if _, ok := t.As4Segment[newK]; ok {
		return fmt.Errorf("key %v already exists in As4Segment", newK)
	}

	e, ok := t.As4Segment[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in As4Segment", oldK)
	}
	e.Index = &newK

	t.As4Segment[newK] = e
	delete(t.As4Segment, oldK)
	return nil
}

// GetOrCreateAs4SegmentMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AttrSet.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetOrCreateAs4SegmentMap() map[uint32]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment {
	if t.As4Segment == nil {
		t.As4Segment = make(map[uint32]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment)
	}
	return t.As4Segment
}

// GetOrCreateAs4Segment retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AttrSet. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetOrCreateAs4Segment(Index uint32) *NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment {

	key := Index

	if v, ok := t.As4Segment[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAs4Segment(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAs4Segment got unexpected error: %v", err))
	}
	return v
}

// GetAs4Segment retrieves the value with the specified key from
// the As4Segment map field of NetworkInstance_Protocol_Bgp_Rib_AttrSet. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetAs4Segment(Index uint32) *NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.As4Segment[key]; ok {
		return lm
	}
	return nil
}

// AppendAs4Segment appends the supplied NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment struct to the
// list As4Segment of NetworkInstance_Protocol_Bgp_Rib_AttrSet. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) AppendAs4Segment(v *NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.As4Segment == nil {
		t.As4Segment = make(map[uint32]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment)
	}

	if _, ok := t.As4Segment[key]; ok {
		return fmt.Errorf("duplicate key for list As4Segment %v", key)
	}

	t.As4Segment[key] = v
	return nil
}

// GetOrCreateAggregator retrieves the value of the Aggregator field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetOrCreateAggregator() *NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator {
	if t.Aggregator != nil {
		return t.Aggregator
	}
	t.Aggregator = &NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator{}
	return t.Aggregator
}

// GetOrCreateTunnelEncapsulation retrieves the value of the TunnelEncapsulation field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetOrCreateTunnelEncapsulation() *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation {
	if t.TunnelEncapsulation != nil {
		return t.TunnelEncapsulation
	}
	t.TunnelEncapsulation = &NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation{}
	return t.TunnelEncapsulation
}

// GetAggregator returns the value of the Aggregator struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AttrSet. If the receiver or the field Aggregator is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetAggregator() *NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator {
	if t != nil && t.Aggregator != nil {
		return t.Aggregator
	}
	return nil
}

// GetTunnelEncapsulation returns the value of the TunnelEncapsulation struct pointer
// from NetworkInstance_Protocol_Bgp_Rib_AttrSet. If the receiver or the field TunnelEncapsulation is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetTunnelEncapsulation() *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation {
	if t != nil && t.TunnelEncapsulation != nil {
		return t.TunnelEncapsulation
	}
	return nil
}

// GetAigp retrieves the value of the leaf Aigp from the NetworkInstance_Protocol_Bgp_Rib_AttrSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Aigp is set, it can
// safely use t.GetAigp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Aigp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetAigp() uint64 {
	if t == nil || t.Aigp == nil {
		return 0
	}
	return *t.Aigp
}

// GetAtomicAggregate retrieves the value of the leaf AtomicAggregate from the NetworkInstance_Protocol_Bgp_Rib_AttrSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AtomicAggregate is set, it can
// safely use t.GetAtomicAggregate() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AtomicAggregate == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetAtomicAggregate() bool {
	if t == nil || t.AtomicAggregate == nil {
		return false
	}
	return *t.AtomicAggregate
}

// GetClusterList retrieves the value of the leaf ClusterList from the NetworkInstance_Protocol_Bgp_Rib_AttrSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ClusterList is set, it can
// safely use t.GetClusterList() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ClusterList == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetClusterList() []string {
	if t == nil || t.ClusterList == nil {
		return nil
	}
	return t.ClusterList
}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_Protocol_Bgp_Rib_AttrSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetIndex() uint64 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetLocalPref retrieves the value of the leaf LocalPref from the NetworkInstance_Protocol_Bgp_Rib_AttrSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalPref is set, it can
// safely use t.GetLocalPref() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalPref == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetLocalPref() uint32 {
	if t == nil || t.LocalPref == nil {
		return 0
	}
	return *t.LocalPref
}

// GetMed retrieves the value of the leaf Med from the NetworkInstance_Protocol_Bgp_Rib_AttrSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Med is set, it can
// safely use t.GetMed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Med == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetMed() uint32 {
	if t == nil || t.Med == nil {
		return 0
	}
	return *t.Med
}

// GetNextHop retrieves the value of the leaf NextHop from the NetworkInstance_Protocol_Bgp_Rib_AttrSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHop is set, it can
// safely use t.GetNextHop() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHop == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetNextHop() string {
	if t == nil || t.NextHop == nil {
		return ""
	}
	return *t.NextHop
}

// GetOrigin retrieves the value of the leaf Origin from the NetworkInstance_Protocol_Bgp_Rib_AttrSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Origin is set, it can
// safely use t.GetOrigin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Origin == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetOrigin() E_BgpTypes_BgpOriginAttrType {
	if t == nil || t.Origin == 0 {
		return 0
	}
	return t.Origin
}

// GetOriginatorId retrieves the value of the leaf OriginatorId from the NetworkInstance_Protocol_Bgp_Rib_AttrSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OriginatorId is set, it can
// safely use t.GetOriginatorId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OriginatorId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) GetOriginatorId() string {
	if t == nil || t.OriginatorId == nil {
		return ""
	}
	return *t.OriginatorId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AttrSet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Aggregator.PopulateDefaults()
	t.TunnelEncapsulation.PopulateDefaults()
	for _, e := range t.AsSegment {
		e.PopulateDefaults()
	}
	for _, e := range t.As4Segment {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AttrSet struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AttrSet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AttrSet.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/aggregator YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   *string           `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
	As        *uint32           `path:"state/as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAs       []ygot.Annotation `path:"state/@as" ygotAnnotation:"true"`
	As4       *uint32           `path:"state/as4" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAs4      []ygot.Annotation `path:"state/@as4" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator) IsYANGGoStruct() {}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator) GetAddress() string {
	if t == nil || t.Address == nil {
		return ""
	}
	return *t.Address
}

// GetAs retrieves the value of the leaf As from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if As is set, it can
// safely use t.GetAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.As == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator) GetAs() uint32 {
	if t == nil || t.As == nil {
		return 0
	}
	return *t.As
}

// GetAs4 retrieves the value of the leaf As4 from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if As4 is set, it can
// safely use t.GetAs4() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.As4 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator) GetAs4() uint32 {
	if t == nil || t.As4 == nil {
		return 0
	}
	return *t.As4
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_Aggregator) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/as4-path/as4-segment YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment struct {
	ΛMetadata []ygot.Annotation            `path:"@" ygotAnnotation:"true"`
	Index     *uint32                      `path:"state/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex    []ygot.Annotation            `path:"state/@index|@index" ygotAnnotation:"true"`
	Member    []uint32                     `path:"state/member" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMember   []ygot.Annotation            `path:"state/@member" ygotAnnotation:"true"`
	Type      E_BgpTypes_AsPathSegmentType `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation            `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment) IsYANGGoStruct() {}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment) GetIndex() uint32 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetMember retrieves the value of the leaf Member from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Member is set, it can
// safely use t.GetMember() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Member == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment) GetMember() []uint32 {
	if t == nil || t.Member == nil {
		return nil
	}
	return t.Member
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment) GetType() E_BgpTypes_AsPathSegmentType {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_As4Segment) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/as-path/as-segment YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment struct {
	ΛMetadata []ygot.Annotation            `path:"@" ygotAnnotation:"true"`
	Index     *uint32                      `path:"state/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex    []ygot.Annotation            `path:"state/@index|@index" ygotAnnotation:"true"`
	Member    []uint32                     `path:"state/member" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMember   []ygot.Annotation            `path:"state/@member" ygotAnnotation:"true"`
	Type      E_BgpTypes_AsPathSegmentType `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation            `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment) IsYANGGoStruct() {}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment) GetIndex() uint32 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetMember retrieves the value of the leaf Member from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Member is set, it can
// safely use t.GetMember() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Member == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment) GetMember() []uint32 {
	if t == nil || t.Member == nil {
		return nil
	}
	return t.Member
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment) GetType() E_BgpTypes_AsPathSegmentType {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_AsSegment) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/tunnel-encapsulation YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation struct {
	ΛMetadata []ygot.Annotation                                                                                                `path:"@" ygotAnnotation:"true"`
	Tunnel    map[E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel `path:"tunnels/tunnel" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTunnel   []ygot.Annotation                                                                                                `path:"tunnels/@tunnel" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation) IsYANGGoStruct() {}

// NewTunnel creates a new entry in the Tunnel list of the
// NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation) NewTunnel(Type E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE) (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Tunnel == nil {
		t.Tunnel = make(map[E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Tunnel[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Tunnel", key)
	}

	t.Tunnel[key] = &NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel{
		Type: Type,
	}

	return t.Tunnel[key], nil
}

// RenameTunnel renames an entry in the list Tunnel within
// the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation) RenameTunnel(oldK, newK E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE) error {
	if _, ok := t.Tunnel[newK]; ok {
		return fmt.Errorf("key %v already exists in Tunnel", newK)
	}

	e, ok := t.Tunnel[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Tunnel", oldK)
	}
	e.Type = newK

	t.Tunnel[newK] = e
	delete(t.Tunnel, oldK)
	return nil
}

// GetOrCreateTunnelMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation) GetOrCreateTunnelMap() map[E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel {
	if t.Tunnel == nil {
		t.Tunnel = make(map[E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel)
	}
	return t.Tunnel
}

// GetOrCreateTunnel retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation) GetOrCreateTunnel(Type E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE) *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel {

	key := Type

	if v, ok := t.Tunnel[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTunnel(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTunnel got unexpected error: %v", err))
	}
	return v
}

// GetTunnel retrieves the value with the specified key from
// the Tunnel map field of NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation) GetTunnel(Type E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE) *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.Tunnel[key]; ok {
		return lm
	}
	return nil
}

// AppendTunnel appends the supplied NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel struct to the
// list Tunnel of NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation) AppendTunnel(v *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel) error {
	key := v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Tunnel == nil {
		t.Tunnel = make(map[E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel)
	}

	if _, ok := t.Tunnel[key]; ok {
		return fmt.Errorf("duplicate key for list Tunnel %v", key)
	}

	t.Tunnel[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Tunnel {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/tunnel-encapsulation/tunnels/tunnel YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel struct {
	ΛMetadata []ygot.Annotation                                                                                                              `path:"@" ygotAnnotation:"true"`
	Subtlv    map[E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv `path:"subtlvs/subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubtlv   []ygot.Annotation                                                                                                              `path:"subtlvs/@subtlv" ygotAnnotation:"true"`
	Type      E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE                                                                                        `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType     []ygot.Annotation                                                                                                              `path:"state/@type|@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel) IsYANGGoStruct() {}

// NewSubtlv creates a new entry in the Subtlv list of the
// NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel) NewSubtlv(Type E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE) (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Subtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Subtlv", key)
	}

	t.Subtlv[key] = &NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv{
		Type: Type,
	}

	return t.Subtlv[key], nil
}

// RenameSubtlv renames an entry in the list Subtlv within
// the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel) RenameSubtlv(oldK, newK E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE) error {
	if _, ok := t.Subtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in Subtlv", newK)
	}

	e, ok := t.Subtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Subtlv", oldK)
	}
	e.Type = newK

	t.Subtlv[newK] = e
	delete(t.Subtlv, oldK)
	return nil
}

// GetOrCreateSubtlvMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel) GetOrCreateSubtlvMap() map[E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv {
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv)
	}
	return t.Subtlv
}

// GetOrCreateSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel) GetOrCreateSubtlv(Type E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE) *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv {

	key := Type

	if v, ok := t.Subtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetSubtlv retrieves the value with the specified key from
// the Subtlv map field of NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel) GetSubtlv(Type E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE) *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.Subtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendSubtlv appends the supplied NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv struct to the
// list Subtlv of NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel) AppendSubtlv(v *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) error {
	key := v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv)
	}

	if _, ok := t.Subtlv[key]; ok {
		return fmt.Errorf("duplicate key for list Subtlv %v", key)
	}

	t.Subtlv[key] = v
	return nil
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel) GetType() E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Subtlv {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"type": t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/tunnel-encapsulation/tunnels/tunnel/subtlvs/subtlv YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv struct {
	ΛMetadata       []ygot.Annotation                                                                                     `path:"@" ygotAnnotation:"true"`
	BindingSid      NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union           `path:"state/binding-sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBindingSid     []ygot.Annotation                                                                                     `path:"state/@binding-sid" ygotAnnotation:"true"`
	Colors          []uint32                                                                                              `path:"state/colors" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛColors         []ygot.Annotation                                                                                     `path:"state/@colors" ygotAnnotation:"true"`
	Preference      *uint32                                                                                               `path:"state/preference" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreference     []ygot.Annotation                                                                                     `path:"state/@preference" ygotAnnotation:"true"`
	RemoteEndpoint  map[string]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint `path:"remote-endpoints/remote-endpoint" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRemoteEndpoint []ygot.Annotation                                                                                     `path:"remote-endpoints/@remote-endpoint" ygotAnnotation:"true"`
	SegmentList     map[uint64]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList    `path:"segment-lists/segment-list" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSegmentList    []ygot.Annotation                                                                                     `path:"segment-lists/@segment-list" ygotAnnotation:"true"`
	Type            E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE                                                        `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType           []ygot.Annotation                                                                                     `path:"state/@type|@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) IsYANGGoStruct() {}

// NewRemoteEndpoint creates a new entry in the RemoteEndpoint list of the
// NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) NewRemoteEndpoint(Endpoint string) (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.RemoteEndpoint == nil {
		t.RemoteEndpoint = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint)
	}

	key := Endpoint

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.RemoteEndpoint[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list RemoteEndpoint", key)
	}

	t.RemoteEndpoint[key] = &NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint{
		Endpoint: &Endpoint,
	}

	return t.RemoteEndpoint[key], nil
}

// RenameRemoteEndpoint renames an entry in the list RemoteEndpoint within
// the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) RenameRemoteEndpoint(oldK, newK string) error {
	if _, ok := t.RemoteEndpoint[newK]; ok {
		return fmt.Errorf("key %v already exists in RemoteEndpoint", newK)
	}

	e, ok := t.RemoteEndpoint[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in RemoteEndpoint", oldK)
	}
	e.Endpoint = &newK

	t.RemoteEndpoint[newK] = e
	delete(t.RemoteEndpoint, oldK)
	return nil
}

// GetOrCreateRemoteEndpointMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) GetOrCreateRemoteEndpointMap() map[string]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint {
	if t.RemoteEndpoint == nil {
		t.RemoteEndpoint = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint)
	}
	return t.RemoteEndpoint
}

// GetOrCreateRemoteEndpoint retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) GetOrCreateRemoteEndpoint(Endpoint string) *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint {

	key := Endpoint

	if v, ok := t.RemoteEndpoint[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRemoteEndpoint(Endpoint)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRemoteEndpoint got unexpected error: %v", err))
	}
	return v
}

// GetRemoteEndpoint retrieves the value with the specified key from
// the RemoteEndpoint map field of NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) GetRemoteEndpoint(Endpoint string) *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint {

	if t == nil {
		return nil
	}

	key := Endpoint

	if lm, ok := t.RemoteEndpoint[key]; ok {
		return lm
	}
	return nil
}

// AppendRemoteEndpoint appends the supplied NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint struct to the
// list RemoteEndpoint of NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) AppendRemoteEndpoint(v *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint) error {
	if v.Endpoint == nil {
		return fmt.Errorf("invalid nil key received for Endpoint")
	}

	key := *v.Endpoint

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.RemoteEndpoint == nil {
		t.RemoteEndpoint = make(map[string]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint)
	}

	if _, ok := t.RemoteEndpoint[key]; ok {
		return fmt.Errorf("duplicate key for list RemoteEndpoint %v", key)
	}

	t.RemoteEndpoint[key] = v
	return nil
}

// NewSegmentList creates a new entry in the SegmentList list of the
// NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) NewSegmentList(InstanceId uint64) (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SegmentList == nil {
		t.SegmentList = make(map[uint64]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList)
	}

	key := InstanceId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.SegmentList[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list SegmentList", key)
	}

	t.SegmentList[key] = &NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList{
		InstanceId: &InstanceId,
	}

	return t.SegmentList[key], nil
}

// RenameSegmentList renames an entry in the list SegmentList within
// the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) RenameSegmentList(oldK, newK uint64) error {
	if _, ok := t.SegmentList[newK]; ok {
		return fmt.Errorf("key %v already exists in SegmentList", newK)
	}

	e, ok := t.SegmentList[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in SegmentList", oldK)
	}
	e.InstanceId = &newK

	t.SegmentList[newK] = e
	delete(t.SegmentList, oldK)
	return nil
}

// GetOrCreateSegmentListMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) GetOrCreateSegmentListMap() map[uint64]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList {
	if t.SegmentList == nil {
		t.SegmentList = make(map[uint64]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList)
	}
	return t.SegmentList
}

// GetOrCreateSegmentList retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) GetOrCreateSegmentList(InstanceId uint64) *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList {

	key := InstanceId

	if v, ok := t.SegmentList[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSegmentList(InstanceId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSegmentList got unexpected error: %v", err))
	}
	return v
}

// GetSegmentList retrieves the value with the specified key from
// the SegmentList map field of NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) GetSegmentList(InstanceId uint64) *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList {

	if t == nil {
		return nil
	}

	key := InstanceId

	if lm, ok := t.SegmentList[key]; ok {
		return lm
	}
	return nil
}

// AppendSegmentList appends the supplied NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList struct to the
// list SegmentList of NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) AppendSegmentList(v *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList) error {
	if v.InstanceId == nil {
		return fmt.Errorf("invalid nil key received for InstanceId")
	}

	key := *v.InstanceId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SegmentList == nil {
		t.SegmentList = make(map[uint64]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList)
	}

	if _, ok := t.SegmentList[key]; ok {
		return fmt.Errorf("duplicate key for list SegmentList %v", key)
	}

	t.SegmentList[key] = v
	return nil
}

// GetBindingSid retrieves the value of the leaf BindingSid from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BindingSid is set, it can
// safely use t.GetBindingSid() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BindingSid == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) GetBindingSid() NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union {
	if t == nil || t.BindingSid == nil {
		return nil
	}
	return t.BindingSid
}

// GetColors retrieves the value of the leaf Colors from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Colors is set, it can
// safely use t.GetColors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Colors == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) GetColors() []uint32 {
	if t == nil || t.Colors == nil {
		return nil
	}
	return t.Colors
}

// GetPreference retrieves the value of the leaf Preference from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Preference is set, it can
// safely use t.GetPreference() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Preference == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) GetPreference() uint32 {
	if t == nil || t.Preference == nil {
		return 100
	}
	return *t.Preference
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) GetType() E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Preference == nil {
		var v uint32 = 100
		t.Preference = &v
	}
	for _, e := range t.RemoteEndpoint {
		e.PopulateDefaults()
	}
	for _, e := range t.SegmentList {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"type": t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/tunnel-encapsulation/tunnels/tunnel/subtlvs/subtlv/state/binding-sid within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionString, UnionUint32].
type NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionString, UnionUint32]
	Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union()
}

// Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union ensures that UnionUint32
// implements the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union() {
}

// To_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv) To_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union(i interface{}) (NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_BindingSid_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, string, uint32]", i, i)
}

// NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/tunnel-encapsulation/tunnels/tunnel/subtlvs/subtlv/remote-endpoints/remote-endpoint YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	As        *uint32           `path:"state/as" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAs       []ygot.Annotation `path:"state/@as" ygotAnnotation:"true"`
	Endpoint  *string           `path:"state/endpoint|endpoint" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEndpoint []ygot.Annotation `path:"state/@endpoint|@endpoint" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint) IsYANGGoStruct() {
}

// GetAs retrieves the value of the leaf As from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if As is set, it can
// safely use t.GetAs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.As == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint) GetAs() uint32 {
	if t == nil || t.As == nil {
		return 0
	}
	return *t.As
}

// GetEndpoint retrieves the value of the leaf Endpoint from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Endpoint is set, it can
// safely use t.GetEndpoint() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Endpoint == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint) GetEndpoint() string {
	if t == nil || t.Endpoint == nil {
		return ""
	}
	return *t.Endpoint
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Endpoint == nil {
		return nil, fmt.Errorf("nil value for key Endpoint")
	}

	return map[string]interface{}{
		"endpoint": *t.Endpoint,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_RemoteEndpoint) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/tunnel-encapsulation/tunnels/tunnel/subtlvs/subtlv/segment-lists/segment-list YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList struct {
	ΛMetadata   []ygot.Annotation                                                                                          `path:"@" ygotAnnotation:"true"`
	InstanceId  *uint64                                                                                                    `path:"state/instance-id|instance-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛInstanceId []ygot.Annotation                                                                                          `path:"state/@instance-id|@instance-id" ygotAnnotation:"true"`
	Segment     map[uint64]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment `path:"segments/segment" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSegment    []ygot.Annotation                                                                                          `path:"segments/@segment" ygotAnnotation:"true"`
	Weight      *uint32                                                                                                    `path:"state/weight" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWeight     []ygot.Annotation                                                                                          `path:"state/@weight" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList) IsYANGGoStruct() {
}

// NewSegment creates a new entry in the Segment list of the
// NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList) NewSegment(Index uint64) (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Segment == nil {
		t.Segment = make(map[uint64]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Segment[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Segment", key)
	}

	t.Segment[key] = &NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment{
		Index: &Index,
	}

	return t.Segment[key], nil
}

// RenameSegment renames an entry in the list Segment within
// the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList) RenameSegment(oldK, newK uint64) error {
	if _, ok := t.Segment[newK]; ok {
		return fmt.Errorf("key %v already exists in Segment", newK)
	}

	e, ok := t.Segment[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Segment", oldK)
	}
	e.Index = &newK

	t.Segment[newK] = e
	delete(t.Segment, oldK)
	return nil
}

// GetOrCreateSegmentMap returns the list (map) from NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList) GetOrCreateSegmentMap() map[uint64]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment {
	if t.Segment == nil {
		t.Segment = make(map[uint64]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment)
	}
	return t.Segment
}

// GetOrCreateSegment retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList) GetOrCreateSegment(Index uint64) *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment {

	key := Index

	if v, ok := t.Segment[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSegment(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSegment got unexpected error: %v", err))
	}
	return v
}

// GetSegment retrieves the value with the specified key from
// the Segment map field of NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList) GetSegment(Index uint64) *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.Segment[key]; ok {
		return lm
	}
	return nil
}

// AppendSegment appends the supplied NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment struct to the
// list Segment of NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList) AppendSegment(v *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Segment == nil {
		t.Segment = make(map[uint64]*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment)
	}

	if _, ok := t.Segment[key]; ok {
		return fmt.Errorf("duplicate key for list Segment %v", key)
	}

	t.Segment[key] = v
	return nil
}

// GetInstanceId retrieves the value of the leaf InstanceId from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InstanceId is set, it can
// safely use t.GetInstanceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InstanceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList) GetInstanceId() uint64 {
	if t == nil || t.InstanceId == nil {
		return 0
	}
	return *t.InstanceId
}

// GetWeight retrieves the value of the leaf Weight from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Weight is set, it can
// safely use t.GetWeight() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Weight == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList) GetWeight() uint32 {
	if t == nil || t.Weight == nil {
		return 0
	}
	return *t.Weight
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Segment {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList) ΛListKeyMap() (map[string]interface{}, error) {
	if t.InstanceId == nil {
		return nil, fmt.Errorf("nil value for key InstanceId")
	}

	return map[string]interface{}{
		"instance-id": *t.InstanceId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/tunnel-encapsulation/tunnels/tunnel/subtlvs/subtlv/segment-lists/segment-list/segments/segment YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment struct {
	ΛMetadata          []ygot.Annotation                                                                                        `path:"@" ygotAnnotation:"true"`
	Index              *uint64                                                                                                  `path:"state/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex             []ygot.Annotation                                                                                        `path:"state/@index|@index" ygotAnnotation:"true"`
	LocalInterfaceId   *uint32                                                                                                  `path:"state/local-interface-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalInterfaceId  []ygot.Annotation                                                                                        `path:"state/@local-interface-id" ygotAnnotation:"true"`
	LocalIpv4Address   *string                                                                                                  `path:"state/local-ipv4-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalIpv4Address  []ygot.Annotation                                                                                        `path:"state/@local-ipv4-address" ygotAnnotation:"true"`
	LocalIpv6Address   *string                                                                                                  `path:"state/local-ipv6-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalIpv6Address  []ygot.Annotation                                                                                        `path:"state/@local-ipv6-address" ygotAnnotation:"true"`
	MplsBos            *bool                                                                                                    `path:"state/mpls-bos" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMplsBos           []ygot.Annotation                                                                                        `path:"state/@mpls-bos" ygotAnnotation:"true"`
	MplsTc             *uint8                                                                                                   `path:"state/mpls-tc" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMplsTc            []ygot.Annotation                                                                                        `path:"state/@mpls-tc" ygotAnnotation:"true"`
	MplsTtl            *uint8                                                                                                   `path:"state/mpls-ttl" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMplsTtl           []ygot.Annotation                                                                                        `path:"state/@mpls-ttl" ygotAnnotation:"true"`
	RemoteIpv4Address  *string                                                                                                  `path:"state/remote-ipv4-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRemoteIpv4Address []ygot.Annotation                                                                                        `path:"state/@remote-ipv4-address" ygotAnnotation:"true"`
	RemoteIpv6Address  *string                                                                                                  `path:"state/remote-ipv6-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRemoteIpv6Address []ygot.Annotation                                                                                        `path:"state/@remote-ipv6-address" ygotAnnotation:"true"`
	Sid                NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union `path:"state/sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSid               []ygot.Annotation                                                                                        `path:"state/@sid" ygotAnnotation:"true"`
	Type               E_Segment_Type                                                                                           `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType              []ygot.Annotation                                                                                        `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) IsYANGGoStruct() {
}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) GetIndex() uint64 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetLocalInterfaceId retrieves the value of the leaf LocalInterfaceId from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalInterfaceId is set, it can
// safely use t.GetLocalInterfaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalInterfaceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) GetLocalInterfaceId() uint32 {
	if t == nil || t.LocalInterfaceId == nil {
		return 0
	}
	return *t.LocalInterfaceId
}

// GetLocalIpv4Address retrieves the value of the leaf LocalIpv4Address from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalIpv4Address is set, it can
// safely use t.GetLocalIpv4Address() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalIpv4Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) GetLocalIpv4Address() string {
	if t == nil || t.LocalIpv4Address == nil {
		return ""
	}
	return *t.LocalIpv4Address
}

// GetLocalIpv6Address retrieves the value of the leaf LocalIpv6Address from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalIpv6Address is set, it can
// safely use t.GetLocalIpv6Address() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalIpv6Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) GetLocalIpv6Address() string {
	if t == nil || t.LocalIpv6Address == nil {
		return ""
	}
	return *t.LocalIpv6Address
}

// GetMplsBos retrieves the value of the leaf MplsBos from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MplsBos is set, it can
// safely use t.GetMplsBos() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MplsBos == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) GetMplsBos() bool {
	if t == nil || t.MplsBos == nil {
		return false
	}
	return *t.MplsBos
}

// GetMplsTc retrieves the value of the leaf MplsTc from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MplsTc is set, it can
// safely use t.GetMplsTc() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MplsTc == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) GetMplsTc() uint8 {
	if t == nil || t.MplsTc == nil {
		return 0
	}
	return *t.MplsTc
}

// GetMplsTtl retrieves the value of the leaf MplsTtl from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MplsTtl is set, it can
// safely use t.GetMplsTtl() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MplsTtl == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) GetMplsTtl() uint8 {
	if t == nil || t.MplsTtl == nil {
		return 0
	}
	return *t.MplsTtl
}

// GetRemoteIpv4Address retrieves the value of the leaf RemoteIpv4Address from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteIpv4Address is set, it can
// safely use t.GetRemoteIpv4Address() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteIpv4Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) GetRemoteIpv4Address() string {
	if t == nil || t.RemoteIpv4Address == nil {
		return ""
	}
	return *t.RemoteIpv4Address
}

// GetRemoteIpv6Address retrieves the value of the leaf RemoteIpv6Address from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteIpv6Address is set, it can
// safely use t.GetRemoteIpv6Address() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteIpv6Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) GetRemoteIpv6Address() string {
	if t == nil || t.RemoteIpv6Address == nil {
		return ""
	}
	return *t.RemoteIpv6Address
}

// GetSid retrieves the value of the leaf Sid from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Sid is set, it can
// safely use t.GetSid() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Sid == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) GetSid() NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union {
	if t == nil || t.Sid == nil {
		return nil
	}
	return t.Sid
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) GetType() E_Segment_Type {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment.
func (*NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/tunnel-encapsulation/tunnels/tunnel/subtlvs/subtlv/segment-lists/segment-list/segments/segment/state/sid within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionString, UnionUint32].
type NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionString, UnionUint32]
	Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union()
}

// Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union ensures that UnionUint32
// implements the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union() {
}

// To_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment) To_NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union(i interface{}) (NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Bgp_Rib_AttrSet_TunnelEncapsulation_Tunnel_Subtlv_SegmentList_Segment_Sid_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, string, uint32]", i, i)
}

// NetworkInstance_Protocol_Bgp_Rib_Community represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/communities/community YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_Community struct {
	ΛMetadata  []ygot.Annotation                                            `path:"@" ygotAnnotation:"true"`
	Community  []NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union `path:"state/community" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCommunity []ygot.Annotation                                            `path:"state/@community" ygotAnnotation:"true"`
	Index      *uint64                                                      `path:"state/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex     []ygot.Annotation                                            `path:"state/@index|@index" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_Community implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_Community) IsYANGGoStruct() {}

// GetCommunity retrieves the value of the leaf Community from the NetworkInstance_Protocol_Bgp_Rib_Community
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Community is set, it can
// safely use t.GetCommunity() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Community == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_Community) GetCommunity() []NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union {
	if t == nil || t.Community == nil {
		return nil
	}
	return t.Community
}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_Protocol_Bgp_Rib_Community
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_Community) GetIndex() uint64 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_Community
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_Community) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_Community struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_Community) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_Community) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_Community"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_Community) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_Community) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_Community.
func (*NetworkInstance_Protocol_Bgp_Rib_Community) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/communities/community/state/community within the YANG schema.
// Union type can be one of [E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY, UnionString, UnionUint32].
type NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union interface {
	// Union type can be one of [E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY, UnionString, UnionUint32]
	Documentation_for_NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union()
}

// Documentation_for_NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union ensures that E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY
// implements the NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union interface.
func (E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY) Documentation_for_NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union() {}

// Documentation_for_NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union ensures that UnionUint32
// implements the NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union() {}

// To_NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Bgp_Rib_Community) To_NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union(i interface{}) (NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Bgp_Rib_Community_Community_Union, unknown union type, got: %T, want any of [E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY, string, uint32]", i, i)
}

// NetworkInstance_Protocol_Bgp_Rib_ExtCommunity represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/ext-communities/ext-community YANG schema element.
type NetworkInstance_Protocol_Bgp_Rib_ExtCommunity struct {
	ΛMetadata     []ygot.Annotation                                                  `path:"@" ygotAnnotation:"true"`
	ExtCommunity  []NetworkInstance_Protocol_Bgp_Rib_ExtCommunity_ExtCommunity_Union `path:"state/ext-community" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtCommunity []ygot.Annotation                                                  `path:"state/@ext-community" ygotAnnotation:"true"`
	Index         *uint64                                                            `path:"state/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex        []ygot.Annotation                                                  `path:"state/@index|@index" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Bgp_Rib_ExtCommunity implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Bgp_Rib_ExtCommunity) IsYANGGoStruct() {}

// GetExtCommunity retrieves the value of the leaf ExtCommunity from the NetworkInstance_Protocol_Bgp_Rib_ExtCommunity
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunity is set, it can
// safely use t.GetExtCommunity() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunity == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_ExtCommunity) GetExtCommunity() []NetworkInstance_Protocol_Bgp_Rib_ExtCommunity_ExtCommunity_Union {
	if t == nil || t.ExtCommunity == nil {
		return nil
	}
	return t.ExtCommunity
}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_Protocol_Bgp_Rib_ExtCommunity
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Bgp_Rib_ExtCommunity) GetIndex() uint64 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Bgp_Rib_ExtCommunity
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Bgp_Rib_ExtCommunity) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Bgp_Rib_ExtCommunity struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Bgp_Rib_ExtCommunity) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_ExtCommunity) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Bgp_Rib_ExtCommunity"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Bgp_Rib_ExtCommunity) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Bgp_Rib_ExtCommunity) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Bgp_Rib_ExtCommunity.
func (*NetworkInstance_Protocol_Bgp_Rib_ExtCommunity) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Bgp_Rib_ExtCommunity_ExtCommunity_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/bgp/rib/ext-communities/ext-community/state/ext-community within the YANG schema.
// Union type can be one of [Binary, UnionString].
type NetworkInstance_Protocol_Bgp_Rib_ExtCommunity_ExtCommunity_Union interface {
	// Union type can be one of [Binary, UnionString]
	Documentation_for_NetworkInstance_Protocol_Bgp_Rib_ExtCommunity_ExtCommunity_Union()
}

// Documentation_for_NetworkInstance_Protocol_Bgp_Rib_ExtCommunity_ExtCommunity_Union ensures that Binary
// implements the NetworkInstance_Protocol_Bgp_Rib_ExtCommunity_ExtCommunity_Union interface.
func (Binary) Documentation_for_NetworkInstance_Protocol_Bgp_Rib_ExtCommunity_ExtCommunity_Union() {}

// Documentation_for_NetworkInstance_Protocol_Bgp_Rib_ExtCommunity_ExtCommunity_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Bgp_Rib_ExtCommunity_ExtCommunity_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Bgp_Rib_ExtCommunity_ExtCommunity_Union() {
}

// To_NetworkInstance_Protocol_Bgp_Rib_ExtCommunity_ExtCommunity_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Bgp_Rib_ExtCommunity_ExtCommunity_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Bgp_Rib_ExtCommunity) To_NetworkInstance_Protocol_Bgp_Rib_ExtCommunity_ExtCommunity_Union(i interface{}) (NetworkInstance_Protocol_Bgp_Rib_ExtCommunity_ExtCommunity_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Bgp_Rib_ExtCommunity_ExtCommunity_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case []byte:
		return Binary(v), nil
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Bgp_Rib_ExtCommunity_ExtCommunity_Union, unknown union type, got: %T, want any of [Binary, string]", i, i)
}

// NetworkInstance_Protocol_Igmp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/igmp YANG schema element.
type NetworkInstance_Protocol_Igmp struct {
	ΛMetadata  []ygot.Annotation                                   `path:"@" ygotAnnotation:"true"`
	Global     *NetworkInstance_Protocol_Igmp_Global               `path:"global" module:"openconfig-network-instance"`
	ΛGlobal    []ygot.Annotation                                   `path:"@global" ygotAnnotation:"true"`
	Interface  map[string]*NetworkInstance_Protocol_Igmp_Interface `path:"interfaces/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface []ygot.Annotation                                   `path:"interfaces/@interface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Igmp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Igmp) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// NetworkInstance_Protocol_Igmp struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Igmp) NewInterface(InterfaceId string) (*NetworkInstance_Protocol_Igmp_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Protocol_Igmp_Interface)
	}

	key := InterfaceId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &NetworkInstance_Protocol_Igmp_Interface{
		InterfaceId: &InterfaceId,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the NetworkInstance_Protocol_Igmp struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Igmp) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.InterfaceId = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from NetworkInstance_Protocol_Igmp.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Igmp) GetOrCreateInterfaceMap() map[string]*NetworkInstance_Protocol_Igmp_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Protocol_Igmp_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Igmp. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Igmp) GetOrCreateInterface(InterfaceId string) *NetworkInstance_Protocol_Igmp_Interface {

	key := InterfaceId

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(InterfaceId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of NetworkInstance_Protocol_Igmp. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Igmp) GetInterface(InterfaceId string) *NetworkInstance_Protocol_Igmp_Interface {

	if t == nil {
		return nil
	}

	key := InterfaceId

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied NetworkInstance_Protocol_Igmp_Interface struct to the
// list Interface of NetworkInstance_Protocol_Igmp. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Igmp_Interface already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Igmp) AppendInterface(v *NetworkInstance_Protocol_Igmp_Interface) error {
	if v.InterfaceId == nil {
		return fmt.Errorf("invalid nil key received for InterfaceId")
	}

	key := *v.InterfaceId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Protocol_Igmp_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// GetOrCreateGlobal retrieves the value of the Global field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Igmp) GetOrCreateGlobal() *NetworkInstance_Protocol_Igmp_Global {
	if t.Global != nil {
		return t.Global
	}
	t.Global = &NetworkInstance_Protocol_Igmp_Global{}
	return t.Global
}

// GetGlobal returns the value of the Global struct pointer
// from NetworkInstance_Protocol_Igmp. If the receiver or the field Global is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Igmp) GetGlobal() *NetworkInstance_Protocol_Igmp_Global {
	if t != nil && t.Global != nil {
		return t.Global
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Igmp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Igmp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Global.PopulateDefaults()
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Igmp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Igmp) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Igmp.
func (*NetworkInstance_Protocol_Igmp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Igmp_Global represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/igmp/global YANG schema element.
type NetworkInstance_Protocol_Igmp_Global struct {
	ΛMetadata []ygot.Annotation                         `path:"@" ygotAnnotation:"true"`
	Ssm       *NetworkInstance_Protocol_Igmp_Global_Ssm `path:"ssm" module:"openconfig-network-instance"`
	ΛSsm      []ygot.Annotation                         `path:"@ssm" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Igmp_Global implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Igmp_Global) IsYANGGoStruct() {}

// GetOrCreateSsm retrieves the value of the Ssm field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Igmp_Global) GetOrCreateSsm() *NetworkInstance_Protocol_Igmp_Global_Ssm {
	if t.Ssm != nil {
		return t.Ssm
	}
	t.Ssm = &NetworkInstance_Protocol_Igmp_Global_Ssm{}
	return t.Ssm
}

// GetSsm returns the value of the Ssm struct pointer
// from NetworkInstance_Protocol_Igmp_Global. If the receiver or the field Ssm is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Igmp_Global) GetSsm() *NetworkInstance_Protocol_Igmp_Global_Ssm {
	if t != nil && t.Ssm != nil {
		return t.Ssm
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Igmp_Global
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Igmp_Global) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Ssm.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Global) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Igmp_Global"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Global) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Igmp_Global) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Igmp_Global.
func (*NetworkInstance_Protocol_Igmp_Global) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Igmp_Global_Ssm represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/igmp/global/ssm YANG schema element.
type NetworkInstance_Protocol_Igmp_Global_Ssm struct {
	ΛMetadata []ygot.Annotation                                            `path:"@" ygotAnnotation:"true"`
	Mapping   map[string]*NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping `path:"mappings/mapping" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMapping  []ygot.Annotation                                            `path:"mappings/@mapping" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Igmp_Global_Ssm implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Igmp_Global_Ssm) IsYANGGoStruct() {}

// NewMapping creates a new entry in the Mapping list of the
// NetworkInstance_Protocol_Igmp_Global_Ssm struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Igmp_Global_Ssm) NewMapping(Source string) (*NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Mapping == nil {
		t.Mapping = make(map[string]*NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping)
	}

	key := Source

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Mapping[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Mapping", key)
	}

	t.Mapping[key] = &NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping{
		Source: &Source,
	}

	return t.Mapping[key], nil
}

// RenameMapping renames an entry in the list Mapping within
// the NetworkInstance_Protocol_Igmp_Global_Ssm struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Igmp_Global_Ssm) RenameMapping(oldK, newK string) error {
	if _, ok := t.Mapping[newK]; ok {
		return fmt.Errorf("key %v already exists in Mapping", newK)
	}

	e, ok := t.Mapping[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Mapping", oldK)
	}
	e.Source = &newK

	t.Mapping[newK] = e
	delete(t.Mapping, oldK)
	return nil
}

// GetOrCreateMappingMap returns the list (map) from NetworkInstance_Protocol_Igmp_Global_Ssm.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Igmp_Global_Ssm) GetOrCreateMappingMap() map[string]*NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping {
	if t.Mapping == nil {
		t.Mapping = make(map[string]*NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping)
	}
	return t.Mapping
}

// GetOrCreateMapping retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Igmp_Global_Ssm. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Igmp_Global_Ssm) GetOrCreateMapping(Source string) *NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping {

	key := Source

	if v, ok := t.Mapping[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewMapping(Source)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateMapping got unexpected error: %v", err))
	}
	return v
}

// GetMapping retrieves the value with the specified key from
// the Mapping map field of NetworkInstance_Protocol_Igmp_Global_Ssm. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Igmp_Global_Ssm) GetMapping(Source string) *NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping {

	if t == nil {
		return nil
	}

	key := Source

	if lm, ok := t.Mapping[key]; ok {
		return lm
	}
	return nil
}

// AppendMapping appends the supplied NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping struct to the
// list Mapping of NetworkInstance_Protocol_Igmp_Global_Ssm. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Igmp_Global_Ssm) AppendMapping(v *NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping) error {
	if v.Source == nil {
		return fmt.Errorf("invalid nil key received for Source")
	}

	key := *v.Source

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Mapping == nil {
		t.Mapping = make(map[string]*NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping)
	}

	if _, ok := t.Mapping[key]; ok {
		return fmt.Errorf("duplicate key for list Mapping %v", key)
	}

	t.Mapping[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Igmp_Global_Ssm
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Igmp_Global_Ssm) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Mapping {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Global_Ssm) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Igmp_Global_Ssm"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Global_Ssm) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Igmp_Global_Ssm) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Igmp_Global_Ssm.
func (*NetworkInstance_Protocol_Igmp_Global_Ssm) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/igmp/global/ssm/mappings/mapping YANG schema element.
type NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Source     *string           `path:"config/source|source" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSource    []ygot.Annotation `path:"config/@source|@source" ygotAnnotation:"true"`
	SsmRanges  *string           `path:"config/ssm-ranges" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSsmRanges []ygot.Annotation `path:"config/@ssm-ranges" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping) IsYANGGoStruct() {}

// GetSource retrieves the value of the leaf Source from the NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Source is set, it can
// safely use t.GetSource() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Source == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping) GetSource() string {
	if t == nil || t.Source == nil {
		return ""
	}
	return *t.Source
}

// GetSsmRanges retrieves the value of the leaf SsmRanges from the NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SsmRanges is set, it can
// safely use t.GetSsmRanges() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SsmRanges == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping) GetSsmRanges() string {
	if t == nil || t.SsmRanges == nil {
		return ""
	}
	return *t.SsmRanges
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Source == nil {
		return nil, fmt.Errorf("nil value for key Source")
	}

	return map[string]interface{}{
		"source": *t.Source,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping.
func (*NetworkInstance_Protocol_Igmp_Global_Ssm_Mapping) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Igmp_Interface represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/igmp/interfaces/interface YANG schema element.
type NetworkInstance_Protocol_Igmp_Interface struct {
	ΛMetadata       []ygot.Annotation                                                `path:"@" ygotAnnotation:"true"`
	Counters        *NetworkInstance_Protocol_Igmp_Interface_Counters                `path:"counters" module:"openconfig-network-instance"`
	ΛCounters       []ygot.Annotation                                                `path:"@counters" ygotAnnotation:"true"`
	Enabled         *bool                                                            `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled        []ygot.Annotation                                                `path:"config/@enabled" ygotAnnotation:"true"`
	FilterPrefixes  *string                                                          `path:"config/filter-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFilterPrefixes []ygot.Annotation                                                `path:"config/@filter-prefixes" ygotAnnotation:"true"`
	Group           map[string]*NetworkInstance_Protocol_Igmp_Interface_Group        `path:"membership-groups/group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛGroup          []ygot.Annotation                                                `path:"membership-groups/@group" ygotAnnotation:"true"`
	InterfaceId     *string                                                          `path:"config/interface-id|interface-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛInterfaceId    []ygot.Annotation                                                `path:"config/@interface-id|@interface-id" ygotAnnotation:"true"`
	InterfaceRef    *NetworkInstance_Protocol_Igmp_Interface_InterfaceRef            `path:"interface-ref" module:"openconfig-network-instance"`
	ΛInterfaceRef   []ygot.Annotation                                                `path:"@interface-ref" ygotAnnotation:"true"`
	QueryExpires    *uint64                                                          `path:"state/query-expires" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛQueryExpires   []ygot.Annotation                                                `path:"state/@query-expires" ygotAnnotation:"true"`
	QueryInterval   *uint16                                                          `path:"config/query-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛQueryInterval  []ygot.Annotation                                                `path:"config/@query-interval" ygotAnnotation:"true"`
	StaticGroups    map[string]*NetworkInstance_Protocol_Igmp_Interface_StaticGroups `path:"static-membership-groups/static-groups" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛStaticGroups   []ygot.Annotation                                                `path:"static-membership-groups/@static-groups" ygotAnnotation:"true"`
	Version         *uint8                                                           `path:"config/version" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛVersion        []ygot.Annotation                                                `path:"config/@version" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Igmp_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Igmp_Interface) IsYANGGoStruct() {}

// NewGroup creates a new entry in the Group list of the
// NetworkInstance_Protocol_Igmp_Interface struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Igmp_Interface) NewGroup(Group string) (*NetworkInstance_Protocol_Igmp_Interface_Group, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Group == nil {
		t.Group = make(map[string]*NetworkInstance_Protocol_Igmp_Interface_Group)
	}

	key := Group

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Group[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Group", key)
	}

	t.Group[key] = &NetworkInstance_Protocol_Igmp_Interface_Group{
		Group: &Group,
	}

	return t.Group[key], nil
}

// RenameGroup renames an entry in the list Group within
// the NetworkInstance_Protocol_Igmp_Interface struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Igmp_Interface) RenameGroup(oldK, newK string) error {
	if _, ok := t.Group[newK]; ok {
		return fmt.Errorf("key %v already exists in Group", newK)
	}

	e, ok := t.Group[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Group", oldK)
	}
	e.Group = &newK

	t.Group[newK] = e
	delete(t.Group, oldK)
	return nil
}

// GetOrCreateGroupMap returns the list (map) from NetworkInstance_Protocol_Igmp_Interface.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Igmp_Interface) GetOrCreateGroupMap() map[string]*NetworkInstance_Protocol_Igmp_Interface_Group {
	if t.Group == nil {
		t.Group = make(map[string]*NetworkInstance_Protocol_Igmp_Interface_Group)
	}
	return t.Group
}

// GetOrCreateGroup retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Igmp_Interface. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Igmp_Interface) GetOrCreateGroup(Group string) *NetworkInstance_Protocol_Igmp_Interface_Group {

	key := Group

	if v, ok := t.Group[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewGroup(Group)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateGroup got unexpected error: %v", err))
	}
	return v
}

// GetGroup retrieves the value with the specified key from
// the Group map field of NetworkInstance_Protocol_Igmp_Interface. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Igmp_Interface) GetGroup(Group string) *NetworkInstance_Protocol_Igmp_Interface_Group {

	if t == nil {
		return nil
	}

	key := Group

	if lm, ok := t.Group[key]; ok {
		return lm
	}
	return nil
}

// AppendGroup appends the supplied NetworkInstance_Protocol_Igmp_Interface_Group struct to the
// list Group of NetworkInstance_Protocol_Igmp_Interface. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Igmp_Interface_Group already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Igmp_Interface) AppendGroup(v *NetworkInstance_Protocol_Igmp_Interface_Group) error {
	if v.Group == nil {
		return fmt.Errorf("invalid nil key received for Group")
	}

	key := *v.Group

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Group == nil {
		t.Group = make(map[string]*NetworkInstance_Protocol_Igmp_Interface_Group)
	}

	if _, ok := t.Group[key]; ok {
		return fmt.Errorf("duplicate key for list Group %v", key)
	}

	t.Group[key] = v
	return nil
}

// NewStaticGroups creates a new entry in the StaticGroups list of the
// NetworkInstance_Protocol_Igmp_Interface struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Igmp_Interface) NewStaticGroups(StaticGroup string) (*NetworkInstance_Protocol_Igmp_Interface_StaticGroups, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.StaticGroups == nil {
		t.StaticGroups = make(map[string]*NetworkInstance_Protocol_Igmp_Interface_StaticGroups)
	}

	key := StaticGroup

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.StaticGroups[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list StaticGroups", key)
	}

	t.StaticGroups[key] = &NetworkInstance_Protocol_Igmp_Interface_StaticGroups{
		StaticGroup: &StaticGroup,
	}

	return t.StaticGroups[key], nil
}

// RenameStaticGroups renames an entry in the list StaticGroups within
// the NetworkInstance_Protocol_Igmp_Interface struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Igmp_Interface) RenameStaticGroups(oldK, newK string) error {
	if _, ok := t.StaticGroups[newK]; ok {
		return fmt.Errorf("key %v already exists in StaticGroups", newK)
	}

	e, ok := t.StaticGroups[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in StaticGroups", oldK)
	}
	e.StaticGroup = &newK

	t.StaticGroups[newK] = e
	delete(t.StaticGroups, oldK)
	return nil
}

// GetOrCreateStaticGroupsMap returns the list (map) from NetworkInstance_Protocol_Igmp_Interface.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Igmp_Interface) GetOrCreateStaticGroupsMap() map[string]*NetworkInstance_Protocol_Igmp_Interface_StaticGroups {
	if t.StaticGroups == nil {
		t.StaticGroups = make(map[string]*NetworkInstance_Protocol_Igmp_Interface_StaticGroups)
	}
	return t.StaticGroups
}

// GetOrCreateStaticGroups retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Igmp_Interface. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Igmp_Interface) GetOrCreateStaticGroups(StaticGroup string) *NetworkInstance_Protocol_Igmp_Interface_StaticGroups {

	key := StaticGroup

	if v, ok := t.StaticGroups[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewStaticGroups(StaticGroup)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateStaticGroups got unexpected error: %v", err))
	}
	return v
}

// GetStaticGroups retrieves the value with the specified key from
// the StaticGroups map field of NetworkInstance_Protocol_Igmp_Interface. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Igmp_Interface) GetStaticGroups(StaticGroup string) *NetworkInstance_Protocol_Igmp_Interface_StaticGroups {

	if t == nil {
		return nil
	}

	key := StaticGroup

	if lm, ok := t.StaticGroups[key]; ok {
		return lm
	}
	return nil
}

// AppendStaticGroups appends the supplied NetworkInstance_Protocol_Igmp_Interface_StaticGroups struct to the
// list StaticGroups of NetworkInstance_Protocol_Igmp_Interface. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Igmp_Interface_StaticGroups already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Igmp_Interface) AppendStaticGroups(v *NetworkInstance_Protocol_Igmp_Interface_StaticGroups) error {
	if v.StaticGroup == nil {
		return fmt.Errorf("invalid nil key received for StaticGroup")
	}

	key := *v.StaticGroup

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.StaticGroups == nil {
		t.StaticGroups = make(map[string]*NetworkInstance_Protocol_Igmp_Interface_StaticGroups)
	}

	if _, ok := t.StaticGroups[key]; ok {
		return fmt.Errorf("duplicate key for list StaticGroups %v", key)
	}

	t.StaticGroups[key] = v
	return nil
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Igmp_Interface) GetOrCreateCounters() *NetworkInstance_Protocol_Igmp_Interface_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_Protocol_Igmp_Interface_Counters{}
	return t.Counters
}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Igmp_Interface) GetOrCreateInterfaceRef() *NetworkInstance_Protocol_Igmp_Interface_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &NetworkInstance_Protocol_Igmp_Interface_InterfaceRef{}
	return t.InterfaceRef
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_Protocol_Igmp_Interface. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Igmp_Interface) GetCounters() *NetworkInstance_Protocol_Igmp_Interface_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from NetworkInstance_Protocol_Igmp_Interface. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Igmp_Interface) GetInterfaceRef() *NetworkInstance_Protocol_Igmp_Interface_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Igmp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetFilterPrefixes retrieves the value of the leaf FilterPrefixes from the NetworkInstance_Protocol_Igmp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FilterPrefixes is set, it can
// safely use t.GetFilterPrefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FilterPrefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface) GetFilterPrefixes() string {
	if t == nil || t.FilterPrefixes == nil {
		return ""
	}
	return *t.FilterPrefixes
}

// GetInterfaceId retrieves the value of the leaf InterfaceId from the NetworkInstance_Protocol_Igmp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceId is set, it can
// safely use t.GetInterfaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface) GetInterfaceId() string {
	if t == nil || t.InterfaceId == nil {
		return ""
	}
	return *t.InterfaceId
}

// GetQueryExpires retrieves the value of the leaf QueryExpires from the NetworkInstance_Protocol_Igmp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if QueryExpires is set, it can
// safely use t.GetQueryExpires() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.QueryExpires == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface) GetQueryExpires() uint64 {
	if t == nil || t.QueryExpires == nil {
		return 0
	}
	return *t.QueryExpires
}

// GetQueryInterval retrieves the value of the leaf QueryInterval from the NetworkInstance_Protocol_Igmp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if QueryInterval is set, it can
// safely use t.GetQueryInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.QueryInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface) GetQueryInterval() uint16 {
	if t == nil || t.QueryInterval == nil {
		return 0
	}
	return *t.QueryInterval
}

// GetVersion retrieves the value of the leaf Version from the NetworkInstance_Protocol_Igmp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Version is set, it can
// safely use t.GetVersion() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Version == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface) GetVersion() uint8 {
	if t == nil || t.Version == nil {
		return 0
	}
	return *t.Version
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Igmp_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Igmp_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	t.Counters.PopulateDefaults()
	t.InterfaceRef.PopulateDefaults()
	for _, e := range t.Group {
		e.PopulateDefaults()
	}
	for _, e := range t.StaticGroups {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Igmp_Interface struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Igmp_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.InterfaceId == nil {
		return nil, fmt.Errorf("nil value for key InterfaceId")
	}

	return map[string]interface{}{
		"interface-id": *t.InterfaceId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Igmp_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Igmp_Interface) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Igmp_Interface.
func (*NetworkInstance_Protocol_Igmp_Interface) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Igmp_Interface_Counters represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/igmp/interfaces/interface/counters YANG schema element.
type NetworkInstance_Protocol_Igmp_Interface_Counters struct {
	ΛMetadata []ygot.Annotation                                         `path:"@" ygotAnnotation:"true"`
	Queries   *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries `path:"queries" module:"openconfig-network-instance"`
	ΛQueries  []ygot.Annotation                                         `path:"@queries" ygotAnnotation:"true"`
	Reports   *NetworkInstance_Protocol_Igmp_Interface_Counters_Reports `path:"reports" module:"openconfig-network-instance"`
	ΛReports  []ygot.Annotation                                         `path:"@reports" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Igmp_Interface_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Igmp_Interface_Counters) IsYANGGoStruct() {}

// GetOrCreateQueries retrieves the value of the Queries field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters) GetOrCreateQueries() *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries {
	if t.Queries != nil {
		return t.Queries
	}
	t.Queries = &NetworkInstance_Protocol_Igmp_Interface_Counters_Queries{}
	return t.Queries
}

// GetOrCreateReports retrieves the value of the Reports field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters) GetOrCreateReports() *NetworkInstance_Protocol_Igmp_Interface_Counters_Reports {
	if t.Reports != nil {
		return t.Reports
	}
	t.Reports = &NetworkInstance_Protocol_Igmp_Interface_Counters_Reports{}
	return t.Reports
}

// GetQueries returns the value of the Queries struct pointer
// from NetworkInstance_Protocol_Igmp_Interface_Counters. If the receiver or the field Queries is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters) GetQueries() *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries {
	if t != nil && t.Queries != nil {
		return t.Queries
	}
	return nil
}

// GetReports returns the value of the Reports struct pointer
// from NetworkInstance_Protocol_Igmp_Interface_Counters. If the receiver or the field Reports is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters) GetReports() *NetworkInstance_Protocol_Igmp_Interface_Counters_Reports {
	if t != nil && t.Reports != nil {
		return t.Reports
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Igmp_Interface_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Queries.PopulateDefaults()
	t.Reports.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Igmp_Interface_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Igmp_Interface_Counters.
func (*NetworkInstance_Protocol_Igmp_Interface_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Igmp_Interface_Counters_Queries represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/igmp/interfaces/interface/counters/queries YANG schema element.
type NetworkInstance_Protocol_Igmp_Interface_Counters_Queries struct {
	ΛMetadata []ygot.Annotation                                                  `path:"@" ygotAnnotation:"true"`
	Received  *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received `path:"received" module:"openconfig-network-instance"`
	ΛReceived []ygot.Annotation                                                  `path:"@received" ygotAnnotation:"true"`
	Sent      *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent     `path:"sent" module:"openconfig-network-instance"`
	ΛSent     []ygot.Annotation                                                  `path:"@sent" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Igmp_Interface_Counters_Queries implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Igmp_Interface_Counters_Queries) IsYANGGoStruct() {}

// GetOrCreateReceived retrieves the value of the Received field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries) GetOrCreateReceived() *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received {
	if t.Received != nil {
		return t.Received
	}
	t.Received = &NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received{}
	return t.Received
}

// GetOrCreateSent retrieves the value of the Sent field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries) GetOrCreateSent() *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent {
	if t.Sent != nil {
		return t.Sent
	}
	t.Sent = &NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent{}
	return t.Sent
}

// GetReceived returns the value of the Received struct pointer
// from NetworkInstance_Protocol_Igmp_Interface_Counters_Queries. If the receiver or the field Received is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries) GetReceived() *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received {
	if t != nil && t.Received != nil {
		return t.Received
	}
	return nil
}

// GetSent returns the value of the Sent struct pointer
// from NetworkInstance_Protocol_Igmp_Interface_Counters_Queries. If the receiver or the field Sent is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries) GetSent() *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent {
	if t != nil && t.Sent != nil {
		return t.Sent
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Igmp_Interface_Counters_Queries
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Received.PopulateDefaults()
	t.Sent.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Igmp_Interface_Counters_Queries"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Igmp_Interface_Counters_Queries.
func (*NetworkInstance_Protocol_Igmp_Interface_Counters_Queries) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/igmp/interfaces/interface/counters/queries/received YANG schema element.
type NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	V1        *uint32           `path:"state/v1" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛV1       []ygot.Annotation `path:"state/@v1" ygotAnnotation:"true"`
	V2        *uint32           `path:"state/v2" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛV2       []ygot.Annotation `path:"state/@v2" ygotAnnotation:"true"`
	V3        *uint32           `path:"state/v3" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛV3       []ygot.Annotation `path:"state/@v3" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received) IsYANGGoStruct() {}

// GetV1 retrieves the value of the leaf V1 from the NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if V1 is set, it can
// safely use t.GetV1() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.V1 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received) GetV1() uint32 {
	if t == nil || t.V1 == nil {
		return 0
	}
	return *t.V1
}

// GetV2 retrieves the value of the leaf V2 from the NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if V2 is set, it can
// safely use t.GetV2() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.V2 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received) GetV2() uint32 {
	if t == nil || t.V2 == nil {
		return 0
	}
	return *t.V2
}

// GetV3 retrieves the value of the leaf V3 from the NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if V3 is set, it can
// safely use t.GetV3() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.V3 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received) GetV3() uint32 {
	if t == nil || t.V3 == nil {
		return 0
	}
	return *t.V3
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received.
func (*NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Received) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/igmp/interfaces/interface/counters/queries/sent YANG schema element.
type NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	V1        *uint32           `path:"state/v1" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛV1       []ygot.Annotation `path:"state/@v1" ygotAnnotation:"true"`
	V2        *uint32           `path:"state/v2" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛV2       []ygot.Annotation `path:"state/@v2" ygotAnnotation:"true"`
	V3        *uint32           `path:"state/v3" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛV3       []ygot.Annotation `path:"state/@v3" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent) IsYANGGoStruct() {}

// GetV1 retrieves the value of the leaf V1 from the NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if V1 is set, it can
// safely use t.GetV1() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.V1 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent) GetV1() uint32 {
	if t == nil || t.V1 == nil {
		return 0
	}
	return *t.V1
}

// GetV2 retrieves the value of the leaf V2 from the NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if V2 is set, it can
// safely use t.GetV2() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.V2 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent) GetV2() uint32 {
	if t == nil || t.V2 == nil {
		return 0
	}
	return *t.V2
}

// GetV3 retrieves the value of the leaf V3 from the NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if V3 is set, it can
// safely use t.GetV3() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.V3 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent) GetV3() uint32 {
	if t == nil || t.V3 == nil {
		return 0
	}
	return *t.V3
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent.
func (*NetworkInstance_Protocol_Igmp_Interface_Counters_Queries_Sent) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Igmp_Interface_Counters_Reports represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/igmp/interfaces/interface/counters/reports YANG schema element.
type NetworkInstance_Protocol_Igmp_Interface_Counters_Reports struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	V1        *uint32           `path:"state/v1" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛV1       []ygot.Annotation `path:"state/@v1" ygotAnnotation:"true"`
	V2        *uint32           `path:"state/v2" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛV2       []ygot.Annotation `path:"state/@v2" ygotAnnotation:"true"`
	V3        *uint32           `path:"state/v3" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛV3       []ygot.Annotation `path:"state/@v3" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Igmp_Interface_Counters_Reports implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Igmp_Interface_Counters_Reports) IsYANGGoStruct() {}

// GetV1 retrieves the value of the leaf V1 from the NetworkInstance_Protocol_Igmp_Interface_Counters_Reports
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if V1 is set, it can
// safely use t.GetV1() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.V1 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Reports) GetV1() uint32 {
	if t == nil || t.V1 == nil {
		return 0
	}
	return *t.V1
}

// GetV2 retrieves the value of the leaf V2 from the NetworkInstance_Protocol_Igmp_Interface_Counters_Reports
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if V2 is set, it can
// safely use t.GetV2() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.V2 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Reports) GetV2() uint32 {
	if t == nil || t.V2 == nil {
		return 0
	}
	return *t.V2
}

// GetV3 retrieves the value of the leaf V3 from the NetworkInstance_Protocol_Igmp_Interface_Counters_Reports
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if V3 is set, it can
// safely use t.GetV3() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.V3 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Reports) GetV3() uint32 {
	if t == nil || t.V3 == nil {
		return 0
	}
	return *t.V3
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Igmp_Interface_Counters_Reports
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Reports) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Reports) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Igmp_Interface_Counters_Reports"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Reports) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Igmp_Interface_Counters_Reports) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Igmp_Interface_Counters_Reports.
func (*NetworkInstance_Protocol_Igmp_Interface_Counters_Reports) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Igmp_Interface_Group represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/igmp/interfaces/interface/membership-groups/group YANG schema element.
type NetworkInstance_Protocol_Igmp_Interface_Group struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Group     *string           `path:"state/group|group" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛGroup    []ygot.Annotation `path:"state/@group|@group" ygotAnnotation:"true"`
	Reporter  *string           `path:"state/reporter" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReporter []ygot.Annotation `path:"state/@reporter" ygotAnnotation:"true"`
	Source    *string           `path:"state/source" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSource   []ygot.Annotation `path:"state/@source" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Igmp_Interface_Group implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Igmp_Interface_Group) IsYANGGoStruct() {}

// GetGroup retrieves the value of the leaf Group from the NetworkInstance_Protocol_Igmp_Interface_Group
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Group is set, it can
// safely use t.GetGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Group == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface_Group) GetGroup() string {
	if t == nil || t.Group == nil {
		return ""
	}
	return *t.Group
}

// GetReporter retrieves the value of the leaf Reporter from the NetworkInstance_Protocol_Igmp_Interface_Group
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Reporter is set, it can
// safely use t.GetReporter() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Reporter == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface_Group) GetReporter() string {
	if t == nil || t.Reporter == nil {
		return ""
	}
	return *t.Reporter
}

// GetSource retrieves the value of the leaf Source from the NetworkInstance_Protocol_Igmp_Interface_Group
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Source is set, it can
// safely use t.GetSource() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Source == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface_Group) GetSource() string {
	if t == nil || t.Source == nil {
		return ""
	}
	return *t.Source
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Igmp_Interface_Group
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Igmp_Interface_Group) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Igmp_Interface_Group struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Igmp_Interface_Group) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Group == nil {
		return nil, fmt.Errorf("nil value for key Group")
	}

	return map[string]interface{}{
		"group": *t.Group,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface_Group) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Igmp_Interface_Group"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface_Group) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Igmp_Interface_Group) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Igmp_Interface_Group.
func (*NetworkInstance_Protocol_Igmp_Interface_Group) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Igmp_Interface_InterfaceRef represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/igmp/interfaces/interface/interface-ref YANG schema element.
type NetworkInstance_Protocol_Igmp_Interface_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Igmp_Interface_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Igmp_Interface_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Protocol_Igmp_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Protocol_Igmp_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Igmp_Interface_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Igmp_Interface_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Igmp_Interface_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Igmp_Interface_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Igmp_Interface_InterfaceRef.
func (*NetworkInstance_Protocol_Igmp_Interface_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Igmp_Interface_StaticGroups represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/igmp/interfaces/interface/static-membership-groups/static-groups YANG schema element.
type NetworkInstance_Protocol_Igmp_Interface_StaticGroups struct {
	ΛMetadata    []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Source       *string           `path:"config/source" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSource      []ygot.Annotation `path:"config/@source" ygotAnnotation:"true"`
	StaticGroup  *string           `path:"config/static-group|static-group" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛStaticGroup []ygot.Annotation `path:"config/@static-group|@static-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Igmp_Interface_StaticGroups implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Igmp_Interface_StaticGroups) IsYANGGoStruct() {}

// GetSource retrieves the value of the leaf Source from the NetworkInstance_Protocol_Igmp_Interface_StaticGroups
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Source is set, it can
// safely use t.GetSource() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Source == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface_StaticGroups) GetSource() string {
	if t == nil || t.Source == nil {
		return ""
	}
	return *t.Source
}

// GetStaticGroup retrieves the value of the leaf StaticGroup from the NetworkInstance_Protocol_Igmp_Interface_StaticGroups
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if StaticGroup is set, it can
// safely use t.GetStaticGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.StaticGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Igmp_Interface_StaticGroups) GetStaticGroup() string {
	if t == nil || t.StaticGroup == nil {
		return ""
	}
	return *t.StaticGroup
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Igmp_Interface_StaticGroups
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Igmp_Interface_StaticGroups) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Igmp_Interface_StaticGroups struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Igmp_Interface_StaticGroups) ΛListKeyMap() (map[string]interface{}, error) {
	if t.StaticGroup == nil {
		return nil, fmt.Errorf("nil value for key StaticGroup")
	}

	return map[string]interface{}{
		"static-group": *t.StaticGroup,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface_StaticGroups) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Igmp_Interface_StaticGroups"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Igmp_Interface_StaticGroups) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Igmp_Interface_StaticGroups) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Igmp_Interface_StaticGroups.
func (*NetworkInstance_Protocol_Igmp_Interface_StaticGroups) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis YANG schema element.
type NetworkInstance_Protocol_Isis struct {
	ΛMetadata  []ygot.Annotation                                   `path:"@" ygotAnnotation:"true"`
	Global     *NetworkInstance_Protocol_Isis_Global               `path:"global" module:"openconfig-network-instance"`
	ΛGlobal    []ygot.Annotation                                   `path:"@global" ygotAnnotation:"true"`
	Interface  map[string]*NetworkInstance_Protocol_Isis_Interface `path:"interfaces/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface []ygot.Annotation                                   `path:"interfaces/@interface" ygotAnnotation:"true"`
	Level      map[uint8]*NetworkInstance_Protocol_Isis_Level      `path:"levels/level" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLevel     []ygot.Annotation                                   `path:"levels/@level" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// NetworkInstance_Protocol_Isis struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis) NewInterface(InterfaceId string) (*NetworkInstance_Protocol_Isis_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Protocol_Isis_Interface)
	}

	key := InterfaceId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &NetworkInstance_Protocol_Isis_Interface{
		InterfaceId: &InterfaceId,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the NetworkInstance_Protocol_Isis struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.InterfaceId = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from NetworkInstance_Protocol_Isis.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis) GetOrCreateInterfaceMap() map[string]*NetworkInstance_Protocol_Isis_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Protocol_Isis_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis) GetOrCreateInterface(InterfaceId string) *NetworkInstance_Protocol_Isis_Interface {

	key := InterfaceId

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(InterfaceId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of NetworkInstance_Protocol_Isis. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis) GetInterface(InterfaceId string) *NetworkInstance_Protocol_Isis_Interface {

	if t == nil {
		return nil
	}

	key := InterfaceId

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied NetworkInstance_Protocol_Isis_Interface struct to the
// list Interface of NetworkInstance_Protocol_Isis. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Interface already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis) AppendInterface(v *NetworkInstance_Protocol_Isis_Interface) error {
	if v.InterfaceId == nil {
		return fmt.Errorf("invalid nil key received for InterfaceId")
	}

	key := *v.InterfaceId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Protocol_Isis_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// NewLevel creates a new entry in the Level list of the
// NetworkInstance_Protocol_Isis struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis) NewLevel(LevelNumber uint8) (*NetworkInstance_Protocol_Isis_Level, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Level == nil {
		t.Level = make(map[uint8]*NetworkInstance_Protocol_Isis_Level)
	}

	key := LevelNumber

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Level[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Level", key)
	}

	t.Level[key] = &NetworkInstance_Protocol_Isis_Level{
		LevelNumber: &LevelNumber,
	}

	return t.Level[key], nil
}

// RenameLevel renames an entry in the list Level within
// the NetworkInstance_Protocol_Isis struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis) RenameLevel(oldK, newK uint8) error {
	if _, ok := t.Level[newK]; ok {
		return fmt.Errorf("key %v already exists in Level", newK)
	}

	e, ok := t.Level[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Level", oldK)
	}
	e.LevelNumber = &newK

	t.Level[newK] = e
	delete(t.Level, oldK)
	return nil
}

// GetOrCreateLevelMap returns the list (map) from NetworkInstance_Protocol_Isis.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis) GetOrCreateLevelMap() map[uint8]*NetworkInstance_Protocol_Isis_Level {
	if t.Level == nil {
		t.Level = make(map[uint8]*NetworkInstance_Protocol_Isis_Level)
	}
	return t.Level
}

// GetOrCreateLevel retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis) GetOrCreateLevel(LevelNumber uint8) *NetworkInstance_Protocol_Isis_Level {

	key := LevelNumber

	if v, ok := t.Level[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewLevel(LevelNumber)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateLevel got unexpected error: %v", err))
	}
	return v
}

// GetLevel retrieves the value with the specified key from
// the Level map field of NetworkInstance_Protocol_Isis. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis) GetLevel(LevelNumber uint8) *NetworkInstance_Protocol_Isis_Level {

	if t == nil {
		return nil
	}

	key := LevelNumber

	if lm, ok := t.Level[key]; ok {
		return lm
	}
	return nil
}

// AppendLevel appends the supplied NetworkInstance_Protocol_Isis_Level struct to the
// list Level of NetworkInstance_Protocol_Isis. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis) AppendLevel(v *NetworkInstance_Protocol_Isis_Level) error {
	if v.LevelNumber == nil {
		return fmt.Errorf("invalid nil key received for LevelNumber")
	}

	key := *v.LevelNumber

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Level == nil {
		t.Level = make(map[uint8]*NetworkInstance_Protocol_Isis_Level)
	}

	if _, ok := t.Level[key]; ok {
		return fmt.Errorf("duplicate key for list Level %v", key)
	}

	t.Level[key] = v
	return nil
}

// GetOrCreateGlobal retrieves the value of the Global field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis) GetOrCreateGlobal() *NetworkInstance_Protocol_Isis_Global {
	if t.Global != nil {
		return t.Global
	}
	t.Global = &NetworkInstance_Protocol_Isis_Global{}
	return t.Global
}

// GetGlobal returns the value of the Global struct pointer
// from NetworkInstance_Protocol_Isis. If the receiver or the field Global is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis) GetGlobal() *NetworkInstance_Protocol_Isis_Global {
	if t != nil && t.Global != nil {
		return t.Global
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Global.PopulateDefaults()
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
	for _, e := range t.Level {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis.
func (*NetworkInstance_Protocol_Isis) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global YANG schema element.
type NetworkInstance_Protocol_Isis_Global struct {
	ΛMetadata                      []ygot.Annotation                                                                        `path:"@" ygotAnnotation:"true"`
	Af                             map[NetworkInstance_Protocol_Isis_Global_Af_Key]*NetworkInstance_Protocol_Isis_Global_Af `path:"afi-safi/af" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAf                            []ygot.Annotation                                                                        `path:"afi-safi/@af" ygotAnnotation:"true"`
	Afi                            map[E_IsisTypes_AFI_TYPE]*NetworkInstance_Protocol_Isis_Global_Afi                       `path:"igp-shortcuts/afi" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAfi                           []ygot.Annotation                                                                        `path:"igp-shortcuts/@afi" ygotAnnotation:"true"`
	AuthenticationCheck            *bool                                                                                    `path:"config/authentication-check" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthenticationCheck           []ygot.Annotation                                                                        `path:"config/@authentication-check" ygotAnnotation:"true"`
	CsnpEnableOnP2PLinks           *bool                                                                                    `path:"config/csnp-enable-on-p2p-links" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCsnpEnableOnP2PLinks          []ygot.Annotation                                                                        `path:"config/@csnp-enable-on-p2p-links" ygotAnnotation:"true"`
	FastFlooding                   *bool                                                                                    `path:"config/fast-flooding" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFastFlooding                  []ygot.Annotation                                                                        `path:"config/@fast-flooding" ygotAnnotation:"true"`
	GracefulRestart                *NetworkInstance_Protocol_Isis_Global_GracefulRestart                                    `path:"graceful-restart" module:"openconfig-network-instance"`
	ΛGracefulRestart               []ygot.Annotation                                                                        `path:"@graceful-restart" ygotAnnotation:"true"`
	HelloPadding                   E_IsisTypes_HelloPaddingType                                                             `path:"config/hello-padding" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloPadding                  []ygot.Annotation                                                                        `path:"config/@hello-padding" ygotAnnotation:"true"`
	IidTlv                         *bool                                                                                    `path:"config/iid-tlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIidTlv                        []ygot.Annotation                                                                        `path:"config/@iid-tlv" ygotAnnotation:"true"`
	Instance                       *string                                                                                  `path:"config/instance" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInstance                      []ygot.Annotation                                                                        `path:"config/@instance" ygotAnnotation:"true"`
	InstanceId                     *uint16                                                                                  `path:"config/instance-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInstanceId                    []ygot.Annotation                                                                        `path:"config/@instance-id" ygotAnnotation:"true"`
	InterLevelPropagationPolicies  *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies                      `path:"inter-level-propagation-policies" module:"openconfig-network-instance"`
	ΛInterLevelPropagationPolicies []ygot.Annotation                                                                        `path:"@inter-level-propagation-policies" ygotAnnotation:"true"`
	LevelCapability                E_IsisTypes_LevelType                                                                    `path:"config/level-capability" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLevelCapability               []ygot.Annotation                                                                        `path:"config/@level-capability" ygotAnnotation:"true"`
	LspBit                         *NetworkInstance_Protocol_Isis_Global_LspBit                                             `path:"lsp-bit" module:"openconfig-network-instance"`
	ΛLspBit                        []ygot.Annotation                                                                        `path:"@lsp-bit" ygotAnnotation:"true"`
	MaxEcmpPaths                   *uint8                                                                                   `path:"config/max-ecmp-paths" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxEcmpPaths                  []ygot.Annotation                                                                        `path:"config/@max-ecmp-paths" ygotAnnotation:"true"`
	MaximumAreaAddresses           *uint8                                                                                   `path:"config/maximum-area-addresses" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximumAreaAddresses          []ygot.Annotation                                                                        `path:"config/@maximum-area-addresses" ygotAnnotation:"true"`
	Mpls                           *NetworkInstance_Protocol_Isis_Global_Mpls                                               `path:"mpls" module:"openconfig-network-instance"`
	ΛMpls                          []ygot.Annotation                                                                        `path:"@mpls" ygotAnnotation:"true"`
	Net                            []string                                                                                 `path:"config/net" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNet                           []ygot.Annotation                                                                        `path:"config/@net" ygotAnnotation:"true"`
	Nsr                            *NetworkInstance_Protocol_Isis_Global_Nsr                                                `path:"nsr" module:"openconfig-network-instance"`
	ΛNsr                           []ygot.Annotation                                                                        `path:"@nsr" ygotAnnotation:"true"`
	PoiTlv                         *bool                                                                                    `path:"config/poi-tlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPoiTlv                        []ygot.Annotation                                                                        `path:"config/@poi-tlv" ygotAnnotation:"true"`
	ReferenceBandwidth             *NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth                                 `path:"reference-bandwidth" module:"openconfig-network-instance"`
	ΛReferenceBandwidth            []ygot.Annotation                                                                        `path:"@reference-bandwidth" ygotAnnotation:"true"`
	SegmentRouting                 *NetworkInstance_Protocol_Isis_Global_SegmentRouting                                     `path:"segment-routing" module:"openconfig-network-instance"`
	ΛSegmentRouting                []ygot.Annotation                                                                        `path:"@segment-routing" ygotAnnotation:"true"`
	Timers                         *NetworkInstance_Protocol_Isis_Global_Timers                                             `path:"timers" module:"openconfig-network-instance"`
	ΛTimers                        []ygot.Annotation                                                                        `path:"@timers" ygotAnnotation:"true"`
	Transport                      *NetworkInstance_Protocol_Isis_Global_Transport                                          `path:"transport" module:"openconfig-network-instance"`
	ΛTransport                     []ygot.Annotation                                                                        `path:"@transport" ygotAnnotation:"true"`
	WeightedEcmp                   *bool                                                                                    `path:"config/weighted-ecmp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWeightedEcmp                  []ygot.Annotation                                                                        `path:"config/@weighted-ecmp" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Isis_Global_Af_Key represents the key for list Af of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global.
type NetworkInstance_Protocol_Isis_Global_Af_Key struct {
	AfiName  E_IsisTypes_AFI_TYPE  `path:"afi-name"`
	SafiName E_IsisTypes_SAFI_TYPE `path:"safi-name"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Isis_Global_Af_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Isis_Global_Af_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Isis_Global_Af_Key key struct.
func (t NetworkInstance_Protocol_Isis_Global_Af_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"afi-name":  t.AfiName,
		"safi-name": t.SafiName,
	}, nil
}

// NewAf creates a new entry in the Af list of the
// NetworkInstance_Protocol_Isis_Global struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Global) NewAf(AfiName E_IsisTypes_AFI_TYPE, SafiName E_IsisTypes_SAFI_TYPE) (*NetworkInstance_Protocol_Isis_Global_Af, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Af == nil {
		t.Af = make(map[NetworkInstance_Protocol_Isis_Global_Af_Key]*NetworkInstance_Protocol_Isis_Global_Af)
	}

	key := NetworkInstance_Protocol_Isis_Global_Af_Key{
		AfiName:  AfiName,
		SafiName: SafiName,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Af[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Af", key)
	}

	t.Af[key] = &NetworkInstance_Protocol_Isis_Global_Af{
		AfiName:  AfiName,
		SafiName: SafiName,
	}

	return t.Af[key], nil
}

// RenameAf renames an entry in the list Af within
// the NetworkInstance_Protocol_Isis_Global struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Global) RenameAf(oldK, newK NetworkInstance_Protocol_Isis_Global_Af_Key) error {
	if _, ok := t.Af[newK]; ok {
		return fmt.Errorf("key %v already exists in Af", newK)
	}

	e, ok := t.Af[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Af", oldK)
	}
	e.AfiName = newK.AfiName
	e.SafiName = newK.SafiName

	t.Af[newK] = e
	delete(t.Af, oldK)
	return nil
}

// GetOrCreateAfMap returns the list (map) from NetworkInstance_Protocol_Isis_Global.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Global) GetOrCreateAfMap() map[NetworkInstance_Protocol_Isis_Global_Af_Key]*NetworkInstance_Protocol_Isis_Global_Af {
	if t.Af == nil {
		t.Af = make(map[NetworkInstance_Protocol_Isis_Global_Af_Key]*NetworkInstance_Protocol_Isis_Global_Af)
	}
	return t.Af
}

// GetOrCreateAf retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Global. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Global) GetOrCreateAf(AfiName E_IsisTypes_AFI_TYPE, SafiName E_IsisTypes_SAFI_TYPE) *NetworkInstance_Protocol_Isis_Global_Af {

	key := NetworkInstance_Protocol_Isis_Global_Af_Key{
		AfiName:  AfiName,
		SafiName: SafiName,
	}

	if v, ok := t.Af[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAf(AfiName, SafiName)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAf got unexpected error: %v", err))
	}
	return v
}

// GetAf retrieves the value with the specified key from
// the Af map field of NetworkInstance_Protocol_Isis_Global. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global) GetAf(AfiName E_IsisTypes_AFI_TYPE, SafiName E_IsisTypes_SAFI_TYPE) *NetworkInstance_Protocol_Isis_Global_Af {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Isis_Global_Af_Key{
		AfiName:  AfiName,
		SafiName: SafiName,
	}

	if lm, ok := t.Af[key]; ok {
		return lm
	}
	return nil
}

// AppendAf appends the supplied NetworkInstance_Protocol_Isis_Global_Af struct to the
// list Af of NetworkInstance_Protocol_Isis_Global. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Global_Af already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Global) AppendAf(v *NetworkInstance_Protocol_Isis_Global_Af) error {
	key := NetworkInstance_Protocol_Isis_Global_Af_Key{
		AfiName:  v.AfiName,
		SafiName: v.SafiName,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Af == nil {
		t.Af = make(map[NetworkInstance_Protocol_Isis_Global_Af_Key]*NetworkInstance_Protocol_Isis_Global_Af)
	}

	if _, ok := t.Af[key]; ok {
		return fmt.Errorf("duplicate key for list Af %v", key)
	}

	t.Af[key] = v
	return nil
}

// NewAfi creates a new entry in the Afi list of the
// NetworkInstance_Protocol_Isis_Global struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Global) NewAfi(AfiName E_IsisTypes_AFI_TYPE) (*NetworkInstance_Protocol_Isis_Global_Afi, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Afi == nil {
		t.Afi = make(map[E_IsisTypes_AFI_TYPE]*NetworkInstance_Protocol_Isis_Global_Afi)
	}

	key := AfiName

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Afi[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Afi", key)
	}

	t.Afi[key] = &NetworkInstance_Protocol_Isis_Global_Afi{
		AfiName: AfiName,
	}

	return t.Afi[key], nil
}

// RenameAfi renames an entry in the list Afi within
// the NetworkInstance_Protocol_Isis_Global struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Global) RenameAfi(oldK, newK E_IsisTypes_AFI_TYPE) error {
	if _, ok := t.Afi[newK]; ok {
		return fmt.Errorf("key %v already exists in Afi", newK)
	}

	e, ok := t.Afi[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Afi", oldK)
	}
	e.AfiName = newK

	t.Afi[newK] = e
	delete(t.Afi, oldK)
	return nil
}

// GetOrCreateAfiMap returns the list (map) from NetworkInstance_Protocol_Isis_Global.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Global) GetOrCreateAfiMap() map[E_IsisTypes_AFI_TYPE]*NetworkInstance_Protocol_Isis_Global_Afi {
	if t.Afi == nil {
		t.Afi = make(map[E_IsisTypes_AFI_TYPE]*NetworkInstance_Protocol_Isis_Global_Afi)
	}
	return t.Afi
}

// GetOrCreateAfi retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Global. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Global) GetOrCreateAfi(AfiName E_IsisTypes_AFI_TYPE) *NetworkInstance_Protocol_Isis_Global_Afi {

	key := AfiName

	if v, ok := t.Afi[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAfi(AfiName)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAfi got unexpected error: %v", err))
	}
	return v
}

// GetAfi retrieves the value with the specified key from
// the Afi map field of NetworkInstance_Protocol_Isis_Global. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global) GetAfi(AfiName E_IsisTypes_AFI_TYPE) *NetworkInstance_Protocol_Isis_Global_Afi {

	if t == nil {
		return nil
	}

	key := AfiName

	if lm, ok := t.Afi[key]; ok {
		return lm
	}
	return nil
}

// AppendAfi appends the supplied NetworkInstance_Protocol_Isis_Global_Afi struct to the
// list Afi of NetworkInstance_Protocol_Isis_Global. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Global_Afi already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Global) AppendAfi(v *NetworkInstance_Protocol_Isis_Global_Afi) error {
	key := v.AfiName

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Afi == nil {
		t.Afi = make(map[E_IsisTypes_AFI_TYPE]*NetworkInstance_Protocol_Isis_Global_Afi)
	}

	if _, ok := t.Afi[key]; ok {
		return fmt.Errorf("duplicate key for list Afi %v", key)
	}

	t.Afi[key] = v
	return nil
}

// GetOrCreateGracefulRestart retrieves the value of the GracefulRestart field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Global) GetOrCreateGracefulRestart() *NetworkInstance_Protocol_Isis_Global_GracefulRestart {
	if t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	t.GracefulRestart = &NetworkInstance_Protocol_Isis_Global_GracefulRestart{}
	return t.GracefulRestart
}

// GetOrCreateInterLevelPropagationPolicies retrieves the value of the InterLevelPropagationPolicies field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Global) GetOrCreateInterLevelPropagationPolicies() *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies {
	if t.InterLevelPropagationPolicies != nil {
		return t.InterLevelPropagationPolicies
	}
	t.InterLevelPropagationPolicies = &NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies{}
	return t.InterLevelPropagationPolicies
}

// GetOrCreateLspBit retrieves the value of the LspBit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Global) GetOrCreateLspBit() *NetworkInstance_Protocol_Isis_Global_LspBit {
	if t.LspBit != nil {
		return t.LspBit
	}
	t.LspBit = &NetworkInstance_Protocol_Isis_Global_LspBit{}
	return t.LspBit
}

// GetOrCreateMpls retrieves the value of the Mpls field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Global) GetOrCreateMpls() *NetworkInstance_Protocol_Isis_Global_Mpls {
	if t.Mpls != nil {
		return t.Mpls
	}
	t.Mpls = &NetworkInstance_Protocol_Isis_Global_Mpls{}
	return t.Mpls
}

// GetOrCreateNsr retrieves the value of the Nsr field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Global) GetOrCreateNsr() *NetworkInstance_Protocol_Isis_Global_Nsr {
	if t.Nsr != nil {
		return t.Nsr
	}
	t.Nsr = &NetworkInstance_Protocol_Isis_Global_Nsr{}
	return t.Nsr
}

// GetOrCreateReferenceBandwidth retrieves the value of the ReferenceBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Global) GetOrCreateReferenceBandwidth() *NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth {
	if t.ReferenceBandwidth != nil {
		return t.ReferenceBandwidth
	}
	t.ReferenceBandwidth = &NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth{}
	return t.ReferenceBandwidth
}

// GetOrCreateSegmentRouting retrieves the value of the SegmentRouting field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Global) GetOrCreateSegmentRouting() *NetworkInstance_Protocol_Isis_Global_SegmentRouting {
	if t.SegmentRouting != nil {
		return t.SegmentRouting
	}
	t.SegmentRouting = &NetworkInstance_Protocol_Isis_Global_SegmentRouting{}
	return t.SegmentRouting
}

// GetOrCreateTimers retrieves the value of the Timers field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Global) GetOrCreateTimers() *NetworkInstance_Protocol_Isis_Global_Timers {
	if t.Timers != nil {
		return t.Timers
	}
	t.Timers = &NetworkInstance_Protocol_Isis_Global_Timers{}
	return t.Timers
}

// GetOrCreateTransport retrieves the value of the Transport field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Global) GetOrCreateTransport() *NetworkInstance_Protocol_Isis_Global_Transport {
	if t.Transport != nil {
		return t.Transport
	}
	t.Transport = &NetworkInstance_Protocol_Isis_Global_Transport{}
	return t.Transport
}

// GetGracefulRestart returns the value of the GracefulRestart struct pointer
// from NetworkInstance_Protocol_Isis_Global. If the receiver or the field GracefulRestart is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global) GetGracefulRestart() *NetworkInstance_Protocol_Isis_Global_GracefulRestart {
	if t != nil && t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	return nil
}

// GetInterLevelPropagationPolicies returns the value of the InterLevelPropagationPolicies struct pointer
// from NetworkInstance_Protocol_Isis_Global. If the receiver or the field InterLevelPropagationPolicies is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global) GetInterLevelPropagationPolicies() *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies {
	if t != nil && t.InterLevelPropagationPolicies != nil {
		return t.InterLevelPropagationPolicies
	}
	return nil
}

// GetLspBit returns the value of the LspBit struct pointer
// from NetworkInstance_Protocol_Isis_Global. If the receiver or the field LspBit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global) GetLspBit() *NetworkInstance_Protocol_Isis_Global_LspBit {
	if t != nil && t.LspBit != nil {
		return t.LspBit
	}
	return nil
}

// GetMpls returns the value of the Mpls struct pointer
// from NetworkInstance_Protocol_Isis_Global. If the receiver or the field Mpls is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global) GetMpls() *NetworkInstance_Protocol_Isis_Global_Mpls {
	if t != nil && t.Mpls != nil {
		return t.Mpls
	}
	return nil
}

// GetNsr returns the value of the Nsr struct pointer
// from NetworkInstance_Protocol_Isis_Global. If the receiver or the field Nsr is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global) GetNsr() *NetworkInstance_Protocol_Isis_Global_Nsr {
	if t != nil && t.Nsr != nil {
		return t.Nsr
	}
	return nil
}

// GetReferenceBandwidth returns the value of the ReferenceBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Global. If the receiver or the field ReferenceBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global) GetReferenceBandwidth() *NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth {
	if t != nil && t.ReferenceBandwidth != nil {
		return t.ReferenceBandwidth
	}
	return nil
}

// GetSegmentRouting returns the value of the SegmentRouting struct pointer
// from NetworkInstance_Protocol_Isis_Global. If the receiver or the field SegmentRouting is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global) GetSegmentRouting() *NetworkInstance_Protocol_Isis_Global_SegmentRouting {
	if t != nil && t.SegmentRouting != nil {
		return t.SegmentRouting
	}
	return nil
}

// GetTimers returns the value of the Timers struct pointer
// from NetworkInstance_Protocol_Isis_Global. If the receiver or the field Timers is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global) GetTimers() *NetworkInstance_Protocol_Isis_Global_Timers {
	if t != nil && t.Timers != nil {
		return t.Timers
	}
	return nil
}

// GetTransport returns the value of the Transport struct pointer
// from NetworkInstance_Protocol_Isis_Global. If the receiver or the field Transport is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global) GetTransport() *NetworkInstance_Protocol_Isis_Global_Transport {
	if t != nil && t.Transport != nil {
		return t.Transport
	}
	return nil
}

// GetAuthenticationCheck retrieves the value of the leaf AuthenticationCheck from the NetworkInstance_Protocol_Isis_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthenticationCheck is set, it can
// safely use t.GetAuthenticationCheck() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthenticationCheck == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global) GetAuthenticationCheck() bool {
	if t == nil || t.AuthenticationCheck == nil {
		return true
	}
	return *t.AuthenticationCheck
}

// GetCsnpEnableOnP2PLinks retrieves the value of the leaf CsnpEnableOnP2PLinks from the NetworkInstance_Protocol_Isis_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CsnpEnableOnP2PLinks is set, it can
// safely use t.GetCsnpEnableOnP2PLinks() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CsnpEnableOnP2PLinks == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global) GetCsnpEnableOnP2PLinks() bool {
	if t == nil || t.CsnpEnableOnP2PLinks == nil {
		return true
	}
	return *t.CsnpEnableOnP2PLinks
}

// GetFastFlooding retrieves the value of the leaf FastFlooding from the NetworkInstance_Protocol_Isis_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FastFlooding is set, it can
// safely use t.GetFastFlooding() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FastFlooding == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global) GetFastFlooding() bool {
	if t == nil || t.FastFlooding == nil {
		return true
	}
	return *t.FastFlooding
}

// GetHelloPadding retrieves the value of the leaf HelloPadding from the NetworkInstance_Protocol_Isis_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloPadding is set, it can
// safely use t.GetHelloPadding() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloPadding == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global) GetHelloPadding() E_IsisTypes_HelloPaddingType {
	if t == nil || t.HelloPadding == 0 {
		return IsisTypes_HelloPaddingType_STRICT
	}
	return t.HelloPadding
}

// GetIidTlv retrieves the value of the leaf IidTlv from the NetworkInstance_Protocol_Isis_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IidTlv is set, it can
// safely use t.GetIidTlv() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IidTlv == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global) GetIidTlv() bool {
	if t == nil || t.IidTlv == nil {
		return false
	}
	return *t.IidTlv
}

// GetInstance retrieves the value of the leaf Instance from the NetworkInstance_Protocol_Isis_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instance is set, it can
// safely use t.GetInstance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instance == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global) GetInstance() string {
	if t == nil || t.Instance == nil {
		return "0"
	}
	return *t.Instance
}

// GetInstanceId retrieves the value of the leaf InstanceId from the NetworkInstance_Protocol_Isis_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InstanceId is set, it can
// safely use t.GetInstanceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InstanceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global) GetInstanceId() uint16 {
	if t == nil || t.InstanceId == nil {
		return 0
	}
	return *t.InstanceId
}

// GetLevelCapability retrieves the value of the leaf LevelCapability from the NetworkInstance_Protocol_Isis_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LevelCapability is set, it can
// safely use t.GetLevelCapability() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LevelCapability == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global) GetLevelCapability() E_IsisTypes_LevelType {
	if t == nil || t.LevelCapability == 0 {
		return IsisTypes_LevelType_LEVEL_1_2
	}
	return t.LevelCapability
}

// GetMaxEcmpPaths retrieves the value of the leaf MaxEcmpPaths from the NetworkInstance_Protocol_Isis_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxEcmpPaths is set, it can
// safely use t.GetMaxEcmpPaths() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxEcmpPaths == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global) GetMaxEcmpPaths() uint8 {
	if t == nil || t.MaxEcmpPaths == nil {
		return 0
	}
	return *t.MaxEcmpPaths
}

// GetMaximumAreaAddresses retrieves the value of the leaf MaximumAreaAddresses from the NetworkInstance_Protocol_Isis_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaximumAreaAddresses is set, it can
// safely use t.GetMaximumAreaAddresses() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaximumAreaAddresses == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global) GetMaximumAreaAddresses() uint8 {
	if t == nil || t.MaximumAreaAddresses == nil {
		return 3
	}
	return *t.MaximumAreaAddresses
}

// GetNet retrieves the value of the leaf Net from the NetworkInstance_Protocol_Isis_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Net is set, it can
// safely use t.GetNet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Net == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global) GetNet() []string {
	if t == nil || t.Net == nil {
		return nil
	}
	return t.Net
}

// GetPoiTlv retrieves the value of the leaf PoiTlv from the NetworkInstance_Protocol_Isis_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PoiTlv is set, it can
// safely use t.GetPoiTlv() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PoiTlv == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global) GetPoiTlv() bool {
	if t == nil || t.PoiTlv == nil {
		return false
	}
	return *t.PoiTlv
}

// GetWeightedEcmp retrieves the value of the leaf WeightedEcmp from the NetworkInstance_Protocol_Isis_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WeightedEcmp is set, it can
// safely use t.GetWeightedEcmp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WeightedEcmp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global) GetWeightedEcmp() bool {
	if t == nil || t.WeightedEcmp == nil {
		return false
	}
	return *t.WeightedEcmp
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AuthenticationCheck == nil {
		var v bool = true
		t.AuthenticationCheck = &v
	}
	if t.CsnpEnableOnP2PLinks == nil {
		var v bool = true
		t.CsnpEnableOnP2PLinks = &v
	}
	if t.FastFlooding == nil {
		var v bool = true
		t.FastFlooding = &v
	}
	if t.HelloPadding == 0 {
		t.HelloPadding = IsisTypes_HelloPaddingType_STRICT
	}
	if t.IidTlv == nil {
		var v bool = false
		t.IidTlv = &v
	}
	if t.Instance == nil {
		var v string = "0"
		t.Instance = &v
	}
	if t.LevelCapability == 0 {
		t.LevelCapability = IsisTypes_LevelType_LEVEL_1_2
	}
	if t.MaximumAreaAddresses == nil {
		var v uint8 = 3
		t.MaximumAreaAddresses = &v
	}
	if t.PoiTlv == nil {
		var v bool = false
		t.PoiTlv = &v
	}
	if t.WeightedEcmp == nil {
		var v bool = false
		t.WeightedEcmp = &v
	}
	t.GracefulRestart.PopulateDefaults()
	t.InterLevelPropagationPolicies.PopulateDefaults()
	t.LspBit.PopulateDefaults()
	t.Mpls.PopulateDefaults()
	t.Nsr.PopulateDefaults()
	t.ReferenceBandwidth.PopulateDefaults()
	t.SegmentRouting.PopulateDefaults()
	t.Timers.PopulateDefaults()
	t.Transport.PopulateDefaults()
	for _, e := range t.Af {
		e.PopulateDefaults()
	}
	for _, e := range t.Afi {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global.
func (*NetworkInstance_Protocol_Isis_Global) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_Af represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/afi-safi/af YANG schema element.
type NetworkInstance_Protocol_Isis_Global_Af struct {
	ΛMetadata      []ygot.Annotation                                      `path:"@" ygotAnnotation:"true"`
	AfiName        E_IsisTypes_AFI_TYPE                                   `path:"config/afi-name|afi-name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAfiName       []ygot.Annotation                                      `path:"config/@afi-name|@afi-name" ygotAnnotation:"true"`
	Enabled        *bool                                                  `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled       []ygot.Annotation                                      `path:"config/@enabled" ygotAnnotation:"true"`
	MaxEcmpPaths   *uint8                                                 `path:"config/max-ecmp-paths" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxEcmpPaths  []ygot.Annotation                                      `path:"config/@max-ecmp-paths" ygotAnnotation:"true"`
	Metric         *uint32                                                `path:"config/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric        []ygot.Annotation                                      `path:"config/@metric" ygotAnnotation:"true"`
	MultiTopology  *NetworkInstance_Protocol_Isis_Global_Af_MultiTopology `path:"multi-topology" module:"openconfig-network-instance"`
	ΛMultiTopology []ygot.Annotation                                      `path:"@multi-topology" ygotAnnotation:"true"`
	SafiName       E_IsisTypes_SAFI_TYPE                                  `path:"config/safi-name|safi-name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSafiName      []ygot.Annotation                                      `path:"config/@safi-name|@safi-name" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_Af implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_Af) IsYANGGoStruct() {}

// GetOrCreateMultiTopology retrieves the value of the MultiTopology field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Global_Af) GetOrCreateMultiTopology() *NetworkInstance_Protocol_Isis_Global_Af_MultiTopology {
	if t.MultiTopology != nil {
		return t.MultiTopology
	}
	t.MultiTopology = &NetworkInstance_Protocol_Isis_Global_Af_MultiTopology{}
	return t.MultiTopology
}

// GetMultiTopology returns the value of the MultiTopology struct pointer
// from NetworkInstance_Protocol_Isis_Global_Af. If the receiver or the field MultiTopology is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global_Af) GetMultiTopology() *NetworkInstance_Protocol_Isis_Global_Af_MultiTopology {
	if t != nil && t.MultiTopology != nil {
		return t.MultiTopology
	}
	return nil
}

// GetAfiName retrieves the value of the leaf AfiName from the NetworkInstance_Protocol_Isis_Global_Af
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AfiName is set, it can
// safely use t.GetAfiName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AfiName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Af) GetAfiName() E_IsisTypes_AFI_TYPE {
	if t == nil || t.AfiName == 0 {
		return 0
	}
	return t.AfiName
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Global_Af
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Af) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetMaxEcmpPaths retrieves the value of the leaf MaxEcmpPaths from the NetworkInstance_Protocol_Isis_Global_Af
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxEcmpPaths is set, it can
// safely use t.GetMaxEcmpPaths() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxEcmpPaths == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Af) GetMaxEcmpPaths() uint8 {
	if t == nil || t.MaxEcmpPaths == nil {
		return 0
	}
	return *t.MaxEcmpPaths
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Global_Af
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Af) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 10
	}
	return *t.Metric
}

// GetSafiName retrieves the value of the leaf SafiName from the NetworkInstance_Protocol_Isis_Global_Af
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SafiName is set, it can
// safely use t.GetSafiName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SafiName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Af) GetSafiName() E_IsisTypes_SAFI_TYPE {
	if t == nil || t.SafiName == 0 {
		return 0
	}
	return t.SafiName
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_Af
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_Af) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Metric == nil {
		var v uint32 = 10
		t.Metric = &v
	}
	t.MultiTopology.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Global_Af struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Global_Af) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"afi-name":  t.AfiName,
		"safi-name": t.SafiName,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Af) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_Af"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Af) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_Af) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_Af.
func (*NetworkInstance_Protocol_Isis_Global_Af) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_Af_MultiTopology represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/afi-safi/af/multi-topology YANG schema element.
type NetworkInstance_Protocol_Isis_Global_Af_MultiTopology struct {
	ΛMetadata []ygot.Annotation     `path:"@" ygotAnnotation:"true"`
	AfiName   E_IsisTypes_AFI_TYPE  `path:"config/afi-name" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAfiName  []ygot.Annotation     `path:"config/@afi-name" ygotAnnotation:"true"`
	Enabled   *bool                 `path:"state/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation     `path:"state/@enabled" ygotAnnotation:"true"`
	SafiName  E_IsisTypes_SAFI_TYPE `path:"config/safi-name" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSafiName []ygot.Annotation     `path:"config/@safi-name" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_Af_MultiTopology implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_Af_MultiTopology) IsYANGGoStruct() {}

// GetAfiName retrieves the value of the leaf AfiName from the NetworkInstance_Protocol_Isis_Global_Af_MultiTopology
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AfiName is set, it can
// safely use t.GetAfiName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AfiName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Af_MultiTopology) GetAfiName() E_IsisTypes_AFI_TYPE {
	if t == nil || t.AfiName == 0 {
		return 0
	}
	return t.AfiName
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Global_Af_MultiTopology
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Af_MultiTopology) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetSafiName retrieves the value of the leaf SafiName from the NetworkInstance_Protocol_Isis_Global_Af_MultiTopology
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SafiName is set, it can
// safely use t.GetSafiName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SafiName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Af_MultiTopology) GetSafiName() E_IsisTypes_SAFI_TYPE {
	if t == nil || t.SafiName == 0 {
		return 0
	}
	return t.SafiName
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_Af_MultiTopology
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_Af_MultiTopology) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Af_MultiTopology) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_Af_MultiTopology"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Af_MultiTopology) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_Af_MultiTopology) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_Af_MultiTopology.
func (*NetworkInstance_Protocol_Isis_Global_Af_MultiTopology) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_Afi represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/igp-shortcuts/afi YANG schema element.
type NetworkInstance_Protocol_Isis_Global_Afi struct {
	ΛMetadata []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	AfiName   E_IsisTypes_AFI_TYPE              `path:"config/afi-name|afi-name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAfiName  []ygot.Annotation                 `path:"config/@afi-name|@afi-name" ygotAnnotation:"true"`
	NhType    []E_MplsTypes_PATH_SETUP_PROTOCOL `path:"config/nh-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNhType   []ygot.Annotation                 `path:"config/@nh-type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_Afi implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_Afi) IsYANGGoStruct() {}

// GetAfiName retrieves the value of the leaf AfiName from the NetworkInstance_Protocol_Isis_Global_Afi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AfiName is set, it can
// safely use t.GetAfiName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AfiName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Afi) GetAfiName() E_IsisTypes_AFI_TYPE {
	if t == nil || t.AfiName == 0 {
		return 0
	}
	return t.AfiName
}

// GetNhType retrieves the value of the leaf NhType from the NetworkInstance_Protocol_Isis_Global_Afi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NhType is set, it can
// safely use t.GetNhType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NhType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Afi) GetNhType() []E_MplsTypes_PATH_SETUP_PROTOCOL {
	if t == nil || t.NhType == nil {
		return nil
	}
	return t.NhType
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_Afi
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_Afi) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Global_Afi struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Global_Afi) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"afi-name": t.AfiName,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Afi) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_Afi"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Afi) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_Afi) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_Afi.
func (*NetworkInstance_Protocol_Isis_Global_Afi) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_GracefulRestart represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/graceful-restart YANG schema element.
type NetworkInstance_Protocol_Isis_Global_GracefulRestart struct {
	ΛMetadata                 []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled                   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled                  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
	HelperOnly                *bool             `path:"config/helper-only" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelperOnly               []ygot.Annotation `path:"config/@helper-only" ygotAnnotation:"true"`
	InterfaceTimeExpirations  *int64            `path:"config/interface-time-expirations" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterfaceTimeExpirations []ygot.Annotation `path:"config/@interface-time-expirations" ygotAnnotation:"true"`
	InterfaceTimer            *uint16           `path:"config/interface-timer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterfaceTimer           []ygot.Annotation `path:"config/@interface-timer" ygotAnnotation:"true"`
	NonPlannedOnly            *bool             `path:"config/non-planned-only" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNonPlannedOnly           []ygot.Annotation `path:"config/@non-planned-only" ygotAnnotation:"true"`
	RestartTime               *uint16           `path:"config/restart-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRestartTime              []ygot.Annotation `path:"config/@restart-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_GracefulRestart implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_GracefulRestart) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_GracefulRestart) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetHelperOnly retrieves the value of the leaf HelperOnly from the NetworkInstance_Protocol_Isis_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelperOnly is set, it can
// safely use t.GetHelperOnly() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelperOnly == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_GracefulRestart) GetHelperOnly() bool {
	if t == nil || t.HelperOnly == nil {
		return false
	}
	return *t.HelperOnly
}

// GetInterfaceTimeExpirations retrieves the value of the leaf InterfaceTimeExpirations from the NetworkInstance_Protocol_Isis_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceTimeExpirations is set, it can
// safely use t.GetInterfaceTimeExpirations() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceTimeExpirations == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_GracefulRestart) GetInterfaceTimeExpirations() int64 {
	if t == nil || t.InterfaceTimeExpirations == nil {
		return 0
	}
	return *t.InterfaceTimeExpirations
}

// GetInterfaceTimer retrieves the value of the leaf InterfaceTimer from the NetworkInstance_Protocol_Isis_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceTimer is set, it can
// safely use t.GetInterfaceTimer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceTimer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_GracefulRestart) GetInterfaceTimer() uint16 {
	if t == nil || t.InterfaceTimer == nil {
		return 0
	}
	return *t.InterfaceTimer
}

// GetNonPlannedOnly retrieves the value of the leaf NonPlannedOnly from the NetworkInstance_Protocol_Isis_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NonPlannedOnly is set, it can
// safely use t.GetNonPlannedOnly() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NonPlannedOnly == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_GracefulRestart) GetNonPlannedOnly() bool {
	if t == nil || t.NonPlannedOnly == nil {
		return false
	}
	return *t.NonPlannedOnly
}

// GetRestartTime retrieves the value of the leaf RestartTime from the NetworkInstance_Protocol_Isis_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RestartTime is set, it can
// safely use t.GetRestartTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RestartTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_GracefulRestart) GetRestartTime() uint16 {
	if t == nil || t.RestartTime == nil {
		return 30
	}
	return *t.RestartTime
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_GracefulRestart
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_GracefulRestart) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	if t.RestartTime == nil {
		var v uint16 = 30
		t.RestartTime = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_GracefulRestart) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_GracefulRestart"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_GracefulRestart) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_GracefulRestart) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_GracefulRestart.
func (*NetworkInstance_Protocol_Isis_Global_GracefulRestart) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/inter-level-propagation-policies YANG schema element.
type NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies struct {
	ΛMetadata       []ygot.Annotation                                                                  `path:"@" ygotAnnotation:"true"`
	Level1ToLevel2  *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2 `path:"level1-to-level2" module:"openconfig-network-instance"`
	ΛLevel1ToLevel2 []ygot.Annotation                                                                  `path:"@level1-to-level2" ygotAnnotation:"true"`
	Level2ToLevel1  *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1 `path:"level2-to-level1" module:"openconfig-network-instance"`
	ΛLevel2ToLevel1 []ygot.Annotation                                                                  `path:"@level2-to-level1" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies) IsYANGGoStruct() {}

// GetOrCreateLevel1ToLevel2 retrieves the value of the Level1ToLevel2 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies) GetOrCreateLevel1ToLevel2() *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2 {
	if t.Level1ToLevel2 != nil {
		return t.Level1ToLevel2
	}
	t.Level1ToLevel2 = &NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2{}
	return t.Level1ToLevel2
}

// GetOrCreateLevel2ToLevel1 retrieves the value of the Level2ToLevel1 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies) GetOrCreateLevel2ToLevel1() *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1 {
	if t.Level2ToLevel1 != nil {
		return t.Level2ToLevel1
	}
	t.Level2ToLevel1 = &NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1{}
	return t.Level2ToLevel1
}

// GetLevel1ToLevel2 returns the value of the Level1ToLevel2 struct pointer
// from NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies. If the receiver or the field Level1ToLevel2 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies) GetLevel1ToLevel2() *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2 {
	if t != nil && t.Level1ToLevel2 != nil {
		return t.Level1ToLevel2
	}
	return nil
}

// GetLevel2ToLevel1 returns the value of the Level2ToLevel1 struct pointer
// from NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies. If the receiver or the field Level2ToLevel1 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies) GetLevel2ToLevel1() *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1 {
	if t != nil && t.Level2ToLevel1 != nil {
		return t.Level2ToLevel1
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Level1ToLevel2.PopulateDefaults()
	t.Level2ToLevel1.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies.
func (*NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2 represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/inter-level-propagation-policies/level1-to-level2 YANG schema element.
type NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2 struct {
	ΛMetadata            []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	DefaultImportPolicy  E_RoutingPolicy_DefaultPolicyType `path:"config/default-import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultImportPolicy []ygot.Annotation                 `path:"config/@default-import-policy" ygotAnnotation:"true"`
	ImportPolicy         []string                          `path:"config/import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛImportPolicy        []ygot.Annotation                 `path:"config/@import-policy" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2) IsYANGGoStruct() {
}

// GetDefaultImportPolicy retrieves the value of the leaf DefaultImportPolicy from the NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultImportPolicy is set, it can
// safely use t.GetDefaultImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2) GetDefaultImportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultImportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultImportPolicy
}

// GetImportPolicy retrieves the value of the leaf ImportPolicy from the NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ImportPolicy is set, it can
// safely use t.GetImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2) GetImportPolicy() []string {
	if t == nil || t.ImportPolicy == nil {
		return nil
	}
	return t.ImportPolicy
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DefaultImportPolicy == 0 {
		t.DefaultImportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2.
func (*NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level1ToLevel2) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1 represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/inter-level-propagation-policies/level2-to-level1 YANG schema element.
type NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1 struct {
	ΛMetadata            []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	DefaultImportPolicy  E_RoutingPolicy_DefaultPolicyType `path:"config/default-import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultImportPolicy []ygot.Annotation                 `path:"config/@default-import-policy" ygotAnnotation:"true"`
	ImportPolicy         []string                          `path:"config/import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛImportPolicy        []ygot.Annotation                 `path:"config/@import-policy" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1) IsYANGGoStruct() {
}

// GetDefaultImportPolicy retrieves the value of the leaf DefaultImportPolicy from the NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultImportPolicy is set, it can
// safely use t.GetDefaultImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1) GetDefaultImportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultImportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultImportPolicy
}

// GetImportPolicy retrieves the value of the leaf ImportPolicy from the NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ImportPolicy is set, it can
// safely use t.GetImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1) GetImportPolicy() []string {
	if t == nil || t.ImportPolicy == nil {
		return nil
	}
	return t.ImportPolicy
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DefaultImportPolicy == 0 {
		t.DefaultImportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1.
func (*NetworkInstance_Protocol_Isis_Global_InterLevelPropagationPolicies_Level2ToLevel1) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_LspBit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/lsp-bit YANG schema element.
type NetworkInstance_Protocol_Isis_Global_LspBit struct {
	ΛMetadata    []ygot.Annotation                                        `path:"@" ygotAnnotation:"true"`
	AttachedBit  *NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit `path:"attached-bit" module:"openconfig-network-instance"`
	ΛAttachedBit []ygot.Annotation                                        `path:"@attached-bit" ygotAnnotation:"true"`
	OverloadBit  *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit `path:"overload-bit" module:"openconfig-network-instance"`
	ΛOverloadBit []ygot.Annotation                                        `path:"@overload-bit" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_LspBit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_LspBit) IsYANGGoStruct() {}

// GetOrCreateAttachedBit retrieves the value of the AttachedBit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit) GetOrCreateAttachedBit() *NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit {
	if t.AttachedBit != nil {
		return t.AttachedBit
	}
	t.AttachedBit = &NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit{}
	return t.AttachedBit
}

// GetOrCreateOverloadBit retrieves the value of the OverloadBit field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit) GetOrCreateOverloadBit() *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit {
	if t.OverloadBit != nil {
		return t.OverloadBit
	}
	t.OverloadBit = &NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit{}
	return t.OverloadBit
}

// GetAttachedBit returns the value of the AttachedBit struct pointer
// from NetworkInstance_Protocol_Isis_Global_LspBit. If the receiver or the field AttachedBit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit) GetAttachedBit() *NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit {
	if t != nil && t.AttachedBit != nil {
		return t.AttachedBit
	}
	return nil
}

// GetOverloadBit returns the value of the OverloadBit struct pointer
// from NetworkInstance_Protocol_Isis_Global_LspBit. If the receiver or the field OverloadBit is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit) GetOverloadBit() *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit {
	if t != nil && t.OverloadBit != nil {
		return t.OverloadBit
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_LspBit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AttachedBit.PopulateDefaults()
	t.OverloadBit.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_LspBit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_LspBit.
func (*NetworkInstance_Protocol_Isis_Global_LspBit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/lsp-bit/attached-bit YANG schema element.
type NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit struct {
	ΛMetadata    []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	IgnoreBit    *bool             `path:"config/ignore-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIgnoreBit   []ygot.Annotation `path:"config/@ignore-bit" ygotAnnotation:"true"`
	SuppressBit  *bool             `path:"config/suppress-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSuppressBit []ygot.Annotation `path:"config/@suppress-bit" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit) IsYANGGoStruct() {}

// GetIgnoreBit retrieves the value of the leaf IgnoreBit from the NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IgnoreBit is set, it can
// safely use t.GetIgnoreBit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IgnoreBit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit) GetIgnoreBit() bool {
	if t == nil || t.IgnoreBit == nil {
		return false
	}
	return *t.IgnoreBit
}

// GetSuppressBit retrieves the value of the leaf SuppressBit from the NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SuppressBit is set, it can
// safely use t.GetSuppressBit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SuppressBit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit) GetSuppressBit() bool {
	if t == nil || t.SuppressBit == nil {
		return false
	}
	return *t.SuppressBit
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.IgnoreBit == nil {
		var v bool = false
		t.IgnoreBit = &v
	}
	if t.SuppressBit == nil {
		var v bool = false
		t.SuppressBit = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit.
func (*NetworkInstance_Protocol_Isis_Global_LspBit_AttachedBit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/lsp-bit/overload-bit YANG schema element.
type NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit struct {
	ΛMetadata            []ygot.Annotation                                                                                                 `path:"@" ygotAnnotation:"true"`
	AdvertiseHighMetric  *bool                                                                                                             `path:"config/advertise-high-metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdvertiseHighMetric []ygot.Annotation                                                                                                 `path:"config/@advertise-high-metric" ygotAnnotation:"true"`
	ResetTrigger         map[E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE]*NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger `path:"reset-triggers/reset-trigger" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛResetTrigger        []ygot.Annotation                                                                                                 `path:"reset-triggers/@reset-trigger" ygotAnnotation:"true"`
	SetBit               *bool                                                                                                             `path:"config/set-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSetBit              []ygot.Annotation                                                                                                 `path:"config/@set-bit" ygotAnnotation:"true"`
	SetBitOnBoot         *bool                                                                                                             `path:"config/set-bit-on-boot" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSetBitOnBoot        []ygot.Annotation                                                                                                 `path:"config/@set-bit-on-boot" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit) IsYANGGoStruct() {}

// NewResetTrigger creates a new entry in the ResetTrigger list of the
// NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit) NewResetTrigger(ResetTrigger E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE) (*NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ResetTrigger == nil {
		t.ResetTrigger = make(map[E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE]*NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger)
	}

	key := ResetTrigger

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.ResetTrigger[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list ResetTrigger", key)
	}

	t.ResetTrigger[key] = &NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger{
		ResetTrigger: ResetTrigger,
	}

	return t.ResetTrigger[key], nil
}

// RenameResetTrigger renames an entry in the list ResetTrigger within
// the NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit) RenameResetTrigger(oldK, newK E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE) error {
	if _, ok := t.ResetTrigger[newK]; ok {
		return fmt.Errorf("key %v already exists in ResetTrigger", newK)
	}

	e, ok := t.ResetTrigger[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in ResetTrigger", oldK)
	}
	e.ResetTrigger = newK

	t.ResetTrigger[newK] = e
	delete(t.ResetTrigger, oldK)
	return nil
}

// GetOrCreateResetTriggerMap returns the list (map) from NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit) GetOrCreateResetTriggerMap() map[E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE]*NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger {
	if t.ResetTrigger == nil {
		t.ResetTrigger = make(map[E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE]*NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger)
	}
	return t.ResetTrigger
}

// GetOrCreateResetTrigger retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit) GetOrCreateResetTrigger(ResetTrigger E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE) *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger {

	key := ResetTrigger

	if v, ok := t.ResetTrigger[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewResetTrigger(ResetTrigger)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateResetTrigger got unexpected error: %v", err))
	}
	return v
}

// GetResetTrigger retrieves the value with the specified key from
// the ResetTrigger map field of NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit) GetResetTrigger(ResetTrigger E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE) *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger {

	if t == nil {
		return nil
	}

	key := ResetTrigger

	if lm, ok := t.ResetTrigger[key]; ok {
		return lm
	}
	return nil
}

// AppendResetTrigger appends the supplied NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger struct to the
// list ResetTrigger of NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit) AppendResetTrigger(v *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger) error {
	key := v.ResetTrigger

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ResetTrigger == nil {
		t.ResetTrigger = make(map[E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE]*NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger)
	}

	if _, ok := t.ResetTrigger[key]; ok {
		return fmt.Errorf("duplicate key for list ResetTrigger %v", key)
	}

	t.ResetTrigger[key] = v
	return nil
}

// GetAdvertiseHighMetric retrieves the value of the leaf AdvertiseHighMetric from the NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdvertiseHighMetric is set, it can
// safely use t.GetAdvertiseHighMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdvertiseHighMetric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit) GetAdvertiseHighMetric() bool {
	if t == nil || t.AdvertiseHighMetric == nil {
		return false
	}
	return *t.AdvertiseHighMetric
}

// GetSetBit retrieves the value of the leaf SetBit from the NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SetBit is set, it can
// safely use t.GetSetBit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SetBit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit) GetSetBit() bool {
	if t == nil || t.SetBit == nil {
		return false
	}
	return *t.SetBit
}

// GetSetBitOnBoot retrieves the value of the leaf SetBitOnBoot from the NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SetBitOnBoot is set, it can
// safely use t.GetSetBitOnBoot() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SetBitOnBoot == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit) GetSetBitOnBoot() bool {
	if t == nil || t.SetBitOnBoot == nil {
		return false
	}
	return *t.SetBitOnBoot
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AdvertiseHighMetric == nil {
		var v bool = false
		t.AdvertiseHighMetric = &v
	}
	if t.SetBit == nil {
		var v bool = false
		t.SetBit = &v
	}
	if t.SetBitOnBoot == nil {
		var v bool = false
		t.SetBitOnBoot = &v
	}
	for _, e := range t.ResetTrigger {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit.
func (*NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/lsp-bit/overload-bit/reset-triggers/reset-trigger YANG schema element.
type NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger struct {
	ΛMetadata     []ygot.Annotation                       `path:"@" ygotAnnotation:"true"`
	Delay         *uint16                                 `path:"config/delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDelay        []ygot.Annotation                       `path:"config/@delay" ygotAnnotation:"true"`
	ResetTrigger  E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE `path:"config/reset-trigger|reset-trigger" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛResetTrigger []ygot.Annotation                       `path:"config/@reset-trigger|@reset-trigger" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger) IsYANGGoStruct() {}

// GetDelay retrieves the value of the leaf Delay from the NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Delay is set, it can
// safely use t.GetDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Delay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger) GetDelay() uint16 {
	if t == nil || t.Delay == nil {
		return 0
	}
	return *t.Delay
}

// GetResetTrigger retrieves the value of the leaf ResetTrigger from the NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ResetTrigger is set, it can
// safely use t.GetResetTrigger() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ResetTrigger == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger) GetResetTrigger() E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE {
	if t == nil || t.ResetTrigger == 0 {
		return 0
	}
	return t.ResetTrigger
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"reset-trigger": t.ResetTrigger,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger.
func (*NetworkInstance_Protocol_Isis_Global_LspBit_OverloadBit_ResetTrigger) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_Mpls represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/mpls YANG schema element.
type NetworkInstance_Protocol_Isis_Global_Mpls struct {
	ΛMetadata   []ygot.Annotation                                     `path:"@" ygotAnnotation:"true"`
	IgpLdpSync  *NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync `path:"igp-ldp-sync" module:"openconfig-network-instance"`
	ΛIgpLdpSync []ygot.Annotation                                     `path:"@igp-ldp-sync" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_Mpls implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_Mpls) IsYANGGoStruct() {}

// GetOrCreateIgpLdpSync retrieves the value of the IgpLdpSync field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Global_Mpls) GetOrCreateIgpLdpSync() *NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync {
	if t.IgpLdpSync != nil {
		return t.IgpLdpSync
	}
	t.IgpLdpSync = &NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync{}
	return t.IgpLdpSync
}

// GetIgpLdpSync returns the value of the IgpLdpSync struct pointer
// from NetworkInstance_Protocol_Isis_Global_Mpls. If the receiver or the field IgpLdpSync is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global_Mpls) GetIgpLdpSync() *NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync {
	if t != nil && t.IgpLdpSync != nil {
		return t.IgpLdpSync
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_Mpls
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_Mpls) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.IgpLdpSync.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Mpls) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_Mpls"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Mpls) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_Mpls) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_Mpls.
func (*NetworkInstance_Protocol_Isis_Global_Mpls) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/mpls/igp-ldp-sync YANG schema element.
type NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled             *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled            []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
	PostSessionUpDelay  *uint16           `path:"config/post-session-up-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPostSessionUpDelay []ygot.Annotation `path:"config/@post-session-up-delay" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return true
	}
	return *t.Enabled
}

// GetPostSessionUpDelay retrieves the value of the leaf PostSessionUpDelay from the NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PostSessionUpDelay is set, it can
// safely use t.GetPostSessionUpDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PostSessionUpDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync) GetPostSessionUpDelay() uint16 {
	if t == nil || t.PostSessionUpDelay == nil {
		return 0
	}
	return *t.PostSessionUpDelay
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = true
		t.Enabled = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync.
func (*NetworkInstance_Protocol_Isis_Global_Mpls_IgpLdpSync) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_Nsr represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/nsr YANG schema element.
type NetworkInstance_Protocol_Isis_Global_Nsr struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_Nsr implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_Nsr) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Global_Nsr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Nsr) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_Nsr
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_Nsr) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Nsr) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_Nsr"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Nsr) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_Nsr) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_Nsr.
func (*NetworkInstance_Protocol_Isis_Global_Nsr) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/reference-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ReferenceBandwidth  *uint32           `path:"config/reference-bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReferenceBandwidth []ygot.Annotation `path:"config/@reference-bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth) IsYANGGoStruct() {}

// GetReferenceBandwidth retrieves the value of the leaf ReferenceBandwidth from the NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReferenceBandwidth is set, it can
// safely use t.GetReferenceBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReferenceBandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth) GetReferenceBandwidth() uint32 {
	if t == nil || t.ReferenceBandwidth == nil {
		return 0
	}
	return *t.ReferenceBandwidth
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth.
func (*NetworkInstance_Protocol_Isis_Global_ReferenceBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_SegmentRouting represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/segment-routing YANG schema element.
type NetworkInstance_Protocol_Isis_Global_SegmentRouting struct {
	ΛMetadata             []ygot.Annotation                                                                   `path:"@" ygotAnnotation:"true"`
	Enabled               *bool                                                                               `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled              []ygot.Annotation                                                                   `path:"config/@enabled" ygotAnnotation:"true"`
	FlexAlgorithmBinding  map[uint8]*NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding `path:"flex-algorithm-bindings/flex-algorithm-binding" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlexAlgorithmBinding []ygot.Annotation                                                                   `path:"flex-algorithm-bindings/@flex-algorithm-binding" ygotAnnotation:"true"`
	Srgb                  *string                                                                             `path:"config/srgb" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSrgb                 []ygot.Annotation                                                                   `path:"config/@srgb" ygotAnnotation:"true"`
	Srlb                  *string                                                                             `path:"config/srlb" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSrlb                 []ygot.Annotation                                                                   `path:"config/@srlb" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_SegmentRouting implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_SegmentRouting) IsYANGGoStruct() {}

// NewFlexAlgorithmBinding creates a new entry in the FlexAlgorithmBinding list of the
// NetworkInstance_Protocol_Isis_Global_SegmentRouting struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting) NewFlexAlgorithmBinding(FlexAlgoId uint8) (*NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.FlexAlgorithmBinding == nil {
		t.FlexAlgorithmBinding = make(map[uint8]*NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding)
	}

	key := FlexAlgoId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.FlexAlgorithmBinding[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list FlexAlgorithmBinding", key)
	}

	t.FlexAlgorithmBinding[key] = &NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding{
		FlexAlgoId: &FlexAlgoId,
	}

	return t.FlexAlgorithmBinding[key], nil
}

// RenameFlexAlgorithmBinding renames an entry in the list FlexAlgorithmBinding within
// the NetworkInstance_Protocol_Isis_Global_SegmentRouting struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting) RenameFlexAlgorithmBinding(oldK, newK uint8) error {
	if _, ok := t.FlexAlgorithmBinding[newK]; ok {
		return fmt.Errorf("key %v already exists in FlexAlgorithmBinding", newK)
	}

	e, ok := t.FlexAlgorithmBinding[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in FlexAlgorithmBinding", oldK)
	}
	e.FlexAlgoId = &newK

	t.FlexAlgorithmBinding[newK] = e
	delete(t.FlexAlgorithmBinding, oldK)
	return nil
}

// GetOrCreateFlexAlgorithmBindingMap returns the list (map) from NetworkInstance_Protocol_Isis_Global_SegmentRouting.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting) GetOrCreateFlexAlgorithmBindingMap() map[uint8]*NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding {
	if t.FlexAlgorithmBinding == nil {
		t.FlexAlgorithmBinding = make(map[uint8]*NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding)
	}
	return t.FlexAlgorithmBinding
}

// GetOrCreateFlexAlgorithmBinding retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Global_SegmentRouting. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting) GetOrCreateFlexAlgorithmBinding(FlexAlgoId uint8) *NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding {

	key := FlexAlgoId

	if v, ok := t.FlexAlgorithmBinding[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewFlexAlgorithmBinding(FlexAlgoId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateFlexAlgorithmBinding got unexpected error: %v", err))
	}
	return v
}

// GetFlexAlgorithmBinding retrieves the value with the specified key from
// the FlexAlgorithmBinding map field of NetworkInstance_Protocol_Isis_Global_SegmentRouting. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting) GetFlexAlgorithmBinding(FlexAlgoId uint8) *NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding {

	if t == nil {
		return nil
	}

	key := FlexAlgoId

	if lm, ok := t.FlexAlgorithmBinding[key]; ok {
		return lm
	}
	return nil
}

// AppendFlexAlgorithmBinding appends the supplied NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding struct to the
// list FlexAlgorithmBinding of NetworkInstance_Protocol_Isis_Global_SegmentRouting. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting) AppendFlexAlgorithmBinding(v *NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding) error {
	if v.FlexAlgoId == nil {
		return fmt.Errorf("invalid nil key received for FlexAlgoId")
	}

	key := *v.FlexAlgoId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.FlexAlgorithmBinding == nil {
		t.FlexAlgorithmBinding = make(map[uint8]*NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding)
	}

	if _, ok := t.FlexAlgorithmBinding[key]; ok {
		return fmt.Errorf("duplicate key for list FlexAlgorithmBinding %v", key)
	}

	t.FlexAlgorithmBinding[key] = v
	return nil
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Global_SegmentRouting
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetSrgb retrieves the value of the leaf Srgb from the NetworkInstance_Protocol_Isis_Global_SegmentRouting
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Srgb is set, it can
// safely use t.GetSrgb() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Srgb == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting) GetSrgb() string {
	if t == nil || t.Srgb == nil {
		return ""
	}
	return *t.Srgb
}

// GetSrlb retrieves the value of the leaf Srlb from the NetworkInstance_Protocol_Isis_Global_SegmentRouting
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Srlb is set, it can
// safely use t.GetSrlb() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Srlb == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting) GetSrlb() string {
	if t == nil || t.Srlb == nil {
		return ""
	}
	return *t.Srlb
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_SegmentRouting
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.FlexAlgorithmBinding {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_SegmentRouting"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_SegmentRouting.
func (*NetworkInstance_Protocol_Isis_Global_SegmentRouting) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/segment-routing/flex-algorithm-bindings/flex-algorithm-binding YANG schema element.
type NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding struct {
	ΛMetadata    []ygot.Annotation     `path:"@" ygotAnnotation:"true"`
	Advertised   *bool                 `path:"config/advertised" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdvertised  []ygot.Annotation     `path:"config/@advertised" ygotAnnotation:"true"`
	FlexAlgoId   *uint8                `path:"config/flex-algo-id|flex-algo-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛFlexAlgoId  []ygot.Annotation     `path:"config/@flex-algo-id|@flex-algo-id" ygotAnnotation:"true"`
	IsisLevel    E_IsisTypes_LevelType `path:"config/isis-level" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIsisLevel   []ygot.Annotation     `path:"config/@isis-level" ygotAnnotation:"true"`
	Participate  *bool                 `path:"config/participate" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛParticipate []ygot.Annotation     `path:"config/@participate" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding) IsYANGGoStruct() {}

// GetAdvertised retrieves the value of the leaf Advertised from the NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Advertised is set, it can
// safely use t.GetAdvertised() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Advertised == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding) GetAdvertised() bool {
	if t == nil || t.Advertised == nil {
		return false
	}
	return *t.Advertised
}

// GetFlexAlgoId retrieves the value of the leaf FlexAlgoId from the NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FlexAlgoId is set, it can
// safely use t.GetFlexAlgoId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FlexAlgoId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding) GetFlexAlgoId() uint8 {
	if t == nil || t.FlexAlgoId == nil {
		return 0
	}
	return *t.FlexAlgoId
}

// GetIsisLevel retrieves the value of the leaf IsisLevel from the NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IsisLevel is set, it can
// safely use t.GetIsisLevel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IsisLevel == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding) GetIsisLevel() E_IsisTypes_LevelType {
	if t == nil || t.IsisLevel == 0 {
		return IsisTypes_LevelType_LEVEL_1_2
	}
	return t.IsisLevel
}

// GetParticipate retrieves the value of the leaf Participate from the NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Participate is set, it can
// safely use t.GetParticipate() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Participate == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding) GetParticipate() bool {
	if t == nil || t.Participate == nil {
		return false
	}
	return *t.Participate
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Advertised == nil {
		var v bool = false
		t.Advertised = &v
	}
	if t.IsisLevel == 0 {
		t.IsisLevel = IsisTypes_LevelType_LEVEL_1_2
	}
	if t.Participate == nil {
		var v bool = false
		t.Participate = &v
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding) ΛListKeyMap() (map[string]interface{}, error) {
	if t.FlexAlgoId == nil {
		return nil, fmt.Errorf("nil value for key FlexAlgoId")
	}

	return map[string]interface{}{
		"flex-algo-id": *t.FlexAlgoId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding.
func (*NetworkInstance_Protocol_Isis_Global_SegmentRouting_FlexAlgorithmBinding) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_Timers represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/timers YANG schema element.
type NetworkInstance_Protocol_Isis_Global_Timers struct {
	ΛMetadata            []ygot.Annotation                                          `path:"@" ygotAnnotation:"true"`
	LspGeneration        *NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration `path:"lsp-generation" module:"openconfig-network-instance"`
	ΛLspGeneration       []ygot.Annotation                                          `path:"@lsp-generation" ygotAnnotation:"true"`
	LspLifetimeInterval  *uint16                                                    `path:"config/lsp-lifetime-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLspLifetimeInterval []ygot.Annotation                                          `path:"config/@lsp-lifetime-interval" ygotAnnotation:"true"`
	LspRefreshInterval   *uint16                                                    `path:"config/lsp-refresh-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLspRefreshInterval  []ygot.Annotation                                          `path:"config/@lsp-refresh-interval" ygotAnnotation:"true"`
	Spf                  *NetworkInstance_Protocol_Isis_Global_Timers_Spf           `path:"spf" module:"openconfig-network-instance"`
	ΛSpf                 []ygot.Annotation                                          `path:"@spf" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_Timers implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_Timers) IsYANGGoStruct() {}

// GetOrCreateLspGeneration retrieves the value of the LspGeneration field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Global_Timers) GetOrCreateLspGeneration() *NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration {
	if t.LspGeneration != nil {
		return t.LspGeneration
	}
	t.LspGeneration = &NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration{}
	return t.LspGeneration
}

// GetOrCreateSpf retrieves the value of the Spf field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Global_Timers) GetOrCreateSpf() *NetworkInstance_Protocol_Isis_Global_Timers_Spf {
	if t.Spf != nil {
		return t.Spf
	}
	t.Spf = &NetworkInstance_Protocol_Isis_Global_Timers_Spf{}
	return t.Spf
}

// GetLspGeneration returns the value of the LspGeneration struct pointer
// from NetworkInstance_Protocol_Isis_Global_Timers. If the receiver or the field LspGeneration is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global_Timers) GetLspGeneration() *NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration {
	if t != nil && t.LspGeneration != nil {
		return t.LspGeneration
	}
	return nil
}

// GetSpf returns the value of the Spf struct pointer
// from NetworkInstance_Protocol_Isis_Global_Timers. If the receiver or the field Spf is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Global_Timers) GetSpf() *NetworkInstance_Protocol_Isis_Global_Timers_Spf {
	if t != nil && t.Spf != nil {
		return t.Spf
	}
	return nil
}

// GetLspLifetimeInterval retrieves the value of the leaf LspLifetimeInterval from the NetworkInstance_Protocol_Isis_Global_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LspLifetimeInterval is set, it can
// safely use t.GetLspLifetimeInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LspLifetimeInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Timers) GetLspLifetimeInterval() uint16 {
	if t == nil || t.LspLifetimeInterval == nil {
		return 1200
	}
	return *t.LspLifetimeInterval
}

// GetLspRefreshInterval retrieves the value of the leaf LspRefreshInterval from the NetworkInstance_Protocol_Isis_Global_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LspRefreshInterval is set, it can
// safely use t.GetLspRefreshInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LspRefreshInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Timers) GetLspRefreshInterval() uint16 {
	if t == nil || t.LspRefreshInterval == nil {
		return 0
	}
	return *t.LspRefreshInterval
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_Timers
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_Timers) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.LspLifetimeInterval == nil {
		var v uint16 = 1200
		t.LspLifetimeInterval = &v
	}
	t.LspGeneration.PopulateDefaults()
	t.Spf.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Timers) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_Timers"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Timers) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_Timers) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_Timers.
func (*NetworkInstance_Protocol_Isis_Global_Timers) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/timers/lsp-generation YANG schema element.
type NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration struct {
	ΛMetadata              []ygot.Annotation             `path:"@" ygotAnnotation:"true"`
	AdaptiveTimer          E_IsisTypes_AdaptiveTimerType `path:"state/adaptive-timer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdaptiveTimer         []ygot.Annotation             `path:"state/@adaptive-timer" ygotAnnotation:"true"`
	LspFirstWaitInterval   *uint64                       `path:"config/lsp-first-wait-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLspFirstWaitInterval  []ygot.Annotation             `path:"config/@lsp-first-wait-interval" ygotAnnotation:"true"`
	LspMaxWaitInterval     *uint64                       `path:"config/lsp-max-wait-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLspMaxWaitInterval    []ygot.Annotation             `path:"config/@lsp-max-wait-interval" ygotAnnotation:"true"`
	LspSecondWaitInterval  *uint64                       `path:"config/lsp-second-wait-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLspSecondWaitInterval []ygot.Annotation             `path:"config/@lsp-second-wait-interval" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration) IsYANGGoStruct() {}

// GetAdaptiveTimer retrieves the value of the leaf AdaptiveTimer from the NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdaptiveTimer is set, it can
// safely use t.GetAdaptiveTimer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdaptiveTimer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration) GetAdaptiveTimer() E_IsisTypes_AdaptiveTimerType {
	if t == nil || t.AdaptiveTimer == 0 {
		return 0
	}
	return t.AdaptiveTimer
}

// GetLspFirstWaitInterval retrieves the value of the leaf LspFirstWaitInterval from the NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LspFirstWaitInterval is set, it can
// safely use t.GetLspFirstWaitInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LspFirstWaitInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration) GetLspFirstWaitInterval() uint64 {
	if t == nil || t.LspFirstWaitInterval == nil {
		return 0
	}
	return *t.LspFirstWaitInterval
}

// GetLspMaxWaitInterval retrieves the value of the leaf LspMaxWaitInterval from the NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LspMaxWaitInterval is set, it can
// safely use t.GetLspMaxWaitInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LspMaxWaitInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration) GetLspMaxWaitInterval() uint64 {
	if t == nil || t.LspMaxWaitInterval == nil {
		return 0
	}
	return *t.LspMaxWaitInterval
}

// GetLspSecondWaitInterval retrieves the value of the leaf LspSecondWaitInterval from the NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LspSecondWaitInterval is set, it can
// safely use t.GetLspSecondWaitInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LspSecondWaitInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration) GetLspSecondWaitInterval() uint64 {
	if t == nil || t.LspSecondWaitInterval == nil {
		return 0
	}
	return *t.LspSecondWaitInterval
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration.
func (*NetworkInstance_Protocol_Isis_Global_Timers_LspGeneration) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_Timers_Spf represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/timers/spf YANG schema element.
type NetworkInstance_Protocol_Isis_Global_Timers_Spf struct {
	ΛMetadata          []ygot.Annotation             `path:"@" ygotAnnotation:"true"`
	AdaptiveTimer      E_IsisTypes_AdaptiveTimerType `path:"state/adaptive-timer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdaptiveTimer     []ygot.Annotation             `path:"state/@adaptive-timer" ygotAnnotation:"true"`
	SpfFirstInterval   *uint64                       `path:"config/spf-first-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSpfFirstInterval  []ygot.Annotation             `path:"config/@spf-first-interval" ygotAnnotation:"true"`
	SpfHoldInterval    *uint64                       `path:"config/spf-hold-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSpfHoldInterval   []ygot.Annotation             `path:"config/@spf-hold-interval" ygotAnnotation:"true"`
	SpfSecondInterval  *uint64                       `path:"config/spf-second-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSpfSecondInterval []ygot.Annotation             `path:"config/@spf-second-interval" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_Timers_Spf implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_Timers_Spf) IsYANGGoStruct() {}

// GetAdaptiveTimer retrieves the value of the leaf AdaptiveTimer from the NetworkInstance_Protocol_Isis_Global_Timers_Spf
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdaptiveTimer is set, it can
// safely use t.GetAdaptiveTimer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdaptiveTimer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Timers_Spf) GetAdaptiveTimer() E_IsisTypes_AdaptiveTimerType {
	if t == nil || t.AdaptiveTimer == 0 {
		return 0
	}
	return t.AdaptiveTimer
}

// GetSpfFirstInterval retrieves the value of the leaf SpfFirstInterval from the NetworkInstance_Protocol_Isis_Global_Timers_Spf
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SpfFirstInterval is set, it can
// safely use t.GetSpfFirstInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SpfFirstInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Timers_Spf) GetSpfFirstInterval() uint64 {
	if t == nil || t.SpfFirstInterval == nil {
		return 0
	}
	return *t.SpfFirstInterval
}

// GetSpfHoldInterval retrieves the value of the leaf SpfHoldInterval from the NetworkInstance_Protocol_Isis_Global_Timers_Spf
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SpfHoldInterval is set, it can
// safely use t.GetSpfHoldInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SpfHoldInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Timers_Spf) GetSpfHoldInterval() uint64 {
	if t == nil || t.SpfHoldInterval == nil {
		return 5000
	}
	return *t.SpfHoldInterval
}

// GetSpfSecondInterval retrieves the value of the leaf SpfSecondInterval from the NetworkInstance_Protocol_Isis_Global_Timers_Spf
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SpfSecondInterval is set, it can
// safely use t.GetSpfSecondInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SpfSecondInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Timers_Spf) GetSpfSecondInterval() uint64 {
	if t == nil || t.SpfSecondInterval == nil {
		return 0
	}
	return *t.SpfSecondInterval
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_Timers_Spf
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_Timers_Spf) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.SpfHoldInterval == nil {
		var v uint64 = 5000
		t.SpfHoldInterval = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Timers_Spf) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_Timers_Spf"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Timers_Spf) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_Timers_Spf) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_Timers_Spf.
func (*NetworkInstance_Protocol_Isis_Global_Timers_Spf) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Global_Transport represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/transport YANG schema element.
type NetworkInstance_Protocol_Isis_Global_Transport struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	LspMtuSize  *uint16           `path:"config/lsp-mtu-size" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLspMtuSize []ygot.Annotation `path:"config/@lsp-mtu-size" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Global_Transport implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Global_Transport) IsYANGGoStruct() {}

// GetLspMtuSize retrieves the value of the leaf LspMtuSize from the NetworkInstance_Protocol_Isis_Global_Transport
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LspMtuSize is set, it can
// safely use t.GetLspMtuSize() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LspMtuSize == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Global_Transport) GetLspMtuSize() uint16 {
	if t == nil || t.LspMtuSize == nil {
		return 0
	}
	return *t.LspMtuSize
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Global_Transport
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Global_Transport) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Transport) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Global_Transport"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Global_Transport) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Global_Transport) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Global_Transport.
func (*NetworkInstance_Protocol_Isis_Global_Transport) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface YANG schema element.
type NetworkInstance_Protocol_Isis_Interface struct {
	ΛMetadata        []ygot.Annotation                                                                              `path:"@" ygotAnnotation:"true"`
	Af               map[NetworkInstance_Protocol_Isis_Interface_Af_Key]*NetworkInstance_Protocol_Isis_Interface_Af `path:"afi-safi/af" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAf              []ygot.Annotation                                                                              `path:"afi-safi/@af" ygotAnnotation:"true"`
	Authentication   *NetworkInstance_Protocol_Isis_Interface_Authentication                                        `path:"authentication" module:"openconfig-network-instance"`
	ΛAuthentication  []ygot.Annotation                                                                              `path:"@authentication" ygotAnnotation:"true"`
	Bfd              *NetworkInstance_Protocol_Isis_Interface_Bfd                                                   `path:"bfd" module:"openconfig-network-instance"`
	ΛBfd             []ygot.Annotation                                                                              `path:"@bfd" ygotAnnotation:"true"`
	CircuitCounters  *NetworkInstance_Protocol_Isis_Interface_CircuitCounters                                       `path:"circuit-counters" module:"openconfig-network-instance"`
	ΛCircuitCounters []ygot.Annotation                                                                              `path:"@circuit-counters" ygotAnnotation:"true"`
	CircuitType      E_IsisTypes_CircuitType                                                                        `path:"config/circuit-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCircuitType     []ygot.Annotation                                                                              `path:"config/@circuit-type" ygotAnnotation:"true"`
	EnableBfd        *NetworkInstance_Protocol_Isis_Interface_EnableBfd                                             `path:"enable-bfd" module:"openconfig-network-instance"`
	ΛEnableBfd       []ygot.Annotation                                                                              `path:"@enable-bfd" ygotAnnotation:"true"`
	Enabled          *bool                                                                                          `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled         []ygot.Annotation                                                                              `path:"config/@enabled" ygotAnnotation:"true"`
	GracefulRestart  *NetworkInstance_Protocol_Isis_Interface_GracefulRestart                                       `path:"graceful-restart" module:"openconfig-network-instance"`
	ΛGracefulRestart []ygot.Annotation                                                                              `path:"@graceful-restart" ygotAnnotation:"true"`
	HelloPadding     E_IsisTypes_HelloPaddingType                                                                   `path:"config/hello-padding" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloPadding    []ygot.Annotation                                                                              `path:"config/@hello-padding" ygotAnnotation:"true"`
	InterfaceId      *string                                                                                        `path:"config/interface-id|interface-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛInterfaceId     []ygot.Annotation                                                                              `path:"config/@interface-id|@interface-id" ygotAnnotation:"true"`
	InterfaceRef     *NetworkInstance_Protocol_Isis_Interface_InterfaceRef                                          `path:"interface-ref" module:"openconfig-network-instance"`
	ΛInterfaceRef    []ygot.Annotation                                                                              `path:"@interface-ref" ygotAnnotation:"true"`
	Level            map[uint8]*NetworkInstance_Protocol_Isis_Interface_Level                                       `path:"levels/level" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLevel           []ygot.Annotation                                                                              `path:"levels/@level" ygotAnnotation:"true"`
	Mpls             *NetworkInstance_Protocol_Isis_Interface_Mpls                                                  `path:"mpls" module:"openconfig-network-instance"`
	ΛMpls            []ygot.Annotation                                                                              `path:"@mpls" ygotAnnotation:"true"`
	Passive          *bool                                                                                          `path:"config/passive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPassive         []ygot.Annotation                                                                              `path:"config/@passive" ygotAnnotation:"true"`
	Timers           *NetworkInstance_Protocol_Isis_Interface_Timers                                                `path:"timers" module:"openconfig-network-instance"`
	ΛTimers          []ygot.Annotation                                                                              `path:"@timers" ygotAnnotation:"true"`
	WeightedEcmp     *NetworkInstance_Protocol_Isis_Interface_WeightedEcmp                                          `path:"weighted-ecmp" module:"openconfig-network-instance"`
	ΛWeightedEcmp    []ygot.Annotation                                                                              `path:"@weighted-ecmp" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Isis_Interface_Af_Key represents the key for list Af of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface.
type NetworkInstance_Protocol_Isis_Interface_Af_Key struct {
	AfiName  E_IsisTypes_AFI_TYPE  `path:"afi-name"`
	SafiName E_IsisTypes_SAFI_TYPE `path:"safi-name"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Isis_Interface_Af_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Isis_Interface_Af_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Isis_Interface_Af_Key key struct.
func (t NetworkInstance_Protocol_Isis_Interface_Af_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"afi-name":  t.AfiName,
		"safi-name": t.SafiName,
	}, nil
}

// NewAf creates a new entry in the Af list of the
// NetworkInstance_Protocol_Isis_Interface struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Interface) NewAf(AfiName E_IsisTypes_AFI_TYPE, SafiName E_IsisTypes_SAFI_TYPE) (*NetworkInstance_Protocol_Isis_Interface_Af, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Af == nil {
		t.Af = make(map[NetworkInstance_Protocol_Isis_Interface_Af_Key]*NetworkInstance_Protocol_Isis_Interface_Af)
	}

	key := NetworkInstance_Protocol_Isis_Interface_Af_Key{
		AfiName:  AfiName,
		SafiName: SafiName,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Af[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Af", key)
	}

	t.Af[key] = &NetworkInstance_Protocol_Isis_Interface_Af{
		AfiName:  AfiName,
		SafiName: SafiName,
	}

	return t.Af[key], nil
}

// RenameAf renames an entry in the list Af within
// the NetworkInstance_Protocol_Isis_Interface struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Interface) RenameAf(oldK, newK NetworkInstance_Protocol_Isis_Interface_Af_Key) error {
	if _, ok := t.Af[newK]; ok {
		return fmt.Errorf("key %v already exists in Af", newK)
	}

	e, ok := t.Af[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Af", oldK)
	}
	e.AfiName = newK.AfiName
	e.SafiName = newK.SafiName

	t.Af[newK] = e
	delete(t.Af, oldK)
	return nil
}

// GetOrCreateAfMap returns the list (map) from NetworkInstance_Protocol_Isis_Interface.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Interface) GetOrCreateAfMap() map[NetworkInstance_Protocol_Isis_Interface_Af_Key]*NetworkInstance_Protocol_Isis_Interface_Af {
	if t.Af == nil {
		t.Af = make(map[NetworkInstance_Protocol_Isis_Interface_Af_Key]*NetworkInstance_Protocol_Isis_Interface_Af)
	}
	return t.Af
}

// GetOrCreateAf retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Interface. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Interface) GetOrCreateAf(AfiName E_IsisTypes_AFI_TYPE, SafiName E_IsisTypes_SAFI_TYPE) *NetworkInstance_Protocol_Isis_Interface_Af {

	key := NetworkInstance_Protocol_Isis_Interface_Af_Key{
		AfiName:  AfiName,
		SafiName: SafiName,
	}

	if v, ok := t.Af[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAf(AfiName, SafiName)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAf got unexpected error: %v", err))
	}
	return v
}

// GetAf retrieves the value with the specified key from
// the Af map field of NetworkInstance_Protocol_Isis_Interface. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface) GetAf(AfiName E_IsisTypes_AFI_TYPE, SafiName E_IsisTypes_SAFI_TYPE) *NetworkInstance_Protocol_Isis_Interface_Af {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Isis_Interface_Af_Key{
		AfiName:  AfiName,
		SafiName: SafiName,
	}

	if lm, ok := t.Af[key]; ok {
		return lm
	}
	return nil
}

// AppendAf appends the supplied NetworkInstance_Protocol_Isis_Interface_Af struct to the
// list Af of NetworkInstance_Protocol_Isis_Interface. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Interface_Af already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Interface) AppendAf(v *NetworkInstance_Protocol_Isis_Interface_Af) error {
	key := NetworkInstance_Protocol_Isis_Interface_Af_Key{
		AfiName:  v.AfiName,
		SafiName: v.SafiName,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Af == nil {
		t.Af = make(map[NetworkInstance_Protocol_Isis_Interface_Af_Key]*NetworkInstance_Protocol_Isis_Interface_Af)
	}

	if _, ok := t.Af[key]; ok {
		return fmt.Errorf("duplicate key for list Af %v", key)
	}

	t.Af[key] = v
	return nil
}

// NewLevel creates a new entry in the Level list of the
// NetworkInstance_Protocol_Isis_Interface struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Interface) NewLevel(LevelNumber uint8) (*NetworkInstance_Protocol_Isis_Interface_Level, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Level == nil {
		t.Level = make(map[uint8]*NetworkInstance_Protocol_Isis_Interface_Level)
	}

	key := LevelNumber

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Level[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Level", key)
	}

	t.Level[key] = &NetworkInstance_Protocol_Isis_Interface_Level{
		LevelNumber: &LevelNumber,
	}

	return t.Level[key], nil
}

// RenameLevel renames an entry in the list Level within
// the NetworkInstance_Protocol_Isis_Interface struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Interface) RenameLevel(oldK, newK uint8) error {
	if _, ok := t.Level[newK]; ok {
		return fmt.Errorf("key %v already exists in Level", newK)
	}

	e, ok := t.Level[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Level", oldK)
	}
	e.LevelNumber = &newK

	t.Level[newK] = e
	delete(t.Level, oldK)
	return nil
}

// GetOrCreateLevelMap returns the list (map) from NetworkInstance_Protocol_Isis_Interface.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Interface) GetOrCreateLevelMap() map[uint8]*NetworkInstance_Protocol_Isis_Interface_Level {
	if t.Level == nil {
		t.Level = make(map[uint8]*NetworkInstance_Protocol_Isis_Interface_Level)
	}
	return t.Level
}

// GetOrCreateLevel retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Interface. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Interface) GetOrCreateLevel(LevelNumber uint8) *NetworkInstance_Protocol_Isis_Interface_Level {

	key := LevelNumber

	if v, ok := t.Level[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewLevel(LevelNumber)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateLevel got unexpected error: %v", err))
	}
	return v
}

// GetLevel retrieves the value with the specified key from
// the Level map field of NetworkInstance_Protocol_Isis_Interface. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface) GetLevel(LevelNumber uint8) *NetworkInstance_Protocol_Isis_Interface_Level {

	if t == nil {
		return nil
	}

	key := LevelNumber

	if lm, ok := t.Level[key]; ok {
		return lm
	}
	return nil
}

// AppendLevel appends the supplied NetworkInstance_Protocol_Isis_Interface_Level struct to the
// list Level of NetworkInstance_Protocol_Isis_Interface. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Interface_Level already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Interface) AppendLevel(v *NetworkInstance_Protocol_Isis_Interface_Level) error {
	if v.LevelNumber == nil {
		return fmt.Errorf("invalid nil key received for LevelNumber")
	}

	key := *v.LevelNumber

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Level == nil {
		t.Level = make(map[uint8]*NetworkInstance_Protocol_Isis_Interface_Level)
	}

	if _, ok := t.Level[key]; ok {
		return fmt.Errorf("duplicate key for list Level %v", key)
	}

	t.Level[key] = v
	return nil
}

// GetOrCreateAuthentication retrieves the value of the Authentication field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface) GetOrCreateAuthentication() *NetworkInstance_Protocol_Isis_Interface_Authentication {
	if t.Authentication != nil {
		return t.Authentication
	}
	t.Authentication = &NetworkInstance_Protocol_Isis_Interface_Authentication{}
	return t.Authentication
}

// GetOrCreateBfd retrieves the value of the Bfd field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface) GetOrCreateBfd() *NetworkInstance_Protocol_Isis_Interface_Bfd {
	if t.Bfd != nil {
		return t.Bfd
	}
	t.Bfd = &NetworkInstance_Protocol_Isis_Interface_Bfd{}
	return t.Bfd
}

// GetOrCreateCircuitCounters retrieves the value of the CircuitCounters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface) GetOrCreateCircuitCounters() *NetworkInstance_Protocol_Isis_Interface_CircuitCounters {
	if t.CircuitCounters != nil {
		return t.CircuitCounters
	}
	t.CircuitCounters = &NetworkInstance_Protocol_Isis_Interface_CircuitCounters{}
	return t.CircuitCounters
}

// GetOrCreateEnableBfd retrieves the value of the EnableBfd field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface) GetOrCreateEnableBfd() *NetworkInstance_Protocol_Isis_Interface_EnableBfd {
	if t.EnableBfd != nil {
		return t.EnableBfd
	}
	t.EnableBfd = &NetworkInstance_Protocol_Isis_Interface_EnableBfd{}
	return t.EnableBfd
}

// GetOrCreateGracefulRestart retrieves the value of the GracefulRestart field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface) GetOrCreateGracefulRestart() *NetworkInstance_Protocol_Isis_Interface_GracefulRestart {
	if t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	t.GracefulRestart = &NetworkInstance_Protocol_Isis_Interface_GracefulRestart{}
	return t.GracefulRestart
}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface) GetOrCreateInterfaceRef() *NetworkInstance_Protocol_Isis_Interface_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &NetworkInstance_Protocol_Isis_Interface_InterfaceRef{}
	return t.InterfaceRef
}

// GetOrCreateMpls retrieves the value of the Mpls field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface) GetOrCreateMpls() *NetworkInstance_Protocol_Isis_Interface_Mpls {
	if t.Mpls != nil {
		return t.Mpls
	}
	t.Mpls = &NetworkInstance_Protocol_Isis_Interface_Mpls{}
	return t.Mpls
}

// GetOrCreateTimers retrieves the value of the Timers field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface) GetOrCreateTimers() *NetworkInstance_Protocol_Isis_Interface_Timers {
	if t.Timers != nil {
		return t.Timers
	}
	t.Timers = &NetworkInstance_Protocol_Isis_Interface_Timers{}
	return t.Timers
}

// GetOrCreateWeightedEcmp retrieves the value of the WeightedEcmp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface) GetOrCreateWeightedEcmp() *NetworkInstance_Protocol_Isis_Interface_WeightedEcmp {
	if t.WeightedEcmp != nil {
		return t.WeightedEcmp
	}
	t.WeightedEcmp = &NetworkInstance_Protocol_Isis_Interface_WeightedEcmp{}
	return t.WeightedEcmp
}

// GetAuthentication returns the value of the Authentication struct pointer
// from NetworkInstance_Protocol_Isis_Interface. If the receiver or the field Authentication is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface) GetAuthentication() *NetworkInstance_Protocol_Isis_Interface_Authentication {
	if t != nil && t.Authentication != nil {
		return t.Authentication
	}
	return nil
}

// GetBfd returns the value of the Bfd struct pointer
// from NetworkInstance_Protocol_Isis_Interface. If the receiver or the field Bfd is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface) GetBfd() *NetworkInstance_Protocol_Isis_Interface_Bfd {
	if t != nil && t.Bfd != nil {
		return t.Bfd
	}
	return nil
}

// GetCircuitCounters returns the value of the CircuitCounters struct pointer
// from NetworkInstance_Protocol_Isis_Interface. If the receiver or the field CircuitCounters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface) GetCircuitCounters() *NetworkInstance_Protocol_Isis_Interface_CircuitCounters {
	if t != nil && t.CircuitCounters != nil {
		return t.CircuitCounters
	}
	return nil
}

// GetEnableBfd returns the value of the EnableBfd struct pointer
// from NetworkInstance_Protocol_Isis_Interface. If the receiver or the field EnableBfd is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface) GetEnableBfd() *NetworkInstance_Protocol_Isis_Interface_EnableBfd {
	if t != nil && t.EnableBfd != nil {
		return t.EnableBfd
	}
	return nil
}

// GetGracefulRestart returns the value of the GracefulRestart struct pointer
// from NetworkInstance_Protocol_Isis_Interface. If the receiver or the field GracefulRestart is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface) GetGracefulRestart() *NetworkInstance_Protocol_Isis_Interface_GracefulRestart {
	if t != nil && t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	return nil
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from NetworkInstance_Protocol_Isis_Interface. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface) GetInterfaceRef() *NetworkInstance_Protocol_Isis_Interface_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetMpls returns the value of the Mpls struct pointer
// from NetworkInstance_Protocol_Isis_Interface. If the receiver or the field Mpls is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface) GetMpls() *NetworkInstance_Protocol_Isis_Interface_Mpls {
	if t != nil && t.Mpls != nil {
		return t.Mpls
	}
	return nil
}

// GetTimers returns the value of the Timers struct pointer
// from NetworkInstance_Protocol_Isis_Interface. If the receiver or the field Timers is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface) GetTimers() *NetworkInstance_Protocol_Isis_Interface_Timers {
	if t != nil && t.Timers != nil {
		return t.Timers
	}
	return nil
}

// GetWeightedEcmp returns the value of the WeightedEcmp struct pointer
// from NetworkInstance_Protocol_Isis_Interface. If the receiver or the field WeightedEcmp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface) GetWeightedEcmp() *NetworkInstance_Protocol_Isis_Interface_WeightedEcmp {
	if t != nil && t.WeightedEcmp != nil {
		return t.WeightedEcmp
	}
	return nil
}

// GetCircuitType retrieves the value of the leaf CircuitType from the NetworkInstance_Protocol_Isis_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CircuitType is set, it can
// safely use t.GetCircuitType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CircuitType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface) GetCircuitType() E_IsisTypes_CircuitType {
	if t == nil || t.CircuitType == 0 {
		return 0
	}
	return t.CircuitType
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetHelloPadding retrieves the value of the leaf HelloPadding from the NetworkInstance_Protocol_Isis_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloPadding is set, it can
// safely use t.GetHelloPadding() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloPadding == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface) GetHelloPadding() E_IsisTypes_HelloPaddingType {
	if t == nil || t.HelloPadding == 0 {
		return 0
	}
	return t.HelloPadding
}

// GetInterfaceId retrieves the value of the leaf InterfaceId from the NetworkInstance_Protocol_Isis_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceId is set, it can
// safely use t.GetInterfaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface) GetInterfaceId() string {
	if t == nil || t.InterfaceId == nil {
		return ""
	}
	return *t.InterfaceId
}

// GetPassive retrieves the value of the leaf Passive from the NetworkInstance_Protocol_Isis_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Passive is set, it can
// safely use t.GetPassive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Passive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface) GetPassive() bool {
	if t == nil || t.Passive == nil {
		return false
	}
	return *t.Passive
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	if t.Passive == nil {
		var v bool = false
		t.Passive = &v
	}
	t.Authentication.PopulateDefaults()
	t.Bfd.PopulateDefaults()
	t.CircuitCounters.PopulateDefaults()
	t.EnableBfd.PopulateDefaults()
	t.GracefulRestart.PopulateDefaults()
	t.InterfaceRef.PopulateDefaults()
	t.Mpls.PopulateDefaults()
	t.Timers.PopulateDefaults()
	t.WeightedEcmp.PopulateDefaults()
	for _, e := range t.Af {
		e.PopulateDefaults()
	}
	for _, e := range t.Level {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Interface struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.InterfaceId == nil {
		return nil, fmt.Errorf("nil value for key InterfaceId")
	}

	return map[string]interface{}{
		"interface-id": *t.InterfaceId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface.
func (*NetworkInstance_Protocol_Isis_Interface) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Af represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/afi-safi/af YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Af struct {
	ΛMetadata []ygot.Annotation     `path:"@" ygotAnnotation:"true"`
	AfiName   E_IsisTypes_AFI_TYPE  `path:"config/afi-name|afi-name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAfiName  []ygot.Annotation     `path:"config/@afi-name|@afi-name" ygotAnnotation:"true"`
	Enabled   *bool                 `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation     `path:"config/@enabled" ygotAnnotation:"true"`
	SafiName  E_IsisTypes_SAFI_TYPE `path:"config/safi-name|safi-name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSafiName []ygot.Annotation     `path:"config/@safi-name|@safi-name" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Af implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Af) IsYANGGoStruct() {}

// GetAfiName retrieves the value of the leaf AfiName from the NetworkInstance_Protocol_Isis_Interface_Af
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AfiName is set, it can
// safely use t.GetAfiName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AfiName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Af) GetAfiName() E_IsisTypes_AFI_TYPE {
	if t == nil || t.AfiName == 0 {
		return 0
	}
	return t.AfiName
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Interface_Af
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Af) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetSafiName retrieves the value of the leaf SafiName from the NetworkInstance_Protocol_Isis_Interface_Af
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SafiName is set, it can
// safely use t.GetSafiName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SafiName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Af) GetSafiName() E_IsisTypes_SAFI_TYPE {
	if t == nil || t.SafiName == 0 {
		return 0
	}
	return t.SafiName
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Af
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Af) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Interface_Af struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Interface_Af) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"afi-name":  t.AfiName,
		"safi-name": t.SafiName,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Af) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Af"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Af) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Af) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Af.
func (*NetworkInstance_Protocol_Isis_Interface_Af) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Authentication represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/authentication YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Authentication struct {
	ΛMetadata     []ygot.Annotation         `path:"@" ygotAnnotation:"true"`
	AuthMode      E_IsisTypes_AUTH_MODE     `path:"config/auth-mode" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthMode     []ygot.Annotation         `path:"config/@auth-mode" ygotAnnotation:"true"`
	AuthPassword  *string                   `path:"config/auth-password" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthPassword []ygot.Annotation         `path:"config/@auth-password" ygotAnnotation:"true"`
	AuthType      E_KeychainTypes_AUTH_TYPE `path:"config/auth-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthType     []ygot.Annotation         `path:"config/@auth-type" ygotAnnotation:"true"`
	Enabled       *bool                     `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled      []ygot.Annotation         `path:"config/@enabled" ygotAnnotation:"true"`
	Keychain      *string                   `path:"config/keychain" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛKeychain     []ygot.Annotation         `path:"config/@keychain" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Authentication implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Authentication) IsYANGGoStruct() {}

// GetAuthMode retrieves the value of the leaf AuthMode from the NetworkInstance_Protocol_Isis_Interface_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthMode is set, it can
// safely use t.GetAuthMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthMode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Authentication) GetAuthMode() E_IsisTypes_AUTH_MODE {
	if t == nil || t.AuthMode == 0 {
		return 0
	}
	return t.AuthMode
}

// GetAuthPassword retrieves the value of the leaf AuthPassword from the NetworkInstance_Protocol_Isis_Interface_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthPassword is set, it can
// safely use t.GetAuthPassword() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthPassword == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Authentication) GetAuthPassword() string {
	if t == nil || t.AuthPassword == nil {
		return ""
	}
	return *t.AuthPassword
}

// GetAuthType retrieves the value of the leaf AuthType from the NetworkInstance_Protocol_Isis_Interface_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthType is set, it can
// safely use t.GetAuthType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Authentication) GetAuthType() E_KeychainTypes_AUTH_TYPE {
	if t == nil || t.AuthType == 0 {
		return 0
	}
	return t.AuthType
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Interface_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Authentication) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetKeychain retrieves the value of the leaf Keychain from the NetworkInstance_Protocol_Isis_Interface_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Keychain is set, it can
// safely use t.GetKeychain() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Keychain == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Authentication) GetKeychain() string {
	if t == nil || t.Keychain == nil {
		return ""
	}
	return *t.Keychain
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Authentication
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Authentication) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Authentication) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Authentication"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Authentication) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Authentication) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Authentication.
func (*NetworkInstance_Protocol_Isis_Interface_Authentication) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Bfd represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/bfd YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Bfd struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	BfdTlv    *bool             `path:"config/bfd-tlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBfdTlv   []ygot.Annotation `path:"config/@bfd-tlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Bfd implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Bfd) IsYANGGoStruct() {}

// GetBfdTlv retrieves the value of the leaf BfdTlv from the NetworkInstance_Protocol_Isis_Interface_Bfd
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BfdTlv is set, it can
// safely use t.GetBfdTlv() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BfdTlv == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Bfd) GetBfdTlv() bool {
	if t == nil || t.BfdTlv == nil {
		return false
	}
	return *t.BfdTlv
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Bfd
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Bfd) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Bfd) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Bfd"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Bfd) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Bfd) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Bfd.
func (*NetworkInstance_Protocol_Isis_Interface_Bfd) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_CircuitCounters represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/circuit-counters YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_CircuitCounters struct {
	ΛMetadata                 []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AdjChanges                *uint32           `path:"state/adj-changes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdjChanges               []ygot.Annotation `path:"state/@adj-changes" ygotAnnotation:"true"`
	AdjNumber                 *uint32           `path:"state/adj-number" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdjNumber                []ygot.Annotation `path:"state/@adj-number" ygotAnnotation:"true"`
	AuthFails                 *uint32           `path:"state/auth-fails" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthFails                []ygot.Annotation `path:"state/@auth-fails" ygotAnnotation:"true"`
	AuthTypeFails             *uint32           `path:"state/auth-type-fails" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthTypeFails            []ygot.Annotation `path:"state/@auth-type-fails" ygotAnnotation:"true"`
	IdFieldLenMismatches      *uint32           `path:"state/id-field-len-mismatches" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIdFieldLenMismatches     []ygot.Annotation `path:"state/@id-field-len-mismatches" ygotAnnotation:"true"`
	InitFails                 *uint32           `path:"state/init-fails" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInitFails                []ygot.Annotation `path:"state/@init-fails" ygotAnnotation:"true"`
	LanDisChanges             *uint32           `path:"state/lan-dis-changes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLanDisChanges            []ygot.Annotation `path:"state/@lan-dis-changes" ygotAnnotation:"true"`
	MaxAreaAddressMismatches  *uint32           `path:"state/max-area-address-mismatches" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxAreaAddressMismatches []ygot.Annotation `path:"state/@max-area-address-mismatches" ygotAnnotation:"true"`
	RejectedAdj               *uint32           `path:"state/rejected-adj" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRejectedAdj              []ygot.Annotation `path:"state/@rejected-adj" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_CircuitCounters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_CircuitCounters) IsYANGGoStruct() {}

// GetAdjChanges retrieves the value of the leaf AdjChanges from the NetworkInstance_Protocol_Isis_Interface_CircuitCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdjChanges is set, it can
// safely use t.GetAdjChanges() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdjChanges == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_CircuitCounters) GetAdjChanges() uint32 {
	if t == nil || t.AdjChanges == nil {
		return 0
	}
	return *t.AdjChanges
}

// GetAdjNumber retrieves the value of the leaf AdjNumber from the NetworkInstance_Protocol_Isis_Interface_CircuitCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdjNumber is set, it can
// safely use t.GetAdjNumber() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdjNumber == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_CircuitCounters) GetAdjNumber() uint32 {
	if t == nil || t.AdjNumber == nil {
		return 0
	}
	return *t.AdjNumber
}

// GetAuthFails retrieves the value of the leaf AuthFails from the NetworkInstance_Protocol_Isis_Interface_CircuitCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthFails is set, it can
// safely use t.GetAuthFails() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthFails == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_CircuitCounters) GetAuthFails() uint32 {
	if t == nil || t.AuthFails == nil {
		return 0
	}
	return *t.AuthFails
}

// GetAuthTypeFails retrieves the value of the leaf AuthTypeFails from the NetworkInstance_Protocol_Isis_Interface_CircuitCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthTypeFails is set, it can
// safely use t.GetAuthTypeFails() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthTypeFails == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_CircuitCounters) GetAuthTypeFails() uint32 {
	if t == nil || t.AuthTypeFails == nil {
		return 0
	}
	return *t.AuthTypeFails
}

// GetIdFieldLenMismatches retrieves the value of the leaf IdFieldLenMismatches from the NetworkInstance_Protocol_Isis_Interface_CircuitCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IdFieldLenMismatches is set, it can
// safely use t.GetIdFieldLenMismatches() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IdFieldLenMismatches == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_CircuitCounters) GetIdFieldLenMismatches() uint32 {
	if t == nil || t.IdFieldLenMismatches == nil {
		return 0
	}
	return *t.IdFieldLenMismatches
}

// GetInitFails retrieves the value of the leaf InitFails from the NetworkInstance_Protocol_Isis_Interface_CircuitCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InitFails is set, it can
// safely use t.GetInitFails() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InitFails == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_CircuitCounters) GetInitFails() uint32 {
	if t == nil || t.InitFails == nil {
		return 0
	}
	return *t.InitFails
}

// GetLanDisChanges retrieves the value of the leaf LanDisChanges from the NetworkInstance_Protocol_Isis_Interface_CircuitCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LanDisChanges is set, it can
// safely use t.GetLanDisChanges() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LanDisChanges == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_CircuitCounters) GetLanDisChanges() uint32 {
	if t == nil || t.LanDisChanges == nil {
		return 0
	}
	return *t.LanDisChanges
}

// GetMaxAreaAddressMismatches retrieves the value of the leaf MaxAreaAddressMismatches from the NetworkInstance_Protocol_Isis_Interface_CircuitCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxAreaAddressMismatches is set, it can
// safely use t.GetMaxAreaAddressMismatches() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxAreaAddressMismatches == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_CircuitCounters) GetMaxAreaAddressMismatches() uint32 {
	if t == nil || t.MaxAreaAddressMismatches == nil {
		return 0
	}
	return *t.MaxAreaAddressMismatches
}

// GetRejectedAdj retrieves the value of the leaf RejectedAdj from the NetworkInstance_Protocol_Isis_Interface_CircuitCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RejectedAdj is set, it can
// safely use t.GetRejectedAdj() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RejectedAdj == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_CircuitCounters) GetRejectedAdj() uint32 {
	if t == nil || t.RejectedAdj == nil {
		return 0
	}
	return *t.RejectedAdj
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_CircuitCounters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_CircuitCounters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_CircuitCounters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_CircuitCounters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_CircuitCounters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_CircuitCounters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_CircuitCounters.
func (*NetworkInstance_Protocol_Isis_Interface_CircuitCounters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_EnableBfd represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/enable-bfd YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_EnableBfd struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_EnableBfd implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_EnableBfd) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Interface_EnableBfd
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_EnableBfd) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_EnableBfd
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_EnableBfd) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_EnableBfd) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_EnableBfd"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_EnableBfd) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_EnableBfd) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_EnableBfd.
func (*NetworkInstance_Protocol_Isis_Interface_EnableBfd) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_GracefulRestart represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/graceful-restart YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_GracefulRestart struct {
	ΛMetadata                 []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	InterfaceTimeExpirations  *int64            `path:"config/interface-time-expirations" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterfaceTimeExpirations []ygot.Annotation `path:"config/@interface-time-expirations" ygotAnnotation:"true"`
	InterfaceTimer            *uint16           `path:"config/interface-timer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterfaceTimer           []ygot.Annotation `path:"config/@interface-timer" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_GracefulRestart implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_GracefulRestart) IsYANGGoStruct() {}

// GetInterfaceTimeExpirations retrieves the value of the leaf InterfaceTimeExpirations from the NetworkInstance_Protocol_Isis_Interface_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceTimeExpirations is set, it can
// safely use t.GetInterfaceTimeExpirations() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceTimeExpirations == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_GracefulRestart) GetInterfaceTimeExpirations() int64 {
	if t == nil || t.InterfaceTimeExpirations == nil {
		return 0
	}
	return *t.InterfaceTimeExpirations
}

// GetInterfaceTimer retrieves the value of the leaf InterfaceTimer from the NetworkInstance_Protocol_Isis_Interface_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceTimer is set, it can
// safely use t.GetInterfaceTimer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceTimer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_GracefulRestart) GetInterfaceTimer() uint16 {
	if t == nil || t.InterfaceTimer == nil {
		return 0
	}
	return *t.InterfaceTimer
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_GracefulRestart
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_GracefulRestart) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_GracefulRestart) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_GracefulRestart"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_GracefulRestart) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_GracefulRestart) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_GracefulRestart.
func (*NetworkInstance_Protocol_Isis_Interface_GracefulRestart) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_InterfaceRef represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/interface-ref YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Protocol_Isis_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Protocol_Isis_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_InterfaceRef.
func (*NetworkInstance_Protocol_Isis_Interface_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Level represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Level struct {
	ΛMetadata            []ygot.Annotation                                                                                          `path:"@" ygotAnnotation:"true"`
	Adjacency            map[string]*NetworkInstance_Protocol_Isis_Interface_Level_Adjacency                                        `path:"adjacencies/adjacency" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdjacency           []ygot.Annotation                                                                                          `path:"adjacencies/@adjacency" ygotAnnotation:"true"`
	Af                   map[NetworkInstance_Protocol_Isis_Interface_Level_Af_Key]*NetworkInstance_Protocol_Isis_Interface_Level_Af `path:"afi-safi/af" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAf                  []ygot.Annotation                                                                                          `path:"afi-safi/@af" ygotAnnotation:"true"`
	Enabled              *bool                                                                                                      `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled             []ygot.Annotation                                                                                          `path:"config/@enabled" ygotAnnotation:"true"`
	HelloAuthentication  *NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication                                         `path:"hello-authentication" module:"openconfig-network-instance"`
	ΛHelloAuthentication []ygot.Annotation                                                                                          `path:"@hello-authentication" ygotAnnotation:"true"`
	LevelNumber          *uint8                                                                                                     `path:"config/level-number|level-number" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛLevelNumber         []ygot.Annotation                                                                                          `path:"config/@level-number|@level-number" ygotAnnotation:"true"`
	PacketCounters       *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters                                              `path:"packet-counters" module:"openconfig-network-instance"`
	ΛPacketCounters      []ygot.Annotation                                                                                          `path:"@packet-counters" ygotAnnotation:"true"`
	Passive              *bool                                                                                                      `path:"config/passive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPassive             []ygot.Annotation                                                                                          `path:"config/@passive" ygotAnnotation:"true"`
	Priority             *uint8                                                                                                     `path:"config/priority" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPriority            []ygot.Annotation                                                                                          `path:"config/@priority" ygotAnnotation:"true"`
	Timers               *NetworkInstance_Protocol_Isis_Interface_Level_Timers                                                      `path:"timers" module:"openconfig-network-instance"`
	ΛTimers              []ygot.Annotation                                                                                          `path:"@timers" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Level) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Isis_Interface_Level_Af_Key represents the key for list Af of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level.
type NetworkInstance_Protocol_Isis_Interface_Level_Af_Key struct {
	AfiName  E_IsisTypes_AFI_TYPE  `path:"afi-name"`
	SafiName E_IsisTypes_SAFI_TYPE `path:"safi-name"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_Af_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Isis_Interface_Level_Af_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Isis_Interface_Level_Af_Key key struct.
func (t NetworkInstance_Protocol_Isis_Interface_Level_Af_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"afi-name":  t.AfiName,
		"safi-name": t.SafiName,
	}, nil
}

// NewAdjacency creates a new entry in the Adjacency list of the
// NetworkInstance_Protocol_Isis_Interface_Level struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) NewAdjacency(SystemId string) (*NetworkInstance_Protocol_Isis_Interface_Level_Adjacency, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Adjacency == nil {
		t.Adjacency = make(map[string]*NetworkInstance_Protocol_Isis_Interface_Level_Adjacency)
	}

	key := SystemId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Adjacency[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Adjacency", key)
	}

	t.Adjacency[key] = &NetworkInstance_Protocol_Isis_Interface_Level_Adjacency{
		SystemId: &SystemId,
	}

	return t.Adjacency[key], nil
}

// RenameAdjacency renames an entry in the list Adjacency within
// the NetworkInstance_Protocol_Isis_Interface_Level struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) RenameAdjacency(oldK, newK string) error {
	if _, ok := t.Adjacency[newK]; ok {
		return fmt.Errorf("key %v already exists in Adjacency", newK)
	}

	e, ok := t.Adjacency[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Adjacency", oldK)
	}
	e.SystemId = &newK

	t.Adjacency[newK] = e
	delete(t.Adjacency, oldK)
	return nil
}

// GetOrCreateAdjacencyMap returns the list (map) from NetworkInstance_Protocol_Isis_Interface_Level.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) GetOrCreateAdjacencyMap() map[string]*NetworkInstance_Protocol_Isis_Interface_Level_Adjacency {
	if t.Adjacency == nil {
		t.Adjacency = make(map[string]*NetworkInstance_Protocol_Isis_Interface_Level_Adjacency)
	}
	return t.Adjacency
}

// GetOrCreateAdjacency retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Interface_Level. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) GetOrCreateAdjacency(SystemId string) *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency {

	key := SystemId

	if v, ok := t.Adjacency[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAdjacency(SystemId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAdjacency got unexpected error: %v", err))
	}
	return v
}

// GetAdjacency retrieves the value with the specified key from
// the Adjacency map field of NetworkInstance_Protocol_Isis_Interface_Level. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) GetAdjacency(SystemId string) *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency {

	if t == nil {
		return nil
	}

	key := SystemId

	if lm, ok := t.Adjacency[key]; ok {
		return lm
	}
	return nil
}

// AppendAdjacency appends the supplied NetworkInstance_Protocol_Isis_Interface_Level_Adjacency struct to the
// list Adjacency of NetworkInstance_Protocol_Isis_Interface_Level. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Interface_Level_Adjacency already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) AppendAdjacency(v *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) error {
	if v.SystemId == nil {
		return fmt.Errorf("invalid nil key received for SystemId")
	}

	key := *v.SystemId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Adjacency == nil {
		t.Adjacency = make(map[string]*NetworkInstance_Protocol_Isis_Interface_Level_Adjacency)
	}

	if _, ok := t.Adjacency[key]; ok {
		return fmt.Errorf("duplicate key for list Adjacency %v", key)
	}

	t.Adjacency[key] = v
	return nil
}

// NewAf creates a new entry in the Af list of the
// NetworkInstance_Protocol_Isis_Interface_Level struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) NewAf(AfiName E_IsisTypes_AFI_TYPE, SafiName E_IsisTypes_SAFI_TYPE) (*NetworkInstance_Protocol_Isis_Interface_Level_Af, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Af == nil {
		t.Af = make(map[NetworkInstance_Protocol_Isis_Interface_Level_Af_Key]*NetworkInstance_Protocol_Isis_Interface_Level_Af)
	}

	key := NetworkInstance_Protocol_Isis_Interface_Level_Af_Key{
		AfiName:  AfiName,
		SafiName: SafiName,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Af[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Af", key)
	}

	t.Af[key] = &NetworkInstance_Protocol_Isis_Interface_Level_Af{
		AfiName:  AfiName,
		SafiName: SafiName,
	}

	return t.Af[key], nil
}

// RenameAf renames an entry in the list Af within
// the NetworkInstance_Protocol_Isis_Interface_Level struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) RenameAf(oldK, newK NetworkInstance_Protocol_Isis_Interface_Level_Af_Key) error {
	if _, ok := t.Af[newK]; ok {
		return fmt.Errorf("key %v already exists in Af", newK)
	}

	e, ok := t.Af[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Af", oldK)
	}
	e.AfiName = newK.AfiName
	e.SafiName = newK.SafiName

	t.Af[newK] = e
	delete(t.Af, oldK)
	return nil
}

// GetOrCreateAfMap returns the list (map) from NetworkInstance_Protocol_Isis_Interface_Level.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) GetOrCreateAfMap() map[NetworkInstance_Protocol_Isis_Interface_Level_Af_Key]*NetworkInstance_Protocol_Isis_Interface_Level_Af {
	if t.Af == nil {
		t.Af = make(map[NetworkInstance_Protocol_Isis_Interface_Level_Af_Key]*NetworkInstance_Protocol_Isis_Interface_Level_Af)
	}
	return t.Af
}

// GetOrCreateAf retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Interface_Level. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) GetOrCreateAf(AfiName E_IsisTypes_AFI_TYPE, SafiName E_IsisTypes_SAFI_TYPE) *NetworkInstance_Protocol_Isis_Interface_Level_Af {

	key := NetworkInstance_Protocol_Isis_Interface_Level_Af_Key{
		AfiName:  AfiName,
		SafiName: SafiName,
	}

	if v, ok := t.Af[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAf(AfiName, SafiName)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAf got unexpected error: %v", err))
	}
	return v
}

// GetAf retrieves the value with the specified key from
// the Af map field of NetworkInstance_Protocol_Isis_Interface_Level. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) GetAf(AfiName E_IsisTypes_AFI_TYPE, SafiName E_IsisTypes_SAFI_TYPE) *NetworkInstance_Protocol_Isis_Interface_Level_Af {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Isis_Interface_Level_Af_Key{
		AfiName:  AfiName,
		SafiName: SafiName,
	}

	if lm, ok := t.Af[key]; ok {
		return lm
	}
	return nil
}

// AppendAf appends the supplied NetworkInstance_Protocol_Isis_Interface_Level_Af struct to the
// list Af of NetworkInstance_Protocol_Isis_Interface_Level. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Interface_Level_Af already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) AppendAf(v *NetworkInstance_Protocol_Isis_Interface_Level_Af) error {
	key := NetworkInstance_Protocol_Isis_Interface_Level_Af_Key{
		AfiName:  v.AfiName,
		SafiName: v.SafiName,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Af == nil {
		t.Af = make(map[NetworkInstance_Protocol_Isis_Interface_Level_Af_Key]*NetworkInstance_Protocol_Isis_Interface_Level_Af)
	}

	if _, ok := t.Af[key]; ok {
		return fmt.Errorf("duplicate key for list Af %v", key)
	}

	t.Af[key] = v
	return nil
}

// GetOrCreateHelloAuthentication retrieves the value of the HelloAuthentication field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) GetOrCreateHelloAuthentication() *NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication {
	if t.HelloAuthentication != nil {
		return t.HelloAuthentication
	}
	t.HelloAuthentication = &NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication{}
	return t.HelloAuthentication
}

// GetOrCreatePacketCounters retrieves the value of the PacketCounters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) GetOrCreatePacketCounters() *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters {
	if t.PacketCounters != nil {
		return t.PacketCounters
	}
	t.PacketCounters = &NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters{}
	return t.PacketCounters
}

// GetOrCreateTimers retrieves the value of the Timers field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) GetOrCreateTimers() *NetworkInstance_Protocol_Isis_Interface_Level_Timers {
	if t.Timers != nil {
		return t.Timers
	}
	t.Timers = &NetworkInstance_Protocol_Isis_Interface_Level_Timers{}
	return t.Timers
}

// GetHelloAuthentication returns the value of the HelloAuthentication struct pointer
// from NetworkInstance_Protocol_Isis_Interface_Level. If the receiver or the field HelloAuthentication is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) GetHelloAuthentication() *NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication {
	if t != nil && t.HelloAuthentication != nil {
		return t.HelloAuthentication
	}
	return nil
}

// GetPacketCounters returns the value of the PacketCounters struct pointer
// from NetworkInstance_Protocol_Isis_Interface_Level. If the receiver or the field PacketCounters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) GetPacketCounters() *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters {
	if t != nil && t.PacketCounters != nil {
		return t.PacketCounters
	}
	return nil
}

// GetTimers returns the value of the Timers struct pointer
// from NetworkInstance_Protocol_Isis_Interface_Level. If the receiver or the field Timers is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) GetTimers() *NetworkInstance_Protocol_Isis_Interface_Level_Timers {
	if t != nil && t.Timers != nil {
		return t.Timers
	}
	return nil
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Interface_Level
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetLevelNumber retrieves the value of the leaf LevelNumber from the NetworkInstance_Protocol_Isis_Interface_Level
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LevelNumber is set, it can
// safely use t.GetLevelNumber() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LevelNumber == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) GetLevelNumber() uint8 {
	if t == nil || t.LevelNumber == nil {
		return 0
	}
	return *t.LevelNumber
}

// GetPassive retrieves the value of the leaf Passive from the NetworkInstance_Protocol_Isis_Interface_Level
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Passive is set, it can
// safely use t.GetPassive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Passive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) GetPassive() bool {
	if t == nil || t.Passive == nil {
		return false
	}
	return *t.Passive
}

// GetPriority retrieves the value of the leaf Priority from the NetworkInstance_Protocol_Isis_Interface_Level
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) GetPriority() uint8 {
	if t == nil || t.Priority == nil {
		return 0
	}
	return *t.Priority
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Level
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	if t.Passive == nil {
		var v bool = false
		t.Passive = &v
	}
	t.HelloAuthentication.PopulateDefaults()
	t.PacketCounters.PopulateDefaults()
	t.Timers.PopulateDefaults()
	for _, e := range t.Adjacency {
		e.PopulateDefaults()
	}
	for _, e := range t.Af {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Interface_Level struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) ΛListKeyMap() (map[string]interface{}, error) {
	if t.LevelNumber == nil {
		return nil, fmt.Errorf("nil value for key LevelNumber")
	}

	return map[string]interface{}{
		"level-number": *t.LevelNumber,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Level"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Level) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Level.
func (*NetworkInstance_Protocol_Isis_Interface_Level) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Level_Adjacency represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/adjacencies/adjacency YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Level_Adjacency struct {
	ΛMetadata                  []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	AdjacencyState             E_IsisTypes_IsisInterfaceAdjState `path:"state/adjacency-state" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdjacencyState            []ygot.Annotation                 `path:"state/@adjacency-state" ygotAnnotation:"true"`
	AdjacencyType              E_IsisTypes_LevelType             `path:"state/adjacency-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdjacencyType             []ygot.Annotation                 `path:"state/@adjacency-type" ygotAnnotation:"true"`
	AreaAddress                []string                          `path:"state/area-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAreaAddress               []ygot.Annotation                 `path:"state/@area-address" ygotAnnotation:"true"`
	DisSystemId                *string                           `path:"state/dis-system-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDisSystemId               []ygot.Annotation                 `path:"state/@dis-system-id" ygotAnnotation:"true"`
	LocalExtendedCircuitId     *uint32                           `path:"state/local-extended-circuit-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalExtendedCircuitId    []ygot.Annotation                 `path:"state/@local-extended-circuit-id" ygotAnnotation:"true"`
	MultiTopology              *bool                             `path:"state/multi-topology" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMultiTopology             []ygot.Annotation                 `path:"state/@multi-topology" ygotAnnotation:"true"`
	NeighborCircuitType        E_IsisTypes_LevelType             `path:"state/neighbor-circuit-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighborCircuitType       []ygot.Annotation                 `path:"state/@neighbor-circuit-type" ygotAnnotation:"true"`
	NeighborExtendedCircuitId  *uint32                           `path:"state/neighbor-extended-circuit-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighborExtendedCircuitId []ygot.Annotation                 `path:"state/@neighbor-extended-circuit-id" ygotAnnotation:"true"`
	NeighborIpv4Address        *string                           `path:"state/neighbor-ipv4-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighborIpv4Address       []ygot.Annotation                 `path:"state/@neighbor-ipv4-address" ygotAnnotation:"true"`
	NeighborIpv6Address        *string                           `path:"state/neighbor-ipv6-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighborIpv6Address       []ygot.Annotation                 `path:"state/@neighbor-ipv6-address" ygotAnnotation:"true"`
	NeighborSnpa               *string                           `path:"state/neighbor-snpa" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighborSnpa              []ygot.Annotation                 `path:"state/@neighbor-snpa" ygotAnnotation:"true"`
	Nlpid                      []E_Adjacency_Nlpid               `path:"state/nlpid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNlpid                     []ygot.Annotation                 `path:"state/@nlpid" ygotAnnotation:"true"`
	Priority                   *uint8                            `path:"state/priority" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPriority                  []ygot.Annotation                 `path:"state/@priority" ygotAnnotation:"true"`
	RestartStatus              *bool                             `path:"state/restart-status" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRestartStatus             []ygot.Annotation                 `path:"state/@restart-status" ygotAnnotation:"true"`
	RestartSupport             *bool                             `path:"state/restart-support" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRestartSupport            []ygot.Annotation                 `path:"state/@restart-support" ygotAnnotation:"true"`
	RestartSuppress            *bool                             `path:"state/restart-suppress" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRestartSuppress           []ygot.Annotation                 `path:"state/@restart-suppress" ygotAnnotation:"true"`
	SystemId                   *string                           `path:"state/system-id|system-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSystemId                  []ygot.Annotation                 `path:"state/@system-id|@system-id" ygotAnnotation:"true"`
	Topology                   []E_IsisTypes_AFI_SAFI_TYPE       `path:"state/topology" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTopology                  []ygot.Annotation                 `path:"state/@topology" ygotAnnotation:"true"`
	UpTimestamp                *uint64                           `path:"state/up-timestamp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUpTimestamp               []ygot.Annotation                 `path:"state/@up-timestamp" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_Adjacency implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) IsYANGGoStruct() {}

// GetAdjacencyState retrieves the value of the leaf AdjacencyState from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdjacencyState is set, it can
// safely use t.GetAdjacencyState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdjacencyState == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetAdjacencyState() E_IsisTypes_IsisInterfaceAdjState {
	if t == nil || t.AdjacencyState == 0 {
		return 0
	}
	return t.AdjacencyState
}

// GetAdjacencyType retrieves the value of the leaf AdjacencyType from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdjacencyType is set, it can
// safely use t.GetAdjacencyType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdjacencyType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetAdjacencyType() E_IsisTypes_LevelType {
	if t == nil || t.AdjacencyType == 0 {
		return 0
	}
	return t.AdjacencyType
}

// GetAreaAddress retrieves the value of the leaf AreaAddress from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AreaAddress is set, it can
// safely use t.GetAreaAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AreaAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetAreaAddress() []string {
	if t == nil || t.AreaAddress == nil {
		return nil
	}
	return t.AreaAddress
}

// GetDisSystemId retrieves the value of the leaf DisSystemId from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DisSystemId is set, it can
// safely use t.GetDisSystemId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DisSystemId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetDisSystemId() string {
	if t == nil || t.DisSystemId == nil {
		return ""
	}
	return *t.DisSystemId
}

// GetLocalExtendedCircuitId retrieves the value of the leaf LocalExtendedCircuitId from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalExtendedCircuitId is set, it can
// safely use t.GetLocalExtendedCircuitId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalExtendedCircuitId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetLocalExtendedCircuitId() uint32 {
	if t == nil || t.LocalExtendedCircuitId == nil {
		return 0
	}
	return *t.LocalExtendedCircuitId
}

// GetMultiTopology retrieves the value of the leaf MultiTopology from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MultiTopology is set, it can
// safely use t.GetMultiTopology() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MultiTopology == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetMultiTopology() bool {
	if t == nil || t.MultiTopology == nil {
		return false
	}
	return *t.MultiTopology
}

// GetNeighborCircuitType retrieves the value of the leaf NeighborCircuitType from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborCircuitType is set, it can
// safely use t.GetNeighborCircuitType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborCircuitType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetNeighborCircuitType() E_IsisTypes_LevelType {
	if t == nil || t.NeighborCircuitType == 0 {
		return 0
	}
	return t.NeighborCircuitType
}

// GetNeighborExtendedCircuitId retrieves the value of the leaf NeighborExtendedCircuitId from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborExtendedCircuitId is set, it can
// safely use t.GetNeighborExtendedCircuitId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborExtendedCircuitId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetNeighborExtendedCircuitId() uint32 {
	if t == nil || t.NeighborExtendedCircuitId == nil {
		return 0
	}
	return *t.NeighborExtendedCircuitId
}

// GetNeighborIpv4Address retrieves the value of the leaf NeighborIpv4Address from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborIpv4Address is set, it can
// safely use t.GetNeighborIpv4Address() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborIpv4Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetNeighborIpv4Address() string {
	if t == nil || t.NeighborIpv4Address == nil {
		return ""
	}
	return *t.NeighborIpv4Address
}

// GetNeighborIpv6Address retrieves the value of the leaf NeighborIpv6Address from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborIpv6Address is set, it can
// safely use t.GetNeighborIpv6Address() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborIpv6Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetNeighborIpv6Address() string {
	if t == nil || t.NeighborIpv6Address == nil {
		return ""
	}
	return *t.NeighborIpv6Address
}

// GetNeighborSnpa retrieves the value of the leaf NeighborSnpa from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborSnpa is set, it can
// safely use t.GetNeighborSnpa() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborSnpa == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetNeighborSnpa() string {
	if t == nil || t.NeighborSnpa == nil {
		return ""
	}
	return *t.NeighborSnpa
}

// GetNlpid retrieves the value of the leaf Nlpid from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Nlpid is set, it can
// safely use t.GetNlpid() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Nlpid == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetNlpid() []E_Adjacency_Nlpid {
	if t == nil || t.Nlpid == nil {
		return nil
	}
	return t.Nlpid
}

// GetPriority retrieves the value of the leaf Priority from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetPriority() uint8 {
	if t == nil || t.Priority == nil {
		return 0
	}
	return *t.Priority
}

// GetRestartStatus retrieves the value of the leaf RestartStatus from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RestartStatus is set, it can
// safely use t.GetRestartStatus() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RestartStatus == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetRestartStatus() bool {
	if t == nil || t.RestartStatus == nil {
		return false
	}
	return *t.RestartStatus
}

// GetRestartSupport retrieves the value of the leaf RestartSupport from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RestartSupport is set, it can
// safely use t.GetRestartSupport() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RestartSupport == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetRestartSupport() bool {
	if t == nil || t.RestartSupport == nil {
		return false
	}
	return *t.RestartSupport
}

// GetRestartSuppress retrieves the value of the leaf RestartSuppress from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RestartSuppress is set, it can
// safely use t.GetRestartSuppress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RestartSuppress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetRestartSuppress() bool {
	if t == nil || t.RestartSuppress == nil {
		return false
	}
	return *t.RestartSuppress
}

// GetSystemId retrieves the value of the leaf SystemId from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemId is set, it can
// safely use t.GetSystemId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetSystemId() string {
	if t == nil || t.SystemId == nil {
		return ""
	}
	return *t.SystemId
}

// GetTopology retrieves the value of the leaf Topology from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Topology is set, it can
// safely use t.GetTopology() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Topology == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetTopology() []E_IsisTypes_AFI_SAFI_TYPE {
	if t == nil || t.Topology == nil {
		return nil
	}
	return t.Topology
}

// GetUpTimestamp retrieves the value of the leaf UpTimestamp from the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UpTimestamp is set, it can
// safely use t.GetUpTimestamp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UpTimestamp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) GetUpTimestamp() uint64 {
	if t == nil || t.UpTimestamp == nil {
		return 0
	}
	return *t.UpTimestamp
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Interface_Level_Adjacency struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) ΛListKeyMap() (map[string]interface{}, error) {
	if t.SystemId == nil {
		return nil, fmt.Errorf("nil value for key SystemId")
	}

	return map[string]interface{}{
		"system-id": *t.SystemId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Level_Adjacency"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Level_Adjacency.
func (*NetworkInstance_Protocol_Isis_Interface_Level_Adjacency) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Level_Af represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Level_Af struct {
	ΛMetadata       []ygot.Annotation                                                `path:"@" ygotAnnotation:"true"`
	AfiName         E_IsisTypes_AFI_TYPE                                             `path:"config/afi-name|afi-name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAfiName        []ygot.Annotation                                                `path:"config/@afi-name|@afi-name" ygotAnnotation:"true"`
	Enabled         *bool                                                            `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled        []ygot.Annotation                                                `path:"config/@enabled" ygotAnnotation:"true"`
	Metric          *uint32                                                          `path:"config/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric         []ygot.Annotation                                                `path:"config/@metric" ygotAnnotation:"true"`
	SafiName        E_IsisTypes_SAFI_TYPE                                            `path:"config/safi-name|safi-name" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSafiName       []ygot.Annotation                                                `path:"config/@safi-name|@safi-name" ygotAnnotation:"true"`
	SegmentRouting  *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting `path:"segment-routing" module:"openconfig-network-instance"`
	ΛSegmentRouting []ygot.Annotation                                                `path:"@segment-routing" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_Af implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Level_Af) IsYANGGoStruct() {}

// GetOrCreateSegmentRouting retrieves the value of the SegmentRouting field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af) GetOrCreateSegmentRouting() *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting {
	if t.SegmentRouting != nil {
		return t.SegmentRouting
	}
	t.SegmentRouting = &NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting{}
	return t.SegmentRouting
}

// GetSegmentRouting returns the value of the SegmentRouting struct pointer
// from NetworkInstance_Protocol_Isis_Interface_Level_Af. If the receiver or the field SegmentRouting is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af) GetSegmentRouting() *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting {
	if t != nil && t.SegmentRouting != nil {
		return t.SegmentRouting
	}
	return nil
}

// GetAfiName retrieves the value of the leaf AfiName from the NetworkInstance_Protocol_Isis_Interface_Level_Af
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AfiName is set, it can
// safely use t.GetAfiName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AfiName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af) GetAfiName() E_IsisTypes_AFI_TYPE {
	if t == nil || t.AfiName == 0 {
		return 0
	}
	return t.AfiName
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Interface_Level_Af
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Interface_Level_Af
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 10
	}
	return *t.Metric
}

// GetSafiName retrieves the value of the leaf SafiName from the NetworkInstance_Protocol_Isis_Interface_Level_Af
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SafiName is set, it can
// safely use t.GetSafiName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SafiName == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af) GetSafiName() E_IsisTypes_SAFI_TYPE {
	if t == nil || t.SafiName == 0 {
		return 0
	}
	return t.SafiName
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Level_Af
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Metric == nil {
		var v uint32 = 10
		t.Metric = &v
	}
	t.SegmentRouting.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Interface_Level_Af struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"afi-name":  t.AfiName,
		"safi-name": t.SafiName,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Level_Af"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Level_Af.
func (*NetworkInstance_Protocol_Isis_Interface_Level_Af) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting struct {
	ΛMetadata          []ygot.Annotation                                                                                                                                                            `path:"@" ygotAnnotation:"true"`
	AdjacencySid       map[NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_Key]*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid           `path:"adjacency-sids/adjacency-sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdjacencySid      []ygot.Annotation                                                                                                                                                            `path:"adjacency-sids/@adjacency-sid" ygotAnnotation:"true"`
	FlexAlgoPrefixSid  map[NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_Key]*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid `path:"flex-algo-prefix-sids/flex-algo-prefix-sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlexAlgoPrefixSid []ygot.Annotation                                                                                                                                                            `path:"flex-algo-prefix-sids/@flex-algo-prefix-sid" ygotAnnotation:"true"`
	PrefixSid          map[string]*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid                                                                                        `path:"prefix-sids/prefix-sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixSid         []ygot.Annotation                                                                                                                                                            `path:"prefix-sids/@prefix-sid" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_Key represents the key for list AdjacencySid of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing.
type NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_Key struct {
	Neighbor string                                                                                   `path:"neighbor"`
	SidId    NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union `path:"sid-id"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_Key key struct.
func (t NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"neighbor": t.Neighbor,
		"sid-id":   t.SidId,
	}, nil
}

// NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_Key represents the key for list FlexAlgoPrefixSid of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing.
type NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_Key struct {
	Prefix     string `path:"prefix"`
	FlexAlgoId uint8  `path:"flex-algo-id"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_Key key struct.
func (t NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"prefix":       t.Prefix,
		"flex-algo-id": t.FlexAlgoId,
	}, nil
}

// NewAdjacencySid creates a new entry in the AdjacencySid list of the
// NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) NewAdjacencySid(Neighbor string, SidId NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union) (*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AdjacencySid == nil {
		t.AdjacencySid = make(map[NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_Key]*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid)
	}

	key := NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_Key{
		Neighbor: Neighbor,
		SidId:    SidId,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AdjacencySid[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AdjacencySid", key)
	}

	t.AdjacencySid[key] = &NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid{
		Neighbor: &Neighbor,
		SidId:    SidId,
	}

	return t.AdjacencySid[key], nil
}

// RenameAdjacencySid renames an entry in the list AdjacencySid within
// the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) RenameAdjacencySid(oldK, newK NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_Key) error {
	if _, ok := t.AdjacencySid[newK]; ok {
		return fmt.Errorf("key %v already exists in AdjacencySid", newK)
	}

	e, ok := t.AdjacencySid[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AdjacencySid", oldK)
	}
	e.Neighbor = &newK.Neighbor
	e.SidId = newK.SidId

	t.AdjacencySid[newK] = e
	delete(t.AdjacencySid, oldK)
	return nil
}

// GetOrCreateAdjacencySidMap returns the list (map) from NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) GetOrCreateAdjacencySidMap() map[NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_Key]*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid {
	if t.AdjacencySid == nil {
		t.AdjacencySid = make(map[NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_Key]*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid)
	}
	return t.AdjacencySid
}

// GetOrCreateAdjacencySid retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) GetOrCreateAdjacencySid(Neighbor string, SidId NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union) *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid {

	key := NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_Key{
		Neighbor: Neighbor,
		SidId:    SidId,
	}

	if v, ok := t.AdjacencySid[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAdjacencySid(Neighbor, SidId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAdjacencySid got unexpected error: %v", err))
	}
	return v
}

// GetAdjacencySid retrieves the value with the specified key from
// the AdjacencySid map field of NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) GetAdjacencySid(Neighbor string, SidId NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union) *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_Key{
		Neighbor: Neighbor,
		SidId:    SidId,
	}

	if lm, ok := t.AdjacencySid[key]; ok {
		return lm
	}
	return nil
}

// AppendAdjacencySid appends the supplied NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid struct to the
// list AdjacencySid of NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) AppendAdjacencySid(v *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid) error {
	if v.Neighbor == nil {
		return fmt.Errorf("invalid nil key for Neighbor")
	}

	key := NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_Key{
		Neighbor: *v.Neighbor,
		SidId:    v.SidId,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AdjacencySid == nil {
		t.AdjacencySid = make(map[NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_Key]*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid)
	}

	if _, ok := t.AdjacencySid[key]; ok {
		return fmt.Errorf("duplicate key for list AdjacencySid %v", key)
	}

	t.AdjacencySid[key] = v
	return nil
}

// NewFlexAlgoPrefixSid creates a new entry in the FlexAlgoPrefixSid list of the
// NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) NewFlexAlgoPrefixSid(Prefix string, FlexAlgoId uint8) (*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.FlexAlgoPrefixSid == nil {
		t.FlexAlgoPrefixSid = make(map[NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_Key]*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid)
	}

	key := NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_Key{
		Prefix:     Prefix,
		FlexAlgoId: FlexAlgoId,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.FlexAlgoPrefixSid[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list FlexAlgoPrefixSid", key)
	}

	t.FlexAlgoPrefixSid[key] = &NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid{
		Prefix:     &Prefix,
		FlexAlgoId: &FlexAlgoId,
	}

	return t.FlexAlgoPrefixSid[key], nil
}

// RenameFlexAlgoPrefixSid renames an entry in the list FlexAlgoPrefixSid within
// the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) RenameFlexAlgoPrefixSid(oldK, newK NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_Key) error {
	if _, ok := t.FlexAlgoPrefixSid[newK]; ok {
		return fmt.Errorf("key %v already exists in FlexAlgoPrefixSid", newK)
	}

	e, ok := t.FlexAlgoPrefixSid[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in FlexAlgoPrefixSid", oldK)
	}
	e.Prefix = &newK.Prefix
	e.FlexAlgoId = &newK.FlexAlgoId

	t.FlexAlgoPrefixSid[newK] = e
	delete(t.FlexAlgoPrefixSid, oldK)
	return nil
}

// GetOrCreateFlexAlgoPrefixSidMap returns the list (map) from NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) GetOrCreateFlexAlgoPrefixSidMap() map[NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_Key]*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid {
	if t.FlexAlgoPrefixSid == nil {
		t.FlexAlgoPrefixSid = make(map[NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_Key]*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid)
	}
	return t.FlexAlgoPrefixSid
}

// GetOrCreateFlexAlgoPrefixSid retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) GetOrCreateFlexAlgoPrefixSid(Prefix string, FlexAlgoId uint8) *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid {

	key := NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_Key{
		Prefix:     Prefix,
		FlexAlgoId: FlexAlgoId,
	}

	if v, ok := t.FlexAlgoPrefixSid[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewFlexAlgoPrefixSid(Prefix, FlexAlgoId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateFlexAlgoPrefixSid got unexpected error: %v", err))
	}
	return v
}

// GetFlexAlgoPrefixSid retrieves the value with the specified key from
// the FlexAlgoPrefixSid map field of NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) GetFlexAlgoPrefixSid(Prefix string, FlexAlgoId uint8) *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_Key{
		Prefix:     Prefix,
		FlexAlgoId: FlexAlgoId,
	}

	if lm, ok := t.FlexAlgoPrefixSid[key]; ok {
		return lm
	}
	return nil
}

// AppendFlexAlgoPrefixSid appends the supplied NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid struct to the
// list FlexAlgoPrefixSid of NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) AppendFlexAlgoPrefixSid(v *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key for Prefix")
	}

	if v.FlexAlgoId == nil {
		return fmt.Errorf("invalid nil key for FlexAlgoId")
	}

	key := NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_Key{
		Prefix:     *v.Prefix,
		FlexAlgoId: *v.FlexAlgoId,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.FlexAlgoPrefixSid == nil {
		t.FlexAlgoPrefixSid = make(map[NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_Key]*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid)
	}

	if _, ok := t.FlexAlgoPrefixSid[key]; ok {
		return fmt.Errorf("duplicate key for list FlexAlgoPrefixSid %v", key)
	}

	t.FlexAlgoPrefixSid[key] = v
	return nil
}

// NewPrefixSid creates a new entry in the PrefixSid list of the
// NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) NewPrefixSid(Prefix string) (*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PrefixSid == nil {
		t.PrefixSid = make(map[string]*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid)
	}

	key := Prefix

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.PrefixSid[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list PrefixSid", key)
	}

	t.PrefixSid[key] = &NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid{
		Prefix: &Prefix,
	}

	return t.PrefixSid[key], nil
}

// RenamePrefixSid renames an entry in the list PrefixSid within
// the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) RenamePrefixSid(oldK, newK string) error {
	if _, ok := t.PrefixSid[newK]; ok {
		return fmt.Errorf("key %v already exists in PrefixSid", newK)
	}

	e, ok := t.PrefixSid[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in PrefixSid", oldK)
	}
	e.Prefix = &newK

	t.PrefixSid[newK] = e
	delete(t.PrefixSid, oldK)
	return nil
}

// GetOrCreatePrefixSidMap returns the list (map) from NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) GetOrCreatePrefixSidMap() map[string]*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid {
	if t.PrefixSid == nil {
		t.PrefixSid = make(map[string]*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid)
	}
	return t.PrefixSid
}

// GetOrCreatePrefixSid retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) GetOrCreatePrefixSid(Prefix string) *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid {

	key := Prefix

	if v, ok := t.PrefixSid[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPrefixSid(Prefix)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePrefixSid got unexpected error: %v", err))
	}
	return v
}

// GetPrefixSid retrieves the value with the specified key from
// the PrefixSid map field of NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) GetPrefixSid(Prefix string) *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid {

	if t == nil {
		return nil
	}

	key := Prefix

	if lm, ok := t.PrefixSid[key]; ok {
		return lm
	}
	return nil
}

// AppendPrefixSid appends the supplied NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid struct to the
// list PrefixSid of NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) AppendPrefixSid(v *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key received for Prefix")
	}

	key := *v.Prefix

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PrefixSid == nil {
		t.PrefixSid = make(map[string]*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid)
	}

	if _, ok := t.PrefixSid[key]; ok {
		return fmt.Errorf("duplicate key for list PrefixSid %v", key)
	}

	t.PrefixSid[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.AdjacencySid {
		e.PopulateDefaults()
	}
	for _, e := range t.FlexAlgoPrefixSid {
		e.PopulateDefaults()
	}
	for _, e := range t.PrefixSid {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting.
func (*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/adjacency-sids/adjacency-sid YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid struct {
	ΛMetadata              []ygot.Annotation                                                                                        `path:"@" ygotAnnotation:"true"`
	AllocatedDynamicLocal  NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union `path:"state/allocated-dynamic-local" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAllocatedDynamicLocal []ygot.Annotation                                                                                        `path:"state/@allocated-dynamic-local" ygotAnnotation:"true"`
	Group                  *bool                                                                                                    `path:"config/group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛGroup                 []ygot.Annotation                                                                                        `path:"config/@group" ygotAnnotation:"true"`
	Neighbor               *string                                                                                                  `path:"config/neighbor|neighbor" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛNeighbor              []ygot.Annotation                                                                                        `path:"config/@neighbor|@neighbor" ygotAnnotation:"true"`
	ProtectionEligible     *bool                                                                                                    `path:"config/protection-eligible" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProtectionEligible    []ygot.Annotation                                                                                        `path:"config/@protection-eligible" ygotAnnotation:"true"`
	SidId                  NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union                 `path:"config/sid-id|sid-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSidId                 []ygot.Annotation                                                                                        `path:"config/@sid-id|@sid-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid) IsYANGGoStruct() {
}

// GetAllocatedDynamicLocal retrieves the value of the leaf AllocatedDynamicLocal from the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AllocatedDynamicLocal is set, it can
// safely use t.GetAllocatedDynamicLocal() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AllocatedDynamicLocal == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid) GetAllocatedDynamicLocal() NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union {
	if t == nil || t.AllocatedDynamicLocal == nil {
		return nil
	}
	return t.AllocatedDynamicLocal
}

// GetGroup retrieves the value of the leaf Group from the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Group is set, it can
// safely use t.GetGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Group == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid) GetGroup() bool {
	if t == nil || t.Group == nil {
		return false
	}
	return *t.Group
}

// GetNeighbor retrieves the value of the leaf Neighbor from the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Neighbor is set, it can
// safely use t.GetNeighbor() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Neighbor == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid) GetNeighbor() string {
	if t == nil || t.Neighbor == nil {
		return ""
	}
	return *t.Neighbor
}

// GetProtectionEligible retrieves the value of the leaf ProtectionEligible from the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ProtectionEligible is set, it can
// safely use t.GetProtectionEligible() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ProtectionEligible == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid) GetProtectionEligible() bool {
	if t == nil || t.ProtectionEligible == nil {
		return true
	}
	return *t.ProtectionEligible
}

// GetSidId retrieves the value of the leaf SidId from the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SidId is set, it can
// safely use t.GetSidId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SidId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid) GetSidId() NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union {
	if t == nil || t.SidId == nil {
		return nil
	}
	return t.SidId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Group == nil {
		var v bool = false
		t.Group = &v
	}
	if t.ProtectionEligible == nil {
		var v bool = true
		t.ProtectionEligible = &v
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Neighbor == nil {
		return nil, fmt.Errorf("nil value for key Neighbor")
	}

	return map[string]interface{}{
		"neighbor": *t.Neighbor,
		"sid-id":   t.SidId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid.
func (*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/adjacency-sids/adjacency-sid/state/allocated-dynamic-local within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionString, UnionUint32].
type NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionString, UnionUint32]
	Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union()
}

// Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union ensures that UnionUint32
// implements the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union() {
}

// To_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid) To_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union(i interface{}) (NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_AllocatedDynamicLocal_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, string, uint32]", i, i)
}

// NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/adjacency-sids/adjacency-sid/config/sid-id within the YANG schema.
// Union type can be one of [E_AdjacencySid_SidId_Enum, E_MplsTypes_MplsLabel_Enum, UnionString, UnionUint32].
type NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union interface {
	// Union type can be one of [E_AdjacencySid_SidId_Enum, E_MplsTypes_MplsLabel_Enum, UnionString, UnionUint32]
	Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union()
}

// Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union ensures that E_AdjacencySid_SidId_Enum
// implements the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union interface.
func (E_AdjacencySid_SidId_Enum) Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union ensures that UnionUint32
// implements the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union() {
}

// To_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid) To_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union(i interface{}) (NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_AdjacencySid_SidId_Union, unknown union type, got: %T, want any of [E_AdjacencySid_SidId_Enum, E_MplsTypes_MplsLabel_Enum, string, uint32]", i, i)
}

// NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/flex-algo-prefix-sids/flex-algo-prefix-sid YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid struct {
	ΛMetadata   []ygot.Annotation                                                                             `path:"@" ygotAnnotation:"true"`
	FlexAlgoId  *uint8                                                                                        `path:"config/flex-algo-id|flex-algo-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛFlexAlgoId []ygot.Annotation                                                                             `path:"config/@flex-algo-id|@flex-algo-id" ygotAnnotation:"true"`
	Prefix      *string                                                                                       `path:"config/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix     []ygot.Annotation                                                                             `path:"config/@prefix|@prefix" ygotAnnotation:"true"`
	SidId       NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union `path:"config/sid-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSidId      []ygot.Annotation                                                                             `path:"config/@sid-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid) IsYANGGoStruct() {
}

// GetFlexAlgoId retrieves the value of the leaf FlexAlgoId from the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FlexAlgoId is set, it can
// safely use t.GetFlexAlgoId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FlexAlgoId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid) GetFlexAlgoId() uint8 {
	if t == nil || t.FlexAlgoId == nil {
		return 0
	}
	return *t.FlexAlgoId
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetSidId retrieves the value of the leaf SidId from the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SidId is set, it can
// safely use t.GetSidId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SidId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid) GetSidId() NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union {
	if t == nil || t.SidId == nil {
		return nil
	}
	return t.SidId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid) ΛListKeyMap() (map[string]interface{}, error) {
	if t.FlexAlgoId == nil {
		return nil, fmt.Errorf("nil value for key FlexAlgoId")
	}

	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"flex-algo-id": *t.FlexAlgoId,
		"prefix":       *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid.
func (*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/flex-algo-prefix-sids/flex-algo-prefix-sid/config/sid-id within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionString, UnionUint32].
type NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionString, UnionUint32]
	Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union()
}

// Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union ensures that UnionUint32
// implements the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union() {
}

// To_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid) To_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union(i interface{}) (NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_FlexAlgoPrefixSid_SidId_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, string, uint32]", i, i)
}

// NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/prefix-sids/prefix-sid YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid struct {
	ΛMetadata     []ygot.Annotation                                                                     `path:"@" ygotAnnotation:"true"`
	LabelOptions  E_PrefixSid_LabelOptions                                                              `path:"config/label-options" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabelOptions []ygot.Annotation                                                                     `path:"config/@label-options" ygotAnnotation:"true"`
	Prefix        *string                                                                               `path:"config/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix       []ygot.Annotation                                                                     `path:"config/@prefix|@prefix" ygotAnnotation:"true"`
	SidId         NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union `path:"config/sid-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSidId        []ygot.Annotation                                                                     `path:"config/@sid-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid) IsYANGGoStruct() {}

// GetLabelOptions retrieves the value of the leaf LabelOptions from the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LabelOptions is set, it can
// safely use t.GetLabelOptions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LabelOptions == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid) GetLabelOptions() E_PrefixSid_LabelOptions {
	if t == nil || t.LabelOptions == 0 {
		return 0
	}
	return t.LabelOptions
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetSidId retrieves the value of the leaf SidId from the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SidId is set, it can
// safely use t.GetSidId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SidId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid) GetSidId() NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union {
	if t == nil || t.SidId == nil {
		return nil
	}
	return t.SidId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"prefix": *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid.
func (*NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/prefix-sids/prefix-sid/config/sid-id within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionString, UnionUint32].
type NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionString, UnionUint32]
	Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union()
}

// Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union ensures that UnionUint32
// implements the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union() {
}

// To_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid) To_NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union(i interface{}) (NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Isis_Interface_Level_Af_SegmentRouting_PrefixSid_SidId_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, string, uint32]", i, i)
}

// NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/hello-authentication YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication struct {
	ΛMetadata     []ygot.Annotation         `path:"@" ygotAnnotation:"true"`
	AuthMode      E_IsisTypes_AUTH_MODE     `path:"config/auth-mode" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthMode     []ygot.Annotation         `path:"config/@auth-mode" ygotAnnotation:"true"`
	AuthPassword  *string                   `path:"config/auth-password" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthPassword []ygot.Annotation         `path:"config/@auth-password" ygotAnnotation:"true"`
	AuthType      E_KeychainTypes_AUTH_TYPE `path:"config/auth-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthType     []ygot.Annotation         `path:"config/@auth-type" ygotAnnotation:"true"`
	Enabled       *bool                     `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled      []ygot.Annotation         `path:"config/@enabled" ygotAnnotation:"true"`
	Keychain      *string                   `path:"config/keychain" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛKeychain     []ygot.Annotation         `path:"config/@keychain" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication) IsYANGGoStruct() {}

// GetAuthMode retrieves the value of the leaf AuthMode from the NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthMode is set, it can
// safely use t.GetAuthMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthMode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication) GetAuthMode() E_IsisTypes_AUTH_MODE {
	if t == nil || t.AuthMode == 0 {
		return 0
	}
	return t.AuthMode
}

// GetAuthPassword retrieves the value of the leaf AuthPassword from the NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthPassword is set, it can
// safely use t.GetAuthPassword() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthPassword == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication) GetAuthPassword() string {
	if t == nil || t.AuthPassword == nil {
		return ""
	}
	return *t.AuthPassword
}

// GetAuthType retrieves the value of the leaf AuthType from the NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthType is set, it can
// safely use t.GetAuthType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication) GetAuthType() E_KeychainTypes_AUTH_TYPE {
	if t == nil || t.AuthType == 0 {
		return 0
	}
	return t.AuthType
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetKeychain retrieves the value of the leaf Keychain from the NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Keychain is set, it can
// safely use t.GetKeychain() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Keychain == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication) GetKeychain() string {
	if t == nil || t.Keychain == nil {
		return ""
	}
	return *t.Keychain
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication.
func (*NetworkInstance_Protocol_Isis_Interface_Level_HelloAuthentication) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/packet-counters YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters struct {
	ΛMetadata []ygot.Annotation                                                     `path:"@" ygotAnnotation:"true"`
	Csnp      *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp    `path:"csnp" module:"openconfig-network-instance"`
	ΛCsnp     []ygot.Annotation                                                     `path:"@csnp" ygotAnnotation:"true"`
	Esh       *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh     `path:"esh" module:"openconfig-network-instance"`
	ΛEsh      []ygot.Annotation                                                     `path:"@esh" ygotAnnotation:"true"`
	Iih       *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih     `path:"iih" module:"openconfig-network-instance"`
	ΛIih      []ygot.Annotation                                                     `path:"@iih" ygotAnnotation:"true"`
	Ish       *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish     `path:"ish" module:"openconfig-network-instance"`
	ΛIsh      []ygot.Annotation                                                     `path:"@ish" ygotAnnotation:"true"`
	Lsp       *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp     `path:"lsp" module:"openconfig-network-instance"`
	ΛLsp      []ygot.Annotation                                                     `path:"@lsp" ygotAnnotation:"true"`
	Psnp      *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp    `path:"psnp" module:"openconfig-network-instance"`
	ΛPsnp     []ygot.Annotation                                                     `path:"@psnp" ygotAnnotation:"true"`
	Unknown   *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown `path:"unknown" module:"openconfig-network-instance"`
	ΛUnknown  []ygot.Annotation                                                     `path:"@unknown" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) IsYANGGoStruct() {}

// GetOrCreateCsnp retrieves the value of the Csnp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) GetOrCreateCsnp() *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp {
	if t.Csnp != nil {
		return t.Csnp
	}
	t.Csnp = &NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp{}
	return t.Csnp
}

// GetOrCreateEsh retrieves the value of the Esh field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) GetOrCreateEsh() *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh {
	if t.Esh != nil {
		return t.Esh
	}
	t.Esh = &NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh{}
	return t.Esh
}

// GetOrCreateIih retrieves the value of the Iih field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) GetOrCreateIih() *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih {
	if t.Iih != nil {
		return t.Iih
	}
	t.Iih = &NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih{}
	return t.Iih
}

// GetOrCreateIsh retrieves the value of the Ish field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) GetOrCreateIsh() *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish {
	if t.Ish != nil {
		return t.Ish
	}
	t.Ish = &NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish{}
	return t.Ish
}

// GetOrCreateLsp retrieves the value of the Lsp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) GetOrCreateLsp() *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp {
	if t.Lsp != nil {
		return t.Lsp
	}
	t.Lsp = &NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp{}
	return t.Lsp
}

// GetOrCreatePsnp retrieves the value of the Psnp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) GetOrCreatePsnp() *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp {
	if t.Psnp != nil {
		return t.Psnp
	}
	t.Psnp = &NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp{}
	return t.Psnp
}

// GetOrCreateUnknown retrieves the value of the Unknown field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) GetOrCreateUnknown() *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown {
	if t.Unknown != nil {
		return t.Unknown
	}
	t.Unknown = &NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown{}
	return t.Unknown
}

// GetCsnp returns the value of the Csnp struct pointer
// from NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters. If the receiver or the field Csnp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) GetCsnp() *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp {
	if t != nil && t.Csnp != nil {
		return t.Csnp
	}
	return nil
}

// GetEsh returns the value of the Esh struct pointer
// from NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters. If the receiver or the field Esh is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) GetEsh() *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh {
	if t != nil && t.Esh != nil {
		return t.Esh
	}
	return nil
}

// GetIih returns the value of the Iih struct pointer
// from NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters. If the receiver or the field Iih is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) GetIih() *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih {
	if t != nil && t.Iih != nil {
		return t.Iih
	}
	return nil
}

// GetIsh returns the value of the Ish struct pointer
// from NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters. If the receiver or the field Ish is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) GetIsh() *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish {
	if t != nil && t.Ish != nil {
		return t.Ish
	}
	return nil
}

// GetLsp returns the value of the Lsp struct pointer
// from NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters. If the receiver or the field Lsp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) GetLsp() *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp {
	if t != nil && t.Lsp != nil {
		return t.Lsp
	}
	return nil
}

// GetPsnp returns the value of the Psnp struct pointer
// from NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters. If the receiver or the field Psnp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) GetPsnp() *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp {
	if t != nil && t.Psnp != nil {
		return t.Psnp
	}
	return nil
}

// GetUnknown returns the value of the Unknown struct pointer
// from NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters. If the receiver or the field Unknown is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) GetUnknown() *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown {
	if t != nil && t.Unknown != nil {
		return t.Unknown
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Csnp.PopulateDefaults()
	t.Esh.PopulateDefaults()
	t.Iih.PopulateDefaults()
	t.Ish.PopulateDefaults()
	t.Lsp.PopulateDefaults()
	t.Psnp.PopulateDefaults()
	t.Unknown.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters.
func (*NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/packet-counters/csnp YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Dropped     *uint32           `path:"state/dropped" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDropped    []ygot.Annotation `path:"state/@dropped" ygotAnnotation:"true"`
	Processed   *uint32           `path:"state/processed" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProcessed  []ygot.Annotation `path:"state/@processed" ygotAnnotation:"true"`
	Received    *uint32           `path:"state/received" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReceived   []ygot.Annotation `path:"state/@received" ygotAnnotation:"true"`
	Retransmit  *uint32           `path:"state/retransmit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRetransmit []ygot.Annotation `path:"state/@retransmit" ygotAnnotation:"true"`
	Sent        *uint32           `path:"state/sent" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSent       []ygot.Annotation `path:"state/@sent" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp) IsYANGGoStruct() {}

// GetDropped retrieves the value of the leaf Dropped from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dropped is set, it can
// safely use t.GetDropped() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dropped == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp) GetDropped() uint32 {
	if t == nil || t.Dropped == nil {
		return 0
	}
	return *t.Dropped
}

// GetProcessed retrieves the value of the leaf Processed from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Processed is set, it can
// safely use t.GetProcessed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Processed == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp) GetProcessed() uint32 {
	if t == nil || t.Processed == nil {
		return 0
	}
	return *t.Processed
}

// GetReceived retrieves the value of the leaf Received from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Received is set, it can
// safely use t.GetReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Received == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp) GetReceived() uint32 {
	if t == nil || t.Received == nil {
		return 0
	}
	return *t.Received
}

// GetRetransmit retrieves the value of the leaf Retransmit from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Retransmit is set, it can
// safely use t.GetRetransmit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Retransmit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp) GetRetransmit() uint32 {
	if t == nil || t.Retransmit == nil {
		return 0
	}
	return *t.Retransmit
}

// GetSent retrieves the value of the leaf Sent from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Sent is set, it can
// safely use t.GetSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Sent == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp) GetSent() uint32 {
	if t == nil || t.Sent == nil {
		return 0
	}
	return *t.Sent
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp.
func (*NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Csnp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/packet-counters/esh YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Dropped     *uint32           `path:"state/dropped" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDropped    []ygot.Annotation `path:"state/@dropped" ygotAnnotation:"true"`
	Processed   *uint32           `path:"state/processed" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProcessed  []ygot.Annotation `path:"state/@processed" ygotAnnotation:"true"`
	Received    *uint32           `path:"state/received" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReceived   []ygot.Annotation `path:"state/@received" ygotAnnotation:"true"`
	Retransmit  *uint32           `path:"state/retransmit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRetransmit []ygot.Annotation `path:"state/@retransmit" ygotAnnotation:"true"`
	Sent        *uint32           `path:"state/sent" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSent       []ygot.Annotation `path:"state/@sent" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh) IsYANGGoStruct() {}

// GetDropped retrieves the value of the leaf Dropped from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dropped is set, it can
// safely use t.GetDropped() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dropped == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh) GetDropped() uint32 {
	if t == nil || t.Dropped == nil {
		return 0
	}
	return *t.Dropped
}

// GetProcessed retrieves the value of the leaf Processed from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Processed is set, it can
// safely use t.GetProcessed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Processed == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh) GetProcessed() uint32 {
	if t == nil || t.Processed == nil {
		return 0
	}
	return *t.Processed
}

// GetReceived retrieves the value of the leaf Received from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Received is set, it can
// safely use t.GetReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Received == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh) GetReceived() uint32 {
	if t == nil || t.Received == nil {
		return 0
	}
	return *t.Received
}

// GetRetransmit retrieves the value of the leaf Retransmit from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Retransmit is set, it can
// safely use t.GetRetransmit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Retransmit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh) GetRetransmit() uint32 {
	if t == nil || t.Retransmit == nil {
		return 0
	}
	return *t.Retransmit
}

// GetSent retrieves the value of the leaf Sent from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Sent is set, it can
// safely use t.GetSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Sent == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh) GetSent() uint32 {
	if t == nil || t.Sent == nil {
		return 0
	}
	return *t.Sent
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh.
func (*NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Esh) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/packet-counters/iih YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Dropped     *uint32           `path:"state/dropped" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDropped    []ygot.Annotation `path:"state/@dropped" ygotAnnotation:"true"`
	Processed   *uint32           `path:"state/processed" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProcessed  []ygot.Annotation `path:"state/@processed" ygotAnnotation:"true"`
	Received    *uint32           `path:"state/received" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReceived   []ygot.Annotation `path:"state/@received" ygotAnnotation:"true"`
	Retransmit  *uint32           `path:"state/retransmit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRetransmit []ygot.Annotation `path:"state/@retransmit" ygotAnnotation:"true"`
	Sent        *uint32           `path:"state/sent" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSent       []ygot.Annotation `path:"state/@sent" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih) IsYANGGoStruct() {}

// GetDropped retrieves the value of the leaf Dropped from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dropped is set, it can
// safely use t.GetDropped() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dropped == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih) GetDropped() uint32 {
	if t == nil || t.Dropped == nil {
		return 0
	}
	return *t.Dropped
}

// GetProcessed retrieves the value of the leaf Processed from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Processed is set, it can
// safely use t.GetProcessed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Processed == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih) GetProcessed() uint32 {
	if t == nil || t.Processed == nil {
		return 0
	}
	return *t.Processed
}

// GetReceived retrieves the value of the leaf Received from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Received is set, it can
// safely use t.GetReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Received == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih) GetReceived() uint32 {
	if t == nil || t.Received == nil {
		return 0
	}
	return *t.Received
}

// GetRetransmit retrieves the value of the leaf Retransmit from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Retransmit is set, it can
// safely use t.GetRetransmit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Retransmit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih) GetRetransmit() uint32 {
	if t == nil || t.Retransmit == nil {
		return 0
	}
	return *t.Retransmit
}

// GetSent retrieves the value of the leaf Sent from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Sent is set, it can
// safely use t.GetSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Sent == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih) GetSent() uint32 {
	if t == nil || t.Sent == nil {
		return 0
	}
	return *t.Sent
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih.
func (*NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Iih) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/packet-counters/ish YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Dropped     *uint32           `path:"state/dropped" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDropped    []ygot.Annotation `path:"state/@dropped" ygotAnnotation:"true"`
	Processed   *uint32           `path:"state/processed" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProcessed  []ygot.Annotation `path:"state/@processed" ygotAnnotation:"true"`
	Received    *uint32           `path:"state/received" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReceived   []ygot.Annotation `path:"state/@received" ygotAnnotation:"true"`
	Retransmit  *uint32           `path:"state/retransmit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRetransmit []ygot.Annotation `path:"state/@retransmit" ygotAnnotation:"true"`
	Sent        *uint32           `path:"state/sent" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSent       []ygot.Annotation `path:"state/@sent" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish) IsYANGGoStruct() {}

// GetDropped retrieves the value of the leaf Dropped from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dropped is set, it can
// safely use t.GetDropped() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dropped == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish) GetDropped() uint32 {
	if t == nil || t.Dropped == nil {
		return 0
	}
	return *t.Dropped
}

// GetProcessed retrieves the value of the leaf Processed from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Processed is set, it can
// safely use t.GetProcessed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Processed == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish) GetProcessed() uint32 {
	if t == nil || t.Processed == nil {
		return 0
	}
	return *t.Processed
}

// GetReceived retrieves the value of the leaf Received from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Received is set, it can
// safely use t.GetReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Received == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish) GetReceived() uint32 {
	if t == nil || t.Received == nil {
		return 0
	}
	return *t.Received
}

// GetRetransmit retrieves the value of the leaf Retransmit from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Retransmit is set, it can
// safely use t.GetRetransmit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Retransmit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish) GetRetransmit() uint32 {
	if t == nil || t.Retransmit == nil {
		return 0
	}
	return *t.Retransmit
}

// GetSent retrieves the value of the leaf Sent from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Sent is set, it can
// safely use t.GetSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Sent == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish) GetSent() uint32 {
	if t == nil || t.Sent == nil {
		return 0
	}
	return *t.Sent
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish.
func (*NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Ish) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/packet-counters/lsp YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Dropped     *uint32           `path:"state/dropped" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDropped    []ygot.Annotation `path:"state/@dropped" ygotAnnotation:"true"`
	Processed   *uint32           `path:"state/processed" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProcessed  []ygot.Annotation `path:"state/@processed" ygotAnnotation:"true"`
	Received    *uint32           `path:"state/received" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReceived   []ygot.Annotation `path:"state/@received" ygotAnnotation:"true"`
	Retransmit  *uint32           `path:"state/retransmit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRetransmit []ygot.Annotation `path:"state/@retransmit" ygotAnnotation:"true"`
	Sent        *uint32           `path:"state/sent" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSent       []ygot.Annotation `path:"state/@sent" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp) IsYANGGoStruct() {}

// GetDropped retrieves the value of the leaf Dropped from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dropped is set, it can
// safely use t.GetDropped() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dropped == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp) GetDropped() uint32 {
	if t == nil || t.Dropped == nil {
		return 0
	}
	return *t.Dropped
}

// GetProcessed retrieves the value of the leaf Processed from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Processed is set, it can
// safely use t.GetProcessed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Processed == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp) GetProcessed() uint32 {
	if t == nil || t.Processed == nil {
		return 0
	}
	return *t.Processed
}

// GetReceived retrieves the value of the leaf Received from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Received is set, it can
// safely use t.GetReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Received == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp) GetReceived() uint32 {
	if t == nil || t.Received == nil {
		return 0
	}
	return *t.Received
}

// GetRetransmit retrieves the value of the leaf Retransmit from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Retransmit is set, it can
// safely use t.GetRetransmit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Retransmit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp) GetRetransmit() uint32 {
	if t == nil || t.Retransmit == nil {
		return 0
	}
	return *t.Retransmit
}

// GetSent retrieves the value of the leaf Sent from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Sent is set, it can
// safely use t.GetSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Sent == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp) GetSent() uint32 {
	if t == nil || t.Sent == nil {
		return 0
	}
	return *t.Sent
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp.
func (*NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Lsp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/packet-counters/psnp YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Dropped     *uint32           `path:"state/dropped" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDropped    []ygot.Annotation `path:"state/@dropped" ygotAnnotation:"true"`
	Processed   *uint32           `path:"state/processed" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProcessed  []ygot.Annotation `path:"state/@processed" ygotAnnotation:"true"`
	Received    *uint32           `path:"state/received" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReceived   []ygot.Annotation `path:"state/@received" ygotAnnotation:"true"`
	Retransmit  *uint32           `path:"state/retransmit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRetransmit []ygot.Annotation `path:"state/@retransmit" ygotAnnotation:"true"`
	Sent        *uint32           `path:"state/sent" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSent       []ygot.Annotation `path:"state/@sent" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp) IsYANGGoStruct() {}

// GetDropped retrieves the value of the leaf Dropped from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dropped is set, it can
// safely use t.GetDropped() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dropped == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp) GetDropped() uint32 {
	if t == nil || t.Dropped == nil {
		return 0
	}
	return *t.Dropped
}

// GetProcessed retrieves the value of the leaf Processed from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Processed is set, it can
// safely use t.GetProcessed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Processed == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp) GetProcessed() uint32 {
	if t == nil || t.Processed == nil {
		return 0
	}
	return *t.Processed
}

// GetReceived retrieves the value of the leaf Received from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Received is set, it can
// safely use t.GetReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Received == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp) GetReceived() uint32 {
	if t == nil || t.Received == nil {
		return 0
	}
	return *t.Received
}

// GetRetransmit retrieves the value of the leaf Retransmit from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Retransmit is set, it can
// safely use t.GetRetransmit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Retransmit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp) GetRetransmit() uint32 {
	if t == nil || t.Retransmit == nil {
		return 0
	}
	return *t.Retransmit
}

// GetSent retrieves the value of the leaf Sent from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Sent is set, it can
// safely use t.GetSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Sent == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp) GetSent() uint32 {
	if t == nil || t.Sent == nil {
		return 0
	}
	return *t.Sent
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp.
func (*NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Psnp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/packet-counters/unknown YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Dropped     *uint32           `path:"state/dropped" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDropped    []ygot.Annotation `path:"state/@dropped" ygotAnnotation:"true"`
	Processed   *uint32           `path:"state/processed" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProcessed  []ygot.Annotation `path:"state/@processed" ygotAnnotation:"true"`
	Received    *uint32           `path:"state/received" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReceived   []ygot.Annotation `path:"state/@received" ygotAnnotation:"true"`
	Retransmit  *uint32           `path:"state/retransmit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRetransmit []ygot.Annotation `path:"state/@retransmit" ygotAnnotation:"true"`
	Sent        *uint32           `path:"state/sent" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSent       []ygot.Annotation `path:"state/@sent" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown) IsYANGGoStruct() {}

// GetDropped retrieves the value of the leaf Dropped from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dropped is set, it can
// safely use t.GetDropped() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dropped == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown) GetDropped() uint32 {
	if t == nil || t.Dropped == nil {
		return 0
	}
	return *t.Dropped
}

// GetProcessed retrieves the value of the leaf Processed from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Processed is set, it can
// safely use t.GetProcessed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Processed == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown) GetProcessed() uint32 {
	if t == nil || t.Processed == nil {
		return 0
	}
	return *t.Processed
}

// GetReceived retrieves the value of the leaf Received from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Received is set, it can
// safely use t.GetReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Received == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown) GetReceived() uint32 {
	if t == nil || t.Received == nil {
		return 0
	}
	return *t.Received
}

// GetRetransmit retrieves the value of the leaf Retransmit from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Retransmit is set, it can
// safely use t.GetRetransmit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Retransmit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown) GetRetransmit() uint32 {
	if t == nil || t.Retransmit == nil {
		return 0
	}
	return *t.Retransmit
}

// GetSent retrieves the value of the leaf Sent from the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Sent is set, it can
// safely use t.GetSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Sent == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown) GetSent() uint32 {
	if t == nil || t.Sent == nil {
		return 0
	}
	return *t.Sent
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown.
func (*NetworkInstance_Protocol_Isis_Interface_Level_PacketCounters_Unknown) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Level_Timers represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/timers YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Level_Timers struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	HelloInterval    *uint32           `path:"config/hello-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloInterval   []ygot.Annotation `path:"config/@hello-interval" ygotAnnotation:"true"`
	HelloMultiplier  *uint8            `path:"config/hello-multiplier" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloMultiplier []ygot.Annotation `path:"config/@hello-multiplier" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Level_Timers implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Level_Timers) IsYANGGoStruct() {}

// GetHelloInterval retrieves the value of the leaf HelloInterval from the NetworkInstance_Protocol_Isis_Interface_Level_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloInterval is set, it can
// safely use t.GetHelloInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Timers) GetHelloInterval() uint32 {
	if t == nil || t.HelloInterval == nil {
		return 0
	}
	return *t.HelloInterval
}

// GetHelloMultiplier retrieves the value of the leaf HelloMultiplier from the NetworkInstance_Protocol_Isis_Interface_Level_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloMultiplier is set, it can
// safely use t.GetHelloMultiplier() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloMultiplier == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Timers) GetHelloMultiplier() uint8 {
	if t == nil || t.HelloMultiplier == nil {
		return 0
	}
	return *t.HelloMultiplier
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Level_Timers
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Timers) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Timers) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Level_Timers"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Timers) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Level_Timers) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Level_Timers.
func (*NetworkInstance_Protocol_Isis_Interface_Level_Timers) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Mpls represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/mpls YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Mpls struct {
	ΛMetadata   []ygot.Annotation                                        `path:"@" ygotAnnotation:"true"`
	IgpLdpSync  *NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync `path:"igp-ldp-sync" module:"openconfig-network-instance"`
	ΛIgpLdpSync []ygot.Annotation                                        `path:"@igp-ldp-sync" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Mpls implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Mpls) IsYANGGoStruct() {}

// GetOrCreateIgpLdpSync retrieves the value of the IgpLdpSync field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Interface_Mpls) GetOrCreateIgpLdpSync() *NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync {
	if t.IgpLdpSync != nil {
		return t.IgpLdpSync
	}
	t.IgpLdpSync = &NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync{}
	return t.IgpLdpSync
}

// GetIgpLdpSync returns the value of the IgpLdpSync struct pointer
// from NetworkInstance_Protocol_Isis_Interface_Mpls. If the receiver or the field IgpLdpSync is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Interface_Mpls) GetIgpLdpSync() *NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync {
	if t != nil && t.IgpLdpSync != nil {
		return t.IgpLdpSync
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Mpls
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Mpls) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.IgpLdpSync.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Mpls) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Mpls"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Mpls) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Mpls) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Mpls.
func (*NetworkInstance_Protocol_Isis_Interface_Mpls) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/mpls/igp-ldp-sync YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled             *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled            []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
	PostSessionUpDelay  *uint16           `path:"config/post-session-up-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPostSessionUpDelay []ygot.Annotation `path:"config/@post-session-up-delay" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return true
	}
	return *t.Enabled
}

// GetPostSessionUpDelay retrieves the value of the leaf PostSessionUpDelay from the NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PostSessionUpDelay is set, it can
// safely use t.GetPostSessionUpDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PostSessionUpDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync) GetPostSessionUpDelay() uint16 {
	if t == nil || t.PostSessionUpDelay == nil {
		return 0
	}
	return *t.PostSessionUpDelay
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = true
		t.Enabled = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync.
func (*NetworkInstance_Protocol_Isis_Interface_Mpls_IgpLdpSync) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_Timers represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/timers YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_Timers struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	CsnpInterval       *uint16           `path:"config/csnp-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCsnpInterval      []ygot.Annotation `path:"config/@csnp-interval" ygotAnnotation:"true"`
	LspPacingInterval  *uint64           `path:"config/lsp-pacing-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLspPacingInterval []ygot.Annotation `path:"config/@lsp-pacing-interval" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_Timers implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_Timers) IsYANGGoStruct() {}

// GetCsnpInterval retrieves the value of the leaf CsnpInterval from the NetworkInstance_Protocol_Isis_Interface_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CsnpInterval is set, it can
// safely use t.GetCsnpInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CsnpInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Timers) GetCsnpInterval() uint16 {
	if t == nil || t.CsnpInterval == nil {
		return 0
	}
	return *t.CsnpInterval
}

// GetLspPacingInterval retrieves the value of the leaf LspPacingInterval from the NetworkInstance_Protocol_Isis_Interface_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LspPacingInterval is set, it can
// safely use t.GetLspPacingInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LspPacingInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_Timers) GetLspPacingInterval() uint64 {
	if t == nil || t.LspPacingInterval == nil {
		return 0
	}
	return *t.LspPacingInterval
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_Timers
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_Timers) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Timers) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_Timers"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_Timers) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_Timers) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_Timers.
func (*NetworkInstance_Protocol_Isis_Interface_Timers) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_WeightedEcmp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/weighted-ecmp YANG schema element.
type NetworkInstance_Protocol_Isis_Interface_WeightedEcmp struct {
	ΛMetadata            []ygot.Annotation                                                              `path:"@" ygotAnnotation:"true"`
	LoadBalancingWeight  NetworkInstance_Protocol_Isis_Interface_WeightedEcmp_LoadBalancingWeight_Union `path:"config/load-balancing-weight" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLoadBalancingWeight []ygot.Annotation                                                              `path:"config/@load-balancing-weight" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Interface_WeightedEcmp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Interface_WeightedEcmp) IsYANGGoStruct() {}

// GetLoadBalancingWeight retrieves the value of the leaf LoadBalancingWeight from the NetworkInstance_Protocol_Isis_Interface_WeightedEcmp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LoadBalancingWeight is set, it can
// safely use t.GetLoadBalancingWeight() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LoadBalancingWeight == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Interface_WeightedEcmp) GetLoadBalancingWeight() NetworkInstance_Protocol_Isis_Interface_WeightedEcmp_LoadBalancingWeight_Union {
	if t == nil || t.LoadBalancingWeight == nil {
		return WeightedEcmp_LoadBalancingWeight_Enum_auto
	}
	return t.LoadBalancingWeight
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Interface_WeightedEcmp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Interface_WeightedEcmp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.LoadBalancingWeight == nil {
		t.LoadBalancingWeight = WeightedEcmp_LoadBalancingWeight_Enum_auto
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_WeightedEcmp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Interface_WeightedEcmp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Interface_WeightedEcmp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Interface_WeightedEcmp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Interface_WeightedEcmp.
func (*NetworkInstance_Protocol_Isis_Interface_WeightedEcmp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Interface_WeightedEcmp_LoadBalancingWeight_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/weighted-ecmp/config/load-balancing-weight within the YANG schema.
// Union type can be one of [E_WeightedEcmp_LoadBalancingWeight_Enum, UnionUint32].
type NetworkInstance_Protocol_Isis_Interface_WeightedEcmp_LoadBalancingWeight_Union interface {
	// Union type can be one of [E_WeightedEcmp_LoadBalancingWeight_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Protocol_Isis_Interface_WeightedEcmp_LoadBalancingWeight_Union()
}

// Documentation_for_NetworkInstance_Protocol_Isis_Interface_WeightedEcmp_LoadBalancingWeight_Union ensures that E_WeightedEcmp_LoadBalancingWeight_Enum
// implements the NetworkInstance_Protocol_Isis_Interface_WeightedEcmp_LoadBalancingWeight_Union interface.
func (E_WeightedEcmp_LoadBalancingWeight_Enum) Documentation_for_NetworkInstance_Protocol_Isis_Interface_WeightedEcmp_LoadBalancingWeight_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Isis_Interface_WeightedEcmp_LoadBalancingWeight_Union ensures that UnionUint32
// implements the NetworkInstance_Protocol_Isis_Interface_WeightedEcmp_LoadBalancingWeight_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Protocol_Isis_Interface_WeightedEcmp_LoadBalancingWeight_Union() {
}

// To_NetworkInstance_Protocol_Isis_Interface_WeightedEcmp_LoadBalancingWeight_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Isis_Interface_WeightedEcmp_LoadBalancingWeight_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Isis_Interface_WeightedEcmp) To_NetworkInstance_Protocol_Isis_Interface_WeightedEcmp_LoadBalancingWeight_Union(i interface{}) (NetworkInstance_Protocol_Isis_Interface_WeightedEcmp_LoadBalancingWeight_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Isis_Interface_WeightedEcmp_LoadBalancingWeight_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Isis_Interface_WeightedEcmp_LoadBalancingWeight_Union, unknown union type, got: %T, want any of [E_WeightedEcmp_LoadBalancingWeight_Enum, uint32]", i, i)
}

// NetworkInstance_Protocol_Isis_Level represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level YANG schema element.
type NetworkInstance_Protocol_Isis_Level struct {
	ΛMetadata            []ygot.Annotation                                        `path:"@" ygotAnnotation:"true"`
	Authentication       *NetworkInstance_Protocol_Isis_Level_Authentication      `path:"authentication" module:"openconfig-network-instance"`
	ΛAuthentication      []ygot.Annotation                                        `path:"@authentication" ygotAnnotation:"true"`
	AuthenticationCheck  *bool                                                    `path:"config/authentication-check" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthenticationCheck []ygot.Annotation                                        `path:"config/@authentication-check" ygotAnnotation:"true"`
	Enabled              *bool                                                    `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled             []ygot.Annotation                                        `path:"config/@enabled" ygotAnnotation:"true"`
	GracefulRestart      *NetworkInstance_Protocol_Isis_Level_GracefulRestart     `path:"graceful-restart" module:"openconfig-network-instance"`
	ΛGracefulRestart     []ygot.Annotation                                        `path:"@graceful-restart" ygotAnnotation:"true"`
	LevelNumber          *uint8                                                   `path:"config/level-number|level-number" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛLevelNumber         []ygot.Annotation                                        `path:"config/@level-number|@level-number" ygotAnnotation:"true"`
	Lsp                  map[string]*NetworkInstance_Protocol_Isis_Level_Lsp      `path:"link-state-database/lsp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLsp                 []ygot.Annotation                                        `path:"link-state-database/@lsp" ygotAnnotation:"true"`
	MetricStyle          E_IsisTypes_MetricStyle                                  `path:"config/metric-style" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetricStyle         []ygot.Annotation                                        `path:"config/@metric-style" ygotAnnotation:"true"`
	RoutePreference      *NetworkInstance_Protocol_Isis_Level_RoutePreference     `path:"route-preference" module:"openconfig-network-instance"`
	ΛRoutePreference     []ygot.Annotation                                        `path:"@route-preference" ygotAnnotation:"true"`
	SystemLevelCounters  *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters `path:"system-level-counters" module:"openconfig-network-instance"`
	ΛSystemLevelCounters []ygot.Annotation                                        `path:"@system-level-counters" ygotAnnotation:"true"`
	TrafficEngineering   *NetworkInstance_Protocol_Isis_Level_TrafficEngineering  `path:"traffic-engineering" module:"openconfig-network-instance"`
	ΛTrafficEngineering  []ygot.Annotation                                        `path:"@traffic-engineering" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level) IsYANGGoStruct() {}

// NewLsp creates a new entry in the Lsp list of the
// NetworkInstance_Protocol_Isis_Level struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level) NewLsp(LspId string) (*NetworkInstance_Protocol_Isis_Level_Lsp, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Lsp == nil {
		t.Lsp = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp)
	}

	key := LspId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Lsp[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Lsp", key)
	}

	t.Lsp[key] = &NetworkInstance_Protocol_Isis_Level_Lsp{
		LspId: &LspId,
	}

	return t.Lsp[key], nil
}

// RenameLsp renames an entry in the list Lsp within
// the NetworkInstance_Protocol_Isis_Level struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level) RenameLsp(oldK, newK string) error {
	if _, ok := t.Lsp[newK]; ok {
		return fmt.Errorf("key %v already exists in Lsp", newK)
	}

	e, ok := t.Lsp[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Lsp", oldK)
	}
	e.LspId = &newK

	t.Lsp[newK] = e
	delete(t.Lsp, oldK)
	return nil
}

// GetOrCreateLspMap returns the list (map) from NetworkInstance_Protocol_Isis_Level.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level) GetOrCreateLspMap() map[string]*NetworkInstance_Protocol_Isis_Level_Lsp {
	if t.Lsp == nil {
		t.Lsp = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp)
	}
	return t.Lsp
}

// GetOrCreateLsp retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level) GetOrCreateLsp(LspId string) *NetworkInstance_Protocol_Isis_Level_Lsp {

	key := LspId

	if v, ok := t.Lsp[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewLsp(LspId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateLsp got unexpected error: %v", err))
	}
	return v
}

// GetLsp retrieves the value with the specified key from
// the Lsp map field of NetworkInstance_Protocol_Isis_Level. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level) GetLsp(LspId string) *NetworkInstance_Protocol_Isis_Level_Lsp {

	if t == nil {
		return nil
	}

	key := LspId

	if lm, ok := t.Lsp[key]; ok {
		return lm
	}
	return nil
}

// AppendLsp appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp struct to the
// list Lsp of NetworkInstance_Protocol_Isis_Level. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level) AppendLsp(v *NetworkInstance_Protocol_Isis_Level_Lsp) error {
	if v.LspId == nil {
		return fmt.Errorf("invalid nil key received for LspId")
	}

	key := *v.LspId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Lsp == nil {
		t.Lsp = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp)
	}

	if _, ok := t.Lsp[key]; ok {
		return fmt.Errorf("duplicate key for list Lsp %v", key)
	}

	t.Lsp[key] = v
	return nil
}

// GetOrCreateAuthentication retrieves the value of the Authentication field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level) GetOrCreateAuthentication() *NetworkInstance_Protocol_Isis_Level_Authentication {
	if t.Authentication != nil {
		return t.Authentication
	}
	t.Authentication = &NetworkInstance_Protocol_Isis_Level_Authentication{}
	return t.Authentication
}

// GetOrCreateGracefulRestart retrieves the value of the GracefulRestart field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level) GetOrCreateGracefulRestart() *NetworkInstance_Protocol_Isis_Level_GracefulRestart {
	if t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	t.GracefulRestart = &NetworkInstance_Protocol_Isis_Level_GracefulRestart{}
	return t.GracefulRestart
}

// GetOrCreateRoutePreference retrieves the value of the RoutePreference field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level) GetOrCreateRoutePreference() *NetworkInstance_Protocol_Isis_Level_RoutePreference {
	if t.RoutePreference != nil {
		return t.RoutePreference
	}
	t.RoutePreference = &NetworkInstance_Protocol_Isis_Level_RoutePreference{}
	return t.RoutePreference
}

// GetOrCreateSystemLevelCounters retrieves the value of the SystemLevelCounters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level) GetOrCreateSystemLevelCounters() *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters {
	if t.SystemLevelCounters != nil {
		return t.SystemLevelCounters
	}
	t.SystemLevelCounters = &NetworkInstance_Protocol_Isis_Level_SystemLevelCounters{}
	return t.SystemLevelCounters
}

// GetOrCreateTrafficEngineering retrieves the value of the TrafficEngineering field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level) GetOrCreateTrafficEngineering() *NetworkInstance_Protocol_Isis_Level_TrafficEngineering {
	if t.TrafficEngineering != nil {
		return t.TrafficEngineering
	}
	t.TrafficEngineering = &NetworkInstance_Protocol_Isis_Level_TrafficEngineering{}
	return t.TrafficEngineering
}

// GetAuthentication returns the value of the Authentication struct pointer
// from NetworkInstance_Protocol_Isis_Level. If the receiver or the field Authentication is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level) GetAuthentication() *NetworkInstance_Protocol_Isis_Level_Authentication {
	if t != nil && t.Authentication != nil {
		return t.Authentication
	}
	return nil
}

// GetGracefulRestart returns the value of the GracefulRestart struct pointer
// from NetworkInstance_Protocol_Isis_Level. If the receiver or the field GracefulRestart is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level) GetGracefulRestart() *NetworkInstance_Protocol_Isis_Level_GracefulRestart {
	if t != nil && t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	return nil
}

// GetRoutePreference returns the value of the RoutePreference struct pointer
// from NetworkInstance_Protocol_Isis_Level. If the receiver or the field RoutePreference is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level) GetRoutePreference() *NetworkInstance_Protocol_Isis_Level_RoutePreference {
	if t != nil && t.RoutePreference != nil {
		return t.RoutePreference
	}
	return nil
}

// GetSystemLevelCounters returns the value of the SystemLevelCounters struct pointer
// from NetworkInstance_Protocol_Isis_Level. If the receiver or the field SystemLevelCounters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level) GetSystemLevelCounters() *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters {
	if t != nil && t.SystemLevelCounters != nil {
		return t.SystemLevelCounters
	}
	return nil
}

// GetTrafficEngineering returns the value of the TrafficEngineering struct pointer
// from NetworkInstance_Protocol_Isis_Level. If the receiver or the field TrafficEngineering is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level) GetTrafficEngineering() *NetworkInstance_Protocol_Isis_Level_TrafficEngineering {
	if t != nil && t.TrafficEngineering != nil {
		return t.TrafficEngineering
	}
	return nil
}

// GetAuthenticationCheck retrieves the value of the leaf AuthenticationCheck from the NetworkInstance_Protocol_Isis_Level
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthenticationCheck is set, it can
// safely use t.GetAuthenticationCheck() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthenticationCheck == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level) GetAuthenticationCheck() bool {
	if t == nil || t.AuthenticationCheck == nil {
		return true
	}
	return *t.AuthenticationCheck
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Level
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetLevelNumber retrieves the value of the leaf LevelNumber from the NetworkInstance_Protocol_Isis_Level
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LevelNumber is set, it can
// safely use t.GetLevelNumber() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LevelNumber == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level) GetLevelNumber() uint8 {
	if t == nil || t.LevelNumber == nil {
		return 0
	}
	return *t.LevelNumber
}

// GetMetricStyle retrieves the value of the leaf MetricStyle from the NetworkInstance_Protocol_Isis_Level
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MetricStyle is set, it can
// safely use t.GetMetricStyle() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MetricStyle == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level) GetMetricStyle() E_IsisTypes_MetricStyle {
	if t == nil || t.MetricStyle == 0 {
		return 0
	}
	return t.MetricStyle
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AuthenticationCheck == nil {
		var v bool = true
		t.AuthenticationCheck = &v
	}
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	t.Authentication.PopulateDefaults()
	t.GracefulRestart.PopulateDefaults()
	t.RoutePreference.PopulateDefaults()
	t.SystemLevelCounters.PopulateDefaults()
	t.TrafficEngineering.PopulateDefaults()
	for _, e := range t.Lsp {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level) ΛListKeyMap() (map[string]interface{}, error) {
	if t.LevelNumber == nil {
		return nil, fmt.Errorf("nil value for key LevelNumber")
	}

	return map[string]interface{}{
		"level-number": *t.LevelNumber,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level.
func (*NetworkInstance_Protocol_Isis_Level) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Authentication represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/authentication YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Authentication struct {
	ΛMetadata     []ygot.Annotation         `path:"@" ygotAnnotation:"true"`
	AuthMode      E_IsisTypes_AUTH_MODE     `path:"config/auth-mode" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthMode     []ygot.Annotation         `path:"config/@auth-mode" ygotAnnotation:"true"`
	AuthPassword  *string                   `path:"config/auth-password" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthPassword []ygot.Annotation         `path:"config/@auth-password" ygotAnnotation:"true"`
	AuthType      E_KeychainTypes_AUTH_TYPE `path:"config/auth-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthType     []ygot.Annotation         `path:"config/@auth-type" ygotAnnotation:"true"`
	DisableCsnp   *bool                     `path:"config/disable-csnp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDisableCsnp  []ygot.Annotation         `path:"config/@disable-csnp" ygotAnnotation:"true"`
	DisableLsp    *bool                     `path:"config/disable-lsp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDisableLsp   []ygot.Annotation         `path:"config/@disable-lsp" ygotAnnotation:"true"`
	DisablePsnp   *bool                     `path:"config/disable-psnp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDisablePsnp  []ygot.Annotation         `path:"config/@disable-psnp" ygotAnnotation:"true"`
	Enabled       *bool                     `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled      []ygot.Annotation         `path:"config/@enabled" ygotAnnotation:"true"`
	Keychain      *string                   `path:"config/keychain" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛKeychain     []ygot.Annotation         `path:"config/@keychain" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Authentication implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Authentication) IsYANGGoStruct() {}

// GetAuthMode retrieves the value of the leaf AuthMode from the NetworkInstance_Protocol_Isis_Level_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthMode is set, it can
// safely use t.GetAuthMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthMode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Authentication) GetAuthMode() E_IsisTypes_AUTH_MODE {
	if t == nil || t.AuthMode == 0 {
		return 0
	}
	return t.AuthMode
}

// GetAuthPassword retrieves the value of the leaf AuthPassword from the NetworkInstance_Protocol_Isis_Level_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthPassword is set, it can
// safely use t.GetAuthPassword() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthPassword == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Authentication) GetAuthPassword() string {
	if t == nil || t.AuthPassword == nil {
		return ""
	}
	return *t.AuthPassword
}

// GetAuthType retrieves the value of the leaf AuthType from the NetworkInstance_Protocol_Isis_Level_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthType is set, it can
// safely use t.GetAuthType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Authentication) GetAuthType() E_KeychainTypes_AUTH_TYPE {
	if t == nil || t.AuthType == 0 {
		return 0
	}
	return t.AuthType
}

// GetDisableCsnp retrieves the value of the leaf DisableCsnp from the NetworkInstance_Protocol_Isis_Level_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DisableCsnp is set, it can
// safely use t.GetDisableCsnp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DisableCsnp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Authentication) GetDisableCsnp() bool {
	if t == nil || t.DisableCsnp == nil {
		return false
	}
	return *t.DisableCsnp
}

// GetDisableLsp retrieves the value of the leaf DisableLsp from the NetworkInstance_Protocol_Isis_Level_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DisableLsp is set, it can
// safely use t.GetDisableLsp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DisableLsp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Authentication) GetDisableLsp() bool {
	if t == nil || t.DisableLsp == nil {
		return false
	}
	return *t.DisableLsp
}

// GetDisablePsnp retrieves the value of the leaf DisablePsnp from the NetworkInstance_Protocol_Isis_Level_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DisablePsnp is set, it can
// safely use t.GetDisablePsnp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DisablePsnp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Authentication) GetDisablePsnp() bool {
	if t == nil || t.DisablePsnp == nil {
		return false
	}
	return *t.DisablePsnp
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Level_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Authentication) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetKeychain retrieves the value of the leaf Keychain from the NetworkInstance_Protocol_Isis_Level_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Keychain is set, it can
// safely use t.GetKeychain() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Keychain == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Authentication) GetKeychain() string {
	if t == nil || t.Keychain == nil {
		return ""
	}
	return *t.Keychain
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Authentication
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Authentication) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DisableCsnp == nil {
		var v bool = false
		t.DisableCsnp = &v
	}
	if t.DisableLsp == nil {
		var v bool = false
		t.DisableLsp = &v
	}
	if t.DisablePsnp == nil {
		var v bool = false
		t.DisablePsnp = &v
	}
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Authentication) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Authentication"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Authentication) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Authentication) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Authentication.
func (*NetworkInstance_Protocol_Isis_Level_Authentication) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_GracefulRestart represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/graceful-restart YANG schema element.
type NetworkInstance_Protocol_Isis_Level_GracefulRestart struct {
	ΛMetadata    []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled      *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled     []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
	RestartTime  *uint16           `path:"config/restart-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRestartTime []ygot.Annotation `path:"config/@restart-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_GracefulRestart implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_GracefulRestart) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Level_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_GracefulRestart) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetRestartTime retrieves the value of the leaf RestartTime from the NetworkInstance_Protocol_Isis_Level_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RestartTime is set, it can
// safely use t.GetRestartTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RestartTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_GracefulRestart) GetRestartTime() uint16 {
	if t == nil || t.RestartTime == nil {
		return 30
	}
	return *t.RestartTime
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_GracefulRestart
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_GracefulRestart) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	if t.RestartTime == nil {
		var v uint16 = 30
		t.RestartTime = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_GracefulRestart) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_GracefulRestart"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_GracefulRestart) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_GracefulRestart) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_GracefulRestart.
func (*NetworkInstance_Protocol_Isis_Level_GracefulRestart) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp struct {
	ΛMetadata             []ygot.Annotation                                                              `path:"@" ygotAnnotation:"true"`
	Checksum              *uint16                                                                        `path:"state/checksum" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛChecksum             []ygot.Annotation                                                              `path:"state/@checksum" ygotAnnotation:"true"`
	Flags                 []E_Lsp_Flags                                                                  `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags                []ygot.Annotation                                                              `path:"state/@flags" ygotAnnotation:"true"`
	IdLength              *uint8                                                                         `path:"state/id-length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIdLength             []ygot.Annotation                                                              `path:"state/@id-length" ygotAnnotation:"true"`
	IsType                *uint8                                                                         `path:"state/is-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIsType               []ygot.Annotation                                                              `path:"state/@is-type" ygotAnnotation:"true"`
	LspId                 *string                                                                        `path:"state/lsp-id|lsp-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛLspId                []ygot.Annotation                                                              `path:"state/@lsp-id|@lsp-id" ygotAnnotation:"true"`
	MaximumAreaAddresses  *uint8                                                                         `path:"state/maximum-area-addresses" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximumAreaAddresses []ygot.Annotation                                                              `path:"state/@maximum-area-addresses" ygotAnnotation:"true"`
	PduLength             *uint16                                                                        `path:"state/pdu-length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPduLength            []ygot.Annotation                                                              `path:"state/@pdu-length" ygotAnnotation:"true"`
	PduType               E_Lsp_PduType                                                                  `path:"state/pdu-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPduType              []ygot.Annotation                                                              `path:"state/@pdu-type" ygotAnnotation:"true"`
	RemainingLifetime     *uint16                                                                        `path:"state/remaining-lifetime" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRemainingLifetime    []ygot.Annotation                                                              `path:"state/@remaining-lifetime" ygotAnnotation:"true"`
	SequenceNumber        *uint32                                                                        `path:"state/sequence-number" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSequenceNumber       []ygot.Annotation                                                              `path:"state/@sequence-number" ygotAnnotation:"true"`
	Tlv                   map[E_IsisLsdbTypes_ISIS_TLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv `path:"tlvs/tlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTlv                  []ygot.Annotation                                                              `path:"tlvs/@tlv" ygotAnnotation:"true"`
	UndefinedTlv          map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv                `path:"undefined-tlvs/undefined-tlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUndefinedTlv         []ygot.Annotation                                                              `path:"undefined-tlvs/@undefined-tlv" ygotAnnotation:"true"`
	Version               *uint8                                                                         `path:"state/version" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛVersion              []ygot.Annotation                                                              `path:"state/@version" ygotAnnotation:"true"`
	Version2              *uint8                                                                         `path:"state/version2" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛVersion2             []ygot.Annotation                                                              `path:"state/@version2" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp) IsYANGGoStruct() {}

// NewTlv creates a new entry in the Tlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) NewTlv(Type E_IsisLsdbTypes_ISIS_TLV_TYPE) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Tlv == nil {
		t.Tlv = make(map[E_IsisLsdbTypes_ISIS_TLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Tlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Tlv", key)
	}

	t.Tlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv{
		Type: Type,
	}

	return t.Tlv[key], nil
}

// RenameTlv renames an entry in the list Tlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) RenameTlv(oldK, newK E_IsisLsdbTypes_ISIS_TLV_TYPE) error {
	if _, ok := t.Tlv[newK]; ok {
		return fmt.Errorf("key %v already exists in Tlv", newK)
	}

	e, ok := t.Tlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Tlv", oldK)
	}
	e.Type = newK

	t.Tlv[newK] = e
	delete(t.Tlv, oldK)
	return nil
}

// GetOrCreateTlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetOrCreateTlvMap() map[E_IsisLsdbTypes_ISIS_TLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv {
	if t.Tlv == nil {
		t.Tlv = make(map[E_IsisLsdbTypes_ISIS_TLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv)
	}
	return t.Tlv
}

// GetOrCreateTlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetOrCreateTlv(Type E_IsisLsdbTypes_ISIS_TLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv {

	key := Type

	if v, ok := t.Tlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTlv got unexpected error: %v", err))
	}
	return v
}

// GetTlv retrieves the value with the specified key from
// the Tlv map field of NetworkInstance_Protocol_Isis_Level_Lsp. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetTlv(Type E_IsisLsdbTypes_ISIS_TLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.Tlv[key]; ok {
		return lm
	}
	return nil
}

// AppendTlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv struct to the
// list Tlv of NetworkInstance_Protocol_Isis_Level_Lsp. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) AppendTlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) error {
	key := v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Tlv == nil {
		t.Tlv = make(map[E_IsisLsdbTypes_ISIS_TLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv)
	}

	if _, ok := t.Tlv[key]; ok {
		return fmt.Errorf("duplicate key for list Tlv %v", key)
	}

	t.Tlv[key] = v
	return nil
}

// NewUndefinedTlv creates a new entry in the UndefinedTlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) NewUndefinedTlv(Type uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedTlv == nil {
		t.UndefinedTlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UndefinedTlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UndefinedTlv", key)
	}

	t.UndefinedTlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv{
		Type: &Type,
	}

	return t.UndefinedTlv[key], nil
}

// RenameUndefinedTlv renames an entry in the list UndefinedTlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) RenameUndefinedTlv(oldK, newK uint8) error {
	if _, ok := t.UndefinedTlv[newK]; ok {
		return fmt.Errorf("key %v already exists in UndefinedTlv", newK)
	}

	e, ok := t.UndefinedTlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UndefinedTlv", oldK)
	}
	e.Type = &newK

	t.UndefinedTlv[newK] = e
	delete(t.UndefinedTlv, oldK)
	return nil
}

// GetOrCreateUndefinedTlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetOrCreateUndefinedTlvMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv {
	if t.UndefinedTlv == nil {
		t.UndefinedTlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv)
	}
	return t.UndefinedTlv
}

// GetOrCreateUndefinedTlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetOrCreateUndefinedTlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv {

	key := Type

	if v, ok := t.UndefinedTlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUndefinedTlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUndefinedTlv got unexpected error: %v", err))
	}
	return v
}

// GetUndefinedTlv retrieves the value with the specified key from
// the UndefinedTlv map field of NetworkInstance_Protocol_Isis_Level_Lsp. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetUndefinedTlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.UndefinedTlv[key]; ok {
		return lm
	}
	return nil
}

// AppendUndefinedTlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv struct to the
// list UndefinedTlv of NetworkInstance_Protocol_Isis_Level_Lsp. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) AppendUndefinedTlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv) error {
	if v.Type == nil {
		return fmt.Errorf("invalid nil key received for Type")
	}

	key := *v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedTlv == nil {
		t.UndefinedTlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv)
	}

	if _, ok := t.UndefinedTlv[key]; ok {
		return fmt.Errorf("duplicate key for list UndefinedTlv %v", key)
	}

	t.UndefinedTlv[key] = v
	return nil
}

// GetChecksum retrieves the value of the leaf Checksum from the NetworkInstance_Protocol_Isis_Level_Lsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Checksum is set, it can
// safely use t.GetChecksum() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Checksum == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetChecksum() uint16 {
	if t == nil || t.Checksum == nil {
		return 0
	}
	return *t.Checksum
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetFlags() []E_Lsp_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetIdLength retrieves the value of the leaf IdLength from the NetworkInstance_Protocol_Isis_Level_Lsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IdLength is set, it can
// safely use t.GetIdLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IdLength == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetIdLength() uint8 {
	if t == nil || t.IdLength == nil {
		return 0
	}
	return *t.IdLength
}

// GetIsType retrieves the value of the leaf IsType from the NetworkInstance_Protocol_Isis_Level_Lsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IsType is set, it can
// safely use t.GetIsType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IsType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetIsType() uint8 {
	if t == nil || t.IsType == nil {
		return 0
	}
	return *t.IsType
}

// GetLspId retrieves the value of the leaf LspId from the NetworkInstance_Protocol_Isis_Level_Lsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LspId is set, it can
// safely use t.GetLspId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LspId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetLspId() string {
	if t == nil || t.LspId == nil {
		return ""
	}
	return *t.LspId
}

// GetMaximumAreaAddresses retrieves the value of the leaf MaximumAreaAddresses from the NetworkInstance_Protocol_Isis_Level_Lsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaximumAreaAddresses is set, it can
// safely use t.GetMaximumAreaAddresses() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaximumAreaAddresses == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetMaximumAreaAddresses() uint8 {
	if t == nil || t.MaximumAreaAddresses == nil {
		return 0
	}
	return *t.MaximumAreaAddresses
}

// GetPduLength retrieves the value of the leaf PduLength from the NetworkInstance_Protocol_Isis_Level_Lsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PduLength is set, it can
// safely use t.GetPduLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PduLength == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetPduLength() uint16 {
	if t == nil || t.PduLength == nil {
		return 0
	}
	return *t.PduLength
}

// GetPduType retrieves the value of the leaf PduType from the NetworkInstance_Protocol_Isis_Level_Lsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PduType is set, it can
// safely use t.GetPduType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PduType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetPduType() E_Lsp_PduType {
	if t == nil || t.PduType == 0 {
		return 0
	}
	return t.PduType
}

// GetRemainingLifetime retrieves the value of the leaf RemainingLifetime from the NetworkInstance_Protocol_Isis_Level_Lsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemainingLifetime is set, it can
// safely use t.GetRemainingLifetime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemainingLifetime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetRemainingLifetime() uint16 {
	if t == nil || t.RemainingLifetime == nil {
		return 0
	}
	return *t.RemainingLifetime
}

// GetSequenceNumber retrieves the value of the leaf SequenceNumber from the NetworkInstance_Protocol_Isis_Level_Lsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SequenceNumber is set, it can
// safely use t.GetSequenceNumber() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SequenceNumber == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetSequenceNumber() uint32 {
	if t == nil || t.SequenceNumber == nil {
		return 0
	}
	return *t.SequenceNumber
}

// GetVersion retrieves the value of the leaf Version from the NetworkInstance_Protocol_Isis_Level_Lsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Version is set, it can
// safely use t.GetVersion() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Version == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetVersion() uint8 {
	if t == nil || t.Version == nil {
		return 1
	}
	return *t.Version
}

// GetVersion2 retrieves the value of the leaf Version2 from the NetworkInstance_Protocol_Isis_Level_Lsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Version2 is set, it can
// safely use t.GetVersion2() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Version2 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) GetVersion2() uint8 {
	if t == nil || t.Version2 == nil {
		return 1
	}
	return *t.Version2
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Version == nil {
		var v uint8 = 1
		t.Version = &v
	}
	if t.Version2 == nil {
		var v uint8 = 1
		t.Version2 = &v
	}
	for _, e := range t.Tlv {
		e.PopulateDefaults()
	}
	for _, e := range t.UndefinedTlv {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) ΛListKeyMap() (map[string]interface{}, error) {
	if t.LspId == nil {
		return nil, fmt.Errorf("nil value for key LspId")
	}

	return map[string]interface{}{
		"lsp-id": *t.LspId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp.
func (*NetworkInstance_Protocol_Isis_Level_Lsp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv struct {
	ΛMetadata                 []ygot.Annotation                                                     `path:"@" ygotAnnotation:"true"`
	AreaAddress               *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress              `path:"area-address" module:"openconfig-network-instance"`
	ΛAreaAddress              []ygot.Annotation                                                     `path:"@area-address" ygotAnnotation:"true"`
	Authentication            *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication           `path:"authentication" module:"openconfig-network-instance"`
	ΛAuthentication           []ygot.Annotation                                                     `path:"@authentication" ygotAnnotation:"true"`
	Capability                map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability    `path:"router-capabilities/capability" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCapability               []ygot.Annotation                                                     `path:"router-capabilities/@capability" ygotAnnotation:"true"`
	ExtendedIpv4Reachability  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability `path:"extended-ipv4-reachability" module:"openconfig-network-instance"`
	ΛExtendedIpv4Reachability []ygot.Annotation                                                     `path:"@extended-ipv4-reachability" ygotAnnotation:"true"`
	ExtendedIsReachability    *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability   `path:"extended-is-reachability" module:"openconfig-network-instance"`
	ΛExtendedIsReachability   []ygot.Annotation                                                     `path:"@extended-is-reachability" ygotAnnotation:"true"`
	Hostname                  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname                 `path:"hostname" module:"openconfig-network-instance"`
	ΛHostname                 []ygot.Annotation                                                     `path:"@hostname" ygotAnnotation:"true"`
	InstanceId                map[uint16]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId    `path:"instance-ids/instance-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInstanceId               []ygot.Annotation                                                     `path:"instance-ids/@instance-id" ygotAnnotation:"true"`
	Ipv4ExternalReachability  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability `path:"ipv4-external-reachability" module:"openconfig-network-instance"`
	ΛIpv4ExternalReachability []ygot.Annotation                                                     `path:"@ipv4-external-reachability" ygotAnnotation:"true"`
	Ipv4InterfaceAddresses    *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses   `path:"ipv4-interface-addresses" module:"openconfig-network-instance"`
	ΛIpv4InterfaceAddresses   []ygot.Annotation                                                     `path:"@ipv4-interface-addresses" ygotAnnotation:"true"`
	Ipv4InternalReachability  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability `path:"ipv4-internal-reachability" module:"openconfig-network-instance"`
	ΛIpv4InternalReachability []ygot.Annotation                                                     `path:"@ipv4-internal-reachability" ygotAnnotation:"true"`
	Ipv4Srlg                  map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg      `path:"ipv4-srlgs/ipv4-srlg" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpv4Srlg                 []ygot.Annotation                                                     `path:"ipv4-srlgs/@ipv4-srlg" ygotAnnotation:"true"`
	Ipv4TeRouterId            *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId           `path:"ipv4-te-router-id" module:"openconfig-network-instance"`
	ΛIpv4TeRouterId           []ygot.Annotation                                                     `path:"@ipv4-te-router-id" ygotAnnotation:"true"`
	Ipv6InterfaceAddresses    *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses   `path:"ipv6-interface-addresses" module:"openconfig-network-instance"`
	ΛIpv6InterfaceAddresses   []ygot.Annotation                                                     `path:"@ipv6-interface-addresses" ygotAnnotation:"true"`
	Ipv6Reachability          *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability         `path:"ipv6-reachability" module:"openconfig-network-instance"`
	ΛIpv6Reachability         []ygot.Annotation                                                     `path:"@ipv6-reachability" ygotAnnotation:"true"`
	Ipv6Srlg                  map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg      `path:"ipv6-srlgs/ipv6-srlg" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpv6Srlg                 []ygot.Annotation                                                     `path:"ipv6-srlgs/@ipv6-srlg" ygotAnnotation:"true"`
	Ipv6TeRouterId            *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId           `path:"ipv6-te-router-id" module:"openconfig-network-instance"`
	ΛIpv6TeRouterId           []ygot.Annotation                                                     `path:"@ipv6-te-router-id" ygotAnnotation:"true"`
	IsAliasId                 *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId                `path:"is-alias-id" module:"openconfig-network-instance"`
	ΛIsAliasId                []ygot.Annotation                                                     `path:"@is-alias-id" ygotAnnotation:"true"`
	IsReachability            *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability           `path:"is-reachability" module:"openconfig-network-instance"`
	ΛIsReachability           []ygot.Annotation                                                     `path:"@is-reachability" ygotAnnotation:"true"`
	IsisNeighborAttribute     *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute    `path:"isis-neighbor-attribute" module:"openconfig-network-instance"`
	ΛIsisNeighborAttribute    []ygot.Annotation                                                     `path:"@isis-neighbor-attribute" ygotAnnotation:"true"`
	LspBufferSize             *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize            `path:"lsp-buffer-size" module:"openconfig-network-instance"`
	ΛLspBufferSize            []ygot.Annotation                                                     `path:"@lsp-buffer-size" ygotAnnotation:"true"`
	MtIpv4Reachability        *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability       `path:"mt-ipv4-reachability" module:"openconfig-network-instance"`
	ΛMtIpv4Reachability       []ygot.Annotation                                                     `path:"@mt-ipv4-reachability" ygotAnnotation:"true"`
	MtIpv6Reachability        *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability       `path:"mt-ipv6-reachability" module:"openconfig-network-instance"`
	ΛMtIpv6Reachability       []ygot.Annotation                                                     `path:"@mt-ipv6-reachability" ygotAnnotation:"true"`
	MtIsisNeighborAttribute   *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute  `path:"mt-isis-neighbor-attribute" module:"openconfig-network-instance"`
	ΛMtIsisNeighborAttribute  []ygot.Annotation                                                     `path:"@mt-isis-neighbor-attribute" ygotAnnotation:"true"`
	MtIsn                     *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn                    `path:"mt-isn" module:"openconfig-network-instance"`
	ΛMtIsn                    []ygot.Annotation                                                     `path:"@mt-isn" ygotAnnotation:"true"`
	MultiTopology             *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology            `path:"multi-topology" module:"openconfig-network-instance"`
	ΛMultiTopology            []ygot.Annotation                                                     `path:"@multi-topology" ygotAnnotation:"true"`
	Nlpid                     *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid                    `path:"nlpid" module:"openconfig-network-instance"`
	ΛNlpid                    []ygot.Annotation                                                     `path:"@nlpid" ygotAnnotation:"true"`
	PurgeOi                   *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi                  `path:"purge-oi" module:"openconfig-network-instance"`
	ΛPurgeOi                  []ygot.Annotation                                                     `path:"@purge-oi" ygotAnnotation:"true"`
	Type                      E_IsisLsdbTypes_ISIS_TLV_TYPE                                         `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType                     []ygot.Annotation                                                     `path:"state/@type|@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) IsYANGGoStruct() {}

// NewCapability creates a new entry in the Capability list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) NewCapability(InstanceNumber uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Capability == nil {
		t.Capability = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability)
	}

	key := InstanceNumber

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Capability[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Capability", key)
	}

	t.Capability[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability{
		InstanceNumber: &InstanceNumber,
	}

	return t.Capability[key], nil
}

// RenameCapability renames an entry in the list Capability within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) RenameCapability(oldK, newK uint32) error {
	if _, ok := t.Capability[newK]; ok {
		return fmt.Errorf("key %v already exists in Capability", newK)
	}

	e, ok := t.Capability[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Capability", oldK)
	}
	e.InstanceNumber = &newK

	t.Capability[newK] = e
	delete(t.Capability, oldK)
	return nil
}

// GetOrCreateCapabilityMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateCapabilityMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability {
	if t.Capability == nil {
		t.Capability = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability)
	}
	return t.Capability
}

// GetOrCreateCapability retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateCapability(InstanceNumber uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability {

	key := InstanceNumber

	if v, ok := t.Capability[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewCapability(InstanceNumber)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateCapability got unexpected error: %v", err))
	}
	return v
}

// GetCapability retrieves the value with the specified key from
// the Capability map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetCapability(InstanceNumber uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability {

	if t == nil {
		return nil
	}

	key := InstanceNumber

	if lm, ok := t.Capability[key]; ok {
		return lm
	}
	return nil
}

// AppendCapability appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability struct to the
// list Capability of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) AppendCapability(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) error {
	if v.InstanceNumber == nil {
		return fmt.Errorf("invalid nil key received for InstanceNumber")
	}

	key := *v.InstanceNumber

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Capability == nil {
		t.Capability = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability)
	}

	if _, ok := t.Capability[key]; ok {
		return fmt.Errorf("duplicate key for list Capability %v", key)
	}

	t.Capability[key] = v
	return nil
}

// NewInstanceId creates a new entry in the InstanceId list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) NewInstanceId(InstanceId uint16) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.InstanceId == nil {
		t.InstanceId = make(map[uint16]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId)
	}

	key := InstanceId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.InstanceId[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list InstanceId", key)
	}

	t.InstanceId[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId{
		InstanceId: &InstanceId,
	}

	return t.InstanceId[key], nil
}

// RenameInstanceId renames an entry in the list InstanceId within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) RenameInstanceId(oldK, newK uint16) error {
	if _, ok := t.InstanceId[newK]; ok {
		return fmt.Errorf("key %v already exists in InstanceId", newK)
	}

	e, ok := t.InstanceId[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in InstanceId", oldK)
	}
	e.InstanceId = &newK

	t.InstanceId[newK] = e
	delete(t.InstanceId, oldK)
	return nil
}

// GetOrCreateInstanceIdMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateInstanceIdMap() map[uint16]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId {
	if t.InstanceId == nil {
		t.InstanceId = make(map[uint16]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId)
	}
	return t.InstanceId
}

// GetOrCreateInstanceId retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateInstanceId(InstanceId uint16) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId {

	key := InstanceId

	if v, ok := t.InstanceId[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInstanceId(InstanceId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInstanceId got unexpected error: %v", err))
	}
	return v
}

// GetInstanceId retrieves the value with the specified key from
// the InstanceId map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetInstanceId(InstanceId uint16) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId {

	if t == nil {
		return nil
	}

	key := InstanceId

	if lm, ok := t.InstanceId[key]; ok {
		return lm
	}
	return nil
}

// AppendInstanceId appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId struct to the
// list InstanceId of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) AppendInstanceId(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId) error {
	if v.InstanceId == nil {
		return fmt.Errorf("invalid nil key received for InstanceId")
	}

	key := *v.InstanceId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.InstanceId == nil {
		t.InstanceId = make(map[uint16]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId)
	}

	if _, ok := t.InstanceId[key]; ok {
		return fmt.Errorf("duplicate key for list InstanceId %v", key)
	}

	t.InstanceId[key] = v
	return nil
}

// NewIpv4Srlg creates a new entry in the Ipv4Srlg list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) NewIpv4Srlg(InstanceNumber uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Ipv4Srlg == nil {
		t.Ipv4Srlg = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg)
	}

	key := InstanceNumber

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Ipv4Srlg[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Ipv4Srlg", key)
	}

	t.Ipv4Srlg[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg{
		InstanceNumber: &InstanceNumber,
	}

	return t.Ipv4Srlg[key], nil
}

// RenameIpv4Srlg renames an entry in the list Ipv4Srlg within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) RenameIpv4Srlg(oldK, newK uint32) error {
	if _, ok := t.Ipv4Srlg[newK]; ok {
		return fmt.Errorf("key %v already exists in Ipv4Srlg", newK)
	}

	e, ok := t.Ipv4Srlg[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Ipv4Srlg", oldK)
	}
	e.InstanceNumber = &newK

	t.Ipv4Srlg[newK] = e
	delete(t.Ipv4Srlg, oldK)
	return nil
}

// GetOrCreateIpv4SrlgMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateIpv4SrlgMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg {
	if t.Ipv4Srlg == nil {
		t.Ipv4Srlg = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg)
	}
	return t.Ipv4Srlg
}

// GetOrCreateIpv4Srlg retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateIpv4Srlg(InstanceNumber uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg {

	key := InstanceNumber

	if v, ok := t.Ipv4Srlg[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewIpv4Srlg(InstanceNumber)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateIpv4Srlg got unexpected error: %v", err))
	}
	return v
}

// GetIpv4Srlg retrieves the value with the specified key from
// the Ipv4Srlg map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetIpv4Srlg(InstanceNumber uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg {

	if t == nil {
		return nil
	}

	key := InstanceNumber

	if lm, ok := t.Ipv4Srlg[key]; ok {
		return lm
	}
	return nil
}

// AppendIpv4Srlg appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg struct to the
// list Ipv4Srlg of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) AppendIpv4Srlg(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg) error {
	if v.InstanceNumber == nil {
		return fmt.Errorf("invalid nil key received for InstanceNumber")
	}

	key := *v.InstanceNumber

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Ipv4Srlg == nil {
		t.Ipv4Srlg = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg)
	}

	if _, ok := t.Ipv4Srlg[key]; ok {
		return fmt.Errorf("duplicate key for list Ipv4Srlg %v", key)
	}

	t.Ipv4Srlg[key] = v
	return nil
}

// NewIpv6Srlg creates a new entry in the Ipv6Srlg list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) NewIpv6Srlg(InstanceNumber uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Ipv6Srlg == nil {
		t.Ipv6Srlg = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg)
	}

	key := InstanceNumber

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Ipv6Srlg[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Ipv6Srlg", key)
	}

	t.Ipv6Srlg[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg{
		InstanceNumber: &InstanceNumber,
	}

	return t.Ipv6Srlg[key], nil
}

// RenameIpv6Srlg renames an entry in the list Ipv6Srlg within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) RenameIpv6Srlg(oldK, newK uint32) error {
	if _, ok := t.Ipv6Srlg[newK]; ok {
		return fmt.Errorf("key %v already exists in Ipv6Srlg", newK)
	}

	e, ok := t.Ipv6Srlg[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Ipv6Srlg", oldK)
	}
	e.InstanceNumber = &newK

	t.Ipv6Srlg[newK] = e
	delete(t.Ipv6Srlg, oldK)
	return nil
}

// GetOrCreateIpv6SrlgMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateIpv6SrlgMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg {
	if t.Ipv6Srlg == nil {
		t.Ipv6Srlg = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg)
	}
	return t.Ipv6Srlg
}

// GetOrCreateIpv6Srlg retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateIpv6Srlg(InstanceNumber uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg {

	key := InstanceNumber

	if v, ok := t.Ipv6Srlg[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewIpv6Srlg(InstanceNumber)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateIpv6Srlg got unexpected error: %v", err))
	}
	return v
}

// GetIpv6Srlg retrieves the value with the specified key from
// the Ipv6Srlg map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetIpv6Srlg(InstanceNumber uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg {

	if t == nil {
		return nil
	}

	key := InstanceNumber

	if lm, ok := t.Ipv6Srlg[key]; ok {
		return lm
	}
	return nil
}

// AppendIpv6Srlg appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg struct to the
// list Ipv6Srlg of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) AppendIpv6Srlg(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg) error {
	if v.InstanceNumber == nil {
		return fmt.Errorf("invalid nil key received for InstanceNumber")
	}

	key := *v.InstanceNumber

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Ipv6Srlg == nil {
		t.Ipv6Srlg = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg)
	}

	if _, ok := t.Ipv6Srlg[key]; ok {
		return fmt.Errorf("duplicate key for list Ipv6Srlg %v", key)
	}

	t.Ipv6Srlg[key] = v
	return nil
}

// GetOrCreateAreaAddress retrieves the value of the AreaAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateAreaAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress {
	if t.AreaAddress != nil {
		return t.AreaAddress
	}
	t.AreaAddress = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress{}
	return t.AreaAddress
}

// GetOrCreateAuthentication retrieves the value of the Authentication field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateAuthentication() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication {
	if t.Authentication != nil {
		return t.Authentication
	}
	t.Authentication = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication{}
	return t.Authentication
}

// GetOrCreateExtendedIpv4Reachability retrieves the value of the ExtendedIpv4Reachability field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateExtendedIpv4Reachability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability {
	if t.ExtendedIpv4Reachability != nil {
		return t.ExtendedIpv4Reachability
	}
	t.ExtendedIpv4Reachability = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability{}
	return t.ExtendedIpv4Reachability
}

// GetOrCreateExtendedIsReachability retrieves the value of the ExtendedIsReachability field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateExtendedIsReachability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability {
	if t.ExtendedIsReachability != nil {
		return t.ExtendedIsReachability
	}
	t.ExtendedIsReachability = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability{}
	return t.ExtendedIsReachability
}

// GetOrCreateHostname retrieves the value of the Hostname field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateHostname() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname {
	if t.Hostname != nil {
		return t.Hostname
	}
	t.Hostname = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname{}
	return t.Hostname
}

// GetOrCreateIpv4ExternalReachability retrieves the value of the Ipv4ExternalReachability field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateIpv4ExternalReachability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability {
	if t.Ipv4ExternalReachability != nil {
		return t.Ipv4ExternalReachability
	}
	t.Ipv4ExternalReachability = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability{}
	return t.Ipv4ExternalReachability
}

// GetOrCreateIpv4InterfaceAddresses retrieves the value of the Ipv4InterfaceAddresses field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateIpv4InterfaceAddresses() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses {
	if t.Ipv4InterfaceAddresses != nil {
		return t.Ipv4InterfaceAddresses
	}
	t.Ipv4InterfaceAddresses = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses{}
	return t.Ipv4InterfaceAddresses
}

// GetOrCreateIpv4InternalReachability retrieves the value of the Ipv4InternalReachability field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateIpv4InternalReachability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability {
	if t.Ipv4InternalReachability != nil {
		return t.Ipv4InternalReachability
	}
	t.Ipv4InternalReachability = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability{}
	return t.Ipv4InternalReachability
}

// GetOrCreateIpv4TeRouterId retrieves the value of the Ipv4TeRouterId field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateIpv4TeRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId {
	if t.Ipv4TeRouterId != nil {
		return t.Ipv4TeRouterId
	}
	t.Ipv4TeRouterId = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId{}
	return t.Ipv4TeRouterId
}

// GetOrCreateIpv6InterfaceAddresses retrieves the value of the Ipv6InterfaceAddresses field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateIpv6InterfaceAddresses() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses {
	if t.Ipv6InterfaceAddresses != nil {
		return t.Ipv6InterfaceAddresses
	}
	t.Ipv6InterfaceAddresses = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses{}
	return t.Ipv6InterfaceAddresses
}

// GetOrCreateIpv6Reachability retrieves the value of the Ipv6Reachability field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateIpv6Reachability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability {
	if t.Ipv6Reachability != nil {
		return t.Ipv6Reachability
	}
	t.Ipv6Reachability = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability{}
	return t.Ipv6Reachability
}

// GetOrCreateIpv6TeRouterId retrieves the value of the Ipv6TeRouterId field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateIpv6TeRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId {
	if t.Ipv6TeRouterId != nil {
		return t.Ipv6TeRouterId
	}
	t.Ipv6TeRouterId = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId{}
	return t.Ipv6TeRouterId
}

// GetOrCreateIsAliasId retrieves the value of the IsAliasId field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateIsAliasId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId {
	if t.IsAliasId != nil {
		return t.IsAliasId
	}
	t.IsAliasId = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId{}
	return t.IsAliasId
}

// GetOrCreateIsReachability retrieves the value of the IsReachability field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateIsReachability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability {
	if t.IsReachability != nil {
		return t.IsReachability
	}
	t.IsReachability = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability{}
	return t.IsReachability
}

// GetOrCreateIsisNeighborAttribute retrieves the value of the IsisNeighborAttribute field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateIsisNeighborAttribute() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute {
	if t.IsisNeighborAttribute != nil {
		return t.IsisNeighborAttribute
	}
	t.IsisNeighborAttribute = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute{}
	return t.IsisNeighborAttribute
}

// GetOrCreateLspBufferSize retrieves the value of the LspBufferSize field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateLspBufferSize() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize {
	if t.LspBufferSize != nil {
		return t.LspBufferSize
	}
	t.LspBufferSize = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize{}
	return t.LspBufferSize
}

// GetOrCreateMtIpv4Reachability retrieves the value of the MtIpv4Reachability field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateMtIpv4Reachability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability {
	if t.MtIpv4Reachability != nil {
		return t.MtIpv4Reachability
	}
	t.MtIpv4Reachability = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability{}
	return t.MtIpv4Reachability
}

// GetOrCreateMtIpv6Reachability retrieves the value of the MtIpv6Reachability field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateMtIpv6Reachability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability {
	if t.MtIpv6Reachability != nil {
		return t.MtIpv6Reachability
	}
	t.MtIpv6Reachability = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability{}
	return t.MtIpv6Reachability
}

// GetOrCreateMtIsisNeighborAttribute retrieves the value of the MtIsisNeighborAttribute field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateMtIsisNeighborAttribute() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute {
	if t.MtIsisNeighborAttribute != nil {
		return t.MtIsisNeighborAttribute
	}
	t.MtIsisNeighborAttribute = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute{}
	return t.MtIsisNeighborAttribute
}

// GetOrCreateMtIsn retrieves the value of the MtIsn field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateMtIsn() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn {
	if t.MtIsn != nil {
		return t.MtIsn
	}
	t.MtIsn = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn{}
	return t.MtIsn
}

// GetOrCreateMultiTopology retrieves the value of the MultiTopology field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateMultiTopology() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology {
	if t.MultiTopology != nil {
		return t.MultiTopology
	}
	t.MultiTopology = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology{}
	return t.MultiTopology
}

// GetOrCreateNlpid retrieves the value of the Nlpid field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreateNlpid() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid {
	if t.Nlpid != nil {
		return t.Nlpid
	}
	t.Nlpid = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid{}
	return t.Nlpid
}

// GetOrCreatePurgeOi retrieves the value of the PurgeOi field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetOrCreatePurgeOi() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi {
	if t.PurgeOi != nil {
		return t.PurgeOi
	}
	t.PurgeOi = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi{}
	return t.PurgeOi
}

// GetAreaAddress returns the value of the AreaAddress struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field AreaAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetAreaAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress {
	if t != nil && t.AreaAddress != nil {
		return t.AreaAddress
	}
	return nil
}

// GetAuthentication returns the value of the Authentication struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field Authentication is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetAuthentication() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication {
	if t != nil && t.Authentication != nil {
		return t.Authentication
	}
	return nil
}

// GetExtendedIpv4Reachability returns the value of the ExtendedIpv4Reachability struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field ExtendedIpv4Reachability is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetExtendedIpv4Reachability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability {
	if t != nil && t.ExtendedIpv4Reachability != nil {
		return t.ExtendedIpv4Reachability
	}
	return nil
}

// GetExtendedIsReachability returns the value of the ExtendedIsReachability struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field ExtendedIsReachability is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetExtendedIsReachability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability {
	if t != nil && t.ExtendedIsReachability != nil {
		return t.ExtendedIsReachability
	}
	return nil
}

// GetHostname returns the value of the Hostname struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field Hostname is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetHostname() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname {
	if t != nil && t.Hostname != nil {
		return t.Hostname
	}
	return nil
}

// GetIpv4ExternalReachability returns the value of the Ipv4ExternalReachability struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field Ipv4ExternalReachability is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetIpv4ExternalReachability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability {
	if t != nil && t.Ipv4ExternalReachability != nil {
		return t.Ipv4ExternalReachability
	}
	return nil
}

// GetIpv4InterfaceAddresses returns the value of the Ipv4InterfaceAddresses struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field Ipv4InterfaceAddresses is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetIpv4InterfaceAddresses() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses {
	if t != nil && t.Ipv4InterfaceAddresses != nil {
		return t.Ipv4InterfaceAddresses
	}
	return nil
}

// GetIpv4InternalReachability returns the value of the Ipv4InternalReachability struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field Ipv4InternalReachability is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetIpv4InternalReachability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability {
	if t != nil && t.Ipv4InternalReachability != nil {
		return t.Ipv4InternalReachability
	}
	return nil
}

// GetIpv4TeRouterId returns the value of the Ipv4TeRouterId struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field Ipv4TeRouterId is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetIpv4TeRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId {
	if t != nil && t.Ipv4TeRouterId != nil {
		return t.Ipv4TeRouterId
	}
	return nil
}

// GetIpv6InterfaceAddresses returns the value of the Ipv6InterfaceAddresses struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field Ipv6InterfaceAddresses is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetIpv6InterfaceAddresses() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses {
	if t != nil && t.Ipv6InterfaceAddresses != nil {
		return t.Ipv6InterfaceAddresses
	}
	return nil
}

// GetIpv6Reachability returns the value of the Ipv6Reachability struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field Ipv6Reachability is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetIpv6Reachability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability {
	if t != nil && t.Ipv6Reachability != nil {
		return t.Ipv6Reachability
	}
	return nil
}

// GetIpv6TeRouterId returns the value of the Ipv6TeRouterId struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field Ipv6TeRouterId is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetIpv6TeRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId {
	if t != nil && t.Ipv6TeRouterId != nil {
		return t.Ipv6TeRouterId
	}
	return nil
}

// GetIsAliasId returns the value of the IsAliasId struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field IsAliasId is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetIsAliasId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId {
	if t != nil && t.IsAliasId != nil {
		return t.IsAliasId
	}
	return nil
}

// GetIsReachability returns the value of the IsReachability struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field IsReachability is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetIsReachability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability {
	if t != nil && t.IsReachability != nil {
		return t.IsReachability
	}
	return nil
}

// GetIsisNeighborAttribute returns the value of the IsisNeighborAttribute struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field IsisNeighborAttribute is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetIsisNeighborAttribute() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute {
	if t != nil && t.IsisNeighborAttribute != nil {
		return t.IsisNeighborAttribute
	}
	return nil
}

// GetLspBufferSize returns the value of the LspBufferSize struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field LspBufferSize is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetLspBufferSize() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize {
	if t != nil && t.LspBufferSize != nil {
		return t.LspBufferSize
	}
	return nil
}

// GetMtIpv4Reachability returns the value of the MtIpv4Reachability struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field MtIpv4Reachability is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetMtIpv4Reachability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability {
	if t != nil && t.MtIpv4Reachability != nil {
		return t.MtIpv4Reachability
	}
	return nil
}

// GetMtIpv6Reachability returns the value of the MtIpv6Reachability struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field MtIpv6Reachability is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetMtIpv6Reachability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability {
	if t != nil && t.MtIpv6Reachability != nil {
		return t.MtIpv6Reachability
	}
	return nil
}

// GetMtIsisNeighborAttribute returns the value of the MtIsisNeighborAttribute struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field MtIsisNeighborAttribute is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetMtIsisNeighborAttribute() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute {
	if t != nil && t.MtIsisNeighborAttribute != nil {
		return t.MtIsisNeighborAttribute
	}
	return nil
}

// GetMtIsn returns the value of the MtIsn struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field MtIsn is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetMtIsn() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn {
	if t != nil && t.MtIsn != nil {
		return t.MtIsn
	}
	return nil
}

// GetMultiTopology returns the value of the MultiTopology struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field MultiTopology is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetMultiTopology() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology {
	if t != nil && t.MultiTopology != nil {
		return t.MultiTopology
	}
	return nil
}

// GetNlpid returns the value of the Nlpid struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field Nlpid is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetNlpid() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid {
	if t != nil && t.Nlpid != nil {
		return t.Nlpid
	}
	return nil
}

// GetPurgeOi returns the value of the PurgeOi struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv. If the receiver or the field PurgeOi is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetPurgeOi() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi {
	if t != nil && t.PurgeOi != nil {
		return t.PurgeOi
	}
	return nil
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) GetType() E_IsisLsdbTypes_ISIS_TLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AreaAddress.PopulateDefaults()
	t.Authentication.PopulateDefaults()
	t.ExtendedIpv4Reachability.PopulateDefaults()
	t.ExtendedIsReachability.PopulateDefaults()
	t.Hostname.PopulateDefaults()
	t.Ipv4ExternalReachability.PopulateDefaults()
	t.Ipv4InterfaceAddresses.PopulateDefaults()
	t.Ipv4InternalReachability.PopulateDefaults()
	t.Ipv4TeRouterId.PopulateDefaults()
	t.Ipv6InterfaceAddresses.PopulateDefaults()
	t.Ipv6Reachability.PopulateDefaults()
	t.Ipv6TeRouterId.PopulateDefaults()
	t.IsAliasId.PopulateDefaults()
	t.IsReachability.PopulateDefaults()
	t.IsisNeighborAttribute.PopulateDefaults()
	t.LspBufferSize.PopulateDefaults()
	t.MtIpv4Reachability.PopulateDefaults()
	t.MtIpv6Reachability.PopulateDefaults()
	t.MtIsisNeighborAttribute.PopulateDefaults()
	t.MtIsn.PopulateDefaults()
	t.MultiTopology.PopulateDefaults()
	t.Nlpid.PopulateDefaults()
	t.PurgeOi.PopulateDefaults()
	for _, e := range t.Capability {
		e.PopulateDefaults()
	}
	for _, e := range t.InstanceId {
		e.PopulateDefaults()
	}
	for _, e := range t.Ipv4Srlg {
		e.PopulateDefaults()
	}
	for _, e := range t.Ipv6Srlg {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"type": t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/area-address YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress) IsYANGGoStruct() {}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_AreaAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/authentication YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication struct {
	ΛMetadata          []ygot.Annotation           `path:"@" ygotAnnotation:"true"`
	AuthenticationKey  *string                     `path:"state/authentication-key" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthenticationKey []ygot.Annotation           `path:"state/@authentication-key" ygotAnnotation:"true"`
	CryptoType         E_Authentication_CryptoType `path:"state/crypto-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCryptoType        []ygot.Annotation           `path:"state/@crypto-type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication) IsYANGGoStruct() {}

// GetAuthenticationKey retrieves the value of the leaf AuthenticationKey from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthenticationKey is set, it can
// safely use t.GetAuthenticationKey() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthenticationKey == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication) GetAuthenticationKey() string {
	if t == nil || t.AuthenticationKey == nil {
		return ""
	}
	return *t.AuthenticationKey
}

// GetCryptoType retrieves the value of the leaf CryptoType from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CryptoType is set, it can
// safely use t.GetCryptoType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CryptoType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication) GetCryptoType() E_Authentication_CryptoType {
	if t == nil || t.CryptoType == 0 {
		return 0
	}
	return t.CryptoType
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Authentication) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/router-capabilities/capability YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability struct {
	ΛMetadata        []ygot.Annotation                                                                                   `path:"@" ygotAnnotation:"true"`
	Flags            []E_Capability_Flags                                                                                `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags           []ygot.Annotation                                                                                   `path:"state/@flags" ygotAnnotation:"true"`
	InstanceNumber   *uint32                                                                                             `path:"state/instance-number|instance-number" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛInstanceNumber  []ygot.Annotation                                                                                   `path:"state/@instance-number|@instance-number" ygotAnnotation:"true"`
	RouterId         *string                                                                                             `path:"state/router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouterId        []ygot.Annotation                                                                                   `path:"state/@router-id" ygotAnnotation:"true"`
	Subtlv           map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv `path:"subtlvs/subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubtlv          []ygot.Annotation                                                                                   `path:"subtlvs/@subtlv" ygotAnnotation:"true"`
	UndefinedSubtlv  map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv                   `path:"undefined-subtlvs/undefined-subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUndefinedSubtlv []ygot.Annotation                                                                                   `path:"undefined-subtlvs/@undefined-subtlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) IsYANGGoStruct() {}

// NewSubtlv creates a new entry in the Subtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) NewSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Subtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Subtlv", key)
	}

	t.Subtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv{
		Type: Type,
	}

	return t.Subtlv[key], nil
}

// RenameSubtlv renames an entry in the list Subtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) RenameSubtlv(oldK, newK E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) error {
	if _, ok := t.Subtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in Subtlv", newK)
	}

	e, ok := t.Subtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Subtlv", oldK)
	}
	e.Type = newK

	t.Subtlv[newK] = e
	delete(t.Subtlv, oldK)
	return nil
}

// GetOrCreateSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) GetOrCreateSubtlvMap() map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv {
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv)
	}
	return t.Subtlv
}

// GetOrCreateSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) GetOrCreateSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv {

	key := Type

	if v, ok := t.Subtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetSubtlv retrieves the value with the specified key from
// the Subtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) GetSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.Subtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv struct to the
// list Subtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) AppendSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv) error {
	key := v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv)
	}

	if _, ok := t.Subtlv[key]; ok {
		return fmt.Errorf("duplicate key for list Subtlv %v", key)
	}

	t.Subtlv[key] = v
	return nil
}

// NewUndefinedSubtlv creates a new entry in the UndefinedSubtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) NewUndefinedSubtlv(Type uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UndefinedSubtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UndefinedSubtlv", key)
	}

	t.UndefinedSubtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv{
		Type: &Type,
	}

	return t.UndefinedSubtlv[key], nil
}

// RenameUndefinedSubtlv renames an entry in the list UndefinedSubtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) RenameUndefinedSubtlv(oldK, newK uint8) error {
	if _, ok := t.UndefinedSubtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in UndefinedSubtlv", newK)
	}

	e, ok := t.UndefinedSubtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UndefinedSubtlv", oldK)
	}
	e.Type = &newK

	t.UndefinedSubtlv[newK] = e
	delete(t.UndefinedSubtlv, oldK)
	return nil
}

// GetOrCreateUndefinedSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) GetOrCreateUndefinedSubtlvMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv {
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv)
	}
	return t.UndefinedSubtlv
}

// GetOrCreateUndefinedSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) GetOrCreateUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv {

	key := Type

	if v, ok := t.UndefinedSubtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUndefinedSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUndefinedSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetUndefinedSubtlv retrieves the value with the specified key from
// the UndefinedSubtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) GetUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.UndefinedSubtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendUndefinedSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv struct to the
// list UndefinedSubtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) AppendUndefinedSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv) error {
	if v.Type == nil {
		return fmt.Errorf("invalid nil key received for Type")
	}

	key := *v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv)
	}

	if _, ok := t.UndefinedSubtlv[key]; ok {
		return fmt.Errorf("duplicate key for list UndefinedSubtlv %v", key)
	}

	t.UndefinedSubtlv[key] = v
	return nil
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) GetFlags() []E_Capability_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetInstanceNumber retrieves the value of the leaf InstanceNumber from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InstanceNumber is set, it can
// safely use t.GetInstanceNumber() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InstanceNumber == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) GetInstanceNumber() uint32 {
	if t == nil || t.InstanceNumber == nil {
		return 0
	}
	return *t.InstanceNumber
}

// GetRouterId retrieves the value of the leaf RouterId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterId is set, it can
// safely use t.GetRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) GetRouterId() string {
	if t == nil || t.RouterId == nil {
		return ""
	}
	return *t.RouterId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Subtlv {
		e.PopulateDefaults()
	}
	for _, e := range t.UndefinedSubtlv {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) ΛListKeyMap() (map[string]interface{}, error) {
	if t.InstanceNumber == nil {
		return nil, fmt.Errorf("nil value for key InstanceNumber")
	}

	return map[string]interface{}{
		"instance-number": *t.InstanceNumber,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/router-capabilities/capability/subtlvs/subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv struct {
	ΛMetadata                 []ygot.Annotation                                                                       `path:"@" ygotAnnotation:"true"`
	SegmentRoutingAlgorithms  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms `path:"segment-routing-algorithms" module:"openconfig-network-instance"`
	ΛSegmentRoutingAlgorithms []ygot.Annotation                                                                       `path:"@segment-routing-algorithms" ygotAnnotation:"true"`
	SegmentRoutingCapability  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability `path:"segment-routing-capability" module:"openconfig-network-instance"`
	ΛSegmentRoutingCapability []ygot.Annotation                                                                       `path:"@segment-routing-capability" ygotAnnotation:"true"`
	Type                      E_IsisLsdbTypes_ISIS_SUBTLV_TYPE                                                        `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType                     []ygot.Annotation                                                                       `path:"state/@type|@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv) IsYANGGoStruct() {}

// GetOrCreateSegmentRoutingAlgorithms retrieves the value of the SegmentRoutingAlgorithms field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv) GetOrCreateSegmentRoutingAlgorithms() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms {
	if t.SegmentRoutingAlgorithms != nil {
		return t.SegmentRoutingAlgorithms
	}
	t.SegmentRoutingAlgorithms = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms{}
	return t.SegmentRoutingAlgorithms
}

// GetOrCreateSegmentRoutingCapability retrieves the value of the SegmentRoutingCapability field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv) GetOrCreateSegmentRoutingCapability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability {
	if t.SegmentRoutingCapability != nil {
		return t.SegmentRoutingCapability
	}
	t.SegmentRoutingCapability = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability{}
	return t.SegmentRoutingCapability
}

// GetSegmentRoutingAlgorithms returns the value of the SegmentRoutingAlgorithms struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv. If the receiver or the field SegmentRoutingAlgorithms is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv) GetSegmentRoutingAlgorithms() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms {
	if t != nil && t.SegmentRoutingAlgorithms != nil {
		return t.SegmentRoutingAlgorithms
	}
	return nil
}

// GetSegmentRoutingCapability returns the value of the SegmentRoutingCapability struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv. If the receiver or the field SegmentRoutingCapability is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv) GetSegmentRoutingCapability() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability {
	if t != nil && t.SegmentRoutingCapability != nil {
		return t.SegmentRoutingCapability
	}
	return nil
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.SegmentRoutingAlgorithms.PopulateDefaults()
	t.SegmentRoutingCapability.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"type": t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/router-capabilities/capability/subtlvs/subtlv/segment-routing-algorithms YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms struct {
	ΛMetadata  []ygot.Annotation                      `path:"@" ygotAnnotation:"true"`
	Algorithm  []E_SegmentRoutingAlgorithms_Algorithm `path:"state/algorithm" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAlgorithm []ygot.Annotation                      `path:"state/@algorithm" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms) IsYANGGoStruct() {
}

// GetAlgorithm retrieves the value of the leaf Algorithm from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Algorithm is set, it can
// safely use t.GetAlgorithm() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Algorithm == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms) GetAlgorithm() []E_SegmentRoutingAlgorithms_Algorithm {
	if t == nil || t.Algorithm == nil {
		return nil
	}
	return t.Algorithm
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingAlgorithms) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/router-capabilities/capability/subtlvs/subtlv/segment-routing-capability YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability struct {
	ΛMetadata       []ygot.Annotation                                                                                                 `path:"@" ygotAnnotation:"true"`
	Flags           []E_SegmentRoutingCapability_Flags                                                                                `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags          []ygot.Annotation                                                                                                 `path:"state/@flags" ygotAnnotation:"true"`
	SrgbDescriptor  map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor `path:"srgb-descriptors/srgb-descriptor" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSrgbDescriptor []ygot.Annotation                                                                                                 `path:"srgb-descriptors/@srgb-descriptor" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability) IsYANGGoStruct() {
}

// NewSrgbDescriptor creates a new entry in the SrgbDescriptor list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability) NewSrgbDescriptor(Range uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SrgbDescriptor == nil {
		t.SrgbDescriptor = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor)
	}

	key := Range

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.SrgbDescriptor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list SrgbDescriptor", key)
	}

	t.SrgbDescriptor[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor{
		Range: &Range,
	}

	return t.SrgbDescriptor[key], nil
}

// RenameSrgbDescriptor renames an entry in the list SrgbDescriptor within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability) RenameSrgbDescriptor(oldK, newK uint32) error {
	if _, ok := t.SrgbDescriptor[newK]; ok {
		return fmt.Errorf("key %v already exists in SrgbDescriptor", newK)
	}

	e, ok := t.SrgbDescriptor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in SrgbDescriptor", oldK)
	}
	e.Range = &newK

	t.SrgbDescriptor[newK] = e
	delete(t.SrgbDescriptor, oldK)
	return nil
}

// GetOrCreateSrgbDescriptorMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability) GetOrCreateSrgbDescriptorMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor {
	if t.SrgbDescriptor == nil {
		t.SrgbDescriptor = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor)
	}
	return t.SrgbDescriptor
}

// GetOrCreateSrgbDescriptor retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability) GetOrCreateSrgbDescriptor(Range uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor {

	key := Range

	if v, ok := t.SrgbDescriptor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSrgbDescriptor(Range)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSrgbDescriptor got unexpected error: %v", err))
	}
	return v
}

// GetSrgbDescriptor retrieves the value with the specified key from
// the SrgbDescriptor map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability) GetSrgbDescriptor(Range uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor {

	if t == nil {
		return nil
	}

	key := Range

	if lm, ok := t.SrgbDescriptor[key]; ok {
		return lm
	}
	return nil
}

// AppendSrgbDescriptor appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor struct to the
// list SrgbDescriptor of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability) AppendSrgbDescriptor(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor) error {
	if v.Range == nil {
		return fmt.Errorf("invalid nil key received for Range")
	}

	key := *v.Range

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SrgbDescriptor == nil {
		t.SrgbDescriptor = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor)
	}

	if _, ok := t.SrgbDescriptor[key]; ok {
		return fmt.Errorf("duplicate key for list SrgbDescriptor %v", key)
	}

	t.SrgbDescriptor[key] = v
	return nil
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability) GetFlags() []E_SegmentRoutingCapability_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.SrgbDescriptor {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/router-capabilities/capability/subtlvs/subtlv/segment-routing-capability/srgb-descriptors/srgb-descriptor YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor struct {
	ΛMetadata []ygot.Annotation                                                                                                 `path:"@" ygotAnnotation:"true"`
	Label     NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor_Label_Union `path:"state/label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLabel    []ygot.Annotation                                                                                                 `path:"state/@label" ygotAnnotation:"true"`
	Range     *uint32                                                                                                           `path:"state/range|range" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛRange    []ygot.Annotation                                                                                                 `path:"state/@range|@range" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor) IsYANGGoStruct() {
}

// GetLabel retrieves the value of the leaf Label from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Label is set, it can
// safely use t.GetLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Label == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor) GetLabel() NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor_Label_Union {
	if t == nil || t.Label == nil {
		return nil
	}
	return t.Label
}

// GetRange retrieves the value of the leaf Range from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Range is set, it can
// safely use t.GetRange() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Range == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor) GetRange() uint32 {
	if t == nil || t.Range == nil {
		return 0
	}
	return *t.Range
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Range == nil {
		return nil, fmt.Errorf("nil value for key Range")
	}

	return map[string]interface{}{
		"range": *t.Range,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor_Label_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/router-capabilities/capability/subtlvs/subtlv/segment-routing-capability/srgb-descriptors/srgb-descriptor/state/label within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor_Label_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor_Label_Union()
}

// Documentation_for_NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor_Label_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor_Label_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor_Label_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor_Label_Union ensures that UnionUint32
// implements the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor_Label_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor_Label_Union() {
}

// To_NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor_Label_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor_Label_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor) To_NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor_Label_Union(i interface{}) (NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor_Label_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor_Label_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_Subtlv_SegmentRoutingCapability_SrgbDescriptor_Label_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/router-capabilities/capability/undefined-subtlvs/undefined-subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint8            `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint8            `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type|@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv) IsYANGGoStruct() {}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv) GetLength() uint8 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv) GetType() uint8 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Type == nil {
		return nil, fmt.Errorf("nil value for key Type")
	}

	return map[string]interface{}{
		"type": *t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Capability_UndefinedSubtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-ipv4-reachability YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability struct {
	ΛMetadata []ygot.Annotation                                                                       `path:"@" ygotAnnotation:"true"`
	Prefix    map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix `path:"prefixes/prefix" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefix   []ygot.Annotation                                                                       `path:"prefixes/@prefix" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability) IsYANGGoStruct() {}

// NewPrefix creates a new entry in the Prefix list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability) NewPrefix(Prefix string) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix)
	}

	key := Prefix

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Prefix[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Prefix", key)
	}

	t.Prefix[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix{
		Prefix: &Prefix,
	}

	return t.Prefix[key], nil
}

// RenamePrefix renames an entry in the list Prefix within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability) RenamePrefix(oldK, newK string) error {
	if _, ok := t.Prefix[newK]; ok {
		return fmt.Errorf("key %v already exists in Prefix", newK)
	}

	e, ok := t.Prefix[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Prefix", oldK)
	}
	e.Prefix = &newK

	t.Prefix[newK] = e
	delete(t.Prefix, oldK)
	return nil
}

// GetOrCreatePrefixMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability) GetOrCreatePrefixMap() map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix {
	if t.Prefix == nil {
		t.Prefix = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix)
	}
	return t.Prefix
}

// GetOrCreatePrefix retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability) GetOrCreatePrefix(Prefix string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix {

	key := Prefix

	if v, ok := t.Prefix[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPrefix(Prefix)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePrefix got unexpected error: %v", err))
	}
	return v
}

// GetPrefix retrieves the value with the specified key from
// the Prefix map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability) GetPrefix(Prefix string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix {

	if t == nil {
		return nil
	}

	key := Prefix

	if lm, ok := t.Prefix[key]; ok {
		return lm
	}
	return nil
}

// AppendPrefix appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix struct to the
// list Prefix of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability) AppendPrefix(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key received for Prefix")
	}

	key := *v.Prefix

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix)
	}

	if _, ok := t.Prefix[key]; ok {
		return fmt.Errorf("duplicate key for list Prefix %v", key)
	}

	t.Prefix[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Prefix {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-ipv4-reachability/prefixes/prefix YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix struct {
	ΛMetadata        []ygot.Annotation                                                                                                        `path:"@" ygotAnnotation:"true"`
	Metric           *uint32                                                                                                                  `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric          []ygot.Annotation                                                                                                        `path:"state/@metric" ygotAnnotation:"true"`
	Prefix           *string                                                                                                                  `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix          []ygot.Annotation                                                                                                        `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
	SBit             *bool                                                                                                                    `path:"state/s-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSBit            []ygot.Annotation                                                                                                        `path:"state/@s-bit" ygotAnnotation:"true"`
	Subtlv           map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv `path:"subtlvs/subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubtlv          []ygot.Annotation                                                                                                        `path:"subtlvs/@subtlv" ygotAnnotation:"true"`
	UndefinedSubtlv  map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv                   `path:"undefined-subtlvs/undefined-subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUndefinedSubtlv []ygot.Annotation                                                                                                        `path:"undefined-subtlvs/@undefined-subtlv" ygotAnnotation:"true"`
	UpDown           *bool                                                                                                                    `path:"state/up-down" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUpDown          []ygot.Annotation                                                                                                        `path:"state/@up-down" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) IsYANGGoStruct() {
}

// NewSubtlv creates a new entry in the Subtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) NewSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Subtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Subtlv", key)
	}

	t.Subtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv{
		Type: Type,
	}

	return t.Subtlv[key], nil
}

// RenameSubtlv renames an entry in the list Subtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) RenameSubtlv(oldK, newK E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) error {
	if _, ok := t.Subtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in Subtlv", newK)
	}

	e, ok := t.Subtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Subtlv", oldK)
	}
	e.Type = newK

	t.Subtlv[newK] = e
	delete(t.Subtlv, oldK)
	return nil
}

// GetOrCreateSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) GetOrCreateSubtlvMap() map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv {
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv)
	}
	return t.Subtlv
}

// GetOrCreateSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) GetOrCreateSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv {

	key := Type

	if v, ok := t.Subtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetSubtlv retrieves the value with the specified key from
// the Subtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) GetSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.Subtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv struct to the
// list Subtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) AppendSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) error {
	key := v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv)
	}

	if _, ok := t.Subtlv[key]; ok {
		return fmt.Errorf("duplicate key for list Subtlv %v", key)
	}

	t.Subtlv[key] = v
	return nil
}

// NewUndefinedSubtlv creates a new entry in the UndefinedSubtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) NewUndefinedSubtlv(Type uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UndefinedSubtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UndefinedSubtlv", key)
	}

	t.UndefinedSubtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv{
		Type: &Type,
	}

	return t.UndefinedSubtlv[key], nil
}

// RenameUndefinedSubtlv renames an entry in the list UndefinedSubtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) RenameUndefinedSubtlv(oldK, newK uint8) error {
	if _, ok := t.UndefinedSubtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in UndefinedSubtlv", newK)
	}

	e, ok := t.UndefinedSubtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UndefinedSubtlv", oldK)
	}
	e.Type = &newK

	t.UndefinedSubtlv[newK] = e
	delete(t.UndefinedSubtlv, oldK)
	return nil
}

// GetOrCreateUndefinedSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) GetOrCreateUndefinedSubtlvMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv {
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv)
	}
	return t.UndefinedSubtlv
}

// GetOrCreateUndefinedSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) GetOrCreateUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv {

	key := Type

	if v, ok := t.UndefinedSubtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUndefinedSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUndefinedSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetUndefinedSubtlv retrieves the value with the specified key from
// the UndefinedSubtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) GetUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.UndefinedSubtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendUndefinedSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv struct to the
// list UndefinedSubtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) AppendUndefinedSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv) error {
	if v.Type == nil {
		return fmt.Errorf("invalid nil key received for Type")
	}

	key := *v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv)
	}

	if _, ok := t.UndefinedSubtlv[key]; ok {
		return fmt.Errorf("duplicate key for list UndefinedSubtlv %v", key)
	}

	t.UndefinedSubtlv[key] = v
	return nil
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetSBit retrieves the value of the leaf SBit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SBit is set, it can
// safely use t.GetSBit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SBit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) GetSBit() bool {
	if t == nil || t.SBit == nil {
		return false
	}
	return *t.SBit
}

// GetUpDown retrieves the value of the leaf UpDown from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UpDown is set, it can
// safely use t.GetUpDown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UpDown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) GetUpDown() bool {
	if t == nil || t.UpDown == nil {
		return false
	}
	return *t.UpDown
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Subtlv {
		e.PopulateDefaults()
	}
	for _, e := range t.UndefinedSubtlv {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"prefix": *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-ipv4-reachability/prefixes/prefix/subtlvs/subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv struct {
	ΛMetadata           []ygot.Annotation                                                                                        `path:"@" ygotAnnotation:"true"`
	Flags               *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags                `path:"flags" module:"openconfig-network-instance"`
	ΛFlags              []ygot.Annotation                                                                                        `path:"@flags" ygotAnnotation:"true"`
	Ipv4SourceRouterId  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId   `path:"ipv4-source-router-id" module:"openconfig-network-instance"`
	ΛIpv4SourceRouterId []ygot.Annotation                                                                                        `path:"@ipv4-source-router-id" ygotAnnotation:"true"`
	Ipv6SourceRouterId  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId   `path:"ipv6-source-router-id" module:"openconfig-network-instance"`
	ΛIpv6SourceRouterId []ygot.Annotation                                                                                        `path:"@ipv6-source-router-id" ygotAnnotation:"true"`
	PrefixSid           map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid `path:"prefix-sids/prefix-sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixSid          []ygot.Annotation                                                                                        `path:"prefix-sids/@prefix-sid" ygotAnnotation:"true"`
	Tag                 *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag                  `path:"tag" module:"openconfig-network-instance"`
	ΛTag                []ygot.Annotation                                                                                        `path:"@tag" ygotAnnotation:"true"`
	Tag64               *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64                `path:"tag64" module:"openconfig-network-instance"`
	ΛTag64              []ygot.Annotation                                                                                        `path:"@tag64" ygotAnnotation:"true"`
	Type                E_IsisLsdbTypes_ISIS_SUBTLV_TYPE                                                                         `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType               []ygot.Annotation                                                                                        `path:"state/@type|@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) IsYANGGoStruct() {
}

// NewPrefixSid creates a new entry in the PrefixSid list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) NewPrefixSid(Value uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PrefixSid == nil {
		t.PrefixSid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid)
	}

	key := Value

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.PrefixSid[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list PrefixSid", key)
	}

	t.PrefixSid[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid{
		Value: &Value,
	}

	return t.PrefixSid[key], nil
}

// RenamePrefixSid renames an entry in the list PrefixSid within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) RenamePrefixSid(oldK, newK uint32) error {
	if _, ok := t.PrefixSid[newK]; ok {
		return fmt.Errorf("key %v already exists in PrefixSid", newK)
	}

	e, ok := t.PrefixSid[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in PrefixSid", oldK)
	}
	e.Value = &newK

	t.PrefixSid[newK] = e
	delete(t.PrefixSid, oldK)
	return nil
}

// GetOrCreatePrefixSidMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) GetOrCreatePrefixSidMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid {
	if t.PrefixSid == nil {
		t.PrefixSid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid)
	}
	return t.PrefixSid
}

// GetOrCreatePrefixSid retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) GetOrCreatePrefixSid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid {

	key := Value

	if v, ok := t.PrefixSid[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPrefixSid(Value)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePrefixSid got unexpected error: %v", err))
	}
	return v
}

// GetPrefixSid retrieves the value with the specified key from
// the PrefixSid map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) GetPrefixSid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid {

	if t == nil {
		return nil
	}

	key := Value

	if lm, ok := t.PrefixSid[key]; ok {
		return lm
	}
	return nil
}

// AppendPrefixSid appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid struct to the
// list PrefixSid of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) AppendPrefixSid(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid) error {
	if v.Value == nil {
		return fmt.Errorf("invalid nil key received for Value")
	}

	key := *v.Value

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PrefixSid == nil {
		t.PrefixSid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid)
	}

	if _, ok := t.PrefixSid[key]; ok {
		return fmt.Errorf("duplicate key for list PrefixSid %v", key)
	}

	t.PrefixSid[key] = v
	return nil
}

// GetOrCreateFlags retrieves the value of the Flags field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) GetOrCreateFlags() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags {
	if t.Flags != nil {
		return t.Flags
	}
	t.Flags = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags{}
	return t.Flags
}

// GetOrCreateIpv4SourceRouterId retrieves the value of the Ipv4SourceRouterId field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) GetOrCreateIpv4SourceRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId {
	if t.Ipv4SourceRouterId != nil {
		return t.Ipv4SourceRouterId
	}
	t.Ipv4SourceRouterId = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId{}
	return t.Ipv4SourceRouterId
}

// GetOrCreateIpv6SourceRouterId retrieves the value of the Ipv6SourceRouterId field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) GetOrCreateIpv6SourceRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId {
	if t.Ipv6SourceRouterId != nil {
		return t.Ipv6SourceRouterId
	}
	t.Ipv6SourceRouterId = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId{}
	return t.Ipv6SourceRouterId
}

// GetOrCreateTag retrieves the value of the Tag field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) GetOrCreateTag() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag {
	if t.Tag != nil {
		return t.Tag
	}
	t.Tag = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag{}
	return t.Tag
}

// GetOrCreateTag64 retrieves the value of the Tag64 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) GetOrCreateTag64() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64 {
	if t.Tag64 != nil {
		return t.Tag64
	}
	t.Tag64 = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64{}
	return t.Tag64
}

// GetFlags returns the value of the Flags struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv. If the receiver or the field Flags is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) GetFlags() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags {
	if t != nil && t.Flags != nil {
		return t.Flags
	}
	return nil
}

// GetIpv4SourceRouterId returns the value of the Ipv4SourceRouterId struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv. If the receiver or the field Ipv4SourceRouterId is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) GetIpv4SourceRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId {
	if t != nil && t.Ipv4SourceRouterId != nil {
		return t.Ipv4SourceRouterId
	}
	return nil
}

// GetIpv6SourceRouterId returns the value of the Ipv6SourceRouterId struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv. If the receiver or the field Ipv6SourceRouterId is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) GetIpv6SourceRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId {
	if t != nil && t.Ipv6SourceRouterId != nil {
		return t.Ipv6SourceRouterId
	}
	return nil
}

// GetTag returns the value of the Tag struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv. If the receiver or the field Tag is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) GetTag() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag {
	if t != nil && t.Tag != nil {
		return t.Tag
	}
	return nil
}

// GetTag64 returns the value of the Tag64 struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv. If the receiver or the field Tag64 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) GetTag64() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64 {
	if t != nil && t.Tag64 != nil {
		return t.Tag64
	}
	return nil
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Flags.PopulateDefaults()
	t.Ipv4SourceRouterId.PopulateDefaults()
	t.Ipv6SourceRouterId.PopulateDefaults()
	t.Tag.PopulateDefaults()
	t.Tag64.PopulateDefaults()
	for _, e := range t.PrefixSid {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"type": t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/flags YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags struct {
	ΛMetadata []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Flags     []E_Flags_Flags                  `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation                `path:"state/@flags" ygotAnnotation:"true"`
	Type      E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags) GetFlags() []E_Flags_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Flags) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/ipv4-source-router-id YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId struct {
	ΛMetadata []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	RouterId  *string                          `path:"state/router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouterId []ygot.Annotation                `path:"state/@router-id" ygotAnnotation:"true"`
	Type      E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId) IsYANGGoStruct() {
}

// GetRouterId retrieves the value of the leaf RouterId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterId is set, it can
// safely use t.GetRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId) GetRouterId() string {
	if t == nil || t.RouterId == nil {
		return ""
	}
	return *t.RouterId
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/ipv6-source-router-id YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId struct {
	ΛMetadata []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	RouterId  *string                          `path:"state/router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouterId []ygot.Annotation                `path:"state/@router-id" ygotAnnotation:"true"`
	Type      E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId) IsYANGGoStruct() {
}

// GetRouterId retrieves the value of the leaf RouterId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterId is set, it can
// safely use t.GetRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId) GetRouterId() string {
	if t == nil || t.RouterId == nil {
		return ""
	}
	return *t.RouterId
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/prefix-sids/prefix-sid YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid struct {
	ΛMetadata  []ygot.Annotation   `path:"@" ygotAnnotation:"true"`
	Algorithm  *uint8              `path:"state/algorithm" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAlgorithm []ygot.Annotation   `path:"state/@algorithm" ygotAnnotation:"true"`
	Flags      []E_PrefixSid_Flags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags     []ygot.Annotation   `path:"state/@flags" ygotAnnotation:"true"`
	Value      *uint32             `path:"state/value|value" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛValue     []ygot.Annotation   `path:"state/@value|@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid) IsYANGGoStruct() {
}

// GetAlgorithm retrieves the value of the leaf Algorithm from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Algorithm is set, it can
// safely use t.GetAlgorithm() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Algorithm == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid) GetAlgorithm() uint8 {
	if t == nil || t.Algorithm == nil {
		return 0
	}
	return *t.Algorithm
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid) GetFlags() []E_PrefixSid_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid) GetValue() uint32 {
	if t == nil || t.Value == nil {
		return 0
	}
	return *t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Value == nil {
		return nil, fmt.Errorf("nil value for key Value")
	}

	return map[string]interface{}{
		"value": *t.Value,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_PrefixSid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/tag YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Tag32     []uint32          `path:"state/tag32" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTag32    []ygot.Annotation `path:"state/@tag32" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag) IsYANGGoStruct() {
}

// GetTag32 retrieves the value of the leaf Tag32 from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tag32 is set, it can
// safely use t.GetTag32() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tag32 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag) GetTag32() []uint32 {
	if t == nil || t.Tag32 == nil {
		return nil
	}
	return t.Tag32
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64 represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/tag64 YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64 struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Tag64     []uint64          `path:"state/tag64" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTag64    []ygot.Annotation `path:"state/@tag64" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64) IsYANGGoStruct() {
}

// GetTag64 retrieves the value of the leaf Tag64 from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tag64 is set, it can
// safely use t.GetTag64() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tag64 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64) GetTag64() []uint64 {
	if t == nil || t.Tag64 == nil {
		return nil
	}
	return t.Tag64
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_Subtlv_Tag64) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-ipv4-reachability/prefixes/prefix/undefined-subtlvs/undefined-subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint8            `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint8            `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type|@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv) IsYANGGoStruct() {
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv) GetLength() uint8 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv) GetType() uint8 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Type == nil {
		return nil, fmt.Errorf("nil value for key Type")
	}

	return map[string]interface{}{
		"type": *t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIpv4Reachability_Prefix_UndefinedSubtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability struct {
	ΛMetadata []ygot.Annotation                                                                       `path:"@" ygotAnnotation:"true"`
	Neighbor  map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor `path:"neighbors/neighbor" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighbor []ygot.Annotation                                                                       `path:"neighbors/@neighbor" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability) IsYANGGoStruct() {}

// NewNeighbor creates a new entry in the Neighbor list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability) NewNeighbor(SystemId string) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor)
	}

	key := SystemId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor{
		SystemId: &SystemId,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.SystemId = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability) GetOrCreateNeighborMap() map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability) GetOrCreateNeighbor(SystemId string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor {

	key := SystemId

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(SystemId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability) GetNeighbor(SystemId string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor {

	if t == nil {
		return nil
	}

	key := SystemId

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor struct to the
// list Neighbor of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability) AppendNeighbor(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor) error {
	if v.SystemId == nil {
		return fmt.Errorf("invalid nil key received for SystemId")
	}

	key := *v.SystemId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor struct {
	ΛMetadata []ygot.Annotation                                                                                `path:"@" ygotAnnotation:"true"`
	Instance  map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance `path:"instances/instance" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInstance []ygot.Annotation                                                                                `path:"instances/@instance" ygotAnnotation:"true"`
	SystemId  *string                                                                                          `path:"state/system-id|system-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSystemId []ygot.Annotation                                                                                `path:"state/@system-id|@system-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor) IsYANGGoStruct() {
}

// NewInstance creates a new entry in the Instance list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor) NewInstance(Id uint64) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Instance == nil {
		t.Instance = make(map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Instance[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Instance", key)
	}

	t.Instance[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance{
		Id: &Id,
	}

	return t.Instance[key], nil
}

// RenameInstance renames an entry in the list Instance within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor) RenameInstance(oldK, newK uint64) error {
	if _, ok := t.Instance[newK]; ok {
		return fmt.Errorf("key %v already exists in Instance", newK)
	}

	e, ok := t.Instance[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Instance", oldK)
	}
	e.Id = &newK

	t.Instance[newK] = e
	delete(t.Instance, oldK)
	return nil
}

// GetOrCreateInstanceMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor) GetOrCreateInstanceMap() map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance {
	if t.Instance == nil {
		t.Instance = make(map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance)
	}
	return t.Instance
}

// GetOrCreateInstance retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor) GetOrCreateInstance(Id uint64) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance {

	key := Id

	if v, ok := t.Instance[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInstance(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInstance got unexpected error: %v", err))
	}
	return v
}

// GetInstance retrieves the value with the specified key from
// the Instance map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor) GetInstance(Id uint64) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.Instance[key]; ok {
		return lm
	}
	return nil
}

// AppendInstance appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance struct to the
// list Instance of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor) AppendInstance(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Instance == nil {
		t.Instance = make(map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance)
	}

	if _, ok := t.Instance[key]; ok {
		return fmt.Errorf("duplicate key for list Instance %v", key)
	}

	t.Instance[key] = v
	return nil
}

// GetSystemId retrieves the value of the leaf SystemId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemId is set, it can
// safely use t.GetSystemId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor) GetSystemId() string {
	if t == nil || t.SystemId == nil {
		return ""
	}
	return *t.SystemId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Instance {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.SystemId == nil {
		return nil, fmt.Errorf("nil value for key SystemId")
	}

	return map[string]interface{}{
		"system-id": *t.SystemId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance struct {
	ΛMetadata        []ygot.Annotation                                                                                                                 `path:"@" ygotAnnotation:"true"`
	Id               *uint64                                                                                                                           `path:"state/id|id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛId              []ygot.Annotation                                                                                                                 `path:"state/@id|@id" ygotAnnotation:"true"`
	Metric           *uint32                                                                                                                           `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric          []ygot.Annotation                                                                                                                 `path:"state/@metric" ygotAnnotation:"true"`
	Subtlv           map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv `path:"subtlvs/subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubtlv          []ygot.Annotation                                                                                                                 `path:"subtlvs/@subtlv" ygotAnnotation:"true"`
	UndefinedSubtlv  map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv                   `path:"undefined-subtlvs/undefined-subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUndefinedSubtlv []ygot.Annotation                                                                                                                 `path:"undefined-subtlvs/@undefined-subtlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) IsYANGGoStruct() {
}

// NewSubtlv creates a new entry in the Subtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) NewSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Subtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Subtlv", key)
	}

	t.Subtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv{
		Type: Type,
	}

	return t.Subtlv[key], nil
}

// RenameSubtlv renames an entry in the list Subtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) RenameSubtlv(oldK, newK E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) error {
	if _, ok := t.Subtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in Subtlv", newK)
	}

	e, ok := t.Subtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Subtlv", oldK)
	}
	e.Type = newK

	t.Subtlv[newK] = e
	delete(t.Subtlv, oldK)
	return nil
}

// GetOrCreateSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) GetOrCreateSubtlvMap() map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv {
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv)
	}
	return t.Subtlv
}

// GetOrCreateSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) GetOrCreateSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv {

	key := Type

	if v, ok := t.Subtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetSubtlv retrieves the value with the specified key from
// the Subtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) GetSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.Subtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv struct to the
// list Subtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) AppendSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) error {
	key := v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv)
	}

	if _, ok := t.Subtlv[key]; ok {
		return fmt.Errorf("duplicate key for list Subtlv %v", key)
	}

	t.Subtlv[key] = v
	return nil
}

// NewUndefinedSubtlv creates a new entry in the UndefinedSubtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) NewUndefinedSubtlv(Type uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UndefinedSubtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UndefinedSubtlv", key)
	}

	t.UndefinedSubtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv{
		Type: &Type,
	}

	return t.UndefinedSubtlv[key], nil
}

// RenameUndefinedSubtlv renames an entry in the list UndefinedSubtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) RenameUndefinedSubtlv(oldK, newK uint8) error {
	if _, ok := t.UndefinedSubtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in UndefinedSubtlv", newK)
	}

	e, ok := t.UndefinedSubtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UndefinedSubtlv", oldK)
	}
	e.Type = &newK

	t.UndefinedSubtlv[newK] = e
	delete(t.UndefinedSubtlv, oldK)
	return nil
}

// GetOrCreateUndefinedSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) GetOrCreateUndefinedSubtlvMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv {
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv)
	}
	return t.UndefinedSubtlv
}

// GetOrCreateUndefinedSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) GetOrCreateUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv {

	key := Type

	if v, ok := t.UndefinedSubtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUndefinedSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUndefinedSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetUndefinedSubtlv retrieves the value with the specified key from
// the UndefinedSubtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) GetUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.UndefinedSubtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendUndefinedSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv struct to the
// list UndefinedSubtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) AppendUndefinedSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv) error {
	if v.Type == nil {
		return fmt.Errorf("invalid nil key received for Type")
	}

	key := *v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv)
	}

	if _, ok := t.UndefinedSubtlv[key]; ok {
		return fmt.Errorf("duplicate key for list UndefinedSubtlv %v", key)
	}

	t.UndefinedSubtlv[key] = v
	return nil
}

// GetId retrieves the value of the leaf Id from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) GetId() uint64 {
	if t == nil || t.Id == nil {
		return 0
	}
	return *t.Id
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Subtlv {
		e.PopulateDefaults()
	}
	for _, e := range t.UndefinedSubtlv {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv struct {
	ΛMetadata                   []ygot.Annotation                                                                                                          `path:"@" ygotAnnotation:"true"`
	AdjacencySid                map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid       `path:"adjacency-sids/adjacency-sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdjacencySid               []ygot.Annotation                                                                                                          `path:"adjacency-sids/@adjacency-sid" ygotAnnotation:"true"`
	AdminGroup                  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup                    `path:"admin-group" module:"openconfig-network-instance"`
	ΛAdminGroup                 []ygot.Annotation                                                                                                          `path:"@admin-group" ygotAnnotation:"true"`
	AvailableBandwidth          *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth            `path:"available-bandwidth" module:"openconfig-network-instance"`
	ΛAvailableBandwidth         []ygot.Annotation                                                                                                          `path:"@available-bandwidth" ygotAnnotation:"true"`
	BandwidthConstraint         map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint `path:"bandwidth-constraints/bandwidth-constraint" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidthConstraint        []ygot.Annotation                                                                                                          `path:"bandwidth-constraints/@bandwidth-constraint" ygotAnnotation:"true"`
	ExtendedAdminGroup          *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup            `path:"extended-admin-group" module:"openconfig-network-instance"`
	ΛExtendedAdminGroup         []ygot.Annotation                                                                                                          `path:"@extended-admin-group" ygotAnnotation:"true"`
	Ipv4InterfaceAddress        *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress          `path:"ipv4-interface-address" module:"openconfig-network-instance"`
	ΛIpv4InterfaceAddress       []ygot.Annotation                                                                                                          `path:"@ipv4-interface-address" ygotAnnotation:"true"`
	Ipv4NeighborAddress         *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress           `path:"ipv4-neighbor-address" module:"openconfig-network-instance"`
	ΛIpv4NeighborAddress        []ygot.Annotation                                                                                                          `path:"@ipv4-neighbor-address" ygotAnnotation:"true"`
	Ipv6InterfaceAddress        *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress          `path:"ipv6-interface-address" module:"openconfig-network-instance"`
	ΛIpv6InterfaceAddress       []ygot.Annotation                                                                                                          `path:"@ipv6-interface-address" ygotAnnotation:"true"`
	Ipv6NeighborAddress         *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress           `path:"ipv6-neighbor-address" module:"openconfig-network-instance"`
	ΛIpv6NeighborAddress        []ygot.Annotation                                                                                                          `path:"@ipv6-neighbor-address" ygotAnnotation:"true"`
	LanAdjacencySid             map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid    `path:"lan-adjacency-sids/lan-adjacency-sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLanAdjacencySid            []ygot.Annotation                                                                                                          `path:"lan-adjacency-sids/@lan-adjacency-sid" ygotAnnotation:"true"`
	LinkAttributes              *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes                `path:"link-attributes" module:"openconfig-network-instance"`
	ΛLinkAttributes             []ygot.Annotation                                                                                                          `path:"@link-attributes" ygotAnnotation:"true"`
	LinkDelay                   *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay                     `path:"link-delay" module:"openconfig-network-instance"`
	ΛLinkDelay                  []ygot.Annotation                                                                                                          `path:"@link-delay" ygotAnnotation:"true"`
	LinkDelayVariation          *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation            `path:"link-delay-variation" module:"openconfig-network-instance"`
	ΛLinkDelayVariation         []ygot.Annotation                                                                                                          `path:"@link-delay-variation" ygotAnnotation:"true"`
	LinkId                      *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId                        `path:"link-id" module:"openconfig-network-instance"`
	ΛLinkId                     []ygot.Annotation                                                                                                          `path:"@link-id" ygotAnnotation:"true"`
	LinkLoss                    *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss                      `path:"link-loss" module:"openconfig-network-instance"`
	ΛLinkLoss                   []ygot.Annotation                                                                                                          `path:"@link-loss" ygotAnnotation:"true"`
	LinkProtectionType          *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType            `path:"link-protection-type" module:"openconfig-network-instance"`
	ΛLinkProtectionType         []ygot.Annotation                                                                                                          `path:"@link-protection-type" ygotAnnotation:"true"`
	MaxLinkBandwidth            *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth              `path:"max-link-bandwidth" module:"openconfig-network-instance"`
	ΛMaxLinkBandwidth           []ygot.Annotation                                                                                                          `path:"@max-link-bandwidth" ygotAnnotation:"true"`
	MaxReservableLinkBandwidth  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth    `path:"max-reservable-link-bandwidth" module:"openconfig-network-instance"`
	ΛMaxReservableLinkBandwidth []ygot.Annotation                                                                                                          `path:"@max-reservable-link-bandwidth" ygotAnnotation:"true"`
	MinMaxLinkDelay             *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay               `path:"min-max-link-delay" module:"openconfig-network-instance"`
	ΛMinMaxLinkDelay            []ygot.Annotation                                                                                                          `path:"@min-max-link-delay" ygotAnnotation:"true"`
	ResidualBandwidth           *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth             `path:"residual-bandwidth" module:"openconfig-network-instance"`
	ΛResidualBandwidth          []ygot.Annotation                                                                                                          `path:"@residual-bandwidth" ygotAnnotation:"true"`
	SetupPriority               map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority       `path:"unreserved-bandwidth/setup-priority" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSetupPriority              []ygot.Annotation                                                                                                          `path:"unreserved-bandwidth/@setup-priority" ygotAnnotation:"true"`
	TeDefaultMetric             *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric               `path:"te-default-metric" module:"openconfig-network-instance"`
	ΛTeDefaultMetric            []ygot.Annotation                                                                                                          `path:"@te-default-metric" ygotAnnotation:"true"`
	Type                        E_IsisLsdbTypes_ISIS_SUBTLV_TYPE                                                                                           `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType                       []ygot.Annotation                                                                                                          `path:"state/@type|@type" ygotAnnotation:"true"`
	UnconstrainedLsp            *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp              `path:"unconstrained-lsp" module:"openconfig-network-instance"`
	ΛUnconstrainedLsp           []ygot.Annotation                                                                                                          `path:"@unconstrained-lsp" ygotAnnotation:"true"`
	UtilizedBandwidth           *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth             `path:"utilized-bandwidth" module:"openconfig-network-instance"`
	ΛUtilizedBandwidth          []ygot.Annotation                                                                                                          `path:"@utilized-bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) IsYANGGoStruct() {
}

// NewAdjacencySid creates a new entry in the AdjacencySid list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) NewAdjacencySid(Value uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AdjacencySid == nil {
		t.AdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid)
	}

	key := Value

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AdjacencySid[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AdjacencySid", key)
	}

	t.AdjacencySid[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid{
		Value: &Value,
	}

	return t.AdjacencySid[key], nil
}

// RenameAdjacencySid renames an entry in the list AdjacencySid within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) RenameAdjacencySid(oldK, newK uint32) error {
	if _, ok := t.AdjacencySid[newK]; ok {
		return fmt.Errorf("key %v already exists in AdjacencySid", newK)
	}

	e, ok := t.AdjacencySid[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AdjacencySid", oldK)
	}
	e.Value = &newK

	t.AdjacencySid[newK] = e
	delete(t.AdjacencySid, oldK)
	return nil
}

// GetOrCreateAdjacencySidMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateAdjacencySidMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid {
	if t.AdjacencySid == nil {
		t.AdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid)
	}
	return t.AdjacencySid
}

// GetOrCreateAdjacencySid retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateAdjacencySid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid {

	key := Value

	if v, ok := t.AdjacencySid[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAdjacencySid(Value)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAdjacencySid got unexpected error: %v", err))
	}
	return v
}

// GetAdjacencySid retrieves the value with the specified key from
// the AdjacencySid map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetAdjacencySid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid {

	if t == nil {
		return nil
	}

	key := Value

	if lm, ok := t.AdjacencySid[key]; ok {
		return lm
	}
	return nil
}

// AppendAdjacencySid appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid struct to the
// list AdjacencySid of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) AppendAdjacencySid(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid) error {
	if v.Value == nil {
		return fmt.Errorf("invalid nil key received for Value")
	}

	key := *v.Value

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AdjacencySid == nil {
		t.AdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid)
	}

	if _, ok := t.AdjacencySid[key]; ok {
		return fmt.Errorf("duplicate key for list AdjacencySid %v", key)
	}

	t.AdjacencySid[key] = v
	return nil
}

// NewBandwidthConstraint creates a new entry in the BandwidthConstraint list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) NewBandwidthConstraint(ModelId uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.BandwidthConstraint == nil {
		t.BandwidthConstraint = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint)
	}

	key := ModelId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.BandwidthConstraint[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list BandwidthConstraint", key)
	}

	t.BandwidthConstraint[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint{
		ModelId: &ModelId,
	}

	return t.BandwidthConstraint[key], nil
}

// RenameBandwidthConstraint renames an entry in the list BandwidthConstraint within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) RenameBandwidthConstraint(oldK, newK uint8) error {
	if _, ok := t.BandwidthConstraint[newK]; ok {
		return fmt.Errorf("key %v already exists in BandwidthConstraint", newK)
	}

	e, ok := t.BandwidthConstraint[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in BandwidthConstraint", oldK)
	}
	e.ModelId = &newK

	t.BandwidthConstraint[newK] = e
	delete(t.BandwidthConstraint, oldK)
	return nil
}

// GetOrCreateBandwidthConstraintMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateBandwidthConstraintMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint {
	if t.BandwidthConstraint == nil {
		t.BandwidthConstraint = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint)
	}
	return t.BandwidthConstraint
}

// GetOrCreateBandwidthConstraint retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateBandwidthConstraint(ModelId uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint {

	key := ModelId

	if v, ok := t.BandwidthConstraint[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewBandwidthConstraint(ModelId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateBandwidthConstraint got unexpected error: %v", err))
	}
	return v
}

// GetBandwidthConstraint retrieves the value with the specified key from
// the BandwidthConstraint map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetBandwidthConstraint(ModelId uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint {

	if t == nil {
		return nil
	}

	key := ModelId

	if lm, ok := t.BandwidthConstraint[key]; ok {
		return lm
	}
	return nil
}

// AppendBandwidthConstraint appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint struct to the
// list BandwidthConstraint of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) AppendBandwidthConstraint(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint) error {
	if v.ModelId == nil {
		return fmt.Errorf("invalid nil key received for ModelId")
	}

	key := *v.ModelId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.BandwidthConstraint == nil {
		t.BandwidthConstraint = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint)
	}

	if _, ok := t.BandwidthConstraint[key]; ok {
		return fmt.Errorf("duplicate key for list BandwidthConstraint %v", key)
	}

	t.BandwidthConstraint[key] = v
	return nil
}

// NewLanAdjacencySid creates a new entry in the LanAdjacencySid list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) NewLanAdjacencySid(Value uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.LanAdjacencySid == nil {
		t.LanAdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid)
	}

	key := Value

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.LanAdjacencySid[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list LanAdjacencySid", key)
	}

	t.LanAdjacencySid[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid{
		Value: &Value,
	}

	return t.LanAdjacencySid[key], nil
}

// RenameLanAdjacencySid renames an entry in the list LanAdjacencySid within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) RenameLanAdjacencySid(oldK, newK uint32) error {
	if _, ok := t.LanAdjacencySid[newK]; ok {
		return fmt.Errorf("key %v already exists in LanAdjacencySid", newK)
	}

	e, ok := t.LanAdjacencySid[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in LanAdjacencySid", oldK)
	}
	e.Value = &newK

	t.LanAdjacencySid[newK] = e
	delete(t.LanAdjacencySid, oldK)
	return nil
}

// GetOrCreateLanAdjacencySidMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateLanAdjacencySidMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid {
	if t.LanAdjacencySid == nil {
		t.LanAdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid)
	}
	return t.LanAdjacencySid
}

// GetOrCreateLanAdjacencySid retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateLanAdjacencySid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid {

	key := Value

	if v, ok := t.LanAdjacencySid[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewLanAdjacencySid(Value)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateLanAdjacencySid got unexpected error: %v", err))
	}
	return v
}

// GetLanAdjacencySid retrieves the value with the specified key from
// the LanAdjacencySid map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetLanAdjacencySid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid {

	if t == nil {
		return nil
	}

	key := Value

	if lm, ok := t.LanAdjacencySid[key]; ok {
		return lm
	}
	return nil
}

// AppendLanAdjacencySid appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid struct to the
// list LanAdjacencySid of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) AppendLanAdjacencySid(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid) error {
	if v.Value == nil {
		return fmt.Errorf("invalid nil key received for Value")
	}

	key := *v.Value

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.LanAdjacencySid == nil {
		t.LanAdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid)
	}

	if _, ok := t.LanAdjacencySid[key]; ok {
		return fmt.Errorf("duplicate key for list LanAdjacencySid %v", key)
	}

	t.LanAdjacencySid[key] = v
	return nil
}

// NewSetupPriority creates a new entry in the SetupPriority list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) NewSetupPriority(Priority uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SetupPriority == nil {
		t.SetupPriority = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority)
	}

	key := Priority

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.SetupPriority[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list SetupPriority", key)
	}

	t.SetupPriority[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority{
		Priority: &Priority,
	}

	return t.SetupPriority[key], nil
}

// RenameSetupPriority renames an entry in the list SetupPriority within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) RenameSetupPriority(oldK, newK uint8) error {
	if _, ok := t.SetupPriority[newK]; ok {
		return fmt.Errorf("key %v already exists in SetupPriority", newK)
	}

	e, ok := t.SetupPriority[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in SetupPriority", oldK)
	}
	e.Priority = &newK

	t.SetupPriority[newK] = e
	delete(t.SetupPriority, oldK)
	return nil
}

// GetOrCreateSetupPriorityMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateSetupPriorityMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority {
	if t.SetupPriority == nil {
		t.SetupPriority = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority)
	}
	return t.SetupPriority
}

// GetOrCreateSetupPriority retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateSetupPriority(Priority uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority {

	key := Priority

	if v, ok := t.SetupPriority[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSetupPriority(Priority)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSetupPriority got unexpected error: %v", err))
	}
	return v
}

// GetSetupPriority retrieves the value with the specified key from
// the SetupPriority map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetSetupPriority(Priority uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority {

	if t == nil {
		return nil
	}

	key := Priority

	if lm, ok := t.SetupPriority[key]; ok {
		return lm
	}
	return nil
}

// AppendSetupPriority appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority struct to the
// list SetupPriority of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) AppendSetupPriority(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority) error {
	if v.Priority == nil {
		return fmt.Errorf("invalid nil key received for Priority")
	}

	key := *v.Priority

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SetupPriority == nil {
		t.SetupPriority = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority)
	}

	if _, ok := t.SetupPriority[key]; ok {
		return fmt.Errorf("duplicate key for list SetupPriority %v", key)
	}

	t.SetupPriority[key] = v
	return nil
}

// GetOrCreateAdminGroup retrieves the value of the AdminGroup field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateAdminGroup() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup {
	if t.AdminGroup != nil {
		return t.AdminGroup
	}
	t.AdminGroup = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup{}
	return t.AdminGroup
}

// GetOrCreateAvailableBandwidth retrieves the value of the AvailableBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateAvailableBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth {
	if t.AvailableBandwidth != nil {
		return t.AvailableBandwidth
	}
	t.AvailableBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth{}
	return t.AvailableBandwidth
}

// GetOrCreateExtendedAdminGroup retrieves the value of the ExtendedAdminGroup field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateExtendedAdminGroup() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup {
	if t.ExtendedAdminGroup != nil {
		return t.ExtendedAdminGroup
	}
	t.ExtendedAdminGroup = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup{}
	return t.ExtendedAdminGroup
}

// GetOrCreateIpv4InterfaceAddress retrieves the value of the Ipv4InterfaceAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateIpv4InterfaceAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress {
	if t.Ipv4InterfaceAddress != nil {
		return t.Ipv4InterfaceAddress
	}
	t.Ipv4InterfaceAddress = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress{}
	return t.Ipv4InterfaceAddress
}

// GetOrCreateIpv4NeighborAddress retrieves the value of the Ipv4NeighborAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateIpv4NeighborAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress {
	if t.Ipv4NeighborAddress != nil {
		return t.Ipv4NeighborAddress
	}
	t.Ipv4NeighborAddress = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress{}
	return t.Ipv4NeighborAddress
}

// GetOrCreateIpv6InterfaceAddress retrieves the value of the Ipv6InterfaceAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateIpv6InterfaceAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress {
	if t.Ipv6InterfaceAddress != nil {
		return t.Ipv6InterfaceAddress
	}
	t.Ipv6InterfaceAddress = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress{}
	return t.Ipv6InterfaceAddress
}

// GetOrCreateIpv6NeighborAddress retrieves the value of the Ipv6NeighborAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateIpv6NeighborAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress {
	if t.Ipv6NeighborAddress != nil {
		return t.Ipv6NeighborAddress
	}
	t.Ipv6NeighborAddress = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress{}
	return t.Ipv6NeighborAddress
}

// GetOrCreateLinkAttributes retrieves the value of the LinkAttributes field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateLinkAttributes() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes {
	if t.LinkAttributes != nil {
		return t.LinkAttributes
	}
	t.LinkAttributes = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes{}
	return t.LinkAttributes
}

// GetOrCreateLinkDelay retrieves the value of the LinkDelay field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateLinkDelay() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay {
	if t.LinkDelay != nil {
		return t.LinkDelay
	}
	t.LinkDelay = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay{}
	return t.LinkDelay
}

// GetOrCreateLinkDelayVariation retrieves the value of the LinkDelayVariation field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateLinkDelayVariation() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation {
	if t.LinkDelayVariation != nil {
		return t.LinkDelayVariation
	}
	t.LinkDelayVariation = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation{}
	return t.LinkDelayVariation
}

// GetOrCreateLinkId retrieves the value of the LinkId field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateLinkId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId {
	if t.LinkId != nil {
		return t.LinkId
	}
	t.LinkId = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId{}
	return t.LinkId
}

// GetOrCreateLinkLoss retrieves the value of the LinkLoss field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateLinkLoss() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss {
	if t.LinkLoss != nil {
		return t.LinkLoss
	}
	t.LinkLoss = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss{}
	return t.LinkLoss
}

// GetOrCreateLinkProtectionType retrieves the value of the LinkProtectionType field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateLinkProtectionType() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType {
	if t.LinkProtectionType != nil {
		return t.LinkProtectionType
	}
	t.LinkProtectionType = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType{}
	return t.LinkProtectionType
}

// GetOrCreateMaxLinkBandwidth retrieves the value of the MaxLinkBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateMaxLinkBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth {
	if t.MaxLinkBandwidth != nil {
		return t.MaxLinkBandwidth
	}
	t.MaxLinkBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth{}
	return t.MaxLinkBandwidth
}

// GetOrCreateMaxReservableLinkBandwidth retrieves the value of the MaxReservableLinkBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateMaxReservableLinkBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth {
	if t.MaxReservableLinkBandwidth != nil {
		return t.MaxReservableLinkBandwidth
	}
	t.MaxReservableLinkBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth{}
	return t.MaxReservableLinkBandwidth
}

// GetOrCreateMinMaxLinkDelay retrieves the value of the MinMaxLinkDelay field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateMinMaxLinkDelay() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay {
	if t.MinMaxLinkDelay != nil {
		return t.MinMaxLinkDelay
	}
	t.MinMaxLinkDelay = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay{}
	return t.MinMaxLinkDelay
}

// GetOrCreateResidualBandwidth retrieves the value of the ResidualBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateResidualBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth {
	if t.ResidualBandwidth != nil {
		return t.ResidualBandwidth
	}
	t.ResidualBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth{}
	return t.ResidualBandwidth
}

// GetOrCreateTeDefaultMetric retrieves the value of the TeDefaultMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateTeDefaultMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric {
	if t.TeDefaultMetric != nil {
		return t.TeDefaultMetric
	}
	t.TeDefaultMetric = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric{}
	return t.TeDefaultMetric
}

// GetOrCreateUnconstrainedLsp retrieves the value of the UnconstrainedLsp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateUnconstrainedLsp() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp {
	if t.UnconstrainedLsp != nil {
		return t.UnconstrainedLsp
	}
	t.UnconstrainedLsp = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp{}
	return t.UnconstrainedLsp
}

// GetOrCreateUtilizedBandwidth retrieves the value of the UtilizedBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetOrCreateUtilizedBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth {
	if t.UtilizedBandwidth != nil {
		return t.UtilizedBandwidth
	}
	t.UtilizedBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth{}
	return t.UtilizedBandwidth
}

// GetAdminGroup returns the value of the AdminGroup struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field AdminGroup is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetAdminGroup() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup {
	if t != nil && t.AdminGroup != nil {
		return t.AdminGroup
	}
	return nil
}

// GetAvailableBandwidth returns the value of the AvailableBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field AvailableBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetAvailableBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth {
	if t != nil && t.AvailableBandwidth != nil {
		return t.AvailableBandwidth
	}
	return nil
}

// GetExtendedAdminGroup returns the value of the ExtendedAdminGroup struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field ExtendedAdminGroup is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetExtendedAdminGroup() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup {
	if t != nil && t.ExtendedAdminGroup != nil {
		return t.ExtendedAdminGroup
	}
	return nil
}

// GetIpv4InterfaceAddress returns the value of the Ipv4InterfaceAddress struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field Ipv4InterfaceAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetIpv4InterfaceAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress {
	if t != nil && t.Ipv4InterfaceAddress != nil {
		return t.Ipv4InterfaceAddress
	}
	return nil
}

// GetIpv4NeighborAddress returns the value of the Ipv4NeighborAddress struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field Ipv4NeighborAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetIpv4NeighborAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress {
	if t != nil && t.Ipv4NeighborAddress != nil {
		return t.Ipv4NeighborAddress
	}
	return nil
}

// GetIpv6InterfaceAddress returns the value of the Ipv6InterfaceAddress struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field Ipv6InterfaceAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetIpv6InterfaceAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress {
	if t != nil && t.Ipv6InterfaceAddress != nil {
		return t.Ipv6InterfaceAddress
	}
	return nil
}

// GetIpv6NeighborAddress returns the value of the Ipv6NeighborAddress struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field Ipv6NeighborAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetIpv6NeighborAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress {
	if t != nil && t.Ipv6NeighborAddress != nil {
		return t.Ipv6NeighborAddress
	}
	return nil
}

// GetLinkAttributes returns the value of the LinkAttributes struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field LinkAttributes is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetLinkAttributes() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes {
	if t != nil && t.LinkAttributes != nil {
		return t.LinkAttributes
	}
	return nil
}

// GetLinkDelay returns the value of the LinkDelay struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field LinkDelay is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetLinkDelay() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay {
	if t != nil && t.LinkDelay != nil {
		return t.LinkDelay
	}
	return nil
}

// GetLinkDelayVariation returns the value of the LinkDelayVariation struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field LinkDelayVariation is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetLinkDelayVariation() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation {
	if t != nil && t.LinkDelayVariation != nil {
		return t.LinkDelayVariation
	}
	return nil
}

// GetLinkId returns the value of the LinkId struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field LinkId is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetLinkId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId {
	if t != nil && t.LinkId != nil {
		return t.LinkId
	}
	return nil
}

// GetLinkLoss returns the value of the LinkLoss struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field LinkLoss is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetLinkLoss() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss {
	if t != nil && t.LinkLoss != nil {
		return t.LinkLoss
	}
	return nil
}

// GetLinkProtectionType returns the value of the LinkProtectionType struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field LinkProtectionType is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetLinkProtectionType() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType {
	if t != nil && t.LinkProtectionType != nil {
		return t.LinkProtectionType
	}
	return nil
}

// GetMaxLinkBandwidth returns the value of the MaxLinkBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field MaxLinkBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetMaxLinkBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth {
	if t != nil && t.MaxLinkBandwidth != nil {
		return t.MaxLinkBandwidth
	}
	return nil
}

// GetMaxReservableLinkBandwidth returns the value of the MaxReservableLinkBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field MaxReservableLinkBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetMaxReservableLinkBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth {
	if t != nil && t.MaxReservableLinkBandwidth != nil {
		return t.MaxReservableLinkBandwidth
	}
	return nil
}

// GetMinMaxLinkDelay returns the value of the MinMaxLinkDelay struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field MinMaxLinkDelay is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetMinMaxLinkDelay() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay {
	if t != nil && t.MinMaxLinkDelay != nil {
		return t.MinMaxLinkDelay
	}
	return nil
}

// GetResidualBandwidth returns the value of the ResidualBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field ResidualBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetResidualBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth {
	if t != nil && t.ResidualBandwidth != nil {
		return t.ResidualBandwidth
	}
	return nil
}

// GetTeDefaultMetric returns the value of the TeDefaultMetric struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field TeDefaultMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetTeDefaultMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric {
	if t != nil && t.TeDefaultMetric != nil {
		return t.TeDefaultMetric
	}
	return nil
}

// GetUnconstrainedLsp returns the value of the UnconstrainedLsp struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field UnconstrainedLsp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetUnconstrainedLsp() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp {
	if t != nil && t.UnconstrainedLsp != nil {
		return t.UnconstrainedLsp
	}
	return nil
}

// GetUtilizedBandwidth returns the value of the UtilizedBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv. If the receiver or the field UtilizedBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetUtilizedBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth {
	if t != nil && t.UtilizedBandwidth != nil {
		return t.UtilizedBandwidth
	}
	return nil
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AdminGroup.PopulateDefaults()
	t.AvailableBandwidth.PopulateDefaults()
	t.ExtendedAdminGroup.PopulateDefaults()
	t.Ipv4InterfaceAddress.PopulateDefaults()
	t.Ipv4NeighborAddress.PopulateDefaults()
	t.Ipv6InterfaceAddress.PopulateDefaults()
	t.Ipv6NeighborAddress.PopulateDefaults()
	t.LinkAttributes.PopulateDefaults()
	t.LinkDelay.PopulateDefaults()
	t.LinkDelayVariation.PopulateDefaults()
	t.LinkId.PopulateDefaults()
	t.LinkLoss.PopulateDefaults()
	t.LinkProtectionType.PopulateDefaults()
	t.MaxLinkBandwidth.PopulateDefaults()
	t.MaxReservableLinkBandwidth.PopulateDefaults()
	t.MinMaxLinkDelay.PopulateDefaults()
	t.ResidualBandwidth.PopulateDefaults()
	t.TeDefaultMetric.PopulateDefaults()
	t.UnconstrainedLsp.PopulateDefaults()
	t.UtilizedBandwidth.PopulateDefaults()
	for _, e := range t.AdjacencySid {
		e.PopulateDefaults()
	}
	for _, e := range t.BandwidthConstraint {
		e.PopulateDefaults()
	}
	for _, e := range t.LanAdjacencySid {
		e.PopulateDefaults()
	}
	for _, e := range t.SetupPriority {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"type": t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/adjacency-sids/adjacency-sid YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid struct {
	ΛMetadata []ygot.Annotation      `path:"@" ygotAnnotation:"true"`
	Flags     []E_AdjacencySid_Flags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation      `path:"state/@flags" ygotAnnotation:"true"`
	Value     *uint32                `path:"state/value|value" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛValue    []ygot.Annotation      `path:"state/@value|@value" ygotAnnotation:"true"`
	Weight    *uint8                 `path:"state/weight" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWeight   []ygot.Annotation      `path:"state/@weight" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid) GetFlags() []E_AdjacencySid_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid) GetValue() uint32 {
	if t == nil || t.Value == nil {
		return 0
	}
	return *t.Value
}

// GetWeight retrieves the value of the leaf Weight from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Weight is set, it can
// safely use t.GetWeight() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Weight == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid) GetWeight() uint8 {
	if t == nil || t.Weight == nil {
		return 0
	}
	return *t.Weight
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Value == nil {
		return nil, fmt.Errorf("nil value for key Value")
	}

	return map[string]interface{}{
		"value": *t.Value,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdjacencySid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/admin-group YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AdminGroup  []uint32          `path:"state/admin-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdminGroup []ygot.Annotation `path:"state/@admin-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup) IsYANGGoStruct() {
}

// GetAdminGroup retrieves the value of the leaf AdminGroup from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdminGroup is set, it can
// safely use t.GetAdminGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdminGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup) GetAdminGroup() []uint32 {
	if t == nil || t.AdminGroup == nil {
		return nil
	}
	return t.AdminGroup
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AdminGroup) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/available-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth struct {
	ΛMetadata  []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary                           `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation                `path:"state/@bandwidth" ygotAnnotation:"true"`
	Type       E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType      []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_AvailableBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/bandwidth-constraints/bandwidth-constraint YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint struct {
	ΛMetadata   []ygot.Annotation                                                                                                                      `path:"@" ygotAnnotation:"true"`
	Constraint  map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint `path:"constraints/constraint" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛConstraint []ygot.Annotation                                                                                                                      `path:"constraints/@constraint" ygotAnnotation:"true"`
	ModelId     *uint8                                                                                                                                 `path:"state/model-id|model-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛModelId    []ygot.Annotation                                                                                                                      `path:"state/@model-id|@model-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint) IsYANGGoStruct() {
}

// NewConstraint creates a new entry in the Constraint list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint) NewConstraint(ConstraintId uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Constraint == nil {
		t.Constraint = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint)
	}

	key := ConstraintId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Constraint[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Constraint", key)
	}

	t.Constraint[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint{
		ConstraintId: &ConstraintId,
	}

	return t.Constraint[key], nil
}

// RenameConstraint renames an entry in the list Constraint within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint) RenameConstraint(oldK, newK uint32) error {
	if _, ok := t.Constraint[newK]; ok {
		return fmt.Errorf("key %v already exists in Constraint", newK)
	}

	e, ok := t.Constraint[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Constraint", oldK)
	}
	e.ConstraintId = &newK

	t.Constraint[newK] = e
	delete(t.Constraint, oldK)
	return nil
}

// GetOrCreateConstraintMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint) GetOrCreateConstraintMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint {
	if t.Constraint == nil {
		t.Constraint = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint)
	}
	return t.Constraint
}

// GetOrCreateConstraint retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint) GetOrCreateConstraint(ConstraintId uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint {

	key := ConstraintId

	if v, ok := t.Constraint[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewConstraint(ConstraintId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateConstraint got unexpected error: %v", err))
	}
	return v
}

// GetConstraint retrieves the value with the specified key from
// the Constraint map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint) GetConstraint(ConstraintId uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint {

	if t == nil {
		return nil
	}

	key := ConstraintId

	if lm, ok := t.Constraint[key]; ok {
		return lm
	}
	return nil
}

// AppendConstraint appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint struct to the
// list Constraint of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint) AppendConstraint(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) error {
	if v.ConstraintId == nil {
		return fmt.Errorf("invalid nil key received for ConstraintId")
	}

	key := *v.ConstraintId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Constraint == nil {
		t.Constraint = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint)
	}

	if _, ok := t.Constraint[key]; ok {
		return fmt.Errorf("duplicate key for list Constraint %v", key)
	}

	t.Constraint[key] = v
	return nil
}

// GetModelId retrieves the value of the leaf ModelId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ModelId is set, it can
// safely use t.GetModelId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ModelId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint) GetModelId() uint8 {
	if t == nil || t.ModelId == nil {
		return 0
	}
	return *t.ModelId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Constraint {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint) ΛListKeyMap() (map[string]interface{}, error) {
	if t.ModelId == nil {
		return nil, fmt.Errorf("nil value for key ModelId")
	}

	return map[string]interface{}{
		"model-id": *t.ModelId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/bandwidth-constraints/bandwidth-constraint/constraints/constraint YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth     Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth    []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
	ConstraintId  *uint32           `path:"state/constraint-id|constraint-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛConstraintId []ygot.Annotation `path:"state/@constraint-id|@constraint-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// GetConstraintId retrieves the value of the leaf ConstraintId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ConstraintId is set, it can
// safely use t.GetConstraintId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ConstraintId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) GetConstraintId() uint32 {
	if t == nil || t.ConstraintId == nil {
		return 0
	}
	return *t.ConstraintId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) ΛListKeyMap() (map[string]interface{}, error) {
	if t.ConstraintId == nil {
		return nil, fmt.Errorf("nil value for key ConstraintId")
	}

	return map[string]interface{}{
		"constraint-id": *t.ConstraintId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/extended-admin-group YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ExtendedAdminGroup  []uint32          `path:"state/extended-admin-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtendedAdminGroup []ygot.Annotation `path:"state/@extended-admin-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup) IsYANGGoStruct() {
}

// GetExtendedAdminGroup retrieves the value of the leaf ExtendedAdminGroup from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtendedAdminGroup is set, it can
// safely use t.GetExtendedAdminGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtendedAdminGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup) GetExtendedAdminGroup() []uint32 {
	if t == nil || t.ExtendedAdminGroup == nil {
		return nil
	}
	return t.ExtendedAdminGroup
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ExtendedAdminGroup) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/ipv4-interface-address YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/ipv4-neighbor-address YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/ipv6-interface-address YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/ipv6-neighbor-address YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/lan-adjacency-sids/lan-adjacency-sid YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid struct {
	ΛMetadata   []ygot.Annotation         `path:"@" ygotAnnotation:"true"`
	Flags       []E_LanAdjacencySid_Flags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags      []ygot.Annotation         `path:"state/@flags" ygotAnnotation:"true"`
	NeighborId  *string                   `path:"state/neighbor-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighborId []ygot.Annotation         `path:"state/@neighbor-id" ygotAnnotation:"true"`
	Value       *uint32                   `path:"state/value|value" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛValue      []ygot.Annotation         `path:"state/@value|@value" ygotAnnotation:"true"`
	Weight      *uint8                    `path:"state/weight" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWeight     []ygot.Annotation         `path:"state/@weight" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid) GetFlags() []E_LanAdjacencySid_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetNeighborId retrieves the value of the leaf NeighborId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborId is set, it can
// safely use t.GetNeighborId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid) GetNeighborId() string {
	if t == nil || t.NeighborId == nil {
		return ""
	}
	return *t.NeighborId
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid) GetValue() uint32 {
	if t == nil || t.Value == nil {
		return 0
	}
	return *t.Value
}

// GetWeight retrieves the value of the leaf Weight from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Weight is set, it can
// safely use t.GetWeight() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Weight == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid) GetWeight() uint8 {
	if t == nil || t.Weight == nil {
		return 0
	}
	return *t.Weight
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Value == nil {
		return nil, fmt.Errorf("nil value for key Value")
	}

	return map[string]interface{}{
		"value": *t.Value,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LanAdjacencySid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-attributes YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes struct {
	ΛMetadata        []ygot.Annotation                  `path:"@" ygotAnnotation:"true"`
	LocalProtection  []E_LinkAttributes_LocalProtection `path:"state/local-protection" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalProtection []ygot.Annotation                  `path:"state/@local-protection" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes) IsYANGGoStruct() {
}

// GetLocalProtection retrieves the value of the leaf LocalProtection from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalProtection is set, it can
// safely use t.GetLocalProtection() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalProtection == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes) GetLocalProtection() []E_LinkAttributes_LocalProtection {
	if t == nil || t.LocalProtection == nil {
		return nil
	}
	return t.LocalProtection
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkAttributes) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-delay YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ABit      *bool             `path:"state/a-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛABit     []ygot.Annotation `path:"state/@a-bit" ygotAnnotation:"true"`
	Delay     *uint32           `path:"state/delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDelay    []ygot.Annotation `path:"state/@delay" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay) IsYANGGoStruct() {
}

// GetABit retrieves the value of the leaf ABit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ABit is set, it can
// safely use t.GetABit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ABit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay) GetABit() bool {
	if t == nil || t.ABit == nil {
		return false
	}
	return *t.ABit
}

// GetDelay retrieves the value of the leaf Delay from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Delay is set, it can
// safely use t.GetDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Delay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay) GetDelay() uint32 {
	if t == nil || t.Delay == nil {
		return 0
	}
	return *t.Delay
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelay) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-delay-variation YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Delay     *uint32           `path:"state/delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDelay    []ygot.Annotation `path:"state/@delay" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation) IsYANGGoStruct() {
}

// GetDelay retrieves the value of the leaf Delay from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Delay is set, it can
// safely use t.GetDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Delay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation) GetDelay() uint32 {
	if t == nil || t.Delay == nil {
		return 0
	}
	return *t.Delay
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkDelayVariation) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-id YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Local     *uint32           `path:"state/local" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocal    []ygot.Annotation `path:"state/@local" ygotAnnotation:"true"`
	Remote    *uint32           `path:"state/remote" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRemote   []ygot.Annotation `path:"state/@remote" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId) IsYANGGoStruct() {
}

// GetLocal retrieves the value of the leaf Local from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Local is set, it can
// safely use t.GetLocal() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Local == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId) GetLocal() uint32 {
	if t == nil || t.Local == nil {
		return 0
	}
	return *t.Local
}

// GetRemote retrieves the value of the leaf Remote from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Remote is set, it can
// safely use t.GetRemote() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Remote == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId) GetRemote() uint32 {
	if t == nil || t.Remote == nil {
		return 0
	}
	return *t.Remote
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkId) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-loss YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ABit      *bool             `path:"state/a-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛABit     []ygot.Annotation `path:"state/@a-bit" ygotAnnotation:"true"`
	LinkLoss  *uint32           `path:"state/link-loss" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLinkLoss []ygot.Annotation `path:"state/@link-loss" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss) IsYANGGoStruct() {
}

// GetABit retrieves the value of the leaf ABit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ABit is set, it can
// safely use t.GetABit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ABit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss) GetABit() bool {
	if t == nil || t.ABit == nil {
		return false
	}
	return *t.ABit
}

// GetLinkLoss retrieves the value of the leaf LinkLoss from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkLoss is set, it can
// safely use t.GetLinkLoss() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkLoss == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss) GetLinkLoss() uint32 {
	if t == nil || t.LinkLoss == nil {
		return 0
	}
	return *t.LinkLoss
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkLoss) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-protection-type YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType struct {
	ΛMetadata []ygot.Annotation           `path:"@" ygotAnnotation:"true"`
	Type      []E_LinkProtectionType_Type `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation           `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType) IsYANGGoStruct() {
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType) GetType() []E_LinkProtectionType_Type {
	if t == nil || t.Type == nil {
		return nil
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_LinkProtectionType) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/max-link-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxLinkBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/max-reservable-link-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/min-max-link-delay YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ABit      *bool             `path:"state/a-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛABit     []ygot.Annotation `path:"state/@a-bit" ygotAnnotation:"true"`
	MaxDelay  *uint32           `path:"state/max-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxDelay []ygot.Annotation `path:"state/@max-delay" ygotAnnotation:"true"`
	MinDelay  *uint32           `path:"state/min-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMinDelay []ygot.Annotation `path:"state/@min-delay" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay) IsYANGGoStruct() {
}

// GetABit retrieves the value of the leaf ABit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ABit is set, it can
// safely use t.GetABit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ABit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay) GetABit() bool {
	if t == nil || t.ABit == nil {
		return false
	}
	return *t.ABit
}

// GetMaxDelay retrieves the value of the leaf MaxDelay from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxDelay is set, it can
// safely use t.GetMaxDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay) GetMaxDelay() uint32 {
	if t == nil || t.MaxDelay == nil {
		return 0
	}
	return *t.MaxDelay
}

// GetMinDelay retrieves the value of the leaf MinDelay from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinDelay is set, it can
// safely use t.GetMinDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay) GetMinDelay() uint32 {
	if t == nil || t.MinDelay == nil {
		return 0
	}
	return *t.MinDelay
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_MinMaxLinkDelay) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/residual-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_ResidualBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/unreserved-bandwidth/setup-priority YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
	Priority   *uint8            `path:"state/priority|priority" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPriority  []ygot.Annotation `path:"state/@priority|@priority" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// GetPriority retrieves the value of the leaf Priority from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority) GetPriority() uint8 {
	if t == nil || t.Priority == nil {
		return 0
	}
	return *t.Priority
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Priority == nil {
		return nil, fmt.Errorf("nil value for key Priority")
	}

	return map[string]interface{}{
		"priority": *t.Priority,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_SetupPriority) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/te-default-metric YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Metric    *uint32           `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation `path:"state/@metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric) IsYANGGoStruct() {
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_TeDefaultMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/unconstrained-lsp YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp struct {
	ΛMetadata []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Count     *uint16                          `path:"state/count" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCount    []ygot.Annotation                `path:"state/@count" ygotAnnotation:"true"`
	Type      E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp) IsYANGGoStruct() {
}

// GetCount retrieves the value of the leaf Count from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Count is set, it can
// safely use t.GetCount() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Count == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp) GetCount() uint16 {
	if t == nil || t.Count == nil {
		return 0
	}
	return *t.Count
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UnconstrainedLsp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/utilized-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth struct {
	ΛMetadata  []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary                           `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation                `path:"state/@bandwidth" ygotAnnotation:"true"`
	Type       E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType      []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_Subtlv_UtilizedBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/undefined-subtlvs/undefined-subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint8            `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint8            `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type|@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv) IsYANGGoStruct() {
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv) GetLength() uint8 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv) GetType() uint8 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Type == nil {
		return nil, fmt.Errorf("nil value for key Type")
	}

	return map[string]interface{}{
		"type": *t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_ExtendedIsReachability_Neighbor_Instance_UndefinedSubtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/hostname YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Hostname  []string          `path:"state/hostname" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHostname []ygot.Annotation `path:"state/@hostname" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname) IsYANGGoStruct() {}

// GetHostname retrieves the value of the leaf Hostname from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Hostname is set, it can
// safely use t.GetHostname() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Hostname == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname) GetHostname() []string {
	if t == nil || t.Hostname == nil {
		return nil
	}
	return t.Hostname
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Hostname) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/instance-ids/instance-id YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	InstanceId  *uint16           `path:"state/instance-id|instance-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛInstanceId []ygot.Annotation `path:"state/@instance-id|@instance-id" ygotAnnotation:"true"`
	TopologyId  []uint16          `path:"state/topology-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTopologyId []ygot.Annotation `path:"state/@topology-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId) IsYANGGoStruct() {}

// GetInstanceId retrieves the value of the leaf InstanceId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InstanceId is set, it can
// safely use t.GetInstanceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InstanceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId) GetInstanceId() uint16 {
	if t == nil || t.InstanceId == nil {
		return 0
	}
	return *t.InstanceId
}

// GetTopologyId retrieves the value of the leaf TopologyId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TopologyId is set, it can
// safely use t.GetTopologyId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TopologyId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId) GetTopologyId() []uint16 {
	if t == nil || t.TopologyId == nil {
		return nil
	}
	return t.TopologyId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId) ΛListKeyMap() (map[string]interface{}, error) {
	if t.InstanceId == nil {
		return nil, fmt.Errorf("nil value for key InstanceId")
	}

	return map[string]interface{}{
		"instance-id": *t.InstanceId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_InstanceId) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-external-reachability YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability struct {
	ΛMetadata []ygot.Annotation                                                                       `path:"@" ygotAnnotation:"true"`
	Prefix    map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix `path:"prefixes/prefix" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefix   []ygot.Annotation                                                                       `path:"prefixes/@prefix" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability) IsYANGGoStruct() {}

// NewPrefix creates a new entry in the Prefix list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability) NewPrefix(Prefix string) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix)
	}

	key := Prefix

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Prefix[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Prefix", key)
	}

	t.Prefix[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix{
		Prefix: &Prefix,
	}

	return t.Prefix[key], nil
}

// RenamePrefix renames an entry in the list Prefix within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability) RenamePrefix(oldK, newK string) error {
	if _, ok := t.Prefix[newK]; ok {
		return fmt.Errorf("key %v already exists in Prefix", newK)
	}

	e, ok := t.Prefix[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Prefix", oldK)
	}
	e.Prefix = &newK

	t.Prefix[newK] = e
	delete(t.Prefix, oldK)
	return nil
}

// GetOrCreatePrefixMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability) GetOrCreatePrefixMap() map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix {
	if t.Prefix == nil {
		t.Prefix = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix)
	}
	return t.Prefix
}

// GetOrCreatePrefix retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability) GetOrCreatePrefix(Prefix string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix {

	key := Prefix

	if v, ok := t.Prefix[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPrefix(Prefix)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePrefix got unexpected error: %v", err))
	}
	return v
}

// GetPrefix retrieves the value with the specified key from
// the Prefix map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability) GetPrefix(Prefix string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix {

	if t == nil {
		return nil
	}

	key := Prefix

	if lm, ok := t.Prefix[key]; ok {
		return lm
	}
	return nil
}

// AppendPrefix appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix struct to the
// list Prefix of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability) AppendPrefix(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key received for Prefix")
	}

	key := *v.Prefix

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix)
	}

	if _, ok := t.Prefix[key]; ok {
		return fmt.Errorf("duplicate key for list Prefix %v", key)
	}

	t.Prefix[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Prefix {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-external-reachability/prefixes/prefix YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix struct {
	ΛMetadata      []ygot.Annotation                                                                          `path:"@" ygotAnnotation:"true"`
	DefaultMetric  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric `path:"default-metric" module:"openconfig-network-instance"`
	ΛDefaultMetric []ygot.Annotation                                                                          `path:"@default-metric" ygotAnnotation:"true"`
	DelayMetric    *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric   `path:"delay-metric" module:"openconfig-network-instance"`
	ΛDelayMetric   []ygot.Annotation                                                                          `path:"@delay-metric" ygotAnnotation:"true"`
	ErrorMetric    *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric   `path:"error-metric" module:"openconfig-network-instance"`
	ΛErrorMetric   []ygot.Annotation                                                                          `path:"@error-metric" ygotAnnotation:"true"`
	ExpenseMetric  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric `path:"expense-metric" module:"openconfig-network-instance"`
	ΛExpenseMetric []ygot.Annotation                                                                          `path:"@expense-metric" ygotAnnotation:"true"`
	Prefix         *string                                                                                    `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix        []ygot.Annotation                                                                          `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
	UpDown         *bool                                                                                      `path:"state/up-down" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUpDown        []ygot.Annotation                                                                          `path:"state/@up-down" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) IsYANGGoStruct() {
}

// GetOrCreateDefaultMetric retrieves the value of the DefaultMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) GetOrCreateDefaultMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric {
	if t.DefaultMetric != nil {
		return t.DefaultMetric
	}
	t.DefaultMetric = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric{}
	return t.DefaultMetric
}

// GetOrCreateDelayMetric retrieves the value of the DelayMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) GetOrCreateDelayMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric {
	if t.DelayMetric != nil {
		return t.DelayMetric
	}
	t.DelayMetric = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric{}
	return t.DelayMetric
}

// GetOrCreateErrorMetric retrieves the value of the ErrorMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) GetOrCreateErrorMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric {
	if t.ErrorMetric != nil {
		return t.ErrorMetric
	}
	t.ErrorMetric = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric{}
	return t.ErrorMetric
}

// GetOrCreateExpenseMetric retrieves the value of the ExpenseMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) GetOrCreateExpenseMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric {
	if t.ExpenseMetric != nil {
		return t.ExpenseMetric
	}
	t.ExpenseMetric = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric{}
	return t.ExpenseMetric
}

// GetDefaultMetric returns the value of the DefaultMetric struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix. If the receiver or the field DefaultMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) GetDefaultMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric {
	if t != nil && t.DefaultMetric != nil {
		return t.DefaultMetric
	}
	return nil
}

// GetDelayMetric returns the value of the DelayMetric struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix. If the receiver or the field DelayMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) GetDelayMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric {
	if t != nil && t.DelayMetric != nil {
		return t.DelayMetric
	}
	return nil
}

// GetErrorMetric returns the value of the ErrorMetric struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix. If the receiver or the field ErrorMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) GetErrorMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric {
	if t != nil && t.ErrorMetric != nil {
		return t.ErrorMetric
	}
	return nil
}

// GetExpenseMetric returns the value of the ExpenseMetric struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix. If the receiver or the field ExpenseMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) GetExpenseMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric {
	if t != nil && t.ExpenseMetric != nil {
		return t.ExpenseMetric
	}
	return nil
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetUpDown retrieves the value of the leaf UpDown from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UpDown is set, it can
// safely use t.GetUpDown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UpDown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) GetUpDown() bool {
	if t == nil || t.UpDown == nil {
		return false
	}
	return *t.UpDown
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.DefaultMetric.PopulateDefaults()
	t.DelayMetric.PopulateDefaults()
	t.ErrorMetric.PopulateDefaults()
	t.ExpenseMetric.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"prefix": *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-external-reachability/prefixes/prefix/default-metric YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric struct {
	ΛMetadata []ygot.Annotation     `path:"@" ygotAnnotation:"true"`
	Flags     E_DefaultMetric_Flags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation     `path:"state/@flags" ygotAnnotation:"true"`
	Metric    *uint8                `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation     `path:"state/@metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric) GetFlags() E_DefaultMetric_Flags {
	if t == nil || t.Flags == 0 {
		return 0
	}
	return t.Flags
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric) GetMetric() uint8 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DefaultMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-external-reachability/prefixes/prefix/delay-metric YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric struct {
	ΛMetadata []ygot.Annotation        `path:"@" ygotAnnotation:"true"`
	Flags     []E_Isis_IsisMetricFlags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation        `path:"state/@flags" ygotAnnotation:"true"`
	Metric    *uint8                   `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation        `path:"state/@metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric) GetFlags() []E_Isis_IsisMetricFlags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric) GetMetric() uint8 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_DelayMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-external-reachability/prefixes/prefix/error-metric YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric struct {
	ΛMetadata []ygot.Annotation        `path:"@" ygotAnnotation:"true"`
	Flags     []E_Isis_IsisMetricFlags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation        `path:"state/@flags" ygotAnnotation:"true"`
	Metric    *uint8                   `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation        `path:"state/@metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric) GetFlags() []E_Isis_IsisMetricFlags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric) GetMetric() uint8 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ErrorMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-external-reachability/prefixes/prefix/expense-metric YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric struct {
	ΛMetadata []ygot.Annotation        `path:"@" ygotAnnotation:"true"`
	Flags     []E_Isis_IsisMetricFlags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation        `path:"state/@flags" ygotAnnotation:"true"`
	Metric    *uint8                   `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation        `path:"state/@metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric) GetFlags() []E_Isis_IsisMetricFlags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric) GetMetric() uint8 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4ExternalReachability_Prefix_ExpenseMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-interface-addresses YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses) IsYANGGoStruct() {}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InterfaceAddresses) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-internal-reachability YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability struct {
	ΛMetadata []ygot.Annotation                                                                       `path:"@" ygotAnnotation:"true"`
	Prefix    map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix `path:"prefixes/prefix" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefix   []ygot.Annotation                                                                       `path:"prefixes/@prefix" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability) IsYANGGoStruct() {}

// NewPrefix creates a new entry in the Prefix list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability) NewPrefix(Prefix string) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix)
	}

	key := Prefix

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Prefix[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Prefix", key)
	}

	t.Prefix[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix{
		Prefix: &Prefix,
	}

	return t.Prefix[key], nil
}

// RenamePrefix renames an entry in the list Prefix within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability) RenamePrefix(oldK, newK string) error {
	if _, ok := t.Prefix[newK]; ok {
		return fmt.Errorf("key %v already exists in Prefix", newK)
	}

	e, ok := t.Prefix[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Prefix", oldK)
	}
	e.Prefix = &newK

	t.Prefix[newK] = e
	delete(t.Prefix, oldK)
	return nil
}

// GetOrCreatePrefixMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability) GetOrCreatePrefixMap() map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix {
	if t.Prefix == nil {
		t.Prefix = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix)
	}
	return t.Prefix
}

// GetOrCreatePrefix retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability) GetOrCreatePrefix(Prefix string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix {

	key := Prefix

	if v, ok := t.Prefix[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPrefix(Prefix)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePrefix got unexpected error: %v", err))
	}
	return v
}

// GetPrefix retrieves the value with the specified key from
// the Prefix map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability) GetPrefix(Prefix string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix {

	if t == nil {
		return nil
	}

	key := Prefix

	if lm, ok := t.Prefix[key]; ok {
		return lm
	}
	return nil
}

// AppendPrefix appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix struct to the
// list Prefix of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability) AppendPrefix(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key received for Prefix")
	}

	key := *v.Prefix

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix)
	}

	if _, ok := t.Prefix[key]; ok {
		return fmt.Errorf("duplicate key for list Prefix %v", key)
	}

	t.Prefix[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Prefix {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-internal-reachability/prefixes/prefix YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix struct {
	ΛMetadata      []ygot.Annotation                                                                          `path:"@" ygotAnnotation:"true"`
	DefaultMetric  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric `path:"default-metric" module:"openconfig-network-instance"`
	ΛDefaultMetric []ygot.Annotation                                                                          `path:"@default-metric" ygotAnnotation:"true"`
	DelayMetric    *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric   `path:"delay-metric" module:"openconfig-network-instance"`
	ΛDelayMetric   []ygot.Annotation                                                                          `path:"@delay-metric" ygotAnnotation:"true"`
	ErrorMetric    *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric   `path:"error-metric" module:"openconfig-network-instance"`
	ΛErrorMetric   []ygot.Annotation                                                                          `path:"@error-metric" ygotAnnotation:"true"`
	ExpenseMetric  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric `path:"expense-metric" module:"openconfig-network-instance"`
	ΛExpenseMetric []ygot.Annotation                                                                          `path:"@expense-metric" ygotAnnotation:"true"`
	Prefix         *string                                                                                    `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix        []ygot.Annotation                                                                          `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
	UpDown         *bool                                                                                      `path:"state/up-down" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUpDown        []ygot.Annotation                                                                          `path:"state/@up-down" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) IsYANGGoStruct() {
}

// GetOrCreateDefaultMetric retrieves the value of the DefaultMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) GetOrCreateDefaultMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric {
	if t.DefaultMetric != nil {
		return t.DefaultMetric
	}
	t.DefaultMetric = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric{}
	return t.DefaultMetric
}

// GetOrCreateDelayMetric retrieves the value of the DelayMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) GetOrCreateDelayMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric {
	if t.DelayMetric != nil {
		return t.DelayMetric
	}
	t.DelayMetric = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric{}
	return t.DelayMetric
}

// GetOrCreateErrorMetric retrieves the value of the ErrorMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) GetOrCreateErrorMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric {
	if t.ErrorMetric != nil {
		return t.ErrorMetric
	}
	t.ErrorMetric = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric{}
	return t.ErrorMetric
}

// GetOrCreateExpenseMetric retrieves the value of the ExpenseMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) GetOrCreateExpenseMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric {
	if t.ExpenseMetric != nil {
		return t.ExpenseMetric
	}
	t.ExpenseMetric = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric{}
	return t.ExpenseMetric
}

// GetDefaultMetric returns the value of the DefaultMetric struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix. If the receiver or the field DefaultMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) GetDefaultMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric {
	if t != nil && t.DefaultMetric != nil {
		return t.DefaultMetric
	}
	return nil
}

// GetDelayMetric returns the value of the DelayMetric struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix. If the receiver or the field DelayMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) GetDelayMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric {
	if t != nil && t.DelayMetric != nil {
		return t.DelayMetric
	}
	return nil
}

// GetErrorMetric returns the value of the ErrorMetric struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix. If the receiver or the field ErrorMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) GetErrorMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric {
	if t != nil && t.ErrorMetric != nil {
		return t.ErrorMetric
	}
	return nil
}

// GetExpenseMetric returns the value of the ExpenseMetric struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix. If the receiver or the field ExpenseMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) GetExpenseMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric {
	if t != nil && t.ExpenseMetric != nil {
		return t.ExpenseMetric
	}
	return nil
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetUpDown retrieves the value of the leaf UpDown from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UpDown is set, it can
// safely use t.GetUpDown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UpDown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) GetUpDown() bool {
	if t == nil || t.UpDown == nil {
		return false
	}
	return *t.UpDown
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.DefaultMetric.PopulateDefaults()
	t.DelayMetric.PopulateDefaults()
	t.ErrorMetric.PopulateDefaults()
	t.ExpenseMetric.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"prefix": *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-internal-reachability/prefixes/prefix/default-metric YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric struct {
	ΛMetadata []ygot.Annotation     `path:"@" ygotAnnotation:"true"`
	Flags     E_DefaultMetric_Flags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation     `path:"state/@flags" ygotAnnotation:"true"`
	Metric    *uint8                `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation     `path:"state/@metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric) GetFlags() E_DefaultMetric_Flags {
	if t == nil || t.Flags == 0 {
		return 0
	}
	return t.Flags
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric) GetMetric() uint8 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DefaultMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-internal-reachability/prefixes/prefix/delay-metric YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric struct {
	ΛMetadata []ygot.Annotation        `path:"@" ygotAnnotation:"true"`
	Flags     []E_Isis_IsisMetricFlags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation        `path:"state/@flags" ygotAnnotation:"true"`
	Metric    *uint8                   `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation        `path:"state/@metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric) GetFlags() []E_Isis_IsisMetricFlags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric) GetMetric() uint8 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_DelayMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-internal-reachability/prefixes/prefix/error-metric YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric struct {
	ΛMetadata []ygot.Annotation        `path:"@" ygotAnnotation:"true"`
	Flags     []E_Isis_IsisMetricFlags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation        `path:"state/@flags" ygotAnnotation:"true"`
	Metric    *uint8                   `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation        `path:"state/@metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric) GetFlags() []E_Isis_IsisMetricFlags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric) GetMetric() uint8 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ErrorMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-internal-reachability/prefixes/prefix/expense-metric YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric struct {
	ΛMetadata []ygot.Annotation        `path:"@" ygotAnnotation:"true"`
	Flags     []E_Isis_IsisMetricFlags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation        `path:"state/@flags" ygotAnnotation:"true"`
	Metric    *uint8                   `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation        `path:"state/@metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric) GetFlags() []E_Isis_IsisMetricFlags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric) GetMetric() uint8 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4InternalReachability_Prefix_ExpenseMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-srlgs/ipv4-srlg YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg struct {
	ΛMetadata             []ygot.Annotation  `path:"@" ygotAnnotation:"true"`
	Flags                 []E_Ipv4Srlg_Flags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags                []ygot.Annotation  `path:"state/@flags" ygotAnnotation:"true"`
	InstanceNumber        *uint32            `path:"state/instance-number|instance-number" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛInstanceNumber       []ygot.Annotation  `path:"state/@instance-number|@instance-number" ygotAnnotation:"true"`
	Ipv4InterfaceAddress  *string            `path:"state/ipv4-interface-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpv4InterfaceAddress []ygot.Annotation  `path:"state/@ipv4-interface-address" ygotAnnotation:"true"`
	Ipv4NeighborAddress   *string            `path:"state/ipv4-neighbor-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpv4NeighborAddress  []ygot.Annotation  `path:"state/@ipv4-neighbor-address" ygotAnnotation:"true"`
	PsnNumber             *uint8             `path:"state/psn-number" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPsnNumber            []ygot.Annotation  `path:"state/@psn-number" ygotAnnotation:"true"`
	SrlgValue             []uint32           `path:"state/srlg-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSrlgValue            []ygot.Annotation  `path:"state/@srlg-value" ygotAnnotation:"true"`
	SystemId              *string            `path:"state/system-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSystemId             []ygot.Annotation  `path:"state/@system-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg) IsYANGGoStruct() {}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg) GetFlags() []E_Ipv4Srlg_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetInstanceNumber retrieves the value of the leaf InstanceNumber from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InstanceNumber is set, it can
// safely use t.GetInstanceNumber() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InstanceNumber == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg) GetInstanceNumber() uint32 {
	if t == nil || t.InstanceNumber == nil {
		return 0
	}
	return *t.InstanceNumber
}

// GetIpv4InterfaceAddress retrieves the value of the leaf Ipv4InterfaceAddress from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ipv4InterfaceAddress is set, it can
// safely use t.GetIpv4InterfaceAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ipv4InterfaceAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg) GetIpv4InterfaceAddress() string {
	if t == nil || t.Ipv4InterfaceAddress == nil {
		return ""
	}
	return *t.Ipv4InterfaceAddress
}

// GetIpv4NeighborAddress retrieves the value of the leaf Ipv4NeighborAddress from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ipv4NeighborAddress is set, it can
// safely use t.GetIpv4NeighborAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ipv4NeighborAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg) GetIpv4NeighborAddress() string {
	if t == nil || t.Ipv4NeighborAddress == nil {
		return ""
	}
	return *t.Ipv4NeighborAddress
}

// GetPsnNumber retrieves the value of the leaf PsnNumber from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PsnNumber is set, it can
// safely use t.GetPsnNumber() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PsnNumber == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg) GetPsnNumber() uint8 {
	if t == nil || t.PsnNumber == nil {
		return 0
	}
	return *t.PsnNumber
}

// GetSrlgValue retrieves the value of the leaf SrlgValue from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SrlgValue is set, it can
// safely use t.GetSrlgValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SrlgValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg) GetSrlgValue() []uint32 {
	if t == nil || t.SrlgValue == nil {
		return nil
	}
	return t.SrlgValue
}

// GetSystemId retrieves the value of the leaf SystemId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemId is set, it can
// safely use t.GetSystemId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg) GetSystemId() string {
	if t == nil || t.SystemId == nil {
		return ""
	}
	return *t.SystemId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg) ΛListKeyMap() (map[string]interface{}, error) {
	if t.InstanceNumber == nil {
		return nil, fmt.Errorf("nil value for key InstanceNumber")
	}

	return map[string]interface{}{
		"instance-number": *t.InstanceNumber,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4Srlg) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-te-router-id YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	RouterId  []string          `path:"state/router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouterId []ygot.Annotation `path:"state/@router-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId) IsYANGGoStruct() {}

// GetRouterId retrieves the value of the leaf RouterId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterId is set, it can
// safely use t.GetRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId) GetRouterId() []string {
	if t == nil || t.RouterId == nil {
		return nil
	}
	return t.RouterId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv4TeRouterId) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-interface-addresses YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses) IsYANGGoStruct() {}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6InterfaceAddresses) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-reachability YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability struct {
	ΛMetadata []ygot.Annotation                                                               `path:"@" ygotAnnotation:"true"`
	Prefix    map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix `path:"prefixes/prefix" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefix   []ygot.Annotation                                                               `path:"prefixes/@prefix" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability) IsYANGGoStruct() {}

// NewPrefix creates a new entry in the Prefix list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability) NewPrefix(Prefix string) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix)
	}

	key := Prefix

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Prefix[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Prefix", key)
	}

	t.Prefix[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix{
		Prefix: &Prefix,
	}

	return t.Prefix[key], nil
}

// RenamePrefix renames an entry in the list Prefix within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability) RenamePrefix(oldK, newK string) error {
	if _, ok := t.Prefix[newK]; ok {
		return fmt.Errorf("key %v already exists in Prefix", newK)
	}

	e, ok := t.Prefix[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Prefix", oldK)
	}
	e.Prefix = &newK

	t.Prefix[newK] = e
	delete(t.Prefix, oldK)
	return nil
}

// GetOrCreatePrefixMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability) GetOrCreatePrefixMap() map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix {
	if t.Prefix == nil {
		t.Prefix = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix)
	}
	return t.Prefix
}

// GetOrCreatePrefix retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability) GetOrCreatePrefix(Prefix string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix {

	key := Prefix

	if v, ok := t.Prefix[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPrefix(Prefix)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePrefix got unexpected error: %v", err))
	}
	return v
}

// GetPrefix retrieves the value with the specified key from
// the Prefix map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability) GetPrefix(Prefix string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix {

	if t == nil {
		return nil
	}

	key := Prefix

	if lm, ok := t.Prefix[key]; ok {
		return lm
	}
	return nil
}

// AppendPrefix appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix struct to the
// list Prefix of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability) AppendPrefix(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key received for Prefix")
	}

	key := *v.Prefix

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix)
	}

	if _, ok := t.Prefix[key]; ok {
		return fmt.Errorf("duplicate key for list Prefix %v", key)
	}

	t.Prefix[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Prefix {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-reachability/prefixes/prefix YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix struct {
	ΛMetadata        []ygot.Annotation                                                                                                `path:"@" ygotAnnotation:"true"`
	Metric           *uint32                                                                                                          `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric          []ygot.Annotation                                                                                                `path:"state/@metric" ygotAnnotation:"true"`
	Prefix           *string                                                                                                          `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix          []ygot.Annotation                                                                                                `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
	SBit             *bool                                                                                                            `path:"state/s-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSBit            []ygot.Annotation                                                                                                `path:"state/@s-bit" ygotAnnotation:"true"`
	Subtlv           map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv `path:"subtlvs/subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubtlv          []ygot.Annotation                                                                                                `path:"subtlvs/@subtlv" ygotAnnotation:"true"`
	UndefinedSubtlv  map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv                   `path:"undefined-subtlvs/undefined-subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUndefinedSubtlv []ygot.Annotation                                                                                                `path:"undefined-subtlvs/@undefined-subtlv" ygotAnnotation:"true"`
	UpDown           *bool                                                                                                            `path:"state/up-down" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUpDown          []ygot.Annotation                                                                                                `path:"state/@up-down" ygotAnnotation:"true"`
	XBit             *bool                                                                                                            `path:"state/x-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛXBit            []ygot.Annotation                                                                                                `path:"state/@x-bit" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) IsYANGGoStruct() {}

// NewSubtlv creates a new entry in the Subtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) NewSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Subtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Subtlv", key)
	}

	t.Subtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv{
		Type: Type,
	}

	return t.Subtlv[key], nil
}

// RenameSubtlv renames an entry in the list Subtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) RenameSubtlv(oldK, newK E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) error {
	if _, ok := t.Subtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in Subtlv", newK)
	}

	e, ok := t.Subtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Subtlv", oldK)
	}
	e.Type = newK

	t.Subtlv[newK] = e
	delete(t.Subtlv, oldK)
	return nil
}

// GetOrCreateSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) GetOrCreateSubtlvMap() map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv {
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv)
	}
	return t.Subtlv
}

// GetOrCreateSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) GetOrCreateSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv {

	key := Type

	if v, ok := t.Subtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetSubtlv retrieves the value with the specified key from
// the Subtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) GetSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.Subtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv struct to the
// list Subtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) AppendSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) error {
	key := v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv)
	}

	if _, ok := t.Subtlv[key]; ok {
		return fmt.Errorf("duplicate key for list Subtlv %v", key)
	}

	t.Subtlv[key] = v
	return nil
}

// NewUndefinedSubtlv creates a new entry in the UndefinedSubtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) NewUndefinedSubtlv(Type uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UndefinedSubtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UndefinedSubtlv", key)
	}

	t.UndefinedSubtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv{
		Type: &Type,
	}

	return t.UndefinedSubtlv[key], nil
}

// RenameUndefinedSubtlv renames an entry in the list UndefinedSubtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) RenameUndefinedSubtlv(oldK, newK uint8) error {
	if _, ok := t.UndefinedSubtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in UndefinedSubtlv", newK)
	}

	e, ok := t.UndefinedSubtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UndefinedSubtlv", oldK)
	}
	e.Type = &newK

	t.UndefinedSubtlv[newK] = e
	delete(t.UndefinedSubtlv, oldK)
	return nil
}

// GetOrCreateUndefinedSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) GetOrCreateUndefinedSubtlvMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv {
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv)
	}
	return t.UndefinedSubtlv
}

// GetOrCreateUndefinedSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) GetOrCreateUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv {

	key := Type

	if v, ok := t.UndefinedSubtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUndefinedSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUndefinedSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetUndefinedSubtlv retrieves the value with the specified key from
// the UndefinedSubtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) GetUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.UndefinedSubtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendUndefinedSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv struct to the
// list UndefinedSubtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) AppendUndefinedSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv) error {
	if v.Type == nil {
		return fmt.Errorf("invalid nil key received for Type")
	}

	key := *v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv)
	}

	if _, ok := t.UndefinedSubtlv[key]; ok {
		return fmt.Errorf("duplicate key for list UndefinedSubtlv %v", key)
	}

	t.UndefinedSubtlv[key] = v
	return nil
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetSBit retrieves the value of the leaf SBit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SBit is set, it can
// safely use t.GetSBit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SBit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) GetSBit() bool {
	if t == nil || t.SBit == nil {
		return false
	}
	return *t.SBit
}

// GetUpDown retrieves the value of the leaf UpDown from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UpDown is set, it can
// safely use t.GetUpDown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UpDown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) GetUpDown() bool {
	if t == nil || t.UpDown == nil {
		return false
	}
	return *t.UpDown
}

// GetXBit retrieves the value of the leaf XBit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if XBit is set, it can
// safely use t.GetXBit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.XBit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) GetXBit() bool {
	if t == nil || t.XBit == nil {
		return false
	}
	return *t.XBit
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Subtlv {
		e.PopulateDefaults()
	}
	for _, e := range t.UndefinedSubtlv {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"prefix": *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-reachability/prefixes/prefix/subtlvs/subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv struct {
	ΛMetadata           []ygot.Annotation                                                                                `path:"@" ygotAnnotation:"true"`
	Flags               *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags                `path:"flags" module:"openconfig-network-instance"`
	ΛFlags              []ygot.Annotation                                                                                `path:"@flags" ygotAnnotation:"true"`
	Ipv4SourceRouterId  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId   `path:"ipv4-source-router-id" module:"openconfig-network-instance"`
	ΛIpv4SourceRouterId []ygot.Annotation                                                                                `path:"@ipv4-source-router-id" ygotAnnotation:"true"`
	Ipv6SourceRouterId  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId   `path:"ipv6-source-router-id" module:"openconfig-network-instance"`
	ΛIpv6SourceRouterId []ygot.Annotation                                                                                `path:"@ipv6-source-router-id" ygotAnnotation:"true"`
	PrefixSid           map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid `path:"prefix-sids/prefix-sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixSid          []ygot.Annotation                                                                                `path:"prefix-sids/@prefix-sid" ygotAnnotation:"true"`
	Tag                 *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag                  `path:"tag" module:"openconfig-network-instance"`
	ΛTag                []ygot.Annotation                                                                                `path:"@tag" ygotAnnotation:"true"`
	Tag64               *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64                `path:"tag64" module:"openconfig-network-instance"`
	ΛTag64              []ygot.Annotation                                                                                `path:"@tag64" ygotAnnotation:"true"`
	Type                E_IsisLsdbTypes_ISIS_SUBTLV_TYPE                                                                 `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType               []ygot.Annotation                                                                                `path:"state/@type|@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) IsYANGGoStruct() {}

// NewPrefixSid creates a new entry in the PrefixSid list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) NewPrefixSid(Value uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PrefixSid == nil {
		t.PrefixSid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid)
	}

	key := Value

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.PrefixSid[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list PrefixSid", key)
	}

	t.PrefixSid[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid{
		Value: &Value,
	}

	return t.PrefixSid[key], nil
}

// RenamePrefixSid renames an entry in the list PrefixSid within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) RenamePrefixSid(oldK, newK uint32) error {
	if _, ok := t.PrefixSid[newK]; ok {
		return fmt.Errorf("key %v already exists in PrefixSid", newK)
	}

	e, ok := t.PrefixSid[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in PrefixSid", oldK)
	}
	e.Value = &newK

	t.PrefixSid[newK] = e
	delete(t.PrefixSid, oldK)
	return nil
}

// GetOrCreatePrefixSidMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) GetOrCreatePrefixSidMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid {
	if t.PrefixSid == nil {
		t.PrefixSid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid)
	}
	return t.PrefixSid
}

// GetOrCreatePrefixSid retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) GetOrCreatePrefixSid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid {

	key := Value

	if v, ok := t.PrefixSid[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPrefixSid(Value)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePrefixSid got unexpected error: %v", err))
	}
	return v
}

// GetPrefixSid retrieves the value with the specified key from
// the PrefixSid map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) GetPrefixSid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid {

	if t == nil {
		return nil
	}

	key := Value

	if lm, ok := t.PrefixSid[key]; ok {
		return lm
	}
	return nil
}

// AppendPrefixSid appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid struct to the
// list PrefixSid of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) AppendPrefixSid(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid) error {
	if v.Value == nil {
		return fmt.Errorf("invalid nil key received for Value")
	}

	key := *v.Value

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PrefixSid == nil {
		t.PrefixSid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid)
	}

	if _, ok := t.PrefixSid[key]; ok {
		return fmt.Errorf("duplicate key for list PrefixSid %v", key)
	}

	t.PrefixSid[key] = v
	return nil
}

// GetOrCreateFlags retrieves the value of the Flags field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) GetOrCreateFlags() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags {
	if t.Flags != nil {
		return t.Flags
	}
	t.Flags = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags{}
	return t.Flags
}

// GetOrCreateIpv4SourceRouterId retrieves the value of the Ipv4SourceRouterId field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) GetOrCreateIpv4SourceRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId {
	if t.Ipv4SourceRouterId != nil {
		return t.Ipv4SourceRouterId
	}
	t.Ipv4SourceRouterId = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId{}
	return t.Ipv4SourceRouterId
}

// GetOrCreateIpv6SourceRouterId retrieves the value of the Ipv6SourceRouterId field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) GetOrCreateIpv6SourceRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId {
	if t.Ipv6SourceRouterId != nil {
		return t.Ipv6SourceRouterId
	}
	t.Ipv6SourceRouterId = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId{}
	return t.Ipv6SourceRouterId
}

// GetOrCreateTag retrieves the value of the Tag field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) GetOrCreateTag() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag {
	if t.Tag != nil {
		return t.Tag
	}
	t.Tag = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag{}
	return t.Tag
}

// GetOrCreateTag64 retrieves the value of the Tag64 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) GetOrCreateTag64() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64 {
	if t.Tag64 != nil {
		return t.Tag64
	}
	t.Tag64 = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64{}
	return t.Tag64
}

// GetFlags returns the value of the Flags struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv. If the receiver or the field Flags is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) GetFlags() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags {
	if t != nil && t.Flags != nil {
		return t.Flags
	}
	return nil
}

// GetIpv4SourceRouterId returns the value of the Ipv4SourceRouterId struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv. If the receiver or the field Ipv4SourceRouterId is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) GetIpv4SourceRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId {
	if t != nil && t.Ipv4SourceRouterId != nil {
		return t.Ipv4SourceRouterId
	}
	return nil
}

// GetIpv6SourceRouterId returns the value of the Ipv6SourceRouterId struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv. If the receiver or the field Ipv6SourceRouterId is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) GetIpv6SourceRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId {
	if t != nil && t.Ipv6SourceRouterId != nil {
		return t.Ipv6SourceRouterId
	}
	return nil
}

// GetTag returns the value of the Tag struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv. If the receiver or the field Tag is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) GetTag() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag {
	if t != nil && t.Tag != nil {
		return t.Tag
	}
	return nil
}

// GetTag64 returns the value of the Tag64 struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv. If the receiver or the field Tag64 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) GetTag64() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64 {
	if t != nil && t.Tag64 != nil {
		return t.Tag64
	}
	return nil
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Flags.PopulateDefaults()
	t.Ipv4SourceRouterId.PopulateDefaults()
	t.Ipv6SourceRouterId.PopulateDefaults()
	t.Tag.PopulateDefaults()
	t.Tag64.PopulateDefaults()
	for _, e := range t.PrefixSid {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"type": t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-reachability/prefixes/prefix/subtlvs/subtlv/flags YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags struct {
	ΛMetadata []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Flags     []E_Flags_Flags                  `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation                `path:"state/@flags" ygotAnnotation:"true"`
	Type      E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags) GetFlags() []E_Flags_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Flags) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-reachability/prefixes/prefix/subtlvs/subtlv/ipv4-source-router-id YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId struct {
	ΛMetadata []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	RouterId  *string                          `path:"state/router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouterId []ygot.Annotation                `path:"state/@router-id" ygotAnnotation:"true"`
	Type      E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId) IsYANGGoStruct() {
}

// GetRouterId retrieves the value of the leaf RouterId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterId is set, it can
// safely use t.GetRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId) GetRouterId() string {
	if t == nil || t.RouterId == nil {
		return ""
	}
	return *t.RouterId
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-reachability/prefixes/prefix/subtlvs/subtlv/ipv6-source-router-id YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId struct {
	ΛMetadata []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	RouterId  *string                          `path:"state/router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouterId []ygot.Annotation                `path:"state/@router-id" ygotAnnotation:"true"`
	Type      E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId) IsYANGGoStruct() {
}

// GetRouterId retrieves the value of the leaf RouterId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterId is set, it can
// safely use t.GetRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId) GetRouterId() string {
	if t == nil || t.RouterId == nil {
		return ""
	}
	return *t.RouterId
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-reachability/prefixes/prefix/subtlvs/subtlv/prefix-sids/prefix-sid YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid struct {
	ΛMetadata  []ygot.Annotation   `path:"@" ygotAnnotation:"true"`
	Algorithm  *uint8              `path:"state/algorithm" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAlgorithm []ygot.Annotation   `path:"state/@algorithm" ygotAnnotation:"true"`
	Flags      []E_PrefixSid_Flags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags     []ygot.Annotation   `path:"state/@flags" ygotAnnotation:"true"`
	Value      *uint32             `path:"state/value|value" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛValue     []ygot.Annotation   `path:"state/@value|@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid) IsYANGGoStruct() {
}

// GetAlgorithm retrieves the value of the leaf Algorithm from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Algorithm is set, it can
// safely use t.GetAlgorithm() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Algorithm == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid) GetAlgorithm() uint8 {
	if t == nil || t.Algorithm == nil {
		return 0
	}
	return *t.Algorithm
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid) GetFlags() []E_PrefixSid_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid) GetValue() uint32 {
	if t == nil || t.Value == nil {
		return 0
	}
	return *t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Value == nil {
		return nil, fmt.Errorf("nil value for key Value")
	}

	return map[string]interface{}{
		"value": *t.Value,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_PrefixSid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-reachability/prefixes/prefix/subtlvs/subtlv/tag YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Tag32     []uint32          `path:"state/tag32" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTag32    []ygot.Annotation `path:"state/@tag32" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag) IsYANGGoStruct() {
}

// GetTag32 retrieves the value of the leaf Tag32 from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tag32 is set, it can
// safely use t.GetTag32() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tag32 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag) GetTag32() []uint32 {
	if t == nil || t.Tag32 == nil {
		return nil
	}
	return t.Tag32
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64 represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-reachability/prefixes/prefix/subtlvs/subtlv/tag64 YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64 struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Tag64     []uint64          `path:"state/tag64" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTag64    []ygot.Annotation `path:"state/@tag64" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64) IsYANGGoStruct() {
}

// GetTag64 retrieves the value of the leaf Tag64 from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tag64 is set, it can
// safely use t.GetTag64() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tag64 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64) GetTag64() []uint64 {
	if t == nil || t.Tag64 == nil {
		return nil
	}
	return t.Tag64
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_Subtlv_Tag64) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-reachability/prefixes/prefix/undefined-subtlvs/undefined-subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint8            `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint8            `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type|@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv) IsYANGGoStruct() {
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv) GetLength() uint8 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv) GetType() uint8 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Type == nil {
		return nil, fmt.Errorf("nil value for key Type")
	}

	return map[string]interface{}{
		"type": *t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Reachability_Prefix_UndefinedSubtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-srlgs/ipv6-srlg YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg struct {
	ΛMetadata             []ygot.Annotation  `path:"@" ygotAnnotation:"true"`
	Flags                 []E_Ipv6Srlg_Flags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags                []ygot.Annotation  `path:"state/@flags" ygotAnnotation:"true"`
	InstanceNumber        *uint32            `path:"state/instance-number|instance-number" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛInstanceNumber       []ygot.Annotation  `path:"state/@instance-number|@instance-number" ygotAnnotation:"true"`
	Ipv6InterfaceAddress  *string            `path:"state/ipv6-interface-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpv6InterfaceAddress []ygot.Annotation  `path:"state/@ipv6-interface-address" ygotAnnotation:"true"`
	Ipv6NeighborAddress   *string            `path:"state/ipv6-neighbor-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpv6NeighborAddress  []ygot.Annotation  `path:"state/@ipv6-neighbor-address" ygotAnnotation:"true"`
	PsnNumber             *uint8             `path:"state/psn-number" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPsnNumber            []ygot.Annotation  `path:"state/@psn-number" ygotAnnotation:"true"`
	SrlgValue             []uint32           `path:"state/srlg-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSrlgValue            []ygot.Annotation  `path:"state/@srlg-value" ygotAnnotation:"true"`
	SystemId              *string            `path:"state/system-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSystemId             []ygot.Annotation  `path:"state/@system-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg) IsYANGGoStruct() {}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg) GetFlags() []E_Ipv6Srlg_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetInstanceNumber retrieves the value of the leaf InstanceNumber from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InstanceNumber is set, it can
// safely use t.GetInstanceNumber() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InstanceNumber == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg) GetInstanceNumber() uint32 {
	if t == nil || t.InstanceNumber == nil {
		return 0
	}
	return *t.InstanceNumber
}

// GetIpv6InterfaceAddress retrieves the value of the leaf Ipv6InterfaceAddress from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ipv6InterfaceAddress is set, it can
// safely use t.GetIpv6InterfaceAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ipv6InterfaceAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg) GetIpv6InterfaceAddress() string {
	if t == nil || t.Ipv6InterfaceAddress == nil {
		return ""
	}
	return *t.Ipv6InterfaceAddress
}

// GetIpv6NeighborAddress retrieves the value of the leaf Ipv6NeighborAddress from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ipv6NeighborAddress is set, it can
// safely use t.GetIpv6NeighborAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ipv6NeighborAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg) GetIpv6NeighborAddress() string {
	if t == nil || t.Ipv6NeighborAddress == nil {
		return ""
	}
	return *t.Ipv6NeighborAddress
}

// GetPsnNumber retrieves the value of the leaf PsnNumber from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PsnNumber is set, it can
// safely use t.GetPsnNumber() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PsnNumber == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg) GetPsnNumber() uint8 {
	if t == nil || t.PsnNumber == nil {
		return 0
	}
	return *t.PsnNumber
}

// GetSrlgValue retrieves the value of the leaf SrlgValue from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SrlgValue is set, it can
// safely use t.GetSrlgValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SrlgValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg) GetSrlgValue() []uint32 {
	if t == nil || t.SrlgValue == nil {
		return nil
	}
	return t.SrlgValue
}

// GetSystemId retrieves the value of the leaf SystemId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemId is set, it can
// safely use t.GetSystemId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg) GetSystemId() string {
	if t == nil || t.SystemId == nil {
		return ""
	}
	return *t.SystemId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg) ΛListKeyMap() (map[string]interface{}, error) {
	if t.InstanceNumber == nil {
		return nil, fmt.Errorf("nil value for key InstanceNumber")
	}

	return map[string]interface{}{
		"instance-number": *t.InstanceNumber,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6Srlg) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-te-router-id YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	RouterId  []string          `path:"state/router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouterId []ygot.Annotation `path:"state/@router-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId) IsYANGGoStruct() {}

// GetRouterId retrieves the value of the leaf RouterId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterId is set, it can
// safely use t.GetRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId) GetRouterId() []string {
	if t == nil || t.RouterId == nil {
		return nil
	}
	return t.RouterId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Ipv6TeRouterId) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/is-alias-id YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AliasId   *string           `path:"state/alias-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAliasId  []ygot.Annotation `path:"state/@alias-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId) IsYANGGoStruct() {}

// GetAliasId retrieves the value of the leaf AliasId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AliasId is set, it can
// safely use t.GetAliasId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AliasId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId) GetAliasId() string {
	if t == nil || t.AliasId == nil {
		return ""
	}
	return *t.AliasId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsAliasId) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/is-reachability YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability struct {
	ΛMetadata []ygot.Annotation                                                               `path:"@" ygotAnnotation:"true"`
	Neighbor  map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor `path:"neighbors/neighbor" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighbor []ygot.Annotation                                                               `path:"neighbors/@neighbor" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability) IsYANGGoStruct() {}

// NewNeighbor creates a new entry in the Neighbor list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability) NewNeighbor(SystemId string) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor)
	}

	key := SystemId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor{
		SystemId: &SystemId,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.SystemId = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability) GetOrCreateNeighborMap() map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability) GetOrCreateNeighbor(SystemId string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor {

	key := SystemId

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(SystemId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability) GetNeighbor(SystemId string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor {

	if t == nil {
		return nil
	}

	key := SystemId

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor struct to the
// list Neighbor of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability) AppendNeighbor(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor) error {
	if v.SystemId == nil {
		return fmt.Errorf("invalid nil key received for SystemId")
	}

	key := *v.SystemId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/is-reachability/neighbors/neighbor YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor struct {
	ΛMetadata      []ygot.Annotation                                                                  `path:"@" ygotAnnotation:"true"`
	DefaultMetric  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric `path:"default-metric" module:"openconfig-network-instance"`
	ΛDefaultMetric []ygot.Annotation                                                                  `path:"@default-metric" ygotAnnotation:"true"`
	DelayMetric    *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric   `path:"delay-metric" module:"openconfig-network-instance"`
	ΛDelayMetric   []ygot.Annotation                                                                  `path:"@delay-metric" ygotAnnotation:"true"`
	ErrorMetric    *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric   `path:"error-metric" module:"openconfig-network-instance"`
	ΛErrorMetric   []ygot.Annotation                                                                  `path:"@error-metric" ygotAnnotation:"true"`
	ExpenseMetric  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric `path:"expense-metric" module:"openconfig-network-instance"`
	ΛExpenseMetric []ygot.Annotation                                                                  `path:"@expense-metric" ygotAnnotation:"true"`
	SystemId       *string                                                                            `path:"state/system-id|system-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSystemId      []ygot.Annotation                                                                  `path:"state/@system-id|@system-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor) IsYANGGoStruct() {}

// GetOrCreateDefaultMetric retrieves the value of the DefaultMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor) GetOrCreateDefaultMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric {
	if t.DefaultMetric != nil {
		return t.DefaultMetric
	}
	t.DefaultMetric = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric{}
	return t.DefaultMetric
}

// GetOrCreateDelayMetric retrieves the value of the DelayMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor) GetOrCreateDelayMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric {
	if t.DelayMetric != nil {
		return t.DelayMetric
	}
	t.DelayMetric = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric{}
	return t.DelayMetric
}

// GetOrCreateErrorMetric retrieves the value of the ErrorMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor) GetOrCreateErrorMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric {
	if t.ErrorMetric != nil {
		return t.ErrorMetric
	}
	t.ErrorMetric = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric{}
	return t.ErrorMetric
}

// GetOrCreateExpenseMetric retrieves the value of the ExpenseMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor) GetOrCreateExpenseMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric {
	if t.ExpenseMetric != nil {
		return t.ExpenseMetric
	}
	t.ExpenseMetric = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric{}
	return t.ExpenseMetric
}

// GetDefaultMetric returns the value of the DefaultMetric struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor. If the receiver or the field DefaultMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor) GetDefaultMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric {
	if t != nil && t.DefaultMetric != nil {
		return t.DefaultMetric
	}
	return nil
}

// GetDelayMetric returns the value of the DelayMetric struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor. If the receiver or the field DelayMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor) GetDelayMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric {
	if t != nil && t.DelayMetric != nil {
		return t.DelayMetric
	}
	return nil
}

// GetErrorMetric returns the value of the ErrorMetric struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor. If the receiver or the field ErrorMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor) GetErrorMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric {
	if t != nil && t.ErrorMetric != nil {
		return t.ErrorMetric
	}
	return nil
}

// GetExpenseMetric returns the value of the ExpenseMetric struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor. If the receiver or the field ExpenseMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor) GetExpenseMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric {
	if t != nil && t.ExpenseMetric != nil {
		return t.ExpenseMetric
	}
	return nil
}

// GetSystemId retrieves the value of the leaf SystemId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemId is set, it can
// safely use t.GetSystemId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor) GetSystemId() string {
	if t == nil || t.SystemId == nil {
		return ""
	}
	return *t.SystemId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.DefaultMetric.PopulateDefaults()
	t.DelayMetric.PopulateDefaults()
	t.ErrorMetric.PopulateDefaults()
	t.ExpenseMetric.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.SystemId == nil {
		return nil, fmt.Errorf("nil value for key SystemId")
	}

	return map[string]interface{}{
		"system-id": *t.SystemId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/is-reachability/neighbors/neighbor/default-metric YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric struct {
	ΛMetadata []ygot.Annotation     `path:"@" ygotAnnotation:"true"`
	Flags     E_DefaultMetric_Flags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation     `path:"state/@flags" ygotAnnotation:"true"`
	Metric    *uint8                `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation     `path:"state/@metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric) GetFlags() E_DefaultMetric_Flags {
	if t == nil || t.Flags == 0 {
		return 0
	}
	return t.Flags
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric) GetMetric() uint8 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DefaultMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/is-reachability/neighbors/neighbor/delay-metric YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric struct {
	ΛMetadata []ygot.Annotation        `path:"@" ygotAnnotation:"true"`
	Flags     []E_Isis_IsisMetricFlags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation        `path:"state/@flags" ygotAnnotation:"true"`
	Metric    *uint8                   `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation        `path:"state/@metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric) GetFlags() []E_Isis_IsisMetricFlags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric) GetMetric() uint8 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_DelayMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/is-reachability/neighbors/neighbor/error-metric YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric struct {
	ΛMetadata []ygot.Annotation        `path:"@" ygotAnnotation:"true"`
	Flags     []E_Isis_IsisMetricFlags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation        `path:"state/@flags" ygotAnnotation:"true"`
	Metric    *uint8                   `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation        `path:"state/@metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric) GetFlags() []E_Isis_IsisMetricFlags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric) GetMetric() uint8 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ErrorMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/is-reachability/neighbors/neighbor/expense-metric YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric struct {
	ΛMetadata []ygot.Annotation        `path:"@" ygotAnnotation:"true"`
	Flags     []E_Isis_IsisMetricFlags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation        `path:"state/@flags" ygotAnnotation:"true"`
	Metric    *uint8                   `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation        `path:"state/@metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric) GetFlags() []E_Isis_IsisMetricFlags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric) GetMetric() uint8 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsReachability_Neighbor_ExpenseMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute struct {
	ΛMetadata []ygot.Annotation                                                                      `path:"@" ygotAnnotation:"true"`
	Neighbor  map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor `path:"neighbors/neighbor" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighbor []ygot.Annotation                                                                      `path:"neighbors/@neighbor" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute) IsYANGGoStruct() {}

// NewNeighbor creates a new entry in the Neighbor list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute) NewNeighbor(SystemId string) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor)
	}

	key := SystemId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor{
		SystemId: &SystemId,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.SystemId = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute) GetOrCreateNeighborMap() map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute) GetOrCreateNeighbor(SystemId string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor {

	key := SystemId

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(SystemId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute) GetNeighbor(SystemId string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor {

	if t == nil {
		return nil
	}

	key := SystemId

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor struct to the
// list Neighbor of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute) AppendNeighbor(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor) error {
	if v.SystemId == nil {
		return fmt.Errorf("invalid nil key received for SystemId")
	}

	key := *v.SystemId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor struct {
	ΛMetadata []ygot.Annotation                                                                               `path:"@" ygotAnnotation:"true"`
	Instance  map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance `path:"instances/instance" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInstance []ygot.Annotation                                                                               `path:"instances/@instance" ygotAnnotation:"true"`
	SystemId  *string                                                                                         `path:"state/system-id|system-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSystemId []ygot.Annotation                                                                               `path:"state/@system-id|@system-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor) IsYANGGoStruct() {}

// NewInstance creates a new entry in the Instance list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor) NewInstance(Id uint64) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Instance == nil {
		t.Instance = make(map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Instance[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Instance", key)
	}

	t.Instance[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance{
		Id: &Id,
	}

	return t.Instance[key], nil
}

// RenameInstance renames an entry in the list Instance within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor) RenameInstance(oldK, newK uint64) error {
	if _, ok := t.Instance[newK]; ok {
		return fmt.Errorf("key %v already exists in Instance", newK)
	}

	e, ok := t.Instance[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Instance", oldK)
	}
	e.Id = &newK

	t.Instance[newK] = e
	delete(t.Instance, oldK)
	return nil
}

// GetOrCreateInstanceMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor) GetOrCreateInstanceMap() map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance {
	if t.Instance == nil {
		t.Instance = make(map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance)
	}
	return t.Instance
}

// GetOrCreateInstance retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor) GetOrCreateInstance(Id uint64) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance {

	key := Id

	if v, ok := t.Instance[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInstance(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInstance got unexpected error: %v", err))
	}
	return v
}

// GetInstance retrieves the value with the specified key from
// the Instance map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor) GetInstance(Id uint64) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.Instance[key]; ok {
		return lm
	}
	return nil
}

// AppendInstance appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance struct to the
// list Instance of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor) AppendInstance(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Instance == nil {
		t.Instance = make(map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance)
	}

	if _, ok := t.Instance[key]; ok {
		return fmt.Errorf("duplicate key for list Instance %v", key)
	}

	t.Instance[key] = v
	return nil
}

// GetSystemId retrieves the value of the leaf SystemId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemId is set, it can
// safely use t.GetSystemId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor) GetSystemId() string {
	if t == nil || t.SystemId == nil {
		return ""
	}
	return *t.SystemId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Instance {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.SystemId == nil {
		return nil, fmt.Errorf("nil value for key SystemId")
	}

	return map[string]interface{}{
		"system-id": *t.SystemId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance struct {
	ΛMetadata        []ygot.Annotation                                                                                                                `path:"@" ygotAnnotation:"true"`
	Id               *uint64                                                                                                                          `path:"state/id|id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛId              []ygot.Annotation                                                                                                                `path:"state/@id|@id" ygotAnnotation:"true"`
	Metric           *uint32                                                                                                                          `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric          []ygot.Annotation                                                                                                                `path:"state/@metric" ygotAnnotation:"true"`
	Subtlv           map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv `path:"subtlvs/subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubtlv          []ygot.Annotation                                                                                                                `path:"subtlvs/@subtlv" ygotAnnotation:"true"`
	UndefinedSubtlv  map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv                   `path:"undefined-subtlvs/undefined-subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUndefinedSubtlv []ygot.Annotation                                                                                                                `path:"undefined-subtlvs/@undefined-subtlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) IsYANGGoStruct() {
}

// NewSubtlv creates a new entry in the Subtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) NewSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Subtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Subtlv", key)
	}

	t.Subtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv{
		Type: Type,
	}

	return t.Subtlv[key], nil
}

// RenameSubtlv renames an entry in the list Subtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) RenameSubtlv(oldK, newK E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) error {
	if _, ok := t.Subtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in Subtlv", newK)
	}

	e, ok := t.Subtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Subtlv", oldK)
	}
	e.Type = newK

	t.Subtlv[newK] = e
	delete(t.Subtlv, oldK)
	return nil
}

// GetOrCreateSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) GetOrCreateSubtlvMap() map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv {
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv)
	}
	return t.Subtlv
}

// GetOrCreateSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) GetOrCreateSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv {

	key := Type

	if v, ok := t.Subtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetSubtlv retrieves the value with the specified key from
// the Subtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) GetSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.Subtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv struct to the
// list Subtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) AppendSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) error {
	key := v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv)
	}

	if _, ok := t.Subtlv[key]; ok {
		return fmt.Errorf("duplicate key for list Subtlv %v", key)
	}

	t.Subtlv[key] = v
	return nil
}

// NewUndefinedSubtlv creates a new entry in the UndefinedSubtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) NewUndefinedSubtlv(Type uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UndefinedSubtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UndefinedSubtlv", key)
	}

	t.UndefinedSubtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv{
		Type: &Type,
	}

	return t.UndefinedSubtlv[key], nil
}

// RenameUndefinedSubtlv renames an entry in the list UndefinedSubtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) RenameUndefinedSubtlv(oldK, newK uint8) error {
	if _, ok := t.UndefinedSubtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in UndefinedSubtlv", newK)
	}

	e, ok := t.UndefinedSubtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UndefinedSubtlv", oldK)
	}
	e.Type = &newK

	t.UndefinedSubtlv[newK] = e
	delete(t.UndefinedSubtlv, oldK)
	return nil
}

// GetOrCreateUndefinedSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) GetOrCreateUndefinedSubtlvMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv {
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv)
	}
	return t.UndefinedSubtlv
}

// GetOrCreateUndefinedSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) GetOrCreateUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv {

	key := Type

	if v, ok := t.UndefinedSubtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUndefinedSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUndefinedSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetUndefinedSubtlv retrieves the value with the specified key from
// the UndefinedSubtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) GetUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.UndefinedSubtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendUndefinedSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv struct to the
// list UndefinedSubtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) AppendUndefinedSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) error {
	if v.Type == nil {
		return fmt.Errorf("invalid nil key received for Type")
	}

	key := *v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv)
	}

	if _, ok := t.UndefinedSubtlv[key]; ok {
		return fmt.Errorf("duplicate key for list UndefinedSubtlv %v", key)
	}

	t.UndefinedSubtlv[key] = v
	return nil
}

// GetId retrieves the value of the leaf Id from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) GetId() uint64 {
	if t == nil || t.Id == nil {
		return 0
	}
	return *t.Id
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Subtlv {
		e.PopulateDefaults()
	}
	for _, e := range t.UndefinedSubtlv {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv struct {
	ΛMetadata                   []ygot.Annotation                                                                                                         `path:"@" ygotAnnotation:"true"`
	AdjacencySid                map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid       `path:"adjacency-sids/adjacency-sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdjacencySid               []ygot.Annotation                                                                                                         `path:"adjacency-sids/@adjacency-sid" ygotAnnotation:"true"`
	AdminGroup                  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup                    `path:"admin-group" module:"openconfig-network-instance"`
	ΛAdminGroup                 []ygot.Annotation                                                                                                         `path:"@admin-group" ygotAnnotation:"true"`
	AvailableBandwidth          *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth            `path:"available-bandwidth" module:"openconfig-network-instance"`
	ΛAvailableBandwidth         []ygot.Annotation                                                                                                         `path:"@available-bandwidth" ygotAnnotation:"true"`
	BandwidthConstraint         map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint `path:"bandwidth-constraints/bandwidth-constraint" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidthConstraint        []ygot.Annotation                                                                                                         `path:"bandwidth-constraints/@bandwidth-constraint" ygotAnnotation:"true"`
	ExtendedAdminGroup          *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup            `path:"extended-admin-group" module:"openconfig-network-instance"`
	ΛExtendedAdminGroup         []ygot.Annotation                                                                                                         `path:"@extended-admin-group" ygotAnnotation:"true"`
	Ipv4InterfaceAddress        *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress          `path:"ipv4-interface-address" module:"openconfig-network-instance"`
	ΛIpv4InterfaceAddress       []ygot.Annotation                                                                                                         `path:"@ipv4-interface-address" ygotAnnotation:"true"`
	Ipv4NeighborAddress         *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress           `path:"ipv4-neighbor-address" module:"openconfig-network-instance"`
	ΛIpv4NeighborAddress        []ygot.Annotation                                                                                                         `path:"@ipv4-neighbor-address" ygotAnnotation:"true"`
	Ipv6InterfaceAddress        *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress          `path:"ipv6-interface-address" module:"openconfig-network-instance"`
	ΛIpv6InterfaceAddress       []ygot.Annotation                                                                                                         `path:"@ipv6-interface-address" ygotAnnotation:"true"`
	Ipv6NeighborAddress         *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress           `path:"ipv6-neighbor-address" module:"openconfig-network-instance"`
	ΛIpv6NeighborAddress        []ygot.Annotation                                                                                                         `path:"@ipv6-neighbor-address" ygotAnnotation:"true"`
	LanAdjacencySid             map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid    `path:"lan-adjacency-sids/lan-adjacency-sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLanAdjacencySid            []ygot.Annotation                                                                                                         `path:"lan-adjacency-sids/@lan-adjacency-sid" ygotAnnotation:"true"`
	LinkAttributes              *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes                `path:"link-attributes" module:"openconfig-network-instance"`
	ΛLinkAttributes             []ygot.Annotation                                                                                                         `path:"@link-attributes" ygotAnnotation:"true"`
	LinkDelay                   *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay                     `path:"link-delay" module:"openconfig-network-instance"`
	ΛLinkDelay                  []ygot.Annotation                                                                                                         `path:"@link-delay" ygotAnnotation:"true"`
	LinkDelayVariation          *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation            `path:"link-delay-variation" module:"openconfig-network-instance"`
	ΛLinkDelayVariation         []ygot.Annotation                                                                                                         `path:"@link-delay-variation" ygotAnnotation:"true"`
	LinkId                      *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId                        `path:"link-id" module:"openconfig-network-instance"`
	ΛLinkId                     []ygot.Annotation                                                                                                         `path:"@link-id" ygotAnnotation:"true"`
	LinkLoss                    *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss                      `path:"link-loss" module:"openconfig-network-instance"`
	ΛLinkLoss                   []ygot.Annotation                                                                                                         `path:"@link-loss" ygotAnnotation:"true"`
	LinkProtectionType          *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType            `path:"link-protection-type" module:"openconfig-network-instance"`
	ΛLinkProtectionType         []ygot.Annotation                                                                                                         `path:"@link-protection-type" ygotAnnotation:"true"`
	MaxLinkBandwidth            *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth              `path:"max-link-bandwidth" module:"openconfig-network-instance"`
	ΛMaxLinkBandwidth           []ygot.Annotation                                                                                                         `path:"@max-link-bandwidth" ygotAnnotation:"true"`
	MaxReservableLinkBandwidth  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth    `path:"max-reservable-link-bandwidth" module:"openconfig-network-instance"`
	ΛMaxReservableLinkBandwidth []ygot.Annotation                                                                                                         `path:"@max-reservable-link-bandwidth" ygotAnnotation:"true"`
	MinMaxLinkDelay             *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay               `path:"min-max-link-delay" module:"openconfig-network-instance"`
	ΛMinMaxLinkDelay            []ygot.Annotation                                                                                                         `path:"@min-max-link-delay" ygotAnnotation:"true"`
	ResidualBandwidth           *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth             `path:"residual-bandwidth" module:"openconfig-network-instance"`
	ΛResidualBandwidth          []ygot.Annotation                                                                                                         `path:"@residual-bandwidth" ygotAnnotation:"true"`
	SetupPriority               map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority       `path:"unreserved-bandwidth/setup-priority" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSetupPriority              []ygot.Annotation                                                                                                         `path:"unreserved-bandwidth/@setup-priority" ygotAnnotation:"true"`
	TeDefaultMetric             *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric               `path:"te-default-metric" module:"openconfig-network-instance"`
	ΛTeDefaultMetric            []ygot.Annotation                                                                                                         `path:"@te-default-metric" ygotAnnotation:"true"`
	Type                        E_IsisLsdbTypes_ISIS_SUBTLV_TYPE                                                                                          `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType                       []ygot.Annotation                                                                                                         `path:"state/@type|@type" ygotAnnotation:"true"`
	UnconstrainedLsp            *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp              `path:"unconstrained-lsp" module:"openconfig-network-instance"`
	ΛUnconstrainedLsp           []ygot.Annotation                                                                                                         `path:"@unconstrained-lsp" ygotAnnotation:"true"`
	UtilizedBandwidth           *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth             `path:"utilized-bandwidth" module:"openconfig-network-instance"`
	ΛUtilizedBandwidth          []ygot.Annotation                                                                                                         `path:"@utilized-bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) IsYANGGoStruct() {
}

// NewAdjacencySid creates a new entry in the AdjacencySid list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) NewAdjacencySid(Value uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AdjacencySid == nil {
		t.AdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid)
	}

	key := Value

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AdjacencySid[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AdjacencySid", key)
	}

	t.AdjacencySid[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid{
		Value: &Value,
	}

	return t.AdjacencySid[key], nil
}

// RenameAdjacencySid renames an entry in the list AdjacencySid within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) RenameAdjacencySid(oldK, newK uint32) error {
	if _, ok := t.AdjacencySid[newK]; ok {
		return fmt.Errorf("key %v already exists in AdjacencySid", newK)
	}

	e, ok := t.AdjacencySid[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AdjacencySid", oldK)
	}
	e.Value = &newK

	t.AdjacencySid[newK] = e
	delete(t.AdjacencySid, oldK)
	return nil
}

// GetOrCreateAdjacencySidMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateAdjacencySidMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid {
	if t.AdjacencySid == nil {
		t.AdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid)
	}
	return t.AdjacencySid
}

// GetOrCreateAdjacencySid retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateAdjacencySid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid {

	key := Value

	if v, ok := t.AdjacencySid[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAdjacencySid(Value)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAdjacencySid got unexpected error: %v", err))
	}
	return v
}

// GetAdjacencySid retrieves the value with the specified key from
// the AdjacencySid map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetAdjacencySid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid {

	if t == nil {
		return nil
	}

	key := Value

	if lm, ok := t.AdjacencySid[key]; ok {
		return lm
	}
	return nil
}

// AppendAdjacencySid appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid struct to the
// list AdjacencySid of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) AppendAdjacencySid(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) error {
	if v.Value == nil {
		return fmt.Errorf("invalid nil key received for Value")
	}

	key := *v.Value

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AdjacencySid == nil {
		t.AdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid)
	}

	if _, ok := t.AdjacencySid[key]; ok {
		return fmt.Errorf("duplicate key for list AdjacencySid %v", key)
	}

	t.AdjacencySid[key] = v
	return nil
}

// NewBandwidthConstraint creates a new entry in the BandwidthConstraint list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) NewBandwidthConstraint(ModelId uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.BandwidthConstraint == nil {
		t.BandwidthConstraint = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint)
	}

	key := ModelId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.BandwidthConstraint[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list BandwidthConstraint", key)
	}

	t.BandwidthConstraint[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint{
		ModelId: &ModelId,
	}

	return t.BandwidthConstraint[key], nil
}

// RenameBandwidthConstraint renames an entry in the list BandwidthConstraint within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) RenameBandwidthConstraint(oldK, newK uint8) error {
	if _, ok := t.BandwidthConstraint[newK]; ok {
		return fmt.Errorf("key %v already exists in BandwidthConstraint", newK)
	}

	e, ok := t.BandwidthConstraint[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in BandwidthConstraint", oldK)
	}
	e.ModelId = &newK

	t.BandwidthConstraint[newK] = e
	delete(t.BandwidthConstraint, oldK)
	return nil
}

// GetOrCreateBandwidthConstraintMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateBandwidthConstraintMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint {
	if t.BandwidthConstraint == nil {
		t.BandwidthConstraint = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint)
	}
	return t.BandwidthConstraint
}

// GetOrCreateBandwidthConstraint retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateBandwidthConstraint(ModelId uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint {

	key := ModelId

	if v, ok := t.BandwidthConstraint[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewBandwidthConstraint(ModelId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateBandwidthConstraint got unexpected error: %v", err))
	}
	return v
}

// GetBandwidthConstraint retrieves the value with the specified key from
// the BandwidthConstraint map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetBandwidthConstraint(ModelId uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint {

	if t == nil {
		return nil
	}

	key := ModelId

	if lm, ok := t.BandwidthConstraint[key]; ok {
		return lm
	}
	return nil
}

// AppendBandwidthConstraint appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint struct to the
// list BandwidthConstraint of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) AppendBandwidthConstraint(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) error {
	if v.ModelId == nil {
		return fmt.Errorf("invalid nil key received for ModelId")
	}

	key := *v.ModelId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.BandwidthConstraint == nil {
		t.BandwidthConstraint = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint)
	}

	if _, ok := t.BandwidthConstraint[key]; ok {
		return fmt.Errorf("duplicate key for list BandwidthConstraint %v", key)
	}

	t.BandwidthConstraint[key] = v
	return nil
}

// NewLanAdjacencySid creates a new entry in the LanAdjacencySid list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) NewLanAdjacencySid(Value uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.LanAdjacencySid == nil {
		t.LanAdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid)
	}

	key := Value

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.LanAdjacencySid[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list LanAdjacencySid", key)
	}

	t.LanAdjacencySid[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid{
		Value: &Value,
	}

	return t.LanAdjacencySid[key], nil
}

// RenameLanAdjacencySid renames an entry in the list LanAdjacencySid within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) RenameLanAdjacencySid(oldK, newK uint32) error {
	if _, ok := t.LanAdjacencySid[newK]; ok {
		return fmt.Errorf("key %v already exists in LanAdjacencySid", newK)
	}

	e, ok := t.LanAdjacencySid[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in LanAdjacencySid", oldK)
	}
	e.Value = &newK

	t.LanAdjacencySid[newK] = e
	delete(t.LanAdjacencySid, oldK)
	return nil
}

// GetOrCreateLanAdjacencySidMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateLanAdjacencySidMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid {
	if t.LanAdjacencySid == nil {
		t.LanAdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid)
	}
	return t.LanAdjacencySid
}

// GetOrCreateLanAdjacencySid retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateLanAdjacencySid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid {

	key := Value

	if v, ok := t.LanAdjacencySid[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewLanAdjacencySid(Value)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateLanAdjacencySid got unexpected error: %v", err))
	}
	return v
}

// GetLanAdjacencySid retrieves the value with the specified key from
// the LanAdjacencySid map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetLanAdjacencySid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid {

	if t == nil {
		return nil
	}

	key := Value

	if lm, ok := t.LanAdjacencySid[key]; ok {
		return lm
	}
	return nil
}

// AppendLanAdjacencySid appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid struct to the
// list LanAdjacencySid of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) AppendLanAdjacencySid(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) error {
	if v.Value == nil {
		return fmt.Errorf("invalid nil key received for Value")
	}

	key := *v.Value

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.LanAdjacencySid == nil {
		t.LanAdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid)
	}

	if _, ok := t.LanAdjacencySid[key]; ok {
		return fmt.Errorf("duplicate key for list LanAdjacencySid %v", key)
	}

	t.LanAdjacencySid[key] = v
	return nil
}

// NewSetupPriority creates a new entry in the SetupPriority list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) NewSetupPriority(Priority uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SetupPriority == nil {
		t.SetupPriority = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority)
	}

	key := Priority

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.SetupPriority[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list SetupPriority", key)
	}

	t.SetupPriority[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority{
		Priority: &Priority,
	}

	return t.SetupPriority[key], nil
}

// RenameSetupPriority renames an entry in the list SetupPriority within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) RenameSetupPriority(oldK, newK uint8) error {
	if _, ok := t.SetupPriority[newK]; ok {
		return fmt.Errorf("key %v already exists in SetupPriority", newK)
	}

	e, ok := t.SetupPriority[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in SetupPriority", oldK)
	}
	e.Priority = &newK

	t.SetupPriority[newK] = e
	delete(t.SetupPriority, oldK)
	return nil
}

// GetOrCreateSetupPriorityMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateSetupPriorityMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority {
	if t.SetupPriority == nil {
		t.SetupPriority = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority)
	}
	return t.SetupPriority
}

// GetOrCreateSetupPriority retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateSetupPriority(Priority uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority {

	key := Priority

	if v, ok := t.SetupPriority[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSetupPriority(Priority)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSetupPriority got unexpected error: %v", err))
	}
	return v
}

// GetSetupPriority retrieves the value with the specified key from
// the SetupPriority map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetSetupPriority(Priority uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority {

	if t == nil {
		return nil
	}

	key := Priority

	if lm, ok := t.SetupPriority[key]; ok {
		return lm
	}
	return nil
}

// AppendSetupPriority appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority struct to the
// list SetupPriority of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) AppendSetupPriority(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) error {
	if v.Priority == nil {
		return fmt.Errorf("invalid nil key received for Priority")
	}

	key := *v.Priority

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SetupPriority == nil {
		t.SetupPriority = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority)
	}

	if _, ok := t.SetupPriority[key]; ok {
		return fmt.Errorf("duplicate key for list SetupPriority %v", key)
	}

	t.SetupPriority[key] = v
	return nil
}

// GetOrCreateAdminGroup retrieves the value of the AdminGroup field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateAdminGroup() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup {
	if t.AdminGroup != nil {
		return t.AdminGroup
	}
	t.AdminGroup = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup{}
	return t.AdminGroup
}

// GetOrCreateAvailableBandwidth retrieves the value of the AvailableBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateAvailableBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth {
	if t.AvailableBandwidth != nil {
		return t.AvailableBandwidth
	}
	t.AvailableBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth{}
	return t.AvailableBandwidth
}

// GetOrCreateExtendedAdminGroup retrieves the value of the ExtendedAdminGroup field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateExtendedAdminGroup() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup {
	if t.ExtendedAdminGroup != nil {
		return t.ExtendedAdminGroup
	}
	t.ExtendedAdminGroup = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup{}
	return t.ExtendedAdminGroup
}

// GetOrCreateIpv4InterfaceAddress retrieves the value of the Ipv4InterfaceAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateIpv4InterfaceAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress {
	if t.Ipv4InterfaceAddress != nil {
		return t.Ipv4InterfaceAddress
	}
	t.Ipv4InterfaceAddress = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress{}
	return t.Ipv4InterfaceAddress
}

// GetOrCreateIpv4NeighborAddress retrieves the value of the Ipv4NeighborAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateIpv4NeighborAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress {
	if t.Ipv4NeighborAddress != nil {
		return t.Ipv4NeighborAddress
	}
	t.Ipv4NeighborAddress = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress{}
	return t.Ipv4NeighborAddress
}

// GetOrCreateIpv6InterfaceAddress retrieves the value of the Ipv6InterfaceAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateIpv6InterfaceAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress {
	if t.Ipv6InterfaceAddress != nil {
		return t.Ipv6InterfaceAddress
	}
	t.Ipv6InterfaceAddress = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress{}
	return t.Ipv6InterfaceAddress
}

// GetOrCreateIpv6NeighborAddress retrieves the value of the Ipv6NeighborAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateIpv6NeighborAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress {
	if t.Ipv6NeighborAddress != nil {
		return t.Ipv6NeighborAddress
	}
	t.Ipv6NeighborAddress = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress{}
	return t.Ipv6NeighborAddress
}

// GetOrCreateLinkAttributes retrieves the value of the LinkAttributes field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateLinkAttributes() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes {
	if t.LinkAttributes != nil {
		return t.LinkAttributes
	}
	t.LinkAttributes = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes{}
	return t.LinkAttributes
}

// GetOrCreateLinkDelay retrieves the value of the LinkDelay field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateLinkDelay() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay {
	if t.LinkDelay != nil {
		return t.LinkDelay
	}
	t.LinkDelay = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay{}
	return t.LinkDelay
}

// GetOrCreateLinkDelayVariation retrieves the value of the LinkDelayVariation field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateLinkDelayVariation() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation {
	if t.LinkDelayVariation != nil {
		return t.LinkDelayVariation
	}
	t.LinkDelayVariation = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation{}
	return t.LinkDelayVariation
}

// GetOrCreateLinkId retrieves the value of the LinkId field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateLinkId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId {
	if t.LinkId != nil {
		return t.LinkId
	}
	t.LinkId = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId{}
	return t.LinkId
}

// GetOrCreateLinkLoss retrieves the value of the LinkLoss field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateLinkLoss() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss {
	if t.LinkLoss != nil {
		return t.LinkLoss
	}
	t.LinkLoss = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss{}
	return t.LinkLoss
}

// GetOrCreateLinkProtectionType retrieves the value of the LinkProtectionType field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateLinkProtectionType() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType {
	if t.LinkProtectionType != nil {
		return t.LinkProtectionType
	}
	t.LinkProtectionType = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType{}
	return t.LinkProtectionType
}

// GetOrCreateMaxLinkBandwidth retrieves the value of the MaxLinkBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateMaxLinkBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth {
	if t.MaxLinkBandwidth != nil {
		return t.MaxLinkBandwidth
	}
	t.MaxLinkBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth{}
	return t.MaxLinkBandwidth
}

// GetOrCreateMaxReservableLinkBandwidth retrieves the value of the MaxReservableLinkBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateMaxReservableLinkBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth {
	if t.MaxReservableLinkBandwidth != nil {
		return t.MaxReservableLinkBandwidth
	}
	t.MaxReservableLinkBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth{}
	return t.MaxReservableLinkBandwidth
}

// GetOrCreateMinMaxLinkDelay retrieves the value of the MinMaxLinkDelay field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateMinMaxLinkDelay() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay {
	if t.MinMaxLinkDelay != nil {
		return t.MinMaxLinkDelay
	}
	t.MinMaxLinkDelay = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay{}
	return t.MinMaxLinkDelay
}

// GetOrCreateResidualBandwidth retrieves the value of the ResidualBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateResidualBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth {
	if t.ResidualBandwidth != nil {
		return t.ResidualBandwidth
	}
	t.ResidualBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth{}
	return t.ResidualBandwidth
}

// GetOrCreateTeDefaultMetric retrieves the value of the TeDefaultMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateTeDefaultMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric {
	if t.TeDefaultMetric != nil {
		return t.TeDefaultMetric
	}
	t.TeDefaultMetric = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric{}
	return t.TeDefaultMetric
}

// GetOrCreateUnconstrainedLsp retrieves the value of the UnconstrainedLsp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateUnconstrainedLsp() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp {
	if t.UnconstrainedLsp != nil {
		return t.UnconstrainedLsp
	}
	t.UnconstrainedLsp = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp{}
	return t.UnconstrainedLsp
}

// GetOrCreateUtilizedBandwidth retrieves the value of the UtilizedBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateUtilizedBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth {
	if t.UtilizedBandwidth != nil {
		return t.UtilizedBandwidth
	}
	t.UtilizedBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth{}
	return t.UtilizedBandwidth
}

// GetAdminGroup returns the value of the AdminGroup struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field AdminGroup is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetAdminGroup() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup {
	if t != nil && t.AdminGroup != nil {
		return t.AdminGroup
	}
	return nil
}

// GetAvailableBandwidth returns the value of the AvailableBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field AvailableBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetAvailableBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth {
	if t != nil && t.AvailableBandwidth != nil {
		return t.AvailableBandwidth
	}
	return nil
}

// GetExtendedAdminGroup returns the value of the ExtendedAdminGroup struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field ExtendedAdminGroup is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetExtendedAdminGroup() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup {
	if t != nil && t.ExtendedAdminGroup != nil {
		return t.ExtendedAdminGroup
	}
	return nil
}

// GetIpv4InterfaceAddress returns the value of the Ipv4InterfaceAddress struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field Ipv4InterfaceAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetIpv4InterfaceAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress {
	if t != nil && t.Ipv4InterfaceAddress != nil {
		return t.Ipv4InterfaceAddress
	}
	return nil
}

// GetIpv4NeighborAddress returns the value of the Ipv4NeighborAddress struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field Ipv4NeighborAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetIpv4NeighborAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress {
	if t != nil && t.Ipv4NeighborAddress != nil {
		return t.Ipv4NeighborAddress
	}
	return nil
}

// GetIpv6InterfaceAddress returns the value of the Ipv6InterfaceAddress struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field Ipv6InterfaceAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetIpv6InterfaceAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress {
	if t != nil && t.Ipv6InterfaceAddress != nil {
		return t.Ipv6InterfaceAddress
	}
	return nil
}

// GetIpv6NeighborAddress returns the value of the Ipv6NeighborAddress struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field Ipv6NeighborAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetIpv6NeighborAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress {
	if t != nil && t.Ipv6NeighborAddress != nil {
		return t.Ipv6NeighborAddress
	}
	return nil
}

// GetLinkAttributes returns the value of the LinkAttributes struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field LinkAttributes is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetLinkAttributes() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes {
	if t != nil && t.LinkAttributes != nil {
		return t.LinkAttributes
	}
	return nil
}

// GetLinkDelay returns the value of the LinkDelay struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field LinkDelay is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetLinkDelay() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay {
	if t != nil && t.LinkDelay != nil {
		return t.LinkDelay
	}
	return nil
}

// GetLinkDelayVariation returns the value of the LinkDelayVariation struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field LinkDelayVariation is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetLinkDelayVariation() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation {
	if t != nil && t.LinkDelayVariation != nil {
		return t.LinkDelayVariation
	}
	return nil
}

// GetLinkId returns the value of the LinkId struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field LinkId is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetLinkId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId {
	if t != nil && t.LinkId != nil {
		return t.LinkId
	}
	return nil
}

// GetLinkLoss returns the value of the LinkLoss struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field LinkLoss is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetLinkLoss() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss {
	if t != nil && t.LinkLoss != nil {
		return t.LinkLoss
	}
	return nil
}

// GetLinkProtectionType returns the value of the LinkProtectionType struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field LinkProtectionType is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetLinkProtectionType() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType {
	if t != nil && t.LinkProtectionType != nil {
		return t.LinkProtectionType
	}
	return nil
}

// GetMaxLinkBandwidth returns the value of the MaxLinkBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field MaxLinkBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetMaxLinkBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth {
	if t != nil && t.MaxLinkBandwidth != nil {
		return t.MaxLinkBandwidth
	}
	return nil
}

// GetMaxReservableLinkBandwidth returns the value of the MaxReservableLinkBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field MaxReservableLinkBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetMaxReservableLinkBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth {
	if t != nil && t.MaxReservableLinkBandwidth != nil {
		return t.MaxReservableLinkBandwidth
	}
	return nil
}

// GetMinMaxLinkDelay returns the value of the MinMaxLinkDelay struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field MinMaxLinkDelay is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetMinMaxLinkDelay() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay {
	if t != nil && t.MinMaxLinkDelay != nil {
		return t.MinMaxLinkDelay
	}
	return nil
}

// GetResidualBandwidth returns the value of the ResidualBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field ResidualBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetResidualBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth {
	if t != nil && t.ResidualBandwidth != nil {
		return t.ResidualBandwidth
	}
	return nil
}

// GetTeDefaultMetric returns the value of the TeDefaultMetric struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field TeDefaultMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetTeDefaultMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric {
	if t != nil && t.TeDefaultMetric != nil {
		return t.TeDefaultMetric
	}
	return nil
}

// GetUnconstrainedLsp returns the value of the UnconstrainedLsp struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field UnconstrainedLsp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetUnconstrainedLsp() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp {
	if t != nil && t.UnconstrainedLsp != nil {
		return t.UnconstrainedLsp
	}
	return nil
}

// GetUtilizedBandwidth returns the value of the UtilizedBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field UtilizedBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetUtilizedBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth {
	if t != nil && t.UtilizedBandwidth != nil {
		return t.UtilizedBandwidth
	}
	return nil
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AdminGroup.PopulateDefaults()
	t.AvailableBandwidth.PopulateDefaults()
	t.ExtendedAdminGroup.PopulateDefaults()
	t.Ipv4InterfaceAddress.PopulateDefaults()
	t.Ipv4NeighborAddress.PopulateDefaults()
	t.Ipv6InterfaceAddress.PopulateDefaults()
	t.Ipv6NeighborAddress.PopulateDefaults()
	t.LinkAttributes.PopulateDefaults()
	t.LinkDelay.PopulateDefaults()
	t.LinkDelayVariation.PopulateDefaults()
	t.LinkId.PopulateDefaults()
	t.LinkLoss.PopulateDefaults()
	t.LinkProtectionType.PopulateDefaults()
	t.MaxLinkBandwidth.PopulateDefaults()
	t.MaxReservableLinkBandwidth.PopulateDefaults()
	t.MinMaxLinkDelay.PopulateDefaults()
	t.ResidualBandwidth.PopulateDefaults()
	t.TeDefaultMetric.PopulateDefaults()
	t.UnconstrainedLsp.PopulateDefaults()
	t.UtilizedBandwidth.PopulateDefaults()
	for _, e := range t.AdjacencySid {
		e.PopulateDefaults()
	}
	for _, e := range t.BandwidthConstraint {
		e.PopulateDefaults()
	}
	for _, e := range t.LanAdjacencySid {
		e.PopulateDefaults()
	}
	for _, e := range t.SetupPriority {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"type": t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/adjacency-sids/adjacency-sid YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid struct {
	ΛMetadata []ygot.Annotation      `path:"@" ygotAnnotation:"true"`
	Flags     []E_AdjacencySid_Flags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation      `path:"state/@flags" ygotAnnotation:"true"`
	Value     *uint32                `path:"state/value|value" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛValue    []ygot.Annotation      `path:"state/@value|@value" ygotAnnotation:"true"`
	Weight    *uint8                 `path:"state/weight" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWeight   []ygot.Annotation      `path:"state/@weight" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) GetFlags() []E_AdjacencySid_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) GetValue() uint32 {
	if t == nil || t.Value == nil {
		return 0
	}
	return *t.Value
}

// GetWeight retrieves the value of the leaf Weight from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Weight is set, it can
// safely use t.GetWeight() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Weight == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) GetWeight() uint8 {
	if t == nil || t.Weight == nil {
		return 0
	}
	return *t.Weight
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Value == nil {
		return nil, fmt.Errorf("nil value for key Value")
	}

	return map[string]interface{}{
		"value": *t.Value,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/admin-group YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AdminGroup  []uint32          `path:"state/admin-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdminGroup []ygot.Annotation `path:"state/@admin-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup) IsYANGGoStruct() {
}

// GetAdminGroup retrieves the value of the leaf AdminGroup from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdminGroup is set, it can
// safely use t.GetAdminGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdminGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup) GetAdminGroup() []uint32 {
	if t == nil || t.AdminGroup == nil {
		return nil
	}
	return t.AdminGroup
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/available-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth struct {
	ΛMetadata  []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary                           `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation                `path:"state/@bandwidth" ygotAnnotation:"true"`
	Type       E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType      []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/bandwidth-constraints/bandwidth-constraint YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint struct {
	ΛMetadata   []ygot.Annotation                                                                                                                     `path:"@" ygotAnnotation:"true"`
	Constraint  map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint `path:"constraints/constraint" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛConstraint []ygot.Annotation                                                                                                                     `path:"constraints/@constraint" ygotAnnotation:"true"`
	ModelId     *uint8                                                                                                                                `path:"state/model-id|model-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛModelId    []ygot.Annotation                                                                                                                     `path:"state/@model-id|@model-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) IsYANGGoStruct() {
}

// NewConstraint creates a new entry in the Constraint list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) NewConstraint(ConstraintId uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Constraint == nil {
		t.Constraint = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint)
	}

	key := ConstraintId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Constraint[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Constraint", key)
	}

	t.Constraint[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint{
		ConstraintId: &ConstraintId,
	}

	return t.Constraint[key], nil
}

// RenameConstraint renames an entry in the list Constraint within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) RenameConstraint(oldK, newK uint32) error {
	if _, ok := t.Constraint[newK]; ok {
		return fmt.Errorf("key %v already exists in Constraint", newK)
	}

	e, ok := t.Constraint[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Constraint", oldK)
	}
	e.ConstraintId = &newK

	t.Constraint[newK] = e
	delete(t.Constraint, oldK)
	return nil
}

// GetOrCreateConstraintMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) GetOrCreateConstraintMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint {
	if t.Constraint == nil {
		t.Constraint = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint)
	}
	return t.Constraint
}

// GetOrCreateConstraint retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) GetOrCreateConstraint(ConstraintId uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint {

	key := ConstraintId

	if v, ok := t.Constraint[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewConstraint(ConstraintId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateConstraint got unexpected error: %v", err))
	}
	return v
}

// GetConstraint retrieves the value with the specified key from
// the Constraint map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) GetConstraint(ConstraintId uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint {

	if t == nil {
		return nil
	}

	key := ConstraintId

	if lm, ok := t.Constraint[key]; ok {
		return lm
	}
	return nil
}

// AppendConstraint appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint struct to the
// list Constraint of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) AppendConstraint(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) error {
	if v.ConstraintId == nil {
		return fmt.Errorf("invalid nil key received for ConstraintId")
	}

	key := *v.ConstraintId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Constraint == nil {
		t.Constraint = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint)
	}

	if _, ok := t.Constraint[key]; ok {
		return fmt.Errorf("duplicate key for list Constraint %v", key)
	}

	t.Constraint[key] = v
	return nil
}

// GetModelId retrieves the value of the leaf ModelId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ModelId is set, it can
// safely use t.GetModelId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ModelId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) GetModelId() uint8 {
	if t == nil || t.ModelId == nil {
		return 0
	}
	return *t.ModelId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Constraint {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) ΛListKeyMap() (map[string]interface{}, error) {
	if t.ModelId == nil {
		return nil, fmt.Errorf("nil value for key ModelId")
	}

	return map[string]interface{}{
		"model-id": *t.ModelId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/bandwidth-constraints/bandwidth-constraint/constraints/constraint YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth     Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth    []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
	ConstraintId  *uint32           `path:"state/constraint-id|constraint-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛConstraintId []ygot.Annotation `path:"state/@constraint-id|@constraint-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// GetConstraintId retrieves the value of the leaf ConstraintId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ConstraintId is set, it can
// safely use t.GetConstraintId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ConstraintId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) GetConstraintId() uint32 {
	if t == nil || t.ConstraintId == nil {
		return 0
	}
	return *t.ConstraintId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) ΛListKeyMap() (map[string]interface{}, error) {
	if t.ConstraintId == nil {
		return nil, fmt.Errorf("nil value for key ConstraintId")
	}

	return map[string]interface{}{
		"constraint-id": *t.ConstraintId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/extended-admin-group YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ExtendedAdminGroup  []uint32          `path:"state/extended-admin-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtendedAdminGroup []ygot.Annotation `path:"state/@extended-admin-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup) IsYANGGoStruct() {
}

// GetExtendedAdminGroup retrieves the value of the leaf ExtendedAdminGroup from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtendedAdminGroup is set, it can
// safely use t.GetExtendedAdminGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtendedAdminGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup) GetExtendedAdminGroup() []uint32 {
	if t == nil || t.ExtendedAdminGroup == nil {
		return nil
	}
	return t.ExtendedAdminGroup
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/ipv4-interface-address YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/ipv4-neighbor-address YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/ipv6-interface-address YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/ipv6-neighbor-address YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/lan-adjacency-sids/lan-adjacency-sid YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid struct {
	ΛMetadata   []ygot.Annotation         `path:"@" ygotAnnotation:"true"`
	Flags       []E_LanAdjacencySid_Flags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags      []ygot.Annotation         `path:"state/@flags" ygotAnnotation:"true"`
	NeighborId  *string                   `path:"state/neighbor-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighborId []ygot.Annotation         `path:"state/@neighbor-id" ygotAnnotation:"true"`
	Value       *uint32                   `path:"state/value|value" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛValue      []ygot.Annotation         `path:"state/@value|@value" ygotAnnotation:"true"`
	Weight      *uint8                    `path:"state/weight" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWeight     []ygot.Annotation         `path:"state/@weight" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) GetFlags() []E_LanAdjacencySid_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetNeighborId retrieves the value of the leaf NeighborId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborId is set, it can
// safely use t.GetNeighborId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) GetNeighborId() string {
	if t == nil || t.NeighborId == nil {
		return ""
	}
	return *t.NeighborId
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) GetValue() uint32 {
	if t == nil || t.Value == nil {
		return 0
	}
	return *t.Value
}

// GetWeight retrieves the value of the leaf Weight from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Weight is set, it can
// safely use t.GetWeight() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Weight == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) GetWeight() uint8 {
	if t == nil || t.Weight == nil {
		return 0
	}
	return *t.Weight
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Value == nil {
		return nil, fmt.Errorf("nil value for key Value")
	}

	return map[string]interface{}{
		"value": *t.Value,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-attributes YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes struct {
	ΛMetadata        []ygot.Annotation                  `path:"@" ygotAnnotation:"true"`
	LocalProtection  []E_LinkAttributes_LocalProtection `path:"state/local-protection" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalProtection []ygot.Annotation                  `path:"state/@local-protection" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes) IsYANGGoStruct() {
}

// GetLocalProtection retrieves the value of the leaf LocalProtection from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalProtection is set, it can
// safely use t.GetLocalProtection() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalProtection == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes) GetLocalProtection() []E_LinkAttributes_LocalProtection {
	if t == nil || t.LocalProtection == nil {
		return nil
	}
	return t.LocalProtection
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-delay YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ABit      *bool             `path:"state/a-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛABit     []ygot.Annotation `path:"state/@a-bit" ygotAnnotation:"true"`
	Delay     *uint32           `path:"state/delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDelay    []ygot.Annotation `path:"state/@delay" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay) IsYANGGoStruct() {
}

// GetABit retrieves the value of the leaf ABit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ABit is set, it can
// safely use t.GetABit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ABit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay) GetABit() bool {
	if t == nil || t.ABit == nil {
		return false
	}
	return *t.ABit
}

// GetDelay retrieves the value of the leaf Delay from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Delay is set, it can
// safely use t.GetDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Delay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay) GetDelay() uint32 {
	if t == nil || t.Delay == nil {
		return 0
	}
	return *t.Delay
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-delay-variation YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Delay     *uint32           `path:"state/delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDelay    []ygot.Annotation `path:"state/@delay" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation) IsYANGGoStruct() {
}

// GetDelay retrieves the value of the leaf Delay from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Delay is set, it can
// safely use t.GetDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Delay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation) GetDelay() uint32 {
	if t == nil || t.Delay == nil {
		return 0
	}
	return *t.Delay
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-id YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Local     *uint32           `path:"state/local" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocal    []ygot.Annotation `path:"state/@local" ygotAnnotation:"true"`
	Remote    *uint32           `path:"state/remote" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRemote   []ygot.Annotation `path:"state/@remote" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId) IsYANGGoStruct() {
}

// GetLocal retrieves the value of the leaf Local from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Local is set, it can
// safely use t.GetLocal() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Local == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId) GetLocal() uint32 {
	if t == nil || t.Local == nil {
		return 0
	}
	return *t.Local
}

// GetRemote retrieves the value of the leaf Remote from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Remote is set, it can
// safely use t.GetRemote() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Remote == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId) GetRemote() uint32 {
	if t == nil || t.Remote == nil {
		return 0
	}
	return *t.Remote
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-loss YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ABit      *bool             `path:"state/a-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛABit     []ygot.Annotation `path:"state/@a-bit" ygotAnnotation:"true"`
	LinkLoss  *uint32           `path:"state/link-loss" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLinkLoss []ygot.Annotation `path:"state/@link-loss" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss) IsYANGGoStruct() {
}

// GetABit retrieves the value of the leaf ABit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ABit is set, it can
// safely use t.GetABit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ABit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss) GetABit() bool {
	if t == nil || t.ABit == nil {
		return false
	}
	return *t.ABit
}

// GetLinkLoss retrieves the value of the leaf LinkLoss from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkLoss is set, it can
// safely use t.GetLinkLoss() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkLoss == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss) GetLinkLoss() uint32 {
	if t == nil || t.LinkLoss == nil {
		return 0
	}
	return *t.LinkLoss
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-protection-type YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType struct {
	ΛMetadata []ygot.Annotation           `path:"@" ygotAnnotation:"true"`
	Type      []E_LinkProtectionType_Type `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation           `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType) IsYANGGoStruct() {
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType) GetType() []E_LinkProtectionType_Type {
	if t == nil || t.Type == nil {
		return nil
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/max-link-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/max-reservable-link-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/min-max-link-delay YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ABit      *bool             `path:"state/a-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛABit     []ygot.Annotation `path:"state/@a-bit" ygotAnnotation:"true"`
	MaxDelay  *uint32           `path:"state/max-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxDelay []ygot.Annotation `path:"state/@max-delay" ygotAnnotation:"true"`
	MinDelay  *uint32           `path:"state/min-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMinDelay []ygot.Annotation `path:"state/@min-delay" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) IsYANGGoStruct() {
}

// GetABit retrieves the value of the leaf ABit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ABit is set, it can
// safely use t.GetABit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ABit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) GetABit() bool {
	if t == nil || t.ABit == nil {
		return false
	}
	return *t.ABit
}

// GetMaxDelay retrieves the value of the leaf MaxDelay from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxDelay is set, it can
// safely use t.GetMaxDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) GetMaxDelay() uint32 {
	if t == nil || t.MaxDelay == nil {
		return 0
	}
	return *t.MaxDelay
}

// GetMinDelay retrieves the value of the leaf MinDelay from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinDelay is set, it can
// safely use t.GetMinDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) GetMinDelay() uint32 {
	if t == nil || t.MinDelay == nil {
		return 0
	}
	return *t.MinDelay
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/residual-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/unreserved-bandwidth/setup-priority YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
	Priority   *uint8            `path:"state/priority|priority" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPriority  []ygot.Annotation `path:"state/@priority|@priority" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// GetPriority retrieves the value of the leaf Priority from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) GetPriority() uint8 {
	if t == nil || t.Priority == nil {
		return 0
	}
	return *t.Priority
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Priority == nil {
		return nil, fmt.Errorf("nil value for key Priority")
	}

	return map[string]interface{}{
		"priority": *t.Priority,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/te-default-metric YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Metric    *uint32           `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation `path:"state/@metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric) IsYANGGoStruct() {
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/unconstrained-lsp YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp struct {
	ΛMetadata []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Count     *uint16                          `path:"state/count" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCount    []ygot.Annotation                `path:"state/@count" ygotAnnotation:"true"`
	Type      E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp) IsYANGGoStruct() {
}

// GetCount retrieves the value of the leaf Count from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Count is set, it can
// safely use t.GetCount() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Count == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp) GetCount() uint16 {
	if t == nil || t.Count == nil {
		return 0
	}
	return *t.Count
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/utilized-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth struct {
	ΛMetadata  []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary                           `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation                `path:"state/@bandwidth" ygotAnnotation:"true"`
	Type       E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType      []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/undefined-subtlvs/undefined-subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint8            `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint8            `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type|@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) IsYANGGoStruct() {
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) GetLength() uint8 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) GetType() uint8 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Type == nil {
		return nil, fmt.Errorf("nil value for key Type")
	}

	return map[string]interface{}{
		"type": *t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_IsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/lsp-buffer-size YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Size      *uint16           `path:"state/size" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSize     []ygot.Annotation `path:"state/@size" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize) IsYANGGoStruct() {}

// GetSize retrieves the value of the leaf Size from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Size is set, it can
// safely use t.GetSize() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Size == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize) GetSize() uint16 {
	if t == nil || t.Size == nil {
		return 0
	}
	return *t.Size
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_LspBufferSize) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv4-reachability YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability struct {
	ΛMetadata []ygot.Annotation                                                                                                                                    `path:"@" ygotAnnotation:"true"`
	Prefix    map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix `path:"prefixes/prefix" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefix   []ygot.Annotation                                                                                                                                    `path:"prefixes/@prefix" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Key represents the key for list Prefix of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv4-reachability.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Key struct {
	MtId   uint16 `path:"mt-id"`
	Prefix string `path:"prefix"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Key key struct.
func (t NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"mt-id":  t.MtId,
		"prefix": t.Prefix,
	}, nil
}

// NewPrefix creates a new entry in the Prefix list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability) NewPrefix(MtId uint16, Prefix string) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix)
	}

	key := NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Key{
		MtId:   MtId,
		Prefix: Prefix,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Prefix[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Prefix", key)
	}

	t.Prefix[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix{
		MtId:   &MtId,
		Prefix: &Prefix,
	}

	return t.Prefix[key], nil
}

// RenamePrefix renames an entry in the list Prefix within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability) RenamePrefix(oldK, newK NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Key) error {
	if _, ok := t.Prefix[newK]; ok {
		return fmt.Errorf("key %v already exists in Prefix", newK)
	}

	e, ok := t.Prefix[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Prefix", oldK)
	}
	e.MtId = &newK.MtId
	e.Prefix = &newK.Prefix

	t.Prefix[newK] = e
	delete(t.Prefix, oldK)
	return nil
}

// GetOrCreatePrefixMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability) GetOrCreatePrefixMap() map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix {
	if t.Prefix == nil {
		t.Prefix = make(map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix)
	}
	return t.Prefix
}

// GetOrCreatePrefix retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability) GetOrCreatePrefix(MtId uint16, Prefix string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix {

	key := NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Key{
		MtId:   MtId,
		Prefix: Prefix,
	}

	if v, ok := t.Prefix[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPrefix(MtId, Prefix)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePrefix got unexpected error: %v", err))
	}
	return v
}

// GetPrefix retrieves the value with the specified key from
// the Prefix map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability) GetPrefix(MtId uint16, Prefix string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Key{
		MtId:   MtId,
		Prefix: Prefix,
	}

	if lm, ok := t.Prefix[key]; ok {
		return lm
	}
	return nil
}

// AppendPrefix appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix struct to the
// list Prefix of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability) AppendPrefix(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) error {
	if v.MtId == nil {
		return fmt.Errorf("invalid nil key for MtId")
	}

	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key for Prefix")
	}

	key := NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Key{
		MtId:   *v.MtId,
		Prefix: *v.Prefix,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix)
	}

	if _, ok := t.Prefix[key]; ok {
		return fmt.Errorf("duplicate key for list Prefix %v", key)
	}

	t.Prefix[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Prefix {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv4-reachability/prefixes/prefix YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix struct {
	ΛMetadata        []ygot.Annotation                                                                                                  `path:"@" ygotAnnotation:"true"`
	Metric           *uint32                                                                                                            `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric          []ygot.Annotation                                                                                                  `path:"state/@metric" ygotAnnotation:"true"`
	MtId             *uint16                                                                                                            `path:"state/mt-id|mt-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛMtId            []ygot.Annotation                                                                                                  `path:"state/@mt-id|@mt-id" ygotAnnotation:"true"`
	Prefix           *string                                                                                                            `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix          []ygot.Annotation                                                                                                  `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
	SBit             *bool                                                                                                              `path:"state/s-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSBit            []ygot.Annotation                                                                                                  `path:"state/@s-bit" ygotAnnotation:"true"`
	Subtlv           map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv `path:"subtlvs/subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubtlv          []ygot.Annotation                                                                                                  `path:"subtlvs/@subtlv" ygotAnnotation:"true"`
	UndefinedSubtlv  map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv                   `path:"undefined-subtlvs/undefined-subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUndefinedSubtlv []ygot.Annotation                                                                                                  `path:"undefined-subtlvs/@undefined-subtlv" ygotAnnotation:"true"`
	UpDown           *bool                                                                                                              `path:"state/up-down" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUpDown          []ygot.Annotation                                                                                                  `path:"state/@up-down" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) IsYANGGoStruct() {}

// NewSubtlv creates a new entry in the Subtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) NewSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Subtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Subtlv", key)
	}

	t.Subtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv{
		Type: Type,
	}

	return t.Subtlv[key], nil
}

// RenameSubtlv renames an entry in the list Subtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) RenameSubtlv(oldK, newK E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) error {
	if _, ok := t.Subtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in Subtlv", newK)
	}

	e, ok := t.Subtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Subtlv", oldK)
	}
	e.Type = newK

	t.Subtlv[newK] = e
	delete(t.Subtlv, oldK)
	return nil
}

// GetOrCreateSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) GetOrCreateSubtlvMap() map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv {
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv)
	}
	return t.Subtlv
}

// GetOrCreateSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) GetOrCreateSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv {

	key := Type

	if v, ok := t.Subtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetSubtlv retrieves the value with the specified key from
// the Subtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) GetSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.Subtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv struct to the
// list Subtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) AppendSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) error {
	key := v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv)
	}

	if _, ok := t.Subtlv[key]; ok {
		return fmt.Errorf("duplicate key for list Subtlv %v", key)
	}

	t.Subtlv[key] = v
	return nil
}

// NewUndefinedSubtlv creates a new entry in the UndefinedSubtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) NewUndefinedSubtlv(Type uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UndefinedSubtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UndefinedSubtlv", key)
	}

	t.UndefinedSubtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv{
		Type: &Type,
	}

	return t.UndefinedSubtlv[key], nil
}

// RenameUndefinedSubtlv renames an entry in the list UndefinedSubtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) RenameUndefinedSubtlv(oldK, newK uint8) error {
	if _, ok := t.UndefinedSubtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in UndefinedSubtlv", newK)
	}

	e, ok := t.UndefinedSubtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UndefinedSubtlv", oldK)
	}
	e.Type = &newK

	t.UndefinedSubtlv[newK] = e
	delete(t.UndefinedSubtlv, oldK)
	return nil
}

// GetOrCreateUndefinedSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) GetOrCreateUndefinedSubtlvMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv {
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv)
	}
	return t.UndefinedSubtlv
}

// GetOrCreateUndefinedSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) GetOrCreateUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv {

	key := Type

	if v, ok := t.UndefinedSubtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUndefinedSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUndefinedSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetUndefinedSubtlv retrieves the value with the specified key from
// the UndefinedSubtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) GetUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.UndefinedSubtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendUndefinedSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv struct to the
// list UndefinedSubtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) AppendUndefinedSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv) error {
	if v.Type == nil {
		return fmt.Errorf("invalid nil key received for Type")
	}

	key := *v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv)
	}

	if _, ok := t.UndefinedSubtlv[key]; ok {
		return fmt.Errorf("duplicate key for list UndefinedSubtlv %v", key)
	}

	t.UndefinedSubtlv[key] = v
	return nil
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetMtId retrieves the value of the leaf MtId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MtId is set, it can
// safely use t.GetMtId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MtId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) GetMtId() uint16 {
	if t == nil || t.MtId == nil {
		return 0
	}
	return *t.MtId
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetSBit retrieves the value of the leaf SBit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SBit is set, it can
// safely use t.GetSBit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SBit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) GetSBit() bool {
	if t == nil || t.SBit == nil {
		return false
	}
	return *t.SBit
}

// GetUpDown retrieves the value of the leaf UpDown from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UpDown is set, it can
// safely use t.GetUpDown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UpDown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) GetUpDown() bool {
	if t == nil || t.UpDown == nil {
		return false
	}
	return *t.UpDown
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Subtlv {
		e.PopulateDefaults()
	}
	for _, e := range t.UndefinedSubtlv {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) ΛListKeyMap() (map[string]interface{}, error) {
	if t.MtId == nil {
		return nil, fmt.Errorf("nil value for key MtId")
	}

	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"mt-id":  *t.MtId,
		"prefix": *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv4-reachability/prefixes/prefix/subtlvs/subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv struct {
	ΛMetadata           []ygot.Annotation                                                                                  `path:"@" ygotAnnotation:"true"`
	Flags               *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags                `path:"flags" module:"openconfig-network-instance"`
	ΛFlags              []ygot.Annotation                                                                                  `path:"@flags" ygotAnnotation:"true"`
	Ipv4SourceRouterId  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId   `path:"ipv4-source-router-id" module:"openconfig-network-instance"`
	ΛIpv4SourceRouterId []ygot.Annotation                                                                                  `path:"@ipv4-source-router-id" ygotAnnotation:"true"`
	Ipv6SourceRouterId  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId   `path:"ipv6-source-router-id" module:"openconfig-network-instance"`
	ΛIpv6SourceRouterId []ygot.Annotation                                                                                  `path:"@ipv6-source-router-id" ygotAnnotation:"true"`
	PrefixSid           map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid `path:"prefix-sids/prefix-sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixSid          []ygot.Annotation                                                                                  `path:"prefix-sids/@prefix-sid" ygotAnnotation:"true"`
	Tag                 *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag                  `path:"tag" module:"openconfig-network-instance"`
	ΛTag                []ygot.Annotation                                                                                  `path:"@tag" ygotAnnotation:"true"`
	Tag64               *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64                `path:"tag64" module:"openconfig-network-instance"`
	ΛTag64              []ygot.Annotation                                                                                  `path:"@tag64" ygotAnnotation:"true"`
	Type                E_IsisLsdbTypes_ISIS_SUBTLV_TYPE                                                                   `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType               []ygot.Annotation                                                                                  `path:"state/@type|@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) IsYANGGoStruct() {
}

// NewPrefixSid creates a new entry in the PrefixSid list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) NewPrefixSid(Value uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PrefixSid == nil {
		t.PrefixSid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid)
	}

	key := Value

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.PrefixSid[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list PrefixSid", key)
	}

	t.PrefixSid[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid{
		Value: &Value,
	}

	return t.PrefixSid[key], nil
}

// RenamePrefixSid renames an entry in the list PrefixSid within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) RenamePrefixSid(oldK, newK uint32) error {
	if _, ok := t.PrefixSid[newK]; ok {
		return fmt.Errorf("key %v already exists in PrefixSid", newK)
	}

	e, ok := t.PrefixSid[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in PrefixSid", oldK)
	}
	e.Value = &newK

	t.PrefixSid[newK] = e
	delete(t.PrefixSid, oldK)
	return nil
}

// GetOrCreatePrefixSidMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) GetOrCreatePrefixSidMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid {
	if t.PrefixSid == nil {
		t.PrefixSid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid)
	}
	return t.PrefixSid
}

// GetOrCreatePrefixSid retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) GetOrCreatePrefixSid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid {

	key := Value

	if v, ok := t.PrefixSid[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPrefixSid(Value)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePrefixSid got unexpected error: %v", err))
	}
	return v
}

// GetPrefixSid retrieves the value with the specified key from
// the PrefixSid map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) GetPrefixSid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid {

	if t == nil {
		return nil
	}

	key := Value

	if lm, ok := t.PrefixSid[key]; ok {
		return lm
	}
	return nil
}

// AppendPrefixSid appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid struct to the
// list PrefixSid of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) AppendPrefixSid(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid) error {
	if v.Value == nil {
		return fmt.Errorf("invalid nil key received for Value")
	}

	key := *v.Value

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PrefixSid == nil {
		t.PrefixSid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid)
	}

	if _, ok := t.PrefixSid[key]; ok {
		return fmt.Errorf("duplicate key for list PrefixSid %v", key)
	}

	t.PrefixSid[key] = v
	return nil
}

// GetOrCreateFlags retrieves the value of the Flags field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) GetOrCreateFlags() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags {
	if t.Flags != nil {
		return t.Flags
	}
	t.Flags = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags{}
	return t.Flags
}

// GetOrCreateIpv4SourceRouterId retrieves the value of the Ipv4SourceRouterId field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) GetOrCreateIpv4SourceRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId {
	if t.Ipv4SourceRouterId != nil {
		return t.Ipv4SourceRouterId
	}
	t.Ipv4SourceRouterId = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId{}
	return t.Ipv4SourceRouterId
}

// GetOrCreateIpv6SourceRouterId retrieves the value of the Ipv6SourceRouterId field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) GetOrCreateIpv6SourceRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId {
	if t.Ipv6SourceRouterId != nil {
		return t.Ipv6SourceRouterId
	}
	t.Ipv6SourceRouterId = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId{}
	return t.Ipv6SourceRouterId
}

// GetOrCreateTag retrieves the value of the Tag field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) GetOrCreateTag() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag {
	if t.Tag != nil {
		return t.Tag
	}
	t.Tag = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag{}
	return t.Tag
}

// GetOrCreateTag64 retrieves the value of the Tag64 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) GetOrCreateTag64() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64 {
	if t.Tag64 != nil {
		return t.Tag64
	}
	t.Tag64 = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64{}
	return t.Tag64
}

// GetFlags returns the value of the Flags struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv. If the receiver or the field Flags is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) GetFlags() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags {
	if t != nil && t.Flags != nil {
		return t.Flags
	}
	return nil
}

// GetIpv4SourceRouterId returns the value of the Ipv4SourceRouterId struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv. If the receiver or the field Ipv4SourceRouterId is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) GetIpv4SourceRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId {
	if t != nil && t.Ipv4SourceRouterId != nil {
		return t.Ipv4SourceRouterId
	}
	return nil
}

// GetIpv6SourceRouterId returns the value of the Ipv6SourceRouterId struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv. If the receiver or the field Ipv6SourceRouterId is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) GetIpv6SourceRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId {
	if t != nil && t.Ipv6SourceRouterId != nil {
		return t.Ipv6SourceRouterId
	}
	return nil
}

// GetTag returns the value of the Tag struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv. If the receiver or the field Tag is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) GetTag() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag {
	if t != nil && t.Tag != nil {
		return t.Tag
	}
	return nil
}

// GetTag64 returns the value of the Tag64 struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv. If the receiver or the field Tag64 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) GetTag64() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64 {
	if t != nil && t.Tag64 != nil {
		return t.Tag64
	}
	return nil
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Flags.PopulateDefaults()
	t.Ipv4SourceRouterId.PopulateDefaults()
	t.Ipv6SourceRouterId.PopulateDefaults()
	t.Tag.PopulateDefaults()
	t.Tag64.PopulateDefaults()
	for _, e := range t.PrefixSid {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"type": t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/flags YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags struct {
	ΛMetadata []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Flags     []E_Flags_Flags                  `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation                `path:"state/@flags" ygotAnnotation:"true"`
	Type      E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags) GetFlags() []E_Flags_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Flags) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/ipv4-source-router-id YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId struct {
	ΛMetadata []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	RouterId  *string                          `path:"state/router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouterId []ygot.Annotation                `path:"state/@router-id" ygotAnnotation:"true"`
	Type      E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId) IsYANGGoStruct() {
}

// GetRouterId retrieves the value of the leaf RouterId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterId is set, it can
// safely use t.GetRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId) GetRouterId() string {
	if t == nil || t.RouterId == nil {
		return ""
	}
	return *t.RouterId
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv4SourceRouterId) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/ipv6-source-router-id YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId struct {
	ΛMetadata []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	RouterId  *string                          `path:"state/router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouterId []ygot.Annotation                `path:"state/@router-id" ygotAnnotation:"true"`
	Type      E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId) IsYANGGoStruct() {
}

// GetRouterId retrieves the value of the leaf RouterId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterId is set, it can
// safely use t.GetRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId) GetRouterId() string {
	if t == nil || t.RouterId == nil {
		return ""
	}
	return *t.RouterId
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Ipv6SourceRouterId) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/prefix-sids/prefix-sid YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid struct {
	ΛMetadata  []ygot.Annotation   `path:"@" ygotAnnotation:"true"`
	Algorithm  *uint8              `path:"state/algorithm" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAlgorithm []ygot.Annotation   `path:"state/@algorithm" ygotAnnotation:"true"`
	Flags      []E_PrefixSid_Flags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags     []ygot.Annotation   `path:"state/@flags" ygotAnnotation:"true"`
	Value      *uint32             `path:"state/value|value" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛValue     []ygot.Annotation   `path:"state/@value|@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid) IsYANGGoStruct() {
}

// GetAlgorithm retrieves the value of the leaf Algorithm from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Algorithm is set, it can
// safely use t.GetAlgorithm() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Algorithm == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid) GetAlgorithm() uint8 {
	if t == nil || t.Algorithm == nil {
		return 0
	}
	return *t.Algorithm
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid) GetFlags() []E_PrefixSid_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid) GetValue() uint32 {
	if t == nil || t.Value == nil {
		return 0
	}
	return *t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Value == nil {
		return nil, fmt.Errorf("nil value for key Value")
	}

	return map[string]interface{}{
		"value": *t.Value,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_PrefixSid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/tag YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Tag32     []uint32          `path:"state/tag32" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTag32    []ygot.Annotation `path:"state/@tag32" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag) IsYANGGoStruct() {
}

// GetTag32 retrieves the value of the leaf Tag32 from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tag32 is set, it can
// safely use t.GetTag32() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tag32 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag) GetTag32() []uint32 {
	if t == nil || t.Tag32 == nil {
		return nil
	}
	return t.Tag32
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64 represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/tag64 YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64 struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Tag64     []uint64          `path:"state/tag64" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTag64    []ygot.Annotation `path:"state/@tag64" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64) IsYANGGoStruct() {
}

// GetTag64 retrieves the value of the leaf Tag64 from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tag64 is set, it can
// safely use t.GetTag64() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tag64 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64) GetTag64() []uint64 {
	if t == nil || t.Tag64 == nil {
		return nil
	}
	return t.Tag64
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_Subtlv_Tag64) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv4-reachability/prefixes/prefix/undefined-subtlvs/undefined-subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint8            `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint8            `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type|@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv) IsYANGGoStruct() {
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv) GetLength() uint8 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv) GetType() uint8 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Type == nil {
		return nil, fmt.Errorf("nil value for key Type")
	}

	return map[string]interface{}{
		"type": *t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv4Reachability_Prefix_UndefinedSubtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv6-reachability YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability struct {
	ΛMetadata []ygot.Annotation                                                                                                                                    `path:"@" ygotAnnotation:"true"`
	Prefix    map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix `path:"prefixes/prefix" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefix   []ygot.Annotation                                                                                                                                    `path:"prefixes/@prefix" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Key represents the key for list Prefix of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv6-reachability.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Key struct {
	Prefix string `path:"prefix"`
	MtId   uint16 `path:"mt-id"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Key key struct.
func (t NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"prefix": t.Prefix,
		"mt-id":  t.MtId,
	}, nil
}

// NewPrefix creates a new entry in the Prefix list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability) NewPrefix(Prefix string, MtId uint16) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix)
	}

	key := NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Key{
		Prefix: Prefix,
		MtId:   MtId,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Prefix[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Prefix", key)
	}

	t.Prefix[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix{
		Prefix: &Prefix,
		MtId:   &MtId,
	}

	return t.Prefix[key], nil
}

// RenamePrefix renames an entry in the list Prefix within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability) RenamePrefix(oldK, newK NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Key) error {
	if _, ok := t.Prefix[newK]; ok {
		return fmt.Errorf("key %v already exists in Prefix", newK)
	}

	e, ok := t.Prefix[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Prefix", oldK)
	}
	e.Prefix = &newK.Prefix
	e.MtId = &newK.MtId

	t.Prefix[newK] = e
	delete(t.Prefix, oldK)
	return nil
}

// GetOrCreatePrefixMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability) GetOrCreatePrefixMap() map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix {
	if t.Prefix == nil {
		t.Prefix = make(map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix)
	}
	return t.Prefix
}

// GetOrCreatePrefix retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability) GetOrCreatePrefix(Prefix string, MtId uint16) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix {

	key := NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Key{
		Prefix: Prefix,
		MtId:   MtId,
	}

	if v, ok := t.Prefix[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPrefix(Prefix, MtId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePrefix got unexpected error: %v", err))
	}
	return v
}

// GetPrefix retrieves the value with the specified key from
// the Prefix map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability) GetPrefix(Prefix string, MtId uint16) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Key{
		Prefix: Prefix,
		MtId:   MtId,
	}

	if lm, ok := t.Prefix[key]; ok {
		return lm
	}
	return nil
}

// AppendPrefix appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix struct to the
// list Prefix of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability) AppendPrefix(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) error {
	if v.Prefix == nil {
		return fmt.Errorf("invalid nil key for Prefix")
	}

	if v.MtId == nil {
		return fmt.Errorf("invalid nil key for MtId")
	}

	key := NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Key{
		Prefix: *v.Prefix,
		MtId:   *v.MtId,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix)
	}

	if _, ok := t.Prefix[key]; ok {
		return fmt.Errorf("duplicate key for list Prefix %v", key)
	}

	t.Prefix[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Prefix {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv6-reachability/prefixes/prefix YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix struct {
	ΛMetadata        []ygot.Annotation                                                                                                  `path:"@" ygotAnnotation:"true"`
	Metric           *uint32                                                                                                            `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric          []ygot.Annotation                                                                                                  `path:"state/@metric" ygotAnnotation:"true"`
	MtId             *uint16                                                                                                            `path:"state/mt-id|mt-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛMtId            []ygot.Annotation                                                                                                  `path:"state/@mt-id|@mt-id" ygotAnnotation:"true"`
	Prefix           *string                                                                                                            `path:"state/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix          []ygot.Annotation                                                                                                  `path:"state/@prefix|@prefix" ygotAnnotation:"true"`
	SBit             *bool                                                                                                              `path:"state/s-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSBit            []ygot.Annotation                                                                                                  `path:"state/@s-bit" ygotAnnotation:"true"`
	Subtlv           map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv `path:"subtlvs/subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubtlv          []ygot.Annotation                                                                                                  `path:"subtlvs/@subtlv" ygotAnnotation:"true"`
	UndefinedSubtlv  map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv                   `path:"undefined-subtlvs/undefined-subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUndefinedSubtlv []ygot.Annotation                                                                                                  `path:"undefined-subtlvs/@undefined-subtlv" ygotAnnotation:"true"`
	UpDown           *bool                                                                                                              `path:"state/up-down" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUpDown          []ygot.Annotation                                                                                                  `path:"state/@up-down" ygotAnnotation:"true"`
	XBit             *bool                                                                                                              `path:"state/x-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛXBit            []ygot.Annotation                                                                                                  `path:"state/@x-bit" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) IsYANGGoStruct() {}

// NewSubtlv creates a new entry in the Subtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) NewSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Subtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Subtlv", key)
	}

	t.Subtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv{
		Type: Type,
	}

	return t.Subtlv[key], nil
}

// RenameSubtlv renames an entry in the list Subtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) RenameSubtlv(oldK, newK E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) error {
	if _, ok := t.Subtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in Subtlv", newK)
	}

	e, ok := t.Subtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Subtlv", oldK)
	}
	e.Type = newK

	t.Subtlv[newK] = e
	delete(t.Subtlv, oldK)
	return nil
}

// GetOrCreateSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) GetOrCreateSubtlvMap() map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv {
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv)
	}
	return t.Subtlv
}

// GetOrCreateSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) GetOrCreateSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv {

	key := Type

	if v, ok := t.Subtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetSubtlv retrieves the value with the specified key from
// the Subtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) GetSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.Subtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv struct to the
// list Subtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) AppendSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) error {
	key := v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv)
	}

	if _, ok := t.Subtlv[key]; ok {
		return fmt.Errorf("duplicate key for list Subtlv %v", key)
	}

	t.Subtlv[key] = v
	return nil
}

// NewUndefinedSubtlv creates a new entry in the UndefinedSubtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) NewUndefinedSubtlv(Type uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UndefinedSubtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UndefinedSubtlv", key)
	}

	t.UndefinedSubtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv{
		Type: &Type,
	}

	return t.UndefinedSubtlv[key], nil
}

// RenameUndefinedSubtlv renames an entry in the list UndefinedSubtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) RenameUndefinedSubtlv(oldK, newK uint8) error {
	if _, ok := t.UndefinedSubtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in UndefinedSubtlv", newK)
	}

	e, ok := t.UndefinedSubtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UndefinedSubtlv", oldK)
	}
	e.Type = &newK

	t.UndefinedSubtlv[newK] = e
	delete(t.UndefinedSubtlv, oldK)
	return nil
}

// GetOrCreateUndefinedSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) GetOrCreateUndefinedSubtlvMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv {
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv)
	}
	return t.UndefinedSubtlv
}

// GetOrCreateUndefinedSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) GetOrCreateUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv {

	key := Type

	if v, ok := t.UndefinedSubtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUndefinedSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUndefinedSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetUndefinedSubtlv retrieves the value with the specified key from
// the UndefinedSubtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) GetUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.UndefinedSubtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendUndefinedSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv struct to the
// list UndefinedSubtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) AppendUndefinedSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv) error {
	if v.Type == nil {
		return fmt.Errorf("invalid nil key received for Type")
	}

	key := *v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv)
	}

	if _, ok := t.UndefinedSubtlv[key]; ok {
		return fmt.Errorf("duplicate key for list UndefinedSubtlv %v", key)
	}

	t.UndefinedSubtlv[key] = v
	return nil
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetMtId retrieves the value of the leaf MtId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MtId is set, it can
// safely use t.GetMtId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MtId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) GetMtId() uint16 {
	if t == nil || t.MtId == nil {
		return 0
	}
	return *t.MtId
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetSBit retrieves the value of the leaf SBit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SBit is set, it can
// safely use t.GetSBit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SBit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) GetSBit() bool {
	if t == nil || t.SBit == nil {
		return false
	}
	return *t.SBit
}

// GetUpDown retrieves the value of the leaf UpDown from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UpDown is set, it can
// safely use t.GetUpDown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UpDown == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) GetUpDown() bool {
	if t == nil || t.UpDown == nil {
		return false
	}
	return *t.UpDown
}

// GetXBit retrieves the value of the leaf XBit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if XBit is set, it can
// safely use t.GetXBit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.XBit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) GetXBit() bool {
	if t == nil || t.XBit == nil {
		return false
	}
	return *t.XBit
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Subtlv {
		e.PopulateDefaults()
	}
	for _, e := range t.UndefinedSubtlv {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) ΛListKeyMap() (map[string]interface{}, error) {
	if t.MtId == nil {
		return nil, fmt.Errorf("nil value for key MtId")
	}

	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"mt-id":  *t.MtId,
		"prefix": *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv6-reachability/prefixes/prefix/subtlvs/subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv struct {
	ΛMetadata           []ygot.Annotation                                                                                  `path:"@" ygotAnnotation:"true"`
	Flags               *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags                `path:"flags" module:"openconfig-network-instance"`
	ΛFlags              []ygot.Annotation                                                                                  `path:"@flags" ygotAnnotation:"true"`
	Ipv4SourceRouterId  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId   `path:"ipv4-source-router-id" module:"openconfig-network-instance"`
	ΛIpv4SourceRouterId []ygot.Annotation                                                                                  `path:"@ipv4-source-router-id" ygotAnnotation:"true"`
	Ipv6SourceRouterId  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId   `path:"ipv6-source-router-id" module:"openconfig-network-instance"`
	ΛIpv6SourceRouterId []ygot.Annotation                                                                                  `path:"@ipv6-source-router-id" ygotAnnotation:"true"`
	PrefixSid           map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid `path:"prefix-sids/prefix-sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixSid          []ygot.Annotation                                                                                  `path:"prefix-sids/@prefix-sid" ygotAnnotation:"true"`
	Tag                 *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag                  `path:"tag" module:"openconfig-network-instance"`
	ΛTag                []ygot.Annotation                                                                                  `path:"@tag" ygotAnnotation:"true"`
	Tag64               *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64                `path:"tag64" module:"openconfig-network-instance"`
	ΛTag64              []ygot.Annotation                                                                                  `path:"@tag64" ygotAnnotation:"true"`
	Type                E_IsisLsdbTypes_ISIS_SUBTLV_TYPE                                                                   `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType               []ygot.Annotation                                                                                  `path:"state/@type|@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) IsYANGGoStruct() {
}

// NewPrefixSid creates a new entry in the PrefixSid list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) NewPrefixSid(Value uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PrefixSid == nil {
		t.PrefixSid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid)
	}

	key := Value

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.PrefixSid[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list PrefixSid", key)
	}

	t.PrefixSid[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid{
		Value: &Value,
	}

	return t.PrefixSid[key], nil
}

// RenamePrefixSid renames an entry in the list PrefixSid within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) RenamePrefixSid(oldK, newK uint32) error {
	if _, ok := t.PrefixSid[newK]; ok {
		return fmt.Errorf("key %v already exists in PrefixSid", newK)
	}

	e, ok := t.PrefixSid[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in PrefixSid", oldK)
	}
	e.Value = &newK

	t.PrefixSid[newK] = e
	delete(t.PrefixSid, oldK)
	return nil
}

// GetOrCreatePrefixSidMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) GetOrCreatePrefixSidMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid {
	if t.PrefixSid == nil {
		t.PrefixSid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid)
	}
	return t.PrefixSid
}

// GetOrCreatePrefixSid retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) GetOrCreatePrefixSid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid {

	key := Value

	if v, ok := t.PrefixSid[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPrefixSid(Value)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePrefixSid got unexpected error: %v", err))
	}
	return v
}

// GetPrefixSid retrieves the value with the specified key from
// the PrefixSid map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) GetPrefixSid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid {

	if t == nil {
		return nil
	}

	key := Value

	if lm, ok := t.PrefixSid[key]; ok {
		return lm
	}
	return nil
}

// AppendPrefixSid appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid struct to the
// list PrefixSid of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) AppendPrefixSid(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid) error {
	if v.Value == nil {
		return fmt.Errorf("invalid nil key received for Value")
	}

	key := *v.Value

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PrefixSid == nil {
		t.PrefixSid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid)
	}

	if _, ok := t.PrefixSid[key]; ok {
		return fmt.Errorf("duplicate key for list PrefixSid %v", key)
	}

	t.PrefixSid[key] = v
	return nil
}

// GetOrCreateFlags retrieves the value of the Flags field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) GetOrCreateFlags() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags {
	if t.Flags != nil {
		return t.Flags
	}
	t.Flags = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags{}
	return t.Flags
}

// GetOrCreateIpv4SourceRouterId retrieves the value of the Ipv4SourceRouterId field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) GetOrCreateIpv4SourceRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId {
	if t.Ipv4SourceRouterId != nil {
		return t.Ipv4SourceRouterId
	}
	t.Ipv4SourceRouterId = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId{}
	return t.Ipv4SourceRouterId
}

// GetOrCreateIpv6SourceRouterId retrieves the value of the Ipv6SourceRouterId field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) GetOrCreateIpv6SourceRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId {
	if t.Ipv6SourceRouterId != nil {
		return t.Ipv6SourceRouterId
	}
	t.Ipv6SourceRouterId = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId{}
	return t.Ipv6SourceRouterId
}

// GetOrCreateTag retrieves the value of the Tag field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) GetOrCreateTag() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag {
	if t.Tag != nil {
		return t.Tag
	}
	t.Tag = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag{}
	return t.Tag
}

// GetOrCreateTag64 retrieves the value of the Tag64 field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) GetOrCreateTag64() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64 {
	if t.Tag64 != nil {
		return t.Tag64
	}
	t.Tag64 = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64{}
	return t.Tag64
}

// GetFlags returns the value of the Flags struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv. If the receiver or the field Flags is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) GetFlags() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags {
	if t != nil && t.Flags != nil {
		return t.Flags
	}
	return nil
}

// GetIpv4SourceRouterId returns the value of the Ipv4SourceRouterId struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv. If the receiver or the field Ipv4SourceRouterId is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) GetIpv4SourceRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId {
	if t != nil && t.Ipv4SourceRouterId != nil {
		return t.Ipv4SourceRouterId
	}
	return nil
}

// GetIpv6SourceRouterId returns the value of the Ipv6SourceRouterId struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv. If the receiver or the field Ipv6SourceRouterId is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) GetIpv6SourceRouterId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId {
	if t != nil && t.Ipv6SourceRouterId != nil {
		return t.Ipv6SourceRouterId
	}
	return nil
}

// GetTag returns the value of the Tag struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv. If the receiver or the field Tag is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) GetTag() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag {
	if t != nil && t.Tag != nil {
		return t.Tag
	}
	return nil
}

// GetTag64 returns the value of the Tag64 struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv. If the receiver or the field Tag64 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) GetTag64() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64 {
	if t != nil && t.Tag64 != nil {
		return t.Tag64
	}
	return nil
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Flags.PopulateDefaults()
	t.Ipv4SourceRouterId.PopulateDefaults()
	t.Ipv6SourceRouterId.PopulateDefaults()
	t.Tag.PopulateDefaults()
	t.Tag64.PopulateDefaults()
	for _, e := range t.PrefixSid {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"type": t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv6-reachability/prefixes/prefix/subtlvs/subtlv/flags YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags struct {
	ΛMetadata []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Flags     []E_Flags_Flags                  `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation                `path:"state/@flags" ygotAnnotation:"true"`
	Type      E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags) GetFlags() []E_Flags_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Flags) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv6-reachability/prefixes/prefix/subtlvs/subtlv/ipv4-source-router-id YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId struct {
	ΛMetadata []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	RouterId  *string                          `path:"state/router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouterId []ygot.Annotation                `path:"state/@router-id" ygotAnnotation:"true"`
	Type      E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId) IsYANGGoStruct() {
}

// GetRouterId retrieves the value of the leaf RouterId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterId is set, it can
// safely use t.GetRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId) GetRouterId() string {
	if t == nil || t.RouterId == nil {
		return ""
	}
	return *t.RouterId
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv4SourceRouterId) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv6-reachability/prefixes/prefix/subtlvs/subtlv/ipv6-source-router-id YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId struct {
	ΛMetadata []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	RouterId  *string                          `path:"state/router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouterId []ygot.Annotation                `path:"state/@router-id" ygotAnnotation:"true"`
	Type      E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId) IsYANGGoStruct() {
}

// GetRouterId retrieves the value of the leaf RouterId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterId is set, it can
// safely use t.GetRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId) GetRouterId() string {
	if t == nil || t.RouterId == nil {
		return ""
	}
	return *t.RouterId
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Ipv6SourceRouterId) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv6-reachability/prefixes/prefix/subtlvs/subtlv/prefix-sids/prefix-sid YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid struct {
	ΛMetadata  []ygot.Annotation   `path:"@" ygotAnnotation:"true"`
	Algorithm  *uint8              `path:"state/algorithm" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAlgorithm []ygot.Annotation   `path:"state/@algorithm" ygotAnnotation:"true"`
	Flags      []E_PrefixSid_Flags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags     []ygot.Annotation   `path:"state/@flags" ygotAnnotation:"true"`
	Value      *uint32             `path:"state/value|value" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛValue     []ygot.Annotation   `path:"state/@value|@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid) IsYANGGoStruct() {
}

// GetAlgorithm retrieves the value of the leaf Algorithm from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Algorithm is set, it can
// safely use t.GetAlgorithm() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Algorithm == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid) GetAlgorithm() uint8 {
	if t == nil || t.Algorithm == nil {
		return 0
	}
	return *t.Algorithm
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid) GetFlags() []E_PrefixSid_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid) GetValue() uint32 {
	if t == nil || t.Value == nil {
		return 0
	}
	return *t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Value == nil {
		return nil, fmt.Errorf("nil value for key Value")
	}

	return map[string]interface{}{
		"value": *t.Value,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_PrefixSid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv6-reachability/prefixes/prefix/subtlvs/subtlv/tag YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Tag32     []uint32          `path:"state/tag32" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTag32    []ygot.Annotation `path:"state/@tag32" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag) IsYANGGoStruct() {
}

// GetTag32 retrieves the value of the leaf Tag32 from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tag32 is set, it can
// safely use t.GetTag32() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tag32 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag) GetTag32() []uint32 {
	if t == nil || t.Tag32 == nil {
		return nil
	}
	return t.Tag32
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64 represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv6-reachability/prefixes/prefix/subtlvs/subtlv/tag64 YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64 struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Tag64     []uint64          `path:"state/tag64" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTag64    []ygot.Annotation `path:"state/@tag64" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64) IsYANGGoStruct() {
}

// GetTag64 retrieves the value of the leaf Tag64 from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tag64 is set, it can
// safely use t.GetTag64() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tag64 == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64) GetTag64() []uint64 {
	if t == nil || t.Tag64 == nil {
		return nil
	}
	return t.Tag64
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_Subtlv_Tag64) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv6-reachability/prefixes/prefix/undefined-subtlvs/undefined-subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint8            `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint8            `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type|@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv) IsYANGGoStruct() {
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv) GetLength() uint8 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv) GetType() uint8 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Type == nil {
		return nil, fmt.Errorf("nil value for key Type")
	}

	return map[string]interface{}{
		"type": *t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIpv6Reachability_Prefix_UndefinedSubtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute struct {
	ΛMetadata []ygot.Annotation                                                                                                                                                  `path:"@" ygotAnnotation:"true"`
	Neighbor  map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor `path:"neighbors/neighbor" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighbor []ygot.Annotation                                                                                                                                                  `path:"neighbors/@neighbor" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Key represents the key for list Neighbor of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Key struct {
	MtId     uint16 `path:"mt-id"`
	SystemId string `path:"system-id"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Key) IsYANGGoKeyStruct() {
}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Key key struct.
func (t NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"mt-id":     t.MtId,
		"system-id": t.SystemId,
	}, nil
}

// NewNeighbor creates a new entry in the Neighbor list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute) NewNeighbor(MtId uint16, SystemId string) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor)
	}

	key := NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Key{
		MtId:     MtId,
		SystemId: SystemId,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor{
		MtId:     &MtId,
		SystemId: &SystemId,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute) RenameNeighbor(oldK, newK NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Key) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.MtId = &newK.MtId
	e.SystemId = &newK.SystemId

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute) GetOrCreateNeighborMap() map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute) GetOrCreateNeighbor(MtId uint16, SystemId string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor {

	key := NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Key{
		MtId:     MtId,
		SystemId: SystemId,
	}

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(MtId, SystemId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute) GetNeighbor(MtId uint16, SystemId string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Key{
		MtId:     MtId,
		SystemId: SystemId,
	}

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor struct to the
// list Neighbor of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute) AppendNeighbor(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor) error {
	if v.MtId == nil {
		return fmt.Errorf("invalid nil key for MtId")
	}

	if v.SystemId == nil {
		return fmt.Errorf("invalid nil key for SystemId")
	}

	key := NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Key{
		MtId:     *v.MtId,
		SystemId: *v.SystemId,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor struct {
	ΛMetadata []ygot.Annotation                                                                                 `path:"@" ygotAnnotation:"true"`
	Instance  map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance `path:"instances/instance" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInstance []ygot.Annotation                                                                                 `path:"instances/@instance" ygotAnnotation:"true"`
	MtId      *uint16                                                                                           `path:"state/mt-id|mt-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛMtId     []ygot.Annotation                                                                                 `path:"state/@mt-id|@mt-id" ygotAnnotation:"true"`
	SystemId  *string                                                                                           `path:"state/system-id|system-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSystemId []ygot.Annotation                                                                                 `path:"state/@system-id|@system-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor) IsYANGGoStruct() {
}

// NewInstance creates a new entry in the Instance list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor) NewInstance(Id uint64) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Instance == nil {
		t.Instance = make(map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Instance[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Instance", key)
	}

	t.Instance[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance{
		Id: &Id,
	}

	return t.Instance[key], nil
}

// RenameInstance renames an entry in the list Instance within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor) RenameInstance(oldK, newK uint64) error {
	if _, ok := t.Instance[newK]; ok {
		return fmt.Errorf("key %v already exists in Instance", newK)
	}

	e, ok := t.Instance[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Instance", oldK)
	}
	e.Id = &newK

	t.Instance[newK] = e
	delete(t.Instance, oldK)
	return nil
}

// GetOrCreateInstanceMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor) GetOrCreateInstanceMap() map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance {
	if t.Instance == nil {
		t.Instance = make(map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance)
	}
	return t.Instance
}

// GetOrCreateInstance retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor) GetOrCreateInstance(Id uint64) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance {

	key := Id

	if v, ok := t.Instance[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInstance(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInstance got unexpected error: %v", err))
	}
	return v
}

// GetInstance retrieves the value with the specified key from
// the Instance map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor) GetInstance(Id uint64) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.Instance[key]; ok {
		return lm
	}
	return nil
}

// AppendInstance appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance struct to the
// list Instance of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor) AppendInstance(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Instance == nil {
		t.Instance = make(map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance)
	}

	if _, ok := t.Instance[key]; ok {
		return fmt.Errorf("duplicate key for list Instance %v", key)
	}

	t.Instance[key] = v
	return nil
}

// GetMtId retrieves the value of the leaf MtId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MtId is set, it can
// safely use t.GetMtId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MtId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor) GetMtId() uint16 {
	if t == nil || t.MtId == nil {
		return 0
	}
	return *t.MtId
}

// GetSystemId retrieves the value of the leaf SystemId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemId is set, it can
// safely use t.GetSystemId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor) GetSystemId() string {
	if t == nil || t.SystemId == nil {
		return ""
	}
	return *t.SystemId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Instance {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.MtId == nil {
		return nil, fmt.Errorf("nil value for key MtId")
	}

	if t.SystemId == nil {
		return nil, fmt.Errorf("nil value for key SystemId")
	}

	return map[string]interface{}{
		"mt-id":     *t.MtId,
		"system-id": *t.SystemId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance struct {
	ΛMetadata        []ygot.Annotation                                                                                                                  `path:"@" ygotAnnotation:"true"`
	Id               *uint64                                                                                                                            `path:"state/id|id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛId              []ygot.Annotation                                                                                                                  `path:"state/@id|@id" ygotAnnotation:"true"`
	Metric           *uint32                                                                                                                            `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric          []ygot.Annotation                                                                                                                  `path:"state/@metric" ygotAnnotation:"true"`
	Subtlv           map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv `path:"subtlvs/subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubtlv          []ygot.Annotation                                                                                                                  `path:"subtlvs/@subtlv" ygotAnnotation:"true"`
	UndefinedSubtlv  map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv                   `path:"undefined-subtlvs/undefined-subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUndefinedSubtlv []ygot.Annotation                                                                                                                  `path:"undefined-subtlvs/@undefined-subtlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) IsYANGGoStruct() {
}

// NewSubtlv creates a new entry in the Subtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) NewSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Subtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Subtlv", key)
	}

	t.Subtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv{
		Type: Type,
	}

	return t.Subtlv[key], nil
}

// RenameSubtlv renames an entry in the list Subtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) RenameSubtlv(oldK, newK E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) error {
	if _, ok := t.Subtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in Subtlv", newK)
	}

	e, ok := t.Subtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Subtlv", oldK)
	}
	e.Type = newK

	t.Subtlv[newK] = e
	delete(t.Subtlv, oldK)
	return nil
}

// GetOrCreateSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) GetOrCreateSubtlvMap() map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv {
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv)
	}
	return t.Subtlv
}

// GetOrCreateSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) GetOrCreateSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv {

	key := Type

	if v, ok := t.Subtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetSubtlv retrieves the value with the specified key from
// the Subtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) GetSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.Subtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv struct to the
// list Subtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) AppendSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) error {
	key := v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv)
	}

	if _, ok := t.Subtlv[key]; ok {
		return fmt.Errorf("duplicate key for list Subtlv %v", key)
	}

	t.Subtlv[key] = v
	return nil
}

// NewUndefinedSubtlv creates a new entry in the UndefinedSubtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) NewUndefinedSubtlv(Type uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UndefinedSubtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UndefinedSubtlv", key)
	}

	t.UndefinedSubtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv{
		Type: &Type,
	}

	return t.UndefinedSubtlv[key], nil
}

// RenameUndefinedSubtlv renames an entry in the list UndefinedSubtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) RenameUndefinedSubtlv(oldK, newK uint8) error {
	if _, ok := t.UndefinedSubtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in UndefinedSubtlv", newK)
	}

	e, ok := t.UndefinedSubtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UndefinedSubtlv", oldK)
	}
	e.Type = &newK

	t.UndefinedSubtlv[newK] = e
	delete(t.UndefinedSubtlv, oldK)
	return nil
}

// GetOrCreateUndefinedSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) GetOrCreateUndefinedSubtlvMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv {
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv)
	}
	return t.UndefinedSubtlv
}

// GetOrCreateUndefinedSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) GetOrCreateUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv {

	key := Type

	if v, ok := t.UndefinedSubtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUndefinedSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUndefinedSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetUndefinedSubtlv retrieves the value with the specified key from
// the UndefinedSubtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) GetUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.UndefinedSubtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendUndefinedSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv struct to the
// list UndefinedSubtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) AppendUndefinedSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) error {
	if v.Type == nil {
		return fmt.Errorf("invalid nil key received for Type")
	}

	key := *v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv)
	}

	if _, ok := t.UndefinedSubtlv[key]; ok {
		return fmt.Errorf("duplicate key for list UndefinedSubtlv %v", key)
	}

	t.UndefinedSubtlv[key] = v
	return nil
}

// GetId retrieves the value of the leaf Id from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) GetId() uint64 {
	if t == nil || t.Id == nil {
		return 0
	}
	return *t.Id
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Subtlv {
		e.PopulateDefaults()
	}
	for _, e := range t.UndefinedSubtlv {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv struct {
	ΛMetadata                   []ygot.Annotation                                                                                                           `path:"@" ygotAnnotation:"true"`
	AdjacencySid                map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid       `path:"adjacency-sids/adjacency-sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdjacencySid               []ygot.Annotation                                                                                                           `path:"adjacency-sids/@adjacency-sid" ygotAnnotation:"true"`
	AdminGroup                  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup                    `path:"admin-group" module:"openconfig-network-instance"`
	ΛAdminGroup                 []ygot.Annotation                                                                                                           `path:"@admin-group" ygotAnnotation:"true"`
	AvailableBandwidth          *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth            `path:"available-bandwidth" module:"openconfig-network-instance"`
	ΛAvailableBandwidth         []ygot.Annotation                                                                                                           `path:"@available-bandwidth" ygotAnnotation:"true"`
	BandwidthConstraint         map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint `path:"bandwidth-constraints/bandwidth-constraint" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidthConstraint        []ygot.Annotation                                                                                                           `path:"bandwidth-constraints/@bandwidth-constraint" ygotAnnotation:"true"`
	ExtendedAdminGroup          *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup            `path:"extended-admin-group" module:"openconfig-network-instance"`
	ΛExtendedAdminGroup         []ygot.Annotation                                                                                                           `path:"@extended-admin-group" ygotAnnotation:"true"`
	Ipv4InterfaceAddress        *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress          `path:"ipv4-interface-address" module:"openconfig-network-instance"`
	ΛIpv4InterfaceAddress       []ygot.Annotation                                                                                                           `path:"@ipv4-interface-address" ygotAnnotation:"true"`
	Ipv4NeighborAddress         *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress           `path:"ipv4-neighbor-address" module:"openconfig-network-instance"`
	ΛIpv4NeighborAddress        []ygot.Annotation                                                                                                           `path:"@ipv4-neighbor-address" ygotAnnotation:"true"`
	Ipv6InterfaceAddress        *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress          `path:"ipv6-interface-address" module:"openconfig-network-instance"`
	ΛIpv6InterfaceAddress       []ygot.Annotation                                                                                                           `path:"@ipv6-interface-address" ygotAnnotation:"true"`
	Ipv6NeighborAddress         *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress           `path:"ipv6-neighbor-address" module:"openconfig-network-instance"`
	ΛIpv6NeighborAddress        []ygot.Annotation                                                                                                           `path:"@ipv6-neighbor-address" ygotAnnotation:"true"`
	LanAdjacencySid             map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid    `path:"lan-adjacency-sids/lan-adjacency-sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLanAdjacencySid            []ygot.Annotation                                                                                                           `path:"lan-adjacency-sids/@lan-adjacency-sid" ygotAnnotation:"true"`
	LinkAttributes              *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes                `path:"link-attributes" module:"openconfig-network-instance"`
	ΛLinkAttributes             []ygot.Annotation                                                                                                           `path:"@link-attributes" ygotAnnotation:"true"`
	LinkDelay                   *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay                     `path:"link-delay" module:"openconfig-network-instance"`
	ΛLinkDelay                  []ygot.Annotation                                                                                                           `path:"@link-delay" ygotAnnotation:"true"`
	LinkDelayVariation          *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation            `path:"link-delay-variation" module:"openconfig-network-instance"`
	ΛLinkDelayVariation         []ygot.Annotation                                                                                                           `path:"@link-delay-variation" ygotAnnotation:"true"`
	LinkId                      *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId                        `path:"link-id" module:"openconfig-network-instance"`
	ΛLinkId                     []ygot.Annotation                                                                                                           `path:"@link-id" ygotAnnotation:"true"`
	LinkLoss                    *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss                      `path:"link-loss" module:"openconfig-network-instance"`
	ΛLinkLoss                   []ygot.Annotation                                                                                                           `path:"@link-loss" ygotAnnotation:"true"`
	LinkProtectionType          *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType            `path:"link-protection-type" module:"openconfig-network-instance"`
	ΛLinkProtectionType         []ygot.Annotation                                                                                                           `path:"@link-protection-type" ygotAnnotation:"true"`
	MaxLinkBandwidth            *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth              `path:"max-link-bandwidth" module:"openconfig-network-instance"`
	ΛMaxLinkBandwidth           []ygot.Annotation                                                                                                           `path:"@max-link-bandwidth" ygotAnnotation:"true"`
	MaxReservableLinkBandwidth  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth    `path:"max-reservable-link-bandwidth" module:"openconfig-network-instance"`
	ΛMaxReservableLinkBandwidth []ygot.Annotation                                                                                                           `path:"@max-reservable-link-bandwidth" ygotAnnotation:"true"`
	MinMaxLinkDelay             *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay               `path:"min-max-link-delay" module:"openconfig-network-instance"`
	ΛMinMaxLinkDelay            []ygot.Annotation                                                                                                           `path:"@min-max-link-delay" ygotAnnotation:"true"`
	ResidualBandwidth           *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth             `path:"residual-bandwidth" module:"openconfig-network-instance"`
	ΛResidualBandwidth          []ygot.Annotation                                                                                                           `path:"@residual-bandwidth" ygotAnnotation:"true"`
	SetupPriority               map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority       `path:"unreserved-bandwidth/setup-priority" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSetupPriority              []ygot.Annotation                                                                                                           `path:"unreserved-bandwidth/@setup-priority" ygotAnnotation:"true"`
	TeDefaultMetric             *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric               `path:"te-default-metric" module:"openconfig-network-instance"`
	ΛTeDefaultMetric            []ygot.Annotation                                                                                                           `path:"@te-default-metric" ygotAnnotation:"true"`
	Type                        E_IsisLsdbTypes_ISIS_SUBTLV_TYPE                                                                                            `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType                       []ygot.Annotation                                                                                                           `path:"state/@type|@type" ygotAnnotation:"true"`
	UnconstrainedLsp            *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp              `path:"unconstrained-lsp" module:"openconfig-network-instance"`
	ΛUnconstrainedLsp           []ygot.Annotation                                                                                                           `path:"@unconstrained-lsp" ygotAnnotation:"true"`
	UtilizedBandwidth           *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth             `path:"utilized-bandwidth" module:"openconfig-network-instance"`
	ΛUtilizedBandwidth          []ygot.Annotation                                                                                                           `path:"@utilized-bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) IsYANGGoStruct() {
}

// NewAdjacencySid creates a new entry in the AdjacencySid list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) NewAdjacencySid(Value uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AdjacencySid == nil {
		t.AdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid)
	}

	key := Value

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AdjacencySid[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AdjacencySid", key)
	}

	t.AdjacencySid[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid{
		Value: &Value,
	}

	return t.AdjacencySid[key], nil
}

// RenameAdjacencySid renames an entry in the list AdjacencySid within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) RenameAdjacencySid(oldK, newK uint32) error {
	if _, ok := t.AdjacencySid[newK]; ok {
		return fmt.Errorf("key %v already exists in AdjacencySid", newK)
	}

	e, ok := t.AdjacencySid[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AdjacencySid", oldK)
	}
	e.Value = &newK

	t.AdjacencySid[newK] = e
	delete(t.AdjacencySid, oldK)
	return nil
}

// GetOrCreateAdjacencySidMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateAdjacencySidMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid {
	if t.AdjacencySid == nil {
		t.AdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid)
	}
	return t.AdjacencySid
}

// GetOrCreateAdjacencySid retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateAdjacencySid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid {

	key := Value

	if v, ok := t.AdjacencySid[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAdjacencySid(Value)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAdjacencySid got unexpected error: %v", err))
	}
	return v
}

// GetAdjacencySid retrieves the value with the specified key from
// the AdjacencySid map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetAdjacencySid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid {

	if t == nil {
		return nil
	}

	key := Value

	if lm, ok := t.AdjacencySid[key]; ok {
		return lm
	}
	return nil
}

// AppendAdjacencySid appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid struct to the
// list AdjacencySid of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) AppendAdjacencySid(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) error {
	if v.Value == nil {
		return fmt.Errorf("invalid nil key received for Value")
	}

	key := *v.Value

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AdjacencySid == nil {
		t.AdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid)
	}

	if _, ok := t.AdjacencySid[key]; ok {
		return fmt.Errorf("duplicate key for list AdjacencySid %v", key)
	}

	t.AdjacencySid[key] = v
	return nil
}

// NewBandwidthConstraint creates a new entry in the BandwidthConstraint list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) NewBandwidthConstraint(ModelId uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.BandwidthConstraint == nil {
		t.BandwidthConstraint = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint)
	}

	key := ModelId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.BandwidthConstraint[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list BandwidthConstraint", key)
	}

	t.BandwidthConstraint[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint{
		ModelId: &ModelId,
	}

	return t.BandwidthConstraint[key], nil
}

// RenameBandwidthConstraint renames an entry in the list BandwidthConstraint within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) RenameBandwidthConstraint(oldK, newK uint8) error {
	if _, ok := t.BandwidthConstraint[newK]; ok {
		return fmt.Errorf("key %v already exists in BandwidthConstraint", newK)
	}

	e, ok := t.BandwidthConstraint[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in BandwidthConstraint", oldK)
	}
	e.ModelId = &newK

	t.BandwidthConstraint[newK] = e
	delete(t.BandwidthConstraint, oldK)
	return nil
}

// GetOrCreateBandwidthConstraintMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateBandwidthConstraintMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint {
	if t.BandwidthConstraint == nil {
		t.BandwidthConstraint = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint)
	}
	return t.BandwidthConstraint
}

// GetOrCreateBandwidthConstraint retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateBandwidthConstraint(ModelId uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint {

	key := ModelId

	if v, ok := t.BandwidthConstraint[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewBandwidthConstraint(ModelId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateBandwidthConstraint got unexpected error: %v", err))
	}
	return v
}

// GetBandwidthConstraint retrieves the value with the specified key from
// the BandwidthConstraint map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetBandwidthConstraint(ModelId uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint {

	if t == nil {
		return nil
	}

	key := ModelId

	if lm, ok := t.BandwidthConstraint[key]; ok {
		return lm
	}
	return nil
}

// AppendBandwidthConstraint appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint struct to the
// list BandwidthConstraint of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) AppendBandwidthConstraint(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) error {
	if v.ModelId == nil {
		return fmt.Errorf("invalid nil key received for ModelId")
	}

	key := *v.ModelId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.BandwidthConstraint == nil {
		t.BandwidthConstraint = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint)
	}

	if _, ok := t.BandwidthConstraint[key]; ok {
		return fmt.Errorf("duplicate key for list BandwidthConstraint %v", key)
	}

	t.BandwidthConstraint[key] = v
	return nil
}

// NewLanAdjacencySid creates a new entry in the LanAdjacencySid list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) NewLanAdjacencySid(Value uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.LanAdjacencySid == nil {
		t.LanAdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid)
	}

	key := Value

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.LanAdjacencySid[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list LanAdjacencySid", key)
	}

	t.LanAdjacencySid[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid{
		Value: &Value,
	}

	return t.LanAdjacencySid[key], nil
}

// RenameLanAdjacencySid renames an entry in the list LanAdjacencySid within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) RenameLanAdjacencySid(oldK, newK uint32) error {
	if _, ok := t.LanAdjacencySid[newK]; ok {
		return fmt.Errorf("key %v already exists in LanAdjacencySid", newK)
	}

	e, ok := t.LanAdjacencySid[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in LanAdjacencySid", oldK)
	}
	e.Value = &newK

	t.LanAdjacencySid[newK] = e
	delete(t.LanAdjacencySid, oldK)
	return nil
}

// GetOrCreateLanAdjacencySidMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateLanAdjacencySidMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid {
	if t.LanAdjacencySid == nil {
		t.LanAdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid)
	}
	return t.LanAdjacencySid
}

// GetOrCreateLanAdjacencySid retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateLanAdjacencySid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid {

	key := Value

	if v, ok := t.LanAdjacencySid[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewLanAdjacencySid(Value)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateLanAdjacencySid got unexpected error: %v", err))
	}
	return v
}

// GetLanAdjacencySid retrieves the value with the specified key from
// the LanAdjacencySid map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetLanAdjacencySid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid {

	if t == nil {
		return nil
	}

	key := Value

	if lm, ok := t.LanAdjacencySid[key]; ok {
		return lm
	}
	return nil
}

// AppendLanAdjacencySid appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid struct to the
// list LanAdjacencySid of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) AppendLanAdjacencySid(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) error {
	if v.Value == nil {
		return fmt.Errorf("invalid nil key received for Value")
	}

	key := *v.Value

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.LanAdjacencySid == nil {
		t.LanAdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid)
	}

	if _, ok := t.LanAdjacencySid[key]; ok {
		return fmt.Errorf("duplicate key for list LanAdjacencySid %v", key)
	}

	t.LanAdjacencySid[key] = v
	return nil
}

// NewSetupPriority creates a new entry in the SetupPriority list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) NewSetupPriority(Priority uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SetupPriority == nil {
		t.SetupPriority = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority)
	}

	key := Priority

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.SetupPriority[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list SetupPriority", key)
	}

	t.SetupPriority[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority{
		Priority: &Priority,
	}

	return t.SetupPriority[key], nil
}

// RenameSetupPriority renames an entry in the list SetupPriority within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) RenameSetupPriority(oldK, newK uint8) error {
	if _, ok := t.SetupPriority[newK]; ok {
		return fmt.Errorf("key %v already exists in SetupPriority", newK)
	}

	e, ok := t.SetupPriority[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in SetupPriority", oldK)
	}
	e.Priority = &newK

	t.SetupPriority[newK] = e
	delete(t.SetupPriority, oldK)
	return nil
}

// GetOrCreateSetupPriorityMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateSetupPriorityMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority {
	if t.SetupPriority == nil {
		t.SetupPriority = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority)
	}
	return t.SetupPriority
}

// GetOrCreateSetupPriority retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateSetupPriority(Priority uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority {

	key := Priority

	if v, ok := t.SetupPriority[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSetupPriority(Priority)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSetupPriority got unexpected error: %v", err))
	}
	return v
}

// GetSetupPriority retrieves the value with the specified key from
// the SetupPriority map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetSetupPriority(Priority uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority {

	if t == nil {
		return nil
	}

	key := Priority

	if lm, ok := t.SetupPriority[key]; ok {
		return lm
	}
	return nil
}

// AppendSetupPriority appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority struct to the
// list SetupPriority of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) AppendSetupPriority(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) error {
	if v.Priority == nil {
		return fmt.Errorf("invalid nil key received for Priority")
	}

	key := *v.Priority

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SetupPriority == nil {
		t.SetupPriority = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority)
	}

	if _, ok := t.SetupPriority[key]; ok {
		return fmt.Errorf("duplicate key for list SetupPriority %v", key)
	}

	t.SetupPriority[key] = v
	return nil
}

// GetOrCreateAdminGroup retrieves the value of the AdminGroup field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateAdminGroup() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup {
	if t.AdminGroup != nil {
		return t.AdminGroup
	}
	t.AdminGroup = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup{}
	return t.AdminGroup
}

// GetOrCreateAvailableBandwidth retrieves the value of the AvailableBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateAvailableBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth {
	if t.AvailableBandwidth != nil {
		return t.AvailableBandwidth
	}
	t.AvailableBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth{}
	return t.AvailableBandwidth
}

// GetOrCreateExtendedAdminGroup retrieves the value of the ExtendedAdminGroup field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateExtendedAdminGroup() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup {
	if t.ExtendedAdminGroup != nil {
		return t.ExtendedAdminGroup
	}
	t.ExtendedAdminGroup = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup{}
	return t.ExtendedAdminGroup
}

// GetOrCreateIpv4InterfaceAddress retrieves the value of the Ipv4InterfaceAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateIpv4InterfaceAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress {
	if t.Ipv4InterfaceAddress != nil {
		return t.Ipv4InterfaceAddress
	}
	t.Ipv4InterfaceAddress = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress{}
	return t.Ipv4InterfaceAddress
}

// GetOrCreateIpv4NeighborAddress retrieves the value of the Ipv4NeighborAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateIpv4NeighborAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress {
	if t.Ipv4NeighborAddress != nil {
		return t.Ipv4NeighborAddress
	}
	t.Ipv4NeighborAddress = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress{}
	return t.Ipv4NeighborAddress
}

// GetOrCreateIpv6InterfaceAddress retrieves the value of the Ipv6InterfaceAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateIpv6InterfaceAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress {
	if t.Ipv6InterfaceAddress != nil {
		return t.Ipv6InterfaceAddress
	}
	t.Ipv6InterfaceAddress = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress{}
	return t.Ipv6InterfaceAddress
}

// GetOrCreateIpv6NeighborAddress retrieves the value of the Ipv6NeighborAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateIpv6NeighborAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress {
	if t.Ipv6NeighborAddress != nil {
		return t.Ipv6NeighborAddress
	}
	t.Ipv6NeighborAddress = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress{}
	return t.Ipv6NeighborAddress
}

// GetOrCreateLinkAttributes retrieves the value of the LinkAttributes field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateLinkAttributes() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes {
	if t.LinkAttributes != nil {
		return t.LinkAttributes
	}
	t.LinkAttributes = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes{}
	return t.LinkAttributes
}

// GetOrCreateLinkDelay retrieves the value of the LinkDelay field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateLinkDelay() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay {
	if t.LinkDelay != nil {
		return t.LinkDelay
	}
	t.LinkDelay = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay{}
	return t.LinkDelay
}

// GetOrCreateLinkDelayVariation retrieves the value of the LinkDelayVariation field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateLinkDelayVariation() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation {
	if t.LinkDelayVariation != nil {
		return t.LinkDelayVariation
	}
	t.LinkDelayVariation = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation{}
	return t.LinkDelayVariation
}

// GetOrCreateLinkId retrieves the value of the LinkId field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateLinkId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId {
	if t.LinkId != nil {
		return t.LinkId
	}
	t.LinkId = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId{}
	return t.LinkId
}

// GetOrCreateLinkLoss retrieves the value of the LinkLoss field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateLinkLoss() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss {
	if t.LinkLoss != nil {
		return t.LinkLoss
	}
	t.LinkLoss = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss{}
	return t.LinkLoss
}

// GetOrCreateLinkProtectionType retrieves the value of the LinkProtectionType field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateLinkProtectionType() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType {
	if t.LinkProtectionType != nil {
		return t.LinkProtectionType
	}
	t.LinkProtectionType = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType{}
	return t.LinkProtectionType
}

// GetOrCreateMaxLinkBandwidth retrieves the value of the MaxLinkBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateMaxLinkBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth {
	if t.MaxLinkBandwidth != nil {
		return t.MaxLinkBandwidth
	}
	t.MaxLinkBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth{}
	return t.MaxLinkBandwidth
}

// GetOrCreateMaxReservableLinkBandwidth retrieves the value of the MaxReservableLinkBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateMaxReservableLinkBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth {
	if t.MaxReservableLinkBandwidth != nil {
		return t.MaxReservableLinkBandwidth
	}
	t.MaxReservableLinkBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth{}
	return t.MaxReservableLinkBandwidth
}

// GetOrCreateMinMaxLinkDelay retrieves the value of the MinMaxLinkDelay field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateMinMaxLinkDelay() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay {
	if t.MinMaxLinkDelay != nil {
		return t.MinMaxLinkDelay
	}
	t.MinMaxLinkDelay = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay{}
	return t.MinMaxLinkDelay
}

// GetOrCreateResidualBandwidth retrieves the value of the ResidualBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateResidualBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth {
	if t.ResidualBandwidth != nil {
		return t.ResidualBandwidth
	}
	t.ResidualBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth{}
	return t.ResidualBandwidth
}

// GetOrCreateTeDefaultMetric retrieves the value of the TeDefaultMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateTeDefaultMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric {
	if t.TeDefaultMetric != nil {
		return t.TeDefaultMetric
	}
	t.TeDefaultMetric = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric{}
	return t.TeDefaultMetric
}

// GetOrCreateUnconstrainedLsp retrieves the value of the UnconstrainedLsp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateUnconstrainedLsp() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp {
	if t.UnconstrainedLsp != nil {
		return t.UnconstrainedLsp
	}
	t.UnconstrainedLsp = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp{}
	return t.UnconstrainedLsp
}

// GetOrCreateUtilizedBandwidth retrieves the value of the UtilizedBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetOrCreateUtilizedBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth {
	if t.UtilizedBandwidth != nil {
		return t.UtilizedBandwidth
	}
	t.UtilizedBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth{}
	return t.UtilizedBandwidth
}

// GetAdminGroup returns the value of the AdminGroup struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field AdminGroup is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetAdminGroup() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup {
	if t != nil && t.AdminGroup != nil {
		return t.AdminGroup
	}
	return nil
}

// GetAvailableBandwidth returns the value of the AvailableBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field AvailableBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetAvailableBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth {
	if t != nil && t.AvailableBandwidth != nil {
		return t.AvailableBandwidth
	}
	return nil
}

// GetExtendedAdminGroup returns the value of the ExtendedAdminGroup struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field ExtendedAdminGroup is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetExtendedAdminGroup() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup {
	if t != nil && t.ExtendedAdminGroup != nil {
		return t.ExtendedAdminGroup
	}
	return nil
}

// GetIpv4InterfaceAddress returns the value of the Ipv4InterfaceAddress struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field Ipv4InterfaceAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetIpv4InterfaceAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress {
	if t != nil && t.Ipv4InterfaceAddress != nil {
		return t.Ipv4InterfaceAddress
	}
	return nil
}

// GetIpv4NeighborAddress returns the value of the Ipv4NeighborAddress struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field Ipv4NeighborAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetIpv4NeighborAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress {
	if t != nil && t.Ipv4NeighborAddress != nil {
		return t.Ipv4NeighborAddress
	}
	return nil
}

// GetIpv6InterfaceAddress returns the value of the Ipv6InterfaceAddress struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field Ipv6InterfaceAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetIpv6InterfaceAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress {
	if t != nil && t.Ipv6InterfaceAddress != nil {
		return t.Ipv6InterfaceAddress
	}
	return nil
}

// GetIpv6NeighborAddress returns the value of the Ipv6NeighborAddress struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field Ipv6NeighborAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetIpv6NeighborAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress {
	if t != nil && t.Ipv6NeighborAddress != nil {
		return t.Ipv6NeighborAddress
	}
	return nil
}

// GetLinkAttributes returns the value of the LinkAttributes struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field LinkAttributes is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetLinkAttributes() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes {
	if t != nil && t.LinkAttributes != nil {
		return t.LinkAttributes
	}
	return nil
}

// GetLinkDelay returns the value of the LinkDelay struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field LinkDelay is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetLinkDelay() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay {
	if t != nil && t.LinkDelay != nil {
		return t.LinkDelay
	}
	return nil
}

// GetLinkDelayVariation returns the value of the LinkDelayVariation struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field LinkDelayVariation is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetLinkDelayVariation() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation {
	if t != nil && t.LinkDelayVariation != nil {
		return t.LinkDelayVariation
	}
	return nil
}

// GetLinkId returns the value of the LinkId struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field LinkId is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetLinkId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId {
	if t != nil && t.LinkId != nil {
		return t.LinkId
	}
	return nil
}

// GetLinkLoss returns the value of the LinkLoss struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field LinkLoss is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetLinkLoss() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss {
	if t != nil && t.LinkLoss != nil {
		return t.LinkLoss
	}
	return nil
}

// GetLinkProtectionType returns the value of the LinkProtectionType struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field LinkProtectionType is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetLinkProtectionType() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType {
	if t != nil && t.LinkProtectionType != nil {
		return t.LinkProtectionType
	}
	return nil
}

// GetMaxLinkBandwidth returns the value of the MaxLinkBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field MaxLinkBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetMaxLinkBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth {
	if t != nil && t.MaxLinkBandwidth != nil {
		return t.MaxLinkBandwidth
	}
	return nil
}

// GetMaxReservableLinkBandwidth returns the value of the MaxReservableLinkBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field MaxReservableLinkBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetMaxReservableLinkBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth {
	if t != nil && t.MaxReservableLinkBandwidth != nil {
		return t.MaxReservableLinkBandwidth
	}
	return nil
}

// GetMinMaxLinkDelay returns the value of the MinMaxLinkDelay struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field MinMaxLinkDelay is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetMinMaxLinkDelay() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay {
	if t != nil && t.MinMaxLinkDelay != nil {
		return t.MinMaxLinkDelay
	}
	return nil
}

// GetResidualBandwidth returns the value of the ResidualBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field ResidualBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetResidualBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth {
	if t != nil && t.ResidualBandwidth != nil {
		return t.ResidualBandwidth
	}
	return nil
}

// GetTeDefaultMetric returns the value of the TeDefaultMetric struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field TeDefaultMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetTeDefaultMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric {
	if t != nil && t.TeDefaultMetric != nil {
		return t.TeDefaultMetric
	}
	return nil
}

// GetUnconstrainedLsp returns the value of the UnconstrainedLsp struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field UnconstrainedLsp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetUnconstrainedLsp() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp {
	if t != nil && t.UnconstrainedLsp != nil {
		return t.UnconstrainedLsp
	}
	return nil
}

// GetUtilizedBandwidth returns the value of the UtilizedBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv. If the receiver or the field UtilizedBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetUtilizedBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth {
	if t != nil && t.UtilizedBandwidth != nil {
		return t.UtilizedBandwidth
	}
	return nil
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AdminGroup.PopulateDefaults()
	t.AvailableBandwidth.PopulateDefaults()
	t.ExtendedAdminGroup.PopulateDefaults()
	t.Ipv4InterfaceAddress.PopulateDefaults()
	t.Ipv4NeighborAddress.PopulateDefaults()
	t.Ipv6InterfaceAddress.PopulateDefaults()
	t.Ipv6NeighborAddress.PopulateDefaults()
	t.LinkAttributes.PopulateDefaults()
	t.LinkDelay.PopulateDefaults()
	t.LinkDelayVariation.PopulateDefaults()
	t.LinkId.PopulateDefaults()
	t.LinkLoss.PopulateDefaults()
	t.LinkProtectionType.PopulateDefaults()
	t.MaxLinkBandwidth.PopulateDefaults()
	t.MaxReservableLinkBandwidth.PopulateDefaults()
	t.MinMaxLinkDelay.PopulateDefaults()
	t.ResidualBandwidth.PopulateDefaults()
	t.TeDefaultMetric.PopulateDefaults()
	t.UnconstrainedLsp.PopulateDefaults()
	t.UtilizedBandwidth.PopulateDefaults()
	for _, e := range t.AdjacencySid {
		e.PopulateDefaults()
	}
	for _, e := range t.BandwidthConstraint {
		e.PopulateDefaults()
	}
	for _, e := range t.LanAdjacencySid {
		e.PopulateDefaults()
	}
	for _, e := range t.SetupPriority {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"type": t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/adjacency-sids/adjacency-sid YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid struct {
	ΛMetadata []ygot.Annotation      `path:"@" ygotAnnotation:"true"`
	Flags     []E_AdjacencySid_Flags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation      `path:"state/@flags" ygotAnnotation:"true"`
	Value     *uint32                `path:"state/value|value" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛValue    []ygot.Annotation      `path:"state/@value|@value" ygotAnnotation:"true"`
	Weight    *uint8                 `path:"state/weight" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWeight   []ygot.Annotation      `path:"state/@weight" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) GetFlags() []E_AdjacencySid_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) GetValue() uint32 {
	if t == nil || t.Value == nil {
		return 0
	}
	return *t.Value
}

// GetWeight retrieves the value of the leaf Weight from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Weight is set, it can
// safely use t.GetWeight() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Weight == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) GetWeight() uint8 {
	if t == nil || t.Weight == nil {
		return 0
	}
	return *t.Weight
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Value == nil {
		return nil, fmt.Errorf("nil value for key Value")
	}

	return map[string]interface{}{
		"value": *t.Value,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdjacencySid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/admin-group YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AdminGroup  []uint32          `path:"state/admin-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdminGroup []ygot.Annotation `path:"state/@admin-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup) IsYANGGoStruct() {
}

// GetAdminGroup retrieves the value of the leaf AdminGroup from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdminGroup is set, it can
// safely use t.GetAdminGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdminGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup) GetAdminGroup() []uint32 {
	if t == nil || t.AdminGroup == nil {
		return nil
	}
	return t.AdminGroup
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AdminGroup) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/available-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth struct {
	ΛMetadata  []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary                           `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation                `path:"state/@bandwidth" ygotAnnotation:"true"`
	Type       E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType      []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_AvailableBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/bandwidth-constraints/bandwidth-constraint YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint struct {
	ΛMetadata   []ygot.Annotation                                                                                                                       `path:"@" ygotAnnotation:"true"`
	Constraint  map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint `path:"constraints/constraint" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛConstraint []ygot.Annotation                                                                                                                       `path:"constraints/@constraint" ygotAnnotation:"true"`
	ModelId     *uint8                                                                                                                                  `path:"state/model-id|model-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛModelId    []ygot.Annotation                                                                                                                       `path:"state/@model-id|@model-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) IsYANGGoStruct() {
}

// NewConstraint creates a new entry in the Constraint list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) NewConstraint(ConstraintId uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Constraint == nil {
		t.Constraint = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint)
	}

	key := ConstraintId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Constraint[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Constraint", key)
	}

	t.Constraint[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint{
		ConstraintId: &ConstraintId,
	}

	return t.Constraint[key], nil
}

// RenameConstraint renames an entry in the list Constraint within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) RenameConstraint(oldK, newK uint32) error {
	if _, ok := t.Constraint[newK]; ok {
		return fmt.Errorf("key %v already exists in Constraint", newK)
	}

	e, ok := t.Constraint[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Constraint", oldK)
	}
	e.ConstraintId = &newK

	t.Constraint[newK] = e
	delete(t.Constraint, oldK)
	return nil
}

// GetOrCreateConstraintMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) GetOrCreateConstraintMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint {
	if t.Constraint == nil {
		t.Constraint = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint)
	}
	return t.Constraint
}

// GetOrCreateConstraint retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) GetOrCreateConstraint(ConstraintId uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint {

	key := ConstraintId

	if v, ok := t.Constraint[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewConstraint(ConstraintId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateConstraint got unexpected error: %v", err))
	}
	return v
}

// GetConstraint retrieves the value with the specified key from
// the Constraint map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) GetConstraint(ConstraintId uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint {

	if t == nil {
		return nil
	}

	key := ConstraintId

	if lm, ok := t.Constraint[key]; ok {
		return lm
	}
	return nil
}

// AppendConstraint appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint struct to the
// list Constraint of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) AppendConstraint(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) error {
	if v.ConstraintId == nil {
		return fmt.Errorf("invalid nil key received for ConstraintId")
	}

	key := *v.ConstraintId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Constraint == nil {
		t.Constraint = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint)
	}

	if _, ok := t.Constraint[key]; ok {
		return fmt.Errorf("duplicate key for list Constraint %v", key)
	}

	t.Constraint[key] = v
	return nil
}

// GetModelId retrieves the value of the leaf ModelId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ModelId is set, it can
// safely use t.GetModelId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ModelId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) GetModelId() uint8 {
	if t == nil || t.ModelId == nil {
		return 0
	}
	return *t.ModelId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Constraint {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) ΛListKeyMap() (map[string]interface{}, error) {
	if t.ModelId == nil {
		return nil, fmt.Errorf("nil value for key ModelId")
	}

	return map[string]interface{}{
		"model-id": *t.ModelId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/bandwidth-constraints/bandwidth-constraint/constraints/constraint YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth     Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth    []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
	ConstraintId  *uint32           `path:"state/constraint-id|constraint-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛConstraintId []ygot.Annotation `path:"state/@constraint-id|@constraint-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// GetConstraintId retrieves the value of the leaf ConstraintId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ConstraintId is set, it can
// safely use t.GetConstraintId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ConstraintId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) GetConstraintId() uint32 {
	if t == nil || t.ConstraintId == nil {
		return 0
	}
	return *t.ConstraintId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) ΛListKeyMap() (map[string]interface{}, error) {
	if t.ConstraintId == nil {
		return nil, fmt.Errorf("nil value for key ConstraintId")
	}

	return map[string]interface{}{
		"constraint-id": *t.ConstraintId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/extended-admin-group YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ExtendedAdminGroup  []uint32          `path:"state/extended-admin-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtendedAdminGroup []ygot.Annotation `path:"state/@extended-admin-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup) IsYANGGoStruct() {
}

// GetExtendedAdminGroup retrieves the value of the leaf ExtendedAdminGroup from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtendedAdminGroup is set, it can
// safely use t.GetExtendedAdminGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtendedAdminGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup) GetExtendedAdminGroup() []uint32 {
	if t == nil || t.ExtendedAdminGroup == nil {
		return nil
	}
	return t.ExtendedAdminGroup
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ExtendedAdminGroup) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/ipv4-interface-address YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/ipv4-neighbor-address YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/ipv6-interface-address YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/ipv6-neighbor-address YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/lan-adjacency-sids/lan-adjacency-sid YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid struct {
	ΛMetadata   []ygot.Annotation         `path:"@" ygotAnnotation:"true"`
	Flags       []E_LanAdjacencySid_Flags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags      []ygot.Annotation         `path:"state/@flags" ygotAnnotation:"true"`
	NeighborId  *string                   `path:"state/neighbor-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighborId []ygot.Annotation         `path:"state/@neighbor-id" ygotAnnotation:"true"`
	Value       *uint32                   `path:"state/value|value" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛValue      []ygot.Annotation         `path:"state/@value|@value" ygotAnnotation:"true"`
	Weight      *uint8                    `path:"state/weight" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWeight     []ygot.Annotation         `path:"state/@weight" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) GetFlags() []E_LanAdjacencySid_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetNeighborId retrieves the value of the leaf NeighborId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborId is set, it can
// safely use t.GetNeighborId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) GetNeighborId() string {
	if t == nil || t.NeighborId == nil {
		return ""
	}
	return *t.NeighborId
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) GetValue() uint32 {
	if t == nil || t.Value == nil {
		return 0
	}
	return *t.Value
}

// GetWeight retrieves the value of the leaf Weight from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Weight is set, it can
// safely use t.GetWeight() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Weight == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) GetWeight() uint8 {
	if t == nil || t.Weight == nil {
		return 0
	}
	return *t.Weight
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Value == nil {
		return nil, fmt.Errorf("nil value for key Value")
	}

	return map[string]interface{}{
		"value": *t.Value,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LanAdjacencySid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-attributes YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes struct {
	ΛMetadata        []ygot.Annotation                  `path:"@" ygotAnnotation:"true"`
	LocalProtection  []E_LinkAttributes_LocalProtection `path:"state/local-protection" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalProtection []ygot.Annotation                  `path:"state/@local-protection" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes) IsYANGGoStruct() {
}

// GetLocalProtection retrieves the value of the leaf LocalProtection from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalProtection is set, it can
// safely use t.GetLocalProtection() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalProtection == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes) GetLocalProtection() []E_LinkAttributes_LocalProtection {
	if t == nil || t.LocalProtection == nil {
		return nil
	}
	return t.LocalProtection
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkAttributes) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-delay YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ABit      *bool             `path:"state/a-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛABit     []ygot.Annotation `path:"state/@a-bit" ygotAnnotation:"true"`
	Delay     *uint32           `path:"state/delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDelay    []ygot.Annotation `path:"state/@delay" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay) IsYANGGoStruct() {
}

// GetABit retrieves the value of the leaf ABit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ABit is set, it can
// safely use t.GetABit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ABit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay) GetABit() bool {
	if t == nil || t.ABit == nil {
		return false
	}
	return *t.ABit
}

// GetDelay retrieves the value of the leaf Delay from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Delay is set, it can
// safely use t.GetDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Delay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay) GetDelay() uint32 {
	if t == nil || t.Delay == nil {
		return 0
	}
	return *t.Delay
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelay) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-delay-variation YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Delay     *uint32           `path:"state/delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDelay    []ygot.Annotation `path:"state/@delay" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation) IsYANGGoStruct() {
}

// GetDelay retrieves the value of the leaf Delay from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Delay is set, it can
// safely use t.GetDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Delay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation) GetDelay() uint32 {
	if t == nil || t.Delay == nil {
		return 0
	}
	return *t.Delay
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkDelayVariation) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-id YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Local     *uint32           `path:"state/local" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocal    []ygot.Annotation `path:"state/@local" ygotAnnotation:"true"`
	Remote    *uint32           `path:"state/remote" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRemote   []ygot.Annotation `path:"state/@remote" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId) IsYANGGoStruct() {
}

// GetLocal retrieves the value of the leaf Local from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Local is set, it can
// safely use t.GetLocal() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Local == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId) GetLocal() uint32 {
	if t == nil || t.Local == nil {
		return 0
	}
	return *t.Local
}

// GetRemote retrieves the value of the leaf Remote from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Remote is set, it can
// safely use t.GetRemote() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Remote == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId) GetRemote() uint32 {
	if t == nil || t.Remote == nil {
		return 0
	}
	return *t.Remote
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkId) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-loss YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ABit      *bool             `path:"state/a-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛABit     []ygot.Annotation `path:"state/@a-bit" ygotAnnotation:"true"`
	LinkLoss  *uint32           `path:"state/link-loss" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLinkLoss []ygot.Annotation `path:"state/@link-loss" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss) IsYANGGoStruct() {
}

// GetABit retrieves the value of the leaf ABit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ABit is set, it can
// safely use t.GetABit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ABit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss) GetABit() bool {
	if t == nil || t.ABit == nil {
		return false
	}
	return *t.ABit
}

// GetLinkLoss retrieves the value of the leaf LinkLoss from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkLoss is set, it can
// safely use t.GetLinkLoss() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkLoss == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss) GetLinkLoss() uint32 {
	if t == nil || t.LinkLoss == nil {
		return 0
	}
	return *t.LinkLoss
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkLoss) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-protection-type YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType struct {
	ΛMetadata []ygot.Annotation           `path:"@" ygotAnnotation:"true"`
	Type      []E_LinkProtectionType_Type `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation           `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType) IsYANGGoStruct() {
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType) GetType() []E_LinkProtectionType_Type {
	if t == nil || t.Type == nil {
		return nil
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_LinkProtectionType) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/max-link-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxLinkBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/max-reservable-link-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/min-max-link-delay YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ABit      *bool             `path:"state/a-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛABit     []ygot.Annotation `path:"state/@a-bit" ygotAnnotation:"true"`
	MaxDelay  *uint32           `path:"state/max-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxDelay []ygot.Annotation `path:"state/@max-delay" ygotAnnotation:"true"`
	MinDelay  *uint32           `path:"state/min-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMinDelay []ygot.Annotation `path:"state/@min-delay" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) IsYANGGoStruct() {
}

// GetABit retrieves the value of the leaf ABit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ABit is set, it can
// safely use t.GetABit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ABit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) GetABit() bool {
	if t == nil || t.ABit == nil {
		return false
	}
	return *t.ABit
}

// GetMaxDelay retrieves the value of the leaf MaxDelay from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxDelay is set, it can
// safely use t.GetMaxDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) GetMaxDelay() uint32 {
	if t == nil || t.MaxDelay == nil {
		return 0
	}
	return *t.MaxDelay
}

// GetMinDelay retrieves the value of the leaf MinDelay from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinDelay is set, it can
// safely use t.GetMinDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) GetMinDelay() uint32 {
	if t == nil || t.MinDelay == nil {
		return 0
	}
	return *t.MinDelay
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_MinMaxLinkDelay) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/residual-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_ResidualBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/unreserved-bandwidth/setup-priority YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
	Priority   *uint8            `path:"state/priority|priority" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPriority  []ygot.Annotation `path:"state/@priority|@priority" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// GetPriority retrieves the value of the leaf Priority from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) GetPriority() uint8 {
	if t == nil || t.Priority == nil {
		return 0
	}
	return *t.Priority
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Priority == nil {
		return nil, fmt.Errorf("nil value for key Priority")
	}

	return map[string]interface{}{
		"priority": *t.Priority,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_SetupPriority) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/te-default-metric YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Metric    *uint32           `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation `path:"state/@metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric) IsYANGGoStruct() {
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_TeDefaultMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/unconstrained-lsp YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp struct {
	ΛMetadata []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Count     *uint16                          `path:"state/count" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCount    []ygot.Annotation                `path:"state/@count" ygotAnnotation:"true"`
	Type      E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp) IsYANGGoStruct() {
}

// GetCount retrieves the value of the leaf Count from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Count is set, it can
// safely use t.GetCount() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Count == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp) GetCount() uint16 {
	if t == nil || t.Count == nil {
		return 0
	}
	return *t.Count
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UnconstrainedLsp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/utilized-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth struct {
	ΛMetadata  []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary                           `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation                `path:"state/@bandwidth" ygotAnnotation:"true"`
	Type       E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType      []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_Subtlv_UtilizedBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/undefined-subtlvs/undefined-subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint8            `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint8            `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type|@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) IsYANGGoStruct() {
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) GetLength() uint8 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) GetType() uint8 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Type == nil {
		return nil, fmt.Errorf("nil value for key Type")
	}

	return map[string]interface{}{
		"type": *t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsisNeighborAttribute_Neighbor_Instance_UndefinedSubtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn struct {
	ΛMetadata []ygot.Annotation                                                                                                              `path:"@" ygotAnnotation:"true"`
	Neighbor  map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor `path:"neighbors/neighbor" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighbor []ygot.Annotation                                                                                                              `path:"neighbors/@neighbor" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Key represents the key for list Neighbor of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Key struct {
	MtId     uint16 `path:"mt-id"`
	SystemId string `path:"system-id"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Key key struct.
func (t NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"mt-id":     t.MtId,
		"system-id": t.SystemId,
	}, nil
}

// NewNeighbor creates a new entry in the Neighbor list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn) NewNeighbor(MtId uint16, SystemId string) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor)
	}

	key := NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Key{
		MtId:     MtId,
		SystemId: SystemId,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor{
		MtId:     &MtId,
		SystemId: &SystemId,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn) RenameNeighbor(oldK, newK NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Key) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.MtId = &newK.MtId
	e.SystemId = &newK.SystemId

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn) GetOrCreateNeighborMap() map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn) GetOrCreateNeighbor(MtId uint16, SystemId string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor {

	key := NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Key{
		MtId:     MtId,
		SystemId: SystemId,
	}

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(MtId, SystemId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn) GetNeighbor(MtId uint16, SystemId string) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Key{
		MtId:     MtId,
		SystemId: SystemId,
	}

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor struct to the
// list Neighbor of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn) AppendNeighbor(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor) error {
	if v.MtId == nil {
		return fmt.Errorf("invalid nil key for MtId")
	}

	if v.SystemId == nil {
		return fmt.Errorf("invalid nil key for SystemId")
	}

	key := NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Key{
		MtId:     *v.MtId,
		SystemId: *v.SystemId,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Key]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor struct {
	ΛMetadata []ygot.Annotation                                                               `path:"@" ygotAnnotation:"true"`
	Instance  map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance `path:"instances/instance" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInstance []ygot.Annotation                                                               `path:"instances/@instance" ygotAnnotation:"true"`
	MtId      *uint16                                                                         `path:"state/mt-id|mt-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛMtId     []ygot.Annotation                                                               `path:"state/@mt-id|@mt-id" ygotAnnotation:"true"`
	SystemId  *string                                                                         `path:"state/system-id|system-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSystemId []ygot.Annotation                                                               `path:"state/@system-id|@system-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor) IsYANGGoStruct() {}

// NewInstance creates a new entry in the Instance list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor) NewInstance(Id uint64) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Instance == nil {
		t.Instance = make(map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Instance[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Instance", key)
	}

	t.Instance[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance{
		Id: &Id,
	}

	return t.Instance[key], nil
}

// RenameInstance renames an entry in the list Instance within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor) RenameInstance(oldK, newK uint64) error {
	if _, ok := t.Instance[newK]; ok {
		return fmt.Errorf("key %v already exists in Instance", newK)
	}

	e, ok := t.Instance[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Instance", oldK)
	}
	e.Id = &newK

	t.Instance[newK] = e
	delete(t.Instance, oldK)
	return nil
}

// GetOrCreateInstanceMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor) GetOrCreateInstanceMap() map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance {
	if t.Instance == nil {
		t.Instance = make(map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance)
	}
	return t.Instance
}

// GetOrCreateInstance retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor) GetOrCreateInstance(Id uint64) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance {

	key := Id

	if v, ok := t.Instance[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInstance(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInstance got unexpected error: %v", err))
	}
	return v
}

// GetInstance retrieves the value with the specified key from
// the Instance map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor) GetInstance(Id uint64) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.Instance[key]; ok {
		return lm
	}
	return nil
}

// AppendInstance appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance struct to the
// list Instance of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor) AppendInstance(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Instance == nil {
		t.Instance = make(map[uint64]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance)
	}

	if _, ok := t.Instance[key]; ok {
		return fmt.Errorf("duplicate key for list Instance %v", key)
	}

	t.Instance[key] = v
	return nil
}

// GetMtId retrieves the value of the leaf MtId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MtId is set, it can
// safely use t.GetMtId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MtId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor) GetMtId() uint16 {
	if t == nil || t.MtId == nil {
		return 0
	}
	return *t.MtId
}

// GetSystemId retrieves the value of the leaf SystemId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemId is set, it can
// safely use t.GetSystemId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor) GetSystemId() string {
	if t == nil || t.SystemId == nil {
		return ""
	}
	return *t.SystemId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Instance {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.MtId == nil {
		return nil, fmt.Errorf("nil value for key MtId")
	}

	if t.SystemId == nil {
		return nil, fmt.Errorf("nil value for key SystemId")
	}

	return map[string]interface{}{
		"mt-id":     *t.MtId,
		"system-id": *t.SystemId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance struct {
	ΛMetadata        []ygot.Annotation                                                                                                `path:"@" ygotAnnotation:"true"`
	Id               *uint64                                                                                                          `path:"state/id|id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛId              []ygot.Annotation                                                                                                `path:"state/@id|@id" ygotAnnotation:"true"`
	Metric           *uint32                                                                                                          `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric          []ygot.Annotation                                                                                                `path:"state/@metric" ygotAnnotation:"true"`
	Subtlv           map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv `path:"subtlvs/subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubtlv          []ygot.Annotation                                                                                                `path:"subtlvs/@subtlv" ygotAnnotation:"true"`
	UndefinedSubtlv  map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv                   `path:"undefined-subtlvs/undefined-subtlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUndefinedSubtlv []ygot.Annotation                                                                                                `path:"undefined-subtlvs/@undefined-subtlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) IsYANGGoStruct() {}

// NewSubtlv creates a new entry in the Subtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) NewSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Subtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Subtlv", key)
	}

	t.Subtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv{
		Type: Type,
	}

	return t.Subtlv[key], nil
}

// RenameSubtlv renames an entry in the list Subtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) RenameSubtlv(oldK, newK E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) error {
	if _, ok := t.Subtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in Subtlv", newK)
	}

	e, ok := t.Subtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Subtlv", oldK)
	}
	e.Type = newK

	t.Subtlv[newK] = e
	delete(t.Subtlv, oldK)
	return nil
}

// GetOrCreateSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) GetOrCreateSubtlvMap() map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv {
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv)
	}
	return t.Subtlv
}

// GetOrCreateSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) GetOrCreateSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv {

	key := Type

	if v, ok := t.Subtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetSubtlv retrieves the value with the specified key from
// the Subtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) GetSubtlv(Type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.Subtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv struct to the
// list Subtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) AppendSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) error {
	key := v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Subtlv == nil {
		t.Subtlv = make(map[E_IsisLsdbTypes_ISIS_SUBTLV_TYPE]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv)
	}

	if _, ok := t.Subtlv[key]; ok {
		return fmt.Errorf("duplicate key for list Subtlv %v", key)
	}

	t.Subtlv[key] = v
	return nil
}

// NewUndefinedSubtlv creates a new entry in the UndefinedSubtlv list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) NewUndefinedSubtlv(Type uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UndefinedSubtlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UndefinedSubtlv", key)
	}

	t.UndefinedSubtlv[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv{
		Type: &Type,
	}

	return t.UndefinedSubtlv[key], nil
}

// RenameUndefinedSubtlv renames an entry in the list UndefinedSubtlv within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) RenameUndefinedSubtlv(oldK, newK uint8) error {
	if _, ok := t.UndefinedSubtlv[newK]; ok {
		return fmt.Errorf("key %v already exists in UndefinedSubtlv", newK)
	}

	e, ok := t.UndefinedSubtlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UndefinedSubtlv", oldK)
	}
	e.Type = &newK

	t.UndefinedSubtlv[newK] = e
	delete(t.UndefinedSubtlv, oldK)
	return nil
}

// GetOrCreateUndefinedSubtlvMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) GetOrCreateUndefinedSubtlvMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv {
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv)
	}
	return t.UndefinedSubtlv
}

// GetOrCreateUndefinedSubtlv retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) GetOrCreateUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv {

	key := Type

	if v, ok := t.UndefinedSubtlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUndefinedSubtlv(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUndefinedSubtlv got unexpected error: %v", err))
	}
	return v
}

// GetUndefinedSubtlv retrieves the value with the specified key from
// the UndefinedSubtlv map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) GetUndefinedSubtlv(Type uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.UndefinedSubtlv[key]; ok {
		return lm
	}
	return nil
}

// AppendUndefinedSubtlv appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv struct to the
// list UndefinedSubtlv of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) AppendUndefinedSubtlv(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv) error {
	if v.Type == nil {
		return fmt.Errorf("invalid nil key received for Type")
	}

	key := *v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UndefinedSubtlv == nil {
		t.UndefinedSubtlv = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv)
	}

	if _, ok := t.UndefinedSubtlv[key]; ok {
		return fmt.Errorf("duplicate key for list UndefinedSubtlv %v", key)
	}

	t.UndefinedSubtlv[key] = v
	return nil
}

// GetId retrieves the value of the leaf Id from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) GetId() uint64 {
	if t == nil || t.Id == nil {
		return 0
	}
	return *t.Id
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Subtlv {
		e.PopulateDefaults()
	}
	for _, e := range t.UndefinedSubtlv {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv struct {
	ΛMetadata                   []ygot.Annotation                                                                                         `path:"@" ygotAnnotation:"true"`
	AdjacencySid                map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid       `path:"adjacency-sids/adjacency-sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdjacencySid               []ygot.Annotation                                                                                         `path:"adjacency-sids/@adjacency-sid" ygotAnnotation:"true"`
	AdminGroup                  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup                    `path:"admin-group" module:"openconfig-network-instance"`
	ΛAdminGroup                 []ygot.Annotation                                                                                         `path:"@admin-group" ygotAnnotation:"true"`
	AvailableBandwidth          *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth            `path:"available-bandwidth" module:"openconfig-network-instance"`
	ΛAvailableBandwidth         []ygot.Annotation                                                                                         `path:"@available-bandwidth" ygotAnnotation:"true"`
	BandwidthConstraint         map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint `path:"bandwidth-constraints/bandwidth-constraint" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidthConstraint        []ygot.Annotation                                                                                         `path:"bandwidth-constraints/@bandwidth-constraint" ygotAnnotation:"true"`
	ExtendedAdminGroup          *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup            `path:"extended-admin-group" module:"openconfig-network-instance"`
	ΛExtendedAdminGroup         []ygot.Annotation                                                                                         `path:"@extended-admin-group" ygotAnnotation:"true"`
	Ipv4InterfaceAddress        *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress          `path:"ipv4-interface-address" module:"openconfig-network-instance"`
	ΛIpv4InterfaceAddress       []ygot.Annotation                                                                                         `path:"@ipv4-interface-address" ygotAnnotation:"true"`
	Ipv4NeighborAddress         *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress           `path:"ipv4-neighbor-address" module:"openconfig-network-instance"`
	ΛIpv4NeighborAddress        []ygot.Annotation                                                                                         `path:"@ipv4-neighbor-address" ygotAnnotation:"true"`
	Ipv6InterfaceAddress        *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress          `path:"ipv6-interface-address" module:"openconfig-network-instance"`
	ΛIpv6InterfaceAddress       []ygot.Annotation                                                                                         `path:"@ipv6-interface-address" ygotAnnotation:"true"`
	Ipv6NeighborAddress         *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress           `path:"ipv6-neighbor-address" module:"openconfig-network-instance"`
	ΛIpv6NeighborAddress        []ygot.Annotation                                                                                         `path:"@ipv6-neighbor-address" ygotAnnotation:"true"`
	LanAdjacencySid             map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid    `path:"lan-adjacency-sids/lan-adjacency-sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLanAdjacencySid            []ygot.Annotation                                                                                         `path:"lan-adjacency-sids/@lan-adjacency-sid" ygotAnnotation:"true"`
	LinkAttributes              *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes                `path:"link-attributes" module:"openconfig-network-instance"`
	ΛLinkAttributes             []ygot.Annotation                                                                                         `path:"@link-attributes" ygotAnnotation:"true"`
	LinkDelay                   *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay                     `path:"link-delay" module:"openconfig-network-instance"`
	ΛLinkDelay                  []ygot.Annotation                                                                                         `path:"@link-delay" ygotAnnotation:"true"`
	LinkDelayVariation          *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation            `path:"link-delay-variation" module:"openconfig-network-instance"`
	ΛLinkDelayVariation         []ygot.Annotation                                                                                         `path:"@link-delay-variation" ygotAnnotation:"true"`
	LinkId                      *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId                        `path:"link-id" module:"openconfig-network-instance"`
	ΛLinkId                     []ygot.Annotation                                                                                         `path:"@link-id" ygotAnnotation:"true"`
	LinkLoss                    *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss                      `path:"link-loss" module:"openconfig-network-instance"`
	ΛLinkLoss                   []ygot.Annotation                                                                                         `path:"@link-loss" ygotAnnotation:"true"`
	LinkProtectionType          *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType            `path:"link-protection-type" module:"openconfig-network-instance"`
	ΛLinkProtectionType         []ygot.Annotation                                                                                         `path:"@link-protection-type" ygotAnnotation:"true"`
	MaxLinkBandwidth            *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth              `path:"max-link-bandwidth" module:"openconfig-network-instance"`
	ΛMaxLinkBandwidth           []ygot.Annotation                                                                                         `path:"@max-link-bandwidth" ygotAnnotation:"true"`
	MaxReservableLinkBandwidth  *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth    `path:"max-reservable-link-bandwidth" module:"openconfig-network-instance"`
	ΛMaxReservableLinkBandwidth []ygot.Annotation                                                                                         `path:"@max-reservable-link-bandwidth" ygotAnnotation:"true"`
	MinMaxLinkDelay             *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay               `path:"min-max-link-delay" module:"openconfig-network-instance"`
	ΛMinMaxLinkDelay            []ygot.Annotation                                                                                         `path:"@min-max-link-delay" ygotAnnotation:"true"`
	ResidualBandwidth           *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth             `path:"residual-bandwidth" module:"openconfig-network-instance"`
	ΛResidualBandwidth          []ygot.Annotation                                                                                         `path:"@residual-bandwidth" ygotAnnotation:"true"`
	SetupPriority               map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority       `path:"unreserved-bandwidth/setup-priority" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSetupPriority              []ygot.Annotation                                                                                         `path:"unreserved-bandwidth/@setup-priority" ygotAnnotation:"true"`
	TeDefaultMetric             *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric               `path:"te-default-metric" module:"openconfig-network-instance"`
	ΛTeDefaultMetric            []ygot.Annotation                                                                                         `path:"@te-default-metric" ygotAnnotation:"true"`
	Type                        E_IsisLsdbTypes_ISIS_SUBTLV_TYPE                                                                          `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType                       []ygot.Annotation                                                                                         `path:"state/@type|@type" ygotAnnotation:"true"`
	UnconstrainedLsp            *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp              `path:"unconstrained-lsp" module:"openconfig-network-instance"`
	ΛUnconstrainedLsp           []ygot.Annotation                                                                                         `path:"@unconstrained-lsp" ygotAnnotation:"true"`
	UtilizedBandwidth           *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth             `path:"utilized-bandwidth" module:"openconfig-network-instance"`
	ΛUtilizedBandwidth          []ygot.Annotation                                                                                         `path:"@utilized-bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) IsYANGGoStruct() {}

// NewAdjacencySid creates a new entry in the AdjacencySid list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) NewAdjacencySid(Value uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AdjacencySid == nil {
		t.AdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid)
	}

	key := Value

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AdjacencySid[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AdjacencySid", key)
	}

	t.AdjacencySid[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid{
		Value: &Value,
	}

	return t.AdjacencySid[key], nil
}

// RenameAdjacencySid renames an entry in the list AdjacencySid within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) RenameAdjacencySid(oldK, newK uint32) error {
	if _, ok := t.AdjacencySid[newK]; ok {
		return fmt.Errorf("key %v already exists in AdjacencySid", newK)
	}

	e, ok := t.AdjacencySid[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AdjacencySid", oldK)
	}
	e.Value = &newK

	t.AdjacencySid[newK] = e
	delete(t.AdjacencySid, oldK)
	return nil
}

// GetOrCreateAdjacencySidMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateAdjacencySidMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid {
	if t.AdjacencySid == nil {
		t.AdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid)
	}
	return t.AdjacencySid
}

// GetOrCreateAdjacencySid retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateAdjacencySid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid {

	key := Value

	if v, ok := t.AdjacencySid[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAdjacencySid(Value)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAdjacencySid got unexpected error: %v", err))
	}
	return v
}

// GetAdjacencySid retrieves the value with the specified key from
// the AdjacencySid map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetAdjacencySid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid {

	if t == nil {
		return nil
	}

	key := Value

	if lm, ok := t.AdjacencySid[key]; ok {
		return lm
	}
	return nil
}

// AppendAdjacencySid appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid struct to the
// list AdjacencySid of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) AppendAdjacencySid(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid) error {
	if v.Value == nil {
		return fmt.Errorf("invalid nil key received for Value")
	}

	key := *v.Value

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AdjacencySid == nil {
		t.AdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid)
	}

	if _, ok := t.AdjacencySid[key]; ok {
		return fmt.Errorf("duplicate key for list AdjacencySid %v", key)
	}

	t.AdjacencySid[key] = v
	return nil
}

// NewBandwidthConstraint creates a new entry in the BandwidthConstraint list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) NewBandwidthConstraint(ModelId uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.BandwidthConstraint == nil {
		t.BandwidthConstraint = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint)
	}

	key := ModelId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.BandwidthConstraint[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list BandwidthConstraint", key)
	}

	t.BandwidthConstraint[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint{
		ModelId: &ModelId,
	}

	return t.BandwidthConstraint[key], nil
}

// RenameBandwidthConstraint renames an entry in the list BandwidthConstraint within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) RenameBandwidthConstraint(oldK, newK uint8) error {
	if _, ok := t.BandwidthConstraint[newK]; ok {
		return fmt.Errorf("key %v already exists in BandwidthConstraint", newK)
	}

	e, ok := t.BandwidthConstraint[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in BandwidthConstraint", oldK)
	}
	e.ModelId = &newK

	t.BandwidthConstraint[newK] = e
	delete(t.BandwidthConstraint, oldK)
	return nil
}

// GetOrCreateBandwidthConstraintMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateBandwidthConstraintMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint {
	if t.BandwidthConstraint == nil {
		t.BandwidthConstraint = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint)
	}
	return t.BandwidthConstraint
}

// GetOrCreateBandwidthConstraint retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateBandwidthConstraint(ModelId uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint {

	key := ModelId

	if v, ok := t.BandwidthConstraint[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewBandwidthConstraint(ModelId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateBandwidthConstraint got unexpected error: %v", err))
	}
	return v
}

// GetBandwidthConstraint retrieves the value with the specified key from
// the BandwidthConstraint map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetBandwidthConstraint(ModelId uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint {

	if t == nil {
		return nil
	}

	key := ModelId

	if lm, ok := t.BandwidthConstraint[key]; ok {
		return lm
	}
	return nil
}

// AppendBandwidthConstraint appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint struct to the
// list BandwidthConstraint of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) AppendBandwidthConstraint(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint) error {
	if v.ModelId == nil {
		return fmt.Errorf("invalid nil key received for ModelId")
	}

	key := *v.ModelId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.BandwidthConstraint == nil {
		t.BandwidthConstraint = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint)
	}

	if _, ok := t.BandwidthConstraint[key]; ok {
		return fmt.Errorf("duplicate key for list BandwidthConstraint %v", key)
	}

	t.BandwidthConstraint[key] = v
	return nil
}

// NewLanAdjacencySid creates a new entry in the LanAdjacencySid list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) NewLanAdjacencySid(Value uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.LanAdjacencySid == nil {
		t.LanAdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid)
	}

	key := Value

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.LanAdjacencySid[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list LanAdjacencySid", key)
	}

	t.LanAdjacencySid[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid{
		Value: &Value,
	}

	return t.LanAdjacencySid[key], nil
}

// RenameLanAdjacencySid renames an entry in the list LanAdjacencySid within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) RenameLanAdjacencySid(oldK, newK uint32) error {
	if _, ok := t.LanAdjacencySid[newK]; ok {
		return fmt.Errorf("key %v already exists in LanAdjacencySid", newK)
	}

	e, ok := t.LanAdjacencySid[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in LanAdjacencySid", oldK)
	}
	e.Value = &newK

	t.LanAdjacencySid[newK] = e
	delete(t.LanAdjacencySid, oldK)
	return nil
}

// GetOrCreateLanAdjacencySidMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateLanAdjacencySidMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid {
	if t.LanAdjacencySid == nil {
		t.LanAdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid)
	}
	return t.LanAdjacencySid
}

// GetOrCreateLanAdjacencySid retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateLanAdjacencySid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid {

	key := Value

	if v, ok := t.LanAdjacencySid[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewLanAdjacencySid(Value)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateLanAdjacencySid got unexpected error: %v", err))
	}
	return v
}

// GetLanAdjacencySid retrieves the value with the specified key from
// the LanAdjacencySid map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetLanAdjacencySid(Value uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid {

	if t == nil {
		return nil
	}

	key := Value

	if lm, ok := t.LanAdjacencySid[key]; ok {
		return lm
	}
	return nil
}

// AppendLanAdjacencySid appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid struct to the
// list LanAdjacencySid of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) AppendLanAdjacencySid(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid) error {
	if v.Value == nil {
		return fmt.Errorf("invalid nil key received for Value")
	}

	key := *v.Value

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.LanAdjacencySid == nil {
		t.LanAdjacencySid = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid)
	}

	if _, ok := t.LanAdjacencySid[key]; ok {
		return fmt.Errorf("duplicate key for list LanAdjacencySid %v", key)
	}

	t.LanAdjacencySid[key] = v
	return nil
}

// NewSetupPriority creates a new entry in the SetupPriority list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) NewSetupPriority(Priority uint8) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SetupPriority == nil {
		t.SetupPriority = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority)
	}

	key := Priority

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.SetupPriority[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list SetupPriority", key)
	}

	t.SetupPriority[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority{
		Priority: &Priority,
	}

	return t.SetupPriority[key], nil
}

// RenameSetupPriority renames an entry in the list SetupPriority within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) RenameSetupPriority(oldK, newK uint8) error {
	if _, ok := t.SetupPriority[newK]; ok {
		return fmt.Errorf("key %v already exists in SetupPriority", newK)
	}

	e, ok := t.SetupPriority[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in SetupPriority", oldK)
	}
	e.Priority = &newK

	t.SetupPriority[newK] = e
	delete(t.SetupPriority, oldK)
	return nil
}

// GetOrCreateSetupPriorityMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateSetupPriorityMap() map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority {
	if t.SetupPriority == nil {
		t.SetupPriority = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority)
	}
	return t.SetupPriority
}

// GetOrCreateSetupPriority retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateSetupPriority(Priority uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority {

	key := Priority

	if v, ok := t.SetupPriority[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSetupPriority(Priority)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSetupPriority got unexpected error: %v", err))
	}
	return v
}

// GetSetupPriority retrieves the value with the specified key from
// the SetupPriority map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetSetupPriority(Priority uint8) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority {

	if t == nil {
		return nil
	}

	key := Priority

	if lm, ok := t.SetupPriority[key]; ok {
		return lm
	}
	return nil
}

// AppendSetupPriority appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority struct to the
// list SetupPriority of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) AppendSetupPriority(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority) error {
	if v.Priority == nil {
		return fmt.Errorf("invalid nil key received for Priority")
	}

	key := *v.Priority

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SetupPriority == nil {
		t.SetupPriority = make(map[uint8]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority)
	}

	if _, ok := t.SetupPriority[key]; ok {
		return fmt.Errorf("duplicate key for list SetupPriority %v", key)
	}

	t.SetupPriority[key] = v
	return nil
}

// GetOrCreateAdminGroup retrieves the value of the AdminGroup field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateAdminGroup() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup {
	if t.AdminGroup != nil {
		return t.AdminGroup
	}
	t.AdminGroup = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup{}
	return t.AdminGroup
}

// GetOrCreateAvailableBandwidth retrieves the value of the AvailableBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateAvailableBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth {
	if t.AvailableBandwidth != nil {
		return t.AvailableBandwidth
	}
	t.AvailableBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth{}
	return t.AvailableBandwidth
}

// GetOrCreateExtendedAdminGroup retrieves the value of the ExtendedAdminGroup field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateExtendedAdminGroup() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup {
	if t.ExtendedAdminGroup != nil {
		return t.ExtendedAdminGroup
	}
	t.ExtendedAdminGroup = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup{}
	return t.ExtendedAdminGroup
}

// GetOrCreateIpv4InterfaceAddress retrieves the value of the Ipv4InterfaceAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateIpv4InterfaceAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress {
	if t.Ipv4InterfaceAddress != nil {
		return t.Ipv4InterfaceAddress
	}
	t.Ipv4InterfaceAddress = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress{}
	return t.Ipv4InterfaceAddress
}

// GetOrCreateIpv4NeighborAddress retrieves the value of the Ipv4NeighborAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateIpv4NeighborAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress {
	if t.Ipv4NeighborAddress != nil {
		return t.Ipv4NeighborAddress
	}
	t.Ipv4NeighborAddress = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress{}
	return t.Ipv4NeighborAddress
}

// GetOrCreateIpv6InterfaceAddress retrieves the value of the Ipv6InterfaceAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateIpv6InterfaceAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress {
	if t.Ipv6InterfaceAddress != nil {
		return t.Ipv6InterfaceAddress
	}
	t.Ipv6InterfaceAddress = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress{}
	return t.Ipv6InterfaceAddress
}

// GetOrCreateIpv6NeighborAddress retrieves the value of the Ipv6NeighborAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateIpv6NeighborAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress {
	if t.Ipv6NeighborAddress != nil {
		return t.Ipv6NeighborAddress
	}
	t.Ipv6NeighborAddress = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress{}
	return t.Ipv6NeighborAddress
}

// GetOrCreateLinkAttributes retrieves the value of the LinkAttributes field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateLinkAttributes() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes {
	if t.LinkAttributes != nil {
		return t.LinkAttributes
	}
	t.LinkAttributes = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes{}
	return t.LinkAttributes
}

// GetOrCreateLinkDelay retrieves the value of the LinkDelay field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateLinkDelay() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay {
	if t.LinkDelay != nil {
		return t.LinkDelay
	}
	t.LinkDelay = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay{}
	return t.LinkDelay
}

// GetOrCreateLinkDelayVariation retrieves the value of the LinkDelayVariation field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateLinkDelayVariation() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation {
	if t.LinkDelayVariation != nil {
		return t.LinkDelayVariation
	}
	t.LinkDelayVariation = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation{}
	return t.LinkDelayVariation
}

// GetOrCreateLinkId retrieves the value of the LinkId field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateLinkId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId {
	if t.LinkId != nil {
		return t.LinkId
	}
	t.LinkId = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId{}
	return t.LinkId
}

// GetOrCreateLinkLoss retrieves the value of the LinkLoss field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateLinkLoss() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss {
	if t.LinkLoss != nil {
		return t.LinkLoss
	}
	t.LinkLoss = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss{}
	return t.LinkLoss
}

// GetOrCreateLinkProtectionType retrieves the value of the LinkProtectionType field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateLinkProtectionType() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType {
	if t.LinkProtectionType != nil {
		return t.LinkProtectionType
	}
	t.LinkProtectionType = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType{}
	return t.LinkProtectionType
}

// GetOrCreateMaxLinkBandwidth retrieves the value of the MaxLinkBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateMaxLinkBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth {
	if t.MaxLinkBandwidth != nil {
		return t.MaxLinkBandwidth
	}
	t.MaxLinkBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth{}
	return t.MaxLinkBandwidth
}

// GetOrCreateMaxReservableLinkBandwidth retrieves the value of the MaxReservableLinkBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateMaxReservableLinkBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth {
	if t.MaxReservableLinkBandwidth != nil {
		return t.MaxReservableLinkBandwidth
	}
	t.MaxReservableLinkBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth{}
	return t.MaxReservableLinkBandwidth
}

// GetOrCreateMinMaxLinkDelay retrieves the value of the MinMaxLinkDelay field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateMinMaxLinkDelay() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay {
	if t.MinMaxLinkDelay != nil {
		return t.MinMaxLinkDelay
	}
	t.MinMaxLinkDelay = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay{}
	return t.MinMaxLinkDelay
}

// GetOrCreateResidualBandwidth retrieves the value of the ResidualBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateResidualBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth {
	if t.ResidualBandwidth != nil {
		return t.ResidualBandwidth
	}
	t.ResidualBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth{}
	return t.ResidualBandwidth
}

// GetOrCreateTeDefaultMetric retrieves the value of the TeDefaultMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateTeDefaultMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric {
	if t.TeDefaultMetric != nil {
		return t.TeDefaultMetric
	}
	t.TeDefaultMetric = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric{}
	return t.TeDefaultMetric
}

// GetOrCreateUnconstrainedLsp retrieves the value of the UnconstrainedLsp field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateUnconstrainedLsp() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp {
	if t.UnconstrainedLsp != nil {
		return t.UnconstrainedLsp
	}
	t.UnconstrainedLsp = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp{}
	return t.UnconstrainedLsp
}

// GetOrCreateUtilizedBandwidth retrieves the value of the UtilizedBandwidth field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetOrCreateUtilizedBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth {
	if t.UtilizedBandwidth != nil {
		return t.UtilizedBandwidth
	}
	t.UtilizedBandwidth = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth{}
	return t.UtilizedBandwidth
}

// GetAdminGroup returns the value of the AdminGroup struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field AdminGroup is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetAdminGroup() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup {
	if t != nil && t.AdminGroup != nil {
		return t.AdminGroup
	}
	return nil
}

// GetAvailableBandwidth returns the value of the AvailableBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field AvailableBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetAvailableBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth {
	if t != nil && t.AvailableBandwidth != nil {
		return t.AvailableBandwidth
	}
	return nil
}

// GetExtendedAdminGroup returns the value of the ExtendedAdminGroup struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field ExtendedAdminGroup is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetExtendedAdminGroup() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup {
	if t != nil && t.ExtendedAdminGroup != nil {
		return t.ExtendedAdminGroup
	}
	return nil
}

// GetIpv4InterfaceAddress returns the value of the Ipv4InterfaceAddress struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field Ipv4InterfaceAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetIpv4InterfaceAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress {
	if t != nil && t.Ipv4InterfaceAddress != nil {
		return t.Ipv4InterfaceAddress
	}
	return nil
}

// GetIpv4NeighborAddress returns the value of the Ipv4NeighborAddress struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field Ipv4NeighborAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetIpv4NeighborAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress {
	if t != nil && t.Ipv4NeighborAddress != nil {
		return t.Ipv4NeighborAddress
	}
	return nil
}

// GetIpv6InterfaceAddress returns the value of the Ipv6InterfaceAddress struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field Ipv6InterfaceAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetIpv6InterfaceAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress {
	if t != nil && t.Ipv6InterfaceAddress != nil {
		return t.Ipv6InterfaceAddress
	}
	return nil
}

// GetIpv6NeighborAddress returns the value of the Ipv6NeighborAddress struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field Ipv6NeighborAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetIpv6NeighborAddress() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress {
	if t != nil && t.Ipv6NeighborAddress != nil {
		return t.Ipv6NeighborAddress
	}
	return nil
}

// GetLinkAttributes returns the value of the LinkAttributes struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field LinkAttributes is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetLinkAttributes() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes {
	if t != nil && t.LinkAttributes != nil {
		return t.LinkAttributes
	}
	return nil
}

// GetLinkDelay returns the value of the LinkDelay struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field LinkDelay is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetLinkDelay() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay {
	if t != nil && t.LinkDelay != nil {
		return t.LinkDelay
	}
	return nil
}

// GetLinkDelayVariation returns the value of the LinkDelayVariation struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field LinkDelayVariation is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetLinkDelayVariation() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation {
	if t != nil && t.LinkDelayVariation != nil {
		return t.LinkDelayVariation
	}
	return nil
}

// GetLinkId returns the value of the LinkId struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field LinkId is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetLinkId() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId {
	if t != nil && t.LinkId != nil {
		return t.LinkId
	}
	return nil
}

// GetLinkLoss returns the value of the LinkLoss struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field LinkLoss is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetLinkLoss() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss {
	if t != nil && t.LinkLoss != nil {
		return t.LinkLoss
	}
	return nil
}

// GetLinkProtectionType returns the value of the LinkProtectionType struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field LinkProtectionType is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetLinkProtectionType() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType {
	if t != nil && t.LinkProtectionType != nil {
		return t.LinkProtectionType
	}
	return nil
}

// GetMaxLinkBandwidth returns the value of the MaxLinkBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field MaxLinkBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetMaxLinkBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth {
	if t != nil && t.MaxLinkBandwidth != nil {
		return t.MaxLinkBandwidth
	}
	return nil
}

// GetMaxReservableLinkBandwidth returns the value of the MaxReservableLinkBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field MaxReservableLinkBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetMaxReservableLinkBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth {
	if t != nil && t.MaxReservableLinkBandwidth != nil {
		return t.MaxReservableLinkBandwidth
	}
	return nil
}

// GetMinMaxLinkDelay returns the value of the MinMaxLinkDelay struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field MinMaxLinkDelay is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetMinMaxLinkDelay() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay {
	if t != nil && t.MinMaxLinkDelay != nil {
		return t.MinMaxLinkDelay
	}
	return nil
}

// GetResidualBandwidth returns the value of the ResidualBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field ResidualBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetResidualBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth {
	if t != nil && t.ResidualBandwidth != nil {
		return t.ResidualBandwidth
	}
	return nil
}

// GetTeDefaultMetric returns the value of the TeDefaultMetric struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field TeDefaultMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetTeDefaultMetric() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric {
	if t != nil && t.TeDefaultMetric != nil {
		return t.TeDefaultMetric
	}
	return nil
}

// GetUnconstrainedLsp returns the value of the UnconstrainedLsp struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field UnconstrainedLsp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetUnconstrainedLsp() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp {
	if t != nil && t.UnconstrainedLsp != nil {
		return t.UnconstrainedLsp
	}
	return nil
}

// GetUtilizedBandwidth returns the value of the UtilizedBandwidth struct pointer
// from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv. If the receiver or the field UtilizedBandwidth is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetUtilizedBandwidth() *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth {
	if t != nil && t.UtilizedBandwidth != nil {
		return t.UtilizedBandwidth
	}
	return nil
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AdminGroup.PopulateDefaults()
	t.AvailableBandwidth.PopulateDefaults()
	t.ExtendedAdminGroup.PopulateDefaults()
	t.Ipv4InterfaceAddress.PopulateDefaults()
	t.Ipv4NeighborAddress.PopulateDefaults()
	t.Ipv6InterfaceAddress.PopulateDefaults()
	t.Ipv6NeighborAddress.PopulateDefaults()
	t.LinkAttributes.PopulateDefaults()
	t.LinkDelay.PopulateDefaults()
	t.LinkDelayVariation.PopulateDefaults()
	t.LinkId.PopulateDefaults()
	t.LinkLoss.PopulateDefaults()
	t.LinkProtectionType.PopulateDefaults()
	t.MaxLinkBandwidth.PopulateDefaults()
	t.MaxReservableLinkBandwidth.PopulateDefaults()
	t.MinMaxLinkDelay.PopulateDefaults()
	t.ResidualBandwidth.PopulateDefaults()
	t.TeDefaultMetric.PopulateDefaults()
	t.UnconstrainedLsp.PopulateDefaults()
	t.UtilizedBandwidth.PopulateDefaults()
	for _, e := range t.AdjacencySid {
		e.PopulateDefaults()
	}
	for _, e := range t.BandwidthConstraint {
		e.PopulateDefaults()
	}
	for _, e := range t.LanAdjacencySid {
		e.PopulateDefaults()
	}
	for _, e := range t.SetupPriority {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"type": t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/adjacency-sids/adjacency-sid YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid struct {
	ΛMetadata []ygot.Annotation      `path:"@" ygotAnnotation:"true"`
	Flags     []E_AdjacencySid_Flags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags    []ygot.Annotation      `path:"state/@flags" ygotAnnotation:"true"`
	Value     *uint32                `path:"state/value|value" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛValue    []ygot.Annotation      `path:"state/@value|@value" ygotAnnotation:"true"`
	Weight    *uint8                 `path:"state/weight" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWeight   []ygot.Annotation      `path:"state/@weight" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid) GetFlags() []E_AdjacencySid_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid) GetValue() uint32 {
	if t == nil || t.Value == nil {
		return 0
	}
	return *t.Value
}

// GetWeight retrieves the value of the leaf Weight from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Weight is set, it can
// safely use t.GetWeight() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Weight == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid) GetWeight() uint8 {
	if t == nil || t.Weight == nil {
		return 0
	}
	return *t.Weight
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Value == nil {
		return nil, fmt.Errorf("nil value for key Value")
	}

	return map[string]interface{}{
		"value": *t.Value,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdjacencySid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/admin-group YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AdminGroup  []uint32          `path:"state/admin-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdminGroup []ygot.Annotation `path:"state/@admin-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup) IsYANGGoStruct() {
}

// GetAdminGroup retrieves the value of the leaf AdminGroup from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdminGroup is set, it can
// safely use t.GetAdminGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdminGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup) GetAdminGroup() []uint32 {
	if t == nil || t.AdminGroup == nil {
		return nil
	}
	return t.AdminGroup
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AdminGroup) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/available-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth struct {
	ΛMetadata  []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary                           `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation                `path:"state/@bandwidth" ygotAnnotation:"true"`
	Type       E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType      []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_AvailableBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/bandwidth-constraints/bandwidth-constraint YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint struct {
	ΛMetadata   []ygot.Annotation                                                                                                     `path:"@" ygotAnnotation:"true"`
	Constraint  map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint `path:"constraints/constraint" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛConstraint []ygot.Annotation                                                                                                     `path:"constraints/@constraint" ygotAnnotation:"true"`
	ModelId     *uint8                                                                                                                `path:"state/model-id|model-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛModelId    []ygot.Annotation                                                                                                     `path:"state/@model-id|@model-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint) IsYANGGoStruct() {
}

// NewConstraint creates a new entry in the Constraint list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint) NewConstraint(ConstraintId uint32) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Constraint == nil {
		t.Constraint = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint)
	}

	key := ConstraintId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Constraint[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Constraint", key)
	}

	t.Constraint[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint{
		ConstraintId: &ConstraintId,
	}

	return t.Constraint[key], nil
}

// RenameConstraint renames an entry in the list Constraint within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint) RenameConstraint(oldK, newK uint32) error {
	if _, ok := t.Constraint[newK]; ok {
		return fmt.Errorf("key %v already exists in Constraint", newK)
	}

	e, ok := t.Constraint[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Constraint", oldK)
	}
	e.ConstraintId = &newK

	t.Constraint[newK] = e
	delete(t.Constraint, oldK)
	return nil
}

// GetOrCreateConstraintMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint) GetOrCreateConstraintMap() map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint {
	if t.Constraint == nil {
		t.Constraint = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint)
	}
	return t.Constraint
}

// GetOrCreateConstraint retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint) GetOrCreateConstraint(ConstraintId uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint {

	key := ConstraintId

	if v, ok := t.Constraint[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewConstraint(ConstraintId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateConstraint got unexpected error: %v", err))
	}
	return v
}

// GetConstraint retrieves the value with the specified key from
// the Constraint map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint) GetConstraint(ConstraintId uint32) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint {

	if t == nil {
		return nil
	}

	key := ConstraintId

	if lm, ok := t.Constraint[key]; ok {
		return lm
	}
	return nil
}

// AppendConstraint appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint struct to the
// list Constraint of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint) AppendConstraint(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) error {
	if v.ConstraintId == nil {
		return fmt.Errorf("invalid nil key received for ConstraintId")
	}

	key := *v.ConstraintId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Constraint == nil {
		t.Constraint = make(map[uint32]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint)
	}

	if _, ok := t.Constraint[key]; ok {
		return fmt.Errorf("duplicate key for list Constraint %v", key)
	}

	t.Constraint[key] = v
	return nil
}

// GetModelId retrieves the value of the leaf ModelId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ModelId is set, it can
// safely use t.GetModelId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ModelId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint) GetModelId() uint8 {
	if t == nil || t.ModelId == nil {
		return 0
	}
	return *t.ModelId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Constraint {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint) ΛListKeyMap() (map[string]interface{}, error) {
	if t.ModelId == nil {
		return nil, fmt.Errorf("nil value for key ModelId")
	}

	return map[string]interface{}{
		"model-id": *t.ModelId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/bandwidth-constraints/bandwidth-constraint/constraints/constraint YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth     Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth    []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
	ConstraintId  *uint32           `path:"state/constraint-id|constraint-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛConstraintId []ygot.Annotation `path:"state/@constraint-id|@constraint-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// GetConstraintId retrieves the value of the leaf ConstraintId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ConstraintId is set, it can
// safely use t.GetConstraintId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ConstraintId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) GetConstraintId() uint32 {
	if t == nil || t.ConstraintId == nil {
		return 0
	}
	return *t.ConstraintId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) ΛListKeyMap() (map[string]interface{}, error) {
	if t.ConstraintId == nil {
		return nil, fmt.Errorf("nil value for key ConstraintId")
	}

	return map[string]interface{}{
		"constraint-id": *t.ConstraintId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_BandwidthConstraint_Constraint) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/extended-admin-group YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ExtendedAdminGroup  []uint32          `path:"state/extended-admin-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExtendedAdminGroup []ygot.Annotation `path:"state/@extended-admin-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup) IsYANGGoStruct() {
}

// GetExtendedAdminGroup retrieves the value of the leaf ExtendedAdminGroup from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtendedAdminGroup is set, it can
// safely use t.GetExtendedAdminGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtendedAdminGroup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup) GetExtendedAdminGroup() []uint32 {
	if t == nil || t.ExtendedAdminGroup == nil {
		return nil
	}
	return t.ExtendedAdminGroup
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ExtendedAdminGroup) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/ipv4-interface-address YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4InterfaceAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/ipv4-neighbor-address YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv4NeighborAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/ipv6-interface-address YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6InterfaceAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/ipv6-neighbor-address YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_Ipv6NeighborAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/lan-adjacency-sids/lan-adjacency-sid YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid struct {
	ΛMetadata   []ygot.Annotation         `path:"@" ygotAnnotation:"true"`
	Flags       []E_LanAdjacencySid_Flags `path:"state/flags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFlags      []ygot.Annotation         `path:"state/@flags" ygotAnnotation:"true"`
	NeighborId  *string                   `path:"state/neighbor-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighborId []ygot.Annotation         `path:"state/@neighbor-id" ygotAnnotation:"true"`
	Value       *uint32                   `path:"state/value|value" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛValue      []ygot.Annotation         `path:"state/@value|@value" ygotAnnotation:"true"`
	Weight      *uint8                    `path:"state/weight" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWeight     []ygot.Annotation         `path:"state/@weight" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid) IsYANGGoStruct() {
}

// GetFlags retrieves the value of the leaf Flags from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Flags is set, it can
// safely use t.GetFlags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Flags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid) GetFlags() []E_LanAdjacencySid_Flags {
	if t == nil || t.Flags == nil {
		return nil
	}
	return t.Flags
}

// GetNeighborId retrieves the value of the leaf NeighborId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborId is set, it can
// safely use t.GetNeighborId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid) GetNeighborId() string {
	if t == nil || t.NeighborId == nil {
		return ""
	}
	return *t.NeighborId
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid) GetValue() uint32 {
	if t == nil || t.Value == nil {
		return 0
	}
	return *t.Value
}

// GetWeight retrieves the value of the leaf Weight from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Weight is set, it can
// safely use t.GetWeight() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Weight == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid) GetWeight() uint8 {
	if t == nil || t.Weight == nil {
		return 0
	}
	return *t.Weight
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Value == nil {
		return nil, fmt.Errorf("nil value for key Value")
	}

	return map[string]interface{}{
		"value": *t.Value,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LanAdjacencySid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-attributes YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes struct {
	ΛMetadata        []ygot.Annotation                  `path:"@" ygotAnnotation:"true"`
	LocalProtection  []E_LinkAttributes_LocalProtection `path:"state/local-protection" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalProtection []ygot.Annotation                  `path:"state/@local-protection" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes) IsYANGGoStruct() {
}

// GetLocalProtection retrieves the value of the leaf LocalProtection from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalProtection is set, it can
// safely use t.GetLocalProtection() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalProtection == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes) GetLocalProtection() []E_LinkAttributes_LocalProtection {
	if t == nil || t.LocalProtection == nil {
		return nil
	}
	return t.LocalProtection
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkAttributes) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-delay YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ABit      *bool             `path:"state/a-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛABit     []ygot.Annotation `path:"state/@a-bit" ygotAnnotation:"true"`
	Delay     *uint32           `path:"state/delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDelay    []ygot.Annotation `path:"state/@delay" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay) IsYANGGoStruct() {
}

// GetABit retrieves the value of the leaf ABit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ABit is set, it can
// safely use t.GetABit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ABit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay) GetABit() bool {
	if t == nil || t.ABit == nil {
		return false
	}
	return *t.ABit
}

// GetDelay retrieves the value of the leaf Delay from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Delay is set, it can
// safely use t.GetDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Delay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay) GetDelay() uint32 {
	if t == nil || t.Delay == nil {
		return 0
	}
	return *t.Delay
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelay) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-delay-variation YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Delay     *uint32           `path:"state/delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDelay    []ygot.Annotation `path:"state/@delay" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation) IsYANGGoStruct() {
}

// GetDelay retrieves the value of the leaf Delay from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Delay is set, it can
// safely use t.GetDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Delay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation) GetDelay() uint32 {
	if t == nil || t.Delay == nil {
		return 0
	}
	return *t.Delay
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkDelayVariation) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-id YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Local     *uint32           `path:"state/local" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocal    []ygot.Annotation `path:"state/@local" ygotAnnotation:"true"`
	Remote    *uint32           `path:"state/remote" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRemote   []ygot.Annotation `path:"state/@remote" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId) IsYANGGoStruct() {
}

// GetLocal retrieves the value of the leaf Local from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Local is set, it can
// safely use t.GetLocal() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Local == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId) GetLocal() uint32 {
	if t == nil || t.Local == nil {
		return 0
	}
	return *t.Local
}

// GetRemote retrieves the value of the leaf Remote from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Remote is set, it can
// safely use t.GetRemote() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Remote == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId) GetRemote() uint32 {
	if t == nil || t.Remote == nil {
		return 0
	}
	return *t.Remote
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkId) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-loss YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ABit      *bool             `path:"state/a-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛABit     []ygot.Annotation `path:"state/@a-bit" ygotAnnotation:"true"`
	LinkLoss  *uint32           `path:"state/link-loss" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLinkLoss []ygot.Annotation `path:"state/@link-loss" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss) IsYANGGoStruct() {
}

// GetABit retrieves the value of the leaf ABit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ABit is set, it can
// safely use t.GetABit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ABit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss) GetABit() bool {
	if t == nil || t.ABit == nil {
		return false
	}
	return *t.ABit
}

// GetLinkLoss retrieves the value of the leaf LinkLoss from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkLoss is set, it can
// safely use t.GetLinkLoss() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkLoss == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss) GetLinkLoss() uint32 {
	if t == nil || t.LinkLoss == nil {
		return 0
	}
	return *t.LinkLoss
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkLoss) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-protection-type YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType struct {
	ΛMetadata []ygot.Annotation           `path:"@" ygotAnnotation:"true"`
	Type      []E_LinkProtectionType_Type `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation           `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType) IsYANGGoStruct() {
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType) GetType() []E_LinkProtectionType_Type {
	if t == nil || t.Type == nil {
		return nil
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_LinkProtectionType) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/max-link-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxLinkBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/max-reservable-link-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MaxReservableLinkBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/min-max-link-delay YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ABit      *bool             `path:"state/a-bit" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛABit     []ygot.Annotation `path:"state/@a-bit" ygotAnnotation:"true"`
	MaxDelay  *uint32           `path:"state/max-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxDelay []ygot.Annotation `path:"state/@max-delay" ygotAnnotation:"true"`
	MinDelay  *uint32           `path:"state/min-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMinDelay []ygot.Annotation `path:"state/@min-delay" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay) IsYANGGoStruct() {
}

// GetABit retrieves the value of the leaf ABit from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ABit is set, it can
// safely use t.GetABit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ABit == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay) GetABit() bool {
	if t == nil || t.ABit == nil {
		return false
	}
	return *t.ABit
}

// GetMaxDelay retrieves the value of the leaf MaxDelay from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxDelay is set, it can
// safely use t.GetMaxDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay) GetMaxDelay() uint32 {
	if t == nil || t.MaxDelay == nil {
		return 0
	}
	return *t.MaxDelay
}

// GetMinDelay retrieves the value of the leaf MinDelay from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinDelay is set, it can
// safely use t.GetMinDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay) GetMinDelay() uint32 {
	if t == nil || t.MinDelay == nil {
		return 0
	}
	return *t.MinDelay
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_MinMaxLinkDelay) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/residual-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_ResidualBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/unreserved-bandwidth/setup-priority YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary            `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation `path:"state/@bandwidth" ygotAnnotation:"true"`
	Priority   *uint8            `path:"state/priority|priority" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPriority  []ygot.Annotation `path:"state/@priority|@priority" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// GetPriority retrieves the value of the leaf Priority from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority) GetPriority() uint8 {
	if t == nil || t.Priority == nil {
		return 0
	}
	return *t.Priority
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Priority == nil {
		return nil, fmt.Errorf("nil value for key Priority")
	}

	return map[string]interface{}{
		"priority": *t.Priority,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_SetupPriority) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/te-default-metric YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Metric    *uint32           `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation `path:"state/@metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric) IsYANGGoStruct() {
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_TeDefaultMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/unconstrained-lsp YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp struct {
	ΛMetadata []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Count     *uint16                          `path:"state/count" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCount    []ygot.Annotation                `path:"state/@count" ygotAnnotation:"true"`
	Type      E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp) IsYANGGoStruct() {
}

// GetCount retrieves the value of the leaf Count from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Count is set, it can
// safely use t.GetCount() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Count == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp) GetCount() uint16 {
	if t == nil || t.Count == nil {
		return 0
	}
	return *t.Count
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UnconstrainedLsp) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/utilized-bandwidth YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth struct {
	ΛMetadata  []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Bandwidth  Binary                           `path:"state/bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBandwidth []ygot.Annotation                `path:"state/@bandwidth" ygotAnnotation:"true"`
	Type       E_IsisLsdbTypes_ISIS_SUBTLV_TYPE `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType      []ygot.Annotation                `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth) IsYANGGoStruct() {
}

// GetBandwidth retrieves the value of the leaf Bandwidth from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bandwidth is set, it can
// safely use t.GetBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth) GetBandwidth() Binary {
	if t == nil || t.Bandwidth == nil {
		return nil
	}
	return t.Bandwidth
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth) GetType() E_IsisLsdbTypes_ISIS_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_Subtlv_UtilizedBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/undefined-subtlvs/undefined-subtlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint8            `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint8            `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type|@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv) IsYANGGoStruct() {
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv) GetLength() uint8 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv) GetType() uint8 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Type == nil {
		return nil, fmt.Errorf("nil value for key Type")
	}

	return map[string]interface{}{
		"type": *t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MtIsn_Neighbor_Instance_UndefinedSubtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/multi-topology YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology struct {
	ΛMetadata []ygot.Annotation                                                              `path:"@" ygotAnnotation:"true"`
	Topology  map[uint16]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology `path:"topologies/topology" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTopology []ygot.Annotation                                                              `path:"topologies/@topology" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology) IsYANGGoStruct() {}

// NewTopology creates a new entry in the Topology list of the
// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology) NewTopology(MtId uint16) (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Topology == nil {
		t.Topology = make(map[uint16]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology)
	}

	key := MtId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Topology[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Topology", key)
	}

	t.Topology[key] = &NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology{
		MtId: &MtId,
	}

	return t.Topology[key], nil
}

// RenameTopology renames an entry in the list Topology within
// the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology) RenameTopology(oldK, newK uint16) error {
	if _, ok := t.Topology[newK]; ok {
		return fmt.Errorf("key %v already exists in Topology", newK)
	}

	e, ok := t.Topology[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Topology", oldK)
	}
	e.MtId = &newK

	t.Topology[newK] = e
	delete(t.Topology, oldK)
	return nil
}

// GetOrCreateTopologyMap returns the list (map) from NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology) GetOrCreateTopologyMap() map[uint16]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology {
	if t.Topology == nil {
		t.Topology = make(map[uint16]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology)
	}
	return t.Topology
}

// GetOrCreateTopology retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology) GetOrCreateTopology(MtId uint16) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology {

	key := MtId

	if v, ok := t.Topology[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTopology(MtId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTopology got unexpected error: %v", err))
	}
	return v
}

// GetTopology retrieves the value with the specified key from
// the Topology map field of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology) GetTopology(MtId uint16) *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology {

	if t == nil {
		return nil
	}

	key := MtId

	if lm, ok := t.Topology[key]; ok {
		return lm
	}
	return nil
}

// AppendTopology appends the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology struct to the
// list Topology of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology) AppendTopology(v *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology) error {
	if v.MtId == nil {
		return fmt.Errorf("invalid nil key received for MtId")
	}

	key := *v.MtId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Topology == nil {
		t.Topology = make(map[uint16]*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology)
	}

	if _, ok := t.Topology[key]; ok {
		return fmt.Errorf("duplicate key for list Topology %v", key)
	}

	t.Topology[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Topology {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/multi-topology/topologies/topology YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology struct {
	ΛMetadata   []ygot.Annotation     `path:"@" ygotAnnotation:"true"`
	Attributes  E_Topology_Attributes `path:"state/attributes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttributes []ygot.Annotation     `path:"state/@attributes" ygotAnnotation:"true"`
	MtId        *uint16               `path:"state/mt-id|mt-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛMtId       []ygot.Annotation     `path:"state/@mt-id|@mt-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology) IsYANGGoStruct() {}

// GetAttributes retrieves the value of the leaf Attributes from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Attributes is set, it can
// safely use t.GetAttributes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Attributes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology) GetAttributes() E_Topology_Attributes {
	if t == nil || t.Attributes == 0 {
		return 0
	}
	return t.Attributes
}

// GetMtId retrieves the value of the leaf MtId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MtId is set, it can
// safely use t.GetMtId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MtId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology) GetMtId() uint16 {
	if t == nil || t.MtId == nil {
		return 0
	}
	return *t.MtId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology) ΛListKeyMap() (map[string]interface{}, error) {
	if t.MtId == nil {
		return nil, fmt.Errorf("nil value for key MtId")
	}

	return map[string]interface{}{
		"mt-id": *t.MtId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_MultiTopology_Topology) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/nlpid YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Nlpid     []E_Nlpid_Nlpid   `path:"state/nlpid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNlpid    []ygot.Annotation `path:"state/@nlpid" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid) IsYANGGoStruct() {}

// GetNlpid retrieves the value of the leaf Nlpid from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Nlpid is set, it can
// safely use t.GetNlpid() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Nlpid == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid) GetNlpid() []E_Nlpid_Nlpid {
	if t == nil || t.Nlpid == nil {
		return nil
	}
	return t.Nlpid
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_Nlpid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/purge-oi YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi struct {
	ΛMetadata         []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ReceivedSystemId  *string           `path:"state/received-system-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReceivedSystemId []ygot.Annotation `path:"state/@received-system-id" ygotAnnotation:"true"`
	SourceSystemId    *string           `path:"state/source-system-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSourceSystemId   []ygot.Annotation `path:"state/@source-system-id" ygotAnnotation:"true"`
	SystemIdCount     *uint8            `path:"state/system-id-count" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSystemIdCount    []ygot.Annotation `path:"state/@system-id-count" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi) IsYANGGoStruct() {}

// GetReceivedSystemId retrieves the value of the leaf ReceivedSystemId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReceivedSystemId is set, it can
// safely use t.GetReceivedSystemId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReceivedSystemId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi) GetReceivedSystemId() string {
	if t == nil || t.ReceivedSystemId == nil {
		return ""
	}
	return *t.ReceivedSystemId
}

// GetSourceSystemId retrieves the value of the leaf SourceSystemId from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceSystemId is set, it can
// safely use t.GetSourceSystemId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceSystemId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi) GetSourceSystemId() string {
	if t == nil || t.SourceSystemId == nil {
		return ""
	}
	return *t.SourceSystemId
}

// GetSystemIdCount retrieves the value of the leaf SystemIdCount from the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemIdCount is set, it can
// safely use t.GetSystemIdCount() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemIdCount == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi) GetSystemIdCount() uint8 {
	if t == nil || t.SystemIdCount == nil {
		return 0
	}
	return *t.SystemIdCount
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_Tlv_PurgeOi) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/undefined-tlvs/undefined-tlv YANG schema element.
type NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint8            `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint8            `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type|@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv) IsYANGGoStruct() {}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv) GetLength() uint8 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv) GetType() uint8 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Type == nil {
		return nil, fmt.Errorf("nil value for key Type")
	}

	return map[string]interface{}{
		"type": *t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv.
func (*NetworkInstance_Protocol_Isis_Level_Lsp_UndefinedTlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_RoutePreference represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/route-preference YANG schema element.
type NetworkInstance_Protocol_Isis_Level_RoutePreference struct {
	ΛMetadata                []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ExternalRoutePreference  *uint32           `path:"config/external-route-preference" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExternalRoutePreference []ygot.Annotation `path:"config/@external-route-preference" ygotAnnotation:"true"`
	InternalRoutePreference  *uint32           `path:"config/internal-route-preference" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInternalRoutePreference []ygot.Annotation `path:"config/@internal-route-preference" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_RoutePreference implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_RoutePreference) IsYANGGoStruct() {}

// GetExternalRoutePreference retrieves the value of the leaf ExternalRoutePreference from the NetworkInstance_Protocol_Isis_Level_RoutePreference
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExternalRoutePreference is set, it can
// safely use t.GetExternalRoutePreference() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExternalRoutePreference == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_RoutePreference) GetExternalRoutePreference() uint32 {
	if t == nil || t.ExternalRoutePreference == nil {
		return 0
	}
	return *t.ExternalRoutePreference
}

// GetInternalRoutePreference retrieves the value of the leaf InternalRoutePreference from the NetworkInstance_Protocol_Isis_Level_RoutePreference
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InternalRoutePreference is set, it can
// safely use t.GetInternalRoutePreference() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InternalRoutePreference == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_RoutePreference) GetInternalRoutePreference() uint32 {
	if t == nil || t.InternalRoutePreference == nil {
		return 0
	}
	return *t.InternalRoutePreference
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_RoutePreference
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_RoutePreference) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_RoutePreference) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_RoutePreference"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_RoutePreference) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_RoutePreference) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_RoutePreference.
func (*NetworkInstance_Protocol_Isis_Level_RoutePreference) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_SystemLevelCounters represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/system-level-counters YANG schema element.
type NetworkInstance_Protocol_Isis_Level_SystemLevelCounters struct {
	ΛMetadata                   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AuthFails                   *uint32           `path:"state/auth-fails" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthFails                  []ygot.Annotation `path:"state/@auth-fails" ygotAnnotation:"true"`
	AuthTypeFails               *uint32           `path:"state/auth-type-fails" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthTypeFails              []ygot.Annotation `path:"state/@auth-type-fails" ygotAnnotation:"true"`
	CorruptedLsps               *uint32           `path:"state/corrupted-lsps" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCorruptedLsps              []ygot.Annotation `path:"state/@corrupted-lsps" ygotAnnotation:"true"`
	DatabaseOverloads           *uint32           `path:"state/database-overloads" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDatabaseOverloads          []ygot.Annotation `path:"state/@database-overloads" ygotAnnotation:"true"`
	ExceedMaxSeqNums            *uint32           `path:"state/exceed-max-seq-nums" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExceedMaxSeqNums           []ygot.Annotation `path:"state/@exceed-max-seq-nums" ygotAnnotation:"true"`
	IdLenMismatch               *uint32           `path:"state/id-len-mismatch" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIdLenMismatch              []ygot.Annotation `path:"state/@id-len-mismatch" ygotAnnotation:"true"`
	LspErrors                   *uint32           `path:"state/lsp-errors" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLspErrors                  []ygot.Annotation `path:"state/@lsp-errors" ygotAnnotation:"true"`
	ManualAddressDropFromAreas  *uint32           `path:"state/manual-address-drop-from-areas" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛManualAddressDropFromAreas []ygot.Annotation `path:"state/@manual-address-drop-from-areas" ygotAnnotation:"true"`
	MaxAreaAddressMismatches    *uint32           `path:"state/max-area-address-mismatches" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaxAreaAddressMismatches   []ygot.Annotation `path:"state/@max-area-address-mismatches" ygotAnnotation:"true"`
	OwnLspPurges                *uint32           `path:"state/own-lsp-purges" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOwnLspPurges               []ygot.Annotation `path:"state/@own-lsp-purges" ygotAnnotation:"true"`
	PartChanges                 *uint32           `path:"state/part-changes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPartChanges                []ygot.Annotation `path:"state/@part-changes" ygotAnnotation:"true"`
	SeqNumSkips                 *uint32           `path:"state/seq-num-skips" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSeqNumSkips                []ygot.Annotation `path:"state/@seq-num-skips" ygotAnnotation:"true"`
	SpfRuns                     *uint32           `path:"state/spf-runs" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSpfRuns                    []ygot.Annotation `path:"state/@spf-runs" ygotAnnotation:"true"`
	TotalLsps                   *uint32           `path:"state/total-lsps" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTotalLsps                  []ygot.Annotation `path:"state/@total-lsps" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_SystemLevelCounters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) IsYANGGoStruct() {}

// GetAuthFails retrieves the value of the leaf AuthFails from the NetworkInstance_Protocol_Isis_Level_SystemLevelCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthFails is set, it can
// safely use t.GetAuthFails() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthFails == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) GetAuthFails() uint32 {
	if t == nil || t.AuthFails == nil {
		return 0
	}
	return *t.AuthFails
}

// GetAuthTypeFails retrieves the value of the leaf AuthTypeFails from the NetworkInstance_Protocol_Isis_Level_SystemLevelCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthTypeFails is set, it can
// safely use t.GetAuthTypeFails() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthTypeFails == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) GetAuthTypeFails() uint32 {
	if t == nil || t.AuthTypeFails == nil {
		return 0
	}
	return *t.AuthTypeFails
}

// GetCorruptedLsps retrieves the value of the leaf CorruptedLsps from the NetworkInstance_Protocol_Isis_Level_SystemLevelCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CorruptedLsps is set, it can
// safely use t.GetCorruptedLsps() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CorruptedLsps == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) GetCorruptedLsps() uint32 {
	if t == nil || t.CorruptedLsps == nil {
		return 0
	}
	return *t.CorruptedLsps
}

// GetDatabaseOverloads retrieves the value of the leaf DatabaseOverloads from the NetworkInstance_Protocol_Isis_Level_SystemLevelCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DatabaseOverloads is set, it can
// safely use t.GetDatabaseOverloads() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DatabaseOverloads == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) GetDatabaseOverloads() uint32 {
	if t == nil || t.DatabaseOverloads == nil {
		return 0
	}
	return *t.DatabaseOverloads
}

// GetExceedMaxSeqNums retrieves the value of the leaf ExceedMaxSeqNums from the NetworkInstance_Protocol_Isis_Level_SystemLevelCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExceedMaxSeqNums is set, it can
// safely use t.GetExceedMaxSeqNums() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExceedMaxSeqNums == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) GetExceedMaxSeqNums() uint32 {
	if t == nil || t.ExceedMaxSeqNums == nil {
		return 0
	}
	return *t.ExceedMaxSeqNums
}

// GetIdLenMismatch retrieves the value of the leaf IdLenMismatch from the NetworkInstance_Protocol_Isis_Level_SystemLevelCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IdLenMismatch is set, it can
// safely use t.GetIdLenMismatch() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IdLenMismatch == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) GetIdLenMismatch() uint32 {
	if t == nil || t.IdLenMismatch == nil {
		return 0
	}
	return *t.IdLenMismatch
}

// GetLspErrors retrieves the value of the leaf LspErrors from the NetworkInstance_Protocol_Isis_Level_SystemLevelCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LspErrors is set, it can
// safely use t.GetLspErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LspErrors == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) GetLspErrors() uint32 {
	if t == nil || t.LspErrors == nil {
		return 0
	}
	return *t.LspErrors
}

// GetManualAddressDropFromAreas retrieves the value of the leaf ManualAddressDropFromAreas from the NetworkInstance_Protocol_Isis_Level_SystemLevelCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ManualAddressDropFromAreas is set, it can
// safely use t.GetManualAddressDropFromAreas() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ManualAddressDropFromAreas == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) GetManualAddressDropFromAreas() uint32 {
	if t == nil || t.ManualAddressDropFromAreas == nil {
		return 0
	}
	return *t.ManualAddressDropFromAreas
}

// GetMaxAreaAddressMismatches retrieves the value of the leaf MaxAreaAddressMismatches from the NetworkInstance_Protocol_Isis_Level_SystemLevelCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxAreaAddressMismatches is set, it can
// safely use t.GetMaxAreaAddressMismatches() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxAreaAddressMismatches == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) GetMaxAreaAddressMismatches() uint32 {
	if t == nil || t.MaxAreaAddressMismatches == nil {
		return 0
	}
	return *t.MaxAreaAddressMismatches
}

// GetOwnLspPurges retrieves the value of the leaf OwnLspPurges from the NetworkInstance_Protocol_Isis_Level_SystemLevelCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OwnLspPurges is set, it can
// safely use t.GetOwnLspPurges() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OwnLspPurges == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) GetOwnLspPurges() uint32 {
	if t == nil || t.OwnLspPurges == nil {
		return 0
	}
	return *t.OwnLspPurges
}

// GetPartChanges retrieves the value of the leaf PartChanges from the NetworkInstance_Protocol_Isis_Level_SystemLevelCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PartChanges is set, it can
// safely use t.GetPartChanges() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PartChanges == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) GetPartChanges() uint32 {
	if t == nil || t.PartChanges == nil {
		return 0
	}
	return *t.PartChanges
}

// GetSeqNumSkips retrieves the value of the leaf SeqNumSkips from the NetworkInstance_Protocol_Isis_Level_SystemLevelCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SeqNumSkips is set, it can
// safely use t.GetSeqNumSkips() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SeqNumSkips == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) GetSeqNumSkips() uint32 {
	if t == nil || t.SeqNumSkips == nil {
		return 0
	}
	return *t.SeqNumSkips
}

// GetSpfRuns retrieves the value of the leaf SpfRuns from the NetworkInstance_Protocol_Isis_Level_SystemLevelCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SpfRuns is set, it can
// safely use t.GetSpfRuns() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SpfRuns == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) GetSpfRuns() uint32 {
	if t == nil || t.SpfRuns == nil {
		return 0
	}
	return *t.SpfRuns
}

// GetTotalLsps retrieves the value of the leaf TotalLsps from the NetworkInstance_Protocol_Isis_Level_SystemLevelCounters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalLsps is set, it can
// safely use t.GetTotalLsps() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalLsps == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) GetTotalLsps() uint32 {
	if t == nil || t.TotalLsps == nil {
		return 0
	}
	return *t.TotalLsps
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_SystemLevelCounters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_SystemLevelCounters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_SystemLevelCounters.
func (*NetworkInstance_Protocol_Isis_Level_SystemLevelCounters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Isis_Level_TrafficEngineering represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/levels/level/traffic-engineering YANG schema element.
type NetworkInstance_Protocol_Isis_Level_TrafficEngineering struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled       *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled      []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
	Ipv4RouterId  *string           `path:"config/ipv4-router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpv4RouterId []ygot.Annotation `path:"config/@ipv4-router-id" ygotAnnotation:"true"`
	Ipv6RouterId  *string           `path:"config/ipv6-router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpv6RouterId []ygot.Annotation `path:"config/@ipv6-router-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Isis_Level_TrafficEngineering implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Isis_Level_TrafficEngineering) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Isis_Level_TrafficEngineering
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_TrafficEngineering) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetIpv4RouterId retrieves the value of the leaf Ipv4RouterId from the NetworkInstance_Protocol_Isis_Level_TrafficEngineering
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ipv4RouterId is set, it can
// safely use t.GetIpv4RouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ipv4RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_TrafficEngineering) GetIpv4RouterId() string {
	if t == nil || t.Ipv4RouterId == nil {
		return ""
	}
	return *t.Ipv4RouterId
}

// GetIpv6RouterId retrieves the value of the leaf Ipv6RouterId from the NetworkInstance_Protocol_Isis_Level_TrafficEngineering
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ipv6RouterId is set, it can
// safely use t.GetIpv6RouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ipv6RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Isis_Level_TrafficEngineering) GetIpv6RouterId() string {
	if t == nil || t.Ipv6RouterId == nil {
		return ""
	}
	return *t.Ipv6RouterId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Isis_Level_TrafficEngineering
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Isis_Level_TrafficEngineering) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_TrafficEngineering) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Isis_Level_TrafficEngineering"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Isis_Level_TrafficEngineering) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Isis_Level_TrafficEngineering) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Isis_Level_TrafficEngineering.
func (*NetworkInstance_Protocol_Isis_Level_TrafficEngineering) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2 represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2 YANG schema element.
type NetworkInstance_Protocol_Ospfv2 struct {
	ΛMetadata []ygot.Annotation                                                                               `path:"@" ygotAnnotation:"true"`
	Area      map[NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union]*NetworkInstance_Protocol_Ospfv2_Area `path:"areas/area" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛArea     []ygot.Annotation                                                                               `path:"areas/@area" ygotAnnotation:"true"`
	Global    *NetworkInstance_Protocol_Ospfv2_Global                                                         `path:"global" module:"openconfig-network-instance"`
	ΛGlobal   []ygot.Annotation                                                                               `path:"@global" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2) IsYANGGoStruct() {}

// NewArea creates a new entry in the Area list of the
// NetworkInstance_Protocol_Ospfv2 struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Ospfv2) NewArea(Identifier NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union) (*NetworkInstance_Protocol_Ospfv2_Area, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Area == nil {
		t.Area = make(map[NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union]*NetworkInstance_Protocol_Ospfv2_Area)
	}

	key := Identifier

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Area[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Area", key)
	}

	t.Area[key] = &NetworkInstance_Protocol_Ospfv2_Area{
		Identifier: Identifier,
	}

	return t.Area[key], nil
}

// RenameArea renames an entry in the list Area within
// the NetworkInstance_Protocol_Ospfv2 struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Ospfv2) RenameArea(oldK, newK NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union) error {
	if _, ok := t.Area[newK]; ok {
		return fmt.Errorf("key %v already exists in Area", newK)
	}

	e, ok := t.Area[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Area", oldK)
	}
	e.Identifier = newK

	t.Area[newK] = e
	delete(t.Area, oldK)
	return nil
}

// GetOrCreateAreaMap returns the list (map) from NetworkInstance_Protocol_Ospfv2.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Ospfv2) GetOrCreateAreaMap() map[NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union]*NetworkInstance_Protocol_Ospfv2_Area {
	if t.Area == nil {
		t.Area = make(map[NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union]*NetworkInstance_Protocol_Ospfv2_Area)
	}
	return t.Area
}

// GetOrCreateArea retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Ospfv2. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Ospfv2) GetOrCreateArea(Identifier NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union) *NetworkInstance_Protocol_Ospfv2_Area {

	key := Identifier

	if v, ok := t.Area[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewArea(Identifier)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateArea got unexpected error: %v", err))
	}
	return v
}

// GetArea retrieves the value with the specified key from
// the Area map field of NetworkInstance_Protocol_Ospfv2. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2) GetArea(Identifier NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union) *NetworkInstance_Protocol_Ospfv2_Area {

	if t == nil {
		return nil
	}

	key := Identifier

	if lm, ok := t.Area[key]; ok {
		return lm
	}
	return nil
}

// AppendArea appends the supplied NetworkInstance_Protocol_Ospfv2_Area struct to the
// list Area of NetworkInstance_Protocol_Ospfv2. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Ospfv2_Area already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Ospfv2) AppendArea(v *NetworkInstance_Protocol_Ospfv2_Area) error {
	key := v.Identifier

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Area == nil {
		t.Area = make(map[NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union]*NetworkInstance_Protocol_Ospfv2_Area)
	}

	if _, ok := t.Area[key]; ok {
		return fmt.Errorf("duplicate key for list Area %v", key)
	}

	t.Area[key] = v
	return nil
}

// GetOrCreateGlobal retrieves the value of the Global field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2) GetOrCreateGlobal() *NetworkInstance_Protocol_Ospfv2_Global {
	if t.Global != nil {
		return t.Global
	}
	t.Global = &NetworkInstance_Protocol_Ospfv2_Global{}
	return t.Global
}

// GetGlobal returns the value of the Global struct pointer
// from NetworkInstance_Protocol_Ospfv2. If the receiver or the field Global is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2) GetGlobal() *NetworkInstance_Protocol_Ospfv2_Global {
	if t != nil && t.Global != nil {
		return t.Global
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Global.PopulateDefaults()
	for _, e := range t.Area {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2.
func (*NetworkInstance_Protocol_Ospfv2) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area struct {
	ΛMetadata    []ygot.Annotation                                            `path:"@" ygotAnnotation:"true"`
	Identifier   NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union        `path:"config/identifier|identifier" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIdentifier  []ygot.Annotation                                            `path:"config/@identifier|@identifier" ygotAnnotation:"true"`
	Interface    map[string]*NetworkInstance_Protocol_Ospfv2_Area_Interface   `path:"interfaces/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface   []ygot.Annotation                                            `path:"interfaces/@interface" ygotAnnotation:"true"`
	Lsdb         *NetworkInstance_Protocol_Ospfv2_Area_Lsdb                   `path:"lsdb" module:"openconfig-network-instance"`
	ΛLsdb        []ygot.Annotation                                            `path:"@lsdb" ygotAnnotation:"true"`
	Mpls         *NetworkInstance_Protocol_Ospfv2_Area_Mpls                   `path:"mpls" module:"openconfig-network-instance"`
	ΛMpls        []ygot.Annotation                                            `path:"@mpls" ygotAnnotation:"true"`
	VirtualLink  map[string]*NetworkInstance_Protocol_Ospfv2_Area_VirtualLink `path:"virtual-links/virtual-link" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛVirtualLink []ygot.Annotation                                            `path:"virtual-links/@virtual-link" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// NetworkInstance_Protocol_Ospfv2_Area struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Ospfv2_Area) NewInterface(Id string) (*NetworkInstance_Protocol_Ospfv2_Area_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Protocol_Ospfv2_Area_Interface)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &NetworkInstance_Protocol_Ospfv2_Area_Interface{
		Id: &Id,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the NetworkInstance_Protocol_Ospfv2_Area struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Ospfv2_Area) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.Id = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from NetworkInstance_Protocol_Ospfv2_Area.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Ospfv2_Area) GetOrCreateInterfaceMap() map[string]*NetworkInstance_Protocol_Ospfv2_Area_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Protocol_Ospfv2_Area_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Ospfv2_Area. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Ospfv2_Area) GetOrCreateInterface(Id string) *NetworkInstance_Protocol_Ospfv2_Area_Interface {

	key := Id

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of NetworkInstance_Protocol_Ospfv2_Area. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area) GetInterface(Id string) *NetworkInstance_Protocol_Ospfv2_Area_Interface {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied NetworkInstance_Protocol_Ospfv2_Area_Interface struct to the
// list Interface of NetworkInstance_Protocol_Ospfv2_Area. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Ospfv2_Area_Interface already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Ospfv2_Area) AppendInterface(v *NetworkInstance_Protocol_Ospfv2_Area_Interface) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Protocol_Ospfv2_Area_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// NewVirtualLink creates a new entry in the VirtualLink list of the
// NetworkInstance_Protocol_Ospfv2_Area struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Ospfv2_Area) NewVirtualLink(RemoteRouterId string) (*NetworkInstance_Protocol_Ospfv2_Area_VirtualLink, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.VirtualLink == nil {
		t.VirtualLink = make(map[string]*NetworkInstance_Protocol_Ospfv2_Area_VirtualLink)
	}

	key := RemoteRouterId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.VirtualLink[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list VirtualLink", key)
	}

	t.VirtualLink[key] = &NetworkInstance_Protocol_Ospfv2_Area_VirtualLink{
		RemoteRouterId: &RemoteRouterId,
	}

	return t.VirtualLink[key], nil
}

// RenameVirtualLink renames an entry in the list VirtualLink within
// the NetworkInstance_Protocol_Ospfv2_Area struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Ospfv2_Area) RenameVirtualLink(oldK, newK string) error {
	if _, ok := t.VirtualLink[newK]; ok {
		return fmt.Errorf("key %v already exists in VirtualLink", newK)
	}

	e, ok := t.VirtualLink[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in VirtualLink", oldK)
	}
	e.RemoteRouterId = &newK

	t.VirtualLink[newK] = e
	delete(t.VirtualLink, oldK)
	return nil
}

// GetOrCreateVirtualLinkMap returns the list (map) from NetworkInstance_Protocol_Ospfv2_Area.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Ospfv2_Area) GetOrCreateVirtualLinkMap() map[string]*NetworkInstance_Protocol_Ospfv2_Area_VirtualLink {
	if t.VirtualLink == nil {
		t.VirtualLink = make(map[string]*NetworkInstance_Protocol_Ospfv2_Area_VirtualLink)
	}
	return t.VirtualLink
}

// GetOrCreateVirtualLink retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Ospfv2_Area. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Ospfv2_Area) GetOrCreateVirtualLink(RemoteRouterId string) *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink {

	key := RemoteRouterId

	if v, ok := t.VirtualLink[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewVirtualLink(RemoteRouterId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateVirtualLink got unexpected error: %v", err))
	}
	return v
}

// GetVirtualLink retrieves the value with the specified key from
// the VirtualLink map field of NetworkInstance_Protocol_Ospfv2_Area. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area) GetVirtualLink(RemoteRouterId string) *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink {

	if t == nil {
		return nil
	}

	key := RemoteRouterId

	if lm, ok := t.VirtualLink[key]; ok {
		return lm
	}
	return nil
}

// AppendVirtualLink appends the supplied NetworkInstance_Protocol_Ospfv2_Area_VirtualLink struct to the
// list VirtualLink of NetworkInstance_Protocol_Ospfv2_Area. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Ospfv2_Area_VirtualLink already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Ospfv2_Area) AppendVirtualLink(v *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) error {
	if v.RemoteRouterId == nil {
		return fmt.Errorf("invalid nil key received for RemoteRouterId")
	}

	key := *v.RemoteRouterId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.VirtualLink == nil {
		t.VirtualLink = make(map[string]*NetworkInstance_Protocol_Ospfv2_Area_VirtualLink)
	}

	if _, ok := t.VirtualLink[key]; ok {
		return fmt.Errorf("duplicate key for list VirtualLink %v", key)
	}

	t.VirtualLink[key] = v
	return nil
}

// GetOrCreateLsdb retrieves the value of the Lsdb field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area) GetOrCreateLsdb() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb {
	if t.Lsdb != nil {
		return t.Lsdb
	}
	t.Lsdb = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb{}
	return t.Lsdb
}

// GetOrCreateMpls retrieves the value of the Mpls field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area) GetOrCreateMpls() *NetworkInstance_Protocol_Ospfv2_Area_Mpls {
	if t.Mpls != nil {
		return t.Mpls
	}
	t.Mpls = &NetworkInstance_Protocol_Ospfv2_Area_Mpls{}
	return t.Mpls
}

// GetLsdb returns the value of the Lsdb struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area. If the receiver or the field Lsdb is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area) GetLsdb() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb {
	if t != nil && t.Lsdb != nil {
		return t.Lsdb
	}
	return nil
}

// GetMpls returns the value of the Mpls struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area. If the receiver or the field Mpls is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area) GetMpls() *NetworkInstance_Protocol_Ospfv2_Area_Mpls {
	if t != nil && t.Mpls != nil {
		return t.Mpls
	}
	return nil
}

// GetIdentifier retrieves the value of the leaf Identifier from the NetworkInstance_Protocol_Ospfv2_Area
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Identifier is set, it can
// safely use t.GetIdentifier() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Identifier == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area) GetIdentifier() NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union {
	if t == nil || t.Identifier == nil {
		return nil
	}
	return t.Identifier
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Lsdb.PopulateDefaults()
	t.Mpls.PopulateDefaults()
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
	for _, e := range t.VirtualLink {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Ospfv2_Area struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Ospfv2_Area) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"identifier": t.Identifier,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area.
func (*NetworkInstance_Protocol_Ospfv2_Area) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/config/identifier within the YANG schema.
// Union type can be one of [UnionString, UnionUint32].
type NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union interface {
	// Union type can be one of [UnionString, UnionUint32]
	Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union()
}

// Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union() {}

// Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union ensures that UnionUint32
// implements the NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union() {}

// To_NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Ospfv2_Area) To_NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union(i interface{}) (NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union, unknown union type, got: %T, want any of [string, uint32]", i, i)
}

// NetworkInstance_Protocol_Ospfv2_Area_Interface represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/interfaces/interface YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Interface struct {
	ΛMetadata                  []ygot.Annotation                                                   `path:"@" ygotAnnotation:"true"`
	AuthenticationType         *string                                                             `path:"config/authentication-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthenticationType        []ygot.Annotation                                                   `path:"config/@authentication-type" ygotAnnotation:"true"`
	EnableBfd                  *NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd           `path:"enable-bfd" module:"openconfig-network-instance"`
	ΛEnableBfd                 []ygot.Annotation                                                   `path:"@enable-bfd" ygotAnnotation:"true"`
	HideNetwork                *bool                                                               `path:"config/hide-network" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHideNetwork               []ygot.Annotation                                                   `path:"config/@hide-network" ygotAnnotation:"true"`
	Id                         *string                                                             `path:"config/id|id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛId                        []ygot.Annotation                                                   `path:"config/@id|@id" ygotAnnotation:"true"`
	InterfaceRef               *NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef        `path:"interface-ref" module:"openconfig-network-instance"`
	ΛInterfaceRef              []ygot.Annotation                                                   `path:"@interface-ref" ygotAnnotation:"true"`
	LsaFilter                  *NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter           `path:"lsa-filter" module:"openconfig-network-instance"`
	ΛLsaFilter                 []ygot.Annotation                                                   `path:"@lsa-filter" ygotAnnotation:"true"`
	Metric                     *uint16                                                             `path:"config/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric                    []ygot.Annotation                                                   `path:"config/@metric" ygotAnnotation:"true"`
	Mpls                       *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls                `path:"mpls" module:"openconfig-network-instance"`
	ΛMpls                      []ygot.Annotation                                                   `path:"@mpls" ygotAnnotation:"true"`
	MultiAreaAdjacencyPrimary  *bool                                                               `path:"config/multi-area-adjacency-primary" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMultiAreaAdjacencyPrimary []ygot.Annotation                                                   `path:"config/@multi-area-adjacency-primary" ygotAnnotation:"true"`
	Neighbor                   map[string]*NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor `path:"neighbors/neighbor" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighbor                  []ygot.Annotation                                                   `path:"neighbors/@neighbor" ygotAnnotation:"true"`
	NetworkType                E_OspfTypes_OSPF_NETWORK_TYPE                                       `path:"config/network-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNetworkType               []ygot.Annotation                                                   `path:"config/@network-type" ygotAnnotation:"true"`
	Passive                    *bool                                                               `path:"config/passive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPassive                   []ygot.Annotation                                                   `path:"config/@passive" ygotAnnotation:"true"`
	Priority                   *uint8                                                              `path:"config/priority" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPriority                  []ygot.Annotation                                                   `path:"config/@priority" ygotAnnotation:"true"`
	Timers                     *NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers              `path:"timers" module:"openconfig-network-instance"`
	ΛTimers                    []ygot.Annotation                                                   `path:"@timers" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Interface) IsYANGGoStruct() {}

// NewNeighbor creates a new entry in the Neighbor list of the
// NetworkInstance_Protocol_Ospfv2_Area_Interface struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) NewNeighbor(RouterId string) (*NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor)
	}

	key := RouterId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor{
		RouterId: &RouterId,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the NetworkInstance_Protocol_Ospfv2_Area_Interface struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.RouterId = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from NetworkInstance_Protocol_Ospfv2_Area_Interface.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetOrCreateNeighborMap() map[string]*NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Ospfv2_Area_Interface. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetOrCreateNeighbor(RouterId string) *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor {

	key := RouterId

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(RouterId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of NetworkInstance_Protocol_Ospfv2_Area_Interface. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetNeighbor(RouterId string) *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor {

	if t == nil {
		return nil
	}

	key := RouterId

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor struct to the
// list Neighbor of NetworkInstance_Protocol_Ospfv2_Area_Interface. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) AppendNeighbor(v *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) error {
	if v.RouterId == nil {
		return fmt.Errorf("invalid nil key received for RouterId")
	}

	key := *v.RouterId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// GetOrCreateEnableBfd retrieves the value of the EnableBfd field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetOrCreateEnableBfd() *NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd {
	if t.EnableBfd != nil {
		return t.EnableBfd
	}
	t.EnableBfd = &NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd{}
	return t.EnableBfd
}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetOrCreateInterfaceRef() *NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef{}
	return t.InterfaceRef
}

// GetOrCreateLsaFilter retrieves the value of the LsaFilter field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetOrCreateLsaFilter() *NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter {
	if t.LsaFilter != nil {
		return t.LsaFilter
	}
	t.LsaFilter = &NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter{}
	return t.LsaFilter
}

// GetOrCreateMpls retrieves the value of the Mpls field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetOrCreateMpls() *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls {
	if t.Mpls != nil {
		return t.Mpls
	}
	t.Mpls = &NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls{}
	return t.Mpls
}

// GetOrCreateTimers retrieves the value of the Timers field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetOrCreateTimers() *NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers {
	if t.Timers != nil {
		return t.Timers
	}
	t.Timers = &NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers{}
	return t.Timers
}

// GetEnableBfd returns the value of the EnableBfd struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Interface. If the receiver or the field EnableBfd is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetEnableBfd() *NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd {
	if t != nil && t.EnableBfd != nil {
		return t.EnableBfd
	}
	return nil
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Interface. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetInterfaceRef() *NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetLsaFilter returns the value of the LsaFilter struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Interface. If the receiver or the field LsaFilter is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetLsaFilter() *NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter {
	if t != nil && t.LsaFilter != nil {
		return t.LsaFilter
	}
	return nil
}

// GetMpls returns the value of the Mpls struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Interface. If the receiver or the field Mpls is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetMpls() *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls {
	if t != nil && t.Mpls != nil {
		return t.Mpls
	}
	return nil
}

// GetTimers returns the value of the Timers struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Interface. If the receiver or the field Timers is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetTimers() *NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers {
	if t != nil && t.Timers != nil {
		return t.Timers
	}
	return nil
}

// GetAuthenticationType retrieves the value of the leaf AuthenticationType from the NetworkInstance_Protocol_Ospfv2_Area_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthenticationType is set, it can
// safely use t.GetAuthenticationType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthenticationType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetAuthenticationType() string {
	if t == nil || t.AuthenticationType == nil {
		return ""
	}
	return *t.AuthenticationType
}

// GetHideNetwork retrieves the value of the leaf HideNetwork from the NetworkInstance_Protocol_Ospfv2_Area_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HideNetwork is set, it can
// safely use t.GetHideNetwork() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HideNetwork == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetHideNetwork() bool {
	if t == nil || t.HideNetwork == nil {
		return false
	}
	return *t.HideNetwork
}

// GetId retrieves the value of the leaf Id from the NetworkInstance_Protocol_Ospfv2_Area_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetId() string {
	if t == nil || t.Id == nil {
		return ""
	}
	return *t.Id
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Ospfv2_Area_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetMetric() uint16 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetMultiAreaAdjacencyPrimary retrieves the value of the leaf MultiAreaAdjacencyPrimary from the NetworkInstance_Protocol_Ospfv2_Area_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MultiAreaAdjacencyPrimary is set, it can
// safely use t.GetMultiAreaAdjacencyPrimary() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MultiAreaAdjacencyPrimary == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetMultiAreaAdjacencyPrimary() bool {
	if t == nil || t.MultiAreaAdjacencyPrimary == nil {
		return true
	}
	return *t.MultiAreaAdjacencyPrimary
}

// GetNetworkType retrieves the value of the leaf NetworkType from the NetworkInstance_Protocol_Ospfv2_Area_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NetworkType is set, it can
// safely use t.GetNetworkType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NetworkType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetNetworkType() E_OspfTypes_OSPF_NETWORK_TYPE {
	if t == nil || t.NetworkType == 0 {
		return 0
	}
	return t.NetworkType
}

// GetPassive retrieves the value of the leaf Passive from the NetworkInstance_Protocol_Ospfv2_Area_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Passive is set, it can
// safely use t.GetPassive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Passive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetPassive() bool {
	if t == nil || t.Passive == nil {
		return false
	}
	return *t.Passive
}

// GetPriority retrieves the value of the leaf Priority from the NetworkInstance_Protocol_Ospfv2_Area_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) GetPriority() uint8 {
	if t == nil || t.Priority == nil {
		return 0
	}
	return *t.Priority
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MultiAreaAdjacencyPrimary == nil {
		var v bool = true
		t.MultiAreaAdjacencyPrimary = &v
	}
	t.EnableBfd.PopulateDefaults()
	t.InterfaceRef.PopulateDefaults()
	t.LsaFilter.PopulateDefaults()
	t.Mpls.PopulateDefaults()
	t.Timers.PopulateDefaults()
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Ospfv2_Area_Interface struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Interface.
func (*NetworkInstance_Protocol_Ospfv2_Area_Interface) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/interfaces/interface/enable-bfd YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd.
func (*NetworkInstance_Protocol_Ospfv2_Area_Interface_EnableBfd) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/interfaces/interface/interface-ref YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef.
func (*NetworkInstance_Protocol_Ospfv2_Area_Interface_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/interfaces/interface/lsa-filter YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	All       *bool             `path:"config/all" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAll      []ygot.Annotation `path:"config/@all" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter) IsYANGGoStruct() {}

// GetAll retrieves the value of the leaf All from the NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if All is set, it can
// safely use t.GetAll() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.All == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter) GetAll() bool {
	if t == nil || t.All == nil {
		return false
	}
	return *t.All
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter.
func (*NetworkInstance_Protocol_Ospfv2_Area_Interface_LsaFilter) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/interfaces/interface/mpls YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls struct {
	ΛMetadata                 []ygot.Annotation                                               `path:"@" ygotAnnotation:"true"`
	IgpLdpSync                *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync `path:"igp-ldp-sync" module:"openconfig-network-instance"`
	ΛIgpLdpSync               []ygot.Annotation                                               `path:"@igp-ldp-sync" ygotAnnotation:"true"`
	TrafficEngineeringMetric  *uint32                                                         `path:"config/traffic-engineering-metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTrafficEngineeringMetric []ygot.Annotation                                               `path:"config/@traffic-engineering-metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls) IsYANGGoStruct() {}

// GetOrCreateIgpLdpSync retrieves the value of the IgpLdpSync field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls) GetOrCreateIgpLdpSync() *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync {
	if t.IgpLdpSync != nil {
		return t.IgpLdpSync
	}
	t.IgpLdpSync = &NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync{}
	return t.IgpLdpSync
}

// GetIgpLdpSync returns the value of the IgpLdpSync struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls. If the receiver or the field IgpLdpSync is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls) GetIgpLdpSync() *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync {
	if t != nil && t.IgpLdpSync != nil {
		return t.IgpLdpSync
	}
	return nil
}

// GetTrafficEngineeringMetric retrieves the value of the leaf TrafficEngineeringMetric from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TrafficEngineeringMetric is set, it can
// safely use t.GetTrafficEngineeringMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TrafficEngineeringMetric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls) GetTrafficEngineeringMetric() uint32 {
	if t == nil || t.TrafficEngineeringMetric == nil {
		return 0
	}
	return *t.TrafficEngineeringMetric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.IgpLdpSync.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls.
func (*NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/interfaces/interface/mpls/igp-ldp-sync YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled             *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled            []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
	PostSessionUpDelay  *uint32           `path:"config/post-session-up-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPostSessionUpDelay []ygot.Annotation `path:"config/@post-session-up-delay" ygotAnnotation:"true"`
	Synchronized        *bool             `path:"state/synchronized" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSynchronized       []ygot.Annotation `path:"state/@synchronized" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetPostSessionUpDelay retrieves the value of the leaf PostSessionUpDelay from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PostSessionUpDelay is set, it can
// safely use t.GetPostSessionUpDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PostSessionUpDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync) GetPostSessionUpDelay() uint32 {
	if t == nil || t.PostSessionUpDelay == nil {
		return 0
	}
	return *t.PostSessionUpDelay
}

// GetSynchronized retrieves the value of the leaf Synchronized from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Synchronized is set, it can
// safely use t.GetSynchronized() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Synchronized == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync) GetSynchronized() bool {
	if t == nil || t.Synchronized == nil {
		return false
	}
	return *t.Synchronized
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync.
func (*NetworkInstance_Protocol_Ospfv2_Area_Interface_Mpls_IgpLdpSync) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/interfaces/interface/neighbors/neighbor YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor struct {
	ΛMetadata                  []ygot.Annotation               `path:"@" ygotAnnotation:"true"`
	AdjacencyState             E_OspfTypes_OSPF_NEIGHBOR_STATE `path:"state/adjacency-state" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdjacencyState            []ygot.Annotation               `path:"state/@adjacency-state" ygotAnnotation:"true"`
	BackupDesignatedRouter     *string                         `path:"state/backup-designated-router" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBackupDesignatedRouter    []ygot.Annotation               `path:"state/@backup-designated-router" ygotAnnotation:"true"`
	DeadTime                   *uint64                         `path:"state/dead-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDeadTime                  []ygot.Annotation               `path:"state/@dead-time" ygotAnnotation:"true"`
	DesignatedRouter           *string                         `path:"state/designated-router" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDesignatedRouter          []ygot.Annotation               `path:"state/@designated-router" ygotAnnotation:"true"`
	LastEstablishedTime        *uint64                         `path:"state/last-established-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastEstablishedTime       []ygot.Annotation               `path:"state/@last-established-time" ygotAnnotation:"true"`
	Metric                     *uint16                         `path:"config/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric                    []ygot.Annotation               `path:"config/@metric" ygotAnnotation:"true"`
	OptionalCapabilities       *string                         `path:"state/optional-capabilities" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptionalCapabilities      []ygot.Annotation               `path:"state/@optional-capabilities" ygotAnnotation:"true"`
	Priority                   *uint8                          `path:"state/priority" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPriority                  []ygot.Annotation               `path:"state/@priority" ygotAnnotation:"true"`
	RetransmissionQueueLength  *uint32                         `path:"state/retransmission-queue-length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRetransmissionQueueLength []ygot.Annotation               `path:"state/@retransmission-queue-length" ygotAnnotation:"true"`
	RouterId                   *string                         `path:"config/router-id|router-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛRouterId                  []ygot.Annotation               `path:"config/@router-id|@router-id" ygotAnnotation:"true"`
	StateChanges               *uint32                         `path:"state/state-changes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛStateChanges              []ygot.Annotation               `path:"state/@state-changes" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) IsYANGGoStruct() {}

// GetAdjacencyState retrieves the value of the leaf AdjacencyState from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdjacencyState is set, it can
// safely use t.GetAdjacencyState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdjacencyState == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) GetAdjacencyState() E_OspfTypes_OSPF_NEIGHBOR_STATE {
	if t == nil || t.AdjacencyState == 0 {
		return 0
	}
	return t.AdjacencyState
}

// GetBackupDesignatedRouter retrieves the value of the leaf BackupDesignatedRouter from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BackupDesignatedRouter is set, it can
// safely use t.GetBackupDesignatedRouter() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BackupDesignatedRouter == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) GetBackupDesignatedRouter() string {
	if t == nil || t.BackupDesignatedRouter == nil {
		return ""
	}
	return *t.BackupDesignatedRouter
}

// GetDeadTime retrieves the value of the leaf DeadTime from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DeadTime is set, it can
// safely use t.GetDeadTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DeadTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) GetDeadTime() uint64 {
	if t == nil || t.DeadTime == nil {
		return 0
	}
	return *t.DeadTime
}

// GetDesignatedRouter retrieves the value of the leaf DesignatedRouter from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedRouter is set, it can
// safely use t.GetDesignatedRouter() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedRouter == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) GetDesignatedRouter() string {
	if t == nil || t.DesignatedRouter == nil {
		return ""
	}
	return *t.DesignatedRouter
}

// GetLastEstablishedTime retrieves the value of the leaf LastEstablishedTime from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastEstablishedTime is set, it can
// safely use t.GetLastEstablishedTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastEstablishedTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) GetLastEstablishedTime() uint64 {
	if t == nil || t.LastEstablishedTime == nil {
		return 0
	}
	return *t.LastEstablishedTime
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) GetMetric() uint16 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetOptionalCapabilities retrieves the value of the leaf OptionalCapabilities from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OptionalCapabilities is set, it can
// safely use t.GetOptionalCapabilities() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OptionalCapabilities == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) GetOptionalCapabilities() string {
	if t == nil || t.OptionalCapabilities == nil {
		return ""
	}
	return *t.OptionalCapabilities
}

// GetPriority retrieves the value of the leaf Priority from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) GetPriority() uint8 {
	if t == nil || t.Priority == nil {
		return 0
	}
	return *t.Priority
}

// GetRetransmissionQueueLength retrieves the value of the leaf RetransmissionQueueLength from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RetransmissionQueueLength is set, it can
// safely use t.GetRetransmissionQueueLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RetransmissionQueueLength == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) GetRetransmissionQueueLength() uint32 {
	if t == nil || t.RetransmissionQueueLength == nil {
		return 0
	}
	return *t.RetransmissionQueueLength
}

// GetRouterId retrieves the value of the leaf RouterId from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterId is set, it can
// safely use t.GetRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) GetRouterId() string {
	if t == nil || t.RouterId == nil {
		return ""
	}
	return *t.RouterId
}

// GetStateChanges retrieves the value of the leaf StateChanges from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if StateChanges is set, it can
// safely use t.GetStateChanges() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.StateChanges == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) GetStateChanges() uint32 {
	if t == nil || t.StateChanges == nil {
		return 0
	}
	return *t.StateChanges
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.RouterId == nil {
		return nil, fmt.Errorf("nil value for key RouterId")
	}

	return map[string]interface{}{
		"router-id": *t.RouterId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor.
func (*NetworkInstance_Protocol_Ospfv2_Area_Interface_Neighbor) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/interfaces/interface/timers YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers struct {
	ΛMetadata               []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	DeadInterval            *uint32           `path:"config/dead-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDeadInterval           []ygot.Annotation `path:"config/@dead-interval" ygotAnnotation:"true"`
	HelloInterval           *uint32           `path:"config/hello-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloInterval          []ygot.Annotation `path:"config/@hello-interval" ygotAnnotation:"true"`
	RetransmissionInterval  *uint32           `path:"config/retransmission-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRetransmissionInterval []ygot.Annotation `path:"config/@retransmission-interval" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers) IsYANGGoStruct() {}

// GetDeadInterval retrieves the value of the leaf DeadInterval from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DeadInterval is set, it can
// safely use t.GetDeadInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DeadInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers) GetDeadInterval() uint32 {
	if t == nil || t.DeadInterval == nil {
		return 0
	}
	return *t.DeadInterval
}

// GetHelloInterval retrieves the value of the leaf HelloInterval from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloInterval is set, it can
// safely use t.GetHelloInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers) GetHelloInterval() uint32 {
	if t == nil || t.HelloInterval == nil {
		return 0
	}
	return *t.HelloInterval
}

// GetRetransmissionInterval retrieves the value of the leaf RetransmissionInterval from the NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RetransmissionInterval is set, it can
// safely use t.GetRetransmissionInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RetransmissionInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers) GetRetransmissionInterval() uint32 {
	if t == nil || t.RetransmissionInterval == nil {
		return 0
	}
	return *t.RetransmissionInterval
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers.
func (*NetworkInstance_Protocol_Ospfv2_Area_Interface_Timers) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb struct {
	ΛMetadata   []ygot.Annotation                                                                `path:"@" ygotAnnotation:"true"`
	Identifier  NetworkInstance_Protocol_Ospfv2_Area_Lsdb_Identifier_Union                       `path:"state/identifier" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIdentifier []ygot.Annotation                                                                `path:"state/@identifier" ygotAnnotation:"true"`
	LsaType     map[E_OspfTypes_OSPF_LSA_TYPE]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType `path:"lsa-types/lsa-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLsaType    []ygot.Annotation                                                                `path:"lsa-types/@lsa-type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb) IsYANGGoStruct() {}

// NewLsaType creates a new entry in the LsaType list of the
// NetworkInstance_Protocol_Ospfv2_Area_Lsdb struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb) NewLsaType(Type E_OspfTypes_OSPF_LSA_TYPE) (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.LsaType == nil {
		t.LsaType = make(map[E_OspfTypes_OSPF_LSA_TYPE]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType)
	}

	key := Type

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.LsaType[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list LsaType", key)
	}

	t.LsaType[key] = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType{
		Type: Type,
	}

	return t.LsaType[key], nil
}

// RenameLsaType renames an entry in the list LsaType within
// the NetworkInstance_Protocol_Ospfv2_Area_Lsdb struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb) RenameLsaType(oldK, newK E_OspfTypes_OSPF_LSA_TYPE) error {
	if _, ok := t.LsaType[newK]; ok {
		return fmt.Errorf("key %v already exists in LsaType", newK)
	}

	e, ok := t.LsaType[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in LsaType", oldK)
	}
	e.Type = newK

	t.LsaType[newK] = e
	delete(t.LsaType, oldK)
	return nil
}

// GetOrCreateLsaTypeMap returns the list (map) from NetworkInstance_Protocol_Ospfv2_Area_Lsdb.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb) GetOrCreateLsaTypeMap() map[E_OspfTypes_OSPF_LSA_TYPE]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType {
	if t.LsaType == nil {
		t.LsaType = make(map[E_OspfTypes_OSPF_LSA_TYPE]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType)
	}
	return t.LsaType
}

// GetOrCreateLsaType retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Ospfv2_Area_Lsdb. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb) GetOrCreateLsaType(Type E_OspfTypes_OSPF_LSA_TYPE) *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType {

	key := Type

	if v, ok := t.LsaType[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewLsaType(Type)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateLsaType got unexpected error: %v", err))
	}
	return v
}

// GetLsaType retrieves the value with the specified key from
// the LsaType map field of NetworkInstance_Protocol_Ospfv2_Area_Lsdb. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb) GetLsaType(Type E_OspfTypes_OSPF_LSA_TYPE) *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType {

	if t == nil {
		return nil
	}

	key := Type

	if lm, ok := t.LsaType[key]; ok {
		return lm
	}
	return nil
}

// AppendLsaType appends the supplied NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType struct to the
// list LsaType of NetworkInstance_Protocol_Ospfv2_Area_Lsdb. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb) AppendLsaType(v *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType) error {
	key := v.Type

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.LsaType == nil {
		t.LsaType = make(map[E_OspfTypes_OSPF_LSA_TYPE]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType)
	}

	if _, ok := t.LsaType[key]; ok {
		return fmt.Errorf("duplicate key for list LsaType %v", key)
	}

	t.LsaType[key] = v
	return nil
}

// GetIdentifier retrieves the value of the leaf Identifier from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Identifier is set, it can
// safely use t.GetIdentifier() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Identifier == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb) GetIdentifier() NetworkInstance_Protocol_Ospfv2_Area_Lsdb_Identifier_Union {
	if t == nil || t.Identifier == nil {
		return nil
	}
	return t.Identifier
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.LsaType {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_Identifier_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/state/identifier within the YANG schema.
// Union type can be one of [UnionString, UnionUint32].
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_Identifier_Union interface {
	// Union type can be one of [UnionString, UnionUint32]
	Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_Identifier_Union()
}

// Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_Identifier_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_Identifier_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_Identifier_Union() {}

// Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_Identifier_Union ensures that UnionUint32
// implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_Identifier_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_Identifier_Union() {}

// To_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_Identifier_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_Identifier_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb) To_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_Identifier_Union(i interface{}) (NetworkInstance_Protocol_Ospfv2_Area_Lsdb_Identifier_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Ospfv2_Area_Lsdb_Identifier_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Ospfv2_Area_Lsdb_Identifier_Union, unknown union type, got: %T, want any of [string, uint32]", i, i)
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType struct {
	ΛMetadata []ygot.Annotation                                                 `path:"@" ygotAnnotation:"true"`
	Lsa       map[string]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa `path:"lsas/lsa" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLsa      []ygot.Annotation                                                 `path:"lsas/@lsa" ygotAnnotation:"true"`
	Type      E_OspfTypes_OSPF_LSA_TYPE                                         `path:"state/type|type" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛType     []ygot.Annotation                                                 `path:"state/@type|@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType) IsYANGGoStruct() {}

// NewLsa creates a new entry in the Lsa list of the
// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType) NewLsa(LinkStateId string) (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Lsa == nil {
		t.Lsa = make(map[string]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa)
	}

	key := LinkStateId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Lsa[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Lsa", key)
	}

	t.Lsa[key] = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa{
		LinkStateId: &LinkStateId,
	}

	return t.Lsa[key], nil
}

// RenameLsa renames an entry in the list Lsa within
// the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType) RenameLsa(oldK, newK string) error {
	if _, ok := t.Lsa[newK]; ok {
		return fmt.Errorf("key %v already exists in Lsa", newK)
	}

	e, ok := t.Lsa[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Lsa", oldK)
	}
	e.LinkStateId = &newK

	t.Lsa[newK] = e
	delete(t.Lsa, oldK)
	return nil
}

// GetOrCreateLsaMap returns the list (map) from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType) GetOrCreateLsaMap() map[string]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa {
	if t.Lsa == nil {
		t.Lsa = make(map[string]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa)
	}
	return t.Lsa
}

// GetOrCreateLsa retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType) GetOrCreateLsa(LinkStateId string) *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa {

	key := LinkStateId

	if v, ok := t.Lsa[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewLsa(LinkStateId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateLsa got unexpected error: %v", err))
	}
	return v
}

// GetLsa retrieves the value with the specified key from
// the Lsa map field of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType) GetLsa(LinkStateId string) *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa {

	if t == nil {
		return nil
	}

	key := LinkStateId

	if lm, ok := t.Lsa[key]; ok {
		return lm
	}
	return nil
}

// AppendLsa appends the supplied NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa struct to the
// list Lsa of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType) AppendLsa(v *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) error {
	if v.LinkStateId == nil {
		return fmt.Errorf("invalid nil key received for LinkStateId")
	}

	key := *v.LinkStateId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Lsa == nil {
		t.Lsa = make(map[string]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa)
	}

	if _, ok := t.Lsa[key]; ok {
		return fmt.Errorf("duplicate key for list Lsa %v", key)
	}

	t.Lsa[key] = v
	return nil
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType) GetType() E_OspfTypes_OSPF_LSA_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Lsa {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"type": t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa struct {
	ΛMetadata          []ygot.Annotation                                                      `path:"@" ygotAnnotation:"true"`
	AdvertisingRouter  *string                                                                `path:"state/advertising-router" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdvertisingRouter []ygot.Annotation                                                      `path:"state/@advertising-router" ygotAnnotation:"true"`
	Age                *uint16                                                                `path:"state/age" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAge               []ygot.Annotation                                                      `path:"state/@age" ygotAnnotation:"true"`
	AsExternalLsa      *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa   `path:"as-external-lsa" module:"openconfig-network-instance"`
	ΛAsExternalLsa     []ygot.Annotation                                                      `path:"@as-external-lsa" ygotAnnotation:"true"`
	Checksum           *uint16                                                                `path:"state/checksum" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛChecksum          []ygot.Annotation                                                      `path:"state/@checksum" ygotAnnotation:"true"`
	LinkStateId        *string                                                                `path:"state/link-state-id|link-state-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛLinkStateId       []ygot.Annotation                                                      `path:"state/@link-state-id|@link-state-id" ygotAnnotation:"true"`
	NetworkLsa         *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa      `path:"network-lsa" module:"openconfig-network-instance"`
	ΛNetworkLsa        []ygot.Annotation                                                      `path:"@network-lsa" ygotAnnotation:"true"`
	NssaExternalLsa    *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa `path:"nssa-external-lsa" module:"openconfig-network-instance"`
	ΛNssaExternalLsa   []ygot.Annotation                                                      `path:"@nssa-external-lsa" ygotAnnotation:"true"`
	OpaqueLsa          *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa       `path:"opaque-lsa" module:"openconfig-network-instance"`
	ΛOpaqueLsa         []ygot.Annotation                                                      `path:"@opaque-lsa" ygotAnnotation:"true"`
	RouterLsa          *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa       `path:"router-lsa" module:"openconfig-network-instance"`
	ΛRouterLsa         []ygot.Annotation                                                      `path:"@router-lsa" ygotAnnotation:"true"`
	SequenceNumber     *int32                                                                 `path:"state/sequence-number" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSequenceNumber    []ygot.Annotation                                                      `path:"state/@sequence-number" ygotAnnotation:"true"`
	SummaryLsa         *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa      `path:"summary-lsa" module:"openconfig-network-instance"`
	ΛSummaryLsa        []ygot.Annotation                                                      `path:"@summary-lsa" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) IsYANGGoStruct() {}

// GetOrCreateAsExternalLsa retrieves the value of the AsExternalLsa field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) GetOrCreateAsExternalLsa() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa {
	if t.AsExternalLsa != nil {
		return t.AsExternalLsa
	}
	t.AsExternalLsa = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa{}
	return t.AsExternalLsa
}

// GetOrCreateNetworkLsa retrieves the value of the NetworkLsa field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) GetOrCreateNetworkLsa() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa {
	if t.NetworkLsa != nil {
		return t.NetworkLsa
	}
	t.NetworkLsa = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa{}
	return t.NetworkLsa
}

// GetOrCreateNssaExternalLsa retrieves the value of the NssaExternalLsa field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) GetOrCreateNssaExternalLsa() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa {
	if t.NssaExternalLsa != nil {
		return t.NssaExternalLsa
	}
	t.NssaExternalLsa = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa{}
	return t.NssaExternalLsa
}

// GetOrCreateOpaqueLsa retrieves the value of the OpaqueLsa field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) GetOrCreateOpaqueLsa() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa {
	if t.OpaqueLsa != nil {
		return t.OpaqueLsa
	}
	t.OpaqueLsa = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa{}
	return t.OpaqueLsa
}

// GetOrCreateRouterLsa retrieves the value of the RouterLsa field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) GetOrCreateRouterLsa() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa {
	if t.RouterLsa != nil {
		return t.RouterLsa
	}
	t.RouterLsa = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa{}
	return t.RouterLsa
}

// GetOrCreateSummaryLsa retrieves the value of the SummaryLsa field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) GetOrCreateSummaryLsa() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa {
	if t.SummaryLsa != nil {
		return t.SummaryLsa
	}
	t.SummaryLsa = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa{}
	return t.SummaryLsa
}

// GetAsExternalLsa returns the value of the AsExternalLsa struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa. If the receiver or the field AsExternalLsa is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) GetAsExternalLsa() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa {
	if t != nil && t.AsExternalLsa != nil {
		return t.AsExternalLsa
	}
	return nil
}

// GetNetworkLsa returns the value of the NetworkLsa struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa. If the receiver or the field NetworkLsa is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) GetNetworkLsa() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa {
	if t != nil && t.NetworkLsa != nil {
		return t.NetworkLsa
	}
	return nil
}

// GetNssaExternalLsa returns the value of the NssaExternalLsa struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa. If the receiver or the field NssaExternalLsa is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) GetNssaExternalLsa() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa {
	if t != nil && t.NssaExternalLsa != nil {
		return t.NssaExternalLsa
	}
	return nil
}

// GetOpaqueLsa returns the value of the OpaqueLsa struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa. If the receiver or the field OpaqueLsa is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) GetOpaqueLsa() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa {
	if t != nil && t.OpaqueLsa != nil {
		return t.OpaqueLsa
	}
	return nil
}

// GetRouterLsa returns the value of the RouterLsa struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa. If the receiver or the field RouterLsa is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) GetRouterLsa() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa {
	if t != nil && t.RouterLsa != nil {
		return t.RouterLsa
	}
	return nil
}

// GetSummaryLsa returns the value of the SummaryLsa struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa. If the receiver or the field SummaryLsa is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) GetSummaryLsa() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa {
	if t != nil && t.SummaryLsa != nil {
		return t.SummaryLsa
	}
	return nil
}

// GetAdvertisingRouter retrieves the value of the leaf AdvertisingRouter from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdvertisingRouter is set, it can
// safely use t.GetAdvertisingRouter() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdvertisingRouter == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) GetAdvertisingRouter() string {
	if t == nil || t.AdvertisingRouter == nil {
		return ""
	}
	return *t.AdvertisingRouter
}

// GetAge retrieves the value of the leaf Age from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Age is set, it can
// safely use t.GetAge() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Age == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) GetAge() uint16 {
	if t == nil || t.Age == nil {
		return 0
	}
	return *t.Age
}

// GetChecksum retrieves the value of the leaf Checksum from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Checksum is set, it can
// safely use t.GetChecksum() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Checksum == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) GetChecksum() uint16 {
	if t == nil || t.Checksum == nil {
		return 0
	}
	return *t.Checksum
}

// GetLinkStateId retrieves the value of the leaf LinkStateId from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkStateId is set, it can
// safely use t.GetLinkStateId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkStateId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) GetLinkStateId() string {
	if t == nil || t.LinkStateId == nil {
		return ""
	}
	return *t.LinkStateId
}

// GetSequenceNumber retrieves the value of the leaf SequenceNumber from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SequenceNumber is set, it can
// safely use t.GetSequenceNumber() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SequenceNumber == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) GetSequenceNumber() int32 {
	if t == nil || t.SequenceNumber == nil {
		return 0
	}
	return *t.SequenceNumber
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AsExternalLsa.PopulateDefaults()
	t.NetworkLsa.PopulateDefaults()
	t.NssaExternalLsa.PopulateDefaults()
	t.OpaqueLsa.PopulateDefaults()
	t.RouterLsa.PopulateDefaults()
	t.SummaryLsa.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) ΛListKeyMap() (map[string]interface{}, error) {
	if t.LinkStateId == nil {
		return nil, fmt.Errorf("nil value for key LinkStateId")
	}

	return map[string]interface{}{
		"link-state-id": *t.LinkStateId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/as-external-lsa YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa struct {
	ΛMetadata          []ygot.Annotation                                                                            `path:"@" ygotAnnotation:"true"`
	ExternalRouteTag   *uint32                                                                                      `path:"state/external-route-tag" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExternalRouteTag  []ygot.Annotation                                                                            `path:"state/@external-route-tag" ygotAnnotation:"true"`
	ForwardingAddress  *string                                                                                      `path:"state/forwarding-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛForwardingAddress []ygot.Annotation                                                                            `path:"state/@forwarding-address" ygotAnnotation:"true"`
	Mask               *uint8                                                                                       `path:"state/mask" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMask              []ygot.Annotation                                                                            `path:"state/@mask" ygotAnnotation:"true"`
	Metric             *uint16                                                                                      `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric            []ygot.Annotation                                                                            `path:"state/@metric" ygotAnnotation:"true"`
	MetricType         E_AsExternalLsa_MetricType                                                                   `path:"state/metric-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetricType        []ygot.Annotation                                                                            `path:"state/@metric-type" ygotAnnotation:"true"`
	TypeOfService      map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService `path:"types-of-service/type-of-service" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTypeOfService     []ygot.Annotation                                                                            `path:"types-of-service/@type-of-service" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa) IsYANGGoStruct() {}

// NewTypeOfService creates a new entry in the TypeOfService list of the
// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa) NewTypeOfService(Tos uint8) (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeOfService == nil {
		t.TypeOfService = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService)
	}

	key := Tos

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.TypeOfService[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list TypeOfService", key)
	}

	t.TypeOfService[key] = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService{
		Tos: &Tos,
	}

	return t.TypeOfService[key], nil
}

// RenameTypeOfService renames an entry in the list TypeOfService within
// the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa) RenameTypeOfService(oldK, newK uint8) error {
	if _, ok := t.TypeOfService[newK]; ok {
		return fmt.Errorf("key %v already exists in TypeOfService", newK)
	}

	e, ok := t.TypeOfService[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in TypeOfService", oldK)
	}
	e.Tos = &newK

	t.TypeOfService[newK] = e
	delete(t.TypeOfService, oldK)
	return nil
}

// GetOrCreateTypeOfServiceMap returns the list (map) from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa) GetOrCreateTypeOfServiceMap() map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService {
	if t.TypeOfService == nil {
		t.TypeOfService = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService)
	}
	return t.TypeOfService
}

// GetOrCreateTypeOfService retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa) GetOrCreateTypeOfService(Tos uint8) *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService {

	key := Tos

	if v, ok := t.TypeOfService[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTypeOfService(Tos)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTypeOfService got unexpected error: %v", err))
	}
	return v
}

// GetTypeOfService retrieves the value with the specified key from
// the TypeOfService map field of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa) GetTypeOfService(Tos uint8) *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService {

	if t == nil {
		return nil
	}

	key := Tos

	if lm, ok := t.TypeOfService[key]; ok {
		return lm
	}
	return nil
}

// AppendTypeOfService appends the supplied NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService struct to the
// list TypeOfService of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa) AppendTypeOfService(v *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService) error {
	if v.Tos == nil {
		return fmt.Errorf("invalid nil key received for Tos")
	}

	key := *v.Tos

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeOfService == nil {
		t.TypeOfService = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService)
	}

	if _, ok := t.TypeOfService[key]; ok {
		return fmt.Errorf("duplicate key for list TypeOfService %v", key)
	}

	t.TypeOfService[key] = v
	return nil
}

// GetExternalRouteTag retrieves the value of the leaf ExternalRouteTag from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExternalRouteTag is set, it can
// safely use t.GetExternalRouteTag() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExternalRouteTag == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa) GetExternalRouteTag() uint32 {
	if t == nil || t.ExternalRouteTag == nil {
		return 0
	}
	return *t.ExternalRouteTag
}

// GetForwardingAddress retrieves the value of the leaf ForwardingAddress from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ForwardingAddress is set, it can
// safely use t.GetForwardingAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ForwardingAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa) GetForwardingAddress() string {
	if t == nil || t.ForwardingAddress == nil {
		return ""
	}
	return *t.ForwardingAddress
}

// GetMask retrieves the value of the leaf Mask from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mask is set, it can
// safely use t.GetMask() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mask == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa) GetMask() uint8 {
	if t == nil || t.Mask == nil {
		return 0
	}
	return *t.Mask
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa) GetMetric() uint16 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetMetricType retrieves the value of the leaf MetricType from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MetricType is set, it can
// safely use t.GetMetricType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MetricType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa) GetMetricType() E_AsExternalLsa_MetricType {
	if t == nil || t.MetricType == 0 {
		return 0
	}
	return t.MetricType
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.TypeOfService {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/as-external-lsa/types-of-service/type-of-service YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ExternalRouteTag   *uint32           `path:"state/external-route-tag" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExternalRouteTag  []ygot.Annotation `path:"state/@external-route-tag" ygotAnnotation:"true"`
	ForwardingAddress  *string           `path:"state/forwarding-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛForwardingAddress []ygot.Annotation `path:"state/@forwarding-address" ygotAnnotation:"true"`
	Metric             *uint16           `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric            []ygot.Annotation `path:"state/@metric" ygotAnnotation:"true"`
	Tos                *uint8            `path:"state/tos|tos" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛTos               []ygot.Annotation `path:"state/@tos|@tos" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService) IsYANGGoStruct() {
}

// GetExternalRouteTag retrieves the value of the leaf ExternalRouteTag from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExternalRouteTag is set, it can
// safely use t.GetExternalRouteTag() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExternalRouteTag == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService) GetExternalRouteTag() uint32 {
	if t == nil || t.ExternalRouteTag == nil {
		return 0
	}
	return *t.ExternalRouteTag
}

// GetForwardingAddress retrieves the value of the leaf ForwardingAddress from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ForwardingAddress is set, it can
// safely use t.GetForwardingAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ForwardingAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService) GetForwardingAddress() string {
	if t == nil || t.ForwardingAddress == nil {
		return ""
	}
	return *t.ForwardingAddress
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService) GetMetric() uint16 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetTos retrieves the value of the leaf Tos from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tos is set, it can
// safely use t.GetTos() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tos == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService) GetTos() uint8 {
	if t == nil || t.Tos == nil {
		return 0
	}
	return *t.Tos
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Tos == nil {
		return nil, fmt.Errorf("nil value for key Tos")
	}

	return map[string]interface{}{
		"tos": *t.Tos,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_AsExternalLsa_TypeOfService) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/network-lsa YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa struct {
	ΛMetadata       []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AttachedRouter  []string          `path:"state/attached-router" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttachedRouter []ygot.Annotation `path:"state/@attached-router" ygotAnnotation:"true"`
	NetworkMask     *uint8            `path:"state/network-mask" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNetworkMask    []ygot.Annotation `path:"state/@network-mask" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa) IsYANGGoStruct() {}

// GetAttachedRouter retrieves the value of the leaf AttachedRouter from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AttachedRouter is set, it can
// safely use t.GetAttachedRouter() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AttachedRouter == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa) GetAttachedRouter() []string {
	if t == nil || t.AttachedRouter == nil {
		return nil
	}
	return t.AttachedRouter
}

// GetNetworkMask retrieves the value of the leaf NetworkMask from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NetworkMask is set, it can
// safely use t.GetNetworkMask() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NetworkMask == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa) GetNetworkMask() uint8 {
	if t == nil || t.NetworkMask == nil {
		return 0
	}
	return *t.NetworkMask
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NetworkLsa) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/nssa-external-lsa YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa struct {
	ΛMetadata          []ygot.Annotation                                                                              `path:"@" ygotAnnotation:"true"`
	ExternalRouteTag   *uint32                                                                                        `path:"state/external-route-tag" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExternalRouteTag  []ygot.Annotation                                                                              `path:"state/@external-route-tag" ygotAnnotation:"true"`
	ForwardingAddress  *string                                                                                        `path:"state/forwarding-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛForwardingAddress []ygot.Annotation                                                                              `path:"state/@forwarding-address" ygotAnnotation:"true"`
	Mask               *uint8                                                                                         `path:"state/mask" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMask              []ygot.Annotation                                                                              `path:"state/@mask" ygotAnnotation:"true"`
	Metric             *uint16                                                                                        `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric            []ygot.Annotation                                                                              `path:"state/@metric" ygotAnnotation:"true"`
	MetricType         E_AsExternalLsa_MetricType                                                                     `path:"state/metric-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetricType        []ygot.Annotation                                                                              `path:"state/@metric-type" ygotAnnotation:"true"`
	Propagate          *bool                                                                                          `path:"state/propagate" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPropagate         []ygot.Annotation                                                                              `path:"state/@propagate" ygotAnnotation:"true"`
	TypeOfService      map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService `path:"types-of-service/type-of-service" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTypeOfService     []ygot.Annotation                                                                              `path:"types-of-service/@type-of-service" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) IsYANGGoStruct() {}

// NewTypeOfService creates a new entry in the TypeOfService list of the
// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) NewTypeOfService(Tos uint8) (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeOfService == nil {
		t.TypeOfService = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService)
	}

	key := Tos

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.TypeOfService[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list TypeOfService", key)
	}

	t.TypeOfService[key] = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService{
		Tos: &Tos,
	}

	return t.TypeOfService[key], nil
}

// RenameTypeOfService renames an entry in the list TypeOfService within
// the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) RenameTypeOfService(oldK, newK uint8) error {
	if _, ok := t.TypeOfService[newK]; ok {
		return fmt.Errorf("key %v already exists in TypeOfService", newK)
	}

	e, ok := t.TypeOfService[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in TypeOfService", oldK)
	}
	e.Tos = &newK

	t.TypeOfService[newK] = e
	delete(t.TypeOfService, oldK)
	return nil
}

// GetOrCreateTypeOfServiceMap returns the list (map) from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) GetOrCreateTypeOfServiceMap() map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService {
	if t.TypeOfService == nil {
		t.TypeOfService = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService)
	}
	return t.TypeOfService
}

// GetOrCreateTypeOfService retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) GetOrCreateTypeOfService(Tos uint8) *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService {

	key := Tos

	if v, ok := t.TypeOfService[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTypeOfService(Tos)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTypeOfService got unexpected error: %v", err))
	}
	return v
}

// GetTypeOfService retrieves the value with the specified key from
// the TypeOfService map field of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) GetTypeOfService(Tos uint8) *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService {

	if t == nil {
		return nil
	}

	key := Tos

	if lm, ok := t.TypeOfService[key]; ok {
		return lm
	}
	return nil
}

// AppendTypeOfService appends the supplied NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService struct to the
// list TypeOfService of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) AppendTypeOfService(v *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService) error {
	if v.Tos == nil {
		return fmt.Errorf("invalid nil key received for Tos")
	}

	key := *v.Tos

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeOfService == nil {
		t.TypeOfService = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService)
	}

	if _, ok := t.TypeOfService[key]; ok {
		return fmt.Errorf("duplicate key for list TypeOfService %v", key)
	}

	t.TypeOfService[key] = v
	return nil
}

// GetExternalRouteTag retrieves the value of the leaf ExternalRouteTag from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExternalRouteTag is set, it can
// safely use t.GetExternalRouteTag() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExternalRouteTag == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) GetExternalRouteTag() uint32 {
	if t == nil || t.ExternalRouteTag == nil {
		return 0
	}
	return *t.ExternalRouteTag
}

// GetForwardingAddress retrieves the value of the leaf ForwardingAddress from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ForwardingAddress is set, it can
// safely use t.GetForwardingAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ForwardingAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) GetForwardingAddress() string {
	if t == nil || t.ForwardingAddress == nil {
		return ""
	}
	return *t.ForwardingAddress
}

// GetMask retrieves the value of the leaf Mask from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mask is set, it can
// safely use t.GetMask() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mask == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) GetMask() uint8 {
	if t == nil || t.Mask == nil {
		return 0
	}
	return *t.Mask
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) GetMetric() uint16 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetMetricType retrieves the value of the leaf MetricType from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MetricType is set, it can
// safely use t.GetMetricType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MetricType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) GetMetricType() E_AsExternalLsa_MetricType {
	if t == nil || t.MetricType == 0 {
		return 0
	}
	return t.MetricType
}

// GetPropagate retrieves the value of the leaf Propagate from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Propagate is set, it can
// safely use t.GetPropagate() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Propagate == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) GetPropagate() bool {
	if t == nil || t.Propagate == nil {
		return false
	}
	return *t.Propagate
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.TypeOfService {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/nssa-external-lsa/types-of-service/type-of-service YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ExternalRouteTag   *uint32           `path:"state/external-route-tag" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExternalRouteTag  []ygot.Annotation `path:"state/@external-route-tag" ygotAnnotation:"true"`
	ForwardingAddress  *string           `path:"state/forwarding-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛForwardingAddress []ygot.Annotation `path:"state/@forwarding-address" ygotAnnotation:"true"`
	Metric             *uint16           `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric            []ygot.Annotation `path:"state/@metric" ygotAnnotation:"true"`
	Tos                *uint8            `path:"state/tos|tos" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛTos               []ygot.Annotation `path:"state/@tos|@tos" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService) IsYANGGoStruct() {
}

// GetExternalRouteTag retrieves the value of the leaf ExternalRouteTag from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExternalRouteTag is set, it can
// safely use t.GetExternalRouteTag() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExternalRouteTag == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService) GetExternalRouteTag() uint32 {
	if t == nil || t.ExternalRouteTag == nil {
		return 0
	}
	return *t.ExternalRouteTag
}

// GetForwardingAddress retrieves the value of the leaf ForwardingAddress from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ForwardingAddress is set, it can
// safely use t.GetForwardingAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ForwardingAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService) GetForwardingAddress() string {
	if t == nil || t.ForwardingAddress == nil {
		return ""
	}
	return *t.ForwardingAddress
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService) GetMetric() uint16 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetTos retrieves the value of the leaf Tos from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tos is set, it can
// safely use t.GetTos() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tos == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService) GetTos() uint8 {
	if t == nil || t.Tos == nil {
		return 0
	}
	return *t.Tos
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Tos == nil {
		return nil, fmt.Errorf("nil value for key Tos")
	}

	return map[string]interface{}{
		"tos": *t.Tos,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_NssaExternalLsa_TypeOfService) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa struct {
	ΛMetadata           []ygot.Annotation                                                                   `path:"@" ygotAnnotation:"true"`
	ExtendedLink        *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink       `path:"extended-link" module:"openconfig-network-instance"`
	ΛExtendedLink       []ygot.Annotation                                                                   `path:"@extended-link" ygotAnnotation:"true"`
	ExtendedPrefix      *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix     `path:"extended-prefix" module:"openconfig-network-instance"`
	ΛExtendedPrefix     []ygot.Annotation                                                                   `path:"@extended-prefix" ygotAnnotation:"true"`
	GraceLsa            *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa           `path:"grace-lsa" module:"openconfig-network-instance"`
	ΛGraceLsa           []ygot.Annotation                                                                   `path:"@grace-lsa" ygotAnnotation:"true"`
	RouterInformation   *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation  `path:"router-information" module:"openconfig-network-instance"`
	ΛRouterInformation  []ygot.Annotation                                                                   `path:"@router-information" ygotAnnotation:"true"`
	Scope               E_OpaqueLsa_Scope                                                                   `path:"state/scope" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛScope              []ygot.Annotation                                                                   `path:"state/@scope" ygotAnnotation:"true"`
	TrafficEngineering  *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering `path:"traffic-engineering" module:"openconfig-network-instance"`
	ΛTrafficEngineering []ygot.Annotation                                                                   `path:"@traffic-engineering" ygotAnnotation:"true"`
	Type                E_OspfTypes_OSPF_OPAQUE_LSA_TYPE                                                    `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType               []ygot.Annotation                                                                   `path:"state/@type" ygotAnnotation:"true"`
	UnknownTlv          *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv         `path:"unknown-tlv" module:"openconfig-network-instance"`
	ΛUnknownTlv         []ygot.Annotation                                                                   `path:"@unknown-tlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) IsYANGGoStruct() {}

// GetOrCreateExtendedLink retrieves the value of the ExtendedLink field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) GetOrCreateExtendedLink() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink {
	if t.ExtendedLink != nil {
		return t.ExtendedLink
	}
	t.ExtendedLink = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink{}
	return t.ExtendedLink
}

// GetOrCreateExtendedPrefix retrieves the value of the ExtendedPrefix field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) GetOrCreateExtendedPrefix() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix {
	if t.ExtendedPrefix != nil {
		return t.ExtendedPrefix
	}
	t.ExtendedPrefix = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix{}
	return t.ExtendedPrefix
}

// GetOrCreateGraceLsa retrieves the value of the GraceLsa field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) GetOrCreateGraceLsa() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa {
	if t.GraceLsa != nil {
		return t.GraceLsa
	}
	t.GraceLsa = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa{}
	return t.GraceLsa
}

// GetOrCreateRouterInformation retrieves the value of the RouterInformation field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) GetOrCreateRouterInformation() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation {
	if t.RouterInformation != nil {
		return t.RouterInformation
	}
	t.RouterInformation = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation{}
	return t.RouterInformation
}

// GetOrCreateTrafficEngineering retrieves the value of the TrafficEngineering field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) GetOrCreateTrafficEngineering() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering {
	if t.TrafficEngineering != nil {
		return t.TrafficEngineering
	}
	t.TrafficEngineering = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering{}
	return t.TrafficEngineering
}

// GetOrCreateUnknownTlv retrieves the value of the UnknownTlv field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) GetOrCreateUnknownTlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv {
	if t.UnknownTlv != nil {
		return t.UnknownTlv
	}
	t.UnknownTlv = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv{}
	return t.UnknownTlv
}

// GetExtendedLink returns the value of the ExtendedLink struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa. If the receiver or the field ExtendedLink is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) GetExtendedLink() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink {
	if t != nil && t.ExtendedLink != nil {
		return t.ExtendedLink
	}
	return nil
}

// GetExtendedPrefix returns the value of the ExtendedPrefix struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa. If the receiver or the field ExtendedPrefix is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) GetExtendedPrefix() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix {
	if t != nil && t.ExtendedPrefix != nil {
		return t.ExtendedPrefix
	}
	return nil
}

// GetGraceLsa returns the value of the GraceLsa struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa. If the receiver or the field GraceLsa is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) GetGraceLsa() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa {
	if t != nil && t.GraceLsa != nil {
		return t.GraceLsa
	}
	return nil
}

// GetRouterInformation returns the value of the RouterInformation struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa. If the receiver or the field RouterInformation is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) GetRouterInformation() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation {
	if t != nil && t.RouterInformation != nil {
		return t.RouterInformation
	}
	return nil
}

// GetTrafficEngineering returns the value of the TrafficEngineering struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa. If the receiver or the field TrafficEngineering is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) GetTrafficEngineering() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering {
	if t != nil && t.TrafficEngineering != nil {
		return t.TrafficEngineering
	}
	return nil
}

// GetUnknownTlv returns the value of the UnknownTlv struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa. If the receiver or the field UnknownTlv is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) GetUnknownTlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv {
	if t != nil && t.UnknownTlv != nil {
		return t.UnknownTlv
	}
	return nil
}

// GetScope retrieves the value of the leaf Scope from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Scope is set, it can
// safely use t.GetScope() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Scope == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) GetScope() E_OpaqueLsa_Scope {
	if t == nil || t.Scope == 0 {
		return 0
	}
	return t.Scope
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) GetType() E_OspfTypes_OSPF_OPAQUE_LSA_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.ExtendedLink.PopulateDefaults()
	t.ExtendedPrefix.PopulateDefaults()
	t.GraceLsa.PopulateDefaults()
	t.RouterInformation.PopulateDefaults()
	t.TrafficEngineering.PopulateDefaults()
	t.UnknownTlv.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-link YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink struct {
	ΛMetadata []ygot.Annotation                                                                           `path:"@" ygotAnnotation:"true"`
	LinkData  NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_LinkData_Union `path:"state/link-data" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLinkData []ygot.Annotation                                                                           `path:"state/@link-data" ygotAnnotation:"true"`
	LinkId    *string                                                                                     `path:"state/link-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLinkId   []ygot.Annotation                                                                           `path:"state/@link-id" ygotAnnotation:"true"`
	LinkType  E_OspfTypes_OSPFV2_ROUTER_LINK_TYPE                                                         `path:"state/link-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLinkType []ygot.Annotation                                                                           `path:"state/@link-type" ygotAnnotation:"true"`
	Tlv       []*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv         `path:"tlvs/tlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTlv      []ygot.Annotation                                                                           `path:"tlvs/@tlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink) IsYANGGoStruct() {
}

// GetLinkData retrieves the value of the leaf LinkData from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkData is set, it can
// safely use t.GetLinkData() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkData == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink) GetLinkData() NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_LinkData_Union {
	if t == nil || t.LinkData == nil {
		return nil
	}
	return t.LinkData
}

// GetLinkId retrieves the value of the leaf LinkId from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkId is set, it can
// safely use t.GetLinkId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink) GetLinkId() string {
	if t == nil || t.LinkId == nil {
		return ""
	}
	return *t.LinkId
}

// GetLinkType retrieves the value of the leaf LinkType from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkType is set, it can
// safely use t.GetLinkType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink) GetLinkType() E_OspfTypes_OSPFV2_ROUTER_LINK_TYPE {
	if t == nil || t.LinkType == 0 {
		return 0
	}
	return t.LinkType
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Tlv {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_LinkData_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-link/state/link-data within the YANG schema.
// Union type can be one of [UnionString, UnionUint32].
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_LinkData_Union interface {
	// Union type can be one of [UnionString, UnionUint32]
	Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_LinkData_Union()
}

// Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_LinkData_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_LinkData_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_LinkData_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_LinkData_Union ensures that UnionUint32
// implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_LinkData_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_LinkData_Union() {
}

// To_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_LinkData_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_LinkData_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink) To_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_LinkData_Union(i interface{}) (NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_LinkData_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_LinkData_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_LinkData_Union, unknown union type, got: %T, want any of [string, uint32]", i, i)
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-link/tlvs/tlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv struct {
	ΛMetadata     []ygot.Annotation                                                                              `path:"@" ygotAnnotation:"true"`
	AdjacencySid  *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid `path:"adjacency-sid" module:"openconfig-network-instance"`
	ΛAdjacencySid []ygot.Annotation                                                                              `path:"@adjacency-sid" ygotAnnotation:"true"`
	Type          E_OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE                                                   `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType         []ygot.Annotation                                                                              `path:"state/@type" ygotAnnotation:"true"`
	UnknownTlv    *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv   `path:"unknown-tlv" module:"openconfig-network-instance"`
	ΛUnknownTlv   []ygot.Annotation                                                                              `path:"@unknown-tlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv) IsYANGGoStruct() {
}

// GetOrCreateAdjacencySid retrieves the value of the AdjacencySid field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv) GetOrCreateAdjacencySid() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid {
	if t.AdjacencySid != nil {
		return t.AdjacencySid
	}
	t.AdjacencySid = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid{}
	return t.AdjacencySid
}

// GetOrCreateUnknownTlv retrieves the value of the UnknownTlv field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv) GetOrCreateUnknownTlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv {
	if t.UnknownTlv != nil {
		return t.UnknownTlv
	}
	t.UnknownTlv = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv{}
	return t.UnknownTlv
}

// GetAdjacencySid returns the value of the AdjacencySid struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv. If the receiver or the field AdjacencySid is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv) GetAdjacencySid() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid {
	if t != nil && t.AdjacencySid != nil {
		return t.AdjacencySid
	}
	return nil
}

// GetUnknownTlv returns the value of the UnknownTlv struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv. If the receiver or the field UnknownTlv is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv) GetUnknownTlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv {
	if t != nil && t.UnknownTlv != nil {
		return t.UnknownTlv
	}
	return nil
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv) GetType() E_OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AdjacencySid.PopulateDefaults()
	t.UnknownTlv.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-link/tlvs/tlv/adjacency-sid YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid struct {
	ΛMetadata                []ygot.Annotation     `path:"@" ygotAnnotation:"true"`
	Backup                   *bool                 `path:"state/backup" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBackup                  []ygot.Annotation     `path:"state/@backup" ygotAnnotation:"true"`
	Group                    *bool                 `path:"state/group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛGroup                   []ygot.Annotation     `path:"state/@group" ygotAnnotation:"true"`
	MultiTopologyIdentifier  *uint8                `path:"state/multi-topology-identifier" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMultiTopologyIdentifier []ygot.Annotation     `path:"state/@multi-topology-identifier" ygotAnnotation:"true"`
	SidType                  E_OspfTypes_SrSidType `path:"state/sid-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSidType                 []ygot.Annotation     `path:"state/@sid-type" ygotAnnotation:"true"`
	SidValue                 *uint32               `path:"state/sid-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSidValue                []ygot.Annotation     `path:"state/@sid-value" ygotAnnotation:"true"`
	Weight                   *uint8                `path:"state/weight" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWeight                  []ygot.Annotation     `path:"state/@weight" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid) IsYANGGoStruct() {
}

// GetBackup retrieves the value of the leaf Backup from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Backup is set, it can
// safely use t.GetBackup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Backup == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid) GetBackup() bool {
	if t == nil || t.Backup == nil {
		return false
	}
	return *t.Backup
}

// GetGroup retrieves the value of the leaf Group from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Group is set, it can
// safely use t.GetGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Group == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid) GetGroup() bool {
	if t == nil || t.Group == nil {
		return false
	}
	return *t.Group
}

// GetMultiTopologyIdentifier retrieves the value of the leaf MultiTopologyIdentifier from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MultiTopologyIdentifier is set, it can
// safely use t.GetMultiTopologyIdentifier() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MultiTopologyIdentifier == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid) GetMultiTopologyIdentifier() uint8 {
	if t == nil || t.MultiTopologyIdentifier == nil {
		return 0
	}
	return *t.MultiTopologyIdentifier
}

// GetSidType retrieves the value of the leaf SidType from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SidType is set, it can
// safely use t.GetSidType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SidType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid) GetSidType() E_OspfTypes_SrSidType {
	if t == nil || t.SidType == 0 {
		return 0
	}
	return t.SidType
}

// GetSidValue retrieves the value of the leaf SidValue from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SidValue is set, it can
// safely use t.GetSidValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SidValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid) GetSidValue() uint32 {
	if t == nil || t.SidValue == nil {
		return 0
	}
	return *t.SidValue
}

// GetWeight retrieves the value of the leaf Weight from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Weight is set, it can
// safely use t.GetWeight() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Weight == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid) GetWeight() uint8 {
	if t == nil || t.Weight == nil {
		return 0
	}
	return *t.Weight
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Backup == nil {
		var v bool = false
		t.Backup = &v
	}
	if t.Group == nil {
		var v bool = false
		t.Group = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_AdjacencySid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-link/tlvs/tlv/unknown-tlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint16           `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint16           `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv) IsYANGGoStruct() {
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv) GetLength() uint16 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv) GetType() uint16 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedLink_Tlv_UnknownTlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix struct {
	ΛMetadata      []ygot.Annotation                                                                     `path:"@" ygotAnnotation:"true"`
	AddressFamily  E_ExtendedPrefix_AddressFamily                                                        `path:"state/address-family" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddressFamily []ygot.Annotation                                                                     `path:"state/@address-family" ygotAnnotation:"true"`
	Attached       *bool                                                                                 `path:"state/attached" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAttached      []ygot.Annotation                                                                     `path:"state/@attached" ygotAnnotation:"true"`
	Node           *bool                                                                                 `path:"state/node" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNode          []ygot.Annotation                                                                     `path:"state/@node" ygotAnnotation:"true"`
	Prefix         *string                                                                               `path:"state/prefix" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefix        []ygot.Annotation                                                                     `path:"state/@prefix" ygotAnnotation:"true"`
	PrefixLength   *uint8                                                                                `path:"state/prefix-length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLength  []ygot.Annotation                                                                     `path:"state/@prefix-length" ygotAnnotation:"true"`
	RouteType      E_ExtendedPrefix_RouteType                                                            `path:"state/route-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouteType     []ygot.Annotation                                                                     `path:"state/@route-type" ygotAnnotation:"true"`
	Tlv            []*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv `path:"tlvs/tlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTlv           []ygot.Annotation                                                                     `path:"tlvs/@tlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix) IsYANGGoStruct() {
}

// GetAddressFamily retrieves the value of the leaf AddressFamily from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AddressFamily is set, it can
// safely use t.GetAddressFamily() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AddressFamily == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix) GetAddressFamily() E_ExtendedPrefix_AddressFamily {
	if t == nil || t.AddressFamily == 0 {
		return 0
	}
	return t.AddressFamily
}

// GetAttached retrieves the value of the leaf Attached from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Attached is set, it can
// safely use t.GetAttached() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Attached == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix) GetAttached() bool {
	if t == nil || t.Attached == nil {
		return false
	}
	return *t.Attached
}

// GetNode retrieves the value of the leaf Node from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Node is set, it can
// safely use t.GetNode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Node == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix) GetNode() bool {
	if t == nil || t.Node == nil {
		return false
	}
	return *t.Node
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetPrefixLength retrieves the value of the leaf PrefixLength from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLength is set, it can
// safely use t.GetPrefixLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLength == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix) GetPrefixLength() uint8 {
	if t == nil || t.PrefixLength == nil {
		return 0
	}
	return *t.PrefixLength
}

// GetRouteType retrieves the value of the leaf RouteType from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouteType is set, it can
// safely use t.GetRouteType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouteType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix) GetRouteType() E_ExtendedPrefix_RouteType {
	if t == nil || t.RouteType == 0 {
		return 0
	}
	return t.RouteType
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Attached == nil {
		var v bool = false
		t.Attached = &v
	}
	if t.Node == nil {
		var v bool = false
		t.Node = &v
	}
	for _, e := range t.Tlv {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv struct {
	ΛMetadata            []ygot.Annotation                                                                                       `path:"@" ygotAnnotation:"true"`
	ExtendedPrefixRange  *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange `path:"extended-prefix-range" module:"openconfig-network-instance"`
	ΛExtendedPrefixRange []ygot.Annotation                                                                                       `path:"@extended-prefix-range" ygotAnnotation:"true"`
	PrefixSid            *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid           `path:"prefix-sid" module:"openconfig-network-instance"`
	ΛPrefixSid           []ygot.Annotation                                                                                       `path:"@prefix-sid" ygotAnnotation:"true"`
	SidLabelBinding      *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding     `path:"sid-label-binding" module:"openconfig-network-instance"`
	ΛSidLabelBinding     []ygot.Annotation                                                                                       `path:"@sid-label-binding" ygotAnnotation:"true"`
	Type                 E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE                                                          `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType                []ygot.Annotation                                                                                       `path:"state/@type" ygotAnnotation:"true"`
	UnknownTlv           *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv          `path:"unknown-tlv" module:"openconfig-network-instance"`
	ΛUnknownTlv          []ygot.Annotation                                                                                       `path:"@unknown-tlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv) IsYANGGoStruct() {
}

// GetOrCreateExtendedPrefixRange retrieves the value of the ExtendedPrefixRange field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv) GetOrCreateExtendedPrefixRange() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange {
	if t.ExtendedPrefixRange != nil {
		return t.ExtendedPrefixRange
	}
	t.ExtendedPrefixRange = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange{}
	return t.ExtendedPrefixRange
}

// GetOrCreatePrefixSid retrieves the value of the PrefixSid field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv) GetOrCreatePrefixSid() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid {
	if t.PrefixSid != nil {
		return t.PrefixSid
	}
	t.PrefixSid = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid{}
	return t.PrefixSid
}

// GetOrCreateSidLabelBinding retrieves the value of the SidLabelBinding field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv) GetOrCreateSidLabelBinding() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding {
	if t.SidLabelBinding != nil {
		return t.SidLabelBinding
	}
	t.SidLabelBinding = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding{}
	return t.SidLabelBinding
}

// GetOrCreateUnknownTlv retrieves the value of the UnknownTlv field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv) GetOrCreateUnknownTlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv {
	if t.UnknownTlv != nil {
		return t.UnknownTlv
	}
	t.UnknownTlv = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv{}
	return t.UnknownTlv
}

// GetExtendedPrefixRange returns the value of the ExtendedPrefixRange struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv. If the receiver or the field ExtendedPrefixRange is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv) GetExtendedPrefixRange() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange {
	if t != nil && t.ExtendedPrefixRange != nil {
		return t.ExtendedPrefixRange
	}
	return nil
}

// GetPrefixSid returns the value of the PrefixSid struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv. If the receiver or the field PrefixSid is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv) GetPrefixSid() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid {
	if t != nil && t.PrefixSid != nil {
		return t.PrefixSid
	}
	return nil
}

// GetSidLabelBinding returns the value of the SidLabelBinding struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv. If the receiver or the field SidLabelBinding is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv) GetSidLabelBinding() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding {
	if t != nil && t.SidLabelBinding != nil {
		return t.SidLabelBinding
	}
	return nil
}

// GetUnknownTlv returns the value of the UnknownTlv struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv. If the receiver or the field UnknownTlv is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv) GetUnknownTlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv {
	if t != nil && t.UnknownTlv != nil {
		return t.UnknownTlv
	}
	return nil
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv) GetType() E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.ExtendedPrefixRange.PopulateDefaults()
	t.PrefixSid.PopulateDefaults()
	t.SidLabelBinding.PopulateDefaults()
	t.UnknownTlv.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/extended-prefix-range YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange struct {
	ΛMetadata      []ygot.Annotation              `path:"@" ygotAnnotation:"true"`
	AddressFamily  E_ExtendedPrefix_AddressFamily `path:"state/address-family" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddressFamily []ygot.Annotation              `path:"state/@address-family" ygotAnnotation:"true"`
	InterArea      *bool                          `path:"state/inter-area" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterArea     []ygot.Annotation              `path:"state/@inter-area" ygotAnnotation:"true"`
	Prefix         *string                        `path:"state/prefix" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefix        []ygot.Annotation              `path:"state/@prefix" ygotAnnotation:"true"`
	PrefixLength   *uint8                         `path:"state/prefix-length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPrefixLength  []ygot.Annotation              `path:"state/@prefix-length" ygotAnnotation:"true"`
	RangeSize      *uint16                        `path:"state/range-size" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRangeSize     []ygot.Annotation              `path:"state/@range-size" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange) IsYANGGoStruct() {
}

// GetAddressFamily retrieves the value of the leaf AddressFamily from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AddressFamily is set, it can
// safely use t.GetAddressFamily() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AddressFamily == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange) GetAddressFamily() E_ExtendedPrefix_AddressFamily {
	if t == nil || t.AddressFamily == 0 {
		return 0
	}
	return t.AddressFamily
}

// GetInterArea retrieves the value of the leaf InterArea from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterArea is set, it can
// safely use t.GetInterArea() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterArea == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange) GetInterArea() bool {
	if t == nil || t.InterArea == nil {
		return false
	}
	return *t.InterArea
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetPrefixLength retrieves the value of the leaf PrefixLength from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixLength is set, it can
// safely use t.GetPrefixLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixLength == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange) GetPrefixLength() uint8 {
	if t == nil || t.PrefixLength == nil {
		return 0
	}
	return *t.PrefixLength
}

// GetRangeSize retrieves the value of the leaf RangeSize from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RangeSize is set, it can
// safely use t.GetRangeSize() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RangeSize == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange) GetRangeSize() uint16 {
	if t == nil || t.RangeSize == nil {
		return 0
	}
	return *t.RangeSize
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.InterArea == nil {
		var v bool = false
		t.InterArea = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_ExtendedPrefixRange) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/prefix-sid YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid struct {
	ΛMetadata                []ygot.Annotation        `path:"@" ygotAnnotation:"true"`
	Algorithm                *uint8                   `path:"state/algorithm" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAlgorithm               []ygot.Annotation        `path:"state/@algorithm" ygotAnnotation:"true"`
	ExplicitNull             *bool                    `path:"state/explicit-null" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExplicitNull            []ygot.Annotation        `path:"state/@explicit-null" ygotAnnotation:"true"`
	MappingServer            *bool                    `path:"state/mapping-server" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMappingServer           []ygot.Annotation        `path:"state/@mapping-server" ygotAnnotation:"true"`
	MultiTopologyIdentifier  *uint8                   `path:"state/multi-topology-identifier" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMultiTopologyIdentifier []ygot.Annotation        `path:"state/@multi-topology-identifier" ygotAnnotation:"true"`
	NoPhp                    *bool                    `path:"state/no-php" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNoPhp                   []ygot.Annotation        `path:"state/@no-php" ygotAnnotation:"true"`
	SidScope                 E_PrefixSid_SidScope     `path:"state/sid-scope" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSidScope                []ygot.Annotation        `path:"state/@sid-scope" ygotAnnotation:"true"`
	SidValue                 *uint32                  `path:"state/sid-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSidValue                []ygot.Annotation        `path:"state/@sid-value" ygotAnnotation:"true"`
	SidValueType             E_PrefixSid_SidValueType `path:"state/sid-value-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSidValueType            []ygot.Annotation        `path:"state/@sid-value-type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid) IsYANGGoStruct() {
}

// GetAlgorithm retrieves the value of the leaf Algorithm from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Algorithm is set, it can
// safely use t.GetAlgorithm() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Algorithm == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid) GetAlgorithm() uint8 {
	if t == nil || t.Algorithm == nil {
		return 0
	}
	return *t.Algorithm
}

// GetExplicitNull retrieves the value of the leaf ExplicitNull from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExplicitNull is set, it can
// safely use t.GetExplicitNull() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExplicitNull == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid) GetExplicitNull() bool {
	if t == nil || t.ExplicitNull == nil {
		return false
	}
	return *t.ExplicitNull
}

// GetMappingServer retrieves the value of the leaf MappingServer from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MappingServer is set, it can
// safely use t.GetMappingServer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MappingServer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid) GetMappingServer() bool {
	if t == nil || t.MappingServer == nil {
		return false
	}
	return *t.MappingServer
}

// GetMultiTopologyIdentifier retrieves the value of the leaf MultiTopologyIdentifier from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MultiTopologyIdentifier is set, it can
// safely use t.GetMultiTopologyIdentifier() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MultiTopologyIdentifier == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid) GetMultiTopologyIdentifier() uint8 {
	if t == nil || t.MultiTopologyIdentifier == nil {
		return 0
	}
	return *t.MultiTopologyIdentifier
}

// GetNoPhp retrieves the value of the leaf NoPhp from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NoPhp is set, it can
// safely use t.GetNoPhp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NoPhp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid) GetNoPhp() bool {
	if t == nil || t.NoPhp == nil {
		return false
	}
	return *t.NoPhp
}

// GetSidScope retrieves the value of the leaf SidScope from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SidScope is set, it can
// safely use t.GetSidScope() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SidScope == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid) GetSidScope() E_PrefixSid_SidScope {
	if t == nil || t.SidScope == 0 {
		return 0
	}
	return t.SidScope
}

// GetSidValue retrieves the value of the leaf SidValue from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SidValue is set, it can
// safely use t.GetSidValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SidValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid) GetSidValue() uint32 {
	if t == nil || t.SidValue == nil {
		return 0
	}
	return *t.SidValue
}

// GetSidValueType retrieves the value of the leaf SidValueType from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SidValueType is set, it can
// safely use t.GetSidValueType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SidValueType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid) GetSidValueType() E_PrefixSid_SidValueType {
	if t == nil || t.SidValueType == 0 {
		return 0
	}
	return t.SidValueType
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.ExplicitNull == nil {
		var v bool = false
		t.ExplicitNull = &v
	}
	if t.MappingServer == nil {
		var v bool = false
		t.MappingServer = &v
	}
	if t.NoPhp == nil {
		var v bool = false
		t.NoPhp = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_PrefixSid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/sid-label-binding YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding struct {
	ΛMetadata                []ygot.Annotation                                                                                         `path:"@" ygotAnnotation:"true"`
	Mirroring                *bool                                                                                                     `path:"state/mirroring" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMirroring               []ygot.Annotation                                                                                         `path:"state/@mirroring" ygotAnnotation:"true"`
	MultiTopologyIdentifier  *uint8                                                                                                    `path:"state/multi-topology-identifier" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMultiTopologyIdentifier []ygot.Annotation                                                                                         `path:"state/@multi-topology-identifier" ygotAnnotation:"true"`
	Tlv                      []*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv `path:"tlvs/tlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTlv                     []ygot.Annotation                                                                                         `path:"tlvs/@tlv" ygotAnnotation:"true"`
	Weight                   *uint8                                                                                                    `path:"state/weight" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWeight                  []ygot.Annotation                                                                                         `path:"state/@weight" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding) IsYANGGoStruct() {
}

// GetMirroring retrieves the value of the leaf Mirroring from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mirroring is set, it can
// safely use t.GetMirroring() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mirroring == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding) GetMirroring() bool {
	if t == nil || t.Mirroring == nil {
		return false
	}
	return *t.Mirroring
}

// GetMultiTopologyIdentifier retrieves the value of the leaf MultiTopologyIdentifier from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MultiTopologyIdentifier is set, it can
// safely use t.GetMultiTopologyIdentifier() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MultiTopologyIdentifier == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding) GetMultiTopologyIdentifier() uint8 {
	if t == nil || t.MultiTopologyIdentifier == nil {
		return 0
	}
	return *t.MultiTopologyIdentifier
}

// GetWeight retrieves the value of the leaf Weight from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Weight is set, it can
// safely use t.GetWeight() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Weight == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding) GetWeight() uint8 {
	if t == nil || t.Weight == nil {
		return 0
	}
	return *t.Weight
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Mirroring == nil {
		var v bool = false
		t.Mirroring = &v
	}
	for _, e := range t.Tlv {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/sid-label-binding/tlvs/tlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv struct {
	ΛMetadata        []ygot.Annotation                                                                                                       `path:"@" ygotAnnotation:"true"`
	EroMetric        *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric       `path:"ero-metric" module:"openconfig-network-instance"`
	ΛEroMetric       []ygot.Annotation                                                                                                       `path:"@ero-metric" ygotAnnotation:"true"`
	EroPath          *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath         `path:"ero-path" module:"openconfig-network-instance"`
	ΛEroPath         []ygot.Annotation                                                                                                       `path:"@ero-path" ygotAnnotation:"true"`
	SidLabelBinding  *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding `path:"sid-label-binding" module:"openconfig-network-instance"`
	ΛSidLabelBinding []ygot.Annotation                                                                                                       `path:"@sid-label-binding" ygotAnnotation:"true"`
	Type             E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE                                                        `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType            []ygot.Annotation                                                                                                       `path:"state/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv) IsYANGGoStruct() {
}

// GetOrCreateEroMetric retrieves the value of the EroMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv) GetOrCreateEroMetric() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric {
	if t.EroMetric != nil {
		return t.EroMetric
	}
	t.EroMetric = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric{}
	return t.EroMetric
}

// GetOrCreateEroPath retrieves the value of the EroPath field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv) GetOrCreateEroPath() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath {
	if t.EroPath != nil {
		return t.EroPath
	}
	t.EroPath = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath{}
	return t.EroPath
}

// GetOrCreateSidLabelBinding retrieves the value of the SidLabelBinding field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv) GetOrCreateSidLabelBinding() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding {
	if t.SidLabelBinding != nil {
		return t.SidLabelBinding
	}
	t.SidLabelBinding = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding{}
	return t.SidLabelBinding
}

// GetEroMetric returns the value of the EroMetric struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv. If the receiver or the field EroMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv) GetEroMetric() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric {
	if t != nil && t.EroMetric != nil {
		return t.EroMetric
	}
	return nil
}

// GetEroPath returns the value of the EroPath struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv. If the receiver or the field EroPath is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv) GetEroPath() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath {
	if t != nil && t.EroPath != nil {
		return t.EroPath
	}
	return nil
}

// GetSidLabelBinding returns the value of the SidLabelBinding struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv. If the receiver or the field SidLabelBinding is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv) GetSidLabelBinding() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding {
	if t != nil && t.SidLabelBinding != nil {
		return t.SidLabelBinding
	}
	return nil
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv) GetType() E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.EroMetric.PopulateDefaults()
	t.EroPath.PopulateDefaults()
	t.SidLabelBinding.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/sid-label-binding/tlvs/tlv/ero-metric YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Metric    *uint32           `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation `path:"state/@metric" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric) IsYANGGoStruct() {
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/sid-label-binding/tlvs/tlv/ero-path YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath struct {
	ΛMetadata []ygot.Annotation                                                                                                         `path:"@" ygotAnnotation:"true"`
	Segment   []*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment `path:"segments/segment" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSegment  []ygot.Annotation                                                                                                         `path:"segments/@segment" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath) IsYANGGoStruct() {
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Segment {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/sid-label-binding/tlvs/tlv/ero-path/segments/segment YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment struct {
	ΛMetadata      []ygot.Annotation                                                                                                                     `path:"@" ygotAnnotation:"true"`
	Ipv4Segment    *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment   `path:"ipv4-segment" module:"openconfig-network-instance"`
	ΛIpv4Segment   []ygot.Annotation                                                                                                                     `path:"@ipv4-segment" ygotAnnotation:"true"`
	Loose          *bool                                                                                                                                 `path:"state/loose" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLoose         []ygot.Annotation                                                                                                                     `path:"state/@loose" ygotAnnotation:"true"`
	Type           E_OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE                                                                            `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType          []ygot.Annotation                                                                                                                     `path:"state/@type" ygotAnnotation:"true"`
	UnnumberedHop  *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop `path:"unnumbered-hop" module:"openconfig-network-instance"`
	ΛUnnumberedHop []ygot.Annotation                                                                                                                     `path:"@unnumbered-hop" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment) IsYANGGoStruct() {
}

// GetOrCreateIpv4Segment retrieves the value of the Ipv4Segment field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment) GetOrCreateIpv4Segment() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment {
	if t.Ipv4Segment != nil {
		return t.Ipv4Segment
	}
	t.Ipv4Segment = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment{}
	return t.Ipv4Segment
}

// GetOrCreateUnnumberedHop retrieves the value of the UnnumberedHop field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment) GetOrCreateUnnumberedHop() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop {
	if t.UnnumberedHop != nil {
		return t.UnnumberedHop
	}
	t.UnnumberedHop = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop{}
	return t.UnnumberedHop
}

// GetIpv4Segment returns the value of the Ipv4Segment struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment. If the receiver or the field Ipv4Segment is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment) GetIpv4Segment() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment {
	if t != nil && t.Ipv4Segment != nil {
		return t.Ipv4Segment
	}
	return nil
}

// GetUnnumberedHop returns the value of the UnnumberedHop struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment. If the receiver or the field UnnumberedHop is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment) GetUnnumberedHop() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop {
	if t != nil && t.UnnumberedHop != nil {
		return t.UnnumberedHop
	}
	return nil
}

// GetLoose retrieves the value of the leaf Loose from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Loose is set, it can
// safely use t.GetLoose() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Loose == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment) GetLoose() bool {
	if t == nil || t.Loose == nil {
		return false
	}
	return *t.Loose
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment) GetType() E_OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Loose == nil {
		var v bool = false
		t.Loose = &v
	}
	t.Ipv4Segment.PopulateDefaults()
	t.UnnumberedHop.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/sid-label-binding/tlvs/tlv/ero-path/segments/segment/ipv4-segment YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   *string           `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment) GetAddress() string {
	if t == nil || t.Address == nil {
		return ""
	}
	return *t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_Ipv4Segment) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/sid-label-binding/tlvs/tlv/ero-path/segments/segment/unnumbered-hop YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop struct {
	ΛMetadata    []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	InterfaceId  *uint32           `path:"state/interface-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterfaceId []ygot.Annotation `path:"state/@interface-id" ygotAnnotation:"true"`
	RouterId     *string           `path:"state/router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouterId    []ygot.Annotation `path:"state/@router-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop) IsYANGGoStruct() {
}

// GetInterfaceId retrieves the value of the leaf InterfaceId from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceId is set, it can
// safely use t.GetInterfaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop) GetInterfaceId() uint32 {
	if t == nil || t.InterfaceId == nil {
		return 0
	}
	return *t.InterfaceId
}

// GetRouterId retrieves the value of the leaf RouterId from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterId is set, it can
// safely use t.GetRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop) GetRouterId() string {
	if t == nil || t.RouterId == nil {
		return ""
	}
	return *t.RouterId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_EroPath_Segment_UnnumberedHop) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/sid-label-binding/tlvs/tlv/sid-label-binding YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding struct {
	ΛMetadata []ygot.Annotation     `path:"@" ygotAnnotation:"true"`
	SidType   E_OspfTypes_SrSidType `path:"state/sid-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSidType  []ygot.Annotation     `path:"state/@sid-type" ygotAnnotation:"true"`
	SidValue  *uint32               `path:"state/sid-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSidValue []ygot.Annotation     `path:"state/@sid-value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding) IsYANGGoStruct() {
}

// GetSidType retrieves the value of the leaf SidType from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SidType is set, it can
// safely use t.GetSidType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SidType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding) GetSidType() E_OspfTypes_SrSidType {
	if t == nil || t.SidType == 0 {
		return 0
	}
	return t.SidType
}

// GetSidValue retrieves the value of the leaf SidValue from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SidValue is set, it can
// safely use t.GetSidValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SidValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding) GetSidValue() uint32 {
	if t == nil || t.SidValue == nil {
		return 0
	}
	return *t.SidValue
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_SidLabelBinding_Tlv_SidLabelBinding) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/unknown-tlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint16           `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint16           `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv) IsYANGGoStruct() {
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv) GetLength() uint16 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv) GetType() uint16 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_ExtendedPrefix_Tlv_UnknownTlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/grace-lsa YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa struct {
	ΛMetadata []ygot.Annotation                                                               `path:"@" ygotAnnotation:"true"`
	Tlv       []*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv `path:"tlvs/tlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTlv      []ygot.Annotation                                                               `path:"tlvs/@tlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa) IsYANGGoStruct() {}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Tlv {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/grace-lsa/tlvs/tlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv struct {
	ΛMetadata           []ygot.Annotation                                                                        `path:"@" ygotAnnotation:"true"`
	IpInterfaceAddress  *string                                                                                  `path:"state/ip-interface-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpInterfaceAddress []ygot.Annotation                                                                        `path:"state/@ip-interface-address" ygotAnnotation:"true"`
	Period              *uint32                                                                                  `path:"state/period" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPeriod             []ygot.Annotation                                                                        `path:"state/@period" ygotAnnotation:"true"`
	Reason              E_Tlv_Reason                                                                             `path:"state/reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReason             []ygot.Annotation                                                                        `path:"state/@reason" ygotAnnotation:"true"`
	Type                E_OspfTypes_GRACE_LSA_TLV_TYPES                                                          `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType               []ygot.Annotation                                                                        `path:"state/@type" ygotAnnotation:"true"`
	UnknownTlv          *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv `path:"unknown-tlv" module:"openconfig-network-instance"`
	ΛUnknownTlv         []ygot.Annotation                                                                        `path:"@unknown-tlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv) IsYANGGoStruct() {
}

// GetOrCreateUnknownTlv retrieves the value of the UnknownTlv field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv) GetOrCreateUnknownTlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv {
	if t.UnknownTlv != nil {
		return t.UnknownTlv
	}
	t.UnknownTlv = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv{}
	return t.UnknownTlv
}

// GetUnknownTlv returns the value of the UnknownTlv struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv. If the receiver or the field UnknownTlv is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv) GetUnknownTlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv {
	if t != nil && t.UnknownTlv != nil {
		return t.UnknownTlv
	}
	return nil
}

// GetIpInterfaceAddress retrieves the value of the leaf IpInterfaceAddress from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IpInterfaceAddress is set, it can
// safely use t.GetIpInterfaceAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IpInterfaceAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv) GetIpInterfaceAddress() string {
	if t == nil || t.IpInterfaceAddress == nil {
		return ""
	}
	return *t.IpInterfaceAddress
}

// GetPeriod retrieves the value of the leaf Period from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Period is set, it can
// safely use t.GetPeriod() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Period == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv) GetPeriod() uint32 {
	if t == nil || t.Period == nil {
		return 0
	}
	return *t.Period
}

// GetReason retrieves the value of the leaf Reason from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Reason is set, it can
// safely use t.GetReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Reason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv) GetReason() E_Tlv_Reason {
	if t == nil || t.Reason == 0 {
		return 0
	}
	return t.Reason
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv) GetType() E_OspfTypes_GRACE_LSA_TLV_TYPES {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.UnknownTlv.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/grace-lsa/tlvs/tlv/unknown-tlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint16           `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint16           `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv) IsYANGGoStruct() {
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv) GetLength() uint16 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv) GetType() uint16 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_GraceLsa_Tlv_UnknownTlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/router-information YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation struct {
	ΛMetadata []ygot.Annotation                                                                        `path:"@" ygotAnnotation:"true"`
	Tlv       []*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv `path:"tlvs/tlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTlv      []ygot.Annotation                                                                        `path:"tlvs/@tlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation) IsYANGGoStruct() {
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Tlv {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/router-information/tlvs/tlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv struct {
	ΛMetadata                    []ygot.Annotation                                                                                                  `path:"@" ygotAnnotation:"true"`
	InformationalCapabilities    *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities   `path:"informational-capabilities" module:"openconfig-network-instance"`
	ΛInformationalCapabilities   []ygot.Annotation                                                                                                  `path:"@informational-capabilities" ygotAnnotation:"true"`
	NodeAdministrativeTags       *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags      `path:"node-administrative-tags" module:"openconfig-network-instance"`
	ΛNodeAdministrativeTags      []ygot.Annotation                                                                                                  `path:"@node-administrative-tags" ygotAnnotation:"true"`
	SegmentRoutingAlgorithm      *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm     `path:"segment-routing-algorithm" module:"openconfig-network-instance"`
	ΛSegmentRoutingAlgorithm     []ygot.Annotation                                                                                                  `path:"@segment-routing-algorithm" ygotAnnotation:"true"`
	SegmentRoutingSidLabelRange  *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange `path:"segment-routing-sid-label-range" module:"openconfig-network-instance"`
	ΛSegmentRoutingSidLabelRange []ygot.Annotation                                                                                                  `path:"@segment-routing-sid-label-range" ygotAnnotation:"true"`
	Type                         NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_Type_Union                   `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType                        []ygot.Annotation                                                                                                  `path:"state/@type" ygotAnnotation:"true"`
	UnknownTlv                   *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv                  `path:"unknown-tlv" module:"openconfig-network-instance"`
	ΛUnknownTlv                  []ygot.Annotation                                                                                                  `path:"@unknown-tlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) IsYANGGoStruct() {
}

// GetOrCreateInformationalCapabilities retrieves the value of the InformationalCapabilities field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) GetOrCreateInformationalCapabilities() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities {
	if t.InformationalCapabilities != nil {
		return t.InformationalCapabilities
	}
	t.InformationalCapabilities = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities{}
	return t.InformationalCapabilities
}

// GetOrCreateNodeAdministrativeTags retrieves the value of the NodeAdministrativeTags field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) GetOrCreateNodeAdministrativeTags() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags {
	if t.NodeAdministrativeTags != nil {
		return t.NodeAdministrativeTags
	}
	t.NodeAdministrativeTags = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags{}
	return t.NodeAdministrativeTags
}

// GetOrCreateSegmentRoutingAlgorithm retrieves the value of the SegmentRoutingAlgorithm field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) GetOrCreateSegmentRoutingAlgorithm() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm {
	if t.SegmentRoutingAlgorithm != nil {
		return t.SegmentRoutingAlgorithm
	}
	t.SegmentRoutingAlgorithm = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm{}
	return t.SegmentRoutingAlgorithm
}

// GetOrCreateSegmentRoutingSidLabelRange retrieves the value of the SegmentRoutingSidLabelRange field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) GetOrCreateSegmentRoutingSidLabelRange() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange {
	if t.SegmentRoutingSidLabelRange != nil {
		return t.SegmentRoutingSidLabelRange
	}
	t.SegmentRoutingSidLabelRange = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange{}
	return t.SegmentRoutingSidLabelRange
}

// GetOrCreateUnknownTlv retrieves the value of the UnknownTlv field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) GetOrCreateUnknownTlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv {
	if t.UnknownTlv != nil {
		return t.UnknownTlv
	}
	t.UnknownTlv = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv{}
	return t.UnknownTlv
}

// GetInformationalCapabilities returns the value of the InformationalCapabilities struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv. If the receiver or the field InformationalCapabilities is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) GetInformationalCapabilities() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities {
	if t != nil && t.InformationalCapabilities != nil {
		return t.InformationalCapabilities
	}
	return nil
}

// GetNodeAdministrativeTags returns the value of the NodeAdministrativeTags struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv. If the receiver or the field NodeAdministrativeTags is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) GetNodeAdministrativeTags() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags {
	if t != nil && t.NodeAdministrativeTags != nil {
		return t.NodeAdministrativeTags
	}
	return nil
}

// GetSegmentRoutingAlgorithm returns the value of the SegmentRoutingAlgorithm struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv. If the receiver or the field SegmentRoutingAlgorithm is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) GetSegmentRoutingAlgorithm() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm {
	if t != nil && t.SegmentRoutingAlgorithm != nil {
		return t.SegmentRoutingAlgorithm
	}
	return nil
}

// GetSegmentRoutingSidLabelRange returns the value of the SegmentRoutingSidLabelRange struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv. If the receiver or the field SegmentRoutingSidLabelRange is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) GetSegmentRoutingSidLabelRange() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange {
	if t != nil && t.SegmentRoutingSidLabelRange != nil {
		return t.SegmentRoutingSidLabelRange
	}
	return nil
}

// GetUnknownTlv returns the value of the UnknownTlv struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv. If the receiver or the field UnknownTlv is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) GetUnknownTlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv {
	if t != nil && t.UnknownTlv != nil {
		return t.UnknownTlv
	}
	return nil
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) GetType() NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_Type_Union {
	if t == nil || t.Type == nil {
		return nil
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.InformationalCapabilities.PopulateDefaults()
	t.NodeAdministrativeTags.PopulateDefaults()
	t.SegmentRoutingAlgorithm.PopulateDefaults()
	t.SegmentRoutingSidLabelRange.PopulateDefaults()
	t.UnknownTlv.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_Type_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/router-information/tlvs/tlv/state/type within the YANG schema.
// Union type can be one of [E_OspfTypes_RI_LSA_TLV_TYPES, E_RouterInformation_Tlv_Type_Enum].
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_Type_Union interface {
	// Union type can be one of [E_OspfTypes_RI_LSA_TLV_TYPES, E_RouterInformation_Tlv_Type_Enum]
	Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_Type_Union()
}

// Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_Type_Union ensures that E_OspfTypes_RI_LSA_TLV_TYPES
// implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_Type_Union interface.
func (E_OspfTypes_RI_LSA_TLV_TYPES) Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_Type_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_Type_Union ensures that E_RouterInformation_Tlv_Type_Enum
// implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_Type_Union interface.
func (E_RouterInformation_Tlv_Type_Enum) Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_Type_Union() {
}

// To_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_Type_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_Type_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv) To_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_Type_Union(i interface{}) (NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_Type_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_Type_Union); ok {
		return v, nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_Type_Union, unknown union type, got: %T, want any of [E_OspfTypes_RI_LSA_TLV_TYPES, E_RouterInformation_Tlv_Type_Enum]", i, i)
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/router-information/tlvs/tlv/informational-capabilities YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities struct {
	ΛMetadata               []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ExperimentalTe          *bool             `path:"state/experimental-te" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛExperimentalTe         []ygot.Annotation `path:"state/@experimental-te" ygotAnnotation:"true"`
	GracefulRestartCapable  *bool             `path:"state/graceful-restart-capable" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛGracefulRestartCapable []ygot.Annotation `path:"state/@graceful-restart-capable" ygotAnnotation:"true"`
	GracefulRestartHelper   *bool             `path:"state/graceful-restart-helper" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛGracefulRestartHelper  []ygot.Annotation `path:"state/@graceful-restart-helper" ygotAnnotation:"true"`
	PointToPointOverLan     *bool             `path:"state/point-to-point-over-lan" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPointToPointOverLan    []ygot.Annotation `path:"state/@point-to-point-over-lan" ygotAnnotation:"true"`
	StubRouter              *bool             `path:"state/stub-router" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛStubRouter             []ygot.Annotation `path:"state/@stub-router" ygotAnnotation:"true"`
	TrafficEngineering      *bool             `path:"state/traffic-engineering" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTrafficEngineering     []ygot.Annotation `path:"state/@traffic-engineering" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities) IsYANGGoStruct() {
}

// GetExperimentalTe retrieves the value of the leaf ExperimentalTe from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExperimentalTe is set, it can
// safely use t.GetExperimentalTe() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExperimentalTe == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities) GetExperimentalTe() bool {
	if t == nil || t.ExperimentalTe == nil {
		return false
	}
	return *t.ExperimentalTe
}

// GetGracefulRestartCapable retrieves the value of the leaf GracefulRestartCapable from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if GracefulRestartCapable is set, it can
// safely use t.GetGracefulRestartCapable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.GracefulRestartCapable == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities) GetGracefulRestartCapable() bool {
	if t == nil || t.GracefulRestartCapable == nil {
		return false
	}
	return *t.GracefulRestartCapable
}

// GetGracefulRestartHelper retrieves the value of the leaf GracefulRestartHelper from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if GracefulRestartHelper is set, it can
// safely use t.GetGracefulRestartHelper() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.GracefulRestartHelper == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities) GetGracefulRestartHelper() bool {
	if t == nil || t.GracefulRestartHelper == nil {
		return false
	}
	return *t.GracefulRestartHelper
}

// GetPointToPointOverLan retrieves the value of the leaf PointToPointOverLan from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PointToPointOverLan is set, it can
// safely use t.GetPointToPointOverLan() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PointToPointOverLan == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities) GetPointToPointOverLan() bool {
	if t == nil || t.PointToPointOverLan == nil {
		return false
	}
	return *t.PointToPointOverLan
}

// GetStubRouter retrieves the value of the leaf StubRouter from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if StubRouter is set, it can
// safely use t.GetStubRouter() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.StubRouter == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities) GetStubRouter() bool {
	if t == nil || t.StubRouter == nil {
		return false
	}
	return *t.StubRouter
}

// GetTrafficEngineering retrieves the value of the leaf TrafficEngineering from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TrafficEngineering is set, it can
// safely use t.GetTrafficEngineering() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TrafficEngineering == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities) GetTrafficEngineering() bool {
	if t == nil || t.TrafficEngineering == nil {
		return false
	}
	return *t.TrafficEngineering
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.ExperimentalTe == nil {
		var v bool = false
		t.ExperimentalTe = &v
	}
	if t.GracefulRestartCapable == nil {
		var v bool = false
		t.GracefulRestartCapable = &v
	}
	if t.GracefulRestartHelper == nil {
		var v bool = false
		t.GracefulRestartHelper = &v
	}
	if t.PointToPointOverLan == nil {
		var v bool = false
		t.PointToPointOverLan = &v
	}
	if t.StubRouter == nil {
		var v bool = false
		t.StubRouter = &v
	}
	if t.TrafficEngineering == nil {
		var v bool = false
		t.TrafficEngineering = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_InformationalCapabilities) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/router-information/tlvs/tlv/node-administrative-tags YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AdministrativeTags  []uint32          `path:"state/administrative-tags" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdministrativeTags []ygot.Annotation `path:"state/@administrative-tags" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags) IsYANGGoStruct() {
}

// GetAdministrativeTags retrieves the value of the leaf AdministrativeTags from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdministrativeTags is set, it can
// safely use t.GetAdministrativeTags() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdministrativeTags == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags) GetAdministrativeTags() []uint32 {
	if t == nil || t.AdministrativeTags == nil {
		return nil
	}
	return t.AdministrativeTags
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_NodeAdministrativeTags) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/router-information/tlvs/tlv/segment-routing-algorithm YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm struct {
	ΛMetadata            []ygot.Annotation          `path:"@" ygotAnnotation:"true"`
	SupportedAlgorithms  []E_OspfTypes_SR_ALGORITHM `path:"state/supported-algorithms" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSupportedAlgorithms []ygot.Annotation          `path:"state/@supported-algorithms" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm) IsYANGGoStruct() {
}

// GetSupportedAlgorithms retrieves the value of the leaf SupportedAlgorithms from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SupportedAlgorithms is set, it can
// safely use t.GetSupportedAlgorithms() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SupportedAlgorithms == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm) GetSupportedAlgorithms() []E_OspfTypes_SR_ALGORITHM {
	if t == nil || t.SupportedAlgorithms == nil {
		return nil
	}
	return t.SupportedAlgorithms
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingAlgorithm) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/router-information/tlvs/tlv/segment-routing-sid-label-range YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange struct {
	ΛMetadata []ygot.Annotation                                                                                                        `path:"@" ygotAnnotation:"true"`
	Tlv       []*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv `path:"tlvs/tlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTlv      []ygot.Annotation                                                                                                        `path:"tlvs/@tlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange) IsYANGGoStruct() {
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Tlv {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/router-information/tlvs/tlv/segment-routing-sid-label-range/tlvs/tlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv struct {
	ΛMetadata   []ygot.Annotation                                                                                                                 `path:"@" ygotAnnotation:"true"`
	RangeSize   *uint32                                                                                                                           `path:"state/range-size" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRangeSize  []ygot.Annotation                                                                                                                 `path:"state/@range-size" ygotAnnotation:"true"`
	SidLabel    *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel   `path:"sid-label" module:"openconfig-network-instance"`
	ΛSidLabel   []ygot.Annotation                                                                                                                 `path:"@sid-label" ygotAnnotation:"true"`
	Type        NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_Type_Union  `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType       []ygot.Annotation                                                                                                                 `path:"state/@type" ygotAnnotation:"true"`
	UnknownTlv  *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv `path:"unknown-tlv" module:"openconfig-network-instance"`
	ΛUnknownTlv []ygot.Annotation                                                                                                                 `path:"@unknown-tlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv) IsYANGGoStruct() {
}

// GetOrCreateSidLabel retrieves the value of the SidLabel field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv) GetOrCreateSidLabel() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel {
	if t.SidLabel != nil {
		return t.SidLabel
	}
	t.SidLabel = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel{}
	return t.SidLabel
}

// GetOrCreateUnknownTlv retrieves the value of the UnknownTlv field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv) GetOrCreateUnknownTlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv {
	if t.UnknownTlv != nil {
		return t.UnknownTlv
	}
	t.UnknownTlv = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv{}
	return t.UnknownTlv
}

// GetSidLabel returns the value of the SidLabel struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv. If the receiver or the field SidLabel is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv) GetSidLabel() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel {
	if t != nil && t.SidLabel != nil {
		return t.SidLabel
	}
	return nil
}

// GetUnknownTlv returns the value of the UnknownTlv struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv. If the receiver or the field UnknownTlv is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv) GetUnknownTlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv {
	if t != nil && t.UnknownTlv != nil {
		return t.UnknownTlv
	}
	return nil
}

// GetRangeSize retrieves the value of the leaf RangeSize from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RangeSize is set, it can
// safely use t.GetRangeSize() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RangeSize == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv) GetRangeSize() uint32 {
	if t == nil || t.RangeSize == nil {
		return 0
	}
	return *t.RangeSize
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv) GetType() NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_Type_Union {
	if t == nil || t.Type == nil {
		return nil
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.SidLabel.PopulateDefaults()
	t.UnknownTlv.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_Type_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/router-information/tlvs/tlv/segment-routing-sid-label-range/tlvs/tlv/state/type within the YANG schema.
// Union type can be one of [E_OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES, E_SegmentRoutingSidLabelRange_Tlv_Type_Enum].
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_Type_Union interface {
	// Union type can be one of [E_OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES, E_SegmentRoutingSidLabelRange_Tlv_Type_Enum]
	Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_Type_Union()
}

// Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_Type_Union ensures that E_OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES
// implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_Type_Union interface.
func (E_OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES) Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_Type_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_Type_Union ensures that E_SegmentRoutingSidLabelRange_Tlv_Type_Enum
// implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_Type_Union interface.
func (E_SegmentRoutingSidLabelRange_Tlv_Type_Enum) Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_Type_Union() {
}

// To_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_Type_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_Type_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv) To_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_Type_Union(i interface{}) (NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_Type_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_Type_Union); ok {
		return v, nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_Type_Union, unknown union type, got: %T, want any of [E_OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES, E_SegmentRoutingSidLabelRange_Tlv_Type_Enum]", i, i)
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/router-information/tlvs/tlv/segment-routing-sid-label-range/tlvs/tlv/sid-label YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel struct {
	ΛMetadata   []ygot.Annotation     `path:"@" ygotAnnotation:"true"`
	EntryType   E_OspfTypes_SrSidType `path:"state/entry-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEntryType  []ygot.Annotation     `path:"state/@entry-type" ygotAnnotation:"true"`
	FirstValue  *uint32               `path:"state/first-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛFirstValue []ygot.Annotation     `path:"state/@first-value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel) IsYANGGoStruct() {
}

// GetEntryType retrieves the value of the leaf EntryType from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EntryType is set, it can
// safely use t.GetEntryType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EntryType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel) GetEntryType() E_OspfTypes_SrSidType {
	if t == nil || t.EntryType == 0 {
		return 0
	}
	return t.EntryType
}

// GetFirstValue retrieves the value of the leaf FirstValue from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FirstValue is set, it can
// safely use t.GetFirstValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FirstValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel) GetFirstValue() uint32 {
	if t == nil || t.FirstValue == nil {
		return 0
	}
	return *t.FirstValue
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_SidLabel) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/router-information/tlvs/tlv/segment-routing-sid-label-range/tlvs/tlv/unknown-tlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint16           `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint16           `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv) IsYANGGoStruct() {
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv) GetLength() uint16 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv) GetType() uint16 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_SegmentRoutingSidLabelRange_Tlv_UnknownTlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/router-information/tlvs/tlv/unknown-tlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint16           `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint16           `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv) IsYANGGoStruct() {
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv) GetLength() uint16 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv) GetType() uint16 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_RouterInformation_Tlv_UnknownTlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering struct {
	ΛMetadata []ygot.Annotation                                                                         `path:"@" ygotAnnotation:"true"`
	Tlv       []*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv `path:"tlvs/tlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTlv      []ygot.Annotation                                                                         `path:"tlvs/@tlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering) IsYANGGoStruct() {
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Tlv {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering/tlvs/tlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv struct {
	ΛMetadata      []ygot.Annotation                                                                                     `path:"@" ygotAnnotation:"true"`
	Link           *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link          `path:"link" module:"openconfig-network-instance"`
	ΛLink          []ygot.Annotation                                                                                     `path:"@link" ygotAnnotation:"true"`
	NodeAttribute  *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute `path:"node-attribute" module:"openconfig-network-instance"`
	ΛNodeAttribute []ygot.Annotation                                                                                     `path:"@node-attribute" ygotAnnotation:"true"`
	RouterAddress  *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress `path:"router-address" module:"openconfig-network-instance"`
	ΛRouterAddress []ygot.Annotation                                                                                     `path:"@router-address" ygotAnnotation:"true"`
	Type           E_OspfTypes_OSPF_TE_LSA_TLV_TYPE                                                                      `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType          []ygot.Annotation                                                                                     `path:"state/@type" ygotAnnotation:"true"`
	UnknownTlv     *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv    `path:"unknown-tlv" module:"openconfig-network-instance"`
	ΛUnknownTlv    []ygot.Annotation                                                                                     `path:"@unknown-tlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv) IsYANGGoStruct() {
}

// GetOrCreateLink retrieves the value of the Link field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv) GetOrCreateLink() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link {
	if t.Link != nil {
		return t.Link
	}
	t.Link = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link{}
	return t.Link
}

// GetOrCreateNodeAttribute retrieves the value of the NodeAttribute field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv) GetOrCreateNodeAttribute() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute {
	if t.NodeAttribute != nil {
		return t.NodeAttribute
	}
	t.NodeAttribute = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute{}
	return t.NodeAttribute
}

// GetOrCreateRouterAddress retrieves the value of the RouterAddress field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv) GetOrCreateRouterAddress() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress {
	if t.RouterAddress != nil {
		return t.RouterAddress
	}
	t.RouterAddress = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress{}
	return t.RouterAddress
}

// GetOrCreateUnknownTlv retrieves the value of the UnknownTlv field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv) GetOrCreateUnknownTlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv {
	if t.UnknownTlv != nil {
		return t.UnknownTlv
	}
	t.UnknownTlv = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv{}
	return t.UnknownTlv
}

// GetLink returns the value of the Link struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv. If the receiver or the field Link is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv) GetLink() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link {
	if t != nil && t.Link != nil {
		return t.Link
	}
	return nil
}

// GetNodeAttribute returns the value of the NodeAttribute struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv. If the receiver or the field NodeAttribute is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv) GetNodeAttribute() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute {
	if t != nil && t.NodeAttribute != nil {
		return t.NodeAttribute
	}
	return nil
}

// GetRouterAddress returns the value of the RouterAddress struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv. If the receiver or the field RouterAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv) GetRouterAddress() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress {
	if t != nil && t.RouterAddress != nil {
		return t.RouterAddress
	}
	return nil
}

// GetUnknownTlv returns the value of the UnknownTlv struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv. If the receiver or the field UnknownTlv is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv) GetUnknownTlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv {
	if t != nil && t.UnknownTlv != nil {
		return t.UnknownTlv
	}
	return nil
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv) GetType() E_OspfTypes_OSPF_TE_LSA_TLV_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Link.PopulateDefaults()
	t.NodeAttribute.PopulateDefaults()
	t.RouterAddress.PopulateDefaults()
	t.UnknownTlv.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering/tlvs/tlv/link YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link struct {
	ΛMetadata []ygot.Annotation                                                                                     `path:"@" ygotAnnotation:"true"`
	SubTlv    []*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv `path:"sub-tlvs/sub-tlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubTlv   []ygot.Annotation                                                                                     `path:"sub-tlvs/@sub-tlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link) IsYANGGoStruct() {
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.SubTlv {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering/tlvs/tlv/link/sub-tlvs/sub-tlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv struct {
	ΛMetadata                   []ygot.Annotation                                                                                                                 `path:"@" ygotAnnotation:"true"`
	AdminGroup                  map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup          `path:"administrative-groups/admin-group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdminGroup                 []ygot.Annotation                                                                                                                 `path:"administrative-groups/@admin-group" ygotAnnotation:"true"`
	LinkId                      *string                                                                                                                           `path:"state/link-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLinkId                     []ygot.Annotation                                                                                                                 `path:"state/@link-id" ygotAnnotation:"true"`
	LinkType                    E_SubTlv_LinkType                                                                                                                 `path:"state/link-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLinkType                   []ygot.Annotation                                                                                                                 `path:"state/@link-type" ygotAnnotation:"true"`
	LocalIpAddress              []string                                                                                                                          `path:"state/local-ip-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalIpAddress             []ygot.Annotation                                                                                                                 `path:"state/@local-ip-address" ygotAnnotation:"true"`
	MaximumBandwidth            Binary                                                                                                                            `path:"state/maximum-bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximumBandwidth           []ygot.Annotation                                                                                                                 `path:"state/@maximum-bandwidth" ygotAnnotation:"true"`
	MaximumReservableBandwidth  Binary                                                                                                                            `path:"state/maximum-reservable-bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximumReservableBandwidth []ygot.Annotation                                                                                                                 `path:"state/@maximum-reservable-bandwidth" ygotAnnotation:"true"`
	Metric                      *uint32                                                                                                                           `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric                     []ygot.Annotation                                                                                                                 `path:"state/@metric" ygotAnnotation:"true"`
	RemoteIpAddress             []string                                                                                                                          `path:"state/remote-ip-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRemoteIpAddress            []ygot.Annotation                                                                                                                 `path:"state/@remote-ip-address" ygotAnnotation:"true"`
	Type                        NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_Type_Union                     `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType                       []ygot.Annotation                                                                                                                 `path:"state/@type" ygotAnnotation:"true"`
	UnknownSubtlv               *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv                 `path:"unknown-subtlv" module:"openconfig-network-instance"`
	ΛUnknownSubtlv              []ygot.Annotation                                                                                                                 `path:"@unknown-subtlv" ygotAnnotation:"true"`
	UnknownType                 *uint16                                                                                                                           `path:"state/unknown-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownType                []ygot.Annotation                                                                                                                 `path:"state/@unknown-type" ygotAnnotation:"true"`
	UnknownValue                Binary                                                                                                                            `path:"state/unknown-value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnknownValue               []ygot.Annotation                                                                                                                 `path:"state/@unknown-value" ygotAnnotation:"true"`
	UnreservedBandwidth         map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth `path:"unreserved-bandwidths/unreserved-bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnreservedBandwidth        []ygot.Annotation                                                                                                                 `path:"unreserved-bandwidths/@unreserved-bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) IsYANGGoStruct() {
}

// NewAdminGroup creates a new entry in the AdminGroup list of the
// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) NewAdminGroup(BitIndex uint8) (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AdminGroup == nil {
		t.AdminGroup = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup)
	}

	key := BitIndex

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AdminGroup[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AdminGroup", key)
	}

	t.AdminGroup[key] = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup{
		BitIndex: &BitIndex,
	}

	return t.AdminGroup[key], nil
}

// RenameAdminGroup renames an entry in the list AdminGroup within
// the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) RenameAdminGroup(oldK, newK uint8) error {
	if _, ok := t.AdminGroup[newK]; ok {
		return fmt.Errorf("key %v already exists in AdminGroup", newK)
	}

	e, ok := t.AdminGroup[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AdminGroup", oldK)
	}
	e.BitIndex = &newK

	t.AdminGroup[newK] = e
	delete(t.AdminGroup, oldK)
	return nil
}

// GetOrCreateAdminGroupMap returns the list (map) from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetOrCreateAdminGroupMap() map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup {
	if t.AdminGroup == nil {
		t.AdminGroup = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup)
	}
	return t.AdminGroup
}

// GetOrCreateAdminGroup retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetOrCreateAdminGroup(BitIndex uint8) *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup {

	key := BitIndex

	if v, ok := t.AdminGroup[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAdminGroup(BitIndex)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAdminGroup got unexpected error: %v", err))
	}
	return v
}

// GetAdminGroup retrieves the value with the specified key from
// the AdminGroup map field of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetAdminGroup(BitIndex uint8) *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup {

	if t == nil {
		return nil
	}

	key := BitIndex

	if lm, ok := t.AdminGroup[key]; ok {
		return lm
	}
	return nil
}

// AppendAdminGroup appends the supplied NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup struct to the
// list AdminGroup of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) AppendAdminGroup(v *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup) error {
	if v.BitIndex == nil {
		return fmt.Errorf("invalid nil key received for BitIndex")
	}

	key := *v.BitIndex

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AdminGroup == nil {
		t.AdminGroup = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup)
	}

	if _, ok := t.AdminGroup[key]; ok {
		return fmt.Errorf("duplicate key for list AdminGroup %v", key)
	}

	t.AdminGroup[key] = v
	return nil
}

// NewUnreservedBandwidth creates a new entry in the UnreservedBandwidth list of the
// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) NewUnreservedBandwidth(Priority uint8) (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnreservedBandwidth == nil {
		t.UnreservedBandwidth = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth)
	}

	key := Priority

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.UnreservedBandwidth[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list UnreservedBandwidth", key)
	}

	t.UnreservedBandwidth[key] = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth{
		Priority: &Priority,
	}

	return t.UnreservedBandwidth[key], nil
}

// RenameUnreservedBandwidth renames an entry in the list UnreservedBandwidth within
// the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) RenameUnreservedBandwidth(oldK, newK uint8) error {
	if _, ok := t.UnreservedBandwidth[newK]; ok {
		return fmt.Errorf("key %v already exists in UnreservedBandwidth", newK)
	}

	e, ok := t.UnreservedBandwidth[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in UnreservedBandwidth", oldK)
	}
	e.Priority = &newK

	t.UnreservedBandwidth[newK] = e
	delete(t.UnreservedBandwidth, oldK)
	return nil
}

// GetOrCreateUnreservedBandwidthMap returns the list (map) from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetOrCreateUnreservedBandwidthMap() map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth {
	if t.UnreservedBandwidth == nil {
		t.UnreservedBandwidth = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth)
	}
	return t.UnreservedBandwidth
}

// GetOrCreateUnreservedBandwidth retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetOrCreateUnreservedBandwidth(Priority uint8) *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth {

	key := Priority

	if v, ok := t.UnreservedBandwidth[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUnreservedBandwidth(Priority)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUnreservedBandwidth got unexpected error: %v", err))
	}
	return v
}

// GetUnreservedBandwidth retrieves the value with the specified key from
// the UnreservedBandwidth map field of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetUnreservedBandwidth(Priority uint8) *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth {

	if t == nil {
		return nil
	}

	key := Priority

	if lm, ok := t.UnreservedBandwidth[key]; ok {
		return lm
	}
	return nil
}

// AppendUnreservedBandwidth appends the supplied NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth struct to the
// list UnreservedBandwidth of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) AppendUnreservedBandwidth(v *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth) error {
	if v.Priority == nil {
		return fmt.Errorf("invalid nil key received for Priority")
	}

	key := *v.Priority

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.UnreservedBandwidth == nil {
		t.UnreservedBandwidth = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth)
	}

	if _, ok := t.UnreservedBandwidth[key]; ok {
		return fmt.Errorf("duplicate key for list UnreservedBandwidth %v", key)
	}

	t.UnreservedBandwidth[key] = v
	return nil
}

// GetOrCreateUnknownSubtlv retrieves the value of the UnknownSubtlv field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetOrCreateUnknownSubtlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv {
	if t.UnknownSubtlv != nil {
		return t.UnknownSubtlv
	}
	t.UnknownSubtlv = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv{}
	return t.UnknownSubtlv
}

// GetUnknownSubtlv returns the value of the UnknownSubtlv struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv. If the receiver or the field UnknownSubtlv is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetUnknownSubtlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv {
	if t != nil && t.UnknownSubtlv != nil {
		return t.UnknownSubtlv
	}
	return nil
}

// GetLinkId retrieves the value of the leaf LinkId from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkId is set, it can
// safely use t.GetLinkId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetLinkId() string {
	if t == nil || t.LinkId == nil {
		return ""
	}
	return *t.LinkId
}

// GetLinkType retrieves the value of the leaf LinkType from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkType is set, it can
// safely use t.GetLinkType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetLinkType() E_SubTlv_LinkType {
	if t == nil || t.LinkType == 0 {
		return 0
	}
	return t.LinkType
}

// GetLocalIpAddress retrieves the value of the leaf LocalIpAddress from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalIpAddress is set, it can
// safely use t.GetLocalIpAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalIpAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetLocalIpAddress() []string {
	if t == nil || t.LocalIpAddress == nil {
		return nil
	}
	return t.LocalIpAddress
}

// GetMaximumBandwidth retrieves the value of the leaf MaximumBandwidth from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaximumBandwidth is set, it can
// safely use t.GetMaximumBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaximumBandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetMaximumBandwidth() Binary {
	if t == nil || t.MaximumBandwidth == nil {
		return nil
	}
	return t.MaximumBandwidth
}

// GetMaximumReservableBandwidth retrieves the value of the leaf MaximumReservableBandwidth from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaximumReservableBandwidth is set, it can
// safely use t.GetMaximumReservableBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaximumReservableBandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetMaximumReservableBandwidth() Binary {
	if t == nil || t.MaximumReservableBandwidth == nil {
		return nil
	}
	return t.MaximumReservableBandwidth
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetRemoteIpAddress retrieves the value of the leaf RemoteIpAddress from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteIpAddress is set, it can
// safely use t.GetRemoteIpAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteIpAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetRemoteIpAddress() []string {
	if t == nil || t.RemoteIpAddress == nil {
		return nil
	}
	return t.RemoteIpAddress
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetType() NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_Type_Union {
	if t == nil || t.Type == nil {
		return nil
	}
	return t.Type
}

// GetUnknownType retrieves the value of the leaf UnknownType from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UnknownType is set, it can
// safely use t.GetUnknownType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UnknownType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetUnknownType() uint16 {
	if t == nil || t.UnknownType == nil {
		return 0
	}
	return *t.UnknownType
}

// GetUnknownValue retrieves the value of the leaf UnknownValue from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UnknownValue is set, it can
// safely use t.GetUnknownValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UnknownValue == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) GetUnknownValue() Binary {
	if t == nil || t.UnknownValue == nil {
		return nil
	}
	return t.UnknownValue
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.UnknownSubtlv.PopulateDefaults()
	for _, e := range t.AdminGroup {
		e.PopulateDefaults()
	}
	for _, e := range t.UnreservedBandwidth {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_Type_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering/tlvs/tlv/link/sub-tlvs/sub-tlv/state/type within the YANG schema.
// Union type can be one of [E_Link_SubTlv_Type_Enum, E_OspfTypes_OSPF_TE_LINK_TLV_TYPE].
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_Type_Union interface {
	// Union type can be one of [E_Link_SubTlv_Type_Enum, E_OspfTypes_OSPF_TE_LINK_TLV_TYPE]
	Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_Type_Union()
}

// Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_Type_Union ensures that E_Link_SubTlv_Type_Enum
// implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_Type_Union interface.
func (E_Link_SubTlv_Type_Enum) Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_Type_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_Type_Union ensures that E_OspfTypes_OSPF_TE_LINK_TLV_TYPE
// implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_Type_Union interface.
func (E_OspfTypes_OSPF_TE_LINK_TLV_TYPE) Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_Type_Union() {
}

// To_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_Type_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_Type_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv) To_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_Type_Union(i interface{}) (NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_Type_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_Type_Union); ok {
		return v, nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_Type_Union, unknown union type, got: %T, want any of [E_Link_SubTlv_Type_Enum, E_OspfTypes_OSPF_TE_LINK_TLV_TYPE]", i, i)
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering/tlvs/tlv/link/sub-tlvs/sub-tlv/administrative-groups/admin-group YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	BitIndex  *uint8            `path:"state/bit-index|bit-index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛBitIndex []ygot.Annotation `path:"state/@bit-index|@bit-index" ygotAnnotation:"true"`
	Set       *bool             `path:"state/set" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSet      []ygot.Annotation `path:"state/@set" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup) IsYANGGoStruct() {
}

// GetBitIndex retrieves the value of the leaf BitIndex from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BitIndex is set, it can
// safely use t.GetBitIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BitIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup) GetBitIndex() uint8 {
	if t == nil || t.BitIndex == nil {
		return 0
	}
	return *t.BitIndex
}

// GetSet retrieves the value of the leaf Set from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Set is set, it can
// safely use t.GetSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Set == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup) GetSet() bool {
	if t == nil || t.Set == nil {
		return false
	}
	return *t.Set
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Set == nil {
		var v bool = false
		t.Set = &v
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup) ΛListKeyMap() (map[string]interface{}, error) {
	if t.BitIndex == nil {
		return nil, fmt.Errorf("nil value for key BitIndex")
	}

	return map[string]interface{}{
		"bit-index": *t.BitIndex,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_AdminGroup) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering/tlvs/tlv/link/sub-tlvs/sub-tlv/unknown-subtlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint16           `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint16           `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv) IsYANGGoStruct() {
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv) GetLength() uint16 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv) GetType() uint16 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnknownSubtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering/tlvs/tlv/link/sub-tlvs/sub-tlv/unreserved-bandwidths/unreserved-bandwidth YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Priority             *uint8            `path:"state/priority|priority" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPriority            []ygot.Annotation `path:"state/@priority|@priority" ygotAnnotation:"true"`
	UnreservedBandwidth  Binary            `path:"state/unreserved-bandwidth" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUnreservedBandwidth []ygot.Annotation `path:"state/@unreserved-bandwidth" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth) IsYANGGoStruct() {
}

// GetPriority retrieves the value of the leaf Priority from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth) GetPriority() uint8 {
	if t == nil || t.Priority == nil {
		return 0
	}
	return *t.Priority
}

// GetUnreservedBandwidth retrieves the value of the leaf UnreservedBandwidth from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UnreservedBandwidth is set, it can
// safely use t.GetUnreservedBandwidth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UnreservedBandwidth == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth) GetUnreservedBandwidth() Binary {
	if t == nil || t.UnreservedBandwidth == nil {
		return nil
	}
	return t.UnreservedBandwidth
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Priority == nil {
		return nil, fmt.Errorf("nil value for key Priority")
	}

	return map[string]interface{}{
		"priority": *t.Priority,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_Link_SubTlv_UnreservedBandwidth) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering/tlvs/tlv/node-attribute YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute struct {
	ΛMetadata []ygot.Annotation                                                                                              `path:"@" ygotAnnotation:"true"`
	SubTlv    []*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv `path:"sub-tlvs/sub-tlv" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubTlv   []ygot.Annotation                                                                                              `path:"sub-tlvs/@sub-tlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute) IsYANGGoStruct() {
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.SubTlv {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering/tlvs/tlv/node-attribute/sub-tlvs/sub-tlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv struct {
	ΛMetadata           []ygot.Annotation                                                                                                          `path:"@" ygotAnnotation:"true"`
	LocalIpv4Addresses  []string                                                                                                                   `path:"state/local-ipv4-addresses" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalIpv4Addresses []ygot.Annotation                                                                                                          `path:"state/@local-ipv4-addresses" ygotAnnotation:"true"`
	LocalIpv6Addresses  []string                                                                                                                   `path:"state/local-ipv6-addresses" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLocalIpv6Addresses []ygot.Annotation                                                                                                          `path:"state/@local-ipv6-addresses" ygotAnnotation:"true"`
	Type                NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_Type_Union     `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType               []ygot.Annotation                                                                                                          `path:"state/@type" ygotAnnotation:"true"`
	UnknownSubtlv       *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv `path:"unknown-subtlv" module:"openconfig-network-instance"`
	ΛUnknownSubtlv      []ygot.Annotation                                                                                                          `path:"@unknown-subtlv" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv) IsYANGGoStruct() {
}

// GetOrCreateUnknownSubtlv retrieves the value of the UnknownSubtlv field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv) GetOrCreateUnknownSubtlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv {
	if t.UnknownSubtlv != nil {
		return t.UnknownSubtlv
	}
	t.UnknownSubtlv = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv{}
	return t.UnknownSubtlv
}

// GetUnknownSubtlv returns the value of the UnknownSubtlv struct pointer
// from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv. If the receiver or the field UnknownSubtlv is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv) GetUnknownSubtlv() *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv {
	if t != nil && t.UnknownSubtlv != nil {
		return t.UnknownSubtlv
	}
	return nil
}

// GetLocalIpv4Addresses retrieves the value of the leaf LocalIpv4Addresses from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalIpv4Addresses is set, it can
// safely use t.GetLocalIpv4Addresses() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalIpv4Addresses == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv) GetLocalIpv4Addresses() []string {
	if t == nil || t.LocalIpv4Addresses == nil {
		return nil
	}
	return t.LocalIpv4Addresses
}

// GetLocalIpv6Addresses retrieves the value of the leaf LocalIpv6Addresses from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalIpv6Addresses is set, it can
// safely use t.GetLocalIpv6Addresses() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalIpv6Addresses == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv) GetLocalIpv6Addresses() []string {
	if t == nil || t.LocalIpv6Addresses == nil {
		return nil
	}
	return t.LocalIpv6Addresses
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv) GetType() NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_Type_Union {
	if t == nil || t.Type == nil {
		return nil
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.UnknownSubtlv.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_Type_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering/tlvs/tlv/node-attribute/sub-tlvs/sub-tlv/state/type within the YANG schema.
// Union type can be one of [E_NodeAttribute_SubTlv_Type_Enum, E_OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE].
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_Type_Union interface {
	// Union type can be one of [E_NodeAttribute_SubTlv_Type_Enum, E_OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE]
	Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_Type_Union()
}

// Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_Type_Union ensures that E_NodeAttribute_SubTlv_Type_Enum
// implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_Type_Union interface.
func (E_NodeAttribute_SubTlv_Type_Enum) Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_Type_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_Type_Union ensures that E_OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE
// implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_Type_Union interface.
func (E_OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE) Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_Type_Union() {
}

// To_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_Type_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_Type_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv) To_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_Type_Union(i interface{}) (NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_Type_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_Type_Union); ok {
		return v, nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_Type_Union, unknown union type, got: %T, want any of [E_NodeAttribute_SubTlv_Type_Enum, E_OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE]", i, i)
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering/tlvs/tlv/node-attribute/sub-tlvs/sub-tlv/unknown-subtlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint16           `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint16           `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv) IsYANGGoStruct() {
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv) GetLength() uint16 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv) GetType() uint16 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_NodeAttribute_SubTlv_UnknownSubtlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering/tlvs/tlv/router-address YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   *string           `path:"state/address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAddress  []ygot.Annotation `path:"state/@address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress) IsYANGGoStruct() {
}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress) GetAddress() string {
	if t == nil || t.Address == nil {
		return ""
	}
	return *t.Address
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_RouterAddress) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering/tlvs/tlv/unknown-tlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint16           `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint16           `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv) IsYANGGoStruct() {
}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv) GetLength() uint16 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv) GetType() uint16 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_TrafficEngineering_Tlv_UnknownTlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/unknown-tlv YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Length    *uint16           `path:"state/length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLength   []ygot.Annotation `path:"state/@length" ygotAnnotation:"true"`
	Type      *uint16           `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType     []ygot.Annotation `path:"state/@type" ygotAnnotation:"true"`
	Value     Binary            `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv) IsYANGGoStruct() {}

// GetLength retrieves the value of the leaf Length from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Length is set, it can
// safely use t.GetLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Length == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv) GetLength() uint16 {
	if t == nil || t.Length == nil {
		return 0
	}
	return *t.Length
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv) GetType() uint16 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_OpaqueLsa_UnknownTlv) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/router-lsa YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa struct {
	ΛMetadata         []ygot.Annotation                                                                        `path:"@" ygotAnnotation:"true"`
	LinkData          NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_LinkData_Union           `path:"state/link-data" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLinkData         []ygot.Annotation                                                                        `path:"state/@link-data" ygotAnnotation:"true"`
	LinkId            *string                                                                                  `path:"state/link-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLinkId           []ygot.Annotation                                                                        `path:"state/@link-id" ygotAnnotation:"true"`
	Metric            *uint16                                                                                  `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric           []ygot.Annotation                                                                        `path:"state/@metric" ygotAnnotation:"true"`
	NumberLinks       *uint16                                                                                  `path:"state/number-links" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNumberLinks      []ygot.Annotation                                                                        `path:"state/@number-links" ygotAnnotation:"true"`
	NumberTosMetrics  *uint16                                                                                  `path:"state/number-tos-metrics" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNumberTosMetrics []ygot.Annotation                                                                        `path:"state/@number-tos-metrics" ygotAnnotation:"true"`
	Type              E_OspfTypes_ROUTER_LSA_TYPES                                                             `path:"state/type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛType             []ygot.Annotation                                                                        `path:"state/@type" ygotAnnotation:"true"`
	TypeOfService     map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService `path:"types-of-service/type-of-service" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTypeOfService    []ygot.Annotation                                                                        `path:"types-of-service/@type-of-service" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) IsYANGGoStruct() {}

// NewTypeOfService creates a new entry in the TypeOfService list of the
// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) NewTypeOfService(Tos uint8) (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeOfService == nil {
		t.TypeOfService = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService)
	}

	key := Tos

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.TypeOfService[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list TypeOfService", key)
	}

	t.TypeOfService[key] = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService{
		Tos: &Tos,
	}

	return t.TypeOfService[key], nil
}

// RenameTypeOfService renames an entry in the list TypeOfService within
// the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) RenameTypeOfService(oldK, newK uint8) error {
	if _, ok := t.TypeOfService[newK]; ok {
		return fmt.Errorf("key %v already exists in TypeOfService", newK)
	}

	e, ok := t.TypeOfService[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in TypeOfService", oldK)
	}
	e.Tos = &newK

	t.TypeOfService[newK] = e
	delete(t.TypeOfService, oldK)
	return nil
}

// GetOrCreateTypeOfServiceMap returns the list (map) from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) GetOrCreateTypeOfServiceMap() map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService {
	if t.TypeOfService == nil {
		t.TypeOfService = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService)
	}
	return t.TypeOfService
}

// GetOrCreateTypeOfService retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) GetOrCreateTypeOfService(Tos uint8) *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService {

	key := Tos

	if v, ok := t.TypeOfService[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTypeOfService(Tos)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTypeOfService got unexpected error: %v", err))
	}
	return v
}

// GetTypeOfService retrieves the value with the specified key from
// the TypeOfService map field of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) GetTypeOfService(Tos uint8) *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService {

	if t == nil {
		return nil
	}

	key := Tos

	if lm, ok := t.TypeOfService[key]; ok {
		return lm
	}
	return nil
}

// AppendTypeOfService appends the supplied NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService struct to the
// list TypeOfService of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) AppendTypeOfService(v *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService) error {
	if v.Tos == nil {
		return fmt.Errorf("invalid nil key received for Tos")
	}

	key := *v.Tos

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeOfService == nil {
		t.TypeOfService = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService)
	}

	if _, ok := t.TypeOfService[key]; ok {
		return fmt.Errorf("duplicate key for list TypeOfService %v", key)
	}

	t.TypeOfService[key] = v
	return nil
}

// GetLinkData retrieves the value of the leaf LinkData from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkData is set, it can
// safely use t.GetLinkData() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkData == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) GetLinkData() NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_LinkData_Union {
	if t == nil || t.LinkData == nil {
		return nil
	}
	return t.LinkData
}

// GetLinkId retrieves the value of the leaf LinkId from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkId is set, it can
// safely use t.GetLinkId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) GetLinkId() string {
	if t == nil || t.LinkId == nil {
		return ""
	}
	return *t.LinkId
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) GetMetric() uint16 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetNumberLinks retrieves the value of the leaf NumberLinks from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NumberLinks is set, it can
// safely use t.GetNumberLinks() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NumberLinks == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) GetNumberLinks() uint16 {
	if t == nil || t.NumberLinks == nil {
		return 0
	}
	return *t.NumberLinks
}

// GetNumberTosMetrics retrieves the value of the leaf NumberTosMetrics from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NumberTosMetrics is set, it can
// safely use t.GetNumberTosMetrics() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NumberTosMetrics == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) GetNumberTosMetrics() uint16 {
	if t == nil || t.NumberTosMetrics == nil {
		return 0
	}
	return *t.NumberTosMetrics
}

// GetType retrieves the value of the leaf Type from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) GetType() E_OspfTypes_ROUTER_LSA_TYPES {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.TypeOfService {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_LinkData_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/router-lsa/state/link-data within the YANG schema.
// Union type can be one of [UnionString, UnionUint32].
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_LinkData_Union interface {
	// Union type can be one of [UnionString, UnionUint32]
	Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_LinkData_Union()
}

// Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_LinkData_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_LinkData_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_LinkData_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_LinkData_Union ensures that UnionUint32
// implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_LinkData_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_LinkData_Union() {
}

// To_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_LinkData_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_LinkData_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa) To_NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_LinkData_Union(i interface{}) (NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_LinkData_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_LinkData_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_LinkData_Union, unknown union type, got: %T, want any of [string, uint32]", i, i)
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/router-lsa/types-of-service/type-of-service YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Metric    *uint16           `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation `path:"state/@metric" ygotAnnotation:"true"`
	Tos       *uint8            `path:"state/tos|tos" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛTos      []ygot.Annotation `path:"state/@tos|@tos" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService) IsYANGGoStruct() {
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService) GetMetric() uint16 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetTos retrieves the value of the leaf Tos from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tos is set, it can
// safely use t.GetTos() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tos == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService) GetTos() uint8 {
	if t == nil || t.Tos == nil {
		return 0
	}
	return *t.Tos
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Tos == nil {
		return nil, fmt.Errorf("nil value for key Tos")
	}

	return map[string]interface{}{
		"tos": *t.Tos,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_RouterLsa_TypeOfService) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/summary-lsa YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa struct {
	ΛMetadata      []ygot.Annotation                                                                         `path:"@" ygotAnnotation:"true"`
	Metric         *uint16                                                                                   `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric        []ygot.Annotation                                                                         `path:"state/@metric" ygotAnnotation:"true"`
	NetworkMask    *uint8                                                                                    `path:"state/network-mask" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNetworkMask   []ygot.Annotation                                                                         `path:"state/@network-mask" ygotAnnotation:"true"`
	TypeOfService  map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService `path:"types-of-service/type-of-service" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTypeOfService []ygot.Annotation                                                                         `path:"types-of-service/@type-of-service" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa) IsYANGGoStruct() {}

// NewTypeOfService creates a new entry in the TypeOfService list of the
// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa) NewTypeOfService(Tos uint8) (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeOfService == nil {
		t.TypeOfService = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService)
	}

	key := Tos

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.TypeOfService[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list TypeOfService", key)
	}

	t.TypeOfService[key] = &NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService{
		Tos: &Tos,
	}

	return t.TypeOfService[key], nil
}

// RenameTypeOfService renames an entry in the list TypeOfService within
// the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa) RenameTypeOfService(oldK, newK uint8) error {
	if _, ok := t.TypeOfService[newK]; ok {
		return fmt.Errorf("key %v already exists in TypeOfService", newK)
	}

	e, ok := t.TypeOfService[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in TypeOfService", oldK)
	}
	e.Tos = &newK

	t.TypeOfService[newK] = e
	delete(t.TypeOfService, oldK)
	return nil
}

// GetOrCreateTypeOfServiceMap returns the list (map) from NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa) GetOrCreateTypeOfServiceMap() map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService {
	if t.TypeOfService == nil {
		t.TypeOfService = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService)
	}
	return t.TypeOfService
}

// GetOrCreateTypeOfService retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa) GetOrCreateTypeOfService(Tos uint8) *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService {

	key := Tos

	if v, ok := t.TypeOfService[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTypeOfService(Tos)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTypeOfService got unexpected error: %v", err))
	}
	return v
}

// GetTypeOfService retrieves the value with the specified key from
// the TypeOfService map field of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa) GetTypeOfService(Tos uint8) *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService {

	if t == nil {
		return nil
	}

	key := Tos

	if lm, ok := t.TypeOfService[key]; ok {
		return lm
	}
	return nil
}

// AppendTypeOfService appends the supplied NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService struct to the
// list TypeOfService of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa) AppendTypeOfService(v *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService) error {
	if v.Tos == nil {
		return fmt.Errorf("invalid nil key received for Tos")
	}

	key := *v.Tos

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TypeOfService == nil {
		t.TypeOfService = make(map[uint8]*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService)
	}

	if _, ok := t.TypeOfService[key]; ok {
		return fmt.Errorf("duplicate key for list TypeOfService %v", key)
	}

	t.TypeOfService[key] = v
	return nil
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa) GetMetric() uint16 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetNetworkMask retrieves the value of the leaf NetworkMask from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NetworkMask is set, it can
// safely use t.GetNetworkMask() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NetworkMask == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa) GetNetworkMask() uint8 {
	if t == nil || t.NetworkMask == nil {
		return 0
	}
	return *t.NetworkMask
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.TypeOfService {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/summary-lsa/types-of-service/type-of-service YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Metric    *uint16           `path:"state/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric   []ygot.Annotation `path:"state/@metric" ygotAnnotation:"true"`
	Tos       *uint8            `path:"state/tos|tos" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛTos      []ygot.Annotation `path:"state/@tos|@tos" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService) IsYANGGoStruct() {
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService) GetMetric() uint16 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetTos retrieves the value of the leaf Tos from the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tos is set, it can
// safely use t.GetTos() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tos == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService) GetTos() uint8 {
	if t == nil || t.Tos == nil {
		return 0
	}
	return *t.Tos
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Tos == nil {
		return nil, fmt.Errorf("nil value for key Tos")
	}

	return map[string]interface{}{
		"tos": *t.Tos,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService.
func (*NetworkInstance_Protocol_Ospfv2_Area_Lsdb_LsaType_Lsa_SummaryLsa_TypeOfService) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_Mpls represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/mpls YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_Mpls struct {
	ΛMetadata                  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	TrafficEngineeringEnabled  *bool             `path:"config/traffic-engineering-enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTrafficEngineeringEnabled []ygot.Annotation `path:"config/@traffic-engineering-enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_Mpls implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_Mpls) IsYANGGoStruct() {}

// GetTrafficEngineeringEnabled retrieves the value of the leaf TrafficEngineeringEnabled from the NetworkInstance_Protocol_Ospfv2_Area_Mpls
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TrafficEngineeringEnabled is set, it can
// safely use t.GetTrafficEngineeringEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TrafficEngineeringEnabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Mpls) GetTrafficEngineeringEnabled() bool {
	if t == nil || t.TrafficEngineeringEnabled == nil {
		return false
	}
	return *t.TrafficEngineeringEnabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_Mpls
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Mpls) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Mpls) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_Mpls"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Mpls) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_Mpls) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_Mpls.
func (*NetworkInstance_Protocol_Ospfv2_Area_Mpls) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Area_VirtualLink represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/virtual-links/virtual-link YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Area_VirtualLink struct {
	ΛMetadata                  []ygot.Annotation               `path:"@" ygotAnnotation:"true"`
	AdjacencyState             E_OspfTypes_OSPF_NEIGHBOR_STATE `path:"state/adjacency-state" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAdjacencyState            []ygot.Annotation               `path:"state/@adjacency-state" ygotAnnotation:"true"`
	BackupDesignatedRouter     *string                         `path:"state/backup-designated-router" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBackupDesignatedRouter    []ygot.Annotation               `path:"state/@backup-designated-router" ygotAnnotation:"true"`
	DeadTime                   *uint64                         `path:"state/dead-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDeadTime                  []ygot.Annotation               `path:"state/@dead-time" ygotAnnotation:"true"`
	DesignatedRouter           *string                         `path:"state/designated-router" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDesignatedRouter          []ygot.Annotation               `path:"state/@designated-router" ygotAnnotation:"true"`
	LastEstablishedTime        *uint64                         `path:"state/last-established-time" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLastEstablishedTime       []ygot.Annotation               `path:"state/@last-established-time" ygotAnnotation:"true"`
	OptionalCapabilities       *string                         `path:"state/optional-capabilities" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOptionalCapabilities      []ygot.Annotation               `path:"state/@optional-capabilities" ygotAnnotation:"true"`
	Priority                   *uint8                          `path:"state/priority" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPriority                  []ygot.Annotation               `path:"state/@priority" ygotAnnotation:"true"`
	RemoteRouterId             *string                         `path:"config/remote-router-id|remote-router-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛRemoteRouterId            []ygot.Annotation               `path:"config/@remote-router-id|@remote-router-id" ygotAnnotation:"true"`
	RetransmissionQueueLength  *uint32                         `path:"state/retransmission-queue-length" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRetransmissionQueueLength []ygot.Annotation               `path:"state/@retransmission-queue-length" ygotAnnotation:"true"`
	StateChanges               *uint32                         `path:"state/state-changes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛStateChanges              []ygot.Annotation               `path:"state/@state-changes" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Area_VirtualLink implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) IsYANGGoStruct() {}

// GetAdjacencyState retrieves the value of the leaf AdjacencyState from the NetworkInstance_Protocol_Ospfv2_Area_VirtualLink
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdjacencyState is set, it can
// safely use t.GetAdjacencyState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdjacencyState == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) GetAdjacencyState() E_OspfTypes_OSPF_NEIGHBOR_STATE {
	if t == nil || t.AdjacencyState == 0 {
		return 0
	}
	return t.AdjacencyState
}

// GetBackupDesignatedRouter retrieves the value of the leaf BackupDesignatedRouter from the NetworkInstance_Protocol_Ospfv2_Area_VirtualLink
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BackupDesignatedRouter is set, it can
// safely use t.GetBackupDesignatedRouter() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BackupDesignatedRouter == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) GetBackupDesignatedRouter() string {
	if t == nil || t.BackupDesignatedRouter == nil {
		return ""
	}
	return *t.BackupDesignatedRouter
}

// GetDeadTime retrieves the value of the leaf DeadTime from the NetworkInstance_Protocol_Ospfv2_Area_VirtualLink
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DeadTime is set, it can
// safely use t.GetDeadTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DeadTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) GetDeadTime() uint64 {
	if t == nil || t.DeadTime == nil {
		return 0
	}
	return *t.DeadTime
}

// GetDesignatedRouter retrieves the value of the leaf DesignatedRouter from the NetworkInstance_Protocol_Ospfv2_Area_VirtualLink
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedRouter is set, it can
// safely use t.GetDesignatedRouter() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedRouter == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) GetDesignatedRouter() string {
	if t == nil || t.DesignatedRouter == nil {
		return ""
	}
	return *t.DesignatedRouter
}

// GetLastEstablishedTime retrieves the value of the leaf LastEstablishedTime from the NetworkInstance_Protocol_Ospfv2_Area_VirtualLink
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastEstablishedTime is set, it can
// safely use t.GetLastEstablishedTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastEstablishedTime == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) GetLastEstablishedTime() uint64 {
	if t == nil || t.LastEstablishedTime == nil {
		return 0
	}
	return *t.LastEstablishedTime
}

// GetOptionalCapabilities retrieves the value of the leaf OptionalCapabilities from the NetworkInstance_Protocol_Ospfv2_Area_VirtualLink
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OptionalCapabilities is set, it can
// safely use t.GetOptionalCapabilities() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OptionalCapabilities == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) GetOptionalCapabilities() string {
	if t == nil || t.OptionalCapabilities == nil {
		return ""
	}
	return *t.OptionalCapabilities
}

// GetPriority retrieves the value of the leaf Priority from the NetworkInstance_Protocol_Ospfv2_Area_VirtualLink
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) GetPriority() uint8 {
	if t == nil || t.Priority == nil {
		return 0
	}
	return *t.Priority
}

// GetRemoteRouterId retrieves the value of the leaf RemoteRouterId from the NetworkInstance_Protocol_Ospfv2_Area_VirtualLink
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteRouterId is set, it can
// safely use t.GetRemoteRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteRouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) GetRemoteRouterId() string {
	if t == nil || t.RemoteRouterId == nil {
		return ""
	}
	return *t.RemoteRouterId
}

// GetRetransmissionQueueLength retrieves the value of the leaf RetransmissionQueueLength from the NetworkInstance_Protocol_Ospfv2_Area_VirtualLink
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RetransmissionQueueLength is set, it can
// safely use t.GetRetransmissionQueueLength() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RetransmissionQueueLength == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) GetRetransmissionQueueLength() uint32 {
	if t == nil || t.RetransmissionQueueLength == nil {
		return 0
	}
	return *t.RetransmissionQueueLength
}

// GetStateChanges retrieves the value of the leaf StateChanges from the NetworkInstance_Protocol_Ospfv2_Area_VirtualLink
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if StateChanges is set, it can
// safely use t.GetStateChanges() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.StateChanges == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) GetStateChanges() uint32 {
	if t == nil || t.StateChanges == nil {
		return 0
	}
	return *t.StateChanges
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Area_VirtualLink
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Ospfv2_Area_VirtualLink struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) ΛListKeyMap() (map[string]interface{}, error) {
	if t.RemoteRouterId == nil {
		return nil, fmt.Errorf("nil value for key RemoteRouterId")
	}

	return map[string]interface{}{
		"remote-router-id": *t.RemoteRouterId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Area_VirtualLink"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Area_VirtualLink.
func (*NetworkInstance_Protocol_Ospfv2_Area_VirtualLink) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Global represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/global YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Global struct {
	ΛMetadata                   []ygot.Annotation                                                                                                                            `path:"@" ygotAnnotation:"true"`
	GracefulRestart             *NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart                                                                                      `path:"graceful-restart" module:"openconfig-network-instance"`
	ΛGracefulRestart            []ygot.Annotation                                                                                                                            `path:"@graceful-restart" ygotAnnotation:"true"`
	HideTransitOnlyNetworks     *bool                                                                                                                                        `path:"config/hide-transit-only-networks" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHideTransitOnlyNetworks    []ygot.Annotation                                                                                                                            `path:"config/@hide-transit-only-networks" ygotAnnotation:"true"`
	IgpShortcuts                *bool                                                                                                                                        `path:"config/igp-shortcuts" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIgpShortcuts               []ygot.Annotation                                                                                                                            `path:"config/@igp-shortcuts" ygotAnnotation:"true"`
	InterAreaPropagationPolicy  map[NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy_Key]*NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy `path:"inter-area-propagation-policies/inter-area-propagation-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterAreaPropagationPolicy []ygot.Annotation                                                                                                                            `path:"inter-area-propagation-policies/@inter-area-propagation-policy" ygotAnnotation:"true"`
	LogAdjacencyChanges         *bool                                                                                                                                        `path:"config/log-adjacency-changes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛLogAdjacencyChanges        []ygot.Annotation                                                                                                                            `path:"config/@log-adjacency-changes" ygotAnnotation:"true"`
	Mpls                        *NetworkInstance_Protocol_Ospfv2_Global_Mpls                                                                                                 `path:"mpls" module:"openconfig-network-instance"`
	ΛMpls                       []ygot.Annotation                                                                                                                            `path:"@mpls" ygotAnnotation:"true"`
	RouterId                    *string                                                                                                                                      `path:"config/router-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRouterId                   []ygot.Annotation                                                                                                                            `path:"config/@router-id" ygotAnnotation:"true"`
	SummaryRouteCostMode        E_Global_SummaryRouteCostMode                                                                                                                `path:"config/summary-route-cost-mode" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSummaryRouteCostMode       []ygot.Annotation                                                                                                                            `path:"config/@summary-route-cost-mode" ygotAnnotation:"true"`
	Timers                      *NetworkInstance_Protocol_Ospfv2_Global_Timers                                                                                               `path:"timers" module:"openconfig-network-instance"`
	ΛTimers                     []ygot.Annotation                                                                                                                            `path:"@timers" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Global implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Global) IsYANGGoStruct() {}

// NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy_Key represents the key for list InterAreaPropagationPolicy of element /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/global.
type NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy_Key struct {
	SrcArea NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union `path:"src-area"`
	DstArea NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union `path:"dst-area"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy_Key key struct.
func (t NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"src-area": t.SrcArea,
		"dst-area": t.DstArea,
	}, nil
}

// NewInterAreaPropagationPolicy creates a new entry in the InterAreaPropagationPolicy list of the
// NetworkInstance_Protocol_Ospfv2_Global struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Ospfv2_Global) NewInterAreaPropagationPolicy(SrcArea NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union, DstArea NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union) (*NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.InterAreaPropagationPolicy == nil {
		t.InterAreaPropagationPolicy = make(map[NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy_Key]*NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy)
	}

	key := NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy_Key{
		SrcArea: SrcArea,
		DstArea: DstArea,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.InterAreaPropagationPolicy[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list InterAreaPropagationPolicy", key)
	}

	t.InterAreaPropagationPolicy[key] = &NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy{
		SrcArea: SrcArea,
		DstArea: DstArea,
	}

	return t.InterAreaPropagationPolicy[key], nil
}

// RenameInterAreaPropagationPolicy renames an entry in the list InterAreaPropagationPolicy within
// the NetworkInstance_Protocol_Ospfv2_Global struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Ospfv2_Global) RenameInterAreaPropagationPolicy(oldK, newK NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy_Key) error {
	if _, ok := t.InterAreaPropagationPolicy[newK]; ok {
		return fmt.Errorf("key %v already exists in InterAreaPropagationPolicy", newK)
	}

	e, ok := t.InterAreaPropagationPolicy[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in InterAreaPropagationPolicy", oldK)
	}
	e.SrcArea = newK.SrcArea
	e.DstArea = newK.DstArea

	t.InterAreaPropagationPolicy[newK] = e
	delete(t.InterAreaPropagationPolicy, oldK)
	return nil
}

// GetOrCreateInterAreaPropagationPolicyMap returns the list (map) from NetworkInstance_Protocol_Ospfv2_Global.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Ospfv2_Global) GetOrCreateInterAreaPropagationPolicyMap() map[NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy_Key]*NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy {
	if t.InterAreaPropagationPolicy == nil {
		t.InterAreaPropagationPolicy = make(map[NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy_Key]*NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy)
	}
	return t.InterAreaPropagationPolicy
}

// GetOrCreateInterAreaPropagationPolicy retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Ospfv2_Global. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Ospfv2_Global) GetOrCreateInterAreaPropagationPolicy(SrcArea NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union, DstArea NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union) *NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy {

	key := NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy_Key{
		SrcArea: SrcArea,
		DstArea: DstArea,
	}

	if v, ok := t.InterAreaPropagationPolicy[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterAreaPropagationPolicy(SrcArea, DstArea)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterAreaPropagationPolicy got unexpected error: %v", err))
	}
	return v
}

// GetInterAreaPropagationPolicy retrieves the value with the specified key from
// the InterAreaPropagationPolicy map field of NetworkInstance_Protocol_Ospfv2_Global. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Global) GetInterAreaPropagationPolicy(SrcArea NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union, DstArea NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union) *NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy {

	if t == nil {
		return nil
	}

	key := NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy_Key{
		SrcArea: SrcArea,
		DstArea: DstArea,
	}

	if lm, ok := t.InterAreaPropagationPolicy[key]; ok {
		return lm
	}
	return nil
}

// AppendInterAreaPropagationPolicy appends the supplied NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy struct to the
// list InterAreaPropagationPolicy of NetworkInstance_Protocol_Ospfv2_Global. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Ospfv2_Global) AppendInterAreaPropagationPolicy(v *NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy) error {
	key := NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy_Key{
		SrcArea: v.SrcArea,
		DstArea: v.DstArea,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.InterAreaPropagationPolicy == nil {
		t.InterAreaPropagationPolicy = make(map[NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy_Key]*NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy)
	}

	if _, ok := t.InterAreaPropagationPolicy[key]; ok {
		return fmt.Errorf("duplicate key for list InterAreaPropagationPolicy %v", key)
	}

	t.InterAreaPropagationPolicy[key] = v
	return nil
}

// GetOrCreateGracefulRestart retrieves the value of the GracefulRestart field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Global) GetOrCreateGracefulRestart() *NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart {
	if t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	t.GracefulRestart = &NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart{}
	return t.GracefulRestart
}

// GetOrCreateMpls retrieves the value of the Mpls field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Global) GetOrCreateMpls() *NetworkInstance_Protocol_Ospfv2_Global_Mpls {
	if t.Mpls != nil {
		return t.Mpls
	}
	t.Mpls = &NetworkInstance_Protocol_Ospfv2_Global_Mpls{}
	return t.Mpls
}

// GetOrCreateTimers retrieves the value of the Timers field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Global) GetOrCreateTimers() *NetworkInstance_Protocol_Ospfv2_Global_Timers {
	if t.Timers != nil {
		return t.Timers
	}
	t.Timers = &NetworkInstance_Protocol_Ospfv2_Global_Timers{}
	return t.Timers
}

// GetGracefulRestart returns the value of the GracefulRestart struct pointer
// from NetworkInstance_Protocol_Ospfv2_Global. If the receiver or the field GracefulRestart is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Global) GetGracefulRestart() *NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart {
	if t != nil && t.GracefulRestart != nil {
		return t.GracefulRestart
	}
	return nil
}

// GetMpls returns the value of the Mpls struct pointer
// from NetworkInstance_Protocol_Ospfv2_Global. If the receiver or the field Mpls is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Global) GetMpls() *NetworkInstance_Protocol_Ospfv2_Global_Mpls {
	if t != nil && t.Mpls != nil {
		return t.Mpls
	}
	return nil
}

// GetTimers returns the value of the Timers struct pointer
// from NetworkInstance_Protocol_Ospfv2_Global. If the receiver or the field Timers is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Global) GetTimers() *NetworkInstance_Protocol_Ospfv2_Global_Timers {
	if t != nil && t.Timers != nil {
		return t.Timers
	}
	return nil
}

// GetHideTransitOnlyNetworks retrieves the value of the leaf HideTransitOnlyNetworks from the NetworkInstance_Protocol_Ospfv2_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HideTransitOnlyNetworks is set, it can
// safely use t.GetHideTransitOnlyNetworks() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HideTransitOnlyNetworks == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global) GetHideTransitOnlyNetworks() bool {
	if t == nil || t.HideTransitOnlyNetworks == nil {
		return false
	}
	return *t.HideTransitOnlyNetworks
}

// GetIgpShortcuts retrieves the value of the leaf IgpShortcuts from the NetworkInstance_Protocol_Ospfv2_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IgpShortcuts is set, it can
// safely use t.GetIgpShortcuts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IgpShortcuts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global) GetIgpShortcuts() bool {
	if t == nil || t.IgpShortcuts == nil {
		return false
	}
	return *t.IgpShortcuts
}

// GetLogAdjacencyChanges retrieves the value of the leaf LogAdjacencyChanges from the NetworkInstance_Protocol_Ospfv2_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LogAdjacencyChanges is set, it can
// safely use t.GetLogAdjacencyChanges() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LogAdjacencyChanges == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global) GetLogAdjacencyChanges() bool {
	if t == nil || t.LogAdjacencyChanges == nil {
		return false
	}
	return *t.LogAdjacencyChanges
}

// GetRouterId retrieves the value of the leaf RouterId from the NetworkInstance_Protocol_Ospfv2_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouterId is set, it can
// safely use t.GetRouterId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouterId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global) GetRouterId() string {
	if t == nil || t.RouterId == nil {
		return ""
	}
	return *t.RouterId
}

// GetSummaryRouteCostMode retrieves the value of the leaf SummaryRouteCostMode from the NetworkInstance_Protocol_Ospfv2_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SummaryRouteCostMode is set, it can
// safely use t.GetSummaryRouteCostMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SummaryRouteCostMode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global) GetSummaryRouteCostMode() E_Global_SummaryRouteCostMode {
	if t == nil || t.SummaryRouteCostMode == 0 {
		return Global_SummaryRouteCostMode_RFC2328_COMPATIBLE
	}
	return t.SummaryRouteCostMode
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Global
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Global) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.SummaryRouteCostMode == 0 {
		t.SummaryRouteCostMode = Global_SummaryRouteCostMode_RFC2328_COMPATIBLE
	}
	t.GracefulRestart.PopulateDefaults()
	t.Mpls.PopulateDefaults()
	t.Timers.PopulateDefaults()
	for _, e := range t.InterAreaPropagationPolicy {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Global"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Global) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Global.
func (*NetworkInstance_Protocol_Ospfv2_Global) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/global/graceful-restart YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled     *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled    []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
	HelperOnly  *bool             `path:"config/helper-only" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelperOnly []ygot.Annotation `path:"config/@helper-only" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetHelperOnly retrieves the value of the leaf HelperOnly from the NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelperOnly is set, it can
// safely use t.GetHelperOnly() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelperOnly == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart) GetHelperOnly() bool {
	if t == nil || t.HelperOnly == nil {
		return false
	}
	return *t.HelperOnly
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart.
func (*NetworkInstance_Protocol_Ospfv2_Global_GracefulRestart) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/global/inter-area-propagation-policies/inter-area-propagation-policy YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy struct {
	ΛMetadata            []ygot.Annotation                                     `path:"@" ygotAnnotation:"true"`
	DefaultImportPolicy  E_RoutingPolicy_DefaultPolicyType                     `path:"config/default-import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultImportPolicy []ygot.Annotation                                     `path:"config/@default-import-policy" ygotAnnotation:"true"`
	DstArea              NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union `path:"config/dst-area|dst-area" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛDstArea             []ygot.Annotation                                     `path:"config/@dst-area|@dst-area" ygotAnnotation:"true"`
	ImportPolicy         []string                                              `path:"config/import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛImportPolicy        []ygot.Annotation                                     `path:"config/@import-policy" ygotAnnotation:"true"`
	SrcArea              NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union `path:"config/src-area|src-area" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSrcArea             []ygot.Annotation                                     `path:"config/@src-area|@src-area" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy) IsYANGGoStruct() {}

// GetDefaultImportPolicy retrieves the value of the leaf DefaultImportPolicy from the NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultImportPolicy is set, it can
// safely use t.GetDefaultImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy) GetDefaultImportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultImportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultImportPolicy
}

// GetDstArea retrieves the value of the leaf DstArea from the NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DstArea is set, it can
// safely use t.GetDstArea() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DstArea == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy) GetDstArea() NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union {
	if t == nil || t.DstArea == nil {
		return nil
	}
	return t.DstArea
}

// GetImportPolicy retrieves the value of the leaf ImportPolicy from the NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ImportPolicy is set, it can
// safely use t.GetImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy) GetImportPolicy() []string {
	if t == nil || t.ImportPolicy == nil {
		return nil
	}
	return t.ImportPolicy
}

// GetSrcArea retrieves the value of the leaf SrcArea from the NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SrcArea is set, it can
// safely use t.GetSrcArea() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SrcArea == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy) GetSrcArea() NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union {
	if t == nil || t.SrcArea == nil {
		return nil
	}
	return t.SrcArea
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DefaultImportPolicy == 0 {
		t.DefaultImportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"dst-area": t.DstArea,
		"src-area": t.SrcArea,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy.
func (*NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// To_NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Ospfv2_Global_InterAreaPropagationPolicy) To_NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union(i interface{}) (NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Ospfv2_Area_Identifier_Union, unknown union type, got: %T, want any of [string, uint32]", i, i)
}

// NetworkInstance_Protocol_Ospfv2_Global_Mpls represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/global/mpls YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Global_Mpls struct {
	ΛMetadata                     []ygot.Annotation                                       `path:"@" ygotAnnotation:"true"`
	IgpLdpSync                    *NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync `path:"igp-ldp-sync" module:"openconfig-network-instance"`
	ΛIgpLdpSync                   []ygot.Annotation                                       `path:"@igp-ldp-sync" ygotAnnotation:"true"`
	TrafficEngineeringExtensions  *bool                                                   `path:"config/traffic-engineering-extensions" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTrafficEngineeringExtensions []ygot.Annotation                                       `path:"config/@traffic-engineering-extensions" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Global_Mpls implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Global_Mpls) IsYANGGoStruct() {}

// GetOrCreateIgpLdpSync retrieves the value of the IgpLdpSync field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Mpls) GetOrCreateIgpLdpSync() *NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync {
	if t.IgpLdpSync != nil {
		return t.IgpLdpSync
	}
	t.IgpLdpSync = &NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync{}
	return t.IgpLdpSync
}

// GetIgpLdpSync returns the value of the IgpLdpSync struct pointer
// from NetworkInstance_Protocol_Ospfv2_Global_Mpls. If the receiver or the field IgpLdpSync is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Mpls) GetIgpLdpSync() *NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync {
	if t != nil && t.IgpLdpSync != nil {
		return t.IgpLdpSync
	}
	return nil
}

// GetTrafficEngineeringExtensions retrieves the value of the leaf TrafficEngineeringExtensions from the NetworkInstance_Protocol_Ospfv2_Global_Mpls
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TrafficEngineeringExtensions is set, it can
// safely use t.GetTrafficEngineeringExtensions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TrafficEngineeringExtensions == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Mpls) GetTrafficEngineeringExtensions() bool {
	if t == nil || t.TrafficEngineeringExtensions == nil {
		return false
	}
	return *t.TrafficEngineeringExtensions
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Global_Mpls
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Mpls) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.IgpLdpSync.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Mpls) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Global_Mpls"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Mpls) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Mpls) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Global_Mpls.
func (*NetworkInstance_Protocol_Ospfv2_Global_Mpls) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/global/mpls/igp-ldp-sync YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync struct {
	ΛMetadata           []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled             *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled            []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
	PostSessionUpDelay  *uint32           `path:"config/post-session-up-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPostSessionUpDelay []ygot.Annotation `path:"config/@post-session-up-delay" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetPostSessionUpDelay retrieves the value of the leaf PostSessionUpDelay from the NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PostSessionUpDelay is set, it can
// safely use t.GetPostSessionUpDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PostSessionUpDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync) GetPostSessionUpDelay() uint32 {
	if t == nil || t.PostSessionUpDelay == nil {
		return 0
	}
	return *t.PostSessionUpDelay
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync.
func (*NetworkInstance_Protocol_Ospfv2_Global_Mpls_IgpLdpSync) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Global_Timers represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/global/timers YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Global_Timers struct {
	ΛMetadata      []ygot.Annotation                                            `path:"@" ygotAnnotation:"true"`
	LsaGeneration  *NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration `path:"lsa-generation" module:"openconfig-network-instance"`
	ΛLsaGeneration []ygot.Annotation                                            `path:"@lsa-generation" ygotAnnotation:"true"`
	MaxMetric      *NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric     `path:"max-metric" module:"openconfig-network-instance"`
	ΛMaxMetric     []ygot.Annotation                                            `path:"@max-metric" ygotAnnotation:"true"`
	Spf            *NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf           `path:"spf" module:"openconfig-network-instance"`
	ΛSpf           []ygot.Annotation                                            `path:"@spf" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Global_Timers implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Global_Timers) IsYANGGoStruct() {}

// GetOrCreateLsaGeneration retrieves the value of the LsaGeneration field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers) GetOrCreateLsaGeneration() *NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration {
	if t.LsaGeneration != nil {
		return t.LsaGeneration
	}
	t.LsaGeneration = &NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration{}
	return t.LsaGeneration
}

// GetOrCreateMaxMetric retrieves the value of the MaxMetric field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers) GetOrCreateMaxMetric() *NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric {
	if t.MaxMetric != nil {
		return t.MaxMetric
	}
	t.MaxMetric = &NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric{}
	return t.MaxMetric
}

// GetOrCreateSpf retrieves the value of the Spf field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers) GetOrCreateSpf() *NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf {
	if t.Spf != nil {
		return t.Spf
	}
	t.Spf = &NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf{}
	return t.Spf
}

// GetLsaGeneration returns the value of the LsaGeneration struct pointer
// from NetworkInstance_Protocol_Ospfv2_Global_Timers. If the receiver or the field LsaGeneration is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers) GetLsaGeneration() *NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration {
	if t != nil && t.LsaGeneration != nil {
		return t.LsaGeneration
	}
	return nil
}

// GetMaxMetric returns the value of the MaxMetric struct pointer
// from NetworkInstance_Protocol_Ospfv2_Global_Timers. If the receiver or the field MaxMetric is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers) GetMaxMetric() *NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric {
	if t != nil && t.MaxMetric != nil {
		return t.MaxMetric
	}
	return nil
}

// GetSpf returns the value of the Spf struct pointer
// from NetworkInstance_Protocol_Ospfv2_Global_Timers. If the receiver or the field Spf is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers) GetSpf() *NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf {
	if t != nil && t.Spf != nil {
		return t.Spf
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Global_Timers
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.LsaGeneration.PopulateDefaults()
	t.MaxMetric.PopulateDefaults()
	t.Spf.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Global_Timers"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Global_Timers.
func (*NetworkInstance_Protocol_Ospfv2_Global_Timers) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/global/timers/lsa-generation YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration struct {
	ΛMetadata     []ygot.Annotation         `path:"@" ygotAnnotation:"true"`
	InitialDelay  *uint32                   `path:"config/initial-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInitialDelay []ygot.Annotation         `path:"config/@initial-delay" ygotAnnotation:"true"`
	MaximumDelay  *uint32                   `path:"config/maximum-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximumDelay []ygot.Annotation         `path:"config/@maximum-delay" ygotAnnotation:"true"`
	TimerType     E_LsaGeneration_TimerType `path:"state/timer-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTimerType    []ygot.Annotation         `path:"state/@timer-type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration) IsYANGGoStruct() {}

// GetInitialDelay retrieves the value of the leaf InitialDelay from the NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InitialDelay is set, it can
// safely use t.GetInitialDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InitialDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration) GetInitialDelay() uint32 {
	if t == nil || t.InitialDelay == nil {
		return 0
	}
	return *t.InitialDelay
}

// GetMaximumDelay retrieves the value of the leaf MaximumDelay from the NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaximumDelay is set, it can
// safely use t.GetMaximumDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaximumDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration) GetMaximumDelay() uint32 {
	if t == nil || t.MaximumDelay == nil {
		return 0
	}
	return *t.MaximumDelay
}

// GetTimerType retrieves the value of the leaf TimerType from the NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TimerType is set, it can
// safely use t.GetTimerType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TimerType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration) GetTimerType() E_LsaGeneration_TimerType {
	if t == nil || t.TimerType == 0 {
		return 0
	}
	return t.TimerType
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration.
func (*NetworkInstance_Protocol_Ospfv2_Global_Timers_LsaGeneration) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/global/timers/max-metric YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric struct {
	ΛMetadata []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	Include   []E_OspfTypes_MAX_METRIC_INCLUDE `path:"config/include" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInclude  []ygot.Annotation                `path:"config/@include" ygotAnnotation:"true"`
	Set       *bool                            `path:"config/set" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSet      []ygot.Annotation                `path:"config/@set" ygotAnnotation:"true"`
	Timeout   *uint64                          `path:"config/timeout" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTimeout  []ygot.Annotation                `path:"config/@timeout" ygotAnnotation:"true"`
	Trigger   []E_OspfTypes_MAX_METRIC_TRIGGER `path:"config/trigger" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTrigger  []ygot.Annotation                `path:"config/@trigger" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric) IsYANGGoStruct() {}

// GetInclude retrieves the value of the leaf Include from the NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Include is set, it can
// safely use t.GetInclude() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Include == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric) GetInclude() []E_OspfTypes_MAX_METRIC_INCLUDE {
	if t == nil || t.Include == nil {
		return nil
	}
	return t.Include
}

// GetSet retrieves the value of the leaf Set from the NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Set is set, it can
// safely use t.GetSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Set == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric) GetSet() bool {
	if t == nil || t.Set == nil {
		return false
	}
	return *t.Set
}

// GetTimeout retrieves the value of the leaf Timeout from the NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Timeout is set, it can
// safely use t.GetTimeout() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Timeout == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric) GetTimeout() uint64 {
	if t == nil || t.Timeout == nil {
		return 0
	}
	return *t.Timeout
}

// GetTrigger retrieves the value of the leaf Trigger from the NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Trigger is set, it can
// safely use t.GetTrigger() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Trigger == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric) GetTrigger() []E_OspfTypes_MAX_METRIC_TRIGGER {
	if t == nil || t.Trigger == nil {
		return nil
	}
	return t.Trigger
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric.
func (*NetworkInstance_Protocol_Ospfv2_Global_Timers_MaxMetric) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/ospfv2/global/timers/spf YANG schema element.
type NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf struct {
	ΛMetadata     []ygot.Annotation         `path:"@" ygotAnnotation:"true"`
	InitialDelay  *uint32                   `path:"config/initial-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInitialDelay []ygot.Annotation         `path:"config/@initial-delay" ygotAnnotation:"true"`
	MaximumDelay  *uint32                   `path:"config/maximum-delay" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximumDelay []ygot.Annotation         `path:"config/@maximum-delay" ygotAnnotation:"true"`
	TimerType     E_LsaGeneration_TimerType `path:"state/timer-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTimerType    []ygot.Annotation         `path:"state/@timer-type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf) IsYANGGoStruct() {}

// GetInitialDelay retrieves the value of the leaf InitialDelay from the NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InitialDelay is set, it can
// safely use t.GetInitialDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InitialDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf) GetInitialDelay() uint32 {
	if t == nil || t.InitialDelay == nil {
		return 0
	}
	return *t.InitialDelay
}

// GetMaximumDelay retrieves the value of the leaf MaximumDelay from the NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaximumDelay is set, it can
// safely use t.GetMaximumDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaximumDelay == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf) GetMaximumDelay() uint32 {
	if t == nil || t.MaximumDelay == nil {
		return 0
	}
	return *t.MaximumDelay
}

// GetTimerType retrieves the value of the leaf TimerType from the NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TimerType is set, it can
// safely use t.GetTimerType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TimerType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf) GetTimerType() E_LsaGeneration_TimerType {
	if t == nil || t.TimerType == 0 {
		return 0
	}
	return t.TimerType
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf.
func (*NetworkInstance_Protocol_Ospfv2_Global_Timers_Spf) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Pcep represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/pcep YANG schema element.
type NetworkInstance_Protocol_Pcep struct {
	ΛMetadata              []ygot.Annotation                                               `path:"@" ygotAnnotation:"true"`
	PathComputationServer  map[string]*NetworkInstance_Protocol_Pcep_PathComputationServer `path:"path-computation-servers/path-computation-server" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPathComputationServer []ygot.Annotation                                               `path:"path-computation-servers/@path-computation-server" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Pcep implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Pcep) IsYANGGoStruct() {}

// NewPathComputationServer creates a new entry in the PathComputationServer list of the
// NetworkInstance_Protocol_Pcep struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Pcep) NewPathComputationServer(PceServerAddress string) (*NetworkInstance_Protocol_Pcep_PathComputationServer, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PathComputationServer == nil {
		t.PathComputationServer = make(map[string]*NetworkInstance_Protocol_Pcep_PathComputationServer)
	}

	key := PceServerAddress

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.PathComputationServer[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list PathComputationServer", key)
	}

	t.PathComputationServer[key] = &NetworkInstance_Protocol_Pcep_PathComputationServer{
		PceServerAddress: &PceServerAddress,
	}

	return t.PathComputationServer[key], nil
}

// RenamePathComputationServer renames an entry in the list PathComputationServer within
// the NetworkInstance_Protocol_Pcep struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Pcep) RenamePathComputationServer(oldK, newK string) error {
	if _, ok := t.PathComputationServer[newK]; ok {
		return fmt.Errorf("key %v already exists in PathComputationServer", newK)
	}

	e, ok := t.PathComputationServer[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in PathComputationServer", oldK)
	}
	e.PceServerAddress = &newK

	t.PathComputationServer[newK] = e
	delete(t.PathComputationServer, oldK)
	return nil
}

// GetOrCreatePathComputationServerMap returns the list (map) from NetworkInstance_Protocol_Pcep.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Pcep) GetOrCreatePathComputationServerMap() map[string]*NetworkInstance_Protocol_Pcep_PathComputationServer {
	if t.PathComputationServer == nil {
		t.PathComputationServer = make(map[string]*NetworkInstance_Protocol_Pcep_PathComputationServer)
	}
	return t.PathComputationServer
}

// GetOrCreatePathComputationServer retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Pcep. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Pcep) GetOrCreatePathComputationServer(PceServerAddress string) *NetworkInstance_Protocol_Pcep_PathComputationServer {

	key := PceServerAddress

	if v, ok := t.PathComputationServer[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPathComputationServer(PceServerAddress)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePathComputationServer got unexpected error: %v", err))
	}
	return v
}

// GetPathComputationServer retrieves the value with the specified key from
// the PathComputationServer map field of NetworkInstance_Protocol_Pcep. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Pcep) GetPathComputationServer(PceServerAddress string) *NetworkInstance_Protocol_Pcep_PathComputationServer {

	if t == nil {
		return nil
	}

	key := PceServerAddress

	if lm, ok := t.PathComputationServer[key]; ok {
		return lm
	}
	return nil
}

// AppendPathComputationServer appends the supplied NetworkInstance_Protocol_Pcep_PathComputationServer struct to the
// list PathComputationServer of NetworkInstance_Protocol_Pcep. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Pcep_PathComputationServer already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Pcep) AppendPathComputationServer(v *NetworkInstance_Protocol_Pcep_PathComputationServer) error {
	if v.PceServerAddress == nil {
		return fmt.Errorf("invalid nil key received for PceServerAddress")
	}

	key := *v.PceServerAddress

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PathComputationServer == nil {
		t.PathComputationServer = make(map[string]*NetworkInstance_Protocol_Pcep_PathComputationServer)
	}

	if _, ok := t.PathComputationServer[key]; ok {
		return fmt.Errorf("duplicate key for list PathComputationServer %v", key)
	}

	t.PathComputationServer[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Pcep
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Pcep) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.PathComputationServer {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pcep) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Pcep"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pcep) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Pcep) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Pcep.
func (*NetworkInstance_Protocol_Pcep) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Pcep_PathComputationServer represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/pcep/path-computation-servers/path-computation-server YANG schema element.
type NetworkInstance_Protocol_Pcep_PathComputationServer struct {
	ΛMetadata               []ygot.Annotation                                                   `path:"@" ygotAnnotation:"true"`
	Authentication          *NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication `path:"authentication" module:"openconfig-network-instance"`
	ΛAuthentication         []ygot.Annotation                                                   `path:"@authentication" ygotAnnotation:"true"`
	Id                      *string                                                             `path:"config/id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛId                     []ygot.Annotation                                                   `path:"config/@id" ygotAnnotation:"true"`
	PceInitiatedCapability  *bool                                                               `path:"config/pce-initiated-capability" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPceInitiatedCapability []ygot.Annotation                                                   `path:"config/@pce-initiated-capability" ygotAnnotation:"true"`
	PceServerAddress        *string                                                             `path:"config/pce-server-address|pce-server-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPceServerAddress       []ygot.Annotation                                                   `path:"config/@pce-server-address|@pce-server-address" ygotAnnotation:"true"`
	PceType                 E_Pcep_PceModeType                                                  `path:"config/pce-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPceType                []ygot.Annotation                                                   `path:"config/@pce-type" ygotAnnotation:"true"`
	Port                    *uint16                                                             `path:"config/port" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPort                   []ygot.Annotation                                                   `path:"config/@port" ygotAnnotation:"true"`
	Preference              *uint8                                                              `path:"config/preference" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreference             []ygot.Annotation                                                   `path:"config/@preference" ygotAnnotation:"true"`
	ReportLocalLsp          *bool                                                               `path:"config/report-local-lsp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛReportLocalLsp         []ygot.Annotation                                                   `path:"config/@report-local-lsp" ygotAnnotation:"true"`
	SourceAddress           *string                                                             `path:"config/source-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSourceAddress          []ygot.Annotation                                                   `path:"config/@source-address" ygotAnnotation:"true"`
	SrSupport               *bool                                                               `path:"config/sr-support" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSrSupport              []ygot.Annotation                                                   `path:"config/@sr-support" ygotAnnotation:"true"`
	Timers                  *NetworkInstance_Protocol_Pcep_PathComputationServer_Timers         `path:"timers" module:"openconfig-network-instance"`
	ΛTimers                 []ygot.Annotation                                                   `path:"@timers" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Pcep_PathComputationServer implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Pcep_PathComputationServer) IsYANGGoStruct() {}

// GetOrCreateAuthentication retrieves the value of the Authentication field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) GetOrCreateAuthentication() *NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication {
	if t.Authentication != nil {
		return t.Authentication
	}
	t.Authentication = &NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication{}
	return t.Authentication
}

// GetOrCreateTimers retrieves the value of the Timers field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) GetOrCreateTimers() *NetworkInstance_Protocol_Pcep_PathComputationServer_Timers {
	if t.Timers != nil {
		return t.Timers
	}
	t.Timers = &NetworkInstance_Protocol_Pcep_PathComputationServer_Timers{}
	return t.Timers
}

// GetAuthentication returns the value of the Authentication struct pointer
// from NetworkInstance_Protocol_Pcep_PathComputationServer. If the receiver or the field Authentication is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) GetAuthentication() *NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication {
	if t != nil && t.Authentication != nil {
		return t.Authentication
	}
	return nil
}

// GetTimers returns the value of the Timers struct pointer
// from NetworkInstance_Protocol_Pcep_PathComputationServer. If the receiver or the field Timers is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) GetTimers() *NetworkInstance_Protocol_Pcep_PathComputationServer_Timers {
	if t != nil && t.Timers != nil {
		return t.Timers
	}
	return nil
}

// GetId retrieves the value of the leaf Id from the NetworkInstance_Protocol_Pcep_PathComputationServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) GetId() string {
	if t == nil || t.Id == nil {
		return ""
	}
	return *t.Id
}

// GetPceInitiatedCapability retrieves the value of the leaf PceInitiatedCapability from the NetworkInstance_Protocol_Pcep_PathComputationServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PceInitiatedCapability is set, it can
// safely use t.GetPceInitiatedCapability() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PceInitiatedCapability == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) GetPceInitiatedCapability() bool {
	if t == nil || t.PceInitiatedCapability == nil {
		return false
	}
	return *t.PceInitiatedCapability
}

// GetPceServerAddress retrieves the value of the leaf PceServerAddress from the NetworkInstance_Protocol_Pcep_PathComputationServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PceServerAddress is set, it can
// safely use t.GetPceServerAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PceServerAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) GetPceServerAddress() string {
	if t == nil || t.PceServerAddress == nil {
		return ""
	}
	return *t.PceServerAddress
}

// GetPceType retrieves the value of the leaf PceType from the NetworkInstance_Protocol_Pcep_PathComputationServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PceType is set, it can
// safely use t.GetPceType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PceType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) GetPceType() E_Pcep_PceModeType {
	if t == nil || t.PceType == 0 {
		return 0
	}
	return t.PceType
}

// GetPort retrieves the value of the leaf Port from the NetworkInstance_Protocol_Pcep_PathComputationServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Port is set, it can
// safely use t.GetPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Port == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) GetPort() uint16 {
	if t == nil || t.Port == nil {
		return 4189
	}
	return *t.Port
}

// GetPreference retrieves the value of the leaf Preference from the NetworkInstance_Protocol_Pcep_PathComputationServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Preference is set, it can
// safely use t.GetPreference() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Preference == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) GetPreference() uint8 {
	if t == nil || t.Preference == nil {
		return 0
	}
	return *t.Preference
}

// GetReportLocalLsp retrieves the value of the leaf ReportLocalLsp from the NetworkInstance_Protocol_Pcep_PathComputationServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ReportLocalLsp is set, it can
// safely use t.GetReportLocalLsp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ReportLocalLsp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) GetReportLocalLsp() bool {
	if t == nil || t.ReportLocalLsp == nil {
		return false
	}
	return *t.ReportLocalLsp
}

// GetSourceAddress retrieves the value of the leaf SourceAddress from the NetworkInstance_Protocol_Pcep_PathComputationServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddress is set, it can
// safely use t.GetSourceAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) GetSourceAddress() string {
	if t == nil || t.SourceAddress == nil {
		return ""
	}
	return *t.SourceAddress
}

// GetSrSupport retrieves the value of the leaf SrSupport from the NetworkInstance_Protocol_Pcep_PathComputationServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SrSupport is set, it can
// safely use t.GetSrSupport() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SrSupport == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) GetSrSupport() bool {
	if t == nil || t.SrSupport == nil {
		return false
	}
	return *t.SrSupport
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Pcep_PathComputationServer
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PceInitiatedCapability == nil {
		var v bool = false
		t.PceInitiatedCapability = &v
	}
	if t.Port == nil {
		var v uint16 = 4189
		t.Port = &v
	}
	if t.ReportLocalLsp == nil {
		var v bool = false
		t.ReportLocalLsp = &v
	}
	if t.SrSupport == nil {
		var v bool = false
		t.SrSupport = &v
	}
	t.Authentication.PopulateDefaults()
	t.Timers.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Pcep_PathComputationServer struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) ΛListKeyMap() (map[string]interface{}, error) {
	if t.PceServerAddress == nil {
		return nil, fmt.Errorf("nil value for key PceServerAddress")
	}

	return map[string]interface{}{
		"pce-server-address": *t.PceServerAddress,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Pcep_PathComputationServer"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Pcep_PathComputationServer.
func (*NetworkInstance_Protocol_Pcep_PathComputationServer) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/pcep/path-computation-servers/path-computation-server/authentication YANG schema element.
type NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AuthenticationKey  *string           `path:"config/authentication-key" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAuthenticationKey []ygot.Annotation `path:"config/@authentication-key" ygotAnnotation:"true"`
	Enable             *bool             `path:"config/enable" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnable            []ygot.Annotation `path:"config/@enable" ygotAnnotation:"true"`
	Keychain           *string           `path:"config/keychain" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛKeychain          []ygot.Annotation `path:"config/@keychain" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication) IsYANGGoStruct() {}

// GetAuthenticationKey retrieves the value of the leaf AuthenticationKey from the NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthenticationKey is set, it can
// safely use t.GetAuthenticationKey() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthenticationKey == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication) GetAuthenticationKey() string {
	if t == nil || t.AuthenticationKey == nil {
		return ""
	}
	return *t.AuthenticationKey
}

// GetEnable retrieves the value of the leaf Enable from the NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enable is set, it can
// safely use t.GetEnable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enable == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication) GetEnable() bool {
	if t == nil || t.Enable == nil {
		return false
	}
	return *t.Enable
}

// GetKeychain retrieves the value of the leaf Keychain from the NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Keychain is set, it can
// safely use t.GetKeychain() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Keychain == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication) GetKeychain() string {
	if t == nil || t.Keychain == nil {
		return ""
	}
	return *t.Keychain
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enable == nil {
		var v bool = false
		t.Enable = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication.
func (*NetworkInstance_Protocol_Pcep_PathComputationServer_Authentication) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Pcep_PathComputationServer_Timers represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/pcep/path-computation-servers/path-computation-server/timers YANG schema element.
type NetworkInstance_Protocol_Pcep_PathComputationServer_Timers struct {
	ΛMetadata                    []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	DeadTimer                    *uint8            `path:"config/dead-timer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDeadTimer                   []ygot.Annotation `path:"config/@dead-timer" ygotAnnotation:"true"`
	Keepalive                    *uint8            `path:"config/keepalive" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛKeepalive                   []ygot.Annotation `path:"config/@keepalive" ygotAnnotation:"true"`
	RedelegationTimeoutInterval  *uint16           `path:"config/redelegation-timeout-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRedelegationTimeoutInterval []ygot.Annotation `path:"config/@redelegation-timeout-interval" ygotAnnotation:"true"`
	StateTimeoutInterval         *uint16           `path:"config/state-timeout-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛStateTimeoutInterval        []ygot.Annotation `path:"config/@state-timeout-interval" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Pcep_PathComputationServer_Timers implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Pcep_PathComputationServer_Timers) IsYANGGoStruct() {}

// GetDeadTimer retrieves the value of the leaf DeadTimer from the NetworkInstance_Protocol_Pcep_PathComputationServer_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DeadTimer is set, it can
// safely use t.GetDeadTimer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DeadTimer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer_Timers) GetDeadTimer() uint8 {
	if t == nil || t.DeadTimer == nil {
		return 120
	}
	return *t.DeadTimer
}

// GetKeepalive retrieves the value of the leaf Keepalive from the NetworkInstance_Protocol_Pcep_PathComputationServer_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Keepalive is set, it can
// safely use t.GetKeepalive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Keepalive == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer_Timers) GetKeepalive() uint8 {
	if t == nil || t.Keepalive == nil {
		return 30
	}
	return *t.Keepalive
}

// GetRedelegationTimeoutInterval retrieves the value of the leaf RedelegationTimeoutInterval from the NetworkInstance_Protocol_Pcep_PathComputationServer_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RedelegationTimeoutInterval is set, it can
// safely use t.GetRedelegationTimeoutInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RedelegationTimeoutInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer_Timers) GetRedelegationTimeoutInterval() uint16 {
	if t == nil || t.RedelegationTimeoutInterval == nil {
		return 0
	}
	return *t.RedelegationTimeoutInterval
}

// GetStateTimeoutInterval retrieves the value of the leaf StateTimeoutInterval from the NetworkInstance_Protocol_Pcep_PathComputationServer_Timers
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if StateTimeoutInterval is set, it can
// safely use t.GetStateTimeoutInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.StateTimeoutInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer_Timers) GetStateTimeoutInterval() uint16 {
	if t == nil || t.StateTimeoutInterval == nil {
		return 0
	}
	return *t.StateTimeoutInterval
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Pcep_PathComputationServer_Timers
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer_Timers) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DeadTimer == nil {
		var v uint8 = 120
		t.DeadTimer = &v
	}
	if t.Keepalive == nil {
		var v uint8 = 30
		t.Keepalive = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer_Timers) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Pcep_PathComputationServer_Timers"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer_Timers) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Pcep_PathComputationServer_Timers) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Pcep_PathComputationServer_Timers.
func (*NetworkInstance_Protocol_Pcep_PathComputationServer_Timers) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Pim represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/pim YANG schema element.
type NetworkInstance_Protocol_Pim struct {
	ΛMetadata  []ygot.Annotation                                  `path:"@" ygotAnnotation:"true"`
	Global     *NetworkInstance_Protocol_Pim_Global               `path:"global" module:"openconfig-network-instance"`
	ΛGlobal    []ygot.Annotation                                  `path:"@global" ygotAnnotation:"true"`
	Interface  map[string]*NetworkInstance_Protocol_Pim_Interface `path:"interfaces/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface []ygot.Annotation                                  `path:"interfaces/@interface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Pim implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Pim) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// NetworkInstance_Protocol_Pim struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Pim) NewInterface(InterfaceId string) (*NetworkInstance_Protocol_Pim_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Protocol_Pim_Interface)
	}

	key := InterfaceId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &NetworkInstance_Protocol_Pim_Interface{
		InterfaceId: &InterfaceId,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the NetworkInstance_Protocol_Pim struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Pim) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.InterfaceId = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from NetworkInstance_Protocol_Pim.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Pim) GetOrCreateInterfaceMap() map[string]*NetworkInstance_Protocol_Pim_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Protocol_Pim_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Pim. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Pim) GetOrCreateInterface(InterfaceId string) *NetworkInstance_Protocol_Pim_Interface {

	key := InterfaceId

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(InterfaceId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of NetworkInstance_Protocol_Pim. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Pim) GetInterface(InterfaceId string) *NetworkInstance_Protocol_Pim_Interface {

	if t == nil {
		return nil
	}

	key := InterfaceId

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied NetworkInstance_Protocol_Pim_Interface struct to the
// list Interface of NetworkInstance_Protocol_Pim. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Pim_Interface already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Pim) AppendInterface(v *NetworkInstance_Protocol_Pim_Interface) error {
	if v.InterfaceId == nil {
		return fmt.Errorf("invalid nil key received for InterfaceId")
	}

	key := *v.InterfaceId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*NetworkInstance_Protocol_Pim_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// GetOrCreateGlobal retrieves the value of the Global field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Pim) GetOrCreateGlobal() *NetworkInstance_Protocol_Pim_Global {
	if t.Global != nil {
		return t.Global
	}
	t.Global = &NetworkInstance_Protocol_Pim_Global{}
	return t.Global
}

// GetGlobal returns the value of the Global struct pointer
// from NetworkInstance_Protocol_Pim. If the receiver or the field Global is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Pim) GetGlobal() *NetworkInstance_Protocol_Pim_Global {
	if t != nil && t.Global != nil {
		return t.Global
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Pim
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Pim) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Global.PopulateDefaults()
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Pim"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Pim) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Pim.
func (*NetworkInstance_Protocol_Pim) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Pim_Global represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/pim/global YANG schema element.
type NetworkInstance_Protocol_Pim_Global struct {
	ΛMetadata        []ygot.Annotation                                               `path:"@" ygotAnnotation:"true"`
	Counters         *NetworkInstance_Protocol_Pim_Global_Counters                   `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters        []ygot.Annotation                                               `path:"state/@counters" ygotAnnotation:"true"`
	MaximumGroups    *uint32                                                         `path:"config/maximum-groups" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximumGroups   []ygot.Annotation                                               `path:"config/@maximum-groups" ygotAnnotation:"true"`
	NeighborCount    *uint8                                                          `path:"state/neighbor-count" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighborCount   []ygot.Annotation                                               `path:"state/@neighbor-count" ygotAnnotation:"true"`
	RendezvousPoint  map[string]*NetworkInstance_Protocol_Pim_Global_RendezvousPoint `path:"rendezvous-points/rendezvous-point" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRendezvousPoint []ygot.Annotation                                               `path:"rendezvous-points/@rendezvous-point" ygotAnnotation:"true"`
	Source           map[string]*NetworkInstance_Protocol_Pim_Global_Source          `path:"sources-joined/source" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSource          []ygot.Annotation                                               `path:"sources-joined/@source" ygotAnnotation:"true"`
	Ssm              *NetworkInstance_Protocol_Pim_Global_Ssm                        `path:"ssm" module:"openconfig-network-instance"`
	ΛSsm             []ygot.Annotation                                               `path:"@ssm" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Pim_Global implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Pim_Global) IsYANGGoStruct() {}

// NewRendezvousPoint creates a new entry in the RendezvousPoint list of the
// NetworkInstance_Protocol_Pim_Global struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Pim_Global) NewRendezvousPoint(Address string) (*NetworkInstance_Protocol_Pim_Global_RendezvousPoint, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.RendezvousPoint == nil {
		t.RendezvousPoint = make(map[string]*NetworkInstance_Protocol_Pim_Global_RendezvousPoint)
	}

	key := Address

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.RendezvousPoint[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list RendezvousPoint", key)
	}

	t.RendezvousPoint[key] = &NetworkInstance_Protocol_Pim_Global_RendezvousPoint{
		Address: &Address,
	}

	return t.RendezvousPoint[key], nil
}

// RenameRendezvousPoint renames an entry in the list RendezvousPoint within
// the NetworkInstance_Protocol_Pim_Global struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Pim_Global) RenameRendezvousPoint(oldK, newK string) error {
	if _, ok := t.RendezvousPoint[newK]; ok {
		return fmt.Errorf("key %v already exists in RendezvousPoint", newK)
	}

	e, ok := t.RendezvousPoint[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in RendezvousPoint", oldK)
	}
	e.Address = &newK

	t.RendezvousPoint[newK] = e
	delete(t.RendezvousPoint, oldK)
	return nil
}

// GetOrCreateRendezvousPointMap returns the list (map) from NetworkInstance_Protocol_Pim_Global.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Pim_Global) GetOrCreateRendezvousPointMap() map[string]*NetworkInstance_Protocol_Pim_Global_RendezvousPoint {
	if t.RendezvousPoint == nil {
		t.RendezvousPoint = make(map[string]*NetworkInstance_Protocol_Pim_Global_RendezvousPoint)
	}
	return t.RendezvousPoint
}

// GetOrCreateRendezvousPoint retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Pim_Global. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Pim_Global) GetOrCreateRendezvousPoint(Address string) *NetworkInstance_Protocol_Pim_Global_RendezvousPoint {

	key := Address

	if v, ok := t.RendezvousPoint[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRendezvousPoint(Address)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRendezvousPoint got unexpected error: %v", err))
	}
	return v
}

// GetRendezvousPoint retrieves the value with the specified key from
// the RendezvousPoint map field of NetworkInstance_Protocol_Pim_Global. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Pim_Global) GetRendezvousPoint(Address string) *NetworkInstance_Protocol_Pim_Global_RendezvousPoint {

	if t == nil {
		return nil
	}

	key := Address

	if lm, ok := t.RendezvousPoint[key]; ok {
		return lm
	}
	return nil
}

// AppendRendezvousPoint appends the supplied NetworkInstance_Protocol_Pim_Global_RendezvousPoint struct to the
// list RendezvousPoint of NetworkInstance_Protocol_Pim_Global. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Pim_Global_RendezvousPoint already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Pim_Global) AppendRendezvousPoint(v *NetworkInstance_Protocol_Pim_Global_RendezvousPoint) error {
	if v.Address == nil {
		return fmt.Errorf("invalid nil key received for Address")
	}

	key := *v.Address

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.RendezvousPoint == nil {
		t.RendezvousPoint = make(map[string]*NetworkInstance_Protocol_Pim_Global_RendezvousPoint)
	}

	if _, ok := t.RendezvousPoint[key]; ok {
		return fmt.Errorf("duplicate key for list RendezvousPoint %v", key)
	}

	t.RendezvousPoint[key] = v
	return nil
}

// NewSource creates a new entry in the Source list of the
// NetworkInstance_Protocol_Pim_Global struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Pim_Global) NewSource(Address string) (*NetworkInstance_Protocol_Pim_Global_Source, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Source == nil {
		t.Source = make(map[string]*NetworkInstance_Protocol_Pim_Global_Source)
	}

	key := Address

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Source[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Source", key)
	}

	t.Source[key] = &NetworkInstance_Protocol_Pim_Global_Source{
		Address: &Address,
	}

	return t.Source[key], nil
}

// RenameSource renames an entry in the list Source within
// the NetworkInstance_Protocol_Pim_Global struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Pim_Global) RenameSource(oldK, newK string) error {
	if _, ok := t.Source[newK]; ok {
		return fmt.Errorf("key %v already exists in Source", newK)
	}

	e, ok := t.Source[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Source", oldK)
	}
	e.Address = &newK

	t.Source[newK] = e
	delete(t.Source, oldK)
	return nil
}

// GetOrCreateSourceMap returns the list (map) from NetworkInstance_Protocol_Pim_Global.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Pim_Global) GetOrCreateSourceMap() map[string]*NetworkInstance_Protocol_Pim_Global_Source {
	if t.Source == nil {
		t.Source = make(map[string]*NetworkInstance_Protocol_Pim_Global_Source)
	}
	return t.Source
}

// GetOrCreateSource retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Pim_Global. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Pim_Global) GetOrCreateSource(Address string) *NetworkInstance_Protocol_Pim_Global_Source {

	key := Address

	if v, ok := t.Source[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSource(Address)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSource got unexpected error: %v", err))
	}
	return v
}

// GetSource retrieves the value with the specified key from
// the Source map field of NetworkInstance_Protocol_Pim_Global. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Pim_Global) GetSource(Address string) *NetworkInstance_Protocol_Pim_Global_Source {

	if t == nil {
		return nil
	}

	key := Address

	if lm, ok := t.Source[key]; ok {
		return lm
	}
	return nil
}

// AppendSource appends the supplied NetworkInstance_Protocol_Pim_Global_Source struct to the
// list Source of NetworkInstance_Protocol_Pim_Global. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Pim_Global_Source already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Pim_Global) AppendSource(v *NetworkInstance_Protocol_Pim_Global_Source) error {
	if v.Address == nil {
		return fmt.Errorf("invalid nil key received for Address")
	}

	key := *v.Address

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Source == nil {
		t.Source = make(map[string]*NetworkInstance_Protocol_Pim_Global_Source)
	}

	if _, ok := t.Source[key]; ok {
		return fmt.Errorf("duplicate key for list Source %v", key)
	}

	t.Source[key] = v
	return nil
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Pim_Global) GetOrCreateCounters() *NetworkInstance_Protocol_Pim_Global_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_Protocol_Pim_Global_Counters{}
	return t.Counters
}

// GetOrCreateSsm retrieves the value of the Ssm field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Pim_Global) GetOrCreateSsm() *NetworkInstance_Protocol_Pim_Global_Ssm {
	if t.Ssm != nil {
		return t.Ssm
	}
	t.Ssm = &NetworkInstance_Protocol_Pim_Global_Ssm{}
	return t.Ssm
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_Protocol_Pim_Global. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Pim_Global) GetCounters() *NetworkInstance_Protocol_Pim_Global_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetSsm returns the value of the Ssm struct pointer
// from NetworkInstance_Protocol_Pim_Global. If the receiver or the field Ssm is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Pim_Global) GetSsm() *NetworkInstance_Protocol_Pim_Global_Ssm {
	if t != nil && t.Ssm != nil {
		return t.Ssm
	}
	return nil
}

// GetMaximumGroups retrieves the value of the leaf MaximumGroups from the NetworkInstance_Protocol_Pim_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaximumGroups is set, it can
// safely use t.GetMaximumGroups() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaximumGroups == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Global) GetMaximumGroups() uint32 {
	if t == nil || t.MaximumGroups == nil {
		return 0
	}
	return *t.MaximumGroups
}

// GetNeighborCount retrieves the value of the leaf NeighborCount from the NetworkInstance_Protocol_Pim_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborCount is set, it can
// safely use t.GetNeighborCount() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborCount == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Global) GetNeighborCount() uint8 {
	if t == nil || t.NeighborCount == nil {
		return 0
	}
	return *t.NeighborCount
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Pim_Global
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Pim_Global) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Counters.PopulateDefaults()
	t.Ssm.PopulateDefaults()
	for _, e := range t.RendezvousPoint {
		e.PopulateDefaults()
	}
	for _, e := range t.Source {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Global) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Pim_Global"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Global) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Pim_Global) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Pim_Global.
func (*NetworkInstance_Protocol_Pim_Global) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Pim_Global_Counters represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/pim/global/state/counters YANG schema element.
type NetworkInstance_Protocol_Pim_Global_Counters struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	BootstrapMessages  *uint32           `path:"bootstrap-messages" module:"openconfig-network-instance"`
	ΛBootstrapMessages []ygot.Annotation `path:"@bootstrap-messages" ygotAnnotation:"true"`
	HelloMessages      *uint32           `path:"hello-messages" module:"openconfig-network-instance"`
	ΛHelloMessages     []ygot.Annotation `path:"@hello-messages" ygotAnnotation:"true"`
	JoinPruneMessages  *uint32           `path:"join-prune-messages" module:"openconfig-network-instance"`
	ΛJoinPruneMessages []ygot.Annotation `path:"@join-prune-messages" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Pim_Global_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Pim_Global_Counters) IsYANGGoStruct() {}

// GetBootstrapMessages retrieves the value of the leaf BootstrapMessages from the NetworkInstance_Protocol_Pim_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BootstrapMessages is set, it can
// safely use t.GetBootstrapMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BootstrapMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Global_Counters) GetBootstrapMessages() uint32 {
	if t == nil || t.BootstrapMessages == nil {
		return 0
	}
	return *t.BootstrapMessages
}

// GetHelloMessages retrieves the value of the leaf HelloMessages from the NetworkInstance_Protocol_Pim_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloMessages is set, it can
// safely use t.GetHelloMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Global_Counters) GetHelloMessages() uint32 {
	if t == nil || t.HelloMessages == nil {
		return 0
	}
	return *t.HelloMessages
}

// GetJoinPruneMessages retrieves the value of the leaf JoinPruneMessages from the NetworkInstance_Protocol_Pim_Global_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if JoinPruneMessages is set, it can
// safely use t.GetJoinPruneMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.JoinPruneMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Global_Counters) GetJoinPruneMessages() uint32 {
	if t == nil || t.JoinPruneMessages == nil {
		return 0
	}
	return *t.JoinPruneMessages
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Pim_Global_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Pim_Global_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Global_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Pim_Global_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Global_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Pim_Global_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Pim_Global_Counters.
func (*NetworkInstance_Protocol_Pim_Global_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Pim_Global_RendezvousPoint represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/pim/global/rendezvous-points/rendezvous-point YANG schema element.
type NetworkInstance_Protocol_Pim_Global_RendezvousPoint struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address          *string           `path:"config/address|address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAddress         []ygot.Annotation `path:"config/@address|@address" ygotAnnotation:"true"`
	MulticastGroups  *string           `path:"config/multicast-groups" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMulticastGroups []ygot.Annotation `path:"config/@multicast-groups" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Pim_Global_RendezvousPoint implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Pim_Global_RendezvousPoint) IsYANGGoStruct() {}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Pim_Global_RendezvousPoint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Global_RendezvousPoint) GetAddress() string {
	if t == nil || t.Address == nil {
		return ""
	}
	return *t.Address
}

// GetMulticastGroups retrieves the value of the leaf MulticastGroups from the NetworkInstance_Protocol_Pim_Global_RendezvousPoint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MulticastGroups is set, it can
// safely use t.GetMulticastGroups() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MulticastGroups == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Global_RendezvousPoint) GetMulticastGroups() string {
	if t == nil || t.MulticastGroups == nil {
		return ""
	}
	return *t.MulticastGroups
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Pim_Global_RendezvousPoint
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Pim_Global_RendezvousPoint) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Pim_Global_RendezvousPoint struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Pim_Global_RendezvousPoint) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Address == nil {
		return nil, fmt.Errorf("nil value for key Address")
	}

	return map[string]interface{}{
		"address": *t.Address,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Global_RendezvousPoint) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Pim_Global_RendezvousPoint"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Global_RendezvousPoint) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Pim_Global_RendezvousPoint) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Pim_Global_RendezvousPoint.
func (*NetworkInstance_Protocol_Pim_Global_RendezvousPoint) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Pim_Global_Source represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/pim/global/sources-joined/source YANG schema element.
type NetworkInstance_Protocol_Pim_Global_Source struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address              *string           `path:"state/address|address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAddress             []ygot.Annotation `path:"state/@address|@address" ygotAnnotation:"true"`
	Group                *string           `path:"state/group" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛGroup               []ygot.Annotation `path:"state/@group" ygotAnnotation:"true"`
	UpstreamInterfaceId  *string           `path:"state/upstream-interface-id" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUpstreamInterfaceId []ygot.Annotation `path:"state/@upstream-interface-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Pim_Global_Source implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Pim_Global_Source) IsYANGGoStruct() {}

// GetAddress retrieves the value of the leaf Address from the NetworkInstance_Protocol_Pim_Global_Source
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Global_Source) GetAddress() string {
	if t == nil || t.Address == nil {
		return ""
	}
	return *t.Address
}

// GetGroup retrieves the value of the leaf Group from the NetworkInstance_Protocol_Pim_Global_Source
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Group is set, it can
// safely use t.GetGroup() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Group == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Global_Source) GetGroup() string {
	if t == nil || t.Group == nil {
		return ""
	}
	return *t.Group
}

// GetUpstreamInterfaceId retrieves the value of the leaf UpstreamInterfaceId from the NetworkInstance_Protocol_Pim_Global_Source
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UpstreamInterfaceId is set, it can
// safely use t.GetUpstreamInterfaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UpstreamInterfaceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Global_Source) GetUpstreamInterfaceId() string {
	if t == nil || t.UpstreamInterfaceId == nil {
		return ""
	}
	return *t.UpstreamInterfaceId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Pim_Global_Source
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Pim_Global_Source) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Pim_Global_Source struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Pim_Global_Source) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Address == nil {
		return nil, fmt.Errorf("nil value for key Address")
	}

	return map[string]interface{}{
		"address": *t.Address,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Global_Source) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Pim_Global_Source"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Global_Source) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Pim_Global_Source) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Pim_Global_Source.
func (*NetworkInstance_Protocol_Pim_Global_Source) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Pim_Global_Ssm represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/pim/global/ssm YANG schema element.
type NetworkInstance_Protocol_Pim_Global_Ssm struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	SsmRanges  *string           `path:"config/ssm-ranges" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSsmRanges []ygot.Annotation `path:"config/@ssm-ranges" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Pim_Global_Ssm implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Pim_Global_Ssm) IsYANGGoStruct() {}

// GetSsmRanges retrieves the value of the leaf SsmRanges from the NetworkInstance_Protocol_Pim_Global_Ssm
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SsmRanges is set, it can
// safely use t.GetSsmRanges() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SsmRanges == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Global_Ssm) GetSsmRanges() string {
	if t == nil || t.SsmRanges == nil {
		return ""
	}
	return *t.SsmRanges
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Pim_Global_Ssm
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Pim_Global_Ssm) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Global_Ssm) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Pim_Global_Ssm"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Global_Ssm) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Pim_Global_Ssm) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Pim_Global_Ssm.
func (*NetworkInstance_Protocol_Pim_Global_Ssm) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Pim_Interface represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/pim/interfaces/interface YANG schema element.
type NetworkInstance_Protocol_Pim_Interface struct {
	ΛMetadata          []ygot.Annotation                                           `path:"@" ygotAnnotation:"true"`
	BorderRouter       *bool                                                       `path:"config/border-router" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBorderRouter      []ygot.Annotation                                           `path:"config/@border-router" ygotAnnotation:"true"`
	BsrBorder          *bool                                                       `path:"config/bsr-border" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBsrBorder         []ygot.Annotation                                           `path:"config/@bsr-border" ygotAnnotation:"true"`
	Counters           *NetworkInstance_Protocol_Pim_Interface_Counters            `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters          []ygot.Annotation                                           `path:"state/@counters" ygotAnnotation:"true"`
	DeadTimer          *uint16                                                     `path:"config/dead-timer" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDeadTimer         []ygot.Annotation                                           `path:"config/@dead-timer" ygotAnnotation:"true"`
	DrPriority         *uint32                                                     `path:"config/dr-priority" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDrPriority        []ygot.Annotation                                           `path:"config/@dr-priority" ygotAnnotation:"true"`
	EnableBfd          *NetworkInstance_Protocol_Pim_Interface_EnableBfd           `path:"enable-bfd" module:"openconfig-network-instance"`
	ΛEnableBfd         []ygot.Annotation                                           `path:"@enable-bfd" ygotAnnotation:"true"`
	Enabled            *bool                                                       `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled           []ygot.Annotation                                           `path:"config/@enabled" ygotAnnotation:"true"`
	HelloInterval      *uint8                                                      `path:"config/hello-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛHelloInterval     []ygot.Annotation                                           `path:"config/@hello-interval" ygotAnnotation:"true"`
	InterfaceId        *string                                                     `path:"config/interface-id|interface-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛInterfaceId       []ygot.Annotation                                           `path:"config/@interface-id|@interface-id" ygotAnnotation:"true"`
	InterfaceRef       *NetworkInstance_Protocol_Pim_Interface_InterfaceRef        `path:"interface-ref" module:"openconfig-network-instance"`
	ΛInterfaceRef      []ygot.Annotation                                           `path:"@interface-ref" ygotAnnotation:"true"`
	JoinPruneInterval  *uint8                                                      `path:"config/join-prune-interval" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛJoinPruneInterval []ygot.Annotation                                           `path:"config/@join-prune-interval" ygotAnnotation:"true"`
	MaximumGroups      *uint32                                                     `path:"config/maximum-groups" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximumGroups     []ygot.Annotation                                           `path:"config/@maximum-groups" ygotAnnotation:"true"`
	Mode               E_PimTypes_PIM_MODE                                         `path:"config/mode" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMode              []ygot.Annotation                                           `path:"config/@mode" ygotAnnotation:"true"`
	Neighbor           map[string]*NetworkInstance_Protocol_Pim_Interface_Neighbor `path:"neighbors/neighbor" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighbor          []ygot.Annotation                                           `path:"neighbors/@neighbor" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Pim_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Pim_Interface) IsYANGGoStruct() {}

// NewNeighbor creates a new entry in the Neighbor list of the
// NetworkInstance_Protocol_Pim_Interface struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Pim_Interface) NewNeighbor(NeighborAddress string) (*NetworkInstance_Protocol_Pim_Interface_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Pim_Interface_Neighbor)
	}

	key := NeighborAddress

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &NetworkInstance_Protocol_Pim_Interface_Neighbor{
		NeighborAddress: &NeighborAddress,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the NetworkInstance_Protocol_Pim_Interface struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Pim_Interface) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.NeighborAddress = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from NetworkInstance_Protocol_Pim_Interface.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Pim_Interface) GetOrCreateNeighborMap() map[string]*NetworkInstance_Protocol_Pim_Interface_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Pim_Interface_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Pim_Interface. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Pim_Interface) GetOrCreateNeighbor(NeighborAddress string) *NetworkInstance_Protocol_Pim_Interface_Neighbor {

	key := NeighborAddress

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(NeighborAddress)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of NetworkInstance_Protocol_Pim_Interface. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Pim_Interface) GetNeighbor(NeighborAddress string) *NetworkInstance_Protocol_Pim_Interface_Neighbor {

	if t == nil {
		return nil
	}

	key := NeighborAddress

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied NetworkInstance_Protocol_Pim_Interface_Neighbor struct to the
// list Neighbor of NetworkInstance_Protocol_Pim_Interface. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Pim_Interface_Neighbor already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Pim_Interface) AppendNeighbor(v *NetworkInstance_Protocol_Pim_Interface_Neighbor) error {
	if v.NeighborAddress == nil {
		return fmt.Errorf("invalid nil key received for NeighborAddress")
	}

	key := *v.NeighborAddress

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*NetworkInstance_Protocol_Pim_Interface_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Pim_Interface) GetOrCreateCounters() *NetworkInstance_Protocol_Pim_Interface_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_Protocol_Pim_Interface_Counters{}
	return t.Counters
}

// GetOrCreateEnableBfd retrieves the value of the EnableBfd field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Pim_Interface) GetOrCreateEnableBfd() *NetworkInstance_Protocol_Pim_Interface_EnableBfd {
	if t.EnableBfd != nil {
		return t.EnableBfd
	}
	t.EnableBfd = &NetworkInstance_Protocol_Pim_Interface_EnableBfd{}
	return t.EnableBfd
}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Pim_Interface) GetOrCreateInterfaceRef() *NetworkInstance_Protocol_Pim_Interface_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &NetworkInstance_Protocol_Pim_Interface_InterfaceRef{}
	return t.InterfaceRef
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_Protocol_Pim_Interface. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Pim_Interface) GetCounters() *NetworkInstance_Protocol_Pim_Interface_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetEnableBfd returns the value of the EnableBfd struct pointer
// from NetworkInstance_Protocol_Pim_Interface. If the receiver or the field EnableBfd is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Pim_Interface) GetEnableBfd() *NetworkInstance_Protocol_Pim_Interface_EnableBfd {
	if t != nil && t.EnableBfd != nil {
		return t.EnableBfd
	}
	return nil
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from NetworkInstance_Protocol_Pim_Interface. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Pim_Interface) GetInterfaceRef() *NetworkInstance_Protocol_Pim_Interface_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetBorderRouter retrieves the value of the leaf BorderRouter from the NetworkInstance_Protocol_Pim_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BorderRouter is set, it can
// safely use t.GetBorderRouter() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BorderRouter == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface) GetBorderRouter() bool {
	if t == nil || t.BorderRouter == nil {
		return false
	}
	return *t.BorderRouter
}

// GetBsrBorder retrieves the value of the leaf BsrBorder from the NetworkInstance_Protocol_Pim_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BsrBorder is set, it can
// safely use t.GetBsrBorder() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BsrBorder == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface) GetBsrBorder() bool {
	if t == nil || t.BsrBorder == nil {
		return false
	}
	return *t.BsrBorder
}

// GetDeadTimer retrieves the value of the leaf DeadTimer from the NetworkInstance_Protocol_Pim_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DeadTimer is set, it can
// safely use t.GetDeadTimer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DeadTimer == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface) GetDeadTimer() uint16 {
	if t == nil || t.DeadTimer == nil {
		return 0
	}
	return *t.DeadTimer
}

// GetDrPriority retrieves the value of the leaf DrPriority from the NetworkInstance_Protocol_Pim_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DrPriority is set, it can
// safely use t.GetDrPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DrPriority == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface) GetDrPriority() uint32 {
	if t == nil || t.DrPriority == nil {
		return 0
	}
	return *t.DrPriority
}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Pim_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetHelloInterval retrieves the value of the leaf HelloInterval from the NetworkInstance_Protocol_Pim_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloInterval is set, it can
// safely use t.GetHelloInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface) GetHelloInterval() uint8 {
	if t == nil || t.HelloInterval == nil {
		return 0
	}
	return *t.HelloInterval
}

// GetInterfaceId retrieves the value of the leaf InterfaceId from the NetworkInstance_Protocol_Pim_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceId is set, it can
// safely use t.GetInterfaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface) GetInterfaceId() string {
	if t == nil || t.InterfaceId == nil {
		return ""
	}
	return *t.InterfaceId
}

// GetJoinPruneInterval retrieves the value of the leaf JoinPruneInterval from the NetworkInstance_Protocol_Pim_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if JoinPruneInterval is set, it can
// safely use t.GetJoinPruneInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.JoinPruneInterval == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface) GetJoinPruneInterval() uint8 {
	if t == nil || t.JoinPruneInterval == nil {
		return 0
	}
	return *t.JoinPruneInterval
}

// GetMaximumGroups retrieves the value of the leaf MaximumGroups from the NetworkInstance_Protocol_Pim_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaximumGroups is set, it can
// safely use t.GetMaximumGroups() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaximumGroups == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface) GetMaximumGroups() uint32 {
	if t == nil || t.MaximumGroups == nil {
		return 0
	}
	return *t.MaximumGroups
}

// GetMode retrieves the value of the leaf Mode from the NetworkInstance_Protocol_Pim_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mode is set, it can
// safely use t.GetMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface) GetMode() E_PimTypes_PIM_MODE {
	if t == nil || t.Mode == 0 {
		return 0
	}
	return t.Mode
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Pim_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Pim_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.BorderRouter == nil {
		var v bool = false
		t.BorderRouter = &v
	}
	if t.BsrBorder == nil {
		var v bool = false
		t.BsrBorder = &v
	}
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	t.Counters.PopulateDefaults()
	t.EnableBfd.PopulateDefaults()
	t.InterfaceRef.PopulateDefaults()
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Pim_Interface struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Pim_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.InterfaceId == nil {
		return nil, fmt.Errorf("nil value for key InterfaceId")
	}

	return map[string]interface{}{
		"interface-id": *t.InterfaceId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Pim_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Pim_Interface) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Pim_Interface.
func (*NetworkInstance_Protocol_Pim_Interface) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Pim_Interface_Counters represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/pim/interfaces/interface/state/counters YANG schema element.
type NetworkInstance_Protocol_Pim_Interface_Counters struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	BootstrapMessages  *uint32           `path:"bootstrap-messages" module:"openconfig-network-instance"`
	ΛBootstrapMessages []ygot.Annotation `path:"@bootstrap-messages" ygotAnnotation:"true"`
	HelloMessages      *uint32           `path:"hello-messages" module:"openconfig-network-instance"`
	ΛHelloMessages     []ygot.Annotation `path:"@hello-messages" ygotAnnotation:"true"`
	JoinPruneMessages  *uint32           `path:"join-prune-messages" module:"openconfig-network-instance"`
	ΛJoinPruneMessages []ygot.Annotation `path:"@join-prune-messages" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Pim_Interface_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Pim_Interface_Counters) IsYANGGoStruct() {}

// GetBootstrapMessages retrieves the value of the leaf BootstrapMessages from the NetworkInstance_Protocol_Pim_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BootstrapMessages is set, it can
// safely use t.GetBootstrapMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BootstrapMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface_Counters) GetBootstrapMessages() uint32 {
	if t == nil || t.BootstrapMessages == nil {
		return 0
	}
	return *t.BootstrapMessages
}

// GetHelloMessages retrieves the value of the leaf HelloMessages from the NetworkInstance_Protocol_Pim_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloMessages is set, it can
// safely use t.GetHelloMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface_Counters) GetHelloMessages() uint32 {
	if t == nil || t.HelloMessages == nil {
		return 0
	}
	return *t.HelloMessages
}

// GetJoinPruneMessages retrieves the value of the leaf JoinPruneMessages from the NetworkInstance_Protocol_Pim_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if JoinPruneMessages is set, it can
// safely use t.GetJoinPruneMessages() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.JoinPruneMessages == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface_Counters) GetJoinPruneMessages() uint32 {
	if t == nil || t.JoinPruneMessages == nil {
		return 0
	}
	return *t.JoinPruneMessages
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Pim_Interface_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Pim_Interface_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Interface_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Pim_Interface_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Interface_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Pim_Interface_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Pim_Interface_Counters.
func (*NetworkInstance_Protocol_Pim_Interface_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Pim_Interface_EnableBfd represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/pim/interfaces/interface/enable-bfd YANG schema element.
type NetworkInstance_Protocol_Pim_Interface_EnableBfd struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Pim_Interface_EnableBfd implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Pim_Interface_EnableBfd) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Pim_Interface_EnableBfd
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface_EnableBfd) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Pim_Interface_EnableBfd
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Pim_Interface_EnableBfd) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Interface_EnableBfd) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Pim_Interface_EnableBfd"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Interface_EnableBfd) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Pim_Interface_EnableBfd) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Pim_Interface_EnableBfd.
func (*NetworkInstance_Protocol_Pim_Interface_EnableBfd) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Pim_Interface_InterfaceRef represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/pim/interfaces/interface/interface-ref YANG schema element.
type NetworkInstance_Protocol_Pim_Interface_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Pim_Interface_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Pim_Interface_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Protocol_Pim_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Protocol_Pim_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Pim_Interface_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Pim_Interface_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Interface_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Pim_Interface_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Interface_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Pim_Interface_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Pim_Interface_InterfaceRef.
func (*NetworkInstance_Protocol_Pim_Interface_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Pim_Interface_Neighbor represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/pim/interfaces/interface/neighbors/neighbor YANG schema element.
type NetworkInstance_Protocol_Pim_Interface_Neighbor struct {
	ΛMetadata            []ygot.Annotation   `path:"@" ygotAnnotation:"true"`
	DrAddress            *string             `path:"state/dr-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDrAddress           []ygot.Annotation   `path:"state/@dr-address" ygotAnnotation:"true"`
	Mode                 E_PimTypes_PIM_MODE `path:"state/mode" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMode                []ygot.Annotation   `path:"state/@mode" ygotAnnotation:"true"`
	NeighborAddress      *string             `path:"state/neighbor-address|neighbor-address" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛNeighborAddress     []ygot.Annotation   `path:"state/@neighbor-address|@neighbor-address" ygotAnnotation:"true"`
	NeighborEstablished  *uint64             `path:"state/neighbor-established" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighborEstablished []ygot.Annotation   `path:"state/@neighbor-established" ygotAnnotation:"true"`
	NeighborExpires      *uint64             `path:"state/neighbor-expires" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNeighborExpires     []ygot.Annotation   `path:"state/@neighbor-expires" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Pim_Interface_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Pim_Interface_Neighbor) IsYANGGoStruct() {}

// GetDrAddress retrieves the value of the leaf DrAddress from the NetworkInstance_Protocol_Pim_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DrAddress is set, it can
// safely use t.GetDrAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DrAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface_Neighbor) GetDrAddress() string {
	if t == nil || t.DrAddress == nil {
		return ""
	}
	return *t.DrAddress
}

// GetMode retrieves the value of the leaf Mode from the NetworkInstance_Protocol_Pim_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mode is set, it can
// safely use t.GetMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mode == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface_Neighbor) GetMode() E_PimTypes_PIM_MODE {
	if t == nil || t.Mode == 0 {
		return 0
	}
	return t.Mode
}

// GetNeighborAddress retrieves the value of the leaf NeighborAddress from the NetworkInstance_Protocol_Pim_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborAddress is set, it can
// safely use t.GetNeighborAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface_Neighbor) GetNeighborAddress() string {
	if t == nil || t.NeighborAddress == nil {
		return ""
	}
	return *t.NeighborAddress
}

// GetNeighborEstablished retrieves the value of the leaf NeighborEstablished from the NetworkInstance_Protocol_Pim_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborEstablished is set, it can
// safely use t.GetNeighborEstablished() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborEstablished == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface_Neighbor) GetNeighborEstablished() uint64 {
	if t == nil || t.NeighborEstablished == nil {
		return 0
	}
	return *t.NeighborEstablished
}

// GetNeighborExpires retrieves the value of the leaf NeighborExpires from the NetworkInstance_Protocol_Pim_Interface_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborExpires is set, it can
// safely use t.GetNeighborExpires() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborExpires == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Pim_Interface_Neighbor) GetNeighborExpires() uint64 {
	if t == nil || t.NeighborExpires == nil {
		return 0
	}
	return *t.NeighborExpires
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Pim_Interface_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Pim_Interface_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Pim_Interface_Neighbor struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Pim_Interface_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.NeighborAddress == nil {
		return nil, fmt.Errorf("nil value for key NeighborAddress")
	}

	return map[string]interface{}{
		"neighbor-address": *t.NeighborAddress,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Interface_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Pim_Interface_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Pim_Interface_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Pim_Interface_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Pim_Interface_Neighbor.
func (*NetworkInstance_Protocol_Pim_Interface_Neighbor) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Static represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/static-routes/static YANG schema element.
type NetworkInstance_Protocol_Static struct {
	ΛMetadata    []ygot.Annotation                                   `path:"@" ygotAnnotation:"true"`
	Description  *string                                             `path:"config/description" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDescription []ygot.Annotation                                   `path:"config/@description" ygotAnnotation:"true"`
	NextHop      map[string]*NetworkInstance_Protocol_Static_NextHop `path:"next-hops/next-hop" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHop     []ygot.Annotation                                   `path:"next-hops/@next-hop" ygotAnnotation:"true"`
	Prefix       *string                                             `path:"config/prefix|prefix" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛPrefix      []ygot.Annotation                                   `path:"config/@prefix|@prefix" ygotAnnotation:"true"`
	SetTag       NetworkInstance_Protocol_Static_SetTag_Union        `path:"config/set-tag" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSetTag      []ygot.Annotation                                   `path:"config/@set-tag" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Static implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Static) IsYANGGoStruct() {}

// NewNextHop creates a new entry in the NextHop list of the
// NetworkInstance_Protocol_Static struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_Protocol_Static) NewNextHop(Index string) (*NetworkInstance_Protocol_Static_NextHop, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHop == nil {
		t.NextHop = make(map[string]*NetworkInstance_Protocol_Static_NextHop)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.NextHop[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list NextHop", key)
	}

	t.NextHop[key] = &NetworkInstance_Protocol_Static_NextHop{
		Index: &Index,
	}

	return t.NextHop[key], nil
}

// RenameNextHop renames an entry in the list NextHop within
// the NetworkInstance_Protocol_Static struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_Protocol_Static) RenameNextHop(oldK, newK string) error {
	if _, ok := t.NextHop[newK]; ok {
		return fmt.Errorf("key %v already exists in NextHop", newK)
	}

	e, ok := t.NextHop[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in NextHop", oldK)
	}
	e.Index = &newK

	t.NextHop[newK] = e
	delete(t.NextHop, oldK)
	return nil
}

// GetOrCreateNextHopMap returns the list (map) from NetworkInstance_Protocol_Static.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_Protocol_Static) GetOrCreateNextHopMap() map[string]*NetworkInstance_Protocol_Static_NextHop {
	if t.NextHop == nil {
		t.NextHop = make(map[string]*NetworkInstance_Protocol_Static_NextHop)
	}
	return t.NextHop
}

// GetOrCreateNextHop retrieves the value with the specified keys from
// the receiver NetworkInstance_Protocol_Static. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_Protocol_Static) GetOrCreateNextHop(Index string) *NetworkInstance_Protocol_Static_NextHop {

	key := Index

	if v, ok := t.NextHop[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNextHop(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNextHop got unexpected error: %v", err))
	}
	return v
}

// GetNextHop retrieves the value with the specified key from
// the NextHop map field of NetworkInstance_Protocol_Static. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_Protocol_Static) GetNextHop(Index string) *NetworkInstance_Protocol_Static_NextHop {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.NextHop[key]; ok {
		return lm
	}
	return nil
}

// AppendNextHop appends the supplied NetworkInstance_Protocol_Static_NextHop struct to the
// list NextHop of NetworkInstance_Protocol_Static. If the key value(s) specified in
// the supplied NetworkInstance_Protocol_Static_NextHop already exist in the list, an error is
// returned.
func (t *NetworkInstance_Protocol_Static) AppendNextHop(v *NetworkInstance_Protocol_Static_NextHop) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHop == nil {
		t.NextHop = make(map[string]*NetworkInstance_Protocol_Static_NextHop)
	}

	if _, ok := t.NextHop[key]; ok {
		return fmt.Errorf("duplicate key for list NextHop %v", key)
	}

	t.NextHop[key] = v
	return nil
}

// GetDescription retrieves the value of the leaf Description from the NetworkInstance_Protocol_Static
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Static) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetPrefix retrieves the value of the leaf Prefix from the NetworkInstance_Protocol_Static
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefix is set, it can
// safely use t.GetPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Static) GetPrefix() string {
	if t == nil || t.Prefix == nil {
		return ""
	}
	return *t.Prefix
}

// GetSetTag retrieves the value of the leaf SetTag from the NetworkInstance_Protocol_Static
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SetTag is set, it can
// safely use t.GetSetTag() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SetTag == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Static) GetSetTag() NetworkInstance_Protocol_Static_SetTag_Union {
	if t == nil || t.SetTag == nil {
		return nil
	}
	return t.SetTag
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Static
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Static) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.NextHop {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Static struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Static) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Prefix == nil {
		return nil, fmt.Errorf("nil value for key Prefix")
	}

	return map[string]interface{}{
		"prefix": *t.Prefix,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Static) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Static"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Static) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Static) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Static.
func (*NetworkInstance_Protocol_Static) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Static_SetTag_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/static-routes/static/config/set-tag within the YANG schema.
// Union type can be one of [UnionString, UnionUint32].
type NetworkInstance_Protocol_Static_SetTag_Union interface {
	// Union type can be one of [UnionString, UnionUint32]
	Documentation_for_NetworkInstance_Protocol_Static_SetTag_Union()
}

// Documentation_for_NetworkInstance_Protocol_Static_SetTag_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Static_SetTag_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Static_SetTag_Union() {}

// Documentation_for_NetworkInstance_Protocol_Static_SetTag_Union ensures that UnionUint32
// implements the NetworkInstance_Protocol_Static_SetTag_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_Protocol_Static_SetTag_Union() {}

// To_NetworkInstance_Protocol_Static_SetTag_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Static_SetTag_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Static) To_NetworkInstance_Protocol_Static_SetTag_Union(i interface{}) (NetworkInstance_Protocol_Static_SetTag_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Static_SetTag_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Static_SetTag_Union, unknown union type, got: %T, want any of [string, uint32]", i, i)
}

// NetworkInstance_Protocol_Static_NextHop represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/static-routes/static/next-hops/next-hop YANG schema element.
type NetworkInstance_Protocol_Static_NextHop struct {
	ΛMetadata     []ygot.Annotation                                     `path:"@" ygotAnnotation:"true"`
	EnableBfd     *NetworkInstance_Protocol_Static_NextHop_EnableBfd    `path:"enable-bfd" module:"openconfig-network-instance"`
	ΛEnableBfd    []ygot.Annotation                                     `path:"@enable-bfd" ygotAnnotation:"true"`
	Index         *string                                               `path:"config/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex        []ygot.Annotation                                     `path:"config/@index|@index" ygotAnnotation:"true"`
	InterfaceRef  *NetworkInstance_Protocol_Static_NextHop_InterfaceRef `path:"interface-ref" module:"openconfig-network-instance"`
	ΛInterfaceRef []ygot.Annotation                                     `path:"@interface-ref" ygotAnnotation:"true"`
	Metric        *uint32                                               `path:"config/metric" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMetric       []ygot.Annotation                                     `path:"config/@metric" ygotAnnotation:"true"`
	NextHop       NetworkInstance_Protocol_Static_NextHop_NextHop_Union `path:"config/next-hop" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHop      []ygot.Annotation                                     `path:"config/@next-hop" ygotAnnotation:"true"`
	Preference    *uint32                                               `path:"config/preference" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreference   []ygot.Annotation                                     `path:"config/@preference" ygotAnnotation:"true"`
	Recurse       *bool                                                 `path:"config/recurse" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛRecurse      []ygot.Annotation                                     `path:"config/@recurse" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Static_NextHop implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Static_NextHop) IsYANGGoStruct() {}

// GetOrCreateEnableBfd retrieves the value of the EnableBfd field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Static_NextHop) GetOrCreateEnableBfd() *NetworkInstance_Protocol_Static_NextHop_EnableBfd {
	if t.EnableBfd != nil {
		return t.EnableBfd
	}
	t.EnableBfd = &NetworkInstance_Protocol_Static_NextHop_EnableBfd{}
	return t.EnableBfd
}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *NetworkInstance_Protocol_Static_NextHop) GetOrCreateInterfaceRef() *NetworkInstance_Protocol_Static_NextHop_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &NetworkInstance_Protocol_Static_NextHop_InterfaceRef{}
	return t.InterfaceRef
}

// GetEnableBfd returns the value of the EnableBfd struct pointer
// from NetworkInstance_Protocol_Static_NextHop. If the receiver or the field EnableBfd is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Static_NextHop) GetEnableBfd() *NetworkInstance_Protocol_Static_NextHop_EnableBfd {
	if t != nil && t.EnableBfd != nil {
		return t.EnableBfd
	}
	return nil
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from NetworkInstance_Protocol_Static_NextHop. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_Protocol_Static_NextHop) GetInterfaceRef() *NetworkInstance_Protocol_Static_NextHop_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_Protocol_Static_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Static_NextHop) GetIndex() string {
	if t == nil || t.Index == nil {
		return ""
	}
	return *t.Index
}

// GetMetric retrieves the value of the leaf Metric from the NetworkInstance_Protocol_Static_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Metric is set, it can
// safely use t.GetMetric() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Metric == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Static_NextHop) GetMetric() uint32 {
	if t == nil || t.Metric == nil {
		return 0
	}
	return *t.Metric
}

// GetNextHop retrieves the value of the leaf NextHop from the NetworkInstance_Protocol_Static_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHop is set, it can
// safely use t.GetNextHop() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHop == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Static_NextHop) GetNextHop() NetworkInstance_Protocol_Static_NextHop_NextHop_Union {
	if t == nil || t.NextHop == nil {
		return nil
	}
	return t.NextHop
}

// GetPreference retrieves the value of the leaf Preference from the NetworkInstance_Protocol_Static_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Preference is set, it can
// safely use t.GetPreference() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Preference == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Static_NextHop) GetPreference() uint32 {
	if t == nil || t.Preference == nil {
		return 0
	}
	return *t.Preference
}

// GetRecurse retrieves the value of the leaf Recurse from the NetworkInstance_Protocol_Static_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Recurse is set, it can
// safely use t.GetRecurse() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Recurse == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Static_NextHop) GetRecurse() bool {
	if t == nil || t.Recurse == nil {
		return false
	}
	return *t.Recurse
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Static_NextHop
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Static_NextHop) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Recurse == nil {
		var v bool = false
		t.Recurse = &v
	}
	t.EnableBfd.PopulateDefaults()
	t.InterfaceRef.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_Protocol_Static_NextHop struct, which is a YANG list entry.
func (t *NetworkInstance_Protocol_Static_NextHop) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Static_NextHop) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Static_NextHop"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Static_NextHop) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Static_NextHop) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Static_NextHop.
func (*NetworkInstance_Protocol_Static_NextHop) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Static_NextHop_NextHop_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/protocols/protocol/static-routes/static/next-hops/next-hop/config/next-hop within the YANG schema.
// Union type can be one of [E_LocalRouting_LOCAL_DEFINED_NEXT_HOP, UnionString].
type NetworkInstance_Protocol_Static_NextHop_NextHop_Union interface {
	// Union type can be one of [E_LocalRouting_LOCAL_DEFINED_NEXT_HOP, UnionString]
	Documentation_for_NetworkInstance_Protocol_Static_NextHop_NextHop_Union()
}

// Documentation_for_NetworkInstance_Protocol_Static_NextHop_NextHop_Union ensures that E_LocalRouting_LOCAL_DEFINED_NEXT_HOP
// implements the NetworkInstance_Protocol_Static_NextHop_NextHop_Union interface.
func (E_LocalRouting_LOCAL_DEFINED_NEXT_HOP) Documentation_for_NetworkInstance_Protocol_Static_NextHop_NextHop_Union() {
}

// Documentation_for_NetworkInstance_Protocol_Static_NextHop_NextHop_Union ensures that UnionString
// implements the NetworkInstance_Protocol_Static_NextHop_NextHop_Union interface.
func (UnionString) Documentation_for_NetworkInstance_Protocol_Static_NextHop_NextHop_Union() {}

// To_NetworkInstance_Protocol_Static_NextHop_NextHop_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_Protocol_Static_NextHop_NextHop_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_Protocol_Static_NextHop) To_NetworkInstance_Protocol_Static_NextHop_NextHop_Union(i interface{}) (NetworkInstance_Protocol_Static_NextHop_NextHop_Union, error) {
	if v, ok := i.(NetworkInstance_Protocol_Static_NextHop_NextHop_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_Protocol_Static_NextHop_NextHop_Union, unknown union type, got: %T, want any of [E_LocalRouting_LOCAL_DEFINED_NEXT_HOP, string]", i, i)
}

// NetworkInstance_Protocol_Static_NextHop_EnableBfd represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/static-routes/static/next-hops/next-hop/enable-bfd YANG schema element.
type NetworkInstance_Protocol_Static_NextHop_EnableBfd struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enabled   *bool             `path:"config/enabled" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnabled  []ygot.Annotation `path:"config/@enabled" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Static_NextHop_EnableBfd implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Static_NextHop_EnableBfd) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the NetworkInstance_Protocol_Static_NextHop_EnableBfd
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Static_NextHop_EnableBfd) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Static_NextHop_EnableBfd
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Static_NextHop_EnableBfd) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Static_NextHop_EnableBfd) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Static_NextHop_EnableBfd"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Static_NextHop_EnableBfd) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Static_NextHop_EnableBfd) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Static_NextHop_EnableBfd.
func (*NetworkInstance_Protocol_Static_NextHop_EnableBfd) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Protocol_Static_NextHop_InterfaceRef represents the /openconfig-network-instance/network-instances/network-instance/protocols/protocol/static-routes/static/next-hops/next-hop/interface-ref YANG schema element.
type NetworkInstance_Protocol_Static_NextHop_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Protocol_Static_NextHop_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Protocol_Static_NextHop_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Protocol_Static_NextHop_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Static_NextHop_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_Protocol_Static_NextHop_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Protocol_Static_NextHop_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Protocol_Static_NextHop_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Protocol_Static_NextHop_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Static_NextHop_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Protocol_Static_NextHop_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Protocol_Static_NextHop_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Protocol_Static_NextHop_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Protocol_Static_NextHop_InterfaceRef.
func (*NetworkInstance_Protocol_Static_NextHop_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_RouteLimit represents the /openconfig-network-instance/network-instances/network-instance/route-limits/route-limit YANG schema element.
type NetworkInstance_RouteLimit struct {
	ΛMetadata          []ygot.Annotation      `path:"@" ygotAnnotation:"true"`
	Afi                E_Types_ADDRESS_FAMILY `path:"config/afi|afi" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAfi               []ygot.Annotation      `path:"config/@afi|@afi" ygotAnnotation:"true"`
	AlarmThreshold     *uint32                `path:"config/alarm-threshold" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛAlarmThreshold    []ygot.Annotation      `path:"config/@alarm-threshold" ygotAnnotation:"true"`
	InstalledRoutes    *uint32                `path:"state/installed-routes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInstalledRoutes   []ygot.Annotation      `path:"state/@installed-routes" ygotAnnotation:"true"`
	Maximum            *uint32                `path:"config/maximum" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMaximum           []ygot.Annotation      `path:"config/@maximum" ygotAnnotation:"true"`
	ThresholdExceeded  *bool                  `path:"state/threshold-exceeded" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛThresholdExceeded []ygot.Annotation      `path:"state/@threshold-exceeded" ygotAnnotation:"true"`
	WarningOnly        *bool                  `path:"config/warning-only" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWarningOnly       []ygot.Annotation      `path:"config/@warning-only" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_RouteLimit implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_RouteLimit) IsYANGGoStruct() {}

// GetAfi retrieves the value of the leaf Afi from the NetworkInstance_RouteLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Afi is set, it can
// safely use t.GetAfi() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Afi == nil' before retrieving the leaf's value.
func (t *NetworkInstance_RouteLimit) GetAfi() E_Types_ADDRESS_FAMILY {
	if t == nil || t.Afi == 0 {
		return 0
	}
	return t.Afi
}

// GetAlarmThreshold retrieves the value of the leaf AlarmThreshold from the NetworkInstance_RouteLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AlarmThreshold is set, it can
// safely use t.GetAlarmThreshold() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AlarmThreshold == nil' before retrieving the leaf's value.
func (t *NetworkInstance_RouteLimit) GetAlarmThreshold() uint32 {
	if t == nil || t.AlarmThreshold == nil {
		return 0
	}
	return *t.AlarmThreshold
}

// GetInstalledRoutes retrieves the value of the leaf InstalledRoutes from the NetworkInstance_RouteLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InstalledRoutes is set, it can
// safely use t.GetInstalledRoutes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InstalledRoutes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_RouteLimit) GetInstalledRoutes() uint32 {
	if t == nil || t.InstalledRoutes == nil {
		return 0
	}
	return *t.InstalledRoutes
}

// GetMaximum retrieves the value of the leaf Maximum from the NetworkInstance_RouteLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Maximum is set, it can
// safely use t.GetMaximum() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Maximum == nil' before retrieving the leaf's value.
func (t *NetworkInstance_RouteLimit) GetMaximum() uint32 {
	if t == nil || t.Maximum == nil {
		return 0
	}
	return *t.Maximum
}

// GetThresholdExceeded retrieves the value of the leaf ThresholdExceeded from the NetworkInstance_RouteLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ThresholdExceeded is set, it can
// safely use t.GetThresholdExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ThresholdExceeded == nil' before retrieving the leaf's value.
func (t *NetworkInstance_RouteLimit) GetThresholdExceeded() bool {
	if t == nil || t.ThresholdExceeded == nil {
		return false
	}
	return *t.ThresholdExceeded
}

// GetWarningOnly retrieves the value of the leaf WarningOnly from the NetworkInstance_RouteLimit
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if WarningOnly is set, it can
// safely use t.GetWarningOnly() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.WarningOnly == nil' before retrieving the leaf's value.
func (t *NetworkInstance_RouteLimit) GetWarningOnly() bool {
	if t == nil || t.WarningOnly == nil {
		return false
	}
	return *t.WarningOnly
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_RouteLimit
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_RouteLimit) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.WarningOnly == nil {
		var v bool = false
		t.WarningOnly = &v
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_RouteLimit struct, which is a YANG list entry.
func (t *NetworkInstance_RouteLimit) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"afi": t.Afi,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_RouteLimit) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_RouteLimit"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_RouteLimit) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_RouteLimit) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_RouteLimit.
func (*NetworkInstance_RouteLimit) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_SegmentRouting represents the /openconfig-network-instance/network-instances/network-instance/segment-routing YANG schema element.
type NetworkInstance_SegmentRouting struct {
	ΛMetadata []ygot.Annotation                                                                        `path:"@" ygotAnnotation:"true"`
	Srgb      map[string]*NetworkInstance_SegmentRouting_Srgb                                          `path:"srgbs/srgb" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSrgb     []ygot.Annotation                                                                        `path:"srgbs/@srgb" ygotAnnotation:"true"`
	Srlb      map[string]*NetworkInstance_SegmentRouting_Srlb                                          `path:"srlbs/srlb" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSrlb     []ygot.Annotation                                                                        `path:"srlbs/@srlb" ygotAnnotation:"true"`
	TePolicy  map[NetworkInstance_SegmentRouting_TePolicy_Key]*NetworkInstance_SegmentRouting_TePolicy `path:"te-policies/te-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛTePolicy []ygot.Annotation                                                                        `path:"te-policies/@te-policy" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_SegmentRouting implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_SegmentRouting) IsYANGGoStruct() {}

// NetworkInstance_SegmentRouting_TePolicy_Key represents the key for list TePolicy of element /openconfig-network-instance/network-instances/network-instance/segment-routing.
type NetworkInstance_SegmentRouting_TePolicy_Key struct {
	Color    uint32 `path:"color"`
	Endpoint string `path:"endpoint"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_SegmentRouting_TePolicy_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_SegmentRouting_TePolicy_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_SegmentRouting_TePolicy_Key key struct.
func (t NetworkInstance_SegmentRouting_TePolicy_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"color":    t.Color,
		"endpoint": t.Endpoint,
	}, nil
}

// NewSrgb creates a new entry in the Srgb list of the
// NetworkInstance_SegmentRouting struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_SegmentRouting) NewSrgb(LocalId string) (*NetworkInstance_SegmentRouting_Srgb, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Srgb == nil {
		t.Srgb = make(map[string]*NetworkInstance_SegmentRouting_Srgb)
	}

	key := LocalId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Srgb[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Srgb", key)
	}

	t.Srgb[key] = &NetworkInstance_SegmentRouting_Srgb{
		LocalId: &LocalId,
	}

	return t.Srgb[key], nil
}

// RenameSrgb renames an entry in the list Srgb within
// the NetworkInstance_SegmentRouting struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_SegmentRouting) RenameSrgb(oldK, newK string) error {
	if _, ok := t.Srgb[newK]; ok {
		return fmt.Errorf("key %v already exists in Srgb", newK)
	}

	e, ok := t.Srgb[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Srgb", oldK)
	}
	e.LocalId = &newK

	t.Srgb[newK] = e
	delete(t.Srgb, oldK)
	return nil
}

// GetOrCreateSrgbMap returns the list (map) from NetworkInstance_SegmentRouting.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_SegmentRouting) GetOrCreateSrgbMap() map[string]*NetworkInstance_SegmentRouting_Srgb {
	if t.Srgb == nil {
		t.Srgb = make(map[string]*NetworkInstance_SegmentRouting_Srgb)
	}
	return t.Srgb
}

// GetOrCreateSrgb retrieves the value with the specified keys from
// the receiver NetworkInstance_SegmentRouting. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_SegmentRouting) GetOrCreateSrgb(LocalId string) *NetworkInstance_SegmentRouting_Srgb {

	key := LocalId

	if v, ok := t.Srgb[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSrgb(LocalId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSrgb got unexpected error: %v", err))
	}
	return v
}

// GetSrgb retrieves the value with the specified key from
// the Srgb map field of NetworkInstance_SegmentRouting. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_SegmentRouting) GetSrgb(LocalId string) *NetworkInstance_SegmentRouting_Srgb {

	if t == nil {
		return nil
	}

	key := LocalId

	if lm, ok := t.Srgb[key]; ok {
		return lm
	}
	return nil
}

// AppendSrgb appends the supplied NetworkInstance_SegmentRouting_Srgb struct to the
// list Srgb of NetworkInstance_SegmentRouting. If the key value(s) specified in
// the supplied NetworkInstance_SegmentRouting_Srgb already exist in the list, an error is
// returned.
func (t *NetworkInstance_SegmentRouting) AppendSrgb(v *NetworkInstance_SegmentRouting_Srgb) error {
	if v.LocalId == nil {
		return fmt.Errorf("invalid nil key received for LocalId")
	}

	key := *v.LocalId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Srgb == nil {
		t.Srgb = make(map[string]*NetworkInstance_SegmentRouting_Srgb)
	}

	if _, ok := t.Srgb[key]; ok {
		return fmt.Errorf("duplicate key for list Srgb %v", key)
	}

	t.Srgb[key] = v
	return nil
}

// NewSrlb creates a new entry in the Srlb list of the
// NetworkInstance_SegmentRouting struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_SegmentRouting) NewSrlb(LocalId string) (*NetworkInstance_SegmentRouting_Srlb, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Srlb == nil {
		t.Srlb = make(map[string]*NetworkInstance_SegmentRouting_Srlb)
	}

	key := LocalId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Srlb[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Srlb", key)
	}

	t.Srlb[key] = &NetworkInstance_SegmentRouting_Srlb{
		LocalId: &LocalId,
	}

	return t.Srlb[key], nil
}

// RenameSrlb renames an entry in the list Srlb within
// the NetworkInstance_SegmentRouting struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_SegmentRouting) RenameSrlb(oldK, newK string) error {
	if _, ok := t.Srlb[newK]; ok {
		return fmt.Errorf("key %v already exists in Srlb", newK)
	}

	e, ok := t.Srlb[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Srlb", oldK)
	}
	e.LocalId = &newK

	t.Srlb[newK] = e
	delete(t.Srlb, oldK)
	return nil
}

// GetOrCreateSrlbMap returns the list (map) from NetworkInstance_SegmentRouting.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_SegmentRouting) GetOrCreateSrlbMap() map[string]*NetworkInstance_SegmentRouting_Srlb {
	if t.Srlb == nil {
		t.Srlb = make(map[string]*NetworkInstance_SegmentRouting_Srlb)
	}
	return t.Srlb
}

// GetOrCreateSrlb retrieves the value with the specified keys from
// the receiver NetworkInstance_SegmentRouting. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_SegmentRouting) GetOrCreateSrlb(LocalId string) *NetworkInstance_SegmentRouting_Srlb {

	key := LocalId

	if v, ok := t.Srlb[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSrlb(LocalId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSrlb got unexpected error: %v", err))
	}
	return v
}

// GetSrlb retrieves the value with the specified key from
// the Srlb map field of NetworkInstance_SegmentRouting. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_SegmentRouting) GetSrlb(LocalId string) *NetworkInstance_SegmentRouting_Srlb {

	if t == nil {
		return nil
	}

	key := LocalId

	if lm, ok := t.Srlb[key]; ok {
		return lm
	}
	return nil
}

// AppendSrlb appends the supplied NetworkInstance_SegmentRouting_Srlb struct to the
// list Srlb of NetworkInstance_SegmentRouting. If the key value(s) specified in
// the supplied NetworkInstance_SegmentRouting_Srlb already exist in the list, an error is
// returned.
func (t *NetworkInstance_SegmentRouting) AppendSrlb(v *NetworkInstance_SegmentRouting_Srlb) error {
	if v.LocalId == nil {
		return fmt.Errorf("invalid nil key received for LocalId")
	}

	key := *v.LocalId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Srlb == nil {
		t.Srlb = make(map[string]*NetworkInstance_SegmentRouting_Srlb)
	}

	if _, ok := t.Srlb[key]; ok {
		return fmt.Errorf("duplicate key for list Srlb %v", key)
	}

	t.Srlb[key] = v
	return nil
}

// NewTePolicy creates a new entry in the TePolicy list of the
// NetworkInstance_SegmentRouting struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_SegmentRouting) NewTePolicy(Color uint32, Endpoint string) (*NetworkInstance_SegmentRouting_TePolicy, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TePolicy == nil {
		t.TePolicy = make(map[NetworkInstance_SegmentRouting_TePolicy_Key]*NetworkInstance_SegmentRouting_TePolicy)
	}

	key := NetworkInstance_SegmentRouting_TePolicy_Key{
		Color:    Color,
		Endpoint: Endpoint,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.TePolicy[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list TePolicy", key)
	}

	t.TePolicy[key] = &NetworkInstance_SegmentRouting_TePolicy{
		Color:    &Color,
		Endpoint: &Endpoint,
	}

	return t.TePolicy[key], nil
}

// RenameTePolicy renames an entry in the list TePolicy within
// the NetworkInstance_SegmentRouting struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_SegmentRouting) RenameTePolicy(oldK, newK NetworkInstance_SegmentRouting_TePolicy_Key) error {
	if _, ok := t.TePolicy[newK]; ok {
		return fmt.Errorf("key %v already exists in TePolicy", newK)
	}

	e, ok := t.TePolicy[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in TePolicy", oldK)
	}
	e.Color = &newK.Color
	e.Endpoint = &newK.Endpoint

	t.TePolicy[newK] = e
	delete(t.TePolicy, oldK)
	return nil
}

// GetOrCreateTePolicyMap returns the list (map) from NetworkInstance_SegmentRouting.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_SegmentRouting) GetOrCreateTePolicyMap() map[NetworkInstance_SegmentRouting_TePolicy_Key]*NetworkInstance_SegmentRouting_TePolicy {
	if t.TePolicy == nil {
		t.TePolicy = make(map[NetworkInstance_SegmentRouting_TePolicy_Key]*NetworkInstance_SegmentRouting_TePolicy)
	}
	return t.TePolicy
}

// GetOrCreateTePolicy retrieves the value with the specified keys from
// the receiver NetworkInstance_SegmentRouting. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_SegmentRouting) GetOrCreateTePolicy(Color uint32, Endpoint string) *NetworkInstance_SegmentRouting_TePolicy {

	key := NetworkInstance_SegmentRouting_TePolicy_Key{
		Color:    Color,
		Endpoint: Endpoint,
	}

	if v, ok := t.TePolicy[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTePolicy(Color, Endpoint)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTePolicy got unexpected error: %v", err))
	}
	return v
}

// GetTePolicy retrieves the value with the specified key from
// the TePolicy map field of NetworkInstance_SegmentRouting. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_SegmentRouting) GetTePolicy(Color uint32, Endpoint string) *NetworkInstance_SegmentRouting_TePolicy {

	if t == nil {
		return nil
	}

	key := NetworkInstance_SegmentRouting_TePolicy_Key{
		Color:    Color,
		Endpoint: Endpoint,
	}

	if lm, ok := t.TePolicy[key]; ok {
		return lm
	}
	return nil
}

// AppendTePolicy appends the supplied NetworkInstance_SegmentRouting_TePolicy struct to the
// list TePolicy of NetworkInstance_SegmentRouting. If the key value(s) specified in
// the supplied NetworkInstance_SegmentRouting_TePolicy already exist in the list, an error is
// returned.
func (t *NetworkInstance_SegmentRouting) AppendTePolicy(v *NetworkInstance_SegmentRouting_TePolicy) error {
	if v.Color == nil {
		return fmt.Errorf("invalid nil key for Color")
	}

	if v.Endpoint == nil {
		return fmt.Errorf("invalid nil key for Endpoint")
	}

	key := NetworkInstance_SegmentRouting_TePolicy_Key{
		Color:    *v.Color,
		Endpoint: *v.Endpoint,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TePolicy == nil {
		t.TePolicy = make(map[NetworkInstance_SegmentRouting_TePolicy_Key]*NetworkInstance_SegmentRouting_TePolicy)
	}

	if _, ok := t.TePolicy[key]; ok {
		return fmt.Errorf("duplicate key for list TePolicy %v", key)
	}

	t.TePolicy[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_SegmentRouting
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_SegmentRouting) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Srgb {
		e.PopulateDefaults()
	}
	for _, e := range t.Srlb {
		e.PopulateDefaults()
	}
	for _, e := range t.TePolicy {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_SegmentRouting"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_SegmentRouting) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_SegmentRouting.
func (*NetworkInstance_SegmentRouting) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_SegmentRouting_Srgb represents the /openconfig-network-instance/network-instances/network-instance/segment-routing/srgbs/srgb YANG schema element.
type NetworkInstance_SegmentRouting_Srgb struct {
	ΛMetadata        []ygot.Annotation                     `path:"@" ygotAnnotation:"true"`
	DataplaneType    E_SegmentRoutingTypes_SrDataplaneType `path:"config/dataplane-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDataplaneType   []ygot.Annotation                     `path:"config/@dataplane-type" ygotAnnotation:"true"`
	Ipv6Prefixes     []string                              `path:"config/ipv6-prefixes" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpv6Prefixes    []ygot.Annotation                     `path:"config/@ipv6-prefixes" ygotAnnotation:"true"`
	LocalId          *string                               `path:"config/local-id|local-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛLocalId         []ygot.Annotation                     `path:"config/@local-id|@local-id" ygotAnnotation:"true"`
	MplsLabelBlocks  []string                              `path:"config/mpls-label-blocks" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMplsLabelBlocks []ygot.Annotation                     `path:"config/@mpls-label-blocks" ygotAnnotation:"true"`
	Size             *uint32                               `path:"state/size" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSize            []ygot.Annotation                     `path:"state/@size" ygotAnnotation:"true"`
	Used             *uint32                               `path:"state/used" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛUsed            []ygot.Annotation                     `path:"state/@used" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_SegmentRouting_Srgb implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_SegmentRouting_Srgb) IsYANGGoStruct() {}

// GetDataplaneType retrieves the value of the leaf DataplaneType from the NetworkInstance_SegmentRouting_Srgb
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DataplaneType is set, it can
// safely use t.GetDataplaneType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DataplaneType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_Srgb) GetDataplaneType() E_SegmentRoutingTypes_SrDataplaneType {
	if t == nil || t.DataplaneType == 0 {
		return 0
	}
	return t.DataplaneType
}

// GetIpv6Prefixes retrieves the value of the leaf Ipv6Prefixes from the NetworkInstance_SegmentRouting_Srgb
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ipv6Prefixes is set, it can
// safely use t.GetIpv6Prefixes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ipv6Prefixes == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_Srgb) GetIpv6Prefixes() []string {
	if t == nil || t.Ipv6Prefixes == nil {
		return nil
	}
	return t.Ipv6Prefixes
}

// GetLocalId retrieves the value of the leaf LocalId from the NetworkInstance_SegmentRouting_Srgb
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalId is set, it can
// safely use t.GetLocalId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_Srgb) GetLocalId() string {
	if t == nil || t.LocalId == nil {
		return ""
	}
	return *t.LocalId
}

// GetMplsLabelBlocks retrieves the value of the leaf MplsLabelBlocks from the NetworkInstance_SegmentRouting_Srgb
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MplsLabelBlocks is set, it can
// safely use t.GetMplsLabelBlocks() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MplsLabelBlocks == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_Srgb) GetMplsLabelBlocks() []string {
	if t == nil || t.MplsLabelBlocks == nil {
		return nil
	}
	return t.MplsLabelBlocks
}

// GetSize retrieves the value of the leaf Size from the NetworkInstance_SegmentRouting_Srgb
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Size is set, it can
// safely use t.GetSize() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Size == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_Srgb) GetSize() uint32 {
	if t == nil || t.Size == nil {
		return 0
	}
	return *t.Size
}

// GetUsed retrieves the value of the leaf Used from the NetworkInstance_SegmentRouting_Srgb
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Used is set, it can
// safely use t.GetUsed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Used == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_Srgb) GetUsed() uint32 {
	if t == nil || t.Used == nil {
		return 0
	}
	return *t.Used
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_SegmentRouting_Srgb
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_SegmentRouting_Srgb) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_SegmentRouting_Srgb struct, which is a YANG list entry.
func (t *NetworkInstance_SegmentRouting_Srgb) ΛListKeyMap() (map[string]interface{}, error) {
	if t.LocalId == nil {
		return nil, fmt.Errorf("nil value for key LocalId")
	}

	return map[string]interface{}{
		"local-id": *t.LocalId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_Srgb) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_SegmentRouting_Srgb"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_Srgb) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_SegmentRouting_Srgb) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_SegmentRouting_Srgb.
func (*NetworkInstance_SegmentRouting_Srgb) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_SegmentRouting_Srlb represents the /openconfig-network-instance/network-instances/network-instance/segment-routing/srlbs/srlb YANG schema element.
type NetworkInstance_SegmentRouting_Srlb struct {
	ΛMetadata       []ygot.Annotation                     `path:"@" ygotAnnotation:"true"`
	DataplaneType   E_SegmentRoutingTypes_SrDataplaneType `path:"config/dataplane-type" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDataplaneType  []ygot.Annotation                     `path:"config/@dataplane-type" ygotAnnotation:"true"`
	Ipv6Prefix      *string                               `path:"config/ipv6-prefix" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpv6Prefix     []ygot.Annotation                     `path:"config/@ipv6-prefix" ygotAnnotation:"true"`
	LocalId         *string                               `path:"config/local-id|local-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛLocalId        []ygot.Annotation                     `path:"config/@local-id|@local-id" ygotAnnotation:"true"`
	MplsLabelBlock  *string                               `path:"config/mpls-label-block" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMplsLabelBlock []ygot.Annotation                     `path:"config/@mpls-label-block" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_SegmentRouting_Srlb implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_SegmentRouting_Srlb) IsYANGGoStruct() {}

// GetDataplaneType retrieves the value of the leaf DataplaneType from the NetworkInstance_SegmentRouting_Srlb
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DataplaneType is set, it can
// safely use t.GetDataplaneType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DataplaneType == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_Srlb) GetDataplaneType() E_SegmentRoutingTypes_SrDataplaneType {
	if t == nil || t.DataplaneType == 0 {
		return 0
	}
	return t.DataplaneType
}

// GetIpv6Prefix retrieves the value of the leaf Ipv6Prefix from the NetworkInstance_SegmentRouting_Srlb
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ipv6Prefix is set, it can
// safely use t.GetIpv6Prefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ipv6Prefix == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_Srlb) GetIpv6Prefix() string {
	if t == nil || t.Ipv6Prefix == nil {
		return ""
	}
	return *t.Ipv6Prefix
}

// GetLocalId retrieves the value of the leaf LocalId from the NetworkInstance_SegmentRouting_Srlb
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalId is set, it can
// safely use t.GetLocalId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_Srlb) GetLocalId() string {
	if t == nil || t.LocalId == nil {
		return ""
	}
	return *t.LocalId
}

// GetMplsLabelBlock retrieves the value of the leaf MplsLabelBlock from the NetworkInstance_SegmentRouting_Srlb
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MplsLabelBlock is set, it can
// safely use t.GetMplsLabelBlock() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MplsLabelBlock == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_Srlb) GetMplsLabelBlock() string {
	if t == nil || t.MplsLabelBlock == nil {
		return ""
	}
	return *t.MplsLabelBlock
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_SegmentRouting_Srlb
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_SegmentRouting_Srlb) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_SegmentRouting_Srlb struct, which is a YANG list entry.
func (t *NetworkInstance_SegmentRouting_Srlb) ΛListKeyMap() (map[string]interface{}, error) {
	if t.LocalId == nil {
		return nil, fmt.Errorf("nil value for key LocalId")
	}

	return map[string]interface{}{
		"local-id": *t.LocalId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_Srlb) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_SegmentRouting_Srlb"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_Srlb) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_SegmentRouting_Srlb) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_SegmentRouting_Srlb.
func (*NetworkInstance_SegmentRouting_Srlb) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_SegmentRouting_TePolicy represents the /openconfig-network-instance/network-instances/network-instance/segment-routing/te-policies/te-policy YANG schema element.
type NetworkInstance_SegmentRouting_TePolicy struct {
	ΛMetadata          []ygot.Annotation                                                                                                    `path:"@" ygotAnnotation:"true"`
	Active             *bool                                                                                                                `path:"state/active" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛActive            []ygot.Annotation                                                                                                    `path:"state/@active" ygotAnnotation:"true"`
	ActiveSince        *uint64                                                                                                              `path:"state/active-since" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛActiveSince       []ygot.Annotation                                                                                                    `path:"state/@active-since" ygotAnnotation:"true"`
	ActiveTransitions  *uint64                                                                                                              `path:"state/active-transitions" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛActiveTransitions []ygot.Annotation                                                                                                    `path:"state/@active-transitions" ygotAnnotation:"true"`
	Bsid               NetworkInstance_SegmentRouting_TePolicy_Bsid_Union                                                                   `path:"state/bsid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛBsid              []ygot.Annotation                                                                                                    `path:"state/@bsid" ygotAnnotation:"true"`
	CandidatePath      map[NetworkInstance_SegmentRouting_TePolicy_CandidatePath_Key]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath `path:"candidate-paths/candidate-path" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCandidatePath     []ygot.Annotation                                                                                                    `path:"candidate-paths/@candidate-path" ygotAnnotation:"true"`
	Color              *uint32                                                                                                              `path:"state/color|color" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛColor             []ygot.Annotation                                                                                                    `path:"state/@color|@color" ygotAnnotation:"true"`
	Counters           *NetworkInstance_SegmentRouting_TePolicy_Counters                                                                    `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters          []ygot.Annotation                                                                                                    `path:"state/@counters" ygotAnnotation:"true"`
	Endpoint           *string                                                                                                              `path:"state/endpoint|endpoint" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛEndpoint          []ygot.Annotation                                                                                                    `path:"state/@endpoint|@endpoint" ygotAnnotation:"true"`
	Name               *string                                                                                                              `path:"state/name" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛName              []ygot.Annotation                                                                                                    `path:"state/@name" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_SegmentRouting_TePolicy implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_SegmentRouting_TePolicy) IsYANGGoStruct() {}

// NetworkInstance_SegmentRouting_TePolicy_CandidatePath_Key represents the key for list CandidatePath of element /openconfig-network-instance/network-instances/network-instance/segment-routing/te-policies/te-policy.
type NetworkInstance_SegmentRouting_TePolicy_CandidatePath_Key struct {
	ProtocolOrigin E_SegmentRoutingTypes_SrteProtocolType `path:"protocol-origin"`
	OriginatorAsn  uint32                                 `path:"originator-asn"`
	OriginatorAddr string                                 `path:"originator-addr"`
	Discriminator  uint32                                 `path:"discriminator"`
}

// IsYANGGoKeyStruct ensures that NetworkInstance_SegmentRouting_TePolicy_CandidatePath_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (NetworkInstance_SegmentRouting_TePolicy_CandidatePath_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_Key key struct.
func (t NetworkInstance_SegmentRouting_TePolicy_CandidatePath_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"protocol-origin": t.ProtocolOrigin,
		"originator-asn":  t.OriginatorAsn,
		"originator-addr": t.OriginatorAddr,
		"discriminator":   t.Discriminator,
	}, nil
}

// NewCandidatePath creates a new entry in the CandidatePath list of the
// NetworkInstance_SegmentRouting_TePolicy struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_SegmentRouting_TePolicy) NewCandidatePath(ProtocolOrigin E_SegmentRoutingTypes_SrteProtocolType, OriginatorAsn uint32, OriginatorAddr string, Discriminator uint32) (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.CandidatePath == nil {
		t.CandidatePath = make(map[NetworkInstance_SegmentRouting_TePolicy_CandidatePath_Key]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath)
	}

	key := NetworkInstance_SegmentRouting_TePolicy_CandidatePath_Key{
		ProtocolOrigin: ProtocolOrigin,
		OriginatorAsn:  OriginatorAsn,
		OriginatorAddr: OriginatorAddr,
		Discriminator:  Discriminator,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.CandidatePath[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list CandidatePath", key)
	}

	t.CandidatePath[key] = &NetworkInstance_SegmentRouting_TePolicy_CandidatePath{
		ProtocolOrigin: ProtocolOrigin,
		OriginatorAsn:  &OriginatorAsn,
		OriginatorAddr: &OriginatorAddr,
		Discriminator:  &Discriminator,
	}

	return t.CandidatePath[key], nil
}

// RenameCandidatePath renames an entry in the list CandidatePath within
// the NetworkInstance_SegmentRouting_TePolicy struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_SegmentRouting_TePolicy) RenameCandidatePath(oldK, newK NetworkInstance_SegmentRouting_TePolicy_CandidatePath_Key) error {
	if _, ok := t.CandidatePath[newK]; ok {
		return fmt.Errorf("key %v already exists in CandidatePath", newK)
	}

	e, ok := t.CandidatePath[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in CandidatePath", oldK)
	}
	e.ProtocolOrigin = newK.ProtocolOrigin
	e.OriginatorAsn = &newK.OriginatorAsn
	e.OriginatorAddr = &newK.OriginatorAddr
	e.Discriminator = &newK.Discriminator

	t.CandidatePath[newK] = e
	delete(t.CandidatePath, oldK)
	return nil
}

// GetOrCreateCandidatePathMap returns the list (map) from NetworkInstance_SegmentRouting_TePolicy.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_SegmentRouting_TePolicy) GetOrCreateCandidatePathMap() map[NetworkInstance_SegmentRouting_TePolicy_CandidatePath_Key]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath {
	if t.CandidatePath == nil {
		t.CandidatePath = make(map[NetworkInstance_SegmentRouting_TePolicy_CandidatePath_Key]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath)
	}
	return t.CandidatePath
}

// GetOrCreateCandidatePath retrieves the value with the specified keys from
// the receiver NetworkInstance_SegmentRouting_TePolicy. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_SegmentRouting_TePolicy) GetOrCreateCandidatePath(ProtocolOrigin E_SegmentRoutingTypes_SrteProtocolType, OriginatorAsn uint32, OriginatorAddr string, Discriminator uint32) *NetworkInstance_SegmentRouting_TePolicy_CandidatePath {

	key := NetworkInstance_SegmentRouting_TePolicy_CandidatePath_Key{
		ProtocolOrigin: ProtocolOrigin,
		OriginatorAsn:  OriginatorAsn,
		OriginatorAddr: OriginatorAddr,
		Discriminator:  Discriminator,
	}

	if v, ok := t.CandidatePath[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewCandidatePath(ProtocolOrigin, OriginatorAsn, OriginatorAddr, Discriminator)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateCandidatePath got unexpected error: %v", err))
	}
	return v
}

// GetCandidatePath retrieves the value with the specified key from
// the CandidatePath map field of NetworkInstance_SegmentRouting_TePolicy. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_SegmentRouting_TePolicy) GetCandidatePath(ProtocolOrigin E_SegmentRoutingTypes_SrteProtocolType, OriginatorAsn uint32, OriginatorAddr string, Discriminator uint32) *NetworkInstance_SegmentRouting_TePolicy_CandidatePath {

	if t == nil {
		return nil
	}

	key := NetworkInstance_SegmentRouting_TePolicy_CandidatePath_Key{
		ProtocolOrigin: ProtocolOrigin,
		OriginatorAsn:  OriginatorAsn,
		OriginatorAddr: OriginatorAddr,
		Discriminator:  Discriminator,
	}

	if lm, ok := t.CandidatePath[key]; ok {
		return lm
	}
	return nil
}

// AppendCandidatePath appends the supplied NetworkInstance_SegmentRouting_TePolicy_CandidatePath struct to the
// list CandidatePath of NetworkInstance_SegmentRouting_TePolicy. If the key value(s) specified in
// the supplied NetworkInstance_SegmentRouting_TePolicy_CandidatePath already exist in the list, an error is
// returned.
func (t *NetworkInstance_SegmentRouting_TePolicy) AppendCandidatePath(v *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) error {
	if v.OriginatorAsn == nil {
		return fmt.Errorf("invalid nil key for OriginatorAsn")
	}

	if v.OriginatorAddr == nil {
		return fmt.Errorf("invalid nil key for OriginatorAddr")
	}

	if v.Discriminator == nil {
		return fmt.Errorf("invalid nil key for Discriminator")
	}

	key := NetworkInstance_SegmentRouting_TePolicy_CandidatePath_Key{
		ProtocolOrigin: v.ProtocolOrigin,
		OriginatorAsn:  *v.OriginatorAsn,
		OriginatorAddr: *v.OriginatorAddr,
		Discriminator:  *v.Discriminator,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.CandidatePath == nil {
		t.CandidatePath = make(map[NetworkInstance_SegmentRouting_TePolicy_CandidatePath_Key]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath)
	}

	if _, ok := t.CandidatePath[key]; ok {
		return fmt.Errorf("duplicate key for list CandidatePath %v", key)
	}

	t.CandidatePath[key] = v
	return nil
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_SegmentRouting_TePolicy) GetOrCreateCounters() *NetworkInstance_SegmentRouting_TePolicy_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_SegmentRouting_TePolicy_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_SegmentRouting_TePolicy. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_SegmentRouting_TePolicy) GetCounters() *NetworkInstance_SegmentRouting_TePolicy_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetActive retrieves the value of the leaf Active from the NetworkInstance_SegmentRouting_TePolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Active is set, it can
// safely use t.GetActive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Active == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy) GetActive() bool {
	if t == nil || t.Active == nil {
		return false
	}
	return *t.Active
}

// GetActiveSince retrieves the value of the leaf ActiveSince from the NetworkInstance_SegmentRouting_TePolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ActiveSince is set, it can
// safely use t.GetActiveSince() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ActiveSince == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy) GetActiveSince() uint64 {
	if t == nil || t.ActiveSince == nil {
		return 0
	}
	return *t.ActiveSince
}

// GetActiveTransitions retrieves the value of the leaf ActiveTransitions from the NetworkInstance_SegmentRouting_TePolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ActiveTransitions is set, it can
// safely use t.GetActiveTransitions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ActiveTransitions == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy) GetActiveTransitions() uint64 {
	if t == nil || t.ActiveTransitions == nil {
		return 0
	}
	return *t.ActiveTransitions
}

// GetBsid retrieves the value of the leaf Bsid from the NetworkInstance_SegmentRouting_TePolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Bsid is set, it can
// safely use t.GetBsid() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Bsid == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy) GetBsid() NetworkInstance_SegmentRouting_TePolicy_Bsid_Union {
	if t == nil || t.Bsid == nil {
		return nil
	}
	return t.Bsid
}

// GetColor retrieves the value of the leaf Color from the NetworkInstance_SegmentRouting_TePolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Color is set, it can
// safely use t.GetColor() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Color == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy) GetColor() uint32 {
	if t == nil || t.Color == nil {
		return 0
	}
	return *t.Color
}

// GetEndpoint retrieves the value of the leaf Endpoint from the NetworkInstance_SegmentRouting_TePolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Endpoint is set, it can
// safely use t.GetEndpoint() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Endpoint == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy) GetEndpoint() string {
	if t == nil || t.Endpoint == nil {
		return ""
	}
	return *t.Endpoint
}

// GetName retrieves the value of the leaf Name from the NetworkInstance_SegmentRouting_TePolicy
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_SegmentRouting_TePolicy
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_SegmentRouting_TePolicy) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Counters.PopulateDefaults()
	for _, e := range t.CandidatePath {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_SegmentRouting_TePolicy struct, which is a YANG list entry.
func (t *NetworkInstance_SegmentRouting_TePolicy) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Color == nil {
		return nil, fmt.Errorf("nil value for key Color")
	}

	if t.Endpoint == nil {
		return nil, fmt.Errorf("nil value for key Endpoint")
	}

	return map[string]interface{}{
		"color":    *t.Color,
		"endpoint": *t.Endpoint,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_SegmentRouting_TePolicy"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_SegmentRouting_TePolicy) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_SegmentRouting_TePolicy.
func (*NetworkInstance_SegmentRouting_TePolicy) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_SegmentRouting_TePolicy_Bsid_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/segment-routing/te-policies/te-policy/state/bsid within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionString, UnionUint32].
type NetworkInstance_SegmentRouting_TePolicy_Bsid_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionString, UnionUint32]
	Documentation_for_NetworkInstance_SegmentRouting_TePolicy_Bsid_Union()
}

// Documentation_for_NetworkInstance_SegmentRouting_TePolicy_Bsid_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_SegmentRouting_TePolicy_Bsid_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_SegmentRouting_TePolicy_Bsid_Union() {
}

// Documentation_for_NetworkInstance_SegmentRouting_TePolicy_Bsid_Union ensures that UnionString
// implements the NetworkInstance_SegmentRouting_TePolicy_Bsid_Union interface.
func (UnionString) Documentation_for_NetworkInstance_SegmentRouting_TePolicy_Bsid_Union() {}

// Documentation_for_NetworkInstance_SegmentRouting_TePolicy_Bsid_Union ensures that UnionUint32
// implements the NetworkInstance_SegmentRouting_TePolicy_Bsid_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_SegmentRouting_TePolicy_Bsid_Union() {}

// To_NetworkInstance_SegmentRouting_TePolicy_Bsid_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_SegmentRouting_TePolicy_Bsid_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_SegmentRouting_TePolicy) To_NetworkInstance_SegmentRouting_TePolicy_Bsid_Union(i interface{}) (NetworkInstance_SegmentRouting_TePolicy_Bsid_Union, error) {
	if v, ok := i.(NetworkInstance_SegmentRouting_TePolicy_Bsid_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_SegmentRouting_TePolicy_Bsid_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, string, uint32]", i, i)
}

// NetworkInstance_SegmentRouting_TePolicy_CandidatePath represents the /openconfig-network-instance/network-instances/network-instance/segment-routing/te-policies/te-policy/candidate-paths/candidate-path YANG schema element.
type NetworkInstance_SegmentRouting_TePolicy_CandidatePath struct {
	ΛMetadata          []ygot.Annotation                                                             `path:"@" ygotAnnotation:"true"`
	Active             *bool                                                                         `path:"state/active" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛActive            []ygot.Annotation                                                             `path:"state/@active" ygotAnnotation:"true"`
	ActiveSince        *uint64                                                                       `path:"state/active-since" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛActiveSince       []ygot.Annotation                                                             `path:"state/@active-since" ygotAnnotation:"true"`
	ActiveTransitions  *uint64                                                                       `path:"state/active-transitions" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛActiveTransitions []ygot.Annotation                                                             `path:"state/@active-transitions" ygotAnnotation:"true"`
	Discriminator      *uint32                                                                       `path:"state/discriminator|discriminator" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛDiscriminator     []ygot.Annotation                                                             `path:"state/@discriminator|@discriminator" ygotAnnotation:"true"`
	Enlp               E_SegmentRoutingTypes_EnlpType                                                `path:"state/enlp" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEnlp              []ygot.Annotation                                                             `path:"state/@enlp" ygotAnnotation:"true"`
	Name               *string                                                                       `path:"state/name" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛName              []ygot.Annotation                                                             `path:"state/@name" ygotAnnotation:"true"`
	OriginatorAddr     *string                                                                       `path:"state/originator-addr|originator-addr" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛOriginatorAddr    []ygot.Annotation                                                             `path:"state/@originator-addr|@originator-addr" ygotAnnotation:"true"`
	OriginatorAsn      *uint32                                                                       `path:"state/originator-asn|originator-asn" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛOriginatorAsn     []ygot.Annotation                                                             `path:"state/@originator-asn|@originator-asn" ygotAnnotation:"true"`
	Preference         *uint32                                                                       `path:"state/preference" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPreference        []ygot.Annotation                                                             `path:"state/@preference" ygotAnnotation:"true"`
	ProtocolOrigin     E_SegmentRoutingTypes_SrteProtocolType                                        `path:"state/protocol-origin|protocol-origin" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛProtocolOrigin    []ygot.Annotation                                                             `path:"state/@protocol-origin|@protocol-origin" ygotAnnotation:"true"`
	SegmentList        map[uint32]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList `path:"segment-lists/segment-list" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSegmentList       []ygot.Annotation                                                             `path:"segment-lists/@segment-list" ygotAnnotation:"true"`
	Valid              *bool                                                                         `path:"state/valid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValid             []ygot.Annotation                                                             `path:"state/@valid" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_SegmentRouting_TePolicy_CandidatePath implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath) IsYANGGoStruct() {}

// NewSegmentList creates a new entry in the SegmentList list of the
// NetworkInstance_SegmentRouting_TePolicy_CandidatePath struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) NewSegmentList(Id uint32) (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SegmentList == nil {
		t.SegmentList = make(map[uint32]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.SegmentList[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list SegmentList", key)
	}

	t.SegmentList[key] = &NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList{
		Id: &Id,
	}

	return t.SegmentList[key], nil
}

// RenameSegmentList renames an entry in the list SegmentList within
// the NetworkInstance_SegmentRouting_TePolicy_CandidatePath struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) RenameSegmentList(oldK, newK uint32) error {
	if _, ok := t.SegmentList[newK]; ok {
		return fmt.Errorf("key %v already exists in SegmentList", newK)
	}

	e, ok := t.SegmentList[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in SegmentList", oldK)
	}
	e.Id = &newK

	t.SegmentList[newK] = e
	delete(t.SegmentList, oldK)
	return nil
}

// GetOrCreateSegmentListMap returns the list (map) from NetworkInstance_SegmentRouting_TePolicy_CandidatePath.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) GetOrCreateSegmentListMap() map[uint32]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList {
	if t.SegmentList == nil {
		t.SegmentList = make(map[uint32]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList)
	}
	return t.SegmentList
}

// GetOrCreateSegmentList retrieves the value with the specified keys from
// the receiver NetworkInstance_SegmentRouting_TePolicy_CandidatePath. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) GetOrCreateSegmentList(Id uint32) *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList {

	key := Id

	if v, ok := t.SegmentList[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSegmentList(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSegmentList got unexpected error: %v", err))
	}
	return v
}

// GetSegmentList retrieves the value with the specified key from
// the SegmentList map field of NetworkInstance_SegmentRouting_TePolicy_CandidatePath. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) GetSegmentList(Id uint32) *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.SegmentList[key]; ok {
		return lm
	}
	return nil
}

// AppendSegmentList appends the supplied NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList struct to the
// list SegmentList of NetworkInstance_SegmentRouting_TePolicy_CandidatePath. If the key value(s) specified in
// the supplied NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList already exist in the list, an error is
// returned.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) AppendSegmentList(v *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SegmentList == nil {
		t.SegmentList = make(map[uint32]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList)
	}

	if _, ok := t.SegmentList[key]; ok {
		return fmt.Errorf("duplicate key for list SegmentList %v", key)
	}

	t.SegmentList[key] = v
	return nil
}

// GetActive retrieves the value of the leaf Active from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Active is set, it can
// safely use t.GetActive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Active == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) GetActive() bool {
	if t == nil || t.Active == nil {
		return false
	}
	return *t.Active
}

// GetActiveSince retrieves the value of the leaf ActiveSince from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ActiveSince is set, it can
// safely use t.GetActiveSince() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ActiveSince == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) GetActiveSince() uint64 {
	if t == nil || t.ActiveSince == nil {
		return 0
	}
	return *t.ActiveSince
}

// GetActiveTransitions retrieves the value of the leaf ActiveTransitions from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ActiveTransitions is set, it can
// safely use t.GetActiveTransitions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ActiveTransitions == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) GetActiveTransitions() uint64 {
	if t == nil || t.ActiveTransitions == nil {
		return 0
	}
	return *t.ActiveTransitions
}

// GetDiscriminator retrieves the value of the leaf Discriminator from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Discriminator is set, it can
// safely use t.GetDiscriminator() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Discriminator == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) GetDiscriminator() uint32 {
	if t == nil || t.Discriminator == nil {
		return 0
	}
	return *t.Discriminator
}

// GetEnlp retrieves the value of the leaf Enlp from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enlp is set, it can
// safely use t.GetEnlp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enlp == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) GetEnlp() E_SegmentRoutingTypes_EnlpType {
	if t == nil || t.Enlp == 0 {
		return 0
	}
	return t.Enlp
}

// GetName retrieves the value of the leaf Name from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetOriginatorAddr retrieves the value of the leaf OriginatorAddr from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OriginatorAddr is set, it can
// safely use t.GetOriginatorAddr() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OriginatorAddr == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) GetOriginatorAddr() string {
	if t == nil || t.OriginatorAddr == nil {
		return ""
	}
	return *t.OriginatorAddr
}

// GetOriginatorAsn retrieves the value of the leaf OriginatorAsn from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OriginatorAsn is set, it can
// safely use t.GetOriginatorAsn() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OriginatorAsn == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) GetOriginatorAsn() uint32 {
	if t == nil || t.OriginatorAsn == nil {
		return 0
	}
	return *t.OriginatorAsn
}

// GetPreference retrieves the value of the leaf Preference from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Preference is set, it can
// safely use t.GetPreference() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Preference == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) GetPreference() uint32 {
	if t == nil || t.Preference == nil {
		return 0
	}
	return *t.Preference
}

// GetProtocolOrigin retrieves the value of the leaf ProtocolOrigin from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ProtocolOrigin is set, it can
// safely use t.GetProtocolOrigin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ProtocolOrigin == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) GetProtocolOrigin() E_SegmentRoutingTypes_SrteProtocolType {
	if t == nil || t.ProtocolOrigin == 0 {
		return 0
	}
	return t.ProtocolOrigin
}

// GetValid retrieves the value of the leaf Valid from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Valid is set, it can
// safely use t.GetValid() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Valid == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) GetValid() bool {
	if t == nil || t.Valid == nil {
		return false
	}
	return *t.Valid
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_SegmentRouting_TePolicy_CandidatePath
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.SegmentList {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_SegmentRouting_TePolicy_CandidatePath struct, which is a YANG list entry.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Discriminator == nil {
		return nil, fmt.Errorf("nil value for key Discriminator")
	}

	if t.OriginatorAddr == nil {
		return nil, fmt.Errorf("nil value for key OriginatorAddr")
	}

	if t.OriginatorAsn == nil {
		return nil, fmt.Errorf("nil value for key OriginatorAsn")
	}

	return map[string]interface{}{
		"discriminator":   *t.Discriminator,
		"originator-addr": *t.OriginatorAddr,
		"originator-asn":  *t.OriginatorAsn,
		"protocol-origin": t.ProtocolOrigin,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_SegmentRouting_TePolicy_CandidatePath"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_SegmentRouting_TePolicy_CandidatePath.
func (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList represents the /openconfig-network-instance/network-instances/network-instance/segment-routing/te-policies/te-policy/candidate-paths/candidate-path/segment-lists/segment-list YANG schema element.
type NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList struct {
	ΛMetadata      []ygot.Annotation                                                                     `path:"@" ygotAnnotation:"true"`
	Counters       *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters           `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters      []ygot.Annotation                                                                     `path:"state/@counters" ygotAnnotation:"true"`
	Id             *uint32                                                                               `path:"state/id|id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛId            []ygot.Annotation                                                                     `path:"state/@id|@id" ygotAnnotation:"true"`
	InvalidReason  E_SegmentRoutingTypes_SrteInvalidSlReason                                             `path:"state/invalid-reason" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInvalidReason []ygot.Annotation                                                                     `path:"state/@invalid-reason" ygotAnnotation:"true"`
	NextHop        map[uint64]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop `path:"next-hops/next-hop" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛNextHop       []ygot.Annotation                                                                     `path:"next-hops/@next-hop" ygotAnnotation:"true"`
	Sid            map[uint64]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid     `path:"sids/sid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSid           []ygot.Annotation                                                                     `path:"sids/@sid" ygotAnnotation:"true"`
	Valid          *bool                                                                                 `path:"state/valid" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValid         []ygot.Annotation                                                                     `path:"state/@valid" ygotAnnotation:"true"`
	Weight         *uint32                                                                               `path:"state/weight" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛWeight        []ygot.Annotation                                                                     `path:"state/@weight" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) IsYANGGoStruct() {}

// NewNextHop creates a new entry in the NextHop list of the
// NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) NewNextHop(Index uint64) (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.NextHop[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list NextHop", key)
	}

	t.NextHop[key] = &NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop{
		Index: &Index,
	}

	return t.NextHop[key], nil
}

// RenameNextHop renames an entry in the list NextHop within
// the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) RenameNextHop(oldK, newK uint64) error {
	if _, ok := t.NextHop[newK]; ok {
		return fmt.Errorf("key %v already exists in NextHop", newK)
	}

	e, ok := t.NextHop[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in NextHop", oldK)
	}
	e.Index = &newK

	t.NextHop[newK] = e
	delete(t.NextHop, oldK)
	return nil
}

// GetOrCreateNextHopMap returns the list (map) from NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) GetOrCreateNextHopMap() map[uint64]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop {
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop)
	}
	return t.NextHop
}

// GetOrCreateNextHop retrieves the value with the specified keys from
// the receiver NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) GetOrCreateNextHop(Index uint64) *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop {

	key := Index

	if v, ok := t.NextHop[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNextHop(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNextHop got unexpected error: %v", err))
	}
	return v
}

// GetNextHop retrieves the value with the specified key from
// the NextHop map field of NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) GetNextHop(Index uint64) *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.NextHop[key]; ok {
		return lm
	}
	return nil
}

// AppendNextHop appends the supplied NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop struct to the
// list NextHop of NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList. If the key value(s) specified in
// the supplied NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop already exist in the list, an error is
// returned.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) AppendNextHop(v *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NextHop == nil {
		t.NextHop = make(map[uint64]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop)
	}

	if _, ok := t.NextHop[key]; ok {
		return fmt.Errorf("duplicate key for list NextHop %v", key)
	}

	t.NextHop[key] = v
	return nil
}

// NewSid creates a new entry in the Sid list of the
// NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList struct. The keys of the list are populated from the input
// arguments.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) NewSid(Index uint64) (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Sid == nil {
		t.Sid = make(map[uint64]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Sid[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Sid", key)
	}

	t.Sid[key] = &NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid{
		Index: &Index,
	}

	return t.Sid[key], nil
}

// RenameSid renames an entry in the list Sid within
// the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) RenameSid(oldK, newK uint64) error {
	if _, ok := t.Sid[newK]; ok {
		return fmt.Errorf("key %v already exists in Sid", newK)
	}

	e, ok := t.Sid[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Sid", oldK)
	}
	e.Index = &newK

	t.Sid[newK] = e
	delete(t.Sid, oldK)
	return nil
}

// GetOrCreateSidMap returns the list (map) from NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList.
//
// It initializes the field if not already initialized.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) GetOrCreateSidMap() map[uint64]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid {
	if t.Sid == nil {
		t.Sid = make(map[uint64]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid)
	}
	return t.Sid
}

// GetOrCreateSid retrieves the value with the specified keys from
// the receiver NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) GetOrCreateSid(Index uint64) *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid {

	key := Index

	if v, ok := t.Sid[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSid(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSid got unexpected error: %v", err))
	}
	return v
}

// GetSid retrieves the value with the specified key from
// the Sid map field of NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) GetSid(Index uint64) *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.Sid[key]; ok {
		return lm
	}
	return nil
}

// AppendSid appends the supplied NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid struct to the
// list Sid of NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList. If the key value(s) specified in
// the supplied NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid already exist in the list, an error is
// returned.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) AppendSid(v *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Sid == nil {
		t.Sid = make(map[uint64]*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid)
	}

	if _, ok := t.Sid[key]; ok {
		return fmt.Errorf("duplicate key for list Sid %v", key)
	}

	t.Sid[key] = v
	return nil
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) GetOrCreateCounters() *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) GetCounters() *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetId retrieves the value of the leaf Id from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) GetId() uint32 {
	if t == nil || t.Id == nil {
		return 0
	}
	return *t.Id
}

// GetInvalidReason retrieves the value of the leaf InvalidReason from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidReason is set, it can
// safely use t.GetInvalidReason() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidReason == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) GetInvalidReason() E_SegmentRoutingTypes_SrteInvalidSlReason {
	if t == nil || t.InvalidReason == 0 {
		return 0
	}
	return t.InvalidReason
}

// GetValid retrieves the value of the leaf Valid from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Valid is set, it can
// safely use t.GetValid() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Valid == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) GetValid() bool {
	if t == nil || t.Valid == nil {
		return false
	}
	return *t.Valid
}

// GetWeight retrieves the value of the leaf Weight from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Weight is set, it can
// safely use t.GetWeight() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Weight == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) GetWeight() uint32 {
	if t == nil || t.Weight == nil {
		return 0
	}
	return *t.Weight
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Counters.PopulateDefaults()
	for _, e := range t.NextHop {
		e.PopulateDefaults()
	}
	for _, e := range t.Sid {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList struct, which is a YANG list entry.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList.
func (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters represents the /openconfig-network-instance/network-instances/network-instance/segment-routing/te-policies/te-policy/candidate-paths/candidate-path/segment-lists/segment-list/state/counters YANG schema element.
type NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters struct {
	ΛMetadata         []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	OutLabeledOctets  *uint64           `path:"out-labeled-octets" module:"openconfig-network-instance"`
	ΛOutLabeledOctets []ygot.Annotation `path:"@out-labeled-octets" ygotAnnotation:"true"`
	OutLabeledPkts    *uint64           `path:"out-labeled-pkts" module:"openconfig-network-instance"`
	ΛOutLabeledPkts   []ygot.Annotation `path:"@out-labeled-pkts" ygotAnnotation:"true"`
	OutOctets         *uint64           `path:"out-octets" module:"openconfig-network-instance"`
	ΛOutOctets        []ygot.Annotation `path:"@out-octets" ygotAnnotation:"true"`
	OutPkts           *uint64           `path:"out-pkts" module:"openconfig-network-instance"`
	ΛOutPkts          []ygot.Annotation `path:"@out-pkts" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters) IsYANGGoStruct() {}

// GetOutLabeledOctets retrieves the value of the leaf OutLabeledOctets from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutLabeledOctets is set, it can
// safely use t.GetOutLabeledOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutLabeledOctets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters) GetOutLabeledOctets() uint64 {
	if t == nil || t.OutLabeledOctets == nil {
		return 0
	}
	return *t.OutLabeledOctets
}

// GetOutLabeledPkts retrieves the value of the leaf OutLabeledPkts from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutLabeledPkts is set, it can
// safely use t.GetOutLabeledPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutLabeledPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters) GetOutLabeledPkts() uint64 {
	if t == nil || t.OutLabeledPkts == nil {
		return 0
	}
	return *t.OutLabeledPkts
}

// GetOutOctets retrieves the value of the leaf OutOctets from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutOctets is set, it can
// safely use t.GetOutOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutOctets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters) GetOutOctets() uint64 {
	if t == nil || t.OutOctets == nil {
		return 0
	}
	return *t.OutOctets
}

// GetOutPkts retrieves the value of the leaf OutPkts from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPkts is set, it can
// safely use t.GetOutPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters) GetOutPkts() uint64 {
	if t == nil || t.OutPkts == nil {
		return 0
	}
	return *t.OutPkts
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters.
func (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop represents the /openconfig-network-instance/network-instances/network-instance/segment-routing/te-policies/te-policy/candidate-paths/candidate-path/segment-lists/segment-list/next-hops/next-hop YANG schema element.
type NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop struct {
	ΛMetadata             []ygot.Annotation                                                                                      `path:"@" ygotAnnotation:"true"`
	Counters              *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters                    `path:"state/counters" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛCounters             []ygot.Annotation                                                                                      `path:"state/@counters" ygotAnnotation:"true"`
	DecapsulateHeader     E_AftTypes_EncapsulationHeaderType                                                                     `path:"state/decapsulate-header" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDecapsulateHeader    []ygot.Annotation                                                                                      `path:"state/@decapsulate-header" ygotAnnotation:"true"`
	EncapsulateHeader     E_AftTypes_EncapsulationHeaderType                                                                     `path:"state/encapsulate-header" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛEncapsulateHeader    []ygot.Annotation                                                                                      `path:"state/@encapsulate-header" ygotAnnotation:"true"`
	Index                 *uint64                                                                                                `path:"state/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex                []ygot.Annotation                                                                                      `path:"state/@index|@index" ygotAnnotation:"true"`
	InterfaceRef          *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef                `path:"interface-ref" module:"openconfig-network-instance"`
	ΛInterfaceRef         []ygot.Annotation                                                                                      `path:"@interface-ref" ygotAnnotation:"true"`
	IpAddress             *string                                                                                                `path:"state/ip-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛIpAddress            []ygot.Annotation                                                                                      `path:"state/@ip-address" ygotAnnotation:"true"`
	MacAddress            *string                                                                                                `path:"state/mac-address" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMacAddress           []ygot.Annotation                                                                                      `path:"state/@mac-address" ygotAnnotation:"true"`
	OriginProtocol        E_PolicyTypes_INSTALL_PROTOCOL_TYPE                                                                    `path:"state/origin-protocol" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛOriginProtocol       []ygot.Annotation                                                                                      `path:"state/@origin-protocol" ygotAnnotation:"true"`
	PopTopLabel           *bool                                                                                                  `path:"state/pop-top-label" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPopTopLabel          []ygot.Annotation                                                                                      `path:"state/@pop-top-label" ygotAnnotation:"true"`
	ProgrammedIndex       *uint64                                                                                                `path:"state/programmed-index" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛProgrammedIndex      []ygot.Annotation                                                                                      `path:"state/@programmed-index" ygotAnnotation:"true"`
	PushedMplsLabelStack  []NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_PushedMplsLabelStack_Union `path:"state/pushed-mpls-label-stack" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛPushedMplsLabelStack []ygot.Annotation                                                                                      `path:"state/@pushed-mpls-label-stack" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) GetOrCreateCounters() *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters{}
	return t.Counters
}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) GetOrCreateInterfaceRef() *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef{}
	return t.InterfaceRef
}

// GetCounters returns the value of the Counters struct pointer
// from NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) GetCounters() *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) GetInterfaceRef() *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetDecapsulateHeader retrieves the value of the leaf DecapsulateHeader from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DecapsulateHeader is set, it can
// safely use t.GetDecapsulateHeader() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DecapsulateHeader == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) GetDecapsulateHeader() E_AftTypes_EncapsulationHeaderType {
	if t == nil || t.DecapsulateHeader == 0 {
		return 0
	}
	return t.DecapsulateHeader
}

// GetEncapsulateHeader retrieves the value of the leaf EncapsulateHeader from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EncapsulateHeader is set, it can
// safely use t.GetEncapsulateHeader() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EncapsulateHeader == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) GetEncapsulateHeader() E_AftTypes_EncapsulationHeaderType {
	if t == nil || t.EncapsulateHeader == 0 {
		return 0
	}
	return t.EncapsulateHeader
}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) GetIndex() uint64 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetIpAddress retrieves the value of the leaf IpAddress from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IpAddress is set, it can
// safely use t.GetIpAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IpAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) GetIpAddress() string {
	if t == nil || t.IpAddress == nil {
		return ""
	}
	return *t.IpAddress
}

// GetMacAddress retrieves the value of the leaf MacAddress from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MacAddress is set, it can
// safely use t.GetMacAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MacAddress == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) GetMacAddress() string {
	if t == nil || t.MacAddress == nil {
		return ""
	}
	return *t.MacAddress
}

// GetOriginProtocol retrieves the value of the leaf OriginProtocol from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OriginProtocol is set, it can
// safely use t.GetOriginProtocol() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OriginProtocol == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) GetOriginProtocol() E_PolicyTypes_INSTALL_PROTOCOL_TYPE {
	if t == nil || t.OriginProtocol == 0 {
		return 0
	}
	return t.OriginProtocol
}

// GetPopTopLabel retrieves the value of the leaf PopTopLabel from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PopTopLabel is set, it can
// safely use t.GetPopTopLabel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PopTopLabel == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) GetPopTopLabel() bool {
	if t == nil || t.PopTopLabel == nil {
		return false
	}
	return *t.PopTopLabel
}

// GetProgrammedIndex retrieves the value of the leaf ProgrammedIndex from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ProgrammedIndex is set, it can
// safely use t.GetProgrammedIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ProgrammedIndex == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) GetProgrammedIndex() uint64 {
	if t == nil || t.ProgrammedIndex == nil {
		return 0
	}
	return *t.ProgrammedIndex
}

// GetPushedMplsLabelStack retrieves the value of the leaf PushedMplsLabelStack from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PushedMplsLabelStack is set, it can
// safely use t.GetPushedMplsLabelStack() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PushedMplsLabelStack == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) GetPushedMplsLabelStack() []NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_PushedMplsLabelStack_Union {
	if t == nil || t.PushedMplsLabelStack == nil {
		return nil
	}
	return t.PushedMplsLabelStack
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PopTopLabel == nil {
		var v bool = false
		t.PopTopLabel = &v
	}
	t.Counters.PopulateDefaults()
	t.InterfaceRef.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop struct, which is a YANG list entry.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop.
func (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_PushedMplsLabelStack_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/segment-routing/te-policies/te-policy/candidate-paths/candidate-path/segment-lists/segment-list/next-hops/next-hop/state/pushed-mpls-label-stack within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32].
type NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_PushedMplsLabelStack_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionUint32]
	Documentation_for_NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_PushedMplsLabelStack_Union()
}

// Documentation_for_NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_PushedMplsLabelStack_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_PushedMplsLabelStack_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_PushedMplsLabelStack_Union() {
}

// Documentation_for_NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_PushedMplsLabelStack_Union ensures that UnionUint32
// implements the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_PushedMplsLabelStack_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_PushedMplsLabelStack_Union() {
}

// To_NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_PushedMplsLabelStack_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_PushedMplsLabelStack_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop) To_NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_PushedMplsLabelStack_Union(i interface{}) (NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_PushedMplsLabelStack_Union, error) {
	if v, ok := i.(NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_PushedMplsLabelStack_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_PushedMplsLabelStack_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, uint32]", i, i)
}

// NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters represents the /openconfig-network-instance/network-instances/network-instance/segment-routing/te-policies/te-policy/candidate-paths/candidate-path/segment-lists/segment-list/next-hops/next-hop/state/counters YANG schema element.
type NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters struct {
	ΛMetadata         []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	OutLabeledOctets  *uint64           `path:"out-labeled-octets" module:"openconfig-network-instance"`
	ΛOutLabeledOctets []ygot.Annotation `path:"@out-labeled-octets" ygotAnnotation:"true"`
	OutLabeledPkts    *uint64           `path:"out-labeled-pkts" module:"openconfig-network-instance"`
	ΛOutLabeledPkts   []ygot.Annotation `path:"@out-labeled-pkts" ygotAnnotation:"true"`
	OutOctets         *uint64           `path:"out-octets" module:"openconfig-network-instance"`
	ΛOutOctets        []ygot.Annotation `path:"@out-octets" ygotAnnotation:"true"`
	OutPkts           *uint64           `path:"out-pkts" module:"openconfig-network-instance"`
	ΛOutPkts          []ygot.Annotation `path:"@out-pkts" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters) IsYANGGoStruct() {
}

// GetOutLabeledOctets retrieves the value of the leaf OutLabeledOctets from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutLabeledOctets is set, it can
// safely use t.GetOutLabeledOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutLabeledOctets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters) GetOutLabeledOctets() uint64 {
	if t == nil || t.OutLabeledOctets == nil {
		return 0
	}
	return *t.OutLabeledOctets
}

// GetOutLabeledPkts retrieves the value of the leaf OutLabeledPkts from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutLabeledPkts is set, it can
// safely use t.GetOutLabeledPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutLabeledPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters) GetOutLabeledPkts() uint64 {
	if t == nil || t.OutLabeledPkts == nil {
		return 0
	}
	return *t.OutLabeledPkts
}

// GetOutOctets retrieves the value of the leaf OutOctets from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutOctets is set, it can
// safely use t.GetOutOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutOctets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters) GetOutOctets() uint64 {
	if t == nil || t.OutOctets == nil {
		return 0
	}
	return *t.OutOctets
}

// GetOutPkts retrieves the value of the leaf OutPkts from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPkts is set, it can
// safely use t.GetOutPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters) GetOutPkts() uint64 {
	if t == nil || t.OutPkts == nil {
		return 0
	}
	return *t.OutPkts
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters.
func (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef represents the /openconfig-network-instance/network-instances/network-instance/segment-routing/te-policies/te-policy/candidate-paths/candidate-path/segment-lists/segment-list/next-hops/next-hop/interface-ref YANG schema element.
type NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"state/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface    []ygot.Annotation `path:"state/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"state/subinterface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛSubinterface []ygot.Annotation `path:"state/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef) IsYANGGoStruct() {
}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef.
func (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_NextHop_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid represents the /openconfig-network-instance/network-instances/network-instance/segment-routing/te-policies/te-policy/candidate-paths/candidate-path/segment-lists/segment-list/sids/sid YANG schema element.
type NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid struct {
	ΛMetadata []ygot.Annotation                                                                 `path:"@" ygotAnnotation:"true"`
	Index     *uint64                                                                           `path:"state/index|index" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛIndex    []ygot.Annotation                                                                 `path:"state/@index|@index" ygotAnnotation:"true"`
	MplsTc    *uint8                                                                            `path:"state/mpls-tc" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMplsTc   []ygot.Annotation                                                                 `path:"state/@mpls-tc" ygotAnnotation:"true"`
	MplsTtl   *uint8                                                                            `path:"state/mpls-ttl" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMplsTtl  []ygot.Annotation                                                                 `path:"state/@mpls-ttl" ygotAnnotation:"true"`
	Value     NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union `path:"state/value" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛValue    []ygot.Annotation                                                                 `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid) IsYANGGoStruct() {}

// GetIndex retrieves the value of the leaf Index from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid) GetIndex() uint64 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetMplsTc retrieves the value of the leaf MplsTc from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MplsTc is set, it can
// safely use t.GetMplsTc() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MplsTc == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid) GetMplsTc() uint8 {
	if t == nil || t.MplsTc == nil {
		return 0
	}
	return *t.MplsTc
}

// GetMplsTtl retrieves the value of the leaf MplsTtl from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MplsTtl is set, it can
// safely use t.GetMplsTtl() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MplsTtl == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid) GetMplsTtl() uint8 {
	if t == nil || t.MplsTtl == nil {
		return 0
	}
	return *t.MplsTtl
}

// GetValue retrieves the value of the leaf Value from the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid) GetValue() NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MplsTc == nil {
		var v uint8 = 0
		t.MplsTc = &v
	}
	if t.MplsTtl == nil {
		var v uint8 = 0
		t.MplsTtl = &v
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid struct, which is a YANG list entry.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid.
func (*NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-network-instance/network-instances/network-instance/segment-routing/te-policies/te-policy/candidate-paths/candidate-path/segment-lists/segment-list/sids/sid/state/value within the YANG schema.
// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionString, UnionUint32].
type NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union interface {
	// Union type can be one of [E_MplsTypes_MplsLabel_Enum, UnionString, UnionUint32]
	Documentation_for_NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union()
}

// Documentation_for_NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union ensures that E_MplsTypes_MplsLabel_Enum
// implements the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union interface.
func (E_MplsTypes_MplsLabel_Enum) Documentation_for_NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union() {
}

// Documentation_for_NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union ensures that UnionString
// implements the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union interface.
func (UnionString) Documentation_for_NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union() {
}

// Documentation_for_NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union ensures that UnionUint32
// implements the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union interface.
func (UnionUint32) Documentation_for_NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union() {
}

// To_NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union takes an input interface{} and attempts to convert it to a struct
// which implements the NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid) To_NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union(i interface{}) (NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union, error) {
	if v, ok := i.(NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to NetworkInstance_SegmentRouting_TePolicy_CandidatePath_SegmentList_Sid_Value_Union, unknown union type, got: %T, want any of [E_MplsTypes_MplsLabel_Enum, string, uint32]", i, i)
}

// NetworkInstance_SegmentRouting_TePolicy_Counters represents the /openconfig-network-instance/network-instances/network-instance/segment-routing/te-policies/te-policy/state/counters YANG schema element.
type NetworkInstance_SegmentRouting_TePolicy_Counters struct {
	ΛMetadata         []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	InLabeledOctets   *uint64           `path:"in-labeled-octets" module:"openconfig-network-instance"`
	ΛInLabeledOctets  []ygot.Annotation `path:"@in-labeled-octets" ygotAnnotation:"true"`
	InLabeledPkts     *uint64           `path:"in-labeled-pkts" module:"openconfig-network-instance"`
	ΛInLabeledPkts    []ygot.Annotation `path:"@in-labeled-pkts" ygotAnnotation:"true"`
	InOctets          *uint64           `path:"in-octets" module:"openconfig-network-instance"`
	ΛInOctets         []ygot.Annotation `path:"@in-octets" ygotAnnotation:"true"`
	InPkts            *uint64           `path:"in-pkts" module:"openconfig-network-instance"`
	ΛInPkts           []ygot.Annotation `path:"@in-pkts" ygotAnnotation:"true"`
	OutLabeledOctets  *uint64           `path:"out-labeled-octets" module:"openconfig-network-instance"`
	ΛOutLabeledOctets []ygot.Annotation `path:"@out-labeled-octets" ygotAnnotation:"true"`
	OutLabeledPkts    *uint64           `path:"out-labeled-pkts" module:"openconfig-network-instance"`
	ΛOutLabeledPkts   []ygot.Annotation `path:"@out-labeled-pkts" ygotAnnotation:"true"`
	OutOctets         *uint64           `path:"out-octets" module:"openconfig-network-instance"`
	ΛOutOctets        []ygot.Annotation `path:"@out-octets" ygotAnnotation:"true"`
	OutPkts           *uint64           `path:"out-pkts" module:"openconfig-network-instance"`
	ΛOutPkts          []ygot.Annotation `path:"@out-pkts" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_SegmentRouting_TePolicy_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_SegmentRouting_TePolicy_Counters) IsYANGGoStruct() {}

// GetInLabeledOctets retrieves the value of the leaf InLabeledOctets from the NetworkInstance_SegmentRouting_TePolicy_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InLabeledOctets is set, it can
// safely use t.GetInLabeledOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InLabeledOctets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_Counters) GetInLabeledOctets() uint64 {
	if t == nil || t.InLabeledOctets == nil {
		return 0
	}
	return *t.InLabeledOctets
}

// GetInLabeledPkts retrieves the value of the leaf InLabeledPkts from the NetworkInstance_SegmentRouting_TePolicy_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InLabeledPkts is set, it can
// safely use t.GetInLabeledPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InLabeledPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_Counters) GetInLabeledPkts() uint64 {
	if t == nil || t.InLabeledPkts == nil {
		return 0
	}
	return *t.InLabeledPkts
}

// GetInOctets retrieves the value of the leaf InOctets from the NetworkInstance_SegmentRouting_TePolicy_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InOctets is set, it can
// safely use t.GetInOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InOctets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_Counters) GetInOctets() uint64 {
	if t == nil || t.InOctets == nil {
		return 0
	}
	return *t.InOctets
}

// GetInPkts retrieves the value of the leaf InPkts from the NetworkInstance_SegmentRouting_TePolicy_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPkts is set, it can
// safely use t.GetInPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_Counters) GetInPkts() uint64 {
	if t == nil || t.InPkts == nil {
		return 0
	}
	return *t.InPkts
}

// GetOutLabeledOctets retrieves the value of the leaf OutLabeledOctets from the NetworkInstance_SegmentRouting_TePolicy_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutLabeledOctets is set, it can
// safely use t.GetOutLabeledOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutLabeledOctets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_Counters) GetOutLabeledOctets() uint64 {
	if t == nil || t.OutLabeledOctets == nil {
		return 0
	}
	return *t.OutLabeledOctets
}

// GetOutLabeledPkts retrieves the value of the leaf OutLabeledPkts from the NetworkInstance_SegmentRouting_TePolicy_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutLabeledPkts is set, it can
// safely use t.GetOutLabeledPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutLabeledPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_Counters) GetOutLabeledPkts() uint64 {
	if t == nil || t.OutLabeledPkts == nil {
		return 0
	}
	return *t.OutLabeledPkts
}

// GetOutOctets retrieves the value of the leaf OutOctets from the NetworkInstance_SegmentRouting_TePolicy_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutOctets is set, it can
// safely use t.GetOutOctets() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutOctets == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_Counters) GetOutOctets() uint64 {
	if t == nil || t.OutOctets == nil {
		return 0
	}
	return *t.OutOctets
}

// GetOutPkts retrieves the value of the leaf OutPkts from the NetworkInstance_SegmentRouting_TePolicy_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPkts is set, it can
// safely use t.GetOutPkts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPkts == nil' before retrieving the leaf's value.
func (t *NetworkInstance_SegmentRouting_TePolicy_Counters) GetOutPkts() uint64 {
	if t == nil || t.OutPkts == nil {
		return 0
	}
	return *t.OutPkts
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_SegmentRouting_TePolicy_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_SegmentRouting_TePolicy_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_SegmentRouting_TePolicy_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_SegmentRouting_TePolicy_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_SegmentRouting_TePolicy_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_SegmentRouting_TePolicy_Counters.
func (*NetworkInstance_SegmentRouting_TePolicy_Counters) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Table represents the /openconfig-network-instance/network-instances/network-instance/tables/table YANG schema element.
type NetworkInstance_Table struct {
	ΛMetadata      []ygot.Annotation                   `path:"@" ygotAnnotation:"true"`
	AddressFamily  E_Types_ADDRESS_FAMILY              `path:"config/address-family|address-family" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAddressFamily []ygot.Annotation                   `path:"config/@address-family|@address-family" ygotAnnotation:"true"`
	Protocol       E_PolicyTypes_INSTALL_PROTOCOL_TYPE `path:"config/protocol|protocol" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛProtocol      []ygot.Annotation                   `path:"config/@protocol|@protocol" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Table implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Table) IsYANGGoStruct() {}

// GetAddressFamily retrieves the value of the leaf AddressFamily from the NetworkInstance_Table
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AddressFamily is set, it can
// safely use t.GetAddressFamily() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AddressFamily == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Table) GetAddressFamily() E_Types_ADDRESS_FAMILY {
	if t == nil || t.AddressFamily == 0 {
		return 0
	}
	return t.AddressFamily
}

// GetProtocol retrieves the value of the leaf Protocol from the NetworkInstance_Table
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Protocol is set, it can
// safely use t.GetProtocol() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Protocol == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Table) GetProtocol() E_PolicyTypes_INSTALL_PROTOCOL_TYPE {
	if t == nil || t.Protocol == 0 {
		return 0
	}
	return t.Protocol
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Table
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Table) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the NetworkInstance_Table struct, which is a YANG list entry.
func (t *NetworkInstance_Table) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"address-family": t.AddressFamily,
		"protocol":       t.Protocol,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Table) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Table"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Table) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Table) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Table.
func (*NetworkInstance_Table) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_TableConnection represents the /openconfig-network-instance/network-instances/network-instance/table-connections/table-connection YANG schema element.
type NetworkInstance_TableConnection struct {
	ΛMetadata                 []ygot.Annotation                   `path:"@" ygotAnnotation:"true"`
	AddressFamily             E_Types_ADDRESS_FAMILY              `path:"config/address-family|address-family" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛAddressFamily            []ygot.Annotation                   `path:"config/@address-family|@address-family" ygotAnnotation:"true"`
	DefaultImportPolicy       E_RoutingPolicy_DefaultPolicyType   `path:"config/default-import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDefaultImportPolicy      []ygot.Annotation                   `path:"config/@default-import-policy" ygotAnnotation:"true"`
	DisableMetricPropagation  *bool                               `path:"config/disable-metric-propagation" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛDisableMetricPropagation []ygot.Annotation                   `path:"config/@disable-metric-propagation" ygotAnnotation:"true"`
	DstProtocol               E_PolicyTypes_INSTALL_PROTOCOL_TYPE `path:"config/dst-protocol|dst-protocol" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛDstProtocol              []ygot.Annotation                   `path:"config/@dst-protocol|@dst-protocol" ygotAnnotation:"true"`
	ImportPolicy              []string                            `path:"config/import-policy" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛImportPolicy             []ygot.Annotation                   `path:"config/@import-policy" ygotAnnotation:"true"`
	SrcProtocol               E_PolicyTypes_INSTALL_PROTOCOL_TYPE `path:"config/src-protocol|src-protocol" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛSrcProtocol              []ygot.Annotation                   `path:"config/@src-protocol|@src-protocol" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_TableConnection implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_TableConnection) IsYANGGoStruct() {}

// GetAddressFamily retrieves the value of the leaf AddressFamily from the NetworkInstance_TableConnection
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AddressFamily is set, it can
// safely use t.GetAddressFamily() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AddressFamily == nil' before retrieving the leaf's value.
func (t *NetworkInstance_TableConnection) GetAddressFamily() E_Types_ADDRESS_FAMILY {
	if t == nil || t.AddressFamily == 0 {
		return 0
	}
	return t.AddressFamily
}

// GetDefaultImportPolicy retrieves the value of the leaf DefaultImportPolicy from the NetworkInstance_TableConnection
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DefaultImportPolicy is set, it can
// safely use t.GetDefaultImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DefaultImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_TableConnection) GetDefaultImportPolicy() E_RoutingPolicy_DefaultPolicyType {
	if t == nil || t.DefaultImportPolicy == 0 {
		return RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	return t.DefaultImportPolicy
}

// GetDisableMetricPropagation retrieves the value of the leaf DisableMetricPropagation from the NetworkInstance_TableConnection
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DisableMetricPropagation is set, it can
// safely use t.GetDisableMetricPropagation() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DisableMetricPropagation == nil' before retrieving the leaf's value.
func (t *NetworkInstance_TableConnection) GetDisableMetricPropagation() bool {
	if t == nil || t.DisableMetricPropagation == nil {
		return false
	}
	return *t.DisableMetricPropagation
}

// GetDstProtocol retrieves the value of the leaf DstProtocol from the NetworkInstance_TableConnection
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DstProtocol is set, it can
// safely use t.GetDstProtocol() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DstProtocol == nil' before retrieving the leaf's value.
func (t *NetworkInstance_TableConnection) GetDstProtocol() E_PolicyTypes_INSTALL_PROTOCOL_TYPE {
	if t == nil || t.DstProtocol == 0 {
		return 0
	}
	return t.DstProtocol
}

// GetImportPolicy retrieves the value of the leaf ImportPolicy from the NetworkInstance_TableConnection
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ImportPolicy is set, it can
// safely use t.GetImportPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ImportPolicy == nil' before retrieving the leaf's value.
func (t *NetworkInstance_TableConnection) GetImportPolicy() []string {
	if t == nil || t.ImportPolicy == nil {
		return nil
	}
	return t.ImportPolicy
}

// GetSrcProtocol retrieves the value of the leaf SrcProtocol from the NetworkInstance_TableConnection
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SrcProtocol is set, it can
// safely use t.GetSrcProtocol() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SrcProtocol == nil' before retrieving the leaf's value.
func (t *NetworkInstance_TableConnection) GetSrcProtocol() E_PolicyTypes_INSTALL_PROTOCOL_TYPE {
	if t == nil || t.SrcProtocol == 0 {
		return 0
	}
	return t.SrcProtocol
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_TableConnection
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_TableConnection) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DefaultImportPolicy == 0 {
		t.DefaultImportPolicy = RoutingPolicy_DefaultPolicyType_REJECT_ROUTE
	}
	if t.DisableMetricPropagation == nil {
		var v bool = false
		t.DisableMetricPropagation = &v
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_TableConnection struct, which is a YANG list entry.
func (t *NetworkInstance_TableConnection) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"address-family": t.AddressFamily,
		"dst-protocol":   t.DstProtocol,
		"src-protocol":   t.SrcProtocol,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_TableConnection) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_TableConnection"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_TableConnection) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_TableConnection) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_TableConnection.
func (*NetworkInstance_TableConnection) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Vlan represents the /openconfig-network-instance/network-instances/network-instance/vlans/vlan YANG schema element.
type NetworkInstance_Vlan struct {
	ΛMetadata []ygot.Annotation              `path:"@" ygotAnnotation:"true"`
	Member    []*NetworkInstance_Vlan_Member `path:"members/member" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛMember   []ygot.Annotation              `path:"members/@member" ygotAnnotation:"true"`
	Name      *string                        `path:"config/name" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛName     []ygot.Annotation              `path:"config/@name" ygotAnnotation:"true"`
	Status    E_Vlan_Status                  `path:"config/status" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛStatus   []ygot.Annotation              `path:"config/@status" ygotAnnotation:"true"`
	VlanId    *uint16                        `path:"config/vlan-id|vlan-id" module:"openconfig-network-instance/openconfig-network-instance|openconfig-network-instance"`
	ΛVlanId   []ygot.Annotation              `path:"config/@vlan-id|@vlan-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Vlan implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Vlan) IsYANGGoStruct() {}

// GetName retrieves the value of the leaf Name from the NetworkInstance_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Vlan) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetStatus retrieves the value of the leaf Status from the NetworkInstance_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Status is set, it can
// safely use t.GetStatus() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Status == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Vlan) GetStatus() E_Vlan_Status {
	if t == nil || t.Status == 0 {
		return Vlan_Status_ACTIVE
	}
	return t.Status
}

// GetVlanId retrieves the value of the leaf VlanId from the NetworkInstance_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VlanId is set, it can
// safely use t.GetVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VlanId == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Vlan) GetVlanId() uint16 {
	if t == nil || t.VlanId == nil {
		return 0
	}
	return *t.VlanId
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Vlan
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Vlan) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Status == 0 {
		t.Status = Vlan_Status_ACTIVE
	}
	for _, e := range t.Member {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the NetworkInstance_Vlan struct, which is a YANG list entry.
func (t *NetworkInstance_Vlan) ΛListKeyMap() (map[string]interface{}, error) {
	if t.VlanId == nil {
		return nil, fmt.Errorf("nil value for key VlanId")
	}

	return map[string]interface{}{
		"vlan-id": *t.VlanId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Vlan) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Vlan"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Vlan) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Vlan) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Vlan.
func (*NetworkInstance_Vlan) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// NetworkInstance_Vlan_Member represents the /openconfig-network-instance/network-instances/network-instance/vlans/vlan/members/member YANG schema element.
type NetworkInstance_Vlan_Member struct {
	ΛMetadata  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface  *string           `path:"state/interface" module:"openconfig-network-instance/openconfig-network-instance"`
	ΛInterface []ygot.Annotation `path:"state/@interface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that NetworkInstance_Vlan_Member implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*NetworkInstance_Vlan_Member) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the NetworkInstance_Vlan_Member
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *NetworkInstance_Vlan_Member) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// PopulateDefaults recursively populates unset leaf fields in the NetworkInstance_Vlan_Member
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *NetworkInstance_Vlan_Member) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Vlan_Member) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["NetworkInstance_Vlan_Member"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *NetworkInstance_Vlan_Member) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *NetworkInstance_Vlan_Member) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of NetworkInstance_Vlan_Member.
func (*NetworkInstance_Vlan_Member) ΛBelongingModule() string {
	return "openconfig-network-instance"
}

// OpticalAmplifier represents the /openconfig-optical-amplifier/optical-amplifier YANG schema element.
type OpticalAmplifier struct {
	ΛMetadata           []ygot.Annotation                               `path:"@" ygotAnnotation:"true"`
	Amplifier           map[string]*OpticalAmplifier_Amplifier          `path:"amplifiers/amplifier" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛAmplifier          []ygot.Annotation                               `path:"amplifiers/@amplifier" ygotAnnotation:"true"`
	SupervisoryChannel  map[string]*OpticalAmplifier_SupervisoryChannel `path:"supervisory-channels/supervisory-channel" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛSupervisoryChannel []ygot.Annotation                               `path:"supervisory-channels/@supervisory-channel" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that OpticalAmplifier implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*OpticalAmplifier) IsYANGGoStruct() {}

// NewAmplifier creates a new entry in the Amplifier list of the
// OpticalAmplifier struct. The keys of the list are populated from the input
// arguments.
func (t *OpticalAmplifier) NewAmplifier(Name string) (*OpticalAmplifier_Amplifier, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Amplifier == nil {
		t.Amplifier = make(map[string]*OpticalAmplifier_Amplifier)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Amplifier[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Amplifier", key)
	}

	t.Amplifier[key] = &OpticalAmplifier_Amplifier{
		Name: &Name,
	}

	return t.Amplifier[key], nil
}

// RenameAmplifier renames an entry in the list Amplifier within
// the OpticalAmplifier struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *OpticalAmplifier) RenameAmplifier(oldK, newK string) error {
	if _, ok := t.Amplifier[newK]; ok {
		return fmt.Errorf("key %v already exists in Amplifier", newK)
	}

	e, ok := t.Amplifier[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Amplifier", oldK)
	}
	e.Name = &newK

	t.Amplifier[newK] = e
	delete(t.Amplifier, oldK)
	return nil
}

// GetOrCreateAmplifierMap returns the list (map) from OpticalAmplifier.
//
// It initializes the field if not already initialized.
func (t *OpticalAmplifier) GetOrCreateAmplifierMap() map[string]*OpticalAmplifier_Amplifier {
	if t.Amplifier == nil {
		t.Amplifier = make(map[string]*OpticalAmplifier_Amplifier)
	}
	return t.Amplifier
}

// GetOrCreateAmplifier retrieves the value with the specified keys from
// the receiver OpticalAmplifier. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *OpticalAmplifier) GetOrCreateAmplifier(Name string) *OpticalAmplifier_Amplifier {

	key := Name

	if v, ok := t.Amplifier[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAmplifier(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAmplifier got unexpected error: %v", err))
	}
	return v
}

// GetAmplifier retrieves the value with the specified key from
// the Amplifier map field of OpticalAmplifier. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *OpticalAmplifier) GetAmplifier(Name string) *OpticalAmplifier_Amplifier {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Amplifier[key]; ok {
		return lm
	}
	return nil
}

// AppendAmplifier appends the supplied OpticalAmplifier_Amplifier struct to the
// list Amplifier of OpticalAmplifier. If the key value(s) specified in
// the supplied OpticalAmplifier_Amplifier already exist in the list, an error is
// returned.
func (t *OpticalAmplifier) AppendAmplifier(v *OpticalAmplifier_Amplifier) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Amplifier == nil {
		t.Amplifier = make(map[string]*OpticalAmplifier_Amplifier)
	}

	if _, ok := t.Amplifier[key]; ok {
		return fmt.Errorf("duplicate key for list Amplifier %v", key)
	}

	t.Amplifier[key] = v
	return nil
}

// NewSupervisoryChannel creates a new entry in the SupervisoryChannel list of the
// OpticalAmplifier struct. The keys of the list are populated from the input
// arguments.
func (t *OpticalAmplifier) NewSupervisoryChannel(Interface string) (*OpticalAmplifier_SupervisoryChannel, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SupervisoryChannel == nil {
		t.SupervisoryChannel = make(map[string]*OpticalAmplifier_SupervisoryChannel)
	}

	key := Interface

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.SupervisoryChannel[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list SupervisoryChannel", key)
	}

	t.SupervisoryChannel[key] = &OpticalAmplifier_SupervisoryChannel{
		Interface: &Interface,
	}

	return t.SupervisoryChannel[key], nil
}

// RenameSupervisoryChannel renames an entry in the list SupervisoryChannel within
// the OpticalAmplifier struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *OpticalAmplifier) RenameSupervisoryChannel(oldK, newK string) error {
	if _, ok := t.SupervisoryChannel[newK]; ok {
		return fmt.Errorf("key %v already exists in SupervisoryChannel", newK)
	}

	e, ok := t.SupervisoryChannel[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in SupervisoryChannel", oldK)
	}
	e.Interface = &newK

	t.SupervisoryChannel[newK] = e
	delete(t.SupervisoryChannel, oldK)
	return nil
}

// GetOrCreateSupervisoryChannelMap returns the list (map) from OpticalAmplifier.
//
// It initializes the field if not already initialized.
func (t *OpticalAmplifier) GetOrCreateSupervisoryChannelMap() map[string]*OpticalAmplifier_SupervisoryChannel {
	if t.SupervisoryChannel == nil {
		t.SupervisoryChannel = make(map[string]*OpticalAmplifier_SupervisoryChannel)
	}
	return t.SupervisoryChannel
}

// GetOrCreateSupervisoryChannel retrieves the value with the specified keys from
// the receiver OpticalAmplifier. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *OpticalAmplifier) GetOrCreateSupervisoryChannel(Interface string) *OpticalAmplifier_SupervisoryChannel {

	key := Interface

	if v, ok := t.SupervisoryChannel[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSupervisoryChannel(Interface)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSupervisoryChannel got unexpected error: %v", err))
	}
	return v
}

// GetSupervisoryChannel retrieves the value with the specified key from
// the SupervisoryChannel map field of OpticalAmplifier. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *OpticalAmplifier) GetSupervisoryChannel(Interface string) *OpticalAmplifier_SupervisoryChannel {

	if t == nil {
		return nil
	}

	key := Interface

	if lm, ok := t.SupervisoryChannel[key]; ok {
		return lm
	}
	return nil
}

// AppendSupervisoryChannel appends the supplied OpticalAmplifier_SupervisoryChannel struct to the
// list SupervisoryChannel of OpticalAmplifier. If the key value(s) specified in
// the supplied OpticalAmplifier_SupervisoryChannel already exist in the list, an error is
// returned.
func (t *OpticalAmplifier) AppendSupervisoryChannel(v *OpticalAmplifier_SupervisoryChannel) error {
	if v.Interface == nil {
		return fmt.Errorf("invalid nil key received for Interface")
	}

	key := *v.Interface

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.SupervisoryChannel == nil {
		t.SupervisoryChannel = make(map[string]*OpticalAmplifier_SupervisoryChannel)
	}

	if _, ok := t.SupervisoryChannel[key]; ok {
		return fmt.Errorf("duplicate key for list SupervisoryChannel %v", key)
	}

	t.SupervisoryChannel[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the OpticalAmplifier
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *OpticalAmplifier) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Amplifier {
		e.PopulateDefaults()
	}
	for _, e := range t.SupervisoryChannel {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["OpticalAmplifier"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *OpticalAmplifier) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of OpticalAmplifier.
func (*OpticalAmplifier) ΛBelongingModule() string {
	return "openconfig-optical-amplifier"
}

// OpticalAmplifier_Amplifier represents the /openconfig-optical-amplifier/optical-amplifier/amplifiers/amplifier YANG schema element.
type OpticalAmplifier_Amplifier struct {
	ΛMetadata          []ygot.Annotation                             `path:"@" ygotAnnotation:"true"`
	ActualGain         *OpticalAmplifier_Amplifier_ActualGain        `path:"state/actual-gain" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛActualGain        []ygot.Annotation                             `path:"state/@actual-gain" ygotAnnotation:"true"`
	ActualGainTilt     *OpticalAmplifier_Amplifier_ActualGainTilt    `path:"state/actual-gain-tilt" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛActualGainTilt    []ygot.Annotation                             `path:"state/@actual-gain-tilt" ygotAnnotation:"true"`
	AmpMode            E_OpticalAmplifier_OPTICAL_AMPLIFIER_MODE     `path:"config/amp-mode" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛAmpMode           []ygot.Annotation                             `path:"config/@amp-mode" ygotAnnotation:"true"`
	Component          *string                                       `path:"state/component" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛComponent         []ygot.Annotation                             `path:"state/@component" ygotAnnotation:"true"`
	EgressPort         *string                                       `path:"state/egress-port" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛEgressPort        []ygot.Annotation                             `path:"state/@egress-port" ygotAnnotation:"true"`
	Enabled            *bool                                         `path:"config/enabled" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛEnabled           []ygot.Annotation                             `path:"config/@enabled" ygotAnnotation:"true"`
	FiberTypeProfile   E_OpticalAmplifier_FIBER_TYPE_PROFILE         `path:"config/fiber-type-profile" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛFiberTypeProfile  []ygot.Annotation                             `path:"config/@fiber-type-profile" ygotAnnotation:"true"`
	GainRange          E_OpticalAmplifier_GAIN_RANGE                 `path:"config/gain-range" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛGainRange         []ygot.Annotation                             `path:"config/@gain-range" ygotAnnotation:"true"`
	IngressPort        *string                                       `path:"state/ingress-port" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛIngressPort       []ygot.Annotation                             `path:"state/@ingress-port" ygotAnnotation:"true"`
	InputPowerCBand    *OpticalAmplifier_Amplifier_InputPowerCBand   `path:"state/input-power-c-band" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛInputPowerCBand   []ygot.Annotation                             `path:"state/@input-power-c-band" ygotAnnotation:"true"`
	InputPowerLBand    *OpticalAmplifier_Amplifier_InputPowerLBand   `path:"state/input-power-l-band" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛInputPowerLBand   []ygot.Annotation                             `path:"state/@input-power-l-band" ygotAnnotation:"true"`
	InputPowerTotal    *OpticalAmplifier_Amplifier_InputPowerTotal   `path:"state/input-power-total" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛInputPowerTotal   []ygot.Annotation                             `path:"state/@input-power-total" ygotAnnotation:"true"`
	LaserBiasCurrent   *OpticalAmplifier_Amplifier_LaserBiasCurrent  `path:"state/laser-bias-current" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛLaserBiasCurrent  []ygot.Annotation                             `path:"state/@laser-bias-current" ygotAnnotation:"true"`
	MaxGain            *float64                                      `path:"config/max-gain" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛMaxGain           []ygot.Annotation                             `path:"config/@max-gain" ygotAnnotation:"true"`
	MaxOutputPower     *float64                                      `path:"config/max-output-power" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛMaxOutputPower    []ygot.Annotation                             `path:"config/@max-output-power" ygotAnnotation:"true"`
	MinGain            *float64                                      `path:"config/min-gain" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛMinGain           []ygot.Annotation                             `path:"config/@min-gain" ygotAnnotation:"true"`
	Name               *string                                       `path:"config/name|name" module:"openconfig-optical-amplifier/openconfig-optical-amplifier|openconfig-optical-amplifier"`
	ΛName              []ygot.Annotation                             `path:"config/@name|@name" ygotAnnotation:"true"`
	OpticalReturnLoss  *OpticalAmplifier_Amplifier_OpticalReturnLoss `path:"state/optical-return-loss" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛOpticalReturnLoss []ygot.Annotation                             `path:"state/@optical-return-loss" ygotAnnotation:"true"`
	OutputPowerCBand   *OpticalAmplifier_Amplifier_OutputPowerCBand  `path:"state/output-power-c-band" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛOutputPowerCBand  []ygot.Annotation                             `path:"state/@output-power-c-band" ygotAnnotation:"true"`
	OutputPowerLBand   *OpticalAmplifier_Amplifier_OutputPowerLBand  `path:"state/output-power-l-band" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛOutputPowerLBand  []ygot.Annotation                             `path:"state/@output-power-l-band" ygotAnnotation:"true"`
	OutputPowerTotal   *OpticalAmplifier_Amplifier_OutputPowerTotal  `path:"state/output-power-total" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛOutputPowerTotal  []ygot.Annotation                             `path:"state/@output-power-total" ygotAnnotation:"true"`
	TargetGain         *float64                                      `path:"config/target-gain" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛTargetGain        []ygot.Annotation                             `path:"config/@target-gain" ygotAnnotation:"true"`
	TargetGainTilt     *float64                                      `path:"config/target-gain-tilt" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛTargetGainTilt    []ygot.Annotation                             `path:"config/@target-gain-tilt" ygotAnnotation:"true"`
	TargetOutputPower  *float64                                      `path:"config/target-output-power" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛTargetOutputPower []ygot.Annotation                             `path:"config/@target-output-power" ygotAnnotation:"true"`
	Type               E_OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE     `path:"config/type" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛType              []ygot.Annotation                             `path:"config/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that OpticalAmplifier_Amplifier implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*OpticalAmplifier_Amplifier) IsYANGGoStruct() {}

// GetOrCreateActualGain retrieves the value of the ActualGain field
// or returns the existing field if it already exists.
func (t *OpticalAmplifier_Amplifier) GetOrCreateActualGain() *OpticalAmplifier_Amplifier_ActualGain {
	if t.ActualGain != nil {
		return t.ActualGain
	}
	t.ActualGain = &OpticalAmplifier_Amplifier_ActualGain{}
	return t.ActualGain
}

// GetOrCreateActualGainTilt retrieves the value of the ActualGainTilt field
// or returns the existing field if it already exists.
func (t *OpticalAmplifier_Amplifier) GetOrCreateActualGainTilt() *OpticalAmplifier_Amplifier_ActualGainTilt {
	if t.ActualGainTilt != nil {
		return t.ActualGainTilt
	}
	t.ActualGainTilt = &OpticalAmplifier_Amplifier_ActualGainTilt{}
	return t.ActualGainTilt
}

// GetOrCreateInputPowerCBand retrieves the value of the InputPowerCBand field
// or returns the existing field if it already exists.
func (t *OpticalAmplifier_Amplifier) GetOrCreateInputPowerCBand() *OpticalAmplifier_Amplifier_InputPowerCBand {
	if t.InputPowerCBand != nil {
		return t.InputPowerCBand
	}
	t.InputPowerCBand = &OpticalAmplifier_Amplifier_InputPowerCBand{}
	return t.InputPowerCBand
}

// GetOrCreateInputPowerLBand retrieves the value of the InputPowerLBand field
// or returns the existing field if it already exists.
func (t *OpticalAmplifier_Amplifier) GetOrCreateInputPowerLBand() *OpticalAmplifier_Amplifier_InputPowerLBand {
	if t.InputPowerLBand != nil {
		return t.InputPowerLBand
	}
	t.InputPowerLBand = &OpticalAmplifier_Amplifier_InputPowerLBand{}
	return t.InputPowerLBand
}

// GetOrCreateInputPowerTotal retrieves the value of the InputPowerTotal field
// or returns the existing field if it already exists.
func (t *OpticalAmplifier_Amplifier) GetOrCreateInputPowerTotal() *OpticalAmplifier_Amplifier_InputPowerTotal {
	if t.InputPowerTotal != nil {
		return t.InputPowerTotal
	}
	t.InputPowerTotal = &OpticalAmplifier_Amplifier_InputPowerTotal{}
	return t.InputPowerTotal
}

// GetOrCreateLaserBiasCurrent retrieves the value of the LaserBiasCurrent field
// or returns the existing field if it already exists.
func (t *OpticalAmplifier_Amplifier) GetOrCreateLaserBiasCurrent() *OpticalAmplifier_Amplifier_LaserBiasCurrent {
	if t.LaserBiasCurrent != nil {
		return t.LaserBiasCurrent
	}
	t.LaserBiasCurrent = &OpticalAmplifier_Amplifier_LaserBiasCurrent{}
	return t.LaserBiasCurrent
}

// GetOrCreateOpticalReturnLoss retrieves the value of the OpticalReturnLoss field
// or returns the existing field if it already exists.
func (t *OpticalAmplifier_Amplifier) GetOrCreateOpticalReturnLoss() *OpticalAmplifier_Amplifier_OpticalReturnLoss {
	if t.OpticalReturnLoss != nil {
		return t.OpticalReturnLoss
	}
	t.OpticalReturnLoss = &OpticalAmplifier_Amplifier_OpticalReturnLoss{}
	return t.OpticalReturnLoss
}

// GetOrCreateOutputPowerCBand retrieves the value of the OutputPowerCBand field
// or returns the existing field if it already exists.
func (t *OpticalAmplifier_Amplifier) GetOrCreateOutputPowerCBand() *OpticalAmplifier_Amplifier_OutputPowerCBand {
	if t.OutputPowerCBand != nil {
		return t.OutputPowerCBand
	}
	t.OutputPowerCBand = &OpticalAmplifier_Amplifier_OutputPowerCBand{}
	return t.OutputPowerCBand
}

// GetOrCreateOutputPowerLBand retrieves the value of the OutputPowerLBand field
// or returns the existing field if it already exists.
func (t *OpticalAmplifier_Amplifier) GetOrCreateOutputPowerLBand() *OpticalAmplifier_Amplifier_OutputPowerLBand {
	if t.OutputPowerLBand != nil {
		return t.OutputPowerLBand
	}
	t.OutputPowerLBand = &OpticalAmplifier_Amplifier_OutputPowerLBand{}
	return t.OutputPowerLBand
}

// GetOrCreateOutputPowerTotal retrieves the value of the OutputPowerTotal field
// or returns the existing field if it already exists.
func (t *OpticalAmplifier_Amplifier) GetOrCreateOutputPowerTotal() *OpticalAmplifier_Amplifier_OutputPowerTotal {
	if t.OutputPowerTotal != nil {
		return t.OutputPowerTotal
	}
	t.OutputPowerTotal = &OpticalAmplifier_Amplifier_OutputPowerTotal{}
	return t.OutputPowerTotal
}

// GetActualGain returns the value of the ActualGain struct pointer
// from OpticalAmplifier_Amplifier. If the receiver or the field ActualGain is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *OpticalAmplifier_Amplifier) GetActualGain() *OpticalAmplifier_Amplifier_ActualGain {
	if t != nil && t.ActualGain != nil {
		return t.ActualGain
	}
	return nil
}

// GetActualGainTilt returns the value of the ActualGainTilt struct pointer
// from OpticalAmplifier_Amplifier. If the receiver or the field ActualGainTilt is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *OpticalAmplifier_Amplifier) GetActualGainTilt() *OpticalAmplifier_Amplifier_ActualGainTilt {
	if t != nil && t.ActualGainTilt != nil {
		return t.ActualGainTilt
	}
	return nil
}

// GetInputPowerCBand returns the value of the InputPowerCBand struct pointer
// from OpticalAmplifier_Amplifier. If the receiver or the field InputPowerCBand is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *OpticalAmplifier_Amplifier) GetInputPowerCBand() *OpticalAmplifier_Amplifier_InputPowerCBand {
	if t != nil && t.InputPowerCBand != nil {
		return t.InputPowerCBand
	}
	return nil
}

// GetInputPowerLBand returns the value of the InputPowerLBand struct pointer
// from OpticalAmplifier_Amplifier. If the receiver or the field InputPowerLBand is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *OpticalAmplifier_Amplifier) GetInputPowerLBand() *OpticalAmplifier_Amplifier_InputPowerLBand {
	if t != nil && t.InputPowerLBand != nil {
		return t.InputPowerLBand
	}
	return nil
}

// GetInputPowerTotal returns the value of the InputPowerTotal struct pointer
// from OpticalAmplifier_Amplifier. If the receiver or the field InputPowerTotal is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *OpticalAmplifier_Amplifier) GetInputPowerTotal() *OpticalAmplifier_Amplifier_InputPowerTotal {
	if t != nil && t.InputPowerTotal != nil {
		return t.InputPowerTotal
	}
	return nil
}

// GetLaserBiasCurrent returns the value of the LaserBiasCurrent struct pointer
// from OpticalAmplifier_Amplifier. If the receiver or the field LaserBiasCurrent is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *OpticalAmplifier_Amplifier) GetLaserBiasCurrent() *OpticalAmplifier_Amplifier_LaserBiasCurrent {
	if t != nil && t.LaserBiasCurrent != nil {
		return t.LaserBiasCurrent
	}
	return nil
}

// GetOpticalReturnLoss returns the value of the OpticalReturnLoss struct pointer
// from OpticalAmplifier_Amplifier. If the receiver or the field OpticalReturnLoss is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *OpticalAmplifier_Amplifier) GetOpticalReturnLoss() *OpticalAmplifier_Amplifier_OpticalReturnLoss {
	if t != nil && t.OpticalReturnLoss != nil {
		return t.OpticalReturnLoss
	}
	return nil
}

// GetOutputPowerCBand returns the value of the OutputPowerCBand struct pointer
// from OpticalAmplifier_Amplifier. If the receiver or the field OutputPowerCBand is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *OpticalAmplifier_Amplifier) GetOutputPowerCBand() *OpticalAmplifier_Amplifier_OutputPowerCBand {
	if t != nil && t.OutputPowerCBand != nil {
		return t.OutputPowerCBand
	}
	return nil
}

// GetOutputPowerLBand returns the value of the OutputPowerLBand struct pointer
// from OpticalAmplifier_Amplifier. If the receiver or the field OutputPowerLBand is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *OpticalAmplifier_Amplifier) GetOutputPowerLBand() *OpticalAmplifier_Amplifier_OutputPowerLBand {
	if t != nil && t.OutputPowerLBand != nil {
		return t.OutputPowerLBand
	}
	return nil
}

// GetOutputPowerTotal returns the value of the OutputPowerTotal struct pointer
// from OpticalAmplifier_Amplifier. If the receiver or the field OutputPowerTotal is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *OpticalAmplifier_Amplifier) GetOutputPowerTotal() *OpticalAmplifier_Amplifier_OutputPowerTotal {
	if t != nil && t.OutputPowerTotal != nil {
		return t.OutputPowerTotal
	}
	return nil
}

// GetAmpMode retrieves the value of the leaf AmpMode from the OpticalAmplifier_Amplifier
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AmpMode is set, it can
// safely use t.GetAmpMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AmpMode == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier) GetAmpMode() E_OpticalAmplifier_OPTICAL_AMPLIFIER_MODE {
	if t == nil || t.AmpMode == 0 {
		return 0
	}
	return t.AmpMode
}

// GetComponent retrieves the value of the leaf Component from the OpticalAmplifier_Amplifier
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Component is set, it can
// safely use t.GetComponent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Component == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier) GetComponent() string {
	if t == nil || t.Component == nil {
		return ""
	}
	return *t.Component
}

// GetEgressPort retrieves the value of the leaf EgressPort from the OpticalAmplifier_Amplifier
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EgressPort is set, it can
// safely use t.GetEgressPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EgressPort == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier) GetEgressPort() string {
	if t == nil || t.EgressPort == nil {
		return ""
	}
	return *t.EgressPort
}

// GetEnabled retrieves the value of the leaf Enabled from the OpticalAmplifier_Amplifier
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetFiberTypeProfile retrieves the value of the leaf FiberTypeProfile from the OpticalAmplifier_Amplifier
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FiberTypeProfile is set, it can
// safely use t.GetFiberTypeProfile() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FiberTypeProfile == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier) GetFiberTypeProfile() E_OpticalAmplifier_FIBER_TYPE_PROFILE {
	if t == nil || t.FiberTypeProfile == 0 {
		return 0
	}
	return t.FiberTypeProfile
}

// GetGainRange retrieves the value of the leaf GainRange from the OpticalAmplifier_Amplifier
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if GainRange is set, it can
// safely use t.GetGainRange() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.GainRange == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier) GetGainRange() E_OpticalAmplifier_GAIN_RANGE {
	if t == nil || t.GainRange == 0 {
		return 0
	}
	return t.GainRange
}

// GetIngressPort retrieves the value of the leaf IngressPort from the OpticalAmplifier_Amplifier
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IngressPort is set, it can
// safely use t.GetIngressPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IngressPort == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier) GetIngressPort() string {
	if t == nil || t.IngressPort == nil {
		return ""
	}
	return *t.IngressPort
}

// GetMaxGain retrieves the value of the leaf MaxGain from the OpticalAmplifier_Amplifier
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxGain is set, it can
// safely use t.GetMaxGain() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxGain == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier) GetMaxGain() float64 {
	if t == nil || t.MaxGain == nil {
		return 0.0
	}
	return *t.MaxGain
}

// GetMaxOutputPower retrieves the value of the leaf MaxOutputPower from the OpticalAmplifier_Amplifier
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxOutputPower is set, it can
// safely use t.GetMaxOutputPower() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxOutputPower == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier) GetMaxOutputPower() float64 {
	if t == nil || t.MaxOutputPower == nil {
		return 0.0
	}
	return *t.MaxOutputPower
}

// GetMinGain retrieves the value of the leaf MinGain from the OpticalAmplifier_Amplifier
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinGain is set, it can
// safely use t.GetMinGain() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinGain == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier) GetMinGain() float64 {
	if t == nil || t.MinGain == nil {
		return 0.0
	}
	return *t.MinGain
}

// GetName retrieves the value of the leaf Name from the OpticalAmplifier_Amplifier
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetTargetGain retrieves the value of the leaf TargetGain from the OpticalAmplifier_Amplifier
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TargetGain is set, it can
// safely use t.GetTargetGain() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TargetGain == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier) GetTargetGain() float64 {
	if t == nil || t.TargetGain == nil {
		return 0.0
	}
	return *t.TargetGain
}

// GetTargetGainTilt retrieves the value of the leaf TargetGainTilt from the OpticalAmplifier_Amplifier
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TargetGainTilt is set, it can
// safely use t.GetTargetGainTilt() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TargetGainTilt == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier) GetTargetGainTilt() float64 {
	if t == nil || t.TargetGainTilt == nil {
		return 0.0
	}
	return *t.TargetGainTilt
}

// GetTargetOutputPower retrieves the value of the leaf TargetOutputPower from the OpticalAmplifier_Amplifier
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TargetOutputPower is set, it can
// safely use t.GetTargetOutputPower() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TargetOutputPower == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier) GetTargetOutputPower() float64 {
	if t == nil || t.TargetOutputPower == nil {
		return 0.0
	}
	return *t.TargetOutputPower
}

// GetType retrieves the value of the leaf Type from the OpticalAmplifier_Amplifier
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier) GetType() E_OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the OpticalAmplifier_Amplifier
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *OpticalAmplifier_Amplifier) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.ActualGain.PopulateDefaults()
	t.ActualGainTilt.PopulateDefaults()
	t.InputPowerCBand.PopulateDefaults()
	t.InputPowerLBand.PopulateDefaults()
	t.InputPowerTotal.PopulateDefaults()
	t.LaserBiasCurrent.PopulateDefaults()
	t.OpticalReturnLoss.PopulateDefaults()
	t.OutputPowerCBand.PopulateDefaults()
	t.OutputPowerLBand.PopulateDefaults()
	t.OutputPowerTotal.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the OpticalAmplifier_Amplifier struct, which is a YANG list entry.
func (t *OpticalAmplifier_Amplifier) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["OpticalAmplifier_Amplifier"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *OpticalAmplifier_Amplifier) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of OpticalAmplifier_Amplifier.
func (*OpticalAmplifier_Amplifier) ΛBelongingModule() string {
	return "openconfig-optical-amplifier"
}

// OpticalAmplifier_Amplifier_ActualGain represents the /openconfig-optical-amplifier/optical-amplifier/amplifiers/amplifier/state/actual-gain YANG schema element.
type OpticalAmplifier_Amplifier_ActualGain struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-optical-amplifier"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-optical-amplifier"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-optical-amplifier"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-optical-amplifier"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-optical-amplifier"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-optical-amplifier"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-optical-amplifier"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that OpticalAmplifier_Amplifier_ActualGain implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*OpticalAmplifier_Amplifier_ActualGain) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the OpticalAmplifier_Amplifier_ActualGain
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_ActualGain) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the OpticalAmplifier_Amplifier_ActualGain
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_ActualGain) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the OpticalAmplifier_Amplifier_ActualGain
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_ActualGain) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the OpticalAmplifier_Amplifier_ActualGain
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_ActualGain) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the OpticalAmplifier_Amplifier_ActualGain
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_ActualGain) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the OpticalAmplifier_Amplifier_ActualGain
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_ActualGain) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the OpticalAmplifier_Amplifier_ActualGain
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_ActualGain) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the OpticalAmplifier_Amplifier_ActualGain
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *OpticalAmplifier_Amplifier_ActualGain) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_ActualGain) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["OpticalAmplifier_Amplifier_ActualGain"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_ActualGain) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *OpticalAmplifier_Amplifier_ActualGain) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of OpticalAmplifier_Amplifier_ActualGain.
func (*OpticalAmplifier_Amplifier_ActualGain) ΛBelongingModule() string {
	return "openconfig-optical-amplifier"
}

// OpticalAmplifier_Amplifier_ActualGainTilt represents the /openconfig-optical-amplifier/optical-amplifier/amplifiers/amplifier/state/actual-gain-tilt YANG schema element.
type OpticalAmplifier_Amplifier_ActualGainTilt struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-optical-amplifier"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-optical-amplifier"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-optical-amplifier"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-optical-amplifier"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-optical-amplifier"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-optical-amplifier"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-optical-amplifier"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that OpticalAmplifier_Amplifier_ActualGainTilt implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*OpticalAmplifier_Amplifier_ActualGainTilt) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the OpticalAmplifier_Amplifier_ActualGainTilt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_ActualGainTilt) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the OpticalAmplifier_Amplifier_ActualGainTilt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_ActualGainTilt) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the OpticalAmplifier_Amplifier_ActualGainTilt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_ActualGainTilt) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the OpticalAmplifier_Amplifier_ActualGainTilt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_ActualGainTilt) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the OpticalAmplifier_Amplifier_ActualGainTilt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_ActualGainTilt) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the OpticalAmplifier_Amplifier_ActualGainTilt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_ActualGainTilt) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the OpticalAmplifier_Amplifier_ActualGainTilt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_ActualGainTilt) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the OpticalAmplifier_Amplifier_ActualGainTilt
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *OpticalAmplifier_Amplifier_ActualGainTilt) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_ActualGainTilt) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["OpticalAmplifier_Amplifier_ActualGainTilt"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_ActualGainTilt) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *OpticalAmplifier_Amplifier_ActualGainTilt) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of OpticalAmplifier_Amplifier_ActualGainTilt.
func (*OpticalAmplifier_Amplifier_ActualGainTilt) ΛBelongingModule() string {
	return "openconfig-optical-amplifier"
}

// OpticalAmplifier_Amplifier_InputPowerCBand represents the /openconfig-optical-amplifier/optical-amplifier/amplifiers/amplifier/state/input-power-c-band YANG schema element.
type OpticalAmplifier_Amplifier_InputPowerCBand struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-optical-amplifier"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-optical-amplifier"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-optical-amplifier"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-optical-amplifier"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-optical-amplifier"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-optical-amplifier"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-optical-amplifier"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that OpticalAmplifier_Amplifier_InputPowerCBand implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*OpticalAmplifier_Amplifier_InputPowerCBand) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the OpticalAmplifier_Amplifier_InputPowerCBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerCBand) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the OpticalAmplifier_Amplifier_InputPowerCBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerCBand) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the OpticalAmplifier_Amplifier_InputPowerCBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerCBand) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the OpticalAmplifier_Amplifier_InputPowerCBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerCBand) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the OpticalAmplifier_Amplifier_InputPowerCBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerCBand) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the OpticalAmplifier_Amplifier_InputPowerCBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerCBand) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the OpticalAmplifier_Amplifier_InputPowerCBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerCBand) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the OpticalAmplifier_Amplifier_InputPowerCBand
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *OpticalAmplifier_Amplifier_InputPowerCBand) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_InputPowerCBand) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["OpticalAmplifier_Amplifier_InputPowerCBand"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_InputPowerCBand) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *OpticalAmplifier_Amplifier_InputPowerCBand) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of OpticalAmplifier_Amplifier_InputPowerCBand.
func (*OpticalAmplifier_Amplifier_InputPowerCBand) ΛBelongingModule() string {
	return "openconfig-optical-amplifier"
}

// OpticalAmplifier_Amplifier_InputPowerLBand represents the /openconfig-optical-amplifier/optical-amplifier/amplifiers/amplifier/state/input-power-l-band YANG schema element.
type OpticalAmplifier_Amplifier_InputPowerLBand struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-optical-amplifier"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-optical-amplifier"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-optical-amplifier"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-optical-amplifier"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-optical-amplifier"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-optical-amplifier"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-optical-amplifier"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that OpticalAmplifier_Amplifier_InputPowerLBand implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*OpticalAmplifier_Amplifier_InputPowerLBand) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the OpticalAmplifier_Amplifier_InputPowerLBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerLBand) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the OpticalAmplifier_Amplifier_InputPowerLBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerLBand) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the OpticalAmplifier_Amplifier_InputPowerLBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerLBand) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the OpticalAmplifier_Amplifier_InputPowerLBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerLBand) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the OpticalAmplifier_Amplifier_InputPowerLBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerLBand) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the OpticalAmplifier_Amplifier_InputPowerLBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerLBand) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the OpticalAmplifier_Amplifier_InputPowerLBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerLBand) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the OpticalAmplifier_Amplifier_InputPowerLBand
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *OpticalAmplifier_Amplifier_InputPowerLBand) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_InputPowerLBand) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["OpticalAmplifier_Amplifier_InputPowerLBand"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_InputPowerLBand) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *OpticalAmplifier_Amplifier_InputPowerLBand) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of OpticalAmplifier_Amplifier_InputPowerLBand.
func (*OpticalAmplifier_Amplifier_InputPowerLBand) ΛBelongingModule() string {
	return "openconfig-optical-amplifier"
}

// OpticalAmplifier_Amplifier_InputPowerTotal represents the /openconfig-optical-amplifier/optical-amplifier/amplifiers/amplifier/state/input-power-total YANG schema element.
type OpticalAmplifier_Amplifier_InputPowerTotal struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-optical-amplifier"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-optical-amplifier"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-optical-amplifier"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-optical-amplifier"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-optical-amplifier"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-optical-amplifier"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-optical-amplifier"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that OpticalAmplifier_Amplifier_InputPowerTotal implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*OpticalAmplifier_Amplifier_InputPowerTotal) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the OpticalAmplifier_Amplifier_InputPowerTotal
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerTotal) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the OpticalAmplifier_Amplifier_InputPowerTotal
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerTotal) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the OpticalAmplifier_Amplifier_InputPowerTotal
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerTotal) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the OpticalAmplifier_Amplifier_InputPowerTotal
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerTotal) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the OpticalAmplifier_Amplifier_InputPowerTotal
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerTotal) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the OpticalAmplifier_Amplifier_InputPowerTotal
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerTotal) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the OpticalAmplifier_Amplifier_InputPowerTotal
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_InputPowerTotal) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the OpticalAmplifier_Amplifier_InputPowerTotal
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *OpticalAmplifier_Amplifier_InputPowerTotal) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_InputPowerTotal) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["OpticalAmplifier_Amplifier_InputPowerTotal"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_InputPowerTotal) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *OpticalAmplifier_Amplifier_InputPowerTotal) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of OpticalAmplifier_Amplifier_InputPowerTotal.
func (*OpticalAmplifier_Amplifier_InputPowerTotal) ΛBelongingModule() string {
	return "openconfig-optical-amplifier"
}

// OpticalAmplifier_Amplifier_LaserBiasCurrent represents the /openconfig-optical-amplifier/optical-amplifier/amplifiers/amplifier/state/laser-bias-current YANG schema element.
type OpticalAmplifier_Amplifier_LaserBiasCurrent struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-optical-amplifier"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-optical-amplifier"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-optical-amplifier"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-optical-amplifier"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-optical-amplifier"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-optical-amplifier"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-optical-amplifier"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that OpticalAmplifier_Amplifier_LaserBiasCurrent implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*OpticalAmplifier_Amplifier_LaserBiasCurrent) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the OpticalAmplifier_Amplifier_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_LaserBiasCurrent) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the OpticalAmplifier_Amplifier_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_LaserBiasCurrent) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the OpticalAmplifier_Amplifier_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_LaserBiasCurrent) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the OpticalAmplifier_Amplifier_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_LaserBiasCurrent) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the OpticalAmplifier_Amplifier_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_LaserBiasCurrent) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the OpticalAmplifier_Amplifier_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_LaserBiasCurrent) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the OpticalAmplifier_Amplifier_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_LaserBiasCurrent) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the OpticalAmplifier_Amplifier_LaserBiasCurrent
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *OpticalAmplifier_Amplifier_LaserBiasCurrent) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_LaserBiasCurrent) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["OpticalAmplifier_Amplifier_LaserBiasCurrent"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_LaserBiasCurrent) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *OpticalAmplifier_Amplifier_LaserBiasCurrent) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of OpticalAmplifier_Amplifier_LaserBiasCurrent.
func (*OpticalAmplifier_Amplifier_LaserBiasCurrent) ΛBelongingModule() string {
	return "openconfig-optical-amplifier"
}

// OpticalAmplifier_Amplifier_OpticalReturnLoss represents the /openconfig-optical-amplifier/optical-amplifier/amplifiers/amplifier/state/optical-return-loss YANG schema element.
type OpticalAmplifier_Amplifier_OpticalReturnLoss struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-optical-amplifier"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-optical-amplifier"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-optical-amplifier"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-optical-amplifier"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-optical-amplifier"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-optical-amplifier"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-optical-amplifier"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that OpticalAmplifier_Amplifier_OpticalReturnLoss implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*OpticalAmplifier_Amplifier_OpticalReturnLoss) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the OpticalAmplifier_Amplifier_OpticalReturnLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OpticalReturnLoss) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the OpticalAmplifier_Amplifier_OpticalReturnLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OpticalReturnLoss) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the OpticalAmplifier_Amplifier_OpticalReturnLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OpticalReturnLoss) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the OpticalAmplifier_Amplifier_OpticalReturnLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OpticalReturnLoss) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the OpticalAmplifier_Amplifier_OpticalReturnLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OpticalReturnLoss) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the OpticalAmplifier_Amplifier_OpticalReturnLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OpticalReturnLoss) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the OpticalAmplifier_Amplifier_OpticalReturnLoss
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OpticalReturnLoss) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the OpticalAmplifier_Amplifier_OpticalReturnLoss
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *OpticalAmplifier_Amplifier_OpticalReturnLoss) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_OpticalReturnLoss) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["OpticalAmplifier_Amplifier_OpticalReturnLoss"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_OpticalReturnLoss) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *OpticalAmplifier_Amplifier_OpticalReturnLoss) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of OpticalAmplifier_Amplifier_OpticalReturnLoss.
func (*OpticalAmplifier_Amplifier_OpticalReturnLoss) ΛBelongingModule() string {
	return "openconfig-optical-amplifier"
}

// OpticalAmplifier_Amplifier_OutputPowerCBand represents the /openconfig-optical-amplifier/optical-amplifier/amplifiers/amplifier/state/output-power-c-band YANG schema element.
type OpticalAmplifier_Amplifier_OutputPowerCBand struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-optical-amplifier"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-optical-amplifier"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-optical-amplifier"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-optical-amplifier"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-optical-amplifier"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-optical-amplifier"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-optical-amplifier"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that OpticalAmplifier_Amplifier_OutputPowerCBand implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*OpticalAmplifier_Amplifier_OutputPowerCBand) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the OpticalAmplifier_Amplifier_OutputPowerCBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerCBand) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the OpticalAmplifier_Amplifier_OutputPowerCBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerCBand) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the OpticalAmplifier_Amplifier_OutputPowerCBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerCBand) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the OpticalAmplifier_Amplifier_OutputPowerCBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerCBand) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the OpticalAmplifier_Amplifier_OutputPowerCBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerCBand) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the OpticalAmplifier_Amplifier_OutputPowerCBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerCBand) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the OpticalAmplifier_Amplifier_OutputPowerCBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerCBand) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the OpticalAmplifier_Amplifier_OutputPowerCBand
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *OpticalAmplifier_Amplifier_OutputPowerCBand) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_OutputPowerCBand) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["OpticalAmplifier_Amplifier_OutputPowerCBand"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_OutputPowerCBand) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *OpticalAmplifier_Amplifier_OutputPowerCBand) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of OpticalAmplifier_Amplifier_OutputPowerCBand.
func (*OpticalAmplifier_Amplifier_OutputPowerCBand) ΛBelongingModule() string {
	return "openconfig-optical-amplifier"
}

// OpticalAmplifier_Amplifier_OutputPowerLBand represents the /openconfig-optical-amplifier/optical-amplifier/amplifiers/amplifier/state/output-power-l-band YANG schema element.
type OpticalAmplifier_Amplifier_OutputPowerLBand struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-optical-amplifier"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-optical-amplifier"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-optical-amplifier"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-optical-amplifier"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-optical-amplifier"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-optical-amplifier"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-optical-amplifier"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that OpticalAmplifier_Amplifier_OutputPowerLBand implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*OpticalAmplifier_Amplifier_OutputPowerLBand) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the OpticalAmplifier_Amplifier_OutputPowerLBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerLBand) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the OpticalAmplifier_Amplifier_OutputPowerLBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerLBand) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the OpticalAmplifier_Amplifier_OutputPowerLBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerLBand) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the OpticalAmplifier_Amplifier_OutputPowerLBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerLBand) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the OpticalAmplifier_Amplifier_OutputPowerLBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerLBand) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the OpticalAmplifier_Amplifier_OutputPowerLBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerLBand) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the OpticalAmplifier_Amplifier_OutputPowerLBand
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerLBand) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the OpticalAmplifier_Amplifier_OutputPowerLBand
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *OpticalAmplifier_Amplifier_OutputPowerLBand) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_OutputPowerLBand) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["OpticalAmplifier_Amplifier_OutputPowerLBand"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_OutputPowerLBand) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *OpticalAmplifier_Amplifier_OutputPowerLBand) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of OpticalAmplifier_Amplifier_OutputPowerLBand.
func (*OpticalAmplifier_Amplifier_OutputPowerLBand) ΛBelongingModule() string {
	return "openconfig-optical-amplifier"
}

// OpticalAmplifier_Amplifier_OutputPowerTotal represents the /openconfig-optical-amplifier/optical-amplifier/amplifiers/amplifier/state/output-power-total YANG schema element.
type OpticalAmplifier_Amplifier_OutputPowerTotal struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-optical-amplifier"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-optical-amplifier"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-optical-amplifier"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-optical-amplifier"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-optical-amplifier"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-optical-amplifier"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-optical-amplifier"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that OpticalAmplifier_Amplifier_OutputPowerTotal implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*OpticalAmplifier_Amplifier_OutputPowerTotal) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the OpticalAmplifier_Amplifier_OutputPowerTotal
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerTotal) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the OpticalAmplifier_Amplifier_OutputPowerTotal
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerTotal) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the OpticalAmplifier_Amplifier_OutputPowerTotal
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerTotal) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the OpticalAmplifier_Amplifier_OutputPowerTotal
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerTotal) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the OpticalAmplifier_Amplifier_OutputPowerTotal
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerTotal) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the OpticalAmplifier_Amplifier_OutputPowerTotal
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerTotal) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the OpticalAmplifier_Amplifier_OutputPowerTotal
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_Amplifier_OutputPowerTotal) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the OpticalAmplifier_Amplifier_OutputPowerTotal
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *OpticalAmplifier_Amplifier_OutputPowerTotal) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_OutputPowerTotal) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["OpticalAmplifier_Amplifier_OutputPowerTotal"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_Amplifier_OutputPowerTotal) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *OpticalAmplifier_Amplifier_OutputPowerTotal) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of OpticalAmplifier_Amplifier_OutputPowerTotal.
func (*OpticalAmplifier_Amplifier_OutputPowerTotal) ΛBelongingModule() string {
	return "openconfig-optical-amplifier"
}

// OpticalAmplifier_SupervisoryChannel represents the /openconfig-optical-amplifier/optical-amplifier/supervisory-channels/supervisory-channel YANG schema element.
type OpticalAmplifier_SupervisoryChannel struct {
	ΛMetadata         []ygot.Annotation                                     `path:"@" ygotAnnotation:"true"`
	InputPower        *OpticalAmplifier_SupervisoryChannel_InputPower       `path:"state/input-power" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛInputPower       []ygot.Annotation                                     `path:"state/@input-power" ygotAnnotation:"true"`
	Interface         *string                                               `path:"config/interface|interface" module:"openconfig-optical-amplifier/openconfig-optical-amplifier|openconfig-optical-amplifier"`
	ΛInterface        []ygot.Annotation                                     `path:"config/@interface|@interface" ygotAnnotation:"true"`
	LaserBiasCurrent  *OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent `path:"state/laser-bias-current" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛLaserBiasCurrent []ygot.Annotation                                     `path:"state/@laser-bias-current" ygotAnnotation:"true"`
	OutputFrequency   *uint64                                               `path:"state/output-frequency" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛOutputFrequency  []ygot.Annotation                                     `path:"state/@output-frequency" ygotAnnotation:"true"`
	OutputPower       *OpticalAmplifier_SupervisoryChannel_OutputPower      `path:"state/output-power" module:"openconfig-optical-amplifier/openconfig-optical-amplifier"`
	ΛOutputPower      []ygot.Annotation                                     `path:"state/@output-power" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that OpticalAmplifier_SupervisoryChannel implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*OpticalAmplifier_SupervisoryChannel) IsYANGGoStruct() {}

// GetOrCreateInputPower retrieves the value of the InputPower field
// or returns the existing field if it already exists.
func (t *OpticalAmplifier_SupervisoryChannel) GetOrCreateInputPower() *OpticalAmplifier_SupervisoryChannel_InputPower {
	if t.InputPower != nil {
		return t.InputPower
	}
	t.InputPower = &OpticalAmplifier_SupervisoryChannel_InputPower{}
	return t.InputPower
}

// GetOrCreateLaserBiasCurrent retrieves the value of the LaserBiasCurrent field
// or returns the existing field if it already exists.
func (t *OpticalAmplifier_SupervisoryChannel) GetOrCreateLaserBiasCurrent() *OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent {
	if t.LaserBiasCurrent != nil {
		return t.LaserBiasCurrent
	}
	t.LaserBiasCurrent = &OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent{}
	return t.LaserBiasCurrent
}

// GetOrCreateOutputPower retrieves the value of the OutputPower field
// or returns the existing field if it already exists.
func (t *OpticalAmplifier_SupervisoryChannel) GetOrCreateOutputPower() *OpticalAmplifier_SupervisoryChannel_OutputPower {
	if t.OutputPower != nil {
		return t.OutputPower
	}
	t.OutputPower = &OpticalAmplifier_SupervisoryChannel_OutputPower{}
	return t.OutputPower
}

// GetInputPower returns the value of the InputPower struct pointer
// from OpticalAmplifier_SupervisoryChannel. If the receiver or the field InputPower is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *OpticalAmplifier_SupervisoryChannel) GetInputPower() *OpticalAmplifier_SupervisoryChannel_InputPower {
	if t != nil && t.InputPower != nil {
		return t.InputPower
	}
	return nil
}

// GetLaserBiasCurrent returns the value of the LaserBiasCurrent struct pointer
// from OpticalAmplifier_SupervisoryChannel. If the receiver or the field LaserBiasCurrent is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *OpticalAmplifier_SupervisoryChannel) GetLaserBiasCurrent() *OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent {
	if t != nil && t.LaserBiasCurrent != nil {
		return t.LaserBiasCurrent
	}
	return nil
}

// GetOutputPower returns the value of the OutputPower struct pointer
// from OpticalAmplifier_SupervisoryChannel. If the receiver or the field OutputPower is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *OpticalAmplifier_SupervisoryChannel) GetOutputPower() *OpticalAmplifier_SupervisoryChannel_OutputPower {
	if t != nil && t.OutputPower != nil {
		return t.OutputPower
	}
	return nil
}

// GetInterface retrieves the value of the leaf Interface from the OpticalAmplifier_SupervisoryChannel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetOutputFrequency retrieves the value of the leaf OutputFrequency from the OpticalAmplifier_SupervisoryChannel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutputFrequency is set, it can
// safely use t.GetOutputFrequency() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutputFrequency == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel) GetOutputFrequency() uint64 {
	if t == nil || t.OutputFrequency == nil {
		return 0
	}
	return *t.OutputFrequency
}

// PopulateDefaults recursively populates unset leaf fields in the OpticalAmplifier_SupervisoryChannel
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *OpticalAmplifier_SupervisoryChannel) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.InputPower.PopulateDefaults()
	t.LaserBiasCurrent.PopulateDefaults()
	t.OutputPower.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the OpticalAmplifier_SupervisoryChannel struct, which is a YANG list entry.
func (t *OpticalAmplifier_SupervisoryChannel) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Interface == nil {
		return nil, fmt.Errorf("nil value for key Interface")
	}

	return map[string]interface{}{
		"interface": *t.Interface,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_SupervisoryChannel) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["OpticalAmplifier_SupervisoryChannel"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_SupervisoryChannel) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *OpticalAmplifier_SupervisoryChannel) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of OpticalAmplifier_SupervisoryChannel.
func (*OpticalAmplifier_SupervisoryChannel) ΛBelongingModule() string {
	return "openconfig-optical-amplifier"
}

// OpticalAmplifier_SupervisoryChannel_InputPower represents the /openconfig-optical-amplifier/optical-amplifier/supervisory-channels/supervisory-channel/state/input-power YANG schema element.
type OpticalAmplifier_SupervisoryChannel_InputPower struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-optical-amplifier"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-optical-amplifier"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-optical-amplifier"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-optical-amplifier"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-optical-amplifier"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-optical-amplifier"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-optical-amplifier"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that OpticalAmplifier_SupervisoryChannel_InputPower implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*OpticalAmplifier_SupervisoryChannel_InputPower) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the OpticalAmplifier_SupervisoryChannel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_InputPower) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the OpticalAmplifier_SupervisoryChannel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_InputPower) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the OpticalAmplifier_SupervisoryChannel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_InputPower) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the OpticalAmplifier_SupervisoryChannel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_InputPower) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the OpticalAmplifier_SupervisoryChannel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_InputPower) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the OpticalAmplifier_SupervisoryChannel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_InputPower) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the OpticalAmplifier_SupervisoryChannel_InputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_InputPower) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the OpticalAmplifier_SupervisoryChannel_InputPower
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *OpticalAmplifier_SupervisoryChannel_InputPower) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_SupervisoryChannel_InputPower) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["OpticalAmplifier_SupervisoryChannel_InputPower"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_SupervisoryChannel_InputPower) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *OpticalAmplifier_SupervisoryChannel_InputPower) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of OpticalAmplifier_SupervisoryChannel_InputPower.
func (*OpticalAmplifier_SupervisoryChannel_InputPower) ΛBelongingModule() string {
	return "openconfig-optical-amplifier"
}

// OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent represents the /openconfig-optical-amplifier/optical-amplifier/supervisory-channels/supervisory-channel/state/laser-bias-current YANG schema element.
type OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-optical-amplifier"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-optical-amplifier"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-optical-amplifier"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-optical-amplifier"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-optical-amplifier"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-optical-amplifier"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-optical-amplifier"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent.
func (*OpticalAmplifier_SupervisoryChannel_LaserBiasCurrent) ΛBelongingModule() string {
	return "openconfig-optical-amplifier"
}

// OpticalAmplifier_SupervisoryChannel_OutputPower represents the /openconfig-optical-amplifier/optical-amplifier/supervisory-channels/supervisory-channel/state/output-power YANG schema element.
type OpticalAmplifier_SupervisoryChannel_OutputPower struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-optical-amplifier"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-optical-amplifier"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-optical-amplifier"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-optical-amplifier"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-optical-amplifier"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-optical-amplifier"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-optical-amplifier"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that OpticalAmplifier_SupervisoryChannel_OutputPower implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*OpticalAmplifier_SupervisoryChannel_OutputPower) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the OpticalAmplifier_SupervisoryChannel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_OutputPower) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the OpticalAmplifier_SupervisoryChannel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_OutputPower) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the OpticalAmplifier_SupervisoryChannel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_OutputPower) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the OpticalAmplifier_SupervisoryChannel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_OutputPower) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the OpticalAmplifier_SupervisoryChannel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_OutputPower) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the OpticalAmplifier_SupervisoryChannel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_OutputPower) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the OpticalAmplifier_SupervisoryChannel_OutputPower
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *OpticalAmplifier_SupervisoryChannel_OutputPower) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the OpticalAmplifier_SupervisoryChannel_OutputPower
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *OpticalAmplifier_SupervisoryChannel_OutputPower) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_SupervisoryChannel_OutputPower) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["OpticalAmplifier_SupervisoryChannel_OutputPower"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *OpticalAmplifier_SupervisoryChannel_OutputPower) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *OpticalAmplifier_SupervisoryChannel_OutputPower) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of OpticalAmplifier_SupervisoryChannel_OutputPower.
func (*OpticalAmplifier_SupervisoryChannel_OutputPower) ΛBelongingModule() string {
	return "openconfig-optical-amplifier"
}

// RelayAgent represents the /openconfig-relay-agent/relay-agent YANG schema element.
type RelayAgent struct {
	ΛMetadata []ygot.Annotation  `path:"@" ygotAnnotation:"true"`
	Dhcp      *RelayAgent_Dhcp   `path:"dhcp" module:"openconfig-relay-agent"`
	ΛDhcp     []ygot.Annotation  `path:"@dhcp" ygotAnnotation:"true"`
	Dhcpv6    *RelayAgent_Dhcpv6 `path:"dhcpv6" module:"openconfig-relay-agent"`
	ΛDhcpv6   []ygot.Annotation  `path:"@dhcpv6" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RelayAgent implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RelayAgent) IsYANGGoStruct() {}

// GetOrCreateDhcp retrieves the value of the Dhcp field
// or returns the existing field if it already exists.
func (t *RelayAgent) GetOrCreateDhcp() *RelayAgent_Dhcp {
	if t.Dhcp != nil {
		return t.Dhcp
	}
	t.Dhcp = &RelayAgent_Dhcp{}
	return t.Dhcp
}

// GetOrCreateDhcpv6 retrieves the value of the Dhcpv6 field
// or returns the existing field if it already exists.
func (t *RelayAgent) GetOrCreateDhcpv6() *RelayAgent_Dhcpv6 {
	if t.Dhcpv6 != nil {
		return t.Dhcpv6
	}
	t.Dhcpv6 = &RelayAgent_Dhcpv6{}
	return t.Dhcpv6
}

// GetDhcp returns the value of the Dhcp struct pointer
// from RelayAgent. If the receiver or the field Dhcp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RelayAgent) GetDhcp() *RelayAgent_Dhcp {
	if t != nil && t.Dhcp != nil {
		return t.Dhcp
	}
	return nil
}

// GetDhcpv6 returns the value of the Dhcpv6 struct pointer
// from RelayAgent. If the receiver or the field Dhcpv6 is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RelayAgent) GetDhcpv6() *RelayAgent_Dhcpv6 {
	if t != nil && t.Dhcpv6 != nil {
		return t.Dhcpv6
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the RelayAgent
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RelayAgent) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Dhcp.PopulateDefaults()
	t.Dhcpv6.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RelayAgent"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RelayAgent) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of RelayAgent.
func (*RelayAgent) ΛBelongingModule() string {
	return "openconfig-relay-agent"
}

// RelayAgent_Dhcp represents the /openconfig-relay-agent/relay-agent/dhcp YANG schema element.
type RelayAgent_Dhcp struct {
	ΛMetadata               []ygot.Annotation                       `path:"@" ygotAnnotation:"true"`
	AgentInformationOption  *RelayAgent_Dhcp_AgentInformationOption `path:"agent-information-option" module:"openconfig-relay-agent"`
	ΛAgentInformationOption []ygot.Annotation                       `path:"@agent-information-option" ygotAnnotation:"true"`
	EnableRelayAgent        *bool                                   `path:"config/enable-relay-agent" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛEnableRelayAgent       []ygot.Annotation                       `path:"config/@enable-relay-agent" ygotAnnotation:"true"`
	Interface               map[string]*RelayAgent_Dhcp_Interface   `path:"interfaces/interface" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛInterface              []ygot.Annotation                       `path:"interfaces/@interface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RelayAgent_Dhcp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RelayAgent_Dhcp) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// RelayAgent_Dhcp struct. The keys of the list are populated from the input
// arguments.
func (t *RelayAgent_Dhcp) NewInterface(Id string) (*RelayAgent_Dhcp_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*RelayAgent_Dhcp_Interface)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &RelayAgent_Dhcp_Interface{
		Id: &Id,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the RelayAgent_Dhcp struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *RelayAgent_Dhcp) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.Id = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from RelayAgent_Dhcp.
//
// It initializes the field if not already initialized.
func (t *RelayAgent_Dhcp) GetOrCreateInterfaceMap() map[string]*RelayAgent_Dhcp_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*RelayAgent_Dhcp_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver RelayAgent_Dhcp. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *RelayAgent_Dhcp) GetOrCreateInterface(Id string) *RelayAgent_Dhcp_Interface {

	key := Id

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of RelayAgent_Dhcp. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *RelayAgent_Dhcp) GetInterface(Id string) *RelayAgent_Dhcp_Interface {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied RelayAgent_Dhcp_Interface struct to the
// list Interface of RelayAgent_Dhcp. If the key value(s) specified in
// the supplied RelayAgent_Dhcp_Interface already exist in the list, an error is
// returned.
func (t *RelayAgent_Dhcp) AppendInterface(v *RelayAgent_Dhcp_Interface) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*RelayAgent_Dhcp_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// GetOrCreateAgentInformationOption retrieves the value of the AgentInformationOption field
// or returns the existing field if it already exists.
func (t *RelayAgent_Dhcp) GetOrCreateAgentInformationOption() *RelayAgent_Dhcp_AgentInformationOption {
	if t.AgentInformationOption != nil {
		return t.AgentInformationOption
	}
	t.AgentInformationOption = &RelayAgent_Dhcp_AgentInformationOption{}
	return t.AgentInformationOption
}

// GetAgentInformationOption returns the value of the AgentInformationOption struct pointer
// from RelayAgent_Dhcp. If the receiver or the field AgentInformationOption is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RelayAgent_Dhcp) GetAgentInformationOption() *RelayAgent_Dhcp_AgentInformationOption {
	if t != nil && t.AgentInformationOption != nil {
		return t.AgentInformationOption
	}
	return nil
}

// GetEnableRelayAgent retrieves the value of the leaf EnableRelayAgent from the RelayAgent_Dhcp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EnableRelayAgent is set, it can
// safely use t.GetEnableRelayAgent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EnableRelayAgent == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp) GetEnableRelayAgent() bool {
	if t == nil || t.EnableRelayAgent == nil {
		return false
	}
	return *t.EnableRelayAgent
}

// PopulateDefaults recursively populates unset leaf fields in the RelayAgent_Dhcp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RelayAgent_Dhcp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.EnableRelayAgent == nil {
		var v bool = false
		t.EnableRelayAgent = &v
	}
	t.AgentInformationOption.PopulateDefaults()
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RelayAgent_Dhcp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RelayAgent_Dhcp) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of RelayAgent_Dhcp.
func (*RelayAgent_Dhcp) ΛBelongingModule() string {
	return "openconfig-relay-agent"
}

// RelayAgent_Dhcp_AgentInformationOption represents the /openconfig-relay-agent/relay-agent/dhcp/agent-information-option YANG schema element.
type RelayAgent_Dhcp_AgentInformationOption struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enable    *bool             `path:"config/enable" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛEnable   []ygot.Annotation `path:"config/@enable" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RelayAgent_Dhcp_AgentInformationOption implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RelayAgent_Dhcp_AgentInformationOption) IsYANGGoStruct() {}

// GetEnable retrieves the value of the leaf Enable from the RelayAgent_Dhcp_AgentInformationOption
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enable is set, it can
// safely use t.GetEnable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enable == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_AgentInformationOption) GetEnable() bool {
	if t == nil || t.Enable == nil {
		return false
	}
	return *t.Enable
}

// PopulateDefaults recursively populates unset leaf fields in the RelayAgent_Dhcp_AgentInformationOption
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RelayAgent_Dhcp_AgentInformationOption) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enable == nil {
		var v bool = false
		t.Enable = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcp_AgentInformationOption) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RelayAgent_Dhcp_AgentInformationOption"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcp_AgentInformationOption) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RelayAgent_Dhcp_AgentInformationOption) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RelayAgent_Dhcp_AgentInformationOption.
func (*RelayAgent_Dhcp_AgentInformationOption) ΛBelongingModule() string {
	return "openconfig-relay-agent"
}

// RelayAgent_Dhcp_Interface represents the /openconfig-relay-agent/relay-agent/dhcp/interfaces/interface YANG schema element.
type RelayAgent_Dhcp_Interface struct {
	ΛMetadata               []ygot.Annotation                                 `path:"@" ygotAnnotation:"true"`
	AgentInformationOption  *RelayAgent_Dhcp_Interface_AgentInformationOption `path:"agent-information-option" module:"openconfig-relay-agent"`
	ΛAgentInformationOption []ygot.Annotation                                 `path:"@agent-information-option" ygotAnnotation:"true"`
	Counters                *RelayAgent_Dhcp_Interface_Counters               `path:"state/counters" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛCounters               []ygot.Annotation                                 `path:"state/@counters" ygotAnnotation:"true"`
	Enable                  *bool                                             `path:"config/enable" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛEnable                 []ygot.Annotation                                 `path:"config/@enable" ygotAnnotation:"true"`
	HelperAddress           []string                                          `path:"config/helper-address" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛHelperAddress          []ygot.Annotation                                 `path:"config/@helper-address" ygotAnnotation:"true"`
	Id                      *string                                           `path:"config/id|id" module:"openconfig-relay-agent/openconfig-relay-agent|openconfig-relay-agent"`
	ΛId                     []ygot.Annotation                                 `path:"config/@id|@id" ygotAnnotation:"true"`
	InterfaceRef            *RelayAgent_Dhcp_Interface_InterfaceRef           `path:"interface-ref" module:"openconfig-relay-agent"`
	ΛInterfaceRef           []ygot.Annotation                                 `path:"@interface-ref" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RelayAgent_Dhcp_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RelayAgent_Dhcp_Interface) IsYANGGoStruct() {}

// GetOrCreateAgentInformationOption retrieves the value of the AgentInformationOption field
// or returns the existing field if it already exists.
func (t *RelayAgent_Dhcp_Interface) GetOrCreateAgentInformationOption() *RelayAgent_Dhcp_Interface_AgentInformationOption {
	if t.AgentInformationOption != nil {
		return t.AgentInformationOption
	}
	t.AgentInformationOption = &RelayAgent_Dhcp_Interface_AgentInformationOption{}
	return t.AgentInformationOption
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *RelayAgent_Dhcp_Interface) GetOrCreateCounters() *RelayAgent_Dhcp_Interface_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &RelayAgent_Dhcp_Interface_Counters{}
	return t.Counters
}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *RelayAgent_Dhcp_Interface) GetOrCreateInterfaceRef() *RelayAgent_Dhcp_Interface_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &RelayAgent_Dhcp_Interface_InterfaceRef{}
	return t.InterfaceRef
}

// GetAgentInformationOption returns the value of the AgentInformationOption struct pointer
// from RelayAgent_Dhcp_Interface. If the receiver or the field AgentInformationOption is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RelayAgent_Dhcp_Interface) GetAgentInformationOption() *RelayAgent_Dhcp_Interface_AgentInformationOption {
	if t != nil && t.AgentInformationOption != nil {
		return t.AgentInformationOption
	}
	return nil
}

// GetCounters returns the value of the Counters struct pointer
// from RelayAgent_Dhcp_Interface. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RelayAgent_Dhcp_Interface) GetCounters() *RelayAgent_Dhcp_Interface_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from RelayAgent_Dhcp_Interface. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RelayAgent_Dhcp_Interface) GetInterfaceRef() *RelayAgent_Dhcp_Interface_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetEnable retrieves the value of the leaf Enable from the RelayAgent_Dhcp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enable is set, it can
// safely use t.GetEnable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enable == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface) GetEnable() bool {
	if t == nil || t.Enable == nil {
		return false
	}
	return *t.Enable
}

// GetHelperAddress retrieves the value of the leaf HelperAddress from the RelayAgent_Dhcp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelperAddress is set, it can
// safely use t.GetHelperAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelperAddress == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface) GetHelperAddress() []string {
	if t == nil || t.HelperAddress == nil {
		return nil
	}
	return t.HelperAddress
}

// GetId retrieves the value of the leaf Id from the RelayAgent_Dhcp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface) GetId() string {
	if t == nil || t.Id == nil {
		return ""
	}
	return *t.Id
}

// PopulateDefaults recursively populates unset leaf fields in the RelayAgent_Dhcp_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RelayAgent_Dhcp_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AgentInformationOption.PopulateDefaults()
	t.Counters.PopulateDefaults()
	t.InterfaceRef.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the RelayAgent_Dhcp_Interface struct, which is a YANG list entry.
func (t *RelayAgent_Dhcp_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcp_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RelayAgent_Dhcp_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcp_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RelayAgent_Dhcp_Interface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of RelayAgent_Dhcp_Interface.
func (*RelayAgent_Dhcp_Interface) ΛBelongingModule() string {
	return "openconfig-relay-agent"
}

// RelayAgent_Dhcp_Interface_AgentInformationOption represents the /openconfig-relay-agent/relay-agent/dhcp/interfaces/interface/agent-information-option YANG schema element.
type RelayAgent_Dhcp_Interface_AgentInformationOption struct {
	ΛMetadata      []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	CircuitId      *string           `path:"config/circuit-id" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛCircuitId     []ygot.Annotation `path:"config/@circuit-id" ygotAnnotation:"true"`
	Enable         *bool             `path:"config/enable" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛEnable        []ygot.Annotation `path:"config/@enable" ygotAnnotation:"true"`
	RemoteId       *string           `path:"config/remote-id" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛRemoteId      []ygot.Annotation `path:"config/@remote-id" ygotAnnotation:"true"`
	SentCircuitId  *string           `path:"state/sent-circuit-id" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛSentCircuitId []ygot.Annotation `path:"state/@sent-circuit-id" ygotAnnotation:"true"`
	SentRemoteId   *string           `path:"state/sent-remote-id" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛSentRemoteId  []ygot.Annotation `path:"state/@sent-remote-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RelayAgent_Dhcp_Interface_AgentInformationOption implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RelayAgent_Dhcp_Interface_AgentInformationOption) IsYANGGoStruct() {}

// GetCircuitId retrieves the value of the leaf CircuitId from the RelayAgent_Dhcp_Interface_AgentInformationOption
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CircuitId is set, it can
// safely use t.GetCircuitId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CircuitId == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_AgentInformationOption) GetCircuitId() string {
	if t == nil || t.CircuitId == nil {
		return ""
	}
	return *t.CircuitId
}

// GetEnable retrieves the value of the leaf Enable from the RelayAgent_Dhcp_Interface_AgentInformationOption
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enable is set, it can
// safely use t.GetEnable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enable == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_AgentInformationOption) GetEnable() bool {
	if t == nil || t.Enable == nil {
		return false
	}
	return *t.Enable
}

// GetRemoteId retrieves the value of the leaf RemoteId from the RelayAgent_Dhcp_Interface_AgentInformationOption
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteId is set, it can
// safely use t.GetRemoteId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteId == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_AgentInformationOption) GetRemoteId() string {
	if t == nil || t.RemoteId == nil {
		return ""
	}
	return *t.RemoteId
}

// GetSentCircuitId retrieves the value of the leaf SentCircuitId from the RelayAgent_Dhcp_Interface_AgentInformationOption
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SentCircuitId is set, it can
// safely use t.GetSentCircuitId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SentCircuitId == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_AgentInformationOption) GetSentCircuitId() string {
	if t == nil || t.SentCircuitId == nil {
		return ""
	}
	return *t.SentCircuitId
}

// GetSentRemoteId retrieves the value of the leaf SentRemoteId from the RelayAgent_Dhcp_Interface_AgentInformationOption
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SentRemoteId is set, it can
// safely use t.GetSentRemoteId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SentRemoteId == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_AgentInformationOption) GetSentRemoteId() string {
	if t == nil || t.SentRemoteId == nil {
		return ""
	}
	return *t.SentRemoteId
}

// PopulateDefaults recursively populates unset leaf fields in the RelayAgent_Dhcp_Interface_AgentInformationOption
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RelayAgent_Dhcp_Interface_AgentInformationOption) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enable == nil {
		var v bool = false
		t.Enable = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcp_Interface_AgentInformationOption) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RelayAgent_Dhcp_Interface_AgentInformationOption"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcp_Interface_AgentInformationOption) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RelayAgent_Dhcp_Interface_AgentInformationOption) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RelayAgent_Dhcp_Interface_AgentInformationOption.
func (*RelayAgent_Dhcp_Interface_AgentInformationOption) ΛBelongingModule() string {
	return "openconfig-relay-agent"
}

// RelayAgent_Dhcp_Interface_Counters represents the /openconfig-relay-agent/relay-agent/dhcp/interfaces/interface/state/counters YANG schema element.
type RelayAgent_Dhcp_Interface_Counters struct {
	ΛMetadata             []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	BootreplySent         *uint64           `path:"bootreply-sent" module:"openconfig-relay-agent"`
	ΛBootreplySent        []ygot.Annotation `path:"@bootreply-sent" ygotAnnotation:"true"`
	BootrequestReceived   *uint64           `path:"bootrequest-received" module:"openconfig-relay-agent"`
	ΛBootrequestReceived  []ygot.Annotation `path:"@bootrequest-received" ygotAnnotation:"true"`
	BootrequestSent       *uint64           `path:"bootrequest-sent" module:"openconfig-relay-agent"`
	ΛBootrequestSent      []ygot.Annotation `path:"@bootrequest-sent" ygotAnnotation:"true"`
	DhcpAckSent           *uint64           `path:"dhcp-ack-sent" module:"openconfig-relay-agent"`
	ΛDhcpAckSent          []ygot.Annotation `path:"@dhcp-ack-sent" ygotAnnotation:"true"`
	DhcpDeclineReceived   *uint64           `path:"dhcp-decline-received" module:"openconfig-relay-agent"`
	ΛDhcpDeclineReceived  []ygot.Annotation `path:"@dhcp-decline-received" ygotAnnotation:"true"`
	DhcpDiscoverReceived  *uint64           `path:"dhcp-discover-received" module:"openconfig-relay-agent"`
	ΛDhcpDiscoverReceived []ygot.Annotation `path:"@dhcp-discover-received" ygotAnnotation:"true"`
	DhcpInformReceived    *uint64           `path:"dhcp-inform-received" module:"openconfig-relay-agent"`
	ΛDhcpInformReceived   []ygot.Annotation `path:"@dhcp-inform-received" ygotAnnotation:"true"`
	DhcpNackSent          *uint64           `path:"dhcp-nack-sent" module:"openconfig-relay-agent"`
	ΛDhcpNackSent         []ygot.Annotation `path:"@dhcp-nack-sent" ygotAnnotation:"true"`
	DhcpOfferSent         *uint64           `path:"dhcp-offer-sent" module:"openconfig-relay-agent"`
	ΛDhcpOfferSent        []ygot.Annotation `path:"@dhcp-offer-sent" ygotAnnotation:"true"`
	DhcpReleaseReceived   *uint64           `path:"dhcp-release-received" module:"openconfig-relay-agent"`
	ΛDhcpReleaseReceived  []ygot.Annotation `path:"@dhcp-release-received" ygotAnnotation:"true"`
	DhcpRequestReceived   *uint64           `path:"dhcp-request-received" module:"openconfig-relay-agent"`
	ΛDhcpRequestReceived  []ygot.Annotation `path:"@dhcp-request-received" ygotAnnotation:"true"`
	InvalidOpcode         *uint64           `path:"invalid-opcode" module:"openconfig-relay-agent"`
	ΛInvalidOpcode        []ygot.Annotation `path:"@invalid-opcode" ygotAnnotation:"true"`
	InvalidOptions        *uint64           `path:"invalid-options" module:"openconfig-relay-agent"`
	ΛInvalidOptions       []ygot.Annotation `path:"@invalid-options" ygotAnnotation:"true"`
	TotalDropped          *uint64           `path:"total-dropped" module:"openconfig-relay-agent"`
	ΛTotalDropped         []ygot.Annotation `path:"@total-dropped" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RelayAgent_Dhcp_Interface_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RelayAgent_Dhcp_Interface_Counters) IsYANGGoStruct() {}

// GetBootreplySent retrieves the value of the leaf BootreplySent from the RelayAgent_Dhcp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BootreplySent is set, it can
// safely use t.GetBootreplySent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BootreplySent == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_Counters) GetBootreplySent() uint64 {
	if t == nil || t.BootreplySent == nil {
		return 0
	}
	return *t.BootreplySent
}

// GetBootrequestReceived retrieves the value of the leaf BootrequestReceived from the RelayAgent_Dhcp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BootrequestReceived is set, it can
// safely use t.GetBootrequestReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BootrequestReceived == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_Counters) GetBootrequestReceived() uint64 {
	if t == nil || t.BootrequestReceived == nil {
		return 0
	}
	return *t.BootrequestReceived
}

// GetBootrequestSent retrieves the value of the leaf BootrequestSent from the RelayAgent_Dhcp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BootrequestSent is set, it can
// safely use t.GetBootrequestSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BootrequestSent == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_Counters) GetBootrequestSent() uint64 {
	if t == nil || t.BootrequestSent == nil {
		return 0
	}
	return *t.BootrequestSent
}

// GetDhcpAckSent retrieves the value of the leaf DhcpAckSent from the RelayAgent_Dhcp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DhcpAckSent is set, it can
// safely use t.GetDhcpAckSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DhcpAckSent == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_Counters) GetDhcpAckSent() uint64 {
	if t == nil || t.DhcpAckSent == nil {
		return 0
	}
	return *t.DhcpAckSent
}

// GetDhcpDeclineReceived retrieves the value of the leaf DhcpDeclineReceived from the RelayAgent_Dhcp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DhcpDeclineReceived is set, it can
// safely use t.GetDhcpDeclineReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DhcpDeclineReceived == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_Counters) GetDhcpDeclineReceived() uint64 {
	if t == nil || t.DhcpDeclineReceived == nil {
		return 0
	}
	return *t.DhcpDeclineReceived
}

// GetDhcpDiscoverReceived retrieves the value of the leaf DhcpDiscoverReceived from the RelayAgent_Dhcp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DhcpDiscoverReceived is set, it can
// safely use t.GetDhcpDiscoverReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DhcpDiscoverReceived == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_Counters) GetDhcpDiscoverReceived() uint64 {
	if t == nil || t.DhcpDiscoverReceived == nil {
		return 0
	}
	return *t.DhcpDiscoverReceived
}

// GetDhcpInformReceived retrieves the value of the leaf DhcpInformReceived from the RelayAgent_Dhcp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DhcpInformReceived is set, it can
// safely use t.GetDhcpInformReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DhcpInformReceived == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_Counters) GetDhcpInformReceived() uint64 {
	if t == nil || t.DhcpInformReceived == nil {
		return 0
	}
	return *t.DhcpInformReceived
}

// GetDhcpNackSent retrieves the value of the leaf DhcpNackSent from the RelayAgent_Dhcp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DhcpNackSent is set, it can
// safely use t.GetDhcpNackSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DhcpNackSent == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_Counters) GetDhcpNackSent() uint64 {
	if t == nil || t.DhcpNackSent == nil {
		return 0
	}
	return *t.DhcpNackSent
}

// GetDhcpOfferSent retrieves the value of the leaf DhcpOfferSent from the RelayAgent_Dhcp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DhcpOfferSent is set, it can
// safely use t.GetDhcpOfferSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DhcpOfferSent == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_Counters) GetDhcpOfferSent() uint64 {
	if t == nil || t.DhcpOfferSent == nil {
		return 0
	}
	return *t.DhcpOfferSent
}

// GetDhcpReleaseReceived retrieves the value of the leaf DhcpReleaseReceived from the RelayAgent_Dhcp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DhcpReleaseReceived is set, it can
// safely use t.GetDhcpReleaseReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DhcpReleaseReceived == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_Counters) GetDhcpReleaseReceived() uint64 {
	if t == nil || t.DhcpReleaseReceived == nil {
		return 0
	}
	return *t.DhcpReleaseReceived
}

// GetDhcpRequestReceived retrieves the value of the leaf DhcpRequestReceived from the RelayAgent_Dhcp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DhcpRequestReceived is set, it can
// safely use t.GetDhcpRequestReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DhcpRequestReceived == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_Counters) GetDhcpRequestReceived() uint64 {
	if t == nil || t.DhcpRequestReceived == nil {
		return 0
	}
	return *t.DhcpRequestReceived
}

// GetInvalidOpcode retrieves the value of the leaf InvalidOpcode from the RelayAgent_Dhcp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidOpcode is set, it can
// safely use t.GetInvalidOpcode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidOpcode == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_Counters) GetInvalidOpcode() uint64 {
	if t == nil || t.InvalidOpcode == nil {
		return 0
	}
	return *t.InvalidOpcode
}

// GetInvalidOptions retrieves the value of the leaf InvalidOptions from the RelayAgent_Dhcp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidOptions is set, it can
// safely use t.GetInvalidOptions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidOptions == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_Counters) GetInvalidOptions() uint64 {
	if t == nil || t.InvalidOptions == nil {
		return 0
	}
	return *t.InvalidOptions
}

// GetTotalDropped retrieves the value of the leaf TotalDropped from the RelayAgent_Dhcp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalDropped is set, it can
// safely use t.GetTotalDropped() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalDropped == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_Counters) GetTotalDropped() uint64 {
	if t == nil || t.TotalDropped == nil {
		return 0
	}
	return *t.TotalDropped
}

// PopulateDefaults recursively populates unset leaf fields in the RelayAgent_Dhcp_Interface_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RelayAgent_Dhcp_Interface_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcp_Interface_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RelayAgent_Dhcp_Interface_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcp_Interface_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RelayAgent_Dhcp_Interface_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RelayAgent_Dhcp_Interface_Counters.
func (*RelayAgent_Dhcp_Interface_Counters) ΛBelongingModule() string {
	return "openconfig-relay-agent"
}

// RelayAgent_Dhcp_Interface_InterfaceRef represents the /openconfig-relay-agent/relay-agent/dhcp/interfaces/interface/interface-ref YANG schema element.
type RelayAgent_Dhcp_Interface_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RelayAgent_Dhcp_Interface_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RelayAgent_Dhcp_Interface_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the RelayAgent_Dhcp_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the RelayAgent_Dhcp_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcp_Interface_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the RelayAgent_Dhcp_Interface_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RelayAgent_Dhcp_Interface_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcp_Interface_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RelayAgent_Dhcp_Interface_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcp_Interface_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RelayAgent_Dhcp_Interface_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RelayAgent_Dhcp_Interface_InterfaceRef.
func (*RelayAgent_Dhcp_Interface_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-relay-agent"
}

// RelayAgent_Dhcpv6 represents the /openconfig-relay-agent/relay-agent/dhcpv6 YANG schema element.
type RelayAgent_Dhcpv6 struct {
	ΛMetadata         []ygot.Annotation                       `path:"@" ygotAnnotation:"true"`
	EnableRelayAgent  *bool                                   `path:"config/enable-relay-agent" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛEnableRelayAgent []ygot.Annotation                       `path:"config/@enable-relay-agent" ygotAnnotation:"true"`
	Interface         map[string]*RelayAgent_Dhcpv6_Interface `path:"interfaces/interface" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛInterface        []ygot.Annotation                       `path:"interfaces/@interface" ygotAnnotation:"true"`
	Options           *RelayAgent_Dhcpv6_Options              `path:"options" module:"openconfig-relay-agent"`
	ΛOptions          []ygot.Annotation                       `path:"@options" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RelayAgent_Dhcpv6 implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RelayAgent_Dhcpv6) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// RelayAgent_Dhcpv6 struct. The keys of the list are populated from the input
// arguments.
func (t *RelayAgent_Dhcpv6) NewInterface(Id string) (*RelayAgent_Dhcpv6_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*RelayAgent_Dhcpv6_Interface)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &RelayAgent_Dhcpv6_Interface{
		Id: &Id,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the RelayAgent_Dhcpv6 struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *RelayAgent_Dhcpv6) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.Id = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from RelayAgent_Dhcpv6.
//
// It initializes the field if not already initialized.
func (t *RelayAgent_Dhcpv6) GetOrCreateInterfaceMap() map[string]*RelayAgent_Dhcpv6_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*RelayAgent_Dhcpv6_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver RelayAgent_Dhcpv6. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *RelayAgent_Dhcpv6) GetOrCreateInterface(Id string) *RelayAgent_Dhcpv6_Interface {

	key := Id

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of RelayAgent_Dhcpv6. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *RelayAgent_Dhcpv6) GetInterface(Id string) *RelayAgent_Dhcpv6_Interface {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied RelayAgent_Dhcpv6_Interface struct to the
// list Interface of RelayAgent_Dhcpv6. If the key value(s) specified in
// the supplied RelayAgent_Dhcpv6_Interface already exist in the list, an error is
// returned.
func (t *RelayAgent_Dhcpv6) AppendInterface(v *RelayAgent_Dhcpv6_Interface) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*RelayAgent_Dhcpv6_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// GetOrCreateOptions retrieves the value of the Options field
// or returns the existing field if it already exists.
func (t *RelayAgent_Dhcpv6) GetOrCreateOptions() *RelayAgent_Dhcpv6_Options {
	if t.Options != nil {
		return t.Options
	}
	t.Options = &RelayAgent_Dhcpv6_Options{}
	return t.Options
}

// GetOptions returns the value of the Options struct pointer
// from RelayAgent_Dhcpv6. If the receiver or the field Options is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RelayAgent_Dhcpv6) GetOptions() *RelayAgent_Dhcpv6_Options {
	if t != nil && t.Options != nil {
		return t.Options
	}
	return nil
}

// GetEnableRelayAgent retrieves the value of the leaf EnableRelayAgent from the RelayAgent_Dhcpv6
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EnableRelayAgent is set, it can
// safely use t.GetEnableRelayAgent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EnableRelayAgent == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6) GetEnableRelayAgent() bool {
	if t == nil || t.EnableRelayAgent == nil {
		return false
	}
	return *t.EnableRelayAgent
}

// PopulateDefaults recursively populates unset leaf fields in the RelayAgent_Dhcpv6
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RelayAgent_Dhcpv6) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.EnableRelayAgent == nil {
		var v bool = false
		t.EnableRelayAgent = &v
	}
	t.Options.PopulateDefaults()
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcpv6) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RelayAgent_Dhcpv6"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcpv6) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RelayAgent_Dhcpv6) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of RelayAgent_Dhcpv6.
func (*RelayAgent_Dhcpv6) ΛBelongingModule() string {
	return "openconfig-relay-agent"
}

// RelayAgent_Dhcpv6_Interface represents the /openconfig-relay-agent/relay-agent/dhcpv6/interfaces/interface YANG schema element.
type RelayAgent_Dhcpv6_Interface struct {
	ΛMetadata      []ygot.Annotation                         `path:"@" ygotAnnotation:"true"`
	Counters       *RelayAgent_Dhcpv6_Interface_Counters     `path:"state/counters" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛCounters      []ygot.Annotation                         `path:"state/@counters" ygotAnnotation:"true"`
	Enable         *bool                                     `path:"config/enable" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛEnable        []ygot.Annotation                         `path:"config/@enable" ygotAnnotation:"true"`
	HelperAddress  []string                                  `path:"config/helper-address" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛHelperAddress []ygot.Annotation                         `path:"config/@helper-address" ygotAnnotation:"true"`
	Id             *string                                   `path:"config/id|id" module:"openconfig-relay-agent/openconfig-relay-agent|openconfig-relay-agent"`
	ΛId            []ygot.Annotation                         `path:"config/@id|@id" ygotAnnotation:"true"`
	InterfaceRef   *RelayAgent_Dhcpv6_Interface_InterfaceRef `path:"interface-ref" module:"openconfig-relay-agent"`
	ΛInterfaceRef  []ygot.Annotation                         `path:"@interface-ref" ygotAnnotation:"true"`
	Options        *RelayAgent_Dhcpv6_Interface_Options      `path:"options" module:"openconfig-relay-agent"`
	ΛOptions       []ygot.Annotation                         `path:"@options" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RelayAgent_Dhcpv6_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RelayAgent_Dhcpv6_Interface) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *RelayAgent_Dhcpv6_Interface) GetOrCreateCounters() *RelayAgent_Dhcpv6_Interface_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &RelayAgent_Dhcpv6_Interface_Counters{}
	return t.Counters
}

// GetOrCreateInterfaceRef retrieves the value of the InterfaceRef field
// or returns the existing field if it already exists.
func (t *RelayAgent_Dhcpv6_Interface) GetOrCreateInterfaceRef() *RelayAgent_Dhcpv6_Interface_InterfaceRef {
	if t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	t.InterfaceRef = &RelayAgent_Dhcpv6_Interface_InterfaceRef{}
	return t.InterfaceRef
}

// GetOrCreateOptions retrieves the value of the Options field
// or returns the existing field if it already exists.
func (t *RelayAgent_Dhcpv6_Interface) GetOrCreateOptions() *RelayAgent_Dhcpv6_Interface_Options {
	if t.Options != nil {
		return t.Options
	}
	t.Options = &RelayAgent_Dhcpv6_Interface_Options{}
	return t.Options
}

// GetCounters returns the value of the Counters struct pointer
// from RelayAgent_Dhcpv6_Interface. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RelayAgent_Dhcpv6_Interface) GetCounters() *RelayAgent_Dhcpv6_Interface_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetInterfaceRef returns the value of the InterfaceRef struct pointer
// from RelayAgent_Dhcpv6_Interface. If the receiver or the field InterfaceRef is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RelayAgent_Dhcpv6_Interface) GetInterfaceRef() *RelayAgent_Dhcpv6_Interface_InterfaceRef {
	if t != nil && t.InterfaceRef != nil {
		return t.InterfaceRef
	}
	return nil
}

// GetOptions returns the value of the Options struct pointer
// from RelayAgent_Dhcpv6_Interface. If the receiver or the field Options is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RelayAgent_Dhcpv6_Interface) GetOptions() *RelayAgent_Dhcpv6_Interface_Options {
	if t != nil && t.Options != nil {
		return t.Options
	}
	return nil
}

// GetEnable retrieves the value of the leaf Enable from the RelayAgent_Dhcpv6_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enable is set, it can
// safely use t.GetEnable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enable == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface) GetEnable() bool {
	if t == nil || t.Enable == nil {
		return false
	}
	return *t.Enable
}

// GetHelperAddress retrieves the value of the leaf HelperAddress from the RelayAgent_Dhcpv6_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelperAddress is set, it can
// safely use t.GetHelperAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelperAddress == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface) GetHelperAddress() []string {
	if t == nil || t.HelperAddress == nil {
		return nil
	}
	return t.HelperAddress
}

// GetId retrieves the value of the leaf Id from the RelayAgent_Dhcpv6_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface) GetId() string {
	if t == nil || t.Id == nil {
		return ""
	}
	return *t.Id
}

// PopulateDefaults recursively populates unset leaf fields in the RelayAgent_Dhcpv6_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RelayAgent_Dhcpv6_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Counters.PopulateDefaults()
	t.InterfaceRef.PopulateDefaults()
	t.Options.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the RelayAgent_Dhcpv6_Interface struct, which is a YANG list entry.
func (t *RelayAgent_Dhcpv6_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcpv6_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RelayAgent_Dhcpv6_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcpv6_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RelayAgent_Dhcpv6_Interface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of RelayAgent_Dhcpv6_Interface.
func (*RelayAgent_Dhcpv6_Interface) ΛBelongingModule() string {
	return "openconfig-relay-agent"
}

// RelayAgent_Dhcpv6_Interface_Counters represents the /openconfig-relay-agent/relay-agent/dhcpv6/interfaces/interface/state/counters YANG schema element.
type RelayAgent_Dhcpv6_Interface_Counters struct {
	ΛMetadata                  []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Dhcpv6AdverstiseSent       *uint64           `path:"dhcpv6-adverstise-sent" module:"openconfig-relay-agent"`
	ΛDhcpv6AdverstiseSent      []ygot.Annotation `path:"@dhcpv6-adverstise-sent" ygotAnnotation:"true"`
	Dhcpv6ConfirmReceived      *uint64           `path:"dhcpv6-confirm-received" module:"openconfig-relay-agent"`
	ΛDhcpv6ConfirmReceived     []ygot.Annotation `path:"@dhcpv6-confirm-received" ygotAnnotation:"true"`
	Dhcpv6DeclineReceived      *uint64           `path:"dhcpv6-decline-received" module:"openconfig-relay-agent"`
	ΛDhcpv6DeclineReceived     []ygot.Annotation `path:"@dhcpv6-decline-received" ygotAnnotation:"true"`
	Dhcpv6InfoRequestReceived  *uint64           `path:"dhcpv6-info-request-received" module:"openconfig-relay-agent"`
	ΛDhcpv6InfoRequestReceived []ygot.Annotation `path:"@dhcpv6-info-request-received" ygotAnnotation:"true"`
	Dhcpv6RebindReceived       *uint64           `path:"dhcpv6-rebind-received" module:"openconfig-relay-agent"`
	ΛDhcpv6RebindReceived      []ygot.Annotation `path:"@dhcpv6-rebind-received" ygotAnnotation:"true"`
	Dhcpv6ReconfigureSent      *uint64           `path:"dhcpv6-reconfigure-sent" module:"openconfig-relay-agent"`
	ΛDhcpv6ReconfigureSent     []ygot.Annotation `path:"@dhcpv6-reconfigure-sent" ygotAnnotation:"true"`
	Dhcpv6RelayForwSent        *uint64           `path:"dhcpv6-relay-forw-sent" module:"openconfig-relay-agent"`
	ΛDhcpv6RelayForwSent       []ygot.Annotation `path:"@dhcpv6-relay-forw-sent" ygotAnnotation:"true"`
	Dhcpv6RelayReplyReceived   *uint64           `path:"dhcpv6-relay-reply-received" module:"openconfig-relay-agent"`
	ΛDhcpv6RelayReplyReceived  []ygot.Annotation `path:"@dhcpv6-relay-reply-received" ygotAnnotation:"true"`
	Dhcpv6ReleaseReceived      *uint64           `path:"dhcpv6-release-received" module:"openconfig-relay-agent"`
	ΛDhcpv6ReleaseReceived     []ygot.Annotation `path:"@dhcpv6-release-received" ygotAnnotation:"true"`
	Dhcpv6ReplySent            *uint64           `path:"dhcpv6-reply-sent" module:"openconfig-relay-agent"`
	ΛDhcpv6ReplySent           []ygot.Annotation `path:"@dhcpv6-reply-sent" ygotAnnotation:"true"`
	Dhcpv6RequestReceived      *uint64           `path:"dhcpv6-request-received" module:"openconfig-relay-agent"`
	ΛDhcpv6RequestReceived     []ygot.Annotation `path:"@dhcpv6-request-received" ygotAnnotation:"true"`
	Dhcpv6SolicitReceived      *uint64           `path:"dhcpv6-solicit-received" module:"openconfig-relay-agent"`
	ΛDhcpv6SolicitReceived     []ygot.Annotation `path:"@dhcpv6-solicit-received" ygotAnnotation:"true"`
	InvalidOpcode              *uint64           `path:"invalid-opcode" module:"openconfig-relay-agent"`
	ΛInvalidOpcode             []ygot.Annotation `path:"@invalid-opcode" ygotAnnotation:"true"`
	InvalidOptions             *uint64           `path:"invalid-options" module:"openconfig-relay-agent"`
	ΛInvalidOptions            []ygot.Annotation `path:"@invalid-options" ygotAnnotation:"true"`
	TotalDropped               *uint64           `path:"total-dropped" module:"openconfig-relay-agent"`
	ΛTotalDropped              []ygot.Annotation `path:"@total-dropped" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RelayAgent_Dhcpv6_Interface_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RelayAgent_Dhcpv6_Interface_Counters) IsYANGGoStruct() {}

// GetDhcpv6AdverstiseSent retrieves the value of the leaf Dhcpv6AdverstiseSent from the RelayAgent_Dhcpv6_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dhcpv6AdverstiseSent is set, it can
// safely use t.GetDhcpv6AdverstiseSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dhcpv6AdverstiseSent == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Counters) GetDhcpv6AdverstiseSent() uint64 {
	if t == nil || t.Dhcpv6AdverstiseSent == nil {
		return 0
	}
	return *t.Dhcpv6AdverstiseSent
}

// GetDhcpv6ConfirmReceived retrieves the value of the leaf Dhcpv6ConfirmReceived from the RelayAgent_Dhcpv6_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dhcpv6ConfirmReceived is set, it can
// safely use t.GetDhcpv6ConfirmReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dhcpv6ConfirmReceived == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Counters) GetDhcpv6ConfirmReceived() uint64 {
	if t == nil || t.Dhcpv6ConfirmReceived == nil {
		return 0
	}
	return *t.Dhcpv6ConfirmReceived
}

// GetDhcpv6DeclineReceived retrieves the value of the leaf Dhcpv6DeclineReceived from the RelayAgent_Dhcpv6_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dhcpv6DeclineReceived is set, it can
// safely use t.GetDhcpv6DeclineReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dhcpv6DeclineReceived == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Counters) GetDhcpv6DeclineReceived() uint64 {
	if t == nil || t.Dhcpv6DeclineReceived == nil {
		return 0
	}
	return *t.Dhcpv6DeclineReceived
}

// GetDhcpv6InfoRequestReceived retrieves the value of the leaf Dhcpv6InfoRequestReceived from the RelayAgent_Dhcpv6_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dhcpv6InfoRequestReceived is set, it can
// safely use t.GetDhcpv6InfoRequestReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dhcpv6InfoRequestReceived == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Counters) GetDhcpv6InfoRequestReceived() uint64 {
	if t == nil || t.Dhcpv6InfoRequestReceived == nil {
		return 0
	}
	return *t.Dhcpv6InfoRequestReceived
}

// GetDhcpv6RebindReceived retrieves the value of the leaf Dhcpv6RebindReceived from the RelayAgent_Dhcpv6_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dhcpv6RebindReceived is set, it can
// safely use t.GetDhcpv6RebindReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dhcpv6RebindReceived == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Counters) GetDhcpv6RebindReceived() uint64 {
	if t == nil || t.Dhcpv6RebindReceived == nil {
		return 0
	}
	return *t.Dhcpv6RebindReceived
}

// GetDhcpv6ReconfigureSent retrieves the value of the leaf Dhcpv6ReconfigureSent from the RelayAgent_Dhcpv6_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dhcpv6ReconfigureSent is set, it can
// safely use t.GetDhcpv6ReconfigureSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dhcpv6ReconfigureSent == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Counters) GetDhcpv6ReconfigureSent() uint64 {
	if t == nil || t.Dhcpv6ReconfigureSent == nil {
		return 0
	}
	return *t.Dhcpv6ReconfigureSent
}

// GetDhcpv6RelayForwSent retrieves the value of the leaf Dhcpv6RelayForwSent from the RelayAgent_Dhcpv6_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dhcpv6RelayForwSent is set, it can
// safely use t.GetDhcpv6RelayForwSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dhcpv6RelayForwSent == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Counters) GetDhcpv6RelayForwSent() uint64 {
	if t == nil || t.Dhcpv6RelayForwSent == nil {
		return 0
	}
	return *t.Dhcpv6RelayForwSent
}

// GetDhcpv6RelayReplyReceived retrieves the value of the leaf Dhcpv6RelayReplyReceived from the RelayAgent_Dhcpv6_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dhcpv6RelayReplyReceived is set, it can
// safely use t.GetDhcpv6RelayReplyReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dhcpv6RelayReplyReceived == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Counters) GetDhcpv6RelayReplyReceived() uint64 {
	if t == nil || t.Dhcpv6RelayReplyReceived == nil {
		return 0
	}
	return *t.Dhcpv6RelayReplyReceived
}

// GetDhcpv6ReleaseReceived retrieves the value of the leaf Dhcpv6ReleaseReceived from the RelayAgent_Dhcpv6_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dhcpv6ReleaseReceived is set, it can
// safely use t.GetDhcpv6ReleaseReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dhcpv6ReleaseReceived == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Counters) GetDhcpv6ReleaseReceived() uint64 {
	if t == nil || t.Dhcpv6ReleaseReceived == nil {
		return 0
	}
	return *t.Dhcpv6ReleaseReceived
}

// GetDhcpv6ReplySent retrieves the value of the leaf Dhcpv6ReplySent from the RelayAgent_Dhcpv6_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dhcpv6ReplySent is set, it can
// safely use t.GetDhcpv6ReplySent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dhcpv6ReplySent == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Counters) GetDhcpv6ReplySent() uint64 {
	if t == nil || t.Dhcpv6ReplySent == nil {
		return 0
	}
	return *t.Dhcpv6ReplySent
}

// GetDhcpv6RequestReceived retrieves the value of the leaf Dhcpv6RequestReceived from the RelayAgent_Dhcpv6_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dhcpv6RequestReceived is set, it can
// safely use t.GetDhcpv6RequestReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dhcpv6RequestReceived == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Counters) GetDhcpv6RequestReceived() uint64 {
	if t == nil || t.Dhcpv6RequestReceived == nil {
		return 0
	}
	return *t.Dhcpv6RequestReceived
}

// GetDhcpv6SolicitReceived retrieves the value of the leaf Dhcpv6SolicitReceived from the RelayAgent_Dhcpv6_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Dhcpv6SolicitReceived is set, it can
// safely use t.GetDhcpv6SolicitReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Dhcpv6SolicitReceived == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Counters) GetDhcpv6SolicitReceived() uint64 {
	if t == nil || t.Dhcpv6SolicitReceived == nil {
		return 0
	}
	return *t.Dhcpv6SolicitReceived
}

// GetInvalidOpcode retrieves the value of the leaf InvalidOpcode from the RelayAgent_Dhcpv6_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidOpcode is set, it can
// safely use t.GetInvalidOpcode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidOpcode == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Counters) GetInvalidOpcode() uint64 {
	if t == nil || t.InvalidOpcode == nil {
		return 0
	}
	return *t.InvalidOpcode
}

// GetInvalidOptions retrieves the value of the leaf InvalidOptions from the RelayAgent_Dhcpv6_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InvalidOptions is set, it can
// safely use t.GetInvalidOptions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InvalidOptions == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Counters) GetInvalidOptions() uint64 {
	if t == nil || t.InvalidOptions == nil {
		return 0
	}
	return *t.InvalidOptions
}

// GetTotalDropped retrieves the value of the leaf TotalDropped from the RelayAgent_Dhcpv6_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalDropped is set, it can
// safely use t.GetTotalDropped() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalDropped == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Counters) GetTotalDropped() uint64 {
	if t == nil || t.TotalDropped == nil {
		return 0
	}
	return *t.TotalDropped
}

// PopulateDefaults recursively populates unset leaf fields in the RelayAgent_Dhcpv6_Interface_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RelayAgent_Dhcpv6_Interface_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcpv6_Interface_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RelayAgent_Dhcpv6_Interface_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcpv6_Interface_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RelayAgent_Dhcpv6_Interface_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RelayAgent_Dhcpv6_Interface_Counters.
func (*RelayAgent_Dhcpv6_Interface_Counters) ΛBelongingModule() string {
	return "openconfig-relay-agent"
}

// RelayAgent_Dhcpv6_Interface_InterfaceRef represents the /openconfig-relay-agent/relay-agent/dhcpv6/interfaces/interface/interface-ref YANG schema element.
type RelayAgent_Dhcpv6_Interface_InterfaceRef struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RelayAgent_Dhcpv6_Interface_InterfaceRef implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RelayAgent_Dhcpv6_Interface_InterfaceRef) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the RelayAgent_Dhcpv6_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_InterfaceRef) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the RelayAgent_Dhcpv6_Interface_InterfaceRef
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_InterfaceRef) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the RelayAgent_Dhcpv6_Interface_InterfaceRef
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RelayAgent_Dhcpv6_Interface_InterfaceRef) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcpv6_Interface_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RelayAgent_Dhcpv6_Interface_InterfaceRef"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcpv6_Interface_InterfaceRef) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RelayAgent_Dhcpv6_Interface_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RelayAgent_Dhcpv6_Interface_InterfaceRef.
func (*RelayAgent_Dhcpv6_Interface_InterfaceRef) ΛBelongingModule() string {
	return "openconfig-relay-agent"
}

// RelayAgent_Dhcpv6_Interface_Options represents the /openconfig-relay-agent/relay-agent/dhcpv6/interfaces/interface/options YANG schema element.
type RelayAgent_Dhcpv6_Interface_Options struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	EnableInterfaceId  *bool             `path:"config/enable-interface-id" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛEnableInterfaceId []ygot.Annotation `path:"config/@enable-interface-id" ygotAnnotation:"true"`
	EnableRemoteId     *bool             `path:"config/enable-remote-id" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛEnableRemoteId    []ygot.Annotation `path:"config/@enable-remote-id" ygotAnnotation:"true"`
	InterfaceId        *string           `path:"config/interface-id" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛInterfaceId       []ygot.Annotation `path:"config/@interface-id" ygotAnnotation:"true"`
	RemoteId           *string           `path:"config/remote-id" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛRemoteId          []ygot.Annotation `path:"config/@remote-id" ygotAnnotation:"true"`
	SentInterfaceId    *string           `path:"state/sent-interface-id" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛSentInterfaceId   []ygot.Annotation `path:"state/@sent-interface-id" ygotAnnotation:"true"`
	SentRemoteId       *string           `path:"state/sent-remote-id" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛSentRemoteId      []ygot.Annotation `path:"state/@sent-remote-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RelayAgent_Dhcpv6_Interface_Options implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RelayAgent_Dhcpv6_Interface_Options) IsYANGGoStruct() {}

// GetEnableInterfaceId retrieves the value of the leaf EnableInterfaceId from the RelayAgent_Dhcpv6_Interface_Options
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EnableInterfaceId is set, it can
// safely use t.GetEnableInterfaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EnableInterfaceId == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Options) GetEnableInterfaceId() bool {
	if t == nil || t.EnableInterfaceId == nil {
		return false
	}
	return *t.EnableInterfaceId
}

// GetEnableRemoteId retrieves the value of the leaf EnableRemoteId from the RelayAgent_Dhcpv6_Interface_Options
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EnableRemoteId is set, it can
// safely use t.GetEnableRemoteId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EnableRemoteId == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Options) GetEnableRemoteId() bool {
	if t == nil || t.EnableRemoteId == nil {
		return false
	}
	return *t.EnableRemoteId
}

// GetInterfaceId retrieves the value of the leaf InterfaceId from the RelayAgent_Dhcpv6_Interface_Options
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InterfaceId is set, it can
// safely use t.GetInterfaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InterfaceId == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Options) GetInterfaceId() string {
	if t == nil || t.InterfaceId == nil {
		return ""
	}
	return *t.InterfaceId
}

// GetRemoteId retrieves the value of the leaf RemoteId from the RelayAgent_Dhcpv6_Interface_Options
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemoteId is set, it can
// safely use t.GetRemoteId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemoteId == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Options) GetRemoteId() string {
	if t == nil || t.RemoteId == nil {
		return ""
	}
	return *t.RemoteId
}

// GetSentInterfaceId retrieves the value of the leaf SentInterfaceId from the RelayAgent_Dhcpv6_Interface_Options
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SentInterfaceId is set, it can
// safely use t.GetSentInterfaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SentInterfaceId == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Options) GetSentInterfaceId() string {
	if t == nil || t.SentInterfaceId == nil {
		return ""
	}
	return *t.SentInterfaceId
}

// GetSentRemoteId retrieves the value of the leaf SentRemoteId from the RelayAgent_Dhcpv6_Interface_Options
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SentRemoteId is set, it can
// safely use t.GetSentRemoteId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SentRemoteId == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Interface_Options) GetSentRemoteId() string {
	if t == nil || t.SentRemoteId == nil {
		return ""
	}
	return *t.SentRemoteId
}

// PopulateDefaults recursively populates unset leaf fields in the RelayAgent_Dhcpv6_Interface_Options
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RelayAgent_Dhcpv6_Interface_Options) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.EnableInterfaceId == nil {
		var v bool = false
		t.EnableInterfaceId = &v
	}
	if t.EnableRemoteId == nil {
		var v bool = false
		t.EnableRemoteId = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcpv6_Interface_Options) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RelayAgent_Dhcpv6_Interface_Options"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcpv6_Interface_Options) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RelayAgent_Dhcpv6_Interface_Options) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RelayAgent_Dhcpv6_Interface_Options.
func (*RelayAgent_Dhcpv6_Interface_Options) ΛBelongingModule() string {
	return "openconfig-relay-agent"
}

// RelayAgent_Dhcpv6_Options represents the /openconfig-relay-agent/relay-agent/dhcpv6/options YANG schema element.
type RelayAgent_Dhcpv6_Options struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	EnableInterfaceId  *bool             `path:"config/enable-interface-id" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛEnableInterfaceId []ygot.Annotation `path:"config/@enable-interface-id" ygotAnnotation:"true"`
	EnableRemoteId     *bool             `path:"config/enable-remote-id" module:"openconfig-relay-agent/openconfig-relay-agent"`
	ΛEnableRemoteId    []ygot.Annotation `path:"config/@enable-remote-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RelayAgent_Dhcpv6_Options implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RelayAgent_Dhcpv6_Options) IsYANGGoStruct() {}

// GetEnableInterfaceId retrieves the value of the leaf EnableInterfaceId from the RelayAgent_Dhcpv6_Options
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EnableInterfaceId is set, it can
// safely use t.GetEnableInterfaceId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EnableInterfaceId == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Options) GetEnableInterfaceId() bool {
	if t == nil || t.EnableInterfaceId == nil {
		return false
	}
	return *t.EnableInterfaceId
}

// GetEnableRemoteId retrieves the value of the leaf EnableRemoteId from the RelayAgent_Dhcpv6_Options
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EnableRemoteId is set, it can
// safely use t.GetEnableRemoteId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EnableRemoteId == nil' before retrieving the leaf's value.
func (t *RelayAgent_Dhcpv6_Options) GetEnableRemoteId() bool {
	if t == nil || t.EnableRemoteId == nil {
		return false
	}
	return *t.EnableRemoteId
}

// PopulateDefaults recursively populates unset leaf fields in the RelayAgent_Dhcpv6_Options
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RelayAgent_Dhcpv6_Options) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.EnableInterfaceId == nil {
		var v bool = false
		t.EnableInterfaceId = &v
	}
	if t.EnableRemoteId == nil {
		var v bool = false
		t.EnableRemoteId = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcpv6_Options) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RelayAgent_Dhcpv6_Options"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RelayAgent_Dhcpv6_Options) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RelayAgent_Dhcpv6_Options) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of RelayAgent_Dhcpv6_Options.
func (*RelayAgent_Dhcpv6_Options) ΛBelongingModule() string {
	return "openconfig-relay-agent"
}

// RoutingPolicy represents the /openconfig-routing-policy/routing-policy YANG schema element.
type RoutingPolicy struct {
	ΛMetadata         []ygot.Annotation                          `path:"@" ygotAnnotation:"true"`
	DefinedSets       *RoutingPolicy_DefinedSets                 `path:"defined-sets" module:"openconfig-routing-policy"`
	ΛDefinedSets      []ygot.Annotation                          `path:"@defined-sets" ygotAnnotation:"true"`
	PolicyDefinition  map[string]*RoutingPolicy_PolicyDefinition `path:"policy-definitions/policy-definition" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛPolicyDefinition []ygot.Annotation                          `path:"policy-definitions/@policy-definition" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy) IsYANGGoStruct() {}

// NewPolicyDefinition creates a new entry in the PolicyDefinition list of the
// RoutingPolicy struct. The keys of the list are populated from the input
// arguments.
func (t *RoutingPolicy) NewPolicyDefinition(Name string) (*RoutingPolicy_PolicyDefinition, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PolicyDefinition == nil {
		t.PolicyDefinition = make(map[string]*RoutingPolicy_PolicyDefinition)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.PolicyDefinition[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list PolicyDefinition", key)
	}

	t.PolicyDefinition[key] = &RoutingPolicy_PolicyDefinition{
		Name: &Name,
	}

	return t.PolicyDefinition[key], nil
}

// RenamePolicyDefinition renames an entry in the list PolicyDefinition within
// the RoutingPolicy struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *RoutingPolicy) RenamePolicyDefinition(oldK, newK string) error {
	if _, ok := t.PolicyDefinition[newK]; ok {
		return fmt.Errorf("key %v already exists in PolicyDefinition", newK)
	}

	e, ok := t.PolicyDefinition[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in PolicyDefinition", oldK)
	}
	e.Name = &newK

	t.PolicyDefinition[newK] = e
	delete(t.PolicyDefinition, oldK)
	return nil
}

// GetOrCreatePolicyDefinitionMap returns the list (map) from RoutingPolicy.
//
// It initializes the field if not already initialized.
func (t *RoutingPolicy) GetOrCreatePolicyDefinitionMap() map[string]*RoutingPolicy_PolicyDefinition {
	if t.PolicyDefinition == nil {
		t.PolicyDefinition = make(map[string]*RoutingPolicy_PolicyDefinition)
	}
	return t.PolicyDefinition
}

// GetOrCreatePolicyDefinition retrieves the value with the specified keys from
// the receiver RoutingPolicy. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *RoutingPolicy) GetOrCreatePolicyDefinition(Name string) *RoutingPolicy_PolicyDefinition {

	key := Name

	if v, ok := t.PolicyDefinition[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPolicyDefinition(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePolicyDefinition got unexpected error: %v", err))
	}
	return v
}

// GetPolicyDefinition retrieves the value with the specified key from
// the PolicyDefinition map field of RoutingPolicy. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *RoutingPolicy) GetPolicyDefinition(Name string) *RoutingPolicy_PolicyDefinition {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.PolicyDefinition[key]; ok {
		return lm
	}
	return nil
}

// AppendPolicyDefinition appends the supplied RoutingPolicy_PolicyDefinition struct to the
// list PolicyDefinition of RoutingPolicy. If the key value(s) specified in
// the supplied RoutingPolicy_PolicyDefinition already exist in the list, an error is
// returned.
func (t *RoutingPolicy) AppendPolicyDefinition(v *RoutingPolicy_PolicyDefinition) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PolicyDefinition == nil {
		t.PolicyDefinition = make(map[string]*RoutingPolicy_PolicyDefinition)
	}

	if _, ok := t.PolicyDefinition[key]; ok {
		return fmt.Errorf("duplicate key for list PolicyDefinition %v", key)
	}

	t.PolicyDefinition[key] = v
	return nil
}

// GetOrCreateDefinedSets retrieves the value of the DefinedSets field
// or returns the existing field if it already exists.
func (t *RoutingPolicy) GetOrCreateDefinedSets() *RoutingPolicy_DefinedSets {
	if t.DefinedSets != nil {
		return t.DefinedSets
	}
	t.DefinedSets = &RoutingPolicy_DefinedSets{}
	return t.DefinedSets
}

// GetDefinedSets returns the value of the DefinedSets struct pointer
// from RoutingPolicy. If the receiver or the field DefinedSets is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy) GetDefinedSets() *RoutingPolicy_DefinedSets {
	if t != nil && t.DefinedSets != nil {
		return t.DefinedSets
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.DefinedSets.PopulateDefaults()
	for _, e := range t.PolicyDefinition {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy.
func (*RoutingPolicy) ΛBelongingModule() string {
	return "openconfig-routing-policy"
}

// RoutingPolicy_DefinedSets represents the /openconfig-routing-policy/routing-policy/defined-sets YANG schema element.
type RoutingPolicy_DefinedSets struct {
	ΛMetadata       []ygot.Annotation                                 `path:"@" ygotAnnotation:"true"`
	BgpDefinedSets  *RoutingPolicy_DefinedSets_BgpDefinedSets         `path:"bgp-defined-sets" module:"openconfig-bgp-policy"`
	ΛBgpDefinedSets []ygot.Annotation                                 `path:"@bgp-defined-sets" ygotAnnotation:"true"`
	NeighborSet     map[string]*RoutingPolicy_DefinedSets_NeighborSet `path:"neighbor-sets/neighbor-set" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛNeighborSet    []ygot.Annotation                                 `path:"neighbor-sets/@neighbor-set" ygotAnnotation:"true"`
	PrefixSet       map[string]*RoutingPolicy_DefinedSets_PrefixSet   `path:"prefix-sets/prefix-set" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛPrefixSet      []ygot.Annotation                                 `path:"prefix-sets/@prefix-set" ygotAnnotation:"true"`
	TagSet          map[string]*RoutingPolicy_DefinedSets_TagSet      `path:"tag-sets/tag-set" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛTagSet         []ygot.Annotation                                 `path:"tag-sets/@tag-set" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_DefinedSets implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_DefinedSets) IsYANGGoStruct() {}

// NewNeighborSet creates a new entry in the NeighborSet list of the
// RoutingPolicy_DefinedSets struct. The keys of the list are populated from the input
// arguments.
func (t *RoutingPolicy_DefinedSets) NewNeighborSet(Name string) (*RoutingPolicy_DefinedSets_NeighborSet, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NeighborSet == nil {
		t.NeighborSet = make(map[string]*RoutingPolicy_DefinedSets_NeighborSet)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.NeighborSet[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list NeighborSet", key)
	}

	t.NeighborSet[key] = &RoutingPolicy_DefinedSets_NeighborSet{
		Name: &Name,
	}

	return t.NeighborSet[key], nil
}

// RenameNeighborSet renames an entry in the list NeighborSet within
// the RoutingPolicy_DefinedSets struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *RoutingPolicy_DefinedSets) RenameNeighborSet(oldK, newK string) error {
	if _, ok := t.NeighborSet[newK]; ok {
		return fmt.Errorf("key %v already exists in NeighborSet", newK)
	}

	e, ok := t.NeighborSet[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in NeighborSet", oldK)
	}
	e.Name = &newK

	t.NeighborSet[newK] = e
	delete(t.NeighborSet, oldK)
	return nil
}

// GetOrCreateNeighborSetMap returns the list (map) from RoutingPolicy_DefinedSets.
//
// It initializes the field if not already initialized.
func (t *RoutingPolicy_DefinedSets) GetOrCreateNeighborSetMap() map[string]*RoutingPolicy_DefinedSets_NeighborSet {
	if t.NeighborSet == nil {
		t.NeighborSet = make(map[string]*RoutingPolicy_DefinedSets_NeighborSet)
	}
	return t.NeighborSet
}

// GetOrCreateNeighborSet retrieves the value with the specified keys from
// the receiver RoutingPolicy_DefinedSets. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *RoutingPolicy_DefinedSets) GetOrCreateNeighborSet(Name string) *RoutingPolicy_DefinedSets_NeighborSet {

	key := Name

	if v, ok := t.NeighborSet[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighborSet(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighborSet got unexpected error: %v", err))
	}
	return v
}

// GetNeighborSet retrieves the value with the specified key from
// the NeighborSet map field of RoutingPolicy_DefinedSets. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *RoutingPolicy_DefinedSets) GetNeighborSet(Name string) *RoutingPolicy_DefinedSets_NeighborSet {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.NeighborSet[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighborSet appends the supplied RoutingPolicy_DefinedSets_NeighborSet struct to the
// list NeighborSet of RoutingPolicy_DefinedSets. If the key value(s) specified in
// the supplied RoutingPolicy_DefinedSets_NeighborSet already exist in the list, an error is
// returned.
func (t *RoutingPolicy_DefinedSets) AppendNeighborSet(v *RoutingPolicy_DefinedSets_NeighborSet) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NeighborSet == nil {
		t.NeighborSet = make(map[string]*RoutingPolicy_DefinedSets_NeighborSet)
	}

	if _, ok := t.NeighborSet[key]; ok {
		return fmt.Errorf("duplicate key for list NeighborSet %v", key)
	}

	t.NeighborSet[key] = v
	return nil
}

// NewPrefixSet creates a new entry in the PrefixSet list of the
// RoutingPolicy_DefinedSets struct. The keys of the list are populated from the input
// arguments.
func (t *RoutingPolicy_DefinedSets) NewPrefixSet(Name string) (*RoutingPolicy_DefinedSets_PrefixSet, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PrefixSet == nil {
		t.PrefixSet = make(map[string]*RoutingPolicy_DefinedSets_PrefixSet)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.PrefixSet[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list PrefixSet", key)
	}

	t.PrefixSet[key] = &RoutingPolicy_DefinedSets_PrefixSet{
		Name: &Name,
	}

	return t.PrefixSet[key], nil
}

// RenamePrefixSet renames an entry in the list PrefixSet within
// the RoutingPolicy_DefinedSets struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *RoutingPolicy_DefinedSets) RenamePrefixSet(oldK, newK string) error {
	if _, ok := t.PrefixSet[newK]; ok {
		return fmt.Errorf("key %v already exists in PrefixSet", newK)
	}

	e, ok := t.PrefixSet[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in PrefixSet", oldK)
	}
	e.Name = &newK

	t.PrefixSet[newK] = e
	delete(t.PrefixSet, oldK)
	return nil
}

// GetOrCreatePrefixSetMap returns the list (map) from RoutingPolicy_DefinedSets.
//
// It initializes the field if not already initialized.
func (t *RoutingPolicy_DefinedSets) GetOrCreatePrefixSetMap() map[string]*RoutingPolicy_DefinedSets_PrefixSet {
	if t.PrefixSet == nil {
		t.PrefixSet = make(map[string]*RoutingPolicy_DefinedSets_PrefixSet)
	}
	return t.PrefixSet
}

// GetOrCreatePrefixSet retrieves the value with the specified keys from
// the receiver RoutingPolicy_DefinedSets. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *RoutingPolicy_DefinedSets) GetOrCreatePrefixSet(Name string) *RoutingPolicy_DefinedSets_PrefixSet {

	key := Name

	if v, ok := t.PrefixSet[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPrefixSet(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePrefixSet got unexpected error: %v", err))
	}
	return v
}

// GetPrefixSet retrieves the value with the specified key from
// the PrefixSet map field of RoutingPolicy_DefinedSets. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *RoutingPolicy_DefinedSets) GetPrefixSet(Name string) *RoutingPolicy_DefinedSets_PrefixSet {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.PrefixSet[key]; ok {
		return lm
	}
	return nil
}

// AppendPrefixSet appends the supplied RoutingPolicy_DefinedSets_PrefixSet struct to the
// list PrefixSet of RoutingPolicy_DefinedSets. If the key value(s) specified in
// the supplied RoutingPolicy_DefinedSets_PrefixSet already exist in the list, an error is
// returned.
func (t *RoutingPolicy_DefinedSets) AppendPrefixSet(v *RoutingPolicy_DefinedSets_PrefixSet) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.PrefixSet == nil {
		t.PrefixSet = make(map[string]*RoutingPolicy_DefinedSets_PrefixSet)
	}

	if _, ok := t.PrefixSet[key]; ok {
		return fmt.Errorf("duplicate key for list PrefixSet %v", key)
	}

	t.PrefixSet[key] = v
	return nil
}

// NewTagSet creates a new entry in the TagSet list of the
// RoutingPolicy_DefinedSets struct. The keys of the list are populated from the input
// arguments.
func (t *RoutingPolicy_DefinedSets) NewTagSet(Name string) (*RoutingPolicy_DefinedSets_TagSet, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TagSet == nil {
		t.TagSet = make(map[string]*RoutingPolicy_DefinedSets_TagSet)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.TagSet[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list TagSet", key)
	}

	t.TagSet[key] = &RoutingPolicy_DefinedSets_TagSet{
		Name: &Name,
	}

	return t.TagSet[key], nil
}

// RenameTagSet renames an entry in the list TagSet within
// the RoutingPolicy_DefinedSets struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *RoutingPolicy_DefinedSets) RenameTagSet(oldK, newK string) error {
	if _, ok := t.TagSet[newK]; ok {
		return fmt.Errorf("key %v already exists in TagSet", newK)
	}

	e, ok := t.TagSet[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in TagSet", oldK)
	}
	e.Name = &newK

	t.TagSet[newK] = e
	delete(t.TagSet, oldK)
	return nil
}

// GetOrCreateTagSetMap returns the list (map) from RoutingPolicy_DefinedSets.
//
// It initializes the field if not already initialized.
func (t *RoutingPolicy_DefinedSets) GetOrCreateTagSetMap() map[string]*RoutingPolicy_DefinedSets_TagSet {
	if t.TagSet == nil {
		t.TagSet = make(map[string]*RoutingPolicy_DefinedSets_TagSet)
	}
	return t.TagSet
}

// GetOrCreateTagSet retrieves the value with the specified keys from
// the receiver RoutingPolicy_DefinedSets. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *RoutingPolicy_DefinedSets) GetOrCreateTagSet(Name string) *RoutingPolicy_DefinedSets_TagSet {

	key := Name

	if v, ok := t.TagSet[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTagSet(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTagSet got unexpected error: %v", err))
	}
	return v
}

// GetTagSet retrieves the value with the specified key from
// the TagSet map field of RoutingPolicy_DefinedSets. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *RoutingPolicy_DefinedSets) GetTagSet(Name string) *RoutingPolicy_DefinedSets_TagSet {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.TagSet[key]; ok {
		return lm
	}
	return nil
}

// AppendTagSet appends the supplied RoutingPolicy_DefinedSets_TagSet struct to the
// list TagSet of RoutingPolicy_DefinedSets. If the key value(s) specified in
// the supplied RoutingPolicy_DefinedSets_TagSet already exist in the list, an error is
// returned.
func (t *RoutingPolicy_DefinedSets) AppendTagSet(v *RoutingPolicy_DefinedSets_TagSet) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.TagSet == nil {
		t.TagSet = make(map[string]*RoutingPolicy_DefinedSets_TagSet)
	}

	if _, ok := t.TagSet[key]; ok {
		return fmt.Errorf("duplicate key for list TagSet %v", key)
	}

	t.TagSet[key] = v
	return nil
}

// GetOrCreateBgpDefinedSets retrieves the value of the BgpDefinedSets field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_DefinedSets) GetOrCreateBgpDefinedSets() *RoutingPolicy_DefinedSets_BgpDefinedSets {
	if t.BgpDefinedSets != nil {
		return t.BgpDefinedSets
	}
	t.BgpDefinedSets = &RoutingPolicy_DefinedSets_BgpDefinedSets{}
	return t.BgpDefinedSets
}

// GetBgpDefinedSets returns the value of the BgpDefinedSets struct pointer
// from RoutingPolicy_DefinedSets. If the receiver or the field BgpDefinedSets is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_DefinedSets) GetBgpDefinedSets() *RoutingPolicy_DefinedSets_BgpDefinedSets {
	if t != nil && t.BgpDefinedSets != nil {
		return t.BgpDefinedSets
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_DefinedSets
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_DefinedSets) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.BgpDefinedSets.PopulateDefaults()
	for _, e := range t.NeighborSet {
		e.PopulateDefaults()
	}
	for _, e := range t.PrefixSet {
		e.PopulateDefaults()
	}
	for _, e := range t.TagSet {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_DefinedSets"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_DefinedSets) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_DefinedSets.
func (*RoutingPolicy_DefinedSets) ΛBelongingModule() string {
	return "openconfig-routing-policy"
}

// RoutingPolicy_DefinedSets_BgpDefinedSets represents the /openconfig-routing-policy/routing-policy/defined-sets/bgp-defined-sets YANG schema element.
type RoutingPolicy_DefinedSets_BgpDefinedSets struct {
	ΛMetadata        []ygot.Annotation                                                    `path:"@" ygotAnnotation:"true"`
	AsPathSet        map[string]*RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet       `path:"as-path-sets/as-path-set" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛAsPathSet       []ygot.Annotation                                                    `path:"as-path-sets/@as-path-set" ygotAnnotation:"true"`
	CommunitySet     map[string]*RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet    `path:"community-sets/community-set" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛCommunitySet    []ygot.Annotation                                                    `path:"community-sets/@community-set" ygotAnnotation:"true"`
	ExtCommunitySet  map[string]*RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet `path:"ext-community-sets/ext-community-set" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛExtCommunitySet []ygot.Annotation                                                    `path:"ext-community-sets/@ext-community-set" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_DefinedSets_BgpDefinedSets implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_DefinedSets_BgpDefinedSets) IsYANGGoStruct() {}

// NewAsPathSet creates a new entry in the AsPathSet list of the
// RoutingPolicy_DefinedSets_BgpDefinedSets struct. The keys of the list are populated from the input
// arguments.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) NewAsPathSet(AsPathSetName string) (*RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AsPathSet == nil {
		t.AsPathSet = make(map[string]*RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet)
	}

	key := AsPathSetName

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.AsPathSet[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list AsPathSet", key)
	}

	t.AsPathSet[key] = &RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet{
		AsPathSetName: &AsPathSetName,
	}

	return t.AsPathSet[key], nil
}

// RenameAsPathSet renames an entry in the list AsPathSet within
// the RoutingPolicy_DefinedSets_BgpDefinedSets struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) RenameAsPathSet(oldK, newK string) error {
	if _, ok := t.AsPathSet[newK]; ok {
		return fmt.Errorf("key %v already exists in AsPathSet", newK)
	}

	e, ok := t.AsPathSet[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in AsPathSet", oldK)
	}
	e.AsPathSetName = &newK

	t.AsPathSet[newK] = e
	delete(t.AsPathSet, oldK)
	return nil
}

// GetOrCreateAsPathSetMap returns the list (map) from RoutingPolicy_DefinedSets_BgpDefinedSets.
//
// It initializes the field if not already initialized.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) GetOrCreateAsPathSetMap() map[string]*RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet {
	if t.AsPathSet == nil {
		t.AsPathSet = make(map[string]*RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet)
	}
	return t.AsPathSet
}

// GetOrCreateAsPathSet retrieves the value with the specified keys from
// the receiver RoutingPolicy_DefinedSets_BgpDefinedSets. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) GetOrCreateAsPathSet(AsPathSetName string) *RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet {

	key := AsPathSetName

	if v, ok := t.AsPathSet[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAsPathSet(AsPathSetName)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAsPathSet got unexpected error: %v", err))
	}
	return v
}

// GetAsPathSet retrieves the value with the specified key from
// the AsPathSet map field of RoutingPolicy_DefinedSets_BgpDefinedSets. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) GetAsPathSet(AsPathSetName string) *RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet {

	if t == nil {
		return nil
	}

	key := AsPathSetName

	if lm, ok := t.AsPathSet[key]; ok {
		return lm
	}
	return nil
}

// AppendAsPathSet appends the supplied RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet struct to the
// list AsPathSet of RoutingPolicy_DefinedSets_BgpDefinedSets. If the key value(s) specified in
// the supplied RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet already exist in the list, an error is
// returned.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) AppendAsPathSet(v *RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet) error {
	if v.AsPathSetName == nil {
		return fmt.Errorf("invalid nil key received for AsPathSetName")
	}

	key := *v.AsPathSetName

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.AsPathSet == nil {
		t.AsPathSet = make(map[string]*RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet)
	}

	if _, ok := t.AsPathSet[key]; ok {
		return fmt.Errorf("duplicate key for list AsPathSet %v", key)
	}

	t.AsPathSet[key] = v
	return nil
}

// NewCommunitySet creates a new entry in the CommunitySet list of the
// RoutingPolicy_DefinedSets_BgpDefinedSets struct. The keys of the list are populated from the input
// arguments.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) NewCommunitySet(CommunitySetName string) (*RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.CommunitySet == nil {
		t.CommunitySet = make(map[string]*RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet)
	}

	key := CommunitySetName

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.CommunitySet[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list CommunitySet", key)
	}

	t.CommunitySet[key] = &RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet{
		CommunitySetName: &CommunitySetName,
	}

	return t.CommunitySet[key], nil
}

// RenameCommunitySet renames an entry in the list CommunitySet within
// the RoutingPolicy_DefinedSets_BgpDefinedSets struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) RenameCommunitySet(oldK, newK string) error {
	if _, ok := t.CommunitySet[newK]; ok {
		return fmt.Errorf("key %v already exists in CommunitySet", newK)
	}

	e, ok := t.CommunitySet[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in CommunitySet", oldK)
	}
	e.CommunitySetName = &newK

	t.CommunitySet[newK] = e
	delete(t.CommunitySet, oldK)
	return nil
}

// GetOrCreateCommunitySetMap returns the list (map) from RoutingPolicy_DefinedSets_BgpDefinedSets.
//
// It initializes the field if not already initialized.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) GetOrCreateCommunitySetMap() map[string]*RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet {
	if t.CommunitySet == nil {
		t.CommunitySet = make(map[string]*RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet)
	}
	return t.CommunitySet
}

// GetOrCreateCommunitySet retrieves the value with the specified keys from
// the receiver RoutingPolicy_DefinedSets_BgpDefinedSets. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) GetOrCreateCommunitySet(CommunitySetName string) *RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet {

	key := CommunitySetName

	if v, ok := t.CommunitySet[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewCommunitySet(CommunitySetName)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateCommunitySet got unexpected error: %v", err))
	}
	return v
}

// GetCommunitySet retrieves the value with the specified key from
// the CommunitySet map field of RoutingPolicy_DefinedSets_BgpDefinedSets. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) GetCommunitySet(CommunitySetName string) *RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet {

	if t == nil {
		return nil
	}

	key := CommunitySetName

	if lm, ok := t.CommunitySet[key]; ok {
		return lm
	}
	return nil
}

// AppendCommunitySet appends the supplied RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet struct to the
// list CommunitySet of RoutingPolicy_DefinedSets_BgpDefinedSets. If the key value(s) specified in
// the supplied RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet already exist in the list, an error is
// returned.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) AppendCommunitySet(v *RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet) error {
	if v.CommunitySetName == nil {
		return fmt.Errorf("invalid nil key received for CommunitySetName")
	}

	key := *v.CommunitySetName

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.CommunitySet == nil {
		t.CommunitySet = make(map[string]*RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet)
	}

	if _, ok := t.CommunitySet[key]; ok {
		return fmt.Errorf("duplicate key for list CommunitySet %v", key)
	}

	t.CommunitySet[key] = v
	return nil
}

// NewExtCommunitySet creates a new entry in the ExtCommunitySet list of the
// RoutingPolicy_DefinedSets_BgpDefinedSets struct. The keys of the list are populated from the input
// arguments.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) NewExtCommunitySet(ExtCommunitySetName string) (*RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ExtCommunitySet == nil {
		t.ExtCommunitySet = make(map[string]*RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet)
	}

	key := ExtCommunitySetName

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.ExtCommunitySet[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list ExtCommunitySet", key)
	}

	t.ExtCommunitySet[key] = &RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet{
		ExtCommunitySetName: &ExtCommunitySetName,
	}

	return t.ExtCommunitySet[key], nil
}

// RenameExtCommunitySet renames an entry in the list ExtCommunitySet within
// the RoutingPolicy_DefinedSets_BgpDefinedSets struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) RenameExtCommunitySet(oldK, newK string) error {
	if _, ok := t.ExtCommunitySet[newK]; ok {
		return fmt.Errorf("key %v already exists in ExtCommunitySet", newK)
	}

	e, ok := t.ExtCommunitySet[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in ExtCommunitySet", oldK)
	}
	e.ExtCommunitySetName = &newK

	t.ExtCommunitySet[newK] = e
	delete(t.ExtCommunitySet, oldK)
	return nil
}

// GetOrCreateExtCommunitySetMap returns the list (map) from RoutingPolicy_DefinedSets_BgpDefinedSets.
//
// It initializes the field if not already initialized.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) GetOrCreateExtCommunitySetMap() map[string]*RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet {
	if t.ExtCommunitySet == nil {
		t.ExtCommunitySet = make(map[string]*RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet)
	}
	return t.ExtCommunitySet
}

// GetOrCreateExtCommunitySet retrieves the value with the specified keys from
// the receiver RoutingPolicy_DefinedSets_BgpDefinedSets. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) GetOrCreateExtCommunitySet(ExtCommunitySetName string) *RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet {

	key := ExtCommunitySetName

	if v, ok := t.ExtCommunitySet[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewExtCommunitySet(ExtCommunitySetName)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateExtCommunitySet got unexpected error: %v", err))
	}
	return v
}

// GetExtCommunitySet retrieves the value with the specified key from
// the ExtCommunitySet map field of RoutingPolicy_DefinedSets_BgpDefinedSets. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) GetExtCommunitySet(ExtCommunitySetName string) *RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet {

	if t == nil {
		return nil
	}

	key := ExtCommunitySetName

	if lm, ok := t.ExtCommunitySet[key]; ok {
		return lm
	}
	return nil
}

// AppendExtCommunitySet appends the supplied RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet struct to the
// list ExtCommunitySet of RoutingPolicy_DefinedSets_BgpDefinedSets. If the key value(s) specified in
// the supplied RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet already exist in the list, an error is
// returned.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) AppendExtCommunitySet(v *RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet) error {
	if v.ExtCommunitySetName == nil {
		return fmt.Errorf("invalid nil key received for ExtCommunitySetName")
	}

	key := *v.ExtCommunitySetName

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ExtCommunitySet == nil {
		t.ExtCommunitySet = make(map[string]*RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet)
	}

	if _, ok := t.ExtCommunitySet[key]; ok {
		return fmt.Errorf("duplicate key for list ExtCommunitySet %v", key)
	}

	t.ExtCommunitySet[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_DefinedSets_BgpDefinedSets
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.AsPathSet {
		e.PopulateDefaults()
	}
	for _, e := range t.CommunitySet {
		e.PopulateDefaults()
	}
	for _, e := range t.ExtCommunitySet {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_DefinedSets_BgpDefinedSets"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_DefinedSets_BgpDefinedSets.
func (*RoutingPolicy_DefinedSets_BgpDefinedSets) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet represents the /openconfig-routing-policy/routing-policy/defined-sets/bgp-defined-sets/as-path-sets/as-path-set YANG schema element.
type RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AsPathSetMember  []string          `path:"config/as-path-set-member" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛAsPathSetMember []ygot.Annotation `path:"config/@as-path-set-member" ygotAnnotation:"true"`
	AsPathSetName    *string           `path:"config/as-path-set-name|as-path-set-name" module:"openconfig-bgp-policy/openconfig-bgp-policy|openconfig-bgp-policy"`
	ΛAsPathSetName   []ygot.Annotation `path:"config/@as-path-set-name|@as-path-set-name" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet) IsYANGGoStruct() {}

// GetAsPathSetMember retrieves the value of the leaf AsPathSetMember from the RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AsPathSetMember is set, it can
// safely use t.GetAsPathSetMember() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AsPathSetMember == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet) GetAsPathSetMember() []string {
	if t == nil || t.AsPathSetMember == nil {
		return nil
	}
	return t.AsPathSetMember
}

// GetAsPathSetName retrieves the value of the leaf AsPathSetName from the RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AsPathSetName is set, it can
// safely use t.GetAsPathSetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AsPathSetName == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet) GetAsPathSetName() string {
	if t == nil || t.AsPathSetName == nil {
		return ""
	}
	return *t.AsPathSetName
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet struct, which is a YANG list entry.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet) ΛListKeyMap() (map[string]interface{}, error) {
	if t.AsPathSetName == nil {
		return nil, fmt.Errorf("nil value for key AsPathSetName")
	}

	return map[string]interface{}{
		"as-path-set-name": *t.AsPathSetName,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet.
func (*RoutingPolicy_DefinedSets_BgpDefinedSets_AsPathSet) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet represents the /openconfig-routing-policy/routing-policy/defined-sets/bgp-defined-sets/community-sets/community-set YANG schema element.
type RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet struct {
	ΛMetadata         []ygot.Annotation                                                             `path:"@" ygotAnnotation:"true"`
	CommunityMember   []RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union `path:"config/community-member" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛCommunityMember  []ygot.Annotation                                                             `path:"config/@community-member" ygotAnnotation:"true"`
	CommunitySetName  *string                                                                       `path:"config/community-set-name|community-set-name" module:"openconfig-bgp-policy/openconfig-bgp-policy|openconfig-bgp-policy"`
	ΛCommunitySetName []ygot.Annotation                                                             `path:"config/@community-set-name|@community-set-name" ygotAnnotation:"true"`
	MatchSetOptions   E_PolicyTypes_MatchSetOptionsType                                             `path:"config/match-set-options" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛMatchSetOptions  []ygot.Annotation                                                             `path:"config/@match-set-options" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet) IsYANGGoStruct() {}

// GetCommunityMember retrieves the value of the leaf CommunityMember from the RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunityMember is set, it can
// safely use t.GetCommunityMember() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunityMember == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet) GetCommunityMember() []RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union {
	if t == nil || t.CommunityMember == nil {
		return nil
	}
	return t.CommunityMember
}

// GetCommunitySetName retrieves the value of the leaf CommunitySetName from the RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunitySetName is set, it can
// safely use t.GetCommunitySetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunitySetName == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet) GetCommunitySetName() string {
	if t == nil || t.CommunitySetName == nil {
		return ""
	}
	return *t.CommunitySetName
}

// GetMatchSetOptions retrieves the value of the leaf MatchSetOptions from the RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MatchSetOptions is set, it can
// safely use t.GetMatchSetOptions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MatchSetOptions == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet) GetMatchSetOptions() E_PolicyTypes_MatchSetOptionsType {
	if t == nil || t.MatchSetOptions == 0 {
		return PolicyTypes_MatchSetOptionsType_ANY
	}
	return t.MatchSetOptions
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MatchSetOptions == 0 {
		t.MatchSetOptions = PolicyTypes_MatchSetOptionsType_ANY
	}
}

// ΛListKeyMap returns the keys of the RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet struct, which is a YANG list entry.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet) ΛListKeyMap() (map[string]interface{}, error) {
	if t.CommunitySetName == nil {
		return nil, fmt.Errorf("nil value for key CommunitySetName")
	}

	return map[string]interface{}{
		"community-set-name": *t.CommunitySetName,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet.
func (*RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-routing-policy/routing-policy/defined-sets/bgp-defined-sets/community-sets/community-set/config/community-member within the YANG schema.
// Union type can be one of [E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY, UnionString, UnionUint32].
type RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union interface {
	// Union type can be one of [E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY, UnionString, UnionUint32]
	Documentation_for_RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union()
}

// Documentation_for_RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union ensures that E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY
// implements the RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union interface.
func (E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY) Documentation_for_RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union() {
}

// Documentation_for_RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union ensures that UnionString
// implements the RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union interface.
func (UnionString) Documentation_for_RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union() {
}

// Documentation_for_RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union ensures that UnionUint32
// implements the RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union interface.
func (UnionUint32) Documentation_for_RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union() {
}

// To_RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union takes an input interface{} and attempts to convert it to a struct
// which implements the RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet) To_RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union(i interface{}) (RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union, error) {
	if v, ok := i.(RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to RoutingPolicy_DefinedSets_BgpDefinedSets_CommunitySet_CommunityMember_Union, unknown union type, got: %T, want any of [E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY, string, uint32]", i, i)
}

// RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet represents the /openconfig-routing-policy/routing-policy/defined-sets/bgp-defined-sets/ext-community-sets/ext-community-set YANG schema element.
type RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet struct {
	ΛMetadata            []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	ExtCommunityMember   []string                          `path:"config/ext-community-member" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛExtCommunityMember  []ygot.Annotation                 `path:"config/@ext-community-member" ygotAnnotation:"true"`
	ExtCommunitySetName  *string                           `path:"config/ext-community-set-name|ext-community-set-name" module:"openconfig-bgp-policy/openconfig-bgp-policy|openconfig-bgp-policy"`
	ΛExtCommunitySetName []ygot.Annotation                 `path:"config/@ext-community-set-name|@ext-community-set-name" ygotAnnotation:"true"`
	MatchSetOptions      E_PolicyTypes_MatchSetOptionsType `path:"config/match-set-options" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛMatchSetOptions     []ygot.Annotation                 `path:"config/@match-set-options" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet) IsYANGGoStruct() {}

// GetExtCommunityMember retrieves the value of the leaf ExtCommunityMember from the RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunityMember is set, it can
// safely use t.GetExtCommunityMember() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunityMember == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet) GetExtCommunityMember() []string {
	if t == nil || t.ExtCommunityMember == nil {
		return nil
	}
	return t.ExtCommunityMember
}

// GetExtCommunitySetName retrieves the value of the leaf ExtCommunitySetName from the RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunitySetName is set, it can
// safely use t.GetExtCommunitySetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunitySetName == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet) GetExtCommunitySetName() string {
	if t == nil || t.ExtCommunitySetName == nil {
		return ""
	}
	return *t.ExtCommunitySetName
}

// GetMatchSetOptions retrieves the value of the leaf MatchSetOptions from the RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MatchSetOptions is set, it can
// safely use t.GetMatchSetOptions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MatchSetOptions == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet) GetMatchSetOptions() E_PolicyTypes_MatchSetOptionsType {
	if t == nil || t.MatchSetOptions == 0 {
		return PolicyTypes_MatchSetOptionsType_ANY
	}
	return t.MatchSetOptions
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MatchSetOptions == 0 {
		t.MatchSetOptions = PolicyTypes_MatchSetOptionsType_ANY
	}
}

// ΛListKeyMap returns the keys of the RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet struct, which is a YANG list entry.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet) ΛListKeyMap() (map[string]interface{}, error) {
	if t.ExtCommunitySetName == nil {
		return nil, fmt.Errorf("nil value for key ExtCommunitySetName")
	}

	return map[string]interface{}{
		"ext-community-set-name": *t.ExtCommunitySetName,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet.
func (*RoutingPolicy_DefinedSets_BgpDefinedSets_ExtCommunitySet) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_DefinedSets_NeighborSet represents the /openconfig-routing-policy/routing-policy/defined-sets/neighbor-sets/neighbor-set YANG schema element.
type RoutingPolicy_DefinedSets_NeighborSet struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   []string          `path:"config/address" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛAddress  []ygot.Annotation `path:"config/@address" ygotAnnotation:"true"`
	Name      *string           `path:"config/name|name" module:"openconfig-routing-policy/openconfig-routing-policy|openconfig-routing-policy"`
	ΛName     []ygot.Annotation `path:"config/@name|@name" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_DefinedSets_NeighborSet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_DefinedSets_NeighborSet) IsYANGGoStruct() {}

// GetAddress retrieves the value of the leaf Address from the RoutingPolicy_DefinedSets_NeighborSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_DefinedSets_NeighborSet) GetAddress() []string {
	if t == nil || t.Address == nil {
		return nil
	}
	return t.Address
}

// GetName retrieves the value of the leaf Name from the RoutingPolicy_DefinedSets_NeighborSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_DefinedSets_NeighborSet) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_DefinedSets_NeighborSet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_DefinedSets_NeighborSet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the RoutingPolicy_DefinedSets_NeighborSet struct, which is a YANG list entry.
func (t *RoutingPolicy_DefinedSets_NeighborSet) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets_NeighborSet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_DefinedSets_NeighborSet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets_NeighborSet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_DefinedSets_NeighborSet) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_DefinedSets_NeighborSet.
func (*RoutingPolicy_DefinedSets_NeighborSet) ΛBelongingModule() string {
	return "openconfig-routing-policy"
}

// RoutingPolicy_DefinedSets_PrefixSet represents the /openconfig-routing-policy/routing-policy/defined-sets/prefix-sets/prefix-set YANG schema element.
type RoutingPolicy_DefinedSets_PrefixSet struct {
	ΛMetadata []ygot.Annotation                                                                              `path:"@" ygotAnnotation:"true"`
	Mode      E_PrefixSet_Mode                                                                               `path:"config/mode" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛMode     []ygot.Annotation                                                                              `path:"config/@mode" ygotAnnotation:"true"`
	Name      *string                                                                                        `path:"config/name|name" module:"openconfig-routing-policy/openconfig-routing-policy|openconfig-routing-policy"`
	ΛName     []ygot.Annotation                                                                              `path:"config/@name|@name" ygotAnnotation:"true"`
	Prefix    map[RoutingPolicy_DefinedSets_PrefixSet_Prefix_Key]*RoutingPolicy_DefinedSets_PrefixSet_Prefix `path:"prefixes/prefix" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛPrefix   []ygot.Annotation                                                                              `path:"prefixes/@prefix" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_DefinedSets_PrefixSet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_DefinedSets_PrefixSet) IsYANGGoStruct() {}

// RoutingPolicy_DefinedSets_PrefixSet_Prefix_Key represents the key for list Prefix of element /openconfig-routing-policy/routing-policy/defined-sets/prefix-sets/prefix-set.
type RoutingPolicy_DefinedSets_PrefixSet_Prefix_Key struct {
	IpPrefix        string `path:"ip-prefix"`
	MasklengthRange string `path:"masklength-range"`
}

// IsYANGGoKeyStruct ensures that RoutingPolicy_DefinedSets_PrefixSet_Prefix_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (RoutingPolicy_DefinedSets_PrefixSet_Prefix_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the RoutingPolicy_DefinedSets_PrefixSet_Prefix_Key key struct.
func (t RoutingPolicy_DefinedSets_PrefixSet_Prefix_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"ip-prefix":        t.IpPrefix,
		"masklength-range": t.MasklengthRange,
	}, nil
}

// NewPrefix creates a new entry in the Prefix list of the
// RoutingPolicy_DefinedSets_PrefixSet struct. The keys of the list are populated from the input
// arguments.
func (t *RoutingPolicy_DefinedSets_PrefixSet) NewPrefix(IpPrefix string, MasklengthRange string) (*RoutingPolicy_DefinedSets_PrefixSet_Prefix, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[RoutingPolicy_DefinedSets_PrefixSet_Prefix_Key]*RoutingPolicy_DefinedSets_PrefixSet_Prefix)
	}

	key := RoutingPolicy_DefinedSets_PrefixSet_Prefix_Key{
		IpPrefix:        IpPrefix,
		MasklengthRange: MasklengthRange,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Prefix[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Prefix", key)
	}

	t.Prefix[key] = &RoutingPolicy_DefinedSets_PrefixSet_Prefix{
		IpPrefix:        &IpPrefix,
		MasklengthRange: &MasklengthRange,
	}

	return t.Prefix[key], nil
}

// RenamePrefix renames an entry in the list Prefix within
// the RoutingPolicy_DefinedSets_PrefixSet struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *RoutingPolicy_DefinedSets_PrefixSet) RenamePrefix(oldK, newK RoutingPolicy_DefinedSets_PrefixSet_Prefix_Key) error {
	if _, ok := t.Prefix[newK]; ok {
		return fmt.Errorf("key %v already exists in Prefix", newK)
	}

	e, ok := t.Prefix[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Prefix", oldK)
	}
	e.IpPrefix = &newK.IpPrefix
	e.MasklengthRange = &newK.MasklengthRange

	t.Prefix[newK] = e
	delete(t.Prefix, oldK)
	return nil
}

// GetOrCreatePrefixMap returns the list (map) from RoutingPolicy_DefinedSets_PrefixSet.
//
// It initializes the field if not already initialized.
func (t *RoutingPolicy_DefinedSets_PrefixSet) GetOrCreatePrefixMap() map[RoutingPolicy_DefinedSets_PrefixSet_Prefix_Key]*RoutingPolicy_DefinedSets_PrefixSet_Prefix {
	if t.Prefix == nil {
		t.Prefix = make(map[RoutingPolicy_DefinedSets_PrefixSet_Prefix_Key]*RoutingPolicy_DefinedSets_PrefixSet_Prefix)
	}
	return t.Prefix
}

// GetOrCreatePrefix retrieves the value with the specified keys from
// the receiver RoutingPolicy_DefinedSets_PrefixSet. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *RoutingPolicy_DefinedSets_PrefixSet) GetOrCreatePrefix(IpPrefix string, MasklengthRange string) *RoutingPolicy_DefinedSets_PrefixSet_Prefix {

	key := RoutingPolicy_DefinedSets_PrefixSet_Prefix_Key{
		IpPrefix:        IpPrefix,
		MasklengthRange: MasklengthRange,
	}

	if v, ok := t.Prefix[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewPrefix(IpPrefix, MasklengthRange)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreatePrefix got unexpected error: %v", err))
	}
	return v
}

// GetPrefix retrieves the value with the specified key from
// the Prefix map field of RoutingPolicy_DefinedSets_PrefixSet. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *RoutingPolicy_DefinedSets_PrefixSet) GetPrefix(IpPrefix string, MasklengthRange string) *RoutingPolicy_DefinedSets_PrefixSet_Prefix {

	if t == nil {
		return nil
	}

	key := RoutingPolicy_DefinedSets_PrefixSet_Prefix_Key{
		IpPrefix:        IpPrefix,
		MasklengthRange: MasklengthRange,
	}

	if lm, ok := t.Prefix[key]; ok {
		return lm
	}
	return nil
}

// AppendPrefix appends the supplied RoutingPolicy_DefinedSets_PrefixSet_Prefix struct to the
// list Prefix of RoutingPolicy_DefinedSets_PrefixSet. If the key value(s) specified in
// the supplied RoutingPolicy_DefinedSets_PrefixSet_Prefix already exist in the list, an error is
// returned.
func (t *RoutingPolicy_DefinedSets_PrefixSet) AppendPrefix(v *RoutingPolicy_DefinedSets_PrefixSet_Prefix) error {
	if v.IpPrefix == nil {
		return fmt.Errorf("invalid nil key for IpPrefix")
	}

	if v.MasklengthRange == nil {
		return fmt.Errorf("invalid nil key for MasklengthRange")
	}

	key := RoutingPolicy_DefinedSets_PrefixSet_Prefix_Key{
		IpPrefix:        *v.IpPrefix,
		MasklengthRange: *v.MasklengthRange,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Prefix == nil {
		t.Prefix = make(map[RoutingPolicy_DefinedSets_PrefixSet_Prefix_Key]*RoutingPolicy_DefinedSets_PrefixSet_Prefix)
	}

	if _, ok := t.Prefix[key]; ok {
		return fmt.Errorf("duplicate key for list Prefix %v", key)
	}

	t.Prefix[key] = v
	return nil
}

// GetMode retrieves the value of the leaf Mode from the RoutingPolicy_DefinedSets_PrefixSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mode is set, it can
// safely use t.GetMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mode == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_DefinedSets_PrefixSet) GetMode() E_PrefixSet_Mode {
	if t == nil || t.Mode == 0 {
		return 0
	}
	return t.Mode
}

// GetName retrieves the value of the leaf Name from the RoutingPolicy_DefinedSets_PrefixSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_DefinedSets_PrefixSet) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_DefinedSets_PrefixSet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_DefinedSets_PrefixSet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Prefix {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the RoutingPolicy_DefinedSets_PrefixSet struct, which is a YANG list entry.
func (t *RoutingPolicy_DefinedSets_PrefixSet) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets_PrefixSet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_DefinedSets_PrefixSet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets_PrefixSet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_DefinedSets_PrefixSet) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_DefinedSets_PrefixSet.
func (*RoutingPolicy_DefinedSets_PrefixSet) ΛBelongingModule() string {
	return "openconfig-routing-policy"
}

// RoutingPolicy_DefinedSets_PrefixSet_Prefix represents the /openconfig-routing-policy/routing-policy/defined-sets/prefix-sets/prefix-set/prefixes/prefix YANG schema element.
type RoutingPolicy_DefinedSets_PrefixSet_Prefix struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	IpPrefix         *string           `path:"config/ip-prefix|ip-prefix" module:"openconfig-routing-policy/openconfig-routing-policy|openconfig-routing-policy"`
	ΛIpPrefix        []ygot.Annotation `path:"config/@ip-prefix|@ip-prefix" ygotAnnotation:"true"`
	MasklengthRange  *string           `path:"config/masklength-range|masklength-range" module:"openconfig-routing-policy/openconfig-routing-policy|openconfig-routing-policy"`
	ΛMasklengthRange []ygot.Annotation `path:"config/@masklength-range|@masklength-range" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_DefinedSets_PrefixSet_Prefix implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_DefinedSets_PrefixSet_Prefix) IsYANGGoStruct() {}

// GetIpPrefix retrieves the value of the leaf IpPrefix from the RoutingPolicy_DefinedSets_PrefixSet_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IpPrefix is set, it can
// safely use t.GetIpPrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IpPrefix == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_DefinedSets_PrefixSet_Prefix) GetIpPrefix() string {
	if t == nil || t.IpPrefix == nil {
		return ""
	}
	return *t.IpPrefix
}

// GetMasklengthRange retrieves the value of the leaf MasklengthRange from the RoutingPolicy_DefinedSets_PrefixSet_Prefix
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MasklengthRange is set, it can
// safely use t.GetMasklengthRange() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MasklengthRange == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_DefinedSets_PrefixSet_Prefix) GetMasklengthRange() string {
	if t == nil || t.MasklengthRange == nil {
		return ""
	}
	return *t.MasklengthRange
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_DefinedSets_PrefixSet_Prefix
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_DefinedSets_PrefixSet_Prefix) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the RoutingPolicy_DefinedSets_PrefixSet_Prefix struct, which is a YANG list entry.
func (t *RoutingPolicy_DefinedSets_PrefixSet_Prefix) ΛListKeyMap() (map[string]interface{}, error) {
	if t.IpPrefix == nil {
		return nil, fmt.Errorf("nil value for key IpPrefix")
	}

	if t.MasklengthRange == nil {
		return nil, fmt.Errorf("nil value for key MasklengthRange")
	}

	return map[string]interface{}{
		"ip-prefix":        *t.IpPrefix,
		"masklength-range": *t.MasklengthRange,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets_PrefixSet_Prefix) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_DefinedSets_PrefixSet_Prefix"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets_PrefixSet_Prefix) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_DefinedSets_PrefixSet_Prefix) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_DefinedSets_PrefixSet_Prefix.
func (*RoutingPolicy_DefinedSets_PrefixSet_Prefix) ΛBelongingModule() string {
	return "openconfig-routing-policy"
}

// RoutingPolicy_DefinedSets_TagSet represents the /openconfig-routing-policy/routing-policy/defined-sets/tag-sets/tag-set YANG schema element.
type RoutingPolicy_DefinedSets_TagSet struct {
	ΛMetadata []ygot.Annotation                                 `path:"@" ygotAnnotation:"true"`
	Name      *string                                           `path:"config/name|name" module:"openconfig-routing-policy/openconfig-routing-policy|openconfig-routing-policy"`
	ΛName     []ygot.Annotation                                 `path:"config/@name|@name" ygotAnnotation:"true"`
	TagValue  []RoutingPolicy_DefinedSets_TagSet_TagValue_Union `path:"config/tag-value" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛTagValue []ygot.Annotation                                 `path:"config/@tag-value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_DefinedSets_TagSet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_DefinedSets_TagSet) IsYANGGoStruct() {}

// GetName retrieves the value of the leaf Name from the RoutingPolicy_DefinedSets_TagSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_DefinedSets_TagSet) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetTagValue retrieves the value of the leaf TagValue from the RoutingPolicy_DefinedSets_TagSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TagValue is set, it can
// safely use t.GetTagValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TagValue == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_DefinedSets_TagSet) GetTagValue() []RoutingPolicy_DefinedSets_TagSet_TagValue_Union {
	if t == nil || t.TagValue == nil {
		return nil
	}
	return t.TagValue
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_DefinedSets_TagSet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_DefinedSets_TagSet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the RoutingPolicy_DefinedSets_TagSet struct, which is a YANG list entry.
func (t *RoutingPolicy_DefinedSets_TagSet) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets_TagSet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_DefinedSets_TagSet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_DefinedSets_TagSet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_DefinedSets_TagSet) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_DefinedSets_TagSet.
func (*RoutingPolicy_DefinedSets_TagSet) ΛBelongingModule() string {
	return "openconfig-routing-policy"
}

// RoutingPolicy_DefinedSets_TagSet_TagValue_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-routing-policy/routing-policy/defined-sets/tag-sets/tag-set/config/tag-value within the YANG schema.
// Union type can be one of [UnionString, UnionUint32].
type RoutingPolicy_DefinedSets_TagSet_TagValue_Union interface {
	// Union type can be one of [UnionString, UnionUint32]
	Documentation_for_RoutingPolicy_DefinedSets_TagSet_TagValue_Union()
}

// Documentation_for_RoutingPolicy_DefinedSets_TagSet_TagValue_Union ensures that UnionString
// implements the RoutingPolicy_DefinedSets_TagSet_TagValue_Union interface.
func (UnionString) Documentation_for_RoutingPolicy_DefinedSets_TagSet_TagValue_Union() {}

// Documentation_for_RoutingPolicy_DefinedSets_TagSet_TagValue_Union ensures that UnionUint32
// implements the RoutingPolicy_DefinedSets_TagSet_TagValue_Union interface.
func (UnionUint32) Documentation_for_RoutingPolicy_DefinedSets_TagSet_TagValue_Union() {}

// To_RoutingPolicy_DefinedSets_TagSet_TagValue_Union takes an input interface{} and attempts to convert it to a struct
// which implements the RoutingPolicy_DefinedSets_TagSet_TagValue_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *RoutingPolicy_DefinedSets_TagSet) To_RoutingPolicy_DefinedSets_TagSet_TagValue_Union(i interface{}) (RoutingPolicy_DefinedSets_TagSet_TagValue_Union, error) {
	if v, ok := i.(RoutingPolicy_DefinedSets_TagSet_TagValue_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to RoutingPolicy_DefinedSets_TagSet_TagValue_Union, unknown union type, got: %T, want any of [string, uint32]", i, i)
}

// RoutingPolicy_PolicyDefinition represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition YANG schema element.
type RoutingPolicy_PolicyDefinition struct {
	ΛMetadata  []ygot.Annotation                                    `path:"@" ygotAnnotation:"true"`
	Name       *string                                              `path:"config/name|name" module:"openconfig-routing-policy/openconfig-routing-policy|openconfig-routing-policy"`
	ΛName      []ygot.Annotation                                    `path:"config/@name|@name" ygotAnnotation:"true"`
	Statement  *RoutingPolicy_PolicyDefinition_Statement_OrderedMap `path:"statements/statement" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛStatement []ygot.Annotation                                    `path:"statements/@statement" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition) IsYANGGoStruct() {}

// GetName retrieves the value of the leaf Name from the RoutingPolicy_PolicyDefinition
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetOrCreateStatementMap returns the ordered map field
// Statement from RoutingPolicy_PolicyDefinition.
//
// It initializes the field if not already initialized.
func (s *RoutingPolicy_PolicyDefinition) GetOrCreateStatementMap() *RoutingPolicy_PolicyDefinition_Statement_OrderedMap {
	if s.Statement == nil {
		s.Statement = &RoutingPolicy_PolicyDefinition_Statement_OrderedMap{}
	}
	return s.Statement
}

// AppendNewStatement creates a new entry in the Statement
// ordered map of the RoutingPolicy_PolicyDefinition struct. The keys of the list are
// populated from the input arguments.
func (s *RoutingPolicy_PolicyDefinition) AppendNewStatement(Name string) (*RoutingPolicy_PolicyDefinition_Statement, error) {
	if s.Statement == nil {
		s.Statement = &RoutingPolicy_PolicyDefinition_Statement_OrderedMap{}
	}
	return s.Statement.AppendNew(Name)
}

// AppendStatement appends the supplied RoutingPolicy_PolicyDefinition_Statement struct
// to the list Statement of RoutingPolicy_PolicyDefinition. If the key value(s)
// specified in the supplied RoutingPolicy_PolicyDefinition_Statement already exist in the list, an
// error is returned.
func (s *RoutingPolicy_PolicyDefinition) AppendStatement(v *RoutingPolicy_PolicyDefinition_Statement) error {
	if s.Statement == nil {
		s.Statement = &RoutingPolicy_PolicyDefinition_Statement_OrderedMap{}
	}
	return s.Statement.Append(v)
}

// GetStatement retrieves the value with the specified key from the
// Statement map field of RoutingPolicy_PolicyDefinition. If the receiver
// is nil, or the specified key is not present in the list, nil is returned
// such that Get* methods may be safely chained.
func (s *RoutingPolicy_PolicyDefinition) GetStatement(Name string) *RoutingPolicy_PolicyDefinition_Statement {
	if s == nil {
		return nil
	}
	key := Name
	return s.Statement.Get(key)
}

// DeleteStatement deletes the value with the specified keys from
// the receiver RoutingPolicy_PolicyDefinition. If there is no such element, the
// function is a no-op.
func (s *RoutingPolicy_PolicyDefinition) DeleteStatement(Name string) bool {
	key := Name
	return s.Statement.Delete(key)
}

// RoutingPolicy_PolicyDefinition_Statement_OrderedMap is an ordered map that represents the "ordered-by user"
// list elements at /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement.
type RoutingPolicy_PolicyDefinition_Statement_OrderedMap struct {
	keys     []string
	valueMap map[string]*RoutingPolicy_PolicyDefinition_Statement
}

// IsYANGOrderedList ensures that RoutingPolicy_PolicyDefinition_Statement_OrderedMap implements the
// ygot.GoOrderedMap interface.
func (*RoutingPolicy_PolicyDefinition_Statement_OrderedMap) IsYANGOrderedList() {}

// init initializes any uninitialized values.
func (o *RoutingPolicy_PolicyDefinition_Statement_OrderedMap) init() {
	if o == nil {
		return
	}
	if o.valueMap == nil {
		o.valueMap = map[string]*RoutingPolicy_PolicyDefinition_Statement{}
	}
}

// Keys returns a copy of the list's keys.
func (o *RoutingPolicy_PolicyDefinition_Statement_OrderedMap) Keys() []string {
	if o == nil {
		return nil
	}
	return append([]string{}, o.keys...)
}

// Values returns the current set of the list's values in order.
func (o *RoutingPolicy_PolicyDefinition_Statement_OrderedMap) Values() []*RoutingPolicy_PolicyDefinition_Statement {
	if o == nil {
		return nil
	}
	var values []*RoutingPolicy_PolicyDefinition_Statement
	for _, key := range o.keys {
		values = append(values, o.valueMap[key])
	}
	return values
}

// Len returns a size of RoutingPolicy_PolicyDefinition_Statement_OrderedMap
func (o *RoutingPolicy_PolicyDefinition_Statement_OrderedMap) Len() int {
	if o == nil {
		return 0
	}
	return len(o.keys)
}

// Get returns the value corresponding to the key. If the key is not found, nil
// is returned.
func (o *RoutingPolicy_PolicyDefinition_Statement_OrderedMap) Get(key string) *RoutingPolicy_PolicyDefinition_Statement {
	if o == nil {
		return nil
	}
	val, _ := o.valueMap[key]
	return val
}

// Delete deletes an element.
func (o *RoutingPolicy_PolicyDefinition_Statement_OrderedMap) Delete(key string) bool {
	if o == nil {
		return false
	}
	if _, ok := o.valueMap[key]; !ok {
		return false
	}
	for i, k := range o.keys {
		if k == key {
			o.keys = append(o.keys[:i], o.keys[i+1:]...)
			delete(o.valueMap, key)
			return true
		}
	}
	return false
}

// Append appends a RoutingPolicy_PolicyDefinition_Statement, returning an error if the key
// already exists in the ordered list or if the key is unspecified.
func (o *RoutingPolicy_PolicyDefinition_Statement_OrderedMap) Append(v *RoutingPolicy_PolicyDefinition_Statement) error {
	if o == nil {
		return fmt.Errorf("nil ordered map, cannot append RoutingPolicy_PolicyDefinition_Statement")
	}
	if v == nil {
		return fmt.Errorf("nil RoutingPolicy_PolicyDefinition_Statement")
	}
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	if _, ok := o.valueMap[key]; ok {
		return fmt.Errorf("duplicate key for list Statement %v", key)
	}
	o.keys = append(o.keys, key)
	o.init()
	o.valueMap[key] = v
	return nil
}

// AppendNew creates and appends a new RoutingPolicy_PolicyDefinition_Statement, returning the
// newly-initialized v. It returns an error if the v already exists.
func (o *RoutingPolicy_PolicyDefinition_Statement_OrderedMap) AppendNew(Name string) (*RoutingPolicy_PolicyDefinition_Statement, error) {
	if o == nil {
		return nil, fmt.Errorf("nil ordered map, cannot append RoutingPolicy_PolicyDefinition_Statement")
	}
	key := Name

	if _, ok := o.valueMap[key]; ok {
		return nil, fmt.Errorf("duplicate key for list Statement %v", key)
	}
	o.keys = append(o.keys, key)
	newElement := &RoutingPolicy_PolicyDefinition_Statement{
		Name: &Name,
	}
	o.init()
	o.valueMap[key] = newElement
	return newElement, nil
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Statement.Values() {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the RoutingPolicy_PolicyDefinition struct, which is a YANG list entry.
func (t *RoutingPolicy_PolicyDefinition) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition.
func (*RoutingPolicy_PolicyDefinition) ΛBelongingModule() string {
	return "openconfig-routing-policy"
}

// RoutingPolicy_PolicyDefinition_Statement represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement struct {
	ΛMetadata   []ygot.Annotation                                    `path:"@" ygotAnnotation:"true"`
	Actions     *RoutingPolicy_PolicyDefinition_Statement_Actions    `path:"actions" module:"openconfig-routing-policy"`
	ΛActions    []ygot.Annotation                                    `path:"@actions" ygotAnnotation:"true"`
	Conditions  *RoutingPolicy_PolicyDefinition_Statement_Conditions `path:"conditions" module:"openconfig-routing-policy"`
	ΛConditions []ygot.Annotation                                    `path:"@conditions" ygotAnnotation:"true"`
	Name        *string                                              `path:"config/name|name" module:"openconfig-routing-policy/openconfig-routing-policy|openconfig-routing-policy"`
	ΛName       []ygot.Annotation                                    `path:"config/@name|@name" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement) IsYANGGoStruct() {}

// GetOrCreateActions retrieves the value of the Actions field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement) GetOrCreateActions() *RoutingPolicy_PolicyDefinition_Statement_Actions {
	if t.Actions != nil {
		return t.Actions
	}
	t.Actions = &RoutingPolicy_PolicyDefinition_Statement_Actions{}
	return t.Actions
}

// GetOrCreateConditions retrieves the value of the Conditions field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement) GetOrCreateConditions() *RoutingPolicy_PolicyDefinition_Statement_Conditions {
	if t.Conditions != nil {
		return t.Conditions
	}
	t.Conditions = &RoutingPolicy_PolicyDefinition_Statement_Conditions{}
	return t.Conditions
}

// GetActions returns the value of the Actions struct pointer
// from RoutingPolicy_PolicyDefinition_Statement. If the receiver or the field Actions is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement) GetActions() *RoutingPolicy_PolicyDefinition_Statement_Actions {
	if t != nil && t.Actions != nil {
		return t.Actions
	}
	return nil
}

// GetConditions returns the value of the Conditions struct pointer
// from RoutingPolicy_PolicyDefinition_Statement. If the receiver or the field Conditions is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement) GetConditions() *RoutingPolicy_PolicyDefinition_Statement_Conditions {
	if t != nil && t.Conditions != nil {
		return t.Conditions
	}
	return nil
}

// GetName retrieves the value of the leaf Name from the RoutingPolicy_PolicyDefinition_Statement
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Actions.PopulateDefaults()
	t.Conditions.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the RoutingPolicy_PolicyDefinition_Statement struct, which is a YANG list entry.
func (t *RoutingPolicy_PolicyDefinition_Statement) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement.
func (*RoutingPolicy_PolicyDefinition_Statement) ΛBelongingModule() string {
	return "openconfig-routing-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Actions represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/actions YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Actions struct {
	ΛMetadata     []ygot.Annotation                                            `path:"@" ygotAnnotation:"true"`
	BgpActions    *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions `path:"bgp-actions" module:"openconfig-bgp-policy"`
	ΛBgpActions   []ygot.Annotation                                            `path:"@bgp-actions" ygotAnnotation:"true"`
	PolicyResult  E_RoutingPolicy_PolicyResultType                             `path:"config/policy-result" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛPolicyResult []ygot.Annotation                                            `path:"config/@policy-result" ygotAnnotation:"true"`
	SetTag        *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag     `path:"set-tag" module:"openconfig-routing-policy"`
	ΛSetTag       []ygot.Annotation                                            `path:"@set-tag" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Actions implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions) IsYANGGoStruct() {}

// GetOrCreateBgpActions retrieves the value of the BgpActions field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions) GetOrCreateBgpActions() *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions {
	if t.BgpActions != nil {
		return t.BgpActions
	}
	t.BgpActions = &RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions{}
	return t.BgpActions
}

// GetOrCreateSetTag retrieves the value of the SetTag field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions) GetOrCreateSetTag() *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag {
	if t.SetTag != nil {
		return t.SetTag
	}
	t.SetTag = &RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag{}
	return t.SetTag
}

// GetBgpActions returns the value of the BgpActions struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Actions. If the receiver or the field BgpActions is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions) GetBgpActions() *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions {
	if t != nil && t.BgpActions != nil {
		return t.BgpActions
	}
	return nil
}

// GetSetTag returns the value of the SetTag struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Actions. If the receiver or the field SetTag is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions) GetSetTag() *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag {
	if t != nil && t.SetTag != nil {
		return t.SetTag
	}
	return nil
}

// GetPolicyResult retrieves the value of the leaf PolicyResult from the RoutingPolicy_PolicyDefinition_Statement_Actions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PolicyResult is set, it can
// safely use t.GetPolicyResult() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PolicyResult == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions) GetPolicyResult() E_RoutingPolicy_PolicyResultType {
	if t == nil || t.PolicyResult == 0 {
		return RoutingPolicy_PolicyResultType_NEXT_STATEMENT
	}
	return t.PolicyResult
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Actions
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.PolicyResult == 0 {
		t.PolicyResult = RoutingPolicy_PolicyResultType_NEXT_STATEMENT
	}
	t.BgpActions.PopulateDefaults()
	t.SetTag.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Actions"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Actions.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions) ΛBelongingModule() string {
	return "openconfig-routing-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions struct {
	ΛMetadata         []ygot.Annotation                                                             `path:"@" ygotAnnotation:"true"`
	SetAsPathPrepend  *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend `path:"set-as-path-prepend" module:"openconfig-bgp-policy"`
	ΛSetAsPathPrepend []ygot.Annotation                                                             `path:"@set-as-path-prepend" ygotAnnotation:"true"`
	SetCommunity      *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity     `path:"set-community" module:"openconfig-bgp-policy"`
	ΛSetCommunity     []ygot.Annotation                                                             `path:"@set-community" ygotAnnotation:"true"`
	SetExtCommunity   *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity  `path:"set-ext-community" module:"openconfig-bgp-policy"`
	ΛSetExtCommunity  []ygot.Annotation                                                             `path:"@set-ext-community" ygotAnnotation:"true"`
	SetLocalPref      *uint32                                                                       `path:"config/set-local-pref" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛSetLocalPref     []ygot.Annotation                                                             `path:"config/@set-local-pref" ygotAnnotation:"true"`
	SetMed            RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union      `path:"config/set-med" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛSetMed           []ygot.Annotation                                                             `path:"config/@set-med" ygotAnnotation:"true"`
	SetNextHop        RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetNextHop_Union  `path:"config/set-next-hop" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛSetNextHop       []ygot.Annotation                                                             `path:"config/@set-next-hop" ygotAnnotation:"true"`
	SetRouteOrigin    E_BgpTypes_BgpOriginAttrType                                                  `path:"config/set-route-origin" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛSetRouteOrigin   []ygot.Annotation                                                             `path:"config/@set-route-origin" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) IsYANGGoStruct() {}

// GetOrCreateSetAsPathPrepend retrieves the value of the SetAsPathPrepend field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) GetOrCreateSetAsPathPrepend() *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend {
	if t.SetAsPathPrepend != nil {
		return t.SetAsPathPrepend
	}
	t.SetAsPathPrepend = &RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend{}
	return t.SetAsPathPrepend
}

// GetOrCreateSetCommunity retrieves the value of the SetCommunity field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) GetOrCreateSetCommunity() *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity {
	if t.SetCommunity != nil {
		return t.SetCommunity
	}
	t.SetCommunity = &RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity{}
	return t.SetCommunity
}

// GetOrCreateSetExtCommunity retrieves the value of the SetExtCommunity field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) GetOrCreateSetExtCommunity() *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity {
	if t.SetExtCommunity != nil {
		return t.SetExtCommunity
	}
	t.SetExtCommunity = &RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity{}
	return t.SetExtCommunity
}

// GetSetAsPathPrepend returns the value of the SetAsPathPrepend struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions. If the receiver or the field SetAsPathPrepend is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) GetSetAsPathPrepend() *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend {
	if t != nil && t.SetAsPathPrepend != nil {
		return t.SetAsPathPrepend
	}
	return nil
}

// GetSetCommunity returns the value of the SetCommunity struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions. If the receiver or the field SetCommunity is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) GetSetCommunity() *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity {
	if t != nil && t.SetCommunity != nil {
		return t.SetCommunity
	}
	return nil
}

// GetSetExtCommunity returns the value of the SetExtCommunity struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions. If the receiver or the field SetExtCommunity is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) GetSetExtCommunity() *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity {
	if t != nil && t.SetExtCommunity != nil {
		return t.SetExtCommunity
	}
	return nil
}

// GetSetLocalPref retrieves the value of the leaf SetLocalPref from the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SetLocalPref is set, it can
// safely use t.GetSetLocalPref() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SetLocalPref == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) GetSetLocalPref() uint32 {
	if t == nil || t.SetLocalPref == nil {
		return 0
	}
	return *t.SetLocalPref
}

// GetSetMed retrieves the value of the leaf SetMed from the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SetMed is set, it can
// safely use t.GetSetMed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SetMed == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) GetSetMed() RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union {
	if t == nil || t.SetMed == nil {
		return nil
	}
	return t.SetMed
}

// GetSetNextHop retrieves the value of the leaf SetNextHop from the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SetNextHop is set, it can
// safely use t.GetSetNextHop() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SetNextHop == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) GetSetNextHop() RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetNextHop_Union {
	if t == nil || t.SetNextHop == nil {
		return nil
	}
	return t.SetNextHop
}

// GetSetRouteOrigin retrieves the value of the leaf SetRouteOrigin from the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SetRouteOrigin is set, it can
// safely use t.GetSetRouteOrigin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SetRouteOrigin == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) GetSetRouteOrigin() E_BgpTypes_BgpOriginAttrType {
	if t == nil || t.SetRouteOrigin == 0 {
		return 0
	}
	return t.SetRouteOrigin
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.SetAsPathPrepend.PopulateDefaults()
	t.SetCommunity.PopulateDefaults()
	t.SetExtCommunity.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/config/set-med within the YANG schema.
// Union type can be one of [E_BgpPolicy_BgpSetMedType_Enum, UnionString, UnionUint32].
type RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union interface {
	// Union type can be one of [E_BgpPolicy_BgpSetMedType_Enum, UnionString, UnionUint32]
	Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union()
}

// Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union ensures that E_BgpPolicy_BgpSetMedType_Enum
// implements the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union interface.
func (E_BgpPolicy_BgpSetMedType_Enum) Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union() {
}

// Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union ensures that UnionString
// implements the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union interface.
func (UnionString) Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union() {
}

// Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union ensures that UnionUint32
// implements the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union interface.
func (UnionUint32) Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union() {
}

// To_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union takes an input interface{} and attempts to convert it to a struct
// which implements the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) To_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union(i interface{}) (RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union, error) {
	if v, ok := i.(RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetMed_Union, unknown union type, got: %T, want any of [E_BgpPolicy_BgpSetMedType_Enum, string, uint32]", i, i)
}

// RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetNextHop_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/config/set-next-hop within the YANG schema.
// Union type can be one of [E_BgpPolicy_BgpNextHopType_Enum, UnionString].
type RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetNextHop_Union interface {
	// Union type can be one of [E_BgpPolicy_BgpNextHopType_Enum, UnionString]
	Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetNextHop_Union()
}

// Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetNextHop_Union ensures that E_BgpPolicy_BgpNextHopType_Enum
// implements the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetNextHop_Union interface.
func (E_BgpPolicy_BgpNextHopType_Enum) Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetNextHop_Union() {
}

// Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetNextHop_Union ensures that UnionString
// implements the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetNextHop_Union interface.
func (UnionString) Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetNextHop_Union() {
}

// To_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetNextHop_Union takes an input interface{} and attempts to convert it to a struct
// which implements the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetNextHop_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions) To_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetNextHop_Union(i interface{}) (RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetNextHop_Union, error) {
	if v, ok := i.(RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetNextHop_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetNextHop_Union, unknown union type, got: %T, want any of [E_BgpPolicy_BgpNextHopType_Enum, string]", i, i)
}

// RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-as-path-prepend YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Asn       *uint32           `path:"config/asn" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛAsn      []ygot.Annotation `path:"config/@asn" ygotAnnotation:"true"`
	RepeatN   *uint8            `path:"config/repeat-n" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛRepeatN  []ygot.Annotation `path:"config/@repeat-n" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend) IsYANGGoStruct() {
}

// GetAsn retrieves the value of the leaf Asn from the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Asn is set, it can
// safely use t.GetAsn() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Asn == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend) GetAsn() uint32 {
	if t == nil || t.Asn == nil {
		return 0
	}
	return *t.Asn
}

// GetRepeatN retrieves the value of the leaf RepeatN from the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RepeatN is set, it can
// safely use t.GetRepeatN() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RepeatN == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend) GetRepeatN() uint8 {
	if t == nil || t.RepeatN == nil {
		return 0
	}
	return *t.RepeatN
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetAsPathPrepend) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-community YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity struct {
	ΛMetadata  []ygot.Annotation                                                                   `path:"@" ygotAnnotation:"true"`
	Inline     *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline    `path:"inline" module:"openconfig-bgp-policy"`
	ΛInline    []ygot.Annotation                                                                   `path:"@inline" ygotAnnotation:"true"`
	Method     E_SetCommunity_Method                                                               `path:"config/method" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛMethod    []ygot.Annotation                                                                   `path:"config/@method" ygotAnnotation:"true"`
	Options    E_BgpPolicy_BgpSetCommunityOptionType                                               `path:"config/options" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛOptions   []ygot.Annotation                                                                   `path:"config/@options" ygotAnnotation:"true"`
	Reference  *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference `path:"reference" module:"openconfig-bgp-policy"`
	ΛReference []ygot.Annotation                                                                   `path:"@reference" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity) IsYANGGoStruct() {}

// GetOrCreateInline retrieves the value of the Inline field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity) GetOrCreateInline() *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline {
	if t.Inline != nil {
		return t.Inline
	}
	t.Inline = &RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline{}
	return t.Inline
}

// GetOrCreateReference retrieves the value of the Reference field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity) GetOrCreateReference() *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference {
	if t.Reference != nil {
		return t.Reference
	}
	t.Reference = &RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference{}
	return t.Reference
}

// GetInline returns the value of the Inline struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity. If the receiver or the field Inline is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity) GetInline() *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline {
	if t != nil && t.Inline != nil {
		return t.Inline
	}
	return nil
}

// GetReference returns the value of the Reference struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity. If the receiver or the field Reference is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity) GetReference() *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference {
	if t != nil && t.Reference != nil {
		return t.Reference
	}
	return nil
}

// GetMethod retrieves the value of the leaf Method from the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Method is set, it can
// safely use t.GetMethod() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Method == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity) GetMethod() E_SetCommunity_Method {
	if t == nil || t.Method == 0 {
		return 0
	}
	return t.Method
}

// GetOptions retrieves the value of the leaf Options from the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Options is set, it can
// safely use t.GetOptions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Options == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity) GetOptions() E_BgpPolicy_BgpSetCommunityOptionType {
	if t == nil || t.Options == 0 {
		return 0
	}
	return t.Options
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Inline.PopulateDefaults()
	t.Reference.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-community/inline YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline struct {
	ΛMetadata    []ygot.Annotation                                                                                   `path:"@" ygotAnnotation:"true"`
	Communities  []RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union `path:"config/communities" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛCommunities []ygot.Annotation                                                                                   `path:"config/@communities" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline) IsYANGGoStruct() {
}

// GetCommunities retrieves the value of the leaf Communities from the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Communities is set, it can
// safely use t.GetCommunities() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Communities == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline) GetCommunities() []RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union {
	if t == nil || t.Communities == nil {
		return nil
	}
	return t.Communities
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-community/inline/config/communities within the YANG schema.
// Union type can be one of [E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY, UnionString, UnionUint32].
type RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union interface {
	// Union type can be one of [E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY, UnionString, UnionUint32]
	Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union()
}

// Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union ensures that E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY
// implements the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union interface.
func (E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY) Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union() {
}

// Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union ensures that UnionString
// implements the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union interface.
func (UnionString) Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union() {
}

// Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union ensures that UnionUint32
// implements the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union interface.
func (UnionUint32) Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union() {
}

// To_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union takes an input interface{} and attempts to convert it to a struct
// which implements the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline) To_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union(i interface{}) (RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union, error) {
	if v, ok := i.(RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Inline_Communities_Union, unknown union type, got: %T, want any of [E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY, string, uint32]", i, i)
}

// RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-community/reference YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference struct {
	ΛMetadata         []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	CommunitySetRef   *string           `path:"config/community-set-ref" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛCommunitySetRef  []ygot.Annotation `path:"config/@community-set-ref" ygotAnnotation:"true"`
	CommunitySetRefs  []string          `path:"config/community-set-refs" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛCommunitySetRefs []ygot.Annotation `path:"config/@community-set-refs" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference) IsYANGGoStruct() {
}

// GetCommunitySetRef retrieves the value of the leaf CommunitySetRef from the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunitySetRef is set, it can
// safely use t.GetCommunitySetRef() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunitySetRef == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference) GetCommunitySetRef() string {
	if t == nil || t.CommunitySetRef == nil {
		return ""
	}
	return *t.CommunitySetRef
}

// GetCommunitySetRefs retrieves the value of the leaf CommunitySetRefs from the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunitySetRefs is set, it can
// safely use t.GetCommunitySetRefs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunitySetRefs == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference) GetCommunitySetRefs() []string {
	if t == nil || t.CommunitySetRefs == nil {
		return nil
	}
	return t.CommunitySetRefs
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetCommunity_Reference) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-ext-community YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity struct {
	ΛMetadata  []ygot.Annotation                                                                      `path:"@" ygotAnnotation:"true"`
	Inline     *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline    `path:"inline" module:"openconfig-bgp-policy"`
	ΛInline    []ygot.Annotation                                                                      `path:"@inline" ygotAnnotation:"true"`
	Method     E_SetCommunity_Method                                                                  `path:"config/method" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛMethod    []ygot.Annotation                                                                      `path:"config/@method" ygotAnnotation:"true"`
	Options    E_BgpPolicy_BgpSetCommunityOptionType                                                  `path:"config/options" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛOptions   []ygot.Annotation                                                                      `path:"config/@options" ygotAnnotation:"true"`
	Reference  *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference `path:"reference" module:"openconfig-bgp-policy"`
	ΛReference []ygot.Annotation                                                                      `path:"@reference" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity) IsYANGGoStruct() {
}

// GetOrCreateInline retrieves the value of the Inline field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity) GetOrCreateInline() *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline {
	if t.Inline != nil {
		return t.Inline
	}
	t.Inline = &RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline{}
	return t.Inline
}

// GetOrCreateReference retrieves the value of the Reference field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity) GetOrCreateReference() *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference {
	if t.Reference != nil {
		return t.Reference
	}
	t.Reference = &RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference{}
	return t.Reference
}

// GetInline returns the value of the Inline struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity. If the receiver or the field Inline is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity) GetInline() *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline {
	if t != nil && t.Inline != nil {
		return t.Inline
	}
	return nil
}

// GetReference returns the value of the Reference struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity. If the receiver or the field Reference is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity) GetReference() *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference {
	if t != nil && t.Reference != nil {
		return t.Reference
	}
	return nil
}

// GetMethod retrieves the value of the leaf Method from the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Method is set, it can
// safely use t.GetMethod() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Method == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity) GetMethod() E_SetCommunity_Method {
	if t == nil || t.Method == 0 {
		return 0
	}
	return t.Method
}

// GetOptions retrieves the value of the leaf Options from the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Options is set, it can
// safely use t.GetOptions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Options == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity) GetOptions() E_BgpPolicy_BgpSetCommunityOptionType {
	if t == nil || t.Options == 0 {
		return 0
	}
	return t.Options
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Inline.PopulateDefaults()
	t.Reference.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-ext-community/inline YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline struct {
	ΛMetadata    []ygot.Annotation                                                                                      `path:"@" ygotAnnotation:"true"`
	Communities  []RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline_Communities_Union `path:"config/communities" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛCommunities []ygot.Annotation                                                                                      `path:"config/@communities" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline) IsYANGGoStruct() {
}

// GetCommunities retrieves the value of the leaf Communities from the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Communities is set, it can
// safely use t.GetCommunities() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Communities == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline) GetCommunities() []RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline_Communities_Union {
	if t == nil || t.Communities == nil {
		return nil
	}
	return t.Communities
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline_Communities_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-ext-community/inline/config/communities within the YANG schema.
// Union type can be one of [E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY, UnionString].
type RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline_Communities_Union interface {
	// Union type can be one of [E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY, UnionString]
	Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline_Communities_Union()
}

// Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline_Communities_Union ensures that E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY
// implements the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline_Communities_Union interface.
func (E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY) Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline_Communities_Union() {
}

// Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline_Communities_Union ensures that UnionString
// implements the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline_Communities_Union interface.
func (UnionString) Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline_Communities_Union() {
}

// To_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline_Communities_Union takes an input interface{} and attempts to convert it to a struct
// which implements the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline_Communities_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline) To_RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline_Communities_Union(i interface{}) (RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline_Communities_Union, error) {
	if v, ok := i.(RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline_Communities_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Inline_Communities_Union, unknown union type, got: %T, want any of [E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY, string]", i, i)
}

// RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-ext-community/reference YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	ExtCommunitySetRef   *string           `path:"config/ext-community-set-ref" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛExtCommunitySetRef  []ygot.Annotation `path:"config/@ext-community-set-ref" ygotAnnotation:"true"`
	ExtCommunitySetRefs  []string          `path:"config/ext-community-set-refs" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛExtCommunitySetRefs []ygot.Annotation `path:"config/@ext-community-set-refs" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference) IsYANGGoStruct() {
}

// GetExtCommunitySetRef retrieves the value of the leaf ExtCommunitySetRef from the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunitySetRef is set, it can
// safely use t.GetExtCommunitySetRef() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunitySetRef == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference) GetExtCommunitySetRef() string {
	if t == nil || t.ExtCommunitySetRef == nil {
		return ""
	}
	return *t.ExtCommunitySetRef
}

// GetExtCommunitySetRefs retrieves the value of the leaf ExtCommunitySetRefs from the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunitySetRefs is set, it can
// safely use t.GetExtCommunitySetRefs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunitySetRefs == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference) GetExtCommunitySetRefs() []string {
	if t == nil || t.ExtCommunitySetRefs == nil {
		return nil
	}
	return t.ExtCommunitySetRefs
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_BgpActions_SetExtCommunity_Reference) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/actions/set-tag YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag struct {
	ΛMetadata  []ygot.Annotation                                                  `path:"@" ygotAnnotation:"true"`
	Inline     *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline    `path:"inline" module:"openconfig-routing-policy"`
	ΛInline    []ygot.Annotation                                                  `path:"@inline" ygotAnnotation:"true"`
	Mode       E_SetTag_Mode                                                      `path:"config/mode" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛMode      []ygot.Annotation                                                  `path:"config/@mode" ygotAnnotation:"true"`
	Reference  *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference `path:"reference" module:"openconfig-routing-policy"`
	ΛReference []ygot.Annotation                                                  `path:"@reference" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag) IsYANGGoStruct() {}

// GetOrCreateInline retrieves the value of the Inline field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag) GetOrCreateInline() *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline {
	if t.Inline != nil {
		return t.Inline
	}
	t.Inline = &RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline{}
	return t.Inline
}

// GetOrCreateReference retrieves the value of the Reference field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag) GetOrCreateReference() *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference {
	if t.Reference != nil {
		return t.Reference
	}
	t.Reference = &RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference{}
	return t.Reference
}

// GetInline returns the value of the Inline struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag. If the receiver or the field Inline is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag) GetInline() *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline {
	if t != nil && t.Inline != nil {
		return t.Inline
	}
	return nil
}

// GetReference returns the value of the Reference struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag. If the receiver or the field Reference is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag) GetReference() *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference {
	if t != nil && t.Reference != nil {
		return t.Reference
	}
	return nil
}

// GetMode retrieves the value of the leaf Mode from the RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mode is set, it can
// safely use t.GetMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mode == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag) GetMode() E_SetTag_Mode {
	if t == nil || t.Mode == 0 {
		return 0
	}
	return t.Mode
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Inline.PopulateDefaults()
	t.Reference.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag) ΛBelongingModule() string {
	return "openconfig-routing-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/actions/set-tag/inline YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline struct {
	ΛMetadata []ygot.Annotation                                                          `path:"@" ygotAnnotation:"true"`
	Tag       []RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline_Tag_Union `path:"config/tag" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛTag      []ygot.Annotation                                                          `path:"config/@tag" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline) IsYANGGoStruct() {}

// GetTag retrieves the value of the leaf Tag from the RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Tag is set, it can
// safely use t.GetTag() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Tag == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline) GetTag() []RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline_Tag_Union {
	if t == nil || t.Tag == nil {
		return nil
	}
	return t.Tag
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline) ΛBelongingModule() string {
	return "openconfig-routing-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline_Tag_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/actions/set-tag/inline/config/tag within the YANG schema.
// Union type can be one of [UnionString, UnionUint32].
type RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline_Tag_Union interface {
	// Union type can be one of [UnionString, UnionUint32]
	Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline_Tag_Union()
}

// Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline_Tag_Union ensures that UnionString
// implements the RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline_Tag_Union interface.
func (UnionString) Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline_Tag_Union() {
}

// Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline_Tag_Union ensures that UnionUint32
// implements the RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline_Tag_Union interface.
func (UnionUint32) Documentation_for_RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline_Tag_Union() {
}

// To_RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline_Tag_Union takes an input interface{} and attempts to convert it to a struct
// which implements the RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline_Tag_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline) To_RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline_Tag_Union(i interface{}) (RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline_Tag_Union, error) {
	if v, ok := i.(RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline_Tag_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Inline_Tag_Union, unknown union type, got: %T, want any of [string, uint32]", i, i)
}

// RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/actions/set-tag/reference YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	TagSet    *string           `path:"config/tag-set" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛTagSet   []ygot.Annotation `path:"config/@tag-set" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference) IsYANGGoStruct() {}

// GetTagSet retrieves the value of the leaf TagSet from the RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TagSet is set, it can
// safely use t.GetTagSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TagSet == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference) GetTagSet() string {
	if t == nil || t.TagSet == nil {
		return ""
	}
	return *t.TagSet
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference.
func (*RoutingPolicy_PolicyDefinition_Statement_Actions_SetTag_Reference) ΛBelongingModule() string {
	return "openconfig-routing-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Conditions represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/conditions YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Conditions struct {
	ΛMetadata          []ygot.Annotation                                                     `path:"@" ygotAnnotation:"true"`
	BgpConditions      *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions    `path:"bgp-conditions" module:"openconfig-bgp-policy"`
	ΛBgpConditions     []ygot.Annotation                                                     `path:"@bgp-conditions" ygotAnnotation:"true"`
	CallPolicy         *string                                                               `path:"config/call-policy" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛCallPolicy        []ygot.Annotation                                                     `path:"config/@call-policy" ygotAnnotation:"true"`
	InstallProtocolEq  E_PolicyTypes_INSTALL_PROTOCOL_TYPE                                   `path:"config/install-protocol-eq" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛInstallProtocolEq []ygot.Annotation                                                     `path:"config/@install-protocol-eq" ygotAnnotation:"true"`
	MatchInterface     *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface   `path:"match-interface" module:"openconfig-routing-policy"`
	ΛMatchInterface    []ygot.Annotation                                                     `path:"@match-interface" ygotAnnotation:"true"`
	MatchNeighborSet   *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet `path:"match-neighbor-set" module:"openconfig-routing-policy"`
	ΛMatchNeighborSet  []ygot.Annotation                                                     `path:"@match-neighbor-set" ygotAnnotation:"true"`
	MatchPrefixSet     *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet   `path:"match-prefix-set" module:"openconfig-routing-policy"`
	ΛMatchPrefixSet    []ygot.Annotation                                                     `path:"@match-prefix-set" ygotAnnotation:"true"`
	MatchTagSet        *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet      `path:"match-tag-set" module:"openconfig-routing-policy"`
	ΛMatchTagSet       []ygot.Annotation                                                     `path:"@match-tag-set" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Conditions implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions) IsYANGGoStruct() {}

// GetOrCreateBgpConditions retrieves the value of the BgpConditions field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions) GetOrCreateBgpConditions() *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions {
	if t.BgpConditions != nil {
		return t.BgpConditions
	}
	t.BgpConditions = &RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions{}
	return t.BgpConditions
}

// GetOrCreateMatchInterface retrieves the value of the MatchInterface field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions) GetOrCreateMatchInterface() *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface {
	if t.MatchInterface != nil {
		return t.MatchInterface
	}
	t.MatchInterface = &RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface{}
	return t.MatchInterface
}

// GetOrCreateMatchNeighborSet retrieves the value of the MatchNeighborSet field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions) GetOrCreateMatchNeighborSet() *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet {
	if t.MatchNeighborSet != nil {
		return t.MatchNeighborSet
	}
	t.MatchNeighborSet = &RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet{}
	return t.MatchNeighborSet
}

// GetOrCreateMatchPrefixSet retrieves the value of the MatchPrefixSet field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions) GetOrCreateMatchPrefixSet() *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet {
	if t.MatchPrefixSet != nil {
		return t.MatchPrefixSet
	}
	t.MatchPrefixSet = &RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet{}
	return t.MatchPrefixSet
}

// GetOrCreateMatchTagSet retrieves the value of the MatchTagSet field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions) GetOrCreateMatchTagSet() *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet {
	if t.MatchTagSet != nil {
		return t.MatchTagSet
	}
	t.MatchTagSet = &RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet{}
	return t.MatchTagSet
}

// GetBgpConditions returns the value of the BgpConditions struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Conditions. If the receiver or the field BgpConditions is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions) GetBgpConditions() *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions {
	if t != nil && t.BgpConditions != nil {
		return t.BgpConditions
	}
	return nil
}

// GetMatchInterface returns the value of the MatchInterface struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Conditions. If the receiver or the field MatchInterface is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions) GetMatchInterface() *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface {
	if t != nil && t.MatchInterface != nil {
		return t.MatchInterface
	}
	return nil
}

// GetMatchNeighborSet returns the value of the MatchNeighborSet struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Conditions. If the receiver or the field MatchNeighborSet is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions) GetMatchNeighborSet() *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet {
	if t != nil && t.MatchNeighborSet != nil {
		return t.MatchNeighborSet
	}
	return nil
}

// GetMatchPrefixSet returns the value of the MatchPrefixSet struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Conditions. If the receiver or the field MatchPrefixSet is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions) GetMatchPrefixSet() *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet {
	if t != nil && t.MatchPrefixSet != nil {
		return t.MatchPrefixSet
	}
	return nil
}

// GetMatchTagSet returns the value of the MatchTagSet struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Conditions. If the receiver or the field MatchTagSet is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions) GetMatchTagSet() *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet {
	if t != nil && t.MatchTagSet != nil {
		return t.MatchTagSet
	}
	return nil
}

// GetCallPolicy retrieves the value of the leaf CallPolicy from the RoutingPolicy_PolicyDefinition_Statement_Conditions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CallPolicy is set, it can
// safely use t.GetCallPolicy() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CallPolicy == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions) GetCallPolicy() string {
	if t == nil || t.CallPolicy == nil {
		return ""
	}
	return *t.CallPolicy
}

// GetInstallProtocolEq retrieves the value of the leaf InstallProtocolEq from the RoutingPolicy_PolicyDefinition_Statement_Conditions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InstallProtocolEq is set, it can
// safely use t.GetInstallProtocolEq() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InstallProtocolEq == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions) GetInstallProtocolEq() E_PolicyTypes_INSTALL_PROTOCOL_TYPE {
	if t == nil || t.InstallProtocolEq == 0 {
		return 0
	}
	return t.InstallProtocolEq
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Conditions
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.BgpConditions.PopulateDefaults()
	t.MatchInterface.PopulateDefaults()
	t.MatchNeighborSet.PopulateDefaults()
	t.MatchPrefixSet.PopulateDefaults()
	t.MatchTagSet.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Conditions"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Conditions.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions) ΛBelongingModule() string {
	return "openconfig-routing-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions struct {
	ΛMetadata             []ygot.Annotation                                                                       `path:"@" ygotAnnotation:"true"`
	AfiSafiIn             []E_BgpTypes_AFI_SAFI_TYPE                                                              `path:"config/afi-safi-in" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛAfiSafiIn            []ygot.Annotation                                                                       `path:"config/@afi-safi-in" ygotAnnotation:"true"`
	AsPathLength          *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength         `path:"as-path-length" module:"openconfig-bgp-policy"`
	ΛAsPathLength         []ygot.Annotation                                                                       `path:"@as-path-length" ygotAnnotation:"true"`
	CommunityCount        *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount       `path:"community-count" module:"openconfig-bgp-policy"`
	ΛCommunityCount       []ygot.Annotation                                                                       `path:"@community-count" ygotAnnotation:"true"`
	CommunitySet          *string                                                                                 `path:"config/community-set" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛCommunitySet         []ygot.Annotation                                                                       `path:"config/@community-set" ygotAnnotation:"true"`
	ExtCommunitySet       *string                                                                                 `path:"config/ext-community-set" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛExtCommunitySet      []ygot.Annotation                                                                       `path:"config/@ext-community-set" ygotAnnotation:"true"`
	LocalPrefEq           *uint32                                                                                 `path:"config/local-pref-eq" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛLocalPrefEq          []ygot.Annotation                                                                       `path:"config/@local-pref-eq" ygotAnnotation:"true"`
	MatchAsPathSet        *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet       `path:"match-as-path-set" module:"openconfig-bgp-policy"`
	ΛMatchAsPathSet       []ygot.Annotation                                                                       `path:"@match-as-path-set" ygotAnnotation:"true"`
	MatchCommunitySet     *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet    `path:"match-community-set" module:"openconfig-bgp-policy"`
	ΛMatchCommunitySet    []ygot.Annotation                                                                       `path:"@match-community-set" ygotAnnotation:"true"`
	MatchExtCommunitySet  *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet `path:"match-ext-community-set" module:"openconfig-bgp-policy"`
	ΛMatchExtCommunitySet []ygot.Annotation                                                                       `path:"@match-ext-community-set" ygotAnnotation:"true"`
	MedEq                 *uint32                                                                                 `path:"config/med-eq" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛMedEq                []ygot.Annotation                                                                       `path:"config/@med-eq" ygotAnnotation:"true"`
	NextHopIn             []string                                                                                `path:"config/next-hop-in" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛNextHopIn            []ygot.Annotation                                                                       `path:"config/@next-hop-in" ygotAnnotation:"true"`
	OriginEq              E_BgpTypes_BgpOriginAttrType                                                            `path:"config/origin-eq" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛOriginEq             []ygot.Annotation                                                                       `path:"config/@origin-eq" ygotAnnotation:"true"`
	RouteType             E_BgpConditions_RouteType                                                               `path:"config/route-type" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛRouteType            []ygot.Annotation                                                                       `path:"config/@route-type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) IsYANGGoStruct() {}

// GetOrCreateAsPathLength retrieves the value of the AsPathLength field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetOrCreateAsPathLength() *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength {
	if t.AsPathLength != nil {
		return t.AsPathLength
	}
	t.AsPathLength = &RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength{}
	return t.AsPathLength
}

// GetOrCreateCommunityCount retrieves the value of the CommunityCount field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetOrCreateCommunityCount() *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount {
	if t.CommunityCount != nil {
		return t.CommunityCount
	}
	t.CommunityCount = &RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount{}
	return t.CommunityCount
}

// GetOrCreateMatchAsPathSet retrieves the value of the MatchAsPathSet field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetOrCreateMatchAsPathSet() *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet {
	if t.MatchAsPathSet != nil {
		return t.MatchAsPathSet
	}
	t.MatchAsPathSet = &RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet{}
	return t.MatchAsPathSet
}

// GetOrCreateMatchCommunitySet retrieves the value of the MatchCommunitySet field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetOrCreateMatchCommunitySet() *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet {
	if t.MatchCommunitySet != nil {
		return t.MatchCommunitySet
	}
	t.MatchCommunitySet = &RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet{}
	return t.MatchCommunitySet
}

// GetOrCreateMatchExtCommunitySet retrieves the value of the MatchExtCommunitySet field
// or returns the existing field if it already exists.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetOrCreateMatchExtCommunitySet() *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet {
	if t.MatchExtCommunitySet != nil {
		return t.MatchExtCommunitySet
	}
	t.MatchExtCommunitySet = &RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet{}
	return t.MatchExtCommunitySet
}

// GetAsPathLength returns the value of the AsPathLength struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions. If the receiver or the field AsPathLength is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetAsPathLength() *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength {
	if t != nil && t.AsPathLength != nil {
		return t.AsPathLength
	}
	return nil
}

// GetCommunityCount returns the value of the CommunityCount struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions. If the receiver or the field CommunityCount is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetCommunityCount() *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount {
	if t != nil && t.CommunityCount != nil {
		return t.CommunityCount
	}
	return nil
}

// GetMatchAsPathSet returns the value of the MatchAsPathSet struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions. If the receiver or the field MatchAsPathSet is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetMatchAsPathSet() *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet {
	if t != nil && t.MatchAsPathSet != nil {
		return t.MatchAsPathSet
	}
	return nil
}

// GetMatchCommunitySet returns the value of the MatchCommunitySet struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions. If the receiver or the field MatchCommunitySet is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetMatchCommunitySet() *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet {
	if t != nil && t.MatchCommunitySet != nil {
		return t.MatchCommunitySet
	}
	return nil
}

// GetMatchExtCommunitySet returns the value of the MatchExtCommunitySet struct pointer
// from RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions. If the receiver or the field MatchExtCommunitySet is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetMatchExtCommunitySet() *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet {
	if t != nil && t.MatchExtCommunitySet != nil {
		return t.MatchExtCommunitySet
	}
	return nil
}

// GetAfiSafiIn retrieves the value of the leaf AfiSafiIn from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AfiSafiIn is set, it can
// safely use t.GetAfiSafiIn() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AfiSafiIn == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetAfiSafiIn() []E_BgpTypes_AFI_SAFI_TYPE {
	if t == nil || t.AfiSafiIn == nil {
		return nil
	}
	return t.AfiSafiIn
}

// GetCommunitySet retrieves the value of the leaf CommunitySet from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunitySet is set, it can
// safely use t.GetCommunitySet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunitySet == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetCommunitySet() string {
	if t == nil || t.CommunitySet == nil {
		return ""
	}
	return *t.CommunitySet
}

// GetExtCommunitySet retrieves the value of the leaf ExtCommunitySet from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunitySet is set, it can
// safely use t.GetExtCommunitySet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunitySet == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetExtCommunitySet() string {
	if t == nil || t.ExtCommunitySet == nil {
		return ""
	}
	return *t.ExtCommunitySet
}

// GetLocalPrefEq retrieves the value of the leaf LocalPrefEq from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LocalPrefEq is set, it can
// safely use t.GetLocalPrefEq() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LocalPrefEq == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetLocalPrefEq() uint32 {
	if t == nil || t.LocalPrefEq == nil {
		return 0
	}
	return *t.LocalPrefEq
}

// GetMedEq retrieves the value of the leaf MedEq from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MedEq is set, it can
// safely use t.GetMedEq() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MedEq == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetMedEq() uint32 {
	if t == nil || t.MedEq == nil {
		return 0
	}
	return *t.MedEq
}

// GetNextHopIn retrieves the value of the leaf NextHopIn from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NextHopIn is set, it can
// safely use t.GetNextHopIn() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NextHopIn == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetNextHopIn() []string {
	if t == nil || t.NextHopIn == nil {
		return nil
	}
	return t.NextHopIn
}

// GetOriginEq retrieves the value of the leaf OriginEq from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OriginEq is set, it can
// safely use t.GetOriginEq() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OriginEq == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetOriginEq() E_BgpTypes_BgpOriginAttrType {
	if t == nil || t.OriginEq == 0 {
		return 0
	}
	return t.OriginEq
}

// GetRouteType retrieves the value of the leaf RouteType from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RouteType is set, it can
// safely use t.GetRouteType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RouteType == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) GetRouteType() E_BgpConditions_RouteType {
	if t == nil || t.RouteType == 0 {
		return 0
	}
	return t.RouteType
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AsPathLength.PopulateDefaults()
	t.CommunityCount.PopulateDefaults()
	t.MatchAsPathSet.PopulateDefaults()
	t.MatchCommunitySet.PopulateDefaults()
	t.MatchExtCommunitySet.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/as-path-length YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength struct {
	ΛMetadata []ygot.Annotation                  `path:"@" ygotAnnotation:"true"`
	Operator  E_PolicyTypes_ATTRIBUTE_COMPARISON `path:"config/operator" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛOperator []ygot.Annotation                  `path:"config/@operator" ygotAnnotation:"true"`
	Value     *uint32                            `path:"config/value" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛValue    []ygot.Annotation                  `path:"config/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength) IsYANGGoStruct() {
}

// GetOperator retrieves the value of the leaf Operator from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Operator is set, it can
// safely use t.GetOperator() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Operator == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength) GetOperator() E_PolicyTypes_ATTRIBUTE_COMPARISON {
	if t == nil || t.Operator == 0 {
		return 0
	}
	return t.Operator
}

// GetValue retrieves the value of the leaf Value from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength) GetValue() uint32 {
	if t == nil || t.Value == nil {
		return 0
	}
	return *t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_AsPathLength) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/community-count YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount struct {
	ΛMetadata []ygot.Annotation                  `path:"@" ygotAnnotation:"true"`
	Operator  E_PolicyTypes_ATTRIBUTE_COMPARISON `path:"config/operator" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛOperator []ygot.Annotation                  `path:"config/@operator" ygotAnnotation:"true"`
	Value     *uint32                            `path:"config/value" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛValue    []ygot.Annotation                  `path:"config/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount) IsYANGGoStruct() {
}

// GetOperator retrieves the value of the leaf Operator from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Operator is set, it can
// safely use t.GetOperator() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Operator == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount) GetOperator() E_PolicyTypes_ATTRIBUTE_COMPARISON {
	if t == nil || t.Operator == 0 {
		return 0
	}
	return t.Operator
}

// GetValue retrieves the value of the leaf Value from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount) GetValue() uint32 {
	if t == nil || t.Value == nil {
		return 0
	}
	return *t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_CommunityCount) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/match-as-path-set YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet struct {
	ΛMetadata        []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	AsPathSet        *string                           `path:"config/as-path-set" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛAsPathSet       []ygot.Annotation                 `path:"config/@as-path-set" ygotAnnotation:"true"`
	MatchSetOptions  E_PolicyTypes_MatchSetOptionsType `path:"config/match-set-options" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛMatchSetOptions []ygot.Annotation                 `path:"config/@match-set-options" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet) IsYANGGoStruct() {
}

// GetAsPathSet retrieves the value of the leaf AsPathSet from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AsPathSet is set, it can
// safely use t.GetAsPathSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AsPathSet == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet) GetAsPathSet() string {
	if t == nil || t.AsPathSet == nil {
		return ""
	}
	return *t.AsPathSet
}

// GetMatchSetOptions retrieves the value of the leaf MatchSetOptions from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MatchSetOptions is set, it can
// safely use t.GetMatchSetOptions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MatchSetOptions == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet) GetMatchSetOptions() E_PolicyTypes_MatchSetOptionsType {
	if t == nil || t.MatchSetOptions == 0 {
		return PolicyTypes_MatchSetOptionsType_ANY
	}
	return t.MatchSetOptions
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MatchSetOptions == 0 {
		t.MatchSetOptions = PolicyTypes_MatchSetOptionsType_ANY
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchAsPathSet) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/match-community-set YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet struct {
	ΛMetadata        []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	CommunitySet     *string                           `path:"config/community-set" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛCommunitySet    []ygot.Annotation                 `path:"config/@community-set" ygotAnnotation:"true"`
	MatchSetOptions  E_PolicyTypes_MatchSetOptionsType `path:"config/match-set-options" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛMatchSetOptions []ygot.Annotation                 `path:"config/@match-set-options" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet) IsYANGGoStruct() {
}

// GetCommunitySet retrieves the value of the leaf CommunitySet from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CommunitySet is set, it can
// safely use t.GetCommunitySet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CommunitySet == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet) GetCommunitySet() string {
	if t == nil || t.CommunitySet == nil {
		return ""
	}
	return *t.CommunitySet
}

// GetMatchSetOptions retrieves the value of the leaf MatchSetOptions from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MatchSetOptions is set, it can
// safely use t.GetMatchSetOptions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MatchSetOptions == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet) GetMatchSetOptions() E_PolicyTypes_MatchSetOptionsType {
	if t == nil || t.MatchSetOptions == 0 {
		return PolicyTypes_MatchSetOptionsType_ANY
	}
	return t.MatchSetOptions
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MatchSetOptions == 0 {
		t.MatchSetOptions = PolicyTypes_MatchSetOptionsType_ANY
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchCommunitySet) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/match-ext-community-set YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet struct {
	ΛMetadata        []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	ExtCommunitySet  *string                           `path:"config/ext-community-set" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛExtCommunitySet []ygot.Annotation                 `path:"config/@ext-community-set" ygotAnnotation:"true"`
	MatchSetOptions  E_PolicyTypes_MatchSetOptionsType `path:"config/match-set-options" module:"openconfig-bgp-policy/openconfig-bgp-policy"`
	ΛMatchSetOptions []ygot.Annotation                 `path:"config/@match-set-options" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet) IsYANGGoStruct() {
}

// GetExtCommunitySet retrieves the value of the leaf ExtCommunitySet from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExtCommunitySet is set, it can
// safely use t.GetExtCommunitySet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExtCommunitySet == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet) GetExtCommunitySet() string {
	if t == nil || t.ExtCommunitySet == nil {
		return ""
	}
	return *t.ExtCommunitySet
}

// GetMatchSetOptions retrieves the value of the leaf MatchSetOptions from the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MatchSetOptions is set, it can
// safely use t.GetMatchSetOptions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MatchSetOptions == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet) GetMatchSetOptions() E_PolicyTypes_MatchSetOptionsType {
	if t == nil || t.MatchSetOptions == 0 {
		return PolicyTypes_MatchSetOptionsType_ANY
	}
	return t.MatchSetOptions
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MatchSetOptions == 0 {
		t.MatchSetOptions = PolicyTypes_MatchSetOptionsType_ANY
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_BgpConditions_MatchExtCommunitySet) ΛBelongingModule() string {
	return "openconfig-bgp-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/match-interface YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface     *string           `path:"config/interface" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛInterface    []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	Subinterface  *uint32           `path:"config/subinterface" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛSubinterface []ygot.Annotation `path:"config/@subinterface" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetSubinterface retrieves the value of the leaf Subinterface from the RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Subinterface is set, it can
// safely use t.GetSubinterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Subinterface == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface) GetSubinterface() uint32 {
	if t == nil || t.Subinterface == nil {
		return 0
	}
	return *t.Subinterface
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchInterface) ΛBelongingModule() string {
	return "openconfig-routing-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/match-neighbor-set YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet struct {
	ΛMetadata        []ygot.Annotation                           `path:"@" ygotAnnotation:"true"`
	MatchSetOptions  E_PolicyTypes_MatchSetOptionsRestrictedType `path:"config/match-set-options" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛMatchSetOptions []ygot.Annotation                           `path:"config/@match-set-options" ygotAnnotation:"true"`
	NeighborSet      *string                                     `path:"config/neighbor-set" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛNeighborSet     []ygot.Annotation                           `path:"config/@neighbor-set" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet) IsYANGGoStruct() {}

// GetMatchSetOptions retrieves the value of the leaf MatchSetOptions from the RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MatchSetOptions is set, it can
// safely use t.GetMatchSetOptions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MatchSetOptions == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet) GetMatchSetOptions() E_PolicyTypes_MatchSetOptionsRestrictedType {
	if t == nil || t.MatchSetOptions == 0 {
		return PolicyTypes_MatchSetOptionsRestrictedType_ANY
	}
	return t.MatchSetOptions
}

// GetNeighborSet retrieves the value of the leaf NeighborSet from the RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NeighborSet is set, it can
// safely use t.GetNeighborSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NeighborSet == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet) GetNeighborSet() string {
	if t == nil || t.NeighborSet == nil {
		return ""
	}
	return *t.NeighborSet
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MatchSetOptions == 0 {
		t.MatchSetOptions = PolicyTypes_MatchSetOptionsRestrictedType_ANY
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchNeighborSet) ΛBelongingModule() string {
	return "openconfig-routing-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/match-prefix-set YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet struct {
	ΛMetadata        []ygot.Annotation                           `path:"@" ygotAnnotation:"true"`
	MatchSetOptions  E_PolicyTypes_MatchSetOptionsRestrictedType `path:"config/match-set-options" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛMatchSetOptions []ygot.Annotation                           `path:"config/@match-set-options" ygotAnnotation:"true"`
	PrefixSet        *string                                     `path:"config/prefix-set" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛPrefixSet       []ygot.Annotation                           `path:"config/@prefix-set" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet) IsYANGGoStruct() {}

// GetMatchSetOptions retrieves the value of the leaf MatchSetOptions from the RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MatchSetOptions is set, it can
// safely use t.GetMatchSetOptions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MatchSetOptions == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet) GetMatchSetOptions() E_PolicyTypes_MatchSetOptionsRestrictedType {
	if t == nil || t.MatchSetOptions == 0 {
		return PolicyTypes_MatchSetOptionsRestrictedType_ANY
	}
	return t.MatchSetOptions
}

// GetPrefixSet retrieves the value of the leaf PrefixSet from the RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PrefixSet is set, it can
// safely use t.GetPrefixSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PrefixSet == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet) GetPrefixSet() string {
	if t == nil || t.PrefixSet == nil {
		return ""
	}
	return *t.PrefixSet
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MatchSetOptions == 0 {
		t.MatchSetOptions = PolicyTypes_MatchSetOptionsRestrictedType_ANY
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchPrefixSet) ΛBelongingModule() string {
	return "openconfig-routing-policy"
}

// RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet represents the /openconfig-routing-policy/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/match-tag-set YANG schema element.
type RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet struct {
	ΛMetadata        []ygot.Annotation                           `path:"@" ygotAnnotation:"true"`
	MatchSetOptions  E_PolicyTypes_MatchSetOptionsRestrictedType `path:"config/match-set-options" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛMatchSetOptions []ygot.Annotation                           `path:"config/@match-set-options" ygotAnnotation:"true"`
	TagSet           *string                                     `path:"config/tag-set" module:"openconfig-routing-policy/openconfig-routing-policy"`
	ΛTagSet          []ygot.Annotation                           `path:"config/@tag-set" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet) IsYANGGoStruct() {}

// GetMatchSetOptions retrieves the value of the leaf MatchSetOptions from the RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MatchSetOptions is set, it can
// safely use t.GetMatchSetOptions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MatchSetOptions == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet) GetMatchSetOptions() E_PolicyTypes_MatchSetOptionsRestrictedType {
	if t == nil || t.MatchSetOptions == 0 {
		return PolicyTypes_MatchSetOptionsRestrictedType_ANY
	}
	return t.MatchSetOptions
}

// GetTagSet retrieves the value of the leaf TagSet from the RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TagSet is set, it can
// safely use t.GetTagSet() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TagSet == nil' before retrieving the leaf's value.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet) GetTagSet() string {
	if t == nil || t.TagSet == nil {
		return ""
	}
	return *t.TagSet
}

// PopulateDefaults recursively populates unset leaf fields in the RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MatchSetOptions == 0 {
		t.MatchSetOptions = PolicyTypes_MatchSetOptionsRestrictedType_ANY
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet.
func (*RoutingPolicy_PolicyDefinition_Statement_Conditions_MatchTagSet) ΛBelongingModule() string {
	return "openconfig-routing-policy"
}

// Stp represents the /openconfig-spanning-tree/stp YANG schema element.
type Stp struct {
	ΛMetadata  []ygot.Annotation         `path:"@" ygotAnnotation:"true"`
	Global     *Stp_Global               `path:"global" module:"openconfig-spanning-tree"`
	ΛGlobal    []ygot.Annotation         `path:"@global" ygotAnnotation:"true"`
	Interface  map[string]*Stp_Interface `path:"interfaces/interface" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛInterface []ygot.Annotation         `path:"interfaces/@interface" ygotAnnotation:"true"`
	Mstp       *Stp_Mstp                 `path:"mstp" module:"openconfig-spanning-tree"`
	ΛMstp      []ygot.Annotation         `path:"@mstp" ygotAnnotation:"true"`
	Rstp       *Stp_Rstp                 `path:"rstp" module:"openconfig-spanning-tree"`
	ΛRstp      []ygot.Annotation         `path:"@rstp" ygotAnnotation:"true"`
	Vlan       map[uint16]*Stp_Vlan      `path:"rapid-pvst/vlan" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛVlan      []ygot.Annotation         `path:"rapid-pvst/@vlan" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Stp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Stp) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// Stp struct. The keys of the list are populated from the input
// arguments.
func (t *Stp) NewInterface(Name string) (*Stp_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Stp_Interface)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &Stp_Interface{
		Name: &Name,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the Stp struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Stp) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.Name = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from Stp.
//
// It initializes the field if not already initialized.
func (t *Stp) GetOrCreateInterfaceMap() map[string]*Stp_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*Stp_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver Stp. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Stp) GetOrCreateInterface(Name string) *Stp_Interface {

	key := Name

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of Stp. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Stp) GetInterface(Name string) *Stp_Interface {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied Stp_Interface struct to the
// list Interface of Stp. If the key value(s) specified in
// the supplied Stp_Interface already exist in the list, an error is
// returned.
func (t *Stp) AppendInterface(v *Stp_Interface) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Stp_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// NewVlan creates a new entry in the Vlan list of the
// Stp struct. The keys of the list are populated from the input
// arguments.
func (t *Stp) NewVlan(VlanId uint16) (*Stp_Vlan, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Vlan == nil {
		t.Vlan = make(map[uint16]*Stp_Vlan)
	}

	key := VlanId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Vlan[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Vlan", key)
	}

	t.Vlan[key] = &Stp_Vlan{
		VlanId: &VlanId,
	}

	return t.Vlan[key], nil
}

// RenameVlan renames an entry in the list Vlan within
// the Stp struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Stp) RenameVlan(oldK, newK uint16) error {
	if _, ok := t.Vlan[newK]; ok {
		return fmt.Errorf("key %v already exists in Vlan", newK)
	}

	e, ok := t.Vlan[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Vlan", oldK)
	}
	e.VlanId = &newK

	t.Vlan[newK] = e
	delete(t.Vlan, oldK)
	return nil
}

// GetOrCreateVlanMap returns the list (map) from Stp.
//
// It initializes the field if not already initialized.
func (t *Stp) GetOrCreateVlanMap() map[uint16]*Stp_Vlan {
	if t.Vlan == nil {
		t.Vlan = make(map[uint16]*Stp_Vlan)
	}
	return t.Vlan
}

// GetOrCreateVlan retrieves the value with the specified keys from
// the receiver Stp. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Stp) GetOrCreateVlan(VlanId uint16) *Stp_Vlan {

	key := VlanId

	if v, ok := t.Vlan[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewVlan(VlanId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateVlan got unexpected error: %v", err))
	}
	return v
}

// GetVlan retrieves the value with the specified key from
// the Vlan map field of Stp. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Stp) GetVlan(VlanId uint16) *Stp_Vlan {

	if t == nil {
		return nil
	}

	key := VlanId

	if lm, ok := t.Vlan[key]; ok {
		return lm
	}
	return nil
}

// AppendVlan appends the supplied Stp_Vlan struct to the
// list Vlan of Stp. If the key value(s) specified in
// the supplied Stp_Vlan already exist in the list, an error is
// returned.
func (t *Stp) AppendVlan(v *Stp_Vlan) error {
	if v.VlanId == nil {
		return fmt.Errorf("invalid nil key received for VlanId")
	}

	key := *v.VlanId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Vlan == nil {
		t.Vlan = make(map[uint16]*Stp_Vlan)
	}

	if _, ok := t.Vlan[key]; ok {
		return fmt.Errorf("duplicate key for list Vlan %v", key)
	}

	t.Vlan[key] = v
	return nil
}

// GetOrCreateGlobal retrieves the value of the Global field
// or returns the existing field if it already exists.
func (t *Stp) GetOrCreateGlobal() *Stp_Global {
	if t.Global != nil {
		return t.Global
	}
	t.Global = &Stp_Global{}
	return t.Global
}

// GetOrCreateMstp retrieves the value of the Mstp field
// or returns the existing field if it already exists.
func (t *Stp) GetOrCreateMstp() *Stp_Mstp {
	if t.Mstp != nil {
		return t.Mstp
	}
	t.Mstp = &Stp_Mstp{}
	return t.Mstp
}

// GetOrCreateRstp retrieves the value of the Rstp field
// or returns the existing field if it already exists.
func (t *Stp) GetOrCreateRstp() *Stp_Rstp {
	if t.Rstp != nil {
		return t.Rstp
	}
	t.Rstp = &Stp_Rstp{}
	return t.Rstp
}

// GetGlobal returns the value of the Global struct pointer
// from Stp. If the receiver or the field Global is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Stp) GetGlobal() *Stp_Global {
	if t != nil && t.Global != nil {
		return t.Global
	}
	return nil
}

// GetMstp returns the value of the Mstp struct pointer
// from Stp. If the receiver or the field Mstp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Stp) GetMstp() *Stp_Mstp {
	if t != nil && t.Mstp != nil {
		return t.Mstp
	}
	return nil
}

// GetRstp returns the value of the Rstp struct pointer
// from Stp. If the receiver or the field Rstp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Stp) GetRstp() *Stp_Rstp {
	if t != nil && t.Rstp != nil {
		return t.Rstp
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the Stp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Stp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Global.PopulateDefaults()
	t.Mstp.PopulateDefaults()
	t.Rstp.PopulateDefaults()
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
	for _, e := range t.Vlan {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Stp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Stp) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Stp.
func (*Stp) ΛBelongingModule() string {
	return "openconfig-spanning-tree"
}

// Stp_Global represents the /openconfig-spanning-tree/stp/global YANG schema element.
type Stp_Global struct {
	ΛMetadata                   []ygot.Annotation                  `path:"@" ygotAnnotation:"true"`
	BpduFilter                  *bool                              `path:"config/bpdu-filter" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛBpduFilter                 []ygot.Annotation                  `path:"config/@bpdu-filter" ygotAnnotation:"true"`
	BpduGuard                   *bool                              `path:"config/bpdu-guard" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛBpduGuard                  []ygot.Annotation                  `path:"config/@bpdu-guard" ygotAnnotation:"true"`
	BpduguardTimeoutRecovery    *uint8                             `path:"config/bpduguard-timeout-recovery" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛBpduguardTimeoutRecovery   []ygot.Annotation                  `path:"config/@bpduguard-timeout-recovery" ygotAnnotation:"true"`
	BridgeAssurance             *bool                              `path:"config/bridge-assurance" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛBridgeAssurance            []ygot.Annotation                  `path:"config/@bridge-assurance" ygotAnnotation:"true"`
	EnabledProtocol             []E_SpanningTreeTypes_STP_PROTOCOL `path:"config/enabled-protocol" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛEnabledProtocol            []ygot.Annotation                  `path:"config/@enabled-protocol" ygotAnnotation:"true"`
	EtherchannelMisconfigGuard  *bool                              `path:"config/etherchannel-misconfig-guard" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛEtherchannelMisconfigGuard []ygot.Annotation                  `path:"config/@etherchannel-misconfig-guard" ygotAnnotation:"true"`
	LoopGuard                   *bool                              `path:"config/loop-guard" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛLoopGuard                  []ygot.Annotation                  `path:"config/@loop-guard" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Stp_Global implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Stp_Global) IsYANGGoStruct() {}

// GetBpduFilter retrieves the value of the leaf BpduFilter from the Stp_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BpduFilter is set, it can
// safely use t.GetBpduFilter() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BpduFilter == nil' before retrieving the leaf's value.
func (t *Stp_Global) GetBpduFilter() bool {
	if t == nil || t.BpduFilter == nil {
		return false
	}
	return *t.BpduFilter
}

// GetBpduGuard retrieves the value of the leaf BpduGuard from the Stp_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BpduGuard is set, it can
// safely use t.GetBpduGuard() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BpduGuard == nil' before retrieving the leaf's value.
func (t *Stp_Global) GetBpduGuard() bool {
	if t == nil || t.BpduGuard == nil {
		return false
	}
	return *t.BpduGuard
}

// GetBpduguardTimeoutRecovery retrieves the value of the leaf BpduguardTimeoutRecovery from the Stp_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BpduguardTimeoutRecovery is set, it can
// safely use t.GetBpduguardTimeoutRecovery() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BpduguardTimeoutRecovery == nil' before retrieving the leaf's value.
func (t *Stp_Global) GetBpduguardTimeoutRecovery() uint8 {
	if t == nil || t.BpduguardTimeoutRecovery == nil {
		return 0
	}
	return *t.BpduguardTimeoutRecovery
}

// GetBridgeAssurance retrieves the value of the leaf BridgeAssurance from the Stp_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BridgeAssurance is set, it can
// safely use t.GetBridgeAssurance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BridgeAssurance == nil' before retrieving the leaf's value.
func (t *Stp_Global) GetBridgeAssurance() bool {
	if t == nil || t.BridgeAssurance == nil {
		return false
	}
	return *t.BridgeAssurance
}

// GetEnabledProtocol retrieves the value of the leaf EnabledProtocol from the Stp_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EnabledProtocol is set, it can
// safely use t.GetEnabledProtocol() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EnabledProtocol == nil' before retrieving the leaf's value.
func (t *Stp_Global) GetEnabledProtocol() []E_SpanningTreeTypes_STP_PROTOCOL {
	if t == nil || t.EnabledProtocol == nil {
		return nil
	}
	return t.EnabledProtocol
}

// GetEtherchannelMisconfigGuard retrieves the value of the leaf EtherchannelMisconfigGuard from the Stp_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EtherchannelMisconfigGuard is set, it can
// safely use t.GetEtherchannelMisconfigGuard() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EtherchannelMisconfigGuard == nil' before retrieving the leaf's value.
func (t *Stp_Global) GetEtherchannelMisconfigGuard() bool {
	if t == nil || t.EtherchannelMisconfigGuard == nil {
		return false
	}
	return *t.EtherchannelMisconfigGuard
}

// GetLoopGuard retrieves the value of the leaf LoopGuard from the Stp_Global
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LoopGuard is set, it can
// safely use t.GetLoopGuard() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LoopGuard == nil' before retrieving the leaf's value.
func (t *Stp_Global) GetLoopGuard() bool {
	if t == nil || t.LoopGuard == nil {
		return false
	}
	return *t.LoopGuard
}

// PopulateDefaults recursively populates unset leaf fields in the Stp_Global
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Stp_Global) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Global) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Stp_Global"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Global) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Stp_Global) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Stp_Global.
func (*Stp_Global) ΛBelongingModule() string {
	return "openconfig-spanning-tree"
}

// Stp_Interface represents the /openconfig-spanning-tree/stp/interfaces/interface YANG schema element.
type Stp_Interface struct {
	ΛMetadata   []ygot.Annotation                 `path:"@" ygotAnnotation:"true"`
	BpduFilter  *bool                             `path:"config/bpdu-filter" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛBpduFilter []ygot.Annotation                 `path:"config/@bpdu-filter" ygotAnnotation:"true"`
	BpduGuard   *bool                             `path:"config/bpdu-guard" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛBpduGuard  []ygot.Annotation                 `path:"config/@bpdu-guard" ygotAnnotation:"true"`
	EdgePort    E_SpanningTreeTypes_STP_EDGE_PORT `path:"config/edge-port" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛEdgePort   []ygot.Annotation                 `path:"config/@edge-port" ygotAnnotation:"true"`
	Guard       E_SpanningTreeTypes_StpGuardType  `path:"config/guard" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛGuard      []ygot.Annotation                 `path:"config/@guard" ygotAnnotation:"true"`
	LinkType    E_SpanningTreeTypes_StpLinkType   `path:"config/link-type" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛLinkType   []ygot.Annotation                 `path:"config/@link-type" ygotAnnotation:"true"`
	Name        *string                           `path:"config/name|name" module:"openconfig-spanning-tree/openconfig-spanning-tree|openconfig-spanning-tree"`
	ΛName       []ygot.Annotation                 `path:"config/@name|@name" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Stp_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Stp_Interface) IsYANGGoStruct() {}

// GetBpduFilter retrieves the value of the leaf BpduFilter from the Stp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BpduFilter is set, it can
// safely use t.GetBpduFilter() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BpduFilter == nil' before retrieving the leaf's value.
func (t *Stp_Interface) GetBpduFilter() bool {
	if t == nil || t.BpduFilter == nil {
		return false
	}
	return *t.BpduFilter
}

// GetBpduGuard retrieves the value of the leaf BpduGuard from the Stp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BpduGuard is set, it can
// safely use t.GetBpduGuard() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BpduGuard == nil' before retrieving the leaf's value.
func (t *Stp_Interface) GetBpduGuard() bool {
	if t == nil || t.BpduGuard == nil {
		return false
	}
	return *t.BpduGuard
}

// GetEdgePort retrieves the value of the leaf EdgePort from the Stp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EdgePort is set, it can
// safely use t.GetEdgePort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EdgePort == nil' before retrieving the leaf's value.
func (t *Stp_Interface) GetEdgePort() E_SpanningTreeTypes_STP_EDGE_PORT {
	if t == nil || t.EdgePort == 0 {
		return 0
	}
	return t.EdgePort
}

// GetGuard retrieves the value of the leaf Guard from the Stp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Guard is set, it can
// safely use t.GetGuard() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Guard == nil' before retrieving the leaf's value.
func (t *Stp_Interface) GetGuard() E_SpanningTreeTypes_StpGuardType {
	if t == nil || t.Guard == 0 {
		return 0
	}
	return t.Guard
}

// GetLinkType retrieves the value of the leaf LinkType from the Stp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkType is set, it can
// safely use t.GetLinkType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkType == nil' before retrieving the leaf's value.
func (t *Stp_Interface) GetLinkType() E_SpanningTreeTypes_StpLinkType {
	if t == nil || t.LinkType == 0 {
		return 0
	}
	return t.LinkType
}

// GetName retrieves the value of the leaf Name from the Stp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Stp_Interface) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// PopulateDefaults recursively populates unset leaf fields in the Stp_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Stp_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the Stp_Interface struct, which is a YANG list entry.
func (t *Stp_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Stp_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Stp_Interface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Stp_Interface.
func (*Stp_Interface) ΛBelongingModule() string {
	return "openconfig-spanning-tree"
}

// Stp_Mstp represents the /openconfig-spanning-tree/stp/mstp YANG schema element.
type Stp_Mstp struct {
	ΛMetadata        []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	ForwardingDelay  *uint8                           `path:"config/forwarding-delay" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛForwardingDelay []ygot.Annotation                `path:"config/@forwarding-delay" ygotAnnotation:"true"`
	HelloTime        *uint8                           `path:"config/hello-time" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛHelloTime       []ygot.Annotation                `path:"config/@hello-time" ygotAnnotation:"true"`
	HoldCount        *uint8                           `path:"config/hold-count" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛHoldCount       []ygot.Annotation                `path:"config/@hold-count" ygotAnnotation:"true"`
	MaxAge           *uint8                           `path:"config/max-age" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛMaxAge          []ygot.Annotation                `path:"config/@max-age" ygotAnnotation:"true"`
	MaxHop           *uint8                           `path:"config/max-hop" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛMaxHop          []ygot.Annotation                `path:"config/@max-hop" ygotAnnotation:"true"`
	MstInstance      map[uint16]*Stp_Mstp_MstInstance `path:"mst-instances/mst-instance" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛMstInstance     []ygot.Annotation                `path:"mst-instances/@mst-instance" ygotAnnotation:"true"`
	Name             *string                          `path:"config/name" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛName            []ygot.Annotation                `path:"config/@name" ygotAnnotation:"true"`
	Revision         *uint32                          `path:"config/revision" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛRevision        []ygot.Annotation                `path:"config/@revision" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Stp_Mstp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Stp_Mstp) IsYANGGoStruct() {}

// NewMstInstance creates a new entry in the MstInstance list of the
// Stp_Mstp struct. The keys of the list are populated from the input
// arguments.
func (t *Stp_Mstp) NewMstInstance(MstId uint16) (*Stp_Mstp_MstInstance, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.MstInstance == nil {
		t.MstInstance = make(map[uint16]*Stp_Mstp_MstInstance)
	}

	key := MstId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.MstInstance[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list MstInstance", key)
	}

	t.MstInstance[key] = &Stp_Mstp_MstInstance{
		MstId: &MstId,
	}

	return t.MstInstance[key], nil
}

// RenameMstInstance renames an entry in the list MstInstance within
// the Stp_Mstp struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Stp_Mstp) RenameMstInstance(oldK, newK uint16) error {
	if _, ok := t.MstInstance[newK]; ok {
		return fmt.Errorf("key %v already exists in MstInstance", newK)
	}

	e, ok := t.MstInstance[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in MstInstance", oldK)
	}
	e.MstId = &newK

	t.MstInstance[newK] = e
	delete(t.MstInstance, oldK)
	return nil
}

// GetOrCreateMstInstanceMap returns the list (map) from Stp_Mstp.
//
// It initializes the field if not already initialized.
func (t *Stp_Mstp) GetOrCreateMstInstanceMap() map[uint16]*Stp_Mstp_MstInstance {
	if t.MstInstance == nil {
		t.MstInstance = make(map[uint16]*Stp_Mstp_MstInstance)
	}
	return t.MstInstance
}

// GetOrCreateMstInstance retrieves the value with the specified keys from
// the receiver Stp_Mstp. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Stp_Mstp) GetOrCreateMstInstance(MstId uint16) *Stp_Mstp_MstInstance {

	key := MstId

	if v, ok := t.MstInstance[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewMstInstance(MstId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateMstInstance got unexpected error: %v", err))
	}
	return v
}

// GetMstInstance retrieves the value with the specified key from
// the MstInstance map field of Stp_Mstp. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Stp_Mstp) GetMstInstance(MstId uint16) *Stp_Mstp_MstInstance {

	if t == nil {
		return nil
	}

	key := MstId

	if lm, ok := t.MstInstance[key]; ok {
		return lm
	}
	return nil
}

// AppendMstInstance appends the supplied Stp_Mstp_MstInstance struct to the
// list MstInstance of Stp_Mstp. If the key value(s) specified in
// the supplied Stp_Mstp_MstInstance already exist in the list, an error is
// returned.
func (t *Stp_Mstp) AppendMstInstance(v *Stp_Mstp_MstInstance) error {
	if v.MstId == nil {
		return fmt.Errorf("invalid nil key received for MstId")
	}

	key := *v.MstId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.MstInstance == nil {
		t.MstInstance = make(map[uint16]*Stp_Mstp_MstInstance)
	}

	if _, ok := t.MstInstance[key]; ok {
		return fmt.Errorf("duplicate key for list MstInstance %v", key)
	}

	t.MstInstance[key] = v
	return nil
}

// GetForwardingDelay retrieves the value of the leaf ForwardingDelay from the Stp_Mstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ForwardingDelay is set, it can
// safely use t.GetForwardingDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ForwardingDelay == nil' before retrieving the leaf's value.
func (t *Stp_Mstp) GetForwardingDelay() uint8 {
	if t == nil || t.ForwardingDelay == nil {
		return 0
	}
	return *t.ForwardingDelay
}

// GetHelloTime retrieves the value of the leaf HelloTime from the Stp_Mstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloTime is set, it can
// safely use t.GetHelloTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloTime == nil' before retrieving the leaf's value.
func (t *Stp_Mstp) GetHelloTime() uint8 {
	if t == nil || t.HelloTime == nil {
		return 0
	}
	return *t.HelloTime
}

// GetHoldCount retrieves the value of the leaf HoldCount from the Stp_Mstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HoldCount is set, it can
// safely use t.GetHoldCount() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HoldCount == nil' before retrieving the leaf's value.
func (t *Stp_Mstp) GetHoldCount() uint8 {
	if t == nil || t.HoldCount == nil {
		return 6
	}
	return *t.HoldCount
}

// GetMaxAge retrieves the value of the leaf MaxAge from the Stp_Mstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxAge is set, it can
// safely use t.GetMaxAge() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxAge == nil' before retrieving the leaf's value.
func (t *Stp_Mstp) GetMaxAge() uint8 {
	if t == nil || t.MaxAge == nil {
		return 0
	}
	return *t.MaxAge
}

// GetMaxHop retrieves the value of the leaf MaxHop from the Stp_Mstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxHop is set, it can
// safely use t.GetMaxHop() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxHop == nil' before retrieving the leaf's value.
func (t *Stp_Mstp) GetMaxHop() uint8 {
	if t == nil || t.MaxHop == nil {
		return 0
	}
	return *t.MaxHop
}

// GetName retrieves the value of the leaf Name from the Stp_Mstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Stp_Mstp) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetRevision retrieves the value of the leaf Revision from the Stp_Mstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Revision is set, it can
// safely use t.GetRevision() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Revision == nil' before retrieving the leaf's value.
func (t *Stp_Mstp) GetRevision() uint32 {
	if t == nil || t.Revision == nil {
		return 0
	}
	return *t.Revision
}

// PopulateDefaults recursively populates unset leaf fields in the Stp_Mstp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Stp_Mstp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.HoldCount == nil {
		var v uint8 = 6
		t.HoldCount = &v
	}
	for _, e := range t.MstInstance {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Mstp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Stp_Mstp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Mstp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Stp_Mstp) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Stp_Mstp.
func (*Stp_Mstp) ΛBelongingModule() string {
	return "openconfig-spanning-tree"
}

// Stp_Mstp_MstInstance represents the /openconfig-spanning-tree/stp/mstp/mst-instances/mst-instance YANG schema element.
type Stp_Mstp_MstInstance struct {
	ΛMetadata               []ygot.Annotation                          `path:"@" ygotAnnotation:"true"`
	BridgeAddress           *string                                    `path:"state/bridge-address" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛBridgeAddress          []ygot.Annotation                          `path:"state/@bridge-address" ygotAnnotation:"true"`
	BridgePriority          *uint16                                    `path:"config/bridge-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛBridgePriority         []ygot.Annotation                          `path:"config/@bridge-priority" ygotAnnotation:"true"`
	DesignatedRootAddress   *string                                    `path:"state/designated-root-address" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedRootAddress  []ygot.Annotation                          `path:"state/@designated-root-address" ygotAnnotation:"true"`
	DesignatedRootPriority  *uint16                                    `path:"state/designated-root-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedRootPriority []ygot.Annotation                          `path:"state/@designated-root-priority" ygotAnnotation:"true"`
	HoldTime                *uint8                                     `path:"state/hold-time" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛHoldTime               []ygot.Annotation                          `path:"state/@hold-time" ygotAnnotation:"true"`
	Interface               map[string]*Stp_Mstp_MstInstance_Interface `path:"interfaces/interface" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛInterface              []ygot.Annotation                          `path:"interfaces/@interface" ygotAnnotation:"true"`
	LastTopologyChange      *uint64                                    `path:"state/last-topology-change" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛLastTopologyChange     []ygot.Annotation                          `path:"state/@last-topology-change" ygotAnnotation:"true"`
	MstId                   *uint16                                    `path:"config/mst-id|mst-id" module:"openconfig-spanning-tree/openconfig-spanning-tree|openconfig-spanning-tree"`
	ΛMstId                  []ygot.Annotation                          `path:"config/@mst-id|@mst-id" ygotAnnotation:"true"`
	RootCost                *uint32                                    `path:"state/root-cost" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛRootCost               []ygot.Annotation                          `path:"state/@root-cost" ygotAnnotation:"true"`
	RootPort                *uint16                                    `path:"state/root-port" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛRootPort               []ygot.Annotation                          `path:"state/@root-port" ygotAnnotation:"true"`
	TopologyChanges         *uint64                                    `path:"state/topology-changes" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛTopologyChanges        []ygot.Annotation                          `path:"state/@topology-changes" ygotAnnotation:"true"`
	Vlan                    []Stp_Mstp_MstInstance_Vlan_Union          `path:"config/vlan" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛVlan                   []ygot.Annotation                          `path:"config/@vlan" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Stp_Mstp_MstInstance implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Stp_Mstp_MstInstance) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// Stp_Mstp_MstInstance struct. The keys of the list are populated from the input
// arguments.
func (t *Stp_Mstp_MstInstance) NewInterface(Name string) (*Stp_Mstp_MstInstance_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Stp_Mstp_MstInstance_Interface)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &Stp_Mstp_MstInstance_Interface{
		Name: &Name,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the Stp_Mstp_MstInstance struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Stp_Mstp_MstInstance) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.Name = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from Stp_Mstp_MstInstance.
//
// It initializes the field if not already initialized.
func (t *Stp_Mstp_MstInstance) GetOrCreateInterfaceMap() map[string]*Stp_Mstp_MstInstance_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*Stp_Mstp_MstInstance_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver Stp_Mstp_MstInstance. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Stp_Mstp_MstInstance) GetOrCreateInterface(Name string) *Stp_Mstp_MstInstance_Interface {

	key := Name

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of Stp_Mstp_MstInstance. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Stp_Mstp_MstInstance) GetInterface(Name string) *Stp_Mstp_MstInstance_Interface {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied Stp_Mstp_MstInstance_Interface struct to the
// list Interface of Stp_Mstp_MstInstance. If the key value(s) specified in
// the supplied Stp_Mstp_MstInstance_Interface already exist in the list, an error is
// returned.
func (t *Stp_Mstp_MstInstance) AppendInterface(v *Stp_Mstp_MstInstance_Interface) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Stp_Mstp_MstInstance_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// GetBridgeAddress retrieves the value of the leaf BridgeAddress from the Stp_Mstp_MstInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BridgeAddress is set, it can
// safely use t.GetBridgeAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BridgeAddress == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance) GetBridgeAddress() string {
	if t == nil || t.BridgeAddress == nil {
		return ""
	}
	return *t.BridgeAddress
}

// GetBridgePriority retrieves the value of the leaf BridgePriority from the Stp_Mstp_MstInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BridgePriority is set, it can
// safely use t.GetBridgePriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BridgePriority == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance) GetBridgePriority() uint16 {
	if t == nil || t.BridgePriority == nil {
		return 32768
	}
	return *t.BridgePriority
}

// GetDesignatedRootAddress retrieves the value of the leaf DesignatedRootAddress from the Stp_Mstp_MstInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedRootAddress is set, it can
// safely use t.GetDesignatedRootAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedRootAddress == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance) GetDesignatedRootAddress() string {
	if t == nil || t.DesignatedRootAddress == nil {
		return ""
	}
	return *t.DesignatedRootAddress
}

// GetDesignatedRootPriority retrieves the value of the leaf DesignatedRootPriority from the Stp_Mstp_MstInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedRootPriority is set, it can
// safely use t.GetDesignatedRootPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedRootPriority == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance) GetDesignatedRootPriority() uint16 {
	if t == nil || t.DesignatedRootPriority == nil {
		return 32768
	}
	return *t.DesignatedRootPriority
}

// GetHoldTime retrieves the value of the leaf HoldTime from the Stp_Mstp_MstInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HoldTime is set, it can
// safely use t.GetHoldTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HoldTime == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance) GetHoldTime() uint8 {
	if t == nil || t.HoldTime == nil {
		return 0
	}
	return *t.HoldTime
}

// GetLastTopologyChange retrieves the value of the leaf LastTopologyChange from the Stp_Mstp_MstInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastTopologyChange is set, it can
// safely use t.GetLastTopologyChange() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastTopologyChange == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance) GetLastTopologyChange() uint64 {
	if t == nil || t.LastTopologyChange == nil {
		return 0
	}
	return *t.LastTopologyChange
}

// GetMstId retrieves the value of the leaf MstId from the Stp_Mstp_MstInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MstId is set, it can
// safely use t.GetMstId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MstId == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance) GetMstId() uint16 {
	if t == nil || t.MstId == nil {
		return 0
	}
	return *t.MstId
}

// GetRootCost retrieves the value of the leaf RootCost from the Stp_Mstp_MstInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RootCost is set, it can
// safely use t.GetRootCost() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RootCost == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance) GetRootCost() uint32 {
	if t == nil || t.RootCost == nil {
		return 0
	}
	return *t.RootCost
}

// GetRootPort retrieves the value of the leaf RootPort from the Stp_Mstp_MstInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RootPort is set, it can
// safely use t.GetRootPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RootPort == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance) GetRootPort() uint16 {
	if t == nil || t.RootPort == nil {
		return 0
	}
	return *t.RootPort
}

// GetTopologyChanges retrieves the value of the leaf TopologyChanges from the Stp_Mstp_MstInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TopologyChanges is set, it can
// safely use t.GetTopologyChanges() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TopologyChanges == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance) GetTopologyChanges() uint64 {
	if t == nil || t.TopologyChanges == nil {
		return 0
	}
	return *t.TopologyChanges
}

// GetVlan retrieves the value of the leaf Vlan from the Stp_Mstp_MstInstance
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Vlan is set, it can
// safely use t.GetVlan() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Vlan == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance) GetVlan() []Stp_Mstp_MstInstance_Vlan_Union {
	if t == nil || t.Vlan == nil {
		return nil
	}
	return t.Vlan
}

// PopulateDefaults recursively populates unset leaf fields in the Stp_Mstp_MstInstance
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Stp_Mstp_MstInstance) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.BridgePriority == nil {
		var v uint16 = 32768
		t.BridgePriority = &v
	}
	if t.DesignatedRootPriority == nil {
		var v uint16 = 32768
		t.DesignatedRootPriority = &v
	}
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the Stp_Mstp_MstInstance struct, which is a YANG list entry.
func (t *Stp_Mstp_MstInstance) ΛListKeyMap() (map[string]interface{}, error) {
	if t.MstId == nil {
		return nil, fmt.Errorf("nil value for key MstId")
	}

	return map[string]interface{}{
		"mst-id": *t.MstId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Mstp_MstInstance) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Stp_Mstp_MstInstance"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Mstp_MstInstance) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Stp_Mstp_MstInstance) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Stp_Mstp_MstInstance.
func (*Stp_Mstp_MstInstance) ΛBelongingModule() string {
	return "openconfig-spanning-tree"
}

// Stp_Mstp_MstInstance_Vlan_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-spanning-tree/stp/mstp/mst-instances/mst-instance/config/vlan within the YANG schema.
// Union type can be one of [UnionString, UnionUint16].
type Stp_Mstp_MstInstance_Vlan_Union interface {
	// Union type can be one of [UnionString, UnionUint16]
	Documentation_for_Stp_Mstp_MstInstance_Vlan_Union()
}

// Documentation_for_Stp_Mstp_MstInstance_Vlan_Union ensures that UnionString
// implements the Stp_Mstp_MstInstance_Vlan_Union interface.
func (UnionString) Documentation_for_Stp_Mstp_MstInstance_Vlan_Union() {}

// Documentation_for_Stp_Mstp_MstInstance_Vlan_Union ensures that UnionUint16
// implements the Stp_Mstp_MstInstance_Vlan_Union interface.
func (UnionUint16) Documentation_for_Stp_Mstp_MstInstance_Vlan_Union() {}

// To_Stp_Mstp_MstInstance_Vlan_Union takes an input interface{} and attempts to convert it to a struct
// which implements the Stp_Mstp_MstInstance_Vlan_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *Stp_Mstp_MstInstance) To_Stp_Mstp_MstInstance_Vlan_Union(i interface{}) (Stp_Mstp_MstInstance_Vlan_Union, error) {
	if v, ok := i.(Stp_Mstp_MstInstance_Vlan_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	case uint16:
		return UnionUint16(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to Stp_Mstp_MstInstance_Vlan_Union, unknown union type, got: %T, want any of [string, uint16]", i, i)
}

// Stp_Mstp_MstInstance_Interface represents the /openconfig-spanning-tree/stp/mstp/mst-instances/mst-instance/interfaces/interface YANG schema element.
type Stp_Mstp_MstInstance_Interface struct {
	ΛMetadata                 []ygot.Annotation                        `path:"@" ygotAnnotation:"true"`
	Cost                      *uint32                                  `path:"config/cost" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛCost                     []ygot.Annotation                        `path:"config/@cost" ygotAnnotation:"true"`
	Counters                  *Stp_Mstp_MstInstance_Interface_Counters `path:"state/counters" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛCounters                 []ygot.Annotation                        `path:"state/@counters" ygotAnnotation:"true"`
	DesignatedBridgeAddress   *string                                  `path:"state/designated-bridge-address" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedBridgeAddress  []ygot.Annotation                        `path:"state/@designated-bridge-address" ygotAnnotation:"true"`
	DesignatedBridgePriority  *uint16                                  `path:"state/designated-bridge-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedBridgePriority []ygot.Annotation                        `path:"state/@designated-bridge-priority" ygotAnnotation:"true"`
	DesignatedCost            *uint32                                  `path:"state/designated-cost" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedCost           []ygot.Annotation                        `path:"state/@designated-cost" ygotAnnotation:"true"`
	DesignatedPortNum         *uint16                                  `path:"state/designated-port-num" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedPortNum        []ygot.Annotation                        `path:"state/@designated-port-num" ygotAnnotation:"true"`
	DesignatedPortPriority    *uint8                                   `path:"state/designated-port-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedPortPriority   []ygot.Annotation                        `path:"state/@designated-port-priority" ygotAnnotation:"true"`
	DesignatedRootAddress     *string                                  `path:"state/designated-root-address" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedRootAddress    []ygot.Annotation                        `path:"state/@designated-root-address" ygotAnnotation:"true"`
	DesignatedRootPriority    *uint16                                  `path:"state/designated-root-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedRootPriority   []ygot.Annotation                        `path:"state/@designated-root-priority" ygotAnnotation:"true"`
	ForwardTransisitions      *uint64                                  `path:"state/forward-transisitions" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛForwardTransisitions     []ygot.Annotation                        `path:"state/@forward-transisitions" ygotAnnotation:"true"`
	Name                      *string                                  `path:"config/name|name" module:"openconfig-spanning-tree/openconfig-spanning-tree|openconfig-spanning-tree"`
	ΛName                     []ygot.Annotation                        `path:"config/@name|@name" ygotAnnotation:"true"`
	PortNum                   *uint16                                  `path:"state/port-num" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛPortNum                  []ygot.Annotation                        `path:"state/@port-num" ygotAnnotation:"true"`
	PortPriority              *uint8                                   `path:"config/port-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛPortPriority             []ygot.Annotation                        `path:"config/@port-priority" ygotAnnotation:"true"`
	PortState                 E_SpanningTreeTypes_STP_PORT_STATE       `path:"state/port-state" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛPortState                []ygot.Annotation                        `path:"state/@port-state" ygotAnnotation:"true"`
	Role                      E_SpanningTreeTypes_STP_PORT_ROLE        `path:"state/role" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛRole                     []ygot.Annotation                        `path:"state/@role" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Stp_Mstp_MstInstance_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Stp_Mstp_MstInstance_Interface) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *Stp_Mstp_MstInstance_Interface) GetOrCreateCounters() *Stp_Mstp_MstInstance_Interface_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &Stp_Mstp_MstInstance_Interface_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from Stp_Mstp_MstInstance_Interface. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Stp_Mstp_MstInstance_Interface) GetCounters() *Stp_Mstp_MstInstance_Interface_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetCost retrieves the value of the leaf Cost from the Stp_Mstp_MstInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Cost is set, it can
// safely use t.GetCost() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Cost == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance_Interface) GetCost() uint32 {
	if t == nil || t.Cost == nil {
		return 0
	}
	return *t.Cost
}

// GetDesignatedBridgeAddress retrieves the value of the leaf DesignatedBridgeAddress from the Stp_Mstp_MstInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedBridgeAddress is set, it can
// safely use t.GetDesignatedBridgeAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedBridgeAddress == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance_Interface) GetDesignatedBridgeAddress() string {
	if t == nil || t.DesignatedBridgeAddress == nil {
		return ""
	}
	return *t.DesignatedBridgeAddress
}

// GetDesignatedBridgePriority retrieves the value of the leaf DesignatedBridgePriority from the Stp_Mstp_MstInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedBridgePriority is set, it can
// safely use t.GetDesignatedBridgePriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedBridgePriority == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance_Interface) GetDesignatedBridgePriority() uint16 {
	if t == nil || t.DesignatedBridgePriority == nil {
		return 32768
	}
	return *t.DesignatedBridgePriority
}

// GetDesignatedCost retrieves the value of the leaf DesignatedCost from the Stp_Mstp_MstInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedCost is set, it can
// safely use t.GetDesignatedCost() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedCost == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance_Interface) GetDesignatedCost() uint32 {
	if t == nil || t.DesignatedCost == nil {
		return 0
	}
	return *t.DesignatedCost
}

// GetDesignatedPortNum retrieves the value of the leaf DesignatedPortNum from the Stp_Mstp_MstInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedPortNum is set, it can
// safely use t.GetDesignatedPortNum() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedPortNum == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance_Interface) GetDesignatedPortNum() uint16 {
	if t == nil || t.DesignatedPortNum == nil {
		return 0
	}
	return *t.DesignatedPortNum
}

// GetDesignatedPortPriority retrieves the value of the leaf DesignatedPortPriority from the Stp_Mstp_MstInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedPortPriority is set, it can
// safely use t.GetDesignatedPortPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedPortPriority == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance_Interface) GetDesignatedPortPriority() uint8 {
	if t == nil || t.DesignatedPortPriority == nil {
		return 0
	}
	return *t.DesignatedPortPriority
}

// GetDesignatedRootAddress retrieves the value of the leaf DesignatedRootAddress from the Stp_Mstp_MstInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedRootAddress is set, it can
// safely use t.GetDesignatedRootAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedRootAddress == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance_Interface) GetDesignatedRootAddress() string {
	if t == nil || t.DesignatedRootAddress == nil {
		return ""
	}
	return *t.DesignatedRootAddress
}

// GetDesignatedRootPriority retrieves the value of the leaf DesignatedRootPriority from the Stp_Mstp_MstInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedRootPriority is set, it can
// safely use t.GetDesignatedRootPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedRootPriority == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance_Interface) GetDesignatedRootPriority() uint16 {
	if t == nil || t.DesignatedRootPriority == nil {
		return 32768
	}
	return *t.DesignatedRootPriority
}

// GetForwardTransisitions retrieves the value of the leaf ForwardTransisitions from the Stp_Mstp_MstInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ForwardTransisitions is set, it can
// safely use t.GetForwardTransisitions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ForwardTransisitions == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance_Interface) GetForwardTransisitions() uint64 {
	if t == nil || t.ForwardTransisitions == nil {
		return 0
	}
	return *t.ForwardTransisitions
}

// GetName retrieves the value of the leaf Name from the Stp_Mstp_MstInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance_Interface) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetPortNum retrieves the value of the leaf PortNum from the Stp_Mstp_MstInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortNum is set, it can
// safely use t.GetPortNum() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortNum == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance_Interface) GetPortNum() uint16 {
	if t == nil || t.PortNum == nil {
		return 0
	}
	return *t.PortNum
}

// GetPortPriority retrieves the value of the leaf PortPriority from the Stp_Mstp_MstInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortPriority is set, it can
// safely use t.GetPortPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortPriority == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance_Interface) GetPortPriority() uint8 {
	if t == nil || t.PortPriority == nil {
		return 0
	}
	return *t.PortPriority
}

// GetPortState retrieves the value of the leaf PortState from the Stp_Mstp_MstInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortState is set, it can
// safely use t.GetPortState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortState == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance_Interface) GetPortState() E_SpanningTreeTypes_STP_PORT_STATE {
	if t == nil || t.PortState == 0 {
		return 0
	}
	return t.PortState
}

// GetRole retrieves the value of the leaf Role from the Stp_Mstp_MstInstance_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Role is set, it can
// safely use t.GetRole() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Role == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance_Interface) GetRole() E_SpanningTreeTypes_STP_PORT_ROLE {
	if t == nil || t.Role == 0 {
		return 0
	}
	return t.Role
}

// PopulateDefaults recursively populates unset leaf fields in the Stp_Mstp_MstInstance_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Stp_Mstp_MstInstance_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DesignatedBridgePriority == nil {
		var v uint16 = 32768
		t.DesignatedBridgePriority = &v
	}
	if t.DesignatedRootPriority == nil {
		var v uint16 = 32768
		t.DesignatedRootPriority = &v
	}
	t.Counters.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the Stp_Mstp_MstInstance_Interface struct, which is a YANG list entry.
func (t *Stp_Mstp_MstInstance_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Mstp_MstInstance_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Stp_Mstp_MstInstance_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Mstp_MstInstance_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Stp_Mstp_MstInstance_Interface) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Stp_Mstp_MstInstance_Interface.
func (*Stp_Mstp_MstInstance_Interface) ΛBelongingModule() string {
	return "openconfig-spanning-tree"
}

// Stp_Mstp_MstInstance_Interface_Counters represents the /openconfig-spanning-tree/stp/mstp/mst-instances/mst-instance/interfaces/interface/state/counters YANG schema element.
type Stp_Mstp_MstInstance_Interface_Counters struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	BpduReceived  *uint64           `path:"bpdu-received" module:"openconfig-spanning-tree"`
	ΛBpduReceived []ygot.Annotation `path:"@bpdu-received" ygotAnnotation:"true"`
	BpduSent      *uint64           `path:"bpdu-sent" module:"openconfig-spanning-tree"`
	ΛBpduSent     []ygot.Annotation `path:"@bpdu-sent" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Stp_Mstp_MstInstance_Interface_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Stp_Mstp_MstInstance_Interface_Counters) IsYANGGoStruct() {}

// GetBpduReceived retrieves the value of the leaf BpduReceived from the Stp_Mstp_MstInstance_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BpduReceived is set, it can
// safely use t.GetBpduReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BpduReceived == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance_Interface_Counters) GetBpduReceived() uint64 {
	if t == nil || t.BpduReceived == nil {
		return 0
	}
	return *t.BpduReceived
}

// GetBpduSent retrieves the value of the leaf BpduSent from the Stp_Mstp_MstInstance_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BpduSent is set, it can
// safely use t.GetBpduSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BpduSent == nil' before retrieving the leaf's value.
func (t *Stp_Mstp_MstInstance_Interface_Counters) GetBpduSent() uint64 {
	if t == nil || t.BpduSent == nil {
		return 0
	}
	return *t.BpduSent
}

// PopulateDefaults recursively populates unset leaf fields in the Stp_Mstp_MstInstance_Interface_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Stp_Mstp_MstInstance_Interface_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Mstp_MstInstance_Interface_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Stp_Mstp_MstInstance_Interface_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Mstp_MstInstance_Interface_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Stp_Mstp_MstInstance_Interface_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of Stp_Mstp_MstInstance_Interface_Counters.
func (*Stp_Mstp_MstInstance_Interface_Counters) ΛBelongingModule() string {
	return "openconfig-spanning-tree"
}

// Stp_Rstp represents the /openconfig-spanning-tree/stp/rstp YANG schema element.
type Stp_Rstp struct {
	ΛMetadata               []ygot.Annotation              `path:"@" ygotAnnotation:"true"`
	BridgeAddress           *string                        `path:"state/bridge-address" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛBridgeAddress          []ygot.Annotation              `path:"state/@bridge-address" ygotAnnotation:"true"`
	BridgePriority          *uint16                        `path:"config/bridge-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛBridgePriority         []ygot.Annotation              `path:"config/@bridge-priority" ygotAnnotation:"true"`
	DesignatedRootAddress   *string                        `path:"state/designated-root-address" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedRootAddress  []ygot.Annotation              `path:"state/@designated-root-address" ygotAnnotation:"true"`
	DesignatedRootPriority  *uint16                        `path:"state/designated-root-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedRootPriority []ygot.Annotation              `path:"state/@designated-root-priority" ygotAnnotation:"true"`
	ForwardingDelay         *uint8                         `path:"config/forwarding-delay" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛForwardingDelay        []ygot.Annotation              `path:"config/@forwarding-delay" ygotAnnotation:"true"`
	HelloTime               *uint8                         `path:"config/hello-time" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛHelloTime              []ygot.Annotation              `path:"config/@hello-time" ygotAnnotation:"true"`
	HoldCount               *uint8                         `path:"config/hold-count" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛHoldCount              []ygot.Annotation              `path:"config/@hold-count" ygotAnnotation:"true"`
	HoldTime                *uint8                         `path:"state/hold-time" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛHoldTime               []ygot.Annotation              `path:"state/@hold-time" ygotAnnotation:"true"`
	Interface               map[string]*Stp_Rstp_Interface `path:"interfaces/interface" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛInterface              []ygot.Annotation              `path:"interfaces/@interface" ygotAnnotation:"true"`
	LastTopologyChange      *uint64                        `path:"state/last-topology-change" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛLastTopologyChange     []ygot.Annotation              `path:"state/@last-topology-change" ygotAnnotation:"true"`
	MaxAge                  *uint8                         `path:"config/max-age" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛMaxAge                 []ygot.Annotation              `path:"config/@max-age" ygotAnnotation:"true"`
	RootCost                *uint32                        `path:"state/root-cost" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛRootCost               []ygot.Annotation              `path:"state/@root-cost" ygotAnnotation:"true"`
	RootPort                *uint16                        `path:"state/root-port" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛRootPort               []ygot.Annotation              `path:"state/@root-port" ygotAnnotation:"true"`
	TopologyChanges         *uint64                        `path:"state/topology-changes" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛTopologyChanges        []ygot.Annotation              `path:"state/@topology-changes" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Stp_Rstp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Stp_Rstp) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// Stp_Rstp struct. The keys of the list are populated from the input
// arguments.
func (t *Stp_Rstp) NewInterface(Name string) (*Stp_Rstp_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Stp_Rstp_Interface)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &Stp_Rstp_Interface{
		Name: &Name,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the Stp_Rstp struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Stp_Rstp) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.Name = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from Stp_Rstp.
//
// It initializes the field if not already initialized.
func (t *Stp_Rstp) GetOrCreateInterfaceMap() map[string]*Stp_Rstp_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*Stp_Rstp_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver Stp_Rstp. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Stp_Rstp) GetOrCreateInterface(Name string) *Stp_Rstp_Interface {

	key := Name

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of Stp_Rstp. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Stp_Rstp) GetInterface(Name string) *Stp_Rstp_Interface {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied Stp_Rstp_Interface struct to the
// list Interface of Stp_Rstp. If the key value(s) specified in
// the supplied Stp_Rstp_Interface already exist in the list, an error is
// returned.
func (t *Stp_Rstp) AppendInterface(v *Stp_Rstp_Interface) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Stp_Rstp_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// GetBridgeAddress retrieves the value of the leaf BridgeAddress from the Stp_Rstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BridgeAddress is set, it can
// safely use t.GetBridgeAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BridgeAddress == nil' before retrieving the leaf's value.
func (t *Stp_Rstp) GetBridgeAddress() string {
	if t == nil || t.BridgeAddress == nil {
		return ""
	}
	return *t.BridgeAddress
}

// GetBridgePriority retrieves the value of the leaf BridgePriority from the Stp_Rstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BridgePriority is set, it can
// safely use t.GetBridgePriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BridgePriority == nil' before retrieving the leaf's value.
func (t *Stp_Rstp) GetBridgePriority() uint16 {
	if t == nil || t.BridgePriority == nil {
		return 32768
	}
	return *t.BridgePriority
}

// GetDesignatedRootAddress retrieves the value of the leaf DesignatedRootAddress from the Stp_Rstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedRootAddress is set, it can
// safely use t.GetDesignatedRootAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedRootAddress == nil' before retrieving the leaf's value.
func (t *Stp_Rstp) GetDesignatedRootAddress() string {
	if t == nil || t.DesignatedRootAddress == nil {
		return ""
	}
	return *t.DesignatedRootAddress
}

// GetDesignatedRootPriority retrieves the value of the leaf DesignatedRootPriority from the Stp_Rstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedRootPriority is set, it can
// safely use t.GetDesignatedRootPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedRootPriority == nil' before retrieving the leaf's value.
func (t *Stp_Rstp) GetDesignatedRootPriority() uint16 {
	if t == nil || t.DesignatedRootPriority == nil {
		return 32768
	}
	return *t.DesignatedRootPriority
}

// GetForwardingDelay retrieves the value of the leaf ForwardingDelay from the Stp_Rstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ForwardingDelay is set, it can
// safely use t.GetForwardingDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ForwardingDelay == nil' before retrieving the leaf's value.
func (t *Stp_Rstp) GetForwardingDelay() uint8 {
	if t == nil || t.ForwardingDelay == nil {
		return 0
	}
	return *t.ForwardingDelay
}

// GetHelloTime retrieves the value of the leaf HelloTime from the Stp_Rstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloTime is set, it can
// safely use t.GetHelloTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloTime == nil' before retrieving the leaf's value.
func (t *Stp_Rstp) GetHelloTime() uint8 {
	if t == nil || t.HelloTime == nil {
		return 0
	}
	return *t.HelloTime
}

// GetHoldCount retrieves the value of the leaf HoldCount from the Stp_Rstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HoldCount is set, it can
// safely use t.GetHoldCount() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HoldCount == nil' before retrieving the leaf's value.
func (t *Stp_Rstp) GetHoldCount() uint8 {
	if t == nil || t.HoldCount == nil {
		return 6
	}
	return *t.HoldCount
}

// GetHoldTime retrieves the value of the leaf HoldTime from the Stp_Rstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HoldTime is set, it can
// safely use t.GetHoldTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HoldTime == nil' before retrieving the leaf's value.
func (t *Stp_Rstp) GetHoldTime() uint8 {
	if t == nil || t.HoldTime == nil {
		return 0
	}
	return *t.HoldTime
}

// GetLastTopologyChange retrieves the value of the leaf LastTopologyChange from the Stp_Rstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastTopologyChange is set, it can
// safely use t.GetLastTopologyChange() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastTopologyChange == nil' before retrieving the leaf's value.
func (t *Stp_Rstp) GetLastTopologyChange() uint64 {
	if t == nil || t.LastTopologyChange == nil {
		return 0
	}
	return *t.LastTopologyChange
}

// GetMaxAge retrieves the value of the leaf MaxAge from the Stp_Rstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxAge is set, it can
// safely use t.GetMaxAge() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxAge == nil' before retrieving the leaf's value.
func (t *Stp_Rstp) GetMaxAge() uint8 {
	if t == nil || t.MaxAge == nil {
		return 0
	}
	return *t.MaxAge
}

// GetRootCost retrieves the value of the leaf RootCost from the Stp_Rstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RootCost is set, it can
// safely use t.GetRootCost() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RootCost == nil' before retrieving the leaf's value.
func (t *Stp_Rstp) GetRootCost() uint32 {
	if t == nil || t.RootCost == nil {
		return 0
	}
	return *t.RootCost
}

// GetRootPort retrieves the value of the leaf RootPort from the Stp_Rstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RootPort is set, it can
// safely use t.GetRootPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RootPort == nil' before retrieving the leaf's value.
func (t *Stp_Rstp) GetRootPort() uint16 {
	if t == nil || t.RootPort == nil {
		return 0
	}
	return *t.RootPort
}

// GetTopologyChanges retrieves the value of the leaf TopologyChanges from the Stp_Rstp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TopologyChanges is set, it can
// safely use t.GetTopologyChanges() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TopologyChanges == nil' before retrieving the leaf's value.
func (t *Stp_Rstp) GetTopologyChanges() uint64 {
	if t == nil || t.TopologyChanges == nil {
		return 0
	}
	return *t.TopologyChanges
}

// PopulateDefaults recursively populates unset leaf fields in the Stp_Rstp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Stp_Rstp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.BridgePriority == nil {
		var v uint16 = 32768
		t.BridgePriority = &v
	}
	if t.DesignatedRootPriority == nil {
		var v uint16 = 32768
		t.DesignatedRootPriority = &v
	}
	if t.HoldCount == nil {
		var v uint8 = 6
		t.HoldCount = &v
	}
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Rstp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Stp_Rstp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Rstp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Stp_Rstp) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Stp_Rstp.
func (*Stp_Rstp) ΛBelongingModule() string {
	return "openconfig-spanning-tree"
}

// Stp_Rstp_Interface represents the /openconfig-spanning-tree/stp/rstp/interfaces/interface YANG schema element.
type Stp_Rstp_Interface struct {
	ΛMetadata                 []ygot.Annotation                  `path:"@" ygotAnnotation:"true"`
	Cost                      *uint32                            `path:"config/cost" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛCost                     []ygot.Annotation                  `path:"config/@cost" ygotAnnotation:"true"`
	Counters                  *Stp_Rstp_Interface_Counters       `path:"state/counters" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛCounters                 []ygot.Annotation                  `path:"state/@counters" ygotAnnotation:"true"`
	DesignatedBridgeAddress   *string                            `path:"state/designated-bridge-address" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedBridgeAddress  []ygot.Annotation                  `path:"state/@designated-bridge-address" ygotAnnotation:"true"`
	DesignatedBridgePriority  *uint16                            `path:"state/designated-bridge-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedBridgePriority []ygot.Annotation                  `path:"state/@designated-bridge-priority" ygotAnnotation:"true"`
	DesignatedCost            *uint32                            `path:"state/designated-cost" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedCost           []ygot.Annotation                  `path:"state/@designated-cost" ygotAnnotation:"true"`
	DesignatedPortNum         *uint16                            `path:"state/designated-port-num" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedPortNum        []ygot.Annotation                  `path:"state/@designated-port-num" ygotAnnotation:"true"`
	DesignatedPortPriority    *uint8                             `path:"state/designated-port-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedPortPriority   []ygot.Annotation                  `path:"state/@designated-port-priority" ygotAnnotation:"true"`
	DesignatedRootAddress     *string                            `path:"state/designated-root-address" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedRootAddress    []ygot.Annotation                  `path:"state/@designated-root-address" ygotAnnotation:"true"`
	DesignatedRootPriority    *uint16                            `path:"state/designated-root-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedRootPriority   []ygot.Annotation                  `path:"state/@designated-root-priority" ygotAnnotation:"true"`
	ForwardTransisitions      *uint64                            `path:"state/forward-transisitions" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛForwardTransisitions     []ygot.Annotation                  `path:"state/@forward-transisitions" ygotAnnotation:"true"`
	Name                      *string                            `path:"config/name|name" module:"openconfig-spanning-tree/openconfig-spanning-tree|openconfig-spanning-tree"`
	ΛName                     []ygot.Annotation                  `path:"config/@name|@name" ygotAnnotation:"true"`
	PortNum                   *uint16                            `path:"state/port-num" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛPortNum                  []ygot.Annotation                  `path:"state/@port-num" ygotAnnotation:"true"`
	PortPriority              *uint8                             `path:"config/port-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛPortPriority             []ygot.Annotation                  `path:"config/@port-priority" ygotAnnotation:"true"`
	PortState                 E_SpanningTreeTypes_STP_PORT_STATE `path:"state/port-state" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛPortState                []ygot.Annotation                  `path:"state/@port-state" ygotAnnotation:"true"`
	Role                      E_SpanningTreeTypes_STP_PORT_ROLE  `path:"state/role" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛRole                     []ygot.Annotation                  `path:"state/@role" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Stp_Rstp_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Stp_Rstp_Interface) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *Stp_Rstp_Interface) GetOrCreateCounters() *Stp_Rstp_Interface_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &Stp_Rstp_Interface_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from Stp_Rstp_Interface. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Stp_Rstp_Interface) GetCounters() *Stp_Rstp_Interface_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetCost retrieves the value of the leaf Cost from the Stp_Rstp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Cost is set, it can
// safely use t.GetCost() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Cost == nil' before retrieving the leaf's value.
func (t *Stp_Rstp_Interface) GetCost() uint32 {
	if t == nil || t.Cost == nil {
		return 0
	}
	return *t.Cost
}

// GetDesignatedBridgeAddress retrieves the value of the leaf DesignatedBridgeAddress from the Stp_Rstp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedBridgeAddress is set, it can
// safely use t.GetDesignatedBridgeAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedBridgeAddress == nil' before retrieving the leaf's value.
func (t *Stp_Rstp_Interface) GetDesignatedBridgeAddress() string {
	if t == nil || t.DesignatedBridgeAddress == nil {
		return ""
	}
	return *t.DesignatedBridgeAddress
}

// GetDesignatedBridgePriority retrieves the value of the leaf DesignatedBridgePriority from the Stp_Rstp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedBridgePriority is set, it can
// safely use t.GetDesignatedBridgePriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedBridgePriority == nil' before retrieving the leaf's value.
func (t *Stp_Rstp_Interface) GetDesignatedBridgePriority() uint16 {
	if t == nil || t.DesignatedBridgePriority == nil {
		return 32768
	}
	return *t.DesignatedBridgePriority
}

// GetDesignatedCost retrieves the value of the leaf DesignatedCost from the Stp_Rstp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedCost is set, it can
// safely use t.GetDesignatedCost() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedCost == nil' before retrieving the leaf's value.
func (t *Stp_Rstp_Interface) GetDesignatedCost() uint32 {
	if t == nil || t.DesignatedCost == nil {
		return 0
	}
	return *t.DesignatedCost
}

// GetDesignatedPortNum retrieves the value of the leaf DesignatedPortNum from the Stp_Rstp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedPortNum is set, it can
// safely use t.GetDesignatedPortNum() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedPortNum == nil' before retrieving the leaf's value.
func (t *Stp_Rstp_Interface) GetDesignatedPortNum() uint16 {
	if t == nil || t.DesignatedPortNum == nil {
		return 0
	}
	return *t.DesignatedPortNum
}

// GetDesignatedPortPriority retrieves the value of the leaf DesignatedPortPriority from the Stp_Rstp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedPortPriority is set, it can
// safely use t.GetDesignatedPortPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedPortPriority == nil' before retrieving the leaf's value.
func (t *Stp_Rstp_Interface) GetDesignatedPortPriority() uint8 {
	if t == nil || t.DesignatedPortPriority == nil {
		return 0
	}
	return *t.DesignatedPortPriority
}

// GetDesignatedRootAddress retrieves the value of the leaf DesignatedRootAddress from the Stp_Rstp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedRootAddress is set, it can
// safely use t.GetDesignatedRootAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedRootAddress == nil' before retrieving the leaf's value.
func (t *Stp_Rstp_Interface) GetDesignatedRootAddress() string {
	if t == nil || t.DesignatedRootAddress == nil {
		return ""
	}
	return *t.DesignatedRootAddress
}

// GetDesignatedRootPriority retrieves the value of the leaf DesignatedRootPriority from the Stp_Rstp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedRootPriority is set, it can
// safely use t.GetDesignatedRootPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedRootPriority == nil' before retrieving the leaf's value.
func (t *Stp_Rstp_Interface) GetDesignatedRootPriority() uint16 {
	if t == nil || t.DesignatedRootPriority == nil {
		return 32768
	}
	return *t.DesignatedRootPriority
}

// GetForwardTransisitions retrieves the value of the leaf ForwardTransisitions from the Stp_Rstp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ForwardTransisitions is set, it can
// safely use t.GetForwardTransisitions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ForwardTransisitions == nil' before retrieving the leaf's value.
func (t *Stp_Rstp_Interface) GetForwardTransisitions() uint64 {
	if t == nil || t.ForwardTransisitions == nil {
		return 0
	}
	return *t.ForwardTransisitions
}

// GetName retrieves the value of the leaf Name from the Stp_Rstp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Stp_Rstp_Interface) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetPortNum retrieves the value of the leaf PortNum from the Stp_Rstp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortNum is set, it can
// safely use t.GetPortNum() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortNum == nil' before retrieving the leaf's value.
func (t *Stp_Rstp_Interface) GetPortNum() uint16 {
	if t == nil || t.PortNum == nil {
		return 0
	}
	return *t.PortNum
}

// GetPortPriority retrieves the value of the leaf PortPriority from the Stp_Rstp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortPriority is set, it can
// safely use t.GetPortPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortPriority == nil' before retrieving the leaf's value.
func (t *Stp_Rstp_Interface) GetPortPriority() uint8 {
	if t == nil || t.PortPriority == nil {
		return 0
	}
	return *t.PortPriority
}

// GetPortState retrieves the value of the leaf PortState from the Stp_Rstp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortState is set, it can
// safely use t.GetPortState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortState == nil' before retrieving the leaf's value.
func (t *Stp_Rstp_Interface) GetPortState() E_SpanningTreeTypes_STP_PORT_STATE {
	if t == nil || t.PortState == 0 {
		return 0
	}
	return t.PortState
}

// GetRole retrieves the value of the leaf Role from the Stp_Rstp_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Role is set, it can
// safely use t.GetRole() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Role == nil' before retrieving the leaf's value.
func (t *Stp_Rstp_Interface) GetRole() E_SpanningTreeTypes_STP_PORT_ROLE {
	if t == nil || t.Role == 0 {
		return 0
	}
	return t.Role
}

// PopulateDefaults recursively populates unset leaf fields in the Stp_Rstp_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Stp_Rstp_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DesignatedBridgePriority == nil {
		var v uint16 = 32768
		t.DesignatedBridgePriority = &v
	}
	if t.DesignatedRootPriority == nil {
		var v uint16 = 32768
		t.DesignatedRootPriority = &v
	}
	t.Counters.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the Stp_Rstp_Interface struct, which is a YANG list entry.
func (t *Stp_Rstp_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Rstp_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Stp_Rstp_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Rstp_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Stp_Rstp_Interface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Stp_Rstp_Interface.
func (*Stp_Rstp_Interface) ΛBelongingModule() string {
	return "openconfig-spanning-tree"
}

// Stp_Rstp_Interface_Counters represents the /openconfig-spanning-tree/stp/rstp/interfaces/interface/state/counters YANG schema element.
type Stp_Rstp_Interface_Counters struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	BpduReceived  *uint64           `path:"bpdu-received" module:"openconfig-spanning-tree"`
	ΛBpduReceived []ygot.Annotation `path:"@bpdu-received" ygotAnnotation:"true"`
	BpduSent      *uint64           `path:"bpdu-sent" module:"openconfig-spanning-tree"`
	ΛBpduSent     []ygot.Annotation `path:"@bpdu-sent" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Stp_Rstp_Interface_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Stp_Rstp_Interface_Counters) IsYANGGoStruct() {}

// GetBpduReceived retrieves the value of the leaf BpduReceived from the Stp_Rstp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BpduReceived is set, it can
// safely use t.GetBpduReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BpduReceived == nil' before retrieving the leaf's value.
func (t *Stp_Rstp_Interface_Counters) GetBpduReceived() uint64 {
	if t == nil || t.BpduReceived == nil {
		return 0
	}
	return *t.BpduReceived
}

// GetBpduSent retrieves the value of the leaf BpduSent from the Stp_Rstp_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BpduSent is set, it can
// safely use t.GetBpduSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BpduSent == nil' before retrieving the leaf's value.
func (t *Stp_Rstp_Interface_Counters) GetBpduSent() uint64 {
	if t == nil || t.BpduSent == nil {
		return 0
	}
	return *t.BpduSent
}

// PopulateDefaults recursively populates unset leaf fields in the Stp_Rstp_Interface_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Stp_Rstp_Interface_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Rstp_Interface_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Stp_Rstp_Interface_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Rstp_Interface_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Stp_Rstp_Interface_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Stp_Rstp_Interface_Counters.
func (*Stp_Rstp_Interface_Counters) ΛBelongingModule() string {
	return "openconfig-spanning-tree"
}

// Stp_Vlan represents the /openconfig-spanning-tree/stp/rapid-pvst/vlan YANG schema element.
type Stp_Vlan struct {
	ΛMetadata               []ygot.Annotation              `path:"@" ygotAnnotation:"true"`
	BridgeAddress           *string                        `path:"state/bridge-address" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛBridgeAddress          []ygot.Annotation              `path:"state/@bridge-address" ygotAnnotation:"true"`
	BridgePriority          *uint16                        `path:"config/bridge-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛBridgePriority         []ygot.Annotation              `path:"config/@bridge-priority" ygotAnnotation:"true"`
	DesignatedRootAddress   *string                        `path:"state/designated-root-address" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedRootAddress  []ygot.Annotation              `path:"state/@designated-root-address" ygotAnnotation:"true"`
	DesignatedRootPriority  *uint16                        `path:"state/designated-root-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedRootPriority []ygot.Annotation              `path:"state/@designated-root-priority" ygotAnnotation:"true"`
	ForwardingDelay         *uint8                         `path:"config/forwarding-delay" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛForwardingDelay        []ygot.Annotation              `path:"config/@forwarding-delay" ygotAnnotation:"true"`
	HelloTime               *uint8                         `path:"config/hello-time" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛHelloTime              []ygot.Annotation              `path:"config/@hello-time" ygotAnnotation:"true"`
	HoldCount               *uint8                         `path:"config/hold-count" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛHoldCount              []ygot.Annotation              `path:"config/@hold-count" ygotAnnotation:"true"`
	HoldTime                *uint8                         `path:"state/hold-time" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛHoldTime               []ygot.Annotation              `path:"state/@hold-time" ygotAnnotation:"true"`
	Interface               map[string]*Stp_Vlan_Interface `path:"interfaces/interface" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛInterface              []ygot.Annotation              `path:"interfaces/@interface" ygotAnnotation:"true"`
	LastTopologyChange      *uint64                        `path:"state/last-topology-change" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛLastTopologyChange     []ygot.Annotation              `path:"state/@last-topology-change" ygotAnnotation:"true"`
	MaxAge                  *uint8                         `path:"config/max-age" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛMaxAge                 []ygot.Annotation              `path:"config/@max-age" ygotAnnotation:"true"`
	RootCost                *uint32                        `path:"state/root-cost" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛRootCost               []ygot.Annotation              `path:"state/@root-cost" ygotAnnotation:"true"`
	RootPort                *uint16                        `path:"state/root-port" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛRootPort               []ygot.Annotation              `path:"state/@root-port" ygotAnnotation:"true"`
	TopologyChanges         *uint64                        `path:"state/topology-changes" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛTopologyChanges        []ygot.Annotation              `path:"state/@topology-changes" ygotAnnotation:"true"`
	VlanId                  *uint16                        `path:"config/vlan-id|vlan-id" module:"openconfig-spanning-tree/openconfig-spanning-tree|openconfig-spanning-tree"`
	ΛVlanId                 []ygot.Annotation              `path:"config/@vlan-id|@vlan-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Stp_Vlan implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Stp_Vlan) IsYANGGoStruct() {}

// NewInterface creates a new entry in the Interface list of the
// Stp_Vlan struct. The keys of the list are populated from the input
// arguments.
func (t *Stp_Vlan) NewInterface(Name string) (*Stp_Vlan_Interface, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Stp_Vlan_Interface)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Interface[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Interface", key)
	}

	t.Interface[key] = &Stp_Vlan_Interface{
		Name: &Name,
	}

	return t.Interface[key], nil
}

// RenameInterface renames an entry in the list Interface within
// the Stp_Vlan struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *Stp_Vlan) RenameInterface(oldK, newK string) error {
	if _, ok := t.Interface[newK]; ok {
		return fmt.Errorf("key %v already exists in Interface", newK)
	}

	e, ok := t.Interface[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Interface", oldK)
	}
	e.Name = &newK

	t.Interface[newK] = e
	delete(t.Interface, oldK)
	return nil
}

// GetOrCreateInterfaceMap returns the list (map) from Stp_Vlan.
//
// It initializes the field if not already initialized.
func (t *Stp_Vlan) GetOrCreateInterfaceMap() map[string]*Stp_Vlan_Interface {
	if t.Interface == nil {
		t.Interface = make(map[string]*Stp_Vlan_Interface)
	}
	return t.Interface
}

// GetOrCreateInterface retrieves the value with the specified keys from
// the receiver Stp_Vlan. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *Stp_Vlan) GetOrCreateInterface(Name string) *Stp_Vlan_Interface {

	key := Name

	if v, ok := t.Interface[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewInterface(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateInterface got unexpected error: %v", err))
	}
	return v
}

// GetInterface retrieves the value with the specified key from
// the Interface map field of Stp_Vlan. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *Stp_Vlan) GetInterface(Name string) *Stp_Vlan_Interface {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.Interface[key]; ok {
		return lm
	}
	return nil
}

// AppendInterface appends the supplied Stp_Vlan_Interface struct to the
// list Interface of Stp_Vlan. If the key value(s) specified in
// the supplied Stp_Vlan_Interface already exist in the list, an error is
// returned.
func (t *Stp_Vlan) AppendInterface(v *Stp_Vlan_Interface) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Interface == nil {
		t.Interface = make(map[string]*Stp_Vlan_Interface)
	}

	if _, ok := t.Interface[key]; ok {
		return fmt.Errorf("duplicate key for list Interface %v", key)
	}

	t.Interface[key] = v
	return nil
}

// GetBridgeAddress retrieves the value of the leaf BridgeAddress from the Stp_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BridgeAddress is set, it can
// safely use t.GetBridgeAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BridgeAddress == nil' before retrieving the leaf's value.
func (t *Stp_Vlan) GetBridgeAddress() string {
	if t == nil || t.BridgeAddress == nil {
		return ""
	}
	return *t.BridgeAddress
}

// GetBridgePriority retrieves the value of the leaf BridgePriority from the Stp_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BridgePriority is set, it can
// safely use t.GetBridgePriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BridgePriority == nil' before retrieving the leaf's value.
func (t *Stp_Vlan) GetBridgePriority() uint16 {
	if t == nil || t.BridgePriority == nil {
		return 32768
	}
	return *t.BridgePriority
}

// GetDesignatedRootAddress retrieves the value of the leaf DesignatedRootAddress from the Stp_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedRootAddress is set, it can
// safely use t.GetDesignatedRootAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedRootAddress == nil' before retrieving the leaf's value.
func (t *Stp_Vlan) GetDesignatedRootAddress() string {
	if t == nil || t.DesignatedRootAddress == nil {
		return ""
	}
	return *t.DesignatedRootAddress
}

// GetDesignatedRootPriority retrieves the value of the leaf DesignatedRootPriority from the Stp_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedRootPriority is set, it can
// safely use t.GetDesignatedRootPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedRootPriority == nil' before retrieving the leaf's value.
func (t *Stp_Vlan) GetDesignatedRootPriority() uint16 {
	if t == nil || t.DesignatedRootPriority == nil {
		return 32768
	}
	return *t.DesignatedRootPriority
}

// GetForwardingDelay retrieves the value of the leaf ForwardingDelay from the Stp_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ForwardingDelay is set, it can
// safely use t.GetForwardingDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ForwardingDelay == nil' before retrieving the leaf's value.
func (t *Stp_Vlan) GetForwardingDelay() uint8 {
	if t == nil || t.ForwardingDelay == nil {
		return 0
	}
	return *t.ForwardingDelay
}

// GetHelloTime retrieves the value of the leaf HelloTime from the Stp_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HelloTime is set, it can
// safely use t.GetHelloTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HelloTime == nil' before retrieving the leaf's value.
func (t *Stp_Vlan) GetHelloTime() uint8 {
	if t == nil || t.HelloTime == nil {
		return 0
	}
	return *t.HelloTime
}

// GetHoldCount retrieves the value of the leaf HoldCount from the Stp_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HoldCount is set, it can
// safely use t.GetHoldCount() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HoldCount == nil' before retrieving the leaf's value.
func (t *Stp_Vlan) GetHoldCount() uint8 {
	if t == nil || t.HoldCount == nil {
		return 6
	}
	return *t.HoldCount
}

// GetHoldTime retrieves the value of the leaf HoldTime from the Stp_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if HoldTime is set, it can
// safely use t.GetHoldTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.HoldTime == nil' before retrieving the leaf's value.
func (t *Stp_Vlan) GetHoldTime() uint8 {
	if t == nil || t.HoldTime == nil {
		return 0
	}
	return *t.HoldTime
}

// GetLastTopologyChange retrieves the value of the leaf LastTopologyChange from the Stp_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastTopologyChange is set, it can
// safely use t.GetLastTopologyChange() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastTopologyChange == nil' before retrieving the leaf's value.
func (t *Stp_Vlan) GetLastTopologyChange() uint64 {
	if t == nil || t.LastTopologyChange == nil {
		return 0
	}
	return *t.LastTopologyChange
}

// GetMaxAge retrieves the value of the leaf MaxAge from the Stp_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxAge is set, it can
// safely use t.GetMaxAge() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxAge == nil' before retrieving the leaf's value.
func (t *Stp_Vlan) GetMaxAge() uint8 {
	if t == nil || t.MaxAge == nil {
		return 0
	}
	return *t.MaxAge
}

// GetRootCost retrieves the value of the leaf RootCost from the Stp_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RootCost is set, it can
// safely use t.GetRootCost() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RootCost == nil' before retrieving the leaf's value.
func (t *Stp_Vlan) GetRootCost() uint32 {
	if t == nil || t.RootCost == nil {
		return 0
	}
	return *t.RootCost
}

// GetRootPort retrieves the value of the leaf RootPort from the Stp_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RootPort is set, it can
// safely use t.GetRootPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RootPort == nil' before retrieving the leaf's value.
func (t *Stp_Vlan) GetRootPort() uint16 {
	if t == nil || t.RootPort == nil {
		return 0
	}
	return *t.RootPort
}

// GetTopologyChanges retrieves the value of the leaf TopologyChanges from the Stp_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TopologyChanges is set, it can
// safely use t.GetTopologyChanges() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TopologyChanges == nil' before retrieving the leaf's value.
func (t *Stp_Vlan) GetTopologyChanges() uint64 {
	if t == nil || t.TopologyChanges == nil {
		return 0
	}
	return *t.TopologyChanges
}

// GetVlanId retrieves the value of the leaf VlanId from the Stp_Vlan
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VlanId is set, it can
// safely use t.GetVlanId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VlanId == nil' before retrieving the leaf's value.
func (t *Stp_Vlan) GetVlanId() uint16 {
	if t == nil || t.VlanId == nil {
		return 0
	}
	return *t.VlanId
}

// PopulateDefaults recursively populates unset leaf fields in the Stp_Vlan
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Stp_Vlan) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.BridgePriority == nil {
		var v uint16 = 32768
		t.BridgePriority = &v
	}
	if t.DesignatedRootPriority == nil {
		var v uint16 = 32768
		t.DesignatedRootPriority = &v
	}
	if t.HoldCount == nil {
		var v uint8 = 6
		t.HoldCount = &v
	}
	for _, e := range t.Interface {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the Stp_Vlan struct, which is a YANG list entry.
func (t *Stp_Vlan) ΛListKeyMap() (map[string]interface{}, error) {
	if t.VlanId == nil {
		return nil, fmt.Errorf("nil value for key VlanId")
	}

	return map[string]interface{}{
		"vlan-id": *t.VlanId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Vlan) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Stp_Vlan"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Vlan) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Stp_Vlan) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Stp_Vlan.
func (*Stp_Vlan) ΛBelongingModule() string {
	return "openconfig-spanning-tree"
}

// Stp_Vlan_Interface represents the /openconfig-spanning-tree/stp/rapid-pvst/vlan/interfaces/interface YANG schema element.
type Stp_Vlan_Interface struct {
	ΛMetadata                 []ygot.Annotation                  `path:"@" ygotAnnotation:"true"`
	Cost                      *uint32                            `path:"config/cost" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛCost                     []ygot.Annotation                  `path:"config/@cost" ygotAnnotation:"true"`
	Counters                  *Stp_Vlan_Interface_Counters       `path:"state/counters" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛCounters                 []ygot.Annotation                  `path:"state/@counters" ygotAnnotation:"true"`
	DesignatedBridgeAddress   *string                            `path:"state/designated-bridge-address" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedBridgeAddress  []ygot.Annotation                  `path:"state/@designated-bridge-address" ygotAnnotation:"true"`
	DesignatedBridgePriority  *uint16                            `path:"state/designated-bridge-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedBridgePriority []ygot.Annotation                  `path:"state/@designated-bridge-priority" ygotAnnotation:"true"`
	DesignatedCost            *uint32                            `path:"state/designated-cost" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedCost           []ygot.Annotation                  `path:"state/@designated-cost" ygotAnnotation:"true"`
	DesignatedPortNum         *uint16                            `path:"state/designated-port-num" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedPortNum        []ygot.Annotation                  `path:"state/@designated-port-num" ygotAnnotation:"true"`
	DesignatedPortPriority    *uint8                             `path:"state/designated-port-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedPortPriority   []ygot.Annotation                  `path:"state/@designated-port-priority" ygotAnnotation:"true"`
	DesignatedRootAddress     *string                            `path:"state/designated-root-address" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedRootAddress    []ygot.Annotation                  `path:"state/@designated-root-address" ygotAnnotation:"true"`
	DesignatedRootPriority    *uint16                            `path:"state/designated-root-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛDesignatedRootPriority   []ygot.Annotation                  `path:"state/@designated-root-priority" ygotAnnotation:"true"`
	ForwardTransisitions      *uint64                            `path:"state/forward-transisitions" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛForwardTransisitions     []ygot.Annotation                  `path:"state/@forward-transisitions" ygotAnnotation:"true"`
	Name                      *string                            `path:"config/name|name" module:"openconfig-spanning-tree/openconfig-spanning-tree|openconfig-spanning-tree"`
	ΛName                     []ygot.Annotation                  `path:"config/@name|@name" ygotAnnotation:"true"`
	PortNum                   *uint16                            `path:"state/port-num" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛPortNum                  []ygot.Annotation                  `path:"state/@port-num" ygotAnnotation:"true"`
	PortPriority              *uint8                             `path:"config/port-priority" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛPortPriority             []ygot.Annotation                  `path:"config/@port-priority" ygotAnnotation:"true"`
	PortState                 E_SpanningTreeTypes_STP_PORT_STATE `path:"state/port-state" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛPortState                []ygot.Annotation                  `path:"state/@port-state" ygotAnnotation:"true"`
	Role                      E_SpanningTreeTypes_STP_PORT_ROLE  `path:"state/role" module:"openconfig-spanning-tree/openconfig-spanning-tree"`
	ΛRole                     []ygot.Annotation                  `path:"state/@role" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Stp_Vlan_Interface implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Stp_Vlan_Interface) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *Stp_Vlan_Interface) GetOrCreateCounters() *Stp_Vlan_Interface_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &Stp_Vlan_Interface_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from Stp_Vlan_Interface. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *Stp_Vlan_Interface) GetCounters() *Stp_Vlan_Interface_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetCost retrieves the value of the leaf Cost from the Stp_Vlan_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Cost is set, it can
// safely use t.GetCost() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Cost == nil' before retrieving the leaf's value.
func (t *Stp_Vlan_Interface) GetCost() uint32 {
	if t == nil || t.Cost == nil {
		return 0
	}
	return *t.Cost
}

// GetDesignatedBridgeAddress retrieves the value of the leaf DesignatedBridgeAddress from the Stp_Vlan_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedBridgeAddress is set, it can
// safely use t.GetDesignatedBridgeAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedBridgeAddress == nil' before retrieving the leaf's value.
func (t *Stp_Vlan_Interface) GetDesignatedBridgeAddress() string {
	if t == nil || t.DesignatedBridgeAddress == nil {
		return ""
	}
	return *t.DesignatedBridgeAddress
}

// GetDesignatedBridgePriority retrieves the value of the leaf DesignatedBridgePriority from the Stp_Vlan_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedBridgePriority is set, it can
// safely use t.GetDesignatedBridgePriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedBridgePriority == nil' before retrieving the leaf's value.
func (t *Stp_Vlan_Interface) GetDesignatedBridgePriority() uint16 {
	if t == nil || t.DesignatedBridgePriority == nil {
		return 32768
	}
	return *t.DesignatedBridgePriority
}

// GetDesignatedCost retrieves the value of the leaf DesignatedCost from the Stp_Vlan_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedCost is set, it can
// safely use t.GetDesignatedCost() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedCost == nil' before retrieving the leaf's value.
func (t *Stp_Vlan_Interface) GetDesignatedCost() uint32 {
	if t == nil || t.DesignatedCost == nil {
		return 0
	}
	return *t.DesignatedCost
}

// GetDesignatedPortNum retrieves the value of the leaf DesignatedPortNum from the Stp_Vlan_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedPortNum is set, it can
// safely use t.GetDesignatedPortNum() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedPortNum == nil' before retrieving the leaf's value.
func (t *Stp_Vlan_Interface) GetDesignatedPortNum() uint16 {
	if t == nil || t.DesignatedPortNum == nil {
		return 0
	}
	return *t.DesignatedPortNum
}

// GetDesignatedPortPriority retrieves the value of the leaf DesignatedPortPriority from the Stp_Vlan_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedPortPriority is set, it can
// safely use t.GetDesignatedPortPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedPortPriority == nil' before retrieving the leaf's value.
func (t *Stp_Vlan_Interface) GetDesignatedPortPriority() uint8 {
	if t == nil || t.DesignatedPortPriority == nil {
		return 0
	}
	return *t.DesignatedPortPriority
}

// GetDesignatedRootAddress retrieves the value of the leaf DesignatedRootAddress from the Stp_Vlan_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedRootAddress is set, it can
// safely use t.GetDesignatedRootAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedRootAddress == nil' before retrieving the leaf's value.
func (t *Stp_Vlan_Interface) GetDesignatedRootAddress() string {
	if t == nil || t.DesignatedRootAddress == nil {
		return ""
	}
	return *t.DesignatedRootAddress
}

// GetDesignatedRootPriority retrieves the value of the leaf DesignatedRootPriority from the Stp_Vlan_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DesignatedRootPriority is set, it can
// safely use t.GetDesignatedRootPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DesignatedRootPriority == nil' before retrieving the leaf's value.
func (t *Stp_Vlan_Interface) GetDesignatedRootPriority() uint16 {
	if t == nil || t.DesignatedRootPriority == nil {
		return 32768
	}
	return *t.DesignatedRootPriority
}

// GetForwardTransisitions retrieves the value of the leaf ForwardTransisitions from the Stp_Vlan_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ForwardTransisitions is set, it can
// safely use t.GetForwardTransisitions() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ForwardTransisitions == nil' before retrieving the leaf's value.
func (t *Stp_Vlan_Interface) GetForwardTransisitions() uint64 {
	if t == nil || t.ForwardTransisitions == nil {
		return 0
	}
	return *t.ForwardTransisitions
}

// GetName retrieves the value of the leaf Name from the Stp_Vlan_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *Stp_Vlan_Interface) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetPortNum retrieves the value of the leaf PortNum from the Stp_Vlan_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortNum is set, it can
// safely use t.GetPortNum() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortNum == nil' before retrieving the leaf's value.
func (t *Stp_Vlan_Interface) GetPortNum() uint16 {
	if t == nil || t.PortNum == nil {
		return 0
	}
	return *t.PortNum
}

// GetPortPriority retrieves the value of the leaf PortPriority from the Stp_Vlan_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortPriority is set, it can
// safely use t.GetPortPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortPriority == nil' before retrieving the leaf's value.
func (t *Stp_Vlan_Interface) GetPortPriority() uint8 {
	if t == nil || t.PortPriority == nil {
		return 0
	}
	return *t.PortPriority
}

// GetPortState retrieves the value of the leaf PortState from the Stp_Vlan_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortState is set, it can
// safely use t.GetPortState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortState == nil' before retrieving the leaf's value.
func (t *Stp_Vlan_Interface) GetPortState() E_SpanningTreeTypes_STP_PORT_STATE {
	if t == nil || t.PortState == 0 {
		return 0
	}
	return t.PortState
}

// GetRole retrieves the value of the leaf Role from the Stp_Vlan_Interface
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Role is set, it can
// safely use t.GetRole() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Role == nil' before retrieving the leaf's value.
func (t *Stp_Vlan_Interface) GetRole() E_SpanningTreeTypes_STP_PORT_ROLE {
	if t == nil || t.Role == 0 {
		return 0
	}
	return t.Role
}

// PopulateDefaults recursively populates unset leaf fields in the Stp_Vlan_Interface
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Stp_Vlan_Interface) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.DesignatedBridgePriority == nil {
		var v uint16 = 32768
		t.DesignatedBridgePriority = &v
	}
	if t.DesignatedRootPriority == nil {
		var v uint16 = 32768
		t.DesignatedRootPriority = &v
	}
	t.Counters.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the Stp_Vlan_Interface struct, which is a YANG list entry.
func (t *Stp_Vlan_Interface) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Vlan_Interface) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Stp_Vlan_Interface"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Vlan_Interface) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Stp_Vlan_Interface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Stp_Vlan_Interface.
func (*Stp_Vlan_Interface) ΛBelongingModule() string {
	return "openconfig-spanning-tree"
}

// Stp_Vlan_Interface_Counters represents the /openconfig-spanning-tree/stp/rapid-pvst/vlan/interfaces/interface/state/counters YANG schema element.
type Stp_Vlan_Interface_Counters struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	BpduReceived  *uint64           `path:"bpdu-received" module:"openconfig-spanning-tree"`
	ΛBpduReceived []ygot.Annotation `path:"@bpdu-received" ygotAnnotation:"true"`
	BpduSent      *uint64           `path:"bpdu-sent" module:"openconfig-spanning-tree"`
	ΛBpduSent     []ygot.Annotation `path:"@bpdu-sent" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that Stp_Vlan_Interface_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*Stp_Vlan_Interface_Counters) IsYANGGoStruct() {}

// GetBpduReceived retrieves the value of the leaf BpduReceived from the Stp_Vlan_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BpduReceived is set, it can
// safely use t.GetBpduReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BpduReceived == nil' before retrieving the leaf's value.
func (t *Stp_Vlan_Interface_Counters) GetBpduReceived() uint64 {
	if t == nil || t.BpduReceived == nil {
		return 0
	}
	return *t.BpduReceived
}

// GetBpduSent retrieves the value of the leaf BpduSent from the Stp_Vlan_Interface_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BpduSent is set, it can
// safely use t.GetBpduSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BpduSent == nil' before retrieving the leaf's value.
func (t *Stp_Vlan_Interface_Counters) GetBpduSent() uint64 {
	if t == nil || t.BpduSent == nil {
		return 0
	}
	return *t.BpduSent
}

// PopulateDefaults recursively populates unset leaf fields in the Stp_Vlan_Interface_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *Stp_Vlan_Interface_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Vlan_Interface_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["Stp_Vlan_Interface_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *Stp_Vlan_Interface_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *Stp_Vlan_Interface_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of Stp_Vlan_Interface_Counters.
func (*Stp_Vlan_Interface_Counters) ΛBelongingModule() string {
	return "openconfig-spanning-tree"
}

// System represents the /openconfig-system/system YANG schema element.
type System struct {
	ΛMetadata                   []ygot.Annotation                      `path:"@" ygotAnnotation:"true"`
	Aaa                         *System_Aaa                            `path:"aaa" module:"openconfig-system"`
	ΛAaa                        []ygot.Annotation                      `path:"@aaa" ygotAnnotation:"true"`
	Alarm                       map[string]*System_Alarm               `path:"alarms/alarm" module:"openconfig-system/openconfig-system"`
	ΛAlarm                      []ygot.Annotation                      `path:"alarms/@alarm" ygotAnnotation:"true"`
	BootTime                    *uint64                                `path:"state/boot-time" module:"openconfig-system/openconfig-system"`
	ΛBootTime                   []ygot.Annotation                      `path:"state/@boot-time" ygotAnnotation:"true"`
	Clock                       *System_Clock                          `path:"clock" module:"openconfig-system"`
	ΛClock                      []ygot.Annotation                      `path:"@clock" ygotAnnotation:"true"`
	Cpu                         map[System_Cpu_Index_Union]*System_Cpu `path:"cpus/cpu" module:"openconfig-system/openconfig-system"`
	ΛCpu                        []ygot.Annotation                      `path:"cpus/@cpu" ygotAnnotation:"true"`
	CurrentDatetime             *string                                `path:"state/current-datetime" module:"openconfig-system/openconfig-system"`
	ΛCurrentDatetime            []ygot.Annotation                      `path:"state/@current-datetime" ygotAnnotation:"true"`
	Dns                         *System_Dns                            `path:"dns" module:"openconfig-system"`
	ΛDns                        []ygot.Annotation                      `path:"@dns" ygotAnnotation:"true"`
	DomainName                  *string                                `path:"config/domain-name" module:"openconfig-system/openconfig-system"`
	ΛDomainName                 []ygot.Annotation                      `path:"config/@domain-name" ygotAnnotation:"true"`
	Hostname                    *string                                `path:"config/hostname" module:"openconfig-system/openconfig-system"`
	ΛHostname                   []ygot.Annotation                      `path:"config/@hostname" ygotAnnotation:"true"`
	LastConfigurationTimestamp  *uint64                                `path:"state/last-configuration-timestamp" module:"openconfig-system/openconfig-system"`
	ΛLastConfigurationTimestamp []ygot.Annotation                      `path:"state/@last-configuration-timestamp" ygotAnnotation:"true"`
	License                     *System_License                        `path:"license" module:"openconfig-system"`
	ΛLicense                    []ygot.Annotation                      `path:"@license" ygotAnnotation:"true"`
	Logging                     *System_Logging                        `path:"logging" module:"openconfig-system"`
	ΛLogging                    []ygot.Annotation                      `path:"@logging" ygotAnnotation:"true"`
	LoginBanner                 *string                                `path:"config/login-banner" module:"openconfig-system/openconfig-system"`
	ΛLoginBanner                []ygot.Annotation                      `path:"config/@login-banner" ygotAnnotation:"true"`
	MacAddress                  *System_MacAddress                     `path:"mac-address" module:"openconfig-system"`
	ΛMacAddress                 []ygot.Annotation                      `path:"@mac-address" ygotAnnotation:"true"`
	Memory                      *System_Memory                         `path:"memory" module:"openconfig-system"`
	ΛMemory                     []ygot.Annotation                      `path:"@memory" ygotAnnotation:"true"`
	Messages                    *System_Messages                       `path:"messages" module:"openconfig-system"`
	ΛMessages                   []ygot.Annotation                      `path:"@messages" ygotAnnotation:"true"`
	MotdBanner                  *string                                `path:"config/motd-banner" module:"openconfig-system/openconfig-system"`
	ΛMotdBanner                 []ygot.Annotation                      `path:"config/@motd-banner" ygotAnnotation:"true"`
	MountPoint                  map[string]*System_MountPoint          `path:"mount-points/mount-point" module:"openconfig-system/openconfig-system"`
	ΛMountPoint                 []ygot.Annotation                      `path:"mount-points/@mount-point" ygotAnnotation:"true"`
	Ntp                         *System_Ntp                            `path:"ntp" module:"openconfig-system"`
	ΛNtp                        []ygot.Annotation                      `path:"@ntp" ygotAnnotation:"true"`
	Process                     map[uint64]*System_Process             `path:"processes/process" module:"openconfig-system/openconfig-system"`
	ΛProcess                    []ygot.Annotation                      `path:"processes/@process" ygotAnnotation:"true"`
	SoftwareVersion             *string                                `path:"state/software-version" module:"openconfig-system/openconfig-system"`
	ΛSoftwareVersion            []ygot.Annotation                      `path:"state/@software-version" ygotAnnotation:"true"`
	SshServer                   *System_SshServer                      `path:"ssh-server" module:"openconfig-system"`
	ΛSshServer                  []ygot.Annotation                      `path:"@ssh-server" ygotAnnotation:"true"`
	TelnetServer                *System_TelnetServer                   `path:"telnet-server" module:"openconfig-system"`
	ΛTelnetServer               []ygot.Annotation                      `path:"@telnet-server" ygotAnnotation:"true"`
	UpTime                      *uint64                                `path:"state/up-time" module:"openconfig-system/openconfig-system"`
	ΛUpTime                     []ygot.Annotation                      `path:"state/@up-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System) IsYANGGoStruct() {}

// NewAlarm creates a new entry in the Alarm list of the
// System struct. The keys of the list are populated from the input
// arguments.
func (t *System) NewAlarm(Id string) (*System_Alarm, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Alarm == nil {
		t.Alarm = make(map[string]*System_Alarm)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Alarm[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Alarm", key)
	}

	t.Alarm[key] = &System_Alarm{
		Id: &Id,
	}

	return t.Alarm[key], nil
}

// RenameAlarm renames an entry in the list Alarm within
// the System struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System) RenameAlarm(oldK, newK string) error {
	if _, ok := t.Alarm[newK]; ok {
		return fmt.Errorf("key %v already exists in Alarm", newK)
	}

	e, ok := t.Alarm[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Alarm", oldK)
	}
	e.Id = &newK

	t.Alarm[newK] = e
	delete(t.Alarm, oldK)
	return nil
}

// GetOrCreateAlarmMap returns the list (map) from System.
//
// It initializes the field if not already initialized.
func (t *System) GetOrCreateAlarmMap() map[string]*System_Alarm {
	if t.Alarm == nil {
		t.Alarm = make(map[string]*System_Alarm)
	}
	return t.Alarm
}

// GetOrCreateAlarm retrieves the value with the specified keys from
// the receiver System. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System) GetOrCreateAlarm(Id string) *System_Alarm {

	key := Id

	if v, ok := t.Alarm[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAlarm(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAlarm got unexpected error: %v", err))
	}
	return v
}

// GetAlarm retrieves the value with the specified key from
// the Alarm map field of System. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System) GetAlarm(Id string) *System_Alarm {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.Alarm[key]; ok {
		return lm
	}
	return nil
}

// AppendAlarm appends the supplied System_Alarm struct to the
// list Alarm of System. If the key value(s) specified in
// the supplied System_Alarm already exist in the list, an error is
// returned.
func (t *System) AppendAlarm(v *System_Alarm) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Alarm == nil {
		t.Alarm = make(map[string]*System_Alarm)
	}

	if _, ok := t.Alarm[key]; ok {
		return fmt.Errorf("duplicate key for list Alarm %v", key)
	}

	t.Alarm[key] = v
	return nil
}

// NewCpu creates a new entry in the Cpu list of the
// System struct. The keys of the list are populated from the input
// arguments.
func (t *System) NewCpu(Index System_Cpu_Index_Union) (*System_Cpu, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Cpu == nil {
		t.Cpu = make(map[System_Cpu_Index_Union]*System_Cpu)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Cpu[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Cpu", key)
	}

	t.Cpu[key] = &System_Cpu{
		Index: Index,
	}

	return t.Cpu[key], nil
}

// RenameCpu renames an entry in the list Cpu within
// the System struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System) RenameCpu(oldK, newK System_Cpu_Index_Union) error {
	if _, ok := t.Cpu[newK]; ok {
		return fmt.Errorf("key %v already exists in Cpu", newK)
	}

	e, ok := t.Cpu[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Cpu", oldK)
	}
	e.Index = newK

	t.Cpu[newK] = e
	delete(t.Cpu, oldK)
	return nil
}

// GetOrCreateCpuMap returns the list (map) from System.
//
// It initializes the field if not already initialized.
func (t *System) GetOrCreateCpuMap() map[System_Cpu_Index_Union]*System_Cpu {
	if t.Cpu == nil {
		t.Cpu = make(map[System_Cpu_Index_Union]*System_Cpu)
	}
	return t.Cpu
}

// GetOrCreateCpu retrieves the value with the specified keys from
// the receiver System. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System) GetOrCreateCpu(Index System_Cpu_Index_Union) *System_Cpu {

	key := Index

	if v, ok := t.Cpu[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewCpu(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateCpu got unexpected error: %v", err))
	}
	return v
}

// GetCpu retrieves the value with the specified key from
// the Cpu map field of System. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System) GetCpu(Index System_Cpu_Index_Union) *System_Cpu {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.Cpu[key]; ok {
		return lm
	}
	return nil
}

// AppendCpu appends the supplied System_Cpu struct to the
// list Cpu of System. If the key value(s) specified in
// the supplied System_Cpu already exist in the list, an error is
// returned.
func (t *System) AppendCpu(v *System_Cpu) error {
	key := v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Cpu == nil {
		t.Cpu = make(map[System_Cpu_Index_Union]*System_Cpu)
	}

	if _, ok := t.Cpu[key]; ok {
		return fmt.Errorf("duplicate key for list Cpu %v", key)
	}

	t.Cpu[key] = v
	return nil
}

// NewMountPoint creates a new entry in the MountPoint list of the
// System struct. The keys of the list are populated from the input
// arguments.
func (t *System) NewMountPoint(Name string) (*System_MountPoint, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.MountPoint == nil {
		t.MountPoint = make(map[string]*System_MountPoint)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.MountPoint[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list MountPoint", key)
	}

	t.MountPoint[key] = &System_MountPoint{
		Name: &Name,
	}

	return t.MountPoint[key], nil
}

// RenameMountPoint renames an entry in the list MountPoint within
// the System struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System) RenameMountPoint(oldK, newK string) error {
	if _, ok := t.MountPoint[newK]; ok {
		return fmt.Errorf("key %v already exists in MountPoint", newK)
	}

	e, ok := t.MountPoint[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in MountPoint", oldK)
	}
	e.Name = &newK

	t.MountPoint[newK] = e
	delete(t.MountPoint, oldK)
	return nil
}

// GetOrCreateMountPointMap returns the list (map) from System.
//
// It initializes the field if not already initialized.
func (t *System) GetOrCreateMountPointMap() map[string]*System_MountPoint {
	if t.MountPoint == nil {
		t.MountPoint = make(map[string]*System_MountPoint)
	}
	return t.MountPoint
}

// GetOrCreateMountPoint retrieves the value with the specified keys from
// the receiver System. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System) GetOrCreateMountPoint(Name string) *System_MountPoint {

	key := Name

	if v, ok := t.MountPoint[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewMountPoint(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateMountPoint got unexpected error: %v", err))
	}
	return v
}

// GetMountPoint retrieves the value with the specified key from
// the MountPoint map field of System. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System) GetMountPoint(Name string) *System_MountPoint {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.MountPoint[key]; ok {
		return lm
	}
	return nil
}

// AppendMountPoint appends the supplied System_MountPoint struct to the
// list MountPoint of System. If the key value(s) specified in
// the supplied System_MountPoint already exist in the list, an error is
// returned.
func (t *System) AppendMountPoint(v *System_MountPoint) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.MountPoint == nil {
		t.MountPoint = make(map[string]*System_MountPoint)
	}

	if _, ok := t.MountPoint[key]; ok {
		return fmt.Errorf("duplicate key for list MountPoint %v", key)
	}

	t.MountPoint[key] = v
	return nil
}

// NewProcess creates a new entry in the Process list of the
// System struct. The keys of the list are populated from the input
// arguments.
func (t *System) NewProcess(Pid uint64) (*System_Process, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Process == nil {
		t.Process = make(map[uint64]*System_Process)
	}

	key := Pid

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Process[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Process", key)
	}

	t.Process[key] = &System_Process{
		Pid: &Pid,
	}

	return t.Process[key], nil
}

// RenameProcess renames an entry in the list Process within
// the System struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System) RenameProcess(oldK, newK uint64) error {
	if _, ok := t.Process[newK]; ok {
		return fmt.Errorf("key %v already exists in Process", newK)
	}

	e, ok := t.Process[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Process", oldK)
	}
	e.Pid = &newK

	t.Process[newK] = e
	delete(t.Process, oldK)
	return nil
}

// GetOrCreateProcessMap returns the list (map) from System.
//
// It initializes the field if not already initialized.
func (t *System) GetOrCreateProcessMap() map[uint64]*System_Process {
	if t.Process == nil {
		t.Process = make(map[uint64]*System_Process)
	}
	return t.Process
}

// GetOrCreateProcess retrieves the value with the specified keys from
// the receiver System. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System) GetOrCreateProcess(Pid uint64) *System_Process {

	key := Pid

	if v, ok := t.Process[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewProcess(Pid)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateProcess got unexpected error: %v", err))
	}
	return v
}

// GetProcess retrieves the value with the specified key from
// the Process map field of System. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System) GetProcess(Pid uint64) *System_Process {

	if t == nil {
		return nil
	}

	key := Pid

	if lm, ok := t.Process[key]; ok {
		return lm
	}
	return nil
}

// AppendProcess appends the supplied System_Process struct to the
// list Process of System. If the key value(s) specified in
// the supplied System_Process already exist in the list, an error is
// returned.
func (t *System) AppendProcess(v *System_Process) error {
	if v.Pid == nil {
		return fmt.Errorf("invalid nil key received for Pid")
	}

	key := *v.Pid

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Process == nil {
		t.Process = make(map[uint64]*System_Process)
	}

	if _, ok := t.Process[key]; ok {
		return fmt.Errorf("duplicate key for list Process %v", key)
	}

	t.Process[key] = v
	return nil
}

// GetOrCreateAaa retrieves the value of the Aaa field
// or returns the existing field if it already exists.
func (t *System) GetOrCreateAaa() *System_Aaa {
	if t.Aaa != nil {
		return t.Aaa
	}
	t.Aaa = &System_Aaa{}
	return t.Aaa
}

// GetOrCreateClock retrieves the value of the Clock field
// or returns the existing field if it already exists.
func (t *System) GetOrCreateClock() *System_Clock {
	if t.Clock != nil {
		return t.Clock
	}
	t.Clock = &System_Clock{}
	return t.Clock
}

// GetOrCreateDns retrieves the value of the Dns field
// or returns the existing field if it already exists.
func (t *System) GetOrCreateDns() *System_Dns {
	if t.Dns != nil {
		return t.Dns
	}
	t.Dns = &System_Dns{}
	return t.Dns
}

// GetOrCreateLicense retrieves the value of the License field
// or returns the existing field if it already exists.
func (t *System) GetOrCreateLicense() *System_License {
	if t.License != nil {
		return t.License
	}
	t.License = &System_License{}
	return t.License
}

// GetOrCreateLogging retrieves the value of the Logging field
// or returns the existing field if it already exists.
func (t *System) GetOrCreateLogging() *System_Logging {
	if t.Logging != nil {
		return t.Logging
	}
	t.Logging = &System_Logging{}
	return t.Logging
}

// GetOrCreateMacAddress retrieves the value of the MacAddress field
// or returns the existing field if it already exists.
func (t *System) GetOrCreateMacAddress() *System_MacAddress {
	if t.MacAddress != nil {
		return t.MacAddress
	}
	t.MacAddress = &System_MacAddress{}
	return t.MacAddress
}

// GetOrCreateMemory retrieves the value of the Memory field
// or returns the existing field if it already exists.
func (t *System) GetOrCreateMemory() *System_Memory {
	if t.Memory != nil {
		return t.Memory
	}
	t.Memory = &System_Memory{}
	return t.Memory
}

// GetOrCreateMessages retrieves the value of the Messages field
// or returns the existing field if it already exists.
func (t *System) GetOrCreateMessages() *System_Messages {
	if t.Messages != nil {
		return t.Messages
	}
	t.Messages = &System_Messages{}
	return t.Messages
}

// GetOrCreateNtp retrieves the value of the Ntp field
// or returns the existing field if it already exists.
func (t *System) GetOrCreateNtp() *System_Ntp {
	if t.Ntp != nil {
		return t.Ntp
	}
	t.Ntp = &System_Ntp{}
	return t.Ntp
}

// GetOrCreateSshServer retrieves the value of the SshServer field
// or returns the existing field if it already exists.
func (t *System) GetOrCreateSshServer() *System_SshServer {
	if t.SshServer != nil {
		return t.SshServer
	}
	t.SshServer = &System_SshServer{}
	return t.SshServer
}

// GetOrCreateTelnetServer retrieves the value of the TelnetServer field
// or returns the existing field if it already exists.
func (t *System) GetOrCreateTelnetServer() *System_TelnetServer {
	if t.TelnetServer != nil {
		return t.TelnetServer
	}
	t.TelnetServer = &System_TelnetServer{}
	return t.TelnetServer
}

// GetAaa returns the value of the Aaa struct pointer
// from System. If the receiver or the field Aaa is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System) GetAaa() *System_Aaa {
	if t != nil && t.Aaa != nil {
		return t.Aaa
	}
	return nil
}

// GetClock returns the value of the Clock struct pointer
// from System. If the receiver or the field Clock is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System) GetClock() *System_Clock {
	if t != nil && t.Clock != nil {
		return t.Clock
	}
	return nil
}

// GetDns returns the value of the Dns struct pointer
// from System. If the receiver or the field Dns is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System) GetDns() *System_Dns {
	if t != nil && t.Dns != nil {
		return t.Dns
	}
	return nil
}

// GetLicense returns the value of the License struct pointer
// from System. If the receiver or the field License is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System) GetLicense() *System_License {
	if t != nil && t.License != nil {
		return t.License
	}
	return nil
}

// GetLogging returns the value of the Logging struct pointer
// from System. If the receiver or the field Logging is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System) GetLogging() *System_Logging {
	if t != nil && t.Logging != nil {
		return t.Logging
	}
	return nil
}

// GetMacAddress returns the value of the MacAddress struct pointer
// from System. If the receiver or the field MacAddress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System) GetMacAddress() *System_MacAddress {
	if t != nil && t.MacAddress != nil {
		return t.MacAddress
	}
	return nil
}

// GetMemory returns the value of the Memory struct pointer
// from System. If the receiver or the field Memory is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System) GetMemory() *System_Memory {
	if t != nil && t.Memory != nil {
		return t.Memory
	}
	return nil
}

// GetMessages returns the value of the Messages struct pointer
// from System. If the receiver or the field Messages is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System) GetMessages() *System_Messages {
	if t != nil && t.Messages != nil {
		return t.Messages
	}
	return nil
}

// GetNtp returns the value of the Ntp struct pointer
// from System. If the receiver or the field Ntp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System) GetNtp() *System_Ntp {
	if t != nil && t.Ntp != nil {
		return t.Ntp
	}
	return nil
}

// GetSshServer returns the value of the SshServer struct pointer
// from System. If the receiver or the field SshServer is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System) GetSshServer() *System_SshServer {
	if t != nil && t.SshServer != nil {
		return t.SshServer
	}
	return nil
}

// GetTelnetServer returns the value of the TelnetServer struct pointer
// from System. If the receiver or the field TelnetServer is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System) GetTelnetServer() *System_TelnetServer {
	if t != nil && t.TelnetServer != nil {
		return t.TelnetServer
	}
	return nil
}

// GetBootTime retrieves the value of the leaf BootTime from the System
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BootTime is set, it can
// safely use t.GetBootTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BootTime == nil' before retrieving the leaf's value.
func (t *System) GetBootTime() uint64 {
	if t == nil || t.BootTime == nil {
		return 0
	}
	return *t.BootTime
}

// GetCurrentDatetime retrieves the value of the leaf CurrentDatetime from the System
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CurrentDatetime is set, it can
// safely use t.GetCurrentDatetime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CurrentDatetime == nil' before retrieving the leaf's value.
func (t *System) GetCurrentDatetime() string {
	if t == nil || t.CurrentDatetime == nil {
		return ""
	}
	return *t.CurrentDatetime
}

// GetDomainName retrieves the value of the leaf DomainName from the System
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if DomainName is set, it can
// safely use t.GetDomainName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.DomainName == nil' before retrieving the leaf's value.
func (t *System) GetDomainName() string {
	if t == nil || t.DomainName == nil {
		return ""
	}
	return *t.DomainName
}

// GetHostname retrieves the value of the leaf Hostname from the System
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Hostname is set, it can
// safely use t.GetHostname() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Hostname == nil' before retrieving the leaf's value.
func (t *System) GetHostname() string {
	if t == nil || t.Hostname == nil {
		return ""
	}
	return *t.Hostname
}

// GetLastConfigurationTimestamp retrieves the value of the leaf LastConfigurationTimestamp from the System
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastConfigurationTimestamp is set, it can
// safely use t.GetLastConfigurationTimestamp() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastConfigurationTimestamp == nil' before retrieving the leaf's value.
func (t *System) GetLastConfigurationTimestamp() uint64 {
	if t == nil || t.LastConfigurationTimestamp == nil {
		return 0
	}
	return *t.LastConfigurationTimestamp
}

// GetLoginBanner retrieves the value of the leaf LoginBanner from the System
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LoginBanner is set, it can
// safely use t.GetLoginBanner() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LoginBanner == nil' before retrieving the leaf's value.
func (t *System) GetLoginBanner() string {
	if t == nil || t.LoginBanner == nil {
		return ""
	}
	return *t.LoginBanner
}

// GetMotdBanner retrieves the value of the leaf MotdBanner from the System
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MotdBanner is set, it can
// safely use t.GetMotdBanner() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MotdBanner == nil' before retrieving the leaf's value.
func (t *System) GetMotdBanner() string {
	if t == nil || t.MotdBanner == nil {
		return ""
	}
	return *t.MotdBanner
}

// GetSoftwareVersion retrieves the value of the leaf SoftwareVersion from the System
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SoftwareVersion is set, it can
// safely use t.GetSoftwareVersion() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SoftwareVersion == nil' before retrieving the leaf's value.
func (t *System) GetSoftwareVersion() string {
	if t == nil || t.SoftwareVersion == nil {
		return ""
	}
	return *t.SoftwareVersion
}

// GetUpTime retrieves the value of the leaf UpTime from the System
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UpTime is set, it can
// safely use t.GetUpTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UpTime == nil' before retrieving the leaf's value.
func (t *System) GetUpTime() uint64 {
	if t == nil || t.UpTime == nil {
		return 0
	}
	return *t.UpTime
}

// PopulateDefaults recursively populates unset leaf fields in the System
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Aaa.PopulateDefaults()
	t.Clock.PopulateDefaults()
	t.Dns.PopulateDefaults()
	t.License.PopulateDefaults()
	t.Logging.PopulateDefaults()
	t.MacAddress.PopulateDefaults()
	t.Memory.PopulateDefaults()
	t.Messages.PopulateDefaults()
	t.Ntp.PopulateDefaults()
	t.SshServer.PopulateDefaults()
	t.TelnetServer.PopulateDefaults()
	for _, e := range t.Alarm {
		e.PopulateDefaults()
	}
	for _, e := range t.Cpu {
		e.PopulateDefaults()
	}
	for _, e := range t.MountPoint {
		e.PopulateDefaults()
	}
	for _, e := range t.Process {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System.
func (*System) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Aaa represents the /openconfig-system/system/aaa YANG schema element.
type System_Aaa struct {
	ΛMetadata       []ygot.Annotation                  `path:"@" ygotAnnotation:"true"`
	Accounting      *System_Aaa_Accounting             `path:"accounting" module:"openconfig-system"`
	ΛAccounting     []ygot.Annotation                  `path:"@accounting" ygotAnnotation:"true"`
	Authentication  *System_Aaa_Authentication         `path:"authentication" module:"openconfig-system"`
	ΛAuthentication []ygot.Annotation                  `path:"@authentication" ygotAnnotation:"true"`
	Authorization   *System_Aaa_Authorization          `path:"authorization" module:"openconfig-system"`
	ΛAuthorization  []ygot.Annotation                  `path:"@authorization" ygotAnnotation:"true"`
	ServerGroup     map[string]*System_Aaa_ServerGroup `path:"server-groups/server-group" module:"openconfig-system/openconfig-system"`
	ΛServerGroup    []ygot.Annotation                  `path:"server-groups/@server-group" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Aaa implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Aaa) IsYANGGoStruct() {}

// NewServerGroup creates a new entry in the ServerGroup list of the
// System_Aaa struct. The keys of the list are populated from the input
// arguments.
func (t *System_Aaa) NewServerGroup(Name string) (*System_Aaa_ServerGroup, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ServerGroup == nil {
		t.ServerGroup = make(map[string]*System_Aaa_ServerGroup)
	}

	key := Name

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.ServerGroup[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list ServerGroup", key)
	}

	t.ServerGroup[key] = &System_Aaa_ServerGroup{
		Name: &Name,
	}

	return t.ServerGroup[key], nil
}

// RenameServerGroup renames an entry in the list ServerGroup within
// the System_Aaa struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System_Aaa) RenameServerGroup(oldK, newK string) error {
	if _, ok := t.ServerGroup[newK]; ok {
		return fmt.Errorf("key %v already exists in ServerGroup", newK)
	}

	e, ok := t.ServerGroup[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in ServerGroup", oldK)
	}
	e.Name = &newK

	t.ServerGroup[newK] = e
	delete(t.ServerGroup, oldK)
	return nil
}

// GetOrCreateServerGroupMap returns the list (map) from System_Aaa.
//
// It initializes the field if not already initialized.
func (t *System_Aaa) GetOrCreateServerGroupMap() map[string]*System_Aaa_ServerGroup {
	if t.ServerGroup == nil {
		t.ServerGroup = make(map[string]*System_Aaa_ServerGroup)
	}
	return t.ServerGroup
}

// GetOrCreateServerGroup retrieves the value with the specified keys from
// the receiver System_Aaa. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System_Aaa) GetOrCreateServerGroup(Name string) *System_Aaa_ServerGroup {

	key := Name

	if v, ok := t.ServerGroup[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewServerGroup(Name)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateServerGroup got unexpected error: %v", err))
	}
	return v
}

// GetServerGroup retrieves the value with the specified key from
// the ServerGroup map field of System_Aaa. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System_Aaa) GetServerGroup(Name string) *System_Aaa_ServerGroup {

	if t == nil {
		return nil
	}

	key := Name

	if lm, ok := t.ServerGroup[key]; ok {
		return lm
	}
	return nil
}

// AppendServerGroup appends the supplied System_Aaa_ServerGroup struct to the
// list ServerGroup of System_Aaa. If the key value(s) specified in
// the supplied System_Aaa_ServerGroup already exist in the list, an error is
// returned.
func (t *System_Aaa) AppendServerGroup(v *System_Aaa_ServerGroup) error {
	if v.Name == nil {
		return fmt.Errorf("invalid nil key received for Name")
	}

	key := *v.Name

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.ServerGroup == nil {
		t.ServerGroup = make(map[string]*System_Aaa_ServerGroup)
	}

	if _, ok := t.ServerGroup[key]; ok {
		return fmt.Errorf("duplicate key for list ServerGroup %v", key)
	}

	t.ServerGroup[key] = v
	return nil
}

// GetOrCreateAccounting retrieves the value of the Accounting field
// or returns the existing field if it already exists.
func (t *System_Aaa) GetOrCreateAccounting() *System_Aaa_Accounting {
	if t.Accounting != nil {
		return t.Accounting
	}
	t.Accounting = &System_Aaa_Accounting{}
	return t.Accounting
}

// GetOrCreateAuthentication retrieves the value of the Authentication field
// or returns the existing field if it already exists.
func (t *System_Aaa) GetOrCreateAuthentication() *System_Aaa_Authentication {
	if t.Authentication != nil {
		return t.Authentication
	}
	t.Authentication = &System_Aaa_Authentication{}
	return t.Authentication
}

// GetOrCreateAuthorization retrieves the value of the Authorization field
// or returns the existing field if it already exists.
func (t *System_Aaa) GetOrCreateAuthorization() *System_Aaa_Authorization {
	if t.Authorization != nil {
		return t.Authorization
	}
	t.Authorization = &System_Aaa_Authorization{}
	return t.Authorization
}

// GetAccounting returns the value of the Accounting struct pointer
// from System_Aaa. If the receiver or the field Accounting is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Aaa) GetAccounting() *System_Aaa_Accounting {
	if t != nil && t.Accounting != nil {
		return t.Accounting
	}
	return nil
}

// GetAuthentication returns the value of the Authentication struct pointer
// from System_Aaa. If the receiver or the field Authentication is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Aaa) GetAuthentication() *System_Aaa_Authentication {
	if t != nil && t.Authentication != nil {
		return t.Authentication
	}
	return nil
}

// GetAuthorization returns the value of the Authorization struct pointer
// from System_Aaa. If the receiver or the field Authorization is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Aaa) GetAuthorization() *System_Aaa_Authorization {
	if t != nil && t.Authorization != nil {
		return t.Authorization
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the System_Aaa
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Aaa) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Accounting.PopulateDefaults()
	t.Authentication.PopulateDefaults()
	t.Authorization.PopulateDefaults()
	for _, e := range t.ServerGroup {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Aaa"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Aaa) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Aaa.
func (*System_Aaa) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Aaa_Accounting represents the /openconfig-system/system/aaa/accounting YANG schema element.
type System_Aaa_Accounting struct {
	ΛMetadata         []ygot.Annotation                                                     `path:"@" ygotAnnotation:"true"`
	AccountingMethod  []System_Aaa_Accounting_AccountingMethod_Union                        `path:"config/accounting-method" module:"openconfig-system/openconfig-system"`
	ΛAccountingMethod []ygot.Annotation                                                     `path:"config/@accounting-method" ygotAnnotation:"true"`
	Event             map[E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE]*System_Aaa_Accounting_Event `path:"events/event" module:"openconfig-system/openconfig-system"`
	ΛEvent            []ygot.Annotation                                                     `path:"events/@event" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Aaa_Accounting implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Aaa_Accounting) IsYANGGoStruct() {}

// NewEvent creates a new entry in the Event list of the
// System_Aaa_Accounting struct. The keys of the list are populated from the input
// arguments.
func (t *System_Aaa_Accounting) NewEvent(EventType E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE) (*System_Aaa_Accounting_Event, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Event == nil {
		t.Event = make(map[E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE]*System_Aaa_Accounting_Event)
	}

	key := EventType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Event[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Event", key)
	}

	t.Event[key] = &System_Aaa_Accounting_Event{
		EventType: EventType,
	}

	return t.Event[key], nil
}

// RenameEvent renames an entry in the list Event within
// the System_Aaa_Accounting struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System_Aaa_Accounting) RenameEvent(oldK, newK E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE) error {
	if _, ok := t.Event[newK]; ok {
		return fmt.Errorf("key %v already exists in Event", newK)
	}

	e, ok := t.Event[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Event", oldK)
	}
	e.EventType = newK

	t.Event[newK] = e
	delete(t.Event, oldK)
	return nil
}

// GetOrCreateEventMap returns the list (map) from System_Aaa_Accounting.
//
// It initializes the field if not already initialized.
func (t *System_Aaa_Accounting) GetOrCreateEventMap() map[E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE]*System_Aaa_Accounting_Event {
	if t.Event == nil {
		t.Event = make(map[E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE]*System_Aaa_Accounting_Event)
	}
	return t.Event
}

// GetOrCreateEvent retrieves the value with the specified keys from
// the receiver System_Aaa_Accounting. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System_Aaa_Accounting) GetOrCreateEvent(EventType E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE) *System_Aaa_Accounting_Event {

	key := EventType

	if v, ok := t.Event[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewEvent(EventType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateEvent got unexpected error: %v", err))
	}
	return v
}

// GetEvent retrieves the value with the specified key from
// the Event map field of System_Aaa_Accounting. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System_Aaa_Accounting) GetEvent(EventType E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE) *System_Aaa_Accounting_Event {

	if t == nil {
		return nil
	}

	key := EventType

	if lm, ok := t.Event[key]; ok {
		return lm
	}
	return nil
}

// AppendEvent appends the supplied System_Aaa_Accounting_Event struct to the
// list Event of System_Aaa_Accounting. If the key value(s) specified in
// the supplied System_Aaa_Accounting_Event already exist in the list, an error is
// returned.
func (t *System_Aaa_Accounting) AppendEvent(v *System_Aaa_Accounting_Event) error {
	key := v.EventType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Event == nil {
		t.Event = make(map[E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE]*System_Aaa_Accounting_Event)
	}

	if _, ok := t.Event[key]; ok {
		return fmt.Errorf("duplicate key for list Event %v", key)
	}

	t.Event[key] = v
	return nil
}

// GetAccountingMethod retrieves the value of the leaf AccountingMethod from the System_Aaa_Accounting
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AccountingMethod is set, it can
// safely use t.GetAccountingMethod() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AccountingMethod == nil' before retrieving the leaf's value.
func (t *System_Aaa_Accounting) GetAccountingMethod() []System_Aaa_Accounting_AccountingMethod_Union {
	if t == nil || t.AccountingMethod == nil {
		return nil
	}
	return t.AccountingMethod
}

// PopulateDefaults recursively populates unset leaf fields in the System_Aaa_Accounting
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Aaa_Accounting) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Event {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_Accounting) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Aaa_Accounting"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_Accounting) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Aaa_Accounting) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Aaa_Accounting.
func (*System_Aaa_Accounting) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Aaa_Accounting_AccountingMethod_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-system/system/aaa/accounting/config/accounting-method within the YANG schema.
// Union type can be one of [E_AaaTypes_AAA_METHOD_TYPE, UnionString].
type System_Aaa_Accounting_AccountingMethod_Union interface {
	// Union type can be one of [E_AaaTypes_AAA_METHOD_TYPE, UnionString]
	Documentation_for_System_Aaa_Accounting_AccountingMethod_Union()
}

// Documentation_for_System_Aaa_Accounting_AccountingMethod_Union ensures that E_AaaTypes_AAA_METHOD_TYPE
// implements the System_Aaa_Accounting_AccountingMethod_Union interface.
func (E_AaaTypes_AAA_METHOD_TYPE) Documentation_for_System_Aaa_Accounting_AccountingMethod_Union() {}

// Documentation_for_System_Aaa_Accounting_AccountingMethod_Union ensures that UnionString
// implements the System_Aaa_Accounting_AccountingMethod_Union interface.
func (UnionString) Documentation_for_System_Aaa_Accounting_AccountingMethod_Union() {}

// To_System_Aaa_Accounting_AccountingMethod_Union takes an input interface{} and attempts to convert it to a struct
// which implements the System_Aaa_Accounting_AccountingMethod_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *System_Aaa_Accounting) To_System_Aaa_Accounting_AccountingMethod_Union(i interface{}) (System_Aaa_Accounting_AccountingMethod_Union, error) {
	if v, ok := i.(System_Aaa_Accounting_AccountingMethod_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to System_Aaa_Accounting_AccountingMethod_Union, unknown union type, got: %T, want any of [E_AaaTypes_AAA_METHOD_TYPE, string]", i, i)
}

// System_Aaa_Accounting_Event represents the /openconfig-system/system/aaa/accounting/events/event YANG schema element.
type System_Aaa_Accounting_Event struct {
	ΛMetadata  []ygot.Annotation                    `path:"@" ygotAnnotation:"true"`
	EventType  E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE `path:"config/event-type|event-type" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛEventType []ygot.Annotation                    `path:"config/@event-type|@event-type" ygotAnnotation:"true"`
	Record     E_Event_Record                       `path:"config/record" module:"openconfig-system/openconfig-system"`
	ΛRecord    []ygot.Annotation                    `path:"config/@record" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Aaa_Accounting_Event implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Aaa_Accounting_Event) IsYANGGoStruct() {}

// GetEventType retrieves the value of the leaf EventType from the System_Aaa_Accounting_Event
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EventType is set, it can
// safely use t.GetEventType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EventType == nil' before retrieving the leaf's value.
func (t *System_Aaa_Accounting_Event) GetEventType() E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE {
	if t == nil || t.EventType == 0 {
		return 0
	}
	return t.EventType
}

// GetRecord retrieves the value of the leaf Record from the System_Aaa_Accounting_Event
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Record is set, it can
// safely use t.GetRecord() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Record == nil' before retrieving the leaf's value.
func (t *System_Aaa_Accounting_Event) GetRecord() E_Event_Record {
	if t == nil || t.Record == 0 {
		return 0
	}
	return t.Record
}

// PopulateDefaults recursively populates unset leaf fields in the System_Aaa_Accounting_Event
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Aaa_Accounting_Event) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the System_Aaa_Accounting_Event struct, which is a YANG list entry.
func (t *System_Aaa_Accounting_Event) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"event-type": t.EventType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_Accounting_Event) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Aaa_Accounting_Event"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_Accounting_Event) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Aaa_Accounting_Event) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Aaa_Accounting_Event.
func (*System_Aaa_Accounting_Event) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Aaa_Authentication represents the /openconfig-system/system/aaa/authentication YANG schema element.
type System_Aaa_Authentication struct {
	ΛMetadata             []ygot.Annotation                                      `path:"@" ygotAnnotation:"true"`
	AdminUser             *System_Aaa_Authentication_AdminUser                   `path:"admin-user" module:"openconfig-system"`
	ΛAdminUser            []ygot.Annotation                                      `path:"@admin-user" ygotAnnotation:"true"`
	AuthenticationMethod  []System_Aaa_Authentication_AuthenticationMethod_Union `path:"config/authentication-method" module:"openconfig-system/openconfig-system"`
	ΛAuthenticationMethod []ygot.Annotation                                      `path:"config/@authentication-method" ygotAnnotation:"true"`
	User                  map[string]*System_Aaa_Authentication_User             `path:"users/user" module:"openconfig-system/openconfig-system"`
	ΛUser                 []ygot.Annotation                                      `path:"users/@user" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Aaa_Authentication implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Aaa_Authentication) IsYANGGoStruct() {}

// NewUser creates a new entry in the User list of the
// System_Aaa_Authentication struct. The keys of the list are populated from the input
// arguments.
func (t *System_Aaa_Authentication) NewUser(Username string) (*System_Aaa_Authentication_User, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.User == nil {
		t.User = make(map[string]*System_Aaa_Authentication_User)
	}

	key := Username

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.User[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list User", key)
	}

	t.User[key] = &System_Aaa_Authentication_User{
		Username: &Username,
	}

	return t.User[key], nil
}

// RenameUser renames an entry in the list User within
// the System_Aaa_Authentication struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System_Aaa_Authentication) RenameUser(oldK, newK string) error {
	if _, ok := t.User[newK]; ok {
		return fmt.Errorf("key %v already exists in User", newK)
	}

	e, ok := t.User[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in User", oldK)
	}
	e.Username = &newK

	t.User[newK] = e
	delete(t.User, oldK)
	return nil
}

// GetOrCreateUserMap returns the list (map) from System_Aaa_Authentication.
//
// It initializes the field if not already initialized.
func (t *System_Aaa_Authentication) GetOrCreateUserMap() map[string]*System_Aaa_Authentication_User {
	if t.User == nil {
		t.User = make(map[string]*System_Aaa_Authentication_User)
	}
	return t.User
}

// GetOrCreateUser retrieves the value with the specified keys from
// the receiver System_Aaa_Authentication. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System_Aaa_Authentication) GetOrCreateUser(Username string) *System_Aaa_Authentication_User {

	key := Username

	if v, ok := t.User[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewUser(Username)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateUser got unexpected error: %v", err))
	}
	return v
}

// GetUser retrieves the value with the specified key from
// the User map field of System_Aaa_Authentication. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System_Aaa_Authentication) GetUser(Username string) *System_Aaa_Authentication_User {

	if t == nil {
		return nil
	}

	key := Username

	if lm, ok := t.User[key]; ok {
		return lm
	}
	return nil
}

// AppendUser appends the supplied System_Aaa_Authentication_User struct to the
// list User of System_Aaa_Authentication. If the key value(s) specified in
// the supplied System_Aaa_Authentication_User already exist in the list, an error is
// returned.
func (t *System_Aaa_Authentication) AppendUser(v *System_Aaa_Authentication_User) error {
	if v.Username == nil {
		return fmt.Errorf("invalid nil key received for Username")
	}

	key := *v.Username

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.User == nil {
		t.User = make(map[string]*System_Aaa_Authentication_User)
	}

	if _, ok := t.User[key]; ok {
		return fmt.Errorf("duplicate key for list User %v", key)
	}

	t.User[key] = v
	return nil
}

// GetOrCreateAdminUser retrieves the value of the AdminUser field
// or returns the existing field if it already exists.
func (t *System_Aaa_Authentication) GetOrCreateAdminUser() *System_Aaa_Authentication_AdminUser {
	if t.AdminUser != nil {
		return t.AdminUser
	}
	t.AdminUser = &System_Aaa_Authentication_AdminUser{}
	return t.AdminUser
}

// GetAdminUser returns the value of the AdminUser struct pointer
// from System_Aaa_Authentication. If the receiver or the field AdminUser is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Aaa_Authentication) GetAdminUser() *System_Aaa_Authentication_AdminUser {
	if t != nil && t.AdminUser != nil {
		return t.AdminUser
	}
	return nil
}

// GetAuthenticationMethod retrieves the value of the leaf AuthenticationMethod from the System_Aaa_Authentication
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthenticationMethod is set, it can
// safely use t.GetAuthenticationMethod() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthenticationMethod == nil' before retrieving the leaf's value.
func (t *System_Aaa_Authentication) GetAuthenticationMethod() []System_Aaa_Authentication_AuthenticationMethod_Union {
	if t == nil || t.AuthenticationMethod == nil {
		return nil
	}
	return t.AuthenticationMethod
}

// PopulateDefaults recursively populates unset leaf fields in the System_Aaa_Authentication
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Aaa_Authentication) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.AdminUser.PopulateDefaults()
	for _, e := range t.User {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_Authentication) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Aaa_Authentication"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_Authentication) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Aaa_Authentication) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Aaa_Authentication.
func (*System_Aaa_Authentication) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Aaa_Authentication_AuthenticationMethod_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-system/system/aaa/authentication/config/authentication-method within the YANG schema.
// Union type can be one of [E_AaaTypes_AAA_METHOD_TYPE, UnionString].
type System_Aaa_Authentication_AuthenticationMethod_Union interface {
	// Union type can be one of [E_AaaTypes_AAA_METHOD_TYPE, UnionString]
	Documentation_for_System_Aaa_Authentication_AuthenticationMethod_Union()
}

// Documentation_for_System_Aaa_Authentication_AuthenticationMethod_Union ensures that E_AaaTypes_AAA_METHOD_TYPE
// implements the System_Aaa_Authentication_AuthenticationMethod_Union interface.
func (E_AaaTypes_AAA_METHOD_TYPE) Documentation_for_System_Aaa_Authentication_AuthenticationMethod_Union() {
}

// Documentation_for_System_Aaa_Authentication_AuthenticationMethod_Union ensures that UnionString
// implements the System_Aaa_Authentication_AuthenticationMethod_Union interface.
func (UnionString) Documentation_for_System_Aaa_Authentication_AuthenticationMethod_Union() {}

// To_System_Aaa_Authentication_AuthenticationMethod_Union takes an input interface{} and attempts to convert it to a struct
// which implements the System_Aaa_Authentication_AuthenticationMethod_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *System_Aaa_Authentication) To_System_Aaa_Authentication_AuthenticationMethod_Union(i interface{}) (System_Aaa_Authentication_AuthenticationMethod_Union, error) {
	if v, ok := i.(System_Aaa_Authentication_AuthenticationMethod_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to System_Aaa_Authentication_AuthenticationMethod_Union, unknown union type, got: %T, want any of [E_AaaTypes_AAA_METHOD_TYPE, string]", i, i)
}

// System_Aaa_Authentication_AdminUser represents the /openconfig-system/system/aaa/authentication/admin-user YANG schema element.
type System_Aaa_Authentication_AdminUser struct {
	ΛMetadata            []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AdminPassword        *string           `path:"config/admin-password" module:"openconfig-system/openconfig-system"`
	ΛAdminPassword       []ygot.Annotation `path:"config/@admin-password" ygotAnnotation:"true"`
	AdminPasswordHashed  *string           `path:"config/admin-password-hashed" module:"openconfig-system/openconfig-system"`
	ΛAdminPasswordHashed []ygot.Annotation `path:"config/@admin-password-hashed" ygotAnnotation:"true"`
	AdminUsername        *string           `path:"state/admin-username" module:"openconfig-system/openconfig-system"`
	ΛAdminUsername       []ygot.Annotation `path:"state/@admin-username" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Aaa_Authentication_AdminUser implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Aaa_Authentication_AdminUser) IsYANGGoStruct() {}

// GetAdminPassword retrieves the value of the leaf AdminPassword from the System_Aaa_Authentication_AdminUser
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdminPassword is set, it can
// safely use t.GetAdminPassword() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdminPassword == nil' before retrieving the leaf's value.
func (t *System_Aaa_Authentication_AdminUser) GetAdminPassword() string {
	if t == nil || t.AdminPassword == nil {
		return ""
	}
	return *t.AdminPassword
}

// GetAdminPasswordHashed retrieves the value of the leaf AdminPasswordHashed from the System_Aaa_Authentication_AdminUser
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdminPasswordHashed is set, it can
// safely use t.GetAdminPasswordHashed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdminPasswordHashed == nil' before retrieving the leaf's value.
func (t *System_Aaa_Authentication_AdminUser) GetAdminPasswordHashed() string {
	if t == nil || t.AdminPasswordHashed == nil {
		return ""
	}
	return *t.AdminPasswordHashed
}

// GetAdminUsername retrieves the value of the leaf AdminUsername from the System_Aaa_Authentication_AdminUser
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdminUsername is set, it can
// safely use t.GetAdminUsername() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdminUsername == nil' before retrieving the leaf's value.
func (t *System_Aaa_Authentication_AdminUser) GetAdminUsername() string {
	if t == nil || t.AdminUsername == nil {
		return ""
	}
	return *t.AdminUsername
}

// PopulateDefaults recursively populates unset leaf fields in the System_Aaa_Authentication_AdminUser
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Aaa_Authentication_AdminUser) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_Authentication_AdminUser) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Aaa_Authentication_AdminUser"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_Authentication_AdminUser) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Aaa_Authentication_AdminUser) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Aaa_Authentication_AdminUser.
func (*System_Aaa_Authentication_AdminUser) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Aaa_Authentication_User represents the /openconfig-system/system/aaa/authentication/users/user YANG schema element.
type System_Aaa_Authentication_User struct {
	ΛMetadata       []ygot.Annotation                         `path:"@" ygotAnnotation:"true"`
	Password        *string                                   `path:"config/password" module:"openconfig-system/openconfig-system"`
	ΛPassword       []ygot.Annotation                         `path:"config/@password" ygotAnnotation:"true"`
	PasswordHashed  *string                                   `path:"config/password-hashed" module:"openconfig-system/openconfig-system"`
	ΛPasswordHashed []ygot.Annotation                         `path:"config/@password-hashed" ygotAnnotation:"true"`
	Role            System_Aaa_Authentication_User_Role_Union `path:"config/role" module:"openconfig-system/openconfig-system"`
	ΛRole           []ygot.Annotation                         `path:"config/@role" ygotAnnotation:"true"`
	SshKey          *string                                   `path:"config/ssh-key" module:"openconfig-system/openconfig-system"`
	ΛSshKey         []ygot.Annotation                         `path:"config/@ssh-key" ygotAnnotation:"true"`
	Username        *string                                   `path:"config/username|username" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛUsername       []ygot.Annotation                         `path:"config/@username|@username" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Aaa_Authentication_User implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Aaa_Authentication_User) IsYANGGoStruct() {}

// GetPassword retrieves the value of the leaf Password from the System_Aaa_Authentication_User
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Password is set, it can
// safely use t.GetPassword() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Password == nil' before retrieving the leaf's value.
func (t *System_Aaa_Authentication_User) GetPassword() string {
	if t == nil || t.Password == nil {
		return ""
	}
	return *t.Password
}

// GetPasswordHashed retrieves the value of the leaf PasswordHashed from the System_Aaa_Authentication_User
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PasswordHashed is set, it can
// safely use t.GetPasswordHashed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PasswordHashed == nil' before retrieving the leaf's value.
func (t *System_Aaa_Authentication_User) GetPasswordHashed() string {
	if t == nil || t.PasswordHashed == nil {
		return ""
	}
	return *t.PasswordHashed
}

// GetRole retrieves the value of the leaf Role from the System_Aaa_Authentication_User
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Role is set, it can
// safely use t.GetRole() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Role == nil' before retrieving the leaf's value.
func (t *System_Aaa_Authentication_User) GetRole() System_Aaa_Authentication_User_Role_Union {
	if t == nil || t.Role == nil {
		return nil
	}
	return t.Role
}

// GetSshKey retrieves the value of the leaf SshKey from the System_Aaa_Authentication_User
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SshKey is set, it can
// safely use t.GetSshKey() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SshKey == nil' before retrieving the leaf's value.
func (t *System_Aaa_Authentication_User) GetSshKey() string {
	if t == nil || t.SshKey == nil {
		return ""
	}
	return *t.SshKey
}

// GetUsername retrieves the value of the leaf Username from the System_Aaa_Authentication_User
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Username is set, it can
// safely use t.GetUsername() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Username == nil' before retrieving the leaf's value.
func (t *System_Aaa_Authentication_User) GetUsername() string {
	if t == nil || t.Username == nil {
		return ""
	}
	return *t.Username
}

// PopulateDefaults recursively populates unset leaf fields in the System_Aaa_Authentication_User
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Aaa_Authentication_User) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the System_Aaa_Authentication_User struct, which is a YANG list entry.
func (t *System_Aaa_Authentication_User) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Username == nil {
		return nil, fmt.Errorf("nil value for key Username")
	}

	return map[string]interface{}{
		"username": *t.Username,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_Authentication_User) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Aaa_Authentication_User"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_Authentication_User) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Aaa_Authentication_User) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Aaa_Authentication_User.
func (*System_Aaa_Authentication_User) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Aaa_Authentication_User_Role_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-system/system/aaa/authentication/users/user/config/role within the YANG schema.
// Union type can be one of [E_AaaTypes_SYSTEM_DEFINED_ROLES, UnionString].
type System_Aaa_Authentication_User_Role_Union interface {
	// Union type can be one of [E_AaaTypes_SYSTEM_DEFINED_ROLES, UnionString]
	Documentation_for_System_Aaa_Authentication_User_Role_Union()
}

// Documentation_for_System_Aaa_Authentication_User_Role_Union ensures that E_AaaTypes_SYSTEM_DEFINED_ROLES
// implements the System_Aaa_Authentication_User_Role_Union interface.
func (E_AaaTypes_SYSTEM_DEFINED_ROLES) Documentation_for_System_Aaa_Authentication_User_Role_Union() {
}

// Documentation_for_System_Aaa_Authentication_User_Role_Union ensures that UnionString
// implements the System_Aaa_Authentication_User_Role_Union interface.
func (UnionString) Documentation_for_System_Aaa_Authentication_User_Role_Union() {}

// To_System_Aaa_Authentication_User_Role_Union takes an input interface{} and attempts to convert it to a struct
// which implements the System_Aaa_Authentication_User_Role_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *System_Aaa_Authentication_User) To_System_Aaa_Authentication_User_Role_Union(i interface{}) (System_Aaa_Authentication_User_Role_Union, error) {
	if v, ok := i.(System_Aaa_Authentication_User_Role_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to System_Aaa_Authentication_User_Role_Union, unknown union type, got: %T, want any of [E_AaaTypes_SYSTEM_DEFINED_ROLES, string]", i, i)
}

// System_Aaa_Authorization represents the /openconfig-system/system/aaa/authorization YANG schema element.
type System_Aaa_Authorization struct {
	ΛMetadata            []ygot.Annotation                                                           `path:"@" ygotAnnotation:"true"`
	AuthorizationMethod  []System_Aaa_Authorization_AuthorizationMethod_Union                        `path:"config/authorization-method" module:"openconfig-system/openconfig-system"`
	ΛAuthorizationMethod []ygot.Annotation                                                           `path:"config/@authorization-method" ygotAnnotation:"true"`
	Event                map[E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE]*System_Aaa_Authorization_Event `path:"events/event" module:"openconfig-system/openconfig-system"`
	ΛEvent               []ygot.Annotation                                                           `path:"events/@event" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Aaa_Authorization implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Aaa_Authorization) IsYANGGoStruct() {}

// NewEvent creates a new entry in the Event list of the
// System_Aaa_Authorization struct. The keys of the list are populated from the input
// arguments.
func (t *System_Aaa_Authorization) NewEvent(EventType E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE) (*System_Aaa_Authorization_Event, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Event == nil {
		t.Event = make(map[E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE]*System_Aaa_Authorization_Event)
	}

	key := EventType

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Event[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Event", key)
	}

	t.Event[key] = &System_Aaa_Authorization_Event{
		EventType: EventType,
	}

	return t.Event[key], nil
}

// RenameEvent renames an entry in the list Event within
// the System_Aaa_Authorization struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System_Aaa_Authorization) RenameEvent(oldK, newK E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE) error {
	if _, ok := t.Event[newK]; ok {
		return fmt.Errorf("key %v already exists in Event", newK)
	}

	e, ok := t.Event[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Event", oldK)
	}
	e.EventType = newK

	t.Event[newK] = e
	delete(t.Event, oldK)
	return nil
}

// GetOrCreateEventMap returns the list (map) from System_Aaa_Authorization.
//
// It initializes the field if not already initialized.
func (t *System_Aaa_Authorization) GetOrCreateEventMap() map[E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE]*System_Aaa_Authorization_Event {
	if t.Event == nil {
		t.Event = make(map[E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE]*System_Aaa_Authorization_Event)
	}
	return t.Event
}

// GetOrCreateEvent retrieves the value with the specified keys from
// the receiver System_Aaa_Authorization. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System_Aaa_Authorization) GetOrCreateEvent(EventType E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE) *System_Aaa_Authorization_Event {

	key := EventType

	if v, ok := t.Event[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewEvent(EventType)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateEvent got unexpected error: %v", err))
	}
	return v
}

// GetEvent retrieves the value with the specified key from
// the Event map field of System_Aaa_Authorization. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System_Aaa_Authorization) GetEvent(EventType E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE) *System_Aaa_Authorization_Event {

	if t == nil {
		return nil
	}

	key := EventType

	if lm, ok := t.Event[key]; ok {
		return lm
	}
	return nil
}

// AppendEvent appends the supplied System_Aaa_Authorization_Event struct to the
// list Event of System_Aaa_Authorization. If the key value(s) specified in
// the supplied System_Aaa_Authorization_Event already exist in the list, an error is
// returned.
func (t *System_Aaa_Authorization) AppendEvent(v *System_Aaa_Authorization_Event) error {
	key := v.EventType

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Event == nil {
		t.Event = make(map[E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE]*System_Aaa_Authorization_Event)
	}

	if _, ok := t.Event[key]; ok {
		return fmt.Errorf("duplicate key for list Event %v", key)
	}

	t.Event[key] = v
	return nil
}

// GetAuthorizationMethod retrieves the value of the leaf AuthorizationMethod from the System_Aaa_Authorization
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthorizationMethod is set, it can
// safely use t.GetAuthorizationMethod() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthorizationMethod == nil' before retrieving the leaf's value.
func (t *System_Aaa_Authorization) GetAuthorizationMethod() []System_Aaa_Authorization_AuthorizationMethod_Union {
	if t == nil || t.AuthorizationMethod == nil {
		return nil
	}
	return t.AuthorizationMethod
}

// PopulateDefaults recursively populates unset leaf fields in the System_Aaa_Authorization
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Aaa_Authorization) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Event {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_Authorization) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Aaa_Authorization"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_Authorization) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Aaa_Authorization) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Aaa_Authorization.
func (*System_Aaa_Authorization) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Aaa_Authorization_AuthorizationMethod_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-system/system/aaa/authorization/config/authorization-method within the YANG schema.
// Union type can be one of [E_AaaTypes_AAA_METHOD_TYPE, UnionString].
type System_Aaa_Authorization_AuthorizationMethod_Union interface {
	// Union type can be one of [E_AaaTypes_AAA_METHOD_TYPE, UnionString]
	Documentation_for_System_Aaa_Authorization_AuthorizationMethod_Union()
}

// Documentation_for_System_Aaa_Authorization_AuthorizationMethod_Union ensures that E_AaaTypes_AAA_METHOD_TYPE
// implements the System_Aaa_Authorization_AuthorizationMethod_Union interface.
func (E_AaaTypes_AAA_METHOD_TYPE) Documentation_for_System_Aaa_Authorization_AuthorizationMethod_Union() {
}

// Documentation_for_System_Aaa_Authorization_AuthorizationMethod_Union ensures that UnionString
// implements the System_Aaa_Authorization_AuthorizationMethod_Union interface.
func (UnionString) Documentation_for_System_Aaa_Authorization_AuthorizationMethod_Union() {}

// To_System_Aaa_Authorization_AuthorizationMethod_Union takes an input interface{} and attempts to convert it to a struct
// which implements the System_Aaa_Authorization_AuthorizationMethod_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *System_Aaa_Authorization) To_System_Aaa_Authorization_AuthorizationMethod_Union(i interface{}) (System_Aaa_Authorization_AuthorizationMethod_Union, error) {
	if v, ok := i.(System_Aaa_Authorization_AuthorizationMethod_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to System_Aaa_Authorization_AuthorizationMethod_Union, unknown union type, got: %T, want any of [E_AaaTypes_AAA_METHOD_TYPE, string]", i, i)
}

// System_Aaa_Authorization_Event represents the /openconfig-system/system/aaa/authorization/events/event YANG schema element.
type System_Aaa_Authorization_Event struct {
	ΛMetadata  []ygot.Annotation                       `path:"@" ygotAnnotation:"true"`
	EventType  E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE `path:"config/event-type|event-type" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛEventType []ygot.Annotation                       `path:"config/@event-type|@event-type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Aaa_Authorization_Event implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Aaa_Authorization_Event) IsYANGGoStruct() {}

// GetEventType retrieves the value of the leaf EventType from the System_Aaa_Authorization_Event
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EventType is set, it can
// safely use t.GetEventType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EventType == nil' before retrieving the leaf's value.
func (t *System_Aaa_Authorization_Event) GetEventType() E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE {
	if t == nil || t.EventType == 0 {
		return 0
	}
	return t.EventType
}

// PopulateDefaults recursively populates unset leaf fields in the System_Aaa_Authorization_Event
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Aaa_Authorization_Event) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the System_Aaa_Authorization_Event struct, which is a YANG list entry.
func (t *System_Aaa_Authorization_Event) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"event-type": t.EventType,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_Authorization_Event) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Aaa_Authorization_Event"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_Authorization_Event) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Aaa_Authorization_Event) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Aaa_Authorization_Event.
func (*System_Aaa_Authorization_Event) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Aaa_ServerGroup represents the /openconfig-system/system/aaa/server-groups/server-group YANG schema element.
type System_Aaa_ServerGroup struct {
	ΛMetadata []ygot.Annotation                         `path:"@" ygotAnnotation:"true"`
	Name      *string                                   `path:"config/name|name" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛName     []ygot.Annotation                         `path:"config/@name|@name" ygotAnnotation:"true"`
	Server    map[string]*System_Aaa_ServerGroup_Server `path:"servers/server" module:"openconfig-system/openconfig-system"`
	ΛServer   []ygot.Annotation                         `path:"servers/@server" ygotAnnotation:"true"`
	Type      E_AaaTypes_AAA_SERVER_TYPE                `path:"config/type" module:"openconfig-system/openconfig-system"`
	ΛType     []ygot.Annotation                         `path:"config/@type" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Aaa_ServerGroup implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Aaa_ServerGroup) IsYANGGoStruct() {}

// NewServer creates a new entry in the Server list of the
// System_Aaa_ServerGroup struct. The keys of the list are populated from the input
// arguments.
func (t *System_Aaa_ServerGroup) NewServer(Address string) (*System_Aaa_ServerGroup_Server, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Server == nil {
		t.Server = make(map[string]*System_Aaa_ServerGroup_Server)
	}

	key := Address

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Server[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Server", key)
	}

	t.Server[key] = &System_Aaa_ServerGroup_Server{
		Address: &Address,
	}

	return t.Server[key], nil
}

// RenameServer renames an entry in the list Server within
// the System_Aaa_ServerGroup struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System_Aaa_ServerGroup) RenameServer(oldK, newK string) error {
	if _, ok := t.Server[newK]; ok {
		return fmt.Errorf("key %v already exists in Server", newK)
	}

	e, ok := t.Server[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Server", oldK)
	}
	e.Address = &newK

	t.Server[newK] = e
	delete(t.Server, oldK)
	return nil
}

// GetOrCreateServerMap returns the list (map) from System_Aaa_ServerGroup.
//
// It initializes the field if not already initialized.
func (t *System_Aaa_ServerGroup) GetOrCreateServerMap() map[string]*System_Aaa_ServerGroup_Server {
	if t.Server == nil {
		t.Server = make(map[string]*System_Aaa_ServerGroup_Server)
	}
	return t.Server
}

// GetOrCreateServer retrieves the value with the specified keys from
// the receiver System_Aaa_ServerGroup. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System_Aaa_ServerGroup) GetOrCreateServer(Address string) *System_Aaa_ServerGroup_Server {

	key := Address

	if v, ok := t.Server[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewServer(Address)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateServer got unexpected error: %v", err))
	}
	return v
}

// GetServer retrieves the value with the specified key from
// the Server map field of System_Aaa_ServerGroup. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System_Aaa_ServerGroup) GetServer(Address string) *System_Aaa_ServerGroup_Server {

	if t == nil {
		return nil
	}

	key := Address

	if lm, ok := t.Server[key]; ok {
		return lm
	}
	return nil
}

// AppendServer appends the supplied System_Aaa_ServerGroup_Server struct to the
// list Server of System_Aaa_ServerGroup. If the key value(s) specified in
// the supplied System_Aaa_ServerGroup_Server already exist in the list, an error is
// returned.
func (t *System_Aaa_ServerGroup) AppendServer(v *System_Aaa_ServerGroup_Server) error {
	if v.Address == nil {
		return fmt.Errorf("invalid nil key received for Address")
	}

	key := *v.Address

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Server == nil {
		t.Server = make(map[string]*System_Aaa_ServerGroup_Server)
	}

	if _, ok := t.Server[key]; ok {
		return fmt.Errorf("duplicate key for list Server %v", key)
	}

	t.Server[key] = v
	return nil
}

// GetName retrieves the value of the leaf Name from the System_Aaa_ServerGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetType retrieves the value of the leaf Type from the System_Aaa_ServerGroup
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup) GetType() E_AaaTypes_AAA_SERVER_TYPE {
	if t == nil || t.Type == 0 {
		return 0
	}
	return t.Type
}

// PopulateDefaults recursively populates unset leaf fields in the System_Aaa_ServerGroup
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Aaa_ServerGroup) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Server {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the System_Aaa_ServerGroup struct, which is a YANG list entry.
func (t *System_Aaa_ServerGroup) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_ServerGroup) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Aaa_ServerGroup"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_ServerGroup) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Aaa_ServerGroup) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Aaa_ServerGroup.
func (*System_Aaa_ServerGroup) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Aaa_ServerGroup_Server represents the /openconfig-system/system/aaa/server-groups/server-group/servers/server YANG schema element.
type System_Aaa_ServerGroup_Server struct {
	ΛMetadata           []ygot.Annotation                     `path:"@" ygotAnnotation:"true"`
	Address             *string                               `path:"config/address|address" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛAddress            []ygot.Annotation                     `path:"config/@address|@address" ygotAnnotation:"true"`
	ConnectionAborts    *uint64                               `path:"state/connection-aborts" module:"openconfig-system/openconfig-system"`
	ΛConnectionAborts   []ygot.Annotation                     `path:"state/@connection-aborts" ygotAnnotation:"true"`
	ConnectionCloses    *uint64                               `path:"state/connection-closes" module:"openconfig-system/openconfig-system"`
	ΛConnectionCloses   []ygot.Annotation                     `path:"state/@connection-closes" ygotAnnotation:"true"`
	ConnectionFailures  *uint64                               `path:"state/connection-failures" module:"openconfig-system/openconfig-system"`
	ΛConnectionFailures []ygot.Annotation                     `path:"state/@connection-failures" ygotAnnotation:"true"`
	ConnectionOpens     *uint64                               `path:"state/connection-opens" module:"openconfig-system/openconfig-system"`
	ΛConnectionOpens    []ygot.Annotation                     `path:"state/@connection-opens" ygotAnnotation:"true"`
	ConnectionTimeouts  *uint64                               `path:"state/connection-timeouts" module:"openconfig-system/openconfig-system"`
	ΛConnectionTimeouts []ygot.Annotation                     `path:"state/@connection-timeouts" ygotAnnotation:"true"`
	ErrorsReceived      *uint64                               `path:"state/errors-received" module:"openconfig-system/openconfig-system"`
	ΛErrorsReceived     []ygot.Annotation                     `path:"state/@errors-received" ygotAnnotation:"true"`
	MessagesReceived    *uint64                               `path:"state/messages-received" module:"openconfig-system/openconfig-system"`
	ΛMessagesReceived   []ygot.Annotation                     `path:"state/@messages-received" ygotAnnotation:"true"`
	MessagesSent        *uint64                               `path:"state/messages-sent" module:"openconfig-system/openconfig-system"`
	ΛMessagesSent       []ygot.Annotation                     `path:"state/@messages-sent" ygotAnnotation:"true"`
	Name                *string                               `path:"config/name" module:"openconfig-system/openconfig-system"`
	ΛName               []ygot.Annotation                     `path:"config/@name" ygotAnnotation:"true"`
	Radius              *System_Aaa_ServerGroup_Server_Radius `path:"radius" module:"openconfig-system"`
	ΛRadius             []ygot.Annotation                     `path:"@radius" ygotAnnotation:"true"`
	Tacacs              *System_Aaa_ServerGroup_Server_Tacacs `path:"tacacs" module:"openconfig-system"`
	ΛTacacs             []ygot.Annotation                     `path:"@tacacs" ygotAnnotation:"true"`
	Timeout             *uint16                               `path:"config/timeout" module:"openconfig-system/openconfig-system"`
	ΛTimeout            []ygot.Annotation                     `path:"config/@timeout" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Aaa_ServerGroup_Server implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Aaa_ServerGroup_Server) IsYANGGoStruct() {}

// GetOrCreateRadius retrieves the value of the Radius field
// or returns the existing field if it already exists.
func (t *System_Aaa_ServerGroup_Server) GetOrCreateRadius() *System_Aaa_ServerGroup_Server_Radius {
	if t.Radius != nil {
		return t.Radius
	}
	t.Radius = &System_Aaa_ServerGroup_Server_Radius{}
	return t.Radius
}

// GetOrCreateTacacs retrieves the value of the Tacacs field
// or returns the existing field if it already exists.
func (t *System_Aaa_ServerGroup_Server) GetOrCreateTacacs() *System_Aaa_ServerGroup_Server_Tacacs {
	if t.Tacacs != nil {
		return t.Tacacs
	}
	t.Tacacs = &System_Aaa_ServerGroup_Server_Tacacs{}
	return t.Tacacs
}

// GetRadius returns the value of the Radius struct pointer
// from System_Aaa_ServerGroup_Server. If the receiver or the field Radius is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Aaa_ServerGroup_Server) GetRadius() *System_Aaa_ServerGroup_Server_Radius {
	if t != nil && t.Radius != nil {
		return t.Radius
	}
	return nil
}

// GetTacacs returns the value of the Tacacs struct pointer
// from System_Aaa_ServerGroup_Server. If the receiver or the field Tacacs is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Aaa_ServerGroup_Server) GetTacacs() *System_Aaa_ServerGroup_Server_Tacacs {
	if t != nil && t.Tacacs != nil {
		return t.Tacacs
	}
	return nil
}

// GetAddress retrieves the value of the leaf Address from the System_Aaa_ServerGroup_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server) GetAddress() string {
	if t == nil || t.Address == nil {
		return ""
	}
	return *t.Address
}

// GetConnectionAborts retrieves the value of the leaf ConnectionAborts from the System_Aaa_ServerGroup_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ConnectionAborts is set, it can
// safely use t.GetConnectionAborts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ConnectionAborts == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server) GetConnectionAborts() uint64 {
	if t == nil || t.ConnectionAborts == nil {
		return 0
	}
	return *t.ConnectionAborts
}

// GetConnectionCloses retrieves the value of the leaf ConnectionCloses from the System_Aaa_ServerGroup_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ConnectionCloses is set, it can
// safely use t.GetConnectionCloses() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ConnectionCloses == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server) GetConnectionCloses() uint64 {
	if t == nil || t.ConnectionCloses == nil {
		return 0
	}
	return *t.ConnectionCloses
}

// GetConnectionFailures retrieves the value of the leaf ConnectionFailures from the System_Aaa_ServerGroup_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ConnectionFailures is set, it can
// safely use t.GetConnectionFailures() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ConnectionFailures == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server) GetConnectionFailures() uint64 {
	if t == nil || t.ConnectionFailures == nil {
		return 0
	}
	return *t.ConnectionFailures
}

// GetConnectionOpens retrieves the value of the leaf ConnectionOpens from the System_Aaa_ServerGroup_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ConnectionOpens is set, it can
// safely use t.GetConnectionOpens() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ConnectionOpens == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server) GetConnectionOpens() uint64 {
	if t == nil || t.ConnectionOpens == nil {
		return 0
	}
	return *t.ConnectionOpens
}

// GetConnectionTimeouts retrieves the value of the leaf ConnectionTimeouts from the System_Aaa_ServerGroup_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ConnectionTimeouts is set, it can
// safely use t.GetConnectionTimeouts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ConnectionTimeouts == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server) GetConnectionTimeouts() uint64 {
	if t == nil || t.ConnectionTimeouts == nil {
		return 0
	}
	return *t.ConnectionTimeouts
}

// GetErrorsReceived retrieves the value of the leaf ErrorsReceived from the System_Aaa_ServerGroup_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ErrorsReceived is set, it can
// safely use t.GetErrorsReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ErrorsReceived == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server) GetErrorsReceived() uint64 {
	if t == nil || t.ErrorsReceived == nil {
		return 0
	}
	return *t.ErrorsReceived
}

// GetMessagesReceived retrieves the value of the leaf MessagesReceived from the System_Aaa_ServerGroup_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MessagesReceived is set, it can
// safely use t.GetMessagesReceived() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MessagesReceived == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server) GetMessagesReceived() uint64 {
	if t == nil || t.MessagesReceived == nil {
		return 0
	}
	return *t.MessagesReceived
}

// GetMessagesSent retrieves the value of the leaf MessagesSent from the System_Aaa_ServerGroup_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MessagesSent is set, it can
// safely use t.GetMessagesSent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MessagesSent == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server) GetMessagesSent() uint64 {
	if t == nil || t.MessagesSent == nil {
		return 0
	}
	return *t.MessagesSent
}

// GetName retrieves the value of the leaf Name from the System_Aaa_ServerGroup_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetTimeout retrieves the value of the leaf Timeout from the System_Aaa_ServerGroup_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Timeout is set, it can
// safely use t.GetTimeout() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Timeout == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server) GetTimeout() uint16 {
	if t == nil || t.Timeout == nil {
		return 0
	}
	return *t.Timeout
}

// PopulateDefaults recursively populates unset leaf fields in the System_Aaa_ServerGroup_Server
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Aaa_ServerGroup_Server) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Radius.PopulateDefaults()
	t.Tacacs.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the System_Aaa_ServerGroup_Server struct, which is a YANG list entry.
func (t *System_Aaa_ServerGroup_Server) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Address == nil {
		return nil, fmt.Errorf("nil value for key Address")
	}

	return map[string]interface{}{
		"address": *t.Address,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_ServerGroup_Server) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Aaa_ServerGroup_Server"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_ServerGroup_Server) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Aaa_ServerGroup_Server) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Aaa_ServerGroup_Server.
func (*System_Aaa_ServerGroup_Server) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Aaa_ServerGroup_Server_Radius represents the /openconfig-system/system/aaa/server-groups/server-group/servers/server/radius YANG schema element.
type System_Aaa_ServerGroup_Server_Radius struct {
	ΛMetadata           []ygot.Annotation                              `path:"@" ygotAnnotation:"true"`
	AcctPort            *uint16                                        `path:"config/acct-port" module:"openconfig-system/openconfig-system"`
	ΛAcctPort           []ygot.Annotation                              `path:"config/@acct-port" ygotAnnotation:"true"`
	AuthPort            *uint16                                        `path:"config/auth-port" module:"openconfig-system/openconfig-system"`
	ΛAuthPort           []ygot.Annotation                              `path:"config/@auth-port" ygotAnnotation:"true"`
	Counters            *System_Aaa_ServerGroup_Server_Radius_Counters `path:"state/counters" module:"openconfig-system/openconfig-system"`
	ΛCounters           []ygot.Annotation                              `path:"state/@counters" ygotAnnotation:"true"`
	RetransmitAttempts  *uint8                                         `path:"config/retransmit-attempts" module:"openconfig-system/openconfig-system"`
	ΛRetransmitAttempts []ygot.Annotation                              `path:"config/@retransmit-attempts" ygotAnnotation:"true"`
	SecretKey           *string                                        `path:"config/secret-key" module:"openconfig-system/openconfig-system"`
	ΛSecretKey          []ygot.Annotation                              `path:"config/@secret-key" ygotAnnotation:"true"`
	SecretKeyHashed     *string                                        `path:"config/secret-key-hashed" module:"openconfig-system/openconfig-system"`
	ΛSecretKeyHashed    []ygot.Annotation                              `path:"config/@secret-key-hashed" ygotAnnotation:"true"`
	SourceAddress       *string                                        `path:"config/source-address" module:"openconfig-system/openconfig-system"`
	ΛSourceAddress      []ygot.Annotation                              `path:"config/@source-address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Aaa_ServerGroup_Server_Radius implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Aaa_ServerGroup_Server_Radius) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *System_Aaa_ServerGroup_Server_Radius) GetOrCreateCounters() *System_Aaa_ServerGroup_Server_Radius_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &System_Aaa_ServerGroup_Server_Radius_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from System_Aaa_ServerGroup_Server_Radius. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Aaa_ServerGroup_Server_Radius) GetCounters() *System_Aaa_ServerGroup_Server_Radius_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetAcctPort retrieves the value of the leaf AcctPort from the System_Aaa_ServerGroup_Server_Radius
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AcctPort is set, it can
// safely use t.GetAcctPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AcctPort == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server_Radius) GetAcctPort() uint16 {
	if t == nil || t.AcctPort == nil {
		return 1813
	}
	return *t.AcctPort
}

// GetAuthPort retrieves the value of the leaf AuthPort from the System_Aaa_ServerGroup_Server_Radius
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthPort is set, it can
// safely use t.GetAuthPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthPort == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server_Radius) GetAuthPort() uint16 {
	if t == nil || t.AuthPort == nil {
		return 1812
	}
	return *t.AuthPort
}

// GetRetransmitAttempts retrieves the value of the leaf RetransmitAttempts from the System_Aaa_ServerGroup_Server_Radius
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RetransmitAttempts is set, it can
// safely use t.GetRetransmitAttempts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RetransmitAttempts == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server_Radius) GetRetransmitAttempts() uint8 {
	if t == nil || t.RetransmitAttempts == nil {
		return 0
	}
	return *t.RetransmitAttempts
}

// GetSecretKey retrieves the value of the leaf SecretKey from the System_Aaa_ServerGroup_Server_Radius
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SecretKey is set, it can
// safely use t.GetSecretKey() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SecretKey == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server_Radius) GetSecretKey() string {
	if t == nil || t.SecretKey == nil {
		return ""
	}
	return *t.SecretKey
}

// GetSecretKeyHashed retrieves the value of the leaf SecretKeyHashed from the System_Aaa_ServerGroup_Server_Radius
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SecretKeyHashed is set, it can
// safely use t.GetSecretKeyHashed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SecretKeyHashed == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server_Radius) GetSecretKeyHashed() string {
	if t == nil || t.SecretKeyHashed == nil {
		return ""
	}
	return *t.SecretKeyHashed
}

// GetSourceAddress retrieves the value of the leaf SourceAddress from the System_Aaa_ServerGroup_Server_Radius
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddress is set, it can
// safely use t.GetSourceAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddress == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server_Radius) GetSourceAddress() string {
	if t == nil || t.SourceAddress == nil {
		return ""
	}
	return *t.SourceAddress
}

// PopulateDefaults recursively populates unset leaf fields in the System_Aaa_ServerGroup_Server_Radius
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Aaa_ServerGroup_Server_Radius) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AcctPort == nil {
		var v uint16 = 1813
		t.AcctPort = &v
	}
	if t.AuthPort == nil {
		var v uint16 = 1812
		t.AuthPort = &v
	}
	t.Counters.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_ServerGroup_Server_Radius) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Aaa_ServerGroup_Server_Radius"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_ServerGroup_Server_Radius) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Aaa_ServerGroup_Server_Radius) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Aaa_ServerGroup_Server_Radius.
func (*System_Aaa_ServerGroup_Server_Radius) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Aaa_ServerGroup_Server_Radius_Counters represents the /openconfig-system/system/aaa/server-groups/server-group/servers/server/radius/state/counters YANG schema element.
type System_Aaa_ServerGroup_Server_Radius_Counters struct {
	ΛMetadata              []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AccessAccepts          *uint64           `path:"access-accepts" module:"openconfig-system"`
	ΛAccessAccepts         []ygot.Annotation `path:"@access-accepts" ygotAnnotation:"true"`
	AccessRejects          *uint64           `path:"access-rejects" module:"openconfig-system"`
	ΛAccessRejects         []ygot.Annotation `path:"@access-rejects" ygotAnnotation:"true"`
	RetriedAccessRequests  *uint64           `path:"retried-access-requests" module:"openconfig-system"`
	ΛRetriedAccessRequests []ygot.Annotation `path:"@retried-access-requests" ygotAnnotation:"true"`
	TimeoutAccessRequests  *uint64           `path:"timeout-access-requests" module:"openconfig-system"`
	ΛTimeoutAccessRequests []ygot.Annotation `path:"@timeout-access-requests" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Aaa_ServerGroup_Server_Radius_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Aaa_ServerGroup_Server_Radius_Counters) IsYANGGoStruct() {}

// GetAccessAccepts retrieves the value of the leaf AccessAccepts from the System_Aaa_ServerGroup_Server_Radius_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AccessAccepts is set, it can
// safely use t.GetAccessAccepts() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AccessAccepts == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server_Radius_Counters) GetAccessAccepts() uint64 {
	if t == nil || t.AccessAccepts == nil {
		return 0
	}
	return *t.AccessAccepts
}

// GetAccessRejects retrieves the value of the leaf AccessRejects from the System_Aaa_ServerGroup_Server_Radius_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AccessRejects is set, it can
// safely use t.GetAccessRejects() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AccessRejects == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server_Radius_Counters) GetAccessRejects() uint64 {
	if t == nil || t.AccessRejects == nil {
		return 0
	}
	return *t.AccessRejects
}

// GetRetriedAccessRequests retrieves the value of the leaf RetriedAccessRequests from the System_Aaa_ServerGroup_Server_Radius_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RetriedAccessRequests is set, it can
// safely use t.GetRetriedAccessRequests() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RetriedAccessRequests == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server_Radius_Counters) GetRetriedAccessRequests() uint64 {
	if t == nil || t.RetriedAccessRequests == nil {
		return 0
	}
	return *t.RetriedAccessRequests
}

// GetTimeoutAccessRequests retrieves the value of the leaf TimeoutAccessRequests from the System_Aaa_ServerGroup_Server_Radius_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TimeoutAccessRequests is set, it can
// safely use t.GetTimeoutAccessRequests() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TimeoutAccessRequests == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server_Radius_Counters) GetTimeoutAccessRequests() uint64 {
	if t == nil || t.TimeoutAccessRequests == nil {
		return 0
	}
	return *t.TimeoutAccessRequests
}

// PopulateDefaults recursively populates unset leaf fields in the System_Aaa_ServerGroup_Server_Radius_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Aaa_ServerGroup_Server_Radius_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_ServerGroup_Server_Radius_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Aaa_ServerGroup_Server_Radius_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_ServerGroup_Server_Radius_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Aaa_ServerGroup_Server_Radius_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Aaa_ServerGroup_Server_Radius_Counters.
func (*System_Aaa_ServerGroup_Server_Radius_Counters) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Aaa_ServerGroup_Server_Tacacs represents the /openconfig-system/system/aaa/server-groups/server-group/servers/server/tacacs YANG schema element.
type System_Aaa_ServerGroup_Server_Tacacs struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Port             *uint16           `path:"config/port" module:"openconfig-system/openconfig-system"`
	ΛPort            []ygot.Annotation `path:"config/@port" ygotAnnotation:"true"`
	SecretKey        *string           `path:"config/secret-key" module:"openconfig-system/openconfig-system"`
	ΛSecretKey       []ygot.Annotation `path:"config/@secret-key" ygotAnnotation:"true"`
	SecretKeyHashed  *string           `path:"config/secret-key-hashed" module:"openconfig-system/openconfig-system"`
	ΛSecretKeyHashed []ygot.Annotation `path:"config/@secret-key-hashed" ygotAnnotation:"true"`
	SourceAddress    *string           `path:"config/source-address" module:"openconfig-system/openconfig-system"`
	ΛSourceAddress   []ygot.Annotation `path:"config/@source-address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Aaa_ServerGroup_Server_Tacacs implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Aaa_ServerGroup_Server_Tacacs) IsYANGGoStruct() {}

// GetPort retrieves the value of the leaf Port from the System_Aaa_ServerGroup_Server_Tacacs
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Port is set, it can
// safely use t.GetPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Port == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server_Tacacs) GetPort() uint16 {
	if t == nil || t.Port == nil {
		return 49
	}
	return *t.Port
}

// GetSecretKey retrieves the value of the leaf SecretKey from the System_Aaa_ServerGroup_Server_Tacacs
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SecretKey is set, it can
// safely use t.GetSecretKey() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SecretKey == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server_Tacacs) GetSecretKey() string {
	if t == nil || t.SecretKey == nil {
		return ""
	}
	return *t.SecretKey
}

// GetSecretKeyHashed retrieves the value of the leaf SecretKeyHashed from the System_Aaa_ServerGroup_Server_Tacacs
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SecretKeyHashed is set, it can
// safely use t.GetSecretKeyHashed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SecretKeyHashed == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server_Tacacs) GetSecretKeyHashed() string {
	if t == nil || t.SecretKeyHashed == nil {
		return ""
	}
	return *t.SecretKeyHashed
}

// GetSourceAddress retrieves the value of the leaf SourceAddress from the System_Aaa_ServerGroup_Server_Tacacs
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddress is set, it can
// safely use t.GetSourceAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddress == nil' before retrieving the leaf's value.
func (t *System_Aaa_ServerGroup_Server_Tacacs) GetSourceAddress() string {
	if t == nil || t.SourceAddress == nil {
		return ""
	}
	return *t.SourceAddress
}

// PopulateDefaults recursively populates unset leaf fields in the System_Aaa_ServerGroup_Server_Tacacs
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Aaa_ServerGroup_Server_Tacacs) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Port == nil {
		var v uint16 = 49
		t.Port = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_ServerGroup_Server_Tacacs) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Aaa_ServerGroup_Server_Tacacs"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Aaa_ServerGroup_Server_Tacacs) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Aaa_ServerGroup_Server_Tacacs) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Aaa_ServerGroup_Server_Tacacs.
func (*System_Aaa_ServerGroup_Server_Tacacs) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Alarm represents the /openconfig-system/system/alarms/alarm YANG schema element.
type System_Alarm struct {
	ΛMetadata    []ygot.Annotation                      `path:"@" ygotAnnotation:"true"`
	Id           *string                                `path:"state/id|id" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛId          []ygot.Annotation                      `path:"state/@id|@id" ygotAnnotation:"true"`
	Resource     *string                                `path:"state/resource" module:"openconfig-system/openconfig-system"`
	ΛResource    []ygot.Annotation                      `path:"state/@resource" ygotAnnotation:"true"`
	Severity     E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY `path:"state/severity" module:"openconfig-system/openconfig-system"`
	ΛSeverity    []ygot.Annotation                      `path:"state/@severity" ygotAnnotation:"true"`
	Text         *string                                `path:"state/text" module:"openconfig-system/openconfig-system"`
	ΛText        []ygot.Annotation                      `path:"state/@text" ygotAnnotation:"true"`
	TimeCreated  *uint64                                `path:"state/time-created" module:"openconfig-system/openconfig-system"`
	ΛTimeCreated []ygot.Annotation                      `path:"state/@time-created" ygotAnnotation:"true"`
	TypeId       System_Alarm_TypeId_Union              `path:"state/type-id" module:"openconfig-system/openconfig-system"`
	ΛTypeId      []ygot.Annotation                      `path:"state/@type-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Alarm implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Alarm) IsYANGGoStruct() {}

// GetId retrieves the value of the leaf Id from the System_Alarm
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *System_Alarm) GetId() string {
	if t == nil || t.Id == nil {
		return ""
	}
	return *t.Id
}

// GetResource retrieves the value of the leaf Resource from the System_Alarm
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Resource is set, it can
// safely use t.GetResource() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Resource == nil' before retrieving the leaf's value.
func (t *System_Alarm) GetResource() string {
	if t == nil || t.Resource == nil {
		return ""
	}
	return *t.Resource
}

// GetSeverity retrieves the value of the leaf Severity from the System_Alarm
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Severity is set, it can
// safely use t.GetSeverity() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Severity == nil' before retrieving the leaf's value.
func (t *System_Alarm) GetSeverity() E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY {
	if t == nil || t.Severity == 0 {
		return 0
	}
	return t.Severity
}

// GetText retrieves the value of the leaf Text from the System_Alarm
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Text is set, it can
// safely use t.GetText() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Text == nil' before retrieving the leaf's value.
func (t *System_Alarm) GetText() string {
	if t == nil || t.Text == nil {
		return ""
	}
	return *t.Text
}

// GetTimeCreated retrieves the value of the leaf TimeCreated from the System_Alarm
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TimeCreated is set, it can
// safely use t.GetTimeCreated() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TimeCreated == nil' before retrieving the leaf's value.
func (t *System_Alarm) GetTimeCreated() uint64 {
	if t == nil || t.TimeCreated == nil {
		return 0
	}
	return *t.TimeCreated
}

// GetTypeId retrieves the value of the leaf TypeId from the System_Alarm
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TypeId is set, it can
// safely use t.GetTypeId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TypeId == nil' before retrieving the leaf's value.
func (t *System_Alarm) GetTypeId() System_Alarm_TypeId_Union {
	if t == nil || t.TypeId == nil {
		return nil
	}
	return t.TypeId
}

// PopulateDefaults recursively populates unset leaf fields in the System_Alarm
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Alarm) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the System_Alarm struct, which is a YANG list entry.
func (t *System_Alarm) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Alarm) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Alarm"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Alarm) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Alarm) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Alarm.
func (*System_Alarm) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Alarm_TypeId_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-system/system/alarms/alarm/state/type-id within the YANG schema.
// Union type can be one of [E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID, UnionString].
type System_Alarm_TypeId_Union interface {
	// Union type can be one of [E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID, UnionString]
	Documentation_for_System_Alarm_TypeId_Union()
}

// Documentation_for_System_Alarm_TypeId_Union ensures that E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID
// implements the System_Alarm_TypeId_Union interface.
func (E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID) Documentation_for_System_Alarm_TypeId_Union() {}

// Documentation_for_System_Alarm_TypeId_Union ensures that UnionString
// implements the System_Alarm_TypeId_Union interface.
func (UnionString) Documentation_for_System_Alarm_TypeId_Union() {}

// To_System_Alarm_TypeId_Union takes an input interface{} and attempts to convert it to a struct
// which implements the System_Alarm_TypeId_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *System_Alarm) To_System_Alarm_TypeId_Union(i interface{}) (System_Alarm_TypeId_Union, error) {
	if v, ok := i.(System_Alarm_TypeId_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to System_Alarm_TypeId_Union, unknown union type, got: %T, want any of [E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID, string]", i, i)
}

// System_Clock represents the /openconfig-system/system/clock YANG schema element.
type System_Clock struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	TimezoneName  *string           `path:"config/timezone-name" module:"openconfig-system/openconfig-system"`
	ΛTimezoneName []ygot.Annotation `path:"config/@timezone-name" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Clock implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Clock) IsYANGGoStruct() {}

// GetTimezoneName retrieves the value of the leaf TimezoneName from the System_Clock
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TimezoneName is set, it can
// safely use t.GetTimezoneName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TimezoneName == nil' before retrieving the leaf's value.
func (t *System_Clock) GetTimezoneName() string {
	if t == nil || t.TimezoneName == nil {
		return ""
	}
	return *t.TimezoneName
}

// PopulateDefaults recursively populates unset leaf fields in the System_Clock
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Clock) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Clock) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Clock"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Clock) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Clock) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Clock.
func (*System_Clock) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Cpu represents the /openconfig-system/system/cpus/cpu YANG schema element.
type System_Cpu struct {
	ΛMetadata          []ygot.Annotation             `path:"@" ygotAnnotation:"true"`
	HardwareInterrupt  *System_Cpu_HardwareInterrupt `path:"state/hardware-interrupt" module:"openconfig-system/openconfig-system"`
	ΛHardwareInterrupt []ygot.Annotation             `path:"state/@hardware-interrupt" ygotAnnotation:"true"`
	Idle               *System_Cpu_Idle              `path:"state/idle" module:"openconfig-system/openconfig-system"`
	ΛIdle              []ygot.Annotation             `path:"state/@idle" ygotAnnotation:"true"`
	Index              System_Cpu_Index_Union        `path:"state/index|index" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛIndex             []ygot.Annotation             `path:"state/@index|@index" ygotAnnotation:"true"`
	Kernel             *System_Cpu_Kernel            `path:"state/kernel" module:"openconfig-system/openconfig-system"`
	ΛKernel            []ygot.Annotation             `path:"state/@kernel" ygotAnnotation:"true"`
	Nice               *System_Cpu_Nice              `path:"state/nice" module:"openconfig-system/openconfig-system"`
	ΛNice              []ygot.Annotation             `path:"state/@nice" ygotAnnotation:"true"`
	SoftwareInterrupt  *System_Cpu_SoftwareInterrupt `path:"state/software-interrupt" module:"openconfig-system/openconfig-system"`
	ΛSoftwareInterrupt []ygot.Annotation             `path:"state/@software-interrupt" ygotAnnotation:"true"`
	Total              *System_Cpu_Total             `path:"state/total" module:"openconfig-system/openconfig-system"`
	ΛTotal             []ygot.Annotation             `path:"state/@total" ygotAnnotation:"true"`
	User               *System_Cpu_User              `path:"state/user" module:"openconfig-system/openconfig-system"`
	ΛUser              []ygot.Annotation             `path:"state/@user" ygotAnnotation:"true"`
	Wait               *System_Cpu_Wait              `path:"state/wait" module:"openconfig-system/openconfig-system"`
	ΛWait              []ygot.Annotation             `path:"state/@wait" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Cpu implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Cpu) IsYANGGoStruct() {}

// GetOrCreateHardwareInterrupt retrieves the value of the HardwareInterrupt field
// or returns the existing field if it already exists.
func (t *System_Cpu) GetOrCreateHardwareInterrupt() *System_Cpu_HardwareInterrupt {
	if t.HardwareInterrupt != nil {
		return t.HardwareInterrupt
	}
	t.HardwareInterrupt = &System_Cpu_HardwareInterrupt{}
	return t.HardwareInterrupt
}

// GetOrCreateIdle retrieves the value of the Idle field
// or returns the existing field if it already exists.
func (t *System_Cpu) GetOrCreateIdle() *System_Cpu_Idle {
	if t.Idle != nil {
		return t.Idle
	}
	t.Idle = &System_Cpu_Idle{}
	return t.Idle
}

// GetOrCreateKernel retrieves the value of the Kernel field
// or returns the existing field if it already exists.
func (t *System_Cpu) GetOrCreateKernel() *System_Cpu_Kernel {
	if t.Kernel != nil {
		return t.Kernel
	}
	t.Kernel = &System_Cpu_Kernel{}
	return t.Kernel
}

// GetOrCreateNice retrieves the value of the Nice field
// or returns the existing field if it already exists.
func (t *System_Cpu) GetOrCreateNice() *System_Cpu_Nice {
	if t.Nice != nil {
		return t.Nice
	}
	t.Nice = &System_Cpu_Nice{}
	return t.Nice
}

// GetOrCreateSoftwareInterrupt retrieves the value of the SoftwareInterrupt field
// or returns the existing field if it already exists.
func (t *System_Cpu) GetOrCreateSoftwareInterrupt() *System_Cpu_SoftwareInterrupt {
	if t.SoftwareInterrupt != nil {
		return t.SoftwareInterrupt
	}
	t.SoftwareInterrupt = &System_Cpu_SoftwareInterrupt{}
	return t.SoftwareInterrupt
}

// GetOrCreateTotal retrieves the value of the Total field
// or returns the existing field if it already exists.
func (t *System_Cpu) GetOrCreateTotal() *System_Cpu_Total {
	if t.Total != nil {
		return t.Total
	}
	t.Total = &System_Cpu_Total{}
	return t.Total
}

// GetOrCreateUser retrieves the value of the User field
// or returns the existing field if it already exists.
func (t *System_Cpu) GetOrCreateUser() *System_Cpu_User {
	if t.User != nil {
		return t.User
	}
	t.User = &System_Cpu_User{}
	return t.User
}

// GetOrCreateWait retrieves the value of the Wait field
// or returns the existing field if it already exists.
func (t *System_Cpu) GetOrCreateWait() *System_Cpu_Wait {
	if t.Wait != nil {
		return t.Wait
	}
	t.Wait = &System_Cpu_Wait{}
	return t.Wait
}

// GetHardwareInterrupt returns the value of the HardwareInterrupt struct pointer
// from System_Cpu. If the receiver or the field HardwareInterrupt is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Cpu) GetHardwareInterrupt() *System_Cpu_HardwareInterrupt {
	if t != nil && t.HardwareInterrupt != nil {
		return t.HardwareInterrupt
	}
	return nil
}

// GetIdle returns the value of the Idle struct pointer
// from System_Cpu. If the receiver or the field Idle is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Cpu) GetIdle() *System_Cpu_Idle {
	if t != nil && t.Idle != nil {
		return t.Idle
	}
	return nil
}

// GetKernel returns the value of the Kernel struct pointer
// from System_Cpu. If the receiver or the field Kernel is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Cpu) GetKernel() *System_Cpu_Kernel {
	if t != nil && t.Kernel != nil {
		return t.Kernel
	}
	return nil
}

// GetNice returns the value of the Nice struct pointer
// from System_Cpu. If the receiver or the field Nice is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Cpu) GetNice() *System_Cpu_Nice {
	if t != nil && t.Nice != nil {
		return t.Nice
	}
	return nil
}

// GetSoftwareInterrupt returns the value of the SoftwareInterrupt struct pointer
// from System_Cpu. If the receiver or the field SoftwareInterrupt is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Cpu) GetSoftwareInterrupt() *System_Cpu_SoftwareInterrupt {
	if t != nil && t.SoftwareInterrupt != nil {
		return t.SoftwareInterrupt
	}
	return nil
}

// GetTotal returns the value of the Total struct pointer
// from System_Cpu. If the receiver or the field Total is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Cpu) GetTotal() *System_Cpu_Total {
	if t != nil && t.Total != nil {
		return t.Total
	}
	return nil
}

// GetUser returns the value of the User struct pointer
// from System_Cpu. If the receiver or the field User is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Cpu) GetUser() *System_Cpu_User {
	if t != nil && t.User != nil {
		return t.User
	}
	return nil
}

// GetWait returns the value of the Wait struct pointer
// from System_Cpu. If the receiver or the field Wait is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Cpu) GetWait() *System_Cpu_Wait {
	if t != nil && t.Wait != nil {
		return t.Wait
	}
	return nil
}

// GetIndex retrieves the value of the leaf Index from the System_Cpu
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *System_Cpu) GetIndex() System_Cpu_Index_Union {
	if t == nil || t.Index == nil {
		return nil
	}
	return t.Index
}

// PopulateDefaults recursively populates unset leaf fields in the System_Cpu
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Cpu) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.HardwareInterrupt.PopulateDefaults()
	t.Idle.PopulateDefaults()
	t.Kernel.PopulateDefaults()
	t.Nice.PopulateDefaults()
	t.SoftwareInterrupt.PopulateDefaults()
	t.Total.PopulateDefaults()
	t.User.PopulateDefaults()
	t.Wait.PopulateDefaults()
}

// ΛListKeyMap returns the keys of the System_Cpu struct, which is a YANG list entry.
func (t *System_Cpu) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"index": t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Cpu"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Cpu) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Cpu.
func (*System_Cpu) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Cpu_Index_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-system/system/cpus/cpu/state/index within the YANG schema.
// Union type can be one of [E_Cpu_Index_Enum, UnionUint32].
type System_Cpu_Index_Union interface {
	// Union type can be one of [E_Cpu_Index_Enum, UnionUint32]
	Documentation_for_System_Cpu_Index_Union()
}

// Documentation_for_System_Cpu_Index_Union ensures that E_Cpu_Index_Enum
// implements the System_Cpu_Index_Union interface.
func (E_Cpu_Index_Enum) Documentation_for_System_Cpu_Index_Union() {}

// Documentation_for_System_Cpu_Index_Union ensures that UnionUint32
// implements the System_Cpu_Index_Union interface.
func (UnionUint32) Documentation_for_System_Cpu_Index_Union() {}

// To_System_Cpu_Index_Union takes an input interface{} and attempts to convert it to a struct
// which implements the System_Cpu_Index_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *System_Cpu) To_System_Cpu_Index_Union(i interface{}) (System_Cpu_Index_Union, error) {
	if v, ok := i.(System_Cpu_Index_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case uint32:
		return UnionUint32(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to System_Cpu_Index_Union, unknown union type, got: %T, want any of [E_Cpu_Index_Enum, uint32]", i, i)
}

// System_Cpu_HardwareInterrupt represents the /openconfig-system/system/cpus/cpu/state/hardware-interrupt YANG schema element.
type System_Cpu_HardwareInterrupt struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *uint8            `path:"avg" module:"openconfig-system"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *uint8            `path:"instant" module:"openconfig-system"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-system"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *uint8            `path:"max" module:"openconfig-system"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-system"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *uint8            `path:"min" module:"openconfig-system"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-system"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Cpu_HardwareInterrupt implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Cpu_HardwareInterrupt) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the System_Cpu_HardwareInterrupt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *System_Cpu_HardwareInterrupt) GetAvg() uint8 {
	if t == nil || t.Avg == nil {
		return 0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the System_Cpu_HardwareInterrupt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *System_Cpu_HardwareInterrupt) GetInstant() uint8 {
	if t == nil || t.Instant == nil {
		return 0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the System_Cpu_HardwareInterrupt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *System_Cpu_HardwareInterrupt) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the System_Cpu_HardwareInterrupt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *System_Cpu_HardwareInterrupt) GetMax() uint8 {
	if t == nil || t.Max == nil {
		return 0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the System_Cpu_HardwareInterrupt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *System_Cpu_HardwareInterrupt) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the System_Cpu_HardwareInterrupt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *System_Cpu_HardwareInterrupt) GetMin() uint8 {
	if t == nil || t.Min == nil {
		return 0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the System_Cpu_HardwareInterrupt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *System_Cpu_HardwareInterrupt) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the System_Cpu_HardwareInterrupt
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Cpu_HardwareInterrupt) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu_HardwareInterrupt) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Cpu_HardwareInterrupt"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu_HardwareInterrupt) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Cpu_HardwareInterrupt) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Cpu_HardwareInterrupt.
func (*System_Cpu_HardwareInterrupt) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Cpu_Idle represents the /openconfig-system/system/cpus/cpu/state/idle YANG schema element.
type System_Cpu_Idle struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *uint8            `path:"avg" module:"openconfig-system"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *uint8            `path:"instant" module:"openconfig-system"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-system"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *uint8            `path:"max" module:"openconfig-system"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-system"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *uint8            `path:"min" module:"openconfig-system"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-system"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Cpu_Idle implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Cpu_Idle) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the System_Cpu_Idle
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *System_Cpu_Idle) GetAvg() uint8 {
	if t == nil || t.Avg == nil {
		return 0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the System_Cpu_Idle
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *System_Cpu_Idle) GetInstant() uint8 {
	if t == nil || t.Instant == nil {
		return 0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the System_Cpu_Idle
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *System_Cpu_Idle) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the System_Cpu_Idle
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *System_Cpu_Idle) GetMax() uint8 {
	if t == nil || t.Max == nil {
		return 0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the System_Cpu_Idle
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *System_Cpu_Idle) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the System_Cpu_Idle
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *System_Cpu_Idle) GetMin() uint8 {
	if t == nil || t.Min == nil {
		return 0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the System_Cpu_Idle
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *System_Cpu_Idle) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the System_Cpu_Idle
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Cpu_Idle) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu_Idle) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Cpu_Idle"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu_Idle) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Cpu_Idle) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Cpu_Idle.
func (*System_Cpu_Idle) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Cpu_Kernel represents the /openconfig-system/system/cpus/cpu/state/kernel YANG schema element.
type System_Cpu_Kernel struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *uint8            `path:"avg" module:"openconfig-system"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *uint8            `path:"instant" module:"openconfig-system"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-system"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *uint8            `path:"max" module:"openconfig-system"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-system"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *uint8            `path:"min" module:"openconfig-system"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-system"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Cpu_Kernel implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Cpu_Kernel) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the System_Cpu_Kernel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *System_Cpu_Kernel) GetAvg() uint8 {
	if t == nil || t.Avg == nil {
		return 0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the System_Cpu_Kernel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *System_Cpu_Kernel) GetInstant() uint8 {
	if t == nil || t.Instant == nil {
		return 0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the System_Cpu_Kernel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *System_Cpu_Kernel) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the System_Cpu_Kernel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *System_Cpu_Kernel) GetMax() uint8 {
	if t == nil || t.Max == nil {
		return 0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the System_Cpu_Kernel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *System_Cpu_Kernel) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the System_Cpu_Kernel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *System_Cpu_Kernel) GetMin() uint8 {
	if t == nil || t.Min == nil {
		return 0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the System_Cpu_Kernel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *System_Cpu_Kernel) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the System_Cpu_Kernel
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Cpu_Kernel) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu_Kernel) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Cpu_Kernel"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu_Kernel) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Cpu_Kernel) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Cpu_Kernel.
func (*System_Cpu_Kernel) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Cpu_Nice represents the /openconfig-system/system/cpus/cpu/state/nice YANG schema element.
type System_Cpu_Nice struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *uint8            `path:"avg" module:"openconfig-system"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *uint8            `path:"instant" module:"openconfig-system"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-system"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *uint8            `path:"max" module:"openconfig-system"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-system"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *uint8            `path:"min" module:"openconfig-system"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-system"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Cpu_Nice implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Cpu_Nice) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the System_Cpu_Nice
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *System_Cpu_Nice) GetAvg() uint8 {
	if t == nil || t.Avg == nil {
		return 0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the System_Cpu_Nice
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *System_Cpu_Nice) GetInstant() uint8 {
	if t == nil || t.Instant == nil {
		return 0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the System_Cpu_Nice
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *System_Cpu_Nice) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the System_Cpu_Nice
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *System_Cpu_Nice) GetMax() uint8 {
	if t == nil || t.Max == nil {
		return 0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the System_Cpu_Nice
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *System_Cpu_Nice) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the System_Cpu_Nice
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *System_Cpu_Nice) GetMin() uint8 {
	if t == nil || t.Min == nil {
		return 0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the System_Cpu_Nice
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *System_Cpu_Nice) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the System_Cpu_Nice
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Cpu_Nice) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu_Nice) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Cpu_Nice"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu_Nice) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Cpu_Nice) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Cpu_Nice.
func (*System_Cpu_Nice) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Cpu_SoftwareInterrupt represents the /openconfig-system/system/cpus/cpu/state/software-interrupt YANG schema element.
type System_Cpu_SoftwareInterrupt struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *uint8            `path:"avg" module:"openconfig-system"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *uint8            `path:"instant" module:"openconfig-system"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-system"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *uint8            `path:"max" module:"openconfig-system"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-system"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *uint8            `path:"min" module:"openconfig-system"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-system"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Cpu_SoftwareInterrupt implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Cpu_SoftwareInterrupt) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the System_Cpu_SoftwareInterrupt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *System_Cpu_SoftwareInterrupt) GetAvg() uint8 {
	if t == nil || t.Avg == nil {
		return 0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the System_Cpu_SoftwareInterrupt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *System_Cpu_SoftwareInterrupt) GetInstant() uint8 {
	if t == nil || t.Instant == nil {
		return 0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the System_Cpu_SoftwareInterrupt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *System_Cpu_SoftwareInterrupt) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the System_Cpu_SoftwareInterrupt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *System_Cpu_SoftwareInterrupt) GetMax() uint8 {
	if t == nil || t.Max == nil {
		return 0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the System_Cpu_SoftwareInterrupt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *System_Cpu_SoftwareInterrupt) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the System_Cpu_SoftwareInterrupt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *System_Cpu_SoftwareInterrupt) GetMin() uint8 {
	if t == nil || t.Min == nil {
		return 0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the System_Cpu_SoftwareInterrupt
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *System_Cpu_SoftwareInterrupt) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the System_Cpu_SoftwareInterrupt
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Cpu_SoftwareInterrupt) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu_SoftwareInterrupt) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Cpu_SoftwareInterrupt"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu_SoftwareInterrupt) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Cpu_SoftwareInterrupt) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Cpu_SoftwareInterrupt.
func (*System_Cpu_SoftwareInterrupt) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Cpu_Total represents the /openconfig-system/system/cpus/cpu/state/total YANG schema element.
type System_Cpu_Total struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *uint8            `path:"avg" module:"openconfig-system"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *uint8            `path:"instant" module:"openconfig-system"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-system"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *uint8            `path:"max" module:"openconfig-system"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-system"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *uint8            `path:"min" module:"openconfig-system"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-system"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Cpu_Total implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Cpu_Total) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the System_Cpu_Total
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *System_Cpu_Total) GetAvg() uint8 {
	if t == nil || t.Avg == nil {
		return 0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the System_Cpu_Total
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *System_Cpu_Total) GetInstant() uint8 {
	if t == nil || t.Instant == nil {
		return 0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the System_Cpu_Total
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *System_Cpu_Total) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the System_Cpu_Total
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *System_Cpu_Total) GetMax() uint8 {
	if t == nil || t.Max == nil {
		return 0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the System_Cpu_Total
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *System_Cpu_Total) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the System_Cpu_Total
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *System_Cpu_Total) GetMin() uint8 {
	if t == nil || t.Min == nil {
		return 0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the System_Cpu_Total
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *System_Cpu_Total) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the System_Cpu_Total
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Cpu_Total) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu_Total) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Cpu_Total"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu_Total) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Cpu_Total) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Cpu_Total.
func (*System_Cpu_Total) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Cpu_User represents the /openconfig-system/system/cpus/cpu/state/user YANG schema element.
type System_Cpu_User struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *uint8            `path:"avg" module:"openconfig-system"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *uint8            `path:"instant" module:"openconfig-system"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-system"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *uint8            `path:"max" module:"openconfig-system"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-system"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *uint8            `path:"min" module:"openconfig-system"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-system"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Cpu_User implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Cpu_User) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the System_Cpu_User
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *System_Cpu_User) GetAvg() uint8 {
	if t == nil || t.Avg == nil {
		return 0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the System_Cpu_User
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *System_Cpu_User) GetInstant() uint8 {
	if t == nil || t.Instant == nil {
		return 0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the System_Cpu_User
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *System_Cpu_User) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the System_Cpu_User
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *System_Cpu_User) GetMax() uint8 {
	if t == nil || t.Max == nil {
		return 0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the System_Cpu_User
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *System_Cpu_User) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the System_Cpu_User
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *System_Cpu_User) GetMin() uint8 {
	if t == nil || t.Min == nil {
		return 0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the System_Cpu_User
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *System_Cpu_User) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the System_Cpu_User
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Cpu_User) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu_User) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Cpu_User"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu_User) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Cpu_User) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Cpu_User.
func (*System_Cpu_User) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Cpu_Wait represents the /openconfig-system/system/cpus/cpu/state/wait YANG schema element.
type System_Cpu_Wait struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *uint8            `path:"avg" module:"openconfig-system"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *uint8            `path:"instant" module:"openconfig-system"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-system"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *uint8            `path:"max" module:"openconfig-system"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-system"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *uint8            `path:"min" module:"openconfig-system"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-system"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Cpu_Wait implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Cpu_Wait) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the System_Cpu_Wait
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *System_Cpu_Wait) GetAvg() uint8 {
	if t == nil || t.Avg == nil {
		return 0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the System_Cpu_Wait
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *System_Cpu_Wait) GetInstant() uint8 {
	if t == nil || t.Instant == nil {
		return 0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the System_Cpu_Wait
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *System_Cpu_Wait) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the System_Cpu_Wait
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *System_Cpu_Wait) GetMax() uint8 {
	if t == nil || t.Max == nil {
		return 0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the System_Cpu_Wait
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *System_Cpu_Wait) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the System_Cpu_Wait
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *System_Cpu_Wait) GetMin() uint8 {
	if t == nil || t.Min == nil {
		return 0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the System_Cpu_Wait
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *System_Cpu_Wait) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the System_Cpu_Wait
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Cpu_Wait) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu_Wait) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Cpu_Wait"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Cpu_Wait) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Cpu_Wait) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Cpu_Wait.
func (*System_Cpu_Wait) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Dns represents the /openconfig-system/system/dns YANG schema element.
type System_Dns struct {
	ΛMetadata  []ygot.Annotation                `path:"@" ygotAnnotation:"true"`
	HostEntry  map[string]*System_Dns_HostEntry `path:"host-entries/host-entry" module:"openconfig-system/openconfig-system"`
	ΛHostEntry []ygot.Annotation                `path:"host-entries/@host-entry" ygotAnnotation:"true"`
	Search     []string                         `path:"config/search" module:"openconfig-system/openconfig-system"`
	ΛSearch    []ygot.Annotation                `path:"config/@search" ygotAnnotation:"true"`
	Server     *System_Dns_Server_OrderedMap    `path:"servers/server" module:"openconfig-system/openconfig-system"`
	ΛServer    []ygot.Annotation                `path:"servers/@server" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Dns implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Dns) IsYANGGoStruct() {}

// NewHostEntry creates a new entry in the HostEntry list of the
// System_Dns struct. The keys of the list are populated from the input
// arguments.
func (t *System_Dns) NewHostEntry(Hostname string) (*System_Dns_HostEntry, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.HostEntry == nil {
		t.HostEntry = make(map[string]*System_Dns_HostEntry)
	}

	key := Hostname

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.HostEntry[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list HostEntry", key)
	}

	t.HostEntry[key] = &System_Dns_HostEntry{
		Hostname: &Hostname,
	}

	return t.HostEntry[key], nil
}

// RenameHostEntry renames an entry in the list HostEntry within
// the System_Dns struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System_Dns) RenameHostEntry(oldK, newK string) error {
	if _, ok := t.HostEntry[newK]; ok {
		return fmt.Errorf("key %v already exists in HostEntry", newK)
	}

	e, ok := t.HostEntry[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in HostEntry", oldK)
	}
	e.Hostname = &newK

	t.HostEntry[newK] = e
	delete(t.HostEntry, oldK)
	return nil
}

// GetOrCreateHostEntryMap returns the list (map) from System_Dns.
//
// It initializes the field if not already initialized.
func (t *System_Dns) GetOrCreateHostEntryMap() map[string]*System_Dns_HostEntry {
	if t.HostEntry == nil {
		t.HostEntry = make(map[string]*System_Dns_HostEntry)
	}
	return t.HostEntry
}

// GetOrCreateHostEntry retrieves the value with the specified keys from
// the receiver System_Dns. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System_Dns) GetOrCreateHostEntry(Hostname string) *System_Dns_HostEntry {

	key := Hostname

	if v, ok := t.HostEntry[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewHostEntry(Hostname)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateHostEntry got unexpected error: %v", err))
	}
	return v
}

// GetHostEntry retrieves the value with the specified key from
// the HostEntry map field of System_Dns. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System_Dns) GetHostEntry(Hostname string) *System_Dns_HostEntry {

	if t == nil {
		return nil
	}

	key := Hostname

	if lm, ok := t.HostEntry[key]; ok {
		return lm
	}
	return nil
}

// AppendHostEntry appends the supplied System_Dns_HostEntry struct to the
// list HostEntry of System_Dns. If the key value(s) specified in
// the supplied System_Dns_HostEntry already exist in the list, an error is
// returned.
func (t *System_Dns) AppendHostEntry(v *System_Dns_HostEntry) error {
	if v.Hostname == nil {
		return fmt.Errorf("invalid nil key received for Hostname")
	}

	key := *v.Hostname

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.HostEntry == nil {
		t.HostEntry = make(map[string]*System_Dns_HostEntry)
	}

	if _, ok := t.HostEntry[key]; ok {
		return fmt.Errorf("duplicate key for list HostEntry %v", key)
	}

	t.HostEntry[key] = v
	return nil
}

// GetSearch retrieves the value of the leaf Search from the System_Dns
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Search is set, it can
// safely use t.GetSearch() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Search == nil' before retrieving the leaf's value.
func (t *System_Dns) GetSearch() []string {
	if t == nil || t.Search == nil {
		return nil
	}
	return t.Search
}

// GetOrCreateServerMap returns the ordered map field
// Server from System_Dns.
//
// It initializes the field if not already initialized.
func (s *System_Dns) GetOrCreateServerMap() *System_Dns_Server_OrderedMap {
	if s.Server == nil {
		s.Server = &System_Dns_Server_OrderedMap{}
	}
	return s.Server
}

// AppendNewServer creates a new entry in the Server
// ordered map of the System_Dns struct. The keys of the list are
// populated from the input arguments.
func (s *System_Dns) AppendNewServer(Address string) (*System_Dns_Server, error) {
	if s.Server == nil {
		s.Server = &System_Dns_Server_OrderedMap{}
	}
	return s.Server.AppendNew(Address)
}

// AppendServer appends the supplied System_Dns_Server struct
// to the list Server of System_Dns. If the key value(s)
// specified in the supplied System_Dns_Server already exist in the list, an
// error is returned.
func (s *System_Dns) AppendServer(v *System_Dns_Server) error {
	if s.Server == nil {
		s.Server = &System_Dns_Server_OrderedMap{}
	}
	return s.Server.Append(v)
}

// GetServer retrieves the value with the specified key from the
// Server map field of System_Dns. If the receiver
// is nil, or the specified key is not present in the list, nil is returned
// such that Get* methods may be safely chained.
func (s *System_Dns) GetServer(Address string) *System_Dns_Server {
	if s == nil {
		return nil
	}
	key := Address
	return s.Server.Get(key)
}

// DeleteServer deletes the value with the specified keys from
// the receiver System_Dns. If there is no such element, the
// function is a no-op.
func (s *System_Dns) DeleteServer(Address string) bool {
	key := Address
	return s.Server.Delete(key)
}

// System_Dns_Server_OrderedMap is an ordered map that represents the "ordered-by user"
// list elements at /openconfig-system/system/dns/servers/server.
type System_Dns_Server_OrderedMap struct {
	keys     []string
	valueMap map[string]*System_Dns_Server
}

// IsYANGOrderedList ensures that System_Dns_Server_OrderedMap implements the
// ygot.GoOrderedMap interface.
func (*System_Dns_Server_OrderedMap) IsYANGOrderedList() {}

// init initializes any uninitialized values.
func (o *System_Dns_Server_OrderedMap) init() {
	if o == nil {
		return
	}
	if o.valueMap == nil {
		o.valueMap = map[string]*System_Dns_Server{}
	}
}

// Keys returns a copy of the list's keys.
func (o *System_Dns_Server_OrderedMap) Keys() []string {
	if o == nil {
		return nil
	}
	return append([]string{}, o.keys...)
}

// Values returns the current set of the list's values in order.
func (o *System_Dns_Server_OrderedMap) Values() []*System_Dns_Server {
	if o == nil {
		return nil
	}
	var values []*System_Dns_Server
	for _, key := range o.keys {
		values = append(values, o.valueMap[key])
	}
	return values
}

// Len returns a size of System_Dns_Server_OrderedMap
func (o *System_Dns_Server_OrderedMap) Len() int {
	if o == nil {
		return 0
	}
	return len(o.keys)
}

// Get returns the value corresponding to the key. If the key is not found, nil
// is returned.
func (o *System_Dns_Server_OrderedMap) Get(key string) *System_Dns_Server {
	if o == nil {
		return nil
	}
	val, _ := o.valueMap[key]
	return val
}

// Delete deletes an element.
func (o *System_Dns_Server_OrderedMap) Delete(key string) bool {
	if o == nil {
		return false
	}
	if _, ok := o.valueMap[key]; !ok {
		return false
	}
	for i, k := range o.keys {
		if k == key {
			o.keys = append(o.keys[:i], o.keys[i+1:]...)
			delete(o.valueMap, key)
			return true
		}
	}
	return false
}

// Append appends a System_Dns_Server, returning an error if the key
// already exists in the ordered list or if the key is unspecified.
func (o *System_Dns_Server_OrderedMap) Append(v *System_Dns_Server) error {
	if o == nil {
		return fmt.Errorf("nil ordered map, cannot append System_Dns_Server")
	}
	if v == nil {
		return fmt.Errorf("nil System_Dns_Server")
	}
	if v.Address == nil {
		return fmt.Errorf("invalid nil key received for Address")
	}

	key := *v.Address

	if _, ok := o.valueMap[key]; ok {
		return fmt.Errorf("duplicate key for list Statement %v", key)
	}
	o.keys = append(o.keys, key)
	o.init()
	o.valueMap[key] = v
	return nil
}

// AppendNew creates and appends a new System_Dns_Server, returning the
// newly-initialized v. It returns an error if the v already exists.
func (o *System_Dns_Server_OrderedMap) AppendNew(Address string) (*System_Dns_Server, error) {
	if o == nil {
		return nil, fmt.Errorf("nil ordered map, cannot append System_Dns_Server")
	}
	key := Address

	if _, ok := o.valueMap[key]; ok {
		return nil, fmt.Errorf("duplicate key for list Statement %v", key)
	}
	o.keys = append(o.keys, key)
	newElement := &System_Dns_Server{
		Address: &Address,
	}
	o.init()
	o.valueMap[key] = newElement
	return newElement, nil
}

// PopulateDefaults recursively populates unset leaf fields in the System_Dns
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Dns) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.HostEntry {
		e.PopulateDefaults()
	}
	for _, e := range t.Server.Values() {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Dns) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Dns"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Dns) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Dns) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Dns.
func (*System_Dns) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Dns_HostEntry represents the /openconfig-system/system/dns/host-entries/host-entry YANG schema element.
type System_Dns_HostEntry struct {
	ΛMetadata    []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Alias        []string          `path:"config/alias" module:"openconfig-system/openconfig-system"`
	ΛAlias       []ygot.Annotation `path:"config/@alias" ygotAnnotation:"true"`
	Hostname     *string           `path:"config/hostname|hostname" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛHostname    []ygot.Annotation `path:"config/@hostname|@hostname" ygotAnnotation:"true"`
	Ipv4Address  []string          `path:"config/ipv4-address" module:"openconfig-system/openconfig-system"`
	ΛIpv4Address []ygot.Annotation `path:"config/@ipv4-address" ygotAnnotation:"true"`
	Ipv6Address  []string          `path:"config/ipv6-address" module:"openconfig-system/openconfig-system"`
	ΛIpv6Address []ygot.Annotation `path:"config/@ipv6-address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Dns_HostEntry implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Dns_HostEntry) IsYANGGoStruct() {}

// GetAlias retrieves the value of the leaf Alias from the System_Dns_HostEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Alias is set, it can
// safely use t.GetAlias() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Alias == nil' before retrieving the leaf's value.
func (t *System_Dns_HostEntry) GetAlias() []string {
	if t == nil || t.Alias == nil {
		return nil
	}
	return t.Alias
}

// GetHostname retrieves the value of the leaf Hostname from the System_Dns_HostEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Hostname is set, it can
// safely use t.GetHostname() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Hostname == nil' before retrieving the leaf's value.
func (t *System_Dns_HostEntry) GetHostname() string {
	if t == nil || t.Hostname == nil {
		return ""
	}
	return *t.Hostname
}

// GetIpv4Address retrieves the value of the leaf Ipv4Address from the System_Dns_HostEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ipv4Address is set, it can
// safely use t.GetIpv4Address() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ipv4Address == nil' before retrieving the leaf's value.
func (t *System_Dns_HostEntry) GetIpv4Address() []string {
	if t == nil || t.Ipv4Address == nil {
		return nil
	}
	return t.Ipv4Address
}

// GetIpv6Address retrieves the value of the leaf Ipv6Address from the System_Dns_HostEntry
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ipv6Address is set, it can
// safely use t.GetIpv6Address() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ipv6Address == nil' before retrieving the leaf's value.
func (t *System_Dns_HostEntry) GetIpv6Address() []string {
	if t == nil || t.Ipv6Address == nil {
		return nil
	}
	return t.Ipv6Address
}

// PopulateDefaults recursively populates unset leaf fields in the System_Dns_HostEntry
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Dns_HostEntry) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the System_Dns_HostEntry struct, which is a YANG list entry.
func (t *System_Dns_HostEntry) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Hostname == nil {
		return nil, fmt.Errorf("nil value for key Hostname")
	}

	return map[string]interface{}{
		"hostname": *t.Hostname,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Dns_HostEntry) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Dns_HostEntry"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Dns_HostEntry) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Dns_HostEntry) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Dns_HostEntry.
func (*System_Dns_HostEntry) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Dns_Server represents the /openconfig-system/system/dns/servers/server YANG schema element.
type System_Dns_Server struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Address   *string           `path:"config/address|address" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛAddress  []ygot.Annotation `path:"config/@address|@address" ygotAnnotation:"true"`
	Port      *uint16           `path:"config/port" module:"openconfig-system/openconfig-system"`
	ΛPort     []ygot.Annotation `path:"config/@port" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Dns_Server implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Dns_Server) IsYANGGoStruct() {}

// GetAddress retrieves the value of the leaf Address from the System_Dns_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *System_Dns_Server) GetAddress() string {
	if t == nil || t.Address == nil {
		return ""
	}
	return *t.Address
}

// GetPort retrieves the value of the leaf Port from the System_Dns_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Port is set, it can
// safely use t.GetPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Port == nil' before retrieving the leaf's value.
func (t *System_Dns_Server) GetPort() uint16 {
	if t == nil || t.Port == nil {
		return 53
	}
	return *t.Port
}

// PopulateDefaults recursively populates unset leaf fields in the System_Dns_Server
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Dns_Server) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Port == nil {
		var v uint16 = 53
		t.Port = &v
	}
}

// ΛListKeyMap returns the keys of the System_Dns_Server struct, which is a YANG list entry.
func (t *System_Dns_Server) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Address == nil {
		return nil, fmt.Errorf("nil value for key Address")
	}

	return map[string]interface{}{
		"address": *t.Address,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Dns_Server) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Dns_Server"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Dns_Server) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Dns_Server) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Dns_Server.
func (*System_Dns_Server) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_License represents the /openconfig-system/system/license YANG schema element.
type System_License struct {
	ΛMetadata []ygot.Annotation                  `path:"@" ygotAnnotation:"true"`
	License   map[string]*System_License_License `path:"licenses/license" module:"openconfig-system/openconfig-system"`
	ΛLicense  []ygot.Annotation                  `path:"licenses/@license" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_License implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_License) IsYANGGoStruct() {}

// NewLicense creates a new entry in the License list of the
// System_License struct. The keys of the list are populated from the input
// arguments.
func (t *System_License) NewLicense(LicenseId string) (*System_License_License, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.License == nil {
		t.License = make(map[string]*System_License_License)
	}

	key := LicenseId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.License[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list License", key)
	}

	t.License[key] = &System_License_License{
		LicenseId: &LicenseId,
	}

	return t.License[key], nil
}

// RenameLicense renames an entry in the list License within
// the System_License struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System_License) RenameLicense(oldK, newK string) error {
	if _, ok := t.License[newK]; ok {
		return fmt.Errorf("key %v already exists in License", newK)
	}

	e, ok := t.License[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in License", oldK)
	}
	e.LicenseId = &newK

	t.License[newK] = e
	delete(t.License, oldK)
	return nil
}

// GetOrCreateLicenseMap returns the list (map) from System_License.
//
// It initializes the field if not already initialized.
func (t *System_License) GetOrCreateLicenseMap() map[string]*System_License_License {
	if t.License == nil {
		t.License = make(map[string]*System_License_License)
	}
	return t.License
}

// GetOrCreateLicense retrieves the value with the specified keys from
// the receiver System_License. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System_License) GetOrCreateLicense(LicenseId string) *System_License_License {

	key := LicenseId

	if v, ok := t.License[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewLicense(LicenseId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateLicense got unexpected error: %v", err))
	}
	return v
}

// GetLicense retrieves the value with the specified key from
// the License map field of System_License. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System_License) GetLicense(LicenseId string) *System_License_License {

	if t == nil {
		return nil
	}

	key := LicenseId

	if lm, ok := t.License[key]; ok {
		return lm
	}
	return nil
}

// AppendLicense appends the supplied System_License_License struct to the
// list License of System_License. If the key value(s) specified in
// the supplied System_License_License already exist in the list, an error is
// returned.
func (t *System_License) AppendLicense(v *System_License_License) error {
	if v.LicenseId == nil {
		return fmt.Errorf("invalid nil key received for LicenseId")
	}

	key := *v.LicenseId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.License == nil {
		t.License = make(map[string]*System_License_License)
	}

	if _, ok := t.License[key]; ok {
		return fmt.Errorf("duplicate key for list License %v", key)
	}

	t.License[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the System_License
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_License) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.License {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_License) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_License"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_License) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_License) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_License.
func (*System_License) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_License_License represents the /openconfig-system/system/license/licenses/license YANG schema element.
type System_License_License struct {
	ΛMetadata       []ygot.Annotation                        `path:"@" ygotAnnotation:"true"`
	Active          *bool                                    `path:"config/active" module:"openconfig-system/openconfig-system"`
	ΛActive         []ygot.Annotation                        `path:"config/@active" ygotAnnotation:"true"`
	Description     *string                                  `path:"state/description" module:"openconfig-system/openconfig-system"`
	ΛDescription    []ygot.Annotation                        `path:"state/@description" ygotAnnotation:"true"`
	ExpirationDate  *uint64                                  `path:"state/expiration-date" module:"openconfig-system/openconfig-system"`
	ΛExpirationDate []ygot.Annotation                        `path:"state/@expiration-date" ygotAnnotation:"true"`
	Expired         *bool                                    `path:"state/expired" module:"openconfig-system/openconfig-system"`
	ΛExpired        []ygot.Annotation                        `path:"state/@expired" ygotAnnotation:"true"`
	InUse           *bool                                    `path:"state/in-use" module:"openconfig-system/openconfig-system"`
	ΛInUse          []ygot.Annotation                        `path:"state/@in-use" ygotAnnotation:"true"`
	IssueDate       *uint64                                  `path:"state/issue-date" module:"openconfig-system/openconfig-system"`
	ΛIssueDate      []ygot.Annotation                        `path:"state/@issue-date" ygotAnnotation:"true"`
	LicenseData     System_License_License_LicenseData_Union `path:"config/license-data" module:"openconfig-system/openconfig-system"`
	ΛLicenseData    []ygot.Annotation                        `path:"config/@license-data" ygotAnnotation:"true"`
	LicenseId       *string                                  `path:"config/license-id|license-id" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛLicenseId      []ygot.Annotation                        `path:"config/@license-id|@license-id" ygotAnnotation:"true"`
	Valid           *bool                                    `path:"state/valid" module:"openconfig-system/openconfig-system"`
	ΛValid          []ygot.Annotation                        `path:"state/@valid" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_License_License implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_License_License) IsYANGGoStruct() {}

// GetActive retrieves the value of the leaf Active from the System_License_License
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Active is set, it can
// safely use t.GetActive() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Active == nil' before retrieving the leaf's value.
func (t *System_License_License) GetActive() bool {
	if t == nil || t.Active == nil {
		return false
	}
	return *t.Active
}

// GetDescription retrieves the value of the leaf Description from the System_License_License
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *System_License_License) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetExpirationDate retrieves the value of the leaf ExpirationDate from the System_License_License
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ExpirationDate is set, it can
// safely use t.GetExpirationDate() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ExpirationDate == nil' before retrieving the leaf's value.
func (t *System_License_License) GetExpirationDate() uint64 {
	if t == nil || t.ExpirationDate == nil {
		return 0
	}
	return *t.ExpirationDate
}

// GetExpired retrieves the value of the leaf Expired from the System_License_License
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Expired is set, it can
// safely use t.GetExpired() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Expired == nil' before retrieving the leaf's value.
func (t *System_License_License) GetExpired() bool {
	if t == nil || t.Expired == nil {
		return false
	}
	return *t.Expired
}

// GetInUse retrieves the value of the leaf InUse from the System_License_License
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InUse is set, it can
// safely use t.GetInUse() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InUse == nil' before retrieving the leaf's value.
func (t *System_License_License) GetInUse() bool {
	if t == nil || t.InUse == nil {
		return false
	}
	return *t.InUse
}

// GetIssueDate retrieves the value of the leaf IssueDate from the System_License_License
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if IssueDate is set, it can
// safely use t.GetIssueDate() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.IssueDate == nil' before retrieving the leaf's value.
func (t *System_License_License) GetIssueDate() uint64 {
	if t == nil || t.IssueDate == nil {
		return 0
	}
	return *t.IssueDate
}

// GetLicenseData retrieves the value of the leaf LicenseData from the System_License_License
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LicenseData is set, it can
// safely use t.GetLicenseData() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LicenseData == nil' before retrieving the leaf's value.
func (t *System_License_License) GetLicenseData() System_License_License_LicenseData_Union {
	if t == nil || t.LicenseData == nil {
		return nil
	}
	return t.LicenseData
}

// GetLicenseId retrieves the value of the leaf LicenseId from the System_License_License
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LicenseId is set, it can
// safely use t.GetLicenseId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LicenseId == nil' before retrieving the leaf's value.
func (t *System_License_License) GetLicenseId() string {
	if t == nil || t.LicenseId == nil {
		return ""
	}
	return *t.LicenseId
}

// GetValid retrieves the value of the leaf Valid from the System_License_License
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Valid is set, it can
// safely use t.GetValid() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Valid == nil' before retrieving the leaf's value.
func (t *System_License_License) GetValid() bool {
	if t == nil || t.Valid == nil {
		return false
	}
	return *t.Valid
}

// PopulateDefaults recursively populates unset leaf fields in the System_License_License
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_License_License) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Active == nil {
		var v bool = false
		t.Active = &v
	}
}

// ΛListKeyMap returns the keys of the System_License_License struct, which is a YANG list entry.
func (t *System_License_License) ΛListKeyMap() (map[string]interface{}, error) {
	if t.LicenseId == nil {
		return nil, fmt.Errorf("nil value for key LicenseId")
	}

	return map[string]interface{}{
		"license-id": *t.LicenseId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_License_License) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_License_License"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_License_License) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_License_License) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_License_License.
func (*System_License_License) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_License_License_LicenseData_Union is an interface that is implemented by valid types for the union
// for the leaf /openconfig-system/system/license/licenses/license/config/license-data within the YANG schema.
// Union type can be one of [Binary, UnionString].
type System_License_License_LicenseData_Union interface {
	// Union type can be one of [Binary, UnionString]
	Documentation_for_System_License_License_LicenseData_Union()
}

// Documentation_for_System_License_License_LicenseData_Union ensures that Binary
// implements the System_License_License_LicenseData_Union interface.
func (Binary) Documentation_for_System_License_License_LicenseData_Union() {}

// Documentation_for_System_License_License_LicenseData_Union ensures that UnionString
// implements the System_License_License_LicenseData_Union interface.
func (UnionString) Documentation_for_System_License_License_LicenseData_Union() {}

// To_System_License_License_LicenseData_Union takes an input interface{} and attempts to convert it to a struct
// which implements the System_License_License_LicenseData_Union union. It returns an error if the interface{} supplied
// cannot be converted to a type within the union.
func (t *System_License_License) To_System_License_License_LicenseData_Union(i interface{}) (System_License_License_LicenseData_Union, error) {
	if v, ok := i.(System_License_License_LicenseData_Union); ok {
		return v, nil
	}
	switch v := i.(type) {
	case []byte:
		return Binary(v), nil
	case string:
		return UnionString(v), nil
	}
	return nil, fmt.Errorf("cannot convert %v to System_License_License_LicenseData_Union, unknown union type, got: %T, want any of [Binary, string]", i, i)
}

// System_Logging represents the /openconfig-system/system/logging YANG schema element.
type System_Logging struct {
	ΛMetadata     []ygot.Annotation                                `path:"@" ygotAnnotation:"true"`
	Console       *System_Logging_Console                          `path:"console" module:"openconfig-system"`
	ΛConsole      []ygot.Annotation                                `path:"@console" ygotAnnotation:"true"`
	File          map[System_Logging_File_Key]*System_Logging_File `path:"files/file" module:"openconfig-system/openconfig-system"`
	ΛFile         []ygot.Annotation                                `path:"files/@file" ygotAnnotation:"true"`
	RemoteServer  map[string]*System_Logging_RemoteServer          `path:"remote-servers/remote-server" module:"openconfig-system/openconfig-system"`
	ΛRemoteServer []ygot.Annotation                                `path:"remote-servers/@remote-server" ygotAnnotation:"true"`
	Vty           *System_Logging_Vty                              `path:"vty" module:"openconfig-system"`
	ΛVty          []ygot.Annotation                                `path:"@vty" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Logging implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Logging) IsYANGGoStruct() {}

// System_Logging_File_Key represents the key for list File of element /openconfig-system/system/logging.
type System_Logging_File_Key struct {
	Path           string `path:"path"`
	FilenamePrefix string `path:"filename-prefix"`
}

// IsYANGGoKeyStruct ensures that System_Logging_File_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (System_Logging_File_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the System_Logging_File_Key key struct.
func (t System_Logging_File_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"path":            t.Path,
		"filename-prefix": t.FilenamePrefix,
	}, nil
}

// NewFile creates a new entry in the File list of the
// System_Logging struct. The keys of the list are populated from the input
// arguments.
func (t *System_Logging) NewFile(Path string, FilenamePrefix string) (*System_Logging_File, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.File == nil {
		t.File = make(map[System_Logging_File_Key]*System_Logging_File)
	}

	key := System_Logging_File_Key{
		Path:           Path,
		FilenamePrefix: FilenamePrefix,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.File[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list File", key)
	}

	t.File[key] = &System_Logging_File{
		Path:           &Path,
		FilenamePrefix: &FilenamePrefix,
	}

	return t.File[key], nil
}

// RenameFile renames an entry in the list File within
// the System_Logging struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System_Logging) RenameFile(oldK, newK System_Logging_File_Key) error {
	if _, ok := t.File[newK]; ok {
		return fmt.Errorf("key %v already exists in File", newK)
	}

	e, ok := t.File[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in File", oldK)
	}
	e.Path = &newK.Path
	e.FilenamePrefix = &newK.FilenamePrefix

	t.File[newK] = e
	delete(t.File, oldK)
	return nil
}

// GetOrCreateFileMap returns the list (map) from System_Logging.
//
// It initializes the field if not already initialized.
func (t *System_Logging) GetOrCreateFileMap() map[System_Logging_File_Key]*System_Logging_File {
	if t.File == nil {
		t.File = make(map[System_Logging_File_Key]*System_Logging_File)
	}
	return t.File
}

// GetOrCreateFile retrieves the value with the specified keys from
// the receiver System_Logging. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System_Logging) GetOrCreateFile(Path string, FilenamePrefix string) *System_Logging_File {

	key := System_Logging_File_Key{
		Path:           Path,
		FilenamePrefix: FilenamePrefix,
	}

	if v, ok := t.File[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewFile(Path, FilenamePrefix)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateFile got unexpected error: %v", err))
	}
	return v
}

// GetFile retrieves the value with the specified key from
// the File map field of System_Logging. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System_Logging) GetFile(Path string, FilenamePrefix string) *System_Logging_File {

	if t == nil {
		return nil
	}

	key := System_Logging_File_Key{
		Path:           Path,
		FilenamePrefix: FilenamePrefix,
	}

	if lm, ok := t.File[key]; ok {
		return lm
	}
	return nil
}

// AppendFile appends the supplied System_Logging_File struct to the
// list File of System_Logging. If the key value(s) specified in
// the supplied System_Logging_File already exist in the list, an error is
// returned.
func (t *System_Logging) AppendFile(v *System_Logging_File) error {
	if v.Path == nil {
		return fmt.Errorf("invalid nil key for Path")
	}

	if v.FilenamePrefix == nil {
		return fmt.Errorf("invalid nil key for FilenamePrefix")
	}

	key := System_Logging_File_Key{
		Path:           *v.Path,
		FilenamePrefix: *v.FilenamePrefix,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.File == nil {
		t.File = make(map[System_Logging_File_Key]*System_Logging_File)
	}

	if _, ok := t.File[key]; ok {
		return fmt.Errorf("duplicate key for list File %v", key)
	}

	t.File[key] = v
	return nil
}

// NewRemoteServer creates a new entry in the RemoteServer list of the
// System_Logging struct. The keys of the list are populated from the input
// arguments.
func (t *System_Logging) NewRemoteServer(Host string) (*System_Logging_RemoteServer, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.RemoteServer == nil {
		t.RemoteServer = make(map[string]*System_Logging_RemoteServer)
	}

	key := Host

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.RemoteServer[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list RemoteServer", key)
	}

	t.RemoteServer[key] = &System_Logging_RemoteServer{
		Host: &Host,
	}

	return t.RemoteServer[key], nil
}

// RenameRemoteServer renames an entry in the list RemoteServer within
// the System_Logging struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System_Logging) RenameRemoteServer(oldK, newK string) error {
	if _, ok := t.RemoteServer[newK]; ok {
		return fmt.Errorf("key %v already exists in RemoteServer", newK)
	}

	e, ok := t.RemoteServer[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in RemoteServer", oldK)
	}
	e.Host = &newK

	t.RemoteServer[newK] = e
	delete(t.RemoteServer, oldK)
	return nil
}

// GetOrCreateRemoteServerMap returns the list (map) from System_Logging.
//
// It initializes the field if not already initialized.
func (t *System_Logging) GetOrCreateRemoteServerMap() map[string]*System_Logging_RemoteServer {
	if t.RemoteServer == nil {
		t.RemoteServer = make(map[string]*System_Logging_RemoteServer)
	}
	return t.RemoteServer
}

// GetOrCreateRemoteServer retrieves the value with the specified keys from
// the receiver System_Logging. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System_Logging) GetOrCreateRemoteServer(Host string) *System_Logging_RemoteServer {

	key := Host

	if v, ok := t.RemoteServer[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewRemoteServer(Host)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateRemoteServer got unexpected error: %v", err))
	}
	return v
}

// GetRemoteServer retrieves the value with the specified key from
// the RemoteServer map field of System_Logging. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System_Logging) GetRemoteServer(Host string) *System_Logging_RemoteServer {

	if t == nil {
		return nil
	}

	key := Host

	if lm, ok := t.RemoteServer[key]; ok {
		return lm
	}
	return nil
}

// AppendRemoteServer appends the supplied System_Logging_RemoteServer struct to the
// list RemoteServer of System_Logging. If the key value(s) specified in
// the supplied System_Logging_RemoteServer already exist in the list, an error is
// returned.
func (t *System_Logging) AppendRemoteServer(v *System_Logging_RemoteServer) error {
	if v.Host == nil {
		return fmt.Errorf("invalid nil key received for Host")
	}

	key := *v.Host

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.RemoteServer == nil {
		t.RemoteServer = make(map[string]*System_Logging_RemoteServer)
	}

	if _, ok := t.RemoteServer[key]; ok {
		return fmt.Errorf("duplicate key for list RemoteServer %v", key)
	}

	t.RemoteServer[key] = v
	return nil
}

// GetOrCreateConsole retrieves the value of the Console field
// or returns the existing field if it already exists.
func (t *System_Logging) GetOrCreateConsole() *System_Logging_Console {
	if t.Console != nil {
		return t.Console
	}
	t.Console = &System_Logging_Console{}
	return t.Console
}

// GetOrCreateVty retrieves the value of the Vty field
// or returns the existing field if it already exists.
func (t *System_Logging) GetOrCreateVty() *System_Logging_Vty {
	if t.Vty != nil {
		return t.Vty
	}
	t.Vty = &System_Logging_Vty{}
	return t.Vty
}

// GetConsole returns the value of the Console struct pointer
// from System_Logging. If the receiver or the field Console is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Logging) GetConsole() *System_Logging_Console {
	if t != nil && t.Console != nil {
		return t.Console
	}
	return nil
}

// GetVty returns the value of the Vty struct pointer
// from System_Logging. If the receiver or the field Vty is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Logging) GetVty() *System_Logging_Vty {
	if t != nil && t.Vty != nil {
		return t.Vty
	}
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the System_Logging
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Logging) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Console.PopulateDefaults()
	t.Vty.PopulateDefaults()
	for _, e := range t.File {
		e.PopulateDefaults()
	}
	for _, e := range t.RemoteServer {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Logging"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Logging) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Logging.
func (*System_Logging) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Logging_Console represents the /openconfig-system/system/logging/console YANG schema element.
type System_Logging_Console struct {
	ΛMetadata []ygot.Annotation                                                        `path:"@" ygotAnnotation:"true"`
	Selector  map[System_Logging_Console_Selector_Key]*System_Logging_Console_Selector `path:"selectors/selector" module:"openconfig-system/openconfig-system"`
	ΛSelector []ygot.Annotation                                                        `path:"selectors/@selector" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Logging_Console implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Logging_Console) IsYANGGoStruct() {}

// System_Logging_Console_Selector_Key represents the key for list Selector of element /openconfig-system/system/logging/console.
type System_Logging_Console_Selector_Key struct {
	Facility E_SystemLogging_SYSLOG_FACILITY `path:"facility"`
	Severity E_SystemLogging_SyslogSeverity  `path:"severity"`
}

// IsYANGGoKeyStruct ensures that System_Logging_Console_Selector_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (System_Logging_Console_Selector_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the System_Logging_Console_Selector_Key key struct.
func (t System_Logging_Console_Selector_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"facility": t.Facility,
		"severity": t.Severity,
	}, nil
}

// NewSelector creates a new entry in the Selector list of the
// System_Logging_Console struct. The keys of the list are populated from the input
// arguments.
func (t *System_Logging_Console) NewSelector(Facility E_SystemLogging_SYSLOG_FACILITY, Severity E_SystemLogging_SyslogSeverity) (*System_Logging_Console_Selector, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Selector == nil {
		t.Selector = make(map[System_Logging_Console_Selector_Key]*System_Logging_Console_Selector)
	}

	key := System_Logging_Console_Selector_Key{
		Facility: Facility,
		Severity: Severity,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Selector[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Selector", key)
	}

	t.Selector[key] = &System_Logging_Console_Selector{
		Facility: Facility,
		Severity: Severity,
	}

	return t.Selector[key], nil
}

// RenameSelector renames an entry in the list Selector within
// the System_Logging_Console struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System_Logging_Console) RenameSelector(oldK, newK System_Logging_Console_Selector_Key) error {
	if _, ok := t.Selector[newK]; ok {
		return fmt.Errorf("key %v already exists in Selector", newK)
	}

	e, ok := t.Selector[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Selector", oldK)
	}
	e.Facility = newK.Facility
	e.Severity = newK.Severity

	t.Selector[newK] = e
	delete(t.Selector, oldK)
	return nil
}

// GetOrCreateSelectorMap returns the list (map) from System_Logging_Console.
//
// It initializes the field if not already initialized.
func (t *System_Logging_Console) GetOrCreateSelectorMap() map[System_Logging_Console_Selector_Key]*System_Logging_Console_Selector {
	if t.Selector == nil {
		t.Selector = make(map[System_Logging_Console_Selector_Key]*System_Logging_Console_Selector)
	}
	return t.Selector
}

// GetOrCreateSelector retrieves the value with the specified keys from
// the receiver System_Logging_Console. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System_Logging_Console) GetOrCreateSelector(Facility E_SystemLogging_SYSLOG_FACILITY, Severity E_SystemLogging_SyslogSeverity) *System_Logging_Console_Selector {

	key := System_Logging_Console_Selector_Key{
		Facility: Facility,
		Severity: Severity,
	}

	if v, ok := t.Selector[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSelector(Facility, Severity)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSelector got unexpected error: %v", err))
	}
	return v
}

// GetSelector retrieves the value with the specified key from
// the Selector map field of System_Logging_Console. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System_Logging_Console) GetSelector(Facility E_SystemLogging_SYSLOG_FACILITY, Severity E_SystemLogging_SyslogSeverity) *System_Logging_Console_Selector {

	if t == nil {
		return nil
	}

	key := System_Logging_Console_Selector_Key{
		Facility: Facility,
		Severity: Severity,
	}

	if lm, ok := t.Selector[key]; ok {
		return lm
	}
	return nil
}

// AppendSelector appends the supplied System_Logging_Console_Selector struct to the
// list Selector of System_Logging_Console. If the key value(s) specified in
// the supplied System_Logging_Console_Selector already exist in the list, an error is
// returned.
func (t *System_Logging_Console) AppendSelector(v *System_Logging_Console_Selector) error {
	key := System_Logging_Console_Selector_Key{
		Facility: v.Facility,
		Severity: v.Severity,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Selector == nil {
		t.Selector = make(map[System_Logging_Console_Selector_Key]*System_Logging_Console_Selector)
	}

	if _, ok := t.Selector[key]; ok {
		return fmt.Errorf("duplicate key for list Selector %v", key)
	}

	t.Selector[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the System_Logging_Console
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Logging_Console) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Selector {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging_Console) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Logging_Console"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging_Console) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Logging_Console) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Logging_Console.
func (*System_Logging_Console) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Logging_Console_Selector represents the /openconfig-system/system/logging/console/selectors/selector YANG schema element.
type System_Logging_Console_Selector struct {
	ΛMetadata []ygot.Annotation               `path:"@" ygotAnnotation:"true"`
	Facility  E_SystemLogging_SYSLOG_FACILITY `path:"config/facility|facility" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛFacility []ygot.Annotation               `path:"config/@facility|@facility" ygotAnnotation:"true"`
	Severity  E_SystemLogging_SyslogSeverity  `path:"config/severity|severity" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛSeverity []ygot.Annotation               `path:"config/@severity|@severity" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Logging_Console_Selector implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Logging_Console_Selector) IsYANGGoStruct() {}

// GetFacility retrieves the value of the leaf Facility from the System_Logging_Console_Selector
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Facility is set, it can
// safely use t.GetFacility() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Facility == nil' before retrieving the leaf's value.
func (t *System_Logging_Console_Selector) GetFacility() E_SystemLogging_SYSLOG_FACILITY {
	if t == nil || t.Facility == 0 {
		return 0
	}
	return t.Facility
}

// GetSeverity retrieves the value of the leaf Severity from the System_Logging_Console_Selector
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Severity is set, it can
// safely use t.GetSeverity() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Severity == nil' before retrieving the leaf's value.
func (t *System_Logging_Console_Selector) GetSeverity() E_SystemLogging_SyslogSeverity {
	if t == nil || t.Severity == 0 {
		return 0
	}
	return t.Severity
}

// PopulateDefaults recursively populates unset leaf fields in the System_Logging_Console_Selector
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Logging_Console_Selector) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the System_Logging_Console_Selector struct, which is a YANG list entry.
func (t *System_Logging_Console_Selector) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"facility": t.Facility,
		"severity": t.Severity,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging_Console_Selector) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Logging_Console_Selector"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging_Console_Selector) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Logging_Console_Selector) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Logging_Console_Selector.
func (*System_Logging_Console_Selector) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Logging_File represents the /openconfig-system/system/logging/files/file YANG schema element.
type System_Logging_File struct {
	ΛMetadata       []ygot.Annotation                                                  `path:"@" ygotAnnotation:"true"`
	FilenamePrefix  *string                                                            `path:"config/filename-prefix|filename-prefix" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛFilenamePrefix []ygot.Annotation                                                  `path:"config/@filename-prefix|@filename-prefix" ygotAnnotation:"true"`
	MaxOpenTime     *uint32                                                            `path:"config/max-open-time" module:"openconfig-system/openconfig-system"`
	ΛMaxOpenTime    []ygot.Annotation                                                  `path:"config/@max-open-time" ygotAnnotation:"true"`
	MaxSize         *uint32                                                            `path:"config/max-size" module:"openconfig-system/openconfig-system"`
	ΛMaxSize        []ygot.Annotation                                                  `path:"config/@max-size" ygotAnnotation:"true"`
	OpenLogfile     *string                                                            `path:"state/open-logfile" module:"openconfig-system/openconfig-system"`
	ΛOpenLogfile    []ygot.Annotation                                                  `path:"state/@open-logfile" ygotAnnotation:"true"`
	Path            *string                                                            `path:"config/path|path" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛPath           []ygot.Annotation                                                  `path:"config/@path|@path" ygotAnnotation:"true"`
	Rotate          *uint32                                                            `path:"config/rotate" module:"openconfig-system/openconfig-system"`
	ΛRotate         []ygot.Annotation                                                  `path:"config/@rotate" ygotAnnotation:"true"`
	Selector        map[System_Logging_File_Selector_Key]*System_Logging_File_Selector `path:"selectors/selector" module:"openconfig-system/openconfig-system"`
	ΛSelector       []ygot.Annotation                                                  `path:"selectors/@selector" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Logging_File implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Logging_File) IsYANGGoStruct() {}

// System_Logging_File_Selector_Key represents the key for list Selector of element /openconfig-system/system/logging/files/file.
type System_Logging_File_Selector_Key struct {
	Facility E_SystemLogging_SYSLOG_FACILITY `path:"facility"`
	Severity E_SystemLogging_SyslogSeverity  `path:"severity"`
}

// IsYANGGoKeyStruct ensures that System_Logging_File_Selector_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (System_Logging_File_Selector_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the System_Logging_File_Selector_Key key struct.
func (t System_Logging_File_Selector_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"facility": t.Facility,
		"severity": t.Severity,
	}, nil
}

// NewSelector creates a new entry in the Selector list of the
// System_Logging_File struct. The keys of the list are populated from the input
// arguments.
func (t *System_Logging_File) NewSelector(Facility E_SystemLogging_SYSLOG_FACILITY, Severity E_SystemLogging_SyslogSeverity) (*System_Logging_File_Selector, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Selector == nil {
		t.Selector = make(map[System_Logging_File_Selector_Key]*System_Logging_File_Selector)
	}

	key := System_Logging_File_Selector_Key{
		Facility: Facility,
		Severity: Severity,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Selector[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Selector", key)
	}

	t.Selector[key] = &System_Logging_File_Selector{
		Facility: Facility,
		Severity: Severity,
	}

	return t.Selector[key], nil
}

// RenameSelector renames an entry in the list Selector within
// the System_Logging_File struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System_Logging_File) RenameSelector(oldK, newK System_Logging_File_Selector_Key) error {
	if _, ok := t.Selector[newK]; ok {
		return fmt.Errorf("key %v already exists in Selector", newK)
	}

	e, ok := t.Selector[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Selector", oldK)
	}
	e.Facility = newK.Facility
	e.Severity = newK.Severity

	t.Selector[newK] = e
	delete(t.Selector, oldK)
	return nil
}

// GetOrCreateSelectorMap returns the list (map) from System_Logging_File.
//
// It initializes the field if not already initialized.
func (t *System_Logging_File) GetOrCreateSelectorMap() map[System_Logging_File_Selector_Key]*System_Logging_File_Selector {
	if t.Selector == nil {
		t.Selector = make(map[System_Logging_File_Selector_Key]*System_Logging_File_Selector)
	}
	return t.Selector
}

// GetOrCreateSelector retrieves the value with the specified keys from
// the receiver System_Logging_File. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System_Logging_File) GetOrCreateSelector(Facility E_SystemLogging_SYSLOG_FACILITY, Severity E_SystemLogging_SyslogSeverity) *System_Logging_File_Selector {

	key := System_Logging_File_Selector_Key{
		Facility: Facility,
		Severity: Severity,
	}

	if v, ok := t.Selector[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSelector(Facility, Severity)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSelector got unexpected error: %v", err))
	}
	return v
}

// GetSelector retrieves the value with the specified key from
// the Selector map field of System_Logging_File. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System_Logging_File) GetSelector(Facility E_SystemLogging_SYSLOG_FACILITY, Severity E_SystemLogging_SyslogSeverity) *System_Logging_File_Selector {

	if t == nil {
		return nil
	}

	key := System_Logging_File_Selector_Key{
		Facility: Facility,
		Severity: Severity,
	}

	if lm, ok := t.Selector[key]; ok {
		return lm
	}
	return nil
}

// AppendSelector appends the supplied System_Logging_File_Selector struct to the
// list Selector of System_Logging_File. If the key value(s) specified in
// the supplied System_Logging_File_Selector already exist in the list, an error is
// returned.
func (t *System_Logging_File) AppendSelector(v *System_Logging_File_Selector) error {
	key := System_Logging_File_Selector_Key{
		Facility: v.Facility,
		Severity: v.Severity,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Selector == nil {
		t.Selector = make(map[System_Logging_File_Selector_Key]*System_Logging_File_Selector)
	}

	if _, ok := t.Selector[key]; ok {
		return fmt.Errorf("duplicate key for list Selector %v", key)
	}

	t.Selector[key] = v
	return nil
}

// GetFilenamePrefix retrieves the value of the leaf FilenamePrefix from the System_Logging_File
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FilenamePrefix is set, it can
// safely use t.GetFilenamePrefix() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FilenamePrefix == nil' before retrieving the leaf's value.
func (t *System_Logging_File) GetFilenamePrefix() string {
	if t == nil || t.FilenamePrefix == nil {
		return ""
	}
	return *t.FilenamePrefix
}

// GetMaxOpenTime retrieves the value of the leaf MaxOpenTime from the System_Logging_File
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxOpenTime is set, it can
// safely use t.GetMaxOpenTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxOpenTime == nil' before retrieving the leaf's value.
func (t *System_Logging_File) GetMaxOpenTime() uint32 {
	if t == nil || t.MaxOpenTime == nil {
		return 1440
	}
	return *t.MaxOpenTime
}

// GetMaxSize retrieves the value of the leaf MaxSize from the System_Logging_File
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxSize is set, it can
// safely use t.GetMaxSize() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxSize == nil' before retrieving the leaf's value.
func (t *System_Logging_File) GetMaxSize() uint32 {
	if t == nil || t.MaxSize == nil {
		return 1000
	}
	return *t.MaxSize
}

// GetOpenLogfile retrieves the value of the leaf OpenLogfile from the System_Logging_File
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OpenLogfile is set, it can
// safely use t.GetOpenLogfile() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OpenLogfile == nil' before retrieving the leaf's value.
func (t *System_Logging_File) GetOpenLogfile() string {
	if t == nil || t.OpenLogfile == nil {
		return ""
	}
	return *t.OpenLogfile
}

// GetPath retrieves the value of the leaf Path from the System_Logging_File
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Path is set, it can
// safely use t.GetPath() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Path == nil' before retrieving the leaf's value.
func (t *System_Logging_File) GetPath() string {
	if t == nil || t.Path == nil {
		return ""
	}
	return *t.Path
}

// GetRotate retrieves the value of the leaf Rotate from the System_Logging_File
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Rotate is set, it can
// safely use t.GetRotate() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Rotate == nil' before retrieving the leaf's value.
func (t *System_Logging_File) GetRotate() uint32 {
	if t == nil || t.Rotate == nil {
		return 0
	}
	return *t.Rotate
}

// PopulateDefaults recursively populates unset leaf fields in the System_Logging_File
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Logging_File) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.MaxOpenTime == nil {
		var v uint32 = 1440
		t.MaxOpenTime = &v
	}
	if t.MaxSize == nil {
		var v uint32 = 1000
		t.MaxSize = &v
	}
	if t.Rotate == nil {
		var v uint32 = 0
		t.Rotate = &v
	}
	for _, e := range t.Selector {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the System_Logging_File struct, which is a YANG list entry.
func (t *System_Logging_File) ΛListKeyMap() (map[string]interface{}, error) {
	if t.FilenamePrefix == nil {
		return nil, fmt.Errorf("nil value for key FilenamePrefix")
	}

	if t.Path == nil {
		return nil, fmt.Errorf("nil value for key Path")
	}

	return map[string]interface{}{
		"filename-prefix": *t.FilenamePrefix,
		"path":            *t.Path,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging_File) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Logging_File"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging_File) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Logging_File) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Logging_File.
func (*System_Logging_File) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Logging_File_Selector represents the /openconfig-system/system/logging/files/file/selectors/selector YANG schema element.
type System_Logging_File_Selector struct {
	ΛMetadata []ygot.Annotation               `path:"@" ygotAnnotation:"true"`
	Facility  E_SystemLogging_SYSLOG_FACILITY `path:"config/facility|facility" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛFacility []ygot.Annotation               `path:"config/@facility|@facility" ygotAnnotation:"true"`
	Severity  E_SystemLogging_SyslogSeverity  `path:"config/severity|severity" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛSeverity []ygot.Annotation               `path:"config/@severity|@severity" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Logging_File_Selector implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Logging_File_Selector) IsYANGGoStruct() {}

// GetFacility retrieves the value of the leaf Facility from the System_Logging_File_Selector
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Facility is set, it can
// safely use t.GetFacility() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Facility == nil' before retrieving the leaf's value.
func (t *System_Logging_File_Selector) GetFacility() E_SystemLogging_SYSLOG_FACILITY {
	if t == nil || t.Facility == 0 {
		return 0
	}
	return t.Facility
}

// GetSeverity retrieves the value of the leaf Severity from the System_Logging_File_Selector
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Severity is set, it can
// safely use t.GetSeverity() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Severity == nil' before retrieving the leaf's value.
func (t *System_Logging_File_Selector) GetSeverity() E_SystemLogging_SyslogSeverity {
	if t == nil || t.Severity == 0 {
		return 0
	}
	return t.Severity
}

// PopulateDefaults recursively populates unset leaf fields in the System_Logging_File_Selector
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Logging_File_Selector) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the System_Logging_File_Selector struct, which is a YANG list entry.
func (t *System_Logging_File_Selector) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"facility": t.Facility,
		"severity": t.Severity,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging_File_Selector) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Logging_File_Selector"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging_File_Selector) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Logging_File_Selector) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Logging_File_Selector.
func (*System_Logging_File_Selector) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Logging_RemoteServer represents the /openconfig-system/system/logging/remote-servers/remote-server YANG schema element.
type System_Logging_RemoteServer struct {
	ΛMetadata        []ygot.Annotation                                                                  `path:"@" ygotAnnotation:"true"`
	Host             *string                                                                            `path:"config/host|host" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛHost            []ygot.Annotation                                                                  `path:"config/@host|@host" ygotAnnotation:"true"`
	NetworkInstance  *string                                                                            `path:"config/network-instance" module:"openconfig-system/openconfig-system"`
	ΛNetworkInstance []ygot.Annotation                                                                  `path:"config/@network-instance" ygotAnnotation:"true"`
	RemotePort       *uint16                                                                            `path:"config/remote-port" module:"openconfig-system/openconfig-system"`
	ΛRemotePort      []ygot.Annotation                                                                  `path:"config/@remote-port" ygotAnnotation:"true"`
	Selector         map[System_Logging_RemoteServer_Selector_Key]*System_Logging_RemoteServer_Selector `path:"selectors/selector" module:"openconfig-system/openconfig-system"`
	ΛSelector        []ygot.Annotation                                                                  `path:"selectors/@selector" ygotAnnotation:"true"`
	SourceAddress    *string                                                                            `path:"config/source-address" module:"openconfig-system/openconfig-system"`
	ΛSourceAddress   []ygot.Annotation                                                                  `path:"config/@source-address" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Logging_RemoteServer implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Logging_RemoteServer) IsYANGGoStruct() {}

// System_Logging_RemoteServer_Selector_Key represents the key for list Selector of element /openconfig-system/system/logging/remote-servers/remote-server.
type System_Logging_RemoteServer_Selector_Key struct {
	Facility E_SystemLogging_SYSLOG_FACILITY `path:"facility"`
	Severity E_SystemLogging_SyslogSeverity  `path:"severity"`
}

// IsYANGGoKeyStruct ensures that System_Logging_RemoteServer_Selector_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (System_Logging_RemoteServer_Selector_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the System_Logging_RemoteServer_Selector_Key key struct.
func (t System_Logging_RemoteServer_Selector_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"facility": t.Facility,
		"severity": t.Severity,
	}, nil
}

// NewSelector creates a new entry in the Selector list of the
// System_Logging_RemoteServer struct. The keys of the list are populated from the input
// arguments.
func (t *System_Logging_RemoteServer) NewSelector(Facility E_SystemLogging_SYSLOG_FACILITY, Severity E_SystemLogging_SyslogSeverity) (*System_Logging_RemoteServer_Selector, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Selector == nil {
		t.Selector = make(map[System_Logging_RemoteServer_Selector_Key]*System_Logging_RemoteServer_Selector)
	}

	key := System_Logging_RemoteServer_Selector_Key{
		Facility: Facility,
		Severity: Severity,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Selector[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Selector", key)
	}

	t.Selector[key] = &System_Logging_RemoteServer_Selector{
		Facility: Facility,
		Severity: Severity,
	}

	return t.Selector[key], nil
}

// RenameSelector renames an entry in the list Selector within
// the System_Logging_RemoteServer struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System_Logging_RemoteServer) RenameSelector(oldK, newK System_Logging_RemoteServer_Selector_Key) error {
	if _, ok := t.Selector[newK]; ok {
		return fmt.Errorf("key %v already exists in Selector", newK)
	}

	e, ok := t.Selector[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Selector", oldK)
	}
	e.Facility = newK.Facility
	e.Severity = newK.Severity

	t.Selector[newK] = e
	delete(t.Selector, oldK)
	return nil
}

// GetOrCreateSelectorMap returns the list (map) from System_Logging_RemoteServer.
//
// It initializes the field if not already initialized.
func (t *System_Logging_RemoteServer) GetOrCreateSelectorMap() map[System_Logging_RemoteServer_Selector_Key]*System_Logging_RemoteServer_Selector {
	if t.Selector == nil {
		t.Selector = make(map[System_Logging_RemoteServer_Selector_Key]*System_Logging_RemoteServer_Selector)
	}
	return t.Selector
}

// GetOrCreateSelector retrieves the value with the specified keys from
// the receiver System_Logging_RemoteServer. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System_Logging_RemoteServer) GetOrCreateSelector(Facility E_SystemLogging_SYSLOG_FACILITY, Severity E_SystemLogging_SyslogSeverity) *System_Logging_RemoteServer_Selector {

	key := System_Logging_RemoteServer_Selector_Key{
		Facility: Facility,
		Severity: Severity,
	}

	if v, ok := t.Selector[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSelector(Facility, Severity)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSelector got unexpected error: %v", err))
	}
	return v
}

// GetSelector retrieves the value with the specified key from
// the Selector map field of System_Logging_RemoteServer. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System_Logging_RemoteServer) GetSelector(Facility E_SystemLogging_SYSLOG_FACILITY, Severity E_SystemLogging_SyslogSeverity) *System_Logging_RemoteServer_Selector {

	if t == nil {
		return nil
	}

	key := System_Logging_RemoteServer_Selector_Key{
		Facility: Facility,
		Severity: Severity,
	}

	if lm, ok := t.Selector[key]; ok {
		return lm
	}
	return nil
}

// AppendSelector appends the supplied System_Logging_RemoteServer_Selector struct to the
// list Selector of System_Logging_RemoteServer. If the key value(s) specified in
// the supplied System_Logging_RemoteServer_Selector already exist in the list, an error is
// returned.
func (t *System_Logging_RemoteServer) AppendSelector(v *System_Logging_RemoteServer_Selector) error {
	key := System_Logging_RemoteServer_Selector_Key{
		Facility: v.Facility,
		Severity: v.Severity,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Selector == nil {
		t.Selector = make(map[System_Logging_RemoteServer_Selector_Key]*System_Logging_RemoteServer_Selector)
	}

	if _, ok := t.Selector[key]; ok {
		return fmt.Errorf("duplicate key for list Selector %v", key)
	}

	t.Selector[key] = v
	return nil
}

// GetHost retrieves the value of the leaf Host from the System_Logging_RemoteServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Host is set, it can
// safely use t.GetHost() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Host == nil' before retrieving the leaf's value.
func (t *System_Logging_RemoteServer) GetHost() string {
	if t == nil || t.Host == nil {
		return ""
	}
	return *t.Host
}

// GetNetworkInstance retrieves the value of the leaf NetworkInstance from the System_Logging_RemoteServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NetworkInstance is set, it can
// safely use t.GetNetworkInstance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NetworkInstance == nil' before retrieving the leaf's value.
func (t *System_Logging_RemoteServer) GetNetworkInstance() string {
	if t == nil || t.NetworkInstance == nil {
		return ""
	}
	return *t.NetworkInstance
}

// GetRemotePort retrieves the value of the leaf RemotePort from the System_Logging_RemoteServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RemotePort is set, it can
// safely use t.GetRemotePort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RemotePort == nil' before retrieving the leaf's value.
func (t *System_Logging_RemoteServer) GetRemotePort() uint16 {
	if t == nil || t.RemotePort == nil {
		return 514
	}
	return *t.RemotePort
}

// GetSourceAddress retrieves the value of the leaf SourceAddress from the System_Logging_RemoteServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddress is set, it can
// safely use t.GetSourceAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddress == nil' before retrieving the leaf's value.
func (t *System_Logging_RemoteServer) GetSourceAddress() string {
	if t == nil || t.SourceAddress == nil {
		return ""
	}
	return *t.SourceAddress
}

// PopulateDefaults recursively populates unset leaf fields in the System_Logging_RemoteServer
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Logging_RemoteServer) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.RemotePort == nil {
		var v uint16 = 514
		t.RemotePort = &v
	}
	for _, e := range t.Selector {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the System_Logging_RemoteServer struct, which is a YANG list entry.
func (t *System_Logging_RemoteServer) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Host == nil {
		return nil, fmt.Errorf("nil value for key Host")
	}

	return map[string]interface{}{
		"host": *t.Host,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging_RemoteServer) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Logging_RemoteServer"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging_RemoteServer) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Logging_RemoteServer) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Logging_RemoteServer.
func (*System_Logging_RemoteServer) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Logging_RemoteServer_Selector represents the /openconfig-system/system/logging/remote-servers/remote-server/selectors/selector YANG schema element.
type System_Logging_RemoteServer_Selector struct {
	ΛMetadata []ygot.Annotation               `path:"@" ygotAnnotation:"true"`
	Facility  E_SystemLogging_SYSLOG_FACILITY `path:"config/facility|facility" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛFacility []ygot.Annotation               `path:"config/@facility|@facility" ygotAnnotation:"true"`
	Severity  E_SystemLogging_SyslogSeverity  `path:"config/severity|severity" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛSeverity []ygot.Annotation               `path:"config/@severity|@severity" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Logging_RemoteServer_Selector implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Logging_RemoteServer_Selector) IsYANGGoStruct() {}

// GetFacility retrieves the value of the leaf Facility from the System_Logging_RemoteServer_Selector
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Facility is set, it can
// safely use t.GetFacility() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Facility == nil' before retrieving the leaf's value.
func (t *System_Logging_RemoteServer_Selector) GetFacility() E_SystemLogging_SYSLOG_FACILITY {
	if t == nil || t.Facility == 0 {
		return 0
	}
	return t.Facility
}

// GetSeverity retrieves the value of the leaf Severity from the System_Logging_RemoteServer_Selector
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Severity is set, it can
// safely use t.GetSeverity() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Severity == nil' before retrieving the leaf's value.
func (t *System_Logging_RemoteServer_Selector) GetSeverity() E_SystemLogging_SyslogSeverity {
	if t == nil || t.Severity == 0 {
		return 0
	}
	return t.Severity
}

// PopulateDefaults recursively populates unset leaf fields in the System_Logging_RemoteServer_Selector
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Logging_RemoteServer_Selector) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the System_Logging_RemoteServer_Selector struct, which is a YANG list entry.
func (t *System_Logging_RemoteServer_Selector) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"facility": t.Facility,
		"severity": t.Severity,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging_RemoteServer_Selector) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Logging_RemoteServer_Selector"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging_RemoteServer_Selector) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Logging_RemoteServer_Selector) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Logging_RemoteServer_Selector.
func (*System_Logging_RemoteServer_Selector) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Logging_Vty represents the /openconfig-system/system/logging/vty YANG schema element.
type System_Logging_Vty struct {
	ΛMetadata []ygot.Annotation                                                `path:"@" ygotAnnotation:"true"`
	Selector  map[System_Logging_Vty_Selector_Key]*System_Logging_Vty_Selector `path:"selectors/selector" module:"openconfig-system/openconfig-system"`
	ΛSelector []ygot.Annotation                                                `path:"selectors/@selector" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Logging_Vty implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Logging_Vty) IsYANGGoStruct() {}

// System_Logging_Vty_Selector_Key represents the key for list Selector of element /openconfig-system/system/logging/vty.
type System_Logging_Vty_Selector_Key struct {
	Facility E_SystemLogging_SYSLOG_FACILITY `path:"facility"`
	Severity E_SystemLogging_SyslogSeverity  `path:"severity"`
}

// IsYANGGoKeyStruct ensures that System_Logging_Vty_Selector_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (System_Logging_Vty_Selector_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the System_Logging_Vty_Selector_Key key struct.
func (t System_Logging_Vty_Selector_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"facility": t.Facility,
		"severity": t.Severity,
	}, nil
}

// NewSelector creates a new entry in the Selector list of the
// System_Logging_Vty struct. The keys of the list are populated from the input
// arguments.
func (t *System_Logging_Vty) NewSelector(Facility E_SystemLogging_SYSLOG_FACILITY, Severity E_SystemLogging_SyslogSeverity) (*System_Logging_Vty_Selector, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Selector == nil {
		t.Selector = make(map[System_Logging_Vty_Selector_Key]*System_Logging_Vty_Selector)
	}

	key := System_Logging_Vty_Selector_Key{
		Facility: Facility,
		Severity: Severity,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Selector[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Selector", key)
	}

	t.Selector[key] = &System_Logging_Vty_Selector{
		Facility: Facility,
		Severity: Severity,
	}

	return t.Selector[key], nil
}

// RenameSelector renames an entry in the list Selector within
// the System_Logging_Vty struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System_Logging_Vty) RenameSelector(oldK, newK System_Logging_Vty_Selector_Key) error {
	if _, ok := t.Selector[newK]; ok {
		return fmt.Errorf("key %v already exists in Selector", newK)
	}

	e, ok := t.Selector[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Selector", oldK)
	}
	e.Facility = newK.Facility
	e.Severity = newK.Severity

	t.Selector[newK] = e
	delete(t.Selector, oldK)
	return nil
}

// GetOrCreateSelectorMap returns the list (map) from System_Logging_Vty.
//
// It initializes the field if not already initialized.
func (t *System_Logging_Vty) GetOrCreateSelectorMap() map[System_Logging_Vty_Selector_Key]*System_Logging_Vty_Selector {
	if t.Selector == nil {
		t.Selector = make(map[System_Logging_Vty_Selector_Key]*System_Logging_Vty_Selector)
	}
	return t.Selector
}

// GetOrCreateSelector retrieves the value with the specified keys from
// the receiver System_Logging_Vty. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System_Logging_Vty) GetOrCreateSelector(Facility E_SystemLogging_SYSLOG_FACILITY, Severity E_SystemLogging_SyslogSeverity) *System_Logging_Vty_Selector {

	key := System_Logging_Vty_Selector_Key{
		Facility: Facility,
		Severity: Severity,
	}

	if v, ok := t.Selector[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewSelector(Facility, Severity)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateSelector got unexpected error: %v", err))
	}
	return v
}

// GetSelector retrieves the value with the specified key from
// the Selector map field of System_Logging_Vty. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System_Logging_Vty) GetSelector(Facility E_SystemLogging_SYSLOG_FACILITY, Severity E_SystemLogging_SyslogSeverity) *System_Logging_Vty_Selector {

	if t == nil {
		return nil
	}

	key := System_Logging_Vty_Selector_Key{
		Facility: Facility,
		Severity: Severity,
	}

	if lm, ok := t.Selector[key]; ok {
		return lm
	}
	return nil
}

// AppendSelector appends the supplied System_Logging_Vty_Selector struct to the
// list Selector of System_Logging_Vty. If the key value(s) specified in
// the supplied System_Logging_Vty_Selector already exist in the list, an error is
// returned.
func (t *System_Logging_Vty) AppendSelector(v *System_Logging_Vty_Selector) error {
	key := System_Logging_Vty_Selector_Key{
		Facility: v.Facility,
		Severity: v.Severity,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Selector == nil {
		t.Selector = make(map[System_Logging_Vty_Selector_Key]*System_Logging_Vty_Selector)
	}

	if _, ok := t.Selector[key]; ok {
		return fmt.Errorf("duplicate key for list Selector %v", key)
	}

	t.Selector[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the System_Logging_Vty
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Logging_Vty) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Selector {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging_Vty) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Logging_Vty"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging_Vty) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Logging_Vty) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Logging_Vty.
func (*System_Logging_Vty) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Logging_Vty_Selector represents the /openconfig-system/system/logging/vty/selectors/selector YANG schema element.
type System_Logging_Vty_Selector struct {
	ΛMetadata []ygot.Annotation               `path:"@" ygotAnnotation:"true"`
	Facility  E_SystemLogging_SYSLOG_FACILITY `path:"config/facility|facility" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛFacility []ygot.Annotation               `path:"config/@facility|@facility" ygotAnnotation:"true"`
	Severity  E_SystemLogging_SyslogSeverity  `path:"config/severity|severity" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛSeverity []ygot.Annotation               `path:"config/@severity|@severity" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Logging_Vty_Selector implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Logging_Vty_Selector) IsYANGGoStruct() {}

// GetFacility retrieves the value of the leaf Facility from the System_Logging_Vty_Selector
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Facility is set, it can
// safely use t.GetFacility() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Facility == nil' before retrieving the leaf's value.
func (t *System_Logging_Vty_Selector) GetFacility() E_SystemLogging_SYSLOG_FACILITY {
	if t == nil || t.Facility == 0 {
		return 0
	}
	return t.Facility
}

// GetSeverity retrieves the value of the leaf Severity from the System_Logging_Vty_Selector
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Severity is set, it can
// safely use t.GetSeverity() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Severity == nil' before retrieving the leaf's value.
func (t *System_Logging_Vty_Selector) GetSeverity() E_SystemLogging_SyslogSeverity {
	if t == nil || t.Severity == 0 {
		return 0
	}
	return t.Severity
}

// PopulateDefaults recursively populates unset leaf fields in the System_Logging_Vty_Selector
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Logging_Vty_Selector) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the System_Logging_Vty_Selector struct, which is a YANG list entry.
func (t *System_Logging_Vty_Selector) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"facility": t.Facility,
		"severity": t.Severity,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging_Vty_Selector) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Logging_Vty_Selector"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Logging_Vty_Selector) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Logging_Vty_Selector) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Logging_Vty_Selector.
func (*System_Logging_Vty_Selector) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_MacAddress represents the /openconfig-system/system/mac-address YANG schema element.
type System_MacAddress struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	RoutingMac  *string           `path:"config/routing-mac" module:"openconfig-system/openconfig-system"`
	ΛRoutingMac []ygot.Annotation `path:"config/@routing-mac" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_MacAddress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_MacAddress) IsYANGGoStruct() {}

// GetRoutingMac retrieves the value of the leaf RoutingMac from the System_MacAddress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RoutingMac is set, it can
// safely use t.GetRoutingMac() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RoutingMac == nil' before retrieving the leaf's value.
func (t *System_MacAddress) GetRoutingMac() string {
	if t == nil || t.RoutingMac == nil {
		return ""
	}
	return *t.RoutingMac
}

// PopulateDefaults recursively populates unset leaf fields in the System_MacAddress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_MacAddress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_MacAddress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_MacAddress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_MacAddress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_MacAddress) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_MacAddress.
func (*System_MacAddress) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Memory represents the /openconfig-system/system/memory YANG schema element.
type System_Memory struct {
	ΛMetadata []ygot.Annotation       `path:"@" ygotAnnotation:"true"`
	Counters  *System_Memory_Counters `path:"state/counters" module:"openconfig-system/openconfig-system"`
	ΛCounters []ygot.Annotation       `path:"state/@counters" ygotAnnotation:"true"`
	Free      *uint64                 `path:"state/free" module:"openconfig-system/openconfig-system"`
	ΛFree     []ygot.Annotation       `path:"state/@free" ygotAnnotation:"true"`
	Physical  *uint64                 `path:"state/physical" module:"openconfig-system/openconfig-system"`
	ΛPhysical []ygot.Annotation       `path:"state/@physical" ygotAnnotation:"true"`
	Reserved  *uint64                 `path:"state/reserved" module:"openconfig-system/openconfig-system"`
	ΛReserved []ygot.Annotation       `path:"state/@reserved" ygotAnnotation:"true"`
	Used      *uint64                 `path:"state/used" module:"openconfig-system/openconfig-system"`
	ΛUsed     []ygot.Annotation       `path:"state/@used" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Memory implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Memory) IsYANGGoStruct() {}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *System_Memory) GetOrCreateCounters() *System_Memory_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &System_Memory_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from System_Memory. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Memory) GetCounters() *System_Memory_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetFree retrieves the value of the leaf Free from the System_Memory
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Free is set, it can
// safely use t.GetFree() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Free == nil' before retrieving the leaf's value.
func (t *System_Memory) GetFree() uint64 {
	if t == nil || t.Free == nil {
		return 0
	}
	return *t.Free
}

// GetPhysical retrieves the value of the leaf Physical from the System_Memory
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Physical is set, it can
// safely use t.GetPhysical() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Physical == nil' before retrieving the leaf's value.
func (t *System_Memory) GetPhysical() uint64 {
	if t == nil || t.Physical == nil {
		return 0
	}
	return *t.Physical
}

// GetReserved retrieves the value of the leaf Reserved from the System_Memory
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Reserved is set, it can
// safely use t.GetReserved() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Reserved == nil' before retrieving the leaf's value.
func (t *System_Memory) GetReserved() uint64 {
	if t == nil || t.Reserved == nil {
		return 0
	}
	return *t.Reserved
}

// GetUsed retrieves the value of the leaf Used from the System_Memory
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Used is set, it can
// safely use t.GetUsed() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Used == nil' before retrieving the leaf's value.
func (t *System_Memory) GetUsed() uint64 {
	if t == nil || t.Used == nil {
		return 0
	}
	return *t.Used
}

// PopulateDefaults recursively populates unset leaf fields in the System_Memory
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Memory) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Counters.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Memory) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Memory"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Memory) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Memory) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Memory.
func (*System_Memory) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Memory_Counters represents the /openconfig-system/system/memory/state/counters YANG schema element.
type System_Memory_Counters struct {
	ΛMetadata               []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	CorrectableEccErrors    *uint64           `path:"correctable-ecc-errors" module:"openconfig-system"`
	ΛCorrectableEccErrors   []ygot.Annotation `path:"@correctable-ecc-errors" ygotAnnotation:"true"`
	TotalEccErrors          *uint64           `path:"total-ecc-errors" module:"openconfig-system"`
	ΛTotalEccErrors         []ygot.Annotation `path:"@total-ecc-errors" ygotAnnotation:"true"`
	UncorrectableEccErrors  *uint64           `path:"uncorrectable-ecc-errors" module:"openconfig-system"`
	ΛUncorrectableEccErrors []ygot.Annotation `path:"@uncorrectable-ecc-errors" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Memory_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Memory_Counters) IsYANGGoStruct() {}

// GetCorrectableEccErrors retrieves the value of the leaf CorrectableEccErrors from the System_Memory_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CorrectableEccErrors is set, it can
// safely use t.GetCorrectableEccErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CorrectableEccErrors == nil' before retrieving the leaf's value.
func (t *System_Memory_Counters) GetCorrectableEccErrors() uint64 {
	if t == nil || t.CorrectableEccErrors == nil {
		return 0
	}
	return *t.CorrectableEccErrors
}

// GetTotalEccErrors retrieves the value of the leaf TotalEccErrors from the System_Memory_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TotalEccErrors is set, it can
// safely use t.GetTotalEccErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TotalEccErrors == nil' before retrieving the leaf's value.
func (t *System_Memory_Counters) GetTotalEccErrors() uint64 {
	if t == nil || t.TotalEccErrors == nil {
		return 0
	}
	return *t.TotalEccErrors
}

// GetUncorrectableEccErrors retrieves the value of the leaf UncorrectableEccErrors from the System_Memory_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UncorrectableEccErrors is set, it can
// safely use t.GetUncorrectableEccErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UncorrectableEccErrors == nil' before retrieving the leaf's value.
func (t *System_Memory_Counters) GetUncorrectableEccErrors() uint64 {
	if t == nil || t.UncorrectableEccErrors == nil {
		return 0
	}
	return *t.UncorrectableEccErrors
}

// PopulateDefaults recursively populates unset leaf fields in the System_Memory_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Memory_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Memory_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Memory_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Memory_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Memory_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Memory_Counters.
func (*System_Memory_Counters) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Messages represents the /openconfig-system/system/messages YANG schema element.
type System_Messages struct {
	ΛMetadata     []ygot.Annotation                                          `path:"@" ygotAnnotation:"true"`
	DebugService  map[E_Messages_DEBUG_SERVICE]*System_Messages_DebugService `path:"debug-entries/debug-service" module:"openconfig-system/openconfig-system"`
	ΛDebugService []ygot.Annotation                                          `path:"debug-entries/@debug-service" ygotAnnotation:"true"`
	Message       *System_Messages_Message                                   `path:"state/message" module:"openconfig-system/openconfig-system"`
	ΛMessage      []ygot.Annotation                                          `path:"state/@message" ygotAnnotation:"true"`
	Severity      E_SystemLogging_SyslogSeverity                             `path:"config/severity" module:"openconfig-system/openconfig-system"`
	ΛSeverity     []ygot.Annotation                                          `path:"config/@severity" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Messages implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Messages) IsYANGGoStruct() {}

// NewDebugService creates a new entry in the DebugService list of the
// System_Messages struct. The keys of the list are populated from the input
// arguments.
func (t *System_Messages) NewDebugService(Service E_Messages_DEBUG_SERVICE) (*System_Messages_DebugService, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.DebugService == nil {
		t.DebugService = make(map[E_Messages_DEBUG_SERVICE]*System_Messages_DebugService)
	}

	key := Service

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.DebugService[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list DebugService", key)
	}

	t.DebugService[key] = &System_Messages_DebugService{
		Service: Service,
	}

	return t.DebugService[key], nil
}

// RenameDebugService renames an entry in the list DebugService within
// the System_Messages struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System_Messages) RenameDebugService(oldK, newK E_Messages_DEBUG_SERVICE) error {
	if _, ok := t.DebugService[newK]; ok {
		return fmt.Errorf("key %v already exists in DebugService", newK)
	}

	e, ok := t.DebugService[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in DebugService", oldK)
	}
	e.Service = newK

	t.DebugService[newK] = e
	delete(t.DebugService, oldK)
	return nil
}

// GetOrCreateDebugServiceMap returns the list (map) from System_Messages.
//
// It initializes the field if not already initialized.
func (t *System_Messages) GetOrCreateDebugServiceMap() map[E_Messages_DEBUG_SERVICE]*System_Messages_DebugService {
	if t.DebugService == nil {
		t.DebugService = make(map[E_Messages_DEBUG_SERVICE]*System_Messages_DebugService)
	}
	return t.DebugService
}

// GetOrCreateDebugService retrieves the value with the specified keys from
// the receiver System_Messages. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System_Messages) GetOrCreateDebugService(Service E_Messages_DEBUG_SERVICE) *System_Messages_DebugService {

	key := Service

	if v, ok := t.DebugService[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewDebugService(Service)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateDebugService got unexpected error: %v", err))
	}
	return v
}

// GetDebugService retrieves the value with the specified key from
// the DebugService map field of System_Messages. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System_Messages) GetDebugService(Service E_Messages_DEBUG_SERVICE) *System_Messages_DebugService {

	if t == nil {
		return nil
	}

	key := Service

	if lm, ok := t.DebugService[key]; ok {
		return lm
	}
	return nil
}

// AppendDebugService appends the supplied System_Messages_DebugService struct to the
// list DebugService of System_Messages. If the key value(s) specified in
// the supplied System_Messages_DebugService already exist in the list, an error is
// returned.
func (t *System_Messages) AppendDebugService(v *System_Messages_DebugService) error {
	key := v.Service

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.DebugService == nil {
		t.DebugService = make(map[E_Messages_DEBUG_SERVICE]*System_Messages_DebugService)
	}

	if _, ok := t.DebugService[key]; ok {
		return fmt.Errorf("duplicate key for list DebugService %v", key)
	}

	t.DebugService[key] = v
	return nil
}

// GetOrCreateMessage retrieves the value of the Message field
// or returns the existing field if it already exists.
func (t *System_Messages) GetOrCreateMessage() *System_Messages_Message {
	if t.Message != nil {
		return t.Message
	}
	t.Message = &System_Messages_Message{}
	return t.Message
}

// GetMessage returns the value of the Message struct pointer
// from System_Messages. If the receiver or the field Message is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *System_Messages) GetMessage() *System_Messages_Message {
	if t != nil && t.Message != nil {
		return t.Message
	}
	return nil
}

// GetSeverity retrieves the value of the leaf Severity from the System_Messages
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Severity is set, it can
// safely use t.GetSeverity() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Severity == nil' before retrieving the leaf's value.
func (t *System_Messages) GetSeverity() E_SystemLogging_SyslogSeverity {
	if t == nil || t.Severity == 0 {
		return 0
	}
	return t.Severity
}

// PopulateDefaults recursively populates unset leaf fields in the System_Messages
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Messages) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Message.PopulateDefaults()
	for _, e := range t.DebugService {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Messages) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Messages"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Messages) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Messages) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Messages.
func (*System_Messages) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Messages_DebugService represents the /openconfig-system/system/messages/debug-entries/debug-service YANG schema element.
type System_Messages_DebugService struct {
	ΛMetadata []ygot.Annotation        `path:"@" ygotAnnotation:"true"`
	Enabled   *bool                    `path:"config/enabled" module:"openconfig-system/openconfig-system"`
	ΛEnabled  []ygot.Annotation        `path:"config/@enabled" ygotAnnotation:"true"`
	Service   E_Messages_DEBUG_SERVICE `path:"config/service|service" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛService  []ygot.Annotation        `path:"config/@service|@service" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Messages_DebugService implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Messages_DebugService) IsYANGGoStruct() {}

// GetEnabled retrieves the value of the leaf Enabled from the System_Messages_DebugService
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *System_Messages_DebugService) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetService retrieves the value of the leaf Service from the System_Messages_DebugService
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Service is set, it can
// safely use t.GetService() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Service == nil' before retrieving the leaf's value.
func (t *System_Messages_DebugService) GetService() E_Messages_DEBUG_SERVICE {
	if t == nil || t.Service == 0 {
		return 0
	}
	return t.Service
}

// PopulateDefaults recursively populates unset leaf fields in the System_Messages_DebugService
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Messages_DebugService) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
}

// ΛListKeyMap returns the keys of the System_Messages_DebugService struct, which is a YANG list entry.
func (t *System_Messages_DebugService) ΛListKeyMap() (map[string]interface{}, error) {

	return map[string]interface{}{
		"service": t.Service,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Messages_DebugService) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Messages_DebugService"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Messages_DebugService) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Messages_DebugService) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Messages_DebugService.
func (*System_Messages_DebugService) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Messages_Message represents the /openconfig-system/system/messages/state/message YANG schema element.
type System_Messages_Message struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	AppName   *string           `path:"app-name" module:"openconfig-system"`
	ΛAppName  []ygot.Annotation `path:"@app-name" ygotAnnotation:"true"`
	Msg       *string           `path:"msg" module:"openconfig-system"`
	ΛMsg      []ygot.Annotation `path:"@msg" ygotAnnotation:"true"`
	Msgid     *string           `path:"msgid" module:"openconfig-system"`
	ΛMsgid    []ygot.Annotation `path:"@msgid" ygotAnnotation:"true"`
	Priority  *uint8            `path:"priority" module:"openconfig-system"`
	ΛPriority []ygot.Annotation `path:"@priority" ygotAnnotation:"true"`
	Procid    *string           `path:"procid" module:"openconfig-system"`
	ΛProcid   []ygot.Annotation `path:"@procid" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Messages_Message implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Messages_Message) IsYANGGoStruct() {}

// GetAppName retrieves the value of the leaf AppName from the System_Messages_Message
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AppName is set, it can
// safely use t.GetAppName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AppName == nil' before retrieving the leaf's value.
func (t *System_Messages_Message) GetAppName() string {
	if t == nil || t.AppName == nil {
		return ""
	}
	return *t.AppName
}

// GetMsg retrieves the value of the leaf Msg from the System_Messages_Message
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Msg is set, it can
// safely use t.GetMsg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Msg == nil' before retrieving the leaf's value.
func (t *System_Messages_Message) GetMsg() string {
	if t == nil || t.Msg == nil {
		return ""
	}
	return *t.Msg
}

// GetMsgid retrieves the value of the leaf Msgid from the System_Messages_Message
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Msgid is set, it can
// safely use t.GetMsgid() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Msgid == nil' before retrieving the leaf's value.
func (t *System_Messages_Message) GetMsgid() string {
	if t == nil || t.Msgid == nil {
		return ""
	}
	return *t.Msgid
}

// GetPriority retrieves the value of the leaf Priority from the System_Messages_Message
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Priority is set, it can
// safely use t.GetPriority() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Priority == nil' before retrieving the leaf's value.
func (t *System_Messages_Message) GetPriority() uint8 {
	if t == nil || t.Priority == nil {
		return 0
	}
	return *t.Priority
}

// GetProcid retrieves the value of the leaf Procid from the System_Messages_Message
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Procid is set, it can
// safely use t.GetProcid() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Procid == nil' before retrieving the leaf's value.
func (t *System_Messages_Message) GetProcid() string {
	if t == nil || t.Procid == nil {
		return ""
	}
	return *t.Procid
}

// PopulateDefaults recursively populates unset leaf fields in the System_Messages_Message
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Messages_Message) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Messages_Message) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Messages_Message"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Messages_Message) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Messages_Message) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Messages_Message.
func (*System_Messages_Message) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_MountPoint represents the /openconfig-system/system/mount-points/mount-point YANG schema element.
type System_MountPoint struct {
	ΛMetadata         []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Available         *uint64           `path:"state/available" module:"openconfig-system/openconfig-system"`
	ΛAvailable        []ygot.Annotation `path:"state/@available" ygotAnnotation:"true"`
	Name              *string           `path:"state/name|name" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛName             []ygot.Annotation `path:"state/@name|@name" ygotAnnotation:"true"`
	Size              *uint64           `path:"state/size" module:"openconfig-system/openconfig-system"`
	ΛSize             []ygot.Annotation `path:"state/@size" ygotAnnotation:"true"`
	StorageComponent  *string           `path:"state/storage-component" module:"openconfig-system/openconfig-system"`
	ΛStorageComponent []ygot.Annotation `path:"state/@storage-component" ygotAnnotation:"true"`
	Utilized          *uint64           `path:"state/utilized" module:"openconfig-system/openconfig-system"`
	ΛUtilized         []ygot.Annotation `path:"state/@utilized" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_MountPoint implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_MountPoint) IsYANGGoStruct() {}

// GetAvailable retrieves the value of the leaf Available from the System_MountPoint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Available is set, it can
// safely use t.GetAvailable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Available == nil' before retrieving the leaf's value.
func (t *System_MountPoint) GetAvailable() uint64 {
	if t == nil || t.Available == nil {
		return 0
	}
	return *t.Available
}

// GetName retrieves the value of the leaf Name from the System_MountPoint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *System_MountPoint) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetSize retrieves the value of the leaf Size from the System_MountPoint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Size is set, it can
// safely use t.GetSize() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Size == nil' before retrieving the leaf's value.
func (t *System_MountPoint) GetSize() uint64 {
	if t == nil || t.Size == nil {
		return 0
	}
	return *t.Size
}

// GetStorageComponent retrieves the value of the leaf StorageComponent from the System_MountPoint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if StorageComponent is set, it can
// safely use t.GetStorageComponent() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.StorageComponent == nil' before retrieving the leaf's value.
func (t *System_MountPoint) GetStorageComponent() string {
	if t == nil || t.StorageComponent == nil {
		return ""
	}
	return *t.StorageComponent
}

// GetUtilized retrieves the value of the leaf Utilized from the System_MountPoint
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Utilized is set, it can
// safely use t.GetUtilized() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Utilized == nil' before retrieving the leaf's value.
func (t *System_MountPoint) GetUtilized() uint64 {
	if t == nil || t.Utilized == nil {
		return 0
	}
	return *t.Utilized
}

// PopulateDefaults recursively populates unset leaf fields in the System_MountPoint
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_MountPoint) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the System_MountPoint struct, which is a YANG list entry.
func (t *System_MountPoint) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Name == nil {
		return nil, fmt.Errorf("nil value for key Name")
	}

	return map[string]interface{}{
		"name": *t.Name,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_MountPoint) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_MountPoint"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_MountPoint) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_MountPoint) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_MountPoint.
func (*System_MountPoint) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Ntp represents the /openconfig-system/system/ntp YANG schema element.
type System_Ntp struct {
	ΛMetadata      []ygot.Annotation             `path:"@" ygotAnnotation:"true"`
	AuthMismatch   *uint64                       `path:"state/auth-mismatch" module:"openconfig-system/openconfig-system"`
	ΛAuthMismatch  []ygot.Annotation             `path:"state/@auth-mismatch" ygotAnnotation:"true"`
	EnableNtpAuth  *bool                         `path:"config/enable-ntp-auth" module:"openconfig-system/openconfig-system"`
	ΛEnableNtpAuth []ygot.Annotation             `path:"config/@enable-ntp-auth" ygotAnnotation:"true"`
	Enabled        *bool                         `path:"config/enabled" module:"openconfig-system/openconfig-system"`
	ΛEnabled       []ygot.Annotation             `path:"config/@enabled" ygotAnnotation:"true"`
	NtpKey         map[uint16]*System_Ntp_NtpKey `path:"ntp-keys/ntp-key" module:"openconfig-system/openconfig-system"`
	ΛNtpKey        []ygot.Annotation             `path:"ntp-keys/@ntp-key" ygotAnnotation:"true"`
	Server         map[string]*System_Ntp_Server `path:"servers/server" module:"openconfig-system/openconfig-system"`
	ΛServer        []ygot.Annotation             `path:"servers/@server" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Ntp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Ntp) IsYANGGoStruct() {}

// NewNtpKey creates a new entry in the NtpKey list of the
// System_Ntp struct. The keys of the list are populated from the input
// arguments.
func (t *System_Ntp) NewNtpKey(KeyId uint16) (*System_Ntp_NtpKey, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NtpKey == nil {
		t.NtpKey = make(map[uint16]*System_Ntp_NtpKey)
	}

	key := KeyId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.NtpKey[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list NtpKey", key)
	}

	t.NtpKey[key] = &System_Ntp_NtpKey{
		KeyId: &KeyId,
	}

	return t.NtpKey[key], nil
}

// RenameNtpKey renames an entry in the list NtpKey within
// the System_Ntp struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System_Ntp) RenameNtpKey(oldK, newK uint16) error {
	if _, ok := t.NtpKey[newK]; ok {
		return fmt.Errorf("key %v already exists in NtpKey", newK)
	}

	e, ok := t.NtpKey[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in NtpKey", oldK)
	}
	e.KeyId = &newK

	t.NtpKey[newK] = e
	delete(t.NtpKey, oldK)
	return nil
}

// GetOrCreateNtpKeyMap returns the list (map) from System_Ntp.
//
// It initializes the field if not already initialized.
func (t *System_Ntp) GetOrCreateNtpKeyMap() map[uint16]*System_Ntp_NtpKey {
	if t.NtpKey == nil {
		t.NtpKey = make(map[uint16]*System_Ntp_NtpKey)
	}
	return t.NtpKey
}

// GetOrCreateNtpKey retrieves the value with the specified keys from
// the receiver System_Ntp. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System_Ntp) GetOrCreateNtpKey(KeyId uint16) *System_Ntp_NtpKey {

	key := KeyId

	if v, ok := t.NtpKey[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNtpKey(KeyId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNtpKey got unexpected error: %v", err))
	}
	return v
}

// GetNtpKey retrieves the value with the specified key from
// the NtpKey map field of System_Ntp. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System_Ntp) GetNtpKey(KeyId uint16) *System_Ntp_NtpKey {

	if t == nil {
		return nil
	}

	key := KeyId

	if lm, ok := t.NtpKey[key]; ok {
		return lm
	}
	return nil
}

// AppendNtpKey appends the supplied System_Ntp_NtpKey struct to the
// list NtpKey of System_Ntp. If the key value(s) specified in
// the supplied System_Ntp_NtpKey already exist in the list, an error is
// returned.
func (t *System_Ntp) AppendNtpKey(v *System_Ntp_NtpKey) error {
	if v.KeyId == nil {
		return fmt.Errorf("invalid nil key received for KeyId")
	}

	key := *v.KeyId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.NtpKey == nil {
		t.NtpKey = make(map[uint16]*System_Ntp_NtpKey)
	}

	if _, ok := t.NtpKey[key]; ok {
		return fmt.Errorf("duplicate key for list NtpKey %v", key)
	}

	t.NtpKey[key] = v
	return nil
}

// NewServer creates a new entry in the Server list of the
// System_Ntp struct. The keys of the list are populated from the input
// arguments.
func (t *System_Ntp) NewServer(Address string) (*System_Ntp_Server, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Server == nil {
		t.Server = make(map[string]*System_Ntp_Server)
	}

	key := Address

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Server[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Server", key)
	}

	t.Server[key] = &System_Ntp_Server{
		Address: &Address,
	}

	return t.Server[key], nil
}

// RenameServer renames an entry in the list Server within
// the System_Ntp struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *System_Ntp) RenameServer(oldK, newK string) error {
	if _, ok := t.Server[newK]; ok {
		return fmt.Errorf("key %v already exists in Server", newK)
	}

	e, ok := t.Server[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Server", oldK)
	}
	e.Address = &newK

	t.Server[newK] = e
	delete(t.Server, oldK)
	return nil
}

// GetOrCreateServerMap returns the list (map) from System_Ntp.
//
// It initializes the field if not already initialized.
func (t *System_Ntp) GetOrCreateServerMap() map[string]*System_Ntp_Server {
	if t.Server == nil {
		t.Server = make(map[string]*System_Ntp_Server)
	}
	return t.Server
}

// GetOrCreateServer retrieves the value with the specified keys from
// the receiver System_Ntp. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *System_Ntp) GetOrCreateServer(Address string) *System_Ntp_Server {

	key := Address

	if v, ok := t.Server[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewServer(Address)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateServer got unexpected error: %v", err))
	}
	return v
}

// GetServer retrieves the value with the specified key from
// the Server map field of System_Ntp. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *System_Ntp) GetServer(Address string) *System_Ntp_Server {

	if t == nil {
		return nil
	}

	key := Address

	if lm, ok := t.Server[key]; ok {
		return lm
	}
	return nil
}

// AppendServer appends the supplied System_Ntp_Server struct to the
// list Server of System_Ntp. If the key value(s) specified in
// the supplied System_Ntp_Server already exist in the list, an error is
// returned.
func (t *System_Ntp) AppendServer(v *System_Ntp_Server) error {
	if v.Address == nil {
		return fmt.Errorf("invalid nil key received for Address")
	}

	key := *v.Address

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Server == nil {
		t.Server = make(map[string]*System_Ntp_Server)
	}

	if _, ok := t.Server[key]; ok {
		return fmt.Errorf("duplicate key for list Server %v", key)
	}

	t.Server[key] = v
	return nil
}

// GetAuthMismatch retrieves the value of the leaf AuthMismatch from the System_Ntp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AuthMismatch is set, it can
// safely use t.GetAuthMismatch() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AuthMismatch == nil' before retrieving the leaf's value.
func (t *System_Ntp) GetAuthMismatch() uint64 {
	if t == nil || t.AuthMismatch == nil {
		return 0
	}
	return *t.AuthMismatch
}

// GetEnableNtpAuth retrieves the value of the leaf EnableNtpAuth from the System_Ntp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if EnableNtpAuth is set, it can
// safely use t.GetEnableNtpAuth() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.EnableNtpAuth == nil' before retrieving the leaf's value.
func (t *System_Ntp) GetEnableNtpAuth() bool {
	if t == nil || t.EnableNtpAuth == nil {
		return false
	}
	return *t.EnableNtpAuth
}

// GetEnabled retrieves the value of the leaf Enabled from the System_Ntp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *System_Ntp) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// PopulateDefaults recursively populates unset leaf fields in the System_Ntp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Ntp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.EnableNtpAuth == nil {
		var v bool = false
		t.EnableNtpAuth = &v
	}
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	for _, e := range t.NtpKey {
		e.PopulateDefaults()
	}
	for _, e := range t.Server {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Ntp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Ntp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Ntp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Ntp) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Ntp.
func (*System_Ntp) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Ntp_NtpKey represents the /openconfig-system/system/ntp/ntp-keys/ntp-key YANG schema element.
type System_Ntp_NtpKey struct {
	ΛMetadata []ygot.Annotation      `path:"@" ygotAnnotation:"true"`
	KeyId     *uint16                `path:"config/key-id|key-id" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛKeyId    []ygot.Annotation      `path:"config/@key-id|@key-id" ygotAnnotation:"true"`
	KeyType   E_System_NTP_AUTH_TYPE `path:"config/key-type" module:"openconfig-system/openconfig-system"`
	ΛKeyType  []ygot.Annotation      `path:"config/@key-type" ygotAnnotation:"true"`
	KeyValue  *string                `path:"config/key-value" module:"openconfig-system/openconfig-system"`
	ΛKeyValue []ygot.Annotation      `path:"config/@key-value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Ntp_NtpKey implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Ntp_NtpKey) IsYANGGoStruct() {}

// GetKeyId retrieves the value of the leaf KeyId from the System_Ntp_NtpKey
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if KeyId is set, it can
// safely use t.GetKeyId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.KeyId == nil' before retrieving the leaf's value.
func (t *System_Ntp_NtpKey) GetKeyId() uint16 {
	if t == nil || t.KeyId == nil {
		return 0
	}
	return *t.KeyId
}

// GetKeyType retrieves the value of the leaf KeyType from the System_Ntp_NtpKey
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if KeyType is set, it can
// safely use t.GetKeyType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.KeyType == nil' before retrieving the leaf's value.
func (t *System_Ntp_NtpKey) GetKeyType() E_System_NTP_AUTH_TYPE {
	if t == nil || t.KeyType == 0 {
		return 0
	}
	return t.KeyType
}

// GetKeyValue retrieves the value of the leaf KeyValue from the System_Ntp_NtpKey
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if KeyValue is set, it can
// safely use t.GetKeyValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.KeyValue == nil' before retrieving the leaf's value.
func (t *System_Ntp_NtpKey) GetKeyValue() string {
	if t == nil || t.KeyValue == nil {
		return ""
	}
	return *t.KeyValue
}

// PopulateDefaults recursively populates unset leaf fields in the System_Ntp_NtpKey
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Ntp_NtpKey) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the System_Ntp_NtpKey struct, which is a YANG list entry.
func (t *System_Ntp_NtpKey) ΛListKeyMap() (map[string]interface{}, error) {
	if t.KeyId == nil {
		return nil, fmt.Errorf("nil value for key KeyId")
	}

	return map[string]interface{}{
		"key-id": *t.KeyId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Ntp_NtpKey) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Ntp_NtpKey"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Ntp_NtpKey) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Ntp_NtpKey) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Ntp_NtpKey.
func (*System_Ntp_NtpKey) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Ntp_Server represents the /openconfig-system/system/ntp/servers/server YANG schema element.
type System_Ntp_Server struct {
	ΛMetadata        []ygot.Annotation        `path:"@" ygotAnnotation:"true"`
	Address          *string                  `path:"config/address|address" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛAddress         []ygot.Annotation        `path:"config/@address|@address" ygotAnnotation:"true"`
	AssociationType  E_Server_AssociationType `path:"config/association-type" module:"openconfig-system/openconfig-system"`
	ΛAssociationType []ygot.Annotation        `path:"config/@association-type" ygotAnnotation:"true"`
	Iburst           *bool                    `path:"config/iburst" module:"openconfig-system/openconfig-system"`
	ΛIburst          []ygot.Annotation        `path:"config/@iburst" ygotAnnotation:"true"`
	NetworkInstance  *string                  `path:"config/network-instance" module:"openconfig-system/openconfig-system"`
	ΛNetworkInstance []ygot.Annotation        `path:"config/@network-instance" ygotAnnotation:"true"`
	Offset           *int64                   `path:"state/offset" module:"openconfig-system/openconfig-system"`
	ΛOffset          []ygot.Annotation        `path:"state/@offset" ygotAnnotation:"true"`
	PollInterval     *uint32                  `path:"state/poll-interval" module:"openconfig-system/openconfig-system"`
	ΛPollInterval    []ygot.Annotation        `path:"state/@poll-interval" ygotAnnotation:"true"`
	Port             *uint16                  `path:"config/port" module:"openconfig-system/openconfig-system"`
	ΛPort            []ygot.Annotation        `path:"config/@port" ygotAnnotation:"true"`
	Prefer           *bool                    `path:"config/prefer" module:"openconfig-system/openconfig-system"`
	ΛPrefer          []ygot.Annotation        `path:"config/@prefer" ygotAnnotation:"true"`
	RootDelay        *int64                   `path:"state/root-delay" module:"openconfig-system/openconfig-system"`
	ΛRootDelay       []ygot.Annotation        `path:"state/@root-delay" ygotAnnotation:"true"`
	RootDispersion   *int64                   `path:"state/root-dispersion" module:"openconfig-system/openconfig-system"`
	ΛRootDispersion  []ygot.Annotation        `path:"state/@root-dispersion" ygotAnnotation:"true"`
	SourceAddress    *string                  `path:"config/source-address" module:"openconfig-system/openconfig-system"`
	ΛSourceAddress   []ygot.Annotation        `path:"config/@source-address" ygotAnnotation:"true"`
	Stratum          *uint8                   `path:"state/stratum" module:"openconfig-system/openconfig-system"`
	ΛStratum         []ygot.Annotation        `path:"state/@stratum" ygotAnnotation:"true"`
	Version          *uint8                   `path:"config/version" module:"openconfig-system/openconfig-system"`
	ΛVersion         []ygot.Annotation        `path:"config/@version" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Ntp_Server implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Ntp_Server) IsYANGGoStruct() {}

// GetAddress retrieves the value of the leaf Address from the System_Ntp_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Address is set, it can
// safely use t.GetAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Address == nil' before retrieving the leaf's value.
func (t *System_Ntp_Server) GetAddress() string {
	if t == nil || t.Address == nil {
		return ""
	}
	return *t.Address
}

// GetAssociationType retrieves the value of the leaf AssociationType from the System_Ntp_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AssociationType is set, it can
// safely use t.GetAssociationType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AssociationType == nil' before retrieving the leaf's value.
func (t *System_Ntp_Server) GetAssociationType() E_Server_AssociationType {
	if t == nil || t.AssociationType == 0 {
		return Server_AssociationType_SERVER
	}
	return t.AssociationType
}

// GetIburst retrieves the value of the leaf Iburst from the System_Ntp_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Iburst is set, it can
// safely use t.GetIburst() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Iburst == nil' before retrieving the leaf's value.
func (t *System_Ntp_Server) GetIburst() bool {
	if t == nil || t.Iburst == nil {
		return false
	}
	return *t.Iburst
}

// GetNetworkInstance retrieves the value of the leaf NetworkInstance from the System_Ntp_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if NetworkInstance is set, it can
// safely use t.GetNetworkInstance() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.NetworkInstance == nil' before retrieving the leaf's value.
func (t *System_Ntp_Server) GetNetworkInstance() string {
	if t == nil || t.NetworkInstance == nil {
		return ""
	}
	return *t.NetworkInstance
}

// GetOffset retrieves the value of the leaf Offset from the System_Ntp_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Offset is set, it can
// safely use t.GetOffset() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Offset == nil' before retrieving the leaf's value.
func (t *System_Ntp_Server) GetOffset() int64 {
	if t == nil || t.Offset == nil {
		return 0
	}
	return *t.Offset
}

// GetPollInterval retrieves the value of the leaf PollInterval from the System_Ntp_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PollInterval is set, it can
// safely use t.GetPollInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PollInterval == nil' before retrieving the leaf's value.
func (t *System_Ntp_Server) GetPollInterval() uint32 {
	if t == nil || t.PollInterval == nil {
		return 0
	}
	return *t.PollInterval
}

// GetPort retrieves the value of the leaf Port from the System_Ntp_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Port is set, it can
// safely use t.GetPort() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Port == nil' before retrieving the leaf's value.
func (t *System_Ntp_Server) GetPort() uint16 {
	if t == nil || t.Port == nil {
		return 123
	}
	return *t.Port
}

// GetPrefer retrieves the value of the leaf Prefer from the System_Ntp_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Prefer is set, it can
// safely use t.GetPrefer() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Prefer == nil' before retrieving the leaf's value.
func (t *System_Ntp_Server) GetPrefer() bool {
	if t == nil || t.Prefer == nil {
		return false
	}
	return *t.Prefer
}

// GetRootDelay retrieves the value of the leaf RootDelay from the System_Ntp_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RootDelay is set, it can
// safely use t.GetRootDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RootDelay == nil' before retrieving the leaf's value.
func (t *System_Ntp_Server) GetRootDelay() int64 {
	if t == nil || t.RootDelay == nil {
		return 0
	}
	return *t.RootDelay
}

// GetRootDispersion retrieves the value of the leaf RootDispersion from the System_Ntp_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RootDispersion is set, it can
// safely use t.GetRootDispersion() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RootDispersion == nil' before retrieving the leaf's value.
func (t *System_Ntp_Server) GetRootDispersion() int64 {
	if t == nil || t.RootDispersion == nil {
		return 0
	}
	return *t.RootDispersion
}

// GetSourceAddress retrieves the value of the leaf SourceAddress from the System_Ntp_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SourceAddress is set, it can
// safely use t.GetSourceAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SourceAddress == nil' before retrieving the leaf's value.
func (t *System_Ntp_Server) GetSourceAddress() string {
	if t == nil || t.SourceAddress == nil {
		return ""
	}
	return *t.SourceAddress
}

// GetStratum retrieves the value of the leaf Stratum from the System_Ntp_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Stratum is set, it can
// safely use t.GetStratum() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Stratum == nil' before retrieving the leaf's value.
func (t *System_Ntp_Server) GetStratum() uint8 {
	if t == nil || t.Stratum == nil {
		return 0
	}
	return *t.Stratum
}

// GetVersion retrieves the value of the leaf Version from the System_Ntp_Server
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Version is set, it can
// safely use t.GetVersion() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Version == nil' before retrieving the leaf's value.
func (t *System_Ntp_Server) GetVersion() uint8 {
	if t == nil || t.Version == nil {
		return 4
	}
	return *t.Version
}

// PopulateDefaults recursively populates unset leaf fields in the System_Ntp_Server
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Ntp_Server) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AssociationType == 0 {
		t.AssociationType = Server_AssociationType_SERVER
	}
	if t.Iburst == nil {
		var v bool = false
		t.Iburst = &v
	}
	if t.Port == nil {
		var v uint16 = 123
		t.Port = &v
	}
	if t.Prefer == nil {
		var v bool = false
		t.Prefer = &v
	}
	if t.Version == nil {
		var v uint8 = 4
		t.Version = &v
	}
}

// ΛListKeyMap returns the keys of the System_Ntp_Server struct, which is a YANG list entry.
func (t *System_Ntp_Server) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Address == nil {
		return nil, fmt.Errorf("nil value for key Address")
	}

	return map[string]interface{}{
		"address": *t.Address,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Ntp_Server) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Ntp_Server"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Ntp_Server) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Ntp_Server) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Ntp_Server.
func (*System_Ntp_Server) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_Process represents the /openconfig-system/system/processes/process YANG schema element.
type System_Process struct {
	ΛMetadata          []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Args               []string          `path:"state/args" module:"openconfig-system/openconfig-system"`
	ΛArgs              []ygot.Annotation `path:"state/@args" ygotAnnotation:"true"`
	CpuUsageSystem     *uint64           `path:"state/cpu-usage-system" module:"openconfig-system/openconfig-system"`
	ΛCpuUsageSystem    []ygot.Annotation `path:"state/@cpu-usage-system" ygotAnnotation:"true"`
	CpuUsageUser       *uint64           `path:"state/cpu-usage-user" module:"openconfig-system/openconfig-system"`
	ΛCpuUsageUser      []ygot.Annotation `path:"state/@cpu-usage-user" ygotAnnotation:"true"`
	CpuUtilization     *uint8            `path:"state/cpu-utilization" module:"openconfig-system/openconfig-system"`
	ΛCpuUtilization    []ygot.Annotation `path:"state/@cpu-utilization" ygotAnnotation:"true"`
	MemoryUsage        *uint64           `path:"state/memory-usage" module:"openconfig-system/openconfig-system"`
	ΛMemoryUsage       []ygot.Annotation `path:"state/@memory-usage" ygotAnnotation:"true"`
	MemoryUtilization  *uint8            `path:"state/memory-utilization" module:"openconfig-system/openconfig-system"`
	ΛMemoryUtilization []ygot.Annotation `path:"state/@memory-utilization" ygotAnnotation:"true"`
	Name               *string           `path:"state/name" module:"openconfig-system/openconfig-system"`
	ΛName              []ygot.Annotation `path:"state/@name" ygotAnnotation:"true"`
	Pid                *uint64           `path:"state/pid|pid" module:"openconfig-system/openconfig-system|openconfig-system"`
	ΛPid               []ygot.Annotation `path:"state/@pid|@pid" ygotAnnotation:"true"`
	StartTime          *uint64           `path:"state/start-time" module:"openconfig-system/openconfig-system"`
	ΛStartTime         []ygot.Annotation `path:"state/@start-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_Process implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_Process) IsYANGGoStruct() {}

// GetArgs retrieves the value of the leaf Args from the System_Process
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Args is set, it can
// safely use t.GetArgs() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Args == nil' before retrieving the leaf's value.
func (t *System_Process) GetArgs() []string {
	if t == nil || t.Args == nil {
		return nil
	}
	return t.Args
}

// GetCpuUsageSystem retrieves the value of the leaf CpuUsageSystem from the System_Process
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CpuUsageSystem is set, it can
// safely use t.GetCpuUsageSystem() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CpuUsageSystem == nil' before retrieving the leaf's value.
func (t *System_Process) GetCpuUsageSystem() uint64 {
	if t == nil || t.CpuUsageSystem == nil {
		return 0
	}
	return *t.CpuUsageSystem
}

// GetCpuUsageUser retrieves the value of the leaf CpuUsageUser from the System_Process
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CpuUsageUser is set, it can
// safely use t.GetCpuUsageUser() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CpuUsageUser == nil' before retrieving the leaf's value.
func (t *System_Process) GetCpuUsageUser() uint64 {
	if t == nil || t.CpuUsageUser == nil {
		return 0
	}
	return *t.CpuUsageUser
}

// GetCpuUtilization retrieves the value of the leaf CpuUtilization from the System_Process
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CpuUtilization is set, it can
// safely use t.GetCpuUtilization() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CpuUtilization == nil' before retrieving the leaf's value.
func (t *System_Process) GetCpuUtilization() uint8 {
	if t == nil || t.CpuUtilization == nil {
		return 0
	}
	return *t.CpuUtilization
}

// GetMemoryUsage retrieves the value of the leaf MemoryUsage from the System_Process
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MemoryUsage is set, it can
// safely use t.GetMemoryUsage() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MemoryUsage == nil' before retrieving the leaf's value.
func (t *System_Process) GetMemoryUsage() uint64 {
	if t == nil || t.MemoryUsage == nil {
		return 0
	}
	return *t.MemoryUsage
}

// GetMemoryUtilization retrieves the value of the leaf MemoryUtilization from the System_Process
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MemoryUtilization is set, it can
// safely use t.GetMemoryUtilization() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MemoryUtilization == nil' before retrieving the leaf's value.
func (t *System_Process) GetMemoryUtilization() uint8 {
	if t == nil || t.MemoryUtilization == nil {
		return 0
	}
	return *t.MemoryUtilization
}

// GetName retrieves the value of the leaf Name from the System_Process
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Name is set, it can
// safely use t.GetName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Name == nil' before retrieving the leaf's value.
func (t *System_Process) GetName() string {
	if t == nil || t.Name == nil {
		return ""
	}
	return *t.Name
}

// GetPid retrieves the value of the leaf Pid from the System_Process
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Pid is set, it can
// safely use t.GetPid() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Pid == nil' before retrieving the leaf's value.
func (t *System_Process) GetPid() uint64 {
	if t == nil || t.Pid == nil {
		return 0
	}
	return *t.Pid
}

// GetStartTime retrieves the value of the leaf StartTime from the System_Process
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if StartTime is set, it can
// safely use t.GetStartTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.StartTime == nil' before retrieving the leaf's value.
func (t *System_Process) GetStartTime() uint64 {
	if t == nil || t.StartTime == nil {
		return 0
	}
	return *t.StartTime
}

// PopulateDefaults recursively populates unset leaf fields in the System_Process
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_Process) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the System_Process struct, which is a YANG list entry.
func (t *System_Process) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Pid == nil {
		return nil, fmt.Errorf("nil value for key Pid")
	}

	return map[string]interface{}{
		"pid": *t.Pid,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Process) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_Process"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_Process) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_Process) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_Process.
func (*System_Process) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_SshServer represents the /openconfig-system/system/ssh-server YANG schema element.
type System_SshServer struct {
	ΛMetadata        []ygot.Annotation           `path:"@" ygotAnnotation:"true"`
	Enable           *bool                       `path:"config/enable" module:"openconfig-system/openconfig-system"`
	ΛEnable          []ygot.Annotation           `path:"config/@enable" ygotAnnotation:"true"`
	ProtocolVersion  E_SshServer_ProtocolVersion `path:"config/protocol-version" module:"openconfig-system/openconfig-system"`
	ΛProtocolVersion []ygot.Annotation           `path:"config/@protocol-version" ygotAnnotation:"true"`
	RateLimit        *uint16                     `path:"config/rate-limit" module:"openconfig-system/openconfig-system"`
	ΛRateLimit       []ygot.Annotation           `path:"config/@rate-limit" ygotAnnotation:"true"`
	SessionLimit     *uint16                     `path:"config/session-limit" module:"openconfig-system/openconfig-system"`
	ΛSessionLimit    []ygot.Annotation           `path:"config/@session-limit" ygotAnnotation:"true"`
	Timeout          *uint16                     `path:"config/timeout" module:"openconfig-system/openconfig-system"`
	ΛTimeout         []ygot.Annotation           `path:"config/@timeout" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_SshServer implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_SshServer) IsYANGGoStruct() {}

// GetEnable retrieves the value of the leaf Enable from the System_SshServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enable is set, it can
// safely use t.GetEnable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enable == nil' before retrieving the leaf's value.
func (t *System_SshServer) GetEnable() bool {
	if t == nil || t.Enable == nil {
		return true
	}
	return *t.Enable
}

// GetProtocolVersion retrieves the value of the leaf ProtocolVersion from the System_SshServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ProtocolVersion is set, it can
// safely use t.GetProtocolVersion() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ProtocolVersion == nil' before retrieving the leaf's value.
func (t *System_SshServer) GetProtocolVersion() E_SshServer_ProtocolVersion {
	if t == nil || t.ProtocolVersion == 0 {
		return SshServer_ProtocolVersion_V2
	}
	return t.ProtocolVersion
}

// GetRateLimit retrieves the value of the leaf RateLimit from the System_SshServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RateLimit is set, it can
// safely use t.GetRateLimit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RateLimit == nil' before retrieving the leaf's value.
func (t *System_SshServer) GetRateLimit() uint16 {
	if t == nil || t.RateLimit == nil {
		return 0
	}
	return *t.RateLimit
}

// GetSessionLimit retrieves the value of the leaf SessionLimit from the System_SshServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SessionLimit is set, it can
// safely use t.GetSessionLimit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SessionLimit == nil' before retrieving the leaf's value.
func (t *System_SshServer) GetSessionLimit() uint16 {
	if t == nil || t.SessionLimit == nil {
		return 0
	}
	return *t.SessionLimit
}

// GetTimeout retrieves the value of the leaf Timeout from the System_SshServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Timeout is set, it can
// safely use t.GetTimeout() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Timeout == nil' before retrieving the leaf's value.
func (t *System_SshServer) GetTimeout() uint16 {
	if t == nil || t.Timeout == nil {
		return 0
	}
	return *t.Timeout
}

// PopulateDefaults recursively populates unset leaf fields in the System_SshServer
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_SshServer) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enable == nil {
		var v bool = true
		t.Enable = &v
	}
	if t.ProtocolVersion == 0 {
		t.ProtocolVersion = SshServer_ProtocolVersion_V2
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_SshServer) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_SshServer"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_SshServer) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_SshServer) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_SshServer.
func (*System_SshServer) ΛBelongingModule() string {
	return "openconfig-system"
}

// System_TelnetServer represents the /openconfig-system/system/telnet-server YANG schema element.
type System_TelnetServer struct {
	ΛMetadata     []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Enable        *bool             `path:"config/enable" module:"openconfig-system/openconfig-system"`
	ΛEnable       []ygot.Annotation `path:"config/@enable" ygotAnnotation:"true"`
	RateLimit     *uint16           `path:"config/rate-limit" module:"openconfig-system/openconfig-system"`
	ΛRateLimit    []ygot.Annotation `path:"config/@rate-limit" ygotAnnotation:"true"`
	SessionLimit  *uint16           `path:"config/session-limit" module:"openconfig-system/openconfig-system"`
	ΛSessionLimit []ygot.Annotation `path:"config/@session-limit" ygotAnnotation:"true"`
	Timeout       *uint16           `path:"config/timeout" module:"openconfig-system/openconfig-system"`
	ΛTimeout      []ygot.Annotation `path:"config/@timeout" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that System_TelnetServer implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*System_TelnetServer) IsYANGGoStruct() {}

// GetEnable retrieves the value of the leaf Enable from the System_TelnetServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enable is set, it can
// safely use t.GetEnable() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enable == nil' before retrieving the leaf's value.
func (t *System_TelnetServer) GetEnable() bool {
	if t == nil || t.Enable == nil {
		return false
	}
	return *t.Enable
}

// GetRateLimit retrieves the value of the leaf RateLimit from the System_TelnetServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RateLimit is set, it can
// safely use t.GetRateLimit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RateLimit == nil' before retrieving the leaf's value.
func (t *System_TelnetServer) GetRateLimit() uint16 {
	if t == nil || t.RateLimit == nil {
		return 0
	}
	return *t.RateLimit
}

// GetSessionLimit retrieves the value of the leaf SessionLimit from the System_TelnetServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SessionLimit is set, it can
// safely use t.GetSessionLimit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SessionLimit == nil' before retrieving the leaf's value.
func (t *System_TelnetServer) GetSessionLimit() uint16 {
	if t == nil || t.SessionLimit == nil {
		return 0
	}
	return *t.SessionLimit
}

// GetTimeout retrieves the value of the leaf Timeout from the System_TelnetServer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Timeout is set, it can
// safely use t.GetTimeout() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Timeout == nil' before retrieving the leaf's value.
func (t *System_TelnetServer) GetTimeout() uint16 {
	if t == nil || t.Timeout == nil {
		return 0
	}
	return *t.Timeout
}

// PopulateDefaults recursively populates unset leaf fields in the System_TelnetServer
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *System_TelnetServer) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enable == nil {
		var v bool = false
		t.Enable = &v
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_TelnetServer) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["System_TelnetServer"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *System_TelnetServer) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *System_TelnetServer) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of System_TelnetServer.
func (*System_TelnetServer) ΛBelongingModule() string {
	return "openconfig-system"
}

// TerminalDevice represents the /openconfig-terminal-device/terminal-device YANG schema element.
type TerminalDevice struct {
	ΛMetadata []ygot.Annotation                  `path:"@" ygotAnnotation:"true"`
	Channel   map[uint32]*TerminalDevice_Channel `path:"logical-channels/channel" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛChannel  []ygot.Annotation                  `path:"logical-channels/@channel" ygotAnnotation:"true"`
	Mode      map[uint16]*TerminalDevice_Mode    `path:"operational-modes/mode" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛMode     []ygot.Annotation                  `path:"operational-modes/@mode" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice) IsYANGGoStruct() {}

// NewChannel creates a new entry in the Channel list of the
// TerminalDevice struct. The keys of the list are populated from the input
// arguments.
func (t *TerminalDevice) NewChannel(Index uint32) (*TerminalDevice_Channel, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Channel == nil {
		t.Channel = make(map[uint32]*TerminalDevice_Channel)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Channel[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Channel", key)
	}

	t.Channel[key] = &TerminalDevice_Channel{
		Index: &Index,
	}

	return t.Channel[key], nil
}

// RenameChannel renames an entry in the list Channel within
// the TerminalDevice struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *TerminalDevice) RenameChannel(oldK, newK uint32) error {
	if _, ok := t.Channel[newK]; ok {
		return fmt.Errorf("key %v already exists in Channel", newK)
	}

	e, ok := t.Channel[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Channel", oldK)
	}
	e.Index = &newK

	t.Channel[newK] = e
	delete(t.Channel, oldK)
	return nil
}

// GetOrCreateChannelMap returns the list (map) from TerminalDevice.
//
// It initializes the field if not already initialized.
func (t *TerminalDevice) GetOrCreateChannelMap() map[uint32]*TerminalDevice_Channel {
	if t.Channel == nil {
		t.Channel = make(map[uint32]*TerminalDevice_Channel)
	}
	return t.Channel
}

// GetOrCreateChannel retrieves the value with the specified keys from
// the receiver TerminalDevice. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *TerminalDevice) GetOrCreateChannel(Index uint32) *TerminalDevice_Channel {

	key := Index

	if v, ok := t.Channel[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewChannel(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateChannel got unexpected error: %v", err))
	}
	return v
}

// GetChannel retrieves the value with the specified key from
// the Channel map field of TerminalDevice. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *TerminalDevice) GetChannel(Index uint32) *TerminalDevice_Channel {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.Channel[key]; ok {
		return lm
	}
	return nil
}

// AppendChannel appends the supplied TerminalDevice_Channel struct to the
// list Channel of TerminalDevice. If the key value(s) specified in
// the supplied TerminalDevice_Channel already exist in the list, an error is
// returned.
func (t *TerminalDevice) AppendChannel(v *TerminalDevice_Channel) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Channel == nil {
		t.Channel = make(map[uint32]*TerminalDevice_Channel)
	}

	if _, ok := t.Channel[key]; ok {
		return fmt.Errorf("duplicate key for list Channel %v", key)
	}

	t.Channel[key] = v
	return nil
}

// NewMode creates a new entry in the Mode list of the
// TerminalDevice struct. The keys of the list are populated from the input
// arguments.
func (t *TerminalDevice) NewMode(ModeId uint16) (*TerminalDevice_Mode, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Mode == nil {
		t.Mode = make(map[uint16]*TerminalDevice_Mode)
	}

	key := ModeId

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Mode[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Mode", key)
	}

	t.Mode[key] = &TerminalDevice_Mode{
		ModeId: &ModeId,
	}

	return t.Mode[key], nil
}

// RenameMode renames an entry in the list Mode within
// the TerminalDevice struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *TerminalDevice) RenameMode(oldK, newK uint16) error {
	if _, ok := t.Mode[newK]; ok {
		return fmt.Errorf("key %v already exists in Mode", newK)
	}

	e, ok := t.Mode[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Mode", oldK)
	}
	e.ModeId = &newK

	t.Mode[newK] = e
	delete(t.Mode, oldK)
	return nil
}

// GetOrCreateModeMap returns the list (map) from TerminalDevice.
//
// It initializes the field if not already initialized.
func (t *TerminalDevice) GetOrCreateModeMap() map[uint16]*TerminalDevice_Mode {
	if t.Mode == nil {
		t.Mode = make(map[uint16]*TerminalDevice_Mode)
	}
	return t.Mode
}

// GetOrCreateMode retrieves the value with the specified keys from
// the receiver TerminalDevice. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *TerminalDevice) GetOrCreateMode(ModeId uint16) *TerminalDevice_Mode {

	key := ModeId

	if v, ok := t.Mode[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewMode(ModeId)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateMode got unexpected error: %v", err))
	}
	return v
}

// GetMode retrieves the value with the specified key from
// the Mode map field of TerminalDevice. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *TerminalDevice) GetMode(ModeId uint16) *TerminalDevice_Mode {

	if t == nil {
		return nil
	}

	key := ModeId

	if lm, ok := t.Mode[key]; ok {
		return lm
	}
	return nil
}

// AppendMode appends the supplied TerminalDevice_Mode struct to the
// list Mode of TerminalDevice. If the key value(s) specified in
// the supplied TerminalDevice_Mode already exist in the list, an error is
// returned.
func (t *TerminalDevice) AppendMode(v *TerminalDevice_Mode) error {
	if v.ModeId == nil {
		return fmt.Errorf("invalid nil key received for ModeId")
	}

	key := *v.ModeId

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Mode == nil {
		t.Mode = make(map[uint16]*TerminalDevice_Mode)
	}

	if _, ok := t.Mode[key]; ok {
		return fmt.Errorf("duplicate key for list Mode %v", key)
	}

	t.Mode[key] = v
	return nil
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Channel {
		e.PopulateDefaults()
	}
	for _, e := range t.Mode {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice.
func (*TerminalDevice) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Channel represents the /openconfig-terminal-device/terminal-device/logical-channels/channel YANG schema element.
type TerminalDevice_Channel struct {
	ΛMetadata           []ygot.Annotation                              `path:"@" ygotAnnotation:"true"`
	AdminState          E_TransportTypes_AdminStateType                `path:"config/admin-state" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛAdminState         []ygot.Annotation                              `path:"config/@admin-state" ygotAnnotation:"true"`
	Assignment          map[uint32]*TerminalDevice_Channel_Assignment  `path:"logical-channel-assignments/assignment" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛAssignment         []ygot.Annotation                              `path:"logical-channel-assignments/@assignment" ygotAnnotation:"true"`
	ClientMappingMode   E_TransportTypes_CLIENT_MAPPING_MODE           `path:"config/client-mapping-mode" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛClientMappingMode  []ygot.Annotation                              `path:"config/@client-mapping-mode" ygotAnnotation:"true"`
	Description         *string                                        `path:"config/description" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛDescription        []ygot.Annotation                              `path:"config/@description" ygotAnnotation:"true"`
	Ethernet            *TerminalDevice_Channel_Ethernet               `path:"ethernet" module:"openconfig-terminal-device"`
	ΛEthernet           []ygot.Annotation                              `path:"@ethernet" ygotAnnotation:"true"`
	Index               *uint32                                        `path:"config/index|index" module:"openconfig-terminal-device/openconfig-terminal-device|openconfig-terminal-device"`
	ΛIndex              []ygot.Annotation                              `path:"config/@index|@index" ygotAnnotation:"true"`
	Ingress             *TerminalDevice_Channel_Ingress                `path:"ingress" module:"openconfig-terminal-device"`
	ΛIngress            []ygot.Annotation                              `path:"@ingress" ygotAnnotation:"true"`
	LinkState           E_Channel_LinkState                            `path:"state/link-state" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛLinkState          []ygot.Annotation                              `path:"state/@link-state" ygotAnnotation:"true"`
	LogicalChannelType  E_TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE `path:"config/logical-channel-type" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛLogicalChannelType []ygot.Annotation                              `path:"config/@logical-channel-type" ygotAnnotation:"true"`
	LoopbackMode        E_TransportTypes_LoopbackModeType              `path:"config/loopback-mode" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛLoopbackMode       []ygot.Annotation                              `path:"config/@loopback-mode" ygotAnnotation:"true"`
	Otn                 *TerminalDevice_Channel_Otn                    `path:"otn" module:"openconfig-terminal-device"`
	ΛOtn                []ygot.Annotation                              `path:"@otn" ygotAnnotation:"true"`
	RateClass           E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE     `path:"config/rate-class" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛRateClass          []ygot.Annotation                              `path:"config/@rate-class" ygotAnnotation:"true"`
	TestSignal          *bool                                          `path:"config/test-signal" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛTestSignal         []ygot.Annotation                              `path:"config/@test-signal" ygotAnnotation:"true"`
	TribProtocol        E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE       `path:"config/trib-protocol" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛTribProtocol       []ygot.Annotation                              `path:"config/@trib-protocol" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Channel implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Channel) IsYANGGoStruct() {}

// NewAssignment creates a new entry in the Assignment list of the
// TerminalDevice_Channel struct. The keys of the list are populated from the input
// arguments.
func (t *TerminalDevice_Channel) NewAssignment(Index uint32) (*TerminalDevice_Channel_Assignment, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Assignment == nil {
		t.Assignment = make(map[uint32]*TerminalDevice_Channel_Assignment)
	}

	key := Index

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Assignment[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Assignment", key)
	}

	t.Assignment[key] = &TerminalDevice_Channel_Assignment{
		Index: &Index,
	}

	return t.Assignment[key], nil
}

// RenameAssignment renames an entry in the list Assignment within
// the TerminalDevice_Channel struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *TerminalDevice_Channel) RenameAssignment(oldK, newK uint32) error {
	if _, ok := t.Assignment[newK]; ok {
		return fmt.Errorf("key %v already exists in Assignment", newK)
	}

	e, ok := t.Assignment[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Assignment", oldK)
	}
	e.Index = &newK

	t.Assignment[newK] = e
	delete(t.Assignment, oldK)
	return nil
}

// GetOrCreateAssignmentMap returns the list (map) from TerminalDevice_Channel.
//
// It initializes the field if not already initialized.
func (t *TerminalDevice_Channel) GetOrCreateAssignmentMap() map[uint32]*TerminalDevice_Channel_Assignment {
	if t.Assignment == nil {
		t.Assignment = make(map[uint32]*TerminalDevice_Channel_Assignment)
	}
	return t.Assignment
}

// GetOrCreateAssignment retrieves the value with the specified keys from
// the receiver TerminalDevice_Channel. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *TerminalDevice_Channel) GetOrCreateAssignment(Index uint32) *TerminalDevice_Channel_Assignment {

	key := Index

	if v, ok := t.Assignment[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewAssignment(Index)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateAssignment got unexpected error: %v", err))
	}
	return v
}

// GetAssignment retrieves the value with the specified key from
// the Assignment map field of TerminalDevice_Channel. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *TerminalDevice_Channel) GetAssignment(Index uint32) *TerminalDevice_Channel_Assignment {

	if t == nil {
		return nil
	}

	key := Index

	if lm, ok := t.Assignment[key]; ok {
		return lm
	}
	return nil
}

// AppendAssignment appends the supplied TerminalDevice_Channel_Assignment struct to the
// list Assignment of TerminalDevice_Channel. If the key value(s) specified in
// the supplied TerminalDevice_Channel_Assignment already exist in the list, an error is
// returned.
func (t *TerminalDevice_Channel) AppendAssignment(v *TerminalDevice_Channel_Assignment) error {
	if v.Index == nil {
		return fmt.Errorf("invalid nil key received for Index")
	}

	key := *v.Index

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Assignment == nil {
		t.Assignment = make(map[uint32]*TerminalDevice_Channel_Assignment)
	}

	if _, ok := t.Assignment[key]; ok {
		return fmt.Errorf("duplicate key for list Assignment %v", key)
	}

	t.Assignment[key] = v
	return nil
}

// GetOrCreateEthernet retrieves the value of the Ethernet field
// or returns the existing field if it already exists.
func (t *TerminalDevice_Channel) GetOrCreateEthernet() *TerminalDevice_Channel_Ethernet {
	if t.Ethernet != nil {
		return t.Ethernet
	}
	t.Ethernet = &TerminalDevice_Channel_Ethernet{}
	return t.Ethernet
}

// GetOrCreateIngress retrieves the value of the Ingress field
// or returns the existing field if it already exists.
func (t *TerminalDevice_Channel) GetOrCreateIngress() *TerminalDevice_Channel_Ingress {
	if t.Ingress != nil {
		return t.Ingress
	}
	t.Ingress = &TerminalDevice_Channel_Ingress{}
	return t.Ingress
}

// GetOrCreateOtn retrieves the value of the Otn field
// or returns the existing field if it already exists.
func (t *TerminalDevice_Channel) GetOrCreateOtn() *TerminalDevice_Channel_Otn {
	if t.Otn != nil {
		return t.Otn
	}
	t.Otn = &TerminalDevice_Channel_Otn{}
	return t.Otn
}

// GetEthernet returns the value of the Ethernet struct pointer
// from TerminalDevice_Channel. If the receiver or the field Ethernet is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *TerminalDevice_Channel) GetEthernet() *TerminalDevice_Channel_Ethernet {
	if t != nil && t.Ethernet != nil {
		return t.Ethernet
	}
	return nil
}

// GetIngress returns the value of the Ingress struct pointer
// from TerminalDevice_Channel. If the receiver or the field Ingress is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *TerminalDevice_Channel) GetIngress() *TerminalDevice_Channel_Ingress {
	if t != nil && t.Ingress != nil {
		return t.Ingress
	}
	return nil
}

// GetOtn returns the value of the Otn struct pointer
// from TerminalDevice_Channel. If the receiver or the field Otn is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *TerminalDevice_Channel) GetOtn() *TerminalDevice_Channel_Otn {
	if t != nil && t.Otn != nil {
		return t.Otn
	}
	return nil
}

// GetAdminState retrieves the value of the leaf AdminState from the TerminalDevice_Channel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AdminState is set, it can
// safely use t.GetAdminState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AdminState == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel) GetAdminState() E_TransportTypes_AdminStateType {
	if t == nil || t.AdminState == 0 {
		return 0
	}
	return t.AdminState
}

// GetClientMappingMode retrieves the value of the leaf ClientMappingMode from the TerminalDevice_Channel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ClientMappingMode is set, it can
// safely use t.GetClientMappingMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ClientMappingMode == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel) GetClientMappingMode() E_TransportTypes_CLIENT_MAPPING_MODE {
	if t == nil || t.ClientMappingMode == 0 {
		return 0
	}
	return t.ClientMappingMode
}

// GetDescription retrieves the value of the leaf Description from the TerminalDevice_Channel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetIndex retrieves the value of the leaf Index from the TerminalDevice_Channel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel) GetIndex() uint32 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetLinkState retrieves the value of the leaf LinkState from the TerminalDevice_Channel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LinkState is set, it can
// safely use t.GetLinkState() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LinkState == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel) GetLinkState() E_Channel_LinkState {
	if t == nil || t.LinkState == 0 {
		return 0
	}
	return t.LinkState
}

// GetLogicalChannelType retrieves the value of the leaf LogicalChannelType from the TerminalDevice_Channel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LogicalChannelType is set, it can
// safely use t.GetLogicalChannelType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LogicalChannelType == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel) GetLogicalChannelType() E_TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE {
	if t == nil || t.LogicalChannelType == 0 {
		return 0
	}
	return t.LogicalChannelType
}

// GetLoopbackMode retrieves the value of the leaf LoopbackMode from the TerminalDevice_Channel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LoopbackMode is set, it can
// safely use t.GetLoopbackMode() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LoopbackMode == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel) GetLoopbackMode() E_TransportTypes_LoopbackModeType {
	if t == nil || t.LoopbackMode == 0 {
		return TransportTypes_LoopbackModeType_NONE
	}
	return t.LoopbackMode
}

// GetRateClass retrieves the value of the leaf RateClass from the TerminalDevice_Channel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RateClass is set, it can
// safely use t.GetRateClass() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RateClass == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel) GetRateClass() E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE {
	if t == nil || t.RateClass == 0 {
		return 0
	}
	return t.RateClass
}

// GetTestSignal retrieves the value of the leaf TestSignal from the TerminalDevice_Channel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TestSignal is set, it can
// safely use t.GetTestSignal() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TestSignal == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel) GetTestSignal() bool {
	if t == nil || t.TestSignal == nil {
		return false
	}
	return *t.TestSignal
}

// GetTribProtocol retrieves the value of the leaf TribProtocol from the TerminalDevice_Channel
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TribProtocol is set, it can
// safely use t.GetTribProtocol() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TribProtocol == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel) GetTribProtocol() E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE {
	if t == nil || t.TribProtocol == 0 {
		return 0
	}
	return t.TribProtocol
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Channel
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Channel) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.LoopbackMode == 0 {
		t.LoopbackMode = TransportTypes_LoopbackModeType_NONE
	}
	t.Ethernet.PopulateDefaults()
	t.Ingress.PopulateDefaults()
	t.Otn.PopulateDefaults()
	for _, e := range t.Assignment {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the TerminalDevice_Channel struct, which is a YANG list entry.
func (t *TerminalDevice_Channel) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Channel"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Channel) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Channel.
func (*TerminalDevice_Channel) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Channel_Assignment represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/logical-channel-assignments/assignment YANG schema element.
type TerminalDevice_Channel_Assignment struct {
	ΛMetadata           []ygot.Annotation                       `path:"@" ygotAnnotation:"true"`
	Allocation          *float64                                `path:"config/allocation" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛAllocation         []ygot.Annotation                       `path:"config/@allocation" ygotAnnotation:"true"`
	AssignmentType      E_Assignment_AssignmentType             `path:"config/assignment-type" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛAssignmentType     []ygot.Annotation                       `path:"config/@assignment-type" ygotAnnotation:"true"`
	Description         *string                                 `path:"config/description" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛDescription        []ygot.Annotation                       `path:"config/@description" ygotAnnotation:"true"`
	Index               *uint32                                 `path:"config/index|index" module:"openconfig-terminal-device/openconfig-terminal-device|openconfig-terminal-device"`
	ΛIndex              []ygot.Annotation                       `path:"config/@index|@index" ygotAnnotation:"true"`
	LogicalChannel      *uint32                                 `path:"config/logical-channel" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛLogicalChannel     []ygot.Annotation                       `path:"config/@logical-channel" ygotAnnotation:"true"`
	Mapping             E_TransportTypes_FRAME_MAPPING_PROTOCOL `path:"config/mapping" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛMapping            []ygot.Annotation                       `path:"config/@mapping" ygotAnnotation:"true"`
	OpticalChannel      *string                                 `path:"config/optical-channel" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛOpticalChannel     []ygot.Annotation                       `path:"config/@optical-channel" ygotAnnotation:"true"`
	TributarySlotIndex  *int32                                  `path:"config/tributary-slot-index" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛTributarySlotIndex []ygot.Annotation                       `path:"config/@tributary-slot-index" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Channel_Assignment implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Channel_Assignment) IsYANGGoStruct() {}

// GetAllocation retrieves the value of the leaf Allocation from the TerminalDevice_Channel_Assignment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Allocation is set, it can
// safely use t.GetAllocation() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Allocation == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Assignment) GetAllocation() float64 {
	if t == nil || t.Allocation == nil {
		return 0.0
	}
	return *t.Allocation
}

// GetAssignmentType retrieves the value of the leaf AssignmentType from the TerminalDevice_Channel_Assignment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AssignmentType is set, it can
// safely use t.GetAssignmentType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AssignmentType == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Assignment) GetAssignmentType() E_Assignment_AssignmentType {
	if t == nil || t.AssignmentType == 0 {
		return 0
	}
	return t.AssignmentType
}

// GetDescription retrieves the value of the leaf Description from the TerminalDevice_Channel_Assignment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Assignment) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetIndex retrieves the value of the leaf Index from the TerminalDevice_Channel_Assignment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Index is set, it can
// safely use t.GetIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Index == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Assignment) GetIndex() uint32 {
	if t == nil || t.Index == nil {
		return 0
	}
	return *t.Index
}

// GetLogicalChannel retrieves the value of the leaf LogicalChannel from the TerminalDevice_Channel_Assignment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LogicalChannel is set, it can
// safely use t.GetLogicalChannel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LogicalChannel == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Assignment) GetLogicalChannel() uint32 {
	if t == nil || t.LogicalChannel == nil {
		return 0
	}
	return *t.LogicalChannel
}

// GetMapping retrieves the value of the leaf Mapping from the TerminalDevice_Channel_Assignment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Mapping is set, it can
// safely use t.GetMapping() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Mapping == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Assignment) GetMapping() E_TransportTypes_FRAME_MAPPING_PROTOCOL {
	if t == nil || t.Mapping == 0 {
		return 0
	}
	return t.Mapping
}

// GetOpticalChannel retrieves the value of the leaf OpticalChannel from the TerminalDevice_Channel_Assignment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OpticalChannel is set, it can
// safely use t.GetOpticalChannel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OpticalChannel == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Assignment) GetOpticalChannel() string {
	if t == nil || t.OpticalChannel == nil {
		return ""
	}
	return *t.OpticalChannel
}

// GetTributarySlotIndex retrieves the value of the leaf TributarySlotIndex from the TerminalDevice_Channel_Assignment
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TributarySlotIndex is set, it can
// safely use t.GetTributarySlotIndex() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TributarySlotIndex == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Assignment) GetTributarySlotIndex() int32 {
	if t == nil || t.TributarySlotIndex == nil {
		return 0
	}
	return *t.TributarySlotIndex
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Channel_Assignment
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Channel_Assignment) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the TerminalDevice_Channel_Assignment struct, which is a YANG list entry.
func (t *TerminalDevice_Channel_Assignment) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Index == nil {
		return nil, fmt.Errorf("nil value for key Index")
	}

	return map[string]interface{}{
		"index": *t.Index,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Assignment) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Channel_Assignment"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Assignment) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Channel_Assignment) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Channel_Assignment.
func (*TerminalDevice_Channel_Assignment) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Channel_Ethernet represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet YANG schema element.
type TerminalDevice_Channel_Ethernet struct {
	ΛMetadata                    []ygot.Annotation                           `path:"@" ygotAnnotation:"true"`
	AlsDelay                     *uint32                                     `path:"config/als-delay" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛAlsDelay                    []ygot.Annotation                           `path:"config/@als-delay" ygotAnnotation:"true"`
	ClientAls                    E_Ethernet_ClientAls                        `path:"config/client-als" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛClientAls                   []ygot.Annotation                           `path:"config/@client-als" ygotAnnotation:"true"`
	Esnr                         *TerminalDevice_Channel_Ethernet_Esnr       `path:"state/esnr" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛEsnr                        []ygot.Annotation                           `path:"state/@esnr" ygotAnnotation:"true"`
	FecUncorrectableBlocks       *uint64                                     `path:"state/fec-uncorrectable-blocks" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛFecUncorrectableBlocks      []ygot.Annotation                           `path:"state/@fec-uncorrectable-blocks" ygotAnnotation:"true"`
	In_8021QFrames               *uint64                                     `path:"state/in-8021q-frames" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛIn_8021QFrames              []ygot.Annotation                           `path:"state/@in-8021q-frames" ygotAnnotation:"true"`
	InBlockErrors                *uint64                                     `path:"state/in-block-errors" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInBlockErrors               []ygot.Annotation                           `path:"state/@in-block-errors" ygotAnnotation:"true"`
	InCarrierErrors              *uint64                                     `path:"state/in-carrier-errors" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInCarrierErrors             []ygot.Annotation                           `path:"state/@in-carrier-errors" ygotAnnotation:"true"`
	InCrcErrors                  *uint64                                     `path:"state/in-crc-errors" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInCrcErrors                 []ygot.Annotation                           `path:"state/@in-crc-errors" ygotAnnotation:"true"`
	InFragmentFrames             *uint64                                     `path:"state/in-fragment-frames" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInFragmentFrames            []ygot.Annotation                           `path:"state/@in-fragment-frames" ygotAnnotation:"true"`
	InInterruptedTx              *uint64                                     `path:"state/in-interrupted-tx" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInInterruptedTx             []ygot.Annotation                           `path:"state/@in-interrupted-tx" ygotAnnotation:"true"`
	InJabberFrames               *uint64                                     `path:"state/in-jabber-frames" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInJabberFrames              []ygot.Annotation                           `path:"state/@in-jabber-frames" ygotAnnotation:"true"`
	InLateCollision              *uint64                                     `path:"state/in-late-collision" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInLateCollision             []ygot.Annotation                           `path:"state/@in-late-collision" ygotAnnotation:"true"`
	InMacControlFrames           *uint64                                     `path:"state/in-mac-control-frames" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInMacControlFrames          []ygot.Annotation                           `path:"state/@in-mac-control-frames" ygotAnnotation:"true"`
	InMacErrorsRx                *uint64                                     `path:"state/in-mac-errors-rx" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInMacErrorsRx               []ygot.Annotation                           `path:"state/@in-mac-errors-rx" ygotAnnotation:"true"`
	InMacPauseFrames             *uint64                                     `path:"state/in-mac-pause-frames" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInMacPauseFrames            []ygot.Annotation                           `path:"state/@in-mac-pause-frames" ygotAnnotation:"true"`
	InMaxsizeExceeded            *uint64                                     `path:"state/in-maxsize-exceeded" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInMaxsizeExceeded           []ygot.Annotation                           `path:"state/@in-maxsize-exceeded" ygotAnnotation:"true"`
	InOversizeFrames             *uint64                                     `path:"state/in-oversize-frames" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInOversizeFrames            []ygot.Annotation                           `path:"state/@in-oversize-frames" ygotAnnotation:"true"`
	InPcsBipErrors               *uint64                                     `path:"state/in-pcs-bip-errors" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInPcsBipErrors              []ygot.Annotation                           `path:"state/@in-pcs-bip-errors" ygotAnnotation:"true"`
	InPcsErroredSeconds          *uint64                                     `path:"state/in-pcs-errored-seconds" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInPcsErroredSeconds         []ygot.Annotation                           `path:"state/@in-pcs-errored-seconds" ygotAnnotation:"true"`
	InPcsSeverelyErroredSeconds  *uint64                                     `path:"state/in-pcs-severely-errored-seconds" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInPcsSeverelyErroredSeconds []ygot.Annotation                           `path:"state/@in-pcs-severely-errored-seconds" ygotAnnotation:"true"`
	InPcsUnavailableSeconds      *uint64                                     `path:"state/in-pcs-unavailable-seconds" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInPcsUnavailableSeconds     []ygot.Annotation                           `path:"state/@in-pcs-unavailable-seconds" ygotAnnotation:"true"`
	InSingleCollision            *uint64                                     `path:"state/in-single-collision" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInSingleCollision           []ygot.Annotation                           `path:"state/@in-single-collision" ygotAnnotation:"true"`
	InSymbolError                *uint64                                     `path:"state/in-symbol-error" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInSymbolError               []ygot.Annotation                           `path:"state/@in-symbol-error" ygotAnnotation:"true"`
	InUndersizeFrames            *uint64                                     `path:"state/in-undersize-frames" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInUndersizeFrames           []ygot.Annotation                           `path:"state/@in-undersize-frames" ygotAnnotation:"true"`
	Lldp                         *TerminalDevice_Channel_Ethernet_Lldp       `path:"lldp" module:"openconfig-terminal-device"`
	ΛLldp                        []ygot.Annotation                           `path:"@lldp" ygotAnnotation:"true"`
	Out_8021QFrames              *uint64                                     `path:"state/out-8021q-frames" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛOut_8021QFrames             []ygot.Annotation                           `path:"state/@out-8021q-frames" ygotAnnotation:"true"`
	OutBlockErrors               *uint64                                     `path:"state/out-block-errors" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛOutBlockErrors              []ygot.Annotation                           `path:"state/@out-block-errors" ygotAnnotation:"true"`
	OutCrcErrors                 *uint64                                     `path:"state/out-crc-errors" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛOutCrcErrors                []ygot.Annotation                           `path:"state/@out-crc-errors" ygotAnnotation:"true"`
	OutMacControlFrames          *uint64                                     `path:"state/out-mac-control-frames" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛOutMacControlFrames         []ygot.Annotation                           `path:"state/@out-mac-control-frames" ygotAnnotation:"true"`
	OutMacErrorsTx               *uint64                                     `path:"state/out-mac-errors-tx" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛOutMacErrorsTx              []ygot.Annotation                           `path:"state/@out-mac-errors-tx" ygotAnnotation:"true"`
	OutMacPauseFrames            *uint64                                     `path:"state/out-mac-pause-frames" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛOutMacPauseFrames           []ygot.Annotation                           `path:"state/@out-mac-pause-frames" ygotAnnotation:"true"`
	OutPcsBipErrors              *uint64                                     `path:"state/out-pcs-bip-errors" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛOutPcsBipErrors             []ygot.Annotation                           `path:"state/@out-pcs-bip-errors" ygotAnnotation:"true"`
	PostFecBer                   *TerminalDevice_Channel_Ethernet_PostFecBer `path:"state/post-fec-ber" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛPostFecBer                  []ygot.Annotation                           `path:"state/@post-fec-ber" ygotAnnotation:"true"`
	PreFecBer                    *TerminalDevice_Channel_Ethernet_PreFecBer  `path:"state/pre-fec-ber" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛPreFecBer                   []ygot.Annotation                           `path:"state/@pre-fec-ber" ygotAnnotation:"true"`
	QValue                       *TerminalDevice_Channel_Ethernet_QValue     `path:"state/q-value" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛQValue                      []ygot.Annotation                           `path:"state/@q-value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Channel_Ethernet implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Channel_Ethernet) IsYANGGoStruct() {}

// GetOrCreateEsnr retrieves the value of the Esnr field
// or returns the existing field if it already exists.
func (t *TerminalDevice_Channel_Ethernet) GetOrCreateEsnr() *TerminalDevice_Channel_Ethernet_Esnr {
	if t.Esnr != nil {
		return t.Esnr
	}
	t.Esnr = &TerminalDevice_Channel_Ethernet_Esnr{}
	return t.Esnr
}

// GetOrCreateLldp retrieves the value of the Lldp field
// or returns the existing field if it already exists.
func (t *TerminalDevice_Channel_Ethernet) GetOrCreateLldp() *TerminalDevice_Channel_Ethernet_Lldp {
	if t.Lldp != nil {
		return t.Lldp
	}
	t.Lldp = &TerminalDevice_Channel_Ethernet_Lldp{}
	return t.Lldp
}

// GetOrCreatePostFecBer retrieves the value of the PostFecBer field
// or returns the existing field if it already exists.
func (t *TerminalDevice_Channel_Ethernet) GetOrCreatePostFecBer() *TerminalDevice_Channel_Ethernet_PostFecBer {
	if t.PostFecBer != nil {
		return t.PostFecBer
	}
	t.PostFecBer = &TerminalDevice_Channel_Ethernet_PostFecBer{}
	return t.PostFecBer
}

// GetOrCreatePreFecBer retrieves the value of the PreFecBer field
// or returns the existing field if it already exists.
func (t *TerminalDevice_Channel_Ethernet) GetOrCreatePreFecBer() *TerminalDevice_Channel_Ethernet_PreFecBer {
	if t.PreFecBer != nil {
		return t.PreFecBer
	}
	t.PreFecBer = &TerminalDevice_Channel_Ethernet_PreFecBer{}
	return t.PreFecBer
}

// GetOrCreateQValue retrieves the value of the QValue field
// or returns the existing field if it already exists.
func (t *TerminalDevice_Channel_Ethernet) GetOrCreateQValue() *TerminalDevice_Channel_Ethernet_QValue {
	if t.QValue != nil {
		return t.QValue
	}
	t.QValue = &TerminalDevice_Channel_Ethernet_QValue{}
	return t.QValue
}

// GetEsnr returns the value of the Esnr struct pointer
// from TerminalDevice_Channel_Ethernet. If the receiver or the field Esnr is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *TerminalDevice_Channel_Ethernet) GetEsnr() *TerminalDevice_Channel_Ethernet_Esnr {
	if t != nil && t.Esnr != nil {
		return t.Esnr
	}
	return nil
}

// GetLldp returns the value of the Lldp struct pointer
// from TerminalDevice_Channel_Ethernet. If the receiver or the field Lldp is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *TerminalDevice_Channel_Ethernet) GetLldp() *TerminalDevice_Channel_Ethernet_Lldp {
	if t != nil && t.Lldp != nil {
		return t.Lldp
	}
	return nil
}

// GetPostFecBer returns the value of the PostFecBer struct pointer
// from TerminalDevice_Channel_Ethernet. If the receiver or the field PostFecBer is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *TerminalDevice_Channel_Ethernet) GetPostFecBer() *TerminalDevice_Channel_Ethernet_PostFecBer {
	if t != nil && t.PostFecBer != nil {
		return t.PostFecBer
	}
	return nil
}

// GetPreFecBer returns the value of the PreFecBer struct pointer
// from TerminalDevice_Channel_Ethernet. If the receiver or the field PreFecBer is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *TerminalDevice_Channel_Ethernet) GetPreFecBer() *TerminalDevice_Channel_Ethernet_PreFecBer {
	if t != nil && t.PreFecBer != nil {
		return t.PreFecBer
	}
	return nil
}

// GetQValue returns the value of the QValue struct pointer
// from TerminalDevice_Channel_Ethernet. If the receiver or the field QValue is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *TerminalDevice_Channel_Ethernet) GetQValue() *TerminalDevice_Channel_Ethernet_QValue {
	if t != nil && t.QValue != nil {
		return t.QValue
	}
	return nil
}

// GetAlsDelay retrieves the value of the leaf AlsDelay from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if AlsDelay is set, it can
// safely use t.GetAlsDelay() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.AlsDelay == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetAlsDelay() uint32 {
	if t == nil || t.AlsDelay == nil {
		return 0
	}
	return *t.AlsDelay
}

// GetClientAls retrieves the value of the leaf ClientAls from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ClientAls is set, it can
// safely use t.GetClientAls() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ClientAls == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetClientAls() E_Ethernet_ClientAls {
	if t == nil || t.ClientAls == 0 {
		return Ethernet_ClientAls_ETHERNET
	}
	return t.ClientAls
}

// GetFecUncorrectableBlocks retrieves the value of the leaf FecUncorrectableBlocks from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FecUncorrectableBlocks is set, it can
// safely use t.GetFecUncorrectableBlocks() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FecUncorrectableBlocks == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetFecUncorrectableBlocks() uint64 {
	if t == nil || t.FecUncorrectableBlocks == nil {
		return 0
	}
	return *t.FecUncorrectableBlocks
}

// GetIn_8021QFrames retrieves the value of the leaf In_8021QFrames from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if In_8021QFrames is set, it can
// safely use t.GetIn_8021QFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.In_8021QFrames == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetIn_8021QFrames() uint64 {
	if t == nil || t.In_8021QFrames == nil {
		return 0
	}
	return *t.In_8021QFrames
}

// GetInBlockErrors retrieves the value of the leaf InBlockErrors from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InBlockErrors is set, it can
// safely use t.GetInBlockErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InBlockErrors == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInBlockErrors() uint64 {
	if t == nil || t.InBlockErrors == nil {
		return 0
	}
	return *t.InBlockErrors
}

// GetInCarrierErrors retrieves the value of the leaf InCarrierErrors from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InCarrierErrors is set, it can
// safely use t.GetInCarrierErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InCarrierErrors == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInCarrierErrors() uint64 {
	if t == nil || t.InCarrierErrors == nil {
		return 0
	}
	return *t.InCarrierErrors
}

// GetInCrcErrors retrieves the value of the leaf InCrcErrors from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InCrcErrors is set, it can
// safely use t.GetInCrcErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InCrcErrors == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInCrcErrors() uint64 {
	if t == nil || t.InCrcErrors == nil {
		return 0
	}
	return *t.InCrcErrors
}

// GetInFragmentFrames retrieves the value of the leaf InFragmentFrames from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InFragmentFrames is set, it can
// safely use t.GetInFragmentFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InFragmentFrames == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInFragmentFrames() uint64 {
	if t == nil || t.InFragmentFrames == nil {
		return 0
	}
	return *t.InFragmentFrames
}

// GetInInterruptedTx retrieves the value of the leaf InInterruptedTx from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InInterruptedTx is set, it can
// safely use t.GetInInterruptedTx() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InInterruptedTx == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInInterruptedTx() uint64 {
	if t == nil || t.InInterruptedTx == nil {
		return 0
	}
	return *t.InInterruptedTx
}

// GetInJabberFrames retrieves the value of the leaf InJabberFrames from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InJabberFrames is set, it can
// safely use t.GetInJabberFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InJabberFrames == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInJabberFrames() uint64 {
	if t == nil || t.InJabberFrames == nil {
		return 0
	}
	return *t.InJabberFrames
}

// GetInLateCollision retrieves the value of the leaf InLateCollision from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InLateCollision is set, it can
// safely use t.GetInLateCollision() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InLateCollision == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInLateCollision() uint64 {
	if t == nil || t.InLateCollision == nil {
		return 0
	}
	return *t.InLateCollision
}

// GetInMacControlFrames retrieves the value of the leaf InMacControlFrames from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMacControlFrames is set, it can
// safely use t.GetInMacControlFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMacControlFrames == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInMacControlFrames() uint64 {
	if t == nil || t.InMacControlFrames == nil {
		return 0
	}
	return *t.InMacControlFrames
}

// GetInMacErrorsRx retrieves the value of the leaf InMacErrorsRx from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMacErrorsRx is set, it can
// safely use t.GetInMacErrorsRx() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMacErrorsRx == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInMacErrorsRx() uint64 {
	if t == nil || t.InMacErrorsRx == nil {
		return 0
	}
	return *t.InMacErrorsRx
}

// GetInMacPauseFrames retrieves the value of the leaf InMacPauseFrames from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMacPauseFrames is set, it can
// safely use t.GetInMacPauseFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMacPauseFrames == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInMacPauseFrames() uint64 {
	if t == nil || t.InMacPauseFrames == nil {
		return 0
	}
	return *t.InMacPauseFrames
}

// GetInMaxsizeExceeded retrieves the value of the leaf InMaxsizeExceeded from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InMaxsizeExceeded is set, it can
// safely use t.GetInMaxsizeExceeded() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InMaxsizeExceeded == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInMaxsizeExceeded() uint64 {
	if t == nil || t.InMaxsizeExceeded == nil {
		return 0
	}
	return *t.InMaxsizeExceeded
}

// GetInOversizeFrames retrieves the value of the leaf InOversizeFrames from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InOversizeFrames is set, it can
// safely use t.GetInOversizeFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InOversizeFrames == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInOversizeFrames() uint64 {
	if t == nil || t.InOversizeFrames == nil {
		return 0
	}
	return *t.InOversizeFrames
}

// GetInPcsBipErrors retrieves the value of the leaf InPcsBipErrors from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPcsBipErrors is set, it can
// safely use t.GetInPcsBipErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPcsBipErrors == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInPcsBipErrors() uint64 {
	if t == nil || t.InPcsBipErrors == nil {
		return 0
	}
	return *t.InPcsBipErrors
}

// GetInPcsErroredSeconds retrieves the value of the leaf InPcsErroredSeconds from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPcsErroredSeconds is set, it can
// safely use t.GetInPcsErroredSeconds() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPcsErroredSeconds == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInPcsErroredSeconds() uint64 {
	if t == nil || t.InPcsErroredSeconds == nil {
		return 0
	}
	return *t.InPcsErroredSeconds
}

// GetInPcsSeverelyErroredSeconds retrieves the value of the leaf InPcsSeverelyErroredSeconds from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPcsSeverelyErroredSeconds is set, it can
// safely use t.GetInPcsSeverelyErroredSeconds() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPcsSeverelyErroredSeconds == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInPcsSeverelyErroredSeconds() uint64 {
	if t == nil || t.InPcsSeverelyErroredSeconds == nil {
		return 0
	}
	return *t.InPcsSeverelyErroredSeconds
}

// GetInPcsUnavailableSeconds retrieves the value of the leaf InPcsUnavailableSeconds from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InPcsUnavailableSeconds is set, it can
// safely use t.GetInPcsUnavailableSeconds() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InPcsUnavailableSeconds == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInPcsUnavailableSeconds() uint64 {
	if t == nil || t.InPcsUnavailableSeconds == nil {
		return 0
	}
	return *t.InPcsUnavailableSeconds
}

// GetInSingleCollision retrieves the value of the leaf InSingleCollision from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InSingleCollision is set, it can
// safely use t.GetInSingleCollision() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InSingleCollision == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInSingleCollision() uint64 {
	if t == nil || t.InSingleCollision == nil {
		return 0
	}
	return *t.InSingleCollision
}

// GetInSymbolError retrieves the value of the leaf InSymbolError from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InSymbolError is set, it can
// safely use t.GetInSymbolError() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InSymbolError == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInSymbolError() uint64 {
	if t == nil || t.InSymbolError == nil {
		return 0
	}
	return *t.InSymbolError
}

// GetInUndersizeFrames retrieves the value of the leaf InUndersizeFrames from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if InUndersizeFrames is set, it can
// safely use t.GetInUndersizeFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.InUndersizeFrames == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetInUndersizeFrames() uint64 {
	if t == nil || t.InUndersizeFrames == nil {
		return 0
	}
	return *t.InUndersizeFrames
}

// GetOut_8021QFrames retrieves the value of the leaf Out_8021QFrames from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Out_8021QFrames is set, it can
// safely use t.GetOut_8021QFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Out_8021QFrames == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetOut_8021QFrames() uint64 {
	if t == nil || t.Out_8021QFrames == nil {
		return 0
	}
	return *t.Out_8021QFrames
}

// GetOutBlockErrors retrieves the value of the leaf OutBlockErrors from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutBlockErrors is set, it can
// safely use t.GetOutBlockErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutBlockErrors == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetOutBlockErrors() uint64 {
	if t == nil || t.OutBlockErrors == nil {
		return 0
	}
	return *t.OutBlockErrors
}

// GetOutCrcErrors retrieves the value of the leaf OutCrcErrors from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutCrcErrors is set, it can
// safely use t.GetOutCrcErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutCrcErrors == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetOutCrcErrors() uint64 {
	if t == nil || t.OutCrcErrors == nil {
		return 0
	}
	return *t.OutCrcErrors
}

// GetOutMacControlFrames retrieves the value of the leaf OutMacControlFrames from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutMacControlFrames is set, it can
// safely use t.GetOutMacControlFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutMacControlFrames == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetOutMacControlFrames() uint64 {
	if t == nil || t.OutMacControlFrames == nil {
		return 0
	}
	return *t.OutMacControlFrames
}

// GetOutMacErrorsTx retrieves the value of the leaf OutMacErrorsTx from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutMacErrorsTx is set, it can
// safely use t.GetOutMacErrorsTx() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutMacErrorsTx == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetOutMacErrorsTx() uint64 {
	if t == nil || t.OutMacErrorsTx == nil {
		return 0
	}
	return *t.OutMacErrorsTx
}

// GetOutMacPauseFrames retrieves the value of the leaf OutMacPauseFrames from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutMacPauseFrames is set, it can
// safely use t.GetOutMacPauseFrames() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutMacPauseFrames == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetOutMacPauseFrames() uint64 {
	if t == nil || t.OutMacPauseFrames == nil {
		return 0
	}
	return *t.OutMacPauseFrames
}

// GetOutPcsBipErrors retrieves the value of the leaf OutPcsBipErrors from the TerminalDevice_Channel_Ethernet
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OutPcsBipErrors is set, it can
// safely use t.GetOutPcsBipErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OutPcsBipErrors == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet) GetOutPcsBipErrors() uint64 {
	if t == nil || t.OutPcsBipErrors == nil {
		return 0
	}
	return *t.OutPcsBipErrors
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Channel_Ethernet
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Channel_Ethernet) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.AlsDelay == nil {
		var v uint32 = 0
		t.AlsDelay = &v
	}
	if t.ClientAls == 0 {
		t.ClientAls = Ethernet_ClientAls_ETHERNET
	}
	t.Esnr.PopulateDefaults()
	t.Lldp.PopulateDefaults()
	t.PostFecBer.PopulateDefaults()
	t.PreFecBer.PopulateDefaults()
	t.QValue.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Channel_Ethernet"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Channel_Ethernet) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Channel_Ethernet.
func (*TerminalDevice_Channel_Ethernet) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Channel_Ethernet_Esnr represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/state/esnr YANG schema element.
type TerminalDevice_Channel_Ethernet_Esnr struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Channel_Ethernet_Esnr implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Channel_Ethernet_Esnr) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the TerminalDevice_Channel_Ethernet_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Esnr) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the TerminalDevice_Channel_Ethernet_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Esnr) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the TerminalDevice_Channel_Ethernet_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Esnr) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the TerminalDevice_Channel_Ethernet_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Esnr) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the TerminalDevice_Channel_Ethernet_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Esnr) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the TerminalDevice_Channel_Ethernet_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Esnr) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the TerminalDevice_Channel_Ethernet_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Esnr) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Channel_Ethernet_Esnr
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Channel_Ethernet_Esnr) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet_Esnr) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Channel_Ethernet_Esnr"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet_Esnr) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Channel_Ethernet_Esnr) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Channel_Ethernet_Esnr.
func (*TerminalDevice_Channel_Ethernet_Esnr) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Channel_Ethernet_Lldp represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp YANG schema element.
type TerminalDevice_Channel_Ethernet_Lldp struct {
	ΛMetadata []ygot.Annotation                                         `path:"@" ygotAnnotation:"true"`
	Counters  *TerminalDevice_Channel_Ethernet_Lldp_Counters            `path:"state/counters" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛCounters []ygot.Annotation                                         `path:"state/@counters" ygotAnnotation:"true"`
	Enabled   *bool                                                     `path:"config/enabled" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛEnabled  []ygot.Annotation                                         `path:"config/@enabled" ygotAnnotation:"true"`
	Neighbor  map[string]*TerminalDevice_Channel_Ethernet_Lldp_Neighbor `path:"neighbors/neighbor" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛNeighbor []ygot.Annotation                                         `path:"neighbors/@neighbor" ygotAnnotation:"true"`
	Snooping  *bool                                                     `path:"config/snooping" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛSnooping []ygot.Annotation                                         `path:"config/@snooping" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Channel_Ethernet_Lldp implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Channel_Ethernet_Lldp) IsYANGGoStruct() {}

// NewNeighbor creates a new entry in the Neighbor list of the
// TerminalDevice_Channel_Ethernet_Lldp struct. The keys of the list are populated from the input
// arguments.
func (t *TerminalDevice_Channel_Ethernet_Lldp) NewNeighbor(Id string) (*TerminalDevice_Channel_Ethernet_Lldp_Neighbor, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*TerminalDevice_Channel_Ethernet_Lldp_Neighbor)
	}

	key := Id

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Neighbor[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Neighbor", key)
	}

	t.Neighbor[key] = &TerminalDevice_Channel_Ethernet_Lldp_Neighbor{
		Id: &Id,
	}

	return t.Neighbor[key], nil
}

// RenameNeighbor renames an entry in the list Neighbor within
// the TerminalDevice_Channel_Ethernet_Lldp struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *TerminalDevice_Channel_Ethernet_Lldp) RenameNeighbor(oldK, newK string) error {
	if _, ok := t.Neighbor[newK]; ok {
		return fmt.Errorf("key %v already exists in Neighbor", newK)
	}

	e, ok := t.Neighbor[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Neighbor", oldK)
	}
	e.Id = &newK

	t.Neighbor[newK] = e
	delete(t.Neighbor, oldK)
	return nil
}

// GetOrCreateNeighborMap returns the list (map) from TerminalDevice_Channel_Ethernet_Lldp.
//
// It initializes the field if not already initialized.
func (t *TerminalDevice_Channel_Ethernet_Lldp) GetOrCreateNeighborMap() map[string]*TerminalDevice_Channel_Ethernet_Lldp_Neighbor {
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*TerminalDevice_Channel_Ethernet_Lldp_Neighbor)
	}
	return t.Neighbor
}

// GetOrCreateNeighbor retrieves the value with the specified keys from
// the receiver TerminalDevice_Channel_Ethernet_Lldp. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *TerminalDevice_Channel_Ethernet_Lldp) GetOrCreateNeighbor(Id string) *TerminalDevice_Channel_Ethernet_Lldp_Neighbor {

	key := Id

	if v, ok := t.Neighbor[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewNeighbor(Id)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateNeighbor got unexpected error: %v", err))
	}
	return v
}

// GetNeighbor retrieves the value with the specified key from
// the Neighbor map field of TerminalDevice_Channel_Ethernet_Lldp. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *TerminalDevice_Channel_Ethernet_Lldp) GetNeighbor(Id string) *TerminalDevice_Channel_Ethernet_Lldp_Neighbor {

	if t == nil {
		return nil
	}

	key := Id

	if lm, ok := t.Neighbor[key]; ok {
		return lm
	}
	return nil
}

// AppendNeighbor appends the supplied TerminalDevice_Channel_Ethernet_Lldp_Neighbor struct to the
// list Neighbor of TerminalDevice_Channel_Ethernet_Lldp. If the key value(s) specified in
// the supplied TerminalDevice_Channel_Ethernet_Lldp_Neighbor already exist in the list, an error is
// returned.
func (t *TerminalDevice_Channel_Ethernet_Lldp) AppendNeighbor(v *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) error {
	if v.Id == nil {
		return fmt.Errorf("invalid nil key received for Id")
	}

	key := *v.Id

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Neighbor == nil {
		t.Neighbor = make(map[string]*TerminalDevice_Channel_Ethernet_Lldp_Neighbor)
	}

	if _, ok := t.Neighbor[key]; ok {
		return fmt.Errorf("duplicate key for list Neighbor %v", key)
	}

	t.Neighbor[key] = v
	return nil
}

// GetOrCreateCounters retrieves the value of the Counters field
// or returns the existing field if it already exists.
func (t *TerminalDevice_Channel_Ethernet_Lldp) GetOrCreateCounters() *TerminalDevice_Channel_Ethernet_Lldp_Counters {
	if t.Counters != nil {
		return t.Counters
	}
	t.Counters = &TerminalDevice_Channel_Ethernet_Lldp_Counters{}
	return t.Counters
}

// GetCounters returns the value of the Counters struct pointer
// from TerminalDevice_Channel_Ethernet_Lldp. If the receiver or the field Counters is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *TerminalDevice_Channel_Ethernet_Lldp) GetCounters() *TerminalDevice_Channel_Ethernet_Lldp_Counters {
	if t != nil && t.Counters != nil {
		return t.Counters
	}
	return nil
}

// GetEnabled retrieves the value of the leaf Enabled from the TerminalDevice_Channel_Ethernet_Lldp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Enabled is set, it can
// safely use t.GetEnabled() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Enabled == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

// GetSnooping retrieves the value of the leaf Snooping from the TerminalDevice_Channel_Ethernet_Lldp
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Snooping is set, it can
// safely use t.GetSnooping() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Snooping == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp) GetSnooping() bool {
	if t == nil || t.Snooping == nil {
		return false
	}
	return *t.Snooping
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Channel_Ethernet_Lldp
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Channel_Ethernet_Lldp) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	if t.Enabled == nil {
		var v bool = false
		t.Enabled = &v
	}
	if t.Snooping == nil {
		var v bool = false
		t.Snooping = &v
	}
	t.Counters.PopulateDefaults()
	for _, e := range t.Neighbor {
		e.PopulateDefaults()
	}
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet_Lldp) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Channel_Ethernet_Lldp"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet_Lldp) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Channel_Ethernet_Lldp) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Channel_Ethernet_Lldp.
func (*TerminalDevice_Channel_Ethernet_Lldp) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Channel_Ethernet_Lldp_Counters represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp/state/counters YANG schema element.
type TerminalDevice_Channel_Ethernet_Lldp_Counters struct {
	ΛMetadata      []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	FrameDiscard   *uint64           `path:"frame-discard" module:"openconfig-terminal-device"`
	ΛFrameDiscard  []ygot.Annotation `path:"@frame-discard" ygotAnnotation:"true"`
	FrameErrorIn   *uint64           `path:"frame-error-in" module:"openconfig-terminal-device"`
	ΛFrameErrorIn  []ygot.Annotation `path:"@frame-error-in" ygotAnnotation:"true"`
	FrameErrorOut  *uint64           `path:"frame-error-out" module:"openconfig-terminal-device"`
	ΛFrameErrorOut []ygot.Annotation `path:"@frame-error-out" ygotAnnotation:"true"`
	FrameIn        *uint64           `path:"frame-in" module:"openconfig-terminal-device"`
	ΛFrameIn       []ygot.Annotation `path:"@frame-in" ygotAnnotation:"true"`
	FrameOut       *uint64           `path:"frame-out" module:"openconfig-terminal-device"`
	ΛFrameOut      []ygot.Annotation `path:"@frame-out" ygotAnnotation:"true"`
	LastClear      *string           `path:"last-clear" module:"openconfig-terminal-device"`
	ΛLastClear     []ygot.Annotation `path:"@last-clear" ygotAnnotation:"true"`
	TlvDiscard     *uint64           `path:"tlv-discard" module:"openconfig-terminal-device"`
	ΛTlvDiscard    []ygot.Annotation `path:"@tlv-discard" ygotAnnotation:"true"`
	TlvUnknown     *uint64           `path:"tlv-unknown" module:"openconfig-terminal-device"`
	ΛTlvUnknown    []ygot.Annotation `path:"@tlv-unknown" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Channel_Ethernet_Lldp_Counters implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Channel_Ethernet_Lldp_Counters) IsYANGGoStruct() {}

// GetFrameDiscard retrieves the value of the leaf FrameDiscard from the TerminalDevice_Channel_Ethernet_Lldp_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FrameDiscard is set, it can
// safely use t.GetFrameDiscard() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FrameDiscard == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Counters) GetFrameDiscard() uint64 {
	if t == nil || t.FrameDiscard == nil {
		return 0
	}
	return *t.FrameDiscard
}

// GetFrameErrorIn retrieves the value of the leaf FrameErrorIn from the TerminalDevice_Channel_Ethernet_Lldp_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FrameErrorIn is set, it can
// safely use t.GetFrameErrorIn() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FrameErrorIn == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Counters) GetFrameErrorIn() uint64 {
	if t == nil || t.FrameErrorIn == nil {
		return 0
	}
	return *t.FrameErrorIn
}

// GetFrameErrorOut retrieves the value of the leaf FrameErrorOut from the TerminalDevice_Channel_Ethernet_Lldp_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FrameErrorOut is set, it can
// safely use t.GetFrameErrorOut() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FrameErrorOut == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Counters) GetFrameErrorOut() uint64 {
	if t == nil || t.FrameErrorOut == nil {
		return 0
	}
	return *t.FrameErrorOut
}

// GetFrameIn retrieves the value of the leaf FrameIn from the TerminalDevice_Channel_Ethernet_Lldp_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FrameIn is set, it can
// safely use t.GetFrameIn() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FrameIn == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Counters) GetFrameIn() uint64 {
	if t == nil || t.FrameIn == nil {
		return 0
	}
	return *t.FrameIn
}

// GetFrameOut retrieves the value of the leaf FrameOut from the TerminalDevice_Channel_Ethernet_Lldp_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FrameOut is set, it can
// safely use t.GetFrameOut() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FrameOut == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Counters) GetFrameOut() uint64 {
	if t == nil || t.FrameOut == nil {
		return 0
	}
	return *t.FrameOut
}

// GetLastClear retrieves the value of the leaf LastClear from the TerminalDevice_Channel_Ethernet_Lldp_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastClear is set, it can
// safely use t.GetLastClear() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastClear == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Counters) GetLastClear() string {
	if t == nil || t.LastClear == nil {
		return ""
	}
	return *t.LastClear
}

// GetTlvDiscard retrieves the value of the leaf TlvDiscard from the TerminalDevice_Channel_Ethernet_Lldp_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TlvDiscard is set, it can
// safely use t.GetTlvDiscard() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TlvDiscard == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Counters) GetTlvDiscard() uint64 {
	if t == nil || t.TlvDiscard == nil {
		return 0
	}
	return *t.TlvDiscard
}

// GetTlvUnknown retrieves the value of the leaf TlvUnknown from the TerminalDevice_Channel_Ethernet_Lldp_Counters
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TlvUnknown is set, it can
// safely use t.GetTlvUnknown() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TlvUnknown == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Counters) GetTlvUnknown() uint64 {
	if t == nil || t.TlvUnknown == nil {
		return 0
	}
	return *t.TlvUnknown
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Channel_Ethernet_Lldp_Counters
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Counters) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Counters) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Channel_Ethernet_Lldp_Counters"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Counters) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Counters) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Channel_Ethernet_Lldp_Counters.
func (*TerminalDevice_Channel_Ethernet_Lldp_Counters) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Channel_Ethernet_Lldp_Neighbor represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp/neighbors/neighbor YANG schema element.
type TerminalDevice_Channel_Ethernet_Lldp_Neighbor struct {
	ΛMetadata              []ygot.Annotation                                                                                            `path:"@" ygotAnnotation:"true"`
	Age                    *uint64                                                                                                      `path:"state/age" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛAge                   []ygot.Annotation                                                                                            `path:"state/@age" ygotAnnotation:"true"`
	ChassisId              *string                                                                                                      `path:"state/chassis-id" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛChassisId             []ygot.Annotation                                                                                            `path:"state/@chassis-id" ygotAnnotation:"true"`
	ChassisIdType          E_LldpTypes_ChassisIdType                                                                                    `path:"state/chassis-id-type" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛChassisIdType         []ygot.Annotation                                                                                            `path:"state/@chassis-id-type" ygotAnnotation:"true"`
	Id                     *string                                                                                                      `path:"state/id|id" module:"openconfig-terminal-device/openconfig-terminal-device|openconfig-terminal-device"`
	ΛId                    []ygot.Annotation                                                                                            `path:"state/@id|@id" ygotAnnotation:"true"`
	LastUpdate             *int64                                                                                                       `path:"state/last-update" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛLastUpdate            []ygot.Annotation                                                                                            `path:"state/@last-update" ygotAnnotation:"true"`
	ManagementAddress      *string                                                                                                      `path:"state/management-address" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛManagementAddress     []ygot.Annotation                                                                                            `path:"state/@management-address" ygotAnnotation:"true"`
	ManagementAddressType  *string                                                                                                      `path:"state/management-address-type" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛManagementAddressType []ygot.Annotation                                                                                            `path:"state/@management-address-type" ygotAnnotation:"true"`
	PortDescription        *string                                                                                                      `path:"state/port-description" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛPortDescription       []ygot.Annotation                                                                                            `path:"state/@port-description" ygotAnnotation:"true"`
	PortId                 *string                                                                                                      `path:"state/port-id" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛPortId                []ygot.Annotation                                                                                            `path:"state/@port-id" ygotAnnotation:"true"`
	PortIdType             E_LldpTypes_PortIdType                                                                                       `path:"state/port-id-type" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛPortIdType            []ygot.Annotation                                                                                            `path:"state/@port-id-type" ygotAnnotation:"true"`
	SystemDescription      *string                                                                                                      `path:"state/system-description" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛSystemDescription     []ygot.Annotation                                                                                            `path:"state/@system-description" ygotAnnotation:"true"`
	SystemName             *string                                                                                                      `path:"state/system-name" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛSystemName            []ygot.Annotation                                                                                            `path:"state/@system-name" ygotAnnotation:"true"`
	Tlv                    map[TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv_Key]*TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv `path:"custom-tlvs/tlv" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛTlv                   []ygot.Annotation                                                                                            `path:"custom-tlvs/@tlv" ygotAnnotation:"true"`
	Ttl                    *uint16                                                                                                      `path:"state/ttl" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛTtl                   []ygot.Annotation                                                                                            `path:"state/@ttl" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Channel_Ethernet_Lldp_Neighbor implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Channel_Ethernet_Lldp_Neighbor) IsYANGGoStruct() {}

// TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv_Key represents the key for list Tlv of element /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp/neighbors/neighbor.
type TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv_Key struct {
	Type       int32  `path:"type"`
	Oui        string `path:"oui"`
	OuiSubtype string `path:"oui-subtype"`
}

// IsYANGGoKeyStruct ensures that TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv_Key partially implements the
// yang.GoKeyStruct interface. This allows functions that need to
// handle this key struct to identify it as being generated by gogen.
func (TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv_Key) IsYANGGoKeyStruct() {}

// ΛListKeyMap returns the values of the TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv_Key key struct.
func (t TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv_Key) ΛListKeyMap() (map[string]interface{}, error) {
	return map[string]interface{}{
		"type":        t.Type,
		"oui":         t.Oui,
		"oui-subtype": t.OuiSubtype,
	}, nil
}

// NewTlv creates a new entry in the Tlv list of the
// TerminalDevice_Channel_Ethernet_Lldp_Neighbor struct. The keys of the list are populated from the input
// arguments.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) NewTlv(Type int32, Oui string, OuiSubtype string) (*TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv, error) {

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Tlv == nil {
		t.Tlv = make(map[TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv_Key]*TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv)
	}

	key := TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv_Key{
		Type:       Type,
		Oui:        Oui,
		OuiSubtype: OuiSubtype,
	}

	// Ensure that this key has not already been used in the
	// list. Keyed YANG lists do not allow duplicate keys to
	// be created.
	if _, ok := t.Tlv[key]; ok {
		return nil, fmt.Errorf("duplicate key %v for list Tlv", key)
	}

	t.Tlv[key] = &TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv{
		Type:       &Type,
		Oui:        &Oui,
		OuiSubtype: &OuiSubtype,
	}

	return t.Tlv[key], nil
}

// RenameTlv renames an entry in the list Tlv within
// the TerminalDevice_Channel_Ethernet_Lldp_Neighbor struct. The entry with key oldK is renamed to newK updating
// the key within the value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) RenameTlv(oldK, newK TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv_Key) error {
	if _, ok := t.Tlv[newK]; ok {
		return fmt.Errorf("key %v already exists in Tlv", newK)
	}

	e, ok := t.Tlv[oldK]
	if !ok {
		return fmt.Errorf("key %v not found in Tlv", oldK)
	}
	e.Type = &newK.Type
	e.Oui = &newK.Oui
	e.OuiSubtype = &newK.OuiSubtype

	t.Tlv[newK] = e
	delete(t.Tlv, oldK)
	return nil
}

// GetOrCreateTlvMap returns the list (map) from TerminalDevice_Channel_Ethernet_Lldp_Neighbor.
//
// It initializes the field if not already initialized.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) GetOrCreateTlvMap() map[TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv_Key]*TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv {
	if t.Tlv == nil {
		t.Tlv = make(map[TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv_Key]*TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv)
	}
	return t.Tlv
}

// GetOrCreateTlv retrieves the value with the specified keys from
// the receiver TerminalDevice_Channel_Ethernet_Lldp_Neighbor. If the entry does not exist, then it is created.
// It returns the existing or new list member.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) GetOrCreateTlv(Type int32, Oui string, OuiSubtype string) *TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv {

	key := TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv_Key{
		Type:       Type,
		Oui:        Oui,
		OuiSubtype: OuiSubtype,
	}

	if v, ok := t.Tlv[key]; ok {
		return v
	}
	// Panic if we receive an error, since we should have retrieved an existing
	// list member. This allows chaining of GetOrCreate methods.
	v, err := t.NewTlv(Type, Oui, OuiSubtype)
	if err != nil {
		panic(fmt.Sprintf("GetOrCreateTlv got unexpected error: %v", err))
	}
	return v
}

// GetTlv retrieves the value with the specified key from
// the Tlv map field of TerminalDevice_Channel_Ethernet_Lldp_Neighbor. If the receiver is nil, or
// the specified key is not present in the list, nil is returned such that Get*
// methods may be safely chained.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) GetTlv(Type int32, Oui string, OuiSubtype string) *TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv {

	if t == nil {
		return nil
	}

	key := TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv_Key{
		Type:       Type,
		Oui:        Oui,
		OuiSubtype: OuiSubtype,
	}

	if lm, ok := t.Tlv[key]; ok {
		return lm
	}
	return nil
}

// AppendTlv appends the supplied TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv struct to the
// list Tlv of TerminalDevice_Channel_Ethernet_Lldp_Neighbor. If the key value(s) specified in
// the supplied TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv already exist in the list, an error is
// returned.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) AppendTlv(v *TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv) error {
	if v.Type == nil {
		return fmt.Errorf("invalid nil key for Type")
	}

	if v.Oui == nil {
		return fmt.Errorf("invalid nil key for Oui")
	}

	if v.OuiSubtype == nil {
		return fmt.Errorf("invalid nil key for OuiSubtype")
	}

	key := TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv_Key{
		Type:       *v.Type,
		Oui:        *v.Oui,
		OuiSubtype: *v.OuiSubtype,
	}

	// Initialise the list within the receiver struct if it has not already been
	// created.
	if t.Tlv == nil {
		t.Tlv = make(map[TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv_Key]*TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv)
	}

	if _, ok := t.Tlv[key]; ok {
		return fmt.Errorf("duplicate key for list Tlv %v", key)
	}

	t.Tlv[key] = v
	return nil
}

// GetAge retrieves the value of the leaf Age from the TerminalDevice_Channel_Ethernet_Lldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Age is set, it can
// safely use t.GetAge() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Age == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) GetAge() uint64 {
	if t == nil || t.Age == nil {
		return 0
	}
	return *t.Age
}

// GetChassisId retrieves the value of the leaf ChassisId from the TerminalDevice_Channel_Ethernet_Lldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ChassisId is set, it can
// safely use t.GetChassisId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ChassisId == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) GetChassisId() string {
	if t == nil || t.ChassisId == nil {
		return ""
	}
	return *t.ChassisId
}

// GetChassisIdType retrieves the value of the leaf ChassisIdType from the TerminalDevice_Channel_Ethernet_Lldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ChassisIdType is set, it can
// safely use t.GetChassisIdType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ChassisIdType == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) GetChassisIdType() E_LldpTypes_ChassisIdType {
	if t == nil || t.ChassisIdType == 0 {
		return 0
	}
	return t.ChassisIdType
}

// GetId retrieves the value of the leaf Id from the TerminalDevice_Channel_Ethernet_Lldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Id is set, it can
// safely use t.GetId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Id == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) GetId() string {
	if t == nil || t.Id == nil {
		return ""
	}
	return *t.Id
}

// GetLastUpdate retrieves the value of the leaf LastUpdate from the TerminalDevice_Channel_Ethernet_Lldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if LastUpdate is set, it can
// safely use t.GetLastUpdate() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.LastUpdate == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) GetLastUpdate() int64 {
	if t == nil || t.LastUpdate == nil {
		return 0
	}
	return *t.LastUpdate
}

// GetManagementAddress retrieves the value of the leaf ManagementAddress from the TerminalDevice_Channel_Ethernet_Lldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ManagementAddress is set, it can
// safely use t.GetManagementAddress() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ManagementAddress == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) GetManagementAddress() string {
	if t == nil || t.ManagementAddress == nil {
		return ""
	}
	return *t.ManagementAddress
}

// GetManagementAddressType retrieves the value of the leaf ManagementAddressType from the TerminalDevice_Channel_Ethernet_Lldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ManagementAddressType is set, it can
// safely use t.GetManagementAddressType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ManagementAddressType == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) GetManagementAddressType() string {
	if t == nil || t.ManagementAddressType == nil {
		return ""
	}
	return *t.ManagementAddressType
}

// GetPortDescription retrieves the value of the leaf PortDescription from the TerminalDevice_Channel_Ethernet_Lldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortDescription is set, it can
// safely use t.GetPortDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortDescription == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) GetPortDescription() string {
	if t == nil || t.PortDescription == nil {
		return ""
	}
	return *t.PortDescription
}

// GetPortId retrieves the value of the leaf PortId from the TerminalDevice_Channel_Ethernet_Lldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortId is set, it can
// safely use t.GetPortId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortId == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) GetPortId() string {
	if t == nil || t.PortId == nil {
		return ""
	}
	return *t.PortId
}

// GetPortIdType retrieves the value of the leaf PortIdType from the TerminalDevice_Channel_Ethernet_Lldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PortIdType is set, it can
// safely use t.GetPortIdType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PortIdType == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) GetPortIdType() E_LldpTypes_PortIdType {
	if t == nil || t.PortIdType == 0 {
		return 0
	}
	return t.PortIdType
}

// GetSystemDescription retrieves the value of the leaf SystemDescription from the TerminalDevice_Channel_Ethernet_Lldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemDescription is set, it can
// safely use t.GetSystemDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemDescription == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) GetSystemDescription() string {
	if t == nil || t.SystemDescription == nil {
		return ""
	}
	return *t.SystemDescription
}

// GetSystemName retrieves the value of the leaf SystemName from the TerminalDevice_Channel_Ethernet_Lldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SystemName is set, it can
// safely use t.GetSystemName() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SystemName == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) GetSystemName() string {
	if t == nil || t.SystemName == nil {
		return ""
	}
	return *t.SystemName
}

// GetTtl retrieves the value of the leaf Ttl from the TerminalDevice_Channel_Ethernet_Lldp_Neighbor
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Ttl is set, it can
// safely use t.GetTtl() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Ttl == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) GetTtl() uint16 {
	if t == nil || t.Ttl == nil {
		return 0
	}
	return *t.Ttl
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Channel_Ethernet_Lldp_Neighbor
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	for _, e := range t.Tlv {
		e.PopulateDefaults()
	}
}

// ΛListKeyMap returns the keys of the TerminalDevice_Channel_Ethernet_Lldp_Neighbor struct, which is a YANG list entry.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Id == nil {
		return nil, fmt.Errorf("nil value for key Id")
	}

	return map[string]interface{}{
		"id": *t.Id,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Channel_Ethernet_Lldp_Neighbor"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Channel_Ethernet_Lldp_Neighbor.
func (*TerminalDevice_Channel_Ethernet_Lldp_Neighbor) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp/neighbors/neighbor/custom-tlvs/tlv YANG schema element.
type TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv struct {
	ΛMetadata   []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Oui         *string           `path:"state/oui|oui" module:"openconfig-terminal-device/openconfig-terminal-device|openconfig-terminal-device"`
	ΛOui        []ygot.Annotation `path:"state/@oui|@oui" ygotAnnotation:"true"`
	OuiSubtype  *string           `path:"state/oui-subtype|oui-subtype" module:"openconfig-terminal-device/openconfig-terminal-device|openconfig-terminal-device"`
	ΛOuiSubtype []ygot.Annotation `path:"state/@oui-subtype|@oui-subtype" ygotAnnotation:"true"`
	Type        *int32            `path:"state/type|type" module:"openconfig-terminal-device/openconfig-terminal-device|openconfig-terminal-device"`
	ΛType       []ygot.Annotation `path:"state/@type|@type" ygotAnnotation:"true"`
	Value       Binary            `path:"state/value" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛValue      []ygot.Annotation `path:"state/@value" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv) IsYANGGoStruct() {}

// GetOui retrieves the value of the leaf Oui from the TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Oui is set, it can
// safely use t.GetOui() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Oui == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv) GetOui() string {
	if t == nil || t.Oui == nil {
		return ""
	}
	return *t.Oui
}

// GetOuiSubtype retrieves the value of the leaf OuiSubtype from the TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if OuiSubtype is set, it can
// safely use t.GetOuiSubtype() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.OuiSubtype == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv) GetOuiSubtype() string {
	if t == nil || t.OuiSubtype == nil {
		return ""
	}
	return *t.OuiSubtype
}

// GetType retrieves the value of the leaf Type from the TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Type is set, it can
// safely use t.GetType() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Type == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv) GetType() int32 {
	if t == nil || t.Type == nil {
		return 0
	}
	return *t.Type
}

// GetValue retrieves the value of the leaf Value from the TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Value is set, it can
// safely use t.GetValue() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Value == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv) GetValue() Binary {
	if t == nil || t.Value == nil {
		return nil
	}
	return t.Value
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv struct, which is a YANG list entry.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv) ΛListKeyMap() (map[string]interface{}, error) {
	if t.Oui == nil {
		return nil, fmt.Errorf("nil value for key Oui")
	}

	if t.OuiSubtype == nil {
		return nil, fmt.Errorf("nil value for key OuiSubtype")
	}

	if t.Type == nil {
		return nil, fmt.Errorf("nil value for key Type")
	}

	return map[string]interface{}{
		"oui":         *t.Oui,
		"oui-subtype": *t.OuiSubtype,
		"type":        *t.Type,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv.
func (*TerminalDevice_Channel_Ethernet_Lldp_Neighbor_Tlv) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Channel_Ethernet_PostFecBer represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/state/post-fec-ber YANG schema element.
type TerminalDevice_Channel_Ethernet_PostFecBer struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Channel_Ethernet_PostFecBer implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Channel_Ethernet_PostFecBer) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the TerminalDevice_Channel_Ethernet_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_PostFecBer) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the TerminalDevice_Channel_Ethernet_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_PostFecBer) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the TerminalDevice_Channel_Ethernet_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_PostFecBer) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the TerminalDevice_Channel_Ethernet_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_PostFecBer) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the TerminalDevice_Channel_Ethernet_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_PostFecBer) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the TerminalDevice_Channel_Ethernet_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_PostFecBer) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the TerminalDevice_Channel_Ethernet_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_PostFecBer) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Channel_Ethernet_PostFecBer
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Channel_Ethernet_PostFecBer) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet_PostFecBer) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Channel_Ethernet_PostFecBer"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet_PostFecBer) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Channel_Ethernet_PostFecBer) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Channel_Ethernet_PostFecBer.
func (*TerminalDevice_Channel_Ethernet_PostFecBer) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Channel_Ethernet_PreFecBer represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/state/pre-fec-ber YANG schema element.
type TerminalDevice_Channel_Ethernet_PreFecBer struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Channel_Ethernet_PreFecBer implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Channel_Ethernet_PreFecBer) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the TerminalDevice_Channel_Ethernet_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_PreFecBer) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the TerminalDevice_Channel_Ethernet_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_PreFecBer) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the TerminalDevice_Channel_Ethernet_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_PreFecBer) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the TerminalDevice_Channel_Ethernet_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_PreFecBer) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the TerminalDevice_Channel_Ethernet_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_PreFecBer) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the TerminalDevice_Channel_Ethernet_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_PreFecBer) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the TerminalDevice_Channel_Ethernet_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_PreFecBer) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Channel_Ethernet_PreFecBer
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Channel_Ethernet_PreFecBer) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet_PreFecBer) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Channel_Ethernet_PreFecBer"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet_PreFecBer) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Channel_Ethernet_PreFecBer) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Channel_Ethernet_PreFecBer.
func (*TerminalDevice_Channel_Ethernet_PreFecBer) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Channel_Ethernet_QValue represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/state/q-value YANG schema element.
type TerminalDevice_Channel_Ethernet_QValue struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Channel_Ethernet_QValue implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Channel_Ethernet_QValue) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the TerminalDevice_Channel_Ethernet_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_QValue) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the TerminalDevice_Channel_Ethernet_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_QValue) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the TerminalDevice_Channel_Ethernet_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_QValue) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the TerminalDevice_Channel_Ethernet_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_QValue) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the TerminalDevice_Channel_Ethernet_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_QValue) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the TerminalDevice_Channel_Ethernet_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_QValue) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the TerminalDevice_Channel_Ethernet_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ethernet_QValue) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Channel_Ethernet_QValue
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Channel_Ethernet_QValue) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet_QValue) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Channel_Ethernet_QValue"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ethernet_QValue) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Channel_Ethernet_QValue) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Channel_Ethernet_QValue.
func (*TerminalDevice_Channel_Ethernet_QValue) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Channel_Ingress represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ingress YANG schema element.
type TerminalDevice_Channel_Ingress struct {
	ΛMetadata        []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Interface        *string           `path:"config/interface" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛInterface       []ygot.Annotation `path:"config/@interface" ygotAnnotation:"true"`
	PhysicalChannel  []uint16          `path:"config/physical-channel" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛPhysicalChannel []ygot.Annotation `path:"config/@physical-channel" ygotAnnotation:"true"`
	Transceiver      *string           `path:"config/transceiver" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛTransceiver     []ygot.Annotation `path:"config/@transceiver" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Channel_Ingress implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Channel_Ingress) IsYANGGoStruct() {}

// GetInterface retrieves the value of the leaf Interface from the TerminalDevice_Channel_Ingress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interface is set, it can
// safely use t.GetInterface() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interface == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ingress) GetInterface() string {
	if t == nil || t.Interface == nil {
		return ""
	}
	return *t.Interface
}

// GetPhysicalChannel retrieves the value of the leaf PhysicalChannel from the TerminalDevice_Channel_Ingress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if PhysicalChannel is set, it can
// safely use t.GetPhysicalChannel() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.PhysicalChannel == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ingress) GetPhysicalChannel() []uint16 {
	if t == nil || t.PhysicalChannel == nil {
		return nil
	}
	return t.PhysicalChannel
}

// GetTransceiver retrieves the value of the leaf Transceiver from the TerminalDevice_Channel_Ingress
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Transceiver is set, it can
// safely use t.GetTransceiver() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Transceiver == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Ingress) GetTransceiver() string {
	if t == nil || t.Transceiver == nil {
		return ""
	}
	return *t.Transceiver
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Channel_Ingress
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Channel_Ingress) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ingress) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Channel_Ingress"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Ingress) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Channel_Ingress) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Channel_Ingress.
func (*TerminalDevice_Channel_Ingress) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Channel_Otn represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/otn YANG schema element.
type TerminalDevice_Channel_Otn struct {
	ΛMetadata                 []ygot.Annotation                           `path:"@" ygotAnnotation:"true"`
	BackgroundBlockErrors     *uint64                                     `path:"state/background-block-errors" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛBackgroundBlockErrors    []ygot.Annotation                           `path:"state/@background-block-errors" ygotAnnotation:"true"`
	CodeViolations            *uint64                                     `path:"state/code-violations" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛCodeViolations           []ygot.Annotation                           `path:"state/@code-violations" ygotAnnotation:"true"`
	ErroredBlocks             *uint64                                     `path:"state/errored-blocks" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛErroredBlocks            []ygot.Annotation                           `path:"state/@errored-blocks" ygotAnnotation:"true"`
	ErroredSeconds            *uint64                                     `path:"state/errored-seconds" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛErroredSeconds           []ygot.Annotation                           `path:"state/@errored-seconds" ygotAnnotation:"true"`
	Esnr                      *TerminalDevice_Channel_Otn_Esnr            `path:"state/esnr" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛEsnr                     []ygot.Annotation                           `path:"state/@esnr" ygotAnnotation:"true"`
	FecCorrectedBits          *uint64                                     `path:"state/fec-corrected-bits" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛFecCorrectedBits         []ygot.Annotation                           `path:"state/@fec-corrected-bits" ygotAnnotation:"true"`
	FecCorrectedBytes         *uint64                                     `path:"state/fec-corrected-bytes" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛFecCorrectedBytes        []ygot.Annotation                           `path:"state/@fec-corrected-bytes" ygotAnnotation:"true"`
	FecUncorrectableBlocks    *uint64                                     `path:"state/fec-uncorrectable-blocks" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛFecUncorrectableBlocks   []ygot.Annotation                           `path:"state/@fec-uncorrectable-blocks" ygotAnnotation:"true"`
	FecUncorrectableWords     *uint64                                     `path:"state/fec-uncorrectable-words" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛFecUncorrectableWords    []ygot.Annotation                           `path:"state/@fec-uncorrectable-words" ygotAnnotation:"true"`
	PostFecBer                *TerminalDevice_Channel_Otn_PostFecBer      `path:"state/post-fec-ber" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛPostFecBer               []ygot.Annotation                           `path:"state/@post-fec-ber" ygotAnnotation:"true"`
	PreFecBer                 *TerminalDevice_Channel_Otn_PreFecBer       `path:"state/pre-fec-ber" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛPreFecBer                []ygot.Annotation                           `path:"state/@pre-fec-ber" ygotAnnotation:"true"`
	QValue                    *TerminalDevice_Channel_Otn_QValue          `path:"state/q-value" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛQValue                   []ygot.Annotation                           `path:"state/@q-value" ygotAnnotation:"true"`
	RdiMsg                    *string                                     `path:"state/rdi-msg" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛRdiMsg                   []ygot.Annotation                           `path:"state/@rdi-msg" ygotAnnotation:"true"`
	SeverelyErroredSeconds    *uint64                                     `path:"state/severely-errored-seconds" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛSeverelyErroredSeconds   []ygot.Annotation                           `path:"state/@severely-errored-seconds" ygotAnnotation:"true"`
	TributarySlotGranularity  E_TransportTypes_TRIBUTARY_SLOT_GRANULARITY `path:"config/tributary-slot-granularity" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛTributarySlotGranularity []ygot.Annotation                           `path:"config/@tributary-slot-granularity" ygotAnnotation:"true"`
	TtiMsgAuto                *bool                                       `path:"config/tti-msg-auto" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛTtiMsgAuto               []ygot.Annotation                           `path:"config/@tti-msg-auto" ygotAnnotation:"true"`
	TtiMsgExpected            *string                                     `path:"config/tti-msg-expected" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛTtiMsgExpected           []ygot.Annotation                           `path:"config/@tti-msg-expected" ygotAnnotation:"true"`
	TtiMsgRecv                *string                                     `path:"state/tti-msg-recv" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛTtiMsgRecv               []ygot.Annotation                           `path:"state/@tti-msg-recv" ygotAnnotation:"true"`
	TtiMsgTransmit            *string                                     `path:"config/tti-msg-transmit" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛTtiMsgTransmit           []ygot.Annotation                           `path:"config/@tti-msg-transmit" ygotAnnotation:"true"`
	UnavailableSeconds        *uint64                                     `path:"state/unavailable-seconds" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛUnavailableSeconds       []ygot.Annotation                           `path:"state/@unavailable-seconds" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Channel_Otn implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Channel_Otn) IsYANGGoStruct() {}

// GetOrCreateEsnr retrieves the value of the Esnr field
// or returns the existing field if it already exists.
func (t *TerminalDevice_Channel_Otn) GetOrCreateEsnr() *TerminalDevice_Channel_Otn_Esnr {
	if t.Esnr != nil {
		return t.Esnr
	}
	t.Esnr = &TerminalDevice_Channel_Otn_Esnr{}
	return t.Esnr
}

// GetOrCreatePostFecBer retrieves the value of the PostFecBer field
// or returns the existing field if it already exists.
func (t *TerminalDevice_Channel_Otn) GetOrCreatePostFecBer() *TerminalDevice_Channel_Otn_PostFecBer {
	if t.PostFecBer != nil {
		return t.PostFecBer
	}
	t.PostFecBer = &TerminalDevice_Channel_Otn_PostFecBer{}
	return t.PostFecBer
}

// GetOrCreatePreFecBer retrieves the value of the PreFecBer field
// or returns the existing field if it already exists.
func (t *TerminalDevice_Channel_Otn) GetOrCreatePreFecBer() *TerminalDevice_Channel_Otn_PreFecBer {
	if t.PreFecBer != nil {
		return t.PreFecBer
	}
	t.PreFecBer = &TerminalDevice_Channel_Otn_PreFecBer{}
	return t.PreFecBer
}

// GetOrCreateQValue retrieves the value of the QValue field
// or returns the existing field if it already exists.
func (t *TerminalDevice_Channel_Otn) GetOrCreateQValue() *TerminalDevice_Channel_Otn_QValue {
	if t.QValue != nil {
		return t.QValue
	}
	t.QValue = &TerminalDevice_Channel_Otn_QValue{}
	return t.QValue
}

// GetEsnr returns the value of the Esnr struct pointer
// from TerminalDevice_Channel_Otn. If the receiver or the field Esnr is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *TerminalDevice_Channel_Otn) GetEsnr() *TerminalDevice_Channel_Otn_Esnr {
	if t != nil && t.Esnr != nil {
		return t.Esnr
	}
	return nil
}

// GetPostFecBer returns the value of the PostFecBer struct pointer
// from TerminalDevice_Channel_Otn. If the receiver or the field PostFecBer is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *TerminalDevice_Channel_Otn) GetPostFecBer() *TerminalDevice_Channel_Otn_PostFecBer {
	if t != nil && t.PostFecBer != nil {
		return t.PostFecBer
	}
	return nil
}

// GetPreFecBer returns the value of the PreFecBer struct pointer
// from TerminalDevice_Channel_Otn. If the receiver or the field PreFecBer is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *TerminalDevice_Channel_Otn) GetPreFecBer() *TerminalDevice_Channel_Otn_PreFecBer {
	if t != nil && t.PreFecBer != nil {
		return t.PreFecBer
	}
	return nil
}

// GetQValue returns the value of the QValue struct pointer
// from TerminalDevice_Channel_Otn. If the receiver or the field QValue is nil, nil
// is returned such that the Get* methods can be safely chained.
func (t *TerminalDevice_Channel_Otn) GetQValue() *TerminalDevice_Channel_Otn_QValue {
	if t != nil && t.QValue != nil {
		return t.QValue
	}
	return nil
}

// GetBackgroundBlockErrors retrieves the value of the leaf BackgroundBlockErrors from the TerminalDevice_Channel_Otn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if BackgroundBlockErrors is set, it can
// safely use t.GetBackgroundBlockErrors() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.BackgroundBlockErrors == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn) GetBackgroundBlockErrors() uint64 {
	if t == nil || t.BackgroundBlockErrors == nil {
		return 0
	}
	return *t.BackgroundBlockErrors
}

// GetCodeViolations retrieves the value of the leaf CodeViolations from the TerminalDevice_Channel_Otn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if CodeViolations is set, it can
// safely use t.GetCodeViolations() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.CodeViolations == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn) GetCodeViolations() uint64 {
	if t == nil || t.CodeViolations == nil {
		return 0
	}
	return *t.CodeViolations
}

// GetErroredBlocks retrieves the value of the leaf ErroredBlocks from the TerminalDevice_Channel_Otn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ErroredBlocks is set, it can
// safely use t.GetErroredBlocks() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ErroredBlocks == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn) GetErroredBlocks() uint64 {
	if t == nil || t.ErroredBlocks == nil {
		return 0
	}
	return *t.ErroredBlocks
}

// GetErroredSeconds retrieves the value of the leaf ErroredSeconds from the TerminalDevice_Channel_Otn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ErroredSeconds is set, it can
// safely use t.GetErroredSeconds() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ErroredSeconds == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn) GetErroredSeconds() uint64 {
	if t == nil || t.ErroredSeconds == nil {
		return 0
	}
	return *t.ErroredSeconds
}

// GetFecCorrectedBits retrieves the value of the leaf FecCorrectedBits from the TerminalDevice_Channel_Otn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FecCorrectedBits is set, it can
// safely use t.GetFecCorrectedBits() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FecCorrectedBits == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn) GetFecCorrectedBits() uint64 {
	if t == nil || t.FecCorrectedBits == nil {
		return 0
	}
	return *t.FecCorrectedBits
}

// GetFecCorrectedBytes retrieves the value of the leaf FecCorrectedBytes from the TerminalDevice_Channel_Otn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FecCorrectedBytes is set, it can
// safely use t.GetFecCorrectedBytes() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FecCorrectedBytes == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn) GetFecCorrectedBytes() uint64 {
	if t == nil || t.FecCorrectedBytes == nil {
		return 0
	}
	return *t.FecCorrectedBytes
}

// GetFecUncorrectableBlocks retrieves the value of the leaf FecUncorrectableBlocks from the TerminalDevice_Channel_Otn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FecUncorrectableBlocks is set, it can
// safely use t.GetFecUncorrectableBlocks() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FecUncorrectableBlocks == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn) GetFecUncorrectableBlocks() uint64 {
	if t == nil || t.FecUncorrectableBlocks == nil {
		return 0
	}
	return *t.FecUncorrectableBlocks
}

// GetFecUncorrectableWords retrieves the value of the leaf FecUncorrectableWords from the TerminalDevice_Channel_Otn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if FecUncorrectableWords is set, it can
// safely use t.GetFecUncorrectableWords() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.FecUncorrectableWords == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn) GetFecUncorrectableWords() uint64 {
	if t == nil || t.FecUncorrectableWords == nil {
		return 0
	}
	return *t.FecUncorrectableWords
}

// GetRdiMsg retrieves the value of the leaf RdiMsg from the TerminalDevice_Channel_Otn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if RdiMsg is set, it can
// safely use t.GetRdiMsg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.RdiMsg == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn) GetRdiMsg() string {
	if t == nil || t.RdiMsg == nil {
		return ""
	}
	return *t.RdiMsg
}

// GetSeverelyErroredSeconds retrieves the value of the leaf SeverelyErroredSeconds from the TerminalDevice_Channel_Otn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if SeverelyErroredSeconds is set, it can
// safely use t.GetSeverelyErroredSeconds() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.SeverelyErroredSeconds == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn) GetSeverelyErroredSeconds() uint64 {
	if t == nil || t.SeverelyErroredSeconds == nil {
		return 0
	}
	return *t.SeverelyErroredSeconds
}

// GetTributarySlotGranularity retrieves the value of the leaf TributarySlotGranularity from the TerminalDevice_Channel_Otn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TributarySlotGranularity is set, it can
// safely use t.GetTributarySlotGranularity() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TributarySlotGranularity == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn) GetTributarySlotGranularity() E_TransportTypes_TRIBUTARY_SLOT_GRANULARITY {
	if t == nil || t.TributarySlotGranularity == 0 {
		return 0
	}
	return t.TributarySlotGranularity
}

// GetTtiMsgAuto retrieves the value of the leaf TtiMsgAuto from the TerminalDevice_Channel_Otn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TtiMsgAuto is set, it can
// safely use t.GetTtiMsgAuto() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TtiMsgAuto == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn) GetTtiMsgAuto() bool {
	if t == nil || t.TtiMsgAuto == nil {
		return false
	}
	return *t.TtiMsgAuto
}

// GetTtiMsgExpected retrieves the value of the leaf TtiMsgExpected from the TerminalDevice_Channel_Otn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TtiMsgExpected is set, it can
// safely use t.GetTtiMsgExpected() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TtiMsgExpected == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn) GetTtiMsgExpected() string {
	if t == nil || t.TtiMsgExpected == nil {
		return ""
	}
	return *t.TtiMsgExpected
}

// GetTtiMsgRecv retrieves the value of the leaf TtiMsgRecv from the TerminalDevice_Channel_Otn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TtiMsgRecv is set, it can
// safely use t.GetTtiMsgRecv() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TtiMsgRecv == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn) GetTtiMsgRecv() string {
	if t == nil || t.TtiMsgRecv == nil {
		return ""
	}
	return *t.TtiMsgRecv
}

// GetTtiMsgTransmit retrieves the value of the leaf TtiMsgTransmit from the TerminalDevice_Channel_Otn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if TtiMsgTransmit is set, it can
// safely use t.GetTtiMsgTransmit() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.TtiMsgTransmit == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn) GetTtiMsgTransmit() string {
	if t == nil || t.TtiMsgTransmit == nil {
		return ""
	}
	return *t.TtiMsgTransmit
}

// GetUnavailableSeconds retrieves the value of the leaf UnavailableSeconds from the TerminalDevice_Channel_Otn
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if UnavailableSeconds is set, it can
// safely use t.GetUnavailableSeconds() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.UnavailableSeconds == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn) GetUnavailableSeconds() uint64 {
	if t == nil || t.UnavailableSeconds == nil {
		return 0
	}
	return *t.UnavailableSeconds
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Channel_Otn
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Channel_Otn) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
	t.Esnr.PopulateDefaults()
	t.PostFecBer.PopulateDefaults()
	t.PreFecBer.PopulateDefaults()
	t.QValue.PopulateDefaults()
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Otn) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Channel_Otn"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Otn) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Channel_Otn) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Channel_Otn.
func (*TerminalDevice_Channel_Otn) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Channel_Otn_Esnr represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/otn/state/esnr YANG schema element.
type TerminalDevice_Channel_Otn_Esnr struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Channel_Otn_Esnr implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Channel_Otn_Esnr) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the TerminalDevice_Channel_Otn_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_Esnr) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the TerminalDevice_Channel_Otn_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_Esnr) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the TerminalDevice_Channel_Otn_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_Esnr) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the TerminalDevice_Channel_Otn_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_Esnr) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the TerminalDevice_Channel_Otn_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_Esnr) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the TerminalDevice_Channel_Otn_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_Esnr) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the TerminalDevice_Channel_Otn_Esnr
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_Esnr) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Channel_Otn_Esnr
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Channel_Otn_Esnr) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Otn_Esnr) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Channel_Otn_Esnr"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Otn_Esnr) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Channel_Otn_Esnr) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Channel_Otn_Esnr.
func (*TerminalDevice_Channel_Otn_Esnr) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Channel_Otn_PostFecBer represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/otn/state/post-fec-ber YANG schema element.
type TerminalDevice_Channel_Otn_PostFecBer struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Channel_Otn_PostFecBer implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Channel_Otn_PostFecBer) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the TerminalDevice_Channel_Otn_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_PostFecBer) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the TerminalDevice_Channel_Otn_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_PostFecBer) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the TerminalDevice_Channel_Otn_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_PostFecBer) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the TerminalDevice_Channel_Otn_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_PostFecBer) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the TerminalDevice_Channel_Otn_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_PostFecBer) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the TerminalDevice_Channel_Otn_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_PostFecBer) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the TerminalDevice_Channel_Otn_PostFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_PostFecBer) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Channel_Otn_PostFecBer
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Channel_Otn_PostFecBer) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Otn_PostFecBer) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Channel_Otn_PostFecBer"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Otn_PostFecBer) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Channel_Otn_PostFecBer) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Channel_Otn_PostFecBer.
func (*TerminalDevice_Channel_Otn_PostFecBer) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Channel_Otn_PreFecBer represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/otn/state/pre-fec-ber YANG schema element.
type TerminalDevice_Channel_Otn_PreFecBer struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Channel_Otn_PreFecBer implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Channel_Otn_PreFecBer) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the TerminalDevice_Channel_Otn_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_PreFecBer) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the TerminalDevice_Channel_Otn_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_PreFecBer) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the TerminalDevice_Channel_Otn_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_PreFecBer) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the TerminalDevice_Channel_Otn_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_PreFecBer) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the TerminalDevice_Channel_Otn_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_PreFecBer) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the TerminalDevice_Channel_Otn_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_PreFecBer) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the TerminalDevice_Channel_Otn_PreFecBer
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_PreFecBer) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Channel_Otn_PreFecBer
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Channel_Otn_PreFecBer) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Otn_PreFecBer) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Channel_Otn_PreFecBer"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Otn_PreFecBer) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Channel_Otn_PreFecBer) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Channel_Otn_PreFecBer.
func (*TerminalDevice_Channel_Otn_PreFecBer) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Channel_Otn_QValue represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/otn/state/q-value YANG schema element.
type TerminalDevice_Channel_Otn_QValue struct {
	ΛMetadata []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Avg       *float64          `path:"avg" module:"openconfig-terminal-device"`
	ΛAvg      []ygot.Annotation `path:"@avg" ygotAnnotation:"true"`
	Instant   *float64          `path:"instant" module:"openconfig-terminal-device"`
	ΛInstant  []ygot.Annotation `path:"@instant" ygotAnnotation:"true"`
	Interval  *uint64           `path:"interval" module:"openconfig-terminal-device"`
	ΛInterval []ygot.Annotation `path:"@interval" ygotAnnotation:"true"`
	Max       *float64          `path:"max" module:"openconfig-terminal-device"`
	ΛMax      []ygot.Annotation `path:"@max" ygotAnnotation:"true"`
	MaxTime   *uint64           `path:"max-time" module:"openconfig-terminal-device"`
	ΛMaxTime  []ygot.Annotation `path:"@max-time" ygotAnnotation:"true"`
	Min       *float64          `path:"min" module:"openconfig-terminal-device"`
	ΛMin      []ygot.Annotation `path:"@min" ygotAnnotation:"true"`
	MinTime   *uint64           `path:"min-time" module:"openconfig-terminal-device"`
	ΛMinTime  []ygot.Annotation `path:"@min-time" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Channel_Otn_QValue implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Channel_Otn_QValue) IsYANGGoStruct() {}

// GetAvg retrieves the value of the leaf Avg from the TerminalDevice_Channel_Otn_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Avg is set, it can
// safely use t.GetAvg() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Avg == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_QValue) GetAvg() float64 {
	if t == nil || t.Avg == nil {
		return 0.0
	}
	return *t.Avg
}

// GetInstant retrieves the value of the leaf Instant from the TerminalDevice_Channel_Otn_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Instant is set, it can
// safely use t.GetInstant() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Instant == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_QValue) GetInstant() float64 {
	if t == nil || t.Instant == nil {
		return 0.0
	}
	return *t.Instant
}

// GetInterval retrieves the value of the leaf Interval from the TerminalDevice_Channel_Otn_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Interval is set, it can
// safely use t.GetInterval() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Interval == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_QValue) GetInterval() uint64 {
	if t == nil || t.Interval == nil {
		return 0
	}
	return *t.Interval
}

// GetMax retrieves the value of the leaf Max from the TerminalDevice_Channel_Otn_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Max is set, it can
// safely use t.GetMax() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Max == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_QValue) GetMax() float64 {
	if t == nil || t.Max == nil {
		return 0.0
	}
	return *t.Max
}

// GetMaxTime retrieves the value of the leaf MaxTime from the TerminalDevice_Channel_Otn_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MaxTime is set, it can
// safely use t.GetMaxTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MaxTime == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_QValue) GetMaxTime() uint64 {
	if t == nil || t.MaxTime == nil {
		return 0
	}
	return *t.MaxTime
}

// GetMin retrieves the value of the leaf Min from the TerminalDevice_Channel_Otn_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Min is set, it can
// safely use t.GetMin() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Min == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_QValue) GetMin() float64 {
	if t == nil || t.Min == nil {
		return 0.0
	}
	return *t.Min
}

// GetMinTime retrieves the value of the leaf MinTime from the TerminalDevice_Channel_Otn_QValue
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if MinTime is set, it can
// safely use t.GetMinTime() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.MinTime == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Channel_Otn_QValue) GetMinTime() uint64 {
	if t == nil || t.MinTime == nil {
		return 0
	}
	return *t.MinTime
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Channel_Otn_QValue
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Channel_Otn_QValue) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Otn_QValue) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Channel_Otn_QValue"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Channel_Otn_QValue) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Channel_Otn_QValue) ΛEnumTypeMap() map[string][]reflect.Type {
	return ΛEnumTypes
}

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Channel_Otn_QValue.
func (*TerminalDevice_Channel_Otn_QValue) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// TerminalDevice_Mode represents the /openconfig-terminal-device/terminal-device/operational-modes/mode YANG schema element.
type TerminalDevice_Mode struct {
	ΛMetadata    []ygot.Annotation `path:"@" ygotAnnotation:"true"`
	Description  *string           `path:"state/description" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛDescription []ygot.Annotation `path:"state/@description" ygotAnnotation:"true"`
	ModeId       *uint16           `path:"state/mode-id|mode-id" module:"openconfig-terminal-device/openconfig-terminal-device|openconfig-terminal-device"`
	ΛModeId      []ygot.Annotation `path:"state/@mode-id|@mode-id" ygotAnnotation:"true"`
	VendorId     *string           `path:"state/vendor-id" module:"openconfig-terminal-device/openconfig-terminal-device"`
	ΛVendorId    []ygot.Annotation `path:"state/@vendor-id" ygotAnnotation:"true"`
}

// IsYANGGoStruct ensures that TerminalDevice_Mode implements the yang.GoStruct
// interface. This allows functions that need to handle this struct to
// identify it as being generated by ygen.
func (*TerminalDevice_Mode) IsYANGGoStruct() {}

// GetDescription retrieves the value of the leaf Description from the TerminalDevice_Mode
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if Description is set, it can
// safely use t.GetDescription() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.Description == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Mode) GetDescription() string {
	if t == nil || t.Description == nil {
		return ""
	}
	return *t.Description
}

// GetModeId retrieves the value of the leaf ModeId from the TerminalDevice_Mode
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if ModeId is set, it can
// safely use t.GetModeId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.ModeId == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Mode) GetModeId() uint16 {
	if t == nil || t.ModeId == nil {
		return 0
	}
	return *t.ModeId
}

// GetVendorId retrieves the value of the leaf VendorId from the TerminalDevice_Mode
// struct. If the field is unset but has a default value in the YANG schema,
// then the default value will be returned.
// Caution should be exercised whilst using this method since when without a
// default value, it will return the Go zero value if the field is explicitly
// unset. If the caller explicitly does not care if VendorId is set, it can
// safely use t.GetVendorId() to retrieve the value. In the case that the
// caller has different actions based on whether the leaf is set or unset, it
// should use 'if t.VendorId == nil' before retrieving the leaf's value.
func (t *TerminalDevice_Mode) GetVendorId() string {
	if t == nil || t.VendorId == nil {
		return ""
	}
	return *t.VendorId
}

// PopulateDefaults recursively populates unset leaf fields in the TerminalDevice_Mode
// with default values as specified in the YANG schema, instantiating any nil
// container fields.
func (t *TerminalDevice_Mode) PopulateDefaults() {
	if t == nil {
		return
	}
	ygot.BuildEmptyTree(t)
}

// ΛListKeyMap returns the keys of the TerminalDevice_Mode struct, which is a YANG list entry.
func (t *TerminalDevice_Mode) ΛListKeyMap() (map[string]interface{}, error) {
	if t.ModeId == nil {
		return nil, fmt.Errorf("nil value for key ModeId")
	}

	return map[string]interface{}{
		"mode-id": *t.ModeId,
	}, nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Mode) ΛValidate(opts ...ygot.ValidationOption) error {
	if err := ytypes.Validate(SchemaTree["TerminalDevice_Mode"], t, opts...); err != nil {
		return err
	}
	return nil
}

// Validate validates s against the YANG schema corresponding to its type.
func (t *TerminalDevice_Mode) Validate(opts ...ygot.ValidationOption) error {
	return t.ΛValidate(opts...)
}

// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
// that are included in the generated code.
func (t *TerminalDevice_Mode) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }

// ΛBelongingModule returns the name of the module that defines the namespace
// of TerminalDevice_Mode.
func (*TerminalDevice_Mode) ΛBelongingModule() string {
	return "openconfig-terminal-device"
}

// E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE is a derived int64 type which is used to represent
// the enumerated node AaaTypes_AAA_ACCOUNTING_EVENT_TYPE. An additional value named
// AaaTypes_AAA_ACCOUNTING_EVENT_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE int64

// IsYANGGoEnum ensures that AaaTypes_AAA_ACCOUNTING_EVENT_TYPE implements the yang.GoEnum
// interface. This ensures that AaaTypes_AAA_ACCOUNTING_EVENT_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  AaaTypes_AAA_ACCOUNTING_EVENT_TYPE.
func (E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE.
func (e E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE")
}

const (
	// AaaTypes_AAA_ACCOUNTING_EVENT_TYPE_UNSET corresponds to the value UNSET of AaaTypes_AAA_ACCOUNTING_EVENT_TYPE
	AaaTypes_AAA_ACCOUNTING_EVENT_TYPE_UNSET E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE = 0
	// AaaTypes_AAA_ACCOUNTING_EVENT_TYPE_AAA_ACCOUNTING_EVENT_COMMAND corresponds to the value AAA_ACCOUNTING_EVENT_COMMAND of AaaTypes_AAA_ACCOUNTING_EVENT_TYPE
	AaaTypes_AAA_ACCOUNTING_EVENT_TYPE_AAA_ACCOUNTING_EVENT_COMMAND E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE = 1
	// AaaTypes_AAA_ACCOUNTING_EVENT_TYPE_AAA_ACCOUNTING_EVENT_LOGIN corresponds to the value AAA_ACCOUNTING_EVENT_LOGIN of AaaTypes_AAA_ACCOUNTING_EVENT_TYPE
	AaaTypes_AAA_ACCOUNTING_EVENT_TYPE_AAA_ACCOUNTING_EVENT_LOGIN E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE = 2
)

// E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE is a derived int64 type which is used to represent
// the enumerated node AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE. An additional value named
// AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE int64

// IsYANGGoEnum ensures that AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE implements the yang.GoEnum
// interface. This ensures that AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE.
func (E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE.
func (e E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE")
}

const (
	// AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE_UNSET corresponds to the value UNSET of AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE
	AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE_UNSET E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE = 0
	// AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE_AAA_AUTHORIZATION_EVENT_COMMAND corresponds to the value AAA_AUTHORIZATION_EVENT_COMMAND of AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE
	AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE_AAA_AUTHORIZATION_EVENT_COMMAND E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE = 1
	// AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE_AAA_AUTHORIZATION_EVENT_CONFIG corresponds to the value AAA_AUTHORIZATION_EVENT_CONFIG of AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE
	AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE_AAA_AUTHORIZATION_EVENT_CONFIG E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE = 2
)

// E_AaaTypes_AAA_METHOD_TYPE is a derived int64 type which is used to represent
// the enumerated node AaaTypes_AAA_METHOD_TYPE. An additional value named
// AaaTypes_AAA_METHOD_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_AaaTypes_AAA_METHOD_TYPE int64

// IsYANGGoEnum ensures that AaaTypes_AAA_METHOD_TYPE implements the yang.GoEnum
// interface. This ensures that AaaTypes_AAA_METHOD_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_AaaTypes_AAA_METHOD_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  AaaTypes_AAA_METHOD_TYPE.
func (E_AaaTypes_AAA_METHOD_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_AaaTypes_AAA_METHOD_TYPE.
func (e E_AaaTypes_AAA_METHOD_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_AaaTypes_AAA_METHOD_TYPE")
}

const (
	// AaaTypes_AAA_METHOD_TYPE_UNSET corresponds to the value UNSET of AaaTypes_AAA_METHOD_TYPE
	AaaTypes_AAA_METHOD_TYPE_UNSET E_AaaTypes_AAA_METHOD_TYPE = 0
	// AaaTypes_AAA_METHOD_TYPE_LOCAL corresponds to the value LOCAL of AaaTypes_AAA_METHOD_TYPE
	AaaTypes_AAA_METHOD_TYPE_LOCAL E_AaaTypes_AAA_METHOD_TYPE = 1
	// AaaTypes_AAA_METHOD_TYPE_RADIUS_ALL corresponds to the value RADIUS_ALL of AaaTypes_AAA_METHOD_TYPE
	AaaTypes_AAA_METHOD_TYPE_RADIUS_ALL E_AaaTypes_AAA_METHOD_TYPE = 2
	// AaaTypes_AAA_METHOD_TYPE_TACACS_ALL corresponds to the value TACACS_ALL of AaaTypes_AAA_METHOD_TYPE
	AaaTypes_AAA_METHOD_TYPE_TACACS_ALL E_AaaTypes_AAA_METHOD_TYPE = 3
)

// E_AaaTypes_AAA_SERVER_TYPE is a derived int64 type which is used to represent
// the enumerated node AaaTypes_AAA_SERVER_TYPE. An additional value named
// AaaTypes_AAA_SERVER_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_AaaTypes_AAA_SERVER_TYPE int64

// IsYANGGoEnum ensures that AaaTypes_AAA_SERVER_TYPE implements the yang.GoEnum
// interface. This ensures that AaaTypes_AAA_SERVER_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_AaaTypes_AAA_SERVER_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  AaaTypes_AAA_SERVER_TYPE.
func (E_AaaTypes_AAA_SERVER_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_AaaTypes_AAA_SERVER_TYPE.
func (e E_AaaTypes_AAA_SERVER_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_AaaTypes_AAA_SERVER_TYPE")
}

const (
	// AaaTypes_AAA_SERVER_TYPE_UNSET corresponds to the value UNSET of AaaTypes_AAA_SERVER_TYPE
	AaaTypes_AAA_SERVER_TYPE_UNSET E_AaaTypes_AAA_SERVER_TYPE = 0
	// AaaTypes_AAA_SERVER_TYPE_RADIUS corresponds to the value RADIUS of AaaTypes_AAA_SERVER_TYPE
	AaaTypes_AAA_SERVER_TYPE_RADIUS E_AaaTypes_AAA_SERVER_TYPE = 1
	// AaaTypes_AAA_SERVER_TYPE_TACACS corresponds to the value TACACS of AaaTypes_AAA_SERVER_TYPE
	AaaTypes_AAA_SERVER_TYPE_TACACS E_AaaTypes_AAA_SERVER_TYPE = 2
)

// E_AaaTypes_SYSTEM_DEFINED_ROLES is a derived int64 type which is used to represent
// the enumerated node AaaTypes_SYSTEM_DEFINED_ROLES. An additional value named
// AaaTypes_SYSTEM_DEFINED_ROLES_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_AaaTypes_SYSTEM_DEFINED_ROLES int64

// IsYANGGoEnum ensures that AaaTypes_SYSTEM_DEFINED_ROLES implements the yang.GoEnum
// interface. This ensures that AaaTypes_SYSTEM_DEFINED_ROLES can be identified as a
// mapped type for a YANG enumeration.
func (E_AaaTypes_SYSTEM_DEFINED_ROLES) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  AaaTypes_SYSTEM_DEFINED_ROLES.
func (E_AaaTypes_SYSTEM_DEFINED_ROLES) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_AaaTypes_SYSTEM_DEFINED_ROLES.
func (e E_AaaTypes_SYSTEM_DEFINED_ROLES) String() string {
	return ygot.EnumLogString(e, int64(e), "E_AaaTypes_SYSTEM_DEFINED_ROLES")
}

const (
	// AaaTypes_SYSTEM_DEFINED_ROLES_UNSET corresponds to the value UNSET of AaaTypes_SYSTEM_DEFINED_ROLES
	AaaTypes_SYSTEM_DEFINED_ROLES_UNSET E_AaaTypes_SYSTEM_DEFINED_ROLES = 0
	// AaaTypes_SYSTEM_DEFINED_ROLES_SYSTEM_ROLE_ADMIN corresponds to the value SYSTEM_ROLE_ADMIN of AaaTypes_SYSTEM_DEFINED_ROLES
	AaaTypes_SYSTEM_DEFINED_ROLES_SYSTEM_ROLE_ADMIN E_AaaTypes_SYSTEM_DEFINED_ROLES = 1
)

// E_Acl_ACL_COUNTER_CAPABILITY is a derived int64 type which is used to represent
// the enumerated node Acl_ACL_COUNTER_CAPABILITY. An additional value named
// Acl_ACL_COUNTER_CAPABILITY_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Acl_ACL_COUNTER_CAPABILITY int64

// IsYANGGoEnum ensures that Acl_ACL_COUNTER_CAPABILITY implements the yang.GoEnum
// interface. This ensures that Acl_ACL_COUNTER_CAPABILITY can be identified as a
// mapped type for a YANG enumeration.
func (E_Acl_ACL_COUNTER_CAPABILITY) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Acl_ACL_COUNTER_CAPABILITY.
func (E_Acl_ACL_COUNTER_CAPABILITY) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Acl_ACL_COUNTER_CAPABILITY.
func (e E_Acl_ACL_COUNTER_CAPABILITY) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Acl_ACL_COUNTER_CAPABILITY")
}

const (
	// Acl_ACL_COUNTER_CAPABILITY_UNSET corresponds to the value UNSET of Acl_ACL_COUNTER_CAPABILITY
	Acl_ACL_COUNTER_CAPABILITY_UNSET E_Acl_ACL_COUNTER_CAPABILITY = 0
	// Acl_ACL_COUNTER_CAPABILITY_AGGREGATE_ONLY corresponds to the value AGGREGATE_ONLY of Acl_ACL_COUNTER_CAPABILITY
	Acl_ACL_COUNTER_CAPABILITY_AGGREGATE_ONLY E_Acl_ACL_COUNTER_CAPABILITY = 1
	// Acl_ACL_COUNTER_CAPABILITY_INTERFACE_AGGREGATE corresponds to the value INTERFACE_AGGREGATE of Acl_ACL_COUNTER_CAPABILITY
	Acl_ACL_COUNTER_CAPABILITY_INTERFACE_AGGREGATE E_Acl_ACL_COUNTER_CAPABILITY = 2
	// Acl_ACL_COUNTER_CAPABILITY_INTERFACE_ONLY corresponds to the value INTERFACE_ONLY of Acl_ACL_COUNTER_CAPABILITY
	Acl_ACL_COUNTER_CAPABILITY_INTERFACE_ONLY E_Acl_ACL_COUNTER_CAPABILITY = 3
)

// E_Acl_ACL_TYPE is a derived int64 type which is used to represent
// the enumerated node Acl_ACL_TYPE. An additional value named
// Acl_ACL_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Acl_ACL_TYPE int64

// IsYANGGoEnum ensures that Acl_ACL_TYPE implements the yang.GoEnum
// interface. This ensures that Acl_ACL_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_Acl_ACL_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Acl_ACL_TYPE.
func (E_Acl_ACL_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Acl_ACL_TYPE.
func (e E_Acl_ACL_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Acl_ACL_TYPE")
}

const (
	// Acl_ACL_TYPE_UNSET corresponds to the value UNSET of Acl_ACL_TYPE
	Acl_ACL_TYPE_UNSET E_Acl_ACL_TYPE = 0
	// Acl_ACL_TYPE_ACL_IPV4 corresponds to the value ACL_IPV4 of Acl_ACL_TYPE
	Acl_ACL_TYPE_ACL_IPV4 E_Acl_ACL_TYPE = 1
	// Acl_ACL_TYPE_ACL_IPV6 corresponds to the value ACL_IPV6 of Acl_ACL_TYPE
	Acl_ACL_TYPE_ACL_IPV6 E_Acl_ACL_TYPE = 2
	// Acl_ACL_TYPE_ACL_L2 corresponds to the value ACL_L2 of Acl_ACL_TYPE
	Acl_ACL_TYPE_ACL_L2 E_Acl_ACL_TYPE = 3
	// Acl_ACL_TYPE_ACL_MIXED corresponds to the value ACL_MIXED of Acl_ACL_TYPE
	Acl_ACL_TYPE_ACL_MIXED E_Acl_ACL_TYPE = 4
	// Acl_ACL_TYPE_ACL_MPLS corresponds to the value ACL_MPLS of Acl_ACL_TYPE
	Acl_ACL_TYPE_ACL_MPLS E_Acl_ACL_TYPE = 5
)

// E_Acl_FORWARDING_ACTION is a derived int64 type which is used to represent
// the enumerated node Acl_FORWARDING_ACTION. An additional value named
// Acl_FORWARDING_ACTION_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Acl_FORWARDING_ACTION int64

// IsYANGGoEnum ensures that Acl_FORWARDING_ACTION implements the yang.GoEnum
// interface. This ensures that Acl_FORWARDING_ACTION can be identified as a
// mapped type for a YANG enumeration.
func (E_Acl_FORWARDING_ACTION) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Acl_FORWARDING_ACTION.
func (E_Acl_FORWARDING_ACTION) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Acl_FORWARDING_ACTION.
func (e E_Acl_FORWARDING_ACTION) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Acl_FORWARDING_ACTION")
}

const (
	// Acl_FORWARDING_ACTION_UNSET corresponds to the value UNSET of Acl_FORWARDING_ACTION
	Acl_FORWARDING_ACTION_UNSET E_Acl_FORWARDING_ACTION = 0
	// Acl_FORWARDING_ACTION_ACCEPT corresponds to the value ACCEPT of Acl_FORWARDING_ACTION
	Acl_FORWARDING_ACTION_ACCEPT E_Acl_FORWARDING_ACTION = 1
	// Acl_FORWARDING_ACTION_DROP corresponds to the value DROP of Acl_FORWARDING_ACTION
	Acl_FORWARDING_ACTION_DROP E_Acl_FORWARDING_ACTION = 2
	// Acl_FORWARDING_ACTION_REJECT corresponds to the value REJECT of Acl_FORWARDING_ACTION
	Acl_FORWARDING_ACTION_REJECT E_Acl_FORWARDING_ACTION = 3
)

// E_Acl_LOG_ACTION is a derived int64 type which is used to represent
// the enumerated node Acl_LOG_ACTION. An additional value named
// Acl_LOG_ACTION_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Acl_LOG_ACTION int64

// IsYANGGoEnum ensures that Acl_LOG_ACTION implements the yang.GoEnum
// interface. This ensures that Acl_LOG_ACTION can be identified as a
// mapped type for a YANG enumeration.
func (E_Acl_LOG_ACTION) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Acl_LOG_ACTION.
func (E_Acl_LOG_ACTION) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Acl_LOG_ACTION.
func (e E_Acl_LOG_ACTION) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Acl_LOG_ACTION")
}

const (
	// Acl_LOG_ACTION_UNSET corresponds to the value UNSET of Acl_LOG_ACTION
	Acl_LOG_ACTION_UNSET E_Acl_LOG_ACTION = 0
	// Acl_LOG_ACTION_LOG_NONE corresponds to the value LOG_NONE of Acl_LOG_ACTION
	Acl_LOG_ACTION_LOG_NONE E_Acl_LOG_ACTION = 1
	// Acl_LOG_ACTION_LOG_SYSLOG corresponds to the value LOG_SYSLOG of Acl_LOG_ACTION
	Acl_LOG_ACTION_LOG_SYSLOG E_Acl_LOG_ACTION = 2
)

// E_Address_Status is a derived int64 type which is used to represent
// the enumerated node Address_Status. An additional value named
// Address_Status_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Address_Status int64

// IsYANGGoEnum ensures that Address_Status implements the yang.GoEnum
// interface. This ensures that Address_Status can be identified as a
// mapped type for a YANG enumeration.
func (E_Address_Status) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Address_Status.
func (E_Address_Status) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Address_Status.
func (e E_Address_Status) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Address_Status")
}

const (
	// Address_Status_UNSET corresponds to the value UNSET of Address_Status
	Address_Status_UNSET E_Address_Status = 0
	// Address_Status_PREFERRED corresponds to the value PREFERRED of Address_Status
	Address_Status_PREFERRED E_Address_Status = 1
	// Address_Status_DEPRECATED corresponds to the value DEPRECATED of Address_Status
	Address_Status_DEPRECATED E_Address_Status = 2
	// Address_Status_INVALID corresponds to the value INVALID of Address_Status
	Address_Status_INVALID E_Address_Status = 3
	// Address_Status_INACCESSIBLE corresponds to the value INACCESSIBLE of Address_Status
	Address_Status_INACCESSIBLE E_Address_Status = 4
	// Address_Status_UNKNOWN corresponds to the value UNKNOWN of Address_Status
	Address_Status_UNKNOWN E_Address_Status = 5
	// Address_Status_TENTATIVE corresponds to the value TENTATIVE of Address_Status
	Address_Status_TENTATIVE E_Address_Status = 6
	// Address_Status_DUPLICATE corresponds to the value DUPLICATE of Address_Status
	Address_Status_DUPLICATE E_Address_Status = 7
	// Address_Status_OPTIMISTIC corresponds to the value OPTIMISTIC of Address_Status
	Address_Status_OPTIMISTIC E_Address_Status = 8
)

// E_AdjacencySid_Flags is a derived int64 type which is used to represent
// the enumerated node AdjacencySid_Flags. An additional value named
// AdjacencySid_Flags_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_AdjacencySid_Flags int64

// IsYANGGoEnum ensures that AdjacencySid_Flags implements the yang.GoEnum
// interface. This ensures that AdjacencySid_Flags can be identified as a
// mapped type for a YANG enumeration.
func (E_AdjacencySid_Flags) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  AdjacencySid_Flags.
func (E_AdjacencySid_Flags) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_AdjacencySid_Flags.
func (e E_AdjacencySid_Flags) String() string {
	return ygot.EnumLogString(e, int64(e), "E_AdjacencySid_Flags")
}

const (
	// AdjacencySid_Flags_UNSET corresponds to the value UNSET of AdjacencySid_Flags
	AdjacencySid_Flags_UNSET E_AdjacencySid_Flags = 0
	// AdjacencySid_Flags_ADDRESS_FAMILY corresponds to the value ADDRESS_FAMILY of AdjacencySid_Flags
	AdjacencySid_Flags_ADDRESS_FAMILY E_AdjacencySid_Flags = 1
	// AdjacencySid_Flags_BACKUP corresponds to the value BACKUP of AdjacencySid_Flags
	AdjacencySid_Flags_BACKUP E_AdjacencySid_Flags = 2
	// AdjacencySid_Flags_VALUE corresponds to the value VALUE of AdjacencySid_Flags
	AdjacencySid_Flags_VALUE E_AdjacencySid_Flags = 3
	// AdjacencySid_Flags_LOCAL corresponds to the value LOCAL of AdjacencySid_Flags
	AdjacencySid_Flags_LOCAL E_AdjacencySid_Flags = 4
	// AdjacencySid_Flags_SET corresponds to the value SET of AdjacencySid_Flags
	AdjacencySid_Flags_SET E_AdjacencySid_Flags = 5
)

// E_AdjacencySid_SidId_Enum is a derived int64 type which is used to represent
// the enumerated node AdjacencySid_SidId_Enum. An additional value named
// AdjacencySid_SidId_Enum_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_AdjacencySid_SidId_Enum int64

// IsYANGGoEnum ensures that AdjacencySid_SidId_Enum implements the yang.GoEnum
// interface. This ensures that AdjacencySid_SidId_Enum can be identified as a
// mapped type for a YANG enumeration.
func (E_AdjacencySid_SidId_Enum) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  AdjacencySid_SidId_Enum.
func (E_AdjacencySid_SidId_Enum) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_AdjacencySid_SidId_Enum.
func (e E_AdjacencySid_SidId_Enum) String() string {
	return ygot.EnumLogString(e, int64(e), "E_AdjacencySid_SidId_Enum")
}

const (
	// AdjacencySid_SidId_Enum_UNSET corresponds to the value UNSET of AdjacencySid_SidId_Enum
	AdjacencySid_SidId_Enum_UNSET E_AdjacencySid_SidId_Enum = 0
	// AdjacencySid_SidId_Enum_DYNAMIC corresponds to the value DYNAMIC of AdjacencySid_SidId_Enum
	AdjacencySid_SidId_Enum_DYNAMIC E_AdjacencySid_SidId_Enum = 1
)

// E_Adjacency_Nlpid is a derived int64 type which is used to represent
// the enumerated node Adjacency_Nlpid. An additional value named
// Adjacency_Nlpid_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Adjacency_Nlpid int64

// IsYANGGoEnum ensures that Adjacency_Nlpid implements the yang.GoEnum
// interface. This ensures that Adjacency_Nlpid can be identified as a
// mapped type for a YANG enumeration.
func (E_Adjacency_Nlpid) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Adjacency_Nlpid.
func (E_Adjacency_Nlpid) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Adjacency_Nlpid.
func (e E_Adjacency_Nlpid) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Adjacency_Nlpid")
}

const (
	// Adjacency_Nlpid_UNSET corresponds to the value UNSET of Adjacency_Nlpid
	Adjacency_Nlpid_UNSET E_Adjacency_Nlpid = 0
	// Adjacency_Nlpid_IPV4 corresponds to the value IPV4 of Adjacency_Nlpid
	Adjacency_Nlpid_IPV4 E_Adjacency_Nlpid = 1
	// Adjacency_Nlpid_IPV6 corresponds to the value IPV6 of Adjacency_Nlpid
	Adjacency_Nlpid_IPV6 E_Adjacency_Nlpid = 2
)

// E_AftTypes_EncapsulationHeaderType is a derived int64 type which is used to represent
// the enumerated node AftTypes_EncapsulationHeaderType. An additional value named
// AftTypes_EncapsulationHeaderType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_AftTypes_EncapsulationHeaderType int64

// IsYANGGoEnum ensures that AftTypes_EncapsulationHeaderType implements the yang.GoEnum
// interface. This ensures that AftTypes_EncapsulationHeaderType can be identified as a
// mapped type for a YANG enumeration.
func (E_AftTypes_EncapsulationHeaderType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  AftTypes_EncapsulationHeaderType.
func (E_AftTypes_EncapsulationHeaderType) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_AftTypes_EncapsulationHeaderType.
func (e E_AftTypes_EncapsulationHeaderType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_AftTypes_EncapsulationHeaderType")
}

const (
	// AftTypes_EncapsulationHeaderType_UNSET corresponds to the value UNSET of AftTypes_EncapsulationHeaderType
	AftTypes_EncapsulationHeaderType_UNSET E_AftTypes_EncapsulationHeaderType = 0
	// AftTypes_EncapsulationHeaderType_GRE corresponds to the value GRE of AftTypes_EncapsulationHeaderType
	AftTypes_EncapsulationHeaderType_GRE E_AftTypes_EncapsulationHeaderType = 1
	// AftTypes_EncapsulationHeaderType_IPV4 corresponds to the value IPV4 of AftTypes_EncapsulationHeaderType
	AftTypes_EncapsulationHeaderType_IPV4 E_AftTypes_EncapsulationHeaderType = 2
	// AftTypes_EncapsulationHeaderType_IPV6 corresponds to the value IPV6 of AftTypes_EncapsulationHeaderType
	AftTypes_EncapsulationHeaderType_IPV6 E_AftTypes_EncapsulationHeaderType = 3
	// AftTypes_EncapsulationHeaderType_MPLS corresponds to the value MPLS of AftTypes_EncapsulationHeaderType
	AftTypes_EncapsulationHeaderType_MPLS E_AftTypes_EncapsulationHeaderType = 4
	// AftTypes_EncapsulationHeaderType_VXLAN corresponds to the value VXLAN of AftTypes_EncapsulationHeaderType
	AftTypes_EncapsulationHeaderType_VXLAN E_AftTypes_EncapsulationHeaderType = 5
)

// E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY is a derived int64 type which is used to represent
// the enumerated node AlarmTypes_OPENCONFIG_ALARM_SEVERITY. An additional value named
// AlarmTypes_OPENCONFIG_ALARM_SEVERITY_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY int64

// IsYANGGoEnum ensures that AlarmTypes_OPENCONFIG_ALARM_SEVERITY implements the yang.GoEnum
// interface. This ensures that AlarmTypes_OPENCONFIG_ALARM_SEVERITY can be identified as a
// mapped type for a YANG enumeration.
func (E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  AlarmTypes_OPENCONFIG_ALARM_SEVERITY.
func (E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY.
func (e E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY) String() string {
	return ygot.EnumLogString(e, int64(e), "E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY")
}

const (
	// AlarmTypes_OPENCONFIG_ALARM_SEVERITY_UNSET corresponds to the value UNSET of AlarmTypes_OPENCONFIG_ALARM_SEVERITY
	AlarmTypes_OPENCONFIG_ALARM_SEVERITY_UNSET E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY = 0
	// AlarmTypes_OPENCONFIG_ALARM_SEVERITY_CRITICAL corresponds to the value CRITICAL of AlarmTypes_OPENCONFIG_ALARM_SEVERITY
	AlarmTypes_OPENCONFIG_ALARM_SEVERITY_CRITICAL E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY = 1
	// AlarmTypes_OPENCONFIG_ALARM_SEVERITY_MAJOR corresponds to the value MAJOR of AlarmTypes_OPENCONFIG_ALARM_SEVERITY
	AlarmTypes_OPENCONFIG_ALARM_SEVERITY_MAJOR E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY = 2
	// AlarmTypes_OPENCONFIG_ALARM_SEVERITY_MINOR corresponds to the value MINOR of AlarmTypes_OPENCONFIG_ALARM_SEVERITY
	AlarmTypes_OPENCONFIG_ALARM_SEVERITY_MINOR E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY = 3
	// AlarmTypes_OPENCONFIG_ALARM_SEVERITY_UNKNOWN corresponds to the value UNKNOWN of AlarmTypes_OPENCONFIG_ALARM_SEVERITY
	AlarmTypes_OPENCONFIG_ALARM_SEVERITY_UNKNOWN E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY = 4
	// AlarmTypes_OPENCONFIG_ALARM_SEVERITY_WARNING corresponds to the value WARNING of AlarmTypes_OPENCONFIG_ALARM_SEVERITY
	AlarmTypes_OPENCONFIG_ALARM_SEVERITY_WARNING E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY = 5
)

// E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID is a derived int64 type which is used to represent
// the enumerated node AlarmTypes_OPENCONFIG_ALARM_TYPE_ID. An additional value named
// AlarmTypes_OPENCONFIG_ALARM_TYPE_ID_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID int64

// IsYANGGoEnum ensures that AlarmTypes_OPENCONFIG_ALARM_TYPE_ID implements the yang.GoEnum
// interface. This ensures that AlarmTypes_OPENCONFIG_ALARM_TYPE_ID can be identified as a
// mapped type for a YANG enumeration.
func (E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  AlarmTypes_OPENCONFIG_ALARM_TYPE_ID.
func (E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID.
func (e E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID) String() string {
	return ygot.EnumLogString(e, int64(e), "E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID")
}

const (
	// AlarmTypes_OPENCONFIG_ALARM_TYPE_ID_UNSET corresponds to the value UNSET of AlarmTypes_OPENCONFIG_ALARM_TYPE_ID
	AlarmTypes_OPENCONFIG_ALARM_TYPE_ID_UNSET E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID = 0
	// AlarmTypes_OPENCONFIG_ALARM_TYPE_ID_AIS corresponds to the value AIS of AlarmTypes_OPENCONFIG_ALARM_TYPE_ID
	AlarmTypes_OPENCONFIG_ALARM_TYPE_ID_AIS E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID = 1
	// AlarmTypes_OPENCONFIG_ALARM_TYPE_ID_EQPT corresponds to the value EQPT of AlarmTypes_OPENCONFIG_ALARM_TYPE_ID
	AlarmTypes_OPENCONFIG_ALARM_TYPE_ID_EQPT E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID = 2
	// AlarmTypes_OPENCONFIG_ALARM_TYPE_ID_LOS corresponds to the value LOS of AlarmTypes_OPENCONFIG_ALARM_TYPE_ID
	AlarmTypes_OPENCONFIG_ALARM_TYPE_ID_LOS E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID = 3
	// AlarmTypes_OPENCONFIG_ALARM_TYPE_ID_OTS corresponds to the value OTS of AlarmTypes_OPENCONFIG_ALARM_TYPE_ID
	AlarmTypes_OPENCONFIG_ALARM_TYPE_ID_OTS E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID = 4
)

// E_ApsModule_ForceToPort is a derived int64 type which is used to represent
// the enumerated node ApsModule_ForceToPort. An additional value named
// ApsModule_ForceToPort_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_ApsModule_ForceToPort int64

// IsYANGGoEnum ensures that ApsModule_ForceToPort implements the yang.GoEnum
// interface. This ensures that ApsModule_ForceToPort can be identified as a
// mapped type for a YANG enumeration.
func (E_ApsModule_ForceToPort) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  ApsModule_ForceToPort.
func (E_ApsModule_ForceToPort) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_ApsModule_ForceToPort.
func (e E_ApsModule_ForceToPort) String() string {
	return ygot.EnumLogString(e, int64(e), "E_ApsModule_ForceToPort")
}

const (
	// ApsModule_ForceToPort_UNSET corresponds to the value UNSET of ApsModule_ForceToPort
	ApsModule_ForceToPort_UNSET E_ApsModule_ForceToPort = 0
	// ApsModule_ForceToPort_NONE corresponds to the value NONE of ApsModule_ForceToPort
	ApsModule_ForceToPort_NONE E_ApsModule_ForceToPort = 1
	// ApsModule_ForceToPort_PRIMARY corresponds to the value PRIMARY of ApsModule_ForceToPort
	ApsModule_ForceToPort_PRIMARY E_ApsModule_ForceToPort = 2
	// ApsModule_ForceToPort_SECONDARY corresponds to the value SECONDARY of ApsModule_ForceToPort
	ApsModule_ForceToPort_SECONDARY E_ApsModule_ForceToPort = 3
)

// E_AsExternalLsa_MetricType is a derived int64 type which is used to represent
// the enumerated node AsExternalLsa_MetricType. An additional value named
// AsExternalLsa_MetricType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_AsExternalLsa_MetricType int64

// IsYANGGoEnum ensures that AsExternalLsa_MetricType implements the yang.GoEnum
// interface. This ensures that AsExternalLsa_MetricType can be identified as a
// mapped type for a YANG enumeration.
func (E_AsExternalLsa_MetricType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  AsExternalLsa_MetricType.
func (E_AsExternalLsa_MetricType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_AsExternalLsa_MetricType.
func (e E_AsExternalLsa_MetricType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_AsExternalLsa_MetricType")
}

const (
	// AsExternalLsa_MetricType_UNSET corresponds to the value UNSET of AsExternalLsa_MetricType
	AsExternalLsa_MetricType_UNSET E_AsExternalLsa_MetricType = 0
	// AsExternalLsa_MetricType_TYPE_1 corresponds to the value TYPE_1 of AsExternalLsa_MetricType
	AsExternalLsa_MetricType_TYPE_1 E_AsExternalLsa_MetricType = 1
	// AsExternalLsa_MetricType_TYPE_2 corresponds to the value TYPE_2 of AsExternalLsa_MetricType
	AsExternalLsa_MetricType_TYPE_2 E_AsExternalLsa_MetricType = 2
)

// E_Assignment_AssignmentType is a derived int64 type which is used to represent
// the enumerated node Assignment_AssignmentType. An additional value named
// Assignment_AssignmentType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Assignment_AssignmentType int64

// IsYANGGoEnum ensures that Assignment_AssignmentType implements the yang.GoEnum
// interface. This ensures that Assignment_AssignmentType can be identified as a
// mapped type for a YANG enumeration.
func (E_Assignment_AssignmentType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Assignment_AssignmentType.
func (E_Assignment_AssignmentType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Assignment_AssignmentType.
func (e E_Assignment_AssignmentType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Assignment_AssignmentType")
}

const (
	// Assignment_AssignmentType_UNSET corresponds to the value UNSET of Assignment_AssignmentType
	Assignment_AssignmentType_UNSET E_Assignment_AssignmentType = 0
	// Assignment_AssignmentType_LOGICAL_CHANNEL corresponds to the value LOGICAL_CHANNEL of Assignment_AssignmentType
	Assignment_AssignmentType_LOGICAL_CHANNEL E_Assignment_AssignmentType = 1
	// Assignment_AssignmentType_OPTICAL_CHANNEL corresponds to the value OPTICAL_CHANNEL of Assignment_AssignmentType
	Assignment_AssignmentType_OPTICAL_CHANNEL E_Assignment_AssignmentType = 2
)

// E_Authentication_CryptoType is a derived int64 type which is used to represent
// the enumerated node Authentication_CryptoType. An additional value named
// Authentication_CryptoType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Authentication_CryptoType int64

// IsYANGGoEnum ensures that Authentication_CryptoType implements the yang.GoEnum
// interface. This ensures that Authentication_CryptoType can be identified as a
// mapped type for a YANG enumeration.
func (E_Authentication_CryptoType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Authentication_CryptoType.
func (E_Authentication_CryptoType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Authentication_CryptoType.
func (e E_Authentication_CryptoType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Authentication_CryptoType")
}

const (
	// Authentication_CryptoType_UNSET corresponds to the value UNSET of Authentication_CryptoType
	Authentication_CryptoType_UNSET E_Authentication_CryptoType = 0
	// Authentication_CryptoType_HMAC_MD5 corresponds to the value HMAC_MD5 of Authentication_CryptoType
	Authentication_CryptoType_HMAC_MD5 E_Authentication_CryptoType = 1
	// Authentication_CryptoType_CLEARTEXT corresponds to the value CLEARTEXT of Authentication_CryptoType
	Authentication_CryptoType_CLEARTEXT E_Authentication_CryptoType = 2
)

// E_BandwidthReservation_Priority_Enum is a derived int64 type which is used to represent
// the enumerated node BandwidthReservation_Priority_Enum. An additional value named
// BandwidthReservation_Priority_Enum_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_BandwidthReservation_Priority_Enum int64

// IsYANGGoEnum ensures that BandwidthReservation_Priority_Enum implements the yang.GoEnum
// interface. This ensures that BandwidthReservation_Priority_Enum can be identified as a
// mapped type for a YANG enumeration.
func (E_BandwidthReservation_Priority_Enum) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  BandwidthReservation_Priority_Enum.
func (E_BandwidthReservation_Priority_Enum) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_BandwidthReservation_Priority_Enum.
func (e E_BandwidthReservation_Priority_Enum) String() string {
	return ygot.EnumLogString(e, int64(e), "E_BandwidthReservation_Priority_Enum")
}

const (
	// BandwidthReservation_Priority_Enum_UNSET corresponds to the value UNSET of BandwidthReservation_Priority_Enum
	BandwidthReservation_Priority_Enum_UNSET E_BandwidthReservation_Priority_Enum = 0
	// BandwidthReservation_Priority_Enum_ALL corresponds to the value ALL of BandwidthReservation_Priority_Enum
	BandwidthReservation_Priority_Enum_ALL E_BandwidthReservation_Priority_Enum = 1
)

// E_Bfd_BfdDiagnosticCode is a derived int64 type which is used to represent
// the enumerated node Bfd_BfdDiagnosticCode. An additional value named
// Bfd_BfdDiagnosticCode_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Bfd_BfdDiagnosticCode int64

// IsYANGGoEnum ensures that Bfd_BfdDiagnosticCode implements the yang.GoEnum
// interface. This ensures that Bfd_BfdDiagnosticCode can be identified as a
// mapped type for a YANG enumeration.
func (E_Bfd_BfdDiagnosticCode) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Bfd_BfdDiagnosticCode.
func (E_Bfd_BfdDiagnosticCode) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Bfd_BfdDiagnosticCode.
func (e E_Bfd_BfdDiagnosticCode) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Bfd_BfdDiagnosticCode")
}

const (
	// Bfd_BfdDiagnosticCode_UNSET corresponds to the value UNSET of Bfd_BfdDiagnosticCode
	Bfd_BfdDiagnosticCode_UNSET E_Bfd_BfdDiagnosticCode = 0
	// Bfd_BfdDiagnosticCode_NO_DIAGNOSTIC corresponds to the value NO_DIAGNOSTIC of Bfd_BfdDiagnosticCode
	Bfd_BfdDiagnosticCode_NO_DIAGNOSTIC E_Bfd_BfdDiagnosticCode = 1
	// Bfd_BfdDiagnosticCode_DETECTION_TIMEOUT corresponds to the value DETECTION_TIMEOUT of Bfd_BfdDiagnosticCode
	Bfd_BfdDiagnosticCode_DETECTION_TIMEOUT E_Bfd_BfdDiagnosticCode = 2
	// Bfd_BfdDiagnosticCode_ECHO_FAILED corresponds to the value ECHO_FAILED of Bfd_BfdDiagnosticCode
	Bfd_BfdDiagnosticCode_ECHO_FAILED E_Bfd_BfdDiagnosticCode = 3
	// Bfd_BfdDiagnosticCode_FORWARDING_RESET corresponds to the value FORWARDING_RESET of Bfd_BfdDiagnosticCode
	Bfd_BfdDiagnosticCode_FORWARDING_RESET E_Bfd_BfdDiagnosticCode = 4
	// Bfd_BfdDiagnosticCode_PATH_DOWN corresponds to the value PATH_DOWN of Bfd_BfdDiagnosticCode
	Bfd_BfdDiagnosticCode_PATH_DOWN E_Bfd_BfdDiagnosticCode = 5
	// Bfd_BfdDiagnosticCode_CONCATENATED_PATH_DOWN corresponds to the value CONCATENATED_PATH_DOWN of Bfd_BfdDiagnosticCode
	Bfd_BfdDiagnosticCode_CONCATENATED_PATH_DOWN E_Bfd_BfdDiagnosticCode = 6
	// Bfd_BfdDiagnosticCode_ADMIN_DOWN corresponds to the value ADMIN_DOWN of Bfd_BfdDiagnosticCode
	Bfd_BfdDiagnosticCode_ADMIN_DOWN E_Bfd_BfdDiagnosticCode = 7
	// Bfd_BfdDiagnosticCode_REVERSE_CONCATENATED_PATH_DOWN corresponds to the value REVERSE_CONCATENATED_PATH_DOWN of Bfd_BfdDiagnosticCode
	Bfd_BfdDiagnosticCode_REVERSE_CONCATENATED_PATH_DOWN E_Bfd_BfdDiagnosticCode = 8
)

// E_Bfd_BfdSessionState is a derived int64 type which is used to represent
// the enumerated node Bfd_BfdSessionState. An additional value named
// Bfd_BfdSessionState_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Bfd_BfdSessionState int64

// IsYANGGoEnum ensures that Bfd_BfdSessionState implements the yang.GoEnum
// interface. This ensures that Bfd_BfdSessionState can be identified as a
// mapped type for a YANG enumeration.
func (E_Bfd_BfdSessionState) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Bfd_BfdSessionState.
func (E_Bfd_BfdSessionState) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Bfd_BfdSessionState.
func (e E_Bfd_BfdSessionState) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Bfd_BfdSessionState")
}

const (
	// Bfd_BfdSessionState_UNSET corresponds to the value UNSET of Bfd_BfdSessionState
	Bfd_BfdSessionState_UNSET E_Bfd_BfdSessionState = 0
	// Bfd_BfdSessionState_UP corresponds to the value UP of Bfd_BfdSessionState
	Bfd_BfdSessionState_UP E_Bfd_BfdSessionState = 1
	// Bfd_BfdSessionState_DOWN corresponds to the value DOWN of Bfd_BfdSessionState
	Bfd_BfdSessionState_DOWN E_Bfd_BfdSessionState = 2
	// Bfd_BfdSessionState_ADMIN_DOWN corresponds to the value ADMIN_DOWN of Bfd_BfdSessionState
	Bfd_BfdSessionState_ADMIN_DOWN E_Bfd_BfdSessionState = 3
	// Bfd_BfdSessionState_INIT corresponds to the value INIT of Bfd_BfdSessionState
	Bfd_BfdSessionState_INIT E_Bfd_BfdSessionState = 4
)

// E_BgpConditions_RouteType is a derived int64 type which is used to represent
// the enumerated node BgpConditions_RouteType. An additional value named
// BgpConditions_RouteType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_BgpConditions_RouteType int64

// IsYANGGoEnum ensures that BgpConditions_RouteType implements the yang.GoEnum
// interface. This ensures that BgpConditions_RouteType can be identified as a
// mapped type for a YANG enumeration.
func (E_BgpConditions_RouteType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  BgpConditions_RouteType.
func (E_BgpConditions_RouteType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_BgpConditions_RouteType.
func (e E_BgpConditions_RouteType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_BgpConditions_RouteType")
}

const (
	// BgpConditions_RouteType_UNSET corresponds to the value UNSET of BgpConditions_RouteType
	BgpConditions_RouteType_UNSET E_BgpConditions_RouteType = 0
	// BgpConditions_RouteType_INTERNAL corresponds to the value INTERNAL of BgpConditions_RouteType
	BgpConditions_RouteType_INTERNAL E_BgpConditions_RouteType = 1
	// BgpConditions_RouteType_EXTERNAL corresponds to the value EXTERNAL of BgpConditions_RouteType
	BgpConditions_RouteType_EXTERNAL E_BgpConditions_RouteType = 2
)

// E_BgpPolicy_BgpNextHopType_Enum is a derived int64 type which is used to represent
// the enumerated node BgpPolicy_BgpNextHopType_Enum. An additional value named
// BgpPolicy_BgpNextHopType_Enum_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_BgpPolicy_BgpNextHopType_Enum int64

// IsYANGGoEnum ensures that BgpPolicy_BgpNextHopType_Enum implements the yang.GoEnum
// interface. This ensures that BgpPolicy_BgpNextHopType_Enum can be identified as a
// mapped type for a YANG enumeration.
func (E_BgpPolicy_BgpNextHopType_Enum) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  BgpPolicy_BgpNextHopType_Enum.
func (E_BgpPolicy_BgpNextHopType_Enum) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_BgpPolicy_BgpNextHopType_Enum.
func (e E_BgpPolicy_BgpNextHopType_Enum) String() string {
	return ygot.EnumLogString(e, int64(e), "E_BgpPolicy_BgpNextHopType_Enum")
}

const (
	// BgpPolicy_BgpNextHopType_Enum_UNSET corresponds to the value UNSET of BgpPolicy_BgpNextHopType_Enum
	BgpPolicy_BgpNextHopType_Enum_UNSET E_BgpPolicy_BgpNextHopType_Enum = 0
	// BgpPolicy_BgpNextHopType_Enum_SELF corresponds to the value SELF of BgpPolicy_BgpNextHopType_Enum
	BgpPolicy_BgpNextHopType_Enum_SELF E_BgpPolicy_BgpNextHopType_Enum = 1
	// BgpPolicy_BgpNextHopType_Enum_PEER_ADDRESS corresponds to the value PEER_ADDRESS of BgpPolicy_BgpNextHopType_Enum
	BgpPolicy_BgpNextHopType_Enum_PEER_ADDRESS E_BgpPolicy_BgpNextHopType_Enum = 2
)

// E_BgpPolicy_BgpSetCommunityOptionType is a derived int64 type which is used to represent
// the enumerated node BgpPolicy_BgpSetCommunityOptionType. An additional value named
// BgpPolicy_BgpSetCommunityOptionType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_BgpPolicy_BgpSetCommunityOptionType int64

// IsYANGGoEnum ensures that BgpPolicy_BgpSetCommunityOptionType implements the yang.GoEnum
// interface. This ensures that BgpPolicy_BgpSetCommunityOptionType can be identified as a
// mapped type for a YANG enumeration.
func (E_BgpPolicy_BgpSetCommunityOptionType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  BgpPolicy_BgpSetCommunityOptionType.
func (E_BgpPolicy_BgpSetCommunityOptionType) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_BgpPolicy_BgpSetCommunityOptionType.
func (e E_BgpPolicy_BgpSetCommunityOptionType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_BgpPolicy_BgpSetCommunityOptionType")
}

const (
	// BgpPolicy_BgpSetCommunityOptionType_UNSET corresponds to the value UNSET of BgpPolicy_BgpSetCommunityOptionType
	BgpPolicy_BgpSetCommunityOptionType_UNSET E_BgpPolicy_BgpSetCommunityOptionType = 0
	// BgpPolicy_BgpSetCommunityOptionType_ADD corresponds to the value ADD of BgpPolicy_BgpSetCommunityOptionType
	BgpPolicy_BgpSetCommunityOptionType_ADD E_BgpPolicy_BgpSetCommunityOptionType = 1
	// BgpPolicy_BgpSetCommunityOptionType_REMOVE corresponds to the value REMOVE of BgpPolicy_BgpSetCommunityOptionType
	BgpPolicy_BgpSetCommunityOptionType_REMOVE E_BgpPolicy_BgpSetCommunityOptionType = 2
	// BgpPolicy_BgpSetCommunityOptionType_REPLACE corresponds to the value REPLACE of BgpPolicy_BgpSetCommunityOptionType
	BgpPolicy_BgpSetCommunityOptionType_REPLACE E_BgpPolicy_BgpSetCommunityOptionType = 3
)

// E_BgpPolicy_BgpSetMedType_Enum is a derived int64 type which is used to represent
// the enumerated node BgpPolicy_BgpSetMedType_Enum. An additional value named
// BgpPolicy_BgpSetMedType_Enum_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_BgpPolicy_BgpSetMedType_Enum int64

// IsYANGGoEnum ensures that BgpPolicy_BgpSetMedType_Enum implements the yang.GoEnum
// interface. This ensures that BgpPolicy_BgpSetMedType_Enum can be identified as a
// mapped type for a YANG enumeration.
func (E_BgpPolicy_BgpSetMedType_Enum) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  BgpPolicy_BgpSetMedType_Enum.
func (E_BgpPolicy_BgpSetMedType_Enum) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_BgpPolicy_BgpSetMedType_Enum.
func (e E_BgpPolicy_BgpSetMedType_Enum) String() string {
	return ygot.EnumLogString(e, int64(e), "E_BgpPolicy_BgpSetMedType_Enum")
}

const (
	// BgpPolicy_BgpSetMedType_Enum_UNSET corresponds to the value UNSET of BgpPolicy_BgpSetMedType_Enum
	BgpPolicy_BgpSetMedType_Enum_UNSET E_BgpPolicy_BgpSetMedType_Enum = 0
	// BgpPolicy_BgpSetMedType_Enum_IGP corresponds to the value IGP of BgpPolicy_BgpSetMedType_Enum
	BgpPolicy_BgpSetMedType_Enum_IGP E_BgpPolicy_BgpSetMedType_Enum = 1
)

// E_BgpTypes_AFI_SAFI_TYPE is a derived int64 type which is used to represent
// the enumerated node BgpTypes_AFI_SAFI_TYPE. An additional value named
// BgpTypes_AFI_SAFI_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_BgpTypes_AFI_SAFI_TYPE int64

// IsYANGGoEnum ensures that BgpTypes_AFI_SAFI_TYPE implements the yang.GoEnum
// interface. This ensures that BgpTypes_AFI_SAFI_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_BgpTypes_AFI_SAFI_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  BgpTypes_AFI_SAFI_TYPE.
func (E_BgpTypes_AFI_SAFI_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_BgpTypes_AFI_SAFI_TYPE.
func (e E_BgpTypes_AFI_SAFI_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_BgpTypes_AFI_SAFI_TYPE")
}

const (
	// BgpTypes_AFI_SAFI_TYPE_UNSET corresponds to the value UNSET of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_UNSET E_BgpTypes_AFI_SAFI_TYPE = 0
	// BgpTypes_AFI_SAFI_TYPE_IPV4_FLOWSPEC corresponds to the value IPV4_FLOWSPEC of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_IPV4_FLOWSPEC E_BgpTypes_AFI_SAFI_TYPE = 1
	// BgpTypes_AFI_SAFI_TYPE_IPV4_LABELED_UNICAST corresponds to the value IPV4_LABELED_UNICAST of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_IPV4_LABELED_UNICAST E_BgpTypes_AFI_SAFI_TYPE = 2
	// BgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST corresponds to the value IPV4_UNICAST of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST E_BgpTypes_AFI_SAFI_TYPE = 3
	// BgpTypes_AFI_SAFI_TYPE_IPV6_LABELED_UNICAST corresponds to the value IPV6_LABELED_UNICAST of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_IPV6_LABELED_UNICAST E_BgpTypes_AFI_SAFI_TYPE = 4
	// BgpTypes_AFI_SAFI_TYPE_IPV6_UNICAST corresponds to the value IPV6_UNICAST of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_IPV6_UNICAST E_BgpTypes_AFI_SAFI_TYPE = 5
	// BgpTypes_AFI_SAFI_TYPE_L2VPN_EVPN corresponds to the value L2VPN_EVPN of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_L2VPN_EVPN E_BgpTypes_AFI_SAFI_TYPE = 6
	// BgpTypes_AFI_SAFI_TYPE_L2VPN_VPLS corresponds to the value L2VPN_VPLS of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_L2VPN_VPLS E_BgpTypes_AFI_SAFI_TYPE = 7
	// BgpTypes_AFI_SAFI_TYPE_L3VPN_IPV4_MULTICAST corresponds to the value L3VPN_IPV4_MULTICAST of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_L3VPN_IPV4_MULTICAST E_BgpTypes_AFI_SAFI_TYPE = 8
	// BgpTypes_AFI_SAFI_TYPE_L3VPN_IPV4_UNICAST corresponds to the value L3VPN_IPV4_UNICAST of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_L3VPN_IPV4_UNICAST E_BgpTypes_AFI_SAFI_TYPE = 9
	// BgpTypes_AFI_SAFI_TYPE_L3VPN_IPV6_MULTICAST corresponds to the value L3VPN_IPV6_MULTICAST of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_L3VPN_IPV6_MULTICAST E_BgpTypes_AFI_SAFI_TYPE = 10
	// BgpTypes_AFI_SAFI_TYPE_L3VPN_IPV6_UNICAST corresponds to the value L3VPN_IPV6_UNICAST of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_L3VPN_IPV6_UNICAST E_BgpTypes_AFI_SAFI_TYPE = 11
	// BgpTypes_AFI_SAFI_TYPE_LINKSTATE corresponds to the value LINKSTATE of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_LINKSTATE E_BgpTypes_AFI_SAFI_TYPE = 12
	// BgpTypes_AFI_SAFI_TYPE_LINKSTATE_SPF corresponds to the value LINKSTATE_SPF of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_LINKSTATE_SPF E_BgpTypes_AFI_SAFI_TYPE = 13
	// BgpTypes_AFI_SAFI_TYPE_LINKSTATE_VPN corresponds to the value LINKSTATE_VPN of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_LINKSTATE_VPN E_BgpTypes_AFI_SAFI_TYPE = 14
	// BgpTypes_AFI_SAFI_TYPE_SRTE_POLICY_IPV4 corresponds to the value SRTE_POLICY_IPV4 of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_SRTE_POLICY_IPV4 E_BgpTypes_AFI_SAFI_TYPE = 15
	// BgpTypes_AFI_SAFI_TYPE_SRTE_POLICY_IPV6 corresponds to the value SRTE_POLICY_IPV6 of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_SRTE_POLICY_IPV6 E_BgpTypes_AFI_SAFI_TYPE = 16
	// BgpTypes_AFI_SAFI_TYPE_VPNV4_FLOWSPEC corresponds to the value VPNV4_FLOWSPEC of BgpTypes_AFI_SAFI_TYPE
	BgpTypes_AFI_SAFI_TYPE_VPNV4_FLOWSPEC E_BgpTypes_AFI_SAFI_TYPE = 17
)

// E_BgpTypes_AsPathSegmentType is a derived int64 type which is used to represent
// the enumerated node BgpTypes_AsPathSegmentType. An additional value named
// BgpTypes_AsPathSegmentType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_BgpTypes_AsPathSegmentType int64

// IsYANGGoEnum ensures that BgpTypes_AsPathSegmentType implements the yang.GoEnum
// interface. This ensures that BgpTypes_AsPathSegmentType can be identified as a
// mapped type for a YANG enumeration.
func (E_BgpTypes_AsPathSegmentType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  BgpTypes_AsPathSegmentType.
func (E_BgpTypes_AsPathSegmentType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_BgpTypes_AsPathSegmentType.
func (e E_BgpTypes_AsPathSegmentType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_BgpTypes_AsPathSegmentType")
}

const (
	// BgpTypes_AsPathSegmentType_UNSET corresponds to the value UNSET of BgpTypes_AsPathSegmentType
	BgpTypes_AsPathSegmentType_UNSET E_BgpTypes_AsPathSegmentType = 0
	// BgpTypes_AsPathSegmentType_AS_SEQ corresponds to the value AS_SEQ of BgpTypes_AsPathSegmentType
	BgpTypes_AsPathSegmentType_AS_SEQ E_BgpTypes_AsPathSegmentType = 1
	// BgpTypes_AsPathSegmentType_AS_SET corresponds to the value AS_SET of BgpTypes_AsPathSegmentType
	BgpTypes_AsPathSegmentType_AS_SET E_BgpTypes_AsPathSegmentType = 2
	// BgpTypes_AsPathSegmentType_AS_CONFED_SEQUENCE corresponds to the value AS_CONFED_SEQUENCE of BgpTypes_AsPathSegmentType
	BgpTypes_AsPathSegmentType_AS_CONFED_SEQUENCE E_BgpTypes_AsPathSegmentType = 3
	// BgpTypes_AsPathSegmentType_AS_CONFED_SET corresponds to the value AS_CONFED_SET of BgpTypes_AsPathSegmentType
	BgpTypes_AsPathSegmentType_AS_CONFED_SET E_BgpTypes_AsPathSegmentType = 4
)

// E_BgpTypes_BGP_CAPABILITY is a derived int64 type which is used to represent
// the enumerated node BgpTypes_BGP_CAPABILITY. An additional value named
// BgpTypes_BGP_CAPABILITY_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_BgpTypes_BGP_CAPABILITY int64

// IsYANGGoEnum ensures that BgpTypes_BGP_CAPABILITY implements the yang.GoEnum
// interface. This ensures that BgpTypes_BGP_CAPABILITY can be identified as a
// mapped type for a YANG enumeration.
func (E_BgpTypes_BGP_CAPABILITY) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  BgpTypes_BGP_CAPABILITY.
func (E_BgpTypes_BGP_CAPABILITY) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_BgpTypes_BGP_CAPABILITY.
func (e E_BgpTypes_BGP_CAPABILITY) String() string {
	return ygot.EnumLogString(e, int64(e), "E_BgpTypes_BGP_CAPABILITY")
}

const (
	// BgpTypes_BGP_CAPABILITY_UNSET corresponds to the value UNSET of BgpTypes_BGP_CAPABILITY
	BgpTypes_BGP_CAPABILITY_UNSET E_BgpTypes_BGP_CAPABILITY = 0
	// BgpTypes_BGP_CAPABILITY_ADD_PATHS corresponds to the value ADD_PATHS of BgpTypes_BGP_CAPABILITY
	BgpTypes_BGP_CAPABILITY_ADD_PATHS E_BgpTypes_BGP_CAPABILITY = 1
	// BgpTypes_BGP_CAPABILITY_ASN32 corresponds to the value ASN32 of BgpTypes_BGP_CAPABILITY
	BgpTypes_BGP_CAPABILITY_ASN32 E_BgpTypes_BGP_CAPABILITY = 2
	// BgpTypes_BGP_CAPABILITY_EXTENDED_NEXTHOP_ENCODING corresponds to the value EXTENDED_NEXTHOP_ENCODING of BgpTypes_BGP_CAPABILITY
	BgpTypes_BGP_CAPABILITY_EXTENDED_NEXTHOP_ENCODING E_BgpTypes_BGP_CAPABILITY = 3
	// BgpTypes_BGP_CAPABILITY_GRACEFUL_RESTART corresponds to the value GRACEFUL_RESTART of BgpTypes_BGP_CAPABILITY
	BgpTypes_BGP_CAPABILITY_GRACEFUL_RESTART E_BgpTypes_BGP_CAPABILITY = 4
	// BgpTypes_BGP_CAPABILITY_MPBGP corresponds to the value MPBGP of BgpTypes_BGP_CAPABILITY
	BgpTypes_BGP_CAPABILITY_MPBGP E_BgpTypes_BGP_CAPABILITY = 5
	// BgpTypes_BGP_CAPABILITY_ROUTE_REFRESH corresponds to the value ROUTE_REFRESH of BgpTypes_BGP_CAPABILITY
	BgpTypes_BGP_CAPABILITY_ROUTE_REFRESH E_BgpTypes_BGP_CAPABILITY = 6
)

// E_BgpTypes_BGP_ERROR_CODE is a derived int64 type which is used to represent
// the enumerated node BgpTypes_BGP_ERROR_CODE. An additional value named
// BgpTypes_BGP_ERROR_CODE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_BgpTypes_BGP_ERROR_CODE int64

// IsYANGGoEnum ensures that BgpTypes_BGP_ERROR_CODE implements the yang.GoEnum
// interface. This ensures that BgpTypes_BGP_ERROR_CODE can be identified as a
// mapped type for a YANG enumeration.
func (E_BgpTypes_BGP_ERROR_CODE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  BgpTypes_BGP_ERROR_CODE.
func (E_BgpTypes_BGP_ERROR_CODE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_BgpTypes_BGP_ERROR_CODE.
func (e E_BgpTypes_BGP_ERROR_CODE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_BgpTypes_BGP_ERROR_CODE")
}

const (
	// BgpTypes_BGP_ERROR_CODE_UNSET corresponds to the value UNSET of BgpTypes_BGP_ERROR_CODE
	BgpTypes_BGP_ERROR_CODE_UNSET E_BgpTypes_BGP_ERROR_CODE = 0
	// BgpTypes_BGP_ERROR_CODE_CEASE corresponds to the value CEASE of BgpTypes_BGP_ERROR_CODE
	BgpTypes_BGP_ERROR_CODE_CEASE E_BgpTypes_BGP_ERROR_CODE = 1
	// BgpTypes_BGP_ERROR_CODE_FINITE_STATE_MACHINE_ERROR corresponds to the value FINITE_STATE_MACHINE_ERROR of BgpTypes_BGP_ERROR_CODE
	BgpTypes_BGP_ERROR_CODE_FINITE_STATE_MACHINE_ERROR E_BgpTypes_BGP_ERROR_CODE = 2
	// BgpTypes_BGP_ERROR_CODE_HOLD_TIMER_EXPIRED corresponds to the value HOLD_TIMER_EXPIRED of BgpTypes_BGP_ERROR_CODE
	BgpTypes_BGP_ERROR_CODE_HOLD_TIMER_EXPIRED E_BgpTypes_BGP_ERROR_CODE = 3
	// BgpTypes_BGP_ERROR_CODE_MESSAGE_HEADER_ERROR corresponds to the value MESSAGE_HEADER_ERROR of BgpTypes_BGP_ERROR_CODE
	BgpTypes_BGP_ERROR_CODE_MESSAGE_HEADER_ERROR E_BgpTypes_BGP_ERROR_CODE = 4
	// BgpTypes_BGP_ERROR_CODE_OPEN_MESSAGE_ERROR corresponds to the value OPEN_MESSAGE_ERROR of BgpTypes_BGP_ERROR_CODE
	BgpTypes_BGP_ERROR_CODE_OPEN_MESSAGE_ERROR E_BgpTypes_BGP_ERROR_CODE = 5
	// BgpTypes_BGP_ERROR_CODE_ROUTE_REFRESH_MESSAGE_ERROR corresponds to the value ROUTE_REFRESH_MESSAGE_ERROR of BgpTypes_BGP_ERROR_CODE
	BgpTypes_BGP_ERROR_CODE_ROUTE_REFRESH_MESSAGE_ERROR E_BgpTypes_BGP_ERROR_CODE = 6
	// BgpTypes_BGP_ERROR_CODE_UPDATE_MESSAGE_ERROR corresponds to the value UPDATE_MESSAGE_ERROR of BgpTypes_BGP_ERROR_CODE
	BgpTypes_BGP_ERROR_CODE_UPDATE_MESSAGE_ERROR E_BgpTypes_BGP_ERROR_CODE = 7
)

// E_BgpTypes_BGP_ERROR_SUBCODE is a derived int64 type which is used to represent
// the enumerated node BgpTypes_BGP_ERROR_SUBCODE. An additional value named
// BgpTypes_BGP_ERROR_SUBCODE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_BgpTypes_BGP_ERROR_SUBCODE int64

// IsYANGGoEnum ensures that BgpTypes_BGP_ERROR_SUBCODE implements the yang.GoEnum
// interface. This ensures that BgpTypes_BGP_ERROR_SUBCODE can be identified as a
// mapped type for a YANG enumeration.
func (E_BgpTypes_BGP_ERROR_SUBCODE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  BgpTypes_BGP_ERROR_SUBCODE.
func (E_BgpTypes_BGP_ERROR_SUBCODE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_BgpTypes_BGP_ERROR_SUBCODE.
func (e E_BgpTypes_BGP_ERROR_SUBCODE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_BgpTypes_BGP_ERROR_SUBCODE")
}

const (
	// BgpTypes_BGP_ERROR_SUBCODE_UNSET corresponds to the value UNSET of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_UNSET E_BgpTypes_BGP_ERROR_SUBCODE = 0
	// BgpTypes_BGP_ERROR_SUBCODE_ADMINISTRATIVE_RESET corresponds to the value ADMINISTRATIVE_RESET of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_ADMINISTRATIVE_RESET E_BgpTypes_BGP_ERROR_SUBCODE = 1
	// BgpTypes_BGP_ERROR_SUBCODE_ADMINISTRATIVE_SHUTDOWN corresponds to the value ADMINISTRATIVE_SHUTDOWN of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_ADMINISTRATIVE_SHUTDOWN E_BgpTypes_BGP_ERROR_SUBCODE = 2
	// BgpTypes_BGP_ERROR_SUBCODE_ATTRIBUTE_FLAGS_ERROR corresponds to the value ATTRIBUTE_FLAGS_ERROR of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_ATTRIBUTE_FLAGS_ERROR E_BgpTypes_BGP_ERROR_SUBCODE = 3
	// BgpTypes_BGP_ERROR_SUBCODE_ATTRIBUTE_LENGTH_ERROR corresponds to the value ATTRIBUTE_LENGTH_ERROR of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_ATTRIBUTE_LENGTH_ERROR E_BgpTypes_BGP_ERROR_SUBCODE = 4
	// BgpTypes_BGP_ERROR_SUBCODE_BAD_BGP_IDENTIFIER corresponds to the value BAD_BGP_IDENTIFIER of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_BAD_BGP_IDENTIFIER E_BgpTypes_BGP_ERROR_SUBCODE = 5
	// BgpTypes_BGP_ERROR_SUBCODE_BAD_MESSAGE_LENGTH corresponds to the value BAD_MESSAGE_LENGTH of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_BAD_MESSAGE_LENGTH E_BgpTypes_BGP_ERROR_SUBCODE = 6
	// BgpTypes_BGP_ERROR_SUBCODE_BAD_MESSAGE_TYPE corresponds to the value BAD_MESSAGE_TYPE of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_BAD_MESSAGE_TYPE E_BgpTypes_BGP_ERROR_SUBCODE = 7
	// BgpTypes_BGP_ERROR_SUBCODE_BAD_PEER_AS corresponds to the value BAD_PEER_AS of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_BAD_PEER_AS E_BgpTypes_BGP_ERROR_SUBCODE = 8
	// BgpTypes_BGP_ERROR_SUBCODE_CEASE_SUBCODE corresponds to the value CEASE_SUBCODE of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_CEASE_SUBCODE E_BgpTypes_BGP_ERROR_SUBCODE = 9
	// BgpTypes_BGP_ERROR_SUBCODE_CONNECTION_NOT_SYNCHRONIZED corresponds to the value CONNECTION_NOT_SYNCHRONIZED of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_CONNECTION_NOT_SYNCHRONIZED E_BgpTypes_BGP_ERROR_SUBCODE = 10
	// BgpTypes_BGP_ERROR_SUBCODE_CONNECTION_REJECTED corresponds to the value CONNECTION_REJECTED of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_CONNECTION_REJECTED E_BgpTypes_BGP_ERROR_SUBCODE = 11
	// BgpTypes_BGP_ERROR_SUBCODE_CONN_COLLISION_RESOLUTION corresponds to the value CONN_COLLISION_RESOLUTION of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_CONN_COLLISION_RESOLUTION E_BgpTypes_BGP_ERROR_SUBCODE = 12
	// BgpTypes_BGP_ERROR_SUBCODE_FINITE_STATE_MACHINE_SUBCODE corresponds to the value FINITE_STATE_MACHINE_SUBCODE of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_FINITE_STATE_MACHINE_SUBCODE E_BgpTypes_BGP_ERROR_SUBCODE = 13
	// BgpTypes_BGP_ERROR_SUBCODE_INVALID_MESSAGE_LENGTH corresponds to the value INVALID_MESSAGE_LENGTH of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_INVALID_MESSAGE_LENGTH E_BgpTypes_BGP_ERROR_SUBCODE = 14
	// BgpTypes_BGP_ERROR_SUBCODE_INVALID_NETWORK_FIELD corresponds to the value INVALID_NETWORK_FIELD of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_INVALID_NETWORK_FIELD E_BgpTypes_BGP_ERROR_SUBCODE = 15
	// BgpTypes_BGP_ERROR_SUBCODE_INVALID_NEXT_HOP_ATTRIBUTE corresponds to the value INVALID_NEXT_HOP_ATTRIBUTE of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_INVALID_NEXT_HOP_ATTRIBUTE E_BgpTypes_BGP_ERROR_SUBCODE = 16
	// BgpTypes_BGP_ERROR_SUBCODE_INVALID_ORIGIN_ATTRIBUTE corresponds to the value INVALID_ORIGIN_ATTRIBUTE of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_INVALID_ORIGIN_ATTRIBUTE E_BgpTypes_BGP_ERROR_SUBCODE = 17
	// BgpTypes_BGP_ERROR_SUBCODE_MALFORMED_AS_PATH corresponds to the value MALFORMED_AS_PATH of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_MALFORMED_AS_PATH E_BgpTypes_BGP_ERROR_SUBCODE = 18
	// BgpTypes_BGP_ERROR_SUBCODE_MALFORMED_ATTRIBUTE_LIST corresponds to the value MALFORMED_ATTRIBUTE_LIST of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_MALFORMED_ATTRIBUTE_LIST E_BgpTypes_BGP_ERROR_SUBCODE = 19
	// BgpTypes_BGP_ERROR_SUBCODE_MAX_NUM_PREFIXES_REACHED corresponds to the value MAX_NUM_PREFIXES_REACHED of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_MAX_NUM_PREFIXES_REACHED E_BgpTypes_BGP_ERROR_SUBCODE = 20
	// BgpTypes_BGP_ERROR_SUBCODE_MESSAGE_HEADER_SUBCODE corresponds to the value MESSAGE_HEADER_SUBCODE of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_MESSAGE_HEADER_SUBCODE E_BgpTypes_BGP_ERROR_SUBCODE = 21
	// BgpTypes_BGP_ERROR_SUBCODE_MISSING_WELL_KNOWN_ATTRIBUTE corresponds to the value MISSING_WELL_KNOWN_ATTRIBUTE of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_MISSING_WELL_KNOWN_ATTRIBUTE E_BgpTypes_BGP_ERROR_SUBCODE = 22
	// BgpTypes_BGP_ERROR_SUBCODE_OPEN_MESSAGE_SUBCODE corresponds to the value OPEN_MESSAGE_SUBCODE of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_OPEN_MESSAGE_SUBCODE E_BgpTypes_BGP_ERROR_SUBCODE = 23
	// BgpTypes_BGP_ERROR_SUBCODE_OPTIONAL_ATTRIBUTE_ERROR corresponds to the value OPTIONAL_ATTRIBUTE_ERROR of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_OPTIONAL_ATTRIBUTE_ERROR E_BgpTypes_BGP_ERROR_SUBCODE = 24
	// BgpTypes_BGP_ERROR_SUBCODE_OTHER_CONFIG_CHANGE corresponds to the value OTHER_CONFIG_CHANGE of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_OTHER_CONFIG_CHANGE E_BgpTypes_BGP_ERROR_SUBCODE = 25
	// BgpTypes_BGP_ERROR_SUBCODE_OUT_OF_RESOURCES corresponds to the value OUT_OF_RESOURCES of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_OUT_OF_RESOURCES E_BgpTypes_BGP_ERROR_SUBCODE = 26
	// BgpTypes_BGP_ERROR_SUBCODE_PEER_DE_CONFIGURED corresponds to the value PEER_DE_CONFIGURED of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_PEER_DE_CONFIGURED E_BgpTypes_BGP_ERROR_SUBCODE = 27
	// BgpTypes_BGP_ERROR_SUBCODE_RECEIVE_UNEXPECTED_MESSAGE_ESTABLISHED corresponds to the value RECEIVE_UNEXPECTED_MESSAGE_ESTABLISHED of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_RECEIVE_UNEXPECTED_MESSAGE_ESTABLISHED E_BgpTypes_BGP_ERROR_SUBCODE = 28
	// BgpTypes_BGP_ERROR_SUBCODE_RECEIVE_UNEXPECTED_MESSAGE_OPENCONFIRM corresponds to the value RECEIVE_UNEXPECTED_MESSAGE_OPENCONFIRM of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_RECEIVE_UNEXPECTED_MESSAGE_OPENCONFIRM E_BgpTypes_BGP_ERROR_SUBCODE = 29
	// BgpTypes_BGP_ERROR_SUBCODE_RECEIVE_UNEXPECTED_MESSAGE_OPENSENT corresponds to the value RECEIVE_UNEXPECTED_MESSAGE_OPENSENT of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_RECEIVE_UNEXPECTED_MESSAGE_OPENSENT E_BgpTypes_BGP_ERROR_SUBCODE = 30
	// BgpTypes_BGP_ERROR_SUBCODE_ROUTE_REFRESH_SUBCODE corresponds to the value ROUTE_REFRESH_SUBCODE of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_ROUTE_REFRESH_SUBCODE E_BgpTypes_BGP_ERROR_SUBCODE = 31
	// BgpTypes_BGP_ERROR_SUBCODE_UNACCEPTABLE_HOLD_TIME corresponds to the value UNACCEPTABLE_HOLD_TIME of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_UNACCEPTABLE_HOLD_TIME E_BgpTypes_BGP_ERROR_SUBCODE = 32
	// BgpTypes_BGP_ERROR_SUBCODE_UNRECOGNIZED_WELL_KNOWN_ATTRIBUTE corresponds to the value UNRECOGNIZED_WELL_KNOWN_ATTRIBUTE of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_UNRECOGNIZED_WELL_KNOWN_ATTRIBUTE E_BgpTypes_BGP_ERROR_SUBCODE = 33
	// BgpTypes_BGP_ERROR_SUBCODE_UNSPECIFIC corresponds to the value UNSPECIFIC of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_UNSPECIFIC E_BgpTypes_BGP_ERROR_SUBCODE = 34
	// BgpTypes_BGP_ERROR_SUBCODE_UNSUPPORTED_CAPABILITY corresponds to the value UNSUPPORTED_CAPABILITY of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_UNSUPPORTED_CAPABILITY E_BgpTypes_BGP_ERROR_SUBCODE = 35
	// BgpTypes_BGP_ERROR_SUBCODE_UNSUPPORTED_OPTIONAL_PARAMETER corresponds to the value UNSUPPORTED_OPTIONAL_PARAMETER of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_UNSUPPORTED_OPTIONAL_PARAMETER E_BgpTypes_BGP_ERROR_SUBCODE = 36
	// BgpTypes_BGP_ERROR_SUBCODE_UNSUPPORTED_VERSION_NUMBER corresponds to the value UNSUPPORTED_VERSION_NUMBER of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_UNSUPPORTED_VERSION_NUMBER E_BgpTypes_BGP_ERROR_SUBCODE = 37
	// BgpTypes_BGP_ERROR_SUBCODE_UPDATE_MESSAGE_SUBCODE corresponds to the value UPDATE_MESSAGE_SUBCODE of BgpTypes_BGP_ERROR_SUBCODE
	BgpTypes_BGP_ERROR_SUBCODE_UPDATE_MESSAGE_SUBCODE E_BgpTypes_BGP_ERROR_SUBCODE = 38
)

// E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY is a derived int64 type which is used to represent
// the enumerated node BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY. An additional value named
// BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY int64

// IsYANGGoEnum ensures that BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY implements the yang.GoEnum
// interface. This ensures that BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY can be identified as a
// mapped type for a YANG enumeration.
func (E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY.
func (E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY.
func (e E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY) String() string {
	return ygot.EnumLogString(e, int64(e), "E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY")
}

const (
	// BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY_UNSET corresponds to the value UNSET of BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY
	BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY_UNSET E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY = 0
	// BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY_GRACEFUL_SHUTDOWN corresponds to the value GRACEFUL_SHUTDOWN of BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY
	BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY_GRACEFUL_SHUTDOWN E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY = 1
	// BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY_NOPEER corresponds to the value NOPEER of BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY
	BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY_NOPEER E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY = 2
	// BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY_NO_ADVERTISE corresponds to the value NO_ADVERTISE of BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY
	BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY_NO_ADVERTISE E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY = 3
	// BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY_NO_EXPORT corresponds to the value NO_EXPORT of BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY
	BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY_NO_EXPORT E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY = 4
	// BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY_NO_EXPORT_SUBCONFED corresponds to the value NO_EXPORT_SUBCONFED of BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY
	BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY_NO_EXPORT_SUBCONFED E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY = 5
)

// E_BgpTypes_BgpOriginAttrType is a derived int64 type which is used to represent
// the enumerated node BgpTypes_BgpOriginAttrType. An additional value named
// BgpTypes_BgpOriginAttrType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_BgpTypes_BgpOriginAttrType int64

// IsYANGGoEnum ensures that BgpTypes_BgpOriginAttrType implements the yang.GoEnum
// interface. This ensures that BgpTypes_BgpOriginAttrType can be identified as a
// mapped type for a YANG enumeration.
func (E_BgpTypes_BgpOriginAttrType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  BgpTypes_BgpOriginAttrType.
func (E_BgpTypes_BgpOriginAttrType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_BgpTypes_BgpOriginAttrType.
func (e E_BgpTypes_BgpOriginAttrType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_BgpTypes_BgpOriginAttrType")
}

const (
	// BgpTypes_BgpOriginAttrType_UNSET corresponds to the value UNSET of BgpTypes_BgpOriginAttrType
	BgpTypes_BgpOriginAttrType_UNSET E_BgpTypes_BgpOriginAttrType = 0
	// BgpTypes_BgpOriginAttrType_IGP corresponds to the value IGP of BgpTypes_BgpOriginAttrType
	BgpTypes_BgpOriginAttrType_IGP E_BgpTypes_BgpOriginAttrType = 1
	// BgpTypes_BgpOriginAttrType_EGP corresponds to the value EGP of BgpTypes_BgpOriginAttrType
	BgpTypes_BgpOriginAttrType_EGP E_BgpTypes_BgpOriginAttrType = 2
	// BgpTypes_BgpOriginAttrType_INCOMPLETE corresponds to the value INCOMPLETE of BgpTypes_BgpOriginAttrType
	BgpTypes_BgpOriginAttrType_INCOMPLETE E_BgpTypes_BgpOriginAttrType = 3
)

// E_BgpTypes_CommunityType is a derived int64 type which is used to represent
// the enumerated node BgpTypes_CommunityType. An additional value named
// BgpTypes_CommunityType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_BgpTypes_CommunityType int64

// IsYANGGoEnum ensures that BgpTypes_CommunityType implements the yang.GoEnum
// interface. This ensures that BgpTypes_CommunityType can be identified as a
// mapped type for a YANG enumeration.
func (E_BgpTypes_CommunityType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  BgpTypes_CommunityType.
func (E_BgpTypes_CommunityType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_BgpTypes_CommunityType.
func (e E_BgpTypes_CommunityType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_BgpTypes_CommunityType")
}

const (
	// BgpTypes_CommunityType_UNSET corresponds to the value UNSET of BgpTypes_CommunityType
	BgpTypes_CommunityType_UNSET E_BgpTypes_CommunityType = 0
	// BgpTypes_CommunityType_STANDARD corresponds to the value STANDARD of BgpTypes_CommunityType
	BgpTypes_CommunityType_STANDARD E_BgpTypes_CommunityType = 1
	// BgpTypes_CommunityType_EXTENDED corresponds to the value EXTENDED of BgpTypes_CommunityType
	BgpTypes_CommunityType_EXTENDED E_BgpTypes_CommunityType = 2
	// BgpTypes_CommunityType_LARGE corresponds to the value LARGE of BgpTypes_CommunityType
	BgpTypes_CommunityType_LARGE E_BgpTypes_CommunityType = 3
	// BgpTypes_CommunityType_BOTH corresponds to the value BOTH of BgpTypes_CommunityType
	BgpTypes_CommunityType_BOTH E_BgpTypes_CommunityType = 4
	// BgpTypes_CommunityType_NONE corresponds to the value NONE of BgpTypes_CommunityType
	BgpTypes_CommunityType_NONE E_BgpTypes_CommunityType = 5
)

// E_BgpTypes_PeerType is a derived int64 type which is used to represent
// the enumerated node BgpTypes_PeerType. An additional value named
// BgpTypes_PeerType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_BgpTypes_PeerType int64

// IsYANGGoEnum ensures that BgpTypes_PeerType implements the yang.GoEnum
// interface. This ensures that BgpTypes_PeerType can be identified as a
// mapped type for a YANG enumeration.
func (E_BgpTypes_PeerType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  BgpTypes_PeerType.
func (E_BgpTypes_PeerType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_BgpTypes_PeerType.
func (e E_BgpTypes_PeerType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_BgpTypes_PeerType")
}

const (
	// BgpTypes_PeerType_UNSET corresponds to the value UNSET of BgpTypes_PeerType
	BgpTypes_PeerType_UNSET E_BgpTypes_PeerType = 0
	// BgpTypes_PeerType_INTERNAL corresponds to the value INTERNAL of BgpTypes_PeerType
	BgpTypes_PeerType_INTERNAL E_BgpTypes_PeerType = 1
	// BgpTypes_PeerType_EXTERNAL corresponds to the value EXTERNAL of BgpTypes_PeerType
	BgpTypes_PeerType_EXTERNAL E_BgpTypes_PeerType = 2
)

// E_BgpTypes_RemovePrivateAsOption is a derived int64 type which is used to represent
// the enumerated node BgpTypes_RemovePrivateAsOption. An additional value named
// BgpTypes_RemovePrivateAsOption_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_BgpTypes_RemovePrivateAsOption int64

// IsYANGGoEnum ensures that BgpTypes_RemovePrivateAsOption implements the yang.GoEnum
// interface. This ensures that BgpTypes_RemovePrivateAsOption can be identified as a
// mapped type for a YANG enumeration.
func (E_BgpTypes_RemovePrivateAsOption) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  BgpTypes_RemovePrivateAsOption.
func (E_BgpTypes_RemovePrivateAsOption) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_BgpTypes_RemovePrivateAsOption.
func (e E_BgpTypes_RemovePrivateAsOption) String() string {
	return ygot.EnumLogString(e, int64(e), "E_BgpTypes_RemovePrivateAsOption")
}

const (
	// BgpTypes_RemovePrivateAsOption_UNSET corresponds to the value UNSET of BgpTypes_RemovePrivateAsOption
	BgpTypes_RemovePrivateAsOption_UNSET E_BgpTypes_RemovePrivateAsOption = 0
	// BgpTypes_RemovePrivateAsOption_PRIVATE_AS_REMOVE_ALL corresponds to the value PRIVATE_AS_REMOVE_ALL of BgpTypes_RemovePrivateAsOption
	BgpTypes_RemovePrivateAsOption_PRIVATE_AS_REMOVE_ALL E_BgpTypes_RemovePrivateAsOption = 1
	// BgpTypes_RemovePrivateAsOption_PRIVATE_AS_REPLACE_ALL corresponds to the value PRIVATE_AS_REPLACE_ALL of BgpTypes_RemovePrivateAsOption
	BgpTypes_RemovePrivateAsOption_PRIVATE_AS_REPLACE_ALL E_BgpTypes_RemovePrivateAsOption = 2
)

// E_Bgp_Neighbor_SessionState is a derived int64 type which is used to represent
// the enumerated node Bgp_Neighbor_SessionState. An additional value named
// Bgp_Neighbor_SessionState_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Bgp_Neighbor_SessionState int64

// IsYANGGoEnum ensures that Bgp_Neighbor_SessionState implements the yang.GoEnum
// interface. This ensures that Bgp_Neighbor_SessionState can be identified as a
// mapped type for a YANG enumeration.
func (E_Bgp_Neighbor_SessionState) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Bgp_Neighbor_SessionState.
func (E_Bgp_Neighbor_SessionState) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Bgp_Neighbor_SessionState.
func (e E_Bgp_Neighbor_SessionState) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Bgp_Neighbor_SessionState")
}

const (
	// Bgp_Neighbor_SessionState_UNSET corresponds to the value UNSET of Bgp_Neighbor_SessionState
	Bgp_Neighbor_SessionState_UNSET E_Bgp_Neighbor_SessionState = 0
	// Bgp_Neighbor_SessionState_IDLE corresponds to the value IDLE of Bgp_Neighbor_SessionState
	Bgp_Neighbor_SessionState_IDLE E_Bgp_Neighbor_SessionState = 1
	// Bgp_Neighbor_SessionState_CONNECT corresponds to the value CONNECT of Bgp_Neighbor_SessionState
	Bgp_Neighbor_SessionState_CONNECT E_Bgp_Neighbor_SessionState = 2
	// Bgp_Neighbor_SessionState_ACTIVE corresponds to the value ACTIVE of Bgp_Neighbor_SessionState
	Bgp_Neighbor_SessionState_ACTIVE E_Bgp_Neighbor_SessionState = 3
	// Bgp_Neighbor_SessionState_OPENSENT corresponds to the value OPENSENT of Bgp_Neighbor_SessionState
	Bgp_Neighbor_SessionState_OPENSENT E_Bgp_Neighbor_SessionState = 4
	// Bgp_Neighbor_SessionState_OPENCONFIRM corresponds to the value OPENCONFIRM of Bgp_Neighbor_SessionState
	Bgp_Neighbor_SessionState_OPENCONFIRM E_Bgp_Neighbor_SessionState = 5
	// Bgp_Neighbor_SessionState_ESTABLISHED corresponds to the value ESTABLISHED of Bgp_Neighbor_SessionState
	Bgp_Neighbor_SessionState_ESTABLISHED E_Bgp_Neighbor_SessionState = 6
)

// E_Capability_Flags is a derived int64 type which is used to represent
// the enumerated node Capability_Flags. An additional value named
// Capability_Flags_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Capability_Flags int64

// IsYANGGoEnum ensures that Capability_Flags implements the yang.GoEnum
// interface. This ensures that Capability_Flags can be identified as a
// mapped type for a YANG enumeration.
func (E_Capability_Flags) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Capability_Flags.
func (E_Capability_Flags) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Capability_Flags.
func (e E_Capability_Flags) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Capability_Flags")
}

const (
	// Capability_Flags_UNSET corresponds to the value UNSET of Capability_Flags
	Capability_Flags_UNSET E_Capability_Flags = 0
	// Capability_Flags_FLOOD corresponds to the value FLOOD of Capability_Flags
	Capability_Flags_FLOOD E_Capability_Flags = 1
	// Capability_Flags_DOWN corresponds to the value DOWN of Capability_Flags
	Capability_Flags_DOWN E_Capability_Flags = 2
)

// E_Channel_LinkState is a derived int64 type which is used to represent
// the enumerated node Channel_LinkState. An additional value named
// Channel_LinkState_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Channel_LinkState int64

// IsYANGGoEnum ensures that Channel_LinkState implements the yang.GoEnum
// interface. This ensures that Channel_LinkState can be identified as a
// mapped type for a YANG enumeration.
func (E_Channel_LinkState) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Channel_LinkState.
func (E_Channel_LinkState) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Channel_LinkState.
func (e E_Channel_LinkState) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Channel_LinkState")
}

const (
	// Channel_LinkState_UNSET corresponds to the value UNSET of Channel_LinkState
	Channel_LinkState_UNSET E_Channel_LinkState = 0
	// Channel_LinkState_UP corresponds to the value UP of Channel_LinkState
	Channel_LinkState_UP E_Channel_LinkState = 1
	// Channel_LinkState_DOWN corresponds to the value DOWN of Channel_LinkState
	Channel_LinkState_DOWN E_Channel_LinkState = 2
	// Channel_LinkState_TESTING corresponds to the value TESTING of Channel_LinkState
	Channel_LinkState_TESTING E_Channel_LinkState = 3
)

// E_Cpu_Index_Enum is a derived int64 type which is used to represent
// the enumerated node Cpu_Index_Enum. An additional value named
// Cpu_Index_Enum_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Cpu_Index_Enum int64

// IsYANGGoEnum ensures that Cpu_Index_Enum implements the yang.GoEnum
// interface. This ensures that Cpu_Index_Enum can be identified as a
// mapped type for a YANG enumeration.
func (E_Cpu_Index_Enum) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Cpu_Index_Enum.
func (E_Cpu_Index_Enum) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Cpu_Index_Enum.
func (e E_Cpu_Index_Enum) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Cpu_Index_Enum")
}

const (
	// Cpu_Index_Enum_UNSET corresponds to the value UNSET of Cpu_Index_Enum
	Cpu_Index_Enum_UNSET E_Cpu_Index_Enum = 0
	// Cpu_Index_Enum_ALL corresponds to the value ALL of Cpu_Index_Enum
	Cpu_Index_Enum_ALL E_Cpu_Index_Enum = 1
)

// E_DefaultMetric_Flags is a derived int64 type which is used to represent
// the enumerated node DefaultMetric_Flags. An additional value named
// DefaultMetric_Flags_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_DefaultMetric_Flags int64

// IsYANGGoEnum ensures that DefaultMetric_Flags implements the yang.GoEnum
// interface. This ensures that DefaultMetric_Flags can be identified as a
// mapped type for a YANG enumeration.
func (E_DefaultMetric_Flags) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  DefaultMetric_Flags.
func (E_DefaultMetric_Flags) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_DefaultMetric_Flags.
func (e E_DefaultMetric_Flags) String() string {
	return ygot.EnumLogString(e, int64(e), "E_DefaultMetric_Flags")
}

const (
	// DefaultMetric_Flags_UNSET corresponds to the value UNSET of DefaultMetric_Flags
	DefaultMetric_Flags_UNSET E_DefaultMetric_Flags = 0
	// DefaultMetric_Flags_INTERNAL corresponds to the value INTERNAL of DefaultMetric_Flags
	DefaultMetric_Flags_INTERNAL E_DefaultMetric_Flags = 1
)

// E_EndpointPeer_PeerState is a derived int64 type which is used to represent
// the enumerated node EndpointPeer_PeerState. An additional value named
// EndpointPeer_PeerState_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_EndpointPeer_PeerState int64

// IsYANGGoEnum ensures that EndpointPeer_PeerState implements the yang.GoEnum
// interface. This ensures that EndpointPeer_PeerState can be identified as a
// mapped type for a YANG enumeration.
func (E_EndpointPeer_PeerState) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  EndpointPeer_PeerState.
func (E_EndpointPeer_PeerState) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_EndpointPeer_PeerState.
func (e E_EndpointPeer_PeerState) String() string {
	return ygot.EnumLogString(e, int64(e), "E_EndpointPeer_PeerState")
}

const (
	// EndpointPeer_PeerState_UNSET corresponds to the value UNSET of EndpointPeer_PeerState
	EndpointPeer_PeerState_UNSET E_EndpointPeer_PeerState = 0
	// EndpointPeer_PeerState_UP corresponds to the value UP of EndpointPeer_PeerState
	EndpointPeer_PeerState_UP E_EndpointPeer_PeerState = 1
	// EndpointPeer_PeerState_DOWN corresponds to the value DOWN of EndpointPeer_PeerState
	EndpointPeer_PeerState_DOWN E_EndpointPeer_PeerState = 2
)

// E_EndpointVni_MultidestinationTraffic_Enum is a derived int64 type which is used to represent
// the enumerated node EndpointVni_MultidestinationTraffic_Enum. An additional value named
// EndpointVni_MultidestinationTraffic_Enum_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_EndpointVni_MultidestinationTraffic_Enum int64

// IsYANGGoEnum ensures that EndpointVni_MultidestinationTraffic_Enum implements the yang.GoEnum
// interface. This ensures that EndpointVni_MultidestinationTraffic_Enum can be identified as a
// mapped type for a YANG enumeration.
func (E_EndpointVni_MultidestinationTraffic_Enum) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  EndpointVni_MultidestinationTraffic_Enum.
func (E_EndpointVni_MultidestinationTraffic_Enum) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_EndpointVni_MultidestinationTraffic_Enum.
func (e E_EndpointVni_MultidestinationTraffic_Enum) String() string {
	return ygot.EnumLogString(e, int64(e), "E_EndpointVni_MultidestinationTraffic_Enum")
}

const (
	// EndpointVni_MultidestinationTraffic_Enum_UNSET corresponds to the value UNSET of EndpointVni_MultidestinationTraffic_Enum
	EndpointVni_MultidestinationTraffic_Enum_UNSET E_EndpointVni_MultidestinationTraffic_Enum = 0
	// EndpointVni_MultidestinationTraffic_Enum_STATIC_INGRESS_REPLICATION corresponds to the value STATIC_INGRESS_REPLICATION of EndpointVni_MultidestinationTraffic_Enum
	EndpointVni_MultidestinationTraffic_Enum_STATIC_INGRESS_REPLICATION E_EndpointVni_MultidestinationTraffic_Enum = 1
	// EndpointVni_MultidestinationTraffic_Enum_BGP_INGRESS_REPLICATION corresponds to the value BGP_INGRESS_REPLICATION of EndpointVni_MultidestinationTraffic_Enum
	EndpointVni_MultidestinationTraffic_Enum_BGP_INGRESS_REPLICATION E_EndpointVni_MultidestinationTraffic_Enum = 2
)

// E_EndpointVni_SviState is a derived int64 type which is used to represent
// the enumerated node EndpointVni_SviState. An additional value named
// EndpointVni_SviState_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_EndpointVni_SviState int64

// IsYANGGoEnum ensures that EndpointVni_SviState implements the yang.GoEnum
// interface. This ensures that EndpointVni_SviState can be identified as a
// mapped type for a YANG enumeration.
func (E_EndpointVni_SviState) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  EndpointVni_SviState.
func (E_EndpointVni_SviState) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_EndpointVni_SviState.
func (e E_EndpointVni_SviState) String() string {
	return ygot.EnumLogString(e, int64(e), "E_EndpointVni_SviState")
}

const (
	// EndpointVni_SviState_UNSET corresponds to the value UNSET of EndpointVni_SviState
	EndpointVni_SviState_UNSET E_EndpointVni_SviState = 0
	// EndpointVni_SviState_UP corresponds to the value UP of EndpointVni_SviState
	EndpointVni_SviState_UP E_EndpointVni_SviState = 1
	// EndpointVni_SviState_DOWN corresponds to the value DOWN of EndpointVni_SviState
	EndpointVni_SviState_DOWN E_EndpointVni_SviState = 2
)

// E_EndpointVni_VniState is a derived int64 type which is used to represent
// the enumerated node EndpointVni_VniState. An additional value named
// EndpointVni_VniState_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_EndpointVni_VniState int64

// IsYANGGoEnum ensures that EndpointVni_VniState implements the yang.GoEnum
// interface. This ensures that EndpointVni_VniState can be identified as a
// mapped type for a YANG enumeration.
func (E_EndpointVni_VniState) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  EndpointVni_VniState.
func (E_EndpointVni_VniState) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_EndpointVni_VniState.
func (e E_EndpointVni_VniState) String() string {
	return ygot.EnumLogString(e, int64(e), "E_EndpointVni_VniState")
}

const (
	// EndpointVni_VniState_UNSET corresponds to the value UNSET of EndpointVni_VniState
	EndpointVni_VniState_UNSET E_EndpointVni_VniState = 0
	// EndpointVni_VniState_UP corresponds to the value UP of EndpointVni_VniState
	EndpointVni_VniState_UP E_EndpointVni_VniState = 1
	// EndpointVni_VniState_DOWN corresponds to the value DOWN of EndpointVni_VniState
	EndpointVni_VniState_DOWN E_EndpointVni_VniState = 2
)

// E_EndpointVni_VniType is a derived int64 type which is used to represent
// the enumerated node EndpointVni_VniType. An additional value named
// EndpointVni_VniType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_EndpointVni_VniType int64

// IsYANGGoEnum ensures that EndpointVni_VniType implements the yang.GoEnum
// interface. This ensures that EndpointVni_VniType can be identified as a
// mapped type for a YANG enumeration.
func (E_EndpointVni_VniType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  EndpointVni_VniType.
func (E_EndpointVni_VniType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_EndpointVni_VniType.
func (e E_EndpointVni_VniType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_EndpointVni_VniType")
}

const (
	// EndpointVni_VniType_UNSET corresponds to the value UNSET of EndpointVni_VniType
	EndpointVni_VniType_UNSET E_EndpointVni_VniType = 0
	// EndpointVni_VniType_L2 corresponds to the value L2 of EndpointVni_VniType
	EndpointVni_VniType_L2 E_EndpointVni_VniType = 1
	// EndpointVni_VniType_L3 corresponds to the value L3 of EndpointVni_VniType
	EndpointVni_VniType_L3 E_EndpointVni_VniType = 2
)

// E_Entry_EntryType is a derived int64 type which is used to represent
// the enumerated node Entry_EntryType. An additional value named
// Entry_EntryType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Entry_EntryType int64

// IsYANGGoEnum ensures that Entry_EntryType implements the yang.GoEnum
// interface. This ensures that Entry_EntryType can be identified as a
// mapped type for a YANG enumeration.
func (E_Entry_EntryType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Entry_EntryType.
func (E_Entry_EntryType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Entry_EntryType.
func (e E_Entry_EntryType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Entry_EntryType")
}

const (
	// Entry_EntryType_UNSET corresponds to the value UNSET of Entry_EntryType
	Entry_EntryType_UNSET E_Entry_EntryType = 0
	// Entry_EntryType_STATIC corresponds to the value STATIC of Entry_EntryType
	Entry_EntryType_STATIC E_Entry_EntryType = 1
	// Entry_EntryType_DYNAMIC corresponds to the value DYNAMIC of Entry_EntryType
	Entry_EntryType_DYNAMIC E_Entry_EntryType = 2
)

// E_Ethernet_ClientAls is a derived int64 type which is used to represent
// the enumerated node Ethernet_ClientAls. An additional value named
// Ethernet_ClientAls_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Ethernet_ClientAls int64

// IsYANGGoEnum ensures that Ethernet_ClientAls implements the yang.GoEnum
// interface. This ensures that Ethernet_ClientAls can be identified as a
// mapped type for a YANG enumeration.
func (E_Ethernet_ClientAls) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Ethernet_ClientAls.
func (E_Ethernet_ClientAls) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Ethernet_ClientAls.
func (e E_Ethernet_ClientAls) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Ethernet_ClientAls")
}

const (
	// Ethernet_ClientAls_UNSET corresponds to the value UNSET of Ethernet_ClientAls
	Ethernet_ClientAls_UNSET E_Ethernet_ClientAls = 0
	// Ethernet_ClientAls_NONE corresponds to the value NONE of Ethernet_ClientAls
	Ethernet_ClientAls_NONE E_Ethernet_ClientAls = 1
	// Ethernet_ClientAls_LASER_SHUTDOWN corresponds to the value LASER_SHUTDOWN of Ethernet_ClientAls
	Ethernet_ClientAls_LASER_SHUTDOWN E_Ethernet_ClientAls = 2
	// Ethernet_ClientAls_ETHERNET corresponds to the value ETHERNET of Ethernet_ClientAls
	Ethernet_ClientAls_ETHERNET E_Ethernet_ClientAls = 3
)

// E_Ethernet_DuplexMode is a derived int64 type which is used to represent
// the enumerated node Ethernet_DuplexMode. An additional value named
// Ethernet_DuplexMode_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Ethernet_DuplexMode int64

// IsYANGGoEnum ensures that Ethernet_DuplexMode implements the yang.GoEnum
// interface. This ensures that Ethernet_DuplexMode can be identified as a
// mapped type for a YANG enumeration.
func (E_Ethernet_DuplexMode) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Ethernet_DuplexMode.
func (E_Ethernet_DuplexMode) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Ethernet_DuplexMode.
func (e E_Ethernet_DuplexMode) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Ethernet_DuplexMode")
}

const (
	// Ethernet_DuplexMode_UNSET corresponds to the value UNSET of Ethernet_DuplexMode
	Ethernet_DuplexMode_UNSET E_Ethernet_DuplexMode = 0
	// Ethernet_DuplexMode_FULL corresponds to the value FULL of Ethernet_DuplexMode
	Ethernet_DuplexMode_FULL E_Ethernet_DuplexMode = 1
	// Ethernet_DuplexMode_HALF corresponds to the value HALF of Ethernet_DuplexMode
	Ethernet_DuplexMode_HALF E_Ethernet_DuplexMode = 2
)

// E_Ethernet_NegotiatedDuplexMode is a derived int64 type which is used to represent
// the enumerated node Ethernet_NegotiatedDuplexMode. An additional value named
// Ethernet_NegotiatedDuplexMode_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Ethernet_NegotiatedDuplexMode int64

// IsYANGGoEnum ensures that Ethernet_NegotiatedDuplexMode implements the yang.GoEnum
// interface. This ensures that Ethernet_NegotiatedDuplexMode can be identified as a
// mapped type for a YANG enumeration.
func (E_Ethernet_NegotiatedDuplexMode) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Ethernet_NegotiatedDuplexMode.
func (E_Ethernet_NegotiatedDuplexMode) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_Ethernet_NegotiatedDuplexMode.
func (e E_Ethernet_NegotiatedDuplexMode) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Ethernet_NegotiatedDuplexMode")
}

const (
	// Ethernet_NegotiatedDuplexMode_UNSET corresponds to the value UNSET of Ethernet_NegotiatedDuplexMode
	Ethernet_NegotiatedDuplexMode_UNSET E_Ethernet_NegotiatedDuplexMode = 0
	// Ethernet_NegotiatedDuplexMode_FULL corresponds to the value FULL of Ethernet_NegotiatedDuplexMode
	Ethernet_NegotiatedDuplexMode_FULL E_Ethernet_NegotiatedDuplexMode = 1
	// Ethernet_NegotiatedDuplexMode_HALF corresponds to the value HALF of Ethernet_NegotiatedDuplexMode
	Ethernet_NegotiatedDuplexMode_HALF E_Ethernet_NegotiatedDuplexMode = 2
)

// E_Event_Record is a derived int64 type which is used to represent
// the enumerated node Event_Record. An additional value named
// Event_Record_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Event_Record int64

// IsYANGGoEnum ensures that Event_Record implements the yang.GoEnum
// interface. This ensures that Event_Record can be identified as a
// mapped type for a YANG enumeration.
func (E_Event_Record) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Event_Record.
func (E_Event_Record) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Event_Record.
func (e E_Event_Record) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Event_Record")
}

const (
	// Event_Record_UNSET corresponds to the value UNSET of Event_Record
	Event_Record_UNSET E_Event_Record = 0
	// Event_Record_START_STOP corresponds to the value START_STOP of Event_Record
	Event_Record_START_STOP E_Event_Record = 1
	// Event_Record_STOP corresponds to the value STOP of Event_Record
	Event_Record_STOP E_Event_Record = 2
)

// E_EvpnInstance_ReplicationMode is a derived int64 type which is used to represent
// the enumerated node EvpnInstance_ReplicationMode. An additional value named
// EvpnInstance_ReplicationMode_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_EvpnInstance_ReplicationMode int64

// IsYANGGoEnum ensures that EvpnInstance_ReplicationMode implements the yang.GoEnum
// interface. This ensures that EvpnInstance_ReplicationMode can be identified as a
// mapped type for a YANG enumeration.
func (E_EvpnInstance_ReplicationMode) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  EvpnInstance_ReplicationMode.
func (E_EvpnInstance_ReplicationMode) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_EvpnInstance_ReplicationMode.
func (e E_EvpnInstance_ReplicationMode) String() string {
	return ygot.EnumLogString(e, int64(e), "E_EvpnInstance_ReplicationMode")
}

const (
	// EvpnInstance_ReplicationMode_UNSET corresponds to the value UNSET of EvpnInstance_ReplicationMode
	EvpnInstance_ReplicationMode_UNSET E_EvpnInstance_ReplicationMode = 0
	// EvpnInstance_ReplicationMode_STATIC_INGRESS_REPLICATION corresponds to the value STATIC_INGRESS_REPLICATION of EvpnInstance_ReplicationMode
	EvpnInstance_ReplicationMode_STATIC_INGRESS_REPLICATION E_EvpnInstance_ReplicationMode = 1
	// EvpnInstance_ReplicationMode_BGP corresponds to the value BGP of EvpnInstance_ReplicationMode
	EvpnInstance_ReplicationMode_BGP E_EvpnInstance_ReplicationMode = 2
	// EvpnInstance_ReplicationMode_MULTICAST corresponds to the value MULTICAST of EvpnInstance_ReplicationMode
	EvpnInstance_ReplicationMode_MULTICAST E_EvpnInstance_ReplicationMode = 3
)

// E_EvpnInstance_RouteDistinguisher_Enum is a derived int64 type which is used to represent
// the enumerated node EvpnInstance_RouteDistinguisher_Enum. An additional value named
// EvpnInstance_RouteDistinguisher_Enum_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_EvpnInstance_RouteDistinguisher_Enum int64

// IsYANGGoEnum ensures that EvpnInstance_RouteDistinguisher_Enum implements the yang.GoEnum
// interface. This ensures that EvpnInstance_RouteDistinguisher_Enum can be identified as a
// mapped type for a YANG enumeration.
func (E_EvpnInstance_RouteDistinguisher_Enum) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  EvpnInstance_RouteDistinguisher_Enum.
func (E_EvpnInstance_RouteDistinguisher_Enum) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_EvpnInstance_RouteDistinguisher_Enum.
func (e E_EvpnInstance_RouteDistinguisher_Enum) String() string {
	return ygot.EnumLogString(e, int64(e), "E_EvpnInstance_RouteDistinguisher_Enum")
}

const (
	// EvpnInstance_RouteDistinguisher_Enum_UNSET corresponds to the value UNSET of EvpnInstance_RouteDistinguisher_Enum
	EvpnInstance_RouteDistinguisher_Enum_UNSET E_EvpnInstance_RouteDistinguisher_Enum = 0
	// EvpnInstance_RouteDistinguisher_Enum_AUTO corresponds to the value AUTO of EvpnInstance_RouteDistinguisher_Enum
	EvpnInstance_RouteDistinguisher_Enum_AUTO E_EvpnInstance_RouteDistinguisher_Enum = 1
)

// E_EvpnTypes_EVPN_TYPE is a derived int64 type which is used to represent
// the enumerated node EvpnTypes_EVPN_TYPE. An additional value named
// EvpnTypes_EVPN_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_EvpnTypes_EVPN_TYPE int64

// IsYANGGoEnum ensures that EvpnTypes_EVPN_TYPE implements the yang.GoEnum
// interface. This ensures that EvpnTypes_EVPN_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_EvpnTypes_EVPN_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  EvpnTypes_EVPN_TYPE.
func (E_EvpnTypes_EVPN_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_EvpnTypes_EVPN_TYPE.
func (e E_EvpnTypes_EVPN_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_EvpnTypes_EVPN_TYPE")
}

const (
	// EvpnTypes_EVPN_TYPE_UNSET corresponds to the value UNSET of EvpnTypes_EVPN_TYPE
	EvpnTypes_EVPN_TYPE_UNSET E_EvpnTypes_EVPN_TYPE = 0
	// EvpnTypes_EVPN_TYPE_VLAN_AWARE corresponds to the value VLAN_AWARE of EvpnTypes_EVPN_TYPE
	EvpnTypes_EVPN_TYPE_VLAN_AWARE E_EvpnTypes_EVPN_TYPE = 1
	// EvpnTypes_EVPN_TYPE_VLAN_BASED corresponds to the value VLAN_BASED of EvpnTypes_EVPN_TYPE
	EvpnTypes_EVPN_TYPE_VLAN_BASED E_EvpnTypes_EVPN_TYPE = 2
	// EvpnTypes_EVPN_TYPE_VLAN_BUNDLE corresponds to the value VLAN_BUNDLE of EvpnTypes_EVPN_TYPE
	EvpnTypes_EVPN_TYPE_VLAN_BUNDLE E_EvpnTypes_EVPN_TYPE = 3
)

// E_EvpnTypes_LearningMode is a derived int64 type which is used to represent
// the enumerated node EvpnTypes_LearningMode. An additional value named
// EvpnTypes_LearningMode_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_EvpnTypes_LearningMode int64

// IsYANGGoEnum ensures that EvpnTypes_LearningMode implements the yang.GoEnum
// interface. This ensures that EvpnTypes_LearningMode can be identified as a
// mapped type for a YANG enumeration.
func (E_EvpnTypes_LearningMode) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  EvpnTypes_LearningMode.
func (E_EvpnTypes_LearningMode) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_EvpnTypes_LearningMode.
func (e E_EvpnTypes_LearningMode) String() string {
	return ygot.EnumLogString(e, int64(e), "E_EvpnTypes_LearningMode")
}

const (
	// EvpnTypes_LearningMode_UNSET corresponds to the value UNSET of EvpnTypes_LearningMode
	EvpnTypes_LearningMode_UNSET E_EvpnTypes_LearningMode = 0
	// EvpnTypes_LearningMode_CONTROL_PLANE corresponds to the value CONTROL_PLANE of EvpnTypes_LearningMode
	EvpnTypes_LearningMode_CONTROL_PLANE E_EvpnTypes_LearningMode = 1
	// EvpnTypes_LearningMode_DATA_PLANE corresponds to the value DATA_PLANE of EvpnTypes_LearningMode
	EvpnTypes_LearningMode_DATA_PLANE E_EvpnTypes_LearningMode = 2
)

// E_ExplicitRouteObject_Type is a derived int64 type which is used to represent
// the enumerated node ExplicitRouteObject_Type. An additional value named
// ExplicitRouteObject_Type_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_ExplicitRouteObject_Type int64

// IsYANGGoEnum ensures that ExplicitRouteObject_Type implements the yang.GoEnum
// interface. This ensures that ExplicitRouteObject_Type can be identified as a
// mapped type for a YANG enumeration.
func (E_ExplicitRouteObject_Type) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  ExplicitRouteObject_Type.
func (E_ExplicitRouteObject_Type) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_ExplicitRouteObject_Type.
func (e E_ExplicitRouteObject_Type) String() string {
	return ygot.EnumLogString(e, int64(e), "E_ExplicitRouteObject_Type")
}

const (
	// ExplicitRouteObject_Type_UNSET corresponds to the value UNSET of ExplicitRouteObject_Type
	ExplicitRouteObject_Type_UNSET E_ExplicitRouteObject_Type = 0
	// ExplicitRouteObject_Type_IPV4 corresponds to the value IPV4 of ExplicitRouteObject_Type
	ExplicitRouteObject_Type_IPV4 E_ExplicitRouteObject_Type = 1
	// ExplicitRouteObject_Type_IPV6 corresponds to the value IPV6 of ExplicitRouteObject_Type
	ExplicitRouteObject_Type_IPV6 E_ExplicitRouteObject_Type = 2
	// ExplicitRouteObject_Type_ASN corresponds to the value ASN of ExplicitRouteObject_Type
	ExplicitRouteObject_Type_ASN E_ExplicitRouteObject_Type = 3
	// ExplicitRouteObject_Type_ASN4 corresponds to the value ASN4 of ExplicitRouteObject_Type
	ExplicitRouteObject_Type_ASN4 E_ExplicitRouteObject_Type = 4
	// ExplicitRouteObject_Type_LABEL corresponds to the value LABEL of ExplicitRouteObject_Type
	ExplicitRouteObject_Type_LABEL E_ExplicitRouteObject_Type = 5
	// ExplicitRouteObject_Type_UNNUMBERED_INTERFACE corresponds to the value UNNUMBERED_INTERFACE of ExplicitRouteObject_Type
	ExplicitRouteObject_Type_UNNUMBERED_INTERFACE E_ExplicitRouteObject_Type = 6
)

// E_ExtendedPrefix_AddressFamily is a derived int64 type which is used to represent
// the enumerated node ExtendedPrefix_AddressFamily. An additional value named
// ExtendedPrefix_AddressFamily_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_ExtendedPrefix_AddressFamily int64

// IsYANGGoEnum ensures that ExtendedPrefix_AddressFamily implements the yang.GoEnum
// interface. This ensures that ExtendedPrefix_AddressFamily can be identified as a
// mapped type for a YANG enumeration.
func (E_ExtendedPrefix_AddressFamily) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  ExtendedPrefix_AddressFamily.
func (E_ExtendedPrefix_AddressFamily) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_ExtendedPrefix_AddressFamily.
func (e E_ExtendedPrefix_AddressFamily) String() string {
	return ygot.EnumLogString(e, int64(e), "E_ExtendedPrefix_AddressFamily")
}

const (
	// ExtendedPrefix_AddressFamily_UNSET corresponds to the value UNSET of ExtendedPrefix_AddressFamily
	ExtendedPrefix_AddressFamily_UNSET E_ExtendedPrefix_AddressFamily = 0
	// ExtendedPrefix_AddressFamily_IPV4_UNICAST corresponds to the value IPV4_UNICAST of ExtendedPrefix_AddressFamily
	ExtendedPrefix_AddressFamily_IPV4_UNICAST E_ExtendedPrefix_AddressFamily = 1
)

// E_ExtendedPrefix_RouteType is a derived int64 type which is used to represent
// the enumerated node ExtendedPrefix_RouteType. An additional value named
// ExtendedPrefix_RouteType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_ExtendedPrefix_RouteType int64

// IsYANGGoEnum ensures that ExtendedPrefix_RouteType implements the yang.GoEnum
// interface. This ensures that ExtendedPrefix_RouteType can be identified as a
// mapped type for a YANG enumeration.
func (E_ExtendedPrefix_RouteType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  ExtendedPrefix_RouteType.
func (E_ExtendedPrefix_RouteType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_ExtendedPrefix_RouteType.
func (e E_ExtendedPrefix_RouteType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_ExtendedPrefix_RouteType")
}

const (
	// ExtendedPrefix_RouteType_UNSET corresponds to the value UNSET of ExtendedPrefix_RouteType
	ExtendedPrefix_RouteType_UNSET E_ExtendedPrefix_RouteType = 0
	// ExtendedPrefix_RouteType_UNSPECIFIED corresponds to the value UNSPECIFIED of ExtendedPrefix_RouteType
	ExtendedPrefix_RouteType_UNSPECIFIED E_ExtendedPrefix_RouteType = 1
	// ExtendedPrefix_RouteType_INTRA_AREA corresponds to the value INTRA_AREA of ExtendedPrefix_RouteType
	ExtendedPrefix_RouteType_INTRA_AREA E_ExtendedPrefix_RouteType = 2
	// ExtendedPrefix_RouteType_INTER_AREA corresponds to the value INTER_AREA of ExtendedPrefix_RouteType
	ExtendedPrefix_RouteType_INTER_AREA E_ExtendedPrefix_RouteType = 4
	// ExtendedPrefix_RouteType_AS_EXTERNAL corresponds to the value AS_EXTERNAL of ExtendedPrefix_RouteType
	ExtendedPrefix_RouteType_AS_EXTERNAL E_ExtendedPrefix_RouteType = 6
	// ExtendedPrefix_RouteType_NSSA_EXTERNAL corresponds to the value NSSA_EXTERNAL of ExtendedPrefix_RouteType
	ExtendedPrefix_RouteType_NSSA_EXTERNAL E_ExtendedPrefix_RouteType = 8
)

// E_Flags_Flags is a derived int64 type which is used to represent
// the enumerated node Flags_Flags. An additional value named
// Flags_Flags_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Flags_Flags int64

// IsYANGGoEnum ensures that Flags_Flags implements the yang.GoEnum
// interface. This ensures that Flags_Flags can be identified as a
// mapped type for a YANG enumeration.
func (E_Flags_Flags) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Flags_Flags.
func (E_Flags_Flags) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Flags_Flags.
func (e E_Flags_Flags) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Flags_Flags")
}

const (
	// Flags_Flags_UNSET corresponds to the value UNSET of Flags_Flags
	Flags_Flags_UNSET E_Flags_Flags = 0
	// Flags_Flags_EXTERNAL_FLAG corresponds to the value EXTERNAL_FLAG of Flags_Flags
	Flags_Flags_EXTERNAL_FLAG E_Flags_Flags = 1
	// Flags_Flags_READVERTISEMENT_FLAG corresponds to the value READVERTISEMENT_FLAG of Flags_Flags
	Flags_Flags_READVERTISEMENT_FLAG E_Flags_Flags = 2
	// Flags_Flags_NODE_FLAG corresponds to the value NODE_FLAG of Flags_Flags
	Flags_Flags_NODE_FLAG E_Flags_Flags = 3
)

// E_Global_SummaryRouteCostMode is a derived int64 type which is used to represent
// the enumerated node Global_SummaryRouteCostMode. An additional value named
// Global_SummaryRouteCostMode_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Global_SummaryRouteCostMode int64

// IsYANGGoEnum ensures that Global_SummaryRouteCostMode implements the yang.GoEnum
// interface. This ensures that Global_SummaryRouteCostMode can be identified as a
// mapped type for a YANG enumeration.
func (E_Global_SummaryRouteCostMode) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Global_SummaryRouteCostMode.
func (E_Global_SummaryRouteCostMode) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Global_SummaryRouteCostMode.
func (e E_Global_SummaryRouteCostMode) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Global_SummaryRouteCostMode")
}

const (
	// Global_SummaryRouteCostMode_UNSET corresponds to the value UNSET of Global_SummaryRouteCostMode
	Global_SummaryRouteCostMode_UNSET E_Global_SummaryRouteCostMode = 0
	// Global_SummaryRouteCostMode_RFC1583_COMPATIBLE corresponds to the value RFC1583_COMPATIBLE of Global_SummaryRouteCostMode
	Global_SummaryRouteCostMode_RFC1583_COMPATIBLE E_Global_SummaryRouteCostMode = 1
	// Global_SummaryRouteCostMode_RFC2328_COMPATIBLE corresponds to the value RFC2328_COMPATIBLE of Global_SummaryRouteCostMode
	Global_SummaryRouteCostMode_RFC2328_COMPATIBLE E_Global_SummaryRouteCostMode = 2
)

// E_GracefulRestart_Mode is a derived int64 type which is used to represent
// the enumerated node GracefulRestart_Mode. An additional value named
// GracefulRestart_Mode_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_GracefulRestart_Mode int64

// IsYANGGoEnum ensures that GracefulRestart_Mode implements the yang.GoEnum
// interface. This ensures that GracefulRestart_Mode can be identified as a
// mapped type for a YANG enumeration.
func (E_GracefulRestart_Mode) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  GracefulRestart_Mode.
func (E_GracefulRestart_Mode) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_GracefulRestart_Mode.
func (e E_GracefulRestart_Mode) String() string {
	return ygot.EnumLogString(e, int64(e), "E_GracefulRestart_Mode")
}

const (
	// GracefulRestart_Mode_UNSET corresponds to the value UNSET of GracefulRestart_Mode
	GracefulRestart_Mode_UNSET E_GracefulRestart_Mode = 0
	// GracefulRestart_Mode_HELPER_ONLY corresponds to the value HELPER_ONLY of GracefulRestart_Mode
	GracefulRestart_Mode_HELPER_ONLY E_GracefulRestart_Mode = 1
	// GracefulRestart_Mode_BILATERAL corresponds to the value BILATERAL of GracefulRestart_Mode
	GracefulRestart_Mode_BILATERAL E_GracefulRestart_Mode = 2
	// GracefulRestart_Mode_REMOTE_HELPER corresponds to the value REMOTE_HELPER of GracefulRestart_Mode
	GracefulRestart_Mode_REMOTE_HELPER E_GracefulRestart_Mode = 3
)

// E_IETFInterfaces_InterfaceType is a derived int64 type which is used to represent
// the enumerated node IETFInterfaces_InterfaceType. An additional value named
// IETFInterfaces_InterfaceType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IETFInterfaces_InterfaceType int64

// IsYANGGoEnum ensures that IETFInterfaces_InterfaceType implements the yang.GoEnum
// interface. This ensures that IETFInterfaces_InterfaceType can be identified as a
// mapped type for a YANG enumeration.
func (E_IETFInterfaces_InterfaceType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IETFInterfaces_InterfaceType.
func (E_IETFInterfaces_InterfaceType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_IETFInterfaces_InterfaceType.
func (e E_IETFInterfaces_InterfaceType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IETFInterfaces_InterfaceType")
}

const (
	// IETFInterfaces_InterfaceType_UNSET corresponds to the value UNSET of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_UNSET E_IETFInterfaces_InterfaceType = 0
	// IETFInterfaces_InterfaceType_a12MppSwitch corresponds to the value a12MppSwitch of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_a12MppSwitch E_IETFInterfaces_InterfaceType = 1
	// IETFInterfaces_InterfaceType_aal2 corresponds to the value aal2 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_aal2 E_IETFInterfaces_InterfaceType = 2
	// IETFInterfaces_InterfaceType_aal5 corresponds to the value aal5 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_aal5 E_IETFInterfaces_InterfaceType = 3
	// IETFInterfaces_InterfaceType_actelisMetaLOOP corresponds to the value actelisMetaLOOP of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_actelisMetaLOOP E_IETFInterfaces_InterfaceType = 4
	// IETFInterfaces_InterfaceType_adsl corresponds to the value adsl of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_adsl E_IETFInterfaces_InterfaceType = 5
	// IETFInterfaces_InterfaceType_adsl2 corresponds to the value adsl2 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_adsl2 E_IETFInterfaces_InterfaceType = 6
	// IETFInterfaces_InterfaceType_adsl2plus corresponds to the value adsl2plus of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_adsl2plus E_IETFInterfaces_InterfaceType = 7
	// IETFInterfaces_InterfaceType_aflane8023 corresponds to the value aflane8023 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_aflane8023 E_IETFInterfaces_InterfaceType = 8
	// IETFInterfaces_InterfaceType_aflane8025 corresponds to the value aflane8025 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_aflane8025 E_IETFInterfaces_InterfaceType = 9
	// IETFInterfaces_InterfaceType_aluELP corresponds to the value aluELP of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_aluELP E_IETFInterfaces_InterfaceType = 10
	// IETFInterfaces_InterfaceType_aluEpon corresponds to the value aluEpon of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_aluEpon E_IETFInterfaces_InterfaceType = 11
	// IETFInterfaces_InterfaceType_aluEponLogicalLink corresponds to the value aluEponLogicalLink of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_aluEponLogicalLink E_IETFInterfaces_InterfaceType = 12
	// IETFInterfaces_InterfaceType_aluEponOnu corresponds to the value aluEponOnu of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_aluEponOnu E_IETFInterfaces_InterfaceType = 13
	// IETFInterfaces_InterfaceType_aluEponPhysicalUni corresponds to the value aluEponPhysicalUni of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_aluEponPhysicalUni E_IETFInterfaces_InterfaceType = 14
	// IETFInterfaces_InterfaceType_aluGponOnu corresponds to the value aluGponOnu of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_aluGponOnu E_IETFInterfaces_InterfaceType = 15
	// IETFInterfaces_InterfaceType_aluGponPhysicalUni corresponds to the value aluGponPhysicalUni of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_aluGponPhysicalUni E_IETFInterfaces_InterfaceType = 16
	// IETFInterfaces_InterfaceType_arap corresponds to the value arap of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_arap E_IETFInterfaces_InterfaceType = 17
	// IETFInterfaces_InterfaceType_arcnet corresponds to the value arcnet of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_arcnet E_IETFInterfaces_InterfaceType = 18
	// IETFInterfaces_InterfaceType_arcnetPlus corresponds to the value arcnetPlus of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_arcnetPlus E_IETFInterfaces_InterfaceType = 19
	// IETFInterfaces_InterfaceType_async corresponds to the value async of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_async E_IETFInterfaces_InterfaceType = 20
	// IETFInterfaces_InterfaceType_atm corresponds to the value atm of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_atm E_IETFInterfaces_InterfaceType = 21
	// IETFInterfaces_InterfaceType_atmDxi corresponds to the value atmDxi of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_atmDxi E_IETFInterfaces_InterfaceType = 22
	// IETFInterfaces_InterfaceType_atmFuni corresponds to the value atmFuni of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_atmFuni E_IETFInterfaces_InterfaceType = 23
	// IETFInterfaces_InterfaceType_atmIma corresponds to the value atmIma of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_atmIma E_IETFInterfaces_InterfaceType = 24
	// IETFInterfaces_InterfaceType_atmLogical corresponds to the value atmLogical of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_atmLogical E_IETFInterfaces_InterfaceType = 25
	// IETFInterfaces_InterfaceType_atmRadio corresponds to the value atmRadio of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_atmRadio E_IETFInterfaces_InterfaceType = 26
	// IETFInterfaces_InterfaceType_atmSubInterface corresponds to the value atmSubInterface of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_atmSubInterface E_IETFInterfaces_InterfaceType = 27
	// IETFInterfaces_InterfaceType_atmVciEndPt corresponds to the value atmVciEndPt of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_atmVciEndPt E_IETFInterfaces_InterfaceType = 28
	// IETFInterfaces_InterfaceType_atmVirtual corresponds to the value atmVirtual of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_atmVirtual E_IETFInterfaces_InterfaceType = 29
	// IETFInterfaces_InterfaceType_atmbond corresponds to the value atmbond of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_atmbond E_IETFInterfaces_InterfaceType = 30
	// IETFInterfaces_InterfaceType_aviciOpticalEther corresponds to the value aviciOpticalEther of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_aviciOpticalEther E_IETFInterfaces_InterfaceType = 31
	// IETFInterfaces_InterfaceType_basicISDN corresponds to the value basicISDN of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_basicISDN E_IETFInterfaces_InterfaceType = 32
	// IETFInterfaces_InterfaceType_bgppolicyaccounting corresponds to the value bgppolicyaccounting of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_bgppolicyaccounting E_IETFInterfaces_InterfaceType = 33
	// IETFInterfaces_InterfaceType_bits corresponds to the value bits of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_bits E_IETFInterfaces_InterfaceType = 34
	// IETFInterfaces_InterfaceType_bridge corresponds to the value bridge of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_bridge E_IETFInterfaces_InterfaceType = 35
	// IETFInterfaces_InterfaceType_bsc corresponds to the value bsc of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_bsc E_IETFInterfaces_InterfaceType = 36
	// IETFInterfaces_InterfaceType_cableDownstreamRfPort corresponds to the value cableDownstreamRfPort of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_cableDownstreamRfPort E_IETFInterfaces_InterfaceType = 37
	// IETFInterfaces_InterfaceType_capwapDot11Bss corresponds to the value capwapDot11Bss of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_capwapDot11Bss E_IETFInterfaces_InterfaceType = 38
	// IETFInterfaces_InterfaceType_capwapDot11Profile corresponds to the value capwapDot11Profile of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_capwapDot11Profile E_IETFInterfaces_InterfaceType = 39
	// IETFInterfaces_InterfaceType_capwapWtpVirtualRadio corresponds to the value capwapWtpVirtualRadio of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_capwapWtpVirtualRadio E_IETFInterfaces_InterfaceType = 40
	// IETFInterfaces_InterfaceType_cblVectaStar corresponds to the value cblVectaStar of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_cblVectaStar E_IETFInterfaces_InterfaceType = 41
	// IETFInterfaces_InterfaceType_cctEmul corresponds to the value cctEmul of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_cctEmul E_IETFInterfaces_InterfaceType = 42
	// IETFInterfaces_InterfaceType_ces corresponds to the value ces of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ces E_IETFInterfaces_InterfaceType = 43
	// IETFInterfaces_InterfaceType_channel corresponds to the value channel of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_channel E_IETFInterfaces_InterfaceType = 44
	// IETFInterfaces_InterfaceType_ciscoISLvlan corresponds to the value ciscoISLvlan of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ciscoISLvlan E_IETFInterfaces_InterfaceType = 45
	// IETFInterfaces_InterfaceType_cnr corresponds to the value cnr of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_cnr E_IETFInterfaces_InterfaceType = 46
	// IETFInterfaces_InterfaceType_coffee corresponds to the value coffee of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_coffee E_IETFInterfaces_InterfaceType = 47
	// IETFInterfaces_InterfaceType_compositeLink corresponds to the value compositeLink of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_compositeLink E_IETFInterfaces_InterfaceType = 48
	// IETFInterfaces_InterfaceType_dcn corresponds to the value dcn of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_dcn E_IETFInterfaces_InterfaceType = 49
	// IETFInterfaces_InterfaceType_ddnX25 corresponds to the value ddnX25 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ddnX25 E_IETFInterfaces_InterfaceType = 50
	// IETFInterfaces_InterfaceType_digitalPowerline corresponds to the value digitalPowerline of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_digitalPowerline E_IETFInterfaces_InterfaceType = 51
	// IETFInterfaces_InterfaceType_digitalWrapperOverheadChannel corresponds to the value digitalWrapperOverheadChannel of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_digitalWrapperOverheadChannel E_IETFInterfaces_InterfaceType = 52
	// IETFInterfaces_InterfaceType_dlsw corresponds to the value dlsw of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_dlsw E_IETFInterfaces_InterfaceType = 53
	// IETFInterfaces_InterfaceType_docsCableDownstream corresponds to the value docsCableDownstream of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_docsCableDownstream E_IETFInterfaces_InterfaceType = 54
	// IETFInterfaces_InterfaceType_docsCableMCmtsDownstream corresponds to the value docsCableMCmtsDownstream of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_docsCableMCmtsDownstream E_IETFInterfaces_InterfaceType = 55
	// IETFInterfaces_InterfaceType_docsCableMaclayer corresponds to the value docsCableMaclayer of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_docsCableMaclayer E_IETFInterfaces_InterfaceType = 56
	// IETFInterfaces_InterfaceType_docsCableNdf corresponds to the value docsCableNdf of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_docsCableNdf E_IETFInterfaces_InterfaceType = 57
	// IETFInterfaces_InterfaceType_docsCableNdr corresponds to the value docsCableNdr of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_docsCableNdr E_IETFInterfaces_InterfaceType = 58
	// IETFInterfaces_InterfaceType_docsCableScte55d1FwdOob corresponds to the value docsCableScte55d1FwdOob of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_docsCableScte55d1FwdOob E_IETFInterfaces_InterfaceType = 59
	// IETFInterfaces_InterfaceType_docsCableScte55d1RetOob corresponds to the value docsCableScte55d1RetOob of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_docsCableScte55d1RetOob E_IETFInterfaces_InterfaceType = 60
	// IETFInterfaces_InterfaceType_docsCableScte55d2DsOob corresponds to the value docsCableScte55d2DsOob of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_docsCableScte55d2DsOob E_IETFInterfaces_InterfaceType = 61
	// IETFInterfaces_InterfaceType_docsCableScte55d2UsOob corresponds to the value docsCableScte55d2UsOob of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_docsCableScte55d2UsOob E_IETFInterfaces_InterfaceType = 62
	// IETFInterfaces_InterfaceType_docsCableUpstream corresponds to the value docsCableUpstream of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_docsCableUpstream E_IETFInterfaces_InterfaceType = 63
	// IETFInterfaces_InterfaceType_docsCableUpstreamChannel corresponds to the value docsCableUpstreamChannel of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_docsCableUpstreamChannel E_IETFInterfaces_InterfaceType = 64
	// IETFInterfaces_InterfaceType_docsCableUpstreamRfPort corresponds to the value docsCableUpstreamRfPort of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_docsCableUpstreamRfPort E_IETFInterfaces_InterfaceType = 65
	// IETFInterfaces_InterfaceType_docsOfdmDownstream corresponds to the value docsOfdmDownstream of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_docsOfdmDownstream E_IETFInterfaces_InterfaceType = 66
	// IETFInterfaces_InterfaceType_docsOfdmaUpstream corresponds to the value docsOfdmaUpstream of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_docsOfdmaUpstream E_IETFInterfaces_InterfaceType = 67
	// IETFInterfaces_InterfaceType_ds0 corresponds to the value ds0 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ds0 E_IETFInterfaces_InterfaceType = 68
	// IETFInterfaces_InterfaceType_ds0Bundle corresponds to the value ds0Bundle of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ds0Bundle E_IETFInterfaces_InterfaceType = 69
	// IETFInterfaces_InterfaceType_ds1 corresponds to the value ds1 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ds1 E_IETFInterfaces_InterfaceType = 70
	// IETFInterfaces_InterfaceType_ds1FDL corresponds to the value ds1FDL of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ds1FDL E_IETFInterfaces_InterfaceType = 71
	// IETFInterfaces_InterfaceType_ds3 corresponds to the value ds3 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ds3 E_IETFInterfaces_InterfaceType = 72
	// IETFInterfaces_InterfaceType_dtm corresponds to the value dtm of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_dtm E_IETFInterfaces_InterfaceType = 73
	// IETFInterfaces_InterfaceType_dvbAsiIn corresponds to the value dvbAsiIn of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_dvbAsiIn E_IETFInterfaces_InterfaceType = 74
	// IETFInterfaces_InterfaceType_dvbAsiOut corresponds to the value dvbAsiOut of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_dvbAsiOut E_IETFInterfaces_InterfaceType = 75
	// IETFInterfaces_InterfaceType_dvbRccDownstream corresponds to the value dvbRccDownstream of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_dvbRccDownstream E_IETFInterfaces_InterfaceType = 76
	// IETFInterfaces_InterfaceType_dvbRccMacLayer corresponds to the value dvbRccMacLayer of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_dvbRccMacLayer E_IETFInterfaces_InterfaceType = 77
	// IETFInterfaces_InterfaceType_dvbRccUpstream corresponds to the value dvbRccUpstream of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_dvbRccUpstream E_IETFInterfaces_InterfaceType = 78
	// IETFInterfaces_InterfaceType_dvbRcsMacLayer corresponds to the value dvbRcsMacLayer of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_dvbRcsMacLayer E_IETFInterfaces_InterfaceType = 79
	// IETFInterfaces_InterfaceType_dvbRcsTdma corresponds to the value dvbRcsTdma of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_dvbRcsTdma E_IETFInterfaces_InterfaceType = 80
	// IETFInterfaces_InterfaceType_dvbTdm corresponds to the value dvbTdm of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_dvbTdm E_IETFInterfaces_InterfaceType = 81
	// IETFInterfaces_InterfaceType_e1 corresponds to the value e1 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_e1 E_IETFInterfaces_InterfaceType = 82
	// IETFInterfaces_InterfaceType_econet corresponds to the value econet of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_econet E_IETFInterfaces_InterfaceType = 83
	// IETFInterfaces_InterfaceType_eon corresponds to the value eon of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_eon E_IETFInterfaces_InterfaceType = 84
	// IETFInterfaces_InterfaceType_eplrs corresponds to the value eplrs of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_eplrs E_IETFInterfaces_InterfaceType = 85
	// IETFInterfaces_InterfaceType_escon corresponds to the value escon of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_escon E_IETFInterfaces_InterfaceType = 86
	// IETFInterfaces_InterfaceType_ethernet3Mbit corresponds to the value ethernet3Mbit of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ethernet3Mbit E_IETFInterfaces_InterfaceType = 87
	// IETFInterfaces_InterfaceType_ethernetCsmacd corresponds to the value ethernetCsmacd of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ethernetCsmacd E_IETFInterfaces_InterfaceType = 88
	// IETFInterfaces_InterfaceType_fast corresponds to the value fast of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_fast E_IETFInterfaces_InterfaceType = 89
	// IETFInterfaces_InterfaceType_fastEther corresponds to the value fastEther of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_fastEther E_IETFInterfaces_InterfaceType = 90
	// IETFInterfaces_InterfaceType_fastEtherFX corresponds to the value fastEtherFX of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_fastEtherFX E_IETFInterfaces_InterfaceType = 91
	// IETFInterfaces_InterfaceType_fastdsl corresponds to the value fastdsl of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_fastdsl E_IETFInterfaces_InterfaceType = 92
	// IETFInterfaces_InterfaceType_fcipLink corresponds to the value fcipLink of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_fcipLink E_IETFInterfaces_InterfaceType = 93
	// IETFInterfaces_InterfaceType_fddi corresponds to the value fddi of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_fddi E_IETFInterfaces_InterfaceType = 94
	// IETFInterfaces_InterfaceType_fibreChannel corresponds to the value fibreChannel of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_fibreChannel E_IETFInterfaces_InterfaceType = 95
	// IETFInterfaces_InterfaceType_frDlciEndPt corresponds to the value frDlciEndPt of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_frDlciEndPt E_IETFInterfaces_InterfaceType = 96
	// IETFInterfaces_InterfaceType_frForward corresponds to the value frForward of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_frForward E_IETFInterfaces_InterfaceType = 97
	// IETFInterfaces_InterfaceType_frameRelay corresponds to the value frameRelay of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_frameRelay E_IETFInterfaces_InterfaceType = 98
	// IETFInterfaces_InterfaceType_frameRelayInterconnect corresponds to the value frameRelayInterconnect of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_frameRelayInterconnect E_IETFInterfaces_InterfaceType = 99
	// IETFInterfaces_InterfaceType_frameRelayMPI corresponds to the value frameRelayMPI of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_frameRelayMPI E_IETFInterfaces_InterfaceType = 100
	// IETFInterfaces_InterfaceType_frameRelayService corresponds to the value frameRelayService of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_frameRelayService E_IETFInterfaces_InterfaceType = 101
	// IETFInterfaces_InterfaceType_frf16MfrBundle corresponds to the value frf16MfrBundle of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_frf16MfrBundle E_IETFInterfaces_InterfaceType = 102
	// IETFInterfaces_InterfaceType_g703at2mb corresponds to the value g703at2mb of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_g703at2mb E_IETFInterfaces_InterfaceType = 103
	// IETFInterfaces_InterfaceType_g703at64k corresponds to the value g703at64k of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_g703at64k E_IETFInterfaces_InterfaceType = 104
	// IETFInterfaces_InterfaceType_g9981 corresponds to the value g9981 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_g9981 E_IETFInterfaces_InterfaceType = 105
	// IETFInterfaces_InterfaceType_g9982 corresponds to the value g9982 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_g9982 E_IETFInterfaces_InterfaceType = 106
	// IETFInterfaces_InterfaceType_g9983 corresponds to the value g9983 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_g9983 E_IETFInterfaces_InterfaceType = 107
	// IETFInterfaces_InterfaceType_gfast corresponds to the value gfast of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_gfast E_IETFInterfaces_InterfaceType = 108
	// IETFInterfaces_InterfaceType_gfp corresponds to the value gfp of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_gfp E_IETFInterfaces_InterfaceType = 109
	// IETFInterfaces_InterfaceType_gigabitEthernet corresponds to the value gigabitEthernet of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_gigabitEthernet E_IETFInterfaces_InterfaceType = 110
	// IETFInterfaces_InterfaceType_gpon corresponds to the value gpon of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_gpon E_IETFInterfaces_InterfaceType = 111
	// IETFInterfaces_InterfaceType_gr303IDT corresponds to the value gr303IDT of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_gr303IDT E_IETFInterfaces_InterfaceType = 112
	// IETFInterfaces_InterfaceType_gr303RDT corresponds to the value gr303RDT of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_gr303RDT E_IETFInterfaces_InterfaceType = 113
	// IETFInterfaces_InterfaceType_gtp corresponds to the value gtp of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_gtp E_IETFInterfaces_InterfaceType = 114
	// IETFInterfaces_InterfaceType_h323Gatekeeper corresponds to the value h323Gatekeeper of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_h323Gatekeeper E_IETFInterfaces_InterfaceType = 115
	// IETFInterfaces_InterfaceType_h323Proxy corresponds to the value h323Proxy of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_h323Proxy E_IETFInterfaces_InterfaceType = 116
	// IETFInterfaces_InterfaceType_hdh1822 corresponds to the value hdh1822 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_hdh1822 E_IETFInterfaces_InterfaceType = 117
	// IETFInterfaces_InterfaceType_hdlc corresponds to the value hdlc of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_hdlc E_IETFInterfaces_InterfaceType = 118
	// IETFInterfaces_InterfaceType_hdsl2 corresponds to the value hdsl2 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_hdsl2 E_IETFInterfaces_InterfaceType = 119
	// IETFInterfaces_InterfaceType_hiperlan2 corresponds to the value hiperlan2 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_hiperlan2 E_IETFInterfaces_InterfaceType = 120
	// IETFInterfaces_InterfaceType_hippi corresponds to the value hippi of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_hippi E_IETFInterfaces_InterfaceType = 121
	// IETFInterfaces_InterfaceType_hippiInterface corresponds to the value hippiInterface of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_hippiInterface E_IETFInterfaces_InterfaceType = 122
	// IETFInterfaces_InterfaceType_homepna corresponds to the value homepna of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_homepna E_IETFInterfaces_InterfaceType = 123
	// IETFInterfaces_InterfaceType_hostPad corresponds to the value hostPad of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_hostPad E_IETFInterfaces_InterfaceType = 124
	// IETFInterfaces_InterfaceType_hssi corresponds to the value hssi of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_hssi E_IETFInterfaces_InterfaceType = 125
	// IETFInterfaces_InterfaceType_hyperchannel corresponds to the value hyperchannel of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_hyperchannel E_IETFInterfaces_InterfaceType = 126
	// IETFInterfaces_InterfaceType_iana_interface_type corresponds to the value iana_interface_type of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_iana_interface_type E_IETFInterfaces_InterfaceType = 127
	// IETFInterfaces_InterfaceType_ibm370parChan corresponds to the value ibm370parChan of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ibm370parChan E_IETFInterfaces_InterfaceType = 128
	// IETFInterfaces_InterfaceType_idsl corresponds to the value idsl of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_idsl E_IETFInterfaces_InterfaceType = 129
	// IETFInterfaces_InterfaceType_ieee1394 corresponds to the value ieee1394 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ieee1394 E_IETFInterfaces_InterfaceType = 130
	// IETFInterfaces_InterfaceType_ieee80211 corresponds to the value ieee80211 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ieee80211 E_IETFInterfaces_InterfaceType = 131
	// IETFInterfaces_InterfaceType_ieee80212 corresponds to the value ieee80212 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ieee80212 E_IETFInterfaces_InterfaceType = 132
	// IETFInterfaces_InterfaceType_ieee802154 corresponds to the value ieee802154 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ieee802154 E_IETFInterfaces_InterfaceType = 133
	// IETFInterfaces_InterfaceType_ieee80216WMAN corresponds to the value ieee80216WMAN of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ieee80216WMAN E_IETFInterfaces_InterfaceType = 134
	// IETFInterfaces_InterfaceType_ieee8023adLag corresponds to the value ieee8023adLag of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ieee8023adLag E_IETFInterfaces_InterfaceType = 135
	// IETFInterfaces_InterfaceType_if_gsn corresponds to the value if_gsn of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_if_gsn E_IETFInterfaces_InterfaceType = 136
	// IETFInterfaces_InterfaceType_ifPwType corresponds to the value ifPwType of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ifPwType E_IETFInterfaces_InterfaceType = 137
	// IETFInterfaces_InterfaceType_ifVfiType corresponds to the value ifVfiType of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ifVfiType E_IETFInterfaces_InterfaceType = 138
	// IETFInterfaces_InterfaceType_ilan corresponds to the value ilan of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ilan E_IETFInterfaces_InterfaceType = 139
	// IETFInterfaces_InterfaceType_imt corresponds to the value imt of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_imt E_IETFInterfaces_InterfaceType = 140
	// IETFInterfaces_InterfaceType_infiniband corresponds to the value infiniband of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_infiniband E_IETFInterfaces_InterfaceType = 141
	// IETFInterfaces_InterfaceType_interleave corresponds to the value interleave of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_interleave E_IETFInterfaces_InterfaceType = 142
	// IETFInterfaces_InterfaceType_ip corresponds to the value ip of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ip E_IETFInterfaces_InterfaceType = 143
	// IETFInterfaces_InterfaceType_ipForward corresponds to the value ipForward of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ipForward E_IETFInterfaces_InterfaceType = 144
	// IETFInterfaces_InterfaceType_ipOverAtm corresponds to the value ipOverAtm of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ipOverAtm E_IETFInterfaces_InterfaceType = 145
	// IETFInterfaces_InterfaceType_ipOverCdlc corresponds to the value ipOverCdlc of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ipOverCdlc E_IETFInterfaces_InterfaceType = 146
	// IETFInterfaces_InterfaceType_ipOverClaw corresponds to the value ipOverClaw of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ipOverClaw E_IETFInterfaces_InterfaceType = 147
	// IETFInterfaces_InterfaceType_ipSwitch corresponds to the value ipSwitch of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ipSwitch E_IETFInterfaces_InterfaceType = 148
	// IETFInterfaces_InterfaceType_isdn corresponds to the value isdn of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_isdn E_IETFInterfaces_InterfaceType = 149
	// IETFInterfaces_InterfaceType_isdns corresponds to the value isdns of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_isdns E_IETFInterfaces_InterfaceType = 150
	// IETFInterfaces_InterfaceType_isdnu corresponds to the value isdnu of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_isdnu E_IETFInterfaces_InterfaceType = 151
	// IETFInterfaces_InterfaceType_iso88022llc corresponds to the value iso88022llc of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_iso88022llc E_IETFInterfaces_InterfaceType = 152
	// IETFInterfaces_InterfaceType_iso88023Csmacd corresponds to the value iso88023Csmacd of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_iso88023Csmacd E_IETFInterfaces_InterfaceType = 153
	// IETFInterfaces_InterfaceType_iso88024TokenBus corresponds to the value iso88024TokenBus of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_iso88024TokenBus E_IETFInterfaces_InterfaceType = 154
	// IETFInterfaces_InterfaceType_iso88025CRFPInt corresponds to the value iso88025CRFPInt of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_iso88025CRFPInt E_IETFInterfaces_InterfaceType = 155
	// IETFInterfaces_InterfaceType_iso88025Dtr corresponds to the value iso88025Dtr of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_iso88025Dtr E_IETFInterfaces_InterfaceType = 156
	// IETFInterfaces_InterfaceType_iso88025Fiber corresponds to the value iso88025Fiber of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_iso88025Fiber E_IETFInterfaces_InterfaceType = 157
	// IETFInterfaces_InterfaceType_iso88025TokenRing corresponds to the value iso88025TokenRing of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_iso88025TokenRing E_IETFInterfaces_InterfaceType = 158
	// IETFInterfaces_InterfaceType_iso88026Man corresponds to the value iso88026Man of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_iso88026Man E_IETFInterfaces_InterfaceType = 159
	// IETFInterfaces_InterfaceType_isup corresponds to the value isup of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_isup E_IETFInterfaces_InterfaceType = 160
	// IETFInterfaces_InterfaceType_l2vlan corresponds to the value l2vlan of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_l2vlan E_IETFInterfaces_InterfaceType = 161
	// IETFInterfaces_InterfaceType_l3ipvlan corresponds to the value l3ipvlan of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_l3ipvlan E_IETFInterfaces_InterfaceType = 162
	// IETFInterfaces_InterfaceType_l3ipxvlan corresponds to the value l3ipxvlan of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_l3ipxvlan E_IETFInterfaces_InterfaceType = 163
	// IETFInterfaces_InterfaceType_lapb corresponds to the value lapb of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_lapb E_IETFInterfaces_InterfaceType = 164
	// IETFInterfaces_InterfaceType_lapd corresponds to the value lapd of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_lapd E_IETFInterfaces_InterfaceType = 165
	// IETFInterfaces_InterfaceType_lapf corresponds to the value lapf of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_lapf E_IETFInterfaces_InterfaceType = 166
	// IETFInterfaces_InterfaceType_linegroup corresponds to the value linegroup of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_linegroup E_IETFInterfaces_InterfaceType = 167
	// IETFInterfaces_InterfaceType_lmp corresponds to the value lmp of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_lmp E_IETFInterfaces_InterfaceType = 168
	// IETFInterfaces_InterfaceType_localTalk corresponds to the value localTalk of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_localTalk E_IETFInterfaces_InterfaceType = 169
	// IETFInterfaces_InterfaceType_macSecControlledIF corresponds to the value macSecControlledIF of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_macSecControlledIF E_IETFInterfaces_InterfaceType = 170
	// IETFInterfaces_InterfaceType_macSecUncontrolledIF corresponds to the value macSecUncontrolledIF of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_macSecUncontrolledIF E_IETFInterfaces_InterfaceType = 171
	// IETFInterfaces_InterfaceType_mediaMailOverIp corresponds to the value mediaMailOverIp of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_mediaMailOverIp E_IETFInterfaces_InterfaceType = 172
	// IETFInterfaces_InterfaceType_mfSigLink corresponds to the value mfSigLink of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_mfSigLink E_IETFInterfaces_InterfaceType = 173
	// IETFInterfaces_InterfaceType_miox25 corresponds to the value miox25 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_miox25 E_IETFInterfaces_InterfaceType = 174
	// IETFInterfaces_InterfaceType_mocaVersion1 corresponds to the value mocaVersion1 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_mocaVersion1 E_IETFInterfaces_InterfaceType = 175
	// IETFInterfaces_InterfaceType_modem corresponds to the value modem of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_modem E_IETFInterfaces_InterfaceType = 176
	// IETFInterfaces_InterfaceType_mpc corresponds to the value mpc of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_mpc E_IETFInterfaces_InterfaceType = 177
	// IETFInterfaces_InterfaceType_mpegTransport corresponds to the value mpegTransport of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_mpegTransport E_IETFInterfaces_InterfaceType = 178
	// IETFInterfaces_InterfaceType_mpls corresponds to the value mpls of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_mpls E_IETFInterfaces_InterfaceType = 179
	// IETFInterfaces_InterfaceType_mplsTunnel corresponds to the value mplsTunnel of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_mplsTunnel E_IETFInterfaces_InterfaceType = 180
	// IETFInterfaces_InterfaceType_msdsl corresponds to the value msdsl of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_msdsl E_IETFInterfaces_InterfaceType = 181
	// IETFInterfaces_InterfaceType_mvl corresponds to the value mvl of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_mvl E_IETFInterfaces_InterfaceType = 182
	// IETFInterfaces_InterfaceType_myrinet corresponds to the value myrinet of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_myrinet E_IETFInterfaces_InterfaceType = 183
	// IETFInterfaces_InterfaceType_nfas corresponds to the value nfas of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_nfas E_IETFInterfaces_InterfaceType = 184
	// IETFInterfaces_InterfaceType_nsip corresponds to the value nsip of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_nsip E_IETFInterfaces_InterfaceType = 185
	// IETFInterfaces_InterfaceType_opticalChannel corresponds to the value opticalChannel of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_opticalChannel E_IETFInterfaces_InterfaceType = 186
	// IETFInterfaces_InterfaceType_opticalChannelGroup corresponds to the value opticalChannelGroup of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_opticalChannelGroup E_IETFInterfaces_InterfaceType = 187
	// IETFInterfaces_InterfaceType_opticalTransport corresponds to the value opticalTransport of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_opticalTransport E_IETFInterfaces_InterfaceType = 188
	// IETFInterfaces_InterfaceType_other corresponds to the value other of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_other E_IETFInterfaces_InterfaceType = 189
	// IETFInterfaces_InterfaceType_otnOdu corresponds to the value otnOdu of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_otnOdu E_IETFInterfaces_InterfaceType = 190
	// IETFInterfaces_InterfaceType_otnOtu corresponds to the value otnOtu of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_otnOtu E_IETFInterfaces_InterfaceType = 191
	// IETFInterfaces_InterfaceType_para corresponds to the value para of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_para E_IETFInterfaces_InterfaceType = 192
	// IETFInterfaces_InterfaceType_pdnEtherLoop1 corresponds to the value pdnEtherLoop1 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_pdnEtherLoop1 E_IETFInterfaces_InterfaceType = 193
	// IETFInterfaces_InterfaceType_pdnEtherLoop2 corresponds to the value pdnEtherLoop2 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_pdnEtherLoop2 E_IETFInterfaces_InterfaceType = 194
	// IETFInterfaces_InterfaceType_pip corresponds to the value pip of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_pip E_IETFInterfaces_InterfaceType = 195
	// IETFInterfaces_InterfaceType_plc corresponds to the value plc of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_plc E_IETFInterfaces_InterfaceType = 196
	// IETFInterfaces_InterfaceType_pon155 corresponds to the value pon155 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_pon155 E_IETFInterfaces_InterfaceType = 197
	// IETFInterfaces_InterfaceType_pon622 corresponds to the value pon622 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_pon622 E_IETFInterfaces_InterfaceType = 198
	// IETFInterfaces_InterfaceType_pos corresponds to the value pos of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_pos E_IETFInterfaces_InterfaceType = 199
	// IETFInterfaces_InterfaceType_ppp corresponds to the value ppp of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ppp E_IETFInterfaces_InterfaceType = 200
	// IETFInterfaces_InterfaceType_pppMultilinkBundle corresponds to the value pppMultilinkBundle of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_pppMultilinkBundle E_IETFInterfaces_InterfaceType = 201
	// IETFInterfaces_InterfaceType_primaryISDN corresponds to the value primaryISDN of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_primaryISDN E_IETFInterfaces_InterfaceType = 202
	// IETFInterfaces_InterfaceType_propAtm corresponds to the value propAtm of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_propAtm E_IETFInterfaces_InterfaceType = 203
	// IETFInterfaces_InterfaceType_propBWAp2Mp corresponds to the value propBWAp2Mp of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_propBWAp2Mp E_IETFInterfaces_InterfaceType = 204
	// IETFInterfaces_InterfaceType_propCnls corresponds to the value propCnls of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_propCnls E_IETFInterfaces_InterfaceType = 205
	// IETFInterfaces_InterfaceType_propDocsWirelessDownstream corresponds to the value propDocsWirelessDownstream of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_propDocsWirelessDownstream E_IETFInterfaces_InterfaceType = 206
	// IETFInterfaces_InterfaceType_propDocsWirelessMaclayer corresponds to the value propDocsWirelessMaclayer of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_propDocsWirelessMaclayer E_IETFInterfaces_InterfaceType = 207
	// IETFInterfaces_InterfaceType_propDocsWirelessUpstream corresponds to the value propDocsWirelessUpstream of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_propDocsWirelessUpstream E_IETFInterfaces_InterfaceType = 208
	// IETFInterfaces_InterfaceType_propMultiplexor corresponds to the value propMultiplexor of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_propMultiplexor E_IETFInterfaces_InterfaceType = 209
	// IETFInterfaces_InterfaceType_propPointToPointSerial corresponds to the value propPointToPointSerial of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_propPointToPointSerial E_IETFInterfaces_InterfaceType = 210
	// IETFInterfaces_InterfaceType_propVirtual corresponds to the value propVirtual of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_propVirtual E_IETFInterfaces_InterfaceType = 211
	// IETFInterfaces_InterfaceType_propWirelessP2P corresponds to the value propWirelessP2P of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_propWirelessP2P E_IETFInterfaces_InterfaceType = 212
	// IETFInterfaces_InterfaceType_proteon10Mbit corresponds to the value proteon10Mbit of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_proteon10Mbit E_IETFInterfaces_InterfaceType = 213
	// IETFInterfaces_InterfaceType_proteon80Mbit corresponds to the value proteon80Mbit of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_proteon80Mbit E_IETFInterfaces_InterfaceType = 214
	// IETFInterfaces_InterfaceType_ptm corresponds to the value ptm of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ptm E_IETFInterfaces_InterfaceType = 215
	// IETFInterfaces_InterfaceType_q2931 corresponds to the value q2931 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_q2931 E_IETFInterfaces_InterfaceType = 216
	// IETFInterfaces_InterfaceType_qam corresponds to the value qam of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_qam E_IETFInterfaces_InterfaceType = 217
	// IETFInterfaces_InterfaceType_qllc corresponds to the value qllc of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_qllc E_IETFInterfaces_InterfaceType = 218
	// IETFInterfaces_InterfaceType_radioMAC corresponds to the value radioMAC of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_radioMAC E_IETFInterfaces_InterfaceType = 219
	// IETFInterfaces_InterfaceType_radsl corresponds to the value radsl of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_radsl E_IETFInterfaces_InterfaceType = 220
	// IETFInterfaces_InterfaceType_reachDSL corresponds to the value reachDSL of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_reachDSL E_IETFInterfaces_InterfaceType = 221
	// IETFInterfaces_InterfaceType_regular1822 corresponds to the value regular1822 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_regular1822 E_IETFInterfaces_InterfaceType = 222
	// IETFInterfaces_InterfaceType_rfc1483 corresponds to the value rfc1483 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_rfc1483 E_IETFInterfaces_InterfaceType = 223
	// IETFInterfaces_InterfaceType_rfc877x25 corresponds to the value rfc877x25 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_rfc877x25 E_IETFInterfaces_InterfaceType = 224
	// IETFInterfaces_InterfaceType_rpr corresponds to the value rpr of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_rpr E_IETFInterfaces_InterfaceType = 225
	// IETFInterfaces_InterfaceType_rs232 corresponds to the value rs232 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_rs232 E_IETFInterfaces_InterfaceType = 226
	// IETFInterfaces_InterfaceType_rsrb corresponds to the value rsrb of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_rsrb E_IETFInterfaces_InterfaceType = 227
	// IETFInterfaces_InterfaceType_sdci corresponds to the value sdci of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_sdci E_IETFInterfaces_InterfaceType = 228
	// IETFInterfaces_InterfaceType_sdlc corresponds to the value sdlc of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_sdlc E_IETFInterfaces_InterfaceType = 229
	// IETFInterfaces_InterfaceType_sdsl corresponds to the value sdsl of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_sdsl E_IETFInterfaces_InterfaceType = 230
	// IETFInterfaces_InterfaceType_shdsl corresponds to the value shdsl of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_shdsl E_IETFInterfaces_InterfaceType = 231
	// IETFInterfaces_InterfaceType_sip corresponds to the value sip of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_sip E_IETFInterfaces_InterfaceType = 232
	// IETFInterfaces_InterfaceType_sipSig corresponds to the value sipSig of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_sipSig E_IETFInterfaces_InterfaceType = 233
	// IETFInterfaces_InterfaceType_sipTg corresponds to the value sipTg of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_sipTg E_IETFInterfaces_InterfaceType = 234
	// IETFInterfaces_InterfaceType_sixToFour corresponds to the value sixToFour of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_sixToFour E_IETFInterfaces_InterfaceType = 235
	// IETFInterfaces_InterfaceType_slip corresponds to the value slip of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_slip E_IETFInterfaces_InterfaceType = 236
	// IETFInterfaces_InterfaceType_smdsDxi corresponds to the value smdsDxi of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_smdsDxi E_IETFInterfaces_InterfaceType = 237
	// IETFInterfaces_InterfaceType_smdsIcip corresponds to the value smdsIcip of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_smdsIcip E_IETFInterfaces_InterfaceType = 238
	// IETFInterfaces_InterfaceType_softwareLoopback corresponds to the value softwareLoopback of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_softwareLoopback E_IETFInterfaces_InterfaceType = 239
	// IETFInterfaces_InterfaceType_sonet corresponds to the value sonet of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_sonet E_IETFInterfaces_InterfaceType = 240
	// IETFInterfaces_InterfaceType_sonetOverheadChannel corresponds to the value sonetOverheadChannel of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_sonetOverheadChannel E_IETFInterfaces_InterfaceType = 241
	// IETFInterfaces_InterfaceType_sonetPath corresponds to the value sonetPath of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_sonetPath E_IETFInterfaces_InterfaceType = 242
	// IETFInterfaces_InterfaceType_sonetVT corresponds to the value sonetVT of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_sonetVT E_IETFInterfaces_InterfaceType = 243
	// IETFInterfaces_InterfaceType_srp corresponds to the value srp of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_srp E_IETFInterfaces_InterfaceType = 244
	// IETFInterfaces_InterfaceType_ss7SigLink corresponds to the value ss7SigLink of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ss7SigLink E_IETFInterfaces_InterfaceType = 245
	// IETFInterfaces_InterfaceType_stackToStack corresponds to the value stackToStack of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_stackToStack E_IETFInterfaces_InterfaceType = 246
	// IETFInterfaces_InterfaceType_starLan corresponds to the value starLan of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_starLan E_IETFInterfaces_InterfaceType = 247
	// IETFInterfaces_InterfaceType_tdlc corresponds to the value tdlc of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_tdlc E_IETFInterfaces_InterfaceType = 248
	// IETFInterfaces_InterfaceType_teLink corresponds to the value teLink of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_teLink E_IETFInterfaces_InterfaceType = 249
	// IETFInterfaces_InterfaceType_termPad corresponds to the value termPad of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_termPad E_IETFInterfaces_InterfaceType = 250
	// IETFInterfaces_InterfaceType_tr008 corresponds to the value tr008 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_tr008 E_IETFInterfaces_InterfaceType = 251
	// IETFInterfaces_InterfaceType_transpHdlc corresponds to the value transpHdlc of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_transpHdlc E_IETFInterfaces_InterfaceType = 252
	// IETFInterfaces_InterfaceType_tunnel corresponds to the value tunnel of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_tunnel E_IETFInterfaces_InterfaceType = 253
	// IETFInterfaces_InterfaceType_ultra corresponds to the value ultra of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_ultra E_IETFInterfaces_InterfaceType = 254
	// IETFInterfaces_InterfaceType_usb corresponds to the value usb of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_usb E_IETFInterfaces_InterfaceType = 255
	// IETFInterfaces_InterfaceType_v11 corresponds to the value v11 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_v11 E_IETFInterfaces_InterfaceType = 256
	// IETFInterfaces_InterfaceType_v35 corresponds to the value v35 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_v35 E_IETFInterfaces_InterfaceType = 257
	// IETFInterfaces_InterfaceType_v36 corresponds to the value v36 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_v36 E_IETFInterfaces_InterfaceType = 258
	// IETFInterfaces_InterfaceType_v37 corresponds to the value v37 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_v37 E_IETFInterfaces_InterfaceType = 259
	// IETFInterfaces_InterfaceType_vdsl corresponds to the value vdsl of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_vdsl E_IETFInterfaces_InterfaceType = 260
	// IETFInterfaces_InterfaceType_vdsl2 corresponds to the value vdsl2 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_vdsl2 E_IETFInterfaces_InterfaceType = 261
	// IETFInterfaces_InterfaceType_virtualIpAddress corresponds to the value virtualIpAddress of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_virtualIpAddress E_IETFInterfaces_InterfaceType = 262
	// IETFInterfaces_InterfaceType_virtualTg corresponds to the value virtualTg of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_virtualTg E_IETFInterfaces_InterfaceType = 263
	// IETFInterfaces_InterfaceType_vmwareNicTeam corresponds to the value vmwareNicTeam of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_vmwareNicTeam E_IETFInterfaces_InterfaceType = 264
	// IETFInterfaces_InterfaceType_vmwareVirtualNic corresponds to the value vmwareVirtualNic of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_vmwareVirtualNic E_IETFInterfaces_InterfaceType = 265
	// IETFInterfaces_InterfaceType_voiceDID corresponds to the value voiceDID of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_voiceDID E_IETFInterfaces_InterfaceType = 266
	// IETFInterfaces_InterfaceType_voiceEBS corresponds to the value voiceEBS of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_voiceEBS E_IETFInterfaces_InterfaceType = 267
	// IETFInterfaces_InterfaceType_voiceEM corresponds to the value voiceEM of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_voiceEM E_IETFInterfaces_InterfaceType = 268
	// IETFInterfaces_InterfaceType_voiceEMFGD corresponds to the value voiceEMFGD of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_voiceEMFGD E_IETFInterfaces_InterfaceType = 269
	// IETFInterfaces_InterfaceType_voiceEncap corresponds to the value voiceEncap of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_voiceEncap E_IETFInterfaces_InterfaceType = 270
	// IETFInterfaces_InterfaceType_voiceFGDEANA corresponds to the value voiceFGDEANA of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_voiceFGDEANA E_IETFInterfaces_InterfaceType = 271
	// IETFInterfaces_InterfaceType_voiceFGDOS corresponds to the value voiceFGDOS of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_voiceFGDOS E_IETFInterfaces_InterfaceType = 272
	// IETFInterfaces_InterfaceType_voiceFXO corresponds to the value voiceFXO of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_voiceFXO E_IETFInterfaces_InterfaceType = 273
	// IETFInterfaces_InterfaceType_voiceFXS corresponds to the value voiceFXS of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_voiceFXS E_IETFInterfaces_InterfaceType = 274
	// IETFInterfaces_InterfaceType_voiceOverAtm corresponds to the value voiceOverAtm of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_voiceOverAtm E_IETFInterfaces_InterfaceType = 275
	// IETFInterfaces_InterfaceType_voiceOverCable corresponds to the value voiceOverCable of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_voiceOverCable E_IETFInterfaces_InterfaceType = 276
	// IETFInterfaces_InterfaceType_voiceOverFrameRelay corresponds to the value voiceOverFrameRelay of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_voiceOverFrameRelay E_IETFInterfaces_InterfaceType = 277
	// IETFInterfaces_InterfaceType_voiceOverIp corresponds to the value voiceOverIp of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_voiceOverIp E_IETFInterfaces_InterfaceType = 278
	// IETFInterfaces_InterfaceType_wwanPP corresponds to the value wwanPP of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_wwanPP E_IETFInterfaces_InterfaceType = 279
	// IETFInterfaces_InterfaceType_wwanPP2 corresponds to the value wwanPP2 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_wwanPP2 E_IETFInterfaces_InterfaceType = 280
	// IETFInterfaces_InterfaceType_x213 corresponds to the value x213 of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_x213 E_IETFInterfaces_InterfaceType = 281
	// IETFInterfaces_InterfaceType_x25huntGroup corresponds to the value x25huntGroup of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_x25huntGroup E_IETFInterfaces_InterfaceType = 282
	// IETFInterfaces_InterfaceType_x25mlp corresponds to the value x25mlp of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_x25mlp E_IETFInterfaces_InterfaceType = 283
	// IETFInterfaces_InterfaceType_x25ple corresponds to the value x25ple of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_x25ple E_IETFInterfaces_InterfaceType = 284
	// IETFInterfaces_InterfaceType_x86Laps corresponds to the value x86Laps of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_x86Laps E_IETFInterfaces_InterfaceType = 285
	// IETFInterfaces_InterfaceType_xboxWireless corresponds to the value xboxWireless of IETFInterfaces_InterfaceType
	IETFInterfaces_InterfaceType_xboxWireless E_IETFInterfaces_InterfaceType = 286
)

// E_Icmpv4Types_CODE is a derived int64 type which is used to represent
// the enumerated node Icmpv4Types_CODE. An additional value named
// Icmpv4Types_CODE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Icmpv4Types_CODE int64

// IsYANGGoEnum ensures that Icmpv4Types_CODE implements the yang.GoEnum
// interface. This ensures that Icmpv4Types_CODE can be identified as a
// mapped type for a YANG enumeration.
func (E_Icmpv4Types_CODE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Icmpv4Types_CODE.
func (E_Icmpv4Types_CODE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Icmpv4Types_CODE.
func (e E_Icmpv4Types_CODE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Icmpv4Types_CODE")
}

const (
	// Icmpv4Types_CODE_UNSET corresponds to the value UNSET of Icmpv4Types_CODE
	Icmpv4Types_CODE_UNSET E_Icmpv4Types_CODE = 0
	// Icmpv4Types_CODE_DST_UNREACHABLE_ADMIN_PROHIBITED corresponds to the value DST_UNREACHABLE_ADMIN_PROHIBITED of Icmpv4Types_CODE
	Icmpv4Types_CODE_DST_UNREACHABLE_ADMIN_PROHIBITED E_Icmpv4Types_CODE = 1
	// Icmpv4Types_CODE_DST_UNREACHABLE_CANNOT_FRAGMENT corresponds to the value DST_UNREACHABLE_CANNOT_FRAGMENT of Icmpv4Types_CODE
	Icmpv4Types_CODE_DST_UNREACHABLE_CANNOT_FRAGMENT E_Icmpv4Types_CODE = 2
	// Icmpv4Types_CODE_DST_UNREACHABLE_CODE corresponds to the value DST_UNREACHABLE_CODE of Icmpv4Types_CODE
	Icmpv4Types_CODE_DST_UNREACHABLE_CODE E_Icmpv4Types_CODE = 3
	// Icmpv4Types_CODE_DST_UNREACHABLE_DST_HOST_ADMIN_PROHIBITED corresponds to the value DST_UNREACHABLE_DST_HOST_ADMIN_PROHIBITED of Icmpv4Types_CODE
	Icmpv4Types_CODE_DST_UNREACHABLE_DST_HOST_ADMIN_PROHIBITED E_Icmpv4Types_CODE = 4
	// Icmpv4Types_CODE_DST_UNREACHABLE_DST_HOST_UNKNOWN corresponds to the value DST_UNREACHABLE_DST_HOST_UNKNOWN of Icmpv4Types_CODE
	Icmpv4Types_CODE_DST_UNREACHABLE_DST_HOST_UNKNOWN E_Icmpv4Types_CODE = 5
	// Icmpv4Types_CODE_DST_UNREACHABLE_DST_NET_ADMIN_PROHIBITED corresponds to the value DST_UNREACHABLE_DST_NET_ADMIN_PROHIBITED of Icmpv4Types_CODE
	Icmpv4Types_CODE_DST_UNREACHABLE_DST_NET_ADMIN_PROHIBITED E_Icmpv4Types_CODE = 6
	// Icmpv4Types_CODE_DST_UNREACHABLE_DST_NET_UNKNOWN corresponds to the value DST_UNREACHABLE_DST_NET_UNKNOWN of Icmpv4Types_CODE
	Icmpv4Types_CODE_DST_UNREACHABLE_DST_NET_UNKNOWN E_Icmpv4Types_CODE = 7
	// Icmpv4Types_CODE_DST_UNREACHABLE_HOST corresponds to the value DST_UNREACHABLE_HOST of Icmpv4Types_CODE
	Icmpv4Types_CODE_DST_UNREACHABLE_HOST E_Icmpv4Types_CODE = 8
	// Icmpv4Types_CODE_DST_UNREACHABLE_HOST_PRECEDENCE_VIOLATION corresponds to the value DST_UNREACHABLE_HOST_PRECEDENCE_VIOLATION of Icmpv4Types_CODE
	Icmpv4Types_CODE_DST_UNREACHABLE_HOST_PRECEDENCE_VIOLATION E_Icmpv4Types_CODE = 9
	// Icmpv4Types_CODE_DST_UNREACHABLE_HOST_UNREACHABLE_FOR_TOS corresponds to the value DST_UNREACHABLE_HOST_UNREACHABLE_FOR_TOS of Icmpv4Types_CODE
	Icmpv4Types_CODE_DST_UNREACHABLE_HOST_UNREACHABLE_FOR_TOS E_Icmpv4Types_CODE = 10
	// Icmpv4Types_CODE_DST_UNREACHABLE_NET corresponds to the value DST_UNREACHABLE_NET of Icmpv4Types_CODE
	Icmpv4Types_CODE_DST_UNREACHABLE_NET E_Icmpv4Types_CODE = 11
	// Icmpv4Types_CODE_DST_UNREACHABLE_NET_UNREACHABLE_FOR_TOS corresponds to the value DST_UNREACHABLE_NET_UNREACHABLE_FOR_TOS of Icmpv4Types_CODE
	Icmpv4Types_CODE_DST_UNREACHABLE_NET_UNREACHABLE_FOR_TOS E_Icmpv4Types_CODE = 12
	// Icmpv4Types_CODE_DST_UNREACHABLE_PORT corresponds to the value DST_UNREACHABLE_PORT of Icmpv4Types_CODE
	Icmpv4Types_CODE_DST_UNREACHABLE_PORT E_Icmpv4Types_CODE = 13
	// Icmpv4Types_CODE_DST_UNREACHABLE_PRECEDENCE_CUTOFF corresponds to the value DST_UNREACHABLE_PRECEDENCE_CUTOFF of Icmpv4Types_CODE
	Icmpv4Types_CODE_DST_UNREACHABLE_PRECEDENCE_CUTOFF E_Icmpv4Types_CODE = 14
	// Icmpv4Types_CODE_DST_UNREACHABLE_PROTOCOL corresponds to the value DST_UNREACHABLE_PROTOCOL of Icmpv4Types_CODE
	Icmpv4Types_CODE_DST_UNREACHABLE_PROTOCOL E_Icmpv4Types_CODE = 15
	// Icmpv4Types_CODE_DST_UNREACHABLE_SRC_HOST_ISOLATED corresponds to the value DST_UNREACHABLE_SRC_HOST_ISOLATED of Icmpv4Types_CODE
	Icmpv4Types_CODE_DST_UNREACHABLE_SRC_HOST_ISOLATED E_Icmpv4Types_CODE = 16
	// Icmpv4Types_CODE_DST_UNREACHABLE_SRC_ROUTE_FAILED corresponds to the value DST_UNREACHABLE_SRC_ROUTE_FAILED of Icmpv4Types_CODE
	Icmpv4Types_CODE_DST_UNREACHABLE_SRC_ROUTE_FAILED E_Icmpv4Types_CODE = 17
	// Icmpv4Types_CODE_ECHO_CODE corresponds to the value ECHO_CODE of Icmpv4Types_CODE
	Icmpv4Types_CODE_ECHO_CODE E_Icmpv4Types_CODE = 18
	// Icmpv4Types_CODE_ECHO_NO_CODE corresponds to the value ECHO_NO_CODE of Icmpv4Types_CODE
	Icmpv4Types_CODE_ECHO_NO_CODE E_Icmpv4Types_CODE = 19
	// Icmpv4Types_CODE_ECHO_REPLY_CODE corresponds to the value ECHO_REPLY_CODE of Icmpv4Types_CODE
	Icmpv4Types_CODE_ECHO_REPLY_CODE E_Icmpv4Types_CODE = 20
	// Icmpv4Types_CODE_ECHO_REPLY_NONE corresponds to the value ECHO_REPLY_NONE of Icmpv4Types_CODE
	Icmpv4Types_CODE_ECHO_REPLY_NONE E_Icmpv4Types_CODE = 21
	// Icmpv4Types_CODE_EXT_ECHO_REPLY_CODE corresponds to the value EXT_ECHO_REPLY_CODE of Icmpv4Types_CODE
	Icmpv4Types_CODE_EXT_ECHO_REPLY_CODE E_Icmpv4Types_CODE = 22
	// Icmpv4Types_CODE_EXT_ECHO_REPLY_MALFORMED_QUERY corresponds to the value EXT_ECHO_REPLY_MALFORMED_QUERY of Icmpv4Types_CODE
	Icmpv4Types_CODE_EXT_ECHO_REPLY_MALFORMED_QUERY E_Icmpv4Types_CODE = 23
	// Icmpv4Types_CODE_EXT_ECHO_REPLY_MULTIPLE_INTF_SATISFY_QUERY corresponds to the value EXT_ECHO_REPLY_MULTIPLE_INTF_SATISFY_QUERY of Icmpv4Types_CODE
	Icmpv4Types_CODE_EXT_ECHO_REPLY_MULTIPLE_INTF_SATISFY_QUERY E_Icmpv4Types_CODE = 24
	// Icmpv4Types_CODE_EXT_ECHO_REPLY_NO_ERROR corresponds to the value EXT_ECHO_REPLY_NO_ERROR of Icmpv4Types_CODE
	Icmpv4Types_CODE_EXT_ECHO_REPLY_NO_ERROR E_Icmpv4Types_CODE = 25
	// Icmpv4Types_CODE_EXT_ECHO_REPLY_NO_SUB_TABLE_ENTRY corresponds to the value EXT_ECHO_REPLY_NO_SUB_TABLE_ENTRY of Icmpv4Types_CODE
	Icmpv4Types_CODE_EXT_ECHO_REPLY_NO_SUB_TABLE_ENTRY E_Icmpv4Types_CODE = 26
	// Icmpv4Types_CODE_EXT_ECHO_REPLY_NO_SUCH_INTF corresponds to the value EXT_ECHO_REPLY_NO_SUCH_INTF of Icmpv4Types_CODE
	Icmpv4Types_CODE_EXT_ECHO_REPLY_NO_SUCH_INTF E_Icmpv4Types_CODE = 27
	// Icmpv4Types_CODE_EXT_ECHO_REQUEST_CODE corresponds to the value EXT_ECHO_REQUEST_CODE of Icmpv4Types_CODE
	Icmpv4Types_CODE_EXT_ECHO_REQUEST_CODE E_Icmpv4Types_CODE = 28
	// Icmpv4Types_CODE_EXT_ECHO_REQUEST_NO_ERROR corresponds to the value EXT_ECHO_REQUEST_NO_ERROR of Icmpv4Types_CODE
	Icmpv4Types_CODE_EXT_ECHO_REQUEST_NO_ERROR E_Icmpv4Types_CODE = 29
	// Icmpv4Types_CODE_PARAM_PROBLEM_BAD_LENGTH corresponds to the value PARAM_PROBLEM_BAD_LENGTH of Icmpv4Types_CODE
	Icmpv4Types_CODE_PARAM_PROBLEM_BAD_LENGTH E_Icmpv4Types_CODE = 30
	// Icmpv4Types_CODE_PARAM_PROBLEM_CODE corresponds to the value PARAM_PROBLEM_CODE of Icmpv4Types_CODE
	Icmpv4Types_CODE_PARAM_PROBLEM_CODE E_Icmpv4Types_CODE = 31
	// Icmpv4Types_CODE_PARAM_PROBLEM_MISSING_REQ_OPTION corresponds to the value PARAM_PROBLEM_MISSING_REQ_OPTION of Icmpv4Types_CODE
	Icmpv4Types_CODE_PARAM_PROBLEM_MISSING_REQ_OPTION E_Icmpv4Types_CODE = 32
	// Icmpv4Types_CODE_PARAM_PROBLEM_POINTER_INDICATES_ERR corresponds to the value PARAM_PROBLEM_POINTER_INDICATES_ERR of Icmpv4Types_CODE
	Icmpv4Types_CODE_PARAM_PROBLEM_POINTER_INDICATES_ERR E_Icmpv4Types_CODE = 33
	// Icmpv4Types_CODE_PHOTURIS_AUTH_FAILED corresponds to the value PHOTURIS_AUTH_FAILED of Icmpv4Types_CODE
	Icmpv4Types_CODE_PHOTURIS_AUTH_FAILED E_Icmpv4Types_CODE = 34
	// Icmpv4Types_CODE_PHOTURIS_BAD_SPI corresponds to the value PHOTURIS_BAD_SPI of Icmpv4Types_CODE
	Icmpv4Types_CODE_PHOTURIS_BAD_SPI E_Icmpv4Types_CODE = 35
	// Icmpv4Types_CODE_PHOTURIS_CODE corresponds to the value PHOTURIS_CODE of Icmpv4Types_CODE
	Icmpv4Types_CODE_PHOTURIS_CODE E_Icmpv4Types_CODE = 36
	// Icmpv4Types_CODE_PHOTURIS_DECOMPRESS_FAILED corresponds to the value PHOTURIS_DECOMPRESS_FAILED of Icmpv4Types_CODE
	Icmpv4Types_CODE_PHOTURIS_DECOMPRESS_FAILED E_Icmpv4Types_CODE = 37
	// Icmpv4Types_CODE_PHOTURIS_DECRYPTION_FAILED corresponds to the value PHOTURIS_DECRYPTION_FAILED of Icmpv4Types_CODE
	Icmpv4Types_CODE_PHOTURIS_DECRYPTION_FAILED E_Icmpv4Types_CODE = 38
	// Icmpv4Types_CODE_PHOTURIS_NEED_AUTHENTICATION corresponds to the value PHOTURIS_NEED_AUTHENTICATION of Icmpv4Types_CODE
	Icmpv4Types_CODE_PHOTURIS_NEED_AUTHENTICATION E_Icmpv4Types_CODE = 39
	// Icmpv4Types_CODE_PHOTURIS_NEED_AUTHORIZATION corresponds to the value PHOTURIS_NEED_AUTHORIZATION of Icmpv4Types_CODE
	Icmpv4Types_CODE_PHOTURIS_NEED_AUTHORIZATION E_Icmpv4Types_CODE = 40
	// Icmpv4Types_CODE_REDIRECT_CODE corresponds to the value REDIRECT_CODE of Icmpv4Types_CODE
	Icmpv4Types_CODE_REDIRECT_CODE E_Icmpv4Types_CODE = 41
	// Icmpv4Types_CODE_REDIRECT_HOST corresponds to the value REDIRECT_HOST of Icmpv4Types_CODE
	Icmpv4Types_CODE_REDIRECT_HOST E_Icmpv4Types_CODE = 42
	// Icmpv4Types_CODE_REDIRECT_NETWORK corresponds to the value REDIRECT_NETWORK of Icmpv4Types_CODE
	Icmpv4Types_CODE_REDIRECT_NETWORK E_Icmpv4Types_CODE = 43
	// Icmpv4Types_CODE_REDIRECT_TOS_HOST corresponds to the value REDIRECT_TOS_HOST of Icmpv4Types_CODE
	Icmpv4Types_CODE_REDIRECT_TOS_HOST E_Icmpv4Types_CODE = 44
	// Icmpv4Types_CODE_REDIRECT_TOS_NETWORK corresponds to the value REDIRECT_TOS_NETWORK of Icmpv4Types_CODE
	Icmpv4Types_CODE_REDIRECT_TOS_NETWORK E_Icmpv4Types_CODE = 45
	// Icmpv4Types_CODE_ROUTER_ADVERTISEMENT_CODE corresponds to the value ROUTER_ADVERTISEMENT_CODE of Icmpv4Types_CODE
	Icmpv4Types_CODE_ROUTER_ADVERTISEMENT_CODE E_Icmpv4Types_CODE = 46
	// Icmpv4Types_CODE_ROUTER_ADVERTISEMENT_DOES_NOT_ROUTE_COMMON corresponds to the value ROUTER_ADVERTISEMENT_DOES_NOT_ROUTE_COMMON of Icmpv4Types_CODE
	Icmpv4Types_CODE_ROUTER_ADVERTISEMENT_DOES_NOT_ROUTE_COMMON E_Icmpv4Types_CODE = 47
	// Icmpv4Types_CODE_ROUTER_ADVERTISEMENT_NORMAL corresponds to the value ROUTER_ADVERTISEMENT_NORMAL of Icmpv4Types_CODE
	Icmpv4Types_CODE_ROUTER_ADVERTISEMENT_NORMAL E_Icmpv4Types_CODE = 48
	// Icmpv4Types_CODE_ROUTER_SELECTION_CODE corresponds to the value ROUTER_SELECTION_CODE of Icmpv4Types_CODE
	Icmpv4Types_CODE_ROUTER_SELECTION_CODE E_Icmpv4Types_CODE = 49
	// Icmpv4Types_CODE_ROUTER_SELECTION_NO_CODE corresponds to the value ROUTER_SELECTION_NO_CODE of Icmpv4Types_CODE
	Icmpv4Types_CODE_ROUTER_SELECTION_NO_CODE E_Icmpv4Types_CODE = 50
	// Icmpv4Types_CODE_TIMESTAMP_CODE corresponds to the value TIMESTAMP_CODE of Icmpv4Types_CODE
	Icmpv4Types_CODE_TIMESTAMP_CODE E_Icmpv4Types_CODE = 51
	// Icmpv4Types_CODE_TIMESTAMP_NO_CODE corresponds to the value TIMESTAMP_NO_CODE of Icmpv4Types_CODE
	Icmpv4Types_CODE_TIMESTAMP_NO_CODE E_Icmpv4Types_CODE = 52
	// Icmpv4Types_CODE_TIMESTAMP_REPLY_CODE corresponds to the value TIMESTAMP_REPLY_CODE of Icmpv4Types_CODE
	Icmpv4Types_CODE_TIMESTAMP_REPLY_CODE E_Icmpv4Types_CODE = 53
	// Icmpv4Types_CODE_TIMESTAMP_REPLY_NO_CODE corresponds to the value TIMESTAMP_REPLY_NO_CODE of Icmpv4Types_CODE
	Icmpv4Types_CODE_TIMESTAMP_REPLY_NO_CODE E_Icmpv4Types_CODE = 54
	// Icmpv4Types_CODE_TIME_EXCEEDED_CODE corresponds to the value TIME_EXCEEDED_CODE of Icmpv4Types_CODE
	Icmpv4Types_CODE_TIME_EXCEEDED_CODE E_Icmpv4Types_CODE = 55
	// Icmpv4Types_CODE_TIME_EXCEEDED_FRAGMENT_REASSEMBLY_IN_TRANSIT corresponds to the value TIME_EXCEEDED_FRAGMENT_REASSEMBLY_IN_TRANSIT of Icmpv4Types_CODE
	Icmpv4Types_CODE_TIME_EXCEEDED_FRAGMENT_REASSEMBLY_IN_TRANSIT E_Icmpv4Types_CODE = 56
	// Icmpv4Types_CODE_TIME_EXCEEDED_IN_TRANSIT corresponds to the value TIME_EXCEEDED_IN_TRANSIT of Icmpv4Types_CODE
	Icmpv4Types_CODE_TIME_EXCEEDED_IN_TRANSIT E_Icmpv4Types_CODE = 57
)

// E_Icmpv4Types_TYPE is a derived int64 type which is used to represent
// the enumerated node Icmpv4Types_TYPE. An additional value named
// Icmpv4Types_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Icmpv4Types_TYPE int64

// IsYANGGoEnum ensures that Icmpv4Types_TYPE implements the yang.GoEnum
// interface. This ensures that Icmpv4Types_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_Icmpv4Types_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Icmpv4Types_TYPE.
func (E_Icmpv4Types_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Icmpv4Types_TYPE.
func (e E_Icmpv4Types_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Icmpv4Types_TYPE")
}

const (
	// Icmpv4Types_TYPE_UNSET corresponds to the value UNSET of Icmpv4Types_TYPE
	Icmpv4Types_TYPE_UNSET E_Icmpv4Types_TYPE = 0
	// Icmpv4Types_TYPE_DST_UNREACHABLE corresponds to the value DST_UNREACHABLE of Icmpv4Types_TYPE
	Icmpv4Types_TYPE_DST_UNREACHABLE E_Icmpv4Types_TYPE = 1
	// Icmpv4Types_TYPE_ECHO corresponds to the value ECHO of Icmpv4Types_TYPE
	Icmpv4Types_TYPE_ECHO E_Icmpv4Types_TYPE = 2
	// Icmpv4Types_TYPE_ECHO_REPLY corresponds to the value ECHO_REPLY of Icmpv4Types_TYPE
	Icmpv4Types_TYPE_ECHO_REPLY E_Icmpv4Types_TYPE = 3
	// Icmpv4Types_TYPE_EXT_ECHO_REPLY corresponds to the value EXT_ECHO_REPLY of Icmpv4Types_TYPE
	Icmpv4Types_TYPE_EXT_ECHO_REPLY E_Icmpv4Types_TYPE = 4
	// Icmpv4Types_TYPE_EXT_ECHO_REQUEST corresponds to the value EXT_ECHO_REQUEST of Icmpv4Types_TYPE
	Icmpv4Types_TYPE_EXT_ECHO_REQUEST E_Icmpv4Types_TYPE = 5
	// Icmpv4Types_TYPE_PARAM_PROBLEM corresponds to the value PARAM_PROBLEM of Icmpv4Types_TYPE
	Icmpv4Types_TYPE_PARAM_PROBLEM E_Icmpv4Types_TYPE = 6
	// Icmpv4Types_TYPE_PHOTURIS corresponds to the value PHOTURIS of Icmpv4Types_TYPE
	Icmpv4Types_TYPE_PHOTURIS E_Icmpv4Types_TYPE = 7
	// Icmpv4Types_TYPE_REDIRECT corresponds to the value REDIRECT of Icmpv4Types_TYPE
	Icmpv4Types_TYPE_REDIRECT E_Icmpv4Types_TYPE = 8
	// Icmpv4Types_TYPE_ROUTER_ADVERTISEMENT corresponds to the value ROUTER_ADVERTISEMENT of Icmpv4Types_TYPE
	Icmpv4Types_TYPE_ROUTER_ADVERTISEMENT E_Icmpv4Types_TYPE = 9
	// Icmpv4Types_TYPE_ROUTER_SOLICITATION corresponds to the value ROUTER_SOLICITATION of Icmpv4Types_TYPE
	Icmpv4Types_TYPE_ROUTER_SOLICITATION E_Icmpv4Types_TYPE = 10
	// Icmpv4Types_TYPE_TIMESTAMP corresponds to the value TIMESTAMP of Icmpv4Types_TYPE
	Icmpv4Types_TYPE_TIMESTAMP E_Icmpv4Types_TYPE = 11
	// Icmpv4Types_TYPE_TIMESTAMP_REPLY corresponds to the value TIMESTAMP_REPLY of Icmpv4Types_TYPE
	Icmpv4Types_TYPE_TIMESTAMP_REPLY E_Icmpv4Types_TYPE = 12
	// Icmpv4Types_TYPE_TIME_EXCEEDED corresponds to the value TIME_EXCEEDED of Icmpv4Types_TYPE
	Icmpv4Types_TYPE_TIME_EXCEEDED E_Icmpv4Types_TYPE = 13
	// Icmpv4Types_TYPE_TRACEROUTE corresponds to the value TRACEROUTE of Icmpv4Types_TYPE
	Icmpv4Types_TYPE_TRACEROUTE E_Icmpv4Types_TYPE = 14
)

// E_Icmpv6Types_CODE is a derived int64 type which is used to represent
// the enumerated node Icmpv6Types_CODE. An additional value named
// Icmpv6Types_CODE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Icmpv6Types_CODE int64

// IsYANGGoEnum ensures that Icmpv6Types_CODE implements the yang.GoEnum
// interface. This ensures that Icmpv6Types_CODE can be identified as a
// mapped type for a YANG enumeration.
func (E_Icmpv6Types_CODE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Icmpv6Types_CODE.
func (E_Icmpv6Types_CODE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Icmpv6Types_CODE.
func (e E_Icmpv6Types_CODE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Icmpv6Types_CODE")
}

const (
	// Icmpv6Types_CODE_UNSET corresponds to the value UNSET of Icmpv6Types_CODE
	Icmpv6Types_CODE_UNSET E_Icmpv6Types_CODE = 0
	// Icmpv6Types_CODE_DST_UNREACHABLE_ADDR corresponds to the value DST_UNREACHABLE_ADDR of Icmpv6Types_CODE
	Icmpv6Types_CODE_DST_UNREACHABLE_ADDR E_Icmpv6Types_CODE = 1
	// Icmpv6Types_CODE_DST_UNREACHABLE_BEYOND_SCOPE_OF_SRC corresponds to the value DST_UNREACHABLE_BEYOND_SCOPE_OF_SRC of Icmpv6Types_CODE
	Icmpv6Types_CODE_DST_UNREACHABLE_BEYOND_SCOPE_OF_SRC E_Icmpv6Types_CODE = 2
	// Icmpv6Types_CODE_DST_UNREACHABLE_CODE corresponds to the value DST_UNREACHABLE_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_DST_UNREACHABLE_CODE E_Icmpv6Types_CODE = 3
	// Icmpv6Types_CODE_DST_UNREACHABLE_DST_ADMIN_PROHIBITED corresponds to the value DST_UNREACHABLE_DST_ADMIN_PROHIBITED of Icmpv6Types_CODE
	Icmpv6Types_CODE_DST_UNREACHABLE_DST_ADMIN_PROHIBITED E_Icmpv6Types_CODE = 4
	// Icmpv6Types_CODE_DST_UNREACHABLE_ERR_IN_SRC_ROUTING_HDR corresponds to the value DST_UNREACHABLE_ERR_IN_SRC_ROUTING_HDR of Icmpv6Types_CODE
	Icmpv6Types_CODE_DST_UNREACHABLE_ERR_IN_SRC_ROUTING_HDR E_Icmpv6Types_CODE = 5
	// Icmpv6Types_CODE_DST_UNREACHABLE_HDRS_TOO_LONG corresponds to the value DST_UNREACHABLE_HDRS_TOO_LONG of Icmpv6Types_CODE
	Icmpv6Types_CODE_DST_UNREACHABLE_HDRS_TOO_LONG E_Icmpv6Types_CODE = 6
	// Icmpv6Types_CODE_DST_UNREACHABLE_NO_ROUTE_TO_DST corresponds to the value DST_UNREACHABLE_NO_ROUTE_TO_DST of Icmpv6Types_CODE
	Icmpv6Types_CODE_DST_UNREACHABLE_NO_ROUTE_TO_DST E_Icmpv6Types_CODE = 7
	// Icmpv6Types_CODE_DST_UNREACHABLE_PORT corresponds to the value DST_UNREACHABLE_PORT of Icmpv6Types_CODE
	Icmpv6Types_CODE_DST_UNREACHABLE_PORT E_Icmpv6Types_CODE = 8
	// Icmpv6Types_CODE_DST_UNREACHABLE_REJECT_ROUTE_TO_DST corresponds to the value DST_UNREACHABLE_REJECT_ROUTE_TO_DST of Icmpv6Types_CODE
	Icmpv6Types_CODE_DST_UNREACHABLE_REJECT_ROUTE_TO_DST E_Icmpv6Types_CODE = 9
	// Icmpv6Types_CODE_DST_UNREACHABLE_SRC_ADDR_FAILED_POLICY corresponds to the value DST_UNREACHABLE_SRC_ADDR_FAILED_POLICY of Icmpv6Types_CODE
	Icmpv6Types_CODE_DST_UNREACHABLE_SRC_ADDR_FAILED_POLICY E_Icmpv6Types_CODE = 10
	// Icmpv6Types_CODE_DUPLICATE_ADDRESS_REPLY_CODE corresponds to the value DUPLICATE_ADDRESS_REPLY_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_DUPLICATE_ADDRESS_REPLY_CODE E_Icmpv6Types_CODE = 11
	// Icmpv6Types_CODE_DUPLICATE_ADDRESS_REPLY_DAC corresponds to the value DUPLICATE_ADDRESS_REPLY_DAC of Icmpv6Types_CODE
	Icmpv6Types_CODE_DUPLICATE_ADDRESS_REPLY_DAC E_Icmpv6Types_CODE = 12
	// Icmpv6Types_CODE_DUPLICATE_ADDRESS_REPLY_EDAC_ROVR128 corresponds to the value DUPLICATE_ADDRESS_REPLY_EDAC_ROVR128 of Icmpv6Types_CODE
	Icmpv6Types_CODE_DUPLICATE_ADDRESS_REPLY_EDAC_ROVR128 E_Icmpv6Types_CODE = 13
	// Icmpv6Types_CODE_DUPLICATE_ADDRESS_REPLY_EDAC_ROVR192 corresponds to the value DUPLICATE_ADDRESS_REPLY_EDAC_ROVR192 of Icmpv6Types_CODE
	Icmpv6Types_CODE_DUPLICATE_ADDRESS_REPLY_EDAC_ROVR192 E_Icmpv6Types_CODE = 14
	// Icmpv6Types_CODE_DUPLICATE_ADDRESS_REPLY_EDAC_ROVR256 corresponds to the value DUPLICATE_ADDRESS_REPLY_EDAC_ROVR256 of Icmpv6Types_CODE
	Icmpv6Types_CODE_DUPLICATE_ADDRESS_REPLY_EDAC_ROVR256 E_Icmpv6Types_CODE = 15
	// Icmpv6Types_CODE_DUPLICATE_ADDRESS_REPLY_EDAC_ROVR64 corresponds to the value DUPLICATE_ADDRESS_REPLY_EDAC_ROVR64 of Icmpv6Types_CODE
	Icmpv6Types_CODE_DUPLICATE_ADDRESS_REPLY_EDAC_ROVR64 E_Icmpv6Types_CODE = 16
	// Icmpv6Types_CODE_DUPLICATE_ADDRESS_REQUEST_CODE corresponds to the value DUPLICATE_ADDRESS_REQUEST_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_DUPLICATE_ADDRESS_REQUEST_CODE E_Icmpv6Types_CODE = 17
	// Icmpv6Types_CODE_DUPLICATE_ADDRESS_REQUEST_DAR corresponds to the value DUPLICATE_ADDRESS_REQUEST_DAR of Icmpv6Types_CODE
	Icmpv6Types_CODE_DUPLICATE_ADDRESS_REQUEST_DAR E_Icmpv6Types_CODE = 18
	// Icmpv6Types_CODE_DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR128 corresponds to the value DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR128 of Icmpv6Types_CODE
	Icmpv6Types_CODE_DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR128 E_Icmpv6Types_CODE = 19
	// Icmpv6Types_CODE_DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR192 corresponds to the value DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR192 of Icmpv6Types_CODE
	Icmpv6Types_CODE_DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR192 E_Icmpv6Types_CODE = 20
	// Icmpv6Types_CODE_DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR256 corresponds to the value DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR256 of Icmpv6Types_CODE
	Icmpv6Types_CODE_DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR256 E_Icmpv6Types_CODE = 21
	// Icmpv6Types_CODE_DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR64 corresponds to the value DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR64 of Icmpv6Types_CODE
	Icmpv6Types_CODE_DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR64 E_Icmpv6Types_CODE = 22
	// Icmpv6Types_CODE_ECHO_REPLY_CODE corresponds to the value ECHO_REPLY_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_ECHO_REPLY_CODE E_Icmpv6Types_CODE = 23
	// Icmpv6Types_CODE_ECHO_REPLY_NO_CODE corresponds to the value ECHO_REPLY_NO_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_ECHO_REPLY_NO_CODE E_Icmpv6Types_CODE = 24
	// Icmpv6Types_CODE_ECHO_REQUEST_CODE corresponds to the value ECHO_REQUEST_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_ECHO_REQUEST_CODE E_Icmpv6Types_CODE = 25
	// Icmpv6Types_CODE_ECHO_REQUEST_NO_CODE corresponds to the value ECHO_REQUEST_NO_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_ECHO_REQUEST_NO_CODE E_Icmpv6Types_CODE = 26
	// Icmpv6Types_CODE_EXT_ECHO_REPLY_CODE corresponds to the value EXT_ECHO_REPLY_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_EXT_ECHO_REPLY_CODE E_Icmpv6Types_CODE = 27
	// Icmpv6Types_CODE_EXT_ECHO_REPLY_MALFORMED_QUERY corresponds to the value EXT_ECHO_REPLY_MALFORMED_QUERY of Icmpv6Types_CODE
	Icmpv6Types_CODE_EXT_ECHO_REPLY_MALFORMED_QUERY E_Icmpv6Types_CODE = 28
	// Icmpv6Types_CODE_EXT_ECHO_REPLY_MULTIPLE_INTF_SATISFY_QUERY corresponds to the value EXT_ECHO_REPLY_MULTIPLE_INTF_SATISFY_QUERY of Icmpv6Types_CODE
	Icmpv6Types_CODE_EXT_ECHO_REPLY_MULTIPLE_INTF_SATISFY_QUERY E_Icmpv6Types_CODE = 29
	// Icmpv6Types_CODE_EXT_ECHO_REPLY_NO_ERROR corresponds to the value EXT_ECHO_REPLY_NO_ERROR of Icmpv6Types_CODE
	Icmpv6Types_CODE_EXT_ECHO_REPLY_NO_ERROR E_Icmpv6Types_CODE = 30
	// Icmpv6Types_CODE_EXT_ECHO_REPLY_NO_SUCH_INTERFACE corresponds to the value EXT_ECHO_REPLY_NO_SUCH_INTERFACE of Icmpv6Types_CODE
	Icmpv6Types_CODE_EXT_ECHO_REPLY_NO_SUCH_INTERFACE E_Icmpv6Types_CODE = 31
	// Icmpv6Types_CODE_EXT_ECHO_REPLY_NO_SUCH_TABLE_ENTRY corresponds to the value EXT_ECHO_REPLY_NO_SUCH_TABLE_ENTRY of Icmpv6Types_CODE
	Icmpv6Types_CODE_EXT_ECHO_REPLY_NO_SUCH_TABLE_ENTRY E_Icmpv6Types_CODE = 32
	// Icmpv6Types_CODE_EXT_ECHO_REQUEST_CODE corresponds to the value EXT_ECHO_REQUEST_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_EXT_ECHO_REQUEST_CODE E_Icmpv6Types_CODE = 33
	// Icmpv6Types_CODE_EXT_ECHO_REQUEST_NO_ERROR corresponds to the value EXT_ECHO_REQUEST_NO_ERROR of Icmpv6Types_CODE
	Icmpv6Types_CODE_EXT_ECHO_REQUEST_NO_ERROR E_Icmpv6Types_CODE = 34
	// Icmpv6Types_CODE_HOME_AGENT_ADDRESS_DISCOVERY_REPLY_CODE corresponds to the value HOME_AGENT_ADDRESS_DISCOVERY_REPLY_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_HOME_AGENT_ADDRESS_DISCOVERY_REPLY_CODE E_Icmpv6Types_CODE = 35
	// Icmpv6Types_CODE_HOME_AGENT_ADDRESS_DISCOVERY_REPLY_NO_CODE corresponds to the value HOME_AGENT_ADDRESS_DISCOVERY_REPLY_NO_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_HOME_AGENT_ADDRESS_DISCOVERY_REPLY_NO_CODE E_Icmpv6Types_CODE = 36
	// Icmpv6Types_CODE_HOME_AGENT_ADDRESS_DISCOVERY_REQUEST_CODE corresponds to the value HOME_AGENT_ADDRESS_DISCOVERY_REQUEST_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_HOME_AGENT_ADDRESS_DISCOVERY_REQUEST_CODE E_Icmpv6Types_CODE = 37
	// Icmpv6Types_CODE_HOME_AGENT_ADDRESS_DISCOVERY_REQUEST_NO_CODE corresponds to the value HOME_AGENT_ADDRESS_DISCOVERY_REQUEST_NO_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_HOME_AGENT_ADDRESS_DISCOVERY_REQUEST_NO_CODE E_Icmpv6Types_CODE = 38
	// Icmpv6Types_CODE_INVERSE_NEIGHBOR_ADVERTISEMENT_CODE corresponds to the value INVERSE_NEIGHBOR_ADVERTISEMENT_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_INVERSE_NEIGHBOR_ADVERTISEMENT_CODE E_Icmpv6Types_CODE = 39
	// Icmpv6Types_CODE_INVERSE_NEIGHBOR_ADVERTISEMENT_NO_CODE corresponds to the value INVERSE_NEIGHBOR_ADVERTISEMENT_NO_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_INVERSE_NEIGHBOR_ADVERTISEMENT_NO_CODE E_Icmpv6Types_CODE = 40
	// Icmpv6Types_CODE_INVERSE_NEIGHBOR_SOLICITATION_CODE corresponds to the value INVERSE_NEIGHBOR_SOLICITATION_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_INVERSE_NEIGHBOR_SOLICITATION_CODE E_Icmpv6Types_CODE = 41
	// Icmpv6Types_CODE_INVERSE_NEIGHBOR_SOLICITATION_NO_CODE corresponds to the value INVERSE_NEIGHBOR_SOLICITATION_NO_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_INVERSE_NEIGHBOR_SOLICITATION_NO_CODE E_Icmpv6Types_CODE = 42
	// Icmpv6Types_CODE_MOBILE_PREFIX_ADVERTISEMENT_CODE corresponds to the value MOBILE_PREFIX_ADVERTISEMENT_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_MOBILE_PREFIX_ADVERTISEMENT_CODE E_Icmpv6Types_CODE = 43
	// Icmpv6Types_CODE_MOBILE_PREFIX_ADVERTISEMENT_NO_CODE corresponds to the value MOBILE_PREFIX_ADVERTISEMENT_NO_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_MOBILE_PREFIX_ADVERTISEMENT_NO_CODE E_Icmpv6Types_CODE = 44
	// Icmpv6Types_CODE_MOBILE_PREFIX_SOLICITATION_CODE corresponds to the value MOBILE_PREFIX_SOLICITATION_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_MOBILE_PREFIX_SOLICITATION_CODE E_Icmpv6Types_CODE = 45
	// Icmpv6Types_CODE_MOBILE_PREFIX_SOLICITATION_NO_CODE corresponds to the value MOBILE_PREFIX_SOLICITATION_NO_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_MOBILE_PREFIX_SOLICITATION_NO_CODE E_Icmpv6Types_CODE = 46
	// Icmpv6Types_CODE_MULTICAST_LISTENER_DONE_CODE corresponds to the value MULTICAST_LISTENER_DONE_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_MULTICAST_LISTENER_DONE_CODE E_Icmpv6Types_CODE = 47
	// Icmpv6Types_CODE_MULTICAST_LISTENER_DONE_NO_CODE corresponds to the value MULTICAST_LISTENER_DONE_NO_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_MULTICAST_LISTENER_DONE_NO_CODE E_Icmpv6Types_CODE = 48
	// Icmpv6Types_CODE_MULTICAST_LISTENER_QUERY_CODE corresponds to the value MULTICAST_LISTENER_QUERY_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_MULTICAST_LISTENER_QUERY_CODE E_Icmpv6Types_CODE = 49
	// Icmpv6Types_CODE_MULTICAST_LISTENER_QUERY_NO_CODE corresponds to the value MULTICAST_LISTENER_QUERY_NO_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_MULTICAST_LISTENER_QUERY_NO_CODE E_Icmpv6Types_CODE = 50
	// Icmpv6Types_CODE_MULTICAST_LISTENER_REPORT_CODE corresponds to the value MULTICAST_LISTENER_REPORT_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_MULTICAST_LISTENER_REPORT_CODE E_Icmpv6Types_CODE = 51
	// Icmpv6Types_CODE_MULTICAST_LISTENER_REPORT_NO_CODE corresponds to the value MULTICAST_LISTENER_REPORT_NO_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_MULTICAST_LISTENER_REPORT_NO_CODE E_Icmpv6Types_CODE = 52
	// Icmpv6Types_CODE_NDDE_INFORMATION_RESPONSE_CODE corresponds to the value NDDE_INFORMATION_RESPONSE_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_NDDE_INFORMATION_RESPONSE_CODE E_Icmpv6Types_CODE = 53
	// Icmpv6Types_CODE_NEIGHBOR_ADVERTISEMENT_CODE corresponds to the value NEIGHBOR_ADVERTISEMENT_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_NEIGHBOR_ADVERTISEMENT_CODE E_Icmpv6Types_CODE = 54
	// Icmpv6Types_CODE_NEIGHBOR_ADVERTISEMENT_NO_CODE corresponds to the value NEIGHBOR_ADVERTISEMENT_NO_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_NEIGHBOR_ADVERTISEMENT_NO_CODE E_Icmpv6Types_CODE = 55
	// Icmpv6Types_CODE_NEIGHBOR_SOLICITATION_CODE corresponds to the value NEIGHBOR_SOLICITATION_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_NEIGHBOR_SOLICITATION_CODE E_Icmpv6Types_CODE = 56
	// Icmpv6Types_CODE_NEIGHBOR_SOLICITATION_NO_CODE corresponds to the value NEIGHBOR_SOLICITATION_NO_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_NEIGHBOR_SOLICITATION_NO_CODE E_Icmpv6Types_CODE = 57
	// Icmpv6Types_CODE_NODE_INFORMATION_QUERY_CODE corresponds to the value NODE_INFORMATION_QUERY_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_NODE_INFORMATION_QUERY_CODE E_Icmpv6Types_CODE = 58
	// Icmpv6Types_CODE_NODE_INFORMATION_QUERY_IPV4_ADDR corresponds to the value NODE_INFORMATION_QUERY_IPV4_ADDR of Icmpv6Types_CODE
	Icmpv6Types_CODE_NODE_INFORMATION_QUERY_IPV4_ADDR E_Icmpv6Types_CODE = 59
	// Icmpv6Types_CODE_NODE_INFORMATION_QUERY_IPV6_ADDR corresponds to the value NODE_INFORMATION_QUERY_IPV6_ADDR of Icmpv6Types_CODE
	Icmpv6Types_CODE_NODE_INFORMATION_QUERY_IPV6_ADDR E_Icmpv6Types_CODE = 60
	// Icmpv6Types_CODE_NODE_INFORMATION_QUERY_NAME corresponds to the value NODE_INFORMATION_QUERY_NAME of Icmpv6Types_CODE
	Icmpv6Types_CODE_NODE_INFORMATION_QUERY_NAME E_Icmpv6Types_CODE = 61
	// Icmpv6Types_CODE_NODE_INFORMATION_RESPONSE_REFUSED corresponds to the value NODE_INFORMATION_RESPONSE_REFUSED of Icmpv6Types_CODE
	Icmpv6Types_CODE_NODE_INFORMATION_RESPONSE_REFUSED E_Icmpv6Types_CODE = 62
	// Icmpv6Types_CODE_NODE_INFORMATION_RESPONSE_SUCCESS corresponds to the value NODE_INFORMATION_RESPONSE_SUCCESS of Icmpv6Types_CODE
	Icmpv6Types_CODE_NODE_INFORMATION_RESPONSE_SUCCESS E_Icmpv6Types_CODE = 63
	// Icmpv6Types_CODE_NODE_INFORMATION_RESPONSE_UNKNOWN corresponds to the value NODE_INFORMATION_RESPONSE_UNKNOWN of Icmpv6Types_CODE
	Icmpv6Types_CODE_NODE_INFORMATION_RESPONSE_UNKNOWN E_Icmpv6Types_CODE = 64
	// Icmpv6Types_CODE_PACKET_TOO_BIG_CODE corresponds to the value PACKET_TOO_BIG_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_PACKET_TOO_BIG_CODE E_Icmpv6Types_CODE = 65
	// Icmpv6Types_CODE_PACKET_TOO_BIG_NO_CODE corresponds to the value PACKET_TOO_BIG_NO_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_PACKET_TOO_BIG_NO_CODE E_Icmpv6Types_CODE = 66
	// Icmpv6Types_CODE_PARAM_PROBLEM_CODE corresponds to the value PARAM_PROBLEM_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_PARAM_PROBLEM_CODE E_Icmpv6Types_CODE = 67
	// Icmpv6Types_CODE_PARAM_PROBLEM_ERR_HDR_FIELD corresponds to the value PARAM_PROBLEM_ERR_HDR_FIELD of Icmpv6Types_CODE
	Icmpv6Types_CODE_PARAM_PROBLEM_ERR_HDR_FIELD E_Icmpv6Types_CODE = 68
	// Icmpv6Types_CODE_PARAM_PROBLEM_EXT_HDR_CHAIN_TOO_LONG corresponds to the value PARAM_PROBLEM_EXT_HDR_CHAIN_TOO_LONG of Icmpv6Types_CODE
	Icmpv6Types_CODE_PARAM_PROBLEM_EXT_HDR_CHAIN_TOO_LONG E_Icmpv6Types_CODE = 69
	// Icmpv6Types_CODE_PARAM_PROBLEM_EXT_HDR_TOO_BIG corresponds to the value PARAM_PROBLEM_EXT_HDR_TOO_BIG of Icmpv6Types_CODE
	Icmpv6Types_CODE_PARAM_PROBLEM_EXT_HDR_TOO_BIG E_Icmpv6Types_CODE = 70
	// Icmpv6Types_CODE_PARAM_PROBLEM_INCOMPLETE_HDR_CHAIN corresponds to the value PARAM_PROBLEM_INCOMPLETE_HDR_CHAIN of Icmpv6Types_CODE
	Icmpv6Types_CODE_PARAM_PROBLEM_INCOMPLETE_HDR_CHAIN E_Icmpv6Types_CODE = 71
	// Icmpv6Types_CODE_PARAM_PROBLEM_OPT_TOO_BIG corresponds to the value PARAM_PROBLEM_OPT_TOO_BIG of Icmpv6Types_CODE
	Icmpv6Types_CODE_PARAM_PROBLEM_OPT_TOO_BIG E_Icmpv6Types_CODE = 72
	// Icmpv6Types_CODE_PARAM_PROBLEM_SR_UPPER_HDR_ERR corresponds to the value PARAM_PROBLEM_SR_UPPER_HDR_ERR of Icmpv6Types_CODE
	Icmpv6Types_CODE_PARAM_PROBLEM_SR_UPPER_HDR_ERR E_Icmpv6Types_CODE = 73
	// Icmpv6Types_CODE_PARAM_PROBLEM_TOO_MANY_EXT_HDRS corresponds to the value PARAM_PROBLEM_TOO_MANY_EXT_HDRS of Icmpv6Types_CODE
	Icmpv6Types_CODE_PARAM_PROBLEM_TOO_MANY_EXT_HDRS E_Icmpv6Types_CODE = 74
	// Icmpv6Types_CODE_PARAM_PROBLEM_TOO_MANY_OPTS corresponds to the value PARAM_PROBLEM_TOO_MANY_OPTS of Icmpv6Types_CODE
	Icmpv6Types_CODE_PARAM_PROBLEM_TOO_MANY_OPTS E_Icmpv6Types_CODE = 75
	// Icmpv6Types_CODE_PARAM_PROBLEM_UNRECOGNIZED_IPV6_OPT corresponds to the value PARAM_PROBLEM_UNRECOGNIZED_IPV6_OPT of Icmpv6Types_CODE
	Icmpv6Types_CODE_PARAM_PROBLEM_UNRECOGNIZED_IPV6_OPT E_Icmpv6Types_CODE = 76
	// Icmpv6Types_CODE_PARAM_PROBLEM_UNRECOGNIZED_NET_HDR_TYPE corresponds to the value PARAM_PROBLEM_UNRECOGNIZED_NET_HDR_TYPE of Icmpv6Types_CODE
	Icmpv6Types_CODE_PARAM_PROBLEM_UNRECOGNIZED_NET_HDR_TYPE E_Icmpv6Types_CODE = 77
	// Icmpv6Types_CODE_PARAM_PROBLEM_UNRECOGNIZED_NEXT_HDR_TYPE corresponds to the value PARAM_PROBLEM_UNRECOGNIZED_NEXT_HDR_TYPE of Icmpv6Types_CODE
	Icmpv6Types_CODE_PARAM_PROBLEM_UNRECOGNIZED_NEXT_HDR_TYPE E_Icmpv6Types_CODE = 78
	// Icmpv6Types_CODE_REDIRECT_CODE corresponds to the value REDIRECT_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_REDIRECT_CODE E_Icmpv6Types_CODE = 79
	// Icmpv6Types_CODE_REDIRECT_NO_CODE corresponds to the value REDIRECT_NO_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_REDIRECT_NO_CODE E_Icmpv6Types_CODE = 80
	// Icmpv6Types_CODE_RENUMBERING_CODE corresponds to the value RENUMBERING_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_RENUMBERING_CODE E_Icmpv6Types_CODE = 81
	// Icmpv6Types_CODE_RENUMBERING_COMMAND corresponds to the value RENUMBERING_COMMAND of Icmpv6Types_CODE
	Icmpv6Types_CODE_RENUMBERING_COMMAND E_Icmpv6Types_CODE = 82
	// Icmpv6Types_CODE_RENUNBERING_RESULT corresponds to the value RENUNBERING_RESULT of Icmpv6Types_CODE
	Icmpv6Types_CODE_RENUNBERING_RESULT E_Icmpv6Types_CODE = 83
	// Icmpv6Types_CODE_RENUNBERING_SEQ_NUM_RESET corresponds to the value RENUNBERING_SEQ_NUM_RESET of Icmpv6Types_CODE
	Icmpv6Types_CODE_RENUNBERING_SEQ_NUM_RESET E_Icmpv6Types_CODE = 84
	// Icmpv6Types_CODE_ROUTER_ADVERTISEMENT_CODE corresponds to the value ROUTER_ADVERTISEMENT_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_ROUTER_ADVERTISEMENT_CODE E_Icmpv6Types_CODE = 85
	// Icmpv6Types_CODE_ROUTER_ADVERTISEMENT_NO_CODE corresponds to the value ROUTER_ADVERTISEMENT_NO_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_ROUTER_ADVERTISEMENT_NO_CODE E_Icmpv6Types_CODE = 86
	// Icmpv6Types_CODE_ROUTER_SOLICITATION_CODE corresponds to the value ROUTER_SOLICITATION_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_ROUTER_SOLICITATION_CODE E_Icmpv6Types_CODE = 87
	// Icmpv6Types_CODE_ROUTER_SOLICITATION_NO_CODE corresponds to the value ROUTER_SOLICITATION_NO_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_ROUTER_SOLICITATION_NO_CODE E_Icmpv6Types_CODE = 88
	// Icmpv6Types_CODE_TIME_EXCEEDED_CODE corresponds to the value TIME_EXCEEDED_CODE of Icmpv6Types_CODE
	Icmpv6Types_CODE_TIME_EXCEEDED_CODE E_Icmpv6Types_CODE = 89
	// Icmpv6Types_CODE_TIME_EXCEEDED_FRAGMENT_REASSEMBLY corresponds to the value TIME_EXCEEDED_FRAGMENT_REASSEMBLY of Icmpv6Types_CODE
	Icmpv6Types_CODE_TIME_EXCEEDED_FRAGMENT_REASSEMBLY E_Icmpv6Types_CODE = 90
	// Icmpv6Types_CODE_TIME_EXCEEDED_HOP_LIMIT corresponds to the value TIME_EXCEEDED_HOP_LIMIT of Icmpv6Types_CODE
	Icmpv6Types_CODE_TIME_EXCEEDED_HOP_LIMIT E_Icmpv6Types_CODE = 91
)

// E_Icmpv6Types_TYPE is a derived int64 type which is used to represent
// the enumerated node Icmpv6Types_TYPE. An additional value named
// Icmpv6Types_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Icmpv6Types_TYPE int64

// IsYANGGoEnum ensures that Icmpv6Types_TYPE implements the yang.GoEnum
// interface. This ensures that Icmpv6Types_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_Icmpv6Types_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Icmpv6Types_TYPE.
func (E_Icmpv6Types_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Icmpv6Types_TYPE.
func (e E_Icmpv6Types_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Icmpv6Types_TYPE")
}

const (
	// Icmpv6Types_TYPE_UNSET corresponds to the value UNSET of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_UNSET E_Icmpv6Types_TYPE = 0
	// Icmpv6Types_TYPE_CERTIFICATION_PATH_ADVERTISEMENT corresponds to the value CERTIFICATION_PATH_ADVERTISEMENT of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_CERTIFICATION_PATH_ADVERTISEMENT E_Icmpv6Types_TYPE = 1
	// Icmpv6Types_TYPE_CERTIFICATION_PATH_SOLICITATION corresponds to the value CERTIFICATION_PATH_SOLICITATION of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_CERTIFICATION_PATH_SOLICITATION E_Icmpv6Types_TYPE = 2
	// Icmpv6Types_TYPE_DESTINATION_UNREACHABLE corresponds to the value DESTINATION_UNREACHABLE of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_DESTINATION_UNREACHABLE E_Icmpv6Types_TYPE = 3
	// Icmpv6Types_TYPE_DUPLICATE_ADDRESS_CONFIRMATION corresponds to the value DUPLICATE_ADDRESS_CONFIRMATION of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_DUPLICATE_ADDRESS_CONFIRMATION E_Icmpv6Types_TYPE = 4
	// Icmpv6Types_TYPE_DUPLICATE_ADDRESS_REQUEST corresponds to the value DUPLICATE_ADDRESS_REQUEST of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_DUPLICATE_ADDRESS_REQUEST E_Icmpv6Types_TYPE = 5
	// Icmpv6Types_TYPE_ECHO_REPLY corresponds to the value ECHO_REPLY of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_ECHO_REPLY E_Icmpv6Types_TYPE = 6
	// Icmpv6Types_TYPE_ECHO_REQUEST corresponds to the value ECHO_REQUEST of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_ECHO_REQUEST E_Icmpv6Types_TYPE = 7
	// Icmpv6Types_TYPE_EXT_ECHO_REPLY corresponds to the value EXT_ECHO_REPLY of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_EXT_ECHO_REPLY E_Icmpv6Types_TYPE = 8
	// Icmpv6Types_TYPE_EXT_ECHO_REQUEST corresponds to the value EXT_ECHO_REQUEST of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_EXT_ECHO_REQUEST E_Icmpv6Types_TYPE = 9
	// Icmpv6Types_TYPE_FMIPV6 corresponds to the value FMIPV6 of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_FMIPV6 E_Icmpv6Types_TYPE = 10
	// Icmpv6Types_TYPE_HOME_AGENT_ADDRESS_DISCOVERY_REPLY corresponds to the value HOME_AGENT_ADDRESS_DISCOVERY_REPLY of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_HOME_AGENT_ADDRESS_DISCOVERY_REPLY E_Icmpv6Types_TYPE = 11
	// Icmpv6Types_TYPE_HOME_AGENT_ADDRESS_DISCOVERY_REQUEST corresponds to the value HOME_AGENT_ADDRESS_DISCOVERY_REQUEST of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_HOME_AGENT_ADDRESS_DISCOVERY_REQUEST E_Icmpv6Types_TYPE = 12
	// Icmpv6Types_TYPE_ILNPV6_LOCATOR_UPDATE corresponds to the value ILNPV6_LOCATOR_UPDATE of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_ILNPV6_LOCATOR_UPDATE E_Icmpv6Types_TYPE = 13
	// Icmpv6Types_TYPE_INVERSE_NEIGHBOR_ADVERTISEMENT corresponds to the value INVERSE_NEIGHBOR_ADVERTISEMENT of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_INVERSE_NEIGHBOR_ADVERTISEMENT E_Icmpv6Types_TYPE = 14
	// Icmpv6Types_TYPE_INVERSE_NEIGHBOR_SOLICITATION corresponds to the value INVERSE_NEIGHBOR_SOLICITATION of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_INVERSE_NEIGHBOR_SOLICITATION E_Icmpv6Types_TYPE = 15
	// Icmpv6Types_TYPE_MOBILE_PREFIX_ADVERTISEMENT corresponds to the value MOBILE_PREFIX_ADVERTISEMENT of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_MOBILE_PREFIX_ADVERTISEMENT E_Icmpv6Types_TYPE = 16
	// Icmpv6Types_TYPE_MOBILE_PREFIX_SOLICITATION corresponds to the value MOBILE_PREFIX_SOLICITATION of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_MOBILE_PREFIX_SOLICITATION E_Icmpv6Types_TYPE = 17
	// Icmpv6Types_TYPE_MPL_CONTROL corresponds to the value MPL_CONTROL of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_MPL_CONTROL E_Icmpv6Types_TYPE = 18
	// Icmpv6Types_TYPE_MULTICAST_LISTENER_DONE corresponds to the value MULTICAST_LISTENER_DONE of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_MULTICAST_LISTENER_DONE E_Icmpv6Types_TYPE = 19
	// Icmpv6Types_TYPE_MULTICAST_LISTENER_QUERY corresponds to the value MULTICAST_LISTENER_QUERY of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_MULTICAST_LISTENER_QUERY E_Icmpv6Types_TYPE = 20
	// Icmpv6Types_TYPE_MULTICAST_LISTENER_REPORT corresponds to the value MULTICAST_LISTENER_REPORT of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_MULTICAST_LISTENER_REPORT E_Icmpv6Types_TYPE = 21
	// Icmpv6Types_TYPE_MULTICAST_ROUTER_ADVERTISEMENT corresponds to the value MULTICAST_ROUTER_ADVERTISEMENT of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_MULTICAST_ROUTER_ADVERTISEMENT E_Icmpv6Types_TYPE = 22
	// Icmpv6Types_TYPE_MULTICAST_ROUTER_SOLICITATION corresponds to the value MULTICAST_ROUTER_SOLICITATION of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_MULTICAST_ROUTER_SOLICITATION E_Icmpv6Types_TYPE = 23
	// Icmpv6Types_TYPE_MULTICAST_ROUTER_TERMINATION corresponds to the value MULTICAST_ROUTER_TERMINATION of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_MULTICAST_ROUTER_TERMINATION E_Icmpv6Types_TYPE = 24
	// Icmpv6Types_TYPE_NEIGHBOR_ADVERTISEMENT corresponds to the value NEIGHBOR_ADVERTISEMENT of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_NEIGHBOR_ADVERTISEMENT E_Icmpv6Types_TYPE = 25
	// Icmpv6Types_TYPE_NEIGHBOR_SOLICITATION corresponds to the value NEIGHBOR_SOLICITATION of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_NEIGHBOR_SOLICITATION E_Icmpv6Types_TYPE = 26
	// Icmpv6Types_TYPE_NODE_INFORMATION_QUERY corresponds to the value NODE_INFORMATION_QUERY of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_NODE_INFORMATION_QUERY E_Icmpv6Types_TYPE = 27
	// Icmpv6Types_TYPE_NODE_INFORMATION_RESPONSE corresponds to the value NODE_INFORMATION_RESPONSE of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_NODE_INFORMATION_RESPONSE E_Icmpv6Types_TYPE = 28
	// Icmpv6Types_TYPE_PACKET_TOO_BIG corresponds to the value PACKET_TOO_BIG of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_PACKET_TOO_BIG E_Icmpv6Types_TYPE = 29
	// Icmpv6Types_TYPE_PARAMETER_PROBLEM corresponds to the value PARAMETER_PROBLEM of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_PARAMETER_PROBLEM E_Icmpv6Types_TYPE = 30
	// Icmpv6Types_TYPE_REDIRECT corresponds to the value REDIRECT of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_REDIRECT E_Icmpv6Types_TYPE = 31
	// Icmpv6Types_TYPE_RENUNBERING corresponds to the value RENUNBERING of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_RENUNBERING E_Icmpv6Types_TYPE = 32
	// Icmpv6Types_TYPE_ROUTER_ADVERTISEMENT corresponds to the value ROUTER_ADVERTISEMENT of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_ROUTER_ADVERTISEMENT E_Icmpv6Types_TYPE = 33
	// Icmpv6Types_TYPE_ROUTER_SOLICITATION corresponds to the value ROUTER_SOLICITATION of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_ROUTER_SOLICITATION E_Icmpv6Types_TYPE = 34
	// Icmpv6Types_TYPE_RPL_CONTROL corresponds to the value RPL_CONTROL of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_RPL_CONTROL E_Icmpv6Types_TYPE = 35
	// Icmpv6Types_TYPE_TIME_EXCEEDED corresponds to the value TIME_EXCEEDED of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_TIME_EXCEEDED E_Icmpv6Types_TYPE = 36
	// Icmpv6Types_TYPE_VERSION2_MULTICAST_LISTENER corresponds to the value VERSION2_MULTICAST_LISTENER of Icmpv6Types_TYPE
	Icmpv6Types_TYPE_VERSION2_MULTICAST_LISTENER E_Icmpv6Types_TYPE = 37
)

// E_IfAggregate_AggregationType is a derived int64 type which is used to represent
// the enumerated node IfAggregate_AggregationType. An additional value named
// IfAggregate_AggregationType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IfAggregate_AggregationType int64

// IsYANGGoEnum ensures that IfAggregate_AggregationType implements the yang.GoEnum
// interface. This ensures that IfAggregate_AggregationType can be identified as a
// mapped type for a YANG enumeration.
func (E_IfAggregate_AggregationType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IfAggregate_AggregationType.
func (E_IfAggregate_AggregationType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_IfAggregate_AggregationType.
func (e E_IfAggregate_AggregationType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IfAggregate_AggregationType")
}

const (
	// IfAggregate_AggregationType_UNSET corresponds to the value UNSET of IfAggregate_AggregationType
	IfAggregate_AggregationType_UNSET E_IfAggregate_AggregationType = 0
	// IfAggregate_AggregationType_LACP corresponds to the value LACP of IfAggregate_AggregationType
	IfAggregate_AggregationType_LACP E_IfAggregate_AggregationType = 1
	// IfAggregate_AggregationType_STATIC corresponds to the value STATIC of IfAggregate_AggregationType
	IfAggregate_AggregationType_STATIC E_IfAggregate_AggregationType = 2
)

// E_IfEthernet_ETHERNET_SPEED is a derived int64 type which is used to represent
// the enumerated node IfEthernet_ETHERNET_SPEED. An additional value named
// IfEthernet_ETHERNET_SPEED_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IfEthernet_ETHERNET_SPEED int64

// IsYANGGoEnum ensures that IfEthernet_ETHERNET_SPEED implements the yang.GoEnum
// interface. This ensures that IfEthernet_ETHERNET_SPEED can be identified as a
// mapped type for a YANG enumeration.
func (E_IfEthernet_ETHERNET_SPEED) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IfEthernet_ETHERNET_SPEED.
func (E_IfEthernet_ETHERNET_SPEED) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_IfEthernet_ETHERNET_SPEED.
func (e E_IfEthernet_ETHERNET_SPEED) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IfEthernet_ETHERNET_SPEED")
}

const (
	// IfEthernet_ETHERNET_SPEED_UNSET corresponds to the value UNSET of IfEthernet_ETHERNET_SPEED
	IfEthernet_ETHERNET_SPEED_UNSET E_IfEthernet_ETHERNET_SPEED = 0
	// IfEthernet_ETHERNET_SPEED_SPEED_100GB corresponds to the value SPEED_100GB of IfEthernet_ETHERNET_SPEED
	IfEthernet_ETHERNET_SPEED_SPEED_100GB E_IfEthernet_ETHERNET_SPEED = 1
	// IfEthernet_ETHERNET_SPEED_SPEED_100MB corresponds to the value SPEED_100MB of IfEthernet_ETHERNET_SPEED
	IfEthernet_ETHERNET_SPEED_SPEED_100MB E_IfEthernet_ETHERNET_SPEED = 2
	// IfEthernet_ETHERNET_SPEED_SPEED_10GB corresponds to the value SPEED_10GB of IfEthernet_ETHERNET_SPEED
	IfEthernet_ETHERNET_SPEED_SPEED_10GB E_IfEthernet_ETHERNET_SPEED = 3
	// IfEthernet_ETHERNET_SPEED_SPEED_10MB corresponds to the value SPEED_10MB of IfEthernet_ETHERNET_SPEED
	IfEthernet_ETHERNET_SPEED_SPEED_10MB E_IfEthernet_ETHERNET_SPEED = 4
	// IfEthernet_ETHERNET_SPEED_SPEED_1GB corresponds to the value SPEED_1GB of IfEthernet_ETHERNET_SPEED
	IfEthernet_ETHERNET_SPEED_SPEED_1GB E_IfEthernet_ETHERNET_SPEED = 5
	// IfEthernet_ETHERNET_SPEED_SPEED_200GB corresponds to the value SPEED_200GB of IfEthernet_ETHERNET_SPEED
	IfEthernet_ETHERNET_SPEED_SPEED_200GB E_IfEthernet_ETHERNET_SPEED = 6
	// IfEthernet_ETHERNET_SPEED_SPEED_2500MB corresponds to the value SPEED_2500MB of IfEthernet_ETHERNET_SPEED
	IfEthernet_ETHERNET_SPEED_SPEED_2500MB E_IfEthernet_ETHERNET_SPEED = 7
	// IfEthernet_ETHERNET_SPEED_SPEED_25GB corresponds to the value SPEED_25GB of IfEthernet_ETHERNET_SPEED
	IfEthernet_ETHERNET_SPEED_SPEED_25GB E_IfEthernet_ETHERNET_SPEED = 8
	// IfEthernet_ETHERNET_SPEED_SPEED_400GB corresponds to the value SPEED_400GB of IfEthernet_ETHERNET_SPEED
	IfEthernet_ETHERNET_SPEED_SPEED_400GB E_IfEthernet_ETHERNET_SPEED = 9
	// IfEthernet_ETHERNET_SPEED_SPEED_40GB corresponds to the value SPEED_40GB of IfEthernet_ETHERNET_SPEED
	IfEthernet_ETHERNET_SPEED_SPEED_40GB E_IfEthernet_ETHERNET_SPEED = 10
	// IfEthernet_ETHERNET_SPEED_SPEED_50GB corresponds to the value SPEED_50GB of IfEthernet_ETHERNET_SPEED
	IfEthernet_ETHERNET_SPEED_SPEED_50GB E_IfEthernet_ETHERNET_SPEED = 11
	// IfEthernet_ETHERNET_SPEED_SPEED_5GB corresponds to the value SPEED_5GB of IfEthernet_ETHERNET_SPEED
	IfEthernet_ETHERNET_SPEED_SPEED_5GB E_IfEthernet_ETHERNET_SPEED = 12
	// IfEthernet_ETHERNET_SPEED_SPEED_600GB corresponds to the value SPEED_600GB of IfEthernet_ETHERNET_SPEED
	IfEthernet_ETHERNET_SPEED_SPEED_600GB E_IfEthernet_ETHERNET_SPEED = 13
	// IfEthernet_ETHERNET_SPEED_SPEED_800GB corresponds to the value SPEED_800GB of IfEthernet_ETHERNET_SPEED
	IfEthernet_ETHERNET_SPEED_SPEED_800GB E_IfEthernet_ETHERNET_SPEED = 14
	// IfEthernet_ETHERNET_SPEED_SPEED_UNKNOWN corresponds to the value SPEED_UNKNOWN of IfEthernet_ETHERNET_SPEED
	IfEthernet_ETHERNET_SPEED_SPEED_UNKNOWN E_IfEthernet_ETHERNET_SPEED = 15
)

// E_IfEthernet_INTERFACE_FEC is a derived int64 type which is used to represent
// the enumerated node IfEthernet_INTERFACE_FEC. An additional value named
// IfEthernet_INTERFACE_FEC_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IfEthernet_INTERFACE_FEC int64

// IsYANGGoEnum ensures that IfEthernet_INTERFACE_FEC implements the yang.GoEnum
// interface. This ensures that IfEthernet_INTERFACE_FEC can be identified as a
// mapped type for a YANG enumeration.
func (E_IfEthernet_INTERFACE_FEC) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IfEthernet_INTERFACE_FEC.
func (E_IfEthernet_INTERFACE_FEC) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_IfEthernet_INTERFACE_FEC.
func (e E_IfEthernet_INTERFACE_FEC) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IfEthernet_INTERFACE_FEC")
}

const (
	// IfEthernet_INTERFACE_FEC_UNSET corresponds to the value UNSET of IfEthernet_INTERFACE_FEC
	IfEthernet_INTERFACE_FEC_UNSET E_IfEthernet_INTERFACE_FEC = 0
	// IfEthernet_INTERFACE_FEC_FEC_DISABLED corresponds to the value FEC_DISABLED of IfEthernet_INTERFACE_FEC
	IfEthernet_INTERFACE_FEC_FEC_DISABLED E_IfEthernet_INTERFACE_FEC = 1
	// IfEthernet_INTERFACE_FEC_FEC_FC corresponds to the value FEC_FC of IfEthernet_INTERFACE_FEC
	IfEthernet_INTERFACE_FEC_FEC_FC E_IfEthernet_INTERFACE_FEC = 2
	// IfEthernet_INTERFACE_FEC_FEC_RS528 corresponds to the value FEC_RS528 of IfEthernet_INTERFACE_FEC
	IfEthernet_INTERFACE_FEC_FEC_RS528 E_IfEthernet_INTERFACE_FEC = 3
	// IfEthernet_INTERFACE_FEC_FEC_RS544 corresponds to the value FEC_RS544 of IfEthernet_INTERFACE_FEC
	IfEthernet_INTERFACE_FEC_FEC_RS544 E_IfEthernet_INTERFACE_FEC = 4
	// IfEthernet_INTERFACE_FEC_FEC_RS544_2X_INTERLEAVE corresponds to the value FEC_RS544_2X_INTERLEAVE of IfEthernet_INTERFACE_FEC
	IfEthernet_INTERFACE_FEC_FEC_RS544_2X_INTERLEAVE E_IfEthernet_INTERFACE_FEC = 5
)

// E_IfIp_IpAddressOrigin is a derived int64 type which is used to represent
// the enumerated node IfIp_IpAddressOrigin. An additional value named
// IfIp_IpAddressOrigin_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IfIp_IpAddressOrigin int64

// IsYANGGoEnum ensures that IfIp_IpAddressOrigin implements the yang.GoEnum
// interface. This ensures that IfIp_IpAddressOrigin can be identified as a
// mapped type for a YANG enumeration.
func (E_IfIp_IpAddressOrigin) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IfIp_IpAddressOrigin.
func (E_IfIp_IpAddressOrigin) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_IfIp_IpAddressOrigin.
func (e E_IfIp_IpAddressOrigin) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IfIp_IpAddressOrigin")
}

const (
	// IfIp_IpAddressOrigin_UNSET corresponds to the value UNSET of IfIp_IpAddressOrigin
	IfIp_IpAddressOrigin_UNSET E_IfIp_IpAddressOrigin = 0
	// IfIp_IpAddressOrigin_OTHER corresponds to the value OTHER of IfIp_IpAddressOrigin
	IfIp_IpAddressOrigin_OTHER E_IfIp_IpAddressOrigin = 1
	// IfIp_IpAddressOrigin_STATIC corresponds to the value STATIC of IfIp_IpAddressOrigin
	IfIp_IpAddressOrigin_STATIC E_IfIp_IpAddressOrigin = 2
	// IfIp_IpAddressOrigin_DHCP corresponds to the value DHCP of IfIp_IpAddressOrigin
	IfIp_IpAddressOrigin_DHCP E_IfIp_IpAddressOrigin = 3
	// IfIp_IpAddressOrigin_LINK_LAYER corresponds to the value LINK_LAYER of IfIp_IpAddressOrigin
	IfIp_IpAddressOrigin_LINK_LAYER E_IfIp_IpAddressOrigin = 4
	// IfIp_IpAddressOrigin_RANDOM corresponds to the value RANDOM of IfIp_IpAddressOrigin
	IfIp_IpAddressOrigin_RANDOM E_IfIp_IpAddressOrigin = 5
)

// E_IfIp_Ipv4AddressType is a derived int64 type which is used to represent
// the enumerated node IfIp_Ipv4AddressType. An additional value named
// IfIp_Ipv4AddressType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IfIp_Ipv4AddressType int64

// IsYANGGoEnum ensures that IfIp_Ipv4AddressType implements the yang.GoEnum
// interface. This ensures that IfIp_Ipv4AddressType can be identified as a
// mapped type for a YANG enumeration.
func (E_IfIp_Ipv4AddressType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IfIp_Ipv4AddressType.
func (E_IfIp_Ipv4AddressType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_IfIp_Ipv4AddressType.
func (e E_IfIp_Ipv4AddressType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IfIp_Ipv4AddressType")
}

const (
	// IfIp_Ipv4AddressType_UNSET corresponds to the value UNSET of IfIp_Ipv4AddressType
	IfIp_Ipv4AddressType_UNSET E_IfIp_Ipv4AddressType = 0
	// IfIp_Ipv4AddressType_PRIMARY corresponds to the value PRIMARY of IfIp_Ipv4AddressType
	IfIp_Ipv4AddressType_PRIMARY E_IfIp_Ipv4AddressType = 1
	// IfIp_Ipv4AddressType_SECONDARY corresponds to the value SECONDARY of IfIp_Ipv4AddressType
	IfIp_Ipv4AddressType_SECONDARY E_IfIp_Ipv4AddressType = 2
)

// E_IfIp_NeighborOrigin is a derived int64 type which is used to represent
// the enumerated node IfIp_NeighborOrigin. An additional value named
// IfIp_NeighborOrigin_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IfIp_NeighborOrigin int64

// IsYANGGoEnum ensures that IfIp_NeighborOrigin implements the yang.GoEnum
// interface. This ensures that IfIp_NeighborOrigin can be identified as a
// mapped type for a YANG enumeration.
func (E_IfIp_NeighborOrigin) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IfIp_NeighborOrigin.
func (E_IfIp_NeighborOrigin) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_IfIp_NeighborOrigin.
func (e E_IfIp_NeighborOrigin) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IfIp_NeighborOrigin")
}

const (
	// IfIp_NeighborOrigin_UNSET corresponds to the value UNSET of IfIp_NeighborOrigin
	IfIp_NeighborOrigin_UNSET E_IfIp_NeighborOrigin = 0
	// IfIp_NeighborOrigin_OTHER corresponds to the value OTHER of IfIp_NeighborOrigin
	IfIp_NeighborOrigin_OTHER E_IfIp_NeighborOrigin = 1
	// IfIp_NeighborOrigin_STATIC corresponds to the value STATIC of IfIp_NeighborOrigin
	IfIp_NeighborOrigin_STATIC E_IfIp_NeighborOrigin = 2
	// IfIp_NeighborOrigin_DYNAMIC corresponds to the value DYNAMIC of IfIp_NeighborOrigin
	IfIp_NeighborOrigin_DYNAMIC E_IfIp_NeighborOrigin = 3
)

// E_IgpFloodingBandwidth_ThresholdSpecification is a derived int64 type which is used to represent
// the enumerated node IgpFloodingBandwidth_ThresholdSpecification. An additional value named
// IgpFloodingBandwidth_ThresholdSpecification_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IgpFloodingBandwidth_ThresholdSpecification int64

// IsYANGGoEnum ensures that IgpFloodingBandwidth_ThresholdSpecification implements the yang.GoEnum
// interface. This ensures that IgpFloodingBandwidth_ThresholdSpecification can be identified as a
// mapped type for a YANG enumeration.
func (E_IgpFloodingBandwidth_ThresholdSpecification) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IgpFloodingBandwidth_ThresholdSpecification.
func (E_IgpFloodingBandwidth_ThresholdSpecification) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_IgpFloodingBandwidth_ThresholdSpecification.
func (e E_IgpFloodingBandwidth_ThresholdSpecification) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IgpFloodingBandwidth_ThresholdSpecification")
}

const (
	// IgpFloodingBandwidth_ThresholdSpecification_UNSET corresponds to the value UNSET of IgpFloodingBandwidth_ThresholdSpecification
	IgpFloodingBandwidth_ThresholdSpecification_UNSET E_IgpFloodingBandwidth_ThresholdSpecification = 0
	// IgpFloodingBandwidth_ThresholdSpecification_MIRRORED_UP_DOWN corresponds to the value MIRRORED_UP_DOWN of IgpFloodingBandwidth_ThresholdSpecification
	IgpFloodingBandwidth_ThresholdSpecification_MIRRORED_UP_DOWN E_IgpFloodingBandwidth_ThresholdSpecification = 1
	// IgpFloodingBandwidth_ThresholdSpecification_SEPARATE_UP_DOWN corresponds to the value SEPARATE_UP_DOWN of IgpFloodingBandwidth_ThresholdSpecification
	IgpFloodingBandwidth_ThresholdSpecification_SEPARATE_UP_DOWN E_IgpFloodingBandwidth_ThresholdSpecification = 2
)

// E_IgpFloodingBandwidth_ThresholdType is a derived int64 type which is used to represent
// the enumerated node IgpFloodingBandwidth_ThresholdType. An additional value named
// IgpFloodingBandwidth_ThresholdType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IgpFloodingBandwidth_ThresholdType int64

// IsYANGGoEnum ensures that IgpFloodingBandwidth_ThresholdType implements the yang.GoEnum
// interface. This ensures that IgpFloodingBandwidth_ThresholdType can be identified as a
// mapped type for a YANG enumeration.
func (E_IgpFloodingBandwidth_ThresholdType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IgpFloodingBandwidth_ThresholdType.
func (E_IgpFloodingBandwidth_ThresholdType) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_IgpFloodingBandwidth_ThresholdType.
func (e E_IgpFloodingBandwidth_ThresholdType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IgpFloodingBandwidth_ThresholdType")
}

const (
	// IgpFloodingBandwidth_ThresholdType_UNSET corresponds to the value UNSET of IgpFloodingBandwidth_ThresholdType
	IgpFloodingBandwidth_ThresholdType_UNSET E_IgpFloodingBandwidth_ThresholdType = 0
	// IgpFloodingBandwidth_ThresholdType_DELTA corresponds to the value DELTA of IgpFloodingBandwidth_ThresholdType
	IgpFloodingBandwidth_ThresholdType_DELTA E_IgpFloodingBandwidth_ThresholdType = 1
	// IgpFloodingBandwidth_ThresholdType_THRESHOLD_CROSSED corresponds to the value THRESHOLD_CROSSED of IgpFloodingBandwidth_ThresholdType
	IgpFloodingBandwidth_ThresholdType_THRESHOLD_CROSSED E_IgpFloodingBandwidth_ThresholdType = 2
)

// E_ImportExportPolicy_ExportRouteTarget_Enum is a derived int64 type which is used to represent
// the enumerated node ImportExportPolicy_ExportRouteTarget_Enum. An additional value named
// ImportExportPolicy_ExportRouteTarget_Enum_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_ImportExportPolicy_ExportRouteTarget_Enum int64

// IsYANGGoEnum ensures that ImportExportPolicy_ExportRouteTarget_Enum implements the yang.GoEnum
// interface. This ensures that ImportExportPolicy_ExportRouteTarget_Enum can be identified as a
// mapped type for a YANG enumeration.
func (E_ImportExportPolicy_ExportRouteTarget_Enum) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  ImportExportPolicy_ExportRouteTarget_Enum.
func (E_ImportExportPolicy_ExportRouteTarget_Enum) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_ImportExportPolicy_ExportRouteTarget_Enum.
func (e E_ImportExportPolicy_ExportRouteTarget_Enum) String() string {
	return ygot.EnumLogString(e, int64(e), "E_ImportExportPolicy_ExportRouteTarget_Enum")
}

const (
	// ImportExportPolicy_ExportRouteTarget_Enum_UNSET corresponds to the value UNSET of ImportExportPolicy_ExportRouteTarget_Enum
	ImportExportPolicy_ExportRouteTarget_Enum_UNSET E_ImportExportPolicy_ExportRouteTarget_Enum = 0
	// ImportExportPolicy_ExportRouteTarget_Enum_AUTO corresponds to the value AUTO of ImportExportPolicy_ExportRouteTarget_Enum
	ImportExportPolicy_ExportRouteTarget_Enum_AUTO E_ImportExportPolicy_ExportRouteTarget_Enum = 1
)

// E_ImportExportPolicy_ImportRouteTarget_Enum is a derived int64 type which is used to represent
// the enumerated node ImportExportPolicy_ImportRouteTarget_Enum. An additional value named
// ImportExportPolicy_ImportRouteTarget_Enum_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_ImportExportPolicy_ImportRouteTarget_Enum int64

// IsYANGGoEnum ensures that ImportExportPolicy_ImportRouteTarget_Enum implements the yang.GoEnum
// interface. This ensures that ImportExportPolicy_ImportRouteTarget_Enum can be identified as a
// mapped type for a YANG enumeration.
func (E_ImportExportPolicy_ImportRouteTarget_Enum) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  ImportExportPolicy_ImportRouteTarget_Enum.
func (E_ImportExportPolicy_ImportRouteTarget_Enum) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_ImportExportPolicy_ImportRouteTarget_Enum.
func (e E_ImportExportPolicy_ImportRouteTarget_Enum) String() string {
	return ygot.EnumLogString(e, int64(e), "E_ImportExportPolicy_ImportRouteTarget_Enum")
}

const (
	// ImportExportPolicy_ImportRouteTarget_Enum_UNSET corresponds to the value UNSET of ImportExportPolicy_ImportRouteTarget_Enum
	ImportExportPolicy_ImportRouteTarget_Enum_UNSET E_ImportExportPolicy_ImportRouteTarget_Enum = 0
	// ImportExportPolicy_ImportRouteTarget_Enum_AUTO corresponds to the value AUTO of ImportExportPolicy_ImportRouteTarget_Enum
	ImportExportPolicy_ImportRouteTarget_Enum_AUTO E_ImportExportPolicy_ImportRouteTarget_Enum = 1
)

// E_InetTypes_Ipv6AddressType is a derived int64 type which is used to represent
// the enumerated node InetTypes_Ipv6AddressType. An additional value named
// InetTypes_Ipv6AddressType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_InetTypes_Ipv6AddressType int64

// IsYANGGoEnum ensures that InetTypes_Ipv6AddressType implements the yang.GoEnum
// interface. This ensures that InetTypes_Ipv6AddressType can be identified as a
// mapped type for a YANG enumeration.
func (E_InetTypes_Ipv6AddressType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  InetTypes_Ipv6AddressType.
func (E_InetTypes_Ipv6AddressType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_InetTypes_Ipv6AddressType.
func (e E_InetTypes_Ipv6AddressType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_InetTypes_Ipv6AddressType")
}

const (
	// InetTypes_Ipv6AddressType_UNSET corresponds to the value UNSET of InetTypes_Ipv6AddressType
	InetTypes_Ipv6AddressType_UNSET E_InetTypes_Ipv6AddressType = 0
	// InetTypes_Ipv6AddressType_GLOBAL_UNICAST corresponds to the value GLOBAL_UNICAST of InetTypes_Ipv6AddressType
	InetTypes_Ipv6AddressType_GLOBAL_UNICAST E_InetTypes_Ipv6AddressType = 1
	// InetTypes_Ipv6AddressType_LINK_LOCAL_UNICAST corresponds to the value LINK_LOCAL_UNICAST of InetTypes_Ipv6AddressType
	InetTypes_Ipv6AddressType_LINK_LOCAL_UNICAST E_InetTypes_Ipv6AddressType = 2
)

// E_Interface_AdminStatus is a derived int64 type which is used to represent
// the enumerated node Interface_AdminStatus. An additional value named
// Interface_AdminStatus_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Interface_AdminStatus int64

// IsYANGGoEnum ensures that Interface_AdminStatus implements the yang.GoEnum
// interface. This ensures that Interface_AdminStatus can be identified as a
// mapped type for a YANG enumeration.
func (E_Interface_AdminStatus) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Interface_AdminStatus.
func (E_Interface_AdminStatus) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Interface_AdminStatus.
func (e E_Interface_AdminStatus) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Interface_AdminStatus")
}

const (
	// Interface_AdminStatus_UNSET corresponds to the value UNSET of Interface_AdminStatus
	Interface_AdminStatus_UNSET E_Interface_AdminStatus = 0
	// Interface_AdminStatus_UP corresponds to the value UP of Interface_AdminStatus
	Interface_AdminStatus_UP E_Interface_AdminStatus = 1
	// Interface_AdminStatus_DOWN corresponds to the value DOWN of Interface_AdminStatus
	Interface_AdminStatus_DOWN E_Interface_AdminStatus = 2
	// Interface_AdminStatus_TESTING corresponds to the value TESTING of Interface_AdminStatus
	Interface_AdminStatus_TESTING E_Interface_AdminStatus = 3
)

// E_Interface_IrbAnycastGateway is a derived int64 type which is used to represent
// the enumerated node Interface_IrbAnycastGateway. An additional value named
// Interface_IrbAnycastGateway_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Interface_IrbAnycastGateway int64

// IsYANGGoEnum ensures that Interface_IrbAnycastGateway implements the yang.GoEnum
// interface. This ensures that Interface_IrbAnycastGateway can be identified as a
// mapped type for a YANG enumeration.
func (E_Interface_IrbAnycastGateway) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Interface_IrbAnycastGateway.
func (E_Interface_IrbAnycastGateway) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Interface_IrbAnycastGateway.
func (e E_Interface_IrbAnycastGateway) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Interface_IrbAnycastGateway")
}

const (
	// Interface_IrbAnycastGateway_UNSET corresponds to the value UNSET of Interface_IrbAnycastGateway
	Interface_IrbAnycastGateway_UNSET E_Interface_IrbAnycastGateway = 0
	// Interface_IrbAnycastGateway_DISTRIBUTED_SYMETRIC corresponds to the value DISTRIBUTED_SYMETRIC of Interface_IrbAnycastGateway
	Interface_IrbAnycastGateway_DISTRIBUTED_SYMETRIC E_Interface_IrbAnycastGateway = 1
	// Interface_IrbAnycastGateway_DISTRIBUTED_ASYMETRIC corresponds to the value DISTRIBUTED_ASYMETRIC of Interface_IrbAnycastGateway
	Interface_IrbAnycastGateway_DISTRIBUTED_ASYMETRIC E_Interface_IrbAnycastGateway = 2
	// Interface_IrbAnycastGateway_HYBRID corresponds to the value HYBRID of Interface_IrbAnycastGateway
	Interface_IrbAnycastGateway_HYBRID E_Interface_IrbAnycastGateway = 3
	// Interface_IrbAnycastGateway_CENTRALIZED corresponds to the value CENTRALIZED of Interface_IrbAnycastGateway
	Interface_IrbAnycastGateway_CENTRALIZED E_Interface_IrbAnycastGateway = 4
)

// E_Interface_OperStatus is a derived int64 type which is used to represent
// the enumerated node Interface_OperStatus. An additional value named
// Interface_OperStatus_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Interface_OperStatus int64

// IsYANGGoEnum ensures that Interface_OperStatus implements the yang.GoEnum
// interface. This ensures that Interface_OperStatus can be identified as a
// mapped type for a YANG enumeration.
func (E_Interface_OperStatus) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Interface_OperStatus.
func (E_Interface_OperStatus) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Interface_OperStatus.
func (e E_Interface_OperStatus) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Interface_OperStatus")
}

const (
	// Interface_OperStatus_UNSET corresponds to the value UNSET of Interface_OperStatus
	Interface_OperStatus_UNSET E_Interface_OperStatus = 0
	// Interface_OperStatus_UP corresponds to the value UP of Interface_OperStatus
	Interface_OperStatus_UP E_Interface_OperStatus = 2
	// Interface_OperStatus_DOWN corresponds to the value DOWN of Interface_OperStatus
	Interface_OperStatus_DOWN E_Interface_OperStatus = 3
	// Interface_OperStatus_TESTING corresponds to the value TESTING of Interface_OperStatus
	Interface_OperStatus_TESTING E_Interface_OperStatus = 4
	// Interface_OperStatus_UNKNOWN corresponds to the value UNKNOWN of Interface_OperStatus
	Interface_OperStatus_UNKNOWN E_Interface_OperStatus = 5
	// Interface_OperStatus_DORMANT corresponds to the value DORMANT of Interface_OperStatus
	Interface_OperStatus_DORMANT E_Interface_OperStatus = 6
	// Interface_OperStatus_NOT_PRESENT corresponds to the value NOT_PRESENT of Interface_OperStatus
	Interface_OperStatus_NOT_PRESENT E_Interface_OperStatus = 7
	// Interface_OperStatus_LOWER_LAYER_DOWN corresponds to the value LOWER_LAYER_DOWN of Interface_OperStatus
	Interface_OperStatus_LOWER_LAYER_DOWN E_Interface_OperStatus = 8
)

// E_Ipv4Srlg_Flags is a derived int64 type which is used to represent
// the enumerated node Ipv4Srlg_Flags. An additional value named
// Ipv4Srlg_Flags_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Ipv4Srlg_Flags int64

// IsYANGGoEnum ensures that Ipv4Srlg_Flags implements the yang.GoEnum
// interface. This ensures that Ipv4Srlg_Flags can be identified as a
// mapped type for a YANG enumeration.
func (E_Ipv4Srlg_Flags) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Ipv4Srlg_Flags.
func (E_Ipv4Srlg_Flags) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Ipv4Srlg_Flags.
func (e E_Ipv4Srlg_Flags) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Ipv4Srlg_Flags")
}

const (
	// Ipv4Srlg_Flags_UNSET corresponds to the value UNSET of Ipv4Srlg_Flags
	Ipv4Srlg_Flags_UNSET E_Ipv4Srlg_Flags = 0
	// Ipv4Srlg_Flags_NUMBERED corresponds to the value NUMBERED of Ipv4Srlg_Flags
	Ipv4Srlg_Flags_NUMBERED E_Ipv4Srlg_Flags = 1
)

// E_Ipv6Srlg_Flags is a derived int64 type which is used to represent
// the enumerated node Ipv6Srlg_Flags. An additional value named
// Ipv6Srlg_Flags_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Ipv6Srlg_Flags int64

// IsYANGGoEnum ensures that Ipv6Srlg_Flags implements the yang.GoEnum
// interface. This ensures that Ipv6Srlg_Flags can be identified as a
// mapped type for a YANG enumeration.
func (E_Ipv6Srlg_Flags) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Ipv6Srlg_Flags.
func (E_Ipv6Srlg_Flags) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Ipv6Srlg_Flags.
func (e E_Ipv6Srlg_Flags) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Ipv6Srlg_Flags")
}

const (
	// Ipv6Srlg_Flags_UNSET corresponds to the value UNSET of Ipv6Srlg_Flags
	Ipv6Srlg_Flags_UNSET E_Ipv6Srlg_Flags = 0
	// Ipv6Srlg_Flags_NA corresponds to the value NA of Ipv6Srlg_Flags
	Ipv6Srlg_Flags_NA E_Ipv6Srlg_Flags = 1
)

// E_IsisLsdbTypes_ISIS_SUBTLV_TYPE is a derived int64 type which is used to represent
// the enumerated node IsisLsdbTypes_ISIS_SUBTLV_TYPE. An additional value named
// IsisLsdbTypes_ISIS_SUBTLV_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IsisLsdbTypes_ISIS_SUBTLV_TYPE int64

// IsYANGGoEnum ensures that IsisLsdbTypes_ISIS_SUBTLV_TYPE implements the yang.GoEnum
// interface. This ensures that IsisLsdbTypes_ISIS_SUBTLV_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IsisLsdbTypes_ISIS_SUBTLV_TYPE.
func (E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_IsisLsdbTypes_ISIS_SUBTLV_TYPE.
func (e E_IsisLsdbTypes_ISIS_SUBTLV_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IsisLsdbTypes_ISIS_SUBTLV_TYPE")
}

const (
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_UNSET corresponds to the value UNSET of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_UNSET E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 0
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IP_REACHABILITY_IPV4_ROUTER_ID corresponds to the value IP_REACHABILITY_IPV4_ROUTER_ID of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IP_REACHABILITY_IPV4_ROUTER_ID E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 1
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IP_REACHABILITY_IPV6_ROUTER_ID corresponds to the value IP_REACHABILITY_IPV6_ROUTER_ID of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IP_REACHABILITY_IPV6_ROUTER_ID E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 2
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IP_REACHABILITY_PREFIX_FLAGS corresponds to the value IP_REACHABILITY_PREFIX_FLAGS of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IP_REACHABILITY_PREFIX_FLAGS E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 3
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IP_REACHABILITY_PREFIX_SID corresponds to the value IP_REACHABILITY_PREFIX_SID of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IP_REACHABILITY_PREFIX_SID E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 4
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IP_REACHABILITY_SUBTLVS_TYPE corresponds to the value IP_REACHABILITY_SUBTLVS_TYPE of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IP_REACHABILITY_SUBTLVS_TYPE E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 5
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IP_REACHABILITY_TAG corresponds to the value IP_REACHABILITY_TAG of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IP_REACHABILITY_TAG E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 6
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IP_REACHABILITY_TAG64 corresponds to the value IP_REACHABILITY_TAG64 of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IP_REACHABILITY_TAG64 E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 7
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_ADJ_LAN_SID corresponds to the value IS_REACHABILITY_ADJ_LAN_SID of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_ADJ_LAN_SID E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 8
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_ADJ_SID corresponds to the value IS_REACHABILITY_ADJ_SID of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_ADJ_SID E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 9
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_ADMIN_GROUP corresponds to the value IS_REACHABILITY_ADMIN_GROUP of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_ADMIN_GROUP E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 10
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_AVAILABLE_BANDWIDTH corresponds to the value IS_REACHABILITY_AVAILABLE_BANDWIDTH of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_AVAILABLE_BANDWIDTH E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 11
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_BANDWIDTH_CONSTRAINTS corresponds to the value IS_REACHABILITY_BANDWIDTH_CONSTRAINTS of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_BANDWIDTH_CONSTRAINTS E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 12
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_EXTENDED_ADMIN_GROUP corresponds to the value IS_REACHABILITY_EXTENDED_ADMIN_GROUP of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_EXTENDED_ADMIN_GROUP E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 13
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_IPV4_INTERFACE_ADDRESS corresponds to the value IS_REACHABILITY_IPV4_INTERFACE_ADDRESS of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_IPV4_INTERFACE_ADDRESS E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 14
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_IPV4_NEIGHBOR_ADDRESS corresponds to the value IS_REACHABILITY_IPV4_NEIGHBOR_ADDRESS of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_IPV4_NEIGHBOR_ADDRESS E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 15
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_IPV6_INTERFACE_ADDRESS corresponds to the value IS_REACHABILITY_IPV6_INTERFACE_ADDRESS of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_IPV6_INTERFACE_ADDRESS E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 16
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_IPV6_NEIGHBOR_ADDRESS corresponds to the value IS_REACHABILITY_IPV6_NEIGHBOR_ADDRESS of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_IPV6_NEIGHBOR_ADDRESS E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 17
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_LINK_ATTRIBUTES corresponds to the value IS_REACHABILITY_LINK_ATTRIBUTES of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_LINK_ATTRIBUTES E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 18
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_LINK_DELAY corresponds to the value IS_REACHABILITY_LINK_DELAY of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_LINK_DELAY E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 19
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_LINK_DELAY_VARIATION corresponds to the value IS_REACHABILITY_LINK_DELAY_VARIATION of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_LINK_DELAY_VARIATION E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 20
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_LINK_ID corresponds to the value IS_REACHABILITY_LINK_ID of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_LINK_ID E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 21
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_LINK_LOSS corresponds to the value IS_REACHABILITY_LINK_LOSS of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_LINK_LOSS E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 22
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_LINK_PROTECTION_TYPE corresponds to the value IS_REACHABILITY_LINK_PROTECTION_TYPE of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_LINK_PROTECTION_TYPE E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 23
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_MAX_LINK_BANDWIDTH corresponds to the value IS_REACHABILITY_MAX_LINK_BANDWIDTH of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_MAX_LINK_BANDWIDTH E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 24
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_MAX_RESERVABLE_BANDWIDTH corresponds to the value IS_REACHABILITY_MAX_RESERVABLE_BANDWIDTH of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_MAX_RESERVABLE_BANDWIDTH E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 25
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_MIN_MAX_LINK_DELAY corresponds to the value IS_REACHABILITY_MIN_MAX_LINK_DELAY of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_MIN_MAX_LINK_DELAY E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 26
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_RESIDUAL_BANDWIDTH corresponds to the value IS_REACHABILITY_RESIDUAL_BANDWIDTH of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_RESIDUAL_BANDWIDTH E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 27
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_SUBTLVS_TYPE corresponds to the value IS_REACHABILITY_SUBTLVS_TYPE of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_SUBTLVS_TYPE E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 28
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_TE_DEFAULT_METRIC corresponds to the value IS_REACHABILITY_TE_DEFAULT_METRIC of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_TE_DEFAULT_METRIC E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 29
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_UNCONSTRAINED_LSP corresponds to the value IS_REACHABILITY_UNCONSTRAINED_LSP of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_UNCONSTRAINED_LSP E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 30
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_UNRESERVED_BANDWIDTH corresponds to the value IS_REACHABILITY_UNRESERVED_BANDWIDTH of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_UNRESERVED_BANDWIDTH E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 31
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_UTILIZED_BANDWIDTH corresponds to the value IS_REACHABILITY_UTILIZED_BANDWIDTH of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_IS_REACHABILITY_UTILIZED_BANDWIDTH E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 32
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_ROUTER_CAPABILITY_SR_ALGORITHM corresponds to the value ROUTER_CAPABILITY_SR_ALGORITHM of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_ROUTER_CAPABILITY_SR_ALGORITHM E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 33
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_ROUTER_CAPABILITY_SR_CAPABILITY corresponds to the value ROUTER_CAPABILITY_SR_CAPABILITY of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_ROUTER_CAPABILITY_SR_CAPABILITY E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 34
	// IsisLsdbTypes_ISIS_SUBTLV_TYPE_ROUTER_CAPABILITY_SUBTLVS_TYPE corresponds to the value ROUTER_CAPABILITY_SUBTLVS_TYPE of IsisLsdbTypes_ISIS_SUBTLV_TYPE
	IsisLsdbTypes_ISIS_SUBTLV_TYPE_ROUTER_CAPABILITY_SUBTLVS_TYPE E_IsisLsdbTypes_ISIS_SUBTLV_TYPE = 35
)

// E_IsisLsdbTypes_ISIS_TLV_TYPE is a derived int64 type which is used to represent
// the enumerated node IsisLsdbTypes_ISIS_TLV_TYPE. An additional value named
// IsisLsdbTypes_ISIS_TLV_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IsisLsdbTypes_ISIS_TLV_TYPE int64

// IsYANGGoEnum ensures that IsisLsdbTypes_ISIS_TLV_TYPE implements the yang.GoEnum
// interface. This ensures that IsisLsdbTypes_ISIS_TLV_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_IsisLsdbTypes_ISIS_TLV_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IsisLsdbTypes_ISIS_TLV_TYPE.
func (E_IsisLsdbTypes_ISIS_TLV_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_IsisLsdbTypes_ISIS_TLV_TYPE.
func (e E_IsisLsdbTypes_ISIS_TLV_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IsisLsdbTypes_ISIS_TLV_TYPE")
}

const (
	// IsisLsdbTypes_ISIS_TLV_TYPE_UNSET corresponds to the value UNSET of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_UNSET E_IsisLsdbTypes_ISIS_TLV_TYPE = 0
	// IsisLsdbTypes_ISIS_TLV_TYPE_AREA_ADDRESSES corresponds to the value AREA_ADDRESSES of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_AREA_ADDRESSES E_IsisLsdbTypes_ISIS_TLV_TYPE = 1
	// IsisLsdbTypes_ISIS_TLV_TYPE_AUTHENTICATION corresponds to the value AUTHENTICATION of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_AUTHENTICATION E_IsisLsdbTypes_ISIS_TLV_TYPE = 2
	// IsisLsdbTypes_ISIS_TLV_TYPE_DYNAMIC_NAME corresponds to the value DYNAMIC_NAME of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_DYNAMIC_NAME E_IsisLsdbTypes_ISIS_TLV_TYPE = 3
	// IsisLsdbTypes_ISIS_TLV_TYPE_EXTENDED_IPV4_REACHABILITY corresponds to the value EXTENDED_IPV4_REACHABILITY of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_EXTENDED_IPV4_REACHABILITY E_IsisLsdbTypes_ISIS_TLV_TYPE = 4
	// IsisLsdbTypes_ISIS_TLV_TYPE_EXTENDED_IS_REACHABILITY corresponds to the value EXTENDED_IS_REACHABILITY of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_EXTENDED_IS_REACHABILITY E_IsisLsdbTypes_ISIS_TLV_TYPE = 5
	// IsisLsdbTypes_ISIS_TLV_TYPE_IIS_NEIGHBORS corresponds to the value IIS_NEIGHBORS of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_IIS_NEIGHBORS E_IsisLsdbTypes_ISIS_TLV_TYPE = 6
	// IsisLsdbTypes_ISIS_TLV_TYPE_INSTANCE_ID corresponds to the value INSTANCE_ID of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_INSTANCE_ID E_IsisLsdbTypes_ISIS_TLV_TYPE = 7
	// IsisLsdbTypes_ISIS_TLV_TYPE_IPV4_EXTERNAL_REACHABILITY corresponds to the value IPV4_EXTERNAL_REACHABILITY of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_IPV4_EXTERNAL_REACHABILITY E_IsisLsdbTypes_ISIS_TLV_TYPE = 8
	// IsisLsdbTypes_ISIS_TLV_TYPE_IPV4_INTERFACE_ADDRESSES corresponds to the value IPV4_INTERFACE_ADDRESSES of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_IPV4_INTERFACE_ADDRESSES E_IsisLsdbTypes_ISIS_TLV_TYPE = 9
	// IsisLsdbTypes_ISIS_TLV_TYPE_IPV4_INTERNAL_REACHABILITY corresponds to the value IPV4_INTERNAL_REACHABILITY of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_IPV4_INTERNAL_REACHABILITY E_IsisLsdbTypes_ISIS_TLV_TYPE = 10
	// IsisLsdbTypes_ISIS_TLV_TYPE_IPV4_SRLG corresponds to the value IPV4_SRLG of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_IPV4_SRLG E_IsisLsdbTypes_ISIS_TLV_TYPE = 11
	// IsisLsdbTypes_ISIS_TLV_TYPE_IPV4_TE_ROUTER_ID corresponds to the value IPV4_TE_ROUTER_ID of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_IPV4_TE_ROUTER_ID E_IsisLsdbTypes_ISIS_TLV_TYPE = 12
	// IsisLsdbTypes_ISIS_TLV_TYPE_IPV6_INTERFACE_ADDRESSES corresponds to the value IPV6_INTERFACE_ADDRESSES of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_IPV6_INTERFACE_ADDRESSES E_IsisLsdbTypes_ISIS_TLV_TYPE = 13
	// IsisLsdbTypes_ISIS_TLV_TYPE_IPV6_REACHABILITY corresponds to the value IPV6_REACHABILITY of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_IPV6_REACHABILITY E_IsisLsdbTypes_ISIS_TLV_TYPE = 14
	// IsisLsdbTypes_ISIS_TLV_TYPE_IPV6_SRLG corresponds to the value IPV6_SRLG of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_IPV6_SRLG E_IsisLsdbTypes_ISIS_TLV_TYPE = 15
	// IsisLsdbTypes_ISIS_TLV_TYPE_IPV6_TE_ROUTER_ID corresponds to the value IPV6_TE_ROUTER_ID of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_IPV6_TE_ROUTER_ID E_IsisLsdbTypes_ISIS_TLV_TYPE = 16
	// IsisLsdbTypes_ISIS_TLV_TYPE_ISIS_ALIAS_ID corresponds to the value ISIS_ALIAS_ID of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_ISIS_ALIAS_ID E_IsisLsdbTypes_ISIS_TLV_TYPE = 17
	// IsisLsdbTypes_ISIS_TLV_TYPE_IS_NEIGHBOR_ATTRIBUTE corresponds to the value IS_NEIGHBOR_ATTRIBUTE of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_IS_NEIGHBOR_ATTRIBUTE E_IsisLsdbTypes_ISIS_TLV_TYPE = 18
	// IsisLsdbTypes_ISIS_TLV_TYPE_LSP_BUFFER_SIZE corresponds to the value LSP_BUFFER_SIZE of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_LSP_BUFFER_SIZE E_IsisLsdbTypes_ISIS_TLV_TYPE = 19
	// IsisLsdbTypes_ISIS_TLV_TYPE_MT_IPV4_REACHABILITY corresponds to the value MT_IPV4_REACHABILITY of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_MT_IPV4_REACHABILITY E_IsisLsdbTypes_ISIS_TLV_TYPE = 20
	// IsisLsdbTypes_ISIS_TLV_TYPE_MT_IPV6_REACHABILITY corresponds to the value MT_IPV6_REACHABILITY of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_MT_IPV6_REACHABILITY E_IsisLsdbTypes_ISIS_TLV_TYPE = 21
	// IsisLsdbTypes_ISIS_TLV_TYPE_MT_ISN corresponds to the value MT_ISN of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_MT_ISN E_IsisLsdbTypes_ISIS_TLV_TYPE = 22
	// IsisLsdbTypes_ISIS_TLV_TYPE_MT_IS_NEIGHBOR_ATTRIBUTE corresponds to the value MT_IS_NEIGHBOR_ATTRIBUTE of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_MT_IS_NEIGHBOR_ATTRIBUTE E_IsisLsdbTypes_ISIS_TLV_TYPE = 23
	// IsisLsdbTypes_ISIS_TLV_TYPE_MULTI_TOPOLOGY corresponds to the value MULTI_TOPOLOGY of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_MULTI_TOPOLOGY E_IsisLsdbTypes_ISIS_TLV_TYPE = 24
	// IsisLsdbTypes_ISIS_TLV_TYPE_NLPID corresponds to the value NLPID of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_NLPID E_IsisLsdbTypes_ISIS_TLV_TYPE = 25
	// IsisLsdbTypes_ISIS_TLV_TYPE_PURGE_OI corresponds to the value PURGE_OI of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_PURGE_OI E_IsisLsdbTypes_ISIS_TLV_TYPE = 26
	// IsisLsdbTypes_ISIS_TLV_TYPE_ROUTER_CAPABILITY corresponds to the value ROUTER_CAPABILITY of IsisLsdbTypes_ISIS_TLV_TYPE
	IsisLsdbTypes_ISIS_TLV_TYPE_ROUTER_CAPABILITY E_IsisLsdbTypes_ISIS_TLV_TYPE = 27
)

// E_IsisTypes_AFI_SAFI_TYPE is a derived int64 type which is used to represent
// the enumerated node IsisTypes_AFI_SAFI_TYPE. An additional value named
// IsisTypes_AFI_SAFI_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IsisTypes_AFI_SAFI_TYPE int64

// IsYANGGoEnum ensures that IsisTypes_AFI_SAFI_TYPE implements the yang.GoEnum
// interface. This ensures that IsisTypes_AFI_SAFI_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_IsisTypes_AFI_SAFI_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IsisTypes_AFI_SAFI_TYPE.
func (E_IsisTypes_AFI_SAFI_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_IsisTypes_AFI_SAFI_TYPE.
func (e E_IsisTypes_AFI_SAFI_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IsisTypes_AFI_SAFI_TYPE")
}

const (
	// IsisTypes_AFI_SAFI_TYPE_UNSET corresponds to the value UNSET of IsisTypes_AFI_SAFI_TYPE
	IsisTypes_AFI_SAFI_TYPE_UNSET E_IsisTypes_AFI_SAFI_TYPE = 0
	// IsisTypes_AFI_SAFI_TYPE_IPV4_MULTICAST corresponds to the value IPV4_MULTICAST of IsisTypes_AFI_SAFI_TYPE
	IsisTypes_AFI_SAFI_TYPE_IPV4_MULTICAST E_IsisTypes_AFI_SAFI_TYPE = 1
	// IsisTypes_AFI_SAFI_TYPE_IPV4_UNICAST corresponds to the value IPV4_UNICAST of IsisTypes_AFI_SAFI_TYPE
	IsisTypes_AFI_SAFI_TYPE_IPV4_UNICAST E_IsisTypes_AFI_SAFI_TYPE = 2
	// IsisTypes_AFI_SAFI_TYPE_IPV6_MULTICAST corresponds to the value IPV6_MULTICAST of IsisTypes_AFI_SAFI_TYPE
	IsisTypes_AFI_SAFI_TYPE_IPV6_MULTICAST E_IsisTypes_AFI_SAFI_TYPE = 3
	// IsisTypes_AFI_SAFI_TYPE_IPV6_UNICAST corresponds to the value IPV6_UNICAST of IsisTypes_AFI_SAFI_TYPE
	IsisTypes_AFI_SAFI_TYPE_IPV6_UNICAST E_IsisTypes_AFI_SAFI_TYPE = 4
)

// E_IsisTypes_AFI_TYPE is a derived int64 type which is used to represent
// the enumerated node IsisTypes_AFI_TYPE. An additional value named
// IsisTypes_AFI_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IsisTypes_AFI_TYPE int64

// IsYANGGoEnum ensures that IsisTypes_AFI_TYPE implements the yang.GoEnum
// interface. This ensures that IsisTypes_AFI_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_IsisTypes_AFI_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IsisTypes_AFI_TYPE.
func (E_IsisTypes_AFI_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_IsisTypes_AFI_TYPE.
func (e E_IsisTypes_AFI_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IsisTypes_AFI_TYPE")
}

const (
	// IsisTypes_AFI_TYPE_UNSET corresponds to the value UNSET of IsisTypes_AFI_TYPE
	IsisTypes_AFI_TYPE_UNSET E_IsisTypes_AFI_TYPE = 0
	// IsisTypes_AFI_TYPE_IPV4 corresponds to the value IPV4 of IsisTypes_AFI_TYPE
	IsisTypes_AFI_TYPE_IPV4 E_IsisTypes_AFI_TYPE = 1
	// IsisTypes_AFI_TYPE_IPV6 corresponds to the value IPV6 of IsisTypes_AFI_TYPE
	IsisTypes_AFI_TYPE_IPV6 E_IsisTypes_AFI_TYPE = 2
)

// E_IsisTypes_AUTH_MODE is a derived int64 type which is used to represent
// the enumerated node IsisTypes_AUTH_MODE. An additional value named
// IsisTypes_AUTH_MODE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IsisTypes_AUTH_MODE int64

// IsYANGGoEnum ensures that IsisTypes_AUTH_MODE implements the yang.GoEnum
// interface. This ensures that IsisTypes_AUTH_MODE can be identified as a
// mapped type for a YANG enumeration.
func (E_IsisTypes_AUTH_MODE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IsisTypes_AUTH_MODE.
func (E_IsisTypes_AUTH_MODE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_IsisTypes_AUTH_MODE.
func (e E_IsisTypes_AUTH_MODE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IsisTypes_AUTH_MODE")
}

const (
	// IsisTypes_AUTH_MODE_UNSET corresponds to the value UNSET of IsisTypes_AUTH_MODE
	IsisTypes_AUTH_MODE_UNSET E_IsisTypes_AUTH_MODE = 0
	// IsisTypes_AUTH_MODE_MD5 corresponds to the value MD5 of IsisTypes_AUTH_MODE
	IsisTypes_AUTH_MODE_MD5 E_IsisTypes_AUTH_MODE = 1
	// IsisTypes_AUTH_MODE_TEXT corresponds to the value TEXT of IsisTypes_AUTH_MODE
	IsisTypes_AUTH_MODE_TEXT E_IsisTypes_AUTH_MODE = 2
)

// E_IsisTypes_AdaptiveTimerType is a derived int64 type which is used to represent
// the enumerated node IsisTypes_AdaptiveTimerType. An additional value named
// IsisTypes_AdaptiveTimerType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IsisTypes_AdaptiveTimerType int64

// IsYANGGoEnum ensures that IsisTypes_AdaptiveTimerType implements the yang.GoEnum
// interface. This ensures that IsisTypes_AdaptiveTimerType can be identified as a
// mapped type for a YANG enumeration.
func (E_IsisTypes_AdaptiveTimerType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IsisTypes_AdaptiveTimerType.
func (E_IsisTypes_AdaptiveTimerType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_IsisTypes_AdaptiveTimerType.
func (e E_IsisTypes_AdaptiveTimerType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IsisTypes_AdaptiveTimerType")
}

const (
	// IsisTypes_AdaptiveTimerType_UNSET corresponds to the value UNSET of IsisTypes_AdaptiveTimerType
	IsisTypes_AdaptiveTimerType_UNSET E_IsisTypes_AdaptiveTimerType = 0
	// IsisTypes_AdaptiveTimerType_LINEAR corresponds to the value LINEAR of IsisTypes_AdaptiveTimerType
	IsisTypes_AdaptiveTimerType_LINEAR E_IsisTypes_AdaptiveTimerType = 1
	// IsisTypes_AdaptiveTimerType_EXPONENTIAL corresponds to the value EXPONENTIAL of IsisTypes_AdaptiveTimerType
	IsisTypes_AdaptiveTimerType_EXPONENTIAL E_IsisTypes_AdaptiveTimerType = 2
)

// E_IsisTypes_CircuitType is a derived int64 type which is used to represent
// the enumerated node IsisTypes_CircuitType. An additional value named
// IsisTypes_CircuitType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IsisTypes_CircuitType int64

// IsYANGGoEnum ensures that IsisTypes_CircuitType implements the yang.GoEnum
// interface. This ensures that IsisTypes_CircuitType can be identified as a
// mapped type for a YANG enumeration.
func (E_IsisTypes_CircuitType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IsisTypes_CircuitType.
func (E_IsisTypes_CircuitType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_IsisTypes_CircuitType.
func (e E_IsisTypes_CircuitType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IsisTypes_CircuitType")
}

const (
	// IsisTypes_CircuitType_UNSET corresponds to the value UNSET of IsisTypes_CircuitType
	IsisTypes_CircuitType_UNSET E_IsisTypes_CircuitType = 0
	// IsisTypes_CircuitType_POINT_TO_POINT corresponds to the value POINT_TO_POINT of IsisTypes_CircuitType
	IsisTypes_CircuitType_POINT_TO_POINT E_IsisTypes_CircuitType = 1
	// IsisTypes_CircuitType_BROADCAST corresponds to the value BROADCAST of IsisTypes_CircuitType
	IsisTypes_CircuitType_BROADCAST E_IsisTypes_CircuitType = 2
)

// E_IsisTypes_HelloPaddingType is a derived int64 type which is used to represent
// the enumerated node IsisTypes_HelloPaddingType. An additional value named
// IsisTypes_HelloPaddingType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IsisTypes_HelloPaddingType int64

// IsYANGGoEnum ensures that IsisTypes_HelloPaddingType implements the yang.GoEnum
// interface. This ensures that IsisTypes_HelloPaddingType can be identified as a
// mapped type for a YANG enumeration.
func (E_IsisTypes_HelloPaddingType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IsisTypes_HelloPaddingType.
func (E_IsisTypes_HelloPaddingType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_IsisTypes_HelloPaddingType.
func (e E_IsisTypes_HelloPaddingType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IsisTypes_HelloPaddingType")
}

const (
	// IsisTypes_HelloPaddingType_UNSET corresponds to the value UNSET of IsisTypes_HelloPaddingType
	IsisTypes_HelloPaddingType_UNSET E_IsisTypes_HelloPaddingType = 0
	// IsisTypes_HelloPaddingType_STRICT corresponds to the value STRICT of IsisTypes_HelloPaddingType
	IsisTypes_HelloPaddingType_STRICT E_IsisTypes_HelloPaddingType = 1
	// IsisTypes_HelloPaddingType_LOOSE corresponds to the value LOOSE of IsisTypes_HelloPaddingType
	IsisTypes_HelloPaddingType_LOOSE E_IsisTypes_HelloPaddingType = 2
	// IsisTypes_HelloPaddingType_ADAPTIVE corresponds to the value ADAPTIVE of IsisTypes_HelloPaddingType
	IsisTypes_HelloPaddingType_ADAPTIVE E_IsisTypes_HelloPaddingType = 3
	// IsisTypes_HelloPaddingType_DISABLE corresponds to the value DISABLE of IsisTypes_HelloPaddingType
	IsisTypes_HelloPaddingType_DISABLE E_IsisTypes_HelloPaddingType = 4
)

// E_IsisTypes_IsisInterfaceAdjState is a derived int64 type which is used to represent
// the enumerated node IsisTypes_IsisInterfaceAdjState. An additional value named
// IsisTypes_IsisInterfaceAdjState_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IsisTypes_IsisInterfaceAdjState int64

// IsYANGGoEnum ensures that IsisTypes_IsisInterfaceAdjState implements the yang.GoEnum
// interface. This ensures that IsisTypes_IsisInterfaceAdjState can be identified as a
// mapped type for a YANG enumeration.
func (E_IsisTypes_IsisInterfaceAdjState) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IsisTypes_IsisInterfaceAdjState.
func (E_IsisTypes_IsisInterfaceAdjState) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_IsisTypes_IsisInterfaceAdjState.
func (e E_IsisTypes_IsisInterfaceAdjState) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IsisTypes_IsisInterfaceAdjState")
}

const (
	// IsisTypes_IsisInterfaceAdjState_UNSET corresponds to the value UNSET of IsisTypes_IsisInterfaceAdjState
	IsisTypes_IsisInterfaceAdjState_UNSET E_IsisTypes_IsisInterfaceAdjState = 0
	// IsisTypes_IsisInterfaceAdjState_UP corresponds to the value UP of IsisTypes_IsisInterfaceAdjState
	IsisTypes_IsisInterfaceAdjState_UP E_IsisTypes_IsisInterfaceAdjState = 1
	// IsisTypes_IsisInterfaceAdjState_DOWN corresponds to the value DOWN of IsisTypes_IsisInterfaceAdjState
	IsisTypes_IsisInterfaceAdjState_DOWN E_IsisTypes_IsisInterfaceAdjState = 2
	// IsisTypes_IsisInterfaceAdjState_INIT corresponds to the value INIT of IsisTypes_IsisInterfaceAdjState
	IsisTypes_IsisInterfaceAdjState_INIT E_IsisTypes_IsisInterfaceAdjState = 3
	// IsisTypes_IsisInterfaceAdjState_FAILED corresponds to the value FAILED of IsisTypes_IsisInterfaceAdjState
	IsisTypes_IsisInterfaceAdjState_FAILED E_IsisTypes_IsisInterfaceAdjState = 4
)

// E_IsisTypes_LevelType is a derived int64 type which is used to represent
// the enumerated node IsisTypes_LevelType. An additional value named
// IsisTypes_LevelType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IsisTypes_LevelType int64

// IsYANGGoEnum ensures that IsisTypes_LevelType implements the yang.GoEnum
// interface. This ensures that IsisTypes_LevelType can be identified as a
// mapped type for a YANG enumeration.
func (E_IsisTypes_LevelType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IsisTypes_LevelType.
func (E_IsisTypes_LevelType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_IsisTypes_LevelType.
func (e E_IsisTypes_LevelType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IsisTypes_LevelType")
}

const (
	// IsisTypes_LevelType_UNSET corresponds to the value UNSET of IsisTypes_LevelType
	IsisTypes_LevelType_UNSET E_IsisTypes_LevelType = 0
	// IsisTypes_LevelType_LEVEL_1 corresponds to the value LEVEL_1 of IsisTypes_LevelType
	IsisTypes_LevelType_LEVEL_1 E_IsisTypes_LevelType = 1
	// IsisTypes_LevelType_LEVEL_2 corresponds to the value LEVEL_2 of IsisTypes_LevelType
	IsisTypes_LevelType_LEVEL_2 E_IsisTypes_LevelType = 2
	// IsisTypes_LevelType_LEVEL_1_2 corresponds to the value LEVEL_1_2 of IsisTypes_LevelType
	IsisTypes_LevelType_LEVEL_1_2 E_IsisTypes_LevelType = 3
)

// E_IsisTypes_MetricStyle is a derived int64 type which is used to represent
// the enumerated node IsisTypes_MetricStyle. An additional value named
// IsisTypes_MetricStyle_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IsisTypes_MetricStyle int64

// IsYANGGoEnum ensures that IsisTypes_MetricStyle implements the yang.GoEnum
// interface. This ensures that IsisTypes_MetricStyle can be identified as a
// mapped type for a YANG enumeration.
func (E_IsisTypes_MetricStyle) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IsisTypes_MetricStyle.
func (E_IsisTypes_MetricStyle) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_IsisTypes_MetricStyle.
func (e E_IsisTypes_MetricStyle) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IsisTypes_MetricStyle")
}

const (
	// IsisTypes_MetricStyle_UNSET corresponds to the value UNSET of IsisTypes_MetricStyle
	IsisTypes_MetricStyle_UNSET E_IsisTypes_MetricStyle = 0
	// IsisTypes_MetricStyle_NARROW_METRIC corresponds to the value NARROW_METRIC of IsisTypes_MetricStyle
	IsisTypes_MetricStyle_NARROW_METRIC E_IsisTypes_MetricStyle = 1
	// IsisTypes_MetricStyle_WIDE_METRIC corresponds to the value WIDE_METRIC of IsisTypes_MetricStyle
	IsisTypes_MetricStyle_WIDE_METRIC E_IsisTypes_MetricStyle = 2
)

// E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE is a derived int64 type which is used to represent
// the enumerated node IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE. An additional value named
// IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE int64

// IsYANGGoEnum ensures that IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE implements the yang.GoEnum
// interface. This ensures that IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE.
func (E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE.
func (e E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE")
}

const (
	// IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE_UNSET corresponds to the value UNSET of IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE
	IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE_UNSET E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE = 0
	// IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE_WAIT_FOR_BGP corresponds to the value WAIT_FOR_BGP of IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE
	IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE_WAIT_FOR_BGP E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE = 1
	// IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE_WAIT_FOR_SYSTEM corresponds to the value WAIT_FOR_SYSTEM of IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE
	IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE_WAIT_FOR_SYSTEM E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE = 2
)

// E_IsisTypes_SAFI_TYPE is a derived int64 type which is used to represent
// the enumerated node IsisTypes_SAFI_TYPE. An additional value named
// IsisTypes_SAFI_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_IsisTypes_SAFI_TYPE int64

// IsYANGGoEnum ensures that IsisTypes_SAFI_TYPE implements the yang.GoEnum
// interface. This ensures that IsisTypes_SAFI_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_IsisTypes_SAFI_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  IsisTypes_SAFI_TYPE.
func (E_IsisTypes_SAFI_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_IsisTypes_SAFI_TYPE.
func (e E_IsisTypes_SAFI_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_IsisTypes_SAFI_TYPE")
}

const (
	// IsisTypes_SAFI_TYPE_UNSET corresponds to the value UNSET of IsisTypes_SAFI_TYPE
	IsisTypes_SAFI_TYPE_UNSET E_IsisTypes_SAFI_TYPE = 0
	// IsisTypes_SAFI_TYPE_MULTICAST corresponds to the value MULTICAST of IsisTypes_SAFI_TYPE
	IsisTypes_SAFI_TYPE_MULTICAST E_IsisTypes_SAFI_TYPE = 1
	// IsisTypes_SAFI_TYPE_UNICAST corresponds to the value UNICAST of IsisTypes_SAFI_TYPE
	IsisTypes_SAFI_TYPE_UNICAST E_IsisTypes_SAFI_TYPE = 2
)

// E_Isis_IsisMetricFlags is a derived int64 type which is used to represent
// the enumerated node Isis_IsisMetricFlags. An additional value named
// Isis_IsisMetricFlags_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Isis_IsisMetricFlags int64

// IsYANGGoEnum ensures that Isis_IsisMetricFlags implements the yang.GoEnum
// interface. This ensures that Isis_IsisMetricFlags can be identified as a
// mapped type for a YANG enumeration.
func (E_Isis_IsisMetricFlags) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Isis_IsisMetricFlags.
func (E_Isis_IsisMetricFlags) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Isis_IsisMetricFlags.
func (e E_Isis_IsisMetricFlags) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Isis_IsisMetricFlags")
}

const (
	// Isis_IsisMetricFlags_UNSET corresponds to the value UNSET of Isis_IsisMetricFlags
	Isis_IsisMetricFlags_UNSET E_Isis_IsisMetricFlags = 0
	// Isis_IsisMetricFlags_INTERNAL corresponds to the value INTERNAL of Isis_IsisMetricFlags
	Isis_IsisMetricFlags_INTERNAL E_Isis_IsisMetricFlags = 1
	// Isis_IsisMetricFlags_UNSUPPORTED corresponds to the value UNSUPPORTED of Isis_IsisMetricFlags
	Isis_IsisMetricFlags_UNSUPPORTED E_Isis_IsisMetricFlags = 2
)

// E_KeychainTypes_AUTH_TYPE is a derived int64 type which is used to represent
// the enumerated node KeychainTypes_AUTH_TYPE. An additional value named
// KeychainTypes_AUTH_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_KeychainTypes_AUTH_TYPE int64

// IsYANGGoEnum ensures that KeychainTypes_AUTH_TYPE implements the yang.GoEnum
// interface. This ensures that KeychainTypes_AUTH_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_KeychainTypes_AUTH_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  KeychainTypes_AUTH_TYPE.
func (E_KeychainTypes_AUTH_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_KeychainTypes_AUTH_TYPE.
func (e E_KeychainTypes_AUTH_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_KeychainTypes_AUTH_TYPE")
}

const (
	// KeychainTypes_AUTH_TYPE_UNSET corresponds to the value UNSET of KeychainTypes_AUTH_TYPE
	KeychainTypes_AUTH_TYPE_UNSET E_KeychainTypes_AUTH_TYPE = 0
	// KeychainTypes_AUTH_TYPE_KEYCHAIN corresponds to the value KEYCHAIN of KeychainTypes_AUTH_TYPE
	KeychainTypes_AUTH_TYPE_KEYCHAIN E_KeychainTypes_AUTH_TYPE = 1
	// KeychainTypes_AUTH_TYPE_SIMPLE_KEY corresponds to the value SIMPLE_KEY of KeychainTypes_AUTH_TYPE
	KeychainTypes_AUTH_TYPE_SIMPLE_KEY E_KeychainTypes_AUTH_TYPE = 2
)

// E_KeychainTypes_CRYPTO_TYPE is a derived int64 type which is used to represent
// the enumerated node KeychainTypes_CRYPTO_TYPE. An additional value named
// KeychainTypes_CRYPTO_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_KeychainTypes_CRYPTO_TYPE int64

// IsYANGGoEnum ensures that KeychainTypes_CRYPTO_TYPE implements the yang.GoEnum
// interface. This ensures that KeychainTypes_CRYPTO_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_KeychainTypes_CRYPTO_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  KeychainTypes_CRYPTO_TYPE.
func (E_KeychainTypes_CRYPTO_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_KeychainTypes_CRYPTO_TYPE.
func (e E_KeychainTypes_CRYPTO_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_KeychainTypes_CRYPTO_TYPE")
}

const (
	// KeychainTypes_CRYPTO_TYPE_UNSET corresponds to the value UNSET of KeychainTypes_CRYPTO_TYPE
	KeychainTypes_CRYPTO_TYPE_UNSET E_KeychainTypes_CRYPTO_TYPE = 0
	// KeychainTypes_CRYPTO_TYPE_AES_28_CMAC_96 corresponds to the value AES_28_CMAC_96 of KeychainTypes_CRYPTO_TYPE
	KeychainTypes_CRYPTO_TYPE_AES_28_CMAC_96 E_KeychainTypes_CRYPTO_TYPE = 1
	// KeychainTypes_CRYPTO_TYPE_CRYPTO_NONE corresponds to the value CRYPTO_NONE of KeychainTypes_CRYPTO_TYPE
	KeychainTypes_CRYPTO_TYPE_CRYPTO_NONE E_KeychainTypes_CRYPTO_TYPE = 2
	// KeychainTypes_CRYPTO_TYPE_HMAC_MD5 corresponds to the value HMAC_MD5 of KeychainTypes_CRYPTO_TYPE
	KeychainTypes_CRYPTO_TYPE_HMAC_MD5 E_KeychainTypes_CRYPTO_TYPE = 3
	// KeychainTypes_CRYPTO_TYPE_HMAC_SHA_1 corresponds to the value HMAC_SHA_1 of KeychainTypes_CRYPTO_TYPE
	KeychainTypes_CRYPTO_TYPE_HMAC_SHA_1 E_KeychainTypes_CRYPTO_TYPE = 4
	// KeychainTypes_CRYPTO_TYPE_HMAC_SHA_1_12 corresponds to the value HMAC_SHA_1_12 of KeychainTypes_CRYPTO_TYPE
	KeychainTypes_CRYPTO_TYPE_HMAC_SHA_1_12 E_KeychainTypes_CRYPTO_TYPE = 5
	// KeychainTypes_CRYPTO_TYPE_HMAC_SHA_1_20 corresponds to the value HMAC_SHA_1_20 of KeychainTypes_CRYPTO_TYPE
	KeychainTypes_CRYPTO_TYPE_HMAC_SHA_1_20 E_KeychainTypes_CRYPTO_TYPE = 6
	// KeychainTypes_CRYPTO_TYPE_HMAC_SHA_1_96 corresponds to the value HMAC_SHA_1_96 of KeychainTypes_CRYPTO_TYPE
	KeychainTypes_CRYPTO_TYPE_HMAC_SHA_1_96 E_KeychainTypes_CRYPTO_TYPE = 7
	// KeychainTypes_CRYPTO_TYPE_HMAC_SHA_256 corresponds to the value HMAC_SHA_256 of KeychainTypes_CRYPTO_TYPE
	KeychainTypes_CRYPTO_TYPE_HMAC_SHA_256 E_KeychainTypes_CRYPTO_TYPE = 8
	// KeychainTypes_CRYPTO_TYPE_MD5 corresponds to the value MD5 of KeychainTypes_CRYPTO_TYPE
	KeychainTypes_CRYPTO_TYPE_MD5 E_KeychainTypes_CRYPTO_TYPE = 9
	// KeychainTypes_CRYPTO_TYPE_SHA_1 corresponds to the value SHA_1 of KeychainTypes_CRYPTO_TYPE
	KeychainTypes_CRYPTO_TYPE_SHA_1 E_KeychainTypes_CRYPTO_TYPE = 10
)

// E_Keychain_Tolerance_Enum is a derived int64 type which is used to represent
// the enumerated node Keychain_Tolerance_Enum. An additional value named
// Keychain_Tolerance_Enum_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Keychain_Tolerance_Enum int64

// IsYANGGoEnum ensures that Keychain_Tolerance_Enum implements the yang.GoEnum
// interface. This ensures that Keychain_Tolerance_Enum can be identified as a
// mapped type for a YANG enumeration.
func (E_Keychain_Tolerance_Enum) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Keychain_Tolerance_Enum.
func (E_Keychain_Tolerance_Enum) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Keychain_Tolerance_Enum.
func (e E_Keychain_Tolerance_Enum) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Keychain_Tolerance_Enum")
}

const (
	// Keychain_Tolerance_Enum_UNSET corresponds to the value UNSET of Keychain_Tolerance_Enum
	Keychain_Tolerance_Enum_UNSET E_Keychain_Tolerance_Enum = 0
	// Keychain_Tolerance_Enum_FOREVER corresponds to the value FOREVER of Keychain_Tolerance_Enum
	Keychain_Tolerance_Enum_FOREVER E_Keychain_Tolerance_Enum = 1
)

// E_Lacp_LacpActivityType is a derived int64 type which is used to represent
// the enumerated node Lacp_LacpActivityType. An additional value named
// Lacp_LacpActivityType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Lacp_LacpActivityType int64

// IsYANGGoEnum ensures that Lacp_LacpActivityType implements the yang.GoEnum
// interface. This ensures that Lacp_LacpActivityType can be identified as a
// mapped type for a YANG enumeration.
func (E_Lacp_LacpActivityType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Lacp_LacpActivityType.
func (E_Lacp_LacpActivityType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Lacp_LacpActivityType.
func (e E_Lacp_LacpActivityType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Lacp_LacpActivityType")
}

const (
	// Lacp_LacpActivityType_UNSET corresponds to the value UNSET of Lacp_LacpActivityType
	Lacp_LacpActivityType_UNSET E_Lacp_LacpActivityType = 0
	// Lacp_LacpActivityType_ACTIVE corresponds to the value ACTIVE of Lacp_LacpActivityType
	Lacp_LacpActivityType_ACTIVE E_Lacp_LacpActivityType = 1
	// Lacp_LacpActivityType_PASSIVE corresponds to the value PASSIVE of Lacp_LacpActivityType
	Lacp_LacpActivityType_PASSIVE E_Lacp_LacpActivityType = 2
)

// E_Lacp_LacpPeriodType is a derived int64 type which is used to represent
// the enumerated node Lacp_LacpPeriodType. An additional value named
// Lacp_LacpPeriodType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Lacp_LacpPeriodType int64

// IsYANGGoEnum ensures that Lacp_LacpPeriodType implements the yang.GoEnum
// interface. This ensures that Lacp_LacpPeriodType can be identified as a
// mapped type for a YANG enumeration.
func (E_Lacp_LacpPeriodType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Lacp_LacpPeriodType.
func (E_Lacp_LacpPeriodType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Lacp_LacpPeriodType.
func (e E_Lacp_LacpPeriodType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Lacp_LacpPeriodType")
}

const (
	// Lacp_LacpPeriodType_UNSET corresponds to the value UNSET of Lacp_LacpPeriodType
	Lacp_LacpPeriodType_UNSET E_Lacp_LacpPeriodType = 0
	// Lacp_LacpPeriodType_FAST corresponds to the value FAST of Lacp_LacpPeriodType
	Lacp_LacpPeriodType_FAST E_Lacp_LacpPeriodType = 1
	// Lacp_LacpPeriodType_SLOW corresponds to the value SLOW of Lacp_LacpPeriodType
	Lacp_LacpPeriodType_SLOW E_Lacp_LacpPeriodType = 2
)

// E_Lacp_LacpSynchronizationType is a derived int64 type which is used to represent
// the enumerated node Lacp_LacpSynchronizationType. An additional value named
// Lacp_LacpSynchronizationType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Lacp_LacpSynchronizationType int64

// IsYANGGoEnum ensures that Lacp_LacpSynchronizationType implements the yang.GoEnum
// interface. This ensures that Lacp_LacpSynchronizationType can be identified as a
// mapped type for a YANG enumeration.
func (E_Lacp_LacpSynchronizationType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Lacp_LacpSynchronizationType.
func (E_Lacp_LacpSynchronizationType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Lacp_LacpSynchronizationType.
func (e E_Lacp_LacpSynchronizationType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Lacp_LacpSynchronizationType")
}

const (
	// Lacp_LacpSynchronizationType_UNSET corresponds to the value UNSET of Lacp_LacpSynchronizationType
	Lacp_LacpSynchronizationType_UNSET E_Lacp_LacpSynchronizationType = 0
	// Lacp_LacpSynchronizationType_IN_SYNC corresponds to the value IN_SYNC of Lacp_LacpSynchronizationType
	Lacp_LacpSynchronizationType_IN_SYNC E_Lacp_LacpSynchronizationType = 1
	// Lacp_LacpSynchronizationType_OUT_SYNC corresponds to the value OUT_SYNC of Lacp_LacpSynchronizationType
	Lacp_LacpSynchronizationType_OUT_SYNC E_Lacp_LacpSynchronizationType = 2
)

// E_Lacp_LacpTimeoutType is a derived int64 type which is used to represent
// the enumerated node Lacp_LacpTimeoutType. An additional value named
// Lacp_LacpTimeoutType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Lacp_LacpTimeoutType int64

// IsYANGGoEnum ensures that Lacp_LacpTimeoutType implements the yang.GoEnum
// interface. This ensures that Lacp_LacpTimeoutType can be identified as a
// mapped type for a YANG enumeration.
func (E_Lacp_LacpTimeoutType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Lacp_LacpTimeoutType.
func (E_Lacp_LacpTimeoutType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Lacp_LacpTimeoutType.
func (e E_Lacp_LacpTimeoutType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Lacp_LacpTimeoutType")
}

const (
	// Lacp_LacpTimeoutType_UNSET corresponds to the value UNSET of Lacp_LacpTimeoutType
	Lacp_LacpTimeoutType_UNSET E_Lacp_LacpTimeoutType = 0
	// Lacp_LacpTimeoutType_LONG corresponds to the value LONG of Lacp_LacpTimeoutType
	Lacp_LacpTimeoutType_LONG E_Lacp_LacpTimeoutType = 1
	// Lacp_LacpTimeoutType_SHORT corresponds to the value SHORT of Lacp_LacpTimeoutType
	Lacp_LacpTimeoutType_SHORT E_Lacp_LacpTimeoutType = 2
)

// E_LanAdjacencySid_Flags is a derived int64 type which is used to represent
// the enumerated node LanAdjacencySid_Flags. An additional value named
// LanAdjacencySid_Flags_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_LanAdjacencySid_Flags int64

// IsYANGGoEnum ensures that LanAdjacencySid_Flags implements the yang.GoEnum
// interface. This ensures that LanAdjacencySid_Flags can be identified as a
// mapped type for a YANG enumeration.
func (E_LanAdjacencySid_Flags) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  LanAdjacencySid_Flags.
func (E_LanAdjacencySid_Flags) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_LanAdjacencySid_Flags.
func (e E_LanAdjacencySid_Flags) String() string {
	return ygot.EnumLogString(e, int64(e), "E_LanAdjacencySid_Flags")
}

const (
	// LanAdjacencySid_Flags_UNSET corresponds to the value UNSET of LanAdjacencySid_Flags
	LanAdjacencySid_Flags_UNSET E_LanAdjacencySid_Flags = 0
	// LanAdjacencySid_Flags_ADDRESS_FAMILY corresponds to the value ADDRESS_FAMILY of LanAdjacencySid_Flags
	LanAdjacencySid_Flags_ADDRESS_FAMILY E_LanAdjacencySid_Flags = 1
	// LanAdjacencySid_Flags_BACKUP corresponds to the value BACKUP of LanAdjacencySid_Flags
	LanAdjacencySid_Flags_BACKUP E_LanAdjacencySid_Flags = 2
	// LanAdjacencySid_Flags_VALUE corresponds to the value VALUE of LanAdjacencySid_Flags
	LanAdjacencySid_Flags_VALUE E_LanAdjacencySid_Flags = 3
	// LanAdjacencySid_Flags_LOCAL corresponds to the value LOCAL of LanAdjacencySid_Flags
	LanAdjacencySid_Flags_LOCAL E_LanAdjacencySid_Flags = 4
	// LanAdjacencySid_Flags_SET corresponds to the value SET of LanAdjacencySid_Flags
	LanAdjacencySid_Flags_SET E_LanAdjacencySid_Flags = 5
)

// E_LinkAttributes_LocalProtection is a derived int64 type which is used to represent
// the enumerated node LinkAttributes_LocalProtection. An additional value named
// LinkAttributes_LocalProtection_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_LinkAttributes_LocalProtection int64

// IsYANGGoEnum ensures that LinkAttributes_LocalProtection implements the yang.GoEnum
// interface. This ensures that LinkAttributes_LocalProtection can be identified as a
// mapped type for a YANG enumeration.
func (E_LinkAttributes_LocalProtection) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  LinkAttributes_LocalProtection.
func (E_LinkAttributes_LocalProtection) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_LinkAttributes_LocalProtection.
func (e E_LinkAttributes_LocalProtection) String() string {
	return ygot.EnumLogString(e, int64(e), "E_LinkAttributes_LocalProtection")
}

const (
	// LinkAttributes_LocalProtection_UNSET corresponds to the value UNSET of LinkAttributes_LocalProtection
	LinkAttributes_LocalProtection_UNSET E_LinkAttributes_LocalProtection = 0
	// LinkAttributes_LocalProtection_LOCAL_PROTECTION corresponds to the value LOCAL_PROTECTION of LinkAttributes_LocalProtection
	LinkAttributes_LocalProtection_LOCAL_PROTECTION E_LinkAttributes_LocalProtection = 1
	// LinkAttributes_LocalProtection_LINK_EXCLUDED corresponds to the value LINK_EXCLUDED of LinkAttributes_LocalProtection
	LinkAttributes_LocalProtection_LINK_EXCLUDED E_LinkAttributes_LocalProtection = 2
)

// E_LinkProtectionType_Type is a derived int64 type which is used to represent
// the enumerated node LinkProtectionType_Type. An additional value named
// LinkProtectionType_Type_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_LinkProtectionType_Type int64

// IsYANGGoEnum ensures that LinkProtectionType_Type implements the yang.GoEnum
// interface. This ensures that LinkProtectionType_Type can be identified as a
// mapped type for a YANG enumeration.
func (E_LinkProtectionType_Type) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  LinkProtectionType_Type.
func (E_LinkProtectionType_Type) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_LinkProtectionType_Type.
func (e E_LinkProtectionType_Type) String() string {
	return ygot.EnumLogString(e, int64(e), "E_LinkProtectionType_Type")
}

const (
	// LinkProtectionType_Type_UNSET corresponds to the value UNSET of LinkProtectionType_Type
	LinkProtectionType_Type_UNSET E_LinkProtectionType_Type = 0
	// LinkProtectionType_Type_EXTRA_TRAFFIC corresponds to the value EXTRA_TRAFFIC of LinkProtectionType_Type
	LinkProtectionType_Type_EXTRA_TRAFFIC E_LinkProtectionType_Type = 1
	// LinkProtectionType_Type_UNPROTECTED corresponds to the value UNPROTECTED of LinkProtectionType_Type
	LinkProtectionType_Type_UNPROTECTED E_LinkProtectionType_Type = 2
	// LinkProtectionType_Type_SHARED corresponds to the value SHARED of LinkProtectionType_Type
	LinkProtectionType_Type_SHARED E_LinkProtectionType_Type = 3
	// LinkProtectionType_Type_ONE_ONE corresponds to the value ONE_ONE of LinkProtectionType_Type
	LinkProtectionType_Type_ONE_ONE E_LinkProtectionType_Type = 4
	// LinkProtectionType_Type_PLUS_ONE corresponds to the value PLUS_ONE of LinkProtectionType_Type
	LinkProtectionType_Type_PLUS_ONE E_LinkProtectionType_Type = 5
	// LinkProtectionType_Type_ENHANCED corresponds to the value ENHANCED of LinkProtectionType_Type
	LinkProtectionType_Type_ENHANCED E_LinkProtectionType_Type = 6
)

// E_Link_SubTlv_Type_Enum is a derived int64 type which is used to represent
// the enumerated node Link_SubTlv_Type_Enum. An additional value named
// Link_SubTlv_Type_Enum_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Link_SubTlv_Type_Enum int64

// IsYANGGoEnum ensures that Link_SubTlv_Type_Enum implements the yang.GoEnum
// interface. This ensures that Link_SubTlv_Type_Enum can be identified as a
// mapped type for a YANG enumeration.
func (E_Link_SubTlv_Type_Enum) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Link_SubTlv_Type_Enum.
func (E_Link_SubTlv_Type_Enum) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Link_SubTlv_Type_Enum.
func (e E_Link_SubTlv_Type_Enum) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Link_SubTlv_Type_Enum")
}

const (
	// Link_SubTlv_Type_Enum_UNSET corresponds to the value UNSET of Link_SubTlv_Type_Enum
	Link_SubTlv_Type_Enum_UNSET E_Link_SubTlv_Type_Enum = 0
	// Link_SubTlv_Type_Enum_UNKNOWN corresponds to the value UNKNOWN of Link_SubTlv_Type_Enum
	Link_SubTlv_Type_Enum_UNKNOWN E_Link_SubTlv_Type_Enum = 1
)

// E_LldpTypes_ChassisIdType is a derived int64 type which is used to represent
// the enumerated node LldpTypes_ChassisIdType. An additional value named
// LldpTypes_ChassisIdType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_LldpTypes_ChassisIdType int64

// IsYANGGoEnum ensures that LldpTypes_ChassisIdType implements the yang.GoEnum
// interface. This ensures that LldpTypes_ChassisIdType can be identified as a
// mapped type for a YANG enumeration.
func (E_LldpTypes_ChassisIdType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  LldpTypes_ChassisIdType.
func (E_LldpTypes_ChassisIdType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_LldpTypes_ChassisIdType.
func (e E_LldpTypes_ChassisIdType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_LldpTypes_ChassisIdType")
}

const (
	// LldpTypes_ChassisIdType_UNSET corresponds to the value UNSET of LldpTypes_ChassisIdType
	LldpTypes_ChassisIdType_UNSET E_LldpTypes_ChassisIdType = 0
	// LldpTypes_ChassisIdType_CHASSIS_COMPONENT corresponds to the value CHASSIS_COMPONENT of LldpTypes_ChassisIdType
	LldpTypes_ChassisIdType_CHASSIS_COMPONENT E_LldpTypes_ChassisIdType = 1
	// LldpTypes_ChassisIdType_INTERFACE_ALIAS corresponds to the value INTERFACE_ALIAS of LldpTypes_ChassisIdType
	LldpTypes_ChassisIdType_INTERFACE_ALIAS E_LldpTypes_ChassisIdType = 2
	// LldpTypes_ChassisIdType_PORT_COMPONENT corresponds to the value PORT_COMPONENT of LldpTypes_ChassisIdType
	LldpTypes_ChassisIdType_PORT_COMPONENT E_LldpTypes_ChassisIdType = 3
	// LldpTypes_ChassisIdType_MAC_ADDRESS corresponds to the value MAC_ADDRESS of LldpTypes_ChassisIdType
	LldpTypes_ChassisIdType_MAC_ADDRESS E_LldpTypes_ChassisIdType = 4
	// LldpTypes_ChassisIdType_NETWORK_ADDRESS corresponds to the value NETWORK_ADDRESS of LldpTypes_ChassisIdType
	LldpTypes_ChassisIdType_NETWORK_ADDRESS E_LldpTypes_ChassisIdType = 5
	// LldpTypes_ChassisIdType_INTERFACE_NAME corresponds to the value INTERFACE_NAME of LldpTypes_ChassisIdType
	LldpTypes_ChassisIdType_INTERFACE_NAME E_LldpTypes_ChassisIdType = 6
	// LldpTypes_ChassisIdType_LOCAL corresponds to the value LOCAL of LldpTypes_ChassisIdType
	LldpTypes_ChassisIdType_LOCAL E_LldpTypes_ChassisIdType = 7
)

// E_LldpTypes_LLDP_SYSTEM_CAPABILITY is a derived int64 type which is used to represent
// the enumerated node LldpTypes_LLDP_SYSTEM_CAPABILITY. An additional value named
// LldpTypes_LLDP_SYSTEM_CAPABILITY_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_LldpTypes_LLDP_SYSTEM_CAPABILITY int64

// IsYANGGoEnum ensures that LldpTypes_LLDP_SYSTEM_CAPABILITY implements the yang.GoEnum
// interface. This ensures that LldpTypes_LLDP_SYSTEM_CAPABILITY can be identified as a
// mapped type for a YANG enumeration.
func (E_LldpTypes_LLDP_SYSTEM_CAPABILITY) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  LldpTypes_LLDP_SYSTEM_CAPABILITY.
func (E_LldpTypes_LLDP_SYSTEM_CAPABILITY) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_LldpTypes_LLDP_SYSTEM_CAPABILITY.
func (e E_LldpTypes_LLDP_SYSTEM_CAPABILITY) String() string {
	return ygot.EnumLogString(e, int64(e), "E_LldpTypes_LLDP_SYSTEM_CAPABILITY")
}

const (
	// LldpTypes_LLDP_SYSTEM_CAPABILITY_UNSET corresponds to the value UNSET of LldpTypes_LLDP_SYSTEM_CAPABILITY
	LldpTypes_LLDP_SYSTEM_CAPABILITY_UNSET E_LldpTypes_LLDP_SYSTEM_CAPABILITY = 0
	// LldpTypes_LLDP_SYSTEM_CAPABILITY_C_VLAN corresponds to the value C_VLAN of LldpTypes_LLDP_SYSTEM_CAPABILITY
	LldpTypes_LLDP_SYSTEM_CAPABILITY_C_VLAN E_LldpTypes_LLDP_SYSTEM_CAPABILITY = 1
	// LldpTypes_LLDP_SYSTEM_CAPABILITY_DOCSIS_CABLE_DEVICE corresponds to the value DOCSIS_CABLE_DEVICE of LldpTypes_LLDP_SYSTEM_CAPABILITY
	LldpTypes_LLDP_SYSTEM_CAPABILITY_DOCSIS_CABLE_DEVICE E_LldpTypes_LLDP_SYSTEM_CAPABILITY = 2
	// LldpTypes_LLDP_SYSTEM_CAPABILITY_MAC_BRIDGE corresponds to the value MAC_BRIDGE of LldpTypes_LLDP_SYSTEM_CAPABILITY
	LldpTypes_LLDP_SYSTEM_CAPABILITY_MAC_BRIDGE E_LldpTypes_LLDP_SYSTEM_CAPABILITY = 3
	// LldpTypes_LLDP_SYSTEM_CAPABILITY_OTHER corresponds to the value OTHER of LldpTypes_LLDP_SYSTEM_CAPABILITY
	LldpTypes_LLDP_SYSTEM_CAPABILITY_OTHER E_LldpTypes_LLDP_SYSTEM_CAPABILITY = 4
	// LldpTypes_LLDP_SYSTEM_CAPABILITY_REPEATER corresponds to the value REPEATER of LldpTypes_LLDP_SYSTEM_CAPABILITY
	LldpTypes_LLDP_SYSTEM_CAPABILITY_REPEATER E_LldpTypes_LLDP_SYSTEM_CAPABILITY = 5
	// LldpTypes_LLDP_SYSTEM_CAPABILITY_ROUTER corresponds to the value ROUTER of LldpTypes_LLDP_SYSTEM_CAPABILITY
	LldpTypes_LLDP_SYSTEM_CAPABILITY_ROUTER E_LldpTypes_LLDP_SYSTEM_CAPABILITY = 6
	// LldpTypes_LLDP_SYSTEM_CAPABILITY_STATION_ONLY corresponds to the value STATION_ONLY of LldpTypes_LLDP_SYSTEM_CAPABILITY
	LldpTypes_LLDP_SYSTEM_CAPABILITY_STATION_ONLY E_LldpTypes_LLDP_SYSTEM_CAPABILITY = 7
	// LldpTypes_LLDP_SYSTEM_CAPABILITY_S_VLAN corresponds to the value S_VLAN of LldpTypes_LLDP_SYSTEM_CAPABILITY
	LldpTypes_LLDP_SYSTEM_CAPABILITY_S_VLAN E_LldpTypes_LLDP_SYSTEM_CAPABILITY = 8
	// LldpTypes_LLDP_SYSTEM_CAPABILITY_TELEPHONE corresponds to the value TELEPHONE of LldpTypes_LLDP_SYSTEM_CAPABILITY
	LldpTypes_LLDP_SYSTEM_CAPABILITY_TELEPHONE E_LldpTypes_LLDP_SYSTEM_CAPABILITY = 9
	// LldpTypes_LLDP_SYSTEM_CAPABILITY_TWO_PORT_MAC_RELAY corresponds to the value TWO_PORT_MAC_RELAY of LldpTypes_LLDP_SYSTEM_CAPABILITY
	LldpTypes_LLDP_SYSTEM_CAPABILITY_TWO_PORT_MAC_RELAY E_LldpTypes_LLDP_SYSTEM_CAPABILITY = 10
	// LldpTypes_LLDP_SYSTEM_CAPABILITY_WLAN_ACCESS_POINT corresponds to the value WLAN_ACCESS_POINT of LldpTypes_LLDP_SYSTEM_CAPABILITY
	LldpTypes_LLDP_SYSTEM_CAPABILITY_WLAN_ACCESS_POINT E_LldpTypes_LLDP_SYSTEM_CAPABILITY = 11
)

// E_LldpTypes_LLDP_TLV is a derived int64 type which is used to represent
// the enumerated node LldpTypes_LLDP_TLV. An additional value named
// LldpTypes_LLDP_TLV_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_LldpTypes_LLDP_TLV int64

// IsYANGGoEnum ensures that LldpTypes_LLDP_TLV implements the yang.GoEnum
// interface. This ensures that LldpTypes_LLDP_TLV can be identified as a
// mapped type for a YANG enumeration.
func (E_LldpTypes_LLDP_TLV) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  LldpTypes_LLDP_TLV.
func (E_LldpTypes_LLDP_TLV) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_LldpTypes_LLDP_TLV.
func (e E_LldpTypes_LLDP_TLV) String() string {
	return ygot.EnumLogString(e, int64(e), "E_LldpTypes_LLDP_TLV")
}

const (
	// LldpTypes_LLDP_TLV_UNSET corresponds to the value UNSET of LldpTypes_LLDP_TLV
	LldpTypes_LLDP_TLV_UNSET E_LldpTypes_LLDP_TLV = 0
	// LldpTypes_LLDP_TLV_CHASSIS_ID corresponds to the value CHASSIS_ID of LldpTypes_LLDP_TLV
	LldpTypes_LLDP_TLV_CHASSIS_ID E_LldpTypes_LLDP_TLV = 1
	// LldpTypes_LLDP_TLV_MANAGEMENT_ADDRESS corresponds to the value MANAGEMENT_ADDRESS of LldpTypes_LLDP_TLV
	LldpTypes_LLDP_TLV_MANAGEMENT_ADDRESS E_LldpTypes_LLDP_TLV = 2
	// LldpTypes_LLDP_TLV_PORT_DESCRIPTION corresponds to the value PORT_DESCRIPTION of LldpTypes_LLDP_TLV
	LldpTypes_LLDP_TLV_PORT_DESCRIPTION E_LldpTypes_LLDP_TLV = 3
	// LldpTypes_LLDP_TLV_PORT_ID corresponds to the value PORT_ID of LldpTypes_LLDP_TLV
	LldpTypes_LLDP_TLV_PORT_ID E_LldpTypes_LLDP_TLV = 4
	// LldpTypes_LLDP_TLV_SYSTEM_CAPABILITIES corresponds to the value SYSTEM_CAPABILITIES of LldpTypes_LLDP_TLV
	LldpTypes_LLDP_TLV_SYSTEM_CAPABILITIES E_LldpTypes_LLDP_TLV = 5
	// LldpTypes_LLDP_TLV_SYSTEM_DESCRIPTION corresponds to the value SYSTEM_DESCRIPTION of LldpTypes_LLDP_TLV
	LldpTypes_LLDP_TLV_SYSTEM_DESCRIPTION E_LldpTypes_LLDP_TLV = 6
	// LldpTypes_LLDP_TLV_SYSTEM_NAME corresponds to the value SYSTEM_NAME of LldpTypes_LLDP_TLV
	LldpTypes_LLDP_TLV_SYSTEM_NAME E_LldpTypes_LLDP_TLV = 7
)

// E_LldpTypes_PortIdType is a derived int64 type which is used to represent
// the enumerated node LldpTypes_PortIdType. An additional value named
// LldpTypes_PortIdType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_LldpTypes_PortIdType int64

// IsYANGGoEnum ensures that LldpTypes_PortIdType implements the yang.GoEnum
// interface. This ensures that LldpTypes_PortIdType can be identified as a
// mapped type for a YANG enumeration.
func (E_LldpTypes_PortIdType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  LldpTypes_PortIdType.
func (E_LldpTypes_PortIdType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_LldpTypes_PortIdType.
func (e E_LldpTypes_PortIdType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_LldpTypes_PortIdType")
}

const (
	// LldpTypes_PortIdType_UNSET corresponds to the value UNSET of LldpTypes_PortIdType
	LldpTypes_PortIdType_UNSET E_LldpTypes_PortIdType = 0
	// LldpTypes_PortIdType_INTERFACE_ALIAS corresponds to the value INTERFACE_ALIAS of LldpTypes_PortIdType
	LldpTypes_PortIdType_INTERFACE_ALIAS E_LldpTypes_PortIdType = 1
	// LldpTypes_PortIdType_PORT_COMPONENT corresponds to the value PORT_COMPONENT of LldpTypes_PortIdType
	LldpTypes_PortIdType_PORT_COMPONENT E_LldpTypes_PortIdType = 2
	// LldpTypes_PortIdType_MAC_ADDRESS corresponds to the value MAC_ADDRESS of LldpTypes_PortIdType
	LldpTypes_PortIdType_MAC_ADDRESS E_LldpTypes_PortIdType = 3
	// LldpTypes_PortIdType_NETWORK_ADDRESS corresponds to the value NETWORK_ADDRESS of LldpTypes_PortIdType
	LldpTypes_PortIdType_NETWORK_ADDRESS E_LldpTypes_PortIdType = 4
	// LldpTypes_PortIdType_INTERFACE_NAME corresponds to the value INTERFACE_NAME of LldpTypes_PortIdType
	LldpTypes_PortIdType_INTERFACE_NAME E_LldpTypes_PortIdType = 5
	// LldpTypes_PortIdType_AGENT_CIRCUIT_ID corresponds to the value AGENT_CIRCUIT_ID of LldpTypes_PortIdType
	LldpTypes_PortIdType_AGENT_CIRCUIT_ID E_LldpTypes_PortIdType = 6
	// LldpTypes_PortIdType_LOCAL corresponds to the value LOCAL of LldpTypes_PortIdType
	LldpTypes_PortIdType_LOCAL E_LldpTypes_PortIdType = 7
)

// E_LocalRouting_LOCAL_DEFINED_NEXT_HOP is a derived int64 type which is used to represent
// the enumerated node LocalRouting_LOCAL_DEFINED_NEXT_HOP. An additional value named
// LocalRouting_LOCAL_DEFINED_NEXT_HOP_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_LocalRouting_LOCAL_DEFINED_NEXT_HOP int64

// IsYANGGoEnum ensures that LocalRouting_LOCAL_DEFINED_NEXT_HOP implements the yang.GoEnum
// interface. This ensures that LocalRouting_LOCAL_DEFINED_NEXT_HOP can be identified as a
// mapped type for a YANG enumeration.
func (E_LocalRouting_LOCAL_DEFINED_NEXT_HOP) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  LocalRouting_LOCAL_DEFINED_NEXT_HOP.
func (E_LocalRouting_LOCAL_DEFINED_NEXT_HOP) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_LocalRouting_LOCAL_DEFINED_NEXT_HOP.
func (e E_LocalRouting_LOCAL_DEFINED_NEXT_HOP) String() string {
	return ygot.EnumLogString(e, int64(e), "E_LocalRouting_LOCAL_DEFINED_NEXT_HOP")
}

const (
	// LocalRouting_LOCAL_DEFINED_NEXT_HOP_UNSET corresponds to the value UNSET of LocalRouting_LOCAL_DEFINED_NEXT_HOP
	LocalRouting_LOCAL_DEFINED_NEXT_HOP_UNSET E_LocalRouting_LOCAL_DEFINED_NEXT_HOP = 0
	// LocalRouting_LOCAL_DEFINED_NEXT_HOP_DROP corresponds to the value DROP of LocalRouting_LOCAL_DEFINED_NEXT_HOP
	LocalRouting_LOCAL_DEFINED_NEXT_HOP_DROP E_LocalRouting_LOCAL_DEFINED_NEXT_HOP = 1
	// LocalRouting_LOCAL_DEFINED_NEXT_HOP_LOCAL_LINK corresponds to the value LOCAL_LINK of LocalRouting_LOCAL_DEFINED_NEXT_HOP
	LocalRouting_LOCAL_DEFINED_NEXT_HOP_LOCAL_LINK E_LocalRouting_LOCAL_DEFINED_NEXT_HOP = 2
)

// E_LsaGeneration_TimerType is a derived int64 type which is used to represent
// the enumerated node LsaGeneration_TimerType. An additional value named
// LsaGeneration_TimerType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_LsaGeneration_TimerType int64

// IsYANGGoEnum ensures that LsaGeneration_TimerType implements the yang.GoEnum
// interface. This ensures that LsaGeneration_TimerType can be identified as a
// mapped type for a YANG enumeration.
func (E_LsaGeneration_TimerType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  LsaGeneration_TimerType.
func (E_LsaGeneration_TimerType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_LsaGeneration_TimerType.
func (e E_LsaGeneration_TimerType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_LsaGeneration_TimerType")
}

const (
	// LsaGeneration_TimerType_UNSET corresponds to the value UNSET of LsaGeneration_TimerType
	LsaGeneration_TimerType_UNSET E_LsaGeneration_TimerType = 0
	// LsaGeneration_TimerType_LINEAR_BACKOFF corresponds to the value LINEAR_BACKOFF of LsaGeneration_TimerType
	LsaGeneration_TimerType_LINEAR_BACKOFF E_LsaGeneration_TimerType = 1
	// LsaGeneration_TimerType_EXPONENTIAL_BACKOFF corresponds to the value EXPONENTIAL_BACKOFF of LsaGeneration_TimerType
	LsaGeneration_TimerType_EXPONENTIAL_BACKOFF E_LsaGeneration_TimerType = 2
)

// E_Lsp_Flags is a derived int64 type which is used to represent
// the enumerated node Lsp_Flags. An additional value named
// Lsp_Flags_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Lsp_Flags int64

// IsYANGGoEnum ensures that Lsp_Flags implements the yang.GoEnum
// interface. This ensures that Lsp_Flags can be identified as a
// mapped type for a YANG enumeration.
func (E_Lsp_Flags) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Lsp_Flags.
func (E_Lsp_Flags) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Lsp_Flags.
func (e E_Lsp_Flags) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Lsp_Flags")
}

const (
	// Lsp_Flags_UNSET corresponds to the value UNSET of Lsp_Flags
	Lsp_Flags_UNSET E_Lsp_Flags = 0
	// Lsp_Flags_PARTITION_REPAIR corresponds to the value PARTITION_REPAIR of Lsp_Flags
	Lsp_Flags_PARTITION_REPAIR E_Lsp_Flags = 1
	// Lsp_Flags_ATTACHED_ERROR corresponds to the value ATTACHED_ERROR of Lsp_Flags
	Lsp_Flags_ATTACHED_ERROR E_Lsp_Flags = 2
	// Lsp_Flags_ATTACHED_EXPENSE corresponds to the value ATTACHED_EXPENSE of Lsp_Flags
	Lsp_Flags_ATTACHED_EXPENSE E_Lsp_Flags = 3
	// Lsp_Flags_ATTACHED_DELAY corresponds to the value ATTACHED_DELAY of Lsp_Flags
	Lsp_Flags_ATTACHED_DELAY E_Lsp_Flags = 4
	// Lsp_Flags_ATTACHED_DEFAULT corresponds to the value ATTACHED_DEFAULT of Lsp_Flags
	Lsp_Flags_ATTACHED_DEFAULT E_Lsp_Flags = 5
	// Lsp_Flags_OVERLOAD corresponds to the value OVERLOAD of Lsp_Flags
	Lsp_Flags_OVERLOAD E_Lsp_Flags = 6
)

// E_Lsp_PduType is a derived int64 type which is used to represent
// the enumerated node Lsp_PduType. An additional value named
// Lsp_PduType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Lsp_PduType int64

// IsYANGGoEnum ensures that Lsp_PduType implements the yang.GoEnum
// interface. This ensures that Lsp_PduType can be identified as a
// mapped type for a YANG enumeration.
func (E_Lsp_PduType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Lsp_PduType.
func (E_Lsp_PduType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Lsp_PduType.
func (e E_Lsp_PduType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Lsp_PduType")
}

const (
	// Lsp_PduType_UNSET corresponds to the value UNSET of Lsp_PduType
	Lsp_PduType_UNSET E_Lsp_PduType = 0
	// Lsp_PduType_LEVEL_1 corresponds to the value LEVEL_1 of Lsp_PduType
	Lsp_PduType_LEVEL_1 E_Lsp_PduType = 1
	// Lsp_PduType_LEVEL_2 corresponds to the value LEVEL_2 of Lsp_PduType
	Lsp_PduType_LEVEL_2 E_Lsp_PduType = 2
)

// E_Messages_DEBUG_SERVICE is a derived int64 type which is used to represent
// the enumerated node Messages_DEBUG_SERVICE. An additional value named
// Messages_DEBUG_SERVICE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Messages_DEBUG_SERVICE int64

// IsYANGGoEnum ensures that Messages_DEBUG_SERVICE implements the yang.GoEnum
// interface. This ensures that Messages_DEBUG_SERVICE can be identified as a
// mapped type for a YANG enumeration.
func (E_Messages_DEBUG_SERVICE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Messages_DEBUG_SERVICE.
func (E_Messages_DEBUG_SERVICE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Messages_DEBUG_SERVICE.
func (e E_Messages_DEBUG_SERVICE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Messages_DEBUG_SERVICE")
}

const (
	// Messages_DEBUG_SERVICE_UNSET corresponds to the value UNSET of Messages_DEBUG_SERVICE
	Messages_DEBUG_SERVICE_UNSET E_Messages_DEBUG_SERVICE = 0
)

// E_MplsLdp_LabelAdvertisementMode is a derived int64 type which is used to represent
// the enumerated node MplsLdp_LabelAdvertisementMode. An additional value named
// MplsLdp_LabelAdvertisementMode_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_MplsLdp_LabelAdvertisementMode int64

// IsYANGGoEnum ensures that MplsLdp_LabelAdvertisementMode implements the yang.GoEnum
// interface. This ensures that MplsLdp_LabelAdvertisementMode can be identified as a
// mapped type for a YANG enumeration.
func (E_MplsLdp_LabelAdvertisementMode) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  MplsLdp_LabelAdvertisementMode.
func (E_MplsLdp_LabelAdvertisementMode) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_MplsLdp_LabelAdvertisementMode.
func (e E_MplsLdp_LabelAdvertisementMode) String() string {
	return ygot.EnumLogString(e, int64(e), "E_MplsLdp_LabelAdvertisementMode")
}

const (
	// MplsLdp_LabelAdvertisementMode_UNSET corresponds to the value UNSET of MplsLdp_LabelAdvertisementMode
	MplsLdp_LabelAdvertisementMode_UNSET E_MplsLdp_LabelAdvertisementMode = 0
	// MplsLdp_LabelAdvertisementMode_DOWNSTREAM_UNSOLICITED corresponds to the value DOWNSTREAM_UNSOLICITED of MplsLdp_LabelAdvertisementMode
	MplsLdp_LabelAdvertisementMode_DOWNSTREAM_UNSOLICITED E_MplsLdp_LabelAdvertisementMode = 1
	// MplsLdp_LabelAdvertisementMode_DOWNSTREAM_ON_DEMAND corresponds to the value DOWNSTREAM_ON_DEMAND of MplsLdp_LabelAdvertisementMode
	MplsLdp_LabelAdvertisementMode_DOWNSTREAM_ON_DEMAND E_MplsLdp_LabelAdvertisementMode = 2
)

// E_MplsLdp_MplsLdpAdjacencyType is a derived int64 type which is used to represent
// the enumerated node MplsLdp_MplsLdpAdjacencyType. An additional value named
// MplsLdp_MplsLdpAdjacencyType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_MplsLdp_MplsLdpAdjacencyType int64

// IsYANGGoEnum ensures that MplsLdp_MplsLdpAdjacencyType implements the yang.GoEnum
// interface. This ensures that MplsLdp_MplsLdpAdjacencyType can be identified as a
// mapped type for a YANG enumeration.
func (E_MplsLdp_MplsLdpAdjacencyType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  MplsLdp_MplsLdpAdjacencyType.
func (E_MplsLdp_MplsLdpAdjacencyType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_MplsLdp_MplsLdpAdjacencyType.
func (e E_MplsLdp_MplsLdpAdjacencyType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_MplsLdp_MplsLdpAdjacencyType")
}

const (
	// MplsLdp_MplsLdpAdjacencyType_UNSET corresponds to the value UNSET of MplsLdp_MplsLdpAdjacencyType
	MplsLdp_MplsLdpAdjacencyType_UNSET E_MplsLdp_MplsLdpAdjacencyType = 0
	// MplsLdp_MplsLdpAdjacencyType_LINK corresponds to the value LINK of MplsLdp_MplsLdpAdjacencyType
	MplsLdp_MplsLdpAdjacencyType_LINK E_MplsLdp_MplsLdpAdjacencyType = 1
	// MplsLdp_MplsLdpAdjacencyType_TARGETED corresponds to the value TARGETED of MplsLdp_MplsLdpAdjacencyType
	MplsLdp_MplsLdpAdjacencyType_TARGETED E_MplsLdp_MplsLdpAdjacencyType = 2
)

// E_MplsLdp_MplsLdpAfi is a derived int64 type which is used to represent
// the enumerated node MplsLdp_MplsLdpAfi. An additional value named
// MplsLdp_MplsLdpAfi_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_MplsLdp_MplsLdpAfi int64

// IsYANGGoEnum ensures that MplsLdp_MplsLdpAfi implements the yang.GoEnum
// interface. This ensures that MplsLdp_MplsLdpAfi can be identified as a
// mapped type for a YANG enumeration.
func (E_MplsLdp_MplsLdpAfi) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  MplsLdp_MplsLdpAfi.
func (E_MplsLdp_MplsLdpAfi) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_MplsLdp_MplsLdpAfi.
func (e E_MplsLdp_MplsLdpAfi) String() string {
	return ygot.EnumLogString(e, int64(e), "E_MplsLdp_MplsLdpAfi")
}

const (
	// MplsLdp_MplsLdpAfi_UNSET corresponds to the value UNSET of MplsLdp_MplsLdpAfi
	MplsLdp_MplsLdpAfi_UNSET E_MplsLdp_MplsLdpAfi = 0
	// MplsLdp_MplsLdpAfi_IPV4 corresponds to the value IPV4 of MplsLdp_MplsLdpAfi
	MplsLdp_MplsLdpAfi_IPV4 E_MplsLdp_MplsLdpAfi = 1
	// MplsLdp_MplsLdpAfi_IPV6 corresponds to the value IPV6 of MplsLdp_MplsLdpAfi
	MplsLdp_MplsLdpAfi_IPV6 E_MplsLdp_MplsLdpAfi = 2
)

// E_MplsLdp_Neighbor_SessionState is a derived int64 type which is used to represent
// the enumerated node MplsLdp_Neighbor_SessionState. An additional value named
// MplsLdp_Neighbor_SessionState_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_MplsLdp_Neighbor_SessionState int64

// IsYANGGoEnum ensures that MplsLdp_Neighbor_SessionState implements the yang.GoEnum
// interface. This ensures that MplsLdp_Neighbor_SessionState can be identified as a
// mapped type for a YANG enumeration.
func (E_MplsLdp_Neighbor_SessionState) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  MplsLdp_Neighbor_SessionState.
func (E_MplsLdp_Neighbor_SessionState) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_MplsLdp_Neighbor_SessionState.
func (e E_MplsLdp_Neighbor_SessionState) String() string {
	return ygot.EnumLogString(e, int64(e), "E_MplsLdp_Neighbor_SessionState")
}

const (
	// MplsLdp_Neighbor_SessionState_UNSET corresponds to the value UNSET of MplsLdp_Neighbor_SessionState
	MplsLdp_Neighbor_SessionState_UNSET E_MplsLdp_Neighbor_SessionState = 0
	// MplsLdp_Neighbor_SessionState_NON_EXISTENT corresponds to the value NON_EXISTENT of MplsLdp_Neighbor_SessionState
	MplsLdp_Neighbor_SessionState_NON_EXISTENT E_MplsLdp_Neighbor_SessionState = 1
	// MplsLdp_Neighbor_SessionState_INITIALIZED corresponds to the value INITIALIZED of MplsLdp_Neighbor_SessionState
	MplsLdp_Neighbor_SessionState_INITIALIZED E_MplsLdp_Neighbor_SessionState = 2
	// MplsLdp_Neighbor_SessionState_OPENREC corresponds to the value OPENREC of MplsLdp_Neighbor_SessionState
	MplsLdp_Neighbor_SessionState_OPENREC E_MplsLdp_Neighbor_SessionState = 3
	// MplsLdp_Neighbor_SessionState_OPENSENT corresponds to the value OPENSENT of MplsLdp_Neighbor_SessionState
	MplsLdp_Neighbor_SessionState_OPENSENT E_MplsLdp_Neighbor_SessionState = 4
	// MplsLdp_Neighbor_SessionState_OPERATIONAL corresponds to the value OPERATIONAL of MplsLdp_Neighbor_SessionState
	MplsLdp_Neighbor_SessionState_OPERATIONAL E_MplsLdp_Neighbor_SessionState = 5
)

// E_MplsTypes_LSP_METRIC_TYPE is a derived int64 type which is used to represent
// the enumerated node MplsTypes_LSP_METRIC_TYPE. An additional value named
// MplsTypes_LSP_METRIC_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_MplsTypes_LSP_METRIC_TYPE int64

// IsYANGGoEnum ensures that MplsTypes_LSP_METRIC_TYPE implements the yang.GoEnum
// interface. This ensures that MplsTypes_LSP_METRIC_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_MplsTypes_LSP_METRIC_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  MplsTypes_LSP_METRIC_TYPE.
func (E_MplsTypes_LSP_METRIC_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_MplsTypes_LSP_METRIC_TYPE.
func (e E_MplsTypes_LSP_METRIC_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_MplsTypes_LSP_METRIC_TYPE")
}

const (
	// MplsTypes_LSP_METRIC_TYPE_UNSET corresponds to the value UNSET of MplsTypes_LSP_METRIC_TYPE
	MplsTypes_LSP_METRIC_TYPE_UNSET E_MplsTypes_LSP_METRIC_TYPE = 0
	// MplsTypes_LSP_METRIC_TYPE_LSP_METRIC_ABSOLUTE corresponds to the value LSP_METRIC_ABSOLUTE of MplsTypes_LSP_METRIC_TYPE
	MplsTypes_LSP_METRIC_TYPE_LSP_METRIC_ABSOLUTE E_MplsTypes_LSP_METRIC_TYPE = 1
	// MplsTypes_LSP_METRIC_TYPE_LSP_METRIC_INHERITED corresponds to the value LSP_METRIC_INHERITED of MplsTypes_LSP_METRIC_TYPE
	MplsTypes_LSP_METRIC_TYPE_LSP_METRIC_INHERITED E_MplsTypes_LSP_METRIC_TYPE = 2
	// MplsTypes_LSP_METRIC_TYPE_LSP_METRIC_RELATIVE corresponds to the value LSP_METRIC_RELATIVE of MplsTypes_LSP_METRIC_TYPE
	MplsTypes_LSP_METRIC_TYPE_LSP_METRIC_RELATIVE E_MplsTypes_LSP_METRIC_TYPE = 3
)

// E_MplsTypes_LSP_OPER_STATUS is a derived int64 type which is used to represent
// the enumerated node MplsTypes_LSP_OPER_STATUS. An additional value named
// MplsTypes_LSP_OPER_STATUS_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_MplsTypes_LSP_OPER_STATUS int64

// IsYANGGoEnum ensures that MplsTypes_LSP_OPER_STATUS implements the yang.GoEnum
// interface. This ensures that MplsTypes_LSP_OPER_STATUS can be identified as a
// mapped type for a YANG enumeration.
func (E_MplsTypes_LSP_OPER_STATUS) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  MplsTypes_LSP_OPER_STATUS.
func (E_MplsTypes_LSP_OPER_STATUS) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_MplsTypes_LSP_OPER_STATUS.
func (e E_MplsTypes_LSP_OPER_STATUS) String() string {
	return ygot.EnumLogString(e, int64(e), "E_MplsTypes_LSP_OPER_STATUS")
}

const (
	// MplsTypes_LSP_OPER_STATUS_UNSET corresponds to the value UNSET of MplsTypes_LSP_OPER_STATUS
	MplsTypes_LSP_OPER_STATUS_UNSET E_MplsTypes_LSP_OPER_STATUS = 0
	// MplsTypes_LSP_OPER_STATUS_DOWN corresponds to the value DOWN of MplsTypes_LSP_OPER_STATUS
	MplsTypes_LSP_OPER_STATUS_DOWN E_MplsTypes_LSP_OPER_STATUS = 1
	// MplsTypes_LSP_OPER_STATUS_UP corresponds to the value UP of MplsTypes_LSP_OPER_STATUS
	MplsTypes_LSP_OPER_STATUS_UP E_MplsTypes_LSP_OPER_STATUS = 2
)

// E_MplsTypes_LSP_ROLE is a derived int64 type which is used to represent
// the enumerated node MplsTypes_LSP_ROLE. An additional value named
// MplsTypes_LSP_ROLE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_MplsTypes_LSP_ROLE int64

// IsYANGGoEnum ensures that MplsTypes_LSP_ROLE implements the yang.GoEnum
// interface. This ensures that MplsTypes_LSP_ROLE can be identified as a
// mapped type for a YANG enumeration.
func (E_MplsTypes_LSP_ROLE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  MplsTypes_LSP_ROLE.
func (E_MplsTypes_LSP_ROLE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_MplsTypes_LSP_ROLE.
func (e E_MplsTypes_LSP_ROLE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_MplsTypes_LSP_ROLE")
}

const (
	// MplsTypes_LSP_ROLE_UNSET corresponds to the value UNSET of MplsTypes_LSP_ROLE
	MplsTypes_LSP_ROLE_UNSET E_MplsTypes_LSP_ROLE = 0
	// MplsTypes_LSP_ROLE_EGRESS corresponds to the value EGRESS of MplsTypes_LSP_ROLE
	MplsTypes_LSP_ROLE_EGRESS E_MplsTypes_LSP_ROLE = 1
	// MplsTypes_LSP_ROLE_INGRESS corresponds to the value INGRESS of MplsTypes_LSP_ROLE
	MplsTypes_LSP_ROLE_INGRESS E_MplsTypes_LSP_ROLE = 2
	// MplsTypes_LSP_ROLE_TRANSIT corresponds to the value TRANSIT of MplsTypes_LSP_ROLE
	MplsTypes_LSP_ROLE_TRANSIT E_MplsTypes_LSP_ROLE = 3
)

// E_MplsTypes_MplsLabel_Enum is a derived int64 type which is used to represent
// the enumerated node MplsTypes_MplsLabel_Enum. An additional value named
// MplsTypes_MplsLabel_Enum_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_MplsTypes_MplsLabel_Enum int64

// IsYANGGoEnum ensures that MplsTypes_MplsLabel_Enum implements the yang.GoEnum
// interface. This ensures that MplsTypes_MplsLabel_Enum can be identified as a
// mapped type for a YANG enumeration.
func (E_MplsTypes_MplsLabel_Enum) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  MplsTypes_MplsLabel_Enum.
func (E_MplsTypes_MplsLabel_Enum) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_MplsTypes_MplsLabel_Enum.
func (e E_MplsTypes_MplsLabel_Enum) String() string {
	return ygot.EnumLogString(e, int64(e), "E_MplsTypes_MplsLabel_Enum")
}

const (
	// MplsTypes_MplsLabel_Enum_UNSET corresponds to the value UNSET of MplsTypes_MplsLabel_Enum
	MplsTypes_MplsLabel_Enum_UNSET E_MplsTypes_MplsLabel_Enum = 0
	// MplsTypes_MplsLabel_Enum_IPV4_EXPLICIT_NULL corresponds to the value IPV4_EXPLICIT_NULL of MplsTypes_MplsLabel_Enum
	MplsTypes_MplsLabel_Enum_IPV4_EXPLICIT_NULL E_MplsTypes_MplsLabel_Enum = 1
	// MplsTypes_MplsLabel_Enum_ROUTER_ALERT corresponds to the value ROUTER_ALERT of MplsTypes_MplsLabel_Enum
	MplsTypes_MplsLabel_Enum_ROUTER_ALERT E_MplsTypes_MplsLabel_Enum = 2
	// MplsTypes_MplsLabel_Enum_IPV6_EXPLICIT_NULL corresponds to the value IPV6_EXPLICIT_NULL of MplsTypes_MplsLabel_Enum
	MplsTypes_MplsLabel_Enum_IPV6_EXPLICIT_NULL E_MplsTypes_MplsLabel_Enum = 3
	// MplsTypes_MplsLabel_Enum_IMPLICIT_NULL corresponds to the value IMPLICIT_NULL of MplsTypes_MplsLabel_Enum
	MplsTypes_MplsLabel_Enum_IMPLICIT_NULL E_MplsTypes_MplsLabel_Enum = 4
	// MplsTypes_MplsLabel_Enum_ENTROPY_LABEL_INDICATOR corresponds to the value ENTROPY_LABEL_INDICATOR of MplsTypes_MplsLabel_Enum
	MplsTypes_MplsLabel_Enum_ENTROPY_LABEL_INDICATOR E_MplsTypes_MplsLabel_Enum = 8
	// MplsTypes_MplsLabel_Enum_NO_LABEL corresponds to the value NO_LABEL of MplsTypes_MplsLabel_Enum
	MplsTypes_MplsLabel_Enum_NO_LABEL E_MplsTypes_MplsLabel_Enum = 9
)

// E_MplsTypes_NULL_LABEL_TYPE is a derived int64 type which is used to represent
// the enumerated node MplsTypes_NULL_LABEL_TYPE. An additional value named
// MplsTypes_NULL_LABEL_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_MplsTypes_NULL_LABEL_TYPE int64

// IsYANGGoEnum ensures that MplsTypes_NULL_LABEL_TYPE implements the yang.GoEnum
// interface. This ensures that MplsTypes_NULL_LABEL_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_MplsTypes_NULL_LABEL_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  MplsTypes_NULL_LABEL_TYPE.
func (E_MplsTypes_NULL_LABEL_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_MplsTypes_NULL_LABEL_TYPE.
func (e E_MplsTypes_NULL_LABEL_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_MplsTypes_NULL_LABEL_TYPE")
}

const (
	// MplsTypes_NULL_LABEL_TYPE_UNSET corresponds to the value UNSET of MplsTypes_NULL_LABEL_TYPE
	MplsTypes_NULL_LABEL_TYPE_UNSET E_MplsTypes_NULL_LABEL_TYPE = 0
	// MplsTypes_NULL_LABEL_TYPE_EXPLICIT corresponds to the value EXPLICIT of MplsTypes_NULL_LABEL_TYPE
	MplsTypes_NULL_LABEL_TYPE_EXPLICIT E_MplsTypes_NULL_LABEL_TYPE = 1
	// MplsTypes_NULL_LABEL_TYPE_IMPLICIT corresponds to the value IMPLICIT of MplsTypes_NULL_LABEL_TYPE
	MplsTypes_NULL_LABEL_TYPE_IMPLICIT E_MplsTypes_NULL_LABEL_TYPE = 2
)

// E_MplsTypes_PATH_COMPUTATION_METHOD is a derived int64 type which is used to represent
// the enumerated node MplsTypes_PATH_COMPUTATION_METHOD. An additional value named
// MplsTypes_PATH_COMPUTATION_METHOD_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_MplsTypes_PATH_COMPUTATION_METHOD int64

// IsYANGGoEnum ensures that MplsTypes_PATH_COMPUTATION_METHOD implements the yang.GoEnum
// interface. This ensures that MplsTypes_PATH_COMPUTATION_METHOD can be identified as a
// mapped type for a YANG enumeration.
func (E_MplsTypes_PATH_COMPUTATION_METHOD) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  MplsTypes_PATH_COMPUTATION_METHOD.
func (E_MplsTypes_PATH_COMPUTATION_METHOD) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_MplsTypes_PATH_COMPUTATION_METHOD.
func (e E_MplsTypes_PATH_COMPUTATION_METHOD) String() string {
	return ygot.EnumLogString(e, int64(e), "E_MplsTypes_PATH_COMPUTATION_METHOD")
}

const (
	// MplsTypes_PATH_COMPUTATION_METHOD_UNSET corresponds to the value UNSET of MplsTypes_PATH_COMPUTATION_METHOD
	MplsTypes_PATH_COMPUTATION_METHOD_UNSET E_MplsTypes_PATH_COMPUTATION_METHOD = 0
	// MplsTypes_PATH_COMPUTATION_METHOD_EXPLICITLY_DEFINED corresponds to the value EXPLICITLY_DEFINED of MplsTypes_PATH_COMPUTATION_METHOD
	MplsTypes_PATH_COMPUTATION_METHOD_EXPLICITLY_DEFINED E_MplsTypes_PATH_COMPUTATION_METHOD = 1
	// MplsTypes_PATH_COMPUTATION_METHOD_EXTERNALLY_QUERIED corresponds to the value EXTERNALLY_QUERIED of MplsTypes_PATH_COMPUTATION_METHOD
	MplsTypes_PATH_COMPUTATION_METHOD_EXTERNALLY_QUERIED E_MplsTypes_PATH_COMPUTATION_METHOD = 2
	// MplsTypes_PATH_COMPUTATION_METHOD_LOCALLY_COMPUTED corresponds to the value LOCALLY_COMPUTED of MplsTypes_PATH_COMPUTATION_METHOD
	MplsTypes_PATH_COMPUTATION_METHOD_LOCALLY_COMPUTED E_MplsTypes_PATH_COMPUTATION_METHOD = 3
)

// E_MplsTypes_PATH_METRIC_TYPE is a derived int64 type which is used to represent
// the enumerated node MplsTypes_PATH_METRIC_TYPE. An additional value named
// MplsTypes_PATH_METRIC_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_MplsTypes_PATH_METRIC_TYPE int64

// IsYANGGoEnum ensures that MplsTypes_PATH_METRIC_TYPE implements the yang.GoEnum
// interface. This ensures that MplsTypes_PATH_METRIC_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_MplsTypes_PATH_METRIC_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  MplsTypes_PATH_METRIC_TYPE.
func (E_MplsTypes_PATH_METRIC_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_MplsTypes_PATH_METRIC_TYPE.
func (e E_MplsTypes_PATH_METRIC_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_MplsTypes_PATH_METRIC_TYPE")
}

const (
	// MplsTypes_PATH_METRIC_TYPE_UNSET corresponds to the value UNSET of MplsTypes_PATH_METRIC_TYPE
	MplsTypes_PATH_METRIC_TYPE_UNSET E_MplsTypes_PATH_METRIC_TYPE = 0
	// MplsTypes_PATH_METRIC_TYPE_HOP_COUNT corresponds to the value HOP_COUNT of MplsTypes_PATH_METRIC_TYPE
	MplsTypes_PATH_METRIC_TYPE_HOP_COUNT E_MplsTypes_PATH_METRIC_TYPE = 1
	// MplsTypes_PATH_METRIC_TYPE_IGP_METRIC corresponds to the value IGP_METRIC of MplsTypes_PATH_METRIC_TYPE
	MplsTypes_PATH_METRIC_TYPE_IGP_METRIC E_MplsTypes_PATH_METRIC_TYPE = 2
	// MplsTypes_PATH_METRIC_TYPE_PATH_DELAY corresponds to the value PATH_DELAY of MplsTypes_PATH_METRIC_TYPE
	MplsTypes_PATH_METRIC_TYPE_PATH_DELAY E_MplsTypes_PATH_METRIC_TYPE = 3
	// MplsTypes_PATH_METRIC_TYPE_TE_METRIC corresponds to the value TE_METRIC of MplsTypes_PATH_METRIC_TYPE
	MplsTypes_PATH_METRIC_TYPE_TE_METRIC E_MplsTypes_PATH_METRIC_TYPE = 4
)

// E_MplsTypes_PATH_SETUP_PROTOCOL is a derived int64 type which is used to represent
// the enumerated node MplsTypes_PATH_SETUP_PROTOCOL. An additional value named
// MplsTypes_PATH_SETUP_PROTOCOL_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_MplsTypes_PATH_SETUP_PROTOCOL int64

// IsYANGGoEnum ensures that MplsTypes_PATH_SETUP_PROTOCOL implements the yang.GoEnum
// interface. This ensures that MplsTypes_PATH_SETUP_PROTOCOL can be identified as a
// mapped type for a YANG enumeration.
func (E_MplsTypes_PATH_SETUP_PROTOCOL) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  MplsTypes_PATH_SETUP_PROTOCOL.
func (E_MplsTypes_PATH_SETUP_PROTOCOL) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_MplsTypes_PATH_SETUP_PROTOCOL.
func (e E_MplsTypes_PATH_SETUP_PROTOCOL) String() string {
	return ygot.EnumLogString(e, int64(e), "E_MplsTypes_PATH_SETUP_PROTOCOL")
}

const (
	// MplsTypes_PATH_SETUP_PROTOCOL_UNSET corresponds to the value UNSET of MplsTypes_PATH_SETUP_PROTOCOL
	MplsTypes_PATH_SETUP_PROTOCOL_UNSET E_MplsTypes_PATH_SETUP_PROTOCOL = 0
	// MplsTypes_PATH_SETUP_PROTOCOL_PATH_SETUP_LDP corresponds to the value PATH_SETUP_LDP of MplsTypes_PATH_SETUP_PROTOCOL
	MplsTypes_PATH_SETUP_PROTOCOL_PATH_SETUP_LDP E_MplsTypes_PATH_SETUP_PROTOCOL = 1
	// MplsTypes_PATH_SETUP_PROTOCOL_PATH_SETUP_RSVP corresponds to the value PATH_SETUP_RSVP of MplsTypes_PATH_SETUP_PROTOCOL
	MplsTypes_PATH_SETUP_PROTOCOL_PATH_SETUP_RSVP E_MplsTypes_PATH_SETUP_PROTOCOL = 2
	// MplsTypes_PATH_SETUP_PROTOCOL_PATH_SETUP_SR corresponds to the value PATH_SETUP_SR of MplsTypes_PATH_SETUP_PROTOCOL
	MplsTypes_PATH_SETUP_PROTOCOL_PATH_SETUP_SR E_MplsTypes_PATH_SETUP_PROTOCOL = 3
)

// E_MplsTypes_PROTECTION_TYPE is a derived int64 type which is used to represent
// the enumerated node MplsTypes_PROTECTION_TYPE. An additional value named
// MplsTypes_PROTECTION_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_MplsTypes_PROTECTION_TYPE int64

// IsYANGGoEnum ensures that MplsTypes_PROTECTION_TYPE implements the yang.GoEnum
// interface. This ensures that MplsTypes_PROTECTION_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_MplsTypes_PROTECTION_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  MplsTypes_PROTECTION_TYPE.
func (E_MplsTypes_PROTECTION_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_MplsTypes_PROTECTION_TYPE.
func (e E_MplsTypes_PROTECTION_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_MplsTypes_PROTECTION_TYPE")
}

const (
	// MplsTypes_PROTECTION_TYPE_UNSET corresponds to the value UNSET of MplsTypes_PROTECTION_TYPE
	MplsTypes_PROTECTION_TYPE_UNSET E_MplsTypes_PROTECTION_TYPE = 0
	// MplsTypes_PROTECTION_TYPE_LINK_NODE_PROTECTION_REQUESTED corresponds to the value LINK_NODE_PROTECTION_REQUESTED of MplsTypes_PROTECTION_TYPE
	MplsTypes_PROTECTION_TYPE_LINK_NODE_PROTECTION_REQUESTED E_MplsTypes_PROTECTION_TYPE = 1
	// MplsTypes_PROTECTION_TYPE_LINK_PROTECTION_REQUIRED corresponds to the value LINK_PROTECTION_REQUIRED of MplsTypes_PROTECTION_TYPE
	MplsTypes_PROTECTION_TYPE_LINK_PROTECTION_REQUIRED E_MplsTypes_PROTECTION_TYPE = 2
	// MplsTypes_PROTECTION_TYPE_UNPROTECTED corresponds to the value UNPROTECTED of MplsTypes_PROTECTION_TYPE
	MplsTypes_PROTECTION_TYPE_UNPROTECTED E_MplsTypes_PROTECTION_TYPE = 3
)

// E_MplsTypes_PSEUDOWIRE_ENCAPSULATION is a derived int64 type which is used to represent
// the enumerated node MplsTypes_PSEUDOWIRE_ENCAPSULATION. An additional value named
// MplsTypes_PSEUDOWIRE_ENCAPSULATION_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_MplsTypes_PSEUDOWIRE_ENCAPSULATION int64

// IsYANGGoEnum ensures that MplsTypes_PSEUDOWIRE_ENCAPSULATION implements the yang.GoEnum
// interface. This ensures that MplsTypes_PSEUDOWIRE_ENCAPSULATION can be identified as a
// mapped type for a YANG enumeration.
func (E_MplsTypes_PSEUDOWIRE_ENCAPSULATION) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  MplsTypes_PSEUDOWIRE_ENCAPSULATION.
func (E_MplsTypes_PSEUDOWIRE_ENCAPSULATION) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_MplsTypes_PSEUDOWIRE_ENCAPSULATION.
func (e E_MplsTypes_PSEUDOWIRE_ENCAPSULATION) String() string {
	return ygot.EnumLogString(e, int64(e), "E_MplsTypes_PSEUDOWIRE_ENCAPSULATION")
}

const (
	// MplsTypes_PSEUDOWIRE_ENCAPSULATION_UNSET corresponds to the value UNSET of MplsTypes_PSEUDOWIRE_ENCAPSULATION
	MplsTypes_PSEUDOWIRE_ENCAPSULATION_UNSET E_MplsTypes_PSEUDOWIRE_ENCAPSULATION = 0
	// MplsTypes_PSEUDOWIRE_ENCAPSULATION_PWE_ETHERNET_RAW_MODE corresponds to the value PWE_ETHERNET_RAW_MODE of MplsTypes_PSEUDOWIRE_ENCAPSULATION
	MplsTypes_PSEUDOWIRE_ENCAPSULATION_PWE_ETHERNET_RAW_MODE E_MplsTypes_PSEUDOWIRE_ENCAPSULATION = 1
	// MplsTypes_PSEUDOWIRE_ENCAPSULATION_PWE_ETHERNET_TAGGED_MODE corresponds to the value PWE_ETHERNET_TAGGED_MODE of MplsTypes_PSEUDOWIRE_ENCAPSULATION
	MplsTypes_PSEUDOWIRE_ENCAPSULATION_PWE_ETHERNET_TAGGED_MODE E_MplsTypes_PSEUDOWIRE_ENCAPSULATION = 2
)

// E_MplsTypes_RSVP_AUTH_TYPE is a derived int64 type which is used to represent
// the enumerated node MplsTypes_RSVP_AUTH_TYPE. An additional value named
// MplsTypes_RSVP_AUTH_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_MplsTypes_RSVP_AUTH_TYPE int64

// IsYANGGoEnum ensures that MplsTypes_RSVP_AUTH_TYPE implements the yang.GoEnum
// interface. This ensures that MplsTypes_RSVP_AUTH_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_MplsTypes_RSVP_AUTH_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  MplsTypes_RSVP_AUTH_TYPE.
func (E_MplsTypes_RSVP_AUTH_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_MplsTypes_RSVP_AUTH_TYPE.
func (e E_MplsTypes_RSVP_AUTH_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_MplsTypes_RSVP_AUTH_TYPE")
}

const (
	// MplsTypes_RSVP_AUTH_TYPE_UNSET corresponds to the value UNSET of MplsTypes_RSVP_AUTH_TYPE
	MplsTypes_RSVP_AUTH_TYPE_UNSET E_MplsTypes_RSVP_AUTH_TYPE = 0
	// MplsTypes_RSVP_AUTH_TYPE_RSVP_AUTH_MD5 corresponds to the value RSVP_AUTH_MD5 of MplsTypes_RSVP_AUTH_TYPE
	MplsTypes_RSVP_AUTH_TYPE_RSVP_AUTH_MD5 E_MplsTypes_RSVP_AUTH_TYPE = 1
)

// E_MplsTypes_TUNNEL_ADMIN_STATUS is a derived int64 type which is used to represent
// the enumerated node MplsTypes_TUNNEL_ADMIN_STATUS. An additional value named
// MplsTypes_TUNNEL_ADMIN_STATUS_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_MplsTypes_TUNNEL_ADMIN_STATUS int64

// IsYANGGoEnum ensures that MplsTypes_TUNNEL_ADMIN_STATUS implements the yang.GoEnum
// interface. This ensures that MplsTypes_TUNNEL_ADMIN_STATUS can be identified as a
// mapped type for a YANG enumeration.
func (E_MplsTypes_TUNNEL_ADMIN_STATUS) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  MplsTypes_TUNNEL_ADMIN_STATUS.
func (E_MplsTypes_TUNNEL_ADMIN_STATUS) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_MplsTypes_TUNNEL_ADMIN_STATUS.
func (e E_MplsTypes_TUNNEL_ADMIN_STATUS) String() string {
	return ygot.EnumLogString(e, int64(e), "E_MplsTypes_TUNNEL_ADMIN_STATUS")
}

const (
	// MplsTypes_TUNNEL_ADMIN_STATUS_UNSET corresponds to the value UNSET of MplsTypes_TUNNEL_ADMIN_STATUS
	MplsTypes_TUNNEL_ADMIN_STATUS_UNSET E_MplsTypes_TUNNEL_ADMIN_STATUS = 0
	// MplsTypes_TUNNEL_ADMIN_STATUS_ADMIN_DOWN corresponds to the value ADMIN_DOWN of MplsTypes_TUNNEL_ADMIN_STATUS
	MplsTypes_TUNNEL_ADMIN_STATUS_ADMIN_DOWN E_MplsTypes_TUNNEL_ADMIN_STATUS = 1
	// MplsTypes_TUNNEL_ADMIN_STATUS_ADMIN_UP corresponds to the value ADMIN_UP of MplsTypes_TUNNEL_ADMIN_STATUS
	MplsTypes_TUNNEL_ADMIN_STATUS_ADMIN_UP E_MplsTypes_TUNNEL_ADMIN_STATUS = 2
)

// E_MplsTypes_TUNNEL_TYPE is a derived int64 type which is used to represent
// the enumerated node MplsTypes_TUNNEL_TYPE. An additional value named
// MplsTypes_TUNNEL_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_MplsTypes_TUNNEL_TYPE int64

// IsYANGGoEnum ensures that MplsTypes_TUNNEL_TYPE implements the yang.GoEnum
// interface. This ensures that MplsTypes_TUNNEL_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_MplsTypes_TUNNEL_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  MplsTypes_TUNNEL_TYPE.
func (E_MplsTypes_TUNNEL_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_MplsTypes_TUNNEL_TYPE.
func (e E_MplsTypes_TUNNEL_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_MplsTypes_TUNNEL_TYPE")
}

const (
	// MplsTypes_TUNNEL_TYPE_UNSET corresponds to the value UNSET of MplsTypes_TUNNEL_TYPE
	MplsTypes_TUNNEL_TYPE_UNSET E_MplsTypes_TUNNEL_TYPE = 0
	// MplsTypes_TUNNEL_TYPE_P2MP corresponds to the value P2MP of MplsTypes_TUNNEL_TYPE
	MplsTypes_TUNNEL_TYPE_P2MP E_MplsTypes_TUNNEL_TYPE = 1
	// MplsTypes_TUNNEL_TYPE_P2P corresponds to the value P2P of MplsTypes_TUNNEL_TYPE
	MplsTypes_TUNNEL_TYPE_P2P E_MplsTypes_TUNNEL_TYPE = 2
)

// E_Mpls_CspfTieBreaking is a derived int64 type which is used to represent
// the enumerated node Mpls_CspfTieBreaking. An additional value named
// Mpls_CspfTieBreaking_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Mpls_CspfTieBreaking int64

// IsYANGGoEnum ensures that Mpls_CspfTieBreaking implements the yang.GoEnum
// interface. This ensures that Mpls_CspfTieBreaking can be identified as a
// mapped type for a YANG enumeration.
func (E_Mpls_CspfTieBreaking) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Mpls_CspfTieBreaking.
func (E_Mpls_CspfTieBreaking) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Mpls_CspfTieBreaking.
func (e E_Mpls_CspfTieBreaking) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Mpls_CspfTieBreaking")
}

const (
	// Mpls_CspfTieBreaking_UNSET corresponds to the value UNSET of Mpls_CspfTieBreaking
	Mpls_CspfTieBreaking_UNSET E_Mpls_CspfTieBreaking = 0
	// Mpls_CspfTieBreaking_RANDOM corresponds to the value RANDOM of Mpls_CspfTieBreaking
	Mpls_CspfTieBreaking_RANDOM E_Mpls_CspfTieBreaking = 1
	// Mpls_CspfTieBreaking_LEAST_FILL corresponds to the value LEAST_FILL of Mpls_CspfTieBreaking
	Mpls_CspfTieBreaking_LEAST_FILL E_Mpls_CspfTieBreaking = 2
	// Mpls_CspfTieBreaking_MOST_FILL corresponds to the value MOST_FILL of Mpls_CspfTieBreaking
	Mpls_CspfTieBreaking_MOST_FILL E_Mpls_CspfTieBreaking = 3
)

// E_Mpls_MplsHopType is a derived int64 type which is used to represent
// the enumerated node Mpls_MplsHopType. An additional value named
// Mpls_MplsHopType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Mpls_MplsHopType int64

// IsYANGGoEnum ensures that Mpls_MplsHopType implements the yang.GoEnum
// interface. This ensures that Mpls_MplsHopType can be identified as a
// mapped type for a YANG enumeration.
func (E_Mpls_MplsHopType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Mpls_MplsHopType.
func (E_Mpls_MplsHopType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Mpls_MplsHopType.
func (e E_Mpls_MplsHopType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Mpls_MplsHopType")
}

const (
	// Mpls_MplsHopType_UNSET corresponds to the value UNSET of Mpls_MplsHopType
	Mpls_MplsHopType_UNSET E_Mpls_MplsHopType = 0
	// Mpls_MplsHopType_LOOSE corresponds to the value LOOSE of Mpls_MplsHopType
	Mpls_MplsHopType_LOOSE E_Mpls_MplsHopType = 1
	// Mpls_MplsHopType_STRICT corresponds to the value STRICT of Mpls_MplsHopType
	Mpls_MplsHopType_STRICT E_Mpls_MplsHopType = 2
)

// E_Mpls_MplsSrlgFloodingType is a derived int64 type which is used to represent
// the enumerated node Mpls_MplsSrlgFloodingType. An additional value named
// Mpls_MplsSrlgFloodingType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Mpls_MplsSrlgFloodingType int64

// IsYANGGoEnum ensures that Mpls_MplsSrlgFloodingType implements the yang.GoEnum
// interface. This ensures that Mpls_MplsSrlgFloodingType can be identified as a
// mapped type for a YANG enumeration.
func (E_Mpls_MplsSrlgFloodingType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Mpls_MplsSrlgFloodingType.
func (E_Mpls_MplsSrlgFloodingType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Mpls_MplsSrlgFloodingType.
func (e E_Mpls_MplsSrlgFloodingType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Mpls_MplsSrlgFloodingType")
}

const (
	// Mpls_MplsSrlgFloodingType_UNSET corresponds to the value UNSET of Mpls_MplsSrlgFloodingType
	Mpls_MplsSrlgFloodingType_UNSET E_Mpls_MplsSrlgFloodingType = 0
	// Mpls_MplsSrlgFloodingType_FLOODED_SRLG corresponds to the value FLOODED_SRLG of Mpls_MplsSrlgFloodingType
	Mpls_MplsSrlgFloodingType_FLOODED_SRLG E_Mpls_MplsSrlgFloodingType = 1
	// Mpls_MplsSrlgFloodingType_STATIC_SRLG corresponds to the value STATIC_SRLG of Mpls_MplsSrlgFloodingType
	Mpls_MplsSrlgFloodingType_STATIC_SRLG E_Mpls_MplsSrlgFloodingType = 2
)

// E_Mpls_TeBandwidthType is a derived int64 type which is used to represent
// the enumerated node Mpls_TeBandwidthType. An additional value named
// Mpls_TeBandwidthType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Mpls_TeBandwidthType int64

// IsYANGGoEnum ensures that Mpls_TeBandwidthType implements the yang.GoEnum
// interface. This ensures that Mpls_TeBandwidthType can be identified as a
// mapped type for a YANG enumeration.
func (E_Mpls_TeBandwidthType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Mpls_TeBandwidthType.
func (E_Mpls_TeBandwidthType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Mpls_TeBandwidthType.
func (e E_Mpls_TeBandwidthType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Mpls_TeBandwidthType")
}

const (
	// Mpls_TeBandwidthType_UNSET corresponds to the value UNSET of Mpls_TeBandwidthType
	Mpls_TeBandwidthType_UNSET E_Mpls_TeBandwidthType = 0
	// Mpls_TeBandwidthType_SPECIFIED corresponds to the value SPECIFIED of Mpls_TeBandwidthType
	Mpls_TeBandwidthType_SPECIFIED E_Mpls_TeBandwidthType = 1
	// Mpls_TeBandwidthType_AUTO corresponds to the value AUTO of Mpls_TeBandwidthType
	Mpls_TeBandwidthType_AUTO E_Mpls_TeBandwidthType = 2
)

// E_NamedExplicitPath_SidSelectionMode is a derived int64 type which is used to represent
// the enumerated node NamedExplicitPath_SidSelectionMode. An additional value named
// NamedExplicitPath_SidSelectionMode_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_NamedExplicitPath_SidSelectionMode int64

// IsYANGGoEnum ensures that NamedExplicitPath_SidSelectionMode implements the yang.GoEnum
// interface. This ensures that NamedExplicitPath_SidSelectionMode can be identified as a
// mapped type for a YANG enumeration.
func (E_NamedExplicitPath_SidSelectionMode) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  NamedExplicitPath_SidSelectionMode.
func (E_NamedExplicitPath_SidSelectionMode) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_NamedExplicitPath_SidSelectionMode.
func (e E_NamedExplicitPath_SidSelectionMode) String() string {
	return ygot.EnumLogString(e, int64(e), "E_NamedExplicitPath_SidSelectionMode")
}

const (
	// NamedExplicitPath_SidSelectionMode_UNSET corresponds to the value UNSET of NamedExplicitPath_SidSelectionMode
	NamedExplicitPath_SidSelectionMode_UNSET E_NamedExplicitPath_SidSelectionMode = 0
	// NamedExplicitPath_SidSelectionMode_ADJ_SID_ONLY corresponds to the value ADJ_SID_ONLY of NamedExplicitPath_SidSelectionMode
	NamedExplicitPath_SidSelectionMode_ADJ_SID_ONLY E_NamedExplicitPath_SidSelectionMode = 1
	// NamedExplicitPath_SidSelectionMode_MIXED_MODE corresponds to the value MIXED_MODE of NamedExplicitPath_SidSelectionMode
	NamedExplicitPath_SidSelectionMode_MIXED_MODE E_NamedExplicitPath_SidSelectionMode = 2
)

// E_Neighbor_NeighborState is a derived int64 type which is used to represent
// the enumerated node Neighbor_NeighborState. An additional value named
// Neighbor_NeighborState_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Neighbor_NeighborState int64

// IsYANGGoEnum ensures that Neighbor_NeighborState implements the yang.GoEnum
// interface. This ensures that Neighbor_NeighborState can be identified as a
// mapped type for a YANG enumeration.
func (E_Neighbor_NeighborState) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Neighbor_NeighborState.
func (E_Neighbor_NeighborState) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Neighbor_NeighborState.
func (e E_Neighbor_NeighborState) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Neighbor_NeighborState")
}

const (
	// Neighbor_NeighborState_UNSET corresponds to the value UNSET of Neighbor_NeighborState
	Neighbor_NeighborState_UNSET E_Neighbor_NeighborState = 0
	// Neighbor_NeighborState_INCOMPLETE corresponds to the value INCOMPLETE of Neighbor_NeighborState
	Neighbor_NeighborState_INCOMPLETE E_Neighbor_NeighborState = 1
	// Neighbor_NeighborState_REACHABLE corresponds to the value REACHABLE of Neighbor_NeighborState
	Neighbor_NeighborState_REACHABLE E_Neighbor_NeighborState = 2
	// Neighbor_NeighborState_STALE corresponds to the value STALE of Neighbor_NeighborState
	Neighbor_NeighborState_STALE E_Neighbor_NeighborState = 3
	// Neighbor_NeighborState_DELAY corresponds to the value DELAY of Neighbor_NeighborState
	Neighbor_NeighborState_DELAY E_Neighbor_NeighborState = 4
	// Neighbor_NeighborState_PROBE corresponds to the value PROBE of Neighbor_NeighborState
	Neighbor_NeighborState_PROBE E_Neighbor_NeighborState = 5
)

// E_Neighbor_NeighborStatus is a derived int64 type which is used to represent
// the enumerated node Neighbor_NeighborStatus. An additional value named
// Neighbor_NeighborStatus_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Neighbor_NeighborStatus int64

// IsYANGGoEnum ensures that Neighbor_NeighborStatus implements the yang.GoEnum
// interface. This ensures that Neighbor_NeighborStatus can be identified as a
// mapped type for a YANG enumeration.
func (E_Neighbor_NeighborStatus) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Neighbor_NeighborStatus.
func (E_Neighbor_NeighborStatus) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Neighbor_NeighborStatus.
func (e E_Neighbor_NeighborStatus) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Neighbor_NeighborStatus")
}

const (
	// Neighbor_NeighborStatus_UNSET corresponds to the value UNSET of Neighbor_NeighborStatus
	Neighbor_NeighborStatus_UNSET E_Neighbor_NeighborStatus = 0
	// Neighbor_NeighborStatus_UP corresponds to the value UP of Neighbor_NeighborStatus
	Neighbor_NeighborStatus_UP E_Neighbor_NeighborStatus = 1
	// Neighbor_NeighborStatus_DOWN corresponds to the value DOWN of Neighbor_NeighborStatus
	Neighbor_NeighborStatus_DOWN E_Neighbor_NeighborStatus = 2
)

// E_NetworkInstanceTypes_ENCAPSULATION is a derived int64 type which is used to represent
// the enumerated node NetworkInstanceTypes_ENCAPSULATION. An additional value named
// NetworkInstanceTypes_ENCAPSULATION_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_NetworkInstanceTypes_ENCAPSULATION int64

// IsYANGGoEnum ensures that NetworkInstanceTypes_ENCAPSULATION implements the yang.GoEnum
// interface. This ensures that NetworkInstanceTypes_ENCAPSULATION can be identified as a
// mapped type for a YANG enumeration.
func (E_NetworkInstanceTypes_ENCAPSULATION) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  NetworkInstanceTypes_ENCAPSULATION.
func (E_NetworkInstanceTypes_ENCAPSULATION) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_NetworkInstanceTypes_ENCAPSULATION.
func (e E_NetworkInstanceTypes_ENCAPSULATION) String() string {
	return ygot.EnumLogString(e, int64(e), "E_NetworkInstanceTypes_ENCAPSULATION")
}

const (
	// NetworkInstanceTypes_ENCAPSULATION_UNSET corresponds to the value UNSET of NetworkInstanceTypes_ENCAPSULATION
	NetworkInstanceTypes_ENCAPSULATION_UNSET E_NetworkInstanceTypes_ENCAPSULATION = 0
	// NetworkInstanceTypes_ENCAPSULATION_MPLS corresponds to the value MPLS of NetworkInstanceTypes_ENCAPSULATION
	NetworkInstanceTypes_ENCAPSULATION_MPLS E_NetworkInstanceTypes_ENCAPSULATION = 1
	// NetworkInstanceTypes_ENCAPSULATION_VXLAN corresponds to the value VXLAN of NetworkInstanceTypes_ENCAPSULATION
	NetworkInstanceTypes_ENCAPSULATION_VXLAN E_NetworkInstanceTypes_ENCAPSULATION = 2
)

// E_NetworkInstanceTypes_ENDPOINT_TYPE is a derived int64 type which is used to represent
// the enumerated node NetworkInstanceTypes_ENDPOINT_TYPE. An additional value named
// NetworkInstanceTypes_ENDPOINT_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_NetworkInstanceTypes_ENDPOINT_TYPE int64

// IsYANGGoEnum ensures that NetworkInstanceTypes_ENDPOINT_TYPE implements the yang.GoEnum
// interface. This ensures that NetworkInstanceTypes_ENDPOINT_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_NetworkInstanceTypes_ENDPOINT_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  NetworkInstanceTypes_ENDPOINT_TYPE.
func (E_NetworkInstanceTypes_ENDPOINT_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_NetworkInstanceTypes_ENDPOINT_TYPE.
func (e E_NetworkInstanceTypes_ENDPOINT_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_NetworkInstanceTypes_ENDPOINT_TYPE")
}

const (
	// NetworkInstanceTypes_ENDPOINT_TYPE_UNSET corresponds to the value UNSET of NetworkInstanceTypes_ENDPOINT_TYPE
	NetworkInstanceTypes_ENDPOINT_TYPE_UNSET E_NetworkInstanceTypes_ENDPOINT_TYPE = 0
	// NetworkInstanceTypes_ENDPOINT_TYPE_LOCAL corresponds to the value LOCAL of NetworkInstanceTypes_ENDPOINT_TYPE
	NetworkInstanceTypes_ENDPOINT_TYPE_LOCAL E_NetworkInstanceTypes_ENDPOINT_TYPE = 1
	// NetworkInstanceTypes_ENDPOINT_TYPE_REMOTE corresponds to the value REMOTE of NetworkInstanceTypes_ENDPOINT_TYPE
	NetworkInstanceTypes_ENDPOINT_TYPE_REMOTE E_NetworkInstanceTypes_ENDPOINT_TYPE = 2
)

// E_NetworkInstanceTypes_LABEL_ALLOCATION_MODE is a derived int64 type which is used to represent
// the enumerated node NetworkInstanceTypes_LABEL_ALLOCATION_MODE. An additional value named
// NetworkInstanceTypes_LABEL_ALLOCATION_MODE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_NetworkInstanceTypes_LABEL_ALLOCATION_MODE int64

// IsYANGGoEnum ensures that NetworkInstanceTypes_LABEL_ALLOCATION_MODE implements the yang.GoEnum
// interface. This ensures that NetworkInstanceTypes_LABEL_ALLOCATION_MODE can be identified as a
// mapped type for a YANG enumeration.
func (E_NetworkInstanceTypes_LABEL_ALLOCATION_MODE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  NetworkInstanceTypes_LABEL_ALLOCATION_MODE.
func (E_NetworkInstanceTypes_LABEL_ALLOCATION_MODE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_NetworkInstanceTypes_LABEL_ALLOCATION_MODE.
func (e E_NetworkInstanceTypes_LABEL_ALLOCATION_MODE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_NetworkInstanceTypes_LABEL_ALLOCATION_MODE")
}

const (
	// NetworkInstanceTypes_LABEL_ALLOCATION_MODE_UNSET corresponds to the value UNSET of NetworkInstanceTypes_LABEL_ALLOCATION_MODE
	NetworkInstanceTypes_LABEL_ALLOCATION_MODE_UNSET E_NetworkInstanceTypes_LABEL_ALLOCATION_MODE = 0
	// NetworkInstanceTypes_LABEL_ALLOCATION_MODE_INSTANCE_LABEL corresponds to the value INSTANCE_LABEL of NetworkInstanceTypes_LABEL_ALLOCATION_MODE
	NetworkInstanceTypes_LABEL_ALLOCATION_MODE_INSTANCE_LABEL E_NetworkInstanceTypes_LABEL_ALLOCATION_MODE = 1
	// NetworkInstanceTypes_LABEL_ALLOCATION_MODE_PER_NEXTHOP corresponds to the value PER_NEXTHOP of NetworkInstanceTypes_LABEL_ALLOCATION_MODE
	NetworkInstanceTypes_LABEL_ALLOCATION_MODE_PER_NEXTHOP E_NetworkInstanceTypes_LABEL_ALLOCATION_MODE = 2
	// NetworkInstanceTypes_LABEL_ALLOCATION_MODE_PER_PREFIX corresponds to the value PER_PREFIX of NetworkInstanceTypes_LABEL_ALLOCATION_MODE
	NetworkInstanceTypes_LABEL_ALLOCATION_MODE_PER_PREFIX E_NetworkInstanceTypes_LABEL_ALLOCATION_MODE = 3
)

// E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE is a derived int64 type which is used to represent
// the enumerated node NetworkInstanceTypes_NETWORK_INSTANCE_TYPE. An additional value named
// NetworkInstanceTypes_NETWORK_INSTANCE_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE int64

// IsYANGGoEnum ensures that NetworkInstanceTypes_NETWORK_INSTANCE_TYPE implements the yang.GoEnum
// interface. This ensures that NetworkInstanceTypes_NETWORK_INSTANCE_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  NetworkInstanceTypes_NETWORK_INSTANCE_TYPE.
func (E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE.
func (e E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE")
}

const (
	// NetworkInstanceTypes_NETWORK_INSTANCE_TYPE_UNSET corresponds to the value UNSET of NetworkInstanceTypes_NETWORK_INSTANCE_TYPE
	NetworkInstanceTypes_NETWORK_INSTANCE_TYPE_UNSET E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE = 0
	// NetworkInstanceTypes_NETWORK_INSTANCE_TYPE_DEFAULT_INSTANCE corresponds to the value DEFAULT_INSTANCE of NetworkInstanceTypes_NETWORK_INSTANCE_TYPE
	NetworkInstanceTypes_NETWORK_INSTANCE_TYPE_DEFAULT_INSTANCE E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE = 1
	// NetworkInstanceTypes_NETWORK_INSTANCE_TYPE_L2L3 corresponds to the value L2L3 of NetworkInstanceTypes_NETWORK_INSTANCE_TYPE
	NetworkInstanceTypes_NETWORK_INSTANCE_TYPE_L2L3 E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE = 2
	// NetworkInstanceTypes_NETWORK_INSTANCE_TYPE_L2P2P corresponds to the value L2P2P of NetworkInstanceTypes_NETWORK_INSTANCE_TYPE
	NetworkInstanceTypes_NETWORK_INSTANCE_TYPE_L2P2P E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE = 3
	// NetworkInstanceTypes_NETWORK_INSTANCE_TYPE_L2VSI corresponds to the value L2VSI of NetworkInstanceTypes_NETWORK_INSTANCE_TYPE
	NetworkInstanceTypes_NETWORK_INSTANCE_TYPE_L2VSI E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE = 4
	// NetworkInstanceTypes_NETWORK_INSTANCE_TYPE_L3VRF corresponds to the value L3VRF of NetworkInstanceTypes_NETWORK_INSTANCE_TYPE
	NetworkInstanceTypes_NETWORK_INSTANCE_TYPE_L3VRF E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE = 5
)

// E_NextHopGroup_Type is a derived int64 type which is used to represent
// the enumerated node NextHopGroup_Type. An additional value named
// NextHopGroup_Type_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_NextHopGroup_Type int64

// IsYANGGoEnum ensures that NextHopGroup_Type implements the yang.GoEnum
// interface. This ensures that NextHopGroup_Type can be identified as a
// mapped type for a YANG enumeration.
func (E_NextHopGroup_Type) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  NextHopGroup_Type.
func (E_NextHopGroup_Type) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_NextHopGroup_Type.
func (e E_NextHopGroup_Type) String() string {
	return ygot.EnumLogString(e, int64(e), "E_NextHopGroup_Type")
}

const (
	// NextHopGroup_Type_UNSET corresponds to the value UNSET of NextHopGroup_Type
	NextHopGroup_Type_UNSET E_NextHopGroup_Type = 0
	// NextHopGroup_Type_ESI corresponds to the value ESI of NextHopGroup_Type
	NextHopGroup_Type_ESI E_NextHopGroup_Type = 1
	// NextHopGroup_Type_ESI_EVI corresponds to the value ESI_EVI of NextHopGroup_Type
	NextHopGroup_Type_ESI_EVI E_NextHopGroup_Type = 2
	// NextHopGroup_Type_BASE_ECMP corresponds to the value BASE_ECMP of NextHopGroup_Type
	NextHopGroup_Type_BASE_ECMP E_NextHopGroup_Type = 3
)

// E_Nlpid_Nlpid is a derived int64 type which is used to represent
// the enumerated node Nlpid_Nlpid. An additional value named
// Nlpid_Nlpid_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Nlpid_Nlpid int64

// IsYANGGoEnum ensures that Nlpid_Nlpid implements the yang.GoEnum
// interface. This ensures that Nlpid_Nlpid can be identified as a
// mapped type for a YANG enumeration.
func (E_Nlpid_Nlpid) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Nlpid_Nlpid.
func (E_Nlpid_Nlpid) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Nlpid_Nlpid.
func (e E_Nlpid_Nlpid) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Nlpid_Nlpid")
}

const (
	// Nlpid_Nlpid_UNSET corresponds to the value UNSET of Nlpid_Nlpid
	Nlpid_Nlpid_UNSET E_Nlpid_Nlpid = 0
	// Nlpid_Nlpid_IPV4 corresponds to the value IPV4 of Nlpid_Nlpid
	Nlpid_Nlpid_IPV4 E_Nlpid_Nlpid = 1
	// Nlpid_Nlpid_IPV6 corresponds to the value IPV6 of Nlpid_Nlpid
	Nlpid_Nlpid_IPV6 E_Nlpid_Nlpid = 2
)

// E_NodeAttribute_SubTlv_Type_Enum is a derived int64 type which is used to represent
// the enumerated node NodeAttribute_SubTlv_Type_Enum. An additional value named
// NodeAttribute_SubTlv_Type_Enum_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_NodeAttribute_SubTlv_Type_Enum int64

// IsYANGGoEnum ensures that NodeAttribute_SubTlv_Type_Enum implements the yang.GoEnum
// interface. This ensures that NodeAttribute_SubTlv_Type_Enum can be identified as a
// mapped type for a YANG enumeration.
func (E_NodeAttribute_SubTlv_Type_Enum) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  NodeAttribute_SubTlv_Type_Enum.
func (E_NodeAttribute_SubTlv_Type_Enum) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_NodeAttribute_SubTlv_Type_Enum.
func (e E_NodeAttribute_SubTlv_Type_Enum) String() string {
	return ygot.EnumLogString(e, int64(e), "E_NodeAttribute_SubTlv_Type_Enum")
}

const (
	// NodeAttribute_SubTlv_Type_Enum_UNSET corresponds to the value UNSET of NodeAttribute_SubTlv_Type_Enum
	NodeAttribute_SubTlv_Type_Enum_UNSET E_NodeAttribute_SubTlv_Type_Enum = 0
	// NodeAttribute_SubTlv_Type_Enum_UNKNOWN corresponds to the value UNKNOWN of NodeAttribute_SubTlv_Type_Enum
	NodeAttribute_SubTlv_Type_Enum_UNKNOWN E_NodeAttribute_SubTlv_Type_Enum = 1
)

// E_OpaqueLsa_Scope is a derived int64 type which is used to represent
// the enumerated node OpaqueLsa_Scope. An additional value named
// OpaqueLsa_Scope_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OpaqueLsa_Scope int64

// IsYANGGoEnum ensures that OpaqueLsa_Scope implements the yang.GoEnum
// interface. This ensures that OpaqueLsa_Scope can be identified as a
// mapped type for a YANG enumeration.
func (E_OpaqueLsa_Scope) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OpaqueLsa_Scope.
func (E_OpaqueLsa_Scope) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_OpaqueLsa_Scope.
func (e E_OpaqueLsa_Scope) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OpaqueLsa_Scope")
}

const (
	// OpaqueLsa_Scope_UNSET corresponds to the value UNSET of OpaqueLsa_Scope
	OpaqueLsa_Scope_UNSET E_OpaqueLsa_Scope = 0
	// OpaqueLsa_Scope_LINK corresponds to the value LINK of OpaqueLsa_Scope
	OpaqueLsa_Scope_LINK E_OpaqueLsa_Scope = 1
	// OpaqueLsa_Scope_AREA corresponds to the value AREA of OpaqueLsa_Scope
	OpaqueLsa_Scope_AREA E_OpaqueLsa_Scope = 2
	// OpaqueLsa_Scope_AS corresponds to the value AS of OpaqueLsa_Scope
	OpaqueLsa_Scope_AS E_OpaqueLsa_Scope = 3
)

// E_OpticalAmplifier_FIBER_TYPE_PROFILE is a derived int64 type which is used to represent
// the enumerated node OpticalAmplifier_FIBER_TYPE_PROFILE. An additional value named
// OpticalAmplifier_FIBER_TYPE_PROFILE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OpticalAmplifier_FIBER_TYPE_PROFILE int64

// IsYANGGoEnum ensures that OpticalAmplifier_FIBER_TYPE_PROFILE implements the yang.GoEnum
// interface. This ensures that OpticalAmplifier_FIBER_TYPE_PROFILE can be identified as a
// mapped type for a YANG enumeration.
func (E_OpticalAmplifier_FIBER_TYPE_PROFILE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OpticalAmplifier_FIBER_TYPE_PROFILE.
func (E_OpticalAmplifier_FIBER_TYPE_PROFILE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_OpticalAmplifier_FIBER_TYPE_PROFILE.
func (e E_OpticalAmplifier_FIBER_TYPE_PROFILE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OpticalAmplifier_FIBER_TYPE_PROFILE")
}

const (
	// OpticalAmplifier_FIBER_TYPE_PROFILE_UNSET corresponds to the value UNSET of OpticalAmplifier_FIBER_TYPE_PROFILE
	OpticalAmplifier_FIBER_TYPE_PROFILE_UNSET E_OpticalAmplifier_FIBER_TYPE_PROFILE = 0
	// OpticalAmplifier_FIBER_TYPE_PROFILE_DSF corresponds to the value DSF of OpticalAmplifier_FIBER_TYPE_PROFILE
	OpticalAmplifier_FIBER_TYPE_PROFILE_DSF E_OpticalAmplifier_FIBER_TYPE_PROFILE = 1
	// OpticalAmplifier_FIBER_TYPE_PROFILE_LEAF corresponds to the value LEAF of OpticalAmplifier_FIBER_TYPE_PROFILE
	OpticalAmplifier_FIBER_TYPE_PROFILE_LEAF E_OpticalAmplifier_FIBER_TYPE_PROFILE = 2
	// OpticalAmplifier_FIBER_TYPE_PROFILE_SSMF corresponds to the value SSMF of OpticalAmplifier_FIBER_TYPE_PROFILE
	OpticalAmplifier_FIBER_TYPE_PROFILE_SSMF E_OpticalAmplifier_FIBER_TYPE_PROFILE = 3
	// OpticalAmplifier_FIBER_TYPE_PROFILE_TWC corresponds to the value TWC of OpticalAmplifier_FIBER_TYPE_PROFILE
	OpticalAmplifier_FIBER_TYPE_PROFILE_TWC E_OpticalAmplifier_FIBER_TYPE_PROFILE = 4
	// OpticalAmplifier_FIBER_TYPE_PROFILE_TWRS corresponds to the value TWRS of OpticalAmplifier_FIBER_TYPE_PROFILE
	OpticalAmplifier_FIBER_TYPE_PROFILE_TWRS E_OpticalAmplifier_FIBER_TYPE_PROFILE = 5
)

// E_OpticalAmplifier_GAIN_RANGE is a derived int64 type which is used to represent
// the enumerated node OpticalAmplifier_GAIN_RANGE. An additional value named
// OpticalAmplifier_GAIN_RANGE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OpticalAmplifier_GAIN_RANGE int64

// IsYANGGoEnum ensures that OpticalAmplifier_GAIN_RANGE implements the yang.GoEnum
// interface. This ensures that OpticalAmplifier_GAIN_RANGE can be identified as a
// mapped type for a YANG enumeration.
func (E_OpticalAmplifier_GAIN_RANGE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OpticalAmplifier_GAIN_RANGE.
func (E_OpticalAmplifier_GAIN_RANGE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_OpticalAmplifier_GAIN_RANGE.
func (e E_OpticalAmplifier_GAIN_RANGE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OpticalAmplifier_GAIN_RANGE")
}

const (
	// OpticalAmplifier_GAIN_RANGE_UNSET corresponds to the value UNSET of OpticalAmplifier_GAIN_RANGE
	OpticalAmplifier_GAIN_RANGE_UNSET E_OpticalAmplifier_GAIN_RANGE = 0
	// OpticalAmplifier_GAIN_RANGE_FIXED_GAIN_RANGE corresponds to the value FIXED_GAIN_RANGE of OpticalAmplifier_GAIN_RANGE
	OpticalAmplifier_GAIN_RANGE_FIXED_GAIN_RANGE E_OpticalAmplifier_GAIN_RANGE = 1
	// OpticalAmplifier_GAIN_RANGE_HIGH_GAIN_RANGE corresponds to the value HIGH_GAIN_RANGE of OpticalAmplifier_GAIN_RANGE
	OpticalAmplifier_GAIN_RANGE_HIGH_GAIN_RANGE E_OpticalAmplifier_GAIN_RANGE = 2
	// OpticalAmplifier_GAIN_RANGE_LOW_GAIN_RANGE corresponds to the value LOW_GAIN_RANGE of OpticalAmplifier_GAIN_RANGE
	OpticalAmplifier_GAIN_RANGE_LOW_GAIN_RANGE E_OpticalAmplifier_GAIN_RANGE = 3
	// OpticalAmplifier_GAIN_RANGE_MID_GAIN_RANGE corresponds to the value MID_GAIN_RANGE of OpticalAmplifier_GAIN_RANGE
	OpticalAmplifier_GAIN_RANGE_MID_GAIN_RANGE E_OpticalAmplifier_GAIN_RANGE = 4
)

// E_OpticalAmplifier_OPTICAL_AMPLIFIER_MODE is a derived int64 type which is used to represent
// the enumerated node OpticalAmplifier_OPTICAL_AMPLIFIER_MODE. An additional value named
// OpticalAmplifier_OPTICAL_AMPLIFIER_MODE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OpticalAmplifier_OPTICAL_AMPLIFIER_MODE int64

// IsYANGGoEnum ensures that OpticalAmplifier_OPTICAL_AMPLIFIER_MODE implements the yang.GoEnum
// interface. This ensures that OpticalAmplifier_OPTICAL_AMPLIFIER_MODE can be identified as a
// mapped type for a YANG enumeration.
func (E_OpticalAmplifier_OPTICAL_AMPLIFIER_MODE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OpticalAmplifier_OPTICAL_AMPLIFIER_MODE.
func (E_OpticalAmplifier_OPTICAL_AMPLIFIER_MODE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_OpticalAmplifier_OPTICAL_AMPLIFIER_MODE.
func (e E_OpticalAmplifier_OPTICAL_AMPLIFIER_MODE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OpticalAmplifier_OPTICAL_AMPLIFIER_MODE")
}

const (
	// OpticalAmplifier_OPTICAL_AMPLIFIER_MODE_UNSET corresponds to the value UNSET of OpticalAmplifier_OPTICAL_AMPLIFIER_MODE
	OpticalAmplifier_OPTICAL_AMPLIFIER_MODE_UNSET E_OpticalAmplifier_OPTICAL_AMPLIFIER_MODE = 0
	// OpticalAmplifier_OPTICAL_AMPLIFIER_MODE_CONSTANT_GAIN corresponds to the value CONSTANT_GAIN of OpticalAmplifier_OPTICAL_AMPLIFIER_MODE
	OpticalAmplifier_OPTICAL_AMPLIFIER_MODE_CONSTANT_GAIN E_OpticalAmplifier_OPTICAL_AMPLIFIER_MODE = 1
	// OpticalAmplifier_OPTICAL_AMPLIFIER_MODE_CONSTANT_POWER corresponds to the value CONSTANT_POWER of OpticalAmplifier_OPTICAL_AMPLIFIER_MODE
	OpticalAmplifier_OPTICAL_AMPLIFIER_MODE_CONSTANT_POWER E_OpticalAmplifier_OPTICAL_AMPLIFIER_MODE = 2
	// OpticalAmplifier_OPTICAL_AMPLIFIER_MODE_DYNAMIC_GAIN corresponds to the value DYNAMIC_GAIN of OpticalAmplifier_OPTICAL_AMPLIFIER_MODE
	OpticalAmplifier_OPTICAL_AMPLIFIER_MODE_DYNAMIC_GAIN E_OpticalAmplifier_OPTICAL_AMPLIFIER_MODE = 3
)

// E_OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE is a derived int64 type which is used to represent
// the enumerated node OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE. An additional value named
// OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE int64

// IsYANGGoEnum ensures that OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE implements the yang.GoEnum
// interface. This ensures that OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE.
func (E_OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE.
func (e E_OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE")
}

const (
	// OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE_UNSET corresponds to the value UNSET of OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE
	OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE_UNSET E_OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE = 0
	// OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE_BACKWARD_RAMAN corresponds to the value BACKWARD_RAMAN of OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE
	OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE_BACKWARD_RAMAN E_OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE = 1
	// OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE_EDFA corresponds to the value EDFA of OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE
	OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE_EDFA E_OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE = 2
	// OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE_FORWARD_RAMAN corresponds to the value FORWARD_RAMAN of OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE
	OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE_FORWARD_RAMAN E_OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE = 3
	// OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE_HYBRID corresponds to the value HYBRID of OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE
	OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE_HYBRID E_OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE = 4
)

// E_OspfTypes_GRACE_LSA_TLV_TYPES is a derived int64 type which is used to represent
// the enumerated node OspfTypes_GRACE_LSA_TLV_TYPES. An additional value named
// OspfTypes_GRACE_LSA_TLV_TYPES_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_GRACE_LSA_TLV_TYPES int64

// IsYANGGoEnum ensures that OspfTypes_GRACE_LSA_TLV_TYPES implements the yang.GoEnum
// interface. This ensures that OspfTypes_GRACE_LSA_TLV_TYPES can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_GRACE_LSA_TLV_TYPES) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_GRACE_LSA_TLV_TYPES.
func (E_OspfTypes_GRACE_LSA_TLV_TYPES) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_OspfTypes_GRACE_LSA_TLV_TYPES.
func (e E_OspfTypes_GRACE_LSA_TLV_TYPES) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_GRACE_LSA_TLV_TYPES")
}

const (
	// OspfTypes_GRACE_LSA_TLV_TYPES_UNSET corresponds to the value UNSET of OspfTypes_GRACE_LSA_TLV_TYPES
	OspfTypes_GRACE_LSA_TLV_TYPES_UNSET E_OspfTypes_GRACE_LSA_TLV_TYPES = 0
	// OspfTypes_GRACE_LSA_TLV_TYPES_GRACE_IP_INTERFACE_ADDRESS corresponds to the value GRACE_IP_INTERFACE_ADDRESS of OspfTypes_GRACE_LSA_TLV_TYPES
	OspfTypes_GRACE_LSA_TLV_TYPES_GRACE_IP_INTERFACE_ADDRESS E_OspfTypes_GRACE_LSA_TLV_TYPES = 1
	// OspfTypes_GRACE_LSA_TLV_TYPES_GRACE_PERIOD corresponds to the value GRACE_PERIOD of OspfTypes_GRACE_LSA_TLV_TYPES
	OspfTypes_GRACE_LSA_TLV_TYPES_GRACE_PERIOD E_OspfTypes_GRACE_LSA_TLV_TYPES = 2
	// OspfTypes_GRACE_LSA_TLV_TYPES_GRACE_RESTART_REASON corresponds to the value GRACE_RESTART_REASON of OspfTypes_GRACE_LSA_TLV_TYPES
	OspfTypes_GRACE_LSA_TLV_TYPES_GRACE_RESTART_REASON E_OspfTypes_GRACE_LSA_TLV_TYPES = 3
)

// E_OspfTypes_MAX_METRIC_INCLUDE is a derived int64 type which is used to represent
// the enumerated node OspfTypes_MAX_METRIC_INCLUDE. An additional value named
// OspfTypes_MAX_METRIC_INCLUDE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_MAX_METRIC_INCLUDE int64

// IsYANGGoEnum ensures that OspfTypes_MAX_METRIC_INCLUDE implements the yang.GoEnum
// interface. This ensures that OspfTypes_MAX_METRIC_INCLUDE can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_MAX_METRIC_INCLUDE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_MAX_METRIC_INCLUDE.
func (E_OspfTypes_MAX_METRIC_INCLUDE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_OspfTypes_MAX_METRIC_INCLUDE.
func (e E_OspfTypes_MAX_METRIC_INCLUDE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_MAX_METRIC_INCLUDE")
}

const (
	// OspfTypes_MAX_METRIC_INCLUDE_UNSET corresponds to the value UNSET of OspfTypes_MAX_METRIC_INCLUDE
	OspfTypes_MAX_METRIC_INCLUDE_UNSET E_OspfTypes_MAX_METRIC_INCLUDE = 0
	// OspfTypes_MAX_METRIC_INCLUDE_MAX_METRIC_INCLUDE_STUB corresponds to the value MAX_METRIC_INCLUDE_STUB of OspfTypes_MAX_METRIC_INCLUDE
	OspfTypes_MAX_METRIC_INCLUDE_MAX_METRIC_INCLUDE_STUB E_OspfTypes_MAX_METRIC_INCLUDE = 1
	// OspfTypes_MAX_METRIC_INCLUDE_MAX_METRIC_INCLUDE_TYPE2_EXTERNAL corresponds to the value MAX_METRIC_INCLUDE_TYPE2_EXTERNAL of OspfTypes_MAX_METRIC_INCLUDE
	OspfTypes_MAX_METRIC_INCLUDE_MAX_METRIC_INCLUDE_TYPE2_EXTERNAL E_OspfTypes_MAX_METRIC_INCLUDE = 2
)

// E_OspfTypes_MAX_METRIC_TRIGGER is a derived int64 type which is used to represent
// the enumerated node OspfTypes_MAX_METRIC_TRIGGER. An additional value named
// OspfTypes_MAX_METRIC_TRIGGER_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_MAX_METRIC_TRIGGER int64

// IsYANGGoEnum ensures that OspfTypes_MAX_METRIC_TRIGGER implements the yang.GoEnum
// interface. This ensures that OspfTypes_MAX_METRIC_TRIGGER can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_MAX_METRIC_TRIGGER) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_MAX_METRIC_TRIGGER.
func (E_OspfTypes_MAX_METRIC_TRIGGER) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_OspfTypes_MAX_METRIC_TRIGGER.
func (e E_OspfTypes_MAX_METRIC_TRIGGER) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_MAX_METRIC_TRIGGER")
}

const (
	// OspfTypes_MAX_METRIC_TRIGGER_UNSET corresponds to the value UNSET of OspfTypes_MAX_METRIC_TRIGGER
	OspfTypes_MAX_METRIC_TRIGGER_UNSET E_OspfTypes_MAX_METRIC_TRIGGER = 0
	// OspfTypes_MAX_METRIC_TRIGGER_MAX_METRIC_ON_SYSTEM_BOOT corresponds to the value MAX_METRIC_ON_SYSTEM_BOOT of OspfTypes_MAX_METRIC_TRIGGER
	OspfTypes_MAX_METRIC_TRIGGER_MAX_METRIC_ON_SYSTEM_BOOT E_OspfTypes_MAX_METRIC_TRIGGER = 1
)

// E_OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE is a derived int64 type which is used to represent
// the enumerated node OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE. An additional value named
// OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE int64

// IsYANGGoEnum ensures that OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE implements the yang.GoEnum
// interface. This ensures that OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE.
func (E_OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE.
func (e E_OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE")
}

const (
	// OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE_UNSET corresponds to the value UNSET of OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE
	OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE_UNSET E_OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE = 0
	// OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE_ADJACENCY_SID corresponds to the value ADJACENCY_SID of OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE
	OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE_ADJACENCY_SID E_OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE = 1
)

// E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE is a derived int64 type which is used to represent
// the enumerated node OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE. An additional value named
// OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE int64

// IsYANGGoEnum ensures that OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE implements the yang.GoEnum
// interface. This ensures that OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE.
func (E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE.
func (e E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE")
}

const (
	// OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE_UNSET corresponds to the value UNSET of OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE
	OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE_UNSET E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE = 0
	// OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE_ERO_METRIC corresponds to the value ERO_METRIC of OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE
	OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE_ERO_METRIC E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE = 1
	// OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE_ERO_PATH corresponds to the value ERO_PATH of OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE
	OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE_ERO_PATH E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE = 2
	// OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE_SID_MPLS_LABEL_BINDING corresponds to the value SID_MPLS_LABEL_BINDING of OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE
	OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE_SID_MPLS_LABEL_BINDING E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE = 3
)

// E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE is a derived int64 type which is used to represent
// the enumerated node OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE. An additional value named
// OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE int64

// IsYANGGoEnum ensures that OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE implements the yang.GoEnum
// interface. This ensures that OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE.
func (E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE.
func (e E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE")
}

const (
	// OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE_UNSET corresponds to the value UNSET of OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE
	OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE_UNSET E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE = 0
	// OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE_EXTENDED_PREFIX_RANGE corresponds to the value EXTENDED_PREFIX_RANGE of OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE
	OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE_EXTENDED_PREFIX_RANGE E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE = 1
	// OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE_PREFIX_SID corresponds to the value PREFIX_SID of OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE
	OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE_PREFIX_SID E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE = 2
	// OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE_SID_LABEL_BINDING corresponds to the value SID_LABEL_BINDING of OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE
	OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE_SID_LABEL_BINDING E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE = 3
)

// E_OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE is a derived int64 type which is used to represent
// the enumerated node OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE. An additional value named
// OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE int64

// IsYANGGoEnum ensures that OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE implements the yang.GoEnum
// interface. This ensures that OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE.
func (E_OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE.
func (e E_OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE")
}

const (
	// OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE_UNSET corresponds to the value UNSET of OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE
	OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE_UNSET E_OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE = 0
	// OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE_IPV4_SEGMENT corresponds to the value IPV4_SEGMENT of OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE
	OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE_IPV4_SEGMENT E_OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE = 1
	// OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE_UNNUMBERED_INTERFACE_SEGMENT corresponds to the value UNNUMBERED_INTERFACE_SEGMENT of OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE
	OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE_UNNUMBERED_INTERFACE_SEGMENT E_OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE = 2
)

// E_OspfTypes_OSPFV2_ROUTER_LINK_TYPE is a derived int64 type which is used to represent
// the enumerated node OspfTypes_OSPFV2_ROUTER_LINK_TYPE. An additional value named
// OspfTypes_OSPFV2_ROUTER_LINK_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_OSPFV2_ROUTER_LINK_TYPE int64

// IsYANGGoEnum ensures that OspfTypes_OSPFV2_ROUTER_LINK_TYPE implements the yang.GoEnum
// interface. This ensures that OspfTypes_OSPFV2_ROUTER_LINK_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_OSPFV2_ROUTER_LINK_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_OSPFV2_ROUTER_LINK_TYPE.
func (E_OspfTypes_OSPFV2_ROUTER_LINK_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_OspfTypes_OSPFV2_ROUTER_LINK_TYPE.
func (e E_OspfTypes_OSPFV2_ROUTER_LINK_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_OSPFV2_ROUTER_LINK_TYPE")
}

const (
	// OspfTypes_OSPFV2_ROUTER_LINK_TYPE_UNSET corresponds to the value UNSET of OspfTypes_OSPFV2_ROUTER_LINK_TYPE
	OspfTypes_OSPFV2_ROUTER_LINK_TYPE_UNSET E_OspfTypes_OSPFV2_ROUTER_LINK_TYPE = 0
	// OspfTypes_OSPFV2_ROUTER_LINK_TYPE_POINT_TO_POINT_LINK corresponds to the value POINT_TO_POINT_LINK of OspfTypes_OSPFV2_ROUTER_LINK_TYPE
	OspfTypes_OSPFV2_ROUTER_LINK_TYPE_POINT_TO_POINT_LINK E_OspfTypes_OSPFV2_ROUTER_LINK_TYPE = 1
	// OspfTypes_OSPFV2_ROUTER_LINK_TYPE_STUB_NETWORK_LINK corresponds to the value STUB_NETWORK_LINK of OspfTypes_OSPFV2_ROUTER_LINK_TYPE
	OspfTypes_OSPFV2_ROUTER_LINK_TYPE_STUB_NETWORK_LINK E_OspfTypes_OSPFV2_ROUTER_LINK_TYPE = 2
	// OspfTypes_OSPFV2_ROUTER_LINK_TYPE_TRANSIT_NETWORK_LINK corresponds to the value TRANSIT_NETWORK_LINK of OspfTypes_OSPFV2_ROUTER_LINK_TYPE
	OspfTypes_OSPFV2_ROUTER_LINK_TYPE_TRANSIT_NETWORK_LINK E_OspfTypes_OSPFV2_ROUTER_LINK_TYPE = 3
	// OspfTypes_OSPFV2_ROUTER_LINK_TYPE_VIRTUAL_LINK corresponds to the value VIRTUAL_LINK of OspfTypes_OSPFV2_ROUTER_LINK_TYPE
	OspfTypes_OSPFV2_ROUTER_LINK_TYPE_VIRTUAL_LINK E_OspfTypes_OSPFV2_ROUTER_LINK_TYPE = 4
)

// E_OspfTypes_OSPF_LSA_TYPE is a derived int64 type which is used to represent
// the enumerated node OspfTypes_OSPF_LSA_TYPE. An additional value named
// OspfTypes_OSPF_LSA_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_OSPF_LSA_TYPE int64

// IsYANGGoEnum ensures that OspfTypes_OSPF_LSA_TYPE implements the yang.GoEnum
// interface. This ensures that OspfTypes_OSPF_LSA_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_OSPF_LSA_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_OSPF_LSA_TYPE.
func (E_OspfTypes_OSPF_LSA_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_OspfTypes_OSPF_LSA_TYPE.
func (e E_OspfTypes_OSPF_LSA_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_OSPF_LSA_TYPE")
}

const (
	// OspfTypes_OSPF_LSA_TYPE_UNSET corresponds to the value UNSET of OspfTypes_OSPF_LSA_TYPE
	OspfTypes_OSPF_LSA_TYPE_UNSET E_OspfTypes_OSPF_LSA_TYPE = 0
	// OspfTypes_OSPF_LSA_TYPE_AS_EXTERNAL_LSA corresponds to the value AS_EXTERNAL_LSA of OspfTypes_OSPF_LSA_TYPE
	OspfTypes_OSPF_LSA_TYPE_AS_EXTERNAL_LSA E_OspfTypes_OSPF_LSA_TYPE = 1
	// OspfTypes_OSPF_LSA_TYPE_NETWORK_LSA corresponds to the value NETWORK_LSA of OspfTypes_OSPF_LSA_TYPE
	OspfTypes_OSPF_LSA_TYPE_NETWORK_LSA E_OspfTypes_OSPF_LSA_TYPE = 2
	// OspfTypes_OSPF_LSA_TYPE_NSSA_AS_EXTERNAL_LSA corresponds to the value NSSA_AS_EXTERNAL_LSA of OspfTypes_OSPF_LSA_TYPE
	OspfTypes_OSPF_LSA_TYPE_NSSA_AS_EXTERNAL_LSA E_OspfTypes_OSPF_LSA_TYPE = 3
	// OspfTypes_OSPF_LSA_TYPE_OSPFV2_AREA_SCOPE_OPAQUE_LSA corresponds to the value OSPFV2_AREA_SCOPE_OPAQUE_LSA of OspfTypes_OSPF_LSA_TYPE
	OspfTypes_OSPF_LSA_TYPE_OSPFV2_AREA_SCOPE_OPAQUE_LSA E_OspfTypes_OSPF_LSA_TYPE = 4
	// OspfTypes_OSPF_LSA_TYPE_OSPFV2_AS_SCOPE_OPAQUE_LSA corresponds to the value OSPFV2_AS_SCOPE_OPAQUE_LSA of OspfTypes_OSPF_LSA_TYPE
	OspfTypes_OSPF_LSA_TYPE_OSPFV2_AS_SCOPE_OPAQUE_LSA E_OspfTypes_OSPF_LSA_TYPE = 5
	// OspfTypes_OSPF_LSA_TYPE_OSPFV2_LINK_SCOPE_OPAQUE_LSA corresponds to the value OSPFV2_LINK_SCOPE_OPAQUE_LSA of OspfTypes_OSPF_LSA_TYPE
	OspfTypes_OSPF_LSA_TYPE_OSPFV2_LINK_SCOPE_OPAQUE_LSA E_OspfTypes_OSPF_LSA_TYPE = 6
	// OspfTypes_OSPF_LSA_TYPE_ROUTER_LSA corresponds to the value ROUTER_LSA of OspfTypes_OSPF_LSA_TYPE
	OspfTypes_OSPF_LSA_TYPE_ROUTER_LSA E_OspfTypes_OSPF_LSA_TYPE = 7
	// OspfTypes_OSPF_LSA_TYPE_SUMMARY_ASBR_LSA corresponds to the value SUMMARY_ASBR_LSA of OspfTypes_OSPF_LSA_TYPE
	OspfTypes_OSPF_LSA_TYPE_SUMMARY_ASBR_LSA E_OspfTypes_OSPF_LSA_TYPE = 8
	// OspfTypes_OSPF_LSA_TYPE_SUMMARY_IP_NETWORK_LSA corresponds to the value SUMMARY_IP_NETWORK_LSA of OspfTypes_OSPF_LSA_TYPE
	OspfTypes_OSPF_LSA_TYPE_SUMMARY_IP_NETWORK_LSA E_OspfTypes_OSPF_LSA_TYPE = 9
)

// E_OspfTypes_OSPF_NEIGHBOR_STATE is a derived int64 type which is used to represent
// the enumerated node OspfTypes_OSPF_NEIGHBOR_STATE. An additional value named
// OspfTypes_OSPF_NEIGHBOR_STATE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_OSPF_NEIGHBOR_STATE int64

// IsYANGGoEnum ensures that OspfTypes_OSPF_NEIGHBOR_STATE implements the yang.GoEnum
// interface. This ensures that OspfTypes_OSPF_NEIGHBOR_STATE can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_OSPF_NEIGHBOR_STATE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_OSPF_NEIGHBOR_STATE.
func (E_OspfTypes_OSPF_NEIGHBOR_STATE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_OspfTypes_OSPF_NEIGHBOR_STATE.
func (e E_OspfTypes_OSPF_NEIGHBOR_STATE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_OSPF_NEIGHBOR_STATE")
}

const (
	// OspfTypes_OSPF_NEIGHBOR_STATE_UNSET corresponds to the value UNSET of OspfTypes_OSPF_NEIGHBOR_STATE
	OspfTypes_OSPF_NEIGHBOR_STATE_UNSET E_OspfTypes_OSPF_NEIGHBOR_STATE = 0
	// OspfTypes_OSPF_NEIGHBOR_STATE_ATTEMPT corresponds to the value ATTEMPT of OspfTypes_OSPF_NEIGHBOR_STATE
	OspfTypes_OSPF_NEIGHBOR_STATE_ATTEMPT E_OspfTypes_OSPF_NEIGHBOR_STATE = 1
	// OspfTypes_OSPF_NEIGHBOR_STATE_DOWN corresponds to the value DOWN of OspfTypes_OSPF_NEIGHBOR_STATE
	OspfTypes_OSPF_NEIGHBOR_STATE_DOWN E_OspfTypes_OSPF_NEIGHBOR_STATE = 2
	// OspfTypes_OSPF_NEIGHBOR_STATE_EXCHANGE corresponds to the value EXCHANGE of OspfTypes_OSPF_NEIGHBOR_STATE
	OspfTypes_OSPF_NEIGHBOR_STATE_EXCHANGE E_OspfTypes_OSPF_NEIGHBOR_STATE = 3
	// OspfTypes_OSPF_NEIGHBOR_STATE_EXSTART corresponds to the value EXSTART of OspfTypes_OSPF_NEIGHBOR_STATE
	OspfTypes_OSPF_NEIGHBOR_STATE_EXSTART E_OspfTypes_OSPF_NEIGHBOR_STATE = 4
	// OspfTypes_OSPF_NEIGHBOR_STATE_FULL corresponds to the value FULL of OspfTypes_OSPF_NEIGHBOR_STATE
	OspfTypes_OSPF_NEIGHBOR_STATE_FULL E_OspfTypes_OSPF_NEIGHBOR_STATE = 5
	// OspfTypes_OSPF_NEIGHBOR_STATE_INIT corresponds to the value INIT of OspfTypes_OSPF_NEIGHBOR_STATE
	OspfTypes_OSPF_NEIGHBOR_STATE_INIT E_OspfTypes_OSPF_NEIGHBOR_STATE = 6
	// OspfTypes_OSPF_NEIGHBOR_STATE_LOADING corresponds to the value LOADING of OspfTypes_OSPF_NEIGHBOR_STATE
	OspfTypes_OSPF_NEIGHBOR_STATE_LOADING E_OspfTypes_OSPF_NEIGHBOR_STATE = 7
	// OspfTypes_OSPF_NEIGHBOR_STATE_TWO_WAY corresponds to the value TWO_WAY of OspfTypes_OSPF_NEIGHBOR_STATE
	OspfTypes_OSPF_NEIGHBOR_STATE_TWO_WAY E_OspfTypes_OSPF_NEIGHBOR_STATE = 8
)

// E_OspfTypes_OSPF_NETWORK_TYPE is a derived int64 type which is used to represent
// the enumerated node OspfTypes_OSPF_NETWORK_TYPE. An additional value named
// OspfTypes_OSPF_NETWORK_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_OSPF_NETWORK_TYPE int64

// IsYANGGoEnum ensures that OspfTypes_OSPF_NETWORK_TYPE implements the yang.GoEnum
// interface. This ensures that OspfTypes_OSPF_NETWORK_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_OSPF_NETWORK_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_OSPF_NETWORK_TYPE.
func (E_OspfTypes_OSPF_NETWORK_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_OspfTypes_OSPF_NETWORK_TYPE.
func (e E_OspfTypes_OSPF_NETWORK_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_OSPF_NETWORK_TYPE")
}

const (
	// OspfTypes_OSPF_NETWORK_TYPE_UNSET corresponds to the value UNSET of OspfTypes_OSPF_NETWORK_TYPE
	OspfTypes_OSPF_NETWORK_TYPE_UNSET E_OspfTypes_OSPF_NETWORK_TYPE = 0
	// OspfTypes_OSPF_NETWORK_TYPE_BROADCAST_NETWORK corresponds to the value BROADCAST_NETWORK of OspfTypes_OSPF_NETWORK_TYPE
	OspfTypes_OSPF_NETWORK_TYPE_BROADCAST_NETWORK E_OspfTypes_OSPF_NETWORK_TYPE = 1
	// OspfTypes_OSPF_NETWORK_TYPE_NON_BROADCAST_NETWORK corresponds to the value NON_BROADCAST_NETWORK of OspfTypes_OSPF_NETWORK_TYPE
	OspfTypes_OSPF_NETWORK_TYPE_NON_BROADCAST_NETWORK E_OspfTypes_OSPF_NETWORK_TYPE = 2
	// OspfTypes_OSPF_NETWORK_TYPE_POINT_TO_POINT_NETWORK corresponds to the value POINT_TO_POINT_NETWORK of OspfTypes_OSPF_NETWORK_TYPE
	OspfTypes_OSPF_NETWORK_TYPE_POINT_TO_POINT_NETWORK E_OspfTypes_OSPF_NETWORK_TYPE = 3
)

// E_OspfTypes_OSPF_OPAQUE_LSA_TYPE is a derived int64 type which is used to represent
// the enumerated node OspfTypes_OSPF_OPAQUE_LSA_TYPE. An additional value named
// OspfTypes_OSPF_OPAQUE_LSA_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_OSPF_OPAQUE_LSA_TYPE int64

// IsYANGGoEnum ensures that OspfTypes_OSPF_OPAQUE_LSA_TYPE implements the yang.GoEnum
// interface. This ensures that OspfTypes_OSPF_OPAQUE_LSA_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_OSPF_OPAQUE_LSA_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_OSPF_OPAQUE_LSA_TYPE.
func (E_OspfTypes_OSPF_OPAQUE_LSA_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_OspfTypes_OSPF_OPAQUE_LSA_TYPE.
func (e E_OspfTypes_OSPF_OPAQUE_LSA_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_OSPF_OPAQUE_LSA_TYPE")
}

const (
	// OspfTypes_OSPF_OPAQUE_LSA_TYPE_UNSET corresponds to the value UNSET of OspfTypes_OSPF_OPAQUE_LSA_TYPE
	OspfTypes_OSPF_OPAQUE_LSA_TYPE_UNSET E_OspfTypes_OSPF_OPAQUE_LSA_TYPE = 0
	// OspfTypes_OSPF_OPAQUE_LSA_TYPE_GRACE_LSA corresponds to the value GRACE_LSA of OspfTypes_OSPF_OPAQUE_LSA_TYPE
	OspfTypes_OSPF_OPAQUE_LSA_TYPE_GRACE_LSA E_OspfTypes_OSPF_OPAQUE_LSA_TYPE = 1
	// OspfTypes_OSPF_OPAQUE_LSA_TYPE_OSPFV2_EXTENDED_LINK corresponds to the value OSPFV2_EXTENDED_LINK of OspfTypes_OSPF_OPAQUE_LSA_TYPE
	OspfTypes_OSPF_OPAQUE_LSA_TYPE_OSPFV2_EXTENDED_LINK E_OspfTypes_OSPF_OPAQUE_LSA_TYPE = 2
	// OspfTypes_OSPF_OPAQUE_LSA_TYPE_OSPFV2_EXTENDED_PREFIX corresponds to the value OSPFV2_EXTENDED_PREFIX of OspfTypes_OSPF_OPAQUE_LSA_TYPE
	OspfTypes_OSPF_OPAQUE_LSA_TYPE_OSPFV2_EXTENDED_PREFIX E_OspfTypes_OSPF_OPAQUE_LSA_TYPE = 3
	// OspfTypes_OSPF_OPAQUE_LSA_TYPE_ROUTER_INFORMATION corresponds to the value ROUTER_INFORMATION of OspfTypes_OSPF_OPAQUE_LSA_TYPE
	OspfTypes_OSPF_OPAQUE_LSA_TYPE_ROUTER_INFORMATION E_OspfTypes_OSPF_OPAQUE_LSA_TYPE = 4
	// OspfTypes_OSPF_OPAQUE_LSA_TYPE_TRAFFIC_ENGINEERING corresponds to the value TRAFFIC_ENGINEERING of OspfTypes_OSPF_OPAQUE_LSA_TYPE
	OspfTypes_OSPF_OPAQUE_LSA_TYPE_TRAFFIC_ENGINEERING E_OspfTypes_OSPF_OPAQUE_LSA_TYPE = 5
)

// E_OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES is a derived int64 type which is used to represent
// the enumerated node OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES. An additional value named
// OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES int64

// IsYANGGoEnum ensures that OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES implements the yang.GoEnum
// interface. This ensures that OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES.
func (E_OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES.
func (e E_OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES")
}

const (
	// OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES_UNSET corresponds to the value UNSET of OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES
	OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES_UNSET E_OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES = 0
	// OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES_SR_SID_LABEL_TLV corresponds to the value SR_SID_LABEL_TLV of OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES
	OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES_SR_SID_LABEL_TLV E_OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES = 1
)

// E_OspfTypes_OSPF_TE_LINK_TLV_TYPE is a derived int64 type which is used to represent
// the enumerated node OspfTypes_OSPF_TE_LINK_TLV_TYPE. An additional value named
// OspfTypes_OSPF_TE_LINK_TLV_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_OSPF_TE_LINK_TLV_TYPE int64

// IsYANGGoEnum ensures that OspfTypes_OSPF_TE_LINK_TLV_TYPE implements the yang.GoEnum
// interface. This ensures that OspfTypes_OSPF_TE_LINK_TLV_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_OSPF_TE_LINK_TLV_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_OSPF_TE_LINK_TLV_TYPE.
func (E_OspfTypes_OSPF_TE_LINK_TLV_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_OspfTypes_OSPF_TE_LINK_TLV_TYPE.
func (e E_OspfTypes_OSPF_TE_LINK_TLV_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_OSPF_TE_LINK_TLV_TYPE")
}

const (
	// OspfTypes_OSPF_TE_LINK_TLV_TYPE_UNSET corresponds to the value UNSET of OspfTypes_OSPF_TE_LINK_TLV_TYPE
	OspfTypes_OSPF_TE_LINK_TLV_TYPE_UNSET E_OspfTypes_OSPF_TE_LINK_TLV_TYPE = 0
	// OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_ADMIN_GROUP corresponds to the value TE_LINK_ADMIN_GROUP of OspfTypes_OSPF_TE_LINK_TLV_TYPE
	OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_ADMIN_GROUP E_OspfTypes_OSPF_TE_LINK_TLV_TYPE = 1
	// OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_ID corresponds to the value TE_LINK_ID of OspfTypes_OSPF_TE_LINK_TLV_TYPE
	OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_ID E_OspfTypes_OSPF_TE_LINK_TLV_TYPE = 2
	// OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_LOCAL_IP corresponds to the value TE_LINK_LOCAL_IP of OspfTypes_OSPF_TE_LINK_TLV_TYPE
	OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_LOCAL_IP E_OspfTypes_OSPF_TE_LINK_TLV_TYPE = 3
	// OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_MAXIMUM_BANDWIDTH corresponds to the value TE_LINK_MAXIMUM_BANDWIDTH of OspfTypes_OSPF_TE_LINK_TLV_TYPE
	OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_MAXIMUM_BANDWIDTH E_OspfTypes_OSPF_TE_LINK_TLV_TYPE = 4
	// OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_MAXIMUM_RESERVABLE_BANDWIDTH corresponds to the value TE_LINK_MAXIMUM_RESERVABLE_BANDWIDTH of OspfTypes_OSPF_TE_LINK_TLV_TYPE
	OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_MAXIMUM_RESERVABLE_BANDWIDTH E_OspfTypes_OSPF_TE_LINK_TLV_TYPE = 5
	// OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_METRIC corresponds to the value TE_LINK_METRIC of OspfTypes_OSPF_TE_LINK_TLV_TYPE
	OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_METRIC E_OspfTypes_OSPF_TE_LINK_TLV_TYPE = 6
	// OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_REMOTE_IP corresponds to the value TE_LINK_REMOTE_IP of OspfTypes_OSPF_TE_LINK_TLV_TYPE
	OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_REMOTE_IP E_OspfTypes_OSPF_TE_LINK_TLV_TYPE = 7
	// OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_TYPE corresponds to the value TE_LINK_TYPE of OspfTypes_OSPF_TE_LINK_TLV_TYPE
	OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_TYPE E_OspfTypes_OSPF_TE_LINK_TLV_TYPE = 8
	// OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_UNRESERVED_BANDWIDTH corresponds to the value TE_LINK_UNRESERVED_BANDWIDTH of OspfTypes_OSPF_TE_LINK_TLV_TYPE
	OspfTypes_OSPF_TE_LINK_TLV_TYPE_TE_LINK_UNRESERVED_BANDWIDTH E_OspfTypes_OSPF_TE_LINK_TLV_TYPE = 9
)

// E_OspfTypes_OSPF_TE_LSA_TLV_TYPE is a derived int64 type which is used to represent
// the enumerated node OspfTypes_OSPF_TE_LSA_TLV_TYPE. An additional value named
// OspfTypes_OSPF_TE_LSA_TLV_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_OSPF_TE_LSA_TLV_TYPE int64

// IsYANGGoEnum ensures that OspfTypes_OSPF_TE_LSA_TLV_TYPE implements the yang.GoEnum
// interface. This ensures that OspfTypes_OSPF_TE_LSA_TLV_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_OSPF_TE_LSA_TLV_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_OSPF_TE_LSA_TLV_TYPE.
func (E_OspfTypes_OSPF_TE_LSA_TLV_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_OspfTypes_OSPF_TE_LSA_TLV_TYPE.
func (e E_OspfTypes_OSPF_TE_LSA_TLV_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_OSPF_TE_LSA_TLV_TYPE")
}

const (
	// OspfTypes_OSPF_TE_LSA_TLV_TYPE_UNSET corresponds to the value UNSET of OspfTypes_OSPF_TE_LSA_TLV_TYPE
	OspfTypes_OSPF_TE_LSA_TLV_TYPE_UNSET E_OspfTypes_OSPF_TE_LSA_TLV_TYPE = 0
	// OspfTypes_OSPF_TE_LSA_TLV_TYPE_TE_LINK corresponds to the value TE_LINK of OspfTypes_OSPF_TE_LSA_TLV_TYPE
	OspfTypes_OSPF_TE_LSA_TLV_TYPE_TE_LINK E_OspfTypes_OSPF_TE_LSA_TLV_TYPE = 1
	// OspfTypes_OSPF_TE_LSA_TLV_TYPE_TE_LINK_LOCAL corresponds to the value TE_LINK_LOCAL of OspfTypes_OSPF_TE_LSA_TLV_TYPE
	OspfTypes_OSPF_TE_LSA_TLV_TYPE_TE_LINK_LOCAL E_OspfTypes_OSPF_TE_LSA_TLV_TYPE = 2
	// OspfTypes_OSPF_TE_LSA_TLV_TYPE_TE_NODE_ATTRIBUTE corresponds to the value TE_NODE_ATTRIBUTE of OspfTypes_OSPF_TE_LSA_TLV_TYPE
	OspfTypes_OSPF_TE_LSA_TLV_TYPE_TE_NODE_ATTRIBUTE E_OspfTypes_OSPF_TE_LSA_TLV_TYPE = 3
	// OspfTypes_OSPF_TE_LSA_TLV_TYPE_TE_OPTICAL_NODE_PROPERTY corresponds to the value TE_OPTICAL_NODE_PROPERTY of OspfTypes_OSPF_TE_LSA_TLV_TYPE
	OspfTypes_OSPF_TE_LSA_TLV_TYPE_TE_OPTICAL_NODE_PROPERTY E_OspfTypes_OSPF_TE_LSA_TLV_TYPE = 4
	// OspfTypes_OSPF_TE_LSA_TLV_TYPE_TE_ROUTER_ADDRESS corresponds to the value TE_ROUTER_ADDRESS of OspfTypes_OSPF_TE_LSA_TLV_TYPE
	OspfTypes_OSPF_TE_LSA_TLV_TYPE_TE_ROUTER_ADDRESS E_OspfTypes_OSPF_TE_LSA_TLV_TYPE = 5
	// OspfTypes_OSPF_TE_LSA_TLV_TYPE_TE_ROUTER_IPV6_ADDRESS corresponds to the value TE_ROUTER_IPV6_ADDRESS of OspfTypes_OSPF_TE_LSA_TLV_TYPE
	OspfTypes_OSPF_TE_LSA_TLV_TYPE_TE_ROUTER_IPV6_ADDRESS E_OspfTypes_OSPF_TE_LSA_TLV_TYPE = 6
)

// E_OspfTypes_RI_LSA_TLV_TYPES is a derived int64 type which is used to represent
// the enumerated node OspfTypes_RI_LSA_TLV_TYPES. An additional value named
// OspfTypes_RI_LSA_TLV_TYPES_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_RI_LSA_TLV_TYPES int64

// IsYANGGoEnum ensures that OspfTypes_RI_LSA_TLV_TYPES implements the yang.GoEnum
// interface. This ensures that OspfTypes_RI_LSA_TLV_TYPES can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_RI_LSA_TLV_TYPES) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_RI_LSA_TLV_TYPES.
func (E_OspfTypes_RI_LSA_TLV_TYPES) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_OspfTypes_RI_LSA_TLV_TYPES.
func (e E_OspfTypes_RI_LSA_TLV_TYPES) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_RI_LSA_TLV_TYPES")
}

const (
	// OspfTypes_RI_LSA_TLV_TYPES_UNSET corresponds to the value UNSET of OspfTypes_RI_LSA_TLV_TYPES
	OspfTypes_RI_LSA_TLV_TYPES_UNSET E_OspfTypes_RI_LSA_TLV_TYPES = 0
	// OspfTypes_RI_LSA_TLV_TYPES_RI_FUNCTIONAL_CAPABILITIES corresponds to the value RI_FUNCTIONAL_CAPABILITIES of OspfTypes_RI_LSA_TLV_TYPES
	OspfTypes_RI_LSA_TLV_TYPES_RI_FUNCTIONAL_CAPABILITIES E_OspfTypes_RI_LSA_TLV_TYPES = 1
	// OspfTypes_RI_LSA_TLV_TYPES_RI_INFORMATIONAL_CAPABILITIES corresponds to the value RI_INFORMATIONAL_CAPABILITIES of OspfTypes_RI_LSA_TLV_TYPES
	OspfTypes_RI_LSA_TLV_TYPES_RI_INFORMATIONAL_CAPABILITIES E_OspfTypes_RI_LSA_TLV_TYPES = 2
	// OspfTypes_RI_LSA_TLV_TYPES_RI_NODE_ADMIN_TAG corresponds to the value RI_NODE_ADMIN_TAG of OspfTypes_RI_LSA_TLV_TYPES
	OspfTypes_RI_LSA_TLV_TYPES_RI_NODE_ADMIN_TAG E_OspfTypes_RI_LSA_TLV_TYPES = 3
	// OspfTypes_RI_LSA_TLV_TYPES_RI_SR_ALGORITHM corresponds to the value RI_SR_ALGORITHM of OspfTypes_RI_LSA_TLV_TYPES
	OspfTypes_RI_LSA_TLV_TYPES_RI_SR_ALGORITHM E_OspfTypes_RI_LSA_TLV_TYPES = 4
	// OspfTypes_RI_LSA_TLV_TYPES_RI_SR_SID_LABEL_RANGE corresponds to the value RI_SR_SID_LABEL_RANGE of OspfTypes_RI_LSA_TLV_TYPES
	OspfTypes_RI_LSA_TLV_TYPES_RI_SR_SID_LABEL_RANGE E_OspfTypes_RI_LSA_TLV_TYPES = 5
)

// E_OspfTypes_ROUTER_LSA_TYPES is a derived int64 type which is used to represent
// the enumerated node OspfTypes_ROUTER_LSA_TYPES. An additional value named
// OspfTypes_ROUTER_LSA_TYPES_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_ROUTER_LSA_TYPES int64

// IsYANGGoEnum ensures that OspfTypes_ROUTER_LSA_TYPES implements the yang.GoEnum
// interface. This ensures that OspfTypes_ROUTER_LSA_TYPES can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_ROUTER_LSA_TYPES) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_ROUTER_LSA_TYPES.
func (E_OspfTypes_ROUTER_LSA_TYPES) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_OspfTypes_ROUTER_LSA_TYPES.
func (e E_OspfTypes_ROUTER_LSA_TYPES) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_ROUTER_LSA_TYPES")
}

const (
	// OspfTypes_ROUTER_LSA_TYPES_UNSET corresponds to the value UNSET of OspfTypes_ROUTER_LSA_TYPES
	OspfTypes_ROUTER_LSA_TYPES_UNSET E_OspfTypes_ROUTER_LSA_TYPES = 0
	// OspfTypes_ROUTER_LSA_TYPES_ROUTER_LSA_P2P corresponds to the value ROUTER_LSA_P2P of OspfTypes_ROUTER_LSA_TYPES
	OspfTypes_ROUTER_LSA_TYPES_ROUTER_LSA_P2P E_OspfTypes_ROUTER_LSA_TYPES = 1
	// OspfTypes_ROUTER_LSA_TYPES_ROUTER_LSA_STUB_NETWORK corresponds to the value ROUTER_LSA_STUB_NETWORK of OspfTypes_ROUTER_LSA_TYPES
	OspfTypes_ROUTER_LSA_TYPES_ROUTER_LSA_STUB_NETWORK E_OspfTypes_ROUTER_LSA_TYPES = 2
	// OspfTypes_ROUTER_LSA_TYPES_ROUTER_LSA_TRANSIT_NETWORK corresponds to the value ROUTER_LSA_TRANSIT_NETWORK of OspfTypes_ROUTER_LSA_TYPES
	OspfTypes_ROUTER_LSA_TYPES_ROUTER_LSA_TRANSIT_NETWORK E_OspfTypes_ROUTER_LSA_TYPES = 3
	// OspfTypes_ROUTER_LSA_TYPES_ROUTER_LSA_VIRTUAL_LINK corresponds to the value ROUTER_LSA_VIRTUAL_LINK of OspfTypes_ROUTER_LSA_TYPES
	OspfTypes_ROUTER_LSA_TYPES_ROUTER_LSA_VIRTUAL_LINK E_OspfTypes_ROUTER_LSA_TYPES = 4
)

// E_OspfTypes_SR_ALGORITHM is a derived int64 type which is used to represent
// the enumerated node OspfTypes_SR_ALGORITHM. An additional value named
// OspfTypes_SR_ALGORITHM_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_SR_ALGORITHM int64

// IsYANGGoEnum ensures that OspfTypes_SR_ALGORITHM implements the yang.GoEnum
// interface. This ensures that OspfTypes_SR_ALGORITHM can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_SR_ALGORITHM) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_SR_ALGORITHM.
func (E_OspfTypes_SR_ALGORITHM) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_OspfTypes_SR_ALGORITHM.
func (e E_OspfTypes_SR_ALGORITHM) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_SR_ALGORITHM")
}

const (
	// OspfTypes_SR_ALGORITHM_UNSET corresponds to the value UNSET of OspfTypes_SR_ALGORITHM
	OspfTypes_SR_ALGORITHM_UNSET E_OspfTypes_SR_ALGORITHM = 0
	// OspfTypes_SR_ALGORITHM_SPF corresponds to the value SPF of OspfTypes_SR_ALGORITHM
	OspfTypes_SR_ALGORITHM_SPF E_OspfTypes_SR_ALGORITHM = 1
	// OspfTypes_SR_ALGORITHM_STRICT_SPF corresponds to the value STRICT_SPF of OspfTypes_SR_ALGORITHM
	OspfTypes_SR_ALGORITHM_STRICT_SPF E_OspfTypes_SR_ALGORITHM = 2
)

// E_OspfTypes_SrSidType is a derived int64 type which is used to represent
// the enumerated node OspfTypes_SrSidType. An additional value named
// OspfTypes_SrSidType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_SrSidType int64

// IsYANGGoEnum ensures that OspfTypes_SrSidType implements the yang.GoEnum
// interface. This ensures that OspfTypes_SrSidType can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_SrSidType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_SrSidType.
func (E_OspfTypes_SrSidType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_OspfTypes_SrSidType.
func (e E_OspfTypes_SrSidType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_SrSidType")
}

const (
	// OspfTypes_SrSidType_UNSET corresponds to the value UNSET of OspfTypes_SrSidType
	OspfTypes_SrSidType_UNSET E_OspfTypes_SrSidType = 0
	// OspfTypes_SrSidType_LABEL corresponds to the value LABEL of OspfTypes_SrSidType
	OspfTypes_SrSidType_LABEL E_OspfTypes_SrSidType = 1
	// OspfTypes_SrSidType_SID corresponds to the value SID of OspfTypes_SrSidType
	OspfTypes_SrSidType_SID E_OspfTypes_SrSidType = 2
)

// E_OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE is a derived int64 type which is used to represent
// the enumerated node OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE. An additional value named
// OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE int64

// IsYANGGoEnum ensures that OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE implements the yang.GoEnum
// interface. This ensures that OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE.
func (E_OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE.
func (e E_OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE")
}

const (
	// OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE_UNSET corresponds to the value UNSET of OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE
	OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE_UNSET E_OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE = 0
	// OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE_NODE_IPV4_LOCAL_ADDRESS corresponds to the value NODE_IPV4_LOCAL_ADDRESS of OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE
	OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE_NODE_IPV4_LOCAL_ADDRESS E_OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE = 1
	// OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE_NODE_IPV6_LOCAL_ADDRESS corresponds to the value NODE_IPV6_LOCAL_ADDRESS of OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE
	OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE_NODE_IPV6_LOCAL_ADDRESS E_OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE = 2
)

// E_PacketMatchTypes_ETHERTYPE is a derived int64 type which is used to represent
// the enumerated node PacketMatchTypes_ETHERTYPE. An additional value named
// PacketMatchTypes_ETHERTYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PacketMatchTypes_ETHERTYPE int64

// IsYANGGoEnum ensures that PacketMatchTypes_ETHERTYPE implements the yang.GoEnum
// interface. This ensures that PacketMatchTypes_ETHERTYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_PacketMatchTypes_ETHERTYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PacketMatchTypes_ETHERTYPE.
func (E_PacketMatchTypes_ETHERTYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_PacketMatchTypes_ETHERTYPE.
func (e E_PacketMatchTypes_ETHERTYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PacketMatchTypes_ETHERTYPE")
}

const (
	// PacketMatchTypes_ETHERTYPE_UNSET corresponds to the value UNSET of PacketMatchTypes_ETHERTYPE
	PacketMatchTypes_ETHERTYPE_UNSET E_PacketMatchTypes_ETHERTYPE = 0
	// PacketMatchTypes_ETHERTYPE_ETHERTYPE_ARP corresponds to the value ETHERTYPE_ARP of PacketMatchTypes_ETHERTYPE
	PacketMatchTypes_ETHERTYPE_ETHERTYPE_ARP E_PacketMatchTypes_ETHERTYPE = 1
	// PacketMatchTypes_ETHERTYPE_ETHERTYPE_IPV4 corresponds to the value ETHERTYPE_IPV4 of PacketMatchTypes_ETHERTYPE
	PacketMatchTypes_ETHERTYPE_ETHERTYPE_IPV4 E_PacketMatchTypes_ETHERTYPE = 2
	// PacketMatchTypes_ETHERTYPE_ETHERTYPE_IPV6 corresponds to the value ETHERTYPE_IPV6 of PacketMatchTypes_ETHERTYPE
	PacketMatchTypes_ETHERTYPE_ETHERTYPE_IPV6 E_PacketMatchTypes_ETHERTYPE = 3
	// PacketMatchTypes_ETHERTYPE_ETHERTYPE_LLDP corresponds to the value ETHERTYPE_LLDP of PacketMatchTypes_ETHERTYPE
	PacketMatchTypes_ETHERTYPE_ETHERTYPE_LLDP E_PacketMatchTypes_ETHERTYPE = 4
	// PacketMatchTypes_ETHERTYPE_ETHERTYPE_MPLS corresponds to the value ETHERTYPE_MPLS of PacketMatchTypes_ETHERTYPE
	PacketMatchTypes_ETHERTYPE_ETHERTYPE_MPLS E_PacketMatchTypes_ETHERTYPE = 5
	// PacketMatchTypes_ETHERTYPE_ETHERTYPE_ROCE corresponds to the value ETHERTYPE_ROCE of PacketMatchTypes_ETHERTYPE
	PacketMatchTypes_ETHERTYPE_ETHERTYPE_ROCE E_PacketMatchTypes_ETHERTYPE = 6
	// PacketMatchTypes_ETHERTYPE_ETHERTYPE_VLAN corresponds to the value ETHERTYPE_VLAN of PacketMatchTypes_ETHERTYPE
	PacketMatchTypes_ETHERTYPE_ETHERTYPE_VLAN E_PacketMatchTypes_ETHERTYPE = 7
)

// E_PacketMatchTypes_IP_PROTOCOL is a derived int64 type which is used to represent
// the enumerated node PacketMatchTypes_IP_PROTOCOL. An additional value named
// PacketMatchTypes_IP_PROTOCOL_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PacketMatchTypes_IP_PROTOCOL int64

// IsYANGGoEnum ensures that PacketMatchTypes_IP_PROTOCOL implements the yang.GoEnum
// interface. This ensures that PacketMatchTypes_IP_PROTOCOL can be identified as a
// mapped type for a YANG enumeration.
func (E_PacketMatchTypes_IP_PROTOCOL) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PacketMatchTypes_IP_PROTOCOL.
func (E_PacketMatchTypes_IP_PROTOCOL) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_PacketMatchTypes_IP_PROTOCOL.
func (e E_PacketMatchTypes_IP_PROTOCOL) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PacketMatchTypes_IP_PROTOCOL")
}

const (
	// PacketMatchTypes_IP_PROTOCOL_UNSET corresponds to the value UNSET of PacketMatchTypes_IP_PROTOCOL
	PacketMatchTypes_IP_PROTOCOL_UNSET E_PacketMatchTypes_IP_PROTOCOL = 0
	// PacketMatchTypes_IP_PROTOCOL_IP_AUTH corresponds to the value IP_AUTH of PacketMatchTypes_IP_PROTOCOL
	PacketMatchTypes_IP_PROTOCOL_IP_AUTH E_PacketMatchTypes_IP_PROTOCOL = 1
	// PacketMatchTypes_IP_PROTOCOL_IP_GRE corresponds to the value IP_GRE of PacketMatchTypes_IP_PROTOCOL
	PacketMatchTypes_IP_PROTOCOL_IP_GRE E_PacketMatchTypes_IP_PROTOCOL = 2
	// PacketMatchTypes_IP_PROTOCOL_IP_ICMP corresponds to the value IP_ICMP of PacketMatchTypes_IP_PROTOCOL
	PacketMatchTypes_IP_PROTOCOL_IP_ICMP E_PacketMatchTypes_IP_PROTOCOL = 3
	// PacketMatchTypes_IP_PROTOCOL_IP_IGMP corresponds to the value IP_IGMP of PacketMatchTypes_IP_PROTOCOL
	PacketMatchTypes_IP_PROTOCOL_IP_IGMP E_PacketMatchTypes_IP_PROTOCOL = 4
	// PacketMatchTypes_IP_PROTOCOL_IP_IN_IP corresponds to the value IP_IN_IP of PacketMatchTypes_IP_PROTOCOL
	PacketMatchTypes_IP_PROTOCOL_IP_IN_IP E_PacketMatchTypes_IP_PROTOCOL = 5
	// PacketMatchTypes_IP_PROTOCOL_IP_L2TP corresponds to the value IP_L2TP of PacketMatchTypes_IP_PROTOCOL
	PacketMatchTypes_IP_PROTOCOL_IP_L2TP E_PacketMatchTypes_IP_PROTOCOL = 6
	// PacketMatchTypes_IP_PROTOCOL_IP_PIM corresponds to the value IP_PIM of PacketMatchTypes_IP_PROTOCOL
	PacketMatchTypes_IP_PROTOCOL_IP_PIM E_PacketMatchTypes_IP_PROTOCOL = 7
	// PacketMatchTypes_IP_PROTOCOL_IP_RSVP corresponds to the value IP_RSVP of PacketMatchTypes_IP_PROTOCOL
	PacketMatchTypes_IP_PROTOCOL_IP_RSVP E_PacketMatchTypes_IP_PROTOCOL = 8
	// PacketMatchTypes_IP_PROTOCOL_IP_TCP corresponds to the value IP_TCP of PacketMatchTypes_IP_PROTOCOL
	PacketMatchTypes_IP_PROTOCOL_IP_TCP E_PacketMatchTypes_IP_PROTOCOL = 9
	// PacketMatchTypes_IP_PROTOCOL_IP_UDP corresponds to the value IP_UDP of PacketMatchTypes_IP_PROTOCOL
	PacketMatchTypes_IP_PROTOCOL_IP_UDP E_PacketMatchTypes_IP_PROTOCOL = 10
)

// E_PacketMatchTypes_PortNumRange_Enum is a derived int64 type which is used to represent
// the enumerated node PacketMatchTypes_PortNumRange_Enum. An additional value named
// PacketMatchTypes_PortNumRange_Enum_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PacketMatchTypes_PortNumRange_Enum int64

// IsYANGGoEnum ensures that PacketMatchTypes_PortNumRange_Enum implements the yang.GoEnum
// interface. This ensures that PacketMatchTypes_PortNumRange_Enum can be identified as a
// mapped type for a YANG enumeration.
func (E_PacketMatchTypes_PortNumRange_Enum) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PacketMatchTypes_PortNumRange_Enum.
func (E_PacketMatchTypes_PortNumRange_Enum) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_PacketMatchTypes_PortNumRange_Enum.
func (e E_PacketMatchTypes_PortNumRange_Enum) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PacketMatchTypes_PortNumRange_Enum")
}

const (
	// PacketMatchTypes_PortNumRange_Enum_UNSET corresponds to the value UNSET of PacketMatchTypes_PortNumRange_Enum
	PacketMatchTypes_PortNumRange_Enum_UNSET E_PacketMatchTypes_PortNumRange_Enum = 0
	// PacketMatchTypes_PortNumRange_Enum_ANY corresponds to the value ANY of PacketMatchTypes_PortNumRange_Enum
	PacketMatchTypes_PortNumRange_Enum_ANY E_PacketMatchTypes_PortNumRange_Enum = 1
)

// E_PacketMatchTypes_TCP_FLAGS is a derived int64 type which is used to represent
// the enumerated node PacketMatchTypes_TCP_FLAGS. An additional value named
// PacketMatchTypes_TCP_FLAGS_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PacketMatchTypes_TCP_FLAGS int64

// IsYANGGoEnum ensures that PacketMatchTypes_TCP_FLAGS implements the yang.GoEnum
// interface. This ensures that PacketMatchTypes_TCP_FLAGS can be identified as a
// mapped type for a YANG enumeration.
func (E_PacketMatchTypes_TCP_FLAGS) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PacketMatchTypes_TCP_FLAGS.
func (E_PacketMatchTypes_TCP_FLAGS) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_PacketMatchTypes_TCP_FLAGS.
func (e E_PacketMatchTypes_TCP_FLAGS) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PacketMatchTypes_TCP_FLAGS")
}

const (
	// PacketMatchTypes_TCP_FLAGS_UNSET corresponds to the value UNSET of PacketMatchTypes_TCP_FLAGS
	PacketMatchTypes_TCP_FLAGS_UNSET E_PacketMatchTypes_TCP_FLAGS = 0
	// PacketMatchTypes_TCP_FLAGS_TCP_ACK corresponds to the value TCP_ACK of PacketMatchTypes_TCP_FLAGS
	PacketMatchTypes_TCP_FLAGS_TCP_ACK E_PacketMatchTypes_TCP_FLAGS = 1
	// PacketMatchTypes_TCP_FLAGS_TCP_CWR corresponds to the value TCP_CWR of PacketMatchTypes_TCP_FLAGS
	PacketMatchTypes_TCP_FLAGS_TCP_CWR E_PacketMatchTypes_TCP_FLAGS = 2
	// PacketMatchTypes_TCP_FLAGS_TCP_ECE corresponds to the value TCP_ECE of PacketMatchTypes_TCP_FLAGS
	PacketMatchTypes_TCP_FLAGS_TCP_ECE E_PacketMatchTypes_TCP_FLAGS = 3
	// PacketMatchTypes_TCP_FLAGS_TCP_FIN corresponds to the value TCP_FIN of PacketMatchTypes_TCP_FLAGS
	PacketMatchTypes_TCP_FLAGS_TCP_FIN E_PacketMatchTypes_TCP_FLAGS = 4
	// PacketMatchTypes_TCP_FLAGS_TCP_PSH corresponds to the value TCP_PSH of PacketMatchTypes_TCP_FLAGS
	PacketMatchTypes_TCP_FLAGS_TCP_PSH E_PacketMatchTypes_TCP_FLAGS = 5
	// PacketMatchTypes_TCP_FLAGS_TCP_RST corresponds to the value TCP_RST of PacketMatchTypes_TCP_FLAGS
	PacketMatchTypes_TCP_FLAGS_TCP_RST E_PacketMatchTypes_TCP_FLAGS = 6
	// PacketMatchTypes_TCP_FLAGS_TCP_SYN corresponds to the value TCP_SYN of PacketMatchTypes_TCP_FLAGS
	PacketMatchTypes_TCP_FLAGS_TCP_SYN E_PacketMatchTypes_TCP_FLAGS = 7
	// PacketMatchTypes_TCP_FLAGS_TCP_URG corresponds to the value TCP_URG of PacketMatchTypes_TCP_FLAGS
	PacketMatchTypes_TCP_FLAGS_TCP_URG E_PacketMatchTypes_TCP_FLAGS = 8
)

// E_Pcep_LspControlType is a derived int64 type which is used to represent
// the enumerated node Pcep_LspControlType. An additional value named
// Pcep_LspControlType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Pcep_LspControlType int64

// IsYANGGoEnum ensures that Pcep_LspControlType implements the yang.GoEnum
// interface. This ensures that Pcep_LspControlType can be identified as a
// mapped type for a YANG enumeration.
func (E_Pcep_LspControlType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Pcep_LspControlType.
func (E_Pcep_LspControlType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Pcep_LspControlType.
func (e E_Pcep_LspControlType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Pcep_LspControlType")
}

const (
	// Pcep_LspControlType_UNSET corresponds to the value UNSET of Pcep_LspControlType
	Pcep_LspControlType_UNSET E_Pcep_LspControlType = 0
	// Pcep_LspControlType_PCE_DELEGATED corresponds to the value PCE_DELEGATED of Pcep_LspControlType
	Pcep_LspControlType_PCE_DELEGATED E_Pcep_LspControlType = 1
	// Pcep_LspControlType_PCC_CONTROLLED corresponds to the value PCC_CONTROLLED of Pcep_LspControlType
	Pcep_LspControlType_PCC_CONTROLLED E_Pcep_LspControlType = 2
	// Pcep_LspControlType_PCC_REPORT_ONLY corresponds to the value PCC_REPORT_ONLY of Pcep_LspControlType
	Pcep_LspControlType_PCC_REPORT_ONLY E_Pcep_LspControlType = 3
)

// E_Pcep_PceModeType is a derived int64 type which is used to represent
// the enumerated node Pcep_PceModeType. An additional value named
// Pcep_PceModeType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Pcep_PceModeType int64

// IsYANGGoEnum ensures that Pcep_PceModeType implements the yang.GoEnum
// interface. This ensures that Pcep_PceModeType can be identified as a
// mapped type for a YANG enumeration.
func (E_Pcep_PceModeType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Pcep_PceModeType.
func (E_Pcep_PceModeType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Pcep_PceModeType.
func (e E_Pcep_PceModeType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Pcep_PceModeType")
}

const (
	// Pcep_PceModeType_UNSET corresponds to the value UNSET of Pcep_PceModeType
	Pcep_PceModeType_UNSET E_Pcep_PceModeType = 0
	// Pcep_PceModeType_STATELESS corresponds to the value STATELESS of Pcep_PceModeType
	Pcep_PceModeType_STATELESS E_Pcep_PceModeType = 1
	// Pcep_PceModeType_STATEFUL_PASSIVE corresponds to the value STATEFUL_PASSIVE of Pcep_PceModeType
	Pcep_PceModeType_STATEFUL_PASSIVE E_Pcep_PceModeType = 2
	// Pcep_PceModeType_STATEFUL_ACTIVE corresponds to the value STATEFUL_ACTIVE of Pcep_PceModeType
	Pcep_PceModeType_STATEFUL_ACTIVE E_Pcep_PceModeType = 3
)

// E_PimTypes_PIM_MODE is a derived int64 type which is used to represent
// the enumerated node PimTypes_PIM_MODE. An additional value named
// PimTypes_PIM_MODE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PimTypes_PIM_MODE int64

// IsYANGGoEnum ensures that PimTypes_PIM_MODE implements the yang.GoEnum
// interface. This ensures that PimTypes_PIM_MODE can be identified as a
// mapped type for a YANG enumeration.
func (E_PimTypes_PIM_MODE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PimTypes_PIM_MODE.
func (E_PimTypes_PIM_MODE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_PimTypes_PIM_MODE.
func (e E_PimTypes_PIM_MODE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PimTypes_PIM_MODE")
}

const (
	// PimTypes_PIM_MODE_UNSET corresponds to the value UNSET of PimTypes_PIM_MODE
	PimTypes_PIM_MODE_UNSET E_PimTypes_PIM_MODE = 0
	// PimTypes_PIM_MODE_PIM_MODE_DENSE corresponds to the value PIM_MODE_DENSE of PimTypes_PIM_MODE
	PimTypes_PIM_MODE_PIM_MODE_DENSE E_PimTypes_PIM_MODE = 1
	// PimTypes_PIM_MODE_PIM_MODE_SPARSE corresponds to the value PIM_MODE_SPARSE of PimTypes_PIM_MODE
	PimTypes_PIM_MODE_PIM_MODE_SPARSE E_PimTypes_PIM_MODE = 2
)

// E_PlatformTypes_COMPONENT_OPER_STATUS is a derived int64 type which is used to represent
// the enumerated node PlatformTypes_COMPONENT_OPER_STATUS. An additional value named
// PlatformTypes_COMPONENT_OPER_STATUS_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PlatformTypes_COMPONENT_OPER_STATUS int64

// IsYANGGoEnum ensures that PlatformTypes_COMPONENT_OPER_STATUS implements the yang.GoEnum
// interface. This ensures that PlatformTypes_COMPONENT_OPER_STATUS can be identified as a
// mapped type for a YANG enumeration.
func (E_PlatformTypes_COMPONENT_OPER_STATUS) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PlatformTypes_COMPONENT_OPER_STATUS.
func (E_PlatformTypes_COMPONENT_OPER_STATUS) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_PlatformTypes_COMPONENT_OPER_STATUS.
func (e E_PlatformTypes_COMPONENT_OPER_STATUS) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PlatformTypes_COMPONENT_OPER_STATUS")
}

const (
	// PlatformTypes_COMPONENT_OPER_STATUS_UNSET corresponds to the value UNSET of PlatformTypes_COMPONENT_OPER_STATUS
	PlatformTypes_COMPONENT_OPER_STATUS_UNSET E_PlatformTypes_COMPONENT_OPER_STATUS = 0
	// PlatformTypes_COMPONENT_OPER_STATUS_ACTIVE corresponds to the value ACTIVE of PlatformTypes_COMPONENT_OPER_STATUS
	PlatformTypes_COMPONENT_OPER_STATUS_ACTIVE E_PlatformTypes_COMPONENT_OPER_STATUS = 1
	// PlatformTypes_COMPONENT_OPER_STATUS_DISABLED corresponds to the value DISABLED of PlatformTypes_COMPONENT_OPER_STATUS
	PlatformTypes_COMPONENT_OPER_STATUS_DISABLED E_PlatformTypes_COMPONENT_OPER_STATUS = 2
	// PlatformTypes_COMPONENT_OPER_STATUS_INACTIVE corresponds to the value INACTIVE of PlatformTypes_COMPONENT_OPER_STATUS
	PlatformTypes_COMPONENT_OPER_STATUS_INACTIVE E_PlatformTypes_COMPONENT_OPER_STATUS = 3
)

// E_PlatformTypes_COMPONENT_REBOOT_REASON is a derived int64 type which is used to represent
// the enumerated node PlatformTypes_COMPONENT_REBOOT_REASON. An additional value named
// PlatformTypes_COMPONENT_REBOOT_REASON_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PlatformTypes_COMPONENT_REBOOT_REASON int64

// IsYANGGoEnum ensures that PlatformTypes_COMPONENT_REBOOT_REASON implements the yang.GoEnum
// interface. This ensures that PlatformTypes_COMPONENT_REBOOT_REASON can be identified as a
// mapped type for a YANG enumeration.
func (E_PlatformTypes_COMPONENT_REBOOT_REASON) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PlatformTypes_COMPONENT_REBOOT_REASON.
func (E_PlatformTypes_COMPONENT_REBOOT_REASON) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_PlatformTypes_COMPONENT_REBOOT_REASON.
func (e E_PlatformTypes_COMPONENT_REBOOT_REASON) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PlatformTypes_COMPONENT_REBOOT_REASON")
}

const (
	// PlatformTypes_COMPONENT_REBOOT_REASON_UNSET corresponds to the value UNSET of PlatformTypes_COMPONENT_REBOOT_REASON
	PlatformTypes_COMPONENT_REBOOT_REASON_UNSET E_PlatformTypes_COMPONENT_REBOOT_REASON = 0
	// PlatformTypes_COMPONENT_REBOOT_REASON_REBOOT_CRITICAL_ERROR corresponds to the value REBOOT_CRITICAL_ERROR of PlatformTypes_COMPONENT_REBOOT_REASON
	PlatformTypes_COMPONENT_REBOOT_REASON_REBOOT_CRITICAL_ERROR E_PlatformTypes_COMPONENT_REBOOT_REASON = 1
	// PlatformTypes_COMPONENT_REBOOT_REASON_REBOOT_POWER_FAILURE corresponds to the value REBOOT_POWER_FAILURE of PlatformTypes_COMPONENT_REBOOT_REASON
	PlatformTypes_COMPONENT_REBOOT_REASON_REBOOT_POWER_FAILURE E_PlatformTypes_COMPONENT_REBOOT_REASON = 2
	// PlatformTypes_COMPONENT_REBOOT_REASON_REBOOT_USER_INITIATED corresponds to the value REBOOT_USER_INITIATED of PlatformTypes_COMPONENT_REBOOT_REASON
	PlatformTypes_COMPONENT_REBOOT_REASON_REBOOT_USER_INITIATED E_PlatformTypes_COMPONENT_REBOOT_REASON = 3
)

// E_PlatformTypes_ComponentRedundantRole is a derived int64 type which is used to represent
// the enumerated node PlatformTypes_ComponentRedundantRole. An additional value named
// PlatformTypes_ComponentRedundantRole_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PlatformTypes_ComponentRedundantRole int64

// IsYANGGoEnum ensures that PlatformTypes_ComponentRedundantRole implements the yang.GoEnum
// interface. This ensures that PlatformTypes_ComponentRedundantRole can be identified as a
// mapped type for a YANG enumeration.
func (E_PlatformTypes_ComponentRedundantRole) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PlatformTypes_ComponentRedundantRole.
func (E_PlatformTypes_ComponentRedundantRole) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_PlatformTypes_ComponentRedundantRole.
func (e E_PlatformTypes_ComponentRedundantRole) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PlatformTypes_ComponentRedundantRole")
}

const (
	// PlatformTypes_ComponentRedundantRole_UNSET corresponds to the value UNSET of PlatformTypes_ComponentRedundantRole
	PlatformTypes_ComponentRedundantRole_UNSET E_PlatformTypes_ComponentRedundantRole = 0
	// PlatformTypes_ComponentRedundantRole_PRIMARY corresponds to the value PRIMARY of PlatformTypes_ComponentRedundantRole
	PlatformTypes_ComponentRedundantRole_PRIMARY E_PlatformTypes_ComponentRedundantRole = 1
	// PlatformTypes_ComponentRedundantRole_SECONDARY corresponds to the value SECONDARY of PlatformTypes_ComponentRedundantRole
	PlatformTypes_ComponentRedundantRole_SECONDARY E_PlatformTypes_ComponentRedundantRole = 2
)

// E_PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger is a derived int64 type which is used to represent
// the enumerated node PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger. An additional value named
// PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger int64

// IsYANGGoEnum ensures that PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger implements the yang.GoEnum
// interface. This ensures that PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger can be identified as a
// mapped type for a YANG enumeration.
func (E_PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger.
func (E_PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger.
func (e E_PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger")
}

const (
	// PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger_UNSET corresponds to the value UNSET of PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger
	PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger_UNSET E_PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger = 0
	// PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger_USER_INITIATED corresponds to the value USER_INITIATED of PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger
	PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger_USER_INITIATED E_PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger = 1
	// PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger_SYSTEM_INITIATED corresponds to the value SYSTEM_INITIATED of PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger
	PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger_SYSTEM_INITIATED E_PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger = 2
)

// E_PlatformTypes_FEC_MODE_TYPE is a derived int64 type which is used to represent
// the enumerated node PlatformTypes_FEC_MODE_TYPE. An additional value named
// PlatformTypes_FEC_MODE_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PlatformTypes_FEC_MODE_TYPE int64

// IsYANGGoEnum ensures that PlatformTypes_FEC_MODE_TYPE implements the yang.GoEnum
// interface. This ensures that PlatformTypes_FEC_MODE_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_PlatformTypes_FEC_MODE_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PlatformTypes_FEC_MODE_TYPE.
func (E_PlatformTypes_FEC_MODE_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_PlatformTypes_FEC_MODE_TYPE.
func (e E_PlatformTypes_FEC_MODE_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PlatformTypes_FEC_MODE_TYPE")
}

const (
	// PlatformTypes_FEC_MODE_TYPE_UNSET corresponds to the value UNSET of PlatformTypes_FEC_MODE_TYPE
	PlatformTypes_FEC_MODE_TYPE_UNSET E_PlatformTypes_FEC_MODE_TYPE = 0
	// PlatformTypes_FEC_MODE_TYPE_FEC_AUTO corresponds to the value FEC_AUTO of PlatformTypes_FEC_MODE_TYPE
	PlatformTypes_FEC_MODE_TYPE_FEC_AUTO E_PlatformTypes_FEC_MODE_TYPE = 1
	// PlatformTypes_FEC_MODE_TYPE_FEC_DISABLED corresponds to the value FEC_DISABLED of PlatformTypes_FEC_MODE_TYPE
	PlatformTypes_FEC_MODE_TYPE_FEC_DISABLED E_PlatformTypes_FEC_MODE_TYPE = 2
	// PlatformTypes_FEC_MODE_TYPE_FEC_ENABLED corresponds to the value FEC_ENABLED of PlatformTypes_FEC_MODE_TYPE
	PlatformTypes_FEC_MODE_TYPE_FEC_ENABLED E_PlatformTypes_FEC_MODE_TYPE = 3
)

// E_PlatformTypes_FEC_STATUS_TYPE is a derived int64 type which is used to represent
// the enumerated node PlatformTypes_FEC_STATUS_TYPE. An additional value named
// PlatformTypes_FEC_STATUS_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PlatformTypes_FEC_STATUS_TYPE int64

// IsYANGGoEnum ensures that PlatformTypes_FEC_STATUS_TYPE implements the yang.GoEnum
// interface. This ensures that PlatformTypes_FEC_STATUS_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_PlatformTypes_FEC_STATUS_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PlatformTypes_FEC_STATUS_TYPE.
func (E_PlatformTypes_FEC_STATUS_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_PlatformTypes_FEC_STATUS_TYPE.
func (e E_PlatformTypes_FEC_STATUS_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PlatformTypes_FEC_STATUS_TYPE")
}

const (
	// PlatformTypes_FEC_STATUS_TYPE_UNSET corresponds to the value UNSET of PlatformTypes_FEC_STATUS_TYPE
	PlatformTypes_FEC_STATUS_TYPE_UNSET E_PlatformTypes_FEC_STATUS_TYPE = 0
	// PlatformTypes_FEC_STATUS_TYPE_FEC_STATUS_LOCKED corresponds to the value FEC_STATUS_LOCKED of PlatformTypes_FEC_STATUS_TYPE
	PlatformTypes_FEC_STATUS_TYPE_FEC_STATUS_LOCKED E_PlatformTypes_FEC_STATUS_TYPE = 1
	// PlatformTypes_FEC_STATUS_TYPE_FEC_STATUS_UNLOCKED corresponds to the value FEC_STATUS_UNLOCKED of PlatformTypes_FEC_STATUS_TYPE
	PlatformTypes_FEC_STATUS_TYPE_FEC_STATUS_UNLOCKED E_PlatformTypes_FEC_STATUS_TYPE = 2
)

// E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT is a derived int64 type which is used to represent
// the enumerated node PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT. An additional value named
// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT int64

// IsYANGGoEnum ensures that PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT implements the yang.GoEnum
// interface. This ensures that PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT can be identified as a
// mapped type for a YANG enumeration.
func (E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT.
func (E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT.
func (e E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT")
}

const (
	// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_UNSET corresponds to the value UNSET of PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
	PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_UNSET E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 0
	// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_BACKPLANE corresponds to the value BACKPLANE of PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
	PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_BACKPLANE E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 1
	// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CHASSIS corresponds to the value CHASSIS of PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
	PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CHASSIS E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 2
	// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CONTROLLER_CARD corresponds to the value CONTROLLER_CARD of PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
	PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CONTROLLER_CARD E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 3
	// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CPU corresponds to the value CPU of PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
	PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CPU E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 4
	// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FABRIC corresponds to the value FABRIC of PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
	PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FABRIC E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 5
	// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FAN corresponds to the value FAN of PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
	PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FAN E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 6
	// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FRU corresponds to the value FRU of PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
	PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FRU E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 7
	// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_INTEGRATED_CIRCUIT corresponds to the value INTEGRATED_CIRCUIT of PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
	PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_INTEGRATED_CIRCUIT E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 8
	// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_LINECARD corresponds to the value LINECARD of PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
	PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_LINECARD E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 9
	// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_OPTICAL_CHANNEL corresponds to the value OPTICAL_CHANNEL of PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
	PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_OPTICAL_CHANNEL E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 10
	// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_PORT corresponds to the value PORT of PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
	PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_PORT E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 11
	// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_POWER_SUPPLY corresponds to the value POWER_SUPPLY of PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
	PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_POWER_SUPPLY E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 12
	// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_SENSOR corresponds to the value SENSOR of PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
	PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_SENSOR E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 13
	// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_STORAGE corresponds to the value STORAGE of PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
	PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_STORAGE E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 14
	// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_TRANSCEIVER corresponds to the value TRANSCEIVER of PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
	PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_TRANSCEIVER E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 15
	// PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_WIFI_ACCESS_POINT corresponds to the value WIFI_ACCESS_POINT of PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT
	PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_WIFI_ACCESS_POINT E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 16
)

// E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT is a derived int64 type which is used to represent
// the enumerated node PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT. An additional value named
// PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT int64

// IsYANGGoEnum ensures that PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT implements the yang.GoEnum
// interface. This ensures that PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT can be identified as a
// mapped type for a YANG enumeration.
func (E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT.
func (E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT.
func (e E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT")
}

const (
	// PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_UNSET corresponds to the value UNSET of PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT
	PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_UNSET E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT = 0
	// PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_BIOS corresponds to the value BIOS of PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT
	PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_BIOS E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT = 1
	// PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_BOOT_LOADER corresponds to the value BOOT_LOADER of PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT
	PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_BOOT_LOADER E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT = 2
	// PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_OPERATING_SYSTEM corresponds to the value OPERATING_SYSTEM of PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT
	PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_OPERATING_SYSTEM E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT = 3
	// PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_OPERATING_SYSTEM_UPDATE corresponds to the value OPERATING_SYSTEM_UPDATE of PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT
	PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_OPERATING_SYSTEM_UPDATE E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT = 4
	// PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_SOFTWARE_MODULE corresponds to the value SOFTWARE_MODULE of PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT
	PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_SOFTWARE_MODULE E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT = 5
)

// E_PolicyTypes_ATTRIBUTE_COMPARISON is a derived int64 type which is used to represent
// the enumerated node PolicyTypes_ATTRIBUTE_COMPARISON. An additional value named
// PolicyTypes_ATTRIBUTE_COMPARISON_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PolicyTypes_ATTRIBUTE_COMPARISON int64

// IsYANGGoEnum ensures that PolicyTypes_ATTRIBUTE_COMPARISON implements the yang.GoEnum
// interface. This ensures that PolicyTypes_ATTRIBUTE_COMPARISON can be identified as a
// mapped type for a YANG enumeration.
func (E_PolicyTypes_ATTRIBUTE_COMPARISON) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PolicyTypes_ATTRIBUTE_COMPARISON.
func (E_PolicyTypes_ATTRIBUTE_COMPARISON) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_PolicyTypes_ATTRIBUTE_COMPARISON.
func (e E_PolicyTypes_ATTRIBUTE_COMPARISON) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PolicyTypes_ATTRIBUTE_COMPARISON")
}

const (
	// PolicyTypes_ATTRIBUTE_COMPARISON_UNSET corresponds to the value UNSET of PolicyTypes_ATTRIBUTE_COMPARISON
	PolicyTypes_ATTRIBUTE_COMPARISON_UNSET E_PolicyTypes_ATTRIBUTE_COMPARISON = 0
	// PolicyTypes_ATTRIBUTE_COMPARISON_ATTRIBUTE_EQ corresponds to the value ATTRIBUTE_EQ of PolicyTypes_ATTRIBUTE_COMPARISON
	PolicyTypes_ATTRIBUTE_COMPARISON_ATTRIBUTE_EQ E_PolicyTypes_ATTRIBUTE_COMPARISON = 1
	// PolicyTypes_ATTRIBUTE_COMPARISON_ATTRIBUTE_GE corresponds to the value ATTRIBUTE_GE of PolicyTypes_ATTRIBUTE_COMPARISON
	PolicyTypes_ATTRIBUTE_COMPARISON_ATTRIBUTE_GE E_PolicyTypes_ATTRIBUTE_COMPARISON = 2
	// PolicyTypes_ATTRIBUTE_COMPARISON_ATTRIBUTE_LE corresponds to the value ATTRIBUTE_LE of PolicyTypes_ATTRIBUTE_COMPARISON
	PolicyTypes_ATTRIBUTE_COMPARISON_ATTRIBUTE_LE E_PolicyTypes_ATTRIBUTE_COMPARISON = 3
)

// E_PolicyTypes_INSTALL_PROTOCOL_TYPE is a derived int64 type which is used to represent
// the enumerated node PolicyTypes_INSTALL_PROTOCOL_TYPE. An additional value named
// PolicyTypes_INSTALL_PROTOCOL_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PolicyTypes_INSTALL_PROTOCOL_TYPE int64

// IsYANGGoEnum ensures that PolicyTypes_INSTALL_PROTOCOL_TYPE implements the yang.GoEnum
// interface. This ensures that PolicyTypes_INSTALL_PROTOCOL_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_PolicyTypes_INSTALL_PROTOCOL_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PolicyTypes_INSTALL_PROTOCOL_TYPE.
func (E_PolicyTypes_INSTALL_PROTOCOL_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_PolicyTypes_INSTALL_PROTOCOL_TYPE.
func (e E_PolicyTypes_INSTALL_PROTOCOL_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PolicyTypes_INSTALL_PROTOCOL_TYPE")
}

const (
	// PolicyTypes_INSTALL_PROTOCOL_TYPE_UNSET corresponds to the value UNSET of PolicyTypes_INSTALL_PROTOCOL_TYPE
	PolicyTypes_INSTALL_PROTOCOL_TYPE_UNSET E_PolicyTypes_INSTALL_PROTOCOL_TYPE = 0
	// PolicyTypes_INSTALL_PROTOCOL_TYPE_BGP corresponds to the value BGP of PolicyTypes_INSTALL_PROTOCOL_TYPE
	PolicyTypes_INSTALL_PROTOCOL_TYPE_BGP E_PolicyTypes_INSTALL_PROTOCOL_TYPE = 1
	// PolicyTypes_INSTALL_PROTOCOL_TYPE_DIRECTLY_CONNECTED corresponds to the value DIRECTLY_CONNECTED of PolicyTypes_INSTALL_PROTOCOL_TYPE
	PolicyTypes_INSTALL_PROTOCOL_TYPE_DIRECTLY_CONNECTED E_PolicyTypes_INSTALL_PROTOCOL_TYPE = 2
	// PolicyTypes_INSTALL_PROTOCOL_TYPE_GRIBI corresponds to the value GRIBI of PolicyTypes_INSTALL_PROTOCOL_TYPE
	PolicyTypes_INSTALL_PROTOCOL_TYPE_GRIBI E_PolicyTypes_INSTALL_PROTOCOL_TYPE = 3
	// PolicyTypes_INSTALL_PROTOCOL_TYPE_IGMP corresponds to the value IGMP of PolicyTypes_INSTALL_PROTOCOL_TYPE
	PolicyTypes_INSTALL_PROTOCOL_TYPE_IGMP E_PolicyTypes_INSTALL_PROTOCOL_TYPE = 4
	// PolicyTypes_INSTALL_PROTOCOL_TYPE_ISIS corresponds to the value ISIS of PolicyTypes_INSTALL_PROTOCOL_TYPE
	PolicyTypes_INSTALL_PROTOCOL_TYPE_ISIS E_PolicyTypes_INSTALL_PROTOCOL_TYPE = 5
	// PolicyTypes_INSTALL_PROTOCOL_TYPE_LOCAL corresponds to the value LOCAL of PolicyTypes_INSTALL_PROTOCOL_TYPE
	PolicyTypes_INSTALL_PROTOCOL_TYPE_LOCAL E_PolicyTypes_INSTALL_PROTOCOL_TYPE = 6
	// PolicyTypes_INSTALL_PROTOCOL_TYPE_LOCAL_AGGREGATE corresponds to the value LOCAL_AGGREGATE of PolicyTypes_INSTALL_PROTOCOL_TYPE
	PolicyTypes_INSTALL_PROTOCOL_TYPE_LOCAL_AGGREGATE E_PolicyTypes_INSTALL_PROTOCOL_TYPE = 7
	// PolicyTypes_INSTALL_PROTOCOL_TYPE_OSPF corresponds to the value OSPF of PolicyTypes_INSTALL_PROTOCOL_TYPE
	PolicyTypes_INSTALL_PROTOCOL_TYPE_OSPF E_PolicyTypes_INSTALL_PROTOCOL_TYPE = 8
	// PolicyTypes_INSTALL_PROTOCOL_TYPE_OSPF3 corresponds to the value OSPF3 of PolicyTypes_INSTALL_PROTOCOL_TYPE
	PolicyTypes_INSTALL_PROTOCOL_TYPE_OSPF3 E_PolicyTypes_INSTALL_PROTOCOL_TYPE = 9
	// PolicyTypes_INSTALL_PROTOCOL_TYPE_PCEP corresponds to the value PCEP of PolicyTypes_INSTALL_PROTOCOL_TYPE
	PolicyTypes_INSTALL_PROTOCOL_TYPE_PCEP E_PolicyTypes_INSTALL_PROTOCOL_TYPE = 10
	// PolicyTypes_INSTALL_PROTOCOL_TYPE_PIM corresponds to the value PIM of PolicyTypes_INSTALL_PROTOCOL_TYPE
	PolicyTypes_INSTALL_PROTOCOL_TYPE_PIM E_PolicyTypes_INSTALL_PROTOCOL_TYPE = 11
	// PolicyTypes_INSTALL_PROTOCOL_TYPE_STATIC corresponds to the value STATIC of PolicyTypes_INSTALL_PROTOCOL_TYPE
	PolicyTypes_INSTALL_PROTOCOL_TYPE_STATIC E_PolicyTypes_INSTALL_PROTOCOL_TYPE = 12
)

// E_PolicyTypes_MatchSetOptionsRestrictedType is a derived int64 type which is used to represent
// the enumerated node PolicyTypes_MatchSetOptionsRestrictedType. An additional value named
// PolicyTypes_MatchSetOptionsRestrictedType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PolicyTypes_MatchSetOptionsRestrictedType int64

// IsYANGGoEnum ensures that PolicyTypes_MatchSetOptionsRestrictedType implements the yang.GoEnum
// interface. This ensures that PolicyTypes_MatchSetOptionsRestrictedType can be identified as a
// mapped type for a YANG enumeration.
func (E_PolicyTypes_MatchSetOptionsRestrictedType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PolicyTypes_MatchSetOptionsRestrictedType.
func (E_PolicyTypes_MatchSetOptionsRestrictedType) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_PolicyTypes_MatchSetOptionsRestrictedType.
func (e E_PolicyTypes_MatchSetOptionsRestrictedType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PolicyTypes_MatchSetOptionsRestrictedType")
}

const (
	// PolicyTypes_MatchSetOptionsRestrictedType_UNSET corresponds to the value UNSET of PolicyTypes_MatchSetOptionsRestrictedType
	PolicyTypes_MatchSetOptionsRestrictedType_UNSET E_PolicyTypes_MatchSetOptionsRestrictedType = 0
	// PolicyTypes_MatchSetOptionsRestrictedType_ANY corresponds to the value ANY of PolicyTypes_MatchSetOptionsRestrictedType
	PolicyTypes_MatchSetOptionsRestrictedType_ANY E_PolicyTypes_MatchSetOptionsRestrictedType = 1
	// PolicyTypes_MatchSetOptionsRestrictedType_INVERT corresponds to the value INVERT of PolicyTypes_MatchSetOptionsRestrictedType
	PolicyTypes_MatchSetOptionsRestrictedType_INVERT E_PolicyTypes_MatchSetOptionsRestrictedType = 2
)

// E_PolicyTypes_MatchSetOptionsType is a derived int64 type which is used to represent
// the enumerated node PolicyTypes_MatchSetOptionsType. An additional value named
// PolicyTypes_MatchSetOptionsType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PolicyTypes_MatchSetOptionsType int64

// IsYANGGoEnum ensures that PolicyTypes_MatchSetOptionsType implements the yang.GoEnum
// interface. This ensures that PolicyTypes_MatchSetOptionsType can be identified as a
// mapped type for a YANG enumeration.
func (E_PolicyTypes_MatchSetOptionsType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PolicyTypes_MatchSetOptionsType.
func (E_PolicyTypes_MatchSetOptionsType) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_PolicyTypes_MatchSetOptionsType.
func (e E_PolicyTypes_MatchSetOptionsType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PolicyTypes_MatchSetOptionsType")
}

const (
	// PolicyTypes_MatchSetOptionsType_UNSET corresponds to the value UNSET of PolicyTypes_MatchSetOptionsType
	PolicyTypes_MatchSetOptionsType_UNSET E_PolicyTypes_MatchSetOptionsType = 0
	// PolicyTypes_MatchSetOptionsType_ANY corresponds to the value ANY of PolicyTypes_MatchSetOptionsType
	PolicyTypes_MatchSetOptionsType_ANY E_PolicyTypes_MatchSetOptionsType = 1
	// PolicyTypes_MatchSetOptionsType_ALL corresponds to the value ALL of PolicyTypes_MatchSetOptionsType
	PolicyTypes_MatchSetOptionsType_ALL E_PolicyTypes_MatchSetOptionsType = 2
	// PolicyTypes_MatchSetOptionsType_INVERT corresponds to the value INVERT of PolicyTypes_MatchSetOptionsType
	PolicyTypes_MatchSetOptionsType_INVERT E_PolicyTypes_MatchSetOptionsType = 3
)

// E_Policy_Type is a derived int64 type which is used to represent
// the enumerated node Policy_Type. An additional value named
// Policy_Type_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Policy_Type int64

// IsYANGGoEnum ensures that Policy_Type implements the yang.GoEnum
// interface. This ensures that Policy_Type can be identified as a
// mapped type for a YANG enumeration.
func (E_Policy_Type) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Policy_Type.
func (E_Policy_Type) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Policy_Type.
func (e E_Policy_Type) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Policy_Type")
}

const (
	// Policy_Type_UNSET corresponds to the value UNSET of Policy_Type
	Policy_Type_UNSET E_Policy_Type = 0
	// Policy_Type_PBR_POLICY corresponds to the value PBR_POLICY of Policy_Type
	Policy_Type_PBR_POLICY E_Policy_Type = 1
	// Policy_Type_VRF_SELECTION_POLICY corresponds to the value VRF_SELECTION_POLICY of Policy_Type
	Policy_Type_VRF_SELECTION_POLICY E_Policy_Type = 2
)

// E_PrefixSet_Mode is a derived int64 type which is used to represent
// the enumerated node PrefixSet_Mode. An additional value named
// PrefixSet_Mode_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PrefixSet_Mode int64

// IsYANGGoEnum ensures that PrefixSet_Mode implements the yang.GoEnum
// interface. This ensures that PrefixSet_Mode can be identified as a
// mapped type for a YANG enumeration.
func (E_PrefixSet_Mode) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PrefixSet_Mode.
func (E_PrefixSet_Mode) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_PrefixSet_Mode.
func (e E_PrefixSet_Mode) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PrefixSet_Mode")
}

const (
	// PrefixSet_Mode_UNSET corresponds to the value UNSET of PrefixSet_Mode
	PrefixSet_Mode_UNSET E_PrefixSet_Mode = 0
	// PrefixSet_Mode_IPV4 corresponds to the value IPV4 of PrefixSet_Mode
	PrefixSet_Mode_IPV4 E_PrefixSet_Mode = 1
	// PrefixSet_Mode_IPV6 corresponds to the value IPV6 of PrefixSet_Mode
	PrefixSet_Mode_IPV6 E_PrefixSet_Mode = 2
	// PrefixSet_Mode_MIXED corresponds to the value MIXED of PrefixSet_Mode
	PrefixSet_Mode_MIXED E_PrefixSet_Mode = 3
)

// E_PrefixSid_Flags is a derived int64 type which is used to represent
// the enumerated node PrefixSid_Flags. An additional value named
// PrefixSid_Flags_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PrefixSid_Flags int64

// IsYANGGoEnum ensures that PrefixSid_Flags implements the yang.GoEnum
// interface. This ensures that PrefixSid_Flags can be identified as a
// mapped type for a YANG enumeration.
func (E_PrefixSid_Flags) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PrefixSid_Flags.
func (E_PrefixSid_Flags) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_PrefixSid_Flags.
func (e E_PrefixSid_Flags) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PrefixSid_Flags")
}

const (
	// PrefixSid_Flags_UNSET corresponds to the value UNSET of PrefixSid_Flags
	PrefixSid_Flags_UNSET E_PrefixSid_Flags = 0
	// PrefixSid_Flags_READVERTISEMENT corresponds to the value READVERTISEMENT of PrefixSid_Flags
	PrefixSid_Flags_READVERTISEMENT E_PrefixSid_Flags = 1
	// PrefixSid_Flags_NODE corresponds to the value NODE of PrefixSid_Flags
	PrefixSid_Flags_NODE E_PrefixSid_Flags = 2
	// PrefixSid_Flags_NO_PHP corresponds to the value NO_PHP of PrefixSid_Flags
	PrefixSid_Flags_NO_PHP E_PrefixSid_Flags = 3
	// PrefixSid_Flags_EXPLICIT_NULL corresponds to the value EXPLICIT_NULL of PrefixSid_Flags
	PrefixSid_Flags_EXPLICIT_NULL E_PrefixSid_Flags = 4
	// PrefixSid_Flags_VALUE corresponds to the value VALUE of PrefixSid_Flags
	PrefixSid_Flags_VALUE E_PrefixSid_Flags = 5
	// PrefixSid_Flags_LOCAL corresponds to the value LOCAL of PrefixSid_Flags
	PrefixSid_Flags_LOCAL E_PrefixSid_Flags = 6
)

// E_PrefixSid_LabelOptions is a derived int64 type which is used to represent
// the enumerated node PrefixSid_LabelOptions. An additional value named
// PrefixSid_LabelOptions_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PrefixSid_LabelOptions int64

// IsYANGGoEnum ensures that PrefixSid_LabelOptions implements the yang.GoEnum
// interface. This ensures that PrefixSid_LabelOptions can be identified as a
// mapped type for a YANG enumeration.
func (E_PrefixSid_LabelOptions) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PrefixSid_LabelOptions.
func (E_PrefixSid_LabelOptions) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_PrefixSid_LabelOptions.
func (e E_PrefixSid_LabelOptions) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PrefixSid_LabelOptions")
}

const (
	// PrefixSid_LabelOptions_UNSET corresponds to the value UNSET of PrefixSid_LabelOptions
	PrefixSid_LabelOptions_UNSET E_PrefixSid_LabelOptions = 0
	// PrefixSid_LabelOptions_NO_PHP corresponds to the value NO_PHP of PrefixSid_LabelOptions
	PrefixSid_LabelOptions_NO_PHP E_PrefixSid_LabelOptions = 1
	// PrefixSid_LabelOptions_EXPLICIT_NULL corresponds to the value EXPLICIT_NULL of PrefixSid_LabelOptions
	PrefixSid_LabelOptions_EXPLICIT_NULL E_PrefixSid_LabelOptions = 2
)

// E_PrefixSid_SidScope is a derived int64 type which is used to represent
// the enumerated node PrefixSid_SidScope. An additional value named
// PrefixSid_SidScope_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PrefixSid_SidScope int64

// IsYANGGoEnum ensures that PrefixSid_SidScope implements the yang.GoEnum
// interface. This ensures that PrefixSid_SidScope can be identified as a
// mapped type for a YANG enumeration.
func (E_PrefixSid_SidScope) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PrefixSid_SidScope.
func (E_PrefixSid_SidScope) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_PrefixSid_SidScope.
func (e E_PrefixSid_SidScope) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PrefixSid_SidScope")
}

const (
	// PrefixSid_SidScope_UNSET corresponds to the value UNSET of PrefixSid_SidScope
	PrefixSid_SidScope_UNSET E_PrefixSid_SidScope = 0
	// PrefixSid_SidScope_LOCAL corresponds to the value LOCAL of PrefixSid_SidScope
	PrefixSid_SidScope_LOCAL E_PrefixSid_SidScope = 1
	// PrefixSid_SidScope_GLOBAL corresponds to the value GLOBAL of PrefixSid_SidScope
	PrefixSid_SidScope_GLOBAL E_PrefixSid_SidScope = 2
)

// E_PrefixSid_SidValueType is a derived int64 type which is used to represent
// the enumerated node PrefixSid_SidValueType. An additional value named
// PrefixSid_SidValueType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_PrefixSid_SidValueType int64

// IsYANGGoEnum ensures that PrefixSid_SidValueType implements the yang.GoEnum
// interface. This ensures that PrefixSid_SidValueType can be identified as a
// mapped type for a YANG enumeration.
func (E_PrefixSid_SidValueType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  PrefixSid_SidValueType.
func (E_PrefixSid_SidValueType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_PrefixSid_SidValueType.
func (e E_PrefixSid_SidValueType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_PrefixSid_SidValueType")
}

const (
	// PrefixSid_SidValueType_UNSET corresponds to the value UNSET of PrefixSid_SidValueType
	PrefixSid_SidValueType_UNSET E_PrefixSid_SidValueType = 0
	// PrefixSid_SidValueType_ABSOLUTE corresponds to the value ABSOLUTE of PrefixSid_SidValueType
	PrefixSid_SidValueType_ABSOLUTE E_PrefixSid_SidValueType = 1
	// PrefixSid_SidValueType_INDEX corresponds to the value INDEX of PrefixSid_SidValueType
	PrefixSid_SidValueType_INDEX E_PrefixSid_SidValueType = 2
)

// E_Producer_MobilityState is a derived int64 type which is used to represent
// the enumerated node Producer_MobilityState. An additional value named
// Producer_MobilityState_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Producer_MobilityState int64

// IsYANGGoEnum ensures that Producer_MobilityState implements the yang.GoEnum
// interface. This ensures that Producer_MobilityState can be identified as a
// mapped type for a YANG enumeration.
func (E_Producer_MobilityState) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Producer_MobilityState.
func (E_Producer_MobilityState) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Producer_MobilityState.
func (e E_Producer_MobilityState) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Producer_MobilityState")
}

const (
	// Producer_MobilityState_UNSET corresponds to the value UNSET of Producer_MobilityState
	Producer_MobilityState_UNSET E_Producer_MobilityState = 0
	// Producer_MobilityState_FROZEN corresponds to the value FROZEN of Producer_MobilityState
	Producer_MobilityState_FROZEN E_Producer_MobilityState = 1
	// Producer_MobilityState_DUPLICATE corresponds to the value DUPLICATE of Producer_MobilityState
	Producer_MobilityState_DUPLICATE E_Producer_MobilityState = 2
)

// E_Producer_Producer is a derived int64 type which is used to represent
// the enumerated node Producer_Producer. An additional value named
// Producer_Producer_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Producer_Producer int64

// IsYANGGoEnum ensures that Producer_Producer implements the yang.GoEnum
// interface. This ensures that Producer_Producer can be identified as a
// mapped type for a YANG enumeration.
func (E_Producer_Producer) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Producer_Producer.
func (E_Producer_Producer) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Producer_Producer.
func (e E_Producer_Producer) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Producer_Producer")
}

const (
	// Producer_Producer_UNSET corresponds to the value UNSET of Producer_Producer
	Producer_Producer_UNSET E_Producer_Producer = 0
	// Producer_Producer_LOCAL corresponds to the value LOCAL of Producer_Producer
	Producer_Producer_LOCAL E_Producer_Producer = 1
	// Producer_Producer_STATIC corresponds to the value STATIC of Producer_Producer
	Producer_Producer_STATIC E_Producer_Producer = 2
	// Producer_Producer_BGP corresponds to the value BGP of Producer_Producer
	Producer_Producer_BGP E_Producer_Producer = 3
)

// E_ProxyArp_Mode is a derived int64 type which is used to represent
// the enumerated node ProxyArp_Mode. An additional value named
// ProxyArp_Mode_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_ProxyArp_Mode int64

// IsYANGGoEnum ensures that ProxyArp_Mode implements the yang.GoEnum
// interface. This ensures that ProxyArp_Mode can be identified as a
// mapped type for a YANG enumeration.
func (E_ProxyArp_Mode) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  ProxyArp_Mode.
func (E_ProxyArp_Mode) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_ProxyArp_Mode.
func (e E_ProxyArp_Mode) String() string {
	return ygot.EnumLogString(e, int64(e), "E_ProxyArp_Mode")
}

const (
	// ProxyArp_Mode_UNSET corresponds to the value UNSET of ProxyArp_Mode
	ProxyArp_Mode_UNSET E_ProxyArp_Mode = 0
	// ProxyArp_Mode_DISABLE corresponds to the value DISABLE of ProxyArp_Mode
	ProxyArp_Mode_DISABLE E_ProxyArp_Mode = 1
	// ProxyArp_Mode_REMOTE_ONLY corresponds to the value REMOTE_ONLY of ProxyArp_Mode
	ProxyArp_Mode_REMOTE_ONLY E_ProxyArp_Mode = 2
	// ProxyArp_Mode_ALL corresponds to the value ALL of ProxyArp_Mode
	ProxyArp_Mode_ALL E_ProxyArp_Mode = 3
)

// E_RibBgpTypes_INVALID_ROUTE_REASON is a derived int64 type which is used to represent
// the enumerated node RibBgpTypes_INVALID_ROUTE_REASON. An additional value named
// RibBgpTypes_INVALID_ROUTE_REASON_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_RibBgpTypes_INVALID_ROUTE_REASON int64

// IsYANGGoEnum ensures that RibBgpTypes_INVALID_ROUTE_REASON implements the yang.GoEnum
// interface. This ensures that RibBgpTypes_INVALID_ROUTE_REASON can be identified as a
// mapped type for a YANG enumeration.
func (E_RibBgpTypes_INVALID_ROUTE_REASON) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  RibBgpTypes_INVALID_ROUTE_REASON.
func (E_RibBgpTypes_INVALID_ROUTE_REASON) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_RibBgpTypes_INVALID_ROUTE_REASON.
func (e E_RibBgpTypes_INVALID_ROUTE_REASON) String() string {
	return ygot.EnumLogString(e, int64(e), "E_RibBgpTypes_INVALID_ROUTE_REASON")
}

const (
	// RibBgpTypes_INVALID_ROUTE_REASON_UNSET corresponds to the value UNSET of RibBgpTypes_INVALID_ROUTE_REASON
	RibBgpTypes_INVALID_ROUTE_REASON_UNSET E_RibBgpTypes_INVALID_ROUTE_REASON = 0
	// RibBgpTypes_INVALID_ROUTE_REASON_INVALID_AS_LOOP corresponds to the value INVALID_AS_LOOP of RibBgpTypes_INVALID_ROUTE_REASON
	RibBgpTypes_INVALID_ROUTE_REASON_INVALID_AS_LOOP E_RibBgpTypes_INVALID_ROUTE_REASON = 1
	// RibBgpTypes_INVALID_ROUTE_REASON_INVALID_CLUSTER_LOOP corresponds to the value INVALID_CLUSTER_LOOP of RibBgpTypes_INVALID_ROUTE_REASON
	RibBgpTypes_INVALID_ROUTE_REASON_INVALID_CLUSTER_LOOP E_RibBgpTypes_INVALID_ROUTE_REASON = 2
	// RibBgpTypes_INVALID_ROUTE_REASON_INVALID_CONFED corresponds to the value INVALID_CONFED of RibBgpTypes_INVALID_ROUTE_REASON
	RibBgpTypes_INVALID_ROUTE_REASON_INVALID_CONFED E_RibBgpTypes_INVALID_ROUTE_REASON = 3
	// RibBgpTypes_INVALID_ROUTE_REASON_INVALID_ORIGINATOR corresponds to the value INVALID_ORIGINATOR of RibBgpTypes_INVALID_ROUTE_REASON
	RibBgpTypes_INVALID_ROUTE_REASON_INVALID_ORIGINATOR E_RibBgpTypes_INVALID_ROUTE_REASON = 4
)

// E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE is a derived int64 type which is used to represent
// the enumerated node RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE. An additional value named
// RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE int64

// IsYANGGoEnum ensures that RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE implements the yang.GoEnum
// interface. This ensures that RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE.
func (E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE.
func (e E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE")
}

const (
	// RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE_UNSET corresponds to the value UNSET of RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE
	RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE_UNSET E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE = 0
	// RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE_SRTE_BINDING_SID corresponds to the value SRTE_BINDING_SID of RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE
	RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE_SRTE_BINDING_SID E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE = 1
	// RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE_SRTE_PREFERENCE corresponds to the value SRTE_PREFERENCE of RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE
	RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE_SRTE_PREFERENCE E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE = 2
	// RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE_SRTE_SEGMENT_LIST corresponds to the value SRTE_SEGMENT_LIST of RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE
	RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE_SRTE_SEGMENT_LIST E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE = 3
	// RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE_TUNNEL_COLOR corresponds to the value TUNNEL_COLOR of RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE
	RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE_TUNNEL_COLOR E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE = 4
	// RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE_TUNNEL_REMOTE_ENDPOINT corresponds to the value TUNNEL_REMOTE_ENDPOINT of RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE
	RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE_TUNNEL_REMOTE_ENDPOINT E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE = 5
)

// E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE is a derived int64 type which is used to represent
// the enumerated node RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE. An additional value named
// RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE int64

// IsYANGGoEnum ensures that RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE implements the yang.GoEnum
// interface. This ensures that RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE.
func (E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE.
func (e E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE")
}

const (
	// RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE_UNSET corresponds to the value UNSET of RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE
	RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE_UNSET E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE = 0
	// RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE_SRTE_POLICY_TUNNEL corresponds to the value SRTE_POLICY_TUNNEL of RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE
	RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE_SRTE_POLICY_TUNNEL E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE = 1
)

// E_RouterAdvertisement_Mode is a derived int64 type which is used to represent
// the enumerated node RouterAdvertisement_Mode. An additional value named
// RouterAdvertisement_Mode_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_RouterAdvertisement_Mode int64

// IsYANGGoEnum ensures that RouterAdvertisement_Mode implements the yang.GoEnum
// interface. This ensures that RouterAdvertisement_Mode can be identified as a
// mapped type for a YANG enumeration.
func (E_RouterAdvertisement_Mode) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  RouterAdvertisement_Mode.
func (E_RouterAdvertisement_Mode) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_RouterAdvertisement_Mode.
func (e E_RouterAdvertisement_Mode) String() string {
	return ygot.EnumLogString(e, int64(e), "E_RouterAdvertisement_Mode")
}

const (
	// RouterAdvertisement_Mode_UNSET corresponds to the value UNSET of RouterAdvertisement_Mode
	RouterAdvertisement_Mode_UNSET E_RouterAdvertisement_Mode = 0
	// RouterAdvertisement_Mode_ALL corresponds to the value ALL of RouterAdvertisement_Mode
	RouterAdvertisement_Mode_ALL E_RouterAdvertisement_Mode = 1
	// RouterAdvertisement_Mode_DISABLE_UNSOLICITED_RA corresponds to the value DISABLE_UNSOLICITED_RA of RouterAdvertisement_Mode
	RouterAdvertisement_Mode_DISABLE_UNSOLICITED_RA E_RouterAdvertisement_Mode = 2
)

// E_RouterInformation_Tlv_Type_Enum is a derived int64 type which is used to represent
// the enumerated node RouterInformation_Tlv_Type_Enum. An additional value named
// RouterInformation_Tlv_Type_Enum_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_RouterInformation_Tlv_Type_Enum int64

// IsYANGGoEnum ensures that RouterInformation_Tlv_Type_Enum implements the yang.GoEnum
// interface. This ensures that RouterInformation_Tlv_Type_Enum can be identified as a
// mapped type for a YANG enumeration.
func (E_RouterInformation_Tlv_Type_Enum) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  RouterInformation_Tlv_Type_Enum.
func (E_RouterInformation_Tlv_Type_Enum) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_RouterInformation_Tlv_Type_Enum.
func (e E_RouterInformation_Tlv_Type_Enum) String() string {
	return ygot.EnumLogString(e, int64(e), "E_RouterInformation_Tlv_Type_Enum")
}

const (
	// RouterInformation_Tlv_Type_Enum_UNSET corresponds to the value UNSET of RouterInformation_Tlv_Type_Enum
	RouterInformation_Tlv_Type_Enum_UNSET E_RouterInformation_Tlv_Type_Enum = 0
	// RouterInformation_Tlv_Type_Enum_UNKNOWN corresponds to the value UNKNOWN of RouterInformation_Tlv_Type_Enum
	RouterInformation_Tlv_Type_Enum_UNKNOWN E_RouterInformation_Tlv_Type_Enum = 1
)

// E_RoutingPolicy_DefaultPolicyType is a derived int64 type which is used to represent
// the enumerated node RoutingPolicy_DefaultPolicyType. An additional value named
// RoutingPolicy_DefaultPolicyType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_RoutingPolicy_DefaultPolicyType int64

// IsYANGGoEnum ensures that RoutingPolicy_DefaultPolicyType implements the yang.GoEnum
// interface. This ensures that RoutingPolicy_DefaultPolicyType can be identified as a
// mapped type for a YANG enumeration.
func (E_RoutingPolicy_DefaultPolicyType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  RoutingPolicy_DefaultPolicyType.
func (E_RoutingPolicy_DefaultPolicyType) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_RoutingPolicy_DefaultPolicyType.
func (e E_RoutingPolicy_DefaultPolicyType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_RoutingPolicy_DefaultPolicyType")
}

const (
	// RoutingPolicy_DefaultPolicyType_UNSET corresponds to the value UNSET of RoutingPolicy_DefaultPolicyType
	RoutingPolicy_DefaultPolicyType_UNSET E_RoutingPolicy_DefaultPolicyType = 0
	// RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE corresponds to the value ACCEPT_ROUTE of RoutingPolicy_DefaultPolicyType
	RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE E_RoutingPolicy_DefaultPolicyType = 1
	// RoutingPolicy_DefaultPolicyType_REJECT_ROUTE corresponds to the value REJECT_ROUTE of RoutingPolicy_DefaultPolicyType
	RoutingPolicy_DefaultPolicyType_REJECT_ROUTE E_RoutingPolicy_DefaultPolicyType = 2
)

// E_RoutingPolicy_PolicyResultType is a derived int64 type which is used to represent
// the enumerated node RoutingPolicy_PolicyResultType. An additional value named
// RoutingPolicy_PolicyResultType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_RoutingPolicy_PolicyResultType int64

// IsYANGGoEnum ensures that RoutingPolicy_PolicyResultType implements the yang.GoEnum
// interface. This ensures that RoutingPolicy_PolicyResultType can be identified as a
// mapped type for a YANG enumeration.
func (E_RoutingPolicy_PolicyResultType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  RoutingPolicy_PolicyResultType.
func (E_RoutingPolicy_PolicyResultType) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_RoutingPolicy_PolicyResultType.
func (e E_RoutingPolicy_PolicyResultType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_RoutingPolicy_PolicyResultType")
}

const (
	// RoutingPolicy_PolicyResultType_UNSET corresponds to the value UNSET of RoutingPolicy_PolicyResultType
	RoutingPolicy_PolicyResultType_UNSET E_RoutingPolicy_PolicyResultType = 0
	// RoutingPolicy_PolicyResultType_ACCEPT_ROUTE corresponds to the value ACCEPT_ROUTE of RoutingPolicy_PolicyResultType
	RoutingPolicy_PolicyResultType_ACCEPT_ROUTE E_RoutingPolicy_PolicyResultType = 1
	// RoutingPolicy_PolicyResultType_REJECT_ROUTE corresponds to the value REJECT_ROUTE of RoutingPolicy_PolicyResultType
	RoutingPolicy_PolicyResultType_REJECT_ROUTE E_RoutingPolicy_PolicyResultType = 2
	// RoutingPolicy_PolicyResultType_NEXT_STATEMENT corresponds to the value NEXT_STATEMENT of RoutingPolicy_PolicyResultType
	RoutingPolicy_PolicyResultType_NEXT_STATEMENT E_RoutingPolicy_PolicyResultType = 3
)

// E_SegmentRoutingAlgorithms_Algorithm is a derived int64 type which is used to represent
// the enumerated node SegmentRoutingAlgorithms_Algorithm. An additional value named
// SegmentRoutingAlgorithms_Algorithm_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SegmentRoutingAlgorithms_Algorithm int64

// IsYANGGoEnum ensures that SegmentRoutingAlgorithms_Algorithm implements the yang.GoEnum
// interface. This ensures that SegmentRoutingAlgorithms_Algorithm can be identified as a
// mapped type for a YANG enumeration.
func (E_SegmentRoutingAlgorithms_Algorithm) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SegmentRoutingAlgorithms_Algorithm.
func (E_SegmentRoutingAlgorithms_Algorithm) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_SegmentRoutingAlgorithms_Algorithm.
func (e E_SegmentRoutingAlgorithms_Algorithm) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SegmentRoutingAlgorithms_Algorithm")
}

const (
	// SegmentRoutingAlgorithms_Algorithm_UNSET corresponds to the value UNSET of SegmentRoutingAlgorithms_Algorithm
	SegmentRoutingAlgorithms_Algorithm_UNSET E_SegmentRoutingAlgorithms_Algorithm = 0
	// SegmentRoutingAlgorithms_Algorithm_SPF corresponds to the value SPF of SegmentRoutingAlgorithms_Algorithm
	SegmentRoutingAlgorithms_Algorithm_SPF E_SegmentRoutingAlgorithms_Algorithm = 1
	// SegmentRoutingAlgorithms_Algorithm_STRICT_SPF corresponds to the value STRICT_SPF of SegmentRoutingAlgorithms_Algorithm
	SegmentRoutingAlgorithms_Algorithm_STRICT_SPF E_SegmentRoutingAlgorithms_Algorithm = 2
)

// E_SegmentRoutingCapability_Flags is a derived int64 type which is used to represent
// the enumerated node SegmentRoutingCapability_Flags. An additional value named
// SegmentRoutingCapability_Flags_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SegmentRoutingCapability_Flags int64

// IsYANGGoEnum ensures that SegmentRoutingCapability_Flags implements the yang.GoEnum
// interface. This ensures that SegmentRoutingCapability_Flags can be identified as a
// mapped type for a YANG enumeration.
func (E_SegmentRoutingCapability_Flags) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SegmentRoutingCapability_Flags.
func (E_SegmentRoutingCapability_Flags) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_SegmentRoutingCapability_Flags.
func (e E_SegmentRoutingCapability_Flags) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SegmentRoutingCapability_Flags")
}

const (
	// SegmentRoutingCapability_Flags_UNSET corresponds to the value UNSET of SegmentRoutingCapability_Flags
	SegmentRoutingCapability_Flags_UNSET E_SegmentRoutingCapability_Flags = 0
	// SegmentRoutingCapability_Flags_IPV4_MPLS corresponds to the value IPV4_MPLS of SegmentRoutingCapability_Flags
	SegmentRoutingCapability_Flags_IPV4_MPLS E_SegmentRoutingCapability_Flags = 1
	// SegmentRoutingCapability_Flags_IPV6_MPLS corresponds to the value IPV6_MPLS of SegmentRoutingCapability_Flags
	SegmentRoutingCapability_Flags_IPV6_MPLS E_SegmentRoutingCapability_Flags = 2
	// SegmentRoutingCapability_Flags_IPV6_SR corresponds to the value IPV6_SR of SegmentRoutingCapability_Flags
	SegmentRoutingCapability_Flags_IPV6_SR E_SegmentRoutingCapability_Flags = 3
)

// E_SegmentRoutingSidLabelRange_Tlv_Type_Enum is a derived int64 type which is used to represent
// the enumerated node SegmentRoutingSidLabelRange_Tlv_Type_Enum. An additional value named
// SegmentRoutingSidLabelRange_Tlv_Type_Enum_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SegmentRoutingSidLabelRange_Tlv_Type_Enum int64

// IsYANGGoEnum ensures that SegmentRoutingSidLabelRange_Tlv_Type_Enum implements the yang.GoEnum
// interface. This ensures that SegmentRoutingSidLabelRange_Tlv_Type_Enum can be identified as a
// mapped type for a YANG enumeration.
func (E_SegmentRoutingSidLabelRange_Tlv_Type_Enum) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SegmentRoutingSidLabelRange_Tlv_Type_Enum.
func (E_SegmentRoutingSidLabelRange_Tlv_Type_Enum) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_SegmentRoutingSidLabelRange_Tlv_Type_Enum.
func (e E_SegmentRoutingSidLabelRange_Tlv_Type_Enum) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SegmentRoutingSidLabelRange_Tlv_Type_Enum")
}

const (
	// SegmentRoutingSidLabelRange_Tlv_Type_Enum_UNSET corresponds to the value UNSET of SegmentRoutingSidLabelRange_Tlv_Type_Enum
	SegmentRoutingSidLabelRange_Tlv_Type_Enum_UNSET E_SegmentRoutingSidLabelRange_Tlv_Type_Enum = 0
	// SegmentRoutingSidLabelRange_Tlv_Type_Enum_UNKNOWN corresponds to the value UNKNOWN of SegmentRoutingSidLabelRange_Tlv_Type_Enum
	SegmentRoutingSidLabelRange_Tlv_Type_Enum_UNKNOWN E_SegmentRoutingSidLabelRange_Tlv_Type_Enum = 1
)

// E_SegmentRoutingTypes_EnlpType is a derived int64 type which is used to represent
// the enumerated node SegmentRoutingTypes_EnlpType. An additional value named
// SegmentRoutingTypes_EnlpType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SegmentRoutingTypes_EnlpType int64

// IsYANGGoEnum ensures that SegmentRoutingTypes_EnlpType implements the yang.GoEnum
// interface. This ensures that SegmentRoutingTypes_EnlpType can be identified as a
// mapped type for a YANG enumeration.
func (E_SegmentRoutingTypes_EnlpType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SegmentRoutingTypes_EnlpType.
func (E_SegmentRoutingTypes_EnlpType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_SegmentRoutingTypes_EnlpType.
func (e E_SegmentRoutingTypes_EnlpType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SegmentRoutingTypes_EnlpType")
}

const (
	// SegmentRoutingTypes_EnlpType_UNSET corresponds to the value UNSET of SegmentRoutingTypes_EnlpType
	SegmentRoutingTypes_EnlpType_UNSET E_SegmentRoutingTypes_EnlpType = 0
	// SegmentRoutingTypes_EnlpType_PUSH_IPV4_EXPLICIT_NULL corresponds to the value PUSH_IPV4_EXPLICIT_NULL of SegmentRoutingTypes_EnlpType
	SegmentRoutingTypes_EnlpType_PUSH_IPV4_EXPLICIT_NULL E_SegmentRoutingTypes_EnlpType = 1
	// SegmentRoutingTypes_EnlpType_PUSH_IPV6_EXPLICIT_NULL corresponds to the value PUSH_IPV6_EXPLICIT_NULL of SegmentRoutingTypes_EnlpType
	SegmentRoutingTypes_EnlpType_PUSH_IPV6_EXPLICIT_NULL E_SegmentRoutingTypes_EnlpType = 2
	// SegmentRoutingTypes_EnlpType_PUSH_IPV46_EXPLICIT_NULL corresponds to the value PUSH_IPV46_EXPLICIT_NULL of SegmentRoutingTypes_EnlpType
	SegmentRoutingTypes_EnlpType_PUSH_IPV46_EXPLICIT_NULL E_SegmentRoutingTypes_EnlpType = 3
	// SegmentRoutingTypes_EnlpType_NO_EXPLICIT_NULL corresponds to the value NO_EXPLICIT_NULL of SegmentRoutingTypes_EnlpType
	SegmentRoutingTypes_EnlpType_NO_EXPLICIT_NULL E_SegmentRoutingTypes_EnlpType = 4
)

// E_SegmentRoutingTypes_SrDataplaneType is a derived int64 type which is used to represent
// the enumerated node SegmentRoutingTypes_SrDataplaneType. An additional value named
// SegmentRoutingTypes_SrDataplaneType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SegmentRoutingTypes_SrDataplaneType int64

// IsYANGGoEnum ensures that SegmentRoutingTypes_SrDataplaneType implements the yang.GoEnum
// interface. This ensures that SegmentRoutingTypes_SrDataplaneType can be identified as a
// mapped type for a YANG enumeration.
func (E_SegmentRoutingTypes_SrDataplaneType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SegmentRoutingTypes_SrDataplaneType.
func (E_SegmentRoutingTypes_SrDataplaneType) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_SegmentRoutingTypes_SrDataplaneType.
func (e E_SegmentRoutingTypes_SrDataplaneType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SegmentRoutingTypes_SrDataplaneType")
}

const (
	// SegmentRoutingTypes_SrDataplaneType_UNSET corresponds to the value UNSET of SegmentRoutingTypes_SrDataplaneType
	SegmentRoutingTypes_SrDataplaneType_UNSET E_SegmentRoutingTypes_SrDataplaneType = 0
	// SegmentRoutingTypes_SrDataplaneType_MPLS corresponds to the value MPLS of SegmentRoutingTypes_SrDataplaneType
	SegmentRoutingTypes_SrDataplaneType_MPLS E_SegmentRoutingTypes_SrDataplaneType = 1
	// SegmentRoutingTypes_SrDataplaneType_IPV6 corresponds to the value IPV6 of SegmentRoutingTypes_SrDataplaneType
	SegmentRoutingTypes_SrDataplaneType_IPV6 E_SegmentRoutingTypes_SrDataplaneType = 2
)

// E_SegmentRoutingTypes_SrteInvalidSlReason is a derived int64 type which is used to represent
// the enumerated node SegmentRoutingTypes_SrteInvalidSlReason. An additional value named
// SegmentRoutingTypes_SrteInvalidSlReason_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SegmentRoutingTypes_SrteInvalidSlReason int64

// IsYANGGoEnum ensures that SegmentRoutingTypes_SrteInvalidSlReason implements the yang.GoEnum
// interface. This ensures that SegmentRoutingTypes_SrteInvalidSlReason can be identified as a
// mapped type for a YANG enumeration.
func (E_SegmentRoutingTypes_SrteInvalidSlReason) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SegmentRoutingTypes_SrteInvalidSlReason.
func (E_SegmentRoutingTypes_SrteInvalidSlReason) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_SegmentRoutingTypes_SrteInvalidSlReason.
func (e E_SegmentRoutingTypes_SrteInvalidSlReason) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SegmentRoutingTypes_SrteInvalidSlReason")
}

const (
	// SegmentRoutingTypes_SrteInvalidSlReason_UNSET corresponds to the value UNSET of SegmentRoutingTypes_SrteInvalidSlReason
	SegmentRoutingTypes_SrteInvalidSlReason_UNSET E_SegmentRoutingTypes_SrteInvalidSlReason = 0
	// SegmentRoutingTypes_SrteInvalidSlReason_EMPTY_SL corresponds to the value EMPTY_SL of SegmentRoutingTypes_SrteInvalidSlReason
	SegmentRoutingTypes_SrteInvalidSlReason_EMPTY_SL E_SegmentRoutingTypes_SrteInvalidSlReason = 1
	// SegmentRoutingTypes_SrteInvalidSlReason_ZERO_WEIGHT corresponds to the value ZERO_WEIGHT of SegmentRoutingTypes_SrteInvalidSlReason
	SegmentRoutingTypes_SrteInvalidSlReason_ZERO_WEIGHT E_SegmentRoutingTypes_SrteInvalidSlReason = 2
	// SegmentRoutingTypes_SrteInvalidSlReason_FIRST_SID_UNRESOLVABLE corresponds to the value FIRST_SID_UNRESOLVABLE of SegmentRoutingTypes_SrteInvalidSlReason
	SegmentRoutingTypes_SrteInvalidSlReason_FIRST_SID_UNRESOLVABLE E_SegmentRoutingTypes_SrteInvalidSlReason = 3
	// SegmentRoutingTypes_SrteInvalidSlReason_OTHER_SID_UNRESOLVABLE corresponds to the value OTHER_SID_UNRESOLVABLE of SegmentRoutingTypes_SrteInvalidSlReason
	SegmentRoutingTypes_SrteInvalidSlReason_OTHER_SID_UNRESOLVABLE E_SegmentRoutingTypes_SrteInvalidSlReason = 4
	// SegmentRoutingTypes_SrteInvalidSlReason_VERIFICATION_FAIL corresponds to the value VERIFICATION_FAIL of SegmentRoutingTypes_SrteInvalidSlReason
	SegmentRoutingTypes_SrteInvalidSlReason_VERIFICATION_FAIL E_SegmentRoutingTypes_SrteInvalidSlReason = 5
)

// E_SegmentRoutingTypes_SrteProtocolType is a derived int64 type which is used to represent
// the enumerated node SegmentRoutingTypes_SrteProtocolType. An additional value named
// SegmentRoutingTypes_SrteProtocolType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SegmentRoutingTypes_SrteProtocolType int64

// IsYANGGoEnum ensures that SegmentRoutingTypes_SrteProtocolType implements the yang.GoEnum
// interface. This ensures that SegmentRoutingTypes_SrteProtocolType can be identified as a
// mapped type for a YANG enumeration.
func (E_SegmentRoutingTypes_SrteProtocolType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SegmentRoutingTypes_SrteProtocolType.
func (E_SegmentRoutingTypes_SrteProtocolType) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_SegmentRoutingTypes_SrteProtocolType.
func (e E_SegmentRoutingTypes_SrteProtocolType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SegmentRoutingTypes_SrteProtocolType")
}

const (
	// SegmentRoutingTypes_SrteProtocolType_UNSET corresponds to the value UNSET of SegmentRoutingTypes_SrteProtocolType
	SegmentRoutingTypes_SrteProtocolType_UNSET E_SegmentRoutingTypes_SrteProtocolType = 0
	// SegmentRoutingTypes_SrteProtocolType_PCEP corresponds to the value PCEP of SegmentRoutingTypes_SrteProtocolType
	SegmentRoutingTypes_SrteProtocolType_PCEP E_SegmentRoutingTypes_SrteProtocolType = 11
	// SegmentRoutingTypes_SrteProtocolType_BGP corresponds to the value BGP of SegmentRoutingTypes_SrteProtocolType
	SegmentRoutingTypes_SrteProtocolType_BGP E_SegmentRoutingTypes_SrteProtocolType = 21
	// SegmentRoutingTypes_SrteProtocolType_CONFIG corresponds to the value CONFIG of SegmentRoutingTypes_SrteProtocolType
	SegmentRoutingTypes_SrteProtocolType_CONFIG E_SegmentRoutingTypes_SrteProtocolType = 31
)

// E_Segment_Type is a derived int64 type which is used to represent
// the enumerated node Segment_Type. An additional value named
// Segment_Type_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Segment_Type int64

// IsYANGGoEnum ensures that Segment_Type implements the yang.GoEnum
// interface. This ensures that Segment_Type can be identified as a
// mapped type for a YANG enumeration.
func (E_Segment_Type) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Segment_Type.
func (E_Segment_Type) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Segment_Type.
func (e E_Segment_Type) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Segment_Type")
}

const (
	// Segment_Type_UNSET corresponds to the value UNSET of Segment_Type
	Segment_Type_UNSET E_Segment_Type = 0
	// Segment_Type_MPLS_SID corresponds to the value MPLS_SID of Segment_Type
	Segment_Type_MPLS_SID E_Segment_Type = 2
	// Segment_Type_IPV6_SID corresponds to the value IPV6_SID of Segment_Type
	Segment_Type_IPV6_SID E_Segment_Type = 3
	// Segment_Type_IPV4_NODE_ADDRESS corresponds to the value IPV4_NODE_ADDRESS of Segment_Type
	Segment_Type_IPV4_NODE_ADDRESS E_Segment_Type = 4
	// Segment_Type_IPV6_NODE_ADDRESS corresponds to the value IPV6_NODE_ADDRESS of Segment_Type
	Segment_Type_IPV6_NODE_ADDRESS E_Segment_Type = 5
	// Segment_Type_IPV4_LOCAL_INTF_ID corresponds to the value IPV4_LOCAL_INTF_ID of Segment_Type
	Segment_Type_IPV4_LOCAL_INTF_ID E_Segment_Type = 6
	// Segment_Type_IPV4_LOCAL_REMOTE_ADDR corresponds to the value IPV4_LOCAL_REMOTE_ADDR of Segment_Type
	Segment_Type_IPV4_LOCAL_REMOTE_ADDR E_Segment_Type = 7
	// Segment_Type_IPV6_LOCAL_INTF_ID corresponds to the value IPV6_LOCAL_INTF_ID of Segment_Type
	Segment_Type_IPV6_LOCAL_INTF_ID E_Segment_Type = 8
	// Segment_Type_IPV6_LOCAL_REMOTE_ADDR corresponds to the value IPV6_LOCAL_REMOTE_ADDR of Segment_Type
	Segment_Type_IPV6_LOCAL_REMOTE_ADDR E_Segment_Type = 9
)

// E_Server_AssociationType is a derived int64 type which is used to represent
// the enumerated node Server_AssociationType. An additional value named
// Server_AssociationType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Server_AssociationType int64

// IsYANGGoEnum ensures that Server_AssociationType implements the yang.GoEnum
// interface. This ensures that Server_AssociationType can be identified as a
// mapped type for a YANG enumeration.
func (E_Server_AssociationType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Server_AssociationType.
func (E_Server_AssociationType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Server_AssociationType.
func (e E_Server_AssociationType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Server_AssociationType")
}

const (
	// Server_AssociationType_UNSET corresponds to the value UNSET of Server_AssociationType
	Server_AssociationType_UNSET E_Server_AssociationType = 0
	// Server_AssociationType_SERVER corresponds to the value SERVER of Server_AssociationType
	Server_AssociationType_SERVER E_Server_AssociationType = 1
	// Server_AssociationType_PEER corresponds to the value PEER of Server_AssociationType
	Server_AssociationType_PEER E_Server_AssociationType = 2
	// Server_AssociationType_POOL corresponds to the value POOL of Server_AssociationType
	Server_AssociationType_POOL E_Server_AssociationType = 3
)

// E_Session_Status is a derived int64 type which is used to represent
// the enumerated node Session_Status. An additional value named
// Session_Status_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Session_Status int64

// IsYANGGoEnum ensures that Session_Status implements the yang.GoEnum
// interface. This ensures that Session_Status can be identified as a
// mapped type for a YANG enumeration.
func (E_Session_Status) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Session_Status.
func (E_Session_Status) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Session_Status.
func (e E_Session_Status) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Session_Status")
}

const (
	// Session_Status_UNSET corresponds to the value UNSET of Session_Status
	Session_Status_UNSET E_Session_Status = 0
	// Session_Status_UP corresponds to the value UP of Session_Status
	Session_Status_UP E_Session_Status = 1
	// Session_Status_DOWN corresponds to the value DOWN of Session_Status
	Session_Status_DOWN E_Session_Status = 2
)

// E_SetCommunity_Method is a derived int64 type which is used to represent
// the enumerated node SetCommunity_Method. An additional value named
// SetCommunity_Method_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SetCommunity_Method int64

// IsYANGGoEnum ensures that SetCommunity_Method implements the yang.GoEnum
// interface. This ensures that SetCommunity_Method can be identified as a
// mapped type for a YANG enumeration.
func (E_SetCommunity_Method) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SetCommunity_Method.
func (E_SetCommunity_Method) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_SetCommunity_Method.
func (e E_SetCommunity_Method) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SetCommunity_Method")
}

const (
	// SetCommunity_Method_UNSET corresponds to the value UNSET of SetCommunity_Method
	SetCommunity_Method_UNSET E_SetCommunity_Method = 0
	// SetCommunity_Method_INLINE corresponds to the value INLINE of SetCommunity_Method
	SetCommunity_Method_INLINE E_SetCommunity_Method = 1
	// SetCommunity_Method_REFERENCE corresponds to the value REFERENCE of SetCommunity_Method
	SetCommunity_Method_REFERENCE E_SetCommunity_Method = 2
)

// E_SetTag_Mode is a derived int64 type which is used to represent
// the enumerated node SetTag_Mode. An additional value named
// SetTag_Mode_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SetTag_Mode int64

// IsYANGGoEnum ensures that SetTag_Mode implements the yang.GoEnum
// interface. This ensures that SetTag_Mode can be identified as a
// mapped type for a YANG enumeration.
func (E_SetTag_Mode) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SetTag_Mode.
func (E_SetTag_Mode) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_SetTag_Mode.
func (e E_SetTag_Mode) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SetTag_Mode")
}

const (
	// SetTag_Mode_UNSET corresponds to the value UNSET of SetTag_Mode
	SetTag_Mode_UNSET E_SetTag_Mode = 0
	// SetTag_Mode_INLINE corresponds to the value INLINE of SetTag_Mode
	SetTag_Mode_INLINE E_SetTag_Mode = 1
	// SetTag_Mode_REFERENCE corresponds to the value REFERENCE of SetTag_Mode
	SetTag_Mode_REFERENCE E_SetTag_Mode = 2
)

// E_SpanningTreeTypes_STP_EDGE_PORT is a derived int64 type which is used to represent
// the enumerated node SpanningTreeTypes_STP_EDGE_PORT. An additional value named
// SpanningTreeTypes_STP_EDGE_PORT_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SpanningTreeTypes_STP_EDGE_PORT int64

// IsYANGGoEnum ensures that SpanningTreeTypes_STP_EDGE_PORT implements the yang.GoEnum
// interface. This ensures that SpanningTreeTypes_STP_EDGE_PORT can be identified as a
// mapped type for a YANG enumeration.
func (E_SpanningTreeTypes_STP_EDGE_PORT) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SpanningTreeTypes_STP_EDGE_PORT.
func (E_SpanningTreeTypes_STP_EDGE_PORT) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_SpanningTreeTypes_STP_EDGE_PORT.
func (e E_SpanningTreeTypes_STP_EDGE_PORT) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SpanningTreeTypes_STP_EDGE_PORT")
}

const (
	// SpanningTreeTypes_STP_EDGE_PORT_UNSET corresponds to the value UNSET of SpanningTreeTypes_STP_EDGE_PORT
	SpanningTreeTypes_STP_EDGE_PORT_UNSET E_SpanningTreeTypes_STP_EDGE_PORT = 0
	// SpanningTreeTypes_STP_EDGE_PORT_EDGE_AUTO corresponds to the value EDGE_AUTO of SpanningTreeTypes_STP_EDGE_PORT
	SpanningTreeTypes_STP_EDGE_PORT_EDGE_AUTO E_SpanningTreeTypes_STP_EDGE_PORT = 1
	// SpanningTreeTypes_STP_EDGE_PORT_EDGE_DISABLE corresponds to the value EDGE_DISABLE of SpanningTreeTypes_STP_EDGE_PORT
	SpanningTreeTypes_STP_EDGE_PORT_EDGE_DISABLE E_SpanningTreeTypes_STP_EDGE_PORT = 2
	// SpanningTreeTypes_STP_EDGE_PORT_EDGE_ENABLE corresponds to the value EDGE_ENABLE of SpanningTreeTypes_STP_EDGE_PORT
	SpanningTreeTypes_STP_EDGE_PORT_EDGE_ENABLE E_SpanningTreeTypes_STP_EDGE_PORT = 3
)

// E_SpanningTreeTypes_STP_PORT_ROLE is a derived int64 type which is used to represent
// the enumerated node SpanningTreeTypes_STP_PORT_ROLE. An additional value named
// SpanningTreeTypes_STP_PORT_ROLE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SpanningTreeTypes_STP_PORT_ROLE int64

// IsYANGGoEnum ensures that SpanningTreeTypes_STP_PORT_ROLE implements the yang.GoEnum
// interface. This ensures that SpanningTreeTypes_STP_PORT_ROLE can be identified as a
// mapped type for a YANG enumeration.
func (E_SpanningTreeTypes_STP_PORT_ROLE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SpanningTreeTypes_STP_PORT_ROLE.
func (E_SpanningTreeTypes_STP_PORT_ROLE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_SpanningTreeTypes_STP_PORT_ROLE.
func (e E_SpanningTreeTypes_STP_PORT_ROLE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SpanningTreeTypes_STP_PORT_ROLE")
}

const (
	// SpanningTreeTypes_STP_PORT_ROLE_UNSET corresponds to the value UNSET of SpanningTreeTypes_STP_PORT_ROLE
	SpanningTreeTypes_STP_PORT_ROLE_UNSET E_SpanningTreeTypes_STP_PORT_ROLE = 0
	// SpanningTreeTypes_STP_PORT_ROLE_ALTERNATE corresponds to the value ALTERNATE of SpanningTreeTypes_STP_PORT_ROLE
	SpanningTreeTypes_STP_PORT_ROLE_ALTERNATE E_SpanningTreeTypes_STP_PORT_ROLE = 1
	// SpanningTreeTypes_STP_PORT_ROLE_BACKUP corresponds to the value BACKUP of SpanningTreeTypes_STP_PORT_ROLE
	SpanningTreeTypes_STP_PORT_ROLE_BACKUP E_SpanningTreeTypes_STP_PORT_ROLE = 2
	// SpanningTreeTypes_STP_PORT_ROLE_DESIGNATED corresponds to the value DESIGNATED of SpanningTreeTypes_STP_PORT_ROLE
	SpanningTreeTypes_STP_PORT_ROLE_DESIGNATED E_SpanningTreeTypes_STP_PORT_ROLE = 3
	// SpanningTreeTypes_STP_PORT_ROLE_ROOT corresponds to the value ROOT of SpanningTreeTypes_STP_PORT_ROLE
	SpanningTreeTypes_STP_PORT_ROLE_ROOT E_SpanningTreeTypes_STP_PORT_ROLE = 4
)

// E_SpanningTreeTypes_STP_PORT_STATE is a derived int64 type which is used to represent
// the enumerated node SpanningTreeTypes_STP_PORT_STATE. An additional value named
// SpanningTreeTypes_STP_PORT_STATE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SpanningTreeTypes_STP_PORT_STATE int64

// IsYANGGoEnum ensures that SpanningTreeTypes_STP_PORT_STATE implements the yang.GoEnum
// interface. This ensures that SpanningTreeTypes_STP_PORT_STATE can be identified as a
// mapped type for a YANG enumeration.
func (E_SpanningTreeTypes_STP_PORT_STATE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SpanningTreeTypes_STP_PORT_STATE.
func (E_SpanningTreeTypes_STP_PORT_STATE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_SpanningTreeTypes_STP_PORT_STATE.
func (e E_SpanningTreeTypes_STP_PORT_STATE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SpanningTreeTypes_STP_PORT_STATE")
}

const (
	// SpanningTreeTypes_STP_PORT_STATE_UNSET corresponds to the value UNSET of SpanningTreeTypes_STP_PORT_STATE
	SpanningTreeTypes_STP_PORT_STATE_UNSET E_SpanningTreeTypes_STP_PORT_STATE = 0
	// SpanningTreeTypes_STP_PORT_STATE_BLOCKING corresponds to the value BLOCKING of SpanningTreeTypes_STP_PORT_STATE
	SpanningTreeTypes_STP_PORT_STATE_BLOCKING E_SpanningTreeTypes_STP_PORT_STATE = 1
	// SpanningTreeTypes_STP_PORT_STATE_DISABLED corresponds to the value DISABLED of SpanningTreeTypes_STP_PORT_STATE
	SpanningTreeTypes_STP_PORT_STATE_DISABLED E_SpanningTreeTypes_STP_PORT_STATE = 2
	// SpanningTreeTypes_STP_PORT_STATE_FORWARDING corresponds to the value FORWARDING of SpanningTreeTypes_STP_PORT_STATE
	SpanningTreeTypes_STP_PORT_STATE_FORWARDING E_SpanningTreeTypes_STP_PORT_STATE = 3
	// SpanningTreeTypes_STP_PORT_STATE_LEARNING corresponds to the value LEARNING of SpanningTreeTypes_STP_PORT_STATE
	SpanningTreeTypes_STP_PORT_STATE_LEARNING E_SpanningTreeTypes_STP_PORT_STATE = 4
	// SpanningTreeTypes_STP_PORT_STATE_LISTENING corresponds to the value LISTENING of SpanningTreeTypes_STP_PORT_STATE
	SpanningTreeTypes_STP_PORT_STATE_LISTENING E_SpanningTreeTypes_STP_PORT_STATE = 5
)

// E_SpanningTreeTypes_STP_PROTOCOL is a derived int64 type which is used to represent
// the enumerated node SpanningTreeTypes_STP_PROTOCOL. An additional value named
// SpanningTreeTypes_STP_PROTOCOL_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SpanningTreeTypes_STP_PROTOCOL int64

// IsYANGGoEnum ensures that SpanningTreeTypes_STP_PROTOCOL implements the yang.GoEnum
// interface. This ensures that SpanningTreeTypes_STP_PROTOCOL can be identified as a
// mapped type for a YANG enumeration.
func (E_SpanningTreeTypes_STP_PROTOCOL) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SpanningTreeTypes_STP_PROTOCOL.
func (E_SpanningTreeTypes_STP_PROTOCOL) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_SpanningTreeTypes_STP_PROTOCOL.
func (e E_SpanningTreeTypes_STP_PROTOCOL) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SpanningTreeTypes_STP_PROTOCOL")
}

const (
	// SpanningTreeTypes_STP_PROTOCOL_UNSET corresponds to the value UNSET of SpanningTreeTypes_STP_PROTOCOL
	SpanningTreeTypes_STP_PROTOCOL_UNSET E_SpanningTreeTypes_STP_PROTOCOL = 0
	// SpanningTreeTypes_STP_PROTOCOL_MSTP corresponds to the value MSTP of SpanningTreeTypes_STP_PROTOCOL
	SpanningTreeTypes_STP_PROTOCOL_MSTP E_SpanningTreeTypes_STP_PROTOCOL = 1
	// SpanningTreeTypes_STP_PROTOCOL_RAPID_PVST corresponds to the value RAPID_PVST of SpanningTreeTypes_STP_PROTOCOL
	SpanningTreeTypes_STP_PROTOCOL_RAPID_PVST E_SpanningTreeTypes_STP_PROTOCOL = 2
	// SpanningTreeTypes_STP_PROTOCOL_RSTP corresponds to the value RSTP of SpanningTreeTypes_STP_PROTOCOL
	SpanningTreeTypes_STP_PROTOCOL_RSTP E_SpanningTreeTypes_STP_PROTOCOL = 3
)

// E_SpanningTreeTypes_StpGuardType is a derived int64 type which is used to represent
// the enumerated node SpanningTreeTypes_StpGuardType. An additional value named
// SpanningTreeTypes_StpGuardType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SpanningTreeTypes_StpGuardType int64

// IsYANGGoEnum ensures that SpanningTreeTypes_StpGuardType implements the yang.GoEnum
// interface. This ensures that SpanningTreeTypes_StpGuardType can be identified as a
// mapped type for a YANG enumeration.
func (E_SpanningTreeTypes_StpGuardType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SpanningTreeTypes_StpGuardType.
func (E_SpanningTreeTypes_StpGuardType) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_SpanningTreeTypes_StpGuardType.
func (e E_SpanningTreeTypes_StpGuardType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SpanningTreeTypes_StpGuardType")
}

const (
	// SpanningTreeTypes_StpGuardType_UNSET corresponds to the value UNSET of SpanningTreeTypes_StpGuardType
	SpanningTreeTypes_StpGuardType_UNSET E_SpanningTreeTypes_StpGuardType = 0
	// SpanningTreeTypes_StpGuardType_ROOT corresponds to the value ROOT of SpanningTreeTypes_StpGuardType
	SpanningTreeTypes_StpGuardType_ROOT E_SpanningTreeTypes_StpGuardType = 1
	// SpanningTreeTypes_StpGuardType_LOOP corresponds to the value LOOP of SpanningTreeTypes_StpGuardType
	SpanningTreeTypes_StpGuardType_LOOP E_SpanningTreeTypes_StpGuardType = 2
	// SpanningTreeTypes_StpGuardType_NONE corresponds to the value NONE of SpanningTreeTypes_StpGuardType
	SpanningTreeTypes_StpGuardType_NONE E_SpanningTreeTypes_StpGuardType = 3
)

// E_SpanningTreeTypes_StpLinkType is a derived int64 type which is used to represent
// the enumerated node SpanningTreeTypes_StpLinkType. An additional value named
// SpanningTreeTypes_StpLinkType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SpanningTreeTypes_StpLinkType int64

// IsYANGGoEnum ensures that SpanningTreeTypes_StpLinkType implements the yang.GoEnum
// interface. This ensures that SpanningTreeTypes_StpLinkType can be identified as a
// mapped type for a YANG enumeration.
func (E_SpanningTreeTypes_StpLinkType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SpanningTreeTypes_StpLinkType.
func (E_SpanningTreeTypes_StpLinkType) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_SpanningTreeTypes_StpLinkType.
func (e E_SpanningTreeTypes_StpLinkType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SpanningTreeTypes_StpLinkType")
}

const (
	// SpanningTreeTypes_StpLinkType_UNSET corresponds to the value UNSET of SpanningTreeTypes_StpLinkType
	SpanningTreeTypes_StpLinkType_UNSET E_SpanningTreeTypes_StpLinkType = 0
	// SpanningTreeTypes_StpLinkType_P2P corresponds to the value P2P of SpanningTreeTypes_StpLinkType
	SpanningTreeTypes_StpLinkType_P2P E_SpanningTreeTypes_StpLinkType = 1
	// SpanningTreeTypes_StpLinkType_SHARED corresponds to the value SHARED of SpanningTreeTypes_StpLinkType
	SpanningTreeTypes_StpLinkType_SHARED E_SpanningTreeTypes_StpLinkType = 2
)

// E_SshServer_ProtocolVersion is a derived int64 type which is used to represent
// the enumerated node SshServer_ProtocolVersion. An additional value named
// SshServer_ProtocolVersion_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SshServer_ProtocolVersion int64

// IsYANGGoEnum ensures that SshServer_ProtocolVersion implements the yang.GoEnum
// interface. This ensures that SshServer_ProtocolVersion can be identified as a
// mapped type for a YANG enumeration.
func (E_SshServer_ProtocolVersion) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SshServer_ProtocolVersion.
func (E_SshServer_ProtocolVersion) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_SshServer_ProtocolVersion.
func (e E_SshServer_ProtocolVersion) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SshServer_ProtocolVersion")
}

const (
	// SshServer_ProtocolVersion_UNSET corresponds to the value UNSET of SshServer_ProtocolVersion
	SshServer_ProtocolVersion_UNSET E_SshServer_ProtocolVersion = 0
	// SshServer_ProtocolVersion_V2 corresponds to the value V2 of SshServer_ProtocolVersion
	SshServer_ProtocolVersion_V2 E_SshServer_ProtocolVersion = 1
	// SshServer_ProtocolVersion_V1 corresponds to the value V1 of SshServer_ProtocolVersion
	SshServer_ProtocolVersion_V1 E_SshServer_ProtocolVersion = 2
	// SshServer_ProtocolVersion_V1_V2 corresponds to the value V1_V2 of SshServer_ProtocolVersion
	SshServer_ProtocolVersion_V1_V2 E_SshServer_ProtocolVersion = 3
)

// E_SubTlv_LinkType is a derived int64 type which is used to represent
// the enumerated node SubTlv_LinkType. An additional value named
// SubTlv_LinkType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SubTlv_LinkType int64

// IsYANGGoEnum ensures that SubTlv_LinkType implements the yang.GoEnum
// interface. This ensures that SubTlv_LinkType can be identified as a
// mapped type for a YANG enumeration.
func (E_SubTlv_LinkType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SubTlv_LinkType.
func (E_SubTlv_LinkType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_SubTlv_LinkType.
func (e E_SubTlv_LinkType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SubTlv_LinkType")
}

const (
	// SubTlv_LinkType_UNSET corresponds to the value UNSET of SubTlv_LinkType
	SubTlv_LinkType_UNSET E_SubTlv_LinkType = 0
	// SubTlv_LinkType_POINT_TO_POINT corresponds to the value POINT_TO_POINT of SubTlv_LinkType
	SubTlv_LinkType_POINT_TO_POINT E_SubTlv_LinkType = 1
	// SubTlv_LinkType_MULTI_ACCESS corresponds to the value MULTI_ACCESS of SubTlv_LinkType
	SubTlv_LinkType_MULTI_ACCESS E_SubTlv_LinkType = 2
	// SubTlv_LinkType_UNKNOWN corresponds to the value UNKNOWN of SubTlv_LinkType
	SubTlv_LinkType_UNKNOWN E_SubTlv_LinkType = 3
)

// E_SystemLogging_SYSLOG_FACILITY is a derived int64 type which is used to represent
// the enumerated node SystemLogging_SYSLOG_FACILITY. An additional value named
// SystemLogging_SYSLOG_FACILITY_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SystemLogging_SYSLOG_FACILITY int64

// IsYANGGoEnum ensures that SystemLogging_SYSLOG_FACILITY implements the yang.GoEnum
// interface. This ensures that SystemLogging_SYSLOG_FACILITY can be identified as a
// mapped type for a YANG enumeration.
func (E_SystemLogging_SYSLOG_FACILITY) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SystemLogging_SYSLOG_FACILITY.
func (E_SystemLogging_SYSLOG_FACILITY) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_SystemLogging_SYSLOG_FACILITY.
func (e E_SystemLogging_SYSLOG_FACILITY) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SystemLogging_SYSLOG_FACILITY")
}

const (
	// SystemLogging_SYSLOG_FACILITY_UNSET corresponds to the value UNSET of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_UNSET E_SystemLogging_SYSLOG_FACILITY = 0
	// SystemLogging_SYSLOG_FACILITY_ALL corresponds to the value ALL of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_ALL E_SystemLogging_SYSLOG_FACILITY = 1
	// SystemLogging_SYSLOG_FACILITY_AUDIT corresponds to the value AUDIT of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_AUDIT E_SystemLogging_SYSLOG_FACILITY = 2
	// SystemLogging_SYSLOG_FACILITY_AUTH corresponds to the value AUTH of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_AUTH E_SystemLogging_SYSLOG_FACILITY = 3
	// SystemLogging_SYSLOG_FACILITY_AUTHPRIV corresponds to the value AUTHPRIV of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_AUTHPRIV E_SystemLogging_SYSLOG_FACILITY = 4
	// SystemLogging_SYSLOG_FACILITY_CONSOLE corresponds to the value CONSOLE of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_CONSOLE E_SystemLogging_SYSLOG_FACILITY = 5
	// SystemLogging_SYSLOG_FACILITY_KERNEL corresponds to the value KERNEL of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_KERNEL E_SystemLogging_SYSLOG_FACILITY = 6
	// SystemLogging_SYSLOG_FACILITY_LOCAL0 corresponds to the value LOCAL0 of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_LOCAL0 E_SystemLogging_SYSLOG_FACILITY = 7
	// SystemLogging_SYSLOG_FACILITY_LOCAL1 corresponds to the value LOCAL1 of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_LOCAL1 E_SystemLogging_SYSLOG_FACILITY = 8
	// SystemLogging_SYSLOG_FACILITY_LOCAL2 corresponds to the value LOCAL2 of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_LOCAL2 E_SystemLogging_SYSLOG_FACILITY = 9
	// SystemLogging_SYSLOG_FACILITY_LOCAL3 corresponds to the value LOCAL3 of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_LOCAL3 E_SystemLogging_SYSLOG_FACILITY = 10
	// SystemLogging_SYSLOG_FACILITY_LOCAL4 corresponds to the value LOCAL4 of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_LOCAL4 E_SystemLogging_SYSLOG_FACILITY = 11
	// SystemLogging_SYSLOG_FACILITY_LOCAL5 corresponds to the value LOCAL5 of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_LOCAL5 E_SystemLogging_SYSLOG_FACILITY = 12
	// SystemLogging_SYSLOG_FACILITY_LOCAL6 corresponds to the value LOCAL6 of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_LOCAL6 E_SystemLogging_SYSLOG_FACILITY = 13
	// SystemLogging_SYSLOG_FACILITY_LOCAL7 corresponds to the value LOCAL7 of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_LOCAL7 E_SystemLogging_SYSLOG_FACILITY = 14
	// SystemLogging_SYSLOG_FACILITY_MAIL corresponds to the value MAIL of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_MAIL E_SystemLogging_SYSLOG_FACILITY = 15
	// SystemLogging_SYSLOG_FACILITY_NTP corresponds to the value NTP of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_NTP E_SystemLogging_SYSLOG_FACILITY = 16
	// SystemLogging_SYSLOG_FACILITY_SYSLOG corresponds to the value SYSLOG of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_SYSLOG E_SystemLogging_SYSLOG_FACILITY = 17
	// SystemLogging_SYSLOG_FACILITY_SYSTEM_DAEMON corresponds to the value SYSTEM_DAEMON of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_SYSTEM_DAEMON E_SystemLogging_SYSLOG_FACILITY = 18
	// SystemLogging_SYSLOG_FACILITY_USER corresponds to the value USER of SystemLogging_SYSLOG_FACILITY
	SystemLogging_SYSLOG_FACILITY_USER E_SystemLogging_SYSLOG_FACILITY = 19
)

// E_SystemLogging_SyslogSeverity is a derived int64 type which is used to represent
// the enumerated node SystemLogging_SyslogSeverity. An additional value named
// SystemLogging_SyslogSeverity_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_SystemLogging_SyslogSeverity int64

// IsYANGGoEnum ensures that SystemLogging_SyslogSeverity implements the yang.GoEnum
// interface. This ensures that SystemLogging_SyslogSeverity can be identified as a
// mapped type for a YANG enumeration.
func (E_SystemLogging_SyslogSeverity) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  SystemLogging_SyslogSeverity.
func (E_SystemLogging_SyslogSeverity) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_SystemLogging_SyslogSeverity.
func (e E_SystemLogging_SyslogSeverity) String() string {
	return ygot.EnumLogString(e, int64(e), "E_SystemLogging_SyslogSeverity")
}

const (
	// SystemLogging_SyslogSeverity_UNSET corresponds to the value UNSET of SystemLogging_SyslogSeverity
	SystemLogging_SyslogSeverity_UNSET E_SystemLogging_SyslogSeverity = 0
	// SystemLogging_SyslogSeverity_EMERGENCY corresponds to the value EMERGENCY of SystemLogging_SyslogSeverity
	SystemLogging_SyslogSeverity_EMERGENCY E_SystemLogging_SyslogSeverity = 1
	// SystemLogging_SyslogSeverity_ALERT corresponds to the value ALERT of SystemLogging_SyslogSeverity
	SystemLogging_SyslogSeverity_ALERT E_SystemLogging_SyslogSeverity = 2
	// SystemLogging_SyslogSeverity_CRITICAL corresponds to the value CRITICAL of SystemLogging_SyslogSeverity
	SystemLogging_SyslogSeverity_CRITICAL E_SystemLogging_SyslogSeverity = 3
	// SystemLogging_SyslogSeverity_ERROR corresponds to the value ERROR of SystemLogging_SyslogSeverity
	SystemLogging_SyslogSeverity_ERROR E_SystemLogging_SyslogSeverity = 4
	// SystemLogging_SyslogSeverity_WARNING corresponds to the value WARNING of SystemLogging_SyslogSeverity
	SystemLogging_SyslogSeverity_WARNING E_SystemLogging_SyslogSeverity = 5
	// SystemLogging_SyslogSeverity_NOTICE corresponds to the value NOTICE of SystemLogging_SyslogSeverity
	SystemLogging_SyslogSeverity_NOTICE E_SystemLogging_SyslogSeverity = 6
	// SystemLogging_SyslogSeverity_INFORMATIONAL corresponds to the value INFORMATIONAL of SystemLogging_SyslogSeverity
	SystemLogging_SyslogSeverity_INFORMATIONAL E_SystemLogging_SyslogSeverity = 7
	// SystemLogging_SyslogSeverity_DEBUG corresponds to the value DEBUG of SystemLogging_SyslogSeverity
	SystemLogging_SyslogSeverity_DEBUG E_SystemLogging_SyslogSeverity = 8
)

// E_System_NTP_AUTH_TYPE is a derived int64 type which is used to represent
// the enumerated node System_NTP_AUTH_TYPE. An additional value named
// System_NTP_AUTH_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_System_NTP_AUTH_TYPE int64

// IsYANGGoEnum ensures that System_NTP_AUTH_TYPE implements the yang.GoEnum
// interface. This ensures that System_NTP_AUTH_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_System_NTP_AUTH_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  System_NTP_AUTH_TYPE.
func (E_System_NTP_AUTH_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_System_NTP_AUTH_TYPE.
func (e E_System_NTP_AUTH_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_System_NTP_AUTH_TYPE")
}

const (
	// System_NTP_AUTH_TYPE_UNSET corresponds to the value UNSET of System_NTP_AUTH_TYPE
	System_NTP_AUTH_TYPE_UNSET E_System_NTP_AUTH_TYPE = 0
	// System_NTP_AUTH_TYPE_NTP_AUTH_MD5 corresponds to the value NTP_AUTH_MD5 of System_NTP_AUTH_TYPE
	System_NTP_AUTH_TYPE_NTP_AUTH_MD5 E_System_NTP_AUTH_TYPE = 1
)

// E_Tlv_Reason is a derived int64 type which is used to represent
// the enumerated node Tlv_Reason. An additional value named
// Tlv_Reason_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Tlv_Reason int64

// IsYANGGoEnum ensures that Tlv_Reason implements the yang.GoEnum
// interface. This ensures that Tlv_Reason can be identified as a
// mapped type for a YANG enumeration.
func (E_Tlv_Reason) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Tlv_Reason.
func (E_Tlv_Reason) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Tlv_Reason.
func (e E_Tlv_Reason) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Tlv_Reason")
}

const (
	// Tlv_Reason_UNSET corresponds to the value UNSET of Tlv_Reason
	Tlv_Reason_UNSET E_Tlv_Reason = 0
	// Tlv_Reason_UNKNOWN corresponds to the value UNKNOWN of Tlv_Reason
	Tlv_Reason_UNKNOWN E_Tlv_Reason = 1
	// Tlv_Reason_SOFTWARE_RESTART corresponds to the value SOFTWARE_RESTART of Tlv_Reason
	Tlv_Reason_SOFTWARE_RESTART E_Tlv_Reason = 2
	// Tlv_Reason_SOFTWARE_RELOAD_UPGRADE corresponds to the value SOFTWARE_RELOAD_UPGRADE of Tlv_Reason
	Tlv_Reason_SOFTWARE_RELOAD_UPGRADE E_Tlv_Reason = 3
	// Tlv_Reason_CONTROL_PROCESSOR_SWITCH corresponds to the value CONTROL_PROCESSOR_SWITCH of Tlv_Reason
	Tlv_Reason_CONTROL_PROCESSOR_SWITCH E_Tlv_Reason = 4
)

// E_Topology_Attributes is a derived int64 type which is used to represent
// the enumerated node Topology_Attributes. An additional value named
// Topology_Attributes_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Topology_Attributes int64

// IsYANGGoEnum ensures that Topology_Attributes implements the yang.GoEnum
// interface. This ensures that Topology_Attributes can be identified as a
// mapped type for a YANG enumeration.
func (E_Topology_Attributes) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Topology_Attributes.
func (E_Topology_Attributes) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Topology_Attributes.
func (e E_Topology_Attributes) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Topology_Attributes")
}

const (
	// Topology_Attributes_UNSET corresponds to the value UNSET of Topology_Attributes
	Topology_Attributes_UNSET E_Topology_Attributes = 0
	// Topology_Attributes_OVERLOAD corresponds to the value OVERLOAD of Topology_Attributes
	Topology_Attributes_OVERLOAD E_Topology_Attributes = 1
	// Topology_Attributes_ATTACHED corresponds to the value ATTACHED of Topology_Attributes
	Topology_Attributes_ATTACHED E_Topology_Attributes = 2
)

// E_Transceiver_Present is a derived int64 type which is used to represent
// the enumerated node Transceiver_Present. An additional value named
// Transceiver_Present_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Transceiver_Present int64

// IsYANGGoEnum ensures that Transceiver_Present implements the yang.GoEnum
// interface. This ensures that Transceiver_Present can be identified as a
// mapped type for a YANG enumeration.
func (E_Transceiver_Present) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Transceiver_Present.
func (E_Transceiver_Present) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Transceiver_Present.
func (e E_Transceiver_Present) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Transceiver_Present")
}

const (
	// Transceiver_Present_UNSET corresponds to the value UNSET of Transceiver_Present
	Transceiver_Present_UNSET E_Transceiver_Present = 0
	// Transceiver_Present_PRESENT corresponds to the value PRESENT of Transceiver_Present
	Transceiver_Present_PRESENT E_Transceiver_Present = 1
	// Transceiver_Present_NOT_PRESENT corresponds to the value NOT_PRESENT of Transceiver_Present
	Transceiver_Present_NOT_PRESENT E_Transceiver_Present = 2
)

// E_TransportLineProtection_APS_PATHS is a derived int64 type which is used to represent
// the enumerated node TransportLineProtection_APS_PATHS. An additional value named
// TransportLineProtection_APS_PATHS_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_TransportLineProtection_APS_PATHS int64

// IsYANGGoEnum ensures that TransportLineProtection_APS_PATHS implements the yang.GoEnum
// interface. This ensures that TransportLineProtection_APS_PATHS can be identified as a
// mapped type for a YANG enumeration.
func (E_TransportLineProtection_APS_PATHS) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  TransportLineProtection_APS_PATHS.
func (E_TransportLineProtection_APS_PATHS) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_TransportLineProtection_APS_PATHS.
func (e E_TransportLineProtection_APS_PATHS) String() string {
	return ygot.EnumLogString(e, int64(e), "E_TransportLineProtection_APS_PATHS")
}

const (
	// TransportLineProtection_APS_PATHS_UNSET corresponds to the value UNSET of TransportLineProtection_APS_PATHS
	TransportLineProtection_APS_PATHS_UNSET E_TransportLineProtection_APS_PATHS = 0
	// TransportLineProtection_APS_PATHS_PRIMARY corresponds to the value PRIMARY of TransportLineProtection_APS_PATHS
	TransportLineProtection_APS_PATHS_PRIMARY E_TransportLineProtection_APS_PATHS = 1
	// TransportLineProtection_APS_PATHS_SECONDARY corresponds to the value SECONDARY of TransportLineProtection_APS_PATHS
	TransportLineProtection_APS_PATHS_SECONDARY E_TransportLineProtection_APS_PATHS = 2
)

// E_TransportTypes_AdminStateType is a derived int64 type which is used to represent
// the enumerated node TransportTypes_AdminStateType. An additional value named
// TransportTypes_AdminStateType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_TransportTypes_AdminStateType int64

// IsYANGGoEnum ensures that TransportTypes_AdminStateType implements the yang.GoEnum
// interface. This ensures that TransportTypes_AdminStateType can be identified as a
// mapped type for a YANG enumeration.
func (E_TransportTypes_AdminStateType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  TransportTypes_AdminStateType.
func (E_TransportTypes_AdminStateType) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_TransportTypes_AdminStateType.
func (e E_TransportTypes_AdminStateType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_TransportTypes_AdminStateType")
}

const (
	// TransportTypes_AdminStateType_UNSET corresponds to the value UNSET of TransportTypes_AdminStateType
	TransportTypes_AdminStateType_UNSET E_TransportTypes_AdminStateType = 0
	// TransportTypes_AdminStateType_ENABLED corresponds to the value ENABLED of TransportTypes_AdminStateType
	TransportTypes_AdminStateType_ENABLED E_TransportTypes_AdminStateType = 1
	// TransportTypes_AdminStateType_DISABLED corresponds to the value DISABLED of TransportTypes_AdminStateType
	TransportTypes_AdminStateType_DISABLED E_TransportTypes_AdminStateType = 2
	// TransportTypes_AdminStateType_MAINT corresponds to the value MAINT of TransportTypes_AdminStateType
	TransportTypes_AdminStateType_MAINT E_TransportTypes_AdminStateType = 3
)

// E_TransportTypes_CLIENT_MAPPING_MODE is a derived int64 type which is used to represent
// the enumerated node TransportTypes_CLIENT_MAPPING_MODE. An additional value named
// TransportTypes_CLIENT_MAPPING_MODE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_TransportTypes_CLIENT_MAPPING_MODE int64

// IsYANGGoEnum ensures that TransportTypes_CLIENT_MAPPING_MODE implements the yang.GoEnum
// interface. This ensures that TransportTypes_CLIENT_MAPPING_MODE can be identified as a
// mapped type for a YANG enumeration.
func (E_TransportTypes_CLIENT_MAPPING_MODE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  TransportTypes_CLIENT_MAPPING_MODE.
func (E_TransportTypes_CLIENT_MAPPING_MODE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_TransportTypes_CLIENT_MAPPING_MODE.
func (e E_TransportTypes_CLIENT_MAPPING_MODE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_TransportTypes_CLIENT_MAPPING_MODE")
}

const (
	// TransportTypes_CLIENT_MAPPING_MODE_UNSET corresponds to the value UNSET of TransportTypes_CLIENT_MAPPING_MODE
	TransportTypes_CLIENT_MAPPING_MODE_UNSET E_TransportTypes_CLIENT_MAPPING_MODE = 0
	// TransportTypes_CLIENT_MAPPING_MODE_MODE_1X100G corresponds to the value MODE_1X100G of TransportTypes_CLIENT_MAPPING_MODE
	TransportTypes_CLIENT_MAPPING_MODE_MODE_1X100G E_TransportTypes_CLIENT_MAPPING_MODE = 1
	// TransportTypes_CLIENT_MAPPING_MODE_MODE_1X200G corresponds to the value MODE_1X200G of TransportTypes_CLIENT_MAPPING_MODE
	TransportTypes_CLIENT_MAPPING_MODE_MODE_1X200G E_TransportTypes_CLIENT_MAPPING_MODE = 2
	// TransportTypes_CLIENT_MAPPING_MODE_MODE_1X400G corresponds to the value MODE_1X400G of TransportTypes_CLIENT_MAPPING_MODE
	TransportTypes_CLIENT_MAPPING_MODE_MODE_1X400G E_TransportTypes_CLIENT_MAPPING_MODE = 3
	// TransportTypes_CLIENT_MAPPING_MODE_MODE_2X100G corresponds to the value MODE_2X100G of TransportTypes_CLIENT_MAPPING_MODE
	TransportTypes_CLIENT_MAPPING_MODE_MODE_2X100G E_TransportTypes_CLIENT_MAPPING_MODE = 4
	// TransportTypes_CLIENT_MAPPING_MODE_MODE_2X200G corresponds to the value MODE_2X200G of TransportTypes_CLIENT_MAPPING_MODE
	TransportTypes_CLIENT_MAPPING_MODE_MODE_2X200G E_TransportTypes_CLIENT_MAPPING_MODE = 5
	// TransportTypes_CLIENT_MAPPING_MODE_MODE_3X100G corresponds to the value MODE_3X100G of TransportTypes_CLIENT_MAPPING_MODE
	TransportTypes_CLIENT_MAPPING_MODE_MODE_3X100G E_TransportTypes_CLIENT_MAPPING_MODE = 6
	// TransportTypes_CLIENT_MAPPING_MODE_MODE_4X100G corresponds to the value MODE_4X100G of TransportTypes_CLIENT_MAPPING_MODE
	TransportTypes_CLIENT_MAPPING_MODE_MODE_4X100G E_TransportTypes_CLIENT_MAPPING_MODE = 7
)

// E_TransportTypes_ETHERNET_PMD_TYPE is a derived int64 type which is used to represent
// the enumerated node TransportTypes_ETHERNET_PMD_TYPE. An additional value named
// TransportTypes_ETHERNET_PMD_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_TransportTypes_ETHERNET_PMD_TYPE int64

// IsYANGGoEnum ensures that TransportTypes_ETHERNET_PMD_TYPE implements the yang.GoEnum
// interface. This ensures that TransportTypes_ETHERNET_PMD_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_TransportTypes_ETHERNET_PMD_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  TransportTypes_ETHERNET_PMD_TYPE.
func (E_TransportTypes_ETHERNET_PMD_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_TransportTypes_ETHERNET_PMD_TYPE.
func (e E_TransportTypes_ETHERNET_PMD_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_TransportTypes_ETHERNET_PMD_TYPE")
}

const (
	// TransportTypes_ETHERNET_PMD_TYPE_UNSET corresponds to the value UNSET of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_UNSET E_TransportTypes_ETHERNET_PMD_TYPE = 0
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_1000BASE_LX10 corresponds to the value ETH_1000BASE_LX10 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_1000BASE_LX10 E_TransportTypes_ETHERNET_PMD_TYPE = 1
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_CLR4 corresponds to the value ETH_100GBASE_CLR4 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_CLR4 E_TransportTypes_ETHERNET_PMD_TYPE = 2
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_CR4 corresponds to the value ETH_100GBASE_CR4 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_CR4 E_TransportTypes_ETHERNET_PMD_TYPE = 3
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_CWDM4 corresponds to the value ETH_100GBASE_CWDM4 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_CWDM4 E_TransportTypes_ETHERNET_PMD_TYPE = 4
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_DR corresponds to the value ETH_100GBASE_DR of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_DR E_TransportTypes_ETHERNET_PMD_TYPE = 5
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_ER4 corresponds to the value ETH_100GBASE_ER4 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_ER4 E_TransportTypes_ETHERNET_PMD_TYPE = 6
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_ER4L corresponds to the value ETH_100GBASE_ER4L of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_ER4L E_TransportTypes_ETHERNET_PMD_TYPE = 7
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_FR corresponds to the value ETH_100GBASE_FR of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_FR E_TransportTypes_ETHERNET_PMD_TYPE = 8
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_LR4 corresponds to the value ETH_100GBASE_LR4 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_LR4 E_TransportTypes_ETHERNET_PMD_TYPE = 9
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_PSM4 corresponds to the value ETH_100GBASE_PSM4 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_PSM4 E_TransportTypes_ETHERNET_PMD_TYPE = 10
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_SR10 corresponds to the value ETH_100GBASE_SR10 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_SR10 E_TransportTypes_ETHERNET_PMD_TYPE = 11
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_SR4 corresponds to the value ETH_100GBASE_SR4 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_SR4 E_TransportTypes_ETHERNET_PMD_TYPE = 12
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_100G_ACC corresponds to the value ETH_100G_ACC of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_100G_ACC E_TransportTypes_ETHERNET_PMD_TYPE = 13
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_100G_AOC corresponds to the value ETH_100G_AOC of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_100G_AOC E_TransportTypes_ETHERNET_PMD_TYPE = 14
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_ER corresponds to the value ETH_10GBASE_ER of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_ER E_TransportTypes_ETHERNET_PMD_TYPE = 15
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_LR corresponds to the value ETH_10GBASE_LR of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_LR E_TransportTypes_ETHERNET_PMD_TYPE = 16
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_LRM corresponds to the value ETH_10GBASE_LRM of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_LRM E_TransportTypes_ETHERNET_PMD_TYPE = 17
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_SR corresponds to the value ETH_10GBASE_SR of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_SR E_TransportTypes_ETHERNET_PMD_TYPE = 18
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_ZR corresponds to the value ETH_10GBASE_ZR of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_ZR E_TransportTypes_ETHERNET_PMD_TYPE = 19
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_400GBASE_DR4 corresponds to the value ETH_400GBASE_DR4 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_400GBASE_DR4 E_TransportTypes_ETHERNET_PMD_TYPE = 20
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_400GBASE_FR4 corresponds to the value ETH_400GBASE_FR4 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_400GBASE_FR4 E_TransportTypes_ETHERNET_PMD_TYPE = 21
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_400GBASE_LR4 corresponds to the value ETH_400GBASE_LR4 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_400GBASE_LR4 E_TransportTypes_ETHERNET_PMD_TYPE = 22
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_400GBASE_LR8 corresponds to the value ETH_400GBASE_LR8 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_400GBASE_LR8 E_TransportTypes_ETHERNET_PMD_TYPE = 23
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_400GBASE_ZR corresponds to the value ETH_400GBASE_ZR of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_400GBASE_ZR E_TransportTypes_ETHERNET_PMD_TYPE = 24
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_400GMSA_PSM4 corresponds to the value ETH_400GMSA_PSM4 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_400GMSA_PSM4 E_TransportTypes_ETHERNET_PMD_TYPE = 25
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_CR4 corresponds to the value ETH_40GBASE_CR4 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_CR4 E_TransportTypes_ETHERNET_PMD_TYPE = 26
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_ER4 corresponds to the value ETH_40GBASE_ER4 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_ER4 E_TransportTypes_ETHERNET_PMD_TYPE = 27
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_LR4 corresponds to the value ETH_40GBASE_LR4 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_LR4 E_TransportTypes_ETHERNET_PMD_TYPE = 28
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_PSM4 corresponds to the value ETH_40GBASE_PSM4 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_PSM4 E_TransportTypes_ETHERNET_PMD_TYPE = 29
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_SR4 corresponds to the value ETH_40GBASE_SR4 of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_SR4 E_TransportTypes_ETHERNET_PMD_TYPE = 30
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_4X10GBASE_LR corresponds to the value ETH_4X10GBASE_LR of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_4X10GBASE_LR E_TransportTypes_ETHERNET_PMD_TYPE = 31
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_4X10GBASE_SR corresponds to the value ETH_4X10GBASE_SR of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_4X10GBASE_SR E_TransportTypes_ETHERNET_PMD_TYPE = 32
	// TransportTypes_ETHERNET_PMD_TYPE_ETH_UNDEFINED corresponds to the value ETH_UNDEFINED of TransportTypes_ETHERNET_PMD_TYPE
	TransportTypes_ETHERNET_PMD_TYPE_ETH_UNDEFINED E_TransportTypes_ETHERNET_PMD_TYPE = 33
)

// E_TransportTypes_FIBER_CONNECTOR_TYPE is a derived int64 type which is used to represent
// the enumerated node TransportTypes_FIBER_CONNECTOR_TYPE. An additional value named
// TransportTypes_FIBER_CONNECTOR_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_TransportTypes_FIBER_CONNECTOR_TYPE int64

// IsYANGGoEnum ensures that TransportTypes_FIBER_CONNECTOR_TYPE implements the yang.GoEnum
// interface. This ensures that TransportTypes_FIBER_CONNECTOR_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_TransportTypes_FIBER_CONNECTOR_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  TransportTypes_FIBER_CONNECTOR_TYPE.
func (E_TransportTypes_FIBER_CONNECTOR_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_TransportTypes_FIBER_CONNECTOR_TYPE.
func (e E_TransportTypes_FIBER_CONNECTOR_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_TransportTypes_FIBER_CONNECTOR_TYPE")
}

const (
	// TransportTypes_FIBER_CONNECTOR_TYPE_UNSET corresponds to the value UNSET of TransportTypes_FIBER_CONNECTOR_TYPE
	TransportTypes_FIBER_CONNECTOR_TYPE_UNSET E_TransportTypes_FIBER_CONNECTOR_TYPE = 0
	// TransportTypes_FIBER_CONNECTOR_TYPE_AOC_CONNECTOR corresponds to the value AOC_CONNECTOR of TransportTypes_FIBER_CONNECTOR_TYPE
	TransportTypes_FIBER_CONNECTOR_TYPE_AOC_CONNECTOR E_TransportTypes_FIBER_CONNECTOR_TYPE = 1
	// TransportTypes_FIBER_CONNECTOR_TYPE_DAC_CONNECTOR corresponds to the value DAC_CONNECTOR of TransportTypes_FIBER_CONNECTOR_TYPE
	TransportTypes_FIBER_CONNECTOR_TYPE_DAC_CONNECTOR E_TransportTypes_FIBER_CONNECTOR_TYPE = 2
	// TransportTypes_FIBER_CONNECTOR_TYPE_LC_CONNECTOR corresponds to the value LC_CONNECTOR of TransportTypes_FIBER_CONNECTOR_TYPE
	TransportTypes_FIBER_CONNECTOR_TYPE_LC_CONNECTOR E_TransportTypes_FIBER_CONNECTOR_TYPE = 3
	// TransportTypes_FIBER_CONNECTOR_TYPE_MPO_CONNECTOR corresponds to the value MPO_CONNECTOR of TransportTypes_FIBER_CONNECTOR_TYPE
	TransportTypes_FIBER_CONNECTOR_TYPE_MPO_CONNECTOR E_TransportTypes_FIBER_CONNECTOR_TYPE = 4
	// TransportTypes_FIBER_CONNECTOR_TYPE_SC_CONNECTOR corresponds to the value SC_CONNECTOR of TransportTypes_FIBER_CONNECTOR_TYPE
	TransportTypes_FIBER_CONNECTOR_TYPE_SC_CONNECTOR E_TransportTypes_FIBER_CONNECTOR_TYPE = 5
)

// E_TransportTypes_FRAME_MAPPING_PROTOCOL is a derived int64 type which is used to represent
// the enumerated node TransportTypes_FRAME_MAPPING_PROTOCOL. An additional value named
// TransportTypes_FRAME_MAPPING_PROTOCOL_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_TransportTypes_FRAME_MAPPING_PROTOCOL int64

// IsYANGGoEnum ensures that TransportTypes_FRAME_MAPPING_PROTOCOL implements the yang.GoEnum
// interface. This ensures that TransportTypes_FRAME_MAPPING_PROTOCOL can be identified as a
// mapped type for a YANG enumeration.
func (E_TransportTypes_FRAME_MAPPING_PROTOCOL) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  TransportTypes_FRAME_MAPPING_PROTOCOL.
func (E_TransportTypes_FRAME_MAPPING_PROTOCOL) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_TransportTypes_FRAME_MAPPING_PROTOCOL.
func (e E_TransportTypes_FRAME_MAPPING_PROTOCOL) String() string {
	return ygot.EnumLogString(e, int64(e), "E_TransportTypes_FRAME_MAPPING_PROTOCOL")
}

const (
	// TransportTypes_FRAME_MAPPING_PROTOCOL_UNSET corresponds to the value UNSET of TransportTypes_FRAME_MAPPING_PROTOCOL
	TransportTypes_FRAME_MAPPING_PROTOCOL_UNSET E_TransportTypes_FRAME_MAPPING_PROTOCOL = 0
	// TransportTypes_FRAME_MAPPING_PROTOCOL_AMP corresponds to the value AMP of TransportTypes_FRAME_MAPPING_PROTOCOL
	TransportTypes_FRAME_MAPPING_PROTOCOL_AMP E_TransportTypes_FRAME_MAPPING_PROTOCOL = 1
	// TransportTypes_FRAME_MAPPING_PROTOCOL_BMP corresponds to the value BMP of TransportTypes_FRAME_MAPPING_PROTOCOL
	TransportTypes_FRAME_MAPPING_PROTOCOL_BMP E_TransportTypes_FRAME_MAPPING_PROTOCOL = 2
	// TransportTypes_FRAME_MAPPING_PROTOCOL_CBR corresponds to the value CBR of TransportTypes_FRAME_MAPPING_PROTOCOL
	TransportTypes_FRAME_MAPPING_PROTOCOL_CBR E_TransportTypes_FRAME_MAPPING_PROTOCOL = 3
	// TransportTypes_FRAME_MAPPING_PROTOCOL_GFP_F corresponds to the value GFP_F of TransportTypes_FRAME_MAPPING_PROTOCOL
	TransportTypes_FRAME_MAPPING_PROTOCOL_GFP_F E_TransportTypes_FRAME_MAPPING_PROTOCOL = 4
	// TransportTypes_FRAME_MAPPING_PROTOCOL_GFP_T corresponds to the value GFP_T of TransportTypes_FRAME_MAPPING_PROTOCOL
	TransportTypes_FRAME_MAPPING_PROTOCOL_GFP_T E_TransportTypes_FRAME_MAPPING_PROTOCOL = 5
	// TransportTypes_FRAME_MAPPING_PROTOCOL_GMP corresponds to the value GMP of TransportTypes_FRAME_MAPPING_PROTOCOL
	TransportTypes_FRAME_MAPPING_PROTOCOL_GMP E_TransportTypes_FRAME_MAPPING_PROTOCOL = 6
)

// E_TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE is a derived int64 type which is used to represent
// the enumerated node TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE. An additional value named
// TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE int64

// IsYANGGoEnum ensures that TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE implements the yang.GoEnum
// interface. This ensures that TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE.
func (E_TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE.
func (e E_TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE")
}

const (
	// TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE_UNSET corresponds to the value UNSET of TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE
	TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE_UNSET E_TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE = 0
	// TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE_PROT_ETHERNET corresponds to the value PROT_ETHERNET of TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE
	TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE_PROT_ETHERNET E_TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE = 1
	// TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE_PROT_OTN corresponds to the value PROT_OTN of TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE
	TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE_PROT_OTN E_TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE = 2
)

// E_TransportTypes_LoopbackModeType is a derived int64 type which is used to represent
// the enumerated node TransportTypes_LoopbackModeType. An additional value named
// TransportTypes_LoopbackModeType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_TransportTypes_LoopbackModeType int64

// IsYANGGoEnum ensures that TransportTypes_LoopbackModeType implements the yang.GoEnum
// interface. This ensures that TransportTypes_LoopbackModeType can be identified as a
// mapped type for a YANG enumeration.
func (E_TransportTypes_LoopbackModeType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  TransportTypes_LoopbackModeType.
func (E_TransportTypes_LoopbackModeType) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_TransportTypes_LoopbackModeType.
func (e E_TransportTypes_LoopbackModeType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_TransportTypes_LoopbackModeType")
}

const (
	// TransportTypes_LoopbackModeType_UNSET corresponds to the value UNSET of TransportTypes_LoopbackModeType
	TransportTypes_LoopbackModeType_UNSET E_TransportTypes_LoopbackModeType = 0
	// TransportTypes_LoopbackModeType_NONE corresponds to the value NONE of TransportTypes_LoopbackModeType
	TransportTypes_LoopbackModeType_NONE E_TransportTypes_LoopbackModeType = 1
	// TransportTypes_LoopbackModeType_FACILITY corresponds to the value FACILITY of TransportTypes_LoopbackModeType
	TransportTypes_LoopbackModeType_FACILITY E_TransportTypes_LoopbackModeType = 2
	// TransportTypes_LoopbackModeType_TERMINAL corresponds to the value TERMINAL of TransportTypes_LoopbackModeType
	TransportTypes_LoopbackModeType_TERMINAL E_TransportTypes_LoopbackModeType = 3
	// TransportTypes_LoopbackModeType_ASIC_PHY_LOCAL corresponds to the value ASIC_PHY_LOCAL of TransportTypes_LoopbackModeType
	TransportTypes_LoopbackModeType_ASIC_PHY_LOCAL E_TransportTypes_LoopbackModeType = 4
	// TransportTypes_LoopbackModeType_ASIC_PHY_REMOTE corresponds to the value ASIC_PHY_REMOTE of TransportTypes_LoopbackModeType
	TransportTypes_LoopbackModeType_ASIC_PHY_REMOTE E_TransportTypes_LoopbackModeType = 5
	// TransportTypes_LoopbackModeType_ASIC_MAC_LOCAL corresponds to the value ASIC_MAC_LOCAL of TransportTypes_LoopbackModeType
	TransportTypes_LoopbackModeType_ASIC_MAC_LOCAL E_TransportTypes_LoopbackModeType = 6
	// TransportTypes_LoopbackModeType_ASIC_MAC_REMOTE corresponds to the value ASIC_MAC_REMOTE of TransportTypes_LoopbackModeType
	TransportTypes_LoopbackModeType_ASIC_MAC_REMOTE E_TransportTypes_LoopbackModeType = 7
)

// E_TransportTypes_OPTICAL_PORT_TYPE is a derived int64 type which is used to represent
// the enumerated node TransportTypes_OPTICAL_PORT_TYPE. An additional value named
// TransportTypes_OPTICAL_PORT_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_TransportTypes_OPTICAL_PORT_TYPE int64

// IsYANGGoEnum ensures that TransportTypes_OPTICAL_PORT_TYPE implements the yang.GoEnum
// interface. This ensures that TransportTypes_OPTICAL_PORT_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_TransportTypes_OPTICAL_PORT_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  TransportTypes_OPTICAL_PORT_TYPE.
func (E_TransportTypes_OPTICAL_PORT_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_TransportTypes_OPTICAL_PORT_TYPE.
func (e E_TransportTypes_OPTICAL_PORT_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_TransportTypes_OPTICAL_PORT_TYPE")
}

const (
	// TransportTypes_OPTICAL_PORT_TYPE_UNSET corresponds to the value UNSET of TransportTypes_OPTICAL_PORT_TYPE
	TransportTypes_OPTICAL_PORT_TYPE_UNSET E_TransportTypes_OPTICAL_PORT_TYPE = 0
	// TransportTypes_OPTICAL_PORT_TYPE_ADD corresponds to the value ADD of TransportTypes_OPTICAL_PORT_TYPE
	TransportTypes_OPTICAL_PORT_TYPE_ADD E_TransportTypes_OPTICAL_PORT_TYPE = 1
	// TransportTypes_OPTICAL_PORT_TYPE_DROP corresponds to the value DROP of TransportTypes_OPTICAL_PORT_TYPE
	TransportTypes_OPTICAL_PORT_TYPE_DROP E_TransportTypes_OPTICAL_PORT_TYPE = 2
	// TransportTypes_OPTICAL_PORT_TYPE_EGRESS corresponds to the value EGRESS of TransportTypes_OPTICAL_PORT_TYPE
	TransportTypes_OPTICAL_PORT_TYPE_EGRESS E_TransportTypes_OPTICAL_PORT_TYPE = 3
	// TransportTypes_OPTICAL_PORT_TYPE_INGRESS corresponds to the value INGRESS of TransportTypes_OPTICAL_PORT_TYPE
	TransportTypes_OPTICAL_PORT_TYPE_INGRESS E_TransportTypes_OPTICAL_PORT_TYPE = 4
	// TransportTypes_OPTICAL_PORT_TYPE_MONITOR corresponds to the value MONITOR of TransportTypes_OPTICAL_PORT_TYPE
	TransportTypes_OPTICAL_PORT_TYPE_MONITOR E_TransportTypes_OPTICAL_PORT_TYPE = 5
	// TransportTypes_OPTICAL_PORT_TYPE_TERMINAL_CLIENT corresponds to the value TERMINAL_CLIENT of TransportTypes_OPTICAL_PORT_TYPE
	TransportTypes_OPTICAL_PORT_TYPE_TERMINAL_CLIENT E_TransportTypes_OPTICAL_PORT_TYPE = 6
	// TransportTypes_OPTICAL_PORT_TYPE_TERMINAL_LINE corresponds to the value TERMINAL_LINE of TransportTypes_OPTICAL_PORT_TYPE
	TransportTypes_OPTICAL_PORT_TYPE_TERMINAL_LINE E_TransportTypes_OPTICAL_PORT_TYPE = 7
)

// E_TransportTypes_OTN_APPLICATION_CODE is a derived int64 type which is used to represent
// the enumerated node TransportTypes_OTN_APPLICATION_CODE. An additional value named
// TransportTypes_OTN_APPLICATION_CODE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_TransportTypes_OTN_APPLICATION_CODE int64

// IsYANGGoEnum ensures that TransportTypes_OTN_APPLICATION_CODE implements the yang.GoEnum
// interface. This ensures that TransportTypes_OTN_APPLICATION_CODE can be identified as a
// mapped type for a YANG enumeration.
func (E_TransportTypes_OTN_APPLICATION_CODE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  TransportTypes_OTN_APPLICATION_CODE.
func (E_TransportTypes_OTN_APPLICATION_CODE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_TransportTypes_OTN_APPLICATION_CODE.
func (e E_TransportTypes_OTN_APPLICATION_CODE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_TransportTypes_OTN_APPLICATION_CODE")
}

const (
	// TransportTypes_OTN_APPLICATION_CODE_UNSET corresponds to the value UNSET of TransportTypes_OTN_APPLICATION_CODE
	TransportTypes_OTN_APPLICATION_CODE_UNSET E_TransportTypes_OTN_APPLICATION_CODE = 0
	// TransportTypes_OTN_APPLICATION_CODE_OTN_UNDEFINED corresponds to the value OTN_UNDEFINED of TransportTypes_OTN_APPLICATION_CODE
	TransportTypes_OTN_APPLICATION_CODE_OTN_UNDEFINED E_TransportTypes_OTN_APPLICATION_CODE = 1
	// TransportTypes_OTN_APPLICATION_CODE_P1L1_2D1 corresponds to the value P1L1_2D1 of TransportTypes_OTN_APPLICATION_CODE
	TransportTypes_OTN_APPLICATION_CODE_P1L1_2D1 E_TransportTypes_OTN_APPLICATION_CODE = 2
	// TransportTypes_OTN_APPLICATION_CODE_P1L1_2D2 corresponds to the value P1L1_2D2 of TransportTypes_OTN_APPLICATION_CODE
	TransportTypes_OTN_APPLICATION_CODE_P1L1_2D2 E_TransportTypes_OTN_APPLICATION_CODE = 3
	// TransportTypes_OTN_APPLICATION_CODE_P1S1_2D2 corresponds to the value P1S1_2D2 of TransportTypes_OTN_APPLICATION_CODE
	TransportTypes_OTN_APPLICATION_CODE_P1S1_2D2 E_TransportTypes_OTN_APPLICATION_CODE = 4
)

// E_TransportTypes_SONET_APPLICATION_CODE is a derived int64 type which is used to represent
// the enumerated node TransportTypes_SONET_APPLICATION_CODE. An additional value named
// TransportTypes_SONET_APPLICATION_CODE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_TransportTypes_SONET_APPLICATION_CODE int64

// IsYANGGoEnum ensures that TransportTypes_SONET_APPLICATION_CODE implements the yang.GoEnum
// interface. This ensures that TransportTypes_SONET_APPLICATION_CODE can be identified as a
// mapped type for a YANG enumeration.
func (E_TransportTypes_SONET_APPLICATION_CODE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  TransportTypes_SONET_APPLICATION_CODE.
func (E_TransportTypes_SONET_APPLICATION_CODE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_TransportTypes_SONET_APPLICATION_CODE.
func (e E_TransportTypes_SONET_APPLICATION_CODE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_TransportTypes_SONET_APPLICATION_CODE")
}

const (
	// TransportTypes_SONET_APPLICATION_CODE_UNSET corresponds to the value UNSET of TransportTypes_SONET_APPLICATION_CODE
	TransportTypes_SONET_APPLICATION_CODE_UNSET E_TransportTypes_SONET_APPLICATION_CODE = 0
	// TransportTypes_SONET_APPLICATION_CODE_SONET_UNDEFINED corresponds to the value SONET_UNDEFINED of TransportTypes_SONET_APPLICATION_CODE
	TransportTypes_SONET_APPLICATION_CODE_SONET_UNDEFINED E_TransportTypes_SONET_APPLICATION_CODE = 1
	// TransportTypes_SONET_APPLICATION_CODE_VSR2000_3R2 corresponds to the value VSR2000_3R2 of TransportTypes_SONET_APPLICATION_CODE
	TransportTypes_SONET_APPLICATION_CODE_VSR2000_3R2 E_TransportTypes_SONET_APPLICATION_CODE = 2
	// TransportTypes_SONET_APPLICATION_CODE_VSR2000_3R3 corresponds to the value VSR2000_3R3 of TransportTypes_SONET_APPLICATION_CODE
	TransportTypes_SONET_APPLICATION_CODE_VSR2000_3R3 E_TransportTypes_SONET_APPLICATION_CODE = 3
	// TransportTypes_SONET_APPLICATION_CODE_VSR2000_3R5 corresponds to the value VSR2000_3R5 of TransportTypes_SONET_APPLICATION_CODE
	TransportTypes_SONET_APPLICATION_CODE_VSR2000_3R5 E_TransportTypes_SONET_APPLICATION_CODE = 4
)

// E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE is a derived int64 type which is used to represent
// the enumerated node TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE. An additional value named
// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE int64

// IsYANGGoEnum ensures that TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE implements the yang.GoEnum
// interface. This ensures that TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE.
func (E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE.
func (e E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE")
}

const (
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_UNSET corresponds to the value UNSET of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_UNSET E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 0
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CFP corresponds to the value CFP of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CFP E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 1
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CFP2 corresponds to the value CFP2 of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CFP2 E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 2
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CFP2_ACO corresponds to the value CFP2_ACO of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CFP2_ACO E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 3
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CFP4 corresponds to the value CFP4 of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CFP4 E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 4
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CPAK corresponds to the value CPAK of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CPAK E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 5
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CSFP corresponds to the value CSFP of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CSFP E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 6
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_DSFP corresponds to the value DSFP of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_DSFP E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 7
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_NON_PLUGGABLE corresponds to the value NON_PLUGGABLE of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_NON_PLUGGABLE E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 8
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_OSFP corresponds to the value OSFP of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_OSFP E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 9
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_OTHER corresponds to the value OTHER of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_OTHER E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 10
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP corresponds to the value QSFP of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 11
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP28 corresponds to the value QSFP28 of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP28 E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 12
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP28_DD corresponds to the value QSFP28_DD of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP28_DD E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 13
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP56 corresponds to the value QSFP56 of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP56 E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 14
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP56_DD corresponds to the value QSFP56_DD of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP56_DD E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 15
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP56_DD_TYPE1 corresponds to the value QSFP56_DD_TYPE1 of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP56_DD_TYPE1 E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 16
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP56_DD_TYPE2 corresponds to the value QSFP56_DD_TYPE2 of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP56_DD_TYPE2 E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 17
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP_PLUS corresponds to the value QSFP_PLUS of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP_PLUS E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 18
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_SFP corresponds to the value SFP of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_SFP E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 19
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_SFP28 corresponds to the value SFP28 of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_SFP28 E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 20
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_SFP56 corresponds to the value SFP56 of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_SFP56 E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 21
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_SFP_DD corresponds to the value SFP_DD of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_SFP_DD E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 22
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_SFP_PLUS corresponds to the value SFP_PLUS of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_SFP_PLUS E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 23
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_X2 corresponds to the value X2 of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_X2 E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 24
	// TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_XFP corresponds to the value XFP of TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE
	TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_XFP E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 25
)

// E_TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE is a derived int64 type which is used to represent
// the enumerated node TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE. An additional value named
// TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE int64

// IsYANGGoEnum ensures that TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE implements the yang.GoEnum
// interface. This ensures that TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE.
func (E_TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE.
func (e E_TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE")
}

const (
	// TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE_UNSET corresponds to the value UNSET of TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE
	TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE_UNSET E_TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE = 0
	// TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE_TYPE_DIGITAL_COHERENT_OPTIC corresponds to the value TYPE_DIGITAL_COHERENT_OPTIC of TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE
	TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE_TYPE_DIGITAL_COHERENT_OPTIC E_TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE = 1
	// TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE_TYPE_STANDARD_OPTIC corresponds to the value TYPE_STANDARD_OPTIC of TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE
	TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE_TYPE_STANDARD_OPTIC E_TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE = 2
)

// E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE is a derived int64 type which is used to represent
// the enumerated node TransportTypes_TRIBUTARY_PROTOCOL_TYPE. An additional value named
// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE int64

// IsYANGGoEnum ensures that TransportTypes_TRIBUTARY_PROTOCOL_TYPE implements the yang.GoEnum
// interface. This ensures that TransportTypes_TRIBUTARY_PROTOCOL_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  TransportTypes_TRIBUTARY_PROTOCOL_TYPE.
func (E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE.
func (e E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE")
}

const (
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_UNSET corresponds to the value UNSET of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_UNSET E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 0
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_100GE corresponds to the value PROT_100GE of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_100GE E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 1
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_100G_MLG corresponds to the value PROT_100G_MLG of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_100G_MLG E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 2
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_10GE_LAN corresponds to the value PROT_10GE_LAN of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_10GE_LAN E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 3
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_10GE_WAN corresponds to the value PROT_10GE_WAN of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_10GE_WAN E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 4
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_1GE corresponds to the value PROT_1GE of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_1GE E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 5
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_400GE corresponds to the value PROT_400GE of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_400GE E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 6
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_40GE corresponds to the value PROT_40GE of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_40GE E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 7
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_800GE corresponds to the value PROT_800GE of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_800GE E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 8
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_FLEXO corresponds to the value PROT_FLEXO of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_FLEXO E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 9
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OC192 corresponds to the value PROT_OC192 of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OC192 E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 10
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OC48 corresponds to the value PROT_OC48 of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OC48 E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 11
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OC768 corresponds to the value PROT_OC768 of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OC768 E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 12
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODU2 corresponds to the value PROT_ODU2 of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODU2 E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 13
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODU2E corresponds to the value PROT_ODU2E of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODU2E E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 14
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODU3 corresponds to the value PROT_ODU3 of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODU3 E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 15
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODU4 corresponds to the value PROT_ODU4 of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODU4 E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 16
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODUCN corresponds to the value PROT_ODUCN of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODUCN E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 17
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODUFLEX_CBR corresponds to the value PROT_ODUFLEX_CBR of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODUFLEX_CBR E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 18
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODUFLEX_GFP corresponds to the value PROT_ODUFLEX_GFP of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODUFLEX_GFP E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 19
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTSIG corresponds to the value PROT_OTSIG of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTSIG E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 20
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU1E corresponds to the value PROT_OTU1E of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU1E E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 21
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU2 corresponds to the value PROT_OTU2 of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU2 E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 22
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU2E corresponds to the value PROT_OTU2E of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU2E E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 23
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU3 corresponds to the value PROT_OTU3 of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU3 E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 24
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU4 corresponds to the value PROT_OTU4 of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU4 E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 25
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTUCN corresponds to the value PROT_OTUCN of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTUCN E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 26
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_STM16 corresponds to the value PROT_STM16 of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_STM16 E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 27
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_STM256 corresponds to the value PROT_STM256 of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_STM256 E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 28
	// TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_STM64 corresponds to the value PROT_STM64 of TransportTypes_TRIBUTARY_PROTOCOL_TYPE
	TransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_STM64 E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE = 29
)

// E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE is a derived int64 type which is used to represent
// the enumerated node TransportTypes_TRIBUTARY_RATE_CLASS_TYPE. An additional value named
// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE int64

// IsYANGGoEnum ensures that TransportTypes_TRIBUTARY_RATE_CLASS_TYPE implements the yang.GoEnum
// interface. This ensures that TransportTypes_TRIBUTARY_RATE_CLASS_TYPE can be identified as a
// mapped type for a YANG enumeration.
func (E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  TransportTypes_TRIBUTARY_RATE_CLASS_TYPE.
func (E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE.
func (e E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE) String() string {
	return ygot.EnumLogString(e, int64(e), "E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE")
}

const (
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_UNSET corresponds to the value UNSET of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_UNSET E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 0
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1000G corresponds to the value TRIB_RATE_1000G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1000G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 1
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_100G corresponds to the value TRIB_RATE_100G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_100G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 2
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1050G corresponds to the value TRIB_RATE_1050G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1050G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 3
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_10G corresponds to the value TRIB_RATE_10G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_10G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 4
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1100G corresponds to the value TRIB_RATE_1100G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1100G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 5
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1150G corresponds to the value TRIB_RATE_1150G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1150G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 6
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1200G corresponds to the value TRIB_RATE_1200G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1200G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 7
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1250G corresponds to the value TRIB_RATE_1250G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1250G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 8
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1300G corresponds to the value TRIB_RATE_1300G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1300G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 9
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1350G corresponds to the value TRIB_RATE_1350G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1350G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 10
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1400G corresponds to the value TRIB_RATE_1400G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1400G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 11
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1450G corresponds to the value TRIB_RATE_1450G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1450G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 12
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1500G corresponds to the value TRIB_RATE_1500G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1500G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 13
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_150G corresponds to the value TRIB_RATE_150G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_150G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 14
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1550G corresponds to the value TRIB_RATE_1550G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1550G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 15
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1600G corresponds to the value TRIB_RATE_1600G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1600G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 16
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1650G corresponds to the value TRIB_RATE_1650G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1650G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 17
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1700G corresponds to the value TRIB_RATE_1700G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1700G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 18
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1750G corresponds to the value TRIB_RATE_1750G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1750G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 19
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1800G corresponds to the value TRIB_RATE_1800G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1800G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 20
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1850G corresponds to the value TRIB_RATE_1850G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1850G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 21
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1900G corresponds to the value TRIB_RATE_1900G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1900G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 22
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1950G corresponds to the value TRIB_RATE_1950G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1950G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 23
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1G corresponds to the value TRIB_RATE_1G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 24
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2_5G corresponds to the value TRIB_RATE_2_5G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2_5G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 25
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2000G corresponds to the value TRIB_RATE_2000G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2000G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 26
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_200G corresponds to the value TRIB_RATE_200G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_200G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 27
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2050G corresponds to the value TRIB_RATE_2050G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2050G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 28
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2100G corresponds to the value TRIB_RATE_2100G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2100G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 29
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2150G corresponds to the value TRIB_RATE_2150G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2150G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 30
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2200G corresponds to the value TRIB_RATE_2200G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2200G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 31
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2250G corresponds to the value TRIB_RATE_2250G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2250G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 32
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2300G corresponds to the value TRIB_RATE_2300G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2300G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 33
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2350G corresponds to the value TRIB_RATE_2350G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2350G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 34
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2400G corresponds to the value TRIB_RATE_2400G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2400G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 35
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2450G corresponds to the value TRIB_RATE_2450G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2450G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 36
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2500G corresponds to the value TRIB_RATE_2500G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2500G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 37
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_250G corresponds to the value TRIB_RATE_250G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_250G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 38
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2550G corresponds to the value TRIB_RATE_2550G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2550G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 39
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2600G corresponds to the value TRIB_RATE_2600G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2600G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 40
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2650G corresponds to the value TRIB_RATE_2650G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2650G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 41
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2700G corresponds to the value TRIB_RATE_2700G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2700G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 42
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2750G corresponds to the value TRIB_RATE_2750G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2750G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 43
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2800G corresponds to the value TRIB_RATE_2800G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2800G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 44
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2850G corresponds to the value TRIB_RATE_2850G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2850G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 45
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2900G corresponds to the value TRIB_RATE_2900G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2900G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 46
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2950G corresponds to the value TRIB_RATE_2950G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2950G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 47
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_3000G corresponds to the value TRIB_RATE_3000G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_3000G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 48
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_300G corresponds to the value TRIB_RATE_300G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_300G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 49
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_3050G corresponds to the value TRIB_RATE_3050G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_3050G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 50
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_3100G corresponds to the value TRIB_RATE_3100G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_3100G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 51
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_3150G corresponds to the value TRIB_RATE_3150G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_3150G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 52
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_3200G corresponds to the value TRIB_RATE_3200G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_3200G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 53
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_350G corresponds to the value TRIB_RATE_350G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_350G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 54
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_400G corresponds to the value TRIB_RATE_400G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_400G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 55
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_40G corresponds to the value TRIB_RATE_40G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_40G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 56
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_450G corresponds to the value TRIB_RATE_450G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_450G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 57
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_500G corresponds to the value TRIB_RATE_500G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_500G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 58
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_550G corresponds to the value TRIB_RATE_550G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_550G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 59
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_600G corresponds to the value TRIB_RATE_600G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_600G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 60
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_650G corresponds to the value TRIB_RATE_650G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_650G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 61
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_700G corresponds to the value TRIB_RATE_700G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_700G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 62
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_750G corresponds to the value TRIB_RATE_750G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_750G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 63
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_800G corresponds to the value TRIB_RATE_800G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_800G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 64
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_850G corresponds to the value TRIB_RATE_850G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_850G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 65
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_900G corresponds to the value TRIB_RATE_900G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_900G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 66
	// TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_950G corresponds to the value TRIB_RATE_950G of TransportTypes_TRIBUTARY_RATE_CLASS_TYPE
	TransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_950G E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 67
)

// E_TransportTypes_TRIBUTARY_SLOT_GRANULARITY is a derived int64 type which is used to represent
// the enumerated node TransportTypes_TRIBUTARY_SLOT_GRANULARITY. An additional value named
// TransportTypes_TRIBUTARY_SLOT_GRANULARITY_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_TransportTypes_TRIBUTARY_SLOT_GRANULARITY int64

// IsYANGGoEnum ensures that TransportTypes_TRIBUTARY_SLOT_GRANULARITY implements the yang.GoEnum
// interface. This ensures that TransportTypes_TRIBUTARY_SLOT_GRANULARITY can be identified as a
// mapped type for a YANG enumeration.
func (E_TransportTypes_TRIBUTARY_SLOT_GRANULARITY) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  TransportTypes_TRIBUTARY_SLOT_GRANULARITY.
func (E_TransportTypes_TRIBUTARY_SLOT_GRANULARITY) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_TransportTypes_TRIBUTARY_SLOT_GRANULARITY.
func (e E_TransportTypes_TRIBUTARY_SLOT_GRANULARITY) String() string {
	return ygot.EnumLogString(e, int64(e), "E_TransportTypes_TRIBUTARY_SLOT_GRANULARITY")
}

const (
	// TransportTypes_TRIBUTARY_SLOT_GRANULARITY_UNSET corresponds to the value UNSET of TransportTypes_TRIBUTARY_SLOT_GRANULARITY
	TransportTypes_TRIBUTARY_SLOT_GRANULARITY_UNSET E_TransportTypes_TRIBUTARY_SLOT_GRANULARITY = 0
	// TransportTypes_TRIBUTARY_SLOT_GRANULARITY_TRIB_SLOT_1_25G corresponds to the value TRIB_SLOT_1_25G of TransportTypes_TRIBUTARY_SLOT_GRANULARITY
	TransportTypes_TRIBUTARY_SLOT_GRANULARITY_TRIB_SLOT_1_25G E_TransportTypes_TRIBUTARY_SLOT_GRANULARITY = 1
	// TransportTypes_TRIBUTARY_SLOT_GRANULARITY_TRIB_SLOT_2_5G corresponds to the value TRIB_SLOT_2_5G of TransportTypes_TRIBUTARY_SLOT_GRANULARITY
	TransportTypes_TRIBUTARY_SLOT_GRANULARITY_TRIB_SLOT_2_5G E_TransportTypes_TRIBUTARY_SLOT_GRANULARITY = 2
	// TransportTypes_TRIBUTARY_SLOT_GRANULARITY_TRIB_SLOT_5G corresponds to the value TRIB_SLOT_5G of TransportTypes_TRIBUTARY_SLOT_GRANULARITY
	TransportTypes_TRIBUTARY_SLOT_GRANULARITY_TRIB_SLOT_5G E_TransportTypes_TRIBUTARY_SLOT_GRANULARITY = 3
)

// E_Transport_BuiltinDetail is a derived int64 type which is used to represent
// the enumerated node Transport_BuiltinDetail. An additional value named
// Transport_BuiltinDetail_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Transport_BuiltinDetail int64

// IsYANGGoEnum ensures that Transport_BuiltinDetail implements the yang.GoEnum
// interface. This ensures that Transport_BuiltinDetail can be identified as a
// mapped type for a YANG enumeration.
func (E_Transport_BuiltinDetail) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Transport_BuiltinDetail.
func (E_Transport_BuiltinDetail) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Transport_BuiltinDetail.
func (e E_Transport_BuiltinDetail) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Transport_BuiltinDetail")
}

const (
	// Transport_BuiltinDetail_UNSET corresponds to the value UNSET of Transport_BuiltinDetail
	Transport_BuiltinDetail_UNSET E_Transport_BuiltinDetail = 0
	// Transport_BuiltinDetail_TCP_INITIAL corresponds to the value TCP_INITIAL of Transport_BuiltinDetail
	Transport_BuiltinDetail_TCP_INITIAL E_Transport_BuiltinDetail = 1
	// Transport_BuiltinDetail_TCP_ESTABLISHED corresponds to the value TCP_ESTABLISHED of Transport_BuiltinDetail
	Transport_BuiltinDetail_TCP_ESTABLISHED E_Transport_BuiltinDetail = 2
	// Transport_BuiltinDetail_FRAGMENT corresponds to the value FRAGMENT of Transport_BuiltinDetail
	Transport_BuiltinDetail_FRAGMENT E_Transport_BuiltinDetail = 3
)

// E_Transport_DetailMode is a derived int64 type which is used to represent
// the enumerated node Transport_DetailMode. An additional value named
// Transport_DetailMode_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Transport_DetailMode int64

// IsYANGGoEnum ensures that Transport_DetailMode implements the yang.GoEnum
// interface. This ensures that Transport_DetailMode can be identified as a
// mapped type for a YANG enumeration.
func (E_Transport_DetailMode) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Transport_DetailMode.
func (E_Transport_DetailMode) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Transport_DetailMode.
func (e E_Transport_DetailMode) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Transport_DetailMode")
}

const (
	// Transport_DetailMode_UNSET corresponds to the value UNSET of Transport_DetailMode
	Transport_DetailMode_UNSET E_Transport_DetailMode = 0
	// Transport_DetailMode_EXPLICIT corresponds to the value EXPLICIT of Transport_DetailMode
	Transport_DetailMode_EXPLICIT E_Transport_DetailMode = 1
	// Transport_DetailMode_BUILTIN corresponds to the value BUILTIN of Transport_DetailMode
	Transport_DetailMode_BUILTIN E_Transport_DetailMode = 2
)

// E_Transport_ExplicitDetailMatchMode is a derived int64 type which is used to represent
// the enumerated node Transport_ExplicitDetailMatchMode. An additional value named
// Transport_ExplicitDetailMatchMode_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Transport_ExplicitDetailMatchMode int64

// IsYANGGoEnum ensures that Transport_ExplicitDetailMatchMode implements the yang.GoEnum
// interface. This ensures that Transport_ExplicitDetailMatchMode can be identified as a
// mapped type for a YANG enumeration.
func (E_Transport_ExplicitDetailMatchMode) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Transport_ExplicitDetailMatchMode.
func (E_Transport_ExplicitDetailMatchMode) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_Transport_ExplicitDetailMatchMode.
func (e E_Transport_ExplicitDetailMatchMode) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Transport_ExplicitDetailMatchMode")
}

const (
	// Transport_ExplicitDetailMatchMode_UNSET corresponds to the value UNSET of Transport_ExplicitDetailMatchMode
	Transport_ExplicitDetailMatchMode_UNSET E_Transport_ExplicitDetailMatchMode = 0
	// Transport_ExplicitDetailMatchMode_ANY corresponds to the value ANY of Transport_ExplicitDetailMatchMode
	Transport_ExplicitDetailMatchMode_ANY E_Transport_ExplicitDetailMatchMode = 1
	// Transport_ExplicitDetailMatchMode_ALL corresponds to the value ALL of Transport_ExplicitDetailMatchMode
	Transport_ExplicitDetailMatchMode_ALL E_Transport_ExplicitDetailMatchMode = 2
)

// E_Types_ADDRESS_FAMILY is a derived int64 type which is used to represent
// the enumerated node Types_ADDRESS_FAMILY. An additional value named
// Types_ADDRESS_FAMILY_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Types_ADDRESS_FAMILY int64

// IsYANGGoEnum ensures that Types_ADDRESS_FAMILY implements the yang.GoEnum
// interface. This ensures that Types_ADDRESS_FAMILY can be identified as a
// mapped type for a YANG enumeration.
func (E_Types_ADDRESS_FAMILY) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Types_ADDRESS_FAMILY.
func (E_Types_ADDRESS_FAMILY) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Types_ADDRESS_FAMILY.
func (e E_Types_ADDRESS_FAMILY) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Types_ADDRESS_FAMILY")
}

const (
	// Types_ADDRESS_FAMILY_UNSET corresponds to the value UNSET of Types_ADDRESS_FAMILY
	Types_ADDRESS_FAMILY_UNSET E_Types_ADDRESS_FAMILY = 0
	// Types_ADDRESS_FAMILY_IPV4 corresponds to the value IPV4 of Types_ADDRESS_FAMILY
	Types_ADDRESS_FAMILY_IPV4 E_Types_ADDRESS_FAMILY = 1
	// Types_ADDRESS_FAMILY_IPV6 corresponds to the value IPV6 of Types_ADDRESS_FAMILY
	Types_ADDRESS_FAMILY_IPV6 E_Types_ADDRESS_FAMILY = 2
	// Types_ADDRESS_FAMILY_L2_ETHERNET corresponds to the value L2_ETHERNET of Types_ADDRESS_FAMILY
	Types_ADDRESS_FAMILY_L2_ETHERNET E_Types_ADDRESS_FAMILY = 3
	// Types_ADDRESS_FAMILY_MPLS corresponds to the value MPLS of Types_ADDRESS_FAMILY
	Types_ADDRESS_FAMILY_MPLS E_Types_ADDRESS_FAMILY = 4
)

// E_VlanTypes_TPID_TYPES is a derived int64 type which is used to represent
// the enumerated node VlanTypes_TPID_TYPES. An additional value named
// VlanTypes_TPID_TYPES_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_VlanTypes_TPID_TYPES int64

// IsYANGGoEnum ensures that VlanTypes_TPID_TYPES implements the yang.GoEnum
// interface. This ensures that VlanTypes_TPID_TYPES can be identified as a
// mapped type for a YANG enumeration.
func (E_VlanTypes_TPID_TYPES) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  VlanTypes_TPID_TYPES.
func (E_VlanTypes_TPID_TYPES) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_VlanTypes_TPID_TYPES.
func (e E_VlanTypes_TPID_TYPES) String() string {
	return ygot.EnumLogString(e, int64(e), "E_VlanTypes_TPID_TYPES")
}

const (
	// VlanTypes_TPID_TYPES_UNSET corresponds to the value UNSET of VlanTypes_TPID_TYPES
	VlanTypes_TPID_TYPES_UNSET E_VlanTypes_TPID_TYPES = 0
	// VlanTypes_TPID_TYPES_TPID_0X8100 corresponds to the value TPID_0X8100 of VlanTypes_TPID_TYPES
	VlanTypes_TPID_TYPES_TPID_0X8100 E_VlanTypes_TPID_TYPES = 1
	// VlanTypes_TPID_TYPES_TPID_0X88A8 corresponds to the value TPID_0X88A8 of VlanTypes_TPID_TYPES
	VlanTypes_TPID_TYPES_TPID_0X88A8 E_VlanTypes_TPID_TYPES = 2
	// VlanTypes_TPID_TYPES_TPID_0X9100 corresponds to the value TPID_0X9100 of VlanTypes_TPID_TYPES
	VlanTypes_TPID_TYPES_TPID_0X9100 E_VlanTypes_TPID_TYPES = 3
	// VlanTypes_TPID_TYPES_TPID_0X9200 corresponds to the value TPID_0X9200 of VlanTypes_TPID_TYPES
	VlanTypes_TPID_TYPES_TPID_0X9200 E_VlanTypes_TPID_TYPES = 4
	// VlanTypes_TPID_TYPES_TPID_ANY corresponds to the value TPID_ANY of VlanTypes_TPID_TYPES
	VlanTypes_TPID_TYPES_TPID_ANY E_VlanTypes_TPID_TYPES = 5
)

// E_VlanTypes_VlanModeType is a derived int64 type which is used to represent
// the enumerated node VlanTypes_VlanModeType. An additional value named
// VlanTypes_VlanModeType_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_VlanTypes_VlanModeType int64

// IsYANGGoEnum ensures that VlanTypes_VlanModeType implements the yang.GoEnum
// interface. This ensures that VlanTypes_VlanModeType can be identified as a
// mapped type for a YANG enumeration.
func (E_VlanTypes_VlanModeType) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  VlanTypes_VlanModeType.
func (E_VlanTypes_VlanModeType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_VlanTypes_VlanModeType.
func (e E_VlanTypes_VlanModeType) String() string {
	return ygot.EnumLogString(e, int64(e), "E_VlanTypes_VlanModeType")
}

const (
	// VlanTypes_VlanModeType_UNSET corresponds to the value UNSET of VlanTypes_VlanModeType
	VlanTypes_VlanModeType_UNSET E_VlanTypes_VlanModeType = 0
	// VlanTypes_VlanModeType_ACCESS corresponds to the value ACCESS of VlanTypes_VlanModeType
	VlanTypes_VlanModeType_ACCESS E_VlanTypes_VlanModeType = 1
	// VlanTypes_VlanModeType_TRUNK corresponds to the value TRUNK of VlanTypes_VlanModeType
	VlanTypes_VlanModeType_TRUNK E_VlanTypes_VlanModeType = 2
)

// E_VlanTypes_VlanStackAction is a derived int64 type which is used to represent
// the enumerated node VlanTypes_VlanStackAction. An additional value named
// VlanTypes_VlanStackAction_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_VlanTypes_VlanStackAction int64

// IsYANGGoEnum ensures that VlanTypes_VlanStackAction implements the yang.GoEnum
// interface. This ensures that VlanTypes_VlanStackAction can be identified as a
// mapped type for a YANG enumeration.
func (E_VlanTypes_VlanStackAction) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  VlanTypes_VlanStackAction.
func (E_VlanTypes_VlanStackAction) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_VlanTypes_VlanStackAction.
func (e E_VlanTypes_VlanStackAction) String() string {
	return ygot.EnumLogString(e, int64(e), "E_VlanTypes_VlanStackAction")
}

const (
	// VlanTypes_VlanStackAction_UNSET corresponds to the value UNSET of VlanTypes_VlanStackAction
	VlanTypes_VlanStackAction_UNSET E_VlanTypes_VlanStackAction = 0
	// VlanTypes_VlanStackAction_PUSH corresponds to the value PUSH of VlanTypes_VlanStackAction
	VlanTypes_VlanStackAction_PUSH E_VlanTypes_VlanStackAction = 1
	// VlanTypes_VlanStackAction_POP corresponds to the value POP of VlanTypes_VlanStackAction
	VlanTypes_VlanStackAction_POP E_VlanTypes_VlanStackAction = 2
	// VlanTypes_VlanStackAction_SWAP corresponds to the value SWAP of VlanTypes_VlanStackAction
	VlanTypes_VlanStackAction_SWAP E_VlanTypes_VlanStackAction = 3
)

// E_Vlan_Status is a derived int64 type which is used to represent
// the enumerated node Vlan_Status. An additional value named
// Vlan_Status_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_Vlan_Status int64

// IsYANGGoEnum ensures that Vlan_Status implements the yang.GoEnum
// interface. This ensures that Vlan_Status can be identified as a
// mapped type for a YANG enumeration.
func (E_Vlan_Status) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  Vlan_Status.
func (E_Vlan_Status) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum }

// String returns a logging-friendly string for E_Vlan_Status.
func (e E_Vlan_Status) String() string {
	return ygot.EnumLogString(e, int64(e), "E_Vlan_Status")
}

const (
	// Vlan_Status_UNSET corresponds to the value UNSET of Vlan_Status
	Vlan_Status_UNSET E_Vlan_Status = 0
	// Vlan_Status_ACTIVE corresponds to the value ACTIVE of Vlan_Status
	Vlan_Status_ACTIVE E_Vlan_Status = 1
	// Vlan_Status_SUSPENDED corresponds to the value SUSPENDED of Vlan_Status
	Vlan_Status_SUSPENDED E_Vlan_Status = 2
)

// E_WeightedEcmp_LoadBalancingWeight_Enum is a derived int64 type which is used to represent
// the enumerated node WeightedEcmp_LoadBalancingWeight_Enum. An additional value named
// WeightedEcmp_LoadBalancingWeight_Enum_UNSET is added to the enumeration which is used as
// the nil value, indicating that the enumeration was not explicitly set by
// the program importing the generated structures.
type E_WeightedEcmp_LoadBalancingWeight_Enum int64

// IsYANGGoEnum ensures that WeightedEcmp_LoadBalancingWeight_Enum implements the yang.GoEnum
// interface. This ensures that WeightedEcmp_LoadBalancingWeight_Enum can be identified as a
// mapped type for a YANG enumeration.
func (E_WeightedEcmp_LoadBalancingWeight_Enum) IsYANGGoEnum() {}

// ΛMap returns the value lookup map associated with  WeightedEcmp_LoadBalancingWeight_Enum.
func (E_WeightedEcmp_LoadBalancingWeight_Enum) ΛMap() map[string]map[int64]ygot.EnumDefinition {
	return ΛEnum
}

// String returns a logging-friendly string for E_WeightedEcmp_LoadBalancingWeight_Enum.
func (e E_WeightedEcmp_LoadBalancingWeight_Enum) String() string {
	return ygot.EnumLogString(e, int64(e), "E_WeightedEcmp_LoadBalancingWeight_Enum")
}

const (
	// WeightedEcmp_LoadBalancingWeight_Enum_UNSET corresponds to the value UNSET of WeightedEcmp_LoadBalancingWeight_Enum
	WeightedEcmp_LoadBalancingWeight_Enum_UNSET E_WeightedEcmp_LoadBalancingWeight_Enum = 0
	// WeightedEcmp_LoadBalancingWeight_Enum_auto corresponds to the value auto of WeightedEcmp_LoadBalancingWeight_Enum
	WeightedEcmp_LoadBalancingWeight_Enum_auto E_WeightedEcmp_LoadBalancingWeight_Enum = 1
	// WeightedEcmp_LoadBalancingWeight_Enum_none corresponds to the value none of WeightedEcmp_LoadBalancingWeight_Enum
	WeightedEcmp_LoadBalancingWeight_Enum_none E_WeightedEcmp_LoadBalancingWeight_Enum = 2
)

// ΛEnum is a map, keyed by the name of the type defined for each enum in the
// generated Go code, which provides a mapping between the constant int64 value
// of each value of the enumeration, and the string that is used to represent it
// in the YANG schema. The map is named ΛEnum in order to avoid clash with any
// valid YANG identifier.
var ΛEnum = map[string]map[int64]ygot.EnumDefinition{
	"E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE": {
		1: {Name: "AAA_ACCOUNTING_EVENT_COMMAND", DefiningModule: "openconfig-aaa-types"},
		2: {Name: "AAA_ACCOUNTING_EVENT_LOGIN", DefiningModule: "openconfig-aaa-types"},
	},
	"E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE": {
		1: {Name: "AAA_AUTHORIZATION_EVENT_COMMAND", DefiningModule: "openconfig-aaa-types"},
		2: {Name: "AAA_AUTHORIZATION_EVENT_CONFIG", DefiningModule: "openconfig-aaa-types"},
	},
	"E_AaaTypes_AAA_METHOD_TYPE": {
		1: {Name: "LOCAL", DefiningModule: "openconfig-aaa-types"},
		2: {Name: "RADIUS_ALL", DefiningModule: "openconfig-aaa-types"},
		3: {Name: "TACACS_ALL", DefiningModule: "openconfig-aaa-types"},
	},
	"E_AaaTypes_AAA_SERVER_TYPE": {
		1: {Name: "RADIUS", DefiningModule: "openconfig-aaa"},
		2: {Name: "TACACS", DefiningModule: "openconfig-aaa"},
	},
	"E_AaaTypes_SYSTEM_DEFINED_ROLES": {
		1: {Name: "SYSTEM_ROLE_ADMIN", DefiningModule: "openconfig-aaa-types"},
	},
	"E_Acl_ACL_COUNTER_CAPABILITY": {
		1: {Name: "AGGREGATE_ONLY", DefiningModule: "openconfig-acl"},
		2: {Name: "INTERFACE_AGGREGATE", DefiningModule: "openconfig-acl"},
		3: {Name: "INTERFACE_ONLY", DefiningModule: "openconfig-acl"},
	},
	"E_Acl_ACL_TYPE": {
		1: {Name: "ACL_IPV4", DefiningModule: "openconfig-acl"},
		2: {Name: "ACL_IPV6", DefiningModule: "openconfig-acl"},
		3: {Name: "ACL_L2", DefiningModule: "openconfig-acl"},
		4: {Name: "ACL_MIXED", DefiningModule: "openconfig-acl"},
		5: {Name: "ACL_MPLS", DefiningModule: "openconfig-acl"},
	},
	"E_Acl_FORWARDING_ACTION": {
		1: {Name: "ACCEPT", DefiningModule: "openconfig-acl"},
		2: {Name: "DROP", DefiningModule: "openconfig-acl"},
		3: {Name: "REJECT", DefiningModule: "openconfig-acl"},
	},
	"E_Acl_LOG_ACTION": {
		1: {Name: "LOG_NONE", DefiningModule: "openconfig-acl"},
		2: {Name: "LOG_SYSLOG", DefiningModule: "openconfig-acl"},
	},
	"E_Address_Status": {
		1: {Name: "PREFERRED"},
		2: {Name: "DEPRECATED"},
		3: {Name: "INVALID"},
		4: {Name: "INACCESSIBLE"},
		5: {Name: "UNKNOWN"},
		6: {Name: "TENTATIVE"},
		7: {Name: "DUPLICATE"},
		8: {Name: "OPTIMISTIC"},
	},
	"E_AdjacencySid_Flags": {
		1: {Name: "ADDRESS_FAMILY"},
		2: {Name: "BACKUP"},
		3: {Name: "VALUE"},
		4: {Name: "LOCAL"},
		5: {Name: "SET"},
	},
	"E_AdjacencySid_SidId_Enum": {
		1: {Name: "DYNAMIC"},
	},
	"E_Adjacency_Nlpid": {
		1: {Name: "IPV4"},
		2: {Name: "IPV6"},
	},
	"E_AftTypes_EncapsulationHeaderType": {
		1: {Name: "GRE"},
		2: {Name: "IPV4"},
		3: {Name: "IPV6"},
		4: {Name: "MPLS"},
		5: {Name: "VXLAN"},
	},
	"E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY": {
		1: {Name: "CRITICAL", DefiningModule: "openconfig-alarm-types"},
		2: {Name: "MAJOR", DefiningModule: "openconfig-alarm-types"},
		3: {Name: "MINOR", DefiningModule: "openconfig-alarm-types"},
		4: {Name: "UNKNOWN", DefiningModule: "openconfig-alarm-types"},
		5: {Name: "WARNING", DefiningModule: "openconfig-alarm-types"},
	},
	"E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID": {
		1: {Name: "AIS", DefiningModule: "openconfig-alarm-types"},
		2: {Name: "EQPT", DefiningModule: "openconfig-alarm-types"},
		3: {Name: "LOS", DefiningModule: "openconfig-alarm-types"},
		4: {Name: "OTS", DefiningModule: "openconfig-alarm-types"},
	},
	"E_ApsModule_ForceToPort": {
		1: {Name: "NONE"},
		2: {Name: "PRIMARY"},
		3: {Name: "SECONDARY"},
	},
	"E_AsExternalLsa_MetricType": {
		1: {Name: "TYPE_1"},
		2: {Name: "TYPE_2"},
	},
	"E_Assignment_AssignmentType": {
		1: {Name: "LOGICAL_CHANNEL"},
		2: {Name: "OPTICAL_CHANNEL"},
	},
	"E_Authentication_CryptoType": {
		1: {Name: "HMAC_MD5"},
		2: {Name: "CLEARTEXT"},
	},
	"E_BandwidthReservation_Priority_Enum": {
		1: {Name: "ALL"},
	},
	"E_Bfd_BfdDiagnosticCode": {
		1: {Name: "NO_DIAGNOSTIC"},
		2: {Name: "DETECTION_TIMEOUT"},
		3: {Name: "ECHO_FAILED"},
		4: {Name: "FORWARDING_RESET"},
		5: {Name: "PATH_DOWN"},
		6: {Name: "CONCATENATED_PATH_DOWN"},
		7: {Name: "ADMIN_DOWN"},
		8: {Name: "REVERSE_CONCATENATED_PATH_DOWN"},
	},
	"E_Bfd_BfdSessionState": {
		1: {Name: "UP"},
		2: {Name: "DOWN"},
		3: {Name: "ADMIN_DOWN"},
		4: {Name: "INIT"},
	},
	"E_BgpConditions_RouteType": {
		1: {Name: "INTERNAL"},
		2: {Name: "EXTERNAL"},
	},
	"E_BgpPolicy_BgpNextHopType_Enum": {
		1: {Name: "SELF"},
		2: {Name: "PEER_ADDRESS"},
	},
	"E_BgpPolicy_BgpSetCommunityOptionType": {
		1: {Name: "ADD"},
		2: {Name: "REMOVE"},
		3: {Name: "REPLACE"},
	},
	"E_BgpPolicy_BgpSetMedType_Enum": {
		1: {Name: "IGP"},
	},
	"E_BgpTypes_AFI_SAFI_TYPE": {
		1:  {Name: "IPV4_FLOWSPEC", DefiningModule: "openconfig-bgp-types"},
		2:  {Name: "IPV4_LABELED_UNICAST", DefiningModule: "openconfig-bgp-types"},
		3:  {Name: "IPV4_UNICAST", DefiningModule: "openconfig-bgp-types"},
		4:  {Name: "IPV6_LABELED_UNICAST", DefiningModule: "openconfig-bgp-types"},
		5:  {Name: "IPV6_UNICAST", DefiningModule: "openconfig-bgp-types"},
		6:  {Name: "L2VPN_EVPN", DefiningModule: "openconfig-bgp-types"},
		7:  {Name: "L2VPN_VPLS", DefiningModule: "openconfig-bgp-types"},
		8:  {Name: "L3VPN_IPV4_MULTICAST", DefiningModule: "openconfig-bgp-types"},
		9:  {Name: "L3VPN_IPV4_UNICAST", DefiningModule: "openconfig-bgp-types"},
		10: {Name: "L3VPN_IPV6_MULTICAST", DefiningModule: "openconfig-bgp-types"},
		11: {Name: "L3VPN_IPV6_UNICAST", DefiningModule: "openconfig-bgp-types"},
		12: {Name: "LINKSTATE", DefiningModule: "openconfig-bgp-types"},
		13: {Name: "LINKSTATE_SPF", DefiningModule: "openconfig-bgp-types"},
		14: {Name: "LINKSTATE_VPN", DefiningModule: "openconfig-bgp-types"},
		15: {Name: "SRTE_POLICY_IPV4", DefiningModule: "openconfig-bgp-types"},
		16: {Name: "SRTE_POLICY_IPV6", DefiningModule: "openconfig-bgp-types"},
		17: {Name: "VPNV4_FLOWSPEC", DefiningModule: "openconfig-bgp-types"},
	},
	"E_BgpTypes_AsPathSegmentType": {
		1: {Name: "AS_SEQ"},
		2: {Name: "AS_SET"},
		3: {Name: "AS_CONFED_SEQUENCE"},
		4: {Name: "AS_CONFED_SET"},
	},
	"E_BgpTypes_BGP_CAPABILITY": {
		1: {Name: "ADD_PATHS", DefiningModule: "openconfig-bgp-types"},
		2: {Name: "ASN32", DefiningModule: "openconfig-bgp-types"},
		3: {Name: "EXTENDED_NEXTHOP_ENCODING", DefiningModule: "openconfig-bgp-types"},
		4: {Name: "GRACEFUL_RESTART", DefiningModule: "openconfig-bgp-types"},
		5: {Name: "MPBGP", DefiningModule: "openconfig-bgp-types"},
		6: {Name: "ROUTE_REFRESH", DefiningModule: "openconfig-bgp-types"},
	},
	"E_BgpTypes_BGP_ERROR_CODE": {
		1: {Name: "CEASE", DefiningModule: "openconfig-bgp-types"},
		2: {Name: "FINITE_STATE_MACHINE_ERROR", DefiningModule: "openconfig-bgp-types"},
		3: {Name: "HOLD_TIMER_EXPIRED", DefiningModule: "openconfig-bgp-types"},
		4: {Name: "MESSAGE_HEADER_ERROR", DefiningModule: "openconfig-bgp-types"},
		5: {Name: "OPEN_MESSAGE_ERROR", DefiningModule: "openconfig-bgp-types"},
		6: {Name: "ROUTE_REFRESH_MESSAGE_ERROR", DefiningModule: "openconfig-bgp-types"},
		7: {Name: "UPDATE_MESSAGE_ERROR", DefiningModule: "openconfig-bgp-types"},
	},
	"E_BgpTypes_BGP_ERROR_SUBCODE": {
		1:  {Name: "ADMINISTRATIVE_RESET", DefiningModule: "openconfig-bgp-types"},
		2:  {Name: "ADMINISTRATIVE_SHUTDOWN", DefiningModule: "openconfig-bgp-types"},
		3:  {Name: "ATTRIBUTE_FLAGS_ERROR", DefiningModule: "openconfig-bgp-types"},
		4:  {Name: "ATTRIBUTE_LENGTH_ERROR", DefiningModule: "openconfig-bgp-types"},
		5:  {Name: "BAD_BGP_IDENTIFIER", DefiningModule: "openconfig-bgp-types"},
		6:  {Name: "BAD_MESSAGE_LENGTH", DefiningModule: "openconfig-bgp-types"},
		7:  {Name: "BAD_MESSAGE_TYPE", DefiningModule: "openconfig-bgp-types"},
		8:  {Name: "BAD_PEER_AS", DefiningModule: "openconfig-bgp-types"},
		9:  {Name: "CEASE_SUBCODE", DefiningModule: "openconfig-bgp-types"},
		10: {Name: "CONNECTION_NOT_SYNCHRONIZED", DefiningModule: "openconfig-bgp-types"},
		11: {Name: "CONNECTION_REJECTED", DefiningModule: "openconfig-bgp-types"},
		12: {Name: "CONN_COLLISION_RESOLUTION", DefiningModule: "openconfig-bgp-types"},
		13: {Name: "FINITE_STATE_MACHINE_SUBCODE", DefiningModule: "openconfig-bgp-types"},
		14: {Name: "INVALID_MESSAGE_LENGTH", DefiningModule: "openconfig-bgp-types"},
		15: {Name: "INVALID_NETWORK_FIELD", DefiningModule: "openconfig-bgp-types"},
		16: {Name: "INVALID_NEXT_HOP_ATTRIBUTE", DefiningModule: "openconfig-bgp-types"},
		17: {Name: "INVALID_ORIGIN_ATTRIBUTE", DefiningModule: "openconfig-bgp-types"},
		18: {Name: "MALFORMED_AS_PATH", DefiningModule: "openconfig-bgp-types"},
		19: {Name: "MALFORMED_ATTRIBUTE_LIST", DefiningModule: "openconfig-bgp-types"},
		20: {Name: "MAX_NUM_PREFIXES_REACHED", DefiningModule: "openconfig-bgp-types"},
		21: {Name: "MESSAGE_HEADER_SUBCODE", DefiningModule: "openconfig-bgp-types"},
		22: {Name: "MISSING_WELL_KNOWN_ATTRIBUTE", DefiningModule: "openconfig-bgp-types"},
		23: {Name: "OPEN_MESSAGE_SUBCODE", DefiningModule: "openconfig-bgp-types"},
		24: {Name: "OPTIONAL_ATTRIBUTE_ERROR", DefiningModule: "openconfig-bgp-types"},
		25: {Name: "OTHER_CONFIG_CHANGE", DefiningModule: "openconfig-bgp-types"},
		26: {Name: "OUT_OF_RESOURCES", DefiningModule: "openconfig-bgp-types"},
		27: {Name: "PEER_DE_CONFIGURED", DefiningModule: "openconfig-bgp-types"},
		28: {Name: "RECEIVE_UNEXPECTED_MESSAGE_ESTABLISHED", DefiningModule: "openconfig-bgp-types"},
		29: {Name: "RECEIVE_UNEXPECTED_MESSAGE_OPENCONFIRM", DefiningModule: "openconfig-bgp-types"},
		30: {Name: "RECEIVE_UNEXPECTED_MESSAGE_OPENSENT", DefiningModule: "openconfig-bgp-types"},
		31: {Name: "ROUTE_REFRESH_SUBCODE", DefiningModule: "openconfig-bgp-types"},
		32: {Name: "UNACCEPTABLE_HOLD_TIME", DefiningModule: "openconfig-bgp-types"},
		33: {Name: "UNRECOGNIZED_WELL_KNOWN_ATTRIBUTE", DefiningModule: "openconfig-bgp-types"},
		34: {Name: "UNSPECIFIC", DefiningModule: "openconfig-bgp-types"},
		35: {Name: "UNSUPPORTED_CAPABILITY", DefiningModule: "openconfig-bgp-types"},
		36: {Name: "UNSUPPORTED_OPTIONAL_PARAMETER", DefiningModule: "openconfig-bgp-types"},
		37: {Name: "UNSUPPORTED_VERSION_NUMBER", DefiningModule: "openconfig-bgp-types"},
		38: {Name: "UPDATE_MESSAGE_SUBCODE", DefiningModule: "openconfig-bgp-types"},
	},
	"E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY": {
		1: {Name: "GRACEFUL_SHUTDOWN", DefiningModule: "openconfig-bgp-types"},
		2: {Name: "NOPEER", DefiningModule: "openconfig-bgp-types"},
		3: {Name: "NO_ADVERTISE", DefiningModule: "openconfig-bgp-types"},
		4: {Name: "NO_EXPORT", DefiningModule: "openconfig-bgp-types"},
		5: {Name: "NO_EXPORT_SUBCONFED", DefiningModule: "openconfig-bgp-types"},
	},
	"E_BgpTypes_BgpOriginAttrType": {
		1: {Name: "IGP"},
		2: {Name: "EGP"},
		3: {Name: "INCOMPLETE"},
	},
	"E_BgpTypes_CommunityType": {
		1: {Name: "STANDARD"},
		2: {Name: "EXTENDED"},
		3: {Name: "LARGE"},
		4: {Name: "BOTH"},
		5: {Name: "NONE"},
	},
	"E_BgpTypes_PeerType": {
		1: {Name: "INTERNAL"},
		2: {Name: "EXTERNAL"},
	},
	"E_BgpTypes_RemovePrivateAsOption": {
		1: {Name: "PRIVATE_AS_REMOVE_ALL", DefiningModule: "openconfig-bgp-types"},
		2: {Name: "PRIVATE_AS_REPLACE_ALL", DefiningModule: "openconfig-bgp-types"},
	},
	"E_Bgp_Neighbor_SessionState": {
		1: {Name: "IDLE"},
		2: {Name: "CONNECT"},
		3: {Name: "ACTIVE"},
		4: {Name: "OPENSENT"},
		5: {Name: "OPENCONFIRM"},
		6: {Name: "ESTABLISHED"},
	},
	"E_Capability_Flags": {
		1: {Name: "FLOOD"},
		2: {Name: "DOWN"},
	},
	"E_Channel_LinkState": {
		1: {Name: "UP"},
		2: {Name: "DOWN"},
		3: {Name: "TESTING"},
	},
	"E_Cpu_Index_Enum": {
		1: {Name: "ALL"},
	},
	"E_DefaultMetric_Flags": {
		1: {Name: "INTERNAL"},
	},
	"E_EndpointPeer_PeerState": {
		1: {Name: "UP"},
		2: {Name: "DOWN"},
	},
	"E_EndpointVni_MultidestinationTraffic_Enum": {
		1: {Name: "STATIC_INGRESS_REPLICATION"},
		2: {Name: "BGP_INGRESS_REPLICATION"},
	},
	"E_EndpointVni_SviState": {
		1: {Name: "UP"},
		2: {Name: "DOWN"},
	},
	"E_EndpointVni_VniState": {
		1: {Name: "UP"},
		2: {Name: "DOWN"},
	},
	"E_EndpointVni_VniType": {
		1: {Name: "L2"},
		2: {Name: "L3"},
	},
	"E_Entry_EntryType": {
		1: {Name: "STATIC"},
		2: {Name: "DYNAMIC"},
	},
	"E_Ethernet_ClientAls": {
		1: {Name: "NONE"},
		2: {Name: "LASER_SHUTDOWN"},
		3: {Name: "ETHERNET"},
	},
	"E_Ethernet_DuplexMode": {
		1: {Name: "FULL"},
		2: {Name: "HALF"},
	},
	"E_Ethernet_NegotiatedDuplexMode": {
		1: {Name: "FULL"},
		2: {Name: "HALF"},
	},
	"E_Event_Record": {
		1: {Name: "START_STOP"},
		2: {Name: "STOP"},
	},
	"E_EvpnInstance_ReplicationMode": {
		1: {Name: "STATIC_INGRESS_REPLICATION"},
		2: {Name: "BGP"},
		3: {Name: "MULTICAST"},
	},
	"E_EvpnInstance_RouteDistinguisher_Enum": {
		1: {Name: "AUTO"},
	},
	"E_EvpnTypes_EVPN_TYPE": {
		1: {Name: "VLAN_AWARE", DefiningModule: "openconfig-evpn-types"},
		2: {Name: "VLAN_BASED", DefiningModule: "openconfig-evpn-types"},
		3: {Name: "VLAN_BUNDLE", DefiningModule: "openconfig-evpn-types"},
	},
	"E_EvpnTypes_LearningMode": {
		1: {Name: "CONTROL_PLANE"},
		2: {Name: "DATA_PLANE"},
	},
	"E_ExplicitRouteObject_Type": {
		1: {Name: "IPV4"},
		2: {Name: "IPV6"},
		3: {Name: "ASN"},
		4: {Name: "ASN4"},
		5: {Name: "LABEL"},
		6: {Name: "UNNUMBERED_INTERFACE"},
	},
	"E_ExtendedPrefix_AddressFamily": {
		1: {Name: "IPV4_UNICAST"},
	},
	"E_ExtendedPrefix_RouteType": {
		1: {Name: "UNSPECIFIED"},
		2: {Name: "INTRA_AREA"},
		4: {Name: "INTER_AREA"},
		6: {Name: "AS_EXTERNAL"},
		8: {Name: "NSSA_EXTERNAL"},
	},
	"E_Flags_Flags": {
		1: {Name: "EXTERNAL_FLAG"},
		2: {Name: "READVERTISEMENT_FLAG"},
		3: {Name: "NODE_FLAG"},
	},
	"E_Global_SummaryRouteCostMode": {
		1: {Name: "RFC1583_COMPATIBLE"},
		2: {Name: "RFC2328_COMPATIBLE"},
	},
	"E_GracefulRestart_Mode": {
		1: {Name: "HELPER_ONLY"},
		2: {Name: "BILATERAL"},
		3: {Name: "REMOTE_HELPER"},
	},
	"E_IETFInterfaces_InterfaceType": {
		1:   {Name: "a12MppSwitch", DefiningModule: "iana-if-type"},
		2:   {Name: "aal2", DefiningModule: "iana-if-type"},
		3:   {Name: "aal5", DefiningModule: "iana-if-type"},
		4:   {Name: "actelisMetaLOOP", DefiningModule: "iana-if-type"},
		5:   {Name: "adsl", DefiningModule: "iana-if-type"},
		6:   {Name: "adsl2", DefiningModule: "iana-if-type"},
		7:   {Name: "adsl2plus", DefiningModule: "iana-if-type"},
		8:   {Name: "aflane8023", DefiningModule: "iana-if-type"},
		9:   {Name: "aflane8025", DefiningModule: "iana-if-type"},
		10:  {Name: "aluELP", DefiningModule: "iana-if-type"},
		11:  {Name: "aluEpon", DefiningModule: "iana-if-type"},
		12:  {Name: "aluEponLogicalLink", DefiningModule: "iana-if-type"},
		13:  {Name: "aluEponOnu", DefiningModule: "iana-if-type"},
		14:  {Name: "aluEponPhysicalUni", DefiningModule: "iana-if-type"},
		15:  {Name: "aluGponOnu", DefiningModule: "iana-if-type"},
		16:  {Name: "aluGponPhysicalUni", DefiningModule: "iana-if-type"},
		17:  {Name: "arap", DefiningModule: "iana-if-type"},
		18:  {Name: "arcnet", DefiningModule: "iana-if-type"},
		19:  {Name: "arcnetPlus", DefiningModule: "iana-if-type"},
		20:  {Name: "async", DefiningModule: "iana-if-type"},
		21:  {Name: "atm", DefiningModule: "iana-if-type"},
		22:  {Name: "atmDxi", DefiningModule: "iana-if-type"},
		23:  {Name: "atmFuni", DefiningModule: "iana-if-type"},
		24:  {Name: "atmIma", DefiningModule: "iana-if-type"},
		25:  {Name: "atmLogical", DefiningModule: "iana-if-type"},
		26:  {Name: "atmRadio", DefiningModule: "iana-if-type"},
		27:  {Name: "atmSubInterface", DefiningModule: "iana-if-type"},
		28:  {Name: "atmVciEndPt", DefiningModule: "iana-if-type"},
		29:  {Name: "atmVirtual", DefiningModule: "iana-if-type"},
		30:  {Name: "atmbond", DefiningModule: "iana-if-type"},
		31:  {Name: "aviciOpticalEther", DefiningModule: "iana-if-type"},
		32:  {Name: "basicISDN", DefiningModule: "iana-if-type"},
		33:  {Name: "bgppolicyaccounting", DefiningModule: "iana-if-type"},
		34:  {Name: "bits", DefiningModule: "iana-if-type"},
		35:  {Name: "bridge", DefiningModule: "iana-if-type"},
		36:  {Name: "bsc", DefiningModule: "iana-if-type"},
		37:  {Name: "cableDownstreamRfPort", DefiningModule: "iana-if-type"},
		38:  {Name: "capwapDot11Bss", DefiningModule: "iana-if-type"},
		39:  {Name: "capwapDot11Profile", DefiningModule: "iana-if-type"},
		40:  {Name: "capwapWtpVirtualRadio", DefiningModule: "iana-if-type"},
		41:  {Name: "cblVectaStar", DefiningModule: "iana-if-type"},
		42:  {Name: "cctEmul", DefiningModule: "iana-if-type"},
		43:  {Name: "ces", DefiningModule: "iana-if-type"},
		44:  {Name: "channel", DefiningModule: "iana-if-type"},
		45:  {Name: "ciscoISLvlan", DefiningModule: "iana-if-type"},
		46:  {Name: "cnr", DefiningModule: "iana-if-type"},
		47:  {Name: "coffee", DefiningModule: "iana-if-type"},
		48:  {Name: "compositeLink", DefiningModule: "iana-if-type"},
		49:  {Name: "dcn", DefiningModule: "iana-if-type"},
		50:  {Name: "ddnX25", DefiningModule: "iana-if-type"},
		51:  {Name: "digitalPowerline", DefiningModule: "iana-if-type"},
		52:  {Name: "digitalWrapperOverheadChannel", DefiningModule: "iana-if-type"},
		53:  {Name: "dlsw", DefiningModule: "iana-if-type"},
		54:  {Name: "docsCableDownstream", DefiningModule: "iana-if-type"},
		55:  {Name: "docsCableMCmtsDownstream", DefiningModule: "iana-if-type"},
		56:  {Name: "docsCableMaclayer", DefiningModule: "iana-if-type"},
		57:  {Name: "docsCableNdf", DefiningModule: "iana-if-type"},
		58:  {Name: "docsCableNdr", DefiningModule: "iana-if-type"},
		59:  {Name: "docsCableScte55d1FwdOob", DefiningModule: "iana-if-type"},
		60:  {Name: "docsCableScte55d1RetOob", DefiningModule: "iana-if-type"},
		61:  {Name: "docsCableScte55d2DsOob", DefiningModule: "iana-if-type"},
		62:  {Name: "docsCableScte55d2UsOob", DefiningModule: "iana-if-type"},
		63:  {Name: "docsCableUpstream", DefiningModule: "iana-if-type"},
		64:  {Name: "docsCableUpstreamChannel", DefiningModule: "iana-if-type"},
		65:  {Name: "docsCableUpstreamRfPort", DefiningModule: "iana-if-type"},
		66:  {Name: "docsOfdmDownstream", DefiningModule: "iana-if-type"},
		67:  {Name: "docsOfdmaUpstream", DefiningModule: "iana-if-type"},
		68:  {Name: "ds0", DefiningModule: "iana-if-type"},
		69:  {Name: "ds0Bundle", DefiningModule: "iana-if-type"},
		70:  {Name: "ds1", DefiningModule: "iana-if-type"},
		71:  {Name: "ds1FDL", DefiningModule: "iana-if-type"},
		72:  {Name: "ds3", DefiningModule: "iana-if-type"},
		73:  {Name: "dtm", DefiningModule: "iana-if-type"},
		74:  {Name: "dvbAsiIn", DefiningModule: "iana-if-type"},
		75:  {Name: "dvbAsiOut", DefiningModule: "iana-if-type"},
		76:  {Name: "dvbRccDownstream", DefiningModule: "iana-if-type"},
		77:  {Name: "dvbRccMacLayer", DefiningModule: "iana-if-type"},
		78:  {Name: "dvbRccUpstream", DefiningModule: "iana-if-type"},
		79:  {Name: "dvbRcsMacLayer", DefiningModule: "iana-if-type"},
		80:  {Name: "dvbRcsTdma", DefiningModule: "iana-if-type"},
		81:  {Name: "dvbTdm", DefiningModule: "iana-if-type"},
		82:  {Name: "e1", DefiningModule: "iana-if-type"},
		83:  {Name: "econet", DefiningModule: "iana-if-type"},
		84:  {Name: "eon", DefiningModule: "iana-if-type"},
		85:  {Name: "eplrs", DefiningModule: "iana-if-type"},
		86:  {Name: "escon", DefiningModule: "iana-if-type"},
		87:  {Name: "ethernet3Mbit", DefiningModule: "iana-if-type"},
		88:  {Name: "ethernetCsmacd", DefiningModule: "iana-if-type"},
		89:  {Name: "fast", DefiningModule: "iana-if-type"},
		90:  {Name: "fastEther", DefiningModule: "iana-if-type"},
		91:  {Name: "fastEtherFX", DefiningModule: "iana-if-type"},
		92:  {Name: "fastdsl", DefiningModule: "iana-if-type"},
		93:  {Name: "fcipLink", DefiningModule: "iana-if-type"},
		94:  {Name: "fddi", DefiningModule: "iana-if-type"},
		95:  {Name: "fibreChannel", DefiningModule: "iana-if-type"},
		96:  {Name: "frDlciEndPt", DefiningModule: "iana-if-type"},
		97:  {Name: "frForward", DefiningModule: "iana-if-type"},
		98:  {Name: "frameRelay", DefiningModule: "iana-if-type"},
		99:  {Name: "frameRelayInterconnect", DefiningModule: "iana-if-type"},
		100: {Name: "frameRelayMPI", DefiningModule: "iana-if-type"},
		101: {Name: "frameRelayService", DefiningModule: "iana-if-type"},
		102: {Name: "frf16MfrBundle", DefiningModule: "iana-if-type"},
		103: {Name: "g703at2mb", DefiningModule: "iana-if-type"},
		104: {Name: "g703at64k", DefiningModule: "iana-if-type"},
		105: {Name: "g9981", DefiningModule: "iana-if-type"},
		106: {Name: "g9982", DefiningModule: "iana-if-type"},
		107: {Name: "g9983", DefiningModule: "iana-if-type"},
		108: {Name: "gfast", DefiningModule: "iana-if-type"},
		109: {Name: "gfp", DefiningModule: "iana-if-type"},
		110: {Name: "gigabitEthernet", DefiningModule: "iana-if-type"},
		111: {Name: "gpon", DefiningModule: "iana-if-type"},
		112: {Name: "gr303IDT", DefiningModule: "iana-if-type"},
		113: {Name: "gr303RDT", DefiningModule: "iana-if-type"},
		114: {Name: "gtp", DefiningModule: "iana-if-type"},
		115: {Name: "h323Gatekeeper", DefiningModule: "iana-if-type"},
		116: {Name: "h323Proxy", DefiningModule: "iana-if-type"},
		117: {Name: "hdh1822", DefiningModule: "iana-if-type"},
		118: {Name: "hdlc", DefiningModule: "iana-if-type"},
		119: {Name: "hdsl2", DefiningModule: "iana-if-type"},
		120: {Name: "hiperlan2", DefiningModule: "iana-if-type"},
		121: {Name: "hippi", DefiningModule: "iana-if-type"},
		122: {Name: "hippiInterface", DefiningModule: "iana-if-type"},
		123: {Name: "homepna", DefiningModule: "iana-if-type"},
		124: {Name: "hostPad", DefiningModule: "iana-if-type"},
		125: {Name: "hssi", DefiningModule: "iana-if-type"},
		126: {Name: "hyperchannel", DefiningModule: "iana-if-type"},
		127: {Name: "iana-interface-type", DefiningModule: "iana-if-type"},
		128: {Name: "ibm370parChan", DefiningModule: "iana-if-type"},
		129: {Name: "idsl", DefiningModule: "iana-if-type"},
		130: {Name: "ieee1394", DefiningModule: "iana-if-type"},
		131: {Name: "ieee80211", DefiningModule: "iana-if-type"},
		132: {Name: "ieee80212", DefiningModule: "iana-if-type"},
		133: {Name: "ieee802154", DefiningModule: "iana-if-type"},
		134: {Name: "ieee80216WMAN", DefiningModule: "iana-if-type"},
		135: {Name: "ieee8023adLag", DefiningModule: "iana-if-type"},
		136: {Name: "if-gsn", DefiningModule: "iana-if-type"},
		137: {Name: "ifPwType", DefiningModule: "iana-if-type"},
		138: {Name: "ifVfiType", DefiningModule: "iana-if-type"},
		139: {Name: "ilan", DefiningModule: "iana-if-type"},
		140: {Name: "imt", DefiningModule: "iana-if-type"},
		141: {Name: "infiniband", DefiningModule: "iana-if-type"},
		142: {Name: "interleave", DefiningModule: "iana-if-type"},
		143: {Name: "ip", DefiningModule: "iana-if-type"},
		144: {Name: "ipForward", DefiningModule: "iana-if-type"},
		145: {Name: "ipOverAtm", DefiningModule: "iana-if-type"},
		146: {Name: "ipOverCdlc", DefiningModule: "iana-if-type"},
		147: {Name: "ipOverClaw", DefiningModule: "iana-if-type"},
		148: {Name: "ipSwitch", DefiningModule: "iana-if-type"},
		149: {Name: "isdn", DefiningModule: "iana-if-type"},
		150: {Name: "isdns", DefiningModule: "iana-if-type"},
		151: {Name: "isdnu", DefiningModule: "iana-if-type"},
		152: {Name: "iso88022llc", DefiningModule: "iana-if-type"},
		153: {Name: "iso88023Csmacd", DefiningModule: "iana-if-type"},
		154: {Name: "iso88024TokenBus", DefiningModule: "iana-if-type"},
		155: {Name: "iso88025CRFPInt", DefiningModule: "iana-if-type"},
		156: {Name: "iso88025Dtr", DefiningModule: "iana-if-type"},
		157: {Name: "iso88025Fiber", DefiningModule: "iana-if-type"},
		158: {Name: "iso88025TokenRing", DefiningModule: "iana-if-type"},
		159: {Name: "iso88026Man", DefiningModule: "iana-if-type"},
		160: {Name: "isup", DefiningModule: "iana-if-type"},
		161: {Name: "l2vlan", DefiningModule: "iana-if-type"},
		162: {Name: "l3ipvlan", DefiningModule: "iana-if-type"},
		163: {Name: "l3ipxvlan", DefiningModule: "iana-if-type"},
		164: {Name: "lapb", DefiningModule: "iana-if-type"},
		165: {Name: "lapd", DefiningModule: "iana-if-type"},
		166: {Name: "lapf", DefiningModule: "iana-if-type"},
		167: {Name: "linegroup", DefiningModule: "iana-if-type"},
		168: {Name: "lmp", DefiningModule: "iana-if-type"},
		169: {Name: "localTalk", DefiningModule: "iana-if-type"},
		170: {Name: "macSecControlledIF", DefiningModule: "iana-if-type"},
		171: {Name: "macSecUncontrolledIF", DefiningModule: "iana-if-type"},
		172: {Name: "mediaMailOverIp", DefiningModule: "iana-if-type"},
		173: {Name: "mfSigLink", DefiningModule: "iana-if-type"},
		174: {Name: "miox25", DefiningModule: "iana-if-type"},
		175: {Name: "mocaVersion1", DefiningModule: "iana-if-type"},
		176: {Name: "modem", DefiningModule: "iana-if-type"},
		177: {Name: "mpc", DefiningModule: "iana-if-type"},
		178: {Name: "mpegTransport", DefiningModule: "iana-if-type"},
		179: {Name: "mpls", DefiningModule: "iana-if-type"},
		180: {Name: "mplsTunnel", DefiningModule: "iana-if-type"},
		181: {Name: "msdsl", DefiningModule: "iana-if-type"},
		182: {Name: "mvl", DefiningModule: "iana-if-type"},
		183: {Name: "myrinet", DefiningModule: "iana-if-type"},
		184: {Name: "nfas", DefiningModule: "iana-if-type"},
		185: {Name: "nsip", DefiningModule: "iana-if-type"},
		186: {Name: "opticalChannel", DefiningModule: "iana-if-type"},
		187: {Name: "opticalChannelGroup", DefiningModule: "iana-if-type"},
		188: {Name: "opticalTransport", DefiningModule: "iana-if-type"},
		189: {Name: "other", DefiningModule: "iana-if-type"},
		190: {Name: "otnOdu", DefiningModule: "iana-if-type"},
		191: {Name: "otnOtu", DefiningModule: "iana-if-type"},
		192: {Name: "para", DefiningModule: "iana-if-type"},
		193: {Name: "pdnEtherLoop1", DefiningModule: "iana-if-type"},
		194: {Name: "pdnEtherLoop2", DefiningModule: "iana-if-type"},
		195: {Name: "pip", DefiningModule: "iana-if-type"},
		196: {Name: "plc", DefiningModule: "iana-if-type"},
		197: {Name: "pon155", DefiningModule: "iana-if-type"},
		198: {Name: "pon622", DefiningModule: "iana-if-type"},
		199: {Name: "pos", DefiningModule: "iana-if-type"},
		200: {Name: "ppp", DefiningModule: "iana-if-type"},
		201: {Name: "pppMultilinkBundle", DefiningModule: "iana-if-type"},
		202: {Name: "primaryISDN", DefiningModule: "iana-if-type"},
		203: {Name: "propAtm", DefiningModule: "iana-if-type"},
		204: {Name: "propBWAp2Mp", DefiningModule: "iana-if-type"},
		205: {Name: "propCnls", DefiningModule: "iana-if-type"},
		206: {Name: "propDocsWirelessDownstream", DefiningModule: "iana-if-type"},
		207: {Name: "propDocsWirelessMaclayer", DefiningModule: "iana-if-type"},
		208: {Name: "propDocsWirelessUpstream", DefiningModule: "iana-if-type"},
		209: {Name: "propMultiplexor", DefiningModule: "iana-if-type"},
		210: {Name: "propPointToPointSerial", DefiningModule: "iana-if-type"},
		211: {Name: "propVirtual", DefiningModule: "iana-if-type"},
		212: {Name: "propWirelessP2P", DefiningModule: "iana-if-type"},
		213: {Name: "proteon10Mbit", DefiningModule: "iana-if-type"},
		214: {Name: "proteon80Mbit", DefiningModule: "iana-if-type"},
		215: {Name: "ptm", DefiningModule: "iana-if-type"},
		216: {Name: "q2931", DefiningModule: "iana-if-type"},
		217: {Name: "qam", DefiningModule: "iana-if-type"},
		218: {Name: "qllc", DefiningModule: "iana-if-type"},
		219: {Name: "radioMAC", DefiningModule: "iana-if-type"},
		220: {Name: "radsl", DefiningModule: "iana-if-type"},
		221: {Name: "reachDSL", DefiningModule: "iana-if-type"},
		222: {Name: "regular1822", DefiningModule: "iana-if-type"},
		223: {Name: "rfc1483", DefiningModule: "iana-if-type"},
		224: {Name: "rfc877x25", DefiningModule: "iana-if-type"},
		225: {Name: "rpr", DefiningModule: "iana-if-type"},
		226: {Name: "rs232", DefiningModule: "iana-if-type"},
		227: {Name: "rsrb", DefiningModule: "iana-if-type"},
		228: {Name: "sdci", DefiningModule: "iana-if-type"},
		229: {Name: "sdlc", DefiningModule: "iana-if-type"},
		230: {Name: "sdsl", DefiningModule: "iana-if-type"},
		231: {Name: "shdsl", DefiningModule: "iana-if-type"},
		232: {Name: "sip", DefiningModule: "iana-if-type"},
		233: {Name: "sipSig", DefiningModule: "iana-if-type"},
		234: {Name: "sipTg", DefiningModule: "iana-if-type"},
		235: {Name: "sixToFour", DefiningModule: "iana-if-type"},
		236: {Name: "slip", DefiningModule: "iana-if-type"},
		237: {Name: "smdsDxi", DefiningModule: "iana-if-type"},
		238: {Name: "smdsIcip", DefiningModule: "iana-if-type"},
		239: {Name: "softwareLoopback", DefiningModule: "iana-if-type"},
		240: {Name: "sonet", DefiningModule: "iana-if-type"},
		241: {Name: "sonetOverheadChannel", DefiningModule: "iana-if-type"},
		242: {Name: "sonetPath", DefiningModule: "iana-if-type"},
		243: {Name: "sonetVT", DefiningModule: "iana-if-type"},
		244: {Name: "srp", DefiningModule: "iana-if-type"},
		245: {Name: "ss7SigLink", DefiningModule: "iana-if-type"},
		246: {Name: "stackToStack", DefiningModule: "iana-if-type"},
		247: {Name: "starLan", DefiningModule: "iana-if-type"},
		248: {Name: "tdlc", DefiningModule: "iana-if-type"},
		249: {Name: "teLink", DefiningModule: "iana-if-type"},
		250: {Name: "termPad", DefiningModule: "iana-if-type"},
		251: {Name: "tr008", DefiningModule: "iana-if-type"},
		252: {Name: "transpHdlc", DefiningModule: "iana-if-type"},
		253: {Name: "tunnel", DefiningModule: "iana-if-type"},
		254: {Name: "ultra", DefiningModule: "iana-if-type"},
		255: {Name: "usb", DefiningModule: "iana-if-type"},
		256: {Name: "v11", DefiningModule: "iana-if-type"},
		257: {Name: "v35", DefiningModule: "iana-if-type"},
		258: {Name: "v36", DefiningModule: "iana-if-type"},
		259: {Name: "v37", DefiningModule: "iana-if-type"},
		260: {Name: "vdsl", DefiningModule: "iana-if-type"},
		261: {Name: "vdsl2", DefiningModule: "iana-if-type"},
		262: {Name: "virtualIpAddress", DefiningModule: "iana-if-type"},
		263: {Name: "virtualTg", DefiningModule: "iana-if-type"},
		264: {Name: "vmwareNicTeam", DefiningModule: "iana-if-type"},
		265: {Name: "vmwareVirtualNic", DefiningModule: "iana-if-type"},
		266: {Name: "voiceDID", DefiningModule: "iana-if-type"},
		267: {Name: "voiceEBS", DefiningModule: "iana-if-type"},
		268: {Name: "voiceEM", DefiningModule: "iana-if-type"},
		269: {Name: "voiceEMFGD", DefiningModule: "iana-if-type"},
		270: {Name: "voiceEncap", DefiningModule: "iana-if-type"},
		271: {Name: "voiceFGDEANA", DefiningModule: "iana-if-type"},
		272: {Name: "voiceFGDOS", DefiningModule: "iana-if-type"},
		273: {Name: "voiceFXO", DefiningModule: "iana-if-type"},
		274: {Name: "voiceFXS", DefiningModule: "iana-if-type"},
		275: {Name: "voiceOverAtm", DefiningModule: "iana-if-type"},
		276: {Name: "voiceOverCable", DefiningModule: "iana-if-type"},
		277: {Name: "voiceOverFrameRelay", DefiningModule: "iana-if-type"},
		278: {Name: "voiceOverIp", DefiningModule: "iana-if-type"},
		279: {Name: "wwanPP", DefiningModule: "iana-if-type"},
		280: {Name: "wwanPP2", DefiningModule: "iana-if-type"},
		281: {Name: "x213", DefiningModule: "iana-if-type"},
		282: {Name: "x25huntGroup", DefiningModule: "iana-if-type"},
		283: {Name: "x25mlp", DefiningModule: "iana-if-type"},
		284: {Name: "x25ple", DefiningModule: "iana-if-type"},
		285: {Name: "x86Laps", DefiningModule: "iana-if-type"},
		286: {Name: "xboxWireless", DefiningModule: "iana-if-type"},
	},
	"E_Icmpv4Types_CODE": {
		1:  {Name: "DST_UNREACHABLE_ADMIN_PROHIBITED", DefiningModule: "openconfig-icmpv4-types"},
		2:  {Name: "DST_UNREACHABLE_CANNOT_FRAGMENT", DefiningModule: "openconfig-icmpv4-types"},
		3:  {Name: "DST_UNREACHABLE_CODE", DefiningModule: "openconfig-icmpv4-types"},
		4:  {Name: "DST_UNREACHABLE_DST_HOST_ADMIN_PROHIBITED", DefiningModule: "openconfig-icmpv4-types"},
		5:  {Name: "DST_UNREACHABLE_DST_HOST_UNKNOWN", DefiningModule: "openconfig-icmpv4-types"},
		6:  {Name: "DST_UNREACHABLE_DST_NET_ADMIN_PROHIBITED", DefiningModule: "openconfig-icmpv4-types"},
		7:  {Name: "DST_UNREACHABLE_DST_NET_UNKNOWN", DefiningModule: "openconfig-icmpv4-types"},
		8:  {Name: "DST_UNREACHABLE_HOST", DefiningModule: "openconfig-icmpv4-types"},
		9:  {Name: "DST_UNREACHABLE_HOST_PRECEDENCE_VIOLATION", DefiningModule: "openconfig-icmpv4-types"},
		10: {Name: "DST_UNREACHABLE_HOST_UNREACHABLE_FOR_TOS", DefiningModule: "openconfig-icmpv4-types"},
		11: {Name: "DST_UNREACHABLE_NET", DefiningModule: "openconfig-icmpv4-types"},
		12: {Name: "DST_UNREACHABLE_NET_UNREACHABLE_FOR_TOS", DefiningModule: "openconfig-icmpv4-types"},
		13: {Name: "DST_UNREACHABLE_PORT", DefiningModule: "openconfig-icmpv4-types"},
		14: {Name: "DST_UNREACHABLE_PRECEDENCE_CUTOFF", DefiningModule: "openconfig-icmpv4-types"},
		15: {Name: "DST_UNREACHABLE_PROTOCOL", DefiningModule: "openconfig-icmpv4-types"},
		16: {Name: "DST_UNREACHABLE_SRC_HOST_ISOLATED", DefiningModule: "openconfig-icmpv4-types"},
		17: {Name: "DST_UNREACHABLE_SRC_ROUTE_FAILED", DefiningModule: "openconfig-icmpv4-types"},
		18: {Name: "ECHO_CODE", DefiningModule: "openconfig-icmpv4-types"},
		19: {Name: "ECHO_NO_CODE", DefiningModule: "openconfig-icmpv4-types"},
		20: {Name: "ECHO_REPLY_CODE", DefiningModule: "openconfig-icmpv4-types"},
		21: {Name: "ECHO_REPLY_NONE", DefiningModule: "openconfig-icmpv4-types"},
		22: {Name: "EXT_ECHO_REPLY_CODE", DefiningModule: "openconfig-icmpv4-types"},
		23: {Name: "EXT_ECHO_REPLY_MALFORMED_QUERY", DefiningModule: "openconfig-icmpv4-types"},
		24: {Name: "EXT_ECHO_REPLY_MULTIPLE_INTF_SATISFY_QUERY", DefiningModule: "openconfig-icmpv4-types"},
		25: {Name: "EXT_ECHO_REPLY_NO_ERROR", DefiningModule: "openconfig-icmpv4-types"},
		26: {Name: "EXT_ECHO_REPLY_NO_SUB_TABLE_ENTRY", DefiningModule: "openconfig-icmpv4-types"},
		27: {Name: "EXT_ECHO_REPLY_NO_SUCH_INTF", DefiningModule: "openconfig-icmpv4-types"},
		28: {Name: "EXT_ECHO_REQUEST_CODE", DefiningModule: "openconfig-icmpv4-types"},
		29: {Name: "EXT_ECHO_REQUEST_NO_ERROR", DefiningModule: "openconfig-icmpv4-types"},
		30: {Name: "PARAM_PROBLEM_BAD_LENGTH", DefiningModule: "openconfig-icmpv4-types"},
		31: {Name: "PARAM_PROBLEM_CODE", DefiningModule: "openconfig-icmpv4-types"},
		32: {Name: "PARAM_PROBLEM_MISSING_REQ_OPTION", DefiningModule: "openconfig-icmpv4-types"},
		33: {Name: "PARAM_PROBLEM_POINTER_INDICATES_ERR", DefiningModule: "openconfig-icmpv4-types"},
		34: {Name: "PHOTURIS_AUTH_FAILED", DefiningModule: "openconfig-icmpv4-types"},
		35: {Name: "PHOTURIS_BAD_SPI", DefiningModule: "openconfig-icmpv4-types"},
		36: {Name: "PHOTURIS_CODE", DefiningModule: "openconfig-icmpv4-types"},
		37: {Name: "PHOTURIS_DECOMPRESS_FAILED", DefiningModule: "openconfig-icmpv4-types"},
		38: {Name: "PHOTURIS_DECRYPTION_FAILED", DefiningModule: "openconfig-icmpv4-types"},
		39: {Name: "PHOTURIS_NEED_AUTHENTICATION", DefiningModule: "openconfig-icmpv4-types"},
		40: {Name: "PHOTURIS_NEED_AUTHORIZATION", DefiningModule: "openconfig-icmpv4-types"},
		41: {Name: "REDIRECT_CODE", DefiningModule: "openconfig-icmpv4-types"},
		42: {Name: "REDIRECT_HOST", DefiningModule: "openconfig-icmpv4-types"},
		43: {Name: "REDIRECT_NETWORK", DefiningModule: "openconfig-icmpv4-types"},
		44: {Name: "REDIRECT_TOS_HOST", DefiningModule: "openconfig-icmpv4-types"},
		45: {Name: "REDIRECT_TOS_NETWORK", DefiningModule: "openconfig-icmpv4-types"},
		46: {Name: "ROUTER_ADVERTISEMENT_CODE", DefiningModule: "openconfig-icmpv4-types"},
		47: {Name: "ROUTER_ADVERTISEMENT_DOES_NOT_ROUTE_COMMON", DefiningModule: "openconfig-icmpv4-types"},
		48: {Name: "ROUTER_ADVERTISEMENT_NORMAL", DefiningModule: "openconfig-icmpv4-types"},
		49: {Name: "ROUTER_SELECTION_CODE", DefiningModule: "openconfig-icmpv4-types"},
		50: {Name: "ROUTER_SELECTION_NO_CODE", DefiningModule: "openconfig-icmpv4-types"},
		51: {Name: "TIMESTAMP_CODE", DefiningModule: "openconfig-icmpv4-types"},
		52: {Name: "TIMESTAMP_NO_CODE", DefiningModule: "openconfig-icmpv4-types"},
		53: {Name: "TIMESTAMP_REPLY_CODE", DefiningModule: "openconfig-icmpv4-types"},
		54: {Name: "TIMESTAMP_REPLY_NO_CODE", DefiningModule: "openconfig-icmpv4-types"},
		55: {Name: "TIME_EXCEEDED_CODE", DefiningModule: "openconfig-icmpv4-types"},
		56: {Name: "TIME_EXCEEDED_FRAGMENT_REASSEMBLY_IN_TRANSIT", DefiningModule: "openconfig-icmpv4-types"},
		57: {Name: "TIME_EXCEEDED_IN_TRANSIT", DefiningModule: "openconfig-icmpv4-types"},
	},
	"E_Icmpv4Types_TYPE": {
		1:  {Name: "DST_UNREACHABLE", DefiningModule: "openconfig-icmpv4-types"},
		2:  {Name: "ECHO", DefiningModule: "openconfig-icmpv4-types"},
		3:  {Name: "ECHO_REPLY", DefiningModule: "openconfig-icmpv4-types"},
		4:  {Name: "EXT_ECHO_REPLY", DefiningModule: "openconfig-icmpv4-types"},
		5:  {Name: "EXT_ECHO_REQUEST", DefiningModule: "openconfig-icmpv4-types"},
		6:  {Name: "PARAM_PROBLEM", DefiningModule: "openconfig-icmpv4-types"},
		7:  {Name: "PHOTURIS", DefiningModule: "openconfig-icmpv4-types"},
		8:  {Name: "REDIRECT", DefiningModule: "openconfig-icmpv4-types"},
		9:  {Name: "ROUTER_ADVERTISEMENT", DefiningModule: "openconfig-icmpv4-types"},
		10: {Name: "ROUTER_SOLICITATION", DefiningModule: "openconfig-icmpv4-types"},
		11: {Name: "TIMESTAMP", DefiningModule: "openconfig-icmpv4-types"},
		12: {Name: "TIMESTAMP_REPLY", DefiningModule: "openconfig-icmpv4-types"},
		13: {Name: "TIME_EXCEEDED", DefiningModule: "openconfig-icmpv4-types"},
		14: {Name: "TRACEROUTE", DefiningModule: "openconfig-icmpv4-types"},
	},
	"E_Icmpv6Types_CODE": {
		1:  {Name: "DST_UNREACHABLE_ADDR", DefiningModule: "openconfig-icmpv6-types"},
		2:  {Name: "DST_UNREACHABLE_BEYOND_SCOPE_OF_SRC", DefiningModule: "openconfig-icmpv6-types"},
		3:  {Name: "DST_UNREACHABLE_CODE", DefiningModule: "openconfig-icmpv6-types"},
		4:  {Name: "DST_UNREACHABLE_DST_ADMIN_PROHIBITED", DefiningModule: "openconfig-icmpv6-types"},
		5:  {Name: "DST_UNREACHABLE_ERR_IN_SRC_ROUTING_HDR", DefiningModule: "openconfig-icmpv6-types"},
		6:  {Name: "DST_UNREACHABLE_HDRS_TOO_LONG", DefiningModule: "openconfig-icmpv6-types"},
		7:  {Name: "DST_UNREACHABLE_NO_ROUTE_TO_DST", DefiningModule: "openconfig-icmpv6-types"},
		8:  {Name: "DST_UNREACHABLE_PORT", DefiningModule: "openconfig-icmpv6-types"},
		9:  {Name: "DST_UNREACHABLE_REJECT_ROUTE_TO_DST", DefiningModule: "openconfig-icmpv6-types"},
		10: {Name: "DST_UNREACHABLE_SRC_ADDR_FAILED_POLICY", DefiningModule: "openconfig-icmpv6-types"},
		11: {Name: "DUPLICATE_ADDRESS_REPLY_CODE", DefiningModule: "openconfig-icmpv6-types"},
		12: {Name: "DUPLICATE_ADDRESS_REPLY_DAC", DefiningModule: "openconfig-icmpv6-types"},
		13: {Name: "DUPLICATE_ADDRESS_REPLY_EDAC_ROVR128", DefiningModule: "openconfig-icmpv6-types"},
		14: {Name: "DUPLICATE_ADDRESS_REPLY_EDAC_ROVR192", DefiningModule: "openconfig-icmpv6-types"},
		15: {Name: "DUPLICATE_ADDRESS_REPLY_EDAC_ROVR256", DefiningModule: "openconfig-icmpv6-types"},
		16: {Name: "DUPLICATE_ADDRESS_REPLY_EDAC_ROVR64", DefiningModule: "openconfig-icmpv6-types"},
		17: {Name: "DUPLICATE_ADDRESS_REQUEST_CODE", DefiningModule: "openconfig-icmpv6-types"},
		18: {Name: "DUPLICATE_ADDRESS_REQUEST_DAR", DefiningModule: "openconfig-icmpv6-types"},
		19: {Name: "DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR128", DefiningModule: "openconfig-icmpv6-types"},
		20: {Name: "DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR192", DefiningModule: "openconfig-icmpv6-types"},
		21: {Name: "DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR256", DefiningModule: "openconfig-icmpv6-types"},
		22: {Name: "DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR64", DefiningModule: "openconfig-icmpv6-types"},
		23: {Name: "ECHO_REPLY_CODE", DefiningModule: "openconfig-icmpv6-types"},
		24: {Name: "ECHO_REPLY_NO_CODE", DefiningModule: "openconfig-icmpv6-types"},
		25: {Name: "ECHO_REQUEST_CODE", DefiningModule: "openconfig-icmpv6-types"},
		26: {Name: "ECHO_REQUEST_NO_CODE", DefiningModule: "openconfig-icmpv6-types"},
		27: {Name: "EXT_ECHO_REPLY_CODE", DefiningModule: "openconfig-icmpv6-types"},
		28: {Name: "EXT_ECHO_REPLY_MALFORMED_QUERY", DefiningModule: "openconfig-icmpv6-types"},
		29: {Name: "EXT_ECHO_REPLY_MULTIPLE_INTF_SATISFY_QUERY", DefiningModule: "openconfig-icmpv6-types"},
		30: {Name: "EXT_ECHO_REPLY_NO_ERROR", DefiningModule: "openconfig-icmpv6-types"},
		31: {Name: "EXT_ECHO_REPLY_NO_SUCH_INTERFACE", DefiningModule: "openconfig-icmpv6-types"},
		32: {Name: "EXT_ECHO_REPLY_NO_SUCH_TABLE_ENTRY", DefiningModule: "openconfig-icmpv6-types"},
		33: {Name: "EXT_ECHO_REQUEST_CODE", DefiningModule: "openconfig-icmpv6-types"},
		34: {Name: "EXT_ECHO_REQUEST_NO_ERROR", DefiningModule: "openconfig-icmpv6-types"},
		35: {Name: "HOME_AGENT_ADDRESS_DISCOVERY_REPLY_CODE", DefiningModule: "openconfig-icmpv6-types"},
		36: {Name: "HOME_AGENT_ADDRESS_DISCOVERY_REPLY_NO_CODE", DefiningModule: "openconfig-icmpv6-types"},
		37: {Name: "HOME_AGENT_ADDRESS_DISCOVERY_REQUEST_CODE", DefiningModule: "openconfig-icmpv6-types"},
		38: {Name: "HOME_AGENT_ADDRESS_DISCOVERY_REQUEST_NO_CODE", DefiningModule: "openconfig-icmpv6-types"},
		39: {Name: "INVERSE_NEIGHBOR_ADVERTISEMENT_CODE", DefiningModule: "openconfig-icmpv6-types"},
		40: {Name: "INVERSE_NEIGHBOR_ADVERTISEMENT_NO_CODE", DefiningModule: "openconfig-icmpv6-types"},
		41: {Name: "INVERSE_NEIGHBOR_SOLICITATION_CODE", DefiningModule: "openconfig-icmpv6-types"},
		42: {Name: "INVERSE_NEIGHBOR_SOLICITATION_NO_CODE", DefiningModule: "openconfig-icmpv6-types"},
		43: {Name: "MOBILE_PREFIX_ADVERTISEMENT_CODE", DefiningModule: "openconfig-icmpv6-types"},
		44: {Name: "MOBILE_PREFIX_ADVERTISEMENT_NO_CODE", DefiningModule: "openconfig-icmpv6-types"},
		45: {Name: "MOBILE_PREFIX_SOLICITATION_CODE", DefiningModule: "openconfig-icmpv6-types"},
		46: {Name: "MOBILE_PREFIX_SOLICITATION_NO_CODE", DefiningModule: "openconfig-icmpv6-types"},
		47: {Name: "MULTICAST_LISTENER_DONE_CODE", DefiningModule: "openconfig-icmpv6-types"},
		48: {Name: "MULTICAST_LISTENER_DONE_NO_CODE", DefiningModule: "openconfig-icmpv6-types"},
		49: {Name: "MULTICAST_LISTENER_QUERY_CODE", DefiningModule: "openconfig-icmpv6-types"},
		50: {Name: "MULTICAST_LISTENER_QUERY_NO_CODE", DefiningModule: "openconfig-icmpv6-types"},
		51: {Name: "MULTICAST_LISTENER_REPORT_CODE", DefiningModule: "openconfig-icmpv6-types"},
		52: {Name: "MULTICAST_LISTENER_REPORT_NO_CODE", DefiningModule: "openconfig-icmpv6-types"},
		53: {Name: "NDDE_INFORMATION_RESPONSE_CODE", DefiningModule: "openconfig-icmpv6-types"},
		54: {Name: "NEIGHBOR_ADVERTISEMENT_CODE", DefiningModule: "openconfig-icmpv6-types"},
		55: {Name: "NEIGHBOR_ADVERTISEMENT_NO_CODE", DefiningModule: "openconfig-icmpv6-types"},
		56: {Name: "NEIGHBOR_SOLICITATION_CODE", DefiningModule: "openconfig-icmpv6-types"},
		57: {Name: "NEIGHBOR_SOLICITATION_NO_CODE", DefiningModule: "openconfig-icmpv6-types"},
		58: {Name: "NODE_INFORMATION_QUERY_CODE", DefiningModule: "openconfig-icmpv6-types"},
		59: {Name: "NODE_INFORMATION_QUERY_IPV4_ADDR", DefiningModule: "openconfig-icmpv6-types"},
		60: {Name: "NODE_INFORMATION_QUERY_IPV6_ADDR", DefiningModule: "openconfig-icmpv6-types"},
		61: {Name: "NODE_INFORMATION_QUERY_NAME", DefiningModule: "openconfig-icmpv6-types"},
		62: {Name: "NODE_INFORMATION_RESPONSE_REFUSED", DefiningModule: "openconfig-icmpv6-types"},
		63: {Name: "NODE_INFORMATION_RESPONSE_SUCCESS", DefiningModule: "openconfig-icmpv6-types"},
		64: {Name: "NODE_INFORMATION_RESPONSE_UNKNOWN", DefiningModule: "openconfig-icmpv6-types"},
		65: {Name: "PACKET_TOO_BIG_CODE", DefiningModule: "openconfig-icmpv6-types"},
		66: {Name: "PACKET_TOO_BIG_NO_CODE", DefiningModule: "openconfig-icmpv6-types"},
		67: {Name: "PARAM_PROBLEM_CODE", DefiningModule: "openconfig-icmpv6-types"},
		68: {Name: "PARAM_PROBLEM_ERR_HDR_FIELD", DefiningModule: "openconfig-icmpv6-types"},
		69: {Name: "PARAM_PROBLEM_EXT_HDR_CHAIN_TOO_LONG", DefiningModule: "openconfig-icmpv6-types"},
		70: {Name: "PARAM_PROBLEM_EXT_HDR_TOO_BIG", DefiningModule: "openconfig-icmpv6-types"},
		71: {Name: "PARAM_PROBLEM_INCOMPLETE_HDR_CHAIN", DefiningModule: "openconfig-icmpv6-types"},
		72: {Name: "PARAM_PROBLEM_OPT_TOO_BIG", DefiningModule: "openconfig-icmpv6-types"},
		73: {Name: "PARAM_PROBLEM_SR_UPPER_HDR_ERR", DefiningModule: "openconfig-icmpv6-types"},
		74: {Name: "PARAM_PROBLEM_TOO_MANY_EXT_HDRS", DefiningModule: "openconfig-icmpv6-types"},
		75: {Name: "PARAM_PROBLEM_TOO_MANY_OPTS", DefiningModule: "openconfig-icmpv6-types"},
		76: {Name: "PARAM_PROBLEM_UNRECOGNIZED_IPV6_OPT", DefiningModule: "openconfig-icmpv6-types"},
		77: {Name: "PARAM_PROBLEM_UNRECOGNIZED_NET_HDR_TYPE", DefiningModule: "openconfig-icmpv6-types"},
		78: {Name: "PARAM_PROBLEM_UNRECOGNIZED_NEXT_HDR_TYPE", DefiningModule: "openconfig-icmpv6-types"},
		79: {Name: "REDIRECT_CODE", DefiningModule: "openconfig-icmpv6-types"},
		80: {Name: "REDIRECT_NO_CODE", DefiningModule: "openconfig-icmpv6-types"},
		81: {Name: "RENUMBERING_CODE", DefiningModule: "openconfig-icmpv6-types"},
		82: {Name: "RENUMBERING_COMMAND", DefiningModule: "openconfig-icmpv6-types"},
		83: {Name: "RENUNBERING_RESULT", DefiningModule: "openconfig-icmpv6-types"},
		84: {Name: "RENUNBERING_SEQ_NUM_RESET", DefiningModule: "openconfig-icmpv6-types"},
		85: {Name: "ROUTER_ADVERTISEMENT_CODE", DefiningModule: "openconfig-icmpv6-types"},
		86: {Name: "ROUTER_ADVERTISEMENT_NO_CODE", DefiningModule: "openconfig-icmpv6-types"},
		87: {Name: "ROUTER_SOLICITATION_CODE", DefiningModule: "openconfig-icmpv6-types"},
		88: {Name: "ROUTER_SOLICITATION_NO_CODE", DefiningModule: "openconfig-icmpv6-types"},
		89: {Name: "TIME_EXCEEDED_CODE", DefiningModule: "openconfig-icmpv6-types"},
		90: {Name: "TIME_EXCEEDED_FRAGMENT_REASSEMBLY", DefiningModule: "openconfig-icmpv6-types"},
		91: {Name: "TIME_EXCEEDED_HOP_LIMIT", DefiningModule: "openconfig-icmpv6-types"},
	},
	"E_Icmpv6Types_TYPE": {
		1:  {Name: "CERTIFICATION_PATH_ADVERTISEMENT", DefiningModule: "openconfig-icmpv6-types"},
		2:  {Name: "CERTIFICATION_PATH_SOLICITATION", DefiningModule: "openconfig-icmpv6-types"},
		3:  {Name: "DESTINATION_UNREACHABLE", DefiningModule: "openconfig-icmpv6-types"},
		4:  {Name: "DUPLICATE_ADDRESS_CONFIRMATION", DefiningModule: "openconfig-icmpv6-types"},
		5:  {Name: "DUPLICATE_ADDRESS_REQUEST", DefiningModule: "openconfig-icmpv6-types"},
		6:  {Name: "ECHO_REPLY", DefiningModule: "openconfig-icmpv6-types"},
		7:  {Name: "ECHO_REQUEST", DefiningModule: "openconfig-icmpv6-types"},
		8:  {Name: "EXT_ECHO_REPLY", DefiningModule: "openconfig-icmpv6-types"},
		9:  {Name: "EXT_ECHO_REQUEST", DefiningModule: "openconfig-icmpv6-types"},
		10: {Name: "FMIPV6", DefiningModule: "openconfig-icmpv6-types"},
		11: {Name: "HOME_AGENT_ADDRESS_DISCOVERY_REPLY", DefiningModule: "openconfig-icmpv6-types"},
		12: {Name: "HOME_AGENT_ADDRESS_DISCOVERY_REQUEST", DefiningModule: "openconfig-icmpv6-types"},
		13: {Name: "ILNPV6_LOCATOR_UPDATE", DefiningModule: "openconfig-icmpv6-types"},
		14: {Name: "INVERSE_NEIGHBOR_ADVERTISEMENT", DefiningModule: "openconfig-icmpv6-types"},
		15: {Name: "INVERSE_NEIGHBOR_SOLICITATION", DefiningModule: "openconfig-icmpv6-types"},
		16: {Name: "MOBILE_PREFIX_ADVERTISEMENT", DefiningModule: "openconfig-icmpv6-types"},
		17: {Name: "MOBILE_PREFIX_SOLICITATION", DefiningModule: "openconfig-icmpv6-types"},
		18: {Name: "MPL_CONTROL", DefiningModule: "openconfig-icmpv6-types"},
		19: {Name: "MULTICAST_LISTENER_DONE", DefiningModule: "openconfig-icmpv6-types"},
		20: {Name: "MULTICAST_LISTENER_QUERY", DefiningModule: "openconfig-icmpv6-types"},
		21: {Name: "MULTICAST_LISTENER_REPORT", DefiningModule: "openconfig-icmpv6-types"},
		22: {Name: "MULTICAST_ROUTER_ADVERTISEMENT", DefiningModule: "openconfig-icmpv6-types"},
		23: {Name: "MULTICAST_ROUTER_SOLICITATION", DefiningModule: "openconfig-icmpv6-types"},
		24: {Name: "MULTICAST_ROUTER_TERMINATION", DefiningModule: "openconfig-icmpv6-types"},
		25: {Name: "NEIGHBOR_ADVERTISEMENT", DefiningModule: "openconfig-icmpv6-types"},
		26: {Name: "NEIGHBOR_SOLICITATION", DefiningModule: "openconfig-icmpv6-types"},
		27: {Name: "NODE_INFORMATION_QUERY", DefiningModule: "openconfig-icmpv6-types"},
		28: {Name: "NODE_INFORMATION_RESPONSE", DefiningModule: "openconfig-icmpv6-types"},
		29: {Name: "PACKET_TOO_BIG", DefiningModule: "openconfig-icmpv6-types"},
		30: {Name: "PARAMETER_PROBLEM", DefiningModule: "openconfig-icmpv6-types"},
		31: {Name: "REDIRECT", DefiningModule: "openconfig-icmpv6-types"},
		32: {Name: "RENUNBERING", DefiningModule: "openconfig-icmpv6-types"},
		33: {Name: "ROUTER_ADVERTISEMENT", DefiningModule: "openconfig-icmpv6-types"},
		34: {Name: "ROUTER_SOLICITATION", DefiningModule: "openconfig-icmpv6-types"},
		35: {Name: "RPL_CONTROL", DefiningModule: "openconfig-icmpv6-types"},
		36: {Name: "TIME_EXCEEDED", DefiningModule: "openconfig-icmpv6-types"},
		37: {Name: "VERSION2_MULTICAST_LISTENER", DefiningModule: "openconfig-icmpv6-types"},
	},
	"E_IfAggregate_AggregationType": {
		1: {Name: "LACP"},
		2: {Name: "STATIC"},
	},
	"E_IfEthernet_ETHERNET_SPEED": {
		1:  {Name: "SPEED_100GB", DefiningModule: "openconfig-if-ethernet"},
		2:  {Name: "SPEED_100MB", DefiningModule: "openconfig-if-ethernet"},
		3:  {Name: "SPEED_10GB", DefiningModule: "openconfig-if-ethernet"},
		4:  {Name: "SPEED_10MB", DefiningModule: "openconfig-if-ethernet"},
		5:  {Name: "SPEED_1GB", DefiningModule: "openconfig-if-ethernet"},
		6:  {Name: "SPEED_200GB", DefiningModule: "openconfig-if-ethernet"},
		7:  {Name: "SPEED_2500MB", DefiningModule: "openconfig-if-ethernet"},
		8:  {Name: "SPEED_25GB", DefiningModule: "openconfig-if-ethernet"},
		9:  {Name: "SPEED_400GB", DefiningModule: "openconfig-if-ethernet"},
		10: {Name: "SPEED_40GB", DefiningModule: "openconfig-if-ethernet"},
		11: {Name: "SPEED_50GB", DefiningModule: "openconfig-if-ethernet"},
		12: {Name: "SPEED_5GB", DefiningModule: "openconfig-if-ethernet"},
		13: {Name: "SPEED_600GB", DefiningModule: "openconfig-if-ethernet"},
		14: {Name: "SPEED_800GB", DefiningModule: "openconfig-if-ethernet"},
		15: {Name: "SPEED_UNKNOWN", DefiningModule: "openconfig-if-ethernet"},
	},
	"E_IfEthernet_INTERFACE_FEC": {
		1: {Name: "FEC_DISABLED", DefiningModule: "openconfig-if-ethernet"},
		2: {Name: "FEC_FC", DefiningModule: "openconfig-if-ethernet"},
		3: {Name: "FEC_RS528", DefiningModule: "openconfig-if-ethernet"},
		4: {Name: "FEC_RS544", DefiningModule: "openconfig-if-ethernet"},
		5: {Name: "FEC_RS544_2X_INTERLEAVE", DefiningModule: "openconfig-if-ethernet"},
	},
	"E_IfIp_IpAddressOrigin": {
		1: {Name: "OTHER"},
		2: {Name: "STATIC"},
		3: {Name: "DHCP"},
		4: {Name: "LINK_LAYER"},
		5: {Name: "RANDOM"},
	},
	"E_IfIp_Ipv4AddressType": {
		1: {Name: "PRIMARY"},
		2: {Name: "SECONDARY"},
	},
	"E_IfIp_NeighborOrigin": {
		1: {Name: "OTHER"},
		2: {Name: "STATIC"},
		3: {Name: "DYNAMIC"},
	},
	"E_IgpFloodingBandwidth_ThresholdSpecification": {
		1: {Name: "MIRRORED_UP_DOWN"},
		2: {Name: "SEPARATE_UP_DOWN"},
	},
	"E_IgpFloodingBandwidth_ThresholdType": {
		1: {Name: "DELTA"},
		2: {Name: "THRESHOLD_CROSSED"},
	},
	"E_ImportExportPolicy_ExportRouteTarget_Enum": {
		1: {Name: "AUTO"},
	},
	"E_ImportExportPolicy_ImportRouteTarget_Enum": {
		1: {Name: "AUTO"},
	},
	"E_InetTypes_Ipv6AddressType": {
		1: {Name: "GLOBAL_UNICAST"},
		2: {Name: "LINK_LOCAL_UNICAST"},
	},
	"E_Interface_AdminStatus": {
		1: {Name: "UP"},
		2: {Name: "DOWN"},
		3: {Name: "TESTING"},
	},
	"E_Interface_IrbAnycastGateway": {
		1: {Name: "DISTRIBUTED_SYMETRIC"},
		2: {Name: "DISTRIBUTED_ASYMETRIC"},
		3: {Name: "HYBRID"},
		4: {Name: "CENTRALIZED"},
	},
	"E_Interface_OperStatus": {
		2: {Name: "UP"},
		3: {Name: "DOWN"},
		4: {Name: "TESTING"},
		5: {Name: "UNKNOWN"},
		6: {Name: "DORMANT"},
		7: {Name: "NOT_PRESENT"},
		8: {Name: "LOWER_LAYER_DOWN"},
	},
	"E_Ipv4Srlg_Flags": {
		1: {Name: "NUMBERED"},
	},
	"E_Ipv6Srlg_Flags": {
		1: {Name: "NA"},
	},
	"E_IsisLsdbTypes_ISIS_SUBTLV_TYPE": {
		1:  {Name: "IP_REACHABILITY_IPV4_ROUTER_ID", DefiningModule: "openconfig-isis-lsdb-types"},
		2:  {Name: "IP_REACHABILITY_IPV6_ROUTER_ID", DefiningModule: "openconfig-isis-lsdb-types"},
		3:  {Name: "IP_REACHABILITY_PREFIX_FLAGS", DefiningModule: "openconfig-isis-lsdb-types"},
		4:  {Name: "IP_REACHABILITY_PREFIX_SID", DefiningModule: "openconfig-isis-lsdb-types"},
		5:  {Name: "IP_REACHABILITY_SUBTLVS_TYPE", DefiningModule: "openconfig-isis-lsdb-types"},
		6:  {Name: "IP_REACHABILITY_TAG", DefiningModule: "openconfig-isis-lsdb-types"},
		7:  {Name: "IP_REACHABILITY_TAG64", DefiningModule: "openconfig-isis-lsdb-types"},
		8:  {Name: "IS_REACHABILITY_ADJ_LAN_SID", DefiningModule: "openconfig-isis-lsdb-types"},
		9:  {Name: "IS_REACHABILITY_ADJ_SID", DefiningModule: "openconfig-isis-lsdb-types"},
		10: {Name: "IS_REACHABILITY_ADMIN_GROUP", DefiningModule: "openconfig-isis-lsdb-types"},
		11: {Name: "IS_REACHABILITY_AVAILABLE_BANDWIDTH", DefiningModule: "openconfig-isis-lsdb-types"},
		12: {Name: "IS_REACHABILITY_BANDWIDTH_CONSTRAINTS", DefiningModule: "openconfig-isis-lsdb-types"},
		13: {Name: "IS_REACHABILITY_EXTENDED_ADMIN_GROUP", DefiningModule: "openconfig-isis-lsdb-types"},
		14: {Name: "IS_REACHABILITY_IPV4_INTERFACE_ADDRESS", DefiningModule: "openconfig-isis-lsdb-types"},
		15: {Name: "IS_REACHABILITY_IPV4_NEIGHBOR_ADDRESS", DefiningModule: "openconfig-isis-lsdb-types"},
		16: {Name: "IS_REACHABILITY_IPV6_INTERFACE_ADDRESS", DefiningModule: "openconfig-isis-lsdb-types"},
		17: {Name: "IS_REACHABILITY_IPV6_NEIGHBOR_ADDRESS", DefiningModule: "openconfig-isis-lsdb-types"},
		18: {Name: "IS_REACHABILITY_LINK_ATTRIBUTES", DefiningModule: "openconfig-isis-lsdb-types"},
		19: {Name: "IS_REACHABILITY_LINK_DELAY", DefiningModule: "openconfig-isis-lsdb-types"},
		20: {Name: "IS_REACHABILITY_LINK_DELAY_VARIATION", DefiningModule: "openconfig-isis-lsdb-types"},
		21: {Name: "IS_REACHABILITY_LINK_ID", DefiningModule: "openconfig-isis-lsdb-types"},
		22: {Name: "IS_REACHABILITY_LINK_LOSS", DefiningModule: "openconfig-isis-lsdb-types"},
		23: {Name: "IS_REACHABILITY_LINK_PROTECTION_TYPE", DefiningModule: "openconfig-isis-lsdb-types"},
		24: {Name: "IS_REACHABILITY_MAX_LINK_BANDWIDTH", DefiningModule: "openconfig-isis-lsdb-types"},
		25: {Name: "IS_REACHABILITY_MAX_RESERVABLE_BANDWIDTH", DefiningModule: "openconfig-isis-lsdb-types"},
		26: {Name: "IS_REACHABILITY_MIN_MAX_LINK_DELAY", DefiningModule: "openconfig-isis-lsdb-types"},
		27: {Name: "IS_REACHABILITY_RESIDUAL_BANDWIDTH", DefiningModule: "openconfig-isis-lsdb-types"},
		28: {Name: "IS_REACHABILITY_SUBTLVS_TYPE", DefiningModule: "openconfig-isis-lsdb-types"},
		29: {Name: "IS_REACHABILITY_TE_DEFAULT_METRIC", DefiningModule: "openconfig-isis-lsdb-types"},
		30: {Name: "IS_REACHABILITY_UNCONSTRAINED_LSP", DefiningModule: "openconfig-isis-lsdb-types"},
		31: {Name: "IS_REACHABILITY_UNRESERVED_BANDWIDTH", DefiningModule: "openconfig-isis-lsdb-types"},
		32: {Name: "IS_REACHABILITY_UTILIZED_BANDWIDTH", DefiningModule: "openconfig-isis-lsdb-types"},
		33: {Name: "ROUTER_CAPABILITY_SR_ALGORITHM", DefiningModule: "openconfig-isis-lsdb-types"},
		34: {Name: "ROUTER_CAPABILITY_SR_CAPABILITY", DefiningModule: "openconfig-isis-lsdb-types"},
		35: {Name: "ROUTER_CAPABILITY_SUBTLVS_TYPE", DefiningModule: "openconfig-isis-lsdb-types"},
	},
	"E_IsisLsdbTypes_ISIS_TLV_TYPE": {
		1:  {Name: "AREA_ADDRESSES", DefiningModule: "openconfig-isis-lsdb-types"},
		2:  {Name: "AUTHENTICATION", DefiningModule: "openconfig-isis-lsdb-types"},
		3:  {Name: "DYNAMIC_NAME", DefiningModule: "openconfig-isis-lsdb-types"},
		4:  {Name: "EXTENDED_IPV4_REACHABILITY", DefiningModule: "openconfig-isis-lsdb-types"},
		5:  {Name: "EXTENDED_IS_REACHABILITY", DefiningModule: "openconfig-isis-lsdb-types"},
		6:  {Name: "IIS_NEIGHBORS", DefiningModule: "openconfig-isis-lsdb-types"},
		7:  {Name: "INSTANCE_ID", DefiningModule: "openconfig-isis-lsdb-types"},
		8:  {Name: "IPV4_EXTERNAL_REACHABILITY", DefiningModule: "openconfig-isis-lsdb-types"},
		9:  {Name: "IPV4_INTERFACE_ADDRESSES", DefiningModule: "openconfig-isis-lsdb-types"},
		10: {Name: "IPV4_INTERNAL_REACHABILITY", DefiningModule: "openconfig-isis-lsdb-types"},
		11: {Name: "IPV4_SRLG", DefiningModule: "openconfig-isis-lsdb-types"},
		12: {Name: "IPV4_TE_ROUTER_ID", DefiningModule: "openconfig-isis-lsdb-types"},
		13: {Name: "IPV6_INTERFACE_ADDRESSES", DefiningModule: "openconfig-isis-lsdb-types"},
		14: {Name: "IPV6_REACHABILITY", DefiningModule: "openconfig-isis-lsdb-types"},
		15: {Name: "IPV6_SRLG", DefiningModule: "openconfig-isis-lsdb-types"},
		16: {Name: "IPV6_TE_ROUTER_ID", DefiningModule: "openconfig-isis-lsdb-types"},
		17: {Name: "ISIS_ALIAS_ID", DefiningModule: "openconfig-isis-lsdb-types"},
		18: {Name: "IS_NEIGHBOR_ATTRIBUTE", DefiningModule: "openconfig-isis-lsdb-types"},
		19: {Name: "LSP_BUFFER_SIZE", DefiningModule: "openconfig-isis-lsdb-types"},
		20: {Name: "MT_IPV4_REACHABILITY", DefiningModule: "openconfig-isis-lsdb-types"},
		21: {Name: "MT_IPV6_REACHABILITY", DefiningModule: "openconfig-isis-lsdb-types"},
		22: {Name: "MT_ISN", DefiningModule: "openconfig-isis-lsdb-types"},
		23: {Name: "MT_IS_NEIGHBOR_ATTRIBUTE", DefiningModule: "openconfig-isis-lsdb-types"},
		24: {Name: "MULTI_TOPOLOGY", DefiningModule: "openconfig-isis-lsdb-types"},
		25: {Name: "NLPID", DefiningModule: "openconfig-isis-lsdb-types"},
		26: {Name: "PURGE_OI", DefiningModule: "openconfig-isis-lsdb-types"},
		27: {Name: "ROUTER_CAPABILITY", DefiningModule: "openconfig-isis-lsdb-types"},
	},
	"E_IsisTypes_AFI_SAFI_TYPE": {
		1: {Name: "IPV4_MULTICAST", DefiningModule: "openconfig-isis-types"},
		2: {Name: "IPV4_UNICAST", DefiningModule: "openconfig-isis-types"},
		3: {Name: "IPV6_MULTICAST", DefiningModule: "openconfig-isis-types"},
		4: {Name: "IPV6_UNICAST", DefiningModule: "openconfig-isis-types"},
	},
	"E_IsisTypes_AFI_TYPE": {
		1: {Name: "IPV4", DefiningModule: "openconfig-isis-types"},
		2: {Name: "IPV6", DefiningModule: "openconfig-isis-types"},
	},
	"E_IsisTypes_AUTH_MODE": {
		1: {Name: "MD5", DefiningModule: "openconfig-isis-types"},
		2: {Name: "TEXT", DefiningModule: "openconfig-isis-types"},
	},
	"E_IsisTypes_AdaptiveTimerType": {
		1: {Name: "LINEAR"},
		2: {Name: "EXPONENTIAL"},
	},
	"E_IsisTypes_CircuitType": {
		1: {Name: "POINT_TO_POINT"},
		2: {Name: "BROADCAST"},
	},
	"E_IsisTypes_HelloPaddingType": {
		1: {Name: "STRICT"},
		2: {Name: "LOOSE"},
		3: {Name: "ADAPTIVE"},
		4: {Name: "DISABLE"},
	},
	"E_IsisTypes_IsisInterfaceAdjState": {
		1: {Name: "UP"},
		2: {Name: "DOWN"},
		3: {Name: "INIT"},
		4: {Name: "FAILED"},
	},
	"E_IsisTypes_LevelType": {
		1: {Name: "LEVEL_1"},
		2: {Name: "LEVEL_2"},
		3: {Name: "LEVEL_1_2"},
	},
	"E_IsisTypes_MetricStyle": {
		1: {Name: "NARROW_METRIC"},
		2: {Name: "WIDE_METRIC"},
	},
	"E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE": {
		1: {Name: "WAIT_FOR_BGP", DefiningModule: "openconfig-isis-types"},
		2: {Name: "WAIT_FOR_SYSTEM", DefiningModule: "openconfig-isis-types"},
	},
	"E_IsisTypes_SAFI_TYPE": {
		1: {Name: "MULTICAST", DefiningModule: "openconfig-isis-types"},
		2: {Name: "UNICAST", DefiningModule: "openconfig-isis-types"},
	},
	"E_Isis_IsisMetricFlags": {
		1: {Name: "INTERNAL"},
		2: {Name: "UNSUPPORTED"},
	},
	"E_KeychainTypes_AUTH_TYPE": {
		1: {Name: "KEYCHAIN", DefiningModule: "openconfig-keychain-types"},
		2: {Name: "SIMPLE_KEY", DefiningModule: "openconfig-keychain-types"},
	},
	"E_KeychainTypes_CRYPTO_TYPE": {
		1:  {Name: "AES_28_CMAC_96", DefiningModule: "openconfig-keychain-types"},
		2:  {Name: "CRYPTO_NONE", DefiningModule: "openconfig-keychain-types"},
		3:  {Name: "HMAC_MD5", DefiningModule: "openconfig-keychain-types"},
		4:  {Name: "HMAC_SHA_1", DefiningModule: "openconfig-keychain-types"},
		5:  {Name: "HMAC_SHA_1_12", DefiningModule: "openconfig-keychain-types"},
		6:  {Name: "HMAC_SHA_1_20", DefiningModule: "openconfig-keychain-types"},
		7:  {Name: "HMAC_SHA_1_96", DefiningModule: "openconfig-keychain-types"},
		8:  {Name: "HMAC_SHA_256", DefiningModule: "openconfig-keychain-types"},
		9:  {Name: "MD5", DefiningModule: "openconfig-keychain-types"},
		10: {Name: "SHA_1", DefiningModule: "openconfig-keychain-types"},
	},
	"E_Keychain_Tolerance_Enum": {
		1: {Name: "FOREVER"},
	},
	"E_Lacp_LacpActivityType": {
		1: {Name: "ACTIVE"},
		2: {Name: "PASSIVE"},
	},
	"E_Lacp_LacpPeriodType": {
		1: {Name: "FAST"},
		2: {Name: "SLOW"},
	},
	"E_Lacp_LacpSynchronizationType": {
		1: {Name: "IN_SYNC"},
		2: {Name: "OUT_SYNC"},
	},
	"E_Lacp_LacpTimeoutType": {
		1: {Name: "LONG"},
		2: {Name: "SHORT"},
	},
	"E_LanAdjacencySid_Flags": {
		1: {Name: "ADDRESS_FAMILY"},
		2: {Name: "BACKUP"},
		3: {Name: "VALUE"},
		4: {Name: "LOCAL"},
		5: {Name: "SET"},
	},
	"E_LinkAttributes_LocalProtection": {
		1: {Name: "LOCAL_PROTECTION"},
		2: {Name: "LINK_EXCLUDED"},
	},
	"E_LinkProtectionType_Type": {
		1: {Name: "EXTRA_TRAFFIC"},
		2: {Name: "UNPROTECTED"},
		3: {Name: "SHARED"},
		4: {Name: "ONE_ONE"},
		5: {Name: "PLUS_ONE"},
		6: {Name: "ENHANCED"},
	},
	"E_Link_SubTlv_Type_Enum": {
		1: {Name: "UNKNOWN"},
	},
	"E_LldpTypes_ChassisIdType": {
		1: {Name: "CHASSIS_COMPONENT"},
		2: {Name: "INTERFACE_ALIAS"},
		3: {Name: "PORT_COMPONENT"},
		4: {Name: "MAC_ADDRESS"},
		5: {Name: "NETWORK_ADDRESS"},
		6: {Name: "INTERFACE_NAME"},
		7: {Name: "LOCAL"},
	},
	"E_LldpTypes_LLDP_SYSTEM_CAPABILITY": {
		1:  {Name: "C_VLAN", DefiningModule: "openconfig-lldp-types"},
		2:  {Name: "DOCSIS_CABLE_DEVICE", DefiningModule: "openconfig-lldp-types"},
		3:  {Name: "MAC_BRIDGE", DefiningModule: "openconfig-lldp-types"},
		4:  {Name: "OTHER", DefiningModule: "openconfig-lldp-types"},
		5:  {Name: "REPEATER", DefiningModule: "openconfig-lldp-types"},
		6:  {Name: "ROUTER", DefiningModule: "openconfig-lldp-types"},
		7:  {Name: "STATION_ONLY", DefiningModule: "openconfig-lldp-types"},
		8:  {Name: "S_VLAN", DefiningModule: "openconfig-lldp-types"},
		9:  {Name: "TELEPHONE", DefiningModule: "openconfig-lldp-types"},
		10: {Name: "TWO_PORT_MAC_RELAY", DefiningModule: "openconfig-lldp-types"},
		11: {Name: "WLAN_ACCESS_POINT", DefiningModule: "openconfig-lldp-types"},
	},
	"E_LldpTypes_LLDP_TLV": {
		1: {Name: "CHASSIS_ID", DefiningModule: "openconfig-lldp-types"},
		2: {Name: "MANAGEMENT_ADDRESS", DefiningModule: "openconfig-lldp-types"},
		3: {Name: "PORT_DESCRIPTION", DefiningModule: "openconfig-lldp-types"},
		4: {Name: "PORT_ID", DefiningModule: "openconfig-lldp-types"},
		5: {Name: "SYSTEM_CAPABILITIES", DefiningModule: "openconfig-lldp-types"},
		6: {Name: "SYSTEM_DESCRIPTION", DefiningModule: "openconfig-lldp-types"},
		7: {Name: "SYSTEM_NAME", DefiningModule: "openconfig-lldp-types"},
	},
	"E_LldpTypes_PortIdType": {
		1: {Name: "INTERFACE_ALIAS"},
		2: {Name: "PORT_COMPONENT"},
		3: {Name: "MAC_ADDRESS"},
		4: {Name: "NETWORK_ADDRESS"},
		5: {Name: "INTERFACE_NAME"},
		6: {Name: "AGENT_CIRCUIT_ID"},
		7: {Name: "LOCAL"},
	},
	"E_LocalRouting_LOCAL_DEFINED_NEXT_HOP": {
		1: {Name: "DROP", DefiningModule: "openconfig-local-routing"},
		2: {Name: "LOCAL_LINK", DefiningModule: "openconfig-local-routing"},
	},
	"E_LsaGeneration_TimerType": {
		1: {Name: "LINEAR_BACKOFF"},
		2: {Name: "EXPONENTIAL_BACKOFF"},
	},
	"E_Lsp_Flags": {
		1: {Name: "PARTITION_REPAIR"},
		2: {Name: "ATTACHED_ERROR"},
		3: {Name: "ATTACHED_EXPENSE"},
		4: {Name: "ATTACHED_DELAY"},
		5: {Name: "ATTACHED_DEFAULT"},
		6: {Name: "OVERLOAD"},
	},
	"E_Lsp_PduType": {
		1: {Name: "LEVEL_1"},
		2: {Name: "LEVEL_2"},
	},
	"E_Messages_DEBUG_SERVICE": {},
	"E_MplsLdp_LabelAdvertisementMode": {
		1: {Name: "DOWNSTREAM_UNSOLICITED"},
		2: {Name: "DOWNSTREAM_ON_DEMAND"},
	},
	"E_MplsLdp_MplsLdpAdjacencyType": {
		1: {Name: "LINK"},
		2: {Name: "TARGETED"},
	},
	"E_MplsLdp_MplsLdpAfi": {
		1: {Name: "IPV4"},
		2: {Name: "IPV6"},
	},
	"E_MplsLdp_Neighbor_SessionState": {
		1: {Name: "NON_EXISTENT"},
		2: {Name: "INITIALIZED"},
		3: {Name: "OPENREC"},
		4: {Name: "OPENSENT"},
		5: {Name: "OPERATIONAL"},
	},
	"E_MplsTypes_LSP_METRIC_TYPE": {
		1: {Name: "LSP_METRIC_ABSOLUTE", DefiningModule: "openconfig-mpls-types"},
		2: {Name: "LSP_METRIC_INHERITED", DefiningModule: "openconfig-mpls-types"},
		3: {Name: "LSP_METRIC_RELATIVE", DefiningModule: "openconfig-mpls-types"},
	},
	"E_MplsTypes_LSP_OPER_STATUS": {
		1: {Name: "DOWN", DefiningModule: "openconfig-mpls-types"},
		2: {Name: "UP", DefiningModule: "openconfig-mpls-types"},
	},
	"E_MplsTypes_LSP_ROLE": {
		1: {Name: "EGRESS", DefiningModule: "openconfig-mpls-types"},
		2: {Name: "INGRESS", DefiningModule: "openconfig-mpls-types"},
		3: {Name: "TRANSIT", DefiningModule: "openconfig-mpls-types"},
	},
	"E_MplsTypes_MplsLabel_Enum": {
		1: {Name: "IPV4_EXPLICIT_NULL"},
		2: {Name: "ROUTER_ALERT"},
		3: {Name: "IPV6_EXPLICIT_NULL"},
		4: {Name: "IMPLICIT_NULL"},
		8: {Name: "ENTROPY_LABEL_INDICATOR"},
		9: {Name: "NO_LABEL"},
	},
	"E_MplsTypes_NULL_LABEL_TYPE": {
		1: {Name: "EXPLICIT", DefiningModule: "openconfig-mpls-types"},
		2: {Name: "IMPLICIT", DefiningModule: "openconfig-mpls-types"},
	},
	"E_MplsTypes_PATH_COMPUTATION_METHOD": {
		1: {Name: "EXPLICITLY_DEFINED", DefiningModule: "openconfig-mpls-types"},
		2: {Name: "EXTERNALLY_QUERIED", DefiningModule: "openconfig-mpls-types"},
		3: {Name: "LOCALLY_COMPUTED", DefiningModule: "openconfig-mpls-types"},
	},
	"E_MplsTypes_PATH_METRIC_TYPE": {
		1: {Name: "HOP_COUNT", DefiningModule: "openconfig-mpls-types"},
		2: {Name: "IGP_METRIC", DefiningModule: "openconfig-mpls-types"},
		3: {Name: "PATH_DELAY", DefiningModule: "openconfig-mpls-types"},
		4: {Name: "TE_METRIC", DefiningModule: "openconfig-mpls-types"},
	},
	"E_MplsTypes_PATH_SETUP_PROTOCOL": {
		1: {Name: "PATH_SETUP_LDP", DefiningModule: "openconfig-mpls-types"},
		2: {Name: "PATH_SETUP_RSVP", DefiningModule: "openconfig-mpls-types"},
		3: {Name: "PATH_SETUP_SR", DefiningModule: "openconfig-mpls-types"},
	},
	"E_MplsTypes_PROTECTION_TYPE": {
		1: {Name: "LINK_NODE_PROTECTION_REQUESTED", DefiningModule: "openconfig-mpls-types"},
		2: {Name: "LINK_PROTECTION_REQUIRED", DefiningModule: "openconfig-mpls-types"},
		3: {Name: "UNPROTECTED", DefiningModule: "openconfig-mpls-types"},
	},
	"E_MplsTypes_PSEUDOWIRE_ENCAPSULATION": {
		1: {Name: "PWE_ETHERNET_RAW_MODE", DefiningModule: "openconfig-mpls-types"},
		2: {Name: "PWE_ETHERNET_TAGGED_MODE", DefiningModule: "openconfig-mpls-types"},
	},
	"E_MplsTypes_RSVP_AUTH_TYPE": {
		1: {Name: "RSVP_AUTH_MD5", DefiningModule: "openconfig-mpls-types"},
	},
	"E_MplsTypes_TUNNEL_ADMIN_STATUS": {
		1: {Name: "ADMIN_DOWN", DefiningModule: "openconfig-mpls-types"},
		2: {Name: "ADMIN_UP", DefiningModule: "openconfig-mpls-types"},
	},
	"E_MplsTypes_TUNNEL_TYPE": {
		1: {Name: "P2MP", DefiningModule: "openconfig-mpls-types"},
		2: {Name: "P2P", DefiningModule: "openconfig-mpls-types"},
	},
	"E_Mpls_CspfTieBreaking": {
		1: {Name: "RANDOM"},
		2: {Name: "LEAST_FILL"},
		3: {Name: "MOST_FILL"},
	},
	"E_Mpls_MplsHopType": {
		1: {Name: "LOOSE"},
		2: {Name: "STRICT"},
	},
	"E_Mpls_MplsSrlgFloodingType": {
		1: {Name: "FLOODED_SRLG"},
		2: {Name: "STATIC_SRLG"},
	},
	"E_Mpls_TeBandwidthType": {
		1: {Name: "SPECIFIED"},
		2: {Name: "AUTO"},
	},
	"E_NamedExplicitPath_SidSelectionMode": {
		1: {Name: "ADJ_SID_ONLY"},
		2: {Name: "MIXED_MODE"},
	},
	"E_Neighbor_NeighborState": {
		1: {Name: "INCOMPLETE"},
		2: {Name: "REACHABLE"},
		3: {Name: "STALE"},
		4: {Name: "DELAY"},
		5: {Name: "PROBE"},
	},
	"E_Neighbor_NeighborStatus": {
		1: {Name: "UP"},
		2: {Name: "DOWN"},
	},
	"E_NetworkInstanceTypes_ENCAPSULATION": {
		1: {Name: "MPLS", DefiningModule: "openconfig-network-instance-types"},
		2: {Name: "VXLAN", DefiningModule: "openconfig-network-instance-types"},
	},
	"E_NetworkInstanceTypes_ENDPOINT_TYPE": {
		1: {Name: "LOCAL", DefiningModule: "openconfig-network-instance-types"},
		2: {Name: "REMOTE", DefiningModule: "openconfig-network-instance-types"},
	},
	"E_NetworkInstanceTypes_LABEL_ALLOCATION_MODE": {
		1: {Name: "INSTANCE_LABEL", DefiningModule: "openconfig-network-instance-types"},
		2: {Name: "PER_NEXTHOP", DefiningModule: "openconfig-network-instance-types"},
		3: {Name: "PER_PREFIX", DefiningModule: "openconfig-network-instance-types"},
	},
	"E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE": {
		1: {Name: "DEFAULT_INSTANCE", DefiningModule: "openconfig-network-instance-types"},
		2: {Name: "L2L3", DefiningModule: "openconfig-network-instance-types"},
		3: {Name: "L2P2P", DefiningModule: "openconfig-network-instance-types"},
		4: {Name: "L2VSI", DefiningModule: "openconfig-network-instance-types"},
		5: {Name: "L3VRF", DefiningModule: "openconfig-network-instance-types"},
	},
	"E_NextHopGroup_Type": {
		1: {Name: "ESI"},
		2: {Name: "ESI_EVI"},
		3: {Name: "BASE_ECMP"},
	},
	"E_Nlpid_Nlpid": {
		1: {Name: "IPV4"},
		2: {Name: "IPV6"},
	},
	"E_NodeAttribute_SubTlv_Type_Enum": {
		1: {Name: "UNKNOWN"},
	},
	"E_OpaqueLsa_Scope": {
		1: {Name: "LINK"},
		2: {Name: "AREA"},
		3: {Name: "AS"},
	},
	"E_OpticalAmplifier_FIBER_TYPE_PROFILE": {
		1: {Name: "DSF", DefiningModule: "openconfig-optical-amplifier"},
		2: {Name: "LEAF", DefiningModule: "openconfig-optical-amplifier"},
		3: {Name: "SSMF", DefiningModule: "openconfig-optical-amplifier"},
		4: {Name: "TWC", DefiningModule: "openconfig-optical-amplifier"},
		5: {Name: "TWRS", DefiningModule: "openconfig-optical-amplifier"},
	},
	"E_OpticalAmplifier_GAIN_RANGE": {
		1: {Name: "FIXED_GAIN_RANGE", DefiningModule: "openconfig-optical-amplifier"},
		2: {Name: "HIGH_GAIN_RANGE", DefiningModule: "openconfig-optical-amplifier"},
		3: {Name: "LOW_GAIN_RANGE", DefiningModule: "openconfig-optical-amplifier"},
		4: {Name: "MID_GAIN_RANGE", DefiningModule: "openconfig-optical-amplifier"},
	},
	"E_OpticalAmplifier_OPTICAL_AMPLIFIER_MODE": {
		1: {Name: "CONSTANT_GAIN", DefiningModule: "openconfig-optical-amplifier"},
		2: {Name: "CONSTANT_POWER", DefiningModule: "openconfig-optical-amplifier"},
		3: {Name: "DYNAMIC_GAIN", DefiningModule: "openconfig-optical-amplifier"},
	},
	"E_OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE": {
		1: {Name: "BACKWARD_RAMAN", DefiningModule: "openconfig-optical-amplifier"},
		2: {Name: "EDFA", DefiningModule: "openconfig-optical-amplifier"},
		3: {Name: "FORWARD_RAMAN", DefiningModule: "openconfig-optical-amplifier"},
		4: {Name: "HYBRID", DefiningModule: "openconfig-optical-amplifier"},
	},
	"E_OspfTypes_GRACE_LSA_TLV_TYPES": {
		1: {Name: "GRACE_IP_INTERFACE_ADDRESS", DefiningModule: "openconfig-ospf-types"},
		2: {Name: "GRACE_PERIOD", DefiningModule: "openconfig-ospf-types"},
		3: {Name: "GRACE_RESTART_REASON", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_MAX_METRIC_INCLUDE": {
		1: {Name: "MAX_METRIC_INCLUDE_STUB", DefiningModule: "openconfig-ospf-types"},
		2: {Name: "MAX_METRIC_INCLUDE_TYPE2_EXTERNAL", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_MAX_METRIC_TRIGGER": {
		1: {Name: "MAX_METRIC_ON_SYSTEM_BOOT", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE": {
		1: {Name: "ADJACENCY_SID", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE": {
		1: {Name: "ERO_METRIC", DefiningModule: "openconfig-ospf-types"},
		2: {Name: "ERO_PATH", DefiningModule: "openconfig-ospf-types"},
		3: {Name: "SID_MPLS_LABEL_BINDING", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE": {
		1: {Name: "EXTENDED_PREFIX_RANGE", DefiningModule: "openconfig-ospf-types"},
		2: {Name: "PREFIX_SID", DefiningModule: "openconfig-ospf-types"},
		3: {Name: "SID_LABEL_BINDING", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE": {
		1: {Name: "IPV4_SEGMENT", DefiningModule: "openconfig-ospf-types"},
		2: {Name: "UNNUMBERED_INTERFACE_SEGMENT", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_OSPFV2_ROUTER_LINK_TYPE": {
		1: {Name: "POINT_TO_POINT_LINK", DefiningModule: "openconfig-ospf-types"},
		2: {Name: "STUB_NETWORK_LINK", DefiningModule: "openconfig-ospf-types"},
		3: {Name: "TRANSIT_NETWORK_LINK", DefiningModule: "openconfig-ospf-types"},
		4: {Name: "VIRTUAL_LINK", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_OSPF_LSA_TYPE": {
		1: {Name: "AS_EXTERNAL_LSA", DefiningModule: "openconfig-ospf-types"},
		2: {Name: "NETWORK_LSA", DefiningModule: "openconfig-ospf-types"},
		3: {Name: "NSSA_AS_EXTERNAL_LSA", DefiningModule: "openconfig-ospf-types"},
		4: {Name: "OSPFV2_AREA_SCOPE_OPAQUE_LSA", DefiningModule: "openconfig-ospf-types"},
		5: {Name: "OSPFV2_AS_SCOPE_OPAQUE_LSA", DefiningModule: "openconfig-ospf-types"},
		6: {Name: "OSPFV2_LINK_SCOPE_OPAQUE_LSA", DefiningModule: "openconfig-ospf-types"},
		7: {Name: "ROUTER_LSA", DefiningModule: "openconfig-ospf-types"},
		8: {Name: "SUMMARY_ASBR_LSA", DefiningModule: "openconfig-ospf-types"},
		9: {Name: "SUMMARY_IP_NETWORK_LSA", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_OSPF_NEIGHBOR_STATE": {
		1: {Name: "ATTEMPT", DefiningModule: "openconfig-ospf-types"},
		2: {Name: "DOWN", DefiningModule: "openconfig-ospf-types"},
		3: {Name: "EXCHANGE", DefiningModule: "openconfig-ospf-types"},
		4: {Name: "EXSTART", DefiningModule: "openconfig-ospf-types"},
		5: {Name: "FULL", DefiningModule: "openconfig-ospf-types"},
		6: {Name: "INIT", DefiningModule: "openconfig-ospf-types"},
		7: {Name: "LOADING", DefiningModule: "openconfig-ospf-types"},
		8: {Name: "TWO_WAY", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_OSPF_NETWORK_TYPE": {
		1: {Name: "BROADCAST_NETWORK", DefiningModule: "openconfig-ospf-types"},
		2: {Name: "NON_BROADCAST_NETWORK", DefiningModule: "openconfig-ospf-types"},
		3: {Name: "POINT_TO_POINT_NETWORK", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_OSPF_OPAQUE_LSA_TYPE": {
		1: {Name: "GRACE_LSA", DefiningModule: "openconfig-ospf-types"},
		2: {Name: "OSPFV2_EXTENDED_LINK", DefiningModule: "openconfig-ospf-types"},
		3: {Name: "OSPFV2_EXTENDED_PREFIX", DefiningModule: "openconfig-ospf-types"},
		4: {Name: "ROUTER_INFORMATION", DefiningModule: "openconfig-ospf-types"},
		5: {Name: "TRAFFIC_ENGINEERING", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES": {
		1: {Name: "SR_SID_LABEL_TLV", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_OSPF_TE_LINK_TLV_TYPE": {
		1: {Name: "TE_LINK_ADMIN_GROUP", DefiningModule: "openconfig-ospf-types"},
		2: {Name: "TE_LINK_ID", DefiningModule: "openconfig-ospf-types"},
		3: {Name: "TE_LINK_LOCAL_IP", DefiningModule: "openconfig-ospf-types"},
		4: {Name: "TE_LINK_MAXIMUM_BANDWIDTH", DefiningModule: "openconfig-ospf-types"},
		5: {Name: "TE_LINK_MAXIMUM_RESERVABLE_BANDWIDTH", DefiningModule: "openconfig-ospf-types"},
		6: {Name: "TE_LINK_METRIC", DefiningModule: "openconfig-ospf-types"},
		7: {Name: "TE_LINK_REMOTE_IP", DefiningModule: "openconfig-ospf-types"},
		8: {Name: "TE_LINK_TYPE", DefiningModule: "openconfig-ospf-types"},
		9: {Name: "TE_LINK_UNRESERVED_BANDWIDTH", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_OSPF_TE_LSA_TLV_TYPE": {
		1: {Name: "TE_LINK", DefiningModule: "openconfig-ospf-types"},
		2: {Name: "TE_LINK_LOCAL", DefiningModule: "openconfig-ospf-types"},
		3: {Name: "TE_NODE_ATTRIBUTE", DefiningModule: "openconfig-ospf-types"},
		4: {Name: "TE_OPTICAL_NODE_PROPERTY", DefiningModule: "openconfig-ospf-types"},
		5: {Name: "TE_ROUTER_ADDRESS", DefiningModule: "openconfig-ospf-types"},
		6: {Name: "TE_ROUTER_IPV6_ADDRESS", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_RI_LSA_TLV_TYPES": {
		1: {Name: "RI_FUNCTIONAL_CAPABILITIES", DefiningModule: "openconfig-ospf-types"},
		2: {Name: "RI_INFORMATIONAL_CAPABILITIES", DefiningModule: "openconfig-ospf-types"},
		3: {Name: "RI_NODE_ADMIN_TAG", DefiningModule: "openconfig-ospf-types"},
		4: {Name: "RI_SR_ALGORITHM", DefiningModule: "openconfig-ospf-types"},
		5: {Name: "RI_SR_SID_LABEL_RANGE", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_ROUTER_LSA_TYPES": {
		1: {Name: "ROUTER_LSA_P2P", DefiningModule: "openconfig-ospf-types"},
		2: {Name: "ROUTER_LSA_STUB_NETWORK", DefiningModule: "openconfig-ospf-types"},
		3: {Name: "ROUTER_LSA_TRANSIT_NETWORK", DefiningModule: "openconfig-ospf-types"},
		4: {Name: "ROUTER_LSA_VIRTUAL_LINK", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_SR_ALGORITHM": {
		1: {Name: "SPF", DefiningModule: "openconfig-ospf-types"},
		2: {Name: "STRICT_SPF", DefiningModule: "openconfig-ospf-types"},
	},
	"E_OspfTypes_SrSidType": {
		1: {Name: "LABEL"},
		2: {Name: "SID"},
	},
	"E_OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE": {
		1: {Name: "NODE_IPV4_LOCAL_ADDRESS", DefiningModule: "openconfig-ospf-types"},
		2: {Name: "NODE_IPV6_LOCAL_ADDRESS", DefiningModule: "openconfig-ospf-types"},
	},
	"E_PacketMatchTypes_ETHERTYPE": {
		1: {Name: "ETHERTYPE_ARP", DefiningModule: "openconfig-packet-match-types"},
		2: {Name: "ETHERTYPE_IPV4", DefiningModule: "openconfig-packet-match-types"},
		3: {Name: "ETHERTYPE_IPV6", DefiningModule: "openconfig-packet-match-types"},
		4: {Name: "ETHERTYPE_LLDP", DefiningModule: "openconfig-packet-match-types"},
		5: {Name: "ETHERTYPE_MPLS", DefiningModule: "openconfig-packet-match-types"},
		6: {Name: "ETHERTYPE_ROCE", DefiningModule: "openconfig-packet-match-types"},
		7: {Name: "ETHERTYPE_VLAN", DefiningModule: "openconfig-packet-match-types"},
	},
	"E_PacketMatchTypes_IP_PROTOCOL": {
		1:  {Name: "IP_AUTH", DefiningModule: "openconfig-packet-match-types"},
		2:  {Name: "IP_GRE", DefiningModule: "openconfig-packet-match-types"},
		3:  {Name: "IP_ICMP", DefiningModule: "openconfig-packet-match-types"},
		4:  {Name: "IP_IGMP", DefiningModule: "openconfig-packet-match-types"},
		5:  {Name: "IP_IN_IP", DefiningModule: "openconfig-packet-match-types"},
		6:  {Name: "IP_L2TP", DefiningModule: "openconfig-packet-match-types"},
		7:  {Name: "IP_PIM", DefiningModule: "openconfig-packet-match-types"},
		8:  {Name: "IP_RSVP", DefiningModule: "openconfig-packet-match-types"},
		9:  {Name: "IP_TCP", DefiningModule: "openconfig-packet-match-types"},
		10: {Name: "IP_UDP", DefiningModule: "openconfig-packet-match-types"},
	},
	"E_PacketMatchTypes_PortNumRange_Enum": {
		1: {Name: "ANY"},
	},
	"E_PacketMatchTypes_TCP_FLAGS": {
		1: {Name: "TCP_ACK", DefiningModule: "openconfig-packet-match-types"},
		2: {Name: "TCP_CWR", DefiningModule: "openconfig-packet-match-types"},
		3: {Name: "TCP_ECE", DefiningModule: "openconfig-packet-match-types"},
		4: {Name: "TCP_FIN", DefiningModule: "openconfig-packet-match-types"},
		5: {Name: "TCP_PSH", DefiningModule: "openconfig-packet-match-types"},
		6: {Name: "TCP_RST", DefiningModule: "openconfig-packet-match-types"},
		7: {Name: "TCP_SYN", DefiningModule: "openconfig-packet-match-types"},
		8: {Name: "TCP_URG", DefiningModule: "openconfig-packet-match-types"},
	},
	"E_Pcep_LspControlType": {
		1: {Name: "PCE_DELEGATED"},
		2: {Name: "PCC_CONTROLLED"},
		3: {Name: "PCC_REPORT_ONLY"},
	},
	"E_Pcep_PceModeType": {
		1: {Name: "STATELESS"},
		2: {Name: "STATEFUL_PASSIVE"},
		3: {Name: "STATEFUL_ACTIVE"},
	},
	"E_PimTypes_PIM_MODE": {
		1: {Name: "PIM_MODE_DENSE", DefiningModule: "openconfig-pim-types"},
		2: {Name: "PIM_MODE_SPARSE", DefiningModule: "openconfig-pim-types"},
	},
	"E_PlatformTypes_COMPONENT_OPER_STATUS": {
		1: {Name: "ACTIVE", DefiningModule: "openconfig-platform-types"},
		2: {Name: "DISABLED", DefiningModule: "openconfig-platform-types"},
		3: {Name: "INACTIVE", DefiningModule: "openconfig-platform-types"},
	},
	"E_PlatformTypes_COMPONENT_REBOOT_REASON": {
		1: {Name: "REBOOT_CRITICAL_ERROR", DefiningModule: "openconfig-platform-types"},
		2: {Name: "REBOOT_POWER_FAILURE", DefiningModule: "openconfig-platform-types"},
		3: {Name: "REBOOT_USER_INITIATED", DefiningModule: "openconfig-platform-types"},
	},
	"E_PlatformTypes_ComponentRedundantRole": {
		1: {Name: "PRIMARY"},
		2: {Name: "SECONDARY"},
	},
	"E_PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger": {
		1: {Name: "USER_INITIATED"},
		2: {Name: "SYSTEM_INITIATED"},
	},
	"E_PlatformTypes_FEC_MODE_TYPE": {
		1: {Name: "FEC_AUTO", DefiningModule: "openconfig-platform-types"},
		2: {Name: "FEC_DISABLED", DefiningModule: "openconfig-platform-types"},
		3: {Name: "FEC_ENABLED", DefiningModule: "openconfig-platform-types"},
	},
	"E_PlatformTypes_FEC_STATUS_TYPE": {
		1: {Name: "FEC_STATUS_LOCKED", DefiningModule: "openconfig-platform-types"},
		2: {Name: "FEC_STATUS_UNLOCKED", DefiningModule: "openconfig-platform-types"},
	},
	"E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT": {
		1:  {Name: "BACKPLANE", DefiningModule: "openconfig-platform-types"},
		2:  {Name: "CHASSIS", DefiningModule: "openconfig-platform-types"},
		3:  {Name: "CONTROLLER_CARD", DefiningModule: "openconfig-platform-types"},
		4:  {Name: "CPU", DefiningModule: "openconfig-platform-types"},
		5:  {Name: "FABRIC", DefiningModule: "openconfig-platform-types"},
		6:  {Name: "FAN", DefiningModule: "openconfig-platform-types"},
		7:  {Name: "FRU", DefiningModule: "openconfig-platform-types"},
		8:  {Name: "INTEGRATED_CIRCUIT", DefiningModule: "openconfig-platform-types"},
		9:  {Name: "LINECARD", DefiningModule: "openconfig-platform-types"},
		10: {Name: "OPTICAL_CHANNEL", DefiningModule: "openconfig-transport-types"},
		11: {Name: "PORT", DefiningModule: "openconfig-platform-types"},
		12: {Name: "POWER_SUPPLY", DefiningModule: "openconfig-platform-types"},
		13: {Name: "SENSOR", DefiningModule: "openconfig-platform-types"},
		14: {Name: "STORAGE", DefiningModule: "openconfig-platform-types"},
		15: {Name: "TRANSCEIVER", DefiningModule: "openconfig-platform-types"},
		16: {Name: "WIFI_ACCESS_POINT", DefiningModule: "openconfig-platform-types"},
	},
	"E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT": {
		1: {Name: "BIOS", DefiningModule: "openconfig-platform-types"},
		2: {Name: "BOOT_LOADER", DefiningModule: "openconfig-platform-types"},
		3: {Name: "OPERATING_SYSTEM", DefiningModule: "openconfig-platform-types"},
		4: {Name: "OPERATING_SYSTEM_UPDATE", DefiningModule: "openconfig-platform-types"},
		5: {Name: "SOFTWARE_MODULE", DefiningModule: "openconfig-platform-types"},
	},
	"E_PolicyTypes_ATTRIBUTE_COMPARISON": {
		1: {Name: "ATTRIBUTE_EQ", DefiningModule: "openconfig-policy-types"},
		2: {Name: "ATTRIBUTE_GE", DefiningModule: "openconfig-policy-types"},
		3: {Name: "ATTRIBUTE_LE", DefiningModule: "openconfig-policy-types"},
	},
	"E_PolicyTypes_INSTALL_PROTOCOL_TYPE": {
		1:  {Name: "BGP", DefiningModule: "openconfig-policy-types"},
		2:  {Name: "DIRECTLY_CONNECTED", DefiningModule: "openconfig-policy-types"},
		3:  {Name: "GRIBI", DefiningModule: "openconfig-policy-types"},
		4:  {Name: "IGMP", DefiningModule: "openconfig-policy-types"},
		5:  {Name: "ISIS", DefiningModule: "openconfig-policy-types"},
		6:  {Name: "LOCAL", DefiningModule: "openconfig-policy-types"},
		7:  {Name: "LOCAL_AGGREGATE", DefiningModule: "openconfig-policy-types"},
		8:  {Name: "OSPF", DefiningModule: "openconfig-policy-types"},
		9:  {Name: "OSPF3", DefiningModule: "openconfig-policy-types"},
		10: {Name: "PCEP", DefiningModule: "openconfig-policy-types"},
		11: {Name: "PIM", DefiningModule: "openconfig-policy-types"},
		12: {Name: "STATIC", DefiningModule: "openconfig-policy-types"},
	},
	"E_PolicyTypes_MatchSetOptionsRestrictedType": {
		1: {Name: "ANY"},
		2: {Name: "INVERT"},
	},
	"E_PolicyTypes_MatchSetOptionsType": {
		1: {Name: "ANY"},
		2: {Name: "ALL"},
		3: {Name: "INVERT"},
	},
	"E_Policy_Type": {
		1: {Name: "PBR_POLICY"},
		2: {Name: "VRF_SELECTION_POLICY"},
	},
	"E_PrefixSet_Mode": {
		1: {Name: "IPV4"},
		2: {Name: "IPV6"},
		3: {Name: "MIXED"},
	},
	"E_PrefixSid_Flags": {
		1: {Name: "READVERTISEMENT"},
		2: {Name: "NODE"},
		3: {Name: "NO_PHP"},
		4: {Name: "EXPLICIT_NULL"},
		5: {Name: "VALUE"},
		6: {Name: "LOCAL"},
	},
	"E_PrefixSid_LabelOptions": {
		1: {Name: "NO_PHP"},
		2: {Name: "EXPLICIT_NULL"},
	},
	"E_PrefixSid_SidScope": {
		1: {Name: "LOCAL"},
		2: {Name: "GLOBAL"},
	},
	"E_PrefixSid_SidValueType": {
		1: {Name: "ABSOLUTE"},
		2: {Name: "INDEX"},
	},
	"E_Producer_MobilityState": {
		1: {Name: "FROZEN"},
		2: {Name: "DUPLICATE"},
	},
	"E_Producer_Producer": {
		1: {Name: "LOCAL"},
		2: {Name: "STATIC"},
		3: {Name: "BGP"},
	},
	"E_ProxyArp_Mode": {
		1: {Name: "DISABLE"},
		2: {Name: "REMOTE_ONLY"},
		3: {Name: "ALL"},
	},
	"E_RibBgpTypes_INVALID_ROUTE_REASON": {
		1: {Name: "INVALID_AS_LOOP", DefiningModule: "openconfig-rib-bgp-types"},
		2: {Name: "INVALID_CLUSTER_LOOP", DefiningModule: "openconfig-rib-bgp-types"},
		3: {Name: "INVALID_CONFED", DefiningModule: "openconfig-rib-bgp-types"},
		4: {Name: "INVALID_ORIGINATOR", DefiningModule: "openconfig-rib-bgp-types"},
	},
	"E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE": {
		1: {Name: "SRTE_BINDING_SID", DefiningModule: "openconfig-rib-bgp-types"},
		2: {Name: "SRTE_PREFERENCE", DefiningModule: "openconfig-rib-bgp-types"},
		3: {Name: "SRTE_SEGMENT_LIST", DefiningModule: "openconfig-rib-bgp-types"},
		4: {Name: "TUNNEL_COLOR", DefiningModule: "openconfig-rib-bgp-types"},
		5: {Name: "TUNNEL_REMOTE_ENDPOINT", DefiningModule: "openconfig-rib-bgp-types"},
	},
	"E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE": {
		1: {Name: "SRTE_POLICY_TUNNEL", DefiningModule: "openconfig-rib-bgp-types"},
	},
	"E_RouterAdvertisement_Mode": {
		1: {Name: "ALL"},
		2: {Name: "DISABLE_UNSOLICITED_RA"},
	},
	"E_RouterInformation_Tlv_Type_Enum": {
		1: {Name: "UNKNOWN"},
	},
	"E_RoutingPolicy_DefaultPolicyType": {
		1: {Name: "ACCEPT_ROUTE"},
		2: {Name: "REJECT_ROUTE"},
	},
	"E_RoutingPolicy_PolicyResultType": {
		1: {Name: "ACCEPT_ROUTE"},
		2: {Name: "REJECT_ROUTE"},
		3: {Name: "NEXT_STATEMENT"},
	},
	"E_SegmentRoutingAlgorithms_Algorithm": {
		1: {Name: "SPF"},
		2: {Name: "STRICT_SPF"},
	},
	"E_SegmentRoutingCapability_Flags": {
		1: {Name: "IPV4_MPLS"},
		2: {Name: "IPV6_MPLS"},
		3: {Name: "IPV6_SR"},
	},
	"E_SegmentRoutingSidLabelRange_Tlv_Type_Enum": {
		1: {Name: "UNKNOWN"},
	},
	"E_SegmentRoutingTypes_EnlpType": {
		1: {Name: "PUSH_IPV4_EXPLICIT_NULL"},
		2: {Name: "PUSH_IPV6_EXPLICIT_NULL"},
		3: {Name: "PUSH_IPV46_EXPLICIT_NULL"},
		4: {Name: "NO_EXPLICIT_NULL"},
	},
	"E_SegmentRoutingTypes_SrDataplaneType": {
		1: {Name: "MPLS"},
		2: {Name: "IPV6"},
	},
	"E_SegmentRoutingTypes_SrteInvalidSlReason": {
		1: {Name: "EMPTY_SL"},
		2: {Name: "ZERO_WEIGHT"},
		3: {Name: "FIRST_SID_UNRESOLVABLE"},
		4: {Name: "OTHER_SID_UNRESOLVABLE"},
		5: {Name: "VERIFICATION_FAIL"},
	},
	"E_SegmentRoutingTypes_SrteProtocolType": {
		11: {Name: "PCEP"},
		21: {Name: "BGP"},
		31: {Name: "CONFIG"},
	},
	"E_Segment_Type": {
		2: {Name: "MPLS_SID"},
		3: {Name: "IPV6_SID"},
		4: {Name: "IPV4_NODE_ADDRESS"},
		5: {Name: "IPV6_NODE_ADDRESS"},
		6: {Name: "IPV4_LOCAL_INTF_ID"},
		7: {Name: "IPV4_LOCAL_REMOTE_ADDR"},
		8: {Name: "IPV6_LOCAL_INTF_ID"},
		9: {Name: "IPV6_LOCAL_REMOTE_ADDR"},
	},
	"E_Server_AssociationType": {
		1: {Name: "SERVER"},
		2: {Name: "PEER"},
		3: {Name: "POOL"},
	},
	"E_Session_Status": {
		1: {Name: "UP"},
		2: {Name: "DOWN"},
	},
	"E_SetCommunity_Method": {
		1: {Name: "INLINE"},
		2: {Name: "REFERENCE"},
	},
	"E_SetTag_Mode": {
		1: {Name: "INLINE"},
		2: {Name: "REFERENCE"},
	},
	"E_SpanningTreeTypes_STP_EDGE_PORT": {
		1: {Name: "EDGE_AUTO", DefiningModule: "openconfig-spanning-tree-types"},
		2: {Name: "EDGE_DISABLE", DefiningModule: "openconfig-spanning-tree-types"},
		3: {Name: "EDGE_ENABLE", DefiningModule: "openconfig-spanning-tree-types"},
	},
	"E_SpanningTreeTypes_STP_PORT_ROLE": {
		1: {Name: "ALTERNATE", DefiningModule: "openconfig-spanning-tree-types"},
		2: {Name: "BACKUP", DefiningModule: "openconfig-spanning-tree-types"},
		3: {Name: "DESIGNATED", DefiningModule: "openconfig-spanning-tree-types"},
		4: {Name: "ROOT", DefiningModule: "openconfig-spanning-tree-types"},
	},
	"E_SpanningTreeTypes_STP_PORT_STATE": {
		1: {Name: "BLOCKING", DefiningModule: "openconfig-spanning-tree-types"},
		2: {Name: "DISABLED", DefiningModule: "openconfig-spanning-tree-types"},
		3: {Name: "FORWARDING", DefiningModule: "openconfig-spanning-tree-types"},
		4: {Name: "LEARNING", DefiningModule: "openconfig-spanning-tree-types"},
		5: {Name: "LISTENING", DefiningModule: "openconfig-spanning-tree-types"},
	},
	"E_SpanningTreeTypes_STP_PROTOCOL": {
		1: {Name: "MSTP", DefiningModule: "openconfig-spanning-tree-types"},
		2: {Name: "RAPID_PVST", DefiningModule: "openconfig-spanning-tree-types"},
		3: {Name: "RSTP", DefiningModule: "openconfig-spanning-tree-types"},
	},
	"E_SpanningTreeTypes_StpGuardType": {
		1: {Name: "ROOT"},
		2: {Name: "LOOP"},
		3: {Name: "NONE"},
	},
	"E_SpanningTreeTypes_StpLinkType": {
		1: {Name: "P2P"},
		2: {Name: "SHARED"},
	},
	"E_SshServer_ProtocolVersion": {
		1: {Name: "V2"},
		2: {Name: "V1"},
		3: {Name: "V1_V2"},
	},
	"E_SubTlv_LinkType": {
		1: {Name: "POINT_TO_POINT"},
		2: {Name: "MULTI_ACCESS"},
		3: {Name: "UNKNOWN"},
	},
	"E_SystemLogging_SYSLOG_FACILITY": {
		1:  {Name: "ALL", DefiningModule: "openconfig-system-logging"},
		2:  {Name: "AUDIT", DefiningModule: "openconfig-system-logging"},
		3:  {Name: "AUTH", DefiningModule: "openconfig-system-logging"},
		4:  {Name: "AUTHPRIV", DefiningModule: "openconfig-system-logging"},
		5:  {Name: "CONSOLE", DefiningModule: "openconfig-system-logging"},
		6:  {Name: "KERNEL", DefiningModule: "openconfig-system-logging"},
		7:  {Name: "LOCAL0", DefiningModule: "openconfig-system-logging"},
		8:  {Name: "LOCAL1", DefiningModule: "openconfig-system-logging"},
		9:  {Name: "LOCAL2", DefiningModule: "openconfig-system-logging"},
		10: {Name: "LOCAL3", DefiningModule: "openconfig-system-logging"},
		11: {Name: "LOCAL4", DefiningModule: "openconfig-system-logging"},
		12: {Name: "LOCAL5", DefiningModule: "openconfig-system-logging"},
		13: {Name: "LOCAL6", DefiningModule: "openconfig-system-logging"},
		14: {Name: "LOCAL7", DefiningModule: "openconfig-system-logging"},
		15: {Name: "MAIL", DefiningModule: "openconfig-system-logging"},
		16: {Name: "NTP", DefiningModule: "openconfig-system-logging"},
		17: {Name: "SYSLOG", DefiningModule: "openconfig-system-logging"},
		18: {Name: "SYSTEM_DAEMON", DefiningModule: "openconfig-system-logging"},
		19: {Name: "USER", DefiningModule: "openconfig-system-logging"},
	},
	"E_SystemLogging_SyslogSeverity": {
		1: {Name: "EMERGENCY"},
		2: {Name: "ALERT"},
		3: {Name: "CRITICAL"},
		4: {Name: "ERROR"},
		5: {Name: "WARNING"},
		6: {Name: "NOTICE"},
		7: {Name: "INFORMATIONAL"},
		8: {Name: "DEBUG"},
	},
	"E_System_NTP_AUTH_TYPE": {
		1: {Name: "NTP_AUTH_MD5", DefiningModule: "openconfig-system"},
	},
	"E_Tlv_Reason": {
		1: {Name: "UNKNOWN"},
		2: {Name: "SOFTWARE_RESTART"},
		3: {Name: "SOFTWARE_RELOAD_UPGRADE"},
		4: {Name: "CONTROL_PROCESSOR_SWITCH"},
	},
	"E_Topology_Attributes": {
		1: {Name: "OVERLOAD"},
		2: {Name: "ATTACHED"},
	},
	"E_Transceiver_Present": {
		1: {Name: "PRESENT"},
		2: {Name: "NOT_PRESENT"},
	},
	"E_TransportLineProtection_APS_PATHS": {
		1: {Name: "PRIMARY", DefiningModule: "openconfig-transport-line-protection"},
		2: {Name: "SECONDARY", DefiningModule: "openconfig-transport-line-protection"},
	},
	"E_TransportTypes_AdminStateType": {
		1: {Name: "ENABLED"},
		2: {Name: "DISABLED"},
		3: {Name: "MAINT"},
	},
	"E_TransportTypes_CLIENT_MAPPING_MODE": {
		1: {Name: "MODE_1X100G", DefiningModule: "openconfig-transport-types"},
		2: {Name: "MODE_1X200G", DefiningModule: "openconfig-transport-types"},
		3: {Name: "MODE_1X400G", DefiningModule: "openconfig-transport-types"},
		4: {Name: "MODE_2X100G", DefiningModule: "openconfig-transport-types"},
		5: {Name: "MODE_2X200G", DefiningModule: "openconfig-transport-types"},
		6: {Name: "MODE_3X100G", DefiningModule: "openconfig-transport-types"},
		7: {Name: "MODE_4X100G", DefiningModule: "openconfig-transport-types"},
	},
	"E_TransportTypes_ETHERNET_PMD_TYPE": {
		1:  {Name: "ETH_1000BASE_LX10", DefiningModule: "openconfig-transport-types"},
		2:  {Name: "ETH_100GBASE_CLR4", DefiningModule: "openconfig-transport-types"},
		3:  {Name: "ETH_100GBASE_CR4", DefiningModule: "openconfig-transport-types"},
		4:  {Name: "ETH_100GBASE_CWDM4", DefiningModule: "openconfig-transport-types"},
		5:  {Name: "ETH_100GBASE_DR", DefiningModule: "openconfig-transport-types"},
		6:  {Name: "ETH_100GBASE_ER4", DefiningModule: "openconfig-transport-types"},
		7:  {Name: "ETH_100GBASE_ER4L", DefiningModule: "openconfig-transport-types"},
		8:  {Name: "ETH_100GBASE_FR", DefiningModule: "openconfig-transport-types"},
		9:  {Name: "ETH_100GBASE_LR4", DefiningModule: "openconfig-transport-types"},
		10: {Name: "ETH_100GBASE_PSM4", DefiningModule: "openconfig-transport-types"},
		11: {Name: "ETH_100GBASE_SR10", DefiningModule: "openconfig-transport-types"},
		12: {Name: "ETH_100GBASE_SR4", DefiningModule: "openconfig-transport-types"},
		13: {Name: "ETH_100G_ACC", DefiningModule: "openconfig-transport-types"},
		14: {Name: "ETH_100G_AOC", DefiningModule: "openconfig-transport-types"},
		15: {Name: "ETH_10GBASE_ER", DefiningModule: "openconfig-transport-types"},
		16: {Name: "ETH_10GBASE_LR", DefiningModule: "openconfig-transport-types"},
		17: {Name: "ETH_10GBASE_LRM", DefiningModule: "openconfig-transport-types"},
		18: {Name: "ETH_10GBASE_SR", DefiningModule: "openconfig-transport-types"},
		19: {Name: "ETH_10GBASE_ZR", DefiningModule: "openconfig-transport-types"},
		20: {Name: "ETH_400GBASE_DR4", DefiningModule: "openconfig-transport-types"},
		21: {Name: "ETH_400GBASE_FR4", DefiningModule: "openconfig-transport-types"},
		22: {Name: "ETH_400GBASE_LR4", DefiningModule: "openconfig-transport-types"},
		23: {Name: "ETH_400GBASE_LR8", DefiningModule: "openconfig-transport-types"},
		24: {Name: "ETH_400GBASE_ZR", DefiningModule: "openconfig-transport-types"},
		25: {Name: "ETH_400GMSA_PSM4", DefiningModule: "openconfig-transport-types"},
		26: {Name: "ETH_40GBASE_CR4", DefiningModule: "openconfig-transport-types"},
		27: {Name: "ETH_40GBASE_ER4", DefiningModule: "openconfig-transport-types"},
		28: {Name: "ETH_40GBASE_LR4", DefiningModule: "openconfig-transport-types"},
		29: {Name: "ETH_40GBASE_PSM4", DefiningModule: "openconfig-transport-types"},
		30: {Name: "ETH_40GBASE_SR4", DefiningModule: "openconfig-transport-types"},
		31: {Name: "ETH_4X10GBASE_LR", DefiningModule: "openconfig-transport-types"},
		32: {Name: "ETH_4X10GBASE_SR", DefiningModule: "openconfig-transport-types"},
		33: {Name: "ETH_UNDEFINED", DefiningModule: "openconfig-transport-types"},
	},
	"E_TransportTypes_FIBER_CONNECTOR_TYPE": {
		1: {Name: "AOC_CONNECTOR", DefiningModule: "openconfig-transport-types"},
		2: {Name: "DAC_CONNECTOR", DefiningModule: "openconfig-transport-types"},
		3: {Name: "LC_CONNECTOR", DefiningModule: "openconfig-transport-types"},
		4: {Name: "MPO_CONNECTOR", DefiningModule: "openconfig-transport-types"},
		5: {Name: "SC_CONNECTOR", DefiningModule: "openconfig-transport-types"},
	},
	"E_TransportTypes_FRAME_MAPPING_PROTOCOL": {
		1: {Name: "AMP", DefiningModule: "openconfig-transport-types"},
		2: {Name: "BMP", DefiningModule: "openconfig-transport-types"},
		3: {Name: "CBR", DefiningModule: "openconfig-transport-types"},
		4: {Name: "GFP_F", DefiningModule: "openconfig-transport-types"},
		5: {Name: "GFP_T", DefiningModule: "openconfig-transport-types"},
		6: {Name: "GMP", DefiningModule: "openconfig-transport-types"},
	},
	"E_TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE": {
		1: {Name: "PROT_ETHERNET", DefiningModule: "openconfig-transport-types"},
		2: {Name: "PROT_OTN", DefiningModule: "openconfig-transport-types"},
	},
	"E_TransportTypes_LoopbackModeType": {
		1: {Name: "NONE"},
		2: {Name: "FACILITY"},
		3: {Name: "TERMINAL"},
		4: {Name: "ASIC_PHY_LOCAL"},
		5: {Name: "ASIC_PHY_REMOTE"},
		6: {Name: "ASIC_MAC_LOCAL"},
		7: {Name: "ASIC_MAC_REMOTE"},
	},
	"E_TransportTypes_OPTICAL_PORT_TYPE": {
		1: {Name: "ADD", DefiningModule: "openconfig-transport-types"},
		2: {Name: "DROP", DefiningModule: "openconfig-transport-types"},
		3: {Name: "EGRESS", DefiningModule: "openconfig-transport-types"},
		4: {Name: "INGRESS", DefiningModule: "openconfig-transport-types"},
		5: {Name: "MONITOR", DefiningModule: "openconfig-transport-types"},
		6: {Name: "TERMINAL_CLIENT", DefiningModule: "openconfig-transport-types"},
		7: {Name: "TERMINAL_LINE", DefiningModule: "openconfig-transport-types"},
	},
	"E_TransportTypes_OTN_APPLICATION_CODE": {
		1: {Name: "OTN_UNDEFINED", DefiningModule: "openconfig-transport-types"},
		2: {Name: "P1L1_2D1", DefiningModule: "openconfig-transport-types"},
		3: {Name: "P1L1_2D2", DefiningModule: "openconfig-transport-types"},
		4: {Name: "P1S1_2D2", DefiningModule: "openconfig-transport-types"},
	},
	"E_TransportTypes_SONET_APPLICATION_CODE": {
		1: {Name: "SONET_UNDEFINED", DefiningModule: "openconfig-transport-types"},
		2: {Name: "VSR2000_3R2", DefiningModule: "openconfig-transport-types"},
		3: {Name: "VSR2000_3R3", DefiningModule: "openconfig-transport-types"},
		4: {Name: "VSR2000_3R5", DefiningModule: "openconfig-transport-types"},
	},
	"E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE": {
		1:  {Name: "CFP", DefiningModule: "openconfig-transport-types"},
		2:  {Name: "CFP2", DefiningModule: "openconfig-transport-types"},
		3:  {Name: "CFP2_ACO", DefiningModule: "openconfig-transport-types"},
		4:  {Name: "CFP4", DefiningModule: "openconfig-transport-types"},
		5:  {Name: "CPAK", DefiningModule: "openconfig-transport-types"},
		6:  {Name: "CSFP", DefiningModule: "openconfig-transport-types"},
		7:  {Name: "DSFP", DefiningModule: "openconfig-transport-types"},
		8:  {Name: "NON_PLUGGABLE", DefiningModule: "openconfig-transport-types"},
		9:  {Name: "OSFP", DefiningModule: "openconfig-transport-types"},
		10: {Name: "OTHER", DefiningModule: "openconfig-transport-types"},
		11: {Name: "QSFP", DefiningModule: "openconfig-transport-types"},
		12: {Name: "QSFP28", DefiningModule: "openconfig-transport-types"},
		13: {Name: "QSFP28_DD", DefiningModule: "openconfig-transport-types"},
		14: {Name: "QSFP56", DefiningModule: "openconfig-transport-types"},
		15: {Name: "QSFP56_DD", DefiningModule: "openconfig-transport-types"},
		16: {Name: "QSFP56_DD_TYPE1", DefiningModule: "openconfig-transport-types"},
		17: {Name: "QSFP56_DD_TYPE2", DefiningModule: "openconfig-transport-types"},
		18: {Name: "QSFP_PLUS", DefiningModule: "openconfig-transport-types"},
		19: {Name: "SFP", DefiningModule: "openconfig-transport-types"},
		20: {Name: "SFP28", DefiningModule: "openconfig-transport-types"},
		21: {Name: "SFP56", DefiningModule: "openconfig-transport-types"},
		22: {Name: "SFP_DD", DefiningModule: "openconfig-transport-types"},
		23: {Name: "SFP_PLUS", DefiningModule: "openconfig-transport-types"},
		24: {Name: "X2", DefiningModule: "openconfig-transport-types"},
		25: {Name: "XFP", DefiningModule: "openconfig-transport-types"},
	},
	"E_TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE": {
		1: {Name: "TYPE_DIGITAL_COHERENT_OPTIC", DefiningModule: "openconfig-transport-types"},
		2: {Name: "TYPE_STANDARD_OPTIC", DefiningModule: "openconfig-transport-types"},
	},
	"E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE": {
		1:  {Name: "PROT_100GE", DefiningModule: "openconfig-transport-types"},
		2:  {Name: "PROT_100G_MLG", DefiningModule: "openconfig-transport-types"},
		3:  {Name: "PROT_10GE_LAN", DefiningModule: "openconfig-transport-types"},
		4:  {Name: "PROT_10GE_WAN", DefiningModule: "openconfig-transport-types"},
		5:  {Name: "PROT_1GE", DefiningModule: "openconfig-transport-types"},
		6:  {Name: "PROT_400GE", DefiningModule: "openconfig-transport-types"},
		7:  {Name: "PROT_40GE", DefiningModule: "openconfig-transport-types"},
		8:  {Name: "PROT_800GE", DefiningModule: "openconfig-transport-types"},
		9:  {Name: "PROT_FLEXO", DefiningModule: "openconfig-transport-types"},
		10: {Name: "PROT_OC192", DefiningModule: "openconfig-transport-types"},
		11: {Name: "PROT_OC48", DefiningModule: "openconfig-transport-types"},
		12: {Name: "PROT_OC768", DefiningModule: "openconfig-transport-types"},
		13: {Name: "PROT_ODU2", DefiningModule: "openconfig-transport-types"},
		14: {Name: "PROT_ODU2E", DefiningModule: "openconfig-transport-types"},
		15: {Name: "PROT_ODU3", DefiningModule: "openconfig-transport-types"},
		16: {Name: "PROT_ODU4", DefiningModule: "openconfig-transport-types"},
		17: {Name: "PROT_ODUCN", DefiningModule: "openconfig-transport-types"},
		18: {Name: "PROT_ODUFLEX_CBR", DefiningModule: "openconfig-transport-types"},
		19: {Name: "PROT_ODUFLEX_GFP", DefiningModule: "openconfig-transport-types"},
		20: {Name: "PROT_OTSIG", DefiningModule: "openconfig-transport-types"},
		21: {Name: "PROT_OTU1E", DefiningModule: "openconfig-transport-types"},
		22: {Name: "PROT_OTU2", DefiningModule: "openconfig-transport-types"},
		23: {Name: "PROT_OTU2E", DefiningModule: "openconfig-transport-types"},
		24: {Name: "PROT_OTU3", DefiningModule: "openconfig-transport-types"},
		25: {Name: "PROT_OTU4", DefiningModule: "openconfig-transport-types"},
		26: {Name: "PROT_OTUCN", DefiningModule: "openconfig-transport-types"},
		27: {Name: "PROT_STM16", DefiningModule: "openconfig-transport-types"},
		28: {Name: "PROT_STM256", DefiningModule: "openconfig-transport-types"},
		29: {Name: "PROT_STM64", DefiningModule: "openconfig-transport-types"},
	},
	"E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE": {
		1:  {Name: "TRIB_RATE_1000G", DefiningModule: "openconfig-transport-types"},
		2:  {Name: "TRIB_RATE_100G", DefiningModule: "openconfig-transport-types"},
		3:  {Name: "TRIB_RATE_1050G", DefiningModule: "openconfig-transport-types"},
		4:  {Name: "TRIB_RATE_10G", DefiningModule: "openconfig-transport-types"},
		5:  {Name: "TRIB_RATE_1100G", DefiningModule: "openconfig-transport-types"},
		6:  {Name: "TRIB_RATE_1150G", DefiningModule: "openconfig-transport-types"},
		7:  {Name: "TRIB_RATE_1200G", DefiningModule: "openconfig-transport-types"},
		8:  {Name: "TRIB_RATE_1250G", DefiningModule: "openconfig-transport-types"},
		9:  {Name: "TRIB_RATE_1300G", DefiningModule: "openconfig-transport-types"},
		10: {Name: "TRIB_RATE_1350G", DefiningModule: "openconfig-transport-types"},
		11: {Name: "TRIB_RATE_1400G", DefiningModule: "openconfig-transport-types"},
		12: {Name: "TRIB_RATE_1450G", DefiningModule: "openconfig-transport-types"},
		13: {Name: "TRIB_RATE_1500G", DefiningModule: "openconfig-transport-types"},
		14: {Name: "TRIB_RATE_150G", DefiningModule: "openconfig-transport-types"},
		15: {Name: "TRIB_RATE_1550G", DefiningModule: "openconfig-transport-types"},
		16: {Name: "TRIB_RATE_1600G", DefiningModule: "openconfig-transport-types"},
		17: {Name: "TRIB_RATE_1650G", DefiningModule: "openconfig-transport-types"},
		18: {Name: "TRIB_RATE_1700G", DefiningModule: "openconfig-transport-types"},
		19: {Name: "TRIB_RATE_1750G", DefiningModule: "openconfig-transport-types"},
		20: {Name: "TRIB_RATE_1800G", DefiningModule: "openconfig-transport-types"},
		21: {Name: "TRIB_RATE_1850G", DefiningModule: "openconfig-transport-types"},
		22: {Name: "TRIB_RATE_1900G", DefiningModule: "openconfig-transport-types"},
		23: {Name: "TRIB_RATE_1950G", DefiningModule: "openconfig-transport-types"},
		24: {Name: "TRIB_RATE_1G", DefiningModule: "openconfig-transport-types"},
		25: {Name: "TRIB_RATE_2.5G", DefiningModule: "openconfig-transport-types"},
		26: {Name: "TRIB_RATE_2000G", DefiningModule: "openconfig-transport-types"},
		27: {Name: "TRIB_RATE_200G", DefiningModule: "openconfig-transport-types"},
		28: {Name: "TRIB_RATE_2050G", DefiningModule: "openconfig-transport-types"},
		29: {Name: "TRIB_RATE_2100G", DefiningModule: "openconfig-transport-types"},
		30: {Name: "TRIB_RATE_2150G", DefiningModule: "openconfig-transport-types"},
		31: {Name: "TRIB_RATE_2200G", DefiningModule: "openconfig-transport-types"},
		32: {Name: "TRIB_RATE_2250G", DefiningModule: "openconfig-transport-types"},
		33: {Name: "TRIB_RATE_2300G", DefiningModule: "openconfig-transport-types"},
		34: {Name: "TRIB_RATE_2350G", DefiningModule: "openconfig-transport-types"},
		35: {Name: "TRIB_RATE_2400G", DefiningModule: "openconfig-transport-types"},
		36: {Name: "TRIB_RATE_2450G", DefiningModule: "openconfig-transport-types"},
		37: {Name: "TRIB_RATE_2500G", DefiningModule: "openconfig-transport-types"},
		38: {Name: "TRIB_RATE_250G", DefiningModule: "openconfig-transport-types"},
		39: {Name: "TRIB_RATE_2550G", DefiningModule: "openconfig-transport-types"},
		40: {Name: "TRIB_RATE_2600G", DefiningModule: "openconfig-transport-types"},
		41: {Name: "TRIB_RATE_2650G", DefiningModule: "openconfig-transport-types"},
		42: {Name: "TRIB_RATE_2700G", DefiningModule: "openconfig-transport-types"},
		43: {Name: "TRIB_RATE_2750G", DefiningModule: "openconfig-transport-types"},
		44: {Name: "TRIB_RATE_2800G", DefiningModule: "openconfig-transport-types"},
		45: {Name: "TRIB_RATE_2850G", DefiningModule: "openconfig-transport-types"},
		46: {Name: "TRIB_RATE_2900G", DefiningModule: "openconfig-transport-types"},
		47: {Name: "TRIB_RATE_2950G", DefiningModule: "openconfig-transport-types"},
		48: {Name: "TRIB_RATE_3000G", DefiningModule: "openconfig-transport-types"},
		49: {Name: "TRIB_RATE_300G", DefiningModule: "openconfig-transport-types"},
		50: {Name: "TRIB_RATE_3050G", DefiningModule: "openconfig-transport-types"},
		51: {Name: "TRIB_RATE_3100G", DefiningModule: "openconfig-transport-types"},
		52: {Name: "TRIB_RATE_3150G", DefiningModule: "openconfig-transport-types"},
		53: {Name: "TRIB_RATE_3200G", DefiningModule: "openconfig-transport-types"},
		54: {Name: "TRIB_RATE_350G", DefiningModule: "openconfig-transport-types"},
		55: {Name: "TRIB_RATE_400G", DefiningModule: "openconfig-transport-types"},
		56: {Name: "TRIB_RATE_40G", DefiningModule: "openconfig-transport-types"},
		57: {Name: "TRIB_RATE_450G", DefiningModule: "openconfig-transport-types"},
		58: {Name: "TRIB_RATE_500G", DefiningModule: "openconfig-transport-types"},
		59: {Name: "TRIB_RATE_550G", DefiningModule: "openconfig-transport-types"},
		60: {Name: "TRIB_RATE_600G", DefiningModule: "openconfig-transport-types"},
		61: {Name: "TRIB_RATE_650G", DefiningModule: "openconfig-transport-types"},
		62: {Name: "TRIB_RATE_700G", DefiningModule: "openconfig-transport-types"},
		63: {Name: "TRIB_RATE_750G", DefiningModule: "openconfig-transport-types"},
		64: {Name: "TRIB_RATE_800G", DefiningModule: "openconfig-transport-types"},
		65: {Name: "TRIB_RATE_850G", DefiningModule: "openconfig-transport-types"},
		66: {Name: "TRIB_RATE_900G", DefiningModule: "openconfig-transport-types"},
		67: {Name: "TRIB_RATE_950G", DefiningModule: "openconfig-transport-types"},
	},
	"E_TransportTypes_TRIBUTARY_SLOT_GRANULARITY": {
		1: {Name: "TRIB_SLOT_1.25G", DefiningModule: "openconfig-transport-types"},
		2: {Name: "TRIB_SLOT_2.5G", DefiningModule: "openconfig-transport-types"},
		3: {Name: "TRIB_SLOT_5G", DefiningModule: "openconfig-transport-types"},
	},
	"E_Transport_BuiltinDetail": {
		1: {Name: "TCP_INITIAL"},
		2: {Name: "TCP_ESTABLISHED"},
		3: {Name: "FRAGMENT"},
	},
	"E_Transport_DetailMode": {
		1: {Name: "EXPLICIT"},
		2: {Name: "BUILTIN"},
	},
	"E_Transport_ExplicitDetailMatchMode": {
		1: {Name: "ANY"},
		2: {Name: "ALL"},
	},
	"E_Types_ADDRESS_FAMILY": {
		1: {Name: "IPV4", DefiningModule: "openconfig-types"},
		2: {Name: "IPV6", DefiningModule: "openconfig-types"},
		3: {Name: "L2_ETHERNET", DefiningModule: "openconfig-types"},
		4: {Name: "MPLS", DefiningModule: "openconfig-types"},
	},
	"E_VlanTypes_TPID_TYPES": {
		1: {Name: "TPID_0X8100", DefiningModule: "openconfig-vlan-types"},
		2: {Name: "TPID_0X88A8", DefiningModule: "openconfig-vlan-types"},
		3: {Name: "TPID_0X9100", DefiningModule: "openconfig-vlan-types"},
		4: {Name: "TPID_0X9200", DefiningModule: "openconfig-vlan-types"},
		5: {Name: "TPID_ANY", DefiningModule: "openconfig-vlan-types"},
	},
	"E_VlanTypes_VlanModeType": {
		1: {Name: "ACCESS"},
		2: {Name: "TRUNK"},
	},
	"E_VlanTypes_VlanStackAction": {
		1: {Name: "PUSH"},
		2: {Name: "POP"},
		3: {Name: "SWAP"},
	},
	"E_Vlan_Status": {
		1: {Name: "ACTIVE"},
		2: {Name: "SUSPENDED"},
	},
	"E_WeightedEcmp_LoadBalancingWeight_Enum": {
		1: {Name: "auto"},
		2: {Name: "none"},
	},
}

var (
	// ySchema is a byte slice contain a gzip compressed representation of the
	// YANG schema from which the Go code was generated. When uncompressed the
	// contents of the byte slice is a JSON document containing an object, keyed
	// on the name of the generated struct, and containing the JSON marshalled
	// contents of a goyang yang.Entry struct, which defines the schema for the
	// fields within the struct.
	ySchema = []byte{
		0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7d, 0x6f, 0xdb, 0x48,
		0xb2, 0x3d, 0xfc, 0x7f, 0x3e, 0x05, 0x21, 0x5c, 0x60, 0x12, 0x60, 0x18, 0xdb, 0x8a, 0x6c, 0x27,
		0x06, 0x16, 0x0f, 0x64, 0x89, 0x8e, 0xf9, 0x1b, 0x49, 0xd4, 0x52, 0x74, 0x36, 0xb9, 0x19, 0x5f,
		0x82, 0xa1, 0x5a, 0x0e, 0x31, 0x32, 0xa9, 0x25, 0xe9, 0x4c, 0x8c, 0x89, 0xbf, 0xfb, 0x03, 0xea,
		0xfd, 0x5d, 0x22, 0xbb, 0x9a, 0xa2, 0xc8, 0x13, 0xec, 0x6c, 0x1c, 0xdb, 0x6a, 0x4a, 0xa7, 0xab,
		0xab, 0x4e, 0x9d, 0xee, 0xae, 0xfa, 0xe7, 0x95, 0x24, 0x49, 0x52, 0xa9, 0x65, 0x3d, 0xb2, 0xd2,
		0x95, 0x54, 0xea, 0xb2, 0x1f, 0x8e, 0xcd, 0x4a, 0xbf, 0x8f, 0xbe, 0xfb, 0x87, 0xe3, 0x76, 0x4b,
		0x57, 0xd2, 0xd9, 0xf8, 0x9f, 0x35, 0xcf, 0xed, 0x39, 0x0f, 0xa5, 0x2b, 0xe9, 0x74, 0xfc, 0x8d,
		0xba, 0xe3, 0x97, 0xae, 0xa4, 0xd1, 0x10, 0xc3, 0x6f, 0x58, 0x76, 0x7f, 0xe1, 0x1b, 0x0b, 0x63,
		0x47, 0x3f, 0xfc, 0x7d, 0xf1, 0x47, 0x8b, 0x0f, 0x98, 0x7e, 0x7b, 0xf9, 0x41, 0xd3, 0x1f, 0xb4,
		0x7d, 0xd6, 0x73, 0x7e, 0xae, 0x3c, 0x62, 0xe1, 0x31, 0x9e, 0x2d, 0xaf, 0x3e, 0x69, 0xf8, 0x1b,
		0x1d, 0xef, 0xc9, 0xb7, 0xd9, 0xda, 0x57, 0x8f, 0xde, 0x0d, 0x7b, 0xfe, 0xdb, 0xf3, 0xa3, 0x37,
		0x54, 0x1a, 0x8c, 0x1e, 0xf4, 0xfb, 0xfa, 0x5f, 0xbc, 0xb5, 0x82, 0xaa, 0xff, 0xf0, 0xf4, 0xc8,
		0xdc, 0xb0, 0x74, 0x25, 0x85, 0xfe, 0x13, 0xdb, 0xf0, 0x8b, 0x73, 0xbf, 0x35, 0x79, 0x5f, 0x2b,
		0xbf, 0xf8, 0xb2, 0xf0, 0x9d, 0x97, 0xa5, 0x4f, 0xbc, 0x0c, 0xf1, 0x3c, 0xd4, 0x72, 0xc0, 0xc2,
		0x60, 0xf3, 0xc7, 0x99, 0xc3, 0x7d, 0xf4, 0x9b, 0x1b, 0xde, 0xe4, 0xfa, 0x49, 0xd8, 0x39, 0x19,
		0xfb, 0x4c, 0xca, 0xfe, 0x93, 0xb3, 0xef, 0x24, 0xc5, 0x9e, 0xac, 0xd8, 0x93, 0x16, 0x6b, 0xf2,
		0xd6, 0x4f, 0xe2, 0x86, 0xc9, 0xdc, 0x39, 0xa9, 0xcb, 0x93, 0xbb, 0x1b, 0x85, 0xa5, 0x39, 0xde,
		0x85, 0xc1, 0xf6, 0xa9, 0xde, 0x7b, 0xca, 0xe3, 0x4c, 0x7d, 0x7c, 0x13, 0x88, 0x6b, 0x0a, 0x89,
		0x4d, 0x22, 0xb1, 0x69, 0x24, 0x32, 0x91, 0xed, 0xa6, 0xb2, 0xc3, 0x64, 0xf6, 0x36, 0x9d, 0x05,
		0x13, 0x62, 0x6e, 0xe8, 0x3b, 0x2c, 0xd8, 0x1f, 0xc1, 0x79, 0x73, 0x9a, 0xbc, 0x78, 0x4f, 0x28,
		0xf6, 0x33, 0xad, 0xd8, 0x26, 0x96, 0xc4, 0xd4, 0x92, 0x9b, 0x5c, 0x52, 0xd3, 0xe3, 0x36, 0x41,
		0x6e, 0x53, 0xe4, 0x32, 0xc9, 0xfd, 0x4c, 0x73, 0x4f, 0x13, 0x8d, 0x6d, 0xaa, 0x2b, 0x26, 0xfb,
		0x1c, 0x1f, 0xf7, 0x65, 0xc3, 0x7d, 0x8e, 0x8b, 0x7b, 0x3c, 0xf3, 0x4d, 0x6c, 0xc6, 0x3c, 0xe6,
		0xcc, 0x6f, 0xd6, 0xbc, 0xe6, 0x4d, 0x66, 0xe6, 0x64, 0xe6, 0x4e, 0x62, 0xf6, 0xf1, 0xcc, 0x3f,
		0xe6, 0x32, 0x48, 0xbc, 0x1c, 0xe6, 0x96, 0x45, 0xe8, 0x78, 0x6e, 0x90, 0x7c, 0xb6, 0x66, 0x8b,
		0x63, 0x34, 0x50, 0x42, 0x88, 0x93, 0x2d, 0x11, 0xee, 0xa5, 0x42, 0xb1, 0x64, 0xe8, 0x96, 0x0e,
		0xd5, 0x12, 0x22, 0x5f, 0x4a, 0xe4, 0x4b, 0x8a, 0x74, 0x69, 0x25, 0x5b, 0x62, 0x09, 0x97, 0x1a,
		0xf7, 0x92, 0x9b, 0x0e, 0x60, 0x4f, 0x6c, 0x96, 0x73, 0x92, 0x27, 0x66, 0x37, 0x1e, 0x8f, 0x73,
		0x42, 0xf8, 0x16, 0x22, 0xd9, 0x82, 0xa4, 0x5c, 0x98, 0xf4, 0x0b, 0x94, 0x7a, 0xa1, 0x0a, 0x5b,
		0xb0, 0xc2, 0x16, 0xae, 0x90, 0x05, 0xcc, 0xb7, 0x90, 0x39, 0x17, 0x34, 0xd9, 0xc2, 0x9e, 0x0e,
		0xd4, 0xf3, 0xfc, 0xbf, 0x2d, 0xbf, 0xeb, 0xb8, 0x0f, 0xf2, 0x28, 0x3a, 0xd2, 0xd9, 0xc9, 0xc4,
		0x92, 0x57, 0x1f, 0x41, 0x34, 0xad, 0x63, 0x37, 0x70, 0x4a, 0x34, 0x1c, 0x95, 0x3b, 0x10, 0xe1,
		0x16, 0xc4, 0xb9, 0x07, 0x51, 0x6e, 0x42, 0xb8, 0xbb, 0x10, 0xee, 0x36, 0x84, 0xba, 0x0f, 0x1a,
		0x37, 0x42, 0xe4, 0x4e, 0xa6, 0x9f, 0xb4, 0x69, 0xb9, 0x5d, 0x2b, 0xf4, 0x86, 0x09, 0xe8, 0x19,
		0xd1, 0x98, 0xc6, 0xf3, 0x80, 0x89, 0x59, 0x03, 0x4e, 0x97, 0xb9, 0xa1, 0x13, 0x3e, 0xfb, 0xac,
		0x47, 0xb9, 0x10, 0x26, 0xec, 0xe2, 0x9c, 0x70, 0x4c, 0x75, 0xfc, 0x56, 0xaf, 0xad, 0x40, 0xc0,
		0x12, 0x9b, 0x00, 0x72, 0xa3, 0xe9, 0xff, 0xa9, 0xea, 0x75, 0xb5, 0xf5, 0xd1, 0xac, 0xd6, 0x0c,
		0x55, 0x6b, 0x51, 0x2f, 0xb5, 0x4f, 0x56, 0xff, 0x69, 0x28, 0xa7, 0x7d, 0x25, 0x1d, 0x37, 0xfa,
		0xf3, 0x0f, 0xf9, 0x88, 0x0b, 0xd0, 0x54, 0x6b, 0x35, 0xa5, 0x6d, 0x94, 0xc8, 0x1f, 0xf2, 0xf2,
		0xfb, 0xb1, 0x21, 0x51, 0xd7, 0xb5, 0x36, 0x70, 0x90, 0x4a, 0xba, 0xf2, 0xff, 0x94, 0x9a, 0x08,
		0x8b, 0x20, 0x1d, 0xf1, 0x3e, 0xa7, 0x91, 0xa6, 0xea, 0xba, 0x5e, 0x68, 0x91, 0x12, 0xce, 0xe1,
		0xb8, 0xcf, 0x0f, 0x5e, 0x28, 0x7b, 0xb6, 0x6c, 0x7b, 0x8f, 0x03, 0x9f, 0x05, 0x01, 0xeb, 0xca,
		0x7d, 0x66, 0xf5, 0xa2, 0x87, 0x10, 0x01, 0xf0, 0x2a, 0x03, 0x10, 0x96, 0xfa, 0x9e, 0x38, 0xbe,
		0x3e, 0x37, 0x36, 0xd1, 0x64, 0xd7, 0x59, 0xcf, 0x7a, 0xea, 0x87, 0xa4, 0x71, 0xa3, 0xd4, 0xd0,
		0x3e, 0x9a, 0x2d, 0xad, 0xa5, 0xd0, 0xac, 0xe0, 0x7b, 0xe4, 0x24, 0xc8, 0x49, 0x90, 0x93, 0x64,
		0x30, 0x52, 0x20, 0x7f, 0x48, 0x2d, 0x7f, 0x88, 0x5c, 0x2a, 0x12, 0x87, 0x55, 0x4c, 0xe8, 0xc2,
		0xcc, 0x71, 0x53, 0xe6, 0x08, 0x8b, 0xce, 0x97, 0x4e, 0x43, 0xfb, 0x08, 0xda, 0x0c, 0xda, 0x9c,
		0x36, 0x6d, 0x3e, 0xa8, 0xe0, 0x4e, 0x0c, 0x7c, 0x29, 0xb0, 0xbf, 0xb3, 0x47, 0x6b, 0x60, 0x85,
		0xdf, 0xa3, 0x85, 0x75, 0xe2, 0x0d, 0x98, 0x3b, 0xda, 0x1b, 0x8b, 0x42, 0xf9, 0xc9, 0xf8, 0xbf,
		0xe1, 0xa9, 0xc5, 0xc9, 0x17, 0x27, 0x73, 0x67, 0x92, 0xa6, 0x5f, 0x3f, 0x9f, 0x8c, 0xf7, 0xb4,
		0x4f, 0xc6, 0x3b, 0x6b, 0xaf, 0x0e, 0x03, 0x31, 0x07, 0xbc, 0xa5, 0x20, 0xb4, 0x42, 0x46, 0xb7,
		0xc5, 0x38, 0x1a, 0x2e, 0x63, 0x3b, 0x8c, 0x65, 0xec, 0x30, 0x66, 0x80, 0x9e, 0x63, 0x87, 0x31,
		0x46, 0xce, 0x8e, 0x1d, 0x46, 0x64, 0xf3, 0xc8, 0xe6, 0x91, 0xcd, 0xd3, 0x12, 0x58, 0xec, 0x30,
		0x62, 0x87, 0x31, 0x9f, 0x42, 0x01, 0x76, 0x18, 0xb1, 0xc3, 0xb8, 0x88, 0x03, 0x76, 0x18, 0x0f,
		0xa4, 0x14, 0x60, 0x83, 0x8d, 0x62, 0x50, 0x6c, 0xb0, 0x81, 0x92, 0x83, 0x92, 0x63, 0x83, 0x0d,
		0xf4, 0x99, 0x0c, 0x10, 0x6c, 0xb0, 0xad, 0xc7, 0x04, 0x1b, 0x6c, 0xd8, 0x60, 0x3b, 0x38, 0x6b,
		0xc4, 0xfe, 0xd2, 0xb6, 0xfd, 0xa5, 0xd1, 0xb6, 0xca, 0xa1, 0xb6, 0x97, 0x52, 0xbd, 0x35, 0x47,
		0x34, 0x17, 0xe4, 0x73, 0x50, 0xe2, 0xda, 0x64, 0xf3, 0x9f, 0xec, 0xd0, 0x9d, 0x68, 0x15, 0x76,
		0xdf, 0xac, 0xda, 0xfd, 0x0e, 0x0b, 0xa3, 0xbf, 0x94, 0xe8, 0x21, 0x66, 0x75, 0xfc, 0x90, 0x57,
		0xe9, 0x4c, 0x50, 0x82, 0xc9, 0xe1, 0xbd, 0x8d, 0x48, 0x73, 0x0b, 0x11, 0xd7, 0x80, 0x45, 0x64,
		0x10, 0xb8, 0x06, 0x2c, 0xd0, 0xa1, 0x71, 0x5f, 0x03, 0xee, 0xb2, 0xc0, 0xf6, 0x9d, 0x01, 0x49,
		0x78, 0x9a, 0x2b, 0xb5, 0x35, 0x1b, 0x94, 0x66, 0xbb, 0xfe, 0x14, 0x17, 0x82, 0x0f, 0x90, 0xf4,
		0x63, 0xbb, 0x3e, 0x03, 0xfc, 0x91, 0x2c, 0x89, 0x9f, 0x3b, 0x47, 0xe3, 0x3b, 0xee, 0x03, 0x85,
		0xbd, 0x4d, 0x02, 0xe6, 0xfb, 0x5c, 0x31, 0x6c, 0x61, 0x47, 0xe6, 0x0e, 0x74, 0x0a, 0x8b, 0xfd,
		0xf7, 0x89, 0xb9, 0x36, 0x93, 0x9d, 0x2e, 0xe1, 0x59, 0xac, 0xb9, 0x41, 0xe1, 0xe2, 0xe1, 0xe2,
		0xe1, 0xe2, 0x33, 0xe5, 0xe2, 0x9f, 0x1c, 0x37, 0x7c, 0x57, 0x26, 0x74, 0xf1, 0x97, 0x04, 0x43,
		0xe9, 0x96, 0xfb, 0xc0, 0xc8, 0x84, 0x4c, 0x42, 0x55, 0xbb, 0xe9, 0xb8, 0xf4, 0xca, 0xf0, 0x50,
		0xb7, 0xa5, 0xdb, 0x7e, 0x9a, 0x8e, 0x7b, 0xe3, 0x8f, 0x44, 0x83, 0xba, 0xf3, 0xe0, 0x0c, 0x6b,
		0xa4, 0x52, 0x3f, 0xa0, 0xc5, 0x1e, 0xac, 0xd0, 0xf9, 0x11, 0xbd, 0xf7, 0x9e, 0xd5, 0x0f, 0x18,
		0x9d, 0x1e, 0x48, 0xa8, 0xea, 0x37, 0xad, 0x9f, 0xe2, 0xa6, 0xac, 0x52, 0xfe, 0x50, 0xf9, 0x70,
		0x71, 0x59, 0xfe, 0x70, 0x8e, 0xb9, 0x23, 0x71, 0x90, 0x74, 0xa3, 0xdc, 0x83, 0x69, 0x0a, 0x66,
		0x9a, 0xc5, 0x16, 0x64, 0x79, 0x2e, 0x5b, 0xa4, 0x23, 0x95, 0x3a, 0xee, 0xe0, 0x29, 0x94, 0x1d,
		0x37, 0x64, 0x7e, 0xcf, 0xe2, 0xa9, 0x74, 0x39, 0xdd, 0xcb, 0x5d, 0x1a, 0x10, 0xe2, 0x29, 0xc4,
		0xd3, 0x03, 0xd1, 0x71, 0xd4, 0x50, 0x44, 0x0d, 0x45, 0xe4, 0xd3, 0xc8, 0xa7, 0xf3, 0xba, 0xe5,
		0xbe, 0x14, 0x6a, 0x8f, 0xf8, 0x6a, 0xe7, 0xf4, 0x33, 0xc8, 0x3e, 0xeb, 0xd1, 0x79, 0xc0, 0xc5,
		0x61, 0xe1, 0x08, 0xf7, 0x71, 0x84, 0x4e, 0x0f, 0x7e, 0x50, 0x80, 0x1f, 0x74, 0x7a, 0xb8, 0xe8,
		0x49, 0xcb, 0x73, 0xc4, 0xf0, 0x1d, 0xe2, 0xe5, 0x4e, 0xbe, 0xec, 0x45, 0x2c, 0x7f, 0x61, 0x6e,
		0x40, 0x94, 0x3b, 0x10, 0xee, 0x16, 0x84, 0xbb, 0x07, 0x91, 0x6e, 0x82, 0x58, 0x64, 0xa3, 0xba,
		0x7a, 0x42, 0xe4, 0x3e, 0x56, 0x39, 0x83, 0xb8, 0x63, 0xd8, 0xbc, 0x2a, 0xc6, 0x2e, 0xe7, 0x42,
		0xad, 0xd7, 0x52, 0x3b, 0x19, 0x91, 0xce, 0x46, 0xb8, 0xd3, 0x11, 0xed, 0x7c, 0x52, 0x73, 0x42,
		0xa9, 0x39, 0xa3, 0x34, 0x9c, 0x12, 0xad, 0x73, 0x22, 0x76, 0x52, 0x53, 0x00, 0xc8, 0xaf, 0xba,
		0xac, 0x58, 0x7b, 0x9f, 0x59, 0x3d, 0xda, 0xeb, 0x2e, 0x2b, 0xcc, 0xe5, 0x52, 0xc0, 0xd8, 0xed,
		0x69, 0xd6, 0x1a, 0x99, 0xc5, 0xd5, 0xd4, 0x41, 0x06, 0xcb, 0xdf, 0x18, 0xff, 0x7b, 0x78, 0x90,
		0x38, 0xd3, 0x53, 0x2d, 0xa8, 0x52, 0xd6, 0x74, 0x7c, 0xe1, 0x15, 0xb3, 0xe8, 0x57, 0x14, 0xe5,
		0xce, 0x6a, 0xf0, 0xf4, 0x2d, 0x85, 0x40, 0xbd, 0xf0, 0x14, 0xc4, 0x6a, 0xc4, 0x6a, 0xc4, 0x6a,
		0xc4, 0x6a, 0xc4, 0xea, 0x3d, 0x63, 0xf5, 0xd7, 0x59, 0xac, 0xfe, 0x97, 0xfd, 0xe4, 0xfb, 0xcc,
		0x0d, 0x5f, 0xbf, 0x39, 0x79, 0xfb, 0xf6, 0x64, 0xfa, 0x1b, 0xf7, 0xe3, 0x97, 0xcc, 0xfb, 0xd9,
		0x60, 0xcd, 0xf7, 0xa6, 0x23, 0x77, 0xd9, 0x4f, 0x84, 0xfd, 0x63, 0x0b, 0xfb, 0x99, 0xd2, 0x0b,
		0x94, 0x9f, 0x21, 0xed, 0x35, 0x65, 0x71, 0xd2, 0x93, 0x67, 0xcb, 0xec, 0x67, 0x78, 0x15, 0xb2,
		0x3e, 0x7b, 0x64, 0xa1, 0xff, 0x2c, 0x7b, 0xae, 0x6c, 0x7f, 0x1f, 0x1e, 0x4f, 0x14, 0x2a, 0x47,
		0x0d, 0xcf, 0x64, 0x09, 0xd4, 0xa3, 0xb2, 0x26, 0x45, 0xdd, 0x67, 0xbc, 0x38, 0xae, 0xb0, 0x8d,
		0xbd, 0x85, 0x7d, 0x2c, 0x92, 0x6d, 0x3e, 0xba, 0x89, 0xa1, 0x28, 0xa2, 0x43, 0x53, 0xd9, 0x75,
		0x35, 0x2b, 0x20, 0xa8, 0xf0, 0xba, 0x12, 0xa9, 0xa9, 0xf7, 0x03, 0xca, 0xd8, 0x0f, 0x38, 0x1e,
		0x7a, 0x8f, 0xfd, 0x00, 0xec, 0x07, 0x40, 0x63, 0x80, 0xc6, 0x00, 0x8d, 0x01, 0x1a, 0x03, 0x34,
		0x86, 0x6c, 0xec, 0x07, 0x40, 0xf6, 0x46, 0x48, 0x42, 0x48, 0x42, 0x48, 0x42, 0x48, 0x42, 0x48,
		0xca, 0x9f, 0xec, 0x8d, 0xfe, 0x54, 0x59, 0x94, 0xe0, 0x08, 0x8a, 0xdc, 0x11, 0x2a, 0x70, 0xb8,
		0x1d, 0x11, 0x7b, 0x06, 0x4b, 0x24, 0xaa, 0xe5, 0xae, 0x52, 0x79, 0x6a, 0xf4, 0x16, 0xd4, 0xc9,
		0x73, 0xcd, 0xe9, 0x57, 0x3a, 0xeb, 0xa1, 0x01, 0x17, 0x1a, 0x70, 0xc5, 0xa0, 0x9d, 0xb8, 0x9e,
		0x86, 0xeb, 0x69, 0xc7, 0xee, 0x80, 0x51, 0x19, 0x36, 0x33, 0x73, 0x21, 0xb6, 0x42, 0xec, 0x62,
		0xd8, 0xcb, 0x74, 0xf5, 0x83, 0xc1, 0x8f, 0x0a, 0x41, 0xc9, 0x83, 0x68, 0x14, 0xd4, 0x39, 0x88,
		0xfc, 0xe9, 0xe0, 0xaf, 0x50, 0x7e, 0xb4, 0x42, 0xfb, 0x3b, 0xaa, 0x1d, 0x24, 0x88, 0x46, 0x33,
		0xf4, 0x50, 0xf3, 0x20, 0x99, 0x09, 0xa2, 0xe6, 0x41, 0xca, 0x8b, 0x15, 0xd4, 0x52, 0xe0, 0x62,
		0xce, 0x06, 0xc1, 0x24, 0xbb, 0xf8, 0xdb, 0x65, 0x41, 0xe8, 0xb8, 0x43, 0x5a, 0x24, 0x5b, 0xdd,
		0xae, 0xcf, 0x82, 0x80, 0xfe, 0xd0, 0xcf, 0xba, 0x87, 0xa0, 0xa5, 0x54, 0xd6, 0xdc, 0x85, 0x28,
		0xb7, 0x21, 0xdc, 0x7d, 0x08, 0x77, 0x23, 0x29, 0xb8, 0x13, 0x3a, 0xe9, 0x51, 0x3a, 0x8e, 0xf6,
		0x52, 0x83, 0x1f, 0x15, 0x99, 0xdc, 0x0a, 0x66, 0xe5, 0xaa, 0x09, 0xc7, 0x6c, 0x5b, 0x61, 0xc8,
		0x7c, 0x97, 0xbc, 0x3f, 0x53, 0xe9, 0xf5, 0xd7, 0x53, 0xf9, 0xc3, 0xfd, 0xaf, 0xaf, 0x67, 0xf2,
		0x87, 0xfb, 0xd1, 0x97, 0x67, 0xc3, 0xbf, 0xfe, 0x29, 0xbf, 0xfc, 0x2a, 0x7f, 0x3d, 0x95, 0x2b,
		0xe3, 0xef, 0x96, 0xcf, 0xbf, 0x9e, 0xca, 0xe7, 0xf7, 0x6f, 0x5e, 0xff, 0xf9, 0xe7, 0xdb, 0xb8,
		0xaf, 0x79, 0xf3, 0xcf, 0xbb, 0x97, 0x93, 0xe9, 0x8b, 0xca, 0xe3, 0x9f, 0xbe, 0xfb, 0x7a, 0x2a,
		0x97, 0xef, 0xdf, 0xd0, 0x99, 0xed, 0x3d, 0x25, 0xde, 0x5a, 0x47, 0xfd, 0x2c, 0x0c, 0xf4, 0xff,
		0x7b, 0x7d, 0x70, 0xd8, 0xdf, 0xfc, 0x0f, 0x21, 0xf0, 0x85, 0xd8, 0x42, 0x12, 0x7e, 0x73, 0x23,
		0x1b, 0x67, 0xae, 0xd7, 0xf0, 0xa4, 0xb1, 0x8f, 0x94, 0x03, 0x16, 0xa6, 0xc2, 0xcb, 0xe6, 0x9f,
		0x07, 0x8a, 0x06, 0x8a, 0x06, 0x8a, 0x56, 0x58, 0x8a, 0x46, 0x7f, 0xd6, 0x44, 0xc4, 0x19, 0x93,
		0x85, 0xb3, 0x25, 0x01, 0x0b, 0x83, 0xab, 0x2e, 0xeb, 0x39, 0x2e, 0xeb, 0x8e, 0x24, 0xf8, 0xc9,
		0x37, 0xe7, 0xf8, 0xe6, 0xd6, 0x1f, 0x4c, 0xbf, 0x4f, 0x77, 0x2a, 0x12, 0xc1, 0x35, 0x1b, 0xc1,
		0x35, 0xb0, 0x07, 0x02, 0x42, 0x68, 0x34, 0x2a, 0x02, 0x25, 0x02, 0x25, 0x02, 0x65, 0x61, 0x03,
		0x25, 0xa1, 0x0f, 0x98, 0xf7, 0x03, 0x94, 0x2d, 0xb2, 0x69, 0x1b, 0xb3, 0x4c, 0xfe, 0x08, 0x38,
		0xe8, 0x2a, 0xa2, 0x51, 0xcb, 0x74, 0x70, 0x41, 0x0d, 0x5b, 0xa6, 0xe3, 0x8b, 0x6e, 0xfe, 0x31,
		0xb3, 0x3c, 0x51, 0x4d, 0x40, 0x88, 0x17, 0xdd, 0xe2, 0xd4, 0x5a, 0x3f, 0xc5, 0x4f, 0xed, 0xc5,
		0x3b, 0xcc, 0x6d, 0x2a, 0x6e, 0x99, 0x7e, 0x34, 0x48, 0x59, 0x39, 0x63, 0xdb, 0x82, 0x44, 0xab,
		0xc9, 0xc8, 0x60, 0xdd, 0x60, 0xdd, 0x60, 0xdd, 0x60, 0xdd, 0x60, 0xdd, 0x60, 0xdd, 0x60, 0xdd,
		0x60, 0xdd, 0x60, 0xdd, 0xc7, 0xcf, 0xba, 0x1b, 0x4e, 0x10, 0x56, 0xc3, 0x90, 0xb8, 0x0c, 0x4d,
		0xd3, 0x71, 0x95, 0x3e, 0x8b, 0xc2, 0x2e, 0xb1, 0x09, 0x45, 0xab, 0x6b, 0x6e, 0xe4, 0xb3, 0xf7,
		0x95, 0xca, 0xc5, 0x65, 0xa5, 0x72, 0x7a, 0xf9, 0xee, 0xf2, 0xf4, 0xc3, 0xf9, 0xf9, 0xd9, 0xc5,
		0x19, 0x65, 0x38, 0xd1, 0xfc, 0x2e, 0xf3, 0x59, 0xf7, 0xfa, 0xb9, 0x74, 0x25, 0xb9, 0x4f, 0xfd,
		0xbe, 0x88, 0xa1, 0xef, 0x02, 0xe6, 0x93, 0xae, 0x01, 0xe4, 0x63, 0x99, 0xc8, 0xc7, 0xbe, 0x7b,
		0x03, 0xb9, 0xef, 0x3c, 0x3a, 0x02, 0x12, 0xb2, 0xd9, 0xd0, 0xc8, 0xc8, 0x90, 0x91, 0x21, 0x23,
		0x2b, 0x6c, 0x46, 0xf6, 0xe4, 0xb8, 0xe1, 0x7b, 0xa4, 0x64, 0x48, 0xc9, 0x90, 0x92, 0x1d, 0x3e,
		0x25, 0x2b, 0x9f, 0x9f, 0x63, 0x72, 0x91, 0x93, 0x81, 0x79, 0x1f, 0x9a, 0x79, 0xf7, 0x99, 0xfb,
		0x30, 0x3c, 0xa1, 0x46, 0x4c, 0xbb, 0xc7, 0xe3, 0x82, 0x73, 0x83, 0x73, 0x83, 0x73, 0x17, 0x9a,
		0x73, 0x9f, 0x5d, 0x08, 0x20, 0xdd, 0x17, 0x20, 0xdd, 0x20, 0xdd, 0x20, 0xdd, 0xf1, 0xa6, 0xf6,
		0xe2, 0xfc, 0xfc, 0x1d, 0x68, 0x37, 0x68, 0x37, 0xc5, 0x34, 0xb0, 0x9f, 0xa1, 0x6f, 0xc9, 0x4f,
		0x6e, 0x10, 0x5a, 0xdf, 0xfa, 0xc4, 0xd1, 0xc3, 0x67, 0x3d, 0xe6, 0x33, 0xd7, 0x3e, 0x0a, 0xa7,
		0x3c, 0x09, 0x75, 0xfa, 0x4d, 0x4d, 0xba, 0xfc, 0x70, 0x76, 0x25, 0x0d, 0xcb, 0x18, 0xb9, 0x2c,
		0x94, 0xda, 0xbe, 0x17, 0x7a, 0xb6, 0xd7, 0xff, 0xd3, 0x8d, 0x7e, 0xf6, 0xbe, 0x7c, 0x7a, 0xba,
		0xe6, 0x87, 0xbf, 0x4b, 0x9f, 0x98, 0x1f, 0x38, 0x9e, 0x2b, 0x5d, 0x48, 0xaf, 0xd5, 0xf6, 0x8f,
		0x8b, 0x37, 0x52, 0x67, 0xc0, 0x6c, 0xa7, 0xe7, 0xd8, 0xc3, 0xa4, 0xe6, 0xed, 0x91, 0x17, 0x0f,
		0x9e, 0xcd, 0x65, 0x9e, 0xea, 0x07, 0x0b, 0x9b, 0x6c, 0x78, 0x33, 0x88, 0x08, 0xc7, 0x27, 0x22,
		0x0c, 0xc6, 0xf6, 0x4d, 0x2f, 0x23, 0x4c, 0x47, 0x86, 0x90, 0x00, 0x21, 0x01, 0x42, 0x42, 0x61,
		0x85, 0x04, 0x67, 0x20, 0x4f, 0x5c, 0x81, 0x1c, 0x46, 0x4f, 0x11, 0x70, 0xed, 0xf7, 0x03, 0xe1,
		0x98, 0x63, 0x24, 0x8e, 0x86, 0xbd, 0x52, 0x6f, 0x8e, 0x2e, 0x83, 0x2b, 0x20, 0xed, 0x14, 0xa4,
		0xdb, 0x88, 0x03, 0x3b, 0x15, 0x1d, 0x27, 0x2d, 0x3d, 0x27, 0xf5, 0xc4, 0x3f, 0x3d, 0x01, 0x40,
		0xa0, 0xce, 0x93, 0x8a, 0xde, 0xb3, 0x62, 0x02, 0xe5, 0xf3, 0x0a, 0x8c, 0x20, 0x13, 0xf9, 0x93,
		0xb8, 0x51, 0xef, 0xb3, 0xdc, 0x7a, 0x46, 0x60, 0xe0, 0x72, 0xba, 0xcc, 0x0d, 0x9d, 0xf0, 0x59,
		0x70, 0xdb, 0x19, 0x11, 0xf1, 0x4b, 0x1d, 0xbf, 0xf5, 0x6b, 0x2b, 0x10, 0xa8, 0xc5, 0x4c, 0x80,
		0x52, 0xdb, 0x66, 0x5b, 0xd7, 0x0c, 0xad, 0xa6, 0x35, 0x44, 0x49, 0x31, 0x43, 0x7f, 0x13, 0x08,
		0x8b, 0xc8, 0x62, 0xa3, 0xf2, 0x32, 0x58, 0xd5, 0x3b, 0xe3, 0xb6, 0x74, 0x8c, 0xb1, 0x25, 0x3d,
		0x88, 0x3e, 0xea, 0x0a, 0x10, 0xda, 0x8a, 0x90, 0x5a, 0x6b, 0xb6, 0x01, 0xd1, 0x76, 0x88, 0x3e,
		0x02, 0xa2, 0x5d, 0x10, 0xb5, 0x4c, 0x15, 0x18, 0x6d, 0xc7, 0xa8, 0x51, 0x36, 0x00, 0xd1, 0x8e,
		0xf0, 0xaf, 0x36, 0x81, 0xd0, 0x56, 0x84, 0xf4, 0xce, 0x27, 0x18, 0xd1, 0x76, 0x88, 0x8c, 0x1a,
		0x10, 0xda, 0x8e, 0xd0, 0x5d, 0x5d, 0x24, 0x42, 0x42, 0x46, 0xbe, 0xc7, 0xb6, 0xe3, 0x21, 0xec,
		0x14, 0xdb, 0x8e, 0x7c, 0x1f, 0x33, 0x18, 0x6e, 0x3c, 0x89, 0x6b, 0x0c, 0xb1, 0x34, 0x3e, 0xb6,
		0x20, 0xb9, 0x11, 0xc5, 0x16, 0xe4, 0xd2, 0x03, 0xb0, 0x05, 0x49, 0xec, 0x52, 0xd1, 0x13, 0x02,
		0x3d, 0x21, 0xf6, 0x63, 0x02, 0xe8, 0x09, 0x81, 0x9e, 0x10, 0xa0, 0x60, 0xa4, 0x14, 0x4c, 0x68,
		0x3b, 0x88, 0xcd, 0x8f, 0x02, 0x31, 0x03, 0x31, 0x03, 0x31, 0x2b, 0x2c, 0x31, 0x43, 0x27, 0x08,
		0x74, 0x82, 0xc8, 0x4a, 0x48, 0x45, 0x5f, 0xf7, 0xb5, 0xbd, 0xc4, 0x07, 0x3f, 0x2a, 0x27, 0xe3,
		0x46, 0xbb, 0x87, 0xea, 0xe6, 0xce, 0xd1, 0x5d, 0xda, 0xb1, 0x1f, 0x79, 0xba, 0x7e, 0xaf, 0x66,
		0x92, 0xa3, 0xf1, 0xd0, 0x72, 0x38, 0x6d, 0x5a, 0x82, 0x96, 0xc3, 0x68, 0x39, 0xbc, 0x6b, 0x20,
		0xa2, 0xfe, 0xe2, 0x2b, 0xa6, 0x4c, 0xd2, 0x67, 0x9c, 0x78, 0xf1, 0x23, 0x57, 0x41, 0xae, 0x82,
		0x5c, 0x45, 0x9c, 0x33, 0x99, 0x73, 0x2a, 0x5d, 0x01, 0x86, 0x35, 0x73, 0x2d, 0x5d, 0xea, 0xeb,
		0xb5, 0xc4, 0x62, 0x88, 0x30, 0x47, 0x23, 0xd2, 0xe1, 0xa4, 0xe5, 0x78, 0x44, 0x3b, 0xa0, 0xd4,
		0x1c, 0x51, 0x6a, 0x0e, 0x29, 0x45, 0xc7, 0x44, 0xeb, 0xa0, 0x88, 0x1d, 0x95, 0x38, 0x71, 0x65,
		0x35, 0x67, 0xc1, 0x39, 0xfb, 0xfd, 0x80, 0xaa, 0x69, 0x75, 0x05, 0x07, 0xec, 0x77, 0xa1, 0x54,
		0xef, 0x18, 0xe6, 0x5d, 0x4b, 0x57, 0xaa, 0xb5, 0xdb, 0xea, 0x75, 0x43, 0x31, 0xab, 0xf5, 0xa6,
		0xda, 0x32, 0xdb, 0xba, 0x76, 0xab, 0x5e, 0xab, 0x86, 0x52, 0xc7, 0x19, 0xb3, 0xfd, 0xb1, 0xab,
		0x55, 0x5b, 0x2d, 0xcd, 0x30, 0x6f, 0xf4, 0xea, 0xc7, 0xa6, 0xd2, 0x32, 0x00, 0x5d, 0x0c, 0xe8,
		0xc4, 0x2d, 0xd6, 0x34, 0x17, 0x6d, 0x3a, 0x28, 0x66, 0x68, 0x11, 0xa7, 0x60, 0x91, 0x19, 0xc1,
		0x34, 0xb5, 0xc5, 0x5d, 0x1c, 0x48, 0xa3, 0x7f, 0xdf, 0x6a, 0x1d, 0x03, 0xf6, 0x2a, 0x12, 0xdc,
		0xbb, 0xd6, 0x1f, 0x2d, 0xed, 0x3f, 0x2d, 0x60, 0x4a, 0x83, 0x69, 0x4b, 0x81, 0xbd, 0x8a, 0xc4,
		0x16, 0xe6, 0x4a, 0x06, 0x69, 0xb4, 0xfc, 0x81, 0x23, 0x0d, 0x8e, 0x66, 0x5b, 0x57, 0x6a, 0x4a,
		0x5d, 0x69, 0xd5, 0x14, 0xf3, 0x93, 0xaa, 0x35, 0xaa, 0x86, 0xaa, 0xc1, 0x48, 0xa9, 0xc0, 0x9d,
		0xff, 0xc6, 0x8d, 0xa6, 0x9b, 0x86, 0xd6, 0x01, 0xb6, 0xfc, 0xd8, 0xb6, 0x14, 0xac, 0x7f, 0x1a,
		0x18, 0x61, 0xa1, 0x62, 0xa0, 0x6d, 0x6b, 0x3a, 0x4c, 0x94, 0x02, 0xc7, 0x59, 0x74, 0xaa, 0xdd,
		0x19, 0xda, 0xcd, 0x0d, 0x40, 0xa5, 0x00, 0x75, 0x5c, 0xa6, 0x05, 0x58, 0x72, 0x63, 0xd9, 0xd1,
		0x6b, 0xa3, 0x50, 0xaf, 0x76, 0x22, 0xf2, 0x84, 0x9c, 0x89, 0x0a, 0x54, 0x5d, 0xbb, 0x33, 0x14,
		0xf3, 0xa6, 0xaa, 0x36, 0x52, 0xc1, 0x54, 0xe8, 0x13, 0xee, 0xa1, 0x98, 0xc7, 0xd7, 0x77, 0xb0,
		0x63, 0x73, 0x0c, 0x22, 0x59, 0x3e, 0xb1, 0x4b, 0x57, 0x0c, 0xcb, 0x2f, 0x86, 0x30, 0xbf, 0x8c,
		0x89, 0x5b, 0xf9, 0xc4, 0x2b, 0x65, 0x11, 0x2b, 0xa7, 0x20, 0xa6, 0x2a, 0x05, 0xe4, 0x0f, 0x43,
		0xa1, 0xa2, 0x54, 0x2e, 0xe1, 0x82, 0xc5, 0x65, 0x59, 0x64, 0xca, 0x21, 0x5e, 0xe9, 0x89, 0x49,
		0x79, 0x04, 0x4f, 0xb4, 0x68, 0x94, 0x3f, 0xcc, 0x52, 0x14, 0x87, 0xf2, 0x09, 0x5e, 0x3a, 0x22,
		0xd0, 0xf1, 0x63, 0xa7, 0xd4, 0x6e, 0x35, 0x9c, 0x35, 0xe4, 0x87, 0xb0, 0x35, 0x46, 0x11, 0x7a,
		0x63, 0xbe, 0x97, 0x8a, 0xf0, 0x79, 0xce, 0x09, 0x4e, 0xba, 0xd2, 0x6e, 0x7c, 0x81, 0x63, 0xa1,
		0x02, 0xb2, 0xa5, 0xb5, 0xe0, 0x5b, 0x8a, 0xb1, 0x66, 0xc4, 0x4e, 0x75, 0x0e, 0xa0, 0xfa, 0x6c,
		0x98, 0x70, 0x31, 0x62, 0xc0, 0x6c, 0x56, 0x1b, 0x37, 0x9a, 0xde, 0x54, 0xea, 0xe6, 0xbf, 0xef,
		0x14, 0xfd, 0x0b, 0x76, 0xa4, 0xf9, 0x11, 0xbd, 0x6b, 0x18, 0x6a, 0xbb, 0xa1, 0x98, 0x6a, 0xcb,
		0xb8, 0x31, 0x3b, 0x55, 0x43, 0xed, 0xdc, 0x7c, 0x01, 0xba, 0x44, 0xe8, 0xb6, 0x34, 0x53, 0xd1,
		0x75, 0x4d, 0x07, 0x94, 0x14, 0x50, 0x76, 0xee, 0xae, 0x4d, 0x63, 0x98, 0x41, 0x2b, 0x2d, 0x03,
		0xf6, 0x49, 0x05, 0x6a, 0xed, 0x76, 0xb8, 0xf8, 0x41, 0xdf, 0x0a, 0xc3, 0x49, 0x52, 0x0b, 0xa3,
		0xf9, 0x43, 0xee, 0x10, 0xe1, 0x32, 0x77, 0x28, 0x8a, 0x0f, 0x8b, 0x79, 0x84, 0x2c, 0xb5, 0xf0,
		0x97, 0x4f, 0xf0, 0x84, 0x87, 0xb9, 0x5c, 0xc1, 0xf6, 0xef, 0x3b, 0xa5, 0x63, 0x20, 0x79, 0xa5,
		0x85, 0x33, 0xc5, 0x74, 0x00, 0x54, 0x2b, 0x2b, 0x6b, 0x08, 0xc1, 0x6e, 0x37, 0x68, 0xed, 0xaa,
		0x5e, 0x6d, 0x9a, 0x6d, 0x5d, 0xbb, 0x6e, 0x28, 0x4d, 0xf3, 0xba, 0x5a, 0x37, 0x1b, 0x4a, 0xeb,
		0x23, 0xba, 0xc8, 0xee, 0x8f, 0x19, 0x3c, 0xf5, 0x71, 0xd9, 0x5f, 0x7e, 0x25, 0x86, 0x45, 0x2c,
		0x9b, 0x6a, 0xa7, 0xa3, 0xb6, 0x3e, 0x46, 0xde, 0xd0, 0xd4, 0xda, 0xb8, 0x82, 0x4d, 0x81, 0x69,
		0x5b, 0x53, 0x5b, 0x86, 0xa2, 0x9b, 0x6a, 0xab, 0xae, 0xd6, 0xaa, 0x86, 0xd2, 0x89, 0x02, 0x0c,
		0x38, 0x45, 0x51, 0x5c, 0x7d, 0x9a, 0x4b, 0x2a, 0x6f, 0xd8, 0xa5, 0xbc, 0x74, 0x72, 0x00, 0xdf,
		0xad, 0x66, 0xdc, 0xe9, 0x6a, 0x67, 0xd8, 0xd4, 0x1f, 0xe7, 0xd5, 0xf6, 0xc7, 0x2b, 0x22, 0x11,
		0x9d, 0xb6, 0x0a, 0xac, 0xf6, 0xc0, 0x0a, 0xe4, 0xf5, 0x78, 0x96, 0x68, 0x8e, 0x49, 0x56, 0x6a,
		0x4b, 0xb7, 0x00, 0x18, 0xd6, 0x95, 0x9a, 0xd6, 0x6c, 0xeb, 0x4a, 0xa7, 0x03, 0x8b, 0x24, 0x41,
		0x53, 0xff, 0x32, 0xa4, 0x7a, 0x40, 0x93, 0x1f, 0xcd, 0x96, 0xa2, 0xd4, 0x87, 0xce, 0x52, 0x69,
		0x19, 0x11, 0x0b, 0x44, 0x52, 0x4a, 0x84, 0xa7, 0xa6, 0xab, 0xff, 0x9b, 0x16, 0x9c, 0x48, 0x46,
		0x0f, 0xcd, 0xda, 0x52, 0x74, 0xf1, 0xf9, 0x42, 0x2d, 0x2d, 0x57, 0x9e, 0x23, 0xd4, 0x52, 0x75,
		0xd9, 0x79, 0xc4, 0x2d, 0x05, 0xd7, 0x7c, 0xfc, 0xb0, 0xe9, 0x4a, 0x5d, 0xd5, 0x95, 0x1a, 0xf6,
		0xbd, 0x89, 0x60, 0x44, 0x39, 0x5b, 0x4e, 0x00, 0x5b, 0x8a, 0xf1, 0x1f, 0x4d, 0xff, 0x03, 0x18,
		0x72, 0x60, 0x68, 0x68, 0x1d, 0x18, 0x22, 0x05, 0x88, 0xe9, 0x19, 0x23, 0xb8, 0xfd, 0xa1, 0x03,
		0x20, 0x6a, 0x35, 0x65, 0xc5, 0x43, 0xe7, 0x08, 0x2b, 0xf1, 0x9e, 0x38, 0x67, 0x60, 0xc1, 0xb8,
		0x76, 0xe3, 0xa5, 0xdd, 0x19, 0x8a, 0x6e, 0x56, 0xeb, 0x9f, 0x14, 0xdd, 0x50, 0x3b, 0x4a, 0x53,
		0x69, 0x81, 0xbe, 0x0b, 0x80, 0xb4, 0xae, 0x29, 0x1d, 0xb3, 0xa5, 0x19, 0xe3, 0xc2, 0x25, 0x35,
		0xad, 0xd9, 0x84, 0x6a, 0x4a, 0x86, 0x6e, 0x4b, 0xd3, 0x9b, 0xd5, 0x06, 0x98, 0x55, 0xc1, 0xfc,
		0x54, 0xca, 0x8b, 0x2a, 0xa7, 0x28, 0x8a, 0x5e, 0x3c, 0xb9, 0x81, 0xad, 0xa3, 0x34, 0x94, 0xda,
		0x50, 0x79, 0x46, 0x80, 0x24, 0x85, 0x13, 0xc5, 0x95, 0x8a, 0xb7, 0x84, 0x50, 0x68, 0x69, 0x27,
		0x66, 0x86, 0xda, 0x54, 0x3a, 0x46, 0xb5, 0xd9, 0x86, 0xbf, 0x21, 0xc2, 0x11, 0x8e, 0xa6, 0x40,
		0x8b, 0x06, 0x1e, 0x26, 0x06, 0x58, 0x28, 0xb6, 0x44, 0x8f, 0x26, 0xbc, 0x4d, 0xe1, 0x16, 0x10,
		0x7c, 0xce, 0x5e, 0x90, 0x99, 0xca, 0xe7, 0x9a, 0xa2, 0xd4, 0x95, 0x3a, 0x3c, 0x0e, 0x21, 0x96,
		0x93, 0x4e, 0xed, 0xa6, 0xae, 0x54, 0x3b, 0x1d, 0xa5, 0x79, 0xdd, 0xf8, 0x62, 0xaa, 0x2d, 0xd3,
		0xd0, 0xab, 0xad, 0x8e, 0x8a, 0xfd, 0x5b, 0x6e, 0x7c, 0x53, 0xc5, 0x12, 0x2e, 0x3d, 0x13, 0xfe,
		0xe9, 0x50, 0x6b, 0x2a, 0x6f, 0x38, 0xa6, 0x82, 0xd9, 0xab, 0xe3, 0x58, 0x2b, 0xb4, 0xef, 0x93,
		0xd8, 0x52, 0x4a, 0xec, 0x67, 0xe8, 0x5b, 0xf2, 0x93, 0x1b, 0x84, 0xd6, 0xb7, 0x7e, 0x34, 0x93,
		0xf4, 0xf6, 0x52, 0xf2, 0x59, 0x8f, 0xf9, 0xcc, 0xb5, 0x99, 0xb0, 0xa0, 0x2c, 0xce, 0xc8, 0x67,
		0x92, 0xd6, 0x4d, 0x4d, 0xba, 0xfc, 0x50, 0xbe, 0x92, 0x54, 0x37, 0x64, 0xbe, 0xcb, 0x42, 0xa9,
		0xe6, 0xb9, 0xa1, 0xef, 0xf5, 0xa5, 0x26, 0x0b, 0x02, 0xeb, 0x81, 0x49, 0x6d, 0xdf, 0x0b, 0x3d,
		0xdb, 0xeb, 0x0b, 0x24, 0x38, 0xa5, 0x8e, 0xf7, 0xe4, 0xdb, 0x62, 0xa6, 0x69, 0xe1, 0x39, 0x7f,
		0xb0, 0xe7, 0xbf, 0x3d, 0xbf, 0x1b, 0x7d, 0xf0, 0xd9, 0xec, 0x09, 0x26, 0x6e, 0xb7, 0x56, 0x50,
		0xf5, 0x1f, 0x9e, 0x1e, 0x99, 0x1b, 0x96, 0xae, 0xa4, 0xd0, 0x7f, 0x62, 0x82, 0x1f, 0x38, 0xf7,
		0xb4, 0x38, 0xd3, 0x7b, 0x64, 0x1e, 0x8d, 0x7e, 0xd4, 0xfb, 0x4c, 0x7b, 0xb4, 0xaa, 0xeb, 0x7a,
		0xa1, 0x15, 0x3a, 0x9e, 0x2b, 0xc6, 0x9b, 0x3d, 0x3f, 0x78, 0xa1, 0xec, 0xd9, 0xb2, 0xed, 0x3d,
		0x0e, 0x7c, 0x16, 0x04, 0xac, 0x2b, 0xf7, 0x99, 0xd5, 0x8b, 0x1e, 0x46, 0xec, 0xea, 0x5f, 0x65,
		0x10, 0xe2, 0x52, 0xf8, 0x3c, 0xa0, 0xf7, 0x3f, 0x53, 0x2f, 0x3b, 0x1c, 0x9d, 0xd8, 0x20, 0xfe,
		0x70, 0xdc, 0xc8, 0x91, 0x9d, 0x12, 0x0f, 0x5b, 0xf3, 0xdc, 0x9e, 0xf3, 0x20, 0x60, 0xe0, 0xb6,
		0xcf, 0x7a, 0xce, 0x4f, 0x31, 0xc6, 0x3b, 0xc1, 0xd9, 0xb3, 0xe5, 0xc1, 0x5f, 0xa1, 0xfc, 0x68,
		0x85, 0xf6, 0x77, 0x01, 0x7e, 0x5d, 0x74, 0x9c, 0x9a, 0x8f, 0x4f, 0x83, 0x11, 0x5c, 0x62, 0x62,
		0x45, 0x6a, 0x41, 0x69, 0x21, 0x18, 0x2d, 0xcc, 0x4e, 0xc1, 0x08, 0xa9, 0x21, 0xc2, 0xbf, 0x2c,
		0xd8, 0xbe, 0xd3, 0x65, 0x6e, 0xe8, 0x84, 0xcf, 0x3e, 0xeb, 0x89, 0x30, 0xfd, 0xb1, 0xbb, 0x39,
		0x3b, 0x17, 0x30, 0xb6, 0x3a, 0x7e, 0xeb, 0xd7, 0x56, 0x20, 0x70, 0x71, 0x4d, 0x73, 0xba, 0x2f,
		0x6d, 0x51, 0x6a, 0x5d, 0x1a, 0x2a, 0xdd, 0x61, 0xfa, 0x95, 0x41, 0x24, 0xd8, 0x0c, 0x95, 0x52,
		0xbb, 0xd5, 0x80, 0xcf, 0x76, 0x7c, 0x46, 0x5b, 0x0b, 0x40, 0x69, 0x0b, 0x4a, 0x0b, 0xe5, 0x8a,
		0x81, 0xd4, 0x5e, 0x48, 0x0d, 0xab, 0xab, 0x02, 0xab, 0xcd, 0x58, 0x2d, 0x54, 0x3e, 0x03, 0x50,
		0x5b, 0x80, 0x1a, 0xdf, 0x96, 0x06, 0x46, 0x9b, 0x31, 0x9a, 0xdc, 0x4b, 0x01, 0x46, 0x5b, 0x30,
		0x5a, 0x73, 0x3a, 0x19, 0x78, 0xed, 0xc4, 0xab, 0xa3, 0x35, 0xd4, 0x9a, 0x6a, 0xa0, 0x3a, 0xc1,
		0xae, 0xe4, 0x65, 0x72, 0x56, 0x03, 0x20, 0xed, 0x01, 0x12, 0xb8, 0xd4, 0x3e, 0x50, 0x4d, 0x37,
		0x38, 0x01, 0xd4, 0x16, 0xa0, 0xf4, 0x6a, 0x4d, 0x19, 0x3a, 0x2b, 0xec, 0xfd, 0x62, 0xef, 0x17,
		0x7b, 0xbf, 0x64, 0xef, 0x06, 0x7b, 0xbf, 0x84, 0x0f, 0xc4, 0xde, 0x6f, 0x16, 0x7c, 0x24, 0xf6,
		0x7e, 0x85, 0x4f, 0x1c, 0xcd, 0x48, 0x44, 0x13, 0x25, 0x6a, 0x82, 0x4a, 0x81, 0xfd, 0x9d, 0x3d,
		0x5a, 0x03, 0x2b, 0xfc, 0x1e, 0x2d, 0xe8, 0x13, 0x6f, 0xc0, 0x5c, 0x7b, 0xb8, 0x3f, 0x2b, 0x5b,
		0x76, 0xff, 0x64, 0xfc, 0x9f, 0x1c, 0xb0, 0x30, 0x98, 0x7c, 0x31, 0xfc, 0x9b, 0xb9, 0xa1, 0xef,
		0xb0, 0x60, 0xfa, 0xf5, 0xf3, 0x89, 0x33, 0xf8, 0x51, 0x39, 0x71, 0xec, 0xc7, 0xe8, 0xaf, 0xd1,
		0x08, 0x34, 0x6b, 0x9e, 0x7f, 0x1a, 0x08, 0xa6, 0xa0, 0x14, 0x84, 0x56, 0x48, 0x17, 0x41, 0xa6,
		0xf1, 0x71, 0x34, 0x2c, 0x91, 0x89, 0x4c, 0xf6, 0xcf, 0x88, 0x86, 0x9b, 0x6e, 0xd3, 0x97, 0x89,
		0x06, 0x14, 0xb0, 0x3d, 0x2f, 0x7a, 0x5b, 0x5e, 0x14, 0x75, 0x10, 0xbe, 0x0d, 0x2f, 0x9c, 0x17,
		0xa4, 0xb0, 0xed, 0x9e, 0x2d, 0x07, 0x5c, 0x77, 0x7c, 0x5a, 0xd3, 0xb5, 0xbd, 0xae, 0xc0, 0xf3,
		0x40, 0xc3, 0xd1, 0x71, 0x1e, 0x08, 0xe7, 0x81, 0x0e, 0xec, 0x88, 0x52, 0x4f, 0x54, 0x70, 0x1e,
		0x68, 0x8c, 0x03, 0xce, 0x03, 0x6d, 0x19, 0x3b, 0xdd, 0xf3, 0x40, 0x02, 0x6f, 0xef, 0xe5, 0xf7,
		0x3c, 0x90, 0x59, 0xad, 0x37, 0xd5, 0x96, 0xd9, 0xd6, 0xb5, 0x5b, 0xf5, 0x5a, 0x35, 0xa0, 0x1d,
		0xc7, 0xc1, 0xae, 0x56, 0x6d, 0xb5, 0x34, 0x63, 0x7a, 0x2d, 0x0b, 0xd0, 0xc5, 0x80, 0x0e, 0x57,
		0x6d, 0x8f, 0x72, 0x11, 0xa7, 0x60, 0x91, 0x19, 0xc1, 0x34, 0xb5, 0xc5, 0x5d, 0x1c, 0x48, 0xa3,
		0x7f, 0xdf, 0x6a, 0x1d, 0x03, 0xf6, 0x2a, 0x12, 0xdc, 0xbb, 0xd6, 0x1f, 0x2d, 0xed, 0x3f, 0xa8,
		0xe7, 0x49, 0x84, 0x69, 0x4b, 0x81, 0xbd, 0x8a, 0xc4, 0x16, 0xe6, 0x4a, 0x06, 0x29, 0x3a, 0x23,
		0xd0, 0xe1, 0x68, 0xb6, 0x75, 0xa5, 0xa6, 0xd4, 0x95, 0x56, 0x4d, 0x31, 0x3f, 0xa9, 0x5a, 0x03,
		0x9d, 0xe5, 0x28, 0xc1, 0x9d, 0xff, 0xc6, 0x8d, 0xa6, 0x9b, 0x86, 0xd6, 0x01, 0xb6, 0xfc, 0xd8,
		0xb6, 0x14, 0xac, 0x7f, 0x1a, 0x18, 0x61, 0xa1, 0x62, 0xa0, 0x6d, 0x6b, 0x3a, 0x4c, 0x94, 0x02,
		0xc7, 0x59, 0x74, 0xaa, 0xdd, 0x19, 0xda, 0xcd, 0x0d, 0x40, 0xa5, 0x00, 0x55, 0x33, 0xb4, 0x9a,
		0xd6, 0x00, 0x96, 0xfc, 0x58, 0x76, 0xf4, 0xda, 0x28, 0xd4, 0xab, 0x9d, 0x88, 0x3c, 0x21, 0x67,
		0xa2, 0x02, 0x75, 0xd4, 0x5e, 0x20, 0xb5, 0xce, 0xd1, 0x28, 0xfd, 0x96, 0xae, 0x0d, 0x64, 0x49,
		0x3c, 0xcb, 0x31, 0x88, 0xc2, 0x55, 0x87, 0x7c, 0x62, 0x97, 0xae, 0x18, 0x96, 0x5f, 0x0c, 0x61,
		0x7e, 0x19, 0x13, 0xb7, 0xf2, 0x89, 0x57, 0xca, 0x22, 0x56, 0x4e, 0x41, 0x4c, 0x55, 0x0a, 0xc8,
		0x1f, 0x86, 0x42, 0x45, 0xa9, 0x5c, 0xc2, 0x05, 0x8b, 0xcb, 0xb2, 0xc8, 0x94, 0x43, 0xbc, 0xd2,
		0x13, 0x93, 0xf2, 0x08, 0x9e, 0x68, 0xd1, 0x28, 0x7f, 0x98, 0xa5, 0x28, 0x0e, 0xe5, 0x13, 0xbc,
		0x74, 0x44, 0xa0, 0x9c, 0x94, 0x2c, 0xc3, 0x59, 0x43, 0x6e, 0x08, 0xd1, 0x3d, 0xa8, 0x18, 0x4b,
		0x05, 0x2d, 0x83, 0xf6, 0xc3, 0x09, 0x1d, 0xca, 0x48, 0x81, 0x6c, 0x69, 0x2d, 0xf8, 0x96, 0x62,
		0xac, 0x19, 0xb1, 0x53, 0x9d, 0xb7, 0xf2, 0xa1, 0x70, 0x31, 0x94, 0x60, 0x36, 0xab, 0x8d, 0x1b,
		0x4d, 0x6f, 0x2a, 0x75, 0xf3, 0xdf, 0x77, 0x8a, 0xfe, 0x05, 0x3b, 0xd2, 0xfc, 0x88, 0xde, 0x35,
		0x0c, 0xb5, 0xdd, 0x50, 0x4c, 0xb5, 0x65, 0xdc, 0x98, 0x9d, 0xaa, 0xa1, 0x76, 0x6e, 0xbe, 0x00,
		0x5d, 0x22, 0x74, 0x5b, 0x9a, 0xa9, 0xe8, 0xba, 0xa6, 0x03, 0x4a, 0x0a, 0x28, 0x3b, 0x77, 0xd7,
		0xa6, 0x31, 0xcc, 0xa0, 0x95, 0x96, 0x01, 0xfb, 0xa4, 0x02, 0xb5, 0x76, 0x3b, 0x5c, 0xfc, 0xa0,
		0x6f, 0x85, 0xe1, 0x24, 0xa9, 0x85, 0xd1, 0xfc, 0x21, 0x77, 0x88, 0x70, 0x99, 0x3b, 0x14, 0xc5,
		0x87, 0xc5, 0x3c, 0x42, 0x96, 0x5a, 0xf8, 0xcb, 0x27, 0x78, 0xc2, 0xc3, 0x5c, 0xfe, 0xfa, 0x39,
		0x20, 0x79, 0xa5, 0x85, 0x33, 0xc5, 0x74, 0x00, 0x54, 0x2b, 0x2b, 0x6b, 0x08, 0xc1, 0x6e, 0x37,
		0x68, 0x0b, 0xcd, 0x51, 0xcc, 0xeb, 0x6a, 0xdd, 0x6c, 0x28, 0xad, 0x8f, 0xc6, 0x2d, 0x30, 0xdb,
		0x17, 0x33, 0x78, 0xea, 0xe3, 0xb2, 0xbf, 0xfc, 0x4a, 0x0c, 0x8b, 0x58, 0x36, 0xd5, 0x4e, 0x47,
		0x6d, 0x7d, 0x8c, 0xbc, 0xa1, 0xa9, 0xb5, 0x71, 0x05, 0x9b, 0x02, 0xd3, 0xb6, 0xa6, 0xb6, 0x0c,
		0x45, 0x37, 0xd5, 0x56, 0x5d, 0xad, 0x55, 0x0d, 0xa5, 0x13, 0x05, 0x18, 0x70, 0x8a, 0xa2, 0xb8,
		0xfa, 0x34, 0x97, 0x54, 0xde, 0xb0, 0x4b, 0x79, 0xe9, 0xe4, 0xa7, 0x1b, 0x9b, 0x59, 0xbd, 0x33,
		0x6e, 0x71, 0x5e, 0x6d, 0x7f, 0xbc, 0x22, 0x12, 0xd1, 0x69, 0xab, 0xc0, 0x6a, 0x0f, 0xac, 0x40,
		0x5e, 0x8f, 0x67, 0x89, 0xe6, 0x98, 0x64, 0xa5, 0xb6, 0x74, 0x0b, 0x80, 0x61, 0x5d, 0xa9, 0x69,
		0xcd, 0xb6, 0xae, 0x74, 0x3a, 0xb0, 0x48, 0x12, 0x34, 0xf5, 0x2f, 0x43, 0xaa, 0x07, 0x34, 0xf9,
		0xd1, 0x6c, 0x29, 0x4a, 0x7d, 0xe8, 0x2c, 0x95, 0x96, 0x11, 0xb1, 0x40, 0x24, 0xa5, 0x44, 0x78,
		0x6a, 0xba, 0xfa, 0xbf, 0x69, 0xc1, 0x89, 0x64, 0xf4, 0xd0, 0xac, 0x2d, 0x45, 0x17, 0x9f, 0x2f,
		0xd4, 0xd2, 0x72, 0xe5, 0x39, 0x42, 0x2d, 0x55, 0x97, 0x9d, 0x47, 0xdc, 0x52, 0x70, 0xcd, 0xf9,
		0x69, 0xab, 0x8e, 0x84, 0x94, 0x06, 0x46, 0x94, 0xb3, 0xe5, 0x04, 0xb0, 0xa5, 0x18, 0xff, 0xd1,
		0xf4, 0x3f, 0x80, 0x21, 0x07, 0x86, 0x86, 0xd6, 0x81, 0x21, 0x52, 0x80, 0x98, 0x9e, 0x31, 0x82,
		0xdb, 0x1f, 0x3a, 0x00, 0xa2, 0x56, 0x53, 0x56, 0x3c, 0x74, 0x8e, 0xb0, 0x12, 0xef, 0x89, 0x73,
		0x06, 0x16, 0x8c, 0x6b, 0x37, 0x5e, 0xda, 0x9d, 0xa1, 0xe8, 0x66, 0xb5, 0xfe, 0x49, 0xd1, 0x0d,
		0xb5, 0xa3, 0x34, 0x95, 0x16, 0xe8, 0xbb, 0x00, 0x48, 0xeb, 0x9a, 0xd2, 0x31, 0x5b, 0x9a, 0x31,
		0x2e, 0x5c, 0x52, 0xd3, 0x9a, 0x4d, 0xa8, 0xa6, 0x64, 0xe8, 0xb6, 0x34, 0xbd, 0x59, 0x6d, 0x80,
		0x59, 0x15, 0xcc, 0x4f, 0xa5, 0xbc, 0xa8, 0x72, 0x8a, 0xa2, 0xe8, 0xc5, 0x93, 0x1b, 0xd8, 0x3a,
		0x4a, 0x43, 0xa9, 0x0d, 0x95, 0x67, 0x04, 0x48, 0x52, 0x38, 0x51, 0x5c, 0xa9, 0x78, 0x4b, 0x08,
		0x85, 0x96, 0x76, 0x62, 0x66, 0xa8, 0x4d, 0xa5, 0x63, 0x54, 0x9b, 0x6d, 0xf8, 0x1b, 0x22, 0x1c,
		0xe1, 0x68, 0x0a, 0xb4, 0x68, 0xe0, 0x61, 0x62, 0x80, 0x85, 0x62, 0x4b, 0xf4, 0x68, 0xc2, 0xdb,
		0x14, 0x6e, 0x01, 0xc1, 0xe7, 0xec, 0x05, 0x99, 0xa9, 0x7c, 0xae, 0x29, 0x4a, 0x5d, 0xa9, 0xc3,
		0xe3, 0x10, 0x62, 0x39, 0xe9, 0xd4, 0x6e, 0xea, 0x4a, 0xb5, 0xd3, 0x51, 0x9a, 0xd7, 0x8d, 0x2f,
		0xa6, 0xda, 0x32, 0x0d, 0xbd, 0xda, 0xea, 0xa8, 0xd8, 0xbf, 0xe5, 0xc6, 0x37, 0x55, 0x2c, 0xe1,
		0xd2, 0x33, 0xe1, 0x9f, 0x0e, 0xb5, 0xa6, 0xf2, 0x86, 0x63, 0x2a, 0x98, 0xbd, 0x3a, 0x8e, 0xb5,
		0x42, 0xfb, 0x3e, 0x89, 0x2d, 0xa5, 0xc4, 0x7e, 0x86, 0xbe, 0x25, 0x3f, 0xb9, 0x41, 0x68, 0x7d,
		0xeb, 0x47, 0x33, 0x49, 0x6f, 0x2f, 0x25, 0x9f, 0xf5, 0x98, 0xcf, 0x5c, 0x9b, 0x09, 0x0b, 0xca,
		0xe2, 0x8c, 0x7c, 0x26, 0x69, 0xdd, 0xd4, 0xa4, 0xcb, 0x0f, 0xe5, 0x2b, 0x49, 0x75, 0x43, 0xe6,
		0xbb, 0x2c, 0x94, 0x6a, 0x9e, 0x1b, 0xfa, 0x5e, 0x5f, 0x6a, 0xb2, 0x20, 0xb0, 0x1e, 0x98, 0xd4,
		0xf6, 0xbd, 0xd0, 0xb3, 0xbd, 0xbe, 0x40, 0x82, 0x53, 0xea, 0x78, 0x4f, 0xbe, 0x2d, 0x66, 0x9a,
		0x16, 0x9e, 0xf3, 0x07, 0x7b, 0xfe, 0xdb, 0xf3, 0xbb, 0xd1, 0x07, 0x9f, 0xcd, 0x9e, 0x60, 0xe2,
		0x76, 0x6b, 0x05, 0x55, 0xff, 0xe1, 0xe9, 0x91, 0xb9, 0x61, 0xe9, 0x4a, 0x0a, 0xfd, 0x27, 0x26,
		0xf8, 0x81, 0x73, 0x4f, 0x8b, 0x33, 0xbd, 0x47, 0xe6, 0xd1, 0xe8, 0x47, 0xa5, 0xf5, 0x91, 0x74,
		0xef, 0x8f, 0xd0, 0x37, 0x96, 0xc2, 0xe7, 0x01, 0xfd, 0x32, 0x9b, 0x3a, 0x93, 0xe1, 0xe8, 0xc4,
		0x9e, 0xfc, 0x0f, 0xc7, 0x8d, 0xd6, 0xeb, 0x29, 0xf1, 0xb0, 0x35, 0xcf, 0xed, 0x39, 0x0f, 0x02,
		0x06, 0x6e, 0xfb, 0xac, 0xe7, 0xfc, 0x14, 0x13, 0x71, 0x26, 0x38, 0x7b, 0xb6, 0x3c, 0xf8, 0x2b,
		0x94, 0x1f, 0xad, 0xd0, 0xfe, 0x2e, 0xc0, 0x7d, 0x89, 0x76, 0xc7, 0xf3, 0x6e, 0x78, 0x30, 0x82,
		0x4b, 0x8c, 0x4b, 0x4c, 0xcd, 0xf7, 0x2e, 0xf8, 0xdc, 0x85, 0xd9, 0x29, 0x18, 0xef, 0x32, 0x44,
		0xf8, 0x97, 0x05, 0xdb, 0x77, 0xba, 0xcc, 0x0d, 0x9d, 0xf0, 0xd9, 0x67, 0x3d, 0x11, 0xa6, 0x3f,
		0x76, 0x37, 0x67, 0xe7, 0x02, 0xc6, 0x56, 0xc7, 0x6f, 0xfd, 0xda, 0x0a, 0x04, 0x2e, 0xae, 0x69,
		0xea, 0xf2, 0xa5, 0x2d, 0x4a, 0x94, 0x4a, 0x43, 0x8c, 0x3a, 0x4c, 0x5b, 0x2e, 0xe4, 0xc2, 0x9b,
		0xa1, 0x52, 0x6a, 0xb7, 0x1a, 0xf0, 0xd9, 0x8e, 0xcf, 0x48, 0x41, 0x07, 0x4a, 0x5b, 0x50, 0x5a,
		0xa8, 0xca, 0x0b, 0xa4, 0xf6, 0x42, 0x6a, 0x58, 0x44, 0x14, 0x58, 0x6d, 0xc6, 0x6a, 0xa1, 0xc0,
		0x17, 0x80, 0xda, 0x02, 0xd4, 0xf8, 0x52, 0x30, 0x30, 0xda, 0x8c, 0xd1, 0xe4, 0xfa, 0x05, 0x30,
		0xda, 0x82, 0xd1, 0x9a, 0x43, 0xb8, 0xc0, 0x6b, 0x27, 0x5e, 0x1d, 0xad, 0xa1, 0xd6, 0x54, 0x03,
		0x97, 0xf0, 0x77, 0x25, 0x2f, 0x93, 0x23, 0x09, 0x00, 0x69, 0x0f, 0x90, 0xc0, 0xa5, 0xf6, 0x81,
		0x6a, 0xba, 0x8f, 0x07, 0xa0, 0xb6, 0x00, 0xa5, 0x57, 0x6b, 0xca, 0xd0, 0x59, 0x61, 0x8b, 0x13,
		0x5b, 0x9c, 0xd8, 0xe2, 0x24, 0x7b, 0x37, 0xd8, 0xe2, 0x24, 0x7c, 0x20, 0xb6, 0x38, 0xb3, 0xe0,
		0x23, 0x09, 0xb7, 0x38, 0x5f, 0x65, 0xc8, 0xc3, 0x96, 0xaa, 0xae, 0xeb, 0x85, 0x56, 0xe8, 0x78,
		0x2e, 0xe9, 0x72, 0x2d, 0x05, 0xf6, 0x77, 0xf6, 0x68, 0x0d, 0xac, 0xf0, 0x7b, 0x64, 0xb7, 0x27,
		0xde, 0x80, 0xb9, 0xf6, 0x70, 0x1b, 0x52, 0xb6, 0xec, 0xfe, 0xc9, 0xf8, 0x3f, 0x39, 0x60, 0x61,
		0x30, 0xf9, 0x62, 0xf8, 0x37, 0x73, 0x43, 0xdf, 0x61, 0xc1, 0xf4, 0xeb, 0xe7, 0x13, 0x67, 0xf0,
		0xa3, 0x72, 0xe2, 0xd8, 0x8f, 0xd1, 0x5f, 0x41, 0x68, 0x85, 0x8c, 0xc6, 0xb2, 0xf9, 0x67, 0x81,
		0x6f, 0x04, 0xce, 0xf9, 0xa3, 0x9e, 0x37, 0x21, 0xf3, 0x45, 0xe0, 0x8a, 0x4b, 0x41, 0xe8, 0x3f,
		0xd9, 0xa1, 0x3b, 0x0e, 0x6f, 0x55, 0xbb, 0x6f, 0x56, 0xed, 0x7e, 0x87, 0x85, 0xd1, 0x5f, 0x4a,
		0xf4, 0x40, 0x53, 0x1d, 0xfc, 0xa8, 0x98, 0xea, 0xe8, 0x81, 0xaf, 0x0e, 0x33, 0xa1, 0x1c, 0x93,
		0x59, 0x1a, 0xd9, 0x34, 0xef, 0x1c, 0x4e, 0x09, 0xc0, 0x68, 0x38, 0x4e, 0xe3, 0x9a, 0x6c, 0x0c,
		0x72, 0x0e, 0x33, 0x3d, 0x77, 0x50, 0xe6, 0x1c, 0x88, 0xf0, 0x9c, 0x81, 0xa8, 0x73, 0x05, 0xd4,
		0x9c, 0x47, 0xd8, 0xb9, 0x01, 0x61, 0x04, 0x46, 0xe0, 0xb9, 0x80, 0xc3, 0xba, 0xda, 0xba, 0xe3,
		0xd3, 0x98, 0x5e, 0x97, 0x05, 0xa1, 0xe3, 0x0e, 0x9d, 0xb6, 0x6c, 0x75, 0xbb, 0x3e, 0x0b, 0x02,
		0x3a, 0x7b, 0x99, 0xd8, 0xf5, 0xba, 0x87, 0x10, 0x4d, 0x30, 0xed, 0xf1, 0x24, 0xf2, 0x63, 0x49,
		0x22, 0x8e, 0x23, 0x89, 0x3e, 0x86, 0x24, 0x2a, 0x55, 0x12, 0x7e, 0xec, 0x48, 0x78, 0x1e, 0x94,
		0xc2, 0x31, 0xa3, 0x6c, 0x31, 0x71, 0xf2, 0xe3, 0x44, 0xb3, 0x63, 0x44, 0x83, 0x1f, 0x15, 0x99,
		0xdc, 0x0a, 0xa6, 0x2c, 0xe1, 0x3d, 0xe1, 0x98, 0x6d, 0x2b, 0x8c, 0x12, 0x5b, 0x72, 0x09, 0xa6,
		0xf4, 0xfa, 0xeb, 0xa9, 0xfc, 0xe1, 0xfe, 0xd7, 0xd7, 0x33, 0xf9, 0xc3, 0xfd, 0xe8, 0xcb, 0xb3,
		0xe1, 0x5f, 0xff, 0x94, 0x5f, 0x7e, 0x95, 0xbf, 0x9e, 0xca, 0x95, 0xf1, 0x77, 0xcb, 0xe7, 0x5f,
		0x4f, 0xe5, 0xf3, 0xfb, 0x37, 0xaf, 0xff, 0xfc, 0xf3, 0x6d, 0xdc, 0xd7, 0xbc, 0xf9, 0xe7, 0xdd,
		0xcb, 0xc9, 0xf4, 0x45, 0xe5, 0xf1, 0x4f, 0xdf, 0x7d, 0x3d, 0x95, 0xcb, 0xf7, 0x6f, 0xe8, 0xcc,
		0xf6, 0x9e, 0x12, 0x6f, 0xad, 0xa3, 0x7e, 0x16, 0x06, 0xfa, 0xff, 0xbd, 0x3e, 0x38, 0xec, 0x6f,
		0xfe, 0x87, 0x10, 0xf8, 0xac, 0x64, 0x9e, 0xbf, 0x0b, 0xe1, 0x22, 0x63, 0x17, 0x11, 0xe5, 0x76,
		0xa9, 0xd0, 0x92, 0xf9, 0xe7, 0x81, 0xa1, 0x80, 0xa1, 0x80, 0xa1, 0x14, 0x96, 0xa1, 0xf4, 0x99,
		0xd5, 0xa3, 0x3d, 0xe4, 0x3c, 0x65, 0x27, 0x97, 0xb4, 0xec, 0x64, 0x2c, 0x8f, 0xd9, 0x43, 0x29,
		0xec, 0xaa, 0xcb, 0x7a, 0x8e, 0xcb, 0xba, 0x23, 0x5d, 0x6c, 0xf2, 0xcd, 0x39, 0xba, 0xb5, 0xf5,
		0x07, 0xd3, 0xef, 0x0f, 0xd5, 0xad, 0x3c, 0xc5, 0x96, 0xc0, 0x1e, 0x08, 0x88, 0x20, 0xd1, 0xa8,
		0x88, 0x13, 0x88, 0x13, 0x88, 0x13, 0x85, 0x8d, 0x13, 0x84, 0x3e, 0x60, 0xde, 0x0f, 0x10, 0x5e,
		0x80, 0x29, 0xe9, 0x96, 0xfb, 0x40, 0x7f, 0x84, 0x40, 0xc0, 0x79, 0x87, 0xa6, 0xe3, 0x8a, 0xbb,
		0x98, 0x33, 0xbc, 0x34, 0x43, 0x7f, 0xe3, 0x70, 0x3a, 0xfe, 0x8d, 0x6f, 0xd9, 0x51, 0x2e, 0x51,
		0x77, 0x1e, 0x9c, 0x30, 0x10, 0xf8, 0xa0, 0x16, 0x7b, 0xb0, 0x42, 0xe7, 0x47, 0xf4, 0x59, 0x7a,
		0x56, 0x3f, 0x60, 0xf4, 0x07, 0x6f, 0x04, 0x5c, 0xbe, 0x6a, 0x5a, 0x3f, 0xc5, 0x4f, 0xed, 0xc5,
		0x3b, 0xcc, 0x6d, 0x2a, 0x6e, 0x99, 0x7e, 0xb4, 0xfb, 0x9c, 0x91, 0x4d, 0x41, 0x92, 0xc5, 0x64,
		0x64, 0x90, 0x4e, 0x90, 0x4e, 0x90, 0x4e, 0x90, 0x4e, 0x90, 0x4e, 0x90, 0x4e, 0x90, 0x4e, 0x90,
		0x4e, 0x90, 0xce, 0x03, 0x92, 0x4e, 0xa2, 0x70, 0xd1, 0x70, 0x82, 0xb0, 0x1a, 0x86, 0x3e, 0x6d,
		0xc8, 0x68, 0x3a, 0xae, 0xd2, 0x67, 0x51, 0xd8, 0x25, 0x36, 0xa1, 0x68, 0x75, 0xcd, 0x8d, 0x7c,
		0xf6, 0xbe, 0x52, 0xb9, 0xb8, 0xac, 0x54, 0x4e, 0x2f, 0xdf, 0x5d, 0x9e, 0x7e, 0x38, 0x3f, 0x3f,
		0xbb, 0xa0, 0x2c, 0xe2, 0x51, 0xd2, 0xfc, 0x2e, 0xf3, 0x59, 0xf7, 0xfa, 0xb9, 0x74, 0x25, 0xb9,
		0x4f, 0xfd, 0xbe, 0x88, 0xa1, 0xef, 0x02, 0xe6, 0x93, 0xae, 0x81, 0x6c, 0xa4, 0x23, 0xdf, 0xbd,
		0x81, 0xdc, 0x77, 0x1e, 0x1d, 0x01, 0xf9, 0xc8, 0x6c, 0x68, 0x24, 0x24, 0x48, 0x48, 0x90, 0x90,
		0x14, 0x36, 0x21, 0x79, 0x72, 0xdc, 0xf0, 0x3d, 0x32, 0x12, 0x64, 0x24, 0xc8, 0x48, 0x0e, 0x9f,
		0x91, 0x94, 0xcf, 0xcf, 0x31, 0xb9, 0xc5, 0x4e, 0x49, 0x32, 0x41, 0x3c, 0xfb, 0xcc, 0x7d, 0x18,
		0x9e, 0x4e, 0x21, 0x66, 0x9d, 0xe3, 0x71, 0x41, 0x39, 0x41, 0x39, 0x41, 0x39, 0x0b, 0x4d, 0x39,
		0xcf, 0x2e, 0x04, 0x70, 0xce, 0x0b, 0x70, 0x4e, 0x70, 0x4e, 0x70, 0xce, 0x78, 0x53, 0x7b, 0x71,
		0x7e, 0xfe, 0x0e, 0xac, 0xb3, 0xe0, 0xac, 0x93, 0x28, 0x66, 0x08, 0x2c, 0xad, 0x23, 0xb0, 0xa4,
		0x8e, 0xc0, 0xa2, 0xdb, 0xa3, 0x1a, 0x2b, 0x67, 0x73, 0x35, 0x56, 0x26, 0x35, 0x55, 0xfe, 0x74,
		0xa3, 0x9f, 0xbd, 0x2f, 0x9f, 0x9e, 0xae, 0xf9, 0xe1, 0xef, 0xd2, 0x27, 0xe6, 0x07, 0x8e, 0xe7,
		0x4a, 0x17, 0xd2, 0x6b, 0xb5, 0xfd, 0xe3, 0xe2, 0x8d, 0xd4, 0x19, 0x30, 0xdb, 0xe9, 0x39, 0xf6,
		0xf0, 0xd6, 0xcb, 0xdb, 0x23, 0x2f, 0x5e, 0x2f, 0xba, 0xc0, 0xce, 0x61, 0xea, 0xd7, 0x0b, 0x9b,
		0x6c, 0x78, 0xb3, 0x23, 0xcc, 0xa1, 0x07, 0x93, 0xe2, 0x49, 0xe4, 0x59, 0xf4, 0x80, 0xb6, 0xea,
		0x16, 0xf2, 0x68, 0xe4, 0xd1, 0xc8, 0xa3, 0x8f, 0x30, 0x8f, 0x76, 0x06, 0xf2, 0xc4, 0x15, 0xc8,
		0xc4, 0x1d, 0x84, 0xa6, 0x37, 0xde, 0x3e, 0x10, 0x8e, 0x39, 0x46, 0xe2, 0x68, 0xc8, 0x1b, 0xf5,
		0xd6, 0xd8, 0x32, 0xb8, 0x22, 0x5a, 0xa5, 0x88, 0x91, 0x2d, 0xc4, 0x81, 0x9d, 0x8a, 0x8c, 0x91,
		0x96, 0x9c, 0x91, 0x7a, 0xde, 0x9b, 0x5e, 0xfe, 0x2b, 0x50, 0xe6, 0x48, 0x45, 0xee, 0x58, 0x31,
		0x81, 0xf2, 0x79, 0x05, 0x46, 0x90, 0x89, 0xf4, 0x41, 0xdc, 0xa8, 0xf7, 0x59, 0xae, 0x43, 0x8c,
		0x56, 0x5f, 0xeb, 0xc6, 0x4e, 0xb7, 0xd5, 0x97, 0xda, 0x36, 0xdb, 0xba, 0x66, 0x68, 0x35, 0xad,
		0x81, 0x8e, 0x5f, 0x7b, 0x80, 0x55, 0xbd, 0x33, 0x6e, 0x51, 0x04, 0x7e, 0x2b, 0x44, 0x1f, 0x75,
		0xf4, 0x42, 0xdb, 0x8e, 0x90, 0x5a, 0x43, 0x77, 0x8a, 0x5d, 0x10, 0x7d, 0x04, 0x44, 0xbb, 0x20,
		0x6a, 0x99, 0x2a, 0x30, 0xda, 0x8e, 0x51, 0xa3, 0x6c, 0x00, 0xa2, 0x1d, 0xe1, 0x5f, 0x45, 0xd7,
		0xb3, 0xed, 0x08, 0xe9, 0x9d, 0x4f, 0x30, 0xa2, 0xed, 0x10, 0x19, 0x35, 0x20, 0xb4, 0x1d, 0xa1,
		0xbb, 0x7a, 0x1b, 0x6d, 0x71, 0xb0, 0xeb, 0x26, 0xdc, 0xd2, 0x4b, 0xc1, 0x70, 0xdf, 0x45, 0x5c,
		0x45, 0xec, 0xa5, 0xf1, 0xb1, 0x03, 0xc7, 0x8d, 0x28, 0x76, 0xe0, 0x96, 0x1e, 0x80, 0x1d, 0x38,
		0xda, 0xc8, 0x87, 0x62, 0xd8, 0x28, 0x86, 0xbd, 0x67, 0x20, 0x44, 0x31, 0x6c, 0x14, 0xc3, 0xa6,
		0x65, 0x20, 0x42, 0xeb, 0x60, 0x6f, 0x7e, 0x14, 0x78, 0x09, 0x78, 0x09, 0x78, 0x49, 0x61, 0x79,
		0x09, 0x4a, 0x60, 0xa3, 0xb1, 0x5f, 0xf6, 0x1b, 0xfb, 0x11, 0x74, 0x60, 0xe4, 0x68, 0xb3, 0xf7,
		0x2a, 0xc5, 0x09, 0xa1, 0xbc, 0x18, 0x51, 0xfa, 0xfb, 0x3b, 0xe3, 0x67, 0x94, 0x84, 0xcd, 0xef,
		0xde, 0xbe, 0x3d, 0x79, 0xfb, 0xf6, 0x64, 0x64, 0x07, 0x27, 0xe1, 0xf3, 0x80, 0xfd, 0xeb, 0xb7,
		0x6a, 0xad, 0x61, 0xaa, 0xed, 0x4f, 0x95, 0xdf, 0x24, 0xcf, 0x97, 0x36, 0xfc, 0xbc, 0xa9, 0x7e,
		0x56, 0xea, 0xbf, 0x65, 0xbc, 0x5b, 0xde, 0x10, 0xeb, 0x63, 0xea, 0x95, 0xc7, 0x37, 0x19, 0x99,
		0x20, 0xd0, 0x75, 0x16, 0xd8, 0xbe, 0x33, 0x20, 0x6d, 0x23, 0x3b, 0xa7, 0x45, 0xff, 0xa8, 0xc8,
		0x7d, 0xeb, 0x99, 0xf9, 0x52, 0xcf, 0x61, 0xfd, 0x6e, 0x20, 0x59, 0x3e, 0x93, 0x7e, 0x58, 0x7d,
		0xa7, 0x2b, 0x45, 0x93, 0x2d, 0x85, 0xdf, 0x99, 0x54, 0xad, 0x35, 0xa4, 0x08, 0x1b, 0xc9, 0x09,
		0xfe, 0x74, 0xa3, 0x57, 0x44, 0xc8, 0x0d, 0x21, 0xa2, 0xb2, 0x05, 0x01, 0x24, 0x70, 0xde, 0x6c,
		0xbb, 0x73, 0x10, 0x12, 0xc6, 0x6b, 0x91, 0x0c, 0x70, 0xc1, 0x8a, 0x79, 0x67, 0x29, 0x1f, 0xc1,
		0xff, 0x55, 0xba, 0xe9, 0x74, 0xd2, 0xd8, 0x46, 0x44, 0x32, 0x68, 0xc9, 0x45, 0x89, 0xab, 0x8b,
		0xee, 0x3e, 0x6d, 0x82, 0x93, 0x19, 0x59, 0xfc, 0x49, 0x4d, 0x30, 0x2d, 0x25, 0x67, 0xf0, 0xe3,
		0x22, 0xf1, 0x64, 0xcc, 0xab, 0x9b, 0x49, 0x6f, 0xe9, 0x73, 0x76, 0xfd, 0xe5, 0x56, 0x0a, 0x28,
		0x94, 0x01, 0x6a, 0x25, 0x80, 0xca, 0xe9, 0x93, 0x67, 0xfa, 0xe4, 0x7e, 0x5d, 0x40, 0x26, 0x9f,
		0x2e, 0x5d, 0xe7, 0xed, 0xd2, 0x5b, 0xb2, 0x27, 0xf6, 0x4b, 0xd4, 0x89, 0x7b, 0x3c, 0x5e, 0xc6,
		0x5a, 0x71, 0x9f, 0xa2, 0x15, 0x77, 0x66, 0x64, 0x3a, 0xb4, 0xe2, 0x4e, 0x7b, 0x91, 0x4f, 0x07,
		0x42, 0x2b, 0x6e, 0x21, 0xee, 0x41, 0x84, 0x9b, 0x10, 0xed, 0x2e, 0x44, 0x26, 0x78, 0x12, 0x54,
		0xfe, 0xb4, 0x12, 0x37, 0xe9, 0x58, 0x4e, 0x1f, 0x5c, 0x14, 0xfe, 0xf4, 0xc1, 0x70, 0x7b, 0xda,
		0x92, 0x7b, 0x55, 0xf9, 0xe6, 0xfe, 0x9f, 0xb3, 0xdf, 0x2b, 0x2f, 0x57, 0x6f, 0xfe, 0xb9, 0x7c,
		0x59, 0xfe, 0xe6, 0xaf, 0x75, 0xbf, 0x76, 0xf6, 0xfb, 0xe5, 0xcb, 0xd5, 0x86, 0x9f, 0x5c, 0xbc,
		0x5c, 0xed, 0x39, 0xc6, 0xf9, 0xcb, 0xeb, 0x95, 0x5f, 0x8d, 0xbe, 0x5f, 0xde, 0xf4, 0x82, 0xca,
		0x86, 0x17, 0xbc, 0xdb, 0xf4, 0x82, 0x77, 0x1b, 0x5e, 0xb0, 0xf1, 0x2d, 0x95, 0x37, 0xbc, 0xe0,
		0xfc, 0xe5, 0xd7, 0xca, 0xef, 0xbf, 0x5e, 0xff, 0xab, 0x17, 0x2f, 0x6f, 0x7e, 0x6d, 0xfa, 0xd9,
		0xe5, 0xcb, 0xaf, 0xab, 0x37, 0x6f, 0x4e, 0x5e, 0x9f, 0x95, 0xbf, 0x9e, 0xca, 0xef, 0x47, 0x87,
		0x08, 0xce, 0xee, 0x57, 0xce, 0x16, 0x0c, 0xff, 0xbf, 0xc8, 0xa7, 0x33, 0x60, 0x95, 0x99, 0xb5,
		0xca, 0xec, 0x9d, 0x5d, 0xa1, 0x22, 0xeb, 0xb4, 0x3b, 0x7e, 0xd3, 0x71, 0x9f, 0x1f, 0xbc, 0x50,
		0xf6, 0x6c, 0xd9, 0xf6, 0x1e, 0x07, 0x11, 0xf7, 0x64, 0x5d, 0xb9, 0xcf, 0xac, 0x5e, 0xf4, 0x90,
		0x17, 0x74, 0xb2, 0xa7, 0x64, 0xf5, 0x38, 0xc6, 0x03, 0x82, 0x0f, 0x82, 0x0f, 0x82, 0x9f, 0xc3,
		0x63, 0x3c, 0x17, 0x9b, 0x8e, 0xf1, 0x5c, 0x08, 0x3e, 0xc6, 0x83, 0xe0, 0x9a, 0xb5, 0xe0, 0xda,
		0xeb, 0x7b, 0x7f, 0xcb, 0x7d, 0xeb, 0x1b, 0xeb, 0x8b, 0x0d, 0xaa, 0x73, 0xcf, 0x41, 0x30, 0x45,
		0x30, 0x45, 0x30, 0x2d, 0xb6, 0x5a, 0x46, 0xee, 0x0e, 0xe6, 0x5d, 0xc2, 0x25, 0xca, 0xcf, 0x13,
		0x0f, 0x8e, 0xf2, 0xf3, 0x29, 0xaf, 0xbf, 0xc5, 0xa9, 0x4d, 0xa3, 0xfc, 0xfc, 0xd9, 0x69, 0xe5,
		0xfd, 0xf9, 0x25, 0x0a, 0xd0, 0xa7, 0xe3, 0xa6, 0xe9, 0x47, 0x83, 0xfc, 0x95, 0x27, 0x86, 0x1e,
		0xd8, 0x03, 0x01, 0x7c, 0x9c, 0xae, 0xe7, 0x39, 0xd8, 0x37, 0xd8, 0x37, 0xd8, 0xf7, 0x11, 0xb2,
		0x6f, 0x42, 0x1f, 0x20, 0xa1, 0xcb, 0x28, 0x28, 0x37, 0x28, 0x77, 0xf2, 0xa9, 0xbd, 0x78, 0x87,
		0xb9, 0x05, 0xdb, 0x06, 0xdb, 0xce, 0x02, 0xdb, 0x16, 0xb4, 0xad, 0x3c, 0x19, 0x19, 0xac, 0x1b,
		0xac, 0x1b, 0xac, 0x1b, 0xac, 0x1b, 0xac, 0x1b, 0xac, 0x1b, 0xac, 0x1b, 0xac, 0x1b, 0xac, 0xfb,
		0xf8, 0x59, 0x77, 0xc3, 0x09, 0xc2, 0x6a, 0x18, 0xfa, 0xb4, 0x21, 0xa3, 0xe9, 0xb8, 0x4a, 0x9f,
		0x45, 0x61, 0x97, 0xd8, 0x84, 0xa2, 0xd5, 0x35, 0x37, 0xf2, 0xd9, 0xfb, 0x4a, 0xe5, 0xe2, 0xb2,
		0x52, 0x39, 0xbd, 0x7c, 0x77, 0x79, 0xfa, 0xe1, 0xfc, 0xfc, 0xec, 0x82, 0xb2, 0x8f, 0x48, 0x49,
		0xf3, 0xbb, 0xcc, 0x67, 0xdd, 0xeb, 0xe7, 0xd2, 0x95, 0xe4, 0x3e, 0xf5, 0xfb, 0x22, 0x86, 0xbe,
		0x0b, 0x98, 0x4f, 0xba, 0x06, 0x90, 0x8f, 0x65, 0x22, 0x1f, 0xfb, 0xee, 0x0d, 0xe4, 0xbe, 0xf3,
		0xe8, 0x08, 0x48, 0xc8, 0x66, 0x43, 0x23, 0x23, 0x43, 0x46, 0x86, 0x8c, 0xac, 0xb0, 0x19, 0x19,
		0x75, 0x4f, 0x49, 0xa4, 0x64, 0x48, 0xc9, 0x90, 0x92, 0x25, 0x9c, 0xda, 0xf2, 0x39, 0xce, 0x1d,
		0x21, 0x27, 0x03, 0xf3, 0x3e, 0x38, 0xf3, 0xee, 0x33, 0xf7, 0x61, 0x78, 0x87, 0x84, 0x98, 0x76,
		0x8f, 0xc7, 0x05, 0xe7, 0x06, 0xe7, 0x06, 0xe7, 0x2e, 0x34, 0xe7, 0x3e, 0xbb, 0x10, 0x40, 0xba,
		0x2f, 0x40, 0xba, 0x41, 0xba, 0x41, 0xba, 0xe3, 0x4d, 0xed, 0xc5, 0xf9, 0xf9, 0x3b, 0xd0, 0x6e,
		0xd0, 0x6e, 0x8a, 0x69, 0x20, 0x2c, 0xab, 0xbe, 0x32, 0xb6, 0xcf, 0x7a, 0xcc, 0x67, 0xae, 0x7d,
		0x14, 0x4e, 0x79, 0x12, 0xea, 0xf4, 0x9b, 0x9a, 0x74, 0xf9, 0xe1, 0xec, 0x4a, 0x52, 0xdd, 0x90,
		0xf9, 0x2e, 0x0b, 0xa5, 0xb6, 0xef, 0x85, 0x9e, 0xed, 0xf5, 0xff, 0x74, 0xa3, 0x9f, 0xbd, 0x2f,
		0x9f, 0x9e, 0xae, 0xf9, 0xe1, 0xef, 0xd2, 0x27, 0xe6, 0x07, 0x8e, 0xe7, 0x4a, 0x17, 0xd2, 0x6b,
		0xb5, 0xfd, 0xe3, 0xe2, 0x8d, 0xd4, 0x19, 0x30, 0xdb, 0xe9, 0x39, 0xf6, 0x30, 0xa9, 0x79, 0x2b,
		0xa2, 0x8d, 0xbc, 0x20, 0xea, 0xb7, 0x8e, 0x02, 0xce, 0xe6, 0x52, 0x90, 0x3f, 0x10, 0xcd, 0x06,
		0xd7, 0xb2, 0x42, 0x61, 0x93, 0x0d, 0x6f, 0x06, 0x11, 0xe1, 0xf8, 0x44, 0x84, 0xc1, 0xd8, 0xbe,
		0xe9, 0x65, 0x84, 0xe9, 0xc8, 0x10, 0x12, 0x20, 0x24, 0x40, 0x48, 0x28, 0xac, 0x90, 0xe0, 0x0c,
		0xe4, 0x89, 0x2b, 0x90, 0xc3, 0xe8, 0x29, 0x02, 0x0a, 0xf3, 0x7c, 0x20, 0x1c, 0x73, 0x8c, 0xc4,
		0xd1, 0xb0, 0x57, 0xea, 0xcd, 0xd1, 0x65, 0x70, 0x05, 0xa4, 0x9d, 0x82, 0x74, 0x1b, 0x71, 0x60,
		0xa7, 0xa2, 0xe3, 0xa4, 0xa5, 0xe7, 0xa4, 0x9e, 0xf8, 0xa7, 0x27, 0x00, 0x08, 0xd4, 0x79, 0x52,
		0xd1, 0x7b, 0x56, 0x4c, 0xa0, 0x7c, 0x5e, 0x81, 0x11, 0x64, 0x22, 0x7f, 0x12, 0x37, 0xea, 0xfd,
		0xab, 0x0c, 0x9b, 0xbe, 0xc0, 0xc0, 0xe5, 0x74, 0x99, 0x1b, 0x3a, 0xe1, 0x33, 0x6d, 0xb1, 0xbe,
		0x15, 0x6e, 0x20, 0x22, 0x7e, 0xa9, 0xe3, 0xb7, 0x7e, 0x6d, 0x05, 0x02, 0xb5, 0x98, 0x59, 0xfb,
		0x35, 0xb3, 0xad, 0x6b, 0x86, 0x56, 0xd3, 0x1a, 0xa2, 0xa4, 0x98, 0xa1, 0xbf, 0x09, 0x84, 0x45,
		0x64, 0xb1, 0x51, 0x79, 0x19, 0xac, 0xea, 0x9d, 0x71, 0x5b, 0x3a, 0xc6, 0xd8, 0x92, 0x1e, 0x44,
		0x1f, 0x75, 0x05, 0x08, 0x6d, 0x45, 0x48, 0xad, 0x35, 0xdb, 0x80, 0x68, 0x3b, 0x44, 0x1f, 0x01,
		0xd1, 0x2e, 0x88, 0x5a, 0xa6, 0x0a, 0x8c, 0xb6, 0x63, 0xd4, 0x28, 0x1b, 0x80, 0x68, 0x47, 0xf8,
		0x57, 0x9b, 0x40, 0x68, 0x2b, 0x42, 0x7a, 0xe7, 0x13, 0x8c, 0x68, 0x3b, 0x44, 0x46, 0x0d, 0x08,
		0x6d, 0x47, 0xe8, 0xae, 0x2e, 0x12, 0x21, 0x21, 0x23, 0xdf, 0x63, 0xdb, 0xf1, 0x10, 0x76, 0x8a,
		0x6d, 0x47, 0xbe, 0x8f, 0x19, 0x0c, 0x37, 0x9e, 0xc4, 0x35, 0xfe, 0x5b, 0x1a, 0x1f, 0x5b, 0x90,
		0xdc, 0x88, 0x62, 0x0b, 0x72, 0xe9, 0x01, 0xd8, 0x82, 0x24, 0x76, 0xa9, 0xe8, 0xf9, 0x87, 0x9e,
		0x7f, 0xe8, 0xf9, 0x47, 0xc1, 0x94, 0xd0, 0xf3, 0x0f, 0x56, 0x89, 0x9e, 0x7f, 0x20, 0xf0, 0xa9,
		0x11, 0x78, 0xa1, 0xed, 0xfe, 0x36, 0x3f, 0x0a, 0xb4, 0x1e, 0xb4, 0x1e, 0xb4, 0xbe, 0xb0, 0xb4,
		0x1e, 0x9d, 0xfe, 0xd0, 0xe9, 0x2f, 0x7f, 0x21, 0x55, 0x64, 0x93, 0xbf, 0xd5, 0x47, 0x20, 0x84,
		0x22, 0x84, 0x22, 0x84, 0x16, 0x5b, 0x19, 0x43, 0x7f, 0x3f, 0xe2, 0x3f, 0xb8, 0xee, 0xbf, 0x9f,
		0x11, 0xe2, 0xba, 0xff, 0x86, 0xa9, 0x45, 0x7f, 0xbf, 0x34, 0xdd, 0x34, 0xfd, 0x68, 0x90, 0xba,
		0xb2, 0xc2, 0xcb, 0x5f, 0x1d, 0x70, 0x02, 0xa8, 0x81, 0x2f, 0x05, 0xf6, 0x77, 0xf6, 0x68, 0x0d,
		0xa6, 0xf9, 0xe4, 0x80, 0xb9, 0xf6, 0x90, 0x29, 0xcb, 0x96, 0xdd, 0x3f, 0x19, 0xff, 0x37, 0xca,
		0x1e, 0xc7, 0x5f, 0x0c, 0xff, 0x66, 0x6e, 0xe8, 0x3b, 0x2c, 0x98, 0x7e, 0xfd, 0x7c, 0x12, 0x85,
		0xfd, 0x93, 0xd1, 0x4b, 0xf9, 0x38, 0x53, 0x72, 0x7c, 0x39, 0xb0, 0x2d, 0x39, 0xf6, 0xe3, 0xe0,
		0xc7, 0x05, 0x37, 0xa6, 0x33, 0x16, 0x34, 0x1a, 0x8f, 0x73, 0xb6, 0x27, 0xda, 0x01, 0xe7, 0x30,
		0x54, 0xb9, 0x0f, 0x65, 0xce, 0x23, 0x2a, 0xd7, 0xa1, 0xce, 0x71, 0x84, 0xe5, 0x36, 0xc2, 0x72,
		0x1a, 0x81, 0xb9, 0xcc, 0x61, 0x7d, 0x5f, 0xdd, 0xa1, 0xa9, 0xb5, 0x5f, 0xb2, 0x27, 0xeb, 0x81,
		0x58, 0x0b, 0x19, 0x8f, 0x4b, 0x2b, 0x80, 0x9c, 0x41, 0x00, 0x81, 0x00, 0x02, 0x01, 0x84, 0x9a,
		0xc1, 0x52, 0x39, 0x93, 0x39, 0xa7, 0xd2, 0x15, 0x60, 0x58, 0x33, 0xd7, 0xd2, 0xa5, 0x2e, 0x9a,
		0x44, 0xac, 0xb0, 0x0a, 0x73, 0x34, 0x22, 0x1d, 0x4e, 0x5a, 0x8e, 0x47, 0xb4, 0x03, 0x4a, 0xcd,
		0x11, 0xa5, 0xe6, 0x90, 0x52, 0x74, 0x4c, 0x82, 0x52, 0x7f, 0x62, 0xeb, 0x27, 0x57, 0x6c, 0x57,
		0x73, 0x16, 0xdc, 0x9e, 0xde, 0x0f, 0xa8, 0x9a, 0x56, 0x57, 0x70, 0x6d, 0x7a, 0x17, 0x4a, 0xf5,
		0x8e, 0x61, 0xde, 0xb5, 0x74, 0xa5, 0x5a, 0xbb, 0xad, 0x5e, 0x37, 0x14, 0xb3, 0x5a, 0xaf, 0xeb,
		0xb8, 0x2d, 0xb4, 0x3f, 0x5e, 0xd7, 0xca, 0x17, 0xad, 0x55, 0x37, 0x3b, 0x35, 0xad, 0xad, 0x98,
		0xda, 0x8d, 0xd9, 0xd1, 0x6b, 0x80, 0x6f, 0x7f, 0xf8, 0x04, 0x2e, 0xd2, 0x34, 0x17, 0x6b, 0x3a,
		0x28, 0x1e, 0x78, 0xf1, 0xa6, 0x60, 0x85, 0x19, 0xc1, 0x31, 0xd5, 0x45, 0x5d, 0x1c, 0x58, 0xa3,
		0x7f, 0x57, 0xeb, 0x4d, 0xb5, 0x65, 0xb6, 0x75, 0xed, 0x56, 0xbd, 0x56, 0x0d, 0xa5, 0x0e, 0x5c,
		0xf9, 0x71, 0x55, 0x74, 0xdd, 0x54, 0x5b, 0x91, 0x95, 0x9a, 0xba, 0x76, 0x67, 0xa8, 0xad, 0x8f,
		0xe6, 0x2d, 0x1c, 0x01, 0x05, 0xb2, 0xb7, 0x75, 0xbd, 0x63, 0x1a, 0x9a, 0x66, 0x36, 0xb4, 0xd6,
		0x47, 0x00, 0xca, 0x0f, 0x68, 0x4b, 0x1b, 0x9a, 0xa8, 0x62, 0x1a, 0x5a, 0xe4, 0x0e, 0x00, 0x29,
		0x3f, 0xa4, 0x6d, 0x4d, 0x07, 0x8e, 0x04, 0x38, 0xea, 0xca, 0xff, 0x53, 0x6a, 0x06, 0xcc, 0x93,
		0x18, 0xd6, 0x28, 0x2a, 0x45, 0xbc, 0xd4, 0xbc, 0xa9, 0xaa, 0x0d, 0xa5, 0x6e, 0xb6, 0xb5, 0x86,
		0x5a, 0xfb, 0x92, 0x02, 0xb2, 0x42, 0x9f, 0x70, 0x8f, 0x1c, 0x2f, 0xa3, 0xb4, 0x2f, 0x7f, 0xf8,
		0xa5, 0x4d, 0xef, 0xf2, 0x87, 0x60, 0x4a, 0x34, 0x2e, 0x7f, 0xc0, 0xa5, 0x46, 0xd7, 0xf2, 0x07,
		0x9d, 0x58, 0x5a, 0x96, 0x3f, 0xbc, 0x52, 0xa5, 0x5f, 0xf9, 0x83, 0x2f, 0x6d, 0x9a, 0x95, 0x03,
		0x04, 0xef, 0xda, 0x0d, 0xb5, 0x56, 0x35, 0x46, 0xb2, 0xa9, 0xd2, 0xe9, 0x98, 0xba, 0xd2, 0x6e,
		0x7c, 0x81, 0x24, 0x2d, 0x04, 0xd5, 0x7a, 0x15, 0x12, 0x2a, 0x21, 0x9c, 0x4a, 0xbd, 0x1a, 0xb1,
		0xc1, 0x4f, 0xfa, 0x59, 0xf9, 0x3d, 0x70, 0x15, 0x81, 0xeb, 0x87, 0x32, 0x70, 0x15, 0x80, 0x6b,
		0xf9, 0xfc, 0x02, 0xb8, 0x0a, 0xc0, 0xf5, 0xa2, 0x02, 0x49, 0xa5, 0x78, 0x5c, 0x45, 0x68, 0x54,
		0xcd, 0x2f, 0x6c, 0xe9, 0x44, 0xcf, 0x22, 0xe0, 0x27, 0x32, 0x4a, 0x16, 0x00, 0x3f, 0xa1, 0xd1,
		0xb0, 0x00, 0xf8, 0x89, 0x8c, 0x7a, 0xf9, 0x84, 0xef, 0xdf, 0x77, 0x4a, 0xc7, 0x40, 0x8e, 0x2b,
		0x08, 0xd7, 0x7a, 0x15, 0xc7, 0x2e, 0x48, 0x01, 0x55, 0xea, 0x55, 0x1d, 0x79, 0xae, 0x58, 0x64,
		0x91, 0xe9, 0x0a, 0x42, 0x16, 0xb9, 0xae, 0x28, 0x64, 0x91, 0xed, 0x16, 0x93, 0xb7, 0x08, 0x8d,
		0xaf, 0x79, 0x06, 0x2e, 0x9d, 0x38, 0x5a, 0x0c, 0x04, 0x91, 0xf3, 0x66, 0x39, 0x2e, 0x16, 0x02,
		0x41, 0xe4, 0xbd, 0xdb, 0x00, 0x54, 0x6a, 0xb7, 0x1a, 0x36, 0x73, 0x69, 0x81, 0x6c, 0x69, 0x23,
		0x2c, 0x41, 0xbb, 0x8a, 0xb0, 0x6c, 0x84, 0xcf, 0x76, 0x6e, 0xd0, 0x82, 0x9e, 0x46, 0x0c, 0x25,
		0x1c, 0x4d, 0xb1, 0x96, 0x0e, 0x5c, 0xcd, 0x6e, 0xbc, 0x3e, 0x1b, 0x26, 0x38, 0x8d, 0x18, 0x30,
		0x9b, 0xd5, 0xc6, 0x8d, 0xa6, 0x37, 0x95, 0xba, 0xf9, 0xef, 0x3b, 0x45, 0xff, 0x02, 0xbd, 0x8e,
		0x1f, 0xd1, 0xbb, 0x86, 0xa1, 0xb6, 0x1b, 0x8a, 0xa9, 0xb6, 0x8c, 0x1b, 0xb3, 0x53, 0x35, 0xd4,
		0xce, 0xcd, 0x17, 0xa0, 0x4b, 0x84, 0x6e, 0x4b, 0x33, 0x15, 0x5d, 0xd7, 0xb0, 0xcd, 0x44, 0x02,
		0x65, 0xe7, 0xae, 0x76, 0x1b, 0xd9, 0xa9, 0xa2, 0xdf, 0x54, 0x6b, 0x0a, 0x30, 0x25, 0xc3, 0xd4,
		0x18, 0xdd, 0x5c, 0x6a, 0x19, 0x3a, 0xae, 0xfa, 0x15, 0x87, 0x99, 0xa4, 0x16, 0x4c, 0xf3, 0x87,
		0xdc, 0x21, 0x82, 0x66, 0xee, 0x50, 0x14, 0x1f, 0x1c, 0xf3, 0x08, 0x59, 0x5a, 0x41, 0x30, 0xb7,
		0xd8, 0xa5, 0x12, 0xec, 0x72, 0x85, 0x1e, 0x54, 0x33, 0x01, 0x70, 0xa6, 0x98, 0x1a, 0x80, 0x70,
		0x65, 0x65, 0x0d, 0x21, 0xe4, 0xed, 0x06, 0xed, 0x56, 0x6b, 0x2a, 0x66, 0xf5, 0xa3, 0xd2, 0x32,
		0xa6, 0x3b, 0xaa, 0x75, 0xb5, 0x53, 0xd3, 0x3e, 0x29, 0xfa, 0x17, 0x68, 0x6a, 0xe9, 0x00, 0x0c,
		0x59, 0x1f, 0xcb, 0x0c, 0xfb, 0x8a, 0xfc, 0x28, 0x82, 0x39, 0xa5, 0x04, 0x31, 0x1c, 0x16, 0x96,
		0x1a, 0xf6, 0x27, 0xf7, 0xc2, 0x51, 0x6d, 0x7d, 0x52, 0xf4, 0x8e, 0x62, 0xb6, 0x14, 0xf5, 0xe3,
		0xed, 0xb5, 0xa6, 0x9b, 0xd5, 0xfa, 0x27, 0x45, 0x37, 0xd4, 0x8e, 0xd2, 0x8c, 0xb0, 0x85, 0xb3,
		0x12, 0x08, 0x2e, 0xdc, 0x54, 0xd1, 0x97, 0x17, 0x1c, 0x54, 0x7c, 0x04, 0x3b, 0x5a, 0x43, 0xad,
		0xa9, 0x46, 0xd5, 0x50, 0xb5, 0x16, 0xfc, 0x93, 0x40, 0x6c, 0xe1, 0x9e, 0x0a, 0xbe, 0xb8, 0xe0,
		0x9d, 0x76, 0x02, 0xd8, 0xd4, 0xae, 0xd5, 0x86, 0x62, 0xb6, 0x75, 0xe5, 0x46, 0xfd, 0x0c, 0xee,
		0x94, 0x12, 0xb2, 0xf0, 0x4c, 0x85, 0x5e, 0x58, 0xf0, 0x4b, 0x31, 0xe1, 0x03, 0x65, 0x4a, 0x03,
		0x58, 0x78, 0xa5, 0x22, 0x2f, 0x2b, 0x38, 0xa5, 0xdd, 0xe8, 0xdd, 0x35, 0x0c, 0xb5, 0x56, 0xed,
		0x18, 0x66, 0x43, 0xed, 0x18, 0x4a, 0x4b, 0xd1, 0xcd, 0xba, 0xd6, 0x42, 0x23, 0x31, 0x31, 0xa8,
		0xc2, 0x1d, 0x15, 0x76, 0x41, 0xc1, 0x17, 0x25, 0x81, 0x6e, 0x78, 0x62, 0x13, 0xce, 0x48, 0x0c,
		0xac, 0xf0, 0x46, 0xc5, 0x5d, 0x52, 0x70, 0x47, 0x49, 0xb0, 0xd3, 0x95, 0xb6, 0xa6, 0x43, 0x45,
		0x12, 0x85, 0x2b, 0x1c, 0x52, 0x81, 0x17, 0x15, 0x3c, 0xd2, 0x4e, 0xf0, 0x5a, 0xf5, 0xba, 0x62,
		0xaa, 0xad, 0x1b, 0x4d, 0x6f, 0x8e, 0x12, 0x5c, 0x5d, 0xe9, 0xb4, 0xb5, 0x56, 0x07, 0xe9, 0x1a,
		0x27, 0xae, 0xda, 0x26, 0x5c, 0x75, 0xe5, 0xe6, 0xae, 0x83, 0xae, 0xba, 0xb4, 0xa0, 0x76, 0xee,
		0x6a, 0x35, 0xa5, 0xd3, 0x01, 0xa8, 0x94, 0xa0, 0xde, 0xb5, 0xfe, 0x68, 0x69, 0xff, 0x69, 0x21,
		0x76, 0xe6, 0xd8, 0xfd, 0xe3, 0x3c, 0x58, 0x6a, 0xa0, 0x82, 0x8a, 0x16, 0x75, 0x39, 0x81, 0x87,
		0xee, 0x8f, 0x1c, 0x36, 0x31, 0x05, 0x63, 0x0a, 0x37, 0x54, 0xd0, 0xc5, 0x04, 0x2f, 0x14, 0x9f,
		0x0b, 0x63, 0xb3, 0x40, 0x18, 0xa8, 0x6a, 0xfb, 0x53, 0x65, 0x78, 0xa9, 0x03, 0x49, 0x1b, 0x25,
		0xa6, 0x17, 0xc0, 0x94, 0x16, 0xd3, 0x56, 0xb5, 0x89, 0x60, 0x59, 0x3c, 0x9f, 0x9f, 0x82, 0x7b,
		0xca, 0x33, 0x76, 0x17, 0xc0, 0x2e, 0x8b, 0xee, 0x26, 0x87, 0xb0, 0xa5, 0x27, 0xac, 0xe7, 0x19,
		0x3c, 0xe1, 0x02, 0x7a, 0x9e, 0xc1, 0x13, 0x2e, 0x94, 0x1f, 0x3f, 0x78, 0xed, 0x6a, 0xed, 0x0f,
		0xc5, 0x30, 0x0d, 0x4d, 0x33, 0xaf, 0xd5, 0x8f, 0xc8, 0xa8, 0x28, 0xc1, 0x84, 0xa2, 0x53, 0xb4,
		0xe5, 0x03, 0x29, 0x67, 0x0f, 0xc4, 0xf4, 0x6a, 0xd3, 0x6c, 0xeb, 0xda, 0x75, 0x43, 0x69, 0xc2,
		0xdf, 0x10, 0x62, 0xa9, 0xe8, 0xba, 0x79, 0x5b, 0xd7, 0xcd, 0x1b, 0x55, 0x69, 0xe0, 0x18, 0x03,
		0x3f, 0x9c, 0x9f, 0x8d, 0x21, 0x9c, 0xb5, 0xdb, 0xaa, 0xda, 0x1a, 0xae, 0xf0, 0x86, 0xd6, 0xfa,
		0x08, 0x5c, 0xa9, 0x70, 0x1d, 0xfb, 0x4c, 0x00, 0xca, 0x0b, 0xa8, 0xda, 0xaa, 0x69, 0xcd, 0x76,
		0x43, 0x31, 0x94, 0x99, 0xbd, 0x02, 0x55, 0x5e, 0x54, 0xb5, 0xb6, 0x01, 0x13, 0xa5, 0x02, 0xb3,
		0xa3, 0x9b, 0x77, 0xed, 0xb6, 0x32, 0x8a, 0x4f, 0x8a, 0x0e, 0x19, 0x9c, 0x1b, 0xd1, 0xc8, 0x34,
		0x9b, 0xd5, 0xd6, 0x97, 0x89, 0x3b, 0xc5, 0x11, 0x3b, 0x3a, 0x48, 0xb5, 0xb6, 0x01, 0x38, 0xb9,
		0xe1, 0xbc, 0x6b, 0xe9, 0x4a, 0x4d, 0xfb, 0xd8, 0x52, 0xff, 0x57, 0xa9, 0x8f, 0x94, 0x67, 0xad,
		0x6d, 0x00, 0x56, 0x52, 0x58, 0x5b, 0xca, 0x98, 0x4b, 0x7d, 0x69, 0xa3, 0x05, 0x0b, 0x35, 0xb4,
		0x9f, 0x53, 0xc5, 0x16, 0x12, 0x4e, 0x26, 0x04, 0x89, 0x94, 0x92, 0xe8, 0xdc, 0xc1, 0x96, 0x72,
		0xb2, 0x9c, 0x57, 0xfc, 0x84, 0x67, 0x1c, 0x79, 0x03, 0x2e, 0xdd, 0xe4, 0x37, 0x6f, 0xe8, 0xa5,
		0x92, 0xe4, 0xe6, 0x0d, 0xb4, 0xf4, 0x92, 0xd9, 0xbc, 0x21, 0x97, 0x62, 0xd2, 0x9a, 0x5b, 0xe8,
		0xc4, 0x26, 0xa7, 0x79, 0x83, 0x2d, 0xe5, 0x24, 0x34, 0xd7, 0xf0, 0xa5, 0x93, 0x6c, 0xe6, 0x1c,
		0xc2, 0xcf, 0xc0, 0x70, 0x1f, 0x0c, 0x75, 0xa5, 0xae, 0xea, 0x4a, 0x0d, 0x37, 0x1e, 0x89, 0x60,
		0xc4, 0x51, 0x94, 0xe2, 0x2c, 0x19, 0x1c, 0x42, 0xd9, 0x03, 0xab, 0xd6, 0x5d, 0xf3, 0x5a, 0xd1,
		0xd5, 0x16, 0x8e, 0xbc, 0x51, 0x22, 0xd9, 0x6c, 0x56, 0x5b, 0x38, 0x7a, 0x92, 0x10, 0xc6, 0xd6,
		0x18, 0x46, 0x5d, 0xe9, 0xdc, 0x35, 0xb0, 0x53, 0xc2, 0x89, 0x62, 0x47, 0xf9, 0xb7, 0xd9, 0xba,
		0x6b, 0x46, 0x68, 0x2a, 0x06, 0xe2, 0x5e, 0x51, 0x7c, 0xb9, 0x60, 0x0f, 0x94, 0x0f, 0xb8, 0xd2,
		0xf2, 0x34, 0xf9, 0x42, 0x2b, 0x25, 0x8f, 0x92, 0x03, 0xd0, 0xb4, 0x3b, 0x43, 0x41, 0xe9, 0x1a,
		0xe1, 0x90, 0x22, 0xa9, 0x2b, 0xe6, 0x52, 0x42, 0x82, 0xb7, 0x2f, 0x6e, 0x28, 0x5a, 0x23, 0x14,
		0x51, 0x38, 0xa0, 0x42, 0x2e, 0x24, 0xf8, 0x9f, 0x9d, 0xb0, 0x19, 0x6a, 0x53, 0x31, 0x95, 0xcf,
		0x35, 0x45, 0xa9, 0x2b, 0x75, 0x78, 0x1e, 0x42, 0x2c, 0x6f, 0xf4, 0xea, 0xc7, 0x61, 0x14, 0xd4,
		0x95, 0x6a, 0xa7, 0xa3, 0x34, 0xaf, 0x1b, 0x5f, 0x20, 0x95, 0xf0, 0x82, 0x7a, 0xab, 0xb5, 0xcd,
		0x86, 0xda, 0x54, 0x21, 0x94, 0x14, 0xc6, 0x27, 0xa5, 0xba, 0x8e, 0xf2, 0x06, 0x5e, 0x0a, 0xeb,
		0x45, 0xcc, 0x3a, 0xa1, 0x5f, 0x1f, 0xb4, 0xef, 0x93, 0xd8, 0x50, 0x4a, 0xec, 0x67, 0xe8, 0x5b,
		0xf2, 0x93, 0x1b, 0x84, 0xd6, 0xb7, 0x7e, 0x34, 0x91, 0xf4, 0xe6, 0x52, 0xf2, 0x59, 0x8f, 0xf9,
		0xcc, 0xb5, 0x99, 0xb0, 0xe0, 0x2b, 0xce, 0xc6, 0x67, 0x3c, 0xef, 0xa6, 0x26, 0x55, 0x2a, 0x95,
		0x77, 0x57, 0x92, 0xea, 0x86, 0xcc, 0x77, 0x59, 0x28, 0xd5, 0x3c, 0x37, 0xf4, 0xbd, 0xbe, 0xd4,
		0x64, 0x41, 0x60, 0x3d, 0x30, 0xa9, 0xed, 0x7b, 0xa1, 0x67, 0x7b, 0x7d, 0xe9, 0xb5, 0x5a, 0x6b,
		0xb6, 0x7f, 0x5c, 0xbc, 0xf9, 0xd3, 0x9d, 0x0d, 0xd4, 0xf3, 0xfc, 0xd9, 0x2b, 0xa7, 0xbf, 0xf9,
		0x89, 0xf9, 0x81, 0xe3, 0xb9, 0xd2, 0x85, 0xf4, 0x5a, 0x5d, 0x7e, 0x45, 0x67, 0xc0, 0x6c, 0xa7,
		0xe7, 0xd8, 0x56, 0xe8, 0x78, 0xee, 0x5b, 0x81, 0xf4, 0xa8, 0xd4, 0xf1, 0x9e, 0x7c, 0x5b, 0xcc,
		0xe4, 0x2f, 0x3c, 0xe7, 0x0f, 0xf6, 0xfc, 0xb7, 0xe7, 0x77, 0x23, 0x38, 0x67, 0x36, 0x21, 0x98,
		0xf6, 0xdd, 0x5a, 0x41, 0xd5, 0x7f, 0x78, 0x7a, 0x64, 0x6e, 0x58, 0xba, 0x92, 0x42, 0xff, 0x89,
		0x09, 0x7e, 0xe0, 0xdc, 0xd3, 0x0e, 0x6f, 0x34, 0x47, 0xe6, 0x7d, 0xe9, 0x47, 0xbd, 0xcf, 0xb4,
		0xf7, 0xad, 0xba, 0xae, 0x17, 0x0e, 0xa7, 0x4a, 0x8c, 0xe7, 0x7d, 0x7e, 0xf0, 0x42, 0xd9, 0xb3,
		0x65, 0xdb, 0x7b, 0x1c, 0xf8, 0x2c, 0x08, 0x58, 0x57, 0xee, 0x33, 0xab, 0x17, 0x3d, 0x8c, 0x38,
		0x2c, 0xbd, 0xca, 0x20, 0xc4, 0xa5, 0xf0, 0x79, 0x40, 0xef, 0xd5, 0xa6, 0x11, 0x61, 0x38, 0x3a,
		0xb1, 0x41, 0xfc, 0xe1, 0xb8, 0x91, 0x7b, 0x3c, 0x25, 0x1e, 0xb6, 0xe6, 0xb9, 0x3d, 0xe7, 0x41,
		0xc0, 0xc0, 0x6d, 0x9f, 0xf5, 0x9c, 0x9f, 0x62, 0x8c, 0x77, 0x82, 0xb3, 0x67, 0xcb, 0x83, 0xbf,
		0x42, 0xf9, 0xd1, 0x0a, 0xed, 0xef, 0x02, 0xa2, 0x85, 0xe8, 0xe8, 0x37, 0x1f, 0xf5, 0x06, 0x23,
		0xb8, 0xc4, 0x44, 0xa0, 0xd4, 0x42, 0xdd, 0x42, 0x88, 0x5b, 0x98, 0x9d, 0x82, 0x91, 0x67, 0x43,
		0x84, 0x7f, 0x59, 0xb0, 0x7d, 0xa7, 0xcb, 0xdc, 0xd0, 0x09, 0x9f, 0x7d, 0xd6, 0x13, 0x61, 0xfa,
		0x63, 0x77, 0x73, 0x76, 0x2e, 0x60, 0x6c, 0x75, 0xfc, 0xd6, 0xaf, 0xad, 0x40, 0xe0, 0xe2, 0x9a,
		0xa6, 0x9f, 0x5f, 0xda, 0xa2, 0x14, 0xc4, 0x34, 0x94, 0xc3, 0x94, 0x92, 0xf4, 0x9a, 0xa2, 0x1b,
		0xea, 0x8d, 0x5a, 0x1b, 0xc9, 0xd4, 0xed, 0xaa, 0x71, 0xbb, 0xb8, 0x73, 0x06, 0x81, 0x23, 0x16,
		0x76, 0xf3, 0xa2, 0x3f, 0xa0, 0xdb, 0x0c, 0x5d, 0x5d, 0xe9, 0x18, 0x6a, 0x6b, 0x04, 0xdc, 0x5d,
		0x4b, 0x57, 0xaa, 0xb5, 0xdb, 0xea, 0x75, 0x03, 0xfb, 0x23, 0xdb, 0x20, 0xbb, 0x6b, 0x37, 0x22,
		0x5b, 0x53, 0x86, 0xe5, 0x88, 0x95, 0x4e, 0xc7, 0xac, 0x69, 0xad, 0x1b, 0x75, 0x5c, 0xc1, 0x13,
		0xc8, 0xc5, 0x41, 0x4e, 0x57, 0xfe, 0x7d, 0xa7, 0x74, 0xe0, 0xdc, 0xb6, 0x80, 0xa6, 0xd4, 0x6e,
		0x35, 0x53, 0x57, 0xda, 0xd0, 0xb8, 0xf7, 0x40, 0x09, 0xd6, 0xb4, 0x0b, 0xa7, 0xcf, 0x86, 0x09,
		0x8b, 0x8a, 0x89, 0x14, 0xac, 0x6a, 0x07, 0x56, 0x37, 0x4d, 0xb5, 0xfd, 0xe9, 0x02, 0x08, 0x6d,
		0x46, 0xe8, 0x56, 0x6b, 0x2a, 0x66, 0xf5, 0xa3, 0xd2, 0x32, 0xa6, 0xb1, 0xaf, 0xae, 0x76, 0x6a,
		0xda, 0x27, 0x45, 0xff, 0x82, 0xb5, 0xc8, 0x89, 0x1e, 0xd6, 0xe7, 0x0e, 0xfc, 0xd4, 0x46, 0xab,
		0xfd, 0xe9, 0xc2, 0x6c, 0x68, 0xb5, 0xaa, 0xa1, 0xe9, 0xe6, 0x5d, 0xbb, 0x5e, 0x35, 0xc0, 0xf1,
		0xb7, 0x01, 0xd6, 0xfa, 0xa4, 0xe8, 0x1d, 0xc5, 0x5c, 0xdf, 0x7c, 0x11, 0xc8, 0xc5, 0x40, 0x0e,
		0x99, 0xf8, 0x7e, 0xc0, 0x35, 0xb5, 0x6b, 0xb5, 0xa1, 0x98, 0x6d, 0x5d, 0xb9, 0x51, 0x3f, 0xc3,
		0xde, 0x92, 0xc1, 0x06, 0x63, 0xdb, 0x13, 0xb5, 0x76, 0xc3, 0xac, 0x69, 0x2d, 0x43, 0xd7, 0x1a,
		0x80, 0x69, 0x0b, 0x4c, 0x77, 0x0d, 0x43, 0xad, 0x55, 0x3b, 0x86, 0xd9, 0x50, 0x3b, 0x86, 0xd2,
		0x52, 0x74, 0xb3, 0xae, 0xb5, 0x10, 0x39, 0xe3, 0x41, 0x36, 0x6c, 0x42, 0x05, 0xcc, 0x62, 0x61,
		0xa6, 0x2b, 0x6d, 0x4d, 0x87, 0xe3, 0xdf, 0x0b, 0xb4, 0x75, 0x17, 0x8d, 0x80, 0x5c, 0x0c, 0xe4,
		0x10, 0x35, 0x13, 0x02, 0x67, 0x28, 0x7a, 0x73, 0xbc, 0x7b, 0x02, 0xdc, 0x36, 0xe3, 0x86, 0x2c,
		0x2a, 0x31, 0x62, 0x58, 0x9a, 0x7b, 0x02, 0xb6, 0xb6, 0xf3, 0x25, 0x10, 0x8b, 0x81, 0xd8, 0xa4,
		0xf5, 0x20, 0x40, 0xdb, 0x0c, 0xda, 0x62, 0xcf, 0x34, 0x20, 0xb5, 0x0d, 0x29, 0xbd, 0xda, 0x54,
		0xa2, 0x20, 0x39, 0xae, 0x26, 0x08, 0xb0, 0x36, 0x83, 0x35, 0xa9, 0x7f, 0x06, 0x8c, 0xb6, 0x61,
		0x34, 0x2d, 0x67, 0x02, 0x98, 0xb6, 0xc0, 0x84, 0x64, 0x28, 0x09, 0x5e, 0xe0, 0x59, 0x7b, 0xc2,
		0x05, 0xe1, 0x70, 0x1f, 0x98, 0x16, 0xae, 0x5c, 0x02, 0xa8, 0xcd, 0x40, 0x7d, 0x52, 0xf4, 0x8e,
		0xaa, 0xb5, 0xca, 0xe6, 0xaa, 0x06, 0x86, 0xfb, 0xa9, 0xb8, 0x9f, 0x8a, 0xfb, 0xa9, 0xb8, 0x9f,
		0x2a, 0xe1, 0x7e, 0x2a, 0xee, 0xa7, 0x1e, 0x60, 0x54, 0xdc, 0x4f, 0x3d, 0xb6, 0xfb, 0xa9, 0xaf,
		0x32, 0x34, 0x51, 0xa2, 0x26, 0xa8, 0x14, 0xd8, 0xdf, 0xd9, 0xa3, 0x35, 0xb0, 0xc2, 0xef, 0x91,
		0x9b, 0x38, 0xf1, 0x06, 0xcc, 0xb5, 0x87, 0x77, 0x48, 0x65, 0xcb, 0xee, 0x9f, 0x8c, 0xff, 0x93,
		0x03, 0x16, 0x06, 0x93, 0x2f, 0x86, 0x7f, 0x33, 0x37, 0xf4, 0x1d, 0x16, 0x4c, 0xbf, 0x7e, 0x3e,
		0x71, 0x06, 0x3f, 0x2e, 0x4e, 0x1c, 0xfb, 0x31, 0xfa, 0x6b, 0x34, 0x02, 0xcd, 0x9a, 0xe7, 0x9f,
		0x06, 0x82, 0x29, 0x28, 0x05, 0xa1, 0x15, 0xd2, 0xc5, 0xa5, 0x69, 0x2c, 0x1f, 0x0d, 0x4b, 0x64,
		0x22, 0x93, 0x3b, 0x7e, 0x44, 0xc3, 0x4d, 0xaf, 0x12, 0x97, 0x89, 0x06, 0x14, 0x70, 0x85, 0x58,
		0xf4, 0xd5, 0x61, 0x51, 0x84, 0x44, 0xf8, 0x55, 0x61, 0xe1, 0x6c, 0x23, 0x85, 0xab, 0xc1, 0xd9,
		0x72, 0xc0, 0x75, 0xc7, 0xa7, 0x35, 0x5d, 0xdb, 0xeb, 0x0a, 0xac, 0x59, 0x30, 0x1c, 0x1d, 0x35,
		0x0b, 0x50, 0xb3, 0xe0, 0xc0, 0x8e, 0x28, 0xf5, 0xf4, 0x07, 0x35, 0x0b, 0xc6, 0x38, 0xa0, 0x66,
		0xc1, 0x96, 0xb1, 0xd3, 0xad, 0x59, 0x20, 0xb0, 0xea, 0x69, 0x8e, 0x6a, 0x16, 0xd4, 0x3b, 0xc6,
		0xfc, 0xa5, 0xf1, 0xe1, 0xdd, 0x1c, 0x88, 0xdd, 0xfb, 0xe3, 0x75, 0xad, 0x7c, 0xd1, 0x5a, 0x75,
		0xb3, 0x53, 0xd3, 0xda, 0x8a, 0xa9, 0xdd, 0x98, 0x1d, 0xbd, 0x06, 0xf8, 0xf6, 0x87, 0x0f, 0xa5,
		0x89, 0x8f, 0x67, 0xf1, 0xa6, 0x60, 0x85, 0x19, 0xc1, 0x31, 0xd5, 0x45, 0x5d, 0x1c, 0x58, 0xa3,
		0x7f, 0x57, 0xeb, 0x4d, 0xb5, 0x65, 0xb6, 0x75, 0xed, 0x56, 0xbd, 0x56, 0x0d, 0x05, 0xdd, 0xda,
		0x08, 0x70, 0x55, 0x74, 0xdd, 0x54, 0x5b, 0x91, 0x95, 0x0e, 0x0f, 0x35, 0xab, 0xad, 0x8f, 0xe6,
		0x2d, 0x1c, 0x01, 0x05, 0xb2, 0xb7, 0x75, 0xbd, 0x33, 0x3c, 0x29, 0xd8, 0xd0, 0x44, 0x1e, 0x59,
		0x2a, 0x0e, 0xa0, 0x2d, 0x6d, 0x74, 0xee, 0xde, 0x34, 0xb4, 0xc8, 0x1d, 0x00, 0x52, 0x7e, 0x48,
		0xc5, 0x5e, 0x32, 0x2a, 0x0e, 0x8e, 0xba, 0xf2, 0xff, 0x94, 0x9a, 0x01, 0xf3, 0x24, 0x86, 0x35,
		0x8a, 0x4a, 0x11, 0x2f, 0x35, 0x6f, 0xaa, 0x6a, 0x43, 0xa9, 0x9b, 0x6d, 0xad, 0xa1, 0xd6, 0xbe,
		0xa0, 0xd1, 0x43, 0x71, 0x72, 0xbc, 0x74, 0x69, 0x5f, 0xfe, 0xf0, 0x4b, 0x9b, 0xde, 0xe5, 0x0f,
		0xc1, 0x94, 0x68, 0x5c, 0xfe, 0x80, 0x4b, 0x8d, 0xae, 0xe5, 0x0f, 0x3a, 0xdc, 0xfd, 0xce, 0x30,
		0xfd, 0xca, 0x1f, 0x7c, 0x69, 0xd3, 0xac, 0x7c, 0x56, 0x32, 0x6d, 0x37, 0xbe, 0x40, 0x92, 0x16,
		0x82, 0x6a, 0xbd, 0x0a, 0x09, 0x95, 0x10, 0x4e, 0xa5, 0x5e, 0x8d, 0xd8, 0xe0, 0x27, 0xfd, 0xac,
		0xfc, 0x1e, 0xb8, 0x8a, 0xc0, 0xf5, 0x43, 0x19, 0xb8, 0x0a, 0xc0, 0xb5, 0x7c, 0x7e, 0x01, 0x5c,
		0x05, 0xe0, 0x7a, 0x51, 0x81, 0xa4, 0x52, 0x3c, 0xae, 0x22, 0x34, 0xaa, 0xe6, 0x17, 0xb6, 0x74,
		0xa2, 0x67, 0x11, 0xf0, 0x13, 0x19, 0x25, 0x0b, 0x80, 0x9f, 0xd0, 0x68, 0x58, 0x00, 0xfc, 0x44,
		0x46, 0xbd, 0x1c, 0xf7, 0xea, 0x40, 0x8e, 0x2b, 0x08, 0xd7, 0x7a, 0x15, 0xc7, 0x2e, 0x48, 0x01,
		0x55, 0xea, 0x55, 0x1d, 0x79, 0xae, 0x58, 0x64, 0x91, 0xe9, 0x0a, 0x42, 0x16, 0xb9, 0xae, 0x28,
		0x64, 0x91, 0xed, 0x16, 0x93, 0xb7, 0x08, 0x8d, 0xaf, 0x79, 0x06, 0x2e, 0x9d, 0x38, 0x5a, 0x0c,
		0x04, 0x91, 0xf3, 0x66, 0x39, 0x2e, 0x16, 0x02, 0x41, 0xe4, 0xbd, 0xdb, 0x00, 0x9c, 0x35, 0xc7,
		0x43, 0xa2, 0x4b, 0x05, 0x64, 0x4b, 0x1b, 0x61, 0x09, 0xda, 0x55, 0x84, 0x65, 0x23, 0x7c, 0xb6,
		0xf3, 0xd5, 0xad, 0x14, 0x6e, 0x86, 0x0e, 0x4a, 0x38, 0x9a, 0x62, 0x2d, 0x1d, 0xb8, 0x9a, 0xdd,
		0x78, 0x2d, 0x34, 0xfc, 0x85, 0xb3, 0xa1, 0x04, 0xb3, 0x59, 0x6d, 0xdc, 0x68, 0x7a, 0x53, 0xa9,
		0x8b, 0xee, 0x36, 0x91, 0x82, 0x39, 0x66, 0x04, 0xd1, 0xbb, 0x86, 0xa1, 0xb6, 0x1b, 0x8a, 0xa9,
		0xb6, 0x8c, 0x1b, 0xb3, 0x53, 0x35, 0xd4, 0xce, 0xcd, 0x17, 0xa0, 0x4b, 0x84, 0x6e, 0x4b, 0x33,
		0x15, 0x5d, 0xd7, 0xb0, 0xcd, 0x44, 0x02, 0x65, 0xe7, 0xae, 0x76, 0x1b, 0xd9, 0xa9, 0xa2, 0xdf,
		0x54, 0x6b, 0x0a, 0x30, 0x25, 0xc3, 0xd4, 0x18, 0xdd, 0x5c, 0x6a, 0x19, 0x3a, 0xae, 0xfa, 0x15,
		0x87, 0x99, 0xa4, 0x16, 0x4c, 0xf3, 0x87, 0xdc, 0x21, 0x82, 0x66, 0xee, 0x50, 0x14, 0x1f, 0x1c,
		0xf3, 0x08, 0x59, 0x5a, 0x41, 0x30, 0xb7, 0xd8, 0xa5, 0x12, 0xec, 0x72, 0x85, 0x1e, 0x54, 0x33,
		0x01, 0x70, 0xa6, 0x98, 0x1a, 0x80, 0x70, 0x65, 0x65, 0x0d, 0x21, 0xe4, 0xed, 0x06, 0xed, 0x56,
		0x6b, 0x2a, 0x66, 0xf5, 0xa3, 0xd2, 0x32, 0xa6, 0x3b, 0xaa, 0x75, 0xb5, 0x53, 0xd3, 0x3e, 0x29,
		0xfa, 0x17, 0x68, 0x6a, 0xe9, 0x00, 0x0c, 0x59, 0x1f, 0xcb, 0x0c, 0xfb, 0x8a, 0xfc, 0x28, 0x82,
		0x39, 0xa5, 0x04, 0x31, 0x1c, 0x16, 0x96, 0x1a, 0xf6, 0x27, 0xf7, 0xc2, 0x51, 0x6d, 0x7d, 0x52,
		0xf4, 0x8e, 0x62, 0x4e, 0x3b, 0xde, 0x2f, 0x74, 0xae, 0x85, 0xb3, 0x12, 0x09, 0x2e, 0xdc, 0x54,
		0xd1, 0x97, 0x17, 0x1c, 0x54, 0x7c, 0x04, 0xe7, 0x5b, 0x45, 0xc3, 0x3f, 0x09, 0xc4, 0x16, 0xee,
		0xa9, 0xe0, 0x8b, 0x0b, 0xde, 0x69, 0x27, 0x80, 0x4d, 0xed, 0x5a, 0x6d, 0x28, 0x66, 0x5b, 0x57,
		0x6e, 0xd4, 0xcf, 0xe0, 0x4e, 0x29, 0x21, 0x0b, 0xcf, 0x54, 0xe8, 0x85, 0x05, 0xbf, 0x14, 0x13,
		0x3e, 0x50, 0xa6, 0x34, 0x80, 0x85, 0x57, 0x2a, 0xf2, 0xb2, 0x82, 0x53, 0xda, 0x8d, 0xde, 0x5d,
		0xc3, 0x50, 0x6b, 0xd5, 0x8e, 0x61, 0x36, 0xd4, 0x8e, 0xa1, 0xb4, 0x14, 0xdd, 0xac, 0x6b, 0x2d,
		0x34, 0x12, 0x13, 0x83, 0x2a, 0xdc, 0x51, 0x61, 0x17, 0x14, 0x7c, 0x51, 0x12, 0xe8, 0x86, 0x27,
		0x36, 0xe1, 0x8c, 0xc4, 0xc0, 0x0a, 0x6f, 0x54, 0xdc, 0x25, 0x05, 0x77, 0x94, 0x04, 0x3b, 0x5d,
		0x69, 0x6b, 0x3a, 0x54, 0x24, 0x51, 0xb8, 0xc2, 0x21, 0x15, 0x78, 0x51, 0xc1, 0x23, 0xed, 0x04,
		0xaf, 0x55, 0xaf, 0x2b, 0xa6, 0xda, 0xba, 0xd1, 0xf4, 0xe6, 0x28, 0xc1, 0xd5, 0x95, 0x4e, 0x5b,
		0x6b, 0x75, 0x90, 0xae, 0x71, 0xe2, 0xaa, 0x6d, 0xc2, 0x55, 0x57, 0x6e, 0xee, 0x3a, 0xe8, 0xaa,
		0x4b, 0x0b, 0x6a, 0xe7, 0xae, 0x56, 0x53, 0x3a, 0x1d, 0x80, 0x4a, 0x09, 0xea, 0x5d, 0xeb, 0x8f,
		0x96, 0xf6, 0x9f, 0x16, 0x62, 0x67, 0x8e, 0xdd, 0x3f, 0xce, 0x83, 0xa5, 0x06, 0x2a, 0xa8, 0x68,
		0x51, 0x97, 0x13, 0x78, 0xe8, 0xfe, 0xc8, 0x61, 0x13, 0x53, 0x30, 0xa6, 0x70, 0x43, 0x05, 0x5d,
		0x4c, 0xf0, 0x42, 0xf1, 0xb9, 0x30, 0x36, 0x0b, 0x84, 0x81, 0xaa, 0xb6, 0x3f, 0x55, 0x86, 0x97,
		0x3a, 0x90, 0xb4, 0x51, 0x62, 0x7a, 0x01, 0x4c, 0x69, 0x31, 0x6d, 0x55, 0x9b, 0x08, 0x96, 0xc5,
		0xf3, 0xf9, 0x29, 0xb8, 0xa7, 0x3c, 0x63, 0x77, 0x01, 0xec, 0xb2, 0xe8, 0x6e, 0x72, 0x08, 0x5b,
		0x7a, 0xc2, 0x7a, 0x9e, 0xc1, 0x13, 0x2e, 0xa0, 0xe7, 0x19, 0x3c, 0xe1, 0x42, 0xf9, 0xf1, 0x83,
		0xd7, 0xae, 0xd6, 0xfe, 0x50, 0x0c, 0xd3, 0xd0, 0x34, 0xf3, 0x5a, 0xfd, 0x88, 0x8c, 0x8a, 0x12,
		0x4c, 0x28, 0x3a, 0x45, 0x5b, 0x3e, 0x90, 0x72, 0xf6, 0x40, 0x4c, 0xaf, 0x36, 0xcd, 0xb6, 0xae,
		0x5d, 0x37, 0x94, 0x26, 0xfc, 0x0d, 0x21, 0x96, 0x8a, 0xae, 0x9b, 0xb7, 0x75, 0xdd, 0xbc, 0x51,
		0x95, 0x06, 0x8e, 0x31, 0xf0, 0xc3, 0xf9, 0xd9, 0x18, 0xc2, 0x59, 0xbb, 0xad, 0xaa, 0xad, 0xe1,
		0x0a, 0x6f, 0x68, 0xad, 0x8f, 0xc0, 0x95, 0x0a, 0xd7, 0xb1, 0xcf, 0x04, 0xa0, 0xbc, 0x80, 0xaa,
		0xad, 0x9a, 0xd6, 0x6c, 0x37, 0x14, 0x43, 0x99, 0xd9, 0x2b, 0x50, 0xe5, 0x45, 0x55, 0x6b, 0x1b,
		0x30, 0x51, 0x2a, 0x30, 0x3b, 0xba, 0x79, 0xd7, 0x6e, 0x2b, 0xa3, 0xf8, 0xa4, 0xe8, 0x90, 0xc1,
		0xb9, 0x11, 0x8d, 0x4c, 0xb3, 0x59, 0x6d, 0x7d, 0x99, 0xb8, 0x53, 0x1c, 0xb1, 0xa3, 0x83, 0x54,
		0x6b, 0x1b, 0x80, 0x93, 0x1b, 0xce, 0xbb, 0x96, 0xae, 0xd4, 0xb4, 0x8f, 0x2d, 0xf5, 0x7f, 0x95,
		0xfa, 0x48, 0x79, 0xd6, 0xda, 0x06, 0x60, 0x25, 0x85, 0xb5, 0xa5, 0x8c, 0xb9, 0xd4, 0x97, 0x36,
		0x5a, 0xb0, 0x50, 0x43, 0xfb, 0x39, 0x55, 0x6c, 0x21, 0xe1, 0x64, 0x42, 0x90, 0x48, 0x29, 0x89,
		0xce, 0x1d, 0x6c, 0x29, 0x27, 0xcb, 0x79, 0xc5, 0x4f, 0x78, 0xc6, 0x91, 0x37, 0xe0, 0xd2, 0x4d,
		0x7e, 0xf3, 0x86, 0x5e, 0x2a, 0x49, 0x6e, 0xde, 0x40, 0x4b, 0x2f, 0x99, 0xcd, 0x1b, 0x72, 0x29,
		0x26, 0xad, 0xb9, 0x85, 0x4e, 0x6c, 0x72, 0x9a, 0x37, 0xd8, 0x52, 0x4e, 0x42, 0x73, 0x0d, 0x5f,
		0x3a, 0xc9, 0x66, 0xce, 0x21, 0xfc, 0x0c, 0x0c, 0xf7, 0xc1, 0x50, 0x57, 0xea, 0xaa, 0xae, 0xd4,
		0x70, 0xe3, 0x91, 0x08, 0x46, 0x1c, 0x45, 0x29, 0xce, 0x92, 0xc1, 0x21, 0x94, 0x3d, 0xb0, 0x6a,
		0xdd, 0x35, 0xaf, 0x15, 0x5d, 0x6d, 0xe1, 0xc8, 0x1b, 0x25, 0x92, 0xcd, 0x66, 0xb5, 0x85, 0xa3,
		0x27, 0x09, 0x61, 0x6c, 0x8d, 0x61, 0xd4, 0x95, 0xce, 0x5d, 0x03, 0x3b, 0x25, 0x9c, 0x28, 0x76,
		0x94, 0x7f, 0x9b, 0xad, 0xbb, 0x66, 0x84, 0xa6, 0x62, 0x20, 0xee, 0x15, 0xc5, 0x97, 0x0b, 0xf6,
		0x40, 0xf9, 0x80, 0x2b, 0x2d, 0x4f, 0x93, 0x2f, 0xb4, 0x52, 0xf2, 0x28, 0x39, 0x00, 0x4d, 0xbb,
		0x33, 0x14, 0x94, 0xae, 0x11, 0x0e, 0x29, 0x92, 0xba, 0x62, 0x2e, 0x25, 0x24, 0x78, 0xfb, 0xe2,
		0x86, 0xa2, 0x35, 0x42, 0x11, 0x85, 0x03, 0x2a, 0xe4, 0x42, 0x82, 0xff, 0xd9, 0x09, 0x9b, 0xa1,
		0x36, 0x15, 0x53, 0xf9, 0x5c, 0x53, 0x94, 0xba, 0x52, 0x87, 0xe7, 0x21, 0xc4, 0xf2, 0x46, 0xaf,
		0x7e, 0x1c, 0x46, 0x41, 0x5d, 0xa9, 0x76, 0x3a, 0x4a, 0xf3, 0xba, 0xf1, 0x05, 0x52, 0x09, 0x2f,
		0xa8, 0xb7, 0x5a, 0xdb, 0x6c, 0xa8, 0x4d, 0x15, 0x42, 0x49, 0x61, 0x7c, 0x52, 0xaa, 0xeb, 0x28,
		0x6f, 0xe0, 0xa5, 0xb0, 0x5e, 0xc4, 0xac, 0x13, 0xfa, 0xf5, 0x41, 0xfb, 0x3e, 0x89, 0x0d, 0xa5,
		0xc4, 0x7e, 0x86, 0xbe, 0x25, 0x3f, 0xb9, 0x41, 0x68, 0x7d, 0xeb, 0x47, 0x13, 0x49, 0x6f, 0x2e,
		0x25, 0x9f, 0xf5, 0x98, 0xcf, 0x5c, 0x9b, 0x09, 0x0b, 0xbe, 0xe2, 0x6c, 0x7c, 0xc6, 0xf3, 0x6e,
		0x6a, 0x52, 0xa5, 0x52, 0x79, 0x77, 0x25, 0xa9, 0x6e, 0xc8, 0x7c, 0x97, 0x85, 0x52, 0xcd, 0x73,
		0x43, 0xdf, 0xeb, 0x4b, 0x4d, 0x16, 0x04, 0xd6, 0x03, 0x93, 0xda, 0xbe, 0x17, 0x7a, 0xb6, 0xd7,
		0x97, 0x5e, 0xab, 0xb5, 0x66, 0xfb, 0xc7, 0xc5, 0x9b, 0x3f, 0xdd, 0xd9, 0x40, 0x3d, 0xcf, 0x9f,
		0xbd, 0x72, 0xfa, 0x9b, 0x9f, 0x98, 0x1f, 0x38, 0x9e, 0x2b, 0x5d, 0x48, 0xaf, 0xd5, 0xe5, 0x57,
		0x74, 0x06, 0xcc, 0x76, 0x7a, 0x8e, 0x6d, 0x85, 0x8e, 0xe7, 0xbe, 0x15, 0x48, 0x8f, 0x4a, 0x1d,
		0xef, 0xc9, 0xb7, 0xc5, 0x4c, 0xfe, 0xc2, 0x73, 0xfe, 0x60, 0xcf, 0x7f, 0x7b, 0x7e, 0x37, 0x82,
		0x73, 0x66, 0x13, 0x82, 0x69, 0xdf, 0xad, 0x15, 0x54, 0xfd, 0x87, 0xa7, 0x47, 0xe6, 0x86, 0xa5,
		0x2b, 0x29, 0xf4, 0x9f, 0x98, 0xe0, 0x07, 0xce, 0x3d, 0xed, 0xf0, 0x46, 0x73, 0x64, 0xde, 0x97,
		0x7e, 0x54, 0x5a, 0x7f, 0x4e, 0xf7, 0xfe, 0x08, 0xfd, 0x78, 0x29, 0x7c, 0x1e, 0xd0, 0x2f, 0xde,
		0xa9, 0xe3, 0x1b, 0x8e, 0x4e, 0x1c, 0x75, 0xfe, 0x70, 0xdc, 0xc8, 0x0b, 0x9c, 0x12, 0x0f, 0x5b,
		0xf3, 0xdc, 0x9e, 0xf3, 0x20, 0x60, 0xe0, 0xb6, 0xcf, 0x7a, 0xce, 0x4f, 0x31, 0xd1, 0x71, 0x82,
		0xb3, 0x67, 0xcb, 0x83, 0xbf, 0x42, 0xf9, 0xd1, 0x0a, 0xed, 0xef, 0x02, 0x9c, 0xa2, 0x68, 0x27,
		0x3f, 0xef, 0xdc, 0x07, 0x23, 0xb8, 0xc4, 0x38, 0xda, 0xd4, 0x3c, 0xfa, 0x82, 0x27, 0x5f, 0x98,
		0x9d, 0x82, 0x71, 0x44, 0x43, 0x84, 0x7f, 0x59, 0xb0, 0x7d, 0xa7, 0xcb, 0xdc, 0xd0, 0x09, 0x9f,
		0x7d, 0xd6, 0x13, 0x61, 0xfa, 0x63, 0x77, 0x73, 0x76, 0x2e, 0x60, 0x6c, 0x75, 0xfc, 0xd6, 0xaf,
		0xad, 0x40, 0xe0, 0xe2, 0x9a, 0x66, 0x59, 0x5f, 0xda, 0xa2, 0x84, 0xb2, 0x34, 0x04, 0xb2, 0x94,
		0x72, 0xd1, 0x9a, 0xa2, 0x1b, 0xea, 0x8d, 0x5a, 0x1b, 0xa9, 0xb1, 0xed, 0xaa, 0x71, 0xbb, 0xb8,
		0x41, 0x84, 0x3c, 0x3e, 0x16, 0x76, 0xf3, 0xda, 0x36, 0xa0, 0xdb, 0x0c, 0x5d, 0x5d, 0xe9, 0x18,
		0x6a, 0x6b, 0x04, 0xdc, 0x5d, 0x4b, 0x57, 0xaa, 0xb5, 0xdb, 0xea, 0x75, 0x03, 0xdb, 0x00, 0xdb,
		0x20, 0xbb, 0x6b, 0x37, 0x22, 0x5b, 0x53, 0x86, 0x55, 0x77, 0x95, 0x4e, 0xc7, 0xac, 0x69, 0xad,
		0x1b, 0x75, 0x5c, 0xa8, 0x12, 0xc8, 0xc5, 0x41, 0x4e, 0x57, 0xfe, 0x7d, 0xa7, 0x74, 0xe0, 0xdc,
		0xb6, 0x80, 0xa6, 0xd4, 0x6e, 0x35, 0x53, 0x57, 0xda, 0x90, 0x72, 0xf7, 0x40, 0x09, 0xd6, 0xb4,
		0x0b, 0xa7, 0xcf, 0x86, 0x09, 0x8b, 0x8a, 0x89, 0x14, 0xac, 0x6a, 0x07, 0x56, 0x37, 0x4d, 0xb5,
		0xfd, 0xe9, 0x02, 0x08, 0x6d, 0x46, 0xe8, 0x56, 0x6b, 0x2a, 0x66, 0xf5, 0xa3, 0xd2, 0x32, 0xa6,
		0xb1, 0xaf, 0xae, 0x76, 0x6a, 0xda, 0x27, 0x45, 0xff, 0x82, 0xb5, 0xc8, 0x89, 0x1e, 0xd6, 0xe7,
		0x0e, 0xfc, 0xd4, 0x46, 0xab, 0xfd, 0xe9, 0xc2, 0x6c, 0x68, 0xb5, 0xaa, 0xa1, 0xe9, 0xe6, 0x5d,
		0xbb, 0x5e, 0x35, 0xc0, 0xf1, 0xb7, 0x01, 0xd6, 0xfa, 0xa4, 0xe8, 0x1d, 0xc5, 0x5c, 0xdf, 0x63,
		0x10, 0xc8, 0xc5, 0x40, 0x0e, 0x99, 0xf8, 0x7e, 0xc0, 0x35, 0xb5, 0x6b, 0xb5, 0xa1, 0x98, 0x6d,
		0x5d, 0xb9, 0x51, 0x3f, 0xc3, 0xde, 0x92, 0xc1, 0x06, 0x63, 0xdb, 0x13, 0xb5, 0x76, 0xc3, 0xac,
		0x69, 0x2d, 0x43, 0xd7, 0x1a, 0x80, 0x69, 0x0b, 0x4c, 0x77, 0x0d, 0x43, 0xad, 0x55, 0x3b, 0x86,
		0xd9, 0x50, 0x3b, 0x86, 0xd2, 0x52, 0x74, 0xb3, 0xae, 0xb5, 0x10, 0x39, 0xe3, 0x41, 0x36, 0xec,
		0xb5, 0x04, 0xcc, 0x62, 0x61, 0xa6, 0x2b, 0x6d, 0x4d, 0x87, 0xe3, 0xdf, 0x0b, 0xb4, 0x75, 0xf7,
		0x69, 0x80, 0x5c, 0x0c, 0xe4, 0x10, 0x35, 0x13, 0x02, 0x67, 0x28, 0x7a, 0x73, 0xbc, 0x7b, 0x02,
		0xdc, 0x36, 0xe3, 0x86, 0x2c, 0x2a, 0x31, 0x62, 0x58, 0x9a, 0x7b, 0x02, 0xb6, 0xb6, 0xc1, 0x23,
		0x10, 0x8b, 0x81, 0xd8, 0xa4, 0xc3, 0x1e, 0x40, 0xdb, 0x0c, 0xda, 0x62, 0x6b, 0x30, 0x20, 0xb5,
		0x0d, 0x29, 0xbd, 0xda, 0x54, 0xa2, 0x20, 0x39, 0x2e, 0x9a, 0x07, 0xb0, 0x36, 0x83, 0x35, 0x29,
		0xf3, 0x05, 0x8c, 0xb6, 0x61, 0x34, 0xad, 0xda, 0x01, 0x98, 0xb6, 0xc0, 0x84, 0x64, 0x28, 0x09,
		0x5e, 0xe0, 0x59, 0x7b, 0xc2, 0x05, 0xe1, 0x70, 0x1f, 0x98, 0x16, 0x6e, 0x16, 0x02, 0xa8, 0xcd,
		0x40, 0x7d, 0x52, 0xf4, 0x8e, 0xaa, 0xb5, 0xca, 0xe6, 0xaa, 0x06, 0x86, 0x6b, 0x98, 0xb8, 0x86,
		0x89, 0x6b, 0x98, 0xb8, 0x86, 0x29, 0xe1, 0x1a, 0x26, 0xae, 0x61, 0x1e, 0x60, 0xd4, 0xcc, 0x5e,
		0xc3, 0x7c, 0x95, 0xa1, 0x68, 0x50, 0xaa, 0xba, 0xae, 0x17, 0x0e, 0x4d, 0x86, 0xd4, 0x09, 0x94,
		0x02, 0xfb, 0x3b, 0x7b, 0xb4, 0x06, 0x56, 0xf8, 0x3d, 0x5a, 0x0d, 0x27, 0xde, 0x80, 0xb9, 0xf6,
		0xf0, 0xaa, 0xa4, 0x6c, 0xd9, 0xfd, 0x93, 0xf1, 0x7f, 0x72, 0xc0, 0xc2, 0x60, 0xf2, 0xc5, 0xf0,
		0x6f, 0xe6, 0x86, 0xbe, 0xc3, 0x82, 0xe9, 0xd7, 0xcf, 0x27, 0xce, 0xe0, 0xc7, 0xc5, 0x89, 0x63,
		0x3f, 0x46, 0x7f, 0x05, 0xa1, 0x15, 0x32, 0x1a, 0xcb, 0xe6, 0x9f, 0x05, 0xbe, 0x11, 0x38, 0xe7,
		0x8f, 0x7a, 0xde, 0x84, 0xcc, 0x17, 0x81, 0x83, 0x2f, 0x05, 0xa1, 0xff, 0x64, 0x87, 0xee, 0x38,
		0x14, 0x57, 0xed, 0xbe, 0x59, 0xb5, 0xfb, 0x1d, 0x16, 0x46, 0x7f, 0x29, 0xd1, 0x03, 0x4d, 0x75,
		0xf0, 0xe3, 0xc2, 0x54, 0x47, 0x0f, 0x7c, 0x75, 0x98, 0x09, 0xe5, 0x98, 0xcc, 0xd2, 0xc8, 0xa6,
		0x79, 0xe7, 0x70, 0x4a, 0x56, 0x46, 0xc3, 0x71, 0x1a, 0xd7, 0xe4, 0xf2, 0x22, 0xe7, 0x30, 0xd3,
		0xbb, 0xd1, 0x65, 0xce, 0x81, 0x08, 0xef, 0x42, 0x8b, 0xba, 0xfb, 0x4c, 0xcd, 0xa4, 0x84, 0xdd,
		0x6d, 0x16, 0x46, 0x8b, 0x04, 0xde, 0x5d, 0x3e, 0xac, 0xab, 0xad, 0x3b, 0x3e, 0x8d, 0xe9, 0x75,
		0x59, 0x10, 0x3a, 0xee, 0xd0, 0x69, 0xcb, 0x56, 0xb7, 0xeb, 0xb3, 0x20, 0xa0, 0xb3, 0x97, 0x89,
		0x5d, 0xaf, 0x7b, 0x08, 0xd1, 0x04, 0xd3, 0x96, 0x50, 0x20, 0x2f, 0x9d, 0x20, 0xa2, 0x64, 0x82,
		0xe8, 0x52, 0x09, 0xa2, 0x12, 0x30, 0xe1, 0xa5, 0x11, 0x84, 0x67, 0x57, 0x29, 0x94, 0x42, 0xc8,
		0x16, 0x13, 0x27, 0x2f, 0x79, 0x30, 0x2b, 0x75, 0x30, 0xf8, 0x71, 0x21, 0x93, 0x5b, 0xc1, 0x94,
		0x25, 0xbc, 0x27, 0x1c, 0xb3, 0x6d, 0x85, 0x51, 0xce, 0x4b, 0x2e, 0x17, 0x95, 0x5e, 0xbf, 0xfe,
		0x7a, 0x2a, 0x7f, 0xb0, 0xe4, 0x5e, 0x55, 0xbe, 0xb9, 0xff, 0xe7, 0xec, 0xf7, 0xca, 0xcb, 0xd5,
		0x9b, 0x7f, 0x2e, 0x5f, 0x96, 0xbf, 0xf9, 0x6b, 0xdd, 0xaf, 0x9d, 0xfd, 0x7e, 0xf9, 0x72, 0xb5,
		0xe1, 0x27, 0x17, 0x2f, 0x57, 0x7b, 0x8e, 0x71, 0xfe, 0xf2, 0x7a, 0xe5, 0x57, 0xa3, 0xef, 0x97,
		0x37, 0xbd, 0xa0, 0xb2, 0xe1, 0x05, 0xef, 0x36, 0xbd, 0xe0, 0xdd, 0x86, 0x17, 0x6c, 0x7c, 0x4b,
		0xe5, 0x0d, 0x2f, 0x38, 0x7f, 0xf9, 0xb5, 0xf2, 0xfb, 0xaf, 0xd7, 0xff, 0xea, 0xc5, 0xcb, 0x9b,
		0x5f, 0x9b, 0x7e, 0x76, 0xf9, 0xf2, 0xeb, 0xea, 0xcd, 0x9b, 0x93, 0xd7, 0x67, 0xe5, 0xaf, 0xa7,
		0xf2, 0xfb, 0xfb, 0x5f, 0x67, 0x5f, 0x4f, 0xe5, 0xb3, 0xfb, 0xe8, 0x37, 0xef, 0x7f, 0x7d, 0x3d,
		0x93, 0x3f, 0x4c, 0xbe, 0x8c, 0xfe, 0xff, 0x0d, 0xdd, 0xb2, 0xbe, 0xa7, 0xb4, 0x47, 0xad, 0xa3,
		0x7e, 0x16, 0x66, 0x94, 0xff, 0x07, 0xab, 0xcc, 0xb8, 0x55, 0xfe, 0x0f, 0xa1, 0x59, 0x66, 0x45,
		0xb7, 0xf8, 0x5d, 0x08, 0x93, 0x1d, 0x07, 0x18, 0x39, 0x60, 0x61, 0x2a, 0xa4, 0x76, 0xfe, 0x79,
		0xe0, 0xb7, 0xe0, 0xb7, 0xe0, 0xb7, 0x85, 0xe5, 0xb7, 0x7d, 0x66, 0xf5, 0x68, 0xcb, 0x78, 0x4d,
		0xb9, 0xed, 0x25, 0x2d, 0xb7, 0x1d, 0x8b, 0xab, 0xf6, 0x50, 0x48, 0xbd, 0xea, 0xb2, 0x9e, 0xe3,
		0xb2, 0xee, 0x48, 0x55, 0x9d, 0x7c, 0x73, 0x8e, 0xac, 0x6f, 0xfd, 0xc1, 0xf4, 0xfb, 0x43, 0x6d,
		0x34, 0xa7, 0xb1, 0xa5, 0xd7, 0xf7, 0xfe, 0x96, 0xfb, 0xd6, 0x37, 0xd6, 0x17, 0x1b, 0x53, 0xe6,
		0x9e, 0x83, 0x58, 0x82, 0x58, 0x82, 0x58, 0x52, 0x6c, 0xad, 0x84, 0xdc, 0x1d, 0xcc, 0xbb, 0x04,
		0xca, 0x90, 0xa2, 0x5b, 0xee, 0x03, 0xfd, 0xd9, 0x1a, 0x01, 0x07, 0x81, 0x9a, 0x8e, 0x2b, 0xae,
		0x52, 0xe5, 0xb0, 0x8a, 0x24, 0x7d, 0x09, 0xde, 0xe9, 0xf8, 0x37, 0xbe, 0x65, 0x47, 0x61, 0xa2,
		0xee, 0x3c, 0x38, 0x61, 0x20, 0xf0, 0x41, 0x2d, 0xf6, 0x60, 0x85, 0xce, 0x8f, 0xe8, 0xb3, 0xf4,
		0xac, 0x7e, 0xc0, 0xe8, 0x4f, 0xa4, 0x09, 0xa8, 0x46, 0xda, 0xb4, 0x7e, 0x8a, 0x9f, 0xda, 0xb3,
		0xd3, 0xca, 0xfb, 0xf3, 0xcb, 0x73, 0x4c, 0x70, 0x2a, 0x6e, 0x9a, 0x7e, 0xb4, 0x5c, 0x89, 0x1f,
		0x81, 0x3d, 0x10, 0x40, 0x47, 0xa3, 0x51, 0x41, 0x3e, 0x41, 0x3e, 0x41, 0x3e, 0x0b, 0x4b, 0x3e,
		0x09, 0x7d, 0xc0, 0xbc, 0x1f, 0x38, 0x07, 0xe3, 0x04, 0xe3, 0x04, 0xe3, 0x8c, 0x37, 0xb5, 0x17,
		0xef, 0x30, 0xb7, 0x20, 0x9b, 0x99, 0x20, 0x9b, 0x82, 0xf6, 0xd4, 0x26, 0x23, 0x83, 0x74, 0x82,
		0x74, 0x82, 0x74, 0x82, 0x74, 0x82, 0x74, 0x82, 0x74, 0x82, 0x74, 0x82, 0x74, 0x82, 0x74, 0x1e,
		0x90, 0x74, 0x12, 0x85, 0x8b, 0x86, 0x13, 0x84, 0xd5, 0x30, 0xf4, 0x69, 0x43, 0x46, 0xd3, 0x71,
		0x95, 0x3e, 0x8b, 0xc2, 0x2e, 0xb1, 0x09, 0x45, 0xab, 0x6b, 0x6e, 0xe4, 0xb3, 0xf7, 0x95, 0xca,
		0xc5, 0x65, 0xa5, 0x72, 0x7a, 0xf9, 0xee, 0xf2, 0xf4, 0xc3, 0xf9, 0xf9, 0xd9, 0x05, 0x65, 0x1f,
		0xb5, 0x92, 0xe6, 0x77, 0x99, 0xcf, 0xba, 0xd7, 0xcf, 0xa5, 0x2b, 0xc9, 0x7d, 0xea, 0xf7, 0x45,
		0x0c, 0x7d, 0x17, 0x30, 0x9f, 0x74, 0x0d, 0x64, 0x23, 0x1d, 0xf9, 0xee, 0x0d, 0xe4, 0xbe, 0xf3,
		0xe8, 0x08, 0xc8, 0x47, 0x66, 0x43, 0x23, 0x21, 0x41, 0x42, 0x82, 0x84, 0xa4, 0xb0, 0x09, 0xc9,
		0x93, 0xe3, 0x86, 0xef, 0x91, 0x91, 0x20, 0x23, 0x41, 0x46, 0x72, 0xf8, 0x8c, 0xa4, 0x7c, 0x8e,
		0x43, 0x17, 0x05, 0x4f, 0x49, 0x32, 0x41, 0x3c, 0xfb, 0xcc, 0x7d, 0x18, 0x1e, 0x9f, 0x26, 0x66,
		0x9d, 0xe3, 0x71, 0x41, 0x39, 0x41, 0x39, 0x41, 0x39, 0x0b, 0x4d, 0x39, 0xcf, 0x2e, 0x04, 0x70,
		0xce, 0x0b, 0x70, 0x4e, 0x70, 0x4e, 0x70, 0xce, 0x78, 0x53, 0x7b, 0x71, 0x7e, 0xfe, 0x0e, 0xac,
		0xb3, 0xe0, 0xac, 0x93, 0x28, 0x66, 0x08, 0xac, 0x72, 0x2a, 0xb0, 0xba, 0xa9, 0x00, 0xa7, 0x3c,
		0x5f, 0xcd, 0xf4, 0xf2, 0xc3, 0xd9, 0xd5, 0x6a, 0x75, 0xc9, 0x3f, 0xdd, 0xe8, 0x67, 0xef, 0xcb,
		0xa7, 0xa7, 0x6b, 0x7e, 0xf8, 0xfb, 0x4a, 0xed, 0x49, 0xf1, 0x55, 0x4a, 0x45, 0x57, 0x27, 0x4d,
		0xb3, 0x2a, 0x69, 0x6a, 0xd5, 0x48, 0x57, 0xaa, 0x90, 0x0a, 0x99, 0x6c, 0x78, 0xb3, 0x23, 0xcc,
		0xa1, 0x07, 0xe3, 0xe9, 0xa5, 0xcf, 0xa2, 0xa7, 0x23, 0x23, 0x8f, 0x46, 0x1e, 0x8d, 0x3c, 0xba,
		0xb0, 0x79, 0xb4, 0x33, 0x90, 0x27, 0xae, 0x40, 0x0e, 0xa3, 0xa7, 0x08, 0x28, 0xc9, 0xf0, 0x81,
		0x70, 0xcc, 0x31, 0x12, 0x47, 0x43, 0xde, 0xa8, 0xb7, 0xc6, 0x96, 0xc1, 0x15, 0x90, 0x75, 0x09,
		0x92, 0x2d, 0xc4, 0x81, 0x9d, 0x8a, 0x8c, 0x91, 0x96, 0x9c, 0x91, 0x7a, 0xde, 0x9b, 0x5e, 0xfe,
		0x2b, 0x50, 0xe6, 0x48, 0x45, 0xee, 0x58, 0x31, 0x81, 0xf2, 0x79, 0x05, 0x46, 0x90, 0x89, 0xf4,
		0x41, 0xdc, 0xa8, 0xf7, 0x59, 0x6e, 0x09, 0x23, 0x30, 0x70, 0x39, 0x5d, 0xe6, 0x86, 0x4e, 0xf8,
		0x4c, 0x5b, 0xa6, 0x69, 0x85, 0x1b, 0x88, 0x88, 0x5f, 0xea, 0xf8, 0xad, 0x5f, 0x5b, 0x81, 0x40,
		0x29, 0x62, 0x02, 0x94, 0xda, 0x36, 0xdb, 0xba, 0x66, 0x68, 0x35, 0xad, 0x21, 0x4a, 0x89, 0x18,
		0xfa, 0x9b, 0x40, 0x58, 0x44, 0x96, 0xd2, 0xeb, 0x3e, 0xa5, 0xb6, 0xcd, 0xea, 0x9d, 0x71, 0x8b,
		0x06, 0x5d, 0x5b, 0x21, 0xfa, 0xa8, 0xa3, 0x27, 0xec, 0x76, 0x84, 0xd4, 0x5a, 0xb3, 0x0d, 0x88,
		0xb6, 0x43, 0xf4, 0x11, 0x10, 0xed, 0x82, 0xa8, 0x65, 0xaa, 0xc0, 0x68, 0x3b, 0x46, 0x8d, 0xb2,
		0x01, 0x88, 0x76, 0x84, 0x7f, 0x15, 0xbd, 0x96, 0xb7, 0x23, 0xa4, 0x77, 0x3e, 0xc1, 0x88, 0xb6,
		0x43, 0x64, 0xd4, 0x80, 0xd0, 0x76, 0x84, 0xee, 0xea, 0x6d, 0x74, 0x28, 0xc5, 0xae, 0x9b, 0x70,
		0x4b, 0x2f, 0x05, 0xc3, 0x7d, 0x17, 0x71, 0x0d, 0x7f, 0x96, 0xc6, 0xc7, 0x0e, 0x1c, 0x37, 0xa2,
		0xd8, 0x81, 0x5b, 0x7a, 0x00, 0x76, 0xe0, 0x68, 0x23, 0x1f, 0x7a, 0xfd, 0xa0, 0xd7, 0x0f, 0x7a,
		0xfd, 0x90, 0x10, 0x05, 0xf4, 0xfa, 0x81, 0x55, 0xa2, 0xd7, 0x4f, 0x7a, 0xfc, 0x55, 0x68, 0x9b,
		0x9f, 0xcd, 0x8f, 0x02, 0xab, 0x05, 0xab, 0x05, 0xab, 0x2d, 0x2c, 0xab, 0x45, 0x87, 0x9f, 0x52,
		0xfe, 0x22, 0x8a, 0xc8, 0xe6, 0x3e, 0xab, 0x8f, 0x40, 0x04, 0x41, 0x04, 0x41, 0x04, 0x29, 0xb6,
		0x2e, 0x82, 0xbe, 0x3e, 0xc4, 0x7f, 0x70, 0xd5, 0x77, 0x3f, 0x23, 0xc4, 0x55, 0xdf, 0x0d, 0x53,
		0x8b, 0xbe, 0x3e, 0x69, 0xba, 0x69, 0xfa, 0xd1, 0x32, 0x23, 0x74, 0xbc, 0x3a, 0xe0, 0xf2, 0x29,
		0x55, 0x5d, 0xd7, 0x0b, 0x87, 0x37, 0x23, 0x49, 0x56, 0x4c, 0x29, 0xb0, 0xbf, 0xb3, 0x47, 0x6b,
		0x30, 0xcd, 0x26, 0x06, 0xcc, 0xb5, 0x87, 0x44, 0x51, 0xb6, 0xec, 0xfe, 0xc9, 0xf8, 0xbf, 0x51,
		0xee, 0x30, 0xfe, 0x62, 0xf8, 0x37, 0x73, 0x43, 0xdf, 0x61, 0xc1, 0xf4, 0xeb, 0xe7, 0x93, 0x28,
		0xea, 0x9d, 0x04, 0xa1, 0x15, 0x72, 0xe6, 0x0f, 0xc9, 0xe1, 0x4d, 0xf6, 0xca, 0x84, 0x13, 0x42,
		0x79, 0xdb, 0xbb, 0xf4, 0xf7, 0x77, 0xc6, 0x2f, 0x03, 0x13, 0x18, 0xc3, 0x84, 0xc1, 0xbc, 0x7d,
		0x7b, 0xf2, 0xf6, 0xed, 0xc9, 0xc8, 0x0e, 0x4e, 0xc2, 0xe7, 0x01, 0xfb, 0xd7, 0x6f, 0xd5, 0x5a,
		0xc3, 0x54, 0xdb, 0x9f, 0x2e, 0x7e, 0x93, 0x3c, 0x5f, 0xda, 0xf0, 0xf3, 0xa6, 0xfa, 0x59, 0xa9,
		0xff, 0x46, 0xc0, 0x77, 0xa8, 0x69, 0xfa, 0x3c, 0x3d, 0x1f, 0x62, 0x4d, 0xc4, 0x21, 0x45, 0x91,
		0xf2, 0x05, 0x32, 0xce, 0x37, 0x19, 0x99, 0xc8, 0xc2, 0xeb, 0x2c, 0xb0, 0x7d, 0x67, 0x40, 0xe6,
		0xb5, 0xa4, 0xc5, 0x03, 0x36, 0x3f, 0x2e, 0xe4, 0xbe, 0xf5, 0xcc, 0x7c, 0xa9, 0xe7, 0xb0, 0x7e,
		0x37, 0x90, 0x2c, 0x9f, 0x49, 0x3f, 0xac, 0xbe, 0xd3, 0x95, 0xa2, 0xc9, 0x96, 0xc2, 0xef, 0x4c,
		0xaa, 0xd6, 0x1a, 0x52, 0x84, 0x8d, 0xe4, 0x04, 0x7f, 0xba, 0xd1, 0x2b, 0x22, 0xe4, 0x86, 0x10,
		0x51, 0xd9, 0x82, 0x80, 0xcc, 0x72, 0xde, 0x6c, 0xbb, 0x73, 0x10, 0x12, 0xb2, 0x7f, 0x91, 0x69,
		0xe5, 0x82, 0x15, 0xf3, 0xce, 0x52, 0x3e, 0x82, 0xff, 0xab, 0x74, 0xc9, 0x4f, 0xd2, 0xd8, 0x46,
		0x44, 0x32, 0x68, 0xc9, 0x05, 0x87, 0xd9, 0x97, 0x82, 0xd0, 0x7f, 0xb2, 0x43, 0x77, 0xec, 0x31,
		0xaa, 0x76, 0xdf, 0xac, 0xda, 0xfd, 0x0e, 0x0b, 0xa3, 0xbf, 0x94, 0xe8, 0x09, 0xa6, 0x1a, 0x3d,
		0xe1, 0x55, 0x3a, 0x93, 0x9a, 0x60, 0x5a, 0x4a, 0xfd, 0x72, 0xe2, 0xa9, 0x98, 0x49, 0xdb, 0xe5,
		0x84, 0x18, 0x4e, 0x15, 0xec, 0x84, 0x2f, 0xe7, 0x95, 0x1e, 0x29, 0xa4, 0x46, 0x6a, 0x69, 0x91,
		0xca, 0xe1, 0x93, 0x4b, 0x87, 0xe4, 0x3e, 0x5d, 0x80, 0x34, 0x98, 0x2e, 0x55, 0xaf, 0x3b, 0x7c,
		0xcd, 0x09, 0x4a, 0xf6, 0xc4, 0x7e, 0x39, 0xa7, 0x7a, 0x62, 0x82, 0xe3, 0xf1, 0x38, 0xa7, 0x85,
		0x6f, 0x51, 0x92, 0x2d, 0x4e, 0xca, 0x45, 0x2a, 0x6a, 0xb1, 0xa6, 0x91, 0x58, 0x90, 0xea, 0xfe,
		0xe9, 0xa4, 0x16, 0xb4, 0x3a, 0xff, 0x61, 0x85, 0x11, 0xde, 0x45, 0x3e, 0x1d, 0xa8, 0xcb, 0x82,
		0xd0, 0x71, 0x87, 0xec, 0x47, 0x7e, 0xb4, 0x6c, 0x01, 0xdd, 0xf0, 0x96, 0x1e, 0x80, 0xed, 0xc2,
		0xac, 0xb9, 0x09, 0x91, 0x49, 0x9d, 0x84, 0xed, 0xc2, 0xb4, 0x92, 0x35, 0xe9, 0x28, 0xb6, 0x0b,
		0x1f, 0x2d, 0x9b, 0xf8, 0x46, 0x85, 0x74, 0x74, 0xc7, 0xa8, 0xe7, 0x0f, 0x54, 0x2e, 0x9f, 0xd3,
		0x2c, 0xbf, 0xbc, 0xf9, 0xe7, 0xfc, 0xa5, 0x90, 0xe7, 0x78, 0x77, 0xc3, 0x92, 0xbd, 0x83, 0xa4,
		0x54, 0x34, 0x85, 0x76, 0x9f, 0x63, 0x3a, 0xee, 0xf3, 0x83, 0x17, 0xca, 0x9e, 0x2d, 0xdb, 0xde,
		0xe3, 0x20, 0x5a, 0x72, 0xac, 0x2b, 0xf7, 0x99, 0xd5, 0x8b, 0x1e, 0xf2, 0x92, 0xa7, 0x5e, 0xbe,
		0x8b, 0x1c, 0x43, 0x7e, 0xb4, 0x82, 0xbf, 0x84, 0x33, 0x99, 0xd1, 0x53, 0x40, 0x67, 0x40, 0x67,
		0x40, 0x67, 0x40, 0x67, 0x40, 0x67, 0x40, 0x67, 0x40, 0x67, 0x40, 0x67, 0x28, 0xe8, 0x0c, 0x0b,
		0xbf, 0x33, 0x3f, 0xa4, 0xf4, 0x59, 0x53, 0x7f, 0x35, 0x1b, 0x1a, 0xc4, 0x05, 0xc4, 0x05, 0xc4,
		0xa5, 0xb0, 0xc4, 0x65, 0xea, 0x08, 0x50, 0x4e, 0x9a, 0xd0, 0x3e, 0x85, 0xb5, 0xbd, 0x5a, 0x46,
		0xf7, 0x02, 0xf5, 0xa4, 0x67, 0x6f, 0x3c, 0xd5, 0x7a, 0xd2, 0x67, 0xe7, 0xef, 0x2e, 0x50, 0x4d,
		0xf8, 0xb0, 0x7e, 0x71, 0xbd, 0x15, 0xa4, 0x59, 0x52, 0x5a, 0x60, 0x27, 0xad, 0x22, 0x98, 0x01,
		0x8a, 0x4a, 0x67, 0x3a, 0x7c, 0xa1, 0xa8, 0xf4, 0x9e, 0x40, 0x29, 0xc6, 0xad, 0xa2, 0x1b, 0x5f,
		0xda, 0x0a, 0x4a, 0x4a, 0xef, 0x0d, 0x95, 0x59, 0xd5, 0x51, 0x42, 0x71, 0x2f, 0xa0, 0xd4, 0xf6,
		0xa7, 0x0a, 0x90, 0xda, 0x13, 0xa9, 0x0b, 0x20, 0xb5, 0x0f, 0x52, 0x8d, 0x46, 0x1d, 0xab, 0x6f,
		0x2f, 0xa4, 0x9a, 0xed, 0x46, 0x07, 0x48, 0xed, 0x83, 0x94, 0xae, 0xd5, 0x50, 0x08, 0x7f, 0x2f,
		0xa4, 0x3e, 0x35, 0xaa, 0x2d, 0x14, 0xc7, 0x45, 0x83, 0xdd, 0x7d, 0xac, 0x07, 0x9b, 0x28, 0x5c,
		0x1f, 0x73, 0x5c, 0xa8, 0x46, 0xc8, 0x99, 0xd6, 0xb9, 0xb1, 0xb1, 0x8d, 0xc2, 0x8d, 0x26, 0xb6,
		0x51, 0x96, 0x1e, 0x80, 0x6d, 0x14, 0x62, 0x57, 0x8a, 0xf3, 0x1f, 0x38, 0xff, 0xb1, 0x06, 0x10,
		0x9c, 0xff, 0x00, 0x75, 0xc9, 0x36, 0x75, 0x11, 0x74, 0x92, 0x75, 0xf9, 0x01, 0x20, 0x31, 0x20,
		0x31, 0x20, 0x31, 0x20, 0x31, 0x20, 0x31, 0x20, 0x31, 0x20, 0x31, 0x20, 0x31, 0x28, 0xfa, 0xb6,
		0xb6, 0x2e, 0x4b, 0xbf, 0x3c, 0x2e, 0x3c, 0x75, 0xb0, 0x9a, 0x6f, 0x5c, 0x45, 0x61, 0xac, 0x90,
		0xd1, 0x15, 0x75, 0x18, 0x0d, 0x97, 0xb1, 0x9a, 0x0e, 0x65, 0xd4, 0x74, 0xc8, 0x0c, 0x11, 0x44,
		0x4d, 0x87, 0xb8, 0x9f, 0x0b, 0x35, 0x1d, 0x90, 0x3f, 0x22, 0x7f, 0x44, 0xfe, 0x88, 0xfc, 0x11,
		0xf9, 0x23, 0xf2, 0xc7, 0xc3, 0xe5, 0x8f, 0x28, 0x69, 0x80, 0x68, 0x8e, 0x68, 0x8e, 0x68, 0x8e,
		0x68, 0x8e, 0x68, 0x8e, 0x68, 0x8e, 0x68, 0x8e, 0x1b, 0xfd, 0x88, 0xdb, 0x88, 0xdb, 0x88, 0xdb,
		0x19, 0x8f, 0xdb, 0xb8, 0xd1, 0x8f, 0x1b, 0xfd, 0x4b, 0x43, 0xe3, 0x46, 0xff, 0xb6, 0x87, 0xe0,
		0x46, 0x7f, 0x76, 0xfc, 0xe2, 0x7a, 0x2b, 0xc0, 0x8d, 0xfe, 0xa3, 0x31, 0x03, 0xdc, 0xe8, 0xcf,
		0x74, 0xf8, 0xc2, 0x8d, 0xfe, 0x3d, 0x81, 0xc2, 0x8d, 0xfe, 0xf8, 0x50, 0xe1, 0x46, 0xff, 0xbe,
		0x40, 0xe1, 0x46, 0x7f, 0x0c, 0xa4, 0x70, 0xa3, 0x7f, 0x2f, 0xa4, 0x70, 0xa3, 0x7f, 0x5f, 0xa4,
		0x70, 0xa3, 0x7f, 0x5f, 0xa4, 0x70, 0xa3, 0x7f, 0x5f, 0xa4, 0x70, 0xa3, 0x5f, 0x42, 0x17, 0xed,
		0x34, 0x2c, 0x1e, 0x17, 0xda, 0xb1, 0x8b, 0x80, 0x5d, 0x84, 0x0d, 0x0f, 0xc0, 0x2e, 0x02, 0x95,
		0xed, 0x62, 0xf7, 0x1f, 0xbb, 0xff, 0xeb, 0x47, 0xc7, 0xee, 0x3f, 0x7f, 0xe4, 0xc6, 0x7d, 0x6e,
		0xc4, 0x70, 0xc4, 0x70, 0xc4, 0x70, 0xc4, 0x70, 0xc4, 0x70, 0xc4, 0xf0, 0xd4, 0x62, 0x38, 0xae,
		0x33, 0x6f, 0xb8, 0xce, 0x3c, 0xba, 0xc5, 0x7b, 0xa8, 0xdb, 0xcc, 0xa9, 0xb6, 0xc5, 0x67, 0x3f,
		0x43, 0xdf, 0x92, 0x9f, 0xdc, 0x20, 0xb4, 0xbe, 0xf5, 0xf9, 0x1c, 0x6f, 0xe9, 0xef, 0xef, 0x8c,
		0x7f, 0x71, 0x12, 0xde, 0x31, 0x7e, 0xfb, 0xf6, 0xe4, 0xed, 0xdb, 0xf1, 0xdd, 0xf4, 0x93, 0xf0,
		0x79, 0xc0, 0xfe, 0xf5, 0x5b, 0xb5, 0xd6, 0x30, 0x1b, 0xe5, 0xdf, 0x24, 0xcf, 0x97, 0x36, 0xfc,
		0xb4, 0xa9, 0x7e, 0x56, 0xea, 0xbf, 0x65, 0xfc, 0x4a, 0xf2, 0x10, 0xe9, 0x63, 0xba, 0x90, 0xcc,
		0x33, 0x15, 0x99, 0x48, 0x56, 0xea, 0x2c, 0xb0, 0x7d, 0x67, 0x40, 0x5a, 0xf7, 0x62, 0x6a, 0xa8,
		0xcd, 0x6a, 0x4d, 0xee, 0x5b, 0xcf, 0xcc, 0x97, 0x7a, 0x0e, 0xeb, 0x77, 0x03, 0xc9, 0xf2, 0x99,
		0xf4, 0xc3, 0xea, 0x3b, 0x5d, 0x29, 0x9a, 0x69, 0x29, 0xfc, 0xce, 0xa4, 0x6a, 0xad, 0x21, 0x45,
		0xd0, 0x48, 0x4e, 0x20, 0x35, 0xca, 0x92, 0xe7, 0xff, 0xe9, 0x0e, 0xf1, 0xa1, 0x32, 0x03, 0x01,
		0x0c, 0x7c, 0xde, 0x62, 0xbb, 0x73, 0xf8, 0x11, 0xf2, 0x02, 0x91, 0xf4, 0x7b, 0xc1, 0x80, 0xb9,
		0xa6, 0x28, 0x1f, 0x01, 0xff, 0x55, 0xba, 0x84, 0x27, 0x69, 0x44, 0x23, 0x22, 0x16, 0x94, 0x84,
		0xa2, 0xc4, 0x55, 0xa0, 0xc4, 0x7f, 0xb2, 0x43, 0x77, 0xec, 0x29, 0xaa, 0x76, 0xdf, 0xac, 0xda,
		0xfd, 0x0e, 0x0b, 0xa3, 0xbf, 0x94, 0x68, 0x7c, 0xb3, 0x51, 0x4e, 0x66, 0x60, 0xf1, 0x27, 0x34,
		0xc1, 0x94, 0x94, 0x1e, 0x07, 0xfd, 0x20, 0xf1, 0x44, 0xcc, 0x72, 0xb7, 0x68, 0x94, 0x84, 0x06,
		0xc1, 0x57, 0x4e, 0x85, 0x5b, 0x9f, 0xa1, 0xd0, 0x63, 0xa8, 0xf5, 0x17, 0x2a, 0x6f, 0x4f, 0xae,
		0xaf, 0x90, 0x3b, 0x74, 0x01, 0xfa, 0x49, 0xba, 0x04, 0x9d, 0xb7, 0xfc, 0x49, 0xc9, 0x9e, 0xd8,
		0x2f, 0x51, 0x89, 0xa3, 0xf1, 0x78, 0x19, 0xab, 0x71, 0x74, 0x8a, 0x1a, 0x47, 0x99, 0x11, 0x47,
		0x51, 0xe3, 0x28, 0xed, 0x45, 0x3e, 0x4b, 0xe7, 0xdd, 0xae, 0xdc, 0xb7, 0xbe, 0xb1, 0xbe, 0xfc,
		0x63, 0x7c, 0x80, 0x9f, 0xfa, 0x5e, 0xe5, 0xd2, 0x03, 0xb0, 0xa7, 0x92, 0x35, 0x37, 0x21, 0x32,
		0xa3, 0x93, 0xb0, 0xa7, 0x92, 0x56, 0xb2, 0x26, 0x1d, 0xc7, 0x9e, 0xca, 0xa0, 0x1f, 0x8c, 0xfc,
		0x01, 0x6e, 0x56, 0xd2, 0x22, 0xfb, 0xe4, 0xb8, 0xe1, 0xbb, 0xb2, 0xc0, 0x5b, 0x29, 0x97, 0xb8,
		0x59, 0x39, 0x7b, 0xe3, 0xe9, 0xde, 0xac, 0xc4, 0xbd, 0xca, 0x03, 0x7b, 0xc4, 0xf5, 0x36, 0x90,
		0xe6, 0xbd, 0xca, 0xb3, 0xd3, 0xca, 0xfb, 0xf3, 0x4b, 0xdc, 0xac, 0x3c, 0x6c, 0x80, 0x15, 0x3f,
		0x6a, 0x51, 0x6f, 0x56, 0x32, 0xf7, 0xe9, 0x91, 0xf9, 0x16, 0xb1, 0xde, 0xbf, 0xc2, 0x10, 0x2a,
		0x02, 0xc6, 0x56, 0xdc, 0xa7, 0x47, 0x71, 0x37, 0x2a, 0x0d, 0xaf, 0x13, 0xfa, 0x8e, 0xfb, 0x20,
		0xd4, 0xd5, 0x94, 0x4e, 0xa3, 0x39, 0x50, 0xdb, 0x9f, 0x2a, 0xa6, 0xf2, 0xb9, 0xdd, 0x50, 0x6b,
		0xaa, 0x61, 0xb6, 0xee, 0x1a, 0x8d, 0x92, 0x40, 0xf7, 0x79, 0x16, 0x3d, 0x52, 0xd7, 0xee, 0x0c,
		0x45, 0x37, 0xab, 0x0d, 0x45, 0x37, 0x44, 0x3e, 0xac, 0x3c, 0xfe, 0x7c, 0x17, 0xe9, 0x7d, 0xbe,
		0x77, 0xc3, 0x47, 0x36, 0x53, 0x7a, 0xda, 0xe5, 0xf0, 0x3e, 0x4d, 0xcb, 0xd0, 0xb5, 0xf6, 0x17,
		0xb3, 0x51, 0xbd, 0x56, 0x1a, 0xa6, 0xda, 0xaa, 0xab, 0xb5, 0xaa, 0xa1, 0xe9, 0x22, 0x9f, 0xfb,
		0x3e, 0x7a, 0x6e, 0x4b, 0x1b, 0x3d, 0x52, 0xcc, 0x0d, 0x1e, 0x41, 0x31, 0xbc, 0x64, 0x78, 0xea,
		0x30, 0xa5, 0x13, 0xb8, 0xac, 0x36, 0x4d, 0x88, 0x10, 0x36, 0x3d, 0x7d, 0xea, 0xa2, 0xd1, 0x5d,
		0x49, 0xef, 0x44, 0x3e, 0x6b, 0xd5, 0x67, 0x08, 0x65, 0x0d, 0xeb, 0x16, 0x31, 0x77, 0xc5, 0xfa,
		0xed, 0x11, 0x6a, 0x62, 0xdc, 0x57, 0xd2, 0x7b, 0x81, 0x8f, 0x59, 0xf0, 0x84, 0x57, 0xd2, 0xd9,
		0x91, 0xf0, 0x15, 0x34, 0xa1, 0xdd, 0x4b, 0x40, 0x42, 0x27, 0x37, 0x9e, 0x8f, 0x19, 0x84, 0x96,
		0x1f, 0x8a, 0xd5, 0xa9, 0x57, 0x1f, 0x01, 0xa5, 0x9a, 0x1b, 0x54, 0x28, 0xd5, 0x4b, 0x0f, 0x80,
		0x52, 0x4d, 0xec, 0x58, 0xa1, 0x54, 0x43, 0xa9, 0x5e, 0x41, 0x17, 0x4a, 0xf5, 0xdc, 0x1b, 0x87,
		0x52, 0xcd, 0x67, 0xb4, 0x50, 0xaa, 0xe3, 0xda, 0x00, 0x94, 0xea, 0x8c, 0xe5, 0x68, 0x12, 0x94,
		0x6a, 0xc2, 0xf0, 0x05, 0xa5, 0x7a, 0xa3, 0x9e, 0x06, 0xa5, 0x9a, 0xff, 0x61, 0x50, 0xaa, 0x05,
		0x3d, 0x17, 0x4a, 0xf5, 0x56, 0xd7, 0x00, 0xa5, 0x5a, 0xc0, 0x03, 0xa1, 0x54, 0x67, 0x87, 0xaf,
		0x40, 0xa9, 0xde, 0x4b, 0x40, 0x82, 0x52, 0xcd, 0xf3, 0x31, 0x43, 0xdf, 0xea, 0xf5, 0x1c, 0x5b,
		0xb6, 0xfb, 0x56, 0x10, 0xd0, 0xab, 0xd4, 0x8b, 0xc3, 0x43, 0xa1, 0xe6, 0x06, 0x14, 0x0a, 0xf5,
		0xd2, 0x03, 0xa0, 0x50, 0x13, 0x3b, 0x54, 0xc1, 0x0a, 0x75, 0x68, 0x0b, 0x90, 0xa7, 0x09, 0xc5,
		0x1b, 0x41, 0xc2, 0xa9, 0x80, 0xfc, 0x5e, 0xa4, 0x50, 0x3a, 0x15, 0xc7, 0x04, 0xf1, 0xcd, 0xd4,
		0xe4, 0x30, 0xf1, 0x32, 0x98, 0x80, 0x1c, 0x4a, 0xa8, 0xfe, 0x39, 0x9d, 0xda, 0x4b, 0x4c, 0x2d,
		0x18, 0x38, 0x18, 0xf8, 0xc1, 0x19, 0x78, 0x28, 0xec, 0x8c, 0xc8, 0x6c, 0x68, 0x30, 0x6f, 0x30,
		0x6f, 0x30, 0xef, 0xc2, 0x32, 0xef, 0x27, 0xc7, 0x0d, 0xdf, 0x83, 0x77, 0x83, 0x77, 0x83, 0x77,
		0x1f, 0x9e, 0x77, 0x97, 0xcf, 0xcf, 0x31, 0xb9, 0x60, 0xde, 0x04, 0xd3, 0x40, 0x58, 0xdb, 0x72,
		0x65, 0x6c, 0x9f, 0xf5, 0x98, 0xcf, 0x5c, 0xfb, 0xa8, 0x4e, 0xea, 0xe9, 0x37, 0x35, 0xe9, 0xdd,
		0xe9, 0xbb, 0xf2, 0x95, 0xd4, 0x6c, 0x37, 0x3a, 0x52, 0xc3, 0xfa, 0xc6, 0xfa, 0x52, 0x27, 0xb4,
		0xec, 0xbf, 0x24, 0xc5, 0xb5, 0xbd, 0xae, 0xe3, 0x3e, 0xbc, 0x15, 0x71, 0x06, 0x42, 0x10, 0x87,
		0x5b, 0xc7, 0xe5, 0x66, 0xf3, 0x22, 0x68, 0x6d, 0x8b, 0xa6, 0x75, 0x6b, 0xe9, 0xdd, 0x5e, 0x13,
		0x07, 0x2f, 0x83, 0xfc, 0x3e, 0xe5, 0xfc, 0x1e, 0x15, 0xa4, 0xd7, 0x15, 0x7c, 0x7c, 0x1c, 0xf4,
		0x83, 0x71, 0x35, 0xdb, 0x83, 0x15, 0x91, 0xe6, 0xaa, 0x38, 0x69, 0x85, 0x8c, 0xae, 0x5e, 0xdc,
		0x68, 0xb8, 0x8c, 0x95, 0x8b, 0x2b, 0xa3, 0x5c, 0x5c, 0x66, 0x14, 0x13, 0x94, 0x8b, 0x8b, 0xfb,
		0xb9, 0x50, 0x2e, 0x0e, 0x42, 0x2b, 0x84, 0xd6, 0xb4, 0x18, 0x39, 0x84, 0x56, 0x32, 0xdb, 0xc5,
		0x25, 0x3c, 0x51, 0xa9, 0x3d, 0x2e, 0xe1, 0xa5, 0x80, 0xf6, 0xf4, 0x8d, 0xe3, 0x12, 0x1e, 0x9f,
		0xd1, 0xe2, 0x12, 0x5e, 0x5c, 0x1b, 0xc0, 0x25, 0xbc, 0x0c, 0x49, 0x59, 0xe2, 0x46, 0xc5, 0x25,
		0x3c, 0x5c, 0xc2, 0x5b, 0xe4, 0x21, 0xb8, 0x84, 0x47, 0xf0, 0x30, 0x5c, 0xc2, 0x13, 0xf4, 0x5c,
		0x5c, 0xc2, 0xdb, 0xea, 0x1a, 0x70, 0x09, 0x4f, 0xc0, 0x03, 0x71, 0x09, 0x2f, 0x3b, 0x7c, 0x25,
		0xe7, 0x5b, 0x84, 0xa8, 0x96, 0x46, 0x43, 0xbc, 0x20, 0xd4, 0x42, 0xa8, 0x85, 0x50, 0x4b, 0x4d,
		0x69, 0x20, 0xd4, 0x42, 0xa8, 0x5d, 0x45, 0x17, 0x42, 0xed, 0xdc, 0x1b, 0x87, 0x50, 0xcb, 0x67,
		0xb4, 0x10, 0x6a, 0xe3, 0xda, 0x00, 0x84, 0xda, 0x8c, 0xa5, 0x28, 0x12, 0x84, 0x5a, 0xc2, 0xf0,
		0x05, 0xa1, 0x76, 0xa3, 0x9c, 0x04, 0xa1, 0x96, 0xff, 0x61, 0x10, 0x6a, 0x05, 0x3d, 0x17, 0x42,
		0xed, 0x56, 0xd7, 0x00, 0xa1, 0x56, 0xc0, 0x03, 0x21, 0xd4, 0x66, 0x87, 0xaf, 0x40, 0xa8, 0x15,
		0xee, 0xbc, 0x50, 0x2c, 0x0c, 0x02, 0xad, 0x04, 0x81, 0x76, 0xdb, 0x03, 0x20, 0xd0, 0x52, 0xd9,
		0x2e, 0x8a, 0x85, 0xd1, 0x6a, 0x44, 0x28, 0x5a, 0x90, 0x05, 0x15, 0x08, 0xc5, 0xc2, 0xf2, 0x3b,
		0xb5, 0x20, 0xa0, 0xe2, 0x09, 0x28, 0x6a, 0x65, 0x81, 0x78, 0x82, 0x78, 0x82, 0x78, 0xa2, 0x56,
		0x16, 0x68, 0x27, 0x68, 0x67, 0xfe, 0x69, 0x27, 0x6a, 0x65, 0x15, 0x9e, 0x78, 0xa2, 0x56, 0x16,
		0xb1, 0x3d, 0xa2, 0x56, 0xd6, 0xd1, 0xd0, 0xba, 0xb5, 0xf4, 0x0e, 0xb5, 0xb2, 0x32, 0x99, 0xde,
		0xa2, 0x54, 0xd4, 0xc6, 0x52, 0x51, 0xa3, 0x0a, 0x49, 0x87, 0xaa, 0x14, 0xf5, 0x2a, 0xc5, 0x09,
		0xa1, 0x0c, 0x33, 0xa5, 0xbf, 0xbf, 0x33, 0x97, 0x3b, 0xa2, 0x10, 0xd6, 0x6f, 0x7a, 0xfb, 0xf6,
		0xe4, 0xed, 0xdb, 0x71, 0xdd, 0xaf, 0x93, 0xf0, 0x79, 0xc0, 0xfe, 0xf5, 0x5b, 0xb5, 0xd6, 0x30,
		0x23, 0x2f, 0xf4, 0x9b, 0xe4, 0xf9, 0xd2, 0xa6, 0x9f, 0xab, 0x9f, 0x95, 0xfa, 0x6f, 0x19, 0x2f,
		0xf8, 0x34, 0xc4, 0xfa, 0x98, 0xca, 0x3d, 0xf1, 0x4d, 0x46, 0x26, 0xd4, 0xbc, 0x3a, 0x0b, 0x6c,
		0xdf, 0x19, 0x90, 0x56, 0x16, 0x9c, 0x1a, 0x6b, 0x04, 0x84, 0xdc, 0xb7, 0x9e, 0x99, 0x2f, 0xf5,
		0x1c, 0xd6, 0xef, 0x06, 0x92, 0xe5, 0x33, 0xe9, 0x87, 0xd5, 0x77, 0xba, 0x52, 0x34, 0xd9, 0x52,
		0xf8, 0x9d, 0x49, 0xd5, 0x5a, 0x43, 0x8a, 0xb0, 0x91, 0x9c, 0xe0, 0x4f, 0x77, 0x18, 0x4d, 0x3d,
		0x5f, 0x1a, 0x42, 0x44, 0x65, 0x0b, 0x02, 0xd8, 0xce, 0xbc, 0xd9, 0x76, 0xe7, 0x20, 0x24, 0xd4,
		0x17, 0x44, 0xf2, 0x9a, 0x05, 0x2b, 0xe6, 0x9d, 0xa5, 0x7c, 0x04, 0xff, 0x57, 0xe9, 0x92, 0x9f,
		0xa4, 0xb1, 0x8d, 0x88, 0x64, 0xd0, 0x92, 0x8b, 0x12, 0x57, 0x21, 0x48, 0xff, 0xc9, 0x0e, 0xdd,
		0xb1, 0xc7, 0xa8, 0xda, 0x7d, 0xb3, 0x6a, 0xf7, 0x3b, 0x2c, 0x8c, 0xfe, 0x52, 0xa2, 0x27, 0x98,
		0xcd, 0xe8, 0x09, 0xaf, 0xd2, 0x99, 0xd4, 0x04, 0xd3, 0x52, 0x0a, 0xd8, 0x7f, 0x9f, 0xa2, 0x04,
		0x47, 0x76, 0xba, 0x89, 0xe7, 0x64, 0x76, 0x49, 0x72, 0x6e, 0xb0, 0x84, 0x26, 0xc2, 0xb7, 0xe9,
		0xc1, 0xbd, 0xc9, 0x41, 0xb1, 0xa9, 0x31, 0xbf, 0x89, 0x61, 0xd9, 0x3c, 0xd7, 0xc3, 0xa8, 0x9c,
		0x3f, 0xf9, 0xf6, 0x04, 0xb9, 0x7f, 0x5f, 0xde, 0x7e, 0x88, 0x70, 0x3b, 0x12, 0xc2, 0xce, 0xbd,
		0x91, 0x30, 0xb5, 0x97, 0x3e, 0xb3, 0x7a, 0x3e, 0xeb, 0xf1, 0x18, 0xcc, 0xe4, 0x76, 0x00, 0xc7,
		0x6e, 0x7b, 0xa9, 0x3d, 0xf6, 0xab, 0x33, 0xf6, 0x37, 0xbf, 0xae, 0xb3, 0xec, 0xcb, 0xb8, 0xca,
		0xf2, 0x92, 0x94, 0xe3, 0xe5, 0x2c, 0xc3, 0xcb, 0x5d, 0x7e, 0x17, 0xfe, 0x0b, 0xfe, 0x2b, 0x6e,
		0x12, 0xc5, 0x59, 0x2a, 0x77, 0x21, 0x85, 0x20, 0xab, 0x89, 0x4d, 0x97, 0x97, 0x10, 0x9d, 0xa3,
		0x20, 0x3b, 0x3f, 0x21, 0xaa, 0x32, 0x36, 0xdf, 0x52, 0x4d, 0x43, 0x22, 0x39, 0xce, 0x9a, 0xd8,
		0x5c, 0x4b, 0x39, 0x1b, 0xe2, 0x2e, 0xd9, 0x59, 0x87, 0xb9, 0x18, 0x39, 0xbc, 0xc9, 0x47, 0x60,
		0x6f, 0x93, 0x80, 0xf9, 0xfe, 0x08, 0xfb, 0x00, 0x0c, 0x0f, 0xc8, 0xb0, 0xae, 0xec, 0xd9, 0x21,
		0x0b, 0x03, 0x3a, 0xe7, 0xb7, 0x34, 0x2e, 0xfc, 0x1f, 0xfc, 0x1f, 0xfc, 0x5f, 0xa6, 0xfc, 0x9f,
		0xed, 0x3d, 0xb9, 0x21, 0xf3, 0x2f, 0x2a, 0x84, 0x2e, 0x90, 0xe0, 0x4e, 0x1e, 0xf1, 0xb9, 0x2e,
		0x42, 0xc9, 0x59, 0xc4, 0x39, 0x2e, 0x51, 0xe7, 0xb7, 0x84, 0x1f, 0xed, 0x11, 0x77, 0xa4, 0x87,
		0xf0, 0x9c, 0x96, 0x90, 0xf3, 0x59, 0xb3, 0x2a, 0x20, 0xef, 0x2b, 0x95, 0x8b, 0xcb, 0x4a, 0xe5,
		0xf4, 0xf2, 0xdd, 0xe5, 0xe9, 0x87, 0xf3, 0xf3, 0xb3, 0x8b, 0xb3, 0x73, 0xcc, 0x22, 0x89, 0xb7,
		0xa4, 0x1b, 0xe5, 0xfe, 0x88, 0x39, 0xd9, 0xc0, 0xb2, 0xff, 0x12, 0x42, 0xca, 0x26, 0x03, 0x83,
		0x95, 0x81, 0x95, 0x81, 0x95, 0x81, 0x95, 0x81, 0x95, 0x81, 0x95, 0x81, 0x95, 0x81, 0x95, 0x81,
		0x95, 0x6d, 0x99, 0x14, 0x8a, 0x63, 0x06, 0x2b, 0xee, 0x9e, 0xff, 0xb8, 0x01, 0xd8, 0x18, 0xd8,
		0x18, 0xd8, 0x98, 0x20, 0x36, 0x46, 0x56, 0xc7, 0x97, 0xb0, 0x6e, 0x2f, 0xa8, 0x18, 0xa8, 0xd8,
		0x71, 0x50, 0xb1, 0x4a, 0xf9, 0x43, 0xe5, 0xc3, 0xc5, 0x65, 0xf9, 0x03, 0x08, 0x18, 0x08, 0x18,
		0xcf, 0x2b, 0x73, 0x73, 0x58, 0x97, 0xe3, 0x12, 0x50, 0x3a, 0xe7, 0xcf, 0x42, 0xdf, 0x72, 0x83,
		0x81, 0xe7, 0x87, 0xfc, 0x67, 0xd0, 0x66, 0x43, 0x1d, 0xf8, 0x1c, 0x5a, 0x46, 0xce, 0xd1, 0x52,
		0x14, 0x03, 0x29, 0xee, 0x69, 0x34, 0x82, 0x62, 0x1e, 0x47, 0x76, 0x26, 0xcd, 0x9e, 0xd8, 0x2f,
		0x51, 0xaa, 0x39, 0x1e, 0x8f, 0x26, 0xcb, 0x3c, 0xcb, 0x79, 0x96, 0x49, 0x59, 0xb9, 0x07, 0xb9,
		0xa6, 0xc0, 0xca, 0x3c, 0x87, 0xcd, 0x38, 0x79, 0x17, 0xf9, 0x74, 0xa0, 0x6f, 0x4f, 0x4e, 0x3f,
		0x74, 0x5c, 0xb9, 0xcb, 0x42, 0xcb, 0xe9, 0xd3, 0xdf, 0x04, 0x5c, 0x1a, 0x1f, 0xe5, 0xbd, 0xb2,
		0xe6, 0x24, 0x44, 0x39, 0x0b, 0xe1, 0x4e, 0x43, 0xb8, 0xf3, 0x48, 0xc1, 0x89, 0x10, 0x67, 0x67,
		0x99, 0x2f, 0xef, 0x25, 0xa6, 0xbf, 0x87, 0x88, 0xbe, 0x1e, 0x62, 0xfa, 0x79, 0x88, 0xed, 0xe3,
		0x31, 0xea, 0xdf, 0x61, 0xd4, 0xda, 0xa6, 0xda, 0x52, 0x0d, 0xb5, 0x2a, 0xa2, 0xd5, 0xc4, 0xa8,
		0x61, 0x47, 0xf4, 0x0c, 0xa5, 0x63, 0x54, 0xaf, 0x1b, 0x6a, 0xe7, 0x96, 0xec, 0xbe, 0xf6, 0xc2,
		0x73, 0x86, 0xbd, 0x3a, 0x6e, 0xf4, 0xea, 0xc7, 0xa6, 0xd2, 0x32, 0x4a, 0x59, 0xee, 0x87, 0x23,
		0xb0, 0x85, 0xc4, 0x0c, 0x00, 0x21, 0xdd, 0x0d, 0x56, 0xe6, 0x91, 0x9b, 0x5f, 0x6f, 0x7c, 0xca,
		0xc4, 0x22, 0xaf, 0xa4, 0xd3, 0x8c, 0xd6, 0xb2, 0x79, 0x29, 0x4c, 0xc5, 0x2c, 0x92, 0xd2, 0x26,
		0xcb, 0x7f, 0x04, 0x16, 0xcb, 0x7a, 0xfb, 0xf6, 0x64, 0x44, 0x1f, 0xe5, 0x47, 0xaf, 0xcb, 0xa4,
		0x7f, 0x49, 0xbf, 0x5d, 0xdf, 0xa9, 0x0d, 0x43, 0x6d, 0xfd, 0x76, 0xe4, 0x25, 0xb2, 0x08, 0xeb,
		0x9e, 0xa4, 0xce, 0x8a, 0xd6, 0xb2, 0xa3, 0x2d, 0x33, 0x75, 0x14, 0x65, 0x15, 0x45, 0x14, 0x45,
		0xd9, 0x68, 0xd6, 0xc6, 0x77, 0x27, 0x90, 0xfa, 0xcc, 0xea, 0x49, 0x4e, 0x20, 0x79, 0x6e, 0xff,
		0x79, 0xb9, 0xf4, 0xc6, 0x10, 0xc3, 0x9e, 0xe7, 0x4b, 0xa3, 0xe3, 0x93, 0x41, 0xf4, 0x7b, 0xc1,
		0x80, 0xd9, 0x4e, 0xcf, 0x61, 0x5d, 0x29, 0xf4, 0xfe, 0x74, 0xbf, 0x31, 0x69, 0x9c, 0x60, 0xbd,
		0x15, 0x65, 0x47, 0x82, 0x97, 0x83, 0x94, 0x4a, 0x4d, 0x95, 0x83, 0xad, 0x8e, 0x95, 0x15, 0x42,
		0x3c, 0xe9, 0xe8, 0x0f, 0xc4, 0xf5, 0x27, 0x5b, 0x55, 0x32, 0x89, 0xeb, 0xc8, 0x4d, 0xc7, 0x7d,
		0x7e, 0xf0, 0x42, 0xd9, 0xb3, 0x65, 0xdb, 0x7b, 0x1c, 0xf8, 0x2c, 0x08, 0x58, 0x57, 0x8e, 0x2c,
		0x30, 0x7a, 0xc8, 0x4b, 0x8e, 0xea, 0xd3, 0x77, 0x59, 0x10, 0x3a, 0xee, 0x10, 0x3f, 0x99, 0x6b,
		0x27, 0x69, 0xa3, 0xc7, 0x5e, 0x79, 0x02, 0xe4, 0x2c, 0xc8, 0x59, 0x90, 0xb3, 0x0a, 0x2b, 0x67,
		0x45, 0x3e, 0x40, 0x76, 0x9f, 0x1e, 0x65, 0x7f, 0x78, 0x32, 0x0a, 0xbd, 0xec, 0x49, 0xd1, 0x25,
		0xbb, 0x27, 0xbf, 0x11, 0x5d, 0x01, 0x9d, 0x1c, 0x4b, 0x6d, 0x2b, 0x0c, 0x99, 0xef, 0x0a, 0x6b,
		0x67, 0x5f, 0x7a, 0x7d, 0xfa, 0xcf, 0xe9, 0xef, 0x95, 0x97, 0xaf, 0xa7, 0xf2, 0x87, 0xfb, 0x5f,
		0xd1, 0xd7, 0xef, 0x5e, 0xbe, 0x9e, 0xc9, 0x1f, 0xee, 0x67, 0xdf, 0x28, 0xcf, 0x7d, 0xe3, 0x9f,
		0xf2, 0xcb, 0xaf, 0xd3, 0xff, 0x6f, 0xee, 0xdf, 0xef, 0x5e, 0x7e, 0x7d, 0x3d, 0x93, 0xcf, 0xc7,
		0xff, 0xaa, 0xbc, 0xfc, 0xba, 0xf8, 0x7a, 0x2a, 0x57, 0x66, 0x3f, 0xbc, 0x38, 0x9f, 0xfb, 0x77,
		0x39, 0xfa, 0x77, 0xf4, 0x8d, 0xf2, 0x78, 0xf8, 0x8b, 0xf3, 0xf3, 0x77, 0x5f, 0x4f, 0xe5, 0xf3,
		0xfb, 0x37, 0x7f, 0xfe, 0xf9, 0xf6, 0xcf, 0x3f, 0xdf, 0x66, 0xe4, 0xcd, 0xd0, 0xf3, 0xe0, 0x7b,
		0x11, 0xa6, 0xa1, 0x75, 0xd4, 0xcf, 0xc2, 0xed, 0xe3, 0xff, 0x5e, 0xc3, 0x42, 0x56, 0xdf, 0xcc,
		0x9b, 0xff, 0x29, 0xa1, 0x4b, 0x3b, 0x71, 0xd8, 0xfb, 0xc6, 0x7c, 0x81, 0xde, 0xf9, 0x42, 0xc0,
		0xd0, 0x62, 0x5a, 0xb7, 0x88, 0x83, 0x7c, 0xfa, 0xc6, 0x45, 0xb6, 0x72, 0x99, 0x3e, 0x44, 0x70,
		0x4b, 0x97, 0xe9, 0x73, 0xd2, 0xea, 0xfe, 0x31, 0x33, 0x5c, 0xd1, 0x5d, 0x40, 0x04, 0x6a, 0x92,
		0x33, 0x13, 0x10, 0xd8, 0xf2, 0x65, 0xc5, 0x04, 0x22, 0xc7, 0x79, 0x0e, 0x33, 0xc8, 0x8c, 0x80,
		0x26, 0x66, 0xd4, 0xa2, 0x06, 0x30, 0x31, 0xc7, 0x10, 0x56, 0xd2, 0x8b, 0x8a, 0x80, 0xb1, 0x85,
		0x1c, 0x4b, 0x98, 0xa5, 0x88, 0x22, 0x8f, 0x27, 0x4c, 0x9f, 0x32, 0x3c, 0xa6, 0x50, 0x6d, 0x7d,
		0x11, 0xa4, 0x5e, 0xff, 0x2e, 0x0a, 0x1b, 0x51, 0xbb, 0xfc, 0x33, 0x65, 0xa6, 0xf5, 0x85, 0x7c,
		0x83, 0x5c, 0x9c, 0xf7, 0x80, 0xa8, 0xbf, 0xd7, 0x9c, 0x42, 0xd4, 0xe7, 0xf9, 0x98, 0xcb, 0x92,
		0xbb, 0x1c, 0xb0, 0x14, 0x84, 0xfd, 0xe1, 0x53, 0x20, 0xee, 0x73, 0xe3, 0x0a, 0x71, 0x7f, 0xe9,
		0x01, 0x10, 0xf7, 0x89, 0xdd, 0xab, 0x38, 0x71, 0x9f, 0xbf, 0xa2, 0xfc, 0x46, 0x62, 0x48, 0xd8,
		0xcf, 0x7d, 0x5a, 0x71, 0xfe, 0xc4, 0xb3, 0x87, 0x17, 0x01, 0xaf, 0xba, 0xac, 0xe7, 0xb8, 0xac,
		0x3b, 0xba, 0x15, 0x38, 0xf9, 0xe6, 0xc4, 0xa9, 0xad, 0x7e, 0x67, 0xfa, 0x8d, 0x61, 0x27, 0x0e,
		0x84, 0xce, 0x3c, 0x85, 0xce, 0xe9, 0x49, 0x2c, 0x11, 0x11, 0x73, 0x36, 0x38, 0x02, 0x25, 0x02,
		0x25, 0x02, 0x65, 0x61, 0x03, 0x25, 0x2e, 0x75, 0x88, 0xbf, 0xd4, 0xa1, 0x7c, 0x6e, 0x37, 0xd4,
		0x9a, 0x6a, 0x08, 0xbb, 0xd1, 0x31, 0x3e, 0xa7, 0x5b, 0xd8, 0x8b, 0x16, 0x93, 0xcf, 0x2f, 0xe6,
		0x06, 0xc4, 0x74, 0xfa, 0x70, 0xfd, 0x01, 0xd4, 0x2f, 0x05, 0xea, 0xc7, 0x7e, 0x0e, 0xfa, 0x8e,
		0xed, 0x84, 0xf2, 0x84, 0xa6, 0x45, 0x91, 0x4d, 0x10, 0x13, 0xdc, 0xf2, 0x2c, 0x10, 0x43, 0x10,
		0x43, 0x10, 0x43, 0x10, 0x43, 0x10, 0x43, 0x61, 0xc4, 0xb0, 0xda, 0xfa, 0x22, 0x8c, 0x13, 0x56,
		0x1b, 0x8d, 0xc2, 0xf2, 0xc1, 0xe8, 0xb3, 0x8b, 0xe1, 0x82, 0x22, 0x36, 0xf9, 0x70, 0x0b, 0x36,
		0xfe, 0xd8, 0xc7, 0x7f, 0x0b, 0x76, 0x92, 0x55, 0xe0, 0x1a, 0xec, 0xe1, 0xe8, 0xc2, 0x5a, 0xda,
		0xb0, 0x6d, 0xaa, 0x70, 0x0f, 0x76, 0xd9, 0xb0, 0x69, 0xae, 0x44, 0x4e, 0xd2, 0x10, 0x5c, 0x84,
		0xcd, 0xe4, 0xfa, 0x90, 0xc4, 0x5c, 0x84, 0x9d, 0xcd, 0x3a, 0x0e, 0xcd, 0x70, 0xfd, 0xc1, 0xa1,
		0x99, 0x3c, 0xca, 0x3f, 0xa1, 0x3d, 0x90, 0x7b, 0x7d, 0xeb, 0x21, 0x10, 0x28, 0xfb, 0xcc, 0x9e,
		0x01, 0xb9, 0x07, 0x72, 0x0f, 0xe4, 0x9e, 0xc2, 0xca, 0x3d, 0x4e, 0x97, 0xb9, 0xa1, 0x13, 0x3e,
		0x0b, 0x3a, 0x34, 0x43, 0x78, 0x1d, 0xa1, 0xa4, 0x8e, 0xdf, 0xea, 0xb5, 0x15, 0x08, 0x58, 0x14,
		0x53, 0x62, 0x5b, 0x6b, 0x9b, 0x37, 0x8d, 0xea, 0xc7, 0x0e, 0xf5, 0xa2, 0x18, 0xde, 0xd2, 0x08,
		0x84, 0xdc, 0x63, 0x12, 0xcd, 0xf5, 0x6b, 0x6d, 0xb3, 0x5a, 0xfb, 0xe3, 0x28, 0xb2, 0xa0, 0x14,
		0xa0, 0xa8, 0xfd, 0x47, 0x07, 0x14, 0xe3, 0x32, 0x74, 0x35, 0x05, 0x50, 0x8c, 0x7d, 0x06, 0xf5,
		0x3e, 0xfc, 0xf1, 0x42, 0xd1, 0xee, 0xdc, 0x02, 0x8a, 0x11, 0x14, 0x7a, 0xc7, 0x00, 0x14, 0x23,
		0x28, 0x3a, 0x5f, 0xb0, 0x40, 0xc6, 0x50, 0xdc, 0xe9, 0x1f, 0x4b, 0x19, 0x17, 0x29, 0xee, 0x73,
		0xca, 0xa4, 0x1b, 0x4e, 0x10, 0x56, 0xc3, 0xd0, 0xa7, 0x65, 0xd3, 0x4d, 0xc7, 0x55, 0xfa, 0x2c,
		0xca, 0x48, 0x88, 0xaf, 0xc4, 0x96, 0x9a, 0xd6, 0xcf, 0xb9, 0x91, 0xc5, 0xb6, 0xab, 0x2c, 0x69,
		0x7e, 0x97, 0xf9, 0xac, 0x7b, 0xfd, 0x5c, 0xba, 0x92, 0xdc, 0xa7, 0x7e, 0x5f, 0xc4, 0xd0, 0x77,
		0x01, 0xf3, 0x49, 0xef, 0xf2, 0x62, 0xdb, 0x8a, 0xde, 0x49, 0x61, 0xdb, 0x2a, 0x8b, 0xb2, 0xc7,
		0x5a, 0xf9, 0x03, 0xdb, 0x56, 0xb1, 0xa2, 0x2f, 0xb6, 0xad, 0xd6, 0x2c, 0x0a, 0x6c, 0x5b, 0x61,
		0xdb, 0x2a, 0xc5, 0xd1, 0xb0, 0x6d, 0x95, 0xa3, 0x6d, 0xab, 0x60, 0xe8, 0xaa, 0x04, 0xd5, 0x6e,
		0x9d, 0x1f, 0x1c, 0x1b, 0x55, 0xdc, 0x70, 0x62, 0xa3, 0x2a, 0xe5, 0x88, 0x84, 0x8d, 0x2a, 0x32,
		0xdb, 0x45, 0xd9, 0x56, 0x94, 0x6d, 0x5d, 0xf1, 0x95, 0x28, 0xdb, 0x8a, 0xb2, 0xad, 0x1b, 0x4c,
		0x03, 0x65, 0x5b, 0x51, 0xb6, 0x35, 0x2d, 0x1d, 0x03, 0x65, 0x5b, 0xd7, 0x0c, 0x8d, 0xb2, 0xad,
		0xdb, 0x1e, 0x82, 0xb2, 0xad, 0x19, 0xd4, 0x22, 0x67, 0x26, 0x80, 0xb2, 0xad, 0x47, 0x63, 0x06,
		0x28, 0xdb, 0x9a, 0xe9, 0x00, 0x86, 0xb2, 0xad, 0x9b, 0x52, 0x44, 0x94, 0x6d, 0xdd, 0x82, 0x0d,
		0xca, 0xb6, 0x0a, 0x1c, 0x11, 0x52, 0x7e, 0xbc, 0x71, 0x8b, 0x27, 0xe5, 0x8b, 0xa9, 0xd8, 0xba,
		0xfc, 0x00, 0x48, 0xfa, 0xdc, 0x90, 0x42, 0xd2, 0x5f, 0x7a, 0x00, 0x24, 0x7d, 0x62, 0xa7, 0x8a,
		0x62, 0xad, 0x28, 0xd6, 0x9a, 0xc7, 0x80, 0xf9, 0xea, 0x80, 0x13, 0x40, 0x0d, 0x7c, 0x29, 0xb0,
		0xbf, 0xb3, 0x47, 0x6b, 0x30, 0xb5, 0xd4, 0x01, 0x73, 0xed, 0x61, 0x18, 0x93, 0x2d, 0xbb, 0x7f,
		0x32, 0xfe, 0x6f, 0x64, 0x9e, 0xe3, 0x2f, 0x86, 0x7f, 0x33, 0x37, 0xf4, 0x1d, 0x16, 0x4c, 0xbf,
		0x7e, 0x3e, 0x09, 0x7d, 0xcb, 0x0d, 0x22, 0xcb, 0x3d, 0x19, 0xbd, 0x9e, 0xcf, 0x5e, 0x93, 0x83,
		0xcc, 0x01, 0x70, 0x29, 0x08, 0xad, 0x90, 0xdf, 0x65, 0xcd, 0xed, 0x8d, 0x45, 0xc3, 0x71, 0x4e,
		0xf8, 0xc4, 0x31, 0x71, 0x0e, 0x33, 0xe5, 0x26, 0x65, 0xce, 0x81, 0x08, 0x39, 0x89, 0x28, 0x2e,
		0x42, 0xcd, 0x41, 0x84, 0x71, 0x0f, 0x61, 0x9c, 0x43, 0x20, 0xd7, 0x38, 0xac, 0xfb, 0xab, 0x3b,
		0x34, 0x07, 0xf0, 0x4b, 0xe3, 0x9e, 0xea, 0xe3, 0x32, 0x86, 0xf4, 0x19, 0xcb, 0xd2, 0xf8, 0x48,
		0x58, 0x90, 0xb0, 0x20, 0x61, 0x29, 0x6c, 0xc2, 0x82, 0xda, 0x88, 0xe2, 0x6b, 0x23, 0x1a, 0xb5,
		0xb6, 0xa9, 0xb6, 0x54, 0x43, 0xad, 0x36, 0x84, 0xd5, 0x48, 0x1c, 0x5e, 0x5d, 0xee, 0x18, 0xd5,
		0xeb, 0x86, 0xda, 0xb9, 0x55, 0xea, 0x22, 0x9e, 0x53, 0x8e, 0x9e, 0x73, 0xa3, 0x57, 0x3f, 0x36,
		0x95, 0x96, 0x51, 0xd8, 0x82, 0x8c, 0x53, 0x00, 0xb8, 0x09, 0xeb, 0xfa, 0x77, 0xbe, 0x34, 0x8f,
		0x62, 0x6a, 0x3f, 0xce, 0x5b, 0x24, 0x6a, 0x40, 0xee, 0x87, 0x19, 0x2e, 0xd3, 0x6d, 0xbb, 0x4c,
		0x37, 0xae, 0x5b, 0x8f, 0xbb, 0x74, 0x87, 0x63, 0x45, 0x6b, 0xd9, 0xd1, 0x96, 0x99, 0xc2, 0x55,
		0xba, 0x65, 0xb3, 0xa6, 0xb9, 0x54, 0x35, 0x4e, 0xb0, 0x70, 0x93, 0x2e, 0x93, 0xab, 0x43, 0x12,
		0x73, 0x93, 0x6e, 0x3a, 0xe9, 0xd8, 0x7d, 0xe7, 0xfa, 0x73, 0x9f, 0xe3, 0x9e, 0xa1, 0xe2, 0xfb,
		0x85, 0x42, 0xcd, 0x81, 0x9a, 0x03, 0x35, 0xa7, 0xb8, 0x6a, 0x0e, 0x6e, 0x94, 0xe1, 0x46, 0xd9,
		0x8a, 0xaf, 0xc4, 0x8d, 0x32, 0xdc, 0x28, 0xdb, 0x60, 0x1a, 0xb8, 0x51, 0x86, 0x1b, 0x65, 0x69,
		0xa5, 0xf3, 0xb8, 0x51, 0xb6, 0x66, 0x68, 0xdc, 0x28, 0xdb, 0xf6, 0x10, 0xdc, 0x28, 0xcb, 0xa0,
		0x24, 0x37, 0x33, 0x01, 0xdc, 0x28, 0x3b, 0x1a, 0x33, 0xc0, 0x8d, 0xb2, 0x4c, 0x07, 0x30, 0xdc,
		0x28, 0xdb, 0x94, 0x22, 0xe2, 0x46, 0xd9, 0x16, 0x6c, 0x70, 0xa3, 0x4c, 0xe0, 0x88, 0xd0, 0xb4,
		0xd7, 0x59, 0xc4, 0xb2, 0xe2, 0x2c, 0xe6, 0x56, 0xd5, 0xda, 0xa7, 0x40, 0xdb, 0xe6, 0xc6, 0x15,
		0xda, 0xf6, 0xd2, 0x03, 0xa0, 0x6d, 0xd3, 0x06, 0x29, 0x5c, 0xad, 0xca, 0xe2, 0xd5, 0xaa, 0x8c,
		0x44, 0x8e, 0xe9, 0x31, 0x14, 0x11, 0x01, 0x63, 0x36, 0x38, 0xe2, 0x04, 0xe2, 0x04, 0xe2, 0x44,
		0x61, 0xe3, 0x04, 0x4e, 0xb4, 0x8b, 0x3f, 0xd1, 0x3e, 0xa9, 0xc7, 0x2f, 0xec, 0x38, 0xfb, 0xf8,
		0x90, 0x62, 0x61, 0x4f, 0x99, 0x4f, 0x3e, 0xbf, 0x98, 0xe3, 0xdf, 0xd3, 0xe9, 0xcb, 0xfd, 0xd9,
		0xef, 0x6c, 0xb5, 0xc1, 0x9d, 0xb0, 0x94, 0xc8, 0xb1, 0x0b, 0x22, 0x42, 0x5b, 0x9e, 0x05, 0x5e,
		0x04, 0x5e, 0x04, 0x5e, 0x04, 0x5e, 0x04, 0x5e, 0x24, 0x8c, 0x17, 0x55, 0x5b, 0x5f, 0x84, 0x51,
		0xa2, 0x6a, 0xa3, 0x51, 0x58, 0x3a, 0x14, 0x7d, 0x76, 0x31, 0x54, 0x48, 0xc4, 0x0e, 0x07, 0x6e,
		0xc0, 0xc5, 0x1f, 0x1b, 0xed, 0xe4, 0x0e, 0x41, 0x10, 0xd6, 0x11, 0x05, 0xb4, 0x93, 0xcb, 0x90,
		0x53, 0x95, 0xd0, 0x4e, 0xee, 0x20, 0x0b, 0x42, 0xc2, 0x25, 0x38, 0xb4, 0x93, 0x3b, 0xdc, 0x68,
		0xf7, 0x79, 0x54, 0x3f, 0x42, 0x7b, 0x20, 0xf7, 0xfa, 0xd6, 0x43, 0x20, 0x50, 0xf5, 0x98, 0x3d,
		0x03, 0x6a, 0x07, 0xd4, 0x0e, 0xa8, 0x1d, 0x85, 0x55, 0x3b, 0x9c, 0x2e, 0x73, 0x43, 0x27, 0x7c,
		0x16, 0x74, 0x62, 0x80, 0xb2, 0x45, 0xb9, 0x3a, 0x7e, 0xab, 0xd7, 0x56, 0x20, 0x60, 0x51, 0xcc,
		0x37, 0xe9, 0xbf, 0x69, 0x54, 0x3f, 0x76, 0xa8, 0x17, 0xc5, 0xf0, 0x84, 0x76, 0x20, 0xe4, 0x0e,
		0x83, 0x68, 0xaa, 0x5b, 0x6b, 0x9b, 0xd5, 0xda, 0x1f, 0x47, 0x91, 0x04, 0xa4, 0x00, 0x45, 0xed,
		0x3f, 0x3a, 0xa0, 0x18, 0x57, 0x60, 0xaa, 0x29, 0x80, 0x62, 0xec, 0x33, 0xa8, 0x77, 0x61, 0x8f,
		0x17, 0x8a, 0x76, 0xe7, 0x16, 0x50, 0x8c, 0xa0, 0xd0, 0x3b, 0x06, 0xa0, 0x18, 0x41, 0xd1, 0xf9,
		0x82, 0x05, 0x32, 0x86, 0xe2, 0x4e, 0xff, 0x58, 0xca, 0x78, 0x8e, 0x7e, 0x9f, 0x53, 0x26, 0xdd,
		0x70, 0x82, 0xb0, 0x1a, 0x86, 0x3e, 0x2d, 0x9b, 0x6e, 0x3a, 0xae, 0xd2, 0x67, 0x51, 0x46, 0x42,
		0x7c, 0x1d, 0xae, 0xd4, 0xb4, 0x7e, 0xce, 0x8d, 0x7c, 0xf6, 0xbe, 0x52, 0xb9, 0xb8, 0xac, 0x54,
		0x4e, 0x2f, 0xdf, 0x5d, 0x9e, 0x7e, 0x38, 0x3f, 0x3f, 0xbb, 0x20, 0x65, 0xd8, 0x9a, 0xdf, 0x65,
		0x3e, 0xeb, 0x5e, 0x3f, 0x97, 0xae, 0x24, 0xf7, 0xa9, 0xdf, 0x17, 0x31, 0xf4, 0x5d, 0xc0, 0x7c,
		0xd2, 0x7b, 0x7c, 0xd8, 0xb5, 0xa1, 0x77, 0x52, 0xd8, 0xb5, 0xc9, 0xa2, 0xec, 0xb1, 0x56, 0xfe,
		0xc0, 0xae, 0x4d, 0xac, 0xe8, 0x8b, 0x5d, 0x9b, 0x35, 0x8b, 0x02, 0xbb, 0x36, 0xd8, 0xb5, 0x49,
		0x71, 0xb4, 0xfb, 0x7c, 0x36, 0xce, 0x13, 0xda, 0x34, 0x0f, 0xfb, 0x34, 0xfc, 0x70, 0x62, 0x9f,
		0x26, 0x65, 0x87, 0x8c, 0x7d, 0x1a, 0x32, 0xdb, 0x45, 0xc5, 0x42, 0x54, 0x2c, 0x5c, 0xf1, 0x95,
		0xa8, 0x58, 0x88, 0x8a, 0x85, 0x1b, 0x4c, 0x03, 0x15, 0x0b, 0x51, 0xb1, 0x30, 0xad, 0x34, 0x1e,
		0x15, 0x0b, 0xd7, 0x0c, 0x8d, 0x8a, 0x85, 0xdb, 0x1e, 0x82, 0x8a, 0x85, 0x19, 0x94, 0xe2, 0x66,
		0x26, 0x80, 0x8a, 0x85, 0x47, 0x63, 0x06, 0xa8, 0x58, 0x98, 0xe9, 0x00, 0x86, 0x8a, 0x85, 0x9b,
		0x52, 0x44, 0x54, 0x2c, 0xdc, 0x82, 0x0d, 0x2a, 0x16, 0x0a, 0x1c, 0x11, 0x4a, 0xf6, 0x3a, 0x8b,
		0x98, 0x13, 0x9b, 0xc5, 0x14, 0x2b, 0x5c, 0x7e, 0x00, 0x14, 0x6d, 0x6e, 0x48, 0xa1, 0x68, 0x2f,
		0x3d, 0x00, 0x8a, 0x36, 0x6d, 0x68, 0x42, 0x9d, 0xc2, 0x7c, 0xd6, 0x29, 0x7c, 0x75, 0x40, 0xdb,
		0x2a, 0x55, 0x5d, 0xd7, 0x0b, 0x2d, 0xb2, 0x03, 0x1f, 0xa5, 0xc0, 0xfe, 0xce, 0x1e, 0xad, 0xc1,
		0x74, 0xa2, 0x06, 0xcc, 0xb5, 0x87, 0x5e, 0x5c, 0xb6, 0xec, 0xfe, 0xc9, 0xf8, 0xbf, 0xd1, 0xec,
		0x8c, 0xbf, 0x18, 0xfe, 0xcd, 0xdc, 0xd0, 0x77, 0x58, 0x30, 0xfd, 0xfa, 0xf9, 0x24, 0xf4, 0x2d,
		0x37, 0x88, 0x26, 0xee, 0x24, 0x08, 0xad, 0x90, 0x73, 0xb6, 0x92, 0x63, 0x9c, 0xec, 0x95, 0x09,
		0x67, 0x85, 0xf2, 0xdc, 0x1b, 0xcd, 0x39, 0x37, 0x02, 0x8b, 0x98, 0x3b, 0xc7, 0xf6, 0xf6, 0xed,
		0xc9, 0xc8, 0x18, 0x4e, 0xc2, 0xe7, 0x01, 0xfb, 0xd7, 0x6f, 0xd5, 0x5a, 0xc3, 0x54, 0xdb, 0x9f,
		0x2e, 0x7e, 0x93, 0x3c, 0x5f, 0xda, 0xfc, 0xf3, 0xca, 0xb6, 0x9f, 0x37, 0xd5, 0xcf, 0x4a, 0x9d,
		0xe2, 0x24, 0x1c, 0x75, 0xa0, 0x15, 0x74, 0xd2, 0x4d, 0x58, 0x58, 0x5d, 0x3e, 0xc9, 0x26, 0x70,
		0xb2, 0x32, 0xc1, 0xb1, 0x45, 0x9c, 0x75, 0x9b, 0x9d, 0x6d, 0x9b, 0x78, 0x2f, 0xb9, 0x6f, 0x3d,
		0x33, 0x5f, 0xea, 0x39, 0xac, 0xdf, 0x0d, 0x24, 0xcb, 0x67, 0xf3, 0xc7, 0x9d, 0x46, 0xc7, 0x9a,
		0x9e, 0x1d, 0xf7, 0xe1, 0x4f, 0xb7, 0xf1, 0x2e, 0xc2, 0x6d, 0x08, 0x90, 0x54, 0xad, 0x35, 0xa4,
		0x08, 0x34, 0xb2, 0x1b, 0xc1, 0x02, 0x38, 0xa4, 0xf8, 0x33, 0x6b, 0x42, 0x09, 0xe4, 0xe2, 0x99,
		0x34, 0xa2, 0xd9, 0xca, 0x07, 0xa3, 0x78, 0x95, 0x6e, 0x06, 0x9e, 0x34, 0x56, 0x12, 0x31, 0x17,
		0x01, 0x8c, 0x85, 0x63, 0x0d, 0x94, 0x82, 0xd0, 0x7f, 0xb2, 0x43, 0x77, 0xec, 0x46, 0xaa, 0x76,
		0xdf, 0xac, 0xda, 0xfd, 0x0e, 0x0b, 0xa3, 0xbf, 0x94, 0xe8, 0x31, 0xe6, 0xd4, 0x58, 0x93, 0x99,
		0x5b, 0xfc, 0xe9, 0x8d, 0xf7, 0x8a, 0x98, 0xd3, 0x19, 0xb9, 0x91, 0xa1, 0x20, 0xc1, 0xfe, 0xfb,
		0xc4, 0x5c, 0x9b, 0xc9, 0x4e, 0x37, 0x26, 0x7c, 0x7c, 0xd7, 0x48, 0xf8, 0xaf, 0x8b, 0x08, 0xb9,
		0x16, 0x42, 0x70, 0xfd, 0x83, 0xe0, 0x9a, 0x47, 0xdc, 0xb9, 0xe4, 0x5c, 0x92, 0x64, 0x4b, 0x31,
		0xc1, 0x02, 0xdc, 0xbd, 0xf0, 0xe2, 0x2d, 0xb7, 0xfd, 0x17, 0xcd, 0x7e, 0xbf, 0xb9, 0xe7, 0x54,
		0x24, 0x9d, 0x02, 0x4e, 0xe8, 0xf7, 0xc3, 0x66, 0xf7, 0x27, 0xdd, 0xe3, 0x53, 0x96, 0xec, 0x89,
		0x28, 0xb8, 0xdf, 0xa7, 0x9b, 0x52, 0xb2, 0xf1, 0xeb, 0xf6, 0xc4, 0x71, 0x22, 0x5f, 0xec, 0xf9,
		0xeb, 0x71, 0x95, 0xca, 0x24, 0x4a, 0xe4, 0xbc, 0xd2, 0x68, 0xd9, 0xfd, 0x18, 0x46, 0x9e, 0x94,
		0xff, 0x71, 0x6b, 0x84, 0xdc, 0x14, 0x6e, 0x59, 0xe3, 0x8b, 0x3e, 0xf7, 0x81, 0x56, 0x56, 0xdd,
		0x89, 0x17, 0x61, 0x16, 0x58, 0x71, 0x6c, 0xe4, 0xe7, 0xba, 0x0a, 0x25, 0xa4, 0xd6, 0x09, 0xc5,
		0xf8, 0xc4, 0xa2, 0x3b, 0x8f, 0xb8, 0x9e, 0xdc, 0xb4, 0xa9, 0x52, 0x1c, 0x32, 0x39, 0x9c, 0x2c,
		0x6b, 0xe1, 0x32, 0xfd, 0x74, 0xb8, 0x5b, 0x62, 0x41, 0x9a, 0xff, 0xb0, 0xef, 0xec, 0x30, 0x6f,
		0xa6, 0x19, 0xcd, 0xf3, 0x83, 0x17, 0xca, 0x9e, 0x2d, 0xdb, 0xde, 0xe3, 0xc0, 0x67, 0x41, 0xc0,
		0xba, 0x72, 0x9f, 0x59, 0xbd, 0x68, 0xb0, 0x17, 0x51, 0x7c, 0x22, 0x46, 0x5c, 0x18, 0xd3, 0x9d,
		0x84, 0xbe, 0x69, 0xf8, 0x6a, 0x38, 0x25, 0x38, 0x25, 0x38, 0x25, 0x38, 0x25, 0x3a, 0xa7, 0x14,
		0x26, 0x99, 0xc0, 0xe9, 0xe4, 0x0d, 0x5f, 0x0d, 0xa7, 0x04, 0xa7, 0x94, 0x33, 0xa7, 0xc4, 0x57,
		0x1c, 0x90, 0xa7, 0x08, 0x20, 0x4d, 0xb1, 0xbf, 0xe9, 0x07, 0xa9, 0xd6, 0x1a, 0xa6, 0xf1, 0xa5,
		0xad, 0x24, 0xb5, 0x1a, 0x82, 0xda, 0x7d, 0x7c, 0xbb, 0x20, 0x0b, 0x9f, 0x44, 0x6d, 0x7f, 0xaa,
		0x24, 0xd7, 0xfd, 0x39, 0xf6, 0xb1, 0x68, 0x3f, 0xc3, 0xc5, 0xb1, 0x7f, 0x86, 0x46, 0xf9, 0xd8,
		0x3f, 0xc1, 0x70, 0x33, 0xe9, 0xe8, 0x3f, 0x44, 0xbb, 0xd1, 0x29, 0xa5, 0x7c, 0xd8, 0xe2, 0x3e,
		0x63, 0xbe, 0xfe, 0x18, 0xe9, 0xd9, 0xb1, 0x6a, 0xd0, 0x63, 0x51, 0x37, 0x45, 0xf9, 0x39, 0x56,
		0xca, 0x9c, 0x24, 0x55, 0x8e, 0xc9, 0x46, 0x21, 0x3d, 0x0b, 0x62, 0x97, 0x19, 0x92, 0x9e, 0x63,
		0xb3, 0x47, 0x8e, 0x83, 0x9d, 0x49, 0x0e, 0x6e, 0x4e, 0x0f, 0x66, 0xce, 0xce, 0xfc, 0xec, 0x7f,
		0xc2, 0x92, 0x66, 0x59, 0x8e, 0x0e, 0x09, 0xc6, 0x5e, 0x97, 0xa3, 0x97, 0x09, 0xde, 0x13, 0x2a,
		0x63, 0x61, 0xe6, 0x74, 0x61, 0x62, 0x4f, 0x08, 0x4a, 0x07, 0x94, 0x8e, 0x63, 0x97, 0x5f, 0xb1,
		0xb5, 0x82, 0xb5, 0x8d, 0xb5, 0x8d, 0xb5, 0xbd, 0xf7, 0x7b, 0xc1, 0x0e, 0x05, 0xd6, 0x36, 0xd6,
		0xf6, 0xf2, 0x7c, 0x63, 0x87, 0x62, 0x3c, 0x0e, 0x76, 0x28, 0x04, 0x7c, 0x06, 0xec, 0x50, 0x1c,
		0xfc, 0x13, 0x60, 0x87, 0x22, 0xab, 0x3b, 0x14, 0xf9, 0x17, 0xfa, 0x63, 0x5c, 0x02, 0xa6, 0x11,
		0x14, 0x63, 0x71, 0xbc, 0x24, 0xdc, 0x0e, 0x3a, 0x3f, 0xe4, 0x44, 0x5e, 0x0e, 0x76, 0x78, 0x9d,
		0x7f, 0x68, 0xf0, 0x54, 0xcb, 0xf2, 0x15, 0x07, 0x88, 0x93, 0x8b, 0x64, 0xae, 0xf5, 0xc8, 0xa4,
		0x3d, 0x96, 0x61, 0xbc, 0x6b, 0x63, 0xf1, 0xaf, 0x89, 0x91, 0x5c, 0x0b, 0x4b, 0x70, 0x0d, 0x2c,
		0xc1, 0xb5, 0xaf, 0x5d, 0xc8, 0xc6, 0x74, 0xf3, 0x09, 0xdc, 0x7b, 0x69, 0xaf, 0x1d, 0x9e, 0xf5,
		0x17, 0xb4, 0xb6, 0x5b, 0xdf, 0x66, 0x9b, 0x5a, 0xff, 0x93, 0x0d, 0x58, 0xec, 0x8b, 0x41, 0x8c,
		0xcf, 0xbe, 0xfe, 0x7d, 0xaf, 0xbe, 0xab, 0x35, 0xef, 0x68, 0xd7, 0x1d, 0xa8, 0xfd, 0xee, 0x3c,
		0xed, 0xd8, 0xcf, 0xda, 0x19, 0x70, 0xf6, 0x09, 0x30, 0xfb, 0x07, 0x94, 0x7d, 0x03, 0x48, 0xec,
		0x80, 0x11, 0x3b, 0x40, 0xc4, 0x0a, 0x08, 0x87, 0xb2, 0xa2, 0x6d, 0x07, 0x1f, 0xf6, 0xb3, 0x21,
		0xc7, 0x0d, 0x99, 0xdf, 0xb3, 0x6c, 0x16, 0xec, 0xb6, 0xa3, 0xb9, 0xdf, 0x85, 0x2d, 0x65, 0xc4,
		0x96, 0x76, 0xed, 0x3d, 0xce, 0x26, 0x6d, 0x37, 0x0e, 0x2b, 0xf3, 0xbc, 0x0b, 0x87, 0xfd, 0xb6,
		0xc2, 0xf7, 0xe6, 0xac, 0x71, 0xb8, 0x6a, 0x7c, 0x8e, 0x1a, 0x97, 0x9b, 0x26, 0xe6, 0xa4, 0x89,
		0xb9, 0x68, 0x22, 0x0e, 0xca, 0x47, 0x97, 0xf6, 0xdd, 0xba, 0xc6, 0x7d, 0x5b, 0x24, 0x43, 0x07,
		0x49, 0x86, 0x62, 0x9f, 0xad, 0x70, 0xba, 0xc9, 0xf7, 0x64, 0xe2, 0x57, 0x9d, 0xc0, 0x8e, 0x4c,
		0x9a, 0x86, 0x4d, 0x66, 0xe0, 0x24, 0x86, 0x9e, 0x50, 0xa5, 0x4b, 0x7f, 0x47, 0x66, 0x12, 0xce,
		0xe3, 0x57, 0x55, 0x91, 0x70, 0x9d, 0x2d, 0x07, 0x32, 0xea, 0x8c, 0xb7, 0xcf, 0xbe, 0x3c, 0xc0,
		0x99, 0x69, 0xf6, 0x10, 0xcd, 0x8b, 0x3c, 0xcd, 0x7c, 0x63, 0x73, 0x89, 0xe5, 0x01, 0x40, 0x2a,
		0x40, 0x2a, 0xd2, 0x21, 0x15, 0x8b, 0x96, 0x97, 0x9c, 0x60, 0x2c, 0x8d, 0x93, 0x8c, 0x6c, 0x9c,
		0x81, 0x6c, 0x80, 0x6c, 0x88, 0x09, 0xc2, 0x71, 0x17, 0xc6, 0xf4, 0x85, 0xf3, 0x55, 0xa0, 0xb8,
		0x4f, 0x5e, 0xcc, 0x0f, 0x96, 0x10, 0xea, 0x64, 0x4b, 0x65, 0x75, 0xc9, 0x94, 0x13, 0x0e, 0x40,
		0x50, 0x62, 0x9e, 0x7f, 0x09, 0x51, 0x2d, 0x25, 0xf2, 0x25, 0x45, 0xbe, 0xb4, 0x48, 0x97, 0x58,
		0xb2, 0xa5, 0x96, 0x70, 0xc9, 0x71, 0x2f, 0xbd, 0x95, 0x25, 0xf8, 0xcc, 0x3f, 0xcf, 0xcb, 0x0b,
		0xf1, 0x99, 0x77, 0x9e, 0xf9, 0x96, 0x23, 0x77, 0x24, 0x13, 0xb1, 0x3c, 0xe9, 0x97, 0x29, 0xf5,
		0x72, 0x15, 0xb6, 0x6c, 0x85, 0x2d, 0x5f, 0x21, 0xcb, 0x98, 0x6f, 0x39, 0x73, 0x2e, 0x6b, 0xb2,
		0xe5, 0x3d, 0x4b, 0xf7, 0xe6, 0x4a, 0xa4, 0xd2, 0x37, 0x84, 0x49, 0x5c, 0x7f, 0x95, 0x58, 0x21,
		0x13, 0xee, 0x02, 0x44, 0xb8, 0x02, 0x71, 0x2e, 0x41, 0x94, 0x6b, 0x10, 0xee, 0x22, 0x84, 0xbb,
		0x0a, 0xa1, 0x2e, 0x83, 0xc6, 0x75, 0x10, 0xb9, 0x10, 0x7e, 0x45, 0x70, 0xa7, 0xbd, 0x1e, 0x59,
		0x03, 0x98, 0xb7, 0x6f, 0x47, 0x07, 0x02, 0x4f, 0xe6, 0xdd, 0x56, 0x9e, 0xfa, 0x7f, 0xc5, 0xba,
		0xcd, 0xbc, 0xbf, 0x93, 0x8f, 0x71, 0xdb, 0x39, 0x25, 0x66, 0x47, 0x96, 0x78, 0xc1, 0xbd, 0xc3,
		0xbd, 0x1f, 0xb9, 0x7b, 0xa7, 0x62, 0x8a, 0xd3, 0x01, 0x87, 0xdd, 0xd0, 0x58, 0x57, 0xf6, 0xec,
		0x30, 0x8e, 0xec, 0x1e, 0x7b, 0x39, 0x2c, 0x3d, 0x87, 0xd8, 0x00, 0x68, 0x79, 0xa4, 0x30, 0x3e,
		0x29, 0xd2, 0xf1, 0x88, 0x77, 0x40, 0xa2, 0x1d, 0x51, 0x6a, 0x0e, 0x29, 0x35, 0xc7, 0x94, 0x8a,
		0x83, 0xa2, 0x75, 0x54, 0xc4, 0x0e, 0x4b, 0x1c, 0x2f, 0x5d, 0xb1, 0x77, 0xdb, 0x7b, 0x72, 0x43,
		0xe6, 0x5f, 0x54, 0x04, 0x36, 0x6e, 0x7e, 0x2f, 0x60, 0x68, 0xdd, 0x72, 0x1f, 0x18, 0x77, 0x17,
		0xb6, 0x4d, 0x7f, 0x04, 0xf6, 0x24, 0x6e, 0x3a, 0x6e, 0x7a, 0x6d, 0xe7, 0x4f, 0xd1, 0x72, 0x3e,
		0x1b, 0x2b, 0x79, 0xd1, 0x04, 0xac, 0x9f, 0xe9, 0x99, 0x00, 0x4d, 0xdb, 0x1c, 0x58, 0x85, 0x80,
		0x68, 0x21, 0x6e, 0xd4, 0xfb, 0x8c, 0xb6, 0x12, 0x27, 0x5c, 0x55, 0x53, 0x6e, 0x3c, 0xb0, 0xec,
		0xbf, 0x52, 0x21, 0xe1, 0x93, 0x07, 0x81, 0x85, 0x83, 0x85, 0x83, 0x85, 0x83, 0x85, 0x83, 0x85,
		0x83, 0x85, 0x83, 0x85, 0x83, 0x85, 0x83, 0x85, 0x83, 0x85, 0x17, 0x96, 0x85, 0x8b, 0x38, 0x3b,
		0xb1, 0x12, 0x1e, 0xe9, 0xcf, 0x50, 0x80, 0x7d, 0x83, 0x7d, 0x83, 0x7d, 0x83, 0x7d, 0x0b, 0x3a,
		0xa3, 0xb1, 0xec, 0x5e, 0x28, 0xcf, 0x6a, 0xcc, 0x5c, 0xc1, 0xf4, 0x7e, 0xd2, 0xd0, 0x2e, 0xae,
		0x2c, 0xbb, 0x3f, 0xf7, 0xe5, 0xa8, 0x0c, 0xc8, 0xe2, 0xbf, 0xbf, 0x8e, 0xff, 0xe9, 0x5a, 0x8f,
		0xec, 0x5f, 0xf6, 0x93, 0xef, 0x33, 0x37, 0x7c, 0xfd, 0xe6, 0xe4, 0xed, 0xdb, 0xd9, 0xff, 0x02,
		0x16, 0xca, 0xd1, 0x8f, 0xef, 0x27, 0xbf, 0x1b, 0x3e, 0x0f, 0x36, 0xfd, 0x6e, 0xf4, 0xa3, 0xfb,
		0xf9, 0x47, 0x4c, 0xfa, 0x45, 0x2f, 0x7d, 0xeb, 0x79, 0xf2, 0x0d, 0xf2, 0x43, 0x25, 0x02, 0x62,
		0x63, 0xa6, 0x36, 0xae, 0x39, 0x6f, 0xf0, 0x6d, 0x8e, 0xda, 0xc9, 0x2e, 0xb8, 0x2d, 0xdd, 0x16,
		0x5b, 0xfa, 0xf7, 0x86, 0xee, 0xfd, 0x31, 0x0a, 0x8c, 0x89, 0x9f, 0x9c, 0xc3, 0x9e, 0x58, 0xe5,
		0x6e, 0xc9, 0xbf, 0x32, 0x22, 0x57, 0x8b, 0xfe, 0x75, 0x59, 0x31, 0x5f, 0xcb, 0xfe, 0x75, 0x49,
		0x16, 0x79, 0x0b, 0xff, 0x95, 0x87, 0xf0, 0xb7, 0xf4, 0xdf, 0x3c, 0x64, 0xe2, 0x16, 0xff, 0xd4,
		0xb6, 0x43, 0xec, 0x0a, 0xd2, 0x74, 0x01, 0x25, 0x92, 0x83, 0x7b, 0xcb, 0x45, 0xaa, 0xd4, 0xc9,
		0x7b, 0x32, 0x95, 0xe1, 0x7b, 0x18, 0x15, 0xad, 0x32, 0xab, 0x76, 0x5f, 0x19, 0x3e, 0xf4, 0xd5,
		0x61, 0xfc, 0x44, 0xba, 0x57, 0x5c, 0x88, 0xac, 0x42, 0xbc, 0x35, 0x24, 0x9b, 0x8e, 0xf8, 0x60,
		0x26, 0x00, 0x32, 0x6e, 0x21, 0x96, 0x8d, 0x3c, 0x32, 0x56, 0x61, 0x96, 0x8d, 0x54, 0x91, 0xf7,
		0x7e, 0xdd, 0x29, 0xee, 0xd7, 0x09, 0xcc, 0x08, 0x71, 0xbf, 0x6e, 0xf6, 0xce, 0xb9, 0xef, 0xd7,
		0x4d, 0x92, 0x0d, 0xba, 0xeb, 0x75, 0xd3, 0x11, 0x69, 0x6e, 0xd7, 0x9d, 0xe2, 0x76, 0xdd, 0x01,
		0x64, 0x1d, 0xdc, 0xae, 0xcb, 0x40, 0xae, 0x42, 0x26, 0xbb, 0x08, 0x90, 0x59, 0x28, 0x65, 0x95,
		0xf9, 0xab, 0x2f, 0x4b, 0xff, 0xdb, 0xd0, 0x14, 0x33, 0x46, 0x0b, 0xbe, 0x63, 0x49, 0x06, 0xc8,
		0x2a, 0xfd, 0x10, 0xf2, 0x68, 0x0e, 0xf2, 0x10, 0x52, 0xd8, 0x2e, 0x4f, 0x5b, 0x19, 0xc4, 0x13,
		0xc4, 0x13, 0xc4, 0x13, 0xc4, 0x93, 0xed, 0xf1, 0xe4, 0xeb, 0xaa, 0x0e, 0x3f, 0x95, 0xdf, 0xe3,
		0x97, 0x81, 0x47, 0xac, 0x81, 0x66, 0x43, 0xa0, 0xd9, 0xc4, 0x29, 0x62, 0x77, 0x18, 0xb9, 0x86,
		0x3b, 0x6b, 0xa4, 0xca, 0x16, 0x39, 0xa3, 0x3a, 0x24, 0x1b, 0x48, 0x36, 0x69, 0xfb, 0x1e, 0xee,
		0x28, 0x4c, 0x18, 0x7d, 0x29, 0xa2, 0xee, 0x9a, 0xc6, 0x29, 0xd3, 0x45, 0x9d, 0x65, 0x17, 0xc6,
		0x55, 0x86, 0x80, 0xa4, 0xec, 0x00, 0xea, 0xb9, 0xc1, 0x79, 0x41, 0x6f, 0xe6, 0x35, 0x3c, 0xe8,
		0xcd, 0xd0, 0x07, 0xa0, 0x0f, 0x40, 0x1f, 0x10, 0xa2, 0x0f, 0x10, 0xea, 0xcd, 0x90, 0x61, 0xe1,
		0x66, 0xe1, 0x66, 0xe1, 0x66, 0xe1, 0x66, 0x0f, 0x26, 0xc3, 0x42, 0x9d, 0x24, 0x50, 0x27, 0x39,
		0x0e, 0x13, 0xa7, 0x93, 0xd9, 0x73, 0xc5, 0x3c, 0x8a, 0x58, 0x07, 0x51, 0x12, 0x79, 0x3d, 0x44,
		0xc9, 0xac, 0x89, 0x92, 0xc9, 0xe3, 0xc7, 0x4b, 0xc6, 0xfa, 0x59, 0x4c, 0xef, 0x30, 0x8c, 0x22,
		0xa4, 0x94, 0xc0, 0x55, 0xf1, 0xdd, 0x5a, 0xe0, 0xbf, 0xa5, 0x20, 0xe4, 0x56, 0x02, 0xc1, 0x2d,
		0x04, 0x82, 0x5b, 0x07, 0x69, 0xb7, 0x08, 0x13, 0x12, 0xe5, 0x4b, 0x89, 0x14, 0xf5, 0xfd, 0xee,
		0x07, 0x94, 0xd0, 0xb8, 0x6c, 0xe7, 0x74, 0xa4, 0xd9, 0xc1, 0x2c, 0xc6, 0xb5, 0xf1, 0xf8, 0x3d,
		0x25, 0x63, 0x72, 0x21, 0xf4, 0x29, 0x13, 0xc4, 0x55, 0x32, 0xd4, 0xa7, 0x2c, 0x36, 0xd7, 0xe0,
		0xe0, 0x16, 0x49, 0xb8, 0xc4, 0x1a, 0xee, 0xb0, 0xef, 0x65, 0x59, 0xa2, 0x05, 0xe9, 0xf2, 0xf6,
		0x14, 0x5c, 0x19, 0x01, 0x4d, 0x05, 0xb1, 0x58, 0x13, 0x2d, 0xd6, 0xf8, 0x9d, 0x8a, 0x5d, 0xa2,
		0xae, 0x82, 0xcb, 0x03, 0xa1, 0xad, 0xa0, 0xb8, 0x1c, 0x1b, 0x6d, 0x05, 0xd1, 0x56, 0x10, 0xc7,
		0x50, 0x20, 0x57, 0xa1, 0xad, 0x20, 0xff, 0x42, 0x44, 0x5b, 0xc1, 0x34, 0x96, 0x29, 0xf5, 0x72,
		0x15, 0xb6, 0x6c, 0x85, 0x2d, 0x5f, 0x21, 0xcb, 0x98, 0x6f, 0x39, 0x73, 0x2e, 0x6b, 0xb2, 0xe5,
		0x3d, 0x13, 0x63, 0xd0, 0x56, 0x10, 0x6d, 0x05, 0xd1, 0x77, 0x2a, 0x15, 0x97, 0x41, 0xe3, 0x3a,
		0x88, 0x5c, 0x48, 0x72, 0xb1, 0x49, 0xa0, 0x18, 0x25, 0x42, 0xac, 0x8a, 0x23, 0x66, 0xa1, 0xad,
		0x60, 0x02, 0x27, 0x8f, 0xb6, 0x82, 0x70, 0xef, 0x70, 0xef, 0x59, 0x75, 0xef, 0x68, 0x2b, 0x98,
		0x02, 0x8f, 0x14, 0xc6, 0x27, 0x45, 0x3a, 0x1e, 0xf1, 0x0e, 0x48, 0xb4, 0x23, 0x4a, 0xcd, 0x21,
		0xa5, 0xe6, 0x98, 0x52, 0x71, 0x50, 0xb4, 0x8e, 0x8a, 0xd8, 0x61, 0x89, 0xe3, 0xa5, 0x2b, 0xf6,
		0x8e, 0x86, 0x26, 0xeb, 0xfe, 0xa0, 0xa1, 0xc9, 0x7e, 0xcf, 0x41, 0x43, 0x93, 0x44, 0x26, 0x80,
		0x86, 0x26, 0xc7, 0x6a, 0x15, 0x68, 0x68, 0x92, 0x95, 0x55, 0x85, 0xb6, 0x82, 0x60, 0xe1, 0x60,
		0xe1, 0x60, 0xe1, 0x60, 0xe1, 0x60, 0xe1, 0x60, 0xe1, 0x60, 0xe1, 0x60, 0xe1, 0x60, 0xe1, 0x60,
		0xe1, 0xa9, 0xb3, 0x70, 0xb4, 0x15, 0x04, 0xfb, 0x06, 0xfb, 0x06, 0xfb, 0x3e, 0x66, 0xf6, 0x8d,
		0xb6, 0x82, 0x68, 0x2b, 0x48, 0x3b, 0x52, 0x4e, 0xdb, 0x0a, 0x2e, 0x5f, 0x18, 0x5b, 0xfe, 0x06,
		0x1a, 0x0b, 0xee, 0x11, 0xa0, 0xd0, 0x58, 0x10, 0x8d, 0x05, 0xb3, 0xe0, 0x0c, 0xd2, 0x75, 0x02,
		0xa2, 0x5b, 0x0b, 0xaa, 0x2e, 0x7a, 0x0b, 0x1e, 0xa8, 0x12, 0x54, 0x1c, 0x83, 0x40, 0x77, 0xc1,
		0x7d, 0x19, 0x23, 0xaa, 0x42, 0xe1, 0x9a, 0xdd, 0x71, 0xb8, 0x1f, 0x54, 0x7b, 0x4e, 0x4b, 0x0d,
		0xc2, 0x25, 0x3b, 0x5c, 0xb2, 0x4b, 0x99, 0x74, 0xa2, 0x0c, 0x29, 0xba, 0x0b, 0xa2, 0xbb, 0x20,
		0xca, 0x5a, 0x23, 0x9e, 0x20, 0x9e, 0x20, 0x9e, 0x08, 0x89, 0x27, 0xe8, 0x2e, 0x88, 0xee, 0x82,
		0x19, 0x54, 0x6d, 0xd0, 0x5f, 0x30, 0xad, 0xb8, 0x0e, 0xd1, 0x06, 0xa2, 0x0d, 0x4a, 0x79, 0xa3,
		0xbf, 0x20, 0x87, 0xff, 0x42, 0x7f, 0x41, 0x38, 0xaf, 0xe2, 0x38, 0x2f, 0x28, 0xce, 0x50, 0x08,
		0xa0, 0x10, 0x40, 0x21, 0x28, 0x8a, 0x42, 0x80, 0xfe, 0x82, 0x10, 0x62, 0xe1, 0x66, 0xe1, 0x66,
		0xe1, 0x66, 0x85, 0xba, 0x59, 0xf4, 0x17, 0x3c, 0x26, 0x7d, 0x12, 0x1d, 0x06, 0x21, 0x4b, 0x22,
		0xb3, 0x87, 0x2c, 0x79, 0x6c, 0xb2, 0x24, 0x3a, 0x0c, 0xce, 0x8f, 0x81, 0x0e, 0x83, 0x3b, 0x86,
		0xc8, 0x7b, 0x87, 0xc1, 0x5d, 0x71, 0x9e, 0xba, 0xc7, 0xe0, 0xc2, 0x45, 0x01, 0x34, 0x19, 0xdc,
		0x63, 0x46, 0xd2, 0x6d, 0x6a, 0x36, 0x7e, 0x17, 0x72, 0xe4, 0xbb, 0x13, 0x74, 0x34, 0x9b, 0x7f,
		0x79, 0x3e, 0xda, 0x99, 0x39, 0xbd, 0x42, 0x76, 0x33, 0x73, 0x7a, 0x47, 0xd3, 0xcc, 0x2c, 0xe1,
		0xc5, 0x11, 0xbe, 0x0b, 0x23, 0xc7, 0xda, 0xba, 0xcc, 0xe9, 0xa1, 0x73, 0x19, 0xa7, 0xb9, 0xa7,
		0xc3, 0xee, 0x12, 0x37, 0x2e, 0x9b, 0x3a, 0x61, 0xfe, 0xe4, 0x77, 0x36, 0x14, 0x32, 0xe0, 0xc4,
		0x8b, 0x07, 0x09, 0x70, 0x92, 0xc5, 0x85, 0xfc, 0x97, 0x34, 0xff, 0x3d, 0x19, 0x4e, 0xc3, 0xd5,
		0x1c, 0xe1, 0x5c, 0xfa, 0xc6, 0xf8, 0xdf, 0x1c, 0x07, 0x76, 0x0e, 0xac, 0x73, 0x92, 0x1f, 0x68,
		0x4d, 0xe9, 0x04, 0xd2, 0xd3, 0x37, 0x42, 0x87, 0xbd, 0x30, 0x1a, 0x7c, 0x36, 0x7c, 0x36, 0x7c,
		0x76, 0x8e, 0x7d, 0xf6, 0xd7, 0x99, 0xcf, 0x5e, 0xdc, 0x36, 0x9b, 0xfe, 0xc6, 0xfd, 0xf8, 0x25,
		0xf3, 0x7e, 0x21, 0x58, 0xf3, 0xbd, 0xe9, 0xc8, 0x5d, 0xf6, 0x13, 0xee, 0x3f, 0x93, 0x6a, 0xaf,
		0xf2, 0x73, 0x28, 0x91, 0xc6, 0x2f, 0xf5, 0xca, 0x9f, 0xb2, 0x79, 0xb6, 0xcc, 0x7e, 0x86, 0x57,
		0x21, 0xeb, 0xb3, 0x47, 0x16, 0xfa, 0xcf, 0xb2, 0xe7, 0xca, 0xf6, 0xf7, 0x61, 0xed, 0x59, 0x92,
		0x34, 0x6e, 0x28, 0xae, 0x12, 0xe4, 0x71, 0xa2, 0x53, 0xb8, 0xfb, 0x63, 0x91, 0x74, 0xe7, 0x54,
		0xb8, 0x44, 0xf7, 0x48, 0x62, 0x28, 0xad, 0x31, 0xb4, 0xb1, 0x64, 0x87, 0xad, 0xb9, 0x0e, 0x59,
		0x73, 0xab, 0x34, 0x65, 0xa8, 0x34, 0x50, 0x69, 0xa0, 0xd2, 0x80, 0xf1, 0x83, 0xf1, 0x83, 0xf1,
		0xe7, 0x41, 0xa5, 0x81, 0xa8, 0x01, 0x17, 0x07, 0x17, 0x07, 0x17, 0x07, 0x51, 0xe3, 0x08, 0x35,
		0x80, 0x4c, 0x24, 0x94, 0x09, 0x0e, 0xfe, 0x16, 0xe6, 0xe4, 0x4e, 0xfc, 0xe3, 0x2f, 0xd2, 0xee,
		0x03, 0x53, 0xe3, 0xaf, 0x74, 0xd6, 0x4b, 0xf3, 0x28, 0x50, 0xbc, 0x6c, 0x3d, 0x51, 0x96, 0x9e,
		0xf8, 0xe8, 0x4f, 0x39, 0x9d, 0xa3, 0x3f, 0xf1, 0x0e, 0x3c, 0xe7, 0xe7, 0xec, 0x4f, 0xac, 0x03,
		0xcb, 0x07, 0x3e, 0xfc, 0x93, 0xa0, 0xef, 0xc9, 0x2c, 0x71, 0xee, 0x26, 0x94, 0x93, 0x4e, 0x8f,
		0xec, 0xd0, 0x4f, 0xb2, 0x93, 0xfb, 0xf9, 0xd7, 0x93, 0x12, 0x9d, 0xcc, 0x17, 0x1b, 0xe2, 0x13,
		0x13, 0xbf, 0x35, 0x87, 0x30, 0x13, 0x55, 0xb7, 0x9f, 0x3a, 0xe5, 0xf7, 0x08, 0xf1, 0xab, 0x21,
		0x3e, 0x06, 0xf9, 0xd9, 0x23, 0x0c, 0xbf, 0xe2, 0x40, 0x60, 0x72, 0xfc, 0x7f, 0xe7, 0x24, 0xc7,
		0x3b, 0xe3, 0x1f, 0xff, 0x4c, 0x3f, 0xc9, 0x19, 0xfe, 0x04, 0x67, 0xf6, 0x13, 0x9c, 0xd1, 0xdf,
		0x05, 0x69, 0x4c, 0x63, 0x4a, 0x68, 0x44, 0xa5, 0xbd, 0xd8, 0xd7, 0x46, 0x46, 0xb8, 0xdd, 0xfa,
		0x36, 0xdb, 0xd4, 0xfa, 0x9f, 0x6c, 0x80, 0x64, 0x5f, 0x28, 0x62, 0x41, 0xb0, 0xfe, 0x9d, 0xaf,
		0xbe, 0xaf, 0x35, 0xef, 0x69, 0x07, 0x1d, 0xdd, 0x8b, 0x7e, 0xee, 0xa0, 0x9b, 0x3b, 0xe9, 0xe5,
		0x3e, 0xd1, 0x78, 0xff, 0xa8, 0xbb, 0x6f, 0x74, 0x8d, 0x1d, 0x45, 0x63, 0x47, 0xcb, 0x58, 0x51,
		0x31, 0x9e, 0x15, 0xed, 0xa2, 0x73, 0x93, 0xce, 0xab, 0xb2, 0x6d, 0x0d, 0xac, 0x6f, 0x4e, 0xdf,
		0x09, 0x9f, 0x77, 0x03, 0xb2, 0xd4, 0xb5, 0x75, 0xfe, 0xb5, 0xbb, 0x5c, 0xe6, 0x5e, 0xf4, 0x6d,
		0x6f, 0xba, 0x16, 0x87, 0x9e, 0xc5, 0xa7, 0x63, 0x71, 0xe9, 0x57, 0x62, 0xba, 0x95, 0x98, 0x5e,
		0x25, 0xa2, 0x53, 0x7c, 0x41, 0x6f, 0x6f, 0x7a, 0x34, 0x47, 0xf2, 0x99, 0x1b, 0x3a, 0xe1, 0xf3,
		0x7e, 0x29, 0xf9, 0xd4, 0x47, 0xec, 0x13, 0xb3, 0xd4, 0xf1, 0xd0, 0xd7, 0x56, 0x90, 0x20, 0x53,
		0xae, 0xd6, 0x1a, 0x66, 0x4d, 0xbb, 0x6b, 0x19, 0x8a, 0x6e, 0xd6, 0xaa, 0xed, 0xea, 0xb5, 0xda,
		0x50, 0x8d, 0x2f, 0xfb, 0xce, 0xd9, 0xb0, 0xb3, 0x69, 0xbc, 0x03, 0x21, 0x09, 0xb3, 0xa4, 0xea,
		0xc7, 0x8f, 0xba, 0xf2, 0xb1, 0x6a, 0x28, 0xa6, 0xd6, 0x6a, 0x7c, 0x29, 0x89, 0x38, 0x1a, 0x90,
		0xf0, 0x9d, 0xa9, 0x11, 0x76, 0x37, 0xd5, 0x9a, 0x62, 0x4e, 0xdf, 0x63, 0x36, 0xdf, 0x5e, 0x4c,
		0xe0, 0xf6, 0xfa, 0xcd, 0x7b, 0xde, 0x95, 0x96, 0x39, 0xa2, 0xb0, 0x85, 0x5b, 0xaf, 0xe1, 0x08,
		0xaf, 0xb6, 0xbc, 0xb9, 0x5d, 0x6f, 0x6a, 0xf7, 0x9b, 0x29, 0xad, 0xa5, 0x20, 0x4b, 0x9c, 0x6c,
		0xf1, 0xbd, 0xce, 0xde, 0xd1, 0xdc, 0xbb, 0x29, 0x59, 0x83, 0x60, 0xe5, 0x2d, 0x4c, 0x2d, 0x24,
		0xfa, 0xe1, 0xd2, 0x3b, 0x5f, 0xcf, 0x51, 0x36, 0x86, 0xa4, 0x6d, 0x21, 0x68, 0x3e, 0xe4, 0xf4,
		0x1d, 0x97, 0xc9, 0x03, 0xdf, 0x0b, 0x99, 0xbd, 0xee, 0x4a, 0xe7, 0xae, 0x58, 0xb3, 0x77, 0x6c,
		0xd9, 0x3b, 0x96, 0x2c, 0xc7, 0x8e, 0x85, 0x37, 0x18, 0x73, 0xb6, 0x37, 0xb1, 0x8c, 0x08, 0x5f,
		0xf9, 0xd1, 0xeb, 0x3e, 0xf5, 0x59, 0xb0, 0x9b, 0x3a, 0xce, 0xff, 0x32, 0x27, 0x81, 0x3c, 0xa5,
		0x21, 0x90, 0x3b, 0x26, 0x2d, 0xfb, 0x4c, 0x72, 0xfb, 0xa4, 0x0a, 0xa2, 0x94, 0xb3, 0x79, 0xdc,
		0x9f, 0x4a, 0xce, 0xbd, 0x66, 0x3f, 0x0a, 0x79, 0x76, 0x60, 0x0a, 0xb9, 0xa7, 0x69, 0x1c, 0x2f,
		0x97, 0xdc, 0xcf, 0x74, 0x68, 0x48, 0xe5, 0xbe, 0xa2, 0x73, 0xdc, 0x9b, 0xa6, 0xc9, 0x6e, 0x98,
		0x66, 0xfd, 0x42, 0x74, 0x4c, 0xd3, 0xcb, 0xdf, 0xf6, 0x48, 0x3c, 0xd3, 0xcc, 0xc8, 0x3e, 0x49,
		0xcf, 0xf3, 0x6d, 0x26, 0x87, 0x9e, 0x3c, 0xf0, 0xfc, 0x30, 0xf9, 0x96, 0xc9, 0xe2, 0x30, 0x71,
		0x0f, 0x4b, 0xb2, 0x9e, 0xf5, 0xd4, 0x0f, 0x13, 0x9d, 0x62, 0x2f, 0xb5, 0xb4, 0x96, 0x52, 0x12,
		0x7a, 0x5c, 0xfb, 0x48, 0x37, 0x77, 0x12, 0xae, 0xc7, 0xe2, 0xec, 0xf2, 0x24, 0x5b, 0xaf, 0xc7,
		0xb2, 0xdd, 0xc3, 0xdc, 0xa7, 0x47, 0xe6, 0x8f, 0x72, 0x1d, 0x8e, 0xdd, 0x9e, 0x4a, 0x82, 0xd7,
		0x2a, 0xee, 0xd3, 0x63, 0x72, 0xbb, 0x31, 0xbc, 0x4e, 0xe8, 0x3b, 0xee, 0x03, 0xdf, 0x31, 0xa7,
		0xd3, 0x08, 0x83, 0xa1, 0x6f, 0xe0, 0x38, 0x9c, 0x74, 0x16, 0x0d, 0xd2, 0xd6, 0xd5, 0x66, 0x55,
		0xff, 0xc2, 0x33, 0x4e, 0x39, 0x1a, 0xa7, 0xa3, 0xd4, 0xb4, 0x56, 0x3d, 0x1a, 0x29, 0xdd, 0x13,
		0x63, 0x9e, 0xea, 0x86, 0x9c, 0x47, 0xc6, 0x22, 0x18, 0xb9, 0x8a, 0xa9, 0x4e, 0x41, 0x4c, 0x5c,
		0xcf, 0x7e, 0xe4, 0x92, 0xa6, 0x10, 0x5e, 0x49, 0x65, 0x9c, 0xdc, 0xa2, 0xbc, 0xde, 0x26, 0xe6,
		0x6a, 0xcf, 0x77, 0xaf, 0xdf, 0x95, 0xbd, 0x5e, 0x4f, 0x0e, 0x9d, 0x47, 0x8e, 0x2b, 0x3e, 0x8b,
		0xc3, 0x20, 0x7c, 0x23, 0x7c, 0xe7, 0x3e, 0x7c, 0x3f, 0x39, 0x6e, 0xf8, 0xae, 0xcc, 0x11, 0xb9,
		0x13, 0x1c, 0xca, 0x2d, 0xe9, 0xc3, 0xbb, 0x9b, 0x49, 0x68, 0xb8, 0x94, 0xf8, 0x42, 0xa9, 0x34,
		0x3e, 0x5c, 0xc0, 0x7f, 0xec, 0x7c, 0xb8, 0xf5, 0x41, 0x50, 0xf4, 0xfb, 0xc6, 0xb7, 0xec, 0xc8,
		0x23, 0xd7, 0x9d, 0x07, 0x27, 0x69, 0x01, 0xc3, 0xc5, 0x39, 0x65, 0x0f, 0x56, 0xe8, 0xfc, 0x60,
		0x89, 0xea, 0x05, 0x12, 0x70, 0x00, 0x69, 0x7c, 0x1a, 0x83, 0x0e, 0xe2, 0x4a, 0xf9, 0x43, 0xe5,
		0xc3, 0xc5, 0x65, 0xf9, 0xc3, 0x79, 0x7e, 0xb1, 0x4e, 0x89, 0x5f, 0xdc, 0x83, 0x5f, 0x24, 0xe7,
		0x17, 0x89, 0x9a, 0xc5, 0x4c, 0x7d, 0x6c, 0x82, 0xc6, 0x30, 0x60, 0x13, 0x60, 0x13, 0x47, 0xc8,
		0x26, 0x92, 0x5f, 0xf6, 0xe1, 0xb9, 0xe4, 0xb3, 0x70, 0xb9, 0x67, 0xd0, 0xb7, 0xc2, 0x9e, 0xe7,
		0x3f, 0x5e, 0x45, 0xae, 0xc4, 0x73, 0x99, 0x1b, 0x06, 0xeb, 0xbf, 0xbd, 0xf0, 0xdd, 0xf8, 0x37,
		0x1a, 0xe1, 0x21, 0x17, 0xde, 0xde, 0xc0, 0x77, 0x1e, 0x2d, 0xff, 0x59, 0x0e, 0xfe, 0x76, 0x42,
		0xfb, 0xbb, 0xfc, 0xfd, 0x39, 0x08, 0x99, 0xcf, 0x02, 0x27, 0x48, 0xee, 0x36, 0x37, 0x0f, 0x99,
		0xa6, 0xee, 0x7b, 0x0a, 0xd1, 0x17, 0x7e, 0x1e, 0x7e, 0x7e, 0xd1, 0x02, 0xba, 0xcc, 0x76, 0x1e,
		0xad, 0xfe, 0x45, 0x85, 0xc7, 0xd3, 0x27, 0x68, 0x18, 0xb9, 0xca, 0xe3, 0xcb, 0x85, 0x4d, 0x3f,
		0x3f, 0x94, 0xcb, 0xef, 0xde, 0x5d, 0x96, 0x4f, 0xdf, 0x5d, 0xbc, 0x3f, 0xaf, 0x5c, 0x5e, 0x9e,
		0xbf, 0x3f, 0x7d, 0x4f, 0x9d, 0x24, 0x95, 0xe9, 0x92, 0xa4, 0x68, 0x65, 0x1d, 0x7f, 0x3e, 0xba,
		0x8a, 0xf9, 0x65, 0x86, 0x31, 0x47, 0x62, 0x5a, 0x34, 0xda, 0x15, 0x7e, 0xf7, 0x59, 0xf0, 0xdd,
		0xeb, 0x77, 0xc9, 0x58, 0xd7, 0x6c, 0x44, 0x10, 0x1b, 0x10, 0x1b, 0x10, 0x1b, 0x10, 0x1b, 0x10,
		0x1b, 0x10, 0x1b, 0x10, 0x1b, 0x10, 0x1b, 0xb1, 0xc4, 0xc6, 0x67, 0xfd, 0xe1, 0x6c, 0x13, 0x32,
		0x9b, 0xcd, 0x43, 0x42, 0x4f, 0x02, 0xed, 0x02, 0xed, 0x02, 0xed, 0x02, 0xed, 0x02, 0xed, 0x02,
		0xed, 0x02, 0xed, 0x02, 0xed, 0x5a, 0xe1, 0x48, 0xb2, 0xd7, 0xeb, 0x05, 0x2c, 0x14, 0xc0, 0xbe,
		0x26, 0x23, 0x83, 0x84, 0x81, 0x84, 0x81, 0x84, 0x81, 0x84, 0x81, 0x84, 0x81, 0x84, 0x81, 0x84,
		0x81, 0x84, 0x15, 0x99, 0x84, 0xfd, 0x60, 0xfe, 0x78, 0xba, 0x13, 0xb3, 0xad, 0xc9, 0x10, 0xa0,
		0x2e, 0xa0, 0x2e, 0xb9, 0xa7, 0x2e, 0xdf, 0x3c, 0xaf, 0xcf, 0x2c, 0xae, 0x0b, 0xa8, 0x67, 0xf0,
		0x58, 0xc9, 0x3d, 0x56, 0xc0, 0x6c, 0xcf, 0xed, 0xd2, 0x1e, 0x44, 0xd8, 0x32, 0x26, 0x7c, 0x1a,
		0x7c, 0x1a, 0xd2, 0x31, 0xa4, 0x63, 0x48, 0xc7, 0x90, 0x8e, 0x21, 0x1d, 0x43, 0x3a, 0x26, 0x96,
		0xdc, 0xfc, 0x6d, 0x39, 0xa1, 0x1c, 0x7a, 0xb2, 0xcf, 0x82, 0xd0, 0xf3, 0x19, 0x67, 0x8d, 0x81,
		0xb5, 0xa3, 0x81, 0xd0, 0x80, 0xd0, 0xa0, 0xd4, 0xc0, 0x2e, 0x7b, 0x47, 0xa9, 0x01, 0xb2, 0x08,
		0x88, 0x52, 0x03, 0xcb, 0x10, 0xa3, 0xd4, 0x00, 0xd8, 0xc6, 0x4b, 0x41, 0x5b, 0xce, 0x84, 0xbe,
		0xe5, 0x06, 0x03, 0xcf, 0x0f, 0x17, 0x22, 0x90, 0xe3, 0xb9, 0x27, 0xd6, 0x20, 0x38, 0x99, 0x2b,
		0x4c, 0x3c, 0xf7, 0x75, 0xac, 0xc6, 0xee, 0x34, 0x2d, 0xe1, 0x62, 0x55, 0x61, 0x48, 0x52, 0x7d,
		0x21, 0x26, 0xb1, 0x42, 0xe9, 0x53, 0xd1, 0x44, 0x29, 0x8b, 0xa5, 0x4f, 0x63, 0x13, 0x21, 0x8e,
		0xea, 0x08, 0x49, 0xaa, 0x22, 0x4c, 0xab, 0x21, 0xbc, 0x7d, 0x3b, 0x5e, 0xa3, 0x27, 0xfb, 0x57,
		0x37, 0xa0, 0x59, 0xa8, 0x91, 0x2b, 0x09, 0xe2, 0xaf, 0xd4, 0xd1, 0xcb, 0x50, 0xa5, 0x18, 0x4b,
		0x95, 0x68, 0xa9, 0xc6, 0xae, 0x52, 0x6c, 0x7b, 0x8f, 0x8f, 0x9e, 0x2b, 0x27, 0xa0, 0xee, 0x73,
		0xb5, 0xb6, 0x27, 0x43, 0x24, 0x4b, 0xea, 0xcf, 0x90, 0xd4, 0x23, 0xa9, 0x4f, 0x2b, 0xa9, 0x8f,
		0xbb, 0x40, 0xe6, 0x16, 0x4a, 0xac, 0x4a, 0xf4, 0x5b, 0x56, 0x4b, 0x8c, 0xca, 0xf4, 0x44, 0x4b,
		0x86, 0x7b, 0xe9, 0x50, 0x2c, 0x21, 0x01, 0x4b, 0x89, 0x6a, 0x49, 0x91, 0x2f, 0x2d, 0xf2, 0x25,
		0x26, 0x66, 0xa9, 0x71, 0xa6, 0xc9, 0x09, 0x6d, 0x28, 0xe9, 0x12, 0x9c, 0x0e, 0xc0, 0x5c, 0xeb,
		0x5b, 0x9f, 0x75, 0xf9, 0xa7, 0x7b, 0x56, 0xd1, 0x7b, 0x34, 0x20, 0xe7, 0xdc, 0xf0, 0x1c, 0xd0,
		0x5e, 0x19, 0x2c, 0xb2, 0x95, 0x12, 0xd7, 0x30, 0xf7, 0x9c, 0x1f, 0x27, 0x99, 0xe6, 0x4e, 0xee,
		0x73, 0x28, 0x7d, 0x8f, 0x40, 0x1f, 0x44, 0xed, 0x8b, 0x84, 0xf9, 0x24, 0x61, 0xbe, 0x49, 0xac,
		0x8f, 0xe2, 0xf3, 0x55, 0x04, 0xe2, 0xab, 0xc4, 0xb5, 0x27, 0xb0, 0xd1, 0x02, 0x93, 0x1f, 0xe4,
		0xda, 0x48, 0x0e, 0xce, 0x0e, 0x0a, 0x11, 0xa7, 0x5a, 0x29, 0x4e, 0xbd, 0xa4, 0xb3, 0x24, 0x1e,
		0x09, 0x3f, 0xb4, 0xfc, 0x07, 0x16, 0xca, 0x56, 0x18, 0x32, 0xf7, 0x89, 0x06, 0xa6, 0xa9, 0x2d,
		0xad, 0x19, 0x1b, 0x31, 0x00, 0x31, 0x00, 0x31, 0x20, 0xe3, 0x31, 0x80, 0xe7, 0xe0, 0xdb, 0xc6,
		0x28, 0x50, 0x26, 0x18, 0x8b, 0xfa, 0x1c, 0x91, 0xc4, 0xbf, 0x41, 0xbd, 0xfc, 0x87, 0x66, 0x85,
		0x49, 0x54, 0x1b, 0xd8, 0x2b, 0x83, 0x0a, 0x3b, 0x58, 0x97, 0xca, 0x64, 0x2d, 0x9a, 0x2b, 0xd1,
		0xc1, 0x3b, 0xe2, 0x05, 0xb9, 0x38, 0x87, 0xd6, 0xcf, 0x34, 0xe7, 0xf0, 0xf2, 0x88, 0xe7, 0x90,
		0x6f, 0x6b, 0x9d, 0xd6, 0x27, 0xd3, 0x8d, 0x72, 0x0f, 0xf2, 0x2b, 0x98, 0xfc, 0xa6, 0x2a, 0x16,
		0x11, 0x01, 0x4a, 0x7d, 0x14, 0x60, 0xb8, 0x71, 0x77, 0x32, 0xdd, 0xf9, 0x88, 0x75, 0x34, 0x80,
		0x1f, 0xd0, 0x04, 0x60, 0x96, 0x46, 0xbd, 0xbe, 0xb9, 0xe5, 0xeb, 0xd1, 0x30, 0x07, 0x56, 0xaf,
		0xcb, 0x50, 0xaf, 0xd3, 0xc8, 0x12, 0xa0, 0x5e, 0xaf, 0xf9, 0x08, 0xdc, 0xea, 0xb5, 0x90, 0xcc,
		0x1f, 0x29, 0x3f, 0x52, 0x7e, 0xa4, 0xfc, 0x48, 0xf9, 0x91, 0xf2, 0x23, 0xe5, 0x47, 0xca, 0x8f,
		0x94, 0x1f, 0x29, 0x7f, 0x1a, 0x99, 0xf0, 0xef, 0x38, 0xc3, 0xb0, 0x75, 0x30, 0x9c, 0x61, 0x00,
		0x99, 0x05, 0x99, 0xcd, 0x3f, 0x99, 0xcd, 0xde, 0x19, 0x86, 0x83, 0xf8, 0x74, 0x6f, 0x10, 0x3a,
		0xb6, 0xd5, 0x97, 0x07, 0xde, 0xdf, 0xcc, 0xa7, 0xf3, 0xec, 0x8b, 0xc3, 0xd2, 0x38, 0xc4, 0x33,
		0x38, 0x44, 0x38, 0x44, 0x38, 0x44, 0x1a, 0x49, 0x6f, 0x26, 0xed, 0xfd, 0x78, 0xa0, 0x33, 0x91,
		0xa9, 0xb4, 0xf7, 0xe3, 0x81, 0xca, 0x38, 0x68, 0xd8, 0x10, 0xb9, 0x13, 0x10, 0xe1, 0x0c, 0xd6,
		0x39, 0x85, 0xf0, 0x79, 0xc0, 0x82, 0x12, 0x61, 0xe6, 0x49, 0xec, 0x15, 0x84, 0x7b, 0x07, 0xe1,
		0x5e, 0x62, 0x93, 0xb7, 0x18, 0x21, 0x9f, 0xb5, 0xc4, 0x93, 0xc8, 0x6a, 0xc9, 0xf8, 0xd4, 0x8a,
		0xcd, 0x52, 0x8a, 0x84, 0x2b, 0x0c, 0x80, 0x50, 0x66, 0x10, 0xaa, 0x61, 0x10, 0x8b, 0x87, 0x93,
		0x3f, 0xb4, 0x4b, 0x56, 0x12, 0x25, 0x26, 0xee, 0x21, 0x48, 0x11, 0x8b, 0x8a, 0xa9, 0x09, 0x53,
		0xeb, 0x04, 0x2a, 0x52, 0x91, 0x91, 0x78, 0xa1, 0x2f, 0xce, 0xb5, 0x00, 0xd1, 0x71, 0x8f, 0xb9,
		0xbe, 0xcc, 0xd1, 0x5c, 0xd3, 0x8a, 0x91, 0xb4, 0xb1, 0x81, 0x7e, 0xb4, 0xfb, 0x8c, 0x88, 0xa5,
		0x04, 0x8b, 0xa1, 0xe4, 0xb8, 0x41, 0x68, 0xb9, 0x21, 0x3d, 0xd7, 0x9d, 0x0c, 0x0c, 0xbe, 0x0b,
		0xbe, 0x0b, 0xbe, 0x0b, 0xbe, 0x0b, 0xbe, 0x0b, 0xbe, 0x0b, 0xbe, 0x0b, 0xbe, 0x0b, 0xbe, 0x0b,
		0xbe, 0x7b, 0x50, 0xbe, 0x1b, 0x32, 0xff, 0x87, 0xd5, 0x17, 0x41, 0x78, 0xc7, 0x23, 0x83, 0xf1,
		0x82, 0xf1, 0x82, 0xf1, 0x16, 0x8e, 0xf1, 0x06, 0xa1, 0x15, 0xca, 0xc4, 0x4e, 0x60, 0xde, 0x11,
		0x10, 0x72, 0xa5, 0xd2, 0x9d, 0x3b, 0x0a, 0x95, 0x25, 0xd7, 0x72, 0xbd, 0x51, 0xaf, 0x12, 0xd2,
		0xb5, 0x06, 0xde, 0x4b, 0x58, 0x00, 0x79, 0x7f, 0xe6, 0x73, 0x7a, 0xb4, 0xcc, 0xe7, 0x58, 0x69,
		0xee, 0xd9, 0xfb, 0x4a, 0xe5, 0xe2, 0xb2, 0x52, 0x39, 0xbd, 0x7c, 0x77, 0x79, 0xfa, 0xe1, 0xfc,
		0xfc, 0xec, 0xe2, 0xec, 0x1c, 0xb3, 0x0d, 0x9e, 0x7b, 0x70, 0x9e, 0xfb, 0x48, 0x68, 0xfd, 0xd3,
		0x10, 0x17, 0x0d, 0x0a, 0x76, 0x0b, 0x76, 0x0b, 0x76, 0x5b, 0x38, 0x76, 0x0b, 0x3d, 0x17, 0xbc,
		0x76, 0x99, 0xfc, 0x40, 0xcf, 0x2d, 0x0e, 0xd1, 0x85, 0x9e, 0x0b, 0x9e, 0x9b, 0x51, 0x9e, 0x9b,
		0xac, 0xa7, 0xd9, 0x3e, 0x64, 0x37, 0x49, 0x7f, 0x33, 0x30, 0x5e, 0x30, 0x5e, 0x30, 0xde, 0x1c,
		0x30, 0xde, 0x68, 0xed, 0x87, 0x8e, 0xfd, 0x57, 0x20, 0x84, 0xf3, 0x42, 0xcd, 0x85, 0x9a, 0xbb,
		0x83, 0xf7, 0x40, 0xcd, 0x4d, 0x9b, 0xe4, 0x42, 0xcd, 0x05, 0xcb, 0xcd, 0x26, 0xcb, 0x25, 0x74,
		0x6c, 0x33, 0x82, 0xeb, 0xb8, 0xe0, 0xb6, 0xe0, 0xb6, 0xe0, 0xb6, 0xc5, 0xe3, 0xb6, 0x50, 0x73,
		0xc1, 0x6b, 0x97, 0xc9, 0x0f, 0xd4, 0xdc, 0xe2, 0x10, 0x5d, 0xa8, 0xb9, 0xe0, 0xb9, 0x19, 0xe5,
		0xb9, 0xa2, 0xd4, 0xdc, 0xc9, 0xc8, 0x60, 0xbc, 0x60, 0xbc, 0x60, 0xbc, 0x85, 0x63, 0xbc, 0x50,
		0x73, 0xc1, 0x7a, 0xd7, 0x31, 0x21, 0xa8, 0xb9, 0xb9, 0x25, 0xb9, 0x50, 0x73, 0xc1, 0x72, 0xe9,
		0x59, 0x6e, 0xae, 0x7a, 0xd2, 0x08, 0x6e, 0xa5, 0x32, 0xec, 0x30, 0x72, 0x42, 0x59, 0xf4, 0x70,
		0xf4, 0xae, 0x43, 0xff, 0xc9, 0x0e, 0xdd, 0x71, 0x64, 0xaf, 0x0e, 0x02, 0xb3, 0x3a, 0x08, 0x9a,
		0xc3, 0xb7, 0x60, 0xb6, 0xa3, 0xb7, 0x60, 0xd6, 0x86, 0x6f, 0x41, 0x75, 0x4d, 0x6d, 0xf4, 0xec,
		0xf6, 0xf0, 0xd1, 0x68, 0x31, 0x29, 0xa1, 0xc5, 0x24, 0x41, 0xf2, 0x83, 0x8a, 0x94, 0xa8, 0x48,
		0x99, 0x7e, 0x4a, 0x83, 0x7e, 0x13, 0x99, 0x4a, 0x53, 0xd0, 0x6f, 0x62, 0x7f, 0xaa, 0x8a, 0x7e,
		0x13, 0xe8, 0x37, 0x21, 0x44, 0x76, 0x3a, 0xde, 0x7e, 0x13, 0xe8, 0xbc, 0xb8, 0x21, 0x5d, 0x48,
		0xad, 0xf1, 0xe2, 0x2b, 0x81, 0xc8, 0xf3, 0x22, 0x2e, 0x18, 0xe9, 0x52, 0xa2, 0xa6, 0x93, 0xfb,
		0x26, 0x5d, 0xf1, 0x66, 0x70, 0xff, 0x79, 0x88, 0x31, 0x07, 0xa5, 0xf1, 0x47, 0xf5, 0x9e, 0xc2,
		0xc1, 0x53, 0xfc, 0xe2, 0x86, 0x53, 0xaa, 0xb5, 0x38, 0x4c, 0x4c, 0x1b, 0x48, 0x56, 0x9f, 0x3f,
		0x71, 0xf6, 0xc3, 0x93, 0xed, 0x10, 0x66, 0x37, 0xbc, 0xd9, 0x0c, 0x59, 0xf6, 0x42, 0x96, 0xad,
		0xd0, 0x66, 0x27, 0x62, 0xfd, 0x4e, 0xd2, 0xfa, 0xf7, 0x25, 0x7b, 0x62, 0x75, 0x9c, 0x4d, 0x65,
		0xc7, 0xe3, 0x1c, 0xb8, 0xab, 0xec, 0x29, 0xba, 0xca, 0xa6, 0x21, 0x0c, 0xa0, 0xab, 0x2c, 0xe1,
		0x12, 0x84, 0xe6, 0x07, 0xcd, 0x0f, 0x9a, 0x1f, 0x34, 0x3f, 0x68, 0x7e, 0xd0, 0xfc, 0xa0, 0xf9,
		0x41, 0xf3, 0x83, 0xe6, 0x97, 0x4d, 0xcd, 0x2f, 0x63, 0x5b, 0xf8, 0xcf, 0x0f, 0x5e, 0x28, 0x7b,
		0xb6, 0x6c, 0x7b, 0x8f, 0x03, 0x9f, 0x05, 0x01, 0xeb, 0xca, 0x7d, 0x66, 0xf5, 0xa2, 0xc1, 0x5f,
		0x20, 0x6e, 0x66, 0x44, 0x72, 0x1b, 0x09, 0x48, 0x27, 0xe3, 0xe4, 0x38, 0x2d, 0x85, 0x33, 0x91,
		0xca, 0x67, 0x85, 0x8c, 0x5f, 0x05, 0x18, 0x0d, 0x73, 0x60, 0x11, 0xa0, 0x0c, 0x11, 0x00, 0x22,
		0xc0, 0xb1, 0x8a, 0x00, 0x42, 0xb2, 0x7f, 0xa4, 0xfd, 0x48, 0xfb, 0x91, 0xf6, 0x23, 0xed, 0x47,
		0xda, 0x8f, 0xb4, 0x1f, 0x69, 0x3f, 0xd2, 0x7e, 0xa4, 0xfd, 0x69, 0x64, 0xc3, 0x1c, 0x9c, 0x7f,
		0xf1, 0xe8, 0x3c, 0x19, 0x0f, 0xa4, 0x3c, 0x91, 0xcf, 0x99, 0xae, 0x81, 0x09, 0x82, 0x09, 0xe6,
		0x8f, 0x09, 0xf2, 0xa6, 0x7f, 0xb3, 0x34, 0xf0, 0xc7, 0x03, 0xfd, 0x5d, 0xf8, 0x68, 0x50, 0x5c,
		0x83, 0xa7, 0x70, 0x0a, 0xb8, 0x06, 0x2f, 0xda, 0x4b, 0x6c, 0xf2, 0x16, 0xb8, 0x06, 0x7f, 0xf0,
		0x84, 0x52, 0x44, 0x62, 0x99, 0x0a, 0xdf, 0xc5, 0x15, 0x78, 0x09, 0x85, 0x9f, 0xb2, 0x92, 0x98,
		0x0a, 0x4d, 0x50, 0xd3, 0x4f, 0x54, 0x0f, 0x3a, 0xd7, 0xb8, 0x12, 0x7f, 0x88, 0xf7, 0x43, 0xd3,
		0x96, 0x35, 0x08, 0x2d, 0x37, 0x14, 0xd1, 0x95, 0x75, 0x34, 0x30, 0xf8, 0x2e, 0xf8, 0x2e, 0xf8,
		0x2e, 0xf8, 0x2e, 0xf8, 0x2e, 0xf8, 0x2e, 0xf8, 0x2e, 0xf8, 0x2e, 0xf8, 0x2e, 0xf8, 0xee, 0x41,
		0xf9, 0xee, 0xb8, 0x4f, 0xb8, 0x00, 0xc2, 0x4b, 0xda, 0x81, 0x1c, 0x8c, 0x17, 0x8c, 0x17, 0x8c,
		0xf7, 0x88, 0x18, 0x6f, 0x10, 0x5a, 0xa1, 0x4c, 0xec, 0x04, 0x24, 0x94, 0x3a, 0xcd, 0x01, 0xef,
		0x45, 0xa9, 0xd3, 0xdc, 0xd2, 0x5c, 0x94, 0x3a, 0x05, 0xcf, 0xcd, 0x24, 0xcf, 0x7d, 0x24, 0xb4,
		0xfe, 0xf9, 0xce, 0xac, 0x60, 0xb7, 0x60, 0xb7, 0x60, 0xb7, 0xc5, 0x63, 0xb7, 0xd0, 0x73, 0xc1,
		0x6b, 0x97, 0xc9, 0x0f, 0xf4, 0xdc, 0xe2, 0x10, 0x5d, 0xe8, 0xb9, 0xe0, 0xb9, 0x19, 0xe5, 0xb9,
		0xa2, 0x1a, 0x57, 0x4d, 0x46, 0x06, 0xe3, 0x05, 0xe3, 0x05, 0xe3, 0x2d, 0x1c, 0xe3, 0x45, 0xe3,
		0x2a, 0xb0, 0xde, 0x75, 0x4c, 0x08, 0x6a, 0x6e, 0x6e, 0x49, 0x2e, 0xd4, 0x5c, 0xb0, 0xdc, 0x6c,
		0xb2, 0x5c, 0x42, 0xc7, 0x36, 0xdf, 0x99, 0x15, 0xdc, 0x16, 0xdc, 0x16, 0xdc, 0xb6, 0x78, 0xdc,
		0x16, 0x6a, 0x2e, 0x78, 0xed, 0x32, 0xf9, 0x81, 0x9a, 0x5b, 0x1c, 0xa2, 0x0b, 0x35, 0x17, 0x3c,
		0x37, 0xa3, 0x3c, 0x57, 0x94, 0x9a, 0x3b, 0x19, 0x19, 0x8c, 0x17, 0x8c, 0x17, 0x8c, 0xb7, 0x70,
		0x8c, 0x17, 0x6a, 0x2e, 0x58, 0xef, 0x3a, 0x26, 0x04, 0x35, 0x37, 0xb7, 0x24, 0x17, 0x6a, 0x2e,
		0x58, 0x2e, 0x3d, 0xcb, 0xcd, 0x55, 0x0f, 0x83, 0x14, 0x4a, 0xef, 0x0f, 0x2b, 0xd2, 0x9f, 0x50,
		0x16, 0x3e, 0x94, 0xe2, 0x74, 0xc5, 0xd4, 0x86, 0xef, 0xc2, 0xd4, 0x46, 0xcf, 0x6f, 0x0f, 0x1f,
		0x7f, 0x84, 0xf5, 0x28, 0xd1, 0x9a, 0x2c, 0x23, 0xc9, 0x10, 0x2a, 0x53, 0xa2, 0x32, 0xe5, 0x61,
		0x53, 0x1b, 0xd4, 0x28, 0xcf, 0x54, 0xba, 0x82, 0x1a, 0xe5, 0xfb, 0x53, 0x56, 0xd4, 0x28, 0x47,
		0x8d, 0x72, 0x21, 0xf2, 0xd3, 0xf1, 0xd6, 0x28, 0x47, 0xc7, 0xae, 0x2d, 0x69, 0x43, 0x6a, 0x0d,
		0xbb, 0x84, 0xb6, 0x06, 0xe7, 0x44, 0x3d, 0x05, 0xb4, 0x4b, 0x89, 0x1a, 0x96, 0xc5, 0x49, 0xc0,
		0xe2, 0xcd, 0xe4, 0xfe, 0xf3, 0x11, 0x63, 0x2e, 0x4a, 0x63, 0x8c, 0x9c, 0x47, 0xcb, 0x7f, 0x96,
		0x13, 0x04, 0xed, 0x29, 0xf1, 0x5a, 0x1e, 0x28, 0xa6, 0x3d, 0x24, 0xab, 0xdb, 0x9f, 0x38, 0x1b,
		0xe2, 0xc9, 0x7e, 0x08, 0xb3, 0x1d, 0xde, 0xec, 0x86, 0x2c, 0x9b, 0x21, 0xcb, 0x5e, 0x68, 0xb3,
		0x15, 0xb1, 0x3e, 0x28, 0x69, 0x5d, 0xfc, 0x92, 0x3d, 0xb1, 0x3a, 0xce, 0xc6, 0x84, 0xe3, 0x71,
		0x0e, 0xdc, 0x99, 0xf0, 0x14, 0x9d, 0x09, 0xd3, 0x10, 0x0a, 0xd0, 0x99, 0x90, 0x70, 0x09, 0x4e,
		0x07, 0x60, 0xae, 0xf5, 0xad, 0xcf, 0xba, 0x74, 0xc2, 0xdf, 0x64, 0x40, 0xde, 0x9e, 0x1b, 0xac,
		0x67, 0x3d, 0xf5, 0x43, 0x92, 0xdc, 0xbc, 0x14, 0xd9, 0x0a, 0x9f, 0xd4, 0x73, 0x0f, 0xf1, 0x12,
		0xe2, 0x25, 0xc4, 0xcb, 0x8c, 0x8b, 0x97, 0xdf, 0x3c, 0xaf, 0xcf, 0x2c, 0x97, 0x52, 0xba, 0x3c,
		0x43, 0x7b, 0x71, 0xc1, 0x62, 0x05, 0x36, 0xb0, 0x10, 0x03, 0x10, 0x03, 0x10, 0x03, 0x88, 0x2c,
		0x10, 0x1b, 0x58, 0xc9, 0xff, 0x60, 0x03, 0x4b, 0xe4, 0x64, 0x2d, 0x9a, 0x2b, 0x36, 0xb0, 0xb0,
		0x81, 0x25, 0xc6, 0x27, 0xd3, 0x8d, 0x72, 0x0f, 0xf2, 0x2b, 0x98, 0xfc, 0x62, 0xa7, 0x6e, 0xb2,
		0x77, 0xb4, 0xb4, 0xff, 0x71, 0x32, 0xd6, 0x76, 0xd3, 0xda, 0xac, 0x4b, 0xb4, 0x59, 0x65, 0x85,
		0x8c, 0x5f, 0xc4, 0x1e, 0x0d, 0x73, 0x60, 0x0d, 0xbb, 0x0c, 0x0d, 0x3b, 0x8d, 0x5c, 0x01, 0x1a,
		0xf6, 0x9a, 0x8f, 0xc0, 0xad, 0x61, 0x0b, 0xc9, 0xff, 0x91, 0xf8, 0x23, 0xf1, 0x47, 0xe2, 0x8f,
		0xc4, 0x1f, 0x89, 0x3f, 0x12, 0x7f, 0x24, 0xfe, 0x48, 0xfc, 0x91, 0xf8, 0xa7, 0x91, 0x0f, 0xff,
		0x8e, 0x93, 0x0c, 0x5b, 0x07, 0xc3, 0x49, 0x06, 0x90, 0x59, 0x90, 0xd9, 0xfc, 0x93, 0xd9, 0xec,
		0x9d, 0x64, 0x38, 0x88, 0x4f, 0x5f, 0xbc, 0xe1, 0x4b, 0xe6, 0xd9, 0x29, 0x2f, 0x0e, 0x73, 0x4a,
		0x70, 0x70, 0x88, 0x70, 0x88, 0xf9, 0x73, 0x88, 0xbc, 0x92, 0xde, 0x4c, 0xda, 0xfb, 0xf1, 0x40,
		0x5f, 0xb6, 0x2b, 0x1a, 0x14, 0x15, 0xbb, 0x28, 0x9c, 0x02, 0x2a, 0x76, 0x89, 0xf6, 0x12, 0x9b,
		0xbc, 0x05, 0x2a, 0x76, 0x25, 0xb2, 0x59, 0xd4, 0xa8, 0x45, 0xb5, 0xae, 0xdd, 0x82, 0x14, 0x6a,
		0xd4, 0xa6, 0xb3, 0xd0, 0x17, 0xe7, 0x1a, 0x35, 0x6a, 0x79, 0xe7, 0x1a, 0xd5, 0xbb, 0x0e, 0xf1,
		0x7e, 0x28, 0x6a, 0xd4, 0x3a, 0x6e, 0x10, 0x5a, 0xc3, 0xe0, 0x4e, 0xcc, 0x75, 0x27, 0x03, 0x83,
		0xef, 0x82, 0xef, 0x82, 0xef, 0x82, 0xef, 0x82, 0xef, 0x82, 0xef, 0x82, 0xef, 0x82, 0xef, 0x82,
		0xef, 0x82, 0xef, 0x1e, 0x94, 0xef, 0x86, 0xcc, 0xff, 0x61, 0xf5, 0x45, 0x10, 0xde, 0xf1, 0xc8,
		0x60, 0xbc, 0x60, 0xbc, 0x60, 0xbc, 0x85, 0x63, 0xbc, 0x41, 0x68, 0x85, 0x32, 0xb1, 0x13, 0x90,
		0xd0, 0x95, 0x21, 0x07, 0xbc, 0x17, 0x5d, 0x19, 0x72, 0x4b, 0x73, 0xd1, 0x95, 0x01, 0x3c, 0x37,
		0x93, 0x3c, 0xf7, 0x91, 0xd0, 0xfa, 0x67, 0x6d, 0xc7, 0xac, 0x9f, 0x60, 0xb7, 0x60, 0xb7, 0x60,
		0xb7, 0xc5, 0x63, 0xb7, 0xd0, 0x73, 0xc1, 0x6b, 0x97, 0xc9, 0x0f, 0xf4, 0xdc, 0xe2, 0x10, 0x5d,
		0xe8, 0xb9, 0xe0, 0xb9, 0x19, 0xe5, 0xb9, 0xa2, 0x7a, 0xec, 0x4e, 0x46, 0x06, 0xe3, 0x05, 0xe3,
		0x05, 0xe3, 0x2d, 0x1c, 0xe3, 0x45, 0x8f, 0x5d, 0xb0, 0xde, 0x75, 0x4c, 0x08, 0x6a, 0x6e, 0x6e,
		0x49, 0x2e, 0xd4, 0x5c, 0xb0, 0xdc, 0x6c, 0xb2, 0x5c, 0x42, 0xc7, 0x36, 0x23, 0xb8, 0x8e, 0x0b,
		0x6e, 0x0b, 0x6e, 0x0b, 0x6e, 0x5b, 0x3c, 0x6e, 0x0b, 0x35, 0x17, 0xbc, 0x76, 0x99, 0xfc, 0x40,
		0xcd, 0x2d, 0x0e, 0xd1, 0x85, 0x9a, 0x0b, 0x9e, 0x9b, 0x51, 0x9e, 0x2b, 0x4a, 0xcd, 0x9d, 0x8c,
		0x0c, 0xc6, 0x0b, 0xc6, 0x0b, 0xc6, 0x5b, 0x38, 0xc6, 0x0b, 0x35, 0x17, 0xac, 0x77, 0x1d, 0x13,
		0x82, 0x9a, 0x9b, 0x5b, 0x92, 0x0b, 0x35, 0x17, 0x2c, 0x97, 0x9e, 0xe5, 0xe6, 0xaa, 0x33, 0x4d,
		0x2a, 0x0d, 0x55, 0x86, 0x7d, 0x46, 0x4e, 0x28, 0x4b, 0x1f, 0x4a, 0xfb, 0xb5, 0xec, 0x6f, 0x38,
		0x2e, 0x6b, 0x8f, 0xde, 0x87, 0xea, 0x9a, 0xda, 0xe8, 0x0d, 0xb4, 0x87, 0xcf, 0x47, 0xcf, 0x49,
		0x09, 0x3d, 0x27, 0x09, 0xf2, 0x20, 0x14, 0xa7, 0x44, 0x71, 0xca, 0xf4, 0xb3, 0x1b, 0xb4, 0x9e,
		0xc8, 0x54, 0xc6, 0x82, 0xd6, 0x13, 0xfb, 0xb3, 0x56, 0xb4, 0x9e, 0x40, 0xeb, 0x09, 0x21, 0x0a,
		0xd4, 0xf1, 0xb6, 0x9e, 0x40, 0x2b, 0xc6, 0xad, 0x99, 0x43, 0x6a, 0x9d, 0x18, 0x5f, 0x09, 0xc4,
		0x9f, 0x17, 0xf7, 0x54, 0xf0, 0x2e, 0x25, 0xea, 0x45, 0x19, 0x2b, 0x0b, 0x8b, 0x37, 0x99, 0xfb,
		0x4f, 0x49, 0x8c, 0xe9, 0x28, 0x2d, 0x7c, 0x6a, 0xef, 0x29, 0x7e, 0xed, 0xc3, 0x29, 0xfd, 0x5a,
		0x19, 0x29, 0xa6, 0x51, 0x24, 0xab, 0xe0, 0x9f, 0x38, 0x29, 0xe2, 0x49, 0x82, 0x08, 0x93, 0x1e,
		0xde, 0x24, 0x87, 0x2c, 0xa9, 0x21, 0x4b, 0x62, 0x68, 0x93, 0x16, 0xb1, 0x8e, 0x28, 0x69, 0x85,
		0xfc, 0x92, 0x3d, 0xb1, 0x3a, 0xce, 0xb6, 0xb3, 0xe3, 0x71, 0x0e, 0xdc, 0x77, 0xf6, 0x14, 0x7d,
		0x67, 0xd3, 0xd0, 0x0b, 0xd0, 0x77, 0x96, 0x70, 0x09, 0x42, 0x0a, 0x84, 0x14, 0x08, 0x29, 0x10,
		0x52, 0x20, 0xa4, 0x40, 0x48, 0x81, 0x90, 0x02, 0x21, 0x05, 0x42, 0x0a, 0xcc, 0xa6, 0x14, 0x98,
		0xb1, 0x4d, 0xfe, 0xe7, 0x07, 0x2f, 0x94, 0x3d, 0x5b, 0xb6, 0xbd, 0xc7, 0x81, 0xcf, 0x82, 0x80,
		0x75, 0xe5, 0x3e, 0xb3, 0x7a, 0xd1, 0xe0, 0x2f, 0xd0, 0x3c, 0x33, 0xa5, 0xc1, 0x79, 0x4f, 0xe1,
		0xc9, 0x38, 0x3f, 0x4e, 0x4b, 0xf5, 0x4c, 0xa4, 0xf9, 0x59, 0x21, 0xe3, 0x17, 0x02, 0x46, 0xc3,
		0x1c, 0x58, 0x07, 0x28, 0x43, 0x07, 0x80, 0x0e, 0x70, 0xac, 0x3a, 0x80, 0x10, 0x01, 0x00, 0x99,
		0x3f, 0x32, 0x7f, 0x64, 0xfe, 0xc8, 0xfc, 0x91, 0xf9, 0x23, 0xf3, 0x47, 0xe6, 0x8f, 0xcc, 0x1f,
		0x99, 0x7f, 0x1a, 0x09, 0x31, 0x07, 0xe7, 0x5f, 0x3c, 0x59, 0x4f, 0xc6, 0x03, 0x29, 0x0f, 0xec,
		0x73, 0xa6, 0x6b, 0x60, 0x82, 0x60, 0x82, 0xf9, 0x63, 0x82, 0xbc, 0xe9, 0xdf, 0x2c, 0x0d, 0xfc,
		0xf1, 0x40, 0x7f, 0x61, 0x3e, 0x1a, 0x14, 0x77, 0xe5, 0x29, 0x9c, 0x02, 0xee, 0xca, 0x8b, 0xf6,
		0x12, 0x9b, 0xbc, 0x05, 0xee, 0xca, 0x1f, 0x3c, 0xa1, 0x14, 0x91, 0x58, 0xa6, 0xc2, 0x77, 0x71,
		0x4f, 0x5e, 0x42, 0x75, 0xa8, 0xac, 0x24, 0xa6, 0x42, 0x13, 0xd4, 0xf4, 0x13, 0xd5, 0x83, 0xce,
		0x35, 0xee, 0xcd, 0x1f, 0xe2, 0xfd, 0xd0, 0xf4, 0x6e, 0x0d, 0x42, 0xcb, 0x0d, 0x45, 0xb4, 0x6e,
		0x1d, 0x0d, 0x0c, 0xbe, 0x0b, 0xbe, 0x0b, 0xbe, 0x0b, 0xbe, 0x0b, 0xbe, 0x0b, 0xbe, 0x0b, 0xbe,
		0x0b, 0xbe, 0x0b, 0xbe, 0x0b, 0xbe, 0x7b, 0x50, 0xbe, 0x3b, 0x6e, 0x26, 0x2e, 0x80, 0xf0, 0x92,
		0xb6, 0x29, 0x07, 0xe3, 0x05, 0xe3, 0x05, 0xe3, 0x3d, 0x22, 0xc6, 0x1b, 0x84, 0x56, 0x28, 0x13,
		0x3b, 0x01, 0x09, 0xf5, 0x50, 0x73, 0xc0, 0x7b, 0x51, 0x0f, 0x35, 0xb7, 0x34, 0x17, 0xf5, 0x50,
		0xc1, 0x73, 0x33, 0xc9, 0x73, 0x1f, 0x09, 0xad, 0x7f, 0xbe, 0x7d, 0x2b, 0xd8, 0x2d, 0xd8, 0x2d,
		0xd8, 0x6d, 0xf1, 0xd8, 0x2d, 0xf4, 0x5c, 0xf0, 0xda, 0x65, 0xf2, 0x03, 0x3d, 0xb7, 0x38, 0x44,
		0x17, 0x7a, 0x2e, 0x78, 0x6e, 0x46, 0x79, 0xae, 0xa8, 0xee, 0x56, 0x93, 0x91, 0xc1, 0x78, 0xc1,
		0x78, 0xc1, 0x78, 0x0b, 0xc7, 0x78, 0xd1, 0xdd, 0x0a, 0xac, 0x77, 0x1d, 0x13, 0x82, 0x9a, 0x9b,
		0x5b, 0x92, 0x0b, 0x35, 0x17, 0x2c, 0x37, 0x9b, 0x2c, 0x97, 0xd0, 0xb1, 0xcd, 0xb7, 0x6f, 0x05,
		0xb7, 0x05, 0xb7, 0x05, 0xb7, 0x2d, 0x1e, 0xb7, 0x85, 0x9a, 0x0b, 0x5e, 0xbb, 0x4c, 0x7e, 0xa0,
		0xe6, 0x16, 0x87, 0xe8, 0x42, 0xcd, 0x05, 0xcf, 0xcd, 0x28, 0xcf, 0x15, 0xa5, 0xe6, 0x4e, 0x46,
		0x06, 0xe3, 0x05, 0xe3, 0x05, 0xe3, 0x2d, 0x1c, 0xe3, 0x85, 0x9a, 0x0b, 0xd6, 0xbb, 0x8e, 0x09,
		0x41, 0xcd, 0xcd, 0x2d, 0xc9, 0x85, 0x9a, 0x0b, 0x96, 0x4b, 0xcf, 0x72, 0x73, 0xd5, 0xc6, 0x20,
		0x9d, 0xea, 0xfb, 0xc3, 0xa2, 0xf4, 0x27, 0x94, 0xb5, 0x0f, 0xa5, 0xd8, 0x6d, 0x32, 0xb5, 0xa7,
		0xd0, 0xd4, 0x46, 0xef, 0xa0, 0x3d, 0x7c, 0x03, 0x47, 0x58, 0x94, 0x12, 0x2d, 0xca, 0x32, 0x92,
		0x11, 0xa1, 0x3c, 0x25, 0xca, 0x53, 0x1e, 0x36, 0xbf, 0x41, 0xa1, 0xf2, 0x4c, 0xe5, 0x2c, 0x28,
		0x54, 0xbe, 0x3f, 0x6f, 0x45, 0xa1, 0x72, 0x14, 0x2a, 0x17, 0xa2, 0x41, 0x1d, 0x6f, 0xa1, 0x72,
		0x74, 0xee, 0xda, 0x9e, 0x3b, 0xa4, 0xd6, 0xb8, 0x4b, 0x68, 0x97, 0x70, 0x4e, 0xe0, 0xd3, 0x01,
		0xbc, 0x94, 0xa8, 0x77, 0x59, 0xbc, 0x44, 0x2c, 0xde, 0x74, 0xee, 0x3f, 0x29, 0x31, 0x26, 0xa4,
		0x34, 0xfc, 0xdc, 0x23, 0x75, 0x35, 0xfa, 0xe4, 0x09, 0xc2, 0xf7, 0x94, 0x82, 0xad, 0x0e, 0x15,
		0xd3, 0x30, 0x92, 0x15, 0xf2, 0x4f, 0x9c, 0x19, 0xf1, 0x64, 0x42, 0x84, 0x99, 0x0f, 0x6f, 0xa6,
		0x43, 0x96, 0xd9, 0x90, 0x65, 0x32, 0xb4, 0x99, 0x8b, 0x58, 0x67, 0x94, 0xb4, 0x50, 0x7e, 0xc9,
		0x9e, 0x58, 0x1d, 0x67, 0xa7, 0xc2, 0xf1, 0x38, 0x07, 0x6e, 0x55, 0x78, 0x8a, 0x56, 0x85, 0x69,
		0x88, 0x06, 0x68, 0x55, 0x48, 0xb8, 0x04, 0xa7, 0x03, 0x30, 0xd7, 0xfa, 0xd6, 0x67, 0x5d, 0x3a,
		0x11, 0x70, 0x32, 0x20, 0x6f, 0x13, 0x0e, 0xd6, 0xb3, 0x9e, 0xfa, 0x21, 0x49, 0x9e, 0x5e, 0x8a,
		0x6c, 0x85, 0x4f, 0xf6, 0xb9, 0x87, 0x90, 0x09, 0x21, 0x13, 0x42, 0x66, 0xc6, 0x85, 0xcc, 0x6f,
		0x9e, 0xd7, 0x67, 0x96, 0x4b, 0x29, 0x63, 0x9e, 0xa1, 0xe5, 0xb8, 0x60, 0xe1, 0x02, 0x9b, 0x59,
		0x88, 0x01, 0x88, 0x01, 0x88, 0x01, 0x44, 0x16, 0x88, 0xcd, 0xac, 0xe4, 0x7f, 0xb0, 0x99, 0x25,
		0x72, 0xb2, 0x16, 0xcd, 0x15, 0x9b, 0x59, 0xd8, 0xcc, 0x12, 0xe3, 0x93, 0xe9, 0x46, 0xb9, 0x07,
		0xf9, 0x15, 0x4c, 0x7e, 0xb1, 0x6b, 0xb7, 0xb0, 0x89, 0x34, 0xbf, 0x03, 0x72, 0x32, 0x56, 0x77,
		0xd3, 0xda, 0xb7, 0x4b, 0xb4, 0x69, 0x65, 0x85, 0x8c, 0x5f, 0xc6, 0x1e, 0x0d, 0x73, 0x60, 0x15,
		0xbb, 0x0c, 0x15, 0x3b, 0x8d, 0x6c, 0x01, 0x2a, 0xf6, 0x9a, 0x8f, 0xc0, 0xad, 0x62, 0x0b, 0x51,
		0x00, 0x90, 0xfa, 0x23, 0xf5, 0x47, 0xea, 0x8f, 0xd4, 0x1f, 0xa9, 0x3f, 0x52, 0x7f, 0xa4, 0xfe,
		0x48, 0xfd, 0x91, 0xfa, 0xa7, 0x91, 0x11, 0xff, 0x8e, 0xb3, 0x0c, 0x5b, 0x07, 0xc3, 0x59, 0x06,
		0x90, 0x59, 0x90, 0xd9, 0xfc, 0x93, 0xd9, 0xec, 0x9d, 0x65, 0x38, 0x88, 0x4f, 0x5f, 0xbc, 0xf1,
		0x4b, 0xe6, 0xd9, 0x29, 0x2f, 0x12, 0x73, 0x4a, 0x70, 0x70, 0x88, 0x70, 0x88, 0xf9, 0x73, 0x88,
		0xbc, 0x92, 0xde, 0x4c, 0xda, 0xfb, 0xf1, 0x40, 0x5f, 0xc9, 0x2b, 0x1a, 0x14, 0x45, 0xbc, 0x28,
		0x9c, 0x02, 0x8a, 0x78, 0x89, 0xf6, 0x12, 0x9b, 0xbc, 0x05, 0x8a, 0x78, 0x25, 0xb2, 0x59, 0x94,
		0xad, 0x45, 0x01, 0xaf, 0xdd, 0x82, 0x14, 0xca, 0xd6, 0xa6, 0xb3, 0xd0, 0x17, 0xe7, 0x1a, 0x65,
		0x6b, 0x79, 0xe7, 0x1a, 0x05, 0xbd, 0x0e, 0xf1, 0x7e, 0x28, 0xca, 0xd6, 0x3a, 0x6e, 0x10, 0x5a,
		0xc3, 0xe0, 0x4e, 0xcc, 0x75, 0x27, 0x03, 0x83, 0xef, 0x82, 0xef, 0x82, 0xef, 0x82, 0xef, 0x82,
		0xef, 0x82, 0xef, 0x82, 0xef, 0x82, 0xef, 0x82, 0xef, 0x82, 0xef, 0x1e, 0x94, 0xef, 0x86, 0xcc,
		0xff, 0x61, 0xf5, 0x45, 0x10, 0xde, 0xf1, 0xc8, 0x60, 0xbc, 0x60, 0xbc, 0x60, 0xbc, 0x85, 0x63,
		0xbc, 0x41, 0x68, 0x85, 0x32, 0xb1, 0x13, 0x90, 0xd0, 0xa8, 0x21, 0x07, 0xbc, 0x17, 0x8d, 0x1a,
		0x72, 0x4b, 0x73, 0xd1, 0xa8, 0x01, 0x3c, 0x37, 0x93, 0x3c, 0xf7, 0x91, 0xd0, 0xfa, 0x67, 0x9d,
		0xc8, 0xac, 0x9f, 0x60, 0xb7, 0x60, 0xb7, 0x60, 0xb7, 0xc5, 0x63, 0xb7, 0xd0, 0x73, 0xc1, 0x6b,
		0x97, 0xc9, 0x0f, 0xf4, 0xdc, 0xe2, 0x10, 0x5d, 0xe8, 0xb9, 0xe0, 0xb9, 0x19, 0xe5, 0xb9, 0xa2,
		0xda, 0xee, 0x4e, 0x46, 0x06, 0xe3, 0x05, 0xe3, 0x05, 0xe3, 0x2d, 0x1c, 0xe3, 0x45, 0xdb, 0x5d,
		0xb0, 0xde, 0x75, 0x4c, 0x08, 0x6a, 0x6e, 0x6e, 0x49, 0x2e, 0xd4, 0x5c, 0xb0, 0xdc, 0x6c, 0xb2,
		0x5c, 0x42, 0xc7, 0x36, 0x23, 0xb8, 0x8e, 0x0b, 0x6e, 0x0b, 0x6e, 0x0b, 0x6e, 0x5b, 0x3c, 0x6e,
		0x0b, 0x35, 0x17, 0xbc, 0x76, 0x99, 0xfc, 0x40, 0xcd, 0x2d, 0x0e, 0xd1, 0x85, 0x9a, 0x0b, 0x9e,
		0x9b, 0x51, 0x9e, 0x2b, 0x4a, 0xcd, 0x9d, 0x8c, 0x0c, 0xc6, 0x0b, 0xc6, 0x0b, 0xc6, 0x5b, 0x38,
		0xc6, 0x0b, 0x35, 0x17, 0xac, 0x77, 0x1d, 0x13, 0x82, 0x9a, 0x9b, 0x5b, 0x92, 0x0b, 0x35, 0x17,
		0x2c, 0x97, 0x9e, 0xe5, 0xe6, 0xaa, 0x37, 0x4d, 0x4a, 0x2d, 0x55, 0x86, 0x9d, 0x46, 0x4e, 0x28,
		0x8b, 0x1f, 0x4a, 0xfb, 0x37, 0xef, 0xef, 0x4c, 0xde, 0x89, 0xea, 0x9a, 0xda, 0xe8, 0x2d, 0xb4,
		0x87, 0xef, 0x00, 0x9d, 0x27, 0x25, 0x74, 0x9e, 0x24, 0xc8, 0x85, 0x50, 0xa0, 0x12, 0x05, 0x2a,
		0xd3, 0xcf, 0x70, 0xd0, 0x7e, 0x22, 0x53, 0x59, 0x0b, 0xda, 0x4f, 0xec, 0xcf, 0x5c, 0xd1, 0x7e,
		0x02, 0xed, 0x27, 0x84, 0xa8, 0x50, 0xc7, 0xdb, 0x7e, 0x02, 0x0d, 0x19, 0x77, 0x64, 0x0f, 0xa9,
		0xf5, 0x63, 0x7c, 0x25, 0x70, 0x06, 0x78, 0x91, 0x4f, 0x09, 0xf1, 0x52, 0xa2, 0x9e, 0x94, 0x31,
		0x73, 0xb1, 0x78, 0x13, 0xba, 0xff, 0xb4, 0xc4, 0x98, 0x92, 0xd2, 0xd2, 0x27, 0xf7, 0x9e, 0xe2,
		0xd7, 0x41, 0x9c, 0xd2, 0xb0, 0x35, 0x63, 0xc5, 0x34, 0x8e, 0x64, 0xf5, 0xfc, 0x13, 0xa7, 0x47,
		0x3c, 0xe9, 0x10, 0x61, 0xfa, 0xc3, 0x9b, 0xee, 0x90, 0xa5, 0x37, 0x64, 0xe9, 0x0c, 0x6d, 0xfa,
		0x22, 0xd6, 0x21, 0x25, 0xad, 0x97, 0x5f, 0xb2, 0x27, 0x56, 0xc7, 0xd9, 0x84, 0x76, 0x3c, 0xce,
		0x81, 0xbb, 0xd0, 0x9e, 0xa2, 0x0b, 0x6d, 0x1a, 0xca, 0x01, 0xba, 0xd0, 0x12, 0x2e, 0x41, 0x88,
		0x82, 0x10, 0x05, 0x21, 0x0a, 0x42, 0x14, 0x84, 0x28, 0x08, 0x51, 0x10, 0xa2, 0x20, 0x44, 0x41,
		0x88, 0x82, 0xd9, 0x14, 0x05, 0x33, 0xb6, 0xe5, 0xff, 0xfc, 0xe0, 0x85, 0xb2, 0x67, 0xcb, 0xb6,
		0xf7, 0x38, 0xf0, 0x59, 0x10, 0xb0, 0xae, 0xdc, 0x67, 0x56, 0x2f, 0x1a, 0xfc, 0x05, 0xea, 0x67,
		0xc6, 0xb4, 0x38, 0xef, 0x29, 0x3c, 0x19, 0x67, 0xc8, 0x69, 0xe9, 0x9f, 0x89, 0xb4, 0x3f, 0x2b,
		0x64, 0xfc, 0x52, 0xc0, 0x68, 0x98, 0x03, 0x2b, 0x01, 0x65, 0x28, 0x01, 0x50, 0x02, 0x8e, 0x55,
		0x09, 0x10, 0x22, 0x01, 0x20, 0xf7, 0x47, 0xee, 0x8f, 0xdc, 0x1f, 0xb9, 0x3f, 0x72, 0x7f, 0xe4,
		0xfe, 0xc8, 0xfd, 0x91, 0xfb, 0x23, 0xf7, 0x4f, 0x23, 0x25, 0xe6, 0xe0, 0xfc, 0x8b, 0xe7, 0xec,
		0xc9, 0x78, 0x20, 0xe5, 0xf1, 0x7d, 0xce, 0x74, 0x0d, 0x4c, 0x10, 0x4c, 0x30, 0x7f, 0x4c, 0x90,
		0x37, 0xfd, 0x9b, 0xa5, 0x81, 0x3f, 0x1e, 0xe8, 0x2f, 0xd0, 0x47, 0x83, 0xe2, 0xee, 0x3c, 0x85,
		0x53, 0xc0, 0xdd, 0x79, 0xd1, 0x5e, 0x62, 0x93, 0xb7, 0xc0, 0xdd, 0xf9, 0x83, 0x27, 0x94, 0x22,
		0x12, 0xcb, 0x54, 0xf8, 0x2e, 0xee, 0xcd, 0x4b, 0xa8, 0x16, 0x95, 0x95, 0xc4, 0x54, 0x68, 0x82,
		0x9a, 0x7e, 0xa2, 0x7a, 0xd0, 0xb9, 0xc6, 0x3d, 0xfa, 0x43, 0xbc, 0x1f, 0x9a, 0x5e, 0xae, 0x41,
		0x68, 0xb9, 0xa1, 0x88, 0x56, 0xae, 0xa3, 0x81, 0xc1, 0x77, 0xc1, 0x77, 0xc1, 0x77, 0xc1, 0x77,
		0xc1, 0x77, 0xc1, 0x77, 0xc1, 0x77, 0xc1, 0x77, 0xc1, 0x77, 0xc1, 0x77, 0x0f, 0xca, 0x77, 0xc7,
		0xcd, 0xc5, 0x05, 0x10, 0x5e, 0xd2, 0xb6, 0xe5, 0x60, 0xbc, 0x60, 0xbc, 0x60, 0xbc, 0x47, 0xc4,
		0x78, 0x83, 0xd0, 0x0a, 0x65, 0x62, 0x27, 0x20, 0xa1, 0x3e, 0x6a, 0x0e, 0x78, 0x2f, 0xea, 0xa3,
		0xe6, 0x96, 0xe6, 0xa2, 0x3e, 0x2a, 0x78, 0x6e, 0x26, 0x79, 0xee, 0x23, 0xa1, 0xf5, 0xcf, 0xb7,
		0x73, 0x05, 0xbb, 0x05, 0xbb, 0x05, 0xbb, 0x2d, 0x1e, 0xbb, 0x85, 0x9e, 0x0b, 0x5e, 0xbb, 0x4c,
		0x7e, 0xa0, 0xe7, 0x16, 0x87, 0xe8, 0x42, 0xcf, 0x05, 0xcf, 0xcd, 0x28, 0xcf, 0x15, 0xd5, 0xed,
		0x6a, 0x32, 0x32, 0x18, 0x2f, 0x18, 0x2f, 0x18, 0x6f, 0xe1, 0x18, 0x2f, 0xba, 0x5d, 0x81, 0xf5,
		0xae, 0x63, 0x42, 0x50, 0x73, 0x73, 0x4b, 0x72, 0xa1, 0xe6, 0x82, 0xe5, 0x66, 0x93, 0xe5, 0x12,
		0x3a, 0xb6, 0xf9, 0x76, 0xae, 0xe0, 0xb6, 0xe0, 0xb6, 0xe0, 0xb6, 0xc5, 0xe3, 0xb6, 0x50, 0x73,
		0xc1, 0x6b, 0x97, 0xc9, 0x0f, 0xd4, 0xdc, 0xe2, 0x10, 0x5d, 0xa8, 0xb9, 0xe0, 0xb9, 0x19, 0xe5,
		0xb9, 0xa2, 0xd4, 0xdc, 0xc9, 0xc8, 0x60, 0xbc, 0x60, 0xbc, 0x60, 0xbc, 0x85, 0x63, 0xbc, 0x50,
		0x73, 0xc1, 0x7a, 0xd7, 0x31, 0x21, 0xa8, 0xb9, 0xb9, 0x25, 0xb9, 0x50, 0x73, 0xc1, 0x72, 0xe9,
		0x59, 0x6e, 0xae, 0x1a, 0x19, 0xa4, 0x55, 0x7f, 0x7f, 0x58, 0x96, 0xfe, 0x84, 0xb2, 0xfa, 0xa1,
		0x94, 0xa0, 0x61, 0xa6, 0xf6, 0x14, 0x9a, 0xda, 0xe8, 0x3d, 0xb4, 0x87, 0x6f, 0xe1, 0x08, 0x0b,
		0x53, 0xa2, 0x51, 0x59, 0x46, 0xb2, 0x22, 0x94, 0xa8, 0x44, 0x89, 0xca, 0xc3, 0xe6, 0x38, 0x28,
		0x56, 0x9e, 0xa9, 0xbc, 0x05, 0xc5, 0xca, 0xf7, 0xe7, 0xae, 0x28, 0x56, 0x8e, 0x62, 0xe5, 0x42,
		0x74, 0xa8, 0xe3, 0x2d, 0x56, 0x8e, 0xfe, 0x5d, 0xbb, 0xf2, 0x87, 0xd4, 0xda, 0x77, 0x09, 0xed,
		0x16, 0xce, 0x09, 0x7d, 0x5a, 0x90, 0x97, 0x12, 0xf5, 0x30, 0x8b, 0x9b, 0x8e, 0xc5, 0x9b, 0xd2,
		0xfd, 0x27, 0x66, 0xbf, 0xdf, 0xdc, 0x73, 0xea, 0x92, 0x4e, 0x99, 0x90, 0xa9, 0x8a, 0x31, 0x2f,
		0xbb, 0xe7, 0x63, 0x3f, 0xf8, 0x77, 0x83, 0xb9, 0x07, 0x90, 0x31, 0x1b, 0xdc, 0x25, 0x6a, 0x68,
		0x17, 0xb3, 0x23, 0x42, 0xec, 0x86, 0x75, 0x49, 0xd2, 0x47, 0x82, 0x34, 0x31, 0x69, 0x3a, 0xc8,
		0x9d, 0xf6, 0x71, 0xa7, 0x77, 0x34, 0x69, 0x1c, 0xed, 0x62, 0x8e, 0xdb, 0x21, 0xa0, 0x14, 0x31,
		0xaa, 0x1f, 0x4c, 0x1e, 0x2f, 0xe3, 0x98, 0x53, 0x30, 0xad, 0xfc, 0x3f, 0x37, 0x48, 0x4c, 0x0c,
		0x93, 0x69, 0x28, 0x89, 0x35, 0x13, 0x1e, 0x8d, 0x84, 0x50, 0x13, 0xe1, 0xd5, 0x40, 0xc8, 0x34,
		0x0f, 0x32, 0x8d, 0x83, 0x56, 0xd3, 0x10, 0x4b, 0x52, 0x12, 0x6b, 0x14, 0xb3, 0x6a, 0x68, 0x5d,
		0xe6, 0x86, 0x4e, 0xf8, 0xec, 0xb3, 0x5e, 0x92, 0xd9, 0x9f, 0x78, 0xf2, 0x04, 0x1b, 0x36, 0x25,
		0x75, 0xfc, 0xe8, 0x6b, 0x2b, 0x20, 0xe8, 0xa8, 0x5a, 0x6d, 0x77, 0xcc, 0x76, 0xd5, 0xb8, 0xed,
		0x24, 0xb5, 0x9f, 0x61, 0xf6, 0x17, 0x70, 0x09, 0x16, 0x44, 0xfa, 0x6e, 0x5b, 0x57, 0x9b, 0x55,
		0xfd, 0x4b, 0xe9, 0x10, 0xc2, 0x35, 0xd1, 0x47, 0xe8, 0x28, 0x35, 0xad, 0x55, 0xe7, 0xfb, 0x10,
		0xaf, 0xd2, 0xc9, 0x0b, 0x5f, 0x44, 0x71, 0xdb, 0x18, 0xcc, 0xa1, 0xe7, 0xf9, 0x36, 0x93, 0x43,
		0x4f, 0x8e, 0xb8, 0x63, 0xf2, 0xe8, 0xb5, 0x38, 0x4c, 0x4c, 0x5f, 0x52, 0x67, 0x3d, 0xeb, 0xa9,
		0x1f, 0x26, 0x5a, 0x00, 0xa5, 0x96, 0xd6, 0x52, 0xe2, 0x4d, 0xf5, 0x3d, 0xc2, 0x2b, 0xc2, 0x6b,
		0xee, 0xc3, 0x2b, 0x73, 0x9f, 0x1e, 0x99, 0x9f, 0x74, 0x8f, 0x6e, 0x1a, 0x5e, 0x2b, 0x09, 0x5e,
		0xab, 0xb8, 0x4f, 0x8f, 0xc9, 0xed, 0xc6, 0xf0, 0x3a, 0xa1, 0xef, 0xb8, 0x7c, 0xcd, 0xb5, 0x4a,
		0xa7, 0x11, 0x06, 0x43, 0xdf, 0xc0, 0xb1, 0x95, 0x7a, 0x36, 0x1f, 0x13, 0x39, 0xc6, 0x29, 0x13,
		0x04, 0xa6, 0xa4, 0x42, 0x9e, 0xe1, 0xa9, 0x9c, 0xcd, 0x1b, 0x46, 0x30, 0x72, 0x6d, 0xad, 0x4e,
		0x41, 0xe4, 0x6a, 0x46, 0x38, 0x07, 0xe1, 0x95, 0x54, 0xce, 0xa6, 0xd6, 0x27, 0x24, 0x48, 0x7f,
		0xf7, 0xfa, 0x5d, 0xd9, 0xeb, 0xf5, 0x92, 0x9d, 0x7c, 0x9e, 0xba, 0x84, 0xc5, 0x61, 0x10, 0x05,
		0x11, 0x05, 0x73, 0x1f, 0x05, 0x9f, 0x1c, 0x37, 0x7c, 0x57, 0xe6, 0x08, 0x80, 0x09, 0xf6, 0xdf,
		0x38, 0xf7, 0x9f, 0x39, 0x1c, 0x35, 0xc5, 0xfe, 0x32, 0xd5, 0xb9, 0x57, 0xf2, 0x13, 0x8f, 0x74,
		0x3b, 0x8b, 0x3c, 0xa7, 0xab, 0x28, 0xb6, 0x7f, 0xa7, 0x10, 0x57, 0xca, 0x1f, 0x2a, 0x1f, 0x2e,
		0x2e, 0xcb, 0x1f, 0xce, 0xf3, 0x8b, 0x75, 0x4a, 0x61, 0xfa, 0x3e, 0x03, 0x61, 0x7a, 0xbc, 0x8f,
		0x92, 0x30, 0x3a, 0x0f, 0x5f, 0x8d, 0xa0, 0x8c, 0xa0, 0x9c, 0xfb, 0xa0, 0xdc, 0x67, 0x56, 0x8f,
		0x53, 0xf5, 0x4d, 0x12, 0x96, 0xdb, 0xd3, 0x6d, 0x56, 0x5b, 0x1e, 0xf4, 0xad, 0xb0, 0xe7, 0xf9,
		0x8f, 0x57, 0xb6, 0xf7, 0x38, 0xf0, 0x5c, 0xe6, 0x86, 0xc1, 0xfa, 0x6f, 0x2f, 0x7c, 0x77, 0xb8,
		0x44, 0x33, 0xe0, 0x68, 0x06, 0xbe, 0xf3, 0x68, 0xf9, 0xcf, 0x72, 0xf0, 0xb7, 0x13, 0xda, 0xdf,
		0xe5, 0xef, 0xcf, 0x41, 0xc8, 0x7c, 0x16, 0x38, 0x41, 0x72, 0xef, 0xb3, 0x79, 0xc8, 0x34, 0xc5,
		0xbc, 0x53, 0x28, 0x79, 0x70, 0x97, 0x70, 0x97, 0x8b, 0x16, 0xc0, 0x73, 0x78, 0x97, 0xe7, 0xb0,
		0x2e, 0xc9, 0x59, 0xc1, 0x9c, 0x24, 0x43, 0xe4, 0x87, 0x6b, 0xc9, 0x0f, 0x62, 0x92, 0x1d, 0x9e,
		0xcd, 0x4c, 0x76, 0x44, 0x7e, 0x18, 0x56, 0x28, 0xe6, 0x48, 0x93, 0x12, 0xb2, 0x97, 0xf0, 0xbb,
		0xcf, 0x82, 0xef, 0x5e, 0xbf, 0x4b, 0x46, 0x5e, 0x66, 0x23, 0x82, 0x1f, 0x80, 0x1f, 0x80, 0x1f,
		0x80, 0x1f, 0x80, 0x1f, 0x80, 0x1f, 0x80, 0x1f, 0x1c, 0x09, 0x3f, 0xf0, 0x59, 0x7f, 0x08, 0x1a,
		0x21, 0x41, 0xd8, 0x3c, 0x24, 0xd4, 0x0d, 0xb0, 0x17, 0xb0, 0x17, 0xb0, 0x17, 0xb0, 0x17, 0xb0,
		0x17, 0xb0, 0x17, 0xb0, 0x17, 0x71, 0xec, 0x45, 0xf6, 0x7a, 0xbd, 0x80, 0x85, 0x02, 0x48, 0xcc,
		0x64, 0x64, 0x70, 0x19, 0x70, 0x19, 0x70, 0x19, 0x70, 0x19, 0x70, 0x19, 0x70, 0x19, 0x70, 0x19,
		0x70, 0x19, 0x02, 0x2e, 0xf3, 0x83, 0xf9, 0x63, 0xd4, 0x12, 0x93, 0x96, 0xc9, 0x10, 0x60, 0x00,
		0x60, 0x00, 0xb9, 0x67, 0x00, 0xdf, 0x3c, 0xaf, 0xcf, 0x2c, 0xae, 0x1b, 0x57, 0x67, 0x19, 0x58,
		0xf8, 0xb3, 0x42, 0x2f, 0x74, 0x1a, 0xec, 0x96, 0x31, 0xe1, 0x1a, 0xe0, 0x1a, 0x90, 0x1c, 0x20,
		0x39, 0x40, 0x72, 0x80, 0xe4, 0x00, 0xc9, 0xc1, 0x91, 0x24, 0x07, 0x7f, 0x5b, 0x4e, 0x28, 0x87,
		0x9e, 0xec, 0xb3, 0x20, 0xf4, 0x7c, 0xc6, 0x79, 0x37, 0x75, 0xed, 0x68, 0xe0, 0x05, 0xe0, 0x05,
		0xb8, 0xa2, 0xba, 0xcb, 0xde, 0x71, 0x45, 0x95, 0x2c, 0x90, 0xe0, 0x8a, 0xea, 0x32, 0xc4, 0xb8,
		0xa2, 0x9a, 0xfd, 0xa0, 0x9d, 0xc7, 0x52, 0xa6, 0x31, 0xea, 0xf9, 0xee, 0x51, 0x7d, 0xf4, 0x15,
		0x07, 0x32, 0x51, 0x7c, 0xdc, 0xf3, 0x7e, 0x6e, 0xa9, 0xe1, 0x04, 0x61, 0x35, 0x0c, 0xf7, 0xab,
		0x1f, 0x19, 0xf9, 0x42, 0xa5, 0xcf, 0xa2, 0x40, 0xb7, 0xe7, 0x7a, 0x88, 0x96, 0xf6, 0xdc, 0x2b,
		0x92, 0xb5, 0x2f, 0x2a, 0x69, 0x7e, 0x97, 0xf9, 0xac, 0x7b, 0x1d, 0x7d, 0x2a, 0xf7, 0xa9, 0xdf,
		0x8f, 0xf3, 0x92, 0xbb, 0x80, 0xf9, 0x7b, 0x2d, 0xb8, 0x5d, 0xa0, 0xc6, 0x34, 0x33, 0x62, 0xf3,
		0x2a, 0xed, 0x55, 0x8e, 0x76, 0x63, 0x6d, 0xdc, 0xed, 0x76, 0xb9, 0xd9, 0xda, 0xd6, 0xff, 0x64,
		0x03, 0x54, 0xfb, 0x42, 0x44, 0x01, 0xcd, 0xfa, 0x0f, 0xb4, 0xfa, 0x76, 0x17, 0xbf, 0xb3, 0xf4,
		0xc6, 0x77, 0xbd, 0xe1, 0xa4, 0x6f, 0x74, 0xcd, 0x64, 0xad, 0x4e, 0xce, 0xe2, 0x27, 0x98, 0xbd,
		0xcf, 0xb9, 0xf7, 0x58, 0xfa, 0xd6, 0x5b, 0x95, 0x2f, 0x67, 0xca, 0x6d, 0x6f, 0x59, 0x87, 0xdc,
		0x50, 0x2c, 0x78, 0x63, 0xbe, 0xb0, 0x2d, 0x1f, 0x98, 0xe7, 0xfb, 0xab, 0x4f, 0xda, 0x87, 0xc6,
		0xef, 0x4d, 0xd3, 0xf7, 0xa6, 0xe1, 0xcb, 0x34, 0x3b, 0x7a, 0x5f, 0x31, 0x67, 0x7c, 0x53, 0xa9,
		0xdc, 0x92, 0xe3, 0x86, 0xcc, 0xef, 0x59, 0x36, 0xdb, 0x7c, 0x25, 0x79, 0x56, 0x08, 0x74, 0xf6,
		0xbb, 0x1b, 0xde, 0xe8, 0xf6, 0xaa, 0xcd, 0x3b, 0x13, 0xb8, 0x7d, 0x12, 0xb5, 0xdd, 0x13, 0x14,
		0x37, 0xdf, 0x8a, 0x9d, 0x57, 0xc5, 0xce, 0x9f, 0xf6, 0x9a, 0xc0, 0x64, 0xbe, 0x67, 0x57, 0x0d,
		0xe4, 0xd9, 0xa4, 0xed, 0xc6, 0x61, 0x65, 0x9e, 0x77, 0xe1, 0xb0, 0x5f, 0x91, 0xee, 0xbd, 0xf3,
		0xf6, 0x38, 0x79, 0xfa, 0xfe, 0x66, 0x90, 0x34, 0xfd, 0x4e, 0x9c, 0x6e, 0x27, 0x4e, 0xaf, 0x63,
		0x99, 0x09, 0x0d, 0x65, 0xda, 0xb7, 0x84, 0x76, 0xc9, 0x9e, 0xcc, 0x61, 0xcc, 0xa2, 0xef, 0xe3,
		0xd7, 0x09, 0xae, 0xfa, 0x7e, 0x9a, 0x4e, 0xd5, 0xf7, 0xfd, 0x0c, 0x8d, 0x57, 0xef, 0xc9, 0x5e,
		0xb1, 0xf7, 0xbd, 0x0c, 0x51, 0x4c, 0x96, 0x13, 0xbb, 0xc6, 0x7b, 0x97, 0x05, 0x8e, 0xcf, 0xba,
		0xf2, 0xa3, 0xe3, 0x3a, 0x8f, 0x4f, 0x8f, 0x72, 0xf8, 0x53, 0x1e, 0xfa, 0xb3, 0x1f, 0x56, 0x3f,
		0xb9, 0xe8, 0xb9, 0x6d, 0xd0, 0x62, 0x68, 0x9f, 0xf1, 0x4c, 0xbf, 0x38, 0x92, 0x67, 0xac, 0xa5,
		0x01, 0xa5, 0x13, 0x4a, 0x27, 0x94, 0x4e, 0x28, 0x9d, 0xc7, 0xaa, 0x74, 0xa6, 0xdc, 0x1f, 0xeb,
		0xf9, 0xc1, 0x0b, 0x65, 0xcf, 0x96, 0x6d, 0xef, 0x71, 0xe0, 0xb3, 0x20, 0x60, 0x5d, 0xb9, 0xcf,
		0xac, 0x5e, 0x34, 0x58, 0x16, 0x8a, 0xfd, 0x76, 0xd9, 0x58, 0xfb, 0x90, 0x1f, 0x9f, 0xfa, 0xa1,
		0x33, 0xe8, 0x3b, 0xcc, 0xe7, 0xa1, 0x18, 0x6b, 0x46, 0x03, 0xb7, 0x00, 0xb7, 0xc8, 0x21, 0xb7,
		0x78, 0xcf, 0x41, 0x2d, 0xce, 0x0b, 0x4b, 0x2d, 0xce, 0x40, 0x2d, 0x44, 0x53, 0x8b, 0xf2, 0x39,
		0x38, 0x05, 0x38, 0xc5, 0x01, 0x39, 0x05, 0x73, 0xad, 0x6f, 0x7d, 0x26, 0x0f, 0x98, 0x2f, 0x3f,
		0xb2, 0xc7, 0x6f, 0xcc, 0x97, 0xfb, 0x8e, 0xfb, 0x57, 0x72, 0x56, 0xb1, 0x61, 0xbc, 0x34, 0x2f,
		0xa0, 0x0e, 0xad, 0x16, 0x97, 0x50, 0xc1, 0x7b, 0x8a, 0xcd, 0x7b, 0xd2, 0xbf, 0x70, 0x02, 0xcf,
		0xba, 0xea, 0x59, 0xbb, 0xbc, 0xae, 0xb4, 0x8b, 0x9c, 0x0c, 0xbe, 0x09, 0xbe, 0x09, 0xbe, 0x89,
		0xd2, 0x37, 0x39, 0x1c, 0x6e, 0xc9, 0x81, 0x47, 0x82, 0x47, 0xca, 0x5f, 0xcf, 0xe1, 0xc9, 0x11,
		0x14, 0xd9, 0xe9, 0xf2, 0xb8, 0xa5, 0xf7, 0x70, 0x4b, 0xc9, 0xdd, 0x52, 0xdf, 0xb3, 0xad, 0xbe,
		0x6c, 0x75, 0xbb, 0xd1, 0x7b, 0x4b, 0xee, 0xa1, 0x16, 0x87, 0x81, 0xb3, 0x82, 0xb3, 0xca, 0x9b,
		0xb3, 0x1a, 0x24, 0xb4, 0xee, 0x05, 0x57, 0xf5, 0x21, 0xc1, 0x6b, 0xc7, 0xef, 0x3d, 0x75, 0x5d,
		0x7b, 0xf6, 0xc9, 0x7f, 0x54, 0x38, 0x3e, 0xfb, 0xaa, 0xbb, 0xe6, 0xe9, 0x5c, 0x6a, 0x85, 0x21,
		0xf3, 0x5d, 0xae, 0xee, 0xec, 0xc3, 0x81, 0x5e, 0x7f, 0x3d, 0x95, 0x3f, 0xdc, 0xff, 0xfa, 0x7a,
		0x26, 0x7f, 0xb8, 0x1f, 0x7d, 0x79, 0x36, 0xfc, 0xeb, 0x9f, 0xf2, 0xcb, 0xaf, 0xf2, 0xd7, 0x53,
		0xb9, 0x32, 0xfe, 0x6e, 0xf9, 0xfc, 0xeb, 0xa9, 0x7c, 0x7e, 0xff, 0xe6, 0xf5, 0x9f, 0x7f, 0xbe,
		0x8d, 0xfb, 0x9a, 0x37, 0xff, 0xbc, 0x7b, 0x49, 0xde, 0xf7, 0xfc, 0x9e, 0x07, 0x26, 0xad, 0xa3,
		0x7e, 0x26, 0xc3, 0xea, 0xff, 0x5e, 0xa7, 0x85, 0xd6, 0x9b, 0xff, 0xe1, 0xc0, 0x2b, 0xcd, 0x46,
		0xbe, 0x34, 0xcb, 0xea, 0x22, 0x7f, 0xcb, 0x6a, 0x38, 0xeb, 0x96, 0xdc, 0xab, 0xca, 0x37, 0xf7,
		0xff, 0x9c, 0xfd, 0x5e, 0x79, 0xb9, 0x7a, 0xf3, 0xcf, 0xe5, 0xcb, 0xf2, 0x37, 0x7f, 0xad, 0xfb,
		0xb5, 0xb3, 0xdf, 0x2f, 0x5f, 0xae, 0x36, 0xfc, 0xe4, 0xe2, 0xe5, 0x6a, 0xcf, 0x31, 0xce, 0x5f,
		0x5e, 0xaf, 0xfc, 0x6a, 0xf4, 0xfd, 0xf2, 0xa6, 0x17, 0x54, 0x36, 0xbc, 0xe0, 0xdd, 0xa6, 0x17,
		0xbc, 0xdb, 0xf0, 0x82, 0x8d, 0x6f, 0xa9, 0xbc, 0xe1, 0x05, 0xe7, 0x2f, 0xbf, 0x56, 0x7e, 0xff,
		0xf5, 0xfa, 0x5f, 0xbd, 0x78, 0x79, 0xf3, 0x6b, 0xd3, 0xcf, 0x2e, 0x5f, 0x7e, 0x5d, 0xbd, 0x79,
		0x93, 0x23, 0x47, 0x03, 0xf3, 0x49, 0xdf, 0x7c, 0xd2, 0x77, 0xbc, 0xd8, 0x73, 0x4c, 0x33, 0xcd,
		0xf3, 0xd9, 0x7f, 0x9f, 0x16, 0x4e, 0x37, 0xfb, 0xcc, 0x66, 0x9c, 0xb5, 0xe4, 0x36, 0x8c, 0x88,
		0xe4, 0x0f, 0xc9, 0x5f, 0xce, 0x92, 0x3f, 0x9c, 0x95, 0x8e, 0x3d, 0x08, 0xce, 0x4a, 0x6f, 0x85,
		0x18, 0x67, 0xa5, 0x05, 0xb3, 0x05, 0x70, 0x0c, 0x1a, 0x8e, 0x91, 0xf1, 0x72, 0x16, 0xdf, 0x7a,
		0xdd, 0x93, 0xe8, 0xbf, 0xd9, 0xb5, 0xe5, 0xd9, 0x97, 0x27, 0xe3, 0x7b, 0x89, 0x54, 0x75, 0x2b,
		0xf6, 0xb8, 0x7e, 0x1a, 0x63, 0x93, 0x2f, 0xfe, 0xe6, 0x5e, 0x4c, 0xaa, 0x84, 0x9b, 0x93, 0x82,
		0xa8, 0x4f, 0x86, 0x6e, 0x4e, 0xc6, 0xa6, 0x36, 0x1c, 0x6d, 0xdf, 0x93, 0xb4, 0x7b, 0x9f, 0xb6,
		0x79, 0x7f, 0xfb, 0x76, 0xbc, 0x1a, 0x4f, 0x9c, 0x6e, 0xaa, 0x0b, 0x72, 0xba, 0xc7, 0x18, 0x7d,
		0xd8, 0xf8, 0x6b, 0x73, 0xe1, 0xe5, 0xf9, 0xb8, 0xe0, 0xec, 0xf4, 0x0a, 0xb9, 0x4a, 0x9d, 0xde,
		0xd1, 0x5c, 0x6f, 0x8e, 0x79, 0x0f, 0x7f, 0x65, 0x92, 0x63, 0xdd, 0xc7, 0x4f, 0x68, 0xb6, 0x99,
		0x49, 0xc4, 0x63, 0x99, 0x73, 0x71, 0xf2, 0xf0, 0x38, 0xe6, 0x9e, 0x4e, 0x1a, 0x1e, 0x77, 0x19,
		0xac, 0xfa, 0xf0, 0xe4, 0xd3, 0x15, 0xb7, 0xea, 0x09, 0xb1, 0x5a, 0xc5, 0xbd, 0x58, 0x28, 0x16,
		0x0d, 0xd9, 0xe2, 0xa1, 0x5a, 0x44, 0xe4, 0x8b, 0x89, 0x7c, 0x51, 0x51, 0x2e, 0x2e, 0xce, 0x54,
		0x36, 0xa1, 0xbd, 0x24, 0xd6, 0xbe, 0x08, 0x08, 0x23, 0x05, 0x81, 0xdc, 0x48, 0x28, 0x4f, 0x86,
		0xd3, 0x70, 0x35, 0x97, 0xf7, 0x2d, 0x7d, 0x63, 0xfc, 0xef, 0x61, 0x55, 0xb2, 0x54, 0x21, 0xe7,
		0xcc, 0xf2, 0xe9, 0xb3, 0xfd, 0xe4, 0x96, 0x97, 0x00, 0x82, 0x52, 0xf0, 0xf4, 0x8d, 0xd0, 0x61,
		0x2f, 0x8c, 0x06, 0x9f, 0x0d, 0x9f, 0x0d, 0x9f, 0x9d, 0x63, 0x9f, 0xfd, 0x75, 0xe6, 0xb3, 0xff,
		0x65, 0x3f, 0xf9, 0x3e, 0x73, 0xc3, 0xd7, 0x6f, 0x4e, 0xde, 0xbe, 0x9d, 0x69, 0x7a, 0xf7, 0xe3,
		0x97, 0xcc, 0xfb, 0x85, 0x60, 0xcd, 0xf7, 0xa6, 0x23, 0x77, 0xd9, 0x4f, 0xb8, 0xff, 0xa4, 0xee,
		0x5f, 0x68, 0x3e, 0xa0, 0xfc, 0x1c, 0xee, 0x31, 0xc4, 0xdf, 0xde, 0xe2, 0x4f, 0xd9, 0x3c, 0x5b,
		0x66, 0x3f, 0xc3, 0xab, 0x90, 0xf5, 0xd9, 0x23, 0x0b, 0xfd, 0x67, 0xd9, 0x73, 0x65, 0xfb, 0xfb,
		0x70, 0xbf, 0x8d, 0x24, 0x8d, 0x1b, 0x6e, 0x76, 0x10, 0xe4, 0x71, 0xa2, 0x53, 0xb8, 0xfb, 0x94,
		0x37, 0x30, 0x12, 0xea, 0xf8, 0x0b, 0x2a, 0x5c, 0x2c, 0x55, 0x3f, 0x3e, 0x2c, 0xb1, 0x1a, 0x73,
		0x0d, 0xcb, 0x62, 0x27, 0xef, 0xc1, 0x35, 0x7c, 0x79, 0xca, 0x2a, 0x4d, 0x19, 0x2a, 0x0d, 0x54,
		0x1a, 0xa8, 0x34, 0x60, 0xfc, 0x60, 0xfc, 0x60, 0xfc, 0x79, 0x50, 0x69, 0x20, 0x6a, 0xc0, 0xc5,
		0xc1, 0xc5, 0xc1, 0xc5, 0x41, 0xd4, 0x38, 0x42, 0x0d, 0x20, 0x13, 0x09, 0x65, 0x8c, 0xee, 0x46,
		0x09, 0xf2, 0xc9, 0x63, 0x3e, 0x40, 0x97, 0xe4, 0xf8, 0x8b, 0xb4, 0xda, 0x11, 0xe6, 0xba, 0xd7,
		0x35, 0xd5, 0xc9, 0x50, 0xb3, 0xaf, 0x74, 0xd6, 0x4b, 0xf3, 0x28, 0xd0, 0xa3, 0x63, 0xfb, 0x5e,
		0xf4, 0x79, 0xe5, 0x80, 0x05, 0x81, 0xe3, 0xb9, 0x41, 0xfc, 0xf3, 0x40, 0x6b, 0xc6, 0x40, 0xd7,
		0x83, 0x14, 0x03, 0x6c, 0xa1, 0xbb, 0x1e, 0xac, 0x18, 0x5f, 0x72, 0xe9, 0x69, 0x75, 0xa8, 0x62,
		0x1c, 0x16, 0xc2, 0xad, 0x1d, 0x82, 0x65, 0x90, 0x71, 0x21, 0x2a, 0xe1, 0xe9, 0xb9, 0x15, 0x73,
		0x49, 0x74, 0x8a, 0x8e, 0x73, 0x81, 0x64, 0x36, 0x3f, 0x4b, 0xb6, 0x70, 0x90, 0xa0, 0x25, 0x5a,
		0x58, 0x87, 0xc9, 0xd0, 0x92, 0x2e, 0xb8, 0xe9, 0x00, 0x7c, 0xa5, 0x84, 0x36, 0xe7, 0x7b, 0x1c,
		0xa5, 0x85, 0x88, 0x65, 0x13, 0xb2, 0xe5, 0x49, 0xb9, 0x4c, 0xe9, 0x97, 0x2b, 0xf5, 0xb2, 0x15,
		0xb6, 0x7c, 0x85, 0x2d, 0x63, 0x21, 0xcb, 0x99, 0x6f, 0x59, 0x73, 0x2e, 0x6f, 0x3a, 0x21, 0x66,
		0xc5, 0xde, 0xb8, 0x4a, 0x23, 0x6d, 0x0c, 0x9c, 0x1f, 0x08, 0xc6, 0xe2, 0x2a, 0x9d, 0xb4, 0xfc,
		0x87, 0x66, 0x0d, 0x48, 0x02, 0x4a, 0x2b, 0x6d, 0xc4, 0xf0, 0x3d, 0xe1, 0x98, 0x54, 0x55, 0x3e,
		0x56, 0x06, 0xce, 0x7e, 0x29, 0xa6, 0xe5, 0x3f, 0xf7, 0x94, 0xb0, 0x52, 0x56, 0x50, 0x59, 0x19,
		0xfd, 0x38, 0x4a, 0x37, 0xad, 0xe0, 0x4b, 0x32, 0xd2, 0xcb, 0xef, 0x19, 0x5e, 0xf6, 0x17, 0x58,
		0xf6, 0xa8, 0xf5, 0x73, 0x74, 0xa5, 0xa2, 0x8e, 0xde, 0x11, 0xc2, 0xdc, 0x8e, 0xaa, 0xb4, 0x94,
		0xa0, 0xc0, 0xf0, 0xea, 0xb0, 0xef, 0x83, 0x97, 0xc1, 0x13, 0x9d, 0x30, 0x9e, 0x8e, 0x47, 0x7e,
		0xd2, 0x98, 0x1f, 0x68, 0x9e, 0xda, 0x2a, 0xe3, 0x1e, 0x38, 0xfc, 0xe7, 0x35, 0x56, 0x55, 0xf3,
		0xe5, 0x91, 0x21, 0x46, 0x40, 0x8c, 0x80, 0x18, 0x91, 0x29, 0x31, 0x82, 0xff, 0x74, 0xc8, 0x0a,
		0x9d, 0xbe, 0x24, 0x18, 0x2b, 0xee, 0x81, 0xb8, 0x71, 0xb1, 0x0c, 0xde, 0xd3, 0x71, 0x08, 0x39,
		0xa9, 0x84, 0x1c, 0x9f, 0x3d, 0x7a, 0x21, 0xa3, 0x97, 0xbe, 0x97, 0xc6, 0x45, 0xb8, 0x41, 0xb8,
		0x41, 0xb8, 0x81, 0xf6, 0x0d, 0xed, 0x1b, 0xda, 0x37, 0xb4, 0x6f, 0x68, 0xdf, 0xd0, 0xbe, 0xa1,
		0x7d, 0x43, 0x8c, 0x84, 0xf6, 0x0d, 0xed, 0x1b, 0xda, 0x37, 0xb4, 0xef, 0xdc, 0x08, 0x11, 0x47,
		0x59, 0xae, 0x24, 0xe1, 0x0d, 0x93, 0xd5, 0x0b, 0x15, 0xab, 0xdf, 0x4a, 0x54, 0xf1, 0x21, 0x39,
		0x9a, 0x49, 0xee, 0x87, 0x92, 0xed, 0x39, 0x50, 0xef, 0x35, 0xe4, 0xed, 0x9e, 0x28, 0xce, 0x21,
		0x1f, 0x40, 0xbc, 0xc1, 0x4d, 0x51, 0x92, 0x9b, 0xa2, 0xb3, 0x1a, 0xd8, 0x2b, 0x8b, 0x3b, 0xcb,
		0x57, 0xdf, 0x13, 0x15, 0xb9, 0x59, 0x99, 0x8b, 0x24, 0xc5, 0x6e, 0x56, 0x66, 0x81, 0xd7, 0x89,
		0x95, 0xe1, 0xc4, 0xe0, 0xc4, 0x52, 0x71, 0x62, 0xdc, 0x97, 0x29, 0xac, 0xe0, 0xd9, 0xb5, 0xe9,
		0x76, 0x92, 0x46, 0xc3, 0xd1, 0x6c, 0x20, 0x9d, 0x61, 0x03, 0x29, 0xc5, 0x65, 0x2a, 0x6c, 0xb9,
		0x0a, 0x5b, 0xb6, 0x42, 0x96, 0x2f, 0x4d, 0x02, 0xcb, 0x9b, 0x7e, 0xf2, 0x2e, 0xeb, 0xe9, 0x40,
		0x7d, 0x2b, 0x08, 0xe5, 0x81, 0x65, 0xff, 0xc5, 0xc2, 0x49, 0xe3, 0xbc, 0x2e, 0x9d, 0xa9, 0x4c,
		0x09, 0xd0, 0xba, 0xa7, 0x10, 0x4d, 0x2e, 0xcd, 0x6e, 0x32, 0xb9, 0x53, 0x10, 0xe1, 0x1c, 0xc4,
		0x39, 0x09, 0x51, 0xce, 0x42, 0xb8, 0xd3, 0x10, 0xee, 0x3c, 0x84, 0x3a, 0x11, 0x3a, 0x35, 0x4c,
		0xa2, 0xdb, 0x6c, 0xa1, 0xdb, 0x9d, 0x5e, 0xb1, 0xd7, 0x27, 0xc7, 0x0d, 0x2f, 0x2a, 0x02, 0xb6,
		0x5b, 0x28, 0x77, 0x5b, 0xf8, 0xfa, 0x1d, 0x6e, 0xfa, 0x43, 0xbb, 0x9e, 0x24, 0xaa, 0xfe, 0x88,
		0x1b, 0x07, 0x27, 0xea, 0x9b, 0xb8, 0x71, 0x7c, 0xea, 0x1e, 0x7f, 0x9b, 0x6d, 0x8f, 0xaa, 0xf7,
		0x9f, 0xe0, 0x65, 0xb7, 0x38, 0xb5, 0xd6, 0x4f, 0xf1, 0x53, 0x7b, 0xf6, 0xbe, 0x52, 0xb9, 0xb8,
		0xac, 0x54, 0x4e, 0x2f, 0xdf, 0x5d, 0x9e, 0x7e, 0x38, 0x3f, 0x3f, 0xbb, 0x38, 0x3b, 0xc7, 0x6c,
		0xa7, 0xe2, 0xaa, 0xe9, 0x47, 0xcb, 0xca, 0xb6, 0x0c, 0xc1, 0x6a, 0x58, 0xa0, 0x8b, 0xa1, 0x6f,
		0xb9, 0xc1, 0xa3, 0x13, 0x86, 0xa2, 0x79, 0xe9, 0xfc, 0x83, 0x40, 0x4d, 0x41, 0x4d, 0x41, 0x4d,
		0x41, 0x4d, 0x41, 0x4d, 0x41, 0x4d, 0x41, 0x4d, 0x41, 0x4d, 0x41, 0x4d, 0x41, 0x4d, 0x47, 0x93,
		0x38, 0x51, 0x2f, 0xc7, 0xac, 0x31, 0xa0, 0xe7, 0xa4, 0x2b, 0x4f, 0x00, 0x19, 0x05, 0x19, 0x05,
		0x19, 0x05, 0x19, 0x05, 0x19, 0x05, 0x19, 0x05, 0x19, 0x05, 0x19, 0x05, 0x19, 0x05, 0x19, 0x1d,
		0x4d, 0xe2, 0x9c, 0x64, 0x29, 0x8e, 0x8f, 0xae, 0x7b, 0x08, 0x28, 0x29, 0x28, 0x29, 0x28, 0x29,
		0x28, 0x29, 0x28, 0x29, 0x28, 0x29, 0x28, 0x29, 0x28, 0x29, 0x28, 0x29, 0x28, 0xe9, 0x68, 0x12,
		0x9f, 0x06, 0xa3, 0x8d, 0x74, 0x27, 0x8c, 0xd5, 0xd8, 0x68, 0xff, 0x30, 0xb4, 0x38, 0x3e, 0x88,
		0x28, 0x88, 0x28, 0x88, 0x28, 0x88, 0x28, 0x88, 0x28, 0x88, 0x28, 0x88, 0x28, 0x88, 0x28, 0x88,
		0x68, 0x2e, 0x88, 0x68, 0xae, 0x4a, 0x7b, 0x88, 0xac, 0x48, 0x31, 0xbc, 0xcd, 0x7c, 0x42, 0x71,
		0xa9, 0x52, 0xda, 0xd5, 0x2e, 0xb5, 0x19, 0x3d, 0xfc, 0xba, 0xd7, 0xed, 0x8c, 0x1e, 0x6d, 0x56,
		0x87, 0x0f, 0x3d, 0xc2, 0x22, 0xa9, 0x5d, 0xf6, 0x68, 0xb9, 0x5d, 0xf9, 0xd1, 0xeb, 0x32, 0xd9,
		0x67, 0xff, 0x7d, 0x62, 0x01, 0xc5, 0xd9, 0xe2, 0x29, 0x3f, 0x59, 0x3f, 0x3c, 0x4a, 0xa6, 0xa6,
		0x97, 0x88, 0xe0, 0xc6, 0x2b, 0x4a, 0xa6, 0xee, 0x61, 0x6f, 0xdf, 0x3c, 0xaf, 0xcf, 0x2c, 0x97,
		0xb2, 0x5e, 0xea, 0xd9, 0x11, 0xba, 0xc3, 0x9e, 0xe5, 0xf4, 0x9f, 0x7c, 0x46, 0x2a, 0xdb, 0x4c,
		0x31, 0x5e, 0x37, 0x38, 0x5c, 0x21, 0x5c, 0x21, 0x5c, 0x61, 0xa6, 0x5c, 0x21, 0x99, 0xa6, 0x42,
		0xa8, 0xa5, 0x10, 0x6b, 0x28, 0x84, 0x4a, 0x94, 0x08, 0xcd, 0x44, 0x94, 0x56, 0x22, 0x3c, 0x6b,
		0x16, 0x97, 0x2d, 0x13, 0x6a, 0x22, 0x42, 0xb4, 0x90, 0x14, 0x35, 0x90, 0x63, 0x9e, 0xc5, 0x7c,
		0x94, 0x0b, 0x3d, 0x08, 0x35, 0x1b, 0x5e, 0x4f, 0x9d, 0x52, 0x28, 0xe7, 0x91, 0xb0, 0x85, 0xd4,
		0xea, 0xd0, 0xa0, 0x65, 0xa0, 0x65, 0xa0, 0x65, 0x99, 0xa2, 0x65, 0xd1, 0xba, 0x0c, 0x1d, 0xfb,
		0xaf, 0x20, 0x73, 0xdc, 0xec, 0xce, 0x1d, 0x85, 0xa1, 0x92, 0x6b, 0xb9, 0x5e, 0xc0, 0x6c, 0xcf,
		0xed, 0x92, 0x34, 0x1e, 0x01, 0xe7, 0x03, 0xe7, 0x03, 0xe7, 0x03, 0xe7, 0x2b, 0x30, 0xe7, 0xf3,
		0x6c, 0xab, 0x4f, 0xdf, 0xc1, 0x6d, 0x71, 0x58, 0x70, 0x3d, 0x70, 0x3d, 0x70, 0xbd, 0x4c, 0x71,
		0x3d, 0x34, 0x70, 0x4b, 0x8e, 0x1c, 0x1a, 0xb8, 0xa1, 0x81, 0x1b, 0x1a, 0xb8, 0x91, 0x92, 0x1f,
		0x62, 0x42, 0x8e, 0x06, 0x6e, 0x68, 0xe0, 0x86, 0x06, 0x6e, 0x39, 0x71, 0x84, 0x30, 0x37, 0x34,
		0x70, 0x2b, 0x74, 0x76, 0xde, 0x75, 0xac, 0x07, 0xd7, 0x0b, 0x42, 0xc7, 0x96, 0x6d, 0xaf, 0xcb,
		0xa8, 0xb3, 0xf4, 0xe5, 0xe1, 0x91, 0xad, 0x23, 0x5b, 0x47, 0xb6, 0x9e, 0xa9, 0x6c, 0xfd, 0x5b,
		0xaf, 0x4b, 0xbc, 0x4c, 0x17, 0xb8, 0x67, 0x85, 0x60, 0x2c, 0xc5, 0x7d, 0x7a, 0xa4, 0x33, 0x63,
		0xc3, 0xeb, 0x84, 0xbe, 0xe3, 0x3e, 0xd0, 0xde, 0xe9, 0x3a, 0x8d, 0xb0, 0x6c, 0x69, 0x66, 0x5d,
		0xad, 0x7e, 0x6c, 0x69, 0x1d, 0x43, 0xad, 0x51, 0x32, 0xf9, 0xb3, 0x68, 0xf4, 0xba, 0x62, 0x28,
		0x35, 0x43, 0xd5, 0x5a, 0xa6, 0xa1, 0x36, 0x15, 0xed, 0xce, 0xa0, 0x7c, 0x42, 0x39, 0x7a, 0x82,
		0x52, 0xbb, 0xd5, 0xcc, 0x9b, 0xaa, 0xda, 0x50, 0xea, 0x94, 0x63, 0xbf, 0xfb, 0xff, 0xd9, 0x7b,
		0xff, 0xa6, 0xc6, 0x8d, 0xec, 0xdf, 0xff, 0xff, 0x79, 0x14, 0x2e, 0xd7, 0xad, 0xda, 0xa4, 0x6e,
		0x34, 0x80, 0x07, 0x86, 0x99, 0xa9, 0xfa, 0xd4, 0xb7, 0x3c, 0xc6, 0x4c, 0x7c, 0x17, 0x30, 0x0b,
		0x66, 0xb3, 0xb9, 0x09, 0xd7, 0x25, 0xe4, 0x06, 0x54, 0xb1, 0x25, 0x47, 0x92, 0x99, 0x99, 0xdd,
		0xcd, 0x73, 0xff, 0x96, 0x7f, 0x1b, 0xb0, 0x41, 0xea, 0x3e, 0xb2, 0x25, 0xf9, 0x95, 0xda, 0x4d,
		0x26, 0x04, 0xb7, 0xac, 0xee, 0x3e, 0xe7, 0xbc, 0xce, 0xbb, 0xbb, 0x4f, 0x0f, 0xdb, 0x3e, 0x6e,
		0x5e, 0xfc, 0x52, 0xbd, 0x38, 0x6a, 0x9c, 0x7d, 0x69, 0x5f, 0xd4, 0x2f, 0xeb, 0xa2, 0x5f, 0x7e,
		0x7f, 0xf8, 0x80, 0xf3, 0x6a, 0xeb, 0xe7, 0xf6, 0x51, 0xf3, 0x97, 0x33, 0xc9, 0x96, 0x0f, 0x86,
		0x2d, 0xd7, 0x9a, 0x67, 0xb5, 0x6a, 0xab, 0x7e, 0x56, 0x6d, 0xd5, 0x8f, 0xda, 0xa9, 0x3c, 0xe6,
		0xfd, 0xf0, 0x31, 0xd5, 0xa3, 0xd3, 0xc6, 0x99, 0x78, 0xd3, 0x87, 0xc3, 0xa6, 0x2f, 0xea, 0xff,
		0xac, 0x5f, 0x5c, 0xd6, 0xdb, 0x2b, 0xde, 0x24, 0x5b, 0xe7, 0x2d, 0xfd, 0xc6, 0xc8, 0x63, 0x0b,
		0x1a, 0xe7, 0x42, 0xcf, 0x7e, 0x2a, 0xbd, 0x17, 0xec, 0xdc, 0x15, 0xfd, 0xf9, 0xa9, 0x24, 0xb8,
		0x82, 0xb6, 0xc4, 0xee, 0x8d, 0x2f, 0x0c, 0x7b, 0xec, 0x5e, 0x17, 0xac, 0x5e, 0xfb, 0x42, 0xbf,
		0xa5, 0x2d, 0x3f, 0xb3, 0xf9, 0x4f, 0xa5, 0x77, 0x82, 0xcd, 0x3f, 0x76, 0xb7, 0xa2, 0xab, 0x8a,
		0xe5, 0xc5, 0xc1, 0xdc, 0x97, 0x3c, 0x4e, 0xfb, 0xb2, 0x25, 0x7e, 0x2a, 0x1d, 0x16, 0xe3, 0xe4,
		0xda, 0x46, 0x73, 0x9a, 0xd0, 0x09, 0xdc, 0x9e, 0xeb, 0xd9, 0x91, 0x1f, 0xc8, 0x67, 0x34, 0x8b,
		0x8d, 0x93, 0xcf, 0x90, 0xcf, 0x90, 0xcf, 0x64, 0x2a, 0x9f, 0x09, 0xc7, 0x70, 0x2f, 0x98, 0xc2,
		0x7c, 0xc8, 0xa1, 0x27, 0x14, 0xbb, 0x3d, 0xfd, 0x59, 0xff, 0x0a, 0xdd, 0xa2, 0x8e, 0x0f, 0xc4,
		0x07, 0xe2, 0x03, 0x53, 0xf2, 0x81, 0xe6, 0xb7, 0xb4, 0x3f, 0x73, 0x82, 0x87, 0x02, 0x6d, 0x9d,
		0xcf, 0x0a, 0x07, 0x38, 0x96, 0x7b, 0xfb, 0x69, 0xa1, 0x56, 0xc0, 0x93, 0x1f, 0x4c, 0xfe, 0x7d,
		0x72, 0xb5, 0xfb, 0xf8, 0x5f, 0x46, 0x47, 0xf9, 0x73, 0xe8, 0x89, 0x03, 0xd5, 0xf3, 0x23, 0x25,
		0xbf, 0x0d, 0xee, 0x49, 0xbb, 0x78, 0x61, 0xbc, 0x30, 0x5e, 0x38, 0x53, 0x5e, 0x98, 0x7d, 0x70,
		0xfa, 0x3d, 0xc7, 0x3e, 0x38, 0xf6, 0xc1, 0xb1, 0x0f, 0xee, 0x69, 0xff, 0xb2, 0x0f, 0x6e, 0x0b,
		0xcc, 0x9e, 0x8d, 0x49, 0xec, 0x83, 0x5b, 0xb7, 0x23, 0x64, 0xba, 0xb1, 0x0f, 0x6e, 0x4b, 0xf7,
		0xc1, 0x4d, 0xf3, 0xe8, 0x41, 0x74, 0xaf, 0xbc, 0xc8, 0x75, 0x46, 0xe5, 0x12, 0x2d, 0xe5, 0xd9,
		0x37, 0x5d, 0xc9, 0x5a, 0x7a, 0x2f, 0x3f, 0x86, 0xec, 0x9d, 0xec, 0x9d, 0xec, 0x3d, 0x53, 0xd9,
		0x3b, 0x35, 0xf5, 0x16, 0xdd, 0xa3, 0xe3, 0x7b, 0x51, 0xe0, 0x77, 0xad, 0x7e, 0xd7, 0xf6, 0x94,
		0xe5, 0x7a, 0x1d, 0xd5, 0x57, 0x5e, 0x47, 0x09, 0x6c, 0xd4, 0x79, 0xea, 0x21, 0x57, 0x3f, 0x09,
		0x27, 0x89, 0x93, 0xc4, 0x49, 0xe2, 0x24, 0x33, 0xeb, 0x24, 0x53, 0x3b, 0x4c, 0xb1, 0xa2, 0x7d,
		0x1c, 0x22, 0x0e, 0x11, 0x87, 0x98, 0x2d, 0x87, 0xc8, 0x69, 0x0a, 0x89, 0x56, 0x39, 0x4d, 0xb1,
		0xba, 0x6d, 0x4e, 0x53, 0xbc, 0xf6, 0x18, 0x4e, 0x53, 0x2c, 0xda, 0x27, 0xa7, 0x29, 0x1e, 0x3d,
		0x84, 0xd3, 0x14, 0xab, 0x42, 0x18, 0xa7, 0x29, 0xd2, 0xa1, 0x94, 0x52, 0x4e, 0x4f, 0x53, 0xcc,
		0xb2, 0x8e, 0x54, 0x8e, 0x53, 0x2c, 0x6d, 0x9d, 0x8c, 0x86, 0x8c, 0x86, 0x8c, 0x26, 0x53, 0x19,
		0x0d, 0xe7, 0x29, 0x16, 0x7c, 0x61, 0xcf, 0xf5, 0xdc, 0xde, 0xa0, 0x67, 0x05, 0xca, 0x51, 0xee,
		0x83, 0x1a, 0x9f, 0x82, 0x78, 0xb0, 0xbb, 0xe2, 0x6e, 0x71, 0xe5, 0x83, 0xf0, 0x90, 0x78, 0x48,
		0x3c, 0x64, 0xa6, 0x3c, 0xe4, 0xc0, 0xf5, 0xa2, 0x77, 0x15, 0x41, 0x0f, 0x79, 0x48, 0xf9, 0xf1,
		0x84, 0x8d, 0x52, 0x7e, 0x3c, 0x25, 0xfd, 0xa0, 0x94, 0x7a, 0xf9, 0xf1, 0xfd, 0xca, 0xc7, 0xfd,
		0x8f, 0xef, 0x0f, 0x2b, 0x1f, 0x29, 0x3a, 0x2e, 0x97, 0x6e, 0x96, 0xb6, 0x7d, 0x3b, 0xd7, 0xe4,
		0x56, 0x59, 0x6b, 0x74, 0xab, 0xac, 0x38, 0x9d, 0x3d, 0x6e, 0x1d, 0x24, 0x03, 0xc9, 0x40, 0xb2,
		0x4c, 0x21, 0xd9, 0xc2, 0xc5, 0xd2, 0x22, 0x46, 0x5a, 0xda, 0xda, 0x45, 0xb8, 0xab, 0x73, 0xf9,
		0x95, 0x37, 0xe1, 0x35, 0x99, 0x4a, 0x7a, 0xcb, 0x3d, 0xa3, 0xb5, 0xb6, 0xc6, 0x59, 0xa3, 0xb5,
		0x5d, 0x8b, 0x3a, 0x92, 0xab, 0x16, 0x93, 0x26, 0x25, 0x97, 0x58, 0x46, 0x03, 0x22, 0xbb, 0xf8,
		0x71, 0x75, 0x3e, 0x8c, 0x9c, 0x2c, 0x16, 0x68, 0x77, 0x60, 0x4a, 0xc0, 0x05, 0x69, 0x41, 0x5a,
		0x90, 0x16, 0xa4, 0x05, 0x69, 0x41, 0x5a, 0x90, 0x16, 0xa4, 0x55, 0x14, 0xd2, 0x7a, 0xb3, 0xc6,
		0x49, 0x5d, 0xae, 0x7a, 0x9e, 0x1f, 0x8d, 0x0e, 0x1c, 0x1a, 0xcd, 0xe4, 0x72, 0xe8, 0xdc, 0xab,
		0x9e, 0xdd, 0x9f, 0x55, 0x71, 0xea, 0x2b, 0x6f, 0x5c, 0xa2, 0x69, 0x18, 0x1a, 0x77, 0x86, 0xff,
		0x5f, 0x28, 0xe9, 0x34, 0x2f, 0xe6, 0xd4, 0x73, 0x9d, 0xc0, 0xb7, 0x16, 0x02, 0x45, 0xf8, 0xfc,
		0x47, 0x3b, 0xe3, 0xd8, 0xf1, 0x66, 0x3d, 0x9d, 0x99, 0xec, 0x13, 0x09, 0xbb, 0x7d, 0x08, 0x3a,
		0x02, 0x85, 0xf2, 0xca, 0x27, 0x6e, 0x18, 0x55, 0xa3, 0x48, 0x6f, 0xcb, 0x4d, 0xf9, 0xd4, 0xf5,
		0xea, 0x5d, 0x35, 0xa4, 0x17, 0x4d, 0xe9, 0xbb, 0x7c, 0x6a, 0x7f, 0x5b, 0x68, 0x41, 0xe6, 0x96,
		0xd0, 0x72, 0x33, 0xe8, 0xa8, 0x40, 0x75, 0x3e, 0x0f, 0x7b, 0xc8, 0x1b, 0x74, 0xbb, 0x26, 0x4d,
		0x5c, 0x85, 0x2a, 0xd0, 0xd2, 0xde, 0x93, 0x0e, 0xa8, 0xfa, 0x16, 0x05, 0xb6, 0x35, 0xf0, 0xc2,
		0xc8, 0xbe, 0xe9, 0xea, 0xf1, 0x53, 0x39, 0x50, 0xb7, 0x2a, 0x50, 0x9e, 0xa3, 0xbf, 0x26, 0x67,
		0x60, 0xb8, 0x53, 0x58, 0xbb, 0x38, 0xae, 0x1d, 0xee, 0xbd, 0xdb, 0x2d, 0x59, 0xa5, 0xcf, 0x6e,
		0xc7, 0x0d, 0xd4, 0x68, 0x7d, 0xc4, 0xee, 0x96, 0x8e, 0xfd, 0xe0, 0xab, 0x1d, 0x74, 0x5c, 0xef,
		0xae, 0x74, 0xa4, 0xa2, 0xf1, 0x8f, 0x4b, 0x3f, 0x7c, 0x3e, 0x3e, 0xfa, 0xf1, 0x77, 0xcf, 0xf7,
		0x4a, 0x27, 0xae, 0xf7, 0x47, 0xa9, 0x7a, 0x77, 0x17, 0x8c, 0x16, 0x3c, 0x7c, 0xaf, 0xf4, 0x25,
		0xf0, 0x07, 0xfd, 0xd2, 0x0f, 0x27, 0xd5, 0x2f, 0x3f, 0x96, 0x1a, 0x33, 0x93, 0x7f, 0x6b, 0xc0,
		0x03, 0x52, 0xd9, 0xc6, 0x62, 0x96, 0x31, 0xef, 0x72, 0x43, 0x6a, 0x96, 0x4e, 0x30, 0x1e, 0x25,
		0x16, 0x69, 0x8f, 0xc9, 0xba, 0x63, 0x54, 0xe2, 0x4f, 0x5d, 0xa7, 0x6a, 0xbb, 0x86, 0xb1, 0x2f,
		0xcd, 0x98, 0xa7, 0x31, 0x2d, 0xcb, 0x61, 0x14, 0x0c, 0x9c, 0xc8, 0x9b, 0xd8, 0xf3, 0xe7, 0xdb,
		0x4e, 0x7b, 0x36, 0xd6, 0xed, 0xd3, 0xe1, 0x03, 0x3e, 0xdf, 0x76, 0x2e, 0x27, 0xcd, 0xbf, 0x49,
		0x67, 0xdc, 0xe2, 0xfd, 0x66, 0xcc, 0x71, 0x32, 0xf1, 0xad, 0xe5, 0xaf, 0xf7, 0x2a, 0x79, 0x49,
		0x14, 0x8d, 0x39, 0x30, 0x75, 0x9f, 0xaf, 0xd6, 0xad, 0xfc, 0x6d, 0x5e, 0xaa, 0xf2, 0x7f, 0x9c,
		0x41, 0x10, 0x28, 0x2f, 0xfa, 0xe1, 0xc7, 0x9d, 0xb7, 0x6f, 0xe7, 0x13, 0xc3, 0x0a, 0xd4, 0xed,
		0xce, 0xa4, 0xae, 0xe5, 0xec, 0x87, 0xd7, 0xcb, 0xea, 0x5d, 0x46, 0xdf, 0xfb, 0xaa, 0xf4, 0x3f,
		0xa5, 0xbf, 0xb9, 0x2a, 0xba, 0x1d, 0x3d, 0x44, 0x29, 0xf5, 0x61, 0xb7, 0xf2, 0xce, 0xee, 0x9c,
		0xd8, 0x77, 0x7f, 0xd3, 0x99, 0x3b, 0x86, 0x2e, 0x76, 0xd1, 0xb5, 0x8e, 0x7a, 0x5e, 0x93, 0x46,
		0xa5, 0xbc, 0xe9, 0x23, 0x2f, 0x9a, 0xa5, 0xa1, 0x79, 0xb3, 0x06, 0xae, 0x2f, 0x1f, 0xa9, 0xd0,
		0x09, 0xdc, 0xbe, 0x11, 0xd4, 0xcf, 0x26, 0x76, 0xc3, 0x73, 0xba, 0x83, 0x8e, 0x2a, 0xf5, 0x55,
		0x60, 0x8d, 0xb1, 0xb5, 0xd4, 0x1d, 0xc6, 0x97, 0xcf, 0xc7, 0x47, 0x25, 0xdf, 0xeb, 0x7e, 0x2f,
		0x0d, 0xc7, 0xbb, 0x14, 0xdd, 0xab, 0xd2, 0xe8, 0xd5, 0xfd, 0xdb, 0xdf, 0xbd, 0x59, 0x0f, 0x95,
		0xdc, 0xb0, 0x64, 0x8f, 0x7f, 0xdd, 0x9e, 0x84, 0x23, 0xa5, 0x4b, 0x02, 0x12, 0x14, 0xb0, 0x38,
		0x4d, 0x3b, 0x0b, 0x9d, 0x64, 0xc0, 0x26, 0x92, 0xf1, 0xff, 0xd1, 0xac, 0x95, 0xef, 0xf7, 0x6c,
		0x26, 0x50, 0x6f, 0x64, 0x59, 0x20, 0x6e, 0x6c, 0xd1, 0x8c, 0xfd, 0x72, 0x31, 0x3f, 0xde, 0x70,
		0xbc, 0xde, 0x3d, 0x31, 0x5e, 0xb8, 0xdc, 0x57, 0x2a, 0x88, 0x5f, 0x5e, 0x78, 0x66, 0xfa, 0xe3,
		0x8f, 0xc5, 0xec, 0xd0, 0xa9, 0x2e, 0x1b, 0xf3, 0xd7, 0x93, 0x2e, 0x94, 0xe8, 0x2c, 0x88, 0xe8,
		0x2f, 0x7c, 0xe8, 0x3a, 0x1b, 0xe3, 0x85, 0x0c, 0x63, 0x7f, 0x62, 0xb4, 0x30, 0x21, 0x8b, 0x6f,
		0x47, 0x6e, 0x32, 0x7d, 0x62, 0x34, 0xdf, 0x92, 0x77, 0xf9, 0xe2, 0x6c, 0x4d, 0xda, 0xdb, 0xc9,
		0x26, 0xed, 0xf3, 0xc9, 0x9b, 0x50, 0xa2, 0x35, 0x59, 0xd5, 0x33, 0x5f, 0xc5, 0x93, 0x84, 0x3c,
		0xa3, 0x55, 0xba, 0x74, 0x30, 0x4f, 0x77, 0x15, 0x2e, 0x5d, 0xc1, 0x2f, 0xa9, 0x11, 0xcc, 0x3e,
		0x28, 0x79, 0x5f, 0x51, 0x0a, 0xf7, 0x14, 0x19, 0x2e, 0x98, 0x1b, 0x2f, 0x94, 0x4b, 0x2c, 0x90,
		0xcb, 0x2d, 0x8c, 0xa7, 0x21, 0x51, 0x89, 0x2c, 0x84, 0xa7, 0xab, 0x4f, 0x99, 0x2e, 0x7c, 0xaf,
		0x77, 0xa9, 0xc3, 0x78, 0x81, 0x5b, 0xf0, 0x0e, 0x0d, 0x89, 0xbb, 0x33, 0x66, 0x77, 0x66, 0xbc,
		0x7d, 0x3b, 0x5e, 0x22, 0xd9, 0x59, 0x66, 0xde, 0xeb, 0xa2, 0x7e, 0x2d, 0xc1, 0xca, 0x64, 0x3f,
		0xd0, 0xc2, 0x29, 0x44, 0xfd, 0xad, 0x05, 0x9a, 0x04, 0x60, 0x4c, 0x02, 0xb8, 0x31, 0xdc, 0x98,
		0xe6, 0x8c, 0xd1, 0x25, 0x8a, 0x59, 0x03, 0x76, 0xf8, 0xdd, 0x73, 0xe4, 0xb6, 0xe1, 0x8d, 0x9b,
		0x93, 0xd9, 0x7e, 0xb7, 0xc7, 0xf6, 0xbb, 0x35, 0x9a, 0x69, 0x6a, 0xe6, 0x9a, 0x9a, 0xd9, 0xa6,
		0x62, 0xbe, 0x66, 0x66, 0x6c, 0x68, 0xce, 0x62, 0x66, 0x3d, 0x4f, 0x1c, 0xec, 0x30, 0xb2, 0xfa,
		0xb6, 0xf3, 0x87, 0x8a, 0xa6, 0x47, 0xc4, 0x3b, 0x72, 0x53, 0x65, 0x86, 0x40, 0xcb, 0x9e, 0x22,
		0x34, 0xb8, 0x32, 0x7b, 0x71, 0xc5, 0x9d, 0x42, 0x1a, 0xce, 0x21, 0x3d, 0x27, 0x91, 0x96, 0xb3,
		0x48, 0xdd, 0x69, 0xa4, 0xee, 0x3c, 0x52, 0x75, 0x22, 0x32, 0xce, 0x44, 0xc8, 0xa9, 0xc8, 0xa5,
		0x3e, 0x2b, 0xe7, 0xeb, 0xc0, 0xf5, 0xa2, 0xf7, 0xfb, 0x29, 0xdc, 0xc8, 0x22, 0x79, 0x21, 0x8b,
		0xec, 0x81, 0xf7, 0xe9, 0x5f, 0xb2, 0xf6, 0x54, 0x4a, 0xeb, 0x00, 0xfc, 0xac, 0xf1, 0x94, 0x0e,
		0xc2, 0xcf, 0xda, 0x4f, 0xfb, 0x50, 0xf5, 0x7c, 0xee, 0xa5, 0x75, 0xb8, 0x5a, 0xd8, 0xec, 0x1e,
		0x0f, 0x6d, 0x0a, 0x07, 0xe5, 0x9f, 0x0d, 0xad, 0xcc, 0x4e, 0xbc, 0x6d, 0x1b, 0xed, 0x37, 0xd9,
		0x6c, 0x2d, 0x2b, 0x37, 0xb7, 0x08, 0x58, 0xc3, 0x23, 0x5c, 0x8c, 0x02, 0xdb, 0x0b, 0x7b, 0x6e,
		0x14, 0xa5, 0xcd, 0xa5, 0x8b, 0x0f, 0x02, 0x4d, 0x41, 0x53, 0xd0, 0x14, 0x34, 0x05, 0x4d, 0x41,
		0x53, 0xd0, 0x14, 0x34, 0x05, 0x4d, 0x41, 0xd3, 0xf1, 0x20, 0x4e, 0xd5, 0xcb, 0x09, 0x35, 0x86,
		0xf2, 0x4c, 0xfa, 0xec, 0x09, 0xc0, 0x28, 0x30, 0x0a, 0x8c, 0x02, 0xa3, 0xc0, 0x28, 0x30, 0x0a,
		0x8c, 0x02, 0xa3, 0xc0, 0x28, 0x30, 0x3a, 0x1e, 0xc4, 0x05, 0xc9, 0x32, 0x3d, 0x1e, 0x5d, 0xf6,
		0x10, 0x90, 0x14, 0x24, 0x05, 0x49, 0x41, 0x52, 0x90, 0x14, 0x24, 0x05, 0x49, 0x41, 0x52, 0x90,
		0x14, 0x24, 0x1d, 0x0f, 0xe2, 0xa0, 0x3f, 0x5e, 0x48, 0x77, 0xa3, 0xd1, 0xb1, 0x65, 0x71, 0x1a,
		0x7d, 0xd2, 0x3e, 0x20, 0x0a, 0x88, 0x02, 0xa2, 0x80, 0x28, 0x20, 0x0a, 0x88, 0x02, 0xa2, 0x80,
		0x28, 0x20, 0x5a, 0x08, 0x10, 0xdd, 0xe8, 0xd9, 0x2a, 0xa1, 0x22, 0xb7, 0xb3, 0xf6, 0x34, 0x8b,
		0x00, 0x8d, 0xea, 0xe9, 0x8c, 0xfe, 0x3e, 0x39, 0xaf, 0x2d, 0x71, 0x74, 0xb2, 0xf4, 0x5a, 0xe9,
		0xbf, 0x73, 0xa5, 0x82, 0x76, 0x75, 0xf4, 0xa4, 0x1c, 0xde, 0x1d, 0xd1, 0x51, 0x3d, 0xdb, 0xeb,
		0x58, 0x3d, 0xbf, 0xa3, 0xac, 0x40, 0xfd, 0x39, 0x50, 0xa1, 0xc4, 0xb6, 0xe1, 0x19, 0x7a, 0x2c,
		0x6f, 0x9e, 0xbb, 0x24, 0xd6, 0x97, 0x63, 0x70, 0x98, 0x95, 0xbb, 0x24, 0x62, 0xcc, 0xb7, 0x1b,
		0xdf, 0xef, 0x2a, 0xdb, 0x93, 0xbc, 0x41, 0x62, 0x2f, 0x87, 0xee, 0x50, 0x39, 0xf7, 0xbe, 0x9c,
		0xf7, 0x1b, 0xb5, 0xc6, 0xc9, 0x7d, 0x9c, 0x1d, 0xce, 0xce, 0xe0, 0x8d, 0xc4, 0x4e, 0xee, 0x0f,
		0x93, 0xa1, 0x07, 0x25, 0xaf, 0xb0, 0x4e, 0xda, 0x45, 0x59, 0xcd, 0x8e, 0x23, 0x48, 0xcb, 0x21,
		0xa4, 0xee, 0x18, 0x52, 0x77, 0x10, 0xa9, 0x3a, 0x0a, 0xd9, 0x04, 0x3b, 0xfb, 0xca, 0xaa, 0x1c,
		0x35, 0x09, 0xd3, 0x93, 0xa0, 0xb2, 0xf0, 0x13, 0x25, 0x53, 0x70, 0xca, 0x38, 0x65, 0x9c, 0x72,
		0x5e, 0x9c, 0x32, 0xcb, 0x5d, 0x92, 0x33, 0x92, 0xe5, 0xae, 0x58, 0x73, 0x8f, 0xe5, 0xae, 0x15,
		0x43, 0xcb, 0x72, 0xd7, 0xc6, 0x5c, 0xb5, 0x7c, 0x6b, 0x94, 0x4c, 0x31, 0xe4, 0x52, 0x4a, 0xa6,
		0x80, 0xa6, 0xa0, 0x29, 0x68, 0x0a, 0x9a, 0x82, 0xa6, 0xa0, 0x29, 0x68, 0x0a, 0x9a, 0x82, 0xa6,
		0xcf, 0x07, 0x91, 0x92, 0x29, 0xc0, 0x28, 0x30, 0x0a, 0x8c, 0x02, 0xa3, 0xc0, 0x28, 0x30, 0x0a,
		0x8c, 0x32, 0xda, 0xc0, 0xe8, 0xc6, 0x60, 0x94, 0x92, 0x29, 0x20, 0x29, 0x48, 0x0a, 0x92, 0x82,
		0xa4, 0x20, 0x29, 0x48, 0x0a, 0x92, 0x32, 0xda, 0x20, 0xe9, 0x86, 0x91, 0x94, 0x92, 0x29, 0x80,
		0x28, 0x20, 0x0a, 0x88, 0x02, 0xa2, 0x80, 0x28, 0x20, 0x0a, 0x88, 0x32, 0xda, 0x80, 0xe8, 0x9a,
		0x5b, 0x28, 0x6a, 0xc9, 0x14, 0x81, 0x23, 0xeb, 0xa5, 0x58, 0x15, 0x53, 0xea, 0xc3, 0x07, 0xe5,
		0xb0, 0x42, 0xc0, 0xad, 0xed, 0x76, 0x07, 0x81, 0x12, 0x4d, 0x40, 0x66, 0xd8, 0xb1, 0xac, 0x71,
		0x8a, 0xa5, 0xac, 0x2f, 0xbb, 0xa0, 0x7e, 0x00, 0xc5, 0x52, 0xd6, 0x99, 0x1d, 0x08, 0x66, 0x05,
		0xc2, 0xd9, 0x80, 0x60, 0x4e, 0x95, 0x06, 0xfd, 0xa7, 0x45, 0xfd, 0xa9, 0xf3, 0x5f, 0x7a, 0xdc,
		0x27, 0x48, 0xf7, 0xa9, 0x50, 0xfd, 0x1a, 0x69, 0x3e, 0xcf, 0xa3, 0x98, 0x11, 0x3a, 0xbe, 0xce,
		0x21, 0x9a, 0x8d, 0x0e, 0x5a, 0xcd, 0x10, 0xca, 0xed, 0x29, 0x39, 0x30, 0x7b, 0xde, 0x34, 0x58,
		0x06, 0x96, 0x81, 0x65, 0x99, 0xc2, 0xb2, 0xa1, 0x5d, 0x46, 0xae, 0xf3, 0x47, 0x98, 0x39, 0x36,
		0xbb, 0xf2, 0xc6, 0x61, 0xa8, 0xec, 0xd9, 0x9e, 0x1f, 0x2a, 0xc7, 0xf7, 0x3a, 0x12, 0xcb, 0x4a,
		0x30, 0x1f, 0xcc, 0x07, 0xf3, 0xc1, 0x7c, 0xdb, 0xcc, 0x7c, 0xbe, 0x63, 0x77, 0x2d, 0xbb, 0xd3,
		0x09, 0x54, 0x28, 0x28, 0xc4, 0x3d, 0x6e, 0x16, 0xd6, 0x83, 0xf5, 0x60, 0xbd, 0x4c, 0xb1, 0x9e,
		0xdb, 0x17, 0xb2, 0xce, 0x45, 0x0b, 0xdd, 0xfb, 0x28, 0xd0, 0xd6, 0xe4, 0x5d, 0x33, 0x87, 0x64,
		0xf3, 0x9e, 0x7b, 0xd8, 0x17, 0xec, 0xbb, 0x67, 0x7d, 0x28, 0xb9, 0xc3, 0xe1, 0xdc, 0x8e, 0x22,
		0x15, 0x78, 0xe2, 0x7b, 0x1c, 0xca, 0x3f, 0xfc, 0xb6, 0x6b, 0x7d, 0xbc, 0xfe, 0xef, 0x6f, 0x7b,
		0xd6, 0xc7, 0xeb, 0xf1, 0x1f, 0xf7, 0x46, 0xff, 0xf8, 0x4f, 0xe5, 0xaf, 0xff, 0x56, 0x7e, 0xdb,
		0xb5, 0xf6, 0x27, 0x3f, 0xad, 0x1c, 0xfc, 0xb6, 0x6b, 0x1d, 0x5c, 0xff, 0xf8, 0xc3, 0xef, 0xbf,
		0xbf, 0x4d, 0xfa, 0x99, 0x1f, 0xff, 0xf3, 0xee, 0x2f, 0xb9, 0x9d, 0x37, 0xd7, 0x92, 0xdd, 0xda,
		0xbc, 0x6c, 0xfc, 0x2b, 0xb5, 0xbe, 0xfd, 0x7f, 0x3f, 0xac, 0xab, 0x77, 0x7f, 0xfc, 0x5f, 0xe5,
		0xac, 0x2d, 0x4b, 0xff, 0x94, 0x61, 0xb3, 0x7f, 0x8f, 0xd9, 0x8f, 0x66, 0x99, 0x6d, 0xdd, 0x56,
		0xad, 0xe3, 0xeb, 0xff, 0xec, 0xfd, 0xb4, 0xff, 0xd7, 0xa7, 0x1f, 0xff, 0x73, 0xf8, 0xd7, 0xd3,
		0x1f, 0xfe, 0x77, 0xd9, 0xaf, 0xed, 0xfd, 0x74, 0xf8, 0xd7, 0xa7, 0x15, 0xff, 0xe5, 0xfd, 0x5f,
		0x9f, 0x62, 0xb6, 0x71, 0xf0, 0xd7, 0x0f, 0xcf, 0x7e, 0x75, 0xf8, 0xf3, 0xca, 0xaa, 0x0f, 0xec,
		0xaf, 0xf8, 0xc0, 0xbb, 0x55, 0x1f, 0x78, 0xb7, 0xe2, 0x03, 0x2b, 0xbf, 0x52, 0x65, 0xc5, 0x07,
		0x0e, 0xfe, 0xfa, 0xef, 0xb3, 0xdf, 0xff, 0x61, 0xf9, 0xaf, 0xbe, 0xff, 0xeb, 0xc7, 0xff, 0xae,
		0xfa, 0x6f, 0x87, 0x7f, 0xfd, 0xf7, 0xd3, 0x8f, 0x3f, 0x6e, 0xb1, 0x23, 0x64, 0xba, 0xad, 0x7f,
		0xba, 0x65, 0x2f, 0x30, 0x6c, 0x71, 0x76, 0xde, 0x71, 0xed, 0x3b, 0xcf, 0x0f, 0x23, 0xd7, 0xb1,
		0x1c, 0xbf, 0xa3, 0xa4, 0xb3, 0xf4, 0xa7, 0xcd, 0x93, 0xad, 0x93, 0xad, 0x93, 0xad, 0x67, 0x2a,
		0x5b, 0xbf, 0xb9, 0xed, 0x08, 0x9b, 0xe9, 0x23, 0xf6, 0xdc, 0x17, 0x68, 0xab, 0xee, 0x0d, 0x7a,
		0x72, 0xd3, 0xb8, 0xe5, 0x5f, 0x46, 0x81, 0xeb, 0xdd, 0xc9, 0x9e, 0x4e, 0xd8, 0x1d, 0xf6, 0xe5,
		0x59, 0xb3, 0x7d, 0xd4, 0xa8, 0x7e, 0x39, 0x6b, 0x5e, 0xb6, 0x1a, 0x35, 0x49, 0x92, 0xdf, 0x1b,
		0xb6, 0x7e, 0x54, 0x6f, 0xd5, 0x6b, 0xad, 0x46, 0xf3, 0xac, 0xdd, 0x6a, 0x9c, 0xd6, 0x9b, 0x57,
		0x2d, 0xc9, 0x27, 0x54, 0x86, 0x4f, 0xa8, 0xd7, 0x7e, 0x6e, 0xb6, 0x8f, 0xab, 0x8d, 0x93, 0xfa,
		0x91, 0x64, 0xdb, 0xef, 0x86, 0x6d, 0x1f, 0x37, 0x2f, 0x7e, 0xa9, 0x5e, 0x1c, 0x35, 0xce, 0xbe,
		0xb4, 0x2f, 0xea, 0x97, 0x75, 0xd1, 0x2f, 0xbf, 0x3f, 0x7c, 0xc0, 0x79, 0xb5, 0xf5, 0x73, 0xfb,
		0xa8, 0xf9, 0xcb, 0x99, 0x64, 0xcb, 0x07, 0xc3, 0x96, 0x6b, 0xcd, 0xb3, 0x5a, 0xb5, 0x55, 0x3f,
		0xab, 0xb6, 0xea, 0x47, 0xed, 0x54, 0x1e, 0xf3, 0x7e, 0xf8, 0x98, 0xea, 0xd1, 0x69, 0xe3, 0x4c,
		0xbc, 0xe9, 0xc3, 0x61, 0xd3, 0x17, 0xf5, 0x7f, 0xd6, 0x2f, 0x2e, 0xeb, 0xed, 0x15, 0x6f, 0x92,
		0xad, 0x93, 0x43, 0x7e, 0x63, 0xe4, 0xb1, 0x05, 0x8d, 0x73, 0xa1, 0x67, 0x3f, 0x95, 0xde, 0x0b,
		0x76, 0xee, 0x8a, 0xfe, 0xfc, 0x54, 0x12, 0x5c, 0x41, 0x5b, 0x62, 0xf7, 0xc6, 0x77, 0x8e, 0x3d,
		0x76, 0xaf, 0x0b, 0x56, 0xff, 0xa9, 0x54, 0x11, 0x6c, 0xf9, 0x99, 0xcd, 0x7f, 0x2a, 0xbd, 0x13,
		0x6c, 0xfe, 0xb1, 0xbb, 0x15, 0x5d, 0x55, 0x2c, 0x2f, 0x0e, 0xe6, 0xbe, 0xe4, 0xc1, 0xb0, 0x97,
		0x2d, 0xf1, 0x53, 0xe9, 0xb0, 0x18, 0x67, 0x30, 0x36, 0x9a, 0xd3, 0x84, 0x4e, 0xe0, 0xf6, 0x5c,
		0xcf, 0x8e, 0xfc, 0x40, 0x3e, 0xa3, 0x59, 0x6c, 0x9c, 0x7c, 0x86, 0x7c, 0x86, 0x7c, 0x26, 0x53,
		0xf9, 0x4c, 0x38, 0x86, 0x7b, 0xc1, 0x14, 0xe6, 0x43, 0x0e, 0x3d, 0x61, 0xa0, 0x7a, 0x7e, 0xa4,
		0xe4, 0x37, 0x5f, 0x3c, 0x69, 0x17, 0xff, 0x87, 0xff, 0xc3, 0xff, 0x65, 0xca, 0xff, 0xb1, 0xfb,
		0x42, 0xbf, 0xe7, 0xd8, 0x7d, 0xc1, 0xee, 0x0b, 0x76, 0x5f, 0x3c, 0xed, 0x5f, 0x76, 0x5f, 0x6c,
		0x81, 0xd9, 0xb3, 0x1c, 0xce, 0xee, 0x8b, 0x75, 0x3b, 0x42, 0xa6, 0x1b, 0xbb, 0x2f, 0xb6, 0x74,
		0xf7, 0xc5, 0x34, 0x8f, 0x1e, 0x44, 0xf7, 0xca, 0x8b, 0x5c, 0x67, 0x54, 0x6e, 0xc6, 0x52, 0x9e,
		0x7d, 0xd3, 0x15, 0xb8, 0xe7, 0xf0, 0x59, 0xba, 0xbe, 0xfc, 0x31, 0x64, 0xef, 0x64, 0xef, 0x64,
		0xef, 0x99, 0xca, 0xde, 0x6f, 0x7c, 0xbf, 0xab, 0x6c, 0x4f, 0x32, 0x75, 0xdf, 0xcb, 0xaf, 0x7b,
		0x74, 0x7c, 0x2f, 0x0a, 0xfc, 0xae, 0xd5, 0xef, 0xda, 0x9e, 0xb2, 0x5c, 0xaf, 0xa3, 0xfa, 0xca,
		0xeb, 0x28, 0x81, 0xe5, 0xe1, 0xa7, 0x1e, 0x72, 0xf5, 0x93, 0x70, 0x92, 0x38, 0x49, 0x9c, 0x24,
		0x4e, 0x32, 0xb3, 0x4e, 0x32, 0xb5, 0x2d, 0xbc, 0x2b, 0xda, 0xc7, 0x21, 0xe2, 0x10, 0x71, 0x88,
		0xd9, 0x72, 0x88, 0xec, 0xe1, 0x95, 0x68, 0x95, 0x3d, 0xbc, 0xab, 0xdb, 0x66, 0x0f, 0xef, 0x6b,
		0x8f, 0x61, 0x0f, 0xef, 0xa2, 0x7d, 0xb2, 0x87, 0xf7, 0xd1, 0x43, 0xd8, 0xc3, 0xbb, 0x2a, 0x84,
		0xb1, 0x87, 0x37, 0x1d, 0x4a, 0x29, 0xe5, 0x74, 0x0f, 0xef, 0x2c, 0xeb, 0x48, 0x65, 0x13, 0xef,
		0xd2, 0xd6, 0xc9, 0x68, 0xc8, 0x68, 0xc8, 0x68, 0x32, 0x95, 0xd1, 0xb0, 0x8b, 0x77, 0xc1, 0x17,
		0xf6, 0x5c, 0xcf, 0xed, 0x0d, 0x7a, 0x56, 0xa0, 0x1c, 0xe5, 0x3e, 0x28, 0x6b, 0x74, 0x47, 0xc4,
		0x83, 0xdd, 0x15, 0x77, 0x8b, 0x2b, 0x1f, 0x84, 0x87, 0xc4, 0x43, 0xe2, 0x21, 0x33, 0xe5, 0x21,
		0x07, 0xae, 0x17, 0xbd, 0xab, 0x08, 0x7a, 0xc8, 0x43, 0x8a, 0xde, 0x26, 0x6c, 0x94, 0xa2, 0xb7,
		0x29, 0xe9, 0x07, 0xa5, 0xd4, 0x8b, 0xde, 0xee, 0x57, 0x3e, 0xee, 0x7f, 0x7c, 0x7f, 0x58, 0xf9,
		0x48, 0xa9, 0x5b, 0xb9, 0x74, 0xb3, 0xb4, 0xed, 0xdb, 0xb9, 0x42, 0x15, 0x86, 0xae, 0xef, 0x59,
		0xa3, 0xfb, 0xba, 0xc4, 0xe9, 0xec, 0x71, 0xeb, 0x20, 0x19, 0x48, 0x06, 0x92, 0x65, 0x0a, 0xc9,
		0x6e, 0x6e, 0x3b, 0xa2, 0x46, 0x5a, 0xda, 0xda, 0x45, 0xb8, 0xab, 0x73, 0xf9, 0x95, 0x37, 0xe1,
		0x35, 0x99, 0x4a, 0x7a, 0xcb, 0x3d, 0xa3, 0xb5, 0xb6, 0xc6, 0x59, 0xa3, 0xb5, 0x5d, 0x8b, 0x3a,
		0x92, 0xab, 0x16, 0x93, 0x26, 0x25, 0x97, 0x58, 0x46, 0x03, 0x22, 0xbb, 0xf8, 0x71, 0x75, 0x3e,
		0x8c, 0x9c, 0x2c, 0x16, 0x68, 0x77, 0x60, 0x4a, 0xc0, 0x05, 0x69, 0x41, 0x5a, 0x90, 0x16, 0xa4,
		0x05, 0x69, 0x41, 0x5a, 0x90, 0x16, 0xa4, 0x05, 0x69, 0x95, 0xc3, 0xc1, 0x4d, 0xe8, 0x04, 0xee,
		0x8d, 0xea, 0x58, 0xfd, 0xc0, 0x8f, 0x7c, 0xc7, 0xef, 0x0a, 0x96, 0x15, 0x5a, 0xda, 0x3a, 0xdc,
		0x05, 0x77, 0xc1, 0x5d, 0x99, 0xe2, 0x2e, 0xb7, 0xa3, 0xbc, 0xc8, 0x8d, 0xbe, 0x07, 0xea, 0x56,
		0x92, 0xb8, 0x04, 0x16, 0x61, 0xca, 0x8d, 0xc9, 0x57, 0xfb, 0x6c, 0x87, 0x82, 0xd3, 0x78, 0xfa,
		0xe2, 0x8d, 0xb3, 0xcb, 0x56, 0xf5, 0xe4, 0xa4, 0x7d, 0x7e, 0xd1, 0x6c, 0x35, 0x6b, 0xcd, 0x93,
		0x76, 0xeb, 0xd7, 0xf3, 0xba, 0xd4, 0x94, 0x1e, 0x2d, 0x4a, 0x85, 0xa2, 0x65, 0x16, 0x84, 0x97,
		0xcd, 0xa6, 0xdd, 0xf0, 0xf9, 0xcb, 0x79, 0x39, 0x8b, 0x8b, 0x85, 0x29, 0xbd, 0xee, 0x51, 0xe3,
		0xa2, 0x5e, 0x6b, 0x9d, 0xfc, 0xda, 0xae, 0x35, 0xcf, 0xce, 0xea, 0xb5, 0x56, 0xfd, 0x68, 0x9b,
		0xde, 0xfe, 0xcb, 0x45, 0xe3, 0x73, 0x63, 0x9b, 0x5e, 0xb8, 0xf1, 0xe5, 0x74, 0xab, 0xa6, 0x77,
		0xe3, 0xb2, 0x71, 0xb9, 0x4d, 0xef, 0x7b, 0xd2, 0xac, 0x55, 0x4f, 0xb6, 0xee, 0x85, 0xdb, 0xd5,
		0x2f, 0x5f, 0x2e, 0xea, 0x5f, 0xaa, 0xad, 0xfa, 0x36, 0xbd, 0x7a, 0xf3, 0xf2, 0xfc, 0x78, 0xdb,
		0xde, 0xf7, 0xdd, 0x36, 0xbd, 0xf0, 0x79, 0xad, 0xbe, 0x55, 0xce, 0xfa, 0xbc, 0x71, 0xba, 0x4d,
		0xaf, 0x7b, 0xd9, 0xaa, 0xb6, 0x1a, 0xb5, 0x72, 0xc6, 0x76, 0x37, 0x5d, 0xe7, 0x3c, 0x23, 0x3c,
		0x71, 0xc3, 0xa8, 0x1a, 0x45, 0x81, 0x4c, 0x56, 0x78, 0xea, 0x7a, 0xf5, 0xae, 0x1a, 0xe6, 0xcc,
		0x42, 0x1b, 0xdd, 0xca, 0xa7, 0xf6, 0xb7, 0x85, 0x16, 0xd3, 0xb9, 0x99, 0xbe, 0xdc, 0x0c, 0x3a,
		0x2a, 0x50, 0x9d, 0xcf, 0xdf, 0xcb, 0x9f, 0x4a, 0xde, 0xa0, 0xdb, 0x95, 0x6c, 0xf2, 0x2a, 0x54,
		0x81, 0xc8, 0xce, 0x3c, 0x03, 0x95, 0xef, 0xcd, 0x1a, 0x67, 0x56, 0xb9, 0xea, 0x79, 0x7e, 0x34,
		0x2a, 0x2b, 0x66, 0x34, 0xa7, 0xca, 0xa1, 0x73, 0xaf, 0x7a, 0x76, 0xdf, 0x8e, 0xee, 0x87, 0xd6,
		0xbf, 0xe3, 0xf7, 0x95, 0xe7, 0x8c, 0x94, 0x37, 0xeb, 0xe6, 0xb6, 0xb3, 0x33, 0xfc, 0xff, 0xe8,
		0x30, 0xc2, 0xad, 0xed, 0xa8, 0x70, 0xfe, 0xc7, 0x9d, 0xbe, 0x52, 0x41, 0x38, 0xfa, 0xfb, 0xce,
		0x78, 0x1d, 0xe8, 0xcd, 0x7a, 0xba, 0x2c, 0xd9, 0x27, 0x12, 0x76, 0x6e, 0xf9, 0xef, 0xea, 0xbb,
		0xcc, 0x8d, 0x13, 0x66, 0x06, 0x6f, 0x6e, 0xe0, 0xa9, 0x18, 0xb4, 0x80, 0x01, 0x0b, 0x18, 0x6c,
		0xd2, 0x31, 0x35, 0x34, 0x14, 0x73, 0x03, 0xd1, 0x50, 0xab, 0xca, 0x61, 0x14, 0x0c, 0x9c, 0xc8,
		0x9b, 0xaa, 0x3f, 0xb7, 0x9d, 0x76, 0x63, 0xda, 0x72, 0xfb, 0x7c, 0xd8, 0xe6, 0x9b, 0x74, 0x8c,
		0x26, 0xde, 0x6f, 0xc6, 0x1c, 0x02, 0xdd, 0xae, 0x37, 0xea, 0xf2, 0x78, 0x3d, 0xf3, 0xfa, 0x7b,
		0xc6, 0x78, 0xc7, 0x72, 0xb2, 0xdd, 0x2f, 0x0b, 0x67, 0xec, 0xe2, 0x2f, 0x9c, 0xcf, 0xa4, 0xda,
		0x98, 0xbf, 0x3e, 0x5b, 0x35, 0x89, 0xb9, 0xd4, 0xa8, 0xb3, 0x3a, 0xa2, 0xbf, 0x0a, 0xa2, 0xbb,
		0xda, 0x61, 0xbc, 0xaa, 0x61, 0xbc, 0x7a, 0x61, 0xb4, 0x4a, 0x21, 0x6b, 0x55, 0x47, 0x6e, 0xb2,
		0xa8, 0x52, 0xee, 0xa8, 0xd0, 0x0d, 0x54, 0x67, 0x76, 0xca, 0x30, 0xfa, 0xa6, 0x7f, 0x92, 0x71,
		0x36, 0xf6, 0x2f, 0x35, 0x9a, 0x34, 0xea, 0x6a, 0x2d, 0x18, 0x6a, 0x2f, 0x10, 0x9a, 0x2c, 0x08,
		0x9a, 0x2f, 0x00, 0x9a, 0x2e, 0xf8, 0x89, 0x2d, 0xf0, 0x89, 0x2d, 0xe8, 0x89, 0x2c, 0xe0, 0xa5,
		0xcb, 0x75, 0xda, 0x0b, 0x72, 0xe6, 0xa7, 0xfe, 0x0c, 0x4e, 0xf9, 0x19, 0x9e, 0xea, 0x33, 0x48,
		0x0a, 0x24, 0x4e, 0xed, 0x49, 0x9d, 0xd2, 0x13, 0x3f, 0xd9, 0x25, 0x77, 0x92, 0xcb, 0x64, 0x5f,
		0x87, 0xc4, 0x29, 0x3b, 0xf1, 0x53, 0x75, 0x59, 0xee, 0xeb, 0x35, 0x25, 0x98, 0xd7, 0x69, 0x91,
		0xf5, 0x4f, 0x49, 0x02, 0x76, 0xa4, 0x46, 0xc3, 0x60, 0xf5, 0x06, 0xdd, 0xc8, 0xed, 0x77, 0x5d,
		0x15, 0x98, 0x44, 0xea, 0x25, 0xad, 0x11, 0xa2, 0x09, 0xd1, 0x05, 0x0c, 0xd1, 0x1f, 0x0c, 0x22,
		0xf4, 0xc1, 0xd6, 0x46, 0xe8, 0x3d, 0x22, 0x74, 0xda, 0x11, 0xba, 0x72, 0x40, 0x68, 0x2e, 0x42,
		0x68, 0x1e, 0x5f, 0xe1, 0x61, 0xf5, 0x55, 0x60, 0xf5, 0x54, 0xef, 0x46, 0x05, 0x56, 0xd7, 0xf5,
		0xfe, 0xd0, 0x0f, 0xce, 0x2b, 0xda, 0x4b, 0xe8, 0x3c, 0x8f, 0xd4, 0xad, 0x3d, 0xe8, 0x46, 0x5a,
		0x8e, 0xa8, 0x3c, 0x1a, 0xfc, 0x64, 0xe1, 0xe0, 0x1a, 0x7c, 0x00, 0x1f, 0x0a, 0x86, 0x0f, 0xfa,
		0xc5, 0xed, 0x35, 0x8b, 0xd9, 0xa7, 0xe9, 0xa0, 0x3a, 0xa6, 0x1e, 0xa9, 0x43, 0x86, 0x80, 0x89,
		0x63, 0xe2, 0x99, 0x34, 0x71, 0xd7, 0xc0, 0xba, 0x5d, 0x0c, 0x1b, 0xc3, 0x2e, 0x9c, 0x61, 0xcf,
		0xd6, 0x80, 0x2d, 0xb7, 0x63, 0x62, 0xdd, 0x1f, 0x32, 0x60, 0xdd, 0xe3, 0xcd, 0x27, 0xd3, 0x7b,
		0x71, 0xb5, 0x0d, 0xfd, 0x71, 0x33, 0xd8, 0x3c, 0x36, 0x5f, 0x34, 0x9b, 0x37, 0xb9, 0x6f, 0xdf,
		0xe4, 0x7e, 0x7d, 0xb3, 0xfb, 0xf4, 0x0d, 0x34, 0x3f, 0xe1, 0xfb, 0xf2, 0x25, 0x2e, 0xca, 0x16,
		0xbb, 0x18, 0x3b, 0x07, 0xf7, 0xdf, 0x5f, 0x9b, 0x74, 0x93, 0xe4, 0xb5, 0xce, 0x39, 0xb9, 0xcf,
		0xfe, 0x7a, 0x9d, 0xfb, 0x61, 0x65, 0xcc, 0xea, 0x7d, 0xf1, 0xcc, 0x8a, 0x0b, 0xbf, 0x73, 0x77,
		0xbf, 0x7c, 0xe6, 0x1c, 0x0d, 0xd3, 0x27, 0x57, 0xf7, 0xc5, 0x5f, 0x6f, 0xd1, 0x7a, 0x4c, 0xa0,
		0xfe, 0x1c, 0x3c, 0xda, 0x87, 0x38, 0xb9, 0x42, 0x41, 0x3f, 0x71, 0x5a, 0xd9, 0x22, 0x39, 0x14,
		0x39, 0x54, 0xc1, 0x72, 0x28, 0x76, 0x35, 0x26, 0x6e, 0x84, 0x5d, 0x8d, 0x2f, 0x76, 0x31, 0xbb,
		0x1a, 0x53, 0x0e, 0xba, 0x19, 0x0b, 0xd5, 0x79, 0x3e, 0x2f, 0x94, 0xe0, 0xe0, 0x62, 0x8c, 0xf3,
		0x42, 0x6f, 0x0c, 0x7a, 0x60, 0x7a, 0xf0, 0xf0, 0x55, 0xf5, 0x3a, 0xd9, 0xb9, 0xc2, 0xe4, 0xe7,
		0x08, 0x45, 0xce, 0x0d, 0x6a, 0x9c, 0x13, 0xd4, 0x38, 0x17, 0xf8, 0x5a, 0x97, 0x26, 0x9c, 0x4c,
		0x9a, 0x93, 0xa8, 0x1c, 0xeb, 0x98, 0xd8, 0xca, 0xc3, 0x7c, 0x2f, 0xcf, 0xbe, 0xd5, 0x73, 0x6a,
		0xf9, 0x7f, 0x59, 0xd1, 0x25, 0x71, 0xbb, 0x22, 0x51, 0x17, 0x2c, 0xff, 0xe6, 0xcf, 0xbf, 0xd7,
		0xe3, 0x9f, 0x3c, 0xf9, 0x86, 0x65, 0xf5, 0x2d, 0x0a, 0x6c, 0x6b, 0xe0, 0x85, 0x91, 0x7d, 0xd3,
		0x5d, 0x0e, 0x33, 0xe5, 0x40, 0xdd, 0xaa, 0x40, 0x79, 0xce, 0x6a, 0x66, 0x78, 0xe1, 0x95, 0xa6,
		0xa4, 0x73, 0x71, 0x5c, 0x3b, 0xf8, 0xf0, 0x61, 0xf7, 0xa7, 0xd2, 0xf8, 0x0f, 0x7b, 0x2f, 0x8c,
		0x5b, 0x5c, 0x96, 0x5d, 0x64, 0xd6, 0xf9, 0x77, 0x7c, 0x65, 0x56, 0x26, 0xc5, 0xd3, 0x47, 0x18,
		0xfa, 0xec, 0x25, 0x92, 0xce, 0x8f, 0x37, 0x2f, 0xc7, 0x85, 0xa7, 0xa3, 0xf3, 0xca, 0xbc, 0x79,
		0x7d, 0xbe, 0x2c, 0xe9, 0x8d, 0xe7, 0xd6, 0xf0, 0xf8, 0x2d, 0xe6, 0xdf, 0x71, 0xe1, 0xdb, 0x94,
		0x1d, 0xbf, 0xd7, 0xf7, 0xbd, 0x89, 0x57, 0x7a, 0xfc, 0x4d, 0x66, 0x43, 0xbc, 0xf0, 0x3b, 0x4f,
		0xde, 0x63, 0xf9, 0x19, 0xca, 0x95, 0xa9, 0xd6, 0x4b, 0xa9, 0xd4, 0x62, 0xaa, 0xd4, 0xef, 0xda,
		0xd1, 0xad, 0x1f, 0xf4, 0x96, 0xbd, 0xe5, 0x2b, 0x73, 0x28, 0x76, 0xbe, 0x13, 0x7b, 0xc2, 0x3c,
		0xcd, 0x57, 0x66, 0x5f, 0x2e, 0xa1, 0x45, 0xae, 0x3a, 0x5d, 0x38, 0xef, 0xde, 0xd5, 0x2f, 0xf5,
		0x6c, 0x24, 0x56, 0xbd, 0xd4, 0xcb, 0x87, 0x5a, 0x5f, 0xcd, 0x81, 0xe3, 0xe4, 0xba, 0x31, 0x07,
		0xca, 0xc4, 0xe8, 0x63, 0x25, 0xaa, 0x66, 0x16, 0xff, 0xe2, 0x40, 0xea, 0x05, 0x83, 0xd7, 0x8e,
		0x8f, 0x96, 0x6f, 0x6c, 0xe7, 0x8f, 0x7e, 0xd7, 0xf6, 0x62, 0x74, 0xc6, 0x6c, 0x63, 0xcd, 0xec,
		0x23, 0xaf, 0x71, 0x4e, 0xac, 0xd3, 0xcc, 0xb1, 0x45, 0x90, 0x24, 0xa2, 0x47, 0xc2, 0x09, 0xa1,
		0xab, 0x6c, 0x68, 0x2b, 0x19, 0xda, 0xca, 0x45, 0xf2, 0x09, 0x23, 0xc3, 0xac, 0x71, 0xcf, 0x21,
		0x97, 0x9d, 0xe9, 0x68, 0x26, 0x3c, 0x27, 0x3f, 0xf9, 0x5c, 0xca, 0x07, 0xe5, 0x77, 0xd7, 0x73,
		0x50, 0x3e, 0xc1, 0x94, 0x33, 0x15, 0xd5, 0xb2, 0x77, 0x5a, 0x3e, 0xfe, 0x94, 0xcc, 0x4b, 0x62,
		0x39, 0x7d, 0xa3, 0x9d, 0x39, 0x75, 0xcc, 0xff, 0xb8, 0x33, 0xf3, 0x87, 0x3b, 0x93, 0x39, 0x4c,
		0x51, 0x8a, 0x75, 0x16, 0xa5, 0xc0, 0xd6, 0xb6, 0xd2, 0xd6, 0x32, 0xa4, 0xe7, 0xc8, 0x89, 0x0f,
		0x31, 0x5f, 0x3e, 0xb9, 0x0e, 0x51, 0x9b, 0x36, 0xd2, 0xfe, 0x3c, 0x6b, 0x44, 0x57, 0x8d, 0x78,
		0x81, 0xab, 0x9d, 0x7b, 0x3b, 0x0c, 0xdd, 0x30, 0x3e, 0x4b, 0x4e, 0x3f, 0x00, 0x49, 0x42, 0x92,
		0x90, 0x24, 0xd1, 0x6d, 0xbb, 0xa3, 0xdb, 0xc4, 0x1b, 0xc2, 0x91, 0x70, 0x24, 0x96, 0xb6, 0x16,
		0x4b, 0x93, 0xa5, 0xc8, 0x18, 0x86, 0x36, 0x88, 0xdc, 0xae, 0xfb, 0xef, 0x64, 0x6f, 0x3a, 0xdf,
		0xc1, 0xb1, 0xf0, 0x61, 0xc2, 0x1b, 0x46, 0x67, 0x68, 0x74, 0x89, 0x6b, 0x0b, 0x06, 0x2a, 0x1c,
		0xf5, 0x7d, 0x68, 0xb2, 0xe1, 0x6e, 0xda, 0x84, 0xde, 0x0e, 0xbb, 0xbd, 0x9c, 0xed, 0xb0, 0xd3,
		0x98, 0xe0, 0xa6, 0x13, 0x5d, 0x6c, 0xc2, 0x8b, 0x4d, 0x7c, 0x39, 0x03, 0x48, 0x66, 0x08, 0x09,
		0x0d, 0x42, 0xdb, 0x30, 0x9e, 0x19, 0x88, 0xfe, 0x98, 0x3d, 0xb5, 0x13, 0xdd, 0x21, 0xd3, 0x33,
		0x17, 0x63, 0xb3, 0x91, 0x30, 0x1f, 0x61, 0x33, 0x92, 0x32, 0x27, 0x71, 0xb3, 0x12, 0x37, 0x2f,
		0x79, 0x33, 0xd3, 0x33, 0x37, 0x4d, 0xb3, 0x33, 0x36, 0x3f, 0x5d, 0xe5, 0x40, 0x56, 0x51, 0x48,
		0xc9, 0x24, 0xc5, 0x4c, 0x53, 0xd2, 0x44, 0x53, 0x32, 0x55, 0x69, 0x93, 0x4d, 0xcd, 0x74, 0x53,
		0x33, 0xe1, 0xf4, 0x4c, 0xd9, 0xcc, 0xa4, 0x0d, 0x4d, 0x5b, 0xcc, 0xc4, 0x67, 0x0d, 0x4d, 0x04,
		0x6e, 0xe1, 0x8b, 0x28, 0x47, 0xad, 0x0a, 0x8d, 0xa0, 0xcc, 0x0d, 0xb9, 0xe2, 0xe6, 0x9f, 0x86,
		0x1b, 0x48, 0xd9, 0x1d, 0xa4, 0xe5, 0x16, 0x52, 0x77, 0x0f, 0xa9, 0xbb, 0x89, 0xf4, 0xdd, 0x85,
		0x8c, 0xdb, 0x10, 0x72, 0x1f, 0xb3, 0xd7, 0x15, 0xbb, 0x7b, 0x77, 0x89, 0xb2, 0x19, 0xb8, 0xde,
		0x9d, 0xe4, 0xa4, 0xd5, 0x2b, 0x3b, 0x92, 0x76, 0x0f, 0x0a, 0xdd, 0x2c, 0xf4, 0xac, 0xdd, 0xef,
		0x77, 0x7e, 0x64, 0xf9, 0x8e, 0xe5, 0xf8, 0xbd, 0x7e, 0xa0, 0xc2, 0x50, 0x75, 0xac, 0xae, 0xb2,
		0x6f, 0x87, 0x0f, 0xf9, 0x2b, 0x2b, 0x17, 0xc4, 0x0b, 0x00, 0xca, 0x60, 0xf8, 0x62, 0xd1, 0x7d,
		0xa0, 0xc2, 0x7b, 0xbf, 0xdb, 0xb1, 0x06, 0xfd, 0xbe, 0x0a, 0xe4, 0xc3, 0xd1, 0xd2, 0xa7, 0x10,
		0x9e, 0x08, 0x4f, 0x84, 0xa7, 0x2d, 0x0d, 0x4f, 0x7d, 0x15, 0x38, 0xca, 0x8b, 0xec, 0x3b, 0x95,
		0x42, 0x88, 0x3a, 0x10, 0x6c, 0xd2, 0xec, 0xfc, 0xe7, 0xaa, 0xbf, 0x64, 0x0d, 0xab, 0x24, 0x75,
		0x5e, 0x74, 0x65, 0xe3, 0x42, 0xe7, 0x48, 0x57, 0xb6, 0x2f, 0x7d, 0xe6, 0x71, 0xf5, 0xfc, 0x93,
		0x3a, 0x0b, 0x99, 0xb2, 0xe9, 0x3d, 0x1e, 0x5a, 0xfb, 0x5b, 0xfa, 0x43, 0xbb, 0xb7, 0xcb, 0xe0,
		0xae, 0xc7, 0x3b, 0xcb, 0xb7, 0x76, 0x0d, 0x92, 0x17, 0x1b, 0xc9, 0x2d, 0xa7, 0xab, 0xec, 0x35,
		0x81, 0xf9, 0xe4, 0x59, 0xe0, 0x39, 0x78, 0x0e, 0x9e, 0x83, 0xe7, 0xe0, 0x39, 0x78, 0x0e, 0x9e,
		0x83, 0xe7, 0xe0, 0x39, 0x78, 0x9e, 0x7b, 0x3c, 0xdf, 0xe8, 0x9a, 0xb1, 0x70, 0xc7, 0x1b, 0xef,
		0x1d, 0x5e, 0xd8, 0x8d, 0xbb, 0x33, 0xdb, 0xd6, 0x38, 0xfb, 0x53, 0xa2, 0x4d, 0xfc, 0xf2, 0x1d,
		0x6e, 0x52, 0xd7, 0x4b, 0x64, 0x4d, 0x5d, 0x72, 0x2d, 0x5d, 0x28, 0x0b, 0x62, 0xeb, 0x4c, 0x06,
		0xb3, 0x1b, 0xb6, 0xce, 0x6c, 0x2a, 0x6b, 0x99, 0xdf, 0x1e, 0xa1, 0xec, 0xdb, 0x40, 0xdd, 0x4a,
		0xcc, 0xba, 0xe9, 0x22, 0xf7, 0xa1, 0x40, 0x5b, 0xe7, 0x13, 0xcf, 0xfc, 0xf6, 0xed, 0xc4, 0x97,
		0xee, 0x8c, 0x5c, 0x49, 0x0e, 0x1d, 0x6a, 0xb2, 0xd3, 0x55, 0xaf, 0x8e, 0x57, 0x92, 0x53, 0x57,
		0xaf, 0x8e, 0x94, 0x94, 0x4b, 0xad, 0xe0, 0x52, 0x71, 0xa9, 0x39, 0x75, 0xa9, 0x62, 0xbb, 0x11,
		0x1d, 0xbf, 0xd7, 0x73, 0xa3, 0x48, 0xe3, 0x46, 0xbe, 0x57, 0xe7, 0xf2, 0xbc, 0x69, 0x94, 0xe5,
		0x8c, 0x39, 0x86, 0xb4, 0x1c, 0x44, 0xea, 0x8e, 0x22, 0x75, 0x87, 0x91, 0xbe, 0xe3, 0x90, 0x55,
		0x1b, 0xb2, 0xaf, 0x2c, 0x0f, 0x5c, 0x2f, 0x7a, 0xbf, 0x9f, 0x82, 0xaa, 0xfc, 0x01, 0x55, 0x59,
		0xb8, 0x71, 0x54, 0xe5, 0x35, 0x9b, 0xdd, 0xe3, 0xa1, 0x5d, 0x8b, 0xaa, 0xac, 0x55, 0x32, 0x79,
		0xdb, 0x47, 0xbb, 0xd8, 0x32, 0x73, 0x26, 0x36, 0x41, 0xdc, 0x06, 0x2a, 0x85, 0x63, 0x31, 0xa3,
		0x56, 0xc1, 0x4f, 0xf0, 0x13, 0xfc, 0x04, 0x3f, 0xc1, 0x4f, 0xf0, 0x13, 0xfc, 0x04, 0x3f, 0xc1,
		0x4f, 0xf0, 0xf3, 0xe9, 0x20, 0xde, 0xbb, 0x77, 0xf7, 0xd6, 0x57, 0x3b, 0x52, 0x41, 0xcf, 0x0e,
		0xfe, 0x90, 0x07, 0xd1, 0x27, 0xed, 0x83, 0xa4, 0x20, 0x29, 0x48, 0x0a, 0x92, 0x82, 0xa4, 0x20,
		0x29, 0x48, 0x0a, 0x92, 0x82, 0xa4, 0x20, 0xe9, 0xd3, 0x41, 0xec, 0xda, 0x61, 0x64, 0xa5, 0xcd,
		0xa5, 0xcb, 0x1e, 0x02, 0x9c, 0x02, 0xa7, 0xc0, 0xe9, 0x96, 0xc2, 0x69, 0xe4, 0xf6, 0x54, 0xe4,
		0x3a, 0x7f, 0x84, 0x99, 0x27, 0xd4, 0x2b, 0x6f, 0x1c, 0x44, 0xcb, 0x9e, 0xed, 0xf9, 0xa1, 0x72,
		0x7c, 0xaf, 0x13, 0x96, 0x21, 0x60, 0x08, 0x18, 0x02, 0x86, 0x80, 0x21, 0xe0, 0x02, 0x10, 0x70,
		0xcf, 0xfe, 0x66, 0x75, 0xdd, 0x9e, 0x1b, 0xc9, 0x73, 0xef, 0xbc, 0x69, 0x68, 0x17, 0xda, 0x85,
		0x76, 0xb7, 0x94, 0x76, 0x91, 0x62, 0x01, 0x51, 0x40, 0x14, 0x10, 0x05, 0x44, 0x01, 0xd1, 0x17,
		0x06, 0x91, 0x9a, 0xed, 0xe0, 0x27, 0xf8, 0x09, 0x7e, 0x4a, 0xcf, 0xdc, 0xcc, 0xd7, 0x6c, 0xcf,
		0x4c, 0x7d, 0xc4, 0x74, 0x2a, 0x21, 0xe2, 0x7d, 0xf1, 0xbe, 0x78, 0x5f, 0x92, 0x7f, 0x92, 0x7f,
		0x92, 0x7f, 0x92, 0x7f, 0x92, 0x7f, 0x92, 0x7f, 0x92, 0xff, 0xa5, 0xf8, 0xc9, 0x8d, 0x39, 0xe0,
		0x29, 0x78, 0x0a, 0x9e, 0xae, 0x13, 0x4f, 0x29, 0xc9, 0x0d, 0xa2, 0x82, 0xa8, 0x99, 0x42, 0x54,
		0x4a, 0x72, 0x43, 0xa4, 0x19, 0x25, 0x52, 0x2e, 0x8c, 0x81, 0x4e, 0xa1, 0x53, 0xe8, 0x14, 0x3a,
		0x85, 0x4e, 0xa1, 0x53, 0xe8, 0x94, 0xc1, 0x85, 0x4e, 0x33, 0x44, 0xa7, 0xea, 0x9b, 0xa3, 0x54,
		0x27, 0xad, 0x75, 0xfc, 0xd5, 0x8f, 0x83, 0x51, 0x61, 0x54, 0x18, 0x75, 0x4b, 0x19, 0xf5, 0xc6,
		0xf7, 0xbb, 0xca, 0xf6, 0xd2, 0xd8, 0x5f, 0xb5, 0xc7, 0x05, 0x57, 0xf9, 0xbb, 0xe0, 0x6a, 0x7c,
		0x0d, 0xc9, 0xa6, 0xae, 0x63, 0x79, 0xb3, 0xc6, 0x11, 0x1a, 0x7a, 0x41, 0xc3, 0x2d, 0xc6, 0xe5,
		0x13, 0x37, 0x8c, 0xaa, 0x51, 0x64, 0xa6, 0x29, 0x0d, 0xb3, 0x9a, 0x7a, 0x57, 0x0d, 0xdd, 0x99,
		0x21, 0x38, 0x0e, 0x21, 0x7a, 0xa1, 0x25, 0xd9, 0xed, 0x02, 0xe5, 0x66, 0xd0, 0x51, 0x81, 0xea,
		0x7c, 0x1e, 0xf6, 0x9a, 0x37, 0xe8, 0x76, 0x25, 0x9a, 0xba, 0x0a, 0x47, 0x0b, 0xc5, 0xfa, 0x24,
		0xab, 0x3b, 0xf8, 0x42, 0x66, 0x99, 0xb2, 0x39, 0x96, 0x8d, 0xee, 0x27, 0x0a, 0x06, 0x4e, 0x34,
		0xd9, 0x96, 0x5f, 0xae, 0x4d, 0x9f, 0xdc, 0xae, 0x8d, 0x9f, 0xdc, 0xbe, 0x9a, 0x3f, 0xb9, 0x7d,
		0x31, 0x7d, 0xde, 0x9b, 0xf5, 0x98, 0x6d, 0xb2, 0x4f, 0x24, 0x1c, 0x63, 0xd3, 0xb1, 0x4d, 0x67,
		0x4c, 0x93, 0x75, 0x6d, 0xfc, 0x0e, 0x8a, 0xf7, 0x9b, 0x31, 0xbb, 0x50, 0xb7, 0xeb, 0x24, 0xbb,
		0x2c, 0xc1, 0x9c, 0x4f, 0x32, 0xc7, 0xe3, 0xf5, 0xff, 0xeb, 0xbd, 0xf9, 0xf2, 0x6f, 0xbc, 0xd2,
		0xcf, 0x49, 0xfb, 0xd7, 0xb4, 0x5f, 0x63, 0xf4, 0xe5, 0x6b, 0x7d, 0xf8, 0x72, 0xbf, 0xad, 0xee,
		0x8d, 0x17, 0x7a, 0xa2, 0xec, 0x4c, 0x73, 0xbb, 0x97, 0x7b, 0x60, 0xe1, 0x9a, 0xa4, 0xd1, 0xef,
		0xbf, 0xd2, 0xb7, 0xf1, 0x2e, 0x3f, 0x8b, 0x9d, 0x58, 0x26, 0x49, 0x18, 0x35, 0x13, 0xc1, 0xa4,
		0x09, 0x9e, 0x76, 0xe2, 0xa6, 0x9d, 0x90, 0xe9, 0x27, 0x5a, 0x66, 0x76, 0x12, 0xf7, 0xf2, 0xae,
		0x64, 0xc7, 0xce, 0x74, 0x8e, 0x95, 0x25, 0xd4, 0x35, 0x12, 0xeb, 0x16, 0x3a, 0xba, 0x84, 0xa1,
		0xee, 0xa0, 0xab, 0x2b, 0x18, 0xeb, 0x06, 0xc6, 0xba, 0x80, 0x79, 0xde, 0x2f, 0x1b, 0x2e, 0x13,
		0xe7, 0xe5, 0xfa, 0xc7, 0x9a, 0x12, 0x1e, 0x5b, 0x4a, 0x3b, 0xe0, 0x1b, 0x5f, 0x6c, 0x5d, 0x98,
		0x48, 0x1b, 0xe3, 0x46, 0x68, 0xed, 0x28, 0x19, 0x05, 0x7e, 0xb7, 0xab, 0x02, 0xcb, 0xb1, 0x83,
		0x4e, 0xa2, 0x70, 0xf9, 0xe8, 0x83, 0xc4, 0x4d, 0xe2, 0xa6, 0x26, 0x82, 0xe9, 0xa1, 0x58, 0xc2,
		0xa9, 0x45, 0xec, 0xdc, 0xc6, 0xd8, 0xb9, 0xf6, 0x54, 0xf3, 0xb1, 0x57, 0x4c, 0x74, 0x95, 0x7f,
		0x8c, 0x60, 0x15, 0x2b, 0xd3, 0x4a, 0x72, 0x63, 0xb4, 0xd6, 0xcd, 0xd0, 0xda, 0x16, 0x57, 0xc1,
		0xe2, 0xb0, 0xb8, 0x94, 0x2d, 0x2e, 0xc1, 0xda, 0x42, 0x81, 0xe8, 0x30, 0x01, 0x8a, 0xbd, 0xac,
		0xc7, 0xcc, 0x9a, 0xaa, 0x0d, 0x5b, 0x4a, 0x03, 0x38, 0xfb, 0x83, 0x04, 0x90, 0xd9, 0x1f, 0x00,
		0x96, 0x80, 0x25, 0x60, 0x49, 0x98, 0xdb, 0xf6, 0x30, 0xd7, 0x1f, 0x00, 0x93, 0xc0, 0x24, 0x56,
		0x96, 0xba, 0x95, 0x6d, 0x23, 0x40, 0xbe, 0x8a, 0x59, 0x2f, 0x43, 0x63, 0x7f, 0x90, 0x06, 0x29,
		0xde, 0xda, 0x37, 0x81, 0xeb, 0xc4, 0x87, 0xc5, 0xc9, 0xef, 0xc3, 0x8b, 0xf0, 0x22, 0xbc, 0x48,
		0x24, 0xdb, 0xee, 0x48, 0x36, 0x76, 0x86, 0x20, 0x23, 0xc8, 0x88, 0xa1, 0xad, 0xc3, 0xd0, 0xb6,
		0x90, 0x1a, 0x63, 0xf1, 0xd6, 0x8b, 0xe0, 0x78, 0x3c, 0x6e, 0x21, 0x15, 0x76, 0xf4, 0x92, 0x80,
		0xa3, 0x07, 0x35, 0x42, 0x8d, 0x50, 0x23, 0xc1, 0x6c, 0xeb, 0x83, 0x99, 0x07, 0x32, 0x82, 0x8c,
		0x58, 0x59, 0xea, 0x56, 0xb6, 0x95, 0xbc, 0xe8, 0x99, 0xc1, 0xa2, 0x97, 0x06, 0x29, 0xba, 0x5e,
		0xa4, 0xee, 0x02, 0x3b, 0x52, 0x1d, 0xcb, 0x71, 0x03, 0x67, 0x10, 0xe3, 0x92, 0xbb, 0x99, 0xe1,
		0x2e, 0xf9, 0x2c, 0x1c, 0x09, 0x47, 0xc2, 0x91, 0x44, 0xb8, 0xed, 0x8e, 0x70, 0xcf, 0x1d, 0x23,
		0x58, 0x09, 0x56, 0x62, 0x74, 0xeb, 0x36, 0x3a, 0x59, 0xca, 0x8c, 0x61, 0x73, 0x8b, 0x47, 0x6c,
		0x13, 0x5b, 0x5e, 0xf2, 0xf3, 0xb9, 0x04, 0x3d, 0xec, 0xcf, 0x98, 0xcf, 0x66, 0x1f, 0x98, 0x1f,
		0xa3, 0x4f, 0xdc, 0xf9, 0xd3, 0x31, 0x9f, 0x37, 0x91, 0xb0, 0xef, 0x92, 0x4d, 0x64, 0xed, 0x09,
		0x6d, 0x32, 0xb1, 0x85, 0x26, 0xb8, 0xe9, 0x44, 0x17, 0x9b, 0xf0, 0x62, 0x13, 0x5f, 0xce, 0x00,
		0x92, 0x19, 0x42, 0x42, 0x83, 0xd0, 0x36, 0x8c, 0x67, 0x06, 0xa2, 0x3f, 0x66, 0x4f, 0xed, 0x44,
		0x77, 0xc8, 0xf4, 0xcc, 0xc5, 0xd8, 0x6c, 0x24, 0xcc, 0x47, 0xd8, 0x8c, 0xa4, 0xcc, 0x49, 0xdc,
		0xac, 0xc4, 0xcd, 0x4b, 0xde, 0xcc, 0xf4, 0xcc, 0x4d, 0xd3, 0xec, 0x8c, 0xcd, 0x4f, 0x57, 0x4f,
		0x90, 0xd5, 0x19, 0x52, 0x32, 0x49, 0x31, 0xd3, 0x94, 0x34, 0xd1, 0x94, 0x4c, 0x55, 0xda, 0x64,
		0x53, 0x33, 0xdd, 0xd4, 0x4c, 0x38, 0x3d, 0x53, 0x36, 0x33, 0x69, 0x43, 0xd3, 0x16, 0x33, 0xf1,
		0x59, 0x43, 0x5c, 0x78, 0x6d, 0xda, 0x20, 0x15, 0x59, 0x53, 0x77, 0x0f, 0xa9, 0xbb, 0x89, 0xf4,
		0xdd, 0x85, 0x8c, 0xdb, 0x10, 0x72, 0x1f, 0xb3, 0xd7, 0xdd, 0xe2, 0x0b, 0xaf, 0xa5, 0xe2, 0x8b,
		0x6c, 0x61, 0xd4, 0x59, 0xbb, 0xc6, 0x95, 0x69, 0xd2, 0x9f, 0x88, 0x5c, 0xb9, 0x48, 0x78, 0x22,
		0x3c, 0x11, 0x9e, 0xf2, 0x18, 0x9e, 0xb8, 0xd4, 0x46, 0xf8, 0x2f, 0x2e, 0xb5, 0x89, 0x37, 0xff,
		0xb8, 0xd4, 0x66, 0xc5, 0xd0, 0x72, 0xa9, 0xcd, 0xba, 0xbc, 0xb3, 0x7c, 0x6b, 0xd7, 0x20, 0x79,
		0xb1, 0x91, 0x9c, 0x3b, 0x27, 0xc1, 0x73, 0xf0, 0x1c, 0x3c, 0x07, 0xcf, 0xc1, 0x73, 0xf0, 0x1c,
		0x3c, 0x67, 0x70, 0xc1, 0x73, 0xf0, 0x7c, 0xcd, 0x2d, 0x14, 0xe5, 0x0e, 0xb7, 0x25, 0xdb, 0x88,
		0x5f, 0xb9, 0xce, 0x2d, 0xc9, 0xd6, 0x7e, 0xf9, 0xbe, 0x37, 0xe8, 0x77, 0x99, 0xe5, 0x75, 0xc9,
		0x65, 0x75, 0xa1, 0x84, 0x88, 0x5d, 0x34, 0x19, 0x4c, 0x74, 0xd8, 0x45, 0xb3, 0xa9, 0x04, 0x66,
		0x36, 0xf3, 0x86, 0x11, 0x27, 0x50, 0xb7, 0x12, 0xb3, 0x6e, 0xba, 0xde, 0x7d, 0x28, 0xd0, 0xd6,
		0xf9, 0xc4, 0x49, 0xbf, 0x7d, 0x3b, 0xf1, 0xa5, 0x3b, 0x23, 0x57, 0x92, 0x43, 0x87, 0x9a, 0xec,
		0xcc, 0xd5, 0xab, 0xe3, 0x95, 0xe4, 0x2c, 0xd6, 0xab, 0x23, 0x25, 0xe5, 0x52, 0x2b, 0xb8, 0x54,
		0x5c, 0x6a, 0x4e, 0x5d, 0xaa, 0xd8, 0xc6, 0x44, 0xc7, 0xef, 0xf5, 0xdc, 0x28, 0x4a, 0xe3, 0x22,
		0xf9, 0x79, 0xd3, 0x88, 0xcc, 0x19, 0x73, 0x0c, 0x69, 0x39, 0x88, 0xd4, 0x1d, 0x45, 0xea, 0x0e,
		0x23, 0x7d, 0xc7, 0x21, 0x2b, 0x3c, 0x64, 0x5f, 0x64, 0x1e, 0xb8, 0x5e, 0xf4, 0x7e, 0x3f, 0x05,
		0x81, 0xf9, 0x03, 0x02, 0xb3, 0x70, 0xe3, 0x08, 0xcc, 0x6b, 0x36, 0xbb, 0xc7, 0x43, 0xbb, 0x16,
		0x81, 0x59, 0xf4, 0x9a, 0xf7, 0x6d, 0x19, 0xed, 0x62, 0x2b, 0xce, 0x99, 0xd8, 0x0f, 0x71, 0x1b,
		0xa8, 0x14, 0x4e, 0xc8, 0x8c, 0x5a, 0x05, 0x3f, 0xc1, 0x4f, 0xf0, 0x13, 0xfc, 0x04, 0x3f, 0xc1,
		0x4f, 0xf0, 0x13, 0xfc, 0x04, 0x3f, 0xc1, 0xcf, 0xa7, 0x83, 0x78, 0xef, 0xde, 0xdd, 0x5b, 0x5f,
		0xed, 0x48, 0x05, 0x3d, 0x3b, 0xf8, 0x43, 0x1e, 0x44, 0x9f, 0xb4, 0x0f, 0x92, 0x82, 0xa4, 0x20,
		0x29, 0x48, 0x0a, 0x92, 0x82, 0xa4, 0x20, 0x29, 0x48, 0x0a, 0x92, 0x82, 0xa4, 0x4f, 0x07, 0xb1,
		0x6b, 0x87, 0x91, 0x95, 0x36, 0x97, 0x2e, 0x7b, 0x08, 0x70, 0x0a, 0x9c, 0x02, 0xa7, 0x5b, 0x0a,
		0xa7, 0x91, 0xdb, 0x53, 0x91, 0xeb, 0xfc, 0x11, 0x66, 0x9e, 0x50, 0xaf, 0xbc, 0x71, 0x10, 0x2d,
		0x7b, 0xb6, 0xe7, 0x87, 0xca, 0xf1, 0xbd, 0x4e, 0x58, 0x86, 0x80, 0x21, 0x60, 0x08, 0x18, 0x02,
		0x86, 0x80, 0x0b, 0x40, 0xc0, 0x3d, 0xfb, 0x9b, 0xd5, 0x75, 0x7b, 0x31, 0xae, 0x72, 0x4a, 0x1c,
		0xe6, 0xe6, 0x4d, 0x43, 0xbb, 0xd0, 0x2e, 0xb4, 0xbb, 0xa5, 0xb4, 0x8b, 0x14, 0x0b, 0x88, 0x02,
		0xa2, 0x80, 0x28, 0x20, 0x0a, 0x88, 0xbe, 0x30, 0x88, 0x94, 0x6f, 0x07, 0x3f, 0xc1, 0x4f, 0xf0,
		0x53, 0x7a, 0xe6, 0x66, 0xbe, 0x7c, 0x7b, 0x66, 0x4a, 0x25, 0xa6, 0x53, 0x14, 0x11, 0xef, 0x8b,
		0xf7, 0xc5, 0xfb, 0x92, 0xfc, 0x93, 0xfc, 0x93, 0xfc, 0x93, 0xfc, 0x93, 0xfc, 0x93, 0xfc, 0x93,
		0xfc, 0x2f, 0xc5, 0x4f, 0x2e, 0xcf, 0x01, 0x4f, 0xc1, 0x53, 0xf0, 0x74, 0x9d, 0x78, 0x4a, 0x75,
		0x6e, 0x10, 0x15, 0x44, 0xcd, 0x14, 0xa2, 0x52, 0x9d, 0x1b, 0x22, 0xcd, 0x28, 0x91, 0x72, 0x77,
		0x0c, 0x74, 0x0a, 0x9d, 0x42, 0xa7, 0xd0, 0x29, 0x74, 0x0a, 0x9d, 0x42, 0xa7, 0x0c, 0x2e, 0x74,
		0x9a, 0x21, 0x3a, 0x55, 0xdf, 0x1c, 0xa5, 0x3a, 0x69, 0xad, 0xe3, 0xaf, 0x7e, 0x1c, 0x8c, 0x0a,
		0xa3, 0xc2, 0xa8, 0x5b, 0xca, 0xa8, 0x37, 0xbe, 0xdf, 0x55, 0xb6, 0x97, 0xc6, 0xfe, 0xaa, 0x3d,
		0xee, 0xba, 0xca, 0xf5, 0x5d, 0x57, 0xe3, 0x1b, 0x49, 0x36, 0x75, 0x33, 0xcb, 0x9b, 0x35, 0x0e,
		0xd6, 0xd0, 0x21, 0x1a, 0xee, 0x36, 0x2e, 0x9f, 0xb8, 0x61, 0x54, 0x8d, 0x22, 0x33, 0x79, 0x69,
		0x98, 0xe0, 0xd4, 0xbb, 0x6a, 0xe8, 0xd9, 0x0c, 0x19, 0x72, 0xc8, 0xd3, 0x0b, 0x2d, 0xc9, 0xee,
		0x1c, 0x28, 0x37, 0x83, 0x8e, 0x0a, 0x54, 0xe7, 0xf3, 0xb0, 0xd7, 0xbc, 0x41, 0xb7, 0x2b, 0xd1,
		0xd4, 0x55, 0x38, 0x5a, 0x33, 0xd6, 0x87, 0x5a, 0xdd, 0xc1, 0x17, 0xb2, 0xd0, 0xf5, 0x59, 0x66,
		0xd9, 0xe8, 0xd6, 0xa2, 0x60, 0xe0, 0x44, 0x93, 0xcd, 0xfa, 0xe5, 0xda, 0xf4, 0x4b, 0xb4, 0x1b,
		0xb3, 0x2f, 0x51, 0x1b, 0x7f, 0x87, 0xf6, 0xd5, 0xfc, 0x3b, 0xb4, 0x2f, 0xa6, 0x4f, 0x7e, 0xb3,
		0x1e, 0x5b, 0x4e, 0xf6, 0x89, 0x84, 0x03, 0x6f, 0x3a, 0xe0, 0xa9, 0x0f, 0x74, 0xb2, 0x5e, 0x8e,
		0xdf, 0x57, 0xf1, 0x7e, 0x33, 0x66, 0x6f, 0xea, 0xf6, 0x62, 0x4a, 0xbd, 0x97, 0xc0, 0x26, 0xf4,
		0x6c, 0x20, 0xde, 0xa0, 0xbc, 0xde, 0xc5, 0x2f, 0xff, 0xc6, 0x2b, 0x9d, 0x9f, 0xb4, 0xd3, 0x05,
		0x3b, 0x3b, 0x46, 0x07, 0xc7, 0xef, 0xd8, 0x97, 0x3b, 0x73, 0x75, 0x17, 0xbd, 0xd0, 0x3d, 0xf1,
		0x0e, 0x20, 0x25, 0x39, 0x58, 0x14, 0x33, 0xa3, 0x8d, 0x9d, 0xa9, 0x26, 0xc9, 0x40, 0x35, 0x33,
		0xcb, 0xa4, 0x19, 0xa3, 0x76, 0x26, 0xa8, 0x9d, 0xe1, 0xe9, 0x67, 0x6e, 0x66, 0x86, 0x13, 0x3b,
		0x83, 0xd2, 0xb8, 0x40, 0x31, 0xc9, 0x05, 0x89, 0x5a, 0x17, 0x20, 0xea, 0x19, 0x84, 0xdf, 0x8f,
		0x5c, 0xc7, 0xee, 0x5a, 0xce, 0xbd, 0xed, 0x79, 0xaa, 0x1b, 0xdf, 0x36, 0x9e, 0x7e, 0x30, 0x9e,
		0x99, 0xec, 0x6d, 0xd8, 0x4c, 0xfc, 0x7e, 0x64, 0x45, 0xaa, 0xa0, 0x66, 0x32, 0x7b, 0xb9, 0x94,
		0xcd, 0x24, 0xee, 0xa5, 0x79, 0x65, 0x67, 0x3a, 0x9a, 0x31, 0x7b, 0x70, 0x7e, 0xe3, 0xdd, 0xe8,
		0x73, 0x31, 0x7b, 0x21, 0xd9, 0x7d, 0x96, 0x89, 0x35, 0x43, 0x1d, 0x4d, 0x50, 0x73, 0xca, 0x99,
		0x6a, 0x7a, 0xc6, 0x9a, 0x9d, 0xb1, 0x26, 0xa7, 0x3f, 0x25, 0xd3, 0xe1, 0xcf, 0xa4, 0xf7, 0x3b,
		0x96, 0x6f, 0x03, 0xf5, 0xe7, 0x40, 0x79, 0xce, 0xf7, 0xe4, 0x9d, 0xbf, 0x70, 0x57, 0xce, 0xa4,
		0x89, 0x84, 0x7d, 0xa7, 0x27, 0x8e, 0x6b, 0x8b, 0xe0, 0x26, 0x62, 0xb7, 0xe1, 0x04, 0x97, 0x12,
		0xaf, 0xc5, 0x44, 0x6a, 0x31, 0x31, 0xda, 0xdc, 0x00, 0xd6, 0x93, 0xde, 0x6a, 0x8b, 0xc5, 0xcf,
		0xa7, 0xb9, 0x15, 0x0d, 0xdb, 0xd2, 0x18, 0x7c, 0xfd, 0x53, 0x5e, 0xf3, 0x9a, 0x85, 0xa7, 0x3f,
		0xff, 0x5b, 0xe7, 0xd1, 0x66, 0x9b, 0x19, 0xcc, 0xb4, 0x3b, 0xf3, 0xeb, 0xa0, 0x85, 0x36, 0x21,
		0x88, 0xaf, 0x47, 0xcb, 0xad, 0x3b, 0xff, 0x65, 0x26, 0x6a, 0xca, 0x75, 0xb1, 0xfc, 0x69, 0xaa,
		0x2c, 0xf7, 0xfa, 0x9a, 0x94, 0xbb, 0xeb, 0x4c, 0x2b, 0x77, 0xdf, 0xef, 0xfc, 0xc8, 0xf2, 0x1d,
		0xcb, 0xf1, 0x7b, 0xfd, 0x40, 0x85, 0xa1, 0xea, 0x58, 0xc3, 0x34, 0x6f, 0xd8, 0xd8, 0x5f, 0x69,
		0x89, 0x6e, 0x09, 0xd8, 0xb0, 0xeb, 0x7a, 0xca, 0xea, 0xfb, 0x41, 0xa4, 0x4f, 0x28, 0xf3, 0x26,
		0x20, 0x14, 0x08, 0xa5, 0xb0, 0x84, 0x12, 0x5f, 0x9c, 0x31, 0x11, 0x6b, 0x56, 0x8a, 0x37, 0x3b,
		0x0b, 0xca, 0xd5, 0xa7, 0x05, 0x01, 0x75, 0xe9, 0x8f, 0x1f, 0xfd, 0xf4, 0x75, 0xb1, 0x07, 0x1f,
		0xf9, 0xe2, 0xd7, 0xf3, 0xfb, 0x2a, 0x18, 0xbd, 0x9d, 0xdd, 0xb5, 0x7a, 0x7e, 0x47, 0xe9, 0xbb,
		0xca, 0x67, 0x2d, 0xe1, 0x31, 0xf1, 0x98, 0x85, 0xf5, 0x98, 0x03, 0xd7, 0x8b, 0xf6, 0xde, 0x1b,
		0x38, 0xcc, 0xf7, 0xe4, 0x62, 0xe4, 0x62, 0x69, 0xe5, 0x62, 0xef, 0x0f, 0x0e, 0xde, 0x91, 0x7c,
		0x65, 0x3b, 0xf9, 0x52, 0xdf, 0xa2, 0xc0, 0xb6, 0x06, 0x5e, 0x18, 0xd9, 0x37, 0x5d, 0x4d, 0x6f,
		0x14, 0xa8, 0x5b, 0x15, 0x28, 0xcf, 0xd9, 0x88, 0x53, 0x98, 0x5d, 0x34, 0x19, 0x45, 0xfd, 0xf0,
		0xd3, 0xce, 0xce, 0x9d, 0x1b, 0xdd, 0x0f, 0x6e, 0xde, 0x3a, 0x7e, 0x6f, 0x61, 0x61, 0x7c, 0xa7,
		0x3f, 0xb8, 0xe9, 0xba, 0xce, 0xce, 0x4d, 0xd7, 0xbf, 0xd9, 0xe9, 0xd9, 0x61, 0xa4, 0x82, 0x9d,
		0x8e, 0xef, 0xec, 0x0c, 0xa3, 0x82, 0x3b, 0x44, 0x85, 0x8e, 0x7a, 0x70, 0x1d, 0x65, 0xf5, 0x83,
		0x21, 0x3f, 0x44, 0xae, 0x0a, 0xad, 0xbb, 0x81, 0xdb, 0x51, 0x6f, 0x7b, 0x26, 0x3b, 0xa9, 0xa5,
		0xb6, 0xfa, 0x2e, 0x46, 0xd8, 0x79, 0x5f, 0x1b, 0xda, 0x81, 0xf4, 0x6e, 0xde, 0x47, 0x41, 0x37,
		0xb5, 0xc1, 0x40, 0x2a, 0x29, 0x72, 0x1a, 0x10, 0xd9, 0xc1, 0x9d, 0x8a, 0x2c, 0x7f, 0x10, 0xf5,
		0x07, 0x91, 0xd5, 0xf7, 0xbf, 0x6a, 0x14, 0x9c, 0x99, 0x5f, 0xe8, 0xb3, 0xa4, 0x31, 0x92, 0x01,
		0x92, 0x81, 0xc2, 0x26, 0x03, 0x1d, 0xe5, 0xb8, 0x3d, 0xbb, 0xab, 0x55, 0xd9, 0x6f, 0x26, 0xa0,
		0x54, 0x34, 0x3e, 0xfb, 0x8c, 0xd1, 0x2a, 0x5b, 0x9b, 0x55, 0x7c, 0xac, 0x54, 0xde, 0xbd, 0x3b,
		0xac, 0xec, 0xbe, 0x7b, 0xff, 0xe1, 0x60, 0xff, 0xf0, 0xf0, 0xe0, 0xc3, 0xee, 0x07, 0x69, 0x00,
		0xae, 0xc8, 0x01, 0xf0, 0xd0, 0xaa, 0xf2, 0x9f, 0x66, 0x3c, 0xef, 0xf3, 0xc3, 0x0c, 0xf7, 0x39,
		0x49, 0x47, 0x3e, 0x31, 0x26, 0xd7, 0xdb, 0xac, 0x9f, 0x6c, 0xfe, 0x9b, 0x6c, 0x52, 0x14, 0xdb,
		0xfd, 0x1c, 0x6b, 0x17, 0xb1, 0x1d, 0xa9, 0xe4, 0x3b, 0xcb, 0xc6, 0x1f, 0x4b, 0x79, 0x63, 0x59,
		0x85, 0x8d, 0x65, 0xe2, 0xf8, 0x95, 0xfb, 0x8d, 0x65, 0x8e, 0x1d, 0x04, 0xae, 0x0a, 0xac, 0xf9,
		0xb6, 0x19, 0xff, 0xf6, 0x36, 0x54, 0x06, 0xab, 0xb8, 0x2b, 0x5b, 0xd4, 0xcb, 0x4a, 0xf6, 0xc8,
		0x4a, 0xc8, 0x4a, 0xd2, 0xce, 0x4a, 0x92, 0x9a, 0xcd, 0xec, 0x83, 0xf6, 0xc3, 0x9d, 0xfe, 0x70,
		0x4d, 0x67, 0xcd, 0xb0, 0x11, 0xdd, 0xc3, 0x9f, 0x46, 0x85, 0x0b, 0x8c, 0x0b, 0x15, 0x48, 0x14,
		0x26, 0x78, 0x66, 0x3c, 0xdf, 0xfb, 0x2a, 0xcc, 0x98, 0x1c, 0x29, 0x52, 0x69, 0x20, 0x5d, 0x2d,
		0xf2, 0x51, 0xef, 0xe5, 0xe4, 0xe8, 0xb2, 0x71, 0x69, 0x00, 0x11, 0x51, 0x40, 0x42, 0x1c, 0x58,
		0x9d, 0x53, 0xed, 0x19, 0x34, 0x26, 0x53, 0xdb, 0x4a, 0xe0, 0xe0, 0xbe, 0x64, 0xed, 0xaa, 0xf4,
		0x44, 0x84, 0x54, 0x06, 0x21, 0x15, 0x51, 0x41, 0x40, 0x5c, 0x10, 0x15, 0x19, 0xd2, 0x17, 0x1b,
		0xd6, 0x3a, 0x36, 0x32, 0xc5, 0xa5, 0xfe, 0xda, 0x50, 0xf9, 0x88, 0xeb, 0x75, 0x1d, 0x54, 0xd7,
		0x20, 0x54, 0xd7, 0x0b, 0x23, 0xdb, 0x8b, 0xcc, 0x99, 0x67, 0xda, 0x10, 0xdc, 0x03, 0xf7, 0xc0,
		0x3d, 0x70, 0x0f, 0xdc, 0x03, 0xf7, 0xc0, 0x3d, 0x70, 0x4f, 0x66, 0xb9, 0x27, 0x52, 0xc1, 0x83,
		0xdd, 0x95, 0x00, 0x9f, 0x49, 0x4b, 0x90, 0xcf, 0x30, 0x76, 0x43, 0x3d, 0xba, 0xd4, 0xb3, 0xa5,
		0xc4, 0x13, 0x46, 0x76, 0x64, 0x19, 0x1a, 0x51, 0x49, 0xe6, 0x32, 0xc7, 0xf9, 0x71, 0x5f, 0xcf,
		0xf6, 0xfc, 0x50, 0x39, 0xbe, 0xd7, 0x31, 0x9a, 0xcb, 0xc5, 0xe6, 0x9e, 0xdd, 0xb4, 0x22, 0xe9,
		0x6e, 0x66, 0x23, 0x69, 0x56, 0x31, 0x27, 0xbd, 0xcb, 0x18, 0xf3, 0x34, 0x3a, 0x70, 0xce, 0xb3,
		0x4e, 0xee, 0x19, 0xcc, 0xb6, 0x99, 0x8b, 0x1e, 0x36, 0x02, 0xdd, 0xa0, 0xeb, 0xa0, 0xeb, 0xa0,
		0xeb, 0xa0, 0xeb, 0xa0, 0xeb, 0xa0, 0xeb, 0xc0, 0x3b, 0xd9, 0xe5, 0x1d, 0x2b, 0x72, 0x7b, 0x4a,
		0x04, 0x7a, 0xc6, 0x2d, 0x41, 0x3e, 0xe8, 0x3a, 0xe8, 0x3a, 0x89, 0xe7, 0xcc, 0xd0, 0x76, 0x22,
		0xd7, 0xf9, 0x23, 0x14, 0x61, 0x1e, 0x54, 0x1d, 0x54, 0x1d, 0x54, 0x1d, 0x54, 0x1d, 0x28, 0x67,
		0x44, 0x39, 0x06, 0x86, 0x3f, 0x07, 0x1c, 0xd7, 0x83, 0x6d, 0x50, 0x75, 0x50, 0x75, 0x50, 0x75,
		0x50, 0x75, 0x50, 0x75, 0x50, 0x75, 0xe0, 0x9d, 0x0c, 0xf3, 0x8e, 0x94, 0xaa, 0x33, 0x6d, 0x09,
		0xf2, 0x41, 0xd5, 0x41, 0xd5, 0x41, 0xd5, 0x41, 0xd5, 0x41, 0xd5, 0x41, 0xd5, 0x81, 0x72, 0xa4,
		0x29, 0x87, 0xea, 0x97, 0x71, 0xc2, 0x49, 0xa3, 0x5a, 0x6a, 0x36, 0x8e, 0xad, 0x9a, 0x55, 0x3b,
		0x6d, 0x5c, 0x5a, 0xbb, 0x7b, 0x6f, 0xf7, 0x4a, 0xad, 0xe1, 0x2b, 0x95, 0x0e, 0xa9, 0x5f, 0xa9,
		0xc1, 0x25, 0x2f, 0x74, 0x27, 0xa5, 0x9b, 0x36, 0x72, 0xcd, 0xee, 0xd3, 0x0a, 0x46, 0xa3, 0xc2,
		0x40, 0x3b, 0x42, 0x25, 0x55, 0x4a, 0x2f, 0xdd, 0x73, 0xda, 0x1c, 0x3f, 0xb9, 0x36, 0x7e, 0x70,
		0xbb, 0x36, 0x7e, 0xe4, 0xf1, 0xf4, 0x89, 0xcd, 0xf1, 0x03, 0x33, 0x50, 0x3d, 0xd3, 0xb9, 0x0f,
		0xfc, 0x9e, 0x1d, 0xb9, 0x8e, 0xd5, 0x71, 0xc3, 0xbe, 0x0a, 0x42, 0x9d, 0x41, 0x9a, 0x57, 0xab,
		0x59, 0xd6, 0x1a, 0x95, 0x6a, 0x52, 0x76, 0x99, 0x54, 0xaa, 0xd1, 0x75, 0x4c, 0x54, 0xaa, 0x61,
		0x0d, 0x28, 0xff, 0x6a, 0x08, 0x6b, 0x40, 0x19, 0x5c, 0x03, 0xaa, 0xa0, 0x86, 0xac, 0x48, 0xc1,
		0xd7, 0xb8, 0x06, 0x54, 0x61, 0x0d, 0xc8, 0x74, 0x6c, 0x0e, 0x73, 0x34, 0x36, 0xa8, 0x23, 0x29,
		0x4d, 0x3e, 0x2a, 0xd5, 0xc0, 0x3d, 0x70, 0x0f, 0xdc, 0x03, 0xf7, 0xc0, 0x3d, 0x70, 0x0f, 0xdc,
		0xb3, 0x45, 0xdc, 0x43, 0xa5, 0x9a, 0x54, 0xc8, 0x07, 0xea, 0xd1, 0xa5, 0x1e, 0x2a, 0xd5, 0x50,
		0xa9, 0x26, 0x57, 0xdc, 0xc3, 0xee, 0x97, 0xcc, 0x60, 0x0e, 0xbb, 0x5f, 0xe0, 0x9c, 0xa5, 0x9d,
		0x4c, 0xa5, 0x1a, 0x74, 0x1d, 0x74, 0x1d, 0x74, 0x1d, 0x74, 0x1d, 0x74, 0x1d, 0x74, 0x1d, 0x74,
		0x9d, 0x2d, 0xe0, 0x1d, 0x2a, 0xd5, 0xa0, 0xeb, 0xa0, 0xeb, 0x70, 0xa6, 0x09, 0x55, 0x07, 0x55,
		0x07, 0x55, 0x07, 0x55, 0xa7, 0x88, 0x94, 0x43, 0xa5, 0x1a, 0x54, 0x1d, 0x54, 0x1d, 0x54, 0x1d,
		0x54, 0x1d, 0x54, 0x1d, 0x54, 0x1d, 0x54, 0x9d, 0xe2, 0xf3, 0x0e, 0x95, 0x6a, 0x50, 0x75, 0x50,
		0x75, 0x50, 0x75, 0x50, 0x75, 0x50, 0x75, 0x50, 0x75, 0x50, 0x75, 0xb2, 0x4e, 0x39, 0xdb, 0x54,
		0x77, 0xc3, 0xbc, 0x38, 0x44, 0x29, 0x49, 0xcd, 0x8d, 0xe9, 0xe3, 0x8e, 0xe6, 0x4f, 0xcb, 0x40,
		0xc1, 0x0d, 0x15, 0x7a, 0x81, 0x7e, 0x81, 0x8d, 0xd1, 0xa7, 0x29, 0xa8, 0x91, 0x32, 0x6e, 0x52,
		0x50, 0x43, 0xd7, 0xe3, 0x50, 0x50, 0x83, 0x84, 0x8d, 0x84, 0x2d, 0x87, 0x09, 0x1b, 0x12, 0x75,
		0xfe, 0x92, 0x35, 0x24, 0x6a, 0x24, 0x6a, 0x24, 0xea, 0x0d, 0x26, 0x6f, 0x14, 0xd2, 0x80, 0x77,
		0xe0, 0x1d, 0x78, 0x07, 0xde, 0x81, 0x77, 0xe0, 0x1d, 0x78, 0x07, 0xde, 0x59, 0xc2, 0x3b, 0x14,
		0xd0, 0x80, 0x78, 0x20, 0x1e, 0x0a, 0x68, 0x2c, 0x36, 0xc1, 0xa2, 0x7c, 0x92, 0xd8, 0xca, 0xa2,
		0x7c, 0x66, 0x30, 0x87, 0x45, 0x79, 0x38, 0x67, 0x69, 0x27, 0x53, 0x40, 0x03, 0xba, 0x81, 0x6e,
		0xd0, 0x73, 0xd0, 0x73, 0xd0, 0x73, 0xd0, 0x73, 0xd0, 0x73, 0x28, 0x9c, 0x11, 0x03, 0x76, 0x38,
		0x62, 0x01, 0xf1, 0x40, 0x3c, 0x9a, 0x73, 0x86, 0x23, 0x16, 0xa8, 0x39, 0xa8, 0x39, 0xa8, 0x39,
		0x50, 0x4e, 0x0a, 0x94, 0x43, 0xe1, 0x0c, 0xd8, 0x06, 0xb6, 0x41, 0xcd, 0x41, 0xcd, 0x41, 0xcd,
		0x41, 0xcd, 0x41, 0xcd, 0xa1, 0x60, 0xc6, 0xeb, 0xb0, 0x83, 0x9a, 0x03, 0xf1, 0x40, 0x3c, 0xa8,
		0x39, 0xa8, 0x39, 0xa8, 0x39, 0xa8, 0x39, 0x50, 0x4e, 0x3a, 0x94, 0xb3, 0x45, 0x05, 0x33, 0x34,
		0x8a, 0x3d, 0x94, 0x12, 0x14, 0xc8, 0xa8, 0x0f, 0x9b, 0xcf, 0x40, 0x45, 0x8c, 0x5b, 0xe5, 0x58,
		0x03, 0xcf, 0xf1, 0x83, 0x40, 0x39, 0x91, 0x7d, 0xd3, 0x55, 0xd6, 0x4d, 0xd7, 0x77, 0xfe, 0x08,
		0xf5, 0xab, 0x64, 0xac, 0x6c, 0x51, 0xaf, 0x72, 0xc6, 0x2e, 0x95, 0x33, 0xd6, 0xce, 0x9b, 0x5b,
		0x57, 0x39, 0x43, 0x1b, 0x25, 0x67, 0x23, 0xef, 0xf8, 0x03, 0x2f, 0x52, 0x81, 0x16, 0x40, 0x1a,
		0x80, 0xa3, 0x21, 0xe0, 0x19, 0xb0, 0xb3, 0x04, 0xd0, 0x49, 0x81, 0x9c, 0x38, 0x22, 0xc8, 0xa1,
		0x81, 0x01, 0xb0, 0x89, 0x80, 0x5a, 0x8a, 0x80, 0x96, 0xe5, 0x5e, 0x5f, 0x13, 0x10, 0x5d, 0x67,
		0x21, 0x82, 0x07, 0xea, 0xcf, 0x81, 0xf2, 0x9c, 0xef, 0x06, 0x21, 0x7b, 0xd6, 0x04, 0x31, 0x9a,
		0x18, 0x5d, 0xd8, 0x18, 0x3d, 0x9b, 0xe6, 0x23, 0x9d, 0x6b, 0xcd, 0x81, 0x7a, 0xa6, 0xec, 0x9c,
		0xfe, 0xfc, 0xef, 0x32, 0x81, 0x9e, 0x40, 0x4f, 0xa0, 0x27, 0xd0, 0x27, 0x0a, 0xf4, 0x77, 0x81,
		0x3f, 0xe8, 0x5b, 0x6e, 0x47, 0x3f, 0xce, 0xcf, 0x5a, 0x20, 0xcc, 0x13, 0xe6, 0x0b, 0x1b, 0xe6,
		0x07, 0xae, 0x17, 0xbd, 0xab, 0x18, 0x84, 0xf7, 0x43, 0xc2, 0x33, 0xe1, 0x39, 0xad, 0xf0, 0xbc,
		0x5f, 0xf9, 0xb8, 0xff, 0xf1, 0xfd, 0x61, 0xe5, 0x23, 0x41, 0xb9, 0x08, 0x41, 0xd9, 0xf5, 0xfa,
		0x83, 0xc8, 0xea, 0xfb, 0x5f, 0x95, 0x41, 0x61, 0xe9, 0xc5, 0x46, 0xb6, 0xa3, 0xbe, 0x74, 0x14,
		0xd8, 0x5e, 0xe8, 0x28, 0xf7, 0x41, 0x05, 0x44, 0xe7, 0x65, 0x1b, 0x31, 0x16, 0xfa, 0x87, 0x2a,
		0xd3, 0x54, 0x99, 0x5e, 0x66, 0x42, 0xec, 0x72, 0xd2, 0x35, 0x2e, 0xf6, 0x75, 0xeb, 0x0f, 0x36,
		0xfb, 0xba, 0x53, 0x04, 0xf1, 0x67, 0xb4, 0xc8, 0xbe, 0x6e, 0xf6, 0x75, 0xb3, 0xaf, 0xdb, 0x14,
		0xfd, 0xf5, 0x9f, 0x47, 0x95, 0x69, 0x78, 0x07, 0xde, 0x81, 0x77, 0xe0, 0x1d, 0x78, 0x07, 0xde,
		0x81, 0x77, 0xe0, 0x9d, 0x65, 0xbc, 0x43, 0x95, 0x69, 0x88, 0x07, 0xe2, 0xa1, 0xca, 0xf4, 0x62,
		0x13, 0x9c, 0x64, 0x4b, 0x12, 0x5b, 0x39, 0xc9, 0x96, 0x19, 0xcc, 0xe1, 0x24, 0x1b, 0x9c, 0xb3,
		0xb4, 0x93, 0xa9, 0x32, 0x0d, 0xdd, 0x40, 0x37, 0xe8, 0x39, 0xe8, 0x39, 0xe8, 0x39, 0xe8, 0x39,
		0xe8, 0x39, 0x54, 0x99, 0x8e, 0x01, 0x3b, 0xd4, 0x25, 0x82, 0x78, 0x20, 0x1e, 0xcd, 0x39, 0x43,
		0x5d, 0x22, 0xd4, 0x1c, 0xd4, 0x1c, 0xd4, 0x1c, 0x28, 0x27, 0x05, 0xca, 0xa1, 0xca, 0x34, 0x6c,
		0x03, 0xdb, 0xa0, 0xe6, 0xa0, 0xe6, 0xa0, 0xe6, 0xa0, 0xe6, 0xa0, 0xe6, 0x50, 0x65, 0xfa, 0x75,
		0xd8, 0x41, 0xcd, 0x81, 0x78, 0x20, 0x1e, 0xd4, 0x1c, 0xd4, 0x1c, 0xd4, 0x1c, 0xd4, 0x1c, 0x28,
		0x27, 0x1d, 0xca, 0xd9, 0xa2, 0x2a, 0xd3, 0xfa, 0x95, 0x1f, 0x4a, 0x09, 0x8a, 0x4d, 0x37, 0x86,
		0x4f, 0x39, 0x1f, 0x3d, 0x24, 0x03, 0x25, 0x33, 0xba, 0x76, 0xa8, 0x02, 0xeb, 0xc6, 0xb5, 0x43,
		0xcb, 0x19, 0x04, 0x81, 0xd2, 0x38, 0x2a, 0x37, 0x8b, 0xa9, 0x4b, 0xda, 0xa2, 0x80, 0x46, 0xfa,
		0xec, 0x49, 0x01, 0x0d, 0x03, 0x0f, 0x44, 0x01, 0x0d, 0x12, 0x38, 0x12, 0xb8, 0x1c, 0x26, 0x70,
		0x48, 0xd6, 0xf9, 0x4b, 0xde, 0x90, 0xac, 0x91, 0xac, 0x91, 0xac, 0x37, 0x98, 0xcc, 0x51, 0x40,
		0x03, 0xde, 0x81, 0x77, 0xe0, 0x1d, 0x78, 0x07, 0xde, 0x81, 0x77, 0xe0, 0x1d, 0x78, 0x67, 0x09,
		0xef, 0x50, 0x40, 0x03, 0xe2, 0x81, 0x78, 0x28, 0xa0, 0xb1, 0xd8, 0x04, 0x8b, 0xf4, 0x49, 0x62,
		0x2b, 0x8b, 0xf4, 0x99, 0xc1, 0x1c, 0x16, 0xe9, 0xe1, 0x9c, 0xa5, 0x9d, 0x4c, 0x01, 0x0d, 0xe8,
		0x06, 0xba, 0x41, 0xcf, 0x41, 0xcf, 0x41, 0xcf, 0x41, 0xcf, 0x41, 0xcf, 0xa1, 0x80, 0x46, 0x0c,
		0xd8, 0xe1, 0xc8, 0x05, 0xc4, 0x03, 0xf1, 0x68, 0xce, 0x19, 0x8e, 0x5c, 0xa0, 0xe6, 0xa0, 0xe6,
		0xa0, 0xe6, 0x40, 0x39, 0x29, 0x50, 0x0e, 0x05, 0x34, 0x60, 0x1b, 0xd8, 0x06, 0x35, 0x07, 0x35,
		0x07, 0x35, 0x07, 0x35, 0x07, 0x35, 0x87, 0x02, 0x1a, 0xaf, 0xc3, 0x0e, 0x6a, 0x0e, 0xc4, 0x03,
		0xf1, 0xa0, 0xe6, 0xa0, 0xe6, 0xa0, 0xe6, 0xa0, 0xe6, 0x40, 0x39, 0xe9, 0x50, 0xce, 0x16, 0x15,
		0xd0, 0x30, 0x2e, 0x00, 0x51, 0x4a, 0x50, 0x47, 0xe3, 0x64, 0xf8, 0xb0, 0xcf, 0xae, 0x1d, 0xd6,
		0x26, 0x8f, 0xca, 0x42, 0x35, 0x0d, 0xd7, 0x53, 0x56, 0xdf, 0x0f, 0x4c, 0x8a, 0x68, 0xcc, 0x9a,
		0xd0, 0xab, 0x9d, 0xb1, 0x9b, 0xb3, 0xda, 0x19, 0x7e, 0x3f, 0xb2, 0x22, 0x15, 0xf4, 0x28, 0x9c,
		0xb1, 0x84, 0x2d, 0x67, 0x9d, 0x93, 0x31, 0xb7, 0xa3, 0x8d, 0x91, 0xf3, 0x69, 0xae, 0xec, 0xdb,
		0x40, 0xdd, 0xea, 0x8c, 0xfa, 0x54, 0x26, 0xd3, 0x50, 0x04, 0xca, 0xe7, 0x33, 0x4f, 0xe7, 0xcc,
		0x3c, 0xdc, 0xa7, 0x05, 0x0f, 0xb7, 0xf4, 0xc7, 0x8f, 0x7e, 0x3a, 0xf2, 0x4b, 0x19, 0x70, 0x35,
		0x3d, 0xbf, 0x33, 0xe8, 0x8e, 0x3c, 0xbf, 0xa5, 0x82, 0xc0, 0x0f, 0xac, 0x60, 0xf8, 0x2f, 0xfa,
		0x7e, 0x67, 0x45, 0x7b, 0xdb, 0x51, 0xc0, 0x07, 0x27, 0x94, 0x43, 0x27, 0x44, 0xe9, 0x1e, 0xa4,
		0x23, 0xa4, 0xa3, 0x1c, 0x4a, 0x47, 0x2c, 0x96, 0xe5, 0x4f, 0x36, 0x62, 0xb1, 0x8c, 0xc5, 0x32,
		0x16, 0xcb, 0x36, 0x28, 0x23, 0x51, 0xba, 0x07, 0xde, 0x81, 0x77, 0xe0, 0x1d, 0x78, 0x07, 0xde,
		0x81, 0x77, 0xe0, 0x1d, 0x78, 0x67, 0x09, 0xef, 0x50, 0xba, 0x07, 0xe2, 0x81, 0x78, 0x28, 0xdd,
		0xb3, 0xd8, 0x04, 0xdb, 0x83, 0x92, 0xc4, 0x56, 0xb6, 0x07, 0x65, 0x06, 0x73, 0xd8, 0x1e, 0x04,
		0xe7, 0x2c, 0xed, 0x64, 0x4a, 0xf7, 0x40, 0x37, 0xd0, 0x0d, 0x7a, 0x0e, 0x7a, 0x0e, 0x7a, 0x0e,
		0x7a, 0x0e, 0x7a, 0x0e, 0xa5, 0x7b, 0x62, 0xc0, 0x0e, 0x87, 0xbd, 0x20, 0x1e, 0x88, 0x47, 0x73,
		0xce, 0x70, 0xd8, 0x0b, 0x35, 0x07, 0x35, 0x07, 0x35, 0x07, 0xca, 0x49, 0x81, 0x72, 0x28, 0xdd,
		0x03, 0xdb, 0xc0, 0x36, 0xa8, 0x39, 0xa8, 0x39, 0xa8, 0x39, 0xa8, 0x39, 0xa8, 0x39, 0x94, 0xee,
		0x79, 0x1d, 0x76, 0x50, 0x73, 0x20, 0x1e, 0x88, 0x07, 0x35, 0x07, 0x35, 0x07, 0x35, 0x07, 0x35,
		0x07, 0xca, 0x49, 0x87, 0x72, 0x52, 0x3d, 0xbe, 0xae, 0xbe, 0x45, 0x81, 0x6d, 0x0d, 0xbc, 0x30,
		0xb2, 0x6f, 0xba, 0x9a, 0xd5, 0x34, 0x02, 0x75, 0xab, 0x02, 0xe5, 0x39, 0xfa, 0x3e, 0x4f, 0x20,
		0x9c, 0x34, 0xaa, 0xa5, 0x66, 0xe3, 0xd8, 0xaa, 0x59, 0xb5, 0xd3, 0xc6, 0xa5, 0xb5, 0xbb, 0xf7,
		0x76, 0xaf, 0xd4, 0x1a, 0xbe, 0x52, 0xe9, 0x30, 0x63, 0x50, 0x32, 0xef, 0xad, 0x2c, 0x73, 0xc9,
		0x0b, 0xdd, 0xb9, 0x6e, 0x52, 0x79, 0x93, 0xae, 0x65, 0xe6, 0xbb, 0xd8, 0x95, 0x48, 0xc1, 0x94,
		0x52, 0x82, 0x82, 0x57, 0xa7, 0xb3, 0x07, 0xd6, 0x87, 0xcf, 0xbb, 0x18, 0x3d, 0x2e, 0x3b, 0x95,
		0x68, 0xfc, 0x49, 0xe5, 0xaf, 0x6f, 0x56, 0xff, 0xde, 0x0e, 0x95, 0x71, 0x25, 0x9a, 0xa7, 0xed,
		0x51, 0x89, 0x26, 0x65, 0x97, 0x49, 0x25, 0x1a, 0x5d, 0xc7, 0x44, 0x25, 0x9a, 0x6c, 0x28, 0x21,
		0xa3, 0xf9, 0x81, 0x1a, 0x62, 0x62, 0x5d, 0xac, 0x01, 0x99, 0xea, 0x21, 0xac, 0x01, 0xad, 0x47,
		0x0d, 0x61, 0x0d, 0x88, 0x35, 0x20, 0xd6, 0x80, 0x36, 0xa8, 0x8e, 0x50, 0x91, 0x06, 0xee, 0x81,
		0x7b, 0xe0, 0x1e, 0xb8, 0x07, 0xee, 0x81, 0x7b, 0xe0, 0x1e, 0xb8, 0xe7, 0x05, 0xee, 0xa1, 0x32,
		0x4d, 0x2a, 0xe4, 0x03, 0xf5, 0xe8, 0x52, 0x0f, 0x95, 0x69, 0xa8, 0x4c, 0x93, 0x2b, 0xee, 0x61,
		0xf7, 0x4b, 0x66, 0x30, 0x87, 0xdd, 0x2f, 0x70, 0xce, 0xd2, 0x4e, 0xa6, 0x32, 0x0d, 0xba, 0x0e,
		0xba, 0x0e, 0xba, 0x0e, 0xba, 0x0e, 0xba, 0x0e, 0xba, 0x0e, 0xba, 0xce, 0x16, 0xf0, 0x0e, 0x15,
		0x6a, 0xd0, 0x75, 0xd0, 0x75, 0x38, 0xd3, 0x84, 0xaa, 0x83, 0xaa, 0x83, 0xaa, 0x83, 0xaa, 0x53,
		0x44, 0xca, 0xa1, 0x42, 0x0d, 0xaa, 0x0e, 0xaa, 0x0e, 0xaa, 0x0e, 0xaa, 0x0e, 0xaa, 0x0e, 0xaa,
		0x0e, 0xaa, 0x4e, 0xf1, 0x79, 0x87, 0x4a, 0x35, 0xa8, 0x3a, 0xa8, 0x3a, 0xa8, 0x3a, 0xa8, 0x3a,
		0xa8, 0x3a, 0xa8, 0x3a, 0xa8, 0x3a, 0x59, 0xa7, 0x1c, 0x2a, 0xd5, 0xc4, 0x09, 0x27, 0x54, 0xaa,
		0xa1, 0x52, 0x8d, 0x96, 0x65, 0x16, 0xa2, 0x52, 0x8d, 0x59, 0x41, 0x95, 0x52, 0xf2, 0x4a, 0x35,
		0x7e, 0xf0, 0xd9, 0xb5, 0xc3, 0x7f, 0x9d, 0x8f, 0x9e, 0x96, 0xc1, 0x42, 0x35, 0xae, 0x5c, 0x8d,
		0x1a, 0x97, 0xf2, 0x34, 0x69, 0xfb, 0x49, 0xca, 0xd3, 0xe8, 0x7a, 0x23, 0xca, 0xd3, 0xb0, 0xf0,
		0x93, 0x7f, 0x09, 0x84, 0x85, 0x1f, 0x16, 0x7e, 0x72, 0x24, 0x81, 0xb0, 0xf0, 0xc3, 0xc2, 0x0f,
		0x0b, 0x3f, 0x1b, 0x94, 0x44, 0x28, 0x4f, 0x03, 0xf7, 0xc0, 0x3d, 0x70, 0x0f, 0xdc, 0x03, 0xf7,
		0xc0, 0x3d, 0x70, 0x0f, 0xdc, 0xf3, 0x02, 0xf7, 0x50, 0x9e, 0x26, 0x15, 0xf2, 0x81, 0x7a, 0x74,
		0xa9, 0x87, 0xf2, 0x34, 0x94, 0xa7, 0xc9, 0x15, 0xf7, 0xb0, 0xe5, 0x25, 0x33, 0x98, 0xc3, 0x96,
		0x17, 0x38, 0x67, 0x69, 0x27, 0x53, 0x9e, 0x06, 0x5d, 0x07, 0x5d, 0x07, 0x5d, 0x07, 0x5d, 0x07,
		0x5d, 0x07, 0x5d, 0x07, 0x5d, 0x67, 0x0b, 0x78, 0x87, 0xf2, 0x34, 0xe8, 0x3a, 0xe8, 0x3a, 0x1c,
		0x64, 0x42, 0xd5, 0x41, 0xd5, 0x41, 0xd5, 0x41, 0xd5, 0x29, 0x22, 0xe5, 0x50, 0x9e, 0x06, 0x55,
		0x07, 0x55, 0x07, 0x55, 0x07, 0x55, 0x07, 0x55, 0x07, 0x55, 0x07, 0x55, 0xa7, 0xf8, 0xbc, 0x43,
		0x79, 0x1a, 0x54, 0x1d, 0x54, 0x1d, 0x54, 0x1d, 0x54, 0x1d, 0x54, 0x1d, 0x54, 0x1d, 0x54, 0x9d,
		0xac, 0x53, 0x0e, 0xe5, 0x69, 0xe2, 0x84, 0x13, 0xca, 0xd3, 0x50, 0x9e, 0x46, 0xcb, 0x32, 0x8b,
		0x55, 0x9e, 0xc6, 0x5d, 0x5b, 0x65, 0x1a, 0x37, 0x8b, 0x55, 0x69, 0xfe, 0x94, 0xab, 0x4a, 0xf3,
		0x27, 0x55, 0x69, 0xd2, 0x76, 0x8f, 0x54, 0xa5, 0xd1, 0x75, 0x42, 0x54, 0xa5, 0x61, 0xbd, 0x27,
		0xff, 0xca, 0x07, 0xeb, 0x3d, 0xac, 0xf7, 0xe4, 0x48, 0xf9, 0x60, 0xbd, 0x87, 0xf5, 0x1e, 0xd6,
		0x7b, 0x36, 0xa8, 0x84, 0x50, 0x95, 0x06, 0xee, 0x81, 0x7b, 0xe0, 0x1e, 0xb8, 0x07, 0xee, 0x81,
		0x7b, 0xe0, 0x1e, 0xb8, 0xe7, 0x05, 0xee, 0xa1, 0x2a, 0x4d, 0x2a, 0xe4, 0x03, 0xf5, 0xe8, 0x52,
		0x0f, 0x55, 0x69, 0xa8, 0x4a, 0x93, 0x2b, 0xee, 0x61, 0xa7, 0x4b, 0x66, 0x30, 0x87, 0x9d, 0x2e,
		0x70, 0xce, 0xd2, 0x4e, 0xa6, 0x2a, 0x0d, 0xba, 0x0e, 0xba, 0x0e, 0xba, 0x0e, 0xba, 0x0e, 0xba,
		0x0e, 0xba, 0x0e, 0xba, 0xce, 0x16, 0xf0, 0x0e, 0x55, 0x69, 0xd0, 0x75, 0xd0, 0x75, 0x38, 0xbf,
		0x84, 0xaa, 0x83, 0xaa, 0x83, 0xaa, 0x83, 0xaa, 0x53, 0x44, 0xca, 0xa1, 0x2a, 0x0d, 0xaa, 0x0e,
		0xaa, 0x0e, 0xaa, 0x0e, 0xaa, 0x0e, 0xaa, 0x0e, 0xaa, 0x0e, 0xaa, 0x4e, 0xf1, 0x79, 0x87, 0xaa,
		0x34, 0xa8, 0x3a, 0xa8, 0x3a, 0xa8, 0x3a, 0xa8, 0x3a, 0xa8, 0x3a, 0xa8, 0x3a, 0xa8, 0x3a, 0x59,
		0xa7, 0x1c, 0xaa, 0xd2, 0xc4, 0x09, 0x27, 0x54, 0xa5, 0xa1, 0x2a, 0x8d, 0x96, 0x65, 0x16, 0xab,
		0x2a, 0xcd, 0x9f, 0x6b, 0xab, 0x4a, 0xf3, 0x67, 0x06, 0xab, 0xd2, 0x7c, 0xb7, 0xfa, 0xf7, 0x76,
		0xa8, 0xc4, 0x4a, 0xd3, 0x4c, 0xdb, 0xa3, 0x3e, 0x4d, 0xca, 0x8e, 0x92, 0xfa, 0x34, 0xba, 0xee,
		0x88, 0xfa, 0x34, 0xac, 0xfc, 0xe4, 0x5f, 0x03, 0x61, 0xe5, 0x87, 0x95, 0x9f, 0x1c, 0x69, 0x20,
		0xac, 0xfc, 0xb0, 0xf2, 0xc3, 0xca, 0xcf, 0x06, 0x35, 0x11, 0xea, 0xd3, 0xc0, 0x3d, 0x70, 0x0f,
		0xdc, 0x03, 0xf7, 0xc0, 0x3d, 0x70, 0x0f, 0xdc, 0x03, 0xf7, 0xbc, 0xc0, 0x3d, 0xd4, 0xa7, 0x49,
		0x85, 0x7c, 0xa0, 0x1e, 0x5d, 0xea, 0xa1, 0x3e, 0x0d, 0xf5, 0x69, 0x72, 0xc5, 0x3d, 0xec, 0x79,
		0xc9, 0x0c, 0xe6, 0xb0, 0xe7, 0x05, 0xce, 0x59, 0xda, 0xc9, 0xd4, 0xa7, 0x41, 0xd7, 0x41, 0xd7,
		0x41, 0xd7, 0x41, 0xd7, 0x41, 0xd7, 0x41, 0xd7, 0x41, 0xd7, 0xd9, 0x02, 0xde, 0xa1, 0x3e, 0x0d,
		0xba, 0x0e, 0xba, 0x0e, 0x27, 0x99, 0x50, 0x75, 0x50, 0x75, 0x50, 0x75, 0x50, 0x75, 0x8a, 0x48,
		0x39, 0xd4, 0xa7, 0x41, 0xd5, 0x41, 0xd5, 0x41, 0xd5, 0x41, 0xd5, 0x41, 0xd5, 0x41, 0xd5, 0x41,
		0xd5, 0x29, 0x3e, 0xef, 0x50, 0x9f, 0x06, 0x55, 0x07, 0x55, 0x07, 0x55, 0x07, 0x55, 0x07, 0x55,
		0x07, 0x55, 0x07, 0x55, 0x27, 0xeb, 0x94, 0x43, 0x7d, 0x9a, 0x38, 0xe1, 0x84, 0xfa, 0x34, 0xd4,
		0xa7, 0xd1, 0xb2, 0xcc, 0x42, 0xd5, 0xa7, 0xd1, 0x2b, 0xa8, 0x52, 0xd2, 0x2d, 0x52, 0xf3, 0xeb,
		0xf9, 0xe8, 0x69, 0x19, 0x2c, 0x54, 0xe3, 0xca, 0xd5, 0xa8, 0x71, 0x29, 0x4f, 0x93, 0xb6, 0x9f,
		0xa4, 0x3c, 0x8d, 0xae, 0x37, 0xa2, 0x3c, 0x0d, 0x0b, 0x3f, 0xf9, 0x97, 0x40, 0x58, 0xf8, 0x61,
		0xe1, 0x27, 0x47, 0x12, 0x08, 0x0b, 0x3f, 0x2c, 0xfc, 0xb0, 0xf0, 0xb3, 0x41, 0x49, 0x84, 0xf2,
		0x34, 0x70, 0x0f, 0xdc, 0x03, 0xf7, 0xc0, 0x3d, 0x70, 0x0f, 0xdc, 0x03, 0xf7, 0xc0, 0x3d, 0x2f,
		0x70, 0x0f, 0xe5, 0x69, 0x52, 0x21, 0x1f, 0xa8, 0x47, 0x97, 0x7a, 0x28, 0x4f, 0x43, 0x79, 0x9a,
		0x5c, 0x71, 0x0f, 0x5b, 0x5e, 0x32, 0x83, 0x39, 0x6c, 0x79, 0x81, 0x73, 0x96, 0x76, 0x32, 0xe5,
		0x69, 0xd0, 0x75, 0xd0, 0x75, 0xd0, 0x75, 0xd0, 0x75, 0xd0, 0x75, 0xd0, 0x75, 0xd0, 0x75, 0xb6,
		0x80, 0x77, 0x28, 0x4f, 0x83, 0xae, 0x83, 0xae, 0xc3, 0x41, 0x26, 0x54, 0x1d, 0x54, 0x1d, 0x54,
		0x1d, 0x54, 0x9d, 0x22, 0x52, 0x0e, 0xe5, 0x69, 0x50, 0x75, 0x50, 0x75, 0x50, 0x75, 0x50, 0x75,
		0x50, 0x75, 0x50, 0x75, 0x50, 0x75, 0x8a, 0xcf, 0x3b, 0x94, 0xa7, 0x41, 0xd5, 0x41, 0xd5, 0x41,
		0xd5, 0x41, 0xd5, 0x41, 0xd5, 0x41, 0xd5, 0x41, 0xd5, 0xc9, 0x3a, 0xe5, 0x50, 0x9e, 0x26, 0x4e,
		0x38, 0xa1, 0x3c, 0x0d, 0xe5, 0x69, 0xb4, 0x2c, 0xb3, 0x58, 0xe5, 0x69, 0xdc, 0xb5, 0x55, 0xa6,
		0x71, 0xb3, 0x58, 0x95, 0xe6, 0x4f, 0xb9, 0xaa, 0x34, 0x7f, 0x52, 0x95, 0x26, 0x6d, 0xf7, 0x48,
		0x55, 0x1a, 0x5d, 0x27, 0x44, 0x55, 0x1a, 0xd6, 0x7b, 0xf2, 0xaf, 0x7c, 0xb0, 0xde, 0xc3, 0x7a,
		0x4f, 0x8e, 0x94, 0x0f, 0xd6, 0x7b, 0x58, 0xef, 0x61, 0xbd, 0x67, 0x83, 0x4a, 0x08, 0x55, 0x69,
		0xe0, 0x1e, 0xb8, 0x07, 0xee, 0x81, 0x7b, 0xe0, 0x1e, 0xb8, 0x07, 0xee, 0x81, 0x7b, 0x5e, 0xe0,
		0x1e, 0xaa, 0xd2, 0xa4, 0x42, 0x3e, 0x50, 0x8f, 0x2e, 0xf5, 0x50, 0x95, 0x86, 0xaa, 0x34, 0xb9,
		0xe2, 0x1e, 0x76, 0xba, 0x64, 0x06, 0x73, 0xd8, 0xe9, 0x02, 0xe7, 0x2c, 0xed, 0x64, 0xaa, 0xd2,
		0xa0, 0xeb, 0xa0, 0xeb, 0xa0, 0xeb, 0xa0, 0xeb, 0xa0, 0xeb, 0xa0, 0xeb, 0xa0, 0xeb, 0x6c, 0x01,
		0xef, 0x50, 0x95, 0x06, 0x5d, 0x07, 0x5d, 0x87, 0xf3, 0x4b, 0xa8, 0x3a, 0xa8, 0x3a, 0xa8, 0x3a,
		0xa8, 0x3a, 0x45, 0xa4, 0x1c, 0xaa, 0xd2, 0xa0, 0xea, 0xa0, 0xea, 0xa0, 0xea, 0xa0, 0xea, 0xa0,
		0xea, 0xa0, 0xea, 0xa0, 0xea, 0x14, 0x9f, 0x77, 0xa8, 0x4a, 0x83, 0xaa, 0x83, 0xaa, 0x83, 0xaa,
		0x83, 0xaa, 0x83, 0xaa, 0x83, 0xaa, 0x83, 0xaa, 0x93, 0x75, 0xca, 0xa1, 0x2a, 0x4d, 0x9c, 0x70,
		0x42, 0x55, 0x1a, 0xaa, 0xd2, 0x68, 0x59, 0x66, 0xb1, 0xaa, 0xd2, 0xfc, 0xb9, 0xb6, 0xaa, 0x34,
		0x7f, 0x66, 0xa1, 0x2a, 0x8d, 0xdf, 0x57, 0xc1, 0x68, 0x2c, 0xec, 0xae, 0xd5, 0xf3, 0x3b, 0x4a,
		0xbf, 0x28, 0xcd, 0xb3, 0x96, 0xf4, 0x6a, 0xd2, 0xec, 0x52, 0x93, 0x66, 0xed, 0x99, 0xda, 0xd6,
		0xd5, 0xa4, 0xd1, 0x4e, 0xc2, 0x66, 0x23, 0x3f, 0x70, 0xbd, 0x68, 0xef, 0xbd, 0xce, 0xa0, 0x4f,
		0xe6, 0xf9, 0x7b, 0x8d, 0x8f, 0x9a, 0xe5, 0x45, 0x06, 0x8c, 0x20, 0x91, 0x07, 0x49, 0xe5, 0x3f,
		0xe2, 0x64, 0x2d, 0x47, 0xd4, 0x06, 0x79, 0x8e, 0x48, 0x7e, 0x33, 0xeb, 0xe2, 0xf7, 0x07, 0x07,
		0xef, 0x0e, 0x8a, 0xdb, 0xcd, 0x85, 0xc0, 0xa0, 0xc2, 0x24, 0x0e, 0xf7, 0x51, 0xd4, 0x0f, 0x3f,
		0xed, 0xec, 0xdc, 0xb9, 0xd1, 0xfd, 0xe0, 0xe6, 0xad, 0xe3, 0xf7, 0x16, 0x98, 0x6c, 0xa7, 0x3f,
		0xb8, 0xe9, 0xba, 0xce, 0xce, 0x4d, 0xd7, 0xbf, 0xd9, 0xe9, 0xd9, 0x61, 0xa4, 0x82, 0x9d, 0x8e,
		0xef, 0xec, 0x0c, 0xa3, 0x82, 0x3b, 0x44, 0x85, 0x8e, 0x7a, 0x70, 0x1d, 0x65, 0xf5, 0x83, 0x21,
		0x3f, 0x44, 0xae, 0x0a, 0xad, 0xbb, 0x81, 0xdb, 0x51, 0x6f, 0x7b, 0x1d, 0xd2, 0x0e, 0x8d, 0xa0,
		0x9b, 0xda, 0x60, 0x14, 0xcd, 0x5a, 0xd3, 0xa1, 0xe9, 0xd0, 0x0b, 0x0c, 0x08, 0x7a, 0xf8, 0x69,
		0x2a, 0x39, 0x42, 0xcd, 0x54, 0x72, 0x5c, 0x32, 0x6b, 0xa8, 0xe4, 0xc8, 0x4a, 0xa1, 0xa9, 0x65,
		0xb1, 0x37, 0x8a, 0xbd, 0x51, 0x62, 0x00, 0x2c, 0x9a, 0x1d, 0x3f, 0x4b, 0xe1, 0xd8, 0x1b, 0xc5,
		0xde, 0x28, 0xf6, 0x46, 0x99, 0x62, 0xbe, 0xfe, 0xf3, 0xa8, 0xe0, 0x08, 0xef, 0xc0, 0x3b, 0xf0,
		0x0e, 0xbc, 0x03, 0xef, 0xc0, 0x3b, 0xf0, 0x0e, 0xbc, 0xb3, 0x8c, 0x77, 0xa8, 0xdc, 0x08, 0xf1,
		0x40, 0x3c, 0x54, 0x6e, 0x5c, 0x6c, 0x82, 0xdd, 0xe0, 0x49, 0x62, 0x2b, 0xbb, 0xc1, 0x33, 0x83,
		0x39, 0xec, 0x06, 0x87, 0x73, 0x96, 0x76, 0x32, 0x95, 0x1b, 0xa1, 0x1b, 0xe8, 0x06, 0x3d, 0x07,
		0x3d, 0x07, 0x3d, 0x07, 0x3d, 0x07, 0x3d, 0x87, 0x8a, 0x8d, 0x31, 0x60, 0x87, 0xb3, 0xfd, 0x10,
		0x0f, 0xc4, 0xa3, 0x39, 0x67, 0x38, 0xdb, 0x8f, 0x9a, 0x83, 0x9a, 0x83, 0x9a, 0x03, 0xe5, 0xa4,
		0x40, 0x39, 0x54, 0x6c, 0x84, 0x6d, 0x60, 0x1b, 0xd4, 0x1c, 0xd4, 0x1c, 0xd4, 0x1c, 0xd4, 0x1c,
		0xd4, 0x1c, 0x2a, 0x35, 0xbe, 0x0e, 0x3b, 0xa8, 0x39, 0x10, 0x0f, 0xc4, 0x83, 0x9a, 0x83, 0x9a,
		0x83, 0x9a, 0x83, 0x9a, 0x03, 0xe5, 0xa4, 0x43, 0x39, 0x14, 0x5c, 0x89, 0x13, 0x4e, 0xa8, 0xd4,
		0x48, 0xa5, 0x46, 0x2d, 0xcb, 0xcc, 0x77, 0xa5, 0x46, 0x8d, 0xf2, 0x28, 0xa5, 0x04, 0xc5, 0x19,
		0x9b, 0xc3, 0xe6, 0xb3, 0x50, 0x43, 0x66, 0x10, 0xf5, 0x07, 0x91, 0xd5, 0xf7, 0xbf, 0x2a, 0x93,
		0x5a, 0x32, 0x8b, 0xad, 0x6c, 0x47, 0x4d, 0x99, 0x28, 0xb0, 0xbd, 0xd0, 0x51, 0xee, 0x83, 0x0a,
		0x28, 0x2b, 0xb3, 0x2c, 0xf9, 0x5a, 0xe8, 0x1f, 0x2a, 0xcb, 0x50, 0x59, 0x06, 0x65, 0x03, 0x65,
		0xc3, 0x74, 0xce, 0xb0, 0x96, 0x93, 0x3f, 0x55, 0x83, 0xb5, 0x1c, 0xd6, 0x72, 0x58, 0xcb, 0xd9,
		0xa0, 0xca, 0x41, 0x65, 0x19, 0x78, 0x07, 0xde, 0x81, 0x77, 0xe0, 0x1d, 0x78, 0x07, 0xde, 0x81,
		0x77, 0xe0, 0x9d, 0x25, 0xbc, 0x43, 0x65, 0x19, 0x88, 0x07, 0xe2, 0xa1, 0xb2, 0xcc, 0x62, 0x13,
		0xec, 0x5e, 0x49, 0x12, 0x5b, 0xd9, 0xbd, 0x92, 0x19, 0xcc, 0x61, 0xf7, 0x0a, 0x9c, 0xb3, 0xb4,
		0x93, 0xa9, 0x2c, 0x03, 0xdd, 0x40, 0x37, 0xe8, 0x39, 0xe8, 0x39, 0xe8, 0x39, 0xe8, 0x39, 0xe8,
		0x39, 0x54, 0x96, 0x89, 0x01, 0x3b, 0x9c, 0x45, 0x82, 0x78, 0x20, 0x1e, 0xcd, 0x39, 0xc3, 0x59,
		0x24, 0xd4, 0x1c, 0xd4, 0x1c, 0xd4, 0x1c, 0x28, 0x27, 0x05, 0xca, 0xa1, 0xb2, 0x0c, 0x6c, 0x03,
		0xdb, 0xa0, 0xe6, 0xa0, 0xe6, 0xa0, 0xe6, 0xa0, 0xe6, 0xa0, 0xe6, 0x50, 0x59, 0xe6, 0x75, 0xd8,
		0x41, 0xcd, 0x81, 0x78, 0x20, 0x1e, 0xd4, 0x1c, 0xd4, 0x1c, 0xd4, 0x1c, 0xd4, 0x1c, 0x28, 0x27,
		0x1d, 0xca, 0xd9, 0xa6, 0x3a, 0x19, 0xfa, 0xa5, 0x1f, 0x4a, 0x49, 0xea, 0x65, 0x8c, 0x1e, 0x73,
		0x3e, 0x7a, 0x4a, 0x06, 0xca, 0x66, 0xf4, 0xfd, 0xae, 0x1d, 0xb8, 0xff, 0x1e, 0x8d, 0x82, 0xd5,
		0x51, 0x7d, 0xe5, 0x75, 0x94, 0x17, 0x59, 0x5d, 0x3f, 0x0c, 0xf5, 0xab, 0x68, 0xbc, 0xd4, 0xe8,
		0x76, 0x14, 0xd5, 0xf0, 0xfb, 0x91, 0x15, 0xa9, 0xa0, 0x47, 0x45, 0x8d, 0x25, 0xd0, 0x39, 0xeb,
		0x1c, 0xca, 0x69, 0x50, 0x4e, 0x83, 0x74, 0x8e, 0x74, 0xce, 0x74, 0xce, 0x20, 0x60, 0xe7, 0x2f,
		0x95, 0x43, 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0xde, 0x60, 0x6a, 0x47, 0x39, 0x0d, 0x78, 0x07, 0xde,
		0x81, 0x77, 0xe0, 0x1d, 0x78, 0x07, 0xde, 0x81, 0x77, 0xe0, 0x9d, 0x25, 0xbc, 0x43, 0x39, 0x0d,
		0x88, 0x07, 0xe2, 0xa1, 0x9c, 0xc6, 0x62, 0x13, 0x2c, 0xd9, 0x27, 0x89, 0xad, 0x2c, 0xd9, 0x67,
		0x06, 0x73, 0x58, 0xb2, 0x87, 0x73, 0x96, 0x76, 0x32, 0xe5, 0x34, 0xa0, 0x1b, 0xe8, 0x06, 0x3d,
		0x07, 0x3d, 0x07, 0x3d, 0x07, 0x3d, 0x07, 0x3d, 0x87, 0x72, 0x1a, 0x31, 0x60, 0x87, 0x03, 0x18,
		0x10, 0x0f, 0xc4, 0xa3, 0x39, 0x67, 0x38, 0x80, 0x81, 0x9a, 0x83, 0x9a, 0x83, 0x9a, 0x03, 0xe5,
		0xa4, 0x40, 0x39, 0x94, 0xd3, 0x80, 0x6d, 0x60, 0x1b, 0xd4, 0x1c, 0xd4, 0x1c, 0xd4, 0x1c, 0xd4,
		0x1c, 0xd4, 0x1c, 0xca, 0x69, 0xbc, 0x0e, 0x3b, 0xa8, 0x39, 0x10, 0x0f, 0xc4, 0x83, 0x9a, 0x83,
		0x9a, 0x83, 0x9a, 0x83, 0x9a, 0x03, 0xe5, 0xa4, 0x43, 0x39, 0x5b, 0x54, 0x4e, 0x43, 0xae, 0x06,
		0x44, 0x29, 0x41, 0x75, 0x8d, 0xf3, 0x85, 0xa7, 0x1e, 0x4d, 0x1f, 0x7a, 0x32, 0x7c, 0x66, 0xd6,
		0x6a, 0x6d, 0xf4, 0xfc, 0x8e, 0xb2, 0x3a, 0x6e, 0xd8, 0x57, 0x41, 0xa8, 0x33, 0x64, 0xcb, 0x8b,
		0x6d, 0x3c, 0x6d, 0x95, 0x6a, 0x1b, 0x29, 0xb3, 0x2a, 0xd5, 0x36, 0x74, 0xdd, 0x15, 0xd5, 0x36,
		0xb2, 0x91, 0xed, 0x8d, 0xe6, 0x07, 0x19, 0x9f, 0x89, 0x75, 0xa1, 0x73, 0x9b, 0xe6, 0x7c, 0xe8,
		0xdc, 0xeb, 0xc9, 0xf8, 0xd0, 0xb9, 0xd1, 0xb9, 0xd1, 0xb9, 0x37, 0x98, 0x01, 0x52, 0x75, 0x03,
		0xee, 0x81, 0x7b, 0xe0, 0x1e, 0xb8, 0x07, 0xee, 0x81, 0x7b, 0xe0, 0x1e, 0xb8, 0xe7, 0x05, 0xee,
		0xa1, 0xfa, 0x46, 0x2a, 0xe4, 0x03, 0xf5, 0xe8, 0x52, 0x0f, 0xd5, 0x37, 0xa8, 0xbe, 0x91, 0x2b,
		0xee, 0x61, 0x85, 0x3f, 0x33, 0x98, 0xc3, 0x0a, 0x3f, 0x9c, 0xb3, 0xb4, 0x93, 0xa9, 0xbe, 0x81,
		0xae, 0x83, 0xae, 0x83, 0xae, 0x83, 0xae, 0x83, 0xae, 0x83, 0xae, 0x83, 0xae, 0xb3, 0x05, 0xbc,
		0x43, 0x15, 0x0e, 0x74, 0x1d, 0x74, 0x1d, 0xce, 0x6d, 0xa0, 0xea, 0xa0, 0xea, 0xa0, 0xea, 0xa0,
		0xea, 0x14, 0x91, 0x72, 0xa8, 0xc2, 0x81, 0xaa, 0x83, 0xaa, 0x83, 0xaa, 0x83, 0xaa, 0x83, 0xaa,
		0x83, 0xaa, 0x83, 0xaa, 0x53, 0x7c, 0xde, 0xa1, 0x1a, 0x07, 0xaa, 0x0e, 0xaa, 0x0e, 0xaa, 0x0e,
		0xaa, 0x0e, 0xaa, 0x0e, 0xaa, 0x0e, 0xaa, 0x4e, 0xd6, 0x29, 0x67, 0x5b, 0xab, 0x71, 0x98, 0x15,
		0x89, 0x28, 0x69, 0x96, 0xe3, 0x38, 0xf5, 0x3b, 0xea, 0x68, 0xfe, 0xd0, 0x4c, 0xd4, 0xe3, 0x08,
		0x23, 0xeb, 0x56, 0x39, 0xd6, 0x8d, 0x0a, 0x4c, 0xea, 0x6f, 0x2c, 0xb4, 0x42, 0xbd, 0x8d, 0x94,
		0x69, 0x94, 0x7a, 0x1b, 0xba, 0x0e, 0x89, 0x7a, 0x1b, 0x28, 0xd9, 0xf9, 0xcf, 0xe9, 0x50, 0xb2,
		0x33, 0xa8, 0x64, 0xef, 0x7d, 0x20, 0xa9, 0x8b, 0x2d, 0x97, 0xa6, 0x26, 0x65, 0xef, 0x7d, 0x40,
		0xcb, 0x36, 0x1d, 0x9c, 0xc3, 0x3c, 0x0d, 0x0e, 0x69, 0x5e, 0x4a, 0xb3, 0x8f, 0x92, 0x1b, 0xa0,
		0x0f, 0xe8, 0x03, 0xfa, 0x80, 0x3e, 0xa0, 0x0f, 0xe8, 0x03, 0xfa, 0x6c, 0x17, 0xfa, 0x50, 0x75,
		0x23, 0x15, 0xf8, 0x01, 0x7c, 0x74, 0xc1, 0x87, 0xaa, 0x1b, 0x54, 0xdd, 0xc8, 0x15, 0xf9, 0xb0,
		0x92, 0x9f, 0x19, 0xce, 0x61, 0x25, 0x1f, 0xce, 0x59, 0xda, 0xc9, 0x54, 0xdd, 0x40, 0xda, 0x41,
		0xda, 0x41, 0xda, 0x41, 0xda, 0x41, 0xda, 0x41, 0xda, 0x41, 0xda, 0xd9, 0x0e, 0xe4, 0xa1, 0xf0,
		0x06, 0xd2, 0x0e, 0xd2, 0x0e, 0x47, 0x34, 0x10, 0x76, 0x10, 0x76, 0x10, 0x76, 0x10, 0x76, 0x8a,
		0x48, 0x39, 0x14, 0xde, 0x40, 0xd8, 0x41, 0xd8, 0x41, 0xd8, 0x41, 0xd8, 0x41, 0xd8, 0x41, 0xd8,
		0x41, 0xd8, 0xd9, 0x0a, 0xe4, 0xa1, 0xf6, 0x06, 0xc2, 0x0e, 0xc2, 0x0e, 0xc2, 0x0e, 0xc2, 0x0e,
		0xc2, 0x0e, 0xc2, 0x0e, 0xc2, 0x4e, 0xd6, 0x29, 0x67, 0xab, 0x6a, 0x6f, 0x68, 0x17, 0x88, 0x28,
		0x25, 0xaa, 0xb5, 0x11, 0x46, 0xc7, 0xca, 0xf9, 0xac, 0x82, 0x4c, 0xd4, 0xd6, 0x08, 0x94, 0x40,
		0x69, 0x8d, 0x85, 0x46, 0xa8, 0xac, 0x91, 0x32, 0x6b, 0x52, 0x59, 0x43, 0xd7, 0xdd, 0x50, 0x59,
		0x03, 0xa9, 0x3a, 0xff, 0x19, 0x1b, 0x52, 0x35, 0x52, 0x75, 0x9e, 0x52, 0x36, 0xa4, 0x6a, 0xa4,
		0x6a, 0xa4, 0xea, 0x8d, 0x26, 0x71, 0x54, 0xd6, 0x00, 0x7d, 0x40, 0x1f, 0xd0, 0x07, 0xf4, 0x01,
		0x7d, 0x40, 0x1f, 0xd0, 0x07, 0xf4, 0x79, 0x19, 0x7d, 0xa8, 0xac, 0x91, 0x0a, 0xfc, 0x00, 0x3e,
		0xba, 0xe0, 0x43, 0x65, 0x0d, 0x2a, 0x6b, 0xe4, 0x8a, 0x7c, 0x58, 0xa7, 0xcf, 0x0c, 0xe7, 0xb0,
		0x4e, 0x0f, 0xe7, 0x2c, 0xed, 0x64, 0x2a, 0x6b, 0x20, 0xed, 0x20, 0xed, 0x20, 0xed, 0x20, 0xed,
		0x20, 0xed, 0x20, 0xed, 0x20, 0xed, 0x6c, 0x07, 0xf2, 0x50, 0x59, 0x03, 0x69, 0x07, 0x69, 0x87,
		0x03, 0x18, 0x08, 0x3b, 0x08, 0x3b, 0x08, 0x3b, 0x08, 0x3b, 0x45, 0xa4, 0x1c, 0x2a, 0x6b, 0x20,
		0xec, 0x20, 0xec, 0x20, 0xec, 0x20, 0xec, 0x20, 0xec, 0x20, 0xec, 0x20, 0xec, 0x6c, 0x05, 0xf2,
		0x50, 0x59, 0x03, 0x61, 0x07, 0x61, 0x07, 0x61, 0x07, 0x61, 0x07, 0x61, 0x07, 0x61, 0x07, 0x61,
		0x27, 0xeb, 0x94, 0xb3, 0x4d, 0x95, 0x35, 0xb4, 0xeb, 0x43, 0x94, 0x92, 0x14, 0xd6, 0x08, 0x54,
		0x76, 0xea, 0x6a, 0xfc, 0x69, 0x3d, 0x4c, 0xac, 0x59, 0xb3, 0xa6, 0xc6, 0xb4, 0x01, 0xea, 0x69,
		0xa4, 0x4c, 0x98, 0xd4, 0xd3, 0xd0, 0x75, 0x32, 0xd4, 0xd3, 0x20, 0x47, 0x23, 0x47, 0xcb, 0x61,
		0x8e, 0x96, 0x5d, 0x61, 0xba, 0x42, 0x7e, 0x16, 0x5b, 0xfa, 0x4c, 0x4d, 0x97, 0xae, 0x20, 0x4b,
		0x9b, 0x8e, 0xcd, 0x61, 0x8e, 0xc6, 0x86, 0x7c, 0x2d, 0xa5, 0xc9, 0x47, 0x11, 0x0d, 0x78, 0x07,
		0xde, 0x81, 0x77, 0xe0, 0x1d, 0x78, 0x07, 0xde, 0x81, 0x77, 0xb6, 0x80, 0x77, 0xa8, 0x9c, 0x01,
		0xf1, 0x40, 0x3c, 0x54, 0xce, 0x58, 0x6c, 0x82, 0x75, 0xf8, 0x24, 0xb1, 0x95, 0x75, 0xf8, 0xcc,
		0x60, 0x0e, 0xeb, 0xf0, 0x70, 0xce, 0xd2, 0x4e, 0xa6, 0x72, 0x06, 0x74, 0x03, 0xdd, 0xa0, 0xe7,
		0xa0, 0xe7, 0xa0, 0xe7, 0xa0, 0xe7, 0xa0, 0xe7, 0x50, 0x2e, 0x23, 0x06, 0xec, 0x70, 0xaa, 0x02,
		0xe2, 0x81, 0x78, 0x34, 0xe7, 0x0c, 0xa7, 0x2a, 0x50, 0x73, 0x50, 0x73, 0x50, 0x73, 0xa0, 0x9c,
		0x14, 0x28, 0x87, 0x72, 0x19, 0xb0, 0x0d, 0x6c, 0x83, 0x9a, 0x83, 0x9a, 0x83, 0x9a, 0x83, 0x9a,
		0x83, 0x9a, 0x43, 0x8d, 0x8c, 0xd7, 0x61, 0x07, 0x35, 0x07, 0xe2, 0x81, 0x78, 0x50, 0x73, 0x50,
		0x73, 0x50, 0x73, 0x50, 0x73, 0xa0, 0x9c, 0x74, 0x28, 0x67, 0x8b, 0x6a, 0x64, 0xe8, 0xd5, 0x7b,
		0x28, 0x25, 0xa8, 0x8f, 0xf1, 0x8f, 0xb1, 0xed, 0x64, 0xa0, 0x38, 0xc6, 0x38, 0xd0, 0x58, 0x7e,
		0xd0, 0x51, 0x81, 0xd5, 0xf7, 0xbb, 0x76, 0xe0, 0xfe, 0x7b, 0x34, 0x10, 0x56, 0xcf, 0xef, 0x28,
		0xab, 0xe3, 0x86, 0x7d, 0x15, 0x84, 0x3a, 0x03, 0x33, 0xdf, 0x00, 0x1b, 0xfb, 0x11, 0x14, 0xd8,
		0x48, 0x19, 0x4f, 0x29, 0xb0, 0xa1, 0xeb, 0xa1, 0x28, 0xb0, 0x41, 0x05, 0xe8, 0xfc, 0x27, 0x79,
		0x54, 0x80, 0x46, 0xda, 0xce, 0x51, 0x92, 0x87, 0xb4, 0x8d, 0xb4, 0x8d, 0xb4, 0xbd, 0xc1, 0xa4,
		0x8f, 0x42, 0x1b, 0x70, 0x0f, 0xdc, 0x03, 0xf7, 0xc0, 0x3d, 0x70, 0x0f, 0xdc, 0x03, 0xf7, 0xc0,
		0x3d, 0x2f, 0x70, 0x0f, 0x05, 0x37, 0x52, 0x21, 0x1f, 0xa8, 0x47, 0x97, 0x7a, 0x28, 0xb8, 0x41,
		0xc1, 0x8d, 0x5c, 0x71, 0x0f, 0x8b, 0xfa, 0x99, 0xc1, 0x1c, 0x16, 0xf5, 0xe1, 0x9c, 0xa5, 0x9d,
		0x4c, 0xc1, 0x0d, 0x74, 0x1d, 0x74, 0x1d, 0x74, 0x1d, 0x74, 0x1d, 0x74, 0x1d, 0x74, 0x1d, 0x74,
		0x9d, 0x2d, 0xe0, 0x1d, 0x0a, 0x6f, 0xa0, 0xeb, 0xa0, 0xeb, 0x70, 0x54, 0x03, 0x55, 0x07, 0x55,
		0x07, 0x55, 0x07, 0x55, 0xa7, 0x88, 0x94, 0x43, 0xe1, 0x0d, 0x54, 0x1d, 0x54, 0x1d, 0x54, 0x1d,
		0x54, 0x1d, 0x54, 0x1d, 0x54, 0x1d, 0x54, 0x9d, 0xe2, 0xf3, 0x0e, 0x05, 0x38, 0x50, 0x75, 0x50,
		0x75, 0x50, 0x75, 0x50, 0x75, 0x50, 0x75, 0x50, 0x75, 0x50, 0x75, 0xb2, 0x4e, 0x39, 0x5b, 0x54,
		0x80, 0x23, 0xad, 0x8a, 0x11, 0xa5, 0x04, 0x25, 0x3a, 0x2e, 0x47, 0xdf, 0xa1, 0x39, 0xfc, 0x0a,
		0xe7, 0x0b, 0xdf, 0xe0, 0xd4, 0xef, 0xa8, 0xa3, 0xf9, 0xf3, 0xb3, 0x50, 0xc1, 0xc3, 0xef, 0x5b,
		0x81, 0xef, 0x18, 0xd4, 0xe7, 0x98, 0x34, 0x40, 0xf5, 0x8d, 0x94, 0xd9, 0x94, 0xea, 0x1b, 0xba,
		0xee, 0x89, 0xea, 0x1b, 0xe8, 0xda, 0xf9, 0xcf, 0xf0, 0xd0, 0xb5, 0x33, 0xa8, 0x6b, 0xef, 0x91,
		0xe1, 0xc5, 0xd6, 0x4e, 0x53, 0xd3, 0xb5, 0xf7, 0xd0, 0xb5, 0x4d, 0xc7, 0xe6, 0x30, 0x47, 0x63,
		0x43, 0xc6, 0x97, 0xd2, 0xe4, 0xa3, 0xfa, 0x06, 0xdc, 0x03, 0xf7, 0xc0, 0x3d, 0x70, 0x0f, 0xdc,
		0x03, 0xf7, 0xc0, 0x3d, 0x5b, 0xc4, 0x3d, 0x54, 0xdf, 0x48, 0x85, 0x7c, 0xa0, 0x1e, 0x5d, 0xea,
		0xa1, 0xfa, 0x06, 0xd5, 0x37, 0x72, 0xc5, 0x3d, 0xac, 0xe8, 0x67, 0x06, 0x73, 0x58, 0xd1, 0x87,
		0x73, 0x96, 0x76, 0x32, 0xd5, 0x37, 0xd0, 0x75, 0xd0, 0x75, 0xd0, 0x75, 0xd0, 0x75, 0xd0, 0x75,
		0xd0, 0x75, 0xd0, 0x75, 0xb6, 0x80, 0x77, 0xa8, 0xbe, 0x81, 0xae, 0x83, 0xae, 0xc3, 0x39, 0x0d,
		0x54, 0x1d, 0x54, 0x1d, 0x54, 0x1d, 0x54, 0x9d, 0x22, 0x52, 0x0e, 0xd5, 0x37, 0x50, 0x75, 0x50,
		0x75, 0x50, 0x75, 0x50, 0x75, 0x50, 0x75, 0x50, 0x75, 0x50, 0x75, 0x8a, 0xcf, 0x3b, 0x54, 0xdf,
		0x40, 0xd5, 0x41, 0xd5, 0x41, 0xd5, 0x41, 0xd5, 0x41, 0xd5, 0x41, 0xd5, 0x41, 0xd5, 0xc9, 0x3a,
		0xe5, 0xa4, 0x7a, 0xbc, 0x5d, 0x7d, 0x8b, 0x02, 0xdb, 0x1a, 0x78, 0x61, 0x64, 0xdf, 0x74, 0xf5,
		0x3c, 0x7b, 0x39, 0x50, 0xb7, 0x2a, 0x50, 0x9e, 0xa3, 0xef, 0xf3, 0x04, 0xc2, 0x49, 0xa3, 0x5a,
		0x6a, 0x36, 0x8e, 0xad, 0x9a, 0x55, 0x3b, 0x6d, 0x5c, 0x5a, 0xbb, 0x7b, 0x6f, 0xf7, 0x4a, 0xad,
		0xe1, 0x2b, 0x95, 0x0e, 0x33, 0x06, 0x25, 0xf3, 0xde, 0xca, 0x32, 0x97, 0xbc, 0xd0, 0x9d, 0xeb,
		0x26, 0x95, 0x37, 0xe9, 0x5a, 0x66, 0xce, 0xeb, 0xd5, 0x68, 0x55, 0x50, 0x29, 0x25, 0xa9, 0x46,
		0xe3, 0xf7, 0x2f, 0x7c, 0x27, 0x0b, 0xe5, 0x66, 0x22, 0x3b, 0xb8, 0x53, 0x91, 0xe5, 0x0f, 0xa2,
		0xfe, 0x20, 0xb2, 0xfa, 0xfe, 0x57, 0x15, 0xe8, 0x97, 0x9e, 0x59, 0xd6, 0x98, 0x5e, 0x19, 0x9a,
		0x5d, 0xca, 0xd0, 0xac, 0x3d, 0x39, 0xdb, 0xba, 0x32, 0x34, 0xda, 0x79, 0x97, 0x88, 0xc2, 0x6c,
		0xa2, 0x2c, 0x8b, 0x94, 0xab, 0x35, 0xcc, 0xa9, 0x0c, 0xf8, 0x42, 0x22, 0x87, 0x4a, 0x4f, 0x31,
		0x16, 0xaf, 0x05, 0x2c, 0xa6, 0x10, 0x1b, 0x24, 0x4d, 0x22, 0xc9, 0x52, 0x7a, 0x4a, 0x70, 0xaa,
		0x7d, 0x6e, 0x96, 0x13, 0x65, 0x94, 0xb0, 0xde, 0xc8, 0xfe, 0x66, 0xcc, 0xa9, 0xa5, 0x4b, 0x6a,
		0xb2, 0x84, 0x16, 0x2f, 0x90, 0xbc, 0xfe, 0xe2, 0x2f, 0xff, 0xc6, 0x2b, 0x5d, 0x92, 0xb4, 0x2b,
		0xa4, 0xba, 0x20, 0x46, 0xa8, 0x89, 0x89, 0xa1, 0x2f, 0x77, 0xe3, 0xea, 0xce, 0x79, 0xa1, 0x63,
		0xca, 0x7d, 0x3f, 0x78, 0xbd, 0x5c, 0xc9, 0x2c, 0x7e, 0x8e, 0x7e, 0xfb, 0x95, 0x6e, 0x8e, 0x57,
		0x98, 0x30, 0x36, 0x01, 0x26, 0x21, 0xbe, 0x45, 0xc2, 0x9b, 0x8e, 0x51, 0x9c, 0xee, 0x4f, 0x48,
		0x74, 0xda, 0x04, 0xa7, 0x4d, 0x6c, 0x4f, 0x09, 0x6d, 0xf6, 0x72, 0x29, 0x9b, 0x4c, 0xdc, 0xc2,
		0x7f, 0xe5, 0x9b, 0x40, 0xd9, 0x7f, 0xf8, 0x83, 0x68, 0x54, 0x21, 0x34, 0x7e, 0x47, 0x4e, 0xc7,
		0xeb, 0xf1, 0xc7, 0x63, 0xf6, 0x49, 0xb2, 0x0a, 0x98, 0x89, 0x53, 0x0e, 0x9d, 0x54, 0xe3, 0xd1,
		0x04, 0x7c, 0xdd, 0x56, 0x24, 0xd2, 0x0a, 0xe3, 0x74, 0xc2, 0x38, 0x8d, 0x78, 0x36, 0x39, 0x87,
		0x2f, 0xbe, 0xa1, 0x70, 0x97, 0xb4, 0x52, 0x65, 0xf9, 0x2e, 0xf0, 0x07, 0xfd, 0x50, 0x3f, 0x85,
		0x9e, 0x7c, 0x7e, 0x3b, 0x8a, 0xb7, 0x26, 0x9c, 0xd2, 0xdb, 0x93, 0x31, 0x27, 0x9b, 0xf2, 0xeb,
		0xc9, 0x96, 0xb5, 0x8b, 0xb6, 0x8e, 0xa6, 0xb4, 0xf9, 0xde, 0x80, 0x71, 0x33, 0x66, 0x1b, 0x03,
		0xf6, 0x0a, 0xb2, 0x31, 0x40, 0xd3, 0x70, 0xa4, 0x0c, 0x48, 0xdc, 0x90, 0xc4, 0x0d, 0x4a, 0xd6,
		0xb0, 0x0c, 0x53, 0x41, 0xcd, 0x39, 0xa3, 0x6b, 0x70, 0xb3, 0x06, 0x9c, 0xe9, 0xac, 0x35, 0x1c,
		0xe5, 0xe9, 0xc4, 0x9b, 0xb4, 0x67, 0x38, 0x22, 0x66, 0xa6, 0x28, 0x66, 0x92, 0x92, 0xa6, 0x99,
		0x82, 0x89, 0x4a, 0x9b, 0x6a, 0x6a, 0x26, 0x9b, 0x9a, 0xe9, 0xa6, 0x63, 0xc2, 0x66, 0xa6, 0x2c,
		0x20, 0xc4, 0x89, 0x98, 0xf6, 0xf3, 0x3c, 0x29, 0xec, 0x2b, 0xd5, 0x91, 0x9b, 0x25, 0xcf, 0x12,
		0xa9, 0x71, 0xfb, 0x42, 0x23, 0x6a, 0xb6, 0x4d, 0x2f, 0x35, 0x57, 0x90, 0x86, 0x4b, 0x48, 0xd1,
		0x35, 0xa4, 0xe5, 0x22, 0x52, 0x77, 0x15, 0xa9, 0xbb, 0x8c, 0x74, 0x5d, 0x87, 0x8c, 0x0b, 0x11,
		0x72, 0x25, 0xb3, 0x57, 0x35, 0xde, 0x44, 0xb8, 0x72, 0xc6, 0xba, 0x1d, 0xe5, 0x45, 0x6e, 0xf4,
		0x3d, 0x50, 0xb7, 0x92, 0xb3, 0x76, 0xca, 0x01, 0x07, 0x82, 0x6d, 0x36, 0x26, 0x5f, 0xf5, 0xb3,
		0x1d, 0xa6, 0x60, 0x0f, 0xd3, 0x0e, 0xa9, 0xb7, 0x7e, 0xae, 0x5f, 0x9c, 0xd5, 0x5b, 0xed, 0xcb,
		0xf3, 0x7a, 0xfd, 0x48, 0xda, 0x28, 0x46, 0x6b, 0x2c, 0xa1, 0xf1, 0x56, 0xc7, 0x65, 0x7f, 0xfd,
		0x47, 0xbc, 0xc5, 0x47, 0xfd, 0x32, 0xea, 0x8e, 0xf6, 0xde, 0xee, 0xee, 0x97, 0xcf, 0x65, 0xf1,
		0x27, 0xfd, 0xf5, 0x53, 0x6e, 0xbb, 0xe3, 0x94, 0xee, 0x58, 0xe8, 0x0e, 0x26, 0xc7, 0x62, 0x6f,
		0x30, 0x37, 0x16, 0x7a, 0x83, 0xa9, 0x31, 0xef, 0x8c, 0x0a, 0x6e, 0xf4, 0x51, 0x77, 0x1c, 0xe0,
		0x47, 0x1f, 0xf7, 0x07, 0xb3, 0x63, 0xde, 0x1b, 0xfb, 0x18, 0xcb, 0xe3, 0xee, 0xa0, 0x37, 0xe6,
		0xbd, 0x71, 0x40, 0x6f, 0x2c, 0xf6, 0x06, 0x9d, 0x31, 0xef, 0x8c, 0xf7, 0xf8, 0x8d, 0xc5, 0xee,
		0xf8, 0x40, 0x77, 0x2c, 0x76, 0xc7, 0xd5, 0xd9, 0xdf, 0xcf, 0x9a, 0xbf, 0x9c, 0xa5, 0xd0, 0x21,
		0xa2, 0x2d, 0x5e, 0x17, 0x54, 0xd1, 0x32, 0x3c, 0x14, 0xb2, 0xb2, 0xdd, 0xef, 0x77, 0x7e, 0x64,
		0xf9, 0x8e, 0xe5, 0xf8, 0xbd, 0x7e, 0xa0, 0xc2, 0x50, 0x75, 0xac, 0xae, 0xb2, 0x6f, 0x87, 0x0f,
		0x11, 0xea, 0x80, 0x4c, 0x9c, 0x8e, 0x74, 0xbd, 0x8e, 0xfa, 0x26, 0xbf, 0x22, 0x30, 0x6e, 0x96,
		0x85, 0x00, 0xe3, 0x8e, 0x64, 0x21, 0x60, 0xfe, 0x00, 0x16, 0x02, 0xf2, 0xb0, 0x10, 0x30, 0x70,
		0xbd, 0xe8, 0x43, 0x0a, 0x4b, 0x00, 0x92, 0x2b, 0x00, 0x32, 0x75, 0x02, 0xd2, 0xc7, 0x0d, 0xd1,
		0x3a, 0x02, 0xcf, 0x1a, 0x17, 0xae, 0x2b, 0xf0, 0xac, 0xfd, 0xb4, 0x4e, 0xb2, 0x3f, 0x9f, 0x7a,
		0xd2, 0x27, 0xdb, 0xd7, 0xc0, 0xa6, 0xa2, 0x75, 0x09, 0x56, 0x0e, 0x6d, 0xe5, 0xe0, 0x80, 0xc1,
		0x5d, 0x2b, 0x67, 0xcb, 0xb5, 0x76, 0x0d, 0x67, 0x17, 0x87, 0xb3, 0xbd, 0x41, 0xcf, 0x9a, 0x6e,
		0x93, 0x09, 0xe5, 0x79, 0xfb, 0x71, 0xf3, 0x70, 0x37, 0xdc, 0x0d, 0x77, 0xc3, 0xdd, 0x70, 0x37,
		0xdc, 0x0d, 0x77, 0xc3, 0xdd, 0x70, 0x37, 0xdc, 0xbd, 0xc5, 0xdc, 0xdd, 0xbf, 0xff, 0x1e, 0x2e,
		0x9e, 0x8d, 0x4f, 0x89, 0xbf, 0x9f, 0x3f, 0x06, 0x0e, 0x87, 0xc3, 0xe1, 0x70, 0x38, 0x1c, 0x0e,
		0x87, 0xc3, 0xe1, 0x70, 0x38, 0x1c, 0x0e, 0x87, 0xc3, 0xf3, 0xc8, 0xe1, 0x1b, 0x3d, 0x05, 0x2b,
		0xdc, 0xf1, 0xda, 0x05, 0xb6, 0x86, 0x34, 0xb4, 0xf3, 0xa8, 0x64, 0xd0, 0xce, 0xb8, 0x0c, 0xcb,
		0xf8, 0x1f, 0x3b, 0x93, 0x73, 0xef, 0x1b, 0xaa, 0x89, 0x6d, 0x52, 0xf4, 0x4f, 0x66, 0x0f, 0x90,
		0xe8, 0xde, 0x1f, 0xa1, 0x9c, 0x87, 0xf3, 0xff, 0x19, 0xcb, 0x65, 0x38, 0xff, 0xbf, 0x89, 0x1c,
		0x65, 0x36, 0xe3, 0x86, 0x91, 0x45, 0xe6, 0x80, 0xee, 0xec, 0x60, 0xae, 0xc0, 0xe5, 0x4e, 0xe5,
		0xf3, 0x89, 0x33, 0x7e, 0xfb, 0x76, 0xe2, 0x45, 0x77, 0xc6, 0x3e, 0x24, 0x87, 0xbe, 0x74, 0x5c,
		0x79, 0x52, 0xcc, 0x97, 0x8e, 0x9b, 0xcb, 0x58, 0x2d, 0x95, 0x0a, 0xbe, 0x14, 0x5f, 0x9a, 0x33,
		0x5f, 0x4a, 0x2d, 0x15, 0x24, 0x64, 0x24, 0x64, 0x24, 0x64, 0x6a, 0xa9, 0x50, 0x4b, 0x65, 0xa9,
		0x58, 0x48, 0x2d, 0x95, 0x94, 0xec, 0x64, 0x13, 0xdd, 0x41, 0x0d, 0x00, 0x6a, 0xa9, 0xac, 0xea,
		0x0d, 0xe6, 0x06, 0xb5, 0x54, 0x96, 0x76, 0x06, 0xb5, 0x54, 0xa8, 0xa5, 0xf2, 0x62, 0x7f, 0x30,
		0x3b, 0xa8, 0xa5, 0xb2, 0xb2, 0x3b, 0xe8, 0x0d, 0x6a, 0xa9, 0xac, 0xe8, 0x0d, 0x3a, 0x83, 0x5a,
		0x2a, 0x2b, 0xba, 0x83, 0x5a, 0x2a, 0xd4, 0x52, 0xc9, 0x42, 0x2b, 0x94, 0x12, 0xd1, 0x6a, 0x0e,
		0x1d, 0x1c, 0x1d, 0x7c, 0xf9, 0x03, 0xd0, 0xc1, 0x05, 0x66, 0x2c, 0x5b, 0xa9, 0x05, 0x67, 0x24,
		0x5b, 0xa9, 0x63, 0x4d, 0x3d, 0xb6, 0x52, 0xaf, 0x18, 0x5a, 0xb6, 0x52, 0xaf, 0x1b, 0x33, 0x33,
		0xb7, 0x95, 0x9a, 0x4a, 0x1a, 0x60, 0x27, 0xd8, 0x09, 0x76, 0x82, 0x9d, 0x60, 0x27, 0xd8, 0x09,
		0x76, 0x82, 0x9d, 0x60, 0xe7, 0x36, 0x61, 0x27, 0x85, 0x24, 0xc0, 0x50, 0x30, 0x14, 0x0c, 0x05,
		0x43, 0xc1, 0x50, 0x30, 0x14, 0x0c, 0x65, 0x70, 0xc1, 0xd0, 0xb5, 0xb5, 0xb0, 0x2d, 0x75, 0x14,
		0xc6, 0x47, 0x5e, 0x37, 0x75, 0xf4, 0xf7, 0xcd, 0x1a, 0x87, 0x66, 0x08, 0x7a, 0xa6, 0x3b, 0x1c,
		0xca, 0x27, 0x6e, 0x18, 0x55, 0xa3, 0xc8, 0xec, 0x74, 0xe3, 0x30, 0x3c, 0xd6, 0xbb, 0x6a, 0x88,
		0x6c, 0x86, 0x1e, 0x68, 0xe8, 0x8d, 0x17, 0x5a, 0xda, 0xfb, 0xb0, 0xbf, 0xff, 0xfe, 0x70, 0x7f,
		0x7f, 0xf7, 0xf0, 0xdd, 0xe1, 0xee, 0xc7, 0x83, 0x83, 0xbd, 0xf7, 0x26, 0xa7, 0x8f, 0xca, 0xcd,
		0xa0, 0xa3, 0x02, 0xd5, 0xf9, 0x3c, 0xec, 0x36, 0x6f, 0xd0, 0xed, 0x4a, 0x34, 0x75, 0x15, 0xaa,
		0xc0, 0xc8, 0x25, 0xea, 0x8e, 0xbe, 0x90, 0x41, 0xa6, 0x65, 0x88, 0x65, 0xa3, 0x53, 0xf0, 0xc1,
		0xc0, 0x89, 0xbc, 0x09, 0xc8, 0xd6, 0xa6, 0x8f, 0x6c, 0x9f, 0xfb, 0x41, 0xd4, 0xfe, 0x3c, 0x79,
		0xe4, 0xa9, 0xdf, 0x51, 0xed, 0x2f, 0xa3, 0x47, 0xbd, 0x59, 0x8f, 0xad, 0x26, 0xfb, 0x44, 0xc2,
		0x71, 0x35, 0x1d, 0x4f, 0xf9, 0x71, 0x4c, 0xd6, 0xad, 0xf1, 0x3b, 0x27, 0xde, 0x6f, 0xc6, 0xec,
		0x3e, 0xdd, 0x6e, 0x13, 0xec, 0xae, 0x04, 0x33, 0x3d, 0xfe, 0xcc, 0x8e, 0xd7, 0xf9, 0xaf, 0x77,
		0x65, 0x8c, 0x6e, 0x2c, 0x3b, 0x53, 0x21, 0x26, 0x5e, 0xf7, 0xcd, 0x32, 0xcc, 0xc9, 0xe7, 0x62,
		0x0e, 0x54, 0xb2, 0x32, 0x12, 0x89, 0xd5, 0x21, 0x1d, 0xf5, 0xe7, 0x91, 0xba, 0x33, 0x19, 0xf5,
		0x24, 0xa3, 0xa9, 0xa9, 0xe0, 0x18, 0x2b, 0x34, 0xc6, 0x0a, 0xcc, 0x33, 0x85, 0x65, 0xfa, 0xf2,
		0xdb, 0x64, 0xc4, 0x49, 0x2a, 0x6e, 0xc9, 0x18, 0x9a, 0xdf, 0x8f, 0x46, 0xc2, 0xec, 0x48, 0xd0,
		0x4a, 0x6c, 0x6e, 0x8f, 0x3e, 0x5d, 0x0c, 0xa3, 0xeb, 0xba, 0x9e, 0xb2, 0x1c, 0x7f, 0x3b, 0x8d,
		0x6e, 0xf6, 0xf2, 0x1b, 0x32, 0xba, 0xa4, 0x35, 0x4d, 0x92, 0xc6, 0x09, 0xb3, 0x78, 0xa1, 0x39,
		0x85, 0xb5, 0xa7, 0xb2, 0xc9, 0x94, 0x16, 0x9a, 0xda, 0xa6, 0x53, 0x5c, 0x6c, 0xaa, 0x8b, 0x4d,
		0x79, 0xb9, 0xa9, 0xbf, 0x1e, 0x06, 0xd7, 0x2d, 0xf3, 0x53, 0xb6, 0x3b, 0x3d, 0xd7, 0xb3, 0xcc,
		0xaa, 0x77, 0xcd, 0x66, 0xcf, 0x62, 0x63, 0xba, 0xd2, 0x80, 0xd1, 0x52, 0x9d, 0xf1, 0xd2, 0x9c,
		0xc4, 0x52, 0x9c, 0x90, 0x31, 0x49, 0x19, 0x95, 0xb8, 0x71, 0x89, 0x1b, 0x99, 0xbc, 0xb1, 0x6d,
		0x46, 0xd6, 0x32, 0x5e, 0x12, 0x5b, 0x66, 0x48, 0x56, 0x34, 0x6c, 0xd5, 0x60, 0xfa, 0x4c, 0xc3,
		0xd0, 0xbe, 0x41, 0x1b, 0x75, 0x6f, 0xd0, 0x33, 0x9f, 0x80, 0x2d, 0xff, 0x32, 0x0a, 0x5c, 0xef,
		0x4e, 0x46, 0x87, 0xdd, 0x1d, 0x15, 0xc8, 0x39, 0xab, 0x7e, 0x3e, 0x11, 0xa9, 0x8c, 0x53, 0xde,
		0x1b, 0xb6, 0x77, 0xd4, 0xb8, 0x14, 0x6b, 0xb0, 0x32, 0x6c, 0xf0, 0xb4, 0xda, 0x38, 0x6b, 0x95,
		0x37, 0x5b, 0x4e, 0xd3, 0x6f, 0x78, 0x91, 0x4c, 0x9f, 0xcf, 0xba, 0xc7, 0xb8, 0xaa, 0xe2, 0x78,
		0x5a, 0x9d, 0x4d, 0x5b, 0x13, 0x58, 0xfb, 0x99, 0x74, 0xf5, 0xa7, 0x52, 0x65, 0x2b, 0x34, 0x74,
		0x29, 0x15, 0x55, 0xbc, 0x0e, 0x37, 0xf2, 0xe4, 0x42, 0xaa, 0xbe, 0x98, 0xfa, 0x6a, 0x55, 0xca,
		0x4e, 0xa0, 0x4e, 0x26, 0x52, 0xf3, 0x74, 0x78, 0xcf, 0xa8, 0x3a, 0xab, 0x71, 0x3a, 0x54, 0x21,
		0x1d, 0x22, 0x1d, 0x22, 0x1d, 0x22, 0x1d, 0x22, 0x1d, 0x22, 0x1d, 0x22, 0x1d, 0x22, 0x1d, 0x22,
		0x1d, 0x2a, 0x62, 0x3a, 0xf4, 0x66, 0x0d, 0xf3, 0xa1, 0xec, 0x7a, 0xfd, 0x41, 0x64, 0xf5, 0xfd,
		0xaf, 0x2a, 0x30, 0x0f, 0xf3, 0x8b, 0x8d, 0x99, 0x85, 0xf9, 0x3d, 0xc2, 0x3c, 0x61, 0x3e, 0x6f,
		0x61, 0xde, 0xf4, 0x86, 0x81, 0xb2, 0xfd, 0x70, 0x27, 0x77, 0x71, 0xc8, 0xb0, 0x31, 0xae, 0x60,
		0x8a, 0x63, 0xa4, 0x43, 0x90, 0x0a, 0xb9, 0x37, 0x44, 0xa2, 0xe1, 0x27, 0x16, 0x3c, 0xee, 0x59,
		0x2e, 0x61, 0x7a, 0x32, 0xe7, 0x3a, 0xca, 0x71, 0x7b, 0x76, 0xf7, 0xfd, 0xbe, 0xe4, 0x35, 0x4c,
		0x15, 0x81, 0xb6, 0x9e, 0x9d, 0x44, 0x90, 0x68, 0x54, 0xf6, 0x84, 0x90, 0xe0, 0x31, 0xab, 0x34,
		0x4e, 0x04, 0xcd, 0x8e, 0x8b, 0x7c, 0xac, 0x54, 0xde, 0xbd, 0x3b, 0xac, 0xec, 0xbe, 0x7b, 0xff,
		0xe1, 0x60, 0xff, 0xf0, 0xf0, 0xe0, 0xc3, 0xee, 0x07, 0xe1, 0x23, 0x76, 0x69, 0x0c, 0xd6, 0xe3,
		0xe9, 0x3a, 0x3f, 0x2e, 0x32, 0x74, 0x11, 0x72, 0xc7, 0xf7, 0x04, 0x8f, 0x9f, 0xa5, 0x71, 0xf4,
		0xe7, 0x85, 0x31, 0x3c, 0xcc, 0xf1, 0x18, 0xca, 0x1e, 0xf9, 0xc9, 0x4a, 0xdd, 0xca, 0xeb, 0x5c,
		0x5e, 0xb7, 0x19, 0x46, 0xb6, 0x40, 0xea, 0xbd, 0x90, 0x78, 0x8d, 0x1b, 0x84, 0xf7, 0xe0, 0x3d,
		0x78, 0x0f, 0xde, 0x83, 0xf7, 0xe0, 0x3d, 0x78, 0x0f, 0xde, 0x83, 0xf7, 0x32, 0xc2, 0x7b, 0x91,
		0x0a, 0x1e, 0xec, 0xae, 0x24, 0xf0, 0x4d, 0x5a, 0x84, 0xf8, 0x20, 0x3e, 0x88, 0x2f, 0x73, 0xc4,
		0x17, 0x46, 0x76, 0x64, 0x09, 0x19, 0xe9, 0xa2, 0xa1, 0x0a, 0x30, 0x45, 0xf9, 0xca, 0x1b, 0x87,
		0x9e, 0xb2, 0x67, 0x7b, 0x7e, 0xa8, 0x1c, 0xdf, 0xeb, 0x88, 0xd8, 0xc6, 0x76, 0x72, 0xdf, 0x6e,
		0xda, 0x84, 0xb0, 0x9b, 0x1b, 0x42, 0xc8, 0x0b, 0xe6, 0xc9, 0x96, 0xa4, 0x28, 0xda, 0x28, 0xc2,
		0x79, 0xda, 0x83, 0xd2, 0x13, 0x98, 0xb5, 0xb3, 0x10, 0x32, 0x6c, 0x0c, 0xba, 0x83, 0xee, 0xa0,
		0x3b, 0xf4, 0x3c, 0xf4, 0x3c, 0xf4, 0x3c, 0xf4, 0x3c, 0xf4, 0x3c, 0x38, 0x2f, 0x2b, 0x9c, 0x67,
		0x45, 0x6e, 0x4f, 0x89, 0xc2, 0xde, 0xb8, 0x45, 0x88, 0x0f, 0xe2, 0x83, 0xf8, 0x32, 0x47, 0x7c,
		0x43, 0xdb, 0x8c, 0x5c, 0xe7, 0x8f, 0x50, 0x94, 0xf9, 0x50, 0xf3, 0x50, 0xf3, 0x50, 0xf3, 0x50,
		0xf3, 0xa0, 0xbc, 0x4c, 0x52, 0x9e, 0x80, 0xa3, 0x99, 0x03, 0x9e, 0xeb, 0xc1, 0x76, 0xb0, 0x1d,
		0x6c, 0x87, 0x9a, 0x87, 0x9a, 0x87, 0x9a, 0x87, 0x9a, 0x87, 0x9a, 0x07, 0xe7, 0x65, 0x86, 0xf3,
		0xa4, 0xd5, 0xbc, 0x69, 0x8b, 0x10, 0x1f, 0xc4, 0x07, 0xf1, 0xa1, 0xe6, 0xa1, 0xe6, 0xa1, 0xe6,
		0xa1, 0xe6, 0xa1, 0xe6, 0x41, 0x79, 0x5b, 0x58, 0x57, 0x56, 0xae, 0x6c, 0xea, 0xa8, 0xee, 0xdb,
		0x8e, 0x79, 0x95, 0xa5, 0xd2, 0xab, 0xf7, 0x18, 0x35, 0xc7, 0x8f, 0x1d, 0xfd, 0xb9, 0x31, 0x7c,
		0xde, 0xf9, 0xe8, 0x71, 0x19, 0x2e, 0x64, 0xb5, 0xd8, 0x51, 0xe3, 0xd2, 0x78, 0xc6, 0xe5, 0xac,
		0x9e, 0x37, 0x49, 0xed, 0x4a, 0x8a, 0x5a, 0x19, 0x22, 0xf9, 0xf6, 0xd6, 0xae, 0x74, 0x3b, 0xca,
		0x8b, 0xdc, 0xe8, 0x7b, 0xa0, 0x6e, 0x25, 0xca, 0x56, 0x9a, 0xdc, 0x22, 0xd9, 0x98, 0x7c, 0x95,
		0xcf, 0x76, 0x28, 0x98, 0xf6, 0x37, 0xcf, 0x5b, 0x8d, 0x5a, 0xf5, 0xa4, 0x7d, 0xde, 0xbc, 0x68,
		0xb5, 0x5b, 0xbf, 0x9e, 0xd7, 0x4d, 0xe7, 0xe2, 0x08, 0x8a, 0x42, 0x11, 0x6c, 0x17, 0xca, 0x88,
		0xa7, 0xaf, 0x5a, 0x3d, 0x3a, 0x12, 0x48, 0x2b, 0x7f, 0xca, 0xda, 0x6b, 0x1d, 0x5d, 0x34, 0xcf,
		0x8b, 0xf8, 0x5e, 0xf5, 0x2f, 0x17, 0xf5, 0xcb, 0xcb, 0x22, 0xbe, 0x59, 0xe3, 0xac, 0xb0, 0xaf,
		0x76, 0xda, 0x3c, 0x6b, 0xb4, 0x9a, 0x17, 0x45, 0x7c, 0xb5, 0x56, 0xfd, 0xe2, 0xb4, 0x71, 0x56,
		0x3d, 0x69, 0xd7, 0x4e, 0x1a, 0x75, 0xd3, 0x32, 0xb8, 0x19, 0x7f, 0xc5, 0x93, 0xc6, 0x59, 0x7d,
		0xd3, 0x12, 0xdc, 0x75, 0x21, 0x6b, 0xd7, 0xfa, 0x83, 0x48, 0xb0, 0x78, 0xed, 0xa3, 0xd6, 0xa8,
		0x5e, 0x0b, 0xe8, 0x6f, 0x19, 0xe8, 0x53, 0xbd, 0x36, 0x1d, 0xa3, 0x94, 0x34, 0xce, 0x65, 0x46,
		0xca, 0xea, 0x19, 0xab, 0x67, 0x69, 0xe6, 0xef, 0xcf, 0xe6, 0x1c, 0xfb, 0xa5, 0x36, 0x0d, 0x99,
		0x25, 0xf6, 0x4b, 0xc5, 0x98, 0xae, 0xec, 0x97, 0x62, 0xbf, 0x54, 0x3a, 0x3e, 0x59, 0xae, 0x15,
		0xaa, 0xd7, 0x52, 0xbd, 0x16, 0xde, 0x83, 0xf7, 0xe0, 0x3d, 0x78, 0x0f, 0xde, 0x83, 0xf7, 0xe0,
		0x3d, 0x78, 0x2f, 0x7b, 0xbc, 0x47, 0xf5, 0x5a, 0x88, 0x0f, 0xe2, 0xdb, 0x1e, 0xe2, 0xa3, 0x7a,
		0xed, 0xb6, 0x70, 0x1f, 0x3b, 0xe4, 0x73, 0x87, 0x79, 0xec, 0x90, 0x87, 0xf3, 0x52, 0xe1, 0x3c,
		0xaa, 0xd7, 0x42, 0x77, 0xd0, 0x1d, 0x7a, 0x1e, 0x7a, 0x1e, 0x7a, 0x1e, 0x7a, 0x1e, 0x7a, 0x1e,
		0x9c, 0x57, 0x58, 0xce, 0xa3, 0x7a, 0x2d, 0xc4, 0x07, 0xf1, 0x6d, 0x0d, 0xf1, 0x51, 0xef, 0x02,
		0x35, 0x0f, 0x35, 0x0f, 0x35, 0x0f, 0x35, 0x6f, 0x8b, 0x28, 0x8f, 0xea, 0xb5, 0xb0, 0x1d, 0x6c,
		0x87, 0x9a, 0x87, 0x9a, 0x87, 0x9a, 0x87, 0x9a, 0x87, 0x9a, 0x07, 0xe7, 0x15, 0x95, 0xf3, 0xa8,
		0x5e, 0x0b, 0xf1, 0x41, 0x7c, 0xa8, 0x79, 0xa8, 0x79, 0xa8, 0x79, 0xa8, 0x79, 0xa8, 0x79, 0x50,
		0x5e, 0x36, 0x29, 0x8f, 0xea, 0xb5, 0x91, 0xda, 0x11, 0x28, 0xb3, 0x54, 0x4a, 0x54, 0xbe, 0xb6,
		0x39, 0x7a, 0x60, 0xe6, 0xeb, 0xd7, 0x46, 0x6e, 0x37, 0x32, 0x2f, 0x62, 0x35, 0x6a, 0x85, 0x2a,
		0xb5, 0x14, 0xaf, 0x32, 0x44, 0xef, 0xed, 0xad, 0x52, 0x2b, 0xa1, 0xa7, 0x4a, 0xe8, 0xa8, 0xa2,
		0x72, 0x8e, 0x10, 0x41, 0x0b, 0x24, 0x31, 0x92, 0xc4, 0x9c, 0xbe, 0x3e, 0x9a, 0x9a, 0xa6, 0x26,
		0xae, 0x87, 0x0a, 0x20, 0xb2, 0x28, 0x1a, 0xa7, 0xaf, 0x7b, 0xae, 0x65, 0x6c, 0x64, 0x08, 0xf8,
		0xaf, 0x0d, 0x11, 0xe7, 0xf5, 0xba, 0x78, 0xe7, 0x4d, 0x8a, 0x53, 0xd5, 0x94, 0x64, 0xa5, 0x09,
		0x36, 0x59, 0x48, 0x8c, 0xdf, 0x35, 0xf1, 0x7e, 0x33, 0x66, 0xe7, 0xe9, 0x76, 0x9a, 0x5c, 0x67,
		0x25, 0x08, 0x9f, 0xb1, 0x59, 0x3e, 0x5e, 0xd7, 0xbf, 0xde, 0x91, 0x31, 0x3a, 0xb1, 0x3c, 0x1e,
		0xeb, 0xb8, 0x7d, 0xf7, 0xe8, 0xe8, 0x6c, 0x5c, 0xe5, 0x3c, 0x61, 0xb9, 0xd8, 0x39, 0x61, 0xc7,
		0x74, 0x74, 0x3a, 0x44, 0xbd, 0x48, 0xd0, 0xd3, 0x11, 0x4f, 0x32, 0x94, 0x9a, 0xc4, 0x6c, 0x4c,
		0xc8, 0xc6, 0x44, 0xfc, 0x94, 0x80, 0x67, 0x2f, 0xbf, 0x4d, 0x06, 0x9c, 0xc0, 0xc1, 0xc5, 0xb0,
		0xb2, 0x37, 0x06, 0xfd, 0x50, 0xae, 0x0e, 0xee, 0x86, 0xa3, 0xa1, 0x3a, 0xb1, 0xa8, 0x35, 0xa1,
		0x95, 0xee, 0x2c, 0x0c, 0xf0, 0xa7, 0x85, 0xee, 0x58, 0xfa, 0xe3, 0x47, 0x3f, 0x4d, 0xe0, 0xda,
		0xca, 0x47, 0x2a, 0x74, 0x02, 0xb7, 0x3f, 0x19, 0xc3, 0x72, 0xb5, 0xd3, 0x71, 0xbd, 0xbb, 0xd2,
		0xc4, 0x49, 0x96, 0x86, 0x2d, 0x95, 0x3a, 0x76, 0x64, 0x97, 0x22, 0xbf, 0x34, 0x6d, 0xbf, 0x34,
		0xff, 0x32, 0xa5, 0x9e, 0xdf, 0x51, 0xdd, 0xb4, 0x5d, 0xc9, 0xee, 0x7a, 0x5c, 0x89, 0x46, 0x32,
		0x5e, 0x1c, 0x57, 0x92, 0x3c, 0x99, 0x96, 0x75, 0x25, 0x49, 0x2b, 0x3b, 0x3f, 0xba, 0xf8, 0x28,
		0x79, 0xff, 0x2f, 0xbb, 0x3e, 0x29, 0xe9, 0x10, 0x3c, 0x31, 0x9d, 0x9a, 0xef, 0x45, 0xb6, 0xeb,
		0x85, 0x63, 0x7b, 0x09, 0xfb, 0xca, 0x71, 0x6f, 0x5d, 0x67, 0x64, 0x38, 0x7e, 0x10, 0x85, 0x25,
		0xdf, 0x9b, 0x99, 0x55, 0x14, 0xd8, 0x5e, 0x38, 0xfc, 0xe9, 0xef, 0x5e, 0x47, 0x3d, 0xb8, 0x8e,
		0x0a, 0xdf, 0x26, 0x7d, 0xb8, 0x5e, 0x15, 0x77, 0x6d, 0x01, 0xcc, 0x44, 0xf8, 0x12, 0x12, 0xbc,
		0x4c, 0x85, 0x2e, 0x31, 0x81, 0x4b, 0x4c, 0xd8, 0x92, 0x13, 0xb4, 0xfe, 0xda, 0x2c, 0xef, 0x4b,
		0xc0, 0x6c, 0x8e, 0xa2, 0xe3, 0x28, 0x2a, 0xde, 0x04, 0xca, 0xfe, 0xc3, 0x1f, 0x2c, 0x84, 0xc7,
		0xfb, 0xef, 0xe1, 0x38, 0x68, 0x4e, 0xe3, 0xe4, 0xf0, 0xbf, 0xbc, 0x2d, 0xb5, 0xee, 0xdd, 0xb0,
		0x14, 0x0e, 0x6e, 0xa2, 0x40, 0xa9, 0xdf, 0x3d, 0x77, 0xe8, 0x08, 0xba, 0xdf, 0x4b, 0x0f, 0x76,
		0xd7, 0xed, 0x94, 0xbe, 0xde, 0x2b, 0xaf, 0x14, 0xdd, 0xab, 0x52, 0xf4, 0xbd, 0xaf, 0x4a, 0xfe,
		0xed, 0xe8, 0xcf, 0xb3, 0xaf, 0x5d, 0x72, 0xc3, 0xd2, 0x79, 0xf3, 0xa2, 0xf5, 0xb6, 0x20, 0x01,
		0x36, 0x69, 0xca, 0x55, 0x1c, 0x4e, 0x8f, 0x9d, 0x17, 0x66, 0x20, 0xb0, 0x4e, 0x27, 0xb6, 0x35,
		0x64, 0x3b, 0xfd, 0xc8, 0xfa, 0xb8, 0x19, 0xb3, 0xd0, 0xda, 0xf2, 0xfb, 0x56, 0x57, 0x3d, 0xa8,
		0x6e, 0xc9, 0x19, 0x07, 0x59, 0x15, 0x94, 0x6e, 0xfd, 0xe0, 0xb1, 0x21, 0x8e, 0x1e, 0x34, 0xb6,
		0xb9, 0x2d, 0x09, 0xa6, 0x1a, 0xd0, 0xb2, 0x1d, 0x81, 0x34, 0x99, 0xbd, 0xe5, 0x26, 0x88, 0xbe,
		0xf8, 0x1b, 0xd7, 0xaf, 0xe5, 0xaa, 0xc9, 0x72, 0x75, 0xa3, 0x1c, 0xbd, 0x1c, 0x4b, 0xbb, 0x5a,
		0xad, 0xa7, 0xbd, 0x3c, 0x76, 0xab, 0xfb, 0xe1, 0x05, 0x9f, 0x58, 0x1e, 0x2d, 0xe6, 0x5b, 0xe1,
		0xa0, 0xdf, 0xef, 0x7e, 0x7f, 0xb5, 0x07, 0x66, 0x56, 0xf6, 0xe8, 0x53, 0xaf, 0xf4, 0x70, 0x3c,
		0x2f, 0x12, 0xdb, 0x6b, 0x24, 0xf1, 0x12, 0x9a, 0x8a, 0x58, 0x52, 0x4f, 0xa0, 0x6d, 0xf9, 0xda,
		0x96, 0xae, 0xaf, 0x78, 0x99, 0x29, 0x3b, 0x71, 0xa3, 0x66, 0xd9, 0x99, 0x8e, 0x66, 0x42, 0x7e,
		0x9d, 0x7c, 0xae, 0x20, 0x60, 0x87, 0x08, 0xbb, 0x4d, 0x22, 0xec, 0xdc, 0x25, 0xee, 0x4c, 0xa6,
		0x31, 0x6b, 0x1e, 0xac, 0x79, 0x60, 0x6e, 0xe9, 0x9b, 0x5b, 0x96, 0xd6, 0x3e, 0xd6, 0xc6, 0x93,
		0xb1, 0x09, 0xec, 0x15, 0xae, 0xfc, 0xaa, 0x82, 0xcb, 0x71, 0x33, 0x69, 0xe0, 0x65, 0xe0, 0xf7,
		0x55, 0x10, 0xb9, 0xa3, 0xab, 0xb0, 0xe3, 0xc2, 0xe5, 0xfc, 0x33, 0xa0, 0x25, 0x68, 0xb9, 0x62,
		0x4a, 0x7d, 0x4f, 0x1e, 0xec, 0x66, 0x9f, 0x04, 0x2f, 0x89, 0x77, 0xeb, 0xd6, 0x0f, 0x13, 0x66,
		0x44, 0x66, 0x99, 0x51, 0xee, 0x25, 0xbc, 0xe4, 0x53, 0x7b, 0x8b, 0x64, 0xbc, 0xc4, 0x53, 0x5f,
		0x53, 0xca, 0x4b, 0xaa, 0x4e, 0x6b, 0xde, 0x42, 0x5c, 0x9e, 0x50, 0x89, 0xe1, 0xf9, 0x89, 0x51,
		0x2b, 0x9c, 0x9f, 0x30, 0x34, 0x1f, 0x29, 0x33, 0x12, 0x37, 0x27, 0x71, 0xb3, 0x92, 0x37, 0x2f,
		0x3d, 0x33, 0xd3, 0x34, 0xb7, 0xd9, 0xd7, 0x97, 0x3b, 0x3f, 0x11, 0x46, 0x81, 0xeb, 0xdd, 0x49,
		0x1c, 0x9e, 0xf8, 0x90, 0xcb, 0xf3, 0x72, 0xdf, 0xef, 0xfc, 0xc8, 0xf2, 0x1d, 0x6b, 0x98, 0x65,
		0x05, 0x2a, 0x0c, 0x55, 0xc7, 0xea, 0x2a, 0xfb, 0x76, 0xd8, 0xe8, 0x5f, 0x19, 0x3e, 0x7e, 0xf6,
		0x30, 0xd9, 0xae, 0x6f, 0xe8, 0x3f, 0xc7, 0xcd, 0xe0, 0x40, 0x71, 0xa0, 0x38, 0x50, 0xcd, 0x99,
		0x33, 0xf0, 0x86, 0x3e, 0x48, 0xc0, 0x7f, 0x7e, 0x34, 0x68, 0x63, 0xf2, 0x3a, 0x1b, 0x3f, 0x2e,
		0x26, 0x16, 0x55, 0x84, 0xa2, 0x8b, 0xe1, 0x34, 0x49, 0xa1, 0x67, 0x6e, 0x7c, 0xbf, 0xab, 0x6c,
		0x4f, 0xb2, 0x6b, 0xf6, 0x0a, 0xd2, 0x35, 0xae, 0x17, 0x89, 0x96, 0x48, 0xd9, 0xa7, 0x94, 0x49,
		0xc2, 0x46, 0x37, 0x58, 0xc0, 0x6e, 0x97, 0x02, 0x76, 0x69, 0x8f, 0xe1, 0x21, 0xa5, 0x4d, 0x8c,
		0x58, 0x43, 0xbe, 0x95, 0xeb, 0x82, 0x78, 0xee, 0x81, 0xb4, 0xeb, 0xfe, 0x80, 0xeb, 0xd6, 0x34,
		0x7b, 0xaa, 0x50, 0xe5, 0xce, 0x53, 0x53, 0x85, 0x0a, 0x57, 0xbd, 0x36, 0x57, 0x4d, 0xfd, 0x69,
		0xf0, 0xbd, 0x94, 0xc9, 0xc1, 0x02, 0xdf, 0xa9, 0x3f, 0xbd, 0x55, 0x31, 0x61, 0xdd, 0x75, 0x62,
		0x58, 0x69, 0x29, 0x68, 0xe1, 0x9b, 0xd9, 0xde, 0xb9, 0xe9, 0x1f, 0x93, 0x6d, 0x46, 0x4e, 0xde,
		0x3b, 0x09, 0x7a, 0x46, 0x6f, 0xa1, 0xdf, 0x64, 0x81, 0x5f, 0x73, 0x5d, 0x8a, 0xfd, 0x2f, 0xec,
		0x7f, 0x49, 0x6e, 0xf3, 0xda, 0xeb, 0x48, 0xb3, 0x91, 0x1f, 0xfa, 0xc0, 0x40, 0xdd, 0xea, 0x8c,
		0xfa, 0x14, 0xbf, 0x35, 0xc8, 0xa0, 0x7c, 0x3e, 0x71, 0x33, 0x6f, 0xdf, 0x4e, 0x7c, 0xc5, 0xce,
		0xc8, 0xd4, 0x32, 0xe0, 0x30, 0x92, 0x9d, 0x6a, 0x78, 0xd6, 0x9f, 0x49, 0x4e, 0x37, 0x3c, 0xeb,
		0x49, 0x5d, 0x97, 0x51, 0xc1, 0x65, 0xe0, 0x32, 0x62, 0x7e, 0x4d, 0xed, 0x2d, 0x73, 0x63, 0x3b,
		0x1d, 0x04, 0xf6, 0x4d, 0x57, 0x60, 0xeb, 0xc7, 0xa3, 0xd6, 0xd8, 0x01, 0xc2, 0x0e, 0x90, 0x8d,
		0x99, 0x9b, 0x59, 0x42, 0xb4, 0xf9, 0x1d, 0x20, 0xe6, 0x4b, 0xfa, 0x86, 0x4b, 0xf9, 0xeb, 0xd9,
		0x72, 0xc6, 0x8e, 0x5d, 0xdc, 0x0d, 0xee, 0x86, 0x1d, 0xbb, 0x6c, 0x70, 0xc5, 0xdf, 0xe0, 0x6f,
		0xb6, 0xc7, 0xdf, 0xb0, 0xc1, 0x35, 0x0d, 0x27, 0x2c, 0xe4, 0x8c, 0x0d, 0xa7, 0x49, 0x0a, 0x3d,
		0xc3, 0x06, 0xd7, 0x95, 0x5d, 0xc3, 0x06, 0xd7, 0x04, 0x5f, 0x8c, 0x0d, 0xae, 0xaf, 0x4c, 0x2a,
		0x56, 0xc8, 0xd9, 0xe0, 0x2a, 0xcb, 0x1a, 0xf2, 0xad, 0xb0, 0xc1, 0x75, 0x85, 0xeb, 0x66, 0x83,
		0xab, 0xae, 0xd9, 0xb3, 0xc1, 0x35, 0x77, 0x9e, 0x9a, 0x0d, 0xae, 0xb8, 0xea, 0xb5, 0xb9, 0x6a,
		0x36, 0xb8, 0x82, 0xef, 0xa5, 0x4c, 0x0e, 0x16, 0xf8, 0xce, 0x06, 0xd7, 0xad, 0x8a, 0x09, 0x5c,
		0x84, 0x98, 0x99, 0xfd, 0xa0, 0x39, 0xba, 0x0a, 0xf1, 0xef, 0xea, 0x7b, 0xc2, 0x85, 0xe2, 0xf2,
		0x89, 0x1b, 0x46, 0xd5, 0x28, 0x4a, 0x58, 0x9d, 0xed, 0xd4, 0xf5, 0xea, 0x5d, 0xd5, 0x1b, 0xf6,
		0x5e, 0x32, 0x60, 0x1c, 0x3a, 0xc6, 0x85, 0x4f, 0x9a, 0xe1, 0x6d, 0xb9, 0x19, 0x74, 0x54, 0xa0,
		0x3a, 0x9f, 0x87, 0x6f, 0xed, 0x0d, 0xba, 0x5d, 0x9d, 0x8f, 0x5e, 0x85, 0x2a, 0x48, 0xe4, 0x85,
		0x32, 0x5b, 0xe2, 0xf5, 0xf9, 0xdc, 0x15, 0xb9, 0x99, 0x72, 0xda, 0xd6, 0x76, 0xd5, 0x8b, 0x9d,
		0x17, 0x55, 0x4d, 0xa1, 0xcc, 0x6b, 0xe8, 0xdf, 0x46, 0x5f, 0xed, 0x40, 0x59, 0x3d, 0xbf, 0x33,
		0x88, 0xb1, 0x23, 0x6d, 0xbe, 0x76, 0xf2, 0xe4, 0x83, 0x14, 0x7c, 0xa5, 0xe0, 0xeb, 0xd3, 0x5f,
		0xe4, 0x2e, 0x01, 0x8a, 0xbd, 0x6e, 0x57, 0x71, 0xf3, 0x27, 0x5e, 0x91, 0xeb, 0x04, 0xb8, 0x4e,
		0x00, 0x8b, 0x5b, 0xab, 0xc5, 0x6d, 0xe1, 0x8d, 0x02, 0xc9, 0x50, 0xec, 0x45, 0xc4, 0xbe, 0x9c,
		0x34, 0x75, 0x3a, 0x6e, 0x29, 0x0d, 0xe0, 0x8c, 0xe5, 0x9f, 0x12, 0xf9, 0xa5, 0xc4, 0x70, 0x59,
		0x01, 0x2e, 0xf3, 0x0f, 0x97, 0x76, 0xb7, 0xeb, 0x3b, 0x76, 0xa4, 0x3a, 0xd6, 0xe8, 0x46, 0x8d,
		0xe4, 0x21, 0xef, 0x69, 0x03, 0xc9, 0x82, 0xdf, 0x2e, 0xb8, 0x49, 0xf0, 0x7b, 0xfa, 0x75, 0x12,
		0xef, 0xd7, 0x7c, 0xb4, 0x37, 0xe1, 0x5d, 0x25, 0xc9, 0xa0, 0x4d, 0xe6, 0x61, 0x02, 0xbd, 0x5d,
		0x73, 0x9d, 0x49, 0x43, 0xf4, 0x34, 0x59, 0x37, 0x32, 0xdd, 0x23, 0x20, 0xb6, 0x8a, 0x6c, 0xbe,
		0x32, 0xa0, 0xb3, 0x65, 0xde, 0x64, 0xb9, 0x66, 0xd6, 0x75, 0xfb, 0x95, 0x8f, 0xfb, 0x1f, 0xdf,
		0x1f, 0x56, 0x3e, 0x1e, 0xe4, 0xbf, 0x0f, 0x53, 0x92, 0xbb, 0xaf, 0xd7, 0x98, 0x93, 0xdd, 0xd8,
		0xa1, 0xb2, 0x7a, 0xb6, 0x63, 0xd9, 0x9d, 0x4e, 0xa0, 0xc2, 0x30, 0x79, 0xac, 0x7a, 0xd6, 0x02,
		0xc1, 0x8a, 0x60, 0xb5, 0xb1, 0x60, 0x95, 0x7c, 0x22, 0x3e, 0xc2, 0xf4, 0x04, 0xcb, 0xfc, 0xe5,
		0x73, 0x3b, 0x8a, 0x54, 0xe0, 0x25, 0x0e, 0x5a, 0xe5, 0xdf, 0x76, 0xad, 0x8f, 0xb6, 0x75, 0x5b,
		0xb5, 0x8e, 0xaf, 0xff, 0x53, 0xf9, 0xeb, 0x87, 0x4f, 0x8f, 0xff, 0xfd, 0xc7, 0xff, 0x1c, 0xfc,
		0x15, 0xbf, 0xdf, 0xaf, 0x93, 0x7c, 0xe1, 0xe6, 0x65, 0xe3, 0x5f, 0xda, 0xdf, 0xfa, 0xff, 0xbd,
		0xfe, 0xb5, 0xff, 0x57, 0x39, 0x93, 0x3e, 0xce, 0xe9, 0x2a, 0xd7, 0x72, 0x92, 0xdc, 0xb0, 0x3e,
		0x97, 0x7b, 0x67, 0x1f, 0xc5, 0xab, 0xe1, 0xd5, 0x36, 0xe6, 0xd5, 0x12, 0x9f, 0x06, 0x4a, 0x78,
		0xea, 0x47, 0xc6, 0xce, 0x3a, 0x2a, 0x74, 0x02, 0xb7, 0x9f, 0x48, 0x60, 0x5b, 0xd8, 0x56, 0x37,
		0xff, 0x30, 0xb6, 0x86, 0xad, 0x61, 0x6b, 0x2f, 0x3e, 0x53, 0xf5, 0xfa, 0x3a, 0xb7, 0x55, 0x8e,
		0x3f, 0x16, 0xf7, 0x3a, 0x42, 0x75, 0x6b, 0x0f, 0xba, 0x51, 0x22, 0x54, 0x28, 0x8f, 0x52, 0xa9,
		0x78, 0xa3, 0x7e, 0x8d, 0x9d, 0x63, 0xe7, 0x1b, 0xb3, 0xf3, 0xe4, 0xe7, 0x48, 0x13, 0x9e, 0x17,
		0x15, 0x32, 0xf4, 0x3f, 0x07, 0x6e, 0x7f, 0xd8, 0xe1, 0xd6, 0xad, 0xed, 0x76, 0x07, 0x81, 0x06,
		0xc4, 0x3e, 0x6f, 0x02, 0x07, 0x20, 0xe9, 0x00, 0xec, 0xae, 0x1d, 0xf4, 0xc2, 0xad, 0x34, 0xff,
		0xc9, 0xab, 0x63, 0xfc, 0x69, 0x1b, 0x7f, 0xcf, 0x0d, 0x7b, 0x76, 0xe4, 0xdc, 0x9b, 0x58, 0xff,
		0xac, 0x0d, 0xcc, 0x1f, 0xf3, 0xc7, 0xfc, 0xb3, 0x6f, 0xfe, 0xb7, 0x6e, 0xd0, 0x1b, 0xed, 0x9e,
		0x78, 0x50, 0x41, 0xa8, 0x95, 0x55, 0x3f, 0x6b, 0x01, 0xe4, 0x06, 0xb9, 0x49, 0xad, 0x5f, 0x7c,
		0xe6, 0xbd, 0x1d, 0x74, 0xcc, 0xac, 0xee, 0x59, 0x0b, 0x58, 0x1d, 0x56, 0x87, 0xd5, 0xbd, 0xf8,
		0x4c, 0xb7, 0x93, 0xdc, 0xce, 0xdc, 0x0e, 0x96, 0x85, 0x65, 0x61, 0x59, 0x2f, 0x3f, 0xb3, 0x6b,
		0x87, 0x91, 0x15, 0xa8, 0x1b, 0xdf, 0x1f, 0xfe, 0xc3, 0x0e, 0x75, 0x22, 0xda, 0x92, 0x36, 0xb0,
		0x3c, 0x2c, 0x6f, 0x63, 0x96, 0xe7, 0x76, 0x94, 0x17, 0xb9, 0xd1, 0xf7, 0x64, 0x17, 0x5b, 0xcc,
		0xcc, 0x2f, 0xc9, 0xf1, 0xd9, 0xc6, 0xe4, 0x51, 0x9f, 0xed, 0xd0, 0xe0, 0xd6, 0x88, 0x5a, 0xf3,
		0xf4, 0xbc, 0x79, 0x56, 0x3f, 0x6b, 0xb5, 0x2f, 0xea, 0x9f, 0x9b, 0xcd, 0xe1, 0x3f, 0xaa, 0x97,
		0xcd, 0xb3, 0xa4, 0x33, 0x60, 0xb4, 0x8b, 0x2e, 0xd4, 0xaa, 0xc7, 0x61, 0x58, 0xe8, 0x76, 0xf2,
		0xb5, 0x6b, 0x17, 0x8d, 0x56, 0xa3, 0x56, 0x3d, 0x69, 0xd7, 0x2f, 0x2e, 0x9a, 0x17, 0xe5, 0x75,
		0xec, 0x3b, 0x94, 0xf9, 0xe2, 0xe7, 0xcd, 0x5f, 0xea, 0x17, 0xed, 0xe3, 0x6a, 0xe3, 0xe4, 0xea,
		0xa2, 0x9e, 0xa3, 0xef, 0x7d, 0x75, 0x59, 0xbf, 0x68, 0x37, 0xce, 0x1a, 0xad, 0x46, 0xb5, 0x55,
		0x3f, 0x4a, 0xfb, 0xae, 0x89, 0x6b, 0x69, 0x4f, 0x20, 0x1e, 0xc1, 0x22, 0xb7, 0xa7, 0xcc, 0xe2,
		0xd7, 0xa8, 0x05, 0xa2, 0x17, 0xd1, 0x6b, 0x63, 0xd1, 0x6b, 0x38, 0x03, 0x23, 0xd7, 0xf9, 0x23,
		0x4c, 0x54, 0x44, 0x4a, 0xa3, 0xb4, 0x5f, 0xf9, 0xca, 0x1b, 0xef, 0x91, 0x2e, 0x7b, 0xb6, 0xe7,
		0x87, 0xca, 0xf1, 0xbd, 0x4e, 0x22, 0xa5, 0x9a, 0x6d, 0xf9, 0xc9, 0x7c, 0x77, 0x6e, 0xb7, 0xe5,
		0xcb, 0x95, 0xd0, 0x63, 0x83, 0xbe, 0x7c, 0xec, 0x0b, 0xbf, 0xba, 0x91, 0x73, 0xef, 0x3f, 0xa8,
		0xc0, 0x2c, 0x83, 0x7b, 0xde, 0x0e, 0x85, 0x0c, 0x88, 0x83, 0x86, 0x71, 0x30, 0xe9, 0x7d, 0x63,
		0xe5, 0x8e, 0x8a, 0x6c, 0xb7, 0x1b, 0xea, 0x27, 0x53, 0xd3, 0x06, 0xb6, 0xeb, 0xde, 0x4e, 0x2b,
		0xfa, 0xde, 0x57, 0x21, 0x57, 0xf1, 0xbd, 0x60, 0x02, 0x93, 0x2e, 0x2a, 0xdc, 0x1d, 0x9e, 0xda,
		0xb7, 0x41, 0x68, 0xde, 0xfe, 0x90, 0xce, 0xc5, 0x9b, 0x51, 0xe0, 0xde, 0xdd, 0xa9, 0x40, 0xdf,
		0xee, 0xa7, 0x0d, 0x60, 0xf7, 0xd8, 0xfd, 0x56, 0xd8, 0xfd, 0xac, 0x90, 0x86, 0x15, 0xa8, 0xce,
		0xc0, 0xeb, 0xd8, 0xc3, 0x3f, 0xf9, 0x5d, 0xf5, 0x1c, 0xe4, 0x2c, 0x3d, 0xdb, 0x78, 0xe4, 0x23,
		0x34, 0xae, 0xfb, 0x28, 0xd7, 0xbd, 0x41, 0x4f, 0x7f, 0x82, 0xb5, 0xfc, 0xcb, 0xb1, 0x67, 0x33,
		0xba, 0x48, 0x68, 0x77, 0xd8, 0x55, 0x4f, 0x74, 0x32, 0x83, 0xab, 0x80, 0xf6, 0x86, 0xcd, 0x5d,
		0xfe, 0x7a, 0xd9, 0xaa, 0x9f, 0x9a, 0x08, 0x6f, 0x25, 0x93, 0xcb, 0x95, 0xfc, 0xc6, 0x68, 0x8e,
		0x1b, 0x74, 0xca, 0xb3, 0x17, 0x48, 0x7c, 0xfb, 0xf0, 0x63, 0x21, 0xe1, 0x71, 0xf7, 0x7e, 0x2a,
		0xed, 0x66, 0xb3, 0x84, 0xea, 0xb6, 0x94, 0x16, 0x8a, 0xec, 0x48, 0xed, 0x18, 0xe5, 0x74, 0xa5,
		0x97, 0x8a, 0xed, 0x9c, 0xd8, 0x61, 0x74, 0x39, 0x6b, 0xf8, 0x62, 0xdc, 0xee, 0x06, 0xb3, 0x5e,
		0x03, 0xd5, 0xf7, 0x69, 0x2b, 0x28, 0xbf, 0x64, 0xbc, 0x28, 0xbf, 0x28, 0xbf, 0x28, 0xbf, 0x28,
		0xbf, 0xd9, 0x56, 0x7e, 0x7d, 0xc7, 0xd6, 0x3b, 0x4b, 0x3d, 0xfb, 0x24, 0xb1, 0x8e, 0x58, 0xb7,
		0xb1, 0x58, 0x97, 0x8f, 0xdd, 0x71, 0x3d, 0xd5, 0xf3, 0x03, 0x8d, 0x93, 0xd4, 0x93, 0xcf, 0xb1,
		0x7e, 0x82, 0x85, 0x19, 0x5a, 0x58, 0xe2, 0xf5, 0x13, 0xfb, 0xc1, 0x76, 0xbb, 0xf6, 0x4d, 0xd7,
		0x60, 0x3b, 0xda, 0xbc, 0x89, 0xed, 0xd2, 0x52, 0x51, 0x51, 0x45, 0xaf, 0x1e, 0xcf, 0xba, 0x7e,
		0xaa, 0x7d, 0xad, 0xa6, 0xc1, 0x35, 0x9a, 0x86, 0x57, 0xa6, 0x19, 0x48, 0x7e, 0x12, 0x57, 0xa2,
		0x49, 0x5d, 0x83, 0x29, 0x7e, 0x61, 0xa2, 0xdc, 0x65, 0x58, 0x06, 0x37, 0x98, 0x89, 0xdc, 0x58,
		0x96, 0xe2, 0xb5, 0x95, 0x59, 0xee, 0xf5, 0x35, 0xe9, 0xc5, 0xd7, 0x19, 0x58, 0xe8, 0x1c, 0x44,
		0x6e, 0xd7, 0xfd, 0xb7, 0xea, 0xe8, 0xc7, 0xe7, 0x59, 0x0b, 0x84, 0x67, 0xc2, 0x33, 0xe1, 0x99,
		0xf0, 0x4c, 0x78, 0x26, 0x3c, 0x13, 0x9e, 0xd7, 0x95, 0x92, 0x6f, 0x66, 0x39, 0x37, 0x91, 0xa4,
		0x54, 0x7a, 0x69, 0xf9, 0xf6, 0x74, 0xdc, 0xd2, 0x3a, 0x65, 0xb4, 0xdb, 0x3b, 0xab, 0xa3, 0x75,
		0xbd, 0xd3, 0xec, 0x93, 0x88, 0xd5, 0x48, 0x69, 0x86, 0x76, 0xab, 0x2f, 0x56, 0x27, 0x98, 0x81,
		0xa5, 0x8d, 0x14, 0x0c, 0xbf, 0xfe, 0xcf, 0xfe, 0x5f, 0xbf, 0xff, 0x6e, 0xfd, 0xb0, 0xfb, 0xdb,
		0x9e, 0xf5, 0xf1, 0xfa, 0xbf, 0x7b, 0xbf, 0xed, 0x5a, 0x95, 0xeb, 0x1f, 0x17, 0x7e, 0xf2, 0xdb,
		0x5e, 0xe5, 0x7a, 0xf4, 0x8b, 0xff, 0x7d, 0xf7, 0xdb, 0xee, 0xde, 0xf5, 0x8f, 0x99, 0xac, 0x21,
		0xfe, 0x83, 0xd6, 0xab, 0xfc, 0x98, 0xd1, 0xc2, 0xe2, 0x43, 0xd7, 0x35, 0x71, 0xbe, 0x1a, 0x4e,
		0x2f, 0xc9, 0x05, 0xc4, 0x38, 0x3d, 0x9c, 0x9e, 0xbc, 0xd3, 0xcb, 0xc9, 0x0a, 0x9d, 0xdf, 0x51,
		0x5d, 0x5d, 0x3b, 0x9b, 0x7f, 0x16, 0x4b, 0xc3, 0xd2, 0xb0, 0xb4, 0x17, 0x9f, 0xa9, 0x67, 0x63,
		0x58, 0x17, 0xd6, 0x85, 0x75, 0xbd, 0x6e, 0x5d, 0x7e, 0x5f, 0x05, 0xd6, 0x30, 0xd3, 0x1f, 0x68,
		0xdc, 0xb2, 0xb5, 0xf8, 0x61, 0x6c, 0x0d, 0x5b, 0xdb, 0x98, 0xad, 0xe5, 0xb8, 0xf2, 0x52, 0xf3,
		0xbc, 0x7e, 0xd1, 0xbe, 0x6c, 0x55, 0x5b, 0x57, 0x97, 0xf9, 0xa9, 0xbb, 0x54, 0xad, 0xb5, 0x1a,
		0xff, 0xcc, 0x45, 0xc1, 0xa2, 0xa3, 0xc6, 0x65, 0xf5, 0xf3, 0x89, 0x56, 0x8d, 0xa2, 0xb5, 0x7f,
		0xd7, 0xc6, 0x99, 0x76, 0xbf, 0x16, 0xa0, 0x9e, 0x52, 0xdf, 0x0e, 0x54, 0x82, 0xf3, 0x65, 0xb3,
		0x5e, 0x9b, 0x7c, 0x8e, 0xf8, 0x43, 0xfc, 0xd9, 0x58, 0xfc, 0xe9, 0x2a, 0xfb, 0x56, 0x33, 0xf6,
		0x1c, 0x26, 0xd3, 0x6a, 0x47, 0x6b, 0x38, 0x6f, 0xdf, 0xee, 0x8c, 0xff, 0x37, 0x5f, 0xac, 0x19,
		0xaf, 0xe8, 0xec, 0x8c, 0xd2, 0x9e, 0xf5, 0x1a, 0x6d, 0x64, 0x79, 0xbe, 0x96, 0xd5, 0x8e, 0x3e,
		0x88, 0xd9, 0x62, 0xb6, 0xa4, 0x68, 0x2f, 0xdb, 0x98, 0xe3, 0x6a, 0x08, 0x20, 0xa3, 0x4f, 0x71,
		0x10, 0x00, 0xeb, 0x32, 0xb4, 0xae, 0xc4, 0x07, 0x01, 0x1c, 0x3f, 0x08, 0x94, 0x13, 0xd9, 0x37,
		0x5d, 0x65, 0xa9, 0x20, 0xf0, 0x03, 0x83, 0x9a, 0x4a, 0x4b, 0xda, 0xd2, 0xdb, 0x7b, 0xb8, 0xc7,
		0xde, 0xc3, 0xb5, 0x99, 0x80, 0x98, 0x29, 0xc8, 0x99, 0x84, 0x5e, 0x9e, 0x94, 0x74, 0xef, 0x61,
		0x52, 0x53, 0x99, 0x7d, 0xd0, 0xee, 0x3c, 0xb8, 0xa1, 0x1f, 0x7c, 0xb7, 0x3c, 0xdf, 0xb3, 0x6e,
		0xed, 0xc8, 0xee, 0xea, 0x5a, 0xce, 0xb3, 0xb9, 0xb4, 0xba, 0x69, 0xcd, 0xb1, 0xd0, 0xdb, 0xcc,
		0x6b, 0x6c, 0x58, 0x12, 0x06, 0x26, 0x6c, 0x68, 0x52, 0x06, 0x27, 0x6e, 0x78, 0xe2, 0x06, 0x28,
		0x6f, 0x88, 0x7a, 0x06, 0x69, 0x20, 0xcd, 0x94, 0x8c, 0x36, 0x07, 0x2f, 0x09, 0x4c, 0x03, 0x2f,
		0x52, 0x81, 0xd6, 0x3e, 0xe1, 0xa7, 0xa6, 0xf4, 0xc1, 0xa0, 0x09, 0xb3, 0x7d, 0xc3, 0x66, 0xba,
		0xd5, 0xa3, 0x2f, 0x22, 0xb1, 0x8f, 0xf8, 0xb1, 0xb0, 0x69, 0xbe, 0x11, 0x75, 0xd6, 0x9e, 0xf4,
		0x0e, 0xd7, 0xf9, 0x74, 0x90, 0xda, 0xe9, 0x6a, 0x38, 0xb3, 0x1f, 0x0f, 0x85, 0xc0, 0x7e, 0xe3,
		0x67, 0x43, 0x21, 0xbf, 0xef, 0x38, 0x8f, 0xa3, 0xf3, 0x66, 0x33, 0x9f, 0xbe, 0x5e, 0x57, 0x59,
		0x2b, 0x0d, 0xda, 0xbc, 0xb1, 0x3b, 0x56, 0xa7, 0xdb, 0xed, 0x8b, 0x11, 0xcb, 0xd3, 0x06, 0xe1,
		0x14, 0x38, 0x05, 0x4e, 0x81, 0x53, 0xe0, 0x14, 0x38, 0x05, 0x4e, 0x81, 0x53, 0x0c, 0x38, 0x25,
		0x12, 0xc6, 0x94, 0x08, 0x4a, 0x81, 0x52, 0xa0, 0x14, 0x28, 0x05, 0x4a, 0x81, 0x52, 0xa0, 0x14,
		0x28, 0xc5, 0x98, 0x52, 0xee, 0x3b, 0x81, 0xd5, 0xf5, 0xef, 0x2c, 0xff, 0x41, 0x05, 0xb7, 0x5d,
		0xff, 0xab, 0x18, 0xae, 0xac, 0x6a, 0x18, 0x6e, 0x81, 0x5b, 0xe0, 0x16, 0xb8, 0x05, 0x6e, 0x81,
		0x5b, 0xe0, 0x16, 0xb8, 0x45, 0x93, 0x5b, 0xdc, 0xa1, 0x1f, 0xf4, 0x04, 0xf7, 0xad, 0x3c, 0x6d,
		0x10, 0x4e, 0x81, 0x53, 0xe0, 0x14, 0x38, 0x05, 0x4e, 0x81, 0x53, 0xe0, 0x14, 0x38, 0x45, 0x93,
		0x53, 0x02, 0xe5, 0x28, 0xf7, 0x41, 0x05, 0x62, 0x9c, 0xf2, 0xb4, 0x41, 0x38, 0x05, 0x4e, 0x81,
		0x53, 0xe0, 0x14, 0x38, 0x05, 0x4e, 0x81, 0x53, 0xe0, 0x14, 0x6d, 0x4e, 0xe9, 0xda, 0xdf, 0xad,
		0xc0, 0xef, 0x76, 0x7d, 0x59, 0x5a, 0x59, 0xd6, 0x2c, 0xcc, 0x02, 0xb3, 0xc0, 0x2c, 0x30, 0x0b,
		0xcc, 0x02, 0xb3, 0xc0, 0x2c, 0x30, 0x8b, 0x36, 0xb3, 0xf4, 0x87, 0x74, 0x11, 0xb9, 0x3d, 0xe5,
		0x0f, 0x22, 0x41, 0x66, 0x59, 0xd6, 0x2c, 0xcc, 0x02, 0xb3, 0xc0, 0x2c, 0x30, 0x0b, 0xcc, 0x02,
		0xb3, 0xc0, 0x2c, 0x30, 0x8b, 0x26, 0xb3, 0x44, 0xbe, 0x64, 0xb1, 0x95, 0x47, 0xad, 0x41, 0x28,
		0x10, 0x0a, 0x84, 0x02, 0xa1, 0x40, 0x28, 0x10, 0x0a, 0x84, 0x02, 0xa1, 0xa4, 0x5e, 0x7e, 0x4e,
		0xf3, 0x7e, 0xc8, 0xd9, 0xe7, 0xcd, 0xee, 0x89, 0xec, 0x3b, 0xae, 0xda, 0x31, 0xae, 0xd7, 0x58,
		0x7a, 0xe9, 0x02, 0xc9, 0x73, 0xc7, 0x55, 0xed, 0xda, 0xfc, 0x11, 0xf5, 0xf1, 0x13, 0x32, 0x70,
		0xb7, 0xb6, 0x51, 0xcd, 0xbe, 0x59, 0xd0, 0x33, 0x28, 0xcf, 0x47, 0x9d, 0xcb, 0xcd, 0xe1, 0x20,
		0x75, 0x2e, 0xe3, 0x7e, 0xd0, 0x76, 0x42, 0xeb, 0xc1, 0xf5, 0xbb, 0x23, 0x27, 0x25, 0x57, 0xe2,
		0x72, 0x59, 0xab, 0x64, 0x5f, 0x64, 0x5f, 0x64, 0x5f, 0x64, 0x5f, 0x64, 0x5f, 0x64, 0x5f, 0x64,
		0x5f, 0x64, 0x5f, 0x9a, 0xfa, 0xb0, 0x1d, 0xf9, 0x3d, 0xd7, 0xb1, 0xfc, 0xbe, 0x75, 0xd3, 0xf5,
		0x9d, 0x3f, 0x54, 0x47, 0x8e, 0x5a, 0x56, 0xb5, 0x0c, 0xb9, 0x40, 0x2e, 0x90, 0x0b, 0xe4, 0x02,
		0xb9, 0x40, 0x2e, 0x90, 0x0b, 0xe4, 0xa2, 0x5b, 0xef, 0x72, 0x42, 0x15, 0xa2, 0x35, 0x2f, 0x9f,
		0xb7, 0x09, 0xad, 0x40, 0x2b, 0xd0, 0x0a, 0xb4, 0x02, 0xad, 0x40, 0x2b, 0xd0, 0x0a, 0xb4, 0xa2,
		0x49, 0x2b, 0x8e, 0xdf, 0xeb, 0x77, 0xd5, 0x68, 0x01, 0xc7, 0xbe, 0xf1, 0x03, 0xb9, 0xd3, 0x03,
		0xab, 0x1a, 0x86, 0x5b, 0xe0, 0x16, 0xb8, 0x05, 0x6e, 0x81, 0x5b, 0xe0, 0x16, 0xb8, 0x05, 0x6e,
		0x31, 0xe7, 0x16, 0xe9, 0x73, 0x8f, 0xab, 0x9b, 0x86, 0x5d, 0x60, 0x17, 0xd8, 0x05, 0x76, 0x81,
		0x5d, 0x60, 0x17, 0xd8, 0x05, 0x76, 0xd1, 0x64, 0x97, 0x8e, 0x1d, 0xd9, 0x56, 0xd7, 0xf5, 0xfe,
		0x10, 0x43, 0x96, 0x67, 0x2d, 0x42, 0x2a, 0x90, 0x0a, 0xa4, 0x02, 0xa9, 0x40, 0x2a, 0x90, 0x0a,
		0xa4, 0x02, 0xa9, 0x68, 0x92, 0x8a, 0x72, 0x02, 0x47, 0x0c, 0x52, 0x16, 0x1b, 0x83, 0x4f, 0xe0,
		0x13, 0xf8, 0x04, 0x3e, 0x81, 0x4f, 0xe0, 0x13, 0xf8, 0x04, 0x3e, 0xd1, 0xe4, 0x93, 0xd1, 0x85,
		0xaa, 0x8e, 0xef, 0x45, 0x81, 0xdf, 0xb5, 0xfa, 0x81, 0x1f, 0xf9, 0x8e, 0x2f, 0x57, 0x55, 0xea,
		0xc5, 0xd6, 0x21, 0x18, 0x08, 0x06, 0x82, 0x81, 0x60, 0x20, 0x18, 0x08, 0x06, 0x82, 0x81, 0x60,
		0xb8, 0xbf, 0x15, 0x4e, 0x81, 0x53, 0xe0, 0x14, 0x38, 0x05, 0x4e, 0x81, 0x53, 0xe0, 0x94, 0x82,
		0x71, 0x4a, 0xcf, 0xee, 0x0e, 0x43, 0x80, 0xf0, 0xb9, 0xe6, 0xa5, 0xad, 0x42, 0x2c, 0x10, 0x0b,
		0xc4, 0x02, 0xb1, 0x40, 0x2c, 0x10, 0x0b, 0xc4, 0x02, 0xb1, 0x68, 0x12, 0x4b, 0xdf, 0x77, 0x43,
		0xdf, 0x13, 0x06, 0x96, 0x65, 0x8d, 0xc2, 0x2b, 0xf0, 0x0a, 0xbc, 0x02, 0xaf, 0xc0, 0x2b, 0xf0,
		0x0a, 0xbc, 0x02, 0xaf, 0x68, 0xdf, 0xe2, 0xea, 0x28, 0xf7, 0x41, 0x05, 0x96, 0xff, 0xa0, 0x82,
		0xd1, 0xd6, 0x13, 0xb9, 0x8b, 0x5c, 0x57, 0xb4, 0x0c, 0xb9, 0x40, 0x2e, 0x90, 0x0b, 0xe4, 0x02,
		0xb9, 0x40, 0x2e, 0x90, 0x0b, 0xe4, 0xa2, 0x49, 0x2e, 0xe1, 0x20, 0xe8, 0x07, 0x6e, 0xa8, 0xac,
		0x8e, 0xff, 0x55, 0xee, 0x76, 0xa1, 0xa5, 0xad, 0x42, 0x2c, 0x10, 0x0b, 0xc4, 0x02, 0xb1, 0x40,
		0x2c, 0x10, 0x0b, 0xc4, 0x02, 0xb1, 0xe8, 0xde, 0x3e, 0xdf, 0xed, 0x5b, 0xe3, 0x68, 0x25, 0x7e,
		0xbd, 0xd0, 0xea, 0xa6, 0x61, 0x17, 0xd8, 0x05, 0x76, 0x81, 0x5d, 0x60, 0x17, 0xd8, 0x05, 0x76,
		0x81, 0x5d, 0x74, 0xd9, 0xc5, 0x8f, 0x04, 0x8f, 0x0b, 0x3d, 0x6a, 0x0d, 0x42, 0x81, 0x50, 0x20,
		0x14, 0x08, 0x05, 0x42, 0x81, 0x50, 0x20, 0x14, 0x08, 0x45, 0x93, 0x50, 0x06, 0x5e, 0x47, 0xdd,
		0xba, 0x9e, 0xa0, 0xa8, 0xf2, 0xac, 0x45, 0x48, 0x05, 0x52, 0x81, 0x54, 0x20, 0x15, 0x48, 0x05,
		0x52, 0x81, 0x54, 0x20, 0x15, 0x6d, 0x52, 0x51, 0xdf, 0xfa, 0xca, 0x89, 0x54, 0xc7, 0x5a, 0xb8,
		0xf5, 0x47, 0x8e, 0x5a, 0x5e, 0x68, 0x1d, 0x82, 0x81, 0x60, 0x20, 0x18, 0x08, 0x06, 0x82, 0x81,
		0x60, 0x20, 0x18, 0x08, 0x46, 0x9b, 0x60, 0xc2, 0x41, 0xbf, 0xef, 0x07, 0x43, 0xc8, 0x08, 0xd4,
		0x9f, 0x03, 0x15, 0x46, 0x82, 0xfc, 0xb2, 0xb2, 0x6d, 0xe8, 0x05, 0x7a, 0x81, 0x5e, 0xa0, 0x17,
		0xe8, 0x05, 0x7a, 0x81, 0x5e, 0xa0, 0x97, 0xc4, 0x9f, 0x48, 0x38, 0x57, 0xcb, 0x55, 0xcf, 0xf3,
		0x23, 0x7b, 0x38, 0xd2, 0x5a, 0xd3, 0xb3, 0x1c, 0x3a, 0xf7, 0xaa, 0x67, 0xf7, 0xed, 0xe8, 0x7e,
		0xe8, 0x81, 0x77, 0xfc, 0xbe, 0xf2, 0x9c, 0x11, 0x4d, 0xcc, 0xe2, 0xd0, 0x8e, 0xe3, 0xf7, 0xfa,
		0xbe, 0xa7, 0xbc, 0x28, 0x9c, 0xff, 0x71, 0x27, 0x8c, 0xec, 0x48, 0xed, 0xf4, 0x1d, 0x57, 0xed,
		0xdc, 0xda, 0x46, 0x5b, 0x65, 0xca, 0x61, 0x14, 0x0c, 0x9c, 0xc8, 0x9b, 0x04, 0x81, 0xda, 0xf4,
		0x11, 0xed, 0x73, 0xc7, 0x55, 0xed, 0xe3, 0x61, 0xe3, 0xf5, 0x71, 0xdb, 0x6f, 0xd2, 0xe9, 0xf6,
		0x04, 0x5d, 0x5e, 0xf6, 0x7c, 0xcf, 0x7a, 0xf4, 0xbe, 0x49, 0x3b, 0x7d, 0x16, 0xec, 0x9e, 0xb5,
		0x94, 0x70, 0xe0, 0x27, 0x71, 0x6e, 0x2f, 0xe1, 0xc7, 0x74, 0x51, 0xd1, 0x04, 0x11, 0x85, 0xd0,
		0xd0, 0x14, 0x09, 0xc5, 0x50, 0x50, 0x0c, 0x01, 0xe5, 0xd0, 0x2f, 0x5d, 0x27, 0x73, 0xe4, 0x06,
		0x7a, 0x03, 0x6f, 0x3b, 0xa1, 0xf5, 0xe0, 0xfa, 0x5d, 0x5b, 0x54, 0x3f, 0x5e, 0xda, 0x2a, 0x99,
		0x17, 0x99, 0x17, 0x99, 0x17, 0x99, 0x17, 0x99, 0x17, 0x99, 0x17, 0x99, 0x17, 0x99, 0x97, 0xa6,
		0x6e, 0x6c, 0x47, 0x7e, 0xcf, 0x75, 0x2c, 0xbf, 0x2f, 0x7e, 0x00, 0x72, 0x65, 0xcb, 0x90, 0x0b,
		0xe4, 0x02, 0xb9, 0x40, 0x2e, 0x90, 0x0b, 0xe4, 0x02, 0xb9, 0x40, 0x2e, 0x9a, 0xe4, 0x32, 0xa5,
		0x0a, 0xc9, 0xb2, 0xde, 0x4b, 0xda, 0x84, 0x56, 0xa0, 0x15, 0x68, 0x05, 0x5a, 0x81, 0x56, 0xa0,
		0x15, 0x68, 0x05, 0x5a, 0xd1, 0xa4, 0x95, 0x85, 0x8d, 0xff, 0xf6, 0x8d, 0x1f, 0xc8, 0x6d, 0xce,
		0x5b, 0xd5, 0x30, 0xdc, 0x02, 0xb7, 0xc0, 0x2d, 0x70, 0x0b, 0xdc, 0x02, 0xb7, 0xc0, 0x2d, 0x70,
		0x8b, 0x39, 0xb7, 0x44, 0x6e, 0x4f, 0xf9, 0x83, 0x54, 0xc8, 0xe5, 0x49, 0xd3, 0xb0, 0x0b, 0xec,
		0x02, 0xbb, 0xc0, 0x2e, 0xb0, 0x0b, 0xec, 0x02, 0xbb, 0xc0, 0x2e, 0x9a, 0xec, 0xd2, 0xb1, 0x23,
		0xdb, 0xea, 0xba, 0xde, 0x1f, 0x62, 0xc8, 0xf2, 0xac, 0x45, 0x48, 0x05, 0x52, 0x81, 0x54, 0x20,
		0x15, 0x48, 0x05, 0x52, 0x81, 0x54, 0x20, 0x15, 0x4d, 0x52, 0x51, 0x4e, 0xe0, 0x88, 0x41, 0xca,
		0x62, 0x63, 0xf0, 0x09, 0x7c, 0x02, 0x9f, 0xc0, 0x27, 0xf0, 0x09, 0x7c, 0x02, 0x9f, 0xc0, 0x27,
		0x9a, 0x7c, 0x32, 0xba, 0x2c, 0xde, 0xf1, 0xbd, 0x28, 0xf0, 0xbb, 0x56, 0x3f, 0xf0, 0x23, 0xdf,
		0xf1, 0xe5, 0xee, 0x1e, 0x79, 0xb1, 0x75, 0x08, 0x06, 0x82, 0x81, 0x60, 0x20, 0x18, 0x08, 0x06,
		0x82, 0x81, 0x60, 0x20, 0x18, 0x4d, 0x82, 0x71, 0x87, 0x7e, 0xd0, 0x13, 0xbc, 0x30, 0xed, 0x69,
		0x83, 0x70, 0x0a, 0x9c, 0x02, 0xa7, 0xc0, 0x29, 0x70, 0x0a, 0x9c, 0x02, 0xa7, 0xc0, 0x29, 0x9a,
		0x9c, 0xd2, 0xb3, 0xbb, 0xc3, 0x10, 0x20, 0x7c, 0xae, 0x79, 0x69, 0xab, 0x10, 0x0b, 0xc4, 0x02,
		0xb1, 0x40, 0x2c, 0x10, 0x0b, 0xc4, 0x02, 0xb1, 0x40, 0x2c, 0x9a, 0xc4, 0xd2, 0xf7, 0xdd, 0xd0,
		0xf7, 0x84, 0x81, 0x65, 0x59, 0xa3, 0xf0, 0x0a, 0xbc, 0x02, 0xaf, 0xc0, 0x2b, 0xf0, 0x0a, 0xbc,
		0x02, 0xaf, 0xc0, 0x2b, 0x9a, 0xbc, 0x12, 0x28, 0x47, 0xb9, 0x0f, 0x2a, 0xb0, 0xfc, 0x07, 0x15,
		0x8c, 0xb6, 0x9e, 0x48, 0x41, 0xcb, 0xca, 0x96, 0x21, 0x17, 0xc8, 0x05, 0x72, 0x81, 0x5c, 0x20,
		0x17, 0xc8, 0x05, 0x72, 0x81, 0x5c, 0x34, 0xc9, 0x25, 0x1c, 0x04, 0xfd, 0xc0, 0x0d, 0x95, 0xd5,
		0xf1, 0xbf, 0xca, 0xdd, 0x2e, 0xb4, 0xb4, 0x55, 0x88, 0x05, 0x62, 0x81, 0x58, 0x20, 0x16, 0x88,
		0x05, 0x62, 0x81, 0x58, 0x20, 0x16, 0x4d, 0x62, 0x89, 0xba, 0x7d, 0x6b, 0x1c, 0xad, 0xc4, 0xaf,
		0x17, 0x5a, 0xdd, 0x34, 0xec, 0x02, 0xbb, 0xc0, 0x2e, 0xb0, 0x0b, 0xec, 0x02, 0xbb, 0xc0, 0x2e,
		0xb0, 0x8b, 0x2e, 0xbb, 0xf8, 0x91, 0xe0, 0x71, 0xa1, 0x47, 0xad, 0x41, 0x28, 0x10, 0x0a, 0x84,
		0x02, 0xa1, 0x40, 0x28, 0x10, 0x0a, 0x84, 0x02, 0xa1, 0x68, 0x12, 0xca, 0xc0, 0xeb, 0xa8, 0x5b,
		0xd7, 0x13, 0x14, 0x55, 0x9e, 0xb5, 0x08, 0xa9, 0x40, 0x2a, 0x90, 0x0a, 0xa4, 0x02, 0xa9, 0x40,
		0x2a, 0x90, 0x0a, 0xa4, 0xa2, 0x4d, 0x2a, 0xea, 0x5b, 0x5f, 0x39, 0x91, 0xea, 0x58, 0x0b, 0xb7,
		0xfe, 0xc8, 0x51, 0xcb, 0x0b, 0xad, 0x43, 0x30, 0x10, 0x0c, 0x04, 0x03, 0xc1, 0x40, 0x30, 0x10,
		0x0c, 0x04, 0x03, 0xc1, 0x68, 0x13, 0x4c, 0x38, 0xe8, 0xf7, 0xfd, 0x60, 0x08, 0x19, 0x81, 0xfa,
		0x73, 0xa0, 0xc2, 0x48, 0x90, 0x5f, 0x56, 0xb6, 0x0d, 0xbd, 0x40, 0x2f, 0xd0, 0x0b, 0xf4, 0x02,
		0xbd, 0x40, 0x2f, 0xd0, 0x0b, 0xf4, 0x92, 0xf8, 0x13, 0x09, 0xe7, 0x6a, 0xb9, 0xea, 0x79, 0x7e,
		0x64, 0x0f, 0x47, 0x5a, 0x6b, 0x7a, 0x96, 0x43, 0xe7, 0x5e, 0xf5, 0xec, 0xbe, 0x1d, 0xdd, 0x0f,
		0x3d, 0xf0, 0x8e, 0xdf, 0x57, 0x9e, 0x33, 0xa2, 0x89, 0x59, 0x1c, 0xda, 0x71, 0xfc, 0x5e, 0xdf,
		0xf7, 0x94, 0x17, 0x85, 0xf3, 0x3f, 0xee, 0x84, 0x91, 0x1d, 0xa9, 0x9d, 0xbe, 0xe3, 0xaa, 0x1d,
		0xcf, 0xf7, 0xac, 0x5b, 0xdb, 0x68, 0xbb, 0x4c, 0x39, 0x8c, 0x82, 0x81, 0x13, 0x79, 0x93, 0x40,
		0x50, 0x9b, 0x3e, 0xa6, 0x7d, 0xee, 0xb8, 0xaa, 0x7d, 0xe6, 0x7b, 0xc7, 0xc3, 0xf6, 0xeb, 0xe3,
		0xe6, 0xdf, 0xa4, 0xd3, 0xfb, 0xf1, 0x7e, 0x33, 0xe6, 0xf8, 0x94, 0xd5, 0xb7, 0x28, 0xb0, 0xad,
		0x81, 0x17, 0x46, 0xf6, 0x4d, 0x37, 0x59, 0x7c, 0x2c, 0x7f, 0xbd, 0x57, 0x5e, 0xe2, 0xf0, 0xa3,
		0x31, 0xf6, 0xd3, 0xb8, 0xfb, 0x76, 0x27, 0xfa, 0xde, 0x57, 0xa5, 0xff, 0x29, 0xfd, 0x6d, 0x01,
		0x3f, 0xac, 0xe1, 0xcf, 0xc2, 0x4f, 0x97, 0xad, 0xe6, 0x45, 0xf5, 0x4b, 0xfd, 0x6f, 0x25, 0x3f,
		0x58, 0xf6, 0x9f, 0x1b, 0x67, 0xad, 0xfa, 0x97, 0x8b, 0x6a, 0xab, 0x7e, 0xd4, 0xae, 0x35, 0x2e,
		0x6a, 0x57, 0x8d, 0xd6, 0xaa, 0xdf, 0x3c, 0xbe, 0xb8, 0xfa, 0x9b, 0xce, 0xcc, 0x30, 0xe4, 0xc0,
		0x45, 0xfe, 0x1b, 0xf5, 0xab, 0x26, 0xe5, 0x48, 0x51, 0xdf, 0x23, 0xda, 0x5b, 0x5f, 0xc7, 0xa7,
		0xed, 0xb5, 0xde, 0xc8, 0x7a, 0xdd, 0xb8, 0x56, 0xa6, 0xe9, 0xfd, 0x04, 0xbc, 0x5e, 0x82, 0x79,
		0xf4, 0xa2, 0x73, 0x8b, 0x37, 0x32, 0xaf, 0xf7, 0x6f, 0x8c, 0x1e, 0x2b, 0x07, 0xaa, 0x33, 0xf0,
		0x3a, 0xb6, 0x17, 0x59, 0x81, 0x9f, 0xc0, 0x27, 0x2d, 0xd4, 0xcb, 0x78, 0xf4, 0xf9, 0x98, 0x63,
		0x94, 0x2c, 0xb7, 0x4d, 0x9c, 0xcb, 0xea, 0xe4, 0xae, 0x86, 0xb9, 0xaa, 0xae, 0x4f, 0x32, 0xce,
		0x45, 0x8d, 0xbd, 0x90, 0x79, 0xae, 0x29, 0x1b, 0x25, 0x13, 0xe7, 0x8e, 0x0b, 0xb9, 0xe2, 0xc4,
		0x8a, 0x2c, 0xad, 0x59, 0xb9, 0x38, 0x33, 0xf7, 0xf6, 0x13, 0x7c, 0xa6, 0xee, 0x0d, 0x7a, 0xc9,
		0x07, 0xbe, 0xe5, 0x5f, 0x46, 0x81, 0xeb, 0xdd, 0xe9, 0x31, 0xda, 0xee, 0xf0, 0x85, 0xcf, 0x2f,
		0x1a, 0xa7, 0xd5, 0x8b, 0x5f, 0x75, 0x42, 0xe8, 0xde, 0xf0, 0xf3, 0x97, 0xf5, 0x5a, 0xf3, 0xec,
		0x68, 0xd8, 0x42, 0xaa, 0x3c, 0xda, 0xf2, 0x1b, 0xa3, 0xd9, 0xa5, 0xf1, 0x9a, 0xd3, 0x37, 0xd4,
		0xca, 0x55, 0x16, 0xde, 0xef, 0x53, 0x69, 0x6f, 0xb3, 0x88, 0x28, 0xe4, 0xac, 0x7b, 0xfe, 0x43,
		0x22, 0x76, 0x5c, 0xf0, 0xd3, 0xd3, 0x8f, 0xe2, 0xa2, 0x71, 0xd1, 0x1b, 0x73, 0xd1, 0x37, 0xbe,
		0xdf, 0x55, 0xb6, 0xa7, 0xe3, 0x91, 0xf7, 0xd6, 0x68, 0x68, 0xa1, 0x0a, 0x5c, 0xbb, 0x6b, 0x79,
		0x7e, 0x72, 0x43, 0x9b, 0x7f, 0x14, 0x43, 0xc3, 0xd0, 0x36, 0x66, 0x68, 0xe1, 0x98, 0x2d, 0x34,
		0xec, 0xec, 0xc3, 0x3a, 0xed, 0xcc, 0xbf, 0x8d, 0xbe, 0xda, 0x81, 0xb2, 0x1e, 0x54, 0x10, 0x26,
		0xc9, 0xd8, 0xe6, 0xef, 0xf9, 0xb4, 0x05, 0xac, 0x0e, 0xab, 0xc3, 0xea, 0x5e, 0xb6, 0xba, 0xaf,
		0x6e, 0xe4, 0xdc, 0xfb, 0x0f, 0x2a, 0xb0, 0x02, 0x65, 0x77, 0xbe, 0x6b, 0x58, 0xdd, 0xd3, 0x16,
		0xb0, 0x3a, 0xac, 0x0e, 0xa8, 0x7c, 0xf9, 0x99, 0x91, 0xea, 0xf5, 0x55, 0x60, 0x47, 0x83, 0x40,
		0x23, 0x7f, 0x5b, 0xfc, 0x70, 0x32, 0x63, 0xdb, 0xc3, 0xd8, 0x30, 0xb6, 0xa7, 0x5f, 0xe7, 0xc8,
		0x0d, 0x92, 0x0d, 0x9c, 0xdd, 0xb5, 0x83, 0x9e, 0x15, 0xaa, 0x07, 0x15, 0xb8, 0xd1, 0xf7, 0xe4,
		0x23, 0x30, 0x1d, 0xf8, 0x27, 0xed, 0x24, 0xec, 0x45, 0xbd, 0x3d, 0x51, 0xda, 0x7b, 0xa1, 0x4c,
		0xf6, 0x40, 0x09, 0xed, 0x7d, 0x92, 0x5c, 0xeb, 0x32, 0xda, 0xeb, 0x94, 0xce, 0x6a, 0x97, 0xd1,
		0xde, 0xa6, 0x74, 0x57, 0xd1, 0xb5, 0xf7, 0x30, 0xcd, 0xaf, 0x97, 0xed, 0x28, 0x2f, 0x72, 0xa3,
		0xef, 0x81, 0xba, 0xd5, 0x19, 0xf9, 0xa9, 0xff, 0xd6, 0xd8, 0xfe, 0x51, 0x6e, 0x4c, 0x1e, 0xfd,
		0xd9, 0x0e, 0x95, 0xf9, 0xe6, 0xc6, 0xe6, 0x79, 0xfd, 0xac, 0xd6, 0x3c, 0x3b, 0x6e, 0x7c, 0x69,
		0x57, 0x4f, 0xaa, 0x17, 0xa7, 0xed, 0xcb, 0xfa, 0x3f, 0xeb, 0x17, 0x8d, 0xd6, 0xaf, 0xba, 0x73,
		0x69, 0xb4, 0xd9, 0x25, 0x34, 0xda, 0x4e, 0x65, 0xb8, 0x05, 0x70, 0xfa, 0x6a, 0xb5, 0x8b, 0x46,
		0xab, 0x51, 0xab, 0x9e, 0x18, 0xec, 0xac, 0xfb, 0x69, 0xd3, 0xef, 0x70, 0x5a, 0xfd, 0x3f, 0xcd,
		0x8b, 0x5c, 0xbf, 0x40, 0xe3, 0x2c, 0xdf, 0x2f, 0x70, 0x75, 0xf6, 0xf7, 0xb3, 0xe6, 0x2f, 0x67,
		0x79, 0x7e, 0x85, 0x5f, 0xaa, 0x17, 0x67, 0x8d, 0xb3, 0x2f, 0xeb, 0xde, 0x61, 0x7a, 0x9d, 0x99,
		0x5d, 0x08, 0x09, 0x86, 0x60, 0x4a, 0x31, 0x91, 0x1d, 0x0d, 0x42, 0x63, 0x16, 0x1a, 0xb7, 0x02,
		0x09, 0x41, 0x42, 0x85, 0x25, 0xa1, 0xe4, 0x19, 0xba, 0x66, 0xa6, 0xbe, 0x0e, 0xb3, 0x8f, 0xee,
		0x03, 0x15, 0xde, 0xfb, 0xdd, 0x8e, 0xa9, 0xe5, 0xcf, 0x1b, 0xc2, 0xf8, 0x31, 0xfe, 0xc2, 0x1a,
		0xff, 0xc0, 0xf5, 0xa2, 0x77, 0x15, 0x03, 0xdb, 0x3f, 0xd4, 0xf8, 0xa8, 0xd9, 0x79, 0x0d, 0x83,
		0x83, 0x2b, 0x12, 0xe7, 0x33, 0xa4, 0xce, 0x65, 0x88, 0xef, 0xf8, 0x97, 0xdb, 0xe9, 0x6f, 0x00,
		0xbc, 0x22, 0xe7, 0x2e, 0x66, 0x5d, 0xbc, 0x5f, 0xf9, 0xb8, 0xff, 0xf1, 0xfd, 0x61, 0xe5, 0xe3,
		0x41, 0x71, 0xfb, 0x7a, 0x4d, 0xa7, 0x1a, 0xae, 0xb3, 0x10, 0xa2, 0x1f, 0xee, 0x0c, 0xc2, 0xf2,
		0xc3, 0xdd, 0x96, 0x85, 0xe2, 0xf1, 0x7e, 0x70, 0x02, 0xf2, 0x0b, 0x01, 0x79, 0xd2, 0x45, 0x85,
		0x0b, 0xcb, 0x1d, 0xe5, 0xb8, 0x3d, 0xbb, 0xab, 0x75, 0xb2, 0x72, 0x46, 0xe5, 0x15, 0x8d, 0xcf,
		0x3e, 0x73, 0x94, 0x7b, 0x5b, 0x1b, 0xdf, 0x3f, 0x56, 0x2a, 0xef, 0xde, 0x1d, 0x56, 0x76, 0xdf,
		0xbd, 0xff, 0x70, 0xb0, 0x7f, 0x78, 0x78, 0xf0, 0x61, 0xf7, 0x83, 0x74, 0x14, 0xda, 0x93, 0x8b,
		0x42, 0x43, 0xdb, 0xca, 0x7f, 0xc0, 0x7f, 0xde, 0xe7, 0x87, 0x19, 0xee, 0x73, 0x22, 0x7f, 0xdc,
		0x4e, 0x73, 0xbd, 0x30, 0xb2, 0x35, 0xf6, 0x99, 0xcf, 0x97, 0x6b, 0x26, 0x0d, 0x40, 0x00, 0x10,
		0x00, 0x04, 0x00, 0x01, 0x40, 0x00, 0x10, 0x00, 0x04, 0x90, 0x2b, 0x02, 0x88, 0x54, 0xf0, 0x60,
		0x77, 0x4d, 0x10, 0x60, 0xd2, 0xc2, 0x76, 0x30, 0x00, 0xa1, 0x7f, 0x55, 0xe8, 0x2f, 0x68, 0xc4,
		0x0f, 0x23, 0x3b, 0xb2, 0x34, 0x27, 0x79, 0xc9, 0xac, 0x92, 0x52, 0xf9, 0xca, 0x1b, 0xbb, 0xc6,
		0xb2, 0x67, 0x7b, 0x7e, 0xa8, 0x1c, 0xdf, 0xeb, 0x68, 0xcd, 0x3d, 0x94, 0x7d, 0x94, 0xfd, 0x58,
		0x5d, 0x2c, 0x5f, 0x49, 0x09, 0x8d, 0x3f, 0x13, 0x71, 0xbe, 0xa7, 0x31, 0x4b, 0x66, 0x2e, 0x70,
		0xf8, 0x61, 0x32, 0x7c, 0xc2, 0x3c, 0x19, 0x3e, 0x19, 0x3e, 0x19, 0x3e, 0x19, 0x3e, 0x19, 0x7e,
		0xbe, 0x22, 0xbf, 0x15, 0xb9, 0x3d, 0x65, 0x14, 0xfe, 0xc7, 0x2d, 0x90, 0xe1, 0x93, 0xe1, 0x17,
		0x30, 0xe2, 0x0f, 0xe7, 0x76, 0xe4, 0x3a, 0x7f, 0x84, 0x46, 0x31, 0x9f, 0xfc, 0x9e, 0xfc, 0x9e,
		0xfc, 0x9e, 0xfc, 0x7e, 0x43, 0x51, 0x5e, 0xc3, 0x10, 0xe7, 0x01, 0xde, 0xf5, 0xc8, 0xef, 0x09,
		0xf2, 0xe4, 0xf7, 0xe4, 0xf7, 0xe4, 0xf7, 0xe4, 0xf7, 0xe4, 0xf7, 0x39, 0x8b, 0xfc, 0xa6, 0xf9,
		0xfd, 0xb4, 0x05, 0xf2, 0x7b, 0xf2, 0x7b, 0xf2, 0x7b, 0xf2, 0x7b, 0xf2, 0x7b, 0xf2, 0x7b, 0xf2,
		0xfb, 0xf4, 0xa3, 0x7c, 0x01, 0xee, 0xf0, 0x48, 0x5e, 0x63, 0xaf, 0xf4, 0xd2, 0x55, 0x1e, 0xad,
		0x85, 0xe6, 0xd6, 0x59, 0x66, 0x30, 0x49, 0x8c, 0x99, 0xc7, 0x95, 0xe1, 0xa7, 0xa8, 0xe2, 0x49,
		0x61, 0x41, 0x43, 0xcb, 0xd5, 0xaf, 0xe2, 0x39, 0xf0, 0xe2, 0x97, 0x6f, 0x7e, 0xa4, 0x5f, 0x7c,
		0x4c, 0xf0, 0x99, 0xc9, 0xd7, 0x5b, 0xdb, 0x35, 0x5a, 0x45, 0x2c, 0x01, 0xf7, 0x73, 0xf5, 0xe2,
		0xe8, 0x97, 0xea, 0x45, 0xbd, 0x5d, 0x6b, 0x9e, 0x9e, 0x37, 0xcf, 0xea, 0x67, 0xad, 0xfc, 0x97,
		0x81, 0xfb, 0x5c, 0xad, 0xfd, 0xfd, 0xfc, 0xa4, 0x7a, 0x56, 0xcf, 0x73, 0x09, 0xaf, 0xda, 0xcf,
		0xd5, 0xcb, 0xcb, 0xc6, 0x65, 0xae, 0x5f, 0xa1, 0x79, 0xd6, 0xba, 0x68, 0x9e, 0x9c, 0xd4, 0x2f,
		0xda, 0xb5, 0xea, 0xc5, 0x51, 0xae, 0x5f, 0xe5, 0xfc, 0x2a, 0xcf, 0x5f, 0xff, 0xb8, 0xfa, 0xf9,
		0xa2, 0x51, 0xcb, 0xf7, 0x1b, 0xe4, 0xba, 0x20, 0xdf, 0xf1, 0x45, 0xae, 0xe7, 0xcf, 0xf3, 0xcb,
		0x08, 0xf3, 0xfc, 0x36, 0x27, 0x8d, 0xb3, 0x7a, 0xde, 0x1d, 0x52, 0xf3, 0x7c, 0x54, 0xe9, 0xb4,
		0x5d, 0xfb, 0xb9, 0x7a, 0x76, 0x56, 0xcf, 0x75, 0xc5, 0xd3, 0xf3, 0xe6, 0x45, 0x2b, 0xdf, 0xdf,
		0xff, 0x97, 0xfa, 0x45, 0xfb, 0xf2, 0xea, 0xfc, 0xfc, 0xe4, 0xd7, 0x3c, 0xbf, 0xc7, 0x65, 0xfd,
		0xec, 0x32, 0xdf, 0x95, 0x5b, 0x27, 0x57, 0xaa, 0xe6, 0xf9, 0x15, 0x5a, 0x17, 0xd5, 0xb3, 0xcb,
		0x5a, 0xbd, 0xf1, 0xcf, 0x7a, 0xae, 0x47, 0xe2, 0x97, 0xc6, 0x71, 0xa3, 0x5d, 0xad, 0xd5, 0xea,
		0x97, 0x97, 0xed, 0xf3, 0x66, 0xe3, 0xac, 0x55, 0xb8, 0x52, 0xb4, 0x3f, 0x91, 0x75, 0xea, 0x67,
		0x9d, 0x97, 0xcd, 0xe3, 0x56, 0xe1, 0xb2, 0xce, 0x46, 0x33, 0xd7, 0xd9, 0xda, 0xe7, 0x66, 0xb3,
		0xd5, 0x3e, 0x69, 0x56, 0x8f, 0xf2, 0xed, 0x79, 0x9a, 0xe7, 0xf5, 0x8b, 0x6a, 0xab, 0x71, 0xf6,
		0xa5, 0x7d, 0xf9, 0xeb, 0x65, 0xab, 0x7e, 0x5a, 0xa4, 0x77, 0x69, 0x5f, 0x9d, 0x1f, 0x55, 0x5b,
		0xb9, 0x8e, 0x6f, 0x33, 0xcb, 0x3f, 0x6d, 0x1e, 0x5d, 0x9d, 0xd4, 0xb7, 0xb7, 0x42, 0xf9, 0xf5,
		0x1a, 0x57, 0x11, 0x06, 0xa1, 0xea, 0x58, 0x7d, 0xff, 0xab, 0x0a, 0x92, 0xaf, 0x25, 0x2c, 0x7c,
		0x96, 0x15, 0x05, 0x56, 0x14, 0xcc, 0x1c, 0x8b, 0xc9, 0x8a, 0x42, 0xd2, 0xc2, 0xc3, 0x1a, 0x05,
		0x87, 0x35, 0xb7, 0x33, 0x68, 0xc0, 0x9d, 0xc9, 0xf6, 0x05, 0xd3, 0x6d, 0x0b, 0x62, 0x0b, 0xe7,
		0xe6, 0x0b, 0xe6, 0x1a, 0xf1, 0xc8, 0x68, 0x5b, 0x82, 0x58, 0xa1, 0xe0, 0x2c, 0xf5, 0x61, 0xd6,
		0x03, 0xd4, 0x1b, 0x83, 0x19, 0x50, 0xae, 0x0e, 0xee, 0x86, 0xee, 0x4b, 0x75, 0x62, 0x59, 0x65,
		0xc2, 0xd8, 0xb6, 0xb3, 0xe0, 0x11, 0x3f, 0x2d, 0xec, 0x25, 0x58, 0xfa, 0xe3, 0x47, 0x3f, 0x1d,
		0xed, 0x31, 0x88, 0x1b, 0x10, 0x8f, 0x54, 0xe8, 0x04, 0x6e, 0x7f, 0xb2, 0x03, 0xa2, 0x5c, 0xed,
		0x74, 0xc2, 0x52, 0xd8, 0x57, 0x8e, 0x7b, 0xeb, 0x3a, 0xa5, 0xd1, 0xed, 0x01, 0x61, 0x29, 0x50,
		0x5d, 0x3b, 0x52, 0x9d, 0x52, 0xe4, 0x97, 0xec, 0xd2, 0xec, 0x99, 0x6f, 0x0b, 0x72, 0x3d, 0xe0,
		0xf8, 0x25, 0xb7, 0x32, 0xe2, 0x4e, 0x5e, 0x3d, 0x2f, 0x57, 0x03, 0xaa, 0x3f, 0x07, 0x6e, 0x7f,
		0xf8, 0xf5, 0xad, 0x5b, 0xdb, 0xed, 0x26, 0xb9, 0xdd, 0xf2, 0xd9, 0xb8, 0x3f, 0x6f, 0x2a, 0x61,
		0x4f, 0x3e, 0xb1, 0x9b, 0xc6, 0xed, 0x78, 0x38, 0x4a, 0xd1, 0xbd, 0x2a, 0xdd, 0xdb, 0x41, 0xe7,
		0xab, 0x1d, 0xa8, 0x92, 0xeb, 0x75, 0x5c, 0xc7, 0x8e, 0x54, 0x58, 0x8a, 0xee, 0xed, 0x68, 0xf4,
		0xdf, 0x66, 0xe6, 0xf3, 0xb7, 0xb0, 0xd4, 0xbf, 0xff, 0x1e, 0xba, 0x8e, 0xdd, 0x2d, 0xcd, 0xbe,
		0xcd, 0xef, 0xde, 0xbd, 0x1d, 0x96, 0x86, 0x5f, 0x49, 0x75, 0x92, 0x7f, 0xa3, 0x5b, 0x7b, 0xd0,
		0x8d, 0xb4, 0xe4, 0x86, 0xf2, 0xc8, 0xbd, 0x27, 0x4b, 0x78, 0xae, 0xb7, 0x63, 0xe3, 0x73, 0x62,
		0xf7, 0x60, 0xea, 0x26, 0xc4, 0xdc, 0x85, 0x98, 0xdb, 0x90, 0x72, 0x1f, 0x6b, 0x51, 0x33, 0xb9,
		0x44, 0xe8, 0xb9, 0xbb, 0xec, 0xb9, 0x61, 0xcf, 0x8e, 0x9c, 0x7b, 0x09, 0x7f, 0x39, 0x6b, 0x6b,
		0xdd, 0x0e, 0xb3, 0xe4, 0x7a, 0xa1, 0x0a, 0x86, 0x1c, 0xe2, 0x7a, 0x91, 0x3f, 0xfc, 0x6f, 0xbf,
		0x7b, 0xf6, 0xed, 0xad, 0x72, 0x86, 0x3f, 0x5a, 0xea, 0x56, 0xbb, 0xbe, 0x33, 0xda, 0xda, 0x59,
		0x72, 0xc3, 0x92, 0x7f, 0x5b, 0xb2, 0x4b, 0x1d, 0xf7, 0xf6, 0x56, 0x05, 0xc3, 0xb6, 0xa2, 0xef,
		0x7d, 0x35, 0x7c, 0x86, 0x57, 0xfa, 0x7a, 0x6f, 0x47, 0xbf, 0x7b, 0x6e, 0x58, 0x1a, 0xef, 0xdf,
		0x1c, 0x04, 0x78, 0x5e, 0x3c, 0x2f, 0x9e, 0x17, 0xcf, 0xab, 0xc7, 0xbe, 0x86, 0x29, 0xe7, 0xf5,
		0x6b, 0x29, 0x67, 0xb2, 0xfd, 0xea, 0x66, 0xfb, 0xd4, 0x5f, 0x9e, 0x5f, 0xab, 0x5f, 0xe4, 0x85,
		0x79, 0x53, 0x0e, 0x23, 0x3f, 0xb0, 0xef, 0x5e, 0x9f, 0x26, 0x0b, 0x95, 0x44, 0xc7, 0x1f, 0x78,
		0xa5, 0x63, 0xe2, 0x25, 0x99, 0xb1, 0x7d, 0x5a, 0x12, 0x1f, 0xa6, 0x29, 0xe0, 0x26, 0xf5, 0x52,
		0xda, 0x5e, 0x49, 0xdb, 0x0b, 0xe9, 0x0b, 0xb4, 0x66, 0xba, 0x4a, 0xdc, 0xc4, 0xb0, 0xec, 0x4c,
		0x47, 0x33, 0xa1, 0xb6, 0x32, 0xf9, 0x5c, 0x31, 0xf4, 0x0b, 0xd6, 0x0c, 0x36, 0xb8, 0x66, 0xb0,
		0xfe, 0xf3, 0x43, 0x23, 0x6f, 0xb8, 0x33, 0x99, 0xc1, 0x6b, 0x5c, 0xa7, 0x1b, 0x47, 0x84, 0xc4,
		0xa6, 0x96, 0x48, 0x8c, 0xd4, 0xb5, 0xb4, 0x0a, 0x96, 0x86, 0xa5, 0xa5, 0x64, 0x69, 0x31, 0x48,
		0x68, 0x6d, 0xeb, 0x0d, 0x6b, 0x83, 0xbf, 0x38, 0xc8, 0x55, 0x7a, 0xe9, 0x48, 0xe2, 0xe5, 0xa4,
		0x89, 0x34, 0x08, 0x72, 0x70, 0x33, 0xff, 0xd6, 0x09, 0x38, 0xf2, 0xd1, 0xc7, 0xa0, 0x49, 0x68,
		0xf2, 0xa5, 0x89, 0xa5, 0x11, 0xe8, 0x16, 0x3f, 0x0d, 0x59, 0x12, 0xef, 0x0c, 0xe3, 0x5d, 0xe2,
		0xd5, 0xb1, 0x84, 0xc9, 0x90, 0x59, 0x52, 0xa4, 0x39, 0x85, 0x33, 0xa3, 0x2d, 0x72, 0x43, 0xbc,
		0xe8, 0xd4, 0x5f, 0x8f, 0xbe, 0x98, 0xd4, 0x24, 0x66, 0x1f, 0x9c, 0xf0, 0x89, 0xe1, 0x1e, 0xf1,
		0x51, 0x2b, 0x9a, 0x3d, 0xac, 0x27, 0xc1, 0x1b, 0x9b, 0x8b, 0x84, 0xd9, 0x08, 0x9b, 0x8f, 0x94,
		0x19, 0x89, 0x9b, 0x93, 0xb8, 0x59, 0xc9, 0x9b, 0x97, 0x9e, 0x99, 0x69, 0x9a, 0x9b, 0xb9, 0xac,
		0xff, 0x6c, 0xe6, 0x74, 0x95, 0x7d, 0xab, 0x77, 0x54, 0xe4, 0x59, 0xbc, 0x31, 0x28, 0xc3, 0x57,
		0x3e, 0x9f, 0x64, 0x44, 0x6f, 0xdf, 0xee, 0x2c, 0xfe, 0x6f, 0x9e, 0x00, 0x8d, 0x43, 0xe1, 0xce,
		0xc8, 0xe0, 0xd7, 0xda, 0xd5, 0x9a, 0x49, 0xee, 0xb3, 0x76, 0xbe, 0xdf, 0xf9, 0x91, 0xe5, 0x3b,
		0xd6, 0xf0, 0x95, 0x02, 0x15, 0x86, 0xaa, 0x63, 0x0d, 0xfb, 0x7e, 0xd8, 0xe8, 0xba, 0xea, 0xff,
		0xa4, 0x1b, 0x0a, 0x0c, 0x3b, 0x4a, 0x3f, 0x35, 0x5e, 0xcc, 0x22, 0x1f, 0xfd, 0x5b, 0x22, 0x49,
		0x2e, 0x79, 0x27, 0x25, 0x59, 0xf8, 0xd7, 0x0a, 0x77, 0x26, 0x61, 0x2e, 0xef, 0x85, 0x8d, 0xa1,
		0xc0, 0x1c, 0x51, 0xa0, 0xf9, 0x2a, 0xb3, 0x7e, 0x18, 0x32, 0x09, 0x3f, 0x8b, 0x61, 0x47, 0x3b,
		0xc0, 0xa4, 0xe3, 0x30, 0x92, 0x69, 0xfb, 0xcf, 0xa5, 0x8f, 0x04, 0x1a, 0xbf, 0x58, 0xe2, 0x58,
		0xc1, 0x65, 0xe0, 0x32, 0x48, 0x1c, 0x49, 0x1c, 0x49, 0x1c, 0x49, 0x1c, 0x8b, 0x93, 0x38, 0x92,
		0x67, 0xbd, 0x96, 0x67, 0x25, 0x58, 0x90, 0xd5, 0xa0, 0x26, 0x51, 0x0d, 0xff, 0xef, 0xea, 0x7b,
		0x42, 0xff, 0x5f, 0x3e, 0x71, 0xc3, 0xa8, 0x1a, 0x45, 0x09, 0xb5, 0xff, 0x53, 0xd7, 0xab, 0x77,
		0x55, 0x6f, 0xb2, 0x22, 0x9a, 0xc0, 0xd7, 0x97, 0x4f, 0xed, 0x6f, 0x0b, 0x9f, 0x34, 0xab, 0x84,
		0x5c, 0x6e, 0x06, 0x1d, 0x15, 0xa8, 0xce, 0xe7, 0xe1, 0x5b, 0x7b, 0x83, 0x6e, 0x57, 0xe7, 0xa3,
		0x57, 0xe1, 0xe8, 0x24, 0x78, 0xfc, 0xf3, 0x86, 0x99, 0xdd, 0x40, 0xb0, 0x72, 0x0a, 0x4b, 0xd4,
		0xfc, 0xbd, 0x5c, 0x6c, 0x6f, 0xbb, 0x76, 0x27, 0x3c, 0x5a, 0xc8, 0x4f, 0x61, 0x83, 0x41, 0x14,
		0xd8, 0x5e, 0xe8, 0x28, 0xf7, 0x21, 0x46, 0x49, 0x82, 0x79, 0x59, 0xe3, 0x85, 0x0f, 0xe5, 0x63,
		0x73, 0x41, 0xfc, 0x6f, 0x5c, 0xca, 0xe5, 0xfe, 0x82, 0xc5, 0xf7, 0x63, 0xc3, 0xaa, 0x60, 0x8e,
		0x60, 0xba, 0xad, 0x20, 0xd9, 0xc4, 0x33, 0xc5, 0xfe, 0xec, 0xed, 0x2c, 0x48, 0x34, 0x31, 0xd3,
		0x01, 0x93, 0xe4, 0x47, 0x6f, 0x3d, 0xfb, 0xa6, 0x3b, 0x3a, 0xe8, 0xae, 0x7b, 0x80, 0x6c, 0xd2,
		0xc0, 0x96, 0xdc, 0x96, 0xa3, 0x35, 0xc5, 0xb7, 0x47, 0x28, 0xd2, 0x32, 0x81, 0xbc, 0xc8, 0xcb,
		0xeb, 0x3f, 0xc4, 0xb4, 0xe6, 0xa4, 0x4e, 0x6c, 0x75, 0x31, 0xa5, 0x73, 0xaf, 0xd1, 0xbd, 0x0a,
		0x3c, 0x15, 0x59, 0xfd, 0x5e, 0xc7, 0xea, 0x07, 0x6a, 0x18, 0x3c, 0x0d, 0x1c, 0xd7, 0xb2, 0xd6,
		0xf0, 0x62, 0x78, 0xb1, 0x82, 0x7b, 0xb1, 0xc2, 0x94, 0xf6, 0xac, 0xb7, 0x7e, 0xae, 0x5f, 0x9c,
		0xd5, 0x5b, 0xed, 0xf3, 0xd3, 0xa3, 0x76, 0xeb, 0xd7, 0xf3, 0x7a, 0xfe, 0xcb, 0x79, 0xd6, 0x5b,
		0x3f, 0xb7, 0xf7, 0x76, 0x77, 0x77, 0x3f, 0x57, 0x2f, 0xeb, 0xed, 0x93, 0x7f, 0xed, 0xed, 0xe6,
		0xb9, 0xea, 0xe2, 0xe4, 0x65, 0xbe, 0x8c, 0x5e, 0xa6, 0x76, 0x72, 0xb1, 0x5f, 0x9c, 0x97, 0x29,
		0xd2, 0xbb, 0xfc, 0x72, 0x74, 0x5a, 0x9c, 0xb7, 0x39, 0xba, 0x28, 0xcc, 0xab, 0xd4, 0x0b, 0x34,
		0xc9, 0xea, 0x17, 0xfb, 0x27, 0x85, 0x79, 0x99, 0xe3, 0xe2, 0xcc, 0xb1, 0x22, 0x39, 0xe5, 0xf3,
		0xcb, 0x02, 0xf9, 0xb1, 0xcb, 0x8b, 0x02, 0xc5, 0xfe, 0xcb, 0x62, 0xcc, 0xb2, 0x76, 0xb5, 0x56,
		0x2b, 0xc6, 0x7b, 0x34, 0x0b, 0xf0, 0x1e, 0xd3, 0xc0, 0x52, 0x94, 0x37, 0x39, 0x29, 0xd0, 0x9b,
		0x9c, 0x16, 0xe5, 0x55, 0x2e, 0x0b, 0x33, 0x28, 0xff, 0x37, 0xf7, 0x6f, 0xb2, 0x3f, 0x67, 0xfc,
		0xfd, 0xc2, 0xbc, 0xcb, 0x71, 0x81, 0xde, 0xe5, 0xa4, 0x50, 0xef, 0xf2, 0xa1, 0x30, 0xef, 0x52,
		0x0c, 0xd3, 0x3f, 0xbd, 0xac, 0x16, 0x02, 0xf1, 0xf7, 0x8b, 0xa3, 0x21, 0xed, 0x17, 0x47, 0xa9,
		0xd8, 0x2f, 0x92, 0x0f, 0x2b, 0x4e, 0x3e, 0xbc, 0x5f, 0x9c, 0x0c, 0x72, 0xff, 0x5f, 0xc5, 0x21,
		0xfd, 0xf9, 0xbb, 0xe4, 0x1f, 0x90, 0xaf, 0xce, 0x8e, 0xea, 0xc7, 0x8d, 0xb3, 0xfa, 0xd1, 0x96,
		0x5f, 0x16, 0x58, 0xf4, 0xcd, 0x03, 0xb7, 0xca, 0xb1, 0x7a, 0x7e, 0xc7, 0xe0, 0x34, 0xdc, 0xac,
		0x05, 0x36, 0x09, 0xc4, 0x68, 0x89, 0x4d, 0x02, 0x9b, 0x33, 0x65, 0x36, 0x09, 0xcc, 0xef, 0x40,
		0xaf, 0xd7, 0xda, 0xa7, 0xcd, 0xa3, 0x7a, 0x41, 0x36, 0x08, 0x0c, 0x5f, 0xa7, 0x7a, 0xd5, 0x6a,
		0xe6, 0xfa, 0x5a, 0xfa, 0x7a, 0xad, 0x7d, 0xd4, 0xb8, 0xac, 0x7e, 0x3e, 0xa9, 0x1f, 0xe5, 0xfd,
		0x3d, 0xea, 0x67, 0xa6, 0xaf, 0x01, 0x3b, 0xe4, 0x80, 0x1d, 0xfc, 0xa0, 0x67, 0xdd, 0xda, 0x4e,
		0xe4, 0x07, 0xe6, 0xfb, 0x0e, 0x97, 0x35, 0x06, 0x51, 0x40, 0x14, 0x10, 0x45, 0x3e, 0x88, 0x62,
		0xe1, 0xb2, 0xfc, 0xf6, 0x71, 0xf3, 0xe2, 0xb4, 0x7d, 0x5c, 0xad, 0xb5, 0x9a, 0x17, 0x05, 0x01,
		0x8c, 0xda, 0xf1, 0x79, 0x9e, 0x63, 0x72, 0xed, 0xf8, 0xbc, 0x92, 0xf7, 0xef, 0xdf, 0xae, 0xd6,
		0x9a, 0x39, 0x7f, 0x87, 0x5c, 0xab, 0x75, 0xb5, 0xf3, 0xea, 0xdf, 0x73, 0xfd, 0xfd, 0x2f, 0xf3,
		0x6d, 0xc3, 0x47, 0x39, 0xff, 0xfe, 0x67, 0xcd, 0xb3, 0xf6, 0xf9, 0xc9, 0xd5, 0x97, 0x2f, 0xc3,
		0xd4, 0x20, 0xcf, 0x2f, 0xd2, 0xcc, 0xf9, 0x40, 0x34, 0x5b, 0x3f, 0xe7, 0x7b, 0x7f, 0xd0, 0x3f,
		0x72, 0x3e, 0x00, 0xc3, 0xef, 0x5f, 0xf9, 0x90, 0xff, 0x37, 0x68, 0x1f, 0x1d, 0xe5, 0xfd, 0x25,
		0x0e, 0xde, 0xe7, 0xff, 0x0d, 0x0a, 0x31, 0x0c, 0xed, 0xa3, 0xf1, 0x61, 0xa5, 0xbd, 0xe2, 0xbc,
		0x4a, 0x25, 0xef, 0xaf, 0x32, 0x0c, 0xd7, 0x97, 0x79, 0x7e, 0x89, 0x9c, 0xc7, 0x89, 0xdc, 0x87,
		0x89, 0xdc, 0x3b, 0xd8, 0xa1, 0x11, 0xe4, 0xdb, 0xbb, 0x16, 0xc1, 0x8c, 0xff, 0x95, 0x6b, 0x4f,
		0xfa, 0x2f, 0x23, 0x27, 0xc4, 0x3a, 0x48, 0xf6, 0xd7, 0x41, 0x7a, 0x7e, 0x67, 0xd0, 0x55, 0xd6,
		0xed, 0xc0, 0x73, 0x86, 0xef, 0x68, 0x77, 0xad, 0x48, 0x47, 0x17, 0x9e, 0xcd, 0x98, 0x15, 0xed,
		0xb1, 0x1a, 0x12, 0xa3, 0x25, 0x56, 0x43, 0x36, 0x67, 0xe6, 0xac, 0x86, 0x2c, 0x5d, 0x0d, 0x39,
		0x6d, 0x1e, 0x5d, 0x9d, 0xd4, 0xdb, 0xc7, 0x57, 0x67, 0xb5, 0x56, 0xa3, 0x79, 0x56, 0x3d, 0x29,
		0xc8, 0x9a, 0xc8, 0xf0, 0x2d, 0xda, 0x47, 0x8d, 0x2f, 0x8d, 0x56, 0xf5, 0xa4, 0x5d, 0x6b, 0xfe,
		0x5c, 0xbf, 0xa8, 0x9f, 0xb5, 0xda, 0xcd, 0xf3, 0x56, 0x23, 0xd7, 0xe7, 0xe8, 0x46, 0xaf, 0x75,
		0xd9, 0xaa, 0x9e, 0x1d, 0x55, 0x2f, 0x8e, 0x8c, 0x5f, 0x87, 0xf8, 0xbd, 0xa1, 0xf8, 0x9d, 0xeb,
		0x5a, 0xaa, 0x0b, 0x4e, 0x7e, 0x03, 0x57, 0x1f, 0xf7, 0xef, 0xbf, 0x87, 0xae, 0x63, 0x77, 0x2d,
		0xe7, 0xde, 0xf6, 0x3c, 0xd5, 0x0d, 0x93, 0x17, 0x70, 0x7c, 0xde, 0x04, 0xb5, 0x1c, 0xa9, 0xe5,
		0x28, 0x62, 0x8b, 0xc9, 0x2f, 0x8a, 0x1c, 0x4f, 0x41, 0x83, 0x9b, 0x22, 0x27, 0x0d, 0x6c, 0xc7,
		0x55, 0x91, 0x00, 0x78, 0x6e, 0x01, 0x5c, 0xfb, 0xde, 0x0f, 0xcd, 0xbb, 0x54, 0x9f, 0x5b, 0x8a,
		0xce, 0x9d, 0xaa, 0x86, 0x06, 0x63, 0x6c, 0x38, 0x12, 0x06, 0x24, 0x6f, 0x48, 0x52, 0x06, 0x25,
		0x6e, 0x58, 0xe2, 0x06, 0x96, 0x8a, 0xa1, 0x99, 0x01, 0xb8, 0xee, 0x0d, 0x20, 0xba, 0x06, 0x38,
		0x6b, 0xc0, 0x0e, 0x43, 0xdf, 0x71, 0xed, 0x48, 0x75, 0x2c, 0xbf, 0x1f, 0x2d, 0x12, 0x94, 0xf9,
		0x04, 0x98, 0x4e, 0xcd, 0x17, 0x9e, 0x61, 0x38, 0x80, 0x66, 0x97, 0xf7, 0x88, 0x19, 0xb2, 0xa4,
		0x41, 0xa7, 0x67, 0xd8, 0xd2, 0x06, 0x9e, 0x9a, 0xa1, 0xa7, 0x66, 0xf0, 0xa9, 0x1a, 0xbe, 0x99,
		0x03, 0x10, 0x90, 0x23, 0x4a, 0x22, 0x57, 0x02, 0x3d, 0x9b, 0x7f, 0xe6, 0x57, 0x03, 0x3d, 0x8b,
		0xb7, 0x87, 0x02, 0x6d, 0x9d, 0xcf, 0x72, 0xdc, 0xf9, 0xbd, 0x4d, 0x9f, 0x16, 0x72, 0xdb, 0xa5,
		0x3f, 0x7e, 0xf4, 0x53, 0xfd, 0x4b, 0x84, 0xa4, 0x06, 0x4b, 0xe8, 0x36, 0x5a, 0x79, 0xd9, 0x43,
		0x6e, 0x4e, 0x1b, 0x74, 0x51, 0xb9, 0xa3, 0x42, 0x27, 0x70, 0xfb, 0x22, 0xfd, 0x33, 0x9b, 0xce,
		0x8b, 0x8d, 0x12, 0x7d, 0x88, 0x3e, 0x44, 0x9f, 0x4c, 0x47, 0x9f, 0x30, 0x0a, 0x5c, 0xef, 0x4e,
		0x32, 0xf8, 0x7c, 0xc0, 0xe5, 0x67, 0xd7, 0xe5, 0xbb, 0x5e, 0x47, 0x7d, 0x93, 0x73, 0xf6, 0xe3,
		0xe6, 0x70, 0xf3, 0xb8, 0x79, 0xdc, 0x7c, 0xa6, 0xdd, 0xfc, 0xc0, 0xf5, 0xa2, 0xbd, 0xf7, 0x82,
		0x6e, 0xfe, 0xbd, 0x40, 0x53, 0x17, 0xb6, 0x77, 0xa7, 0x8c, 0x16, 0xbe, 0x17, 0xff, 0x92, 0xb1,
		0x83, 0xd2, 0xe4, 0x36, 0x4a, 0x31, 0xc3, 0x9a, 0x35, 0x3a, 0x5a, 0xe7, 0x37, 0x77, 0x4f, 0xcf,
		0xda, 0x3d, 0x0e, 0xec, 0xd1, 0xae, 0xa2, 0x23, 0xf7, 0xce, 0x4d, 0x7a, 0x7b, 0x66, 0xbc, 0x39,
		0xa4, 0xee, 0xec, 0xc8, 0x7d, 0x50, 0x89, 0x2e, 0xb5, 0x5c, 0x83, 0x99, 0x3c, 0x1e, 0x32, 0xfb,
		0x5b, 0x7a, 0x43, 0xf6, 0xfe, 0xe0, 0xe0, 0xdd, 0x01, 0xc3, 0x26, 0xe2, 0x1b, 0xe5, 0x5a, 0xb9,
		0x06, 0x34, 0xb3, 0x0b, 0x9a, 0x91, 0x1d, 0xdc, 0xa9, 0xc8, 0xf2, 0x07, 0x51, 0x7f, 0x10, 0x59,
		0x7d, 0xff, 0xab, 0x0a, 0xe4, 0xb0, 0x73, 0x59, 0xe3, 0x40, 0x28, 0x10, 0x0a, 0x84, 0x66, 0x1a,
		0x42, 0x3b, 0xca, 0x71, 0x7b, 0x76, 0xf7, 0xfd, 0xbe, 0xa4, 0xdc, 0x50, 0x11, 0x68, 0xeb, 0x59,
		0x2c, 0xae, 0x40, 0xb7, 0x9a, 0xa8, 0xf4, 0xb1, 0x52, 0x79, 0xf7, 0xee, 0xb0, 0xb2, 0xfb, 0xee,
		0xfd, 0x87, 0x83, 0xfd, 0xc3, 0xc3, 0x83, 0x0f, 0xbb, 0x1f, 0xd2, 0x06, 0xa7, 0x4a, 0x7a, 0xe0,
		0x34, 0x74, 0x14, 0xdb, 0x87, 0xbb, 0xcf, 0xc7, 0xf0, 0x30, 0xc7, 0x63, 0x08, 0xfc, 0xca, 0xc7,
		0x06, 0xf5, 0x2d, 0x0a, 0x6c, 0x6b, 0xe0, 0x85, 0x91, 0x7d, 0xd3, 0x15, 0x8a, 0x12, 0x5f, 0xef,
		0x95, 0x97, 0x45, 0x77, 0x39, 0x8d, 0x5e, 0x6f, 0xdf, 0xee, 0x8c, 0xff, 0x37, 0xde, 0x13, 0xb5,
		0xb3, 0xfc, 0x50, 0x4f, 0xe9, 0x7f, 0x4a, 0x7f, 0xf3, 0x1d, 0xcb, 0xef, 0x47, 0xa3, 0x7f, 0x0d,
		0x3f, 0x2d, 0xd9, 0x7d, 0xfe, 0xb7, 0xb2, 0xa0, 0x27, 0x10, 0x46, 0xb0, 0x65, 0x28, 0x36, 0x1a,
		0x19, 0x61, 0x03, 0x4d, 0x0b, 0xc8, 0x96, 0x82, 0x99, 0xe4, 0xd0, 0x65, 0x32, 0x1c, 0x1c, 0x09,
		0xae, 0xe4, 0xae, 0x34, 0x80, 0x5f, 0xee, 0x95, 0x57, 0x8a, 0xee, 0x55, 0x69, 0xba, 0x17, 0xbc,
		0x34, 0xd9, 0x65, 0x54, 0x72, 0xc3, 0x92, 0x7f, 0x5b, 0x5a, 0xd2, 0x5d, 0x3f, 0x0d, 0x7f, 0xff,
		0x77, 0x4f, 0x7d, 0x8b, 0x94, 0xd7, 0x51, 0x9d, 0xd2, 0xb8, 0xff, 0x4b, 0x5f, 0xdd, 0x6e, 0xb7,
		0x74, 0xa3, 0x4a, 0x83, 0x30, 0xf1, 0x85, 0xea, 0x9b, 0xb2, 0x87, 0xa7, 0x36, 0x21, 0xb7, 0xcc,
		0xbd, 0x11, 0xf3, 0x78, 0x66, 0x22, 0x29, 0x0d, 0xae, 0xe8, 0x97, 0xfe, 0x8b, 0x28, 0x8e, 0x84,
		0xb5, 0x46, 0x09, 0xeb, 0x9b, 0xd5, 0xb5, 0x43, 0x51, 0xdd, 0x6a, 0xda, 0x22, 0x62, 0x15, 0x62,
		0x15, 0x62, 0x55, 0xa6, 0xc5, 0xaa, 0x1b, 0xdf, 0xef, 0x2a, 0xdb, 0x93, 0x94, 0xaa, 0xf6, 0xf0,
		0xf6, 0x29, 0x7b, 0xfb, 0xb5, 0x9e, 0x0d, 0x10, 0xea, 0x50, 0x91, 0x33, 0xa5, 0xcf, 0x8e, 0x67,
		0xee, 0x4c, 0xfe, 0x90, 0xe8, 0xb4, 0xa9, 0x79, 0x7f, 0x6a, 0xf4, 0xa5, 0xe1, 0x9e, 0x24, 0x91,
		0xbd, 0x48, 0x86, 0x11, 0x95, 0x93, 0x4a, 0xeb, 0x8d, 0x94, 0x9c, 0x54, 0x4a, 0x21, 0x02, 0x0a,
		0x1e, 0x48, 0x90, 0x38, 0x88, 0x30, 0x3b, 0x80, 0x30, 0x97, 0x6d, 0xc6, 0x16, 0x9e, 0x61, 0x4f,
		0x16, 0x46, 0x76, 0x24, 0x50, 0x6b, 0x64, 0xdc, 0xcc, 0x86, 0xcf, 0x5c, 0x56, 0xf0, 0x64, 0x78,
		0xb2, 0x8d, 0x78, 0x32, 0xce, 0x5c, 0x92, 0xdc, 0x93, 0xdc, 0x93, 0xdc, 0xa7, 0x98, 0xdc, 0x73,
		0xe6, 0x32, 0x63, 0x5a, 0x2b, 0x47, 0x11, 0x71, 0xca, 0x38, 0xe5, 0xed, 0x76, 0xca, 0x99, 0x3b,
		0x8a, 0xc8, 0x09, 0x3d, 0xbc, 0x1f, 0xde, 0x0f, 0xef, 0xb7, 0x16, 0xef, 0xc7, 0x09, 0xbd, 0x24,
		0x5f, 0x8c, 0x13, 0x7a, 0x8f, 0xe6, 0x10, 0x27, 0xf4, 0x38, 0xa1, 0x27, 0xe6, 0x1b, 0xe5, 0x5a,
		0xb9, 0xce, 0x25, 0x7f, 0xa5, 0x70, 0x60, 0x6d, 0xb1, 0x51, 0x19, 0x16, 0xdb, 0x83, 0xc5, 0x60,
		0x31, 0x58, 0x4c, 0x62, 0xbd, 0x60, 0xd6, 0x90, 0xfd, 0x70, 0x27, 0x37, 0x43, 0x66, 0x0b, 0x05,
		0x0f, 0x77, 0x52, 0x73, 0x43, 0x26, 0x0d, 0x13, 0x77, 0x01, 0x69, 0xb8, 0x82, 0xa5, 0x2e, 0xe1,
		0x7b, 0x5f, 0x85, 0x39, 0x3b, 0x3a, 0x21, 0xea, 0x1c, 0x52, 0x77, 0x12, 0x2b, 0x9d, 0xc5, 0xa8,
		0xe7, 0xb3, 0x86, 0x27, 0x42, 0xb3, 0x56, 0x2c, 0x95, 0x7b, 0x36, 0x67, 0x25, 0xcf, 0xbb, 0x3e,
		0x8b, 0xff, 0x82, 0x27, 0xe6, 0x52, 0x3d, 0x8e, 0x27, 0x9c, 0x43, 0xca, 0xe7, 0x92, 0xa9, 0xe6,
		0x94, 0xcf, 0x12, 0x95, 0xd4, 0xcf, 0xc7, 0xae, 0x65, 0x50, 0x57, 0xa5, 0x31, 0xa2, 0xe7, 0x65,
		0x53, 0x48, 0x42, 0x53, 0x4d, 0x46, 0x63, 0x8c, 0xf5, 0x61, 0x81, 0xc6, 0x5a, 0x36, 0x65, 0x95,
		0x8d, 0x0d, 0xf2, 0xad, 0x5d, 0x67, 0x24, 0xa5, 0x16, 0x30, 0x86, 0xb2, 0xeb, 0x85, 0x91, 0x3d,
		0x0a, 0xee, 0xc2, 0xac, 0x3b, 0x6d, 0x18, 0xde, 0x85, 0x77, 0xe1, 0x5d, 0x78, 0x17, 0xde, 0x85,
		0x77, 0xe1, 0x5d, 0x78, 0x17, 0xde, 0x85, 0x77, 0x37, 0xca, 0xbb, 0x91, 0x0a, 0x1e, 0xec, 0x6e,
		0x1a, 0xc0, 0x3b, 0x69, 0x19, 0xe2, 0x85, 0x78, 0x21, 0xde, 0xad, 0x23, 0xde, 0x30, 0xb2, 0x23,
		0x4b, 0xd8, 0x09, 0x2c, 0x3a, 0x02, 0x41, 0x56, 0x2a, 0x5f, 0x79, 0xe3, 0x50, 0x59, 0xf6, 0x6c,
		0xcf, 0x0f, 0x95, 0xe3, 0x7b, 0x1d, 0x51, 0x5b, 0x83, 0x7b, 0x53, 0xdc, 0x43, 0xb4, 0x9a, 0x7c,
		0x76, 0x73, 0x4b, 0x3e, 0x79, 0xc5, 0xdc, 0xbd, 0x0f, 0xfb, 0xfb, 0xef, 0x0f, 0xf7, 0xf7, 0x77,
		0x0f, 0xdf, 0x1d, 0xee, 0x7e, 0x3c, 0x38, 0xd8, 0x7b, 0xbf, 0x77, 0xc0, 0x68, 0xc3, 0xb9, 0x1b,
		0xe7, 0xdc, 0x9e, 0xe0, 0xec, 0x9f, 0x85, 0xb8, 0x61, 0xa3, 0xd0, 0x2d, 0x74, 0x0b, 0xdd, 0x6e,
		0x1d, 0xdd, 0xa2, 0xe7, 0xc2, 0xb5, 0x4f, 0xe1, 0x07, 0x3d, 0x77, 0x7b, 0x40, 0x17, 0x3d, 0x17,
		0xce, 0xcd, 0x28, 0xe7, 0x5a, 0x91, 0xdb, 0x53, 0xa9, 0xc0, 0xee, 0xb8, 0x65, 0x88, 0x17, 0xe2,
		0x85, 0x78, 0xb7, 0x8e, 0x78, 0x87, 0xb6, 0x1f, 0xb9, 0xce, 0x1f, 0x61, 0x2a, 0xcc, 0x8b, 0x9a,
		0x8b, 0x9a, 0xfb, 0x0a, 0xf7, 0xa0, 0xe6, 0xae, 0x1b, 0x72, 0x51, 0x73, 0xa1, 0xdc, 0x6c, 0x52,
		0xae, 0xa0, 0x63, 0x9b, 0x03, 0xae, 0xeb, 0xc1, 0xb6, 0xb0, 0x2d, 0x6c, 0xbb, 0x7d, 0x6c, 0x8b,
		0x9a, 0x0b, 0xd7, 0x3e, 0x85, 0x1f, 0xd4, 0xdc, 0xed, 0x01, 0x5d, 0xd4, 0x5c, 0x38, 0x37, 0xa3,
		0x9c, 0x9b, 0x96, 0x9a, 0x3b, 0x6d, 0x19, 0xe2, 0x85, 0x78, 0x21, 0xde, 0xad, 0x23, 0x5e, 0xd4,
		0x5c, 0xa8, 0x77, 0x19, 0x09, 0xa1, 0xe6, 0x16, 0x16, 0x72, 0x51, 0x73, 0xa1, 0x5c, 0x79, 0xca,
		0xe5, 0xae, 0xf5, 0xf5, 0x84, 0x81, 0xe7, 0x77, 0xad, 0x8f, 0xae, 0x42, 0xe2, 0xaa, 0xf5, 0xfc,
		0xd0, 0xaa, 0xe0, 0xc8, 0x71, 0xd3, 0xba, 0xc1, 0x65, 0xdc, 0xa3, 0xee, 0xe7, 0xa2, 0xf5, 0x8d,
		0x1b, 0x47, 0x29, 0x85, 0x8b, 0xd6, 0x97, 0x8c, 0x2d, 0xf7, 0xac, 0xa7, 0x48, 0x12, 0x59, 0xbb,
		0x79, 0x37, 0xdd, 0x0b, 0x63, 0xc7, 0x8e, 0x5b, 0xae, 0x62, 0xf1, 0xf8, 0x2b, 0x47, 0xc1, 0xc0,
		0x89, 0xbc, 0x89, 0x7f, 0xab, 0x4d, 0xbf, 0x52, 0xbb, 0x35, 0xff, 0x4a, 0xed, 0xda, 0xf8, 0x0b,
		0xb4, 0x1b, 0xc3, 0x47, 0x9f, 0x8f, 0x9e, 0x9c, 0xc3, 0xfa, 0xd1, 0xa3, 0x0b, 0xde, 0x2d, 0xfb,
		0x4e, 0xc9, 0x55, 0x8f, 0x9e, 0x37, 0xc9, 0x3d, 0x1e, 0xb1, 0x84, 0x4a, 0x6a, 0x47, 0x53, 0x3b,
		0x7a, 0xcd, 0xe2, 0xe3, 0x6c, 0xfe, 0xf5, 0x55, 0xe0, 0x28, 0x2f, 0x32, 0xb7, 0xd6, 0x45, 0x8b,
		0x3d, 0xe0, 0x2e, 0x8f, 0x6c, 0x68, 0x7d, 0xdc, 0xe5, 0x51, 0x4a, 0xfd, 0x2e, 0x8f, 0xbd, 0x5d,
		0x06, 0x0d, 0x80, 0x4e, 0x5b, 0x02, 0x0b, 0xd4, 0xad, 0x0a, 0x94, 0xe7, 0xa8, 0x2c, 0xeb, 0x60,
		0xff, 0xb8, 0x3c, 0x3e, 0xb7, 0x8e, 0x8e, 0x4a, 0xb5, 0xd3, 0xc6, 0x65, 0xe9, 0xe0, 0xed, 0x6e,
		0xa9, 0x35, 0xec, 0x80, 0xd2, 0x07, 0x6b, 0xaf, 0x52, 0xc9, 0x99, 0xb2, 0x35, 0xef, 0xef, 0x3c,
		0xcb, 0x5b, 0x2f, 0x0e, 0x08, 0x56, 0x9f, 0x99, 0xfc, 0xeb, 0xc6, 0xb5, 0x43, 0xcb, 0x19, 0x04,
		0x81, 0x12, 0xa8, 0x73, 0xfc, 0x24, 0x11, 0x7b, 0xd4, 0x36, 0xb7, 0xf9, 0x90, 0x91, 0x91, 0x91,
		0x09, 0xc6, 0x7a, 0x6e, 0xf3, 0xd9, 0xac, 0x0b, 0x48, 0xc3, 0x15, 0x2c, 0x75, 0x09, 0xec, 0x26,
		0xdb, 0x04, 0xc0, 0xb0, 0x9b, 0x4c, 0x77, 0xce, 0x72, 0x7e, 0x82, 0x9d, 0x64, 0x4f, 0xa5, 0x0a,
		0xce, 0x4f, 0x6c, 0x52, 0x86, 0x4a, 0x55, 0x8e, 0x8a, 0x31, 0xd6, 0x9c, 0x9f, 0x58, 0x4f, 0x6c,
		0x90, 0x6f, 0x8d, 0xdb, 0x7c, 0x62, 0x04, 0x3c, 0x6e, 0xf3, 0x81, 0x77, 0xe1, 0x5d, 0x78, 0x17,
		0xde, 0x85, 0x77, 0xe1, 0x5d, 0x78, 0x17, 0xde, 0x85, 0x77, 0x33, 0xc1, 0xbb, 0xdc, 0xe6, 0x03,
		0xf1, 0x42, 0xbc, 0x10, 0xaf, 0xf4, 0x9c, 0xe5, 0x36, 0x1f, 0xb8, 0x77, 0x39, 0x0b, 0x71, 0x62,
		0xb8, 0xb0, 0x98, 0xcb, 0x89, 0x61, 0x38, 0x37, 0x93, 0x9c, 0xcb, 0x6d, 0x3e, 0xd0, 0x2d, 0x74,
		0x0b, 0xdd, 0x4a, 0xcd, 0x59, 0xf4, 0x5c, 0xb8, 0xf6, 0x29, 0xfc, 0xa0, 0xe7, 0x6e, 0x0f, 0xe8,
		0xa2, 0xe7, 0xc2, 0xb9, 0x19, 0xe5, 0x5c, 0x6e, 0xf3, 0x81, 0x78, 0x21, 0x5e, 0x88, 0x57, 0x78,
		0xce, 0x52, 0xff, 0x11, 0xea, 0x5d, 0x46, 0x42, 0xa8, 0xb9, 0x85, 0x85, 0x5c, 0xd4, 0x5c, 0x28,
		0x37, 0x9b, 0x94, 0xcb, 0x6d, 0x3e, 0xb0, 0x2d, 0x6c, 0x0b, 0xdb, 0x0a, 0xcd, 0x59, 0xd4, 0x5c,
		0xb8, 0xf6, 0x29, 0xfc, 0xa0, 0xe6, 0x6e, 0x0f, 0xe8, 0xa2, 0xe6, 0xc2, 0xb9, 0x19, 0xe5, 0x5c,
		0x6e, 0xf3, 0x81, 0x78, 0x21, 0x5e, 0x88, 0x57, 0x78, 0xce, 0xa2, 0xe6, 0x42, 0xbd, 0xcb, 0x48,
		0x08, 0x35, 0xb7, 0xb0, 0x90, 0x8b, 0x9a, 0x0b, 0xe5, 0xca, 0x53, 0x2e, 0xb7, 0xf9, 0xac, 0x27,
		0x0c, 0x70, 0x9b, 0x0f, 0xb7, 0xf9, 0x70, 0x9b, 0x0f, 0xb7, 0xf9, 0x70, 0x9b, 0x0f, 0xb7, 0xf9,
		0x88, 0xb6, 0xc2, 0x6d, 0x3e, 0x49, 0x6f, 0xf3, 0x11, 0x2f, 0x5c, 0x5c, 0x4a, 0x7a, 0xa9, 0xcf,
		0xc9, 0xf0, 0x1b, 0x7c, 0x76, 0xed, 0xb0, 0x36, 0x79, 0x7e, 0x6e, 0x4b, 0x4b, 0x47, 0xaa, 0xd7,
		0x57, 0x81, 0x1d, 0x0d, 0x02, 0xf1, 0x2b, 0x7e, 0x16, 0x9b, 0xa6, 0xb0, 0x74, 0x2c, 0x15, 0x93,
		0xc2, 0xd2, 0x14, 0x96, 0x8e, 0xc9, 0x7a, 0x14, 0x96, 0xde, 0xa8, 0x0b, 0x48, 0xc3, 0x15, 0x2c,
		0x73, 0x09, 0xd3, 0xa8, 0xc9, 0x0a, 0xc7, 0x66, 0x72, 0xc6, 0xe7, 0x43, 0xc0, 0x52, 0x47, 0xc2,
		0x59, 0x9c, 0xdf, 0xcd, 0x3d, 0x7b, 0x2c, 0x73, 0x08, 0x37, 0x9e, 0x81, 0xcd, 0x3d, 0x7b, 0x6c,
		0xee, 0x99, 0x8f, 0x75, 0xc1, 0x37, 0xf7, 0xec, 0xb1, 0xec, 0x51, 0x62, 0x73, 0xcf, 0x8a, 0x41,
		0xa4, 0xd4, 0x34, 0x04, 0x0c, 0x01, 0x43, 0xc0, 0x10, 0x30, 0x04, 0x0c, 0x01, 0x43, 0xc0, 0x10,
		0x30, 0x04, 0xbc, 0x6d, 0x04, 0x4c, 0xf1, 0x69, 0xb6, 0xb7, 0x83, 0xbe, 0x2f, 0xa0, 0x2f, 0xc4,
		0xab, 0x35, 0x67, 0x29, 0x3e, 0x0d, 0xf7, 0x2e, 0x67, 0x21, 0x36, 0xb8, 0x17, 0x16, 0x73, 0xd9,
		0xe0, 0x0e, 0xe7, 0x66, 0x92, 0x73, 0x29, 0x3e, 0x9d, 0x69, 0xba, 0x45, 0xe1, 0xdd, 0x38, 0xe6,
		0xa2, 0xf0, 0x9a, 0xcd, 0x62, 0x14, 0x5e, 0x48, 0xf7, 0x29, 0x0e, 0xa1, 0xf0, 0x6e, 0x0f, 0xfa,
		0xa2, 0xf0, 0x42, 0xbe, 0x19, 0x25, 0x5f, 0xca, 0x51, 0xe7, 0x81, 0x81, 0x41, 0xdf, 0x4d, 0xa1,
		0x2f, 0xc4, 0xab, 0x35, 0x67, 0x29, 0x60, 0x02, 0xf5, 0x2e, 0x23, 0x21, 0xf4, 0xdd, 0xc2, 0x42,
		0x2e, 0xfa, 0x2e, 0x94, 0x9b, 0x4d, 0xca, 0xa5, 0x1c, 0x75, 0x96, 0xd9, 0x16, 0x7d, 0x77, 0xe3,
		0x90, 0x8b, 0xbe, 0x6b, 0x36, 0x8b, 0xd1, 0x77, 0x21, 0xdd, 0xa7, 0x38, 0x84, 0xbe, 0xbb, 0x3d,
		0xe8, 0x8b, 0xbe, 0x0b, 0xf9, 0x66, 0x94, 0x7c, 0x29, 0x50, 0x9d, 0x07, 0x06, 0x06, 0x7d, 0x37,
		0x85, 0xbe, 0x10, 0xaf, 0xd6, 0x9c, 0x45, 0xdf, 0x85, 0x7a, 0x97, 0x91, 0x10, 0xfa, 0x6e, 0x61,
		0x21, 0x17, 0x7d, 0x17, 0xca, 0x95, 0xa7, 0xdc, 0xc2, 0x15, 0xa8, 0x0e, 0xd4, 0xad, 0x0a, 0x94,
		0xe7, 0xa8, 0x2c, 0x57, 0xa9, 0xfe, 0xc7, 0xe5, 0xf1, 0xb9, 0x75, 0x74, 0x54, 0xaa, 0x9d, 0x36,
		0x2e, 0x4b, 0x07, 0x6f, 0x77, 0x4b, 0xad, 0x61, 0x07, 0x94, 0x3e, 0x58, 0x7b, 0x95, 0x4a, 0xce,
		0x30, 0x74, 0xde, 0xdf, 0x79, 0x26, 0xd1, 0x17, 0x07, 0x84, 0xa2, 0xb6, 0xa2, 0x56, 0x9f, 0xdf,
		0xa2, 0xb6, 0x72, 0x35, 0x53, 0x4b, 0x5a, 0x35, 0x6d, 0x5b, 0x0b, 0xcf, 0xcf, 0x61, 0x4d, 0x5b,
		0x7f, 0x10, 0xf5, 0x07, 0x91, 0x75, 0x1b, 0xa8, 0x3f, 0x07, 0xca, 0x73, 0xbe, 0xcb, 0x95, 0xb4,
		0x7d, 0xd6, 0xb2, 0x4c, 0x45, 0xdb, 0x5d, 0x2a, 0xda, 0x6e, 0x30, 0xda, 0x50, 0xd1, 0x36, 0x43,
		0xa8, 0x26, 0x26, 0x65, 0xcc, 0xe6, 0xdf, 0xcc, 0x58, 0x47, 0x1a, 0x90, 0xc4, 0xfc, 0x93, 0x53,
		0x2f, 0xe6, 0xaa, 0xc5, 0xe9, 0xcf, 0xff, 0x96, 0xf8, 0x6a, 0xb2, 0x2a, 0x85, 0x20, 0x91, 0xa6,
		0xa1, 0x4a, 0xa4, 0xa5, 0x46, 0xa4, 0x9e, 0x97, 0xa6, 0x97, 0x8f, 0x4a, 0x5e, 0x24, 0x92, 0x86,
		0xda, 0xb0, 0x46, 0x95, 0x21, 0xcf, 0xa3, 0x08, 0xbf, 0x73, 0xad, 0x14, 0xd7, 0x4a, 0xe5, 0x2a,
		0xb3, 0xe7, 0x5a, 0x29, 0x81, 0xe9, 0xcf, 0xb5, 0x52, 0x5c, 0x2b, 0xc5, 0xb5, 0x52, 0xd9, 0x89,
		0xe0, 0x9b, 0x94, 0x6f, 0xfa, 0xfe, 0x57, 0x15, 0x88, 0x4b, 0x37, 0xe3, 0x56, 0xb9, 0x88, 0x08,
		0xd9, 0x06, 0xd9, 0x46, 0x90, 0xd5, 0xb9, 0x88, 0x68, 0xb3, 0x2e, 0x20, 0x0d, 0x57, 0xb0, 0xd4,
		0x25, 0xb0, 0x81, 0x6d, 0x13, 0xc9, 0x05, 0x1b, 0xd8, 0x74, 0xe7, 0x6c, 0x7e, 0x8f, 0x6c, 0x54,
		0xd8, 0xbc, 0x26, 0xdc, 0x78, 0x06, 0x8e, 0x6c, 0x54, 0x38, 0xb2, 0x31, 0x1f, 0xeb, 0x82, 0x1f,
		0xd9, 0xa8, 0xb0, 0x99, 0xad, 0xc4, 0x91, 0x8d, 0x15, 0x83, 0xc8, 0xb5, 0x43, 0xf0, 0x2e, 0xbc,
		0x0b, 0xef, 0xc2, 0xbb, 0xf0, 0x2e, 0xbc, 0x0b, 0xef, 0xc2, 0xbb, 0xf0, 0x6e, 0xb1, 0x79, 0x97,
		0x4b, 0x86, 0x20, 0x5e, 0x88, 0x17, 0xe2, 0x95, 0x9e, 0xb3, 0x5c, 0x32, 0x04, 0xf7, 0x2e, 0x67,
		0x21, 0x0e, 0x29, 0x17, 0x16, 0x73, 0x39, 0xa4, 0x0c, 0xe7, 0x66, 0x92, 0x73, 0xb9, 0x64, 0x08,
		0xba, 0x85, 0x6e, 0xa1, 0x5b, 0xa9, 0x39, 0x8b, 0x9e, 0x0b, 0xd7, 0x3e, 0x85, 0x1f, 0xf4, 0xdc,
		0xed, 0x01, 0x5d, 0xf4, 0x5c, 0x38, 0x37, 0xa3, 0x9c, 0xcb, 0x95, 0x42, 0x10, 0x2f, 0xc4, 0x0b,
		0xf1, 0x0a, 0xcf, 0x59, 0x4a, 0x4e, 0x42, 0xbd, 0xcb, 0x48, 0x08, 0x35, 0xb7, 0xb0, 0x90, 0x8b,
		0x9a, 0x0b, 0xe5, 0x66, 0x93, 0x72, 0xb9, 0x52, 0x08, 0xb6, 0x85, 0x6d, 0x61, 0x5b, 0xa1, 0x39,
		0x8b, 0x9a, 0x0b, 0xd7, 0x3e, 0x85, 0x1f, 0xd4, 0xdc, 0xed, 0x01, 0x5d, 0xd4, 0x5c, 0x38, 0x37,
		0xa3, 0x9c, 0xcb, 0x05, 0x42, 0x10, 0x2f, 0xc4, 0x0b, 0xf1, 0x0a, 0xcf, 0x59, 0xd4, 0x5c, 0xa8,
		0x77, 0x19, 0x09, 0xa1, 0xe6, 0x16, 0x16, 0x72, 0x51, 0x73, 0xa1, 0x5c, 0x79, 0xca, 0xa5, 0x14,
		0xf1, 0x7a, 0xc2, 0x00, 0xa5, 0x88, 0x29, 0x45, 0x4c, 0x29, 0x62, 0x4a, 0x11, 0x53, 0x8a, 0x98,
		0x52, 0xc4, 0xa2, 0xad, 0x70, 0x19, 0x58, 0xd2, 0xcb, 0xc0, 0x04, 0x4b, 0x16, 0x97, 0x92, 0xde,
		0x03, 0xd6, 0x1c, 0x3d, 0xfb, 0x7c, 0xf4, 0xe8, 0x1c, 0xd6, 0x90, 0x8e, 0xec, 0xe0, 0x4e, 0x2d,
		0x5c, 0xd4, 0x65, 0x75, 0xd4, 0x83, 0x2b, 0x33, 0xfc, 0x73, 0x69, 0x63, 0xf5, 0x33, 0xa8, 0x2f,
		0x1d, 0x4b, 0xcc, 0xa4, 0xbe, 0x34, 0xf5, 0xa5, 0x63, 0x22, 0x1f, 0xf5, 0xa5, 0x37, 0xea, 0x02,
		0xd2, 0x70, 0x05, 0xcb, 0x5c, 0xc2, 0x2c, 0x1d, 0x61, 0x8d, 0x63, 0x03, 0x6b, 0x1c, 0xf3, 0xde,
		0x67, 0x9d, 0x23, 0xe1, 0xdc, 0xcd, 0xef, 0xce, 0x9e, 0x3d, 0xd6, 0x38, 0x84, 0x1b, 0xcf, 0xc0,
		0xce, 0x9e, 0x3d, 0x76, 0xf6, 0xcc, 0xc7, 0xba, 0xe0, 0x3b, 0x7b, 0xf6, 0x58, 0xf3, 0x28, 0xb1,
		0xb3, 0x67, 0xc5, 0x20, 0x52, 0x67, 0x1a, 0xee, 0x85, 0x7b, 0xe1, 0x5e, 0xb8, 0x17, 0xee, 0x85,
		0x7b, 0xe1, 0x5e, 0xb8, 0x17, 0xee, 0xdd, 0x0e, 0xee, 0xa5, 0xde, 0x34, 0x3b, 0xda, 0xa1, 0xde,
		0x17, 0xa8, 0x17, 0xe2, 0xd5, 0x9a, 0xb3, 0xd4, 0x9b, 0x86, 0x7b, 0x97, 0xb3, 0x10, 0x7b, 0xda,
		0x0b, 0x8b, 0xb9, 0xec, 0x69, 0x87, 0x73, 0x33, 0xc9, 0xb9, 0xd4, 0x9b, 0xce, 0x34, 0xdd, 0xa2,
		0xeb, 0x6e, 0x92, 0x70, 0xd1, 0x75, 0xb5, 0xe7, 0x2e, 0xba, 0x2e, 0x7c, 0xfb, 0x14, 0x82, 0xd0,
		0x75, 0xb7, 0x07, 0x78, 0xd1, 0x75, 0xe1, 0xdd, 0x8c, 0xf2, 0x2e, 0x75, 0xa7, 0xf3, 0x40, 0xbe,
		0x50, 0xef, 0xa6, 0xa8, 0x17, 0xe2, 0xd5, 0x9a, 0xb3, 0x54, 0x2a, 0x81, 0x7a, 0x97, 0x91, 0x10,
		0xaa, 0x6e, 0x61, 0x21, 0x17, 0x55, 0x17, 0xca, 0xcd, 0x26, 0xe5, 0x52, 0x77, 0x3a, 0xcb, 0x6c,
		0x8b, 0xaa, 0xbb, 0x49, 0xbe, 0x45, 0xd5, 0xd5, 0x9e, 0xbb, 0xa8, 0xba, 0xf0, 0xed, 0x53, 0x08,
		0x42, 0xd5, 0xdd, 0x1e, 0xe0, 0x45, 0xd5, 0x85, 0x77, 0x33, 0xca, 0xbb, 0xd4, 0x9f, 0xce, 0x03,
		0xf9, 0x42, 0xbd, 0x9b, 0xa2, 0x5e, 0x88, 0x57, 0x6b, 0xce, 0xa2, 0xea, 0x42, 0xbd, 0xcb, 0x48,
		0x08, 0x55, 0xb7, 0xb0, 0x90, 0x8b, 0xaa, 0x0b, 0xe5, 0xca, 0x53, 0x6e, 0xe1, 0xea, 0x4f, 0x07,
		0xea, 0x56, 0x05, 0xca, 0x73, 0x54, 0x96, 0x8b, 0x50, 0xff, 0xe3, 0xf2, 0xf8, 0xdc, 0x3a, 0x3a,
		0x2a, 0xd5, 0x4e, 0x1b, 0x97, 0xa5, 0x83, 0xb7, 0xbb, 0xa5, 0x4b, 0x35, 0x32, 0xb8, 0x52, 0x6b,
		0xd8, 0x11, 0xa5, 0x0f, 0xd6, 0x5e, 0xa5, 0x92, 0x33, 0x1c, 0x9d, 0xf7, 0x7b, 0x9e, 0x89, 0x34,
		0xd6, 0xc0, 0x50, 0xc3, 0x56, 0xd4, 0x0b, 0xe4, 0xb1, 0x86, 0x6d, 0x6a, 0x45, 0x52, 0x4b, 0x49,
		0x2b, 0xda, 0xb6, 0x46, 0xdf, 0xe4, 0x78, 0xfa, 0x45, 0x8e, 0x66, 0xdf, 0x23, 0xbf, 0xe5, 0x6d,
		0x1f, 0x15, 0x08, 0x96, 0xae, 0x6b, 0x2b, 0x58, 0x7d, 0x58, 0x48, 0x35, 0xa1, 0xa0, 0x6d, 0x36,
		0x35, 0x11, 0x0a, 0xda, 0x6e, 0x50, 0xf1, 0x48, 0x65, 0x6d, 0x4f, 0x72, 0x4d, 0x2f, 0x95, 0xab,
		0x28, 0x85, 0xd5, 0x0c, 0x41, 0x72, 0x4d, 0x43, 0xbd, 0x58, 0xdf, 0x5a, 0x5d, 0xea, 0xf7, 0x86,
		0xa6, 0xb6, 0x36, 0x27, 0x79, 0xc1, 0x48, 0x1a, 0x32, 0xc5, 0xfa, 0xd6, 0xe0, 0xd6, 0x3a, 0x86,
		0xb2, 0x6a, 0x04, 0x9c, 0xbf, 0xf5, 0xb7, 0x4d, 0x8d, 0x33, 0x10, 0xae, 0x9b, 0xca, 0x8f, 0x14,
		0x20, 0x39, 0x74, 0xdc, 0x37, 0x65, 0x70, 0x27, 0xd1, 0xb8, 0xff, 0xb9, 0x70, 0x6a, 0xe3, 0xe6,
		0x51, 0x4a, 0xe1, 0xc2, 0xa9, 0x65, 0x83, 0xcb, 0x8d, 0x53, 0x69, 0x46, 0xf1, 0xcd, 0x28, 0x3b,
		0xca, 0xb1, 0x9c, 0x41, 0x10, 0x28, 0x81, 0x9a, 0xcd, 0x73, 0x45, 0x67, 0xa1, 0x51, 0xae, 0x26,
		0x42, 0xc9, 0x41, 0xc9, 0x11, 0xa4, 0x75, 0xae, 0x26, 0xda, 0xac, 0x0b, 0x48, 0xc3, 0x15, 0x2c,
		0x73, 0x09, 0x1c, 0xfa, 0xd8, 0x58, 0x86, 0xc1, 0xa1, 0x0f, 0x93, 0xb9, 0x9b, 0xdf, 0x43, 0x1f,
		0x15, 0xb6, 0xbf, 0x09, 0x37, 0x9e, 0x81, 0x43, 0x1f, 0x15, 0x0e, 0x7d, 0xcc, 0xc7, 0xba, 0xe0,
		0x87, 0x3e, 0x2a, 0x6c, 0x87, 0x2b, 0x71, 0xe8, 0x63, 0xc5, 0x20, 0x72, 0x35, 0x11, 0xdc, 0x0b,
		0xf7, 0xc2, 0xbd, 0x70, 0x2f, 0xdc, 0x0b, 0xf7, 0xc2, 0xbd, 0x70, 0x2f, 0xdc, 0xbb, 0x1d, 0xdc,
		0xcb, 0xd5, 0x44, 0x1c, 0x76, 0x86, 0x7a, 0x5f, 0xa0, 0x5e, 0x88, 0x57, 0x6b, 0xce, 0x72, 0x35,
		0x11, 0xdc, 0xbb, 0x9c, 0x85, 0x38, 0xee, 0x5c, 0x58, 0xcc, 0xe5, 0xb8, 0x33, 0x9c, 0x9b, 0x49,
		0xce, 0xe5, 0x6a, 0xa2, 0x4c, 0xd3, 0x2d, 0xba, 0xee, 0x26, 0x09, 0x17, 0x5d, 0x57, 0x7b, 0xee,
		0xa2, 0xeb, 0xc2, 0xb7, 0x4f, 0x21, 0x08, 0x5d, 0x77, 0x7b, 0x80, 0x17, 0x5d, 0x17, 0xde, 0xcd,
		0x28, 0xef, 0x72, 0x35, 0x51, 0x1e, 0xc8, 0x17, 0xea, 0xdd, 0x14, 0xf5, 0x42, 0xbc, 0x5a, 0x73,
		0x96, 0x22, 0x96, 0x50, 0xef, 0x32, 0x12, 0x42, 0xd5, 0x2d, 0x2c, 0xe4, 0xa2, 0xea, 0x42, 0xb9,
		0xd9, 0xa4, 0x5c, 0xae, 0x26, 0xca, 0x32, 0xdb, 0xa2, 0xea, 0x6e, 0x92, 0x6f, 0x51, 0x75, 0xb5,
		0xe7, 0x2e, 0xaa, 0x2e, 0x7c, 0xfb, 0x14, 0x82, 0x50, 0x75, 0xb7, 0x07, 0x78, 0x51, 0x75, 0xe1,
		0xdd, 0x8c, 0xf2, 0x2e, 0x57, 0x13, 0xe5, 0x81, 0x7c, 0xa1, 0xde, 0x4d, 0x51, 0x2f, 0xc4, 0xab,
		0x35, 0x67, 0x51, 0x75, 0xa1, 0xde, 0x65, 0x24, 0x84, 0xaa, 0x5b, 0x58, 0xc8, 0x45, 0xd5, 0x85,
		0x72, 0xe5, 0x29, 0x97, 0xab, 0x89, 0xd6, 0x18, 0x0b, 0x56, 0x5f, 0x4d, 0xc4, 0x95, 0x44, 0x9b,
		0x25, 0xd1, 0x17, 0x07, 0x84, 0xe2, 0xa6, 0xa2, 0x56, 0x9f, 0xcb, 0xab, 0x88, 0xc4, 0xaa, 0xa0,
		0x96, 0x12, 0xdf, 0x3d, 0xa4, 0x9c, 0xda, 0xe4, 0xc9, 0x79, 0xac, 0x49, 0xfb, 0xcd, 0xea, 0xda,
		0xa1, 0xe8, 0x15, 0x43, 0xd3, 0x16, 0xb9, 0x57, 0x28, 0x96, 0xb4, 0x41, 0x35, 0x5a, 0xaa, 0xd1,
		0xae, 0x59, 0xae, 0x98, 0xcd, 0xbf, 0x1b, 0xdf, 0xef, 0x2a, 0xdb, 0x93, 0xbc, 0x55, 0x68, 0x6f,
		0x53, 0x4e, 0xf0, 0xcd, 0x1a, 0x87, 0x44, 0x2a, 0x46, 0xae, 0x23, 0x36, 0xea, 0xcd, 0xfa, 0xe4,
		0xdd, 0x99, 0xec, 0x13, 0x09, 0x3b, 0x7e, 0xe8, 0x87, 0xc6, 0x55, 0x30, 0x3a, 0x2a, 0xa9, 0x0b,
		0x2a, 0x9f, 0xb8, 0x61, 0x54, 0x8d, 0x22, 0xbd, 0x18, 0x57, 0x3e, 0x75, 0xbd, 0x7a, 0x57, 0x0d,
		0x3d, 0x8a, 0x66, 0xa6, 0x5d, 0x3e, 0xb5, 0xbf, 0x2d, 0xb4, 0x20, 0xa3, 0x13, 0x94, 0x9b, 0x41,
		0x47, 0x05, 0xaa, 0xf3, 0x79, 0xd8, 0x2d, 0xde, 0xa0, 0xdb, 0x35, 0x69, 0xe2, 0x6a, 0x0c, 0x00,
		0xc9, 0x53, 0xfc, 0xa4, 0xa3, 0x68, 0x68, 0x36, 0xe9, 0x9a, 0x8b, 0x86, 0x17, 0x4c, 0x02, 0x8a,
		0xc9, 0xec, 0x30, 0xbe, 0x35, 0xc5, 0xfb, 0xcd, 0x98, 0x23, 0xa5, 0x3b, 0x42, 0xe9, 0x8c, 0x4c,
		0xbc, 0x2e, 0x7b, 0xbd, 0x03, 0x62, 0xbc, 0x7c, 0x79, 0xec, 0x2b, 0xe3, 0xbe, 0xf3, 0xa3, 0xb2,
		0x1c, 0x71, 0x53, 0xeb, 0x84, 0x17, 0x2c, 0xcc, 0xd1, 0x35, 0xe6, 0x22, 0xb6, 0x0e, 0xa2, 0x9a,
		0xa3, 0xa8, 0x2e, 0x72, 0x1a, 0xa3, 0xa5, 0x31, 0x42, 0x8a, 0xa0, 0xa2, 0xac, 0xf9, 0x25, 0xbd,
		0x70, 0xa0, 0xec, 0xf8, 0x9e, 0xa7, 0x9c, 0xc8, 0x0f, 0x46, 0x2b, 0x75, 0xc9, 0x07, 0x61, 0x3a,
		0xfc, 0x4f, 0xda, 0x49, 0x1a, 0x9d, 0xb5, 0x72, 0x35, 0xed, 0xdc, 0xcc, 0x24, 0x17, 0x93, 0xcb,
		0xbd, 0x4c, 0x73, 0x2d, 0xb1, 0xdc, 0x4a, 0x2c, 0x97, 0x12, 0xcd, 0x9d, 0xd2, 0xe5, 0x41, 0xed,
		0x5c, 0x68, 0x5e, 0x50, 0xad, 0xa3, 0xbc, 0xc8, 0x8d, 0xbe, 0x07, 0xea, 0x56, 0x67, 0xf0, 0xa7,
		0xbe, 0x5c, 0x87, 0xdd, 0x1a, 0x93, 0x47, 0x7f, 0xb6, 0x43, 0x83, 0xe9, 0x33, 0x7d, 0x91, 0xe3,
		0xc6, 0xe7, 0xfa, 0x45, 0xbb, 0xd6, 0x3c, 0x3b, 0xab, 0xd7, 0x5a, 0xcd, 0x8b, 0x76, 0xeb, 0xd7,
		0xf3, 0xba, 0xee, 0x4c, 0x1a, 0x2d, 0x66, 0x85, 0x46, 0xd2, 0xbc, 0x90, 0x8c, 0x54, 0x6d, 0xd6,
		0xe6, 0xef, 0x54, 0xde, 0x84, 0x36, 0x26, 0xf4, 0x22, 0x47, 0xd5, 0x82, 0xbc, 0xc8, 0x49, 0x41,
		0xde, 0xe3, 0xf4, 0xbc, 0x59, 0x8c, 0x17, 0xb9, 0x94, 0x19, 0x10, 0xad, 0x4f, 0x5e, 0xa7, 0x1d,
		0x0f, 0xde, 0xa4, 0x30, 0x0e, 0xe5, 0x8e, 0x1d, 0x29, 0xcb, 0xf1, 0x3b, 0x06, 0xa0, 0x34, 0x6f,
		0x02, 0x46, 0x82, 0x91, 0x0a, 0xce, 0x48, 0xa3, 0xc9, 0x6e, 0x7b, 0x1d, 0xdd, 0xbd, 0xac, 0x33,
		0x4a, 0xd2, 0xd8, 0xb1, 0x56, 0x3e, 0xb7, 0xa3, 0x48, 0x05, 0xfa, 0x37, 0x1b, 0x97, 0x7f, 0xdb,
		0xb5, 0x3e, 0x5e, 0xff, 0x67, 0xff, 0xaf, 0xdf, 0x7f, 0xb7, 0x7e, 0xd8, 0xfd, 0x6d, 0xcf, 0xfa,
		0x78, 0xfd, 0xdf, 0xbd, 0xdf, 0x76, 0xad, 0xca, 0xf5, 0x8f, 0x0b, 0x3f, 0xf9, 0x6d, 0xaf, 0x72,
		0x3d, 0xfa, 0xc5, 0xff, 0xbe, 0xfb, 0x6d, 0x77, 0xef, 0xfa, 0xc7, 0xdf, 0x5a, 0xd1, 0xf5, 0x0f,
		0xbb, 0xe3, 0x9f, 0xec, 0x8d, 0xff, 0x51, 0xf9, 0x6d, 0xd7, 0x7a, 0x77, 0xfd, 0xe3, 0xa7, 0xe9,
		0x8f, 0x7f, 0xdb, 0xb3, 0x0e, 0xc6, 0x9f, 0x59, 0xf6, 0xb3, 0xff, 0xbe, 0xdf, 0xfd, 0xf1, 0x87,
		0xdf, 0x7f, 0x7f, 0x3b, 0xfa, 0x97, 0xff, 0xfd, 0xe3, 0xff, 0xf7, 0xc3, 0x6f, 0xff, 0xf7, 0xdf,
		0xd7, 0xff, 0xfd, 0xe1, 0xb7, 0xff, 0x6d, 0x25, 0x68, 0xf7, 0xc7, 0x1f, 0x93, 0x4f, 0xa6, 0x6b,
		0x9d, 0x3e, 0x6e, 0x5e, 0x36, 0xfe, 0x65, 0xdc, 0xd1, 0xff, 0xef, 0x87, 0x5c, 0x77, 0xf5, 0x8f,
		0xff, 0x4b, 0xa3, 0xb3, 0x33, 0x10, 0xcd, 0x94, 0x67, 0xdf, 0x74, 0x55, 0x47, 0x3f, 0x96, 0x4d,
		0x1b, 0x20, 0x92, 0x11, 0xc9, 0x0a, 0x1e, 0xc9, 0xf4, 0x57, 0x3a, 0x35, 0x57, 0x36, 0x53, 0x32,
		0xf9, 0xe8, 0x5e, 0x05, 0x9e, 0x8a, 0xac, 0x7e, 0xcf, 0xc4, 0xee, 0x17, 0x5b, 0xc1, 0xf8, 0x31,
		0x7e, 0xa4, 0xbe, 0x7c, 0x48, 0x7d, 0xf5, 0xd6, 0xcf, 0xf5, 0x8b, 0xb3, 0x7a, 0xab, 0x7d, 0x7e,
		0x7a, 0x54, 0x10, 0x9d, 0xaf, 0xde, 0xfa, 0xb9, 0xbd, 0xb7, 0xbb, 0xbb, 0xfb, 0xb9, 0x7a, 0x59,
		0x6f, 0x9f, 0xfc, 0x6b, 0x6f, 0x37, 0xcf, 0x8a, 0xcc, 0xe4, 0x65, 0xbe, 0x8c, 0x5e, 0xa6, 0x76,
		0x72, 0xb1, 0x5f, 0x9c, 0x97, 0x29, 0xd2, 0xbb, 0xfc, 0x72, 0x74, 0x5a, 0x9c, 0xb7, 0x39, 0xba,
		0x28, 0xcc, 0xab, 0xd4, 0x0b, 0x34, 0xc9, 0xea, 0x17, 0xfb, 0x27, 0x85, 0x79, 0x99, 0xe3, 0xe2,
		0xcc, 0xb1, 0x22, 0x39, 0xe5, 0xf3, 0xcb, 0x02, 0xf9, 0xb1, 0xcb, 0x8b, 0x02, 0xc5, 0xfe, 0xcb,
		0x62, 0xcc, 0xb2, 0x76, 0xb5, 0x56, 0x2b, 0xc6, 0x7b, 0x34, 0x0b, 0xf0, 0x1e, 0xd3, 0xc0, 0x52,
		0x94, 0x37, 0x39, 0x29, 0xd0, 0x9b, 0x9c, 0x16, 0xe5, 0x55, 0x2e, 0x0b, 0x33, 0x28, 0xff, 0x37,
		0xf7, 0x6f, 0xb2, 0x3f, 0x67, 0xfc, 0xfd, 0xc2, 0xbc, 0xcb, 0x71, 0x81, 0xde, 0xe5, 0xa4, 0x50,
		0xef, 0xf2, 0xa1, 0x30, 0xef, 0x52, 0x0c, 0xd3, 0x3f, 0xbd, 0xac, 0x16, 0x02, 0xf1, 0xf7, 0x8b,
		0xa3, 0x21, 0xed, 0x17, 0x47, 0xa9, 0xd8, 0x2f, 0x92, 0x0f, 0x2b, 0x4e, 0x3e, 0xbc, 0x5f, 0x9c,
		0x0c, 0x72, 0xff, 0x5f, 0xc5, 0x21, 0xfd, 0xf9, 0xbb, 0xe4, 0x1f, 0x90, 0xaf, 0xce, 0x8e, 0xea,
		0xc7, 0x8d, 0xb3, 0xfa, 0x11, 0x9b, 0x46, 0xe3, 0x74, 0xdd, 0xe2, 0x6a, 0xb9, 0xd5, 0x0f, 0x94,
		0xe3, 0x7b, 0xb7, 0x32, 0x6b, 0xef, 0xb3, 0xd6, 0x58, 0x83, 0x8f, 0xd1, 0x12, 0x6b, 0xf0, 0x82,
		0x96, 0xc2, 0x1a, 0xbc, 0x81, 0x07, 0x65, 0x0d, 0x3e, 0xf3, 0x12, 0x10, 0x6b, 0xf0, 0x19, 0x7f,
		0x17, 0xd6, 0xe0, 0xb3, 0xf9, 0x2a, 0xac, 0xc1, 0x67, 0xf4, 0x65, 0x58, 0x83, 0xcf, 0xe4, 0xbb,
		0xb0, 0x06, 0x9f, 0xdd, 0x97, 0x61, 0x0d, 0x9e, 0x35, 0x78, 0xd6, 0xe0, 0x5f, 0x7c, 0x13, 0xd6,
		0xe0, 0x33, 0xf8, 0x2a, 0xac, 0xc1, 0x97, 0x58, 0x83, 0x4f, 0xf3, 0x5d, 0x58, 0x83, 0xcf, 0xea,
		0xbb, 0xb0, 0x06, 0x5f, 0x62, 0x0d, 0x3e, 0x95, 0x77, 0x61, 0x0d, 0x3e, 0xbb, 0xaf, 0xc2, 0x1a,
		0x7c, 0x26, 0xdf, 0x85, 0x35, 0xf8, 0x8c, 0xbe, 0x0b, 0x6b, 0xf0, 0x5b, 0xb6, 0x06, 0x7f, 0x6b,
		0x0f, 0xba, 0x91, 0xe5, 0xf8, 0x5e, 0xc7, 0xd5, 0xaa, 0x1e, 0x3c, 0xeb, 0xfb, 0xa7, 0x0d, 0xb1,
		0xf2, 0x1e, 0xa3, 0x25, 0x56, 0xde, 0x05, 0xed, 0x83, 0xd2, 0x17, 0x9a, 0x2e, 0x40, 0x39, 0x96,
		0xe3, 0x07, 0x81, 0x72, 0x22, 0xd5, 0xb1, 0x6e, 0xc6, 0x17, 0x9f, 0xe9, 0x7a, 0x81, 0xe7, 0x6d,
		0xe1, 0x08, 0x70, 0x04, 0x05, 0x77, 0x04, 0x8e, 0x3f, 0xf0, 0x22, 0x15, 0x68, 0x5d, 0x49, 0x6a,
		0x70, 0xf5, 0xa8, 0xe1, 0x15, 0xa0, 0x06, 0xb7, 0x6b, 0x48, 0x5c, 0xe9, 0x29, 0x75, 0x75, 0xa7,
		0xf8, 0xa5, 0x8d, 0x72, 0x97, 0x33, 0x9a, 0xdc, 0x1f, 0x25, 0x71, 0xb5, 0x66, 0x8a, 0x57, 0x68,
		0x66, 0xb9, 0xd7, 0xd7, 0x74, 0x2f, 0xcb, 0x75, 0xf6, 0x62, 0xf7, 0xf7, 0x48, 0xc9, 0x05, 0xef,
		0x51, 0x63, 0x44, 0x6f, 0xa2, 0x37, 0xd1, 0x9b, 0xe8, 0x4d, 0xf4, 0x26, 0x7a, 0x13, 0xbd, 0x53,
		0x88, 0xde, 0x3d, 0xa3, 0xa2, 0xe9, 0xb3, 0x16, 0x88, 0xd3, 0xc4, 0x69, 0x0e, 0xba, 0xc4, 0x91,
		0xdc, 0x32, 0x70, 0xaf, 0x4c, 0xbd, 0xd6, 0x3e, 0x6d, 0x1e, 0xd5, 0x0b, 0x72, 0xc8, 0x65, 0xf8,
		0x3a, 0xd5, 0xab, 0x56, 0x33, 0xcf, 0x2b, 0x47, 0xc3, 0x77, 0x38, 0x6a, 0x5c, 0x56, 0x3f, 0x9f,
		0x18, 0x2d, 0x1c, 0x65, 0xe2, 0x3d, 0xea, 0x67, 0xa6, 0xaf, 0xb1, 0x4d, 0xeb, 0x5f, 0xca, 0xb1,
		0xc2, 0xc8, 0x8e, 0x06, 0x86, 0x79, 0xf3, 0xa4, 0x0d, 0xc2, 0x30, 0x61, 0x98, 0x30, 0x9c, 0x9f,
		0x30, 0x7c, 0xd9, 0xaa, 0xb6, 0xae, 0x2e, 0x0b, 0x14, 0x88, 0x27, 0x2f, 0x74, 0xd2, 0xac, 0xfd,
		0x3d, 0xff, 0x91, 0x6c, 0xf2, 0x32, 0x57, 0x67, 0xc6, 0xaf, 0xb3, 0x65, 0x11, 0x6d, 0xe0, 0x4d,
		0x74, 0x5c, 0xfb, 0xa6, 0xab, 0xac, 0x9b, 0xae, 0xef, 0xfc, 0x61, 0x18, 0xdf, 0x96, 0xb6, 0x48,
		0xb4, 0x23, 0xda, 0x21, 0x0e, 0xbf, 0x3a, 0xe1, 0x11, 0x87, 0x0b, 0x28, 0x53, 0x22, 0x0e, 0x6f,
		0xa2, 0xd7, 0xb7, 0x4c, 0x1c, 0x7e, 0x1c, 0x75, 0x87, 0x61, 0x40, 0x34, 0x8c, 0x8f, 0x1b, 0x24,
		0x8a, 0x13, 0xc5, 0x89, 0xe2, 0x44, 0x71, 0xa2, 0x38, 0x51, 0x9c, 0x28, 0x2e, 0x1d, 0xc5, 0xfd,
		0xa0, 0x67, 0xdd, 0xda, 0x4e, 0xe4, 0x07, 0x06, 0x91, 0x7b, 0xa1, 0x11, 0xa2, 0x35, 0xd1, 0x1a,
		0x85, 0x39, 0xc6, 0x94, 0xcf, 0x80, 0xc2, 0xdc, 0xba, 0xa8, 0x9e, 0x5d, 0xd6, 0xea, 0x8d, 0x7f,
		0xd6, 0x2f, 0xda, 0xc7, 0xcd, 0x8b, 0xd3, 0xf6, 0x71, 0xb5, 0xd6, 0x6a, 0x5e, 0x14, 0x44, 0x6e,
		0xae, 0x1d, 0x9f, 0xe7, 0x59, 0x60, 0xae, 0x1d, 0x9f, 0x57, 0xf2, 0xfe, 0xfd, 0xdb, 0xd5, 0x5a,
		0x33, 0xe7, 0xef, 0x90, 0xeb, 0x83, 0xc0, 0xb5, 0xf3, 0xea, 0xdf, 0x73, 0xfd, 0xfd, 0x2f, 0xf3,
		0x6d, 0xc3, 0x47, 0x39, 0xff, 0xfe, 0x67, 0xcd, 0xb3, 0xf6, 0xf9, 0xc9, 0xd5, 0x97, 0x2f, 0xd5,
		0xcf, 0x27, 0xf5, 0x3c, 0xbf, 0x48, 0x33, 0xe7, 0x03, 0xd1, 0x6c, 0xfd, 0x9c, 0xef, 0xd2, 0x63,
		0xff, 0xc8, 0xf9, 0x00, 0x0c, 0xbf, 0x7f, 0xe5, 0x43, 0xfe, 0xdf, 0xa0, 0x7d, 0x74, 0x94, 0xf7,
		0x97, 0x38, 0x78, 0x9f, 0xff, 0x37, 0x28, 0xc4, 0x30, 0xb4, 0x8f, 0xc6, 0x75, 0xd0, 0xf7, 0x8a,
		0xf3, 0x2a, 0x95, 0xbc, 0xbf, 0xca, 0x30, 0x5c, 0x5f, 0xe6, 0xf9, 0x25, 0x72, 0x1e, 0x27, 0x72,
		0x1f, 0x26, 0x72, 0xef, 0x60, 0x87, 0x46, 0x90, 0x6f, 0xef, 0x5a, 0x04, 0x33, 0xfe, 0x57, 0xae,
		0x3d, 0xe9, 0xbf, 0x8c, 0x9c, 0xd0, 0x36, 0x6d, 0xe6, 0x9b, 0x2b, 0xff, 0xe6, 0x37, 0x24, 0x2d,
		0x6b, 0x8c, 0xe5, 0x84, 0x18, 0x2d, 0xb1, 0x9c, 0x20, 0x68, 0x27, 0x2c, 0x27, 0xe8, 0xbe, 0x08,
		0xcb, 0x09, 0x19, 0x0e, 0x69, 0x2c, 0x27, 0xb0, 0x9c, 0x60, 0xfc, 0xfd, 0x59, 0x4e, 0xd8, 0xe8,
		0xf7, 0x67, 0x39, 0x21, 0x23, 0x2f, 0xc2, 0x72, 0x42, 0x06, 0xa4, 0x2e, 0x96, 0x13, 0x36, 0xff,
		0x06, 0x2c, 0x27, 0x64, 0xe2, 0x0d, 0x58, 0x4e, 0xc8, 0xe6, 0xab, 0xb0, 0x9c, 0xc0, 0x72, 0x82,
		0xe9, 0xd7, 0x67, 0x39, 0x61, 0xd3, 0x2f, 0xc0, 0x72, 0x02, 0xcb, 0x09, 0x66, 0xdf, 0x9e, 0xe5,
		0x84, 0x78, 0x1d, 0xe6, 0x7a, 0xfd, 0x41, 0x64, 0xf5, 0xfd, 0xaf, 0xca, 0xe0, 0x34, 0xc2, 0x62,
		0x23, 0x7a, 0xcb, 0x07, 0x7b, 0x2c, 0x1f, 0x24, 0xea, 0x35, 0x96, 0x0f, 0x74, 0x9d, 0x4d, 0xf9,
		0xc8, 0x0d, 0xf4, 0x86, 0xdf, 0x7e, 0xb8, 0x33, 0x57, 0xec, 0x87, 0x8d, 0x68, 0x76, 0xb1, 0xde,
		0x4a, 0x9b, 0xb1, 0xc9, 0x48, 0x98, 0xce, 0x52, 0x13, 0xfa, 0xde, 0x4f, 0x5c, 0x4d, 0x5a, 0xd2,
		0x88, 0xc4, 0x8d, 0x49, 0xdc, 0xa8, 0x56, 0x1a, 0xd7, 0xa8, 0xe7, 0xd6, 0x7d, 0xd8, 0x4e, 0x73,
		0xd6, 0x68, 0xaf, 0xd6, 0x3d, 0x9b, 0x33, 0x1d, 0xe5, 0xb8, 0x3d, 0xbb, 0xab, 0x75, 0x64, 0xf7,
		0x59, 0xbc, 0xa9, 0x18, 0xb4, 0xf1, 0xec, 0x1c, 0xa5, 0x49, 0x63, 0x66, 0x07, 0x82, 0x65, 0xb0,
		0xa9, 0x24, 0x75, 0x40, 0x78, 0xd6, 0xd8, 0xf4, 0x14, 0xeb, 0xc7, 0x4a, 0xe5, 0xdd, 0xbb, 0xc3,
		0xca, 0xee, 0xbb, 0xf7, 0x1f, 0x0e, 0xf6, 0x0f, 0x0f, 0x0f, 0x3e, 0xec, 0x7e, 0xf8, 0x49, 0xe6,
		0x09, 0x92, 0x83, 0xf0, 0x78, 0xba, 0xcd, 0x0f, 0xb5, 0x0e, 0x4d, 0xd7, 0xb8, 0xd1, 0xbf, 0x7e,
		0x12, 0x18, 0x1b, 0x81, 0x93, 0xc5, 0x31, 0xc6, 0xe6, 0x30, 0x47, 0x63, 0x63, 0x76, 0xe0, 0xd8,
		0xcc, 0x17, 0x9a, 0x7f, 0xfa, 0x7a, 0x4d, 0x07, 0x9e, 0x35, 0x26, 0x5f, 0xd9, 0xf5, 0xc2, 0xc8,
		0x1e, 0x05, 0x1b, 0x43, 0xd6, 0x99, 0x36, 0x04, 0xef, 0xc0, 0x3b, 0xf0, 0x0e, 0xbc, 0x03, 0xef,
		0xc0, 0x3b, 0xf0, 0x0e, 0xbc, 0x93, 0x39, 0xde, 0x89, 0x54, 0xf0, 0x60, 0x77, 0x25, 0x80, 0x67,
		0xd2, 0x12, 0xc4, 0x03, 0xf1, 0x40, 0x3c, 0x89, 0xe7, 0x4c, 0x18, 0xd9, 0x91, 0x65, 0x68, 0x44,
		0x25, 0xb3, 0x02, 0x6d, 0xb3, 0x26, 0xae, 0xbc, 0xb1, 0x2b, 0x2f, 0x7b, 0xb6, 0xe7, 0x87, 0xca,
		0xf1, 0xbd, 0x8e, 0xd1, 0x5c, 0x2e, 0x36, 0xf7, 0xec, 0xa6, 0x15, 0x49, 0x77, 0x33, 0x1b, 0x49,
		0xb3, 0x8a, 0x39, 0xf2, 0x85, 0xe3, 0xf2, 0x38, 0x3a, 0x70, 0xce, 0xb3, 0x4e, 0xee, 0x19, 0xcc,
		0xb6, 0x99, 0x8b, 0x1e, 0x36, 0x02, 0xdd, 0x40, 0x37, 0xd0, 0x0d, 0x7a, 0x0e, 0x7a, 0x0e, 0x7a,
		0x0e, 0x7a, 0x0e, 0x9c, 0x93, 0x3d, 0xce, 0xb1, 0x22, 0xb7, 0xa7, 0x44, 0x60, 0x67, 0xdc, 0x12,
		0xc4, 0x03, 0xf1, 0x40, 0x3c, 0x89, 0xe7, 0xcc, 0xd0, 0x76, 0x22, 0xd7, 0xf9, 0x23, 0x14, 0x61,
		0x1e, 0xd4, 0x1c, 0xd4, 0x1c, 0xd4, 0x1c, 0xd4, 0x1c, 0x28, 0x67, 0x44, 0x39, 0x06, 0x86, 0x3f,
		0x07, 0x1c, 0xd7, 0x83, 0x6d, 0x60, 0x1b, 0xd8, 0x06, 0x35, 0x07, 0x35, 0x07, 0x35, 0x07, 0x35,
		0x07, 0xce, 0xc9, 0x20, 0xe7, 0x48, 0xa9, 0x39, 0xd3, 0x96, 0x20, 0x1e, 0x88, 0x07, 0xe2, 0x41,
		0xcd, 0x41, 0xcd, 0x41, 0xcd, 0x41, 0xcd, 0x81, 0x72, 0xa4, 0x29, 0x27, 0xd5, 0xe3, 0xeb, 0x55,
		0xcf, 0xf3, 0x23, 0x7b, 0x38, 0xd2, 0x7a, 0xa7, 0xd8, 0x43, 0xe7, 0x5e, 0xf5, 0xec, 0xbe, 0x1d,
		0xdd, 0x0f, 0x1d, 0xe8, 0x8e, 0xdf, 0x57, 0x9e, 0x33, 0x22, 0x13, 0xab, 0xdf, 0xb5, 0xa3, 0x5b,
		0x3f, 0xe8, 0xed, 0x38, 0x7e, 0xaf, 0xef, 0x7b, 0xca, 0x8b, 0xc2, 0xf9, 0x1f, 0x77, 0x16, 0x4e,
		0xf4, 0xef, 0x84, 0x91, 0x1d, 0xa9, 0x1d, 0xfd, 0xaa, 0x0f, 0xe3, 0x2f, 0x12, 0x05, 0x03, 0x27,
		0xf2, 0xa6, 0x85, 0x22, 0xa7, 0x0f, 0x6a, 0xb7, 0xe6, 0x0f, 0x6a, 0x37, 0x86, 0x8f, 0x38, 0x1f,
		0x3d, 0x21, 0x03, 0xb5, 0x32, 0xba, 0x76, 0xa8, 0x02, 0xeb, 0xc6, 0xb5, 0x43, 0xcb, 0x19, 0x04,
		0x81, 0xd2, 0x38, 0x23, 0x37, 0x0b, 0xa6, 0x4b, 0xda, 0xa2, 0x72, 0x46, 0xfa, 0xd0, 0x49, 0xe5,
		0x0c, 0x03, 0xd7, 0x43, 0xe5, 0x0c, 0x32, 0x37, 0x32, 0xb7, 0x1c, 0x66, 0x6e, 0x68, 0xd5, 0xf9,
		0xcb, 0xda, 0xd0, 0xaa, 0xd1, 0xaa, 0xd1, 0xaa, 0x37, 0x98, 0xc5, 0x51, 0x39, 0x03, 0xde, 0x81,
		0x77, 0xe0, 0x1d, 0x78, 0x07, 0xde, 0x81, 0x77, 0xe0, 0x1d, 0x78, 0x67, 0x09, 0xef, 0x50, 0x39,
		0x03, 0xe2, 0x81, 0x78, 0xa8, 0x9c, 0xb1, 0xd8, 0x04, 0xab, 0xf3, 0x49, 0x62, 0x2b, 0xab, 0xf3,
		0x99, 0xc1, 0x1c, 0x56, 0xe7, 0xe1, 0x9c, 0xa5, 0x9d, 0x4c, 0xe5, 0x0c, 0xe8, 0x06, 0xba, 0x41,
		0xcf, 0x41, 0xcf, 0x41, 0xcf, 0x41, 0xcf, 0x41, 0xcf, 0xa1, 0x72, 0x46, 0x0c, 0xd8, 0xe1, 0xac,
		0x05, 0xc4, 0x03, 0xf1, 0x68, 0xce, 0x19, 0xce, 0x5a, 0xa0, 0xe6, 0xa0, 0xe6, 0xa0, 0xe6, 0x40,
		0x39, 0x29, 0x50, 0x0e, 0x95, 0x33, 0x60, 0x1b, 0xd8, 0x06, 0x35, 0x07, 0x35, 0x07, 0x35, 0x07,
		0x35, 0x07, 0x35, 0x87, 0xca, 0x19, 0xaf, 0xc3, 0x0e, 0x6a, 0x0e, 0xc4, 0x03, 0xf1, 0xa0, 0xe6,
		0xa0, 0xe6, 0xa0, 0xe6, 0xa0, 0xe6, 0x40, 0x39, 0xe9, 0x50, 0xce, 0x96, 0x54, 0xce, 0x30, 0x2e,
		0xfe, 0x50, 0x8a, 0x5b, 0x40, 0xe3, 0x64, 0xf8, 0xa4, 0xcf, 0xae, 0x1d, 0xd6, 0x26, 0xcf, 0xc9,
		0x40, 0x19, 0x8d, 0x9e, 0xdf, 0x19, 0x74, 0x95, 0x75, 0x3b, 0xf0, 0x46, 0x66, 0x67, 0x77, 0x47,
		0x58, 0xa0, 0x5f, 0x4a, 0x63, 0x45, 0x7b, 0x7a, 0xe5, 0x34, 0x76, 0x29, 0xa7, 0xb1, 0x09, 0x02,
		0xdd, 0xc6, 0x72, 0x1a, 0xda, 0x7c, 0x39, 0x3f, 0x35, 0xd1, 0x51, 0x5e, 0xe4, 0x46, 0xdf, 0x03,
		0x75, 0xab, 0x33, 0xf8, 0x53, 0x0d, 0x4d, 0x23, 0x90, 0x96, 0x1b, 0x93, 0x47, 0x7f, 0xb6, 0x43,
		0x81, 0x04, 0xb3, 0x75, 0x51, 0x3d, 0xbb, 0xac, 0xd5, 0x1b, 0xff, 0xac, 0x5f, 0xb4, 0x4f, 0x9b,
		0x47, 0x57, 0x27, 0xf5, 0xf6, 0xf1, 0xd5, 0x59, 0xad, 0xd5, 0x68, 0x9e, 0x55, 0x4f, 0xda, 0xad,
		0x5f, 0xcf, 0xeb, 0xba, 0xf3, 0x6a, 0xc4, 0x0f, 0xa1, 0x11, 0xa1, 0x1a, 0x26, 0x69, 0xb3, 0x77,
		0xfc, 0xf5, 0xbc, 0xde, 0x3e, 0x6a, 0x7c, 0x69, 0xb4, 0xaa, 0x27, 0xed, 0x5a, 0xf3, 0xe7, 0xfa,
		0x45, 0xfd, 0xac, 0xd5, 0x6e, 0x9e, 0xb7, 0x1a, 0x35, 0x83, 0x8c, 0xe8, 0xa7, 0x4c, 0xbc, 0xd6,
		0x65, 0xab, 0x7a, 0x76, 0x54, 0xbd, 0x38, 0x32, 0x7e, 0x9d, 0x37, 0xeb, 0xc1, 0x93, 0xbf, 0x32,
		0x10, 0x06, 0xfd, 0xc8, 0xb3, 0x86, 0x90, 0xd0, 0x75, 0x6d, 0xcf, 0x51, 0x96, 0xe3, 0x77, 0x0c,
		0x62, 0xe0, 0xb2, 0xc6, 0x08, 0x80, 0x04, 0x40, 0x02, 0x60, 0x3e, 0x02, 0x60, 0xb3, 0x75, 0xd6,
		0xae, 0x9e, 0x9f, 0x9f, 0x34, 0x6a, 0xd5, 0x61, 0xd0, 0x6b, 0xd7, 0x9a, 0x47, 0x05, 0x08, 0x79,
		0xc3, 0xb7, 0xba, 0x3a, 0x3b, 0xaa, 0x1f, 0x37, 0xce, 0xea, 0x47, 0x79, 0x0e, 0x72, 0xe7, 0x7b,
		0x27, 0x7b, 0xed, 0xca, 0xd1, 0x5e, 0x01, 0xde, 0xa1, 0x92, 0xef, 0x77, 0xb8, 0x34, 0x7d, 0x87,
		0x6d, 0x22, 0x8c, 0x41, 0x34, 0xaf, 0xd0, 0xa9, 0x8f, 0x16, 0x8b, 0xad, 0x50, 0xa3, 0x12, 0xa6,
		0xa0, 0x46, 0xe5, 0xca, 0xb9, 0x43, 0x8d, 0x4a, 0xd6, 0x48, 0x8d, 0x8d, 0x8b, 0x5d, 0x61, 0xfa,
		0x83, 0xcd, 0xae, 0xb0, 0x15, 0x5f, 0x84, 0x5d, 0x61, 0x93, 0xe9, 0xc6, 0xae, 0xb0, 0x3c, 0x8c,
		0x0d, 0xeb, 0xa5, 0x29, 0x4d, 0x3e, 0x6a, 0x54, 0xc2, 0x3b, 0xf0, 0x0e, 0xbc, 0x03, 0xef, 0xc0,
		0x3b, 0xf0, 0x0e, 0xbc, 0xb3, 0x05, 0xbc, 0x43, 0x8d, 0x4a, 0x88, 0x07, 0xe2, 0xa1, 0x46, 0xe5,
		0x62, 0x13, 0xec, 0x83, 0x4f, 0x12, 0x5b, 0xd9, 0x07, 0x9f, 0x19, 0xcc, 0x61, 0x1f, 0x3c, 0x9c,
		0xb3, 0xb4, 0x93, 0xa9, 0x51, 0x09, 0xdd, 0x40, 0x37, 0xe8, 0x39, 0xe8, 0x39, 0xe8, 0x39, 0xe8,
		0x39, 0xe8, 0x39, 0xd4, 0xa8, 0x8c, 0x01, 0x3b, 0x54, 0x35, 0x80, 0x78, 0x20, 0x1e, 0xcd, 0x39,
		0x43, 0x55, 0x03, 0xd4, 0x1c, 0xd4, 0x1c, 0xd4, 0x1c, 0x28, 0x27, 0x05, 0xca, 0xa1, 0x46, 0x25,
		0x6c, 0x03, 0xdb, 0xa0, 0xe6, 0xa0, 0xe6, 0xa0, 0xe6, 0xa0, 0xe6, 0xa0, 0xe6, 0x50, 0xa3, 0xf2,
		0x75, 0xd8, 0x41, 0xcd, 0x81, 0x78, 0x20, 0x1e, 0xd4, 0x1c, 0xd4, 0x1c, 0xd4, 0x1c, 0xd4, 0x1c,
		0x28, 0x27, 0x1d, 0xca, 0xd9, 0x92, 0x1a, 0x95, 0x06, 0x65, 0x1f, 0x4a, 0x71, 0xab, 0x53, 0x36,
		0x47, 0xcf, 0x38, 0x1f, 0x3d, 0x22, 0x03, 0xf5, 0x32, 0xfa, 0x7e, 0x18, 0x59, 0xb7, 0xca, 0xb1,
		0x6e, 0x4c, 0xea, 0x65, 0x3c, 0x6a, 0x85, 0x7a, 0x19, 0xe9, 0xa3, 0x26, 0xf5, 0x32, 0x0c, 0x1c,
		0x0e, 0xf5, 0x32, 0xb2, 0x91, 0xaf, 0xf9, 0xfd, 0x88, 0x9c, 0x4d, 0xdb, 0xc0, 0xe6, 0xbd, 0x87,
		0x52, 0x6d, 0x60, 0x4c, 0xb2, 0x4a, 0xf5, 0xde, 0x07, 0x92, 0xb6, 0xd8, 0x72, 0x68, 0x6a, 0x52,
		0xf5, 0xde, 0x07, 0xb4, 0x6a, 0xd3, 0xc1, 0x39, 0xcc, 0xd3, 0xe0, 0x90, 0xc6, 0xa5, 0x34, 0xfb,
		0x28, 0x9d, 0x01, 0xfa, 0x80, 0x3e, 0xa0, 0x0f, 0xe8, 0x03, 0xfa, 0x80, 0x3e, 0xa0, 0xcf, 0x76,
		0xa1, 0x0f, 0x55, 0x34, 0x52, 0x81, 0x1f, 0xc0, 0x47, 0x17, 0x7c, 0xa8, 0xa2, 0x41, 0x15, 0x8d,
		0x5c, 0x91, 0x0f, 0x2b, 0xf5, 0x99, 0xe1, 0x1c, 0x56, 0xea, 0xe1, 0x9c, 0xa5, 0x9d, 0x4c, 0x15,
		0x0d, 0xa4, 0x1d, 0xa4, 0x1d, 0xa4, 0x1d, 0xa4, 0x1d, 0xa4, 0x1d, 0xa4, 0x1d, 0xa4, 0x9d, 0xed,
		0x40, 0x1e, 0x0a, 0x6a, 0x20, 0xed, 0x20, 0xed, 0x70, 0x04, 0x03, 0x61, 0x07, 0x61, 0x07, 0x61,
		0x07, 0x61, 0xa7, 0x88, 0x94, 0x43, 0x41, 0x0d, 0x84, 0x1d, 0x84, 0x1d, 0x84, 0x1d, 0x84, 0x1d,
		0x84, 0x1d, 0x84, 0x1d, 0x84, 0x9d, 0xad, 0x40, 0x1e, 0x6a, 0x6b, 0x20, 0xec, 0x20, 0xec, 0x20,
		0xec, 0x20, 0xec, 0x20, 0xec, 0x20, 0xec, 0x20, 0xec, 0x64, 0x9d, 0x72, 0xb6, 0xa4, 0xb6, 0x86,
		0x41, 0x89, 0x88, 0x52, 0xdc, 0xda, 0x1a, 0xe7, 0x7e, 0x18, 0x1d, 0x2b, 0xe7, 0x73, 0x46, 0x4a,
		0x6b, 0x04, 0x4a, 0xa0, 0xb2, 0xc6, 0x42, 0x23, 0x14, 0xd6, 0x48, 0x9f, 0x33, 0x29, 0xac, 0x61,
		0xe0, 0x6d, 0x28, 0xac, 0x81, 0x52, 0x9d, 0xff, 0x84, 0x0d, 0xa5, 0x1a, 0xa5, 0x3a, 0x4f, 0x19,
		0x1b, 0x4a, 0x35, 0x4a, 0x35, 0x4a, 0xf5, 0x46, 0x73, 0x38, 0x0a, 0x6b, 0x80, 0x3e, 0xa0, 0x0f,
		0xe8, 0x03, 0xfa, 0x80, 0x3e, 0xa0, 0x0f, 0xe8, 0x03, 0xfa, 0xbc, 0x8c, 0x3e, 0x14, 0xd6, 0x48,
		0x05, 0x7e, 0x00, 0x1f, 0x5d, 0xf0, 0xa1, 0xb0, 0x06, 0x85, 0x35, 0x72, 0x45, 0x3e, 0x2c, 0xd3,
		0x67, 0x86, 0x73, 0x58, 0xa6, 0x87, 0x73, 0x96, 0x76, 0x32, 0x85, 0x35, 0x90, 0x76, 0x90, 0x76,
		0x90, 0x76, 0x90, 0x76, 0x90, 0x76, 0x90, 0x76, 0x90, 0x76, 0xb6, 0x03, 0x79, 0x28, 0xac, 0x81,
		0xb4, 0x83, 0xb4, 0xc3, 0xf9, 0x0b, 0x84, 0x1d, 0x84, 0x1d, 0x84, 0x1d, 0x84, 0x9d, 0x22, 0x52,
		0x0e, 0x85, 0x35, 0x10, 0x76, 0x10, 0x76, 0x10, 0x76, 0x10, 0x76, 0x10, 0x76, 0x10, 0x76, 0x10,
		0x76, 0xb6, 0x02, 0x79, 0x28, 0xac, 0x81, 0xb0, 0x83, 0xb0, 0x83, 0xb0, 0x83, 0xb0, 0x83, 0xb0,
		0x83, 0xb0, 0x83, 0xb0, 0x93, 0x75, 0xca, 0xd9, 0x96, 0xc2, 0x1a, 0xda, 0x15, 0x22, 0x4a, 0xb1,
		0xeb, 0x6a, 0x04, 0x2a, 0x53, 0x65, 0x35, 0x42, 0xa5, 0x71, 0x70, 0x6e, 0xb1, 0xa4, 0xc6, 0xa8,
		0x01, 0xbd, 0x72, 0x1a, 0xbb, 0x94, 0xd3, 0xd8, 0x04, 0x55, 0x6e, 0x63, 0x39, 0x0d, 0x6d, 0x66,
		0x9c, 0x8d, 0xbf, 0xf2, 0x06, 0x3d, 0x15, 0x8c, 0xdd, 0x94, 0xc6, 0xe0, 0x4f, 0xa5, 0xb1, 0x7d,
		0x8d, 0xcf, 0xd6, 0xbd, 0x41, 0x4f, 0x7f, 0xda, 0xb4, 0xfc, 0xcb, 0x28, 0x70, 0xbd, 0x3b, 0x33,
		0x64, 0xde, 0x1d, 0xf6, 0xc1, 0xf9, 0x45, 0xfd, 0xb2, 0x7e, 0xd6, 0x32, 0x01, 0xd3, 0xbd, 0x61,
		0x3b, 0x67, 0xcd, 0x56, 0x7b, 0xda, 0xd6, 0x7a, 0x53, 0x07, 0xbf, 0x61, 0x70, 0x4e, 0x78, 0x3c,
		0x1f, 0x16, 0xbe, 0x7b, 0xe2, 0x8a, 0x40, 0x8f, 0xbd, 0xd2, 0xac, 0x95, 0xdd, 0x6c, 0xc6, 0xf1,
		0x54, 0x62, 0x4e, 0xa8, 0x02, 0xd7, 0xee, 0x5a, 0x9e, 0xaf, 0x1f, 0x75, 0xe6, 0x4d, 0x10, 0x77,
		0x88, 0x3b, 0x05, 0x8f, 0x3b, 0xe1, 0xd8, 0x79, 0x1b, 0x84, 0x1c, 0x0d, 0x5d, 0xa2, 0x7c, 0xa2,
		0xbc, 0xbb, 0x11, 0x4f, 0xeb, 0x09, 0x08, 0x06, 0xfe, 0x55, 0x42, 0x30, 0x98, 0x67, 0xa7, 0x86,
		0x32, 0x99, 0x74, 0x0a, 0x2a, 0x97, 0x7a, 0x1a, 0x08, 0x02, 0x22, 0x42, 0xc0, 0xbc, 0x8b, 0xdf,
		0x17, 0xb7, 0x8f, 0xd7, 0x14, 0x96, 0xaf, 0xb3, 0x10, 0x96, 0x7d, 0x4f, 0x45, 0x56, 0xd8, 0xb9,
		0xb7, 0x86, 0x09, 0x72, 0xd7, 0xb5, 0x3d, 0x47, 0x59, 0x8e, 0xdf, 0x51, 0x06, 0x61, 0x7a, 0x65,
		0x93, 0x84, 0x6d, 0xc2, 0x76, 0xc1, 0xc3, 0xb6, 0xdb, 0x51, 0x5e, 0xe4, 0x46, 0xdf, 0x03, 0x75,
		0x6b, 0x12, 0xbb, 0x35, 0xb4, 0xd4, 0x72, 0x63, 0xf2, 0xe8, 0xcf, 0x76, 0x28, 0xb0, 0xc6, 0x78,
		0xd9, 0x3c, 0xab, 0xb7, 0xda, 0xd5, 0xf3, 0xf3, 0x93, 0x46, 0xad, 0xda, 0x6a, 0x34, 0xcf, 0xda,
		0xb5, 0xe6, 0x51, 0x5d, 0x77, 0x2e, 0x8d, 0xa2, 0x46, 0x68, 0xb4, 0x30, 0x61, 0x18, 0xb7, 0x1e,
		0xbf, 0xd7, 0xd5, 0xd9, 0x51, 0xfd, 0xb8, 0x71, 0x56, 0x3f, 0x2a, 0x6f, 0x22, 0x12, 0x0b, 0xbd,
		0xca, 0x3f, 0x2f, 0x2f, 0x2a, 0xbb, 0xbb, 0xbb, 0xed, 0x77, 0x17, 0x95, 0x62, 0xbc, 0xc6, 0xbb,
		0x62, 0xbc, 0xc6, 0xc1, 0xba, 0x57, 0x54, 0xaf, 0xf3, 0xa9, 0x08, 0x0c, 0xfa, 0xfd, 0xee, 0x77,
		0xeb, 0xc1, 0xef, 0x46, 0xf6, 0x9d, 0x09, 0x6f, 0x3c, 0x6e, 0x87, 0x12, 0xcf, 0x40, 0x06, 0x25,
		0x9e, 0x57, 0xce, 0x1d, 0x4a, 0x3c, 0x4f, 0x4d, 0x68, 0xba, 0x4a, 0xc8, 0xfe, 0x21, 0x6d, 0x2b,
		0x7b, 0xd2, 0x85, 0xec, 0x9e, 0x36, 0x30, 0x2b, 0xd9, 0xdd, 0xd3, 0x15, 0x36, 0x11, 0xad, 0x10,
		0xae, 0xd6, 0xb8, 0x79, 0xba, 0xc2, 0xde, 0x69, 0xd3, 0xb1, 0x39, 0xcc, 0xd1, 0xd8, 0xb0, 0xa9,
		0x28, 0xa5, 0xc9, 0x47, 0xa5, 0x67, 0x08, 0x08, 0x02, 0x82, 0x80, 0x20, 0x20, 0x08, 0x08, 0x02,
		0x82, 0x80, 0xb6, 0x92, 0x80, 0x28, 0xf8, 0x9c, 0x0a, 0x03, 0x81, 0x3e, 0xba, 0xe8, 0x43, 0xc1,
		0x67, 0x0a, 0x3e, 0xe7, 0x8a, 0x7b, 0x38, 0x3e, 0x96, 0x19, 0xcc, 0xe1, 0xf8, 0x18, 0x9c, 0xb3,
		0xb4, 0x93, 0x29, 0xf8, 0x8c, 0xc2, 0x83, 0xc2, 0x83, 0xc2, 0x83, 0xc2, 0x83, 0xc2, 0x83, 0xc2,
		0x83, 0xc2, 0xb3, 0x55, 0xe4, 0x43, 0xdd, 0x67, 0x14, 0x1e, 0x14, 0x1e, 0xca, 0x03, 0xa1, 0xef,
		0xa0, 0xef, 0xa0, 0xef, 0xa0, 0xef, 0x14, 0x91, 0x72, 0xa8, 0xfb, 0x8c, 0xbe, 0x83, 0xbe, 0x83,
		0xbe, 0x83, 0xbe, 0x83, 0xbe, 0x83, 0xbe, 0x83, 0xbe, 0xb3, 0x4d, 0xe4, 0x43, 0xf9, 0x67, 0xf4,
		0x1d, 0xf4, 0x1d, 0xf4, 0x1d, 0xf4, 0x1d, 0xf4, 0x1d, 0xf4, 0x1d, 0xf4, 0x9d, 0xac, 0x53, 0xce,
		0x96, 0x94, 0x7f, 0x36, 0x2a, 0x20, 0x51, 0x8a, 0x5b, 0x01, 0xfa, 0x72, 0xf4, 0x94, 0x7f, 0x4e,
		0x1e, 0x92, 0x81, 0xfa, 0x1b, 0x0f, 0xca, 0xeb, 0xf8, 0x81, 0x7e, 0xdd, 0x8d, 0xc9, 0xe7, 0x29,
		0xea, 0x95, 0x3e, 0x62, 0x52, 0x6f, 0xc3, 0xc0, 0xd1, 0x50, 0x8b, 0x73, 0x13, 0xf4, 0x46, 0x2d,
		0xce, 0xd4, 0xa9, 0x8c, 0x5a, 0x9c, 0x72, 0x9f, 0xba, 0xce, 0x4c, 0x40, 0xb6, 0xfa, 0x76, 0x10,
		0x99, 0x46, 0xe5, 0x71, 0x23, 0x84, 0x66, 0x42, 0x33, 0xa1, 0x99, 0xd0, 0x4c, 0x68, 0x26, 0x34,
		0x13, 0x9a, 0x05, 0x42, 0x73, 0xa0, 0x1e, 0x8c, 0x23, 0xf3, 0xb0, 0x0d, 0x02, 0x33, 0x81, 0x99,
		0xc0, 0x4c, 0x60, 0x26, 0x30, 0x6f, 0x2c, 0x30, 0xef, 0x13, 0x97, 0xb3, 0x1a, 0x97, 0xdf, 0x08,
		0x4e, 0x24, 0xdd, 0x65, 0x06, 0xb9, 0xe5, 0x85, 0x78, 0xae, 0xfd, 0xf5, 0x97, 0x8e, 0xf1, 0xc2,
		0xe5, 0xe8, 0x3e, 0x50, 0xe1, 0xbd, 0xdf, 0xed, 0x84, 0xb1, 0x5f, 0x76, 0xbe, 0x2a, 0x3e, 0xff,
		0x6c, 0xcc, 0xae, 0x4d, 0x56, 0x3a, 0x3b, 0x31, 0x8e, 0xe8, 0x60, 0x88, 0x39, 0x7e, 0xe8, 0x62,
		0x87, 0x31, 0x6e, 0x18, 0x63, 0x86, 0x08, 0x5e, 0xc8, 0x1a, 0x5f, 0xd2, 0x52, 0xd7, 0xf3, 0x49,
		0xa8, 0x8f, 0xd9, 0xf3, 0x26, 0xd6, 0x5c, 0x09, 0xbe, 0x02, 0x65, 0x43, 0xd9, 0x89, 0xbe, 0xa9,
		0x76, 0x25, 0xf8, 0x50, 0x3d, 0xa8, 0xc0, 0x8d, 0xbe, 0x9b, 0xef, 0x25, 0x9c, 0xb5, 0xb4, 0xe1,
		0xbd, 0x84, 0x95, 0x8c, 0xec, 0x25, 0x34, 0x32, 0x26, 0x29, 0xa3, 0x12, 0x37, 0x2e, 0x71, 0x23,
		0x4b, 0xc5, 0xd8, 0x0c, 0x01, 0x76, 0xe3, 0xfb, 0x0a, 0xbb, 0xca, 0xbe, 0xd5, 0xbb, 0xf7, 0xe9,
		0x59, 0x0c, 0x3a, 0x34, 0xb9, 0x5f, 0x76, 0xc2, 0xac, 0x6f, 0xdf, 0x4e, 0xf7, 0xb7, 0x4c, 0x6d,
		0x3c, 0xc3, 0xbb, 0xa3, 0xc7, 0xa8, 0x6c, 0xee, 0xce, 0x46, 0xcd, 0x98, 0xf9, 0xb2, 0x3d, 0x7c,
		0x19, 0xbe, 0x2c, 0x9f, 0xbe, 0x4c, 0x17, 0x28, 0x66, 0x0d, 0xb8, 0x5e, 0x7f, 0x10, 0x59, 0x7d,
		0xff, 0xab, 0x0a, 0xac, 0xee, 0xf0, 0xef, 0xe6, 0xe3, 0x3e, 0xaf, 0x3b, 0xfa, 0xb4, 0x69, 0xc3,
		0xe1, 0x32, 0x43, 0x0f, 0xed, 0xb4, 0x34, 0x4d, 0xf3, 0x4d, 0xcf, 0x8c, 0xa5, 0xcd, 0x39, 0x35,
		0xb3, 0x4e, 0xcd, 0xbc, 0x53, 0x35, 0x73, 0x33, 0x73, 0x17, 0x10, 0x47, 0x65, 0x50, 0xe6, 0xd9,
		0xfc, 0x93, 0x38, 0x1c, 0xfa, 0x2c, 0xbe, 0x0a, 0x1c, 0x5b, 0x4b, 0xe5, 0x2c, 0x9c, 0xd0, 0xf1,
		0x89, 0xe9, 0x5f, 0x32, 0x06, 0x56, 0x92, 0x3e, 0x4e, 0x31, 0x6b, 0x34, 0xf5, 0xc3, 0xa4, 0xa9,
		0x0e, 0xd6, 0xe3, 0xe9, 0x2a, 0x7c, 0xb8, 0x54, 0xc8, 0x20, 0x1f, 0x8f, 0xa1, 0xe0, 0x39, 0x8c,
		0x18, 0x63, 0x78, 0x98, 0xe3, 0x31, 0x94, 0x39, 0x9e, 0x21, 0xe3, 0x93, 0xe5, 0x5a, 0xb9, 0xde,
		0xd0, 0x71, 0x11, 0x93, 0x25, 0xb7, 0x45, 0x68, 0x1b, 0xf4, 0xfb, 0x69, 0xf1, 0xe0, 0xb8, 0x69,
		0x78, 0x10, 0x1e, 0x84, 0x07, 0xe1, 0x41, 0x78, 0x10, 0x1e, 0x84, 0x07, 0xe1, 0x41, 0x78, 0x30,
		0x73, 0x3c, 0xd8, 0xb5, 0x43, 0x15, 0x58, 0x37, 0xae, 0x1d, 0x5a, 0xce, 0x20, 0x08, 0x94, 0x17,
		0x49, 0xcb, 0x84, 0x2b, 0x9f, 0x00, 0x1d, 0x42, 0x87, 0xd0, 0x21, 0x74, 0x08, 0x1d, 0x42, 0x87,
		0xd0, 0x21, 0x74, 0x08, 0x1d, 0xe6, 0x81, 0x0e, 0x85, 0x45, 0xc3, 0x95, 0x4f, 0x80, 0x0e, 0xa1,
		0x43, 0xe8, 0x10, 0x3a, 0x84, 0x0e, 0xa1, 0x43, 0xe8, 0x10, 0x3a, 0x84, 0x0e, 0x33, 0x4a, 0x87,
		0x91, 0xea, 0xf5, 0x55, 0x60, 0x47, 0x83, 0x40, 0xa5, 0x23, 0x1d, 0x3e, 0x7f, 0x00, 0x6c, 0x08,
		0x1b, 0xc2, 0x86, 0xb0, 0xa1, 0x48, 0xa8, 0xda, 0x83, 0x0d, 0xf3, 0xc3, 0x86, 0x7b, 0xb0, 0x61,
		0xee, 0xd9, 0x70, 0x0f, 0x36, 0xdc, 0x46, 0x36, 0x4c, 0x45, 0x38, 0x7c, 0xfe, 0x00, 0xd8, 0x10,
		0x36, 0x84, 0x0d, 0x61, 0x43, 0xd8, 0x10, 0x36, 0x84, 0x0d, 0x61, 0x43, 0xd8, 0x30, 0x73, 0x6c,
		0xd8, 0xf3, 0x3b, 0x83, 0xae, 0x4a, 0x53, 0x38, 0x5c, 0xf9, 0x04, 0xe8, 0x10, 0x3a, 0x84, 0x0e,
		0xa1, 0x43, 0xe8, 0x10, 0x3a, 0x84, 0x0e, 0xa1, 0x43, 0xe8, 0x30, 0x0f, 0x74, 0x28, 0x2c, 0x1d,
		0xae, 0x7c, 0x02, 0x74, 0x08, 0x1d, 0x42, 0x87, 0xd0, 0x21, 0x74, 0x08, 0x1d, 0x42, 0x87, 0xd0,
		0x21, 0x74, 0x98, 0x39, 0x3a, 0xf4, 0x07, 0x51, 0x6a, 0x05, 0x0d, 0x97, 0xb4, 0x0d, 0x11, 0x42,
		0x84, 0x10, 0x21, 0x44, 0x28, 0x12, 0xa0, 0x38, 0x85, 0x92, 0x23, 0x22, 0xe4, 0x14, 0x4a, 0xfe,
		0x89, 0x90, 0x53, 0x28, 0xdb, 0x46, 0x84, 0xc2, 0x4a, 0xe1, 0x92, 0xb6, 0x21, 0x42, 0x88, 0x10,
		0x22, 0x84, 0x08, 0x21, 0x42, 0x88, 0x10, 0x22, 0x84, 0x08, 0x21, 0xc2, 0xcc, 0x11, 0xa1, 0xf1,
		0x65, 0x6a, 0xcf, 0x22, 0x8a, 0xe1, 0xa5, 0x6a, 0xd0, 0x1f, 0xf4, 0x07, 0xfd, 0xad, 0x89, 0xfe,
		0xdc, 0x8e, 0xf2, 0x22, 0x37, 0xfa, 0x6e, 0x76, 0x71, 0xdb, 0x33, 0xfe, 0x3b, 0x10, 0x68, 0xab,
		0x31, 0xf9, 0x6a, 0x9f, 0xed, 0x50, 0x70, 0x3a, 0x4f, 0x5f, 0xbc, 0x79, 0x5e, 0x3f, 0xab, 0x35,
		0xcf, 0x8e, 0x1b, 0x5f, 0xda, 0xd5, 0x93, 0xea, 0xc5, 0x69, 0xfb, 0xb2, 0xfe, 0xcf, 0xfa, 0x45,
		0xa3, 0xf5, 0xab, 0xd4, 0xf4, 0x1e, 0xc5, 0xed, 0x50, 0x0c, 0x35, 0x65, 0x71, 0xf3, 0x51, 0x57,
		0xd4, 0x2e, 0x1a, 0xad, 0x46, 0xad, 0x7a, 0x52, 0xce, 0x22, 0x54, 0xa5, 0xf4, 0xce, 0xa7, 0xd5,
		0xff, 0xd3, 0xbc, 0xd8, 0xaa, 0x17, 0x6e, 0x9c, 0x6d, 0xd7, 0x0b, 0x5f, 0x9d, 0xfd, 0xfd, 0xac,
		0xf9, 0xcb, 0xd9, 0x36, 0xbd, 0xf2, 0x2f, 0xd5, 0x8b, 0xb3, 0xc6, 0xd9, 0x97, 0x72, 0xc6, 0xb8,
		0xfa, 0x7a, 0xd3, 0x51, 0x77, 0x33, 0x5c, 0x3d, 0xe8, 0xf7, 0xbb, 0xdf, 0xad, 0x07, 0xbf, 0x1b,
		0xd9, 0x77, 0xe2, 0x67, 0x76, 0x96, 0xb6, 0x0e, 0x6f, 0xc3, 0xdb, 0xf0, 0x76, 0xa6, 0x79, 0x1b,
		0xb5, 0x35, 0x0b, 0x51, 0x13, 0xb5, 0x35, 0xbe, 0x52, 0x87, 0xda, 0x8a, 0xda, 0x9a, 0x06, 0x15,
		0x6e, 0xa9, 0xda, 0xfa, 0x98, 0xdb, 0x84, 0x57, 0xe0, 0x97, 0xb6, 0x0e, 0x15, 0x42, 0x85, 0x50,
		0x21, 0x54, 0x08, 0x15, 0x42, 0x85, 0x50, 0x21, 0x54, 0x08, 0x15, 0xa6, 0x43, 0x85, 0x6f, 0xd6,
		0x38, 0xf5, 0xcb, 0x55, 0xcf, 0xf3, 0x23, 0x7b, 0x38, 0x53, 0x8c, 0x66, 0x7b, 0x39, 0x74, 0xee,
		0x55, 0xcf, 0xee, 0xdb, 0xd1, 0xfd, 0x30, 0x0e, 0xed, 0xf8, 0x7d, 0xe5, 0x39, 0x23, 0x52, 0xb3,
		0xfa, 0x5d, 0x3b, 0xba, 0xf5, 0x83, 0xde, 0x8e, 0xe3, 0xf7, 0xfa, 0xbe, 0xa7, 0xbc, 0x28, 0x9c,
		0xff, 0x71, 0x67, 0x21, 0x9c, 0xef, 0x44, 0xf7, 0x81, 0x0a, 0xef, 0xfd, 0x6e, 0x27, 0x9c, 0xff,
		0x71, 0x27, 0x8c, 0xec, 0x48, 0xe9, 0x45, 0xfa, 0xe4, 0x3d, 0x99, 0xec, 0x13, 0x09, 0xfb, 0x7c,
		0xc8, 0x5e, 0x06, 0xdb, 0x1a, 0xca, 0x27, 0x6e, 0x18, 0x55, 0xa3, 0xff, 0x9f, 0xbd, 0x77, 0xed,
		0x4d, 0x1c, 0x5b, 0xda, 0x86, 0xbf, 0xf7, 0xaf, 0xb0, 0xd0, 0x96, 0x76, 0xf2, 0xa8, 0xdd, 0x01,
		0x02, 0x24, 0x41, 0xba, 0xf5, 0x88, 0xce, 0x61, 0x06, 0xed, 0x9c, 0x94, 0xa4, 0x7b, 0xcf, 0xa8,
		0xc3, 0x44, 0x8e, 0xbd, 0x20, 0x7e, 0xda, 0xd8, 0xdc, 0xb6, 0x49, 0x27, 0x6f, 0x37, 0xff, 0xfd,
		0x95, 0x0d, 0x18, 0xc2, 0xa1, 0x83, 0xd7, 0xc9, 0x5e, 0xe6, 0xea, 0x0f, 0x33, 0x09, 0xc1, 0xcb,
		0xeb, 0x58, 0x75, 0x5d, 0x55, 0xb5, 0xaa, 0x42, 0x3a, 0x98, 0x1f, 0xe9, 0xa4, 0x53, 0x87, 0x44,
		0x40, 0x2a, 0xa0, 0x03, 0xcf, 0x91, 0x44, 0x9c, 0x6b, 0xa1, 0x72, 0x58, 0xab, 0x35, 0x0e, 0x6a,
		0xb5, 0xf2, 0xc1, 0xfe, 0x41, 0xf9, 0xa8, 0x5e, 0xaf, 0x34, 0x68, 0x9c, 0xb5, 0xa5, 0x2b, 0xdf,
		0x22, 0x3e, 0xb1, 0x3e, 0x47, 0x33, 0xe3, 0x0e, 0x1d, 0x87, 0xa5, 0x89, 0x2f, 0x41, 0xcc, 0x81,
		0xd2, 0x8b, 0xa3, 0xb4, 0x0b, 0xc9, 0x78, 0x68, 0x84, 0x1d, 0x16, 0x0a, 0xd4, 0x57, 0x0a, 0x42,
		0x7f, 0x68, 0x86, 0xee, 0xd4, 0x85, 0x3b, 0x7d, 0xd7, 0xc3, 0xdd, 0xec, 0x5d, 0x0f, 0x77, 0xc9,
		0x0b, 0x3e, 0x88, 0x39, 0x4d, 0x9b, 0x7d, 0x73, 0xc3, 0x65, 0xa2, 0x5d, 0x1e, 0xce, 0xcb, 0xb2,
		0xd9, 0x5c, 0xbd, 0x3f, 0xf2, 0xdf, 0x7f, 0xe3, 0x9d, 0x39, 0x49, 0x3b, 0x17, 0x3c, 0xe6, 0x60,
		0x83, 0x5d, 0xb8, 0xc9, 0xae, 0xfb, 0xfd, 0xfc, 0xad, 0x9f, 0x95, 0xd5, 0x7f, 0x59, 0x33, 0x4f,
		0x53, 0x99, 0x1c, 0xf7, 0x64, 0xcd, 0x57, 0x36, 0x92, 0xbb, 0x9b, 0xcb, 0x57, 0x26, 0x39, 0x9a,
		0x42, 0x5e, 0xa6, 0x90, 0x8b, 0xeb, 0x26, 0xa7, 0x35, 0xec, 0x45, 0xdd, 0x24, 0xd6, 0x6f, 0x49,
		0xd6, 0xef, 0x77, 0x55, 0xc2, 0x4d, 0xf7, 0x3c, 0x33, 0xd9, 0x43, 0xcd, 0xb9, 0x3d, 0xb4, 0xf2,
		0xe3, 0x77, 0xf6, 0x50, 0xe9, 0x84, 0x04, 0xa6, 0x6f, 0x0f, 0x26, 0xfb, 0xba, 0xd4, 0xb2, 0x2c,
		0xdb, 0xed, 0x69, 0xde, 0x20, 0xb4, 0x4d, 0xc3, 0xd1, 0xcc, 0x27, 0xc3, 0x75, 0x89, 0xa3, 0x59,
		0x46, 0x68, 0x68, 0xa1, 0xa7, 0x0d, 0x9e, 0x5e, 0x83, 0xf8, 0x0f, 0xb6, 0xfb, 0x4c, 0xdc, 0xd0,
		0xf3, 0x5f, 0x3f, 0x69, 0x77, 0x4f, 0x76, 0x70, 0xef, 0x1a, 0xe3, 0x11, 0xc6, 0x07, 0x44, 0xb3,
		0x03, 0xcd, 0x73, 0x9d, 0x57, 0xed, 0xd9, 0x70, 0x6c, 0x4b, 0xfb, 0xf1, 0x44, 0x5c, 0x2d, 0x7c,
		0x22, 0x5a, 0xf8, 0x3a, 0x20, 0x9a, 0xd7, 0x8d, 0x7f, 0x4e, 0x3a, 0x78, 0xef, 0xda, 0x81, 0x76,
		0x75, 0x1d, 0xc7, 0xbb, 0x3c, 0x1c, 0xff, 0xd9, 0xba, 0xbc, 0x3c, 0x3d, 0xff, 0xf4, 0x5e, 0xaf,
		0xa7, 0x8c, 0xfa, 0x9d, 0xaf, 0x6d, 0x6a, 0xe2, 0x4a, 0x63, 0xc2, 0x9a, 0x37, 0x51, 0x79, 0x83,
		0x50, 0x0f, 0x89, 0xdf, 0xdf, 0xe4, 0xa0, 0xa6, 0xb4, 0x3f, 0x51, 0xdb, 0x97, 0xa8, 0xed, 0x47,
		0x8b, 0xf6, 0xa1, 0x64, 0x70, 0x82, 0x05, 0xeb, 0x89, 0xbd, 0x19, 0x10, 0x2b, 0x4d, 0x36, 0xa5,
		0x3e, 0xd9, 0x94, 0x9b, 0x4f, 0x65, 0xb2, 0x62, 0x0b, 0x0d, 0x6c, 0x38, 0x2f, 0x0b, 0x47, 0xe4,
		0xd4, 0x35, 0x1d, 0x2f, 0x88, 0x4e, 0x89, 0xe9, 0xb9, 0xa1, 0x61, 0xbb, 0xc4, 0xd7, 0xba, 0x9e,
		0x1f, 0xef, 0x6a, 0xc7, 0x0e, 0xc2, 0x68, 0x87, 0x2f, 0x9c, 0x9f, 0x60, 0xd3, 0x57, 0x6d, 0xb6,
		0xaf, 0xa9, 0x4d, 0xb8, 0x34, 0xa6, 0x5a, 0xca, 0xfd, 0xce, 0x6a, 0x77, 0x65, 0xb6, 0xaf, 0x32,
		0xdb, 0x51, 0xe9, 0xcf, 0x43, 0x4a, 0x30, 0xc6, 0x7a, 0xbe, 0x3e, 0x50, 0x9c, 0xbc, 0xfc, 0xa8,
		0x9a, 0x39, 0xbc, 0xf3, 0xae, 0x9a, 0xd1, 0x82, 0xe1, 0x63, 0xe8, 0x13, 0xa2, 0x45, 0x1a, 0x67,
		0x63, 0x0d, 0x13, 0xa9, 0xa3, 0xbb, 0x9b, 0xd6, 0xe5, 0xed, 0xf1, 0x69, 0xfb, 0xeb, 0xe9, 0x8d,
		0x2a, 0xca, 0x25, 0x25, 0x10, 0x54, 0x4e, 0xbf, 0xa4, 0xf2, 0x3f, 0x48, 0x52, 0x31, 0xf3, 0x7d,
		0x4a, 0xad, 0x5e, 0xd2, 0x3b, 0xac, 0x16, 0x8f, 0xc4, 0x9d, 0x37, 0xd0, 0x1d, 0xf2, 0x4c, 0x9c,
		0x05, 0xd5, 0x62, 0x3a, 0x76, 0xb4, 0x8f, 0x07, 0x9e, 0x1f, 0x2e, 0x9d, 0x97, 0x82, 0xa8, 0x16,
		0x3a, 0x6f, 0x5f, 0x71, 0xb4, 0x0b, 0x95, 0x37, 0x2e, 0x73, 0x05, 0xb3, 0xf2, 0x2f, 0x9d, 0x75,
		0x24, 0x68, 0x33, 0x06, 0x4d, 0xcb, 0x9c, 0x7f, 0xb3, 0x82, 0xeb, 0x58, 0xf2, 0xea, 0x99, 0x5e,
		0x1e, 0xd5, 0xdb, 0x4f, 0x16, 0xa4, 0xcd, 0x7b, 0xe3, 0x4a, 0x37, 0x9e, 0xb7, 0x5d, 0x9a, 0xbd,
		0x78, 0xee, 0xa5, 0x25, 0x8b, 0x74, 0x6d, 0x97, 0x58, 0x7a, 0x40, 0x62, 0xe2, 0xfb, 0xf6, 0x95,
		0x73, 0x2e, 0xcc, 0xb9, 0x6f, 0x2d, 0x74, 0x79, 0xb5, 0x30, 0x58, 0x7b, 0xe8, 0x7f, 0x77, 0xb8,
		0xe7, 0x0f, 0xf1, 0x8a, 0x57, 0x6d, 0x72, 0x4a, 0x37, 0x3e, 0x8d, 0x1b, 0x9f, 0xba, 0xc5, 0xd3,
		0x15, 0x77, 0x2c, 0xe5, 0xb2, 0xae, 0x53, 0x1a, 0x25, 0x7b, 0xf0, 0x5c, 0xd3, 0xc7, 0xfd, 0x5c,
		0xbd, 0x04, 0x4b, 0x53, 0xb3, 0xf4, 0xc4, 0x3a, 0x1b, 0xca, 0x6f, 0x65, 0xf4, 0xbb, 0x32, 0x79,
		0x13, 0x19, 0xbc, 0xc1, 0x72, 0xa5, 0x15, 0xae, 0xa9, 0x85, 0x69, 0x6a, 0xe1, 0xb9, 0xd9, 0x72,
		0xd2, 0xd9, 0xad, 0xde, 0xc3, 0x06, 0x8b, 0x8b, 0xf7, 0xfe, 0x74, 0xac, 0x59, 0x75, 0x45, 0x60,
		0xe7, 0x3b, 0x9b, 0x42, 0x5d, 0xbc, 0xf9, 0xfb, 0x4d, 0x23, 0x19, 0x68, 0x9a, 0xd3, 0x55, 0x4c,
		0x89, 0x31, 0x27, 0xcf, 0x15, 0x03, 0xf3, 0x6d, 0xb8, 0xd5, 0x8a, 0x07, 0xf6, 0x36, 0xdb, 0x8a,
		0x62, 0x7c, 0x3a, 0x9b, 0x6e, 0xd1, 0x39, 0xb4, 0x31, 0xcf, 0x51, 0x52, 0x4e, 0xfd, 0x0c, 0x8c,
		0xcc, 0x1a, 0x49, 0xeb, 0xec, 0xa5, 0x0a, 0x77, 0xa4, 0x0e, 0x6f, 0x64, 0x09, 0x67, 0x64, 0xd8,
		0xdc, 0xac, 0x9b, 0x9c, 0xdb, 0x66, 0xe7, 0xb6, 0xe9, 0xf9, 0x6c, 0xfe, 0x74, 0x87, 0x20, 0xe5,
		0x61, 0x48, 0xba, 0x48, 0x1d, 0x40, 0x38, 0x0b, 0xf4, 0x0d, 0x7d, 0xdb, 0xed, 0xd1, 0x2c, 0xf8,
		0x54, 0x48, 0x1f, 0xe6, 0xda, 0xd3, 0xfe, 0xda, 0xf3, 0x42, 0xdd, 0x33, 0xf5, 0x88, 0xa9, 0xf8,
		0x24, 0x08, 0x88, 0xa5, 0x3b, 0xc4, 0xe8, 0x46, 0x8d, 0x8d, 0x44, 0xf9, 0xb2, 0x53, 0xa8, 0x86,
		0x09, 0xb5, 0xa3, 0x94, 0x4e, 0xbf, 0x71, 0x5a, 0x42, 0x2c, 0x41, 0x2c, 0x41, 0x2c, 0x41, 0x2c,
		0xd1, 0x89, 0xa5, 0x01, 0xdd, 0xa1, 0x4d, 0x96, 0x8f, 0x0e, 0xae, 0x42, 0x34, 0x41, 0x34, 0xe5,
		0x5f, 0x34, 0xcd, 0x99, 0x47, 0x98, 0xe4, 0x13, 0xc5, 0xb3, 0xd7, 0x46, 0x18, 0x12, 0xdf, 0xa5,
		0xbe, 0xf1, 0x50, 0xda, 0xf9, 0x56, 0xd6, 0x8f, 0x3a, 0xbf, 0xbe, 0x55, 0xf4, 0xa3, 0xce, 0xf8,
		0xc7, 0x4a, 0xfc, 0xbf, 0x9f, 0xd5, 0xd1, 0xaf, 0xea, 0xb7, 0xb2, 0x5e, 0x9b, 0x7c, 0x5a, 0xad,
		0x7f, 0x2b, 0xeb, 0xf5, 0xce, 0xee, 0xce, 0xfd, 0xfd, 0xa7, 0xb4, 0xcf, 0xec, 0xfe, 0xdc, 0x1f,
		0xed, 0x25, 0x0f, 0x55, 0x27, 0x7f, 0xdd, 0xff, 0x56, 0xd6, 0xab, 0x9d, 0xdd, 0xf4, 0xdb, 0xa1,
		0x43, 0x33, 0x4f, 0x57, 0xb7, 0xed, 0xbf, 0x98, 0x27, 0xeb, 0x9f, 0x9d, 0xcc, 0xa7, 0x6b, 0xf7,
		0x5f, 0x14, 0x13, 0x26, 0xf4, 0xfc, 0x20, 0x06, 0xf9, 0x9d, 0x26, 0x94, 0x89, 0x41, 0xce, 0x02,
		0x82, 0xe4, 0x3c, 0xca, 0x77, 0xde, 0xf5, 0xb4, 0xf7, 0xe6, 0x97, 0x45, 0x4f, 0xc8, 0xe2, 0x07,
		0x7b, 0x13, 0x03, 0x27, 0x2f, 0xc7, 0xe6, 0x06, 0x86, 0xec, 0x54, 0xd4, 0x91, 0x86, 0x32, 0xa6,
		0xc4, 0x63, 0x30, 0xc3, 0x6e, 0x83, 0x19, 0x36, 0x35, 0x7e, 0x4a, 0x56, 0x2c, 0x12, 0x2e, 0xe9,
		0x92, 0x03, 0x26, 0x58, 0x29, 0xc5, 0xdd, 0xb8, 0x08, 0x23, 0xc5, 0xe7, 0xfa, 0xd3, 0xa7, 0xc9,
		0x99, 0xdc, 0x8b, 0xb7, 0xbc, 0xc4, 0x83, 0x39, 0xbe, 0xb0, 0x94, 0xfa, 0x64, 0x8e, 0x1f, 0x13,
		0xec, 0x21, 0xa9, 0xe2, 0x68, 0x16, 0xf6, 0x68, 0xc2, 0x43, 0x02, 0xbe, 0x0f, 0xbe, 0xaf, 0xbe,
		0x29, 0x12, 0x8e, 0x06, 0x9c, 0x6e, 0x9c, 0x6e, 0x9c, 0x6e, 0xd8, 0xeb, 0x71, 0xc2, 0x71, 0xc2,
		0x61, 0xaf, 0x87, 0xbd, 0x7e, 0xb3, 0x56, 0x60, 0xaf, 0x5f, 0x31, 0x29, 0xb0, 0xd7, 0xbf, 0xd3,
		0x04, 0xbd, 0xbd, 0x1e, 0x66, 0xef, 0x30, 0x4d, 0x72, 0x1e, 0xd1, 0x89, 0x2e, 0xde, 0x4f, 0xe4,
		0x40, 0x77, 0x28, 0xd2, 0x1f, 0x02, 0x2e, 0x9b, 0x9e, 0x62, 0x93, 0x53, 0x6c, 0x6a, 0x79, 0xd9,
		0x43, 0xe8, 0x37, 0x59, 0xfa, 0x74, 0x22, 0x27, 0xe3, 0xe6, 0x6f, 0x49, 0x18, 0x3c, 0xb4, 0x07,
		0xcf, 0xb5, 0x31, 0x70, 0xbc, 0x25, 0xa1, 0x9c, 0x94, 0x22, 0xec, 0x17, 0xc6, 0x36, 0x9f, 0xac,
		0x8d, 0xaf, 0x82, 0x7d, 0x5c, 0x79, 0x21, 0xa8, 0x91, 0xfa, 0x42, 0x50, 0x03, 0x17, 0x82, 0xe8,
		0x91, 0x78, 0xd6, 0x17, 0x82, 0x1a, 0xb4, 0x17, 0x82, 0x1a, 0xb8, 0x10, 0xc4, 0x4a, 0xe3, 0x70,
		0x21, 0x08, 0x17, 0x82, 0xd8, 0x2c, 0x09, 0x70, 0x77, 0xd1, 0x6c, 0xd1, 0xe4, 0x01, 0xb8, 0xbb,
		0x60, 0x2e, 0x83, 0xb9, 0x2c, 0x77, 0x06, 0x71, 0x44, 0xde, 0xcf, 0x77, 0x0f, 0x7e, 0x3a, 0x88,
		0x25, 0x88, 0x25, 0x88, 0x25, 0x5c, 0x08, 0x82, 0x68, 0x82, 0x68, 0x52, 0x42, 0x34, 0xcd, 0x99,
		0x47, 0xd4, 0x73, 0x30, 0xc6, 0x9e, 0x2c, 0x43, 0xef, 0xb6, 0xf4, 0xb3, 0xce, 0xcf, 0xca, 0xc7,
		0xda, 0xa8, 0xb9, 0xfb, 0xf3, 0x60, 0xb4, 0xf8, 0xe1, 0xaf, 0x55, 0x5f, 0xab, 0x7c, 0x3c, 0x18,
		0x35, 0xd7, 0xfc, 0xa5, 0x31, 0x6a, 0x6e, 0xd8, 0x46, 0x7d, 0xb4, 0xb3, 0xf4, 0xd5, 0xe8, 0xf3,
		0xea, 0xba, 0x07, 0x6a, 0x6b, 0x1e, 0xd8, 0x5f, 0xf7, 0xc0, 0xfe, 0x9a, 0x07, 0xd6, 0x76, 0xa9,
		0xba, 0xe6, 0x81, 0xfa, 0xe8, 0xd7, 0xd2, 0xf7, 0x77, 0x56, 0x7f, 0xb5, 0x31, 0xda, 0xfd, 0xb5,
		0xee, 0x6f, 0x07, 0xa3, 0x5f, 0xcd, 0xdd, 0xdd, 0xbd, 0x9d, 0x4a, 0xf5, 0x5b, 0x59, 0x3f, 0x1c,
		0xfb, 0x1b, 0x2b, 0x9d, 0x25, 0x37, 0x64, 0xfc, 0x5f, 0x15, 0x1d, 0xb0, 0xd8, 0x4d, 0xb9, 0xdd,
		0x4d, 0x70, 0x4f, 0x2f, 0xb6, 0x80, 0xeb, 0x64, 0x0a, 0x03, 0x58, 0x95, 0xfd, 0xea, 0x8d, 0x45,
		0x97, 0x67, 0x03, 0xd7, 0xc9, 0x60, 0xc4, 0xdf, 0x36, 0x23, 0x3e, 0xae, 0x93, 0xbd, 0x2f, 0x5f,
		0x70, 0x9d, 0x0c, 0x47, 0x33, 0x83, 0xa3, 0x09, 0xff, 0x1a, 0xac, 0x45, 0xb0, 0x16, 0xa9, 0x6f,
		0xc8, 0x86, 0x9b, 0x0a, 0xa7, 0x1b, 0xa7, 0x1b, 0xa7, 0x1b, 0xde, 0x1e, 0x9c, 0x70, 0x9c, 0x70,
		0x78, 0x7b, 0x60, 0x9f, 0x87, 0xb7, 0x07, 0xde, 0x1e, 0x78, 0x7b, 0x56, 0x6f, 0x27, 0x78, 0x7b,
		0xa8, 0x5d, 0x35, 0xb8, 0x8c, 0x98, 0xb1, 0xd3, 0x04, 0x97, 0x11, 0x45, 0x6d, 0xfa, 0xad, 0xba,
		0x8c, 0xf8, 0xdb, 0x4d, 0xc6, 0x7c, 0x19, 0xb1, 0x51, 0xac, 0xcb, 0x88, 0x0d, 0x5e, 0x97, 0x11,
		0x07, 0x9e, 0x1f, 0x6e, 0x78, 0x0b, 0x71, 0xf6, 0x55, 0x5c, 0x3f, 0x54, 0xe7, 0xfa, 0xe1, 0x74,
		0xd5, 0x36, 0xbf, 0x77, 0x98, 0x3c, 0x81, 0x0b, 0x87, 0xb8, 0x70, 0x38, 0xfd, 0x22, 0x2e, 0x1c,
		0xc2, 0x21, 0x9a, 0x0d, 0xd6, 0x85, 0x43, 0x14, 0x06, 0x55, 0x18, 0x54, 0xd5, 0x77, 0x99, 0xe0,
		0x66, 0xcf, 0x7c, 0xf7, 0xe0, 0xc9, 0x85, 0x58, 0x82, 0x58, 0x82, 0x58, 0xca, 0xdb, 0x85, 0x43,
		0xcf, 0x0f, 0x19, 0x1c, 0xd0, 0xd1, 0xd3, 0x10, 0x4b, 0x10, 0x4b, 0x85, 0x13, 0x4b, 0xb1, 0x4d,
		0xc4, 0x1d, 0xf6, 0x75, 0xdf, 0x70, 0x7b, 0x84, 0x45, 0x3c, 0x1d, 0x51, 0x3c, 0x3b, 0xe9, 0x3f,
		0x9d, 0xc7, 0x90, 0x6e, 0xa3, 0xf1, 0x11, 0xca, 0xcb, 0xc2, 0x99, 0xa1, 0x0d, 0x56, 0xd7, 0x69,
		0xd2, 0xd0, 0x4e, 0xf9, 0x67, 0xf9, 0x63, 0x6d, 0x34, 0xf6, 0xd9, 0x45, 0x3f, 0xef, 0x8f, 0xe6,
		0x9c, 0x78, 0xd1, 0x07, 0xd5, 0xb9, 0x0f, 0x7e, 0x56, 0x47, 0xbf, 0xca, 0xff, 0x77, 0xee, 0xf7,
		0xfd, 0xd1, 0xaf, 0x6f, 0x15, 0xbd, 0x3e, 0xf9, 0xad, 0x36, 0xfa, 0xd5, 0x98, 0xe5, 0x2b, 0x8d,
		0xfe, 0xd8, 0xa8, 0xcf, 0xfd, 0x5e, 0x8d, 0x7e, 0xaf, 0xc7, 0x69, 0x4a, 0xc7, 0xcd, 0x37, 0xea,
		0xf5, 0xfd, 0x71, 0x4a, 0xd3, 0xfb, 0xfb, 0x4f, 0xf7, 0xf7, 0x9f, 0x72, 0xd2, 0x99, 0x12, 0xf5,
		0x94, 0x76, 0x58, 0x96, 0x94, 0x87, 0x4b, 0x3c, 0x69, 0xed, 0x9f, 0x1d, 0xac, 0xec, 0x72, 0x67,
		0x68, 0xfc, 0xd1, 0xc9, 0xda, 0x52, 0x3d, 0x39, 0xfa, 0x98, 0x95, 0xa0, 0x9a, 0x8a, 0xe9, 0x47,
		0xe2, 0x73, 0x90, 0x56, 0x0d, 0x86, 0x26, 0x6e, 0x62, 0x3d, 0xc1, 0xba, 0xa5, 0x7f, 0x32, 0x3d,
		0xad, 0x4d, 0x3c, 0x97, 0xd4, 0x68, 0x63, 0xa9, 0xb1, 0xaf, 0x86, 0x33, 0x24, 0x74, 0x51, 0x00,
		0x2b, 0xdb, 0x3b, 0xf3, 0x0d, 0x33, 0xc2, 0xd2, 0x27, 0x76, 0xcf, 0xa6, 0x0d, 0x2f, 0x58, 0xbd,
		0x21, 0x48, 0xcf, 0x08, 0xed, 0x67, 0x42, 0xe5, 0xd5, 0xe7, 0xb8, 0xa7, 0xdf, 0x2e, 0x85, 0xf1,
		0xc2, 0x7f, 0x29, 0xa2, 0x83, 0x5e, 0xdf, 0xbe, 0xe5, 0xf8, 0x90, 0xcd, 0xd3, 0xaa, 0x09, 0x44,
		0xe2, 0x0e, 0xfb, 0xc4, 0x37, 0x28, 0xcc, 0xd8, 0x2b, 0xe1, 0x5b, 0x8d, 0xa1, 0x8d, 0x53, 0x77,
		0xd8, 0x67, 0xde, 0xfe, 0xa5, 0x3b, 0xef, 0x76, 0x0c, 0x46, 0x79, 0x1c, 0xa4, 0x52, 0x39, 0x9a,
		0xa3, 0xd6, 0xe5, 0xdf, 0xa5, 0x0f, 0x19, 0xca, 0x86, 0xd2, 0x9d, 0xd7, 0x76, 0x43, 0x3e, 0x03,
		0x8a, 0xc6, 0xd2, 0xd4, 0xca, 0x19, 0x9d, 0x0e, 0xba, 0x27, 0x47, 0x08, 0x97, 0x5b, 0x54, 0x13,
		0x48, 0x8e, 0xa0, 0x21, 0x39, 0x82, 0xe4, 0x38, 0xbf, 0x24, 0xbc, 0x27, 0xf9, 0x09, 0xe9, 0x10,
		0x10, 0x62, 0x20, 0xcc, 0x7e, 0x88, 0x74, 0x08, 0x48, 0x87, 0xb0, 0x66, 0x66, 0x90, 0x0e, 0x01,
		0x47, 0x73, 0xda, 0x15, 0x44, 0xff, 0xf0, 0xdf, 0xd4, 0x1c, 0x36, 0x37, 0xeb, 0x26, 0xe7, 0xb6,
		0xd9, 0xb9, 0x6d, 0x7a, 0x3e, 0x9b, 0x9f, 0x8e, 0xd3, 0xe0, 0xc2, 0x34, 0xd5, 0x5c, 0x20, 0x88,
		0x06, 0xa7, 0x1b, 0xa7, 0xbb, 0xb0, 0xa7, 0x1b, 0xb1, 0x28, 0x38, 0xdd, 0x38, 0xdd, 0xab, 0x77,
		0x36, 0x62, 0x51, 0x10, 0x8b, 0x82, 0x58, 0x94, 0xa5, 0x7f, 0x88, 0x45, 0x41, 0x2c, 0x0a, 0x93,
		0x78, 0xe6, 0x28, 0xa8, 0x10, 0x8b, 0xb2, 0xd4, 0x11, 0xc4, 0xa2, 0x20, 0x16, 0xa5, 0x80, 0xcb,
		0x81, 0x58, 0x94, 0x8d, 0x04, 0x22, 0x62, 0x51, 0x7e, 0xdb, 0x1a, 0x62, 0x51, 0xb8, 0x9e, 0x0e,
		0xc4, 0xa2, 0x20, 0x16, 0x85, 0x93, 0xcd, 0xaa, 0x48, 0x21, 0x1d, 0x48, 0xd6, 0x24, 0x6a, 0x9b,
		0x6f, 0x4f, 0xb2, 0xa6, 0xe5, 0x6d, 0xc5, 0x96, 0x9e, 0xe9, 0xda, 0xf3, 0xc3, 0x42, 0x24, 0x66,
		0x9a, 0x65, 0x48, 0xda, 0x34, 0x23, 0xd3, 0x87, 0xdf, 0x74, 0xf9, 0xbd, 0xae, 0xd2, 0x74, 0x71,
		0xc5, 0x42, 0xad, 0x5f, 0x98, 0xb7, 0xa3, 0x98, 0xf5, 0x75, 0xae, 0x9f, 0x25, 0xdb, 0x0d, 0x89,
		0xdf, 0x35, 0x4c, 0xb2, 0x9c, 0x40, 0x6a, 0x96, 0xbb, 0x75, 0xf6, 0x9d, 0x85, 0x11, 0xae, 0x8e,
		0xf8, 0x58, 0x6b, 0x50, 0xff, 0x9d, 0xc1, 0x7c, 0xde, 0x20, 0x6e, 0xaf, 0x0a, 0xc8, 0x79, 0xcf,
		0xdc, 0xbd, 0xb1, 0x39, 0x7b, 0x63, 0x73, 0xf5, 0xa2, 0x39, 0xda, 0xee, 0x96, 0x52, 0xee, 0x80,
		0x75, 0xd1, 0x0f, 0xb3, 0x29, 0x7d, 0x3f, 0x6d, 0xd7, 0xec, 0xab, 0xf9, 0x48, 0xdb, 0x65, 0x77,
		0x95, 0x4c, 0xda, 0xb5, 0x6a, 0xf1, 0xe8, 0x24, 0xd0, 0xbb, 0x29, 0xbb, 0x8c, 0x5e, 0xcf, 0x8f,
		0x49, 0xea, 0x06, 0x42, 0x3c, 0x99, 0xd9, 0xf9, 0x87, 0xd4, 0x48, 0xdc, 0xe5, 0x18, 0xbd, 0x42,
		0xe6, 0xed, 0x8a, 0xc6, 0x85, 0xb4, 0x5d, 0x1c, 0x36, 0x16, 0xcd, 0x06, 0xa3, 0xdf, 0x68, 0xb4,
		0x1b, 0x8e, 0x79, 0xe3, 0x31, 0x6f, 0x40, 0xa6, 0x8d, 0x28, 0x86, 0xe5, 0xa4, 0x0e, 0xdb, 0x73,
		0x8c, 0x9e, 0x1e, 0xd2, 0xb8, 0x46, 0x67, 0xa1, 0xb8, 0xd3, 0x16, 0xb6, 0xc3, 0xe9, 0x9f, 0x6e,
		0x53, 0xb3, 0x6e, 0x6e, 0x6e, 0x9b, 0x9c, 0xdb, 0x66, 0xe7, 0xb2, 0xe9, 0xe9, 0xcc, 0x3e, 0xf2,
		0x5d, 0xfe, 0x73, 0xca, 0x9d, 0x66, 0x8f, 0xb3, 0xda, 0x4d, 0xd9, 0xec, 0xa5, 0x7c, 0xec, 0xa4,
		0x63, 0xfb, 0xe8, 0x79, 0xeb, 0xf8, 0x9a, 0xc5, 0x78, 0x5c, 0x89, 0x1a, 0xb9, 0xbd, 0x6b, 0xdd,
		0xb5, 0x8f, 0x4b, 0x32, 0xcd, 0xe7, 0x1c, 0xec, 0xaa, 0xe3, 0xb1, 0x33, 0xf9, 0x41, 0xa6, 0x23,
		0x6f, 0x6a, 0x15, 0x49, 0xd6, 0xd1, 0x11, 0xee, 0x87, 0x51, 0x0f, 0xb1, 0xd4, 0xb7, 0x5d, 0xdd,
		0xb1, 0xdd, 0xef, 0x01, 0xbd, 0x52, 0x9c, 0x35, 0x01, 0xad, 0x08, 0xad, 0x58, 0x30, 0xad, 0x38,
		0xb4, 0xdd, 0xb0, 0xd2, 0x60, 0xd0, 0x85, 0x14, 0x41, 0x15, 0x8c, 0xc1, 0x14, 0x0c, 0xe2, 0x9f,
		0x47, 0xf0, 0x04, 0xaf, 0xa0, 0x09, 0xee, 0xde, 0x79, 0x7e, 0x5e, 0x79, 0x06, 0x07, 0x28, 0x97,
		0xa0, 0x08, 0x9e, 0xc1, 0x10, 0x79, 0x9e, 0xe6, 0x42, 0xb8, 0x57, 0x71, 0xc1, 0x9c, 0xbb, 0x37,
		0x72, 0x66, 0xec, 0xdf, 0x5b, 0xf5, 0xe3, 0xde, 0x1c, 0x95, 0xc9, 0xe0, 0x7e, 0x39, 0xae, 0xb1,
		0xc2, 0x1a, 0xa6, 0x88, 0x35, 0x2c, 0x18, 0x10, 0x62, 0xb1, 0x99, 0xc3, 0xc6, 0x4d, 0x00, 0xf9,
		0x03, 0xf9, 0x17, 0x10, 0xf9, 0xef, 0x57, 0x19, 0x90, 0xff, 0x01, 0x90, 0x3f, 0x90, 0xbf, 0x28,
		0xe4, 0x5f, 0xab, 0x1e, 0xd5, 0x8e, 0x1a, 0x07, 0xd5, 0x23, 0xc0, 0x7f, 0xc9, 0xf0, 0x5f, 0x88,
		0x19, 0x0e, 0xae, 0x29, 0xa8, 0x62, 0xa8, 0xe2, 0x75, 0xeb, 0x0d, 0xd7, 0x14, 0x5c, 0x53, 0xdb,
		0xe0, 0x9a, 0x12, 0xe3, 0xe1, 0x21, 0xf1, 0xf5, 0x40, 0x7a, 0xf7, 0x0e, 0xa1, 0xb8, 0x5e, 0x08,
		0xb5, 0x02, 0xb5, 0x92, 0x7b, 0xb5, 0xf2, 0x68, 0x04, 0x64, 0x66, 0x4b, 0xd4, 0xd3, 0xe5, 0xd8,
		0x5b, 0x52, 0x2c, 0x34, 0x74, 0xef, 0x3a, 0x31, 0x6e, 0x9a, 0xba, 0xdd, 0x6d, 0xce, 0x19, 0x33,
		0x17, 0x3e, 0x98, 0xfc, 0xbe, 0x79, 0x46, 0x3e, 0xda, 0x59, 0xc5, 0x65, 0xa0, 0x77, 0x9a, 0x90,
		0x96, 0x98, 0x96, 0xbc, 0x84, 0xbe, 0xa1, 0x0f, 0xdd, 0x20, 0x34, 0x1e, 0x1d, 0xca, 0x9d, 0xfe,
		0xe3, 0x89, 0xb8, 0x59, 0x26, 0xd2, 0xf8, 0xf4, 0x69, 0x6f, 0x96, 0x4e, 0x72, 0xca, 0x50, 0xb4,
		0xff, 0xd1, 0xfe, 0x3d, 0xd6, 0xc4, 0xff, 0x66, 0xc1, 0x32, 0x8c, 0x32, 0x77, 0x95, 0xec, 0x8d,
		0xa7, 0x8b, 0x91, 0xfe, 0xf2, 0x92, 0xc0, 0x2b, 0x25, 0xf1, 0xbb, 0xf3, 0x99, 0x89, 0x61, 0xe3,
		0x84, 0x21, 0x1d, 0xe2, 0xda, 0xad, 0x73, 0xf7, 0x44, 0xb4, 0xc0, 0xee, 0x0f, 0x1c, 0xa2, 0x39,
		0x76, 0x10, 0x6a, 0x5e, 0x57, 0x1b, 0x23, 0x11, 0x6d, 0x26, 0x25, 0x35, 0x3b, 0xd0, 0x0c, 0x33,
		0xb4, 0x9f, 0xc9, 0xbd, 0x1b, 0xad, 0x9d, 0x16, 0x3e, 0x11, 0x6d, 0x4a, 0x16, 0x48, 0xf4, 0xd7,
		0x20, 0x34, 0x42, 0xdb, 0x34, 0x1c, 0xe7, 0x55, 0x1b, 0xcf, 0xda, 0xd0, 0x4f, 0x6d, 0xad, 0x16,
		0xb5, 0xf3, 0x16, 0x77, 0x1f, 0x7d, 0x42, 0x48, 0x29, 0x1b, 0x71, 0x69, 0x33, 0x8a, 0x5c, 0x21,
		0x5c, 0xe8, 0x15, 0xcf, 0x0b, 0x10, 0xf9, 0x05, 0x76, 0x00, 0x76, 0xb0, 0x76, 0xbd, 0x11, 0xf9,
		0x95, 0xba, 0x11, 0xf8, 0x7f, 0xde, 0xa1, 0x36, 0x88, 0xfc, 0xda, 0x12, 0x3d, 0x5c, 0xa0, 0x00,
		0x2a, 0xbe, 0xd9, 0x1c, 0x36, 0x89, 0x9f, 0xfa, 0x61, 0x87, 0xe6, 0x13, 0xb1, 0xf4, 0x67, 0xc7,
		0x70, 0x29, 0xe2, 0xa8, 0xde, 0x3c, 0x5e, 0x8c, 0xdb, 0x85, 0x29, 0x86, 0xa2, 0x15, 0x2a, 0xa0,
		0x2a, 0x1e, 0xb8, 0x2a, 0x11, 0x55, 0x29, 0x2f, 0xc2, 0x2e, 0x2d, 0x74, 0xaa, 0x0b, 0xb1, 0x94,
		0x5b, 0x37, 0x37, 0x58, 0x3a, 0xe5, 0x96, 0xde, 0x1e, 0x30, 0x9d, 0x6e, 0xcb, 0xcb, 0x41, 0xd3,
		0x69, 0x8f, 0x42, 0xf2, 0xa0, 0x61, 0x9a, 0x24, 0x08, 0xd2, 0x49, 0xf2, 0xb5, 0xbb, 0x66, 0xbe,
		0x31, 0xca, 0xb9, 0xa6, 0x23, 0x9e, 0xcc, 0x87, 0x86, 0xc7, 0xe1, 0xe1, 0x78, 0x88, 0x44, 0xda,
		0x50, 0x99, 0x0e, 0x95, 0x1c, 0x2b, 0x2a, 0xf5, 0x21, 0x63, 0x84, 0xa7, 0xb4, 0xbe, 0x73, 0x5a,
		0x2a, 0xbb, 0xb4, 0x63, 0xa2, 0x51, 0xeb, 0xb6, 0x85, 0x54, 0xb1, 0xfc, 0x38, 0xef, 0x12, 0x31,
		0xab, 0x20, 0x55, 0x6c, 0x46, 0xdc, 0x78, 0x69, 0x29, 0x6a, 0xe5, 0xa3, 0x1a, 0x32, 0xc5, 0x4a,
		0x7a, 0x5a, 0x6a, 0xa6, 0x58, 0x1e, 0xce, 0xd1, 0xa4, 0x2d, 0x26, 0x27, 0x29, 0x47, 0x71, 0x34,
		0xe7, 0x34, 0x9d, 0x05, 0x25, 0xf4, 0x3d, 0x2b, 0x76, 0xf0, 0xb5, 0x8e, 0x8f, 0x4f, 0x6f, 0x6f,
		0xff, 0xcd, 0xc3, 0x31, 0xc4, 0xd1, 0x7d, 0xa5, 0xf1, 0x77, 0xa0, 0x0a, 0x83, 0x00, 0x2b, 0xa1,
		0xc0, 0x6f, 0xe7, 0x3a, 0x17, 0x92, 0x91, 0xa7, 0x73, 0x75, 0x69, 0xab, 0xb5, 0x62, 0x44, 0xad,
		0x7d, 0x3d, 0x6f, 0x5d, 0x6a, 0x46, 0x10, 0xd8, 0x3d, 0x97, 0x58, 0x5a, 0xe8, 0xc5, 0x5e, 0xba,
		0xb5, 0x19, 0xf5, 0xf2, 0xb2, 0xf1, 0x34, 0xa1, 0xfe, 0x53, 0xe1, 0xfb, 0x70, 0x69, 0x2f, 0x6e,
		0xb8, 0x18, 0x5c, 0x5e, 0x3e, 0x82, 0x9e, 0x11, 0x69, 0x7a, 0x5d, 0x6a, 0x87, 0xdb, 0x25, 0x5e,
		0xfa, 0x09, 0xa4, 0x98, 0x82, 0xd2, 0x5b, 0xd9, 0xc8, 0xce, 0xe0, 0x17, 0xda, 0x03, 0x89, 0x07,
		0x89, 0x07, 0x89, 0xa7, 0x21, 0xf1, 0xd1, 0xf1, 0xa1, 0xbd, 0x0a, 0xb1, 0x78, 0x8e, 0x0a, 0x5a,
		0xe5, 0x20, 0x06, 0x71, 0x3c, 0xf0, 0x72, 0x7c, 0x69, 0xe2, 0xee, 0xe6, 0xcb, 0xe5, 0x7f, 0x8a,
		0x53, 0x36, 0x61, 0x3c, 0x39, 0x5c, 0x68, 0xec, 0x64, 0x6a, 0x68, 0x2f, 0x55, 0xb0, 0x23, 0x82,
		0x11, 0x10, 0x81, 0x3c, 0x44, 0xe0, 0xc6, 0xd6, 0x0a, 0x4e, 0x06, 0xfd, 0xf9, 0xc6, 0x80, 0x05,
		0x80, 0x05, 0x80, 0x05, 0x68, 0xb0, 0x00, 0x0c, 0xfa, 0xd3, 0x8e, 0xc0, 0xa0, 0x0f, 0x83, 0x7e,
		0xf1, 0x56, 0x03, 0x06, 0xfd, 0x94, 0x6d, 0x29, 0x61, 0xd0, 0x8f, 0x51, 0x33, 0xec, 0xf9, 0x1c,
		0x1a, 0x7e, 0xd7, 0x9e, 0x3f, 0x99, 0xea, 0xe2, 0x9b, 0xf3, 0x2f, 0x63, 0xc9, 0x33, 0xb6, 0x20,
		0xdb, 0x81, 0xf6, 0x6c, 0x38, 0xb6, 0xa5, 0x75, 0x3d, 0x3f, 0x9a, 0x6d, 0xf7, 0xbb, 0x16, 0xcf,
		0x07, 0xcc, 0xfa, 0x62, 0xb7, 0xe3, 0xd2, 0x96, 0x4c, 0xb9, 0x28, 0x30, 0xef, 0x83, 0xcc, 0xcb,
		0x22, 0xf3, 0xf1, 0x0e, 0x8c, 0xa9, 0x53, 0xc0, 0x4e, 0xe6, 0xe7, 0x1b, 0x03, 0x99, 0x07, 0x99,
		0x07, 0x99, 0x4f, 0xb9, 0x63, 0x86, 0x2e, 0xa7, 0xaa, 0xc5, 0x47, 0x0c, 0x6d, 0x4c, 0x86, 0x93,
		0x1b, 0xec, 0xcc, 0x6e, 0xe1, 0xe0, 0x68, 0xe9, 0xe0, 0x6c, 0xf1, 0xe0, 0x37, 0x5d, 0x42, 0x2c,
		0x20, 0xa2, 0x2c, 0x21, 0xc2, 0x39, 0xb8, 0x38, 0x2e, 0xce, 0x91, 0x09, 0x08, 0xb1, 0x94, 0x08,
		0xb4, 0x98, 0x14, 0x61, 0xd5, 0x72, 0x82, 0xad, 0x3b, 0x59, 0xba, 0x11, 0x79, 0xcb, 0x66, 0x3f,
		0x16, 0x85, 0xfc, 0xc4, 0x73, 0xe5, 0x90, 0x43, 0x5b, 0xd7, 0x46, 0x18, 0x12, 0xdf, 0xe5, 0x26,
		0xa1, 0x4b, 0x3b, 0xb5, 0xf2, 0xd1, 0xb7, 0xb2, 0x5e, 0xeb, 0xfc, 0xaa, 0x95, 0xbf, 0x95, 0xf5,
		0xc3, 0xce, 0xb7, 0xb2, 0x7e, 0xd4, 0xf9, 0xf5, 0xad, 0xa2, 0xef, 0x8f, 0x7f, 0xfc, 0xb9, 0x3f,
		0x8a, 0x7e, 0x3b, 0x9a, 0xfc, 0x56, 0xf9, 0x58, 0x9d, 0xfc, 0xbe, 0x7b, 0x7f, 0xff, 0xe9, 0xfe,
		0xfe, 0x13, 0x43, 0x03, 0xec, 0x94, 0xb0, 0xc3, 0x63, 0x4a, 0xaf, 0x6e, 0xdb, 0x7f, 0x71, 0x9f,
		0xd7, 0x7f, 0xb2, 0x9c, 0xd8, 0x7f, 0x95, 0xb2, 0x3e, 0xca, 0x8a, 0xd0, 0x64, 0xa6, 0xa4, 0x60,
		0xf3, 0xd8, 0x84, 0x2d, 0x39, 0xd8, 0xbc, 0xca, 0xe4, 0x9e, 0x24, 0x2c, 0x69, 0x9c, 0x3d, 0x59,
		0xd8, 0x72, 0x53, 0xd4, 0x49, 0xc3, 0x58, 0x57, 0x0e, 0x66, 0xf5, 0xbc, 0x98, 0x35, 0x61, 0x56,
		0x17, 0x08, 0xa6, 0x05, 0x47, 0xc9, 0x3b, 0x8e, 0xf7, 0x83, 0x58, 0xb1, 0x09, 0x37, 0xd0, 0xfa,
		0xc6, 0xab, 0xf6, 0x48, 0xb4, 0x60, 0x40, 0x4c, 0xbb, 0x6b, 0x93, 0x45, 0x5b, 0xee, 0xbd, 0x3b,
		0x33, 0xe6, 0x7e, 0x82, 0x89, 0x5d, 0x4e, 0xe4, 0x3c, 0xfd, 0x02, 0xc1, 0xdc, 0x2e, 0x51, 0x1b,
		0x15, 0xc9, 0xdc, 0x9e, 0xeb, 0x9a, 0x61, 0x9c, 0x32, 0xbf, 0xcc, 0x67, 0x52, 0x49, 0x55, 0x48,
		0x2b, 0xfd, 0x2c, 0xa5, 0xc9, 0x5c, 0x97, 0xae, 0xc0, 0xd6, 0x92, 0x38, 0x4f, 0x53, 0x68, 0x6b,
		0x89, 0x9d, 0xd2, 0x66, 0xd9, 0xa8, 0x22, 0xcb, 0x46, 0xa6, 0x3a, 0x04, 0x59, 0x36, 0x36, 0xdd,
		0x35, 0xc8, 0xb2, 0xa1, 0xc1, 0x8f, 0xc7, 0x01, 0x94, 0x21, 0x28, 0x17, 0x41, 0xb9, 0x08, 0xca,
		0x45, 0x50, 0x6e, 0x31, 0x57, 0x03, 0x41, 0xb9, 0x45, 0xb4, 0x1e, 0x22, 0xcb, 0x06, 0xb2, 0x6c,
		0x20, 0xcb, 0x46, 0xb1, 0x6d, 0x85, 0xc8, 0xb2, 0x21, 0x4e, 0xcf, 0x20, 0x29, 0x05, 0x38, 0x2f,
		0x38, 0x2f, 0x92, 0x52, 0x20, 0x29, 0xc5, 0x52, 0x6b, 0x48, 0x4a, 0xf1, 0xee, 0x41, 0x42, 0x52,
		0x0a, 0xe4, 0x70, 0x80, 0xea, 0x84, 0xea, 0xdc, 0x42, 0xd5, 0x09, 0x73, 0x71, 0x62, 0xa3, 0x84,
		0xb9, 0x18, 0xe6, 0xe2, 0xc2, 0xad, 0x06, 0xcc, 0xc5, 0x29, 0xdb, 0x42, 0xb0, 0x29, 0x2f, 0xdd,
		0x8f, 0x60, 0x53, 0xde, 0x72, 0x11, 0x39, 0x1c, 0xd2, 0xee, 0x41, 0xe4, 0x70, 0x90, 0xad, 0x33,
		0x34, 0x18, 0x8f, 0x57, 0xae, 0x2a, 0x52, 0x1e, 0x80, 0xfb, 0x82, 0xfb, 0xe6, 0x85, 0xfb, 0x22,
		0xe5, 0x81, 0x10, 0x83, 0x00, 0x47, 0xc3, 0x00, 0x67, 0x03, 0x01, 0xbf, 0xe9, 0x12, 0x62, 0x30,
		0x10, 0x65, 0x38, 0x10, 0x4e, 0x59, 0xc5, 0x51, 0x57, 0x8e, 0xc0, 0x59, 0x88, 0x61, 0x41, 0xa0,
		0x81, 0xa1, 0x08, 0xab, 0x86, 0x94, 0x07, 0x48, 0x79, 0x40, 0xd7, 0x20, 0x52, 0x1e, 0x20, 0xe5,
		0x81, 0x80, 0xa3, 0x8c, 0x94, 0x07, 0xb4, 0x2a, 0x13, 0x29, 0x0f, 0x36, 0xea, 0x01, 0xac, 0xd0,
		0x79, 0xb1, 0x02, 0xc2, 0x0a, 0x2d, 0x10, 0x4c, 0x23, 0xe5, 0x01, 0xd3, 0x7e, 0x44, 0xca, 0x83,
		0xac, 0x29, 0x41, 0xe1, 0xad, 0xd3, 0x5b, 0x97, 0x21, 0x60, 0x7c, 0xb1, 0x5e, 0x54, 0x82, 0x80,
		0x0f, 0x1c, 0xa7, 0x91, 0x76, 0xfa, 0x44, 0x4c, 0x5b, 0x29, 0x55, 0xe6, 0x03, 0x7f, 0x68, 0x86,
		0xee, 0x44, 0x48, 0xb7, 0xa7, 0x8d, 0x3f, 0xb4, 0x66, 0x8d, 0x3f, 0xdc, 0x4e, 0x1a, 0xff, 0xba,
		0xb1, 0x45, 0xf9, 0xfd, 0xa9, 0xfd, 0xfd, 0x37, 0xde, 0x99, 0xf4, 0x52, 0x6b, 0xd8, 0x8b, 0xc4,
		0x16, 0xb1, 0x36, 0x82, 0x52, 0x9b, 0xad, 0x46, 0xa2, 0xa9, 0xf6, 0x3c, 0x53, 0xb7, 0xbb, 0xcd,
		0xb9, 0x39, 0x5f, 0xf8, 0x20, 0xfa, 0xdd, 0x31, 0x7a, 0xcd, 0xb9, 0x05, 0xd8, 0x70, 0xca, 0x17,
		0x54, 0x6c, 0xa9, 0x65, 0x59, 0x93, 0x8b, 0x23, 0x01, 0x09, 0x43, 0xdb, 0xed, 0x05, 0x5a, 0xe8,
		0x69, 0x86, 0x76, 0xde, 0xfa, 0x63, 0xe6, 0xfd, 0xdb, 0xb4, 0xed, 0x74, 0x09, 0x25, 0x52, 0x3b,
		0x7a, 0x68, 0x1c, 0x3b, 0x0c, 0x8e, 0x1c, 0x5a, 0x75, 0xcd, 0xec, 0xa8, 0x61, 0xd6, 0xb8, 0x6c,
		0x8e, 0x18, 0xbe, 0x52, 0x29, 0x6d, 0x02, 0x88, 0xd2, 0x5b, 0x41, 0x42, 0x9f, 0x11, 0x85, 0x52,
		0x1e, 0xad, 0x3a, 0x24, 0xa7, 0xae, 0xe9, 0x78, 0x81, 0xed, 0xf6, 0x34, 0xd3, 0x73, 0x43, 0xc3,
		0x76, 0x89, 0x1f, 0xa3, 0x91, 0xb1, 0xef, 0x3c, 0x41, 0xd4, 0x13, 0xa8, 0x62, 0xde, 0xbb, 0x96,
		0x11, 0x1a, 0x9a, 0xe7, 0x6a, 0xa7, 0xe1, 0x13, 0xf1, 0x5d, 0x12, 0xce, 0x39, 0xd2, 0x3f, 0x69,
		0xda, 0xdd, 0x13, 0x09, 0x88, 0x66, 0xf8, 0x24, 0x6e, 0x24, 0x08, 0x0d, 0xd7, 0x32, 0x7c, 0xeb,
		0xde, 0x3d, 0xaf, 0x7e, 0xd4, 0x92, 0x6e, 0x07, 0xe1, 0xab, 0x33, 0xf6, 0xce, 0xa7, 0xc6, 0x9f,
		0xcc, 0x89, 0x5d, 0xca, 0x48, 0xec, 0x92, 0x29, 0x52, 0xce, 0x24, 0xb1, 0x0b, 0x6f, 0xf9, 0xc0,
		0xa8, 0x80, 0xdf, 0x31, 0x76, 0xd2, 0x98, 0x44, 0xd2, 0x99, 0x3e, 0xe8, 0x74, 0x8c, 0xdd, 0x6d,
		0x8e, 0xc1, 0xd3, 0x44, 0x65, 0x87, 0xaf, 0x83, 0x98, 0x65, 0xdb, 0x86, 0x6b, 0xd8, 0xdd, 0xb0,
		0x69, 0x13, 0x42, 0x0e, 0xcb, 0xd5, 0x7d, 0xc3, 0x3a, 0x37, 0x7a, 0xff, 0x96, 0xac, 0x8d, 0x28,
		0x0c, 0x16, 0xdc, 0x75, 0x51, 0xca, 0x09, 0x12, 0x92, 0x6c, 0x8b, 0xc5, 0xcc, 0x30, 0x97, 0x53,
		0x28, 0x8e, 0x9f, 0x8a, 0xe6, 0xf4, 0xed, 0x45, 0x5b, 0xcd, 0x0e, 0x22, 0x30, 0x15, 0x5f, 0xc0,
		0x8d, 0x06, 0x77, 0xde, 0xfa, 0x23, 0xed, 0xa4, 0x33, 0x48, 0x34, 0x7e, 0x06, 0x01, 0x2e, 0xe2,
		0xec, 0xcd, 0xf2, 0xa7, 0x9a, 0xb2, 0x9c, 0x4b, 0xaf, 0x0e, 0x1b, 0x7d, 0x48, 0xc7, 0xd5, 0xf8,
		0x70, 0xb4, 0x0d, 0xf6, 0xc0, 0x26, 0x6c, 0xec, 0xf7, 0x2b, 0xb3, 0x7e, 0xe6, 0x7e, 0x33, 0x27,
		0x25, 0x73, 0x0a, 0x3d, 0x7e, 0x3f, 0x17, 0xc9, 0xe1, 0x9b, 0x7c, 0xff, 0x9d, 0x59, 0xde, 0x0c,
		0x07, 0x6d, 0x8c, 0x7b, 0xd2, 0xe0, 0x9c, 0xb7, 0x3a, 0x61, 0x93, 0x99, 0x4f, 0x79, 0xe6, 0xa9,
		0x51, 0x0b, 0xf5, 0xb1, 0x5e, 0x96, 0xe4, 0x25, 0xc1, 0x24, 0x7b, 0x53, 0xee, 0xf0, 0x46, 0xd0,
		0x35, 0xd3, 0xb2, 0xed, 0xf4, 0x52, 0x32, 0x65, 0x84, 0xa3, 0x74, 0xa2, 0xbb, 0xd1, 0x86, 0x2b,
		0x1e, 0xcd, 0xdd, 0x64, 0x43, 0x8a, 0x21, 0xb9, 0xa9, 0xa3, 0x07, 0xe7, 0x12, 0x77, 0xc6, 0xd7,
		0xb1, 0x53, 0x2c, 0x57, 0x12, 0x60, 0xc1, 0x75, 0x04, 0x0c, 0x1e, 0xc6, 0x92, 0x4f, 0xba, 0xc4,
		0x27, 0xae, 0x99, 0x3e, 0x94, 0x8e, 0x81, 0x2f, 0xde, 0x9c, 0x1d, 0x6b, 0xd5, 0xc3, 0xc6, 0x7e,
		0x33, 0xa2, 0xd3, 0x5a, 0xa2, 0xa8, 0x02, 0xed, 0x0f, 0xdf, 0x1b, 0x0e, 0xb4, 0x8b, 0xf6, 0x67,
		0x4d, 0xd7, 0xec, 0x6e, 0xcb, 0xb1, 0x8d, 0x20, 0x63, 0x52, 0x39, 0x9b, 0x9f, 0x3c, 0xf1, 0xca,
		0x54, 0x13, 0x98, 0x1b, 0xf2, 0xd9, 0xc9, 0x85, 0xc9, 0x9c, 0x39, 0x59, 0xf3, 0x06, 0xec, 0x78,
		0x03, 0xc8, 0x40, 0xdc, 0xe8, 0xb0, 0x5a, 0xe9, 0x55, 0xde, 0xf4, 0xc1, 0x8d, 0x6d, 0xc6, 0x5d,
		0x63, 0xe8, 0x84, 0xa9, 0x8e, 0x77, 0x29, 0xda, 0xa6, 0x9b, 0xed, 0x9b, 0x0e, 0xb4, 0x2e, 0xb4,
		0xae, 0x54, 0xad, 0xfb, 0xe8, 0x79, 0x0e, 0x49, 0xe7, 0x0c, 0x98, 0xaa, 0xdd, 0x0a, 0xd4, 0xee,
		0x26, 0x5a, 0xc3, 0xea, 0xdb, 0xee, 0x6d, 0x68, 0x84, 0x43, 0x28, 0x5f, 0x16, 0xe5, 0x3b, 0x37,
		0x8d, 0x50, 0xc1, 0x79, 0x54, 0xc1, 0x8e, 0xe7, 0x0d, 0x1e, 0x0d, 0xf3, 0x7b, 0xba, 0xbc, 0x6d,
		0xc9, 0x71, 0x7a, 0xfb, 0x38, 0xf4, 0x20, 0xf4, 0xa0, 0x54, 0x3d, 0xf8, 0x66, 0xfb, 0xa5, 0x4d,
		0x73, 0x46, 0x93, 0xd6, 0x8c, 0x2e, 0x8d, 0x19, 0x5b, 0xda, 0xb2, 0x71, 0x9a, 0xb2, 0xcb, 0xab,
		0xcb, 0x53, 0x1a, 0x55, 0x14, 0x27, 0x25, 0x3b, 0x6b, 0x1d, 0xb7, 0xcf, 0xdb, 0x77, 0x7f, 0xd3,
		0x34, 0x50, 0x8d, 0xb3, 0x9a, 0x9d, 0xde, 0x5c, 0xb4, 0x2f, 0x5b, 0xe7, 0x34, 0x0d, 0xec, 0xc7,
		0x71, 0x1a, 0xb7, 0xed, 0xe3, 0x87, 0xeb, 0x3f, 0xff, 0x7e, 0x38, 0xbf, 0x3a, 0xa6, 0x6b, 0xa6,
		0xf6, 0xa6, 0x99, 0x9b, 0xd3, 0x8b, 0xab, 0x3b, 0xaa, 0x09, 0xa9, 0x27, 0xed, 0x5c, 0xb4, 0x8e,
		0xe9, 0xbb, 0xd3, 0x78, 0xd3, 0xcc, 0xa4, 0x3b, 0x42, 0xc3, 0xcb, 0xe8, 0xd3, 0xba, 0x2d, 0x0e,
		0xb7, 0xa9, 0xd5, 0x3f, 0x32, 0x34, 0x32, 0x19, 0x2c, 0xd5, 0x1d, 0xc6, 0xc5, 0x8d, 0xd0, 0xd4,
		0xf6, 0x59, 0x1a, 0x49, 0xba, 0x42, 0x71, 0xbd, 0x6c, 0x76, 0x2a, 0xa8, 0xee, 0x14, 0x8e, 0x4f,
		0x24, 0xd5, 0x0d, 0x82, 0xd9, 0x71, 0x6a, 0x6a, 0xd5, 0x1c, 0x14, 0xef, 0x99, 0xf1, 0xe3, 0xb4,
		0x62, 0x26, 0xd2, 0x42, 0xb3, 0xa7, 0x23, 0x25, 0x04, 0x70, 0x35, 0xeb, 0x46, 0x3f, 0x1c, 0xa6,
		0x87, 0x54, 0xd1, 0x43, 0x00, 0x52, 0x00, 0x52, 0x52, 0x81, 0xd4, 0xd0, 0x76, 0xc3, 0x4a, 0x83,
		0x02, 0x3c, 0xa5, 0x50, 0x01, 0x94, 0xd7, 0xd5, 0x29, 0xd4, 0x1d, 0xcb, 0xf5, 0xf3, 0xe4, 0xce,
		0x32, 0x6d, 0xf6, 0x0e, 0x5e, 0x17, 0x93, 0xd9, 0x2f, 0x20, 0xd3, 0xe4, 0x62, 0x61, 0xb9, 0x06,
		0x9e, 0x4c, 0x5d, 0xa3, 0x5e, 0xdf, 0xaf, 0xab, 0x3f, 0x7d, 0xb0, 0x3f, 0x88, 0x57, 0x91, 0x93,
		0x48, 0x8d, 0x94, 0x3a, 0x32, 0x7e, 0x0a, 0x4a, 0x12, 0x4a, 0x52, 0xaa, 0x92, 0xcc, 0x8b, 0xaf,
		0x5b, 0xf1, 0x23, 0x1f, 0x0e, 0x6c, 0x0a, 0x97, 0x5f, 0xfc, 0x94, 0x48, 0x7f, 0xdf, 0x24, 0x4e,
		0x39, 0xb6, 0x22, 0x05, 0xcd, 0xbb, 0xeb, 0xf6, 0xc9, 0x43, 0xf9, 0xaf, 0xc3, 0x4a, 0xb9, 0xbc,
		0x55, 0x4e, 0x40, 0xdc, 0x31, 0x51, 0x4a, 0x24, 0xd9, 0x16, 0x71, 0x43, 0x3b, 0x7c, 0xf5, 0x49,
		0x97, 0x46, 0x2e, 0xa5, 0x00, 0x69, 0xa5, 0xf6, 0xe4, 0x55, 0x9f, 0x8d, 0x80, 0xa1, 0xd0, 0x6f,
		0x7c, 0xae, 0xee, 0xfe, 0xbe, 0x3e, 0x4d, 0x5b, 0x71, 0x61, 0x0c, 0x2e, 0x03, 0xaa, 0x9b, 0xff,
		0x8c, 0x29, 0x05, 0x53, 0xcb, 0x02, 0x46, 0x10, 0xce, 0xa9, 0xbb, 0x87, 0xad, 0x43, 0x85, 0xba,
		0x7b, 0xa4, 0xd6, 0xec, 0x1e, 0x55, 0x15, 0xea, 0x6e, 0xeb, 0xf2, 0x6f, 0xd1, 0xee, 0xd7, 0x8e,
		0x62, 0x97, 0x86, 0xf3, 0x82, 0x85, 0xd2, 0x48, 0xfe, 0x19, 0x16, 0xda, 0xdc, 0xd1, 0x05, 0xfa,
		0x03, 0xfa, 0xb3, 0x60, 0xe0, 0x71, 0x2d, 0x23, 0xf4, 0xfc, 0xd7, 0x14, 0x17, 0x9d, 0xb7, 0x08,
		0x9f, 0xcc, 0x6e, 0xc3, 0x52, 0x14, 0xcd, 0xca, 0x10, 0xa3, 0x18, 0x95, 0xea, 0xc5, 0x60, 0x30,
		0xce, 0x33, 0xa0, 0x82, 0x5e, 0x32, 0x0c, 0xa7, 0xaa, 0x48, 0x3f, 0xeb, 0x4a, 0xf4, 0xd3, 0x0c,
		0x89, 0x63, 0x07, 0x17, 0x24, 0x34, 0xce, 0xaf, 0xae, 0xae, 0x95, 0xe8, 0xb2, 0x15, 0x38, 0xaa,
		0xf4, 0xb3, 0xaa, 0x4c, 0x47, 0x07, 0x0e, 0x55, 0xac, 0x9d, 0xfc, 0xce, 0x76, 0x1d, 0xc3, 0x8d,
		0x6f, 0xca, 0x2a, 0xd5, 0x5b, 0x35, 0x84, 0x81, 0x33, 0x3c, 0x3d, 0xbf, 0x56, 0xa5, 0xa7, 0x03,
		0xcf, 0x55, 0xa8, 0xab, 0xe7, 0x5e, 0xcf, 0x36, 0x0d, 0xe7, 0xdc, 0x76, 0xbf, 0x2b, 0xd4, 0xeb,
		0x2b, 0x77, 0xa8, 0x50, 0x6f, 0xaf, 0x9f, 0x5e, 0x83, 0x68, 0x92, 0xbf, 0xb8, 0xb6, 0x22, 0xbd,
		0xfe, 0x43, 0xa9, 0x39, 0xfe, 0x43, 0xc1, 0x39, 0xf6, 0x8d, 0x81, 0x1a, 0xfd, 0x34, 0x5d, 0x12,
		0xaa, 0xd3, 0xd3, 0x6b, 0x55, 0xe0, 0x42, 0xf0, 0xea, 0x9a, 0x4a, 0x74, 0x34, 0xec, 0x2b, 0xd2,
		0xcd, 0x93, 0x17, 0x5b, 0x91, 0x9e, 0x9e, 0x0d, 0x5d, 0x55, 0xba, 0xda, 0xee, 0x1b, 0x8a, 0xf4,
		0x74, 0x02, 0x64, 0x14, 0xe9, 0xed, 0x8d, 0x61, 0xd9, 0x9e, 0x22, 0x7d, 0xbd, 0x1d, 0x3e, 0x26,
		0x37, 0xa2, 0x14, 0xe9, 0xf2, 0x57, 0xd3, 0x3e, 0x75, 0xad, 0xeb, 0x50, 0x95, 0xee, 0xda, 0x7e,
		0x38, 0x54, 0x66, 0xef, 0x3e, 0x7a, 0xae, 0xa5, 0x44, 0x57, 0x9f, 0x6d, 0xd3, 0xbe, 0x1a, 0x84,
		0x91, 0x58, 0x88, 0x33, 0xff, 0xa9, 0xd0, 0xe9, 0x47, 0x23, 0xb0, 0xcd, 0xf6, 0xed, 0xc9, 0xa5,
		0x12, 0x9d, 0xed, 0x0d, 0x06, 0x9e, 0x63, 0x9b, 0xaf, 0x86, 0x69, 0x7a, 0x43, 0x37, 0xb4, 0xdd,
		0x9e, 0x12, 0xdd, 0xb6, 0x43, 0x25, 0x40, 0xe2, 0xa3, 0x6f, 0x5b, 0x3d, 0x25, 0x44, 0xee, 0x63,
		0xa0, 0x04, 0x98, 0x35, 0x8d, 0x47, 0x87, 0x9c, 0x78, 0x3f, 0xdc, 0x20, 0xf4, 0x89, 0xd1, 0xbf,
		0xe9, 0x5e, 0x7b, 0x7e, 0xa8, 0x46, 0xc7, 0x07, 0x3f, 0x8c, 0xc1, 0x89, 0x17, 0x56, 0x2a, 0x9f,
		0x83, 0x40, 0xb1, 0x1e, 0x5f, 0xfb, 0x5e, 0xd7, 0x76, 0x88, 0x3a, 0xbd, 0xfe, 0x6f, 0x38, 0x98,
		0x68, 0x64, 0x65, 0x60, 0x9a, 0xf9, 0xe8, 0x7c, 0x25, 0x66, 0x68, 0xdc, 0x86, 0x86, 0x12, 0x6a,
		0xce, 0x34, 0xc3, 0xd3, 0xfe, 0x50, 0x09, 0xc4, 0x43, 0x55, 0x6d, 0x37, 0x83, 0x6e, 0x3e, 0x19,
		0xae, 0x4b, 0xd4, 0x98, 0x51, 0x3b, 0x30, 0xbd, 0xf6, 0xed, 0x39, 0x65, 0x1e, 0x5d, 0xf9, 0xfd,
		0x75, 0xd5, 0x38, 0x53, 0x5e, 0xb7, 0x4b, 0xd4, 0x10, 0xb3, 0x5e, 0x7f, 0xe0, 0x05, 0x76, 0x48,
		0x54, 0x71, 0x3b, 0x58, 0xa6, 0x12, 0x1b, 0xd5, 0xb2, 0xdc, 0xbf, 0xd4, 0x70, 0xe9, 0x59, 0x76,
		0xcf, 0x0e, 0x0d, 0xe7, 0xda, 0xfb, 0x41, 0x7c, 0xc7, 0x76, 0x89, 0x42, 0x7d, 0xfe, 0xaf, 0x6f,
		0x0c, 0x06, 0xc4, 0xbf, 0x7a, 0x26, 0xfe, 0x13, 0x31, 0xac, 0x63, 0x75, 0xe4, 0xae, 0xe5, 0x04,
		0x3f, 0x94, 0xe8, 0xa7, 0x67, 0x06, 0xc7, 0x6f, 0xa1, 0xba, 0x52, 0xdd, 0xbe, 0x38, 0xee, 0x87,
		0x81, 0xaa, 0x7d, 0x37, 0x4c, 0xc7, 0x78, 0x55, 0xc3, 0x56, 0x92, 0x74, 0xfa, 0xd2, 0xea, 0x2a,
		0xd6, 0x5f, 0xb5, 0xe6, 0xf7, 0xd6, 0x0c, 0x49, 0xbd, 0x6e, 0x55, 0xce, 0x7e, 0x58, 0x57, 0xde,
		0xa3, 0x92, 0x5d, 0xbf, 0x21, 0xa1, 0xa2, 0x5d, 0xaf, 0x9e, 0x04, 0xaa, 0xf6, 0xfc, 0x8b, 0x72,
		0x3d, 0xff, 0x32, 0x50, 0x50, 0x66, 0x4f, 0x3b, 0xad, 0x12, 0x14, 0x59, 0xec, 0xbb, 0x3a, 0xb6,
		0xb8, 0xa8, 0xeb, 0x57, 0x5d, 0xab, 0xaf, 0x9e, 0x82, 0x8f, 0x7a, 0x6d, 0x28, 0xb5, 0xc3, 0x83,
		0xb2, 0x22, 0xdd, 0xfc, 0x3c, 0x74, 0x2d, 0x35, 0x4c, 0x9c, 0x56, 0x50, 0x51, 0xa4, 0x9b, 0x67,
		0x27, 0xe7, 0x6a, 0xf4, 0x54, 0x89, 0x90, 0x5f, 0x4b, 0x8d, 0x40, 0x1e, 0xeb, 0xf9, 0xb1, 0x15,
		0xd8, 0x6d, 0x57, 0x9d, 0xbe, 0x5e, 0x0d, 0x43, 0x45, 0x3a, 0x7b, 0x63, 0x9a, 0x8a, 0x29, 0xad,
		0xb8, 0xcf, 0x17, 0x86, 0x79, 0xae, 0x0c, 0x25, 0x8d, 0x7b, 0xac, 0x94, 0x8e, 0x8d, 0x7a, 0x1c,
		0x28, 0x37, 0xc7, 0xc1, 0x9d, 0xa5, 0x46, 0x68, 0x9a, 0xf5, 0xfc, 0x78, 0x67, 0x29, 0xb1, 0x13,
		0x88, 0x12, 0xc0, 0x80, 0x98, 0x9e, 0x22, 0x11, 0xc9, 0x44, 0x8d, 0x8b, 0x20, 0x64, 0xe0, 0xf8,
		0x4a, 0x78, 0x38, 0x49, 0x60, 0x2a, 0x32, 0xa3, 0x93, 0x32, 0xb3, 0xfb, 0x17, 0x8f, 0x76, 0xa8,
		0x52, 0x87, 0x8f, 0x83, 0xbe, 0x61, 0x2a, 0x11, 0xdb, 0xd7, 0x35, 0x82, 0x50, 0x95, 0x7e, 0x2a,
		0x13, 0x7b, 0x98, 0x74, 0xf6, 0xec, 0x2f, 0x55, 0xba, 0xab, 0xc8, 0x9d, 0xdb, 0xae, 0x69, 0x0f,
		0x54, 0xf1, 0x75, 0x77, 0x2d, 0x4b, 0x89, 0xdb, 0x09, 0x5d, 0xfb, 0xd1, 0x27, 0x0a, 0x99, 0x3c,
		0xbb, 0xfe, 0x89, 0xa3, 0x50, 0x58, 0x7a, 0xd7, 0x3f, 0xf3, 0xfc, 0x1f, 0x86, 0xaf, 0x86, 0x3a,
		0xf0, 0x8d, 0x3e, 0xb9, 0x21, 0x8e, 0xf1, 0xaa, 0x56, 0x6f, 0xe3, 0x7b, 0x15, 0xa6, 0xe7, 0xba,
		0xc4, 0x0c, 0xd5, 0xea, 0xf9, 0xc5, 0x75, 0x5b, 0xad, 0x0e, 0xdf, 0x12, 0xff, 0xd9, 0x56, 0xe3,
		0x02, 0x4b, 0xd7, 0xef, 0x56, 0x1a, 0x17, 0x5d, 0x5f, 0x1d, 0xa3, 0x72, 0xef, 0xa0, 0xbc, 0x6f,
		0x84, 0xd5, 0xfe, 0xa3, 0x3a, 0x9d, 0x6d, 0xd4, 0x94, 0xd0, 0xc6, 0xbd, 0xa3, 0xa3, 0xc3, 0x8a,
		0x2a, 0x1d, 0xad, 0xaa, 0xd2, 0x51, 0x25, 0x2c, 0xf6, 0x3d, 0x55, 0x48, 0x4e, 0xaf, 0xab, 0xc4,
		0x5d, 0xf6, 0x9e, 0xdd, 0x33, 0x1e, 0xed, 0x31, 0xc3, 0x51, 0xc4, 0x84, 0xd4, 0x53, 0x24, 0x99,
		0x48, 0xcf, 0xdf, 0x2f, 0xef, 0xb7, 0x4f, 0xee, 0x94, 0xe9, 0xeb, 0x8d, 0x22, 0x7d, 0x0d, 0x95,
		0x38, 0x59, 0x4f, 0xfb, 0xd5, 0xfd, 0x3f, 0x8c, 0x90, 0x7c, 0x27, 0x64, 0xa0, 0x86, 0xa9, 0x23,
		0xea, 0xf1, 0xb5, 0xef, 0xbd, 0x28, 0xc1, 0x17, 0x9e, 0xac, 0xa7, 0xca, 0x61, 0xb5, 0xaa, 0x46,
		0x57, 0x1d, 0x53, 0x8d, 0x7e, 0x2a, 0x92, 0x04, 0xed, 0xc9, 0x1e, 0x10, 0xdf, 0x31, 0x5c, 0x55,
		0x3a, 0x3b, 0xb0, 0x95, 0xe9, 0xa8, 0x52, 0x49, 0x0d, 0x9e, 0xbc, 0x3e, 0x19, 0xb8, 0x86, 0x1a,
		0x5d, 0x0d, 0xc2, 0x6b, 0x43, 0x09, 0xbb, 0xd1, 0x53, 0x10, 0xa8, 0xb1, 0x5f, 0x5f, 0x07, 0xc4,
		0x57, 0xe8, 0x86, 0x9f, 0x6d, 0xb8, 0x86, 0xce, 0x94, 0x7b, 0x36, 0x69, 0x92, 0x21, 0x07, 0x2d,
		0xdb, 0x60, 0x96, 0x06, 0xc5, 0x96, 0x93, 0x96, 0x61, 0x31, 0x78, 0x8f, 0x83, 0x2a, 0x57, 0x6d,
		0xae, 0xfa, 0x5f, 0x57, 0xba, 0xff, 0xac, 0xb9, 0x6d, 0x73, 0x34, 0x14, 0x2a, 0xff, 0x5b, 0xbe,
		0xfa, 0x5f, 0x55, 0x7e, 0x00, 0x74, 0x39, 0x72, 0x73, 0x34, 0x08, 0x86, 0xdc, 0xb9, 0x39, 0x1c,
		0x85, 0xda, 0xc2, 0x89, 0x32, 0xd7, 0x6e, 0xbe, 0x46, 0x40, 0x65, 0x36, 0xcb, 0xdd, 0x10, 0x98,
		0x72, 0xf3, 0xe6, 0x6e, 0x34, 0x54, 0xf9, 0x64, 0x73, 0x37, 0x0a, 0xa6, 0x3c, 0xb3, 0xb9, 0x1a,
		0xcd, 0x1f, 0x85, 0x58, 0x93, 0x3f, 0x0a, 0xb4, 0x26, 0x54, 0x39, 0x81, 0xf3, 0xd4, 0x7f, 0xba,
		0x5c, 0xc1, 0x79, 0x1b, 0xc1, 0xb5, 0xea, 0x70, 0x8a, 0x2e, 0xb7, 0x70, 0x8e, 0x06, 0x40, 0x73,
		0x55, 0x29, 0x57, 0xdd, 0xa7, 0xca, 0x45, 0x9c, 0xab, 0x11, 0xd0, 0xe5, 0x28, 0xce, 0xd5, 0x10,
		0xa8, 0x72, 0x17, 0xe7, 0x6a, 0x04, 0xd4, 0x39, 0x8d, 0x73, 0x35, 0x0a, 0xca, 0x24, 0x7a, 0xb9,
		0x1a, 0x03, 0x5b, 0x0e, 0xe4, 0x5c, 0x0d, 0x85, 0x3e, 0x37, 0x72, 0xbe, 0x86, 0x41, 0x9b, 0x33,
		0x39, 0x57, 0xa3, 0xa0, 0xcb, 0xa5, 0x9c, 0xa3, 0x21, 0xb0, 0xe7, 0x58, 0xce, 0xcf, 0x60, 0x18,
		0x72, 0x2f, 0xe7, 0x68, 0x10, 0x3c, 0x72, 0x32, 0xe7, 0x68, 0x38, 0x54, 0xb9, 0x9a, 0x73, 0xd4,
		0x7f, 0xca, 0x1c, 0xce, 0x39, 0x1a, 0x41, 0xa0, 0x34, 0x99, 0xe0, 0x94, 0xf3, 0x39, 0x4f, 0x03,
		0x62, 0xcb, 0x05, 0x9d, 0xcb, 0x91, 0x50, 0xe7, 0x88, 0xce, 0xdb, 0x68, 0x98, 0x73, 0x47, 0xe7,
		0x68, 0x40, 0x4c, 0x39, 0xa5, 0x73, 0x34, 0x0e, 0xda, 0x5c, 0xd3, 0x39, 0x1a, 0x02, 0x51, 0xfb,
		0xa0, 0xd3, 0x46, 0xae, 0xe4, 0x68, 0x08, 0x4c, 0x39, 0xab, 0x73, 0x34, 0x0e, 0x57, 0xed, 0xb3,
		0x4c, 0x99, 0xe3, 0x3a, 0x4f, 0x23, 0x60, 0xca, 0x7d, 0x9d, 0x9f, 0x81, 0x50, 0xe5, 0xc4, 0xce,
		0x51, 0xf7, 0x29, 0x73, 0x65, 0xe7, 0x68, 0x04, 0xcc, 0x39, 0xb4, 0x73, 0x37, 0x16, 0x5e, 0xb9,
		0xb5, 0x73, 0x34, 0x30, 0xaa, 0x9c, 0xdb, 0x39, 0xea, 0x3f, 0x8f, 0x5c, 0xdc, 0x39, 0x1c, 0x0e,
		0x73, 0x8e, 0xee, 0x3c, 0x8e, 0x89, 0x3a, 0x77, 0x77, 0x0e, 0x07, 0x43, 0x95, 0xd3, 0x3b, 0x97,
		0xe3, 0x28, 0xc6, 0x7a, 0xb0, 0xe6, 0x00, 0xcf, 0xf1, 0x90, 0x68, 0x73, 0x83, 0xe7, 0x77, 0x48,
		0xb4, 0x39, 0xc3, 0x73, 0x3c, 0xa2, 0x2f, 0x85, 0x19, 0x11, 0x7d, 0x76, 0xc8, 0x1c, 0x0f, 0xa6,
		0x08, 0x50, 0x8d, 0x57, 0x4e, 0xf2, 0x7c, 0x0d, 0x89, 0x35, 0x57, 0x79, 0xfe, 0x46, 0x63, 0x14,
		0xe2, 0x04, 0xd1, 0xe4, 0x36, 0xcf, 0x55, 0xf7, 0x69, 0xd3, 0xd3, 0xe4, 0x69, 0x10, 0x15, 0xc5,
		0xbb, 0x4f, 0x95, 0x23, 0x3d, 0x4f, 0x23, 0x50, 0xfa, 0xca, 0x87, 0xa5, 0x76, 0xa0, 0x22, 0x7d,
		0xae, 0xf5, 0xbc, 0x8d, 0x81, 0x2a, 0x07, 0x7b, 0xae, 0x06, 0xc1, 0x98, 0x9b, 0x3d, 0x6f, 0x63,
		0xa1, 0xcf, 0x27, 0x9e, 0xb7, 0x91, 0x14, 0x02, 0x6b, 0x30, 0xe6, 0x78, 0xcf, 0xdb, 0x48, 0xe8,
		0x72, 0xbf, 0xe7, 0x6a, 0x14, 0x54, 0x39, 0xe1, 0xf3, 0x33, 0x02, 0xa2, 0x34, 0x70, 0xa2, 0xcd,
		0x21, 0x9f, 0xa3, 0x11, 0xa8, 0x7d, 0xc1, 0x91, 0x32, 0xe7, 0x7c, 0x8e, 0x06, 0x40, 0x97, 0x8b,
		0x3e, 0x47, 0x03, 0x60, 0xcb, 0x51, 0x9f, 0xbf, 0x81, 0xd0, 0xe6, 0xae, 0xcf, 0xcf, 0x48, 0xe8,
		0xd2, 0x3d, 0xe6, 0xab, 0xff, 0xca, 0xc7, 0x80, 0x33, 0xe5, 0xc0, 0xcf, 0xd7, 0x30, 0x14, 0xcf,
		0xcd, 0x41, 0x9f, 0x33, 0x3f, 0x47, 0x63, 0xa0, 0xca, 0xa5, 0x9f, 0xa3, 0xfe, 0x33, 0xe5, 0xd8,
		0xcf, 0xd1, 0x38, 0x58, 0x72, 0xef, 0xe7, 0x69, 0x18, 0xd4, 0x39, 0xf9, 0xf3, 0x34, 0x08, 0xfa,
		0x5c, 0xfd, 0x79, 0x1c, 0x05, 0x5b, 0x0e, 0xff, 0x3c, 0x8e, 0x88, 0x2a, 0xb7, 0x7f, 0x1e, 0x07,
		0x42, 0x9d, 0xf3, 0x3f, 0x4f, 0x83, 0x61, 0xab, 0x05, 0x90, 0x9f, 0x91, 0x30, 0xd4, 0x08, 0xc8,
		0xdb, 0x20, 0xa8, 0x6a, 0x07, 0xe4, 0x68, 0x10, 0x74, 0x35, 0x05, 0xf2, 0x35, 0x80, 0xaa, 0xea,
		0x03, 0x50, 0xda, 0xf3, 0xd5, 0x53, 0x9d, 0xac, 0x52, 0xd5, 0x2c, 0xc8, 0x51, 0xf7, 0x59, 0x6b,
		0x19, 0xe4, 0x68, 0x28, 0x8a, 0x27, 0x6b, 0xa3, 0xaf, 0x7d, 0x90, 0xb3, 0x31, 0xdc, 0x28, 0x3e,
		0x86, 0x50, 0xe9, 0x13, 0xcd, 0x5a, 0x43, 0x21, 0x5f, 0x23, 0xa1, 0xac, 0xad, 0x90, 0xa3, 0x41,
		0xd0, 0xd6, 0x5c, 0xc8, 0xd3, 0x10, 0x1c, 0x53, 0xed, 0xfe, 0x2b, 0x9e, 0x9c, 0x97, 0xa1, 0x76,
		0x43, 0xae, 0x06, 0x31, 0xb0, 0x95, 0x1f, 0x40, 0x21, 0x92, 0x37, 0x51, 0xd7, 0x80, 0xc8, 0xd3,
		0x10, 0x28, 0x6b, 0x43, 0xe4, 0x68, 0x08, 0x54, 0x35, 0x23, 0x72, 0xd4, 0x7f, 0xa6, 0x5a, 0x12,
		0xf9, 0x19, 0x87, 0xfd, 0xd8, 0xdf, 0x3f, 0x28, 0x0f, 0x0c, 0xff, 0xf8, 0x49, 0xed, 0x2b, 0xf9,
		0xb6, 0xe2, 0x8e, 0x3a, 0x9b, 0x10, 0x52, 0xd9, 0x3f, 0xaa, 0xa9, 0x3e, 0x86, 0xc3, 0x72, 0xb5,
		0x52, 0x29, 0xc2, 0x20, 0xaa, 0x45, 0x18, 0x44, 0xbd, 0x10, 0xfb, 0xa9, 0xf1, 0xdf, 0x8b, 0xd6,
		0x65, 0x01, 0x06, 0xb2, 0x6f, 0x58, 0xe7, 0x86, 0xd2, 0x89, 0xe4, 0xec, 0xae, 0xde, 0x0b, 0xd4,
		0xd6, 0x13, 0xdd, 0xeb, 0x1f, 0x77, 0xaf, 0x03, 0xa2, 0xf6, 0x18, 0xbe, 0x76, 0x6d, 0xe5, 0x07,
		0xa1, 0x78, 0x0e, 0x20, 0xbb, 0xaf, 0xb4, 0xc1, 0xd8, 0x76, 0xbb, 0xb6, 0x6b, 0x3f, 0x1a, 0x6a,
		0x67, 0x4e, 0x8d, 0xab, 0xa3, 0x39, 0xc4, 0x78, 0x56, 0xfb, 0x28, 0x0c, 0xd4, 0xee, 0x7d, 0x01,
		0xe2, 0x69, 0xec, 0xc1, 0xd5, 0x33, 0xf1, 0x5b, 0x6a, 0x5f, 0x45, 0x1b, 0x0f, 0xe2, 0x58, 0x71,
		0x8b, 0xe5, 0x64, 0x14, 0x8e, 0xf1, 0x43, 0xed, 0x51, 0xa8, 0x5f, 0xe3, 0xd0, 0x0e, 0x2c, 0x57,
		0xf5, 0xfe, 0x07, 0xaa, 0x0f, 0x60, 0xa8, 0xf6, 0x00, 0xbc, 0xc3, 0xc3, 0x72, 0xb5, 0xea, 0x28,
		0x2e, 0x92, 0xc6, 0xc3, 0xd8, 0x57, 0xff, 0x7a, 0xc4, 0x64, 0x24, 0xb5, 0x3b, 0xef, 0x3b, 0x71,
		0x3f, 0x0f, 0x83, 0x02, 0x8c, 0xa5, 0x7e, 0x7c, 0x73, 0x76, 0xdd, 0x76, 0xc3, 0x22, 0x0c, 0xe5,
		0x24, 0xf4, 0x8b, 0x30, 0x8c, 0x33, 0xfb, 0x91, 0x14, 0x62, 0x20, 0xf1, 0x31, 0xb9, 0x51, 0x3c,
		0xfb, 0xff, 0x64, 0x30, 0x8d, 0x0b, 0xc5, 0x09, 0x77, 0x30, 0x54, 0x9a, 0x27, 0x39, 0x55, 0xd5,
		0xd3, 0x1e, 0x3b, 0xfb, 0xf6, 0xa0, 0x08, 0x63, 0x78, 0x51, 0x7e, 0x10, 0xc6, 0xe0, 0x51, 0xf1,
		0xfe, 0x5b, 0x8a, 0xf7, 0x5f, 0xe9, 0xbc, 0x9a, 0x8e, 0xed, 0x92, 0x9e, 0xef, 0x29, 0x2e, 0x4f,
		0xfb, 0x6a, 0x77, 0xdf, 0x33, 0x0d, 0xe7, 0xce, 0x70, 0x94, 0xbe, 0x04, 0xd1, 0x37, 0xcc, 0x5b,
		0x62, 0x1e, 0x7b, 0x6e, 0xe8, 0x7b, 0x8e, 0x43, 0xac, 0xf6, 0x99, 0xfa, 0xa3, 0xf9, 0xe2, 0x9a,
		0x45, 0x19, 0x0f, 0xb1, 0x6c, 0xe3, 0xc2, 0xb0, 0x9d, 0xab, 0x67, 0xe2, 0xb7, 0x95, 0x3e, 0x2d,
		0xfd, 0xee, 0xad, 0xdd, 0x53, 0xfd, 0x22, 0x73, 0xdf, 0xf6, 0x5e, 0xd4, 0xce, 0x96, 0xdf, 0xf7,
		0x4c, 0xe3, 0x2b, 0xf1, 0x03, 0xdb, 0x73, 0x2b, 0x6a, 0x8f, 0xc3, 0x22, 0x4a, 0x9b, 0xfa, 0xfb,
		0x03, 0x53, 0xed, 0xee, 0x93, 0xde, 0x9d, 0x6f, 0xb8, 0xc1, 0x40, 0xf1, 0xdc, 0xb0, 0xfd, 0x81,
		0x13, 0xa8, 0xde, 0xff, 0xbb, 0xa1, 0xea, 0x51, 0x8c, 0xfd, 0x40, 0xf1, 0xe8, 0xbf, 0xfe, 0xb3,
		0xda, 0xdd, 0x7f, 0xf5, 0x6d, 0xc5, 0x2f, 0xd0, 0xb9, 0x5d, 0x43, 0xe9, 0x83, 0xec, 0x06, 0x6a,
		0x47, 0x11, 0x78, 0xe3, 0xf2, 0xb7, 0x05, 0x48, 0x93, 0xf2, 0x76, 0x24, 0x7f, 0xa8, 0x4e, 0xb3,
		0x27, 0xc3, 0x29, 0x84, 0xb6, 0xf6, 0x54, 0x4f, 0xac, 0xe5, 0x85, 0xee, 0x95, 0x35, 0x54, 0x7d,
		0x04, 0xa1, 0xd2, 0x23, 0x18, 0x18, 0xbe, 0xd2, 0xb7, 0x87, 0x06, 0x96, 0x1b, 0xdf, 0x78, 0x3f,
		0xf7, 0xbc, 0x41, 0xa5, 0x28, 0x03, 0x51, 0x3a, 0x5a, 0x7f, 0xa0, 0xb6, 0xea, 0x1e, 0xa8, 0x1d,
		0xdc, 0x31, 0xf0, 0xdc, 0x4a, 0xbd, 0xae, 0xf8, 0x08, 0x1a, 0x6a, 0xdf, 0xb2, 0x1e, 0x78, 0x4a,
		0x83, 0xef, 0xc1, 0x60, 0xa0, 0x78, 0xf7, 0x2f, 0x86, 0x4e, 0x68, 0x3b, 0xb6, 0xfb, 0x5d, 0xfd,
		0x14, 0x59, 0x03, 0xdf, 0xee, 0x1b, 0xfe, 0x6b, 0xfb, 0xf6, 0xe4, 0x52, 0xed, 0x61, 0x78, 0x03,
		0xc5, 0xe3, 0x91, 0xa3, 0x21, 0x7c, 0xfe, 0x6f, 0x6b, 0x50, 0xbd, 0x18, 0xa8, 0x3e, 0x8c, 0x63,
		0x57, 0x6d, 0x3b, 0x5f, 0x34, 0x86, 0x13, 0xcf, 0x0c, 0xfe, 0x6b, 0xfb, 0xc4, 0x21, 0x41, 0x41,
		0x8a, 0x76, 0x2e, 0x8e, 0xaa, 0x08, 0xb5, 0x3b, 0x17, 0xc7, 0x54, 0x84, 0xd2, 0x19, 0xd1, 0x98,
		0x62, 0x0d, 0x33, 0x70, 0xc8, 0x8b, 0xa7, 0xfc, 0xf2, 0x5c, 0x7b, 0xb6, 0x1b, 0xde, 0x79, 0xf1,
		0xff, 0x6e, 0x89, 0x6f, 0x1b, 0x8e, 0xea, 0x23, 0xfa, 0x6a, 0xfb, 0xe1, 0x50, 0xfd, 0x61, 0x4c,
		0xcf, 0xcc, 0x75, 0xf5, 0x5a, 0xf1, 0xa1, 0x84, 0xc4, 0x73, 0x2b, 0x65, 0xd5, 0xcb, 0x0a, 0x4c,
		0x06, 0x72, 0xa8, 0xfe, 0x40, 0xd4, 0x06, 0x62, 0xff, 0x5b, 0x3d, 0xda, 0x57, 0xda, 0xd4, 0xf3,
		0xbf, 0x6a, 0xeb, 0xbf, 0xff, 0x55, 0xfc, 0xfe, 0x8b, 0x6f, 0x58, 0xb6, 0x77, 0xd1, 0x3a, 0x56,
		0x7c, 0x0c, 0x6a, 0xfb, 0x88, 0x7d, 0x62, 0x98, 0x4f, 0x27, 0xb7, 0xe7, 0x6a, 0x8f, 0xa1, 0x37,
		0x74, 0x0c, 0x5f, 0xf5, 0xa4, 0x80, 0x7e, 0xd7, 0xac, 0xd4, 0xd4, 0xce, 0x3d, 0xec, 0x77, 0xcd,
		0xc3, 0x83, 0x03, 0xc5, 0xc3, 0xd1, 0xfc, 0x81, 0xd2, 0x5c, 0xc2, 0x0f, 0xaa, 0xfb, 0x6a, 0x9f,
		0x83, 0xc0, 0x57, 0xfa, 0x1e, 0x42, 0x60, 0x99, 0xb6, 0xda, 0xfd, 0x57, 0x1b, 0x57, 0xa8, 0x1e,
		0xb6, 0x15, 0x3c, 0xa9, 0x3e, 0x00, 0xb5, 0x3d, 0x8f, 0x81, 0x3d, 0xb8, 0xb5, 0x7b, 0x8a, 0x8f,
		0xe0, 0x4e, 0xf1, 0x01, 0xbc, 0xdc, 0x79, 0x67, 0xde, 0x50, 0x69, 0x45, 0x1c, 0x38, 0x8a, 0x9f,
		0x83, 0xbe, 0x15, 0x9c, 0xbc, 0xd8, 0xaa, 0x0f, 0xa1, 0x6d, 0x2a, 0xbe, 0x0c, 0x5e, 0x37, 0xfc,
		0x61, 0xf8, 0xe4, 0xdc, 0xf3, 0x06, 0x8f, 0x86, 0xf9, 0x5d, 0xed, 0xb1, 0x28, 0x1e, 0xd0, 0x1b,
		0x0f, 0xe0, 0xea, 0x99, 0xf8, 0x4f, 0xc4, 0xb0, 0x0a, 0x10, 0x56, 0x1a, 0x8f, 0xe7, 0xda, 0x08,
		0x9f, 0x94, 0x1f, 0xc4, 0x57, 0xa5, 0x2b, 0x64, 0x04, 0xbe, 0xda, 0x32, 0x2a, 0x38, 0x28, 0xc0,
		0x4d, 0xba, 0x20, 0x34, 0xcc, 0xef, 0x77, 0xde, 0x6d, 0xa8, 0xba, 0x94, 0x0d, 0x0d, 0xff, 0x5c,
		0xed, 0x5c, 0x04, 0xa1, 0xe2, 0x1c, 0x34, 0x24, 0xaa, 0x1f, 0x86, 0x90, 0xf8, 0x7d, 0xc5, 0xcb,
		0x01, 0x84, 0x7e, 0xb9, 0x7c, 0xa8, 0xf6, 0x00, 0x0c, 0x37, 0x18, 0xfc, 0xa9, 0xfa, 0x59, 0x50,
		0xfe, 0x26, 0xe0, 0xd0, 0x09, 0xd5, 0x8e, 0xce, 0x1f, 0x06, 0x4a, 0x5b, 0x54, 0x9f, 0xd5, 0x4e,
		0xfe, 0xff, 0xbc, 0x5f, 0x57, 0xbb, 0xfb, 0x0d, 0xb5, 0xbb, 0x7f, 0xa0, 0x74, 0xf7, 0x15, 0x37,
		0x06, 0x3f, 0xab, 0x5e, 0x2a, 0xec, 0x79, 0x1c, 0xc5, 0xd6, 0x1e, 0xb4, 0x2c, 0xcb, 0x27, 0x41,
		0x50, 0x80, 0xb1, 0xa8, 0x6d, 0x1c, 0x7e, 0xee, 0xff, 0x30, 0x7c, 0x72, 0x69, 0x9b, 0x77, 0x8a,
		0x07, 0xb0, 0x8e, 0x07, 0x32, 0x89, 0x92, 0xbc, 0xb4, 0x95, 0x06, 0x79, 0xcf, 0x9e, 0x6d, 0x92,
		0x93, 0xf6, 0x89, 0xf2, 0x63, 0x38, 0xfd, 0x7c, 0xab, 0xfe, 0x18, 0x2e, 0x0a, 0x30, 0x84, 0xb3,
		0x3f, 0x0a, 0xb0, 0x99, 0x5c, 0xd3, 0x18, 0x28, 0x3f, 0x8a, 0xb3, 0x3f, 0x4e, 0x4e, 0x5b, 0x97,
		0xad, 0x22, 0x8c, 0xe3, 0x4a, 0xfd, 0xc3, 0x7d, 0xf6, 0xd7, 0x55, 0x01, 0xc6, 0xa0, 0xfe, 0x3a,
		0x14, 0xa0, 0xb4, 0x47, 0x32, 0x8e, 0x63, 0xe3, 0x51, 0xed, 0xeb, 0x99, 0xc9, 0x48, 0xce, 0x7c,
		0xa3, 0x4f, 0x6e, 0x88, 0x63, 0xbc, 0x16, 0x62, 0x38, 0x6a, 0xe7, 0x57, 0xfc, 0xf1, 0xc3, 0x70,
		0xaf, 0xaf, 0xd5, 0x1f, 0x81, 0xd2, 0xfc, 0xf5, 0xa5, 0x5a, 0xd9, 0x57, 0xbb, 0xff, 0xf5, 0xa7,
		0xa1, 0x1b, 0x2a, 0x9f, 0xf2, 0xe8, 0xa5, 0x5a, 0xef, 0x3b, 0xaa, 0x8f, 0x60, 0xa0, 0xb6, 0x9a,
		0x78, 0x39, 0x6c, 0x9c, 0x1b, 0x03, 0xa5, 0x4d, 0x38, 0x2f, 0x8f, 0xde, 0xcb, 0xf4, 0x46, 0x22,
		0xc3, 0x38, 0xa8, 0x9e, 0xec, 0x7c, 0x90, 0x30, 0x5f, 0x74, 0xf3, 0xc4, 0xab, 0xf6, 0x74, 0x06,
		0x1d, 0xa6, 0x32, 0xf0, 0x66, 0xd0, 0x4f, 0xea, 0x5a, 0xd2, 0xd9, 0xf4, 0x95, 0xb2, 0x66, 0x74,
		0x76, 0x9d, 0xad, 0xaa, 0xd4, 0xd9, 0xba, 0x52, 0xfb, 0x80, 0xb2, 0xd6, 0x73, 0x66, 0x1d, 0xa6,
		0xad, 0xe9, 0x9c, 0x41, 0x87, 0x29, 0x6b, 0x37, 0x67, 0xd1, 0x53, 0xda, 0x1a, 0xcd, 0x59, 0xf4,
		0x95, 0xba, 0x16, 0x73, 0x06, 0x9d, 0x75, 0x14, 0x51, 0xb4, 0x34, 0xb5, 0x95, 0x33, 0xe8, 0x26,
		0x43, 0x0d, 0xe5, 0x2c, 0x7a, 0x4b, 0x5f, 0x2b, 0x39, 0x83, 0xde, 0x0e, 0xd4, 0xe8, 0x25, 0x75,
		0xed, 0xe3, 0x2c, 0x3a, 0x4b, 0x6d, 0x08, 0xcd, 0xaa, 0xb3, 0x74, 0xb5, 0x8c, 0x33, 0xeb, 0x2d,
		0x55, 0xcd, 0xe2, 0x2c, 0x7a, 0x4b, 0x5b, 0x9b, 0x38, 0x83, 0xbe, 0x52, 0xd5, 0x20, 0xce, 0xa6,
		0x9f, 0x81, 0x2a, 0x1d, 0x1d, 0xaa, 0xd1, 0x51, 0x86, 0xda, 0xc1, 0x99, 0x75, 0x97, 0xba, 0x46,
		0x70, 0x66, 0x3d, 0x66, 0xa8, 0x05, 0x9c, 0x59, 0x9f, 0xe9, 0x6b, 0xfe, 0x66, 0xd7, 0x65, 0xaa,
		0xda, 0xbe, 0xd9, 0x75, 0x97, 0xb2, 0x86, 0x6f, 0x76, 0x1d, 0x66, 0xa8, 0xd5, 0x9b, 0x59, 0xa7,
		0xe9, 0x6a, 0xf2, 0x66, 0xd1, 0xdd, 0xa1, 0x12, 0x78, 0x9c, 0xb6, 0xc6, 0x6e, 0x06, 0x3d, 0xa5,
		0xae, 0xa5, 0x9b, 0x4d, 0x5f, 0x5f, 0x94, 0xe9, 0x2c, 0x55, 0x6d, 0xdc, 0x4c, 0xfa, 0x69, 0x29,
		0xd2, 0xcf, 0xae, 0x12, 0xfd, 0xa4, 0xaf, 0x69, 0x9b, 0x41, 0x67, 0xfb, 0x6a, 0x74, 0x93, 0xbe,
		0x46, 0xad, 0xfc, 0xce, 0xf2, 0xa8, 0x45, 0x9b, 0x55, 0xaf, 0x59, 0x6b, 0xce, 0x66, 0xd0, 0x6f,
		0xd6, 0xda, 0xb2, 0x19, 0x74, 0x99, 0xbe, 0x86, 0x6c, 0x06, 0x9d, 0xa5, 0xac, 0x15, 0x9b, 0x41,
		0x4f, 0x99, 0x6a, 0xc2, 0x66, 0xd1, 0x5f, 0xaa, 0xda, 0xaf, 0x19, 0x74, 0x74, 0x60, 0xaa, 0xd1,
		0x4d, 0xa6, 0x5a, 0xae, 0x59, 0x74, 0xd8, 0x09, 0x54, 0xe9, 0x27, 0x6d, 0x6d, 0xd6, 0x0c, 0x7a,
		0x1b, 0x28, 0x12, 0x1d, 0x43, 0x55, 0x6b, 0x35, 0x83, 0x6e, 0xd2, 0xd6, 0x54, 0x95, 0xdf, 0x55,
		0xba, 0xda, 0xa9, 0x19, 0xf4, 0x33, 0x50, 0xc3, 0xab, 0xc8, 0x5a, 0x0b, 0x35, 0xeb, 0x1e, 0xff,
		0xa1, 0x0a, 0x0d, 0x63, 0xaf, 0x6d, 0x9a, 0x41, 0x9f, 0xe9, 0x6a, 0x98, 0x66, 0xd1, 0x51, 0xba,
		0x5a, 0xa5, 0xd9, 0xf4, 0x34, 0x54, 0xa2, 0xa7, 0x74, 0xb5, 0x47, 0x33, 0xe8, 0x27, 0x5b, 0x8d,
		0xd1, 0x6c, 0x3b, 0xac, 0x44, 0x74, 0xe7, 0x40, 0x0d, 0x55, 0x36, 0x50, 0xc3, 0x79, 0x4b, 0x5b,
		0x03, 0x34, 0x93, 0x9e, 0x52, 0xd5, 0xfa, 0xcc, 0xa2, 0xa7, 0x4a, 0x80, 0x42, 0xaa, 0xda, 0x9d,
		0x99, 0x74, 0x93, 0xb9, 0x46, 0x67, 0x06, 0xbd, 0x66, 0xa9, 0xc5, 0x99, 0x45, 0x77, 0x29, 0x6b,
		0x6e, 0x66, 0xd3, 0x55, 0xea, 0xda, 0x9a, 0xd9, 0x74, 0x97, 0xae, 0x86, 0x66, 0x36, 0x7d, 0xe5,
		0x55, 0x2b, 0x33, 0xfb, 0xde, 0xd3, 0xd7, 0xc4, 0xcc, 0xbe, 0xef, 0xf4, 0xb5, 0x2f, 0xb3, 0xe9,
		0x3b, 0x53, 0x8d, 0xcb, 0x6c, 0xba, 0xcc, 0xa3, 0x96, 0x65, 0x36, 0x3d, 0xa7, 0xae, 0x59, 0x99,
		0x4d, 0x77, 0x99, 0x6a, 0x53, 0x66, 0xd2, 0x65, 0x96, 0x1a, 0x94, 0x99, 0x75, 0xf8, 0x50, 0x9d,
		0x0e, 0xab, 0x01, 0x34, 0x28, 0x6b, 0x47, 0x66, 0xd0, 0x51, 0x35, 0xf4, 0xc4, 0xff, 0x2a, 0x12,
		0xcf, 0x4c, 0x5f, 0xf3, 0x31, 0x93, 0xbe, 0xaa, 0xe1, 0x7b, 0xa2, 0xaf, 0xe1, 0x98, 0x45, 0x5f,
		0x19, 0x6a, 0x35, 0x66, 0xd0, 0x5d, 0xda, 0x9a, 0x8c, 0x99, 0x74, 0x95, 0xb6, 0xf6, 0x62, 0x06,
		0x9d, 0x1d, 0x28, 0x81, 0x65, 0x29, 0x6b, 0x29, 0x66, 0xd1, 0x51, 0x5f, 0x89, 0xf8, 0x54, 0xba,
		0xda, 0x88, 0x59, 0xf4, 0x53, 0x0d, 0x7d, 0xaa, 0x4a, 0x78, 0x04, 0x65, 0x4d, 0xc3, 0x0c, 0x3a,
		0xaa, 0x86, 0x07, 0x84, 0xb6, 0x46, 0x61, 0x26, 0x3d, 0xbd, 0x53, 0xa4, 0xa3, 0xd4, 0x35, 0x07,
		0x33, 0xe8, 0xac, 0xa3, 0xc8, 0x3e, 0xa5, 0xad, 0x21, 0x98, 0x4d, 0x57, 0xe9, 0x6a, 0x05, 0x66,
		0xd0, 0x57, 0xe6, 0x9a, 0x80, 0x59, 0xf4, 0x59, 0x91, 0xc0, 0x33, 0x3e, 0x35, 0xfe, 0x32, 0xea,
		0x37, 0x5d, 0x2d, 0xbf, 0x8c, 0x3a, 0x4b, 0x53, 0xb3, 0x2f, 0x83, 0xae, 0xfa, 0x6a, 0xc8, 0x04,
		0x86, 0x1a, 0x7c, 0x19, 0xf4, 0x96, 0xa9, 0xd6, 0x5e, 0x26, 0xfd, 0xa5, 0xab, 0xa9, 0x27, 0xbf,
		0xab, 0xa1, 0x22, 0xdc, 0x85, 0xb6, 0x46, 0x5e, 0x16, 0x3d, 0xa5, 0xac, 0x85, 0x97, 0x41, 0x57,
		0xe9, 0x6a, 0xde, 0x65, 0xd1, 0x51, 0xfa, 0xda, 0x76, 0x19, 0xf4, 0x56, 0x99, 0x1b, 0x13, 0x94,
		0xb5, 0xea, 0x32, 0xe8, 0x68, 0xa0, 0x84, 0xc5, 0xea, 0x59, 0x8d, 0x24, 0xa2, 0x54, 0x35, 0xe6,
		0xb2, 0xe8, 0x66, 0x43, 0x8d, 0x6e, 0x1e, 0x28, 0xd1, 0x4d, 0x45, 0x8c, 0x6a, 0x94, 0x35, 0xe0,
		0x32, 0xe8, 0x28, 0x73, 0xad, 0xb7, 0xcc, 0xfa, 0xac, 0x86, 0x91, 0x8d, 0xb1, 0x76, 0x5b, 0x56,
		0x1d, 0x66, 0xa9, 0xd1, 0x96, 0x41, 0x9f, 0xa9, 0x6b, 0xb1, 0x65, 0xd4, 0x57, 0xaa, 0x9a, 0x6b,
		0x59, 0xf5, 0xf5, 0x42, 0xa1, 0xae, 0x52, 0xd5, 0x50, 0xcb, 0xaa, 0xb7, 0x74, 0xb5, 0xd2, 0x32,
		0xea, 0x2d, 0x75, 0x4d, 0xb4, 0xec, 0xfa, 0x7b, 0xa5, 0xce, 0x21, 0xa3, 0xaa, 0x71, 0x96, 0x59,
		0x5f, 0xd5, 0x99, 0x57, 0x85, 0x52, 0xf5, 0xb2, 0xd6, 0x26, 0xcb, 0xb0, 0xc7, 0x2c, 0x35, 0xc8,
		0x32, 0xec, 0xb6, 0x1a, 0xf9, 0x76, 0x68, 0x6b, 0x8a, 0x65, 0xd5, 0x53, 0x25, 0x78, 0x0f, 0x5d,
		0x8d, 0xb0, 0x2c, 0xfa, 0xc9, 0x52, 0x0b, 0x2c, 0x93, 0xfe, 0x52, 0xd5, 0xfc, 0xca, 0xa4, 0xa7,
		0x03, 0x35, 0xc4, 0x2c, 0x75, 0x0d, 0xaf, 0x0c, 0xba, 0xca, 0x54, 0xab, 0x2b, 0x5d, 0x8d, 0xae,
		0xcd, 0x6b, 0x73, 0x6d, 0xd6, 0xee, 0x86, 0xb3, 0x55, 0x22, 0x2f, 0xa1, 0x6f, 0xe8, 0x43, 0x37,
		0x08, 0x63, 0x3d, 0xdd, 0x4c, 0x31, 0x67, 0x25, 0x9f, 0x74, 0x89, 0x4f, 0x5c, 0x33, 0x7a, 0xec,
		0xdb, 0x07, 0xb1, 0x0b, 0x93, 0x2c, 0xca, 0xcd, 0xd9, 0xb1, 0x56, 0x3d, 0x6c, 0xec, 0x37, 0xb5,
		0xbb, 0x27, 0xa2, 0xb5, 0xdd, 0x90, 0xf8, 0x5d, 0xc3, 0x24, 0x81, 0x16, 0x4b, 0x15, 0xed, 0xa2,
		0xfd, 0x59, 0xd3, 0x35, 0xbb, 0x1b, 0x57, 0x5f, 0x49, 0xbf, 0x63, 0x4a, 0xb7, 0xde, 0xd0, 0x37,
		0xd3, 0xcd, 0xc3, 0x9b, 0xe7, 0xff, 0x43, 0x5e, 0x7f, 0x78, 0xbe, 0x35, 0x8e, 0x95, 0x9e, 0x4e,
		0x0f, 0x5d, 0xd5, 0xb9, 0xd2, 0x9f, 0x46, 0xd0, 0xf2, 0x7b, 0xc3, 0x3e, 0x71, 0xc3, 0x52, 0x53,
		0x0b, 0xfd, 0x21, 0xa1, 0x6c, 0x68, 0xae, 0x95, 0x54, 0xf3, 0x27, 0x78, 0xcf, 0x6f, 0xfe, 0xed,
		0x0e, 0xd7, 0x3d, 0xdf, 0x72, 0x5d, 0x2f, 0x34, 0x42, 0xdb, 0x73, 0xd3, 0xed, 0xf7, 0xd7, 0x9e,
		0x17, 0xea, 0x9e, 0xa9, 0x9b, 0x5e, 0x7f, 0xe0, 0x93, 0x20, 0x20, 0x96, 0xee, 0x10, 0xa3, 0x1b,
		0x35, 0xb2, 0xe1, 0xa1, 0xfc, 0xc0, 0xf6, 0x8d, 0x77, 0x06, 0x58, 0x3a, 0x7d, 0x09, 0x83, 0x8d,
		0xce, 0xe2, 0x66, 0x83, 0x9e, 0xdf, 0xcc, 0x9e, 0xa9, 0x93, 0x97, 0xb0, 0x19, 0x12, 0x87, 0xf4,
		0x49, 0xe8, 0xbf, 0xea, 0x9e, 0xab, 0x9b, 0x4f, 0x86, 0xdb, 0xdb, 0x74, 0x77, 0x2f, 0xec, 0xe6,
		0xae, 0xe1, 0x04, 0x64, 0xd3, 0xf5, 0x9a, 0xdb, 0xbe, 0x25, 0xc6, 0x29, 0xec, 0xbc, 0x33, 0x85,
		0xad, 0x61, 0x2f, 0x7a, 0x15, 0xb1, 0x78, 0xce, 0xe3, 0x54, 0x76, 0xed, 0x79, 0xa6, 0x6e, 0x77,
		0x9b, 0x76, 0x72, 0xe8, 0x16, 0x3f, 0x98, 0xfc, 0x6e, 0x7a, 0x6e, 0xd7, 0xee, 0x6d, 0x3a, 0xb1,
		0x27, 0x24, 0x30, 0x7d, 0x7b, 0x30, 0xd9, 0xcf, 0xa5, 0x96, 0x65, 0x05, 0xda, 0xdd, 0x75, 0xfb,
		0x44, 0xdb, 0xd3, 0x48, 0xf8, 0x44, 0xfc, 0xf0, 0x75, 0x40, 0xb4, 0x80, 0x84, 0xa1, 0xed, 0xf6,
		0xb4, 0xae, 0xe7, 0x6b, 0xe1, 0x13, 0xd1, 0x1e, 0x8d, 0x80, 0x68, 0xc9, 0x7b, 0x37, 0x7d, 0xd5,
		0x7f, 0x6c, 0x37, 0x9a, 0x98, 0xca, 0x86, 0x5f, 0x3f, 0x1e, 0x8f, 0xa3, 0xa9, 0x95, 0x37, 0x7c,
		0xe0, 0xda, 0x27, 0x5d, 0xfb, 0x25, 0xdd, 0xa9, 0x4c, 0x12, 0xf6, 0x98, 0x7a, 0x9c, 0x8e, 0x7a,
		0x73, 0x19, 0x49, 0x2b, 0xec, 0xe7, 0xcf, 0xc5, 0x60, 0xdc, 0xe3, 0x74, 0x82, 0x99, 0x59, 0xb2,
		0xbf, 0x39, 0x12, 0xd3, 0x81, 0x67, 0x84, 0x20, 0x4e, 0x6c, 0x3f, 0xdd, 0x82, 0x85, 0x03, 0xdb,
		0x4a, 0x3f, 0xe7, 0x89, 0x2b, 0x3f, 0x7a, 0x3a, 0xe5, 0x6c, 0x2d, 0x9c, 0x90, 0xab, 0xf8, 0x27,
		0xc3, 0x71, 0x5e, 0xa3, 0x63, 0x11, 0x1f, 0x87, 0xd0, 0xe8, 0x69, 0x03, 0xdf, 0x0b, 0x3d, 0xd3,
		0x73, 0x34, 0xdb, 0x22, 0x6e, 0x68, 0x77, 0x6d, 0xe2, 0x6b, 0x5d, 0x9b, 0x38, 0x96, 0xb6, 0x13,
		0x1d, 0xa7, 0x5d, 0x2d, 0x7c, 0x32, 0xc2, 0x7b, 0xd7, 0x0e, 0x34, 0xc3, 0x34, 0xc9, 0x20, 0x24,
		0x96, 0xe6, 0xb9, 0xf1, 0xd3, 0x5f, 0xcf, 0x5b, 0x97, 0xe9, 0xfb, 0xd4, 0x35, 0x86, 0x4e, 0x98,
		0x1a, 0x3a, 0xc5, 0x0f, 0x4f, 0x96, 0x5c, 0x8f, 0x8e, 0x76, 0xd0, 0x8c, 0x7a, 0xf7, 0x50, 0xfe,
		0xeb, 0xb0, 0x52, 0x2e, 0xa7, 0x53, 0xd9, 0x9d, 0x94, 0x7d, 0x9e, 0x1c, 0xff, 0x72, 0xca, 0xc7,
		0xd2, 0x8a, 0x01, 0x16, 0x71, 0xc0, 0x41, 0x2c, 0x88, 0xc0, 0x82, 0x54, 0x62, 0x42, 0x2c, 0x10,
		0x4c, 0x2d, 0x36, 0x28, 0x41, 0x5e, 0xca, 0x35, 0x8f, 0x81, 0x27, 0xd3, 0x8a, 0x8f, 0x8f, 0x6f,
		0xf8, 0xea, 0x93, 0x2e, 0xcd, 0xaa, 0x4f, 0x75, 0x5c, 0x9d, 0xe2, 0xd9, 0xf6, 0xe4, 0xd5, 0x9f,
		0x8d, 0x80, 0x61, 0xdf, 0x4c, 0x07, 0x12, 0x9f, 0xeb, 0xbb, 0xbf, 0xaf, 0x4f, 0x6f, 0x69, 0x37,
		0xce, 0x57, 0xc3, 0x19, 0x92, 0x80, 0x4a, 0xc6, 0xb0, 0x71, 0xe8, 0xd5, 0x63, 0xa1, 0x91, 0x51,
		0x8c, 0x26, 0x00, 0x41, 0xc3, 0x38, 0x6c, 0x1d, 0x16, 0x60, 0x18, 0x47, 0xc5, 0x58, 0x8d, 0xa3,
		0x6a, 0x01, 0x86, 0xd1, 0xba, 0xfc, 0x5b, 0x81, 0x7a, 0xf0, 0x82, 0xf8, 0xbd, 0x1c, 0xfa, 0xfc,
		0x2e, 0xf7, 0x4b, 0x67, 0x17, 0x28, 0x05, 0xe6, 0x13, 0xe9, 0x1b, 0x03, 0x23, 0x7c, 0x1a, 0x93,
		0xbb, 0x01, 0x71, 0xc7, 0xcc, 0x4d, 0x9f, 0x63, 0x78, 0xab, 0x7e, 0xdc, 0x9b, 0x10, 0xbc, 0x0f,
		0x74, 0x63, 0xf9, 0xcd, 0x8e, 0x2d, 0xc5, 0x8c, 0xcf, 0x25, 0xe1, 0xbb, 0x23, 0x48, 0x76, 0x5f,
		0xf2, 0xc4, 0x3b, 0xb3, 0xb3, 0x19, 0xf7, 0xdb, 0x18, 0xec, 0xa5, 0x01, 0x77, 0xf3, 0x60, 0x8e,
		0x84, 0x4f, 0x1b, 0x68, 0xc3, 0xb4, 0xd8, 0x8d, 0x1a, 0xab, 0x51, 0x63, 0xb3, 0x45, 0x2c, 0x46,
		0x36, 0xb9, 0xf8, 0xc3, 0x66, 0x1e, 0xda, 0x94, 0xa9, 0x95, 0xcc, 0xe9, 0x1a, 0xa6, 0xb4, 0x6f,
		0xa4, 0xb3, 0x5b, 0xe4, 0xdc, 0x98, 0xb0, 0xd9, 0x46, 0x2b, 0x9e, 0x2d, 0x81, 0xa4, 0xb9, 0x81,
		0x96, 0xb1, 0x29, 0xc1, 0xe8, 0xf5, 0x7c, 0xd2, 0x33, 0x42, 0xa2, 0xb3, 0x98, 0x14, 0xde, 0xb4,
		0xb2, 0x1d, 0x94, 0xd8, 0x31, 0x7a, 0x60, 0xc4, 0x2b, 0x36, 0x7f, 0x34, 0x2f, 0x85, 0x23, 0xc4,
		0x0e, 0x31, 0xba, 0x8c, 0x64, 0xf8, 0x80, 0xe2, 0xd9, 0xeb, 0x04, 0x18, 0x6d, 0x66, 0xf5, 0x76,
		0xa3, 0xee, 0x0a, 0x9d, 0x4a, 0x4a, 0xc7, 0x4f, 0xf2, 0x3c, 0xb3, 0x03, 0x88, 0x02, 0x19, 0xa7,
		0x50, 0x41, 0xc6, 0x30, 0xf4, 0x74, 0x97, 0xf4, 0xbc, 0xd0, 0x36, 0x42, 0xc2, 0x20, 0x0f, 0xdf,
		0xb6, 0x23, 0xd3, 0xb0, 0x19, 0x9d, 0x64, 0xd8, 0x30, 0x99, 0xd1, 0xc8, 0xf6, 0x08, 0x6c, 0x42,
		0x75, 0x5f, 0x3e, 0xe7, 0x02, 0xfb, 0xd1, 0xf3, 0x1c, 0x42, 0x67, 0xb3, 0x9e, 0x0a, 0xec, 0x8a,
		0xd0, 0x21, 0x32, 0x44, 0x8d, 0x24, 0x6d, 0xd0, 0x47, 0x8f, 0xb0, 0x9b, 0x5f, 0x92, 0x99, 0x6e,
		0x9f, 0x9e, 0x9e, 0x6a, 0x87, 0xe5, 0xea, 0xa7, 0x7d, 0xbd, 0x5a, 0xae, 0x54, 0xb5, 0x37, 0xa2,
		0xcf, 0xf6, 0x5c, 0x2d, 0xbe, 0xe7, 0xda, 0xb7, 0x83, 0x20, 0xfa, 0x65, 0x60, 0xf8, 0x46, 0x9f,
		0x84, 0xc4, 0x0f, 0x4a, 0xf4, 0x46, 0x23, 0xd6, 0x33, 0xb9, 0xea, 0x6c, 0xb2, 0x86, 0x9a, 0x70,
		0x3f, 0xa6, 0x2b, 0x8f, 0x2b, 0xf5, 0x64, 0x4b, 0xb6, 0x8b, 0xa5, 0x7f, 0xaa, 0x03, 0xd8, 0x42,
		0x0f, 0x5b, 0xac, 0xe1, 0xc0, 0x21, 0x2f, 0x7a, 0xdf, 0xb3, 0x18, 0x30, 0xcb, 0x7c, 0x23, 0x40,
		0x04, 0x40, 0x04, 0x05, 0x43, 0x04, 0xc4, 0x1d, 0xf6, 0x89, 0x3f, 0x96, 0x01, 0x0c, 0xa8, 0xa0,
		0x46, 0xf1, 0xec, 0xa9, 0x3b, 0xec, 0xd3, 0x6f, 0x97, 0x3b, 0xef, 0x36, 0xf4, 0x6d, 0xb7, 0xc7,
		0xa4, 0xee, 0x4a, 0xe5, 0x68, 0x0e, 0xce, 0xbe, 0x9c, 0x9f, 0xb3, 0xe8, 0xdd, 0x4a, 0xd4, 0xc8,
		0x9f, 0xad, 0xf3, 0x33, 0x3a, 0x7d, 0x42, 0xe9, 0x27, 0x2a, 0xdd, 0x79, 0x6d, 0x37, 0x64, 0x1b,
		0x7e, 0x3c, 0xf2, 0xd4, 0x82, 0xe6, 0xed, 0x69, 0x8b, 0xc6, 0xdd, 0xd4, 0x2a, 0x92, 0x14, 0xe2,
		0x08, 0x0a, 0x91, 0x5e, 0x21, 0x12, 0x37, 0x42, 0xd5, 0x7a, 0xd7, 0xf1, 0x7e, 0xe8, 0x93, 0x12,
		0xe0, 0xf4, 0x8a, 0x71, 0x55, 0x63, 0x32, 0x19, 0x7d, 0x1c, 0xe8, 0x09, 0x4a, 0x0f, 0x05, 0x0e,
		0x4a, 0x0f, 0x4a, 0x2f, 0x97, 0xd2, 0xbf, 0x80, 0xa5, 0x33, 0xb1, 0xf4, 0x17, 0x10, 0xef, 0x42,
		0xe3, 0x8c, 0x2e, 0x31, 0x19, 0x59, 0x77, 0xd2, 0x02, 0x34, 0x36, 0x34, 0x76, 0xc1, 0x34, 0x76,
		0x61, 0xc2, 0x88, 0xdb, 0x97, 0x77, 0xa7, 0x37, 0x67, 0xad, 0xe3, 0xd3, 0x87, 0xb3, 0xd3, 0x63,
		0xf5, 0x23, 0x89, 0xcf, 0x4e, 0x8f, 0x1f, 0x4e, 0xda, 0xb7, 0xad, 0xcf, 0xe7, 0xa7, 0x27, 0x2a,
		0x47, 0x7d, 0x46, 0xe3, 0x38, 0x3b, 0x56, 0x7d, 0x04, 0x37, 0xb7, 0xf5, 0xea, 0x61, 0x01, 0x06,
		0x51, 0xab, 0x15, 0x62, 0x10, 0x0f, 0xd5, 0xbf, 0x1e, 0xe2, 0xf3, 0x7e, 0x7e, 0xda, 0xfa, 0x7a,
		0x5a, 0xb8, 0x80, 0x62, 0xe0, 0xb7, 0xf9, 0xee, 0xf5, 0x0d, 0x53, 0x37, 0x26, 0x99, 0x0e, 0xa9,
		0x21, 0xdc, 0x7c, 0x23, 0x40, 0x71, 0x40, 0x71, 0x05, 0x43, 0x71, 0xf4, 0xdb, 0xfb, 0x0d, 0x8a,
		0x3b, 0xa4, 0x8b, 0x7f, 0x0b, 0x89, 0xef, 0x52, 0x63, 0xa6, 0xd2, 0xb7, 0xb2, 0x7e, 0x64, 0xe8,
		0xdd, 0x96, 0x7e, 0xd6, 0xf9, 0x59, 0x1d, 0xed, 0x34, 0xdf, 0xfe, 0xbe, 0xfb, 0xb3, 0x3e, 0x4a,
		0xbf, 0x5e, 0x1d, 0x9a, 0x81, 0x5c, 0xdd, 0xb6, 0xff, 0x62, 0x1e, 0xcd, 0x3f, 0xef, 0x0f, 0xe7,
		0x5f, 0x25, 0x18, 0x00, 0x64, 0x2a, 0x90, 0x81, 0xe7, 0x87, 0x7a, 0x30, 0x20, 0x84, 0x21, 0x78,
		0x7a, 0xae, 0x0d, 0xa8, 0x0f, 0xa8, 0x0f, 0x18, 0x01, 0xf2, 0x69, 0x04, 0x38, 0xbd, 0xfb, 0xf3,
		0xf4, 0xe6, 0xf2, 0xf4, 0xee, 0xe1, 0xf6, 0xfa, 0xf4, 0xf4, 0x44, 0x7d, 0x2b, 0x40, 0x3c, 0x8c,
		0x87, 0x4a, 0xb9, 0xfc, 0xc7, 0x67, 0x95, 0x89, 0x5b, 0x32, 0x8c, 0x8b, 0x42, 0x0c, 0xa3, 0x18,
		0x8b, 0x51, 0x88, 0xb5, 0x28, 0xc2, 0x52, 0x54, 0x8b, 0x71, 0xbc, 0xab, 0xf5, 0x62, 0x9c, 0xef,
		0x6a, 0xbd, 0x08, 0xab, 0x51, 0x2b, 0xc6, 0xa6, 0xaa, 0x15, 0x62, 0x14, 0xf5, 0x62, 0x8c, 0xa2,
		0x08, 0x83, 0x68, 0x14, 0xe3, 0x5c, 0x1c, 0x16, 0x63, 0x18, 0x5f, 0x2e, 0xff, 0x73, 0x79, 0xf5,
		0xdf, 0x4b, 0x58, 0xf0, 0x0b, 0x6d, 0x80, 0x09, 0x42, 0xc3, 0xb5, 0x0c, 0xc7, 0x73, 0x89, 0xee,
		0xd8, 0xee, 0x77, 0x3d, 0xf4, 0x0d, 0xdb, 0xa5, 0x89, 0x96, 0x9e, 0x2f, 0x74, 0xb9, 0xba, 0x45,
		0xc4, 0x7c, 0xc2, 0x78, 0x04, 0xe3, 0x91, 0x54, 0xe3, 0x51, 0xee, 0x63, 0x3e, 0x55, 0x94, 0xae,
		0x7c, 0x33, 0x41, 0xa7, 0xca, 0xf6, 0x4b, 0xa7, 0xe8, 0xd3, 0x65, 0xff, 0x25, 0xe1, 0x53, 0x73,
		0x9a, 0x91, 0x69, 0xfa, 0x7b, 0xaa, 0xb4, 0x3a, 0x73, 0x12, 0x7c, 0x39, 0x2d, 0xf0, 0x79, 0xeb,
		0x8f, 0x69, 0x26, 0xe0, 0x40, 0x0b, 0x3d, 0xcd, 0x76, 0x2d, 0xfb, 0xd9, 0xb6, 0x86, 0x86, 0xa3,
		0x9d, 0x4e, 0x5e, 0x3a, 0x4b, 0x0a, 0x4c, 0xeb, 0x0f, 0xae, 0x20, 0x17, 0x4a, 0x21, 0x64, 0x72,
		0x0e, 0x73, 0xa1, 0xa4, 0x4d, 0x10, 0x94, 0x3c, 0xc8, 0x94, 0x28, 0x68, 0x69, 0xd3, 0x30, 0x24,
		0x0c, 0x5a, 0x77, 0x3c, 0x6f, 0x07, 0xc4, 0xb4, 0xbb, 0xaf, 0x71, 0x3a, 0x61, 0xc7, 0xeb, 0xd9,
		0xa6, 0xe1, 0x68, 0xc9, 0x6b, 0x66, 0x67, 0x32, 0x3a, 0xb4, 0x3f, 0x9e, 0x6c, 0xf3, 0xe9, 0xde,
		0x0d, 0x9f, 0xec, 0x60, 0xee, 0x0f, 0x8f, 0xc4, 0xf1, 0xdc, 0x1e, 0xed, 0xc5, 0x74, 0x4a, 0x3c,
		0xc5, 0x7c, 0x86, 0x79, 0x9c, 0x65, 0x7e, 0x67, 0x9a, 0xd7, 0xd9, 0xe6, 0x7e, 0xc6, 0xb9, 0x9f,
		0x75, 0xae, 0x67, 0x9e, 0x8d, 0x72, 0x52, 0xdf, 0xab, 0xa4, 0xc5, 0x67, 0x4b, 0xfb, 0x85, 0x3e,
		0x3f, 0xd2, 0x92, 0xea, 0x3b, 0x60, 0x68, 0x43, 0x7c, 0xbe, 0x24, 0xfa, 0x85, 0xca, 0x16, 0xce,
		0x75, 0x04, 0x17, 0xf6, 0xa0, 0x4f, 0xe4, 0x99, 0x40, 0xb5, 0x4d, 0x32, 0x7a, 0x6e, 0x3e, 0xe8,
		0x0d, 0xce, 0x44, 0xc4, 0xf4, 0x53, 0x24, 0x79, 0x9a, 0x37, 0x10, 0x84, 0xc2, 0xeb, 0x3d, 0x54,
		0x91, 0xa2, 0x91, 0xa7, 0xd4, 0x46, 0x8a, 0x46, 0xa4, 0x68, 0x04, 0x2d, 0x41, 0x8a, 0x46, 0xde,
		0xd0, 0x43, 0x46, 0x8a, 0x46, 0x64, 0x3a, 0x5c, 0xfd, 0x30, 0x32, 0x1d, 0x72, 0x51, 0xea, 0xdb,
		0x23, 0xf7, 0x60, 0x22, 0x5f, 0x2d, 0xf7, 0x90, 0x16, 0x61, 0xa3, 0x99, 0x46, 0xa6, 0x43, 0x89,
		0x96, 0x14, 0x64, 0x3a, 0x14, 0xa9, 0xfd, 0x4d, 0x6f, 0xe8, 0xc6, 0xb3, 0x45, 0xad, 0xf7, 0x93,
		0x16, 0xb6, 0xc3, 0xc3, 0x01, 0x95, 0xaa, 0x8c, 0x4a, 0xa5, 0xf6, 0x70, 0xd8, 0xae, 0x7e, 0x58,
		0xae, 0x56, 0xfe, 0x57, 0xef, 0x46, 0xc2, 0x24, 0x60, 0x77, 0x72, 0x2c, 0x36, 0x08, 0xc7, 0x02,
		0xfd, 0x51, 0x12, 0xa9, 0x11, 0xd5, 0x70, 0x2c, 0x50, 0x1d, 0x35, 0x46, 0xe5, 0x96, 0xb9, 0x63,
		0x61, 0xa2, 0x66, 0x1a, 0x35, 0x0e, 0xae, 0x85, 0x43, 0x86, 0x26, 0x6e, 0xe2, 0x3a, 0xcd, 0x2c,
		0xb7, 0x76, 0x34, 0xe6, 0xf8, 0xc6, 0xb8, 0x23, 0x17, 0xb6, 0xcb, 0xbc, 0xf7, 0x93, 0xc6, 0xe2,
		0xcb, 0x48, 0x6c, 0x69, 0x31, 0xdf, 0xb4, 0x77, 0xe6, 0x1b, 0x66, 0x04, 0xce, 0x4e, 0xec, 0x9e,
		0x1d, 0xd7, 0xd1, 0xe6, 0xd5, 0xf0, 0x25, 0xe9, 0x19, 0xa1, 0xfd, 0x4c, 0xa6, 0x65, 0xaf, 0x99,
		0x5b, 0x1d, 0x7d, 0xe4, 0xb0, 0x14, 0xc6, 0x0b, 0xff, 0xa5, 0xa8, 0x1c, 0xd6, 0x6a, 0x8d, 0x83,
		0x5a, 0xad, 0x7c, 0xb0, 0x7f, 0x50, 0x3e, 0xaa, 0xd7, 0x2b, 0x0d, 0x9a, 0xab, 0x6f, 0xaa, 0xaf,
		0xce, 0x87, 0x6c, 0x9e, 0xee, 0xc8, 0xf2, 0x05, 0x7e, 0xa4, 0x42, 0x27, 0x8f, 0x8e, 0x67, 0x7e,
		0xd7, 0x89, 0xef, 0x7b, 0x3e, 0x1f, 0x74, 0xf2, 0xa6, 0x41, 0xa0, 0x13, 0xa0, 0x13, 0xa0, 0x13,
		0xa0, 0x13, 0xa0, 0x13, 0xa0, 0x13, 0xa0, 0x13, 0xa0, 0x93, 0xb4, 0xe8, 0xc4, 0x34, 0x7c, 0xdf,
		0x26, 0x3e, 0x4f, 0x7c, 0xb2, 0xd0, 0x24, 0x10, 0x0a, 0x10, 0x0a, 0x10, 0x0a, 0x10, 0x0a, 0x10,
		0x0a, 0x10, 0x0a, 0x10, 0x4a, 0x71, 0x10, 0x0a, 0xa5, 0x94, 0xe4, 0x10, 0x58, 0x90, 0xb4, 0xc5,
		0x1e, 0x60, 0xc0, 0x51, 0x46, 0x4d, 0x85, 0xf7, 0xcd, 0xd9, 0xb1, 0x56, 0x69, 0xd4, 0xf6, 0xb5,
		0x13, 0xd2, 0xb5, 0x5d, 0x3b, 0xda, 0x7b, 0x81, 0xe6, 0x75, 0xb5, 0x0b, 0xc3, 0x35, 0x7a, 0xc4,
		0xba, 0x77, 0xaf, 0x1e, 0xff, 0x1f, 0x31, 0xc3, 0x40, 0xeb, 0x7a, 0x7e, 0x7c, 0xed, 0x65, 0x7a,
		0x03, 0x4d, 0x77, 0xec, 0xef, 0x44, 0x6b, 0x27, 0x37, 0x5b, 0x22, 0x7d, 0x12, 0x7c, 0x2a, 0x71,
		0x38, 0xb3, 0x9c, 0xd0, 0xc3, 0x2a, 0x14, 0xc1, 0x2b, 0x2e, 0x41, 0x18, 0xa0, 0x58, 0x09, 0x2c,
		0x78, 0xaf, 0x11, 0xd8, 0x89, 0x20, 0x76, 0xe2, 0x9b, 0x5c, 0x99, 0xc9, 0xac, 0x39, 0xb0, 0x12,
		0xb0, 0x12, 0xb0, 0x12, 0xb0, 0x12, 0xb0, 0x12, 0xb0, 0x12, 0xb0, 0x12, 0xb0, 0x92, 0x6d, 0x60,
		0x25, 0xd5, 0xc3, 0xca, 0x51, 0x53, 0xbb, 0x21, 0x7d, 0x2f, 0x24, 0xda, 0x25, 0x09, 0x7f, 0x78,
		0xfe, 0x77, 0xed, 0xc2, 0x73, 0xed, 0xd0, 0xf3, 0x6d, 0xb7, 0xa7, 0x5d, 0xb4, 0x3f, 0x6b, 0xfa,
		0xbd, 0x1b, 0xdf, 0xed, 0xbc, 0x0d, 0x8d, 0x30, 0x38, 0xbe, 0x39, 0x6e, 0x39, 0x76, 0xcf, 0x3d,
		0x65, 0xc1, 0x4c, 0x60, 0x22, 0xef, 0x31, 0x11, 0xd6, 0x75, 0x01, 0xfb, 0x10, 0xc3, 0x3e, 0xba,
		0xbe, 0x11, 0xa7, 0xc9, 0xe1, 0x19, 0x5a, 0xba, 0xd8, 0x26, 0x78, 0x08, 0x78, 0x08, 0x78, 0x08,
		0x78, 0x08, 0x78, 0x08, 0x78, 0x08, 0x78, 0x08, 0x30, 0x4a, 0x5a, 0x8c, 0x12, 0xdf, 0x54, 0xf7,
		0x87, 0x83, 0x90, 0x58, 0x7a, 0xf8, 0xc2, 0x05, 0xa2, 0x2c, 0x34, 0x09, 0x84, 0x02, 0x84, 0x02,
		0x84, 0x02, 0x84, 0x02, 0x84, 0x02, 0x84, 0x02, 0x84, 0x52, 0x1c, 0x84, 0x02, 0x4b, 0xe9, 0x6a,
		0xe1, 0x8d, 0xf8, 0x8d, 0x5c, 0x01, 0x8a, 0x95, 0xc0, 0x02, 0xf1, 0x1b, 0x6a, 0xb0, 0x93, 0xff,
		0x67, 0x3c, 0x3e, 0x12, 0x9f, 0xa7, 0xfd, 0xf4, 0x6d, 0x8b, 0xe0, 0x26, 0xe0, 0x26, 0xe0, 0x26,
		0xe0, 0x26, 0xe0, 0x26, 0xe0, 0x26, 0xe0, 0x26, 0xc0, 0x27, 0x69, 0xf1, 0x89, 0x63, 0x84, 0x44,
		0x37, 0x3d, 0xc7, 0xb1, 0x03, 0xda, 0x62, 0x30, 0x8b, 0x00, 0x65, 0xa1, 0x49, 0x20, 0x14, 0x20,
		0x14, 0x20, 0x14, 0x20, 0x14, 0x20, 0x14, 0x20, 0x14, 0x20, 0x94, 0xe2, 0x20, 0x14, 0x58, 0x4f,
		0x57, 0x0b, 0x6f, 0x58, 0x4f, 0x73, 0x05, 0x28, 0x56, 0x02, 0x0b, 0x58, 0x4f, 0xd5, 0x60, 0x27,
		0x7d, 0xc3, 0xd4, 0x4d, 0xcf, 0x0d, 0x7d, 0xcf, 0xe1, 0x69, 0x42, 0x5d, 0xd1, 0x2c, 0x58, 0x0a,
		0x58, 0x0a, 0x58, 0x0a, 0x58, 0x0a, 0x58, 0x0a, 0x58, 0x0a, 0x58, 0x0a, 0x90, 0x0a, 0x0d, 0x52,
		0x19, 0x5f, 0xac, 0xd7, 0xfd, 0x17, 0x6e, 0x20, 0x65, 0xd6, 0x22, 0xf0, 0x09, 0xf0, 0x09, 0xf0,
		0x09, 0xf0, 0x09, 0xf0, 0x09, 0xf0, 0x09, 0xf0, 0x49, 0x71, 0xf0, 0x09, 0xac, 0xa8, 0xab, 0x85,
		0x37, 0xac, 0xa8, 0xb9, 0x02, 0x14, 0x2b, 0x81, 0x05, 0xac, 0xa8, 0xea, 0x70, 0x93, 0x81, 0x31,
		0x0c, 0x08, 0x6f, 0x1b, 0xea, 0x9b, 0x46, 0xc1, 0x50, 0xc0, 0x50, 0xc0, 0x50, 0xc0, 0x50, 0xc0,
		0x50, 0xc0, 0x50, 0xc0, 0x50, 0x80, 0x52, 0xd2, 0xa3, 0x94, 0x97, 0xc0, 0xfe, 0xff, 0x88, 0x4e,
		0x5e, 0x4c, 0x42, 0x2c, 0x62, 0x71, 0x42, 0x29, 0x0b, 0x8d, 0x02, 0xa5, 0x00, 0xa5, 0x00, 0xa5,
		0x00, 0xa5, 0x00, 0xa5, 0x00, 0xa5, 0x00, 0xa5, 0x00, 0xa5, 0xa4, 0x45, 0x29, 0xde, 0x33, 0xf1,
		0x63, 0x44, 0xc1, 0xd1, 0x94, 0xb2, 0xd8, 0x26, 0x30, 0x0a, 0x30, 0x0a, 0x30, 0x0a, 0x30, 0x0a,
		0x30, 0x0a, 0x30, 0x0a, 0x30, 0x0a, 0x30, 0x4a, 0x5a, 0x8c, 0x12, 0xd8, 0x6e, 0xcf, 0xe1, 0x7d,
		0xab, 0x77, 0xa9, 0x51, 0xa0, 0x14, 0xa0, 0x14, 0xa0, 0x14, 0xa0, 0x14, 0xa0, 0x14, 0xa0, 0x14,
		0xa0, 0x94, 0xe2, 0xa0, 0x14, 0x44, 0xa4, 0xad, 0x16, 0xde, 0x88, 0x48, 0xcb, 0x15, 0xa0, 0x58,
		0x09, 0x2c, 0x10, 0x91, 0xa6, 0x08, 0x43, 0x79, 0xed, 0x3f, 0x7a, 0xce, 0xf8, 0x7a, 0x0b, 0x1f,
		0x76, 0x32, 0xdf, 0x20, 0x98, 0x09, 0x98, 0x09, 0x98, 0x09, 0x98, 0x09, 0x98, 0x09, 0x98, 0x09,
		0x98, 0x09, 0x98, 0x09, 0x98, 0x09, 0x98, 0x09, 0x98, 0x09, 0x98, 0xc9, 0x26, 0xcc, 0x64, 0xe8,
		0x5a, 0xfc, 0x03, 0x3c, 0x96, 0x1a, 0x05, 0x43, 0x01, 0x43, 0x01, 0x43, 0x01, 0x43, 0x01, 0x43,
		0x01, 0x43, 0x01, 0x43, 0x01, 0x43, 0x41, 0xed, 0xfd, 0x15, 0x35, 0xde, 0xbf, 0x4c, 0x51, 0xd3,
		0xf5, 0xf7, 0x10, 0xa5, 0xf7, 0x73, 0x53, 0x7a, 0xff, 0xed, 0xb2, 0x80, 0x87, 0x08, 0xe0, 0x21,
		0xde, 0x30, 0xd4, 0x0f, 0xcb, 0xd5, 0xca, 0xff, 0x72, 0x23, 0x21, 0x4b, 0x2d, 0x82, 0x81, 0x80,
		0x81, 0x80, 0x81, 0x80, 0x81, 0x80, 0x81, 0x80, 0x81, 0x80, 0x81, 0x00, 0x9f, 0xa4, 0xc6, 0x27,
		0x22, 0x52, 0xb3, 0xaf, 0x69, 0x17, 0x58, 0x05, 0x58, 0x05, 0x58, 0x05, 0x58, 0x05, 0x58, 0x05,
		0x58, 0x05, 0x58, 0x05, 0x58, 0x85, 0x0a, 0xab, 0x4c, 0x52, 0xa9, 0x87, 0x2f, 0xfc, 0x60, 0xca,
		0xac, 0x49, 0x20, 0x14, 0x20, 0x14, 0x20, 0x14, 0x20, 0x14, 0x20, 0x14, 0x20, 0x14, 0x20, 0x94,
		0xe2, 0x20, 0x14, 0xf8, 0x73, 0x57, 0x0b, 0x6f, 0x44, 0x9c, 0xe6, 0x0a, 0x50, 0xac, 0x04, 0x16,
		0x88, 0x38, 0x55, 0x88, 0x9d, 0xf0, 0x4d, 0xcf, 0xbe, 0xb2, 0x55, 0x70, 0x14, 0x70, 0x14, 0x70,
		0x14, 0x70, 0x14, 0x70, 0x14, 0x70, 0x14, 0x70, 0x94, 0x6d, 0xc6, 0x29, 0x1f, 0x04, 0xee, 0xd5,
		0x52, 0xcb, 0x75, 0xbd, 0xd0, 0x08, 0x69, 0xd3, 0x8e, 0x95, 0x02, 0xf3, 0x89, 0xf4, 0x8d, 0x81,
		0x11, 0x3e, 0x45, 0x12, 0x78, 0xcf, 0x1b, 0x10, 0xd7, 0x8c, 0x31, 0x84, 0x6e, 0x4f, 0x11, 0x69,
		0xb0, 0xb7, 0xea, 0xc7, 0x3d, 0x32, 0xc1, 0xaf, 0x7b, 0x41, 0x68, 0x84, 0x64, 0x6f, 0x22, 0xbc,
		0x69, 0x80, 0x4f, 0x29, 0x08, 0xfd, 0xa1, 0x19, 0xba, 0x13, 0x35, 0x90, 0x40, 0xe1, 0x87, 0x29,
		0x44, 0x7e, 0x38, 0x9e, 0x36, 0xfe, 0x41, 0xcc, 0xcc, 0xa7, 0x98, 0xf5, 0x92, 0x35, 0x1c, 0x38,
		0xe4, 0x45, 0xef, 0x7b, 0x56, 0x7a, 0xb5, 0x97, 0xa8, 0xba, 0xf9, 0x46, 0x52, 0xae, 0x38, 0x1d,
		0x42, 0xa4, 0x46, 0x86, 0x2c, 0x88, 0x90, 0x1d, 0x09, 0xb2, 0x22, 0x40, 0x6e, 0xc8, 0x8f, 0x1b,
		0xe2, 0xe3, 0x82, 0xf4, 0xc4, 0xca, 0x14, 0x6a, 0x44, 0x97, 0xac, 0x37, 0x71, 0x87, 0x7d, 0xe2,
		0x8f, 0xc5, 0x12, 0xc5, 0xa2, 0x4f, 0xb6, 0x78, 0xa5, 0x46, 0xf1, 0xec, 0xa9, 0x3b, 0xec, 0xd3,
		0x6f, 0x97, 0x3b, 0xef, 0x36, 0xf4, 0x6d, 0xb7, 0xc7, 0x06, 0x68, 0xcb, 0xd1, 0x1c, 0x9c, 0x7d,
		0x39, 0x3f, 0x67, 0x01, 0xb2, 0x95, 0xa8, 0x91, 0x3f, 0x5b, 0xe7, 0x67, 0x25, 0xb9, 0x70, 0xde,
		0x6b, 0xc7, 0x7b, 0x93, 0x61, 0xf8, 0xf1, 0xc8, 0x99, 0x10, 0xc7, 0x78, 0xdc, 0x4d, 0xad, 0x92,
		0x4f, 0x1d, 0x2d, 0x44, 0xaf, 0x10, 0xd7, 0x78, 0x74, 0x88, 0xde, 0x75, 0xbc, 0x1f, 0xd3, 0x88,
		0x2c, 0x7a, 0xfd, 0xb2, 0xaa, 0xb1, 0x94, 0x52, 0xe0, 0x84, 0x74, 0x8d, 0xa1, 0x13, 0x52, 0xf1,
		0xa0, 0x52, 0x0c, 0x0d, 0xd3, 0x6d, 0xdc, 0x0e, 0xf4, 0x20, 0xf4, 0x60, 0xc1, 0xf4, 0xe0, 0xa3,
		0xe7, 0x39, 0xc4, 0x60, 0xd2, 0x81, 0x15, 0xa1, 0x43, 0xe4, 0xe0, 0x3a, 0xe1, 0xe0, 0x32, 0xe1,
		0x60, 0x3b, 0x6a, 0x9f, 0x9e, 0x9e, 0x6a, 0x87, 0xe5, 0xea, 0xa7, 0xfd, 0x97, 0x9c, 0x19, 0x1c,
		0x79, 0xb9, 0x33, 0xc4, 0xda, 0x1c, 0xe7, 0xe7, 0x4f, 0xb6, 0xe1, 0xf1, 0x83, 0x58, 0xea, 0x2e,
		0x46, 0x5d, 0x77, 0x89, 0xc9, 0xc8, 0x01, 0x93, 0x16, 0xa0, 0xf8, 0xa0, 0xf8, 0x0a, 0xa6, 0xf8,
		0x6c, 0x8b, 0xb8, 0xa1, 0x1d, 0xbe, 0xfa, 0xa4, 0xcb, 0xa2, 0xfc, 0x28, 0xac, 0xa1, 0xa5, 0xf6,
		0xe4, 0xd5, 0x9f, 0x8d, 0x80, 0xb0, 0xfb, 0xf6, 0xda, 0x97, 0x77, 0xa7, 0x37, 0x67, 0xad, 0xe3,
		0xd3, 0x87, 0xb3, 0xd3, 0x63, 0xda, 0xad, 0x13, 0xdb, 0x7b, 0x03, 0x26, 0x8f, 0x02, 0xa3, 0x3e,
		0x9a, 0x0e, 0xe7, 0xec, 0xf4, 0xf8, 0xe1, 0xa4, 0x7d, 0xdb, 0xfa, 0x7c, 0x7e, 0x7a, 0xc2, 0x20,
		0xe7, 0x3f, 0xe6, 0x61, 0x1c, 0x67, 0xc7, 0xaa, 0x8f, 0xe0, 0xe6, 0xb6, 0x5e, 0x3d, 0x2c, 0xc0,
		0x20, 0x6a, 0xb5, 0x42, 0x0c, 0xe2, 0xa1, 0xfa, 0xd7, 0x43, 0x7c, 0xde, 0xcf, 0x4f, 0x5b, 0x5f,
		0x4f, 0x65, 0xc3, 0xa0, 0x8e, 0x92, 0x56, 0x8b, 0xa7, 0x1f, 0x71, 0xe8, 0x83, 0x61, 0x59, 0x3e,
		0x09, 0x02, 0x7a, 0x30, 0xb4, 0xd0, 0x0e, 0x20, 0x11, 0x20, 0x51, 0xc1, 0x20, 0x11, 0xfd, 0xf6,
		0x7e, 0x03, 0x89, 0x28, 0x02, 0x1b, 0x4a, 0xd7, 0x46, 0x18, 0x12, 0xdf, 0xa5, 0x06, 0x20, 0xa5,
		0x6f, 0x65, 0xfd, 0xc8, 0xd0, 0xbb, 0x2d, 0xfd, 0xac, 0xf3, 0xb3, 0x3a, 0xda, 0x69, 0xbe, 0xfd,
		0x7d, 0xf7, 0x67, 0x7d, 0x94, 0x7e, 0xbd, 0x3a, 0x34, 0x03, 0xb9, 0xba, 0x6d, 0xff, 0xc5, 0x3c,
		0x9a, 0x7f, 0xde, 0x1f, 0xce, 0xbf, 0x4a, 0x4a, 0x92, 0x52, 0x2e, 0xa2, 0x18, 0x72, 0x18, 0x72,
		0x18, 0x72, 0x18, 0x72, 0x18, 0x72, 0x98, 0x5a, 0x0e, 0xbb, 0xa4, 0xe7, 0x85, 0xb6, 0x11, 0x12,
		0x4b, 0xe7, 0x12, 0x2e, 0xb2, 0xa6, 0x3d, 0x48, 0x67, 0x48, 0xe7, 0x82, 0x49, 0x67, 0x44, 0x8e,
		0x20, 0x72, 0x04, 0x91, 0x23, 0xd4, 0xda, 0x66, 0xe0, 0xf9, 0xa1, 0x1e, 0x0c, 0x08, 0xb1, 0xb8,
		0x28, 0x9b, 0xb9, 0xe6, 0xa0, 0x6b, 0xa0, 0x6b, 0x0a, 0xa6, 0x6b, 0x0a, 0xe3, 0xa4, 0x3a, 0xbd,
		0xfb, 0xf3, 0xf4, 0xe6, 0xf2, 0xf4, 0xee, 0xe1, 0xf6, 0xfa, 0xf4, 0xf4, 0x44, 0x7d, 0x2f, 0x55,
		0x3c, 0x8c, 0x87, 0x4a, 0xb9, 0xfc, 0xc7, 0x67, 0x95, 0x1d, 0x0b, 0xc9, 0x30, 0x2e, 0x0a, 0x31,
		0x8c, 0x62, 0x2c, 0x46, 0x21, 0xd6, 0xa2, 0x08, 0x4b, 0x51, 0x2d, 0xc6, 0xf1, 0xae, 0xd6, 0x8b,
		0x71, 0xbe, 0xab, 0xf5, 0x22, 0xac, 0x46, 0xad, 0x18, 0x9b, 0xaa, 0x56, 0x88, 0x51, 0xd4, 0x8b,
		0x31, 0x8a, 0x22, 0x0c, 0xa2, 0x51, 0x8c, 0x73, 0x71, 0x58, 0x8c, 0x61, 0x7c, 0xb9, 0xfc, 0xcf,
		0xe5, 0xd5, 0x7f, 0x2f, 0x11, 0x61, 0xb2, 0xc9, 0xd4, 0xf1, 0x30, 0x69, 0xc0, 0x8e, 0x01, 0x3b,
		0x06, 0xec, 0x18, 0xb0, 0x63, 0xc0, 0x8e, 0x01, 0x3b, 0x06, 0xec, 0x18, 0xb0, 0x63, 0xc0, 0x8e,
		0x01, 0x3b, 0x06, 0xec, 0x18, 0xb0, 0x63, 0xc0, 0x8e, 0x01, 0x3b, 0x06, 0xec, 0x18, 0xb0, 0x63,
		0xc8, 0xb0, 0x63, 0x04, 0xa1, 0xe1, 0x5a, 0x86, 0xe3, 0xb9, 0x44, 0x77, 0x6c, 0xf7, 0xbb, 0x1e,
		0xfa, 0x86, 0xed, 0xd2, 0x04, 0x0c, 0x25, 0x8b, 0xb0, 0xb6, 0x45, 0x64, 0xfa, 0x80, 0x0d, 0x06,
		0x36, 0x18, 0xa9, 0x36, 0x18, 0xf9, 0x99, 0x3e, 0x3e, 0xf0, 0xfd, 0xe6, 0x86, 0x53, 0x56, 0x6a,
		0x0d, 0x7b, 0xd1, 0x5a, 0xc6, 0xd6, 0xd8, 0xcd, 0xc5, 0x05, 0xa5, 0x84, 0xdb, 0xf3, 0x4c, 0xdd,
		0xee, 0x36, 0xe7, 0xf2, 0x0f, 0x2e, 0x7c, 0xb0, 0x37, 0xde, 0x4f, 0xcd, 0x24, 0x19, 0xe1, 0xe4,
		0xf7, 0x38, 0x27, 0x61, 0x7a, 0x39, 0x18, 0x98, 0xbe, 0x3d, 0x98, 0x24, 0x53, 0x2c, 0xb5, 0x2c,
		0x2b, 0xd0, 0xce, 0x5b, 0x7f, 0x68, 0x01, 0x09, 0x43, 0xdb, 0xed, 0x05, 0x5a, 0xe8, 0x69, 0xb6,
		0x6b, 0xd9, 0xcf, 0xb6, 0x35, 0x34, 0x9c, 0x24, 0x81, 0xb7, 0x36, 0xeb, 0x1e, 0xa5, 0x75, 0xb9,
		0xa2, 0x98, 0x64, 0x73, 0x8c, 0x1e, 0x24, 0xdb, 0x0a, 0xc9, 0x16, 0xcd, 0x4b, 0xce, 0x24, 0xdb,
		0x89, 0xed, 0xd3, 0x2d, 0xb7, 0xd1, 0xeb, 0xf9, 0xa4, 0x67, 0x84, 0x44, 0xb7, 0x2d, 0x76, 0xcb,
		0xee, 0x9b, 0xd6, 0x28, 0x27, 0x7b, 0xe1, 0x78, 0xde, 0x0e, 0x88, 0x69, 0x77, 0x5f, 0xe3, 0x5c,
		0xfa, 0x8e, 0xd7, 0xb3, 0x4d, 0xc3, 0xd1, 0x92, 0xd7, 0xcc, 0xce, 0x64, 0x74, 0x68, 0x7f, 0x3c,
		0xd9, 0xe6, 0xd3, 0xbd, 0x1b, 0x3e, 0xd9, 0xc1, 0xdc, 0x1f, 0x1e, 0x89, 0xe3, 0xb9, 0x3d, 0x64,
		0x6a, 0x67, 0x39, 0xd3, 0xbc, 0xce, 0x36, 0xf7, 0x33, 0xce, 0xfd, 0xac, 0x73, 0x3d, 0xf3, 0x6c,
		0xfc, 0x27, 0xfb, 0x4c, 0xed, 0x0e, 0x31, 0xba, 0x74, 0xde, 0xa6, 0x25, 0xd5, 0x77, 0xc0, 0xd0,
		0xc6, 0x75, 0x92, 0xb6, 0x78, 0x03, 0x98, 0x60, 0x77, 0x9b, 0x71, 0x86, 0x61, 0xd5, 0x2f, 0x06,
		0x7c, 0xe0, 0x48, 0xb1, 0x68, 0xd3, 0x47, 0x73, 0x4b, 0x1b, 0xbd, 0xd9, 0x6a, 0xbc, 0x3f, 0xe6,
		0x0d, 0x8e, 0x44, 0x29, 0xf8, 0x61, 0x87, 0xe6, 0x13, 0xb1, 0xf4, 0x67, 0xc7, 0xd8, 0x7c, 0xb8,
		0x33, 0xb6, 0xfd, 0xe6, 0xf1, 0x0d, 0xe7, 0x37, 0x1d, 0xc0, 0x4b, 0xad, 0x14, 0x68, 0x94, 0xc0,
		0xbc, 0xd0, 0x4f, 0x31, 0x14, 0x16, 0x29, 0xcf, 0x2c, 0xd5, 0x99, 0xa5, 0xf8, 0xa2, 0xd4, 0x8e,
		0x07, 0x9e, 0x11, 0x83, 0x4a, 0x0b, 0xc9, 0x4a, 0xe6, 0x74, 0x57, 0x50, 0xb2, 0xa8, 0xc9, 0xf3,
		0xdb, 0xc1, 0x4d, 0x52, 0x6e, 0xe9, 0xed, 0x21, 0x27, 0xe9, 0xb6, 0x7c, 0xde, 0xd9, 0x89, 0x69,
		0x92, 0x20, 0x48, 0x27, 0xc9, 0xd7, 0x93, 0x93, 0xb9, 0xc6, 0x40, 0x06, 0x18, 0x0e, 0x11, 0xd8,
		0x00, 0xdd, 0x21, 0x53, 0x9d, 0x0e, 0x44, 0xa3, 0xa6, 0x27, 0xf6, 0xf3, 0x07, 0xa8, 0x81, 0xb2,
		0x4d, 0x0b, 0x8d, 0x25, 0xb5, 0x82, 0x50, 0xb6, 0x89, 0x66, 0x29, 0x44, 0x94, 0x6d, 0xaa, 0x95,
		0x8f, 0x6a, 0x28, 0xd3, 0x24, 0xe9, 0x69, 0x75, 0x4b, 0xc9, 0xfe, 0x78, 0x22, 0x6e, 0x9e, 0xaa,
		0xc8, 0x7e, 0xfa, 0x34, 0xa3, 0xe1, 0x71, 0xfe, 0x18, 0xed, 0x7f, 0xb4, 0x7f, 0xb7, 0x8e, 0x8f,
		0x4f, 0x6f, 0x6f, 0xff, 0x9d, 0xf3, 0x92, 0xb0, 0xf1, 0x54, 0xaa, 0x54, 0x0d, 0xf6, 0xb7, 0x73,
		0x9d, 0x0b, 0xc9, 0xf8, 0xd6, 0x9a, 0xce, 0x69, 0xc9, 0xa6, 0x5b, 0xad, 0x15, 0x23, 0x6a, 0xed,
		0xeb, 0x79, 0xeb, 0x52, 0x33, 0x82, 0xc0, 0xee, 0xb9, 0xc4, 0xd2, 0x42, 0x2f, 0xb6, 0xd5, 0x53,
		0x7b, 0xcb, 0x64, 0x6d, 0xbc, 0xc5, 0xcd, 0x67, 0xcd, 0xcd, 0xd4, 0x47, 0x7e, 0x6f, 0x10, 0xb5,
		0x0f, 0x97, 0xf6, 0xe2, 0x86, 0x8b, 0xc1, 0xe5, 0xe5, 0x23, 0xe8, 0x19, 0x91, 0x76, 0xd7, 0xa5,
		0x76, 0x5e, 0x7b, 0x5e, 0xa8, 0x7b, 0xa6, 0x6e, 0x7a, 0xfd, 0x81, 0x4f, 0x82, 0x80, 0x58, 0xba,
		0x43, 0x8c, 0x6e, 0xd4, 0xe8, 0x28, 0xc7, 0x75, 0x98, 0xdf, 0xca, 0x46, 0x76, 0x06, 0xbf, 0xd0,
		0x1e, 0x48, 0x3c, 0x48, 0x3c, 0x48, 0x3c, 0x0d, 0x89, 0x8f, 0x8e, 0x8f, 0x1e, 0x46, 0x6d, 0x72,
		0x70, 0xed, 0x31, 0x90, 0x24, 0xb6, 0x64, 0x6c, 0xb3, 0xd9, 0xe1, 0x91, 0x94, 0x2d, 0x69, 0x2d,
		0x4e, 0xce, 0x36, 0x06, 0x71, 0x3c, 0xf0, 0x72, 0x9c, 0xa6, 0xed, 0xee, 0xe6, 0xcb, 0xe5, 0x7f,
		0xd8, 0x74, 0x2f, 0x23, 0x1a, 0xe4, 0x90, 0xb7, 0x6d, 0x76, 0x90, 0xc6, 0x93, 0xc3, 0x85, 0xc6,
		0x4e, 0xa6, 0x86, 0x36, 0x95, 0x1b, 0x3b, 0x22, 0x18, 0x01, 0x11, 0xc8, 0x43, 0x04, 0x6e, 0x6c,
		0xad, 0xe0, 0x64, 0xd0, 0x9f, 0x6f, 0x0c, 0x58, 0x00, 0x58, 0x00, 0x58, 0x80, 0x06, 0x0b, 0xc0,
		0xa0, 0x3f, 0xed, 0x08, 0x0c, 0xfa, 0x30, 0xe8, 0x17, 0x6f, 0x35, 0x60, 0xd0, 0x4f, 0xd9, 0x96,
		0x12, 0x06, 0xfd, 0x18, 0x35, 0xc3, 0x9e, 0xcf, 0xa1, 0xe1, 0x77, 0xed, 0xf9, 0x93, 0xa9, 0x2e,
		0xbe, 0x39, 0xff, 0x32, 0x96, 0x3c, 0x63, 0x0b, 0xb2, 0x1d, 0x68, 0xcf, 0x86, 0x63, 0x5b, 0x5a,
		0xd7, 0xf3, 0xa3, 0xd9, 0x76, 0xbf, 0x6b, 0xf1, 0x7c, 0xc0, 0xac, 0x2f, 0x76, 0x3b, 0x2e, 0x6d,
		0xc9, 0x94, 0x8b, 0x02, 0xf3, 0x3e, 0xc8, 0xbc, 0x2c, 0x32, 0x1f, 0xef, 0xc0, 0x98, 0x3a, 0x05,
		0xec, 0x64, 0x7e, 0xbe, 0x31, 0x90, 0x79, 0x90, 0x79, 0x90, 0xf9, 0x94, 0x3b, 0x66, 0xe8, 0xb2,
		0xa9, 0xb8, 0xc4, 0x9e, 0x7f, 0xc4, 0xd0, 0xc6, 0x64, 0x38, 0xb9, 0xc1, 0xce, 0xec, 0x16, 0x0e,
		0x8e, 0x96, 0x0e, 0xce, 0x16, 0x0f, 0x7e, 0xd3, 0x25, 0xc4, 0x02, 0x22, 0xca, 0x12, 0x22, 0x9c,
		0x83, 0x8b, 0xe3, 0xe2, 0x1c, 0x99, 0x80, 0x10, 0x4b, 0x89, 0x40, 0x8b, 0x49, 0x11, 0x56, 0x2d,
		0x27, 0xd8, 0xba, 0x93, 0xa5, 0x1b, 0x91, 0xb7, 0x6c, 0xf6, 0x63, 0x51, 0xc8, 0x4f, 0x3c, 0xd3,
		0x14, 0x6c, 0x5c, 0x06, 0x72, 0x8c, 0x25, 0x0f, 0x97, 0x1a, 0xdc, 0xa9, 0x95, 0x8f, 0xbe, 0x95,
		0xf5, 0x5a, 0xe7, 0x57, 0xad, 0xfc, 0xad, 0xac, 0x1f, 0x76, 0xbe, 0x95, 0xf5, 0xa3, 0xce, 0xaf,
		0x6f, 0x15, 0x7d, 0x7f, 0xfc, 0xe3, 0xcf, 0xfd, 0x51, 0xf4, 0xdb, 0xd1, 0xe4, 0xb7, 0xca, 0xc7,
		0xea, 0xe4, 0xf7, 0xdd, 0xfb, 0xfb, 0x4f, 0xf7, 0xf7, 0x9f, 0x18, 0x1a, 0x60, 0xa7, 0x84, 0x1d,
		0x1e, 0x53, 0xca, 0xa3, 0x94, 0xe4, 0x52, 0xab, 0xff, 0x64, 0x39, 0xb1, 0xff, 0x2a, 0x65, 0x7d,
		0x94, 0x15, 0xa1, 0xc9, 0xe7, 0x76, 0x10, 0xb6, 0xc2, 0xd0, 0x67, 0xc3, 0xb9, 0x17, 0xb6, 0x7b,
		0xea, 0x90, 0x08, 0xe6, 0x33, 0x6a, 0x8d, 0x48, 0x65, 0xce, 0xb5, 0x54, 0x39, 0xac, 0xd5, 0x1a,
		0x07, 0xb5, 0x5a, 0xf9, 0x60, 0xff, 0xa0, 0x7c, 0x54, 0xaf, 0x57, 0x1a, 0x34, 0x29, 0x92, 0x93,
		0xc6, 0xaf, 0x7c, 0x8b, 0xf8, 0xc4, 0xfa, 0xfc, 0x5a, 0x6a, 0x6a, 0xee, 0xd0, 0x71, 0x78, 0x34,
		0xf5, 0x25, 0x20, 0x3e, 0x93, 0x3a, 0x83, 0x59, 0x7d, 0x59, 0xfd, 0xc0, 0xac, 0x0e, 0xb3, 0xfa,
		0xb4, 0xb3, 0x62, 0xa3, 0xe4, 0x1d, 0xc7, 0xfb, 0x41, 0xac, 0xd8, 0x84, 0x1b, 0x68, 0x7d, 0xe3,
		0x55, 0x7b, 0x24, 0x5a, 0x10, 0xa7, 0xb5, 0xb1, 0xc9, 0xa2, 0x2d, 0xf7, 0xde, 0x9d, 0x19, 0x73,
		0x3f, 0xc1, 0xc4, 0x2e, 0x27, 0x72, 0x9e, 0x7e, 0x81, 0x60, 0x6e, 0x97, 0xa8, 0x8d, 0x8a, 0x64,
		0x6e, 0x17, 0x7a, 0xdf, 0x9e, 0x71, 0xa2, 0xb8, 0xa4, 0x7d, 0x99, 0x4f, 0xa3, 0xb2, 0x37, 0x49,
		0x4d, 0x91, 0x8f, 0xf4, 0xac, 0x21, 0x61, 0xca, 0xc5, 0x1a, 0x12, 0xd9, 0x29, 0x36, 0xaa, 0x48,
		0xb1, 0x91, 0xa9, 0x02, 0x41, 0x8a, 0x8d, 0x4d, 0x77, 0x0d, 0x52, 0x6c, 0x68, 0x70, 0xe2, 0x71,
		0x40, 0x64, 0x88, 0xc8, 0x45, 0x44, 0x2e, 0x22, 0x72, 0x11, 0x91, 0x5b, 0xcc, 0xd5, 0x40, 0x44,
		0x6e, 0x11, 0x4d, 0x87, 0x48, 0xb1, 0x81, 0x14, 0x1b, 0x48, 0xb1, 0x51, 0x6c, 0x43, 0x21, 0x52,
		0x6c, 0x88, 0xd3, 0x33, 0xc8, 0x48, 0x01, 0xce, 0x0b, 0xce, 0x8b, 0x8c, 0x14, 0xc8, 0x48, 0xb1,
		0xd4, 0x1a, 0x32, 0x52, 0xbc, 0x7b, 0x90, 0x90, 0x91, 0x02, 0x09, 0x1c, 0xa0, 0x3a, 0xa1, 0x3a,
		0xb7, 0x50, 0x75, 0xc2, 0x5c, 0x9c, 0xd8, 0x28, 0x61, 0x2e, 0x86, 0xb9, 0xb8, 0x70, 0xab, 0x01,
		0x73, 0x71, 0xca, 0xb6, 0x10, 0x69, 0xca, 0x4b, 0xf7, 0x23, 0xd2, 0x94, 0xb7, 0x5c, 0x44, 0x02,
		0x87, 0xb4, 0x7b, 0x10, 0x09, 0x1c, 0x64, 0xeb, 0x0c, 0x0d, 0xc6, 0xe3, 0x95, 0xab, 0x8a, 0x7c,
		0x07, 0xe0, 0xbe, 0xe0, 0xbe, 0x79, 0xe1, 0xbe, 0xc8, 0x77, 0x20, 0xc4, 0x20, 0xc0, 0xd1, 0x30,
		0xc0, 0xd9, 0x40, 0xc0, 0x6f, 0xba, 0x84, 0x18, 0x0c, 0x44, 0x19, 0x0e, 0x84, 0x53, 0x56, 0x71,
		0xd4, 0x95, 0x23, 0x70, 0x16, 0x62, 0x58, 0x10, 0x68, 0x60, 0x28, 0xc2, 0xaa, 0x21, 0xdf, 0x01,
		0xf2, 0x1d, 0xd0, 0x35, 0x88, 0x7c, 0x07, 0xc8, 0x77, 0x20, 0xe0, 0x28, 0x23, 0xdf, 0x01, 0xad,
		0xca, 0x44, 0xbe, 0x83, 0x8d, 0x7a, 0x00, 0x2b, 0x74, 0x5e, 0xac, 0x80, 0xb0, 0x42, 0x0b, 0x04,
		0xd3, 0xc8, 0x77, 0xc0, 0xb4, 0x1f, 0x91, 0xef, 0x20, 0x6b, 0x4a, 0x50, 0x78, 0xeb, 0xf4, 0x76,
		0xa5, 0x07, 0x18, 0xdf, 0xaa, 0x17, 0x95, 0x1d, 0xe0, 0x03, 0xc7, 0x39, 0xa4, 0x9d, 0x3b, 0xee,
		0x73, 0x56, 0x4a, 0x95, 0xf3, 0xc0, 0x1f, 0x9a, 0xa1, 0x3b, 0x11, 0xcf, 0xed, 0x69, 0xcb, 0x0f,
		0xa7, 0x93, 0x96, 0x1f, 0x6e, 0x27, 0x2d, 0x7f, 0xdd, 0xd8, 0x90, 0xfc, 0xfe, 0xa4, 0xfe, 0xfe,
		0x1b, 0xef, 0x4c, 0x77, 0xa9, 0x35, 0xec, 0x45, 0xd2, 0x8a, 0x58, 0x1b, 0x21, 0xa8, 0xcd, 0xd6,
		0x21, 0x51, 0x50, 0x7b, 0x9e, 0xa9, 0xdb, 0xdd, 0xe6, 0xdc, 0x6c, 0x2f, 0x7c, 0x10, 0xfd, 0x4e,
		0xc2, 0xa7, 0xe6, 0x74, 0xea, 0x37, 0x9c, 0xec, 0x05, 0xb5, 0x5a, 0x6a, 0x59, 0xd6, 0xe4, 0xb2,
		0x48, 0x40, 0xc2, 0xd0, 0x76, 0x7b, 0x81, 0x16, 0x7a, 0x9a, 0xed, 0x5a, 0xf6, 0xb3, 0x6d, 0x0d,
		0x0d, 0x47, 0x9b, 0x2e, 0x40, 0x7a, 0xa7, 0x6c, 0xca, 0x9c, 0x12, 0xa9, 0x7d, 0x3d, 0x34, 0xbe,
		0x1d, 0x06, 0x5f, 0x0e, 0xad, 0xc6, 0x66, 0xf6, 0xd5, 0x30, 0x2b, 0x5d, 0x36, 0x5f, 0x0c, 0x5f,
		0xd9, 0x94, 0x36, 0x07, 0x44, 0xe9, 0xad, 0x44, 0xa1, 0x4f, 0x8a, 0x42, 0x29, 0x98, 0x56, 0x9d,
		0x99, 0x53, 0xd7, 0x74, 0xbc, 0xc0, 0x76, 0x7b, 0x9a, 0xe9, 0xb9, 0xa1, 0x61, 0xbb, 0xc4, 0x8f,
		0x01, 0xc9, 0xd8, 0x7d, 0x9e, 0x80, 0xea, 0x09, 0x5a, 0x31, 0xef, 0x5d, 0xcb, 0x08, 0x0d, 0xcd,
		0x73, 0x57, 0x9d, 0xa5, 0x4f, 0x9a, 0x76, 0xf7, 0x44, 0x02, 0xa2, 0x19, 0x3e, 0x89, 0x1b, 0x09,
		0x42, 0xc3, 0xb5, 0x0c, 0xdf, 0xba, 0x77, 0xcf, 0xab, 0x1f, 0xb5, 0xa4, 0xdb, 0x41, 0xf8, 0xea,
		0x8c, 0x1d, 0xf4, 0xa9, 0x21, 0x28, 0x73, 0x6e, 0x97, 0x32, 0x72, 0xbb, 0x64, 0x0a, 0x96, 0x33,
		0xc9, 0xed, 0xc2, 0x5b, 0x3e, 0x30, 0x2a, 0xe3, 0x77, 0xec, 0x9d, 0x34, 0x56, 0x91, 0x74, 0xd6,
		0x0f, 0x3a, 0x1d, 0x63, 0x77, 0x9b, 0x63, 0x08, 0x35, 0x51, 0xdf, 0xe1, 0xeb, 0x20, 0x26, 0xda,
		0xb6, 0xe1, 0x1a, 0x76, 0x37, 0x4c, 0xb4, 0xf7, 0x71, 0xd0, 0x37, 0x4c, 0xeb, 0xdf, 0x9a, 0xe7,
		0x6b, 0x1b, 0x3c, 0x65, 0x13, 0x42, 0x0e, 0xcb, 0xd5, 0x7d, 0xc3, 0x3a, 0x37, 0x7a, 0xff, 0x96,
		0xac, 0xc3, 0x28, 0x2c, 0x1d, 0xdc, 0x35, 0x98, 0x94, 0x69, 0x15, 0x92, 0xdb, 0x8b, 0xc5, 0xaa,
		0x31, 0xb3, 0x5e, 0x58, 0x96, 0x1d, 0xb5, 0x60, 0x38, 0x33, 0x4d, 0xa2, 0x8d, 0x87, 0x36, 0xf4,
		0x63, 0xe0, 0xaf, 0x0d, 0x0c, 0xdf, 0xe8, 0x93, 0x90, 0xf8, 0x81, 0x16, 0x2d, 0xd8, 0xbd, 0xfb,
		0xe6, 0xfe, 0xaf, 0x16, 0x0f, 0xdd, 0x0e, 0x12, 0x8d, 0xf4, 0x31, 0x9a, 0xa2, 0xb7, 0x5f, 0xb1,
		0x03, 0xcd, 0x70, 0x35, 0xa3, 0xd7, 0xf3, 0x49, 0xcf, 0x08, 0xe7, 0x39, 0x76, 0x6a, 0x05, 0xc4,
		0x20, 0x91, 0xf9, 0xd9, 0x34, 0xb8, 0x88, 0xe3, 0xb7, 0x36, 0x8a, 0xac, 0x97, 0x21, 0xe7, 0x12,
		0xbd, 0xc3, 0x46, 0xaf, 0xd2, 0xb1, 0x58, 0x0e, 0xec, 0x75, 0x83, 0x4d, 0xf5, 0x2e, 0x4f, 0xfd,
		0xfd, 0x9a, 0xac, 0x9f, 0xb3, 0xdf, 0xcc, 0x46, 0xe9, 0xc9, 0x73, 0x2c, 0x3d, 0xb4, 0xfb, 0xef,
		0x9f, 0xa0, 0x44, 0x42, 0xcc, 0x1e, 0x79, 0x67, 0x96, 0x37, 0xc3, 0x86, 0x1b, 0x63, 0xc1, 0x34,
		0xd8, 0xef, 0xad, 0x9e, 0xdc, 0x64, 0xf2, 0x53, 0xca, 0x11, 0x6a, 0x24, 0x47, 0x2d, 0x2a, 0x96,
		0xf5, 0x54, 0x49, 0xb0, 0x11, 0x62, 0x53, 0x3e, 0x55, 0x32, 0xa7, 0x2b, 0x98, 0xd2, 0x10, 0x31,
		0x79, 0xae, 0x18, 0x94, 0x7f, 0xa3, 0x6d, 0x56, 0x3c, 0xc2, 0xbf, 0xc9, 0x36, 0xcc, 0x09, 0xdd,
		0xb7, 0xbc, 0x1f, 0x0c, 0xc0, 0x28, 0x7e, 0x3a, 0x35, 0xb9, 0xef, 0x1a, 0x43, 0x27, 0xa4, 0x72,
		0x83, 0x96, 0xca, 0xe9, 0x74, 0x70, 0x87, 0x8e, 0xb9, 0x97, 0x15, 0x63, 0xee, 0xa9, 0x8e, 0xd9,
		0xf6, 0xf0, 0xf6, 0x34, 0xc7, 0x50, 0x8e, 0x97, 0x85, 0x3a, 0xd2, 0x79, 0x16, 0xe1, 0x6c, 0xbb,
		0xe1, 0x7e, 0x95, 0x66, 0xb9, 0x27, 0x7b, 0xfb, 0x80, 0xe2, 0x51, 0xb6, 0x58, 0x5d, 0xb6, 0x78,
		0x17, 0xf6, 0xd8, 0xfd, 0x69, 0x20, 0x27, 0x63, 0x90, 0x25, 0xf7, 0xa8, 0x4d, 0x7e, 0x51, 0x9a,
		0x23, 0xb6, 0x40, 0x20, 0x7e, 0x53, 0x5c, 0xab, 0x1e, 0xd5, 0x8e, 0x1a, 0x07, 0xd5, 0xa3, 0x7a,
		0x71, 0xe7, 0x5a, 0x92, 0xbb, 0xb7, 0x93, 0x6b, 0x77, 0x2f, 0xb7, 0x74, 0xf9, 0x62, 0x32, 0xba,
		0x0f, 0x07, 0xf4, 0x98, 0x66, 0x38, 0x00, 0xa2, 0x01, 0xa2, 0x01, 0xa2, 0x01, 0xa2, 0x01, 0xa2,
		0x01, 0xa2, 0x01, 0xa2, 0x01, 0xa2, 0x19, 0x29, 0x11, 0x85, 0x76, 0xfa, 0x12, 0x6f, 0xab, 0xcd,
		0x25, 0x1a, 0xbd, 0x95, 0xcd, 0x33, 0x75, 0xf2, 0x12, 0x36, 0x43, 0xe2, 0x90, 0x3e, 0x09, 0xfd,
		0x57, 0xdd, 0x73, 0x75, 0xf3, 0x89, 0xe2, 0x16, 0xd3, 0x82, 0xa2, 0x8c, 0xf7, 0x31, 0x83, 0xe9,
		0x8d, 0xb7, 0xd5, 0xad, 0x93, 0xdb, 0x00, 0xc0, 0xc4, 0xdf, 0x90, 0xaa, 0x8c, 0xd2, 0x06, 0x41,
		0x01, 0x1b, 0xb9, 0x64, 0xd2, 0x94, 0x4b, 0xa2, 0x2a, 0x93, 0x44, 0x6d, 0xd7, 0xae, 0xc2, 0xae,
		0xcd, 0x11, 0x86, 0xc2, 0xae, 0x0d, 0x16, 0x08, 0x16, 0x08, 0x16, 0x08, 0x16, 0x08, 0x16, 0x08,
		0x16, 0x08, 0x16, 0x98, 0x01, 0x0b, 0x84, 0x79, 0x18, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0,
		0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x20, 0x6b, 0x2b, 0x6b, 0x96, 0xa6, 0xbe, 0x14, 0x57, 0xa2,
		0x45, 0xdf, 0xc5, 0xcd, 0xe3, 0xf5, 0x9f, 0x4f, 0x7b, 0x03, 0xe2, 0x1a, 0x4e, 0xf8, 0xaa, 0x3f,
		0x1a, 0x01, 0xb1, 0x74, 0xc3, 0x26, 0xd6, 0xc4, 0x3c, 0xba, 0x17, 0x0c, 0x07, 0xb1, 0x55, 0x5f,
		0x0f, 0x9f, 0x7c, 0x12, 0x44, 0x53, 0xaa, 0xfd, 0x8f, 0x56, 0xbe, 0x77, 0x3d, 0x5f, 0xfb, 0xdd,
		0x63, 0x3e, 0x19, 0x06, 0x24, 0xe5, 0x33, 0x5d, 0xc7, 0x18, 0xe8, 0x93, 0x3f, 0x47, 0x0f, 0x6c,
		0xdb, 0x75, 0xa1, 0xbc, 0x2e, 0x43, 0x7e, 0xaf, 0x17, 0xfd, 0x19, 0x8d, 0x29, 0x3a, 0xe1, 0x9a,
		0xe1, 0x5a, 0xda, 0xf2, 0x90, 0xe2, 0xbb, 0xaa, 0xe1, 0x0f, 0x4f, 0x33, 0x9c, 0x9e, 0xe7, 0xdb,
		0xe1, 0x53, 0x3f, 0xbe, 0x34, 0x3e, 0x9d, 0xcc, 0x7b, 0xd7, 0xb1, 0xdd, 0xef, 0x5a, 0xe8, 0x1b,
		0x6e, 0x10, 0xdf, 0x8f, 0x09, 0xe2, 0x76, 0xfa, 0xc3, 0x20, 0xd4, 0x1e, 0x89, 0xd6, 0x1f, 0x86,
		0x43, 0xc3, 0x71, 0x5e, 0x35, 0xf2, 0x62, 0x3a, 0xc3, 0xc0, 0x7e, 0xc6, 0x7d, 0xa2, 0xc9, 0x4e,
		0x95, 0x3f, 0xef, 0xb8, 0x40, 0xc4, 0x57, 0x25, 0xb2, 0xdc, 0x20, 0x8a, 0x56, 0xff, 0x2e, 0x6a,
		0x43, 0xc0, 0x0d, 0xa2, 0xc9, 0xdb, 0x36, 0xbc, 0x3c, 0x14, 0x7f, 0x7b, 0xb3, 0x7b, 0x43, 0x65,
		0xdc, 0x1b, 0xe2, 0x21, 0x12, 0xe4, 0xdf, 0x1b, 0xda, 0x98, 0x08, 0x27, 0xb3, 0xed, 0x10, 0xa3,
		0xeb, 0x93, 0x8d, 0xe6, 0x7b, 0xea, 0x2d, 0xdd, 0x80, 0xea, 0x96, 0xae, 0x27, 0xe7, 0xed, 0xd3,
		0xa7, 0xa9, 0xa6, 0x8c, 0xb7, 0x9f, 0x80, 0x43, 0xb0, 0x2c, 0x50, 0x37, 0x3f, 0x12, 0x2b, 0x9e,
		0xc5, 0xc5, 0x3a, 0x5c, 0xac, 0xc3, 0xc5, 0x3a, 0x04, 0x20, 0x64, 0xc3, 0xfb, 0xd3, 0x07, 0x20,
		0x10, 0xd3, 0x78, 0xd5, 0x9f, 0x0c, 0xa7, 0xab, 0x3b, 0x76, 0x97, 0x30, 0xc4, 0x22, 0x2c, 0x34,
		0x04, 0xef, 0x03, 0xbc, 0x0f, 0xf0, 0x3e, 0xc0, 0xfb, 0x00, 0xef, 0x03, 0xbc, 0x0f, 0xf0, 0x3e,
		0x64, 0xe4, 0x7d, 0xc0, 0x75, 0xbb, 0xf9, 0xee, 0xcd, 0xdb, 0x5a, 0xe9, 0x81, 0xce, 0x9b, 0x56,
		0x80, 0x72, 0x80, 0x72, 0x80, 0x72, 0x80, 0x72, 0x80, 0x72, 0x80, 0x72, 0x80, 0x72, 0x80, 0x72,
		0x72, 0x80, 0x72, 0xfa, 0xc6, 0x8b, 0x3e, 0x73, 0x60, 0x6f, 0x92, 0x1e, 0x6e, 0xad, 0xc0, 0x5d,
		0x6e, 0x0a, 0x78, 0x07, 0x78, 0x07, 0x78, 0x07, 0x78, 0x07, 0x78, 0x07, 0x78, 0x07, 0x78, 0x07,
		0x78, 0x27, 0x07, 0x78, 0x67, 0x21, 0xea, 0x8e, 0x1e, 0xed, 0x2c, 0x36, 0x04, 0xac, 0x03, 0xac,
		0x03, 0xac, 0x03, 0xac, 0x03, 0xac, 0x03, 0xac, 0x03, 0xac, 0x03, 0xac, 0x93, 0x03, 0xac, 0xb3,
		0x7c, 0x31, 0x81, 0xa1, 0xf4, 0xd5, 0x72, 0x5b, 0x40, 0x3c, 0x40, 0x3c, 0x40, 0x3c, 0x40, 0x3c,
		0x40, 0x3c, 0x40, 0x3c, 0x40, 0x3c, 0x40, 0x3c, 0xb8, 0xea, 0xbc, 0xf2, 0x5e, 0xd7, 0xda, 0xdb,
		0x9c, 0x48, 0x6f, 0x88, 0xf4, 0x86, 0xfc, 0x41, 0x11, 0x6e, 0x17, 0xe0, 0x76, 0x01, 0x98, 0x0a,
		0x98, 0x0a, 0x98, 0x0a, 0x98, 0x0a, 0x98, 0x0a, 0x98, 0x4a, 0x6e, 0x98, 0x0a, 0x82, 0xf4, 0x01,
		0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0xe4, 0x83, 0x05,
		0xc4, 0xba, 0x03, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36,
		0x6c, 0x38, 0x69, 0x08, 0x19, 0x07, 0x64, 0x00, 0x64, 0x00, 0x64, 0x00, 0x64, 0x00, 0x64, 0x00,
		0x64, 0x00, 0x64, 0xd8, 0x60, 0xd2, 0x10, 0x79, 0x0d, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0,
		0x00, 0xe0, 0x00, 0xe0, 0x80, 0x5a, 0x4d, 0xfc, 0x76, 0x54, 0x3e, 0x02, 0x98, 0x73, 0x54, 0xb4,
		0x49, 0x5e, 0x81, 0x8e, 0xd4, 0xe9, 0xfb, 0xb5, 0xdf, 0x55, 0xea, 0xb8, 0x1e, 0xb7, 0xf6, 0x39,
		0x6a, 0xac, 0x15, 0xb5, 0x25, 0xa0, 0x58, 0x81, 0xef, 0x0d, 0x43, 0x62, 0xe9, 0xcf, 0x8e, 0xe1,
		0x6e, 0x5e, 0xa5, 0x60, 0xfe, 0x21, 0x35, 0xca, 0x13, 0x6c, 0xd0, 0x55, 0x4d, 0xc9, 0x02, 0x05,
		0xf1, 0xc0, 0x50, 0xa2, 0x80, 0x23, 0x0f, 0x60, 0xbd, 0x44, 0xb0, 0xe1, 0x56, 0x63, 0x45, 0xfc,
		0xf9, 0xbb, 0x46, 0xb0, 0xd9, 0x56, 0x14, 0xa3, 0xf2, 0x52, 0x5f, 0x24, 0xd8, 0x48, 0xe0, 0xad,
		0x5d, 0xe6, 0x94, 0x6b, 0xac, 0x32, 0x8d, 0xa5, 0x18, 0xea, 0x76, 0x10, 0xd9, 0x74, 0xdb, 0x5d,
		0x19, 0x2a, 0xeb, 0x52, 0x56, 0xa9, 0x9b, 0x4a, 0xe5, 0x23, 0x8a, 0x67, 0x27, 0xdd, 0x96, 0xce,
		0x64, 0xe7, 0xf9, 0x7b, 0xa5, 0x51, 0x62, 0x20, 0x6c, 0x93, 0xd1, 0x37, 0x18, 0x9a, 0x60, 0xe3,
		0xf3, 0xec, 0xb3, 0xc1, 0x95, 0xdf, 0xf3, 0xe6, 0xf9, 0xc2, 0x38, 0x28, 0x7f, 0x2e, 0xca, 0x81,
		0xff, 0x73, 0xb5, 0x03, 0x2c, 0x2d, 0x45, 0xa3, 0x5e, 0xdf, 0xaf, 0x6f, 0xdf, 0x72, 0x7c, 0xc8,
		0xe6, 0xe9, 0xce, 0x07, 0x89, 0x9b, 0x87, 0x83, 0x2c, 0x0c, 0x42, 0xdf, 0x76, 0x7b, 0x1c, 0x64,
		0x61, 0xe5, 0x10, 0xd7, 0xe1, 0x71, 0x1d, 0x9e, 0xc6, 0x8a, 0x32, 0x67, 0x5e, 0xc8, 0xe0, 0x1e,
		0xbc, 0x3d, 0x78, 0xae, 0xa5, 0xa7, 0xb0, 0xf1, 0x53, 0x05, 0xa9, 0xb1, 0x37, 0xd8, 0xce, 0x5b,
		0xf0, 0x03, 0x65, 0xc8, 0xab, 0x61, 0x59, 0xb1, 0x28, 0x09, 0xe8, 0x19, 0xec, 0xac, 0x09, 0x3a,
		0x1a, 0x5b, 0x51, 0xcd, 0x1b, 0x3b, 0x00, 0x89, 0x65, 0xdc, 0xf4, 0x72, 0x28, 0x6c, 0xda, 0xc3,
		0xb0, 0x78, 0x28, 0xe8, 0x17, 0x6b, 0xe1, 0x68, 0xd0, 0x2e, 0x15, 0xdd, 0x01, 0x61, 0x3e, 0x28,
		0x3c, 0x0e, 0x0c, 0xb7, 0x83, 0xc3, 0xeb, 0x00, 0x71, 0x3f, 0x48, 0xdc, 0x0f, 0x14, 0xcf, 0x83,
		0xc5, 0x46, 0x36, 0x28, 0x29, 0x03, 0xf5, 0x81, 0x4b, 0x1a, 0x48, 0x69, 0xf5, 0x7f, 0x77, 0xd3,
		0xa5, 0xf2, 0x06, 0x08, 0x3a, 0x86, 0xdc, 0x8e, 0x23, 0xcf, 0x63, 0xc9, 0xfd, 0x78, 0xf2, 0x3e,
		0xa6, 0xc2, 0x8e, 0xab, 0xb0, 0x63, 0x2b, 0xe2, 0xf8, 0x72, 0xb2, 0x38, 0x30, 0xee, 0x37, 0xd6,
		0x63, 0x3d, 0xc7, 0x87, 0xf8, 0xed, 0x8b, 0x19, 0x5b, 0xe2, 0xb5, 0x21, 0xe8, 0xbc, 0x2a, 0xc2,
		0x8f, 0xbb, 0x88, 0x63, 0x2f, 0xec, 0xf8, 0x8b, 0x12, 0x03, 0xc2, 0xc5, 0x81, 0x70, 0xb1, 0x20,
		0x52, 0x3c, 0xf0, 0x11, 0x13, 0x9c, 0xc4, 0x45, 0x32, 0x50, 0x6a, 0x0f, 0xd2, 0x46, 0x16, 0x12,
		0x9d, 0x0d, 0x5b, 0xff, 0xde, 0xdc, 0xc8, 0xb1, 0xcd, 0x6b, 0x23, 0x0c, 0x89, 0xef, 0x32, 0x7b,
		0x63, 0x96, 0x1a, 0xde, 0xf9, 0x56, 0xd6, 0x8f, 0x3a, 0xbf, 0xbe, 0x55, 0xf4, 0xa3, 0xce, 0xf8,
		0xc7, 0x4a, 0xfc, 0xbf, 0x9f, 0xd5, 0xd1, 0xaf, 0xea, 0xb7, 0xb2, 0x5e, 0x9b, 0x7c, 0x5a, 0xad,
		0x7f, 0x2b, 0xeb, 0xf5, 0xce, 0xee, 0xce, 0xfd, 0xfd, 0xa7, 0xb4, 0xcf, 0xec, 0xfe, 0xdc, 0x1f,
		0xf1, 0xdb, 0x9e, 0x1d, 0x9e, 0xd3, 0x7a, 0x75, 0xdb, 0xfe, 0x4b, 0xd8, 0xdc, 0xfe, 0xb3, 0x23,
		0x6b, 0x76, 0x77, 0xff, 0xc5, 0x71, 0x7e, 0x73, 0x75, 0xfc, 0x19, 0xad, 0xdd, 0x6b, 0xdb, 0xe5,
		0x66, 0x05, 0x17, 0x27, 0x45, 0x79, 0xf8, 0xeb, 0xc6, 0xda, 0x4d, 0x77, 0x88, 0xdb, 0x8b, 0xcd,
		0xde, 0x9c, 0x61, 0xd3, 0xdb, 0xe6, 0x81, 0xa0, 0x80, 0xa0, 0x80, 0xa0, 0xb6, 0x08, 0x41, 0x0d,
		0x6d, 0x37, 0x3c, 0x14, 0x00, 0x9d, 0xea, 0x1c, 0x9b, 0xe4, 0x13, 0xc5, 0xb2, 0xf8, 0x8f, 0xef,
		0x69, 0xd2, 0x78, 0x47, 0xb9, 0x2c, 0x35, 0xce, 0x39, 0xea, 0x65, 0xa9, 0x7d, 0x51, 0x61, 0x17,
		0xcb, 0x5b, 0x8f, 0x77, 0x18, 0x86, 0xa0, 0x53, 0xf7, 0x76, 0x69, 0x8d, 0x17, 0xf1, 0x4b, 0xbb,
		0x5f, 0xc5, 0xda, 0x4a, 0x91, 0xcb, 0xfc, 0x5b, 0x03, 0xe4, 0x2e, 0x10, 0xe4, 0x0e, 0x79, 0xaa,
		0xdb, 0x44, 0xd5, 0xc6, 0xad, 0x72, 0x5a, 0x60, 0x96, 0xbb, 0xd5, 0xeb, 0x51, 0xf1, 0x4d, 0xfb,
		0xa2, 0x75, 0xf3, 0x37, 0x1f, 0x10, 0xd5, 0x01, 0x95, 0x00, 0x95, 0x00, 0x95, 0xd8, 0x52, 0x63,
		0xac, 0xce, 0x51, 0xd8, 0xcd, 0x8b, 0x81, 0x4a, 0x8d, 0x63, 0x9b, 0xa7, 0xee, 0xb0, 0xcf, 0xff,
		0x2c, 0xdc, 0x79, 0xb7, 0xe3, 0x70, 0x57, 0x11, 0x70, 0xb1, 0x54, 0x8e, 0x66, 0x7a, 0x2a, 0xa8,
		0x05, 0xe0, 0xdc, 0x4a, 0xd4, 0xfe, 0xed, 0xe9, 0xf1, 0xd5, 0xe5, 0x09, 0x37, 0x55, 0x20, 0x08,
		0x97, 0x97, 0xee, 0xbc, 0x76, 0x7c, 0x60, 0x05, 0x4c, 0xf3, 0x74, 0x86, 0x85, 0x20, 0xe5, 0xb9,
		0xf9, 0x6d, 0x6a, 0x95, 0x9c, 0x02, 0xda, 0x11, 0x00, 0x6d, 0x4e, 0x00, 0x6d, 0xa6, 0x2e, 0x7f,
		0xce, 0x13, 0xcf, 0x29, 0x82, 0x3b, 0x52, 0x35, 0x7b, 0x49, 0xb8, 0xe9, 0xf4, 0xa7, 0x54, 0x81,
		0xdd, 0xfc, 0xa7, 0x9b, 0x25, 0x39, 0x07, 0x87, 0x80, 0x08, 0x7e, 0x81, 0x10, 0x9c, 0x30, 0x37,
		0xe2, 0x9c, 0x72, 0x85, 0xa5, 0x11, 0xe7, 0x24, 0x1f, 0x23, 0x27, 0xbb, 0x2d, 0x52, 0x2a, 0x3e,
		0xe9, 0xf2, 0xd8, 0x6f, 0x53, 0x24, 0x7c, 0xc0, 0xa1, 0xad, 0xeb, 0x89, 0x1c, 0xfe, 0xf4, 0x69,
		0x22, 0x3b, 0xf7, 0x58, 0x17, 0x2f, 0x1b, 0xf1, 0x99, 0xae, 0xce, 0xe4, 0xbb, 0xab, 0x95, 0xa6,
		0xfe, 0xe4, 0xbb, 0xeb, 0xc4, 0x4b, 0x88, 0x56, 0x21, 0x44, 0x21, 0x44, 0x15, 0x12, 0xa2, 0x08,
		0x16, 0xcd, 0x12, 0x33, 0x89, 0x38, 0xf6, 0xc2, 0x8e, 0xbf, 0x28, 0x31, 0x20, 0x5c, 0x1c, 0x08,
		0x17, 0x0b, 0x22, 0xc5, 0x43, 0x3e, 0x99, 0x3e, 0x82, 0x45, 0x11, 0x2c, 0xfa, 0xe6, 0x1f, 0x82,
		0x45, 0x95, 0x08, 0x16, 0xcd, 0x85, 0xe3, 0xd6, 0xf3, 0xed, 0x1e, 0xcf, 0x4c, 0x33, 0x89, 0xa2,
		0x1b, 0xb7, 0x0b, 0xc8, 0x00, 0xc8, 0x00, 0xc8, 0xb0, 0x55, 0x90, 0x21, 0x71, 0x68, 0x72, 0x15,
		0x01, 0x1a, 0x5c, 0x9a, 0xb3, 0xd6, 0x63, 0x97, 0xe6, 0xd5, 0xdd, 0x9f, 0xa7, 0x37, 0xe2, 0x1c,
		0x9a, 0x77, 0xad, 0xbb, 0xf6, 0xb1, 0x88, 0xe6, 0xab, 0x51, 0xf3, 0x27, 0x7f, 0x1e, 0x5f, 0x8b,
		0x68, 0x7c, 0x3f, 0x6a, 0xfc, 0xbc, 0x7d, 0xf9, 0x9f, 0x87, 0xf3, 0xd6, 0xdf, 0x62, 0xa6, 0xa7,
		0x16, 0xbd, 0xe2, 0xa6, 0x75, 0x79, 0x72, 0x75, 0xb1, 0xb5, 0xce, 0xde, 0x78, 0xf9, 0x98, 0x0d,
		0x6c, 0x2b, 0x9b, 0x9e, 0x5b, 0xbc, 0xa6, 0xb6, 0x2f, 0xe0, 0x05, 0xe3, 0x73, 0x23, 0xc6, 0x4d,
		0x3d, 0xd9, 0x16, 0x4d, 0xad, 0x26, 0xc2, 0x07, 0x3e, 0x3e, 0x92, 0x85, 0x77, 0x80, 0xe3, 0x0e,
		0x11, 0x50, 0x32, 0x50, 0x32, 0x50, 0x72, 0x81, 0x51, 0x32, 0xee, 0x10, 0x71, 0xdc, 0x8f, 0xb8,
		0x43, 0xb4, 0xd1, 0xd6, 0xc3, 0x1d, 0xa2, 0x35, 0x4b, 0x8b, 0x3b, 0x44, 0x12, 0x31, 0xa2, 0x96,
		0xc7, 0x3b, 0x44, 0xb8, 0x42, 0xb3, 0x19, 0xeb, 0xc3, 0x15, 0x1a, 0x20, 0x69, 0x20, 0x69, 0x20,
		0xe9, 0x1c, 0x21, 0x69, 0x5c, 0xa1, 0xd1, 0x70, 0x85, 0x46, 0x22, 0x2c, 0xc5, 0x15, 0x1a, 0x91,
		0x78, 0x0e, 0x37, 0x48, 0x94, 0xbb, 0x41, 0x92, 0xa2, 0xc2, 0x24, 0xff, 0xd9, 0x66, 0x89, 0x80,
		0x7e, 0xf6, 0x7d, 0x8e, 0x57, 0x48, 0xe2, 0xd6, 0x90, 0x2c, 0x57, 0x1a, 0xba, 0x44, 0xfc, 0x33,
		0xe2, 0x9f, 0x7f, 0x7b, 0xb4, 0xf5, 0x9e, 0xef, 0x0d, 0x05, 0xc4, 0x41, 0xcf, 0xb5, 0xcd, 0x97,
		0x6c, 0x56, 0x40, 0x36, 0x41, 0x36, 0x41, 0x36, 0x39, 0x98, 0xa9, 0x38, 0x89, 0x91, 0xa4, 0x41,
		0x4e, 0xa9, 0xf5, 0xd7, 0x1e, 0x02, 0x2e, 0xa9, 0xf6, 0x05, 0x8b, 0x15, 0x61, 0xe2, 0x45, 0xa4,
		0x98, 0x11, 0x2e, 0x6e, 0x44, 0x8b, 0x1d, 0x69, 0xe2, 0x47, 0x9a, 0x18, 0x92, 0x21, 0x8e, 0xf8,
		0xf3, 0x52, 0x11, 0x86, 0x04, 0xde, 0x62, 0x2a, 0x69, 0xd8, 0x30, 0x4d, 0x32, 0x08, 0xf5, 0xbe,
		0x67, 0x09, 0xdc, 0x90, 0x49, 0x99, 0x9e, 0xb9, 0x97, 0x09, 0xda, 0x29, 0x22, 0xdc, 0x0e, 0x4b,
		0x2f, 0x89, 0xfd, 0x66, 0x25, 0x21, 0xed, 0x77, 0x04, 0xcd, 0x0b, 0x5f, 0x27, 0x85, 0x34, 0x41,
		0x2f, 0x43, 0xe0, 0x4b, 0x13, 0xfc, 0xb2, 0x14, 0x80, 0x74, 0x45, 0x20, 0x5d, 0x21, 0xc8, 0x54,
		0x0c, 0x62, 0x14, 0x84, 0x20, 0x45, 0x91, 0x4c, 0x0c, 0x77, 0x27, 0xca, 0xda, 0xd3, 0xf2, 0xe8,
		0x79, 0x0e, 0x31, 0x5c, 0x91, 0xe7, 0x65, 0x8a, 0x4e, 0x2b, 0x4a, 0x2d, 0x81, 0xa0, 0xa4, 0x4a,
		0x4b, 0xef, 0x11, 0x9e, 0x64, 0x49, 0xfc, 0x49, 0x10, 0x11, 0x0e, 0x64, 0x58, 0xcf, 0xc4, 0x0f,
		0xed, 0x80, 0x44, 0xf2, 0x61, 0x6c, 0xbc, 0x7e, 0x36, 0x1c, 0x09, 0x20, 0x67, 0xf5, 0x7b, 0x55,
		0xc6, 0x3b, 0x95, 0x72, 0x19, 0x68, 0x07, 0x68, 0x07, 0x68, 0x07, 0x68, 0x67, 0xdb, 0xd1, 0xce,
		0xd0, 0x76, 0xc3, 0x4a, 0x43, 0x02, 0xd8, 0x69, 0x08, 0x7c, 0x85, 0x98, 0x68, 0xed, 0xc5, 0x7f,
		0x62, 0x8f, 0xbb, 0x26, 0x3a, 0x9a, 0x7b, 0xe9, 0x65, 0xd3, 0x10, 0xe0, 0xca, 0x47, 0x39, 0xef,
		0x93, 0x15, 0x11, 0xbc, 0xbc, 0xd7, 0x45, 0x47, 0x08, 0x4b, 0x12, 0x0b, 0x6f, 0xb7, 0x8a, 0xf1,
		0x22, 0x7f, 0xab, 0xd4, 0xca, 0x47, 0x75, 0xec, 0x16, 0x25, 0x54, 0x93, 0xf8, 0xd6, 0x3b, 0x60,
		0xaf, 0x60, 0xaf, 0x9b, 0x4e, 0xcb, 0xc0, 0x27, 0xa4, 0x3f, 0x08, 0xc5, 0xd3, 0xd5, 0xe9, 0x8b,
		0x54, 0xe6, 0xa7, 0x11, 0xf4, 0x06, 0x41, 0x05, 0x41, 0x05, 0x41, 0x05, 0x41, 0xdd, 0x76, 0x82,
		0x0a, 0x73, 0x3c, 0x00, 0x4d, 0x8e, 0x01, 0x8d, 0x6e, 0x11, 0xc7, 0x78, 0x95, 0x06, 0x6b, 0x26,
		0xaf, 0x53, 0x19, 0xdc, 0xc0, 0xf4, 0x0e, 0x64, 0x03, 0x64, 0x03, 0x64, 0xb3, 0xf5, 0xc8, 0x06,
		0xa6, 0xf7, 0x8d, 0xff, 0x15, 0xd5, 0xf4, 0x5e, 0x86, 0x31, 0x55, 0x0d, 0xb1, 0xf0, 0x76, 0xab,
		0x64, 0x61, 0x7a, 0xdf, 0x6f, 0x94, 0xb1, 0x5b, 0xd4, 0x50, 0x4d, 0xe2, 0x5b, 0x87, 0xe9, 0x1d,
		0x4c, 0x35, 0x05, 0x53, 0xb5, 0x3d, 0xdf, 0x0e, 0xa5, 0x90, 0xd4, 0xc9, 0x9b, 0x10, 0x1c, 0x06,
		0x86, 0x0a, 0x86, 0x0a, 0x86, 0x0a, 0x86, 0xaa, 0x3c, 0x43, 0x3d, 0x94, 0x40, 0x50, 0xeb, 0x20,
		0xa8, 0x39, 0x25, 0xa8, 0x88, 0x0d, 0x03, 0x41, 0xdd, 0x70, 0xab, 0x54, 0xeb, 0x35, 0x6c, 0x16,
		0xf0, 0x53, 0xf0, 0x53, 0xf0, 0xd3, 0x74, 0xd3, 0xf2, 0x6c, 0xfb, 0xe1, 0xd0, 0x70, 0x92, 0x5a,
		0x7b, 0xc2, 0x69, 0xea, 0xe2, 0x0b, 0xc1, 0xcb, 0xc0, 0xcb, 0xc0, 0xcb, 0xc0, 0xcb, 0x94, 0xe1,
		0x65, 0xb3, 0x3a, 0x63, 0x32, 0xc2, 0xa2, 0x8e, 0x04, 0xbe, 0x63, 0x32, 0x67, 0xca, 0x93, 0x33,
		0xc1, 0x45, 0x63, 0xdf, 0x5d, 0xa3, 0x43, 0x09, 0xef, 0x12, 0x55, 0x08, 0x75, 0xed, 0x0b, 0xd5,
		0x2b, 0x3e, 0xbb, 0x16, 0x0f, 0xcb, 0x58, 0x1e, 0x91, 0xc5, 0x6a, 0xd7, 0xbe, 0x55, 0xcd, 0x22,
		0xb6, 0x72, 0x79, 0x8b, 0x24, 0xea, 0x2f, 0x57, 0xcc, 0x35, 0x20, 0xe6, 0x78, 0x89, 0xb9, 0xf8,
		0x34, 0x18, 0x7a, 0xb7, 0xa5, 0x9f, 0x75, 0x7e, 0x56, 0x3e, 0xd6, 0x46, 0xcd, 0xdd, 0x9f, 0x07,
		0xa3, 0xc5, 0x0f, 0x7f, 0xad, 0xfa, 0x5a, 0xe5, 0xe3, 0xc1, 0xa8, 0xb9, 0xe6, 0x2f, 0x8d, 0x51,
		0x73, 0xc3, 0x36, 0xea, 0xa3, 0x9d, 0xa5, 0xaf, 0x46, 0x9f, 0x57, 0xd7, 0x3d, 0x50, 0x5b, 0xf3,
		0xc0, 0xfe, 0xba, 0x07, 0xf6, 0xd7, 0x3c, 0xb0, 0xb6, 0x4b, 0xd5, 0x35, 0x0f, 0xd4, 0x47, 0xbf,
		0x96, 0xbe, 0xbf, 0xb3, 0xfa, 0xab, 0x8d, 0xd1, 0xee, 0xaf, 0x75, 0x7f, 0x3b, 0x18, 0xfd, 0x6a,
		0xee, 0xee, 0x42, 0xf0, 0x33, 0x0b, 0x7e, 0x6c, 0x5b, 0xf9, 0xdb, 0x56, 0x7d, 0x45, 0x08, 0xc3,
		0x63, 0x7c, 0x86, 0xce, 0xed, 0x20, 0x6c, 0x85, 0xa1, 0x2f, 0x96, 0x35, 0x5e, 0xd8, 0xee, 0xa9,
		0x13, 0x67, 0xef, 0x11, 0x6c, 0x2b, 0x2f, 0x5d, 0x18, 0x2f, 0x73, 0x6f, 0xaa, 0x1c, 0xd6, 0x6a,
		0x8d, 0x83, 0x5a, 0xad, 0x7c, 0xb0, 0x7f, 0x50, 0x3e, 0xaa, 0xd7, 0x2b, 0x8d, 0x8a, 0x48, 0x47,
		0xdf, 0x95, 0x6f, 0x11, 0x9f, 0x58, 0x9f, 0x5f, 0x4b, 0x4d, 0xcd, 0x1d, 0x3a, 0x8e, 0x8c, 0x57,
		0x7d, 0x09, 0x88, 0x2f, 0xd4, 0x19, 0x00, 0x93, 0x77, 0xe6, 0xa2, 0x45, 0xa4, 0xc9, 0x3b, 0x2e,
		0x31, 0xe1, 0xeb, 0xb6, 0x25, 0xcf, 0xe8, 0x3d, 0x7b, 0x25, 0xcc, 0xde, 0xab, 0xe1, 0x14, 0xcc,
		0xde, 0x14, 0x8b, 0x0e, 0xb3, 0x77, 0xde, 0xe1, 0x11, 0xc2, 0x91, 0x36, 0x15, 0x5d, 0x08, 0x47,
		0xda, 0x0c, 0x55, 0x22, 0x1c, 0x89, 0xff, 0x56, 0x47, 0x38, 0x12, 0xa7, 0xad, 0x52, 0xad, 0x23,
		0x53, 0x95, 0x3a, 0xbc, 0x1d, 0x56, 0x01, 0x70, 0xb3, 0xcc, 0x5b, 0xe4, 0x5d, 0xe4, 0x42, 0xf0,
		0x42, 0x8a, 0x2d, 0x6d, 0xf8, 0xec, 0xfb, 0x83, 0xbd, 0x59, 0xbd, 0xaf, 0xbd, 0x49, 0x9d, 0x9e,
		0xbc, 0xd6, 0xce, 0xe4, 0x58, 0x45, 0x2b, 0x99, 0x26, 0x3d, 0xf4, 0x0d, 0xf3, 0xbb, 0x88, 0xc2,
		0xb2, 0x33, 0x47, 0xda, 0xf2, 0xbb, 0x50, 0x09, 0x09, 0x95, 0x90, 0xb2, 0xa6, 0xd9, 0xa8, 0x84,
		0x24, 0x4d, 0x49, 0x08, 0xab, 0x84, 0x24, 0xa8, 0x70, 0xdb, 0xd2, 0x61, 0x12, 0x52, 0xc0, 0x4d,
		0xb0, 0xf8, 0x12, 0x2e, 0xc6, 0x64, 0x88, 0x33, 0x69, 0x62, 0x4d, 0x96, 0x78, 0x93, 0x2e, 0xe6,
		0xa4, 0x8b, 0x3b, 0x99, 0x62, 0x4f, 0x2c, 0xad, 0x12, 0x45, 0x7e, 0x44, 0x89, 0xc3, 0xe4, 0x05,
		0xd3, 0x3b, 0xea, 0xba, 0x45, 0x4c, 0x9f, 0x4c, 0xd6, 0x40, 0xf0, 0x7e, 0x5e, 0xbc, 0x1f, 0x3f,
		0xf7, 0x6e, 0xc1, 0xfb, 0x4c, 0xc6, 0x8d, 0xf9, 0xe4, 0x65, 0x65, 0xb1, 0x71, 0x09, 0x82, 0x63,
		0x69, 0x04, 0x3b, 0xae, 0xa4, 0xa9, 0x1c, 0x99, 0xaa, 0x47, 0xba, 0x0a, 0x92, 0xad, 0x8a, 0x32,
		0x53, 0x49, 0x99, 0xa9, 0xa6, 0x2c, 0x54, 0x94, 0x58, 0x55, 0x25, 0x58, 0x65, 0x25, 0x13, 0x26,
		0xdc, 0x11, 0xb6, 0x74, 0xda, 0x44, 0x3b, 0xc4, 0x16, 0x45, 0xa3, 0x04, 0x8b, 0xba, 0x24, 0x07,
		0xd9, 0xf4, 0x9f, 0x1c, 0xe9, 0xa1, 0xc9, 0x76, 0x98, 0x25, 0x2f, 0x95, 0x9c, 0x68, 0x2e, 0x79,
		0x6f, 0x56, 0x3e, 0x91, 0xd9, 0x11, 0x91, 0xed, 0x1b, 0x91, 0x24, 0x65, 0xde, 0x6e, 0x29, 0x89,
		0x8e, 0xb5, 0xa5, 0x2d, 0x25, 0xed, 0xbe, 0x3f, 0x36, 0x95, 0x60, 0xc5, 0x28, 0xef, 0x2d, 0x4a,
		0xdf, 0xaf, 0x91, 0xe5, 0x98, 0x4b, 0xde, 0x27, 0xdd, 0x41, 0x27, 0x7e, 0x23, 0x08, 0x5c, 0xa2,
		0x52, 0xec, 0x41, 0x99, 0xb9, 0xbe, 0xe4, 0xd1, 0xfa, 0xc5, 0x17, 0x83, 0xa7, 0x82, 0xa7, 0x82,
		0xa7, 0x82, 0xa7, 0x82, 0xa7, 0x4e, 0x4e, 0x5b, 0xa4, 0xb5, 0x7c, 0xd2, 0x95, 0x79, 0x53, 0xf4,
		0x40, 0xce, 0x4d, 0xd1, 0x49, 0xe4, 0x85, 0xa9, 0xdb, 0xdd, 0xe6, 0x5c, 0xa4, 0xc5, 0xc2, 0x07,
		0x93, 0xdf, 0xdd, 0x68, 0x3a, 0x94, 0xde, 0x3a, 0x52, 0x2e, 0x2c, 0xcd, 0x33, 0x66, 0x39, 0x17,
		0x97, 0xe6, 0x09, 0x55, 0x66, 0x17, 0x98, 0x92, 0x4e, 0xc8, 0xbb, 0xc8, 0xb4, 0xfc, 0x4a, 0xe1,
		0x17, 0x9a, 0x80, 0xd5, 0xd5, 0xc1, 0xea, 0x88, 0x9a, 0x5c, 0xf1, 0x1e, 0xa9, 0x41, 0x77, 0xcb,
		0xe1, 0x61, 0x42, 0xe2, 0xf0, 0xc4, 0xad, 0xb8, 0x88, 0xcb, 0x73, 0x41, 0x68, 0x84, 0x44, 0x7c,
		0x5c, 0xcb, 0xf8, 0x35, 0x8a, 0x87, 0xb5, 0x54, 0x11, 0xd6, 0x92, 0x1b, 0x8e, 0x86, 0xb0, 0x96,
		0xed, 0xd5, 0x4e, 0x08, 0x6b, 0xe1, 0x3b, 0x9d, 0x08, 0x6b, 0x49, 0xab, 0x6a, 0x60, 0x2e, 0xcc,
		0xb1, 0x0a, 0x92, 0xad, 0x8a, 0x32, 0x53, 0x49, 0x99, 0xa9, 0xa6, 0x2c, 0x54, 0x94, 0x78, 0x8a,
		0xa6, 0x21, 0xac, 0x85, 0x83, 0x68, 0x44, 0x58, 0x0b, 0x8b, 0xc9, 0x0c, 0x61, 0x2d, 0x12, 0x3b,
		0x80, 0xb0, 0x16, 0xd1, 0x5b, 0x0a, 0x61, 0x2d, 0x08, 0x6b, 0x49, 0x0d, 0xe1, 0x11, 0x8d, 0xb1,
		0xb4, 0xa9, 0x10, 0x8d, 0x01, 0x7a, 0x05, 0x7a, 0x05, 0x7a, 0x05, 0x7a, 0x95, 0x37, 0x7a, 0x85,
		0x68, 0x0c, 0x44, 0x63, 0xd0, 0x11, 0x3d, 0x44, 0x63, 0x14, 0x35, 0x1a, 0x03, 0x6e, 0x1a, 0x6d,
		0x9b, 0x82, 0x08, 0xc6, 0xbe, 0x6d, 0x24, 0x79, 0xca, 0xff, 0x96, 0xc9, 0x7a, 0xab, 0x94, 0x84,
		0x04, 0x70, 0xf8, 0x43, 0x33, 0x74, 0x27, 0x70, 0xa4, 0x3d, 0x7d, 0xe7, 0xc3, 0x4d, 0xdc, 0xe1,
		0xaf, 0x8e, 0xe1, 0x3e, 0xb4, 0x07, 0xcf, 0xb5, 0x87, 0xd6, 0xb8, 0x97, 0x0f, 0x5f, 0x7d, 0x7f,
		0xf0, 0x47, 0xd4, 0xbf, 0x87, 0xe4, 0xbb, 0x77, 0xd3, 0xee, 0x6d, 0x41, 0x3e, 0x2a, 0x31, 0xf1,
		0x2e, 0x42, 0xe3, 0x5c, 0x84, 0x67, 0x9d, 0xaa, 0x22, 0xeb, 0x94, 0x34, 0x56, 0x8b, 0xac, 0x53,
		0xc5, 0xd3, 0x5a, 0xc2, 0xb2, 0x4e, 0x19, 0xa6, 0x49, 0x06, 0xa1, 0xde, 0xf7, 0x2c, 0x09, 0x21,
		0x7a, 0xf3, 0x2f, 0x13, 0x15, 0xb8, 0x23, 0x21, 0xd2, 0xa4, 0x14, 0x03, 0x7c, 0x31, 0x70, 0xac,
		0x83, 0x2c, 0xff, 0xb2, 0x05, 0xbe, 0x34, 0xc1, 0x2f, 0x4b, 0x01, 0x48, 0x57, 0x04, 0xd2, 0x15,
		0x82, 0x4c, 0xc5, 0xa0, 0x26, 0x33, 0x96, 0x97, 0xe5, 0xff, 0xd1, 0xf3, 0x1c, 0x62, 0xb8, 0x32,
		0x2a, 0xdb, 0x56, 0xb6, 0x38, 0x8a, 0xde, 0xb0, 0x9e, 0x89, 0x1f, 0xda, 0x41, 0x6c, 0x5f, 0x1b,
		0x73, 0xc9, 0x67, 0xc3, 0x91, 0xa0, 0xb3, 0x57, 0xbf, 0x57, 0x65, 0xf5, 0x5d, 0x29, 0x97, 0xa1,
		0xbc, 0xa1, 0xbc, 0xa1, 0xbc, 0xa1, 0xbc, 0xb7, 0x5d, 0x79, 0x0f, 0x6d, 0x37, 0xac, 0x34, 0x24,
		0xe8, 0xee, 0x06, 0x6a, 0xf4, 0xbc, 0x3f, 0x10, 0xd4, 0xe8, 0x11, 0xb2, 0xd7, 0x51, 0xa3, 0x87,
		0xd3, 0x56, 0xa9, 0x95, 0x8f, 0x50, 0xa4, 0x47, 0x0d, 0xd5, 0x24, 0xbe, 0xf5, 0xce, 0x16, 0x93,
		0x31, 0x73, 0xe8, 0xfb, 0x11, 0x1d, 0x9a, 0xde, 0xa4, 0x93, 0x90, 0xb5, 0x7f, 0xf1, 0x8d, 0xa0,
		0x1a, 0xa0, 0x1a, 0xa0, 0x1a, 0xa0, 0x1a, 0x4a, 0x51, 0x0d, 0x54, 0x03, 0xdd, 0x66, 0xa6, 0x51,
		0x06, 0x76, 0x04, 0xd3, 0xd8, 0x6c, 0xab, 0xa0, 0x1a, 0x28, 0x88, 0x06, 0x88, 0x46, 0x0c, 0xc7,
		0x48, 0x7f, 0x10, 0x8a, 0xe7, 0x17, 0xd3, 0x17, 0xa9, 0xec, 0xd7, 0x89, 0x70, 0x24, 0x1c, 0x3b,
		0x60, 0x5b, 0x60, 0x5b, 0x60, 0x5b, 0xdb, 0xce, 0xb6, 0x10, 0x95, 0x21, 0x53, 0x3f, 0xeb, 0x16,
		0x71, 0x8c, 0x57, 0x69, 0x5a, 0x7a, 0xf2, 0x3a, 0x95, 0x75, 0x35, 0x22, 0x30, 0xa0, 0xa8, 0xa1,
		0xa8, 0xa1, 0xa8, 0xb7, 0x5e, 0x51, 0x23, 0x02, 0x63, 0xe3, 0x7f, 0xb0, 0x8b, 0xb2, 0xbd, 0x0f,
		0x76, 0x51, 0xae, 0x5b, 0x25, 0x0b, 0xbb, 0xe8, 0x7e, 0xa3, 0x8c, 0xdd, 0xa2, 0x86, 0x6a, 0x12,
		0xdf, 0xfa, 0x76, 0x1b, 0x46, 0x65, 0x45, 0x5e, 0x88, 0x8e, 0xb8, 0x40, 0xc8, 0x3b, 0x08, 0x17,
		0x08, 0x17, 0x08, 0x17, 0x08, 0x17, 0xe2, 0x50, 0xc0, 0xb7, 0x64, 0x80, 0x68, 0x44, 0xbc, 0x83,
		0x6f, 0x6d, 0xb8, 0x55, 0xa4, 0x65, 0x17, 0x06, 0xdd, 0x02, 0xdd, 0xca, 0x31, 0xdd, 0x7a, 0xb6,
		0xfd, 0x70, 0x68, 0x38, 0xfa, 0x24, 0x11, 0x95, 0x78, 0xd6, 0xb5, 0xf8, 0x42, 0xd0, 0x0c, 0xd0,
		0x0c, 0xd0, 0x0c, 0xd0, 0x0c, 0x65, 0x68, 0x86, 0x3d, 0x10, 0x2c, 0xbb, 0xe6, 0xe5, 0x57, 0xe5,
		0x48, 0xe0, 0x3b, 0x26, 0x73, 0xa6, 0x3c, 0xd7, 0x98, 0xad, 0xcc, 0x73, 0x4d, 0xc2, 0xda, 0x2c,
		0xad, 0xd1, 0xa1, 0x9c, 0xa4, 0xca, 0x21, 0xf1, 0x5d, 0x69, 0x85, 0x6b, 0x4a, 0x3b, 0xdf, 0xca,
		0xfa, 0x51, 0xe7, 0xd7, 0xb7, 0x8a, 0x7e, 0xd4, 0x19, 0xff, 0x58, 0x89, 0xff, 0xf7, 0xb3, 0x3a,
		0xfa, 0x55, 0xfd, 0x56, 0xd6, 0x6b, 0x93, 0x4f, 0xab, 0xf5, 0x6f, 0x65, 0xbd, 0xde, 0xd9, 0xdd,
		0xb9, 0xbf, 0xff, 0x94, 0xf6, 0x99, 0xdd, 0x9f, 0xfb, 0x23, 0xf1, 0x69, 0xc9, 0x3b, 0x32, 0x96,
		0xe7, 0xea, 0xb6, 0xfd, 0x97, 0xf4, 0x35, 0xfa, 0x67, 0x47, 0xd6, 0x2a, 0xed, 0xfe, 0xab, 0xa4,
		0x7a, 0xf1, 0x8e, 0x8f, 0x05, 0x12, 0x73, 0x0d, 0x88, 0x39, 0x5e, 0x62, 0x2e, 0x3e, 0x0d, 0x86,
		0xde, 0x6d, 0xe9, 0x67, 0x9d, 0x9f, 0x95, 0x8f, 0xb5, 0x51, 0x73, 0xf7, 0xe7, 0xc1, 0x68, 0xf1,
		0xc3, 0x5f, 0xab, 0xbe, 0x56, 0xf9, 0x78, 0x30, 0x6a, 0xae, 0xf9, 0x4b, 0x63, 0xd4, 0xdc, 0xb0,
		0x8d, 0xfa, 0x68, 0x67, 0xe9, 0xab, 0xd1, 0xe7, 0xd5, 0x75, 0x0f, 0xd4, 0xd6, 0x3c, 0xb0, 0xbf,
		0xee, 0x81, 0xfd, 0x35, 0x0f, 0xac, 0xed, 0x52, 0x75, 0xcd, 0x03, 0xf5, 0xd1, 0xaf, 0xa5, 0xef,
		0xef, 0xac, 0xfe, 0x6a, 0x63, 0xb4, 0xfb, 0x6b, 0xdd, 0xdf, 0x0e, 0x46, 0xbf, 0x9a, 0xbb, 0xbb,
		0x10, 0xfc, 0xcc, 0x82, 0x1f, 0xdb, 0x56, 0xfe, 0xb6, 0x55, 0x5f, 0x11, 0xaa, 0x66, 0x47, 0x13,
		0xc4, 0x18, 0xa5, 0x14, 0xed, 0x90, 0x57, 0xac, 0x23, 0xd3, 0x22, 0x1d, 0x12, 0x8b, 0x73, 0x48,
		0x2c, 0xca, 0xa1, 0x96, 0x05, 0x37, 0xae, 0x32, 0xe0, 0xeb, 0xb6, 0x25, 0xcf, 0x86, 0x3b, 0x7b,
		0x25, 0xac, 0xb8, 0xb0, 0xe2, 0xc2, 0x8a, 0x0b, 0x2b, 0xae, 0x32, 0x56, 0x5c, 0x04, 0x8b, 0xe4,
		0xc8, 0xb2, 0x81, 0x60, 0x11, 0x21, 0x5b, 0x1d, 0xc1, 0x22, 0x9c, 0xb6, 0x0a, 0x92, 0x96, 0xa8,
		0x44, 0x43, 0x35, 0x04, 0x8b, 0xa0, 0x58, 0x9b, 0xcc, 0x62, 0x6d, 0x02, 0x8a, 0xf8, 0xe5, 0xb3,
		0x00, 0x9a, 0x78, 0xaa, 0x29, 0x8d, 0x62, 0x0a, 0xa2, 0x96, 0xc2, 0x28, 0x25, 0x0a, 0xa3, 0xe5,
		0x81, 0x32, 0xa2, 0x30, 0x9a, 0x34, 0x0d, 0x21, 0x8c, 0x0a, 0x4a, 0x28, 0xbf, 0x2d, 0xb2, 0xdc,
		0x76, 0x52, 0x5e, 0xfb, 0xd3, 0xa7, 0xbd, 0xb1, 0x4a, 0xdb, 0x5b, 0x96, 0x95, 0x79, 0xd5, 0x45,
		0x1f, 0x72, 0xb4, 0xd3, 0x22, 0xa1, 0x21, 0x52, 0xd3, 0x88, 0x71, 0x30, 0x88, 0x73, 0x28, 0x48,
		0x75, 0x20, 0x08, 0x74, 0x18, 0x08, 0x74, 0x10, 0xf0, 0xda, 0x79, 0x82, 0xd0, 0xaf, 0x54, 0xd4,
		0x5b, 0xe2, 0x5a, 0x58, 0x97, 0xb2, 0x0e, 0x31, 0x1f, 0x41, 0xc7, 0x2e, 0x96, 0xd8, 0x5a, 0x60,
		0xdc, 0x56, 0x25, 0xf2, 0x12, 0xfa, 0x86, 0x3e, 0x74, 0x83, 0xd0, 0x78, 0x74, 0xf8, 0x28, 0xcd,
		0x92, 0x4f, 0xba, 0xc4, 0x27, 0xae, 0xc9, 0xcf, 0xbe, 0xc8, 0x71, 0x9f, 0x4f, 0x35, 0xf8, 0xcd,
		0xd9, 0xb1, 0x56, 0x3f, 0x38, 0x3a, 0xd4, 0x74, 0xed, 0xeb, 0x58, 0x8a, 0x6b, 0xf1, 0x96, 0xf1,
		0xb5, 0x1b, 0x62, 0x0d, 0x5d, 0xcb, 0x70, 0xcd, 0x57, 0xed, 0xda, 0xf7, 0x42, 0xcf, 0xf4, 0x9c,
		0x7b, 0x77, 0xe7, 0xeb, 0xcd, 0xcd, 0xf5, 0xae, 0xf6, 0x95, 0xf8, 0x81, 0xed, 0xb9, 0xda, 0xbe,
		0xd6, 0xf5, 0x7c, 0xad, 0x7d, 0xfd, 0x5c, 0xd3, 0x0c, 0xd7, 0x8a, 0x7e, 0xe0, 0x99, 0xad, 0x45,
		0x14, 0xe6, 0x9d, 0xc7, 0xba, 0xb3, 0x45, 0xe2, 0x0c, 0xbe, 0x44, 0xc3, 0xdc, 0x37, 0xf0, 0x96,
		0xff, 0x2a, 0xe6, 0x0d, 0xb0, 0x7c, 0xc8, 0xd6, 0xe8, 0xc4, 0x2a, 0x5f, 0x38, 0xab, 0x2b, 0xf1,
		0x6a, 0x8a, 0x6d, 0x03, 0xd0, 0x2f, 0x17, 0xdd, 0x93, 0x94, 0xcb, 0x33, 0xc5, 0xaf, 0xd4, 0x8c,
		0x9d, 0x0f, 0x40, 0xe5, 0x07, 0x48, 0x85, 0x02, 0x50, 0x8e, 0x80, 0x93, 0x23, 0xc0, 0xa4, 0x5d,
		0xfa, 0xd6, 0xb0, 0x17, 0x4d, 0x13, 0xb1, 0x98, 0xb4, 0x33, 0xdb, 0x51, 0x4e, 0xb4, 0xf0, 0x9e,
		0x67, 0xea, 0x76, 0xb7, 0x39, 0x77, 0x60, 0x17, 0x3e, 0x88, 0x7e, 0x8f, 0x8e, 0x6c, 0x73, 0xfe,
		0xf8, 0xc6, 0x46, 0x8d, 0x66, 0x7c, 0x88, 0xc7, 0x3f, 0xce, 0x8e, 0xf2, 0x9b, 0xdf, 0x19, 0x55,
		0x5b, 0xe9, 0x84, 0x04, 0xa6, 0x6f, 0x0f, 0x26, 0xd2, 0xab, 0xd4, 0xb2, 0x2c, 0x3b, 0xfa, 0xd9,
		0x70, 0xb4, 0xf6, 0xb5, 0x16, 0xbd, 0x43, 0xeb, 0x1a, 0x7d, 0xdb, 0x79, 0xd5, 0xc6, 0x22, 0x68,
		0xe8, 0xc7, 0x82, 0x2e, 0x52, 0x2a, 0xf7, 0xee, 0x6c, 0x48, 0xac, 0xbd, 0x98, 0x1a, 0x04, 0x18,
		0x9b, 0xe1, 0x65, 0x5d, 0xe4, 0x69, 0x4d, 0xe4, 0x6e, 0x3d, 0xe4, 0x8d, 0x9c, 0x84, 0x59, 0x07,
		0x85, 0xc1, 0x24, 0x11, 0xd6, 0xbf, 0x6c, 0x29, 0xca, 0x89, 0xcd, 0xc7, 0x0c, 0x52, 0x8a, 0xd5,
		0x3b, 0xb7, 0x9d, 0x91, 0x78, 0x1b, 0xa2, 0x56, 0x39, 0xad, 0xdd, 0x82, 0xc0, 0x39, 0x75, 0x4d,
		0xc7, 0x0b, 0x6c, 0xb7, 0x17, 0x09, 0x98, 0xd0, 0xb0, 0x5d, 0xe2, 0xc7, 0x88, 0x35, 0x42, 0xb1,
		0x5a, 0xcc, 0xa4, 0x03, 0xed, 0xc9, 0x70, 0x2d, 0x87, 0x58, 0xda, 0xe3, 0xab, 0x16, 0x3e, 0xd9,
		0xc1, 0xbd, 0xdb, 0xbe, 0xd6, 0x12, 0xd9, 0xc3, 0xab, 0x5f, 0x7c, 0x44, 0x10, 0x77, 0x51, 0x24,
		0x42, 0x24, 0x09, 0x13, 0x4d, 0x32, 0xc9, 0x9d, 0x10, 0x47, 0x86, 0x5c, 0x66, 0xc7, 0xd9, 0x71,
		0x91, 0x2f, 0xf3, 0xb1, 0x00, 0xab, 0x8b, 0x40, 0xeb, 0x0b, 0x7f, 0x2b, 0x8c, 0x52, 0xd6, 0x18,
		0xd1, 0x07, 0x57, 0xa6, 0x75, 0x46, 0xda, 0x59, 0x56, 0xcd, 0x5a, 0xc3, 0x57, 0x4e, 0xf0, 0x6f,
		0xad, 0x53, 0x0c, 0x6b, 0xb5, 0x64, 0xf3, 0x48, 0x87, 0x96, 0x23, 0xf3, 0xb1, 0x5a, 0x09, 0xb5,
		0x56, 0x31, 0x48, 0x86, 0xb4, 0x4e, 0x13, 0xba, 0x63, 0x96, 0x7e, 0xc9, 0xd2, 0x3d, 0x91, 0x52,
		0x19, 0xb3, 0x2e, 0xaa, 0x90, 0xc5, 0x4c, 0x37, 0xb3, 0x9b, 0xcf, 0x4f, 0x8a, 0xb9, 0x29, 0x99,
		0x53, 0x34, 0x9e, 0x6e, 0x4e, 0x66, 0x55, 0x88, 0xc7, 0xcf, 0xa7, 0x5c, 0x0d, 0x3a, 0x4a, 0x41,
		0x4d, 0x1d, 0x58, 0x28, 0x02, 0x33, 0x15, 0x60, 0x45, 0x0e, 0xdc, 0xa0, 0x3d, 0x37, 0xb5, 0xcf,
		0x03, 0xaa, 0x8b, 0x3d, 0xed, 0xb4, 0x56, 0x83, 0x92, 0xf5, 0x64, 0x0e, 0x74, 0xd3, 0xb1, 0xc7,
		0x83, 0xa3, 0x5c, 0xb0, 0xe9, 0x8e, 0x99, 0x6f, 0x8c, 0x72, 0xa6, 0x79, 0xa4, 0x82, 0x2e, 0xc5,
		0x66, 0xe6, 0x92, 0x54, 0x1d, 0xca, 0x16, 0x24, 0xc9, 0x6c, 0x23, 0xe0, 0x61, 0x13, 0xe0, 0x66,
		0x03, 0xe0, 0x45, 0x1d, 0xb8, 0x73, 0x7c, 0xee, 0x3c, 0x80, 0x27, 0x87, 0x97, 0xeb, 0x12, 0x63,
		0x0e, 0x1a, 0xe4, 0x58, 0x66, 0x8d, 0xb1, 0x8c, 0xda, 0x28, 0x63, 0xd8, 0xfb, 0xda, 0xf3, 0x42,
		0xdd, 0x33, 0x75, 0xd3, 0xeb, 0x0f, 0x62, 0x9c, 0x63, 0xe9, 0x0e, 0x31, 0xba, 0x51, 0xa3, 0x23,
		0x59, 0x50, 0x92, 0x42, 0x4b, 0x13, 0xd7, 0x78, 0x74, 0x88, 0xc5, 0x2e, 0xf5, 0xa7, 0x0d, 0x65,
		0x29, 0xf1, 0xe9, 0xeb, 0x9e, 0x42, 0xe0, 0x43, 0xe0, 0x43, 0xe0, 0x43, 0xe0, 0x17, 0x5f, 0xe0,
		0xf7, 0xc3, 0x21, 0xbb, 0xb0, 0x8f, 0x1a, 0x81, 0xc4, 0x84, 0xc4, 0x84, 0xc4, 0x4c, 0xb1, 0x5b,
		0x98, 0x0b, 0x1c, 0x72, 0x28, 0x60, 0xc8, 0x29, 0x07, 0x02, 0x87, 0xc0, 0x04, 0x9e, 0x39, 0x0c,
		0x92, 0x8b, 0xe7, 0x0d, 0x4e, 0x39, 0x17, 0x85, 0xdd, 0x2b, 0xe7, 0x7f, 0x6f, 0x9c, 0x83, 0x7b,
		0x96, 0x6b, 0x92, 0x80, 0xd9, 0x5a, 0xd4, 0xeb, 0xfb, 0xf5, 0xed, 0x5b, 0x8e, 0x8c, 0x7c, 0x45,
		0x1d, 0xa9, 0x42, 0x91, 0xa3, 0x2f, 0x9f, 0xa3, 0xef, 0x9e, 0x63, 0x6c, 0xde, 0xcd, 0xd9, 0xb1,
		0x76, 0x70, 0x54, 0x69, 0x6a, 0xb1, 0x9f, 0xc8, 0x25, 0x61, 0xe2, 0xa2, 0xcd, 0x79, 0xc0, 0x1e,
		0x6f, 0x27, 0xba, 0x9c, 0x98, 0xbd, 0xdf, 0x4c, 0x37, 0x4e, 0xe4, 0xd6, 0xb1, 0x9a, 0x6d, 0xf1,
		0x88, 0x4e, 0x9c, 0x88, 0x39, 0x70, 0x87, 0xba, 0xc4, 0xee, 0x3d, 0x3d, 0x7a, 0x7e, 0x40, 0xef,
		0x11, 0x9d, 0x35, 0x01, 0xa7, 0xa8, 0x30, 0xc9, 0x0f, 0xa7, 0xa8, 0x44, 0xa7, 0xe8, 0x74, 0x47,
		0xb3, 0x9b, 0x4b, 0x92, 0x96, 0xd8, 0x6c, 0x26, 0x15, 0xd8, 0x4c, 0x60, 0x33, 0x51, 0xc1, 0x66,
		0xc2, 0x7a, 0x7b, 0x81, 0x36, 0x3c, 0x67, 0xed, 0xa6, 0xa3, 0x0a, 0xd7, 0xe1, 0x7c, 0x0c, 0xb9,
		0x1d, 0x47, 0x9e, 0xc7, 0x92, 0xfb, 0xf1, 0x94, 0xc1, 0x71, 0x70, 0x29, 0x29, 0x13, 0x53, 0x11,
		0xbf, 0x4b, 0x49, 0xb6, 0x80, 0x2b, 0x49, 0xdc, 0xee, 0xab, 0x70, 0xce, 0x74, 0x86, 0x8b, 0x3f,
		0xb8, 0xf8, 0x23, 0x4b, 0x3c, 0xf0, 0x11, 0x13, 0x9c, 0xc4, 0x45, 0x32, 0x50, 0xee, 0x99, 0xc9,
		0x44, 0x17, 0xb0, 0x13, 0x51, 0xc1, 0x49, 0x58, 0xa5, 0x26, 0x05, 0x0b, 0xcf, 0x75, 0x78, 0x4e,
		0xab, 0xc8, 0x7a, 0x42, 0x8a, 0x16, 0x8c, 0xeb, 0x6c, 0x45, 0xf2, 0x2e, 0xee, 0x96, 0x4a, 0xfe,
		0x52, 0x94, 0x87, 0x6f, 0xce, 0xb1, 0xdd, 0xef, 0xba, 0x63, 0xbc, 0x12, 0x9f, 0x7b, 0xcd, 0xe9,
		0x59, 0x66, 0xc7, 0xe5, 0x77, 0x00, 0x4b, 0x01, 0x4b, 0x01, 0x4b, 0xe5, 0x0e, 0x4b, 0x5d, 0x18,
		0xae, 0x65, 0x84, 0x9e, 0xff, 0xca, 0x31, 0x33, 0x81, 0x38, 0x7c, 0x36, 0x78, 0x7a, 0x0d, 0x80,
		0xcf, 0xe6, 0x6b, 0xe3, 0x2d, 0x96, 0xdc, 0xab, 0x8e, 0x76, 0xff, 0xcf, 0xee, 0xff, 0xdd, 0x4e,
		0x68, 0xf5, 0xfe, 0xbc, 0x00, 0x13, 0x15, 0x10, 0x13, 0x21, 0x35, 0xdf, 0x6a, 0x6f, 0x70, 0xe2,
		0x40, 0x4d, 0x7e, 0xa2, 0x72, 0x10, 0xf3, 0x9b, 0x6f, 0x86, 0xb9, 0xe6, 0x61, 0xe1, 0xe3, 0x67,
		0xd9, 0xe3, 0x84, 0x42, 0x61, 0xb8, 0xcf, 0x15, 0xba, 0x84, 0xe1, 0x5e, 0x3e, 0xc2, 0x13, 0x50,
		0x0b, 0x80, 0x67, 0xee, 0xff, 0x15, 0xb9, 0xfe, 0xed, 0x81, 0x8a, 0xe2, 0x73, 0x5c, 0x21, 0x87,
		0x9b, 0x04, 0x1d, 0x37, 0x97, 0x33, 0xef, 0x67, 0x15, 0x42, 0x14, 0x42, 0x54, 0x21, 0x21, 0x0a,
		0xef, 0x27, 0x2c, 0x76, 0xb0, 0xd8, 0xc1, 0x62, 0x97, 0x1b, 0xeb, 0x1a, 0xbc, 0x9f, 0xf0, 0x7e,
		0xc2, 0xfb, 0x29, 0xca, 0xd2, 0x07, 0xe7, 0x1f, 0xa0, 0x04, 0xa0, 0x04, 0xa0, 0x44, 0x8e, 0xa0,
		0x04, 0x9c, 0x7f, 0x70, 0xfe, 0x15, 0x05, 0x59, 0xa8, 0xe8, 0xfc, 0xcb, 0x05, 0x24, 0xf0, 0x7c,
		0xbb, 0xc7, 0x33, 0x75, 0x42, 0xa2, 0xb0, 0xc6, 0xed, 0x42, 0xf5, 0x43, 0xf5, 0x43, 0xf5, 0x6f,
		0x91, 0x15, 0x61, 0xea, 0x6c, 0xd6, 0xb9, 0x0a, 0x80, 0x37, 0x9a, 0xba, 0xc6, 0xb1, 0xcd, 0x53,
		0x77, 0xd8, 0xe7, 0x7f, 0x12, 0xee, 0xbc, 0xdb, 0xd0, 0xb7, 0xdd, 0x9e, 0x98, 0x02, 0xda, 0xe5,
		0x68, 0x9e, 0xaf, 0xee, 0xfe, 0x3c, 0xbd, 0x11, 0x51, 0xa1, 0xa1, 0x12, 0xb5, 0x7e, 0x7b, 0xd7,
		0xba, 0x6b, 0x1f, 0x8b, 0x68, 0xbe, 0x1a, 0x35, 0x7f, 0xf2, 0xf7, 0x65, 0xeb, 0xa2, 0x7d, 0x5c,
		0xca, 0x77, 0x05, 0x74, 0xaf, 0xcd, 0x90, 0xbe, 0xf8, 0xb7, 0x4d, 0x4f, 0xc7, 0xcf, 0xec, 0xb5,
		0x5a, 0xd9, 0xfa, 0x78, 0x6b, 0x70, 0x2d, 0x4e, 0x3d, 0xd3, 0x1d, 0xe3, 0x8d, 0xd1, 0xd4, 0x2a,
		0xc5, 0xae, 0x71, 0x8e, 0xb8, 0xa4, 0x37, 0xed, 0x89, 0x8d, 0x4b, 0x1a, 0xfb, 0x93, 0x51, 0x34,
		0x74, 0x93, 0x06, 0x50, 0x34, 0x94, 0xb1, 0xa9, 0xcc, 0x8a, 0x86, 0x6e, 0x45, 0x92, 0xab, 0xc3,
		0x6a, 0xa3, 0xa9, 0xb5, 0x5c, 0xed, 0x34, 0x7c, 0x1a, 0x27, 0x5e, 0x9a, 0x94, 0x3f, 0xd1, 0x6e,
		0x48, 0xe0, 0x39, 0xc3, 0xb8, 0xb6, 0x27, 0x52, 0x5f, 0x09, 0x4e, 0x7d, 0x95, 0x6a, 0x11, 0x90,
		0x10, 0x4b, 0xa6, 0x46, 0x15, 0xab, 0x49, 0x65, 0xd4, 0x33, 0xba, 0x9c, 0xbe, 0x0b, 0xe9, 0xbb,
		0x04, 0x2d, 0x67, 0x1e, 0x32, 0x78, 0x0d, 0x7c, 0xef, 0xe5, 0x55, 0x37, 0x28, 0x8a, 0xbd, 0xce,
		0x0c, 0xf6, 0x49, 0x13, 0xc8, 0xe0, 0x25, 0x4c, 0x81, 0x21, 0x83, 0x97, 0xc4, 0x0c, 0x5e, 0x8c,
		0x69, 0x84, 0xf8, 0xa4, 0x0f, 0x42, 0xf6, 0x2e, 0x01, 0xf8, 0x0f, 0xd9, 0xbb, 0xc4, 0x21, 0x27,
		0xe6, 0xec, 0x5d, 0x7d, 0xcf, 0xe2, 0x18, 0xbc, 0x1e, 0xb7, 0xc6, 0x1a, 0xbb, 0xcb, 0xa1, 0xba,
		0xcc, 0xac, 0xb1, 0xf6, 0x6d, 0xeb, 0xf3, 0xf9, 0x29, 0x1b, 0x10, 0xef, 0xe0, 0x4a, 0x93, 0x70,
		0x61, 0x23, 0x83, 0x74, 0x22, 0x1a, 0x3f, 0x1b, 0x83, 0x29, 0xff, 0x2b, 0x4d, 0xc4, 0x1d, 0xf6,
		0x89, 0x3f, 0xa6, 0x16, 0x1c, 0xaf, 0x35, 0x71, 0x70, 0x7e, 0xf1, 0x75, 0x7a, 0x89, 0x71, 0x76,
		0x8d, 0x9d, 0x5c, 0x53, 0xd1, 0xc8, 0xd1, 0xe1, 0x17, 0xbb, 0xb7, 0x6e, 0x4e, 0x2f, 0xae, 0xee,
		0x4e, 0x1f, 0xae, 0x2e, 0xcf, 0xff, 0xe6, 0xd9, 0x76, 0xec, 0xdb, 0x6a, 0x9d, 0x9f, 0x97, 0xf2,
		0xe5, 0xeb, 0xe5, 0xee, 0xc7, 0x8a, 0xc7, 0xc8, 0xd5, 0x77, 0x95, 0xac, 0x34, 0x57, 0xaf, 0xd5,
		0x9b, 0x75, 0xe6, 0xe5, 0xb2, 0x52, 0xdd, 0x35, 0xc4, 0xd1, 0x0c, 0x9d, 0xb4, 0xc9, 0xcf, 0x1c,
		0x3d, 0xfd, 0x27, 0x20, 0x32, 0xe1, 0xe6, 0xec, 0xb8, 0x52, 0xae, 0x1e, 0x34, 0xb5, 0x2f, 0x81,
		0xed, 0xf6, 0xb4, 0xd6, 0xcd, 0xb5, 0x16, 0x7a, 0x5a, 0xbb, 0x3f, 0x18, 0xbb, 0x2f, 0xb4, 0x3b,
		0xdf, 0x70, 0x83, 0x81, 0xe1, 0x47, 0x3f, 0xdf, 0x0e, 0x1f, 0x5d, 0x12, 0x6a, 0x7f, 0x18, 0x21,
		0xf9, 0x61, 0xbc, 0x06, 0x8a, 0x45, 0xdf, 0xf0, 0xb6, 0x5c, 0x0b, 0xc7, 0x13, 0x2b, 0x71, 0x05,
		0xcb, 0x7a, 0x15, 0xce, 0x9d, 0xdc, 0x29, 0x94, 0x3b, 0x59, 0x58, 0x5e, 0x11, 0x55, 0xdc, 0xc0,
		0x39, 0xf4, 0x26, 0x24, 0xe6, 0x5a, 0xa6, 0x34, 0x21, 0x72, 0x8a, 0x0e, 0xb2, 0xdd, 0x67, 0xe7,
		0x72, 0x8f, 0x9d, 0x9b, 0x19, 0xae, 0x0a, 0x33, 0x1c, 0xcc, 0x70, 0x30, 0xc3, 0xc1, 0x0c, 0x07,
		0x33, 0x1c, 0xcc, 0x70, 0x30, 0xc3, 0xc1, 0x0c, 0x07, 0x33, 0x1c, 0xcc, 0x70, 0x30, 0xc3, 0xc1,
		0x0c, 0x07, 0x33, 0x1c, 0xcc, 0x70, 0x30, 0xc3, 0x15, 0xca, 0x0c, 0x07, 0xeb, 0x14, 0xbb, 0x75,
		0x8a, 0xe1, 0xb2, 0x08, 0x82, 0x4f, 0xdf, 0x9f, 0xdf, 0x12, 0x95, 0x39, 0x6e, 0xb3, 0xd0, 0xe1,
		0xeb, 0xe8, 0x25, 0x2d, 0x7f, 0x90, 0x87, 0x00, 0x57, 0x3a, 0x13, 0x22, 0x93, 0xe9, 0x90, 0x39,
		0xb0, 0xb5, 0x8a, 0xc0, 0xd6, 0x0c, 0xb5, 0x65, 0xa1, 0x03, 0x5b, 0x87, 0xd1, 0xa1, 0x0d, 0x78,
		0x84, 0xb6, 0x4e, 0x5a, 0x42, 0x70, 0x2b, 0xac, 0xea, 0x99, 0x18, 0xb2, 0x14, 0xb3, 0xaa, 0xdb,
		0xae, 0x6e, 0xd9, 0x81, 0x69, 0xf8, 0x16, 0xb1, 0xf4, 0xc1, 0xf7, 0x30, 0xe0, 0x98, 0xe8, 0x7e,
		0xa9, 0x69, 0x58, 0xa7, 0x85, 0x1f, 0x5a, 0x51, 0x04, 0x13, 0xd6, 0x69, 0xad, 0x80, 0xd6, 0xe9,
		0x89, 0xba, 0x6c, 0xd4, 0x38, 0xda, 0xa6, 0x39, 0x24, 0x32, 0x2b, 0xdd, 0x18, 0x6e, 0x2f, 0x97,
		0x56, 0xa4, 0x0b, 0xdb, 0xe5, 0x6f, 0xb3, 0xf9, 0x6a, 0x38, 0x43, 0xc2, 0x3f, 0x61, 0x46, 0xe9,
		0xcc, 0x37, 0xcc, 0x88, 0xdd, 0x9d, 0xd8, 0x3d, 0x9b, 0xf5, 0xa2, 0xfd, 0xea, 0x6d, 0x44, 0x7a,
		0x46, 0x68, 0x3f, 0x13, 0xa6, 0xfb, 0xec, 0x02, 0x4e, 0xca, 0xdb, 0x25, 0x33, 0x5e, 0xc4, 0x2d,
		0x19, 0xdf, 0x84, 0x03, 0x45, 0x5b, 0x45, 0x04, 0xaf, 0x6d, 0xb9, 0xa5, 0x5d, 0xab, 0x55, 0x8f,
		0xf6, 0x35, 0x5d, 0xbb, 0x30, 0x5c, 0xa3, 0x37, 0xb6, 0xd7, 0xb6, 0xdd, 0xae, 0xe7, 0xf7, 0x63,
		0xab, 0x93, 0xf6, 0xd9, 0x08, 0x88, 0xd6, 0xf5, 0x7c, 0x2d, 0x7c, 0x22, 0xf7, 0x6e, 0x6c, 0xb8,
		0x71, 0x49, 0x98, 0xe4, 0x06, 0xd0, 0x76, 0xda, 0xd7, 0xbb, 0x30, 0xba, 0x8b, 0x85, 0x49, 0x2b,
		0xe1, 0x12, 0xa7, 0xa5, 0x83, 0x24, 0xe1, 0xf4, 0x7e, 0xa6, 0xda, 0x65, 0xae, 0x4e, 0x7c, 0xdf,
		0xf3, 0xf9, 0xb3, 0xbb, 0xb9, 0x66, 0xc1, 0xec, 0xc0, 0xec, 0xc0, 0xec, 0xc0, 0xec, 0xc0, 0xec,
		0xc0, 0xec, 0xc0, 0xec, 0xc0, 0xec, 0xc0, 0xec, 0xc0, 0xec, 0xc0, 0xec, 0xc0, 0xec, 0xc0, 0xec,
		0xc4, 0x32, 0xbb, 0xae, 0xe7, 0xff, 0x18, 0x3b, 0xd8, 0x3c, 0x33, 0x24, 0x9c, 0xf9, 0xdd, 0x52,
		0xe3, 0x60, 0x79, 0x60, 0x79, 0x60, 0x79, 0x60, 0x79, 0x60, 0x79, 0x60, 0x79, 0x60, 0x79, 0x60,
		0x79, 0x60, 0x79, 0x60, 0x79, 0x60, 0x79, 0x60, 0x79, 0x60, 0x79, 0xb2, 0x58, 0x1e, 0x77, 0x1f,
		0xde, 0x42, 0xd3, 0x60, 0x78, 0x60, 0x78, 0x60, 0x78, 0x60, 0x78, 0x60, 0x78, 0x60, 0x78, 0x60,
		0x78, 0x60, 0x78, 0x60, 0x78, 0x60, 0x78, 0x60, 0x78, 0x60, 0x78, 0x60, 0x78, 0x62, 0x19, 0x5e,
		0x7f, 0xe8, 0x84, 0xb6, 0x69, 0x04, 0xa1, 0x08, 0x3f, 0xde, 0x52, 0xe3, 0x60, 0x79, 0x60, 0x79,
		0x60, 0x79, 0x60, 0x79, 0x60, 0x79, 0x60, 0x79, 0x60, 0x79, 0x60, 0x79, 0x60, 0x79, 0xdb, 0xc0,
		0xf2, 0x9a, 0x9b, 0x30, 0x05, 0x6d, 0x4a, 0x14, 0xee, 0xdd, 0x37, 0x4c, 0x41, 0xd3, 0x35, 0x7b,
		0x70, 0xfb, 0x1a, 0x84, 0xa4, 0x7f, 0x1b, 0x1a, 0x61, 0xf0, 0xe7, 0x71, 0xdb, 0xbd, 0x88, 0x30,
		0xe5, 0x15, 0x0f, 0x48, 0x09, 0x0e, 0xc8, 0xc2, 0x01, 0x85, 0x2e, 0x2c, 0xa4, 0x50, 0xde, 0x18,
		0x22, 0x77, 0x1f, 0xe0, 0x42, 0xd3, 0x60, 0x87, 0x60, 0x87, 0x60, 0x87, 0x60, 0x87, 0x60, 0x87,
		0x60, 0x87, 0x60, 0x87, 0x60, 0x87, 0x60, 0x87, 0x60, 0x87, 0xb4, 0x24, 0xe2, 0xfa, 0x3b, 0xb8,
		0x61, 0x01, 0xb9, 0x61, 0xbc, 0xac, 0x90, 0x40, 0xf9, 0x60, 0x86, 0x02, 0x3c, 0x86, 0xf0, 0x13,
		0x82, 0x09, 0x82, 0x09, 0x82, 0x09, 0x82, 0x09, 0x82, 0x09, 0x82, 0x09, 0x82, 0x09, 0x82, 0x09,
		0x6e, 0x11, 0x13, 0x44, 0x34, 0xa8, 0xb2, 0x6c, 0x0f, 0xd1, 0xa0, 0x85, 0x60, 0x74, 0xdc, 0x3d,
		0x7c, 0xf0, 0xeb, 0x81, 0xcd, 0x81, 0xcd, 0x81, 0xcd, 0x81, 0xcd, 0x81, 0xcd, 0x81, 0xcd, 0x81,
		0xcd, 0x81, 0xcd, 0x81, 0xcd, 0x81, 0xcd, 0x81, 0xcd, 0x81, 0xcd, 0x89, 0x66, 0x73, 0xde, 0x30,
		0x14, 0x56, 0x60, 0x6f, 0x45, 0xdb, 0xe0, 0x78, 0xe0, 0x78, 0xe0, 0x78, 0xe0, 0x78, 0xe0, 0x78,
		0xe0, 0x78, 0xe0, 0x78, 0xe0, 0x78, 0xe0, 0x78, 0xe0, 0x78, 0xe0, 0x78, 0xe0, 0x78, 0xe0, 0x78,
		0x82, 0x39, 0x9e, 0x88, 0x12, 0x7b, 0x0b, 0xed, 0x82, 0xdb, 0x81, 0xdb, 0x81, 0xdb, 0x81, 0xdb,
		0x81, 0xdb, 0x81, 0xdb, 0x81, 0xdb, 0x81, 0xdb, 0x81, 0xdb, 0x81, 0xdb, 0x81, 0xdb, 0x81, 0xdb,
		0x81, 0xdb, 0x09, 0xe6, 0x76, 0xe2, 0x8a, 0xec, 0xad, 0x6c, 0x1d, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c,
		0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c,
		0x0f, 0x3c, 0x0f, 0x3c, 0x4f, 0x1a, 0xcf, 0xe3, 0xef, 0xc7, 0x43, 0x9d, 0x3d, 0x70, 0x3c, 0x70,
		0x3c, 0x70, 0x3c, 0x70, 0x3c, 0x70, 0x3c, 0x70, 0x3c, 0x70, 0x3c, 0x70, 0x3c, 0x70, 0x3c, 0x70,
		0x3c, 0x70, 0x3c, 0x70, 0x3c, 0xb9, 0x1c, 0x4f, 0x5c, 0xa1, 0xbd, 0x95, 0xad, 0x83, 0xe7, 0x81,
		0xe7, 0x81, 0xe7, 0x81, 0xe7, 0x81, 0xe7, 0x81, 0xe7, 0x81, 0xe7, 0x81, 0xe7, 0x81, 0xe7, 0x81,
		0xe7, 0x81, 0xe7, 0x81, 0xe7, 0x81, 0xe7, 0x49, 0xe3, 0x79, 0xfc, 0x7d, 0x79, 0xa8, 0x97, 0x07,
		0x8e, 0x07, 0x8e, 0x07, 0x8e, 0x07, 0x8e, 0x07, 0x8e, 0x07, 0x8e, 0x07, 0x8e, 0x07, 0x8e, 0x07,
		0x8e, 0x97, 0x92, 0x28, 0xdc, 0xbb, 0xcb, 0xb5, 0xd5, 0xae, 0x86, 0x21, 0x6a, 0xe6, 0xa9, 0xcf,
		0x01, 0xdf, 0x5d, 0x5a, 0x48, 0xa2, 0x9c, 0x70, 0x44, 0x11, 0x1e, 0x40, 0xf8, 0xfd, 0xc0, 0x09,
		0xc1, 0x09, 0xc1, 0x09, 0xc1, 0x09, 0xc1, 0x09, 0xc1, 0x09, 0xc1, 0x09, 0xc1, 0x09, 0xc1, 0x09,
		0xe1, 0xf7, 0x2b, 0x3a, 0xe7, 0x03, 0xa7, 0xcb, 0x0b, 0xa7, 0xe3, 0xef, 0xed, 0x83, 0x8f, 0x0f,
		0x7c, 0x0e, 0x7c, 0x0e, 0x7c, 0x0e, 0x7c, 0x0e, 0x7c, 0x0e, 0x7c, 0x0e, 0x7c, 0x0e, 0x7c, 0x0e,
		0x7c, 0x0e, 0x7c, 0x0e, 0x7c, 0x0e, 0x7c, 0x4e, 0xdc, 0x93, 0x94, 0x92, 0xab, 0xd4, 0x72, 0x5d,
		0x2f, 0x8c, 0x97, 0x99, 0xe9, 0xa8, 0x94, 0x02, 0xf3, 0x89, 0xf4, 0x8d, 0x81, 0x11, 0x3e, 0x45,
		0x7b, 0x6a, 0xcf, 0x1b, 0x10, 0xd7, 0x8c, 0xb9, 0x97, 0x6e, 0x47, 0xfb, 0xa5, 0x6b, 0x98, 0x24,
		0xd8, 0x5b, 0xf5, 0xe3, 0x9e, 0xef, 0x0d, 0x43, 0x62, 0xe9, 0xcf, 0x8e, 0xe1, 0xee, 0xd9, 0x83,
		0xe7, 0xda, 0x5e, 0x10, 0x1a, 0x21, 0xd9, 0x9b, 0xc0, 0x55, 0x16, 0x22, 0x59, 0x0a, 0x42, 0x7f,
		0x68, 0x86, 0xee, 0x44, 0x46, 0xb5, 0xa7, 0xaf, 0x7c, 0xb8, 0x89, 0x5f, 0xf9, 0xd5, 0x31, 0xdc,
		0x87, 0xf6, 0xe0, 0xb9, 0xf6, 0x70, 0x3c, 0x7d, 0xd7, 0x07, 0x39, 0x0b, 0x46, 0xb1, 0x58, 0x25,
		0xeb, 0xc9, 0x1c, 0xe8, 0xa6, 0x63, 0x8f, 0x4f, 0x2d, 0xdd, 0x4a, 0x25, 0xe2, 0x7a, 0xbe, 0x31,
		0xca, 0x8d, 0x73, 0x42, 0xba, 0xc6, 0xd0, 0x09, 0x99, 0x94, 0x52, 0x29, 0xc6, 0x20, 0x74, 0xb3,
		0xde, 0xa1, 0xec, 0x37, 0x9b, 0x61, 0x81, 0xd9, 0xa0, 0xc0, 0xc3, 0x90, 0xc0, 0xcd, 0x80, 0xc0,
		0x4b, 0x49, 0x72, 0x37, 0x18, 0x70, 0xd7, 0x80, 0x3c, 0x0d, 0x04, 0x72, 0x05, 0x34, 0xb3, 0x21,
		0x20, 0xd9, 0x2d, 0x8f, 0x9e, 0xe7, 0x10, 0xc3, 0x65, 0xd9, 0x2f, 0x93, 0xc3, 0x53, 0xa9, 0xe4,
		0x58, 0x50, 0x12, 0x37, 0xc2, 0xde, 0x16, 0xbb, 0x90, 0x9c, 0x36, 0x94, 0xa5, 0x80, 0x8c, 0x76,
		0x3e, 0xe4, 0x23, 0xe4, 0x23, 0xe4, 0x23, 0xe4, 0x23, 0x27, 0xf9, 0xd8, 0x0f, 0x87, 0xec, 0xb2,
		0x31, 0x6a, 0x04, 0x02, 0x06, 0x02, 0x06, 0x02, 0x26, 0xc5, 0x6e, 0x19, 0xda, 0x6e, 0x58, 0x69,
		0x70, 0x90, 0x2f, 0x0d, 0x86, 0x26, 0xf8, 0xb8, 0x5b, 0x38, 0xd8, 0x35, 0x79, 0xba, 0x57, 0x12,
		0x1b, 0x7d, 0xe3, 0x90, 0x93, 0x43, 0x51, 0x94, 0x25, 0x9e, 0xbf, 0x05, 0x9e, 0x83, 0xff, 0x84,
		0xab, 0xdf, 0x64, 0xb6, 0x16, 0xf5, 0xfa, 0x7e, 0x7d, 0xfb, 0x96, 0x23, 0x23, 0xb3, 0x61, 0x47,
		0xaa, 0x50, 0xe4, 0xe8, 0xe8, 0xe0, 0xe8, 0xe0, 0xe0, 0xe8, 0x2d, 0xbf, 0x39, 0x3b, 0xd6, 0x0e,
		0x8e, 0x2a, 0x4d, 0x6d, 0xc9, 0xdc, 0x9d, 0xf3, 0x80, 0x0d, 0xde, 0x4e, 0x09, 0x39, 0x31, 0x1b,
		0xbf, 0x99, 0xee, 0x6d, 0x3b, 0x91, 0x1f, 0xc4, 0x3e, 0x91, 0xf2, 0xc4, 0xb3, 0x3a, 0x08, 0xb8,
		0x3b, 0x06, 0xd2, 0xed, 0x87, 0xcd, 0xe7, 0x26, 0xc5, 0xbc, 0x94, 0x86, 0xae, 0x3b, 0xec, 0x3f,
		0x12, 0x9f, 0xc2, 0xca, 0x34, 0x03, 0x83, 0xb3, 0x36, 0x52, 0xae, 0xc8, 0x94, 0x64, 0xa6, 0x7c,
		0x8c, 0x96, 0x38, 0xb1, 0x10, 0xa6, 0x37, 0x44, 0xa9, 0x4b, 0x21, 0x91, 0x58, 0x25, 0x25, 0x37,
		0x62, 0xc4, 0x4d, 0x0c, 0x2e, 0x11, 0xa1, 0x6e, 0x29, 0x67, 0x27, 0xfe, 0xc4, 0xf6, 0xe9, 0x16,
		0xdb, 0x9c, 0xee, 0x30, 0x46, 0xe3, 0xc2, 0xa4, 0x1d, 0x36, 0xfb, 0x42, 0xa5, 0x28, 0xf6, 0x85,
		0x2e, 0xec, 0x0b, 0x92, 0x8e, 0x55, 0x36, 0xf6, 0x05, 0xda, 0xe3, 0x36, 0xc3, 0xe2, 0x8c, 0x0e,
		0x8f, 0xa5, 0x5d, 0xc7, 0xe6, 0xf8, 0x98, 0x0d, 0x8c, 0x83, 0x03, 0x24, 0x69, 0x8c, 0xc1, 0x53,
		0x9c, 0xe0, 0x31, 0x84, 0xa4, 0x0b, 0x17, 0x38, 0x32, 0x18, 0x8e, 0xa2, 0x21, 0xe9, 0x5d, 0x84,
		0xa4, 0x2f, 0xee, 0x36, 0x76, 0x8f, 0xcb, 0x92, 0xd6, 0xaf, 0x64, 0x3a, 0x45, 0x9c, 0xa2, 0xa9,
		0x92, 0xf6, 0x5e, 0x7b, 0x5e, 0xa8, 0x7b, 0xa6, 0x6e, 0x7a, 0xfd, 0x81, 0x4f, 0x82, 0x80, 0x58,
		0xba, 0x43, 0x8c, 0x6e, 0xd4, 0xf8, 0x68, 0x2b, 0xc2, 0xd3, 0x4e, 0x5f, 0x62, 0x6b, 0x1f, 0xbd,
		0x02, 0xe1, 0x87, 0x7b, 0x3c, 0x53, 0x27, 0x2f, 0x61, 0x33, 0x24, 0x0e, 0xe9, 0x93, 0xd0, 0x7f,
		0xd5, 0x3d, 0x57, 0x37, 0x9f, 0x62, 0x6b, 0x3a, 0x57, 0x2c, 0x14, 0x6b, 0x3a, 0x8e, 0x60, 0x48,
		0x36, 0x0e, 0xea, 0x14, 0x27, 0x12, 0x71, 0xc6, 0xd1, 0xf7, 0x26, 0x9c, 0x24, 0xc7, 0x7e, 0xdd,
		0x64, 0x1c, 0xba, 0x4f, 0xba, 0xec, 0x24, 0xec, 0x6d, 0x73, 0xe0, 0x62, 0xe0, 0x62, 0xe0, 0x62,
		0xc2, 0x4d, 0x20, 0x7c, 0x4d, 0x21, 0x9c, 0x8e, 0x21, 0x98, 0x0b, 0x98, 0x8b, 0xda, 0xcc, 0x85,
		0xf5, 0x58, 0x2f, 0xeb, 0x58, 0x7e, 0xdb, 0x63, 0x49, 0xdf, 0xf2, 0xda, 0x1e, 0x7c, 0xcc, 0x15,
		0xdc, 0x0f, 0xbf, 0x08, 0x21, 0x20, 0x4c, 0x18, 0x88, 0x12, 0x0a, 0xc2, 0x85, 0x83, 0x70, 0x21,
		0x21, 0x52, 0x58, 0xf0, 0x11, 0x1a, 0x9c, 0x84, 0x07, 0x7f, 0xf3, 0xc7, 0xd2, 0x6e, 0x8d, 0x28,
		0x3d, 0x3d, 0xc8, 0xfe, 0xad, 0xc6, 0x3f, 0xe0, 0xd8, 0xe6, 0x75, 0x42, 0xa9, 0xa2, 0x65, 0x6e,
		0xce, 0x51, 0xa8, 0x85, 0x0f, 0x26, 0xbf, 0xc7, 0xf7, 0xae, 0x72, 0xb5, 0x84, 0x9c, 0xcd, 0x33,
		0xe2, 0xcd, 0x34, 0xfc, 0x4e, 0x02, 0x8f, 0x28, 0xb1, 0x60, 0xf8, 0x28, 0x50, 0x01, 0xbe, 0x69,
		0x1d, 0x3a, 0x10, 0x3a, 0x10, 0x3a, 0x10, 0x3a, 0x50, 0x59, 0x1d, 0xf8, 0x6d, 0xa6, 0x03, 0xff,
		0xc7, 0x1c, 0xfa, 0x3e, 0x71, 0xc3, 0x9d, 0xdd, 0xbd, 0x4f, 0x9f, 0x66, 0xe6, 0xc6, 0xce, 0xe4,
		0x91, 0x79, 0xb9, 0x17, 0xac, 0xf8, 0x2c, 0x69, 0xd9, 0x22, 0x2f, 0x50, 0xa7, 0x79, 0x51, 0xa7,
		0x99, 0xf2, 0x59, 0x66, 0xaf, 0xc8, 0xf4, 0x1f, 0x7f, 0x13, 0x87, 0x30, 0x2f, 0xc9, 0x1a, 0x69,
		0xce, 0xc1, 0x5b, 0xb2, 0x52, 0x8c, 0x67, 0x6d, 0xf2, 0xe8, 0xe4, 0xcc, 0x13, 0x29, 0xc6, 0xab,
		0xf2, 0xc6, 0xc9, 0xc0, 0xe4, 0x63, 0x61, 0x9f, 0xf5, 0x11, 0x53, 0xa2, 0x09, 0x23, 0x24, 0xfc,
		0xac, 0xbe, 0xe3, 0xe6, 0x72, 0x66, 0xf4, 0xad, 0xc2, 0xe8, 0x9b, 0x3d, 0xa6, 0x85, 0xd1, 0x77,
		0xe3, 0x01, 0xc1, 0xe8, 0x0b, 0xc2, 0x0b, 0xc2, 0x0b, 0xc2, 0x0b, 0xc2, 0x2b, 0x85, 0xf0, 0xf2,
		0x37, 0xfa, 0xc2, 0xe6, 0x09, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0xa0, 0x88, 0x0a, 0xc8,
		0xb5, 0xcd, 0x53, 0x71, 0x36, 0xa3, 0xa2, 0x3d, 0x87, 0xe2, 0xbe, 0x2e, 0x47, 0x73, 0xce, 0xb6,
		0xa7, 0x51, 0x5d, 0xb7, 0x2c, 0x32, 0x12, 0xaa, 0x7e, 0x49, 0xde, 0xfd, 0x90, 0x7c, 0xe9, 0x86,
		0x74, 0xf3, 0x1c, 0x3e, 0xcd, 0x66, 0xc2, 0xe3, 0x62, 0xba, 0xe3, 0x16, 0x2e, 0x5d, 0x45, 0xb8,
		0xb4, 0x38, 0xa8, 0x85, 0x70, 0x69, 0x6e, 0x26, 0x36, 0x5c, 0x5d, 0xdd, 0xf0, 0x1f, 0xae, 0xae,
		0xca, 0xe3, 0x7e, 0xf0, 0x05, 0xe0, 0xea, 0xea, 0xfb, 0xbb, 0x2d, 0x7f, 0x57, 0x57, 0x81, 0x94,
		0x39, 0x20, 0x65, 0x06, 0xca, 0x82, 0xc4, 0x4d, 0x1b, 0x4c, 0x70, 0x89, 0x0a, 0x99, 0xa7, 0x25,
		0x1d, 0xc2, 0x72, 0x44, 0x7d, 0xe0, 0xb8, 0x50, 0xb4, 0x0b, 0xc4, 0x71, 0x61, 0x52, 0xac, 0xc6,
		0xa6, 0xab, 0xb0, 0xd9, 0xd4, 0xbf, 0x3f, 0x91, 0x1b, 0x4c, 0x62, 0xc9, 0x1e, 0x3c, 0x37, 0x36,
		0x9e, 0xba, 0x99, 0xcf, 0x35, 0x7a, 0x6a, 0xc3, 0x25, 0x4a, 0x47, 0xc8, 0x52, 0xe3, 0x23, 0x1a,
		0x1c, 0x44, 0x9d, 0x7b, 0x98, 0x16, 0xd7, 0x30, 0xe3, 0x17, 0x66, 0x9c, 0xc2, 0x92, 0x3b, 0x98,
		0xef, 0x91, 0x4d, 0x4b, 0x78, 0x4a, 0x86, 0x65, 0xc5, 0x11, 0x8c, 0x01, 0x7d, 0xa2, 0xb8, 0x59,
		0x13, 0x5b, 0x92, 0x27, 0x6e, 0x80, 0x3c, 0x71, 0x9c, 0x12, 0x66, 0xe7, 0x34, 0x4f, 0xdc, 0x64,
		0x47, 0xb3, 0x1b, 0xdb, 0xa6, 0x0d, 0x21, 0x3b, 0x01, 0x32, 0xd1, 0x4b, 0x3d, 0x58, 0x8a, 0x9a,
		0xdb, 0x90, 0x9d, 0x20, 0x4b, 0xe3, 0x14, 0x4a, 0x7d, 0x0b, 0x31, 0x4e, 0x0d, 0x10, 0xa8, 0x9a,
		0xf0, 0x21, 0x01, 0x11, 0xaa, 0x03, 0xc4, 0x25, 0xe5, 0xe7, 0xf8, 0x8b, 0x12, 0x03, 0xc2, 0xc5,
		0x81, 0x70, 0xb1, 0x20, 0x52, 0x3c, 0xf0, 0x11, 0x13, 0x9c, 0xc4, 0x45, 0x32, 0x50, 0x71, 0x71,
		0x49, 0xf6, 0xe0, 0xb9, 0xa1, 0xb3, 0x61, 0xeb, 0xdf, 0x2a, 0xfa, 0x43, 0xbe, 0xc1, 0x49, 0x21,
		0xf1, 0x5d, 0x6e, 0xb5, 0xb1, 0x93, 0x86, 0x77, 0x76, 0xbe, 0x95, 0xf5, 0x23, 0x43, 0xef, 0xb6,
		0xf4, 0xb3, 0xce, 0xcf, 0xca, 0xc7, 0xda, 0xa8, 0xb9, 0xfb, 0xf3, 0x60, 0xb4, 0xf8, 0xe1, 0xaf,
		0x55, 0x5f, 0xab, 0x7c, 0x3c, 0x18, 0x35, 0xd7, 0xfc, 0xa5, 0x31, 0x6a, 0x6e, 0xd8, 0x46, 0x7d,
		0xb4, 0xb3, 0xf4, 0xd5, 0xe8, 0xf3, 0xea, 0xba, 0x07, 0x6a, 0x6b, 0x1e, 0xd8, 0x5f, 0xf7, 0xc0,
		0xfe, 0x9a, 0x07, 0xd6, 0x76, 0xa9, 0xba, 0xe6, 0x81, 0xfa, 0xe8, 0xd7, 0xd2, 0xf7, 0x77, 0x56,
		0x7f, 0xb5, 0x31, 0xda, 0xfd, 0xb5, 0xee, 0x6f, 0x07, 0xa3, 0x5f, 0xcd, 0x5d, 0x8e, 0xa5, 0xa4,
		0x3b, 0x3c, 0x37, 0xda, 0xd5, 0x6d, 0xfb, 0x2f, 0x61, 0xbb, 0xed, 0x1f, 0x6c, 0xb7, 0xac, 0xb6,
		0xdb, 0xbf, 0x38, 0xee, 0x37, 0x5c, 0xcf, 0xce, 0x87, 0x9e, 0xe5, 0x11, 0xf9, 0x3f, 0xc6, 0x3f,
		0xba, 0x43, 0xdc, 0x5e, 0xec, 0x69, 0xe1, 0x0c, 0xac, 0xdf, 0x36, 0x0f, 0x8c, 0x0d, 0x8c, 0x0d,
		0x8c, 0x9d, 0x3b, 0x8c, 0x7d, 0x61, 0xb8, 0x96, 0x11, 0x7a, 0xfe, 0x2b, 0xbb, 0x7d, 0x4a, 0x02,
		0x6e, 0x1f, 0xda, 0x6e, 0x78, 0x28, 0x00, 0xb0, 0xd7, 0x39, 0x36, 0xc9, 0xa7, 0xfc, 0xe4, 0xe2,
		0x3f, 0xbe, 0x27, 0x54, 0xe3, 0x5d, 0x9e, 0x72, 0xa9, 0xf1, 0x69, 0x89, 0xc4, 0xf2, 0x47, 0x31,
		0xed, 0x8b, 0x2a, 0x97, 0xb8, 0xbc, 0xf5, 0x78, 0x97, 0x4f, 0x14, 0x74, 0x92, 0x17, 0x4e, 0xf5,
		0x8b, 0xf8, 0xa5, 0xad, 0x54, 0x0f, 0xb1, 0xb8, 0x52, 0x84, 0x3d, 0xff, 0xd6, 0x80, 0xe3, 0x0b,
		0x84, 0xe3, 0x43, 0x9e, 0xfa, 0x36, 0xd1, 0xb5, 0x71, 0xab, 0x9c, 0x16, 0x98, 0x67, 0xb4, 0x79,
		0xd2, 0xe8, 0x1f, 0xe7, 0x57, 0x9f, 0x5b, 0xe7, 0x0f, 0x5f, 0x2e, 0xdb, 0xc7, 0xad, 0xdb, 0x3b,
		0x3e, 0x00, 0xad, 0x03, 0x9a, 0x02, 0x9a, 0x02, 0x9a, 0xb2, 0xa5, 0xae, 0x00, 0x9d, 0xa3, 0xcc,
		0x9b, 0x17, 0x03, 0x95, 0x1a, 0xc7, 0x36, 0x4f, 0xdd, 0x61, 0x9f, 0xff, 0x59, 0xb8, 0xf3, 0x6e,
		0x43, 0xdf, 0x76, 0x7b, 0x42, 0x60, 0x63, 0xa9, 0x1c, 0xcd, 0xf4, 0x82, 0xbc, 0x16, 0x00, 0x7b,
		0x2b, 0xd1, 0x6b, 0xce, 0xdb, 0x97, 0xff, 0x79, 0x38, 0xbf, 0x3a, 0xe6, 0xad, 0x1a, 0x04, 0xe1,
		0xf5, 0xd2, 0x9d, 0xd7, 0x8e, 0x0f, 0xb0, 0x80, 0x69, 0x5f, 0x98, 0x71, 0x21, 0x38, 0x7a, 0xd5,
		0x7c, 0x37, 0xb5, 0x4a, 0x4e, 0x71, 0xef, 0x08, 0xb8, 0x37, 0x27, 0xb8, 0x17, 0xb9, 0x06, 0x56,
		0x5d, 0x58, 0x68, 0xec, 0x25, 0xc1, 0xd0, 0xd3, 0x9f, 0x14, 0x4e, 0x1a, 0xc9, 0x21, 0x5c, 0x87,
		0x5f, 0x98, 0xce, 0xd6, 0x5c, 0x11, 0x45, 0x14, 0x5e, 0x5e, 0xb1, 0x75, 0xd1, 0xae, 0x88, 0xf2,
		0x4b, 0xef, 0xc3, 0x33, 0xad, 0x4f, 0x92, 0xce, 0xe7, 0xd3, 0xa7, 0x89, 0xec, 0xdc, 0x63, 0x5d,
		0x3c, 0xe4, 0xdc, 0x5d, 0x5c, 0xa7, 0xa2, 0xe7, 0xdc, 0x85, 0x10, 0x85, 0x10, 0x5d, 0x35, 0x20,
		0x84, 0x32, 0x67, 0x89, 0x99, 0x44, 0x1c, 0x7b, 0x61, 0xc7, 0x5f, 0x94, 0x18, 0x10, 0x2e, 0x0e,
		0x84, 0x8b, 0x05, 0x91, 0xe2, 0x21, 0x9f, 0x4c, 0x1f, 0xa1, 0xcc, 0x08, 0x65, 0x46, 0x28, 0xf3,
		0x6f, 0xff, 0x21, 0x94, 0x19, 0xdb, 0x4d, 0xc1, 0x50, 0xe6, 0x5c, 0x44, 0x00, 0x78, 0xbe, 0xdd,
		0xe3, 0x18, 0xcd, 0x35, 0x83, 0x42, 0xe3, 0x76, 0x01, 0x2a, 0x01, 0x2a, 0x01, 0x2a, 0xb7, 0x0a,
		0x54, 0x26, 0x2e, 0x71, 0xae, 0x22, 0x40, 0x83, 0x53, 0x7c, 0xd6, 0x7a, 0xec, 0x14, 0xbf, 0xba,
		0xfb, 0xf3, 0xf4, 0x46, 0x98, 0x2f, 0xfc, 0xf6, 0xae, 0x75, 0xd7, 0x3e, 0x16, 0xd1, 0x7c, 0x35,
		0x6a, 0xfe, 0xe4, 0xcf, 0xe3, 0x6b, 0x11, 0x8d, 0xef, 0xcf, 0xfc, 0xf8, 0xad, 0xbf, 0xc5, 0x4c,
		0x4f, 0x2d, 0x7a, 0xc5, 0x4d, 0xeb, 0xf2, 0xe4, 0xea, 0x62, 0x6b, 0xc3, 0x03, 0xe2, 0xe5, 0x63,
		0x36, 0xc1, 0xae, 0x6c, 0x7a, 0x6e, 0xf1, 0x9a, 0xda, 0xbe, 0x80, 0x17, 0x8c, 0xcf, 0x8d, 0x98,
		0x88, 0x86, 0xc9, 0xb6, 0x68, 0x6a, 0x35, 0x01, 0x8d, 0x4f, 0x8e, 0x64, 0xe1, 0x43, 0x24, 0x70,
		0xc3, 0x0d, 0x28, 0x19, 0x28, 0x19, 0x28, 0x39, 0x73, 0x94, 0x8c, 0x1b, 0x6e, 0xb8, 0xe1, 0x26,
		0xe0, 0x1f, 0x6e, 0xb8, 0x65, 0x05, 0x89, 0x35, 0xdc, 0x70, 0xcb, 0xd3, 0xe2, 0x16, 0xfb, 0x86,
		0x5b, 0x3e, 0x4a, 0x34, 0x86, 0x46, 0x38, 0x0c, 0x04, 0x14, 0x67, 0x1c, 0xb7, 0x0b, 0xe0, 0x0a,
		0xe0, 0x0a, 0xe0, 0xba, 0x45, 0xe6, 0x5d, 0xe2, 0x0e, 0xfb, 0xc4, 0x1f, 0xc7, 0xbf, 0xc3, 0xb0,
		0xcb, 0x5d, 0xe7, 0xc6, 0x86, 0xdd, 0xeb, 0x9b, 0xd3, 0xb3, 0xd3, 0x9b, 0x9b, 0xd3, 0x13, 0x61,
		0xc6, 0xdd, 0x93, 0xd3, 0xeb, 0x9b, 0xd3, 0xe3, 0xd6, 0x9d, 0x98, 0x57, 0xc4, 0x06, 0xde, 0xf6,
		0xe5, 0xd7, 0xd6, 0x79, 0xfb, 0x44, 0x98, 0x8d, 0xb7, 0x7d, 0xd9, 0x3a, 0x3e, 0x3e, 0xbd, 0xbd,
		0x6d, 0x7f, 0x3e, 0x3f, 0x15, 0x66, 0xe5, 0xfd, 0x72, 0xf9, 0x9f, 0xcb, 0xab, 0xff, 0x5e, 0x8a,
		0x68, 0xbf, 0x1e, 0xb5, 0x7f, 0x77, 0x7a, 0x79, 0xd7, 0xba, 0x6b, 0x7f, 0x15, 0x32, 0x82, 0x46,
		0xbc, 0xd2, 0x5f, 0xae, 0xcf, 0xdb, 0xd1, 0x4a, 0x8b, 0x78, 0xc3, 0x41, 0xec, 0x86, 0xb8, 0xbe,
		0x6b, 0x5f, 0xb4, 0x6f, 0xef, 0xda, 0xc7, 0xdb, 0x6b, 0x0d, 0x9f, 0x1d, 0x27, 0x6e, 0x86, 0x82,
		0xb7, 0x2f, 0x48, 0x56, 0xb1, 0xa9, 0x35, 0x04, 0xb4, 0xff, 0xe6, 0x30, 0x89, 0xb1, 0xba, 0x4f,
		0xe5, 0x81, 0x18, 0xa7, 0xc1, 0xdc, 0x26, 0x6c, 0x6a, 0x07, 0x02, 0x5e, 0x30, 0x93, 0xc9, 0x62,
		0x1c, 0x07, 0x33, 0x49, 0xc0, 0xd5, 0xe0, 0x92, 0xb4, 0x3f, 0x95, 0x64, 0x4d, 0xad, 0x86, 0xfb,
		0x95, 0x1b, 0xcc, 0x17, 0x79, 0x09, 0x7d, 0x43, 0x1f, 0xba, 0x41, 0x68, 0x3c, 0x3a, 0x9c, 0xb1,
		0x94, 0x4f, 0xba, 0xc4, 0x27, 0xae, 0xa9, 0x84, 0x21, 0x6c, 0x0a, 0xfc, 0x6e, 0xce, 0x8e, 0xb5,
		0x5a, 0xf5, 0x68, 0xbf, 0xa9, 0x5d, 0x18, 0xae, 0xd1, 0x23, 0x11, 0x8e, 0xd6, 0xda, 0x6e, 0xd7,
		0xf3, 0xfb, 0x31, 0x1a, 0xd4, 0x3e, 0x1b, 0x01, 0xd1, 0xba, 0x9e, 0xaf, 0x85, 0x4f, 0xe4, 0xde,
		0x9d, 0x6b, 0x22, 0x2e, 0x87, 0xe4, 0x92, 0x50, 0xbb, 0xf6, 0xbd, 0xd0, 0x33, 0x3d, 0x47, 0xdb,
		0x69, 0x5f, 0xef, 0xbe, 0xf9, 0x8a, 0xae, 0xb5, 0x07, 0xad, 0x71, 0xd4, 0xc0, 0x6d, 0x4c, 0x2c,
		0xef, 0x8e, 0xef, 0x5d, 0x2d, 0x7e, 0xe5, 0x61, 0xa3, 0xda, 0xd4, 0xda, 0xd7, 0xcf, 0x0d, 0x2d,
		0xfa, 0x0b, 0x71, 0x48, 0x10, 0x68, 0x93, 0xaf, 0x6a, 0xad, 0x61, 0xd4, 0x5e, 0xc4, 0xf5, 0x86,
		0xdc, 0x21, 0xa9, 0x68, 0x3a, 0xb5, 0x8a, 0x56, 0xcd, 0x36, 0x86, 0x20, 0x93, 0x8e, 0x68, 0x86,
		0xb5, 0x92, 0x69, 0xa9, 0xb1, 0x73, 0x60, 0xdd, 0x52, 0xd0, 0xba, 0x85, 0xf4, 0x45, 0x48, 0x5f,
		0x04, 0x53, 0x1e, 0x4c, 0x79, 0x30, 0xe5, 0x51, 0xec, 0x56, 0xa4, 0x2f, 0xd2, 0x90, 0xbe, 0xa8,
		0xa0, 0x16, 0x19, 0xa4, 0x2f, 0x12, 0x24, 0xd5, 0x90, 0xbd, 0xe7, 0x4d, 0x7b, 0x42, 0xb3, 0xf7,
		0x30, 0xd4, 0xdb, 0x66, 0x9f, 0x6d, 0x96, 0xec, 0x13, 0xcf, 0xbe, 0xcf, 0x31, 0x7d, 0x4f, 0xdc,
		0x1a, 0xca, 0xe8, 0x49, 0x43, 0x9f, 0xc8, 0x3d, 0x81, 0xdc, 0x13, 0xbf, 0x3d, 0xda, 0x7a, 0xcf,
		0xf7, 0x86, 0x02, 0x72, 0x50, 0xcc, 0xb5, 0xcd, 0x97, 0x8c, 0x56, 0x40, 0x46, 0x41, 0x46, 0x41,
		0x46, 0x39, 0x58, 0xb3, 0x38, 0x89, 0x91, 0xa4, 0x41, 0x4e, 0x45, 0x77, 0xd7, 0x1e, 0x02, 0x2e,
		0x45, 0x78, 0x05, 0x8b, 0x15, 0x61, 0xe2, 0x45, 0xa4, 0x98, 0x11, 0x2e, 0x6e, 0x44, 0x8b, 0x1d,
		0x69, 0xe2, 0x47, 0x9a, 0x18, 0x92, 0x21, 0x8e, 0xf8, 0xf3, 0x52, 0x11, 0x86, 0x05, 0xde, 0x62,
		0x2a, 0x69, 0xd8, 0x30, 0x4d, 0x32, 0x08, 0xf5, 0xbe, 0x67, 0x09, 0xdc, 0x90, 0x49, 0x01, 0xff,
		0xb9, 0x97, 0x09, 0xda, 0x29, 0x22, 0xbc, 0x13, 0x4b, 0x2f, 0x89, 0x83, 0xc7, 0x4b, 0x42, 0xda,
		0xef, 0x08, 0x9a, 0x17, 0xbe, 0x4e, 0x0c, 0x69, 0x82, 0x5e, 0x86, 0xc0, 0x97, 0x26, 0xf8, 0x65,
		0x29, 0x00, 0xe9, 0x8a, 0x40, 0xba, 0x42, 0x90, 0xa9, 0x18, 0xc4, 0x28, 0x08, 0x41, 0x8a, 0x22,
		0x99, 0x18, 0xee, 0x4e, 0x96, 0xb5, 0xa7, 0xe5, 0xd1, 0xf3, 0x1c, 0x62, 0xb8, 0x22, 0xcf, 0xcb,
		0x14, 0x9d, 0x56, 0x94, 0x5a, 0x02, 0x41, 0x09, 0xed, 0x97, 0xde, 0x23, 0x3c, 0xc1, 0xbd, 0xf8,
		0x93, 0x20, 0xe2, 0x52, 0x9c, 0x61, 0x3d, 0x13, 0x3f, 0xb4, 0x83, 0x38, 0x3a, 0x67, 0x6c, 0xbc,
		0x7e, 0x36, 0x1c, 0x09, 0x20, 0x67, 0xf5, 0x7b, 0x55, 0xc6, 0x3b, 0x95, 0x72, 0x19, 0x68, 0x07,
		0x68, 0x07, 0x68, 0x07, 0x68, 0x67, 0xdb, 0xd1, 0xce, 0xd0, 0x76, 0xc3, 0x4a, 0x43, 0x02, 0xd8,
		0x69, 0x08, 0x7c, 0x85, 0x98, 0x9c, 0x05, 0x8b, 0xff, 0xc4, 0x1e, 0x77, 0x4d, 0x74, 0x4e, 0x83,
		0xa5, 0x97, 0x25, 0x17, 0xe1, 0x3f, 0xca, 0x79, 0x9f, 0xac, 0x6b, 0xf1, 0xcb, 0x7b, 0x5d, 0xf4,
		0x35, 0x79, 0x49, 0x62, 0xe1, 0xed, 0x56, 0x31, 0x5e, 0xe4, 0x6f, 0x95, 0x5a, 0xf9, 0xa8, 0x8e,
		0xdd, 0xa2, 0x84, 0x6a, 0x12, 0xdf, 0x7a, 0x07, 0xec, 0x15, 0xec, 0x75, 0xd3, 0x69, 0x19, 0xf8,
		0x84, 0xf4, 0x07, 0xa1, 0x78, 0xba, 0x3a, 0x7d, 0x91, 0xca, 0xfc, 0x34, 0x82, 0xde, 0x20, 0xa8,
		0x20, 0xa8, 0x20, 0xa8, 0x20, 0xa8, 0xdb, 0x4e, 0x50, 0x61, 0x8e, 0x07, 0xa0, 0xc9, 0x31, 0xa0,
		0xd1, 0x2d, 0xe2, 0x18, 0xaf, 0xd2, 0x60, 0xcd, 0xe4, 0x75, 0x2a, 0x83, 0x1b, 0x98, 0xde, 0x81,
		0x6c, 0x80, 0x6c, 0x80, 0x6c, 0xb6, 0x1e, 0xd9, 0xc0, 0xf4, 0xbe, 0xf1, 0xbf, 0xa2, 0x9a, 0xde,
		0xcb, 0x30, 0xa6, 0xaa, 0x21, 0x16, 0xde, 0x6e, 0x95, 0x2c, 0x4c, 0xef, 0xfb, 0x8d, 0x32, 0x76,
		0x8b, 0x1a, 0xaa, 0x49, 0x7c, 0xeb, 0x30, 0xbd, 0x83, 0xa9, 0xa6, 0x60, 0xaa, 0xb6, 0xe7, 0xdb,
		0xa1, 0x14, 0x92, 0x3a, 0x79, 0x13, 0x82, 0xc3, 0xc0, 0x50, 0xc1, 0x50, 0xc1, 0x50, 0xc1, 0x50,
		0x95, 0x67, 0xa8, 0x87, 0x12, 0x08, 0x6a, 0x1d, 0x04, 0x35, 0xa7, 0x04, 0x15, 0xb1, 0x61, 0x20,
		0xa8, 0x1b, 0x6e, 0x95, 0x6a, 0xbd, 0x86, 0xcd, 0x02, 0x7e, 0x0a, 0x7e, 0x0a, 0x7e, 0x9a, 0x6e,
		0x5a, 0x9e, 0x6d, 0x3f, 0x1c, 0x1a, 0xce, 0x34, 0xd1, 0xa1, 0x78, 0x9a, 0xba, 0xf8, 0x42, 0xf0,
		0x32, 0xf0, 0x32, 0xf0, 0x32, 0xf0, 0x32, 0x65, 0x78, 0xd9, 0xac, 0x82, 0xbf, 0x8c, 0xb0, 0xa8,
		0x23, 0x81, 0xef, 0x98, 0xcc, 0x99, 0xf2, 0xe4, 0x6c, 0x2e, 0x63, 0x6f, 0x4d, 0xc2, 0xda, 0x2c,
		0xad, 0xd1, 0xa1, 0x84, 0x77, 0x5d, 0x1b, 0x61, 0x48, 0x7c, 0x57, 0xf8, 0x72, 0x25, 0x2f, 0xdc,
		0xf9, 0x56, 0xd6, 0x8f, 0x3a, 0xbf, 0xbe, 0x55, 0xf4, 0xa3, 0xce, 0xf8, 0xc7, 0x4a, 0xfc, 0xbf,
		0x9f, 0xd5, 0xd1, 0xaf, 0xea, 0xb7, 0xb2, 0x5e, 0x9b, 0x7c, 0x5a, 0xad, 0x7f, 0x2b, 0xeb, 0xf5,
		0xce, 0xee, 0xce, 0xfd, 0xfd, 0xa7, 0xb4, 0xcf, 0xec, 0xfe, 0xdc, 0x1f, 0x95, 0x84, 0x0f, 0xa7,
		0x23, 0x63, 0x79, 0xae, 0x6e, 0xdb, 0x7f, 0x49, 0x5f, 0xa3, 0x7f, 0x76, 0x64, 0xad, 0xd2, 0xee,
		0xbf, 0x24, 0xac, 0xd3, 0x07, 0x85, 0xa9, 0xbf, 0x5c, 0x31, 0xd7, 0x80, 0x98, 0xe3, 0x25, 0xe6,
		0xe2, 0xd3, 0x60, 0xe8, 0xdd, 0x96, 0x7e, 0xd6, 0xf9, 0x59, 0xf9, 0x58, 0x1b, 0x35, 0x77, 0x7f,
		0x1e, 0x8c, 0x16, 0x3f, 0xfc, 0xb5, 0xea, 0x6b, 0x95, 0x8f, 0x07, 0xa3, 0xe6, 0x9a, 0xbf, 0x34,
		0x46, 0xcd, 0x0d, 0xdb, 0xa8, 0x8f, 0x76, 0x96, 0xbe, 0x1a, 0x7d, 0x5e, 0x5d, 0xf7, 0x40, 0x6d,
		0xcd, 0x03, 0xfb, 0xeb, 0x1e, 0xd8, 0x5f, 0xf3, 0xc0, 0xda, 0x2e, 0x55, 0xd7, 0x3c, 0x50, 0x1f,
		0xfd, 0x5a, 0xfa, 0xfe, 0xce, 0xea, 0xaf, 0x36, 0x46, 0xbb, 0xbf, 0xd6, 0xfd, 0xed, 0x60, 0xf4,
		0xab, 0xb9, 0xbb, 0x0b, 0xc1, 0xcf, 0x2c, 0xf8, 0xb1, 0x6d, 0xe5, 0x6f, 0x5b, 0xf5, 0x15, 0x21,
		0x0c, 0x8f, 0xf1, 0x19, 0x3a, 0xb7, 0x83, 0xb0, 0x15, 0x86, 0xbe, 0x58, 0xd6, 0x78, 0x61, 0xbb,
		0xa7, 0x4e, 0x9c, 0xbd, 0x47, 0xb0, 0xad, 0xbc, 0x74, 0x61, 0xbc, 0xcc, 0xbd, 0xa9, 0x72, 0x58,
		0xab, 0x35, 0x0e, 0x6a, 0xb5, 0xf2, 0xc1, 0xfe, 0x41, 0xf9, 0xa8, 0x5e, 0xaf, 0x34, 0x2a, 0x22,
		0x1d, 0x7d, 0x57, 0xbe, 0x45, 0x7c, 0x62, 0x7d, 0x7e, 0x2d, 0x35, 0x35, 0x77, 0xe8, 0x38, 0x32,
		0x5e, 0xf5, 0x25, 0x20, 0xbe, 0x50, 0x67, 0x00, 0x4c, 0xde, 0x99, 0x8b, 0x16, 0x91, 0x26, 0x6f,
		0xc7, 0x76, 0xbf, 0xeb, 0x8e, 0x67, 0xca, 0xc8, 0xe3, 0xb5, 0xe2, 0x9d, 0x30, 0x7c, 0xaf, 0x06,
		0x54, 0x30, 0x7c, 0x53, 0x2c, 0x3a, 0x0c, 0xdf, 0x79, 0x07, 0x48, 0x30, 0x7c, 0xa7, 0xb3, 0x36,
		0xc0, 0xf0, 0x9d, 0xca, 0x22, 0x04, 0xc3, 0x37, 0x37, 0x8b, 0x10, 0x0c, 0xdf, 0xaa, 0xd8, 0x3f,
		0x60, 0xf8, 0xce, 0x4e, 0xf1, 0x64, 0x23, 0xe6, 0x60, 0xf8, 0xe6, 0x26, 0xe6, 0x60, 0x41, 0x84,
		0xe1, 0x5b, 0x55, 0xc1, 0x8f, 0x6d, 0x0b, 0xc3, 0x77, 0x4e, 0x78, 0x9d, 0x86, 0x88, 0x5b, 0x98,
		0x1f, 0x69, 0xcc, 0x8f, 0x71, 0x85, 0x5b, 0x5f, 0xb7, 0x2d, 0x79, 0xd6, 0xc7, 0xd9, 0x2b, 0x61,
		0x7c, 0x84, 0xf1, 0x11, 0xc6, 0x47, 0x18, 0x1f, 0x95, 0x31, 0x3e, 0xe2, 0x36, 0x64, 0x8e, 0x08,
		0x39, 0x6e, 0x43, 0x0a, 0xd9, 0xea, 0xb8, 0x0d, 0xc9, 0x69, 0xab, 0x54, 0xeb, 0x48, 0x94, 0xaf,
		0x0e, 0x7b, 0x02, 0x37, 0x03, 0x37, 0xcb, 0xbc, 0x45, 0xde, 0x35, 0x76, 0x5b, 0xc3, 0x5e, 0x84,
		0x18, 0x89, 0x25, 0x44, 0xdf, 0x0b, 0xe6, 0x8b, 0x7b, 0x11, 0xc8, 0xed, 0x36, 0xe3, 0x72, 0x73,
		0x5d, 0xc3, 0x24, 0xc1, 0xe2, 0x07, 0xd1, 0xef, 0xcf, 0x8e, 0xe1, 0x36, 0x63, 0x46, 0x69, 0xc5,
		0x3f, 0xc7, 0xdf, 0x19, 0x34, 0xed, 0xc1, 0x73, 0x63, 0xf2, 0xe3, 0xc4, 0x54, 0x3f, 0x79, 0x3c,
		0xf9, 0x7d, 0xef, 0xd9, 0xf7, 0x07, 0xf1, 0x7f, 0xf4, 0x9e, 0xef, 0x0d, 0x07, 0x7b, 0x42, 0xaa,
		0x90, 0x27, 0x83, 0x3a, 0x21, 0x81, 0xe9, 0xdb, 0x83, 0xc9, 0x99, 0x2a, 0xb5, 0x2c, 0xcb, 0x8e,
		0x7e, 0x36, 0x1c, 0xed, 0xeb, 0xcd, 0xcd, 0xb5, 0x66, 0x19, 0xa1, 0xa1, 0x75, 0x3d, 0x5f, 0x6b,
		0x5f, 0x3f, 0x37, 0xb4, 0xd9, 0x90, 0x05, 0x53, 0xe4, 0x0a, 0x28, 0x32, 0x28, 0x32, 0x28, 0x72,
		0xf1, 0x29, 0xb2, 0xa8, 0x62, 0xeb, 0xc9, 0x0b, 0x24, 0x86, 0x33, 0x2e, 0x1d, 0x50, 0x69, 0x61,
		0x8d, 0xeb, 0xa4, 0xf9, 0x99, 0xe7, 0x8f, 0xc5, 0xb8, 0xe7, 0x2e, 0x0a, 0xf0, 0x8f, 0x5a, 0x40,
		0xc2, 0x40, 0x0b, 0x9f, 0x88, 0x36, 0xe9, 0xa6, 0x16, 0x75, 0x53, 0x8b, 0xbb, 0x79, 0xef, 0xca,
		0xf1, 0x23, 0x0b, 0xb6, 0x88, 0x4a, 0x13, 0xfb, 0x32, 0xc5, 0xbf, 0x74, 0x35, 0x20, 0x5b, 0x1d,
		0x64, 0xa6, 0x16, 0x32, 0x53, 0x0f, 0x59, 0xa8, 0x09, 0x49, 0xc4, 0x55, 0xf0, 0x79, 0x13, 0x6e,
		0x61, 0x5d, 0x3a, 0x6d, 0x52, 0xc2, 0x3c, 0x97, 0xe0, 0xf0, 0x91, 0x84, 0x77, 0x49, 0x09, 0xfb,
		0x14, 0x4b, 0xd1, 0xde, 0x59, 0x39, 0xa9, 0x61, 0xa0, 0x4b, 0x6b, 0x78, 0x28, 0xf1, 0x9d, 0xb2,
		0x23, 0x4f, 0x92, 0x17, 0x17, 0x27, 0x3c, 0x34, 0xb1, 0x90, 0xc9, 0x5c, 0xb6, 0x2c, 0xa2, 0x86,
		0x92, 0xb7, 0x17, 0x2b, 0x6c, 0x34, 0x59, 0x3f, 0x29, 0x6f, 0x1a, 0x7d, 0x2c, 0xb0, 0xd8, 0x6c,
		0x40, 0x6c, 0x8a, 0x16, 0x9b, 0x88, 0xdb, 0x2b, 0x6c, 0xb8, 0xe9, 0xd6, 0x2a, 0x12, 0x6c, 0xe7,
		0x42, 0x86, 0xa1, 0x4a, 0x56, 0xac, 0x08, 0xab, 0x95, 0x6b, 0xe8, 0xcd, 0xb9, 0x27, 0xb2, 0xc3,
		0xdb, 0x13, 0x29, 0xd6, 0xa5, 0x5c, 0x0a, 0xcc, 0x27, 0xd2, 0x37, 0x06, 0x46, 0xf8, 0x34, 0x76,
		0x1d, 0x0e, 0x88, 0x3b, 0x76, 0xe8, 0xe9, 0x73, 0xfe, 0xc3, 0x55, 0x3f, 0xee, 0xcd, 0x3b, 0x0f,
		0x63, 0xb7, 0xe1, 0xcc, 0x61, 0xf8, 0x8e, 0xab, 0xf0, 0x43, 0x3e, 0x97, 0x8f, 0x23, 0x46, 0x2e,
		0x25, 0xd3, 0xa4, 0x87, 0xbe, 0x61, 0x7e, 0xb7, 0xdd, 0x1e, 0xf7, 0xe5, 0x9b, 0x21, 0xe0, 0xe5,
		0x77, 0x71, 0xde, 0x84, 0x62, 0xbc, 0x9e, 0xc2, 0xcc, 0xde, 0x22, 0xcd, 0xdc, 0xc2, 0xcd, 0xda,
		0xa2, 0xcd, 0xd8, 0xd2, 0xcc, 0xd6, 0xd2, 0xcc, 0xd4, 0x32, 0xcc, 0xd2, 0xf9, 0x0e, 0x57, 0x11,
		0xe5, 0xa5, 0x2c, 0x99, 0xd3, 0x13, 0x2a, 0x38, 0x64, 0x45, 0x6c, 0x0c, 0x09, 0x82, 0x36, 0xb2,
		0x17, 0x6b, 0xb2, 0xc4, 0x9b, 0x74, 0x31, 0x27, 0x5d, 0xdc, 0xc9, 0x14, 0x7b, 0x82, 0xb1, 0xbc,
		0xaa, 0x41, 0x1b, 0xd3, 0x62, 0x7d, 0xba, 0x45, 0x4c, 0x9f, 0x4c, 0xd6, 0x40, 0x52, 0xd0, 0xc6,
		0x8a, 0x77, 0x0b, 0x0f, 0xda, 0x10, 0x5f, 0x3a, 0x30, 0x79, 0x59, 0x59, 0xac, 0x81, 0xa0, 0x83,
		0x80, 0x91, 0xbc, 0xa9, 0x1e, 0xe9, 0x2a, 0x48, 0xb6, 0x2a, 0xca, 0x4c, 0x25, 0x65, 0xa6, 0x9a,
		0xb2, 0x50, 0x51, 0xe2, 0x0d, 0x5a, 0x5a, 0x21, 0x03, 0x46, 0x44, 0x5f, 0xcd, 0x5b, 0x14, 0x8d,
		0x12, 0xee, 0xf6, 0x48, 0xba, 0xaa, 0x37, 0xfd, 0x27, 0xd1, 0xe9, 0x29, 0xf3, 0xea, 0x5e, 0xf2,
		0x52, 0xc9, 0x15, 0xf7, 0x93, 0xf7, 0x66, 0x75, 0x3b, 0x6b, 0x76, 0x44, 0x64, 0xdf, 0xd2, 0x92,
		0x24, 0x65, 0xde, 0x6e, 0x29, 0x89, 0x57, 0xfc, 0x96, 0xb6, 0x94, 0xb4, 0xc2, 0x87, 0xd8, 0x54,
		0x12, 0x3c, 0x55, 0x5a, 0x11, 0xfc, 0x61, 0xa2, 0x49, 0xbb, 0x9c, 0x2b, 0x82, 0xc9, 0xfb, 0xa4,
		0x5f, 0x15, 0x14, 0xbf, 0x11, 0x04, 0x2e, 0x51, 0x29, 0xf6, 0xa0, 0xcc, 0x5c, 0x5f, 0xf2, 0x68,
		0xfd, 0xe2, 0x8b, 0xc1, 0x53, 0xc1, 0x53, 0xc1, 0x53, 0xc1, 0x53, 0xc1, 0x53, 0x27, 0xa7, 0x2d,
		0xd2, 0x5a, 0x3e, 0xe9, 0xca, 0xbc, 0xd5, 0x70, 0x20, 0x27, 0x73, 0xe8, 0xd3, 0xc6, 0x97, 0xb6,
		0xed, 0x6e, 0xd3, 0x8d, 0xa6, 0x43, 0xe9, 0xad, 0x23, 0xa5, 0x72, 0xcb, 0x3c, 0x63, 0x96, 0x53,
		0xc1, 0x65, 0x9e, 0x50, 0x65, 0x56, 0xc9, 0x25, 0xe9, 0x84, 0xbc, 0x8a, 0x2e, 0xcb, 0xaf, 0x14,
		0x5e, 0xd9, 0x05, 0x58, 0x5d, 0x1d, 0xac, 0x8e, 0xfc, 0x2d, 0x2b, 0xde, 0x23, 0x35, 0xe8, 0x6e,
		0x39, 0x3c, 0x4c, 0x48, 0x1c, 0x9e, 0xb8, 0x15, 0x17, 0x91, 0xc6, 0x33, 0x08, 0x8d, 0x90, 0x88,
		0x8f, 0x6b, 0x19, 0xbf, 0x46, 0xf1, 0xb0, 0x96, 0x2a, 0xc2, 0x5a, 0x72, 0xc3, 0xd1, 0x10, 0xd6,
		0xb2, 0xbd, 0xda, 0x09, 0x61, 0x2d, 0x7c, 0xa7, 0x13, 0x61, 0x2d, 0x69, 0x55, 0x0d, 0xcc, 0x85,
		0x39, 0x56, 0x41, 0xb2, 0x55, 0x51, 0x66, 0x2a, 0x29, 0x33, 0xd5, 0x94, 0x85, 0x8a, 0x12, 0x4f,
		0xd1, 0x34, 0x84, 0xb5, 0x70, 0x10, 0x8d, 0x08, 0x6b, 0x61, 0x31, 0x99, 0x21, 0xac, 0x45, 0x62,
		0x07, 0x10, 0xd6, 0x22, 0x7a, 0x4b, 0x21, 0xac, 0x05, 0x61, 0x2d, 0xa9, 0x21, 0x3c, 0xa2, 0x31,
		0x96, 0x36, 0x15, 0xa2, 0x31, 0x40, 0xaf, 0x40, 0xaf, 0x40, 0xaf, 0x40, 0xaf, 0xf2, 0x46, 0xaf,
		0x10, 0x8d, 0x81, 0x68, 0x0c, 0x3a, 0xa2, 0x87, 0x68, 0x8c, 0xa2, 0x46, 0x63, 0xc0, 0x4d, 0xa3,
		0x6d, 0x53, 0x10, 0xc1, 0xd8, 0xb7, 0x8d, 0x72, 0x33, 0xf9, 0xdf, 0x32, 0x59, 0x6f, 0x95, 0x92,
		0x90, 0x00, 0x0e, 0x7f, 0x68, 0x86, 0xee, 0x04, 0x8e, 0xb4, 0xa7, 0xef, 0x7c, 0xb8, 0x89, 0x3b,
		0xfc, 0xd5, 0x31, 0xdc, 0x87, 0xf6, 0xe0, 0xb9, 0xf1, 0xd0, 0x1a, 0xf7, 0xf2, 0xe1, 0xab, 0xef,
		0x0f, 0xfe, 0x88, 0xfa, 0xf7, 0x90, 0x7c, 0xf7, 0x6e, 0xda, 0xbd, 0x2d, 0xc8, 0x47, 0x25, 0x26,
		0xde, 0x45, 0x68, 0x9c, 0x8b, 0xf0, 0xac, 0x53, 0x55, 0x64, 0x9d, 0x92, 0xc6, 0x6a, 0x91, 0x75,
		0xaa, 0x78, 0x5a, 0x4b, 0x58, 0xd6, 0x29, 0xc3, 0x34, 0xc9, 0x20, 0xd4, 0xfb, 0x9e, 0x25, 0x21,
		0x44, 0x6f, 0xfe, 0x65, 0xc2, 0x6a, 0x98, 0x89, 0x8f, 0x34, 0x29, 0xc5, 0x00, 0x5f, 0x0c, 0x1c,
		0xeb, 0xa0, 0xde, 0xb8, 0x6c, 0x81, 0x2f, 0x4d, 0xf0, 0xcb, 0x52, 0x00, 0xd2, 0x15, 0x81, 0x74,
		0x85, 0x20, 0x53, 0x31, 0xa8, 0xc9, 0x8c, 0xe5, 0xd5, 0x1b, 0x7f, 0xf4, 0x3c, 0x87, 0x18, 0xae,
		0x84, 0x8a, 0xe3, 0x95, 0xca, 0x16, 0x47, 0xd1, 0x1b, 0xd6, 0x33, 0xf1, 0x43, 0x3b, 0x88, 0xed,
		0x6b, 0x63, 0x2e, 0xf9, 0x2c, 0xb0, 0x80, 0xdd, 0x4c, 0x67, 0xaf, 0x7e, 0xaf, 0xca, 0xea, 0xbb,
		0x52, 0x2e, 0x43, 0x79, 0x43, 0x79, 0x43, 0x79, 0x43, 0x79, 0x6f, 0xbb, 0xf2, 0x1e, 0xda, 0x6e,
		0x58, 0x69, 0x48, 0xd0, 0xdd, 0x0d, 0x81, 0xaf, 0x90, 0x13, 0xab, 0x29, 0xc7, 0x65, 0x27, 0x2f,
		0xd6, 0x61, 0x1a, 0x40, 0x57, 0x91, 0x14, 0x69, 0x90, 0x55, 0xd8, 0x9c, 0xfc, 0x70, 0xb9, 0x91,
		0x1c, 0x5f, 0xab, 0xfc, 0xad, 0x52, 0x2b, 0x1f, 0xd5, 0xb1, 0x5b, 0x94, 0x50, 0x4d, 0xe2, 0x5b,
		0xef, 0x6c, 0x31, 0x19, 0x33, 0x87, 0xbe, 0x1f, 0xd1, 0xa1, 0xe9, 0x4d, 0x3a, 0x09, 0x59, 0xfb,
		0x17, 0xdf, 0x08, 0xaa, 0x01, 0xaa, 0x01, 0xaa, 0x01, 0xaa, 0xa1, 0x14, 0xd5, 0x38, 0x94, 0xc0,
		0x34, 0xea, 0x60, 0x1a, 0x39, 0x65, 0x1a, 0x65, 0x60, 0x47, 0x30, 0x8d, 0xcd, 0xb6, 0x4a, 0xb5,
		0x0e, 0xa2, 0x01, 0xa2, 0x01, 0xa2, 0x31, 0xf0, 0x09, 0xe9, 0x0f, 0x42, 0xf1, 0xfc, 0x62, 0xfa,
		0x22, 0x95, 0xfd, 0x3a, 0x11, 0x8e, 0x84, 0x63, 0x07, 0x6c, 0x0b, 0x6c, 0x0b, 0x6c, 0x6b, 0xdb,
		0xd9, 0x16, 0xa2, 0x32, 0x64, 0xea, 0x67, 0xdd, 0x22, 0x8e, 0xf1, 0x2a, 0x4d, 0x4b, 0x4f, 0x5e,
		0xa7, 0xb2, 0xae, 0x46, 0x04, 0x06, 0x14, 0x35, 0x14, 0x35, 0x14, 0xf5, 0xd6, 0x2b, 0x6a, 0x44,
		0x60, 0x6c, 0xfc, 0x0f, 0x76, 0x51, 0xb6, 0xf7, 0xc1, 0x2e, 0xca, 0x75, 0xab, 0x64, 0x61, 0x17,
		0xdd, 0x6f, 0x94, 0xb1, 0x5b, 0xd4, 0x50, 0x4d, 0xe2, 0x5b, 0xdf, 0x6e, 0xc3, 0xa8, 0xac, 0xc8,
		0x0b, 0xd1, 0x11, 0x17, 0x08, 0x79, 0x07, 0xe1, 0x02, 0xe1, 0x02, 0xe1, 0x02, 0xe1, 0x42, 0x1c,
		0x0a, 0xf8, 0x96, 0x0c, 0x10, 0x8d, 0x88, 0x77, 0xf0, 0xad, 0x0d, 0xb7, 0x8a, 0xb4, 0xec, 0xc2,
		0xa0, 0x5b, 0xa0, 0x5b, 0x39, 0xa6, 0x5b, 0xcf, 0xb6, 0x1f, 0x0e, 0x0d, 0x47, 0x9f, 0x24, 0xa2,
		0x12, 0xcf, 0xba, 0x16, 0x5f, 0x08, 0x9a, 0x01, 0x9a, 0x01, 0x9a, 0x01, 0x9a, 0xa1, 0x0c, 0xcd,
		0xb0, 0x07, 0x82, 0x65, 0xd7, 0xbc, 0xfc, 0xaa, 0x1c, 0x09, 0x7c, 0xc7, 0x64, 0xce, 0x94, 0xe7,
		0x1a, 0xb3, 0x95, 0x79, 0xae, 0x49, 0x58, 0x9b, 0xa5, 0x35, 0x3a, 0x94, 0x93, 0x54, 0x39, 0x24,
		0xbe, 0x2b, 0xad, 0x70, 0x4d, 0x69, 0xe7, 0x5b, 0x59, 0x3f, 0xea, 0xfc, 0xfa, 0x56, 0xd1, 0x8f,
		0x3a, 0xe3, 0x1f, 0x2b, 0xf1, 0xff, 0x7e, 0x56, 0x47, 0xbf, 0xaa, 0xdf, 0xca, 0x7a, 0x6d, 0xf2,
		0x69, 0xb5, 0xfe, 0xad, 0xac, 0xd7, 0x3b, 0xbb, 0x3b, 0xf7, 0xf7, 0x9f, 0xd2, 0x3e, 0xb3, 0xfb,
		0x73, 0x7f, 0x24, 0x3e, 0x2d, 0x79, 0x47, 0xc6, 0xf2, 0x5c, 0xdd, 0xb6, 0xff, 0x92, 0xbe, 0x46,
		0xff, 0xec, 0xc8, 0x5a, 0xa5, 0xdd, 0x7f, 0x95, 0x54, 0x2f, 0xde, 0xf1, 0xb1, 0x40, 0x62, 0xae,
		0x01, 0x31, 0xc7, 0x4b, 0xcc, 0xc5, 0xa7, 0xc1, 0xd0, 0xbb, 0x2d, 0xfd, 0xac, 0xf3, 0xb3, 0xf2,
		0xb1, 0x36, 0x6a, 0xee, 0xfe, 0x3c, 0x18, 0x2d, 0x7e, 0xf8, 0x6b, 0xd5, 0xd7, 0x2a, 0x1f, 0x0f,
		0x46, 0xcd, 0x35, 0x7f, 0x69, 0x8c, 0x9a, 0x1b, 0xb6, 0x51, 0x1f, 0xed, 0x2c, 0x7d, 0x35, 0xfa,
		0xbc, 0xba, 0xee, 0x81, 0xda, 0x9a, 0x07, 0xf6, 0xd7, 0x3d, 0xb0, 0xbf, 0xe6, 0x81, 0xb5, 0x5d,
		0xaa, 0xae, 0x79, 0xa0, 0x3e, 0xfa, 0xb5, 0xf4, 0xfd, 0x9d, 0xd5, 0x5f, 0x6d, 0x8c, 0x76, 0x7f,
		0xad, 0xfb, 0xdb, 0xc1, 0xe8, 0x57, 0x73, 0x77, 0x17, 0x82, 0x9f, 0x59, 0xf0, 0x63, 0xdb, 0xca,
		0xdf, 0xb6, 0xea, 0x2b, 0x42, 0xd5, 0xec, 0x68, 0x82, 0x18, 0xa3, 0x94, 0xa2, 0x1d, 0xf2, 0x8a,
		0x75, 0x64, 0x5a, 0xa4, 0x43, 0x62, 0x71, 0x0e, 0x89, 0x45, 0x39, 0xd4, 0xb2, 0xe0, 0x3a, 0xb6,
		0xfb, 0x5d, 0x77, 0x3c, 0x53, 0x46, 0xee, 0xc8, 0x15, 0xef, 0x84, 0x1d, 0x17, 0x76, 0x5c, 0xd8,
		0x71, 0x61, 0xc7, 0x85, 0x1d, 0x17, 0x76, 0x5c, 0xd8, 0x71, 0x61, 0xc7, 0x05, 0x9d, 0x87, 0x1d,
		0x17, 0x76, 0x5c, 0xd8, 0x71, 0x61, 0xc7, 0x85, 0x1d, 0x17, 0x82, 0x1f, 0x76, 0x5c, 0xd8, 0x71,
		0xb7, 0xdd, 0x8e, 0xab, 0x94, 0x35, 0x2d, 0xae, 0xd9, 0xe9, 0xeb, 0xb6, 0x25, 0xcf, 0x98, 0x36,
		0x7b, 0x25, 0x6c, 0x69, 0xb0, 0xa5, 0xc1, 0x96, 0x06, 0x5b, 0x9a, 0x32, 0xb6, 0x34, 0x5c, 0xbd,
		0xca, 0x11, 0xbf, 0xc4, 0xd5, 0x2b, 0x21, 0x5b, 0x1d, 0x57, 0xaf, 0x38, 0x6d, 0x15, 0xa4, 0x00,
		0x56, 0x89, 0x0c, 0x80, 0x6a, 0x68, 0xb9, 0x2f, 0x22, 0xdd, 0x1a, 0xf6, 0x22, 0x00, 0x44, 0x2c,
		0x21, 0xea, 0x4b, 0x30, 0xfd, 0xd9, 0x8b, 0x30, 0x5b, 0xb7, 0x19, 0x17, 0xa0, 0xec, 0x1a, 0x26,
		0x09, 0x16, 0x3f, 0x88, 0x7e, 0x7f, 0x76, 0x0c, 0xb7, 0x19, 0x13, 0x24, 0x2b, 0xfe, 0x39, 0xfe,
		0xce, 0xa0, 0x69, 0x0f, 0x9e, 0x1b, 0x93, 0x1f, 0x27, 0x86, 0xd4, 0xc9, 0xe3, 0xc9, 0xef, 0x7b,
		0xcf, 0xbe, 0x3f, 0x88, 0xff, 0xa3, 0xf7, 0x7c, 0x6f, 0x38, 0xd8, 0x13, 0x51, 0x65, 0x3f, 0x19,
		0xd3, 0x09, 0x09, 0x4c, 0xdf, 0x1e, 0x44, 0x32, 0x27, 0x1a, 0x5a, 0xcb, 0xb2, 0xec, 0xe8, 0x67,
		0xc3, 0xd1, 0xbe, 0xde, 0xdc, 0x5c, 0x6b, 0x96, 0x11, 0x1a, 0x5a, 0xd7, 0xf3, 0xb5, 0xf6, 0xf5,
		0x73, 0x43, 0x9b, 0x8d, 0x58, 0x30, 0xe1, 0xab, 0x80, 0xf0, 0x81, 0xf0, 0x81, 0xf0, 0x15, 0x9f,
		0xf0, 0x9d, 0xd8, 0x82, 0xa3, 0x19, 0x25, 0xc6, 0x9a, 0xad, 0x35, 0x93, 0x09, 0x8f, 0x39, 0x5b,
		0x27, 0xcd, 0xcf, 0x3c, 0x7f, 0x2c, 0xc6, 0x3d, 0x77, 0x51, 0x80, 0x7f, 0xd4, 0x02, 0x12, 0x06,
		0x5a, 0xf8, 0x44, 0xb4, 0x49, 0x37, 0xb5, 0xa8, 0x9b, 0x5a, 0xdc, 0xcd, 0x7b, 0x57, 0x8e, 0x93,
		0x4f, 0xb0, 0x7d, 0x4f, 0x9a, 0xd8, 0x97, 0x29, 0xfe, 0xa5, 0xab, 0x01, 0xd9, 0xea, 0x20, 0x33,
		0xb5, 0x90, 0x99, 0x7a, 0xc8, 0x42, 0x4d, 0x48, 0xa2, 0x61, 0x82, 0xcf, 0x9b, 0x70, 0x7b, 0xe1,
		0xd2, 0x69, 0x93, 0x12, 0x83, 0xb7, 0x04, 0x87, 0x8f, 0x24, 0xbc, 0x4b, 0x4a, 0x4c, 0x9e, 0x58,
		0x86, 0xf6, 0xce, 0xca, 0x49, 0x8d, 0xd1, 0x5b, 0x5a, 0xc3, 0x43, 0x89, 0xef, 0x94, 0x1d, 0x16,
		0x90, 0xbc, 0xb8, 0x38, 0xb1, 0x7b, 0x89, 0xbd, 0x47, 0xe6, 0xb2, 0x65, 0x11, 0xd2, 0x91, 0xbc,
		0xbd, 0x58, 0x31, 0x7d, 0x62, 0xed, 0x75, 0x92, 0x15, 0x5d, 0xb6, 0x62, 0xb3, 0x01, 0xb1, 0x29,
		0x5a, 0x6c, 0x22, 0xa8, 0xaa, 0xb0, 0xb1, 0x80, 0x5b, 0xab, 0x48, 0xb0, 0x9d, 0x0b, 0x19, 0x23,
		0x28, 0x59, 0xb1, 0x22, 0xe6, 0x51, 0xae, 0xa1, 0x37, 0xe7, 0x8e, 0xc8, 0x0e, 0x6f, 0x47, 0xa4,
		0xeb, 0x7a, 0xa1, 0x31, 0x31, 0x98, 0xf2, 0x87, 0x57, 0xa5, 0xc0, 0x7c, 0x22, 0x7d, 0x63, 0x60,
		0x84, 0x4f, 0x63, 0xcf, 0xe1, 0x80, 0xb8, 0x66, 0x6c, 0x8d, 0xd4, 0xe7, 0xdc, 0x87, 0xab, 0x7e,
		0xdc, 0x9b, 0xf7, 0x1d, 0xc6, 0x5e, 0xc3, 0x99, 0xbf, 0xf0, 0xf7, 0x9e, 0xc2, 0x0f, 0xf9, 0x5c,
		0x3d, 0x8e, 0x10, 0x59, 0x42, 0xcc, 0xab, 0xb4, 0x58, 0x57, 0x41, 0x36, 0x70, 0x61, 0x36, 0x6f,
		0x91, 0x36, 0x6e, 0xe1, 0x36, 0x6d, 0xd1, 0x36, 0x6c, 0x69, 0x36, 0x6b, 0x69, 0x36, 0x6a, 0x19,
		0x36, 0xe9, 0x7c, 0x87, 0xaa, 0x08, 0xb3, 0x31, 0x27, 0xbb, 0xdd, 0x21, 0x46, 0xd7, 0x27, 0x5d,
		0x11, 0xfb, 0x7d, 0xca, 0xa2, 0x0f, 0x04, 0xb4, 0x7d, 0x3d, 0x51, 0x6a, 0x9f, 0x3e, 0xed, 0x8d,
		0x55, 0xda, 0xde, 0xb2, 0xac, 0xcc, 0xab, 0x2e, 0xfa, 0x90, 0xa3, 0x9d, 0x16, 0x09, 0x0d, 0x91,
		0x9a, 0x46, 0x4c, 0xde, 0x20, 0x71, 0x79, 0x82, 0xa4, 0xe6, 0x05, 0x12, 0x98, 0x07, 0x48, 0x60,
		0xde, 0x1f, 0x5e, 0x3b, 0x4f, 0x10, 0xfa, 0x95, 0x8a, 0x7a, 0x39, 0x8a, 0xcd, 0x52, 0x10, 0xfa,
		0x43, 0x33, 0x74, 0x27, 0x72, 0xb9, 0x3d, 0xed, 0xd5, 0xc3, 0x4d, 0xdc, 0xab, 0xaf, 0x8e, 0xe1,
		0x3e, 0xb4, 0x07, 0xcf, 0x8d, 0x87, 0xd6, 0xb8, 0x2b, 0x0f, 0x5f, 0x7d, 0x7f, 0xf0, 0x47, 0xdc,
		0x89, 0x0f, 0xf9, 0x10, 0x4b, 0x6c, 0x2d, 0x30, 0x6e, 0xab, 0x12, 0x79, 0x09, 0x7d, 0x43, 0x1f,
		0xba, 0x41, 0x68, 0x3c, 0x3a, 0x7c, 0x94, 0x66, 0xc9, 0x27, 0x5d, 0xe2, 0x13, 0xd7, 0xe4, 0xe7,
		0x9b, 0xe4, 0xb8, 0xcf, 0xa7, 0x1a, 0xfc, 0xe6, 0xec, 0x58, 0xab, 0x1f, 0x1c, 0x1d, 0x6a, 0xba,
		0xf6, 0x75, 0x12, 0x4d, 0x13, 0x6f, 0x19, 0x5f, 0xbb, 0x21, 0xd6, 0xd0, 0xb5, 0x0c, 0xd7, 0x7c,
		0xd5, 0xae, 0x7d, 0x2f, 0xf4, 0x4c, 0xcf, 0xb9, 0x77, 0x77, 0xbe, 0xde, 0xdc, 0x5c, 0xef, 0x6a,
		0x5f, 0x89, 0x1f, 0xd8, 0x9e, 0xab, 0xed, 0x4f, 0x23, 0x2c, 0x6b, 0x9a, 0xe1, 0x5a, 0x71, 0xa4,
		0x0e, 0xcf, 0x4d, 0x2d, 0x08, 0xf3, 0xce, 0x63, 0xdd, 0xd9, 0x22, 0x71, 0x06, 0x5f, 0xa2, 0x61,
		0xee, 0x1b, 0x78, 0xcb, 0x7f, 0x15, 0xf3, 0x06, 0x58, 0x3e, 0x64, 0x6b, 0x2c, 0x63, 0x95, 0x2f,
		0x9c, 0xd5, 0x95, 0x78, 0x35, 0xc5, 0xb6, 0x01, 0xe8, 0x97, 0x8b, 0xee, 0x49, 0xca, 0xe5, 0x99,
		0xe2, 0x57, 0x6a, 0xc6, 0xce, 0x07, 0xa0, 0xf2, 0x03, 0xa4, 0x42, 0x01, 0x28, 0x47, 0xc0, 0xc9,
		0x11, 0x60, 0xd2, 0x2e, 0x3d, 0x9f, 0x7b, 0x1c, 0x6c, 0x47, 0x59, 0xd2, 0xbd, 0x0c, 0x46, 0xd5,
		0xf6, 0x9b, 0x9b, 0x16, 0xed, 0x6b, 0x2d, 0x7a, 0x87, 0xd6, 0x35, 0xfa, 0xb6, 0xf3, 0xaa, 0x8d,
		0x45, 0xd0, 0xd0, 0x8f, 0x05, 0x5d, 0xa4, 0x54, 0xee, 0x5d, 0x6e, 0x17, 0x2f, 0x38, 0x5d, 0xb0,
		0xe0, 0x66, 0x5d, 0xe4, 0x69, 0x4d, 0xe4, 0x6e, 0x3d, 0xe4, 0x8d, 0x9c, 0x84, 0x59, 0x07, 0x85,
		0xc1, 0x24, 0x11, 0xd6, 0xbf, 0x6c, 0x29, 0x0a, 0xaf, 0x0b, 0x07, 0xa5, 0x58, 0xbd, 0x73, 0xdb,
		0x19, 0x89, 0xb7, 0x21, 0x6a, 0x95, 0xd3, 0xda, 0x2d, 0x08, 0x9c, 0x53, 0xd7, 0x74, 0xbc, 0xc0,
		0x76, 0x7b, 0x91, 0x80, 0x09, 0x0d, 0xdb, 0x25, 0x7e, 0x8c, 0x58, 0xe3, 0x0b, 0x02, 0x31, 0x93,
		0x0e, 0xb4, 0x27, 0xc3, 0xb5, 0x1c, 0x62, 0x69, 0x8f, 0xaf, 0x5a, 0xf8, 0x64, 0x07, 0xf7, 0x6e,
		0xfb, 0x7a, 0x76, 0x67, 0x80, 0x57, 0xbf, 0xf8, 0xde, 0xf1, 0xe2, 0xee, 0xe8, 0x10, 0xe1, 0xe0,
		0x10, 0xe6, 0xd8, 0x90, 0x41, 0xee, 0x84, 0x38, 0x32, 0xe4, 0x32, 0x3b, 0xce, 0x8e, 0x8b, 0x7c,
		0x99, 0x8f, 0x05, 0x58, 0x5d, 0x04, 0x5a, 0x5f, 0xf8, 0x5b, 0x61, 0x94, 0xb2, 0xc6, 0x88, 0x3e,
		0xb8, 0x32, 0xad, 0x33, 0xd2, 0xce, 0xb2, 0x6a, 0xd6, 0x1a, 0xbe, 0x72, 0x82, 0x7f, 0x6b, 0x9d,
		0x62, 0x58, 0xab, 0x25, 0x9b, 0x47, 0x3a, 0xb4, 0x1c, 0x99, 0x8f, 0xd5, 0x4a, 0xa8, 0xb5, 0x8a,
		0x41, 0x32, 0xa4, 0x75, 0x9a, 0xd0, 0x1d, 0xb3, 0xf4, 0x4b, 0x96, 0xee, 0x89, 0x94, 0xca, 0x98,
		0x75, 0x51, 0x85, 0x2c, 0x66, 0xba, 0x99, 0xdd, 0x7c, 0x7e, 0x52, 0xcc, 0x4d, 0xc9, 0x9c, 0xa2,
		0xf1, 0x74, 0x73, 0x92, 0xe8, 0xee, 0xc9, 0xf3, 0x29, 0x57, 0x83, 0x8e, 0x52, 0x50, 0x53, 0x07,
		0x16, 0x8a, 0xc0, 0x4c, 0x05, 0x58, 0x91, 0x03, 0x37, 0x68, 0xcf, 0x4d, 0xed, 0xf3, 0x80, 0xea,
		0x62, 0x4f, 0x3b, 0xad, 0xd5, 0xa0, 0x64, 0x3d, 0x99, 0x03, 0xdd, 0x74, 0xec, 0xf1, 0xe0, 0x28,
		0x17, 0x6c, 0xba, 0x63, 0xe6, 0x1b, 0xa3, 0x9c, 0xe9, 0x13, 0xd2, 0x35, 0x86, 0x4e, 0xc8, 0x84,
		0xe6, 0x4b, 0xb1, 0x99, 0xb9, 0x24, 0x55, 0x87, 0xb2, 0x05, 0x49, 0x32, 0xdb, 0x08, 0x78, 0xd8,
		0x04, 0xb8, 0xd9, 0x00, 0x78, 0x51, 0x07, 0xee, 0x1c, 0x9f, 0x3b, 0x0f, 0xe0, 0xc9, 0xe1, 0xe5,
		0xba, 0xc4, 0x98, 0x83, 0x06, 0x93, 0xdd, 0xf2, 0xe8, 0x79, 0x0e, 0x31, 0x5c, 0x96, 0xfd, 0x32,
		0xd5, 0x8e, 0x15, 0xb9, 0xae, 0x21, 0x4e, 0xb0, 0xf7, 0xb5, 0xe7, 0x85, 0xba, 0x67, 0xea, 0xa6,
		0xd7, 0x1f, 0xc4, 0x38, 0xc7, 0xd2, 0x1d, 0x62, 0x74, 0xa3, 0x46, 0x47, 0xb2, 0xa0, 0x24, 0x85,
		0x96, 0xb6, 0x86, 0xe3, 0x4c, 0x01, 0xba, 0x45, 0x42, 0x62, 0x86, 0x7a, 0xe8, 0x1b, 0x6e, 0xd0,
		0x1f, 0x27, 0xf5, 0x63, 0xd5, 0x03, 0x6b, 0x9b, 0xce, 0x52, 0x2b, 0x54, 0xa0, 0x11, 0xa0, 0x11,
		0xa0, 0x11, 0xc4, 0x6b, 0x84, 0xa1, 0xed, 0x86, 0xfb, 0x55, 0x0e, 0x0a, 0x81, 0x21, 0x28, 0x9c,
		0x53, 0xee, 0x61, 0x0e, 0x7e, 0x38, 0x9e, 0xb9, 0x83, 0x93, 0x84, 0xaf, 0xbc, 0x5c, 0x49, 0xa2,
		0xd2, 0xb9, 0xf2, 0x4f, 0xd7, 0xca, 0xc1, 0x19, 0xc1, 0x35, 0x37, 0x6f, 0xb2, 0x14, 0xb5, 0xea,
		0x51, 0xed, 0xa8, 0x71, 0x50, 0x3d, 0xaa, 0x6f, 0xdf, 0x9a, 0x64, 0x64, 0x1e, 0xed, 0x48, 0x15,
		0x8c, 0x1c, 0xdd, 0x57, 0x1c, 0xdd, 0x55, 0x1c, 0xc3, 0x51, 0x6e, 0xce, 0x8e, 0xb5, 0xda, 0x61,
		0xa3, 0xda, 0x1c, 0xe7, 0xe0, 0xbb, 0x0d, 0x8d, 0x90, 0x38, 0x24, 0x08, 0xb4, 0x89, 0x41, 0x54,
		0x6b, 0x0d, 0x43, 0xef, 0x4d, 0xd0, 0x4f, 0xce, 0x63, 0x57, 0x78, 0xfb, 0x93, 0xe4, 0x84, 0xaf,
		0x50, 0x2c, 0x03, 0x4e, 0x30, 0x98, 0xde, 0x06, 0x02, 0xcc, 0x8d, 0x04, 0x97, 0xc5, 0xce, 0xeb,
		0xa6, 0x0d, 0x65, 0xc9, 0xe2, 0xa2, 0xc3, 0x07, 0x22, 0x07, 0x22, 0x07, 0x22, 0x07, 0xd3, 0x1e,
		0x04, 0xfe, 0xea, 0x6e, 0xf7, 0xc3, 0x21, 0xbb, 0xb0, 0x8f, 0x1a, 0x81, 0xc4, 0x84, 0xc4, 0x84,
		0xc4, 0x84, 0xe9, 0x2b, 0x4f, 0xa6, 0xaf, 0x4a, 0xf5, 0x10, 0xd6, 0x2f, 0x58, 0xbf, 0x60, 0xfd,
		0x82, 0xf5, 0x8b, 0x9b, 0xf5, 0xab, 0x5a, 0x6b, 0x94, 0x9b, 0x5a, 0x1c, 0x19, 0xe8, 0x92, 0x30,
		0x09, 0xca, 0xfd, 0x98, 0x44, 0xe3, 0x36, 0xb4, 0x9d, 0xf6, 0xf5, 0x73, 0x63, 0x57, 0xbb, 0x1d,
		0x10, 0xd3, 0xee, 0xda, 0x66, 0x0c, 0x2e, 0xef, 0xdd, 0xa4, 0xb9, 0x5b, 0x12, 0xef, 0x5a, 0xad,
		0x0e, 0xd3, 0x98, 0x20, 0xd3, 0x18, 0xcf, 0x35, 0xc2, 0xd9, 0xdf, 0x3a, 0x1a, 0xb5, 0x2d, 0xc1,
		0xb6, 0x93, 0xf8, 0xd4, 0x1c, 0x44, 0xda, 0xba, 0xc4, 0xee, 0x3d, 0x3d, 0x7a, 0x7e, 0x40, 0x1f,
		0x6c, 0x3b, 0x6b, 0x02, 0xf1, 0xb6, 0xc2, 0xd4, 0x05, 0xe2, 0x6d, 0x25, 0xc6, 0xdb, 0x4e, 0x77,
		0x34, 0xbb, 0x7d, 0x26, 0x69, 0x89, 0xcd, 0x48, 0x53, 0x81, 0x91, 0x06, 0x46, 0x1a, 0x15, 0x8c,
		0x34, 0xac, 0x17, 0xe3, 0x69, 0x6f, 0x7e, 0xac, 0xdd, 0x74, 0x54, 0x37, 0x41, 0x38, 0x1f, 0x43,
		0x6e, 0xc7, 0x91, 0xe7, 0xb1, 0xe4, 0x7e, 0x3c, 0x65, 0x10, 0x23, 0xe4, 0xbb, 0xc8, 0xc4, 0x32,
		0xc5, 0x2f, 0xdf, 0x85, 0x2d, 0x20, 0xdb, 0x05, 0xb7, 0x54, 0x08, 0x9c, 0x93, 0x68, 0x23, 0xa7,
		0x04, 0x72, 0x4a, 0xc8, 0x12, 0x0f, 0x7c, 0xc4, 0x04, 0x27, 0x71, 0x91, 0x0c, 0x94, 0x7b, 0xd2,
		0x6b, 0xd1, 0xf5, 0xa4, 0x44, 0xd4, 0x8b, 0x12, 0x56, 0x0f, 0x0a, 0xf5, 0x9e, 0x0a, 0x50, 0xef,
		0xa9, 0xc3, 0x73, 0xa3, 0x89, 0xac, 0xd7, 0x84, 0x7a, 0x4c, 0x85, 0xa8, 0xc7, 0xd4, 0xd9, 0x8a,
		0xcc, 0xe1, 0xdc, 0x6d, 0xd9, 0xfc, 0xf5, 0x2c, 0x0f, 0x67, 0xf1, 0xb8, 0x24, 0xbc, 0xf1, 0x4a,
		0xfc, 0x44, 0x17, 0x72, 0x47, 0xd7, 0x2b, 0xde, 0x01, 0xb4, 0x0d, 0xb4, 0x0d, 0xb4, 0x9d, 0x3b,
		0xb4, 0x7d, 0x61, 0xb8, 0x96, 0x11, 0x7a, 0xfe, 0x2b, 0xc7, 0xb4, 0x88, 0xe2, 0x10, 0xfc, 0xe0,
		0xe9, 0x35, 0x00, 0x82, 0x9f, 0xd7, 0xf9, 0x8b, 0x50, 0xa2, 0x3a, 0xda, 0xfd, 0x3f, 0xbb, 0xff,
		0x77, 0x3b, 0xa1, 0xe6, 0xfb, 0xf3, 0x02, 0x4c, 0x54, 0x40, 0x4c, 0x84, 0xba, 0x00, 0xab, 0xe3,
		0x05, 0x12, 0x17, 0x7b, 0xf2, 0x13, 0x55, 0x08, 0x01, 0xbf, 0xf9, 0x66, 0x98, 0x6b, 0x1e, 0x36,
		0x60, 0x7e, 0xb6, 0x5f, 0x4e, 0x28, 0x14, 0xae, 0x9d, 0x5c, 0xa1, 0x4b, 0xb8, 0x76, 0xe4, 0x23,
		0x3c, 0x01, 0x85, 0x08, 0x79, 0x16, 0x1e, 0x5c, 0x51, 0x68, 0xd0, 0x1e, 0xa8, 0x28, 0x3e, 0xc7,
		0xe5, 0x79, 0xb9, 0x49, 0xd0, 0x71, 0x73, 0x39, 0xf3, 0x8f, 0x57, 0x21, 0x44, 0x21, 0x44, 0x15,
		0x12, 0xa2, 0xf0, 0x8f, 0xc3, 0x62, 0x07, 0x8b, 0x1d, 0x2c, 0x76, 0xb9, 0xb1, 0xae, 0xc1, 0x3f,
		0x0e, 0xff, 0x38, 0xfc, 0xe3, 0x92, 0x8d, 0x96, 0xd8, 0x6e, 0xf0, 0x8f, 0x73, 0x33, 0x85, 0x72,
		0x20, 0x1a, 0x76, 0x30, 0xa9, 0x02, 0x2f, 0x00, 0x53, 0x26, 0x4d, 0x03, 0x5a, 0x02, 0x5a, 0x02,
		0x5a, 0x6e, 0x11, 0xb4, 0x64, 0xcf, 0x37, 0xb4, 0x16, 0x55, 0x56, 0x10, 0x9b, 0x93, 0xce, 0xd2,
		0x8a, 0xd8, 0x1c, 0x88, 0x63, 0x88, 0x63, 0x05, 0xc4, 0x31, 0x62, 0x73, 0x10, 0x9b, 0x53, 0x14,
		0x9a, 0xab, 0x62, 0x6c, 0x4e, 0x2e, 0x20, 0xc1, 0x34, 0x76, 0x43, 0xe7, 0xe3, 0xc2, 0x5b, 0x3a,
		0xb6, 0x0b, 0xed, 0x03, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x6c, 0x11, 0x33, 0x23, 0xee, 0xb0, 0x4f,
		0xb8, 0xe5, 0x7e, 0x5f, 0xd2, 0xda, 0x35, 0x8e, 0x6d, 0x9e, 0xba, 0xc3, 0x3e, 0xff, 0x53, 0x70,
		0xe7, 0xdd, 0x86, 0xbe, 0xed, 0xf6, 0x84, 0xd4, 0x43, 0x2e, 0x95, 0xe3, 0xc2, 0xa4, 0x97, 0xc7,
		0x57, 0x17, 0xd7, 0xe7, 0xa7, 0x77, 0xa7, 0x22, 0xca, 0x39, 0x57, 0xe2, 0x3c, 0x5a, 0xa7, 0xad,
		0xe3, 0x3f, 0x5b, 0x9f, 0xcf, 0x85, 0xbc, 0xa1, 0x1a, 0xbd, 0xe1, 0xf6, 0xae, 0x25, 0xa6, 0xf5,
		0xfd, 0xa8, 0xf5, 0x93, 0xd3, 0xf3, 0xd6, 0xdf, 0x22, 0x5a, 0xaf, 0x45, 0xad, 0x5f, 0xdf, 0x5c,
		0x7d, 0x3e, 0xe5, 0x5b, 0x64, 0x79, 0xf4, 0x91, 0xf7, 0x36, 0x6c, 0x33, 0x14, 0x6a, 0xfc, 0x6d,
		0xd3, 0xe3, 0xb9, 0x6d, 0x6a, 0xfb, 0x02, 0xa6, 0x77, 0x6e, 0x6b, 0x73, 0xd3, 0xce, 0x6f, 0x35,
		0x75, 0xbc, 0x74, 0x4d, 0xad, 0x26, 0xa0, 0xed, 0xd9, 0xa1, 0xe1, 0x46, 0xb0, 0xde, 0x2a, 0xee,
		0xf8, 0xc8, 0x34, 0xb5, 0x6a, 0x4e, 0x8b, 0x71, 0xe7, 0x4b, 0xc7, 0x71, 0xcc, 0x47, 0xb9, 0xd4,
		0x36, 0xbf, 0xfc, 0x94, 0x8b, 0xff, 0x04, 0x9c, 0xd7, 0x85, 0xea, 0x2d, 0x95, 0xa6, 0x76, 0x39,
		0x01, 0xe9, 0xda, 0x89, 0x1d, 0x98, 0xde, 0x33, 0xf1, 0x5f, 0x27, 0x35, 0xe4, 0xb5, 0xe7, 0x85,
		0x14, 0x89, 0xe3, 0xa4, 0x88, 0xd3, 0x7c, 0x88, 0x07, 0x9f, 0xf6, 0x3f, 0x55, 0x45, 0x48, 0x55,
		0x41, 0x90, 0x74, 0x15, 0x34, 0xe5, 0x9d, 0xd7, 0x52, 0x3a, 0x4a, 0x5d, 0x89, 0x56, 0x79, 0xad,
		0x2d, 0xf7, 0x9e, 0x8e, 0x72, 0x2a, 0xab, 0x8a, 0xc4, 0xe9, 0x3d, 0xdf, 0xee, 0xf1, 0x4c, 0xa0,
		0x9d, 0x30, 0xcf, 0x71, 0xbb, 0xe0, 0xf0, 0xe0, 0xf0, 0xe0, 0xf0, 0x5b, 0xc4, 0xe1, 0x13, 0x1b,
		0x1e, 0x57, 0x01, 0x00, 0x1e, 0xbf, 0xc8, 0xe3, 0xaf, 0xee, 0xfe, 0x3c, 0xbd, 0x11, 0x46, 0xe1,
		0x6f, 0xef, 0x5a, 0x77, 0xed, 0x63, 0x61, 0xfc, 0xfd, 0xe4, 0xef, 0xcb, 0xd6, 0x45, 0xfb, 0x78,
		0x7b, 0x59, 0xf0, 0x64, 0xfc, 0xcc, 0x17, 0x45, 0x56, 0xb6, 0x3e, 0xde, 0x1a, 0x62, 0x28, 0xf0,
		0x64, 0x63, 0x34, 0xb5, 0x4a, 0xb1, 0x79, 0x24, 0xae, 0x02, 0xbf, 0x69, 0x4f, 0xec, 0x55, 0xe0,
		0xb1, 0xbb, 0x27, 0xab, 0xab, 0x6c, 0x52, 0xf3, 0xcb, 0xfe, 0x87, 0xbc, 0x32, 0x5d, 0x69, 0x29,
		0x9d, 0xdb, 0x41, 0xd8, 0x0a, 0x43, 0xc6, 0x2c, 0xb5, 0x17, 0xb6, 0x7b, 0xea, 0x90, 0x08, 0xea,
		0x30, 0x16, 0x3f, 0x29, 0x5d, 0x18, 0x2f, 0x73, 0x2d, 0x55, 0x0e, 0x6b, 0xb5, 0xc6, 0x41, 0xad,
		0x56, 0x3e, 0xd8, 0x3f, 0x28, 0x1f, 0xd5, 0xeb, 0x95, 0x46, 0x85, 0xa1, 0x64, 0x4b, 0xe9, 0xca,
		0xb7, 0x88, 0x4f, 0xac, 0xcf, 0xd1, 0x9c, 0xb9, 0x43, 0xc7, 0xe1, 0xd1, 0xd4, 0x97, 0x20, 0x8e,
		0x27, 0xa5, 0xaf, 0xce, 0x92, 0x75, 0x9d, 0x03, 0xa1, 0x67, 0xb1, 0xc4, 0x74, 0xb1, 0xd3, 0x1f,
		0x9a, 0xa1, 0x3b, 0x01, 0x82, 0xed, 0xe9, 0x6b, 0x1f, 0x6e, 0xe2, 0xd7, 0x7e, 0x75, 0x0c, 0xf7,
		0xa1, 0x3d, 0x78, 0x6e, 0x3c, 0x4c, 0xad, 0x0c, 0x25, 0x54, 0x65, 0x10, 0xb4, 0x9c, 0x79, 0x28,
		0xcc, 0x30, 0x0e, 0xaf, 0xd6, 0x0d, 0xeb, 0x99, 0xf8, 0xa1, 0x1d, 0x90, 0x09, 0xaf, 0xa2, 0xac,
		0xd1, 0xb0, 0xb2, 0x35, 0x94, 0x6b, 0x10, 0x46, 0xf2, 0x51, 0xae, 0x41, 0x62, 0xb9, 0x06, 0xc6,
		0x9c, 0xf1, 0x7c, 0x72, 0xc5, 0xa3, 0x54, 0x83, 0x00, 0x1b, 0x19, 0x4a, 0x35, 0x88, 0xc3, 0x53,
		0xcc, 0xa5, 0x1a, 0xc6, 0x85, 0xc6, 0xf9, 0x65, 0xa2, 0x98, 0xb4, 0xc7, 0x7a, 0x15, 0x9f, 0x43,
		0xfd, 0xf2, 0xa4, 0x31, 0xfa, 0x3a, 0xe6, 0xd3, 0x7f, 0x1d, 0xa4, 0x27, 0x12, 0x2e, 0x6d, 0x78,
		0x4b, 0x1d, 0x61, 0xd2, 0x47, 0x98, 0x14, 0x12, 0x21, 0x8d, 0xf2, 0x61, 0x89, 0xe1, 0x9f, 0x9e,
		0x88, 0xdf, 0xfd, 0x25, 0x4e, 0xf7, 0x96, 0xf2, 0x66, 0xac, 0x12, 0x96, 0x28, 0x30, 0xa3, 0x74,
		0x73, 0x11, 0xe1, 0x7b, 0x36, 0x1c, 0x8e, 0x49, 0xe7, 0xa6, 0x2d, 0x42, 0xb6, 0x43, 0xb6, 0x43,
		0xb6, 0xe7, 0x48, 0xb6, 0x33, 0x57, 0x76, 0x5f, 0x3c, 0x9b, 0x3c, 0x12, 0xcf, 0xf1, 0xa9, 0xf4,
		0x3e, 0xfd, 0xc7, 0xd1, 0xe7, 0xcc, 0xb3, 0xf2, 0x7b, 0xd2, 0xe8, 0xb4, 0xe6, 0x38, 0x67, 0xef,
		0x99, 0xb0, 0x92, 0xe3, 0xb3, 0x3d, 0xc4, 0xbb, 0xf4, 0x38, 0xa7, 0x63, 0xf2, 0x76, 0xc9, 0x8c,
		0x17, 0x71, 0x4b, 0xc6, 0xbb, 0x4c, 0x7c, 0x11, 0xd6, 0x2e, 0x27, 0xee, 0xd0, 0x0e, 0x10, 0x66,
		0x7e, 0x11, 0xa6, 0x63, 0x77, 0x49, 0x68, 0xf7, 0x39, 0x9a, 0x42, 0x92, 0x16, 0x81, 0x30, 0x81,
		0x30, 0x81, 0x30, 0x81, 0x30, 0x81, 0x30, 0x81, 0x30, 0x81, 0x30, 0x81, 0x30, 0x81, 0x30, 0xb7,
		0x12, 0x61, 0xf6, 0x0d, 0xd7, 0xe8, 0x11, 0x8b, 0x1f, 0xc0, 0x9c, 0x36, 0x98, 0x27, 0x67, 0x5b,
		0x7c, 0xae, 0xe0, 0x6d, 0x03, 0x5e, 0x06, 0x5e, 0x2e, 0x0e, 0x5e, 0x2e, 0x9c, 0xb7, 0x4d, 0xc0,
		0xd5, 0x66, 0x01, 0x57, 0x9a, 0x05, 0xdc, 0x4c, 0xba, 0x39, 0x3b, 0x7e, 0xe7, 0x96, 0xeb, 0x73,
		0xe3, 0xa3, 0x16, 0x4c, 0xae, 0xb4, 0xd6, 0xb8, 0x5e, 0x56, 0x96, 0x71, 0xe7, 0x4e, 0xd4, 0xe5,
		0x64, 0xb9, 0xd7, 0xee, 0xd2, 0xaf, 0x12, 0x90, 0x2c, 0x90, 0xac, 0x44, 0x24, 0xeb, 0x59, 0x1c,
		0xed, 0xa4, 0x71, 0x6b, 0x79, 0xc2, 0xb0, 0xad, 0xf3, 0x73, 0x20, 0x58, 0x20, 0x58, 0x20, 0xd8,
		0xe2, 0x20, 0x58, 0xbe, 0x59, 0xd5, 0x78, 0xde, 0xc2, 0xe6, 0x7b, 0xfb, 0x5a, 0xcc, 0xad, 0xeb,
		0xf1, 0x6d, 0xeb, 0x48, 0x2c, 0x72, 0x44, 0x83, 0xf1, 0x1d, 0xeb, 0x93, 0xf6, 0x6d, 0xeb, 0xf3,
		0xf9, 0xe9, 0xc3, 0x97, 0xcb, 0xdb, 0xab, 0xf3, 0xf6, 0x71, 0xfb, 0xee, 0xf4, 0xe4, 0xe1, 0xa6,
		0x55, 0xca, 0x57, 0x9e, 0x00, 0xee, 0x77, 0xa0, 0xe3, 0xa9, 0xe4, 0x6a, 0xde, 0x5c, 0x37, 0x91,
		0xbc, 0xee, 0x28, 0xab, 0x7e, 0x17, 0x18, 0x84, 0x6f, 0xf3, 0xb4, 0x46, 0xa0, 0x7c, 0xb9, 0xa4,
		0x7c, 0xcb, 0xeb, 0x04, 0xd2, 0x07, 0xd2, 0x27, 0x8f, 0xf4, 0x79, 0xe1, 0x13, 0xf1, 0x75, 0xc6,
		0x6b, 0x7a, 0xcb, 0x34, 0x60, 0xbe, 0x55, 0x38, 0x32, 0x40, 0x03, 0x41, 0x03, 0x41, 0x03, 0x85,
		0xd1, 0x40, 0x38, 0x32, 0xb6, 0x07, 0xd7, 0xc2, 0x91, 0xa1, 0x02, 0xaa, 0x85, 0x23, 0x03, 0x98,
		0x36, 0x3b, 0x4c, 0x1b, 0x0c, 0x07, 0x03, 0x2e, 0x55, 0xdd, 0x12, 0xb9, 0x94, 0xb4, 0x08, 0x2c,
		0x0b, 0x2c, 0x0b, 0x2c, 0x0b, 0x2c, 0x0b, 0x2c, 0x9b, 0x25, 0x96, 0x0d, 0x42, 0x23, 0x1c, 0x06,
		0x79, 0x06, 0xb2, 0x16, 0x19, 0xf8, 0xc4, 0x34, 0x42, 0xe6, 0x38, 0x4e, 0xd9, 0x08, 0x75, 0x32,
		0xb5, 0x2a, 0xc3, 0xd3, 0xb9, 0xb9, 0x07, 0xee, 0x04, 0xee, 0x94, 0xf1, 0x64, 0x81, 0x12, 0x67,
		0xae, 0x4a, 0x47, 0xb8, 0x37, 0xb1, 0xe4, 0xca, 0xca, 0x6a, 0x49, 0x91, 0x14, 0x70, 0x8c, 0x80,
		0x48, 0xc0, 0x9e, 0x6a, 0x2e, 0x69, 0x09, 0xc9, 0xe6, 0x90, 0x6c, 0x2e, 0x13, 0x6c, 0xab, 0x58,
		0xb2, 0xb9, 0x01, 0x1f, 0xd2, 0xb5, 0x70, 0x00, 0x39, 0xdd, 0xaf, 0xae, 0x80, 0x9a, 0x82, 0x9a,
		0x6e, 0x23, 0x35, 0x65, 0x3d, 0xd6, 0x49, 0x43, 0x9c, 0x7c, 0xc3, 0x4b, 0x9b, 0x97, 0x8b, 0x77,
		0x98, 0xf3, 0x71, 0xe7, 0x7e, 0xec, 0x45, 0x1c, 0x7f, 0x61, 0x62, 0x40, 0x26, 0xcf, 0x44, 0x19,
		0x25, 0x41, 0x14, 0x93, 0xd3, 0x7e, 0xe5, 0x25, 0x3e, 0x92, 0x06, 0x2d, 0x3b, 0x30, 0x1e, 0x1d,
		0xc2, 0x98, 0x35, 0x7d, 0x73, 0x03, 0xcc, 0xca, 0xd7, 0x71, 0xde, 0x0d, 0x7c, 0x6b, 0xb7, 0x09,
		0x13, 0x3e, 0x22, 0x85, 0x90, 0x70, 0x61, 0x24, 0x5a, 0x28, 0x49, 0x13, 0x4e, 0xd2, 0x84, 0x94,
		0x0c, 0x61, 0xc5, 0x57, 0x68, 0x71, 0x16, 0x5e, 0xc9, 0x04, 0x70, 0xaf, 0x05, 0xb7, 0xb4, 0xdb,
		0xf9, 0x99, 0xeb, 0xd7, 0x22, 0x9a, 0x4a, 0xae, 0xa7, 0x98, 0xb3, 0x49, 0x50, 0x9e, 0x89, 0x50,
		0xdc, 0x4e, 0xe6, 0x99, 0xf2, 0x25, 0x51, 0x63, 0xc3, 0xd0, 0x1b, 0x03, 0xe6, 0xa1, 0x2f, 0x66,
		0xb6, 0x97, 0x35, 0xe7, 0xd2, 0x2b, 0xa1, 0x3d, 0xa1, 0x3d, 0xa1, 0x3d, 0xa1, 0x3d, 0xa1, 0x3d,
		0x79, 0xf5, 0x52, 0x60, 0x31, 0xfe, 0xe4, 0x1d, 0xe2, 0x8a, 0xf2, 0x4f, 0xff, 0x89, 0x11, 0x29,
		0x1a, 0x4b, 0x60, 0x68, 0xe3, 0x53, 0x45, 0x90, 0x00, 0x92, 0x21, 0x4d, 0x57, 0x49, 0x55, 0xd1,
		0x05, 0xfa, 0xa5, 0x0b, 0xd8, 0x95, 0x82, 0x96, 0x66, 0x9d, 0x85, 0xf5, 0x6e, 0xf4, 0x41, 0x8d,
		0x56, 0x3b, 0x60, 0x08, 0xdb, 0xcb, 0x10, 0xc6, 0xa5, 0x99, 0x74, 0xcf, 0x75, 0x6c, 0xf7, 0xbb,
		0x38, 0x56, 0xf0, 0xf6, 0x35, 0x60, 0x02, 0x60, 0x02, 0x60, 0x02, 0x60, 0x02, 0x60, 0x02, 0x60,
		0x02, 0x60, 0x02, 0x60, 0x02, 0x60, 0x02, 0x60, 0x02, 0x60, 0x02, 0x19, 0x33, 0x81, 0x41, 0x2c,
		0x18, 0xfc, 0x68, 0xd4, 0xbc, 0xaa, 0x9e, 0xac, 0x95, 0xc2, 0x2b, 0xde, 0x05, 0x4e, 0x00, 0x4e,
		0x00, 0x4e, 0x00, 0x4e, 0xc0, 0x6d, 0xb7, 0x73, 0xab, 0xe7, 0xb2, 0x4e, 0xb6, 0x1c, 0x08, 0x68,
		0x9a, 0x6f, 0xbd, 0x17, 0x89, 0xf8, 0x5a, 0x44, 0x3d, 0x98, 0xa5, 0x97, 0x08, 0xaa, 0x0f, 0xb3,
		0xf4, 0x1e, 0xd1, 0x35, 0x47, 0x96, 0xf7, 0xac, 0xa8, 0x1a, 0x24, 0x82, 0x8f, 0xf1, 0xdb, 0x2d,
		0x60, 0xbc, 0xc8, 0xdb, 0x02, 0xa2, 0xea, 0xcd, 0x6c, 0xd3, 0x5e, 0x00, 0x2b, 0x81, 0xe5, 0x25,
		0xcf, 0x96, 0x97, 0x2a, 0x2c, 0x2f, 0x5b, 0x61, 0x79, 0xa9, 0xc2, 0xf2, 0x02, 0xcb, 0xcb, 0x96,
		0x5b, 0x5e, 0x04, 0x70, 0x7f, 0xbe, 0x37, 0x22, 0x61, 0x61, 0x81, 0x85, 0x05, 0x16, 0x16, 0x58,
		0x58, 0xe6, 0x76, 0xbb, 0x3d, 0x78, 0x6e, 0xe8, 0xc2, 0xb6, 0x4b, 0xe2, 0x79, 0x3d, 0x14, 0xd0,
		0xf6, 0xb5, 0x11, 0x86, 0xc4, 0x77, 0x85, 0xe1, 0xe9, 0xd2, 0xce, 0xce, 0xb7, 0xb2, 0x7e, 0x64,
		0xe8, 0xdd, 0x96, 0x7e, 0xd6, 0xf9, 0x59, 0xf9, 0x58, 0x1b, 0x35, 0x77, 0x7f, 0x1e, 0x8c, 0x16,
		0x3f, 0xfc, 0xb5, 0xea, 0x6b, 0x95, 0x8f, 0x07, 0xa3, 0xe6, 0x9a, 0xbf, 0x34, 0x46, 0xcd, 0x0d,
		0xdb, 0xa8, 0x8f, 0x76, 0x96, 0xbe, 0x1a, 0x7d, 0x5e, 0x5d, 0xf7, 0x40, 0x6d, 0xcd, 0x03, 0xfb,
		0xeb, 0x1e, 0xd8, 0x5f, 0xf3, 0xc0, 0xda, 0x2e, 0x55, 0xd7, 0x3c, 0x50, 0x1f, 0xfd, 0x5a, 0xfa,
		0xfe, 0xce, 0xea, 0xaf, 0x36, 0x46, 0xbb, 0xbf, 0xd6, 0xfd, 0xed, 0x60, 0xf4, 0xab, 0xb9, 0xbb,
		0xbb, 0xb7, 0x53, 0xa9, 0x7e, 0x2b, 0xeb, 0x87, 0x9d, 0x5f, 0x95, 0x6f, 0x65, 0xbd, 0xd2, 0x89,
		0xbe, 0xd9, 0xf9, 0xf5, 0xad, 0xa2, 0x1f, 0x4d, 0x7f, 0x8c, 0xfe, 0xbb, 0xcb, 0x5f, 0x1c, 0x74,
		0x44, 0xec, 0xd3, 0xab, 0xdb, 0xf6, 0x5f, 0xc2, 0x37, 0xeb, 0x3f, 0xd8, 0xad, 0x39, 0xdf, 0xad,
		0xff, 0x2a, 0x81, 0x72, 0x80, 0x72, 0xf0, 0xa3, 0x1c, 0xcf, 0x86, 0x63, 0xcb, 0x70, 0xf4, 0x2e,
		0xbc, 0x07, 0x14, 0x04, 0x14, 0x04, 0x14, 0x04, 0x14, 0x84, 0xdb, 0x6e, 0x87, 0x93, 0x77, 0xe9,
		0x1f, 0x9c, 0xbc, 0x9b, 0xbd, 0x07, 0x4e, 0x5e, 0xaa, 0x2d, 0x00, 0x27, 0xaf, 0x5a, 0x7b, 0x01,
		0x0e, 0x10, 0x0e, 0xcb, 0x05, 0x27, 0xef, 0x86, 0xfa, 0x18, 0x4e, 0x5e, 0x38, 0x79, 0xe1, 0xe4,
		0x85, 0xc5, 0xa5, 0x20, 0x16, 0x97, 0x5c, 0xe5, 0xd4, 0x13, 0xb4, 0x40, 0xc2, 0xb3, 0x7f, 0x4f,
		0x33, 0x62, 0x4f, 0x7e, 0x60, 0xca, 0x06, 0xce, 0x7f, 0x85, 0x38, 0xac, 0x0e, 0x6f, 0x07, 0xbe,
		0x18, 0xc7, 0x3d, 0x67, 0x6b, 0x19, 0x72, 0x9c, 0x22, 0xc7, 0xa9, 0x6c, 0xab, 0x57, 0xbe, 0xe4,
		0x31, 0x77, 0xeb, 0x56, 0xb2, 0x5b, 0x23, 0xbd, 0xe8, 0x93, 0x2e, 0xcf, 0xfd, 0x3a, 0x75, 0xa6,
		0x73, 0xb4, 0x67, 0x95, 0xae, 0x27, 0x2a, 0xe3, 0xd3, 0xa7, 0x89, 0x4c, 0x9f, 0x48, 0xf8, 0x22,
		0x89, 0xf6, 0x20, 0x34, 0x42, 0xc2, 0x5f, 0xb2, 0x8f, 0x9b, 0xcd, 0x79, 0xf2, 0xea, 0x2a, 0x04,
		0x3b, 0x04, 0xfb, 0x16, 0x0a, 0x76, 0x24, 0xaf, 0x96, 0x8e, 0x26, 0x85, 0xa1, 0x4a, 0x91, 0x42,
		0x48, 0xb8, 0x30, 0x92, 0x65, 0xc7, 0x82, 0xef, 0x35, 0x7b, 0x03, 0x11, 0x92, 0xee, 0xac, 0x40,
		0x34, 0x15, 0xe4, 0x68, 0x16, 0xaa, 0x20, 0x90, 0xa3, 0x19, 0x4a, 0x02, 0x4a, 0x02, 0x4a, 0x02,
		0x4a, 0x42, 0xd8, 0x14, 0xc3, 0x75, 0xbc, 0xe1, 0x4e, 0x41, 0x66, 0x36, 0xb8, 0x8e, 0x91, 0x99,
		0x6d, 0xcd, 0xbf, 0x0e, 0x52, 0x11, 0xf3, 0x92, 0x33, 0x48, 0x45, 0x0c, 0xc0, 0x0b, 0xc0, 0x0b,
		0xc0, 0x0b, 0xc0, 0x0b, 0xc0, 0x0b, 0xc0, 0x0b, 0xc0, 0x0b, 0xc0, 0x0b, 0xc0, 0x9b, 0x0d, 0xe0,
		0x45, 0xc6, 0x5d, 0x40, 0x5f, 0x40, 0x5f, 0x40, 0xdf, 0xa2, 0x40, 0x5f, 0x5c, 0xc6, 0x94, 0x09,
		0x23, 0x71, 0x19, 0x93, 0x69, 0xcf, 0xe2, 0x32, 0x66, 0xca, 0x2d, 0x80, 0xcb, 0x98, 0x00, 0xdf,
		0x30, 0x30, 0x14, 0xdb, 0xc0, 0x80, 0xcb, 0x98, 0xdb, 0x61, 0x60, 0xc0, 0x65, 0xcc, 0xad, 0x31,
		0x30, 0x20, 0xb1, 0x2c, 0x0c, 0x09, 0x30, 0x24, 0xc0, 0x90, 0xa0, 0x92, 0x21, 0x01, 0x89, 0x65,
		0xd7, 0xbf, 0x00, 0xa9, 0x3a, 0x91, 0x58, 0x96, 0xc7, 0x3e, 0x45, 0x62, 0x59, 0xec, 0x56, 0x25,
		0x12, 0xcb, 0x22, 0x7f, 0x2a, 0x5c, 0x76, 0x40, 0xda, 0x40, 0xda, 0x40, 0xda, 0x02, 0x76, 0x3b,
		0x5c, 0x76, 0x32, 0x0d, 0xb3, 0x70, 0xd9, 0x31, 0xed, 0x59, 0xb8, 0xec, 0x52, 0x6e, 0x01, 0xb8,
		0xec, 0x72, 0xa6, 0x20, 0xc4, 0xb5, 0x0a, 0x97, 0x1d, 0x5c, 0x76, 0x9a, 0x6a, 0x98, 0x75, 0x15,
		0x76, 0x85, 0xcb, 0x0e, 0x2e, 0x3b, 0xd5, 0x0c, 0x0b, 0x48, 0x13, 0x2a, 0x20, 0x4d, 0xe8, 0x38,
		0x45, 0x5a, 0x5e, 0x52, 0xc9, 0x7d, 0xc8, 0x70, 0x69, 0x23, 0xf1, 0xc8, 0x8d, 0xd6, 0x97, 0xce,
		0xed, 0x20, 0x6c, 0x85, 0x21, 0x9f, 0x14, 0x57, 0x11, 0xa5, 0x39, 0x75, 0xe2, 0x05, 0xe4, 0x04,
		0xfb, 0x22, 0x84, 0x3c, 0xd7, 0x62, 0xe5, 0xb0, 0x56, 0x6b, 0x1c, 0xd4, 0x6a, 0xe5, 0x83, 0xfd,
		0x83, 0xf2, 0x51, 0xbd, 0x5e, 0x69, 0x54, 0x38, 0x80, 0xd9, 0xd2, 0x95, 0x6f, 0x11, 0x9f, 0x58,
		0x9f, 0xa3, 0x79, 0x75, 0x87, 0x8e, 0xc3, 0xb3, 0xc9, 0x2f, 0x01, 0xf1, 0xb9, 0xe0, 0x52, 0xd6,
		0x6d, 0xc3, 0x59, 0x12, 0xc8, 0x96, 0x00, 0x25, 0x2e, 0xe9, 0x1b, 0xfd, 0xa1, 0x19, 0xba, 0x13,
		0x74, 0xd5, 0x9e, 0x76, 0xe8, 0xe1, 0x26, 0xee, 0xd0, 0x57, 0xc7, 0x70, 0x1f, 0xda, 0x83, 0xe7,
		0xc6, 0xf8, 0x77, 0xbf, 0x35, 0xdf, 0x9d, 0x87, 0x6b, 0x0e, 0xc9, 0x2c, 0xe9, 0xe5, 0x06, 0xdd,
		0x93, 0x94, 0x5b, 0x86, 0xd7, 0x56, 0x91, 0xb6, 0x45, 0xe8, 0x56, 0x25, 0xfd, 0x9c, 0x52, 0xcc,
		0x27, 0x63, 0xca, 0x50, 0x2e, 0x29, 0x42, 0x19, 0x53, 0x82, 0x32, 0xa7, 0x00, 0xe5, 0x61, 0xa9,
		0xe7, 0x66, 0x91, 0xe7, 0xc5, 0x62, 0xb8, 0x5b, 0xd8, 0xb9, 0x53, 0x10, 0x9e, 0x16, 0x73, 0xb9,
		0xf2, 0x87, 0x35, 0xe5, 0xe6, 0x24, 0xab, 0x03, 0xfb, 0x1a, 0xbf, 0xcd, 0x12, 0xc1, 0xba, 0xc0,
		0x27, 0xa4, 0x6b, 0x0c, 0x9d, 0x90, 0x8b, 0x45, 0xa2, 0x14, 0xed, 0x0f, 0x36, 0x6d, 0xd4, 0x61,
		0xc5, 0xa1, 0x5c, 0xfc, 0x85, 0xdc, 0xfc, 0x83, 0x3c, 0xfd, 0x81, 0xdc, 0xfd, 0x7f, 0xbc, 0x6d,
		0x27, 0xc2, 0xfc, 0x7b, 0xc2, 0x0c, 0x21, 0x22, 0xfc, 0x77, 0xd9, 0xf2, 0x30, 0x6e, 0xfe, 0x38,
		0x01, 0xd9, 0x22, 0x38, 0x65, 0x87, 0x60, 0x00, 0xac, 0x0c, 0x1a, 0x3a, 0x86, 0x81, 0xcf, 0x86,
		0xc3, 0x4f, 0x7e, 0x27, 0x2d, 0x42, 0xe4, 0x41, 0xe4, 0x41, 0xe4, 0xe5, 0x48, 0xe4, 0x71, 0x0b,
		0x39, 0xe0, 0x18, 0x62, 0xc0, 0x39, 0xa4, 0x80, 0xa3, 0xd5, 0x55, 0x44, 0xc8, 0x80, 0xa8, 0x10,
		0x01, 0xe1, 0x6e, 0x60, 0x71, 0x6e, 0x5f, 0x9e, 0xb1, 0x81, 0x22, 0x5c, 0xfc, 0xc2, 0x5d, 0xfa,
		0x2a, 0xaf, 0x5d, 0x4e, 0x7c, 0x04, 0x1d, 0x05, 0x81, 0x17, 0xb7, 0x08, 0xd6, 0x59, 0xed, 0x22,
		0x3e, 0xb1, 0xaa, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5e, 0x00,
		0x5e, 0x00, 0x5e, 0x45, 0x03, 0x5e, 0x7d, 0xc3, 0x35, 0x7a, 0xc4, 0xe2, 0x87, 0xbb, 0xa6, 0x0d,
		0xe6, 0xc9, 0x63, 0x11, 0x6f, 0x37, 0xb8, 0x2c, 0x00, 0x23, 0x01, 0x23, 0x8b, 0x03, 0x23, 0xf3,
		0xe7, 0xb2, 0x60, 0x9c, 0x22, 0x01, 0xc1, 0xe9, 0x02, 0x82, 0xd1, 0x05, 0xd4, 0x4e, 0x4d, 0x1b,
		0x84, 0x5c, 0x55, 0xac, 0xce, 0xaa, 0xa8, 0x50, 0x72, 0xb9, 0xa5, 0x56, 0xd3, 0xaf, 0x12, 0x00,
		0x5e, 0x1e, 0x00, 0x9e, 0x67, 0x71, 0xb4, 0xaa, 0xc5, 0xad, 0xe5, 0x09, 0xda, 0xb5, 0xce, 0xcf,
		0x01, 0xec, 0x00, 0xec, 0x00, 0xec, 0x8a, 0x03, 0xec, 0x88, 0x3b, 0xec, 0x13, 0x6e, 0x75, 0x40,
		0x13, 0x70, 0x57, 0xe3, 0xd0, 0xd6, 0xa9, 0x3b, 0xec, 0xf3, 0xdb, 0xbd, 0x77, 0xde, 0x6d, 0xe8,
		0xdb, 0x6e, 0x8f, 0xef, 0xfd, 0x98, 0x72, 0x34, 0x87, 0x91, 0x58, 0xe4, 0x08, 0x92, 0x2a, 0x51,
		0x9b, 0x27, 0xed, 0xdb, 0xd6, 0xe7, 0xf3, 0xd3, 0x87, 0x2f, 0x97, 0xb7, 0x57, 0xe7, 0xed, 0xe3,
		0xf6, 0xdd, 0xe9, 0xc9, 0xc3, 0x4d, 0xab, 0x94, 0xab, 0x4b, 0x47, 0x77, 0x5e, 0x9b, 0x73, 0x45,
		0xf3, 0x78, 0x2a, 0xb9, 0x1a, 0xc3, 0xd6, 0x4d, 0x64, 0x53, 0xab, 0xe0, 0x96, 0x11, 0x78, 0xd0,
		0xef, 0x10, 0xb6, 0xf6, 0x4c, 0xfc, 0x20, 0x82, 0xd7, 0x0d, 0x6d, 0x27, 0xc2, 0xdb, 0xbb, 0x60,
		0x42, 0xb9, 0x64, 0x42, 0xcb, 0xeb, 0x04, 0x2e, 0x94, 0x03, 0x2e, 0xe4, 0x85, 0x4f, 0xc4, 0xd7,
		0xcd, 0x29, 0xd4, 0xe6, 0xc4, 0x89, 0xde, 0xb4, 0x0a, 0xb3, 0x37, 0xd8, 0x11, 0xd8, 0x11, 0xd8,
		0x91, 0x30, 0x76, 0x04, 0xb3, 0xf7, 0xf6, 0xc0, 0x3d, 0x98, 0xbd, 0x55, 0x00, 0x7b, 0x30, 0x7b,
		0xe7, 0x10, 0xea, 0x05, 0xc3, 0xc1, 0xc0, 0x27, 0x41, 0xc0, 0x0f, 0xe6, 0x25, 0x2d, 0x02, 0xe2,
		0x01, 0xe2, 0x01, 0xe2, 0x01, 0xe2, 0x01, 0xe2, 0x65, 0x09, 0xf1, 0x82, 0xd0, 0x08, 0x87, 0x41,
		0x9e, 0xf1, 0x9d, 0x45, 0x06, 0x3e, 0x31, 0x8d, 0x90, 0x39, 0x18, 0x4e, 0x36, 0x70, 0x9b, 0x4c,
		0xad, 0xca, 0xa8, 0x6d, 0x6e, 0xee, 0x01, 0xc7, 0x78, 0xc1, 0x31, 0x64, 0x02, 0x5a, 0x91, 0x09,
		0x88, 0x21, 0x3d, 0x1c, 0x45, 0x1a, 0xa0, 0x0f, 0x02, 0xa7, 0x9e, 0x75, 0xca, 0x45, 0x4f, 0x75,
		0x89, 0x2a, 0x07, 0x12, 0x75, 0xde, 0xad, 0x74, 0x6b, 0xba, 0xf9, 0xca, 0xa4, 0x58, 0x15, 0xca,
		0x14, 0x4e, 0x4c, 0xa9, 0x9b, 0x28, 0x53, 0x36, 0x51, 0xa7, 0x6a, 0x62, 0xc1, 0xeb, 0xcc, 0xf8,
		0x9c, 0x55, 0x9b, 0x72, 0xc3, 0xdf, 0xdc, 0xb4, 0x23, 0x0f, 0x7c, 0x2d, 0x56, 0xca, 0xd0, 0xa6,
		0x58, 0x2a, 0x99, 0xde, 0x30, 0x3a, 0xbf, 0x01, 0x7b, 0x4a, 0xb3, 0xa4, 0xa5, 0x8c, 0xb3, 0x9a,
		0x95, 0x91, 0xd5, 0x4c, 0x1c, 0x95, 0x45, 0x56, 0x33, 0xe6, 0x23, 0x97, 0x34, 0x60, 0xbb, 0xba,
		0x65, 0x07, 0xa6, 0xe1, 0x5b, 0xc4, 0xd2, 0x07, 0xdf, 0xc3, 0x80, 0x67, 0x82, 0x9c, 0xc5, 0xa6,
		0x61, 0x8f, 0x82, 0x3d, 0x0a, 0xf6, 0xa8, 0x1c, 0xd9, 0xa3, 0x26, 0xea, 0xb2, 0x51, 0xe3, 0x68,
		0x91, 0x3a, 0xc4, 0x9d, 0xed, 0x94, 0x8d, 0xe2, 0xce, 0x36, 0xe7, 0x93, 0xf2, 0x76, 0xc9, 0x44,
		0xde, 0xd9, 0x16, 0x93, 0x3c, 0xbc, 0x28, 0xab, 0x58, 0x0c, 0xb3, 0x1a, 0xa2, 0x20, 0xe8, 0x94,
		0xcb, 0xcd, 0xd9, 0xb1, 0x56, 0xab, 0x1e, 0xed, 0x6b, 0xba, 0x76, 0x11, 0x5f, 0x1d, 0x8f, 0x94,
		0xb1, 0xd6, 0x76, 0xbb, 0x9e, 0xdf, 0x8f, 0x6d, 0x51, 0xda, 0x67, 0x23, 0x20, 0xb1, 0xab, 0x3d,
		0x7c, 0x22, 0xf7, 0x6e, 0x6c, 0xc3, 0x71, 0x49, 0xa8, 0x5d, 0xfb, 0x5e, 0xe8, 0x99, 0x9e, 0xa3,
		0xed, 0xb4, 0xaf, 0x11, 0x07, 0x2b, 0x18, 0x26, 0xad, 0x84, 0x4b, 0x9c, 0x96, 0x0e, 0x92, 0x84,
		0xd3, 0xfb, 0xd9, 0x32, 0x9f, 0xea, 0xc4, 0xf7, 0x3d, 0xff, 0xff, 0x67, 0xef, 0x5d, 0x7b, 0xdb,
		0x46, 0x96, 0x6e, 0xe1, 0xef, 0xf9, 0x15, 0x84, 0xb0, 0x81, 0x63, 0x1f, 0x84, 0xb1, 0x24, 0xcb,
		0xb2, 0x2d, 0xe0, 0xc1, 0x81, 0x62, 0x3b, 0x33, 0xc2, 0xf6, 0x45, 0xb0, 0x9d, 0xec, 0x19, 0x24,
		0xda, 0x06, 0x4d, 0xb6, 0x6c, 0x22, 0x14, 0xc9, 0xa7, 0xd9, 0x54, 0xec, 0x77, 0xe2, 0xff, 0xfe,
		0x82, 0x94, 0x44, 0xdd, 0x13, 0x89, 0xec, 0x6e, 0xb2, 0xa9, 0xe5, 0x0f, 0x33, 0x8e, 0x2c, 0xf6,
		0x85, 0xdd, 0x5d, 0xb5, 0x56, 0x55, 0x75, 0x15, 0x7f, 0x76, 0x37, 0xd3, 0x2c, 0x98, 0x1d, 0x98,
		0x1d, 0x98, 0x1d, 0x98, 0x1d, 0x98, 0x1d, 0x98, 0x1d, 0x98, 0x1d, 0x98, 0x1d, 0x98, 0x1d, 0x98,
		0x1d, 0x98, 0x1d, 0x98, 0x1d, 0x98, 0x9d, 0x58, 0x66, 0xd7, 0xf7, 0xe8, 0x8f, 0x91, 0x83, 0xcd,
		0x33, 0x19, 0xe1, 0xcc, 0xef, 0x96, 0x1a, 0x07, 0xcb, 0x03, 0xcb, 0x03, 0xcb, 0x03, 0xcb, 0x03,
		0xcb, 0x03, 0xcb, 0x03, 0xcb, 0x03, 0xcb, 0x03, 0xcb, 0x03, 0xcb, 0x03, 0xcb, 0x03, 0xcb, 0x03,
		0xcb, 0x93, 0xc5, 0xf2, 0xb8, 0xfb, 0xf0, 0x16, 0x9a, 0x06, 0xc3, 0x03, 0xc3, 0x03, 0xc3, 0x03,
		0xc3, 0x03, 0xc3, 0x03, 0xc3, 0x03, 0xc3, 0x03, 0xc3, 0x03, 0xc3, 0x03, 0xc3, 0x03, 0xc3, 0x03,
		0xc3, 0x03, 0xc3, 0x13, 0xcb, 0xf0, 0x06, 0xa1, 0xc3, 0x6c, 0xd3, 0x08, 0x98, 0x08, 0x3f, 0xde,
		0x52, 0xe3, 0x60, 0x79, 0x60, 0x79, 0x60, 0x79, 0x60, 0x79, 0x60, 0x79, 0x60, 0x79, 0x60, 0x79,
		0x60, 0x79, 0x60, 0x79, 0xbb, 0xc0, 0xf2, 0x5a, 0x9b, 0x30, 0x05, 0x6d, 0x42, 0x14, 0xbe, 0xb9,
		0x73, 0x4c, 0x41, 0xd3, 0x35, 0xdb, 0xbf, 0x7b, 0x0d, 0x18, 0x19, 0xdc, 0x31, 0x83, 0x05, 0x7f,
		0x9e, 0x75, 0xdc, 0xab, 0x08, 0x53, 0xde, 0xf0, 0x80, 0x94, 0xe0, 0x80, 0x59, 0x38, 0xa0, 0xd0,
		0x85, 0x85, 0x14, 0x2a, 0x1a, 0x43, 0xe4, 0xee, 0x03, 0x5c, 0x68, 0x1a, 0xec, 0x10, 0xec, 0x10,
		0xec, 0x10, 0xec, 0x10, 0xec, 0x10, 0xec, 0x10, 0xec, 0x10, 0xec, 0x10, 0xec, 0x10, 0xec, 0x30,
		0x2d, 0x89, 0xe8, 0x7e, 0x07, 0x37, 0x2c, 0x21, 0x37, 0x8c, 0x97, 0x15, 0x12, 0xa8, 0x18, 0xcc,
		0x50, 0x80, 0xc7, 0x10, 0x7e, 0x42, 0x30, 0x41, 0x30, 0x41, 0x30, 0x41, 0x30, 0x41, 0x30, 0x41,
		0x30, 0x41, 0x30, 0x41, 0x30, 0xc1, 0x1d, 0x62, 0x82, 0x88, 0x06, 0x55, 0x96, 0xed, 0x21, 0x1a,
		0xb4, 0x14, 0x8c, 0x8e, 0xbb, 0x87, 0x0f, 0x7e, 0x3d, 0xb0, 0x39, 0xb0, 0x39, 0xb0, 0x39, 0xb0,
		0x39, 0xb0, 0x39, 0xb0, 0x39, 0xb0, 0x39, 0xb0, 0x39, 0xb0, 0x39, 0xb0, 0x39, 0xb0, 0x39, 0xb0,
		0x39, 0xd1, 0x6c, 0xce, 0x0b, 0x99, 0xb0, 0x02, 0x7b, 0x2b, 0xda, 0x06, 0xc7, 0x03, 0xc7, 0x03,
		0xc7, 0x03, 0xc7, 0x03, 0xc7, 0x03, 0xc7, 0x03, 0xc7, 0x03, 0xc7, 0x03, 0xc7, 0x03, 0xc7, 0x03,
		0xc7, 0x03, 0xc7, 0x03, 0xc7, 0x13, 0xcc, 0xf1, 0x44, 0x94, 0xd8, 0x5b, 0x68, 0x17, 0xdc, 0x0e,
		0xdc, 0x0e, 0xdc, 0x0e, 0xdc, 0x0e, 0xdc, 0x0e, 0xdc, 0x0e, 0xdc, 0x0e, 0xdc, 0x0e, 0xdc, 0x0e,
		0xdc, 0x0e, 0xdc, 0x0e, 0xdc, 0x0e, 0xdc, 0x4e, 0x30, 0xb7, 0x13, 0x57, 0x64, 0x6f, 0x65, 0xeb,
		0xe0, 0x79, 0xe0, 0x79, 0xe0, 0x79, 0xe0, 0x79, 0xe0, 0x79, 0xe0, 0x79, 0xe0, 0x79, 0xe0, 0x79,
		0xe0, 0x79, 0xe0, 0x79, 0xe0, 0x79, 0xe0, 0x79, 0xe0, 0x79, 0xd2, 0x78, 0x1e, 0x7f, 0x3f, 0x1e,
		0xea, 0xec, 0x81, 0xe3, 0x81, 0xe3, 0x81, 0xe3, 0x81, 0xe3, 0x81, 0xe3, 0x81, 0xe3, 0x81, 0xe3,
		0x81, 0xe3, 0x81, 0xe3, 0x81, 0xe3, 0x81, 0xe3, 0x81, 0xe3, 0xc9, 0xe5, 0x78, 0xe2, 0x0a, 0xed,
		0xad, 0x6c, 0x1d, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c,
		0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x4f, 0x1a, 0xcf, 0xe3,
		0xef, 0xcb, 0x43, 0xbd, 0x3c, 0x70, 0x3c, 0x70, 0x3c, 0x70, 0x3c, 0x70, 0x3c, 0x70, 0x3c, 0x70,
		0x3c, 0x70, 0x3c, 0x70, 0x3c, 0x70, 0xbc, 0x2d, 0x89, 0xc2, 0x37, 0x77, 0xb9, 0xb6, 0xda, 0x4d,
		0xc8, 0x50, 0x33, 0x4f, 0x7d, 0x0e, 0xf8, 0xdb, 0xa5, 0x85, 0x24, 0x2a, 0x08, 0x47, 0x14, 0xe1,
		0x01, 0x84, 0xdf, 0x0f, 0x9c, 0x10, 0x9c, 0x10, 0x9c, 0x10, 0x9c, 0x10, 0x9c, 0x10, 0x9c, 0x10,
		0x9c, 0x10, 0x9c, 0x10, 0x9c, 0x10, 0x7e, 0xbf, 0xb2, 0x73, 0x3e, 0x70, 0xba, 0xa2, 0x70, 0x3a,
		0xfe, 0xde, 0x3e, 0xf8, 0xf8, 0xc0, 0xe7, 0xc0, 0xe7, 0xc0, 0xe7, 0xc0, 0xe7, 0xc0, 0xe7, 0xc0,
		0xe7, 0xc0, 0xe7, 0xc0, 0xe7, 0xc0, 0xe7, 0xc0, 0xe7, 0xc0, 0xe7, 0xc0, 0xe7, 0xc4, 0x3d, 0x99,
		0x52, 0x72, 0x55, 0xda, 0xae, 0xeb, 0xb1, 0x78, 0x99, 0x33, 0x1d, 0x95, 0x4a, 0x60, 0x3e, 0x93,
		0x81, 0xe1, 0x1b, 0xec, 0x39, 0xda, 0x53, 0x07, 0x9e, 0x4f, 0x5c, 0x33, 0xe6, 0x5e, 0xba, 0x1d,
		0xed, 0x97, 0xbe, 0x61, 0x92, 0xe0, 0x60, 0xd5, 0xaf, 0x07, 0xd4, 0x0b, 0x19, 0xb1, 0xf4, 0xa1,
		0x63, 0xb8, 0x07, 0xb6, 0x3f, 0x6c, 0x1e, 0x04, 0xcc, 0x60, 0xe4, 0x60, 0x0c, 0x57, 0xb3, 0x10,
		0xc9, 0x4a, 0xc0, 0x68, 0x68, 0x32, 0x77, 0x2c, 0xa3, 0x3a, 0x93, 0x2e, 0x1f, 0x6e, 0xe3, 0x2e,
		0xbf, 0x38, 0x86, 0xfb, 0xd0, 0xf1, 0x87, 0xcd, 0x87, 0xb3, 0x49, 0x5f, 0xef, 0xe4, 0x2c, 0x58,
		0x8a, 0xc5, 0xaa, 0x58, 0xcf, 0xa6, 0xaf, 0x9b, 0x8e, 0x3d, 0x3a, 0xb5, 0xe9, 0x56, 0x2a, 0x11,
		0xd7, 0xb3, 0x8d, 0xa5, 0xdc, 0x38, 0xe7, 0xa4, 0x6f, 0x84, 0x0e, 0xcb, 0xa4, 0x94, 0x2a, 0x31,
		0x06, 0x49, 0xf7, 0xd6, 0x7b, 0x29, 0xc7, 0x9d, 0xcd, 0xb0, 0x90, 0xd9, 0xa0, 0xc0, 0xc3, 0x90,
		0xc0, 0xcd, 0x80, 0xc0, 0x4b, 0x49, 0x72, 0x37, 0x18, 0x70, 0xd7, 0x80, 0x3c, 0x0d, 0x04, 0x72,
		0x05, 0x74, 0x66, 0x43, 0x40, 0xb2, 0x5b, 0x1e, 0x3d, 0xcf, 0x21, 0x86, 0x9b, 0x65, 0xbf, 0x8c,
		0x0f, 0x4f, 0xad, 0x56, 0x64, 0x41, 0x19, 0xfa, 0xba, 0x61, 0x59, 0x54, 0xb7, 0x08, 0x23, 0x26,
		0xd3, 0x19, 0x35, 0xdc, 0x60, 0x60, 0x67, 0x30, 0x72, 0x4e, 0xc5, 0xe6, 0xda, 0xa6, 0xf3, 0x14,
		0xa2, 0x35, 0x08, 0x50, 0x08, 0x50, 0x08, 0x50, 0xf1, 0x02, 0x34, 0xb4, 0x5d, 0x76, 0x58, 0xe7,
		0x20, 0x3f, 0x8f, 0x33, 0x34, 0xc1, 0xc7, 0x5c, 0xca, 0xc1, 0x2e, 0xc1, 0xd3, 0x3c, 0xca, 0xdb,
		0x2c, 0x2a, 0xcc, 0x90, 0xc6, 0xdf, 0x80, 0xc6, 0xc1, 0xfc, 0xc9, 0xd5, 0xec, 0x99, 0x2c, 0x45,
		0xa3, 0x7e, 0xda, 0x38, 0x6d, 0x1e, 0xd7, 0x4f, 0x8f, 0x76, 0x6f, 0x4d, 0x72, 0xa2, 0xfe, 0x3d,
		0xa9, 0x82, 0x91, 0xa3, 0xb1, 0x92, 0xa3, 0x91, 0x92, 0xa3, 0xc7, 0x2b, 0xb6, 0x6c, 0x9d, 0x34,
		0xeb, 0x2d, 0xad, 0xd3, 0x1d, 0x36, 0xb5, 0x3b, 0x66, 0x30, 0xe2, 0x90, 0x20, 0xd0, 0xda, 0x96,
		0x45, 0xe3, 0xff, 0x87, 0xcc, 0x1b, 0x59, 0x29, 0x42, 0x3a, 0xb2, 0x81, 0x14, 0xdb, 0x19, 0xcb,
		0xdb, 0xe0, 0x28, 0xc7, 0x1f, 0x9b, 0x62, 0x19, 0x76, 0xed, 0x04, 0x4b, 0x21, 0x46, 0xc4, 0x8d,
		0xce, 0xb9, 0x95, 0x9d, 0x06, 0x4d, 0x1a, 0xca, 0x93, 0xf4, 0x44, 0x7b, 0x15, 0xbc, 0x07, 0xbc,
		0x07, 0xbc, 0x07, 0x86, 0x23, 0x4e, 0xf2, 0x71, 0xc0, 0xc2, 0xec, 0xb2, 0x31, 0x6a, 0x04, 0x02,
		0x06, 0x02, 0x06, 0x02, 0x06, 0x86, 0x95, 0x22, 0x19, 0x56, 0x6a, 0xf5, 0x13, 0xd8, 0x56, 0x60,
		0x5b, 0x81, 0x6d, 0x05, 0xb6, 0x15, 0x6e, 0xb6, 0x95, 0x7a, 0xa3, 0x59, 0x6d, 0x69, 0x4b, 0xf1,
		0x40, 0xef, 0xb5, 0x2f, 0x84, 0x06, 0xb6, 0xe7, 0x6a, 0x4d, 0x6d, 0x2f, 0xa2, 0xfc, 0xfb, 0xda,
		0x9d, 0x4f, 0x4c, 0xbb, 0x6f, 0x9b, 0x31, 0xbb, 0xff, 0xe6, 0x26, 0xcd, 0xdd, 0x91, 0x78, 0xd7,
		0x6a, 0x47, 0x30, 0xbc, 0x08, 0x32, 0xbc, 0xf0, 0x5c, 0x23, 0x58, 0x65, 0xb8, 0x3e, 0xb1, 0xa5,
		0x6c, 0xc9, 0x1a, 0xaa, 0xc5, 0x3d, 0x44, 0x6b, 0xbb, 0xfd, 0xb0, 0xf9, 0xbb, 0xd9, 0xe2, 0xbd,
		0x54, 0x42, 0xd7, 0x0d, 0x07, 0x8f, 0x84, 0xa6, 0x30, 0x6b, 0x4d, 0xd1, 0xe7, 0xb4, 0x8d, 0x2d,
		0x57, 0x64, 0xc2, 0x6a, 0xb7, 0x7c, 0x2c, 0x2d, 0x53, 0xcb, 0xc2, 0xd0, 0xe6, 0x98, 0x59, 0x3f,
		0x85, 0x18, 0xcb, 0x2a, 0x5e, 0xb9, 0x31, 0x31, 0x6e, 0xb2, 0x73, 0x89, 0x79, 0xf5, 0x2b, 0x05,
		0x3b, 0xf1, 0xe7, 0x36, 0x4d, 0xb7, 0xd8, 0xe6, 0x64, 0x87, 0x65, 0xb4, 0x66, 0x8c, 0xdb, 0xc9,
		0x66, 0xd0, 0xa8, 0x95, 0xc5, 0xa0, 0xd1, 0x87, 0x41, 0x43, 0xd2, 0xb1, 0xca, 0xc7, 0xa0, 0x91,
		0xf6, 0xb8, 0x4d, 0x51, 0x7f, 0x46, 0x0f, 0xcb, 0xd2, 0xae, 0xcb, 0xe6, 0x69, 0x99, 0x4e, 0x8c,
		0x83, 0xc7, 0x25, 0x69, 0x2c, 0x43, 0xcc, 0x6e, 0x82, 0xc7, 0x70, 0x39, 0x58, 0xb8, 0xc0, 0x91,
		0x41, 0x8b, 0x14, 0xbd, 0x1c, 0xdc, 0xc7, 0xe5, 0xe0, 0xc5, 0xdd, 0x96, 0xdd, 0xc5, 0xb3, 0xa4,
		0xf5, 0x6b, 0xb9, 0xbe, 0x22, 0x4e, 0xf7, 0x5a, 0x92, 0xf6, 0x5e, 0x9f, 0x3c, 0xa6, 0x7b, 0xa6,
		0x6e, 0x7a, 0x03, 0x9f, 0x92, 0x20, 0x20, 0x96, 0xee, 0x10, 0xa3, 0x1f, 0x35, 0xfe, 0xb6, 0x13,
		0x17, 0x85, 0x2e, 0x5e, 0x62, 0xbb, 0x62, 0x7a, 0x05, 0xc2, 0x0f, 0xf7, 0x78, 0xa6, 0x4e, 0x5e,
		0x58, 0x8b, 0x11, 0x87, 0x0c, 0x08, 0xa3, 0xaf, 0xba, 0xe7, 0xea, 0xe6, 0x73, 0x6c, 0xbe, 0xe7,
		0x8a, 0x85, 0x62, 0x4d, 0xc7, 0x11, 0x0c, 0xc9, 0xc6, 0x41, 0xbd, 0xf2, 0xdc, 0x09, 0x9b, 0x72,
		0xf4, 0x83, 0x31, 0x27, 0x29, 0xb0, 0x23, 0x39, 0x99, 0x87, 0x4e, 0x49, 0x3f, 0x3b, 0x09, 0x9b,
		0x6f, 0x0e, 0x5c, 0x0c, 0x5c, 0x0c, 0x5c, 0x4c, 0xb8, 0x09, 0x84, 0xaf, 0x29, 0x84, 0xd3, 0x31,
		0x04, 0x73, 0x01, 0x73, 0x51, 0x9b, 0xb9, 0x64, 0x3d, 0xd6, 0xcb, 0x3a, 0x96, 0xdf, 0xf6, 0x58,
		0xd2, 0xb7, 0xbc, 0xb6, 0x07, 0x1f, 0x73, 0x05, 0xf7, 0xc3, 0x2f, 0x42, 0x08, 0x08, 0x13, 0x06,
		0xa2, 0x84, 0x82, 0x70, 0xe1, 0x20, 0x5c, 0x48, 0x88, 0x14, 0x16, 0x7c, 0x84, 0x06, 0x27, 0xe1,
		0xc1, 0xdf, 0xfc, 0xb1, 0xb4, 0x5b, 0x23, 0x4a, 0x9f, 0x1e, 0x64, 0xff, 0x52, 0xe3, 0x1f, 0x73,
		0x6c, 0xb3, 0x9b, 0x50, 0xaa, 0x68, 0x99, 0x5b, 0x33, 0x14, 0x6a, 0xe1, 0x83, 0xf1, 0xbf, 0xe3,
		0x0c, 0x18, 0x85, 0x5a, 0x42, 0xce, 0xe6, 0x19, 0xf1, 0x66, 0x1a, 0x7e, 0x27, 0x81, 0x47, 0x50,
		0x5a, 0x10, 0x3e, 0x0a, 0x54, 0x80, 0x73, 0xad, 0x43, 0x07, 0x42, 0x07, 0x42, 0x07, 0x42, 0x07,
		0x2a, 0xab, 0x03, 0xbf, 0x4e, 0x75, 0xe0, 0xff, 0x98, 0x21, 0xa5, 0xc4, 0x65, 0x7b, 0xfb, 0x07,
		0x1f, 0x3e, 0x4c, 0xcd, 0x8d, 0xbd, 0xf1, 0x23, 0xb3, 0x72, 0x2f, 0x58, 0xf1, 0x59, 0xd2, 0xb2,
		0x45, 0x5e, 0xa0, 0x4e, 0x8b, 0xa2, 0x4e, 0x73, 0xe5, 0xb3, 0x99, 0xbd, 0x22, 0x93, 0x1f, 0xfe,
		0x26, 0x0e, 0x61, 0x5e, 0x92, 0x35, 0xd2, 0x9c, 0x83, 0xb7, 0x64, 0xa5, 0x18, 0xcf, 0xdb, 0xe4,
		0xd1, 0x2b, 0x98, 0x27, 0x52, 0x8c, 0x57, 0x65, 0xce, 0xc9, 0x90, 0xc9, 0xc7, 0x92, 0xfd, 0xad,
		0xbf, 0x65, 0x4a, 0xf9, 0x67, 0x30, 0xc2, 0xcf, 0xea, 0x3b, 0x6a, 0xae, 0x60, 0x46, 0xdf, 0x3a,
		0x8c, 0xbe, 0xf9, 0x63, 0x5a, 0x18, 0x7d, 0x37, 0x9e, 0x10, 0x8c, 0xbe, 0x20, 0xbc, 0x20, 0xbc,
		0x20, 0xbc, 0x20, 0xbc, 0x52, 0x08, 0x2f, 0x7f, 0xa3, 0x2f, 0x6c, 0x9e, 0x50, 0x01, 0x50, 0x01,
		0x50, 0x01, 0x50, 0x01, 0x8a, 0xa8, 0x80, 0x42, 0xdb, 0x3c, 0x15, 0x67, 0x33, 0x2a, 0xda, 0x73,
		0x52, 0xdc, 0xd7, 0xe5, 0x68, 0xce, 0xd9, 0xf5, 0x82, 0x16, 0xeb, 0x96, 0x45, 0x46, 0x69, 0x8b,
		0xcf, 0x49, 0xdf, 0x0f, 0xc9, 0x97, 0x6e, 0x49, 0xbf, 0xc8, 0xe1, 0xd3, 0xd9, 0x4c, 0x78, 0x5c,
		0x4c, 0x77, 0xdc, 0xc2, 0xa5, 0xeb, 0x08, 0x97, 0x16, 0x07, 0xb5, 0x10, 0x2e, 0xcd, 0xcd, 0xc4,
		0x86, 0xab, 0xab, 0x1b, 0xfe, 0xe0, 0xea, 0xaa, 0x3c, 0xee, 0x07, 0x5f, 0x00, 0xae, 0xae, 0xfe,
		0x7e, 0xb7, 0x15, 0xef, 0xea, 0x2a, 0x90, 0x32, 0x07, 0xa4, 0x9c, 0x81, 0xb2, 0x20, 0x71, 0xd3,
		0x06, 0x2f, 0xb8, 0x92, 0x0a, 0x99, 0x6f, 0x4b, 0x3a, 0x84, 0xe5, 0x88, 0x7a, 0xc7, 0x71, 0xa1,
		0xd2, 0x2e, 0x10, 0xc7, 0x85, 0xd9, 0x62, 0x35, 0x36, 0x5d, 0x85, 0xcd, 0x5e, 0xfd, 0xef, 0x5f,
		0xe4, 0x06, 0x2f, 0x71, 0x4b, 0xca, 0x96, 0x8a, 0xa2, 0x6d, 0x49, 0xc9, 0xb6, 0xa6, 0x60, 0x69,
		0x90, 0xd0, 0x2c, 0xe2, 0x89, 0x96, 0x72, 0x9b, 0x55, 0x4c, 0x89, 0x6d, 0x32, 0x63, 0x98, 0xcc,
		0x58, 0x65, 0x11, 0x93, 0xc4, 0x13, 0xcf, 0xe9, 0xe0, 0x6e, 0x4b, 0x7b, 0x2a, 0xf1, 0x60, 0x53,
		0x67, 0x8a, 0xdb, 0x72, 0x8d, 0x33, 0x00, 0xfe, 0xdc, 0x73, 0xc4, 0xa5, 0x98, 0xaa, 0xb6, 0x13,
		0x59, 0xe2, 0xb6, 0xdb, 0xee, 0x72, 0x00, 0x46, 0x6a, 0x50, 0x3d, 0x93, 0x03, 0x31, 0x5d, 0xf5,
		0x9b, 0x44, 0x2a, 0x9f, 0xa6, 0x78, 0x76, 0x3c, 0xec, 0x74, 0xc4, 0x9e, 0x53, 0xda, 0xf1, 0x5a,
		0x93, 0x43, 0xda, 0xf1, 0x26, 0xd2, 0x8e, 0x2f, 0x34, 0x86, 0x7a, 0x6e, 0x99, 0x96, 0x42, 0x44,
		0xce, 0xf1, 0xe6, 0xd1, 0xd1, 0x21, 0xd2, 0x8d, 0xcb, 0x7a, 0x5a, 0x6a, 0xba, 0x71, 0x0e, 0xb2,
		0x30, 0x60, 0xd4, 0x76, 0x9f, 0x78, 0x94, 0x78, 0x39, 0x91, 0xc4, 0xd9, 0x7b, 0xa0, 0x96, 0xbf,
		0xa5, 0x96, 0x5b, 0x18, 0x51, 0x36, 0x20, 0x82, 0xef, 0x32, 0xbc, 0x90, 0x4a, 0x3b, 0x7c, 0x8a,
		0x50, 0x54, 0xec, 0x62, 0xf8, 0xbd, 0xae, 0xdb, 0x92, 0x48, 0x6e, 0x14, 0x13, 0x17, 0xbd, 0x91,
		0xd6, 0xcc, 0xdb, 0xd9, 0x94, 0x78, 0x9e, 0x93, 0xc0, 0xa4, 0xb6, 0x3f, 0x5e, 0xc3, 0x4a, 0xa7,
		0x3b, 0x6c, 0x68, 0xc6, 0xb8, 0x74, 0x5d, 0xdf, 0x18, 0xd8, 0xce, 0xab, 0x36, 0x57, 0xbd, 0x4e,
		0xeb, 0x7b, 0xf4, 0x9b, 0x3b, 0x1d, 0x8b, 0x68, 0x82, 0x5b, 0x95, 0x43, 0x70, 0xb7, 0xaa, 0xe7,
		0x53, 0x1e, 0x7a, 0xbb, 0x4d, 0x3d, 0x9e, 0x9c, 0xc9, 0xad, 0xed, 0x0f, 0x1b, 0xe9, 0xc9, 0x6d,
		0xfc, 0xf4, 0xb6, 0x09, 0xaa, 0xe7, 0x8f, 0x46, 0xd7, 0xa0, 0xc6, 0x80, 0x30, 0x42, 0x83, 0xe8,
		0x0c, 0x68, 0xec, 0x99, 0x68, 0x2b, 0x4e, 0xcb, 0x87, 0x5d, 0x49, 0xb3, 0xee, 0x83, 0x40, 0x73,
		0x2a, 0x70, 0xf5, 0x96, 0xaf, 0xae, 0xe7, 0x61, 0x23, 0x2d, 0xb6, 0x46, 0x6b, 0x42, 0xa3, 0x41,
		0xa3, 0x15, 0x52, 0xa3, 0x35, 0x33, 0x69, 0xb4, 0xa6, 0x10, 0x8d, 0xd6, 0x84, 0x46, 0x83, 0x46,
		0x2b, 0xb9, 0x46, 0xfb, 0xe5, 0x37, 0x7e, 0x13, 0x05, 0x95, 0xa6, 0xfc, 0x59, 0xe5, 0xc7, 0x33,
		0x71, 0x37, 0xb6, 0x83, 0xa6, 0x10, 0xf8, 0xd3, 0x38, 0xf8, 0x91, 0x26, 0x1d, 0x69, 0xb8, 0xf1,
		0x3f, 0xd8, 0xab, 0x4f, 0xb4, 0xff, 0xd1, 0xfe, 0x8f, 0x6d, 0xb8, 0x86, 0xdd, 0x67, 0x2d, 0xe7,
		0xd0, 0xf6, 0x23, 0x8d, 0xfa, 0x7f, 0x24, 0x6b, 0x88, 0xf8, 0x25, 0xe4, 0xa9, 0x1f, 0x52, 0xbe,
		0x25, 0x21, 0xc5, 0x9d, 0xe6, 0x65, 0x71, 0x4a, 0x25, 0xd0, 0x36, 0x99, 0x3d, 0x24, 0x5a, 0xf4,
		0x62, 0x63, 0xf1, 0x9d, 0xa0, 0x18, 0xcd, 0x0e, 0x34, 0x43, 0x73, 0xbc, 0x27, 0xdb, 0x34, 0x9c,
		0x99, 0x8f, 0x7d, 0xea, 0x0d, 0x6d, 0xcb, 0x76, 0x9f, 0xbe, 0xb9, 0x97, 0x87, 0x5a, 0x84, 0xae,
		0x6c, 0xf7, 0x29, 0x96, 0xfe, 0x5f, 0x2e, 0xdb, 0xd7, 0xc1, 0xb6, 0xab, 0x93, 0x41, 0xfa, 0xcd,
		0x6e, 0x0c, 0x6b, 0xe6, 0x5d, 0xa4, 0x90, 0xc1, 0x3c, 0x44, 0xdf, 0xdc, 0x3e, 0xe1, 0xfe, 0x5a,
		0x0b, 0x2e, 0x0f, 0x7b, 0xd9, 0x8c, 0x5f, 0xdb, 0x59, 0x01, 0xf9, 0x58, 0xff, 0x2a, 0x1b, 0x05,
		0x6e, 0xfc, 0x2e, 0x96, 0xe4, 0xd7, 0x0b, 0xb3, 0xfe, 0xc5, 0xfd, 0xe2, 0x95, 0x54, 0x02, 0xcf,
		0x25, 0xec, 0xb7, 0x6f, 0x62, 0x6a, 0x9b, 0x8e, 0xbf, 0xfe, 0x9b, 0x57, 0xbc, 0x19, 0xa4, 0xda,
		0x18, 0x42, 0x6d, 0x03, 0x99, 0x66, 0x21, 0x92, 0x63, 0xbb, 0x44, 0x37, 0xbd, 0xc1, 0x26, 0x2f,
		0x7f, 0x4b, 0xd1, 0x90, 0x1a, 0x08, 0xa5, 0x3e, 0xfd, 0x8b, 0x40, 0x27, 0x99, 0x9c, 0x60, 0x5b,
		0x71, 0x11, 0xe1, 0xc3, 0x06, 0xea, 0x30, 0xde, 0xa7, 0x3b, 0x87, 0x18, 0x36, 0x7f, 0x31, 0x05,
		0x06, 0x09, 0x96, 0x65, 0x47, 0x2d, 0xcc, 0x69, 0xac, 0x79, 0x13, 0x88, 0x3f, 0x65, 0x82, 0xd1,
		0x2b, 0xff, 0xe6, 0xce, 0x6b, 0xbd, 0x78, 0xca, 0x76, 0xa0, 0xdd, 0xdd, 0x5c, 0x5f, 0xdc, 0x1f,
		0xdc, 0x9d, 0xff, 0x09, 0x9c, 0xc0, 0x44, 0xbd, 0x59, 0x40, 0x05, 0x2e, 0x50, 0x61, 0x13, 0xb5,
		0xfa, 0x4b, 0x90, 0x70, 0x17, 0x37, 0x20, 0x02, 0x1f, 0x6c, 0x14, 0x4e, 0xba, 0x55, 0x18, 0xe9,
		0xd6, 0xf8, 0xa0, 0x2e, 0x06, 0x1f, 0x6c, 0x74, 0x31, 0x46, 0x3d, 0x64, 0xb0, 0xc9, 0xc5, 0x94,
		0x6c, 0x98, 0x60, 0x53, 0xdb, 0x61, 0xc5, 0xb0, 0x06, 0xb6, 0xab, 0x47, 0x7b, 0x22, 0x0c, 0xb6,
		0x0f, 0x49, 0x9e, 0x7b, 0x7a, 0x3b, 0x33, 0x77, 0xb5, 0xa8, 0x66, 0xee, 0xfe, 0x6e, 0x9a, 0xb9,
		0xfb, 0x79, 0x99, 0xb9, 0xaf, 0x0c, 0xd7, 0x32, 0x98, 0x47, 0x5f, 0xb7, 0xf0, 0x7d, 0x6c, 0x1d,
		0xc2, 0x39, 0x73, 0xd1, 0x32, 0x1c, 0x90, 0x91, 0x2a, 0xdd, 0x66, 0x9d, 0x27, 0xf2, 0xb0, 0xb1,
		0xc5, 0x33, 0x17, 0x6e, 0x38, 0xd8, 0x7e, 0x67, 0xdc, 0x7b, 0x77, 0xa3, 0xe0, 0xa2, 0x54, 0xd8,
		0xa6, 0x1a, 0xcd, 0xf1, 0x73, 0x37, 0x0d, 0x98, 0xa9, 0x45, 0x8f, 0x9e, 0xdf, 0xfc, 0xe7, 0x3a,
		0xcd, 0xc3, 0xf5, 0xe8, 0xe1, 0xfb, 0x8b, 0xbb, 0xfb, 0xce, 0xf5, 0x1f, 0x15, 0xb1, 0xd1, 0xbb,
		0x5e, 0xc7, 0x65, 0xe9, 0x5e, 0x4e, 0x3c, 0xb9, 0x54, 0xd7, 0xd4, 0x93, 0xa9, 0xa5, 0xba, 0xa3,
		0x1e, 0x2d, 0x48, 0x4b, 0xab, 0x2a, 0x11, 0x81, 0xb5, 0x75, 0x8a, 0xde, 0xf4, 0x82, 0x8f, 0x5b,
		0xca, 0xdd, 0xec, 0xa9, 0x75, 0x53, 0xa6, 0xd0, 0xdd, 0x62, 0xef, 0x66, 0x7e, 0x4d, 0x9e, 0x3f,
		0x16, 0x5b, 0x86, 0xa3, 0xcc, 0xeb, 0xd9, 0xe8, 0x9b, 0x1b, 0xde, 0x11, 0x4f, 0x63, 0xe6, 0x48,
		0x9e, 0xa5, 0xa4, 0x4f, 0x28, 0x71, 0xcd, 0xed, 0x43, 0xc7, 0x33, 0xb8, 0x00, 0x6f, 0x3f, 0x9d,
		0x69, 0xf5, 0x93, 0xe6, 0x61, 0x4b, 0xbb, 0x7f, 0x26, 0x5a, 0x42, 0x04, 0x02, 0xed, 0x0f, 0xea,
		0x85, 0xbe, 0x76, 0xd5, 0xf9, 0xa8, 0xe9, 0x9a, 0xdd, 0x6f, 0x47, 0x18, 0xea, 0x6e, 0x1b, 0x08,
		0xc5, 0x8b, 0x09, 0x2f, 0xee, 0xb4, 0xe9, 0x5b, 0x2a, 0x92, 0xcb, 0x30, 0xc5, 0x6b, 0x2c, 0x8c,
		0x7f, 0xb1, 0x27, 0xf1, 0x56, 0xa1, 0xe9, 0x85, 0xd1, 0xbb, 0x49, 0x81, 0xe2, 0x93, 0x27, 0x4b,
		0x12, 0xa8, 0x02, 0x04, 0x2f, 0x17, 0x33, 0x6c, 0x1d, 0xa8, 0x62, 0x1a, 0x94, 0xda, 0x84, 0xea,
		0x8c, 0x1a, 0x6e, 0x10, 0x1b, 0xbc, 0x82, 0xf4, 0xd6, 0xc8, 0x55, 0x8d, 0xed, 0xc6, 0xad, 0xc3,
		0x54, 0x69, 0x43, 0x76, 0x20, 0xc0, 0xa4, 0x5f, 0xbe, 0x1b, 0x87, 0x63, 0x11, 0xdd, 0x6c, 0x64,
		0xb8, 0x75, 0x78, 0x92, 0xe2, 0xd1, 0x6c, 0xf7, 0xed, 0x32, 0xdc, 0xb4, 0xe1, 0x71, 0xbf, 0x8e,
		0xd7, 0xbd, 0x3a, 0xee, 0x17, 0xb8, 0xf8, 0x5d, 0xdc, 0xca, 0x52, 0xfc, 0x81, 0xc7, 0xbd, 0xb9,
		0xe4, 0x15, 0xd7, 0x4e, 0x1a, 0x8d, 0xe6, 0x71, 0xa3, 0x51, 0x3d, 0x3e, 0x3c, 0xae, 0x9e, 0x1e,
		0x1d, 0xd5, 0x9a, 0xb5, 0xa3, 0xf2, 0xbe, 0xf5, 0x62, 0x5e, 0xda, 0xda, 0x52, 0x2a, 0xa5, 0xae,
		0xc6, 0x93, 0x5d, 0x71, 0x70, 0xaf, 0xb6, 0xc3, 0xaf, 0xba, 0x4e, 0xc6, 0x6a, 0x3a, 0x29, 0x0e,
		0x24, 0xb7, 0xd7, 0x99, 0xde, 0x44, 0x50, 0xbc, 0xd7, 0xf8, 0x4e, 0xcc, 0x39, 0xd9, 0xc6, 0x57,
		0x6e, 0xbb, 0xfa, 0x23, 0xf5, 0x0c, 0xcb, 0x34, 0x02, 0xa6, 0xfb, 0xdf, 0x59, 0x06, 0x8c, 0xba,
		0xdc, 0x14, 0x10, 0x2a, 0x10, 0x2a, 0x10, 0x2a, 0x10, 0x2a, 0x10, 0x2a, 0x10, 0x2a, 0x10, 0xea,
		0x9a, 0xd7, 0x91, 0xc1, 0xe4, 0x9f, 0xb4, 0x91, 0xde, 0xf4, 0xcf, 0x41, 0x46, 0x6c, 0xe9, 0x0a,
		0xf8, 0xf3, 0xac, 0xe3, 0x7e, 0x9c, 0xe0, 0x84, 0xee, 0x77, 0x16, 0x7c, 0xf8, 0xe6, 0x46, 0x8f,
		0x36, 0xea, 0xa7, 0x87, 0x2d, 0xed, 0xca, 0x70, 0x8d, 0x27, 0x12, 0xa9, 0x11, 0xad, 0xe3, 0xf6,
		0x3d, 0x3a, 0x18, 0x05, 0x84, 0x7d, 0x34, 0x02, 0x32, 0xb9, 0x6e, 0xf5, 0xcd, 0x8d, 0xdb, 0x76,
		0x09, 0xd3, 0xba, 0xd4, 0x63, 0x9e, 0xe9, 0x39, 0xda, 0x5e, 0xa7, 0xbb, 0xff, 0xa1, 0x60, 0x09,
		0xad, 0xb3, 0x7a, 0x1a, 0xb8, 0x6b, 0xe8, 0x95, 0x9a, 0x3a, 0xff, 0x55, 0x2b, 0xdb, 0xf9, 0x17,
		0x85, 0xd3, 0x2d, 0x3b, 0x30, 0x0d, 0x6a, 0x65, 0x43, 0xe8, 0x49, 0x23, 0xc0, 0xe6, 0xc0, 0xe6,
		0xc0, 0xe6, 0xc0, 0xe6, 0xc0, 0xe6, 0xc0, 0xe6, 0xc0, 0xe6, 0xc0, 0xe6, 0x31, 0xca, 0xeb, 0xb8,
		0xe7, 0x63, 0x7c, 0x00, 0x50, 0xae, 0x00, 0x28, 0x17, 0xb1, 0x5c, 0x40, 0xe3, 0x9b, 0xa1, 0x71,
		0x42, 0xa9, 0x47, 0xb3, 0x61, 0xf1, 0x71, 0x13, 0x40, 0xe2, 0x40, 0xe2, 0x40, 0xe2, 0x40, 0xe2,
		0x40, 0xe2, 0x40, 0xe2, 0x40, 0xe2, 0x40, 0xe2, 0x63, 0x68, 0x77, 0x11, 0xa3, 0x03, 0xe0, 0x70,
		0x25, 0x70, 0x38, 0xef, 0xc5, 0x02, 0x0a, 0xdf, 0x0c, 0x85, 0xf7, 0xcd, 0x80, 0x07, 0x12, 0x9f,
		0x69, 0x06, 0x68, 0x1c, 0x68, 0x1c, 0x68, 0x1c, 0x68, 0x1c, 0x68, 0x1c, 0x68, 0x1c, 0x68, 0x7c,
		0xcd, 0xeb, 0xc8, 0x3f, 0xaa, 0x1a, 0x61, 0xc0, 0xbc, 0xa1, 0xd4, 0x20, 0x74, 0x98, 0xcd, 0x27,
		0x0c, 0x78, 0xa1, 0x29, 0x40, 0x2a, 0x40, 0x2a, 0x40, 0x2a, 0x40, 0x2a, 0x40, 0x2a, 0x40, 0x2a,
		0x40, 0x2a, 0x18, 0x38, 0x93, 0x80, 0xd2, 0xab, 0x09, 0x4e, 0x40, 0x18, 0xb0, 0x22, 0x96, 0x4e,
		0x81, 0xab, 0x06, 0x93, 0xe7, 0x66, 0x38, 0xdd, 0x33, 0x19, 0xc9, 0x88, 0xcf, 0xc7, 0x4d, 0x00,
		0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x27,
		0x08, 0xef, 0x26, 0xc6, 0x07, 0x00, 0xe4, 0x8a, 0x00, 0x72, 0xde, 0xcb, 0x05, 0x24, 0xbe, 0x19,
		0x12, 0xcf, 0x6c, 0x27, 0x87, 0x75, 0x1c, 0x28, 0x1c, 0x28, 0x1c, 0x28, 0x1c, 0x28, 0x1c, 0x28,
		0x1c, 0x28, 0x7c, 0x87, 0x50, 0x78, 0xed, 0xb4, 0xa5, 0xdd, 0x92, 0x81, 0xc7, 0x88, 0x76, 0x4d,
		0xd8, 0x0f, 0x8f, 0x7e, 0xd7, 0xae, 0x3c, 0xd7, 0x66, 0x1e, 0xb5, 0xdd, 0xa7, 0x5f, 0x81, 0x37,
		0x60, 0xf2, 0xfc, 0x31, 0x79, 0x01, 0x16, 0x0f, 0x08, 0x7d, 0x33, 0x84, 0x1e, 0xba, 0x9c, 0x22,
		0x5a, 0xe6, 0x1a, 0x02, 0x62, 0x07, 0x62, 0x07, 0x62, 0x07, 0x62, 0x07, 0x62, 0x07, 0x62, 0x07,
		0x62, 0xdf, 0x0d, 0xc4, 0xbe, 0x91, 0x21, 0xf6, 0x33, 0x62, 0x59, 0x8a, 0x03, 0xd3, 0xf3, 0x5a,
		0x31, 0x60, 0xf3, 0x4d, 0xb1, 0xf9, 0x77, 0xd7, 0xfb, 0xe1, 0xea, 0x7e, 0xf4, 0xfa, 0xb2, 0xa2,
		0xf3, 0xb9, 0xa6, 0x80, 0xcf, 0x81, 0xcf, 0x81, 0xcf, 0x81, 0xcf, 0x81, 0xcf, 0x81, 0xcf, 0x81,
		0xcf, 0xd7, 0xbc, 0x0e, 0x5c, 0xe1, 0x5b, 0xab, 0x45, 0x84, 0x5f, 0xe1, 0x03, 0x95, 0xfa, 0x4d,
		0x3a, 0x8d, 0xcf, 0x23, 0x40, 0xd7, 0x4d, 0x83, 0xe7, 0xc0, 0x81, 0x32, 0xbc, 0x6a, 0x90, 0x97,
		0x0d, 0xde, 0xb3, 0x63, 0x04, 0x4c, 0x37, 0x1d, 0x62, 0xd0, 0xf4, 0xac, 0x65, 0xa6, 0x0d, 0xd0,
		0x15, 0xd0, 0x95, 0x52, 0xd1, 0x15, 0x66, 0x0f, 0x08, 0xb3, 0xcd, 0xef, 0x81, 0x74, 0xc2, 0xf2,
		0xd9, 0x1d, 0x61, 0xc5, 0x8a, 0x6b, 0xb8, 0x5e, 0x40, 0x4c, 0xcf, 0xb5, 0x52, 0xd5, 0x9b, 0x06,
		0xf1, 0x01, 0xf1, 0x01, 0xf1, 0x01, 0xf1, 0x11, 0x43, 0x7c, 0xca, 0x58, 0x11, 0xb2, 0x00, 0x39,
		0x4c, 0xbc, 0x90, 0x71, 0xab, 0x65, 0xb8, 0xa2, 0x2d, 0xc0, 0x34, 0xc0, 0xb4, 0x52, 0xc1, 0x34,
		0x58, 0x95, 0x01, 0xae, 0x00, 0xae, 0x00, 0xae, 0x78, 0x4a, 0xa5, 0xdd, 0x8b, 0xfa, 0xb8, 0x09,
		0x19, 0xaa, 0x19, 0xaa, 0x66, 0xf6, 0x14, 0xb9, 0x6c, 0x30, 0xa1, 0x6e, 0x88, 0xd5, 0xb3, 0xd7,
		0x33, 0x9c, 0x6b, 0x05, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c,
		0xf8, 0x1c, 0xf8, 0x3c, 0x06, 0x7a, 0x37, 0x21, 0x43, 0x45, 0x43, 0x85, 0x80, 0xb9, 0x90, 0xf5,
		0x02, 0x22, 0xdf, 0x10, 0x91, 0x67, 0xad, 0xa4, 0x32, 0xd3, 0x06, 0xd0, 0x38, 0xd0, 0x38, 0xd0,
		0x38, 0xd0, 0x38, 0xd0, 0x38, 0xd0, 0x38, 0xd0, 0x38, 0xd0, 0xf8, 0x04, 0xdd, 0xa1, 0xaa, 0xa1,
		0x4a, 0x58, 0x1c, 0x65, 0x0d, 0x73, 0x42, 0xe2, 0xbc, 0x8a, 0xf1, 0xac, 0x68, 0x0b, 0xc8, 0x1c,
		0xc8, 0x1c, 0xc8, 0x1c, 0xc8, 0x1c, 0xc8, 0x1c, 0xc8, 0x1c, 0xc8, 0x1c, 0xc8, 0x7c, 0x1a, 0x10,
		0x81, 0x72, 0x3c, 0xaa, 0x41, 0x74, 0x91, 0xcb, 0x06, 0xac, 0xbe, 0x21, 0x56, 0xcf, 0x5a, 0x90,
		0x67, 0xa6, 0x0d, 0x60, 0x73, 0x60, 0x73, 0x60, 0x73, 0x60, 0x73, 0x60, 0x73, 0x60, 0x73, 0x60,
		0x73, 0x60, 0xf3, 0x29, 0xc8, 0x43, 0x49, 0x1e, 0xb5, 0x40, 0x39, 0x6a, 0xf2, 0xe4, 0x84, 0xc6,
		0xb3, 0xdb, 0xcb, 0x61, 0x25, 0x07, 0x12, 0x07, 0x12, 0x07, 0x12, 0x07, 0x12, 0x07, 0x12, 0x07,
		0x12, 0xdf, 0x21, 0x24, 0x8e, 0xaa, 0x3c, 0xa8, 0xca, 0x03, 0x8c, 0x2e, 0x01, 0xa3, 0xf3, 0x29,
		0xcb, 0xb3, 0xd4, 0x12, 0x30, 0x3b, 0x30, 0x3b, 0x30, 0x3b, 0x30, 0x3b, 0x30, 0x3b, 0x30, 0x3b,
		0x30, 0xfb, 0x6e, 0x60, 0xf6, 0xcd, 0xac, 0xb1, 0x28, 0xcc, 0x53, 0x20, 0xa4, 0x9e, 0xdb, 0x92,
		0x01, 0x9f, 0x6f, 0x74, 0xb6, 0x83, 0x4c, 0xd1, 0x2c, 0xe3, 0xe7, 0x81, 0xc5, 0x81, 0xc5, 0x81,
		0xc5, 0x81, 0xc5, 0x81, 0xc5, 0x81, 0xc5, 0x81, 0xc5, 0xd7, 0xbc, 0x0e, 0xa4, 0xa2, 0xfe, 0xad,
		0x36, 0x49, 0xa1, 0x48, 0xde, 0xa3, 0xa4, 0x91, 0x56, 0xe0, 0x8c, 0xde, 0xef, 0x38, 0x2e, 0x62,
		0xa5, 0xed, 0xba, 0x1e, 0x8b, 0xdf, 0xf8, 0x56, 0x82, 0xb4, 0x12, 0x98, 0xcf, 0x64, 0x60, 0xf8,
		0x06, 0x7b, 0x8e, 0xde, 0xce, 0x81, 0xe7, 0x13, 0xd7, 0x8c, 0xb1, 0xa4, 0x6e, 0x27, 0xac, 0xe4,
		0x60, 0xd5, 0xaf, 0x07, 0x01, 0x33, 0x18, 0x39, 0x18, 0xa3, 0x81, 0x6d, 0x70, 0x6e, 0x25, 0x60,
		0x34, 0x34, 0x99, 0x3b, 0xc6, 0x13, 0x09, 0xfb, 0x79, 0x38, 0x9b, 0xb4, 0xf5, 0x8e, 0xcf, 0xfb,
		0xdb, 0xe0, 0xdd, 0x55, 0x4c, 0x3f, 0xdc, 0xf8, 0x85, 0x4d, 0x21, 0x90, 0x1f, 0x6e, 0x38, 0xdf,
		0x2d, 0xf1, 0xfc, 0xd6, 0x38, 0x3e, 0x0d, 0x7e, 0x4f, 0x8d, 0xdb, 0xd3, 0xe2, 0xf5, 0xcc, 0x38,
		0x3d, 0x33, 0x3e, 0xcf, 0x82, 0xcb, 0xf9, 0x9e, 0xd3, 0xad, 0xf1, 0x77, 0xb2, 0x5a, 0x8f, 0x9e,
		0xe7, 0x10, 0xc3, 0xdd, 0x66, 0xbd, 0xc6, 0x9b, 0xaf, 0x56, 0xe3, 0x3a, 0x85, 0xad, 0x95, 0x75,
		0xfa, 0xdd, 0xc2, 0x4d, 0x39, 0x67, 0xd7, 0x26, 0x29, 0xb5, 0xc8, 0x16, 0x4a, 0x38, 0xf3, 0x6b,
		0x4a, 0xaf, 0x74, 0xf3, 0x7b, 0x3d, 0xef, 0xf8, 0x28, 0xd5, 0x4d, 0x44, 0xbd, 0x45, 0x02, 0x93,
		0xda, 0xfe, 0x56, 0x3a, 0x32, 0x39, 0x7d, 0xb3, 0x0f, 0x43, 0xf4, 0x43, 0xf4, 0x4b, 0x15, 0xfd,
		0x01, 0xa3, 0xb6, 0xfb, 0x94, 0x46, 0xf2, 0x9f, 0x70, 0x9d, 0x41, 0x06, 0x97, 0x49, 0x06, 0x57,
		0x49, 0x06, 0x5b, 0xd5, 0x86, 0x76, 0xf6, 0xb6, 0x63, 0x1b, 0x41, 0xce, 0x06, 0xcc, 0xac, 0x8e,
		0x0b, 0x31, 0x36, 0xcc, 0xad, 0x5e, 0xa0, 0x68, 0x53, 0xe7, 0x3b, 0xbe, 0x24, 0x8c, 0x0f, 0x81,
		0x20, 0x6e, 0x74, 0x16, 0xac, 0xed, 0x35, 0xca, 0xe4, 0xc1, 0x0d, 0xcf, 0xde, 0x39, 0xe9, 0x1b,
		0xa1, 0xc3, 0xb6, 0x3a, 0x3d, 0x95, 0x68, 0x17, 0x6c, 0xb6, 0x2c, 0x3d, 0x28, 0x35, 0x28, 0xb5,
		0xdd, 0xe4, 0x33, 0xa5, 0xd5, 0x6a, 0xd6, 0xc0, 0x76, 0xef, 0x98, 0xc1, 0x42, 0xe8, 0xb6, 0x2c,
		0xba, 0x6d, 0xe6, 0x35, 0xee, 0xa4, 0x86, 0x7b, 0x36, 0xa8, 0xf5, 0xc3, 0xa0, 0x44, 0xf7, 0x3d,
		0xca, 0xb6, 0xd7, 0x73, 0xf3, 0x8f, 0x97, 0x43, 0xcd, 0x6c, 0x31, 0x95, 0x72, 0x29, 0x9a, 0x78,
		0xe2, 0xca, 0xa9, 0x1a, 0x87, 0x18, 0x7d, 0x4a, 0xfa, 0x69, 0x54, 0xcd, 0xf1, 0x16, 0xcf, 0x74,
		0x13, 0x2b, 0xba, 0xa9, 0xfb, 0x8e, 0xc1, 0xfa, 0x1e, 0x1d, 0xb4, 0x4c, 0x6f, 0xe0, 0x7b, 0x2e,
		0x71, 0x59, 0xb0, 0xfa, 0xe3, 0xb9, 0x4f, 0x63, 0x9b, 0xb8, 0xc4, 0xa3, 0x6d, 0xf7, 0x6d, 0xd7,
		0x22, 0x2f, 0xdb, 0x1f, 0xea, 0xc9, 0x83, 0x40, 0x8d, 0x40, 0x8d, 0x52, 0x8f, 0x72, 0x68, 0xbb,
		0xec, 0xb0, 0x9e, 0xe2, 0x24, 0x6f, 0x73, 0x90, 0xd3, 0x85, 0x9a, 0xa4, 0x40, 0x74, 0x59, 0x42,
		0x4b, 0xb2, 0x86, 0x94, 0x70, 0x0b, 0x6a, 0xc8, 0x1e, 0xcc, 0x90, 0xc2, 0x53, 0x9d, 0x29, 0x64,
		0x24, 0x79, 0x75, 0x8d, 0xfa, 0x69, 0xe3, 0xb4, 0x79, 0x5c, 0x3f, 0x3d, 0x52, 0xff, 0x1d, 0xe6,
		0x8b, 0x34, 0xe1, 0x3b, 0xda, 0x54, 0xf0, 0xc2, 0x77, 0xc4, 0xeb, 0xf5, 0x70, 0x35, 0x6c, 0x29,
		0x6b, 0x05, 0xd0, 0xf4, 0xb5, 0xfc, 0x15, 0xb4, 0xff, 0x17, 0xb4, 0xff, 0x57, 0xef, 0x6d, 0x27,
		0x79, 0xbe, 0x63, 0x04, 0x6c, 0x22, 0x21, 0xb7, 0x26, 0x04, 0xb3, 0x0f, 0x83, 0x14, 0x80, 0x14,
		0x48, 0x25, 0x05, 0xcc, 0x1e, 0x10, 0x66, 0x9b, 0xdf, 0x83, 0xad, 0x82, 0xd2, 0x53, 0x04, 0xa3,
		0x57, 0x3e, 0xbb, 0x23, 0x98, 0x57, 0x71, 0x0d, 0xd7, 0x0b, 0x88, 0xe9, 0xb9, 0x5b, 0x15, 0xdc,
		0x05, 0xb3, 0xd8, 0x15, 0x66, 0xc1, 0x2f, 0x08, 0x1d, 0x1c, 0x03, 0x1c, 0x03, 0x1c, 0x63, 0x07,
		0xe2, 0xd3, 0x1c, 0xef, 0xc9, 0x36, 0x0d, 0x27, 0x05, 0xf6, 0x1a, 0x3f, 0x08, 0xdc, 0x05, 0xdc,
		0x25, 0x15, 0x77, 0x21, 0x24, 0x19, 0x22, 0x1f, 0x22, 0x3f, 0x93, 0xc8, 0xf7, 0xfc, 0x47, 0xc3,
		0xfc, 0xae, 0x0f, 0x3c, 0x2b, 0x0d, 0xe9, 0x9e, 0x7b, 0x1c, 0xe2, 0x1f, 0xe2, 0x5f, 0xaa, 0xf8,
		0x9f, 0xdb, 0x7e, 0x3a, 0x8b, 0xda, 0x49, 0xa1, 0x09, 0x1a, 0x5b, 0x3c, 0x73, 0xe1, 0x86, 0x83,
		0xed, 0x17, 0xfb, 0xde, 0xbb, 0x1b, 0x05, 0x50, 0xa7, 0xba, 0xf7, 0x5e, 0x8d, 0xa6, 0x7a, 0x7d,
		0x73, 0x7d, 0x91, 0xc6, 0x9a, 0x5a, 0x8b, 0x1e, 0xfe, 0xd4, 0x3e, 0xeb, 0x5c, 0x76, 0xee, 0xff,
		0x4e, 0xd3, 0x40, 0x3d, 0x6a, 0xe0, 0xfe, 0xe2, 0xf6, 0xaa, 0x73, 0xdd, 0xbe, 0x4c, 0xd3, 0xc0,
		0x61, 0xd4, 0x40, 0xfb, 0xae, 0x73, 0xf6, 0xd0, 0xfd, 0xf3, 0xef, 0x87, 0xcb, 0x9b, 0xb3, 0x74,
		0xcd, 0x34, 0xe6, 0x9a, 0xb9, 0xbd, 0xb8, 0xba, 0xb9, 0x4f, 0xf5, 0x42, 0x8e, 0x92, 0x76, 0xae,
		0xda, 0x67, 0xe9, 0x87, 0xd3, 0x9c, 0x6b, 0x66, 0x3c, 0x1c, 0xb1, 0x89, 0x13, 0xbc, 0x8e, 0xcb,
		0xd2, 0xed, 0xa0, 0x85, 0xe9, 0xb6, 0xb4, 0x14, 0x96, 0x80, 0xa5, 0xc9, 0xb6, 0xb4, 0x66, 0xda,
		0x56, 0xa6, 0x1b, 0xa1, 0xa5, 0x1d, 0x66, 0x69, 0x24, 0x19, 0x4a, 0x23, 0x45, 0x2b, 0xc9, 0xa9,
		0x68, 0x69, 0xb5, 0x14, 0x8f, 0xc7, 0x27, 0x32, 0x95, 0x2d, 0x64, 0x7a, 0x9c, 0x5a, 0x5a, 0xbd,
		0x00, 0x89, 0x66, 0xa6, 0x91, 0xdd, 0xdb, 0x8a, 0x99, 0x48, 0x0b, 0x4d, 0x9f, 0x8e, 0x94, 0x90,
		0x44, 0x77, 0xc1, 0x20, 0xc9, 0x40, 0xb4, 0x3d, 0x70, 0x99, 0x79, 0x16, 0xa8, 0x05, 0xa8, 0x05,
		0xa4, 0x15, 0xa4, 0x15, 0xa4, 0x55, 0x15, 0xd2, 0x3a, 0x60, 0x29, 0x52, 0x26, 0x44, 0x0f, 0x41,
		0xd4, 0x43, 0xd4, 0x4b, 0x15, 0xf5, 0xa1, 0xed, 0xb2, 0x5a, 0x33, 0x85, 0xa4, 0x6f, 0xc2, 0xa5,
		0xbb, 0x88, 0xd6, 0xe1, 0xd2, 0x6d, 0x1e, 0x1d, 0x1d, 0xc2, 0x87, 0x9b, 0x5e, 0xb7, 0xf0, 0xa3,
		0x1e, 0xe3, 0xd4, 0x41, 0x5b, 0xaa, 0xa0, 0xf8, 0x29, 0xe8, 0x20, 0xe8, 0x20, 0xa9, 0x3a, 0x48,
		0x78, 0xee, 0x06, 0x2e, 0x27, 0x2a, 0x82, 0xbc, 0x7a, 0x30, 0xba, 0xe4, 0xb8, 0xf5, 0xc1, 0x9a,
		0x7d, 0x18, 0xe7, 0x0b, 0xe7, 0x2b, 0xc5, 0xf9, 0xba, 0x32, 0x5c, 0xcb, 0x60, 0x1e, 0x7d, 0xdd,
		0xdc, 0x1a, 0x98, 0xe1, 0x4c, 0x12, 0x37, 0x1c, 0x8c, 0x29, 0x5e, 0x19, 0x3d, 0x16, 0xb1, 0xd3,
		0xe1, 0x73, 0x37, 0xb5, 0xbb, 0xe1, 0xfc, 0xe6, 0x3f, 0xd7, 0xa9, 0x5d, 0x0d, 0xf7, 0x17, 0x77,
		0xf7, 0x9d, 0xeb, 0x3f, 0x52, 0xfb, 0x18, 0x3e, 0x5f, 0xff, 0xfb, 0x3a, 0x65, 0xff, 0x47, 0xa3,
		0xc1, 0xdf, 0x5e, 0xb5, 0xaf, 0xef, 0x53, 0x3b, 0x15, 0xae, 0x6f, 0xee, 0x1f, 0xba, 0xb7, 0x17,
		0x77, 0x17, 0xe9, 0xda, 0x38, 0x8e, 0xda, 0xb8, 0xbc, 0xf9, 0xcf, 0xc5, 0xed, 0xc3, 0x65, 0xfb,
		0xef, 0x8b, 0xdb, 0x87, 0xf8, 0x65, 0x16, 0xd5, 0x33, 0x31, 0x79, 0x59, 0xe9, 0x5c, 0x12, 0xf1,
		0xd4, 0x5a, 0x5a, 0x3d, 0xc5, 0xa3, 0x4b, 0x6f, 0x68, 0xab, 0x0b, 0x7a, 0xd3, 0x03, 0x3d, 0xb3,
		0x58, 0xe9, 0x1c, 0x22, 0x93, 0xed, 0x9a, 0xce, 0x13, 0x32, 0xd9, 0xac, 0xe9, 0x3c, 0x20, 0x9f,
		0xbb, 0x91, 0x34, 0x11, 0xe5, 0x81, 0x80, 0xad, 0x12, 0xb6, 0x4a, 0x95, 0x6d, 0x95, 0x3b, 0x9e,
		0xbd, 0xe5, 0xc6, 0x27, 0x14, 0xc9, 0x5b, 0xd6, 0x6e, 0xb7, 0xed, 0xdf, 0xe2, 0x4e, 0x5a, 0x4a,
		0xfc, 0xe7, 0xd7, 0xc0, 0x36, 0x0d, 0x27, 0x96, 0xa0, 0x2e, 0x49, 0x11, 0x5c, 0xbc, 0xd4, 0x42,
		0x39, 0x18, 0x1e, 0xa3, 0x86, 0x1b, 0x98, 0xc4, 0x1e, 0x12, 0xba, 0x93, 0x54, 0x6f, 0x76, 0xfe,
		0xc8, 0xe7, 0xb2, 0x66, 0x8b, 0xa5, 0xc9, 0xe7, 0xf2, 0x75, 0x31, 0x9f, 0xcb, 0xff, 0x98, 0x21,
		0xa5, 0xc4, 0x65, 0x7b, 0xfb, 0x07, 0x1f, 0x3e, 0x1c, 0xcc, 0xbf, 0xfa, 0xd6, 0xcc, 0xef, 0xbd,
		0x5f, 0xfc, 0x6d, 0xf1, 0x4f, 0x8b, 0x87, 0x32, 0x58, 0xfc, 0xc2, 0xf8, 0xf3, 0xc5, 0x8f, 0x47,
		0x49, 0x5b, 0xb8, 0xae, 0xe2, 0xa5, 0x1d, 0xb0, 0x36, 0x63, 0x74, 0xbb, 0x95, 0xbc, 0xb2, 0xdd,
		0x0b, 0x27, 0x0e, 0x00, 0xd9, 0xd2, 0x18, 0x5e, 0xb9, 0x32, 0x5e, 0x66, 0x9e, 0xcc, 0x76, 0xcd,
		0xaa, 0x72, 0x43, 0x2d, 0x42, 0x89, 0xf5, 0xf1, 0xb5, 0xd2, 0xd2, 0xdc, 0xd0, 0x71, 0xd2, 0x3c,
		0xfa, 0x39, 0x20, 0x74, 0x2b, 0x6b, 0x3c, 0x1f, 0xc9, 0xce, 0x7c, 0x3b, 0x45, 0xd2, 0xc9, 0xf8,
		0x29, 0x91, 0x19, 0x27, 0x3d, 0x53, 0x1f, 0x3a, 0x86, 0x1b, 0x47, 0x83, 0x06, 0xad, 0xfb, 0x6e,
		0xe7, 0xfc, 0xa1, 0xfa, 0xd7, 0x49, 0xad, 0x5a, 0xdd, 0xa9, 0x34, 0x94, 0xd1, 0x2b, 0xd8, 0x49,
		0xb5, 0x12, 0x4f, 0x5c, 0x39, 0x7d, 0x62, 0x5b, 0xc4, 0x65, 0x36, 0x7b, 0x4d, 0xa9, 0x53, 0xb6,
		0x91, 0x38, 0x9d, 0x71, 0x57, 0x1f, 0x8d, 0x80, 0xa4, 0xaf, 0x2d, 0x17, 0x9f, 0xab, 0xfb, 0xbf,
		0xbb, 0x17, 0x77, 0xdb, 0x2e, 0x78, 0xec, 0xcc, 0x94, 0x5a, 0x6b, 0x67, 0x6e, 0xcc, 0xdb, 0xc8,
		0x82, 0x0c, 0x36, 0x31, 0x8e, 0xc3, 0x3d, 0x69, 0x9f, 0x28, 0x34, 0xdc, 0x53, 0xb5, 0xde, 0xee,
		0x69, 0x5d, 0xa1, 0xe1, 0xb6, 0xaf, 0xff, 0x56, 0xae, 0x7a, 0x10, 0x1f, 0xa8, 0x31, 0xc3, 0x15,
		0xb6, 0x47, 0x1c, 0x5b, 0x13, 0x2d, 0x50, 0x47, 0x50, 0x47, 0x50, 0xc7, 0x95, 0xd4, 0xd1, 0xf7,
		0x28, 0x6b, 0xcd, 0x25, 0xd4, 0xed, 0xcd, 0x35, 0x15, 0x84, 0x8f, 0x6b, 0x3a, 0x99, 0xfd, 0x4b,
		0xae, 0x29, 0x47, 0xd9, 0x36, 0x4b, 0x37, 0x95, 0x22, 0x9b, 0x5f, 0x2e, 0x43, 0x6c, 0x01, 0x62,
		0x0b, 0x16, 0x2c, 0x06, 0x32, 0x63, 0x0b, 0x94, 0xe3, 0x12, 0x49, 0x45, 0xbf, 0x6d, 0x6f, 0x70,
		0xe6, 0xcc, 0x27, 0x8c, 0x5a, 0xfd, 0xca, 0xf7, 0xef, 0x7e, 0xd8, 0xcc, 0x7c, 0x56, 0x01, 0x43,
		0x1a, 0x86, 0x53, 0x57, 0x64, 0x9c, 0x47, 0x4a, 0x8c, 0xd3, 0x64, 0xc4, 0xb1, 0x83, 0x2b, 0xc2,
		0x8c, 0xcb, 0x9b, 0x9b, 0xae, 0x12, 0x43, 0xb6, 0x02, 0x47, 0x95, 0x71, 0xd6, 0x95, 0x19, 0xa8,
		0xef, 0xa4, 0xf2, 0xee, 0xc9, 0x1f, 0x6c, 0xdf, 0x31, 0x5c, 0x72, 0x52, 0xad, 0x1f, 0x2a, 0x35,
		0x5a, 0x35, 0x84, 0x81, 0x13, 0x5e, 0x5c, 0x76, 0x55, 0x19, 0xa9, 0xef, 0xb9, 0x0a, 0x0d, 0xf5,
		0x72, 0x94, 0x5e, 0xea, 0xd2, 0x76, 0xbf, 0x2b, 0x34, 0xea, 0x1b, 0x37, 0x54, 0x68, 0xb4, 0xdd,
		0xb1, 0x43, 0xef, 0xb3, 0x6b, 0x2b, 0x32, 0xea, 0x3f, 0x94, 0x7a, 0xc7, 0x7f, 0x28, 0xf8, 0x8e,
		0xa9, 0xe1, 0xab, 0x31, 0x4e, 0xd3, 0x25, 0x4c, 0x9d, 0x91, 0x76, 0x55, 0x81, 0x0b, 0xc1, 0xab,
		0x6b, 0x2a, 0x31, 0x50, 0x36, 0x50, 0x64, 0x98, 0xe7, 0x2f, 0xb6, 0x22, 0x23, 0xfd, 0x14, 0xba,
		0xaa, 0x0c, 0xb5, 0x33, 0x30, 0x14, 0x19, 0xe9, 0x18, 0xc8, 0x28, 0x32, 0xda, 0x5b, 0xc3, 0xb2,
		0x3d, 0x45, 0xc6, 0x7a, 0x17, 0x3e, 0x26, 0x21, 0x98, 0x8a, 0x0c, 0xf9, 0x8b, 0x69, 0x5f, 0xb8,
		0x56, 0x97, 0xa9, 0x32, 0x5c, 0x9b, 0xb2, 0x50, 0x99, 0xbd, 0xfb, 0xe8, 0xb9, 0x96, 0x12, 0x43,
		0x1d, 0xda, 0xa6, 0x7d, 0xe3, 0xb3, 0x48, 0x2c, 0x5c, 0xb0, 0xe7, 0x6d, 0x1c, 0x5a, 0xf9, 0x0d,
		0xfa, 0xd1, 0x08, 0x6c, 0xb3, 0x73, 0x77, 0x7e, 0xad, 0xc4, 0x60, 0x9f, 0x7c, 0xdf, 0x73, 0x6c,
		0xf3, 0xd5, 0x30, 0x4d, 0x2f, 0x74, 0x99, 0xed, 0x3e, 0x29, 0x31, 0x6c, 0x9b, 0x29, 0x01, 0x12,
		0x1f, 0xa9, 0x6d, 0x3d, 0x29, 0x21, 0x72, 0x1f, 0x03, 0x25, 0xc0, 0xac, 0x69, 0x3c, 0x3a, 0xe4,
		0xdc, 0xfb, 0xe1, 0x06, 0x8c, 0x12, 0x63, 0x70, 0xdb, 0xef, 0x6e, 0x55, 0xf1, 0x32, 0xcf, 0x81,
		0xfb, 0x3f, 0x0c, 0xff, 0xdc, 0x63, 0xb5, 0xda, 0xc7, 0x20, 0x50, 0x6c, 0xc4, 0x5d, 0xea, 0xf5,
		0x6d, 0x87, 0xa8, 0x33, 0xea, 0xff, 0x30, 0x7f, 0xac, 0x91, 0x95, 0x81, 0x69, 0xe6, 0xa3, 0xf3,
		0x85, 0x98, 0xcc, 0xb8, 0x63, 0x86, 0x12, 0x6a, 0xce, 0x34, 0xd9, 0xc5, 0x20, 0x54, 0x02, 0xf1,
		0x98, 0x44, 0x8d, 0x03, 0x37, 0xbe, 0xc1, 0xa3, 0xc2, 0x50, 0xed, 0xc0, 0xf4, 0x3a, 0x77, 0x97,
		0xdb, 0xc5, 0x13, 0xe7, 0x38, 0x5e, 0x57, 0x8d, 0x33, 0xe5, 0xf5, 0xfb, 0x44, 0x0d, 0x31, 0xeb,
		0x0d, 0x7c, 0x2f, 0xb0, 0x19, 0x51, 0xc5, 0xed, 0x60, 0x99, 0x4a, 0x6c, 0x54, 0xcb, 0x72, 0xff,
		0x52, 0xc3, 0xa5, 0x67, 0xd9, 0x4f, 0x36, 0x33, 0x9c, 0xae, 0xf7, 0x83, 0x50, 0xc7, 0x76, 0x89,
		0x42, 0x63, 0xfe, 0x0f, 0x35, 0x7c, 0x9f, 0xd0, 0x9b, 0x21, 0xa1, 0xcf, 0xc4, 0xb0, 0xce, 0xd4,
		0x91, 0xbb, 0x96, 0x13, 0xfc, 0x50, 0x62, 0x9c, 0x9e, 0x19, 0x9c, 0xcd, 0x43, 0x75, 0xa5, 0x86,
		0x7d, 0x75, 0x36, 0x60, 0x81, 0xaa, 0x63, 0x37, 0x4c, 0xc7, 0x78, 0x55, 0xc3, 0x56, 0x92, 0x0c,
		0xfa, 0xda, 0xea, 0x2b, 0x36, 0x5e, 0xb5, 0xde, 0xef, 0x9d, 0xc9, 0xc8, 0xd1, 0x91, 0x55, 0xfb,
		0xf4, 0xc3, 0xba, 0xf1, 0x1e, 0x95, 0x1c, 0xfa, 0x2d, 0x61, 0x8a, 0x0e, 0xbd, 0x7e, 0x1e, 0xa8,
		0x3a, 0xf2, 0xcf, 0xca, 0x8d, 0xfc, 0xb3, 0xaf, 0xa0, 0xcc, 0x9e, 0x0c, 0x5a, 0x25, 0x28, 0xb2,
		0x38, 0x76, 0x75, 0x6c, 0x71, 0xd1, 0xd0, 0x6f, 0xfa, 0xd6, 0x40, 0x3d, 0x05, 0x1f, 0x8d, 0xda,
		0x50, 0x6a, 0x87, 0x07, 0x55, 0x45, 0x86, 0xf9, 0x31, 0x74, 0x2d, 0x35, 0x4c, 0x9c, 0x56, 0x50,
		0x53, 0x64, 0x98, 0x9f, 0xce, 0x2f, 0xd5, 0x18, 0xa9, 0x12, 0x21, 0xbf, 0x96, 0x1a, 0x81, 0x3c,
		0xd6, 0xf0, 0xb1, 0x1d, 0xd8, 0x1d, 0x57, 0x9d, 0xb1, 0xde, 0x84, 0x4c, 0x91, 0xc1, 0xde, 0x9a,
		0xa6, 0x62, 0x4a, 0x2b, 0x1e, 0xf3, 0x95, 0x61, 0x5e, 0x2a, 0x43, 0x49, 0xe3, 0x11, 0x2b, 0xa5,
		0x63, 0xa3, 0x11, 0x07, 0xca, 0xbd, 0xe3, 0xe0, 0xde, 0x52, 0x23, 0x34, 0xcd, 0x1a, 0x3e, 0xde,
		0x5b, 0x4a, 0xec, 0x04, 0xa2, 0x04, 0x30, 0x20, 0xa6, 0xa7, 0x48, 0x44, 0x32, 0x51, 0xe3, 0x22,
		0x08, 0xf1, 0x1d, 0xaa, 0x84, 0x87, 0x93, 0x04, 0xa6, 0x22, 0x6f, 0x94, 0x3d, 0x13, 0xea, 0x12,
		0x76, 0x78, 0xf5, 0x68, 0x33, 0x95, 0x06, 0x7c, 0x16, 0x0c, 0x0c, 0x53, 0x89, 0xd8, 0xbe, 0xbe,
		0x11, 0x30, 0x55, 0xc6, 0xa9, 0x4c, 0xec, 0x61, 0x32, 0xd8, 0x4f, 0x7f, 0xa9, 0x32, 0x5c, 0x45,
		0xee, 0xdc, 0xf6, 0x4d, 0xdb, 0x57, 0xc5, 0xd7, 0xdd, 0xb7, 0x2c, 0x25, 0x6e, 0x27, 0xf4, 0xed,
		0x47, 0x4a, 0x14, 0x32, 0x79, 0xf6, 0xe9, 0xb9, 0xa3, 0x50, 0x58, 0x7a, 0x9f, 0x7e, 0xf2, 0xe8,
		0x0f, 0x83, 0xaa, 0xa1, 0x0e, 0xa8, 0x31, 0x20, 0xb7, 0xc4, 0x31, 0x5e, 0xd5, 0x1a, 0x6d, 0x7c,
		0xaf, 0xc2, 0xf4, 0x5c, 0x97, 0x98, 0x4c, 0xad, 0x91, 0x5f, 0x75, 0x3b, 0x6a, 0x0d, 0xf8, 0x8e,
		0xd0, 0xa1, 0xad, 0xc6, 0x05, 0x96, 0x3e, 0xed, 0xd7, 0x9a, 0x57, 0x7d, 0xaa, 0x8e, 0x51, 0xf9,
		0xe9, 0xb8, 0x7a, 0x68, 0xb0, 0xfa, 0xe0, 0x51, 0x9d, 0xc1, 0x36, 0x1b, 0x4a, 0x68, 0xe3, 0xa7,
		0xd3, 0xd3, 0x93, 0x9a, 0x2a, 0x03, 0xad, 0xab, 0x32, 0x50, 0x25, 0x2c, 0xf6, 0x4f, 0xaa, 0x90,
		0x9c, 0xa7, 0xbe, 0x12, 0x77, 0xd9, 0x9f, 0xec, 0x27, 0xe3, 0xd1, 0x1e, 0x31, 0x1c, 0x45, 0x4c,
		0x48, 0x4f, 0x8a, 0x24, 0x13, 0x79, 0xa2, 0x87, 0xd5, 0xc3, 0xce, 0xf9, 0xbd, 0x32, 0x63, 0xbd,
		0x55, 0x64, 0xac, 0x4c, 0x89, 0x93, 0xf5, 0x7c, 0x58, 0x3f, 0xfc, 0xc3, 0x60, 0xe4, 0x3b, 0x21,
		0xbe, 0x1a, 0xa6, 0x8e, 0x68, 0xc4, 0x5d, 0xea, 0xbd, 0x28, 0xc1, 0x17, 0x9e, 0xad, 0xe7, 0xda,
		0x49, 0xbd, 0xae, 0xc6, 0x50, 0x1d, 0x53, 0x8d, 0x71, 0x2a, 0x92, 0x04, 0xed, 0xd9, 0xf6, 0x09,
		0x75, 0x0c, 0x57, 0x95, 0xc1, 0xfa, 0xb6, 0x32, 0x03, 0x55, 0x2a, 0xa9, 0xc1, 0xb3, 0x37, 0x20,
		0xbe, 0x6b, 0xa8, 0x31, 0xd4, 0x80, 0x75, 0x0d, 0x25, 0xec, 0x46, 0xcf, 0x41, 0xa0, 0xc6, 0x7e,
		0x7d, 0xf5, 0x09, 0x55, 0xe8, 0x86, 0x9f, 0x6d, 0xb8, 0x86, 0x9e, 0x29, 0xf7, 0x6c, 0xd2, 0x64,
		0x86, 0x1c, 0xb4, 0xd9, 0x26, 0xb3, 0x34, 0xa9, 0x6c, 0x39, 0x69, 0x33, 0x2c, 0x06, 0xef, 0x79,
		0xa4, 0xca, 0x55, 0x5b, 0xa8, 0xf1, 0x1f, 0x29, 0x3d, 0xfe, 0xac, 0xb9, 0x6d, 0x0b, 0x34, 0x95,
		0x54, 0xfe, 0xb7, 0x62, 0x8d, 0xbf, 0xae, 0xfc, 0x04, 0xd2, 0xe5, 0xc8, 0x2d, 0xd0, 0x24, 0x32,
		0xe4, 0xce, 0x2d, 0xe0, 0x2c, 0xd4, 0x16, 0x4e, 0x29, 0x73, 0xed, 0x16, 0x6b, 0x06, 0xa9, 0xcc,
		0x66, 0x85, 0x9b, 0x42, 0xa6, 0xdc, 0xbc, 0x85, 0x9b, 0x4d, 0xaa, 0x7c, 0xb2, 0x85, 0x9b, 0x45,
		0xa6, 0x3c, 0xb3, 0x85, 0x9a, 0xcd, 0x1f, 0xa5, 0x58, 0x93, 0x3f, 0x4a, 0xb4, 0x26, 0xa9, 0x72,
		0x02, 0x17, 0x69, 0xfc, 0xe9, 0x72, 0x05, 0x17, 0x6d, 0x06, 0x5d, 0xd5, 0xe1, 0x54, 0xba, 0xdc,
		0xc2, 0x05, 0x9a, 0x40, 0x9a, 0xab, 0x4a, 0x85, 0x1a, 0x7e, 0xaa, 0x5c, 0xc4, 0x85, 0x9a, 0x41,
		0xba, 0x1c, 0xc5, 0x85, 0x9a, 0x42, 0xaa, 0xdc, 0xc5, 0x85, 0x9a, 0x41, 0xea, 0x9c, 0xc6, 0x85,
		0x9a, 0x45, 0xca, 0x24, 0x7a, 0x85, 0x9a, 0x43, 0xb6, 0x1c, 0xc8, 0x85, 0x9a, 0x4a, 0xfa, 0xdc,
		0xc8, 0xc5, 0x9a, 0x46, 0xda, 0x9c, 0xc9, 0x85, 0x9a, 0x45, 0xba, 0x5c, 0xca, 0x05, 0x9a, 0x42,
		0xf6, 0x1c, 0xcb, 0xc5, 0x99, 0x4c, 0x86, 0xdc, 0xcb, 0x05, 0x9a, 0x04, 0x8f, 0x9c, 0xcc, 0x05,
		0x9a, 0x4e, 0xaa, 0x5c, 0xcd, 0x05, 0x1a, 0x7f, 0xca, 0x1c, 0xce, 0x05, 0x9a, 0x41, 0xa0, 0x34,
		0x99, 0xe0, 0x94, 0xf3, 0xb9, 0x48, 0x13, 0xca, 0x96, 0x0b, 0xba, 0x90, 0x33, 0x49, 0x9d, 0x23,
		0xba, 0x68, 0xb3, 0xc9, 0x9c, 0x3b, 0xba, 0x40, 0x13, 0xca, 0x94, 0x53, 0xba, 0x40, 0xf3, 0x48,
		0x9b, 0x6b, 0xba, 0x40, 0x53, 0x20, 0x6a, 0x1f, 0xf4, 0xb4, 0x91, 0x2b, 0x05, 0x9a, 0x42, 0xa6,
		0x9c, 0xd5, 0x05, 0x9a, 0x87, 0xab, 0xf6, 0x59, 0x4e, 0x99, 0xe3, 0xba, 0x48, 0x33, 0xc8, 0x94,
		0xfb, 0xba, 0x38, 0x13, 0x49, 0x95, 0x13, 0xbb, 0x40, 0xc3, 0x4f, 0x99, 0x2b, 0xbb, 0x40, 0x33,
		0xc8, 0x9c, 0x43, 0xbb, 0x70, 0x73, 0xe1, 0x95, 0x5b, 0xbb, 0x40, 0x13, 0x4b, 0x95, 0x73, 0xbb,
		0x40, 0xe3, 0xe7, 0x91, 0x8b, 0xbb, 0x80, 0xd3, 0xc9, 0x9c, 0xa3, 0xbb, 0x88, 0x73, 0x4a, 0x9d,
		0xbb, 0xbb, 0x80, 0x93, 0x49, 0x95, 0xd3, 0xbb, 0x90, 0xf3, 0x28, 0xc7, 0x7a, 0x64, 0xcd, 0x01,
		0x5e, 0xe0, 0x29, 0xa5, 0xcd, 0x0d, 0x5e, 0xdc, 0x29, 0xa5, 0xcd, 0x19, 0x5e, 0xe0, 0x19, 0x7d,
		0x2e, 0xcd, 0x8c, 0xd2, 0x67, 0x87, 0x2c, 0xf0, 0x64, 0xca, 0x00, 0xd5, 0x78, 0xe5, 0x24, 0x2f,
		0xd6, 0x94, 0xb2, 0xe6, 0x2a, 0x2f, 0xde, 0x6c, 0x8c, 0x52, 0x9c, 0xa0, 0x34, 0xb9, 0xcd, 0x0b,
		0x35, 0xfc, 0xb4, 0xe9, 0x69, 0x8a, 0x34, 0x89, 0x9a, 0xe2, 0xc3, 0x4f, 0x95, 0x23, 0xbd, 0x48,
		0x33, 0x50, 0xfa, 0xca, 0x87, 0xa5, 0x76, 0xa0, 0x62, 0xfa, 0x5c, 0xeb, 0x45, 0x9b, 0x43, 0xaa,
		0x1c, 0xec, 0x85, 0x9a, 0x44, 0xc6, 0xdc, 0xec, 0x45, 0x9b, 0x4b, 0xfa, 0x7c, 0xe2, 0x45, 0x9b,
		0x49, 0x29, 0xb0, 0x46, 0xc6, 0x1c, 0xef, 0x45, 0x9b, 0x49, 0xba, 0xdc, 0xef, 0x85, 0x9a, 0x45,
		0xaa, 0x9c, 0xf0, 0xc5, 0x99, 0x01, 0x51, 0x1a, 0x38, 0xa5, 0xcd, 0x21, 0x5f, 0xa0, 0x19, 0xa8,
		0x7d, 0xc1, 0x31, 0x65, 0xce, 0xf9, 0x02, 0x4d, 0x20, 0x5d, 0x2e, 0xfa, 0x02, 0x4d, 0x20, 0x5b,
		0x8e, 0xfa, 0xe2, 0x4d, 0x24, 0x6d, 0xee, 0xfa, 0xe2, 0xcc, 0x24, 0x5d, 0xba, 0xc7, 0x62, 0x8d,
		0x5f, 0xf9, 0x18, 0xf0, 0x4c, 0x39, 0xf0, 0x8b, 0x35, 0x0d, 0xc5, 0x73, 0x73, 0xa4, 0xcf, 0x99,
		0x5f, 0xa0, 0x39, 0xa4, 0xca, 0xa5, 0x5f, 0xa0, 0xf1, 0x67, 0xca, 0xb1, 0x5f, 0xa0, 0x79, 0x64,
		0xc9, 0xbd, 0x5f, 0xa4, 0x69, 0xa4, 0xce, 0xc9, 0x5f, 0xa4, 0x49, 0xa4, 0xcf, 0xd5, 0x5f, 0xc4,
		0x59, 0x64, 0xcb, 0xe1, 0x5f, 0xc4, 0x19, 0xa5, 0xca, 0xed, 0x5f, 0xc4, 0x89, 0xa4, 0xce, 0xf9,
		0x5f, 0xa4, 0xc9, 0x64, 0xab, 0x05, 0x50, 0x9c, 0x99, 0x64, 0xa8, 0x11, 0x50, 0xb4, 0x49, 0xa4,
		0xaa, 0x1d, 0x50, 0xa0, 0x49, 0xa4, 0xab, 0x29, 0x50, 0xac, 0x09, 0xd4, 0x55, 0x9f, 0x80, 0xd2,
		0x9e, 0xaf, 0x27, 0xd5, 0xc9, 0x6a, 0xaa, 0x9a, 0x05, 0x05, 0x1a, 0x7e, 0xd6, 0x5a, 0x06, 0x05,
		0x9a, 0x8a, 0xe2, 0xc9, 0xda, 0xd2, 0xd7, 0x3e, 0x28, 0xd8, 0x1c, 0x6e, 0x15, 0x9f, 0x03, 0x53,
		0xfa, 0x44, 0x67, 0xad, 0xa1, 0x50, 0xac, 0x99, 0xa4, 0xac, 0xad, 0x50, 0xa0, 0x49, 0xa4, 0xad,
		0xb9, 0x50, 0xa4, 0x29, 0x38, 0xa6, 0xda, 0xe3, 0x57, 0x3c, 0x39, 0x6f, 0x86, 0xda, 0x0d, 0x85,
		0x9a, 0x84, 0x6f, 0x2b, 0x3f, 0x81, 0x52, 0x24, 0x6f, 0x4a, 0x5d, 0x03, 0xa2, 0x48, 0x53, 0x48,
		0x59, 0x1b, 0xa2, 0x40, 0x53, 0x48, 0x55, 0x33, 0xa2, 0x40, 0xe3, 0xcf, 0x54, 0x4b, 0xa2, 0x38,
		0xf3, 0xb0, 0x1f, 0x07, 0x87, 0xc7, 0x55, 0xdf, 0xa0, 0x67, 0xcf, 0x6a, 0x5f, 0xc9, 0xb7, 0x15,
		0x77, 0xd4, 0xd9, 0x84, 0x90, 0xda, 0xe1, 0x69, 0x43, 0xf5, 0x39, 0x9c, 0x54, 0xeb, 0xb5, 0x5a,
		0x19, 0x26, 0x51, 0x2f, 0xc3, 0x24, 0x8e, 0x4a, 0xb1, 0x9f, 0x9a, 0xff, 0xb9, 0x6a, 0x5f, 0x97,
		0x60, 0x22, 0x87, 0x86, 0x75, 0x69, 0x28, 0x9d, 0x48, 0xce, 0xee, 0xeb, 0x4f, 0x81, 0xda, 0x7a,
		0xa2, 0xdf, 0xfd, 0x71, 0xff, 0xea, 0x13, 0xb5, 0xe7, 0xf0, 0xa5, 0x6f, 0x2b, 0x3f, 0x09, 0xc5,
		0x73, 0x00, 0xd9, 0x03, 0xa5, 0x0d, 0xc6, 0xb6, 0xdb, 0xb7, 0x5d, 0xfb, 0xd1, 0x50, 0x3b, 0x73,
		0x6a, 0x5c, 0x1d, 0xcd, 0x21, 0xc6, 0x50, 0xed, 0xa3, 0xe0, 0xab, 0x3d, 0xfa, 0x12, 0xc4, 0xd3,
		0xd8, 0xfe, 0xcd, 0x90, 0xd0, 0xb6, 0xda, 0x57, 0xd1, 0x46, 0x93, 0x38, 0x53, 0xdc, 0x62, 0x39,
		0x9e, 0x85, 0x63, 0xfc, 0x50, 0x7b, 0x16, 0xea, 0xd7, 0x38, 0xb4, 0x03, 0xcb, 0x55, 0x7d, 0xfc,
		0x81, 0xea, 0x13, 0x08, 0xd5, 0x9e, 0x80, 0x77, 0x72, 0x52, 0xad, 0xd7, 0x1d, 0xc5, 0x45, 0xd2,
		0x68, 0x1a, 0x87, 0xea, 0x5f, 0x8f, 0x18, 0xcf, 0xa4, 0x71, 0xef, 0x7d, 0x27, 0xee, 0xc7, 0x30,
		0x28, 0xc1, 0x5c, 0x8e, 0xce, 0x6e, 0x3f, 0x75, 0x3b, 0x2e, 0x2b, 0xc3, 0x54, 0xce, 0x19, 0x2d,
		0xc3, 0x34, 0x3e, 0xd9, 0x8f, 0xa4, 0x14, 0x13, 0x89, 0x8f, 0xc9, 0xad, 0xe2, 0xd9, 0xff, 0xc7,
		0x93, 0x69, 0x5e, 0x29, 0x4e, 0xb8, 0x83, 0x50, 0x69, 0x9e, 0xe4, 0xd4, 0x55, 0x4f, 0x7b, 0xec,
		0x1c, 0xda, 0x7e, 0x19, 0xe6, 0xf0, 0xa2, 0xfc, 0x24, 0x0c, 0xff, 0x51, 0xf1, 0xf1, 0x5b, 0x8a,
		0x8f, 0x5f, 0xe9, 0xbc, 0x9a, 0x8e, 0xed, 0x92, 0x27, 0xea, 0x29, 0x2e, 0x4f, 0x07, 0x6a, 0x0f,
		0xdf, 0x33, 0x0d, 0xe7, 0xde, 0x70, 0x94, 0xbe, 0x04, 0x31, 0x30, 0xcc, 0x3b, 0x62, 0x9e, 0x79,
		0x2e, 0xa3, 0x9e, 0xe3, 0x10, 0xab, 0xf3, 0x49, 0xfd, 0xd9, 0x7c, 0x76, 0xcd, 0xb2, 0xcc, 0x87,
		0x58, 0xb6, 0x71, 0x65, 0xd8, 0xce, 0xcd, 0x90, 0xd0, 0x8e, 0xd2, 0xa7, 0x65, 0xd0, 0xbf, 0xb3,
		0x9f, 0x54, 0xbf, 0xc8, 0x3c, 0xb0, 0xbd, 0x17, 0xb5, 0xb3, 0xe5, 0x0f, 0x3c, 0xd3, 0xf8, 0x42,
		0x68, 0x60, 0x7b, 0x6e, 0x4d, 0xed, 0x79, 0x58, 0x44, 0x69, 0x53, 0xff, 0xc0, 0x37, 0xd5, 0x1e,
		0x3e, 0x79, 0xba, 0xa7, 0x86, 0x1b, 0xf8, 0x8a, 0xe7, 0x86, 0x1d, 0xf8, 0x4e, 0xa0, 0xfa, 0xf8,
		0xef, 0x43, 0xd5, 0xa3, 0x18, 0x07, 0x81, 0xe2, 0xd1, 0x7f, 0x83, 0xa1, 0xda, 0xc3, 0x7f, 0xa5,
		0xb6, 0xe2, 0x17, 0xe8, 0xdc, 0xbe, 0xa1, 0xf4, 0x41, 0x76, 0x03, 0xb5, 0xa3, 0x08, 0xbc, 0x51,
		0xf9, 0xdb, 0x12, 0xa4, 0x49, 0x99, 0x9f, 0xc9, 0x1f, 0xaa, 0xd3, 0xec, 0xf1, 0x74, 0x4a, 0xa1,
		0xad, 0x3d, 0xd5, 0x13, 0x6b, 0x79, 0xcc, 0xbd, 0xb1, 0x42, 0xd5, 0x67, 0xc0, 0x94, 0x9e, 0x81,
		0x6f, 0x50, 0xa5, 0x6f, 0x0f, 0xf9, 0x96, 0x1b, 0xdf, 0x78, 0xbf, 0xf4, 0x3c, 0xbf, 0x56, 0x96,
		0x89, 0x28, 0x1d, 0xad, 0xef, 0xab, 0xad, 0xba, 0x7d, 0xb5, 0x83, 0x3b, 0x7c, 0xcf, 0xad, 0x1d,
		0x1d, 0x29, 0x3e, 0x83, 0xa6, 0xda, 0xb7, 0xac, 0x7d, 0x4f, 0x69, 0xf0, 0xed, 0xfb, 0xbe, 0xe2,
		0xc3, 0xbf, 0x0a, 0x1d, 0x66, 0x3b, 0xb6, 0xfb, 0x5d, 0xfd, 0x14, 0x59, 0x3e, 0xb5, 0x07, 0x06,
		0x7d, 0xed, 0xdc, 0x9d, 0x5f, 0xab, 0x3d, 0x0d, 0xcf, 0x57, 0x3c, 0x1e, 0x39, 0x9a, 0xc2, 0xc7,
		0xff, 0xb4, 0xfd, 0xfa, 0x95, 0xaf, 0xfa, 0x34, 0xce, 0x5c, 0xb5, 0xed, 0x7c, 0xd1, 0x1c, 0xce,
		0x3d, 0x33, 0xf8, 0x8f, 0x4d, 0x89, 0x43, 0x82, 0x92, 0x14, 0xed, 0x5c, 0x9c, 0x55, 0x19, 0x6a,
		0x77, 0x2e, 0xce, 0xa9, 0x0c, 0xa5, 0x33, 0xa2, 0x39, 0xc5, 0x1a, 0xc6, 0x77, 0xc8, 0x8b, 0xa7,
		0xfc, 0xf2, 0x74, 0x3d, 0xdb, 0x65, 0xf7, 0x5e, 0xfc, 0xbf, 0x3b, 0x42, 0x6d, 0xc3, 0x51, 0x7d,
		0x46, 0x5f, 0x6c, 0xca, 0x42, 0xf5, 0xa7, 0x31, 0x39, 0x33, 0xdd, 0x7a, 0x57, 0xf1, 0xa9, 0x30,
		0xe2, 0xb9, 0xb5, 0xaa, 0xea, 0x65, 0x05, 0xc6, 0x13, 0x39, 0x51, 0x7f, 0x22, 0x6a, 0x03, 0xb1,
		0xff, 0xad, 0x9f, 0x1e, 0x2a, 0x6d, 0xea, 0xf9, 0x5f, 0xb5, 0xf5, 0xdf, 0xff, 0x2a, 0x7e, 0xff,
		0x85, 0x1a, 0x96, 0xed, 0x5d, 0xb5, 0xcf, 0x14, 0x9f, 0x83, 0xda, 0x3e, 0x62, 0x4a, 0x0c, 0xf3,
		0xf9, 0xfc, 0xee, 0x52, 0xed, 0x39, 0x3c, 0x85, 0x8e, 0x41, 0x55, 0x4f, 0x0a, 0x48, 0xfb, 0x66,
		0xad, 0xa1, 0x76, 0xee, 0x61, 0xda, 0x37, 0x4f, 0x8e, 0x8f, 0x15, 0x0f, 0x47, 0xa3, 0xbe, 0xd2,
		0x5c, 0x82, 0x06, 0xf5, 0x43, 0xb5, 0xcf, 0x41, 0x40, 0x95, 0xbe, 0x87, 0x10, 0x58, 0xa6, 0xad,
		0xf6, 0xf8, 0xd5, 0xc6, 0x15, 0xaa, 0x87, 0x6d, 0x05, 0xcf, 0xaa, 0x4f, 0x40, 0x6d, 0xcf, 0x63,
		0x60, 0xfb, 0x77, 0xf6, 0x93, 0xe2, 0x33, 0xb8, 0x57, 0x7c, 0x02, 0x2f, 0xf7, 0xde, 0x27, 0x2f,
		0x54, 0x5a, 0x11, 0x07, 0x8e, 0xe2, 0xe7, 0x60, 0x60, 0x05, 0xe7, 0x2f, 0xb6, 0xea, 0x53, 0xe8,
		0x98, 0x8a, 0x2f, 0x83, 0xd7, 0x67, 0x3f, 0x0c, 0x4a, 0x2e, 0x3d, 0xcf, 0x7f, 0x34, 0xcc, 0xef,
		0x6a, 0xcf, 0x45, 0xf1, 0x80, 0xde, 0x78, 0x02, 0x37, 0x43, 0x42, 0x9f, 0x89, 0x61, 0x95, 0x20,
		0xac, 0x34, 0x9e, 0x4f, 0xd7, 0x60, 0xcf, 0xca, 0x4f, 0xe2, 0x8b, 0xd2, 0x15, 0x32, 0x02, 0xaa,
		0xb6, 0x8c, 0x0a, 0x8e, 0x4b, 0x70, 0x93, 0x2e, 0x60, 0x86, 0xf9, 0xfd, 0xde, 0xbb, 0x63, 0xaa,
		0x4b, 0x59, 0x66, 0xd0, 0x4b, 0xb5, 0x73, 0x11, 0x30, 0xc5, 0x39, 0x28, 0x23, 0xaa, 0x1f, 0x06,
		0x46, 0xe8, 0x40, 0xf1, 0x72, 0x00, 0x8c, 0x56, 0xab, 0x27, 0x6a, 0x4f, 0xc0, 0x70, 0x03, 0xff,
		0x4f, 0xd5, 0xcf, 0x82, 0xf2, 0x37, 0x01, 0x43, 0x87, 0xa9, 0x1d, 0x9d, 0x1f, 0x06, 0x4a, 0x5b,
		0x54, 0x87, 0x6a, 0x27, 0xff, 0x1f, 0x1e, 0x1e, 0xa9, 0x3d, 0xfc, 0xa6, 0xda, 0xc3, 0x3f, 0x56,
		0x7a, 0xf8, 0x8a, 0x1b, 0x83, 0x87, 0xaa, 0x97, 0x0a, 0x1b, 0x8e, 0xa2, 0xd8, 0x3a, 0x7e, 0xdb,
		0xb2, 0x28, 0x09, 0x82, 0x12, 0xcc, 0x45, 0x6d, 0xe3, 0xf0, 0x70, 0xf0, 0xc3, 0xa0, 0xe4, 0xda,
		0x36, 0xef, 0x15, 0x0f, 0x60, 0x1d, 0x4d, 0x64, 0x1c, 0x25, 0x79, 0x6d, 0x2b, 0x0d, 0xf2, 0x86,
		0x9e, 0x6d, 0x92, 0xf3, 0xce, 0xb9, 0xf2, 0x73, 0xb8, 0xf8, 0x78, 0xa7, 0xfe, 0x1c, 0xae, 0x4a,
		0x30, 0x85, 0x4f, 0x7f, 0x94, 0x60, 0x33, 0xb9, 0xa6, 0xe1, 0x2b, 0x3f, 0x8b, 0x4f, 0x7f, 0x9c,
		0x5f, 0xb4, 0xaf, 0xdb, 0x65, 0x98, 0xc7, 0x8d, 0xfa, 0x87, 0xfb, 0xd3, 0x5f, 0x37, 0x25, 0x98,
		0x83, 0xfa, 0xeb, 0x50, 0x82, 0xd2, 0x1e, 0xc9, 0x3c, 0xce, 0x8c, 0x47, 0xb5, 0xaf, 0x67, 0x26,
		0x33, 0xf9, 0x44, 0x8d, 0x01, 0xb9, 0x25, 0x8e, 0xf1, 0x5a, 0x8a, 0xe9, 0xa8, 0x9d, 0x5f, 0xf1,
		0xc7, 0x0f, 0xc3, 0xed, 0x76, 0xd5, 0x9f, 0x81, 0xd2, 0xfc, 0xf5, 0xa5, 0x5e, 0x3b, 0x54, 0x7b,
		0xfc, 0x47, 0xcf, 0xa1, 0xcb, 0x94, 0x4f, 0x79, 0xf4, 0x52, 0x3f, 0x1a, 0x38, 0xaa, 0xcf, 0xc0,
		0x57, 0x5b, 0x4d, 0xbc, 0x9c, 0x34, 0x2f, 0x0d, 0x5f, 0x69, 0x13, 0xce, 0xcb, 0xa3, 0xf7, 0x32,
		0xb9, 0x91, 0x98, 0x61, 0x1e, 0xa9, 0x9e, 0xec, 0xbd, 0x93, 0xf0, 0xbe, 0xd2, 0xbd, 0x27, 0x5e,
		0xb5, 0xa7, 0x73, 0x18, 0x70, 0x2a, 0x03, 0x6f, 0x0e, 0xe3, 0x4c, 0x5d, 0x4b, 0x3a, 0x9f, 0xb1,
		0xa6, 0xac, 0x19, 0x9d, 0xdf, 0x60, 0xeb, 0x2a, 0x0d, 0xf6, 0x48, 0xa9, 0x7d, 0x90, 0xb2, 0xd6,
		0x73, 0x6e, 0x03, 0x4e, 0x5b, 0xd3, 0x39, 0x87, 0x01, 0xa7, 0xac, 0xdd, 0x9c, 0xc7, 0x48, 0xd3,
		0xd6, 0x68, 0xce, 0x63, 0xac, 0xa9, 0x6b, 0x31, 0xe7, 0x30, 0x58, 0x47, 0x11, 0x45, 0x9b, 0xa6,
		0xb6, 0x72, 0x0e, 0xc3, 0xcc, 0x50, 0x43, 0x39, 0x8f, 0xd1, 0xa6, 0xaf, 0x95, 0x9c, 0xc3, 0x68,
		0x7d, 0x35, 0x46, 0x99, 0xba, 0xf6, 0x71, 0x1e, 0x83, 0x4d, 0x6d, 0x08, 0xcd, 0x6b, 0xb0, 0xe9,
		0x6a, 0x19, 0xe7, 0x36, 0xda, 0x54, 0x35, 0x8b, 0xf3, 0x18, 0x6d, 0xda, 0xda, 0xc4, 0x39, 0x8c,
		0x35, 0x55, 0x0d, 0xe2, 0x7c, 0xc6, 0x19, 0xa8, 0x32, 0xd0, 0x50, 0x8d, 0x81, 0x66, 0xa8, 0x1d,
		0x9c, 0xdb, 0x70, 0x53, 0xd7, 0x08, 0xce, 0x6d, 0xc4, 0x19, 0x6a, 0x01, 0xe7, 0x36, 0xe6, 0xf4,
		0x35, 0x7f, 0xf3, 0x1b, 0x72, 0xaa, 0xda, 0xbe, 0xf9, 0x0d, 0x37, 0x65, 0x0d, 0xdf, 0xfc, 0x06,
		0x9c, 0xa1, 0x56, 0x6f, 0x6e, 0x83, 0x4e, 0x57, 0x93, 0x37, 0x8f, 0xe1, 0x86, 0x4a, 0xe0, 0xf1,
		0xb4, 0x35, 0x76, 0x73, 0x18, 0x69, 0xea, 0x5a, 0xba, 0xf9, 0x8c, 0xf5, 0x45, 0x99, 0xc1, 0xa6,
		0xaa, 0x8d, 0x9b, 0xcb, 0x38, 0x2d, 0x45, 0xc6, 0xd9, 0x57, 0x62, 0x9c, 0xe9, 0x6b, 0xda, 0xe6,
		0x30, 0xd8, 0x81, 0x1a, 0xc3, 0x4c, 0x5f, 0xa3, 0x56, 0xfe, 0x60, 0x79, 0xd4, 0xa2, 0xcd, 0x6b,
		0xd4, 0x59, 0x6b, 0xce, 0xe6, 0x30, 0xee, 0xac, 0xb5, 0x65, 0x73, 0x18, 0x72, 0xfa, 0x1a, 0xb2,
		0x39, 0x0c, 0x36, 0x65, 0xad, 0xd8, 0x1c, 0x46, 0x9a, 0xa9, 0x26, 0x6c, 0x1e, 0xe3, 0x4d, 0x55,
		0xfb, 0x35, 0x87, 0x81, 0xfa, 0xa6, 0x1a, 0xc3, 0xcc, 0x54, 0xcb, 0x35, 0x8f, 0x01, 0x3b, 0x81,
		0x2a, 0xe3, 0x4c, 0x5b, 0x9b, 0x35, 0x87, 0xd1, 0x06, 0x8a, 0x44, 0xc7, 0xa4, 0xaa, 0xb5, 0x9a,
		0xc3, 0x30, 0xd3, 0xd6, 0x54, 0x95, 0x3f, 0xd4, 0x74, 0xb5, 0x53, 0x73, 0x18, 0x67, 0xa0, 0x86,
		0x57, 0x31, 0x6b, 0x2d, 0xd4, 0xbc, 0x47, 0xfc, 0x87, 0x2a, 0x34, 0x2c, 0x7b, 0x6d, 0xd3, 0x1c,
		0xc6, 0x9c, 0xae, 0x86, 0x69, 0x1e, 0x03, 0x4d, 0x57, 0xab, 0x34, 0x9f, 0x91, 0x32, 0x25, 0x46,
		0x9a, 0xae, 0xf6, 0x68, 0x0e, 0xe3, 0xcc, 0x56, 0x63, 0x34, 0xdf, 0x01, 0x2b, 0x11, 0xdd, 0xe9,
		0xab, 0xa1, 0xca, 0x7c, 0x35, 0x9c, 0xb7, 0x69, 0x6b, 0x80, 0xe6, 0x32, 0xd2, 0x54, 0xb5, 0x3e,
		0xf3, 0x18, 0xa9, 0x12, 0xa0, 0x30, 0x55, 0xed, 0xce, 0x5c, 0x86, 0x99, 0xb9, 0x46, 0x67, 0x0e,
		0xa3, 0xce, 0x52, 0x8b, 0x33, 0x8f, 0xe1, 0xa6, 0xac, 0xb9, 0x99, 0xcf, 0x50, 0x53, 0xd7, 0xd6,
		0xcc, 0x67, 0xb8, 0xe9, 0x6a, 0x68, 0xe6, 0x33, 0x56, 0x5e, 0xb5, 0x32, 0xf3, 0x1f, 0x7d, 0xfa,
		0x9a, 0x98, 0xf9, 0x8f, 0x3d, 0x7d, 0xed, 0xcb, 0x7c, 0xc6, 0x9e, 0xa9, 0xc6, 0x65, 0x3e, 0x43,
		0xe6, 0x51, 0xcb, 0x32, 0x9f, 0x91, 0xa7, 0xae, 0x59, 0x99, 0xcf, 0x70, 0x33, 0xd5, 0xa6, 0xcc,
		0x65, 0xc8, 0x59, 0x6a, 0x50, 0xe6, 0x36, 0xe0, 0x13, 0x75, 0x06, 0xac, 0x06, 0xd0, 0x48, 0x59,
		0x3b, 0x32, 0x87, 0x81, 0xaa, 0xa1, 0x27, 0xfe, 0x57, 0x91, 0x78, 0xe6, 0xf4, 0x35, 0x1f, 0x73,
		0x19, 0xab, 0x1a, 0xbe, 0xa7, 0xf4, 0x35, 0x1c, 0xf3, 0x18, 0x6b, 0x86, 0x5a, 0x8d, 0x39, 0x0c,
		0x37, 0x6d, 0x4d, 0xc6, 0x5c, 0x86, 0x9a, 0xb6, 0xf6, 0x62, 0x0e, 0x83, 0xf5, 0x95, 0xc0, 0xb2,
		0x29, 0x6b, 0x29, 0xe6, 0x31, 0x50, 0xaa, 0x44, 0x7c, 0x6a, 0xba, 0xda, 0x88, 0x79, 0x8c, 0x53,
		0x0d, 0x7d, 0xaa, 0x4a, 0x78, 0x44, 0xca, 0x9a, 0x86, 0x39, 0x0c, 0x54, 0x0d, 0x0f, 0x48, 0xda,
		0x1a, 0x85, 0xb9, 0x8c, 0xf4, 0x5e, 0x91, 0x81, 0xa6, 0xae, 0x39, 0x98, 0xc3, 0x60, 0x1d, 0x45,
		0xf6, 0x69, 0xda, 0x1a, 0x82, 0xf9, 0x0c, 0x35, 0x5d, 0xad, 0xc0, 0x1c, 0xc6, 0x9a, 0xb9, 0x26,
		0x60, 0x1e, 0x63, 0x56, 0x24, 0xf0, 0x8c, 0x4f, 0x8d, 0xbf, 0x9c, 0xc6, 0x9d, 0xae, 0x96, 0x5f,
		0x4e, 0x83, 0x4d, 0x53, 0xb3, 0x2f, 0x87, 0xa1, 0x52, 0x35, 0x64, 0x42, 0x86, 0x1a, 0x7c, 0x39,
		0x8c, 0x36, 0x53, 0xad, 0xbd, 0x5c, 0xc6, 0x9b, 0xae, 0xa6, 0x9e, 0xfc, 0xa1, 0x32, 0x45, 0xb8,
		0x4b, 0xda, 0x1a, 0x79, 0x79, 0x8c, 0x34, 0x65, 0x2d, 0xbc, 0x1c, 0x86, 0x9a, 0xae, 0xe6, 0x5d,
		0x1e, 0x03, 0x4d, 0x5f, 0xdb, 0x2e, 0x87, 0xd1, 0x2a, 0x73, 0x63, 0x22, 0x65, 0xad, 0xba, 0x1c,
		0x06, 0x1a, 0x28, 0x61, 0xb1, 0x1a, 0xaa, 0x91, 0x44, 0x34, 0x55, 0x8d, 0xb9, 0x3c, 0x86, 0xd9,
		0x54, 0x63, 0x98, 0xc7, 0x4a, 0x0c, 0x53, 0x11, 0xa3, 0x5a, 0xca, 0x1a, 0x70, 0x39, 0x0c, 0x34,
		0x73, 0xad, 0xb7, 0xdc, 0xc6, 0xac, 0x86, 0x91, 0x2d, 0x63, 0xed, 0xb6, 0xbc, 0x06, 0x9c, 0xa5,
		0x46, 0x5b, 0x0e, 0x63, 0x4e, 0x5d, 0x8b, 0x2d, 0xa7, 0xb1, 0xa6, 0xaa, 0xb9, 0x96, 0xd7, 0x58,
		0xaf, 0x14, 0x1a, 0x6a, 0xaa, 0x1a, 0x6a, 0x79, 0x8d, 0x36, 0x5d, 0xad, 0xb4, 0x9c, 0x46, 0x9b,
		0xba, 0x26, 0x5a, 0x7e, 0xe3, 0xbd, 0x51, 0xe7, 0x90, 0xa5, 0xaa, 0x71, 0x96, 0xdb, 0x58, 0xd5,
		0x79, 0xaf, 0x0a, 0xa5, 0xea, 0xcd, 0x5a, 0x9b, 0x2c, 0xc7, 0x11, 0x67, 0xa9, 0x41, 0x96, 0xe3,
		0xb0, 0xd5, 0xc8, 0xb7, 0x93, 0xb6, 0xa6, 0x58, 0x5e, 0x23, 0x55, 0x82, 0xf7, 0xa4, 0xab, 0x11,
		0x96, 0xc7, 0x38, 0xb3, 0xd4, 0x02, 0xcb, 0x65, 0xbc, 0xa9, 0x6a, 0x7e, 0xe5, 0x32, 0x52, 0x5f,
		0x0d, 0x31, 0x9b, 0xba, 0x86, 0x57, 0x0e, 0x43, 0xcd, 0x54, 0xab, 0x6b, 0xbb, 0x1a, 0x5d, 0x9b,
		0xd7, 0xe6, 0xda, 0xac, 0xdd, 0x0d, 0xdf, 0x56, 0x85, 0xbc, 0x30, 0x6a, 0xe8, 0xa1, 0x1b, 0xb0,
		0x58, 0x4f, 0xb7, 0xb6, 0x78, 0x67, 0x15, 0x4a, 0xfa, 0x84, 0x12, 0xd7, 0x8c, 0x1e, 0xfb, 0xfa,
		0x4e, 0xec, 0xc2, 0x24, 0x8b, 0x72, 0xfb, 0xe9, 0x4c, 0xab, 0x9f, 0x34, 0x0f, 0x5b, 0xda, 0xfd,
		0x33, 0xd1, 0x3a, 0x2e, 0x23, 0xb4, 0x6f, 0x98, 0x24, 0xd0, 0x62, 0xa9, 0xa2, 0x5d, 0x75, 0x3e,
		0x6a, 0xba, 0x66, 0xf7, 0xe3, 0xea, 0x2b, 0xdb, 0xef, 0x98, 0xca, 0x9d, 0x17, 0x52, 0x73, 0xbb,
		0xf7, 0x30, 0xf7, 0xfc, 0xbf, 0xc9, 0xeb, 0x0f, 0x8f, 0x5a, 0xa3, 0x58, 0xe9, 0xc9, 0xeb, 0x49,
		0x57, 0x75, 0xae, 0xf2, 0xa7, 0x11, 0xb4, 0xe9, 0x53, 0x38, 0x20, 0x2e, 0xab, 0xb4, 0x34, 0x46,
		0x43, 0x92, 0xb2, 0xa1, 0x99, 0x56, 0xb6, 0x7a, 0x7f, 0x82, 0xf7, 0xfc, 0xe6, 0xdf, 0xde, 0xec,
		0x74, 0xfc, 0xbe, 0xbd, 0x5f, 0x7f, 0xe3, 0x37, 0x67, 0xa6, 0xd2, 0x0e, 0x9f, 0xa2, 0xb7, 0x48,
		0xac, 0x8d, 0xf6, 0xfb, 0x66, 0x1b, 0x28, 0xd9, 0xd7, 0x07, 0x9e, 0xa9, 0xdb, 0xfd, 0x96, 0x9d,
		0x2c, 0xc8, 0xe2, 0x07, 0xe3, 0x7f, 0x07, 0xcc, 0x60, 0x9b, 0xee, 0xa8, 0xca, 0x39, 0x09, 0x4c,
		0x6a, 0xfb, 0xcc, 0xf6, 0xdc, 0xa8, 0x8f, 0xb6, 0x65, 0x05, 0xda, 0x7d, 0xb7, 0x73, 0xae, 0x1d,
		0x68, 0x84, 0x3d, 0x13, 0xca, 0x5e, 0x7d, 0xa2, 0x79, 0x7e, 0xdc, 0xa6, 0xd6, 0xf7, 0xa8, 0xc6,
		0x9e, 0x89, 0xf6, 0x68, 0x04, 0x44, 0x4b, 0xba, 0xdd, 0xb4, 0xab, 0x7f, 0xdb, 0x6e, 0xf4, 0x5e,
		0x6a, 0x1b, 0x7e, 0xfd, 0xcc, 0x73, 0xfb, 0xf6, 0x53, 0xa5, 0xa5, 0x55, 0x37, 0x7c, 0xa0, 0x4b,
		0x49, 0xdf, 0x7e, 0xd9, 0x4e, 0x40, 0x25, 0xb9, 0x5c, 0x4c, 0x3d, 0xce, 0x54, 0xbc, 0xf9, 0xf1,
		0x49, 0x2b, 0x07, 0x66, 0xcf, 0xbf, 0x3f, 0x1a, 0xf1, 0x76, 0x67, 0x36, 0xf3, 0xa1, 0x9f, 0x3b,
		0xec, 0x93, 0x89, 0xe7, 0xa4, 0x5c, 0xce, 0x6d, 0xba, 0xdd, 0x82, 0x31, 0xdf, 0xb6, 0xb6, 0x7f,
		0xe7, 0x89, 0x97, 0x37, 0x7a, 0x7a, 0xcb, 0xb7, 0xb5, 0x70, 0x42, 0x6e, 0xe2, 0xdf, 0x0c, 0xc7,
		0x79, 0xd5, 0x02, 0xc2, 0xe2, 0xe3, 0xc0, 0x8c, 0x27, 0xcd, 0xa7, 0x1e, 0xf3, 0x4c, 0xcf, 0xd1,
		0x6c, 0x8b, 0xb8, 0xcc, 0xee, 0xdb, 0x84, 0x6a, 0x7d, 0x9b, 0x38, 0x96, 0xb6, 0x17, 0x1d, 0xa7,
		0x7d, 0x8d, 0x3d, 0x1b, 0xec, 0x9b, 0x6b, 0x07, 0x9a, 0x61, 0x9a, 0xc4, 0x67, 0xc4, 0xd2, 0x3c,
		0x37, 0x7e, 0xfa, 0xcb, 0x65, 0xfb, 0x7a, 0xfb, 0x31, 0xf5, 0x8d, 0xd0, 0x61, 0x5b, 0x6b, 0xd5,
		0xf8, 0xe1, 0xf1, 0x92, 0xeb, 0xd1, 0xd1, 0x0e, 0x5a, 0xd1, 0xe8, 0x1e, 0xaa, 0x7f, 0x9d, 0xd4,
		0xaa, 0xd5, 0xed, 0xa4, 0x79, 0x6f, 0xcb, 0x31, 0x8f, 0x8f, 0x7f, 0x75, 0xcb, 0xc7, 0xb6, 0x15,
		0x03, 0x59, 0xc4, 0x01, 0x07, 0xb1, 0x20, 0x02, 0x26, 0xa4, 0x12, 0x13, 0x62, 0x31, 0xc2, 0xd6,
		0x62, 0x23, 0xa5, 0xfe, 0xdf, 0x72, 0xcd, 0x63, 0x4c, 0x92, 0x69, 0xc5, 0x47, 0xc7, 0x97, 0xbd,
		0x52, 0xd2, 0x4f, 0xb3, 0xea, 0x13, 0x1d, 0x77, 0x94, 0xe2, 0xd9, 0xce, 0xb8, 0xeb, 0x8f, 0x46,
		0x90, 0x61, 0xdf, 0x4c, 0x26, 0x12, 0x9f, 0xeb, 0xfb, 0xbf, 0xbb, 0x17, 0x77, 0x69, 0x37, 0xce,
		0x17, 0xc3, 0x09, 0x49, 0x90, 0x4a, 0xc6, 0x64, 0xa3, 0x57, 0xab, 0xe7, 0x92, 0x46, 0x46, 0x65,
		0x64, 0x87, 0x82, 0xa6, 0x71, 0xd2, 0x3e, 0x29, 0xc1, 0x34, 0x4e, 0xcb, 0xb1, 0x1a, 0xa7, 0xf5,
		0x12, 0x4c, 0xa3, 0x7d, 0xfd, 0xb7, 0x02, 0xa5, 0xc2, 0x05, 0x51, 0xbf, 0x37, 0x5e, 0xd4, 0xef,
		0xbd, 0xb2, 0x8c, 0xcd, 0xd0, 0x12, 0x53, 0x82, 0xd6, 0xa7, 0xde, 0x40, 0x33, 0xdc, 0x29, 0x3f,
		0xd3, 0x98, 0x17, 0x03, 0x4d, 0xd3, 0xa3, 0x94, 0x04, 0xbe, 0xe7, 0x5a, 0xb6, 0xfb, 0xf4, 0xcd,
		0x8d, 0xe3, 0x33, 0x4d, 0x62, 0x0f, 0x09, 0xd5, 0x4c, 0x6f, 0xe0, 0x7b, 0x2e, 0x71, 0xd9, 0x87,
		0x92, 0x90, 0xb9, 0x99, 0xc9, 0xed, 0x24, 0xa7, 0x9b, 0x9d, 0xbf, 0x32, 0xd4, 0x6e, 0x66, 0xcc,
		0xe9, 0x19, 0x5e, 0xaa, 0x85, 0x5f, 0x75, 0xb0, 0xba, 0xd4, 0x1b, 0xda, 0x16, 0x99, 0x3f, 0x5c,
		0xe3, 0xa3, 0x34, 0x7b, 0x76, 0x82, 0xf0, 0x31, 0x39, 0x3e, 0x63, 0x96, 0x37, 0x3d, 0x69, 0xc1,
		0xe4, 0x09, 0xff, 0xf9, 0x35, 0xb0, 0x4d, 0xc3, 0xd1, 0x7c, 0x8f, 0xb2, 0xe9, 0x79, 0x1b, 0x9b,
		0x54, 0xec, 0x60, 0x7a, 0x5c, 0x3f, 0x7c, 0x73, 0xef, 0x9f, 0x89, 0x66, 0x91, 0xa1, 0x6d, 0x12,
		0x6d, 0x10, 0x06, 0x4c, 0xf3, 0x5c, 0xe7, 0x55, 0xf3, 0x3d, 0x3f, 0x74, 0x0c, 0x46, 0x46, 0x5f,
		0x77, 0x88, 0xd1, 0xd7, 0x7e, 0xd8, 0xec, 0x79, 0x61, 0x78, 0xdf, 0x5c, 0x63, 0xa6, 0x75, 0xaf,
		0xaf, 0xc5, 0x06, 0x9c, 0xfb, 0xdb, 0xf6, 0xf5, 0xdd, 0xd9, 0x45, 0xe7, 0xcb, 0xc5, 0xed, 0x87,
		0xca, 0x6e, 0xf0, 0xb6, 0xf4, 0x1b, 0x61, 0x37, 0xe8, 0x5b, 0x2a, 0x09, 0xa1, 0x0a, 0x8b, 0x8b,
		0x4e, 0x47, 0x46, 0x06, 0x77, 0x9c, 0xe2, 0xd9, 0xf8, 0x6e, 0xde, 0x58, 0xef, 0xfb, 0x8e, 0xc1,
		0xfa, 0x1e, 0x1d, 0xb4, 0x92, 0xd3, 0x18, 0xac, 0xfe, 0xf8, 0xeb, 0xec, 0xa7, 0xae, 0x31, 0x20,
		0xff, 0x63, 0x86, 0x94, 0x12, 0x97, 0xed, 0xed, 0x1f, 0x7c, 0xf8, 0x10, 0x3f, 0xe3, 0x51, 0xd6,
		0x7a, 0x36, 0xa8, 0xf5, 0xc3, 0xa0, 0x24, 0xfe, 0x57, 0x6f, 0xae, 0xa9, 0x59, 0x09, 0x14, 0xac,
		0xfd, 0xcb, 0xc1, 0x62, 0x3f, 0x15, 0xe0, 0x31, 0x69, 0x78, 0x6c, 0xd9, 0x6a, 0x1e, 0x29, 0x06,
		0x9b, 0x05, 0x8b, 0xa8, 0x2c, 0xd1, 0x13, 0xe6, 0xe8, 0x5e, 0x6a, 0x00, 0x44, 0x06, 0x44, 0x96,
		0x17, 0x22, 0x9b, 0x6c, 0x46, 0x7d, 0xbc, 0x19, 0xd3, 0xc3, 0xb2, 0xa5, 0x96, 0xb2, 0x61, 0xb3,
		0x4f, 0x1e, 0xd5, 0x8c, 0xc9, 0x11, 0xb1, 0xff, 0x3f, 0x62, 0x4d, 0xcf, 0xd5, 0x7b, 0xcd, 0xb1,
		0x83, 0x18, 0xf9, 0x24, 0x47, 0x70, 0x02, 0xc2, 0x56, 0x9c, 0x2e, 0x6d, 0xcf, 0x31, 0x5c, 0x12,
		0xec, 0xcf, 0x1f, 0xc3, 0x09, 0x68, 0x5b, 0xc4, 0x64, 0xcb, 0x8f, 0x1b, 0x94, 0x68, 0xc4, 0x21,
		0xd1, 0x3a, 0x07, 0x51, 0x9f, 0x86, 0xb6, 0x92, 0x56, 0x7d, 0x73, 0xed, 0x91, 0xb1, 0x7f, 0x22,
		0x80, 0xb5, 0x81, 0x67, 0x11, 0x07, 0x58, 0x0c, 0x58, 0x0c, 0x58, 0x4c, 0x29, 0x2c, 0x36, 0xb3,
		0x54, 0xad, 0x99, 0xdf, 0x7b, 0xbf, 0xf8, 0xdb, 0xe2, 0x9f, 0x16, 0x65, 0x61, 0xb0, 0xf8, 0x85,
		0xf1, 0xe7, 0x8b, 0x1f, 0xdb, 0xae, 0x45, 0x5e, 0x2a, 0x42, 0x57, 0xfb, 0xd2, 0x0e, 0x58, 0x9b,
		0x31, 0x9a, 0x6e, 0xc5, 0xaf, 0x6c, 0xf7, 0x62, 0x2c, 0x0b, 0xb7, 0x97, 0x35, 0xa3, 0x16, 0x8c,
		0x97, 0x99, 0x16, 0x6a, 0x27, 0x8d, 0x46, 0xf3, 0xb8, 0xd1, 0xa8, 0x1e, 0x1f, 0x1e, 0x57, 0x4f,
		0x8f, 0x8e, 0x6a, 0xcd, 0x54, 0x7e, 0x95, 0x1b, 0x6a, 0x11, 0x4a, 0xac, 0x8f, 0xaf, 0x95, 0x96,
		0xe6, 0x86, 0x8e, 0x93, 0xa5, 0x89, 0xcf, 0x41, 0x6c, 0x9c, 0xe8, 0x1b, 0x4e, 0x40, 0x00, 0x9f,
		0x73, 0x86, 0xcf, 0x2b, 0x8c, 0x9a, 0x0b, 0xd6, 0x95, 0xb1, 0xd6, 0x1d, 0xdb, 0x52, 0x6c, 0x77,
		0x48, 0x5c, 0xe6, 0xd1, 0xd7, 0xb2, 0x60, 0xea, 0xb8, 0xf8, 0xd4, 0x2e, 0x82, 0xe9, 0xed, 0xaa,
		0x6e, 0xe5, 0x8c, 0xa2, 0xe7, 0x98, 0x7b, 0x7a, 0x08, 0x3d, 0xdf, 0x4c, 0x76, 0xfc, 0xec, 0x7a,
		0xae, 0xbe, 0x12, 0x41, 0x07, 0xef, 0xe7, 0xa0, 0xf3, 0x33, 0xd1, 0x26, 0x5d, 0xc7, 0xc6, 0xcb,
		0x59, 0xf3, 0xe6, 0x0c, 0x56, 0x9e, 0x3f, 0x9e, 0xbb, 0x82, 0x6c, 0x53, 0xac, 0xc5, 0x6e, 0x40,
		0xda, 0x94, 0x75, 0xf1, 0x80, 0x65, 0xb9, 0x61, 0x59, 0xf5, 0xec, 0x7d, 0xbf, 0xfc, 0x46, 0xef,
		0x77, 0xa1, 0xb7, 0xae, 0xeb, 0x31, 0x63, 0x2c, 0xe0, 0x7e, 0xbf, 0xc4, 0x95, 0xc0, 0x7c, 0x26,
		0x03, 0xc3, 0x4f, 0xde, 0xac, 0x4f, 0x5c, 0x33, 0x16, 0x26, 0xfa, 0x0c, 0xbe, 0x59, 0xf5, 0xeb,
		0xc1, 0x08, 0xde, 0xbc, 0x4b, 0x37, 0x95, 0x5f, 0xec, 0xd9, 0x4a, 0x10, 0x3e, 0x4e, 0x3b, 0xfc,
		0xed, 0x2c, 0xa6, 0x99, 0xab, 0xe6, 0x1e, 0xfb, 0xcd, 0x6b, 0xda, 0x0c, 0xd1, 0x6c, 0x2c, 0x57,
		0xb7, 0x91, 0xa3, 0xb3, 0x72, 0xd3, 0xde, 0xe4, 0x0c, 0x6d, 0x2b, 0x25, 0x53, 0x4b, 0xc5, 0xd4,
		0x52, 0x70, 0x51, 0xea, 0xd9, 0xfd, 0x8a, 0xe0, 0x08, 0xf3, 0x4d, 0xd1, 0xc7, 0xdc, 0xae, 0xd8,
		0xfc, 0x0d, 0xae, 0xda, 0x53, 0x25, 0x01, 0xcb, 0x76, 0x7f, 0x27, 0xa1, 0xf2, 0x26, 0x5b, 0xb2,
		0x20, 0x40, 0xd9, 0x9c, 0xec, 0x88, 0x94, 0x08, 0x79, 0xfc, 0x7c, 0x3a, 0xe4, 0x59, 0x53, 0x0c,
		0x79, 0xda, 0x7d, 0xe0, 0xce, 0x8c, 0xdb, 0x5d, 0x0e, 0xea, 0xdc, 0xf6, 0x18, 0x24, 0x0f, 0x5a,
		0x73, 0x9c, 0x2d, 0x63, 0x38, 0xf0, 0x6c, 0x63, 0x29, 0xdf, 0x74, 0x3a, 0x8a, 0x96, 0xf9, 0xc0,
		0xf0, 0x38, 0x38, 0xdc, 0x0e, 0x10, 0xaf, 0x83, 0xc4, 0xfd, 0x40, 0x71, 0x3f, 0x58, 0x3c, 0x0f,
		0x58, 0xba, 0x83, 0x96, 0xf2, 0xc0, 0x65, 0xa7, 0x7b, 0xcb, 0x68, 0x88, 0x51, 0xdb, 0x7d, 0xca,
		0xb2, 0x5d, 0x26, 0x4a, 0xe6, 0x44, 0xea, 0x1b, 0xc8, 0x70, 0x75, 0x77, 0xa9, 0xad, 0xf4, 0x57,
		0x79, 0xd3, 0x59, 0x9d, 0x37, 0x5a, 0x98, 0x0d, 0xaf, 0xaa, 0xb6, 0x1d, 0xdb, 0x08, 0x32, 0x1e,
		0x2c, 0x9e, 0xa7, 0x7e, 0xd5, 0xe9, 0xcf, 0x7a, 0x17, 0x58, 0xb8, 0x20, 0x58, 0x29, 0x10, 0xb6,
		0x5a, 0x80, 0xcc, 0xdd, 0xbf, 0xbd, 0xcb, 0xe7, 0xe9, 0x9e, 0xd4, 0x53, 0xbb, 0xa5, 0x25, 0x63,
		0x6d, 0x3b, 0xaf, 0x4f, 0x1e, 0xd3, 0x3d, 0x53, 0x37, 0xbd, 0x81, 0x4f, 0x49, 0x10, 0x10, 0x4b,
		0x77, 0x88, 0xd1, 0x8f, 0x1a, 0x4d, 0x29, 0x88, 0x65, 0x64, 0x64, 0xa8, 0x10, 0x37, 0x12, 0x56,
		0x56, 0x76, 0xc8, 0x33, 0x69, 0x28, 0xe5, 0x32, 0x64, 0xb9, 0x63, 0x99, 0x34, 0x12, 0x1d, 0xbb,
		0x74, 0xfb, 0xbe, 0x07, 0x94, 0x06, 0x94, 0x06, 0x94, 0xb6, 0xc5, 0x6e, 0x79, 0xf4, 0x3c, 0x87,
		0x18, 0x2e, 0x0f, 0x98, 0x56, 0x03, 0x4c, 0xcb, 0x03, 0xa6, 0x59, 0x03, 0xdb, 0xbd, 0x63, 0x06,
		0x0b, 0x01, 0xd6, 0xf2, 0x04, 0x6b, 0x33, 0xcb, 0x00, 0xc8, 0x06, 0xc8, 0xf6, 0xfb, 0x61, 0x8f,
		0x22, 0xd3, 0x32, 0x03, 0xb6, 0x51, 0x33, 0x79, 0xc2, 0xb5, 0x2a, 0xb0, 0x1a, 0xb0, 0x1a, 0xb0,
		0x9a, 0x78, 0xac, 0x16, 0xda, 0x2e, 0x3b, 0xac, 0x73, 0x80, 0x6a, 0xc7, 0x19, 0x9a, 0xb8, 0x35,
		0xdc, 0xa7, 0x42, 0xe0, 0xa4, 0x2b, 0xdb, 0xe5, 0x07, 0x53, 0xe2, 0xb4, 0x1d, 0xe9, 0x85, 0xc2,
		0x52, 0x7b, 0x9f, 0xa8, 0x61, 0x46, 0x9a, 0xed, 0xdc, 0x7e, 0xb2, 0xd3, 0x06, 0xf6, 0xae, 0xde,
		0x0b, 0xe4, 0xc9, 0x60, 0xf6, 0x90, 0xa4, 0x8a, 0xa7, 0xe5, 0xb8, 0xad, 0xe7, 0x97, 0xc2, 0x78,
		0xe1, 0xbf, 0x14, 0x8d, 0xfa, 0x69, 0xe3, 0xb4, 0x79, 0x5c, 0x3f, 0x3d, 0xda, 0xbd, 0x35, 0x01,
		0xfe, 0x53, 0x0c, 0xff, 0x09, 0x75, 0x86, 0x5e, 0xbc, 0xb0, 0x74, 0x19, 0x85, 0xb2, 0xfb, 0xab,
		0x3d, 0x53, 0x27, 0x2f, 0xac, 0xc5, 0xe2, 0xeb, 0x5a, 0x8c, 0xbe, 0xea, 0xe3, 0xf8, 0xd7, 0x27,
		0x4e, 0xd9, 0x37, 0xe3, 0xf3, 0xc2, 0xc1, 0x89, 0x2d, 0x3c, 0x8f, 0xec, 0xb6, 0xf1, 0x24, 0xd9,
		0xf6, 0x76, 0x96, 0x40, 0xbb, 0xd9, 0xc0, 0xb6, 0xb9, 0x7f, 0x1d, 0x8c, 0x43, 0x3d, 0x44, 0x45,
		0x34, 0x6e, 0x11, 0x28, 0x94, 0x8e, 0xfb, 0x64, 0xe2, 0x3c, 0xaa, 0x06, 0x4b, 0x23, 0x64, 0x85,
		0x1b, 0xfe, 0x47, 0xa0, 0xf4, 0xea, 0x8d, 0x3a, 0x96, 0x32, 0x1f, 0x3e, 0x8c, 0x25, 0xc4, 0x41,
		0x9a, 0x4b, 0x73, 0x62, 0xe4, 0x84, 0x3f, 0x6c, 0x64, 0x10, 0x13, 0xd1, 0xd3, 0x3b, 0x12, 0xd8,
		0xe6, 0x43, 0x4a, 0xac, 0x92, 0x12, 0x7e, 0x69, 0x02, 0xdb, 0x8c, 0x51, 0xed, 0xbd, 0x0d, 0x62,
		0xdc, 0x7f, 0xbb, 0x5f, 0xa6, 0x4d, 0x65, 0x33, 0xc1, 0xd5, 0xca, 0x62, 0x82, 0xf3, 0x61, 0x82,
		0x93, 0x74, 0xb8, 0xf2, 0x31, 0xc1, 0xa5, 0x3d, 0x74, 0x8b, 0x87, 0x2f, 0xfb, 0x22, 0x2f, 0x1c,
		0xc1, 0xac, 0x4b, 0x9c, 0xed, 0x20, 0x72, 0x3b, 0x90, 0x3c, 0x0f, 0x26, 0xf7, 0x03, 0xca, 0xfb,
		0xa0, 0x0a, 0x3b, 0xb0, 0xc2, 0x0e, 0xae, 0x88, 0x03, 0xcc, 0xc9, 0x54, 0x95, 0x71, 0xbf, 0x65,
		0x3d, 0xd8, 0x49, 0x43, 0x29, 0x6f, 0x51, 0xfc, 0x76, 0xf3, 0xa6, 0xba, 0x5d, 0x21, 0xf8, 0xb8,
		0x73, 0x3f, 0xf6, 0x22, 0x8e, 0xbf, 0x30, 0x31, 0x20, 0x4a, 0x1c, 0x08, 0x17, 0x0b, 0xc2, 0xc5,
		0x83, 0x48, 0x31, 0xc1, 0x47, 0x5c, 0x70, 0x12, 0x1b, 0xdc, 0xc5, 0xc7, 0x0c, 0x5f, 0xe5, 0xbf,
		0x9f, 0xa6, 0x6c, 0x96, 0xf7, 0x46, 0xca, 0xe6, 0x49, 0x97, 0x26, 0x56, 0x44, 0x8a, 0x17, 0xe1,
		0x62, 0x46, 0xb4, 0xb8, 0x91, 0x26, 0x76, 0xa4, 0x89, 0x1f, 0x19, 0x62, 0x88, 0xaf, 0x38, 0xe2,
		0x2c, 0x96, 0xb2, 0x5b, 0x14, 0xb7, 0xb2, 0x90, 0xe9, 0x7c, 0xb8, 0xc8, 0x2f, 0x01, 0xcb, 0x89,
		0x80, 0xb6, 0xbb, 0x06, 0x63, 0x84, 0xba, 0x99, 0x43, 0x11, 0xd6, 0x76, 0xb0, 0xf7, 0xb5, 0xaa,
		0x9f, 0xf6, 0x7e, 0x7e, 0xad, 0xe9, 0xa7, 0xbd, 0xd1, 0xaf, 0xb5, 0xf8, 0x7f, 0xff, 0xd4, 0xdf,
		0x7e, 0xd6, 0xbf, 0x56, 0xf5, 0xc6, 0xf8, 0xd3, 0xfa, 0xd1, 0xd7, 0xaa, 0x7e, 0xd4, 0xdb, 0xdf,
		0xfb, 0xf6, 0xed, 0xc3, 0xb6, 0xcf, 0xec, 0xff, 0x73, 0xf8, 0xc6, 0x7f, 0x5b, 0xf7, 0x44, 0xbc,
		0xee, 0x9b, 0xbb, 0xce, 0x5f, 0xc2, 0xdf, 0xf9, 0x7f, 0xf7, 0x64, 0xbd, 0xf5, 0xfd, 0x7f, 0x09,
		0x78, 0xef, 0x85, 0x16, 0x27, 0x9c, 0xfc, 0xed, 0x6b, 0xdb, 0xe7, 0xee, 0x87, 0x17, 0x2f, 0xb5,
		0x39, 0xbe, 0xe2, 0xb1, 0xd6, 0xd5, 0x1d, 0xe2, 0x3e, 0xc5, 0xfe, 0x14, 0x41, 0x30, 0x70, 0xbe,
		0x1b, 0x20, 0x42, 0x20, 0x42, 0x20, 0x42, 0x20, 0x42, 0x6e, 0xbb, 0x3d, 0xb4, 0x5d, 0x76, 0x22,
		0x10, 0x0a, 0x1e, 0x09, 0x68, 0x9a, 0x4f, 0x48, 0xea, 0xba, 0x1f, 0x31, 0xa7, 0x53, 0xe3, 0x1d,
		0xc2, 0xba, 0xb6, 0x13, 0xce, 0xa1, 0xad, 0x6b, 0xfb, 0x11, 0x15, 0x5e, 0xb9, 0x7e, 0xcb, 0xf2,
		0x0e, 0xbb, 0x94, 0x74, 0x8a, 0xe7, 0xb7, 0x80, 0xf1, 0x22, 0x6f, 0x0b, 0x1c, 0xd6, 0xb1, 0x07,
		0x0a, 0xa1, 0x17, 0xc4, 0xb5, 0x0a, 0x0a, 0xb2, 0xc3, 0x14, 0x84, 0x89, 0x80, 0x07, 0xd3, 0x2a,
		0x61, 0xe9, 0x6a, 0xff, 0xff, 0xb2, 0x6d, 0x1e, 0x17, 0xd0, 0xd6, 0xb3, 0x83, 0xdb, 0xce, 0x55,
		0xfb, 0xf6, 0x6f, 0xbe, 0x20, 0xb1, 0x07, 0xca, 0x05, 0xca, 0x05, 0xca, 0x05, 0xca, 0xc5, 0x6d,
		0xb7, 0xcf, 0x1a, 0xe1, 0x75, 0x01, 0x42, 0x76, 0x56, 0xcc, 0xd4, 0x1a, 0x02, 0xda, 0xbe, 0x70,
		0xc3, 0x81, 0xb8, 0x33, 0x75, 0xef, 0xdd, 0x8d, 0x32, 0x89, 0x89, 0x84, 0xc9, 0x95, 0x6a, 0x5c,
		0xbd, 0x72, 0xac, 0x30, 0x04, 0xe2, 0xfd, 0x5a, 0xd4, 0xcf, 0xdd, 0xc5, 0xd9, 0xcd, 0xf5, 0x39,
		0x77, 0xd5, 0x24, 0x98, 0xaf, 0x54, 0xee, 0xbd, 0x8e, 0xcb, 0xc4, 0x2e, 0xc3, 0x64, 0x05, 0x84,
		0x32, 0x87, 0x99, 0xf7, 0xdf, 0xd2, 0x6a, 0x8a, 0x00, 0xfb, 0x37, 0x00, 0x7b, 0xc5, 0x80, 0x7d,
		0xa1, 0x42, 0x5d, 0x04, 0x2d, 0x90, 0x98, 0x8b, 0x6a, 0x91, 0x46, 0x3c, 0x48, 0xa2, 0xd4, 0x27,
		0xbf, 0xa5, 0xba, 0xbf, 0x26, 0x6e, 0x75, 0x78, 0x5c, 0x9c, 0xe6, 0x18, 0x2f, 0xc4, 0x3f, 0x4e,
		0x88, 0x33, 0x35, 0x41, 0xb8, 0x21, 0xc2, 0x0d, 0x65, 0x53, 0x8c, 0x62, 0xc9, 0x60, 0xee, 0x54,
		0x82, 0xc3, 0xcd, 0xc1, 0xdf, 0x12, 0x86, 0x63, 0x8e, 0x6d, 0xae, 0xb8, 0x69, 0xe8, 0x97, 0x49,
		0x9c, 0x8f, 0x8a, 0x9c, 0x70, 0x97, 0xe8, 0xdb, 0x94, 0x86, 0xdb, 0x78, 0x5d, 0x79, 0x0b, 0xf5,
		0x3a, 0x84, 0x3a, 0x84, 0xfa, 0x0e, 0x0a, 0x75, 0xc4, 0x90, 0xc3, 0x7c, 0x2d, 0x58, 0xcc, 0x88,
		0x16, 0x37, 0xd2, 0xc4, 0x8e, 0x34, 0xf1, 0x23, 0x43, 0x0c, 0xa9, 0x61, 0x98, 0x41, 0x0c, 0xf9,
		0x6f, 0x00, 0x29, 0x62, 0xc8, 0x57, 0xff, 0x20, 0x86, 0xbc, 0x14, 0x31, 0xe4, 0x85, 0x8c, 0x53,
		0xf0, 0xa8, 0xfd, 0x24, 0x20, 0xf4, 0x6d, 0xaa, 0x80, 0x47, 0xed, 0x03, 0xea, 0x00, 0xea, 0x00,
		0xea, 0x00, 0xea, 0x70, 0x84, 0x3a, 0x89, 0x9f, 0x5e, 0x88, 0x88, 0xd1, 0xe0, 0xa9, 0xff, 0x7d,
		0x2f, 0xb1, 0xa7, 0xfe, 0xe6, 0xfe, 0xcf, 0x8b, 0x5b, 0xf1, 0x7e, 0xfa, 0xfb, 0xf6, 0x7d, 0xe7,
		0x4c, 0x64, 0x37, 0xf5, 0xa8, 0x9b, 0xf3, 0x3f, 0xcf, 0xba, 0x22, 0x3b, 0x39, 0x8c, 0x3a, 0xb9,
		0xec, 0x5c, 0xff, 0xfb, 0xe1, 0xb2, 0xfd, 0xb7, 0xd8, 0xd7, 0xd6, 0x88, 0x4b, 0x26, 0xb4, 0xaf,
		0xcf, 0x6f, 0xae, 0x10, 0xdb, 0xb0, 0x68, 0x29, 0x8a, 0x96, 0x99, 0x9b, 0xa1, 0x74, 0x65, 0x17,
		0x33, 0x8b, 0xdc, 0xd2, 0x0e, 0x05, 0x76, 0x34, 0x3a, 0x7f, 0x62, 0xa3, 0x34, 0xc6, 0xdb, 0xa8,
		0xa5, 0x35, 0x44, 0x86, 0x82, 0x8c, 0x8e, 0xf8, 0xce, 0xc6, 0x81, 0xe0, 0x2a, 0x25, 0xae, 0x52,
		0x82, 0x2d, 0x80, 0x2d, 0x80, 0x2d, 0x70, 0xdf, 0xed, 0xb8, 0x4a, 0xb9, 0xf8, 0x83, 0xab, 0x94,
		0x9b, 0xf5, 0x83, 0xab, 0x94, 0xa9, 0xb6, 0x00, 0xae, 0x52, 0xaa, 0xb1, 0x07, 0x76, 0xf3, 0x2a,
		0x25, 0x6e, 0x0c, 0xf2, 0x61, 0xd1, 0xb8, 0x31, 0x08, 0x66, 0x01, 0x66, 0x01, 0x66, 0xb1, 0xc3,
		0xcc, 0x02, 0x37, 0x06, 0x7f, 0xbd, 0x00, 0xb8, 0x31, 0x58, 0x0c, 0x58, 0x8e, 0x1b, 0x83, 0x79,
		0xe2, 0x57, 0x5c, 0x8c, 0xdb, 0x48, 0x5d, 0x95, 0xe0, 0x62, 0xdc, 0xe8, 0x82, 0x40, 0x89, 0x2e,
		0x52, 0x0c, 0x29, 0x15, 0x70, 0x33, 0x2e, 0x6e, 0x15, 0xa9, 0xf8, 0x0b, 0x07, 0xb6, 0x71, 0x8d,
		0x22, 0x0f, 0x30, 0x5d, 0xf2, 0x6b, 0x14, 0xd1, 0x61, 0xd7, 0x9f, 0xa8, 0x17, 0x0a, 0xbc, 0x4e,
		0x31, 0xd3, 0x87, 0x18, 0x8e, 0x5f, 0x03, 0xc7, 0x07, 0xc7, 0x07, 0xc7, 0x2f, 0x1e, 0xc7, 0xe7,
		0x2d, 0xae, 0x92, 0x86, 0x39, 0x17, 0x22, 0x5a, 0x7b, 0x98, 0xb8, 0x16, 0x26, 0x92, 0x24, 0xbe,
		0x84, 0x8b, 0x31, 0x19, 0xe2, 0x4c, 0x9a, 0x58, 0x93, 0x25, 0xde, 0xa4, 0x8b, 0x39, 0xe9, 0xe2,
		0x4e, 0xa6, 0xd8, 0x13, 0x67, 0x0e, 0x10, 0x69, 0xe7, 0x11, 0x25, 0x0e, 0x93, 0x0e, 0x0c, 0xd3,
		0x24, 0x3e, 0xd3, 0x07, 0x9e, 0x25, 0x61, 0x23, 0x27, 0x45, 0x1a, 0x67, 0x3a, 0x15, 0xbc, 0xb3,
		0x44, 0x7a, 0xb5, 0x96, 0x3a, 0x8b, 0xdd, 0xbb, 0x15, 0xa1, 0xfd, 0xf4, 0x04, 0xbf, 0x2f, 0x31,
		0x3e, 0x30, 0xe9, 0x8a, 0x46, 0xa6, 0xc2, 0x91, 0xae, 0x78, 0x64, 0x2b, 0xa0, 0xdc, 0x14, 0x51,
		0x6e, 0x0a, 0x29, 0x0f, 0xc5, 0x24, 0x56, 0x41, 0x09, 0x56, 0x54, 0xc9, 0x0b, 0x13, 0xe6, 0xa3,
		0x5b, 0x7b, 0xda, 0x1e, 0x3d, 0xcf, 0x21, 0x86, 0x2b, 0xe3, 0xbc, 0x4d, 0xd0, 0x77, 0x4d, 0xe9,
		0x25, 0x12, 0x9c, 0x52, 0x70, 0xa9, 0x3f, 0x69, 0x29, 0x06, 0xe5, 0x9d, 0x24, 0x91, 0xd1, 0x76,
		0x86, 0x35, 0x24, 0x94, 0xd9, 0x01, 0x89, 0xe4, 0xce, 0xc8, 0xa7, 0x31, 0x34, 0x1c, 0x89, 0xe0,
		0x6c, 0x75, 0xff, 0x65, 0xc2, 0x69, 0xb5, 0x6a, 0x15, 0x28, 0x0d, 0x28, 0x0d, 0x28, 0x0d, 0x28,
		0x0d, 0x28, 0x4d, 0xce, 0x69, 0x0b, 0x6d, 0x97, 0xd5, 0x9a, 0x12, 0x41, 0x5a, 0x53, 0x42, 0x57,
		0x62, 0x2f, 0x75, 0x2c, 0xfe, 0xc8, 0x11, 0x1f, 0x9a, 0xac, 0x4b, 0x1f, 0x4b, 0x9d, 0x4e, 0x6e,
		0x00, 0xd4, 0xde, 0xcb, 0xed, 0x57, 0xf6, 0x85, 0x80, 0xe5, 0x33, 0x22, 0xeb, 0x82, 0x80, 0x64,
		0x31, 0x33, 0xbf, 0xa5, 0x8c, 0x97, 0xfc, 0xb6, 0x54, 0xa3, 0x7a, 0x7a, 0x84, 0x5d, 0x25, 0x6b,
		0x57, 0xbd, 0x2b, 0x47, 0x2f, 0x3d, 0xb0, 0x7c, 0xb0, 0x7c, 0x51, 0xaf, 0xcb, 0xa7, 0x84, 0x0c,
		0x7c, 0x26, 0x8f, 0xd6, 0x4f, 0x3a, 0x2c, 0x13, 0x8f, 0x8f, 0x28, 0x06, 0x88, 0x3c, 0x88, 0x3c,
		0x88, 0x3c, 0x88, 0x3c, 0x88, 0xbc, 0x9c, 0xd3, 0x06, 0x77, 0x0b, 0x80, 0x58, 0x09, 0x81, 0x98,
		0x6e, 0x11, 0xc7, 0x78, 0x95, 0x0e, 0xc7, 0xc6, 0xdd, 0x96, 0x09, 0x94, 0xc1, 0xb5, 0x02, 0x44,
		0x06, 0x44, 0x06, 0x44, 0x06, 0x44, 0x26, 0xe9, 0xb4, 0xc1, 0xb5, 0x92, 0xf9, 0x67, 0x57, 0x5c,
		0x2b, 0x55, 0x18, 0xc1, 0x25, 0xfd, 0xec, 0x8c, 0x6b, 0xe5, 0xb0, 0x59, 0xc5, 0xae, 0x92, 0xb6,
		0xab, 0xe0, 0x5a, 0x01, 0xa3, 0x07, 0xa3, 0xff, 0x1d, 0xa3, 0xb7, 0x3d, 0x6a, 0x33, 0xa9, 0x64,
		0x7e, 0xdc, 0x23, 0x82, 0x24, 0xc1, 0xe4, 0xc1, 0xe4, 0xc1, 0xe4, 0xc1, 0xe4, 0xc1, 0xe4, 0x53,
		0x32, 0xf9, 0x13, 0x89, 0x44, 0xfe, 0x08, 0x44, 0x5e, 0x51, 0x22, 0x8f, 0x18, 0x49, 0x10, 0x79,
		0xce, 0x5b, 0xaa, 0x7e, 0xd4, 0xc0, 0xa6, 0x02, 0x8f, 0x07, 0x8f, 0x07, 0x8f, 0x2f, 0x06, 0x8f,
		0x1f, 0xda, 0x94, 0x85, 0x86, 0x93, 0x94, 0x40, 0x96, 0x46, 0xe7, 0x17, 0x3b, 0x06, 0x4f, 0x05,
		0x4f, 0x05, 0x4f, 0x05, 0x4f, 0x05, 0x4f, 0x5d, 0x2a, 0xd7, 0x2a, 0x33, 0x0c, 0xf0, 0x54, 0x42,
		0x5f, 0xe3, 0x77, 0x59, 0x3a, 0xb2, 0xba, 0x2a, 0xc1, 0x7d, 0x45, 0x22, 0xb3, 0x99, 0xac, 0xe1,
		0x89, 0xc4, 0x3e, 0x45, 0xd7, 0xc3, 0x5f, 0xdb, 0xb1, 0xac, 0x2a, 0xf9, 0x15, 0x69, 0xd3, 0xea,
		0xc9, 0x5c, 0xb6, 0x9b, 0xbb, 0xce, 0x5f, 0xb9, 0xad, 0xdd, 0x7f, 0xf7, 0x64, 0xad, 0xde, 0xfe,
		0xbf, 0x24, 0xae, 0xdf, 0xbb, 0x12, 0x99, 0x4a, 0xf2, 0x11, 0x9b, 0x4d, 0x88, 0x4d, 0xd1, 0x62,
		0x33, 0x3e, 0x45, 0x86, 0xde, 0x6f, 0xeb, 0x9f, 0x7a, 0xff, 0xd4, 0xde, 0x37, 0xde, 0x5a, 0xfb,
		0xff, 0x1c, 0xbf, 0x2d, 0x7e, 0xf8, 0x73, 0xd5, 0xd7, 0x6a, 0xef, 0x8f, 0xdf, 0x5a, 0x6b, 0xfe,
		0xd2, 0x7c, 0x6b, 0x6d, 0xd8, 0xc6, 0xd1, 0xdb, 0xde, 0xd2, 0x57, 0xa3, 0xcf, 0xeb, 0xeb, 0x1e,
		0x68, 0xac, 0x79, 0xe0, 0x70, 0xdd, 0x03, 0x87, 0x6b, 0x1e, 0x58, 0x3b, 0xa4, 0xfa, 0x9a, 0x07,
		0x8e, 0xde, 0x7e, 0x2e, 0x7d, 0x7f, 0x6f, 0xf5, 0x57, 0x9b, 0x6f, 0xfb, 0x3f, 0xd7, 0xfd, 0xed,
		0xf8, 0xed, 0x67, 0x6b, 0x7f, 0x1f, 0x8a, 0x44, 0x98, 0x22, 0xc1, 0x76, 0x96, 0xbf, 0x9d, 0xcb,
		0xa7, 0x58, 0x61, 0xc8, 0xfd, 0xe5, 0x59, 0xbb, 0xb4, 0x03, 0xd6, 0x66, 0x8c, 0xca, 0x61, 0xc1,
		0x57, 0xb6, 0x7b, 0xe1, 0xc4, 0xd9, 0xd1, 0x24, 0xf9, 0x2c, 0x2a, 0x57, 0xc6, 0xcb, 0x4c, 0x8f,
		0xb5, 0x93, 0x46, 0xa3, 0x79, 0xdc, 0x68, 0x54, 0x8f, 0x0f, 0x8f, 0xab, 0xa7, 0x47, 0x47, 0xb5,
		0x66, 0x4d, 0x86, 0x23, 0xf7, 0x86, 0x5a, 0x84, 0x12, 0xeb, 0xe3, 0x6b, 0xa5, 0xa5, 0xb9, 0xa1,
		0xe3, 0xc8, 0xec, 0xf2, 0x73, 0x40, 0xa8, 0x14, 0x27, 0x0d, 0x5c, 0x0e, 0x85, 0x17, 0x59, 0x32,
		0x5c, 0x0e, 0xd4, 0x0b, 0x19, 0xa1, 0xba, 0x6d, 0xc9, 0x77, 0x3a, 0x4c, 0xbb, 0x86, 0xdb, 0x61,
		0x3b, 0xb8, 0x07, 0xb7, 0x03, 0xc7, 0xcd, 0x01, 0xb7, 0x03, 0xdc, 0x0e, 0xbf, 0x7e, 0x61, 0x08,
		0x8f, 0xe3, 0xd1, 0x15, 0xc2, 0xe3, 0x78, 0x76, 0x8a, 0xf0, 0x38, 0x84, 0xc7, 0x09, 0xda, 0x52,
		0xf5, 0x23, 0x64, 0x10, 0x94, 0xb6, 0xa9, 0x60, 0x55, 0x01, 0x57, 0x2d, 0x05, 0x57, 0x55, 0xaa,
		0xd8, 0x94, 0xa4, 0x05, 0x97, 0x5a, 0xc1, 0x79, 0x48, 0xa9, 0x7f, 0x30, 0x2d, 0x27, 0x7a, 0x30,
		0x2e, 0xcf, 0xa7, 0x4a, 0xa5, 0x71, 0x01, 0x45, 0x39, 0x93, 0x57, 0xa6, 0x33, 0x6a, 0x98, 0xdf,
		0x45, 0x96, 0xf3, 0x9f, 0xfa, 0x4f, 0x97, 0xfb, 0x44, 0x81, 0xc4, 0xbc, 0xac, 0x18, 0x28, 0x90,
		0xa8, 0x9c, 0x95, 0x02, 0x05, 0x12, 0xd7, 0xbd, 0x18, 0xe1, 0x05, 0x12, 0x05, 0xd7, 0x8d, 0x5d,
		0x3a, 0x94, 0x42, 0xeb, 0xc7, 0x4a, 0x12, 0x93, 0xd2, 0xc4, 0xa5, 0x4c, 0xb1, 0x29, 0x5d, 0x7c,
		0xca, 0x16, 0xa3, 0xb9, 0x89, 0xd3, 0xdc, 0xc4, 0x6a, 0x1e, 0xe2, 0x55, 0x0e, 0xfb, 0x14, 0xcd,
		0x0d, 0x45, 0x8b, 0xdd, 0xa4, 0xa3, 0x49, 0x6a, 0x0d, 0xdd, 0x22, 0x26, 0x25, 0xe3, 0x35, 0x92,
		0x74, 0x0e, 0x16, 0xd3, 0x7b, 0xcc, 0x8c, 0x41, 0xd2, 0xbe, 0x94, 0x99, 0xf0, 0x23, 0xe9, 0xb4,
		0x2a, 0x27, 0x7c, 0x46, 0x52, 0x28, 0x98, 0x24, 0x3f, 0xa7, 0x74, 0x95, 0x97, 0x87, 0xea, 0xcb,
		0x4d, 0x05, 0xe6, 0xa5, 0x0a, 0x73, 0x57, 0x89, 0xb9, 0xab, 0xc6, 0x3c, 0x55, 0xa4, 0x1c, 0x55,
		0x29, 0x49, 0x65, 0x26, 0x2f, 0x52, 0x9a, 0xdf, 0x74, 0xe9, 0xb4, 0xca, 0xf2, 0x9f, 0x2e, 0x8a,
		0x5e, 0x89, 0x8e, 0x13, 0xc9, 0xfe, 0xd4, 0xc9, 0x8f, 0x5c, 0x69, 0xa4, 0xe5, 0xe5, 0x5f, 0x4d,
		0x3a, 0xcf, 0x29, 0x9f, 0x68, 0xd2, 0x7f, 0xde, 0xae, 0xb1, 0xe9, 0xd1, 0xca, 0xcb, 0x45, 0x26,
		0x59, 0x6a, 0xcd, 0x6f, 0xbd, 0x1c, 0xfc, 0xb0, 0x4b, 0x5b, 0x4f, 0x7a, 0xba, 0x12, 0x6c, 0xbe,
		0x9c, 0x14, 0xb3, 0xfc, 0xde, 0x4a, 0x75, 0x5d, 0x4e, 0xb6, 0x1f, 0x37, 0xe9, 0x37, 0x37, 0x7f,
		0xae, 0xbc, 0x0d, 0x23, 0x61, 0x09, 0x2b, 0xb1, 0xc7, 0x6c, 0xea, 0x19, 0x95, 0x6f, 0xfe, 0x58,
		0x1c, 0x00, 0x78, 0x3b, 0x78, 0x3b, 0x78, 0x3b, 0x78, 0x3b, 0x78, 0xbb, 0xa4, 0xd3, 0x1a, 0x69,
		0x4d, 0x4a, 0xfa, 0x79, 0x5c, 0x3c, 0x3f, 0x96, 0x7b, 0xf1, 0x7c, 0x1c, 0x10, 0x64, 0xea, 0x76,
		0xbf, 0x35, 0x13, 0xe8, 0xb3, 0xf0, 0xc1, 0xf8, 0xdf, 0x6e, 0xf4, 0x7a, 0x4a, 0xb5, 0xc5, 0xa4,
		0xde, 0x63, 0x9c, 0xb5, 0x24, 0xc8, 0xbd, 0xcf, 0x38, 0x4b, 0x24, 0x73, 0xbf, 0xd7, 0x98, 0x0c,
		0x46, 0xfe, 0xfd, 0xc6, 0xe5, 0xae, 0xa5, 0xdd, 0x73, 0x04, 0x07, 0x29, 0x0f, 0x07, 0x41, 0x90,
		0xf1, 0x16, 0xfd, 0xe5, 0x19, 0x7b, 0xba, 0x1c, 0x05, 0x29, 0x34, 0x1c, 0x55, 0xfc, 0x06, 0x11,
		0x79, 0x15, 0x37, 0x60, 0x06, 0x23, 0xf2, 0xc2, 0xae, 0x46, 0xdd, 0x95, 0x2c, 0xea, 0xaa, 0x8e,
		0xa8, 0x2b, 0x65, 0x28, 0x2b, 0xa2, 0xae, 0x10, 0x75, 0xf5, 0xbb, 0x17, 0x86, 0xa8, 0x2b, 0x29,
		0x23, 0x40, 0xd4, 0x15, 0x37, 0x55, 0x07, 0xeb, 0xad, 0xc2, 0x2a, 0x30, 0x2f, 0x55, 0x98, 0xbb,
		0x4a, 0xcc, 0x5d, 0x35, 0xe6, 0xa9, 0x22, 0xe5, 0x31, 0x57, 0x0d, 0x51, 0x57, 0x02, 0x45, 0x2f,
		0xa2, 0xae, 0x04, 0x4c, 0x14, 0x51, 0x57, 0x08, 0x7c, 0x41, 0xd4, 0x15, 0x36, 0x1f, 0xa2, 0xae,
		0x04, 0x50, 0x13, 0x04, 0x05, 0x6d, 0xbc, 0x09, 0x11, 0x14, 0x04, 0x5a, 0x09, 0x5a, 0x09, 0x5a,
		0x09, 0x5a, 0xb9, 0xab, 0xb4, 0x12, 0x41, 0x41, 0x08, 0x0a, 0x12, 0x4b, 0x74, 0x11, 0x14, 0xb4,
		0xab, 0x41, 0x41, 0x70, 0xc3, 0xfd, 0x5a, 0x7b, 0xee, 0x76, 0xcc, 0xca, 0x28, 0x54, 0x02, 0x19,
		0xf9, 0xc4, 0xef, 0xb8, 0x9d, 0xc8, 0xc8, 0x27, 0x2d, 0x37, 0xdc, 0x68, 0xa6, 0x8c, 0x86, 0x26,
		0x73, 0xc7, 0x20, 0xaa, 0x33, 0xe9, 0xfb, 0xe1, 0x6e, 0x66, 0xe4, 0x0f, 0x1d, 0x7f, 0xd8, 0x78,
		0x68, 0x8f, 0xc6, 0xfb, 0xf0, 0x85, 0x52, 0xff, 0x8f, 0x68, 0xa4, 0x0f, 0xc9, 0xb7, 0xef, 0x27,
		0x03, 0xdd, 0xe1, 0x34, 0x82, 0x62, 0xe3, 0xb3, 0xa4, 0xc4, 0x65, 0x49, 0x4b, 0x16, 0x58, 0x47,
		0xb2, 0xc0, 0xc2, 0x58, 0x03, 0x90, 0x2c, 0x70, 0x77, 0xd5, 0xa9, 0xf0, 0x64, 0x81, 0x86, 0x69,
		0x12, 0x9f, 0xe9, 0x03, 0xcf, 0x92, 0x18, 0xba, 0x3a, 0xdb, 0xa9, 0xe8, 0x00, 0x34, 0x89, 0x91,
		0x51, 0x95, 0x98, 0xf0, 0x88, 0xc5, 0x99, 0x3d, 0xd4, 0xd8, 0x29, 0x9a, 0xc2, 0x91, 0xae, 0x78,
		0x64, 0x2b, 0xa0, 0xdc, 0x14, 0x51, 0x6e, 0x0a, 0x29, 0x0f, 0xc5, 0x54, 0x0e, 0x4b, 0x83, 0xfc,
		0x1a, 0x3b, 0x8f, 0x9e, 0xe7, 0x10, 0xc3, 0x95, 0x59, 0xd7, 0xbf, 0x86, 0xdb, 0x2f, 0xcb, 0x40,
		0xc2, 0x1a, 0x12, 0xca, 0xec, 0x20, 0xb6, 0x83, 0x8e, 0x48, 0xf8, 0xd0, 0x70, 0x24, 0x62, 0x8a,
		0xd5, 0xfd, 0x97, 0x09, 0x5e, 0xd4, 0xaa, 0x55, 0x80, 0x0b, 0x80, 0x0b, 0x80, 0x0b, 0x80, 0x0b,
		0x80, 0x0b, 0x39, 0xa7, 0x2d, 0xb4, 0x5d, 0x56, 0x6b, 0x4a, 0xc4, 0x16, 0x4d, 0x54, 0xf0, 0x4b,
		0x3f, 0x31, 0x54, 0xf0, 0x93, 0x39, 0x00, 0x54, 0xf0, 0x13, 0xbd, 0xa5, 0x1a, 0xd5, 0x53, 0x94,
		0xf0, 0x93, 0xb6, 0xab, 0x50, 0xc2, 0xaf, 0xb4, 0xe4, 0xd4, 0x0c, 0x29, 0x8d, 0x68, 0xe1, 0xe4,
		0x86, 0xae, 0xc4, 0xe2, 0x38, 0x8b, 0x3d, 0x83, 0x62, 0x81, 0x62, 0x81, 0x62, 0x81, 0x62, 0x81,
		0x62, 0xa1, 0x46, 0x3a, 0x18, 0xd6, 0x56, 0x70, 0xb8, 0x0a, 0x2c, 0x0c, 0x86, 0xc5, 0x77, 0x4b,
		0xa1, 0x46, 0x3a, 0x08, 0x16, 0x08, 0x56, 0xf6, 0x4d, 0xe5, 0x53, 0x42, 0x06, 0x3e, 0x93, 0xc7,
		0xab, 0x26, 0x1d, 0x96, 0xc9, 0xbf, 0x17, 0xe1, 0x62, 0x38, 0xf8, 0xc0, 0x3e, 0xc1, 0x3e, 0xc1,
		0x3e, 0xc1, 0x3e, 0xe5, 0x9c, 0x36, 0x44, 0x0f, 0x15, 0x09, 0x3f, 0xe8, 0x16, 0x71, 0x8c, 0x57,
		0xe9, 0x28, 0x62, 0xdc, 0x6d, 0x99, 0xb0, 0x04, 0x22, 0x85, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24,
		0x00, 0x24, 0x24, 0x9d, 0x36, 0x44, 0x0a, 0x65, 0xfe, 0x81, 0x1d, 0x5b, 0x4c, 0xbf, 0xb0, 0x63,
		0x4b, 0xd9, 0x52, 0x79, 0xda, 0xb1, 0x0f, 0x9b, 0x55, 0xec, 0x2a, 0x69, 0xbb, 0x0a, 0x86, 0xec,
		0x12, 0x13, 0x51, 0xd9, 0x11, 0x42, 0xb2, 0x22, 0x83, 0x70, 0x55, 0x05, 0x04, 0x14, 0x04, 0x14,
		0x04, 0x14, 0x04, 0x54, 0x43, 0x1c, 0x15, 0x07, 0xd1, 0x88, 0x38, 0x2a, 0x55, 0xf9, 0x27, 0x6e,
		0xaa, 0x80, 0x7f, 0x72, 0xde, 0x52, 0xd2, 0xb3, 0xec, 0x83, 0x7e, 0x82, 0x7e, 0x96, 0x90, 0x7e,
		0x0e, 0x6d, 0xca, 0x42, 0xc3, 0xd1, 0xc7, 0xa9, 0x07, 0xe5, 0xb1, 0xd0, 0xc5, 0x8e, 0x41, 0xaf,
		0x40, 0xaf, 0x40, 0xaf, 0x40, 0xaf, 0x40, 0xaf, 0xc6, 0xa7, 0xcd, 0xf6, 0x25, 0xc9, 0xc6, 0x59,
		0xf9, 0x58, 0x3b, 0x95, 0xd0, 0xd7, 0xf8, 0x5d, 0x96, 0x8e, 0x63, 0x4d, 0x57, 0x6e, 0xd8, 0x90,
		0xb8, 0x76, 0x4b, 0x6b, 0x78, 0x22, 0xb7, 0xf8, 0x00, 0x23, 0xd4, 0x95, 0x5e, 0xd8, 0xae, 0xb2,
		0xf7, 0xb5, 0xaa, 0x9f, 0xf6, 0x7e, 0x7e, 0xad, 0xe9, 0xa7, 0xbd, 0xd1, 0xaf, 0xb5, 0xf8, 0x7f,
		0xff, 0xd4, 0xdf, 0x7e, 0xd6, 0xbf, 0x56, 0xf5, 0xc6, 0xf8, 0xd3, 0xfa, 0xd1, 0xd7, 0xaa, 0x7e,
		0xd4, 0xdb, 0xdf, 0xfb, 0xf6, 0xed, 0xc3, 0xb6, 0xcf, 0xec, 0xff, 0x73, 0xf8, 0x26, 0xaf, 0xec,
		0x47, 0x4f, 0xe6, 0xb2, 0xdd, 0xdc, 0x75, 0xfe, 0xca, 0x6d, 0xed, 0xfe, 0xbb, 0x27, 0x6b, 0xf5,
		0xf6, 0xff, 0x55, 0x29, 0x5b, 0x71, 0xae, 0xf7, 0x25, 0x16, 0x9b, 0x4d, 0x88, 0x4d, 0xd1, 0x62,
		0x33, 0x3e, 0x45, 0x86, 0xde, 0x6f, 0xeb, 0x9f, 0x7a, 0xff, 0xd4, 0xde, 0x37, 0xde, 0x5a, 0xfb,
		0xff, 0x1c, 0xbf, 0x2d, 0x7e, 0xf8, 0x73, 0xd5, 0xd7, 0x6a, 0xef, 0x8f, 0xdf, 0x5a, 0x6b, 0xfe,
		0xd2, 0x7c, 0x6b, 0x6d, 0xd8, 0xc6, 0xd1, 0xdb, 0xde, 0xd2, 0x57, 0xa3, 0xcf, 0xeb, 0xeb, 0x1e,
		0x68, 0xac, 0x79, 0xe0, 0x70, 0xdd, 0x03, 0x87, 0x6b, 0x1e, 0x58, 0x3b, 0xa4, 0xfa, 0x9a, 0x07,
		0x8e, 0xde, 0x7e, 0x2e, 0x7d, 0x7f, 0x6f, 0xf5, 0x57, 0x9b, 0x6f, 0xfb, 0x3f, 0xd7, 0xfd, 0xed,
		0xf8, 0xed, 0x67, 0x6b, 0x7f, 0x1f, 0x8a, 0x44, 0x98, 0x22, 0xc1, 0x76, 0x96, 0xbf, 0x9d, 0xcb,
		0xa7, 0x58, 0x55, 0xb7, 0x3f, 0x0a, 0x66, 0xc0, 0x52, 0x8b, 0x6c, 0xc9, 0x2f, 0xae, 0x55, 0x88,
		0xa2, 0x5a, 0x39, 0x14, 0xd3, 0xca, 0xa1, 0x88, 0x96, 0xda, 0x96, 0x72, 0xea, 0x85, 0x8c, 0x50,
		0xdd, 0xb6, 0xe4, 0xdb, 0xca, 0xa7, 0x5d, 0xc3, 0x5a, 0xbe, 0x1d, 0x4a, 0x81, 0xb5, 0x9c, 0xe3,
		0xe6, 0x80, 0xb5, 0x1c, 0xd6, 0xf2, 0x8d, 0x2c, 0xbc, 0x08, 0x46, 0xca, 0xd4, 0x15, 0x82, 0x91,
		0x78, 0x76, 0x8a, 0x60, 0x24, 0x04, 0x23, 0x09, 0xda, 0x52, 0x48, 0xea, 0x84, 0x60, 0xa4, 0x82,
		0x19, 0x03, 0x50, 0xce, 0x4e, 0xdb, 0x95, 0xea, 0xb0, 0x02, 0x8b, 0x0d, 0xab, 0x51, 0x67, 0x55,
		0x1e, 0x33, 0x97, 0xce, 0xc8, 0x05, 0x33, 0x71, 0xe1, 0x0c, 0x1c, 0xf5, 0x57, 0x55, 0x60, 0xd8,
		0xa8, 0xbf, 0x5a, 0x18, 0x85, 0x25, 0x9c, 0x39, 0x27, 0xa7, 0xc5, 0x21, 0x46, 0x9f, 0x92, 0xbe,
		0xc8, 0xf3, 0x32, 0xf1, 0xac, 0x1f, 0x0b, 0xec, 0xa3, 0x3b, 0xd6, 0xb9, 0x1f, 0x3e, 0x1c, 0x8c,
		0x34, 0xee, 0xc1, 0xb2, 0x6c, 0x56, 0x45, 0x37, 0xbe, 0x2b, 0xf0, 0x0e, 0x8d, 0x84, 0x92, 0x0c,
		0xcd, 0x27, 0xd6, 0xcf, 0x24, 0xde, 0xaf, 0x94, 0x8b, 0x1f, 0x49, 0x82, 0xdf, 0x48, 0x82, 0x9f,
		0x88, 0xf7, 0x8e, 0x15, 0x0c, 0xfe, 0xf3, 0x04, 0xfd, 0x02, 0xa4, 0x76, 0x25, 0x60, 0x34, 0x34,
		0x99, 0x3b, 0x56, 0x0f, 0x9d, 0xc9, 0x88, 0x1e, 0xee, 0x66, 0x86, 0xf7, 0xd0, 0xf1, 0x87, 0x8d,
		0x87, 0xf6, 0x68, 0x50, 0x0f, 0x5f, 0x28, 0xf5, 0xff, 0x88, 0x87, 0xf3, 0xae, 0x98, 0x72, 0x90,
		0x4f, 0x4b, 0x9c, 0xf6, 0x65, 0x85, 0xbc, 0x30, 0x6a, 0xe8, 0xa1, 0x1b, 0x30, 0xe3, 0xd1, 0xe1,
		0xab, 0xe5, 0x2b, 0x94, 0xf4, 0x09, 0x25, 0xae, 0xc9, 0xdf, 0x5e, 0x2c, 0xe0, 0xe0, 0x4c, 0x20,
		0xc8, 0xed, 0xa7, 0x33, 0xed, 0xe8, 0xf8, 0xf4, 0x44, 0xd3, 0xb5, 0x2f, 0x23, 0xb5, 0xa2, 0xdd,
		0xc6, 0x6a, 0x45, 0xbb, 0x25, 0x56, 0xe8, 0x5a, 0x86, 0x6b, 0xbe, 0x6a, 0x5d, 0xea, 0x31, 0xcf,
		0xf4, 0x9c, 0x6f, 0xee, 0xde, 0x97, 0xdb, 0xdb, 0xee, 0xbe, 0xf6, 0x85, 0xd0, 0xc0, 0xf6, 0x5c,
		0xed, 0x50, 0xeb, 0x7b, 0x54, 0xeb, 0x74, 0x87, 0x0d, 0xcd, 0x70, 0xad, 0xe8, 0x17, 0x11, 0xd9,
		0xb0, 0x44, 0x83, 0xfe, 0x59, 0xb0, 0x3f, 0x5d, 0x44, 0x41, 0xe8, 0x52, 0x16, 0xce, 0x9f, 0xc3,
		0xf7, 0xfc, 0x57, 0xb9, 0xe8, 0xc8, 0xeb, 0x5d, 0xb1, 0x8c, 0x84, 0xbc, 0xe4, 0x97, 0x20, 0x7d,
		0x2a, 0x5d, 0x8f, 0xf2, 0xd9, 0x3f, 0xd9, 0x57, 0x39, 0x5b, 0x0b, 0x19, 0x57, 0x75, 0x82, 0xe7,
		0x33, 0x5b, 0x4c, 0xf8, 0x02, 0x76, 0xfe, 0x00, 0x5d, 0x0a, 0x20, 0x17, 0x00, 0xc0, 0x05, 0x00,
		0xee, 0xac, 0x5b, 0xa6, 0x1d, 0x3e, 0x45, 0xaf, 0x91, 0x58, 0x5c, 0x40, 0x06, 0x1f, 0x09, 0x92,
		0x80, 0x89, 0x03, 0xcf, 0xd4, 0xed, 0x7e, 0x6b, 0x46, 0x1e, 0x2c, 0x7c, 0x30, 0xfe, 0xf7, 0xbc,
		0xcc, 0x58, 0xfe, 0x2c, 0xfe, 0xc8, 0x6f, 0xc5, 0xf2, 0x63, 0xf4, 0xeb, 0x54, 0x8a, 0xcc, 0xfd,
		0x9b, 0x93, 0x92, 0xae, 0x9c, 0x93, 0xc0, 0xa4, 0xb6, 0x3f, 0x96, 0xab, 0x95, 0xb6, 0x65, 0xd9,
		0xd1, 0xef, 0x86, 0xa3, 0x75, 0xba, 0x5a, 0xd4, 0x97, 0xd6, 0x37, 0x06, 0xb6, 0xf3, 0xaa, 0x8d,
		0x84, 0x62, 0x48, 0x63, 0x11, 0x1c, 0xa9, 0xc5, 0x6f, 0xee, 0x74, 0x26, 0xbc, 0x46, 0x33, 0xb1,
		0xd9, 0x70, 0x6a, 0x8e, 0xb7, 0x81, 0x59, 0x84, 0x41, 0x59, 0x98, 0x01, 0x59, 0x14, 0x76, 0x14,
		0x6e, 0x20, 0x16, 0x0e, 0x14, 0x45, 0x1a, 0x80, 0x8b, 0x45, 0xfa, 0xce, 0x6d, 0xbe, 0x96, 0xac,
		0x4a, 0x8c, 0x60, 0xb8, 0xef, 0xa8, 0xc4, 0xb1, 0x15, 0xb5, 0xce, 0x79, 0xad, 0x17, 0x04, 0xdc,
		0x85, 0x6b, 0x3a, 0x5e, 0x60, 0xbb, 0x4f, 0x91, 0x40, 0x63, 0x86, 0xed, 0x12, 0x1a, 0x63, 0xfc,
		0x08, 0xf7, 0x6b, 0xb1, 0x75, 0x23, 0xd0, 0x9e, 0x0d, 0xd7, 0x72, 0x88, 0xa5, 0x3d, 0xbe, 0x6a,
		0xec, 0xd9, 0x0e, 0xbe, 0xb9, 0x9d, 0xae, 0x96, 0xc8, 0x3a, 0xde, 0xe3, 0xe3, 0x2b, 0xf2, 0x84,
		0x89, 0x3e, 0x91, 0x22, 0x50, 0xb8, 0x28, 0xcc, 0x83, 0x4e, 0x0b, 0xf5, 0x9d, 0xe5, 0xc3, 0xa5,
		0x05, 0xf9, 0xca, 0x8a, 0xed, 0x79, 0x10, 0x68, 0x37, 0x93, 0x60, 0x3f, 0x13, 0x67, 0x47, 0x53,
		0xd2, 0x9e, 0x26, 0x4b, 0x10, 0xe4, 0x61, 0x5f, 0x93, 0x2e, 0x1b, 0x54, 0xb5, 0xb7, 0x89, 0x91,
		0x3b, 0xe2, 0x5a, 0xed, 0x95, 0xdb, 0xbf, 0x91, 0xb3, 0x25, 0xab, 0x97, 0xd5, 0x2c, 0xc1, 0xd7,
		0x2e, 0x29, 0xd3, 0x1e, 0xc9, 0x41, 0x10, 0x6d, 0xef, 0xb7, 0xcb, 0x76, 0x9e, 0xd3, 0xaf, 0x75,
		0xba, 0x27, 0x53, 0xa2, 0x09, 0x5e, 0xbb, 0x42, 0xc6, 0x6e, 0x48, 0xb7, 0x20, 0xdb, 0xbf, 0xce,
		0x14, 0xaf, 0xb2, 0x62, 0x4e, 0x58, 0x4c, 0xba, 0x57, 0x98, 0x60, 0x93, 0x71, 0x3b, 0x29, 0x17,
		0x33, 0x1b, 0x45, 0xcb, 0x4c, 0xc5, 0x78, 0x50, 0x2e, 0x6e, 0xd4, 0x8a, 0x17, 0x72, 0xe2, 0x4e,
		0x95, 0xb8, 0xc3, 0x1e, 0x9e, 0xd4, 0x47, 0xae, 0xf0, 0xc9, 0x6a, 0xf5, 0xa9, 0x58, 0xcf, 0xa6,
		0xaf, 0x9b, 0x8e, 0x3d, 0x9a, 0x7c, 0xc6, 0x85, 0x9e, 0xec, 0xbc, 0xd9, 0x46, 0x33, 0xae, 0x0c,
		0xcf, 0xe2, 0x0e, 0x95, 0xd8, 0xb3, 0x51, 0xc9, 0x15, 0x43, 0xf0, 0x89, 0xb3, 0xe6, 0x66, 0xf3,
		0xe1, 0x69, 0xe3, 0xe1, 0x6e, 0xd3, 0xe1, 0x4d, 0xdd, 0x84, 0xd9, 0x6c, 0x84, 0xf1, 0x30, 0x11,
		0x36, 0x99, 0x7c, 0xbd, 0xc1, 0xdc, 0xe2, 0x8e, 0x05, 0x14, 0xba, 0xe5, 0x54, 0xc8, 0xf6, 0xad,
		0x60, 0x34, 0xe3, 0xf5, 0xc9, 0x63, 0xba, 0x67, 0xea, 0xa6, 0x37, 0xf0, 0x63, 0x1c, 0x68, 0xe9,
		0x0e, 0x31, 0xfa, 0x51, 0xe3, 0x6f, 0x79, 0x21, 0xf4, 0x0c, 0xa8, 0x84, 0xb8, 0xc6, 0xa3, 0x43,
		0x2c, 0x7e, 0xda, 0x6a, 0xd2, 0x60, 0x91, 0x34, 0x55, 0xf6, 0x8a, 0xf9, 0x50, 0x54, 0x50, 0x54,
		0x50, 0x54, 0x50, 0x54, 0x50, 0x54, 0x79, 0x29, 0xaa, 0x01, 0x0b, 0xf9, 0x29, 0xa9, 0xa8, 0x31,
		0x48, 0x74, 0x48, 0x74, 0x48, 0xf4, 0x02, 0x49, 0x74, 0x6e, 0xa5, 0xb1, 0x39, 0x96, 0xbe, 0xe6,
		0x9c, 0xcd, 0x87, 0x63, 0x40, 0x91, 0x88, 0x6c, 0x3c, 0x49, 0x6a, 0x94, 0x26, 0xe7, 0xac, 0xca,
		0xc2, 0x33, 0x9f, 0x88, 0xcb, 0x6c, 0xc2, 0x31, 0x2c, 0x42, 0x48, 0xba, 0x9b, 0xe9, 0x9a, 0x1d,
		0x1d, 0x1d, 0x1e, 0x61, 0xd9, 0xb8, 0x08, 0x47, 0x7e, 0xad, 0xf4, 0x72, 0x15, 0xd2, 0x02, 0x62,
		0x70, 0x04, 0xc4, 0xdc, 0x08, 0x88, 0x09, 0xbe, 0xfd, 0x74, 0xa6, 0x1d, 0x9f, 0xd6, 0x5a, 0x5a,
		0xec, 0x58, 0x75, 0x09, 0x4b, 0x42, 0x27, 0x14, 0x0b, 0x14, 0x16, 0x15, 0xfc, 0x22, 0x37, 0x56,
		0xf8, 0x17, 0xcb, 0x81, 0x13, 0x0f, 0x16, 0x29, 0xe3, 0xc9, 0xf2, 0x06, 0x24, 0x8c, 0x7d, 0xf4,
		0x05, 0x8e, 0x46, 0x70, 0x89, 0xfd, 0xf4, 0xfc, 0xe8, 0xd1, 0x20, 0x7b, 0x40, 0xc2, 0xb4, 0x29,
		0xc4, 0x24, 0x20, 0x26, 0x21, 0x17, 0xfe, 0xad, 0x58, 0x4c, 0xc2, 0xe4, 0xc4, 0xf0, 0xb3, 0x9e,
		0x25, 0x2d, 0xf2, 0x31, 0xa1, 0xd5, 0x60, 0x42, 0x83, 0x09, 0x6d, 0x17, 0x4d, 0x68, 0xbc, 0x2e,
		0x99, 0x65, 0x8d, 0xf6, 0x5b, 0xbb, 0x79, 0x33, 0x45, 0xff, 0x09, 0x3a, 0xee, 0xdc, 0x8f, 0xbd,
		0x88, 0xe3, 0x2f, 0x4c, 0x0c, 0xc8, 0xa4, 0x9e, 0xb8, 0xa3, 0x2a, 0x88, 0x62, 0x16, 0xf5, 0x8e,
		0xaa, 0x2d, 0xf0, 0x86, 0x2a, 0xf7, 0x6b, 0x89, 0x82, 0x72, 0xac, 0xe2, 0xfe, 0xa7, 0x4c, 0x71,
		0x23, 0x4d, 0xec, 0x48, 0x13, 0x3f, 0x32, 0xc4, 0x10, 0x5f, 0x71, 0xc4, 0x59, 0x2c, 0x25, 0x2f,
		0x40, 0x58, 0x4e, 0x54, 0x59, 0x15, 0x9b, 0x45, 0x96, 0x18, 0x15, 0x5e, 0x4a, 0x54, 0xe1, 0x4a,
		0xcb, 0x3d, 0x11, 0xaf, 0x5b, 0x46, 0xc1, 0x4b, 0xc5, 0x2b, 0x24, 0xf7, 0x76, 0x3a, 0x2d, 0xa8,
		0x30, 0x43, 0xb7, 0x38, 0xa9, 0xcd, 0xd3, 0x35, 0xed, 0xd8, 0xee, 0x77, 0xdd, 0x31, 0x5e, 0x09,
		0x4d, 0x24, 0xaa, 0x30, 0x2c, 0xb8, 0xa2, 0x2f, 0x60, 0x43, 0x60, 0x43, 0x60, 0xc3, 0x9d, 0xc1,
		0x86, 0x57, 0x86, 0x6b, 0x19, 0xcc, 0xa3, 0xaf, 0x02, 0x12, 0xf8, 0x88, 0xc7, 0x9d, 0xfe, 0xf3,
		0x6b, 0x00, 0xdc, 0xf9, 0x2b, 0xdc, 0x39, 0x29, 0x3e, 0xbd, 0x58, 0xd3, 0xba, 0xfe, 0xb6, 0xff,
		0x7f, 0xf7, 0xff, 0x1f, 0x20, 0xe3, 0x2c, 0x64, 0xfc, 0xfd, 0xfb, 0x02, 0xd6, 0x03, 0xd6, 0x7b,
		0x43, 0x4e, 0xe1, 0x4c, 0x41, 0x12, 0x49, 0xdc, 0x40, 0xf2, 0x5b, 0xa6, 0xb8, 0x09, 0xfe, 0xcb,
		0xc3, 0x61, 0x69, 0x78, 0x1a, 0x70, 0xf9, 0x1b, 0x6e, 0x39, 0x83, 0x72, 0xf8, 0x7f, 0xe0, 0xff,
		0x91, 0x0d, 0xae, 0x8b, 0x25, 0x84, 0xb9, 0x03, 0x5d, 0x81, 0x45, 0xa6, 0x44, 0x14, 0x95, 0x5a,
		0x51, 0x44, 0xca, 0xf6, 0xcb, 0x24, 0xce, 0x47, 0x25, 0x22, 0xb9, 0x4b, 0xf4, 0x51, 0xb3, 0x05,
		0x77, 0xea, 0xd7, 0x21, 0xd4, 0x21, 0xd4, 0x77, 0x50, 0xa8, 0xc3, 0xa9, 0x0f, 0xc3, 0xad, 0x60,
		0x31, 0x23, 0x5a, 0xdc, 0x48, 0x13, 0x3b, 0xd2, 0xc4, 0x8f, 0x0c, 0x31, 0xc4, 0xdf, 0x64, 0xa0,
		0xc1, 0xa9, 0xff, 0x0b, 0xc0, 0x02, 0xa7, 0x3e, 0x9c, 0xfa, 0x1b, 0xf5, 0x02, 0xa7, 0xbe, 0x08,
		0xe1, 0x04, 0xdf, 0x35, 0x20, 0x10, 0x20, 0x10, 0x20, 0x90, 0x7a, 0x10, 0x08, 0xbe, 0xeb, 0x72,
		0xc3, 0x2b, 0xf8, 0xae, 0x37, 0x47, 0x46, 0x65, 0xf0, 0x5d, 0x17, 0x12, 0xd2, 0x78, 0xd4, 0x7e,
		0x12, 0x91, 0xe0, 0x27, 0x51, 0xa8, 0xa3, 0xf6, 0x01, 0x5d, 0x00, 0x5d, 0x00, 0x5d, 0x60, 0xbd,
		0xe1, 0xb6, 0xdb, 0x27, 0xc1, 0x15, 0xba, 0x10, 0x01, 0x33, 0x87, 0x30, 0x1a, 0x02, 0xda, 0xbe,
		0x70, 0xc3, 0x81, 0xb8, 0x13, 0x75, 0xef, 0xdd, 0x31, 0x6a, 0xbb, 0x4f, 0x42, 0xab, 0x67, 0x55,
		0xaa, 0xd1, 0x3a, 0xdc, 0xdc, 0xff, 0x79, 0x71, 0x2b, 0xb2, 0x0e, 0x58, 0x2d, 0xea, 0xe5, 0xee,
		0xbe, 0x7d, 0xdf, 0x39, 0x13, 0xd9, 0x4d, 0x3d, 0xea, 0xe6, 0xfc, 0xef, 0xeb, 0xf6, 0x55, 0xe7,
		0x4c, 0x4c, 0x41, 0xab, 0xb7, 0xf7, 0xa2, 0x16, 0xbb, 0xc3, 0xa1, 0x08, 0xc4, 0x2f, 0xbb, 0x98,
		0xbc, 0x17, 0x6e, 0xde, 0xd2, 0x95, 0xbd, 0x8c, 0xb6, 0x12, 0x77, 0xe5, 0x3b, 0xaf, 0xcb, 0x46,
		0x1b, 0xa9, 0xa5, 0xd5, 0x14, 0x29, 0x2d, 0x86, 0x30, 0xc1, 0x8d, 0x14, 0x6e, 0x19, 0xc2, 0x04,
		0x47, 0xe1, 0x12, 0xa5, 0x28, 0xd9, 0x96, 0x35, 0x61, 0xc5, 0xbf, 0xc9, 0x2b, 0x17, 0xb7, 0x6f,
		0xe5, 0xd2, 0x0e, 0x58, 0x9b, 0x31, 0x4e, 0xe9, 0x2f, 0xae, 0x6c, 0xf7, 0xc2, 0x21, 0x11, 0xb2,
		0xe3, 0x94, 0xa2, 0xb2, 0x72, 0x65, 0xbc, 0xcc, 0xb4, 0x58, 0x3b, 0x69, 0x34, 0x9a, 0xc7, 0x8d,
		0x46, 0xf5, 0xf8, 0xf0, 0xb8, 0x7a, 0x7a, 0x74, 0x54, 0x6b, 0xd6, 0x38, 0x24, 0xda, 0xac, 0xdc,
		0x50, 0x8b, 0x50, 0x62, 0x7d, 0x8c, 0xde, 0xa9, 0x1b, 0x3a, 0x0e, 0xcf, 0x26, 0x3f, 0x07, 0x84,
		0x72, 0xc9, 0xa9, 0x89, 0x0c, 0x94, 0x29, 0x91, 0xf0, 0xed, 0xa7, 0x33, 0xed, 0xa4, 0xde, 0x6c,
		0x69, 0x6d, 0x57, 0xbb, 0x60, 0xcf, 0xa3, 0xac, 0x87, 0xe3, 0x52, 0x7e, 0xda, 0x2d, 0x09, 0x3c,
		0x27, 0x8c, 0x04, 0x23, 0xf2, 0x52, 0x4a, 0x66, 0x83, 0x4b, 0x79, 0x29, 0xb7, 0x5a, 0x24, 0x64,
		0xab, 0xe4, 0x2a, 0x1d, 0xd4, 0xa9, 0x01, 0xba, 0x0c, 0x0c, 0xe4, 0x16, 0x01, 0xbd, 0x9e, 0xf4,
		0x8a, 0xa4, 0x9b, 0xc5, 0xda, 0x0f, 0x45, 0xce, 0xbb, 0xe9, 0x53, 0xef, 0xe5, 0x55, 0x37, 0xa8,
		0x9f, 0x3d, 0xef, 0xe6, 0xb4, 0x29, 0xe4, 0xdd, 0x44, 0xde, 0xcd, 0x74, 0xda, 0x76, 0xb7, 0xf2,
		0x6e, 0x72, 0x4a, 0xca, 0xc7, 0x37, 0x19, 0x1f, 0x72, 0x6e, 0xe6, 0x88, 0xa3, 0x91, 0x73, 0x53,
		0x2b, 0x4f, 0xce, 0xcd, 0x81, 0x67, 0x09, 0xb8, 0x9b, 0x13, 0xb7, 0xca, 0xeb, 0x2a, 0x01, 0xc7,
		0x12, 0x8a, 0xd3, 0x46, 0x3b, 0x77, 0xed, 0x8f, 0x97, 0x17, 0x7c, 0x88, 0x50, 0x0f, 0x37, 0x4b,
		0x0b, 0x23, 0xec, 0x64, 0x1a, 0x0f, 0x70, 0x09, 0x49, 0x90, 0x39, 0xa0, 0xf0, 0x37, 0x4b, 0x89,
		0x1b, 0x0e, 0x08, 0x1d, 0x31, 0x3b, 0x01, 0xb7, 0x4b, 0x39, 0xfa, 0x84, 0xc5, 0xf8, 0x82, 0xc5,
		0xfa, 0x80, 0x47, 0xbe, 0xdf, 0x89, 0x88, 0x16, 0xe0, 0x1f, 0x8f, 0xbd, 0xbe, 0xb7, 0x17, 0x57,
		0x37, 0xf7, 0x17, 0x0f, 0x37, 0xd7, 0x97, 0x7f, 0x8b, 0xe8, 0x23, 0x76, 0xf9, 0xb6, 0x2f, 0x2f,
		0x2b, 0xc5, 0x0e, 0xa5, 0x10, 0xe6, 0xde, 0x8d, 0xe7, 0x2e, 0xc4, 0xa5, 0x9b, 0xec, 0x0c, 0x21,
		0xce, 0xdc, 0xb9, 0x7d, 0xc1, 0xdb, 0x93, 0x5b, 0x56, 0x0f, 0xa9, 0x00, 0xf7, 0x48, 0xd2, 0x36,
		0x7f, 0x37, 0xc9, 0xe4, 0x47, 0x60, 0x00, 0xd1, 0xed, 0xa7, 0xb3, 0x5a, 0xb5, 0x7e, 0xdc, 0xd2,
		0x3e, 0x07, 0xb6, 0xfb, 0xa4, 0xb5, 0x6f, 0xbb, 0x1a, 0xf3, 0xb4, 0xce, 0xc0, 0x1f, 0xb9, 0xe3,
		0xb4, 0x7b, 0x6a, 0xb8, 0x81, 0x6f, 0xd0, 0xe8, 0xf7, 0xbb, 0xf0, 0xd1, 0x25, 0x4c, 0xfb, 0xc3,
		0x60, 0xe4, 0x87, 0xf1, 0x1a, 0x28, 0x1e, 0x64, 0x27, 0xca, 0xa3, 0x22, 0x0d, 0x1f, 0xad, 0xc4,
		0x49, 0x59, 0xd6, 0x73, 0x67, 0xa2, 0x36, 0x7a, 0x3b, 0x11, 0xb5, 0x21, 0x3c, 0xeb, 0x96, 0xea,
		0xe1, 0x15, 0xea, 0x78, 0xc3, 0x12, 0x6f, 0x00, 0x97, 0x24, 0x5a, 0xf9, 0x14, 0x14, 0xe7, 0x93,
		0x5d, 0x85, 0x6b, 0x56, 0x15, 0xee, 0xd6, 0xd9, 0x3a, 0xac, 0xb3, 0xf9, 0x1b, 0x28, 0x60, 0x9d,
		0xdd, 0x9c, 0xa0, 0xc0, 0x3a, 0xcb, 0x85, 0xe0, 0xc1, 0x3a, 0x9b, 0x8f, 0x90, 0x13, 0x26, 0xec,
		0x44, 0x13, 0x12, 0x58, 0x67, 0xd5, 0xb1, 0x19, 0xc0, 0x3a, 0x0b, 0xeb, 0xec, 0xca, 0xf6, 0x61,
		0x9d, 0x9d, 0xae, 0x23, 0xac, 0xb3, 0x0b, 0xad, 0xc3, 0x3a, 0xbb, 0xfd, 0x3b, 0x83, 0x75, 0x76,
		0x41, 0x41, 0xc0, 0x3a, 0x0b, 0xeb, 0x2c, 0xac, 0xb3, 0x39, 0x8d, 0x07, 0xc6, 0xc9, 0x6d, 0x8d,
		0x93, 0x1c, 0xae, 0xee, 0x21, 0x62, 0x9e, 0xfb, 0xb2, 0x54, 0x32, 0x19, 0x6d, 0x37, 0xbd, 0x30,
		0xd1, 0x8d, 0xba, 0x6b, 0x53, 0xbf, 0xc8, 0xf1, 0xf9, 0xd9, 0x4c, 0xd0, 0x5c, 0x4c, 0xcf, 0xdc,
		0xe2, 0xf2, 0xeb, 0x88, 0xcb, 0x17, 0x67, 0x4d, 0x41, 0x5c, 0xfe, 0x94, 0x25, 0x65, 0x8f, 0xcb,
		0x0f, 0x23, 0x49, 0x11, 0xf0, 0x8c, 0xcc, 0x1f, 0xb7, 0x88, 0xd8, 0x7c, 0xe1, 0x47, 0x54, 0x14,
		0xf6, 0x87, 0xf7, 0x47, 0x2b, 0x8f, 0xf7, 0xc7, 0x76, 0x75, 0xcb, 0x0e, 0x4c, 0x83, 0x5a, 0xc4,
		0xd2, 0xfd, 0xef, 0x2c, 0x10, 0x50, 0x16, 0x69, 0xa9, 0x0b, 0x78, 0x4b, 0x0a, 0x23, 0x1c, 0x44,
		0x1b, 0x08, 0xe0, 0x2d, 0x51, 0xc7, 0x86, 0x27, 0xce, 0x5b, 0x32, 0x56, 0xfb, 0xcd, 0x86, 0x00,
		0x5f, 0x09, 0xc7, 0xf4, 0xa9, 0x95, 0x5b, 0xc3, 0x7d, 0x52, 0xc2, 0xca, 0x78, 0x65, 0xbb, 0xe2,
		0x6c, 0x79, 0x5f, 0x0c, 0x27, 0x24, 0xe2, 0xd2, 0x58, 0x55, 0x3e, 0x51, 0xc3, 0x8c, 0xe8, 0xf7,
		0xb9, 0xfd, 0x64, 0xf3, 0xca, 0x43, 0xb3, 0x7a, 0xfb, 0x91, 0x27, 0x83, 0xd9, 0x43, 0xc2, 0x25,
		0xbd, 0x8b, 0xc0, 0x93, 0x37, 0xbf, 0xb4, 0xc6, 0x8b, 0xf8, 0xa5, 0x15, 0x93, 0xa7, 0xa7, 0xec,
		0xab, 0x8d, 0x98, 0xd8, 0x0d, 0x96, 0x01, 0x9e, 0xa0, 0x05, 0xe5, 0x77, 0xfb, 0xe9, 0x4c, 0x6b,
		0xd4, 0x4f, 0x0f, 0x35, 0x5d, 0xbb, 0x32, 0x5c, 0xe3, 0x69, 0xe4, 0x2f, 0xe8, 0xb8, 0x7d, 0x8f,
		0x0e, 0x62, 0x33, 0xa4, 0xf6, 0xd1, 0x08, 0x88, 0xd6, 0xf7, 0xa8, 0xc6, 0x9e, 0xc9, 0x37, 0x37,
		0x36, 0xd5, 0xb9, 0x84, 0x25, 0xa9, 0x74, 0xb4, 0xbd, 0x4e, 0x77, 0x1f, 0x4e, 0xa1, 0x7c, 0x61,
		0xe0, 0x4a, 0x38, 0xc8, 0x69, 0x69, 0x21, 0xa9, 0x24, 0x8f, 0x87, 0x4b, 0x05, 0x61, 0x57, 0x27,
		0x94, 0x7a, 0x54, 0x1c, 0x6b, 0x9e, 0x69, 0x1e, 0x8c, 0x19, 0x8c, 0x19, 0x8c, 0x19, 0x8c, 0x19,
		0x8c, 0x19, 0x8c, 0x19, 0x8c, 0x19, 0x8c, 0x19, 0x8c, 0x19, 0x8c, 0x19, 0x8c, 0x19, 0x8c, 0x19,
		0x8c, 0x19, 0x92, 0x4a, 0x25, 0xc6, 0xdc, 0xf7, 0xe8, 0x8f, 0x91, 0x23, 0xd8, 0x33, 0x19, 0x11,
		0xc4, 0x9b, 0x97, 0x3a, 0x01, 0x7b, 0x06, 0x7b, 0x06, 0x7b, 0x06, 0x7b, 0x06, 0x7b, 0x06, 0x7b,
		0x06, 0x7b, 0x06, 0x7b, 0x06, 0x7b, 0x06, 0x7b, 0x06, 0x7b, 0x06, 0x7b, 0x06, 0x7b, 0x86, 0xa4,
		0x52, 0x93, 0x3d, 0x0b, 0xf3, 0x39, 0x2f, 0x74, 0x01, 0xe6, 0x0c, 0xe6, 0x0c, 0xe6, 0x0c, 0xe6,
		0x0c, 0xe6, 0x0c, 0xe6, 0x0c, 0xe6, 0x0c, 0xe6, 0x0c, 0xe6, 0x0c, 0xe6, 0x0c, 0xe6, 0x0c, 0xe6,
		0x0c, 0xe6, 0x0c, 0x49, 0xa5, 0x12, 0x73, 0x1e, 0x84, 0x0e, 0xb3, 0x4d, 0x23, 0x60, 0x22, 0xfd,
		0xce, 0x4b, 0x9d, 0x80, 0x3d, 0x83, 0x3d, 0x83, 0x3d, 0x83, 0x3d, 0x83, 0x3d, 0x83, 0x3d, 0x83,
		0x3d, 0x83, 0x3d, 0x83, 0x3d, 0x83, 0x3d, 0x97, 0x9f, 0x3d, 0xb7, 0x36, 0x61, 0x58, 0xda, 0x84,
		0x60, 0x7d, 0x73, 0xe7, 0x18, 0x96, 0xa6, 0x6b, 0xb6, 0x7f, 0xf7, 0x1a, 0x30, 0x32, 0xb8, 0x63,
		0x06, 0x0b, 0xfe, 0x3c, 0xeb, 0xb8, 0x57, 0x11, 0xa6, 0xbe, 0xe1, 0x09, 0xa9, 0xc1, 0xad, 0x45,
		0x70, 0x6b, 0xa1, 0x0b, 0x0f, 0x29, 0xa7, 0x3a, 0xf3, 0x16, 0xe6, 0xb3, 0x5e, 0xe8, 0x02, 0xac,
		0x1b, 0xac, 0x1b, 0xac, 0x1b, 0xac, 0x1b, 0xac, 0x1b, 0xac, 0x1b, 0xac, 0x1b, 0xac, 0x1b, 0xac,
		0x1b, 0xac, 0x1b, 0xac, 0x3b, 0x1d, 0xf9, 0xea, 0x7e, 0x07, 0xe7, 0xde, 0x41, 0xce, 0x1d, 0x2f,
		0x3b, 0x24, 0x9c, 0x9a, 0x8c, 0x5b, 0xa0, 0x87, 0x1b, 0x7e, 0x6d, 0x30, 0x6c, 0x30, 0x6c, 0x30,
		0x6c, 0x30, 0x6c, 0x30, 0x6c, 0x30, 0x6c, 0x30, 0x6c, 0x30, 0x6c, 0x30, 0xec, 0x9d, 0x61, 0xd8,
		0x88, 0x0a, 0x47, 0x54, 0x38, 0xa2, 0xc2, 0xcb, 0xc4, 0x94, 0x85, 0x79, 0xa4, 0xe1, 0x87, 0x06,
		0x4b, 0x06, 0x4b, 0x06, 0x4b, 0x06, 0x4b, 0x06, 0x4b, 0x06, 0x4b, 0x06, 0x4b, 0x06, 0x4b, 0x06,
		0x4b, 0x06, 0x4b, 0x06, 0x4b, 0x06, 0x4b, 0x86, 0xa4, 0x52, 0x8b, 0x25, 0x7b, 0x21, 0x13, 0x5e,
		0x20, 0x7a, 0x45, 0x1f, 0xe0, 0xce, 0xe0, 0xce, 0xe0, 0xce, 0xe0, 0xce, 0xe0, 0xce, 0xe0, 0xce,
		0xe0, 0xce, 0xe0, 0xce, 0xe0, 0xce, 0xe0, 0xce, 0xe0, 0xce, 0xe0, 0xce, 0xe0, 0xce, 0x90, 0x54,
		0x4a, 0x71, 0x67, 0x91, 0x25, 0xa2, 0x17, 0xda, 0x07, 0x67, 0x06, 0x67, 0x06, 0x67, 0x06, 0x67,
		0x06, 0x67, 0x06, 0x67, 0x06, 0x67, 0x06, 0x67, 0x06, 0x67, 0x06, 0x67, 0x06, 0x67, 0x06, 0x67,
		0x06, 0x67, 0x86, 0xa4, 0x52, 0x8a, 0x33, 0x8b, 0x2f, 0x12, 0xbd, 0xb2, 0x17, 0xf0, 0x67, 0xf0,
		0x67, 0xf0, 0x67, 0xf0, 0x67, 0xf0, 0x67, 0xf0, 0x67, 0xf0, 0x67, 0xf0, 0x67, 0xf0, 0x67, 0xf0,
		0x67, 0xf0, 0x67, 0xf0, 0x67, 0xf0, 0x67, 0x48, 0x2a, 0x45, 0xf9, 0xb3, 0x38, 0xbf, 0x33, 0xea,
		0x44, 0x83, 0x3b, 0x83, 0x3b, 0x83, 0x3b, 0x83, 0x3b, 0x83, 0x3b, 0x83, 0x3b, 0x83, 0x3b, 0x83,
		0x3b, 0x83, 0x3b, 0x83, 0x3b, 0x83, 0x3b, 0x83, 0x3b, 0x83, 0x3b, 0xab, 0xcc, 0x9d, 0xc5, 0x17,
		0x8a, 0x5e, 0xd9, 0x0b, 0xf8, 0x33, 0xf8, 0x33, 0xf8, 0x33, 0xf8, 0x33, 0xf8, 0x33, 0xf8, 0x33,
		0xf8, 0x33, 0xf8, 0x33, 0xf8, 0x33, 0xf8, 0x33, 0xf8, 0x33, 0xf8, 0x33, 0xf8, 0x33, 0x24, 0x95,
		0xa2, 0xfc, 0x59, 0x9c, 0xef, 0x19, 0xf5, 0x9e, 0xc1, 0x9d, 0xc1, 0x9d, 0xc1, 0x9d, 0xc1, 0x9d,
		0xc1, 0x9d, 0xc1, 0x9d, 0xc1, 0x9d, 0xc1, 0x9d, 0xc1, 0x9d, 0xc1, 0x9d, 0xb7, 0x22, 0x58, 0xdf,
		0xdc, 0xe5, 0xda, 0xbf, 0x37, 0x21, 0x43, 0xcd, 0xe7, 0xf2, 0x73, 0xeb, 0xdf, 0x2e, 0x3d, 0x24,
		0x9d, 0xa2, 0xdc, 0x5b, 0xa4, 0xc7, 0x1a, 0x7e, 0x6a, 0x70, 0x6d, 0x70, 0x6d, 0x70, 0x6d, 0x70,
		0x6d, 0x70, 0x6d, 0x70, 0x6d, 0x70, 0x6d, 0x70, 0x6d, 0x70, 0x6d, 0x70, 0x6d, 0xf8, 0xa9, 0x77,
		0x9b, 0x4b, 0x83, 0x2b, 0xab, 0xca, 0x95, 0xc5, 0x79, 0xa7, 0xe1, 0x93, 0x06, 0x4f, 0x06, 0x4f,
		0x06, 0x4f, 0x06, 0x4f, 0x06, 0x4f, 0x06, 0x4f, 0x06, 0x4f, 0x06, 0x4f, 0x06, 0x4f, 0x06, 0x4f,
		0x06, 0x4f, 0x06, 0x4f, 0x86, 0xa4, 0x92, 0xc8, 0x93, 0xdf, 0xe5, 0x28, 0x29, 0x2b, 0x6d, 0xd7,
		0xf5, 0x58, 0xbc, 0x3d, 0xb8, 0x1c, 0xbd, 0x4a, 0x60, 0x3e, 0x93, 0x81, 0xe1, 0x1b, 0xec, 0x39,
		0xda, 0x93, 0x07, 0x9e, 0x4f, 0x5c, 0x33, 0xe6, 0xb2, 0xba, 0x1d, 0xed, 0xb7, 0xbe, 0x61, 0x92,
		0xe0, 0x60, 0xd5, 0xaf, 0x07, 0x41, 0xf8, 0x38, 0xf3, 0xf9, 0xec, 0xbf, 0x0e, 0x6c, 0x7f, 0xd8,
		0x38, 0x08, 0x98, 0xc1, 0xc8, 0xc1, 0x18, 0xbd, 0xf3, 0xe0, 0xed, 0x95, 0x80, 0xd1, 0xd0, 0x64,
		0xee, 0x58, 0x34, 0x76, 0x26, 0xdd, 0x3d, 0xdc, 0xcd, 0xf4, 0xfd, 0xd0, 0xf1, 0x87, 0x8d, 0x87,
		0xb3, 0x49, 0xaf, 0xef, 0xf2, 0x59, 0xe9, 0x0c, 0xab, 0x5c, 0xb1, 0x9e, 0x4d, 0x5f, 0x37, 0x1d,
		0x7b, 0x24, 0x26, 0xb2, 0x2d, 0x71, 0xa2, 0x47, 0x66, 0x1b, 0xcd, 0xb8, 0x03, 0xcf, 0x49, 0xdf,
		0x08, 0x1d, 0xc6, 0x45, 0x8b, 0x56, 0x62, 0xb0, 0x95, 0x6d, 0x95, 0x7a, 0x19, 0xe7, 0xc3, 0xc7,
		0x12, 0xc4, 0xcd, 0x02, 0xc4, 0xd3, 0xf2, 0xc3, 0xdd, 0xe2, 0xc3, 0x5b, 0xeb, 0x0b, 0xb3, 0xf0,
		0x08, 0x53, 0xe9, 0x22, 0x2c, 0x3a, 0xf9, 0x6a, 0x14, 0x6e, 0x96, 0x9b, 0x64, 0xb7, 0x3d, 0x7a,
		0x9e, 0x43, 0x0c, 0x97, 0xc7, 0x7e, 0x1b, 0x1f, 0xce, 0x5a, 0x4d, 0x41, 0x41, 0x4e, 0xdc, 0x88,
		0xc4, 0x58, 0xfc, 0x84, 0xf8, 0xa4, 0xc1, 0x22, 0x09, 0xf0, 0xe8, 0x64, 0x41, 0x7e, 0x43, 0x7e,
		0x43, 0x7e, 0x43, 0x7e, 0x97, 0x4c, 0x7e, 0x0f, 0x58, 0xc8, 0x4f, 0x76, 0x47, 0x8d, 0x41, 0xd0,
		0x41, 0xd0, 0x41, 0xd0, 0x15, 0x48, 0xd0, 0x85, 0xb6, 0xcb, 0x6a, 0x4d, 0x8e, 0x72, 0xae, 0xc9,
		0xa1, 0x29, 0xbe, 0x7e, 0x44, 0x8e, 0x06, 0x74, 0x11, 0x7e, 0xc3, 0xc4, 0xa9, 0xd4, 0x3c, 0xe1,
		0xec, 0x79, 0x17, 0xed, 0x3a, 0x12, 0xe7, 0x32, 0xe2, 0xe8, 0x18, 0x14, 0xe2, 0x10, 0x9c, 0xae,
		0xd9, 0xd1, 0xd1, 0xe1, 0x11, 0x96, 0x8d, 0x8b, 0x70, 0xe4, 0xd7, 0x4a, 0x2f, 0x57, 0x21, 0x2d,
		0xc0, 0x83, 0x27, 0xc0, 0x73, 0x27, 0x20, 0x4c, 0xe5, 0xf6, 0xd3, 0x99, 0x76, 0x7c, 0x5a, 0x6b,
		0x69, 0x4b, 0x7e, 0x1a, 0xc5, 0x22, 0xad, 0x44, 0x79, 0xdb, 0xe4, 0x06, 0x5b, 0xfd, 0x62, 0x39,
		0x70, 0xe2, 0x79, 0x91, 0xab, 0x77, 0x12, 0x25, 0x0c, 0x2f, 0xcf, 0x97, 0x68, 0x8f, 0x57, 0xba,
		0xed, 0xb5, 0xfd, 0xab, 0x4c, 0xf1, 0x1a, 0x2b, 0xa1, 0xeb, 0x86, 0x83, 0x47, 0x42, 0x33, 0x18,
		0x25, 0xa7, 0xd8, 0x79, 0xda, 0x56, 0xca, 0x05, 0x9d, 0xd8, 0x06, 0x52, 0x3e, 0x9e, 0x95, 0xc7,
		0xf2, 0xe0, 0xaf, 0x73, 0xbc, 0xb5, 0x9f, 0x41, 0x60, 0xf2, 0x12, 0xec, 0xdc, 0x79, 0x2a, 0x77,
		0xa9, 0xbd, 0xc4, 0x4b, 0xfb, 0x15, 0x45, 0x04, 0xd0, 0xb9, 0x4d, 0xb3, 0x6d, 0x16, 0x73, 0xb2,
		0x63, 0x39, 0xd9, 0x94, 0xc6, 0xed, 0xf1, 0x31, 0x2b, 0xd5, 0xca, 0x6e, 0x56, 0xea, 0xc3, 0xac,
		0x24, 0xc2, 0xac, 0xd4, 0x57, 0xdd, 0xac, 0x94, 0xf5, 0x58, 0x4f, 0xa9, 0x0f, 0x27, 0x7f, 0xdf,
		0xd2, 0xee, 0xe5, 0xe3, 0xf7, 0x9b, 0x4e, 0x98, 0xa3, 0xff, 0x2f, 0x69, 0x94, 0x43, 0x20, 0x47,
		0x02, 0x67, 0x71, 0xc5, 0xa7, 0x30, 0x02, 0x4f, 0x26, 0xf1, 0x2c, 0xc9, 0x15, 0x9f, 0x3e, 0xae,
		0xf8, 0x6c, 0xbb, 0x5b, 0xf9, 0x39, 0x1c, 0x97, 0x50, 0x4d, 0xad, 0x50, 0xaf, 0x90, 0x73, 0xf4,
		0x66, 0xd2, 0xee, 0xeb, 0x93, 0xc7, 0x74, 0xcf, 0xd4, 0x4d, 0x6f, 0xe0, 0x53, 0x12, 0x04, 0xc4,
		0xd2, 0x1d, 0x62, 0xf4, 0xa3, 0x4e, 0xde, 0x10, 0x36, 0xab, 0x69, 0x95, 0x8b, 0x97, 0xd8, 0x98,
		0x9c, 0x5d, 0xe1, 0xf1, 0xc7, 0x7d, 0x9e, 0xa9, 0x93, 0x17, 0xd6, 0x62, 0xc4, 0x21, 0x03, 0xc2,
		0xe8, 0xab, 0xee, 0xb9, 0xba, 0xf9, 0x1c, 0x3b, 0x81, 0x84, 0x60, 0xc1, 0x58, 0x53, 0x0b, 0x00,
		0x83, 0x79, 0xe3, 0xc0, 0xde, 0xce, 0x44, 0x56, 0x4f, 0x4d, 0x2f, 0x07, 0x63, 0x0a, 0xa8, 0x60,
		0x74, 0x45, 0x32, 0x27, 0x9d, 0x92, 0x3e, 0x3f, 0x4e, 0x3c, 0xdf, 0x2c, 0xa8, 0x31, 0xa8, 0x31,
		0xa8, 0x71, 0xfe, 0xd4, 0x98, 0x93, 0xe5, 0x4b, 0x8c, 0x05, 0x8c, 0xf3, 0x71, 0x07, 0x61, 0x04,
		0x61, 0x04, 0x61, 0xe4, 0x29, 0x3e, 0x96, 0x31, 0x03, 0xff, 0x6d, 0xb5, 0x84, 0x1f, 0x78, 0x6f,
		0x2b, 0xbe, 0xd6, 0x28, 0x61, 0x42, 0x46, 0xa4, 0xb0, 0x11, 0x2e, 0x74, 0x44, 0x0b, 0x1f, 0x69,
		0x42, 0x48, 0x9a, 0x30, 0x92, 0x21, 0x94, 0xf8, 0x0a, 0x27, 0xce, 0x42, 0x4a, 0x9c, 0x75, 0x6b,
		0x69, 0xb7, 0x3b, 0xc4, 0xe8, 0x67, 0x27, 0x25, 0xbf, 0x44, 0x2e, 0xc7, 0x02, 0xda, 0xee, 0x26,
		0x0c, 0x36, 0xda, 0x16, 0xad, 0x19, 0x66, 0xba, 0xf0, 0xc1, 0xf8, 0xdf, 0xf1, 0xfd, 0xdc, 0x42,
		0x2f, 0xb5, 0x20, 0x2b, 0x9c, 0x3c, 0x6b, 0x1c, 0xff, 0x13, 0xc5, 0x33, 0xe6, 0x74, 0xd6, 0x60,
		0x21, 0x4e, 0x51, 0xcf, 0xf5, 0x02, 0x5d, 0x0d, 0x5d, 0x0d, 0x5d, 0x0d, 0x5d, 0x0d, 0x5d, 0xbd,
		0xa1, 0xae, 0xfe, 0x3a, 0xd5, 0xd5, 0xff, 0x63, 0x86, 0x94, 0x12, 0x97, 0xed, 0xed, 0x1f, 0x7c,
		0xf8, 0x30, 0xb5, 0x42, 0xf7, 0xc6, 0x8f, 0xcc, 0x1b, 0xa3, 0x97, 0x3f, 0x4b, 0x5a, 0xb6, 0xc8,
		0x0b, 0xd4, 0xbe, 0x6a, 0x6a, 0xbf, 0x50, 0xf6, 0x02, 0x6e, 0x4e, 0xba, 0xc9, 0x8f, 0x38, 0xd3,
		0x93, 0x70, 0xa7, 0xdd, 0x1a, 0xad, 0xc2, 0xd1, 0x79, 0xb7, 0x52, 0x9d, 0x14, 0xcd, 0x14, 0xd5,
		0x2b, 0xb8, 0xe3, 0x5d, 0x8a, 0x93, 0x6f, 0xce, 0xa7, 0xc5, 0xc5, 0xe5, 0xc7, 0x6f, 0x91, 0xde,
		0xb8, 0xe4, 0x75, 0x32, 0x18, 0xe1, 0xef, 0x1c, 0x18, 0x35, 0x5b, 0x70, 0xdf, 0x40, 0x1d, 0xbe,
		0x01, 0x75, 0xa0, 0x3e, 0x7c, 0x03, 0xf0, 0x0d, 0xc0, 0xde, 0x00, 0x7b, 0x03, 0xec, 0x0d, 0xb0,
		0x37, 0xc0, 0xde, 0x50, 0x0c, 0xdf, 0x00, 0x4c, 0xe0, 0x50, 0x49, 0x50, 0x49, 0x50, 0x49, 0x50,
		0x49, 0x50, 0x49, 0xe5, 0x33, 0x81, 0x97, 0x94, 0xfd, 0x95, 0xc8, 0x1c, 0x97, 0x21, 0xe9, 0x83,
		0x00, 0x6b, 0x1c, 0x72, 0xd3, 0x67, 0x5a, 0x4d, 0xb9, 0x59, 0xea, 0x3f, 0x27, 0xa3, 0x78, 0x48,
		0xbe, 0x76, 0x4b, 0xfa, 0x2a, 0xde, 0xe6, 0xe0, 0x63, 0xc2, 0xe5, 0x6a, 0xba, 0xe5, 0x7e, 0x7b,
		0xa3, 0x8e, 0xdb, 0x1b, 0xf9, 0x43, 0x4e, 0xdc, 0xde, 0xd8, 0x78, 0x42, 0x48, 0x6c, 0xc0, 0xa3,
		0x51, 0x24, 0x36, 0x28, 0x02, 0x17, 0x87, 0x2f, 0x4a, 0x3a, 0xd7, 0x46, 0x62, 0x83, 0xec, 0xbb,
		0xb5, 0xf8, 0x89, 0x0d, 0x40, 0x39, 0xe4, 0x53, 0x0e, 0x0e, 0x94, 0x11, 0x49, 0x1b, 0xf9, 0xaf,
		0x4b, 0x25, 0x13, 0xff, 0xd9, 0x9e, 0xf4, 0x49, 0xcb, 0x14, 0xf9, 0x4e, 0xe0, 0x4a, 0x67, 0x5d,
		0x61, 0x71, 0x2b, 0x9b, 0x62, 0x39, 0x37, 0x5f, 0xc6, 0xed, 0xd6, 0x6e, 0xf3, 0x15, 0xd8, 0xe2,
		0xed, 0x57, 0x6c, 0x7f, 0xd8, 0xdc, 0xfa, 0x9d, 0x4f, 0x83, 0x19, 0xa2, 0xa7, 0xb7, 0x5c, 0xeb,
		0x74, 0x8c, 0x3a, 0x35, 0xc0, 0xcc, 0x02, 0x24, 0x33, 0x57, 0x94, 0xc8, 0x0a, 0x0c, 0xb9, 0x01,
		0x40, 0x6e, 0x40, 0x8f, 0x47, 0x45, 0x08, 0xb1, 0xb2, 0x24, 0x2d, 0x63, 0xad, 0x18, 0x96, 0x15,
		0x47, 0x5c, 0x07, 0xd9, 0xf3, 0xda, 0x4e, 0x9b, 0x42, 0x5a, 0xdb, 0xcc, 0xe5, 0x58, 0x76, 0x38,
		0xad, 0xad, 0xbf, 0x33, 0x69, 0x6d, 0xc7, 0x27, 0x86, 0x9f, 0xf5, 0x77, 0xd2, 0x20, 0xb2, 0xf7,
		0x08, 0x3f, 0xa0, 0xa2, 0xcc, 0x20, 0xa8, 0x97, 0xa4, 0x21, 0x7b, 0xcf, 0xef, 0x36, 0x2f, 0xb2,
		0xf7, 0x14, 0x4d, 0x0c, 0xc0, 0x2a, 0x9a, 0x87, 0x98, 0x28, 0xa6, 0x55, 0x94, 0x7f, 0x84, 0xbe,
		0x2f, 0x30, 0x34, 0xdf, 0x47, 0x00, 0xa4, 0x9c, 0x00, 0x48, 0x1f, 0x01, 0x90, 0x39, 0x8a, 0x1f,
		0x19, 0x62, 0x88, 0xaf, 0x38, 0xe2, 0x2c, 0x96, 0x92, 0x17, 0x20, 0x3e, 0x00, 0xd2, 0xf6, 0x87,
		0x4d, 0x9d, 0x0f, 0x17, 0xf9, 0x25, 0x60, 0x39, 0x11, 0x13, 0x05, 0xc9, 0x08, 0x75, 0xb9, 0xba,
		0xc2, 0xe7, 0x3a, 0xd8, 0xdb, 0xfb, 0x5a, 0xd5, 0x4f, 0x0d, 0xbd, 0xdf, 0xd6, 0x3f, 0xf5, 0xfe,
		0xa9, 0xbd, 0x6f, 0xbc, 0xb5, 0xf6, 0xff, 0x39, 0x7e, 0x5b, 0xfc, 0xf0, 0xe7, 0xaa, 0xaf, 0xd5,
		0xde, 0x1f, 0xbf, 0xb5, 0xd6, 0xfc, 0xa5, 0xf9, 0xd6, 0xda, 0xb0, 0x8d, 0xa3, 0xb7, 0xbd, 0xa5,
		0xaf, 0x46, 0x9f, 0xd7, 0xd7, 0x3d, 0xd0, 0x58, 0xf3, 0xc0, 0xe1, 0xba, 0x07, 0x0e, 0xd7, 0x3c,
		0xb0, 0x76, 0x48, 0xf5, 0x35, 0x0f, 0x1c, 0xbd, 0xfd, 0x5c, 0xfa, 0xfe, 0xde, 0xea, 0xaf, 0x36,
		0xdf, 0xf6, 0x7f, 0xae, 0xfb, 0xdb, 0xf1, 0xdb, 0xcf, 0xd6, 0xfe, 0x3e, 0xff, 0x83, 0xde, 0x13,
		0xb1, 0x01, 0x6f, 0xee, 0x3a, 0x7f, 0x09, 0xdf, 0x85, 0xff, 0xc5, 0x36, 0xcc, 0x6b, 0x1b, 0xfe,
		0x4b, 0xc0, 0x3e, 0x44, 0xfa, 0x90, 0xdd, 0xcd, 0x1a, 0x36, 0xc2, 0x65, 0xba, 0x43, 0xdc, 0xa7,
		0xd8, 0x15, 0x28, 0x88, 0x28, 0xcc, 0x77, 0x03, 0xce, 0x00, 0xce, 0x00, 0xce, 0xb0, 0x33, 0x9c,
		0xe1, 0xca, 0x70, 0x2d, 0x83, 0x79, 0xf4, 0x95, 0x9f, 0x9d, 0x50, 0x22, 0x1f, 0x09, 0x6d, 0x97,
		0x9d, 0x08, 0x24, 0x22, 0x47, 0x02, 0x9a, 0xe6, 0x5b, 0xcc, 0x7e, 0xf1, 0x47, 0xcc, 0xc9, 0xd7,
		0x44, 0x15, 0xbb, 0x5f, 0xea, 0x64, 0x52, 0x48, 0xbd, 0xfa, 0x5e, 0x6c, 0x3f, 0xa2, 0x8b, 0xaa,
		0x2f, 0x6f, 0x59, 0x51, 0x45, 0xd6, 0x05, 0x4b, 0x88, 0x05, 0x69, 0xf1, 0x22, 0x6f, 0x0b, 0xd4,
		0xea, 0x27, 0xd8, 0x04, 0x85, 0x50, 0x3a, 0xe2, 0x5a, 0x05, 0xbf, 0xd9, 0x61, 0x7e, 0xc3, 0x44,
		0xe0, 0x83, 0x04, 0x1b, 0xc4, 0xad, 0x73, 0xde, 0x10, 0x22, 0xae, 0xd3, 0x24, 0x8d, 0xff, 0x71,
		0x79, 0xf3, 0xb1, 0x7d, 0xf9, 0xf0, 0xf9, 0xba, 0x73, 0xd6, 0xbe, 0xbb, 0xe7, 0x0b, 0x44, 0x7b,
		0xa0, 0x75, 0xa0, 0x75, 0xa0, 0x75, 0x3b, 0x43, 0xeb, 0xe4, 0xba, 0x82, 0x74, 0x01, 0xb2, 0x76,
		0x56, 0xcc, 0xd4, 0x1a, 0x02, 0xda, 0xbe, 0x70, 0xc3, 0x81, 0xb8, 0x33, 0x75, 0xef, 0xdd, 0x31,
		0x6a, 0xbb, 0x4f, 0x42, 0xe1, 0x72, 0xa5, 0x1a, 0xad, 0xc4, 0x82, 0xde, 0x10, 0x08, 0xff, 0x6b,
		0x51, 0x77, 0x97, 0x9d, 0xeb, 0x7f, 0x3f, 0x5c, 0xde, 0x9c, 0x89, 0x52, 0x55, 0x82, 0x79, 0x4c,
		0xe5, 0xde, 0xeb, 0xc4, 0x82, 0x41, 0xe0, 0xb2, 0x2c, 0xac, 0x88, 0x50, 0x5e, 0xb1, 0x6a, 0x3d,
		0x5a, 0x5a, 0x4d, 0x11, 0xfc, 0xff, 0x06, 0xfc, 0x8f, 0xf4, 0xe8, 0x85, 0x5b, 0x20, 0x61, 0x37,
		0xb0, 0x9a, 0x07, 0xc9, 0x5d, 0x8a, 0xc9, 0x6f, 0x25, 0x4c, 0x5e, 0xcd, 0x31, 0xaa, 0x8d, 0x7f,
		0x34, 0xdb, 0xce, 0xa7, 0x0a, 0x40, 0x50, 0x2c, 0x82, 0x62, 0x35, 0x25, 0x52, 0x05, 0xf0, 0x4f,
		0xb7, 0x27, 0x22, 0xcd, 0x5e, 0x92, 0x5e, 0xef, 0xc3, 0x87, 0xb1, 0x2c, 0x3f, 0xe0, 0xb5, 0xd8,
		0xa8, 0x45, 0xb0, 0xed, 0xba, 0xee, 0x6a, 0x2d, 0x02, 0x08, 0x75, 0x08, 0x75, 0x0d, 0x37, 0x1d,
		0x38, 0xab, 0x09, 0x98, 0xb7, 0x61, 0xde, 0x2e, 0x90, 0xf8, 0x91, 0x21, 0x86, 0xd4, 0x30, 0xcc,
		0xe0, 0xa6, 0xc3, 0x6f, 0x00, 0x29, 0x6e, 0x3a, 0xe0, 0xa6, 0xc3, 0x66, 0x3f, 0xb8, 0xe9, 0x80,
		0x6d, 0x58, 0xc2, 0x9b, 0x0e, 0x85, 0x0c, 0x78, 0xf1, 0xa8, 0xfd, 0x24, 0x20, 0x88, 0x72, 0x0a,
		0xd1, 0x46, 0xed, 0x03, 0x0c, 0x03, 0x0c, 0x03, 0x0c, 0x03, 0x0c, 0x73, 0x04, 0xc3, 0x49, 0xa4,
		0x87, 0x10, 0x11, 0xa3, 0x21, 0xd6, 0xe3, 0xf7, 0xbd, 0xc4, 0xb1, 0x1e, 0x37, 0xf7, 0x7f, 0x5e,
		0xdc, 0x0a, 0x0f, 0xf1, 0xb8, 0xbb, 0x6f, 0xdf, 0x77, 0xce, 0x44, 0x76, 0x53, 0x8f, 0xba, 0x39,
		0xff, 0xf3, 0xac, 0x2b, 0xb2, 0x93, 0xc3, 0x69, 0xb8, 0x4a, 0xfb, 0x6f, 0xb1, 0xaf, 0xad, 0x11,
		0x75, 0x75, 0xdb, 0xbe, 0x3e, 0xbf, 0xb9, 0x42, 0x34, 0xcc, 0xa2, 0x2d, 0x31, 0x5a, 0x66, 0x6e,
		0xa6, 0xf4, 0x95, 0x5d, 0xcc, 0x2c, 0x72, 0x4b, 0x3b, 0x14, 0xd8, 0xd1, 0xe8, 0xfc, 0x89, 0x0d,
		0xe8, 0x19, 0x6f, 0xa3, 0x96, 0xd6, 0x10, 0xd8, 0xc9, 0xf8, 0x88, 0xef, 0x6c, 0xa4, 0x10, 0x2e,
		0xfc, 0xe2, 0xc2, 0x2f, 0xd8, 0x02, 0xd8, 0x02, 0x2e, 0xfc, 0x2a, 0xc5, 0x44, 0x70, 0xe1, 0x77,
		0xf1, 0x07, 0x17, 0x7e, 0x37, 0xeb, 0x07, 0x17, 0x7e, 0xd3, 0x49, 0x0b, 0x5c, 0xf8, 0x55, 0x63,
		0x13, 0xec, 0xe6, 0x85, 0xdf, 0x62, 0x96, 0x3a, 0x67, 0x06, 0x0b, 0x03, 0x81, 0x45, 0xce, 0x47,
		0xed, 0x03, 0xb8, 0x03, 0xb8, 0x03, 0xb8, 0xef, 0x0c, 0x70, 0x17, 0x0f, 0xae, 0x89, 0x1b, 0x0e,
		0x08, 0x1d, 0x5d, 0xa7, 0x81, 0x81, 0x7f, 0xf6, 0xd5, 0xcb, 0x33, 0xf0, 0x77, 0x6f, 0x2f, 0x3e,
		0x5d, 0xdc, 0xde, 0x5e, 0x9c, 0x0b, 0x37, 0xf2, 0x9f, 0x5f, 0x74, 0x6f, 0x2f, 0xce, 0xda, 0xf7,
		0x62, 0xbb, 0x8a, 0x0d, 0xfd, 0x9d, 0xeb, 0x2f, 0xed, 0xcb, 0xce, 0xb9, 0x70, 0x5b, 0x7f, 0xe7,
		0xba, 0x7d, 0x76, 0x76, 0x71, 0x77, 0xd7, 0xf9, 0x78, 0x79, 0x21, 0xdc, 0xda, 0xff, 0xf9, 0xfa,
		0xdf, 0xd7, 0x37, 0xff, 0xb9, 0x16, 0xd9, 0xcf, 0x51, 0xd4, 0xcf, 0xfd, 0xc5, 0xf5, 0x7d, 0xfb,
		0xbe, 0xf3, 0x45, 0xe8, 0x8c, 0x9a, 0xf1, 0x8e, 0xf8, 0xdc, 0xbd, 0xec, 0x44, 0x3b, 0x42, 0x64,
		0x4f, 0xc7, 0xb1, 0x1b, 0xab, 0x7b, 0xdf, 0xb9, 0xea, 0xdc, 0xdd, 0x77, 0xce, 0xe0, 0x2d, 0x59,
		0xe8, 0x62, 0xe6, 0x58, 0x72, 0x37, 0xd0, 0xcc, 0x77, 0x94, 0xac, 0x76, 0x4b, 0x6b, 0x0a, 0xec,
		0x67, 0xee, 0x50, 0x8a, 0xf5, 0xce, 0x4c, 0xe4, 0x8c, 0x58, 0x67, 0xd3, 0xcc, 0xe6, 0x6d, 0x69,
		0xc7, 0x02, 0x3b, 0x9a, 0xea, 0x02, 0xb1, 0x0e, 0xa7, 0xa9, 0x84, 0x11, 0x62, 0x00, 0x4b, 0xfa,
		0x99, 0x48, 0xcc, 0x96, 0xd6, 0xc0, 0xf5, 0x74, 0x0e, 0xef, 0x93, 0xbc, 0x30, 0x6a, 0xe8, 0xa1,
		0x1b, 0x30, 0xe3, 0xd1, 0x11, 0x84, 0x0d, 0x29, 0xe9, 0x13, 0x4a, 0x5c, 0x53, 0x49, 0x03, 0xe6,
		0x04, 0xd8, 0xde, 0x7e, 0x3a, 0xd3, 0x1a, 0xf5, 0xd3, 0xc3, 0x96, 0x76, 0x65, 0xb8, 0xc6, 0x13,
		0x89, 0x78, 0x84, 0xd6, 0x71, 0xfb, 0x1e, 0x1d, 0xc4, 0x68, 0x57, 0xfb, 0x68, 0x04, 0x44, 0xeb,
		0x7b, 0x54, 0x63, 0xcf, 0xe4, 0x9b, 0x3b, 0xd3, 0x44, 0x5c, 0xef, 0xd2, 0x25, 0x4c, 0xeb, 0x52,
		0x8f, 0x79, 0xa6, 0xe7, 0x68, 0x7b, 0x9d, 0xee, 0xfe, 0xdc, 0x57, 0x74, 0xad, 0xe3, 0xb7, 0x47,
		0xd1, 0x31, 0x77, 0x31, 0x31, 0xbf, 0x3f, 0xfb, 0xe6, 0x6a, 0x71, 0x97, 0x27, 0xcd, 0x7a, 0x4b,
		0xeb, 0x74, 0x87, 0x4d, 0x2d, 0xfa, 0x0b, 0x71, 0x48, 0x10, 0x68, 0xe3, 0xaf, 0x6a, 0xed, 0x30,
		0x6a, 0x2f, 0xe2, 0xc6, 0xa1, 0x30, 0xc8, 0x2d, 0x8b, 0x6e, 0xae, 0xa2, 0x9d, 0xd3, 0x8d, 0x23,
		0xd8, 0xc4, 0x26, 0x8b, 0x81, 0xae, 0x64, 0xa2, 0x6a, 0xec, 0x2c, 0x58, 0x1d, 0x91, 0x4d, 0x2f,
		0xa3, 0x08, 0x45, 0x36, 0xbd, 0xd9, 0xed, 0x04, 0xd3, 0x2b, 0x4c, 0xaf, 0x1b, 0xe8, 0x40, 0x98,
		0x5e, 0xcb, 0x01, 0xb4, 0x91, 0x4d, 0xef, 0xb7, 0x6d, 0x23, 0x9b, 0xde, 0xd6, 0xdd, 0x21, 0x9b,
		0x5e, 0x2a, 0x4d, 0x8e, 0x6c, 0x7a, 0xb2, 0xa4, 0x28, 0x92, 0xc6, 0x6d, 0xd5, 0xae, 0xcc, 0xa4,
		0x71, 0xa3, 0xe4, 0x39, 0x25, 0x4a, 0x32, 0x34, 0xa4, 0x54, 0x40, 0xd6, 0xb8, 0xb8, 0x55, 0x14,
		0x53, 0x2e, 0x1c, 0x18, 0x47, 0x8a, 0xa1, 0x3c, 0xc0, 0x76, 0xc9, 0x53, 0x0c, 0x45, 0x87, 0x5d,
		0x7f, 0xa2, 0x5e, 0x28, 0x30, 0xd5, 0xd0, 0x4c, 0x1f, 0x62, 0x6c, 0x00, 0x35, 0xd8, 0x00, 0x60,
		0x03, 0x80, 0x0d, 0xa0, 0x78, 0x36, 0x00, 0xde, 0xe2, 0x2a, 0x69, 0xd8, 0x9c, 0x9c, 0x50, 0x41,
		0x7b, 0x71, 0x72, 0x98, 0xc6, 0xfd, 0x08, 0xda, 0x1f, 0x62, 0xc4, 0x97, 0x70, 0x31, 0x26, 0x43,
		0x9c, 0x49, 0x13, 0x6b, 0xb2, 0xc4, 0x9b, 0x74, 0x31, 0x27, 0x5d, 0xdc, 0xc9, 0x14, 0x7b, 0xe2,
		0xcc, 0x01, 0x22, 0xed, 0x3e, 0xa2, 0xc4, 0x61, 0xd2, 0x81, 0x61, 0x9a, 0xc4, 0x67, 0xfa, 0xc0,
		0xb3, 0x24, 0x6c, 0xe4, 0xc9, 0xc9, 0x9c, 0xed, 0x54, 0xf0, 0xce, 0x12, 0xe9, 0xfc, 0x5a, 0xea,
		0x2c, 0xbe, 0x7b, 0x52, 0x11, 0xda, 0x4f, 0x4f, 0xf0, 0xfb, 0x12, 0xe3, 0x23, 0x93, 0xae, 0x68,
		0x64, 0x2a, 0x1c, 0xe9, 0x8a, 0x47, 0xb6, 0x02, 0xca, 0x4d, 0x11, 0xe5, 0xa6, 0x90, 0xf2, 0x50,
		0x4c, 0x62, 0x15, 0x94, 0x60, 0x45, 0x95, 0xbc, 0x30, 0x61, 0x3e, 0xbc, 0xb5, 0xa7, 0xed, 0xd1,
		0xf3, 0x1c, 0x62, 0xb8, 0x32, 0xce, 0xdb, 0x04, 0x7d, 0xd7, 0x94, 0x5e, 0x22, 0xc1, 0xe5, 0x76,
		0x96, 0xfa, 0x93, 0x56, 0x7e, 0x47, 0xde, 0x49, 0x12, 0x79, 0x17, 0xd8, 0xb0, 0x86, 0x84, 0x32,
		0x3b, 0x88, 0x83, 0xdc, 0x46, 0x3e, 0x8d, 0xa1, 0xe1, 0x48, 0x04, 0x67, 0xab, 0xfb, 0x2f, 0x13,
		0x4e, 0xab, 0x55, 0xab, 0x40, 0x69, 0x40, 0x69, 0x40, 0x69, 0x40, 0x69, 0x40, 0x69, 0x72, 0x4e,
		0x5b, 0x68, 0xbb, 0xac, 0xd6, 0x94, 0x08, 0xd2, 0x9a, 0x12, 0xba, 0x12, 0x9b, 0x72, 0x66, 0xf1,
		0x47, 0x8e, 0xf8, 0xd0, 0x64, 0xa5, 0xa4, 0x59, 0xea, 0x34, 0xc9, 0x4f, 0xf2, 0x5e, 0x6e, 0xbf,
		0xb2, 0xb3, 0x95, 0x2c, 0x9f, 0x11, 0x59, 0xd9, 0x4b, 0x24, 0x8b, 0x99, 0xf9, 0x2d, 0x65, 0xbc,
		0xe4, 0xb7, 0xa5, 0x1a, 0xd5, 0xd3, 0x23, 0xec, 0x2a, 0x59, 0xbb, 0xea, 0x5d, 0x39, 0x7a, 0xe9,
		0x81, 0xe5, 0x83, 0xe5, 0x8b, 0x7a, 0x5d, 0x3e, 0x25, 0x64, 0xe0, 0x33, 0x79, 0xb4, 0x7e, 0xd2,
		0x61, 0x99, 0x78, 0x7c, 0x44, 0x31, 0x40, 0xe4, 0x41, 0xe4, 0x41, 0xe4, 0x41, 0xe4, 0x41, 0xe4,
		0xe5, 0x9c, 0x36, 0xb8, 0x5b, 0x00, 0xc4, 0x4a, 0x08, 0xc4, 0x74, 0x8b, 0x38, 0xc6, 0xab, 0x74,
		0x38, 0x36, 0xee, 0xb6, 0x4c, 0xa0, 0x0c, 0xae, 0x15, 0x20, 0x32, 0x20, 0x32, 0x20, 0x32, 0x20,
		0x32, 0x49, 0xa7, 0x0d, 0xae, 0x95, 0xcc, 0x3f, 0xbb, 0xe2, 0x5a, 0xa9, 0xc2, 0x08, 0x2e, 0xe9,
		0x67, 0x67, 0x5c, 0x2b, 0x87, 0xcd, 0x2a, 0x76, 0x95, 0xb4, 0x5d, 0x05, 0xd7, 0x0a, 0x18, 0x3d,
		0x18, 0xfd, 0xef, 0x18, 0xbd, 0xed, 0x51, 0x9b, 0x49, 0x25, 0xf3, 0xe3, 0x1e, 0x11, 0x24, 0x09,
		0x26, 0x0f, 0x26, 0x0f, 0x26, 0x0f, 0x26, 0x0f, 0x26, 0x9f, 0x92, 0xc9, 0x9f, 0x48, 0x24, 0xf2,
		0x47, 0x20, 0xf2, 0x8a, 0x12, 0x79, 0xc4, 0x48, 0x82, 0xc8, 0x73, 0xde, 0x52, 0xf5, 0xa3, 0x06,
		0x36, 0x15, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x7c, 0x31, 0x78, 0xfc, 0xd0, 0xa6, 0x2c, 0x34, 0x9c,
		0x49, 0xbe, 0x5e, 0x79, 0x74, 0x7e, 0xb1, 0x63, 0xf0, 0x54, 0xf0, 0x54, 0xf0, 0x54, 0xf0, 0x54,
		0xf0, 0xd4, 0x24, 0x8d, 0xba, 0x24, 0xd9, 0x38, 0x2b, 0x1f, 0x6b, 0xa7, 0x12, 0xfa, 0x1a, 0xbf,
		0xcb, 0xd2, 0x91, 0xd5, 0x99, 0x04, 0xf8, 0x0d, 0x89, 0x6b, 0xb7, 0xb4, 0x86, 0x27, 0x12, 0xfb,
		0xec, 0x1a, 0x8c, 0x11, 0xea, 0x4a, 0x5b, 0xce, 0xa4, 0xe3, 0xbd, 0xaf, 0x55, 0xfd, 0xb4, 0xf7,
		0xf3, 0x6b, 0x4d, 0x3f, 0xed, 0x8d, 0x7e, 0xad, 0xc5, 0xff, 0xfb, 0xa7, 0xfe, 0xf6, 0xb3, 0xfe,
		0xb5, 0xaa, 0x37, 0xc6, 0x9f, 0xd6, 0x8f, 0xbe, 0x56, 0xf5, 0xa3, 0xde, 0xfe, 0xde, 0xb7, 0x6f,
		0x1f, 0xb6, 0x7d, 0x66, 0xff, 0x9f, 0xc3, 0xb7, 0x8a, 0xb4, 0x69, 0xf5, 0x64, 0x2e, 0xdb, 0xcd,
		0x5d, 0xe7, 0xaf, 0xdc, 0xd6, 0xee, 0xbf, 0x7b, 0xb2, 0x56, 0x6f, 0xff, 0x5f, 0x12, 0xd7, 0xef,
		0x5d, 0x89, 0x4c, 0x25, 0xf9, 0x88, 0xcd, 0x26, 0xc4, 0xa6, 0x68, 0xb1, 0x19, 0x9f, 0x22, 0x43,
		0xef, 0xb7, 0xf5, 0x4f, 0xbd, 0x7f, 0x6a, 0xef, 0x1b, 0x6f, 0xad, 0xfd, 0x7f, 0x8e, 0xdf, 0x16,
		0x3f, 0xfc, 0xb9, 0xea, 0x6b, 0xb5, 0xf7, 0xc7, 0x6f, 0xad, 0x35, 0x7f, 0x69, 0xbe, 0xb5, 0x36,
		0x6c, 0xe3, 0xe8, 0x6d, 0x6f, 0xe9, 0xab, 0xd1, 0xe7, 0xf5, 0x75, 0x0f, 0x34, 0xd6, 0x3c, 0x70,
		0xb8, 0xee, 0x81, 0xc3, 0x35, 0x0f, 0xac, 0x1d, 0x52, 0x7d, 0xcd, 0x03, 0x47, 0x6f, 0x3f, 0x97,
		0xbe, 0xbf, 0xb7, 0xfa, 0xab, 0xcd, 0xb7, 0xfd, 0x9f, 0xeb, 0xfe, 0x76, 0xfc, 0xf6, 0xb3, 0xb5,
		0xbf, 0x0f, 0x45, 0x22, 0x4c, 0x91, 0x60, 0x3b, 0xcb, 0xdf, 0xce, 0xe5, 0x53, 0xac, 0x30, 0xe4,
		0xfe, 0xf2, 0xac, 0x5d, 0xda, 0x01, 0x6b, 0x33, 0x46, 0xe5, 0xb0, 0xe0, 0x2b, 0xdb, 0xbd, 0x70,
		0xe2, 0xec, 0x68, 0x92, 0x7c, 0x16, 0x95, 0x2b, 0xe3, 0x65, 0xa6, 0xc7, 0xda, 0x49, 0xa3, 0xd1,
		0x3c, 0x6e, 0x34, 0xaa, 0xc7, 0x87, 0xc7, 0xd5, 0xd3, 0xa3, 0xa3, 0x5a, 0xb3, 0x26, 0xc3, 0x91,
		0x7b, 0x43, 0x2d, 0x42, 0x89, 0xf5, 0xf1, 0xb5, 0xd2, 0xd2, 0xdc, 0xd0, 0x71, 0x64, 0x76, 0xf9,
		0x39, 0x20, 0x54, 0x8a, 0x93, 0x06, 0x2e, 0x87, 0xc2, 0x8b, 0x2c, 0x19, 0x2e, 0x07, 0xc7, 0x76,
		0xbf, 0xeb, 0x8e, 0x67, 0xca, 0xcc, 0xbb, 0xb8, 0xa2, 0x6f, 0x38, 0x1e, 0xb6, 0x03, 0x7c, 0x70,
		0x3c, 0x70, 0xdc, 0x1c, 0x70, 0x3c, 0xc0, 0xf1, 0xf0, 0xeb, 0x17, 0x06, 0xc7, 0x03, 0xf7, 0x77,
		0x09, 0xc7, 0x03, 0x2c, 0x68, 0x19, 0x2c, 0x68, 0x70, 0x3c, 0xa8, 0x6e, 0x2f, 0x82, 0xe3, 0xa1,
		0x78, 0x8a, 0x2e, 0x5f, 0xb1, 0x09, 0xc7, 0x83, 0x70, 0xb1, 0x09, 0x4b, 0x2d, 0x1c, 0x0f, 0x65,
		0x53, 0x24, 0xd8, 0xce, 0x70, 0x3c, 0x14, 0x9c, 0x9f, 0x6a, 0x88, 0x20, 0x87, 0x39, 0x57, 0x86,
		0x39, 0x97, 0x7a, 0x21, 0x23, 0x54, 0xb7, 0x2d, 0xf9, 0xd6, 0xdc, 0x69, 0xd7, 0x30, 0xe6, 0xc2,
		0x98, 0x0b, 0x63, 0x2e, 0x8c, 0xb9, 0x30, 0xe6, 0xe2, 0xb6, 0xb3, 0x7a, 0x06, 0x09, 0xdc, 0x76,
		0x96, 0x39, 0x00, 0xdc, 0x76, 0x16, 0xbd, 0xa5, 0xea, 0x47, 0x28, 0x08, 0x23, 0x6d, 0x53, 0x81,
		0xab, 0x82, 0xab, 0x96, 0x82, 0xab, 0xbe, 0x53, 0x68, 0xe1, 0x2b, 0xed, 0xf0, 0x29, 0x42, 0xc0,
		0xc4, 0x12, 0x8a, 0x47, 0x24, 0xf1, 0xe9, 0x83, 0x08, 0xc4, 0xf7, 0x5b, 0x71, 0x39, 0xda, 0xbe,
		0x61, 0x92, 0x60, 0xf1, 0x83, 0xf1, 0xbf, 0x83, 0xf0, 0x71, 0xe9, 0x3b, 0xb3, 0x9f, 0xc5, 0x1f,
		0xf9, 0x2d, 0xdb, 0x1f, 0x36, 0xc7, 0xbf, 0x8e, 0xbd, 0x2b, 0xe3, 0x6f, 0x27, 0xff, 0x3e, 0x18,
		0x52, 0xea, 0xc7, 0xff, 0xd1, 0x9f, 0xa8, 0x17, 0xfa, 0x07, 0xe6, 0x88, 0xf9, 0x0a, 0x4f, 0xf1,
		0x16, 0x98, 0xd4, 0xf6, 0xc7, 0xc7, 0xb4, 0xd2, 0xb6, 0x2c, 0x3b, 0xfa, 0xdd, 0x70, 0xb4, 0x2f,
		0xb7, 0xb7, 0x5d, 0xcd, 0x32, 0x98, 0xa1, 0xf5, 0x3d, 0xaa, 0x75, 0xba, 0xc3, 0xa6, 0x36, 0x9d,
		0xa9, 0x24, 0xeb, 0x42, 0x0d, 0xd6, 0x05, 0x58, 0x17, 0x60, 0x5d, 0x80, 0x75, 0x61, 0x6b, 0xb1,
		0x66, 0x4b, 0x0a, 0xce, 0xcf, 0x21, 0x82, 0x77, 0xe9, 0xa0, 0x4b, 0x8f, 0xe4, 0x5d, 0xa7, 0x3d,
		0x3e, 0x79, 0x74, 0xa4, 0x36, 0x3c, 0x77, 0x51, 0x61, 0xbc, 0xd7, 0x02, 0xc2, 0x02, 0x8d, 0x3d,
		0x13, 0x6d, 0x3c, 0x5c, 0x2d, 0x1a, 0xae, 0x16, 0x0f, 0xf7, 0x9b, 0x2b, 0x37, 0xe4, 0x40, 0x92,
		0xf1, 0x5a, 0xba, 0x9a, 0xc9, 0x43, 0xdd, 0xe4, 0xa6, 0x76, 0xf2, 0x52, 0x3f, 0xb9, 0xab, 0xa1,
		0xdc, 0xd5, 0x51, 0x9e, 0x6a, 0x49, 0x32, 0xc7, 0x97, 0x74, 0x5e, 0xa5, 0x19, 0xc3, 0x97, 0x4e,
		0xab, 0xd4, 0x08, 0xe7, 0x25, 0x78, 0x7f, 0x2a, 0xb1, 0x4f, 0xa9, 0x11, 0xcf, 0x72, 0xd8, 0xea,
		0x6f, 0x56, 0x36, 0x97, 0x08, 0xe8, 0xa5, 0x35, 0x3e, 0xc9, 0xa1, 0xef, 0xbc, 0x82, 0xa1, 0x92,
		0x01, 0x94, 0x2f, 0x32, 0x7a, 0xf2, 0xd3, 0xcb, 0x63, 0x39, 0xf3, 0x0c, 0x70, 0x4b, 0x46, 0x51,
		0xce, 0x88, 0xe9, 0x64, 0x5d, 0xa5, 0xf6, 0xf8, 0xf6, 0x7e, 0x87, 0xc4, 0x70, 0x13, 0x62, 0x38,
		0x2f, 0x31, 0x8c, 0xd0, 0xd4, 0xd2, 0x47, 0x5a, 0x43, 0x31, 0x21, 0x02, 0x7b, 0x17, 0x22, 0xb0,
		0x73, 0x52, 0xd4, 0x88, 0x30, 0x2f, 0x54, 0x0f, 0xaa, 0x39, 0x9b, 0x7b, 0xa2, 0x9c, 0xcd, 0x72,
		0xa2, 0x0b, 0x2a, 0x81, 0xf9, 0x4c, 0x06, 0x86, 0x6f, 0xb0, 0xe7, 0x91, 0x57, 0xd8, 0x27, 0xee,
		0xc8, 0x31, 0xab, 0xcf, 0xb8, 0x7d, 0x57, 0xfd, 0x7a, 0x30, 0xef, 0x19, 0x9e, 0xf3, 0x09, 0xc7,
		0xde, 0xe0, 0xa9, 0x1f, 0xf8, 0x37, 0x1e, 0xe0, 0x77, 0x6a, 0xac, 0xb6, 0x00, 0x48, 0x5f, 0x49,
		0x5e, 0x99, 0xce, 0xa8, 0x61, 0x7e, 0xb7, 0xdd, 0x27, 0x61, 0xab, 0x3d, 0x05, 0xec, 0xcb, 0x7d,
		0x0a, 0xda, 0xc3, 0x62, 0x9d, 0xdc, 0xc2, 0xbd, 0x0e, 0x32, 0xbc, 0x0c, 0xd2, 0xbc, 0x0a, 0xb2,
		0xbc, 0x08, 0xd2, 0xbd, 0x06, 0xd2, 0xbd, 0x04, 0x32, 0xbd, 0x02, 0x6a, 0x05, 0x48, 0x89, 0x76,
		0x4a, 0x57, 0xcc, 0xc9, 0x89, 0x97, 0x14, 0x24, 0x25, 0x27, 0x44, 0x09, 0xb1, 0x40, 0xc5, 0x17,
		0x9f, 0xb2, 0xc5, 0x68, 0x6e, 0xe2, 0x34, 0x37, 0xb1, 0x9a, 0x87, 0x78, 0x95, 0x44, 0x69, 0xca,
		0x12, 0x0b, 0x34, 0x29, 0xcb, 0xab, 0x5b, 0xc4, 0xa4, 0x64, 0xbc, 0x46, 0x92, 0x63, 0x81, 0x56,
		0x8c, 0x41, 0x5a, 0x2c, 0x90, 0xbc, 0x62, 0xc1, 0x49, 0xa7, 0x55, 0x39, 0xf6, 0x97, 0x1e, 0xe2,
		0x92, 0x54, 0x53, 0x7d, 0xb9, 0xa9, 0xc0, 0xbc, 0x54, 0x61, 0xee, 0x2a, 0x31, 0x77, 0xd5, 0x98,
		0xa7, 0x8a, 0x94, 0xa3, 0x2a, 0x25, 0xa9, 0xcc, 0xe4, 0x45, 0xe6, 0x17, 0x97, 0x24, 0xeb, 0xb2,
		0xee, 0xa2, 0xe8, 0x95, 0x78, 0x4b, 0x4f, 0xf2, 0xe5, 0xdd, 0xc9, 0x4f, 0x0e, 0xbe, 0xf0, 0x3c,
		0x2e, 0xf3, 0x26, 0x9d, 0x4f, 0x6e, 0x60, 0x56, 0xdf, 0xe7, 0xd3, 0x7f, 0xde, 0xf7, 0x30, 0xa7,
		0x47, 0x2b, 0xaf, 0xfb, 0x98, 0x92, 0xa5, 0xd6, 0xfc, 0xd6, 0xcb, 0xe1, 0xd2, 0xef, 0xd2, 0xd6,
		0x93, 0x5e, 0xea, 0x18, 0x9b, 0x2f, 0x27, 0xc5, 0x2c, 0xbf, 0xb7, 0x52, 0x65, 0xbc, 0x94, 0x7d,
		0x69, 0x38, 0xe9, 0x37, 0xb7, 0xcb, 0xc3, 0xf2, 0x36, 0x8c, 0x84, 0x25, 0xac, 0xc4, 0x1e, 0xb3,
		0xa9, 0x67, 0x54, 0xbe, 0xf9, 0x63, 0x71, 0x00, 0xe0, 0xed, 0xe0, 0xed, 0xe0, 0xed, 0xe0, 0xed,
		0xe0, 0xed, 0x92, 0x4e, 0x6b, 0xa4, 0x35, 0x29, 0xe9, 0xe7, 0x71, 0x99, 0xe8, 0x58, 0x6e, 0xee,
		0xe8, 0xe7, 0x6d, 0xd2, 0x44, 0xb8, 0xd1, 0xeb, 0x29, 0xd5, 0x16, 0x93, 0x5a, 0x03, 0x6d, 0xd6,
		0x92, 0x20, 0xb7, 0x16, 0xda, 0x2c, 0x91, 0xcc, 0xbd, 0x26, 0x5a, 0x32, 0x18, 0xf9, 0xb5, 0xd1,
		0x96, 0xbb, 0x96, 0x56, 0x23, 0x0d, 0x1c, 0xa4, 0x3c, 0x1c, 0x04, 0x19, 0xad, 0xb6, 0xe8, 0x2f,
		0xcf, 0xd8, 0xd3, 0xe5, 0x28, 0x48, 0xa1, 0xe1, 0xa8, 0xe2, 0x37, 0x88, 0xc8, 0xbc, 0xcf, 0x01,
		0x33, 0x18, 0x91, 0x17, 0x76, 0x35, 0xea, 0xae, 0x64, 0x51, 0x57, 0x75, 0x44, 0x5d, 0x29, 0x43,
		0x59, 0x11, 0x75, 0x85, 0xa8, 0xab, 0xdf, 0xbd, 0x30, 0x44, 0x5d, 0x49, 0x19, 0x01, 0xa2, 0xae,
		0xb8, 0xa9, 0x3a, 0x58, 0x6f, 0x15, 0x56, 0x81, 0x79, 0xa9, 0xc2, 0xdc, 0x55, 0x62, 0xee, 0xaa,
		0x31, 0x4f, 0x15, 0x29, 0x8f, 0xb9, 0x6a, 0x88, 0xba, 0x12, 0x28, 0x7a, 0x11, 0x75, 0x25, 0x60,
		0xa2, 0x88, 0xba, 0x42, 0xe0, 0x0b, 0xa2, 0xae, 0xb0, 0xf9, 0x10, 0x75, 0x25, 0x80, 0x9a, 0x20,
		0x28, 0x68, 0xe3, 0x4d, 0x88, 0xa0, 0x20, 0xd0, 0x4a, 0xd0, 0x4a, 0xd0, 0x4a, 0xd0, 0xca, 0x5d,
		0xa5, 0x95, 0x08, 0x0a, 0x42, 0x50, 0x90, 0x58, 0xa2, 0x8b, 0xa0, 0xa0, 0x5d, 0x0d, 0x0a, 0x82,
		0x1b, 0xee, 0xd7, 0xda, 0x73, 0xb7, 0x63, 0x56, 0x46, 0xa1, 0x12, 0xc8, 0xc8, 0x27, 0x7e, 0xc7,
		0xed, 0x44, 0x46, 0x3e, 0x69, 0xb9, 0xe1, 0x46, 0x33, 0x65, 0x34, 0x34, 0x99, 0x3b, 0x06, 0x51,
		0x9d, 0x49, 0xdf, 0x0f, 0x77, 0x33, 0x23, 0x7f, 0xe8, 0xf8, 0xc3, 0xe6, 0x43, 0x7b, 0x34, 0xde,
		0x87, 0x2f, 0x94, 0xfa, 0x7f, 0x44, 0x23, 0x7d, 0x48, 0xbe, 0x7d, 0x3f, 0x19, 0xe8, 0x0e, 0xa7,
		0x11, 0x14, 0x1b, 0x9f, 0x25, 0x25, 0x2e, 0x4b, 0x5a, 0xb2, 0xc0, 0x3a, 0x92, 0x05, 0x16, 0xc6,
		0x1a, 0x80, 0x64, 0x81, 0xbb, 0xab, 0x4e, 0x85, 0x27, 0x0b, 0x34, 0x4c, 0x93, 0xf8, 0x4c, 0x1f,
		0x78, 0x96, 0xc4, 0xd0, 0xd5, 0xd9, 0x4e, 0x85, 0x57, 0x36, 0x95, 0x17, 0x19, 0x55, 0x89, 0x09,
		0x8f, 0x58, 0x9c, 0xd9, 0x93, 0x13, 0xf0, 0x5b, 0x45, 0x9a, 0xc5, 0xe2, 0x2a, 0x1e, 0xd9, 0x0a,
		0x28, 0x37, 0x45, 0x94, 0x9b, 0x42, 0xca, 0x43, 0x31, 0x95, 0xc3, 0xd2, 0x20, 0xcd, 0xbc, 0x9c,
		0x9c, 0xb6, 0x47, 0xcf, 0x73, 0x88, 0xe1, 0xca, 0x38, 0x6f, 0x13, 0xf4, 0x5d, 0xc3, 0xed, 0x97,
		0x65, 0x20, 0x61, 0x0d, 0x09, 0x65, 0x76, 0x10, 0xdb, 0x41, 0x47, 0x24, 0x7c, 0x28, 0xa1, 0x0c,
		0xee, 0x14, 0x53, 0xac, 0xee, 0xbf, 0x4c, 0xf0, 0xa2, 0x56, 0xad, 0x02, 0x5c, 0x00, 0x5c, 0x00,
		0x5c, 0x00, 0x5c, 0x00, 0x5c, 0xc8, 0x39, 0x6d, 0xa1, 0xed, 0xb2, 0x5a, 0x53, 0x22, 0xb6, 0x68,
		0x4a, 0xe8, 0x4a, 0x6e, 0xec, 0xb3, 0x5c, 0x17, 0xb0, 0xfc, 0xd8, 0x9c, 0x49, 0xa0, 0x69, 0x4d,
		0x72, 0x44, 0x4c, 0xde, 0xe1, 0xa5, 0xf9, 0x85, 0x95, 0xbe, 0xc9, 0xf5, 0xed, 0xe7, 0xb7, 0xa5,
		0x1a, 0xd5, 0xd3, 0x23, 0xec, 0x2a, 0x59, 0xbb, 0xaa, 0x24, 0x91, 0x0a, 0x3d, 0x90, 0xd3, 0xa5,
		0x4d, 0x65, 0x86, 0x94, 0x46, 0xb4, 0x70, 0x72, 0x43, 0x57, 0x62, 0x71, 0x9c, 0xc5, 0x9e, 0x41,
		0xb1, 0x40, 0xb1, 0x40, 0xb1, 0x40, 0xb1, 0x40, 0xb1, 0x24, 0xdf, 0x36, 0x95, 0x78, 0xcb, 0x14,
		0x0c, 0x4b, 0x08, 0x1c, 0xae, 0x02, 0x0b, 0x83, 0x61, 0xf1, 0xdd, 0x52, 0xf5, 0x23, 0x10, 0x2c,
		0x10, 0x2c, 0x10, 0xac, 0xac, 0x9b, 0xca, 0xa7, 0x84, 0x0c, 0x7c, 0x26, 0x8f, 0x57, 0x4d, 0x3a,
		0x2c, 0x93, 0x7f, 0x2f, 0xc2, 0xc5, 0x70, 0xf0, 0x81, 0x7d, 0x82, 0x7d, 0x82, 0x7d, 0x82, 0x7d,
		0xca, 0x39, 0x6d, 0x88, 0x1e, 0x2a, 0x12, 0x7e, 0xd0, 0x2d, 0xe2, 0x18, 0xaf, 0xd2, 0x51, 0xc4,
		0xb8, 0xdb, 0x32, 0x61, 0x09, 0x44, 0x0a, 0x01, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x48,
		0x3a, 0x6d, 0x88, 0x14, 0xca, 0xfc, 0x03, 0x3b, 0xb6, 0x98, 0x7e, 0x61, 0xc7, 0x96, 0xb2, 0xa5,
		0xf2, 0xb4, 0x63, 0x1f, 0x36, 0xab, 0xd8, 0x55, 0xd2, 0x76, 0x15, 0x0c, 0xd9, 0x25, 0x26, 0xa2,
		0xb2, 0x23, 0x84, 0x64, 0x45, 0x06, 0xe1, 0xaa, 0x0a, 0x08, 0x28, 0x08, 0x28, 0x08, 0x28, 0x08,
		0xa8, 0x86, 0x38, 0x2a, 0x0e, 0xa2, 0x11, 0x71, 0x54, 0xaa, 0xf2, 0x4f, 0xdc, 0x54, 0x01, 0xff,
		0xe4, 0xbc, 0xa5, 0xa4, 0x67, 0xd9, 0x07, 0xfd, 0x04, 0xfd, 0x2c, 0x21, 0xfd, 0x1c, 0xda, 0x94,
		0x85, 0x86, 0xa3, 0x8f, 0x53, 0x0f, 0xca, 0x63, 0xa1, 0x8b, 0x1d, 0x83, 0x5e, 0x81, 0x5e, 0x81,
		0x5e, 0x81, 0x5e, 0x81, 0x5e, 0x8d, 0x4f, 0x9b, 0xed, 0x4b, 0x92, 0x8d, 0xb3, 0xf2, 0xb1, 0x76,
		0x2a, 0xa1, 0xaf, 0xf1, 0xbb, 0x2c, 0x1d, 0xc7, 0x9a, 0xae, 0xdc, 0xb0, 0x21, 0x71, 0xed, 0x96,
		0xd6, 0xf0, 0x44, 0x6e, 0xf1, 0x01, 0x46, 0xa8, 0x2b, 0xbd, 0xb0, 0x5d, 0x65, 0xef, 0x6b, 0x55,
		0x3f, 0xed, 0xfd, 0xfc, 0x5a, 0xd3, 0x4f, 0x7b, 0xa3, 0x5f, 0x6b, 0xf1, 0xff, 0xfe, 0xa9, 0xbf,
		0xfd, 0xac, 0x7f, 0xad, 0xea, 0x8d, 0xf1, 0xa7, 0xf5, 0xa3, 0xaf, 0x55, 0xfd, 0xa8, 0xb7, 0xbf,
		0xf7, 0xed, 0xdb, 0x87, 0x6d, 0x9f, 0xd9, 0xff, 0xe7, 0xf0, 0x4d, 0x5e, 0xd9, 0x8f, 0x9e, 0xcc,
		0x65, 0xbb, 0xb9, 0xeb, 0xfc, 0x95, 0xdb, 0xda, 0xfd, 0x77, 0x4f, 0xd6, 0xea, 0xed, 0xff, 0xab,
		0x52, 0xb6, 0xe2, 0x5c, 0xef, 0x4b, 0x2c, 0x36, 0x9b, 0x10, 0x9b, 0xa2, 0xc5, 0x66, 0x7c, 0x8a,
		0x0c, 0xbd, 0xdf, 0xd6, 0x3f, 0xf5, 0xfe, 0xa9, 0xbd, 0x6f, 0xbc, 0xb5, 0xf6, 0xff, 0x39, 0x7e,
		0x5b, 0xfc, 0xf0, 0xe7, 0xaa, 0xaf, 0xd5, 0xde, 0x1f, 0xbf, 0xb5, 0xd6, 0xfc, 0xa5, 0xf9, 0xd6,
		0xda, 0xb0, 0x8d, 0xa3, 0xb7, 0xbd, 0xa5, 0xaf, 0x46, 0x9f, 0xd7, 0xd7, 0x3d, 0xd0, 0x58, 0xf3,
		0xc0, 0xe1, 0xba, 0x07, 0x0e, 0xd7, 0x3c, 0xb0, 0x76, 0x48, 0xf5, 0x35, 0x0f, 0x1c, 0xbd, 0xfd,
		0x5c, 0xfa, 0xfe, 0xde, 0xea, 0xaf, 0x36, 0xdf, 0xf6, 0x7f, 0xae, 0xfb, 0xdb, 0xf1, 0xdb, 0xcf,
		0xd6, 0xfe, 0x3e, 0x14, 0x89, 0x30, 0x45, 0x82, 0xed, 0x2c, 0x7f, 0x3b, 0x97, 0x4f, 0xb1, 0xaa,
		0x6e, 0x7f, 0x14, 0xcc, 0x80, 0xa5, 0x16, 0xd9, 0x92, 0x5f, 0x5c, 0xab, 0x10, 0x45, 0xb5, 0x72,
		0x28, 0xa6, 0x95, 0x43, 0x11, 0x2d, 0xb5, 0x2d, 0xe5, 0x8e, 0xed, 0x7e, 0xd7, 0x1d, 0xcf, 0x94,
		0x99, 0x6b, 0x78, 0x45, 0xdf, 0xb0, 0x97, 0x6f, 0x87, 0x53, 0x60, 0x2f, 0xe7, 0xb8, 0x39, 0x60,
		0x2f, 0x87, 0xbd, 0x7c, 0x23, 0x1b, 0x2f, 0xec, 0xe5, 0xfc, 0xde, 0x25, 0xec, 0xe5, 0x30, 0xfc,
		0x64, 0x30, 0xfc, 0xc0, 0x5e, 0xae, 0xba, 0x99, 0x03, 0xf6, 0xf2, 0xe2, 0x29, 0xba, 0x7c, 0xc5,
		0x26, 0xec, 0xe5, 0xc2, 0xc5, 0x26, 0x0c, 0x8c, 0xb0, 0x97, 0x97, 0x4d, 0x91, 0x60, 0x3b, 0xc3,
		0x5e, 0x5e, 0x70, 0x7e, 0xaa, 0x21, 0x5e, 0xf7, 0x97, 0x56, 0x48, 0xea, 0x85, 0x8c, 0x50, 0xdd,
		0xb6, 0xe4, 0x1b, 0x21, 0xa7, 0x5d, 0xc3, 0x06, 0x09, 0x1b, 0x24, 0x6c, 0x90, 0xb0, 0x41, 0xc2,
		0x06, 0x89, 0x2b, 0x91, 0xea, 0xf1, 0x68, 0x5c, 0x89, 0x94, 0x39, 0x00, 0x5c, 0x89, 0x14, 0xbd,
		0xa5, 0x90, 0x5a, 0x1e, 0x57, 0x22, 0x77, 0x86, 0x62, 0xbd, 0x53, 0x48, 0x54, 0x54, 0xda, 0xe1,
		0x53, 0x04, 0xdc, 0x88, 0x25, 0x54, 0x8d, 0x4a, 0xa2, 0x81, 0x07, 0x11, 0xf6, 0xec, 0xb7, 0xe2,
		0x82, 0xd7, 0x7d, 0xc3, 0x24, 0xc1, 0xe2, 0x07, 0xe3, 0x7f, 0x07, 0xe1, 0xe3, 0xd2, 0x77, 0x66,
		0x3f, 0x8b, 0x3f, 0xf2, 0x5b, 0xb6, 0x3f, 0x6c, 0x8e, 0x7f, 0x1d, 0xdb, 0xb2, 0xc7, 0xdf, 0x4e,
		0xfe, 0x7d, 0x30, 0xa4, 0xd4, 0x8f, 0xff, 0xa3, 0x3f, 0x51, 0x2f, 0xf4, 0x0f, 0x02, 0x66, 0x30,
		0x22, 0x3e, 0x7b, 0x51, 0x60, 0x52, 0xdb, 0x8f, 0xc4, 0x5b, 0x34, 0xeb, 0xb6, 0x65, 0xd9, 0xd1,
		0xef, 0x86, 0xa3, 0x7d, 0xb9, 0xbd, 0xed, 0x6a, 0x96, 0xc1, 0x0c, 0xad, 0xef, 0x51, 0xad, 0xd3,
		0x1d, 0x36, 0xb5, 0xe9, 0x44, 0x25, 0x71, 0xe2, 0x1a, 0x38, 0x31, 0x38, 0x31, 0x38, 0x31, 0x38,
		0xf1, 0xd6, 0x62, 0xcd, 0x96, 0x14, 0xc0, 0x9b, 0x43, 0xb8, 0xe4, 0xd2, 0x41, 0x97, 0x1e, 0x36,
		0xb9, 0x4e, 0x7b, 0x7c, 0xf2, 0xe8, 0x48, 0x6d, 0x78, 0xee, 0xa2, 0xc2, 0x78, 0xaf, 0x05, 0x84,
		0x05, 0x1a, 0x7b, 0x26, 0xda, 0x78, 0xb8, 0x5a, 0x34, 0x5c, 0x2d, 0x1e, 0xee, 0x37, 0x57, 0xae,
		0x7f, 0x57, 0x92, 0xc9, 0x55, 0xba, 0x9a, 0xc9, 0x43, 0xdd, 0xe4, 0xa6, 0x76, 0xf2, 0x52, 0x3f,
		0xb9, 0xab, 0xa1, 0xdc, 0xd5, 0x51, 0x9e, 0x6a, 0x49, 0x32, 0x33, 0x95, 0x74, 0x5e, 0xa5, 0x99,
		0x70, 0x97, 0x4e, 0xab, 0xd4, 0x70, 0xd2, 0x25, 0x78, 0x7f, 0x2a, 0xb1, 0x4f, 0xa9, 0xe1, 0xa5,
		0x72, 0xc8, 0xea, 0x6f, 0x56, 0x36, 0x97, 0x70, 0xd3, 0xa5, 0x35, 0x3e, 0xc9, 0xa1, 0xef, 0xbc,
		0x22, 0x4f, 0x92, 0x01, 0x94, 0x2f, 0x0c, 0x35, 0x31, 0xa5, 0xe5, 0xb1, 0x9c, 0x79, 0x46, 0x13,
		0x25, 0xa3, 0x28, 0x67, 0x78, 0x6a, 0xb2, 0xae, 0x52, 0x7b, 0x7c, 0x7b, 0xbf, 0x43, 0x62, 0xb8,
		0x09, 0x31, 0x9c, 0x97, 0x18, 0x46, 0x1c, 0x60, 0xe9, 0xc3, 0x5a, 0xa1, 0x98, 0x10, 0xee, 0xba,
		0x0b, 0xe1, 0xae, 0x39, 0x29, 0x6a, 0x84, 0xf3, 0x16, 0xaa, 0x07, 0xd5, 0x7c, 0xcd, 0x3d, 0x51,
		0xbe, 0x66, 0xd7, 0xf5, 0x98, 0x31, 0x36, 0x3c, 0x8b, 0x83, 0x77, 0x95, 0xc0, 0x7c, 0x26, 0x03,
		0xc3, 0x37, 0xd8, 0xf3, 0xc8, 0x29, 0xec, 0x13, 0xd7, 0x8c, 0xad, 0xb9, 0xfa, 0x8c, 0xd7, 0x77,
		0xd5, 0xaf, 0x07, 0xf3, 0x8e, 0xe1, 0x39, 0x97, 0x70, 0xec, 0x0c, 0x9e, 0xba, 0x81, 0x7f, 0xed,
		0x00, 0x7e, 0xa7, 0xc6, 0x62, 0x0b, 0x40, 0xf4, 0x12, 0xa3, 0xc0, 0xa5, 0x47, 0x7f, 0x0b, 0x76,
		0x41, 0x08, 0x77, 0x39, 0xc8, 0x70, 0x31, 0x48, 0x73, 0x29, 0xc8, 0x72, 0x21, 0x48, 0x77, 0x19,
		0x48, 0x77, 0x11, 0xc8, 0x74, 0x09, 0xa8, 0x15, 0x1c, 0x25, 0xdc, 0xc4, 0x9f, 0x9c, 0x16, 0x87,
		0x18, 0x7d, 0x4a, 0xfa, 0x22, 0xcf, 0xcb, 0xc4, 0xa8, 0x70, 0x2c, 0xb0, 0x8f, 0xee, 0x58, 0xe7,
		0x7e, 0xf8, 0x70, 0x30, 0xd2, 0xb8, 0x07, 0xcb, 0xb2, 0x59, 0x15, 0xdd, 0xf8, 0xae, 0xc0, 0x3b,
		0x34, 0x12, 0x4a, 0x32, 0x34, 0x9f, 0xd8, 0xcc, 0x6a, 0xe2, 0x33, 0xa9, 0xe5, 0x92, 0x39, 0x4d,
		0x42, 0xa6, 0x34, 0x09, 0x99, 0xd1, 0x78, 0xef, 0x58, 0xc1, 0xe0, 0x3f, 0x4f, 0xd0, 0x2f, 0x40,
		0x6a, 0x57, 0x02, 0x46, 0x43, 0x93, 0xb9, 0x63, 0xf5, 0xd0, 0x99, 0x8c, 0xe8, 0xe1, 0x6e, 0x66,
		0x78, 0x0f, 0x1d, 0x7f, 0xd8, 0x7c, 0x68, 0x8f, 0x06, 0xf5, 0xf0, 0x85, 0x52, 0xff, 0x8f, 0x78,
		0x38, 0xef, 0x8a, 0x29, 0x07, 0xf9, 0xb4, 0xc4, 0x69, 0x5f, 0x56, 0xc8, 0x0b, 0xa3, 0x86, 0x1e,
		0xba, 0x01, 0x33, 0x1e, 0x1d, 0xbe, 0x5a, 0xbe, 0x42, 0x49, 0x9f, 0x50, 0xe2, 0x9a, 0xfc, 0x7d,
		0xd7, 0x02, 0x0e, 0xce, 0x04, 0x82, 0xdc, 0x7e, 0x3a, 0xd3, 0x8e, 0x8e, 0x4f, 0x4f, 0x34, 0x5d,
		0xfb, 0x32, 0x8e, 0xf6, 0xba, 0x8d, 0xd5, 0x8a, 0x76, 0x4b, 0xac, 0xd0, 0xb5, 0x0c, 0xd7, 0x7c,
		0xd5, 0xba, 0xd4, 0x63, 0x9e, 0xe9, 0x39, 0xdf, 0xdc, 0xbd, 0x2f, 0xb7, 0xb7, 0xdd, 0x7d, 0xed,
		0x0b, 0xa1, 0x81, 0xed, 0xb9, 0xda, 0xe1, 0x24, 0xe2, 0xb8, 0xa1, 0x19, 0xae, 0x15, 0x47, 0x92,
		0x89, 0x38, 0x16, 0x82, 0x41, 0xff, 0x2c, 0xd8, 0x9f, 0x2e, 0xa2, 0x20, 0x74, 0x29, 0x0b, 0xe7,
		0xcf, 0xe1, 0x7b, 0xfe, 0xab, 0x5c, 0x74, 0xe4, 0xc5, 0xad, 0xb5, 0x5e, 0xa1, 0xe4, 0x97, 0x20,
		0x7d, 0x2a, 0x5d, 0x8f, 0xf2, 0xd9, 0x3f, 0xd9, 0x57, 0x39, 0x5b, 0x0b, 0x19, 0x57, 0x75, 0x82,
		0xe7, 0x33, 0x5b, 0x4c, 0xf8, 0x02, 0x76, 0xfe, 0x00, 0x5d, 0x0a, 0x20, 0x17, 0x00, 0xc0, 0x05,
		0x00, 0xee, 0xac, 0x5b, 0x86, 0xef, 0xcd, 0x2d, 0x3e, 0x12, 0x24, 0xbf, 0x9b, 0x58, 0x9c, 0x94,
		0xf4, 0x2f, 0xee, 0x56, 0x75, 0xba, 0x5a, 0xd4, 0x97, 0xd6, 0x37, 0x06, 0xb6, 0xf3, 0xaa, 0x8d,
		0x84, 0x62, 0x48, 0x63, 0x11, 0x1c, 0xa9, 0xc5, 0x6f, 0x2e, 0xf7, 0xab, 0x56, 0x9c, 0xaf, 0x54,
		0x71, 0x37, 0x30, 0x8b, 0x30, 0x28, 0x0b, 0x33, 0x20, 0x8b, 0xc2, 0x8e, 0xc2, 0x0d, 0xc4, 0xc2,
		0x81, 0xa2, 0x48, 0x03, 0x70, 0xb1, 0x48, 0x1f, 0xef, 0x2b, 0x46, 0x95, 0x18, 0xc1, 0x70, 0xdf,
		0x51, 0x89, 0x63, 0x2b, 0x6a, 0x9d, 0xf3, 0x5a, 0x2f, 0x08, 0xb8, 0x0b, 0xd7, 0x74, 0xbc, 0xc0,
		0x76, 0x9f, 0x22, 0x81, 0xc6, 0x0c, 0xdb, 0x25, 0x34, 0xc6, 0xf8, 0xf1, 0x95, 0xa0, 0xd8, 0xba,
		0x11, 0x68, 0xcf, 0x86, 0x6b, 0x39, 0xc4, 0xd2, 0x1e, 0x5f, 0x35, 0xf6, 0x6c, 0x07, 0xdf, 0xdc,
		0x4e, 0x77, 0x7a, 0x4b, 0x88, 0xf7, 0xf8, 0xc4, 0xdc, 0x22, 0x15, 0xe6, 0x5b, 0x13, 0xe9, 0x53,
		0x13, 0xee, 0x4b, 0x93, 0x49, 0xa7, 0x85, 0xfa, 0xce, 0xf2, 0xe1, 0xd2, 0x82, 0x7c, 0x65, 0xc5,
		0xf6, 0x3c, 0x08, 0xb4, 0x9b, 0x49, 0xb0, 0x9f, 0x89, 0xb3, 0xa3, 0x29, 0x69, 0x4f, 0x93, 0x25,
		0x08, 0xf2, 0xb0, 0xaf, 0x49, 0x97, 0x0d, 0xaa, 0xda, 0xdb, 0xc4, 0xc8, 0x1d, 0x71, 0xad, 0xf6,
		0xca, 0xed, 0xdf, 0xc8, 0xd9, 0x92, 0xd5, 0xcb, 0x6a, 0x96, 0xe0, 0x6b, 0x97, 0x94, 0x69, 0x8f,
		0xe4, 0x20, 0x88, 0xb6, 0xf7, 0xdb, 0x65, 0x3b, 0xcf, 0xe9, 0xd7, 0x3a, 0xdd, 0x93, 0x29, 0xd1,
		0x04, 0xaf, 0x5d, 0x21, 0x63, 0x37, 0xa4, 0x5b, 0x90, 0xed, 0x5f, 0x67, 0x8a, 0x57, 0x59, 0x31,
		0xc2, 0x48, 0x4f, 0xb8, 0xfd, 0xd4, 0x2f, 0x31, 0x41, 0x27, 0x49, 0x4b, 0x29, 0x17, 0x34, 0x1b,
		0x4d, 0xcb, 0x4c, 0xc7, 0x78, 0xd0, 0xae, 0x79, 0x7a, 0xa5, 0x93, 0x17, 0x96, 0x41, 0x00, 0xf0,
		0x42, 0x50, 0xdc, 0x29, 0x13, 0x77, 0xf8, 0xb3, 0x4c, 0x81, 0xe2, 0x57, 0xa7, 0x88, 0x20, 0xca,
		0x6a, 0x01, 0xaa, 0x98, 0x93, 0x9d, 0x9b, 0x71, 0x9d, 0x27, 0x9b, 0x6f, 0xdc, 0x5e, 0x56, 0xff,
		0x11, 0x17, 0xab, 0x09, 0x37, 0x2b, 0x09, 0x4f, 0xab, 0x08, 0xd7, 0x63, 0x2a, 0x8a, 0xf0, 0x08,
		0xb3, 0x74, 0x08, 0x63, 0x2f, 0xbc, 0x8f, 0x31, 0x1f, 0xf4, 0x99, 0xd5, 0x29, 0xc6, 0xcb, 0xc0,
		0x5b, 0x31, 0x29, 0x31, 0x18, 0xd1, 0x9f, 0x1c, 0xef, 0xd1, 0x70, 0xf4, 0x29, 0x38, 0x68, 0xf1,
		0xf6, 0x94, 0xad, 0xeb, 0x88, 0x9b, 0x3f, 0xab, 0x6f, 0x84, 0x0e, 0xe3, 0x6a, 0x48, 0xa9, 0x44,
		0xbb, 0x90, 0x0f, 0x0f, 0xed, 0xf1, 0x75, 0x94, 0x55, 0x77, 0xd6, 0x51, 0xc6, 0x49, 0x2e, 0x8a,
		0x36, 0x08, 0x95, 0xd1, 0x59, 0xc6, 0x47, 0x6e, 0x72, 0xb6, 0x22, 0x70, 0xda, 0xb7, 0xdc, 0x6f,
		0x40, 0x24, 0xbb, 0xf6, 0xd1, 0xf3, 0x1c, 0x62, 0xb8, 0x3c, 0xf7, 0xec, 0x04, 0x04, 0xd5, 0x10,
		0x68, 0x9a, 0xf9, 0x47, 0x70, 0xa0, 0x69, 0xe3, 0xa4, 0x59, 0x6f, 0x8d, 0xf2, 0x0d, 0xde, 0x31,
		0x83, 0x11, 0x87, 0x04, 0x81, 0x36, 0xb6, 0x88, 0x68, 0xed, 0x31, 0x37, 0x4d, 0xc2, 0x2b, 0xbe,
		0xb9, 0x49, 0x2b, 0x77, 0x24, 0x4e, 0xeb, 0xad, 0x1d, 0x7d, 0x38, 0x42, 0x7c, 0x69, 0xbe, 0x92,
		0x70, 0xa5, 0x44, 0xe4, 0xb6, 0xb8, 0x08, 0x2b, 0xcd, 0x45, 0x5a, 0x89, 0x0a, 0x2b, 0x7d, 0x7d,
		0xf2, 0x98, 0xee, 0x99, 0xba, 0xe9, 0x0d, 0xfc, 0x18, 0xe1, 0x5a, 0xba, 0x43, 0x8c, 0xd8, 0x90,
		0x55, 0x18, 0xbb, 0xf9, 0x7b, 0x6e, 0xb4, 0x81, 0x91, 0x81, 0xef, 0x51, 0x83, 0xbe, 0x4a, 0x60,
		0x0e, 0xab, 0xfa, 0x2a, 0x32, 0x79, 0x88, 0x23, 0x27, 0xc1, 0x1e, 0xc0, 0x1e, 0xc0, 0x1e, 0xc0,
		0x1e, 0xc0, 0x1e, 0xc0, 0x1e, 0x52, 0xb0, 0x87, 0xd3, 0x46, 0xad, 0xa5, 0x75, 0xa9, 0x3d, 0x34,
		0xcc, 0x57, 0xed, 0xe2, 0x85, 0x11, 0x37, 0xb0, 0x3d, 0x37, 0x88, 0xa3, 0x25, 0x96, 0x20, 0xe7,
		0x0c, 0xc0, 0x5c, 0x02, 0x9f, 0x9a, 0xed, 0xe2, 0xae, 0x5a, 0xa1, 0xb9, 0x04, 0xff, 0xa5, 0x06,
		0xb3, 0x00, 0xb3, 0x50, 0x8f, 0x59, 0x4c, 0x61, 0xbe, 0x1f, 0x9f, 0x76, 0x1a, 0xcd, 0xd3, 0xee,
		0x13, 0x66, 0x0f, 0x08, 0x7f, 0x6e, 0xf1, 0xcb, 0xde, 0x8a, 0xcc, 0x2e, 0x4e, 0x9a, 0x8d, 0x6a,
		0x15, 0xec, 0x02, 0xec, 0x02, 0xec, 0x02, 0xec, 0x22, 0xed, 0xae, 0x0d, 0x6d, 0x97, 0x1d, 0xd6,
		0x05, 0x90, 0x0b, 0x8e, 0xb9, 0x97, 0x04, 0x15, 0xbf, 0x15, 0x93, 0xe5, 0x47, 0x1c, 0x08, 0x9e,
		0x54, 0x18, 0x15, 0x95, 0x32, 0x4f, 0x56, 0x1d, 0x51, 0xf1, 0xf5, 0x42, 0xdf, 0xc4, 0xa4, 0x57,
		0x12, 0xbf, 0xb4, 0x8d, 0xfa, 0x69, 0xe3, 0xb4, 0x79, 0x5c, 0x3f, 0x3d, 0xc2, 0x1a, 0x83, 0x89,
		0xc0, 0xa6, 0xa2, 0x8a, 0x4d, 0x65, 0xe6, 0x3b, 0xba, 0x76, 0x7f, 0x71, 0xd5, 0x7d, 0xe8, 0xde,
		0x5e, 0x7c, 0xba, 0xb8, 0xbd, 0xbd, 0x38, 0x7f, 0xb8, 0xec, 0x7c, 0xba, 0xb8, 0xef, 0x5c, 0x5d,
		0xc0, 0xee, 0xb2, 0x33, 0x76, 0x97, 0x8d, 0xb6, 0x03, 0x24, 0x22, 0x6c, 0x33, 0x2a, 0xdb, 0x66,
		0x86, 0x86, 0x63, 0xcb, 0xb1, 0xcb, 0x2c, 0xf4, 0x54, 0x64, 0x9b, 0x4c, 0xb3, 0xda, 0x38, 0x81,
		0x51, 0x06, 0x46, 0x19, 0x18, 0x65, 0x60, 0x94, 0x81, 0x51, 0x06, 0x46, 0x19, 0x10, 0x76, 0x18,
		0x65, 0x60, 0x94, 0x01, 0x05, 0x81, 0x51, 0xa6, 0x08, 0x46, 0x99, 0x2f, 0xed, 0xcb, 0x0e, 0x0c,
		0x32, 0x30, 0xc8, 0x2c, 0x6f, 0x05, 0x48, 0x42, 0x18, 0x63, 0x24, 0x1b, 0x63, 0x72, 0xbd, 0x3c,
		0x2c, 0x40, 0x05, 0x09, 0x50, 0x3d, 0x02, 0xa8, 0xd5, 0xf6, 0x97, 0x76, 0x14, 0xb3, 0x1c, 0x88,
		0x52, 0x0b, 0x72, 0x8d, 0x07, 0x29, 0x96, 0xa9, 0x74, 0xc9, 0xad, 0x7a, 0xf9, 0xe6, 0xdc, 0x56,
		0x27, 0xb9, 0xd5, 0x78, 0x2b, 0x8c, 0xeb, 0x70, 0xe5, 0x96, 0x65, 0x2a, 0x43, 0x46, 0x9d, 0x51,
		0x29, 0x4d, 0x6e, 0x89, 0x56, 0x46, 0xcd, 0x15, 0x2c, 0xcf, 0x4a, 0x1d, 0x79, 0x56, 0x52, 0x0b,
		0x75, 0xe4, 0x59, 0xc9, 0x4f, 0x10, 0x22, 0xcf, 0xca, 0xe2, 0x0b, 0x41, 0x9e, 0x95, 0x2c, 0x72,
		0x10, 0x6e, 0x33, 0xb8, 0xcd, 0xe4, 0xc8, 0x4d, 0xce, 0x80, 0x16, 0x37, 0x25, 0x8b, 0xf2, 0x0a,
		0x61, 0x40, 0xce, 0xcc, 0xea, 0x91, 0x67, 0xa5, 0x88, 0x92, 0x90, 0x93, 0x2d, 0x00, 0x79, 0x56,
		0x0a, 0x62, 0xe3, 0x44, 0x9a, 0x11, 0x19, 0xd8, 0x19, 0x69, 0x46, 0x00, 0x9e, 0x01, 0x9e, 0x01,
		0x9e, 0x01, 0x9e, 0x01, 0x9e, 0xd3, 0x82, 0x67, 0xa4, 0x19, 0x41, 0x74, 0x05, 0xd2, 0x8c, 0xec,
		0x12, 0xb0, 0x46, 0x96, 0x8d, 0x8d, 0x1a, 0x45, 0x96, 0x0d, 0x80, 0x6b, 0x80, 0x6b, 0x80, 0xeb,
		0x4c, 0xbb, 0x16, 0x17, 0x3a, 0x78, 0x6e, 0x4a, 0x5c, 0xe8, 0xd8, 0x68, 0xef, 0xe1, 0x42, 0xc7,
		0x9a, 0xa5, 0xc5, 0x85, 0x0e, 0x00, 0x71, 0x98, 0x14, 0x90, 0x65, 0x03, 0x66, 0x07, 0x64, 0xd9,
		0x80, 0x44, 0x2c, 0xb4, 0x69, 0x02, 0x49, 0x26, 0x56, 0x34, 0x8a, 0x24, 0x13, 0xb0, 0x49, 0xc0,
		0x26, 0x01, 0x9b, 0x04, 0x6c, 0x12, 0xb0, 0x49, 0x80, 0xaf, 0xc2, 0x26, 0x01, 0x9b, 0x04, 0x6c,
		0x12, 0xb0, 0x49, 0x14, 0xc5, 0x26, 0x81, 0x24, 0x13, 0xb0, 0x47, 0x20, 0xc9, 0x44, 0x31, 0x6c,
		0x11, 0xb8, 0x41, 0xbd, 0xdd, 0x0d, 0xea, 0xd1, 0xc5, 0xe1, 0xbc, 0x2e, 0x50, 0xbf, 0x93, 0xb8,
		0x4a, 0xbc, 0x56, 0x47, 0xc2, 0xaa, 0x54, 0x32, 0x5d, 0x2c, 0xa7, 0xa1, 0xc9, 0xdc, 0xb1, 0x0a,
		0xec, 0x4c, 0x3a, 0x78, 0xb8, 0x9b, 0xe9, 0xed, 0xa1, 0xe3, 0x0f, 0x9b, 0x0f, 0x13, 0xb1, 0x96,
		0x6e, 0xf5, 0xb7, 0x5f, 0xbb, 0x14, 0xeb, 0x56, 0x31, 0x27, 0x56, 0xa1, 0x74, 0xeb, 0x35, 0x8d,
		0xf3, 0x1f, 0xb5, 0x93, 0x72, 0xe7, 0x64, 0xbb, 0x18, 0x9f, 0xd9, 0xb4, 0xc5, 0xc3, 0x94, 0x35,
		0x6f, 0xba, 0xca, 0xb2, 0xc1, 0x38, 0x61, 0x11, 0xee, 0x66, 0x29, 0xee, 0xc0, 0x62, 0xd9, 0xec,
		0x54, 0x51, 0x44, 0xd2, 0x65, 0xbd, 0xc0, 0x5e, 0xb1, 0x9e, 0x4d, 0x5f, 0x37, 0x1d, 0x7b, 0x34,
		0x79, 0x4e, 0x39, 0x2a, 0x66, 0x1b, 0xcd, 0x7a, 0x43, 0x9f, 0xa3, 0x91, 0x9d, 0xc7, 0x65, 0x9a,
		0x1e, 0x9f, 0xcc, 0x1b, 0x55, 0x5e, 0x99, 0x37, 0xaa, 0x45, 0xcd, 0xbc, 0x81, 0xac, 0x1b, 0xbc,
		0x99, 0x4d, 0x46, 0xc1, 0x54, 0x0c, 0xe0, 0xcc, 0xcd, 0xe6, 0x2d, 0xe0, 0x72, 0x0b, 0xa7, 0x4b,
		0x2d, 0x45, 0xe3, 0x16, 0xc2, 0x12, 0xe6, 0xe5, 0x93, 0x4f, 0xc9, 0x0a, 0xfd, 0xf8, 0xee, 0xa6,
		0x6e, 0x11, 0x46, 0x4c, 0xa6, 0x33, 0x6a, 0xb8, 0xc1, 0x60, 0x64, 0xf7, 0xe4, 0xa5, 0xbf, 0xd6,
		0x76, 0x51, 0x24, 0x6d, 0x56, 0x83, 0x26, 0x83, 0x26, 0x83, 0x26, 0x2b, 0x8f, 0x26, 0xe3, 0xe6,
		0xb5, 0xe5, 0xe8, 0xad, 0xe5, 0xec, 0xa5, 0xe5, 0xe8, 0xa8, 0x10, 0xe1, 0x95, 0x15, 0xe5, 0x8d,
		0x15, 0xee, 0xa1, 0x13, 0xe7, 0x99, 0xe3, 0xe8, 0x75, 0x15, 0xe2, 0x6d, 0x15, 0xee, 0x65, 0x55,
		0x79, 0xed, 0x90, 0xed, 0x14, 0xf9, 0x90, 0x91, 0x0f, 0xb9, 0x38, 0x28, 0x68, 0x25, 0x1a, 0x42,
		0x3e, 0xe4, 0xb2, 0xe5, 0x43, 0x2e, 0x19, 0xe3, 0x26, 0x6e, 0x24, 0x38, 0x2d, 0x7e, 0xfc, 0x7a,
		0xd2, 0x60, 0x91, 0xd8, 0x74, 0xf6, 0x24, 0xa5, 0x20, 0xd4, 0x20, 0xd4, 0x20, 0xd4, 0x45, 0x22,
		0xd4, 0x30, 0x0d, 0xef, 0x96, 0xa2, 0x1a, 0xb0, 0x90, 0x9f, 0x92, 0x8a, 0x1a, 0x83, 0x44, 0x87,
		0x44, 0x87, 0x44, 0x2f, 0x90, 0x44, 0x87, 0x89, 0x74, 0x2b, 0x7b, 0x9b, 0x48, 0x13, 0x69, 0xad,
		0x7e, 0x02, 0x2b, 0x29, 0xa7, 0x93, 0x32, 0xbf, 0x6a, 0xb0, 0x92, 0xca, 0x5d, 0x3b, 0xd8, 0x40,
		0x76, 0xdd, 0x4a, 0x5a, 0x6f, 0x34, 0xab, 0x2d, 0x2d, 0x0e, 0xa1, 0x75, 0x09, 0xd3, 0xba, 0xd4,
		0x63, 0x9e, 0xe9, 0x39, 0xef, 0xb5, 0x2f, 0x84, 0x06, 0xb6, 0xe7, 0x6a, 0x4d, 0x6d, 0xaf, 0xd3,
		0x1d, 0x36, 0xf7, 0xb5, 0x3b, 0x9f, 0x98, 0x76, 0xdf, 0x36, 0xd7, 0xe6, 0x22, 0x87, 0x09, 0x55,
		0x2c, 0x4a, 0x5a, 0x89, 0x96, 0x78, 0xaf, 0x21, 0x64, 0x0b, 0x68, 0xab, 0x8c, 0x27, 0xcb, 0x7b,
		0xc1, 0x21, 0x4b, 0xbd, 0x3e, 0x39, 0x17, 0x0e, 0x5c, 0x62, 0x3f, 0x3d, 0x3f, 0x7a, 0x34, 0xc8,
		0x7e, 0xe7, 0x60, 0xda, 0x14, 0xae, 0x1d, 0xe0, 0xda, 0x41, 0x2e, 0x84, 0x5f, 0xb1, 0x6b, 0x07,
		0x93, 0x13, 0xc3, 0xcf, 0x5c, 0x97, 0xb4, 0x58, 0xb0, 0xd2, 0x98, 0xb0, 0xd9, 0xc1, 0x66, 0xa7,
		0x92, 0xcd, 0x8e, 0x5f, 0x49, 0xcc, 0x6c, 0x17, 0xfa, 0xd6, 0x6e, 0xde, 0x4c, 0x17, 0xfc, 0x04,
		0x1d, 0x77, 0xee, 0xc7, 0x5e, 0xc4, 0xf1, 0x17, 0x26, 0x06, 0x64, 0xf2, 0xd5, 0xb2, 0xe4, 0xb5,
		0x2a, 0x6b, 0x4e, 0x2b, 0x5e, 0xe2, 0x23, 0x69, 0xd0, 0xf6, 0xf9, 0xef, 0xa7, 0xc9, 0x01, 0xe0,
		0xba, 0xfb, 0x35, 0xfe, 0xa9, 0xf2, 0x84, 0x89, 0x15, 0x91, 0xe2, 0x45, 0xb8, 0x98, 0x11, 0x2d,
		0x6e, 0xa4, 0x89, 0x1d, 0x69, 0xe2, 0x47, 0x86, 0x18, 0xe2, 0x2b, 0x8e, 0x38, 0x8b, 0xa5, 0xe4,
		0x05, 0x70, 0x4f, 0xb9, 0xb7, 0x42, 0xa6, 0x0c, 0x9b, 0x93, 0xda, 0x82, 0x22, 0x36, 0xfd, 0x04,
		0xb0, 0x9c, 0x08, 0x68, 0xbb, 0x6b, 0x30, 0x46, 0xa8, 0xcb, 0x3d, 0xf3, 0x53, 0xd2, 0xc1, 0xde,
		0xde, 0xd7, 0xaa, 0x7e, 0x6a, 0xe8, 0xfd, 0xb6, 0xfe, 0xa9, 0xf7, 0x4f, 0xed, 0x7d, 0xe3, 0xad,
		0xb5, 0xff, 0xcf, 0xf1, 0xdb, 0xe2, 0x87, 0x3f, 0x57, 0x7d, 0xad, 0xf6, 0xfe, 0xf8, 0xad, 0xb5,
		0xe6, 0x2f, 0xcd, 0xb7, 0xd6, 0x86, 0x6d, 0x1c, 0xbd, 0xed, 0x2d, 0x7d, 0x35, 0xfa, 0xbc, 0xbe,
		0xee, 0x81, 0xc6, 0x9a, 0x07, 0x0e, 0xd7, 0x3d, 0x70, 0xb8, 0xe6, 0x81, 0xb5, 0x43, 0xaa, 0xaf,
		0x79, 0xe0, 0xe8, 0xed, 0xe7, 0xd2, 0xf7, 0xf7, 0x56, 0x7f, 0xb5, 0xf9, 0xb6, 0xff, 0x73, 0xdd,
		0xdf, 0x8e, 0xdf, 0x7e, 0xb6, 0xf6, 0xf7, 0xf9, 0x1f, 0xf4, 0x9e, 0x88, 0x0d, 0x78, 0x73, 0xd7,
		0xf9, 0x4b, 0xf8, 0x2e, 0xfc, 0x2f, 0xb6, 0x61, 0x5e, 0xdb, 0xf0, 0x5f, 0x02, 0xf6, 0x61, 0xa1,
		0x15, 0x0e, 0x67, 0xd7, 0xc7, 0x52, 0xfb, 0xc2, 0x5c, 0x21, 0xe2, 0xf4, 0x3a, 0xcf, 0x58, 0x09,
		0xc7, 0x76, 0xbf, 0xeb, 0x8e, 0xf1, 0x4a, 0x68, 0xa2, 0x73, 0x85, 0xb1, 0x85, 0x15, 0x7d, 0x81,
		0x3d, 0x80, 0x3d, 0x80, 0x3d, 0xec, 0x0c, 0x7b, 0xb8, 0x32, 0x5c, 0xcb, 0x60, 0x1e, 0x7d, 0xe5,
		0x67, 0x31, 0x94, 0xc8, 0x4c, 0xfc, 0xe7, 0xd7, 0x00, 0xcc, 0x64, 0x1d, 0x33, 0x99, 0xc5, 0x2c,
		0x8b, 0x50, 0xa8, 0xfe, 0xb6, 0xff, 0x7f, 0xf7, 0xff, 0x1f, 0x20, 0xf4, 0x2c, 0x84, 0xfe, 0xfd,
		0xfb, 0x02, 0xd6, 0x03, 0xd6, 0x2b, 0x96, 0x71, 0x5a, 0xd0, 0x02, 0x09, 0x0c, 0xa3, 0x49, 0x22,
		0x4b, 0x92, 0xdf, 0x32, 0x45, 0xd6, 0xf0, 0x5f, 0x1e, 0x1e, 0x25, 0x81, 0x38, 0x9a, 0xf8, 0xf9,
		0x9b, 0xf6, 0x51, 0xfd, 0x06, 0x1e, 0x42, 0x78, 0x08, 0x95, 0xa8, 0x7a, 0x13, 0x29, 0x43, 0x4a,
		0xfa, 0x02, 0xca, 0xde, 0xd4, 0x78, 0xd6, 0xbd, 0xe9, 0x8e, 0xf5, 0xc4, 0x87, 0x0f, 0x63, 0x59,
		0x7e, 0xc0, 0x6b, 0xb1, 0x8b, 0x21, 0xce, 0x47, 0x89, 0xc6, 0xb9, 0x4b, 0xf4, 0x51, 0xb3, 0x05,
		0x0f, 0xfb, 0xa8, 0x43, 0xa8, 0x43, 0xa8, 0xef, 0xa0, 0x50, 0x47, 0xd8, 0x07, 0x0c, 0xb7, 0x82,
		0xc5, 0x8c, 0x68, 0x71, 0x23, 0x4d, 0xec, 0x48, 0x13, 0x3f, 0x32, 0xc4, 0x10, 0x7f, 0x93, 0x81,
		0x86, 0xb0, 0x8f, 0x5f, 0x00, 0x16, 0x84, 0x7d, 0xc0, 0xdf, 0x8e, 0xb0, 0x8f, 0x54, 0xbd, 0x20,
		0xec, 0x03, 0x61, 0x1f, 0xe2, 0xd5, 0x17, 0xcf, 0xe8, 0x06, 0x3b, 0xd0, 0xa9, 0x17, 0x32, 0x42,
		0x05, 0x62, 0xe1, 0xa4, 0x0b, 0x40, 0x62, 0x40, 0x62, 0x40, 0x62, 0x40, 0x62, 0x6e, 0xbb, 0x9d,
		0x5f, 0xf6, 0xbd, 0xb5, 0x68, 0xb8, 0x86, 0x10, 0x37, 0xae, 0x4b, 0x86, 0x10, 0x37, 0xa8, 0x05,
		0xa8, 0x05, 0x84, 0xb8, 0x21, 0xc4, 0xad, 0x8c, 0x56, 0x18, 0x84, 0xb8, 0x6d, 0x67, 0x2e, 0x28,
		0x43, 0x88, 0x5b, 0x21, 0x21, 0xcd, 0x24, 0x96, 0x49, 0xe7, 0xeb, 0x2a, 0x5e, 0x12, 0x07, 0x0b,
		0xfd, 0x00, 0xca, 0x00, 0xca, 0x00, 0xca, 0x80, 0xe1, 0x72, 0xdb, 0xed, 0xc4, 0x0d, 0x07, 0x84,
		0x7b, 0xe5, 0x9c, 0x25, 0xb4, 0xd1, 0x10, 0xd0, 0xf6, 0x85, 0x1b, 0x0e, 0xc4, 0x9d, 0xa6, 0x7b,
		0xef, 0x8e, 0x51, 0xdb, 0x7d, 0x12, 0xd6, 0x43, 0xdc, 0x4b, 0x35, 0xae, 0x7b, 0x7f, 0x7d, 0x76,
		0x73, 0xd5, 0xbd, 0xbc, 0xb8, 0xbf, 0x10, 0x74, 0x62, 0xb5, 0x51, 0xad, 0xcd, 0x96, 0x56, 0xb9,
		0xbd, 0x68, 0x9f, 0xfd, 0xd9, 0xfe, 0x78, 0x29, 0xb4, 0xa7, 0x7a, 0xd4, 0xd3, 0xdd, 0x7d, 0x5b,
		0x6c, 0x2f, 0x87, 0x51, 0x2f, 0xe7, 0x17, 0x97, 0xed, 0xbf, 0x45, 0xf6, 0xd2, 0x88, 0x7a, 0xe9,
		0xde, 0xde, 0x7c, 0xbc, 0xa8, 0x08, 0xe9, 0xe4, 0xed, 0xbd, 0xa8, 0xed, 0xdb, 0xe1, 0x50, 0x0e,
		0xfd, 0x97, 0x5d, 0x8c, 0xde, 0x7d, 0x4b, 0x3b, 0x14, 0xf8, 0xfa, 0x67, 0x8e, 0x06, 0x77, 0x34,
		0x31, 0x8f, 0x2c, 0xe2, 0x25, 0x6e, 0x69, 0x0d, 0x81, 0x7d, 0x4c, 0x0f, 0x1f, 0x77, 0x62, 0x3a,
		0x0f, 0x34, 0xe2, 0xa3, 0xd7, 0xd2, 0xea, 0x62, 0x76, 0xec, 0x8e, 0xe9, 0x60, 0x01, 0x59, 0xa5,
		0x97, 0xfa, 0xe0, 0x9f, 0x65, 0x7a, 0xf1, 0x47, 0xa0, 0x1c, 0x58, 0xa8, 0xd5, 0x57, 0x6b, 0x69,
		0xd7, 0x63, 0xd2, 0xa2, 0x9d, 0xdb, 0x81, 0xe9, 0x0d, 0x09, 0x7d, 0xd5, 0xfa, 0x1e, 0xd5, 0x3a,
		0x5d, 0x6d, 0xb8, 0x90, 0xc8, 0x78, 0x94, 0xba, 0x78, 0x92, 0xb5, 0xf8, 0xf8, 0xc3, 0xe1, 0x87,
		0xba, 0x48, 0x69, 0x2e, 0x18, 0x82, 0xaf, 0x82, 0xe2, 0xa2, 0xb2, 0x53, 0xe7, 0x86, 0xca, 0x57,
		0xa2, 0x73, 0x5e, 0x6b, 0x2f, 0x6c, 0xc4, 0x6f, 0x8a, 0xc8, 0xc2, 0x5d, 0xb0, 0x9d, 0x78, 0xd4,
		0x7e, 0x12, 0x51, 0xd6, 0x23, 0x61, 0xf0, 0xa3, 0xf6, 0x61, 0x2b, 0x81, 0xad, 0x04, 0xb6, 0x12,
		0xd8, 0x4a, 0xb8, 0xed, 0xf6, 0xc4, 0x16, 0x2b, 0x44, 0xc0, 0xc0, 0x5e, 0xb2, 0xa9, 0xbd, 0xe4,
		0xe6, 0xfe, 0xcf, 0x8b, 0x5b, 0xe1, 0xa6, 0x92, 0xbb, 0xfb, 0xf6, 0x7d, 0xe7, 0x4c, 0xb8, 0x9d,
		0xe4, 0xfc, 0xef, 0xeb, 0xf6, 0x55, 0xe7, 0x0c, 0xd6, 0x85, 0x45, 0xeb, 0xc2, 0xf8, 0xbd, 0x70,
		0xbb, 0x90, 0xb6, 0xb2, 0x97, 0xd1, 0x56, 0x12, 0x6b, 0x5a, 0x18, 0x6f, 0xa4, 0x96, 0x56, 0xdb,
		0x4d, 0x3e, 0x8e, 0x4c, 0x0c, 0x5b, 0xb5, 0x2b, 0x35, 0x13, 0xc3, 0xc8, 0xab, 0x58, 0x94, 0x9b,
		0xbb, 0xb9, 0x66, 0x8d, 0xff, 0x37, 0x79, 0xe5, 0x72, 0xb3, 0xae, 0x72, 0x69, 0x07, 0xac, 0xcd,
		0x18, 0xa7, 0x1c, 0xf4, 0x57, 0xb6, 0x7b, 0xe1, 0x90, 0x08, 0xd9, 0x71, 0xaa, 0x48, 0x57, 0xb9,
		0x32, 0x5e, 0x66, 0x5a, 0xac, 0x9d, 0x34, 0x1a, 0xcd, 0xe3, 0x46, 0xa3, 0x7a, 0x7c, 0x78, 0x5c,
		0x3d, 0x3d, 0x3a, 0xaa, 0x35, 0x6b, 0x1c, 0xea, 0xea, 0x55, 0x6e, 0xa8, 0x45, 0x28, 0xb1, 0x3e,
		0x46, 0xef, 0xd4, 0x0d, 0x1d, 0x87, 0x67, 0x93, 0x9f, 0x83, 0x38, 0x9c, 0x3c, 0x7b, 0x09, 0xbd,
		0xa2, 0x15, 0x85, 0x92, 0x79, 0xf4, 0x2b, 0x5c, 0xae, 0xc9, 0xd3, 0xd0, 0x64, 0xee, 0x18, 0x1e,
		0x77, 0x26, 0x5d, 0x3e, 0xdc, 0xcd, 0xf4, 0xff, 0xd0, 0xf1, 0x87, 0xcd, 0x87, 0x89, 0x55, 0xa8,
		0x82, 0xda, 0x56, 0xc5, 0xda, 0x0f, 0x45, 0x2e, 0x6f, 0x35, 0xba, 0xd5, 0xa1, 0x1b, 0xd6, 0x90,
		0x50, 0x66, 0x07, 0x64, 0x4c, 0x6f, 0x33, 0x56, 0xba, 0x5a, 0xd9, 0x2a, 0x8a, 0x5e, 0xa1, 0xe8,
		0x55, 0x2e, 0xb6, 0x16, 0xc5, 0x8a, 0x5e, 0x71, 0xaa, 0x88, 0xc3, 0xb7, 0x12, 0x0e, 0x0a, 0x5e,
		0xe5, 0x70, 0x4c, 0x85, 0x1d, 0x57, 0x61, 0xc7, 0x56, 0xc4, 0xf1, 0x2d, 0x06, 0x75, 0xe1, 0x56,
		0xf0, 0x8a, 0xb8, 0x5c, 0x7d, 0xdc, 0x33, 0x51, 0x66, 0x71, 0xbb, 0xbc, 0x32, 0xb5, 0x90, 0xbe,
		0x11, 0x3a, 0x8c, 0xab, 0xaf, 0xbc, 0x12, 0xed, 0x2f, 0x3e, 0x44, 0xb8, 0x87, 0xac, 0x7d, 0x85,
		0x91, 0x76, 0xa2, 0xa4, 0x9e, 0x70, 0xe9, 0x27, 0x5c, 0x0a, 0x8a, 0x94, 0x86, 0xc5, 0x34, 0xd8,
		0x89, 0xcb, 0xda, 0xc7, 0xff, 0x9a, 0x28, 0xe7, 0xeb, 0xa1, 0x45, 0xb7, 0x79, 0x0a, 0x4f, 0x0b,
		0x5c, 0x90, 0x2c, 0xb1, 0x11, 0x09, 0x1f, 0x1a, 0x8e, 0x80, 0x5c, 0xb1, 0x93, 0x96, 0xa1, 0x7b,
		0xa0, 0x7b, 0xa0, 0x7b, 0x76, 0x48, 0xf7, 0x84, 0xb6, 0xcb, 0x0e, 0xeb, 0x02, 0x54, 0x0f, 0xcf,
		0x7c, 0xb1, 0xb7, 0x86, 0xfb, 0xc4, 0x3f, 0xb6, 0x55, 0x40, 0xa8, 0xc7, 0x95, 0xed, 0x8a, 0x0b,
		0x91, 0xf8, 0x62, 0x38, 0x21, 0x11, 0xe7, 0x6c, 0xae, 0x7c, 0xa2, 0x46, 0x1c, 0x4b, 0x79, 0x6e,
		0x3f, 0xd9, 0xbc, 0xbc, 0x45, 0xab, 0xf7, 0x1e, 0x79, 0x32, 0x98, 0x3d, 0x24, 0x5c, 0x9c, 0x30,
		0x02, 0x8f, 0xdd, 0xfc, 0xd2, 0x1a, 0x2f, 0xe2, 0x97, 0xb6, 0x51, 0x3f, 0x6d, 0x9c, 0x36, 0x8f,
		0xeb, 0xa7, 0x47, 0x58, 0x63, 0x29, 0x02, 0x9a, 0x7f, 0x6b, 0x3d, 0x20, 0xee, 0xf2, 0x20, 0x6e,
		0xc7, 0xee, 0x13, 0x66, 0x0f, 0x04, 0x98, 0xb4, 0x92, 0x96, 0x81, 0xb8, 0x81, 0xb8, 0x81, 0xb8,
		0x81, 0xb8, 0x81, 0xb8, 0x81, 0xb8, 0x81, 0xb8, 0x81, 0xb8, 0x81, 0xb8, 0x81, 0xb8, 0x77, 0x18,
		0x71, 0x0f, 0x0c, 0xd7, 0x78, 0x22, 0x16, 0x7f, 0xc0, 0x3d, 0x69, 0xb8, 0xc8, 0x4e, 0xe4, 0xf8,
		0xdc, 0xc2, 0x8b, 0x0c, 0x5e, 0x01, 0x5e, 0x01, 0x5e, 0xb1, 0xed, 0x6e, 0xdd, 0x19, 0x2f, 0xb2,
		0xc0, 0x8c, 0x1a, 0x02, 0x33, 0x69, 0x08, 0xbc, 0x58, 0x7a, 0xfb, 0xe9, 0xec, 0x37, 0xc9, 0x13,
		0x86, 0xcd, 0xf7, 0x5a, 0x30, 0xce, 0x94, 0xd0, 0x10, 0x92, 0x23, 0x43, 0xe6, 0x95, 0x6b, 0xd1,
		0x39, 0x31, 0xf2, 0xb9, 0x75, 0xbd, 0xfd, 0x2a, 0x02, 0xe1, 0x03, 0xe1, 0x2b, 0x88, 0xf0, 0x3d,
		0x4b, 0x80, 0x3d, 0x3d, 0x6e, 0xb5, 0xc8, 0xd8, 0xbe, 0x7d, 0x79, 0x09, 0x64, 0x0f, 0x64, 0x0f,
		0x64, 0x0f, 0x64, 0xbf, 0xed, 0x6e, 0x15, 0x93, 0x64, 0x55, 0x44, 0xb2, 0x10, 0x31, 0x49, 0x42,
		0xc4, 0x26, 0x07, 0x19, 0x25, 0x05, 0x89, 0xc4, 0xb3, 0x00, 0x54, 0x1c, 0xa7, 0x02, 0x39, 0xef,
		0xdc, 0xb5, 0x3f, 0x5e, 0x5e, 0x3c, 0x7c, 0xbe, 0xbe, 0xbb, 0xb9, 0xec, 0x9c, 0x75, 0xee, 0x2f,
		0xce, 0x1f, 0x6e, 0xdb, 0x95, 0x62, 0xa7, 0xc3, 0x11, 0x96, 0xa2, 0x23, 0x7e, 0xd5, 0x42, 0xcc,
		0xe0, 0xeb, 0x5e, 0x34, 0xef, 0xd4, 0x19, 0x65, 0x4d, 0x49, 0x01, 0x62, 0xbd, 0x35, 0xb1, 0x5e,
		0xca, 0x4a, 0x08, 0x6a, 0xad, 0x24, 0xb5, 0x5e, 0x5e, 0x47, 0x90, 0x6b, 0x90, 0x6b, 0xf5, 0xc8,
		0xb5, 0xc7, 0x9e, 0x09, 0xd5, 0x39, 0x5d, 0xb3, 0x5e, 0xa6, 0x4d, 0xb3, 0xad, 0xc3, 0x91, 0x06,
		0xba, 0x0d, 0xba, 0x0d, 0xba, 0x5d, 0x3a, 0xba, 0x0d, 0x47, 0x1a, 0xf0, 0x3e, 0x1c, 0x69, 0x65,
		0x46, 0xfb, 0x70, 0xa4, 0x01, 0xeb, 0xab, 0x8f, 0xf5, 0x83, 0xd0, 0xf7, 0xb9, 0x16, 0x43, 0x4e,
		0xe4, 0x60, 0xd2, 0x32, 0x30, 0x3e, 0x30, 0x3e, 0x30, 0x3e, 0x30, 0x3e, 0x30, 0x3e, 0x30, 0xfe,
		0x0a, 0x05, 0xc4, 0x0c, 0x16, 0x06, 0x2a, 0x01, 0x7c, 0x8b, 0xf8, 0x94, 0x98, 0x06, 0xe3, 0x16,
		0x07, 0x9e, 0x17, 0x72, 0x1f, 0xbf, 0xfa, 0x32, 0xc1, 0xf6, 0x99, 0xb5, 0x01, 0x1e, 0x07, 0x1e,
		0x97, 0x8c, 0xc7, 0x91, 0x08, 0x7c, 0xa3, 0xc4, 0xcf, 0xab, 0xb2, 0x1f, 0x1f, 0x8c, 0x1d, 0x02,
		0x79, 0xe5, 0xe6, 0xce, 0x90, 0x73, 0x78, 0x04, 0x00, 0x49, 0xc0, 0x2f, 0x23, 0x6d, 0xd2, 0x22,
		0x72, 0xd2, 0x4a, 0xa3, 0x0c, 0xc8, 0x49, 0x8b, 0x9c, 0xb4, 0xbf, 0x39, 0xe2, 0xfc, 0x6d, 0x24,
		0x7c, 0x37, 0x06, 0x9f, 0xe3, 0x0e, 0xcb, 0x01, 0x2c, 0x07, 0xb0, 0x1c, 0xf0, 0x14, 0x1f, 0x49,
		0x83, 0x9c, 0x43, 0x2a, 0x96, 0x0e, 0x01, 0xd7, 0xa0, 0x0a, 0x41, 0x62, 0x45, 0x98, 0x78, 0x11,
		0x29, 0x66, 0x84, 0x8b, 0x9b, 0x3c, 0xe8, 0x3f, 0x8a, 0x8e, 0xe6, 0xc4, 0xfc, 0x39, 0xef, 0x77,
		0xde, 0x62, 0x2a, 0x69, 0xd8, 0xb2, 0x03, 0xe3, 0xd1, 0x21, 0x9c, 0x8a, 0xdf, 0x6c, 0x6e, 0x5f,
		0x5b, 0xd9, 0xad, 0xa0, 0xdd, 0x23, 0xa6, 0xa2, 0xb2, 0x70, 0x21, 0x27, 0x43, 0xd8, 0x49, 0x13,
		0x7a, 0xb2, 0x84, 0x9f, 0x74, 0x21, 0x28, 0x5d, 0x18, 0xca, 0x14, 0x8a, 0x62, 0x84, 0xa3, 0x20,
		0x21, 0x99, 0xbc, 0x18, 0x61, 0x15, 0x9a, 0x97, 0x4e, 0x0b, 0x7f, 0xef, 0xd0, 0x5a, 0x64, 0x56,
		0x53, 0x6a, 0x09, 0x04, 0x59, 0x88, 0x97, 0xfa, 0x11, 0x6e, 0x31, 0x16, 0x7f, 0x12, 0x44, 0x64,
		0x44, 0x4b, 0xd4, 0x6b, 0xc8, 0xbc, 0x11, 0x61, 0x08, 0xa9, 0xd8, 0xd5, 0x58, 0xd6, 0xec, 0x4b,
		0x5d, 0x43, 0xbb, 0x43, 0xbb, 0x43, 0xbb, 0x43, 0xbb, 0x43, 0xbb, 0xab, 0xae, 0xdd, 0x05, 0xc6,
		0x8a, 0x2c, 0xf5, 0x25, 0x2e, 0x3e, 0x7c, 0xf1, 0x47, 0xac, 0xc8, 0xd2, 0xb2, 0xc4, 0x8f, 0x37,
		0x3f, 0xd4, 0x04, 0x0b, 0x38, 0x99, 0xd2, 0x7b, 0x95, 0x14, 0x17, 0x1d, 0x61, 0x9e, 0xbb, 0x40,
		0x5f, 0x29, 0xd8, 0xd3, 0xec, 0x03, 0xe1, 0xa3, 0x7c, 0x7b, 0xa7, 0x66, 0xeb, 0x3d, 0x30, 0x24,
		0x30, 0xa4, 0x8d, 0x55, 0x58, 0x5c, 0x29, 0x54, 0xf7, 0x5c, 0xc7, 0x76, 0xbf, 0x8b, 0x67, 0x45,
		0xf3, 0xdd, 0x81, 0x09, 0x81, 0x09, 0x81, 0x09, 0x81, 0x09, 0x81, 0x09, 0x81, 0x09, 0x81, 0x09,
		0x81, 0x09, 0x81, 0x09, 0x81, 0x09, 0x81, 0x09, 0x81, 0x09, 0xe5, 0xc2, 0x84, 0xfc, 0x58, 0xe0,
		0xd0, 0xe8, 0x6d, 0xf0, 0x2e, 0x62, 0xb7, 0x56, 0xea, 0xaf, 0xe8, 0x13, 0x9c, 0x08, 0x9c, 0x08,
		0x9c, 0x08, 0x9c, 0x48, 0x19, 0x4e, 0xc4, 0xbd, 0x3c, 0xdf, 0x3a, 0xd9, 0x75, 0x2c, 0xb0, 0x0b,
		0x31, 0xe5, 0xfb, 0x72, 0xe0, 0x13, 0x22, 0xcb, 0xfb, 0x2d, 0x75, 0x26, 0xb8, 0xdc, 0xdf, 0x52,
		0x7f, 0xb2, 0x4a, 0xc3, 0x2d, 0xef, 0x75, 0xd1, 0xa5, 0xe2, 0x24, 0x89, 0x85, 0xf9, 0xad, 0x62,
		0xbc, 0xc8, 0xdf, 0x2a, 0xa2, 0xcb, 0x07, 0xee, 0xf2, 0x9e, 0x01, 0x4b, 0x83, 0xa5, 0xab, 0x8c,
		0x96, 0xae, 0x3a, 0x2c, 0x5d, 0xb0, 0x74, 0xc5, 0xfb, 0x00, 0x32, 0x14, 0x96, 0x2e, 0x58, 0xba,
		0x78, 0x58, 0xba, 0x04, 0xda, 0x52, 0xc4, 0xdc, 0xf8, 0x86, 0x45, 0x0b, 0x16, 0x2d, 0x58, 0xb4,
		0x60, 0xd1, 0x92, 0x70, 0x5a, 0x6c, 0x7f, 0xd8, 0xd4, 0x85, 0x6f, 0xaf, 0xc4, 0xd3, 0x7f, 0x22,
		0xb0, 0x8f, 0xae, 0xc1, 0x18, 0xa1, 0xae, 0x70, 0xfe, 0x50, 0xd9, 0xdb, 0xfb, 0x5a, 0xd5, 0x4f,
		0x0d, 0xbd, 0xdf, 0xd6, 0x3f, 0xf5, 0xfe, 0xa9, 0xbd, 0x6f, 0xbc, 0xb5, 0xf6, 0xff, 0x39, 0x7e,
		0x5b, 0xfc, 0xf0, 0xe7, 0xaa, 0xaf, 0xd5, 0xde, 0x1f, 0xbf, 0xb5, 0xd6, 0xfc, 0xa5, 0xf9, 0xd6,
		0xda, 0xb0, 0x8d, 0xa3, 0xb7, 0xbd, 0xa5, 0xaf, 0x46, 0x9f, 0xd7, 0xd7, 0x3d, 0xd0, 0x58, 0xf3,
		0xc0, 0xe1, 0xba, 0x07, 0x0e, 0xd7, 0x3c, 0xb0, 0x76, 0x48, 0xf5, 0x35, 0x0f, 0x1c, 0xbd, 0xfd,
		0x5c, 0xfa, 0xfe, 0xde, 0xea, 0xaf, 0x36, 0xdf, 0xf6, 0x7f, 0xae, 0xfb, 0xdb, 0xf1, 0xdb, 0xcf,
		0xd6, 0xfe, 0xfe, 0xc1, 0x5e, 0xad, 0xfe, 0xb5, 0xaa, 0x9f, 0xf4, 0x7e, 0xd6, 0xbe, 0x56, 0xf5,
		0x5a, 0x2f, 0xfa, 0x66, 0xef, 0xe7, 0xd7, 0x9a, 0x7e, 0x3a, 0xf9, 0x35, 0xfa, 0xef, 0xbe, 0x38,
		0x31, 0xd2, 0x13, 0xb9, 0x7f, 0x6f, 0xee, 0x3a, 0x7f, 0x49, 0xdb, 0xc4, 0xff, 0xc5, 0x2e, 0x2e,
		0xf8, 0x2e, 0xfe, 0x57, 0x05, 0x14, 0x0a, 0x14, 0x2a, 0x7f, 0x0a, 0x35, 0x34, 0x1c, 0x5b, 0x66,
		0xa0, 0xc0, 0x42, 0x7f, 0xa0, 0x54, 0xa0, 0x54, 0xa0, 0x54, 0xa0, 0x54, 0xca, 0x50, 0x2a, 0x04,
		0x09, 0x6c, 0xfc, 0x83, 0x20, 0x81, 0x6c, 0xfd, 0x21, 0x48, 0x80, 0xeb, 0x56, 0x41, 0x90, 0x40,
		0xb9, 0xf6, 0x0c, 0x1c, 0x5c, 0x12, 0x14, 0x2b, 0x82, 0x04, 0x32, 0xe2, 0x05, 0x04, 0x09, 0x68,
		0x08, 0x12, 0x40, 0x90, 0x00, 0x2c, 0x5c, 0xb0, 0x70, 0x49, 0x6f, 0x91, 0x77, 0xce, 0x56, 0xc1,
		0x0b, 0x29, 0xbb, 0x78, 0xc7, 0xa4, 0x60, 0xc5, 0xf8, 0x17, 0x2e, 0xc5, 0x3c, 0xc4, 0x2d, 0x28,
		0xc7, 0xc5, 0x14, 0x15, 0x37, 0x22, 0x36, 0x5e, 0x44, 0x90, 0x51, 0x13, 0x29, 0xbd, 0xf3, 0x00,
		0x48, 0x48, 0xe9, 0x5d, 0x3e, 0xf5, 0x20, 0xcc, 0x08, 0x99, 0xec, 0xf6, 0x48, 0x9d, 0x53, 0xd2,
		0x17, 0xb1, 0xdf, 0x27, 0x31, 0x1c, 0x02, 0xcc, 0x8e, 0x95, 0xee, 0x58, 0xa3, 0x7d, 0xf8, 0x30,
		0xd6, 0x31, 0x63, 0x8d, 0xb3, 0x0b, 0xaa, 0x26, 0x60, 0x06, 0x23, 0xe2, 0x34, 0xcd, 0xa8, 0x79,
		0xc5, 0x6a, 0x47, 0xd4, 0xa1, 0x68, 0xa0, 0x68, 0xa0, 0x68, 0x52, 0xbf, 0x00, 0xd4, 0x8e, 0x28,
		0x1c, 0x8a, 0x16, 0x8e, 0xa6, 0x65, 0x08, 0x3b, 0x69, 0x42, 0x4f, 0x96, 0xf0, 0x93, 0x2e, 0x04,
		0xa5, 0x0b, 0x43, 0x99, 0x42, 0x51, 0x9c, 0xd9, 0x47, 0x43, 0x4e, 0xb5, 0xed, 0x90, 0x59, 0x0d,
		0xa5, 0x10, 0x50, 0x0a, 0x01, 0xca, 0x0a, 0xca, 0x0a, 0xca, 0x0a, 0xca, 0x6a, 0x47, 0x95, 0x15,
		0x22, 0x1e, 0xb6, 0xf8, 0x41, 0x02, 0x50, 0x44, 0x3c, 0x48, 0xe8, 0x18, 0x09, 0x40, 0x05, 0xfd,
		0xf4, 0x90, 0xd9, 0x1f, 0x99, 0xfd, 0x01, 0xec, 0x01, 0xec, 0x01, 0xec, 0x01, 0xec, 0x01, 0xec,
		0x01, 0xec, 0x01, 0xec, 0x01, 0xec, 0x01, 0xec, 0x01, 0xec, 0x55, 0x06, 0xf6, 0x48, 0x54, 0x0f,
		0x88, 0x0f, 0x88, 0x0f, 0x88, 0x0f, 0x88, 0xbf, 0xdd, 0x69, 0xc1, 0x1d, 0xf4, 0x22, 0xc1, 0x63,
		0xdc, 0x41, 0x17, 0xb2, 0xd7, 0x71, 0x07, 0x9d, 0xd3, 0x56, 0xc1, 0x1d, 0x74, 0x90, 0x0e, 0x39,
		0xa4, 0x03, 0x86, 0x9b, 0xb2, 0x18, 0x6e, 0x70, 0x07, 0x1d, 0x86, 0x1b, 0xdc, 0x41, 0x87, 0xe1,
		0xe6, 0x17, 0x86, 0x1b, 0xe4, 0x5d, 0x87, 0x81, 0x06, 0x06, 0x1a, 0x18, 0x68, 0x60, 0xa0, 0x59,
		0x3e, 0x2d, 0xc8, 0xbb, 0xbe, 0x7d, 0x47, 0xc8, 0x58, 0x8d, 0xbc, 0xeb, 0x22, 0xf6, 0x2f, 0xf2,
		0xae, 0x63, 0x17, 0x2b, 0x9d, 0x77, 0x1d, 0x69, 0xc4, 0x57, 0x68, 0x58, 0xa4, 0x11, 0x07, 0x43,
		0x00, 0x43, 0x00, 0x43, 0x50, 0x95, 0x21, 0xc0, 0x85, 0xbb, 0xf1, 0x0f, 0x5c, 0xb8, 0xd9, 0xfa,
		0x83, 0x0b, 0x97, 0xeb, 0x56, 0x81, 0x0b, 0xb7, 0x5c, 0x7b, 0x06, 0xee, 0x07, 0x09, 0x8a, 0x15,
		0x2e, 0xdc, 0x8c, 0x78, 0x01, 0x2e, 0x5c, 0x0d, 0x2e, 0x5c, 0xb8, 0x70, 0x77, 0xd4, 0x60, 0x83,
		0xac, 0xd8, 0xf9, 0x65, 0xc5, 0x1e, 0x65, 0xd8, 0x2c, 0x6a, 0xa6, 0xd2, 0x77, 0x05, 0xda, 0x11,
		0x91, 0x74, 0xe6, 0x6e, 0x35, 0xa9, 0x5c, 0xda, 0x01, 0x6b, 0x33, 0xc6, 0x37, 0xe3, 0x61, 0xc4,
		0xf8, 0x2e, 0x9c, 0x78, 0xc1, 0x39, 0xa3, 0xdb, 0x88, 0x20, 0xcc, 0xb4, 0x5c, 0x3b, 0x69, 0x34,
		0x9a, 0xc7, 0x8d, 0x46, 0xf5, 0xf8, 0xf0, 0xb8, 0x7a, 0x7a, 0x74, 0x54, 0x6b, 0xd6, 0x38, 0x62,
		0xf8, 0xca, 0x0d, 0xb5, 0x08, 0x25, 0xd6, 0xc7, 0xe8, 0xbd, 0xbb, 0xa1, 0xe3, 0x88, 0x68, 0xfa,
		0x73, 0x40, 0x28, 0x57, 0x38, 0xce, 0x6b, 0xbb, 0x09, 0x12, 0x3c, 0x39, 0x0b, 0x9c, 0x0a, 0xd7,
		0xe4, 0xc3, 0x34, 0x34, 0x99, 0x3b, 0xc6, 0x90, 0x9d, 0xc9, 0x60, 0x1e, 0xee, 0x66, 0x46, 0xf6,
		0xd0, 0xf1, 0x87, 0xcd, 0x87, 0xdb, 0x78, 0x64, 0xed, 0xd9, 0x81, 0x3d, 0x74, 0x39, 0x26, 0x69,
		0xce, 0x2e, 0xa8, 0xb2, 0xb5, 0x90, 0x71, 0xcf, 0xf1, 0xde, 0x6b, 0x79, 0xed, 0xb1, 0x6c, 0x8b,
		0x99, 0x7e, 0x09, 0x32, 0xbc, 0x7e, 0x4e, 0x19, 0xb4, 0xb9, 0x66, 0xcc, 0xe6, 0x94, 0x21, 0x9b,
		0x5b, 0x46, 0x6c, 0x9e, 0x8e, 0x1e, 0xee, 0x0e, 0x1d, 0xde, 0x24, 0x51, 0x98, 0x83, 0x46, 0x18,
		0xc3, 0x13, 0xe1, 0x70, 0xc9, 0x57, 0x1c, 0xf2, 0xca, 0x40, 0x3d, 0x4e, 0xb6, 0xc3, 0x6f, 0x6f,
		0xcc, 0x27, 0xf1, 0xe1, 0xb5, 0x31, 0xce, 0x49, 0xdf, 0x08, 0x1d, 0xc6, 0xd5, 0xa0, 0x54, 0x89,
		0xf6, 0x17, 0x1f, 0xe5, 0xda, 0xe3, 0x85, 0xdf, 0xb9, 0xba, 0xbb, 0xb9, 0xbb, 0xb7, 0x45, 0xb8,
		0xb3, 0x85, 0xb9, 0xaf, 0x45, 0x99, 0xc6, 0x84, 0xbb, 0xa7, 0x85, 0xdb, 0xb9, 0x44, 0xba, 0x9f,
		0x8b, 0xc5, 0x87, 0xb9, 0xbb, 0x93, 0x05, 0x26, 0xf9, 0xe1, 0x9c, 0xd4, 0x87, 0x03, 0xde, 0xe7,
		0x80, 0x3c, 0x62, 0x68, 0x3c, 0x34, 0x1c, 0xfe, 0xfa, 0x25, 0x69, 0x19, 0xa2, 0x17, 0xa2, 0x17,
		0xa2, 0x77, 0x87, 0x44, 0x2f, 0xf7, 0xc8, 0x1d, 0x01, 0x91, 0x3a, 0x82, 0x22, 0x73, 0x04, 0x18,
		0xf7, 0x45, 0x46, 0xde, 0x88, 0x8e, 0xb4, 0x91, 0x16, 0x25, 0x21, 0x3e, 0x2a, 0x42, 0x44, 0x48,
		0xb0, 0xc8, 0x48, 0x19, 0x69, 0x91, 0x31, 0x65, 0x5a, 0xe3, 0x82, 0xfa, 0xb0, 0x7a, 0x25, 0x02,
		0x9c, 0xdc, 0x03, 0xe0, 0xa7, 0xa5, 0x1f, 0xf9, 0x86, 0xba, 0x03, 0x70, 0x02, 0x70, 0x02, 0x70,
		0x02, 0x70, 0x02, 0x70, 0x02, 0x70, 0x02, 0x70, 0x02, 0x70, 0x02, 0x70, 0xaa, 0x09, 0x38, 0x07,
		0x86, 0x6b, 0x3c, 0x11, 0x8b, 0x3f, 0xde, 0x9c, 0x34, 0x5c, 0x64, 0x0f, 0x5a, 0xbc, 0x6d, 0xe1,
		0x42, 0x03, 0xac, 0x06, 0xac, 0x06, 0xac, 0xde, 0x76, 0xb7, 0x16, 0xdf, 0x85, 0xc6, 0xe9, 0x15,
		0x0a, 0xbc, 0x7b, 0x23, 0xf0, 0xae, 0x8d, 0xc0, 0x52, 0xfe, 0xdb, 0xde, 0xa1, 0xa8, 0x2b, 0x5e,
		0xf6, 0x5f, 0xf4, 0x4d, 0x99, 0x7c, 0x2a, 0xff, 0x6f, 0xbf, 0x8a, 0x00, 0xb8, 0x2a, 0x02, 0x5c,
		0xcf, 0x12, 0x60, 0x4d, 0x8d, 0x5b, 0x2d, 0x32, 0xb4, 0x6d, 0x5f, 0x5e, 0x02, 0xd8, 0x02, 0xd8,
		0x02, 0xd8, 0x02, 0xd8, 0x6e, 0xbb, 0x5b, 0x89, 0x1b, 0x0e, 0x08, 0xf7, 0xb2, 0xf4, 0x09, 0xb8,
		0x6d, 0x70, 0x6c, 0xf3, 0xc2, 0x0d, 0x07, 0xfc, 0x4f, 0xc1, 0xbd, 0x77, 0xc7, 0xa8, 0xed, 0x3e,
		0x89, 0xb9, 0x8e, 0x58, 0x8d, 0xde, 0x71, 0x24, 0x9e, 0x05, 0x80, 0xc2, 0x5a, 0xd4, 0xf6, 0x79,
		0xe7, 0xae, 0xfd, 0xf1, 0xf2, 0xe2, 0xe1, 0xf3, 0xf5, 0xdd, 0xcd, 0x65, 0xe7, 0xac, 0x73, 0x7f,
		0x71, 0xfe, 0x70, 0xdb, 0xae, 0x14, 0xfa, 0x0e, 0xe8, 0xbd, 0xd7, 0x89, 0xcf, 0xac, 0x80, 0xf7,
		0x1d, 0xbd, 0x6a, 0x21, 0x46, 0xd0, 0x75, 0x2f, 0xba, 0xa5, 0xd5, 0x70, 0xdb, 0x13, 0xbc, 0x52,
		0x04, 0xaf, 0xd4, 0x86, 0x84, 0x06, 0x11, 0x1d, 0x69, 0x6a, 0x7b, 0x11, 0x3f, 0xd9, 0x07, 0xb3,
		0x54, 0x92, 0x59, 0x2e, 0xaf, 0x23, 0xb8, 0xa5, 0x82, 0xdc, 0xd2, 0x63, 0xcf, 0x84, 0xea, 0xe6,
		0x84, 0x8a, 0x70, 0xe6, 0x98, 0x73, 0xad, 0xc3, 0x8d, 0x02, 0xb6, 0x09, 0xb6, 0x09, 0xb6, 0x59,
		0x3a, 0xb6, 0x09, 0x37, 0x0a, 0xe0, 0x2e, 0xdc, 0x28, 0x65, 0x06, 0xbb, 0x70, 0xa3, 0x94, 0x00,
		0xea, 0x06, 0xa1, 0xef, 0x53, 0x12, 0x04, 0xfc, 0x61, 0x6e, 0xd2, 0x32, 0x20, 0x2e, 0x20, 0x2e,
		0x20, 0x2e, 0x20, 0x2e, 0x20, 0x2e, 0x20, 0xee, 0x0a, 0x05, 0xc4, 0x0c, 0x16, 0x06, 0x2a, 0xe1,
		0x5b, 0x8b, 0xf8, 0x94, 0x98, 0x06, 0xe3, 0x16, 0x04, 0x9b, 0x17, 0x70, 0x1d, 0xbf, 0xfa, 0x32,
		0xa1, 0xd6, 0x99, 0xb5, 0x01, 0x1c, 0x95, 0x0d, 0x47, 0x91, 0x88, 0x2f, 0x7d, 0x22, 0x3e, 0x0e,
		0xd9, 0x64, 0x33, 0x64, 0xe1, 0x7b, 0x27, 0x71, 0xc5, 0x78, 0xad, 0x94, 0xe4, 0x15, 0xaa, 0x64,
		0xca, 0x54, 0x98, 0x21, 0xdd, 0x66, 0xba, 0x4d, 0xb1, 0xfd, 0x92, 0xa6, 0x58, 0xce, 0x8c, 0x29,
		0x18, 0xb9, 0xa4, 0x5e, 0xcc, 0x98, 0x72, 0x31, 0x73, 0xaa, 0x45, 0x1e, 0x7c, 0x88, 0x1b, 0xff,
		0xe1, 0x85, 0x1e, 0xb8, 0xf3, 0x1b, 0xee, 0x68, 0x80, 0x27, 0x7f, 0x91, 0x2b, 0xfe, 0xb2, 0xa6,
		0x48, 0xac, 0x98, 0x5e, 0x18, 0x09, 0x8d, 0x80, 0x5f, 0xea, 0xd3, 0xa4, 0xc5, 0x82, 0x65, 0x3f,
		0xad, 0x22, 0xfb, 0x69, 0xfe, 0x26, 0x09, 0x64, 0x3f, 0x95, 0x76, 0xb4, 0x93, 0x86, 0x6c, 0x57,
		0xb7, 0xec, 0xc0, 0x34, 0xa8, 0x45, 0x2c, 0xdd, 0xff, 0xce, 0x02, 0x11, 0x89, 0xea, 0x16, 0xbb,
		0x80, 0xfd, 0x12, 0xf6, 0x4b, 0xd8, 0x2f, 0x77, 0xc8, 0x7e, 0x39, 0x56, 0xfb, 0xcd, 0x86, 0x00,
		0x0b, 0xe6, 0x09, 0x72, 0x88, 0x70, 0x6e, 0x1c, 0x39, 0x44, 0x24, 0x9f, 0xbc, 0xf9, 0xa5, 0x95,
		0x91, 0x43, 0x44, 0x6c, 0x51, 0x98, 0xb2, 0xae, 0x76, 0xb9, 0xcd, 0xb2, 0x88, 0x52, 0xe2, 0xbc,
		0x1f, 0xa7, 0x51, 0x4a, 0x5a, 0xa3, 0x7e, 0x7a, 0xa8, 0xe9, 0xda, 0x55, 0x9c, 0xd2, 0x24, 0x02,
		0x13, 0x5a, 0xc7, 0xed, 0x7b, 0x74, 0x10, 0x1b, 0x27, 0xb5, 0x8f, 0x46, 0x40, 0xe2, 0x50, 0x17,
		0xf6, 0x4c, 0xbe, 0xb9, 0xb1, 0xd5, 0xce, 0x25, 0x4c, 0xeb, 0x52, 0x8f, 0x79, 0xa6, 0xe7, 0x68,
		0x7b, 0x9d, 0x2e, 0xe2, 0xf4, 0x73, 0x86, 0x81, 0x2b, 0xe1, 0x20, 0xa7, 0xa5, 0x85, 0xa4, 0x92,
		0x3c, 0x1e, 0x3e, 0x99, 0xdd, 0x75, 0x42, 0xa9, 0x47, 0xc5, 0xb1, 0xe6, 0x99, 0xe6, 0xc1, 0x98,
		0xc1, 0x98, 0xc1, 0x98, 0xc1, 0x98, 0xc1, 0x98, 0xc1, 0x98, 0xc1, 0x98, 0xc1, 0x98, 0xc1, 0x98,
		0xc1, 0x98, 0xc1, 0x98, 0xc1, 0x98, 0xc1, 0x98, 0x21, 0xa9, 0x54, 0x62, 0xcc, 0x7d, 0x8f, 0xfe,
		0x18, 0x39, 0x82, 0x3d, 0x93, 0x11, 0x41, 0xbc, 0x79, 0xa9, 0x13, 0xb0, 0x67, 0xb0, 0x67, 0xb0,
		0x67, 0xb0, 0x67, 0xb0, 0x67, 0xb0, 0x67, 0xb0, 0x67, 0xb0, 0x67, 0xb0, 0x67, 0xb0, 0x67, 0xb0,
		0x67, 0xb0, 0x67, 0xb0, 0x67, 0x48, 0x2a, 0x35, 0xd9, 0xb3, 0x30, 0x9f, 0xf3, 0x42, 0x17, 0x60,
		0xce, 0x60, 0xce, 0x60, 0xce, 0x60, 0xce, 0x60, 0xce, 0x60, 0xce, 0x60, 0xce, 0x60, 0xce, 0x60,
		0xce, 0x60, 0xce, 0x60, 0xce, 0x60, 0xce, 0x60, 0xce, 0x90, 0x54, 0x2a, 0x31, 0xe7, 0x41, 0xe8,
		0x30, 0xdb, 0x34, 0x02, 0x26, 0xd2, 0xef, 0xbc, 0xd4, 0x09, 0xd8, 0x33, 0xd8, 0x33, 0xd8, 0x33,
		0xd8, 0x33, 0xd8, 0x33, 0xd8, 0x33, 0xd8, 0x33, 0xd8, 0x33, 0xd8, 0x33, 0xd8, 0x73, 0xf9, 0xd9,
		0x73, 0x6b, 0x13, 0x86, 0xa5, 0x4d, 0x08, 0xd6, 0x37, 0x77, 0x8e, 0x61, 0x69, 0xba, 0x66, 0xfb,
		0x77, 0xaf, 0x01, 0x23, 0x83, 0x3b, 0x66, 0xb0, 0xe0, 0xcf, 0xb3, 0x8e, 0x7b, 0x15, 0x61, 0xea,
		0x1b, 0x9e, 0x90, 0x1a, 0xdc, 0x5a, 0x04, 0xb7, 0x16, 0xba, 0xf0, 0x90, 0x72, 0xaa, 0x33, 0x6f,
		0x61, 0x3e, 0xeb, 0x85, 0x2e, 0xc0, 0xba, 0xc1, 0xba, 0xc1, 0xba, 0xc1, 0xba, 0xc1, 0xba, 0xc1,
		0xba, 0xc1, 0xba, 0xc1, 0xba, 0xc1, 0xba, 0xc1, 0xba, 0xc1, 0xba, 0xd3, 0x91, 0xaf, 0xee, 0x77,
		0x70, 0xee, 0x1d, 0xe4, 0xdc, 0xf1, 0xb2, 0x43, 0xc2, 0xa9, 0xc9, 0xb8, 0x05, 0x7a, 0xb8, 0xe1,
		0xd7, 0x06, 0xc3, 0x06, 0xc3, 0x06, 0xc3, 0x06, 0xc3, 0x06, 0xc3, 0x06, 0xc3, 0x06, 0xc3, 0x06,
		0xc3, 0x06, 0xc3, 0xde, 0x19, 0x86, 0x8d, 0xa8, 0x70, 0x44, 0x85, 0x23, 0x2a, 0xbc, 0x4c, 0x4c,
		0x59, 0x98, 0x47, 0x1a, 0x7e, 0x68, 0xb0, 0x64, 0xb0, 0x64, 0xb0, 0x64, 0xb0, 0x64, 0xb0, 0x64,
		0xb0, 0x64, 0xb0, 0x64, 0xb0, 0x64, 0xb0, 0x64, 0xb0, 0x64, 0xb0, 0x64, 0xb0, 0x64, 0x48, 0x2a,
		0xb5, 0x58, 0xb2, 0x17, 0x32, 0xe1, 0x05, 0xa2, 0x57, 0xf4, 0x01, 0xee, 0x0c, 0xee, 0x0c, 0xee,
		0x0c, 0xee, 0x0c, 0xee, 0x0c, 0xee, 0x0c, 0xee, 0x0c, 0xee, 0x0c, 0xee, 0x0c, 0xee, 0x0c, 0xee,
		0x0c, 0xee, 0x0c, 0xee, 0x0c, 0x49, 0xa5, 0x14, 0x77, 0x16, 0x59, 0x22, 0x7a, 0xa1, 0x7d, 0x70,
		0x66, 0x70, 0x66, 0x70, 0x66, 0x70, 0x66, 0x70, 0x66, 0x70, 0x66, 0x70, 0x66, 0x70, 0x66, 0x70,
		0x66, 0x70, 0x66, 0x70, 0x66, 0x70, 0x66, 0x70, 0x66, 0x48, 0x2a, 0xa5, 0x38, 0xb3, 0xf8, 0x22,
		0xd1, 0x2b, 0x7b, 0x01, 0x7f, 0x06, 0x7f, 0x06, 0x7f, 0x06, 0x7f, 0x06, 0x7f, 0x06, 0x7f, 0x06,
		0x7f, 0x06, 0x7f, 0x06, 0x7f, 0x06, 0x7f, 0x06, 0x7f, 0x06, 0x7f, 0x06, 0x7f, 0x86, 0xa4, 0x52,
		0x94, 0x3f, 0x8b, 0xf3, 0x3b, 0xa3, 0x4e, 0x34, 0xb8, 0x33, 0xb8, 0x33, 0xb8, 0x33, 0xb8, 0x33,
		0xb8, 0x33, 0xb8, 0x33, 0xb8, 0x33, 0xb8, 0x33, 0xb8, 0x33, 0xb8, 0x33, 0xb8, 0x33, 0xb8, 0x33,
		0xb8, 0xb3, 0xca, 0xdc, 0x59, 0x7c, 0xa1, 0xe8, 0x95, 0xbd, 0x80, 0x3f, 0x83, 0x3f, 0x83, 0x3f,
		0x83, 0x3f, 0x83, 0x3f, 0x83, 0x3f, 0x83, 0x3f, 0x83, 0x3f, 0x83, 0x3f, 0x83, 0x3f, 0x83, 0x3f,
		0x83, 0x3f, 0x83, 0x3f, 0x43, 0x52, 0x29, 0xca, 0x9f, 0xc5, 0xf9, 0x9e, 0x51, 0xef, 0x19, 0xdc,
		0x19, 0xdc, 0x19, 0xdc, 0x19, 0xdc, 0x19, 0xdc, 0x19, 0xdc, 0x19, 0xdc, 0x19, 0xdc, 0x19, 0xdc,
		0x19, 0xdc, 0x79, 0x2b, 0x82, 0xf5, 0xcd, 0x5d, 0xae, 0xfd, 0x7b, 0x13, 0x32, 0xd4, 0x7c, 0x2e,
		0x3f, 0xb7, 0xfe, 0xed, 0xd2, 0x43, 0xd2, 0x29, 0xca, 0xbd, 0x45, 0x7a, 0xac, 0xe1, 0xa7, 0x06,
		0xd7, 0x06, 0xd7, 0x06, 0xd7, 0x06, 0xd7, 0x06, 0xd7, 0x06, 0xd7, 0x06, 0xd7, 0x06, 0xd7, 0x06,
		0xd7, 0x06, 0xd7, 0x86, 0x9f, 0x7a, 0xb7, 0xb9, 0x34, 0xb8, 0xb2, 0xaa, 0x5c, 0x59, 0x9c, 0x77,
		0x1a, 0x3e, 0x69, 0xf0, 0x64, 0xf0, 0x64, 0xf0, 0x64, 0xf0, 0x64, 0xf0, 0x64, 0xf0, 0x64, 0xf0,
		0x64, 0xf0, 0x64, 0xf0, 0x64, 0xf0, 0x64, 0xf0, 0x64, 0xf0, 0x64, 0x48, 0x2a, 0x89, 0x3c, 0xf9,
		0x5d, 0x8e, 0x92, 0xb2, 0xd2, 0x76, 0x5d, 0x8f, 0xc5, 0xdb, 0x83, 0xcb, 0xd1, 0xab, 0x04, 0xe6,
		0x33, 0x19, 0x18, 0xbe, 0xc1, 0x9e, 0xa3, 0x3d, 0x79, 0xe0, 0xf9, 0xc4, 0x35, 0x63, 0x2e, 0xab,
		0xdb, 0xd1, 0x7e, 0xeb, 0x1b, 0x26, 0x09, 0x0e, 0x56, 0xfd, 0x7a, 0x10, 0x84, 0x8f, 0x33, 0x9f,
		0xcf, 0xfe, 0xeb, 0xc0, 0xf6, 0x87, 0xcd, 0x83, 0x80, 0x19, 0x8c, 0x1c, 0x8c, 0xd1, 0x3b, 0x0f,
		0xde, 0x5e, 0x09, 0x18, 0x0d, 0x4d, 0xe6, 0x8e, 0x45, 0x63, 0x67, 0xd2, 0xdd, 0xc3, 0xdd, 0x4c,
		0xdf, 0x0f, 0x1d, 0x7f, 0xd8, 0x7c, 0x38, 0x9b, 0xf4, 0xfa, 0x2e, 0x9f, 0x95, 0xce, 0xb0, 0xca,
		0x15, 0xeb, 0xd9, 0xf4, 0x75, 0xd3, 0xb1, 0x47, 0x62, 0x22, 0xdb, 0x12, 0x27, 0x7a, 0x64, 0xb6,
		0xd1, 0x8c, 0x3b, 0xf0, 0x9c, 0xf4, 0x8d, 0xd0, 0x61, 0x5c, 0xb4, 0x68, 0x25, 0x06, 0x5b, 0xd9,
		0x56, 0xa9, 0x97, 0x71, 0x3e, 0x7c, 0x2c, 0x41, 0xdc, 0x2c, 0x40, 0x3c, 0x2d, 0x3f, 0xdc, 0x2d,
		0x3e, 0xbc, 0xb5, 0xbe, 0x30, 0x0b, 0x8f, 0x30, 0x95, 0x2e, 0xc2, 0xa2, 0x93, 0xaf, 0x46, 0xe1,
		0x66, 0xb9, 0x49, 0x76, 0xdb, 0xa3, 0xe7, 0x39, 0xc4, 0x70, 0x79, 0xec, 0xb7, 0xf1, 0xe1, 0xac,
		0xd5, 0x54, 0x14, 0xe4, 0xa1, 0xaf, 0x1b, 0x96, 0x45, 0x75, 0x8b, 0x30, 0x62, 0x32, 0x9d, 0x51,
		0xc3, 0x0d, 0x06, 0x36, 0x07, 0xeb, 0xf8, 0x54, 0xac, 0xaf, 0xed, 0xa2, 0x48, 0x42, 0xbe, 0x06,
		0x01, 0x0f, 0x01, 0x0f, 0x01, 0x5f, 0x1e, 0x01, 0x1f, 0xda, 0x2e, 0x3b, 0xac, 0x73, 0x94, 0xef,
		0xc7, 0x1c, 0x9a, 0xe2, 0x6b, 0x7f, 0xe7, 0x68, 0x78, 0x12, 0x61, 0x6f, 0x17, 0x65, 0x67, 0x17,
		0x6e, 0x71, 0x15, 0x67, 0x69, 0xe5, 0x68, 0x4f, 0x17, 0x62, 0x47, 0x4f, 0x96, 0xac, 0x51, 0x3f,
		0x6d, 0x9c, 0x36, 0x8f, 0xeb, 0xa7, 0x47, 0x58, 0x3b, 0xae, 0x56, 0xa2, 0xec, 0xad, 0xf4, 0x72,
		0x15, 0xd4, 0x02, 0xac, 0xdf, 0x02, 0xac, 0xde, 0x02, 0x5c, 0xbc, 0xb1, 0x29, 0xf4, 0xa4, 0x59,
		0x6f, 0x69, 0x9d, 0xee, 0xb0, 0xa9, 0xdd, 0x31, 0x83, 0x11, 0x87, 0x04, 0x81, 0xd6, 0xb6, 0x2c,
		0x1a, 0xff, 0x3f, 0x64, 0xde, 0xc8, 0x2c, 0x15, 0xd2, 0x91, 0xf1, 0x4b, 0xad, 0xe8, 0x05, 0x51,
		0x16, 0x6c, 0xb9, 0x01, 0x0c, 0x29, 0x96, 0x09, 0x12, 0xa2, 0x00, 0x44, 0x94, 0xb8, 0x91, 0x3c,
		0xb1, 0xf8, 0xd1, 0xce, 0x49, 0x83, 0x45, 0x22, 0x99, 0xd1, 0xde, 0x07, 0xcf, 0x04, 0xcf, 0x04,
		0xcf, 0x2c, 0x0f, 0xcf, 0x84, 0x21, 0x31, 0x1e, 0xfb, 0x80, 0x85, 0xfc, 0x64, 0x77, 0xd4, 0x18,
		0x04, 0x1d, 0x04, 0x1d, 0x04, 0x1d, 0x0c, 0x6a, 0x30, 0xa8, 0x2d, 0x5b, 0x67, 0x6a, 0xf5, 0x13,
		0xd8, 0xd4, 0x60, 0x53, 0x83, 0x4d, 0x0d, 0x36, 0x35, 0xe5, 0x6d, 0x6a, 0xf5, 0x46, 0xb3, 0xda,
		0xd2, 0x96, 0x02, 0x07, 0xdf, 0x6b, 0x5f, 0x08, 0x0d, 0x6c, 0xcf, 0xd5, 0x9a, 0xda, 0x5e, 0xa7,
		0x3b, 0x6c, 0xee, 0x6b, 0x77, 0x3e, 0x31, 0xed, 0xbe, 0x6d, 0xc6, 0x56, 0x9b, 0x6f, 0x6e, 0xd2,
		0xdc, 0x1d, 0x89, 0x77, 0xbf, 0x76, 0x04, 0x83, 0x5b, 0x4e, 0x06, 0x37, 0x9e, 0x6b, 0x08, 0xd9,
		0xc2, 0x8b, 0xcd, 0xbd, 0x93, 0x28, 0xcb, 0x78, 0xc5, 0x7c, 0x8a, 0x8e, 0xf5, 0x4c, 0xb7, 0xbd,
		0xb6, 0x7f, 0x95, 0x29, 0x5e, 0x63, 0x25, 0x74, 0xdd, 0x70, 0xf0, 0x48, 0x68, 0x06, 0x2b, 0xe8,
		0x14, 0xac, 0x4f, 0xdb, 0x4a, 0xb9, 0xa0, 0x13, 0x63, 0x44, 0xca, 0xc7, 0xb3, 0x12, 0x67, 0x1e,
		0x84, 0x79, 0x8e, 0x28, 0xf7, 0x33, 0x48, 0x59, 0x5e, 0xda, 0x80, 0x3b, 0x31, 0xe6, 0x2e, 0xea,
		0x97, 0x88, 0x70, 0xbf, 0xa2, 0x88, 0x00, 0x3a, 0xb7, 0x69, 0xb6, 0xcd, 0x62, 0x4e, 0x76, 0x2c,
		0x27, 0x23, 0xd6, 0xb8, 0x3d, 0x3e, 0x76, 0xac, 0x5a, 0xd9, 0xed, 0x58, 0x7d, 0xd8, 0xb1, 0x44,
		0xd8, 0xb1, 0xfa, 0xaa, 0xdb, 0xb1, 0xb2, 0x1e, 0xeb, 0x29, 0xc9, 0xe2, 0xe4, 0x60, 0x5c, 0xda,
		0xbd, 0x7c, 0x1c, 0x8d, 0xd3, 0x09, 0x73, 0x74, 0x38, 0x26, 0x8d, 0x72, 0xb8, 0xc2, 0x90, 0xc0,
		0x59, 0x24, 0xb7, 0x28, 0x8c, 0xc0, 0x93, 0xc9, 0x56, 0x4b, 0x92, 0xdc, 0xa2, 0x8f, 0xe4, 0x16,
		0xdb, 0xee, 0x56, 0x7e, 0x1e, 0xce, 0x25, 0x54, 0x53, 0x2b, 0xd4, 0x2b, 0xe4, 0x7c, 0x6f, 0x31,
		0x69, 0xf7, 0xf5, 0xc9, 0x63, 0xba, 0x67, 0xea, 0xa6, 0x37, 0xf0, 0x29, 0x09, 0x02, 0x62, 0xe9,
		0x0e, 0x31, 0xfa, 0x51, 0x27, 0x6f, 0xb8, 0x30, 0xaa, 0x69, 0x95, 0x8b, 0x97, 0xd8, 0x6c, 0x9d,
		0x5d, 0xe1, 0xf1, 0xc7, 0x7d, 0x9e, 0xa9, 0x93, 0x17, 0xd6, 0x62, 0xc4, 0x21, 0x03, 0xc2, 0xe8,
		0xab, 0xee, 0xb9, 0xba, 0xf9, 0x1c, 0x7b, 0x9d, 0x84, 0x60, 0xc1, 0x58, 0x53, 0x0b, 0x00, 0x83,
		0x79, 0xe3, 0xc0, 0xde, 0xce, 0xdc, 0x29, 0x9e, 0x9a, 0x5e, 0x0e, 0xc6, 0x14, 0x50, 0xc1, 0x70,
		0x8e, 0x64, 0x4e, 0x3a, 0x25, 0x7d, 0x7e, 0x9c, 0x78, 0xbe, 0x59, 0x50, 0x63, 0x50, 0x63, 0x50,
		0xe3, 0xfc, 0xa9, 0x31, 0x27, 0xcb, 0x97, 0x18, 0x0b, 0x18, 0xe7, 0xe3, 0x0e, 0xc2, 0x08, 0xc2,
		0x08, 0xc2, 0xc8, 0x53, 0x7c, 0x2c, 0x63, 0x06, 0xfe, 0xdb, 0x6a, 0x09, 0x3f, 0xf0, 0xde, 0x56,
		0x7c, 0xad, 0x51, 0xc2, 0x84, 0x8c, 0x48, 0x61, 0x23, 0x5c, 0xe8, 0x88, 0x16, 0x3e, 0xd2, 0x84,
		0x90, 0x34, 0x61, 0x24, 0x43, 0x28, 0xf1, 0x15, 0x4e, 0x9c, 0x85, 0x94, 0x38, 0xeb, 0xd6, 0xd2,
		0x6e, 0x77, 0x88, 0xd1, 0xcf, 0x4e, 0x4a, 0x7e, 0x89, 0x5c, 0x8e, 0x05, 0xb4, 0xdd, 0x4d, 0x18,
		0x6c, 0xb4, 0x2d, 0x5a, 0x33, 0xcc, 0x74, 0xe1, 0x83, 0xf1, 0xbf, 0xe3, 0xcc, 0x54, 0x85, 0x5e,
		0x6a, 0x41, 0x56, 0x38, 0x79, 0xd6, 0x38, 0xfe, 0x27, 0x8a, 0x67, 0x88, 0xeb, 0xac, 0xc1, 0x42,
		0x9c, 0xa2, 0x9e, 0xeb, 0x05, 0xba, 0x1a, 0xba, 0x1a, 0xba, 0x1a, 0xba, 0x1a, 0xba, 0x7a, 0x43,
		0x5d, 0xfd, 0x75, 0xaa, 0xab, 0xff, 0xc7, 0x0c, 0x29, 0x25, 0x2e, 0xdb, 0xdb, 0x3f, 0xf8, 0xf0,
		0x61, 0x6a, 0x85, 0xee, 0x8d, 0x1f, 0x99, 0x37, 0x46, 0x2f, 0x7f, 0x96, 0xb4, 0x6c, 0x91, 0x17,
		0xa8, 0x7d, 0xd5, 0xd4, 0x7e, 0xa1, 0xec, 0x05, 0xdc, 0x9c, 0x74, 0x93, 0x1f, 0x71, 0xa6, 0x27,
		0xe1, 0x4e, 0xbb, 0x35, 0x5a, 0x85, 0xa3, 0xf3, 0x6e, 0xa5, 0x3a, 0x29, 0x9a, 0x29, 0xaa, 0x57,
		0x70, 0xc7, 0xbb, 0x14, 0x27, 0xdf, 0x9c, 0x4f, 0x8b, 0x8b, 0xcb, 0x8f, 0xdf, 0x22, 0xbd, 0x71,
		0xc9, 0x68, 0x6c, 0x30, 0xc2, 0xdf, 0x39, 0x30, 0x6a, 0xb6, 0xe0, 0xbe, 0x81, 0x3a, 0x7c, 0x03,
		0xea, 0x40, 0x7d, 0xf8, 0x06, 0xe0, 0x1b, 0x80, 0xbd, 0x01, 0xf6, 0x06, 0xd8, 0x1b, 0x60, 0x6f,
		0x80, 0xbd, 0xa1, 0x18, 0xbe, 0x01, 0x98, 0xc0, 0xa1, 0x92, 0xa0, 0x92, 0xa0, 0x92, 0xa0, 0x92,
		0xa0, 0x92, 0xca, 0x67, 0x02, 0x2f, 0x29, 0xfb, 0x2b, 0x91, 0x39, 0x2e, 0x43, 0xd2, 0x07, 0x01,
		0xd6, 0x38, 0x54, 0x65, 0xcb, 0xb4, 0x9a, 0x72, 0xeb, 0xb3, 0x7d, 0x4e, 0x46, 0xf1, 0x90, 0x7c,
		0xed, 0x96, 0xf4, 0x55, 0xbc, 0xcd, 0xc1, 0xc7, 0x84, 0xcb, 0xd5, 0x74, 0xcb, 0xfd, 0xf6, 0x46,
		0x1d, 0xb7, 0x37, 0xf2, 0x87, 0x9c, 0xb8, 0xbd, 0xb1, 0xf1, 0x84, 0x90, 0xd8, 0x80, 0x47, 0xa3,
		0x48, 0x6c, 0x50, 0x04, 0x2e, 0x0e, 0x5f, 0x94, 0x74, 0xae, 0x8d, 0xc4, 0x06, 0xd9, 0x77, 0x6b,
		0xf1, 0x13, 0x1b, 0x80, 0x72, 0xc8, 0xa7, 0x1c, 0x1c, 0x28, 0x23, 0x92, 0x36, 0xf2, 0x5f, 0x97,
		0x4a, 0x26, 0xfe, 0xb3, 0x3d, 0xe9, 0x93, 0x96, 0x29, 0xf2, 0x9d, 0xc0, 0x95, 0xae, 0xb4, 0xc3,
		0xa7, 0x48, 0x49, 0xc4, 0xf0, 0x70, 0x7b, 0xd8, 0x95, 0x31, 0x09, 0xe5, 0xa6, 0x7e, 0xa7, 0x8d,
		0x2c, 0x78, 0x7e, 0x2b, 0xda, 0x10, 0x69, 0xb3, 0x59, 0x9e, 0x93, 0xc0, 0xa4, 0xb6, 0x3f, 0xde,
		0xea, 0x95, 0xb6, 0x65, 0x05, 0x9a, 0x31, 0xae, 0x08, 0x65, 0x2c, 0x56, 0x84, 0xd2, 0x98, 0xa7,
		0xb1, 0x67, 0xa2, 0x3d, 0x1a, 0x01, 0xd1, 0x3a, 0x5d, 0x6d, 0xe0, 0x59, 0xc4, 0x41, 0x1e, 0xcd,
		0x71, 0x65, 0x04, 0x9d, 0xbc, 0x30, 0xe4, 0xd2, 0x4c, 0x03, 0xd1, 0x46, 0xaf, 0x6e, 0x57, 0xf2,
		0x69, 0x4e, 0x8e, 0x15, 0x3f, 0xbb, 0x53, 0xd2, 0x62, 0xe6, 0x9a, 0x5e, 0x73, 0xc2, 0xe0, 0xde,
		0xf3, 0x75, 0x87, 0x0c, 0x89, 0xa3, 0x99, 0x9e, 0xcb, 0x0c, 0xdb, 0x25, 0x54, 0xeb, 0x7b, 0x74,
		0x54, 0x40, 0x8e, 0x57, 0x9f, 0xbb, 0x92, 0xac, 0x24, 0xab, 0x78, 0x80, 0xc9, 0x4b, 0x94, 0xf8,
		0xe0, 0x44, 0x09, 0x64, 0x8b, 0x2f, 0xc1, 0x80, 0xaa, 0xb7, 0x2d, 0xa0, 0xca, 0x06, 0x99, 0xc5,
		0x41, 0xe5, 0x14, 0xdb, 0x79, 0x73, 0x5c, 0xbc, 0xdd, 0xae, 0xdb, 0x7c, 0x05, 0xb6, 0x50, 0x4e,
		0x29, 0x9d, 0x18, 0x99, 0x9c, 0x16, 0x29, 0xa5, 0x76, 0x6a, 0xa7, 0x44, 0x16, 0xa9, 0x9c, 0xd9,
		0x06, 0x97, 0x55, 0xe2, 0x72, 0x93, 0xb0, 0xdc, 0x24, 0x2a, 0x0f, 0x1b, 0x99, 0x58, 0x7a, 0x96,
		0x16, 0x64, 0x55, 0x0c, 0x6b, 0x60, 0xbb, 0x7a, 0xb4, 0xa7, 0xc3, 0x20, 0x7b, 0xb5, 0x80, 0xb9,
		0xd6, 0xb2, 0xf1, 0x9c, 0x2a, 0xea, 0x05, 0xa0, 0x5e, 0x80, 0x0a, 0xfc, 0xe6, 0xca, 0x70, 0x2d,
		0x83, 0x79, 0xf4, 0x35, 0x03, 0x39, 0xcf, 0x6c, 0x9a, 0x9e, 0xf1, 0xb5, 0x85, 0x03, 0x92, 0xb9,
		0x6c, 0x78, 0xa2, 0xaf, 0x1a, 0x19, 0xda, 0xb8, 0x70, 0xc3, 0x41, 0xf6, 0x9d, 0x7b, 0xef, 0xdd,
		0x31, 0x6a, 0xbb, 0x7c, 0xb2, 0xca, 0x55, 0xaa, 0xd1, 0x3b, 0xfa, 0xdc, 0xe5, 0xc1, 0x2b, 0x6a,
		0x51, 0x53, 0xe7, 0x37, 0xff, 0xb9, 0xe6, 0xd1, 0x58, 0x3d, 0xe6, 0x8f, 0x17, 0x77, 0xf7, 0x9d,
		0xeb, 0x3f, 0x2a, 0xf9, 0xd6, 0x7b, 0xf4, 0x3a, 0xf1, 0x21, 0xe4, 0xf0, 0xb2, 0xe3, 0x97, 0xc3,
		0xe5, 0x32, 0x5d, 0xf2, 0x6a, 0xb8, 0xdc, 0xa4, 0x8b, 0x36, 0x40, 0x4b, 0xab, 0xee, 0x84, 0x65,
		0x3e, 0xf3, 0x65, 0x6b, 0x7e, 0x8a, 0x47, 0xd8, 0x65, 0x6a, 0xfe, 0x97, 0xa7, 0x39, 0x5d, 0x96,
		0xce, 0x70, 0x16, 0xb9, 0xbf, 0x76, 0xcf, 0x1f, 0xab, 0x05, 0xc3, 0xc1, 0xeb, 0xc6, 0xeb, 0xe6,
		0xf1, 0xba, 0x53, 0x3d, 0x99, 0x32, 0x3a, 0x86, 0x67, 0x6d, 0x4b, 0x8e, 0x35, 0x2d, 0x39, 0x1a,
		0x3d, 0xe3, 0xfa, 0x87, 0x27, 0xcd, 0xc3, 0x96, 0x76, 0xff, 0x4c, 0xb4, 0xc4, 0x86, 0x12, 0x68,
		0x7f, 0x50, 0x2f, 0xf4, 0xb5, 0xab, 0xce, 0x47, 0x4d, 0xd7, 0xec, 0x7e, 0x3b, 0xa2, 0x58, 0x77,
		0x59, 0x18, 0x96, 0x2c, 0xeb, 0x28, 0xef, 0xb2, 0x94, 0x72, 0x0c, 0xa4, 0x29, 0x96, 0x41, 0x59,
		0x4b, 0x6a, 0xaf, 0xc0, 0x45, 0x0c, 0x4d, 0x2f, 0x8c, 0xde, 0x3d, 0x07, 0xa3, 0x44, 0xd2, 0x12,
		0x1c, 0xaf, 0x30, 0x48, 0xec, 0x80, 0x41, 0x22, 0x7b, 0x01, 0x43, 0x83, 0x52, 0x9b, 0x50, 0x9d,
		0x51, 0xc3, 0x0d, 0xec, 0x08, 0xc4, 0x04, 0x1c, 0xab, 0x19, 0xae, 0x68, 0x9c, 0x8f, 0x4b, 0xb4,
		0x8a, 0xfa, 0x0d, 0xf9, 0x2a, 0x7c, 0xdc, 0x00, 0xc8, 0xc9, 0x64, 0xc3, 0x2b, 0xb0, 0x75, 0x51,
		0x65, 0x36, 0x1b, 0x3c, 0x76, 0xdc, 0xf8, 0x78, 0x9e, 0x70, 0x68, 0xea, 0x36, 0xb6, 0x16, 0x14,
		0xb0, 0x10, 0xfd, 0x95, 0xcd, 0x3f, 0xdb, 0x60, 0xe5, 0x8b, 0xe1, 0x84, 0x44, 0xc0, 0x25, 0xfa,
		0x4f, 0xd4, 0x88, 0x8b, 0xa4, 0x9f, 0xdb, 0x4f, 0x76, 0x6c, 0x1d, 0xe2, 0xdd, 0xc1, 0x35, 0x79,
		0x32, 0x98, 0x3d, 0x24, 0x13, 0xba, 0x5a, 0xc8, 0xe4, 0x0d, 0x57, 0xc6, 0x8b, 0xb8, 0x25, 0xab,
		0x9d, 0x34, 0x1a, 0xcd, 0xe3, 0x46, 0xa3, 0x7a, 0x7c, 0x78, 0x5c, 0x3d, 0x3d, 0x3a, 0xaa, 0x35,
		0x6b, 0x47, 0x58, 0x45, 0x2e, 0xd2, 0x92, 0x5f, 0x2b, 0x3d, 0xd4, 0xaa, 0xfb, 0xa5, 0x0d, 0x0b,
		0xb5, 0xea, 0x78, 0x08, 0x1c, 0x61, 0xcb, 0xc3, 0xcf, 0xc4, 0xa8, 0xde, 0xb2, 0xe4, 0x5a, 0x42,
		0x90, 0xa3, 0x29, 0x32, 0x69, 0x33, 0x89, 0xc0, 0x28, 0x1c, 0xb4, 0x99, 0x60, 0x42, 0x8b, 0xf8,
		0x94, 0x98, 0x06, 0xe3, 0x76, 0x91, 0x53, 0x93, 0x74, 0x2f, 0x2f, 0xe0, 0x65, 0x2c, 0x95, 0x42,
		0x4f, 0x56, 0x9e, 0x98, 0x99, 0x77, 0x0f, 0x2d, 0xcc, 0xa9, 0xff, 0x6c, 0x55, 0x2d, 0xf5, 0x47,
		0xea, 0x19, 0x96, 0x69, 0x04, 0x4c, 0xf7, 0xbf, 0xb3, 0x80, 0x67, 0x65, 0xcb, 0xc5, 0xa6, 0x61,
		0x1d, 0x81, 0x75, 0x04, 0xd6, 0x11, 0x58, 0x47, 0x60, 0x1d, 0x81, 0x75, 0x04, 0xd6, 0x11, 0x58,
		0x47, 0x76, 0xc2, 0x3a, 0x22, 0x82, 0x63, 0xf1, 0x0b, 0xfb, 0x10, 0x48, 0xb3, 0x36, 0x8c, 0x3f,
		0xf8, 0xf3, 0xac, 0xe3, 0x7e, 0x9c, 0xe0, 0xc4, 0xee, 0x77, 0x16, 0x7c, 0xf8, 0xe6, 0x46, 0x8f,
		0x36, 0xea, 0xa7, 0x87, 0x2d, 0xed, 0xca, 0x70, 0x8d, 0x27, 0x12, 0xa9, 0x71, 0xad, 0xe3, 0xf6,
		0x3d, 0x3a, 0x18, 0x5d, 0x47, 0xfe, 0x68, 0x04, 0x24, 0xbe, 0x91, 0xc8, 0x9e, 0xc9, 0x37, 0x37,
		0x6e, 0xdb, 0x25, 0x4c, 0xeb, 0x52, 0x8f, 0x79, 0xa6, 0xe7, 0x68, 0x7b, 0x9d, 0xee, 0xfe, 0x07,
		0xc5, 0xd8, 0x1d, 0xef, 0x28, 0x93, 0x7c, 0x08, 0x5e, 0xfe, 0xab, 0x0e, 0xf9, 0x55, 0x0c, 0x5e,
		0x69, 0xd9, 0x81, 0x69, 0x50, 0x8b, 0x2f, 0xa3, 0x4c, 0x1a, 0x05, 0x97, 0x04, 0x97, 0x04, 0x97,
		0x04, 0x97, 0x04, 0x97, 0x04, 0x97, 0x04, 0x97, 0x04, 0x97, 0x04, 0x97, 0x04, 0x97, 0xec, 0x77,
		0xdc, 0xf3, 0x31, 0x3e, 0x04, 0x89, 0xdc, 0x01, 0x12, 0x29, 0x62, 0xb9, 0x21, 0xb1, 0x8a, 0xc1,
		0x1e, 0x09, 0xa5, 0x1e, 0xe5, 0xcb, 0x1d, 0xc7, 0x4d, 0x82, 0x39, 0x82, 0x39, 0x82, 0x39, 0x82,
		0x39, 0x82, 0x39, 0x82, 0x39, 0x82, 0x39, 0x82, 0x39, 0x82, 0x39, 0x82, 0x39, 0xf6, 0x3b, 0xee,
		0x45, 0x8c, 0x0e, 0xc1, 0x1b, 0x77, 0x82, 0x37, 0xf2, 0x5e, 0x6c, 0x48, 0xab, 0x62, 0xb0, 0xc6,
		0xbe, 0x19, 0x88, 0x60, 0x8e, 0x33, 0xcd, 0x82, 0x3d, 0x82, 0x3d, 0x82, 0x3d, 0x82, 0x3d, 0x82,
		0x3d, 0x82, 0x3d, 0x82, 0x3d, 0x82, 0x3d, 0xee, 0x04, 0x7b, 0x2c, 0xfe, 0x0d, 0x5f, 0x5c, 0x21,
		0x4d, 0xbb, 0xb1, 0x70, 0x85, 0x34, 0x05, 0xe8, 0xc0, 0x15, 0xd2, 0xfc, 0x48, 0x3e, 0xae, 0x90,
		0x16, 0x8e, 0x76, 0x0f, 0x42, 0x87, 0xd9, 0x62, 0xae, 0x90, 0x2e, 0x34, 0x0d, 0xfa, 0x0d, 0xfa,
		0x0d, 0xfa, 0x0d, 0xfa, 0x0d, 0xfa, 0xfd, 0xff, 0xb3, 0xf7, 0xae, 0xbd, 0x6d, 0x2b, 0x49, 0xd7,
		0xe8, 0xf7, 0xfc, 0x0a, 0x42, 0x18, 0xe0, 0x49, 0x9e, 0x37, 0x74, 0x6c, 0x59, 0xbe, 0xc4, 0xc0,
		0x8b, 0x03, 0xc5, 0x51, 0xb2, 0x85, 0x91, 0x2d, 0xc3, 0x52, 0xf6, 0xe5, 0xc4, 0x1a, 0x83, 0x21,
		0x5b, 0x36, 0x11, 0x89, 0xd4, 0x90, 0x2d, 0x27, 0x3e, 0x7b, 0xe7, 0xbf, 0x1f, 0x90, 0xa2, 0xa8,
		0xbb, 0xc5, 0xee, 0xae, 0xa6, 0x28, 0x69, 0x6d, 0x0c, 0x26, 0xb6, 0x2c, 0x16, 0xc9, 0xee, 0xae,
		0xaa, 0x55, 0xab, 0xab, 0xab, 0x10, 0x7e, 0x23, 0xfc, 0x46, 0xf8, 0xbd, 0x17, 0xe1, 0x37, 0x36,
		0x6f, 0xd7, 0x1f, 0x26, 0xbc, 0x1a, 0xe3, 0x44, 0x1c, 0x21, 0xdd, 0xa3, 0x23, 0xa4, 0x9a, 0x66,
		0x1d, 0xf6, 0xab, 0x18, 0x71, 0xa5, 0x6f, 0x73, 0x46, 0x1c, 0x4f, 0x26, 0x22, 0x11, 0x47, 0x22,
		0x8e, 0x44, 0x1c, 0x89, 0x38, 0x12, 0x71, 0x24, 0xe2, 0x48, 0xc4, 0x91, 0x88, 0x23, 0x11, 0x47,
		0x22, 0x8e, 0x8c, 0x23, 0x8a, 0x66, 0x8c, 0x0f, 0x11, 0x40, 0xee, 0x49, 0x00, 0x49, 0x3d, 0xdd,
		0xb0, 0x58, 0xc5, 0x88, 0x1c, 0xc9, 0xf7, 0x21, 0xb1, 0xfb, 0x88, 0xa8, 0x11, 0x51, 0x23, 0xa2,
		0x46, 0x44, 0x8d, 0x88, 0x1a, 0x11, 0x35, 0x22, 0x6a, 0x44, 0xd4, 0xb8, 0x27, 0x51, 0xe3, 0xd1,
		0xfb, 0x0b, 0xe3, 0x96, 0xf5, 0x7d, 0xce, 0x8c, 0x6b, 0xc6, 0x7f, 0xf8, 0xc1, 0x77, 0xe3, 0xca,
		0xf7, 0x5c, 0xee, 0x07, 0xae, 0xf7, 0xf0, 0x52, 0xb0, 0x80, 0x18, 0x72, 0xfb, 0x63, 0xc8, 0x02,
		0x4c, 0x3e, 0xac, 0x59, 0x31, 0x22, 0xca, 0xa1, 0xa7, 0x29, 0xc3, 0x75, 0x46, 0x30, 0x22, 0x4c,
		0x44, 0x98, 0x88, 0x30, 0x11, 0x61, 0x22, 0xc2, 0x44, 0x84, 0x89, 0x08, 0x13, 0x11, 0x26, 0x22,
		0xcc, 0xdd, 0x8f, 0x30, 0x33, 0x6d, 0x54, 0x7d, 0x41, 0x6e, 0xeb, 0x9e, 0x6d, 0x4d, 0x7e, 0x41,
		0x5e, 0xeb, 0xee, 0xc6, 0x92, 0xdf, 0x3d, 0xff, 0x87, 0x67, 0x0e, 0xa2, 0xe9, 0xa1, 0x8e, 0x26,
		0x67, 0x44, 0x23, 0x9e, 0x44, 0x3c, 0x89, 0x78, 0x12, 0xf1, 0x24, 0xe2, 0x49, 0xc4, 0x93, 0x88,
		0x27, 0x11, 0x4f, 0xee, 0x45, 0x3c, 0x89, 0x72, 0x45, 0x28, 0x57, 0x04, 0xaa, 0x41, 0x8a, 0x6a,
		0xa8, 0x7b, 0x5f, 0x46, 0x01, 0xc4, 0x0d, 0x45, 0xfc, 0x00, 0x8e, 0x40, 0x23, 0x47, 0x30, 0x3f,
		0x55, 0xbb, 0xe7, 0x44, 0xde, 0xa2, 0x94, 0x58, 0x81, 0x95, 0x0d, 0xa5, 0xc4, 0x40, 0x8d, 0x11,
		0x53, 0x63, 0x3d, 0x2b, 0xe4, 0xa6, 0xdd, 0x63, 0x56, 0x40, 0xc7, 0x89, 0x4d, 0xc9, 0x04, 0x19,
		0x06, 0x32, 0x0c, 0x64, 0x58, 0x81, 0xc8, 0x30, 0xee, 0xf6, 0x19, 0x77, 0xed, 0xef, 0x61, 0xe1,
		0xe8, 0xb0, 0x2f, 0xde, 0x28, 0xf2, 0x2f, 0x79, 0x96, 0xe7, 0x87, 0xcc, 0xf6, 0x3d, 0x87, 0xc2,
		0xd5, 0x81, 0x66, 0x03, 0xcd, 0x06, 0x9a, 0x0d, 0x34, 0x1b, 0x68, 0xb6, 0x5c, 0x68, 0x36, 0xce,
		0x7a, 0xac, 0xcf, 0x78, 0xf0, 0x6c, 0xfa, 0x9e, 0x69, 0x3f, 0xc6, 0xb6, 0x17, 0x74, 0x5b, 0x2e,
		0x0b, 0x4c, 0x25, 0x0c, 0xf0, 0x87, 0xdc, 0xfc, 0x16, 0xf8, 0x96, 0xa3, 0x21, 0xe1, 0x7a, 0x89,
		0x6c, 0x84, 0x05, 0x08, 0x0b, 0x10, 0x16, 0x14, 0x28, 0x2c, 0xc0, 0x1e, 0x39, 0xc0, 0x3b, 0xc0,
		0x3b, 0xc0, 0x3b, 0xc0, 0xbb, 0x3e, 0xab, 0x8d, 0x8d, 0xd0, 0x75, 0x19, 0xb8, 0xcd, 0x21, 0xff,
		0x30, 0x06, 0x8a, 0x48, 0xbc, 0xde, 0x9b, 0xc4, 0x6b, 0x7d, 0xd3, 0x0e, 0x0b, 0x46, 0x74, 0x7f,
		0xd5, 0xd8, 0xd2, 0x71, 0x43, 0xdb, 0x0a, 0x1c, 0xe2, 0xa8, 0x32, 0x95, 0x8a, 0x78, 0x12, 0xf1,
		0x24, 0xe2, 0x49, 0xc4, 0x93, 0x88, 0x27, 0x11, 0x4f, 0x22, 0x9e, 0x44, 0x3c, 0x89, 0x78, 0x12,
		0xf1, 0x64, 0xb7, 0x39, 0xe4, 0x1f, 0x13, 0x80, 0x88, 0x40, 0x72, 0x0f, 0x02, 0x49, 0x2d, 0xf3,
		0x0d, 0x9b, 0x55, 0x90, 0x08, 0x92, 0x05, 0x81, 0x1f, 0x10, 0xc7, 0x8f, 0x89, 0x4c, 0x44, 0x8f,
		0x88, 0x1e, 0x11, 0x3d, 0x22, 0x7a, 0x44, 0xf4, 0x88, 0xe8, 0x11, 0xd1, 0x23, 0xa2, 0x47, 0x44,
		0x8f, 0x88, 0x1e, 0xa3, 0x68, 0xa2, 0x16, 0xc3, 0x43, 0xc4, 0x8e, 0xfb, 0x11, 0x3b, 0x52, 0xcf,
		0x36, 0xec, 0x55, 0x41, 0x22, 0xc7, 0xfe, 0xb8, 0x63, 0xad, 0x86, 0xbc, 0xd6, 0x39, 0xd9, 0x88,
		0x24, 0x11, 0x49, 0x22, 0x92, 0x44, 0x24, 0x89, 0x48, 0x12, 0x91, 0x24, 0x22, 0x49, 0x44, 0x92,
		0x88, 0x24, 0x11, 0x49, 0x8e, 0x12, 0x1c, 0xaf, 0xc6, 0x40, 0x11, 0x79, 0xad, 0xfb, 0x94, 0xd7,
		0xaa, 0x69, 0xda, 0x61, 0xc1, 0x0a, 0x12, 0x5b, 0xfa, 0x71, 0x33, 0x5b, 0xda, 0x98, 0x32, 0x91,
		0x89, 0x58, 0x12, 0xb1, 0x24, 0x62, 0x49, 0xc4, 0x92, 0x88, 0x25, 0x11, 0x4b, 0x22, 0x96, 0x44,
		0x2c, 0x89, 0x58, 0x12, 0xb1, 0xe4, 0x28, 0xa8, 0x68, 0xc6, 0x00, 0x11, 0x41, 0xe4, 0xbe, 0x04,
		0x91, 0xd4, 0xf3, 0x0d, 0x9b, 0x55, 0x90, 0xe8, 0x91, 0x7e, 0x3f, 0x12, 0xbb, 0x90, 0x88, 0x1c,
		0x11, 0x39, 0x22, 0x72, 0x44, 0xe4, 0x88, 0xc8, 0x11, 0x91, 0x23, 0x22, 0x47, 0x44, 0x8e, 0x7b,
		0x12, 0x39, 0x1e, 0xbd, 0xbf, 0x30, 0x6e, 0x59, 0xdf, 0xe7, 0xcc, 0xb8, 0x66, 0xfc, 0x87, 0x1f,
		0x7c, 0x37, 0xae, 0x7c, 0xcf, 0xe5, 0x7e, 0xe0, 0x7a, 0x0f, 0x2f, 0x85, 0x0b, 0x08, 0x23, 0xb7,
		0x3f, 0x8c, 0x2c, 0xc0, 0xe4, 0xc3, 0x9a, 0x15, 0x24, 0xa6, 0x1c, 0x7a, 0xba, 0x72, 0x5d, 0x67,
		0x24, 0x23, 0xc6, 0x44, 0x8c, 0x89, 0x18, 0x13, 0x31, 0x26, 0x62, 0x4c, 0xc4, 0x98, 0x88, 0x31,
		0x11, 0x63, 0x22, 0xc6, 0xdc, 0xfd, 0x18, 0x33, 0xdb, 0x6e, 0xd5, 0x17, 0x64, 0xb9, 0xee, 0xdb,
		0x06, 0xe5, 0x17, 0x64, 0xb8, 0x16, 0x37, 0x9e, 0x7c, 0x95, 0xa3, 0xa5, 0x54, 0x6f, 0x50, 0xa3,
		0x18, 0xaf, 0xea, 0xec, 0xfb, 0x4c, 0xdf, 0x80, 0x86, 0xa8, 0xf1, 0x8c, 0xdc, 0x14, 0x4b, 0xf6,
		0x7a, 0x2d, 0x55, 0x3d, 0xcf, 0xe7, 0xf1, 0x88, 0x2a, 0x59, 0xd1, 0x52, 0x68, 0x3f, 0xb2, 0xbe,
		0x35, 0xb0, 0xf8, 0x63, 0xf4, 0xf6, 0xef, 0xfc, 0x01, 0xf3, 0xec, 0x38, 0x9c, 0x37, 0xdd, 0xd4,
		0xd8, 0xbc, 0x5b, 0xf6, 0xe3, 0xbb, 0x70, 0xf8, 0x6d, 0xea, 0xf3, 0xe9, 0xdf, 0xde, 0x85, 0xdc,
		0xe2, 0xec, 0x5d, 0x12, 0x0b, 0xa9, 0xb0, 0x14, 0xa5, 0x90, 0x07, 0x43, 0x9b, 0x7b, 0x89, 0x03,
		0x4c, 0xed, 0xdf, 0x7d, 0x6b, 0xea, 0x76, 0xf7, 0x97, 0xe3, 0x1b, 0xbd, 0xca, 0x67, 0xde, 0x24,
		0xd4, 0xb2, 0x64, 0x0f, 0x86, 0xd2, 0x13, 0x35, 0x89, 0x2e, 0x07, 0x43, 0xc9, 0xc1, 0x54, 0xa4,
		0x7a, 0x94, 0x29, 0x1e, 0x0a, 0x6a, 0x87, 0x8c, 0xd2, 0xa1, 0x82, 0x1f, 0xe4, 0x14, 0x0e, 0x39,
		0xb6, 0xa0, 0xa4, 0x6c, 0xf2, 0x75, 0x61, 0xca, 0xd4, 0x4c, 0xba, 0x5a, 0xbe, 0xf9, 0x7e, 0x8f,
		0x59, 0x9e, 0xca, 0x7a, 0x49, 0x94, 0xe7, 0xe8, 0x68, 0xcf, 0xbd, 0x38, 0x7d, 0x5b, 0xb9, 0xe2,
		0x7a, 0xf3, 0xb7, 0x00, 0x4f, 0x18, 0x6e, 0x60, 0x55, 0xb5, 0xe0, 0x49, 0x06, 0x29, 0x39, 0x2c,
		0xb4, 0x03, 0x77, 0xa0, 0x04, 0x6d, 0x53, 0xe3, 0x3f, 0x2d, 0x0c, 0xc8, 0x09, 0xc8, 0x09, 0xc8,
		0x49, 0x60, 0xb5, 0x84, 0x3c, 0x70, 0xbd, 0x07, 0x0a, 0xe0, 0x74, 0x9e, 0xeb, 0x08, 0x10, 0x12,
		0xc4, 0x84, 0xc4, 0x30, 0xe1, 0x2e, 0x63, 0x46, 0x56, 0xb0, 0xda, 0x73, 0xad, 0xb0, 0xe0, 0x5b,
		0xdf, 0xd4, 0x34, 0x6d, 0x3e, 0xbb, 0xdf, 0x42, 0x13, 0xb0, 0xe9, 0x4d, 0xf2, 0x57, 0xf9, 0x92,
		0xa5, 0xf9, 0xf0, 0x29, 0xcc, 0x8b, 0x74, 0xdb, 0x51, 0x47, 0x08, 0x63, 0x41, 0x92, 0xb6, 0xe6,
		0x23, 0xeb, 0x5a, 0xc3, 0x1e, 0x57, 0xb2, 0x0e, 0xa5, 0x68, 0x95, 0x96, 0x72, 0xa5, 0x0f, 0x01,
		0x6a, 0x00, 0x6a, 0x40, 0x07, 0x6d, 0x15, 0x1d, 0x04, 0x54, 0x93, 0x38, 0x55, 0xa7, 0xef, 0x7a,
		0x2d, 0x6e, 0xf1, 0x21, 0xb0, 0xcd, 0x26, 0xb1, 0xcd, 0xd4, 0x34, 0x00, 0xe1, 0x68, 0x40, 0x38,
		0x6e, 0xd7, 0xf5, 0x1c, 0xf6, 0x53, 0x1d, 0xe1, 0x8c, 0x05, 0x01, 0x2a, 0x00, 0x2a, 0x00, 0x2a,
		0x08, 0xac, 0x96, 0xa1, 0xeb, 0xf1, 0xe3, 0x32, 0x01, 0x52, 0x38, 0x53, 0x10, 0x41, 0x93, 0xb9,
		0x4b, 0xe0, 0xa6, 0x29, 0x33, 0x75, 0xa9, 0x33, 0x74, 0xb5, 0xe5, 0x74, 0xd2, 0xe7, 0x72, 0x12,
		0x64, 0xe2, 0x92, 0x66, 0xe0, 0xa6, 0x53, 0x51, 0x29, 0xbf, 0xaf, 0xbc, 0x3f, 0x3d, 0x2b, 0xbf,
		0x3f, 0xd9, 0xbf, 0x39, 0xd9, 0x2e, 0xf8, 0x81, 0xfd, 0xe4, 0xac, 0x7e, 0x10, 0x1b, 0x9c, 0xd8,
		0x4f, 0xc6, 0x70, 0xe7, 0x30, 0xdc, 0xb9, 0x92, 0x97, 0x7b, 0xc3, 0x84, 0x18, 0xe6, 0xca, 0x18,
		0x1c, 0xd4, 0x87, 0x46, 0xea, 0xe3, 0xa5, 0x71, 0x07, 0xd7, 0xa1, 0x83, 0xeb, 0x20, 0x62, 0x3a,
		0x54, 0x78, 0x0e, 0x92, 0x9d, 0x9c, 0x43, 0x6c, 0xe3, 0x80, 0x9b, 0x01, 0x37, 0x03, 0x6e, 0x06,
		0xdc, 0x0c, 0xb8, 0x19, 0x70, 0x33, 0xfb, 0xc7, 0xcd, 0xe4, 0x02, 0x97, 0x7a, 0x56, 0xc8, 0xc7,
		0x7c, 0x89, 0x32, 0x68, 0x9a, 0x16, 0x06, 0x18, 0x02, 0x18, 0x02, 0x18, 0x22, 0xb0, 0x5a, 0xb8,
		0xdb, 0x67, 0xdc, 0xb5, 0xbf, 0x87, 0x4a, 0x15, 0x5f, 0x08, 0x2a, 0xbd, 0x94, 0xbe, 0x78, 0x23,
		0x43, 0x5e, 0xf2, 0x2c, 0xcf, 0x0f, 0x99, 0xed, 0x7b, 0x8e, 0xd2, 0xc9, 0x4b, 0x60, 0x1b, 0x60,
		0x9b, 0x5c, 0xb0, 0x8d, 0xbe, 0x8a, 0x2f, 0x40, 0x39, 0xba, 0x50, 0x0e, 0x76, 0xa0, 0xb2, 0xba,
		0x59, 0x6c, 0x89, 0x60, 0x07, 0x0a, 0xc3, 0x9d, 0xc3, 0x70, 0x17, 0xf8, 0x44, 0x63, 0xcf, 0x7f,
		0x70, 0x6d, 0xab, 0x47, 0x10, 0xaa, 0x25, 0x82, 0x10, 0xa6, 0x21, 0x4c, 0x43, 0x98, 0x26, 0xb0,
		0x5a, 0x50, 0x03, 0x02, 0x88, 0x09, 0x2e, 0x1c, 0xc3, 0x8d, 0xe1, 0xde, 0x0e, 0xc4, 0xd4, 0x4f,
		0x8b, 0x16, 0xaa, 0x83, 0xa6, 0x29, 0x59, 0xc0, 0x4d, 0xc0, 0x4d, 0xc0, 0x4d, 0xc0, 0x4d, 0xc0,
		0x4d, 0x70, 0xe4, 0x18, 0x6e, 0x0c, 0xf7, 0xce, 0xe1, 0xa6, 0xa4, 0x50, 0xaa, 0x22, 0x62, 0x8a,
		0xa5, 0x00, 0x2b, 0x01, 0x2b, 0x01, 0x2b, 0x09, 0xac, 0x96, 0x6d, 0xad, 0x96, 0x05, 0xa8, 0x04,
		0xdf, 0x0d, 0xdf, 0xbd, 0x79, 0xdf, 0x1d, 0x0d, 0xbf, 0x19, 0x8e, 0x0a, 0x6a, 0x28, 0xbb, 0xf0,
		0x69, 0x61, 0xf0, 0xe4, 0xf0, 0xe4, 0x7b, 0xe0, 0xc9, 0xaf, 0x2c, 0xcf, 0xb1, 0xb8, 0x1f, 0x3c,
		0x47, 0x2e, 0x74, 0xe3, 0x68, 0x80, 0x79, 0xc3, 0x7e, 0x62, 0x4e, 0x29, 0x20, 0x41, 0x45, 0x41,
		0x46, 0xcd, 0x1b, 0xf6, 0xd5, 0x57, 0x6e, 0xdb, 0x6f, 0x8d, 0x00, 0x0e, 0x49, 0xbf, 0xa5, 0xa3,
		0x68, 0x8c, 0xbe, 0xdc, 0x50, 0x9c, 0x62, 0x2c, 0x47, 0xa2, 0x3e, 0x36, 0xff, 0xb8, 0xa6, 0x10,
		0x76, 0x1c, 0x09, 0x6b, 0xd7, 0x5a, 0xed, 0xfa, 0xf5, 0x67, 0x0a, 0x79, 0x95, 0xf8, 0x3d, 0xaf,
		0xff, 0x7d, 0x4d, 0xf4, 0x7c, 0x27, 0xa3, 0x97, 0xbd, 0xbd, 0xaa, 0x5e, 0xb7, 0x29, 0xe4, 0x9d,
		0x46, 0xf2, 0xae, 0x9b, 0xed, 0xfb, 0x9b, 0xdb, 0x5a, 0xab, 0x46, 0x23, 0xf3, 0x2c, 0x92, 0xd9,
		0x68, 0xfe, 0x51, 0xbb, 0xbd, 0x6f, 0x54, 0xff, 0xaa, 0xdd, 0xde, 0xc7, 0x93, 0xb3, 0xd9, 0x46,
		0x8f, 0x7e, 0x5d, 0x61, 0x2b, 0x61, 0x46, 0xd4, 0x78, 0xf0, 0x2f, 0x0c, 0x82, 0x2c, 0xc5, 0xd1,
		0xba, 0xbd, 0x30, 0xca, 0x04, 0xa2, 0x16, 0x46, 0x5c, 0xe9, 0x6c, 0xd3, 0xc4, 0xa0, 0x4d, 0x2d,
		0x8e, 0x0b, 0xe3, 0x94, 0x40, 0xe2, 0x58, 0xbd, 0x2e, 0x8c, 0x63, 0x02, 0x69, 0x63, 0xe5, 0xba,
		0x30, 0x2a, 0x14, 0xd2, 0x6e, 0x22, 0x6b, 0x8b, 0x26, 0x51, 0x88, 0xfb, 0x10, 0xf7, 0x61, 0xb8,
		0x31, 0xdc, 0xb9, 0x86, 0xd9, 0x28, 0x07, 0xb2, 0x3c, 0x96, 0xc8, 0x58, 0x91, 0xb3, 0x39, 0x60,
		0x01, 0xea, 0xa2, 0x6e, 0xba, 0x2e, 0xea, 0xd4, 0x2c, 0xe0, 0xec, 0x2b, 0xe9, 0x15, 0x82, 0x46,
		0x5c, 0xb5, 0x45, 0xa2, 0xc6, 0xd6, 0x88, 0x62, 0x2b, 0x23, 0xfb, 0x28, 0x09, 0x8c, 0x50, 0xe9,
		0xa9, 0x67, 0x89, 0x8f, 0x4b, 0x6a, 0x92, 0xe2, 0xab, 0x05, 0xe7, 0x63, 0xcc, 0x65, 0x08, 0x5e,
		0x26, 0x4b, 0x24, 0xaa, 0x10, 0x88, 0xd3, 0xc4, 0xa1, 0xc4, 0xab, 0x52, 0x18, 0x50, 0x32, 0xaa,
		0x90, 0xcc, 0x3a, 0xce, 0x53, 0x83, 0xf1, 0xc0, 0x14, 0x4c, 0xe7, 0x3f, 0xba, 0x81, 0xdc, 0x84,
		0xdb, 0xe3, 0x55, 0xa6, 0xda, 0xa2, 0x73, 0x24, 0x47, 0x8d, 0x73, 0x3f, 0xda, 0x11, 0xce, 0x5d,
		0x52, 0x75, 0xa8, 0x31, 0xc8, 0xf6, 0xb1, 0xee, 0x72, 0xaa, 0xb5, 0x19, 0x1e, 0x41, 0x56, 0xe5,
		0x66, 0x3c, 0x91, 0xe9, 0x3a, 0xea, 0xd3, 0x3c, 0xed, 0x9c, 0x22, 0x81, 0x8a, 0x73, 0xa2, 0xb6,
		0x01, 0x46, 0xa6, 0x94, 0x94, 0xca, 0xa9, 0x41, 0x49, 0xf3, 0x08, 0x18, 0x48, 0x94, 0x36, 0xdf,
		0x68, 0x41, 0x59, 0x89, 0x89, 0x62, 0x00, 0x55, 0xe2, 0x5c, 0x75, 0x43, 0x6c, 0x61, 0xc5, 0x0d,
		0x3d, 0xb5, 0x2d, 0xb1, 0x05, 0x5f, 0xf9, 0x9e, 0x82, 0x92, 0x1e, 0xbd, 0xe6, 0x57, 0x92, 0x75,
		0x40, 0xb3, 0xfe, 0x35, 0x58, 0xb4, 0x65, 0xc3, 0x77, 0x4a, 0x28, 0x92, 0xa6, 0x64, 0x88, 0xbe,
		0xe1, 0x4c, 0x1f, 0x94, 0xb2, 0xa4, 0xc8, 0x82, 0xf0, 0xb4, 0xae, 0xc5, 0x5b, 0x3d, 0xf2, 0x75,
		0x15, 0xb5, 0x58, 0x5c, 0x7c, 0xd4, 0x45, 0x2e, 0x88, 0x8d, 0xd3, 0xf2, 0xa9, 0x25, 0x2c, 0x51,
		0xb2, 0x72, 0x6a, 0x2b, 0x87, 0xef, 0x2b, 0x98, 0x5d, 0xad, 0x8e, 0x4b, 0x9f, 0xb4, 0xce, 0xab,
		0x02, 0xad, 0x5d, 0x0d, 0xbe, 0xe2, 0xbf, 0xae, 0xf7, 0x5f, 0x3d, 0xbe, 0xe2, 0xe8, 0x9c, 0x50,
		0xe6, 0x8d, 0xc5, 0x39, 0x0b, 0x3c, 0x72, 0x77, 0x51, 0x7a, 0x5d, 0x39, 0x7c, 0xff, 0xf5, 0xd0,
		0xac, 0x74, 0xfe, 0xa9, 0x1c, 0x7e, 0x3d, 0x34, 0xcf, 0x3b, 0x5f, 0x0f, 0xcd, 0xf7, 0x9d, 0x7f,
		0xbe, 0x1e, 0x99, 0xc7, 0xa3, 0x1f, 0xff, 0x3e, 0xfe, 0x15, 0xfd, 0xf6, 0x3e, 0xf9, 0xed, 0xe8,
		0x6d, 0x39, 0xf9, 0xfd, 0xcd, 0xdd, 0xdd, 0xc1, 0x6b, 0x85, 0xcb, 0xff, 0xb9, 0xbb, 0xfb, 0xdf,
		0x37, 0x25, 0xba, 0x85, 0x4a, 0x39, 0xda, 0xcd, 0x56, 0xfd, 0x4f, 0x6d, 0x43, 0xfe, 0x9f, 0x0d,
		0x8f, 0xf9, 0xbf, 0x4a, 0x45, 0xb3, 0x0e, 0xaf, 0x36, 0xfb, 0x1c, 0xaa, 0xb0, 0x9f, 0x70, 0x4b,
		0x2d, 0x95, 0x99, 0xa6, 0xb6, 0x16, 0x16, 0x65, 0x3b, 0x6c, 0x10, 0x30, 0xdb, 0xe2, 0x8c, 0xd4,
		0x78, 0x12, 0xc7, 0xc5, 0xcb, 0xe2, 0xe3, 0x90, 0x6a, 0xd7, 0x2f, 0x97, 0x38, 0x79, 0x69, 0xbc,
		0x3c, 0x35, 0xf6, 0xaf, 0x8a, 0x85, 0x19, 0xb6, 0x5d, 0x97, 0x15, 0xb7, 0xc1, 0x16, 0xe4, 0x3d,
		0x3f, 0xf8, 0xdc, 0xf4, 0x6d, 0xd3, 0xf6, 0xfb, 0x83, 0x80, 0x85, 0x21, 0x73, 0xcc, 0x1e, 0xb3,
		0xba, 0x91, 0xf0, 0x5f, 0x7b, 0x91, 0x38, 0x45, 0x34, 0xa0, 0x7a, 0xf6, 0x17, 0x9f, 0x7a, 0x96,
		0xf7, 0x2e, 0xd9, 0x84, 0x28, 0x72, 0xfb, 0xee, 0x87, 0x68, 0xe9, 0x98, 0x7d, 0x6b, 0x30, 0x50,
		0xc9, 0x29, 0x9e, 0xa4, 0x5b, 0xcf, 0xca, 0xc3, 0xf6, 0x0b, 0xb6, 0x5f, 0x64, 0x3d, 0xd1, 0xbe,
		0x6d, 0xbf, 0x28, 0xee, 0x7c, 0x2e, 0x2c, 0x3c, 0xa5, 0x1d, 0x50, 0x22, 0x55, 0x24, 0x53, 0x49,
		0x4a, 0xd5, 0xd4, 0xa0, 0xa2, 0xba, 0x40, 0x26, 0x36, 0x5f, 0x28, 0xb0, 0x9f, 0x2a, 0x72, 0x53,
		0x55, 0xed, 0x54, 0x10, 0x1f, 0x10, 0x6c, 0xaf, 0x2e, 0x2c, 0xdf, 0x58, 0x2a, 0xd1, 0xec, 0xd1,
		0xec, 0xb5, 0x92, 0xab, 0xbd, 0x0e, 0xf5, 0xd7, 0x68, 0x06, 0xf2, 0x8c, 0x39, 0x49, 0xcd, 0xc2,
		0x66, 0x62, 0x4e, 0x32, 0x33, 0x41, 0x1c, 0x70, 0x12, 0xad, 0x59, 0xb2, 0xbd, 0xdb, 0x85, 0x15,
		0xeb, 0x3a, 0xcc, 0xe3, 0x2e, 0x7f, 0x0e, 0x58, 0x57, 0x07, 0xcd, 0x7c, 0x42, 0x28, 0xb3, 0x9e,
		0x3c, 0xea, 0x07, 0x2b, 0xd4, 0xa0, 0x0f, 0xe3, 0x01, 0x69, 0xdf, 0xd4, 0x3f, 0xde, 0xb7, 0xff,
		0xba, 0xa9, 0xb5, 0xa8, 0x15, 0x22, 0xde, 0x72, 0x0a, 0xc9, 0x29, 0x5b, 0x43, 0xcb, 0xc6, 0xea,
		0xe2, 0x98, 0x1c, 0xfe, 0x79, 0x7e, 0x74, 0x78, 0x58, 0xda, 0x86, 0xad, 0xc3, 0x9c, 0x86, 0xe3,
		0xbc, 0x7a, 0x8e, 0xe1, 0x48, 0x87, 0xe3, 0x3d, 0x56, 0xc7, 0xcc, 0x70, 0x94, 0x31, 0x1c, 0xe9,
		0x70, 0x54, 0xaf, 0xff, 0x2a, 0x15, 0x7c, 0x57, 0xba, 0xb3, 0xa3, 0xd0, 0x81, 0x98, 0x33, 0x4e,
		0xe5, 0x6a, 0xe3, 0x8e, 0xe9, 0x86, 0x91, 0xa2, 0x4f, 0x0e, 0x55, 0x46, 0xeb, 0x82, 0x5e, 0xd0,
		0xe6, 0x81, 0x21, 0xea, 0x42, 0xd4, 0x85, 0xa8, 0x6b, 0x6b, 0xa2, 0x2e, 0x24, 0x81, 0x92, 0xae,
		0x49, 0x24, 0x81, 0x66, 0x5a, 0x7c, 0x48, 0x02, 0x5d, 0x31, 0xb5, 0x48, 0x02, 0xcd, 0x1d, 0x6e,
		0xef, 0x68, 0x12, 0x28, 0xe0, 0x36, 0x01, 0xdc, 0x0e, 0xb9, 0x65, 0x7f, 0x37, 0x47, 0x7a, 0xa3,
		0x09, 0x78, 0xcf, 0xdc, 0x02, 0x10, 0x1c, 0x10, 0x1c, 0x10, 0x7c, 0x1f, 0x21, 0xb8, 0x06, 0x33,
		0x60, 0x10, 0xd5, 0x7a, 0x5c, 0x90, 0x49, 0x52, 0xfb, 0x71, 0x71, 0x80, 0x29, 0x6b, 0x41, 0x2e,
		0x48, 0x3f, 0x8c, 0x46, 0xfa, 0xe6, 0x4b, 0xeb, 0xb7, 0x92, 0x06, 0x68, 0x18, 0x17, 0x9e, 0xbc,
		0x69, 0xde, 0xe8, 0x90, 0x1d, 0x57, 0xa2, 0x6c, 0xfd, 0x51, 0xbd, 0xa1, 0xa5, 0x2d, 0x89, 0x11,
		0x32, 0x61, 0x31, 0xc4, 0x45, 0x6f, 0xd1, 0xbc, 0xd1, 0x13, 0xf4, 0x8c, 0xd6, 0x83, 0x16, 0x20,
		0x3c, 0x9a, 0xb1, 0x0b, 0xa3, 0x5c, 0x50, 0xa8, 0x0a, 0x66, 0xb8, 0x28, 0x50, 0x75, 0xa7, 0xd2,
		0xb8, 0xf5, 0x65, 0x1f, 0xcf, 0xe6, 0xe2, 0x2a, 0x25, 0x23, 0xab, 0x0f, 0xbd, 0xc2, 0xb0, 0x97,
		0x46, 0xb5, 0x9a, 0xc8, 0x12, 0x23, 0x47, 0xe2, 0x0a, 0x96, 0x17, 0x59, 0x46, 0x5e, 0x64, 0x11,
		0xe2, 0x00, 0xe4, 0x45, 0x0a, 0xbc, 0x12, 0xf2, 0x22, 0x41, 0x0f, 0x80, 0x1e, 0x00, 0x3d, 0x50,
		0x38, 0x7a, 0x00, 0x79, 0x91, 0x73, 0x03, 0x82, 0xbc, 0xc8, 0x15, 0x63, 0x82, 0xbc, 0x48, 0xe4,
		0x45, 0xbe, 0x34, 0x1c, 0xc8, 0x8b, 0x44, 0x5e, 0xe4, 0xaa, 0xe1, 0x40, 0x5e, 0xe4, 0x26, 0xc8,
		0x1f, 0xa4, 0x05, 0x22, 0xe8, 0x40, 0xd0, 0x81, 0xa0, 0xa3, 0x70, 0x41, 0x07, 0xd2, 0x02, 0x49,
		0xd7, 0x24, 0xd2, 0x02, 0x33, 0x2d, 0x3e, 0xa4, 0x05, 0xae, 0x98, 0x5a, 0xa4, 0x05, 0xe6, 0x8e,
		0x36, 0x7f, 0xed, 0x5c, 0xf5, 0x37, 0x64, 0xc5, 0x01, 0x81, 0x02, 0x81, 0x02, 0x81, 0x1a, 0xc8,
		0x8a, 0x43, 0x56, 0xdc, 0x48, 0x3a, 0xb2, 0xe2, 0xb4, 0x02, 0x44, 0x64, 0xc5, 0xcd, 0xfb, 0x8c,
		0xbd, 0xc8, 0x8a, 0x43, 0x52, 0xd8, 0x8c, 0xbc, 0xdc, 0x92, 0xc2, 0x24, 0xda, 0xe0, 0xd1, 0x8d,
		0x3c, 0xca, 0x85, 0xbe, 0x34, 0x37, 0x25, 0xa5, 0x8c, 0xb9, 0x60, 0x68, 0x73, 0x2f, 0xc1, 0x05,
		0x69, 0x8f, 0xcc, 0xfb, 0xd6, 0xd4, 0x3d, 0xef, 0x7f, 0xef, 0x59, 0xde, 0x7d, 0x2d, 0xbe, 0xe7,
		0x55, 0x72, 0xcb, 0x02, 0x57, 0x2a, 0x75, 0x3d, 0xe2, 0x52, 0xa5, 0xf3, 0x02, 0x51, 0xab, 0x14,
		0xb5, 0x4a, 0x37, 0x16, 0xb2, 0xa0, 0x56, 0x29, 0x6a, 0x95, 0xe6, 0xcc, 0x4a, 0x20, 0x27, 0x17,
		0x39, 0xb9, 0x2f, 0x08, 0x42, 0x4e, 0x2e, 0xc8, 0x49, 0x90, 0x93, 0x20, 0x27, 0xa9, 0x56, 0x2c,
		0x72, 0x72, 0xe7, 0x06, 0x04, 0x39, 0xb9, 0x2b, 0xc6, 0x04, 0x39, 0xb9, 0xc8, 0xc9, 0x7d, 0x69,
		0x38, 0x90, 0x93, 0x8b, 0x9c, 0xdc, 0x55, 0xc3, 0x81, 0x9c, 0xdc, 0x8d, 0x41, 0x07, 0x14, 0x4f,
		0x52, 0x7a, 0x4d, 0x24, 0x25, 0x23, 0xea, 0x42, 0xd4, 0x85, 0xa8, 0xcb, 0x28, 0xb0, 0xf2, 0x1b,
		0x48, 0x4a, 0x46, 0x52, 0x72, 0x86, 0xc5, 0x87, 0xa4, 0xe4, 0x15, 0x53, 0x8b, 0xa4, 0xe4, 0xdc,
		0xe1, 0x36, 0x6a, 0x95, 0x02, 0x6e, 0xaf, 0x82, 0xdb, 0xc8, 0xca, 0x06, 0x04, 0x07, 0x04, 0x07,
		0x04, 0x47, 0x56, 0xf6, 0xb4, 0x4c, 0x64, 0x65, 0xcf, 0x09, 0x47, 0x56, 0x36, 0xb2, 0xb2, 0xe7,
		0x7d, 0x06, 0x6a, 0x95, 0x02, 0xaa, 0x6a, 0x97, 0xb0, 0x3f, 0x69, 0xe9, 0x73, 0xc9, 0xb8, 0x28,
		0x56, 0x8a, 0x62, 0xa5, 0x1b, 0x0b, 0x0c, 0x90, 0x18, 0x89, 0xc4, 0xc8, 0x17, 0x04, 0x21, 0x31,
		0x12, 0xfc, 0x00, 0xf8, 0x01, 0xf0, 0x03, 0x54, 0x2b, 0x16, 0x89, 0x91, 0x73, 0x03, 0x82, 0xc4,
		0xc8, 0x15, 0x63, 0x82, 0xc4, 0x48, 0x24, 0x46, 0xbe, 0x34, 0x1c, 0x48, 0x8c, 0x44, 0x62, 0xe4,
		0xaa, 0xe1, 0x40, 0x62, 0xe4, 0x26, 0xd8, 0x1f, 0xe4, 0x05, 0x22, 0xe8, 0x40, 0xd0, 0x81, 0xa0,
		0xa3, 0x70, 0x41, 0x07, 0xf2, 0x02, 0x49, 0xd7, 0x24, 0xf2, 0x02, 0x33, 0x2d, 0x3e, 0xe4, 0x05,
		0xae, 0x98, 0x5a, 0xe4, 0x05, 0xe6, 0x8e, 0x36, 0x51, 0xac, 0x74, 0x25, 0xda, 0x44, 0x5a, 0x1c,
		0x10, 0x28, 0x10, 0x28, 0x10, 0x28, 0xd2, 0xe2, 0xa6, 0x65, 0x22, 0x2d, 0x6e, 0x4e, 0x38, 0xd2,
		0xe2, 0x90, 0x16, 0x37, 0xef, 0x33, 0x50, 0xac, 0x54, 0xbf, 0x84, 0xfd, 0xcd, 0x0a, 0x43, 0xb5,
		0xd2, 0xe2, 0x4e, 0x4e, 0x3e, 0xe5, 0x4a, 0xeb, 0xde, 0xb6, 0xd4, 0x2b, 0xed, 0x5b, 0xdc, 0x7e,
		0x54, 0xaf, 0x52, 0x3a, 0x12, 0x83, 0xda, 0xa4, 0xa8, 0x4d, 0xba, 0xb1, 0x08, 0x65, 0xcb, 0x6a,
		0x93, 0x3a, 0xfe, 0xf0, 0x5b, 0x8f, 0x99, 0xdc, 0x7a, 0x78, 0x60, 0x0e, 0x5d, 0x22, 0xee, 0xac,
		0x58, 0x54, 0x2a, 0xcd, 0x91, 0x92, 0x40, 0x42, 0x2e, 0x12, 0x72, 0x5f, 0x10, 0x44, 0x54, 0x8c,
		0x78, 0x61, 0x01, 0x93, 0x14, 0x25, 0x26, 0x56, 0x79, 0xb0, 0x93, 0x60, 0x27, 0xc1, 0x4e, 0x52,
		0x9b, 0x90, 0x54, 0xa0, 0xeb, 0x79, 0x2c, 0x30, 0xa9, 0x53, 0x6e, 0x16, 0xf4, 0x61, 0xf6, 0x36,
		0xc4, 0xf3, 0x4f, 0xbb, 0x0d, 0xa2, 0xcd, 0xe0, 0xe8, 0x34, 0x3c, 0x39, 0x18, 0x20, 0xdd, 0x86,
		0x28, 0x37, 0x83, 0x94, 0x9b, 0x61, 0xca, 0xc7, 0x40, 0xd1, 0x93, 0x86, 0x86, 0x0e, 0xde, 0x98,
		0x7a, 0x5b, 0x65, 0x61, 0xc5, 0xeb, 0x31, 0x2e, 0x86, 0x9e, 0x44, 0x9f, 0x54, 0xb4, 0x9e, 0x84,
		0x9f, 0xf1, 0x7f, 0x7a, 0x34, 0xd4, 0xd0, 0x9d, 0x00, 0x94, 0xde, 0x44, 0x73, 0x22, 0x50, 0x7a,
		0x9f, 0xbc, 0x52, 0x46, 0x26, 0x8b, 0x56, 0x77, 0xea, 0x88, 0x26, 0x3d, 0x9e, 0x5d, 0x02, 0x1a,
		0x13, 0x85, 0x16, 0x96, 0x80, 0xbe, 0x84, 0xa1, 0x7d, 0x58, 0x05, 0xaf, 0xb6, 0x43, 0x6a, 0xa7,
		0xd0, 0x3e, 0x4c, 0x53, 0x55, 0x87, 0x54, 0xbe, 0xf6, 0xea, 0x0e, 0xf4, 0x13, 0x47, 0x38, 0xc4,
		0x25, 0x7f, 0xc8, 0xf3, 0x08, 0x45, 0x66, 0x6f, 0x83, 0x50, 0x04, 0xa1, 0x08, 0x42, 0x11, 0x84,
		0x22, 0x08, 0x45, 0x10, 0x8a, 0x20, 0x14, 0x41, 0x28, 0x82, 0x50, 0x04, 0xa1, 0x08, 0x42, 0x91,
		0xad, 0x0c, 0x45, 0xf6, 0xa2, 0x02, 0xa0, 0xbe, 0xec, 0xb6, 0x38, 0xef, 0xea, 0xdd, 0x4c, 0xd2,
		0x07, 0x49, 0x51, 0x3a, 0xba, 0xf9, 0xa1, 0x38, 0xee, 0x43, 0x53, 0xac, 0x6e, 0x01, 0xf1, 0x51,
		0x14, 0xad, 0x9b, 0xc7, 0x78, 0xe4, 0x1b, 0xe7, 0x65, 0x6c, 0x9c, 0x6f, 0x53, 0x70, 0x88, 0x8d,
		0x73, 0x6c, 0x9c, 0x63, 0xe3, 0x1c, 0x6c, 0x15, 0xd8, 0x2a, 0xb0, 0x55, 0x60, 0xab, 0xc0, 0x56,
		0x81, 0xad, 0x02, 0x5b, 0x05, 0xb6, 0x0a, 0x6c, 0x55, 0x0e, 0x6c, 0x15, 0xf6, 0x87, 0x81, 0xb8,
		0x81, 0xb8, 0x81, 0xb8, 0x81, 0xb8, 0x81, 0xb8, 0x81, 0xb8, 0x81, 0xb8, 0x81, 0xb8, 0x81, 0xb8,
		0x81, 0xb8, 0xb7, 0x03, 0x71, 0x63, 0x1b, 0x94, 0x7c, 0x1b, 0x94, 0xa0, 0x0a, 0x0b, 0xdd, 0xf4,
		0xa0, 0x94, 0x8e, 0xf4, 0x44, 0x96, 0x48, 0x36, 0x90, 0xb3, 0x56, 0x6e, 0xb9, 0x8a, 0x1e, 0xe0,
		0xfe, 0x63, 0xfc, 0x00, 0xed, 0xd1, 0xfd, 0xb7, 0xb0, 0xbb, 0xdb, 0xcc, 0x00, 0x9a, 0xa3, 0xed,
		0xa8, 0x9e, 0x1b, 0x72, 0x4d, 0x75, 0x26, 0xa6, 0xef, 0x80, 0x92, 0x13, 0x39, 0xc6, 0xce, 0x28,
		0x39, 0x81, 0x92, 0x13, 0x2f, 0x08, 0x42, 0xc9, 0x89, 0x82, 0xd2, 0x69, 0xc8, 0x9c, 0xd9, 0x00,
		0x5d, 0x86, 0xcc, 0x19, 0x05, 0x81, 0x33, 0x29, 0x2d, 0x61, 0x4e, 0xa9, 0x33, 0x21, 0x98, 0x7c,
		0x30, 0xf9, 0x1b, 0x34, 0x49, 0xb9, 0x99, 0xa6, 0x7c, 0x4c, 0x94, 0x1e, 0x5e, 0x05, 0x4c, 0xfe,
		0xa2, 0x81, 0x01, 0x93, 0x3f, 0xf5, 0xe0, 0x60, 0xf2, 0x95, 0x16, 0x2d, 0x98, 0x7c, 0xc1, 0x25,
		0x00, 0x26, 0xbf, 0x30, 0xbe, 0x41, 0x9f, 0xd4, 0x62, 0x9f, 0xf4, 0x6a, 0xb8, 0x21, 0xaf, 0x72,
		0x1e, 0xe8, 0xf1, 0x63, 0x57, 0xae, 0x57, 0xeb, 0xb1, 0x08, 0x26, 0x68, 0x5a, 0x7a, 0x91, 0xbe,
		0x4e, 0xdd, 0xe1, 0xe8, 0xbc, 0x52, 0x39, 0x3d, 0xab, 0x54, 0x0e, 0xcf, 0x8e, 0xcf, 0x0e, 0xdf,
		0x9f, 0x9c, 0x1c, 0x9d, 0x52, 0xb6, 0x6b, 0x4e, 0x6f, 0xda, 0x0c, 0x1c, 0x16, 0x30, 0xe7, 0xc3,
		0x73, 0xe9, 0xc2, 0xf0, 0x86, 0xbd, 0x9e, 0xce, 0x5b, 0x7c, 0x09, 0x59, 0xa0, 0x45, 0x97, 0x70,
		0x66, 0x50, 0xbb, 0x09, 0x40, 0x7a, 0x1a, 0x82, 0x5a, 0x04, 0xb5, 0x08, 0x6a, 0x11, 0xd4, 0x22,
		0xa8, 0x45, 0x50, 0x8b, 0x70, 0x06, 0x41, 0x2d, 0x56, 0x01, 0x82, 0x5a, 0x84, 0x22, 0x9b, 0x08,
		0x45, 0x90, 0xb7, 0x47, 0x9d, 0xee, 0x35, 0x95, 0x4b, 0x84, 0x4a, 0x26, 0x59, 0xc1, 0x1f, 0x2a,
		0x99, 0x14, 0x36, 0x6e, 0x44, 0x3e, 0xc6, 0x66, 0xe2, 0x42, 0xe4, 0x63, 0x90, 0x28, 0x04, 0xf2,
		0x31, 0x40, 0x5d, 0x81, 0xba, 0x02, 0x75, 0x05, 0xea, 0x0a, 0xd4, 0x15, 0xa8, 0x2b, 0x50, 0x57,
		0xa0, 0xae, 0x40, 0x5d, 0x6d, 0x1f, 0x75, 0x85, 0x7c, 0x0c, 0x89, 0x9b, 0xee, 0x46, 0x3e, 0x06,
		0xd2, 0x0e, 0x90, 0x76, 0x80, 0xd8, 0x0d, 0xb1, 0x1b, 0x62, 0x37, 0xc4, 0x6e, 0x88, 0xdd, 0x10,
		0xbb, 0x21, 0x76, 0x43, 0xec, 0x86, 0xd8, 0x4d, 0x67, 0xec, 0x86, 0xdd, 0x75, 0x21, 0xb9, 0x1b,
		0xdb, 0x5d, 0x47, 0x81, 0x1c, 0x5d, 0x73, 0xbb, 0xb1, 0x39, 0xdd, 0x74, 0xad, 0x9c, 0x7a, 0xf4,
		0x24, 0x8d, 0xe8, 0x41, 0x76, 0xa4, 0x68, 0xce, 0x28, 0x82, 0x0e, 0x12, 0xb8, 0xa8, 0xb1, 0x76,
		0xce, 0xf4, 0x8d, 0x50, 0x42, 0x27, 0xc7, 0x40, 0x1b, 0x25, 0x74, 0x50, 0x42, 0xe7, 0x05, 0x41,
		0x28, 0xa1, 0x53, 0x50, 0xee, 0x0d, 0x29, 0x5b, 0x1b, 0xe0, 0xd6, 0x90, 0xb2, 0xa5, 0x20, 0x70,
		0xe4, 0xe8, 0x1f, 0xdd, 0x87, 0xc7, 0xbc, 0x3a, 0x50, 0xcd, 0xdc, 0x0b, 0xf4, 0x3f, 0xe8, 0xff,
		0xcd, 0x99, 0xa6, 0xdc, 0x4c, 0x54, 0x3e, 0xa6, 0x4a, 0x0f, 0x19, 0x03, 0xfa, 0x7f, 0xd1, 0xc0,
		0x80, 0xfe, 0x9f, 0x7a, 0x70, 0xd0, 0xff, 0x4a, 0x8b, 0x16, 0xf4, 0xbf, 0xe0, 0x12, 0x00, 0xfd,
		0x5f, 0x18, 0xdf, 0xa0, 0x4f, 0x2a, 0x4e, 0x1d, 0xee, 0x71, 0x01, 0x94, 0x84, 0x3b, 0xf6, 0x7f,
		0xe4, 0x15, 0x93, 0x4c, 0xdf, 0x0a, 0x21, 0x09, 0x42, 0x12, 0x84, 0x24, 0x08, 0x49, 0x10, 0x92,
		0x20, 0x24, 0x41, 0x48, 0x82, 0x90, 0x04, 0x21, 0x09, 0x42, 0x12, 0x84, 0x24, 0xa8, 0xc9, 0xc8,
		0x73, 0xdb, 0x27, 0x59, 0x72, 0x2f, 0x04, 0x25, 0x08, 0x4a, 0x10, 0x94, 0x20, 0x28, 0x41, 0x50,
		0x82, 0xa0, 0x04, 0x41, 0x09, 0x82, 0x12, 0x04, 0x25, 0x08, 0x4a, 0x10, 0x94, 0x20, 0x28, 0xe1,
		0x79, 0xed, 0x93, 0x2c, 0xde, 0x0a, 0x21, 0x09, 0x42, 0x12, 0x84, 0x24, 0x08, 0x49, 0x10, 0x92,
		0x20, 0x24, 0x41, 0x48, 0x82, 0x90, 0x04, 0x21, 0x09, 0x42, 0x12, 0x84, 0x24, 0x28, 0x18, 0x5f,
		0xd0, 0x09, 0xda, 0xc8, 0xf1, 0xe7, 0xa9, 0x03, 0xb4, 0xa8, 0x1b, 0x9f, 0x15, 0x03, 0xa2, 0x6e,
		0x7c, 0x61, 0xc3, 0x47, 0x1c, 0x42, 0xdc, 0x4c, 0x78, 0x88, 0x43, 0x88, 0x64, 0x4a, 0x81, 0x43,
		0x88, 0x60, 0xb2, 0xc0, 0x64, 0x81, 0xc9, 0x02, 0x93, 0x05, 0x26, 0x0b, 0x4c, 0x16, 0x98, 0x2c,
		0x30, 0x59, 0x60, 0xb2, 0x72, 0x62, 0xb2, 0x70, 0xd6, 0x0e, 0x67, 0xed, 0x80, 0xbc, 0x81, 0xbc,
		0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0xf7, 0x16,
		0x79, 0xe3, 0x48, 0x19, 0xb0, 0x37, 0xb0, 0x37, 0xb0, 0x37, 0xb0, 0x37, 0xb0, 0x37, 0xb0, 0x37,
		0xb0, 0x37, 0xb0, 0x37, 0xb0, 0x37, 0xb0, 0x77, 0x9e, 0xd8, 0x1b, 0x27, 0xa7, 0x80, 0xbc, 0x81,
		0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81,
		0xbc, 0x75, 0x49, 0xc2, 0x01, 0xa1, 0x97, 0x0f, 0x08, 0xa1, 0xf5, 0xa5, 0xae, 0x29, 0xde, 0xf4,
		0xd4, 0x16, 0xa2, 0x03, 0x66, 0x33, 0x7a, 0x9e, 0x11, 0xde, 0xda, 0x91, 0x3e, 0x98, 0x39, 0x74,
		0xc0, 0x44, 0xef, 0xcb, 0xdc, 0x03, 0x6e, 0xf4, 0xbe, 0x44, 0xef, 0xcb, 0x17, 0x04, 0xa1, 0xf7,
		0x65, 0x41, 0x39, 0x38, 0x1c, 0x3b, 0xdd, 0x00, 0xc7, 0x86, 0x63, 0xa7, 0x0a, 0x02, 0x71, 0xec,
		0x74, 0x03, 0xa6, 0x47, 0xa7, 0x09, 0xca, 0xc1, 0x14, 0xe9, 0x36, 0x49, 0xb9, 0x99, 0xa6, 0xdc,
		0x4c, 0x54, 0x3e, 0xa6, 0x4a, 0x0f, 0x29, 0x83, 0x6d, 0x80, 0x45, 0x03, 0x83, 0x6d, 0x80, 0xa9,
		0x07, 0xc7, 0x36, 0x80, 0xd2, 0xa2, 0xc5, 0x36, 0x80, 0xe0, 0x12, 0xc0, 0x36, 0x40, 0x61, 0x7c,
		0x83, 0x3e, 0xa9, 0x28, 0xa0, 0x86, 0xde, 0x97, 0x38, 0x8f, 0x8b, 0x90, 0x04, 0x21, 0x09, 0x42,
		0x12, 0x84, 0x24, 0x08, 0x49, 0x10, 0x92, 0x20, 0x24, 0x41, 0x48, 0x82, 0x90, 0x04, 0x21, 0x09,
		0x42, 0x92, 0x4d, 0x84, 0x24, 0xa3, 0x4c, 0x96, 0x9c, 0x0e, 0x4a, 0x20, 0x14, 0x41, 0x28, 0x82,
		0x50, 0x04, 0xa1, 0x08, 0x42, 0x11, 0x84, 0x22, 0x08, 0x45, 0x10, 0x8a, 0x20, 0x14, 0x41, 0x28,
		0xb2, 0x45, 0xa1, 0x48, 0xc3, 0x0d, 0x79, 0x95, 0xf3, 0x40, 0x8f, 0x1f, 0xbb, 0x72, 0xbd, 0x5a,
		0x8f, 0x45, 0x30, 0x41, 0xd3, 0xd2, 0x8b, 0xf4, 0x75, 0xea, 0x0e, 0x47, 0xe7, 0x95, 0xca, 0xe9,
		0x59, 0xa5, 0x72, 0x78, 0x76, 0x7c, 0x76, 0xf8, 0xfe, 0xe4, 0xe4, 0xe8, 0xf4, 0xe8, 0x44, 0xc3,
		0x4d, 0x9b, 0x81, 0xc3, 0x02, 0xe6, 0x7c, 0x78, 0x2e, 0x5d, 0x18, 0xde, 0xb0, 0xd7, 0xd3, 0x79,
		0x8b, 0x2f, 0x21, 0x0b, 0xb4, 0xe8, 0x12, 0x82, 0x5a, 0xfd, 0x41, 0x2d, 0xce, 0x21, 0x69, 0x3a,
		0xac, 0x82, 0x16, 0x45, 0x42, 0x71, 0x04, 0x5a, 0x14, 0x15, 0x96, 0x82, 0x40, 0xae, 0xf8, 0x66,
		0x28, 0x06, 0xe4, 0x8a, 0x93, 0x29, 0x05, 0x72, 0xc5, 0x73, 0x30, 0x41, 0x39, 0x98, 0x22, 0xdd,
		0x26, 0x29, 0x37, 0xd3, 0x94, 0x9b, 0x89, 0xca, 0xc7, 0x54, 0xe9, 0x89, 0x4d, 0xc1, 0x86, 0x2e,
		0x1a, 0x18, 0xb0, 0xa1, 0xb3, 0xc1, 0x3b, 0xd8, 0xd0, 0x2d, 0xe0, 0xc1, 0xc0, 0x86, 0x62, 0x15,
		0xa0, 0x64, 0x4c, 0x71, 0xb4, 0x08, 0x29, 0xd1, 0x40, 0xde, 0x40, 0xde, 0x40, 0xde, 0x40, 0xde,
		0x40, 0xde, 0x40, 0xde, 0x40, 0xde, 0x40, 0xde, 0x40, 0xde, 0x40, 0xde, 0xb9, 0x20, 0x6f, 0x64,
		0xfe, 0x02, 0x71, 0x03, 0x71, 0x03, 0x71, 0x03, 0x71, 0x03, 0x71, 0x03, 0x71, 0x03, 0x71, 0x03,
		0x71, 0x03, 0x71, 0xef, 0x0c, 0xe2, 0x46, 0xe6, 0xef, 0xbc, 0xbe, 0x22, 0xf3, 0x77, 0xd3, 0xb1,
		0x1b, 0x12, 0x5c, 0xb5, 0x26, 0xb8, 0xa2, 0xc4, 0xbe, 0xae, 0xc9, 0xdd, 0xdc, 0xa4, 0x16, 0xa2,
		0xb8, 0xfe, 0x8e, 0xd4, 0xd5, 0x4f, 0x7a, 0xd5, 0xb9, 0x21, 0xd7, 0x55, 0x56, 0x7f, 0xea, 0x0e,
		0xa8, 0xaa, 0x9f, 0x23, 0x4f, 0x83, 0xaa, 0xfa, 0xa8, 0xaa, 0xff, 0x82, 0x20, 0x54, 0xd5, 0xa7,
		0x10, 0x88, 0x93, 0x12, 0x06, 0x4e, 0x4a, 0x6c, 0x19, 0xc8, 0xd7, 0x74, 0x52, 0x22, 0xa7, 0x4c,
		0x2d, 0xec, 0x19, 0x19, 0xd8, 0x33, 0xda, 0xb8, 0x41, 0xca, 0xcd, 0x30, 0xe5, 0x63, 0xa0, 0xf4,
		0x30, 0x78, 0xd8, 0x33, 0x5a, 0x34, 0x30, 0xd8, 0x33, 0x9a, 0xa5, 0x38, 0xb1, 0x67, 0x24, 0xbf,
		0x68, 0xb1, 0x67, 0x24, 0xb8, 0x04, 0xb0, 0x67, 0x54, 0x18, 0xdf, 0xa0, 0x4f, 0x2a, 0x0a, 0x57,
		0xa2, 0x70, 0xe5, 0xc8, 0x8d, 0x87, 0x39, 0xe5, 0xaf, 0x85, 0x08, 0x46, 0x10, 0x8c, 0x20, 0x18,
		0x41, 0x30, 0x82, 0x60, 0x04, 0xc1, 0x08, 0x82, 0x11, 0x04, 0x23, 0x08, 0x46, 0x10, 0x8c, 0x6c,
		0x43, 0x30, 0x82, 0x04, 0x36, 0x89, 0x9b, 0xa2, 0x74, 0x25, 0xc2, 0xda, 0xfc, 0x24, 0x21, 0xb3,
		0x6f, 0x79, 0x2e, 0x11, 0x2a, 0x57, 0x66, 0x0d, 0x23, 0x50, 0xb9, 0xb2, 0xb0, 0x0c, 0x04, 0xf2,
		0x31, 0x36, 0xc3, 0x30, 0x20, 0x1f, 0x83, 0x42, 0x1f, 0x90, 0x8f, 0xa1, 0xd7, 0xf0, 0xe4, 0x60,
		0x80, 0x74, 0x1b, 0xa2, 0xdc, 0x0c, 0x52, 0x6e, 0x86, 0x29, 0x1f, 0x03, 0xa5, 0x27, 0x20, 0x05,
		0x05, 0xba, 0x68, 0x60, 0x40, 0x81, 0xce, 0x46, 0xec, 0xa0, 0x40, 0xb7, 0x80, 0xfc, 0x02, 0x05,
		0x8a, 0x55, 0x80, 0xaa, 0x39, 0xc5, 0xd1, 0x22, 0xa4, 0x1d, 0x00, 0x73, 0x03, 0x73, 0x03, 0x73,
		0x03, 0x73, 0x03, 0x73, 0x03, 0x73, 0x03, 0x73, 0x03, 0x73, 0x03, 0x73, 0xef, 0x12, 0xe6, 0x46,
		0xda, 0xc1, 0xbc, 0xbe, 0x22, 0xed, 0x60, 0xd3, 0xd1, 0x1b, 0x76, 0xd7, 0x75, 0xee, 0xae, 0xa3,
		0x6c, 0x8e, 0xae, 0xb9, 0xdd, 0xd8, 0x9c, 0x6e, 0xba, 0x6a, 0x4e, 0x33, 0x7a, 0x92, 0xc8, 0xf4,
		0xef, 0x4a, 0xd1, 0x9c, 0x20, 0x09, 0x39, 0x34, 0x56, 0xcd, 0xa1, 0x28, 0x77, 0x84, 0xb2, 0x39,
		0x1b, 0xa5, 0x65, 0x50, 0x36, 0xa7, 0x08, 0x46, 0x1c, 0x65, 0x73, 0x8a, 0xa0, 0xfa, 0x3a, 0x4c,
		0x80, 0x46, 0x53, 0xa0, 0xcb, 0x24, 0x68, 0x37, 0x0d, 0xda, 0x4d, 0x84, 0x5e, 0x53, 0x51, 0x4c,
		0x8c, 0x8f, 0x34, 0xad, 0xd5, 0x86, 0x06, 0x5b, 0x46, 0xd8, 0x32, 0x2a, 0x94, 0x61, 0xca, 0xc7,
		0x40, 0xe9, 0x21, 0xf0, 0xb0, 0x65, 0xb4, 0x68, 0x60, 0xb0, 0x65, 0x34, 0xcb, 0x70, 0x62, 0xcb,
		0x48, 0x7e, 0xd1, 0x62, 0xcb, 0x48, 0x70, 0x09, 0x60, 0xcb, 0xa8, 0x30, 0xbe, 0x41, 0x9f, 0x54,
		0x94, 0xcd, 0xd9, 0xfb, 0xb2, 0x39, 0x8f, 0xee, 0xc3, 0x63, 0x5e, 0xad, 0xdf, 0x66, 0xee, 0x85,
		0xa0, 0x04, 0x41, 0x09, 0x82, 0x12, 0x04, 0x25, 0x08, 0x4a, 0x10, 0x94, 0x20, 0x28, 0x41, 0x50,
		0x82, 0xa0, 0x04, 0x41, 0x09, 0x82, 0x12, 0x04, 0x25, 0x71, 0xea, 0x8a, 0xff, 0x23, 0xaf, 0x98,
		0x64, 0xfa, 0x56, 0x08, 0x49, 0x10, 0x92, 0x20, 0x24, 0x41, 0x48, 0x82, 0x90, 0x04, 0x21, 0x09,
		0x42, 0x12, 0x84, 0x24, 0x08, 0x49, 0x10, 0x92, 0x20, 0x24, 0x41, 0x1d, 0xc6, 0x82, 0x4e, 0xd0,
		0x46, 0x4e, 0x15, 0x8c, 0x3a, 0x2c, 0xa3, 0x10, 0x63, 0x46, 0xf4, 0x87, 0x42, 0x8c, 0x85, 0x0d,
		0x1c, 0x91, 0xe1, 0xbb, 0x99, 0xc0, 0x10, 0x19, 0xbe, 0x14, 0xfa, 0x80, 0x0c, 0x5f, 0x30, 0x57,
		0x60, 0xae, 0xc0, 0x5c, 0x81, 0xb9, 0x02, 0x73, 0x05, 0xe6, 0x0a, 0xcc, 0x15, 0x98, 0x2b, 0x30,
		0x57, 0xfa, 0x99, 0x2b, 0x24, 0xb2, 0x22, 0x91, 0x15, 0xd8, 0x1b, 0xd8, 0x1b, 0xd8, 0x1b, 0xd8,
		0x1b, 0xd8, 0x1b, 0xd8, 0x1b, 0xd8, 0x1b, 0xd8, 0x1b, 0xd8, 0x7b, 0xef, 0xb1, 0x37, 0xf2, 0x35,
		0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc,
		0x81, 0xbc, 0x81, 0xbc, 0x75, 0x49, 0x42, 0x5a, 0xe2, 0xaa, 0xb4, 0x44, 0x54, 0xb0, 0xd6, 0x35,
		0xb9, 0x9b, 0x9b, 0xd4, 0x42, 0x94, 0xb0, 0x1e, 0xc1, 0xab, 0x2d, 0xac, 0x61, 0x1d, 0xba, 0xde,
		0x43, 0x3a, 0xac, 0x74, 0x75, 0xab, 0x67, 0xc5, 0xa2, 0x56, 0x75, 0x8e, 0x71, 0x34, 0x6a, 0x55,
		0xa3, 0x56, 0xf5, 0x0b, 0x82, 0x50, 0xab, 0xba, 0xa0, 0xd4, 0x1a, 0x32, 0xd9, 0x37, 0x40, 0x9d,
		0x21, 0x93, 0x5d, 0x41, 0xa0, 0x76, 0x46, 0x1f, 0x3c, 0xbe, 0x01, 0x1e, 0x7f, 0xe3, 0x46, 0x28,
		0x37, 0x63, 0x94, 0x8f, 0x51, 0xd2, 0xc3, 0xaa, 0x80, 0xc7, 0x5f, 0x34, 0x30, 0xe0, 0xf1, 0xa7,
		0x1e, 0x1c, 0x3c, 0xbe, 0xd2, 0xa2, 0x05, 0x8f, 0x2f, 0xb8, 0x04, 0xc0, 0xe3, 0x17, 0xc6, 0x37,
		0xe8, 0x93, 0x8a, 0xba, 0x0b, 0xa8, 0xbb, 0x50, 0xbc, 0x09, 0xd2, 0xce, 0x85, 0xcf, 0xb0, 0xab,
		0xa8, 0xb5, 0x90, 0x15, 0xf1, 0xa1, 0xd6, 0x02, 0x18, 0x2a, 0x30, 0x54, 0x60, 0xa8, 0xc0, 0x50,
		0x81, 0xa1, 0x02, 0x43, 0x05, 0x86, 0x0a, 0x0c, 0x15, 0x18, 0x2a, 0x30, 0x54, 0x60, 0xa8, 0xc0,
		0x50, 0x81, 0xa1, 0xda, 0x12, 0x86, 0x0a, 0x44, 0x4c, 0x81, 0x89, 0x18, 0x64, 0x97, 0xea, 0x9a,
		0xd0, 0x7c, 0x27, 0x72, 0x13, 0x19, 0xa5, 0xad, 0xf8, 0x01, 0x46, 0x19, 0xa5, 0x5b, 0x9f, 0x47,
		0x6a, 0xf6, 0xdc, 0x90, 0x6b, 0x4a, 0x26, 0x1d, 0xc9, 0x46, 0x46, 0x69, 0x8e, 0xf1, 0x32, 0x32,
		0x4a, 0x91, 0x51, 0xfa, 0x82, 0x20, 0x64, 0x94, 0x16, 0x94, 0x42, 0x03, 0x5f, 0xbf, 0x01, 0x8a,
		0x0c, 0x7c, 0xbd, 0x82, 0xc0, 0x84, 0xf1, 0x0a, 0xb5, 0x13, 0xf6, 0x21, 0x18, 0x7b, 0x30, 0xf6,
		0x1b, 0x34, 0x43, 0xb9, 0x99, 0xa3, 0x7c, 0xcc, 0x92, 0x1e, 0xfe, 0x04, 0x8c, 0xfd, 0xa2, 0x81,
		0x01, 0x63, 0x3f, 0xf5, 0xe0, 0x60, 0xec, 0x95, 0x16, 0x2d, 0x18, 0x7b, 0xc1, 0x25, 0x00, 0xc6,
		0xbe, 0x30, 0xbe, 0x41, 0x9f, 0xd4, 0x62, 0xe7, 0x94, 0x36, 0xdc, 0x90, 0x57, 0x39, 0x0f, 0xf4,
		0xf8, 0xb1, 0x2b, 0xd7, 0xab, 0xf5, 0x58, 0x04, 0x13, 0x34, 0x2d, 0xbd, 0x48, 0x5f, 0xa7, 0xee,
		0x70, 0x74, 0x5e, 0xa9, 0x9c, 0x9e, 0x55, 0x2a, 0x87, 0x67, 0xc7, 0x67, 0x87, 0xef, 0x4f, 0x4e,
		0x8e, 0x4e, 0x8f, 0x4e, 0x34, 0xdc, 0xb4, 0x19, 0x38, 0x2c, 0x60, 0xce, 0x87, 0xe7, 0xd2, 0x85,
		0xe1, 0x0d, 0x7b, 0x3d, 0x9d, 0xb7, 0xf8, 0x12, 0xb2, 0x40, 0x8b, 0x2e, 0x21, 0x3b, 0x59, 0xbb,
		0x09, 0xc0, 0xa6, 0x18, 0xf9, 0x5e, 0x4a, 0x4c, 0xd7, 0x23, 0x45, 0x39, 0x6b, 0x00, 0x81, 0x14,
		0xe5, 0xc2, 0x72, 0x0f, 0xa0, 0x3c, 0x37, 0xc3, 0x2d, 0x80, 0xf2, 0xa4, 0x21, 0x25, 0x40, 0x79,
		0x82, 0xf2, 0xdc, 0xa4, 0x19, 0xca, 0xcd, 0x1c, 0xe5, 0x63, 0x96, 0xf4, 0x04, 0xa0, 0xa0, 0x3c,
		0x17, 0x0d, 0x0c, 0x28, 0xcf, 0xd9, 0x08, 0x1d, 0x94, 0xe7, 0x16, 0x90, 0x5d, 0xa0, 0x3c, 0xb1,
		0x0a, 0x40, 0x79, 0x92, 0x4c, 0x17, 0x28, 0x4f, 0x89, 0x9b, 0xee, 0x06, 0xe5, 0x09, 0x66, 0x4f,
		0x8c, 0x94, 0xca, 0x9f, 0xd9, 0x43, 0xce, 0xbb, 0xae, 0x59, 0xdd, 0xc0, 0x6c, 0x6e, 0x3a, 0xf1,
		0x3d, 0xb2, 0xf4, 0xdb, 0x9f, 0xfc, 0x1e, 0x24, 0xb1, 0x85, 0x96, 0xec, 0x77, 0x8a, 0x92, 0xd7,
		0x48, 0x7f, 0xdf, 0x28, 0xf3, 0x82, 0xf4, 0xf7, 0x22, 0x58, 0x6b, 0xa4, 0xbf, 0x17, 0x41, 0xf5,
		0x75, 0x98, 0x00, 0x8d, 0xa6, 0x40, 0x97, 0x49, 0xd0, 0x6e, 0x1a, 0xb4, 0x9b, 0x08, 0xbd, 0xa6,
		0xa2, 0x98, 0x30, 0x9e, 0x7c, 0x2f, 0x28, 0x9f, 0x16, 0xe5, 0x68, 0x4e, 0xae, 0xd5, 0xec, 0xe4,
		0x60, 0x7e, 0x74, 0x9b, 0xa1, 0xdc, 0xcc, 0x51, 0x6e, 0x66, 0x29, 0x1f, 0xf3, 0xa4, 0x87, 0xa1,
		0xc3, 0x9e, 0xd0, 0xa2, 0x81, 0xc1, 0x9e, 0xd0, 0x2c, 0x85, 0x89, 0x3d, 0x21, 0xf9, 0x45, 0x8b,
		0x3d, 0x21, 0xc1, 0x25, 0x80, 0x3d, 0xa1, 0xc2, 0xf8, 0x06, 0x7d, 0x52, 0x51, 0x5a, 0x79, 0xdb,
		0x92, 0x97, 0x09, 0xc3, 0xdb, 0x5c, 0xfa, 0xb5, 0xa3, 0x53, 0x3b, 0xc2, 0x10, 0x84, 0x21, 0x08,
		0x43, 0x10, 0x86, 0x20, 0x0c, 0x41, 0x18, 0x82, 0x30, 0x04, 0x61, 0x08, 0xc2, 0x10, 0x84, 0x21,
		0x5b, 0x1f, 0x86, 0x20, 0xd3, 0x8a, 0x3c, 0x37, 0x67, 0xd4, 0xbc, 0x1e, 0x87, 0x28, 0x33, 0xe2,
		0x3e, 0x1c, 0xa2, 0x2c, 0x6c, 0xc8, 0x88, 0x8d, 0xf3, 0xcd, 0x84, 0x84, 0xd8, 0x38, 0x27, 0x50,
		0x07, 0x6c, 0x9c, 0x83, 0xb1, 0x02, 0x63, 0x05, 0xc6, 0x0a, 0x8c, 0x15, 0x18, 0x2b, 0x30, 0x56,
		0x60, 0xac, 0xc0, 0x58, 0x81, 0xb1, 0xd2, 0xce, 0x58, 0x61, 0x7f, 0x18, 0x68, 0x1b, 0x68, 0x1b,
		0x68, 0x1b, 0x68, 0x1b, 0x68, 0x1b, 0x68, 0x1b, 0x68, 0x1b, 0x68, 0x1b, 0x68, 0x1b, 0x68, 0xbb,
		0xf8, 0x68, 0x1b, 0xdb, 0xa0, 0x9a, 0xb6, 0x41, 0x51, 0x71, 0x42, 0xd7, 0xb4, 0x6e, 0x62, 0x3a,
		0x37, 0x5d, 0x72, 0x62, 0x84, 0xa6, 0x36, 0x55, 0x73, 0xe2, 0x55, 0x8e, 0xab, 0x86, 0x6a, 0xb5,
		0xe8, 0x5e, 0x25, 0x25, 0x95, 0x42, 0x1c, 0x62, 0x2b, 0x41, 0x6e, 0xde, 0xc5, 0x67, 0x4d, 0x62,
		0xc6, 0x14, 0x73, 0x23, 0x48, 0x72, 0x21, 0x14, 0x73, 0x1f, 0x94, 0x73, 0x1d, 0x28, 0x68, 0x0f,
		0x42, 0x7a, 0x83, 0x8a, 0xc6, 0x20, 0xa7, 0x2b, 0xc8, 0x69, 0x09, 0x5a, 0xfa, 0x21, 0x5f, 0x2b,
		0xa7, 0x9a, 0x5b, 0x50, 0xa2, 0xe2, 0x35, 0x89, 0x69, 0x06, 0x22, 0xce, 0x12, 0x45, 0x7b, 0x0a,
		0xc6, 0x31, 0xa2, 0x68, 0xcf, 0x26, 0x38, 0xc1, 0x74, 0xc5, 0x0d, 0xbd, 0x08, 0x0f, 0x11, 0xac,
		0xb7, 0xb1, 0xaf, 0x7c, 0x4f, 0x20, 0x2b, 0x79, 0x4d, 0x1a, 0x86, 0x4f, 0x43, 0x5e, 0x20, 0x3d,
		0x71, 0xaa, 0x81, 0x30, 0xd5, 0x44, 0x94, 0xea, 0x29, 0x41, 0xaa, 0x6f, 0x6f, 0x44, 0x33, 0x21,
		0x9a, 0x1b, 0x05, 0xa6, 0x9f, 0xfa, 0xfa, 0xa5, 0xa7, 0xf6, 0xab, 0xfe, 0xa9, 0xd5, 0x47, 0x74,
		0xee, 0xd2, 0xec, 0x16, 0x94, 0x28, 0xec, 0x14, 0x89, 0x28, 0xd4, 0xe0, 0x2b, 0xfe, 0xeb, 0x7a,
		0xff, 0xd5, 0xe3, 0x2b, 0x8e, 0xce, 0x09, 0x65, 0xde, 0x58, 0x9c, 0xb3, 0xc0, 0x23, 0x77, 0x17,
		0xa5, 0xd7, 0x95, 0xc3, 0xf7, 0x5f, 0x0f, 0xcd, 0x4a, 0xe7, 0x9f, 0xca, 0xe1, 0xd7, 0x43, 0xf3,
		0xbc, 0xf3, 0xf5, 0xd0, 0x7c, 0xdf, 0xf9, 0xe7, 0xeb, 0x91, 0x79, 0x3c, 0xfa, 0xf1, 0xef, 0xe3,
		0x5f, 0xd1, 0x6f, 0xef, 0x93, 0xdf, 0x8e, 0xde, 0x96, 0x93, 0xdf, 0xdf, 0xdc, 0xdd, 0x1d, 0xbc,
		0x56, 0xb8, 0xfc, 0x9f, 0xbb, 0xbb, 0xff, 0x7d, 0x43, 0xb7, 0x6b, 0xdc, 0xa1, 0x1c, 0xed, 0x66,
		0xab, 0xfe, 0xa7, 0xb6, 0x21, 0xff, 0xcf, 0x86, 0xc7, 0xfc, 0x5f, 0xa5, 0xa2, 0x59, 0x87, 0x57,
		0x9b, 0x7d, 0x0e, 0x55, 0xd8, 0xcf, 0x7e, 0xf2, 0xc0, 0x32, 0x87, 0x5e, 0xc8, 0xad, 0x6f, 0x3d,
		0xa2, 0x00, 0x20, 0xe4, 0x16, 0x1f, 0x86, 0x45, 0x46, 0xd9, 0x0e, 0x1b, 0x04, 0xcc, 0xb6, 0x38,
		0x73, 0xb6, 0xec, 0x00, 0x4e, 0x32, 0xb4, 0xdb, 0x7c, 0x00, 0x67, 0x6a, 0xec, 0x8b, 0xb6, 0x25,
		0xb8, 0x69, 0x5d, 0xc6, 0x6e, 0x07, 0xd1, 0x6e, 0x87, 0xc2, 0x46, 0xa6, 0xc4, 0x16, 0xc4, 0x2b,
		0x8d, 0x83, 0xae, 0x3a, 0xd8, 0xfa, 0x06, 0xb9, 0x24, 0xb5, 0xf3, 0x92, 0x71, 0x13, 0x49, 0x6c,
		0xee, 0xb2, 0xcf, 0x40, 0xb6, 0x6f, 0x66, 0x9c, 0xa3, 0xc8, 0x30, 0x47, 0xef, 0xe1, 0x7a, 0x0e,
		0xcb, 0xca, 0x59, 0xca, 0xb5, 0x5c, 0x91, 0x6f, 0xa5, 0x42, 0xda, 0x22, 0x45, 0xa1, 0xf5, 0x89,
		0x42, 0x4b, 0x93, 0xac, 0xb3, 0x51, 0x1d, 0x3e, 0x44, 0xaf, 0xc9, 0x1c, 0x21, 0xe4, 0x21, 0xa6,
		0x52, 0x29, 0x82, 0x78, 0xe7, 0xdb, 0xa6, 0xdb, 0xbd, 0x98, 0x52, 0x90, 0xb9, 0x0f, 0x92, 0xdf,
		0x67, 0x95, 0x68, 0xf1, 0x33, 0x41, 0x2d, 0x2a, 0x7d, 0x64, 0xa1, 0x1d, 0xb8, 0x83, 0xc4, 0x1e,
		0x94, 0xea, 0x37, 0x4f, 0x15, 0xc3, 0x72, 0x9c, 0x80, 0x85, 0xa1, 0xd1, 0xb5, 0xfa, 0x6e, 0xef,
		0xd9, 0x18, 0xa9, 0xf7, 0x30, 0x88, 0x8d, 0x86, 0xd1, 0xf5, 0x83, 0x3b, 0x6f, 0xf2, 0x08, 0xa2,
		0xf7, 0x93, 0xdb, 0xa7, 0x94, 0xde, 0x0a, 0x51, 0xd9, 0xfa, 0x98, 0xde, 0xea, 0x70, 0x07, 0x32,
		0xe6, 0x49, 0x11, 0xc0, 0x91, 0x6d, 0x64, 0x90, 0x01, 0xb2, 0xf9, 0x8d, 0x0a, 0x77, 0x50, 0x2a,
		0x98, 0x7b, 0x93, 0xdd, 0x53, 0x2c, 0xb9, 0x83, 0xa7, 0x8a, 0xfa, 0x1e, 0x7e, 0x2c, 0x45, 0x76,
		0x3b, 0x74, 0x56, 0x15, 0x6f, 0xac, 0xc0, 0xea, 0x33, 0xce, 0x82, 0x30, 0xd2, 0x39, 0x83, 0x3f,
		0x32, 0x63, 0x89, 0x76, 0x1e, 0x6c, 0x3a, 0x61, 0xe0, 0xb0, 0x18, 0x09, 0x03, 0x52, 0x0a, 0x4a,
		0x1d, 0x69, 0x6d, 0x5f, 0xba, 0x80, 0x8c, 0x02, 0x2b, 0x06, 0x09, 0xba, 0x0d, 0xc6, 0x2b, 0x0d,
		0xa6, 0x65, 0xeb, 0x9d, 0xfa, 0x29, 0x9c, 0x3a, 0x9c, 0xfa, 0x5e, 0x3a, 0xf5, 0x53, 0x12, 0xa7,
		0x7e, 0xaa, 0xd5, 0xa9, 0x9f, 0xc2, 0xa9, 0xc3, 0xa9, 0xc3, 0xa9, 0xc3, 0xa9, 0x0b, 0x58, 0x92,
		0xaa, 0xe3, 0x84, 0xc6, 0xef, 0x8d, 0xea, 0xb5, 0x11, 0x32, 0xce, 0x5d, 0xef, 0x21, 0x34, 0xb8,
		0x6f, 0xb8, 0x9e, 0xe3, 0x3e, 0xb9, 0xce, 0xd0, 0xea, 0x19, 0x33, 0xf7, 0xdf, 0x13, 0x8f, 0x2e,
		0xcb, 0x23, 0xee, 0xbc, 0x4f, 0x97, 0xcb, 0x28, 0x2c, 0xa8, 0x57, 0x8f, 0x5f, 0x46, 0xd9, 0xab,
		0x2b, 0x64, 0xaf, 0xce, 0xeb, 0x62, 0xcd, 0xb3, 0x7b, 0x7e, 0xe8, 0x7a, 0x0f, 0x11, 0xac, 0xe6,
		0x96, 0xeb, 0xb1, 0x20, 0x76, 0xef, 0xb1, 0x7a, 0xa6, 0x4a, 0x68, 0x86, 0x03, 0x66, 0xbb, 0x5d,
		0xd7, 0xbe, 0xf3, 0x1c, 0x8b, 0x5b, 0x86, 0xef, 0x29, 0xe9, 0xe8, 0xae, 0x3a, 0x7d, 0xa4, 0xfe,
		0xe7, 0xaa, 0xe3, 0x3b, 0xe3, 0xf8, 0x33, 0x7d, 0xb3, 0x93, 0x95, 0xfb, 0x97, 0xdb, 0x25, 0xd3,
		0xb2, 0x3b, 0x26, 0xb0, 0xee, 0x32, 0x6d, 0x88, 0x65, 0x5b, 0x23, 0xeb, 0xc7, 0xf3, 0xe5, 0x6f,
		0xac, 0xf1, 0x06, 0xa2, 0x23, 0x4c, 0x35, 0xb2, 0x2f, 0xbf, 0xfc, 0xea, 0x57, 0x5a, 0xfe, 0x97,
		0x15, 0x2f, 0x39, 0xde, 0xc8, 0x8b, 0xe7, 0x61, 0xc5, 0x57, 0x32, 0xed, 0xdb, 0x65, 0xdf, 0xa7,
		0x53, 0xda, 0x97, 0x13, 0xd8, 0x87, 0x13, 0xd8, 0x77, 0x5b, 0x35, 0x38, 0xd9, 0xf6, 0xd5, 0x5e,
		0x5e, 0x12, 0xd9, 0xd1, 0xf8, 0x1a, 0xed, 0x59, 0x0a, 0xab, 0x67, 0xc9, 0x31, 0xcb, 0x73, 0x8c,
		0x38, 0x01, 0x20, 0xf6, 0xe9, 0x81, 0x3f, 0xe4, 0xcc, 0x99, 0x73, 0xed, 0xeb, 0x7c, 0x77, 0x46,
		0x1f, 0x9d, 0xd9, 0x17, 0x8b, 0xf8, 0x5c, 0x09, 0xdf, 0x2a, 0xea, 0x43, 0xa5, 0x7d, 0xa5, 0xb4,
		0x4f, 0x94, 0xf3, 0x7d, 0x6a, 0x16, 0x2b, 0x2b, 0x5e, 0x2d, 0x8d, 0x96, 0x88, 0x29, 0x04, 0x53,
		0xd3, 0x59, 0x9a, 0xbe, 0x38, 0xe3, 0x58, 0xcc, 0x2d, 0xe1, 0xb6, 0x3f, 0x30, 0x7b, 0xec, 0x89,
		0xf5, 0xe6, 0xd0, 0x68, 0xb2, 0x72, 0x23, 0xc9, 0x53, 0x2b, 0xf7, 0xc0, 0x30, 0xda, 0x8f, 0x2c,
		0x64, 0x77, 0x5e, 0xcf, 0x7f, 0x70, 0x6d, 0xab, 0x37, 0xf5, 0x37, 0xc3, 0x0a, 0x98, 0x61, 0xf5,
		0x42, 0xdf, 0xf8, 0xee, 0xf9, 0x3f, 0x3c, 0xc3, 0x0a, 0x8d, 0xd6, 0xef, 0x75, 0xe3, 0x75, 0xf8,
		0xc3, 0xe5, 0xf6, 0x63, 0x24, 0xcb, 0x0d, 0xf8, 0xd0, 0xea, 0x4d, 0x71, 0xc7, 0x6f, 0xde, 0x1a,
		0xf5, 0xdb, 0x0f, 0xc6, 0xeb, 0xe8, 0x83, 0x87, 0xc0, 0x8a, 0x6e, 0x18, 0xdd, 0x37, 0xc2, 0xc6,
		0x91, 0x1e, 0x7d, 0x0b, 0x5c, 0xe7, 0xc1, 0xf5, 0x1e, 0xde, 0xbc, 0x35, 0x6e, 0x7f, 0xaf, 0xdf,
		0x79, 0xaf, 0x97, 0xaa, 0xd3, 0x9b, 0xac, 0x6f, 0x2e, 0x06, 0x7d, 0x85, 0xa1, 0xae, 0x0c, 0xb4,
		0x55, 0x80, 0xb2, 0xb2, 0xd0, 0x55, 0x19, 0xaa, 0x2a, 0x43, 0x53, 0x35, 0x28, 0x4a, 0x9b, 0x44,
		0xa3, 0x90, 0x81, 0x5a, 0xfa, 0xf1, 0xc8, 0xc4, 0x93, 0x9c, 0x15, 0x28, 0x0b, 0x7b, 0x18, 0x04,
		0xcc, 0xe3, 0xaf, 0xdf, 0x24, 0x5e, 0x6b, 0xe4, 0x78, 0x92, 0x5f, 0xf8, 0xf3, 0x80, 0x19, 0xff,
		0xd7, 0xf8, 0x1f, 0xd7, 0xf2, 0x2c, 0xb7, 0xcb, 0x2f, 0x7a, 0xc7, 0xee, 0x20, 0x1a, 0xd8, 0xff,
		0xd9, 0x30, 0xc3, 0x11, 0x0f, 0x52, 0x91, 0xf8, 0x0d, 0xc9, 0x51, 0xcc, 0xa5, 0x36, 0xc0, 0xac,
		0x6d, 0x56, 0xa4, 0x2c, 0xaa, 0x36, 0x77, 0x9f, 0x98, 0x11, 0x4d, 0x40, 0xbc, 0x75, 0x90, 0x1a,
		0x4c, 0xc3, 0x0d, 0x0d, 0xcb, 0x58, 0x30, 0xe0, 0xc6, 0x20, 0xf0, 0x9f, 0x5c, 0xc7, 0xf5, 0x1e,
		0xee, 0xbc, 0xc6, 0x71, 0x6a, 0x88, 0xc7, 0xd4, 0x84, 0x34, 0xe3, 0x40, 0x10, 0x62, 0x4f, 0x2f,
		0x28, 0x67, 0x6a, 0x8c, 0x14, 0x02, 0x7f, 0xca, 0xf8, 0x7a, 0x66, 0x7d, 0x91, 0x0f, 0xfb, 0x96,
		0x87, 0xda, 0x9d, 0x7c, 0x02, 0xc8, 0x57, 0x12, 0x7a, 0xb8, 0xc9, 0xa8, 0xa1, 0x51, 0xfd, 0x3c,
		0x17, 0x39, 0x70, 0x7f, 0x6e, 0xbd, 0xf4, 0x7d, 0x67, 0xd8, 0x63, 0x5b, 0x12, 0x2c, 0xf4, 0xac,
		0x87, 0x9d, 0x8c, 0x15, 0xa2, 0xf7, 0x2a, 0x4a, 0xa8, 0x60, 0x3d, 0x3c, 0x04, 0xf1, 0x71, 0x4a,
		0x5f, 0x22, 0x54, 0x98, 0xbe, 0x58, 0x2e, 0x54, 0x68, 0xc6, 0x3f, 0x8d, 0xf6, 0xa2, 0x97, 0xc0,
		0xff, 0x80, 0x0d, 0x02, 0x16, 0x32, 0x8f, 0xc7, 0xa6, 0x6c, 0x7c, 0xbb, 0xcc, 0x4c, 0x75, 0xd1,
		0xe1, 0x79, 0xb6, 0x05, 0xbe, 0x7b, 0xe8, 0x3c, 0x93, 0x02, 0x00, 0x9c, 0x67, 0x00, 0x93, 0x2e,
		0x63, 0xec, 0xfc, 0xb0, 0x7c, 0x6c, 0x39, 0x0d, 0xeb, 0x01, 0xb8, 0x7c, 0x49, 0x2a, 0x82, 0xd8,
		0x00, 0x6e, 0x1f, 0x24, 0xb7, 0x5e, 0xc2, 0x86, 0x21, 0xe3, 0x31, 0x06, 0x88, 0x5e, 0xba, 0x51,
		0xfd, 0x0c, 0xb8, 0x9d, 0x69, 0xd9, 0x08, 0x0d, 0x29, 0xa0, 0xf4, 0x2e, 0x42, 0x69, 0xcb, 0x71,
		0xdc, 0xe8, 0x03, 0xab, 0x67, 0xb4, 0x9a, 0xd7, 0xb5, 0xf6, 0xbb, 0xd6, 0xc7, 0xdf, 0xd2, 0xed,
		0x73, 0x23, 0xde, 0x3d, 0xe7, 0xfe, 0x9d, 0xe7, 0x87, 0x76, 0x04, 0xa9, 0x59, 0x6f, 0x5b, 0x10,
		0xb5, 0xeb, 0x31, 0xd3, 0xf6, 0xfb, 0xbb, 0x09, 0xab, 0xc7, 0x2f, 0x57, 0x14, 0x6c, 0x1d, 0xfa,
		0x1e, 0xe3, 0xe2, 0xa8, 0x7a, 0x74, 0x99, 0x1c, 0x9e, 0xfe, 0x18, 0xad, 0xcc, 0x80, 0xf5, 0x62,
		0xde, 0x9b, 0xfb, 0x93, 0xc5, 0x6b, 0x08, 0xa7, 0x79, 0x14, 0x1e, 0x3c, 0x67, 0x5f, 0xcb, 0x3b,
		0x88, 0xa0, 0x33, 0xaf, 0x75, 0x41, 0x18, 0xad, 0x59, 0x77, 0x24, 0xe0, 0xb7, 0x18, 0xec, 0x96,
		0x5b, 0x4b, 0xeb, 0x50, 0x62, 0xac, 0x92, 0xff, 0x93, 0xf3, 0x4a, 0x93, 0x80, 0xd3, 0xe4, 0xeb,
		0x2c, 0xe3, 0xc0, 0xe8, 0xc8, 0x8e, 0x55, 0x82, 0xc9, 0x13, 0xc6, 0x7a, 0xe2, 0xc8, 0x27, 0x30,
		0x6e, 0x96, 0x24, 0x1b, 0x4c, 0x52, 0xe2, 0xa3, 0x21, 0xbf, 0xf3, 0x66, 0x31, 0x5f, 0xfc, 0xca,
		0x6e, 0x38, 0x31, 0xa5, 0xa2, 0x73, 0xa2, 0x80, 0x9e, 0xe9, 0x50, 0x33, 0x09, 0x5a, 0x9e, 0x25,
		0xa5, 0x35, 0x8c, 0xec, 0x66, 0x0f, 0xc9, 0xbf, 0x52, 0x03, 0xcb, 0xdb, 0x08, 0x72, 0x93, 0x09,
		0xac, 0xf1, 0x47, 0x16, 0x78, 0x8c, 0x4f, 0x20, 0xee, 0x3c, 0x8f, 0x3c, 0x7d, 0x3a, 0x6b, 0xab,
		0x20, 0x2f, 0xe3, 0x8f, 0x3b, 0x89, 0x76, 0xa3, 0xf7, 0x2a, 0x0a, 0xd0, 0x65, 0xc9, 0xf2, 0x11,
		0xc7, 0xba, 0xe9, 0x95, 0xb4, 0x99, 0x26, 0x63, 0xb1, 0xb3, 0xcb, 0xf8, 0xce, 0x4b, 0x33, 0xa9,
		0x76, 0x04, 0x03, 0x67, 0x5b, 0xdc, 0xbb, 0x07, 0x7f, 0x33, 0x2d, 0x7e, 0x10, 0xc8, 0x19, 0x00,
		0xdc, 0x58, 0x53, 0x2e, 0xc3, 0xbe, 0x65, 0x3b, 0xff, 0x63, 0xf8, 0x81, 0x01, 0xda, 0x59, 0x3f,
		0xed, 0x4c, 0x32, 0xec, 0x5b, 0x98, 0x3f, 0x42, 0x86, 0x19, 0xc7, 0x88, 0xe5, 0xad, 0x91, 0x9c,
		0x62, 0x9d, 0xcd, 0x89, 0xf0, 0x8c, 0x74, 0xb3, 0x70, 0x0a, 0xb9, 0x1c, 0x80, 0x00, 0xcf, 0x19,
		0xda, 0x4b, 0x4e, 0x13, 0x48, 0x75, 0x35, 0x52, 0x7d, 0xe9, 0x5f, 0x3a, 0xab, 0xd2, 0xe1, 0xb3,
		0x1d, 0x84, 0x90, 0x3f, 0x00, 0xf1, 0xc2, 0x1a, 0x5f, 0x75, 0x5e, 0x64, 0xf9, 0x0a, 0x58, 0x7c,
		0xaf, 0xd9, 0x4f, 0xe6, 0xec, 0xdb, 0xba, 0x37, 0x13, 0x7d, 0xa3, 0xd9, 0x87, 0x9a, 0xdc, 0x7a,
		0xea, 0xb6, 0xa5, 0xef, 0xec, 0xd9, 0x7e, 0xb4, 0x5c, 0x2f, 0x5c, 0xb8, 0x63, 0x6a, 0x04, 0x27,
		0x5f, 0x99, 0x7b, 0xdc, 0xe5, 0x60, 0x73, 0x25, 0xa8, 0x7c, 0x09, 0x3c, 0x4e, 0x43, 0x80, 0xf1,
		0xfd, 0x96, 0x4c, 0xc3, 0x3a, 0xc3, 0x96, 0x19, 0xf9, 0x65, 0xb6, 0x45, 0xf3, 0x8e, 0x32, 0x7d,
		0x38, 0xc1, 0xa9, 0x5d, 0x15, 0x9b, 0xa4, 0xa3, 0xbb, 0xfa, 0x9d, 0xe6, 0xe7, 0x61, 0xd5, 0x2b,
		0xbd, 0x8c, 0xfd, 0xd7, 0x62, 0xfd, 0x2c, 0xd8, 0x3e, 0xe3, 0x34, 0x89, 0xfa, 0x21, 0x61, 0xc0,
		0x2e, 0xec, 0x4a, 0xb2, 0x4f, 0xe3, 0xcb, 0x36, 0x69, 0xd5, 0x11, 0x9d, 0x75, 0xa1, 0x67, 0xc9,
		0x1e, 0x8f, 0x7e, 0x46, 0x02, 0x25, 0xf9, 0xfe, 0x76, 0x70, 0x16, 0x19, 0x96, 0xc2, 0xf6, 0x12,
		0x17, 0xeb, 0x97, 0x4a, 0xce, 0xec, 0x45, 0xe2, 0x7c, 0x04, 0x99, 0x8b, 0x17, 0x8e, 0xd6, 0xad,
		0x5a, 0x56, 0x87, 0x05, 0x65, 0x11, 0x04, 0x96, 0xdb, 0xee, 0x51, 0x09, 0xd9, 0x97, 0xa3, 0x1e,
		0x3e, 0x41, 0xb8, 0x4d, 0xd1, 0x54, 0xbb, 0xbe, 0xc0, 0xf5, 0x84, 0x12, 0x08, 0xd3, 0x66, 0x08,
		0xb4, 0x65, 0x4a, 0x25, 0x8f, 0x2a, 0x3f, 0x3f, 0xf8, 0xdc, 0xf4, 0x6d, 0xd3, 0xf6, 0xfb, 0x83,
		0x80, 0x85, 0x21, 0x73, 0xcc, 0x1e, 0xb3, 0xba, 0x91, 0x10, 0xb2, 0xcd, 0xca, 0x0c, 0x06, 0x94,
		0xfb, 0x3d, 0x16, 0x58, 0x9e, 0x2d, 0x61, 0x03, 0x26, 0x97, 0xc2, 0x10, 0xc0, 0x10, 0x6c, 0xcc,
		0x10, 0x88, 0xf6, 0x25, 0x93, 0xe9, 0x3f, 0x26, 0xd7, 0x67, 0x4c, 0x81, 0xbb, 0x64, 0xde, 0xb0,
		0xcf, 0x02, 0x4b, 0x76, 0xbb, 0x73, 0xfc, 0x8a, 0x12, 0xcd, 0x8e, 0x4a, 0x35, 0x6f, 0xd8, 0x97,
		0xe7, 0xba, 0xda, 0x7e, 0x6b, 0x64, 0x98, 0x95, 0xd8, 0xa2, 0xc3, 0x68, 0x0c, 0x3e, 0x35, 0x6f,
		0x6b, 0xbf, 0xd7, 0x6e, 0x4b, 0xb9, 0x16, 0xc3, 0x6f, 0xfb, 0x75, 0x8f, 0xab, 0x3d, 0xfc, 0xf8,
		0xb9, 0x2f, 0x8c, 0xc3, 0x5d, 0x28, 0x59, 0xaf, 0xb0, 0x8a, 0x87, 0xae, 0xc7, 0x8f, 0xcb, 0x0a,
		0x0b, 0xf8, 0x4c, 0xe2, 0x52, 0xb5, 0x66, 0x76, 0x0a, 0xf3, 0x4e, 0xd1, 0x9c, 0x2e, 0xed, 0x54,
		0xa6, 0xda, 0x73, 0x94, 0xba, 0x1d, 0x19, 0x5d, 0xdb, 0x31, 0x85, 0x16, 0x37, 0x24, 0x4d, 0xe2,
		0x26, 0xcd, 0xe0, 0xca, 0xef, 0x2b, 0xef, 0x4f, 0xcf, 0xca, 0xef, 0x4f, 0x76, 0x77, 0xac, 0x73,
		0x32, 0x40, 0x9d, 0xcd, 0x52, 0xc9, 0x3b, 0x00, 0xd5, 0x0b, 0x52, 0xcc, 0x67, 0x0c, 0x03, 0xdf,
		0xa5, 0x34, 0x6d, 0xfa, 0xd3, 0xbb, 0x84, 0x44, 0xa2, 0xcf, 0x02, 0x2a, 0x7d, 0x67, 0xcf, 0x61,
		0x76, 0x32, 0x2b, 0xfe, 0x36, 0xa8, 0x2c, 0x50, 0x59, 0x4b, 0x96, 0x91, 0x78, 0x14, 0x1b, 0x5d,
		0xb4, 0x1b, 0xe9, 0x30, 0x88, 0x5f, 0x37, 0x18, 0xbf, 0x8a, 0x56, 0xd3, 0xcc, 0x4a, 0xe1, 0xaf,
		0x9c, 0xf0, 0x4c, 0x94, 0xbe, 0xe2, 0x12, 0x96, 0x5e, 0xca, 0x2a, 0x4b, 0x9a, 0x68, 0x69, 0xab,
		0x2e, 0x71, 0xb2, 0xa5, 0x4e, 0xb6, 0xe4, 0xe9, 0x96, 0x7e, 0x2e, 0x71, 0xa3, 0x7c, 0x81, 0x59,
		0x3b, 0x78, 0x1e, 0x70, 0xdf, 0xb4, 0x7a, 0x0f, 0x7e, 0xe0, 0xf2, 0xc7, 0xbe, 0x7a, 0xe6, 0xcd,
		0x82, 0x44, 0xb5, 0x5a, 0xaf, 0x87, 0x3b, 0x52, 0xeb, 0x55, 0x41, 0xad, 0xa8, 0xd4, 0x8b, 0x5c,
		0xcd, 0xc8, 0xd5, 0x8d, 0x5e, 0xed, 0x14, 0xa3, 0x33, 0x59, 0x66, 0x4b, 0x94, 0x61, 0x5d, 0xb9,
		0x72, 0x5c, 0x87, 0x79, 0xdc, 0xe5, 0xcf, 0x01, 0xeb, 0xaa, 0xac, 0x9c, 0xb1, 0x2f, 0x52, 0x08,
		0xbf, 0x4b, 0xf5, 0xe4, 0x51, 0x3e, 0x58, 0x21, 0xc1, 0x1a, 0x1c, 0xbf, 0xe0, 0xe5, 0xed, 0x5f,
		0x37, 0xed, 0xe6, 0x7d, 0xfb, 0xaf, 0x9b, 0x9a, 0xea, 0x2a, 0x8c, 0xc9, 0x06, 0x9a, 0xe6, 0xb9,
		0x34, 0x6d, 0x68, 0x27, 0xd9, 0x88, 0xb5, 0xd6, 0x7d, 0xf9, 0xfc, 0xfe, 0xf2, 0xaa, 0x7a, 0x79,
		0xff, 0xfe, 0x54, 0xbd, 0x79, 0x2b, 0x41, 0x63, 0x75, 0xe2, 0x37, 0x4c, 0xa6, 0xf1, 0xba, 0x79,
		0x5d, 0xdb, 0xc5, 0xd7, 0xfb, 0x2d, 0x9a, 0xb9, 0xab, 0x8f, 0x27, 0x3b, 0xfb, 0x6e, 0xad, 0xdf,
		0xaa, 0xf7, 0x47, 0xbb, 0xfd, 0x76, 0xf7, 0x47, 0xe5, 0x1d, 0x7f, 0xc1, 0xf2, 0xe1, 0x8e, 0xbf,
		0xe0, 0x6e, 0xda, 0xce, 0xf4, 0x05, 0xcb, 0x27, 0x3b, 0xf9, 0x7e, 0x3b, 0x6a, 0x37, 0xa9, 0x4c,
		0xa6, 0x92, 0x84, 0xce, 0x9e, 0x35, 0x3e, 0x57, 0xde, 0x1f, 0x50, 0x1f, 0x06, 0x99, 0xb3, 0x2d,
		0xdf, 0xd9, 0xb3, 0xe9, 0x3a, 0xea, 0xc1, 0x75, 0x22, 0x07, 0x21, 0x35, 0x42, 0x6a, 0x84, 0xd4,
		0x92, 0x2b, 0x47, 0x34, 0x89, 0x69, 0x65, 0x30, 0xfd, 0x5e, 0x41, 0x86, 0x54, 0x92, 0x13, 0xbd,
		0x43, 0x4b, 0x07, 0xe5, 0x91, 0xfd, 0x34, 0x85, 0xd3, 0x3c, 0xd7, 0x8e, 0xd0, 0x39, 0x81, 0xac,
		0x06, 0xf3, 0x1e, 0xe2, 0xcd, 0xd3, 0xaf, 0x24, 0xee, 0x9b, 0x06, 0x04, 0x18, 0x54, 0x49, 0x28,
		0xcb, 0x49, 0x0c, 0xf9, 0x1e, 0x57, 0x2b, 0xe5, 0x52, 0x27, 0x4e, 0x2c, 0xae, 0x24, 0xaa, 0x44,
		0x0a, 0x0d, 0xc8, 0x6f, 0x32, 0x65, 0x04, 0x49, 0x2d, 0x2b, 0xa7, 0xec, 0xb4, 0x82, 0x39, 0x23,
		0x01, 0xb5, 0x74, 0x52, 0x3a, 0x04, 0x06, 0xe8, 0xc6, 0xe2, 0x9c, 0x05, 0x1e, 0x99, 0x05, 0x2a,
		0x7d, 0x3d, 0x34, 0xdf, 0x5b, 0x66, 0xb7, 0x6a, 0x7e, 0xea, 0xfc, 0x6f, 0xa9, 0x18, 0xaf, 0xd8,
		0x6c, 0xd5, 0xff, 0x24, 0x7f, 0xcf, 0xff, 0x4c, 0xbf, 0xe8, 0xbf, 0x08, 0xde, 0xf4, 0xd5, 0x06,
		0xcd, 0x08, 0xa1, 0xaf, 0x1d, 0xba, 0x1e, 0x3f, 0xad, 0x10, 0xfa, 0x59, 0x0a, 0x37, 0xab, 0x96,
		0xca, 0xb9, 0xad, 0x5e, 0xf6, 0x10, 0x16, 0x7b, 0xdb, 0xbc, 0xac, 0x58, 0xbf, 0x37, 0xf8, 0xdd,
		0xcd, 0xf8, 0xdd, 0x57, 0x9b, 0xb9, 0x7f, 0x07, 0xa4, 0x56, 0x7e, 0xa4, 0x56, 0xc8, 0xec, 0x80,
		0x71, 0x53, 0x24, 0x15, 0x70, 0xa5, 0x4f, 0x9c, 0x92, 0x05, 0x72, 0x0b, 0xe4, 0x16, 0xc8, 0x2d,
		0x59, 0x3d, 0x52, 0xe5, 0x70, 0x04, 0x8f, 0xee, 0xc2, 0x94, 0x2a, 0x5e, 0x21, 0x9a, 0xe9, 0xa7,
		0x38, 0x50, 0x92, 0xe7, 0x11, 0xbe, 0xb3, 0xe7, 0xf8, 0xb7, 0x4c, 0x07, 0x13, 0xe4, 0x07, 0x44,
		0xa4, 0x68, 0xaf, 0xe4, 0x96, 0x8a, 0xda, 0x56, 0x8a, 0xa4, 0x97, 0x41, 0x52, 0x2f, 0x92, 0x7a,
		0xc5, 0x55, 0x5d, 0xda, 0x2b, 0xa4, 0x33, 0x1f, 0x99, 0x3e, 0xb9, 0xcc, 0xc1, 0xd4, 0x0d, 0xc8,
		0x1c, 0x0b, 0xbd, 0x49, 0xac, 0xcb, 0xc1, 0x41, 0x62, 0x2f, 0xde, 0x25, 0xca, 0x56, 0x00, 0xb3,
		0x11, 0x30, 0x9b, 0xb9, 0x4f, 0xcc, 0xec, 0xb9, 0x5d, 0xc6, 0xdd, 0x3e, 0x93, 0x37, 0x20, 0x0b,
		0x92, 0x70, 0x3e, 0x00, 0xa6, 0x64, 0xe7, 0xce, 0x07, 0xc8, 0x1d, 0x9d, 0x59, 0x58, 0x38, 0x52,
		0x47, 0x68, 0x14, 0x55, 0x05, 0xb1, 0x1d, 0x62, 0xbb, 0xcd, 0xc7, 0x76, 0xb2, 0xaa, 0x97, 0x0a,
		0x60, 0x9e, 0x63, 0x4a, 0x79, 0xaa, 0x95, 0x4b, 0x30, 0x95, 0xa8, 0x38, 0x33, 0x6a, 0x94, 0x0b,
		0x99, 0x7a, 0x52, 0xaa, 0xa9, 0x26, 0x75, 0xa5, 0x56, 0x5b, 0x6d, 0xea, 0xab, 0x4d, 0x8d, 0xf5,
		0xa9, 0xb3, 0x9a, 0x5a, 0x2b, 0xaa, 0x37, 0x1d, 0x85, 0xb3, 0xb0, 0xf2, 0x22, 0x0d, 0xe5, 0xae,
		0xfd, 0x3d, 0x2c, 0xdc, 0x5e, 0xe1, 0x17, 0x6f, 0xb4, 0x2d, 0x52, 0xf2, 0x2c, 0xcf, 0x0f, 0x99,
		0xed, 0x7b, 0x4e, 0x58, 0xc2, 0x1e, 0xa4, 0xa0, 0x50, 0xec, 0x41, 0x12, 0xeb, 0xe0, 0xec, 0x94,
		0x61, 0x0f, 0x72, 0x53, 0xb3, 0xb8, 0x1b, 0x7b, 0x90, 0xaa, 0xa8, 0x95, 0x86, 0xd0, 0x4e, 0xe5,
		0x91, 0x13, 0xdb, 0xea, 0x03, 0xad, 0x52, 0x5d, 0x2a, 0xe4, 0x56, 0xc0, 0x89, 0x61, 0xed, 0x94,
		0x4c, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x5b, 0x00,
		0x5b, 0x00, 0x5b, 0x00, 0x5b, 0xdd, 0x57, 0x6e, 0x3a, 0xf5, 0x45, 0x31, 0xb3, 0x63, 0x7e, 0x3b,
		0x53, 0x2a, 0xd5, 0x43, 0x7e, 0x04, 0xa5, 0x12, 0x10, 0xe3, 0x06, 0x9b, 0xea, 0xb9, 0x87, 0x02,
		0x7d, 0x3a, 0x57, 0xa1, 0x0f, 0xe5, 0xad, 0xa9, 0x32, 0xb6, 0xa6, 0x74, 0x87, 0x00, 0xd8, 0x9a,
		0x9a, 0x7b, 0x7c, 0x6c, 0x4d, 0x21, 0x82, 0x47, 0x04, 0x8f, 0x08, 0x1e, 0x11, 0x3c, 0x22, 0x78,
		0x44, 0xf0, 0x88, 0xe0, 0x11, 0xc1, 0x6f, 0x47, 0x04, 0x8f, 0x1d, 0x1b, 0xe0, 0x3d, 0xe0, 0x3d,
		0xe0, 0x3d, 0xe0, 0x3d, 0xe0, 0x3d, 0xe0, 0x3d, 0xe0, 0x3d, 0xe0, 0x3d, 0xe0, 0x3d, 0xc2, 0x2b,
		0x77, 0x6d, 0x23, 0x63, 0xc4, 0xef, 0xe3, 0xf4, 0x2f, 0xfd, 0xd0, 0x96, 0xa4, 0x36, 0x6d, 0x82,
		0xa1, 0xcd, 0x93, 0x56, 0xe8, 0x11, 0x68, 0x8c, 0xef, 0x71, 0xff, 0x6f, 0xf6, 0x7c, 0x7f, 0x3b,
		0x12, 0xdf, 0x18, 0x4b, 0x2f, 0xc0, 0x71, 0xc1, 0x90, 0x79, 0x0e, 0xc1, 0x59, 0xc1, 0x59, 0x31,
		0x38, 0x28, 0xa8, 0x39, 0x36, 0xc1, 0x41, 0x41, 0x59, 0x03, 0x83, 0x83, 0x82, 0x38, 0x28, 0x98,
		0x4f, 0x78, 0x8f, 0xdd, 0x58, 0x22, 0xd5, 0x4b, 0x05, 0x60, 0x37, 0x16, 0xec, 0x1c, 0xd8, 0x39,
		0xb0, 0x73, 0x60, 0xe7, 0xc0, 0xce, 0x81, 0x9d, 0x03, 0x3b, 0x07, 0x76, 0x2e, 0x17, 0x76, 0x0e,
		0xf9, 0xd4, 0x1a, 0x87, 0x68, 0xc4, 0x9c, 0x58, 0x9e, 0x63, 0x26, 0xdc, 0x13, 0xe1, 0xe6, 0xf3,
		0xbc, 0x64, 0xc5, 0x89, 0xfc, 0xc8, 0xba, 0xd6, 0xb0, 0xc7, 0x49, 0xdc, 0x52, 0x29, 0xc2, 0x51,
		0x6a, 0x48, 0xa7, 0x03, 0xcc, 0x0e, 0xcc, 0x0e, 0xcc, 0x5e, 0x50, 0xcc, 0xfe, 0xcd, 0xf7, 0x7b,
		0xcc, 0xf2, 0x28, 0x9b, 0xed, 0x1c, 0xc1, 0x8d, 0x15, 0xd8, 0x8d, 0x21, 0x7b, 0x0a, 0xb6, 0x1e,
		0xb6, 0x1e, 0xfc, 0x0c, 0xf8, 0x19, 0xf0, 0x33, 0xe0, 0x67, 0xc0, 0xcf, 0x80, 0x9f, 0x01, 0x3f,
		0x83, 0xf3, 0xee, 0x1b, 0x4c, 0x13, 0x9b, 0x49, 0xc9, 0xc1, 0x61, 0x77, 0xa1, 0x50, 0x13, 0x87,
		0xdd, 0xa9, 0xe3, 0x00, 0xa4, 0x57, 0xe8, 0x36, 0x3b, 0x48, 0xaf, 0x40, 0xf8, 0x8e, 0xf0, 0x1d,
		0xe1, 0x3b, 0xc2, 0x77, 0x84, 0xef, 0x08, 0xdf, 0x11, 0xbe, 0x23, 0x7c, 0xdf, 0x8e, 0xf0, 0x1d,
		0x59, 0x07, 0x2f, 0xc3, 0x5a, 0x64, 0x1d, 0x00, 0xca, 0x02, 0xca, 0x02, 0xca, 0x66, 0x59, 0x79,
		0xc5, 0xcb, 0x3a, 0xc0, 0x66, 0x3c, 0x4c, 0x20, 0x4c, 0x20, 0x4c, 0x20, 0xa2, 0x79, 0x44, 0xf3,
		0x88, 0xe6, 0x11, 0xcd, 0x23, 0x9a, 0x47, 0x34, 0x4f, 0x78, 0xe5, 0x4e, 0xed, 0x51, 0xa3, 0x8e,
		0x89, 0x96, 0x71, 0x25, 0x2e, 0x62, 0xd2, 0x62, 0x9e, 0x53, 0xa8, 0x0a, 0x26, 0x52, 0x79, 0x03,
		0x4a, 0xf9, 0x02, 0xca, 0x15, 0x4b, 0xca, 0xa8, 0x58, 0x82, 0x8a, 0x25, 0x19, 0x1f, 0x53, 0xbe,
		0x62, 0x49, 0xf0, 0x3c, 0xe0, 0xbe, 0x69, 0xf5, 0x1e, 0xfc, 0xc0, 0xe5, 0x8f, 0x7d, 0x82, 0xda,
		0x25, 0xf3, 0x12, 0xd5, 0xd2, 0x6c, 0x0e, 0x51, 0xc5, 0x84, 0x3a, 0xc2, 0x47, 0x9a, 0x8d, 0x6e,
		0xe4, 0xa4, 0x1c, 0xb1, 0xa7, 0x2b, 0xc7, 0x75, 0x98, 0xc7, 0x5d, 0xfe, 0x1c, 0xb0, 0xae, 0xca,
		0xca, 0x19, 0xfb, 0x22, 0x85, 0x50, 0xa2, 0x54, 0x4f, 0x1e, 0xe5, 0x83, 0x15, 0x12, 0x52, 0x86,
		0x97, 0xb7, 0x7f, 0xdd, 0xb4, 0x9b, 0xf7, 0xed, 0xbf, 0x6e, 0x6a, 0xaa, 0xab, 0x30, 0x0e, 0xa1,
		0x42, 0x92, 0x20, 0x9f, 0x88, 0x42, 0x1b, 0xbf, 0x64, 0xb5, 0xd6, 0xba, 0x2f, 0x9f, 0xdf, 0x5f,
		0x5e, 0x55, 0x2f, 0xef, 0xdf, 0x9f, 0x12, 0xf0, 0x51, 0x6f, 0x8b, 0xf6, 0x86, 0xc9, 0x34, 0x5e,
		0x37, 0xaf, 0x6b, 0xbb, 0xf8, 0x7a, 0xbf, 0x45, 0x33, 0x77, 0xf5, 0xf1, 0x64, 0x67, 0xdf, 0xad,
		0xf5, 0x5b, 0xf5, 0xfe, 0x68, 0xb7, 0xdf, 0xee, 0xfe, 0xa8, 0xbc, 0xe3, 0x2f, 0x58, 0x3e, 0xdc,
		0xf1, 0x17, 0xdc, 0x4d, 0xdb, 0x99, 0xbe, 0x60, 0xf9, 0x64, 0x27, 0xdf, 0x6f, 0x47, 0xed, 0x26,
		0x95, 0xc9, 0x7c, 0xb5, 0x19, 0x26, 0xf2, 0x57, 0x81, 0x8f, 0x79, 0x7c, 0x67, 0xcf, 0xa6, 0xeb,
		0xa8, 0xc7, 0xa2, 0x89, 0x1c, 0x44, 0xa0, 0x88, 0x40, 0x11, 0x81, 0x4a, 0xae, 0x9c, 0xa1, 0xe7,
		0xfa, 0x1e, 0x45, 0xec, 0xf9, 0x5e, 0x41, 0x46, 0xf2, 0x3a, 0x6a, 0x81, 0x1d, 0xe1, 0x06, 0xfa,
		0x23, 0xfb, 0x69, 0x86, 0x3c, 0x70, 0xbd, 0x07, 0xca, 0x34, 0x22, 0x8a, 0x0d, 0xf4, 0x06, 0xf3,
		0x1e, 0xe2, 0x0d, 0x81, 0xfd, 0xda, 0xe9, 0x3e, 0xc2, 0x1e, 0x29, 0x1d, 0x50, 0x9a, 0x4c, 0x99,
		0xce, 0x9d, 0xee, 0xd3, 0x0a, 0xe6, 0x8c, 0x04, 0x03, 0xd2, 0x49, 0xe9, 0x10, 0x18, 0xa0, 0x1b,
		0x8b, 0x73, 0x16, 0x78, 0x64, 0x16, 0xa8, 0xf4, 0xf5, 0xd0, 0x7c, 0x6f, 0x99, 0xdd, 0xaa, 0xf9,
		0xa9, 0xf3, 0xbf, 0xa5, 0x62, 0xbc, 0x62, 0xb3, 0x55, 0xff, 0x93, 0xfc, 0x3d, 0xff, 0x33, 0xfd,
		0xa2, 0xff, 0x2a, 0x6d, 0x77, 0xc5, 0x00, 0x42, 0x5f, 0x3b, 0x74, 0x3d, 0x5e, 0xb8, 0x3c, 0x35,
		0xe4, 0x93, 0xc1, 0xcb, 0x6e, 0x85, 0x97, 0x45, 0x3e, 0xd9, 0x36, 0xf8, 0xdd, 0x0d, 0xe5, 0x93,
		0x75, 0x8a, 0x5c, 0xea, 0x83, 0xd9, 0x01, 0xe3, 0x51, 0xe0, 0x4d, 0x50, 0xef, 0x63, 0x22, 0x0b,
		0x5c, 0x10, 0xb8, 0x20, 0x70, 0x41, 0xb2, 0x7a, 0xa4, 0x4a, 0x79, 0x4c, 0xa8, 0x0e, 0x64, 0x70,
		0x12, 0x64, 0x70, 0x8a, 0xe7, 0xc2, 0x0a, 0xa4, 0x57, 0xbe, 0x22, 0x1c, 0xb1, 0x48, 0xc9, 0x85,
		0x09, 0xf9, 0x52, 0xc3, 0x0d, 0x79, 0x95, 0x73, 0xb1, 0xd4, 0xb6, 0x08, 0x01, 0xd7, 0x7a, 0x2c,
		0xd2, 0x57, 0x41, 0x2c, 0x12, 0x01, 0xb1, 0xa9, 0x2b, 0xd5, 0x90, 0x53, 0xa9, 0x19, 0x38, 0x2c,
		0x60, 0xce, 0x87, 0xe8, 0xbd, 0xbd, 0x61, 0xaf, 0x27, 0x73, 0xe9, 0x97, 0x90, 0x05, 0x42, 0xa0,
		0x27, 0xeb, 0x74, 0x48, 0x2e, 0x5c, 0xc5, 0x05, 0x5b, 0x12, 0xca, 0xd8, 0x5d, 0x95, 0x5c, 0x9c,
		0x6d, 0xc1, 0xaf, 0x5f, 0xbe, 0x2f, 0x7f, 0x63, 0xcd, 0x48, 0x8a, 0x8e, 0xa0, 0xc2, 0xc8, 0xbd,
		0xfc, 0xbe, 0xab, 0xdf, 0xe2, 0x85, 0x37, 0x28, 0x25, 0xe3, 0xfa, 0xf2, 0x73, 0xa7, 0x66, 0x3f,
		0xfe, 0xf6, 0x9a, 0xf1, 0xc8, 0x06, 0x90, 0x32, 0x03, 0x21, 0x11, 0xc0, 0x23, 0x09, 0x6c, 0x44,
		0x01, 0x8c, 0x34, 0x50, 0x91, 0x06, 0x24, 0xf2, 0xc0, 0x43, 0x6d, 0x6d, 0x67, 0x06, 0x0c, 0xe9,
		0xc8, 0xf7, 0x98, 0xd5, 0xcd, 0x96, 0xa2, 0x98, 0x22, 0x80, 0xb3, 0x0c, 0xdf, 0xbd, 0x49, 0xd4,
		0xe5, 0xe0, 0x20, 0xa9, 0x4d, 0xf8, 0x2e, 0x5e, 0x8a, 0x1a, 0x14, 0x22, 0xdb, 0x01, 0x01, 0xa1,
		0x03, 0x01, 0x19, 0x0f, 0x00, 0x64, 0x4e, 0xf8, 0x87, 0x4a, 0x6c, 0x50, 0x25, 0xb2, 0x26, 0xd8,
		0x67, 0xb3, 0xac, 0x32, 0x16, 0x56, 0x32, 0x14, 0x15, 0x0e, 0x3d, 0x65, 0x42, 0x4d, 0xc5, 0xd0,
		0x52, 0x36, 0x94, 0x54, 0x0e, 0x1d, 0x95, 0x43, 0x45, 0xf5, 0xd0, 0x90, 0x16, 0x66, 0x0b, 0x87,
		0x7a, 0xf2, 0xa1, 0x9d, 0x60, 0x28, 0x97, 0x01, 0x8f, 0x65, 0xb0, 0x4f, 0xdc, 0xef, 0xb1, 0xc0,
		0xf2, 0x6c, 0x09, 0x15, 0x9b, 0x5c, 0x0a, 0x3d, 0x83, 0x9e, 0x6d, 0x4c, 0xcf, 0x44, 0xd3, 0x69,
		0x64, 0xd2, 0x67, 0xe4, 0xd2, 0x65, 0x14, 0x8e, 0x0d, 0x32, 0x6f, 0xd8, 0x67, 0xc1, 0x28, 0x1a,
		0x92, 0xa0, 0x7a, 0xc7, 0xaf, 0x28, 0x91, 0x10, 0x50, 0xaa, 0x79, 0x43, 0x85, 0x43, 0x6b, 0x6d,
		0xbf, 0x35, 0xb2, 0x7b, 0x4a, 0xf4, 0xd8, 0x61, 0x34, 0x06, 0x9f, 0x9a, 0xb7, 0xb5, 0xdf, 0x6b,
		0xb7, 0xa5, 0x7c, 0xa9, 0x3d, 0xbf, 0x1e, 0xeb, 0x84, 0xc2, 0xc3, 0x8f, 0x9f, 0xfb, 0xc2, 0x38,
		0xdc, 0x05, 0x4e, 0x4e, 0x61, 0x15, 0x0f, 0x5d, 0x8f, 0x1f, 0x97, 0x15, 0x16, 0xf0, 0x99, 0xc4,
		0xa5, 0x6a, 0x1b, 0xc9, 0x0a, 0xf3, 0x4e, 0xb1, 0x51, 0x4c, 0xb5, 0x31, 0x4c, 0xbe, 0x85, 0x48,
		0xb7, 0x65, 0xa8, 0x52, 0x62, 0x8b, 0x62, 0x63, 0x37, 0x1d, 0xe2, 0x4a, 0xf9, 0x7d, 0xe5, 0xfd,
		0xe9, 0x59, 0xf9, 0xfd, 0xc9, 0xee, 0x8e, 0x75, 0x4e, 0x06, 0xa8, 0xa3, 0x89, 0x32, 0xef, 0xec,
		0x11, 0x33, 0x99, 0x61, 0xef, 0xe1, 0x05, 0x26, 0xe6, 0x95, 0xc0, 0x8b, 0x8d, 0xf7, 0x0e, 0x5e,
		0x88, 0x91, 0xb3, 0xed, 0x14, 0x64, 0xdf, 0x19, 0x50, 0xda, 0x09, 0x10, 0x60, 0xfe, 0x05, 0x98,
		0xfe, 0x55, 0x83, 0x93, 0x71, 0xb6, 0xe5, 0x66, 0xb9, 0xf4, 0x22, 0x63, 0xb6, 0x8c, 0xa0, 0x5f,
		0xbe, 0x22, 0x16, 0xe7, 0x7b, 0xf6, 0x93, 0xb9, 0x97, 0x5b, 0xf7, 0x52, 0x42, 0x2f, 0x33, 0xfb,
		0x44, 0x93, 0xfb, 0x4e, 0xdd, 0xb3, 0xd4, 0xb3, 0xec, 0xc1, 0xc2, 0x9d, 0x26, 0xe4, 0x66, 0xf4,
		0xd7, 0xb9, 0x27, 0x5c, 0xce, 0xed, 0xad, 0x0c, 0x02, 0x5f, 0x0a, 0xf6, 0xa6, 0x83, 0xba, 0x25,
		0xb7, 0xca, 0x12, 0xb8, 0x65, 0x0e, 0xd0, 0x32, 0x07, 0x62, 0xf3, 0x01, 0x57, 0xfc, 0x60, 0x82,
		0xb3, 0xb8, 0x8a, 0x33, 0x2b, 0xd9, 0xe3, 0x51, 0x5a, 0xf1, 0x36, 0x69, 0x29, 0x89, 0xd1, 0xf7,
		0x56, 0x99, 0x85, 0x17, 0xe9, 0xd5, 0xb5, 0xf1, 0x78, 0x96, 0xf8, 0x3b, 0xc3, 0xd4, 0x88, 0xc6,
		0xd6, 0xc2, 0xb1, 0xb4, 0x70, 0xec, 0x9c, 0x6d, 0xea, 0xe4, 0x4c, 0xf1, 0x3a, 0x1a, 0xb4, 0x14,
		0x3e, 0x87, 0x9c, 0xf5, 0xcd, 0x41, 0xe0, 0xfa, 0x81, 0xcb, 0x9f, 0x05, 0x18, 0xf5, 0xb9, 0x0b,
		0xb7, 0x63, 0xbb, 0x69, 0xcd, 0xa2, 0xd8, 0x5e, 0x5e, 0xfd, 0xe5, 0x45, 0x43, 0x03, 0x54, 0xc4,
		0xb7, 0x99, 0xa2, 0x08, 0xed, 0xe8, 0x54, 0x60, 0x97, 0xe9, 0x34, 0xc3, 0x57, 0xc5, 0x22, 0x30,
		0xb1, 0x44, 0x04, 0x71, 0xaa, 0x4d, 0x32, 0xa2, 0x52, 0x46, 0xf5, 0xf2, 0x28, 0xfe, 0x97, 0x58,
		0x86, 0x85, 0xfc, 0x90, 0x9c, 0x9e, 0x9c, 0x1c, 0x9f, 0x6c, 0xcf, 0xb0, 0x10, 0x05, 0x03, 0x9d,
		0x5c, 0x83, 0x01, 0xe9, 0xc6, 0x7c, 0x54, 0x60, 0x5f, 0x1d, 0xcf, 0x46, 0xa6, 0xeb, 0x5d, 0xfc,
		0x7f, 0x2f, 0xf5, 0xb3, 0x5b, 0x02, 0x49, 0x97, 0xe0, 0x2e, 0xd7, 0xe3, 0x2c, 0xe8, 0x5a, 0x76,
		0x5c, 0x56, 0x66, 0x0d, 0x5a, 0x99, 0xfa, 0x2e, 0x10, 0xcb, 0xf6, 0x20, 0x96, 0x74, 0xda, 0xb2,
		0x63, 0x95, 0xc9, 0x25, 0xc4, 0x19, 0x00, 0x40, 0x29, 0xc5, 0x43, 0x29, 0x99, 0x77, 0xfe, 0xd7,
		0x44, 0x35, 0x72, 0x51, 0x8e, 0xe4, 0x92, 0x12, 0x5e, 0x5a, 0x32, 0x4b, 0x4c, 0x61, 0xa9, 0xc9,
		0x2e, 0x39, 0xe5, 0xa5, 0xa7, 0xbc, 0x04, 0xd5, 0x96, 0xa2, 0x20, 0x38, 0xc8, 0x38, 0x67, 0xa2,
		0xd5, 0x1f, 0x47, 0x06, 0xec, 0xc9, 0xea, 0xc9, 0x57, 0x44, 0x4d, 0x25, 0x88, 0x16, 0xaa, 0x54,
		0xe8, 0xd4, 0x53, 0x6a, 0x35, 0x9a, 0x7f, 0x88, 0xed, 0xaf, 0x75, 0xe4, 0x6a, 0xb6, 0x1e, 0xca,
		0xd6, 0x6c, 0x3d, 0xdc, 0x4c, 0xcd, 0x56, 0x41, 0xad, 0x53, 0xd5, 0x3e, 0x32, 0x2d, 0x24, 0xd3,
		0x46, 0x1a, 0xad, 0x94, 0xdb, 0x51, 0x10, 0x3d, 0x34, 0x20, 0x7d, 0x1c, 0x63, 0x86, 0x90, 0x34,
		0x07, 0x2c, 0x70, 0x7d, 0xc7, 0xe4, 0x91, 0xb4, 0xbd, 0xdd, 0x73, 0xaf, 0xb6, 0xda, 0x2a, 0xa7,
		0x51, 0x8e, 0xe2, 0x3a, 0x4e, 0xc2, 0x56, 0x45, 0x72, 0xe6, 0xa7, 0x46, 0x40, 0x7d, 0xd7, 0x3e,
		0x7a, 0x73, 0xa5, 0xad, 0xbb, 0xd1, 0x7b, 0x5f, 0x18, 0x47, 0x38, 0x89, 0x43, 0xd9, 0x90, 0x5e,
		0x4f, 0xfd, 0xf2, 0x58, 0xe3, 0xfb, 0xbe, 0xa3, 0x50, 0xc3, 0x7c, 0x22, 0x22, 0x4f, 0x97, 0x5d,
		0xbd, 0x6c, 0xd7, 0x7f, 0xaf, 0xc1, 0x69, 0xc3, 0x69, 0xc3, 0x69, 0xdb, 0x03, 0xd3, 0xb2, 0xb9,
		0xfb, 0xe4, 0xf2, 0xe7, 0xfd, 0x76, 0xdb, 0x89, 0x51, 0x50, 0x75, 0xdc, 0x37, 0xd5, 0x56, 0x4b,
		0xd8, 0xb8, 0x14, 0xc0, 0x77, 0x27, 0xaf, 0xaf, 0xe6, 0xbd, 0xc7, 0x2f, 0x0f, 0x07, 0xbe, 0x15,
		0x0e, 0x5c, 0xe8, 0x58, 0xc8, 0x82, 0xed, 0x10, 0x38, 0x1e, 0x02, 0xaf, 0x08, 0xaf, 0xb8, 0x45,
		0x5e, 0xf1, 0x9b, 0x15, 0x32, 0x33, 0xe5, 0xd3, 0x4d, 0xb9, 0x36, 0x07, 0x22, 0x67, 0x0a, 0x17,
		0xd7, 0x6d, 0xba, 0x85, 0x64, 0x9b, 0x6e, 0xf7, 0x62, 0xb2, 0x8b, 0x33, 0xff, 0x41, 0xf2, 0xfb,
		0xfa, 0x13, 0x88, 0x30, 0x85, 0x2f, 0x3e, 0x5e, 0x92, 0xe9, 0xe1, 0x3a, 0x66, 0xdf, 0xb2, 0x15,
		0x7a, 0x32, 0xcd, 0x88, 0x81, 0x71, 0x84, 0x71, 0xdc, 0x39, 0xe3, 0xd8, 0xb7, 0x6c, 0xd3, 0x72,
		0x9c, 0x48, 0x87, 0x55, 0xac, 0xe2, 0xb9, 0x9c, 0x55, 0x54, 0xaa, 0x6e, 0x38, 0x5d, 0xb5, 0xf1,
		0xef, 0xf2, 0xaf, 0xd7, 0x17, 0xb3, 0xbf, 0xbf, 0xf9, 0xfb, 0xe4, 0x97, 0xf8, 0x7c, 0x75, 0x64,
		0x5e, 0x84, 0xa2, 0x56, 0xe3, 0x4c, 0x6d, 0xc6, 0x15, 0xaf, 0x23, 0x51, 0xb1, 0xb1, 0x03, 0x37,
		0xa2, 0xec, 0x46, 0x32, 0x67, 0x1a, 0xae, 0x73, 0x24, 0x19, 0x33, 0x0f, 0xe1, 0x4a, 0xe0, 0x4a,
		0xb6, 0xd0, 0x95, 0x64, 0xce, 0x9c, 0x5c, 0xb5, 0xbe, 0x4f, 0x71, 0xb6, 0x4d, 0x52, 0x0e, 0xce,
		0xb6, 0xad, 0x1d, 0x62, 0x89, 0xcc, 0xce, 0x6d, 0x1a, 0xe6, 0x62, 0x1e, 0x6b, 0xdb, 0x03, 0x38,
		0x51, 0xf0, 0x9a, 0x69, 0x93, 0x4c, 0xd5, 0x29, 0xd6, 0x61, 0xc2, 0x37, 0xbc, 0x94, 0xbe, 0x2a,
		0xfe, 0xaa, 0x59, 0xca, 0x6b, 0xf4, 0x59, 0xff, 0x1b, 0x0b, 0x42, 0xf1, 0x1c, 0xb6, 0xf1, 0x85,
		0x48, 0x62, 0xcb, 0x13, 0x0b, 0xed, 0x77, 0x12, 0xdb, 0x68, 0xcd, 0xc9, 0xe3, 0xfe, 0xe4, 0xfa,
		0x9c, 0xbb, 0x7a, 0x03, 0xee, 0x03, 0xee, 0x53, 0xab, 0x42, 0x7a, 0xa1, 0x60, 0x0a, 0xf2, 0xca,
		0x05, 0x23, 0x94, 0x92, 0x4c, 0xa4, 0x22, 0xca, 0xaa, 0x42, 0xa1, 0x32, 0x84, 0xaa, 0x43, 0xa5,
		0x42, 0xe4, 0xaa, 0x44, 0xae, 0x52, 0xb4, 0xaa, 0xa5, 0x88, 0x9a, 0x25, 0xd7, 0x8c, 0xac, 0xca,
		0xa5, 0x02, 0xb2, 0x1f, 0x23, 0xc9, 0xbc, 0xf6, 0xb2, 0x1e, 0x33, 0xd1, 0x44, 0x51, 0x91, 0x2b,
		0x26, 0xa5, 0x82, 0x6a, 0x50, 0x54, 0x6a, 0x85, 0xd5, 0xa6, 0xb8, 0xda, 0x14, 0x58, 0x8f, 0x22,
		0xab, 0x29, 0x34, 0x01, 0x57, 0x61, 0x90, 0x14, 0xc1, 0x5f, 0x58, 0x71, 0x24, 0x5b, 0xd7, 0x2b,
		0x9d, 0xe7, 0x19, 0x4d, 0x2b, 0x2e, 0xcd, 0x5b, 0xdb, 0xd4, 0xb3, 0xa4, 0x48, 0x32, 0xe8, 0x23,
		0x1d, 0xe8, 0x16, 0xb3, 0x0a, 0xe9, 0x36, 0xf0, 0x03, 0x2e, 0xbf, 0xe3, 0xb1, 0x72, 0x25, 0xcf,
		0x8a, 0x85, 0xb3, 0x81, 0xb3, 0x81, 0xb3, 0x29, 0x98, 0xb3, 0x91, 0xde, 0xbf, 0x59, 0xa5, 0x9f,
		0xa7, 0x68, 0x82, 0x27, 0x28, 0x14, 0x4d, 0xf0, 0x88, 0xd5, 0x64, 0x76, 0xca, 0xb4, 0xb6, 0x9a,
		0x55, 0xdf, 0x5f, 0xda, 0xa5, 0x69, 0xdb, 0x8d, 0xae, 0x77, 0x80, 0x9a, 0xc5, 0xa2, 0x50, 0x88,
		0x06, 0x54, 0x7e, 0xbf, 0x2c, 0xd9, 0x84, 0x4a, 0xfe, 0x15, 0xda, 0x3e, 0x53, 0x1f, 0x39, 0x99,
		0x16, 0x87, 0xea, 0x9c, 0x11, 0x19, 0x57, 0xb4, 0x6b, 0x0d, 0x0e, 0x41, 0xda, 0x6e, 0x04, 0x7e,
		0x6f, 0x6b, 0x63, 0xc3, 0xec, 0xfd, 0x8b, 0x74, 0x12, 0x37, 0x4b, 0xfa, 0x1d, 0x4d, 0xf4, 0xba,
		0xc8, 0xad, 0x5a, 0x33, 0x35, 0x4f, 0x5a, 0x3b, 0x09, 0x59, 0x9a, 0x2a, 0xad, 0x1d, 0x7e, 0x55,
		0xfb, 0x55, 0x86, 0xfd, 0x82, 0xfd, 0xca, 0xc9, 0x7e, 0x29, 0x6f, 0x3a, 0x8d, 0x8f, 0x13, 0xd3,
		0x51, 0x81, 0xa9, 0x44, 0xb0, 0x80, 0x60, 0x01, 0xc1, 0x02, 0x16, 0x8c, 0x05, 0x24, 0xa9, 0x21,
		0xb0, 0xd2, 0x75, 0x56, 0x08, 0x64, 0x29, 0xd5, 0x18, 0x58, 0x1c, 0x41, 0x8a, 0x9a, 0x03, 0x0b,
		0x52, 0x69, 0x6a, 0x10, 0x2c, 0x88, 0x55, 0xaf, 0x49, 0xa0, 0x89, 0x5f, 0x23, 0xa8, 0x59, 0xb0,
		0xa8, 0xae, 0x04, 0x35, 0x0c, 0x16, 0x8d, 0xb4, 0x62, 0x4d, 0x03, 0x7a, 0x8a, 0x6a, 0x1b, 0x37,
		0x09, 0xad, 0x87, 0x87, 0x80, 0x3d, 0x58, 0xdc, 0xfa, 0xd6, 0x23, 0x4c, 0x46, 0x99, 0x91, 0x0a,
		0x70, 0x00, 0x70, 0x00, 0x70, 0x50, 0x30, 0x70, 0xf0, 0xcd, 0xf7, 0x7b, 0xcc, 0xf2, 0x28, 0x11,
		0xc1, 0xd1, 0x16, 0x9a, 0x3f, 0xdb, 0xef, 0xf5, 0x98, 0xcd, 0x29, 0x50, 0xc3, 0x54, 0x3e, 0x6c,
		0x2a, 0x13, 0xa6, 0x0f, 0xa6, 0x0f, 0xa6, 0x0f, 0xa6, 0xaf, 0x98, 0xa6, 0x6f, 0xe8, 0x71, 0x91,
		0xf3, 0x5b, 0x19, 0x0c, 0x5f, 0x22, 0x91, 0xc6, 0xec, 0x1d, 0xc1, 0xec, 0xc1, 0xec, 0xed, 0xab,
		0xd9, 0x53, 0x65, 0x7b, 0x53, 0x41, 0x31, 0x0b, 0xc4, 0x82, 0xc0, 0x27, 0xd0, 0xf4, 0xe5, 0x14,
		0x53, 0x22, 0x9c, 0x68, 0x2e, 0x69, 0x30, 0x0f, 0xb9, 0x11, 0xd0, 0x61, 0x0c, 0x34, 0x1a, 0x05,
		0x5d, 0xc6, 0x41, 0xbb, 0x91, 0xd0, 0x6e, 0x2c, 0xf4, 0x1a, 0x0d, 0x3a, 0x32, 0x89, 0x94, 0xd2,
		0xa3, 0xc2, 0x50, 0xab, 0x5c, 0xfe, 0x69, 0x85, 0x72, 0xcd, 0x26, 0x26, 0xe0, 0x9c, 0x50, 0x24,
		0x6d, 0xf2, 0xe9, 0xf8, 0x3f, 0x5a, 0x9d, 0x32, 0x74, 0x25, 0xa3, 0xa6, 0xc2, 0x35, 0x25, 0xa5,
		0xa6, 0xf2, 0x75, 0x67, 0x39, 0x4e, 0x96, 0x9f, 0xae, 0x6c, 0x47, 0x62, 0xcd, 0x9b, 0x9d, 0x5a,
		0x0d, 0x49, 0xab, 0x0b, 0x53, 0x2b, 0xd6, 0x7d, 0x18, 0xb3, 0x4d, 0x68, 0xad, 0xe9, 0xa5, 0x75,
		0x8a, 0xb2, 0xb1, 0xf1, 0x96, 0x08, 0x87, 0xba, 0x9e, 0x39, 0xf8, 0xce, 0x75, 0x01, 0xd1, 0xb1,
		0x74, 0x20, 0x51, 0x20, 0x51, 0x20, 0x51, 0x20, 0x51, 0x20, 0x51, 0x20, 0x51, 0x20, 0x51, 0x20,
		0x51, 0x20, 0x51, 0x20, 0xd1, 0x79, 0x24, 0xea, 0x0f, 0xb9, 0x4e, 0x28, 0x9a, 0x8a, 0x07, 0x16,
		0x05, 0x16, 0x05, 0x16, 0x05, 0x16, 0x05, 0x16, 0x05, 0x16, 0x05, 0x16, 0x05, 0x16, 0x05, 0x16,
		0x05, 0x16, 0x9d, 0xc7, 0xa2, 0xc1, 0x4f, 0xbd, 0x1b, 0xf4, 0x13, 0xf9, 0x40, 0xa3, 0x40, 0xa3,
		0x40, 0xa3, 0x40, 0xa3, 0x40, 0xa3, 0x40, 0xa3, 0x40, 0xa3, 0x40, 0xa3, 0x40, 0xa3, 0x40, 0xa3,
		0xf3, 0x68, 0x94, 0xbb, 0x7d, 0xe6, 0x0f, 0xb9, 0xc9, 0x03, 0xcb, 0x0b, 0xdd, 0x68, 0xf1, 0xe8,
		0xc2, 0xa5, 0xcb, 0xee, 0x04, 0x84, 0x0a, 0x84, 0x0a, 0x84, 0x0a, 0x84, 0x0a, 0x84, 0x0a, 0x84,
		0x0a, 0x84, 0x0a, 0x84, 0x0a, 0x84, 0x0a, 0x84, 0xba, 0x80, 0x50, 0x35, 0xf3, 0xa5, 0x1c, 0x7c,
		0x29, 0xd0, 0x28, 0xd0, 0x28, 0xd0, 0x28, 0xd0, 0x28, 0xd0, 0x28, 0xd0, 0x28, 0xd0, 0x28, 0xd0,
		0x28, 0xd0, 0xe8, 0x4a, 0x34, 0x3a, 0xf4, 0xbe, 0x7b, 0xfe, 0x0f, 0x4f, 0x2f, 0x24, 0x9d, 0xbb,
		0x09, 0x70, 0x29, 0x70, 0x29, 0x70, 0x29, 0x70, 0x29, 0x70, 0x29, 0x70, 0x29, 0x70, 0x29, 0x70,
		0x29, 0x70, 0xe9, 0xee, 0xe0, 0xd2, 0x9d, 0xea, 0x73, 0x45, 0xd5, 0x9e, 0x29, 0xee, 0xf6, 0xf1,
		0x8e, 0xa8, 0xc0, 0xdc, 0xe8, 0xc9, 0x78, 0x30, 0xb4, 0xb9, 0x97, 0xf8, 0xd6, 0x86, 0x65, 0x0f,
		0xee, 0xeb, 0xe3, 0xbb, 0xdf, 0x5f, 0xc5, 0x77, 0xbd, 0xbf, 0x1c, 0xdf, 0x6f, 0x0b, 0xcb, 0xfb,
		0x39, 0x6e, 0xc8, 0x03, 0xf7, 0xdb, 0x90, 0xb6, 0xb6, 0xe9, 0x8c, 0x54, 0x54, 0x37, 0xcd, 0x31,
		0xca, 0x40, 0x99, 0x3f, 0x54, 0x37, 0xcd, 0xb2, 0xe2, 0x50, 0xdd, 0xd4, 0xa0, 0xe9, 0x96, 0xb7,
		0x30, 0xb2, 0xaa, 0x5d, 0xf3, 0x60, 0xf8, 0x60, 0xf8, 0x60, 0xf8, 0xf4, 0x19, 0x3e, 0x2b, 0x64,
		0x66, 0xaa, 0xa3, 0xa6, 0x5a, 0x83, 0xbe, 0x05, 0x1b, 0x78, 0x46, 0x20, 0xeb, 0x26, 0x85, 0xc1,
		0xb6, 0xe9, 0x76, 0x2f, 0xa6, 0x70, 0xef, 0xdc, 0x07, 0xc9, 0xef, 0x31, 0x38, 0xdd, 0x42, 0xdb,
		0xdb, 0xb3, 0x42, 0x6e, 0xda, 0x8f, 0x09, 0x0d, 0x44, 0x64, 0x7d, 0xa7, 0x85, 0xc2, 0xfe, 0xc2,
		0xfe, 0xc2, 0xfe, 0x16, 0xcc, 0xfe, 0x72, 0xb7, 0xcf, 0xb8, 0x6b, 0x7f, 0x0f, 0x49, 0x08, 0x6a,
		0x42, 0x62, 0xba, 0xf4, 0xc5, 0x1b, 0x71, 0x66, 0x25, 0xcf, 0xf2, 0xfc, 0x90, 0xd9, 0xbe, 0xe7,
		0x90, 0x50, 0x08, 0xb4, 0x44, 0x37, 0xe1, 0x8e, 0x81, 0x0e, 0x62, 0x5b, 0x17, 0xa1, 0xbd, 0xcd,
		0xad, 0xf1, 0x09, 0x37, 0x4d, 0x74, 0x10, 0xd6, 0x39, 0x12, 0xd5, 0xdb, 0x3c, 0x8b, 0x05, 0x21,
		0x7e, 0x3b, 0x5b, 0x88, 0xf4, 0xfc, 0x01, 0x0b, 0xcc, 0xef, 0x8c, 0xb0, 0xa5, 0x6c, 0x2a, 0x11,
		0x18, 0x0f, 0x18, 0x0f, 0x18, 0xaf, 0x60, 0x18, 0x6f, 0xe8, 0x7a, 0xfc, 0xe8, 0x94, 0x10, 0xde,
		0x9d, 0x02, 0x86, 0x01, 0x86, 0xed, 0x0b, 0x0c, 0x3b, 0x3d, 0x39, 0x39, 0x06, 0xee, 0x02, 0xee,
		0x52, 0xc7, 0x5d, 0x03, 0x2b, 0xe0, 0x1e, 0x0b, 0x4c, 0xd7, 0xa1, 0x43, 0x5e, 0x53, 0x32, 0x81,
		0xbd, 0x80, 0xbd, 0x80, 0xbd, 0x0a, 0x86, 0xbd, 0xfa, 0x96, 0x6d, 0x5a, 0x8e, 0x13, 0xb0, 0x30,
		0xa4, 0xdc, 0xd8, 0x38, 0xa7, 0xd9, 0xd8, 0xe0, 0x2c, 0xf0, 0xc8, 0x30, 0x58, 0xe9, 0xeb, 0xa1,
		0xf9, 0xde, 0x32, 0xbb, 0x55, 0xf3, 0x53, 0xe7, 0xef, 0xf2, 0xaf, 0xd7, 0x17, 0xb3, 0xbf, 0xbf,
		0xf9, 0xfb, 0xe4, 0x97, 0xfa, 0xfa, 0xe8, 0x50, 0xbc, 0x78, 0xb3, 0x55, 0xff, 0x93, 0xfc, 0xed,
		0xff, 0xb3, 0xfe, 0xf5, 0xff, 0x55, 0xda, 0x6b, 0xbf, 0x47, 0x4a, 0x39, 0x4c, 0x0b, 0x85, 0xe7,
		0x83, 0xe7, 0x83, 0xe7, 0x03, 0xeb, 0x00, 0xd6, 0x01, 0xac, 0x03, 0x58, 0x07, 0xb0, 0x0e, 0x60,
		0x1d, 0x96, 0xa0, 0xaf, 0x81, 0x1f, 0x70, 0xd3, 0x1b, 0xf6, 0xe9, 0x21, 0x58, 0x2a, 0x19, 0x38,
		0x0c, 0x38, 0x0c, 0x38, 0x0c, 0x38, 0x0c, 0x38, 0x0c, 0x38, 0x0c, 0x38, 0x0c, 0x38, 0x0c, 0x38,
		0x6c, 0x15, 0x0e, 0x1b, 0x04, 0xae, 0x1f, 0xb8, 0xfc, 0x59, 0x13, 0x18, 0x4b, 0xc5, 0x03, 0x91,
		0x01, 0x91, 0x01, 0x91, 0x01, 0x91, 0x01, 0x91, 0x01, 0x91, 0x01, 0x91, 0x01, 0x91, 0x01, 0x91,
		0x4d, 0x23, 0x32, 0x7a, 0x46, 0x0c, 0x4c, 0x18, 0x70, 0x17, 0x70, 0x17, 0x70, 0x17, 0x70, 0x17,
		0x70, 0x17, 0x70, 0x17, 0x70, 0x17, 0x70, 0xd7, 0x2a, 0xdc, 0xa5, 0x81, 0x01, 0x03, 0xf3, 0x05,
		0x04, 0x06, 0x04, 0x06, 0x04, 0x06, 0x04, 0x06, 0x04, 0x06, 0x04, 0x06, 0x04, 0x06, 0x04, 0xb6,
		0x6a, 0x52, 0xc2, 0x67, 0xcf, 0x7e, 0x0c, 0x7c, 0xcf, 0xfd, 0xff, 0x68, 0xaa, 0xc6, 0xa6, 0x06,
		0x7e, 0x5e, 0x30, 0x50, 0x18, 0x50, 0x18, 0x50, 0x58, 0xc1, 0x50, 0x58, 0xdc, 0x9b, 0x64, 0x4e,
		0x53, 0x4d, 0x1e, 0xdd, 0x86, 0xf0, 0x84, 0x5a, 0x85, 0x40, 0x56, 0x8d, 0x82, 0x9c, 0x9f, 0x0c,
		0xa4, 0xdf, 0xe2, 0x01, 0x45, 0x5d, 0xe5, 0x19, 0xa9, 0x87, 0xd1, 0x88, 0xd6, 0xaf, 0xef, 0x5b,
		0x7f, 0x5d, 0x5f, 0x52, 0xb6, 0x78, 0x38, 0x8a, 0xe4, 0x36, 0xbf, 0xb4, 0x47, 0x82, 0x8b, 0xd5,
		0x2c, 0xc3, 0xaf, 0xc7, 0x1a, 0x46, 0x38, 0x8a, 0xe3, 0x01, 0x24, 0xc5, 0x1f, 0x93, 0xe1, 0xbb,
		0x30, 0x8e, 0x76, 0xa3, 0x50, 0xfc, 0x86, 0xd0, 0x42, 0xc8, 0x59, 0x9f, 0xf4, 0xd8, 0xfa, 0x44,
		0x24, 0x10, 0x02, 0x10, 0x02, 0x10, 0x42, 0xc1, 0x10, 0x02, 0x4e, 0xad, 0xe3, 0xd4, 0xfa, 0xbe,
		0x9f, 0x5a, 0xe7, 0x6e, 0x9f, 0xf9, 0x43, 0x4e, 0xe7, 0xf3, 0xc6, 0x02, 0xe1, 0xf1, 0xe0, 0xf1,
		0xe0, 0xf1, 0x8a, 0x18, 0x13, 0x27, 0x1a, 0x8a, 0x58, 0x58, 0x25, 0x16, 0x6e, 0x34, 0xaf, 0x3f,
		0x93, 0x07, 0xc2, 0xad, 0xdf, 0x9a, 0xb7, 0xed, 0x9d, 0x8f, 0x82, 0xe3, 0xa1, 0xa3, 0x0d, 0x81,
		0x47, 0x03, 0x87, 0xf8, 0x57, 0xee, 0x4a, 0xc9, 0xb5, 0x42, 0xd5, 0x90, 0x8d, 0xb6, 0x11, 0x9b,
		0x9c, 0xfa, 0x88, 0x0f, 0x9c, 0xd8, 0x15, 0x82, 0x43, 0x1c, 0xf9, 0x5f, 0x95, 0xb6, 0x3e, 0xa5,
		0x86, 0x1b, 0xf2, 0x2a, 0xe7, 0x81, 0xd4, 0xc4, 0x94, 0xae, 0x5c, 0xaf, 0xd6, 0x63, 0x91, 0x37,
		0x95, 0xdc, 0x2b, 0x2b, 0x5d, 0x59, 0x3f, 0xa7, 0x24, 0xd0, 0xd4, 0xf8, 0x2e, 0x35, 0x03, 0x87,
		0x05, 0xcc, 0xf9, 0x10, 0x0d, 0x8d, 0x37, 0xec, 0xf5, 0x54, 0x44, 0x7c, 0x09, 0x59, 0x20, 0xb5,
		0x59, 0x27, 0x3a, 0x93, 0x8a, 0x4a, 0x42, 0xa5, 0x1c, 0x12, 0xbe, 0x2a, 0x4b, 0x1b, 0x42, 0x31,
		0x6d, 0xcb, 0xae, 0x33, 0xd9, 0xbe, 0x99, 0x71, 0x2e, 0x64, 0xe7, 0x40, 0x79, 0xec, 0xb3, 0x8d,
		0xce, 0xfa, 0x77, 0xcd, 0xf0, 0x9e, 0xa5, 0x64, 0x9a, 0xb2, 0xbd, 0x5d, 0x0a, 0x08, 0xe3, 0xab,
		0x32, 0x8e, 0xa2, 0x58, 0x48, 0x26, 0x1c, 0x7a, 0xc9, 0x84, 0x58, 0x0a, 0xa1, 0x94, 0x6c, 0xc8,
		0xa4, 0x1c, 0x1a, 0x29, 0x87, 0x40, 0x6a, 0xa1, 0x0e, 0xad, 0x66, 0x09, 0x87, 0x28, 0x93, 0x50,
		0x84, 0x59, 0x5d, 0xb1, 0x3e, 0x58, 0x32, 0xfd, 0xae, 0xd2, 0xbe, 0x56, 0x07, 0x07, 0xef, 0x46,
		0xaa, 0xfb, 0x2e, 0x7b, 0xe7, 0x2a, 0x1a, 0xc5, 0x1c, 0xa1, 0x12, 0x61, 0xcd, 0x1c, 0x5d, 0x26,
		0xa6, 0x9a, 0x47, 0xa2, 0xaa, 0x59, 0x86, 0x6a, 0xee, 0xac, 0x6a, 0x7e, 0x74, 0xc5, 0xd0, 0xdf,
		0x08, 0x6c, 0x3e, 0x59, 0x3d, 0xf1, 0x71, 0x9f, 0xe9, 0x42, 0x19, 0x49, 0x10, 0x1c, 0xb5, 0x8f,
		0xac, 0x6b, 0x0d, 0x7b, 0x5c, 0x8a, 0xef, 0x2d, 0xb5, 0x1a, 0xcd, 0x3f, 0xc4, 0x60, 0x48, 0x47,
		0x14, 0x8c, 0x4b, 0x71, 0x91, 0xd2, 0xdc, 0xa3, 0x0a, 0xd7, 0x48, 0xc0, 0x2d, 0xaa, 0x72, 0x89,
		0x64, 0xdc, 0x21, 0x19, 0x57, 0x48, 0xc3, 0x0d, 0xea, 0x0d, 0xf8, 0xa4, 0xb9, 0xbe, 0x59, 0x6e,
		0x6f, 0xc0, 0x02, 0xd7, 0x77, 0x64, 0xa9, 0x3d, 0x15, 0x2a, 0x4f, 0x8d, 0xba, 0xa3, 0xa1, 0xea,
		0x46, 0xd4, 0xdc, 0xa7, 0x6a, 0xab, 0xad, 0x40, 0xcd, 0x25, 0x54, 0x9c, 0xb0, 0x55, 0x51, 0x65,
		0x53, 0xd4, 0x99, 0xb6, 0xd1, 0x9b, 0x2b, 0x31, 0x6b, 0xa3, 0xf7, 0x96, 0x25, 0xd2, 0xb4, 0xb3,
		0x28, 0xaf, 0x34, 0x4c, 0xc2, 0x48, 0x71, 0xfa, 0xbe, 0xc3, 0xe4, 0x1d, 0xdf, 0x44, 0x44, 0x9e,
		0x9e, 0xaf, 0x7a, 0xd9, 0xae, 0xff, 0x5e, 0x83, 0xef, 0x83, 0xef, 0x83, 0xef, 0xb3, 0x07, 0xa6,
		0x65, 0x73, 0xf7, 0xc9, 0xe5, 0xcf, 0xfb, 0xed, 0xfd, 0x12, 0xa3, 0xa0, 0xea, 0xff, 0x6e, 0xaa,
		0xad, 0x96, 0xb0, 0x71, 0x29, 0x80, 0x0b, 0x4c, 0x5e, 0x5f, 0xcd, 0x09, 0x8e, 0x5f, 0x7e, 0xbf,
		0xfc, 0xa0, 0x10, 0x83, 0xa8, 0xc2, 0x24, 0xc2, 0xb9, 0xc0, 0xb9, 0x6c, 0x91, 0x73, 0x21, 0x69,
		0xde, 0xaf, 0xd2, 0xac, 0x3f, 0x87, 0xe6, 0xfc, 0x7a, 0x2c, 0x4a, 0x9a, 0xff, 0x6c, 0xf6, 0x2d,
		0x5b, 0xde, 0xb4, 0xcc, 0x8a, 0x81, 0x8d, 0x81, 0x8d, 0xd9, 0x39, 0x1b, 0xa3, 0x96, 0x8a, 0xac,
		0x92, 0x7a, 0xac, 0x9c, 0x6a, 0xac, 0x25, 0xb5, 0xb8, 0x23, 0xf3, 0x22, 0x14, 0xa9, 0xc3, 0x9a,
		0x52, 0x85, 0x3b, 0xc5, 0xb1, 0xc6, 0xd2, 0x25, 0x49, 0xe6, 0xed, 0xb1, 0x64, 0x11, 0x12, 0x58,
		0x64, 0x58, 0xe4, 0x2d, 0xb0, 0xc8, 0xd2, 0x45, 0x3c, 0x14, 0x8a, 0x76, 0x28, 0x16, 0xe9, 0x50,
		0x08, 0x9b, 0x29, 0x8a, 0x70, 0x50, 0x15, 0xdd, 0x20, 0xaf, 0xd6, 0x40, 0x57, 0x9d, 0x41, 0xe5,
		0xa4, 0x05, 0x45, 0xd1, 0x0c, 0xca, 0x22, 0x19, 0x45, 0x1e, 0xe6, 0x9c, 0x58, 0x97, 0x0e, 0xb2,
		0xd7, 0x96, 0x65, 0xaf, 0x09, 0xe4, 0xd1, 0x66, 0x48, 0x91, 0x79, 0xa5, 0x30, 0x06, 0xe3, 0x3c,
		0xd8, 0x0c, 0xe4, 0x92, 0x58, 0xca, 0xab, 0x78, 0x8a, 0x2b, 0x49, 0x4a, 0xab, 0x44, 0x0a, 0xab,
		0x44, 0xca, 0xea, 0xba, 0x41, 0x15, 0x5c, 0x50, 0xd2, 0x0b, 0xa9, 0x94, 0x29, 0x3b, 0x6a, 0x75,
		0x8e, 0xe9, 0xcb, 0x4b, 0x70, 0xf5, 0xc2, 0x5a, 0xfe, 0x97, 0x15, 0xa3, 0x92, 0x75, 0x34, 0x04,
		0x47, 0x61, 0xf9, 0xb3, 0x2f, 0x3e, 0xd9, 0x92, 0xa7, 0x5a, 0x93, 0x31, 0x96, 0x29, 0x43, 0x6c,
		0x4d, 0x46, 0xd8, 0xda, 0x0c, 0xb0, 0x2c, 0xa0, 0x59, 0x00, 0x1c, 0x67, 0x05, 0xc1, 0xc2, 0x60,
		0x57, 0x18, 0xd4, 0x8a, 0x81, 0x57, 0xb1, 0x95, 0xb4, 0x2e, 0xe3, 0x4a, 0x38, 0x02, 0x93, 0x8c,
		0xb8, 0x32, 0x46, 0x58, 0x99, 0x23, 0x2a, 0x91, 0x08, 0x4a, 0x22, 0x62, 0x12, 0x8d, 0x90, 0xa4,
		0x23, 0x22, 0xe9, 0x08, 0x48, 0x2e, 0xe2, 0x51, 0xf3, 0x7c, 0x99, 0x23, 0x18, 0xf1, 0x88, 0x45,
		0x20, 0x42, 0x11, 0x8c, 0x48, 0x04, 0xd0, 0x89, 0x4c, 0xc4, 0x21, 0x1b, 0x61, 0x28, 0x43, 0x5d,
		0x79, 0x68, 0x2b, 0x42, 0xd0, 0xc8, 0x44, 0x08, 0x2a, 0x11, 0xc1, 0x26, 0x87, 0x85, 0x08, 0x5d,
		0x76, 0xb6, 0x0e, 0x22, 0xbc, 0x00, 0xae, 0x97, 0xa0, 0x83, 0x57, 0x2f, 0x3c, 0xde, 0xba, 0xc7,
		0xca, 0xf2, 0x38, 0xa5, 0xa5, 0xf0, 0x63, 0x1e, 0x92, 0xcd, 0x3e, 0xee, 0xe4, 0xa1, 0xa6, 0x1e,
		0xa8, 0xd4, 0xeb, 0x39, 0x83, 0x85, 0xc7, 0x98, 0x24, 0x68, 0x44, 0x7f, 0x9d, 0x7b, 0xfc, 0xe5,
		0x10, 0x65, 0xa5, 0x57, 0x7a, 0xc9, 0x0b, 0xcd, 0x78, 0x9d, 0xc5, 0x5b, 0x65, 0xf1, 0x32, 0x99,
		0xbd, 0x4a, 0x66, 0x2f, 0xb2, 0xe0, 0x35, 0xa2, 0x07, 0x13, 0x9c, 0xe2, 0x55, 0x90, 0xa2, 0x64,
		0x8f, 0x47, 0x69, 0x0d, 0x48, 0x4c, 0xbe, 0xa7, 0x88, 0x12, 0x0f, 0x89, 0x50, 0xe2, 0xf2, 0xa9,
		0xd9, 0x02, 0x94, 0xb8, 0x74, 0xea, 0x34, 0xa1, 0x44, 0xfb, 0xd1, 0x0a, 0x43, 0x37, 0xcc, 0x52,
		0x89, 0x6a, 0x32, 0xcd, 0x93, 0x6b, 0xb6, 0x04, 0x1b, 0xbe, 0xbc, 0x14, 0xb6, 0x18, 0x1b, 0xbe,
		0xb8, 0x54, 0x36, 0x85, 0x0d, 0xc3, 0x51, 0x7a, 0x59, 0x76, 0x6c, 0x78, 0x74, 0x9e, 0x2b, 0xc5,
		0xf0, 0xfc, 0xe0, 0x73, 0xd3, 0xb7, 0x4d, 0xdb, 0xef, 0x0f, 0x02, 0x16, 0x86, 0xcc, 0x31, 0x7b,
		0xcc, 0xea, 0x46, 0x17, 0xff, 0x92, 0x75, 0xf1, 0x6f, 0xb3, 0xa8, 0xd8, 0x28, 0x59, 0x50, 0x42,
		0xcf, 0xb2, 0x64, 0x19, 0x42, 0xd9, 0xf6, 0x52, 0xd9, 0xc4, 0x16, 0x89, 0x21, 0x98, 0x7a, 0x2a,
		0x96, 0x6a, 0x2a, 0x97, 0x5a, 0x3a, 0x4a, 0x25, 0xbd, 0xfc, 0xad, 0xda, 0x6a, 0xd5, 0x5b, 0xf7,
		0x97, 0xcd, 0xab, 0x9b, 0xe6, 0x75, 0xed, 0x5a, 0xe4, 0x54, 0xc5, 0x28, 0x8b, 0xb4, 0x7e, 0xdd,
		0xae, 0xdd, 0x7e, 0xaa, 0x5e, 0xd6, 0xee, 0xab, 0x8d, 0x7a, 0xb5, 0x25, 0x72, 0x7d, 0x39, 0xce,
		0x42, 0x6d, 0xde, 0xb6, 0xe5, 0x6e, 0x7f, 0x1c, 0x5d, 0x7e, 0x55, 0xbd, 0xbc, 0xaf, 0x7e, 0xfc,
		0x78, 0x5b, 0x6b, 0x09, 0xdd, 0xba, 0x12, 0x5d, 0x7b, 0x5d, 0x6b, 0xff, 0xd1, 0xbc, 0xfd, 0xb7,
		0xcc, 0xf5, 0x27, 0xb3, 0xaf, 0x7e, 0x5d, 0xbd, 0x12, 0xc9, 0xc7, 0x2d, 0x9d, 0x8e, 0xea, 0xcb,
		0x5c, 0x56, 0x1b, 0x25, 0xda, 0xb3, 0xba, 0xc2, 0xd9, 0xb5, 0x4b, 0x56, 0x80, 0x50, 0x8c, 0xb8,
		0x30, 0xff, 0x99, 0x8f, 0xa8, 0xce, 0x5d, 0x1d, 0x0f, 0xe1, 0x85, 0x21, 0x10, 0xdf, 0x26, 0x03,
		0x28, 0xb4, 0x0d, 0x3b, 0xb3, 0x5e, 0x2e, 0x8c, 0x63, 0x81, 0x2b, 0xe7, 0x57, 0xcb, 0x85, 0x51,
		0x11, 0x39, 0xa4, 0x3c, 0xbb, 0xcc, 0x2f, 0x8c, 0x72, 0x21, 0x36, 0x5f, 0x0a, 0xee, 0xc4, 0x99,
		0x67, 0x7d, 0xeb, 0x31, 0x01, 0x90, 0x3c, 0xbe, 0x60, 0xcd, 0x6b, 0x8b, 0x9c, 0xc9, 0x29, 0x45,
		0xbe, 0xeb, 0x65, 0x35, 0xed, 0x00, 0x23, 0x00, 0x23, 0x2c, 0x8c, 0xf8, 0x37, 0xdf, 0xef, 0x31,
		0xcb, 0x13, 0xc1, 0x06, 0x47, 0xbb, 0xac, 0xcc, 0x8f, 0xac, 0xd7, 0xf3, 0xe3, 0xd2, 0x74, 0x41,
		0x76, 0x85, 0x9e, 0xbe, 0x08, 0x5a, 0x06, 0x2d, 0x5b, 0xba, 0x25, 0x72, 0x5a, 0x11, 0x50, 0xb2,
		0x73, 0x6c, 0x89, 0xec, 0xce, 0x96, 0x88, 0x7a, 0xd9, 0xb1, 0xdd, 0xdf, 0x21, 0xd9, 0x6e, 0xaf,
		0x11, 0x0e, 0x07, 0xf1, 0x6d, 0x4c, 0xde, 0x7b, 0x32, 0x2d, 0xe7, 0x89, 0x05, 0xdc, 0x0d, 0x59,
		0x62, 0x96, 0xb2, 0xee, 0xad, 0xaf, 0x96, 0x01, 0x9f, 0x02, 0x9f, 0xb2, 0x30, 0xe2, 0xae, 0xc3,
		0x3c, 0xee, 0xf2, 0xe7, 0x6c, 0xe7, 0xc0, 0x52, 0xf4, 0x96, 0x25, 0x3b, 0xac, 0x9e, 0x88, 0xfe,
		0x60, 0x85, 0x12, 0x15, 0xa3, 0x1a, 0x8d, 0x8f, 0x37, 0xf7, 0xed, 0xc6, 0xef, 0x59, 0xa7, 0x29,
		0x36, 0x93, 0xa1, 0x50, 0xb6, 0xb1, 0xe4, 0x81, 0x81, 0x31, 0x8d, 0x50, 0xff, 0x58, 0xd2, 0xe1,
		0x25, 0x24, 0x9f, 0xea, 0xaa, 0x7a, 0x5d, 0xfd, 0x5c, 0xbb, 0xaa, 0x5d, 0xb7, 0xd3, 0xb0, 0xbd,
		0x40, 0x4f, 0x17, 0x73, 0x02, 0x1f, 0x6b, 0xad, 0xcb, 0xdb, 0xfa, 0x4d, 0xbb, 0xde, 0xbc, 0x2e,
		0xdc, 0xb3, 0x15, 0x6b, 0x32, 0x5b, 0x7f, 0xb5, 0xda, 0xb5, 0xab, 0xfb, 0xcb, 0xea, 0x4d, 0xf5,
		0x43, 0xbd, 0x51, 0x6f, 0xd7, 0x6b, 0xad, 0x02, 0x3e, 0x5e, 0x41, 0xe7, 0x33, 0x79, 0xba, 0x98,
		0x65, 0x23, 0x06, 0x28, 0x1d, 0xcd, 0xf6, 0x1b, 0x59, 0xbf, 0xbb, 0x02, 0xe5, 0x46, 0x29, 0x8e,
		0x0e, 0x0b, 0xed, 0xc0, 0x1d, 0x64, 0x7a, 0xcc, 0xf9, 0xf4, 0xc8, 0xe9, 0x6b, 0x01, 0xdd, 0x00,
		0xdd, 0x16, 0xd7, 0x89, 0xf8, 0x2e, 0x78, 0x86, 0xef, 0x36, 0x98, 0xf7, 0x10, 0xa7, 0x58, 0x81,
		0x10, 0x28, 0x38, 0x21, 0x50, 0x3e, 0x41, 0xfc, 0xbf, 0x8b, 0x4e, 0x23, 0x53, 0xe5, 0x9a, 0x79,
		0x6f, 0x91, 0xe5, 0x4c, 0x11, 0xdc, 0x04, 0xdc, 0x04, 0xdc, 0x04, 0xdc, 0x04, 0xdc, 0x44, 0xf1,
		0xdd, 0x44, 0xde, 0x19, 0xfd, 0x3d, 0x67, 0xf0, 0x2e, 0xfe, 0xbf, 0x24, 0xc5, 0x5a, 0xe1, 0xc0,
		0xdf, 0xd4, 0xb1, 0xc1, 0xb5, 0x09, 0xdd, 0x53, 0xdf, 0x45, 0x52, 0xf7, 0xf6, 0x24, 0x75, 0x4f,
		0x0e, 0xc5, 0x66, 0xc6, 0x29, 0x59, 0xcf, 0xd1, 0x66, 0xac, 0xfe, 0x0f, 0x94, 0x52, 0x64, 0x94,
		0x92, 0xb5, 0x5a, 0xff, 0xba, 0x83, 0x1f, 0x2b, 0x27, 0xe8, 0xc5, 0x83, 0x20, 0x92, 0x4b, 0x4a,
		0x78, 0x69, 0xc9, 0x2c, 0x31, 0x85, 0xa5, 0x26, 0xbb, 0xe4, 0x94, 0x97, 0x9e, 0xf2, 0x12, 0x54,
		0x5b, 0x8a, 0x82, 0xe0, 0x40, 0x57, 0x43, 0x89, 0xac, 0x09, 0x7a, 0x2b, 0x67, 0x3a, 0x5b, 0xc2,
		0xde, 0xe2, 0x83, 0xaa, 0x14, 0xd5, 0x5e, 0x9f, 0xd0, 0xb7, 0x00, 0x9d, 0xf6, 0xa4, 0xfe, 0x95,
		0x98, 0xce, 0xa9, 0xea, 0x1e, 0x99, 0x0e, 0x92, 0xe9, 0x22, 0x8d, 0x4e, 0x8a, 0xe9, 0xa6, 0x44,
		0xec, 0x63, 0x10, 0x55, 0x3d, 0xcd, 0x9c, 0xa0, 0xb8, 0xd2, 0x79, 0x1c, 0x15, 0xba, 0xb1, 0x9e,
		0x74, 0x0c, 0x22, 0x3f, 0x93, 0xa8, 0xc6, 0x0c, 0xbb, 0x04, 0xbb, 0x84, 0x6a, 0xcc, 0x30, 0x85,
		0xc5, 0x2f, 0x91, 0x96, 0xd2, 0x3b, 0x4b, 0x4b, 0xa4, 0xbd, 0xc4, 0xf9, 0x88, 0xbf, 0x2a, 0xfa,
		0x7b, 0x22, 0xe6, 0x2b, 0x66, 0xcc, 0x87, 0xfe, 0x9e, 0xeb, 0x15, 0x93, 0xb9, 0x0f, 0x8f, 0xdf,
		0xfc, 0x20, 0x94, 0xd0, 0xce, 0xf4, 0xd2, 0x1d, 0xe9, 0xf3, 0x09, 0x15, 0xdd, 0x02, 0x5a, 0x66,
		0xbc, 0xea, 0x14, 0xa2, 0x8b, 0xb1, 0x04, 0xb9, 0x08, 0xe3, 0x08, 0x11, 0x06, 0x22, 0x0c, 0x5d,
		0x58, 0x58, 0x54, 0x1d, 0xd2, 0x0b, 0x6d, 0x6b, 0x60, 0x7d, 0x73, 0x7b, 0x2e, 0x77, 0x59, 0x28,
		0x3f, 0x67, 0x29, 0xdd, 0x3e, 0x2d, 0x4d, 0x72, 0xb4, 0xe5, 0xd4, 0x45, 0xda, 0xfa, 0x53, 0xaa,
		0x0f, 0xa1, 0x1a, 0x51, 0xa9, 0x13, 0xb9, 0x5a, 0x91, 0xab, 0x17, 0xad, 0x9a, 0xc9, 0xa9, 0x9b,
		0xa4, 0xda, 0x29, 0xab, 0xdf, 0xa2, 0x1a, 0x3e, 0xab, 0xcf, 0xf4, 0x82, 0x32, 0x3e, 0xab, 0x4e,
		0xb5, 0x9a, 0x4a, 0x2a, 0x7b, 0x34, 0x1d, 0x2a, 0xaa, 0x41, 0x55, 0xa9, 0x55, 0x56, 0x9b, 0xea,
		0x6a, 0x53, 0x61, 0x3d, 0xaa, 0xac, 0xa6, 0xd2, 0x8a, 0xaa, 0x4d, 0xa6, 0xe2, 0x13, 0x55, 0x17,
		0xdb, 0xca, 0xce, 0xae, 0xee, 0x22, 0x5b, 0xdd, 0x39, 0xa9, 0x3c, 0xb9, 0xea, 0xeb, 0x30, 0x01,
		0x1a, 0x4d, 0x81, 0x2e, 0x93, 0xa0, 0xdd, 0x34, 0x68, 0x37, 0x11, 0x7a, 0x4d, 0x05, 0x8d, 0xc9,
		0x20, 0x32, 0x1d, 0xaa, 0x7c, 0xed, 0x5a, 0xb9, 0xd2, 0x7c, 0x6e, 0xca, 0xc4, 0xa4, 0x3f, 0xbd,
		0x9b, 0x46, 0xf0, 0x93, 0x5f, 0x9e, 0x85, 0xa8, 0x5f, 0xfd, 0xb3, 0x42, 0x30, 0x23, 0x72, 0x5b,
		0x8d, 0xeb, 0x49, 0x02, 0xf1, 0x2d, 0xc8, 0x75, 0x36, 0xf8, 0x10, 0x36, 0x18, 0x36, 0x18, 0x36,
		0x98, 0x66, 0xcd, 0x4a, 0x6f, 0xc5, 0xae, 0x5d, 0xb1, 0xe2, 0xd4, 0x7f, 0x66, 0x10, 0x76, 0x46,
		0x28, 0x73, 0x6a, 0xeb, 0x20, 0x2e, 0xca, 0xfe, 0x4e, 0x7c, 0xa3, 0xb6, 0xd8, 0x76, 0xfd, 0xe5,
		0x3e, 0x32, 0xd2, 0xd3, 0xfb, 0x52, 0xdf, 0x99, 0xc2, 0xa0, 0xeb, 0x32, 0x2c, 0x3b, 0x2c, 0xfb,
		0x9e, 0x5a, 0x76, 0xaa, 0x00, 0x3d, 0x15, 0x28, 0x9b, 0xc8, 0x9b, 0x59, 0x13, 0xe4, 0x12, 0x7d,
		0x73, 0x86, 0x8d, 0xda, 0xe0, 0xa3, 0x4e, 0x63, 0x93, 0x83, 0xd1, 0xd1, 0x6d, 0x7c, 0x72, 0x33,
		0x42, 0xb9, 0x19, 0xa3, 0x7c, 0x8c, 0x12, 0xad, 0x71, 0x22, 0x36, 0x52, 0xfa, 0x60, 0xe8, 0xc2,
		0x8a, 0x97, 0xcf, 0x64, 0xce, 0x8c, 0x5e, 0x8e, 0x0a, 0x3d, 0xc4, 0xec, 0x27, 0x0f, 0x2c, 0x73,
		0xe8, 0x85, 0x3c, 0xb2, 0xb2, 0x7a, 0x06, 0x3b, 0x60, 0x5d, 0x16, 0x30, 0xcf, 0x96, 0xef, 0x5e,
		0xbc, 0xee, 0x3f, 0x3d, 0x46, 0x65, 0x66, 0xa5, 0xb4, 0x98, 0x6d, 0x9c, 0x1f, 0x9c, 0x1c, 0x9c,
		0x1f, 0x94, 0x0d, 0xbf, 0x6b, 0xd4, 0x6b, 0xb5, 0x9a, 0x71, 0x7e, 0x58, 0x3e, 0x38, 0xaa, 0x7e,
		0x30, 0xcb, 0x87, 0x87, 0xef, 0x35, 0xd9, 0x9b, 0x3c, 0x8c, 0xe7, 0x32, 0x23, 0x3a, 0x99, 0xb3,
		0xb7, 0x7a, 0xef, 0x99, 0x97, 0x3d, 0x5d, 0x6a, 0x57, 0xd7, 0x4e, 0xaa, 0xb6, 0x47, 0xf9, 0xf5,
		0x6a, 0x3b, 0xa4, 0x76, 0x5e, 0x15, 0xf3, 0xf9, 0x08, 0xed, 0x20, 0x2d, 0xc7, 0xb9, 0x60, 0x38,
		0x08, 0xb9, 0x4e, 0x80, 0x57, 0x80, 0x57, 0x80, 0x57, 0x80, 0x57, 0xa9, 0x6a, 0xb3, 0xd2, 0x00,
		0xf6, 0x44, 0x83, 0x6c, 0xa9, 0x6a, 0xb6, 0xd2, 0x03, 0x15, 0x57, 0xbf, 0x9d, 0xaf, 0x02, 0xfa,
		0x97, 0x2e, 0x25, 0x93, 0xa8, 0x9d, 0x5b, 0x1c, 0xbc, 0x3b, 0x33, 0x6e, 0x97, 0xf7, 0xbf, 0x37,
		0xaa, 0xd7, 0x1a, 0x41, 0xd0, 0xdb, 0x6d, 0x1f, 0xa1, 0x8f, 0xcd, 0xcb, 0xb8, 0x07, 0x52, 0xf5,
		0x43, 0xa3, 0x76, 0xff, 0xb1, 0xf6, 0x7b, 0xfd, 0xb2, 0x86, 0xe1, 0x5a, 0x3d, 0x5c, 0x57, 0xd5,
		0xcb, 0xfb, 0x0f, 0xb7, 0xf5, 0x8f, 0x9f, 0x31, 0x4a, 0x2f, 0x8c, 0x52, 0xb3, 0xfd, 0x5b, 0xed,
		0x16, 0x03, 0xb4, 0x7a, 0x80, 0x6e, 0x6b, 0x37, 0xb5, 0x6a, 0x1b, 0x63, 0xf4, 0xe2, 0x18, 0x35,
		0xbf, 0x60, 0x84, 0x5e, 0x66, 0x74, 0xda, 0xd5, 0x76, 0xbd, 0x79, 0x7d, 0xdf, 0xbc, 0x6e, 0xfc,
		0x85, 0x71, 0x7a, 0x61, 0x9c, 0x80, 0x02, 0xd6, 0x8c, 0x50, 0xbb, 0xd6, 0xa8, 0xdd, 0xfc, 0xd6,
		0xbc, 0x86, 0x57, 0x7b, 0x69, 0x90, 0xfe, 0x68, 0xde, 0xc7, 0xcd, 0x01, 0x22, 0x10, 0x70, 0x5b,
		0x6b, 0x54, 0xa1, 0x74, 0x2f, 0x8c, 0xd6, 0x1f, 0x8d, 0xea, 0xf5, 0x7d, 0xf5, 0xf2, 0xb2, 0xd6,
		0x6a, 0xdd, 0xdf, 0x34, 0xeb, 0xd7, 0xed, 0x6d, 0xa3, 0x22, 0x3b, 0x45, 0x0f, 0xf7, 0x91, 0x3e,
		0x2b, 0x24, 0x37, 0x8f, 0xf4, 0xd9, 0x51, 0xf6, 0x50, 0x51, 0xb2, 0xac, 0x36, 0x7a, 0x90, 0xe2,
		0xdf, 0xec, 0x99, 0x88, 0x3c, 0x16, 0x6b, 0x83, 0xb1, 0x56, 0x9a, 0x70, 0x9b, 0x8c, 0xf5, 0x12,
		0x09, 0xda, 0x68, 0xac, 0xbd, 0x89, 0x78, 0x9b, 0x8d, 0xec, 0x22, 0x33, 0xb7, 0xe1, 0xd0, 0xbd,
		0x68, 0x88, 0x75, 0x3f, 0x0f, 0x9d, 0x2f, 0x91, 0xe4, 0x32, 0x06, 0x43, 0x9b, 0x7b, 0x63, 0xb2,
		0xaf, 0xe7, 0x0c, 0xee, 0xeb, 0xe3, 0x47, 0xb9, 0xbf, 0x4e, 0x1e, 0xe0, 0xfe, 0x72, 0x72, 0xcf,
		0x57, 0x9b, 0xb1, 0x0b, 0xf9, 0x9e, 0xb6, 0x24, 0x5a, 0x0c, 0xda, 0x16, 0x81, 0xdc, 0x2c, 0x88,
		0x8f, 0xa1, 0xc4, 0xf8, 0xa9, 0x9e, 0x3e, 0xa3, 0x39, 0x6d, 0x46, 0x76, 0xc6, 0xfb, 0x10, 0x67,
		0xbc, 0xe7, 0x5c, 0x2b, 0xce, 0x78, 0xef, 0x95, 0xd5, 0x51, 0x38, 0x95, 0x95, 0x93, 0xbd, 0x19,
		0x86, 0xdc, 0xef, 0x9b, 0xbc, 0xf7, 0x44, 0x51, 0x5e, 0x62, 0x4a, 0x18, 0xaa, 0x4b, 0xc0, 0xf2,
		0xec, 0x89, 0xe5, 0x51, 0xae, 0x2e, 0xc1, 0x7b, 0x4f, 0x74, 0x65, 0x25, 0x22, 0x61, 0xa8, 0x27,
		0x91, 0x83, 0x72, 0x52, 0x2b, 0xa9, 0x36, 0x65, 0xd5, 0xa6, 0xb4, 0x7a, 0x94, 0xb7, 0x18, 0x34,
		0x08, 0xea, 0x49, 0x14, 0x41, 0xf5, 0x75, 0x98, 0x00, 0x8d, 0xa6, 0x40, 0x97, 0x49, 0xd0, 0x6e,
		0x1a, 0xb4, 0x9b, 0x08, 0xbd, 0xa6, 0x82, 0x8e, 0x7b, 0x35, 0xf6, 0x8d, 0x10, 0x9f, 0x40, 0xf6,
		0x77, 0xbc, 0xf7, 0xb4, 0x83, 0x75, 0x24, 0xfc, 0xa1, 0x4b, 0x6f, 0x7c, 0x23, 0xa1, 0xa8, 0x22,
		0x01, 0xcb, 0x0b, 0xcb, 0x5b, 0x48, 0xcb, 0x8b, 0x2a, 0x12, 0xf3, 0x55, 0x24, 0x22, 0x83, 0xb5,
		0x5b, 0x46, 0xdd, 0x0c, 0x87, 0xdf, 0x38, 0xe5, 0x3c, 0x4f, 0x1b, 0xf7, 0x54, 0x38, 0x8c, 0x3c,
		0x8c, 0x3c, 0x8c, 0x3c, 0x8c, 0xfc, 0xb6, 0x18, 0xf9, 0xd4, 0x70, 0xa1, 0x62, 0xd0, 0xba, 0x59,
		0x46, 0xc5, 0x20, 0x18, 0x78, 0x18, 0xf8, 0x02, 0x1b, 0x78, 0xf2, 0x8a, 0x41, 0x94, 0x54, 0x80,
		0x46, 0x4a, 0x40, 0x13, 0x6a, 0xd4, 0x86, 0x1e, 0x75, 0x1a, 0x99, 0x1c, 0x8c, 0x8d, 0x6e, 0xa3,
		0x93, 0x9b, 0xf1, 0xc9, 0xcd, 0x08, 0xe5, 0x63, 0x8c, 0x68, 0x8d, 0x12, 0xb1, 0x71, 0xd2, 0x87,
		0x42, 0x97, 0xe0, 0x94, 0xc0, 0xf5, 0x1e, 0x74, 0x9e, 0xb3, 0x3e, 0xdf, 0x83, 0x52, 0x1b, 0x3a,
		0x18, 0x83, 0x1c, 0x98, 0x03, 0xf8, 0x02, 0xf8, 0x02, 0xf8, 0x02, 0xf8, 0x02, 0xf8, 0x02, 0x42,
		0x5f, 0xa0, 0xd7, 0x09, 0xc0, 0xfa, 0xc3, 0xfa, 0xc3, 0xfa, 0xc3, 0xfa, 0xd3, 0xaf, 0x78, 0xd7,
		0xe3, 0xc7, 0x65, 0x8d, 0xc6, 0xff, 0x58, 0x83, 0xe8, 0x5b, 0xcb, 0x7b, 0xd8, 0xca, 0xf2, 0x9b,
		0x57, 0xae, 0xa7, 0xbf, 0xee, 0x65, 0x5c, 0xb1, 0xa9, 0x74, 0x61, 0x94, 0x8f, 0x2a, 0x67, 0x95,
		0xf3, 0xe3, 0xd3, 0xca, 0xb9, 0xe6, 0x1a, 0x94, 0x9f, 0x02, 0xcb, 0xe6, 0xae, 0xef, 0x7d, 0x74,
		0x1f, 0x5c, 0xaa, 0x73, 0x94, 0x2f, 0xaf, 0x5d, 0xf6, 0x60, 0x71, 0xf7, 0x89, 0x25, 0xe6, 0x67,
		0x1b, 0x0f, 0xde, 0x97, 0xae, 0xac, 0x9f, 0x1b, 0x58, 0x0a, 0x67, 0x3b, 0xbc, 0x14, 0xd4, 0x4f,
		0xac, 0xe6, 0xe7, 0x27, 0xf4, 0x49, 0xdd, 0x87, 0x12, 0xa7, 0x4f, 0xc9, 0xb2, 0xd6, 0x04, 0xb6,
		0x47, 0xe2, 0x81, 0xb6, 0x81, 0xb6, 0x81, 0xb6, 0x81, 0xb6, 0x49, 0x57, 0xfc, 0x37, 0xd7, 0xb3,
		0x82, 0x67, 0x8d, 0x70, 0xfb, 0x3d, 0xca, 0xca, 0x64, 0x59, 0xeb, 0x5b, 0x98, 0x45, 0x5f, 0xac,
		0x72, 0x32, 0x04, 0x29, 0x38, 0x7a, 0x12, 0x2d, 0x91, 0x61, 0x59, 0x54, 0xdf, 0x8c, 0x04, 0x9c,
		0xcd, 0xf8, 0x5e, 0x64, 0x58, 0xaa, 0x1a, 0x00, 0xbd, 0x19, 0x96, 0x85, 0x4a, 0xad, 0x2c, 0x42,
		0x99, 0xb0, 0x68, 0x40, 0x0c, 0x7f, 0xe8, 0x1a, 0x74, 0x5b, 0xdf, 0x28, 0x1b, 0x86, 0xb2, 0x61,
		0xc5, 0xc3, 0x74, 0xf9, 0x95, 0x0b, 0x6b, 0xf7, 0x9e, 0x50, 0x27, 0xac, 0x00, 0xb3, 0x5e, 0xe4,
		0xb2, 0x3d, 0xae, 0xa3, 0x5e, 0xad, 0xc7, 0x75, 0x14, 0x8b, 0xf4, 0x1c, 0xa2, 0x3c, 0x98, 0x81,
		0x22, 0x3d, 0x5b, 0x62, 0x6c, 0x94, 0xb1, 0x2c, 0x21, 0x76, 0xa5, 0xc0, 0xaa, 0x8b, 0xd8, 0xd4,
		0x75, 0x8a, 0x6c, 0xb1, 0xd4, 0x0e, 0xf1, 0x90, 0x1c, 0xda, 0x41, 0x71, 0x31, 0xd8, 0xad, 0xfd,
		0x2b, 0x2e, 0x66, 0x3d, 0x30, 0xba, 0xe2, 0x62, 0x91, 0x30, 0x9a, 0xe2, 0x62, 0x87, 0x28, 0x2e,
		0xb6, 0x09, 0x22, 0x0e, 0xc5, 0xc5, 0x8a, 0x40, 0x9e, 0x90, 0x11, 0x6b, 0xe9, 0x8a, 0x1b, 0xba,
		0x1e, 0x3f, 0xad, 0x50, 0x2c, 0xb8, 0x44, 0x3f, 0x09, 0x12, 0x91, 0x88, 0x73, 0xbf, 0x08, 0x69,
		0x48, 0x1d, 0xb9, 0x5d, 0x69, 0x02, 0x0f, 0xf5, 0xee, 0xbe, 0xee, 0x3c, 0x1d, 0x7d, 0x79, 0x39,
		0x94, 0x79, 0x24, 0x3a, 0x72, 0xb0, 0xd2, 0x29, 0xd3, 0xc3, 0xe1, 0xed, 0xca, 0x2c, 0x16, 0x84,
		0xef, 0xee, 0x6c, 0x8a, 0x14, 0x53, 0x80, 0xd8, 0xf6, 0xa3, 0x15, 0x86, 0x6e, 0x68, 0x2a, 0xf0,
		0x35, 0x0b, 0xa6, 0x7e, 0x4a, 0x26, 0xa0, 0x18, 0xa0, 0x18, 0xa0, 0x58, 0xc1, 0xa0, 0x18, 0xd9,
		0x19, 0x2d, 0xa2, 0x33, 0x59, 0x9b, 0xb6, 0x7c, 0x26, 0x49, 0xf2, 0xc8, 0x12, 0xf3, 0x67, 0x52,
		0x6c, 0x36, 0xc2, 0x06, 0xc2, 0x06, 0xc2, 0x06, 0x52, 0xdb, 0x40, 0x5a, 0x25, 0x9d, 0x31, 0x86,
		0x15, 0x02, 0x59, 0x35, 0x6f, 0xd8, 0xa7, 0x5b, 0xc3, 0x6d, 0xbf, 0x35, 0x32, 0xf9, 0xa4, 0xa9,
		0x32, 0x87, 0x71, 0x1f, 0xf4, 0xdf, 0xaa, 0xad, 0xb8, 0xcd, 0x77, 0xf3, 0xea, 0xa6, 0x79, 0x5d,
		0xbb, 0x6e, 0x53, 0x66, 0xcc, 0x1c, 0x45, 0x77, 0xa8, 0x5f, 0xb7, 0x6b, 0xb7, 0x9f, 0xaa, 0x97,
		0xb5, 0xfb, 0x6a, 0xa3, 0x5e, 0x6d, 0x51, 0xca, 0x2f, 0x47, 0xf2, 0xe3, 0xc6, 0x9b, 0x5a, 0x1e,
		0xff, 0x78, 0xdc, 0xd7, 0xbb, 0xfa, 0xf1, 0xe3, 0x6d, 0xad, 0x45, 0xfa, 0xe8, 0x95, 0x48, 0xf6,
		0x75, 0xad, 0xfd, 0x47, 0xf3, 0xf6, 0xdf, 0x3a, 0xe4, 0x9f, 0xcc, 0x0e, 0xfd, 0x75, 0xf5, 0xaa,
		0x46, 0x29, 0xfe, 0x34, 0xce, 0x2f, 0x68, 0x5e, 0x56, 0x1b, 0xa5, 0x62, 0x25, 0x94, 0xf9, 0xf5,
		0xd8, 0x70, 0x12, 0xaa, 0xc9, 0xa2, 0x86, 0x90, 0x86, 0xd6, 0x0b, 0xfa, 0x41, 0x56, 0xe3, 0x6d,
		0x4e, 0x7a, 0xbc, 0x04, 0x2e, 0x0c, 0x42, 0xda, 0x21, 0x59, 0x00, 0x17, 0xc6, 0x29, 0x25, 0x0d,
		0x33, 0xa5, 0x6f, 0xa4, 0x07, 0x46, 0x17, 0xb4, 0xed, 0xc2, 0xa8, 0x50, 0x66, 0xf2, 0xcd, 0x9a,
		0xa1, 0x0b, 0xa3, 0xbc, 0x1b, 0x59, 0x7c, 0x1b, 0xc1, 0xf6, 0x94, 0x6c, 0x06, 0x58, 0x0c, 0x20,
		0x78, 0x20, 0x78, 0xb0, 0x18, 0xc5, 0xb4, 0x74, 0x3d, 0x2b, 0xe4, 0xe6, 0x70, 0xe0, 0x50, 0x14,
		0xa0, 0x9d, 0x24, 0x10, 0x4d, 0x09, 0x85, 0xed, 0x83, 0xed, 0x83, 0xed, 0x2b, 0x98, 0xed, 0xa3,
		0xde, 0x4b, 0xaf, 0x60, 0x2f, 0x5d, 0x50, 0xe8, 0x78, 0x63, 0xf6, 0x7d, 0xb9, 0x7c, 0x7c, 0x7c,
		0x56, 0x3e, 0x3c, 0x3e, 0x3d, 0x3f, 0xa9, 0x9c, 0x9d, 0x9d, 0x9c, 0x1f, 0x9e, 0x6f, 0xf1, 0xbe,
		0x2c, 0x69, 0x01, 0x94, 0xad, 0xd9, 0x5c, 0x5f, 0x9c, 0xc3, 0x33, 0xec, 0xad, 0x93, 0xc5, 0x8f,
		0xc6, 0xde, 0xee, 0xad, 0xf7, 0x2d, 0xcf, 0x7a, 0x88, 0x8f, 0x61, 0x99, 0x96, 0xe3, 0x04, 0x2c,
		0x0c, 0xe9, 0x20, 0xda, 0x12, 0xd9, 0x40, 0x6a, 0x40, 0x6a, 0x40, 0x6a, 0x88, 0x52, 0xb7, 0xc2,
		0x12, 0x12, 0xef, 0xb9, 0xaf, 0xba, 0x01, 0x6c, 0x22, 0x6c, 0x22, 0x6c, 0x22, 0x6c, 0x62, 0x01,
		0x6d, 0xe2, 0xc0, 0x0f, 0xb8, 0xe9, 0xb0, 0xd0, 0x0e, 0xdc, 0x01, 0xc9, 0x01, 0xf3, 0x74, 0x7c,
		0x17, 0x24, 0xc3, 0x0a, 0xc2, 0x0a, 0xc2, 0x0a, 0xc2, 0x0a, 0x16, 0xd5, 0x0a, 0x52, 0x6e, 0xd7,
		0x8e, 0x05, 0xc2, 0xe6, 0xc1, 0xe6, 0xc1, 0xe6, 0xc1, 0xe6, 0x15, 0xd7, 0xe6, 0x11, 0x87, 0xc0,
		0x33, 0x52, 0x61, 0xfd, 0x60, 0xfd, 0x60, 0xfd, 0x0a, 0x66, 0xfd, 0x08, 0x35, 0xd4, 0xd8, 0xdb,
		0x84, 0x73, 0x8d, 0xe9, 0xe0, 0x47, 0x7a, 0xd3, 0xc1, 0xcb, 0x1a, 0xd3, 0xc1, 0x8f, 0x35, 0xa7,
		0x83, 0x57, 0xf4, 0xa6, 0x83, 0xc7, 0xd9, 0xe6, 0xd5, 0xcf, 0xb5, 0xeb, 0xf6, 0xfd, 0x65, 0xfd,
		0xf6, 0xf2, 0x4b, 0xbd, 0x7d, 0x5f, 0xff, 0x88, 0x7c, 0x73, 0x39, 0x53, 0x3c, 0x3f, 0x8c, 0xb4,
		0x39, 0xdb, 0x8b, 0xe9, 0xe6, 0x87, 0x3a, 0xd3, 0xcd, 0x2b, 0x5b, 0x95, 0x6e, 0x5e, 0xd6, 0x9a,
		0x6e, 0x7e, 0xac, 0x33, 0xdd, 0xfc, 0x08, 0xe9, 0xe6, 0xd2, 0x83, 0x19, 0x3e, 0x87, 0x9c, 0xf5,
		0xf5, 0x90, 0xb9, 0x4b, 0x64, 0x03, 0xdc, 0x03, 0xdc, 0x03, 0xdc, 0xef, 0x3e, 0xb5, 0x41, 0x20,
		0xab, 0xc1, 0xbc, 0x87, 0xb8, 0x0a, 0x23, 0x2a, 0x1c, 0xa9, 0xc8, 0x45, 0x85, 0x23, 0xed, 0x49,
		0x98, 0xe5, 0x13, 0x14, 0x34, 0xa2, 0x43, 0x51, 0xc6, 0xde, 0x26, 0x5d, 0x26, 0x78, 0x29, 0xa9,
		0x61, 0x4e, 0x0b, 0xc2, 0x62, 0xa1, 0x40, 0x5f, 0x40, 0x5f, 0x40, 0x5f, 0x40, 0x5f, 0x40, 0x5f,
		0x40, 0x5f, 0x40, 0x5f, 0x40, 0x5f, 0x40, 0x5f, 0x53, 0x93, 0xc2, 0x79, 0x8f, 0x0e, 0x75, 0x45,
		0xc2, 0x80, 0xb6, 0x80, 0xb6, 0x80, 0xb6, 0x0a, 0x86, 0xb6, 0x86, 0xae, 0xc7, 0x8f, 0x4e, 0x09,
		0xd1, 0xd6, 0x29, 0xce, 0x1f, 0x03, 0x6b, 0xed, 0x0b, 0xd6, 0x3a, 0x3d, 0x39, 0x39, 0x06, 0xda,
		0x02, 0xda, 0x52, 0xb9, 0x72, 0x97, 0x3a, 0xda, 0x29, 0xf4, 0xa2, 0x96, 0xe8, 0x0c, 0xf5, 0x4a,
		0xe3, 0x30, 0x8f, 0x7b, 0x8e, 0x0a, 0xa7, 0x9f, 0xab, 0x75, 0x14, 0x55, 0xef, 0x20, 0xaa, 0xa5,
		0x63, 0x28, 0x41, 0x87, 0x50, 0x82, 0x8e, 0xa0, 0xa2, 0x53, 0xa8, 0xa8, 0x21, 0x94, 0x9a, 0x51,
		0x92, 0xea, 0x62, 0x96, 0xa1, 0x83, 0xa7, 0x98, 0xb2, 0x65, 0x57, 0x99, 0x6c, 0xdf, 0xcc, 0x38,
		0x23, 0xb2, 0x33, 0x41, 0x30, 0x03, 0xd9, 0xc6, 0x67, 0xfd, 0xdb, 0x66, 0x78, 0x53, 0xc1, 0xb6,
		0x73, 0x52, 0x6d, 0xe6, 0x04, 0xdb, 0xca, 0x09, 0xb7, 0x91, 0x93, 0x89, 0x6a, 0x15, 0xa2, 0x57,
		0xd9, 0x28, 0x55, 0x39, 0x1a, 0x55, 0x8e, 0x3a, 0xd5, 0xa2, 0x4b, 0x5a, 0xed, 0x12, 0x6d, 0xdb,
		0x56, 0xb2, 0xfd, 0x61, 0xa4, 0x29, 0xe2, 0x35, 0x4c, 0x26, 0x35, 0xb7, 0xc7, 0x12, 0x44, 0xbd,
		0xaa, 0x54, 0x57, 0x44, 0x69, 0xd2, 0x46, 0x85, 0xa4, 0x21, 0x20, 0x65, 0x54, 0x49, 0x18, 0x32,
		0xd2, 0x85, 0x8c, 0x64, 0xa1, 0x21, 0x55, 0xf4, 0x22, 0x37, 0xd9, 0x2e, 0x86, 0xa5, 0x6e, 0x60,
		0xf5, 0x99, 0xe9, 0xb8, 0xa1, 0x6d, 0x05, 0x04, 0x3d, 0x8f, 0x67, 0xc5, 0xa1, 0xfd, 0x31, 0xda,
		0x88, 0x6e, 0x8c, 0xbd, 0xdc, 0xd6, 0xf6, 0xc7, 0x89, 0x9b, 0x51, 0x2a, 0x90, 0x48, 0xd0, 0x64,
		0x90, 0x88, 0x90, 0x24, 0xa0, 0x6d, 0x29, 0x09, 0x48, 0x6a, 0xe2, 0x51, 0x1b, 0x73, 0x45, 0xcf,
		0x58, 0x11, 0x10, 0x8c, 0xa4, 0xc4, 0x62, 0x0e, 0xcd, 0x01, 0xb7, 0x69, 0x76, 0x36, 0xc4, 0xdf,
		0x75, 0x0a, 0xdc, 0xd2, 0x7c, 0x04, 0x26, 0x58, 0x10, 0xf8, 0x81, 0xa9, 0x60, 0x03, 0xe6, 0xc0,
		0x49, 0x2a, 0x0f, 0xe8, 0x04, 0xe8, 0x04, 0xe8, 0x04, 0xe8, 0x04, 0xe8, 0x04, 0xe8, 0x04, 0xe8,
		0x04, 0xe8, 0x44, 0x01, 0x9d, 0xf8, 0x43, 0x4e, 0x0b, 0x4f, 0x22, 0x81, 0xc0, 0x27, 0xc0, 0x27,
		0xc0, 0x27, 0xc0, 0x27, 0xc0, 0x27, 0xc0, 0x27, 0xc0, 0x27, 0xc0, 0x27, 0x52, 0xf8, 0x84, 0x8e,
		0x37, 0x01, 0x63, 0x02, 0x44, 0x02, 0x44, 0x02, 0x44, 0x02, 0x44, 0x02, 0x44, 0x02, 0x44, 0x02,
		0x44, 0x22, 0x8b, 0x48, 0x08, 0xb9, 0x12, 0xb0, 0x24, 0xc0, 0x24, 0xc0, 0x24, 0xc0, 0x24, 0xc0,
		0x24, 0xc0, 0x24, 0xc0, 0x24, 0xc0, 0x24, 0x12, 0x98, 0x24, 0xee, 0x15, 0x6e, 0xf7, 0x98, 0x15,
		0xa8, 0x83, 0x92, 0x29, 0x59, 0x40, 0x25, 0x40, 0x25, 0x40, 0x25, 0x82, 0x2b, 0xc6, 0xb1, 0x38,
		0x33, 0x2d, 0xcf, 0x31, 0xb9, 0xab, 0x54, 0xa8, 0x8c, 0xa2, 0x08, 0x52, 0xe9, 0xc6, 0xe2, 0x9c,
		0x05, 0x9e, 0x32, 0x38, 0x29, 0xdd, 0xdd, 0x39, 0x7f, 0x57, 0x7e, 0x99, 0xd1, 0x3f, 0xe5, 0xf1,
		0x3f, 0xed, 0xd1, 0x3f, 0x17, 0x33, 0xff, 0xbc, 0xbe, 0xbb, 0x3b, 0xb8, 0xbb, 0x73, 0xfe, 0xcf,
		0x9b, 0xff, 0xe7, 0xf5, 0xff, 0xfb, 0xcf, 0xd7, 0xbb, 0xbb, 0xff, 0x73, 0x77, 0x67, 0x76, 0x66,
		0xbe, 0xf1, 0xa6, 0xb4, 0x93, 0x36, 0x98, 0xf7, 0x9e, 0xe8, 0x4e, 0x20, 0x4c, 0x0b, 0x83, 0x15,
		0x86, 0x15, 0x86, 0x15, 0x46, 0x6c, 0x88, 0xd8, 0x10, 0xb1, 0x21, 0x62, 0x43, 0xc4, 0x86, 0x12,
		0xb8, 0x64, 0xe8, 0x7d, 0xf7, 0xfc, 0x1f, 0x1e, 0x0d, 0x2e, 0x19, 0x0b, 0x03, 0x2e, 0x01, 0x2e,
		0x01, 0x2e, 0x01, 0x2e, 0x01, 0x2e, 0x01, 0x2e, 0x01, 0x2e, 0xd9, 0x6f, 0x5c, 0xb2, 0x9b, 0xd5,
		0xa0, 0xe2, 0xfa, 0x3e, 0xef, 0x24, 0x2b, 0xa6, 0x18, 0x6b, 0x2b, 0x41, 0x5d, 0x8e, 0x05, 0xeb,
		0xaa, 0x04, 0x25, 0x50, 0xce, 0x87, 0x79, 0xd6, 0xb7, 0x1e, 0x73, 0xe4, 0xeb, 0xca, 0x8c, 0x05,
		0x88, 0x96, 0xfc, 0x60, 0x5d, 0x6b, 0xd8, 0xe3, 0x52, 0x9e, 0xa8, 0x14, 0x81, 0x12, 0xb1, 0xc1,
		0xeb, 0xc8, 0x55, 0xbd, 0x39, 0x44, 0xd5, 0x9b, 0x5c, 0x41, 0xe8, 0x5e, 0x55, 0xbd, 0x91, 0x06,
		0x97, 0xe9, 0x8c, 0x7f, 0xf3, 0xfd, 0x1e, 0xb3, 0x64, 0x22, 0xb2, 0x74, 0x93, 0xe1, 0xa8, 0x00,
		0x36, 0x48, 0xaa, 0x5d, 0x4c, 0x3a, 0x08, 0x12, 0x7d, 0x61, 0xa0, 0xde, 0x50, 0xef, 0x6d, 0x50,
		0x6f, 0x2b, 0x64, 0x66, 0x8a, 0x4a, 0xcc, 0x80, 0x75, 0x55, 0x34, 0xfd, 0x4c, 0xe2, 0xda, 0x9b,
		0x14, 0x3b, 0xd9, 0xa6, 0xdb, 0xbd, 0x98, 0x02, 0x4b, 0x73, 0x1f, 0x24, 0xbf, 0xc7, 0xba, 0x88,
		0xfa, 0x96, 0x2b, 0x31, 0x25, 0x59, 0x6d, 0xcb, 0x57, 0x0a, 0x63, 0x30, 0x2e, 0x94, 0x9b, 0xc1,
		0x70, 0x8a, 0x95, 0xc6, 0x15, 0x2f, 0x85, 0x4b, 0x52, 0xfa, 0x56, 0xa2, 0xd4, 0xad, 0x44, 0x69,
		0xdb, 0x75, 0x83, 0x2a, 0xb8, 0xa0, 0xa4, 0x17, 0x52, 0x29, 0x53, 0x59, 0xd3, 0xd5, 0xd1, 0xc7,
		0xcb, 0x4b, 0x70, 0xf5, 0xc2, 0x5a, 0xfe, 0x97, 0x15, 0xa3, 0x92, 0x75, 0x34, 0x04, 0x47, 0x61,
		0xf9, 0xb3, 0x2f, 0x3e, 0xd9, 0x92, 0xa7, 0x5a, 0x53, 0xea, 0x35, 0x53, 0x69, 0xd7, 0x35, 0xb5,
		0x30, 0xd7, 0x96, 0x6e, 0xcd, 0x02, 0x03, 0x04, 0xdc, 0x7d, 0x56, 0xb7, 0x2e, 0xec, 0xbe, 0x85,
		0xdd, 0xb4, 0x98, 0x3b, 0x16, 0x5b, 0x49, 0xeb, 0x6a, 0x43, 0x96, 0xec, 0x47, 0x2b, 0x0c, 0xdd,
		0xd0, 0x74, 0xd7, 0x07, 0xb1, 0x13, 0x36, 0x76, 0x72, 0xcd, 0x3a, 0x5b, 0x99, 0x09, 0x29, 0x66,
		0x46, 0x86, 0x22, 0x48, 0x50, 0x02, 0xf9, 0x89, 0x22, 0x3d, 0x69, 0x64, 0x27, 0x8d, 0xe4, 0xe4,
		0x90, 0x9b, 0x9a, 0xbf, 0xcb, 0x8c, 0xc4, 0xc4, 0x3b, 0xda, 0x4d, 0x92, 0xb5, 0x64, 0xcd, 0xea,
		0xdb, 0x2c, 0x2b, 0xdb, 0xe4, 0x59, 0x5e, 0x61, 0xc9, 0xf2, 0x1e, 0x5d, 0x88, 0x35, 0x8e, 0x35,
		0xae, 0xb8, 0x48, 0x66, 0x16, 0x7b, 0x25, 0xc3, 0x77, 0x6b, 0xde, 0xb0, 0x9f, 0x7d, 0x8e, 0xda,
		0x7e, 0x6b, 0xa4, 0x72, 0x42, 0x60, 0xfc, 0x30, 0x7a, 0x8f, 0xcb, 0xdf, 0xaa, 0xad, 0x56, 0xbd,
		0x75, 0x7f, 0xd9, 0xbc, 0xba, 0x69, 0x5e, 0xd7, 0xae, 0xdb, 0x22, 0xd5, 0xcc, 0x8f, 0x22, 0x09,
		0xf5, 0xeb, 0x76, 0xed, 0xf6, 0x53, 0xf5, 0xb2, 0x76, 0x5f, 0x6d, 0xd4, 0xab, 0x2d, 0x91, 0xeb,
		0xcb, 0xd1, 0xf5, 0x37, 0xcd, 0xdb, 0xb6, 0xdc, 0xed, 0x8f, 0xa3, 0xcb, 0xaf, 0xaa, 0x97, 0xf7,
		0xd5, 0x8f, 0x1f, 0x6f, 0x6b, 0x2d, 0xa1, 0x5b, 0x57, 0xa2, 0x6b, 0xaf, 0x6b, 0xed, 0x3f, 0x9a,
		0xb7, 0xff, 0x96, 0xb9, 0xfe, 0x64, 0xf6, 0xd5, 0xaf, 0xab, 0x57, 0x35, 0x91, 0xcb, 0x4f, 0x63,
		0x68, 0xd9, 0xbc, 0xac, 0x36, 0x4a, 0xa4, 0x81, 0x59, 0xdb, 0xaf, 0x7b, 0x62, 0x47, 0xec, 0x96,
		0xac, 0x00, 0x21, 0x86, 0x66, 0x61, 0xfe, 0x85, 0xaa, 0x9d, 0xcf, 0x0f, 0xe1, 0x85, 0x21, 0xb0,
		0xcd, 0x95, 0x0c, 0xa0, 0x50, 0x0f, 0xae, 0x99, 0xf5, 0x72, 0x61, 0x1c, 0x0b, 0x5c, 0x39, 0xbf,
		0x5a, 0x2e, 0x8c, 0x8a, 0xc0, 0xd5, 0x73, 0xcb, 0xfc, 0xc2, 0x28, 0xe7, 0x13, 0xcd, 0xca, 0xf9,
		0xce, 0xac, 0x05, 0xf3, 0x45, 0x0b, 0xe4, 0x67, 0x2c, 0x88, 0x0f, 0x6f, 0x59, 0x64, 0x6f, 0x99,
		0xb5, 0xe0, 0x7c, 0x89, 0x79, 0x3c, 0x70, 0x59, 0x68, 0x5a, 0x0f, 0xcc, 0x11, 0x3a, 0xfb, 0x3b,
		0xb5, 0x3f, 0x36, 0x27, 0x41, 0xac, 0x6d, 0xc8, 0xa1, 0x68, 0xdb, 0x90, 0x43, 0xb4, 0x0d, 0x21,
		0xa5, 0x9c, 0x8b, 0xd4, 0x36, 0x44, 0x98, 0x52, 0x56, 0x4a, 0x3f, 0x92, 0x48, 0x37, 0x92, 0x4c,
		0x2f, 0x92, 0xeb, 0xba, 0x25, 0xbf, 0x9f, 0xa1, 0x98, 0x2e, 0x44, 0x96, 0x80, 0xa2, 0x9e, 0x70,
		0xf2, 0x4b, 0xae, 0xdd, 0x98, 0xfa, 0xd0, 0xd1, 0xa5, 0xf7, 0x14, 0x69, 0x34, 0x35, 0x6d, 0x5d,
		0x74, 0x72, 0x6c, 0x69, 0x25, 0xd7, 0x12, 0x45, 0xa9, 0x05, 0x0a, 0x7c, 0x15, 0x7c, 0x15, 0x7c,
		0x15, 0x7c, 0x15, 0x7c, 0x15, 0x7c, 0x95, 0x84, 0xaf, 0x12, 0x6e, 0x91, 0xa1, 0xd6, 0x12, 0x03,
		0xde, 0x0a, 0xde, 0x0a, 0xde, 0x0a, 0xde, 0x0a, 0xde, 0x0a, 0xde, 0x4a, 0xc2, 0x5b, 0xc9, 0xfb,
		0x29, 0x78, 0x28, 0x78, 0x28, 0x78, 0x28, 0x78, 0x28, 0x78, 0x28, 0x78, 0x28, 0x9d, 0x1e, 0x4a,
		0x6a, 0x9b, 0x4a, 0xb4, 0x24, 0x2d, 0x7c, 0x14, 0x7c, 0x14, 0x7c, 0x14, 0x7c, 0x14, 0x7c, 0x14,
		0x7c, 0x94, 0x90, 0x8f, 0x92, 0x28, 0x59, 0x2a, 0x5f, 0xa2, 0x14, 0x5e, 0x0a, 0x5e, 0x8a, 0xd0,
		0x4b, 0xc9, 0x96, 0xf8, 0x94, 0x29, 0xe9, 0x29, 0x5d, 0xc2, 0x73, 0x43, 0x25, 0x3b, 0xf3, 0xb4,
		0x21, 0xbc, 0xf7, 0x64, 0x5a, 0xb6, 0xcd, 0x06, 0x9c, 0x49, 0x6c, 0x71, 0xcf, 0x5c, 0x0d, 0x3b,
		0x02, 0x3b, 0x02, 0xb4, 0x0b, 0xb4, 0x0b, 0xb4, 0x0b, 0xb4, 0xab, 0xc9, 0x53, 0x49, 0xe7, 0x62,
		0x89, 0x17, 0x83, 0x86, 0x9f, 0x82, 0x9f, 0x82, 0x9f, 0x82, 0x9f, 0x82, 0x9f, 0x82, 0x9f, 0x12,
		0xf6, 0x53, 0xa2, 0xc5, 0x82, 0x15, 0x8a, 0x03, 0xc3, 0x4f, 0xc1, 0x4f, 0xc1, 0x4f, 0xc1, 0x4f,
		0xc1, 0x4f, 0xc1, 0x4f, 0x65, 0xfc, 0xc6, 0x26, 0xea, 0x2f, 0x09, 0xd7, 0x81, 0x5d, 0x56, 0x79,
		0x29, 0x5b, 0xb5, 0x57, 0xb9, 0x53, 0xce, 0x59, 0xab, 0xb7, 0x0a, 0x56, 0x6b, 0x15, 0xaa, 0xce,
		0x9a, 0xa1, 0x1a, 0x6b, 0x07, 0x05, 0x48, 0x50, 0x80, 0x64, 0x61, 0xc4, 0xb3, 0x57, 0x2f, 0xcd,
		0x58, 0xad, 0x54, 0x4e, 0x87, 0x1e, 0x59, 0xaf, 0xe7, 0xc7, 0x3b, 0x3a, 0x41, 0x76, 0x3d, 0x9a,
		0xbe, 0x08, 0x8b, 0x1b, 0x8b, 0x7b, 0x61, 0xc4, 0x87, 0xae, 0xc7, 0x33, 0xe1, 0x51, 0x01, 0x1c,
		0x2a, 0x88, 0x3f, 0x05, 0x80, 0xb4, 0x0c, 0xde, 0x94, 0xc5, 0x99, 0xca, 0x88, 0x48, 0x1e, 0x09,
		0x89, 0x14, 0x25, 0x96, 0xc1, 0x91, 0x84, 0xf8, 0x71, 0x93, 0xa3, 0x44, 0x84, 0xe7, 0x3a, 0x1a,
		0x8c, 0x75, 0x38, 0x1c, 0x0c, 0x02, 0x16, 0x86, 0x66, 0xbc, 0x89, 0xeb, 0x3c, 0xb1, 0x80, 0xbb,
		0x21, 0x4b, 0xac, 0x41, 0x46, 0xdb, 0xfd, 0x82, 0x0c, 0x98, 0x72, 0x98, 0xf2, 0x85, 0x11, 0x77,
		0x1d, 0xe6, 0x71, 0x97, 0x3f, 0x67, 0xab, 0xbf, 0x9c, 0x62, 0x95, 0x2c, 0x95, 0x6b, 0xeb, 0x89,
		0xe8, 0x0f, 0x56, 0xc8, 0xc4, 0x79, 0xb7, 0x46, 0xe3, 0xe3, 0xcd, 0x7d, 0xbb, 0xf1, 0x7b, 0xd6,
		0x69, 0x8a, 0xad, 0x53, 0x28, 0xc4, 0x5f, 0x48, 0xd6, 0x64, 0x1f, 0x57, 0xe4, 0xaa, 0x7f, 0x2c,
		0xe9, 0x30, 0xce, 0x92, 0x4f, 0x75, 0x55, 0xbd, 0xae, 0x7e, 0xae, 0x5d, 0xd5, 0xae, 0xdb, 0x69,
		0x05, 0xac, 0x02, 0x3d, 0x5d, 0x5c, 0x5e, 0xeb, 0x63, 0xad, 0x75, 0x79, 0x5b, 0xbf, 0x69, 0xd7,
		0x9b, 0xd7, 0x85, 0x7b, 0xb6, 0x62, 0x4d, 0x66, 0xeb, 0xaf, 0x56, 0xbb, 0x76, 0x75, 0x7f, 0x59,
		0xbd, 0xa9, 0x7e, 0xa8, 0x37, 0xea, 0xed, 0x7a, 0xad, 0x55, 0xc0, 0xc7, 0x2b, 0xe8, 0x7c, 0x26,
		0x4f, 0x17, 0x17, 0xac, 0x23, 0xc6, 0x05, 0x1d, 0xcd, 0xf6, 0x1b, 0x15, 0xc9, 0x15, 0x11, 0xd4,
		0x73, 0xc8, 0x59, 0xdf, 0x74, 0x58, 0x68, 0x07, 0xee, 0x20, 0x13, 0x5f, 0x36, 0x41, 0x4e, 0x8b,
		0xd7, 0x02, 0x31, 0x01, 0x31, 0x2d, 0xae, 0x13, 0xf1, 0xf2, 0xc9, 0x19, 0xbe, 0xdb, 0x60, 0xde,
		0x43, 0xcc, 0xd6, 0x22, 0xfc, 0x2d, 0x78, 0xf8, 0x5b, 0x3e, 0x41, 0xb4, 0x4b, 0x68, 0xab, 0x33,
		0xf5, 0x47, 0x9a, 0x37, 0xd2, 0x59, 0xba, 0x7b, 0xc0, 0x3a, 0xc3, 0x3a, 0xc3, 0x3a, 0xc3, 0x3a,
		0xc3, 0x3a, 0x8b, 0xfd, 0x25, 0x8f, 0xae, 0x37, 0x2f, 0xf4, 0x8b, 0x5a, 0xd2, 0xf0, 0xe6, 0xd5,
		0x0b, 0x8f, 0xb7, 0xee, 0xb1, 0xb2, 0x3c, 0x4e, 0x69, 0x69, 0x47, 0x9d, 0xf9, 0xbd, 0xee, 0xd9,
		0xc7, 0x9d, 0x3c, 0xd4, 0xd4, 0x03, 0x95, 0xfa, 0x2c, 0x0c, 0xad, 0x07, 0xb6, 0x58, 0x98, 0x3b,
		0xb5, 0x4f, 0xe9, 0x37, 0xe6, 0x5e, 0x63, 0x79, 0xe1, 0xed, 0x95, 0xde, 0xe9, 0x25, 0x6f, 0x34,
		0xed, 0x7d, 0x56, 0xdc, 0x2e, 0x8b, 0xc7, 0xc9, 0xec, 0x61, 0x32, 0x7b, 0x94, 0x79, 0x0f, 0x92,
		0x3e, 0x9c, 0xe0, 0x94, 0xaf, 0x2a, 0x70, 0x5d, 0xb2, 0xc7, 0xa3, 0xb5, 0xa6, 0x0f, 0x52, 0xf2,
		0x3d, 0xc5, 0x46, 0x48, 0x87, 0x34, 0x8d, 0x90, 0x5e, 0x98, 0x22, 0x51, 0x70, 0x90, 0x7f, 0x33,
		0xa4, 0xd5, 0x53, 0x28, 0x67, 0x64, 0xd6, 0x36, 0x44, 0x0a, 0xd9, 0x13, 0x0b, 0x5c, 0xfe, 0x2c,
		0x00, 0x19, 0xc7, 0x57, 0x6c, 0x07, 0x5e, 0xcc, 0xb0, 0x1c, 0xb6, 0x17, 0x33, 0xae, 0x5f, 0x2e,
		0x1b, 0xc3, 0x8d, 0xcf, 0x61, 0xcf, 0x7f, 0x30, 0x33, 0x2e, 0x16, 0xa3, 0xb0, 0x0d, 0x63, 0x6a,
		0x57, 0xb5, 0xdb, 0xcf, 0xb5, 0xeb, 0xcb, 0xbf, 0x84, 0x1b, 0xc5, 0x54, 0x1b, 0xb5, 0xdb, 0xb6,
		0x70, 0x7b, 0x98, 0xcb, 0xdb, 0x7a, 0xbb, 0x7e, 0x59, 0x6d, 0x08, 0x37, 0x86, 0xa9, 0xdd, 0xde,
		0x36, 0x6f, 0x85, 0x5b, 0xc2, 0xfc, 0x51, 0xbd, 0xbd, 0xae, 0x5f, 0x7f, 0x16, 0x6e, 0x05, 0x73,
		0xdd, 0x6c, 0xd7, 0x2f, 0xc5, 0x5b, 0xc0, 0xd4, 0xaf, 0x3f, 0x35, 0x6f, 0xaf, 0xaa, 0xed, 0x7a,
		0xf3, 0x5a, 0xec, 0x15, 0xcf, 0xa2, 0xab, 0x3f, 0xd6, 0x3e, 0x7c, 0xf9, 0xbc, 0xf1, 0x06, 0x32,
		0xa3, 0x79, 0x15, 0x6b, 0xfb, 0x92, 0xce, 0xea, 0xca, 0x76, 0x7f, 0xcb, 0xad, 0x77, 0xfc, 0xc2,
		0x17, 0x86, 0x40, 0x37, 0xd6, 0xa9, 0x05, 0x2b, 0xd6, 0xd7, 0x66, 0xb4, 0x7e, 0xc4, 0x5a, 0xc4,
		0xcc, 0x4e, 0xa7, 0x58, 0x63, 0x9a, 0x64, 0x05, 0x89, 0x75, 0xc0, 0x19, 0x2f, 0xd7, 0x0b, 0xa3,
		0xb2, 0x95, 0x79, 0xa4, 0xcf, 0x0f, 0x3e, 0x37, 0x7d, 0xdb, 0xb4, 0xfd, 0x7e, 0x9c, 0x55, 0xc0,
		0x1c, 0xb3, 0xc7, 0xac, 0x6e, 0x74, 0xf1, 0xaf, 0x2d, 0x09, 0x3a, 0xc6, 0x2e, 0xe7, 0x5d, 0xfa,
		0x43, 0x82, 0xfe, 0x14, 0xda, 0x6d, 0x3a, 0xec, 0xdb, 0xf0, 0xc1, 0x4c, 0x9a, 0x9f, 0xac, 0x87,
		0x9b, 0xb3, 0x5f, 0x07, 0xea, 0xdc, 0x3e, 0xd4, 0x39, 0x9a, 0xc1, 0x90, 0x05, 0x4f, 0xae, 0x2d,
		0xc0, 0x56, 0xce, 0x5e, 0xb6, 0x1d, 0xad, 0x97, 0x80, 0x3f, 0x09, 0xec, 0x6c, 0xe6, 0x16, 0x4c,
		0x6b, 0x22, 0x56, 0xb9, 0x08, 0x56, 0x72, 0x69, 0x09, 0x2f, 0x31, 0x99, 0xa5, 0xa6, 0xb8, 0xe4,
		0x64, 0x97, 0x9e, 0xf2, 0x12, 0x54, 0x5e, 0x8a, 0xea, 0x4b, 0x52, 0x90, 0x36, 0xcc, 0x38, 0x77,
		0x59, 0x97, 0x6a, 0x7a, 0x41, 0xd6, 0x63, 0x19, 0x2b, 0x67, 0x3c, 0xdb, 0x31, 0x8d, 0xc5, 0x07,
		0x15, 0x38, 0xb6, 0xb1, 0x70, 0x71, 0x4c, 0xcc, 0x8a, 0x35, 0xef, 0xef, 0x08, 0x3e, 0x9f, 0xd8,
		0xa9, 0x4f, 0x69, 0x65, 0x53, 0x51, 0x3a, 0x22, 0xe5, 0x53, 0x55, 0x42, 0x32, 0x65, 0x24, 0x53,
		0x4a, 0x3a, 0xe5, 0x14, 0x53, 0x52, 0x89, 0xed, 0x11, 0x43, 0xea, 0x34, 0xe9, 0xc2, 0xcc, 0x67,
		0x3f, 0x9f, 0xb2, 0xd2, 0x9b, 0x1c, 0x69, 0x7d, 0x45, 0xc1, 0x50, 0x85, 0x2e, 0x74, 0x91, 0x9f,
		0x49, 0x91, 0x4d, 0xae, 0xac, 0x58, 0xf2, 0x05, 0x5a, 0x33, 0x0b, 0xaa, 0x84, 0x95, 0x82, 0x95,
		0xda, 0x62, 0x2b, 0x25, 0x96, 0x9d, 0xbe, 0xd2, 0x52, 0x49, 0x1c, 0x6f, 0x96, 0xcb, 0x5e, 0x5f,
		0xf9, 0x22, 0x31, 0x33, 0x76, 0xdf, 0xaa, 0xdd, 0xfe, 0x5e, 0xbf, 0xac, 0x15, 0x6d, 0x9e, 0xb6,
		0xd1, 0xd4, 0x92, 0x62, 0x60, 0xc9, 0x01, 0x10, 0x62, 0x9d, 0x66, 0x48, 0xa0, 0x77, 0x33, 0xcc,
		0xc0, 0x8b, 0x8c, 0x94, 0x04, 0x45, 0x98, 0xe5, 0x28, 0xb7, 0xa0, 0xfb, 0x91, 0x74, 0x3b, 0x45,
		0x2f, 0x85, 0x82, 0xc8, 0x73, 0x83, 0x91, 0xa7, 0x7c, 0x49, 0x94, 0xc8, 0xba, 0x88, 0xb9, 0x84,
		0xd4, 0x15, 0x9c, 0x89, 0x15, 0xa9, 0x8d, 0x15, 0xfb, 0xe0, 0x20, 0xd1, 0xd0, 0x77, 0xe3, 0xd5,
		0x9f, 0xa7, 0xa6, 0xc6, 0xa9, 0x32, 0xe2, 0x7a, 0x1a, 0x5f, 0xa6, 0x99, 0x1f, 0x2a, 0x43, 0x4b,
		0xc1, 0x0f, 0x81, 0x1f, 0x42, 0xe4, 0x85, 0xc8, 0x0b, 0xfc, 0x90, 0x2a, 0x3f, 0x04, 0x9a, 0x05,
		0xca, 0x0e, 0x65, 0x07, 0xcd, 0xb2, 0x3d, 0x34, 0xcb, 0x9e, 0xb2, 0x15, 0x2f, 0x24, 0xef, 0x4b,
		0x84, 0x40, 0x4a, 0xfb, 0xec, 0xff, 0x66, 0xcf, 0xd9, 0x8d, 0x34, 0x4e, 0x57, 0x67, 0x1e, 0x57,
		0xba, 0x7a, 0x83, 0x42, 0x4b, 0x4b, 0xbc, 0x08, 0xe1, 0x55, 0x22, 0xf5, 0xfe, 0x63, 0x24, 0xa7,
		0x95, 0x25, 0x3c, 0x2f, 0x72, 0x6a, 0xda, 0x6c, 0xa6, 0x98, 0x42, 0x86, 0xda, 0xcb, 0xac, 0x41,
		0x26, 0x96, 0x20, 0x73, 0x46, 0x5a, 0x19, 0x19, 0x69, 0xf9, 0x67, 0xa4, 0x25, 0x37, 0xcc, 0x9e,
		0x8b, 0x36, 0xbe, 0x80, 0x38, 0x0b, 0xad, 0x8c, 0x2c, 0x34, 0x8d, 0x40, 0x32, 0xa7, 0x2c, 0x34,
		0x6b, 0x30, 0xc8, 0x76, 0x0e, 0x7b, 0x61, 0xaa, 0xd2, 0x2b, 0xb1, 0x1f, 0x00, 0xa6, 0x71, 0x63,
		0xfb, 0x01, 0x99, 0x0f, 0x7d, 0x2f, 0x98, 0xb9, 0x73, 0xd2, 0x37, 0x60, 0x3f, 0x79, 0x60, 0x99,
		0x43, 0x2f, 0xe4, 0xd6, 0xb7, 0x9e, 0xe0, 0xbb, 0x04, 0xac, 0xcb, 0x02, 0xe6, 0xd9, 0xb9, 0x94,
		0x60, 0x1f, 0x0f, 0x5c, 0xbd, 0xd6, 0xfe, 0x64, 0xdc, 0x7e, 0xba, 0x34, 0x4e, 0x2a, 0xe5, 0xca,
		0x5b, 0xa3, 0xc5, 0xe2, 0x93, 0xd0, 0xc6, 0xe9, 0x41, 0xf9, 0xe0, 0xe4, 0x60, 0xc3, 0x24, 0xc0,
		0x64, 0x40, 0x8a, 0xc4, 0x03, 0xbc, 0x3c, 0x62, 0x7b, 0xd9, 0x5e, 0xa3, 0x1f, 0x4a, 0x24, 0x30,
		0x47, 0x17, 0xc1, 0x67, 0xc0, 0x67, 0xec, 0xae, 0xcf, 0xa0, 0xd2, 0x2d, 0xd7, 0x91, 0xd2, 0x2e,
		0xd7, 0x81, 0x7e, 0x41, 0xbf, 0x80, 0xc9, 0x76, 0x09, 0x93, 0x9d, 0x01, 0x93, 0x09, 0x62, 0xb2,
		0xb3, 0x3d, 0xc5, 0x64, 0x83, 0xc0, 0xf5, 0x33, 0x95, 0xc9, 0x58, 0x58, 0x7e, 0xe9, 0x95, 0xf0,
		0x1e, 0xf0, 0x1e, 0x1b, 0xf3, 0x1e, 0x43, 0xd7, 0xe3, 0xe7, 0x12, 0xce, 0xe3, 0x04, 0x0d, 0xcf,
		0xe6, 0xae, 0x47, 0xc3, 0x33, 0xf1, 0x9a, 0x70, 0x45, 0x1c, 0xbc, 0xcd, 0x3a, 0xa5, 0x3d, 0x04,
		0x5b, 0x47, 0xc0, 0x5a, 0x62, 0x58, 0xeb, 0x68, 0x5f, 0xa1, 0x96, 0x6f, 0xcb, 0xc4, 0xe8, 0xc9,
		0x75, 0x80, 0x59, 0x80, 0x59, 0x08, 0xd2, 0x77, 0xc8, 0x6f, 0x9c, 0x22, 0x48, 0x17, 0x74, 0x1c,
		0xa7, 0xbb, 0x18, 0xa4, 0x2b, 0xed, 0xdc, 0xd7, 0x7e, 0xf2, 0x6c, 0xad, 0x8c, 0xc4, 0x53, 0x1e,
		0x7c, 0xdb, 0x64, 0x3f, 0xf9, 0x05, 0x67, 0x3d, 0xd6, 0x67, 0x3c, 0x78, 0x36, 0x2d, 0xee, 0xf7,
		0x5d, 0x5b, 0x2e, 0x07, 0x22, 0xc6, 0xb2, 0x12, 0x49, 0x10, 0xaa, 0x99, 0x0f, 0xeb, 0x7a, 0xae,
		0x4a, 0xd8, 0x13, 0x09, 0x3b, 0x22, 0x61, 0x70, 0x67, 0xb4, 0xc0, 0x30, 0x8d, 0xf6, 0x23, 0x33,
		0x5a, 0x71, 0xe9, 0x49, 0xe3, 0x26, 0xf0, 0xb9, 0x6f, 0xfb, 0xbd, 0x9c, 0x5d, 0xa8, 0xac, 0xb5,
		0xa0, 0xf5, 0xa2, 0x59, 0xc6, 0xa5, 0x68, 0x75, 0xb5, 0x37, 0x98, 0x43, 0x39, 0xea, 0xdd, 0x9c,
		0x2d, 0xa5, 0xcb, 0x78, 0x21, 0x6b, 0x32, 0xf9, 0x41, 0x47, 0xf7, 0x66, 0x14, 0xea, 0x95, 0xd7,
		0x53, 0x14, 0xea, 0x7d, 0x61, 0x95, 0xa0, 0x50, 0x2f, 0x0a, 0xf5, 0x4e, 0x5f, 0x86, 0x42, 0xbd,
		0x28, 0xd4, 0x3b, 0x63, 0x28, 0xb6, 0xa2, 0x50, 0x6f, 0x81, 0x0f, 0x21, 0x14, 0xa2, 0x39, 0xc7,
		0xc2, 0x63, 0xad, 0x6f, 0xd2, 0x71, 0xb5, 0xd4, 0x67, 0x2d, 0x6f, 0xd4, 0xe1, 0x31, 0xfe, 0xc3,
		0x0f, 0xbe, 0x9b, 0x6e, 0x14, 0x22, 0x78, 0xf6, 0x4b, 0x1d, 0x3b, 0x16, 0xbf, 0x9a, 0x4f, 0xeb,
		0x0e, 0x8f, 0xf1, 0xe8, 0x96, 0x85, 0xec, 0xdc, 0x31, 0x7e, 0x36, 0xaa, 0xc6, 0x1d, 0xf3, 0x63,
		0xbc, 0xfe, 0xe4, 0xca, 0xc2, 0x15, 0xc5, 0x28, 0xab, 0xbc, 0x7a, 0xd2, 0x44, 0xb1, 0x60, 0xfe,
		0x67, 0x58, 0x56, 0x4e, 0xaa, 0x9c, 0x69, 0x5a, 0x7b, 0x84, 0xc5, 0xea, 0xf2, 0x30, 0x7b, 0x74,
		0x10, 0x7f, 0x7b, 0x3b, 0x0e, 0xaf, 0x58, 0x5d, 0xbe, 0x93, 0x41, 0x41, 0xf4, 0x5e, 0x45, 0x39,
		0xb2, 0xc2, 0xf8, 0x23, 0x0b, 0x3c, 0xc6, 0xc5, 0xf7, 0x5d, 0xd2, 0x2b, 0x77, 0xa3, 0x78, 0x72,
		0xb6, 0xc5, 0xb6, 0x7b, 0x9b, 0x2e, 0x99, 0x16, 0xa3, 0x9e, 0xfd, 0x16, 0xe1, 0x92, 0x38, 0x7d,
		0xcb, 0x8e, 0x0f, 0x75, 0x3e, 0xcb, 0xd7, 0xa1, 0x98, 0x88, 0x90, 0xab, 0x44, 0x71, 0xb4, 0x65,
		0x95, 0x28, 0xc4, 0x96, 0xb5, 0x8e, 0x6d, 0x94, 0x62, 0x16, 0xa1, 0x10, 0x5a, 0xf6, 0x92, 0x9b,
		0x25, 0xa2, 0x85, 0x97, 0x04, 0xd5, 0x61, 0x46, 0x2d, 0x2c, 0xc7, 0x09, 0x58, 0x18, 0xaa, 0x97,
		0x7e, 0x98, 0x16, 0x26, 0x39, 0xd4, 0x72, 0x45, 0x5b, 0x94, 0x55, 0x86, 0x42, 0x75, 0xe8, 0x54,
		0x88, 0x4a, 0x95, 0xc8, 0x55, 0x8a, 0x5c, 0xb5, 0x48, 0x55, 0x4c, 0x4e, 0xd5, 0x24, 0x55, 0x4e,
		0x9c, 0x3e, 0x5d, 0xbb, 0x5e, 0xc4, 0x4b, 0x2a, 0xae, 0xf4, 0x34, 0x67, 0x0a, 0x32, 0xa6, 0x4a,
		0x2e, 0x26, 0x7b, 0x1c, 0x53, 0x6a, 0xfd, 0x2a, 0x9f, 0x09, 0x91, 0xc9, 0x53, 0x14, 0xab, 0xd2,
		0xb8, 0x9a, 0xdc, 0x16, 0xa8, 0xda, 0x48, 0xe4, 0xe9, 0x85, 0xa3, 0x22, 0x98, 0x2f, 0x98, 0x2f,
		0x22, 0xf3, 0x25, 0x8b, 0x1c, 0x52, 0x01, 0xb6, 0x3f, 0xf4, 0x38, 0x0b, 0x42, 0xf5, 0x69, 0x9e,
		0x34, 0xd6, 0x49, 0x24, 0x2a, 0x4e, 0x8a, 0x9a, 0x32, 0x92, 0x29, 0x25, 0xa5, 0x72, 0xd2, 0x2b,
		0x29, 0xb5, 0xb2, 0x6a, 0x53, 0x5a, 0x6d, 0xca, 0xab, 0x45, 0x89, 0xd5, 0x94, 0x59, 0x51, 0xa9,
		0xc9, 0x94, 0x3b, 0x15, 0xe4, 0xdb, 0x9c, 0xf1, 0xd0, 0xec, 0xfa, 0xc1, 0x0f, 0x2b, 0x70, 0x24,
		0x2a, 0xcb, 0x66, 0x58, 0xc8, 0x73, 0x77, 0x20, 0x9a, 0x54, 0xb5, 0x80, 0x82, 0x3c, 0xc0, 0xd0,
		0x69, 0x14, 0xf4, 0x19, 0x07, 0x5d, 0x46, 0x42, 0xbb, 0xb1, 0xd0, 0x6e, 0x34, 0xb4, 0x1a, 0x0f,
		0x1a, 0x23, 0x42, 0x64, 0x4c, 0xe8, 0x02, 0x9e, 0x75, 0x8e, 0xff, 0xb4, 0x42, 0xb9, 0x64, 0x13,
		0x03, 0x70, 0x4e, 0x28, 0x52, 0xee, 0xd4, 0xda, 0xba, 0xff, 0x68, 0x55, 0xca, 0x50, 0x3d, 0xf5,
		0xb6, 0x56, 0xb8, 0xe2, 0xa9, 0xb8, 0xb5, 0xf2, 0xa9, 0x0e, 0x7e, 0xad, 0x5f, 0x7e, 0xaa, 0x07,
		0xc3, 0x72, 0xd2, 0xbc, 0xd9, 0xa9, 0xb5, 0x7e, 0xea, 0x9f, 0x5a, 0xb9, 0xfa, 0x99, 0xfb, 0x3e,
		0xdb, 0xaf, 0x8a, 0x29, 0xad, 0xf3, 0xaa, 0x18, 0xcf, 0x43, 0xa0, 0x0d, 0xa5, 0x81, 0x65, 0x7f,
		0xd7, 0x0c, 0x48, 0x17, 0x6f, 0x01, 0x44, 0x0a, 0x44, 0x0a, 0x44, 0x0a, 0x44, 0x0a, 0x44, 0x0a,
		0x44, 0x0a, 0x44, 0x0a, 0x44, 0x0a, 0x44, 0xba, 0x2b, 0x88, 0x74, 0xa3, 0x24, 0xad, 0x62, 0xeb,
		0xcf, 0x05, 0x79, 0xab, 0x13, 0xba, 0xe7, 0x13, 0x76, 0xdf, 0x2d, 0xe4, 0x55, 0x2f, 0x7c, 0xf2,
		0xce, 0xea, 0xf2, 0xf0, 0xdd, 0x38, 0x5f, 0xef, 0x5d, 0x9a, 0x02, 0x95, 0x6c, 0x0d, 0x13, 0x6d,
		0xd5, 0x18, 0x8b, 0x99, 0xe4, 0xd7, 0xa3, 0x07, 0xa9, 0x27, 0xcf, 0x71, 0x5f, 0xed, 0xf2, 0xf0,
		0xfe, 0xca, 0xb2, 0x6b, 0xd1, 0xdd, 0xef, 0x2f, 0xc7, 0xf7, 0x7d, 0xb5, 0x99, 0x79, 0x57, 0x98,
		0xf3, 0x52, 0x3c, 0x7e, 0x66, 0x9f, 0x71, 0xcb, 0xb1, 0xb8, 0x45, 0xb7, 0x6d, 0x36, 0x27, 0x97,
		0x66, 0xf3, 0xec, 0x90, 0x6a, 0xf3, 0xec, 0x10, 0x9b, 0x67, 0x05, 0x88, 0x3e, 0xb0, 0x79, 0xb6,
		0x81, 0xa8, 0x62, 0xd2, 0xd0, 0xcd, 0xf5, 0x2c, 0xe1, 0xec, 0xd1, 0x97, 0xb4, 0xf3, 0x3d, 0x81,
		0xa8, 0x06, 0xf3, 0x1e, 0x62, 0x57, 0x41, 0x13, 0x3b, 0x10, 0x06, 0x61, 0x3a, 0x62, 0x05, 0x5d,
		0x31, 0x82, 0x76, 0xb4, 0xa8, 0x0f, 0x25, 0x12, 0xc6, 0x02, 0x5a, 0x62, 0x80, 0x74, 0xca, 0xce,
		0x31, 0x65, 0xb4, 0xf4, 0xcb, 0xab, 0xcd, 0x02, 0xf8, 0xcd, 0xc0, 0x2f, 0x8a, 0x8c, 0xe7, 0x05,
		0xcb, 0xae, 0x9e, 0xf9, 0x0c, 0xe0, 0x05, 0xe0, 0x05, 0xe0, 0xa5, 0x09, 0x78, 0xd1, 0xa9, 0xa7,
		0x31, 0x53, 0x80, 0x8d, 0x40, 0xd6, 0x8d, 0xc5, 0x39, 0x0b, 0x3c, 0x32, 0xfc, 0x55, 0xfa, 0x7a,
		0x68, 0xbe, 0xb7, 0xcc, 0x6e, 0xd5, 0xfc, 0xd4, 0xf9, 0xbb, 0xfc, 0xeb, 0xf5, 0xc5, 0xec, 0xef,
		0x6f, 0xfe, 0x3e, 0xf9, 0xa5, 0xbe, 0x3e, 0x3a, 0x14, 0x2f, 0xde, 0x6c, 0xd5, 0xff, 0x24, 0x7f,
		0xfb, 0xff, 0xac, 0x7f, 0xfd, 0x7f, 0x95, 0xf6, 0xd2, 0xef, 0x79, 0xec, 0x27, 0x37, 0x1f, 0xfd,
		0x81, 0xf9, 0x10, 0xf8, 0xc3, 0x01, 0x9d, 0xeb, 0x9b, 0x93, 0x0b, 0xef, 0x97, 0xd1, 0xfb, 0x79,
		0x2e, 0xfc, 0x9f, 0x1e, 0xff, 0xe7, 0xb9, 0xf0, 0x80, 0xf3, 0x6b, 0x4e, 0xfd, 0x6c, 0xd1, 0x82,
		0xf7, 0x3b, 0xa3, 0xf1, 0x7e, 0x09, 0x4b, 0x6d, 0x9b, 0x9e, 0x7b, 0xb1, 0xc8, 0x47, 0x2f, 0xff,
		0x3c, 0xf9, 0x38, 0xe6, 0xa6, 0xc7, 0xdf, 0x98, 0xb6, 0x42, 0xcb, 0x3f, 0x4d, 0x3e, 0x1c, 0x31,
		0xd7, 0xa3, 0x9f, 0x5d, 0xa7, 0xb4, 0xf5, 0xa6, 0xdc, 0xcc, 0x5c, 0xb9, 0x43, 0xd1, 0xb6, 0x9b,
		0x19, 0x0b, 0x7e, 0xc0, 0xd8, 0xc3, 0xd8, 0xc3, 0xd8, 0x6f, 0xd0, 0xd8, 0xcf, 0xeb, 0xa9, 0x59,
		0x74, 0xcb, 0x3f, 0xaa, 0x7a, 0xb3, 0xc2, 0xfc, 0xaf, 0xf8, 0xe3, 0xf4, 0xdf, 0x46, 0xfb, 0x9b,
		0x33, 0xdf, 0x8e, 0x86, 0x62, 0x53, 0xa6, 0x3d, 0xd7, 0x03, 0x7c, 0xd5, 0xe1, 0x43, 0xa4, 0x11,
		0x71, 0x0a, 0xa4, 0x7c, 0x10, 0x45, 0xe4, 0x30, 0x94, 0xfd, 0x78, 0xba, 0xd3, 0x3c, 0xfa, 0x75,
		0xb2, 0xdf, 0x3c, 0xe5, 0xbb, 0x55, 0xdd, 0xce, 0x47, 0x16, 0xda, 0x81, 0x3b, 0x48, 0x76, 0xdc,
		0x4b, 0x55, 0xc7, 0x31, 0x7a, 0xcc, 0x7a, 0x62, 0xa1, 0xc1, 0x1f, 0x2d, 0x6e, 0x04, 0xec, 0xbf,
		0x43, 0x37, 0x60, 0xc6, 0xb8, 0x2a, 0xaf, 0xeb, 0x3d, 0x18, 0x7e, 0xd7, 0xb0, 0x8c, 0xe4, 0xe9,
		0x8d, 0xf1, 0xd3, 0x1b, 0xdc, 0x37, 0xf8, 0x23, 0xbb, 0xf3, 0xfc, 0x01, 0x0b, 0xe2, 0x0d, 0x7c,
		0xab, 0x67, 0xc4, 0x4f, 0x68, 0x0c, 0xac, 0xc0, 0xea, 0x33, 0xce, 0x82, 0x30, 0xbe, 0xd4, 0x33,
		0xe2, 0x97, 0x30, 0x7e, 0xb8, 0xfc, 0xd1, 0xf5, 0xa2, 0x8b, 0x8c, 0x5a, 0xf2, 0xa2, 0x46, 0xf5,
		0x53, 0xfb, 0xa0, 0x68, 0x27, 0x1d, 0xe1, 0x48, 0xe1, 0x48, 0xb7, 0xcf, 0x91, 0x92, 0x9d, 0x76,
		0x24, 0xa6, 0x4a, 0xf4, 0x52, 0x26, 0x2b, 0xcd, 0x5a, 0x6a, 0xc0, 0xc6, 0x86, 0xca, 0x98, 0xbd,
		0xef, 0xc8, 0xda, 0xb9, 0xa1, 0xe1, 0x7a, 0xc6, 0x30, 0x64, 0x46, 0xd7, 0x0f, 0xe2, 0x6f, 0x4d,
		0x9b, 0xaa, 0x3b, 0x2f, 0xfa, 0x24, 0x32, 0x51, 0x46, 0x3b, 0xb0, 0xba, 0x5d, 0xd7, 0x8e, 0x2e,
		0x70, 0xdc, 0x90, 0x07, 0xee, 0xb7, 0x21, 0x67, 0x8e, 0x61, 0xd9, 0x81, 0x1f, 0x86, 0xf1, 0x85,
		0x21, 0xe3, 0x91, 0xb5, 0x1b, 0xdf, 0x25, 0x9c, 0x32, 0x77, 0x77, 0xde, 0xf8, 0x53, 0x63, 0x74,
		0x6f, 0xcb, 0xb6, 0xfd, 0xc0, 0x89, 0x4c, 0x6b, 0xf2, 0x6c, 0x3f, 0x98, 0xfb, 0xf0, 0xc8, 0x0f,
		0x8c, 0xf6, 0xa3, 0x1b, 0x1a, 0x9e, 0xef, 0x44, 0x4f, 0xcb, 0x9c, 0x30, 0xfa, 0x73, 0xfc, 0x1e,
		0xd1, 0x0f, 0x96, 0xf7, 0x1c, 0x09, 0x9a, 0xf5, 0x21, 0x86, 0x3f, 0x32, 0xa8, 0xe1, 0x73, 0xc8,
		0x59, 0xdf, 0x78, 0x8c, 0x5f, 0xb8, 0x3f, 0x0c, 0xb9, 0xf1, 0x8d, 0x19, 0xd6, 0xb7, 0xd0, 0xef,
		0x0d, 0x39, 0x3b, 0x40, 0xf2, 0x7e, 0xa1, 0x2c, 0xb0, 0x2e, 0x4b, 0xac, 0xdd, 0x22, 0x6b, 0xb7,
		0xcc, 0x9a, 0x2d, 0x34, 0x8d, 0xa5, 0x26, 0xb2, 0xd8, 0xf4, 0x21, 0x90, 0x46, 0xde, 0x4b, 0x47,
		0x14, 0xb4, 0x33, 0x3c, 0x18, 0xdd, 0xb2, 0xa2, 0x38, 0x1d, 0xa6, 0x9b, 0x1f, 0xcb, 0x99, 0x27,
		0x5b, 0xe5, 0xe1, 0xdb, 0xb1, 0x4b, 0x5f, 0x8c, 0x49, 0x7a, 0xbe, 0xff, 0xdd, 0x88, 0xfd, 0xfb,
		0x82, 0xcb, 0x77, 0xbd, 0x03, 0xa3, 0xde, 0x35, 0x86, 0x5e, 0x38, 0x60, 0xb6, 0xdb, 0x75, 0x99,
		0xf3, 0x76, 0xe4, 0xe2, 0xa3, 0xef, 0x19, 0x13, 0xf7, 0x3c, 0x42, 0x05, 0xd1, 0x1f, 0x7a, 0xbe,
		0x6d, 0xf5, 0x16, 0x6e, 0x73, 0x10, 0x77, 0x07, 0x49, 0x01, 0x86, 0xb3, 0xc4, 0x2d, 0xa7, 0x2e,
		0xd8, 0x33, 0xd8, 0x4f, 0x37, 0xe4, 0x91, 0xaf, 0x5f, 0x78, 0xda, 0xc4, 0x77, 0x3b, 0xec, 0xc9,
		0xb5, 0xa3, 0xaf, 0x3a, 0x77, 0xde, 0xa3, 0xf5, 0xc4, 0x0c, 0xdb, 0x0f, 0x02, 0x16, 0x0e, 0x7c,
		0x2f, 0x86, 0x08, 0x11, 0x22, 0x71, 0x59, 0xfa, 0x48, 0x19, 0xd2, 0x96, 0xef, 0xbc, 0x9e, 0x1b,
		0x72, 0x78, 0x7d, 0x78, 0x7d, 0x78, 0xfd, 0x3d, 0xf4, 0xfa, 0x9a, 0x08, 0xd0, 0xfc, 0x20, 0x40,
		0x11, 0x09, 0x51, 0x42, 0x1f, 0xbf, 0x55, 0xc4, 0x6c, 0x47, 0x96, 0x98, 0xa5, 0x39, 0xd7, 0x93,
		0xe7, 0x79, 0x9e, 0xdc, 0xca, 0x3b, 0x6a, 0x2d, 0x86, 0xfb, 0x6f, 0xf6, 0xac, 0x96, 0xf4, 0x95,
		0xbd, 0xf7, 0x1f, 0x0d, 0x8d, 0x4e, 0xd7, 0x1b, 0x70, 0x8d, 0xc3, 0x12, 0xe8, 0x15, 0xf8, 0xa2,
		0x67, 0xd2, 0x5d, 0xfe, 0x58, 0x50, 0xe5, 0x4a, 0x0d, 0x37, 0xe4, 0x55, 0xce, 0x25, 0x6b, 0x20,
		0x5f, 0xb9, 0x5e, 0x2d, 0x1a, 0x6d, 0x4f, 0x36, 0x09, 0xbc, 0x74, 0x65, 0xfd, 0x9c, 0x92, 0x40,
		0x73, 0x46, 0xb5, 0xd4, 0x0c, 0x1c, 0x16, 0x30, 0xe7, 0x43, 0xb4, 0x98, 0xbd, 0x61, 0xaf, 0xa7,
		0x22, 0xe2, 0x4b, 0xc8, 0x02, 0xa9, 0x2c, 0x74, 0x51, 0xdd, 0x53, 0x34, 0x7a, 0xf9, 0x18, 0xbb,
		0x92, 0x54, 0x75, 0xd9, 0xcc, 0xa7, 0x13, 0x4b, 0x9a, 0xfa, 0xa2, 0xd2, 0x56, 0xd0, 0x97, 0x9c,
		0x29, 0x9d, 0x33, 0x54, 0xca, 0xb1, 0x65, 0xb8, 0x3b, 0x78, 0xaa, 0x98, 0x43, 0xcf, 0xb5, 0xad,
		0x50, 0xa2, 0x81, 0xc5, 0xcc, 0xd5, 0x68, 0x62, 0x91, 0x63, 0x88, 0xb6, 0xd7, 0x4d, 0x2c, 0xe2,
		0x65, 0xa7, 0xd8, 0xc5, 0x62, 0x4a, 0x06, 0xda, 0x58, 0xe8, 0xe3, 0x28, 0xd0, 0xc6, 0x22, 0xcf,
		0x36, 0x16, 0x03, 0x35, 0x02, 0x6c, 0x52, 0xf4, 0x4b, 0x69, 0xa6, 0xd0, 0xbc, 0x42, 0x03, 0xc9,
		0x87, 0xea, 0xef, 0xfa, 0x28, 0xb9, 0x3d, 0x68, 0x5e, 0x91, 0x2c, 0x19, 0xf4, 0xad, 0xd0, 0xe0,
		0xda, 0x17, 0x2d, 0x17, 0xfa, 0x56, 0xc0, 0x72, 0xe5, 0x63, 0xb9, 0xd0, 0xb7, 0x42, 0xb7, 0x52,
		0x52, 0x2a, 0x27, 0xbd, 0x92, 0x52, 0x2b, 0xab, 0x36, 0xa5, 0xd5, 0xa6, 0xbc, 0x5a, 0x94, 0x58,
		0x4d, 0x99, 0x15, 0x95, 0x9a, 0x4c, 0xb9, 0x53, 0x41, 0xe8, 0x5b, 0x41, 0x14, 0x5b, 0xe8, 0x34,
		0x0a, 0xfa, 0x8c, 0x83, 0x2e, 0x23, 0xa1, 0xdd, 0x58, 0x68, 0x37, 0x1a, 0x5a, 0x8d, 0x07, 0x8d,
		0x11, 0x21, 0x32, 0x26, 0x74, 0xb1, 0xce, 0x3a, 0xc7, 0x8f, 0x2a, 0xc1, 0x54, 0x0f, 0x8a, 0x2a,
		0xc1, 0x99, 0x96, 0x1f, 0xaa, 0x04, 0xaf, 0x98, 0x5a, 0x54, 0x09, 0xde, 0x98, 0xb5, 0xa6, 0x97,
		0x86, 0xbe, 0x15, 0x42, 0xce, 0x08, 0x7d, 0x2b, 0x80, 0x48, 0x81, 0x48, 0x81, 0x48, 0x81, 0x48,
		0x81, 0x48, 0x81, 0x48, 0x81, 0x48, 0x81, 0x48, 0x77, 0x17, 0x91, 0xa2, 0x6f, 0xc5, 0xcb, 0x89,
		0x85, 0xd3, 0x69, 0x7a, 0xef, 0x26, 0x89, 0x4f, 0x9b, 0x69, 0x5e, 0x51, 0x1f, 0x3c, 0x55, 0xb6,
		0xbf, 0x7b, 0x85, 0xc3, 0x6c, 0x6b, 0x10, 0x0e, 0x7b, 0x16, 0x67, 0xe6, 0x23, 0xb3, 0x1c, 0x16,
		0xd0, 0x6d, 0xa0, 0x2d, 0x91, 0x8d, 0x0a, 0x63, 0xf9, 0xc5, 0x26, 0xd8, 0x4a, 0x43, 0x31, 0xe5,
		0x0c, 0xeb, 0x8d, 0x79, 0x63, 0x2d, 0x75, 0x7d, 0x2f, 0xd1, 0x53, 0x93, 0x47, 0xb7, 0x21, 0x2c,
		0x31, 0x56, 0x21, 0x90, 0x55, 0xf3, 0x86, 0x7d, 0xba, 0xc5, 0xdc, 0xf6, 0x5b, 0x3c, 0x70, 0xbd,
		0x07, 0xda, 0x80, 0xed, 0x30, 0x1a, 0xd1, 0xcf, 0xb7, 0x35, 0xca, 0x38, 0xed, 0x28, 0x92, 0x59,
		0xbf, 0xf9, 0x9d, 0x34, 0xf8, 0x2b, 0x27, 0x42, 0x4f, 0x29, 0x85, 0x1e, 0x47, 0x42, 0xaf, 0x6e,
		0x1a, 0x2d, 0x4a, 0xa1, 0x95, 0x48, 0xe8, 0xef, 0x7f, 0x36, 0xaa, 0xd7, 0xa5, 0x62, 0x45, 0xfb,
		0x7e, 0xdd, 0xe3, 0xb4, 0xab, 0x27, 0x5a, 0x38, 0xa4, 0xf8, 0x7e, 0xb4, 0x6c, 0x94, 0x73, 0x4f,
		0xe6, 0x45, 0x9e, 0xaa, 0x67, 0xa1, 0xcc, 0x86, 0x6c, 0xd1, 0x92, 0xb9, 0x30, 0x8e, 0x09, 0x45,
		0x8e, 0x16, 0xcc, 0x85, 0x51, 0xd9, 0xf7, 0x33, 0xb2, 0xe8, 0x6c, 0x06, 0x4c, 0x08, 0x4c, 0x08,
		0x4c, 0x28, 0xb4, 0xde, 0xd0, 0xd9, 0x4c, 0xcc, 0x7f, 0xa1, 0xb3, 0x59, 0x1e, 0x3c, 0x22, 0x3a,
		0x9b, 0xa1, 0xb3, 0x99, 0xe4, 0x7f, 0xe8, 0xf0, 0x82, 0x0e, 0x2f, 0xaa, 0xf0, 0x0b, 0xb5, 0x8a,
		0x51, 0xab, 0x38, 0x3f, 0x08, 0x86, 0x0e, 0x2f, 0xe8, 0xf0, 0xa2, 0x6a, 0xdb, 0xd1, 0xe1, 0x05,
		0xc6, 0x1e, 0xc6, 0x7e, 0x0b, 0x8c, 0x3d, 0x3a, 0xbc, 0x6c, 0xb6, 0xc3, 0x8b, 0x82, 0x69, 0xf7,
		0x03, 0xf7, 0xc1, 0xf5, 0x34, 0x9a, 0xf4, 0x55, 0x37, 0x80, 0x29, 0x87, 0x29, 0x87, 0x29, 0x87,
		0x29, 0x87, 0x29, 0x27, 0x36, 0xe5, 0x83, 0xc0, 0xe7, 0xbe, 0xed, 0xf7, 0xc8, 0x4d, 0x78, 0x2a,
		0x18, 0xa6, 0x3b, 0xa3, 0xe9, 0x86, 0xe1, 0xd6, 0x63, 0xb8, 0x61, 0xb6, 0xe7, 0xd7, 0x9b, 0xeb,
		0x30, 0x8f, 0xbb, 0xfc, 0x99, 0xd8, 0x5a, 0x13, 0x24, 0x85, 0x97, 0xea, 0xc9, 0xa3, 0x7d, 0xb0,
		0x42, 0x0d, 0xbd, 0x2e, 0xea, 0xd7, 0xad, 0x76, 0xb5, 0xd1, 0xb8, 0xbf, 0xb9, 0x6d, 0xb6, 0x9b,
		0x97, 0xcd, 0xc6, 0x7d, 0xfb, 0xaf, 0x1b, 0xaa, 0xf4, 0xa5, 0xd1, 0x86, 0x48, 0x48, 0x7a, 0x20,
		0x84, 0x78, 0xcb, 0x66, 0x3c, 0x0c, 0x1f, 0x3e, 0xdf, 0x94, 0x8a, 0xb8, 0x51, 0xa5, 0xe9, 0x75,
		0x3f, 0xd6, 0x6f, 0x6b, 0x97, 0xed, 0xc6, 0x5f, 0xf7, 0x97, 0xcd, 0xeb, 0xeb, 0xda, 0x65, 0xbb,
		0xf6, 0x71, 0x9f, 0xde, 0xfe, 0xf3, 0x6d, 0xfd, 0x43, 0x7d, 0x9f, 0x5e, 0xb8, 0xfe, 0xf9, 0x6a,
		0xaf, 0x96, 0x77, 0xbd, 0x55, 0x6f, 0xed, 0xd3, 0xfb, 0x36, 0x9a, 0x97, 0xd5, 0xc6, 0xde, 0xbd,
		0xf0, 0x7d, 0xf5, 0xf3, 0xe7, 0xdb, 0xda, 0xe7, 0x6a, 0xbb, 0xb6, 0x4f, 0xaf, 0xde, 0x6c, 0xdd,
		0x7c, 0xda, 0xb7, 0xf7, 0x3d, 0xde, 0xa7, 0x17, 0xbe, 0xb9, 0xac, 0xed, 0x95, 0xb1, 0xbe, 0xa9,
		0x5f, 0xed, 0xd3, 0xeb, 0xb6, 0xda, 0xd5, 0x76, 0xfd, 0xb2, 0x68, 0x67, 0xe0, 0x3b, 0x7b, 0x99,
		0xe1, 0x3c, 0xa0, 0x61, 0x2e, 0x68, 0xea, 0x4d, 0x83, 0xdf, 0x01, 0xbf, 0x03, 0x7e, 0x47, 0x17,
		0xbf, 0x33, 0x78, 0xaa, 0x98, 0x64, 0xf3, 0x99, 0xf2, 0x3b, 0xe7, 0x34, 0x6c, 0x3c, 0x67, 0x81,
		0x47, 0xc6, 0x92, 0x94, 0x5e, 0x7f, 0x3d, 0x34, 0xdf, 0x77, 0xfe, 0xf9, 0x7a, 0x64, 0xbe, 0xef,
		0x8c, 0x7e, 0x3c, 0x8a, 0xff, 0xf9, 0xbb, 0xfc, 0xeb, 0x9f, 0xf2, 0xd7, 0x43, 0xb3, 0x92, 0x7c,
		0x5a, 0x3e, 0xf9, 0x7a, 0x68, 0x9e, 0x74, 0xde, 0xbc, 0xbe, 0xbb, 0x3b, 0x10, 0xbd, 0xe6, 0xcd,
		0xdf, 0xc7, 0xbf, 0xde, 0xa5, 0x17, 0x95, 0x93, 0xbf, 0x1e, 0x7f, 0x3d, 0x34, 0xcb, 0x9d, 0x37,
		0xea, 0xcb, 0xaf, 0x43, 0x31, 0xae, 0xcd, 0x56, 0xfd, 0x4f, 0xf2, 0xc1, 0xfd, 0xcf, 0xeb, 0x8d,
		0x0f, 0xef, 0x9b, 0x7f, 0x95, 0xb6, 0x37, 0x21, 0x36, 0xd7, 0xaa, 0xd2, 0xd5, 0xe1, 0x43, 0x64,
		0x18, 0xe3, 0xba, 0x5c, 0xf2, 0xf3, 0x4f, 0x04, 0x0e, 0x94, 0x53, 0xe6, 0x66, 0xca, 0x1f, 0x4c,
		0x7d, 0x34, 0x2a, 0x82, 0x30, 0x95, 0x2b, 0xa7, 0x0a, 0x40, 0xe6, 0x1a, 0x13, 0x57, 0x1d, 0xc7,
		0xe8, 0x31, 0xeb, 0x89, 0x85, 0x06, 0x7f, 0xb4, 0xb8, 0x11, 0xb0, 0xff, 0x0e, 0xdd, 0x60, 0xd2,
		0x2f, 0xd8, 0xf5, 0x1e, 0x0c, 0xbf, 0x6b, 0x58, 0x4b, 0xbb, 0x17, 0xf3, 0x47, 0x76, 0xe7, 0xf9,
		0x03, 0x16, 0xc4, 0xe7, 0x8b, 0xad, 0x9e, 0x11, 0x3f, 0xa1, 0x31, 0xb0, 0x02, 0xab, 0xcf, 0x38,
		0x0b, 0xc2, 0xf8, 0x52, 0x2f, 0x6e, 0x0a, 0xfc, 0x6c, 0xfc, 0x70, 0xf9, 0x63, 0xd2, 0x16, 0xb8,
		0x7e, 0xf3, 0x54, 0x31, 0x92, 0xb7, 0x35, 0xaa, 0x9f, 0xda, 0x07, 0x45, 0xab, 0xc3, 0x8d, 0x8c,
		0x87, 0xfd, 0x03, 0x56, 0xdb, 0x9f, 0xf1, 0x40, 0x56, 0x8b, 0x9b, 0xf8, 0x78, 0xc2, 0xc2, 0x52,
		0x26, 0x3d, 0xa6, 0xb0, 0xd2, 0xb4, 0x4d, 0x9a, 0x9e, 0x27, 0xc6, 0x6a, 0xbe, 0xc5, 0x7a, 0x6c,
		0xf1, 0x46, 0xfd, 0xd3, 0x87, 0x21, 0x33, 0xba, 0x7e, 0x10, 0x7f, 0x6b, 0xda, 0x5c, 0x8d, 0x5a,
		0xae, 0x47, 0x26, 0xca, 0x68, 0x07, 0x56, 0xb7, 0xeb, 0xda, 0xd1, 0x05, 0x8e, 0x1b, 0xf2, 0xc0,
		0xfd, 0x36, 0xe4, 0xcc, 0x31, 0x2c, 0x3b, 0xf0, 0xc3, 0x30, 0xbe, 0x30, 0x64, 0x3c, 0xb2, 0x78,
		0xe3, 0xbb, 0x84, 0x53, 0x26, 0xef, 0xce, 0x1b, 0x7f, 0x9a, 0xb4, 0x6d, 0xb7, 0x6c, 0xdb, 0x0f,
		0xe2, 0x96, 0xe9, 0xc9, 0xb3, 0xfd, 0x60, 0xee, 0xc3, 0x23, 0x3f, 0x30, 0xda, 0x8f, 0x6e, 0x68,
		0x78, 0xbe, 0x13, 0x3d, 0x2d, 0x73, 0xc2, 0xe8, 0xcf, 0xf1, 0x7b, 0x44, 0x3f, 0x58, 0xde, 0xf3,
		0x92, 0xf6, 0xed, 0x49, 0x67, 0xf6, 0xf0, 0x39, 0xe4, 0xac, 0x6f, 0x3c, 0xb2, 0x99, 0x96, 0xee,
		0xdf, 0x42, 0xbf, 0x37, 0xe4, 0x0c, 0xfd, 0xd5, 0x8b, 0x65, 0x81, 0x75, 0x59, 0x62, 0xed, 0x16,
		0x59, 0xbb, 0x65, 0xd6, 0x6c, 0xa1, 0x69, 0xa9, 0xb5, 0xe2, 0x97, 0x97, 0xa4, 0x3b, 0x6b, 0xb2,
		0x00, 0xb6, 0xb4, 0xb5, 0x54, 0xdf, 0xc2, 0xb3, 0x27, 0x74, 0xcb, 0x8a, 0xa2, 0x76, 0xb1, 0xee,
		0x33, 0x29, 0x6b, 0x1c, 0x3a, 0x75, 0x42, 0xf3, 0x2a, 0x0f, 0xdf, 0x8e, 0x5d, 0xfa, 0x62, 0x5c,
		0xd2, 0xf3, 0xfd, 0xef, 0x46, 0xec, 0xdf, 0x17, 0x5c, 0xbe, 0xeb, 0x1d, 0x18, 0xf5, 0xae, 0x31,
		0xf4, 0xc2, 0x01, 0xb3, 0xdd, 0xae, 0xcb, 0x9c, 0xb7, 0x23, 0x17, 0x1f, 0x7d, 0xcf, 0x98, 0xb8,
		0xe7, 0x11, 0x2a, 0x88, 0xfe, 0xd0, 0xf3, 0x6d, 0xab, 0xb7, 0x70, 0x9b, 0xc8, 0x4f, 0x4f, 0xa2,
		0x24, 0xe6, 0x2c, 0x71, 0xcb, 0xa9, 0x0b, 0xf6, 0x0c, 0xf6, 0xd3, 0x0d, 0x79, 0xe4, 0xeb, 0x17,
		0x9e, 0x36, 0xf1, 0xdd, 0x0e, 0x7b, 0x72, 0xed, 0xe8, 0xab, 0xce, 0x9d, 0xf7, 0x68, 0x3d, 0x31,
		0xc3, 0xf6, 0x83, 0x80, 0x85, 0x03, 0xdf, 0x8b, 0x21, 0x42, 0x84, 0x48, 0x5c, 0x96, 0x3e, 0x52,
		0x86, 0xa2, 0x7a, 0x77, 0x5e, 0xcf, 0x0d, 0x39, 0xbc, 0x3e, 0xbc, 0x3e, 0xbc, 0xfe, 0x1e, 0x7a,
		0x7d, 0x4d, 0x99, 0xea, 0xf9, 0x41, 0x80, 0x22, 0x66, 0xae, 0x17, 0xcb, 0xc7, 0xeb, 0x3a, 0x9c,
		0xb4, 0x68, 0xff, 0xb4, 0x1c, 0x52, 0x5a, 0xe5, 0xd3, 0xeb, 0x5d, 0x23, 0x89, 0xb8, 0xc7, 0x71,
		0xb8, 0x15, 0x1a, 0x6e, 0x7f, 0xe0, 0x07, 0x51, 0xb0, 0xdd, 0x0d, 0xfc, 0xbe, 0x61, 0x79, 0x3e,
		0x7f, 0x64, 0xc1, 0xa2, 0x33, 0x7d, 0xcd, 0x0e, 0x1e, 0x0e, 0xde, 0x1a, 0x2e, 0xbf, 0xf3, 0x26,
		0xfe, 0x33, 0x8e, 0xa0, 0x2d, 0xa3, 0x71, 0x6c, 0x24, 0x6d, 0x16, 0xc6, 0x0e, 0xf5, 0xd9, 0xf8,
		0xf1, 0xe8, 0xda, 0x8f, 0xf1, 0x0d, 0x7a, 0xcc, 0x0a, 0x3c, 0xe6, 0x8c, 0x03, 0xf6, 0xe4, 0x0e,
		0x8b, 0x4e, 0xfd, 0xcd, 0xdb, 0xf8, 0xe9, 0x9e, 0xac, 0xde, 0x90, 0x45, 0xa1, 0x3e, 0x8f, 0x82,
		0xf5, 0x08, 0x62, 0x47, 0x50, 0xa0, 0xc7, 0x6c, 0x1e, 0x26, 0xa0, 0x63, 0xde, 0x1b, 0xc7, 0x0f,
		0x3e, 0xba, 0x9f, 0xcb, 0xa7, 0x6f, 0x79, 0x70, 0xe7, 0xdd, 0x79, 0x9f, 0xfc, 0xc0, 0x60, 0x3f,
		0xad, 0xfe, 0xa0, 0xc7, 0xde, 0x1a, 0x6e, 0x77, 0x11, 0x77, 0x4c, 0x50, 0xc5, 0x92, 0x17, 0xfb,
		0xfd, 0xf6, 0xd3, 0xdb, 0x11, 0x74, 0x08, 0xfc, 0x21, 0x67, 0xa1, 0x61, 0x05, 0x6c, 0x6e, 0xc8,
		0x22, 0x81, 0xbf, 0xdf, 0x5c, 0x3f, 0x55, 0x0c, 0xcb, 0x71, 0x02, 0x16, 0x86, 0x66, 0xd7, 0xea,
		0xbb, 0xbd, 0xe7, 0xd1, 0x3b, 0x30, 0xe3, 0xc3, 0xe7, 0x1b, 0x63, 0xf2, 0xb0, 0x09, 0xcc, 0xf8,
		0x58, 0xfb, 0x54, 0xfd, 0xd2, 0x68, 0xdf, 0xc7, 0x69, 0xc4, 0xd7, 0x97, 0xb5, 0xf8, 0xdd, 0xbd,
		0xd1, 0x3b, 0x8f, 0x46, 0xe0, 0x87, 0x3f, 0xec, 0x39, 0xe3, 0x57, 0x1f, 0xd1, 0x1c, 0xf3, 0x17,
		0x19, 0xd6, 0x68, 0x48, 0x56, 0xac, 0x22, 0x20, 0x14, 0x20, 0x14, 0x20, 0x14, 0x20, 0x14, 0x20,
		0x94, 0x82, 0x21, 0x94, 0xad, 0xda, 0x43, 0xee, 0xc8, 0xee, 0x21, 0xd3, 0xd4, 0xc5, 0xcf, 0xbd,
		0x1e, 0x7e, 0x6e, 0x3d, 0xd2, 0x5f, 0x69, 0x34, 0x3a, 0x91, 0x2b, 0x90, 0x76, 0x03, 0xa5, 0xda,
		0x4f, 0x2e, 0x77, 0xf8, 0x48, 0xb2, 0x77, 0xfb, 0x94, 0xdf, 0xf2, 0x6d, 0x93, 0xfd, 0xe4, 0x17,
		0x9c, 0xf5, 0x58, 0x9f, 0xf1, 0xe0, 0xd9, 0xb4, 0xb8, 0xdf, 0x77, 0x6d, 0xd9, 0x86, 0xee, 0xb3,
		0x0e, 0x2b, 0xae, 0xd1, 0x26, 0xbb, 0x9c, 0xa7, 0x3c, 0x53, 0x49, 0xf3, 0x64, 0x0b, 0xaa, 0x5c,
		0xa9, 0xe1, 0x86, 0xbc, 0xca, 0xb9, 0xdc, 0x06, 0x65, 0xe9, 0xca, 0xf5, 0x6a, 0xd1, 0x68, 0x7b,
		0xb2, 0x25, 0xf2, 0x4a, 0x57, 0xd6, 0xcf, 0x29, 0x09, 0x34, 0x3d, 0x5e, 0x4a, 0xcd, 0xc0, 0x61,
		0x01, 0x73, 0x3e, 0x44, 0xeb, 0xd8, 0x1b, 0xf6, 0x7a, 0x2a, 0x22, 0xbe, 0x84, 0x71, 0x7f, 0x06,
		0xf1, 0x1a, 0x7d, 0xa2, 0x6a, 0xa7, 0x68, 0xf4, 0x72, 0x34, 0x76, 0x12, 0x1a, 0x25, 0xd4, 0xdd,
		0x43, 0x4c, 0x47, 0xb2, 0xeb, 0x47, 0xb6, 0x6f, 0x66, 0x9c, 0x37, 0xd9, 0xf9, 0xd2, 0x3d, 0x4f,
		0xd9, 0x06, 0x6f, 0xfd, 0x50, 0x64, 0x18, 0x86, 0x92, 0x3b, 0x78, 0x3a, 0x4d, 0xef, 0x9b, 0x75,
		0x10, 0xa6, 0xf3, 0x43, 0x27, 0x57, 0x67, 0x1c, 0x74, 0xb1, 0x84, 0x22, 0xe1, 0x70, 0x51, 0x26,
		0x1c, 0x94, 0xcf, 0xaf, 0x96, 0x0d, 0xe6, 0x94, 0x83, 0x35, 0xe5, 0x60, 0x4c, 0x29, 0xff, 0x99,
		0x56, 0x0d, 0x45, 0x93, 0x6b, 0x46, 0xcb, 0x6e, 0x64, 0xc7, 0x84, 0x07, 0x7e, 0x66, 0xe9, 0xca,
		0xd8, 0x42, 0xc9, 0x8c, 0x38, 0x69, 0xde, 0x43, 0x85, 0xdf, 0x50, 0x3f, 0x38, 0xa0, 0xca, 0x56,
		0x90, 0xb1, 0x12, 0x64, 0xec, 0x03, 0x49, 0xe2, 0xbf, 0x5e, 0xf8, 0x2e, 0x9b, 0x6d, 0xa6, 0x7a,
		0x32, 0x87, 0xe6, 0x44, 0x8e, 0x22, 0x61, 0xa8, 0x4c, 0x10, 0x52, 0x10, 0x82, 0x74, 0x27, 0x6e,
		0xa8, 0xe8, 0x3e, 0x72, 0x7a, 0x8f, 0x9c, 0xce, 0x23, 0x3d, 0x51, 0x93, 0x6f, 0xc6, 0xbb, 0x32,
		0x19, 0x47, 0x98, 0x14, 0x44, 0xc1, 0xaf, 0xa5, 0x7c, 0xda, 0xc1, 0x41, 0xd2, 0xe6, 0x2f, 0x59,
		0x32, 0x79, 0xb1, 0x1b, 0x52, 0xe1, 0x85, 0xc5, 0x99, 0xba, 0xe9, 0x52, 0x49, 0xe5, 0x57, 0x4c,
		0x76, 0x9f, 0x58, 0xae, 0x32, 0x2c, 0x17, 0x2c, 0x57, 0x2e, 0x96, 0x4b, 0x35, 0x31, 0xbd, 0x94,
		0xf6, 0xff, 0x24, 0x3b, 0xce, 0x4b, 0xd4, 0x51, 0x94, 0xfc, 0xe4, 0x49, 0x19, 0x07, 0x7a, 0x37,
		0xa8, 0xb4, 0xda, 0x94, 0x57, 0x8b, 0x12, 0xab, 0x29, 0xb3, 0xa2, 0x52, 0x93, 0x29, 0x77, 0x2a,
		0xc8, 0xb7, 0x39, 0xe3, 0xa1, 0x99, 0xa4, 0x69, 0xc4, 0x07, 0xfb, 0xa8, 0x53, 0x59, 0xe6, 0xef,
		0x80, 0xe4, 0x83, 0xe2, 0x18, 0x07, 0x5d, 0x46, 0x42, 0xbb, 0xb1, 0xd0, 0x6e, 0x34, 0xb4, 0x1a,
		0x0f, 0x1a, 0x23, 0x42, 0x64, 0x4c, 0xe8, 0x62, 0x9d, 0x75, 0x8e, 0xff, 0xb4, 0xa2, 0x21, 0xdb,
		0x80, 0xb0, 0x39, 0x54, 0xe9, 0xd6, 0xf2, 0x1e, 0x18, 0x69, 0x79, 0x45, 0x83, 0xbc, 0xf0, 0x8d,
		0xa1, 0xab, 0x43, 0x5a, 0x2a, 0x5c, 0x53, 0xa7, 0xb4, 0x54, 0xbe, 0xee, 0xf6, 0x5b, 0x93, 0xe5,
		0xa7, 0xab, 0x0d, 0x17, 0xb1, 0xe6, 0xcd, 0x4e, 0xad, 0x86, 0x4e, 0x6a, 0x0b, 0x53, 0x4b, 0xb3,
		0x17, 0xbb, 0x6f, 0xb3, 0xfd, 0xaa, 0x98, 0xd2, 0x3a, 0x3b, 0x94, 0x61, 0x3d, 0xb0, 0xec, 0xef,
		0x9a, 0x01, 0xe9, 0xe2, 0x2d, 0x80, 0x48, 0x81, 0x48, 0x81, 0x48, 0x81, 0x48, 0x81, 0x48, 0x81,
		0x48, 0x81, 0x48, 0x81, 0x48, 0x81, 0x48, 0x77, 0x05, 0x91, 0x6e, 0x94, 0xa4, 0x25, 0xca, 0x74,
		0x4f, 0xe5, 0xe9, 0x49, 0x2e, 0x3c, 0x9d, 0x4e, 0x02, 0x3d, 0x9d, 0xce, 0x78, 0x7f, 0x47, 0xb4,
		0x5f, 0x63, 0x64, 0xcf, 0x11, 0x3d, 0x8d, 0x73, 0x44, 0xef, 0x2f, 0xc7, 0x37, 0xde, 0xc2, 0x1a,
		0xb8, 0x0e, 0xb3, 0xad, 0x41, 0x38, 0xec, 0x59, 0x9c, 0x99, 0x8f, 0xcc, 0x72, 0x58, 0x40, 0xb7,
		0x81, 0xb6, 0x44, 0x36, 0x6a, 0xe3, 0xe6, 0x17, 0x9b, 0x60, 0x2b, 0x0d, 0xb5, 0x71, 0x33, 0xac,
		0x37, 0xe6, 0x8d, 0xb5, 0xd4, 0xf5, 0xbd, 0x44, 0x4f, 0x4d, 0x1e, 0xdd, 0x86, 0xb0, 0x52, 0x6e,
		0x85, 0x40, 0x56, 0xcd, 0x1b, 0xf6, 0xe9, 0x16, 0x73, 0xdb, 0x6f, 0xf1, 0xc0, 0xf5, 0x1e, 0x68,
		0x03, 0xb6, 0xc3, 0x51, 0x83, 0x99, 0x1a, 0x65, 0x9c, 0x76, 0x14, 0x1f, 0x7a, 0xbf, 0xf9, 0x9d,
		0x34, 0xf8, 0x2b, 0x27, 0x42, 0x4f, 0x29, 0x85, 0x1e, 0x47, 0x42, 0xaf, 0x6e, 0x1a, 0x2d, 0x4a,
		0xa1, 0x95, 0x48, 0xe8, 0xef, 0x7f, 0x36, 0xaa, 0xd7, 0xa5, 0x62, 0x45, 0xfb, 0x7e, 0xdd, 0xe3,
		0xb4, 0xab, 0x27, 0x5a, 0x38, 0xa4, 0xf8, 0x7e, 0xb4, 0x6c, 0x94, 0x73, 0x4f, 0xe6, 0x45, 0x9e,
		0xaa, 0x67, 0xa1, 0xcc, 0x86, 0x6c, 0xd1, 0x92, 0xb9, 0x30, 0x8e, 0x09, 0x45, 0x8e, 0x16, 0xcc,
		0x85, 0x51, 0xd9, 0xf7, 0xd3, 0xb2, 0x0a, 0xd8, 0x30, 0x06, 0xd7, 0x66, 0x9f, 0x71, 0xcb, 0xb1,
		0xb8, 0x45, 0x87, 0x0b, 0xe7, 0xe4, 0x02, 0x13, 0x02, 0x13, 0x02, 0x13, 0x16, 0x0a, 0x13, 0x7e,
		0x73, 0x3d, 0x4b, 0xea, 0x70, 0xe5, 0x2a, 0xed, 0x7c, 0x4f, 0x20, 0xaa, 0xc1, 0xbc, 0x87, 0x98,
		0x4c, 0xa0, 0x61, 0x97, 0x09, 0xfd, 0xb6, 0x0e, 0x36, 0x59, 0x17, 0x8b, 0xac, 0x9d, 0x4f, 0xd4,
		0xc7, 0x23, 0xfe, 0xa2, 0x84, 0x1c, 0x1a, 0x58, 0xe2, 0x74, 0xca, 0xce, 0x31, 0x65, 0x64, 0xc0,
		0x89, 0x46, 0x4a, 0x67, 0x0b, 0xe1, 0x17, 0x71, 0x89, 0x75, 0x3d, 0xa5, 0xd5, 0xf7, 0x08, 0x7e,
		0xa1, 0xaf, 0x02, 0xfa, 0x2a, 0xe4, 0x07, 0xc1, 0xe8, 0xaa, 0x72, 0x53, 0x16, 0xba, 0xda, 0xfa,
		0x2a, 0xdc, 0x45, 0x30, 0xe5, 0xf4, 0x15, 0x39, 0x73, 0xaa, 0xb2, 0x0d, 0x63, 0x0f, 0x63, 0x0f,
		0x63, 0xaf, 0xc1, 0xd8, 0x6b, 0x2a, 0x75, 0xa8, 0xcf, 0xf2, 0x17, 0xb1, 0xb4, 0xe1, 0x66, 0x4c,
		0xbb, 0xae, 0x22, 0xcb, 0x9a, 0x8b, 0x2b, 0xc3, 0x94, 0xc3, 0x94, 0xc3, 0x94, 0xc3, 0x94, 0xc3,
		0x94, 0x2f, 0x98, 0xf2, 0x41, 0xe0, 0x73, 0xdf, 0xf6, 0x7b, 0xe4, 0x26, 0x3c, 0x15, 0x0c, 0xd3,
		0x9d, 0xd1, 0x74, 0xc3, 0x70, 0xeb, 0x31, 0xdc, 0x30, 0xdb, 0xf3, 0xeb, 0xcd, 0x75, 0x98, 0xc7,
		0x5d, 0xfe, 0x4c, 0x6c, 0xad, 0x09, 0x92, 0xc2, 0x4b, 0xf5, 0xe4, 0xd1, 0x3e, 0x58, 0xa1, 0x86,
		0xde, 0x1d, 0x71, 0x17, 0x86, 0x46, 0xe3, 0xfe, 0xe6, 0xb6, 0xd9, 0x6e, 0x5e, 0x36, 0x1b, 0xf7,
		0xed, 0xbf, 0x6e, 0xa8, 0xd2, 0x97, 0x46, 0x1b, 0x22, 0x21, 0xe9, 0x81, 0x10, 0xe2, 0x2d, 0x9b,
		0xf1, 0x30, 0x7c, 0xf8, 0x7c, 0x53, 0x2a, 0xe2, 0x46, 0x95, 0xa6, 0xd7, 0xfd, 0x58, 0xbf, 0xad,
		0x5d, 0xb6, 0x1b, 0x7f, 0xdd, 0x5f, 0x36, 0xaf, 0xaf, 0x6b, 0x97, 0xed, 0xda, 0xc7, 0x7d, 0x7a,
		0xfb, 0xcf, 0xb7, 0xf5, 0x0f, 0xf5, 0x7d, 0x7a, 0xe1, 0xfa, 0xe7, 0xab, 0xbd, 0x5a, 0xde, 0xf5,
		0x56, 0xbd, 0xb5, 0x4f, 0xef, 0xdb, 0x68, 0x5e, 0x56, 0x1b, 0x7b, 0xf7, 0xc2, 0xf7, 0xd5, 0xcf,
		0x9f, 0x6f, 0x6b, 0x9f, 0xab, 0xed, 0xda, 0x3e, 0xbd, 0x7a, 0xb3, 0x75, 0xf3, 0x69, 0xdf, 0xde,
		0xf7, 0x78, 0x9f, 0x5e, 0xf8, 0xe6, 0xb2, 0xb6, 0x57, 0xc6, 0xfa, 0xa6, 0x7e, 0xb5, 0x4f, 0xaf,
		0xdb, 0x6a, 0x57, 0xdb, 0xf5, 0xcb, 0xa2, 0x9d, 0x81, 0xef, 0xec, 0x65, 0x86, 0xf3, 0x80, 0x86,
		0xb9, 0xa0, 0xa9, 0x37, 0x0d, 0x7e, 0x07, 0xfc, 0x0e, 0xf8, 0x1d, 0x5d, 0xfc, 0xce, 0xe0, 0xe9,
		0xd4, 0x24, 0x9b, 0xcf, 0x94, 0xdf, 0x39, 0xa7, 0x61, 0xe3, 0x39, 0x0b, 0x3c, 0x32, 0x96, 0xa4,
		0xf4, 0xfa, 0xf5, 0xd7, 0x43, 0xf3, 0xbd, 0x65, 0x76, 0xab, 0xe6, 0xa7, 0xce, 0xdf, 0x47, 0x6f,
		0x2b, 0xbf, 0x2e, 0xde, 0xfc, 0x7d, 0xf6, 0x6b, 0xfe, 0xc3, 0x7f, 0x96, 0x7d, 0xed, 0xe8, 0xed,
		0xd9, 0xaf, 0x8b, 0x15, 0x7f, 0x39, 0xfd, 0x75, 0x91, 0x51, 0xc6, 0xc9, 0xaf, 0xd7, 0x0b, 0x5f,
		0x8d, 0x3e, 0x2f, 0xaf, 0xba, 0xa0, 0xb2, 0xe2, 0x82, 0xe3, 0x55, 0x17, 0x1c, 0xaf, 0xb8, 0x60,
		0xe5, 0x23, 0x95, 0x57, 0x5c, 0x70, 0xf2, 0xeb, 0x9f, 0x85, 0xef, 0xbf, 0x5e, 0xfe, 0xd5, 0xd3,
		0x5f, 0x6f, 0xfe, 0x59, 0xf5, 0xb7, 0xb3, 0x5f, 0xff, 0x5c, 0xbc, 0x79, 0xf3, 0xee, 0xf5, 0x51,
		0xf9, 0xeb, 0xa1, 0x79, 0xde, 0xf9, 0xe7, 0xe8, 0xeb, 0xa1, 0x79, 0xd4, 0x89, 0xbe, 0xd9, 0xf9,
		0xe7, 0xeb, 0x91, 0xf9, 0x7e, 0xfc, 0x63, 0xf4, 0xff, 0x6f, 0xd4, 0xd5, 0xb3, 0x43, 0xb1, 0xee,
		0x9a, 0xad, 0xfa, 0x9f, 0xe4, 0x8b, 0xef, 0x3f, 0x58, 0x7d, 0x05, 0x5f, 0x7d, 0xff, 0x2a, 0x6d,
		0x6f, 0x3a, 0x75, 0xae, 0x35, 0xc9, 0xab, 0xc3, 0x87, 0xc8, 0xad, 0xc6, 0x55, 0xdd, 0xe4, 0xb5,
		0x83, 0x08, 0x5a, 0x2a, 0x27, 0x5c, 0xce, 0x14, 0xcf, 0x98, 0xfa, 0x68, 0x54, 0x42, 0x63, 0x2a,
		0xd3, 0x52, 0x15, 0xbe, 0xce, 0xb5, 0xeb, 0xae, 0x3a, 0x8e, 0xd1, 0x63, 0xd6, 0x13, 0x0b, 0x0d,
		0xfe, 0x68, 0x71, 0x23, 0x60, 0xff, 0x1d, 0xba, 0x01, 0x33, 0x02, 0xd6, 0x65, 0x01, 0xf3, 0x6c,
		0xd7, 0x7b, 0x30, 0xfc, 0xae, 0x61, 0x2d, 0x36, 0xeb, 0xe6, 0xfe, 0xa8, 0x61, 0xb4, 0x3f, 0x60,
		0x41, 0x7c, 0x3a, 0xdd, 0xea, 0x19, 0xf1, 0x13, 0x1a, 0x03, 0x2b, 0xb0, 0xfa, 0x8c, 0xb3, 0x20,
		0x8c, 0x2f, 0xf5, 0xc6, 0xdd, 0xba, 0x47, 0xbd, 0xb9, 0xf9, 0x23, 0x33, 0xea, 0x37, 0x4f, 0xa7,
		0x46, 0xf2, 0xb6, 0x46, 0xf5, 0x53, 0xfb, 0xa0, 0x68, 0x55, 0xdc, 0x91, 0x2f, 0xb3, 0x7f, 0xb0,
		0x7c, 0xfb, 0xf3, 0x65, 0xc8, 0x2a, 0xb9, 0x13, 0x1f, 0x6e, 0x59, 0x58, 0xca, 0xa4, 0x87, 0x5c,
		0x56, 0x9a, 0xb6, 0xd4, 0x88, 0x8d, 0x8d, 0x95, 0x31, 0x7b, 0xdf, 0x91, 0xc5, 0x73, 0x43, 0xc3,
		0xf5, 0x8c, 0x61, 0xc8, 0x8c, 0xae, 0x1f, 0xc4, 0xdf, 0x9a, 0x36, 0x57, 0x77, 0x5e, 0xf4, 0x49,
		0x64, 0xa2, 0x8c, 0x76, 0x60, 0x75, 0xbb, 0xae, 0x1d, 0x5d, 0xe0, 0xb8, 0x21, 0x0f, 0xdc, 0x6f,
		0x43, 0xce, 0x1c, 0xc3, 0xb2, 0x03, 0x3f, 0x1c, 0xf5, 0xc8, 0x0f, 0x19, 0x8f, 0x2c, 0xde, 0xf8,
		0x2e, 0xe1, 0x94, 0xc9, 0xbb, 0xf3, 0xc6, 0x9f, 0x1a, 0xa3, 0x7b, 0x5b, 0xb6, 0xed, 0x07, 0x4e,
		0x64, 0x5e, 0x93, 0x67, 0xfb, 0xc1, 0xdc, 0x87, 0x47, 0x7e, 0x60, 0xb4, 0x1f, 0xdd, 0xd0, 0xf0,
		0x7c, 0x27, 0x7a, 0x5a, 0xe6, 0x84, 0xd1, 0x9f, 0xe3, 0xf7, 0x88, 0x7e, 0xb0, 0xbc, 0xe7, 0x48,
		0xd0, 0xac, 0x33, 0x31, 0xfc, 0x91, 0x51, 0x0d, 0x9f, 0x43, 0xce, 0xfa, 0xc6, 0x63, 0xfc, 0xc2,
		0xfd, 0x61, 0xc8, 0x8d, 0x6f, 0xcc, 0xb0, 0xbe, 0x85, 0x7e, 0x6f, 0xc8, 0xd1, 0xa7, 0xbf, 0x60,
		0x16, 0x58, 0x97, 0x25, 0xd6, 0x6e, 0x91, 0xb5, 0x5b, 0x66, 0xcd, 0x16, 0x9a, 0x96, 0x98, 0x2d,
		0x7e, 0x71, 0x52, 0xba, 0x93, 0x4a, 0x0b, 0x60, 0x4b, 0x5b, 0x6b, 0xfe, 0x2d, 0x3c, 0xb9, 0x44,
		0xb7, 0xac, 0x28, 0x2a, 0x5f, 0xeb, 0x3e, 0xd1, 0xb4, 0xc6, 0xa1, 0x53, 0xa7, 0xc3, 0xaf, 0xf2,
		0xf0, 0xed, 0xd8, 0xa5, 0x2f, 0xc6, 0x25, 0x3d, 0xdf, 0xff, 0x6e, 0xc4, 0xfe, 0x7d, 0xc1, 0xe5,
		0xbb, 0xde, 0x81, 0x51, 0xef, 0x1a, 0x43, 0x2f, 0x1c, 0x30, 0xdb, 0xed, 0xba, 0xcc, 0x79, 0x3b,
		0x72, 0xf1, 0xd1, 0xf7, 0x8c, 0x89, 0x7b, 0x1e, 0xa1, 0x82, 0xe8, 0x0f, 0x3d, 0xdf, 0xb6, 0x7a,
		0x0b, 0xb7, 0x89, 0xfc, 0xf4, 0x24, 0x4a, 0x62, 0xce, 0x12, 0xb7, 0x9c, 0xba, 0x60, 0xcf, 0x60,
		0x3f, 0xdd, 0x90, 0x47, 0xbe, 0x7e, 0xe1, 0x69, 0x13, 0xdf, 0xed, 0xb0, 0x27, 0xd7, 0x8e, 0xbe,
		0xea, 0xdc, 0x79, 0x8f, 0xd6, 0x13, 0x33, 0x6c, 0x3f, 0x08, 0x58, 0x38, 0xf0, 0xbd, 0x18, 0x22,
		0x44, 0x88, 0xc4, 0x65, 0xe9, 0x23, 0x65, 0x28, 0xc9, 0x78, 0xe7, 0xf5, 0xdc, 0x90, 0xc3, 0xeb,
		0xc3, 0xeb, 0xc3, 0xeb, 0xef, 0xa1, 0xd7, 0xd7, 0x74, 0xce, 0x21, 0x3f, 0x08, 0x50, 0xc4, 0x73,
		0x0f, 0xc5, 0xf2, 0xf1, 0xba, 0x8e, 0xb6, 0x2d, 0xda, 0x3f, 0x2d, 0x47, 0xdc, 0x56, 0xf9, 0xf4,
		0x7a, 0xd7, 0x48, 0x22, 0xee, 0x71, 0x1c, 0x6e, 0x85, 0x86, 0xdb, 0x1f, 0xf8, 0x41, 0x14, 0x6c,
		0x77, 0x03, 0xbf, 0x6f, 0x58, 0x9e, 0xcf, 0x1f, 0x59, 0xb0, 0xe8, 0x4c, 0x5f, 0xb3, 0x83, 0x87,
		0x83, 0xb7, 0x86, 0xcb, 0xef, 0xbc, 0x89, 0xff, 0x8c, 0x23, 0x68, 0xcb, 0x68, 0x1c, 0x1b, 0x49,
		0x93, 0x8e, 0xb1, 0x43, 0x7d, 0x36, 0x7e, 0x3c, 0xba, 0xf6, 0x63, 0x7c, 0x83, 0x1e, 0xb3, 0x02,
		0x8f, 0x39, 0xe3, 0x80, 0x3d, 0xb9, 0xc3, 0xa2, 0x53, 0x7f, 0xf3, 0x36, 0x7e, 0xba, 0x27, 0xab,
		0x37, 0x64, 0x51, 0xa8, 0xcf, 0xa3, 0x60, 0x3d, 0x82, 0xd8, 0x11, 0x14, 0xe8, 0x31, 0x9b, 0x87,
		0x09, 0xe8, 0x98, 0xf7, 0xc6, 0xf1, 0x83, 0x8f, 0xee, 0xe7, 0xf2, 0xe9, 0x5b, 0x1e, 0xdc, 0x79,
		0x77, 0xde, 0x27, 0x3f, 0x30, 0xd8, 0x4f, 0xab, 0x3f, 0xe8, 0xb1, 0xb7, 0x86, 0xdb, 0x5d, 0xc4,
		0x1d, 0x13, 0x54, 0xb1, 0xe4, 0xc5, 0x7e, 0xbf, 0xfd, 0xf4, 0x76, 0x04, 0x1d, 0x02, 0x7f, 0xc8,
		0x59, 0x68, 0x58, 0x01, 0x9b, 0x1b, 0xb2, 0x48, 0xe0, 0xef, 0x37, 0xd7, 0x4f, 0x15, 0xc3, 0x72,
		0x9c, 0x80, 0x85, 0xa1, 0xd9, 0xb5, 0xfa, 0x6e, 0xef, 0x79, 0xf4, 0x0e, 0xcc, 0xf8, 0xf0, 0xf9,
		0xc6, 0x98, 0x3c, 0x6c, 0x02, 0x33, 0x3e, 0xd6, 0x3e, 0x55, 0xbf, 0x34, 0xda, 0xf7, 0x71, 0x12,
		0xfa, 0xf5, 0x65, 0x2d, 0x7e, 0x77, 0x6f, 0xf4, 0xce, 0xa3, 0x11, 0xf8, 0xe1, 0x0f, 0x7b, 0xce,
		0xf8, 0xd5, 0x47, 0x34, 0xc7, 0xfc, 0x45, 0x86, 0x35, 0x1a, 0x92, 0x15, 0xab, 0x08, 0x08, 0x05,
		0x08, 0x05, 0x08, 0x05, 0x08, 0x05, 0x08, 0xa5, 0x60, 0x08, 0x65, 0xab, 0xf6, 0x90, 0x3b, 0xb2,
		0x7b, 0xc8, 0x34, 0x5d, 0x15, 0x72, 0xef, 0xa6, 0x90, 0x5b, 0x87, 0xfd, 0x57, 0x1a, 0x8d, 0x4e,
		0xe4, 0x0a, 0xa4, 0xdd, 0x40, 0xa9, 0xf6, 0x93, 0xcb, 0x1d, 0x5d, 0x93, 0xec, 0xfc, 0x3f, 0xe5,
		0xb7, 0x7c, 0xdb, 0x64, 0x3f, 0xf9, 0x05, 0x67, 0x3d, 0xd6, 0x67, 0x3c, 0x78, 0x36, 0x2d, 0xee,
		0xf7, 0x5d, 0x5b, 0xd2, 0x7a, 0xcd, 0x39, 0xac, 0xb8, 0xc2, 0x9f, 0xec, 0x72, 0x9e, 0xf2, 0x4c,
		0x25, 0xcd, 0x93, 0x2d, 0xa8, 0x72, 0xa5, 0x86, 0x1b, 0xf2, 0x2a, 0xe7, 0x72, 0x1b, 0x94, 0xa5,
		0x2b, 0xd7, 0xab, 0x45, 0xa3, 0xed, 0xc9, 0x16, 0x58, 0x2c, 0x5d, 0x59, 0x3f, 0xa7, 0x24, 0xd0,
		0x74, 0x08, 0x2a, 0x35, 0x03, 0x87, 0x05, 0xcc, 0xf9, 0x10, 0xad, 0x63, 0x6f, 0xd8, 0xeb, 0xa9,
		0x88, 0xf8, 0x12, 0xc6, 0xdd, 0x3d, 0xc4, 0x2b, 0x3c, 0x8a, 0xaa, 0x9d, 0xa2, 0xd1, 0xcb, 0xd1,
		0xd8, 0x49, 0x68, 0x94, 0x50, 0x6f, 0x18, 0x31, 0x1d, 0xc9, 0xae, 0x1f, 0xd9, 0xbe, 0x99, 0x71,
		0xde, 0x64, 0xe7, 0x4b, 0xf7, 0x3c, 0x65, 0x1b, 0xbc, 0xf5, 0x43, 0x91, 0x61, 0x18, 0x4a, 0xfd,
		0x41, 0x2f, 0xcc, 0xfc, 0xf2, 0x29, 0xc4, 0x8c, 0xaf, 0xca, 0x38, 0xc8, 0x62, 0x09, 0x44, 0xc2,
		0xe1, 0xa1, 0x4c, 0xf8, 0x27, 0x9f, 0x8d, 0x2f, 0x1b, 0xbc, 0x29, 0x07, 0x67, 0xca, 0xc1, 0x97,
		0x52, 0xb6, 0x3c, 0xad, 0xda, 0x89, 0x26, 0xd3, 0x94, 0x7a, 0xd6, 0x37, 0xd6, 0x4b, 0x0c, 0x97,
		0xf0, 0xc8, 0xa7, 0xdb, 0xb5, 0x53, 0x42, 0x44, 0xe1, 0x94, 0x54, 0x0e, 0x9c, 0x34, 0xd3, 0xa1,
		0xc2, 0x68, 0xa8, 0x1f, 0x34, 0x51, 0xe5, 0x27, 0xc8, 0x78, 0x08, 0x32, 0xbe, 0x81, 0xe4, 0xa0,
		0x88, 0x5e, 0xc0, 0x2e, 0x9b, 0x5f, 0x36, 0x5a, 0xd5, 0xf2, 0x73, 0x35, 0xa3, 0x1c, 0xb2, 0xf3,
		0xa4, 0x46, 0x10, 0x2a, 0x13, 0x82, 0x14, 0x04, 0x20, 0xdd, 0xf9, 0x2c, 0x2a, 0x7a, 0x8f, 0x9c,
		0xce, 0x23, 0xa7, 0xef, 0x48, 0xcf, 0x5f, 0xe5, 0x9b, 0xe1, 0xae, 0x4c, 0xbe, 0x11, 0x26, 0x01,
		0x51, 0xf0, 0x69, 0x29, 0x7f, 0x76, 0x70, 0x90, 0x34, 0x85, 0x1c, 0x29, 0x74, 0x5e, 0x64, 0x86,
		0x54, 0x34, 0x61, 0x71, 0xa6, 0x6e, 0xb8, 0x54, 0x32, 0xf7, 0x15, 0x73, 0xdb, 0x27, 0x86, 0xab,
		0x0c, 0xc3, 0x05, 0xc3, 0x95, 0x8b, 0xe1, 0x52, 0xcd, 0x43, 0x2f, 0xa5, 0xcd, 0x62, 0xc9, 0xce,
		0x7e, 0x13, 0xb5, 0x9f, 0x25, 0x3f, 0x68, 0x52, 0xc6, 0xe9, 0xef, 0x0d, 0x2a, 0xad, 0x36, 0xe5,
		0xd5, 0xa2, 0xc4, 0x6a, 0xca, 0xac, 0xa8, 0xd4, 0x64, 0xca, 0x9d, 0x0a, 0xf2, 0x6d, 0xce, 0x78,
		0x68, 0x26, 0x59, 0x19, 0xf1, 0x39, 0x3e, 0xea, 0xcc, 0x95, 0xf9, 0x3b, 0x20, 0xd7, 0xa0, 0x38,
		0xc6, 0x41, 0x97, 0x91, 0xd0, 0x6e, 0x2c, 0xb4, 0x1b, 0x0d, 0xad, 0xc6, 0x83, 0xc6, 0x88, 0x10,
		0x19, 0x13, 0xba, 0x50, 0x67, 0x9d, 0xe3, 0x3f, 0xad, 0x68, 0x48, 0x2e, 0x20, 0xec, 0x24, 0x56,
		0xba, 0xb5, 0xbc, 0x07, 0x46, 0x5a, 0x8b, 0xd3, 0x20, 0xaf, 0x92, 0x64, 0xe8, 0x6a, 0xa7, 0x97,
		0x0a, 0xd7, 0xd4, 0x56, 0x2f, 0x95, 0xaf, 0xbb, 0x57, 0xdb, 0x64, 0xf9, 0xe9, 0xea, 0xd9, 0x46,
		0xac, 0x79, 0xb3, 0x53, 0xab, 0xa1, 0xed, 0xde, 0xc2, 0xd4, 0xd2, 0x6c, 0xbd, 0xee, 0xdb, 0x6c,
		0xbf, 0x2a, 0xa6, 0xb4, 0xce, 0x0e, 0x25, 0x54, 0x0f, 0x2c, 0xfb, 0xbb, 0x66, 0x40, 0xba, 0x78,
		0x0b, 0x20, 0x52, 0x20, 0x52, 0x20, 0x52, 0x20, 0x52, 0x20, 0x52, 0x20, 0x52, 0x20, 0x52, 0x20,
		0x52, 0x20, 0xd2, 0x5d, 0x41, 0xa4, 0x1b, 0x25, 0x69, 0x89, 0x12, 0xdb, 0x53, 0x79, 0x1a, 0x72,
		0x09, 0xfb, 0x83, 0x5e, 0xf8, 0x6e, 0x2a, 0xdd, 0x29, 0xd9, 0x12, 0x26, 0xda, 0xa8, 0x31, 0x32,
		0xe6, 0x82, 0x36, 0xa2, 0x07, 0x88, 0x93, 0x41, 0xef, 0x2f, 0xc7, 0x77, 0xde, 0xc2, 0x52, 0xc9,
		0xf1, 0x08, 0x9a, 0x7d, 0xc6, 0x2d, 0xc7, 0xe2, 0x16, 0xdd, 0xb6, 0xd9, 0x9c, 0x5c, 0x94, 0x4e,
		0xce, 0x2f, 0x1a, 0xc1, 0xe6, 0x19, 0x4a, 0x27, 0x67, 0x58, 0x6f, 0xdf, 0x5c, 0xcf, 0x92, 0xca,
		0x94, 0x5f, 0xa5, 0x9d, 0xef, 0x09, 0x44, 0x35, 0x98, 0xf7, 0x10, 0xbb, 0x0a, 0x9a, 0xd8, 0x81,
		0x30, 0x08, 0xd3, 0x11, 0x2b, 0xe8, 0x8a, 0x11, 0xb4, 0xa3, 0x45, 0x7d, 0x28, 0x91, 0x30, 0x16,
		0xd0, 0x12, 0x03, 0xa4, 0x53, 0x76, 0x8e, 0x29, 0xa3, 0xa5, 0x5f, 0xb6, 0xb7, 0x7a, 0xb1, 0x02,
		0xfc, 0x52, 0xcb, 0x6f, 0x5e, 0xb0, 0xe9, 0x2a, 0x79, 0xce, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x5b,
		0x9a, 0xc0, 0x56, 0x14, 0xb3, 0x9a, 0x14, 0xda, 0x39, 0xad, 0xa1, 0x47, 0x14, 0x88, 0x2b, 0x79,
		0xd7, 0xc2, 0xe1, 0xad, 0xf1, 0xc8, 0x0d, 0x5d, 0x8f, 0x1f, 0x97, 0x35, 0x30, 0xde, 0x67, 0x60,
		0xbc, 0x89, 0x85, 0xa7, 0xb4, 0xe8, 0x29, 0x48, 0xd0, 0xfc, 0x60, 0xae, 0x56, 0xb8, 0xbb, 0x38,
		0xb7, 0x87, 0x95, 0xf3, 0x93, 0x33, 0xb0, 0xdc, 0xf9, 0x80, 0x62, 0x7a, 0x69, 0x9d, 0x22, 0xed,
		0x95, 0x6a, 0x70, 0x17, 0xcc, 0x1b, 0xf6, 0x93, 0xb6, 0x12, 0x3a, 0x8a, 0x02, 0x55, 0x08, 0x65,
		0xd6, 0xbc, 0x61, 0x9f, 0x3e, 0x3e, 0x6d, 0xfb, 0x2d, 0x1e, 0xb8, 0xde, 0x83, 0x16, 0x53, 0x50,
		0x3a, 0x8c, 0x2b, 0xed, 0xdd, 0xfc, 0x5e, 0xb9, 0xaf, 0xfd, 0x79, 0xd3, 0xa8, 0x5f, 0xd6, 0xdb,
		0xf7, 0xd7, 0x5f, 0x1a, 0x8d, 0x92, 0x06, 0x73, 0x76, 0x14, 0xdd, 0xea, 0xb6, 0xf9, 0xa5, 0x5d,
		0xbb, 0xbd, 0xaf, 0x36, 0x6a, 0xb7, 0x6d, 0x1d, 0x37, 0x29, 0x27, 0xef, 0x73, 0xaa, 0xff, 0x7d,
		0x8e, 0xe3, 0x5b, 0x5d, 0x69, 0xbe, 0xcb, 0x59, 0x74, 0x97, 0xda, 0x75, 0xfb, 0xb6, 0x79, 0xf3,
		0xd7, 0x7d, 0xa3, 0xfa, 0xa1, 0xd6, 0xb8, 0xaf, 0x5f, 0x7f, 0xac, 0x5f, 0x56, 0xdb, 0xcd, 0x5b,
		0x1d, 0xf7, 0x3b, 0x8f, 0x37, 0x48, 0x9a, 0xa3, 0x5b, 0x95, 0x5e, 0x15, 0xd8, 0x47, 0x96, 0xda,
		0x7e, 0x3d, 0x0e, 0x52, 0x34, 0xa8, 0xc5, 0xaa, 0x01, 0x27, 0x45, 0x99, 0xe9, 0xdd, 0x66, 0x17,
		0xd1, 0x85, 0x71, 0xac, 0xe3, 0x1e, 0x8b, 0x3a, 0xae, 0xc5, 0x1b, 0x2f, 0x53, 0x3e, 0xe5, 0xc3,
		0x4d, 0xcb, 0x3d, 0xc4, 0x78, 0x91, 0x92, 0x73, 0x77, 0xa3, 0x10, 0x60, 0xda, 0x52, 0x5d, 0x18,
		0x47, 0x05, 0xf5, 0xff, 0x20, 0xeb, 0xe4, 0xc9, 0x3a, 0xe2, 0xe6, 0x36, 0x7a, 0x9a, 0xda, 0xec,
		0x11, 0x7d, 0x87, 0x8e, 0x56, 0xe8, 0x68, 0x95, 0x1f, 0x85, 0x47, 0xd7, 0x0f, 0x85, 0xb2, 0xc4,
		0xe8, 0xd6, 0xf7, 0x3f, 0x29, 0x82, 0x29, 0xa7, 0xaf, 0x85, 0x9e, 0x53, 0x7f, 0x13, 0x18, 0x7b,
		0x18, 0x7b, 0x18, 0x7b, 0x0d, 0xc6, 0x5e, 0x53, 0x91, 0x69, 0x7d, 0x96, 0xbf, 0x88, 0x45, 0xa5,
		0x37, 0x63, 0xda, 0x07, 0xfe, 0x60, 0xc0, 0x1c, 0x73, 0xb2, 0xe3, 0x66, 0x86, 0xdc, 0xb2, 0xbf,
		0xd3, 0x99, 0xf4, 0x55, 0x37, 0x80, 0x29, 0xcf, 0x68, 0xca, 0x61, 0xc8, 0xf5, 0x18, 0x72, 0x98,
		0xf1, 0xf9, 0xf5, 0x86, 0x6d, 0x77, 0xd9, 0x91, 0xc3, 0xb6, 0x3b, 0x25, 0x39, 0x88, 0x6d, 0xf7,
		0x6c, 0x8b, 0x0f, 0xdb, 0xee, 0xab, 0xe6, 0x16, 0xdb, 0xee, 0x39, 0x38, 0x30, 0x7d, 0xd2, 0xb0,
		0xed, 0xae, 0xe4, 0x71, 0xb1, 0xed, 0x8e, 0x6d, 0x77, 0xc9, 0x5b, 0x61, 0xdb, 0x7d, 0xb3, 0x3e,
		0x12, 0xdb, 0xee, 0x42, 0xf7, 0xc0, 0xb6, 0xbb, 0x60, 0x08, 0x80, 0x6d, 0xf7, 0xfc, 0x70, 0x88,
		0x6a, 0x80, 0xaf, 0xd4, 0xca, 0x69, 0x59, 0x50, 0xa5, 0xd6, 0xda, 0x69, 0x19, 0x94, 0x27, 0x6f,
		0xf5, 0xb4, 0x70, 0x13, 0xf5, 0xd6, 0x4f, 0xab, 0x45, 0x4a, 0xb7, 0x82, 0xa2, 0x5b, 0x69, 0xf9,
		0x16, 0x8c, 0xae, 0x0e, 0x1f, 0xa2, 0xe9, 0x8a, 0x4b, 0x6e, 0xc9, 0xb3, 0x00, 0x44, 0xc4, 0xb0,
		0xf2, 0x16, 0x6c, 0x5c, 0xd9, 0x60, 0xf4, 0xe3, 0x74, 0x7d, 0x83, 0xa9, 0x4d, 0x57, 0x55, 0x92,
		0x79, 0xae, 0x67, 0x72, 0xd5, 0x71, 0x8c, 0x1e, 0xb3, 0x9e, 0x58, 0x68, 0xf0, 0x47, 0x8b, 0x1b,
		0x01, 0xfb, 0xef, 0xd0, 0x0d, 0x98, 0x11, 0xb0, 0x2e, 0x0b, 0x98, 0x67, 0xbb, 0xde, 0x83, 0xe1,
		0x77, 0x0d, 0x6b, 0xb1, 0x63, 0x32, 0xf7, 0x47, 0x5d, 0x7b, 0xfd, 0x41, 0x02, 0xfb, 0xad, 0x9e,
		0x11, 0x3f, 0xa1, 0x31, 0xb0, 0x02, 0xab, 0xcf, 0x38, 0x0b, 0xc2, 0xf8, 0x52, 0x6f, 0xdc, 0x32,
		0x79, 0xd4, 0x20, 0x99, 0x3f, 0x32, 0xe3, 0xea, 0xa6, 0xd1, 0x32, 0xaa, 0x9f, 0xda, 0x07, 0x45,
		0xab, 0xa9, 0x8d, 0xdd, 0x4f, 0xc1, 0xf1, 0xc7, 0xee, 0x27, 0x81, 0x5f, 0x2e, 0x4c, 0x5d, 0x6d,
		0xe2, 0xfc, 0xb6, 0x85, 0xa5, 0x4c, 0x9a, 0xe7, 0xb6, 0xd2, 0xa4, 0xa5, 0xc6, 0x6b, 0x6c, 0xa4,
		0x8c, 0xd9, 0xfb, 0x8e, 0x2c, 0x9d, 0x1b, 0x1a, 0xae, 0x67, 0x0c, 0x43, 0x66, 0x74, 0xfd, 0x20,
		0xfe, 0xd6, 0xb4, 0x99, 0xba, 0xf3, 0x92, 0x56, 0xf2, 0x07, 0x46, 0x3b, 0xb0, 0xba, 0x5d, 0xd7,
		0x8e, 0x2e, 0x70, 0xdc, 0x90, 0x07, 0xee, 0xb7, 0x21, 0x67, 0x8e, 0x61, 0xd9, 0x81, 0x1f, 0x8e,
		0x1a, 0x94, 0x87, 0x8c, 0x47, 0x96, 0x6e, 0x7c, 0x97, 0x70, 0xca, 0xd4, 0xdd, 0x79, 0xe3, 0x4f,
		0x8d, 0xd1, 0xbd, 0x2d, 0xdb, 0xf6, 0x47, 0x8d, 0xe4, 0x93, 0x67, 0xfb, 0xc1, 0xdc, 0x87, 0x47,
		0x7e, 0x60, 0xb4, 0x1f, 0xdd, 0xd0, 0xf0, 0x7c, 0x27, 0x7a, 0x5a, 0x36, 0xea, 0xd0, 0x1e, 0xbf,
		0x47, 0xdc, 0xaa, 0xdd, 0x7b, 0x5e, 0x6c, 0x28, 0x6f, 0xf8, 0x23, 0x63, 0x1a, 0x3e, 0x87, 0x9c,
		0xf5, 0x8d, 0xc7, 0xf8, 0x85, 0xfb, 0xc3, 0x90, 0x1b, 0xdf, 0x98, 0x61, 0x7d, 0x0b, 0xfd, 0xde,
		0x90, 0xa3, 0x49, 0x7a, 0xc1, 0x2c, 0xb0, 0x2e, 0x4b, 0xac, 0xdd, 0x22, 0x6b, 0xb7, 0xcc, 0x9a,
		0x2d, 0x34, 0x71, 0x1c, 0x56, 0xf8, 0x52, 0x91, 0x74, 0xc9, 0x8a, 0x0b, 0x60, 0x4b, 0x5b, 0x5f,
		0xf4, 0x2d, 0x4c, 0x5e, 0xa4, 0x5b, 0x56, 0x14, 0x75, 0x88, 0x75, 0x27, 0x35, 0xae, 0x71, 0xe8,
		0xd4, 0xc9, 0x8d, 0xab, 0x3c, 0x7c, 0x3b, 0x76, 0xe9, 0x8b, 0xf1, 0x48, 0xcf, 0xf7, 0xbf, 0x1b,
		0xb1, 0x7f, 0x5f, 0x70, 0xf9, 0xae, 0x77, 0x60, 0xd4, 0xbb, 0xc6, 0xd0, 0x0b, 0x07, 0xcc, 0x76,
		0xbb, 0x2e, 0x73, 0xde, 0x8e, 0x5c, 0x7c, 0xf4, 0x3d, 0x63, 0xe2, 0x9e, 0x47, 0xa8, 0x20, 0xfa,
		0x43, 0xcf, 0xb7, 0xad, 0xde, 0xc2, 0x6d, 0x22, 0x3f, 0x3d, 0x89, 0x8e, 0x98, 0xb3, 0xc4, 0x2d,
		0xa7, 0x2e, 0xd8, 0x33, 0xd8, 0x4f, 0x37, 0xe4, 0x91, 0xaf, 0x5f, 0x78, 0xda, 0xc4, 0x77, 0x3b,
		0xec, 0xc9, 0xb5, 0xa3, 0xaf, 0x3a, 0x77, 0xde, 0xa3, 0xf5, 0xc4, 0x0c, 0xdb, 0x0f, 0x02, 0x16,
		0x0e, 0x7c, 0x2f, 0x86, 0x08, 0x11, 0x22, 0x71, 0x59, 0xfa, 0x48, 0x19, 0x0a, 0xe4, 0xdd, 0x79,
		0x3d, 0x37, 0xe4, 0xf0, 0xfa, 0xf0, 0xfa, 0xf0, 0xfa, 0x7b, 0xe8, 0xf5, 0x35, 0x65, 0xad, 0xe6,
		0x07, 0x01, 0x8a, 0x98, 0xc5, 0x4a, 0xe8, 0xe3, 0xb7, 0x8a, 0x92, 0xed, 0xc8, 0x52, 0xb2, 0x34,
		0x15, 0x64, 0xf3, 0xab, 0x1c, 0x9b, 0x5b, 0x1b, 0x51, 0xad, 0x2d, 0x96, 0xff, 0xcd, 0x9e, 0x65,
		0x2b, 0x80, 0x95, 0x6a, 0x3f, 0xe3, 0x0d, 0x0f, 0x71, 0x02, 0x5d, 0xbd, 0x85, 0xb6, 0x6f, 0x9b,
		0xec, 0x27, 0xbf, 0xe0, 0xac, 0xc7, 0xfa, 0x8c, 0x07, 0xcf, 0xa6, 0xc5, 0xfd, 0xbe, 0x6b, 0xd3,
		0xf4, 0xd4, 0x8e, 0xf7, 0x41, 0x08, 0x9a, 0x6a, 0xeb, 0x6e, 0xa7, 0x2d, 0xa8, 0x6a, 0x6a, 0xfb,
		0x68, 0xea, 0xfb, 0x66, 0x5a, 0xf6, 0xc9, 0x08, 0xf6, 0xc5, 0x08, 0xf6, 0xc1, 0x44, 0xb5, 0x4e,
		0xd1, 0xd8, 0xe5, 0x61, 0xe4, 0x4a, 0x52, 0xdd, 0x8b, 0x05, 0xea, 0x5f, 0x8b, 0x69, 0x47, 0x76,
		0xcd, 0xc8, 0xf6, 0xcd, 0x8c, 0x33, 0x26, 0x3b, 0x53, 0xba, 0x66, 0x28, 0xdb, 0xa0, 0xad, 0x1f,
		0x82, 0x0c, 0xaf, 0x3f, 0x17, 0xa6, 0x67, 0xef, 0x8d, 0xbb, 0x22, 0xce, 0xcf, 0x5a, 0x61, 0x5d,
		0x70, 0x7b, 0x4e, 0x38, 0x3c, 0x94, 0x09, 0xff, 0xe4, 0x4f, 0xa2, 0xc8, 0x06, 0x6f, 0xca, 0xc1,
		0x99, 0x72, 0xf0, 0xa5, 0x74, 0x52, 0x84, 0x56, 0x09, 0x45, 0xb7, 0xaa, 0x54, 0xb7, 0xa4, 0x68,
		0xb6, 0x9e, 0x24, 0xf7, 0x99, 0xa5, 0xf9, 0x0e, 0x15, 0x5e, 0x43, 0xfd, 0xa8, 0x95, 0x2a, 0x4b,
		0x41, 0xc6, 0x46, 0x90, 0xb1, 0x0e, 0x24, 0x47, 0xa5, 0xf4, 0xa2, 0x77, 0xd9, 0x3d, 0xdc, 0x92,
		0xed, 0x7b, 0x8e, 0x3b, 0xca, 0xbf, 0x90, 0x9f, 0xb1, 0x49, 0x83, 0xa9, 0x89, 0x30, 0xc9, 0xa1,
		0x56, 0x4b, 0xc9, 0x50, 0xa6, 0x08, 0x29, 0x28, 0x41, 0xba, 0xd3, 0x8a, 0x54, 0x84, 0x1f, 0x39,
		0xc1, 0x47, 0x4e, 0xe8, 0x91, 0x9e, 0x46, 0xcc, 0x37, 0x85, 0x4c, 0x35, 0x7d, 0x62, 0xa2, 0x35,
		0x74, 0x47, 0x8c, 0x27, 0x22, 0x91, 0x21, 0xa5, 0x5f, 0x4d, 0xa9, 0xd5, 0x55, 0x9b, 0xda, 0x6a,
		0x53, 0x5f, 0x2d, 0x6a, 0x4c, 0x44, 0x7b, 0x16, 0x25, 0x3b, 0xca, 0xd5, 0xd0, 0xd6, 0xd5, 0x45,
		0x1f, 0xd7, 0x22, 0x19, 0x00, 0x5d, 0x86, 0x40, 0xbb, 0x41, 0xd0, 0x6e, 0x18, 0xb4, 0x1a, 0x08,
		0x1a, 0x43, 0x41, 0x64, 0x30, 0xd2, 0x37, 0x45, 0x72, 0x4e, 0xc2, 0x79, 0x1d, 0x1c, 0x24, 0x1d,
		0xf6, 0x76, 0x2b, 0x5b, 0xc6, 0xf5, 0x06, 0x43, 0x6e, 0xba, 0x1e, 0x67, 0x41, 0xd7, 0xb2, 0x59,
		0xa8, 0xc1, 0xba, 0xcf, 0xdf, 0x81, 0xd6, 0xd6, 0x1f, 0xc1, 0xd6, 0xc3, 0xd6, 0xc3, 0xd6, 0x53,
		0xbc, 0x29, 0x15, 0x48, 0x5c, 0x65, 0x5c, 0xe8, 0x57, 0xd7, 0x0a, 0x1b, 0x43, 0xbd, 0xc6, 0x68,
		0x4d, 0x8d, 0x36, 0x93, 0xa3, 0xd3, 0xf4, 0xe8, 0x37, 0x41, 0xba, 0x4d, 0x51, 0x6e, 0x26, 0x29,
		0x37, 0xd3, 0x94, 0x8b, 0x89, 0xa2, 0x35, 0x55, 0xc4, 0x26, 0x4b, 0x9b, 0xe9, 0xd2, 0x11, 0xef,
		0xea, 0x8f, 0x7f, 0x35, 0xc7, 0xc3, 0xb9, 0x19, 0xb0, 0x3c, 0x0c, 0x59, 0x7e, 0x06, 0x2d, 0x2f,
		0xc3, 0x96, 0xbb, 0x81, 0xcb, 0xdd, 0xd0, 0xe5, 0x6a, 0xf0, 0xf4, 0x18, 0x3e, 0x4d, 0x06, 0x50,
		0x5f, 0xbc, 0x9e, 0x63, 0xfc, 0x9e, 0x47, 0x3c, 0x9f, 0x5f, 0x7c, 0xaf, 0x7f, 0x1d, 0xe9, 0xa8,
		0xe3, 0x36, 0xca, 0x05, 0xd5, 0xee, 0xf2, 0x28, 0x8e, 0xf1, 0xe7, 0x0c, 0xd7, 0x17, 0xbd, 0x5e,
		0x19, 0x5e, 0x0f, 0x5e, 0x0f, 0x5e, 0xaf, 0x00, 0x5e, 0x4f, 0x17, 0xfc, 0xcf, 0x23, 0x0c, 0xc8,
		0x2f, 0x1c, 0xc8, 0x29, 0x2c, 0xc8, 0x2d, 0x3c, 0xc8, 0xd3, 0x60, 0xe6, 0x6f, 0x38, 0xf3, 0x36,
		0xa0, 0x1b, 0x33, 0xa4, 0x1b, 0x33, 0xa8, 0x1b, 0x31, 0xac, 0x7a, 0x0d, 0xac, 0x66, 0x43, 0x9b,
		0x5f, 0x98, 0xb1, 0x04, 0x31, 0xc6, 0x85, 0x45, 0x73, 0xd0, 0xb7, 0x31, 0x7c, 0x3c, 0x7f, 0xb5,
		0x9d, 0xf3, 0xaf, 0x71, 0xee, 0x4b, 0xfa, 0xb8, 0xfc, 0xd5, 0xee, 0x50, 0x13, 0xab, 0x0f, 0xaf,
		0xa8, 0xc7, 0x2b, 0xba, 0x5d, 0x38, 0xc5, 0x1d, 0x74, 0x8a, 0x6e, 0x17, 0x3e, 0xb1, 0x68, 0x3e,
		0x51, 0x3f, 0x05, 0xb7, 0xe0, 0x14, 0xcf, 0x72, 0xb8, 0xd7, 0xf4, 0x61, 0x78, 0xb7, 0x7b, 0x31,
		0x49, 0x1d, 0x99, 0xff, 0x20, 0xf9, 0x9d, 0xee, 0x74, 0xfb, 0x6e, 0x39, 0xeb, 0x70, 0xf8, 0x6d,
		0x03, 0xfe, 0x7a, 0xe6, 0xae, 0x70, 0xd9, 0x70, 0xd9, 0x70, 0xd9, 0x70, 0xd9, 0x70, 0xd9, 0x70,
		0xd9, 0xf1, 0x07, 0x5f, 0x27, 0x2e, 0xfb, 0xff, 0xda, 0xc3, 0x20, 0x60, 0x1e, 0x7f, 0xfd, 0xe6,
		0xdd, 0xc1, 0xc1, 0xbb, 0xf4, 0x1b, 0x9d, 0xe4, 0x92, 0x69, 0x3f, 0x12, 0x2e, 0xf9, 0x2c, 0x95,
		0xec, 0xb0, 0x9f, 0x5b, 0xeb, 0xfd, 0xb7, 0x8a, 0x65, 0x27, 0xaa, 0x69, 0xb3, 0x1e, 0xb7, 0xd0,
		0x17, 0x1b, 0x98, 0xaf, 0x8c, 0x38, 0x57, 0x13, 0x71, 0xea, 0xc8, 0xe7, 0xe4, 0xe7, 0x77, 0xf3,
		0x99, 0xcb, 0xf3, 0x1f, 0xa8, 0x14, 0xce, 0xc9, 0x7f, 0x65, 0x14, 0x3b, 0x81, 0x2b, 0x29, 0xdc,
		0x43, 0xbe, 0xf7, 0x41, 0xdb, 0x6d, 0x61, 0x41, 0x3a, 0x79, 0xf7, 0x85, 0xc5, 0x3b, 0xe4, 0xd0,
		0x8d, 0x61, 0xe1, 0xa6, 0xf4, 0xdd, 0x19, 0x56, 0xdf, 0x82, 0xac, 0x5b, 0x83, 0xee, 0x25, 0xaa,
		0xd9, 0xfc, 0x6d, 0x8d, 0xd9, 0x2b, 0x69, 0x49, 0x3b, 0x59, 0x5b, 0x6a, 0xe7, 0x9a, 0xfd, 0xe4,
		0xbf, 0xf9, 0x83, 0xcf, 0xd1, 0x93, 0xdf, 0x5f, 0x8e, 0x9f, 0xf6, 0xbe, 0x1e, 0x3d, 0x5c, 0x3d,
		0x7d, 0xb6, 0xdd, 0xee, 0x7c, 0x43, 0x75, 0xbe, 0x55, 0xcf, 0x4a, 0x2e, 0xec, 0x0a, 0xde, 0xa5,
		0x03, 0x5b, 0xb4, 0x09, 0x5a, 0x5a, 0x12, 0xb2, 0xb4, 0x1d, 0xcd, 0x2a, 0xe3, 0x68, 0xd6, 0x16,
		0xf1, 0x23, 0x38, 0x9a, 0x55, 0xe0, 0xa3, 0x59, 0x4e, 0x68, 0x0f, 0xf4, 0x9d, 0xc7, 0x8a, 0xa5,
		0xeb, 0x39, 0x84, 0x75, 0x88, 0x43, 0x58, 0x38, 0x84, 0x55, 0x40, 0x32, 0x16, 0x87, 0xb0, 0xf4,
		0xb1, 0xa9, 0x3a, 0xed, 0xca, 0xb4, 0x6d, 0xd1, 0x11, 0x4a, 0xeb, 0xe9, 0xce, 0x3f, 0xfe, 0x4f,
		0x23, 0x0b, 0xa7, 0xb3, 0x5b, 0x7f, 0x7a, 0x93, 0x71, 0x67, 0x77, 0xdd, 0x1b, 0x6b, 0x79, 0xf5,
		0x76, 0x9f, 0xac, 0x58, 0xdd, 0x3d, 0xde, 0x35, 0x29, 0xf1, 0x3c, 0xf7, 0x94, 0xdf, 0x12, 0x38,
		0x3d, 0xc6, 0x1a, 0x28, 0x84, 0x5b, 0xd0, 0x27, 0xb5, 0x53, 0x68, 0xf7, 0x05, 0xa6, 0x58, 0xe2,
		0xa6, 0xbb, 0xc1, 0x14, 0xbf, 0x2a, 0xe0, 0x9a, 0xd4, 0x71, 0xe6, 0x44, 0xdf, 0x19, 0x13, 0x84,
		0x67, 0x08, 0xcf, 0x10, 0x9e, 0xed, 0x79, 0x78, 0x36, 0x74, 0x3d, 0x7e, 0x5a, 0xd1, 0x18, 0xa0,
		0x9d, 0x23, 0x40, 0x43, 0x80, 0x86, 0x00, 0x6d, 0x33, 0x01, 0x5a, 0x3e, 0x88, 0x12, 0x21, 0xdb,
		0x2e, 0x87, 0x6c, 0x85, 0x04, 0xda, 0x9a, 0x3a, 0xbe, 0x2f, 0xb8, 0x47, 0x2d, 0x9d, 0xdf, 0x01,
		0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x35, 0x67, 0x97, 0xeb, 0xcc, 0x26, 0x9f, 0xae, 0xc1,
		0x34, 0xfd, 0xbf, 0xb9, 0x5c, 0x1f, 0x3d, 0xe5, 0x99, 0x90, 0xe3, 0x25, 0x26, 0xb7, 0x28, 0x39,
		0x5e, 0x84, 0xb9, 0xd7, 0xbf, 0xb6, 0xbc, 0xb9, 0x03, 0x55, 0xee, 0x34, 0x2d, 0x03, 0x4e, 0xcf,
		0x78, 0xe7, 0xc2, 0x70, 0x6b, 0x60, 0xb4, 0x35, 0x30, 0xd8, 0xaa, 0x4b, 0x86, 0xd8, 0x3a, 0x14,
		0xc5, 0x2a, 0x94, 0x48, 0x12, 0x2c, 0x25, 0x53, 0x91, 0x4b, 0x5b, 0xd5, 0xd8, 0xfa, 0xd7, 0xee,
		0x35, 0xb6, 0xce, 0xbe, 0x62, 0x72, 0x6b, 0x76, 0x2d, 0xd1, 0x78, 0x50, 0x61, 0xdb, 0x47, 0x7d,
		0x7b, 0x47, 0x31, 0x8a, 0x44, 0xe7, 0xba, 0x7c, 0xa2, 0x39, 0x74, 0xae, 0x23, 0x8c, 0xaa, 0x08,
		0xa3, 0x27, 0x8a, 0x28, 0x89, 0xae, 0x22, 0x6d, 0x3e, 0xf6, 0x6a, 0x6c, 0x65, 0x43, 0x75, 0xb3,
		0x35, 0x11, 0x85, 0xbe, 0x9b, 0xb0, 0x5e, 0x7b, 0x61, 0xbd, 0x94, 0xfb, 0x6e, 0x8e, 0x75, 0x86,
		0xae, 0xed, 0x66, 0x2a, 0x11, 0x5d, 0x37, 0xf5, 0x2b, 0x29, 0xb5, 0xb2, 0x6a, 0x53, 0x5a, 0x6d,
		0xca, 0xab, 0x45, 0x89, 0x8b, 0x41, 0xcc, 0xd0, 0x75, 0xdd, 0x8c, 0x8b, 0x5c, 0x68, 0x68, 0xcd,
		0x16, 0x89, 0x45, 0xef, 0xcd, 0xe2, 0x98, 0x01, 0x5d, 0xe6, 0x40, 0xbb, 0x59, 0xd0, 0x6e, 0x1e,
		0xb4, 0x9a, 0x09, 0x1a, 0x73, 0x41, 0x64, 0x36, 0xe8, 0x22, 0x1b, 0x8d, 0x91, 0x8e, 0x8e, 0xc8,
		0x27, 0x43, 0x24, 0x44, 0x57, 0xec, 0x07, 0xa7, 0xb9, 0xf3, 0xc5, 0x71, 0x8b, 0x86, 0x1d, 0xa7,
		0xb9, 0x61, 0xd8, 0xf7, 0xd3, 0xb0, 0x6b, 0x68, 0xb4, 0x49, 0x89, 0x0f, 0xb5, 0xe2, 0x44, 0x4d,
		0x78, 0x51, 0x1b, 0x6e, 0xd4, 0x69, 0x66, 0xf4, 0x9b, 0x1b, 0xdd, 0x66, 0x27, 0x37, 0xf3, 0x93,
		0x9b, 0x19, 0xca, 0xc5, 0x1c, 0xd1, 0x9a, 0x25, 0x62, 0xf3, 0xa4, 0x0f, 0x7f, 0xe6, 0x80, 0x43,
		0x75, 0xe2, 0xd1, 0x65, 0xb8, 0x74, 0x45, 0xca, 0xd2, 0x64, 0xf3, 0x91, 0x1e, 0xb9, 0xd2, 0x2f,
		0x1e, 0xca, 0x64, 0xda, 0x1f, 0xcc, 0x7d, 0x78, 0xe4, 0xfa, 0x7c, 0x51, 0x22, 0x1f, 0xce, 0x08,
		0xce, 0x08, 0xce, 0x08, 0xce, 0x88, 0x70, 0xbd, 0xe3, 0xf4, 0xda, 0xc2, 0x7f, 0x38, 0xbd, 0x96,
		0xed, 0x3e, 0x38, 0xbd, 0x26, 0xb5, 0x04, 0x70, 0x7a, 0x6d, 0x5b, 0x57, 0x05, 0x4e, 0xaf, 0xed,
		0x10, 0x1d, 0xb5, 0x3b, 0x47, 0x05, 0x56, 0x85, 0x5f, 0x38, 0x27, 0x30, 0x7d, 0x4e, 0x80, 0x80,
		0xcd, 0xc3, 0x51, 0x01, 0x1c, 0x15, 0xd8, 0x62, 0xab, 0xb0, 0x89, 0x73, 0x02, 0xc9, 0x2f, 0x38,
		0x25, 0xb0, 0x25, 0x8b, 0xa5, 0xc8, 0x39, 0xb7, 0x6a, 0xdb, 0xc6, 0x24, 0xdb, 0xc4, 0x64, 0xb9,
		0xb6, 0x65, 0xe4, 0xda, 0x6a, 0xa4, 0xae, 0x90, 0x6b, 0x3b, 0x79, 0x72, 0xe5, 0x5c, 0xdb, 0x6f,
		0x96, 0xfd, 0x7d, 0x38, 0x30, 0x89, 0xeb, 0x45, 0xa4, 0xab, 0x70, 0xb9, 0x78, 0x9a, 0x2c, 0xdc,
		0x43, 0x64, 0xe1, 0xe6, 0xa8, 0xc6, 0xda, 0xd4, 0x59, 0x9b, 0x5a, 0x6b, 0x51, 0xef, 0x62, 0x84,
		0x3d, 0x64, 0xcc, 0xb1, 0x86, 0x6d, 0x4b, 0xca, 0x6d, 0xca, 0xc5, 0x6d, 0x49, 0x2d, 0x05, 0x14,
		0x14, 0x20, 0xa8, 0x82, 0x7f, 0xb5, 0xfd, 0x9e, 0x1f, 0xd0, 0x99, 0xda, 0x91, 0x38, 0x98, 0x56,
		0x98, 0x56, 0x98, 0xd6, 0x42, 0x99, 0x56, 0xb2, 0x4d, 0x38, 0xc2, 0x4d, 0x37, 0xe2, 0x4d, 0x36,
		0x42, 0x86, 0x55, 0xc7, 0x26, 0x9a, 0xae, 0x4d, 0x33, 0xed, 0xdb, 0x21, 0xfa, 0xb6, 0x3f, 0x28,
		0xf3, 0x63, 0x74, 0x6c, 0x7a, 0xe5, 0xb8, 0xc9, 0xb5, 0xcd, 0xb3, 0x58, 0x90, 0x4d, 0x80, 0xce,
		0x16, 0xc2, 0x2f, 0x82, 0x5a, 0xe4, 0x74, 0xb5, 0xc7, 0x01, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00,
		0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x76, 0x19, 0x78, 0xcd, 0x52, 0x78, 0x66,
		0xb2, 0xdd, 0x4c, 0x5c, 0xe9, 0x63, 0x5a, 0x38, 0xa0, 0x19, 0xa0, 0x19, 0xa0, 0x59, 0xa1, 0xa0,
		0x59, 0xc8, 0x03, 0xd7, 0x7b, 0xa0, 0xdc, 0x6d, 0x38, 0xdf, 0x42, 0x4b, 0x38, 0x08, 0xfc, 0x87,
		0xc0, 0xea, 0xf7, 0x99, 0x63, 0x52, 0x46, 0xa3, 0xb3, 0x62, 0x61, 0xfd, 0x60, 0xfd, 0x60, 0xfd,
		0x10, 0x98, 0x22, 0x30, 0x45, 0x60, 0x8a, 0xc0, 0x14, 0x81, 0xe9, 0x8e, 0x07, 0xa6, 0xc8, 0x09,
		0xce, 0x94, 0x13, 0xac, 0x70, 0x86, 0x44, 0x22, 0x1f, 0xf8, 0x95, 0xc6, 0xc9, 0x90, 0xee, 0x15,
		0x51, 0xaa, 0xfd, 0x8c, 0x75, 0x5b, 0xdc, 0xe1, 0x49, 0xe6, 0x28, 0x4f, 0x81, 0x39, 0xdf, 0x36,
		0xd9, 0x4f, 0x7e, 0xc1, 0x59, 0x8f, 0xf5, 0x19, 0x0f, 0x9e, 0x4d, 0x8b, 0xfb, 0x7d, 0xd7, 0x96,
		0x4d, 0x5c, 0x9e, 0x45, 0x73, 0xb1, 0x45, 0x91, 0x5d, 0xd1, 0x53, 0xf0, 0xad, 0xa4, 0x79, 0xa2,
		0x3b, 0x82, 0xf3, 0xa5, 0x74, 0x40, 0x47, 0xfd, 0x40, 0x8e, 0x96, 0x03, 0x38, 0x04, 0x07, 0x6e,
		0x08, 0x0e, 0xd8, 0x88, 0xaa, 0x9c, 0xa2, 0xdd, 0xcb, 0xdf, 0xde, 0x95, 0xa4, 0x4e, 0x24, 0x08,
		0x9d, 0x86, 0x11, 0xd3, 0x96, 0xec, 0x9a, 0x92, 0xed, 0x9b, 0x19, 0x67, 0x50, 0x76, 0xe6, 0x72,
		0x98, 0xb1, 0x6c, 0xe3, 0xb7, 0x7e, 0x34, 0x32, 0x8c, 0x84, 0x44, 0x81, 0x77, 0xe9, 0x82, 0xee,
		0x82, 0x87, 0x4a, 0x84, 0x89, 0x12, 0x19, 0x42, 0x44, 0x9e, 0xf8, 0x90, 0x25, 0x38, 0x94, 0x89,
		0x0c, 0x65, 0xc2, 0x42, 0x89, 0x98, 0xa0, 0xd5, 0x41, 0xd1, 0x43, 0x1b, 0xf2, 0x05, 0xd1, 0x55,
		0x0b, 0xa0, 0x4b, 0x9e, 0x88, 0x92, 0x66, 0xfb, 0x54, 0xd8, 0x3d, 0x75, 0x36, 0x4f, 0x95, 0xbd,
		0x23, 0x63, 0xeb, 0xc8, 0xd8, 0x39, 0x12, 0x36, 0x4e, 0x2f, 0x7a, 0x97, 0x3d, 0xc1, 0xa4, 0x58,
		0x20, 0x92, 0xa4, 0x10, 0x24, 0x5a, 0x0b, 0x51, 0xaa, 0x0f, 0xb9, 0x1a, 0x91, 0xab, 0x13, 0xa9,
		0x5a, 0x6d, 0x86, 0xb1, 0xd8, 0x83, 0xd6, 0x42, 0xf2, 0x65, 0x09, 0x73, 0xea, 0x86, 0xe6, 0x71,
		0x16, 0x74, 0x2d, 0x9b, 0x99, 0xd1, 0xf0, 0x11, 0x18, 0xb0, 0x69, 0x71, 0xe8, 0x32, 0x14, 0x29,
		0xa4, 0xdb, 0x85, 0x1d, 0x93, 0xb0, 0x63, 0x6e, 0x77, 0x6f, 0xce, 0x3d, 0xd3, 0x54, 0xa9, 0x27,
		0xad, 0x4e, 0x4f, 0xde, 0x5d, 0xa8, 0x5c, 0xcc, 0xad, 0x76, 0xb7, 0x8b, 0x9d, 0x76, 0x0a, 0xc1,
		0x84, 0xca, 0xab, 0xa6, 0xc4, 0x8a, 0xca, 0x4c, 0xa6, 0xd4, 0x8b, 0x1e, 0x56, 0x47, 0x7f, 0xa1,
		0xb1, 0x68, 0xf4, 0x18, 0x2a, 0x8c, 0x31, 0xd0, 0x65, 0x14, 0xb4, 0x1b, 0x07, 0xed, 0x46, 0x42,
		0xa7, 0xb1, 0xa0, 0x31, 0x1a, 0x44, 0xc6, 0x83, 0x2e, 0xc0, 0xd1, 0x18, 0xf0, 0xe8, 0x08, 0x80,
		0x56, 0x06, 0x44, 0xef, 0xe2, 0x69, 0xbe, 0x48, 0x0d, 0x56, 0x38, 0xff, 0x41, 0xf2, 0x7b, 0xbc,
		0xc1, 0xb1, 0x4b, 0xfd, 0x87, 0x86, 0xdf, 0x34, 0xda, 0xff, 0x19, 0xe9, 0x70, 0x01, 0x70, 0x01,
		0x70, 0x01, 0x70, 0x01, 0x5b, 0xeb, 0x02, 0xbe, 0x4e, 0x5c, 0xc0, 0xff, 0xb5, 0x87, 0x41, 0xc0,
		0x3c, 0xfe, 0xfa, 0xcd, 0xbb, 0x83, 0x83, 0x77, 0xe9, 0x37, 0x3a, 0xc9, 0x25, 0xd3, 0x76, 0x2f,
		0x5c, 0xf2, 0x59, 0x2a, 0xb9, 0x48, 0xdd, 0xec, 0x50, 0x64, 0x34, 0xdb, 0x0e, 0xfc, 0x54, 0x6d,
		0xe1, 0x19, 0x36, 0x91, 0xa2, 0xd2, 0x30, 0x52, 0xf9, 0xb4, 0x4f, 0x93, 0x0a, 0xd7, 0x99, 0x3d,
		0xc9, 0xe5, 0xbe, 0x3e, 0xbe, 0xe7, 0x2d, 0xeb, 0x16, 0x9a, 0x5f, 0x1f, 0x98, 0xae, 0x67, 0xba,
		0x03, 0x02, 0x6a, 0x7d, 0x2c, 0x09, 0xac, 0x3a, 0xb6, 0x07, 0xe5, 0x91, 0xd6, 0x3e, 0xd5, 0x13,
		0x05, 0xaf, 0x9e, 0x6b, 0x3c, 0x85, 0x23, 0x6c, 0x38, 0xc2, 0x96, 0x83, 0x5a, 0xa7, 0x82, 0x9c,
		0x90, 0xab, 0x78, 0xd6, 0x95, 0xcb, 0x37, 0x91, 0x0b, 0x42, 0xa5, 0x38, 0x86, 0x00, 0x8c, 0xca,
		0x46, 0x0c, 0xc5, 0xbe, 0x51, 0x2a, 0xee, 0xc0, 0xb4, 0x1c, 0x27, 0x60, 0x61, 0xa8, 0x83, 0x55,
		0x79, 0x4f, 0x28, 0x33, 0x19, 0x03, 0xda, 0xb6, 0x74, 0x1a, 0x9b, 0xff, 0xb9, 0x83, 0xa7, 0x8a,
		0x86, 0xb1, 0x5d, 0x18, 0xe3, 0x73, 0x3d, 0xed, 0x68, 0x39, 0x0b, 0x3c, 0x6d, 0x5d, 0x00, 0x4b,
		0xaf, 0xbf, 0x1e, 0x9a, 0xef, 0x3b, 0xff, 0x7c, 0x3d, 0x32, 0xdf, 0x77, 0x46, 0x3f, 0x1e, 0xc5,
		0xff, 0xfc, 0x5d, 0xfe, 0xf5, 0x4f, 0xf9, 0xeb, 0xa1, 0x59, 0x49, 0x3e, 0x2d, 0x9f, 0x7c, 0x3d,
		0x34, 0x4f, 0x3a, 0x6f, 0x5e, 0xdf, 0xdd, 0x1d, 0x88, 0x5e, 0xf3, 0xe6, 0xef, 0xe3, 0x5f, 0xf4,
		0x3d, 0x2d, 0x3b, 0x3a, 0x86, 0xbb, 0xd9, 0xaa, 0xff, 0xa9, 0x7d, 0xcc, 0xff, 0xf3, 0x3a, 0xaf,
		0x51, 0x7f, 0xf3, 0xaf, 0x52, 0xd1, 0x1b, 0xaf, 0xbd, 0xdd, 0x22, 0x33, 0x72, 0x0a, 0x33, 0xb2,
		0xca, 0x8c, 0xc4, 0xab, 0xd3, 0x32, 0xbb, 0x55, 0xf3, 0x53, 0xe7, 0xef, 0xa3, 0xb7, 0x95, 0x5f,
		0x17, 0x6f, 0xfe, 0x3e, 0xfb, 0x35, 0xff, 0xe1, 0x3f, 0xcb, 0xbe, 0x76, 0xf4, 0xf6, 0xec, 0xd7,
		0xc5, 0x8a, 0xbf, 0x9c, 0xfe, 0xba, 0xc8, 0x28, 0xe3, 0xe4, 0xd7, 0xeb, 0x85, 0xaf, 0x46, 0x9f,
		0x97, 0x57, 0x5d, 0x50, 0x59, 0x71, 0xc1, 0xf1, 0xaa, 0x0b, 0x8e, 0x57, 0x5c, 0xb0, 0xf2, 0x91,
		0xca, 0x2b, 0x2e, 0x38, 0xf9, 0xf5, 0xcf, 0xc2, 0xf7, 0x5f, 0x2f, 0xff, 0xea, 0xe9, 0xaf, 0x37,
		0xff, 0xac, 0xfa, 0xdb, 0xd9, 0xaf, 0x7f, 0x2e, 0xde, 0xbc, 0x81, 0x61, 0x5d, 0x30, 0xac, 0x58,
		0x86, 0xf9, 0x2f, 0xc3, 0xe2, 0x3b, 0x9a, 0x57, 0xc5, 0x7a, 0xae, 0x82, 0x24, 0x89, 0x04, 0xb6,
		0x16, 0x1e, 0x23, 0x91, 0x0b, 0x1e, 0x03, 0x3c, 0x06, 0x78, 0x0c, 0xf0, 0x18, 0xe0, 0x31, 0xc0,
		0x63, 0x80, 0xc7, 0x00, 0x8f, 0x01, 0x1e, 0x03, 0x3c, 0x06, 0x78, 0x0c, 0x04, 0x90, 0xe0, 0x31,
		0xc0, 0x63, 0x80, 0xc7, 0x00, 0x8f, 0x41, 0x20, 0x61, 0x4f, 0xd3, 0x93, 0x93, 0x8c, 0x4c, 0x64,
		0x26, 0x17, 0x7d, 0x86, 0xf2, 0x4a, 0x4a, 0x1e, 0xd4, 0xbd, 0xfa, 0xa0, 0xc8, 0xe9, 0xc8, 0x6a,
		0x19, 0x91, 0x24, 0x99, 0x90, 0x64, 0x89, 0xc8, 0x65, 0x24, 0x22, 0x6b, 0x24, 0xfe, 0x90, 0x88,
		0x3c, 0x79, 0x72, 0xe5, 0x44, 0x64, 0xdb, 0x1f, 0x7a, 0x9c, 0x05, 0x21, 0x65, 0x83, 0xed, 0x44,
		0x62, 0xc1, 0xd2, 0x91, 0xd1, 0x51, 0xa3, 0x08, 0x6c, 0x3d, 0xd2, 0x91, 0xf3, 0x53, 0xee, 0x54,
		0x90, 0x6f, 0x73, 0xc6, 0x43, 0xb3, 0xeb, 0x07, 0x3f, 0xac, 0xc0, 0x61, 0x0e, 0xfd, 0x86, 0xde,
		0xc2, 0x1d, 0xb0, 0xb5, 0x57, 0x1c, 0xe3, 0xa0, 0xcb, 0x48, 0x68, 0x37, 0x16, 0xda, 0x8d, 0x86,
		0x56, 0xe3, 0x41, 0x1b, 0x92, 0x17, 0x7f, 0x6b, 0x2f, 0x71, 0xfc, 0x24, 0x1d, 0x7b, 0xe6, 0x0d,
		0x00, 0x21, 0x5b, 0x4c, 0xdc, 0xc1, 0x47, 0x23, 0x25, 0xaf, 0xa3, 0xa3, 0x4f, 0x2a, 0x5c, 0x53,
		0x67, 0x9f, 0x54, 0xbe, 0xee, 0xde, 0x30, 0x93, 0xe5, 0xa7, 0xab, 0x47, 0x0c, 0xb1, 0xe6, 0xcd,
		0x4e, 0xad, 0x86, 0xce, 0x3f, 0x0b, 0x53, 0xab, 0xbf, 0x03, 0xd0, 0x2e, 0xce, 0x36, 0xe8, 0x58,
		0xdd, 0xda, 0x50, 0x1a, 0x58, 0xf6, 0x77, 0xcd, 0x80, 0x74, 0xf1, 0x16, 0x40, 0xa4, 0x40, 0xa4,
		0x40, 0xa4, 0x40, 0xa4, 0x40, 0xa4, 0x40, 0xa4, 0x40, 0xa4, 0x40, 0xa4, 0x40, 0xa4, 0xbb, 0x82,
		0x48, 0x91, 0x20, 0x20, 0xbc, 0xfd, 0x3c, 0xea, 0x01, 0x41, 0xb4, 0x55, 0x63, 0x08, 0x6e, 0x46,
		0x5f, 0x8e, 0x6f, 0xbb, 0x85, 0xbd, 0xe8, 0x1d, 0x66, 0x5b, 0x83, 0x70, 0xd8, 0xb3, 0x38, 0x33,
		0x1f, 0x99, 0xe5, 0xb0, 0x80, 0x6e, 0xe7, 0x6c, 0x89, 0x6c, 0x74, 0xa5, 0xcf, 0x2f, 0x28, 0xc1,
		0x1e, 0x1a, 0xba, 0xd2, 0x67, 0x58, 0x6f, 0xcc, 0x1b, 0x6b, 0xa9, 0xeb, 0x7b, 0x89, 0x9e, 0x9a,
		0x3c, 0xba, 0x0d, 0x5d, 0xa3, 0xfa, 0xa3, 0x0a, 0x81, 0xac, 0x9a, 0x37, 0xec, 0xd3, 0x2d, 0xe6,
		0xb6, 0xdf, 0xe2, 0x81, 0xeb, 0x3d, 0xd0, 0x46, 0x6a, 0x87, 0xd1, 0x88, 0x7e, 0xbe, 0xad, 0x51,
		0x06, 0x68, 0x47, 0x91, 0xcc, 0xfa, 0xcd, 0xef, 0xa4, 0x51, 0x5f, 0x39, 0x11, 0x7a, 0x4a, 0x29,
		0xf4, 0x38, 0x12, 0x7a, 0x75, 0xd3, 0x68, 0x51, 0x0a, 0xad, 0x44, 0x42, 0x7f, 0xff, 0xb3, 0x51,
		0xbd, 0x2e, 0x15, 0x2b, 0xcc, 0xf7, 0xeb, 0xb1, 0x61, 0x21, 0x5c, 0x3d, 0xd1, 0xc2, 0x21, 0x05,
		0xf6, 0xa3, 0x65, 0xa3, 0x9c, 0x74, 0x32, 0x2f, 0xf2, 0x54, 0xbd, 0x1a, 0xde, 0x6c, 0xac, 0x16,
		0x2d, 0x99, 0x0b, 0xe3, 0x98, 0x50, 0xe4, 0x68, 0xc1, 0x5c, 0x18, 0x95, 0xdd, 0x00, 0xf5, 0x1b,
		0xc1, 0x86, 0x13, 0xcf, 0x40, 0x8f, 0x0d, 0x97, 0xc8, 0x06, 0x36, 0x04, 0x36, 0x04, 0x36, 0x04,
		0x36, 0x04, 0x36, 0x04, 0x36, 0x04, 0x36, 0x04, 0x36, 0x04, 0x36, 0x2c, 0x30, 0x36, 0x54, 0x6b,
		0xc3, 0xbd, 0xe0, 0x68, 0x54, 0xda, 0x71, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x6a, 0x42, 0x80,
		0x43, 0xd7, 0xe3, 0x24, 0xf9, 0x06, 0x84, 0x79, 0x06, 0xc4, 0xf9, 0x05, 0x84, 0x4e, 0x5a, 0x47,
		0x3e, 0x81, 0xae, 0x3c, 0x02, 0xed, 0x3b, 0xca, 0xfa, 0x76, 0x92, 0x7f, 0x51, 0xe2, 0x0b, 0x0d,
		0x79, 0x02, 0x39, 0xe6, 0x07, 0x6c, 0xf3, 0x2c, 0x16, 0x04, 0x7e, 0x75, 0xb6, 0x11, 0x7e, 0x4d,
		0xca, 0x8e, 0xd1, 0x61, 0x30, 0xaa, 0x52, 0x66, 0x00, 0x62, 0x00, 0x62, 0x00, 0x62, 0xc4, 0x40,
		0x8c, 0xb4, 0xd0, 0x20, 0x65, 0x81, 0x41, 0xda, 0xc2, 0x82, 0x5a, 0x4a, 0x34, 0x6a, 0x29, 0x24,
		0xa8, 0xa3, 0xf2, 0x97, 0xb6, 0x8a, 0x5f, 0x5b, 0x58, 0x30, 0xb0, 0x43, 0x39, 0xac, 0x3a, 0xeb,
		0x58, 0x6d, 0x69, 0x61, 0xc0, 0x4e, 0x91, 0x18, 0x53, 0x3d, 0x6a, 0x7f, 0x0a, 0xb5, 0x47, 0x65,
		0xb5, 0xad, 0x2f, 0xf0, 0xb7, 0x75, 0x86, 0x10, 0xcb, 0x6d, 0xab, 0x0b, 0xf9, 0x75, 0x10, 0x97,
		0x4b, 0x6b, 0x40, 0x2f, 0x1c, 0x98, 0x49, 0xce, 0x38, 0x51, 0x54, 0x9e, 0x4a, 0x44, 0x4c, 0x8e,
		0x98, 0x1c, 0x31, 0x79, 0xa1, 0x62, 0xf2, 0x70, 0x94, 0x25, 0x42, 0x18, 0x8f, 0x9f, 0x6f, 0xa1,
		0xcd, 0xeb, 0x5b, 0x36, 0x3d, 0x19, 0x39, 0x2d, 0x14, 0x96, 0x0f, 0x96, 0x0f, 0x96, 0xaf, 0x50,
		0x96, 0x8f, 0x4e, 0x3d, 0xa9, 0x63, 0x6a, 0xf2, 0x58, 0xba, 0x34, 0x0d, 0xba, 0xe7, 0xb1, 0x7c,
		0xf9, 0xd7, 0x9b, 0xbf, 0x4f, 0x08, 0x48, 0xaf, 0x0e, 0xc5, 0x8b, 0xeb, 0x88, 0xed, 0x4a, 0xff,
		0x59, 0xff, 0xfa, 0x04, 0xb1, 0xc7, 0x36, 0x62, 0xfd, 0xf9, 0xc3, 0xa9, 0x74, 0xce, 0x6f, 0x41,
		0x32, 0x3c, 0x60, 0x46, 0x0f, 0xe8, 0xb9, 0xf0, 0x81, 0x7a, 0x7c, 0xa0, 0xe7, 0xc2, 0x0b, 0xae,
		0xd3, 0x53, 0x33, 0x60, 0x5d, 0x4a, 0x77, 0x78, 0x46, 0xe3, 0x0e, 0x93, 0x93, 0xf7, 0xb6, 0xe9,
		0x31, 0x1e, 0x3d, 0xea, 0xc5, 0xe2, 0x41, 0xfb, 0x17, 0xfe, 0x38, 0xfd, 0xb7, 0xd1, 0xc9, 0xfd,
		0x99, 0x6f, 0x47, 0x43, 0xb1, 0x85, 0xc6, 0xdb, 0x0f, 0xdc, 0x07, 0xd7, 0x33, 0x07, 0x81, 0xcf,
		0x7d, 0xdb, 0xef, 0xd1, 0xd9, 0xee, 0x79, 0xc1, 0x30, 0xdd, 0x08, 0x5e, 0x10, 0xbc, 0x14, 0xca,
		0x6c, 0xbb, 0x0e, 0xf3, 0xb8, 0xcb, 0x9f, 0x89, 0xad, 0x35, 0x41, 0x66, 0x5f, 0xa9, 0x9e, 0x3c,
		0xda, 0x07, 0x2b, 0x64, 0xf4, 0x45, 0x04, 0xeb, 0xd7, 0xad, 0x76, 0xb5, 0xd1, 0xb8, 0xbf, 0xb9,
		0x6d, 0xb6, 0x9b, 0x97, 0xcd, 0xc6, 0x7d, 0xfb, 0xaf, 0x1b, 0xaa, 0xe3, 0x48, 0xa3, 0x9c, 0xc7,
		0x90, 0x74, 0x53, 0x89, 0x38, 0x2b, 0x73, 0x3c, 0x0c, 0x1f, 0x3e, 0xdf, 0x94, 0x8a, 0x98, 0x8b,
		0xaa, 0xe9, 0x75, 0x3f, 0xd6, 0x6f, 0x6b, 0x97, 0xed, 0xc6, 0x5f, 0xf7, 0x97, 0xcd, 0xeb, 0xeb,
		0xda, 0x65, 0xbb, 0xf6, 0x71, 0x9f, 0xde, 0xfe, 0xf3, 0x6d, 0xfd, 0x43, 0x7d, 0x9f, 0x5e, 0xb8,
		0xfe, 0xf9, 0x6a, 0xaf, 0x96, 0x77, 0xbd, 0x55, 0x6f, 0xed, 0xd3, 0xfb, 0x36, 0x9a, 0x97, 0xd5,
		0xc6, 0xde, 0xbd, 0xf0, 0x7d, 0xf5, 0xf3, 0xe7, 0xdb, 0xda, 0xe7, 0x6a, 0xbb, 0xb6, 0x4f, 0xaf,
		0xde, 0x6c, 0xdd, 0x7c, 0xda, 0xb7, 0xf7, 0x3d, 0xde, 0xa7, 0x17, 0xbe, 0xb9, 0xac, 0xed, 0x95,
		0xb1, 0xbe, 0xa9, 0x5f, 0xed, 0xd3, 0xeb, 0xb6, 0xda, 0xd5, 0x76, 0xfd, 0xb2, 0x68, 0x85, 0x8e,
		0x3b, 0x7b, 0x79, 0x62, 0x79, 0xe0, 0x0f, 0x4c, 0xee, 0x0f, 0xcc, 0x9e, 0xf5, 0x8d, 0x11, 0xf2,
		0x3d, 0xb3, 0x62, 0x55, 0x3b, 0x24, 0xb1, 0xae, 0x35, 0xec, 0x71, 0x92, 0x20, 0xaa, 0x14, 0x9f,
		0xd6, 0x52, 0x5b, 0x7b, 0x1d, 0xb0, 0x57, 0x60, 0xaf, 0xc0, 0x5e, 0x15, 0x8a, 0xbd, 0xfa, 0xe6,
		0xfb, 0x3d, 0x66, 0x79, 0x94, 0xcc, 0xd5, 0xd1, 0x36, 0x9a, 0xf3, 0xc0, 0x7f, 0x08, 0xac, 0x7e,
		0x9f, 0x39, 0x26, 0x71, 0x2d, 0x8a, 0x05, 0xc9, 0x30, 0x82, 0x30, 0x82, 0x30, 0x82, 0x85, 0x32,
		0x82, 0x28, 0x4b, 0x21, 0xf2, 0x60, 0x28, 0x4b, 0x31, 0xb3, 0x86, 0x50, 0x96, 0x02, 0x65, 0x29,
		0x74, 0xc7, 0xd8, 0xfb, 0x79, 0xfc, 0x65, 0x30, 0x0c, 0x1f, 0x99, 0x63, 0xf6, 0x07, 0xbd, 0x70,
		0x14, 0x10, 0x9b, 0x21, 0xb7, 0xec, 0xef, 0x84, 0xd8, 0x6c, 0xc5, 0x0d, 0x00, 0xd1, 0x00, 0xd1,
		0x00, 0xd1, 0x0a, 0x05, 0xd1, 0x26, 0x3a, 0x8a, 0x82, 0x15, 0xe2, 0xe0, 0xf6, 0xb8, 0xac, 0xe1,
		0xcc, 0xfa, 0x19, 0x7a, 0xbc, 0x11, 0x0b, 0x4f, 0x11, 0xd5, 0x29, 0xda, 0x7e, 0xe5, 0x87, 0x8e,
		0xb5, 0xa2, 0xe4, 0xc5, 0xb9, 0x3d, 0xac, 0x9c, 0x9f, 0x9c, 0xa1, 0xaf, 0x5b, 0x3e, 0xc0, 0x99,
		0x5e, 0xda, 0xae, 0x17, 0x3a, 0x61, 0xde, 0xb0, 0xcf, 0x82, 0x51, 0xcb, 0x36, 0x0d, 0x75, 0x4e,
		0x2a, 0x84, 0x32, 0x49, 0xcb, 0xb4, 0x4f, 0xfc, 0xb9, 0x8e, 0x72, 0xed, 0xa9, 0xf4, 0xc3, 0x71,
		0x89, 0xf5, 0xfb, 0xda, 0x9f, 0x37, 0x8d, 0xfa, 0x65, 0xbd, 0x7d, 0x7f, 0xfd, 0xa5, 0xd1, 0x28,
		0x69, 0x30, 0x67, 0x71, 0x35, 0xf7, 0xdb, 0xe6, 0x97, 0x76, 0xed, 0xf6, 0xbe, 0xda, 0xa8, 0xdd,
		0xb6, 0x75, 0xdc, 0x24, 0xad, 0xee, 0xae, 0xff, 0x7d, 0xe2, 0x9a, 0xef, 0xf5, 0x2b, 0xcd, 0x77,
		0x39, 0x8b, 0xee, 0x52, 0xbb, 0x6e, 0xdf, 0x36, 0x6f, 0xfe, 0xba, 0x6f, 0x54, 0x3f, 0xd4, 0x1a,
		0xf7, 0xf5, 0xeb, 0x8f, 0xf5, 0xcb, 0x6a, 0xbb, 0x79, 0xab, 0xe3, 0x7e, 0xe7, 0x71, 0x43, 0xc0,
		0xe6, 0xe8, 0x56, 0xa5, 0x57, 0x05, 0xf6, 0x91, 0x1a, 0xea, 0xd0, 0x4f, 0x54, 0x79, 0xc5, 0x80,
		0x93, 0xa2, 0xcc, 0xf4, 0x6e, 0xb3, 0x8b, 0x88, 0xb4, 0x1c, 0xfc, 0xe4, 0x1e, 0x8b, 0x3a, 0xae,
		0xc5, 0x1b, 0x2f, 0x53, 0x3e, 0xd2, 0x9a, 0xf9, 0x13, 0x0f, 0x31, 0x5e, 0xa4, 0xa4, 0xed, 0x9d,
		0x27, 0x21, 0xc0, 0xb4, 0xa5, 0xba, 0x30, 0x8e, 0x0a, 0xea, 0xff, 0x77, 0x84, 0xd0, 0x53, 0x0c,
		0xf0, 0x1b, 0x6e, 0xc8, 0xab, 0x9c, 0x07, 0x34, 0x41, 0xfe, 0x95, 0xeb, 0xd5, 0x7a, 0xac, 0xcf,
		0x3c, 0x2a, 0xc8, 0x1a, 0x41, 0xf9, 0x29, 0x89, 0x7a, 0x18, 0xea, 0x52, 0x33, 0x70, 0x58, 0xc0,
		0x9c, 0x0f, 0xcf, 0xf4, 0x67, 0x2b, 0x86, 0xa1, 0x72, 0x0b, 0x2b, 0x5d, 0x04, 0xdb, 0x3c, 0xc9,
		0xe6, 0x8f, 0x46, 0xc1, 0xfc, 0xf6, 0x4c, 0x89, 0x17, 0x75, 0x91, 0x6d, 0x0b, 0x84, 0x5b, 0x3c,
		0xd2, 0x45, 0x69, 0xdd, 0x41, 0xb9, 0x28, 0xbf, 0x84, 0x71, 0x87, 0xb5, 0x68, 0xe8, 0xb6, 0x90,
		0xfb, 0xe7, 0x43, 0xcf, 0x63, 0x3d, 0x33, 0x0c, 0x6c, 0x53, 0x47, 0x75, 0xea, 0xe5, 0xe2, 0xc1,
		0xfb, 0xaf, 0x1d, 0x38, 0xf0, 0xfe, 0xe0, 0xfd, 0x5f, 0x88, 0x10, 0x50, 0xa8, 0xba, 0x30, 0x44,
		0x0e, 0x0a, 0x55, 0xa3, 0x50, 0x35, 0x0a, 0x55, 0x13, 0xc7, 0x4d, 0xc4, 0xd4, 0x0a, 0x0a, 0x55,
		0xa3, 0x50, 0x35, 0x0a, 0x55, 0xef, 0x88, 0x21, 0xc4, 0x72, 0x43, 0xa1, 0xea, 0x3d, 0xcd, 0xd4,
		0x7b, 0xf2, 0x5c, 0xea, 0x93, 0x70, 0x13, 0x91, 0x88, 0xca, 0x11, 0x95, 0x23, 0x2a, 0x2f, 0x54,
		0x54, 0xce, 0x9e, 0x5c, 0xd3, 0x75, 0x08, 0x23, 0xf2, 0x33, 0x1c, 0x98, 0x10, 0x14, 0x9a, 0xe6,
		0x13, 0x21, 0xd5, 0x9e, 0x36, 0x26, 0x33, 0xf4, 0x1f, 0x98, 0x38, 0x3d, 0x3b, 0x3b, 0x2b, 0xe3,
		0x90, 0x04, 0x21, 0x68, 0xda, 0x72, 0xe8, 0xf5, 0x2a, 0xc7, 0xf5, 0x5e, 0xaa, 0x0e, 0x1f, 0x22,
		0xff, 0xc6, 0x1c, 0x25, 0x5b, 0x49, 0x04, 0xf3, 0xe2, 0xea, 0x9f, 0xee, 0x8a, 0x1a, 0xa2, 0xee,
		0xf2, 0xf2, 0xa1, 0xee, 0x85, 0xd5, 0xe5, 0x93, 0x6f, 0xfc, 0xe4, 0xe6, 0xa3, 0x3f, 0x98, 0xff,
		0x3d, 0xf9, 0x35, 0xe4, 0x16, 0x67, 0xea, 0x85, 0x14, 0x42, 0x3b, 0x70, 0x07, 0x71, 0x4e, 0xdc,
		0x85, 0x51, 0xaa, 0x3a, 0x8e, 0xd1, 0x63, 0xd6, 0x13, 0x0b, 0x0d, 0xfe, 0x68, 0x71, 0x23, 0x60,
		0xff, 0x1d, 0xba, 0x01, 0x33, 0x02, 0xd6, 0x65, 0x01, 0xf3, 0x6c, 0xd7, 0x7b, 0x30, 0xfc, 0xae,
		0x61, 0x19, 0xc9, 0xd3, 0x1b, 0xe3, 0xa7, 0x37, 0xb8, 0x6f, 0xf0, 0x47, 0x76, 0xe7, 0xf9, 0x83,
		0x24, 0xc5, 0xce, 0xea, 0x19, 0xf1, 0x13, 0x1a, 0x03, 0x2b, 0xb0, 0xfa, 0x8c, 0xb3, 0x20, 0x1c,
		0x5f, 0x3a, 0x7a, 0x0d, 0xe3, 0x87, 0xcb, 0x1f, 0x5d, 0x2f, 0xba, 0xcc, 0xa8, 0x7e, 0x6a, 0x1b,
		0x5d, 0x3f, 0x30, 0xea, 0x37, 0x4f, 0x95, 0x3b, 0x6f, 0xe8, 0xb9, 0xb6, 0x15, 0xf2, 0x03, 0x22,
		0x7c, 0x7c, 0x84, 0x72, 0xce, 0x40, 0xc8, 0xb2, 0x08, 0x79, 0xfb, 0xcb, 0x39, 0x7f, 0x74, 0x89,
		0x72, 0x59, 0xc8, 0xeb, 0xb8, 0x2f, 0x2c, 0x66, 0xe2, 0x7a, 0xee, 0xab, 0xac, 0x5c, 0xfb, 0x91,
		0x19, 0xf3, 0xb7, 0x1a, 0x5b, 0xa3, 0x1f, 0x8f, 0xae, 0xfd, 0x18, 0xdb, 0xa4, 0xd4, 0x4e, 0x85,
		0x8f, 0xfe, 0xb0, 0xe7, 0x18, 0xdf, 0x22, 0x33, 0x18, 0xfa, 0xbd, 0x27, 0xe6, 0x1c, 0xdc, 0x79,
		0x7f, 0x3c, 0xb2, 0xc8, 0x74, 0xb9, 0x61, 0x64, 0x2f, 0xbb, 0x86, 0x1b, 0x1a, 0x43, 0x2f, 0x1c,
		0x30, 0xdb, 0xed, 0xba, 0xcc, 0x79, 0x3b, 0x2b, 0xc0, 0x0d, 0xd3, 0x2b, 0x93, 0xdb, 0xdc, 0x79,
		0xd1, 0x17, 0x7a, 0xbe, 0x6d, 0xf5, 0x52, 0x13, 0x7a, 0x40, 0xf5, 0xb6, 0x34, 0xb4, 0x00, 0xb9,
		0xf9, 0xd3, 0x61, 0x06, 0x75, 0x9a, 0x43, 0x5d, 0x66, 0x51, 0xbb, 0x79, 0xd4, 0x6e, 0x26, 0x35,
		0x9b, 0x4b, 0x62, 0xec, 0x4c, 0xb4, 0x6a, 0xc9, 0xa8, 0x86, 0xb5, 0x56, 0x8f, 0xa8, 0x3a, 0xfe,
		0x02, 0x0c, 0x3a, 0xa3, 0xdd, 0xdf, 0x2a, 0x76, 0xb5, 0x7c, 0xba, 0x45, 0xf4, 0x6b, 0xab, 0x42,
		0xa7, 0x8e, 0x6c, 0xe8, 0xe4, 0x79, 0x3e, 0xb7, 0x12, 0x0f, 0x29, 0xbf, 0xc8, 0x4b, 0xa1, 0xfd,
		0xc8, 0xfa, 0xd6, 0x20, 0x5d, 0x1e, 0x03, 0xe6, 0x8d, 0xa6, 0xd7, 0x5c, 0x58, 0x01, 0x8b, 0xeb,
		0x65, 0xe1, 0x2b, 0x71, 0x34, 0x34, 0x89, 0x83, 0xd2, 0x08, 0x68, 0x14, 0xfb, 0xbc, 0xca, 0x67,
		0x58, 0xc5, 0xae, 0x10, 0xb4, 0x37, 0x91, 0x17, 0x88, 0x37, 0xb7, 0x25, 0x2a, 0x28, 0x95, 0x6a,
		0x3f, 0xb9, 0x5c, 0x21, 0x71, 0xb9, 0x09, 0x9e, 0xc9, 0x8d, 0xb5, 0x4d, 0xf6, 0x93, 0x5f, 0x70,
		0xd6, 0x63, 0x7d, 0xc6, 0x83, 0x67, 0xd3, 0xe2, 0x7e, 0xdf, 0xb5, 0x25, 0xed, 0xd6, 0x9c, 0xab,
		0x8a, 0x39, 0x18, 0xd9, 0x85, 0x3c, 0xe5, 0x93, 0x4a, 0x9a, 0xe7, 0x5a, 0x50, 0xd9, 0xd4, 0x72,
		0xcb, 0xd5, 0x73, 0xc9, 0xb5, 0xe4, 0x8e, 0xcf, 0xe4, 0x8a, 0x7b, 0xc3, 0x5e, 0x4f, 0x45, 0x44,
		0x92, 0xd9, 0x2b, 0xce, 0xc1, 0x89, 0x6a, 0x9d, 0xa2, 0xb9, 0xcb, 0xc7, 0xcc, 0x49, 0x28, 0x53,
		0x29, 0xe4, 0xc1, 0xd0, 0xe6, 0x49, 0x6b, 0xdd, 0xd2, 0xf5, 0xe8, 0x4e, 0xf5, 0xe4, 0x46, 0xf7,
		0xd5, 0x2e, 0x0f, 0xef, 0xaf, 0xd9, 0x4f, 0xfe, 0x9b, 0x3f, 0x10, 0x53, 0x8e, 0xec, 0x8a, 0x91,
		0xed, 0x9b, 0x19, 0x27, 0x4c, 0x76, 0xa2, 0xb4, 0x4e, 0x50, 0xb6, 0x91, 0x5b, 0x3f, 0x0e, 0x19,
		0xc6, 0xa0, 0x34, 0xf0, 0x7b, 0xae, 0xfd, 0x6c, 0x76, 0xfd, 0xe0, 0x87, 0x15, 0x38, 0x22, 0x87,
		0x37, 0xa7, 0x2a, 0xaf, 0xce, 0x8b, 0xc8, 0x38, 0xf6, 0x62, 0xfc, 0x99, 0x70, 0xa0, 0x28, 0x13,
		0x08, 0xca, 0xef, 0x0b, 0xcb, 0x86, 0x71, 0xca, 0x61, 0x9a, 0x72, 0x18, 0xa6, 0xb4, 0x6f, 0x4b,
		0xab, 0x8d, 0xa2, 0x5c, 0xd2, 0xe2, 0xda, 0x33, 0x99, 0xc7, 0x03, 0xf1, 0x63, 0x45, 0xab, 0x17,
		0x73, 0x22, 0x50, 0x14, 0x75, 0x49, 0x51, 0xc3, 0xd2, 0x5c, 0x88, 0x0a, 0xe7, 0xa1, 0x9e, 0x0a,
		0xa1, 0xca, 0x60, 0x90, 0x31, 0x15, 0x64, 0x8c, 0x04, 0x49, 0x2a, 0x83, 0x5e, 0x5c, 0x2f, 0x4b,
		0xbb, 0x96, 0xd4, 0xaa, 0xb4, 0x4e, 0xb2, 0x65, 0x15, 0x4a, 0xb2, 0x2a, 0x52, 0x88, 0xca, 0x94,
		0x21, 0x05, 0x45, 0x48, 0x97, 0x41, 0x44, 0x45, 0x00, 0x92, 0x13, 0x7e, 0xe4, 0x04, 0x1f, 0x69,
		0x86, 0x50, 0xbe, 0x5b, 0xbf, 0xca, 0xf4, 0x5c, 0xba, 0x5e, 0x7a, 0xcc, 0xea, 0xaa, 0x31, 0x70,
		0x14, 0x8c, 0x5b, 0xca, 0xb0, 0x1d, 0x1c, 0x8c, 0xd8, 0x8e, 0x77, 0x23, 0x85, 0xce, 0x8b, 0xf3,
		0x90, 0x0a, 0x3d, 0x2c, 0xce, 0xd4, 0x0d, 0x97, 0xca, 0xbe, 0xb6, 0xe2, 0x96, 0xef, 0xc4, 0x70,
		0x95, 0x61, 0xb8, 0x60, 0xb8, 0x72, 0x31, 0x5c, 0xaa, 0xdb, 0xb3, 0x25, 0xdb, 0x1f, 0x7a, 0x9c,
		0x05, 0x84, 0x47, 0x88, 0x53, 0x89, 0x05, 0xcb, 0xbf, 0x28, 0x23, 0x3f, 0x79, 0x83, 0x4a, 0xab,
		0x4d, 0x79, 0xb5, 0x28, 0xb1, 0x9a, 0x32, 0x2b, 0x2a, 0x35, 0x99, 0x72, 0xa7, 0x82, 0x7c, 0x9b,
		0x33, 0x1e, 0x8e, 0xc3, 0xde, 0x38, 0xc1, 0x8d, 0x38, 0xf7, 0x62, 0xe1, 0x0e, 0xc8, 0x46, 0x28,
		0x8e, 0x71, 0xd0, 0x65, 0x24, 0xb4, 0x1b, 0x0b, 0xed, 0x46, 0x43, 0xab, 0xf1, 0xa0, 0x31, 0x22,
		0x44, 0xc6, 0x84, 0x2e, 0xd4, 0x59, 0xe7, 0xf8, 0x49, 0x1a, 0x46, 0xcc, 0x1b, 0x80, 0x73, 0xd4,
		0xd4, 0x25, 0x16, 0xae, 0xa9, 0xb1, 0x44, 0x2a, 0x1f, 0x25, 0x75, 0x5f, 0x9c, 0xda, 0x5c, 0x4a,
		0xea, 0x6a, 0x6f, 0x40, 0xb1, 0x8b, 0xb3, 0xbd, 0xdb, 0xf5, 0x75, 0x0b, 0x51, 0x8b, 0x6b, 0x60,
		0xd9, 0xdf, 0x35, 0x03, 0xd2, 0xc5, 0x5b, 0x00, 0x91, 0x02, 0x91, 0x02, 0x91, 0x02, 0x91, 0x02,
		0x91, 0x02, 0x91, 0x02, 0x91, 0x02, 0x91, 0x02, 0x91, 0xee, 0x0a, 0x22, 0xdd, 0x28, 0x49, 0x4b,
		0x94, 0xfa, 0x9e, 0xca, 0xd3, 0x90, 0x7a, 0xb8, 0x90, 0xf5, 0xf4, 0x6e, 0x45, 0x1e, 0x54, 0xb2,
		0x57, 0x4c, 0xb4, 0x83, 0x63, 0x64, 0xcc, 0x28, 0xbd, 0x89, 0x1f, 0xe6, 0x53, 0xfa, 0x2c, 0xb5,
		0xe8, 0x51, 0xee, 0x2f, 0xc7, 0x0f, 0xb1, 0x85, 0x65, 0x7f, 0xe2, 0xc1, 0x34, 0xfb, 0x8c, 0x5b,
		0x8e, 0xc5, 0x2d, 0xba, 0xad, 0xb5, 0x39, 0xb9, 0x28, 0x00, 0x94, 0x5f, 0xc4, 0x82, 0x0d, 0x36,
		0x14, 0x00, 0xca, 0xb0, 0xde, 0xbe, 0xb9, 0x9e, 0x15, 0x3c, 0x13, 0x16, 0x00, 0xa2, 0xa8, 0xc8,
		0xdb, 0x60, 0xde, 0x43, 0xec, 0x4e, 0xd0, 0x32, 0xb9, 0xc8, 0x88, 0x12, 0x15, 0x80, 0xa8, 0xfb,
		0xa7, 0xa0, 0xf4, 0xcf, 0x5e, 0x56, 0x5d, 0x54, 0xcb, 0x81, 0x5e, 0xb0, 0xe9, 0x2a, 0xb9, 0xd0,
		0x00, 0x5b, 0x00, 0x5b, 0x00, 0x5b, 0x9a, 0xc0, 0xd6, 0xd0, 0xf5, 0x38, 0x09, 0xb7, 0x4b, 0xc8,
		0xe9, 0xee, 0x69, 0xb5, 0x45, 0x60, 0xad, 0xad, 0xc3, 0x5a, 0xfa, 0xb9, 0x58, 0xc0, 0xaf, 0xfd,
		0x84, 0x5f, 0x03, 0xd3, 0x09, 0xed, 0x01, 0x21, 0x00, 0x4b, 0x04, 0x02, 0x82, 0x01, 0x82, 0x01,
		0x82, 0x15, 0x0a, 0x82, 0x11, 0xe8, 0xe5, 0xb4, 0x6e, 0x9e, 0x00, 0x80, 0x01, 0x80, 0xed, 0x0b,
		0x00, 0x3b, 0x3d, 0xc6, 0x9c, 0x01, 0x6e, 0x51, 0xc0, 0xad, 0x01, 0x0d, 0x92, 0x98, 0x06, 0x5c,
		0x34, 0x27, 0x35, 0x01, 0xb9, 0x00, 0xb9, 0x00, 0xb9, 0xc8, 0x3b, 0x7f, 0x92, 0xcd, 0xe6, 0xfe,
		0x35, 0xfe, 0x24, 0xcf, 0x06, 0x46, 0xdf, 0xcf, 0x65, 0x9d, 0x29, 0xdf, 0xa5, 0x17, 0x95, 0x93,
		0xbf, 0x1e, 0x7f, 0x3d, 0x34, 0xcb, 0x9d, 0x37, 0x68, 0x08, 0xba, 0x91, 0x61, 0x47, 0xa7, 0x50,
		0x21, 0x3b, 0x71, 0xba, 0xf7, 0x76, 0x02, 0x9d, 0x1b, 0x37, 0xd4, 0xb9, 0xf1, 0xdd, 0xeb, 0xa3,
		0x48, 0xbb, 0xcf, 0x47, 0xea, 0x7e, 0xd4, 0x59, 0xb0, 0x02, 0xf1, 0xff, 0xa3, 0x9f, 0x28, 0x56,
		0x65, 0x01, 0x57, 0x25, 0xda, 0x8e, 0x16, 0x87, 0x12, 0xf0, 0xb9, 0x6f, 0xfb, 0x3d, 0x62, 0x52,
		0x20, 0x11, 0x0a, 0x5a, 0x00, 0xb4, 0x00, 0x68, 0x81, 0xe2, 0xd1, 0x02, 0x23, 0xf5, 0x34, 0x79,
		0x24, 0x1d, 0xec, 0x80, 0xd0, 0xf8, 0x0d, 0x5d, 0x8f, 0x9f, 0x6b, 0xc0, 0xfb, 0x27, 0x38, 0x27,
		0x4a, 0x2c, 0x1c, 0xe7, 0x44, 0x73, 0x8e, 0xb1, 0x67, 0xa7, 0x36, 0x8f, 0x73, 0xa2, 0xe5, 0x93,
		0x0a, 0x26, 0x57, 0x3b, 0xb4, 0xd5, 0x23, 0x6d, 0xe7, 0xe9, 0x21, 0x87, 0x79, 0xdc, 0xe5, 0xcf,
		0x9a, 0xfa, 0x6c, 0x51, 0xfa, 0x8b, 0x7a, 0xf2, 0xa8, 0x1f, 0xac, 0x50, 0x43, 0x8d, 0x8d, 0xf1,
		0x80, 0xd4, 0x6f, 0xee, 0x6f, 0x6e, 0x9b, 0xed, 0xe6, 0x65, 0xb3, 0x41, 0x5d, 0x65, 0x23, 0xb6,
		0x07, 0x21, 0xb9, 0xc7, 0xd3, 0xe3, 0xf5, 0xe6, 0x07, 0xa5, 0xfa, 0xa5, 0xfd, 0x5b, 0x69, 0x1b,
		0x6c, 0xba, 0xfe, 0xa1, 0xf8, 0x7c, 0x5b, 0xc3, 0x48, 0xc4, 0x23, 0x51, 0xbf, 0xbc, 0xba, 0xc1,
		0x50, 0x8c, 0x86, 0xe2, 0x33, 0x86, 0x62, 0x3c, 0x14, 0xd7, 0xf7, 0x75, 0x8c, 0xc5, 0x68, 0x2c,
		0x1a, 0xe5, 0x36, 0x86, 0x22, 0x71, 0xab, 0xf5, 0x2b, 0x8c, 0x44, 0x3c, 0x12, 0xb7, 0xad, 0xdf,
		0xb1, 0x28, 0x46, 0x43, 0xd1, 0xbe, 0xc4, 0x48, 0x8c, 0x46, 0xe2, 0xcb, 0x47, 0x1d, 0x23, 0x41,
		0x2a, 0xb1, 0x83, 0x14, 0x49, 0xa2, 0xfb, 0xab, 0xec, 0x87, 0xf4, 0x2a, 0xa6, 0x13, 0x72, 0x73,
		0xe0, 0x07, 0x9c, 0x6e, 0x3f, 0x64, 0x5a, 0x28, 0xf6, 0x43, 0xd6, 0x0e, 0x17, 0xf6, 0x43, 0xb0,
		0x1f, 0xb2, 0xfa, 0x8d, 0xe8, 0xf7, 0x43, 0x22, 0xbd, 0x34, 0xbd, 0x61, 0xff, 0x1b, 0x0b, 0x08,
		0xb7, 0x42, 0x4e, 0x71, 0x40, 0x45, 0x86, 0xc2, 0xc1, 0x01, 0x15, 0x3d, 0x58, 0x4b, 0xf3, 0x01,
		0x95, 0x93, 0x93, 0x63, 0x1c, 0x09, 0x06, 0x00, 0x23, 0x01, 0x60, 0x61, 0x60, 0xd3, 0x03, 0xb0,
		0x54, 0x28, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18,
		0x00, 0x18, 0x00, 0xd8, 0xec, 0xa4, 0xf4, 0x2d, 0xdb, 0xb4, 0x1c, 0x27, 0x60, 0x21, 0x61, 0xa7,
		0xcf, 0x69, 0xa1, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x85, 0x02, 0x60, 0x74, 0xea, 0x69, 0x10,
		0x9f, 0x5f, 0x23, 0x3f, 0xb7, 0x56, 0x9a, 0x3e, 0xb9, 0x32, 0x7f, 0x20, 0xa6, 0xfc, 0xeb, 0xcd,
		0xdf, 0x27, 0xbf, 0xd4, 0xd7, 0x47, 0x87, 0xe2, 0xc5, 0x75, 0x1c, 0x90, 0x2a, 0xfd, 0x67, 0xfd,
		0xeb, 0x13, 0x9c, 0xcc, 0xd9, 0x4a, 0xbf, 0x37, 0xe8, 0x85, 0x66, 0xcf, 0xfa, 0xc6, 0x08, 0x0f,
		0xc2, 0x4c, 0xc9, 0x84, 0xd7, 0x83, 0xd7, 0x83, 0xd7, 0x2b, 0x96, 0xd7, 0xa3, 0xd2, 0x4e, 0x63,
		0x1f, 0x4f, 0xc0, 0x1c, 0x97, 0x35, 0xe4, 0x34, 0x9f, 0xe1, 0x08, 0x0c, 0xb1, 0xf0, 0xb4, 0x86,
		0xeb, 0x29, 0x8e, 0x49, 0xe4, 0x47, 0xf6, 0x68, 0x25, 0x7d, 0x16, 0xe7, 0xf6, 0xb0, 0x72, 0x7e,
		0x72, 0x86, 0xf6, 0x68, 0xf9, 0xd0, 0x42, 0xf4, 0xd2, 0x76, 0xfd, 0x1c, 0x0c, 0xf3, 0x86, 0x7d,
		0xf6, 0xff, 0xb3, 0xf7, 0xfe, 0x3d, 0x6d, 0x2b, 0xdb, 0xfb, 0xe8, 0xff, 0xbc, 0x0a, 0x5f, 0x6b,
		0x4b, 0x1b, 0x8e, 0x6a, 0x48, 0x42, 0x7e, 0x14, 0xa4, 0xa3, 0x2b, 0x4a, 0xd3, 0xfd, 0x45, 0x1f,
		0x0a, 0x51, 0xa1, 0x3d, 0xfb, 0x7c, 0x21, 0x1b, 0x19, 0x67, 0x02, 0x56, 0x13, 0x3b, 0x1f, 0xdb,
		0xa1, 0x70, 0x21, 0xef, 0xfd, 0xca, 0x4e, 0xe2, 0xfc, 0x2e, 0xb1, 0xbd, 0xd6, 0xd8, 0x4e, 0x9e,
		0xad, 0xa3, 0xd3, 0x26, 0x4d, 0x66, 0x9c, 0x99, 0x35, 0xcf, 0x5a, 0xcf, 0x33, 0x6b, 0xd6, 0x38,
		0xc3, 0x9b, 0xcf, 0x18, 0xce, 0xc1, 0x10, 0x1e, 0x00, 0x53, 0xeb, 0x56, 0xbf, 0x4b, 0xaf, 0xd2,
		0x5e, 0xdb, 0x57, 0x9e, 0x63, 0x5a, 0x0f, 0x2c, 0x50, 0xa0, 0x16, 0x86, 0x49, 0x8e, 0x3f, 0xca,
		0x77, 0xf5, 0xbf, 0x1b, 0xe7, 0x67, 0xa7, 0x67, 0xd7, 0x77, 0x17, 0xdf, 0xcf, 0xa9, 0x4f, 0xd8,
		0x04, 0x5d, 0x15, 0xfd, 0xae, 0xbe, 0x5d, 0x7e, 0xbf, 0xae, 0x7f, 0xbb, 0x3b, 0x39, 0xaf, 0x7f,
		0xbb, 0xe6, 0xe8, 0xa4, 0x34, 0xfa, 0x3d, 0x55, 0xfe, 0xdf, 0x73, 0x18, 0x74, 0xf5, 0x95, 0xb9,
		0x97, 0x9a, 0xdf, 0x4b, 0xfd, 0xe2, 0xfa, 0xdb, 0x65, 0xe3, 0xbf, 0x77, 0xe7, 0x27, 0x9f, 0xea,
		0xe7, 0x77, 0x67, 0x17, 0x9f, 0xcf, 0x4e, 0x4f, 0xae, 0x2f, 0xbf, 0x71, 0xf4, 0xf7, 0x31, 0xb8,
		0x40, 0xef, 0x72, 0xd8, 0x15, 0x6d, 0xde, 0x2b, 0xb1, 0x8f, 0x54, 0xaf, 0xed, 0x33, 0xcb, 0xe3,
		0x59, 0x16, 0xab, 0x06, 0x9c, 0x34, 0xca, 0x0c, 0x7b, 0x9b, 0x35, 0xa2, 0x63, 0xe5, 0x90, 0xa3,
		0x8f, 0xc5, 0x35, 0xce, 0xe2, 0x8d, 0x97, 0x2d, 0xbe, 0x63, 0xa5, 0xc4, 0xd0, 0x51, 0x68, 0xa4,
		0xe4, 0x17, 0x3a, 0x0d, 0x29, 0xc0, 0x34, 0x52, 0x1d, 0x2b, 0xc5, 0x8c, 0xfa, 0x7f, 0x6c, 0x57,
		0x25, 0x94, 0xed, 0x3c, 0x83, 0x58, 0xb3, 0xf3, 0x0c, 0x08, 0x76, 0x10, 0xec, 0x20, 0xd8, 0x65,
		0x50, 0xb0, 0x4b, 0xbc, 0x34, 0x15, 0xdc, 0x22, 0x40, 0xa0, 0x39, 0x20, 0x47, 0x88, 0x21, 0x24,
		0xe6, 0xcd, 0x11, 0xaa, 0x61, 0xca, 0x36, 0x2b, 0xe0, 0x4a, 0x08, 0xd0, 0xe2, 0xd9, 0x73, 0x74,
		0xad, 0x6f, 0xb9, 0x9e, 0x7e, 0xdf, 0x21, 0x82, 0x6a, 0x47, 0xb4, 0x85, 0x23, 0x2c, 0x23, 0xd3,
		0xdb, 0x17, 0xdf, 0xbe, 0x9c, 0x56, 0xca, 0xd5, 0xd2, 0xb1, 0xf2, 0xb5, 0xdf, 0xf1, 0xcc, 0x71,
		0x2d, 0x34, 0xe5, 0x5c, 0xbf, 0x17, 0x1d, 0xe5, 0xea, 0x97, 0xe9, 0x19, 0x8f, 0xa6, 0xf5, 0xa0,
		0xec, 0x7e, 0x6d, 0x9c, 0x5f, 0xed, 0x8d, 0xdf, 0xf6, 0x74, 0xe3, 0xe7, 0xad, 0x15, 0xdc, 0x38,
		0x7f, 0xac, 0xfc, 0x59, 0xff, 0xbb, 0xf1, 0xa7, 0xf2, 0xc5, 0x14, 0x9d, 0x96, 0xf2, 0x4d, 0x58,
		0x7a, 0x57, 0xb4, 0x14, 0xcf, 0x56, 0xfe, 0xbc, 0x76, 0xf4, 0x76, 0xdb, 0x34, 0x94, 0xd3, 0x8e,
		0xee, 0xba, 0xa3, 0x0f, 0x50, 0x4a, 0x5e, 0xc4, 0x71, 0xd2, 0xb2, 0x78, 0x69, 0x32, 0x83, 0xc4,
		0xab, 0x99, 0x2b, 0x74, 0x5a, 0x1a, 0x42, 0x49, 0x9e, 0x62, 0x20, 0x53, 0x06, 0xa8, 0xa0, 0x25,
		0x9e, 0x3d, 0xed, 0xd1, 0xee, 0x69, 0x0f, 0x8e, 0xdd, 0x27, 0xbc, 0x54, 0x6e, 0xae, 0x5d, 0x10,
		0xc3, 0x35, 0x89, 0xa1, 0x65, 0x82, 0x1a, 0xf2, 0x50, 0x43, 0xcb, 0x04, 0x39, 0x9c, 0xb7, 0xb9,
		0x8e, 0xd0, 0xdb, 0x34, 0x85, 0xd6, 0xc2, 0x8d, 0xa5, 0x1a, 0x4d, 0xfe, 0xe2, 0xa3, 0xff, 0x78,
		0x07, 0xb6, 0xa1, 0x59, 0xe6, 0xb1, 0x25, 0xbc, 0x5f, 0xb6, 0xf3, 0x53, 0x33, 0xfd, 0xa8, 0xcb,
		0x32, 0x84, 0xbb, 0xe2, 0xfd, 0xd1, 0xdb, 0x7a, 0xdb, 0x9b, 0x7c, 0x62, 0x1a, 0x85, 0x96, 0xbf,
		0x3b, 0x7a, 0xd3, 0xf5, 0x74, 0x6f, 0xdc, 0x82, 0x99, 0xd0, 0x39, 0x65, 0x01, 0xca, 0xb5, 0xf9,
		0xd1, 0xe1, 0xc2, 0xf6, 0xc5, 0x8e, 0x00, 0xf6, 0x00, 0x7b, 0x80, 0x7d, 0xe6, 0xc0, 0x7e, 0x7e,
		0x9d, 0x6a, 0x59, 0x47, 0x7e, 0xe1, 0xf9, 0x8f, 0xba, 0x02, 0xfe, 0x57, 0xfc, 0xe3, 0xf4, 0xbf,
		0x19, 0x01, 0x02, 0xcc, 0x7c, 0xda, 0x1f, 0x8a, 0xb4, 0xa0, 0x7d, 0x47, 0xa2, 0x19, 0xa9, 0x27,
		0xfd, 0x07, 0x7f, 0x45, 0x88, 0x56, 0x22, 0x4d, 0x81, 0xc8, 0x61, 0x24, 0xf6, 0xe3, 0x3d, 0xbb,
		0x63, 0x1a, 0x2f, 0x5a, 0xdb, 0x76, 0x7e, 0xe9, 0x4e, 0xcb, 0xb4, 0x1e, 0x56, 0xbd, 0xaf, 0x09,
		0x9f, 0x88, 0x4e, 0xbb, 0xf4, 0xa4, 0xde, 0xe8, 0xb3, 0x70, 0x0d, 0xc7, 0xec, 0x05, 0x79, 0x38,
		0xc7, 0x8a, 0x7a, 0xd2, 0x6a, 0x29, 0x1d, 0xa1, 0x3f, 0x09, 0x57, 0xf1, 0x1e, 0x75, 0x4f, 0x71,
		0xc4, 0xff, 0xf6, 0x4d, 0x47, 0x28, 0x63, 0x05, 0xc0, 0x27, 0xc8, 0x76, 0x5b, 0xd1, 0x95, 0xd1,
		0x8f, 0x52, 0xc6, 0x3f, 0xca, 0xe7, 0xc1, 0xde, 0xa3, 0xb8, 0xb5, 0xec, 0xde, 0x28, 0xad, 0x47,
		0xef, 0x28, 0xc1, 0x13, 0x2a, 0x3d, 0xdd, 0xd1, 0xbb, 0xc2, 0x13, 0x8e, 0x1b, 0x7c, 0xd5, 0x52,
		0x82, 0x1f, 0xa1, 0xfc, 0x32, 0xbd, 0x47, 0xd3, 0xf2, 0xbf, 0xa4, 0x34, 0x82, 0xdf, 0xa9, 0x7c,
		0x09, 0x7f, 0xe7, 0xad, 0x75, 0xf2, 0xe5, 0x7a, 0x9f, 0xc8, 0xd3, 0x16, 0xe1, 0x69, 0xe1, 0x69,
		0xb7, 0xd7, 0xd3, 0x7e, 0x36, 0x1d, 0x1a, 0x93, 0x23, 0xd6, 0x52, 0x78, 0x35, 0x95, 0x95, 0x00,
		0x17, 0x42, 0xd9, 0x18, 0xb2, 0x94, 0xd9, 0x7e, 0x87, 0xb8, 0x67, 0xba, 0x8a, 0x69, 0x29, 0x7d,
		0x57, 0x28, 0x6d, 0xdb, 0x09, 0x3e, 0x35, 0x0d, 0x5a, 0xb7, 0x96, 0xff, 0x8e, 0x0f, 0x51, 0xca,
		0x58, 0xfa, 0x33, 0x5d, 0xa5, 0x65, 0xba, 0x9e, 0x63, 0xde, 0xf7, 0x3d, 0xd1, 0x52, 0x74, 0xc3,
		0xb1, 0x5d, 0x37, 0xf8, 0xa2, 0x2b, 0x3c, 0x1f, 0xf7, 0xc6, 0xbd, 0xb8, 0x53, 0xc0, 0x77, 0x6b,
		0x8d, 0xdf, 0x55, 0x86, 0x7d, 0xeb, 0x86, 0x61, 0x07, 0x00, 0x38, 0x7e, 0xb6, 0x5f, 0xc2, 0x7c,
		0x78, 0xf4, 0xf6, 0x95, 0xeb, 0x47, 0xd3, 0x55, 0x2c, 0xbb, 0xe5, 0x3f, 0xad, 0x68, 0xb9, 0xfe,
		0x3f, 0x07, 0xbf, 0xc3, 0xff, 0x8b, 0x6e, 0xbd, 0xf8, 0x0d, 0xcd, 0x3a, 0x19, 0xc5, 0x1e, 0x42,
		0xab, 0xfb, 0xe2, 0x7a, 0xa2, 0xab, 0x3c, 0x06, 0x3f, 0xb8, 0xdb, 0x77, 0x3d, 0xe5, 0x5e, 0x28,
		0xfa, 0xbd, 0x6b, 0x77, 0xfa, 0x9e, 0xd8, 0xa7, 0x1a, 0x64, 0x1a, 0x4e, 0x43, 0x8e, 0xb8, 0x1c,
		0xc8, 0xcb, 0x89, 0xc0, 0x5c, 0x48, 0xcc, 0x8e, 0xc8, 0xec, 0xc8, 0xcc, 0x8c, 0xd0, 0x74, 0x22,
		0xb9, 0x42, 0xb7, 0xfb, 0x4b, 0xc7, 0x91, 0x18, 0x85, 0x31, 0x0e, 0x9a, 0xb4, 0x31, 0x42, 0x19,
		0x9d, 0x59, 0x11, 0x98, 0x14, 0xbb, 0x80, 0x26, 0x59, 0x48, 0x5b, 0xe5, 0xe1, 0xaf, 0x03, 0x97,
		0xbe, 0xc8, 0x4e, 0x3a, 0xb6, 0xfd, 0x53, 0x09, 0xfc, 0xfb, 0x82, 0xcb, 0x37, 0xad, 0x7d, 0xe5,
		0xac, 0xad, 0xf4, 0x2d, 0xb7, 0x27, 0x0c, 0xb3, 0x6d, 0x8a, 0xd6, 0x87, 0xa1, 0x8b, 0xf7, 0x3f,
		0xa7, 0x4c, 0xdc, 0xf3, 0x30, 0x2a, 0xf0, 0xff, 0xa1, 0x63, 0x1b, 0x7a, 0x67, 0xa1, 0x1b, 0xdf,
		0x4f, 0x4f, 0xb8, 0x92, 0x68, 0x2d, 0x71, 0xcb, 0xa1, 0x0b, 0xb6, 0x14, 0xf1, 0x6c, 0xba, 0x9e,
		0xef, 0xeb, 0x17, 0x9e, 0x76, 0xe4, 0xbb, 0x5b, 0xe2, 0xc9, 0x34, 0xfc, 0x8f, 0xb6, 0x6e, 0xad,
		0x47, 0xfd, 0x49, 0x28, 0x86, 0xed, 0x38, 0xc2, 0xed, 0xd9, 0x56, 0x10, 0x22, 0xf8, 0x11, 0x89,
		0x29, 0xc2, 0x47, 0x3a, 0x58, 0x5c, 0x1e, 0xf3, 0xef, 0xdc, 0x5a, 0x1d, 0xd3, 0xf5, 0xe0, 0xf5,
		0xe1, 0xf5, 0xe1, 0xf5, 0xb7, 0xd0, 0xeb, 0x33, 0x29, 0xa4, 0xf2, 0x42, 0x80, 0x2c, 0x2a, 0xa6,
		0x84, 0x3e, 0x3e, 0x57, 0xca, 0x6d, 0x33, 0xae, 0x72, 0x6b, 0x59, 0xb6, 0xa7, 0x8f, 0x9c, 0x75,
		0x7c, 0x23, 0x57, 0x5d, 0xe3, 0x51, 0x74, 0xf5, 0x5e, 0x68, 0x1e, 0x3d, 0x61, 0x0d, 0xa7, 0x77,
		0x21, 0xce, 0x58, 0xc3, 0x31, 0x1e, 0x04, 0xb1, 0xe2, 0xa2, 0x0c, 0xbb, 0x4a, 0x80, 0x1d, 0x4a,
		0xaf, 0x3b, 0x72, 0x46, 0x3b, 0xda, 0x37, 0x22, 0xc2, 0x90, 0xef, 0x1c, 0x82, 0x7b, 0xc9, 0xac,
		0x96, 0x88, 0xea, 0x17, 0xd4, 0xfa, 0xb3, 0x17, 0xef, 0x7a, 0xad, 0x78, 0xf3, 0x3e, 0xed, 0xc8,
		0x6c, 0x43, 0x13, 0xcf, 0xde, 0xb1, 0x27, 0x3a, 0xa2, 0x2b, 0x3c, 0xe7, 0x45, 0xd3, 0x3d, 0xbb,
		0x6b, 0xc6, 0xcd, 0x03, 0x9f, 0xf3, 0x60, 0x41, 0x66, 0x69, 0x5c, 0xfb, 0x9e, 0x72, 0x55, 0x2a,
		0xf3, 0x5c, 0x47, 0x5c, 0x83, 0xea, 0xb9, 0xe9, 0x7a, 0x27, 0x9e, 0x17, 0x4f, 0x0f, 0x54, 0xbf,
		0x9a, 0x56, 0xdd, 0x1f, 0x6d, 0x2b, 0x6e, 0x62, 0xaf, 0xfa, 0x55, 0x7f, 0x9e, 0x6a, 0xa1, 0xf8,
		0xb1, 0x5c, 0xae, 0xd6, 0xca, 0xe5, 0x42, 0xed, 0xb0, 0x56, 0x38, 0xaa, 0x54, 0x8a, 0xd5, 0x38,
		0xd7, 0xd7, 0xa9, 0x97, 0x4e, 0x4b, 0x38, 0xa2, 0xf5, 0xc9, 0x37, 0x63, 0xab, 0xdf, 0xe9, 0x24,
		0x69, 0xe2, 0xbb, 0x2b, 0x9c, 0x58, 0x99, 0xc5, 0x51, 0x57, 0x5d, 0x42, 0x14, 0x4c, 0x15, 0xfd,
		0x62, 0xac, 0x31, 0xd5, 0xf5, 0x9c, 0xbe, 0xe1, 0x59, 0xa3, 0x40, 0xe4, 0x62, 0xf8, 0x00, 0x67,
		0xa3, 0xfe, 0xef, 0x4e, 0xda, 0x9e, 0x7b, 0x37, 0xdc, 0x04, 0x9a, 0xec, 0x01, 0x05, 0x39, 0x97,
		0xd1, 0x56, 0xd0, 0xfa, 0xab, 0x67, 0xbd, 0x4f, 0xae, 0x39, 0xab, 0x71, 0x67, 0x53, 0xca, 0x2c,
		0xae, 0x37, 0x82, 0xef, 0x8f, 0xc7, 0x1a, 0x63, 0xa1, 0x06, 0x6e, 0x51, 0x73, 0x5f, 0x7c, 0xee,
		0xbb, 0xf6, 0x48, 0x84, 0xe1, 0xe9, 0xcc, 0xb7, 0xd7, 0x1c, 0xf9, 0x68, 0x5b, 0x7c, 0x91, 0x29,
		0x66, 0x1c, 0x0a, 0x19, 0xff, 0x28, 0x5c, 0x5c, 0x02, 0x98, 0x98, 0xe0, 0x25, 0x26, 0x70, 0x89,
		0x8e, 0xaa, 0xd1, 0xae, 0xc5, 0xa8, 0xdb, 0x5d, 0x43, 0xb3, 0x8b, 0x3e, 0xe6, 0x33, 0x56, 0x1b,
		0x75, 0xbc, 0xe3, 0xed, 0x4c, 0x4f, 0xcc, 0x37, 0xe2, 0xb9, 0xeb, 0x24, 0x4a, 0x48, 0xf2, 0x93,
		0x9d, 0x49, 0x75, 0x0d, 0x32, 0xfd, 0x82, 0x4c, 0xa7, 0x20, 0x39, 0x99, 0xc9, 0x1b, 0xd6, 0xc7,
		0xdd, 0xf5, 0x55, 0xcd, 0xde, 0x53, 0x59, 0xeb, 0x5b, 0xa6, 0xa1, 0xbb, 0xf1, 0x8b, 0x30, 0x4c,
		0xae, 0x3b, 0x9e, 0x6e, 0x2d, 0xe6, 0x60, 0x7f, 0x16, 0x6d, 0xbd, 0xdf, 0xf1, 0x12, 0x65, 0xfa,
		0xa8, 0x41, 0x48, 0xa7, 0x4a, 0x65, 0xba, 0xc9, 0xe4, 0xd1, 0xc4, 0x72, 0x28, 0x85, 0xfc, 0x49,
		0x77, 0xac, 0x9b, 0x4a, 0xdc, 0x24, 0x17, 0x33, 0xc9, 0xc5, 0x4b, 0xd2, 0x63, 0xdb, 0x72, 0xb3,
		0xea, 0x12, 0x4b, 0x8f, 0xa1, 0xbd, 0xdc, 0xdb, 0x76, 0x47, 0xe8, 0x49, 0x4a, 0x3b, 0x85, 0x3e,
		0xb2, 0x28, 0x4b, 0x66, 0xf9, 0x10, 0x0b, 0x2c, 0xab, 0xa4, 0x60, 0x59, 0x05, 0x58, 0x02, 0x2c,
		0x01, 0x96, 0x00, 0xcb, 0xac, 0x83, 0xe5, 0xb6, 0xa9, 0x63, 0xd3, 0xe2, 0x44, 0x1c, 0xf9, 0x1f,
		0xd2, 0xd4, 0x41, 0x0c, 0x7d, 0x67, 0x5d, 0xed, 0xf0, 0xca, 0x6f, 0xfa, 0x6a, 0xd8, 0x32, 0x95,
		0xde, 0xb5, 0x93, 0x60, 0xf8, 0xa3, 0x0e, 0x3b, 0xc3, 0x70, 0xab, 0x6b, 0xe9, 0x75, 0xef, 0x8d,
		0xec, 0xef, 0x47, 0x73, 0xf5, 0x18, 0xfd, 0x66, 0x7c, 0x54, 0x63, 0xec, 0xab, 0x7f, 0x3f, 0x2e,
		0x21, 0x3c, 0x8e, 0x3e, 0xff, 0xce, 0x88, 0xaf, 0x27, 0xa9, 0xac, 0x1d, 0x28, 0x44, 0x09, 0x08,
		0xa6, 0x1d, 0xff, 0x68, 0x63, 0x79, 0x9d, 0xd1, 0x8f, 0xe8, 0xe4, 0x63, 0x3b, 0xf3, 0xd8, 0x4e,
		0x7b, 0xde, 0x39, 0x8f, 0x7f, 0x1b, 0xf3, 0xda, 0x59, 0x57, 0xba, 0x50, 0x5b, 0x33, 0x89, 0x5f,
		0x11, 0xd5, 0xe6, 0xe9, 0x2f, 0x47, 0x13, 0x9b, 0x0b, 0x19, 0x15, 0x9b, 0xd7, 0x37, 0xbd, 0xcd,
		0x13, 0x9c, 0xd7, 0x36, 0x4d, 0x1e, 0x2f, 0x1b, 0x39, 0x16, 0x9c, 0x92, 0x8f, 0x83, 0x22, 0xc0,
		0x11, 0xe6, 0x2c, 0xbc, 0x49, 0x27, 0x13, 0x71, 0xc2, 0xcb, 0x83, 0xed, 0x69, 0xb6, 0xa1, 0x19,
		0x76, 0xb7, 0xe7, 0x08, 0xd7, 0x15, 0x2d, 0xad, 0x23, 0xf4, 0xb6, 0xdf, 0xc8, 0x40, 0xe2, 0xce,
		0x53, 0x5b, 0xef, 0x74, 0xee, 0x75, 0xe3, 0x67, 0xfc, 0xac, 0xd6, 0x70, 0x46, 0x56, 0x37, 0x05,
		0x98, 0x00, 0x4c, 0xa4, 0x04, 0x13, 0x09, 0x53, 0xf7, 0xe2, 0xa4, 0xe6, 0x65, 0x27, 0xf5, 0x6e,
		0xdd, 0xe1, 0x4d, 0x50, 0xbc, 0x4c, 0xfd, 0xf5, 0x28, 0xa2, 0x5f, 0xa9, 0x95, 0x60, 0x37, 0x6d,
		0x7f, 0xff, 0xc0, 0x7b, 0xe9, 0x09, 0xe5, 0xdf, 0xca, 0x9f, 0xc1, 0x59, 0x03, 0xcd, 0x7f, 0xe5,
		0x1e, 0x9f, 0x1f, 0xfe, 0xf8, 0xf6, 0xe5, 0xcf, 0x94, 0x37, 0xd9, 0x82, 0xb1, 0xc8, 0xd2, 0x16,
		0xdb, 0xef, 0x07, 0x8b, 0x5b, 0xbc, 0x58, 0xfb, 0xd3, 0x4d, 0x78, 0xe4, 0xc9, 0x63, 0x8c, 0x58,
		0x65, 0x44, 0xe7, 0x1b, 0x7c, 0x0b, 0x7e, 0x16, 0x7e, 0x16, 0xe1, 0x78, 0x9e, 0x17, 0xbf, 0x63,
		0xf7, 0x3d, 0xa1, 0xb5, 0x86, 0xe7, 0x9b, 0xfa, 0xa6, 0xfb, 0x28, 0x9c, 0xe8, 0x58, 0xb0, 0xac,
		0x11, 0x40, 0x03, 0xa0, 0x21, 0x25, 0x68, 0x88, 0x6f, 0x8e, 0x4a, 0xcc, 0xbb, 0x00, 0xe3, 0xdd,
		0xf9, 0x97, 0x20, 0x28, 0x8d, 0x8c, 0x7e, 0x8b, 0x28, 0x18, 0xe3, 0xbb, 0x49, 0x2f, 0xb4, 0x55,
		0x77, 0x6f, 0x0a, 0xda, 0x51, 0xf3, 0xed, 0xa6, 0xa8, 0x1d, 0x35, 0x83, 0xbf, 0xbe, 0x16, 0x3f,
		0x1c, 0x0e, 0xfc, 0xd7, 0x95, 0xd1, 0xeb, 0xf2, 0xe0, 0xad, 0x7a, 0x53, 0xd0, 0xca, 0xa3, 0x97,
		0x87, 0x83, 0xb7, 0x6a, 0x65, 0xea, 0x75, 0xc9, 0x7f, 0xed, 0xbf, 0x51, 0x1a, 0xbe, 0xe1, 0xbf,
		0x3a, 0xbc, 0x29, 0x68, 0x95, 0xe6, 0xde, 0xf1, 0xb2, 0xc6, 0x3f, 0x06, 0x8d, 0x1f, 0x8e, 0x5e,
		0x1f, 0x0d, 0xde, 0xca, 0x37, 0x85, 0xe2, 0xe8, 0xd5, 0xc7, 0xc1, 0x5b, 0xb9, 0x74, 0x53, 0xd0,
		0x3e, 0x8e, 0x5e, 0xd7, 0xfc, 0xd7, 0x47, 0x37, 0x85, 0xf0, 0xe3, 0xd5, 0xe0, 0x8d, 0xf2, 0xd4,
		0x47, 0x2a, 0xc3, 0x77, 0x8e, 0x82, 0x1e, 0xc3, 0x07, 0x0e, 0xde, 0xf2, 0x9f, 0xba, 0x3a, 0x79,
		0xea, 0xe1, 0x7b, 0xb5, 0x49, 0x6f, 0xa5, 0xf0, 0xbd, 0xa9, 0x3e, 0xc3, 0xb7, 0x86, 0x2d, 0xee,
		0x45, 0x8f, 0x90, 0x9b, 0x71, 0xa6, 0x91, 0xe2, 0x72, 0x62, 0xf5, 0x9f, 0x5d, 0xcc, 0xe6, 0xef,
		0x67, 0x73, 0x2f, 0xc6, 0x65, 0xcc, 0x4d, 0xce, 0xed, 0x5a, 0x00, 0x4e, 0xf3, 0xad, 0x18, 0x4e,
		0x60, 0x69, 0x62, 0x89, 0x6f, 0xa5, 0xca, 0x70, 0xca, 0x76, 0x6f, 0x6f, 0xf7, 0xa3, 0x7e, 0x67,
		0xef, 0xf5, 0x70, 0x70, 0xcc, 0xb9, 0x16, 0x72, 0x8e, 0x0a, 0x79, 0x1c, 0x72, 0x2c, 0xdd, 0x4c,
		0xc6, 0x0a, 0x39, 0x73, 0x00, 0x40, 0x85, 0xdf, 0xc6, 0x0a, 0x98, 0x4d, 0xa9, 0x80, 0x03, 0x75,
		0x34, 0xb6, 0x40, 0xe2, 0x68, 0x66, 0x2b, 0xa6, 0x2c, 0x12, 0x7c, 0x15, 0x62, 0x08, 0xc4, 0x90,
		0x94, 0xc4, 0x90, 0x96, 0xed, 0x79, 0xa2, 0xa5, 0xfd, 0x6f, 0x5f, 0x6f, 0xc5, 0x12, 0x4b, 0xa3,
		0x6d, 0x43, 0xc6, 0x72, 0x13, 0xd2, 0xa2, 0xf4, 0xf5, 0x67, 0xaf, 0x19, 0xe5, 0x67, 0x27, 0x71,
		0x91, 0x12, 0x03, 0xe6, 0x28, 0x2e, 0x06, 0x2e, 0x60, 0xea, 0x31, 0xbc, 0x28, 0x8b, 0x2f, 0x5c,
		0x78, 0xc1, 0xb7, 0x00, 0xfc, 0x00, 0xfe, 0x44, 0x4b, 0xe7, 0xab, 0x6e, 0xb5, 0x74, 0xcf, 0x76,
		0x5e, 0x22, 0x9c, 0x9d, 0x8f, 0xef, 0x2c, 0xcc, 0x96, 0xb0, 0x3c, 0xd3, 0x7b, 0x89, 0x99, 0xb3,
		0x12, 0xa1, 0x28, 0x88, 0x7a, 0x36, 0xea, 0xea, 0x93, 0xee, 0x26, 0x38, 0xd3, 0x7d, 0x51, 0xbf,
		0xfe, 0xcf, 0xe5, 0xb7, 0xff, 0xb9, 0x3b, 0xbb, 0xb8, 0xba, 0x3e, 0xb9, 0x38, 0xad, 0xdf, 0x5d,
		0xff, 0xb7, 0x51, 0x8f, 0x6a, 0x32, 0xc1, 0x15, 0x8b, 0x52, 0xcb, 0xe3, 0x8c, 0x1f, 0xff, 0x73,
		0xfd, 0xcb, 0xc9, 0xf7, 0xf3, 0xeb, 0xf0, 0xf1, 0x55, 0x19, 0x67, 0xe1, 0x12, 0x3e, 0xf3, 0x79,
		0xe9, 0xfc, 0x30, 0x1f, 0xcf, 0xd9, 0x28, 0x35, 0xf2, 0xf1, 0xa0, 0x3f, 0xae, 0xce, 0x72, 0xf1,
		0xa0, 0x87, 0x3f, 0xbe, 0x7d, 0x61, 0xaf, 0x94, 0x94, 0xb3, 0xe3, 0x37, 0x32, 0x62, 0x94, 0x1c,
		0x1f, 0x70, 0x19, 0x1d, 0x09, 0xe1, 0x39, 0x9c, 0x62, 0x89, 0xe0, 0x0a, 0x5b, 0xad, 0x67, 0x9b,
		0xc3, 0x42, 0x55, 0xeb, 0x9f, 0x53, 0x99, 0xfb, 0x2a, 0x8e, 0xac, 0xe0, 0xc8, 0xca, 0xef, 0xcd,
		0x2b, 0x3a, 0x01, 0x58, 0x68, 0x61, 0x33, 0x2a, 0x25, 0x81, 0x0c, 0xe4, 0xa7, 0x62, 0xd2, 0x9a,
		0x07, 0xf8, 0x7e, 0x67, 0xc2, 0xef, 0x1f, 0xe8, 0x4b, 0x68, 0xc0, 0xb1, 0x0d, 0x39, 0x89, 0x41,
		0xd3, 0x18, 0x76, 0x52, 0x03, 0x27, 0x33, 0x74, 0x32, 0x83, 0x27, 0x33, 0xfc, 0x78, 0xc1, 0x9f,
		0xb4, 0xda, 0x49, 0xf3, 0xd8, 0x1c, 0x45, 0xdf, 0x5f, 0x1b, 0xf0, 0xd7, 0x57, 0xfe, 0x13, 0x0a,
		0x42, 0x64, 0x4b, 0x89, 0x62, 0x49, 0xd1, 0x2e, 0x2d, 0xaa, 0x25, 0x46, 0xbe, 0xd4, 0xc8, 0x97,
		0x1c, 0xf9, 0xd2, 0x8b, 0xb7, 0x04, 0x13, 0xd0, 0x4b, 0x85, 0xb6, 0xd8, 0x46, 0xec, 0xbc, 0x85,
		0x05, 0x47, 0xf4, 0x51, 0xee, 0x8d, 0x87, 0x44, 0x75, 0xb3, 0x13, 0x33, 0xcb, 0xe4, 0x86, 0xb0,
		0x4d, 0xc5, 0x43, 0x16, 0x48, 0xe1, 0xc2, 0x3b, 0x6b, 0x91, 0xd9, 0xf8, 0x43, 0x18, 0x61, 0xf8,
		0x48, 0xfc, 0x17, 0xa1, 0xdf, 0x8a, 0xe9, 0xaf, 0x10, 0xf2, 0x21, 0xe4, 0x8b, 0x0a, 0x1a, 0xb1,
		0xfd, 0x0b, 0xc1, 0x95, 0x5a, 0x49, 0xee, 0xcd, 0x08, 0x0f, 0xe9, 0xee, 0xef, 0x8f, 0x70, 0xe4,
		0x60, 0xd9, 0xba, 0xcb, 0x00, 0xb6, 0x08, 0xab, 0xb5, 0xa6, 0xa0, 0xb6, 0x72, 0x88, 0x27, 0x4d,
		0x80, 0x3a, 0x02, 0x47, 0x36, 0x8b, 0x3a, 0x8e, 0x6d, 0x3b, 0x39, 0x5f, 0x0c, 0x5b, 0x4a, 0x46,
		0x12, 0x8b, 0x20, 0x89, 0x20, 0x89, 0xf9, 0x22, 0x89, 0x49, 0x6f, 0x3a, 0x8e, 0x2b, 0x6c, 0xd2,
		0x0a, 0x9d, 0xc4, 0x0b, 0x92, 0x6c, 0x61, 0x52, 0x2e, 0x50, 0x9e, 0x85, 0x4a, 0xbd, 0x60, 0xd9,
		0x16, 0x2e, 0xdb, 0x02, 0x66, 0x5b, 0xc8, 0xc9, 0x16, 0x74, 0xc2, 0x85, 0x4d, 0xb6, 0xc0, 0x17,
		0xbc, 0x6d, 0x12, 0x81, 0xf6, 0x5d, 0x07, 0x1c, 0x5f, 0xa8, 0x25, 0x16, 0x6e, 0xd9, 0xa0, 0x80,
		0x03, 0x12, 0x78, 0xa1, 0x81, 0x0b, 0x22, 0xd8, 0xa1, 0x82, 0x1d, 0x32, 0xd8, 0xa1, 0x83, 0x06,
		0x42, 0x88, 0xa0, 0x24, 0x39, 0xf1, 0x7f, 0xd7, 0x6e, 0x13, 0x0b, 0xcd, 0x2b, 0x03, 0x81, 0x8f,
		0x99, 0x1a, 0x41, 0x22, 0x61, 0x7a, 0xa1, 0x5d, 0x72, 0xa1, 0x9a, 0xde, 0x10, 0x29, 0x6e, 0xe5,
		0xee, 0x39, 0xc2, 0x10, 0x2d, 0xc1, 0x72, 0x01, 0xf7, 0x54, 0xdb, 0x70, 0x44, 0x70, 0x44, 0x70,
		0x44, 0x5b, 0xe9, 0x88, 0xfa, 0xa6, 0xe5, 0x15, 0xab, 0x0c, 0x8e, 0xa8, 0x4a, 0xd8, 0xe4, 0x37,
		0xdd, 0x7a, 0x10, 0x89, 0x6e, 0x2d, 0x59, 0xf6, 0x1f, 0xed, 0x9a, 0x52, 0x46, 0xb7, 0xa0, 0x92,
		0x2f, 0xd6, 0xb0, 0xf1, 0xe0, 0xcc, 0x00, 0x1d, 0x1c, 0x2e, 0xb4, 0xff, 0xc5, 0xd1, 0x83, 0x9d,
		0x81, 0xcf, 0xe6, 0x83, 0x19, 0xf7, 0x16, 0xd7, 0xf5, 0x6c, 0x4f, 0x3c, 0xe8, 0x9e, 0xf9, 0x24,
		0x62, 0x5d, 0xa6, 0x2a, 0x71, 0xd9, 0xcd, 0x4e, 0xad, 0xfe, 0xcc, 0x3f, 0xb5, 0xd5, 0x4a, 0xe5,
		0xb0, 0x82, 0xe9, 0x95, 0x82, 0xcd, 0xf4, 0xad, 0x35, 0x11, 0x7a, 0x6f, 0x4e, 0xe8, 0xed, 0x51,
		0xba, 0xdc, 0x38, 0x27, 0x34, 0x11, 0x6e, 0x23, 0xdc, 0x46, 0xb8, 0xbd, 0x61, 0xe1, 0x76, 0xbc,
		0xd3, 0xae, 0x6b, 0x8b, 0x3f, 0x84, 0xb1, 0x43, 0xb2, 0xd3, 0xb2, 0x6b, 0x0f, 0x48, 0xfd, 0xe2,
		0x73, 0xe3, 0xf2, 0xec, 0xe2, 0x3a, 0xce, 0x29, 0xda, 0xf5, 0xc2, 0x2a, 0x97, 0x9c, 0x38, 0xf0,
		0x90, 0x87, 0x99, 0x61, 0x39, 0xbf, 0x3c, 0x3d, 0x39, 0x57, 0xf3, 0x10, 0x18, 0x33, 0x0f, 0xc4,
		0xb7, 0xfa, 0xd7, 0xcb, 0xeb, 0xba, 0x9a, 0xf1, 0x18, 0xb2, 0xb9, 0xa1, 0x40, 0xb8, 0xcd, 0x31,
		0x64, 0xaa, 0x9b, 0x99, 0xc4, 0x03, 0x2f, 0x3f, 0x6f, 0x39, 0x4c, 0xc7, 0x0b, 0xff, 0x16, 0x2b,
		0x95, 0x99, 0x6e, 0x56, 0x12, 0xcc, 0x08, 0xe9, 0x8e, 0x30, 0xc3, 0x4e, 0x30, 0x11, 0x13, 0x40,
		0x12, 0x48, 0xf6, 0x22, 0x7c, 0x24, 0x81, 0xa4, 0x14, 0xb9, 0x13, 0xa4, 0x6e, 0xaf, 0x8c, 0xd2,
		0x6b, 0x04, 0x6d, 0x2d, 0xa6, 0x76, 0x4f, 0xe3, 0x49, 0x0e, 0x31, 0xb6, 0x63, 0x1b, 0x7a, 0x87,
		0x0e, 0x5d, 0x87, 0xcd, 0x21, 0xb9, 0x0e, 0xb8, 0x0a, 0x5c, 0xcd, 0x52, 0x72, 0x1d, 0x51, 0x16,
		0xed, 0x82, 0x19, 0x93, 0x64, 0xd3, 0x12, 0x2f, 0x7c, 0x72, 0x00, 0xe0, 0x00, 0x02, 0x5e, 0x40,
		0xe0, 0x02, 0x06, 0x76, 0x80, 0x60, 0x07, 0x0a, 0x76, 0xc0, 0xc8, 0xa6, 0xa2, 0x40, 0x05, 0x24,
		0x61, 0x83, 0xa6, 0xe5, 0x09, 0xa7, 0xad, 0x1b, 0x8c, 0x1a, 0xe5, 0xa4, 0x0b, 0xe2, 0xa9, 0xa7,
		0xdd, 0xc1, 0x61, 0x83, 0x1b, 0x4e, 0xd8, 0x59, 0x06, 0x3f, 0x66, 0x5b, 0x65, 0xd8, 0xc0, 0x67,
		0x42, 0x20, 0x69, 0x48, 0x24, 0x0d, 0x91, 0x56, 0x21, 0x93, 0xd9, 0xce, 0xba, 0x0c, 0x4b, 0x2c,
		0x6f, 0xd3, 0xef, 0x03, 0x31, 0xb2, 0x4b, 0x4e, 0xb6, 0xb9, 0x92, 0x7d, 0x1e, 0x04, 0x66, 0x71,
		0x1c, 0x02, 0xa4, 0x3b, 0xff, 0xc6, 0xe8, 0xf5, 0xfa, 0xd7, 0xf9, 0xa6, 0x35, 0xd5, 0x4c, 0x4a,
		0x77, 0xd8, 0x3e, 0xbb, 0xe2, 0x4d, 0xbf, 0xa2, 0x08, 0x87, 0x58, 0x75, 0x4d, 0x4f, 0x50, 0x9e,
		0xa7, 0x59, 0x58, 0x48, 0xe3, 0x0e, 0xe0, 0xa1, 0x65, 0x78, 0x68, 0x7a, 0x82, 0x00, 0x37, 0x9d,
		0x59, 0x02, 0x01, 0x5f, 0xcd, 0x94, 0x2a, 0x3d, 0x8f, 0x32, 0x55, 0x86, 0xa6, 0x79, 0x52, 0xa7,
		0xc7, 0xff, 0xf1, 0xac, 0x51, 0x85, 0x3b, 0x95, 0x3a, 0xec, 0x84, 0x39, 0xa5, 0x3a, 0xec, 0x47,
		0x56, 0xee, 0xed, 0xc4, 0x66, 0xb9, 0x73, 0x70, 0x99, 0x96, 0xf1, 0xac, 0x09, 0x30, 0xa6, 0x5c,
		0x2f, 0x98, 0x00, 0x63, 0xea, 0xf5, 0x36, 0x98, 0xc1, 0x4e, 0x3e, 0x5a, 0x6d, 0x66, 0xda, 0x87,
		0x89, 0x67, 0xcf, 0xd1, 0xb5, 0xbe, 0xe5, 0x7a, 0xfa, 0x7d, 0x87, 0xc9, 0x9b, 0x39, 0xa2, 0x2d,
		0x9c, 0xd1, 0x89, 0xc2, 0xdc, 0x39, 0x85, 0x30, 0x2b, 0xec, 0xcb, 0x69, 0xb5, 0x5a, 0x2a, 0x2b,
		0x57, 0xc3, 0x9c, 0x13, 0xa5, 0xb4, 0x5f, 0xda, 0x2f, 0x7e, 0x50, 0xbe, 0x7d, 0x39, 0x2d, 0xd7,
		0xaa, 0xc5, 0xf0, 0xed, 0xc3, 0xfd, 0xd2, 0x7e, 0x49, 0x65, 0x44, 0x28, 0xe6, 0x60, 0x75, 0x59,
		0xd0, 0x3a, 0x99, 0x3f, 0x66, 0xec, 0x90, 0x15, 0xbf, 0x2e, 0x8d, 0x63, 0x23, 0x4d, 0x30, 0x50,
		0x0d, 0xd2, 0xca, 0x96, 0x4b, 0x2b, 0x1d, 0xfd, 0x5e, 0x74, 0xb4, 0xfb, 0x8e, 0x6d, 0xfc, 0xd4,
		0xec, 0x76, 0xdb, 0x15, 0x1e, 0xb3, 0xd4, 0xb2, 0xa4, 0x43, 0x48, 0x2f, 0x90, 0x5e, 0x20, 0xbd,
		0x40, 0x7a, 0x81, 0xf4, 0x02, 0xe9, 0x05, 0xd2, 0x0b, 0xa4, 0x17, 0x48, 0x2f, 0x90, 0x5e, 0x20,
		0xbd, 0x6c, 0xa0, 0xf4, 0xb2, 0x40, 0xc1, 0x8b, 0xca, 0x9f, 0x3f, 0x3e, 0x5d, 0xfe, 0x09, 0xa5,
		0x25, 0x9f, 0x4a, 0xcb, 0xca, 0xf9, 0x04, 0x66, 0x41, 0x58, 0x81, 0xb0, 0x12, 0xea, 0x1c, 0xae,
		0xf9, 0xff, 0x09, 0x89, 0xb2, 0x4a, 0xd0, 0x1d, 0x44, 0x15, 0x88, 0x2a, 0x10, 0x55, 0x20, 0xaa,
		0x40, 0x54, 0x81, 0xa8, 0x02, 0x51, 0x05, 0xa2, 0x0a, 0x44, 0x15, 0x88, 0x2a, 0x10, 0x55, 0xb6,
		0x46, 0x54, 0xb9, 0x82, 0xa8, 0xb2, 0x51, 0xa2, 0xca, 0x15, 0x44, 0x15, 0x88, 0x2a, 0x5b, 0x2d,
		0xaa, 0xf4, 0xef, 0x25, 0x9c, 0xd8, 0x9d, 0xe9, 0x05, 0x12, 0x0a, 0x0e, 0xed, 0x6e, 0xad, 0x7a,
		0x82, 0x43, 0xbb, 0xf4, 0xd6, 0xbe, 0xe9, 0x87, 0x76, 0x6f, 0x26, 0x87, 0x76, 0xff, 0x6d, 0xf4,
		0x1d, 0x47, 0x58, 0xde, 0xee, 0xde, 0xc1, 0xfe, 0xfe, 0x41, 0xf8, 0x89, 0xe6, 0xe8, 0x2b, 0xd3,
		0x38, 0xeb, 0x2e, 0x79, 0x2f, 0x6c, 0xb9, 0x25, 0x9e, 0x71, 0xfe, 0x37, 0x6f, 0x6e, 0x7f, 0x2b,
		0x4a, 0x91, 0x66, 0xa1, 0x32, 0x66, 0x50, 0xac, 0x8c, 0xa4, 0x3e, 0x26, 0xdd, 0xdc, 0x51, 0xd4,
		0xd0, 0x77, 0x3d, 0xdd, 0x63, 0x28, 0xa2, 0x3f, 0x6c, 0x36, 0xe3, 0xa5, 0x9e, 0x4a, 0x28, 0xf5,
		0x84, 0x52, 0x4f, 0xbf, 0x8f, 0xcd, 0x50, 0xea, 0x29, 0x5a, 0x83, 0x28, 0xf5, 0x04, 0xd6, 0x08,
		0xd6, 0x08, 0xd6, 0x08, 0xd6, 0x98, 0x45, 0xd6, 0xc8, 0x57, 0xea, 0x09, 0x15, 0x8d, 0xe0, 0x88,
		0x90, 0x01, 0xb6, 0xbd, 0xde, 0x08, 0x19, 0x60, 0x4c, 0x76, 0x8f, 0x0c, 0xb0, 0x85, 0xff, 0x90,
		0x01, 0xb6, 0x5e, 0x3f, 0xc8, 0x00, 0x8b, 0x65, 0x02, 0xc8, 0x00, 0xcb, 0x8d, 0x19, 0x20, 0x9b,
		0x82, 0x60, 0xba, 0x90, 0x01, 0xb6, 0xa6, 0x2b, 0x46, 0x45, 0x23, 0x54, 0x34, 0x42, 0x45, 0x23,
		0x2e, 0x54, 0x43, 0xe1, 0x1e, 0x14, 0xee, 0x81, 0xc2, 0x00, 0x85, 0x01, 0x0a, 0x03, 0x14, 0x06,
		0x28, 0x0c, 0x50, 0x18, 0xa0, 0x30, 0x40, 0x61, 0x80, 0xc2, 0x00, 0x85, 0x61, 0xcb, 0x14, 0x06,
		0x14, 0xee, 0xd9, 0x2c, 0x41, 0x01, 0x85, 0x7b, 0xa0, 0x1f, 0xa0, 0x3e, 0x0d, 0xb4, 0x03, 0x68,
		0x07, 0xd0, 0x0e, 0xa0, 0x1d, 0x40, 0x3b, 0x80, 0x76, 0x00, 0xed, 0x00, 0xda, 0x01, 0xb4, 0x03,
		0x68, 0x07, 0xd0, 0x0e, 0xe4, 0x68, 0x07, 0xa8, 0x4f, 0xb3, 0x59, 0xda, 0x01, 0xea, 0xd3, 0x6c,
		0x89, 0x76, 0x80, 0x32, 0x2c, 0x9b, 0xa9, 0x14, 0xe0, 0x40, 0x5d, 0x26, 0x45, 0x02, 0x1c, 0xa8,
		0xa3, 0xb7, 0x76, 0x94, 0x61, 0xc9, 0x40, 0x19, 0x16, 0x54, 0x1b, 0x89, 0xe6, 0x77, 0x33, 0x53,
		0x6d, 0x64, 0x58, 0x44, 0x23, 0x2b, 0xc5, 0x46, 0x76, 0x52, 0x9c, 0x74, 0x0e, 0x1a, 0xa8, 0xfe,
		0x7a, 0x14, 0x16, 0x19, 0xe3, 0x63, 0x28, 0xfd, 0xb1, 0xbf, 0x3f, 0xaa, 0x37, 0x73, 0xe0, 0xbd,
		0xf4, 0x84, 0xf2, 0x6f, 0xe5, 0x4f, 0xdb, 0xd0, 0x2c, 0x53, 0xf3, 0x5f, 0xb9, 0xc7, 0xe7, 0x97,
		0xa7, 0x27, 0xe7, 0x7f, 0xe6, 0xac, 0x28, 0x48, 0x30, 0xe4, 0x79, 0x2e, 0x09, 0xb2, 0xd6, 0x9c,
		0x64, 0x92, 0x4e, 0x7c, 0x16, 0xae, 0xe1, 0x98, 0x3d, 0x96, 0xf2, 0x59, 0xa1, 0xc9, 0x5e, 0x5a,
		0x9d, 0x17, 0xc5, 0xb4, 0x8c, 0x4e, 0xbf, 0x25, 0x14, 0xef, 0x51, 0x28, 0x01, 0x90, 0x29, 0xc3,
		0x21, 0xeb, 0x3b, 0x01, 0x5a, 0x2b, 0xbe, 0x11, 0xdc, 0x5a, 0xfe, 0xbf, 0x8e, 0xf1, 0x4e, 0x31,
		0x5d, 0xc5, 0xed, 0x09, 0xc3, 0x6c, 0x9b, 0xa2, 0xa5, 0x78, 0xb6, 0x72, 0x3f, 0xfe, 0xa6, 0x67,
		0x0f, 0x3f, 0x39, 0xc2, 0x55, 0x45, 0x74, 0x44, 0x30, 0x15, 0xc4, 0x53, 0xcc, 0x18, 0x3c, 0x4f,
		0x9b, 0x7f, 0x6b, 0x6a, 0x0e, 0x18, 0xc2, 0x16, 0x19, 0x91, 0xf3, 0xcc, 0x6a, 0x90, 0x36, 0xdd,
		0x9b, 0x1d, 0x10, 0xed, 0xa4, 0x2b, 0x87, 0x24, 0xf5, 0xcd, 0xc4, 0x81, 0x58, 0x76, 0x02, 0x30,
		0x95, 0xa4, 0xbe, 0x9a, 0xd3, 0x37, 0x3c, 0x6b, 0x84, 0x8f, 0x17, 0xc3, 0xa7, 0x3b, 0x1b, 0x3d,
		0xdc, 0xdd, 0x69, 0xf8, 0x28, 0x0d, 0xbf, 0xdb, 0xbb, 0xfa, 0xa8, 0xff, 0xbb, 0xf3, 0xa0, 0xff,
		0x9d, 0x74, 0xcc, 0x2a, 0x81, 0x41, 0xa8, 0x8e, 0xe8, 0xda, 0x04, 0x05, 0xe5, 0x42, 0x8f, 0x32,
		0x6a, 0x2f, 0xa1, 0x89, 0xd2, 0x54, 0x90, 0x23, 0x53, 0x9e, 0x28, 0x95, 0x26, 0x9e, 0x1c, 0x14,
		0x6a, 0x8f, 0xc8, 0x26, 0x1f, 0xb1, 0x39, 0x3d, 0xb6, 0x1c, 0x92, 0x74, 0x89, 0x14, 0x55, 0xc5,
		0x37, 0xd5, 0x18, 0xaf, 0x05, 0xe2, 0xca, 0x91, 0xa3, 0x76, 0x33, 0x5e, 0x3a, 0xb2, 0x80, 0xd2,
		0x91, 0x28, 0x1d, 0x29, 0x09, 0x30, 0xb2, 0x29, 0xbf, 0x91, 0x97, 0x8e, 0x1c, 0x7a, 0x7a, 0xcd,
		0x7d, 0x71, 0x3d, 0xd1, 0xe5, 0xa3, 0xa8, 0xb3, 0xdd, 0x60, 0xc7, 0x0b, 0xb9, 0xb1, 0xa9, 0xc2,
		0x92, 0x54, 0xf2, 0xae, 0x20, 0x37, 0x76, 0x3c, 0x0a, 0xfc, 0x7b, 0x5f, 0x66, 0x4f, 0xd3, 0x5b,
		0x2d, 0x47, 0xb8, 0x2e, 0xe7, 0xf6, 0xd7, 0x11, 0x43, 0xdb, 0xa3, 0xb1, 0xc9, 0x6d, 0x2a, 0x94,
		0xd9, 0x7b, 0x2a, 0x33, 0x8e, 0xfd, 0xc2, 0x1c, 0x7c, 0x64, 0xec, 0xa3, 0xa1, 0x7b, 0x9e, 0x70,
		0x2c, 0xb6, 0xe9, 0x08, 0x3b, 0xda, 0xbd, 0x29, 0x68, 0x47, 0xcd, 0xb7, 0x9b, 0xa2, 0x76, 0xd4,
		0x1c, 0xfe, 0xb5, 0x18, 0xfc, 0xf1, 0x5a, 0x1a, 0xbc, 0x95, 0x6e, 0x0a, 0x5a, 0x79, 0xf4, 0x6e,
		0xa9, 0x72, 0x53, 0xd0, 0x2a, 0xcd, 0xbd, 0xdd, 0xdb, 0xdb, 0xfd, 0xa8, 0xdf, 0xd9, 0x7b, 0x3d,
		0x1c, 0xf0, 0x25, 0x2f, 0x35, 0x39, 0xa7, 0xe1, 0xf2, 0xea, 0xec, 0x6f, 0x69, 0x73, 0xf1, 0xcf,
		0xae, 0xac, 0xd9, 0xd8, 0xfb, 0x83, 0x71, 0x3e, 0x78, 0x92, 0xc9, 0x3e, 0xe4, 0x18, 0x96, 0xaa,
		0x80, 0xa5, 0xa8, 0xb0, 0x14, 0x58, 0xb5, 0xae, 0xb5, 0x4f, 0xb4, 0x2f, 0xcd, 0xd7, 0xe2, 0x87,
		0xf2, 0xe0, 0x78, 0xef, 0xb5, 0x36, 0x98, 0x7f, 0xf3, 0x6d, 0xd9, 0xc7, 0x8a, 0x1f, 0x6a, 0x83,
		0xe3, 0x15, 0xff, 0x52, 0x1d, 0x1c, 0xaf, 0xd9, 0x46, 0x65, 0xb0, 0xbb, 0xf0, 0x51, 0xff, 0xfd,
		0xd2, 0xaa, 0x2f, 0x94, 0x57, 0x7c, 0xe1, 0x70, 0xd5, 0x17, 0x0e, 0x57, 0x7c, 0x61, 0xe5, 0x23,
		0x95, 0x56, 0x7c, 0xa1, 0x32, 0x78, 0x5b, 0xf8, 0xfc, 0xee, 0xf2, 0x8f, 0x56, 0x07, 0x7b, 0x6f,
		0xab, 0xfe, 0xad, 0x36, 0x78, 0x3b, 0xde, 0xdb, 0x03, 0x50, 0xaf, 0x0d, 0xd4, 0x30, 0x4f, 0xf9,
		0xe6, 0x99, 0x3f, 0xc7, 0x85, 0x5b, 0x3a, 0x49, 0xdb, 0xdf, 0xf6, 0x5b, 0x3a, 0x51, 0xdc, 0x1e,
		0x12, 0x19, 0x24, 0x32, 0x48, 0x64, 0x39, 0x96, 0xc8, 0x70, 0x7c, 0x5c, 0x26, 0x0f, 0xc5, 0xf1,
		0xf1, 0x44, 0x36, 0x8b, 0xe3, 0xe3, 0x11, 0x4d, 0x00, 0xc7, 0xc7, 0xb3, 0x45, 0x17, 0x14, 0x1c,
		0x1f, 0xc7, 0xf1, 0xf1, 0x55, 0xae, 0x78, 0x69, 0xed, 0x73, 0x1c, 0x1c, 0xcf, 0x76, 0xa0, 0xba,
		0x34, 0x60, 0x5d, 0x3e, 0x93, 0xc0, 0x29, 0x88, 0x25, 0xdb, 0x2b, 0x96, 0x3c, 0x99, 0x8e, 0xd7,
		0xd7, 0x3b, 0x9a, 0x61, 0x3a, 0x46, 0xdf, 0xf4, 0x34, 0xb3, 0x25, 0x2c, 0xcf, 0x6c, 0x9b, 0xc2,
		0xe1, 0xd3, 0x4f, 0x7e, 0xd3, 0x27, 0x24, 0x15, 0x48, 0x2a, 0x90, 0x54, 0x20, 0xa9, 0x30, 0x49,
		0x2a, 0x87, 0x25, 0x46, 0x49, 0xa5, 0x06, 0x49, 0x05, 0x92, 0x0a, 0x24, 0x95, 0x74, 0x24, 0x95,
		0x72, 0xe9, 0xa8, 0x7c, 0x54, 0xad, 0x95, 0x8e, 0xa0, 0xab, 0x80, 0xaf, 0x80, 0xaf, 0x64, 0x8b,
		0xaf, 0xa0, 0x3a, 0x8a, 0xa4, 0xc3, 0xb9, 0xc3, 0x23, 0x1c, 0xa3, 0x42, 0x0c, 0x99, 0xa9, 0x8f,
		0x42, 0x72, 0x58, 0x58, 0xf7, 0x04, 0xfd, 0x91, 0xba, 0x61, 0xb3, 0x19, 0x3f, 0x51, 0x57, 0xc2,
		0x89, 0x3a, 0x9c, 0xa8, 0x93, 0x4c, 0x1a, 0x71, 0xa2, 0x8e, 0x62, 0x55, 0xe0, 0x44, 0x1d, 0xb4,
		0x2d, 0x68, 0x5b, 0xd0, 0xb6, 0x70, 0xa2, 0xee, 0xbd, 0xb1, 0xc1, 0x89, 0xba, 0x35, 0xe7, 0x00,
		0x27, 0xea, 0x70, 0xa2, 0x8e, 0xb4, 0x37, 0x9c, 0xa8, 0x93, 0xe6, 0x08, 0xe4, 0xc2, 0x12, 0x4e,
		0xd4, 0x45, 0x86, 0x25, 0x1c, 0x59, 0xc2, 0x89, 0xba, 0xac, 0x03, 0x35, 0xcc, 0x13, 0x27, 0xea,
		0x24, 0xf3, 0x21, 0x65, 0x9b, 0xee, 0x24, 0xc5, 0xc1, 0x31, 0x28, 0x41, 0x50, 0x82, 0xa0, 0x04,
		0xe5, 0x54, 0x09, 0xc2, 0xc1, 0x31, 0x99, 0x74, 0x0b, 0x59, 0x4e, 0x89, 0x6c, 0x16, 0x59, 0x4e,
		0x11, 0x4d, 0x00, 0x07, 0xc7, 0xb2, 0x15, 0x15, 0x2b, 0x38, 0x38, 0x86, 0x83, 0x63, 0xab, 0x5c,
		0x31, 0x0e, 0x8e, 0xe5, 0x30, 0x50, 0x5d, 0x1a, 0xb0, 0xe2, 0xe0, 0xd8, 0xd6, 0x6a, 0x02, 0x38,
		0x1f, 0x05, 0xe5, 0x00, 0xca, 0x01, 0x94, 0x83, 0xed, 0x50, 0x0e, 0x70, 0x3e, 0x0a, 0xca, 0x01,
		0x28, 0xe3, 0x26, 0x2a, 0x07, 0x38, 0x1f, 0x85, 0xb0, 0x3c, 0xed, 0xb0, 0x1c, 0xc7, 0x80, 0xe4,
		0x1e, 0x03, 0xc2, 0x2d, 0xc9, 0x9c, 0xa2, 0x55, 0xce, 0x6f, 0x49, 0xfe, 0x56, 0xff, 0x7a, 0x79,
		0x5d, 0xc7, 0x35, 0xc9, 0x99, 0xba, 0x26, 0x79, 0x3c, 0x29, 0xb8, 0x27, 0x39, 0xbc, 0x38, 0x77,
		0x88, 0x65, 0xb1, 0x6e, 0xce, 0x1d, 0x7d, 0x15, 0x37, 0x25, 0x67, 0x8c, 0xd6, 0xff, 0xfe, 0xa6,
		0x64, 0xbe, 0x09, 0xc7, 0x5d, 0xc9, 0x8c, 0x71, 0x23, 0xee, 0x4a, 0x5e, 0x15, 0x87, 0xa5, 0x78,
		0x59, 0xf2, 0xb7, 0xe1, 0x03, 0xe4, 0xf0, 0xb6, 0x64, 0x9a, 0x03, 0xdf, 0xa4, 0x07, 0xbd, 0xc9,
		0xef, 0x4a, 0x2e, 0xe1, 0xae, 0xe4, 0xf8, 0x7e, 0x10, 0x77, 0x25, 0xa7, 0x08, 0xd6, 0x64, 0x77,
		0x25, 0xeb, 0xc6, 0x48, 0xba, 0x21, 0x2e, 0xec, 0x30, 0x6a, 0x97, 0xb6, 0xb2, 0x43, 0x01, 0x77,
		0x25, 0xe7, 0x88, 0x2a, 0xa2, 0xb2, 0x43, 0x0e, 0x54, 0x38, 0xf2, 0x6d, 0xad, 0xd0, 0x6e, 0xef,
		0x6d, 0xbb, 0x23, 0x74, 0x4a, 0x8e, 0x14, 0xfa, 0xff, 0xe2, 0x06, 0x15, 0xd6, 0x19, 0xc7, 0xaa,
		0x94, 0xe7, 0x1e, 0xc2, 0x39, 0x98, 0x6e, 0x1c, 0x50, 0x0c, 0x28, 0x06, 0x14, 0x6f, 0x25, 0x14,
		0xbb, 0x9e, 0x63, 0x5a, 0x0f, 0x1c, 0x48, 0xfc, 0x71, 0x83, 0x90, 0xb8, 0xe7, 0x08, 0x43, 0xb4,
		0x46, 0x49, 0xaf, 0xc4, 0x40, 0x3c, 0xd5, 0x36, 0x70, 0x18, 0x38, 0x0c, 0x1c, 0xde, 0x4a, 0x1c,
		0x26, 0x3f, 0x1b, 0xc6, 0x70, 0x26, 0x8c, 0x29, 0xa3, 0x8b, 0x61, 0x4f, 0x86, 0x33, 0x83, 0x8b,
		0x3b, 0x73, 0x4b, 0x5a, 0x96, 0x0e, 0x7f, 0x76, 0x0e, 0x43, 0x86, 0x16, 0x6b, 0x66, 0x96, 0x8c,
		0xb3, 0x5c, 0x9b, 0x34, 0xbd, 0x19, 0xdd, 0xb4, 0x6b, 0x6e, 0x50, 0xe4, 0xe9, 0x51, 0x7a, 0x9c,
		0xd0, 0xdb, 0x04, 0xad, 0x22, 0xda, 0x44, 0xb4, 0x89, 0x68, 0x73, 0x2b, 0xa3, 0xcd, 0xe1, 0xa9,
		0x25, 0xef, 0xc5, 0x11, 0x6d, 0x0e, 0xea, 0x4f, 0xe8, 0x3a, 0xd5, 0xb3, 0xd1, 0xa3, 0x7e, 0xd2,
		0x5d, 0xc1, 0x97, 0xda, 0x54, 0xbf, 0xf8, 0xdc, 0xb8, 0x3c, 0xbb, 0xb8, 0xbe, 0xbb, 0xfe, 0x6f,
		0xa3, 0x4e, 0xbd, 0x2c, 0x82, 0xa8, 0xc2, 0x65, 0x39, 0x09, 0xc1, 0x14, 0x07, 0x8d, 0x87, 0xe5,
		0xfc, 0xf2, 0xf4, 0xe4, 0x5c, 0xcd, 0x43, 0x5c, 0xc8, 0x3c, 0x10, 0xc3, 0xe4, 0xbf, 0xac, 0x1f,
		0x6c, 0x6a, 0x6e, 0x5c, 0xde, 0xd3, 0x00, 0x79, 0x4f, 0xc4, 0x79, 0x4f, 0x04, 0x89, 0xe7, 0xe9,
		0x64, 0x1d, 0x3d, 0x3d, 0x77, 0x74, 0x8b, 0x2e, 0xeb, 0x68, 0xd8, 0x5c, 0xc6, 0xb2, 0x8e, 0x0a,
		0xc8, 0x3a, 0xca, 0x48, 0x4c, 0x8b, 0xac, 0xa3, 0x68, 0xbf, 0x8a, 0x2c, 0xeb, 0xc8, 0x18, 0xaf,
		0x05, 0x62, 0xca, 0x3b, 0x6a, 0x37, 0xe3, 0xf7, 0xc9, 0xe4, 0x84, 0xf4, 0x8a, 0xa7, 0x9e, 0x05,
		0xc6, 0x9b, 0x02, 0xe3, 0x0d, 0x06, 0x1e, 0x37, 0xc9, 0xac, 0xd7, 0x60, 0x4b, 0xc6, 0xa1, 0x18,
		0xbe, 0x33, 0x1f, 0xa8, 0x00, 0x22, 0x05, 0x7c, 0xb8, 0x41, 0x48, 0x1a, 0x18, 0x49, 0x03, 0x25,
		0x39, 0xe0, 0xc4, 0x43, 0x91, 0xf3, 0x57, 0xfb, 0x83, 0x3c, 0x43, 0x67, 0x21, 0x88, 0xf9, 0x88,
		0x4b, 0x3b, 0x73, 0x76, 0x69, 0x27, 0x61, 0xe8, 0x25, 0x2c, 0xfd, 0xbe, 0x23, 0x18, 0x0b, 0x6b,
		0x8f, 0x3b, 0x80, 0x73, 0x84, 0x73, 0x84, 0x73, 0x84, 0x73, 0x24, 0xb5, 0x78, 0xfa, 0x93, 0x04,
		0x0b, 0xde, 0xb1, 0x08, 0xef, 0xb8, 0xbd, 0xde, 0xd1, 0x0d, 0x60, 0x4f, 0x33, 0x2d, 0x4f, 0x38,
		0x6d, 0xdd, 0x60, 0xdc, 0x81, 0x5c, 0xe8, 0x09, 0xfe, 0x12, 0xfe, 0x12, 0xfe, 0x12, 0xfe, 0x12,
		0x64, 0x12, 0xee, 0x92, 0xd5, 0x5d, 0xa2, 0xf4, 0x9b, 0xa4, 0xad, 0xf7, 0x60, 0xcb, 0x79, 0x54,
		0x62, 0x4a, 0xdd, 0xc4, 0x73, 0xaa, 0x3d, 0x21, 0x1c, 0x97, 0xf1, 0xa8, 0xea, 0xb0, 0xfd, 0x8c,
		0x6f, 0xe1, 0x95, 0xb0, 0x85, 0x97, 0xa7, 0x40, 0x07, 0x5b, 0x78, 0x59, 0xde, 0xc2, 0x9b, 0x59,
		0xfa, 0x9c, 0x1a, 0xe5, 0x74, 0x37, 0x3c, 0xcc, 0xab, 0x08, 0xe6, 0x05, 0xe6, 0x05, 0xe6, 0x95,
		0x4d, 0x5e, 0x40, 0x0d, 0x5c, 0x61, 0xc3, 0x3e, 0xa0, 0x84, 0x97, 0x7d, 0x1f, 0x73, 0xa7, 0x29,
		0xcf, 0xf4, 0xc6, 0x64, 0x2d, 0x3c, 0x42, 0x12, 0x3b, 0xac, 0xc9, 0x80, 0x37, 0x89, 0x30, 0x27,
		0x0b, 0xee, 0xa4, 0xc3, 0x9e, 0x74, 0xf8, 0x93, 0x0b, 0x83, 0x3c, 0x70, 0xc8, 0x04, 0x8b, 0xfc,
		0xc2, 0xd4, 0xc2, 0x8a, 0xe9, 0x08, 0xbd, 0x4d, 0x7b, 0x2a, 0x69, 0x65, 0x3c, 0x56, 0xe3, 0xbc,
		0x7e, 0x7e, 0x24, 0x34, 0xec, 0xef, 0x0f, 0x13, 0xee, 0x0f, 0x66, 0x90, 0x39, 0x27, 0x97, 0x15,
		0x70, 0x1c, 0xdf, 0xa6, 0xa9, 0x1d, 0xfa, 0xae, 0x19, 0x51, 0xd4, 0x14, 0x95, 0x1c, 0xd0, 0xb3,
		0x29, 0x09, 0xf0, 0x80, 0xf0, 0x80, 0xf0, 0x80, 0x19, 0x25, 0x08, 0x61, 0x07, 0x86, 0x6d, 0x79,
		0x8e, 0xdd, 0xd1, 0x7a, 0x1d, 0xdd, 0x12, 0xda, 0x93, 0x65, 0xba, 0xfc, 0x16, 0x3d, 0x75, 0x36,
		0x62, 0xbe, 0x6f, 0x66, 0x4b, 0xe3, 0x25, 0x11, 0xd2, 0xc8, 0x84, 0x4c, 0x48, 0x4d, 0x01, 0x5a,
		0x65, 0x43, 0x6c, 0x6a, 0x50, 0x9b, 0x1a, 0xe4, 0xa6, 0x03, 0xbd, 0xbc, 0x10, 0xcc, 0x0c, 0xc5,
		0xf2, 0x48, 0xc9, 0xc2, 0x8a, 0x7b, 0xb2, 0x4c, 0xba, 0x72, 0xa9, 0xeb, 0xe0, 0x63, 0x4d, 0x42,
		0x57, 0xbc, 0xd7, 0x34, 0xce, 0xff, 0x27, 0x07, 0x40, 0x14, 0x59, 0xd7, 0x38, 0x2e, 0x74, 0x3a,
		0xae, 0x20, 0x55, 0xfc, 0x20, 0xb7, 0x5f, 0xd9, 0x57, 0xfb, 0x2d, 0xae, 0x11, 0x59, 0x57, 0xfd,
		0x49, 0x86, 0x99, 0x59, 0x93, 0xd2, 0x9f, 0x53, 0x34, 0xa9, 0x6a, 0xad, 0x56, 0x2b, 0x15, 0x2b,
		0xb0, 0x2c, 0x59, 0x96, 0xb5, 0xb3, 0x19, 0xbd, 0x34, 0x73, 0xed, 0xe6, 0xcf, 0x4d, 0xd7, 0x3b,
		0xf1, 0x3c, 0x47, 0x8e, 0xab, 0xff, 0x6a, 0x5a, 0xf5, 0xe1, 0x95, 0x54, 0x92, 0x4c, 0xdd, 0xc7,
		0x94, 0xa9, 0x1e, 0x8b, 0x1f, 0xcb, 0xe5, 0x6a, 0xad, 0x5c, 0x2e, 0xd4, 0x0e, 0x6b, 0x85, 0xa3,
		0x4a, 0xa5, 0x58, 0x95, 0xb1, 0xe0, 0xd5, 0x4b, 0xa7, 0x25, 0x1c, 0xd1, 0xfa, 0xf4, 0xa2, 0x1e,
		0x2b, 0x56, 0xbf, 0xd3, 0x91, 0xd9, 0xe5, 0x77, 0x37, 0xd8, 0xda, 0xe7, 0x5f, 0xdb, 0xdc, 0x96,
		0xca, 0x70, 0x91, 0xe5, 0xbb, 0x7d, 0xba, 0x9e, 0xee, 0xf5, 0xdd, 0x4d, 0x0c, 0xdf, 0x26, 0x07,
		0xac, 0x7b, 0x8e, 0x30, 0x74, 0x4f, 0xb4, 0x54, 0x89, 0x9e, 0x5e, 0x32, 0xe3, 0x5d, 0xc6, 0x7c,
		0x47, 0x53, 0x2b, 0xd9, 0xdb, 0xa6, 0xc5, 0x80, 0x97, 0x32, 0xe1, 0xa9, 0xb9, 0x87, 0xd7, 0xcf,
		0x96, 0xd7, 0xcf, 0xe5, 0xb5, 0xee, 0x86, 0xdd, 0xb7, 0x3c, 0xca, 0x1c, 0xd5, 0x77, 0xd1, 0x2b,
		0xec, 0x51, 0x8e, 0xa0, 0x5a, 0x84, 0xa0, 0x1a, 0x7f, 0xae, 0x20, 0xa8, 0x6e, 0x8e, 0x3b, 0x81,
		0xa0, 0x1a, 0x7d, 0xc8, 0xb8, 0xf7, 0xb8, 0xc2, 0x8e, 0xee, 0xfb, 0x5d, 0xad, 0x25, 0x0c, 0xbd,
		0xa7, 0x99, 0x8e, 0xd6, 0xfb, 0xe9, 0xb9, 0xf2, 0x16, 0x42, 0x78, 0x70, 0x78, 0xe1, 0x11, 0x24,
		0xd9, 0xa5, 0x9c, 0x9d, 0x2f, 0xe9, 0x80, 0x9d, 0x06, 0x70, 0xa7, 0x08, 0xe0, 0x59, 0xe2, 0x09,
		0x52, 0x01, 0x3d, 0x9b, 0x3c, 0x41, 0x1a, 0xc0, 0x4b, 0x26, 0x09, 0x92, 0xd6, 0xac, 0xb4, 0x9d,
		0xb4, 0x55, 0xe1, 0x71, 0xb5, 0x2c, 0x73, 0xcd, 0x8e, 0x20, 0xf8, 0xa3, 0xc4, 0x2e, 0xe5, 0x6e,
		0xb2, 0xc9, 0x57, 0x6b, 0xc2, 0x1f, 0x9a, 0xc6, 0xa6, 0x5b, 0xd8, 0x39, 0xf3, 0xcd, 0x3c, 0xef,
		0xf6, 0x9f, 0xf6, 0x56, 0xc9, 0x64, 0x79, 0xa5, 0xb5, 0x65, 0x22, 0x19, 0xb9, 0x66, 0x4d, 0x2f,
		0x85, 0xcd, 0xb9, 0x05, 0xd3, 0x4b, 0x47, 0xbf, 0x87, 0x35, 0x66, 0xc0, 0x5b, 0xcb, 0xef, 0xad,
		0xb9, 0x21, 0x52, 0xa5, 0x04, 0xb4, 0x98, 0x22, 0x7c, 0xdd, 0x7e, 0xc7, 0x33, 0x0d, 0xdd, 0xf5,
		0x52, 0xa7, 0x9e, 0x73, 0x4f, 0x02, 0x06, 0x0a, 0x06, 0x0a, 0x06, 0x0a, 0x06, 0x0a, 0x06, 0x0a,
		0x06, 0x0a, 0x06, 0x0a, 0x06, 0x8a, 0x98, 0x1f, 0x0c, 0x14, 0x0c, 0x14, 0x0c, 0x14, 0x0c, 0x74,
		0xc3, 0x18, 0x68, 0xda, 0xbc, 0x13, 0x6c, 0x13, 0x6c, 0x13, 0x6c, 0x13, 0x6c, 0x13, 0x6c, 0x13,
		0x6c, 0x13, 0x6c, 0x13, 0x6c, 0x13, 0xf1, 0x3d, 0xd8, 0x26, 0xd8, 0x26, 0xd8, 0x26, 0xd8, 0xe6,
		0x66, 0xb1, 0x4d, 0x61, 0xa5, 0xcb, 0x36, 0xa7, 0xfa, 0x07, 0xdb, 0x04, 0xdb, 0x04, 0xdb, 0x04,
		0xdb, 0x04, 0xdb, 0x04, 0xdb, 0x04, 0xdb, 0x04, 0xdb, 0x44, 0x7c, 0x0f, 0xb6, 0x09, 0xb6, 0x09,
		0xb6, 0x09, 0xb6, 0xb9, 0x11, 0x6c, 0xb3, 0xe5, 0xd8, 0xbd, 0x54, 0x37, 0x37, 0xe7, 0x1f, 0x00,
		0x7c, 0x13, 0x7c, 0x13, 0x7c, 0x13, 0x7c, 0x13, 0x7c, 0x13, 0x7c, 0x13, 0x7c, 0x13, 0x7c, 0x13,
		0x11, 0x3e, 0xf8, 0x26, 0xf8, 0x26, 0xf8, 0x26, 0xf8, 0xe6, 0x46, 0xf0, 0x4d, 0xf1, 0x6c, 0x88,
		0x9e, 0x97, 0x2a, 0xe3, 0x5c, 0x7c, 0x04, 0x70, 0x4e, 0x70, 0x4e, 0x70, 0x4e, 0x70, 0x4e, 0x70,
		0x4e, 0x70, 0x4e, 0x70, 0x4e, 0x70, 0x4e, 0x44, 0xf9, 0xe0, 0x9c, 0xe0, 0x9c, 0xe0, 0x9c, 0xe0,
		0x9c, 0x1b, 0xc1, 0x39, 0x3d, 0xdb, 0xd3, 0x3b, 0x23, 0xbe, 0x77, 0xff, 0xe2, 0x89, 0x14, 0x38,
		0xe7, 0xe2, 0x23, 0x80, 0x73, 0x82, 0x73, 0x82, 0x73, 0x82, 0x73, 0x82, 0x73, 0x82, 0x73, 0x82,
		0x73, 0x82, 0x73, 0x22, 0xca, 0x07, 0xe7, 0x04, 0xe7, 0x04, 0xe7, 0x04, 0xe7, 0xdc, 0x38, 0xce,
		0x99, 0xce, 0x36, 0xe7, 0xc2, 0x13, 0x80, 0x71, 0x82, 0x71, 0x82, 0x71, 0x82, 0x71, 0x82, 0x71,
		0x82, 0x71, 0x82, 0x71, 0x82, 0x71, 0x22, 0xc6, 0x07, 0xe3, 0x04, 0xe3, 0x04, 0xe3, 0x04, 0xe3,
		0xdc, 0x20, 0xc6, 0x39, 0xac, 0xdc, 0x93, 0xea, 0x2e, 0xe7, 0xf4, 0x23, 0x80, 0x73, 0x82, 0x73,
		0x82, 0x73, 0x82, 0x73, 0x82, 0x73, 0x82, 0x73, 0x82, 0x73, 0x82, 0x73, 0x22, 0xca, 0x07, 0xe7,
		0x04, 0xe7, 0x04, 0xe7, 0x04, 0xe7, 0xdc, 0x38, 0xce, 0x99, 0xe6, 0x2e, 0x27, 0xea, 0xd5, 0x82,
		0x71, 0x82, 0x71, 0x82, 0x71, 0x82, 0x71, 0x82, 0x71, 0x82, 0x71, 0x82, 0x71, 0x22, 0xc6, 0x07,
		0xe3, 0x04, 0xe3, 0x04, 0xe3, 0x04, 0xe3, 0xdc, 0x34, 0xc6, 0xd9, 0xb7, 0x4c, 0x43, 0x77, 0xd3,
		0x2d, 0x20, 0xb4, 0xe4, 0x19, 0xc0, 0x3a, 0xc1, 0x3a, 0xc1, 0x3a, 0xc1, 0x3a, 0xc1, 0x3a, 0xc1,
		0x3a, 0xc1, 0x3a, 0xc1, 0x3a, 0x11, 0xe7, 0x83, 0x75, 0x82, 0x75, 0x82, 0x75, 0x82, 0x75, 0xee,
		0xe4, 0xbb, 0x07, 0x66, 0x2c, 0x52, 0x4f, 0x2c, 0xcb, 0xf6, 0x74, 0x7f, 0xa5, 0x49, 0x81, 0x1f,
		0xd5, 0x35, 0x1e, 0x45, 0x57, 0xef, 0xe9, 0xde, 0xa3, 0x1f, 0x41, 0x1d, 0xd8, 0x3d, 0x61, 0x19,
		0x01, 0xcb, 0xd3, 0x2c, 0xe1, 0xfd, 0xb2, 0x9d, 0x9f, 0x9a, 0x69, 0xb9, 0x9e, 0x6e, 0x19, 0xe2,
		0x60, 0xfe, 0x0d, 0x77, 0xe1, 0x9d, 0x03, 0xc3, 0xb6, 0x2c, 0x11, 0xe0, 0x84, 0xd6, 0xb3, 0x4d,
		0xcb, 0x73, 0x17, 0xde, 0x39, 0x10, 0x56, 0x6b, 0xf4, 0x4f, 0xe3, 0xbf, 0x1d, 0x3c, 0x3d, 0x77,
		0x74, 0x2b, 0x7c, 0xa9, 0xf5, 0x84, 0x70, 0xdc, 0xd9, 0x97, 0x07, 0xae, 0xa7, 0x7b, 0x7e, 0xf3,
		0x41, 0x80, 0x27, 0x83, 0x5e, 0xab, 0xae, 0xe7, 0xf4, 0x0d, 0xcf, 0x1a, 0x85, 0x96, 0x17, 0xc3,
		0x5f, 0x7a, 0x36, 0xfa, 0xa1, 0x77, 0xa7, 0xe1, 0xcf, 0x6a, 0xf8, 0x0f, 0x79, 0x57, 0x1f, 0x3d,
		0xed, 0xdd, 0x0f, 0xff, 0xb7, 0x84, 0x2f, 0x1b, 0x42, 0x38, 0x77, 0xa7, 0xe3, 0xa7, 0xde, 0xc9,
		0xa7, 0xd9, 0x33, 0x9a, 0xbc, 0xea, 0x4f, 0xae, 0xa6, 0xb7, 0x5a, 0x8e, 0x70, 0xf9, 0x85, 0x9b,
		0x90, 0x28, 0xcc, 0xf4, 0xca, 0xbc, 0xa0, 0xe5, 0x48, 0x34, 0xd2, 0xa4, 0x19, 0x99, 0x92, 0x4c,
		0x0a, 0x52, 0x8c, 0x6c, 0x09, 0x26, 0x35, 0xe9, 0x25, 0x35, 0xc9, 0x25, 0x1d, 0xa9, 0x25, 0xdf,
		0x41, 0x81, 0x34, 0x49, 0x25, 0x5c, 0x71, 0x66, 0x4f, 0x12, 0x3e, 0x4e, 0x63, 0x64, 0xf1, 0x48,
		0x42, 0x5f, 0xa3, 0xb1, 0x94, 0xa3, 0x9d, 0xa4, 0x20, 0x82, 0x99, 0xbd, 0xa7, 0xb2, 0xc4, 0xb9,
		0x5b, 0x98, 0x43, 0x99, 0x42, 0x58, 0x43, 0xf7, 0x3c, 0xe1, 0x58, 0xd2, 0xa5, 0x30, 0x75, 0xf7,
		0xa6, 0xa0, 0x1d, 0x35, 0xdf, 0x6e, 0x8a, 0xda, 0x51, 0x73, 0xf8, 0xd7, 0x62, 0xf0, 0xc7, 0x6b,
		0x69, 0xf0, 0x56, 0xba, 0x29, 0x68, 0xe5, 0xd1, 0xbb, 0xa5, 0xca, 0x4d, 0x41, 0xab, 0x34, 0xf7,
		0x76, 0x6f, 0x6f, 0xf7, 0xa3, 0x7e, 0x67, 0xef, 0xf5, 0x70, 0x20, 0x4f, 0x83, 0x6e, 0xca, 0x9c,
		0xb6, 0xcb, 0xab, 0xb3, 0xbf, 0x53, 0x9b, 0xbb, 0x7f, 0x76, 0x65, 0xcd, 0xde, 0xde, 0x1f, 0xea,
		0xa6, 0xb1, 0xf7, 0x0f, 0x1b, 0x0c, 0x9b, 0x55, 0xc0, 0x26, 0x37, 0x6c, 0x06, 0xab, 0x48, 0xd7,
		0xda, 0x27, 0xda, 0x97, 0xe6, 0x6b, 0xf1, 0x43, 0x79, 0x70, 0xbc, 0xf7, 0x5a, 0x1b, 0xcc, 0xbf,
		0xf9, 0xb6, 0xec, 0x63, 0xc5, 0x0f, 0xb5, 0xc1, 0xf1, 0x8a, 0x7f, 0xa9, 0x0e, 0x8e, 0xd7, 0x6c,
		0xa3, 0x32, 0xd8, 0x5d, 0xf8, 0xa8, 0xff, 0x7e, 0x69, 0xd5, 0x17, 0xca, 0x2b, 0xbe, 0x70, 0xb8,
		0xea, 0x0b, 0x87, 0x2b, 0xbe, 0xb0, 0xf2, 0x91, 0x4a, 0x2b, 0xbe, 0x50, 0x19, 0xbc, 0x2d, 0x7c,
		0x7e, 0x77, 0xf9, 0x47, 0xab, 0x83, 0xbd, 0xb7, 0x55, 0xff, 0x56, 0x1b, 0xbc, 0x1d, 0xef, 0xed,
		0xc1, 0x91, 0xb0, 0x39, 0x12, 0x98, 0xb3, 0x7c, 0x73, 0xde, 0x3c, 0xc7, 0xba, 0x93, 0xef, 0xdf,
		0x91, 0x63, 0xf5, 0x31, 0x90, 0x96, 0x25, 0x6b, 0x8f, 0xc3, 0x3e, 0xa1, 0x3c, 0x42, 0x79, 0x84,
		0xf2, 0x08, 0xe5, 0x11, 0xca, 0xe3, 0xf4, 0x6d, 0x9c, 0x56, 0xbf, 0x2b, 0x9c, 0xe1, 0x0e, 0xa8,
		0x44, 0xe9, 0xb1, 0x2c, 0xa1, 0xaf, 0xba, 0xd5, 0xef, 0xca, 0x5b, 0xdf, 0xd7, 0xf6, 0x95, 0xe7,
		0x98, 0xd6, 0x83, 0xdc, 0x5c, 0xbc, 0x82, 0x3f, 0x87, 0xdf, 0x1b, 0x32, 0x29, 0x74, 0xd1, 0xef,
		0xf2, 0xf3, 0xe5, 0x7f, 0x2e, 0xd4, 0xcd, 0xca, 0xa3, 0xb4, 0xcf, 0x02, 0xa8, 0x92, 0x38, 0x79,
		0xc1, 0x20, 0x1e, 0x2b, 0x45, 0x89, 0x93, 0xf7, 0xbd, 0xe1, 0x47, 0x0e, 0x48, 0x3d, 0xd9, 0xd8,
		0x18, 0xdb, 0xb1, 0xfb, 0x9e, 0x70, 0xb4, 0xae, 0x6e, 0xc8, 0x8b, 0xb1, 0xa7, 0xfa, 0x44, 0x8c,
		0x8d, 0x18, 0x1b, 0x31, 0x36, 0x62, 0x6c, 0xc4, 0xd8, 0x53, 0x2b, 0xae, 0xab, 0x1b, 0x69, 0x6c,
		0xef, 0x4b, 0xd8, 0xe3, 0x90, 0xbe, 0xb7, 0xa1, 0x4e, 0x8b, 0x94, 0xf3, 0xda, 0x67, 0x69, 0xb0,
		0xf7, 0x5a, 0x91, 0xb0, 0x89, 0xdb, 0x94, 0x31, 0xb0, 0x69, 0x68, 0xed, 0xea, 0x3f, 0xef, 0x0f,
		0xaf, 0x04, 0x2d, 0xb8, 0x99, 0x6b, 0x7c, 0x11, 0xcf, 0x9e, 0xa3, 0x6b, 0x7d, 0xcb, 0xf5, 0xf4,
		0xfb, 0x8e, 0x24, 0xa4, 0x71, 0x3d, 0xdd, 0xeb, 0xbb, 0x9b, 0x9c, 0x67, 0xd3, 0x12, 0x3d, 0x47,
		0x18, 0xba, 0x27, 0x5a, 0x5b, 0x76, 0x42, 0x74, 0x34, 0xb5, 0xdb, 0x7c, 0x42, 0x74, 0x6a, 0xee,
		0x37, 0xed, 0x90, 0x28, 0xf6, 0xa1, 0x52, 0xe0, 0xc8, 0xfd, 0x9e, 0x67, 0x76, 0x25, 0xee, 0x41,
		0x8d, 0xfa, 0x03, 0x37, 0x06, 0x37, 0x06, 0x37, 0x06, 0x37, 0x06, 0x37, 0x9e, 0x2e, 0x20, 0x6a,
		0x76, 0x85, 0x67, 0x1a, 0x3f, 0x5d, 0x29, 0x65, 0x04, 0x24, 0x96, 0x0f, 0x50, 0xbf, 0x5b, 0xc3,
		0x93, 0xbb, 0xaa, 0xa5, 0x5b, 0xb6, 0x2b, 0x0c, 0xdb, 0x6a, 0x49, 0xa1, 0xff, 0x72, 0xcb, 0x15,
		0x48, 0xa4, 0x02, 0x69, 0x94, 0x27, 0x48, 0xab, 0x2c, 0x41, 0xea, 0x07, 0xc0, 0xd3, 0x3b, 0xf8,
		0x2d, 0xb1, 0xfc, 0x40, 0x2a, 0x65, 0x07, 0x32, 0x54, 0x6e, 0x60, 0x9b, 0xad, 0x0c, 0xfc, 0x2e,
		0x5d, 0x7e, 0xb7, 0x93, 0x23, 0xec, 0x90, 0x55, 0x26, 0x20, 0x57, 0xe5, 0x01, 0x78, 0x62, 0x69,
		0x7a, 0xbb, 0x60, 0xb0, 0x09, 0xf5, 0xc9, 0x32, 0x83, 0x91, 0xd0, 0x1e, 0x1c, 0xbb, 0xdf, 0xe3,
		0x3b, 0x4a, 0x1f, 0x86, 0xc9, 0xf3, 0x1d, 0x32, 0xd9, 0xf9, 0x78, 0xeb, 0x88, 0xa9, 0xf9, 0x50,
		0x3b, 0x28, 0x31, 0x75, 0x20, 0x41, 0x33, 0x90, 0xa8, 0x15, 0xc8, 0xd2, 0x08, 0xa4, 0x6b, 0x03,
		0xd2, 0x35, 0x01, 0xb9, 0x5a, 0x40, 0xbe, 0x7c, 0xdb, 0x67, 0xd3, 0xe1, 0x5d, 0x30, 0xb3, 0xd8,
		0x25, 0x4f, 0x76, 0x9d, 0xeb, 0x57, 0x8e, 0xfc, 0x5a, 0x84, 0xfc, 0x9a, 0x65, 0x48, 0x95, 0x0d,
		0xad, 0xa9, 0x41, 0x6c, 0x6a, 0x50, 0x9b, 0x0e, 0xe4, 0xca, 0x21, 0x5c, 0xdc, 0xf2, 0x2b, 0x37,
		0x14, 0x87, 0x1d, 0x19, 0x3d, 0xed, 0xc9, 0x32, 0xe5, 0x97, 0xee, 0x1e, 0xf5, 0x8b, 0x72, 0xdd,
		0x79, 0x83, 0xe8, 0x14, 0xa1, 0x3a, 0x2d, 0xc8, 0x4e, 0x1d, 0xba, 0x53, 0x87, 0xf0, 0x74, 0xa1,
		0x5c, 0x9e, 0x86, 0xa6, 0x6c, 0x45, 0xb9, 0xee, 0x8e, 0xd0, 0xdb, 0x8e, 0x68, 0xa7, 0x51, 0x6d,
		0xa3, 0x26, 0xb7, 0xda, 0x46, 0x20, 0x9e, 0xed, 0xef, 0x8f, 0xab, 0x58, 0x0e, 0x7d, 0x0e, 0x2e,
		0xf9, 0x58, 0x7b, 0x08, 0xc5, 0x83, 0x23, 0x5c, 0x37, 0x9d, 0x08, 0x61, 0xaa, 0x6f, 0x44, 0x09,
		0x88, 0x12, 0x10, 0x25, 0x20, 0x4a, 0x40, 0x94, 0x80, 0x28, 0x81, 0x3d, 0x4a, 0x98, 0xf2, 0x3b,
		0x88, 0x14, 0xd6, 0x1e, 0x46, 0x39, 0xc5, 0x5c, 0x16, 0x8c, 0x54, 0x46, 0x3d, 0x97, 0x05, 0xf3,
		0x94, 0x1d, 0x1f, 0x94, 0x10, 0x1f, 0x20, 0x3e, 0x40, 0x7c, 0x80, 0xf8, 0x60, 0xc9, 0x50, 0xca,
		0x12, 0x8a, 0xc3, 0x0e, 0x25, 0x0b, 0xc6, 0x0b, 0x40, 0x21, 0x55, 0x38, 0x4e, 0x89, 0x1a, 0xa6,
		0x46, 0x11, 0xd3, 0x74, 0x05, 0x19, 0x70, 0x09, 0x69, 0xbb, 0x86, 0xcc, 0xb8, 0x88, 0xcc, 0xb8,
		0x8a, 0x6c, 0xb8, 0x0c, 0xb9, 0xae, 0x43, 0xb2, 0x0b, 0x49, 0x8f, 0x6a, 0x2e, 0xac, 0xf8, 0x27,
		0xcb, 0xd4, 0xcc, 0x56, 0x1a, 0x0b, 0x7e, 0x84, 0xef, 0xb5, 0x14, 0xba, 0x4e, 0xe7, 0x52, 0xc9,
		0xf1, 0x7f, 0xe9, 0x00, 0x9c, 0x92, 0xf6, 0x25, 0x93, 0xe1, 0x43, 0x84, 0x29, 0xf8, 0x1f, 0xd2,
		0x7d, 0x8e, 0xac, 0x5c, 0xf3, 0x37, 0x59, 0x93, 0x69, 0x5f, 0xf7, 0x97, 0x12, 0x0c, 0xce, 0x9a,
		0x68, 0x8a, 0x97, 0x51, 0x2e, 0x9a, 0x68, 0xb5, 0x56, 0xab, 0x95, 0xd2, 0xba, 0x88, 0x12, 0x96,
		0x9a, 0xb1, 0xf0, 0x20, 0xbd, 0x5e, 0x9b, 0x1b, 0x7a, 0x11, 0xa7, 0xcc, 0xf3, 0x66, 0x29, 0xec,
		0xac, 0x2e, 0x84, 0x5b, 0xd2, 0x77, 0x58, 0x41, 0xa7, 0x41, 0xa7, 0x41, 0xa7, 0x41, 0xa7, 0x41,
		0xa7, 0x41, 0xa7, 0x41, 0xa7, 0x41, 0xa7, 0x41, 0x52, 0x40, 0xa7, 0x41, 0xa7, 0x61, 0xa9, 0xa0,
		0xd3, 0xa0, 0xd3, 0xc9, 0x8c, 0x56, 0x62, 0xb1, 0xfb, 0x95, 0xe1, 0x96, 0xb4, 0xe2, 0xf7, 0xa0,
		0xd3, 0xa0, 0xd3, 0xa0, 0xd3, 0xa0, 0xd3, 0xa0, 0xd3, 0x52, 0x57, 0xbc, 0xdc, 0xe2, 0xfd, 0xab,
		0x40, 0x5e, 0xe6, 0x85, 0xc5, 0x13, 0xc0, 0x4d, 0xe9, 0xaa, 0xd7, 0xf0, 0x01, 0xb2, 0x50, 0xec,
		0x7f, 0x21, 0x6e, 0x4b, 0x63, 0x22, 0xd2, 0xbc, 0x78, 0x37, 0x7c, 0x8a, 0x6c, 0x5c, 0x0e, 0xb0,
		0x35, 0x71, 0xf4, 0x46, 0x25, 0xac, 0x4a, 0x2a, 0xa0, 0xb6, 0xd0, 0x6f, 0x4e, 0x0a, 0xaa, 0xcd,
		0x95, 0xf7, 0x9a, 0x7b, 0xcd, 0x59, 0x6f, 0x4d, 0xbe, 0xd9, 0xe5, 0xbb, 0x44, 0xc7, 0xff, 0x88,
		0x97, 0x49, 0x3e, 0xb2, 0x22, 0x6d, 0x2f, 0x55, 0x3d, 0x37, 0x5d, 0xef, 0xc4, 0xf3, 0x24, 0xd5,
		0x07, 0xf9, 0x6a, 0x5a, 0xf5, 0x8e, 0xf0, 0x63, 0x5b, 0x49, 0xda, 0x94, 0xfa, 0x55, 0x7f, 0x9e,
		0xea, 0x31, 0x9d, 0xd2, 0xa8, 0xea, 0xa5, 0xd3, 0x12, 0x8e, 0x68, 0x7d, 0xf2, 0xa7, 0xd8, 0xea,
		0x77, 0x3a, 0x32, 0xbb, 0xfc, 0xee, 0x0a, 0x47, 0x8a, 0xf8, 0xc6, 0xbd, 0x42, 0x24, 0x43, 0xfd,
		0x66, 0x40, 0xbc, 0x2a, 0xe5, 0xb0, 0x9e, 0xd3, 0x37, 0x3c, 0x6b, 0xc4, 0x6b, 0x2e, 0x86, 0xbf,
		0xfc, 0x6c, 0xf4, 0xc3, 0xef, 0x4e, 0xc3, 0x9f, 0xd9, 0xf0, 0x1f, 0xfa, 0xae, 0x3e, 0x7a, 0xfa,
		0xbb, 0x1f, 0xfe, 0x6f, 0x0b, 0x5f, 0x36, 0x84, 0x70, 0xee, 0x7e, 0x58, 0xa6, 0xff, 0xe7, 0x5f,
		0xc1, 0x93, 0xa3, 0x00, 0x2d, 0xff, 0xe2, 0x42, 0x01, 0xda, 0xdf, 0x2e, 0xa6, 0xdc, 0x94, 0xa2,
		0xdd, 0xc9, 0xb0, 0xad, 0x8d, 0x43, 0x9b, 0x60, 0x5c, 0x79, 0x14, 0x0f, 0xde, 0x28, 0x86, 0x3f,
		0x6a, 0x49, 0x25, 0x4a, 0x91, 0x10, 0x95, 0x48, 0x88, 0x42, 0xa8, 0x8d, 0x95, 0x19, 0x10, 0x73,
		0x02, 0x84, 0x0c, 0x61, 0x03, 0x5d, 0x98, 0x40, 0x8b, 0xca, 0x74, 0xd8, 0x49, 0xd3, 0x12, 0x91,
		0x41, 0x73, 0x19, 0x72, 0x66, 0x0d, 0x98, 0xc6, 0x2a, 0x92, 0xcf, 0x21, 0xc1, 0xfc, 0xa9, 0xe1,
		0x2f, 0x7b, 0xb2, 0x4c, 0xba, 0x22, 0xf0, 0x93, 0x4c, 0xed, 0x99, 0xe6, 0x89, 0xec, 0x8d, 0xb6,
		0x9c, 0x05, 0x79, 0xb9, 0x0a, 0x8e, 0x5d, 0x5e, 0xc6, 0xdd, 0x5b, 0xae, 0x5d, 0x59, 0xf6, 0xdd,
		0x56, 0xf6, 0x5d, 0x54, 0xde, 0xdd, 0xd1, 0x6c, 0x61, 0x38, 0x75, 0x39, 0x86, 0x99, 0x95, 0x4f,
		0x6f, 0x5b, 0xcb, 0xf0, 0x85, 0xda, 0xbc, 0x78, 0xaa, 0xe6, 0xb0, 0x25, 0x9f, 0x70, 0x26, 0x97,
		0x48, 0x48, 0x1e, 0xe1, 0x4e, 0x0e, 0x91, 0x96, 0xfc, 0x21, 0x2d, 0xb9, 0x43, 0x4e, 0xf2, 0x46,
		0xb6, 0x09, 0x3f, 0x57, 0x15, 0x19, 0xd5, 0xec, 0x3d, 0x95, 0xf9, 0xef, 0xc4, 0x09, 0x7a, 0xc9,
		0xf9, 0x45, 0x38, 0x05, 0x5c, 0x84, 0x93, 0x01, 0x78, 0x93, 0x0e, 0x73, 0xd2, 0xe1, 0x4e, 0x2e,
		0xec, 0xf1, 0xc0, 0x1f, 0x13, 0x0c, 0xb2, 0xc3, 0xe1, 0x94, 0xb2, 0x22, 0xa3, 0x5a, 0xa2, 0xd4,
		0x2a, 0x89, 0xd2, 0xaf, 0xbd, 0x29, 0xe1, 0xda, 0x9b, 0x1c, 0x00, 0x69, 0x6a, 0x80, 0x9a, 0x1a,
		0xb0, 0xa6, 0x03, 0xb0, 0xbc, 0x40, 0xcb, 0x0c, 0xb8, 0xd2, 0x80, 0x37, 0xec, 0xc8, 0xb0, 0xfb,
		0x96, 0x27, 0x1c, 0x37, 0x85, 0x8b, 0x6f, 0xc6, 0x3d, 0x6f, 0x78, 0xd1, 0x5a, 0x14, 0xb5, 0xdf,
		0x04, 0xd8, 0x4e, 0x1d, 0xbe, 0x53, 0x87, 0xf1, 0x74, 0xe1, 0x5c, 0x0e, 0xac, 0x4b, 0x82, 0x77,
		0xe9, 0x30, 0x1f, 0x76, 0x78, 0xdf, 0xef, 0x6a, 0x2d, 0x61, 0xe8, 0x3d, 0xcd, 0x74, 0xb4, 0xde,
		0x4f, 0xcf, 0x4d, 0xef, 0x94, 0xe0, 0xe2, 0xa3, 0xe0, 0xb0, 0xe0, 0xa6, 0x39, 0x88, 0x0c, 0x38,
		0x8a, 0xb4, 0x1d, 0x46, 0x66, 0x1c, 0x47, 0x66, 0x1c, 0x48, 0x36, 0x1c, 0x89, 0x5c, 0x87, 0x22,
		0xd9, 0xb1, 0x84, 0x43, 0x9c, 0xfe, 0x61, 0xc1, 0x51, 0x98, 0x5f, 0x2d, 0xa7, 0x78, 0x54, 0xf0,
		0x23, 0xca, 0xef, 0xc8, 0xfb, 0xe1, 0x99, 0x2a, 0xbf, 0x53, 0x40, 0x51, 0x93, 0xb9, 0x65, 0x89,
		0xf2, 0x3b, 0x59, 0x2b, 0xbf, 0x93, 0xca, 0xc1, 0x1e, 0x58, 0x6d, 0x0e, 0xa2, 0x85, 0xf4, 0x7a,
		0x45, 0x29, 0x1e, 0x4a, 0xae, 0xdd, 0xed, 0x77, 0x3c, 0xd3, 0xd0, 0x5d, 0x2f, 0x33, 0x94, 0x7b,
		0xee, 0x89, 0xc0, 0xbc, 0xc1, 0xbc, 0xc1, 0xbc, 0xc1, 0xbc, 0xc1, 0xbc, 0xc1, 0xbc, 0xc1, 0xbc,
		0xc1, 0xbc, 0xc1, 0xbc, 0xc1, 0xbc, 0xc1, 0xbc, 0x61, 0xb5, 0x60, 0xde, 0x60, 0xde, 0xb9, 0x66,
		0xde, 0x59, 0xe1, 0xdb, 0x60, 0xd9, 0x60, 0xd9, 0x60, 0xd9, 0x60, 0xd9, 0x60, 0xd9, 0x60, 0xd9,
		0x60, 0xd9, 0x60, 0xd9, 0x60, 0xd9, 0x60, 0xd9, 0x60, 0xd9, 0xb0, 0x5a, 0xb0, 0x6c, 0xb0, 0xec,
		0x3c, 0xb3, 0x6c, 0x61, 0x65, 0x83, 0x65, 0x4f, 0x3d, 0x07, 0x58, 0x36, 0x58, 0x36, 0x58, 0x36,
		0x58, 0x36, 0x58, 0x36, 0x58, 0x36, 0x58, 0x36, 0x58, 0x36, 0x58, 0x36, 0x58, 0x36, 0x58, 0x36,
		0xac, 0x16, 0x2c, 0x1b, 0x2c, 0x3b, 0x87, 0x2c, 0xbb, 0xe5, 0xd8, 0xbd, 0x4c, 0x6c, 0x66, 0xcf,
		0x3f, 0x08, 0x78, 0x36, 0x78, 0x36, 0x78, 0x36, 0x78, 0x36, 0x78, 0x36, 0x78, 0x36, 0x78, 0x36,
		0x78, 0x36, 0x78, 0x36, 0x78, 0x36, 0x78, 0x36, 0xac, 0x16, 0x3c, 0x1b, 0x3c, 0x3b, 0x87, 0x3c,
		0x5b, 0x3c, 0x1b, 0xa2, 0xe7, 0x65, 0x82, 0x69, 0x2f, 0x3e, 0x0a, 0xb8, 0x36, 0xb8, 0x36, 0xb8,
		0x36, 0xb8, 0x36, 0xb8, 0x36, 0xb8, 0x36, 0xb8, 0x36, 0xb8, 0x36, 0xb8, 0x36, 0xb8, 0x36, 0xb8,
		0x36, 0xac, 0x16, 0x5c, 0x1b, 0x5c, 0x3b, 0x87, 0x5c, 0xdb, 0xb3, 0x3d, 0xbd, 0x33, 0xe2, 0xb7,
		0xf7, 0x2f, 0x9e, 0x48, 0x91, 0x6b, 0x2f, 0x3e, 0x0a, 0xb8, 0x36, 0xb8, 0x36, 0xb8, 0x36, 0xb8,
		0x36, 0xb8, 0x36, 0xb8, 0x36, 0xb8, 0x36, 0xb8, 0x36, 0xb8, 0x36, 0xb8, 0x36, 0xb8, 0x36, 0xac,
		0x16, 0x5c, 0x1b, 0x5c, 0x3b, 0xe7, 0x5c, 0x3b, 0xdd, 0x6d, 0xed, 0x85, 0x27, 0x01, 0xd3, 0x06,
		0xd3, 0x06, 0xd3, 0x06, 0xd3, 0x06, 0xd3, 0x06, 0xd3, 0x06, 0xd3, 0x06, 0xd3, 0x06, 0xd3, 0x06,
		0xd3, 0x06, 0xd3, 0x86, 0xd5, 0x82, 0x69, 0x83, 0x69, 0xe7, 0x96, 0x69, 0x0f, 0x2b, 0x91, 0x65,
		0x62, 0x57, 0x7b, 0xfa, 0x51, 0xc0, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1,
		0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0x61, 0xb5, 0xe0, 0xda, 0xe0,
		0xda, 0x39, 0xe7, 0xda, 0x59, 0xd8, 0xd5, 0x46, 0xfd, 0x71, 0x30, 0x6d, 0x30, 0x6d, 0x30, 0x6d,
		0x30, 0x6d, 0x30, 0x6d, 0x30, 0x6d, 0x30, 0x6d, 0x30, 0x6d, 0x30, 0x6d, 0x30, 0x6d, 0x58, 0x2d,
		0x98, 0x36, 0x98, 0x76, 0xbe, 0x99, 0x76, 0xdf, 0x32, 0x0d, 0xdd, 0xcd, 0x46, 0x61, 0xb4, 0x25,
		0xcf, 0x02, 0xb6, 0x0d, 0xb6, 0x0d, 0xb6, 0x0d, 0xb6, 0x0d, 0xb6, 0x0d, 0xb6, 0x0d, 0xb6, 0x0d,
		0xb6, 0x0d, 0xb6, 0x0d, 0xb6, 0x0d, 0xb6, 0x0d, 0xab, 0x05, 0xdb, 0x06, 0xdb, 0xce, 0x55, 0x4f,
		0x92, 0xb0, 0x4d, 0x3d, 0xb1, 0x2c, 0xdb, 0xd3, 0xfd, 0x95, 0x2a, 0x15, 0xce, 0x54, 0xd7, 0x78,
		0x14, 0x5d, 0xbd, 0xa7, 0x7b, 0x8f, 0x7e, 0x84, 0x77, 0x60, 0xf7, 0x84, 0x65, 0x04, 0xac, 0x56,
		0xb3, 0x84, 0xf7, 0xcb, 0x76, 0x7e, 0x6a, 0xa6, 0xe5, 0x7a, 0xba, 0x65, 0x88, 0x83, 0xf9, 0x37,
		0xdc, 0x85, 0x77, 0x0e, 0x0c, 0xdb, 0xb2, 0x44, 0x80, 0x37, 0x5a, 0xcf, 0x36, 0x2d, 0xcf, 0x5d,
		0x78, 0xe7, 0x40, 0x58, 0xad, 0xd1, 0x3f, 0x8d, 0xff, 0x76, 0xf0, 0xf4, 0xdc, 0xd1, 0xad, 0xf0,
		0xa5, 0xf6, 0x64, 0x99, 0xee, 0xcc, 0xab, 0x03, 0xb3, 0xf7, 0x54, 0x3e, 0x70, 0x3d, 0xdd, 0xf3,
		0x7b, 0x08, 0x62, 0x50, 0x99, 0x0a, 0x83, 0xea, 0x7a, 0x4e, 0xdf, 0xf0, 0xac, 0x51, 0x14, 0x7c,
		0x31, 0xfc, 0xd1, 0x67, 0xa3, 0xdf, 0x7c, 0x77, 0x1a, 0xfe, 0xc2, 0x86, 0xff, 0xc0, 0x77, 0xf5,
		0xd1, 0x93, 0xdf, 0xfd, 0xf0, 0x7f, 0x56, 0xf8, 0xf2, 0x87, 0x65, 0xde, 0x9d, 0xf5, 0x9e, 0xca,
		0x77, 0xa7, 0xe3, 0x5f, 0xb0, 0xb3, 0x19, 0xab, 0x84, 0xb7, 0x07, 0xe6, 0xf5, 0x27, 0x7b, 0xdd,
		0xe5, 0x6d, 0xbd, 0xf1, 0x1a, 0x29, 0x9f, 0xe9, 0xf0, 0xb4, 0xcc, 0x64, 0x8c, 0xb2, 0x8c, 0x30,
		0x3f, 0xc6, 0xc7, 0x88, 0xee, 0xb4, 0x68, 0xce, 0xb3, 0x3e, 0xe8, 0xad, 0x97, 0xc1, 0x72, 0x55,
		0xb3, 0xf7, 0x54, 0x65, 0xb3, 0xd7, 0x50, 0x74, 0x0a, 0x7a, 0x61, 0x5a, 0x77, 0x23, 0x4d, 0xa9,
		0xc8, 0xd4, 0x3c, 0xf7, 0xf6, 0x80, 0x8c, 0x6d, 0x00, 0x89, 0x72, 0xbf, 0x2c, 0x59, 0x5f, 0xba,
		0x7c, 0x2f, 0x5d, 0xa6, 0x97, 0x2b, 0xc7, 0xe7, 0xcb, 0xd7, 0x7e, 0x36, 0x1d, 0x66, 0x27, 0x1b,
		0xc4, 0x4d, 0xec, 0x46, 0x3c, 0x5e, 0x97, 0xc3, 0xee, 0x98, 0xed, 0x89, 0x17, 0x28, 0x17, 0x01,
		0xb3, 0xc4, 0xdc, 0x91, 0xc4, 0xfd, 0xd3, 0x14, 0xf6, 0x4b, 0x65, 0xef, 0x8f, 0xa6, 0xb6, 0x1f,
		0x9a, 0xda, 0xfe, 0x67, 0x3a, 0xfb, 0x9d, 0xf9, 0x66, 0xda, 0xdc, 0xc0, 0x1b, 0x76, 0x14, 0x4a,
		0x44, 0xd2, 0xec, 0x7f, 0x6e, 0x83, 0x54, 0x96, 0x38, 0x25, 0x09, 0x96, 0xa5, 0xc5, 0xb3, 0x69,
		0xc2, 0x74, 0x8a, 0x70, 0x9d, 0x16, 0x6c, 0xa7, 0x0e, 0xdf, 0xa9, 0xc3, 0x78, 0xba, 0x70, 0x2e,
		0x07, 0xd6, 0x25, 0xc1, 0xbb, 0x74, 0x98, 0x0f, 0x3b, 0xbc, 0xef, 0x77, 0x47, 0x99, 0x87, 0xa6,
		0x93, 0x72, 0x22, 0xe4, 0xe2, 0xa3, 0x20, 0x0f, 0x72, 0xd3, 0x1c, 0x44, 0x06, 0x1c, 0x45, 0xda,
		0x0e, 0x23, 0x33, 0x8e, 0x23, 0x33, 0x0e, 0x24, 0x1b, 0x8e, 0x44, 0xae, 0x43, 0x91, 0xec, 0x58,
		0xc2, 0x21, 0x46, 0x1e, 0x24, 0xf2, 0x20, 0x25, 0xff, 0x70, 0xe4, 0x41, 0x4e, 0x3d, 0x07, 0x32,
		0xca, 0x32, 0x82, 0x84, 0xb3, 0x26, 0x8a, 0x3c, 0x48, 0x58, 0x6d, 0x0e, 0xa2, 0x85, 0xf4, 0x7a,
		0xc5, 0xa9, 0x43, 0x4a, 0xae, 0xdd, 0xed, 0x77, 0xbc, 0xe1, 0xa9, 0xbf, 0xac, 0x50, 0xee, 0xb9,
		0x27, 0x02, 0xf3, 0x06, 0xf3, 0x06, 0xf3, 0x06, 0xf3, 0x06, 0xf3, 0x06, 0xf3, 0x06, 0xf3, 0x06,
		0xf3, 0x06, 0xf3, 0x06, 0xf3, 0x06, 0xf3, 0x86, 0xd5, 0x82, 0x79, 0x83, 0x79, 0xe7, 0x9a, 0x79,
		0x67, 0x85, 0x6f, 0x83, 0x65, 0x83, 0x65, 0x83, 0x65, 0x83, 0x65, 0x83, 0x65, 0x83, 0x65, 0x83,
		0x65, 0x83, 0x65, 0x83, 0x65, 0x83, 0x65, 0x83, 0x65, 0xc3, 0x6a, 0xc1, 0xb2, 0xc1, 0xb2, 0xf3,
		0xcc, 0xb2, 0xb3, 0x70, 0x7b, 0xcd, 0xdc, 0x73, 0x80, 0x65, 0x83, 0x65, 0x83, 0x65, 0x83, 0x65,
		0x83, 0x65, 0x83, 0x65, 0x83, 0x65, 0x83, 0x65, 0x83, 0x65, 0x83, 0x65, 0x83, 0x65, 0xc3, 0x6a,
		0xc1, 0xb2, 0xc1, 0xb2, 0x73, 0xc8, 0xb2, 0x5b, 0x8e, 0xdd, 0xcb, 0xc4, 0x66, 0xf6, 0xfc, 0x83,
		0x80, 0x67, 0x83, 0x67, 0x83, 0x67, 0x83, 0x67, 0x83, 0x67, 0x83, 0x67, 0x83, 0x67, 0x83, 0x67,
		0x83, 0x67, 0x83, 0x67, 0x83, 0x67, 0xc3, 0x6a, 0xc1, 0xb3, 0xc1, 0xb3, 0x73, 0xc8, 0xb3, 0xc5,
		0xb3, 0x21, 0x7a, 0xd9, 0xb8, 0x22, 0x76, 0xf1, 0x51, 0xc0, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1,
		0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0x61,
		0xb5, 0xe0, 0xda, 0xe0, 0xda, 0x39, 0xe4, 0xda, 0x9e, 0xed, 0xe9, 0x9d, 0x11, 0xbf, 0xbd, 0x7f,
		0xf1, 0x44, 0x8a, 0x5c, 0x7b, 0xf1, 0x51, 0xc0, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1,
		0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0xc1, 0xb5, 0x61, 0xb5, 0xe0,
		0xda, 0xe0, 0xda, 0x39, 0xe7, 0xda, 0xe9, 0x6e, 0x6b, 0x2f, 0x3c, 0x09, 0x98, 0x36, 0x98, 0x36,
		0x98, 0x36, 0x98, 0x36, 0x98, 0x36, 0x98, 0x36, 0x98, 0x36, 0x98, 0x36, 0x98, 0x36, 0x98, 0x36,
		0x98, 0x36, 0xac, 0x16, 0x4c, 0x1b, 0x4c, 0x3b, 0xb7, 0x4c, 0x7b, 0x58, 0x89, 0x2c, 0x13, 0xbb,
		0xda, 0xd3, 0x8f, 0x02, 0xae, 0x0d, 0xae, 0x0d, 0xae, 0x0d, 0xae, 0x0d, 0xae, 0x0d, 0xae, 0x0d,
		0xae, 0x0d, 0xae, 0x0d, 0xae, 0x0d, 0xae, 0x0d, 0xae, 0x0d, 0xab, 0x05, 0xd7, 0x06, 0xd7, 0xce,
		0x39, 0xd7, 0xce, 0xc2, 0xae, 0x36, 0xea, 0x8f, 0x83, 0x69, 0x83, 0x69, 0x83, 0x69, 0x83, 0x69,
		0x83, 0x69, 0x83, 0x69, 0x83, 0x69, 0x83, 0x69, 0x83, 0x69, 0x83, 0x69, 0xc3, 0x6a, 0xc1, 0xb4,
		0xc1, 0xb4, 0xf3, 0xcd, 0xb4, 0xfb, 0x96, 0x69, 0xe8, 0x6e, 0x36, 0x0a, 0xa3, 0x2d, 0x79, 0x16,
		0xb0, 0x6d, 0xb0, 0x6d, 0xb0, 0x6d, 0xb0, 0x6d, 0xb0, 0x6d, 0xb0, 0x6d, 0xb0, 0x6d, 0xb0, 0x6d,
		0xb0, 0x6d, 0xb0, 0x6d, 0xb0, 0x6d, 0x58, 0x2d, 0xd8, 0x36, 0xd8, 0x76, 0xae, 0x7a, 0x92, 0x84,
		0x6d, 0xea, 0x89, 0x65, 0xd9, 0x9e, 0xee, 0xaf, 0x54, 0xa9, 0x70, 0xa6, 0xba, 0xc6, 0xa3, 0xe8,
		0xea, 0x3d, 0xdd, 0x7b, 0xf4, 0x23, 0xbc, 0x03, 0xbb, 0x27, 0x2c, 0x23, 0x60, 0xb5, 0x9a, 0x25,
		0xbc, 0x5f, 0xb6, 0xf3, 0x53, 0x33, 0x2d, 0xd7, 0xd3, 0x2d, 0x43, 0x1c, 0xcc, 0xbf, 0xe1, 0x2e,
		0xbc, 0x73, 0x60, 0xd8, 0x96, 0x25, 0x02, 0xbc, 0xd1, 0x7a, 0xb6, 0x69, 0x79, 0xee, 0xc2, 0x3b,
		0x07, 0xc2, 0x6a, 0x8d, 0xfe, 0x69, 0xfc, 0xb7, 0x83, 0xa7, 0xe7, 0x8e, 0x6e, 0x85, 0x2f, 0xb5,
		0x27, 0xcb, 0x74, 0x67, 0x5e, 0x1d, 0x98, 0xbd, 0xa7, 0xea, 0x81, 0xeb, 0xe9, 0x9e, 0xdf, 0x43,
		0x10, 0x83, 0xca, 0x54, 0x18, 0x54, 0xd7, 0x73, 0xfa, 0x86, 0x67, 0x8d, 0xa2, 0xe0, 0x8b, 0xe1,
		0x8f, 0x3e, 0x1b, 0xfd, 0xe6, 0xbb, 0xd3, 0xf0, 0x17, 0x36, 0xfc, 0x07, 0xbe, 0xab, 0x8f, 0x9e,
		0xfc, 0xee, 0x87, 0xff, 0xb3, 0xc2, 0x97, 0x3f, 0x2c, 0xf3, 0xee, 0xac, 0xf7, 0x54, 0xbd, 0x3b,
		0x1d, 0xff, 0x82, 0x9d, 0xcd, 0x58, 0x25, 0xbc, 0x3d, 0x30, 0xaf, 0x3f, 0xd9, 0xeb, 0x2e, 0x6f,
		0xeb, 0x8d, 0xd7, 0x48, 0xf9, 0x4c, 0x87, 0xa7, 0x65, 0x26, 0x63, 0x94, 0x65, 0x84, 0xf9, 0x31,
		0x3e, 0x46, 0x74, 0xa7, 0x45, 0x73, 0x9e, 0xf5, 0x41, 0x6f, 0xbd, 0x0c, 0x96, 0xab, 0x0e, 0x01,
		0x82, 0xcb, 0x60, 0x43, 0xd5, 0x69, 0xd8, 0x0d, 0xd3, 0xca, 0x1b, 0xa9, 0x4a, 0x45, 0xa6, 0xe6,
		0xc3, 0x0d, 0x82, 0x12, 0x53, 0x07, 0x12, 0x36, 0x02, 0x24, 0x0a, 0xfe, 0xb2, 0x84, 0x7d, 0xe9,
		0x02, 0xbe, 0x74, 0xa1, 0x5e, 0xae, 0x20, 0x9f, 0x2f, 0x6f, 0xfb, 0xd9, 0x74, 0x78, 0x17, 0xcc,
		0xbd, 0x63, 0xb6, 0x1e, 0x84, 0xd6, 0xb2, 0xbb, 0xba, 0x04, 0x01, 0x35, 0x5c, 0x9f, 0xb3, 0xdd,
		0x32, 0xdb, 0x97, 0x9c, 0x1d, 0x57, 0x69, 0x3b, 0xac, 0x32, 0x77, 0x54, 0x53, 0xd8, 0x41, 0x95,
		0xbd, 0x63, 0x9a, 0xda, 0x0e, 0x69, 0x6a, 0x3b, 0xa2, 0xe9, 0xec, 0x80, 0xe6, 0x9b, 0x7b, 0x4b,
		0xdb, 0xd1, 0x9c, 0x64, 0xaa, 0x98, 0x96, 0x77, 0x58, 0x92, 0xb1, 0xe0, 0x46, 0xf8, 0x58, 0x93,
		0xd0, 0x95, 0xdc, 0xed, 0x49, 0x89, 0xda, 0x64, 0x1a, 0xdb, 0x8f, 0x69, 0x6d, 0x37, 0xa6, 0xbe,
		0x51, 0x93, 0xde, 0xc6, 0x8c, 0xcc, 0xb4, 0xb9, 0x34, 0xb6, 0x0b, 0x43, 0x93, 0x2a, 0x97, 0x8e,
		0xca, 0x47, 0xd5, 0x5a, 0xe9, 0xa8, 0x02, 0xdb, 0x92, 0x65, 0x5b, 0x1b, 0x22, 0xb2, 0x37, 0xf3,
		0xaa, 0xc3, 0x32, 0x8a, 0x05, 0x9d, 0x43, 0xed, 0xc9, 0x69, 0x6b, 0x23, 0x25, 0x4f, 0x12, 0xc9,
		0x9a, 0xee, 0x14, 0x14, 0x0b, 0x14, 0x0b, 0x14, 0x0b, 0x14, 0x0b, 0x14, 0x6b, 0x46, 0xae, 0x77,
		0x4c, 0xeb, 0x41, 0x22, 0xc5, 0x2a, 0x7e, 0x84, 0x6f, 0x5c, 0xf4, 0x8d, 0x42, 0x77, 0x2c, 0xd3,
		0x7a, 0xd0, 0xba, 0x76, 0x4b, 0xa6, 0x77, 0x9c, 0xe9, 0x16, 0xfe, 0x11, 0xfe, 0x11, 0xfe, 0x11,
		0xfe, 0x11, 0xfe, 0x31, 0x25, 0x88, 0x9c, 0x71, 0x93, 0x65, 0x09, 0x7d, 0xd5, 0xad, 0x7e, 0x57,
		0xde, 0x0a, 0xbf, 0xb6, 0xaf, 0x86, 0xc1, 0x86, 0xd4, 0x8c, 0xc9, 0x82, 0x3f, 0x8b, 0xa7, 0x97,
		0x17, 0xd7, 0xdf, 0x2e, 0xcf, 0xef, 0x1a, 0xe7, 0x27, 0x17, 0x75, 0x99, 0xb9, 0x88, 0x45, 0xbf,
		0xf7, 0xcf, 0x27, 0xd7, 0x27, 0xa3, 0xae, 0x37, 0x2a, 0x09, 0xf6, 0xda, 0x3e, 0x0b, 0xd0, 0x4b,
		0xe2, 0x6c, 0xce, 0x4e, 0xa4, 0x54, 0x65, 0x6c, 0x7a, 0x1a, 0x8f, 0x95, 0x22, 0xd2, 0x41, 0x37,
		0x36, 0x1a, 0xef, 0xf6, 0x3b, 0x9e, 0xd9, 0x12, 0xae, 0x67, 0x5a, 0x41, 0x96, 0x9f, 0xe6, 0x39,
		0x7a, 0xbb, 0x6d, 0x1a, 0xf2, 0x02, 0xf3, 0x95, 0x4f, 0x80, 0x18, 0x1d, 0x31, 0x3a, 0x62, 0x74,
		0xc4, 0xe8, 0x88, 0xd1, 0x67, 0x0b, 0x5a, 0xd8, 0x96, 0xcc, 0xd8, 0xfc, 0x48, 0x42, 0x5f, 0xa3,
		0x61, 0xdc, 0xb8, 0x2c, 0x81, 0xf1, 0xa4, 0x99, 0x3d, 0x4d, 0x6f, 0xb5, 0x1c, 0xe1, 0x4a, 0x3d,
		0x1b, 0x24, 0x71, 0x06, 0xd3, 0x99, 0x49, 0xf9, 0x33, 0xba, 0x64, 0x66, 0x9f, 0xca, 0x29, 0xcc,
		0xed, 0xc2, 0x1c, 0xa7, 0x51, 0x7b, 0xa0, 0xa1, 0x7b, 0x9e, 0x70, 0xac, 0xd4, 0xaa, 0x0f, 0xa8,
		0xbb, 0x37, 0x05, 0xed, 0xa8, 0xf9, 0x76, 0x53, 0xd4, 0x8e, 0x9a, 0xc3, 0xbf, 0x16, 0x83, 0x3f,
		0x5e, 0x4b, 0x83, 0xb7, 0xd2, 0x4d, 0x41, 0x2b, 0x8f, 0xde, 0x2d, 0x55, 0x6e, 0x0a, 0x5a, 0xa5,
		0xb9, 0xb7, 0x7b, 0x7b, 0xbb, 0x1f, 0xf5, 0x3b, 0x7b, 0xaf, 0x87, 0x03, 0xf9, 0xe5, 0x42, 0x9a,
		0x69, 0x4c, 0xe7, 0xe5, 0xd5, 0xd9, 0xdf, 0xa9, 0xcf, 0xe9, 0x3f, 0xbb, 0xb2, 0x66, 0x75, 0xef,
		0x0f, 0x75, 0xd3, 0x0f, 0x3c, 0x7f, 0xd8, 0x22, 0x18, 0xae, 0x02, 0x86, 0xd3, 0x82, 0xe1, 0x60,
		0xf5, 0xe9, 0x5a, 0xfb, 0x44, 0xfb, 0xd2, 0x7c, 0x2d, 0x7e, 0x28, 0x0f, 0x8e, 0xf7, 0x5e, 0x6b,
		0x83, 0xf9, 0x37, 0xdf, 0x96, 0x7d, 0xac, 0xf8, 0xa1, 0x36, 0x38, 0x5e, 0xf1, 0x2f, 0xd5, 0xc1,
		0xf1, 0x9a, 0x6d, 0x54, 0x06, 0xbb, 0x0b, 0x1f, 0xf5, 0xdf, 0x2f, 0xad, 0xfa, 0x42, 0x79, 0xc5,
		0x17, 0x0e, 0x57, 0x7d, 0xe1, 0x70, 0xc5, 0x17, 0x56, 0x3e, 0x52, 0x69, 0xc5, 0x17, 0x2a, 0x83,
		0xb7, 0x85, 0xcf, 0xef, 0x2e, 0xff, 0x68, 0x75, 0xb0, 0xf7, 0xb6, 0xea, 0xdf, 0x6a, 0x83, 0xb7,
		0xe3, 0xbd, 0x3d, 0x38, 0x26, 0xe9, 0x8e, 0x09, 0x66, 0x2e, 0xdf, 0xcc, 0x37, 0xdf, 0x51, 0xef,
		0x6c, 0xd6, 0xef, 0x92, 0x14, 0x78, 0xa4, 0xc0, 0xe4, 0x85, 0xd5, 0xef, 0x0a, 0x67, 0x78, 0x1e,
		0x3e, 0x05, 0x2a, 0x5f, 0x96, 0xd8, 0xa7, 0xd4, 0x0d, 0xd3, 0x89, 0x80, 0x90, 0xc6, 0xc6, 0x69,
		0xd8, 0x7b, 0xb0, 0x81, 0x7a, 0x75, 0x7d, 0x72, 0x7d, 0x76, 0x7a, 0x77, 0x76, 0xf1, 0xd7, 0xb7,
		0xfa, 0xd5, 0xd5, 0xdd, 0xb7, 0x7a, 0xe3, 0xfc, 0xec, 0xf4, 0xe4, 0xfa, 0xec, 0xf2, 0x22, 0x8d,
		0xd0, 0x32, 0xd8, 0x55, 0xfd, 0xf4, 0x57, 0x63, 0xe9, 0xf3, 0x6c, 0x76, 0x55, 0x49, 0xe9, 0x5b,
		0xae, 0x61, 0xd7, 0xab, 0xc6, 0x9b, 0xed, 0x38, 0xfe, 0x6f, 0x9f, 0xe6, 0x37, 0x06, 0x79, 0xac,
		0x14, 0x50, 0x43, 0x2b, 0xd3, 0xbd, 0xe0, 0x78, 0xc4, 0xa2, 0x41, 0xbb, 0x4f, 0xa6, 0xc6, 0x5b,
		0xa2, 0x63, 0xc1, 0x71, 0x4f, 0xba, 0xc4, 0xb6, 0x72, 0x34, 0xf6, 0x85, 0x6d, 0x65, 0x52, 0xf3,
		0xc0, 0xb6, 0x32, 0xb6, 0x95, 0xdf, 0x8d, 0x7c, 0xa4, 0x6f, 0x2b, 0xcb, 0xe5, 0x35, 0x48, 0xfc,
		0xe4, 0xe0, 0x2d, 0xdf, 0x1b, 0xf2, 0xb3, 0x3d, 0x2f, 0xff, 0x73, 0x81, 0x3c, 0xcf, 0x84, 0x5d,
		0x06, 0x83, 0x28, 0x95, 0x59, 0xf8, 0xa6, 0x22, 0x8b, 0x39, 0x20, 0xad, 0x33, 0x8d, 0x08, 0xfb,
		0xc9, 0x32, 0xe5, 0xc5, 0xd6, 0x7e, 0x67, 0x88, 0xaa, 0x11, 0x55, 0x23, 0xaa, 0x46, 0x54, 0x8d,
		0xa8, 0x7a, 0x3a, 0xaa, 0x7e, 0x32, 0x35, 0xb3, 0x85, 0x9a, 0x4e, 0x09, 0xfe, 0xdb, 0x96, 0x9a,
		0x4e, 0x45, 0xd4, 0xdd, 0x91, 0xf4, 0xdf, 0xd6, 0xd4, 0x74, 0x2a, 0x56, 0x6b, 0xb5, 0x5a, 0xa9,
		0x88, 0x8a, 0x4e, 0xd2, 0x2c, 0x0b, 0x5b, 0x16, 0x9b, 0x4c, 0xa8, 0x64, 0x6f, 0x59, 0x4c, 0xba,
		0x04, 0xb9, 0x02, 0xb9, 0x02, 0xb9, 0x02, 0xb9, 0x02, 0xb9, 0xc2, 0x96, 0x05, 0xc3, 0xd4, 0x61,
		0xcb, 0x22, 0xcf, 0x44, 0x03, 0x5b, 0x16, 0xf9, 0x8b, 0xb0, 0xb1, 0x65, 0xb1, 0x3c, 0xc2, 0xf6,
		0x64, 0x78, 0x91, 0x99, 0x00, 0x3b, 0xe8, 0x11, 0xf1, 0x35, 0xe2, 0x6b, 0xc4, 0xd7, 0x88, 0xaf,
		0x11, 0x5f, 0x23, 0xbe, 0xde, 0xa8, 0xf8, 0xfa, 0xbc, 0x24, 0x3d, 0xbe, 0x3e, 0x3f, 0x44, 0x74,
		0x9d, 0xb0, 0xcb, 0xf3, 0x92, 0xe4, 0x6a, 0x6f, 0xe7, 0x87, 0xa8, 0xf2, 0x96, 0x7e, 0x6c, 0x8d,
		0x7b, 0x61, 0x97, 0xf4, 0x93, 0x8b, 0x7b, 0x61, 0x19, 0xef, 0x23, 0xce, 0xc7, 0x7d, 0xab, 0x9c,
		0xe9, 0x66, 0x12, 0xd2, 0xcc, 0x98, 0x19, 0x1a, 0x3b, 0x33, 0xc3, 0x5d, 0xab, 0xf9, 0x60, 0x5e,
		0xb8, 0x6b, 0x35, 0x43, 0x1e, 0x8c, 0x9d, 0x51, 0x4d, 0xd7, 0xd5, 0x6e, 0x3b, 0xa2, 0xcd, 0xb9,
		0x62, 0xc6, 0xec, 0x89, 0x31, 0x01, 0x4c, 0x6d, 0x8c, 0x9c, 0xf0, 0xfe, 0xfe, 0xd0, 0xe1, 0x1d,
		0xf8, 0x80, 0x9c, 0x17, 0xa7, 0xb7, 0x93, 0x61, 0x93, 0xf4, 0x71, 0x88, 0xc7, 0xc1, 0xa9, 0xe7,
		0xa6, 0xeb, 0x9d, 0x78, 0x1e, 0xcf, 0xad, 0xc2, 0xea, 0x57, 0xd3, 0xaa, 0x77, 0x84, 0x8f, 0x2f,
		0x4c, 0x79, 0x3e, 0xea, 0x57, 0xfd, 0x79, 0xaa, 0x87, 0xe2, 0xc7, 0x72, 0xb9, 0x5a, 0x2b, 0x97,
		0x0b, 0xb5, 0xc3, 0x5a, 0xe1, 0xa8, 0x52, 0x29, 0x56, 0x39, 0xb2, 0x9b, 0xd4, 0x4b, 0xa7, 0x25,
		0x1c, 0xd1, 0xfa, 0xe4, 0x4f, 0x8a, 0xd5, 0xef, 0x74, 0x38, 0xbb, 0xf8, 0xee, 0x0a, 0x87, 0x25,
		0x51, 0x89, 0xda, 0x46, 0x99, 0x03, 0xfe, 0x5c, 0x04, 0xfa, 0x0c, 0x08, 0xae, 0xba, 0x9e, 0xd3,
		0x37, 0xbc, 0xd1, 0x4d, 0x71, 0xea, 0xc5, 0xf0, 0x87, 0x9c, 0x8d, 0x7e, 0xc7, 0xdd, 0x69, 0xf8,
		0xd4, 0x0d, 0xff, 0x21, 0xee, 0xea, 0xa3, 0xa7, 0xb9, 0xfb, 0xe1, 0x3f, 0x6a, 0xf8, 0xf2, 0x07,
		0x35, 0x12, 0xd3, 0xe1, 0x25, 0x4d, 0x4b, 0x44, 0xd6, 0xcc, 0x65, 0xc5, 0x59, 0xb5, 0x5e, 0x1a,
		0xa3, 0x48, 0x3e, 0x85, 0x04, 0xd3, 0xa7, 0xd2, 0x66, 0xdf, 0x4d, 0x5d, 0x0a, 0x46, 0x97, 0x61,
		0x17, 0x86, 0x61, 0x44, 0xcd, 0x85, 0xbc, 0xb1, 0x44, 0xd4, 0x20, 0x03, 0x4f, 0x64, 0xe4, 0x85,
		0x5c, 0x3c, 0x90, 0x9d, 0xf7, 0xb1, 0xf3, 0x3c, 0x5e, 0x5e, 0x97, 0x2d, 0xc8, 0xfe, 0x6c, 0xd2,
		0x46, 0xaf, 0x6a, 0x4b, 0xb8, 0x86, 0x63, 0xf6, 0x58, 0x42, 0x99, 0x70, 0x35, 0x4c, 0x77, 0x42,
		0xcd, 0x16, 0x58, 0xc4, 0x2a, 0x36, 0x91, 0x8a, 0x53, 0x9c, 0x92, 0x20, 0x4a, 0x71, 0x8b, 0x51,
		0xd2, 0x44, 0x28, 0x69, 0xe2, 0x93, 0x1c, 0xd1, 0x29, 0xdb, 0x8c, 0x9e, 0x4d, 0x5c, 0xe2, 0xbf,
		0xcc, 0x94, 0xe9, 0xf2, 0x52, 0x42, 0x46, 0x41, 0x18, 0x61, 0x08, 0x4b, 0xbf, 0xef, 0x88, 0x16,
		0x9f, 0x1f, 0x18, 0x77, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x40, 0x6a, 0xf1, 0xf7,
		0xb6, 0xdd, 0x11, 0xba, 0xc5, 0xe9, 0x04, 0x8a, 0x5b, 0xe0, 0x04, 0xdc, 0x60, 0x75, 0x6b, 0xa6,
		0xe5, 0x09, 0xa7, 0xad, 0x73, 0x10, 0xce, 0xd0, 0x69, 0xcf, 0xf7, 0x04, 0xb7, 0x00, 0xb7, 0x00,
		0xb7, 0x00, 0xb7, 0x00, 0x6a, 0xb0, 0x81, 0xca, 0xd5, 0xe6, 0x6f, 0x36, 0x10, 0x26, 0xbe, 0x11,
		0x6c, 0x32, 0xec, 0xa4, 0x38, 0xe9, 0xd4, 0x93, 0x9d, 0x9d, 0x49, 0x56, 0x49, 0xf6, 0x6e, 0xe2,
		0x6f, 0x72, 0x26, 0x33, 0xaf, 0xf8, 0x46, 0x11, 0xef, 0x9b, 0x31, 0xcd, 0x68, 0x9c, 0x02, 0x12,
		0xee, 0xde, 0xc5, 0x2e, 0x1b, 0x45, 0x93, 0xf2, 0x41, 0x97, 0xda, 0xc1, 0x9a, 0xc2, 0x41, 0x98,
		0xaa, 0x41, 0x98, 0x92, 0x11, 0xd7, 0x06, 0x88, 0x20, 0x24, 0x0b, 0xd0, 0x91, 0x00, 0x34, 0x62,
		0x82, 0x45, 0x3c, 0x98, 0x88, 0xbe, 0xc8, 0xa3, 0x7d, 0x23, 0xa2, 0x29, 0xa8, 0xe2, 0xd9, 0x73,
		0x74, 0xad, 0xef, 0xff, 0xd8, 0xfb, 0x4e, 0xbc, 0x30, 0x51, 0xfd, 0xf5, 0x28, 0xe2, 0xdf, 0x93,
		0x95, 0xc0, 0xec, 0xc6, 0xe1, 0xe7, 0xfe, 0xfe, 0xc1, 0xf0, 0x7f, 0x43, 0xa3, 0x3b, 0xf0, 0x5e,
		0x7a, 0x42, 0xf9, 0xb7, 0xf2, 0xa7, 0x6d, 0x68, 0xa3, 0x03, 0xb7, 0xee, 0xf1, 0x79, 0xa9, 0x51,
		0x6a, 0xfc, 0xa9, 0xd8, 0x8e, 0xb2, 0xde, 0xa7, 0x7f, 0x5c, 0x9d, 0xfd, 0xb9, 0xe6, 0x87, 0x3f,
		0xd7, 0xbf, 0x9c, 0x7c, 0x3f, 0xbf, 0xbe, 0x3b, 0xbb, 0xb8, 0xba, 0x3e, 0xb9, 0x38, 0xad, 0xff,
		0x99, 0xc4, 0x16, 0x89, 0x18, 0xde, 0x34, 0x93, 0x0b, 0xa6, 0x27, 0x61, 0xb0, 0x41, 0xcd, 0xd7,
		0x66, 0x78, 0x59, 0xe6, 0xe6, 0x6f, 0x27, 0x85, 0x98, 0x4e, 0xfd, 0x4c, 0xb8, 0x4b, 0x1c, 0x2e,
		0x8d, 0xa1, 0x90, 0xd2, 0x1f, 0x9e, 0xaa, 0x54, 0x7a, 0xba, 0xa3, 0x77, 0x85, 0x27, 0x1c, 0x57,
		0xf1, 0x6c, 0x45, 0x77, 0x5d, 0xdb, 0x30, 0x75, 0x4f, 0x28, 0xa1, 0x3c, 0xe4, 0xde, 0x5a, 0xa6,
		0xe5, 0xff, 0x93, 0x62, 0xd8, 0xdd, 0xae, 0x6d, 0x29, 0x0f, 0x8e, 0xdd, 0xef, 0x29, 0x6d, 0xdb,
		0x51, 0xfa, 0xae, 0xff, 0x39, 0xe5, 0x5c, 0x7f, 0x11, 0x8e, 0x52, 0x52, 0x46, 0xa8, 0xed, 0x7f,
		0x7e, 0x04, 0xe4, 0x49, 0x4d, 0x8c, 0x50, 0xdb, 0x98, 0xb6, 0x7e, 0xda, 0x7d, 0x71, 0x16, 0xe1,
		0x62, 0x66, 0x31, 0xc8, 0x9c, 0xb1, 0x7c, 0x05, 0xba, 0x91, 0xbf, 0xd5, 0x64, 0xf5, 0x9c, 0x09,
		0x83, 0xa7, 0x14, 0x83, 0xa6, 0x68, 0xf3, 0xbe, 0xfe, 0xb8, 0x47, 0x18, 0xc1, 0x98, 0xc9, 0x75,
		0x89, 0x92, 0xe8, 0x62, 0x26, 0xcb, 0xc5, 0x4e, 0x8a, 0x4b, 0x22, 0x36, 0x4f, 0x8b, 0xc9, 0x96,
		0xf0, 0xfc, 0x69, 0x8e, 0x81, 0x5e, 0x49, 0x31, 0x95, 0x4c, 0x0f, 0x26, 0x83, 0xcd, 0x79, 0x3d,
		0x77, 0x3c, 0x36, 0x19, 0x8b, 0xaa, 0xe3, 0xa6, 0x90, 0xa9, 0xf3, 0x8b, 0xd6, 0xa7, 0xe5, 0xb1,
		0x67, 0x6f, 0x6c, 0x43, 0xcb, 0x1a, 0x8d, 0xab, 0x1a, 0x24, 0xda, 0xef, 0x49, 0xbc, 0xaf, 0x43,
		0xb1, 0x7f, 0x43, 0xb3, 0xb4, 0x38, 0x03, 0x76, 0x92, 0xad, 0x17, 0xde, 0x90, 0x3d, 0xc9, 0xd2,
		0x4b, 0x47, 0xef, 0x4a, 0xbc, 0x0b, 0x42, 0xb7, 0xdb, 0x91, 0x70, 0x57, 0x23, 0x6b, 0x12, 0x42,
		0xee, 0x02, 0xa1, 0x18, 0x9b, 0x08, 0x11, 0x82, 0xa0, 0x1d, 0xc2, 0x31, 0x1e, 0xab, 0xb4, 0xf1,
		0x11, 0x3c, 0x9e, 0x3a, 0x1b, 0x5f, 0x8d, 0x25, 0x55, 0x5f, 0x13, 0xa8, 0xad, 0x09, 0xd4, 0xd5,
		0x75, 0xe7, 0x26, 0xa6, 0xdd, 0x4b, 0xb7, 0x77, 0x35, 0x52, 0x58, 0x1e, 0x41, 0x0a, 0x5d, 0x6f,
		0x09, 0xbd, 0xbf, 0x20, 0x7e, 0xff, 0x89, 0x77, 0xa6, 0x23, 0xea, 0x34, 0x70, 0x0f, 0xff, 0xef,
		0x07, 0x65, 0xf5, 0x4f, 0xfd, 0xcd, 0xcf, 0x54, 0x85, 0x65, 0xe8, 0x3d, 0xb7, 0xdf, 0x59, 0xef,
		0x57, 0x4e, 0xa5, 0x82, 0x4e, 0x7f, 0xed, 0x9d, 0x61, 0x5c, 0x8f, 0x1c, 0xad, 0x1d, 0xc1, 0x45,
		0x89, 0xd4, 0xe2, 0x45, 0x64, 0x51, 0x23, 0xaf, 0xd8, 0x11, 0x56, 0xec, 0x48, 0x2a, 0x76, 0xc4,
		0x94, 0x6c, 0x41, 0xac, 0x4b, 0x3e, 0x54, 0x63, 0x3c, 0x97, 0x6b, 0x0e, 0xe0, 0x14, 0x9f, 0xf0,
		0xbf, 0xb7, 0xae, 0x0b, 0x8b, 0xc4, 0xba, 0x23, 0x53, 0x84, 0x38, 0x94, 0x20, 0x19, 0x05, 0x88,
		0x1b, 0xf2, 0x27, 0x0e, 0xf1, 0x13, 0x87, 0xf4, 0x89, 0x43, 0x78, 0xda, 0xe0, 0x26, 0x2a, 0x4b,
		0xf6, 0x0d, 0xcf, 0x73, 0xec, 0x8e, 0x36, 0x1a, 0xc5, 0x98, 0xda, 0xd1, 0x4c, 0x2b, 0xf1, 0x24,
		0xa4, 0x42, 0x5c, 0x09, 0xa9, 0x00, 0x09, 0x09, 0x12, 0x12, 0x2f, 0x5f, 0x25, 0x48, 0xd6, 0x8e,
		0x99, 0x8c, 0x9d, 0xc6, 0xde, 0xb3, 0x23, 0xda, 0xc2, 0x11, 0x96, 0x21, 0xd2, 0xdc, 0x80, 0xfe,
		0xf6, 0xe5, 0xf4, 0xf0, 0xe8, 0x63, 0x25, 0x63, 0x32, 0xd2, 0x64, 0x68, 0xb2, 0xac, 0x24, 0x8d,
		0xc7, 0x2e, 0xfb, 0xbb, 0x49, 0x1f, 0xf2, 0x9a, 0x19, 0xf1, 0xee, 0x46, 0xf9, 0x64, 0x5b, 0xfd,
		0xdd, 0x1d, 0xf8, 0x5b, 0x4b, 0x59, 0xf3, 0xd3, 0xe7, 0x87, 0x48, 0x84, 0x88, 0xb8, 0x16, 0xd2,
		0x9e, 0xae, 0xcd, 0xc9, 0x7b, 0xb8, 0xb4, 0x3a, 0x2f, 0x8a, 0xde, 0xe9, 0xd8, 0xbf, 0x94, 0xf3,
		0x92, 0x32, 0x43, 0x84, 0x83, 0x9d, 0xf4, 0x7b, 0xa1, 0xb8, 0xc2, 0xbb, 0xb5, 0x7c, 0x93, 0x50,
		0xbc, 0x47, 0xa1, 0x8c, 0x09, 0xbd, 0x62, 0xba, 0x8a, 0xdd, 0x56, 0x74, 0x25, 0x18, 0x25, 0xef,
		0x51, 0xf7, 0x14, 0xb7, 0xdf, 0xeb, 0xd9, 0x8e, 0xe7, 0xde, 0x5a, 0x89, 0xab, 0x1b, 0x23, 0xc9,
		0x61, 0x68, 0xe8, 0x6c, 0xd3, 0x83, 0x8c, 0x86, 0x14, 0x85, 0xfc, 0x97, 0x07, 0xdb, 0xd3, 0x6c,
		0x43, 0x33, 0xec, 0x6e, 0xcf, 0x11, 0xae, 0x2b, 0x5a, 0x5a, 0x47, 0xe8, 0x6d, 0xbf, 0xb1, 0x41,
		0x06, 0x52, 0x0e, 0x66, 0xcc, 0x2c, 0xde, 0xcd, 0x1f, 0xcb, 0xa5, 0xb5, 0x38, 0x77, 0x7a, 0x80,
		0x49, 0x82, 0x49, 0xe6, 0x86, 0x49, 0x9a, 0x2d, 0x61, 0x79, 0xa6, 0xf7, 0x12, 0xaf, 0xa6, 0x68,
		0xc8, 0x26, 0x63, 0xe4, 0xdd, 0xab, 0x67, 0xa3, 0xae, 0x3f, 0xe9, 0xae, 0x48, 0x9e, 0x09, 0x51,
		0xbf, 0x38, 0x3d, 0x69, 0x5c, 0x7d, 0x3f, 0x3f, 0xb9, 0x3e, 0xbb, 0xbc, 0x88, 0x6b, 0x3e, 0xc1,
		0x75, 0xb7, 0x6e, 0xa2, 0x0b, 0xa9, 0x89, 0xa2, 0x9c, 0xaf, 0x8d, 0xf3, 0xab, 0x54, 0x82, 0x36,
		0xa2, 0xe7, 0xff, 0xf1, 0xf7, 0xf9, 0xc9, 0x85, 0x6c, 0xe6, 0xd7, 0xdc, 0xb0, 0xed, 0xf3, 0x8c,
		0x7b, 0xdd, 0x8e, 0x7e, 0x2f, 0x3a, 0x9a, 0x1f, 0xeb, 0x19, 0x43, 0x67, 0xd9, 0xb5, 0x5b, 0x09,
		0x1c, 0xef, 0xf2, 0xe6, 0xe0, 0x7b, 0xe1, 0x7b, 0xe1, 0x7b, 0xb3, 0xed, 0x7b, 0xcf, 0x4f, 0x3e,
		0xd5, 0xcf, 0xef, 0x4e, 0xce, 0xcf, 0x2f, 0x4f, 0x03, 0xf7, 0x7b, 0xf7, 0xf5, 0xf2, 0x73, 0x3d,
		0xff, 0x3e, 0x78, 0x7c, 0x6a, 0xe4, 0x2e, 0xf8, 0x7d, 0x79, 0xf6, 0xc6, 0x8d, 0xfa, 0xb7, 0xbb,
		0x8b, 0xfa, 0xdf, 0xd7, 0xff, 0xe7, 0xb2, 0x91, 0xf7, 0x9f, 0xd1, 0xf8, 0x56, 0xff, 0x72, 0xf6,
		0x37, 0x22, 0x8b, 0xfc, 0x45, 0x16, 0x1b, 0x98, 0xa1, 0x35, 0xa3, 0x15, 0x8c, 0x44, 0x58, 0xb2,
		0xd4, 0xa9, 0x35, 0xf2, 0x64, 0xa2, 0x1d, 0xb5, 0x88, 0x75, 0xc4, 0x22, 0x76, 0x92, 0x47, 0x09,
		0x49, 0x1e, 0xd4, 0x11, 0x12, 0x92, 0x3c, 0x90, 0xe4, 0x01, 0x7a, 0x80, 0x24, 0x8f, 0xb5, 0x31,
		0x1b, 0x49, 0x1e, 0x6b, 0x8d, 0x34, 0x92, 0x3c, 0xe2, 0xaf, 0x40, 0x24, 0x79, 0x30, 0x1a, 0x26,
		0x92, 0x3c, 0x90, 0xe4, 0x81, 0x24, 0x0f, 0x24, 0x79, 0xa4, 0x6c, 0xe4, 0x0a, 0x92, 0x3c, 0x88,
		0x7c, 0x10, 0x72, 0x25, 0x40, 0xc8, 0x40, 0xc8, 0x72, 0x4a, 0xc8, 0x90, 0x2b, 0x31, 0xdd, 0x18,
		0x72, 0x25, 0x90, 0x2b, 0x21, 0xdd, 0x79, 0x21, 0xe5, 0x00, 0x2e, 0x0c, 0x2e, 0x0c, 0x2e, 0x0c,
		0x29, 0x07, 0x59, 0x77, 0x6a, 0x48, 0x39, 0xd8, 0x1c, 0x07, 0xbd, 0xf1, 0x3b, 0xf7, 0x11, 0xca,
		0x06, 0x71, 0xd7, 0x3c, 0x89, 0xb1, 0xa9, 0x12, 0x4d, 0xa6, 0x8e, 0xb1, 0xcd, 0x3e, 0xa7, 0x3d,
		0xfe, 0x3f, 0x84, 0x55, 0x92, 0x29, 0x36, 0xe3, 0x63, 0xe8, 0xc2, 0xb4, 0x5b, 0xf1, 0x91, 0xc7,
		0x87, 0x25, 0x36, 0x4e, 0x22, 0xc4, 0x2e, 0x13, 0x5e, 0xbd, 0x47, 0x31, 0x2b, 0xed, 0x29, 0x76,
		0x7b, 0x56, 0xcc, 0x0b, 0x94, 0xbe, 0x5b, 0xcb, 0x15, 0x9e, 0xb2, 0x54, 0xe9, 0xb3, 0x6c, 0x2f,
		0x78, 0xaf, 0x25, 0xda, 0x7a, 0xbf, 0xe3, 0x85, 0xff, 0x16, 0x75, 0xb2, 0x12, 0xc4, 0x9b, 0x74,
		0x2a, 0x2b, 0x49, 0xb0, 0xb9, 0x4a, 0x45, 0x65, 0x1c, 0xeb, 0x74, 0x9d, 0xc2, 0x4e, 0x32, 0x37,
		0x97, 0xed, 0x0a, 0x51, 0x51, 0xaa, 0x30, 0x29, 0xef, 0xd7, 0xe0, 0xaa, 0xcf, 0x34, 0xc7, 0x51,
		0x6c, 0xea, 0xa9, 0x17, 0xa5, 0xc6, 0xd4, 0xfb, 0x37, 0x9d, 0xa1, 0xb4, 0x14, 0x3d, 0x5c, 0x64,
		0xbd, 0xb4, 0x94, 0x6f, 0x16, 0x93, 0x45, 0x11, 0x3d, 0xf9, 0x70, 0xee, 0xfb, 0x9b, 0x51, 0x6a,
		0x2a, 0xe2, 0xad, 0x80, 0x9b, 0x93, 0x82, 0x18, 0xed, 0xd6, 0xbd, 0x94, 0xf3, 0x0f, 0x67, 0x4c,
		0x2f, 0xc1, 0xae, 0xd7, 0x4c, 0x33, 0x92, 0x2b, 0x95, 0xa7, 0xa4, 0x16, 0xc6, 0xbc, 0xf6, 0x72,
		0xf3, 0xa5, 0xc2, 0x78, 0xd7, 0x4e, 0x66, 0xb7, 0x46, 0x79, 0x94, 0xb2, 0x81, 0x2b, 0x0d, 0x26,
		0x52, 0x19, 0x41, 0xa2, 0x25, 0x92, 0x78, 0xa9, 0x50, 0x2c, 0x19, 0xc2, 0xa5, 0x43, 0xb5, 0x84,
		0xc8, 0x97, 0x12, 0xf9, 0x92, 0xa2, 0x5d, 0x5a, 0xc9, 0x54, 0xb7, 0xb8, 0x35, 0xc8, 0xe3, 0x2e,
		0xb9, 0xe9, 0xa5, 0x17, 0x66, 0xb5, 0x6b, 0xe3, 0x9b, 0xfe, 0xc9, 0xf2, 0xa9, 0x96, 0xb6, 0x9e,
		0x70, 0xb6, 0x68, 0x2e, 0x88, 0x26, 0xbb, 0x10, 0x9a, 0xf2, 0x02, 0x68, 0x86, 0x0b, 0x9f, 0xa9,
		0x2f, 0x78, 0x66, 0xbb, 0xd0, 0x99, 0xed, 0x02, 0x67, 0x9e, 0x0b, 0x9b, 0xd3, 0xbd, 0xa9, 0x95,
		0xec, 0x02, 0x66, 0x86, 0x7b, 0xf8, 0x89, 0xee, 0xdd, 0x4f, 0x3a, 0x44, 0x04, 0xa7, 0x04, 0x16,
		0xda, 0x4c, 0x7e, 0x6a, 0x20, 0xbe, 0x2a, 0xbe, 0xf6, 0x4c, 0x7e, 0xfb, 0x72, 0xfa, 0xb1, 0x54,
		0x2c, 0x2b, 0x3f, 0x4c, 0xc7, 0xeb, 0xeb, 0x1d, 0xa5, 0xe1, 0x98, 0x4f, 0xba, 0x27, 0x94, 0xff,
		0x98, 0x8e, 0x50, 0xae, 0x84, 0xf3, 0x64, 0x1a, 0x42, 0xb9, 0x1a, 0x66, 0x3f, 0xde, 0x5a, 0xa6,
		0xa5, 0xd4, 0xbd, 0x47, 0xe1, 0x58, 0xc2, 0x53, 0x7e, 0x34, 0x2e, 0x6e, 0xad, 0x96, 0xa3, 0xb7,
		0x3d, 0xcd, 0x14, 0x5e, 0x5b, 0xbb, 0x17, 0xae, 0xab, 0x39, 0x6d, 0xa3, 0x56, 0x3e, 0x2c, 0xdd,
		0x9b, 0xae, 0x56, 0xa8, 0x28, 0x9f, 0xfe, 0x6a, 0x28, 0x5f, 0x1b, 0xe7, 0x57, 0xda, 0x27, 0xdd,
		0x15, 0xad, 0x5b, 0x6b, 0xfa, 0xbb, 0x84, 0xb7, 0x75, 0x73, 0x5d, 0x4b, 0xcf, 0x71, 0xce, 0x41,
		0x1a, 0x90, 0x2d, 0x05, 0xb4, 0xf4, 0x66, 0x3b, 0x6b, 0x37, 0x9e, 0x27, 0x6e, 0xa5, 0xb9, 0x51,
		0x97, 0x6f, 0x93, 0x1d, 0xb5, 0xa6, 0x1b, 0xe8, 0x24, 0xe9, 0xfe, 0x04, 0xe9, 0xc3, 0xab, 0x85,
		0x95, 0xa4, 0xe9, 0xc4, 0x88, 0x51, 0x11, 0xa3, 0x22, 0x46, 0x65, 0x8f, 0x51, 0x93, 0x65, 0x91,
		0xad, 0x8c, 0x53, 0x2b, 0x04, 0x6d, 0x91, 0x64, 0x99, 0xad, 0xfc, 0xe1, 0x14, 0x89, 0xd3, 0x0b,
		0x8d, 0x13, 0x64, 0x9f, 0xf1, 0x45, 0xb3, 0x0a, 0x5d, 0xa2, 0x35, 0xb1, 0x5d, 0x4b, 0xf8, 0xbd,
		0x09, 0x13, 0xb3, 0x79, 0xe2, 0xab, 0x66, 0xce, 0xe1, 0x08, 0xf1, 0xd5, 0xef, 0xe3, 0xab, 0x27,
		0x93, 0x30, 0xa0, 0x7a, 0x32, 0x11, 0x41, 0x21, 0x82, 0x42, 0x04, 0x95, 0xb5, 0x08, 0x2a, 0xf1,
		0x45, 0xa3, 0x0b, 0xc1, 0xd3, 0x47, 0x80, 0x7a, 0x76, 0x41, 0xbd, 0xdb, 0xef, 0x78, 0xa6, 0xa1,
		0xbb, 0x9e, 0x16, 0xdc, 0xe1, 0x4f, 0x07, 0xf0, 0xf3, 0x0d, 0x03, 0xec, 0x01, 0xf6, 0x00, 0xfb,
		0xac, 0xd1, 0xe5, 0x9e, 0xa6, 0xb7, 0x5a, 0x3e, 0x8c, 0x51, 0x02, 0xfe, 0x11, 0x41, 0x5b, 0xa3,
		0xdf, 0x9a, 0xd9, 0x2d, 0x14, 0xb3, 0xf7, 0x54, 0x26, 0x1c, 0xbb, 0x45, 0xa7, 0x49, 0xd8, 0x66,
		0x43, 0xf7, 0x3c, 0xe1, 0x58, 0xa4, 0x3c, 0x3e, 0x68, 0x78, 0xf7, 0xa6, 0xa0, 0x1d, 0x35, 0xdf,
		0x6e, 0x8a, 0xda, 0x51, 0x73, 0xf8, 0xd7, 0x62, 0xf0, 0xc7, 0x6b, 0x69, 0xf0, 0x56, 0xba, 0x29,
		0x68, 0xe5, 0xd1, 0xbb, 0xa5, 0xca, 0x4d, 0x41, 0xab, 0x34, 0xf7, 0x76, 0x6f, 0x6f, 0xf7, 0xa3,
		0x7e, 0x67, 0xef, 0xf5, 0x70, 0x40, 0x47, 0x74, 0x9b, 0x94, 0xc3, 0x7a, 0x79, 0x75, 0xf6, 0x37,
		0xdb, 0xd8, 0xfe, 0xb3, 0x2b, 0x6b, 0x74, 0xf7, 0xfe, 0x20, 0x1c, 0xdf, 0x9d, 0x0c, 0xe9, 0x2f,
		0x3c, 0xcb, 0xbe, 0x8a, 0x65, 0x1f, 0x58, 0x99, 0xae, 0xb5, 0x4f, 0xb4, 0x2f, 0xcd, 0xd7, 0xe2,
		0x87, 0xf2, 0xe0, 0x78, 0xef, 0xb5, 0x36, 0x98, 0x7f, 0xf3, 0x6d, 0xd9, 0xc7, 0x8a, 0x1f, 0x6a,
		0x83, 0xe3, 0x15, 0xff, 0x52, 0x1d, 0x1c, 0xaf, 0xd9, 0x46, 0x65, 0xb0, 0xbb, 0xf0, 0x51, 0xff,
		0xfd, 0xd2, 0xaa, 0x2f, 0x94, 0x57, 0x7c, 0xe1, 0x70, 0xd5, 0x17, 0x0e, 0x57, 0x7c, 0x61, 0xe5,
		0x23, 0x95, 0x56, 0x7c, 0xa1, 0x32, 0x78, 0x5b, 0xf8, 0xfc, 0xee, 0xf2, 0x8f, 0x56, 0x07, 0x7b,
		0x6f, 0xab, 0xfe, 0xad, 0x36, 0x78, 0x3b, 0xde, 0xdb, 0xdb, 0x62, 0x20, 0x84, 0xb9, 0xc9, 0x37,
		0xb7, 0xec, 0x39, 0x06, 0xec, 0xe0, 0x6f, 0x87, 0x18, 0xd1, 0xd5, 0xdd, 0x9f, 0x1c, 0x5a, 0x44,
		0xd0, 0x2e, 0xa4, 0x08, 0x48, 0x11, 0x90, 0x22, 0x20, 0x45, 0x40, 0x8a, 0x80, 0x14, 0x01, 0x29,
		0x02, 0x52, 0x04, 0xa4, 0x08, 0x48, 0x11, 0xe0, 0x86, 0x90, 0x22, 0x20, 0x45, 0x40, 0x8a, 0x80,
		0x14, 0x01, 0x29, 0x62, 0x78, 0x8e, 0xab, 0xd7, 0x31, 0x93, 0x54, 0x72, 0x5d, 0xe9, 0xb7, 0x17,
		0x5a, 0x86, 0x1c, 0x01, 0x39, 0x02, 0x72, 0x44, 0xc6, 0xe4, 0x08, 0x61, 0xf5, 0xbb, 0xc2, 0xd1,
		0xa9, 0xee, 0xbd, 0x18, 0x07, 0xd5, 0x65, 0x82, 0xb6, 0xea, 0x56, 0xbf, 0x4b, 0x67, 0xbf, 0xd7,
		0xf6, 0xd5, 0x30, 0xe3, 0x8f, 0xf2, 0x20, 0xa5, 0x5a, 0xf0, 0xc7, 0xf0, 0xea, 0xfa, 0xe4, 0xfa,
		0xec, 0xf4, 0xee, 0xec, 0xe2, 0xaf, 0x6f, 0xf5, 0xab, 0xab, 0xbb, 0x6f, 0xf5, 0xc6, 0xf9, 0xd9,
		0x29, 0xe5, 0x01, 0x85, 0xa0, 0xab, 0xa2, 0xdf, 0xd5, 0xa7, 0xbf, 0x1a, 0x94, 0x6d, 0x96, 0x82,
		0x33, 0x05, 0xdf, 0xcf, 0xaf, 0xcf, 0x4e, 0x4f, 0xae, 0xae, 0xd5, 0x2c, 0x31, 0x49, 0xf5, 0xda,
		0x3e, 0x0b, 0xd6, 0x2e, 0xe1, 0x6c, 0xf9, 0xa3, 0x17, 0xbb, 0xaa, 0xc9, 0xd2, 0x16, 0x27, 0x63,
		0xb7, 0xf6, 0x75, 0x9b, 0xeb, 0xa1, 0xf7, 0x6a, 0x93, 0x3a, 0x56, 0x0a, 0x19, 0x09, 0xec, 0x70,
		0x8a, 0x21, 0xcb, 0x81, 0x9d, 0xdd, 0xf7, 0x84, 0xd6, 0x32, 0x5d, 0xcf, 0xb4, 0x1e, 0xfa, 0xa6,
		0xfb, 0x28, 0x1c, 0xc2, 0xd8, 0x6e, 0x49, 0xe3, 0x08, 0xef, 0x10, 0xde, 0x21, 0xbc, 0xcb, 0x58,
		0x78, 0xd7, 0xb7, 0x88, 0x03, 0xbb, 0x6d, 0xd8, 0x68, 0xa2, 0x47, 0x37, 0xae, 0xa1, 0xe4, 0x19,
		0x52, 0xfa, 0xa1, 0x5d, 0x18, 0x62, 0xb2, 0xd3, 0x37, 0x2b, 0x47, 0xf7, 0x23, 0x43, 0xdb, 0x5c,
		0x82, 0x6b, 0xd8, 0xc1, 0xc2, 0x5e, 0xd2, 0x50, 0xc0, 0xbc, 0x29, 0x6a, 0x95, 0xd1, 0xeb, 0xf2,
		0xe0, 0xad, 0x3a, 0xd9, 0x54, 0x7a, 0x3d, 0x1c, 0xbc, 0x55, 0x2b, 0x53, 0xaf, 0x4b, 0xfe, 0x6b,
		0xff, 0x8d, 0xd2, 0x68, 0xd7, 0xa9, 0x5a, 0xa9, 0x1c, 0x0e, 0xf7, 0x9d, 0x8e, 0x97, 0x35, 0xfe,
		0x31, 0x68, 0xfc, 0x70, 0xf4, 0xfa, 0x68, 0xf0, 0x56, 0xbe, 0x29, 0x14, 0x47, 0xaf, 0x3e, 0x0e,
		0xde, 0xca, 0xa5, 0x9b, 0x82, 0xf6, 0x71, 0xf4, 0xba, 0xe6, 0xbf, 0x3e, 0xba, 0x29, 0x84, 0x1f,
		0xaf, 0x06, 0x6f, 0x94, 0xa7, 0x3e, 0x52, 0x19, 0xbe, 0x73, 0x14, 0xf4, 0x18, 0x3e, 0x70, 0xf0,
		0x96, 0xff, 0xd4, 0xd5, 0xc9, 0x53, 0x0f, 0xdf, 0xab, 0x4d, 0x7a, 0x2b, 0x85, 0xef, 0x4d, 0xf5,
		0x19, 0xbe, 0x35, 0x6c, 0x91, 0x50, 0x8c, 0x0f, 0xc5, 0x49, 0x0e, 0x33, 0xe1, 0x14, 0xe7, 0xc3,
		0x5e, 0x96, 0xec, 0x56, 0xc2, 0x5a, 0x66, 0xac, 0x85, 0x52, 0x4c, 0x0f, 0xed, 0x85, 0xb4, 0xc5,
		0xc1, 0x07, 0x00, 0xf6, 0x66, 0x01, 0x36, 0x53, 0xc2, 0xc0, 0x31, 0xe7, 0x5a, 0x07, 0xaa, 0xfe,
		0x16, 0x55, 0xf3, 0x38, 0xa5, 0x80, 0x3e, 0x40, 0x5f, 0x0a, 0xb1, 0x6a, 0xce, 0x02, 0x04, 0xa0,
		0x6a, 0xaa, 0xb1, 0x2a, 0xac, 0x25, 0x57, 0x80, 0x8d, 0x8c, 0xc5, 0x35, 0x1d, 0x06, 0xed, 0x9e,
		0xea, 0x82, 0xb7, 0x28, 0x13, 0xb6, 0x49, 0xba, 0xc7, 0x3a, 0x51, 0xa3, 0x38, 0xf6, 0x5a, 0xc3,
		0xd6, 0x83, 0x3d, 0xd7, 0x93, 0xef, 0xd7, 0x97, 0x6a, 0x96, 0x03, 0x12, 0x86, 0xfd, 0xcb, 0x89,
		0xf4, 0xed, 0xff, 0x78, 0xaa, 0x7d, 0x40, 0xfa, 0xf5, 0x8d, 0x2a, 0xb6, 0xdb, 0x5e, 0x75, 0x5b,
		0xa9, 0x95, 0x0f, 0x4b, 0xc7, 0x73, 0x45, 0x93, 0x67, 0xea, 0x2d, 0x2b, 0x3d, 0xfd, 0x41, 0x68,
		0xc5, 0x8f, 0xa8, 0x94, 0x3d, 0xec, 0x43, 0x76, 0xa5, 0xec, 0x08, 0x33, 0x04, 0x5c, 0x20, 0xc5,
		0x05, 0xe4, 0x2d, 0xfc, 0xf6, 0xe7, 0xb8, 0xc3, 0x42, 0xed, 0xc4, 0x75, 0xad, 0x67, 0x5a, 0x45,
		0xa6, 0xc2, 0xbb, 0xe3, 0x85, 0x4c, 0x05, 0x64, 0x2a, 0xfc, 0x36, 0xb8, 0x45, 0x45, 0x6b, 0xaa,
		0x1f, 0x5e, 0xff, 0xd1, 0xb8, 0xb8, 0xbb, 0xfe, 0x6f, 0xa3, 0xbe, 0x7d, 0xd5, 0xac, 0x7f, 0x9c,
		0x9f, 0x5c, 0xdc, 0x9d, 0xfc, 0xe7, 0xe4, 0x5b, 0x7d, 0xab, 0x6a, 0x5a, 0xfb, 0xbf, 0xfa, 0xd3,
		0xc9, 0x55, 0xfd, 0xf3, 0xf6, 0xfd, 0xea, 0xef, 0x17, 0x9f, 0xcf, 0xeb, 0xa8, 0xe7, 0x0d, 0xa6,
		0x29, 0x8f, 0x69, 0x82, 0x61, 0x66, 0x95, 0x61, 0x82, 0x59, 0x82, 0x59, 0x4a, 0xf9, 0x66, 0xdc,
		0x2b, 0x45, 0x89, 0x06, 0x54, 0x75, 0x8d, 0x47, 0xd1, 0xd5, 0x7b, 0xba, 0xf7, 0xe8, 0xaf, 0x8d,
		0x03, 0xbb, 0x27, 0xac, 0xe1, 0xfd, 0xbc, 0x9a, 0x25, 0xbc, 0x5f, 0xb6, 0xf3, 0x33, 0xbc, 0xcb,
		0xfa, 0x60, 0xfe, 0x0d, 0x77, 0xe1, 0x9d, 0x03, 0x9f, 0x3f, 0x1c, 0xcc, 0xde, 0xe1, 0x3e, 0xfb,
		0xf2, 0x60, 0x74, 0xf9, 0xef, 0x8e, 0x9c, 0x11, 0x8e, 0x31, 0xba, 0x89, 0xee, 0x58, 0x20, 0xb8,
		0x5b, 0x21, 0x21, 0x87, 0xc7, 0x05, 0xc7, 0x92, 0xb8, 0x39, 0x2e, 0x38, 0xa6, 0xe4, 0xdc, 0xa1,
		0xc5, 0xf8, 0x28, 0x9e, 0x8c, 0x67, 0x87, 0xfc, 0xba, 0x96, 0xa0, 0x8d, 0xc6, 0x08, 0x10, 0xf7,
		0xf7, 0x47, 0x88, 0x75, 0xe0, 0xaf, 0xe8, 0x0c, 0xa3, 0x96, 0xd9, 0xed, 0xd9, 0x8e, 0xa7, 0x89,
		0xe7, 0xe0, 0x8f, 0x9e, 0xdd, 0x31, 0x8d, 0x97, 0xe4, 0x30, 0xb6, 0xb4, 0x55, 0x5c, 0xdc, 0x0e,
		0x5c, 0xdb, 0x12, 0x5c, 0xa3, 0xb8, 0xb8, 0x7d, 0x68, 0xb5, 0x74, 0x57, 0xb5, 0xfb, 0xed, 0xd1,
		0x6c, 0x13, 0x14, 0xb1, 0x4d, 0x90, 0x06, 0xb5, 0xc6, 0x36, 0x41, 0x16, 0x94, 0xa9, 0xa4, 0x4b,
		0x7b, 0x4a, 0xe2, 0x0a, 0x9c, 0xe3, 0xf0, 0x64, 0x9e, 0xa7, 0x3b, 0x0f, 0xc2, 0xa3, 0x57, 0xe2,
		0x97, 0x75, 0x42, 0x34, 0xb7, 0x34, 0x7b, 0x86, 0xe4, 0xa0, 0xc0, 0x01, 0x0e, 0x8c, 0x20, 0x21,
		0x53, 0x87, 0x23, 0x05, 0x8d, 0x74, 0x44, 0x38, 0x32, 0x10, 0x21, 0x96, 0xd9, 0xa8, 0x0a, 0x84,
		0x50, 0xed, 0x41, 0x2e, 0x58, 0x2c, 0xd5, 0xa9, 0xe9, 0x85, 0x58, 0x60, 0x9b, 0x8f, 0xfc, 0xde,
		0x3f, 0xf4, 0x34, 0xf1, 0xec, 0x69, 0x86, 0xdd, 0xed, 0xf6, 0x2d, 0xd3, 0x7b, 0xa1, 0x48, 0xc6,
		0x90, 0x35, 0xda, 0xbc, 0xa3, 0xce, 0x37, 0xfa, 0x0b, 0xb3, 0xc0, 0x76, 0x98, 0x65, 0x61, 0xf4,
		0x3f, 0x32, 0xf6, 0xc1, 0x7d, 0x60, 0x21, 0xec, 0x68, 0x37, 0xcc, 0xd0, 0x5f, 0xc8, 0xdc, 0x9f,
		0xcb, 0xeb, 0x9f, 0x4d, 0xfb, 0x9f, 0x3d, 0x13, 0xb0, 0x70, 0x62, 0xc0, 0xff, 0xeb, 0xde, 0xf1,
		0xee, 0xec, 0x01, 0x83, 0xdf, 0x1c, 0x41, 0xb8, 0x29, 0x68, 0x0b, 0x47, 0x15, 0x96, 0x1c, 0x69,
		0x58, 0x3c, 0xf9, 0xb0, 0x70, 0x3c, 0x62, 0xfe, 0x04, 0xc5, 0xdc, 0x11, 0x8b, 0xa9, 0x8e, 0x16,
		0x4e, 0x67, 0x2c, 0x9c, 0xdd, 0x08, 0x7e, 0x85, 0xca, 0x36, 0x01, 0x4d, 0x4e, 0x03, 0x92, 0x71,
		0xec, 0x25, 0xec, 0xed, 0x1f, 0x98, 0xd1, 0x7b, 0x66, 0xf4, 0x07, 0xa3, 0x1d, 0xb1, 0xb4, 0x3c,
		0xf8, 0x00, 0x17, 0xb0, 0x1d, 0x2e, 0x60, 0xd5, 0xe1, 0xde, 0xd1, 0x91, 0xde, 0x25, 0xc7, 0x7b,
		0x6f, 0x6f, 0xf7, 0xf7, 0x5e, 0x0f, 0x07, 0xd1, 0xbf, 0x78, 0xcc, 0x09, 0x14, 0x40, 0xea, 0x75,
		0x90, 0x7a, 0x53, 0x66, 0x1b, 0x80, 0x0a, 0x40, 0xcd, 0x28, 0xa0, 0x6e, 0x42, 0xbc, 0x02, 0xa4,
		0x4e, 0x1d, 0xa9, 0x61, 0x46, 0x70, 0x01, 0x70, 0x01, 0xb9, 0x74, 0x01, 0xc1, 0x16, 0xcb, 0xed,
		0xed, 0x68, 0x93, 0xe5, 0x18, 0xf4, 0x18, 0x2a, 0x0b, 0x81, 0x47, 0x80, 0x55, 0x41, 0x74, 0x81,
		0x83, 0xd8, 0x48, 0x07, 0x01, 0x0d, 0x66, 0x8b, 0x71, 0x1c, 0x92, 0x0c, 0xe0, 0x16, 0x70, 0x2b,
		0x13, 0x6e, 0x41, 0xad, 0x81, 0xe3, 0xf4, 0x38, 0x0e, 0xab, 0x82, 0x83, 0x80, 0x83, 0xc8, 0xb5,
		0x83, 0xb0, 0x1d, 0xf3, 0xc1, 0xb4, 0x40, 0xad, 0x21, 0xd8, 0x50, 0x3a, 0x08, 0x58, 0x15, 0x04,
		0x1b, 0x38, 0x88, 0x8d, 0x72, 0x10, 0x10, 0x6c, 0xb6, 0x18, 0xc7, 0x21, 0xd8, 0x00, 0x6e, 0x01,
		0xb7, 0x32, 0xe1, 0x16, 0xd4, 0x1a, 0x38, 0x4e, 0x8f, 0xe3, 0xb0, 0x2a, 0x38, 0x08, 0x38, 0x88,
		0x5c, 0x3a, 0x08, 0xc3, 0xee, 0xd8, 0xce, 0x71, 0xb0, 0x5c, 0x5e, 0x4b, 0x03, 0x68, 0x2a, 0x5b,
		0x83, 0xe1, 0x9b, 0x38, 0xf1, 0x80, 0x59, 0xc0, 0x6c, 0x36, 0x61, 0xb6, 0x63, 0x5a, 0x3f, 0xb5,
		0x7b, 0xdd, 0x6a, 0xfd, 0x32, 0x5b, 0xde, 0x23, 0x14, 0xcc, 0x77, 0x97, 0xf2, 0xee, 0xcf, 0xb7,
		0xff, 0x79, 0xfb, 0xfa, 0xf6, 0xd7, 0xde, 0xff, 0x0b, 0x34, 0x5f, 0x03, 0xcd, 0x25, 0xda, 0xd7,
		0x1f, 0x1b, 0x66, 0x5f, 0xf9, 0x73, 0x1a, 0xb8, 0xb1, 0x93, 0xc8, 0x89, 0xf1, 0x5c, 0xc0, 0xb6,
		0xe0, 0xc1, 0xca, 0x0c, 0x6d, 0xb3, 0x5c, 0xc8, 0x16, 0xb6, 0xce, 0x7a, 0x31, 0x5b, 0xd8, 0x0b,
		0xd3, 0x05, 0x6d, 0xcc, 0xc1, 0x15, 0xe3, 0x85, 0x6d, 0x61, 0x17, 0x2c, 0x17, 0xb7, 0xf1, 0xe1,
		0xc7, 0x00, 0x17, 0x48, 0xae, 0x31, 0xa9, 0xe7, 0xa6, 0xeb, 0x9d, 0x78, 0x9e, 0x43, 0x5b, 0x8b,
		0xe8, 0xab, 0x69, 0xd5, 0x3b, 0xa2, 0x2b, 0x2c, 0xcf, 0xa5, 0xab, 0xf3, 0x35, 0x6c, 0x59, 0x7f,
		0x9e, 0x6a, 0xb9, 0xf8, 0xb1, 0x5c, 0xae, 0xd6, 0xca, 0xe5, 0x42, 0xed, 0xb0, 0x56, 0x38, 0xaa,
		0x54, 0x8a, 0x55, 0x8a, 0x3b, 0x53, 0xc2, 0xce, 0x2e, 0x9d, 0x96, 0x70, 0x44, 0xeb, 0xd3, 0x8b,
		0x7a, 0xac, 0x58, 0xfd, 0x4e, 0x87, 0xa3, 0xe9, 0xef, 0xae, 0xf0, 0x07, 0xbf, 0xad, 0x77, 0x5c,
		0x91, 0x29, 0xcb, 0x60, 0xb8, 0x98, 0x61, 0xb2, 0x03, 0x40, 0x7e, 0x41, 0x83, 0x04, 0xc7, 0x1c,
		0xe5, 0xe2, 0xb9, 0x23, 0x0e, 0xd7, 0xcd, 0x54, 0x38, 0x6e, 0x12, 0x1a, 0xf0, 0x5f, 0xe4, 0x10,
		0xf6, 0xc5, 0x5d, 0x4b, 0x6e, 0xe2, 0xb5, 0x62, 0x5e, 0x1d, 0x78, 0xa4, 0xc2, 0x23, 0xa5, 0x82,
		0x3b, 0xc4, 0x17, 0x41, 0x84, 0xed, 0xb2, 0x5d, 0x08, 0x41, 0x37, 0x21, 0x04, 0x43, 0x38, 0x2e,
		0xc8, 0xcd, 0x5b, 0x6c, 0x74, 0x59, 0x27, 0x28, 0x36, 0x9a, 0x78, 0x58, 0x51, 0x6c, 0x54, 0x9e,
		0x83, 0x40, 0xb1, 0x51, 0x0a, 0x8b, 0x45, 0xb1, 0x51, 0x86, 0x40, 0x13, 0xc5, 0x46, 0x53, 0x18,
		0xfd, 0x85, 0x59, 0xc0, 0x66, 0x52, 0xa4, 0x8e, 0xb0, 0x7b, 0x84, 0x0c, 0x80, 0xe4, 0xbd, 0xa1,
		0xd8, 0x28, 0xf2, 0x09, 0xe0, 0x02, 0xf2, 0xea, 0x02, 0x70, 0x6e, 0x62, 0x9b, 0x90, 0x1a, 0x07,
		0x25, 0x00, 0xa8, 0x00, 0x54, 0x56, 0x40, 0x45, 0x0e, 0x3b, 0x90, 0x9a, 0x00, 0xa9, 0x61, 0x46,
		0x70, 0x01, 0x70, 0x01, 0xb9, 0x74, 0x01, 0x28, 0x0b, 0x09, 0x95, 0x85, 0xde, 0x23, 0xc0, 0xaa,
		0x20, 0xba, 0xc0, 0x41, 0xa0, 0xd8, 0x28, 0x34, 0x98, 0xcd, 0xc2, 0x71, 0x48, 0x32, 0x80, 0x5b,
		0xc0, 0xad, 0x4c, 0xb8, 0x05, 0xb5, 0x06, 0x8e, 0xd3, 0xe3, 0x38, 0xac, 0x0a, 0x0e, 0x02, 0x0e,
		0x22, 0xd7, 0x0e, 0x02, 0x65, 0x21, 0x21, 0xd8, 0xd0, 0x3b, 0x08, 0x58, 0x15, 0x04, 0x1b, 0x38,
		0x88, 0x8d, 0x72, 0x10, 0x10, 0x6c, 0xb6, 0x18, 0xc7, 0x21, 0xd8, 0x00, 0x6e, 0x01, 0xb7, 0x32,
		0xe1, 0x16, 0xd4, 0x1a, 0x38, 0x4e, 0x8f, 0xe3, 0xb0, 0x2a, 0x38, 0x08, 0x38, 0x88, 0x5c, 0x3a,
		0x08, 0x14, 0x1b, 0xdd, 0x52, 0x0c, 0x47, 0xb1, 0x51, 0xc0, 0x2c, 0x60, 0x16, 0xc5, 0x46, 0x51,
		0x6c, 0x74, 0x13, 0xd0, 0x1c, 0xc5, 0x46, 0x51, 0x6c, 0x34, 0x2b, 0xcf, 0x89, 0x62, 0xa3, 0x73,
		0x1e, 0x0c, 0xc5, 0x46, 0x97, 0xf7, 0x82, 0x62, 0xa3, 0xab, 0xba, 0x40, 0xb1, 0xd1, 0x0c, 0xe1,
		0x1a, 0x8a, 0x8d, 0xa2, 0xd8, 0x28, 0xaf, 0x65, 0xa0, 0xd8, 0xe8, 0x9c, 0x63, 0x46, 0xb1, 0x51,
		0xc2, 0xbe, 0x50, 0x6c, 0x14, 0x1e, 0x69, 0xc5, 0x84, 0x6d, 0x71, 0xb1, 0xd1, 0x9d, 0x14, 0x27,
		0x80, 0x7a, 0xe0, 0x55, 0xd7, 0x78, 0x14, 0x5d, 0xbd, 0xa7, 0x7b, 0x8f, 0xfe, 0xda, 0x3b, 0xb0,
		0x7b, 0xc2, 0x32, 0x82, 0xd2, 0x9f, 0x9a, 0x25, 0xbc, 0x5f, 0xb6, 0xf3, 0x53, 0x33, 0x7d, 0xe7,
		0x62, 0x19, 0xe2, 0x60, 0xfe, 0x0d, 0x77, 0xe1, 0x9d, 0x03, 0xf1, 0xd4, 0xb3, 0x82, 0xff, 0x9b,
		0xfa, 0xd0, 0xcc, 0xcb, 0x83, 0x51, 0x05, 0x54, 0xf1, 0x1c, 0xfc, 0xd1, 0xb3, 0x3b, 0xa6, 0xf1,
		0x72, 0x30, 0xec, 0x31, 0xd9, 0x5a, 0x8e, 0x3f, 0x2d, 0x09, 0xa6, 0x44, 0x75, 0x3d, 0xdd, 0x4b,
		0x0e, 0xf6, 0x53, 0xda, 0xa8, 0xdf, 0x5c, 0x42, 0x13, 0x19, 0x93, 0xc7, 0x84, 0xcd, 0x84, 0x15,
		0x60, 0x4b, 0x09, 0x1b, 0x22, 0xac, 0xfc, 0xca, 0x50, 0xf1, 0x95, 0xda, 0x61, 0xb3, 0x55, 0x78,
		0x65, 0xf3, 0xc6, 0x3c, 0x15, 0x5d, 0xd3, 0x85, 0xc9, 0xcf, 0x26, 0x0d, 0x59, 0x52, 0x47, 0x40,
		0xc5, 0x5b, 0x16, 0x7a, 0x59, 0x27, 0x28, 0x0b, 0x9d, 0x21, 0x90, 0xe0, 0x8e, 0xee, 0x51, 0x16,
		0x5a, 0x46, 0x18, 0x8d, 0xb2, 0xd0, 0x94, 0x3f, 0x1f, 0x65, 0xa1, 0x65, 0x8c, 0x36, 0xef, 0xa8,
		0xf3, 0x8d, 0xfe, 0x92, 0xd0, 0x16, 0xdb, 0xfe, 0x11, 0x3a, 0xc2, 0x3e, 0x3f, 0x72, 0xb5, 0x92,
		0xf7, 0x86, 0xb2, 0xd0, 0xc8, 0xfc, 0x82, 0x0b, 0xc8, 0xab, 0x0b, 0xc0, 0x09, 0xb7, 0x6d, 0x42,
		0x6a, 0x1c, 0x69, 0x03, 0xa0, 0x02, 0x50, 0x59, 0x01, 0x15, 0xa7, 0x8d, 0x80, 0xd4, 0x04, 0x48,
		0x0d, 0x33, 0x82, 0x0b, 0x80, 0x0b, 0xc8, 0xa5, 0x0b, 0x40, 0x01, 0x5f, 0xa8, 0x2c, 0xf4, 0x1e,
		0x01, 0x56, 0x05, 0xd1, 0x05, 0x0e, 0x02, 0x65, 0xa1, 0xa1, 0xc1, 0x6c, 0x16, 0x8e, 0x43, 0x92,
		0x01, 0xdc, 0x02, 0x6e, 0x65, 0xc2, 0x2d, 0xa8, 0x35, 0x70, 0x9c, 0x1e, 0xc7, 0x61, 0x55, 0x70,
		0x10, 0x70, 0x10, 0xb9, 0x76, 0x10, 0x28, 0xe0, 0x0b, 0xc1, 0x86, 0xde, 0x41, 0xc0, 0xaa, 0x20,
		0xd8, 0xc0, 0x41, 0x6c, 0x94, 0x83, 0x80, 0x60, 0xb3, 0xc5, 0x38, 0x0e, 0xc1, 0x06, 0x70, 0x0b,
		0xb8, 0x95, 0x09, 0xb7, 0xa0, 0xd6, 0xc0, 0x71, 0x7a, 0x1c, 0x87, 0x55, 0xc1, 0x41, 0xc0, 0x41,
		0xe4, 0xd2, 0x41, 0xa0, 0x2c, 0xf4, 0x96, 0x62, 0x38, 0xca, 0x42, 0x03, 0x66, 0x01, 0xb3, 0x28,
		0x0b, 0x8d, 0xb2, 0xd0, 0x9b, 0x80, 0xe6, 0x28, 0x0b, 0x8d, 0xb2, 0xd0, 0x59, 0x79, 0x4e, 0x94,
		0x85, 0x9e, 0xf3, 0x60, 0x28, 0x0b, 0xbd, 0xbc, 0x17, 0x94, 0x85, 0x5e, 0xd5, 0x05, 0xca, 0x42,
		0x67, 0x08, 0xd7, 0x50, 0x16, 0x1a, 0x65, 0xa1, 0x79, 0x2d, 0x03, 0x65, 0xa1, 0xe7, 0x1c, 0x33,
		0xca, 0x42, 0x13, 0xf6, 0x85, 0xb2, 0xd0, 0x1b, 0xe7, 0x91, 0x76, 0x32, 0x80, 0x5c, 0xea, 0xa8,
		0x36, 0x30, 0x6f, 0xad, 0xcd, 0x65, 0x9d, 0xa0, 0xd6, 0x66, 0xe2, 0x61, 0x45, 0xad, 0x4d, 0x79,
		0xf8, 0x88, 0x5a, 0x9b, 0x14, 0x16, 0x8b, 0x5a, 0x9b, 0x0c, 0x71, 0x16, 0x6a, 0x6d, 0xa6, 0x30,
		0xfa, 0x0b, 0xb3, 0x80, 0xbd, 0x94, 0x48, 0x1d, 0x61, 0xf3, 0x04, 0x1b, 0xe0, 0xc9, 0x7b, 0x43,
		0xad, 0x4d, 0x6c, 0xa7, 0xc3, 0x05, 0xe4, 0xd5, 0x05, 0xe0, 0xd8, 0xc0, 0x36, 0x21, 0x35, 0xce,
		0x09, 0x00, 0x50, 0x01, 0xa8, 0xac, 0x80, 0x8a, 0x14, 0x6e, 0x20, 0x35, 0x01, 0x52, 0xc3, 0x8c,
		0xe0, 0x02, 0xe0, 0x02, 0x72, 0xe9, 0x02, 0x50, 0x15, 0x11, 0x2a, 0x0b, 0xbd, 0x47, 0x80, 0x55,
		0x41, 0x74, 0x81, 0x83, 0x40, 0xad, 0x4d, 0x68, 0x30, 0x9b, 0x85, 0xe3, 0x90, 0x64, 0x00, 0xb7,
		0x80, 0x5b, 0x99, 0x70, 0x0b, 0x6a, 0x0d, 0x1c, 0xa7, 0xc7, 0x71, 0x58, 0x15, 0x1c, 0x04, 0x1c,
		0x44, 0xae, 0x1d, 0x04, 0xaa, 0x22, 0x42, 0xb0, 0xa1, 0x77, 0x10, 0xb0, 0x2a, 0x08, 0x36, 0x70,
		0x10, 0x1b, 0xe5, 0x20, 0x20, 0xd8, 0x6c, 0x31, 0x8e, 0x43, 0xb0, 0x01, 0xdc, 0x02, 0x6e, 0x65,
		0xc2, 0x2d, 0xa8, 0x35, 0x70, 0x9c, 0x1e, 0xc7, 0x61, 0x55, 0x70, 0x10, 0x70, 0x10, 0xb9, 0x74,
		0x10, 0xa8, 0xb5, 0xb9, 0xa5, 0x18, 0x8e, 0x5a, 0x9b, 0x80, 0x59, 0xc0, 0x2c, 0x6a, 0x6d, 0xa2,
		0xd6, 0xe6, 0x26, 0xa0, 0x39, 0x6a, 0x6d, 0xa2, 0xd6, 0x66, 0x56, 0x9e, 0x13, 0xb5, 0x36, 0xe7,
		0x3c, 0x18, 0x6a, 0x6d, 0x2e, 0xef, 0x05, 0xb5, 0x36, 0x57, 0x75, 0x81, 0x5a, 0x9b, 0x19, 0xc2,
		0x35, 0xd4, 0xda, 0x44, 0xad, 0x4d, 0x5e, 0xcb, 0x40, 0xad, 0xcd, 0x39, 0xc7, 0x8c, 0x5a, 0x9b,
		0x84, 0x7d, 0xa1, 0xd6, 0xe6, 0xc6, 0x79, 0xa4, 0x9d, 0x74, 0x5b, 0x48, 0x88, 0x7b, 0xea, 0x89,
		0x65, 0xd9, 0xde, 0x30, 0xec, 0xa6, 0x58, 0x61, 0xaa, 0x6b, 0x3c, 0x8a, 0xae, 0xde, 0xd3, 0xbd,
		0x47, 0xdf, 0xf4, 0x0e, 0xec, 0x9e, 0xb0, 0x8c, 0xa0, 0xf2, 0xa5, 0x66, 0x09, 0xef, 0x97, 0xed,
		0xfc, 0xd4, 0x4c, 0x1f, 0x5b, 0x2d, 0x43, 0x1c, 0xcc, 0xbf, 0xe1, 0x2e, 0xbc, 0x73, 0x20, 0x9e,
		0x7a, 0x56, 0xf0, 0x7f, 0x53, 0x1f, 0x9a, 0x79, 0x79, 0x30, 0x2a, 0x00, 0x2a, 0x9e, 0x83, 0x3f,
		0x7a, 0x76, 0xc7, 0x34, 0x5e, 0x0e, 0x5c, 0x4f, 0xf7, 0x44, 0x32, 0x4b, 0x8e, 0x3f, 0x2b, 0xf1,
		0xbe, 0x19, 0x73, 0x1e, 0xa9, 0xe6, 0x2f, 0x13, 0xf3, 0x96, 0x00, 0x75, 0x55, 0xd7, 0x73, 0xfa,
		0x86, 0x67, 0x8d, 0x9c, 0xd6, 0xc5, 0xf0, 0x81, 0xce, 0x46, 0xbd, 0xdd, 0xd5, 0x9f, 0x7a, 0x56,
		0xf0, 0x7f, 0xe1, 0x3b, 0x67, 0x41, 0xff, 0xf5, 0xa0, 0xfb, 0xc6, 0xb0, 0xf7, 0x1d, 0x39, 0xb3,
		0x1d, 0x63, 0xa6, 0xd5, 0xde, 0xfd, 0x7d, 0xec, 0xe9, 0x0d, 0x3d, 0xb9, 0xdf, 0x48, 0x4c, 0x2b,
		0x1b, 0xd3, 0xe7, 0x98, 0x5f, 0x4f, 0x5a, 0xfb, 0x96, 0xa2, 0xd6, 0x2d, 0x61, 0x6d, 0x5b, 0xaa,
		0x90, 0x84, 0xbc, 0x76, 0x2d, 0x79, 0x7c, 0x41, 0x5b, 0x9b, 0x56, 0x2e, 0x32, 0x7e, 0x36, 0x93,
		0xd1, 0x3b, 0xf5, 0x5e, 0x33, 0xec, 0x6e, 0xcf, 0xb6, 0x04, 0x81, 0xc4, 0x30, 0x29, 0xa9, 0x3a,
		0xd5, 0x68, 0xc2, 0xb9, 0x49, 0xb6, 0x28, 0xc9, 0x16, 0x27, 0xe5, 0x22, 0x65, 0x58, 0xac, 0x5c,
		0x3c, 0x82, 0xad, 0xf0, 0x34, 0x1b, 0x49, 0xe0, 0x29, 0x34, 0x9d, 0x6e, 0xf8, 0x9a, 0x74, 0x91,
		0x2f, 0x5b, 0xec, 0xda, 0x28, 0x8a, 0x20, 0x2e, 0x55, 0xbf, 0xd0, 0x03, 0xea, 0xd4, 0x67, 0x08,
		0x1e, 0xb8, 0xe5, 0x06, 0xd4, 0xa9, 0x97, 0xc1, 0xeb, 0xb3, 0x5f, 0xa7, 0xbe, 0x23, 0xf4, 0xb6,
		0x23, 0xda, 0x1c, 0x95, 0xea, 0x6b, 0x84, 0x6d, 0x36, 0x46, 0x44, 0x70, 0x7f, 0xff, 0x60, 0x48,
		0x03, 0x0f, 0x16, 0xe0, 0x6b, 0x83, 0xae, 0x2a, 0x31, 0xc6, 0x98, 0x47, 0x0c, 0xf9, 0xa3, 0x76,
		0x69, 0x81, 0xbe, 0x08, 0xa0, 0x07, 0xd0, 0x03, 0xe8, 0x69, 0x6c, 0x96, 0x2a, 0x7e, 0xe4, 0x8f,
		0x23, 0x65, 0xc5, 0x93, 0x4c, 0x71, 0x25, 0x1b, 0xec, 0x70, 0xc2, 0x8f, 0x04, 0x18, 0xe2, 0x86,
		0x23, 0x69, 0xb0, 0x24, 0x0d, 0x9e, 0xe4, 0xc0, 0x14, 0x2d, 0x5c, 0x11, 0xc3, 0x16, 0x5f, 0x9c,
		0xba, 0x60, 0xf1, 0x6c, 0xc9, 0xc5, 0x93, 0xa4, 0xe2, 0x4c, 0x8f, 0x30, 0xf1, 0xfe, 0xd8, 0x42,
		0xfb, 0x2f, 0x0f, 0xb6, 0xa7, 0xd9, 0x46, 0x80, 0xe5, 0x8e, 0x70, 0x5d, 0xd1, 0xd2, 0x7c, 0x8a,
		0xe0, 0x77, 0x96, 0xd5, 0x8d, 0x53, 0xc2, 0x21, 0x56, 0xef, 0x75, 0xe3, 0xe7, 0xbd, 0x6d, 0x09,
		0xcd, 0x75, 0x0c, 0xad, 0xab, 0x1b, 0x8c, 0xee, 0x72, 0xbe, 0x27, 0xb8, 0x4b, 0xb8, 0x4b, 0xb8,
		0x4b, 0xb8, 0x4b, 0x52, 0x8b, 0xef, 0xea, 0x86, 0xa6, 0xb7, 0x5a, 0x3e, 0x92, 0xb3, 0xfa, 0x4c,
		0x86, 0xb6, 0xb9, 0x4f, 0x48, 0xa8, 0x37, 0x05, 0xed, 0x48, 0xd7, 0xda, 0x27, 0xda, 0x97, 0xe6,
		0x6b, 0x69, 0xb0, 0x7b, 0x3c, 0xfb, 0x7a, 0xef, 0xb5, 0x32, 0xa0, 0xb7, 0xc7, 0x26, 0xc7, 0x40,
		0xc9, 0x38, 0x4f, 0xa2, 0xfe, 0xf3, 0xfe, 0x70, 0x31, 0x1c, 0x97, 0x68, 0x22, 0x18, 0xcb, 0x59,
		0x30, 0x96, 0x29, 0x39, 0x85, 0x69, 0x82, 0xa4, 0x67, 0x27, 0xf5, 0xee, 0xef, 0xa7, 0x05, 0xef,
		0x91, 0x06, 0xbe, 0x49, 0x92, 0xb7, 0x39, 0xf9, 0x75, 0x2e, 0xc3, 0xb5, 0xdc, 0xd3, 0xad, 0x43,
		0xfe, 0xce, 0x60, 0x20, 0x0d, 0xf9, 0x3b, 0x9d, 0x40, 0x79, 0xc3, 0xe5, 0x6f, 0x93, 0x30, 0x67,
		0x6a, 0x1d, 0x74, 0x61, 0x62, 0xf1, 0x45, 0xb0, 0x78, 0xb0, 0x78, 0xb0, 0xf8, 0x6c, 0xb2, 0x00,
		0x6a, 0xd0, 0x0a, 0x1b, 0x26, 0x4e, 0x03, 0x58, 0xb9, 0xa0, 0x48, 0xd3, 0x02, 0x24, 0x41, 0x18,
		0x3b, 0x94, 0xc9, 0x80, 0x34, 0x89, 0xd0, 0x26, 0x0b, 0xe2, 0xa4, 0x43, 0x9d, 0x74, 0xc8, 0x93,
		0x0b, 0x7d, 0x3c, 0x10, 0xc8, 0x04, 0x85, 0xec, 0x90, 0x38, 0x15, 0xd7, 0xb9, 0x66, 0x8b, 0xdf,
		0x88, 0x27, 0x11, 0x9e, 0xdf, 0x1d, 0xb3, 0x3d, 0xf1, 0xec, 0xd8, 0x48, 0x07, 0x4c, 0x99, 0xc0,
		0x99, 0x02, 0x80, 0xca, 0x06, 0xd2, 0xd4, 0x00, 0x35, 0x35, 0x60, 0x4d, 0x07, 0x60, 0x79, 0x81,
		0x96, 0x19, 0x70, 0xc3, 0x21, 0x63, 0xdb, 0x51, 0x5a, 0xb9, 0xe2, 0xfa, 0xa6, 0xe5, 0x1d, 0x96,
		0x64, 0x2c, 0xb8, 0x11, 0x3e, 0xd6, 0x24, 0x74, 0xf5, 0x4d, 0xb7, 0x1e, 0x04, 0x7b, 0x6d, 0xae,
		0xf1, 0x7f, 0x72, 0x00, 0x44, 0x19, 0x95, 0x04, 0x91, 0x86, 0x58, 0x61, 0xa7, 0x3f, 0xf4, 0x4e,
		0x5f, 0xf0, 0x3b, 0x9c, 0x85, 0x7e, 0xbf, 0x38, 0xba, 0xe1, 0x99, 0xb6, 0xf5, 0xd9, 0x7c, 0x30,
		0xa9, 0x4b, 0xa0, 0xac, 0xb7, 0x46, 0xc4, 0x83, 0xee, 0x99, 0x4f, 0x82, 0xb4, 0xb2, 0x48, 0x06,
		0x60, 0x66, 0xd6, 0xa4, 0xf4, 0xe7, 0xf4, 0x4c, 0xaa, 0x58, 0xad, 0xd5, 0x6a, 0x25, 0xca, 0x72,
		0x33, 0xb0, 0xac, 0x14, 0xdd, 0xa3, 0xbc, 0x5e, 0x9a, 0xb9, 0x76, 0xf3, 0x8c, 0x55, 0x81, 0x56,
		0xf6, 0xc9, 0x57, 0x2d, 0x28, 0x03, 0x7e, 0x71, 0xa6, 0xba, 0x50, 0xe1, 0x63, 0xe1, 0x58, 0xf9,
		0x61, 0x3a, 0x5e, 0x5f, 0xef, 0x28, 0x0d, 0xc7, 0x7c, 0xd2, 0x3d, 0xa1, 0x9c, 0x9f, 0x5c, 0x28,
		0x57, 0xc2, 0x79, 0x32, 0x0d, 0xa1, 0xec, 0xfe, 0x68, 0x9c, 0x5f, 0xed, 0x29, 0x67, 0x96, 0x27,
		0x1c, 0xbb, 0x27, 0x1c, 0xfd, 0xde, 0xec, 0x98, 0xde, 0xcb, 0xad, 0xf5, 0xcb, 0xf4, 0x1e, 0x95,
		0x86, 0x63, 0x3f, 0x99, 0x2d, 0xe1, 0x28, 0x9f, 0x46, 0x29, 0x7e, 0xca, 0x27, 0xc7, 0x6c, 0x3d,
		0x08, 0x77, 0x5f, 0x95, 0x08, 0xcb, 0x92, 0xe9, 0xc9, 0x32, 0x9a, 0xc2, 0x5d, 0xbe, 0x28, 0x73,
		0x8c, 0x65, 0x29, 0x73, 0x61, 0x36, 0x29, 0x20, 0xff, 0x56, 0x21, 0x3f, 0x73, 0xca, 0xd1, 0x42,
		0x7f, 0xd2, 0x52, 0x90, 0xe4, 0x19, 0x42, 0xbe, 0xa4, 0x54, 0x49, 0x13, 0x9e, 0x7a, 0x4a, 0xd3,
		0x74, 0x8a, 0xce, 0xf4, 0x0b, 0xd2, 0x5c, 0x27, 0x7e, 0x53, 0x60, 0x30, 0x03, 0x66, 0xb1, 0x5b,
		0x8a, 0xc8, 0xcd, 0x2c, 0x6e, 0x63, 0x17, 0x30, 0x9b, 0xd1, 0x21, 0x76, 0x01, 0xb7, 0xd9, 0x75,
		0xb1, 0x8b, 0xd1, 0x8c, 0x55, 0x2c, 0x56, 0x01, 0x58, 0xb1, 0xc6, 0x7b, 0xe7, 0xc8, 0x5c, 0x95,
		0x8b, 0x21, 0x26, 0x6f, 0xb1, 0xef, 0x1b, 0x96, 0xce, 0x64, 0xf7, 0x7d, 0xc3, 0x6e, 0x72, 0x9e,
		0x01, 0x53, 0x82, 0xef, 0x83, 0xef, 0x83, 0xef, 0xcb, 0x84, 0xef, 0x43, 0x06, 0x4c, 0xe6, 0x48,
		0x82, 0x34, 0xb2, 0x20, 0x13, 0x38, 0x53, 0x00, 0x50, 0xd9, 0x40, 0x9a, 0x1a, 0xa0, 0xa6, 0x06,
		0xac, 0xe9, 0x00, 0x2c, 0xbf, 0xf2, 0xa6, 0x20, 0x03, 0x86, 0x02, 0x1f, 0x91, 0x01, 0x93, 0xe0,
		0x87, 0x21, 0x03, 0x46, 0xe6, 0x03, 0x20, 0x03, 0x86, 0xdb, 0xa4, 0x90, 0x01, 0x83, 0x0c, 0x98,
		0x58, 0xff, 0x21, 0x03, 0x26, 0x6a, 0x9f, 0xc8, 0x80, 0x41, 0x06, 0x4c, 0x34, 0x9a, 0x82, 0x0c,
		0x18, 0x64, 0xc0, 0x6c, 0x1d, 0xf2, 0x43, 0x01, 0x54, 0x90, 0xb8, 0x61, 0x79, 0x14, 0xb7, 0x9e,
		0xc9, 0xb3, 0x84, 0x6c, 0x1f, 0x31, 0xff, 0x1f, 0xf1, 0xc2, 0x25, 0xc2, 0xf2, 0xdc, 0x3d, 0x3b,
		0x4d, 0xb7, 0x79, 0xee, 0xa0, 0x9d, 0x66, 0x5f, 0xd2, 0xee, 0xa2, 0x0d, 0x3b, 0xe5, 0xbb, 0x93,
		0x76, 0xb1, 0x0b, 0xf2, 0xbb, 0x69, 0xb9, 0xac, 0x94, 0xbb, 0x1c, 0x5a, 0x56, 0x91, 0x4e, 0x65,
		0xd9, 0xf7, 0x8e, 0x76, 0x7f, 0xe0, 0xa7, 0xd3, 0xf1, 0xd3, 0xdc, 0x9d, 0x85, 0x7f, 0x55, 0x51,
		0x24, 0x2e, 0x3d, 0xb3, 0xcd, 0x94, 0xb9, 0x6e, 0x52, 0xa9, 0x38, 0xda, 0x94, 0x10, 0x96, 0x14,
		0x10, 0xb6, 0xe2, 0x70, 0x25, 0x14, 0x87, 0x63, 0xa2, 0xea, 0x28, 0x0e, 0x97, 0x75, 0x9c, 0xc6,
		0xdd, 0x28, 0xef, 0xc1, 0x0d, 0x8a, 0xbd, 0xa3, 0x4c, 0x5c, 0x26, 0x65, 0x42, 0x94, 0x89, 0xc3,
		0xdd, 0x28, 0xac, 0x84, 0x02, 0x57, 0x80, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0x2c,
		0x58, 0x3c, 0xae, 0x00, 0x59, 0xdd, 0x01, 0xae, 0x00, 0x89, 0xd2, 0xcb, 0x46, 0x5c, 0x01, 0x02,
		0x11, 0x33, 0x9a, 0xd8, 0x96, 0xb2, 0x88, 0x49, 0xb8, 0x89, 0x48, 0xa0, 0x5e, 0xee, 0xa4, 0x38,
		0xd5, 0xe3, 0x4d, 0x40, 0x62, 0x2d, 0x81, 0x76, 0xff, 0x8f, 0x7e, 0xbf, 0x4f, 0xca, 0xfe, 0x1e,
		0xc3, 0x7e, 0x1e, 0xc3, 0xfe, 0x5d, 0x52, 0x03, 0x62, 0xc8, 0x99, 0x63, 0xc8, 0x89, 0x63, 0x50,
		0xa4, 0x83, 0x04, 0xa4, 0x6a, 0xe9, 0xf0, 0x78, 0x55, 0x1a, 0x91, 0x69, 0x3d, 0x28, 0xa7, 0x76,
		0xf7, 0xde, 0xb4, 0x44, 0x6b, 0x94, 0x70, 0x54, 0xf7, 0x1e, 0x85, 0x63, 0x09, 0x4f, 0xf9, 0xd1,
		0xb8, 0x50, 0x76, 0x1b, 0x9f, 0x3e, 0x69, 0xf5, 0x1f, 0x8d, 0x8b, 0xbd, 0xfd, 0x9c, 0xc9, 0xda,
		0x5c, 0x19, 0x68, 0x72, 0x95, 0x6d, 0xd2, 0x09, 0xdc, 0xcc, 0x08, 0x80, 0x61, 0xd9, 0x9c, 0xd5,
		0xeb, 0x75, 0xe5, 0x63, 0xa1, 0xb4, 0x5f, 0xd4, 0x57, 0x27, 0xe0, 0x61, 0x3d, 0xa4, 0xb0, 0x1e,
		0xd6, 0x9b, 0x99, 0xac, 0x19, 0xfa, 0x4e, 0xba, 0x54, 0x20, 0xa9, 0xfb, 0x24, 0x0e, 0xb1, 0xd3,
		0x0e, 0xad, 0x55, 0x92, 0xad, 0xf8, 0xb8, 0x59, 0x2a, 0xc9, 0x8c, 0x33, 0xbe, 0x29, 0xc5, 0xfb,
		0x66, 0x4c, 0xd3, 0xa1, 0x32, 0x99, 0x34, 0x4c, 0x25, 0xde, 0x04, 0x45, 0x1f, 0xde, 0x18, 0x43,
		0x9b, 0x30, 0x03, 0x84, 0x24, 0xe3, 0x23, 0x61, 0x86, 0x47, 0xe2, 0x8c, 0x0e, 0x0a, 0xb1, 0x9c,
		0x50, 0x14, 0xa7, 0x72, 0xdd, 0xe4, 0x22, 0x37, 0xb9, 0x5f, 0xa6, 0x15, 0xad, 0xe5, 0xc2, 0x51,
		0xd2, 0x0c, 0x0a, 0xd5, 0xb0, 0x2d, 0xcf, 0xb1, 0x3b, 0x9a, 0x3f, 0x45, 0x9a, 0xb0, 0x7c, 0x1a,
		0x99, 0xbc, 0x06, 0xc5, 0xf4, 0x3d, 0x54, 0x8b, 0xad, 0x27, 0x15, 0x4d, 0x48, 0xf6, 0xc0, 0xc8,
		0xf6, 0xbc, 0x28, 0xf7, 0xb8, 0x18, 0xf6, 0xb4, 0xa8, 0x23, 0x70, 0xb6, 0x3d, 0x2b, 0xb6, 0x70,
		0x9b, 0x67, 0x4f, 0x2a, 0x5d, 0xe1, 0x90, 0x6c, 0x8f, 0x69, 0xb2, 0x73, 0x6d, 0xdb, 0x1d, 0xa1,
		0x93, 0x58, 0xdc, 0xd8, 0x8f, 0x16, 0x21, 0x8d, 0xa5, 0x24, 0x8d, 0x7d, 0x2c, 0x15, 0xcb, 0x0b,
		0x27, 0xf3, 0xfe, 0x63, 0x3a, 0x22, 0x3c, 0x9a, 0x77, 0xd5, 0xef, 0xf5, 0x6c, 0xc7, 0xbb, 0xb5,
		0x4c, 0x6b, 0x46, 0x56, 0xb9, 0xb5, 0x5a, 0x8e, 0xde, 0xf6, 0x34, 0x53, 0x78, 0x6d, 0xed, 0x5e,
		0xb8, 0xae, 0xe6, 0xb4, 0x8d, 0x5a, 0xf9, 0xb0, 0x74, 0x6f, 0xba, 0x5a, 0xa1, 0xa2, 0x7c, 0xfa,
		0xab, 0xa1, 0x7c, 0x6d, 0x9c, 0x5f, 0x69, 0x9f, 0x74, 0x57, 0xb4, 0x6e, 0xad, 0xe9, 0xef, 0x42,
		0x37, 0x48, 0x47, 0x47, 0x4b, 0x69, 0xb6, 0xa1, 0x45, 0x50, 0x11, 0xd8, 0x04, 0x41, 0xba, 0xb0,
		0x0c, 0xbd, 0xe7, 0xf6, 0x3b, 0x01, 0x23, 0xd5, 0x3c, 0x0a, 0xb7, 0x10, 0x02, 0xc9, 0x92, 0xb6,
		0x11, 0xba, 0x21, 0x74, 0x43, 0xe8, 0x96, 0xb1, 0xd0, 0xcd, 0x6c, 0x09, 0xcb, 0x33, 0xbd, 0x17,
		0x9a, 0x72, 0xb9, 0x61, 0xf8, 0x46, 0xb1, 0x09, 0x7b, 0x36, 0x7a, 0x34, 0xdf, 0x7f, 0xd0, 0x9f,
		0xef, 0xa9, 0x5f, 0x9c, 0x9e, 0x34, 0xae, 0xbe, 0x9f, 0x9f, 0x5c, 0x9f, 0x5d, 0x52, 0x45, 0x1f,
		0xc3, 0x2a, 0x3c, 0x2e, 0x69, 0xca, 0x0d, 0x53, 0xb2, 0xa9, 0xef, 0x99, 0xd5, 0x2c, 0x26, 0xdc,
		0x32, 0xfd, 0xde, 0x1f, 0x7f, 0x9f, 0x9f, 0x64, 0x2e, 0xec, 0x68, 0xa6, 0x0d, 0x47, 0xe9, 0x84,
		0x1d, 0x4f, 0x26, 0x61, 0x9c, 0xf1, 0x64, 0x22, 0xb0, 0x40, 0x60, 0x81, 0xc0, 0x22, 0x6b, 0x81,
		0x05, 0xd9, 0xe9, 0x13, 0xa2, 0xd3, 0x26, 0xe9, 0x60, 0x5d, 0xb7, 0xdf, 0xf1, 0x4c, 0x43, 0x77,
		0x3d, 0xed, 0xc1, 0xb1, 0xfb, 0x3d, 0x3a, 0xdc, 0x9b, 0x6f, 0x18, 0x18, 0x08, 0x0c, 0x04, 0x06,
		0x66, 0x8d, 0x5c, 0xf5, 0x08, 0x8f, 0x5a, 0x84, 0x38, 0x78, 0x44, 0xd0, 0xd6, 0xe8, 0xb7, 0x66,
		0x56, 0x87, 0x36, 0x7b, 0x4f, 0x65, 0x86, 0x63, 0x2a, 0x1c, 0xc7, 0x53, 0xd8, 0x8e, 0xa5, 0xa8,
		0xbb, 0x37, 0x05, 0xed, 0xa8, 0xf9, 0x76, 0x53, 0xd4, 0x8e, 0x9a, 0xc3, 0xbf, 0x16, 0x83, 0x3f,
		0x5e, 0x4b, 0x83, 0xb7, 0xd2, 0x4d, 0x41, 0x2b, 0x8f, 0xde, 0x2d, 0x55, 0x6e, 0x0a, 0x5a, 0xa5,
		0xb9, 0xb7, 0x7b, 0x7b, 0xbb, 0x1f, 0xf5, 0x3b, 0x7b, 0xaf, 0x87, 0x84, 0x87, 0x5a, 0x9a, 0x94,
		0xc3, 0xca, 0x79, 0x88, 0x45, 0xfd, 0x67, 0x57, 0xd6, 0xe8, 0xee, 0x11, 0x1e, 0x82, 0x69, 0x6e,
		0x78, 0x8a, 0xa9, 0xd9, 0x7b, 0xaa, 0x62, 0xd9, 0xef, 0x4e, 0x1f, 0xa4, 0x2a, 0x7e, 0x28, 0x0f,
		0x8e, 0xf7, 0x5e, 0x6b, 0x83, 0xf9, 0x37, 0xdf, 0x96, 0x7d, 0xac, 0xf8, 0xa1, 0x36, 0x38, 0x5e,
		0xf1, 0x2f, 0xd5, 0xc1, 0xf1, 0x9a, 0x6d, 0x54, 0xe6, 0x0e, 0x73, 0xf9, 0xff, 0xe0, 0xbf, 0x5f,
		0x5a, 0xf5, 0x85, 0xf2, 0x8a, 0x2f, 0x1c, 0xae, 0xfa, 0xc2, 0xe1, 0x8a, 0x2f, 0xac, 0x7c, 0xa4,
		0xd2, 0x8a, 0x2f, 0x54, 0x06, 0x6f, 0x0b, 0x9f, 0xdf, 0x5d, 0xfe, 0xd1, 0xea, 0x60, 0xef, 0x6d,
		0xd5, 0xbf, 0xd5, 0x06, 0x6f, 0xc7, 0x7b, 0x7b, 0x5b, 0x0c, 0x84, 0x30, 0x37, 0xf9, 0xe6, 0x96,
		0x3d, 0xc7, 0xb0, 0x95, 0xdb, 0xa0, 0x13, 0x2a, 0xdd, 0xd5, 0xdd, 0x9f, 0x1c, 0x14, 0x3d, 0x68,
		0x17, 0x0c, 0x1d, 0x0c, 0x1d, 0x0c, 0x1d, 0x0c, 0x1d, 0x0c, 0x1d, 0x0c, 0x1d, 0x0c, 0x1d, 0x0c,
		0x1d, 0x0c, 0x1d, 0x0c, 0x1d, 0x94, 0x09, 0x0c, 0x1d, 0x0c, 0x1d, 0x0c, 0x1d, 0x0c, 0xfd, 0xb7,
		0x2b, 0xc0, 0x11, 0xbd, 0x8e, 0x69, 0x0c, 0x53, 0x89, 0xbb, 0x76, 0x8b, 0x30, 0x4d, 0x79, 0xa1,
		0x65, 0xb0, 0x74, 0xb0, 0x74, 0xb0, 0xf4, 0x8c, 0xb1, 0x74, 0x61, 0xf5, 0xbb, 0xc2, 0x19, 0x1e,
		0x9c, 0x27, 0xa4, 0xe9, 0x65, 0x82, 0xb6, 0xea, 0x56, 0xbf, 0x4b, 0x67, 0xbf, 0xd7, 0xf6, 0xd5,
		0x30, 0x6d, 0x8a, 0xb4, 0x68, 0x5b, 0xc1, 0x1f, 0xc3, 0xab, 0xeb, 0x93, 0xeb, 0xb3, 0xd3, 0xbb,
		0xb3, 0x8b, 0xbf, 0xbe, 0xd5, 0xaf, 0xae, 0xee, 0xbe, 0xd5, 0x1b, 0xe7, 0x67, 0xa7, 0x94, 0xc9,
		0xcf, 0x41, 0x57, 0x45, 0xbf, 0xab, 0x4f, 0x7f, 0x35, 0x28, 0xdb, 0x2c, 0x05, 0xf9, 0xca, 0xdf,
		0xcf, 0xaf, 0xcf, 0x4e, 0x4f, 0xae, 0xae, 0xd5, 0x4c, 0xd5, 0xd9, 0xbb, 0xb6, 0xcf, 0x82, 0xb5,
		0x4b, 0x38, 0x5b, 0xfe, 0xe8, 0x91, 0x5d, 0x15, 0x11, 0xb4, 0x38, 0x19, 0x3b, 0xb2, 0x1b, 0x23,
		0x86, 0xe8, 0xbd, 0xda, 0xa4, 0x8e, 0x95, 0xc2, 0x66, 0x14, 0xe9, 0x4b, 0x27, 0xde, 0xb1, 0xfb,
		0x9e, 0xd0, 0x5a, 0xa6, 0xeb, 0x99, 0xd6, 0x43, 0xdf, 0x74, 0x1f, 0x85, 0x43, 0x18, 0xf2, 0x2c,
		0x69, 0x1c, 0x51, 0x0f, 0xa2, 0x1e, 0x44, 0x3d, 0x19, 0x8b, 0x7a, 0xfa, 0x16, 0x71, 0xbc, 0xb3,
		0x0d, 0xdb, 0x12, 0xf4, 0xe8, 0xc6, 0x35, 0x94, 0x3c, 0x43, 0x4a, 0x3f, 0xb4, 0x0b, 0x43, 0x2c,
		0xe1, 0x5e, 0x89, 0x3c, 0x16, 0x0f, 0x5f, 0xd8, 0x79, 0x18, 0xca, 0x5d, 0x37, 0x45, 0xad, 0x32,
		0x7a, 0x5d, 0x1e, 0xbc, 0x55, 0x27, 0x5b, 0x10, 0xaf, 0x87, 0x83, 0xb7, 0x6a, 0x65, 0xea, 0x75,
		0xc9, 0x7f, 0xed, 0xbf, 0x51, 0x1a, 0xed, 0x51, 0x54, 0x2b, 0x95, 0xc3, 0xe1, 0x2e, 0xc5, 0xf1,
		0xb2, 0xc6, 0x3f, 0x06, 0x8d, 0x1f, 0x8e, 0x5e, 0x1f, 0x0d, 0xde, 0xca, 0x37, 0x85, 0xe2, 0xe8,
		0xd5, 0xc7, 0xc1, 0x5b, 0xb9, 0x74, 0x53, 0xd0, 0x3e, 0x8e, 0x5e, 0xd7, 0xfc, 0xd7, 0x47, 0x37,
		0x85, 0xf0, 0xe3, 0xd5, 0xe0, 0x8d, 0xf2, 0xd4, 0x47, 0x2a, 0xc3, 0x77, 0x8e, 0x82, 0x1e, 0xc3,
		0x07, 0x0e, 0xde, 0xf2, 0x9f, 0xba, 0x3a, 0x79, 0xea, 0xe1, 0x7b, 0xb5, 0x49, 0x6f, 0xa5, 0xf0,
		0xbd, 0xa9, 0x3e, 0xc3, 0xb7, 0x86, 0x2d, 0xee, 0xa1, 0x74, 0xfa, 0x82, 0xa4, 0x0b, 0x6b, 0x59,
		0x69, 0x2d, 0x7b, 0xd9, 0x2f, 0x1d, 0xff, 0x01, 0x80, 0xbd, 0x59, 0x80, 0xcd, 0xb4, 0xbd, 0x7c,
		0xcc, 0xb9, 0xd6, 0x81, 0xaa, 0xbf, 0x45, 0xd5, 0x3c, 0x4e, 0x29, 0xa0, 0x0f, 0xd0, 0x97, 0x42,
		0xac, 0x9a, 0xb3, 0x00, 0x01, 0xa8, 0x9a, 0x6a, 0xac, 0x0a, 0x6b, 0xc9, 0x15, 0x60, 0x23, 0xbf,
		0x6d, 0x4d, 0x87, 0x41, 0xbb, 0xd5, 0xb8, 0xe0, 0x2d, 0xca, 0x84, 0x6d, 0x92, 0x6e, 0x3d, 0x4e,
		0xd4, 0x28, 0x8e, 0x2d, 0xc8, 0xb0, 0xf5, 0x60, 0x2b, 0xf2, 0xe4, 0xfb, 0xf5, 0xa5, 0x9a, 0xed,
		0x6b, 0xf8, 0xc8, 0xb7, 0xf5, 0x26, 0xd2, 0xb7, 0xff, 0xe3, 0xa9, 0xb6, 0xc7, 0xe8, 0xd7, 0x37,
		0xee, 0x76, 0xc0, 0xd5, 0x48, 0xe5, 0xc3, 0xd2, 0xf1, 0x5c, 0xf9, 0xce, 0xd9, 0xeb, 0x73, 0x7a,
		0xfa, 0x83, 0xd0, 0x8a, 0x1f, 0x51, 0xb3, 0x75, 0xd8, 0x87, 0xfc, 0xbb, 0x8f, 0xd6, 0x9e, 0x21,
		0xe0, 0x02, 0x51, 0xff, 0x49, 0xb6, 0xf3, 0xdd, 0x61, 0x25, 0x5d, 0xe2, 0x0a, 0xab, 0x33, 0xad,
		0x62, 0x03, 0xff, 0xdd, 0xf1, 0xc2, 0x06, 0x3e, 0x36, 0xf0, 0x7f, 0x1b, 0xf3, 0xa1, 0xb6, 0x2a,
		0xd5, 0x0f, 0xaf, 0xff, 0x68, 0x5c, 0xdc, 0x5d, 0xff, 0xb7, 0x51, 0xdf, 0xbe, 0xba, 0xaa, 0x3f,
		0xce, 0x4f, 0x2e, 0xee, 0x4e, 0xfe, 0x73, 0xf2, 0xad, 0xbe, 0x55, 0xd5, 0x55, 0xfd, 0x5f, 0xfd,
		0xe9, 0xe4, 0xaa, 0xfe, 0x79, 0xfb, 0x7e, 0xf5, 0xf7, 0x8b, 0xcf, 0xe7, 0x75, 0x54, 0x96, 0x05,
		0x01, 0x93, 0x47, 0xc0, 0x40, 0xbc, 0xb2, 0x4a, 0xbc, 0x40, 0xb8, 0xc8, 0x08, 0x17, 0x6e, 0x66,
		0x5c, 0xe3, 0x66, 0xc6, 0x04, 0xf7, 0xe1, 0xcb, 0xb9, 0x9b, 0xf1, 0xe9, 0xb9, 0xa3, 0x5b, 0xc9,
		0xef, 0x66, 0x1c, 0x36, 0x93, 0xf2, 0xdd, 0x8c, 0x05, 0xdc, 0xcd, 0xc8, 0xc9, 0x5a, 0x71, 0x37,
		0xe3, 0xd4, 0xa3, 0x27, 0xbe, 0x9b, 0x51, 0xb7, 0x5e, 0x82, 0xda, 0x53, 0x6e, 0x30, 0xdb, 0x9a,
		0x69, 0x79, 0xc2, 0x69, 0xeb, 0x06, 0xa1, 0x00, 0xb5, 0xb2, 0x07, 0x1a, 0x31, 0xaa, 0x08, 0x31,
		0x0a, 0x62, 0xd4, 0xb6, 0x8a, 0x51, 0x49, 0x97, 0x7f, 0xd8, 0x90, 0x31, 0x5e, 0x05, 0xc4, 0x12,
		0xcf, 0xa8, 0x5d, 0xa2, 0x19, 0xa4, 0x59, 0xf2, 0xe4, 0x4b, 0x9f, 0x03, 0x02, 0x18, 0xa1, 0x40,
		0x26, 0xa7, 0x23, 0x85, 0x86, 0x74, 0x08, 0x1d, 0x19, 0x54, 0x10, 0x53, 0x36, 0x22, 0x9b, 0xa5,
		0x82, 0x90, 0xb0, 0x41, 0xba, 0x10, 0x62, 0xe5, 0x5a, 0xa0, 0x8a, 0x21, 0x56, 0x01, 0x4c, 0x81,
		0xb8, 0x59, 0x6a, 0xa0, 0xe1, 0x04, 0x9c, 0x65, 0xc0, 0x63, 0xb6, 0x39, 0x52, 0x63, 0x99, 0xe0,
		0x47, 0x1a, 0x0c, 0x49, 0x83, 0xa3, 0x55, 0xb0, 0x64, 0xb6, 0xe9, 0x13, 0x0a, 0x07, 0xd9, 0x4e,
		0xb8, 0xa2, 0xda, 0x7c, 0x5b, 0x69, 0xed, 0x1d, 0xa1, 0xb7, 0x69, 0x36, 0xe2, 0x56, 0x46, 0x2f,
		0x35, 0x9e, 0x54, 0xf0, 0x91, 0x94, 0xe4, 0x9b, 0xc5, 0x71, 0x08, 0x90, 0xee, 0xfc, 0x1b, 0xa3,
		0xd7, 0x96, 0xff, 0x73, 0x33, 0x3d, 0xd5, 0x44, 0x52, 0xdb, 0xca, 0xf6, 0x5f, 0x1e, 0x6c, 0x4f,
		0xb3, 0x0d, 0xcd, 0xb0, 0xbb, 0x3d, 0x47, 0xb8, 0xae, 0x68, 0x69, 0xfe, 0xdc, 0xfb, 0x9d, 0x0d,
		0xb2, 0x9a, 0x74, 0x47, 0x18, 0xfb, 0xb9, 0xfd, 0x7b, 0x09, 0x8e, 0x7a, 0xa6, 0x17, 0xf8, 0x6a,
		0xf8, 0x6a, 0xf8, 0x6a, 0xf8, 0x6a, 0xf8, 0xea, 0x35, 0x7d, 0xf5, 0xcd, 0xc4, 0x57, 0xff, 0xdb,
		0xe8, 0x3b, 0x8e, 0xb0, 0xbc, 0xdd, 0xbd, 0x83, 0xfd, 0xfd, 0x83, 0xf0, 0x13, 0xcd, 0xd1, 0x57,
		0xa6, 0x71, 0xd6, 0x5d, 0xf2, 0x5e, 0xd8, 0x72, 0x4b, 0x3c, 0xc3, 0xed, 0xe7, 0xcd, 0xed, 0x67,
		0x4a, 0x2f, 0x60, 0x9a, 0x20, 0xe9, 0x5b, 0xa2, 0xc1, 0x56, 0xe1, 0xc1, 0xaa, 0xcd, 0x89, 0x83,
		0x91, 0x70, 0x99, 0x95, 0xea, 0x64, 0x04, 0x1b, 0x00, 0xc3, 0x3d, 0x60, 0x72, 0x85, 0x77, 0xd8,
		0x6c, 0xc6, 0x05, 0xde, 0x12, 0x04, 0xde, 0x3c, 0x45, 0x6b, 0x10, 0x78, 0x21, 0xf0, 0x82, 0x34,
		0x82, 0x34, 0x82, 0x34, 0x82, 0x34, 0x82, 0x34, 0x2a, 0x19, 0x11, 0x78, 0xa1, 0x63, 0xc2, 0x25,
		0xc1, 0x25, 0xc1, 0x25, 0xc1, 0x25, 0xc1, 0x25, 0x6d, 0x9e, 0x8e, 0x09, 0xb9, 0x2e, 0xcf, 0x72,
		0x5d, 0x82, 0x03, 0x0e, 0x0c, 0x6a, 0x5d, 0xaa, 0x39, 0xa1, 0xc4, 0x33, 0x9e, 0xb1, 0x99, 0x56,
		0x49, 0x94, 0x50, 0xa7, 0x6f, 0x78, 0xd6, 0x08, 0x7d, 0x2f, 0x86, 0x8f, 0x78, 0x36, 0xea, 0xff,
		0xae, 0xfe, 0xd4, 0xb3, 0x82, 0xff, 0x0b, 0xdf, 0xf9, 0xe1, 0x3f, 0xd1, 0xdd, 0xc9, 0xf0, 0x89,
		0x86, 0x11, 0xc4, 0x59, 0xf8, 0x3c, 0x39, 0x2c, 0x34, 0x41, 0x94, 0xec, 0x4b, 0x9b, 0xe4, 0x8b,
		0x7c, 0xfe, 0x54, 0x23, 0x59, 0xe4, 0xf3, 0x67, 0x01, 0xbb, 0xc9, 0xf2, 0xf9, 0x1f, 0x6d, 0xd7,
		0xd3, 0x1c, 0xa1, 0x1b, 0x8f, 0xfa, 0xbd, 0xd9, 0x31, 0xbd, 0x17, 0xed, 0xfe, 0xa1, 0x47, 0xbf,
		0xf9, 0xb3, 0xbc, 0x1b, 0xda, 0xcd, 0xa0, 0x02, 0xb2, 0xfd, 0xb3, 0x4c, 0x7d, 0xb1, 0x19, 0x94,
		0x27, 0x3a, 0x40, 0x4e, 0x66, 0x43, 0x8b, 0xbd, 0xb7, 0xed, 0x8e, 0xd0, 0x59, 0xaa, 0x61, 0x16,
		0xb7, 0x82, 0x51, 0xb1, 0x67, 0xa6, 0x64, 0x23, 0x0d, 0xa1, 0xdb, 0xef, 0x78, 0x66, 0x10, 0xda,
		0x3f, 0x38, 0x76, 0x9f, 0xc1, 0x27, 0xcd, 0x77, 0x00, 0x6f, 0x04, 0x6f, 0x04, 0x6f, 0xb4, 0x65,
		0xde, 0xc8, 0xec, 0x69, 0x7a, 0xab, 0xe5, 0xc3, 0x28, 0xae, 0xf5, 0xa2, 0x1e, 0xd9, 0xa7, 0x32,
		0xc3, 0xd8, 0x2e, 0x8c, 0x31, 0xee, 0x8a, 0xf9, 0xcd, 0xc5, 0x22, 0xb8, 0x78, 0x60, 0xd2, 0x8b,
		0xbc, 0xeb, 0x5c, 0x70, 0xe3, 0x0a, 0x29, 0x8c, 0x54, 0x01, 0x23, 0xab, 0x60, 0x24, 0xb0, 0x4e,
		0x5d, 0x6b, 0x9f, 0x68, 0x5f, 0x9a, 0xaf, 0xc5, 0x0f, 0xe5, 0xc1, 0xf1, 0xde, 0x6b, 0x6d, 0x30,
		0xff, 0xe6, 0xdb, 0xb2, 0x8f, 0x15, 0x3f, 0xd4, 0x06, 0xc7, 0x2b, 0xfe, 0xa5, 0x3a, 0x38, 0x5e,
		0xb3, 0x8d, 0xca, 0x60, 0x77, 0xe1, 0xa3, 0xfe, 0xfb, 0xa5, 0x55, 0x5f, 0x28, 0xaf, 0xf8, 0xc2,
		0xe1, 0xaa, 0x2f, 0x1c, 0xae, 0xf8, 0xc2, 0xca, 0x47, 0x2a, 0xad, 0xf8, 0x42, 0x65, 0xf0, 0xb6,
		0xf0, 0xf9, 0xdd, 0xe5, 0x1f, 0xad, 0x0e, 0xf6, 0xde, 0x56, 0xfd, 0x5b, 0x6d, 0xf0, 0x76, 0xbc,
		0x87, 0x1b, 0x5d, 0x16, 0x81, 0x15, 0x66, 0x28, 0xdf, 0x0c, 0x71, 0x53, 0x0c, 0xc4, 0x9d, 0x7c,
		0x8b, 0x3b, 0x5d, 0xdd, 0xfd, 0xc9, 0xa9, 0xed, 0x04, 0xed, 0x43, 0xda, 0x81, 0xb4, 0x03, 0x69,
		0x07, 0xd2, 0x0e, 0xa4, 0x1d, 0x48, 0x3b, 0x90, 0x76, 0x20, 0xed, 0x40, 0xda, 0x81, 0xb4, 0x03,
		0x69, 0x07, 0x9c, 0x1a, 0xd2, 0x0e, 0xa4, 0x1d, 0x48, 0x3b, 0x90, 0x76, 0x20, 0xed, 0xd0, 0x49,
		0x3b, 0xf6, 0x93, 0x70, 0x3a, 0xfa, 0x8b, 0x26, 0xac, 0x56, 0xcf, 0x36, 0x09, 0xaf, 0xbd, 0x9d,
		0x48, 0x11, 0xf3, 0x3d, 0x40, 0xde, 0x81, 0xbc, 0x03, 0x79, 0x67, 0xcb, 0xe4, 0x1d, 0xfa, 0xc3,
		0x90, 0x1c, 0x87, 0x20, 0x27, 0x87, 0x1f, 0xdf, 0x3f, 0xf3, 0x74, 0xb3, 0x78, 0xf0, 0x71, 0x1e,
		0xea, 0x16, 0x8e, 0x52, 0x35, 0x0f, 0x0c, 0xdb, 0xb2, 0x84, 0xe1, 0xbb, 0x2b, 0x2d, 0xf8, 0x88,
		0xbb, 0xf0, 0xce, 0xc1, 0xf8, 0xdb, 0x6e, 0xf8, 0xb7, 0x51, 0xd9, 0xaa, 0xf0, 0xb5, 0x66, 0xb6,
		0x54, 0x38, 0xe1, 0xcd, 0x75, 0xc2, 0x0b, 0x76, 0xc3, 0xef, 0x95, 0x17, 0xbb, 0x84, 0x9b, 0x86,
		0x9b, 0x86, 0x9b, 0x86, 0x9b, 0xce, 0xb9, 0x9b, 0x3e, 0xa0, 0x2b, 0x99, 0x03, 0x6f, 0x99, 0x09,
		0x6f, 0xf9, 0x64, 0x99, 0xf4, 0xfe, 0xd0, 0x6f, 0x14, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x6f, 0xcb,
		0x3c, 0xde, 0x93, 0x65, 0xfa, 0x74, 0x8a, 0xde, 0xe1, 0x51, 0xfa, 0xbb, 0x6f, 0xba, 0xf5, 0x90,
		0x8b, 0x9c, 0x83, 0xaf, 0xa6, 0xc5, 0x57, 0x85, 0xeb, 0x87, 0xde, 0xe9, 0x0b, 0xba, 0x3a, 0xc2,
		0x0b, 0xed, 0x7f, 0x71, 0xf4, 0x80, 0x87, 0x7f, 0x36, 0x1f, 0x4c, 0xcf, 0xa5, 0xaf, 0xb1, 0x36,
		0xb1, 0x3d, 0xf1, 0xa0, 0x7b, 0xe6, 0x93, 0xff, 0x5b, 0xda, 0x7a, 0xc7, 0x15, 0xf4, 0xa5, 0xb7,
		0x18, 0xb6, 0xb0, 0xbe, 0xea, 0xcf, 0x12, 0xa6, 0xb6, 0x5a, 0xab, 0xd5, 0x4a, 0xc5, 0x0a, 0x66,
		0x58, 0x0a, 0x3c, 0xd3, 0xb7, 0x86, 0xcd, 0x21, 0x54, 0xab, 0xda, 0x98, 0x6a, 0x55, 0x14, 0xb7,
		0x05, 0xa4, 0x53, 0x0b, 0x8a, 0xe6, 0x56, 0x00, 0xd2, 0xdb, 0x00, 0xc8, 0x2b, 0x41, 0x95, 0x50,
		0x09, 0x2a, 0x0b, 0x7c, 0x07, 0x95, 0xa0, 0x22, 0xfc, 0x24, 0x54, 0x82, 0x82, 0x50, 0x02, 0xa1,
		0x04, 0x42, 0x49, 0x0e, 0x85, 0x92, 0xec, 0x57, 0x82, 0x42, 0x21, 0x24, 0x80, 0x31, 0xc0, 0x18,
		0x60, 0xbc, 0x05, 0x60, 0x8c, 0xd3, 0x72, 0xe4, 0x8a, 0x1d, 0x4e, 0xcb, 0xbd, 0xdf, 0x01, 0x4e,
		0xcb, 0xcd, 0x0c, 0x37, 0x4e, 0xcb, 0xbd, 0x3f, 0xee, 0x38, 0x2d, 0x07, 0x18, 0x59, 0x80, 0x11,
		0x1c, 0x53, 0xc2, 0x69, 0xb9, 0xac, 0x00, 0x2b, 0xcc, 0x10, 0xa7, 0xe5, 0x98, 0x78, 0x04, 0xdd,
		0x73, 0xa1, 0x0e, 0x10, 0x94, 0x0d, 0x28, 0x1b, 0x50, 0x36, 0xa0, 0x6c, 0x40, 0xd9, 0x80, 0xb2,
		0x01, 0x65, 0x03, 0xca, 0x06, 0x94, 0x0d, 0x28, 0x1b, 0x50, 0x36, 0x40, 0x29, 0xa1, 0x6c, 0x40,
		0xd9, 0x80, 0xb2, 0x01, 0x65, 0x23, 0xd9, 0x8a, 0x41, 0x19, 0x1c, 0xa8, 0x1b, 0x50, 0x37, 0xa0,
		0x6e, 0x70, 0xab, 0x1b, 0x28, 0x83, 0x93, 0xc9, 0x32, 0x38, 0xa8, 0x02, 0x83, 0x2a, 0x30, 0xf0,
		0x52, 0xf0, 0x52, 0xf0, 0x52, 0xa8, 0x02, 0x93, 0x0f, 0x67, 0x81, 0x22, 0x28, 0x00, 0x7c, 0x00,
		0x3e, 0x00, 0x9f, 0x6c, 0xe1, 0xa3, 0x08, 0x0a, 0xd9, 0x83, 0xa2, 0x08, 0xca, 0x5a, 0xb6, 0x87,
		0x22, 0x28, 0xab, 0xa6, 0x16, 0x45, 0x50, 0x64, 0xc2, 0x33, 0x7d, 0x6b, 0x4d, 0xd4, 0x00, 0xd9,
		0x98, 0x1a, 0x20, 0xc3, 0xd2, 0x17, 0x69, 0x95, 0x00, 0xd9, 0x91, 0x38, 0x71, 0x54, 0x13, 0x96,
		0xce, 0x44, 0xa9, 0x89, 0xaa, 0xa5, 0x38, 0x7d, 0xc3, 0xb3, 0x46, 0xc1, 0xd0, 0xc5, 0xf0, 0x09,
		0xce, 0x46, 0xcd, 0xdf, 0xd5, 0x9f, 0x7a, 0x56, 0xf0, 0x7f, 0xe1, 0x3b, 0x3f, 0x82, 0x0e, 0x77,
		0xe4, 0xcc, 0x68, 0xb4, 0x6f, 0x44, 0x9c, 0x7b, 0x9f, 0x00, 0xf8, 0xbf, 0x59, 0x3c, 0x45, 0x65,
		0x7e, 0xea, 0xb9, 0xe9, 0x7a, 0x27, 0x9e, 0x17, 0xaf, 0x9e, 0x85, 0x1f, 0x23, 0xd5, 0x3b, 0xc2,
		0x0f, 0xdc, 0x63, 0x7a, 0x20, 0xdf, 0x15, 0x4f, 0xb5, 0x50, 0xfc, 0x58, 0x2e, 0x57, 0x6b, 0xe5,
		0x72, 0xa1, 0x76, 0x58, 0x2b, 0x1c, 0x55, 0x2a, 0xc5, 0x6a, 0x1c, 0xff, 0xa9, 0x5e, 0x3a, 0x2d,
		0xe1, 0x88, 0xd6, 0x27, 0x7f, 0x50, 0xac, 0x7e, 0xa7, 0x93, 0xa4, 0x89, 0xef, 0xae, 0x70, 0x62,
		0xb9, 0xbe, 0xa8, 0x73, 0x98, 0x70, 0xdd, 0xca, 0x5e, 0xaf, 0x31, 0x56, 0x6a, 0xd4, 0x15, 0x1a,
		0x6d, 0x6d, 0xae, 0xbf, 0xc2, 0xd6, 0xfb, 0xe4, 0x9a, 0xf3, 0x17, 0x77, 0xde, 0xf8, 0xe7, 0x6b,
		0xbd, 0xe1, 0x7b, 0x7f, 0x30, 0x7e, 0xff, 0x89, 0x77, 0x86, 0x49, 0x15, 0xcf, 0x9e, 0xa3, 0x6b,
		0x7d, 0xff, 0xa1, 0xee, 0x3b, 0xeb, 0x11, 0x5f, 0xf5, 0xd7, 0xa3, 0x58, 0x3f, 0xaf, 0x26, 0xc2,
		0x90, 0x8f, 0x89, 0xf2, 0xfe, 0xfe, 0x78, 0x13, 0xca, 0x7b, 0xe9, 0x09, 0xe5, 0xdf, 0xca, 0x9f,
		0xb6, 0xa1, 0x59, 0xa6, 0xe6, 0xbf, 0x72, 0x8f, 0xcf, 0x4b, 0x3f, 0xae, 0xce, 0xfe, 0xbc, 0xb5,
		0x6c, 0x47, 0x79, 0xe7, 0x83, 0x87, 0x3f, 0xbe, 0x7d, 0xf9, 0x33, 0xc2, 0x42, 0x88, 0x2b, 0x00,
		0x4d, 0x0b, 0x3c, 0xc1, 0xd8, 0x44, 0x84, 0x96, 0xa4, 0xf2, 0xcd, 0x8c, 0x3c, 0x43, 0x3b, 0x78,
		0x3b, 0x0c, 0x70, 0xaa, 0x7e, 0x16, 0xae, 0xe1, 0x98, 0xbd, 0x58, 0x58, 0x1a, 0x1a, 0x49, 0xfd,
		0x47, 0xe3, 0x42, 0x31, 0x6c, 0xcb, 0xd3, 0x4d, 0x4b, 0x38, 0x8a, 0xfb, 0x68, 0xf7, 0x3b, 0x2d,
		0xe5, 0x5e, 0x28, 0xa6, 0x65, 0x74, 0xfa, 0x2d, 0xd1, 0x52, 0xda, 0xb6, 0xa3, 0x9c, 0x97, 0x14,
		0xdd, 0x6a, 0x29, 0xe7, 0x87, 0xca, 0xc5, 0x59, 0xd4, 0x44, 0xca, 0x24, 0x7a, 0xe0, 0xb4, 0x49,
		0xb4, 0xa6, 0x7e, 0x6e, 0x0c, 0x54, 0xa6, 0x10, 0xf7, 0x66, 0x2c, 0x24, 0xce, 0xc8, 0xa5, 0x0b,
		0xf5, 0x3b, 0xc9, 0xb8, 0xe0, 0x7b, 0x18, 0x18, 0xd1, 0x45, 0x30, 0xb8, 0x86, 0x35, 0xec, 0x62,
		0x0d, 0xef, 0xfc, 0xfb, 0x59, 0x5a, 0x3d, 0x8a, 0xbf, 0x19, 0x1f, 0xb5, 0xdd, 0xba, 0x7f, 0x77,
		0x50, 0xc2, 0x35, 0xe9, 0x7f, 0xf8, 0x9d, 0xb1, 0x5e, 0xaf, 0x3e, 0xe1, 0xda, 0x5b, 0x11, 0x51,
		0xb6, 0x18, 0xa6, 0xb7, 0x0e, 0x2c, 0xe1, 0xf9, 0x13, 0xb0, 0xce, 0xb8, 0x47, 0x44, 0x81, 0xd8,
		0x6a, 0x7f, 0xec, 0x85, 0x3e, 0xaf, 0xce, 0x8f, 0x7f, 0x1b, 0x73, 0xe4, 0xb0, 0x6e, 0x95, 0x3d,
		0x55, 0x77, 0x7a, 0x5a, 0xcf, 0xb1, 0x9f, 0x5f, 0xd6, 0x1f, 0xc3, 0xf1, 0x4c, 0x4d, 0xbe, 0xba,
		0xe6, 0x50, 0x44, 0x2b, 0x7f, 0x19, 0x79, 0xc7, 0x2b, 0xce, 0x8e, 0x56, 0x82, 0x1d, 0x2b, 0x8a,
		0x80, 0x24, 0xd6, 0x8e, 0x13, 0x6d, 0x48, 0x12, 0x79, 0xc7, 0x88, 0x96, 0x01, 0x44, 0x2d, 0x07,
		0xa9, 0x1a, 0x63, 0xab, 0x88, 0x19, 0x9a, 0x8c, 0xbe, 0x1f, 0x55, 0x24, 0x88, 0x55, 0xb9, 0x35,
		0xf6, 0xa6, 0x6d, 0x92, 0xcd, 0x59, 0x82, 0x4d, 0xd8, 0xa4, 0x9b, 0xad, 0x64, 0x9b, 0xaa, 0x64,
		0x9b, 0xa7, 0x34, 0x9b, 0xa4, 0xbc, 0x42, 0x54, 0xdc, 0xca, 0xa8, 0x01, 0x10, 0xbb, 0xfd, 0x5e,
		0x50, 0x87, 0x3b, 0x89, 0x74, 0x39, 0x83, 0xec, 0xd3, 0x0d, 0xc6, 0x1c, 0xf3, 0xcf, 0xa2, 0xad,
		0xf7, 0x3b, 0x5e, 0xa2, 0x0d, 0x4b, 0x35, 0x10, 0x8f, 0xe2, 0x29, 0x8d, 0x31, 0x8f, 0xaf, 0x24,
		0xcc, 0xdc, 0x48, 0x9c, 0xa9, 0x41, 0x91, 0x99, 0x41, 0x98, 0x89, 0x41, 0x95, 0x79, 0x41, 0x9e,
		0x69, 0x41, 0x9e, 0x59, 0x41, 0x9b, 0x49, 0x21, 0x77, 0xe7, 0x22, 0x71, 0x66, 0x04, 0x61, 0x95,
		0xd3, 0x84, 0x55, 0x4d, 0xe3, 0x0e, 0x41, 0x0c, 0xb5, 0x6c, 0x65, 0x5b, 0x8e, 0x68, 0x0b, 0x47,
		0x0c, 0x33, 0x8e, 0x93, 0x65, 0x5b, 0x10, 0x96, 0x56, 0x6f, 0x39, 0x7a, 0xdb, 0xd3, 0x4c, 0xe1,
		0xb5, 0xb5, 0x7b, 0xe1, 0xba, 0x81, 0x7d, 0x0e, 0x23, 0x70, 0xcd, 0x47, 0x6c, 0xab, 0xa5, 0x15,
		0x0f, 0x6f, 0xad, 0x6f, 0x5f, 0x4e, 0x95, 0x5a, 0xf9, 0xb0, 0x74, 0xac, 0x7c, 0xfa, 0xab, 0xa1,
		0x7c, 0x6d, 0x9c, 0x5f, 0x69, 0x9f, 0x74, 0x57, 0xb4, 0x94, 0xba, 0xf7, 0x28, 0x1c, 0x4b, 0x78,
		0xca, 0x8f, 0xc6, 0x45, 0xc6, 0xcb, 0xb3, 0x4f, 0x86, 0x3f, 0x4f, 0x15, 0xda, 0x29, 0xe7, 0x27,
		0xed, 0x9d, 0xef, 0xd8, 0xdf, 0x6e, 0xe6, 0x72, 0xc3, 0x96, 0xfc, 0x3a, 0x93, 0x18, 0xbb, 0x9c,
		0x31, 0xe2, 0xf4, 0x56, 0xbf, 0xd7, 0x31, 0x0d, 0xdd, 0x13, 0x9a, 0xd9, 0xd3, 0x5a, 0xc2, 0x1b,
		0x1d, 0x1f, 0x31, 0x2d, 0x4f, 0x38, 0x4f, 0x7a, 0x27, 0x79, 0x24, 0xf8, 0x5e, 0x07, 0x88, 0xb0,
		0x10, 0x61, 0x21, 0xc2, 0x8a, 0x68, 0x31, 0x7d, 0xd3, 0xf2, 0x8a, 0x55, 0x82, 0x00, 0xab, 0x9a,
		0xa0, 0x09, 0x9a, 0x5c, 0x52, 0x82, 0xe8, 0x86, 0x32, 0x57, 0x34, 0x4c, 0x20, 0xa4, 0x4a, 0x92,
		0xe7, 0xca, 0x14, 0xa4, 0xcf, 0x0c, 0xa4, 0x38, 0x52, 0x41, 0x99, 0xdb, 0x19, 0x4e, 0x45, 0xb5,
		0x52, 0x39, 0xac, 0x6c, 0xdf, 0x74, 0x20, 0xfc, 0xda, 0xfc, 0xf0, 0x4b, 0x58, 0x89, 0x98, 0x66,
		0xe8, 0x10, 0x46, 0xed, 0x40, 0x66, 0x43, 0x10, 0x88, 0x20, 0x10, 0x32, 0x5b, 0xb6, 0x65, 0xb6,
		0x2d, 0xc7, 0x7c, 0xb3, 0xa7, 0x75, 0xed, 0xd1, 0x4d, 0x70, 0xde, 0xa3, 0x23, 0xdc, 0x47, 0xbb,
		0xd3, 0x4a, 0xee, 0x02, 0x96, 0x37, 0x0b, 0x64, 0x05, 0xb2, 0x02, 0x59, 0x41, 0xaf, 0x41, 0xaf,
		0x41, 0xaf, 0x41, 0xaf, 0x41, 0xaf, 0x73, 0x1c, 0x6a, 0x6d, 0xd1, 0xf9, 0x9f, 0x76, 0xeb, 0xfe,
		0x20, 0x4c, 0x8e, 0x8c, 0x75, 0x85, 0xfa, 0x80, 0x25, 0xb5, 0x3f, 0xde, 0x95, 0xe8, 0x89, 0xae,
		0x40, 0x4f, 0x9c, 0x38, 0x57, 0x42, 0xe2, 0x5c, 0xaa, 0xa1, 0x25, 0x12, 0xe7, 0xa2, 0x58, 0x0e,
		0x12, 0xe7, 0xc0, 0x3b, 0xc1, 0x3b, 0xa1, 0xe8, 0xe5, 0x4b, 0xd1, 0x43, 0xe2, 0x1c, 0x12, 0xe7,
		0x64, 0x41, 0xc5, 0x52, 0xc8, 0x40, 0xe2, 0x5c, 0x7c, 0x6a, 0x89, 0x3c, 0x33, 0x04, 0x24, 0x08,
		0x48, 0x10, 0x90, 0x2c, 0xb1, 0x18, 0x08, 0xe1, 0x33, 0xea, 0x2b, 0x84, 0x70, 0x08, 0xe1, 0x9b,
		0x37, 0x1d, 0x88, 0x56, 0x16, 0xf9, 0x0c, 0xd2, 0xb2, 0x20, 0xe2, 0x20, 0x66, 0x42, 0xcc, 0x94,
		0x4b, 0x11, 0x07, 0x59, 0x4c, 0x00, 0x22, 0x00, 0x11, 0xc8, 0x1b, 0xc8, 0x1b, 0xc8, 0x1b, 0xc8,
		0x1b, 0xc8, 0x5b, 0x9e, 0xc9, 0xdb, 0xd6, 0x26, 0xfd, 0xc4, 0xa8, 0x99, 0xbe, 0xdd, 0x35, 0x78,
		0x67, 0x86, 0x4f, 0x8d, 0x94, 0xd4, 0xf4, 0xbb, 0xca, 0x8b, 0x5f, 0x5a, 0xf7, 0x77, 0x27, 0x4e,
		0xaf, 0x11, 0xb4, 0x4a, 0x55, 0xd3, 0x77, 0x8d, 0xba, 0x84, 0x11, 0xab, 0x94, 0xc5, 0xab, 0x4e,
		0x96, 0xf5, 0x82, 0x7a, 0xeb, 0xd7, 0x71, 0x4c, 0x1a, 0xe4, 0x66, 0xaf, 0xa6, 0xde, 0xda, 0x75,
		0x1e, 0x79, 0x16, 0x75, 0xe4, 0xb2, 0x7a, 0xba, 0xf5, 0x62, 0xe8, 0xae, 0xa7, 0x3d, 0xe8, 0x9e,
		0xf8, 0xa5, 0xbf, 0x68, 0x5d, 0xdd, 0x88, 0x9f, 0x29, 0xb8, 0xac, 0xb1, 0x78, 0x79, 0x83, 0x05,
		0x14, 0xdc, 0x93, 0x4a, 0xea, 0xb6, 0x2a, 0x6f, 0x30, 0x36, 0x59, 0x0b, 0x67, 0xbc, 0xab, 0x1b,
		0x9a, 0xde, 0x6a, 0x39, 0xc2, 0x75, 0xe3, 0xcc, 0xfa, 0x18, 0xbf, 0x3f, 0xc6, 0xf8, 0x6e, 0x43,
		0xf7, 0x3c, 0xe1, 0x58, 0xb1, 0xc9, 0x99, 0x3a, 0x7d, 0x83, 0x7f, 0x69, 0x30, 0x7b, 0xa3, 0x7f,
		0x69, 0xb0, 0xf7, 0x5a, 0x19, 0x44, 0x9f, 0xaf, 0x66, 0x9c, 0x1f, 0x72, 0x79, 0x75, 0xf6, 0x77,
		0xe2, 0x5f, 0xf3, 0xcf, 0xfb, 0x3f, 0xe7, 0x8f, 0x18, 0xbf, 0x27, 0xd3, 0x01, 0x2c, 0x59, 0x5a,
		0x3f, 0x4f, 0xba, 0x79, 0xbb, 0x63, 0xdb, 0x2d, 0xad, 0x6f, 0xfd, 0xb4, 0xec, 0x5f, 0x96, 0xd6,
		0xb7, 0xcc, 0xc0, 0x27, 0xb8, 0xfd, 0xd8, 0xe9, 0xb6, 0x93, 0x52, 0xd6, 0xef, 0xb5, 0x1c, 0x35,
		0x81, 0x38, 0xc1, 0x56, 0x4d, 0x9c, 0x2d, 0x9a, 0x26, 0x9c, 0x21, 0x9c, 0xe1, 0xc6, 0x39, 0xc3,
		0xf8, 0x5b, 0x27, 0x31, 0xb7, 0x4c, 0x80, 0xb7, 0x33, 0x8f, 0x17, 0x04, 0x23, 0x0f, 0xa6, 0xf5,
		0xa0, 0x79, 0x66, 0x37, 0xc1, 0x39, 0x9f, 0xb9, 0x76, 0xb6, 0x03, 0xab, 0xa2, 0x73, 0xd5, 0xed,
		0x81, 0xab, 0xc8, 0x5c, 0x36, 0x2f, 0x88, 0x15, 0x7b, 0x8f, 0x25, 0xc1, 0xde, 0x4a, 0xc2, 0x3d,
		0x95, 0x04, 0x3b, 0x4b, 0x14, 0x7b, 0x28, 0x54, 0x7b, 0x27, 0xe4, 0x22, 0x3d, 0x9d, 0x38, 0x9f,
		0x60, 0x8f, 0x84, 0x64, 0x6f, 0x84, 0x72, 0x4f, 0x24, 0xcb, 0xc3, 0x2c, 0x69, 0x0f, 0x02, 0x14,
		0x2e, 0x61, 0x48, 0xd1, 0x11, 0xba, 0x63, 0x99, 0xd6, 0x43, 0xb2, 0x80, 0x22, 0x6c, 0x05, 0xe1,
		0x04, 0xc2, 0x89, 0x0d, 0x0d, 0x27, 0x40, 0x80, 0xd2, 0x46, 0xab, 0x67, 0xb3, 0xdb, 0xef, 0x6a,
		0xc2, 0xf2, 0x1c, 0x53, 0xb8, 0x49, 0x00, 0x6b, 0xb6, 0x21, 0x60, 0x16, 0x30, 0x0b, 0x14, 0x08,
		0x14, 0x08, 0x14, 0x08, 0x14, 0x08, 0x14, 0x68, 0x03, 0x82, 0x8a, 0x0d, 0x4d, 0xa0, 0x8a, 0x52,
		0x6a, 0x8a, 0x26, 0xcf, 0xa9, 0x53, 0x72, 0xcc, 0xfb, 0xe8, 0x69, 0x4e, 0xc3, 0xaf, 0x31, 0x67,
		0x39, 0x95, 0x90, 0xe5, 0x44, 0x1d, 0x1e, 0xe5, 0x3d, 0xcb, 0xa9, 0xab, 0x1b, 0x9a, 0xd9, 0xd3,
		0xe2, 0xd5, 0x39, 0x99, 0xd1, 0x33, 0xc2, 0x56, 0xb6, 0xe3, 0x22, 0x51, 0x70, 0x83, 0xdc, 0x71,
		0x83, 0xd8, 0x55, 0xd1, 0xe2, 0xd2, 0xe7, 0x05, 0xbb, 0x89, 0x47, 0x9f, 0x13, 0x2e, 0x95, 0xc4,
		0x4b, 0x86, 0x62, 0xe9, 0xd0, 0x2e, 0x21, 0xaa, 0xa5, 0x44, 0xbe, 0xa4, 0xc8, 0x97, 0x16, 0xf9,
		0x12, 0x4b, 0x18, 0x6a, 0xc7, 0x3d, 0xfa, 0x1d, 0x73, 0xe9, 0xcd, 0x2c, 0xc1, 0x97, 0xe4, 0xf3,
		0x3c, 0xbd, 0x10, 0x5f, 0x92, 0xce, 0x71, 0xb2, 0xe5, 0x48, 0xb6, 0x2c, 0x29, 0x97, 0x27, 0xcf,
		0x32, 0xa5, 0x5e, 0xae, 0x6c, 0xcb, 0x96, 0x6d, 0xf9, 0xb2, 0x2d, 0xe3, 0x64, 0xcb, 0x99, 0x40,
		0xde, 0x20, 0x59, 0xde, 0x61, 0x43, 0x8f, 0xb6, 0xeb, 0x69, 0x66, 0x8f, 0xce, 0x42, 0xc6, 0x76,
		0x3c, 0x6e, 0x98, 0x68, 0x1a, 0x93, 0x9d, 0xc4, 0x66, 0x83, 0x00, 0x0e, 0x28, 0xe0, 0x85, 0x04,
		0x2e, 0x68, 0x60, 0x87, 0x08, 0x76, 0xa8, 0x60, 0x87, 0x0c, 0x1a, 0xe8, 0x20, 0x82, 0x90, 0xf0,
		0xd7, 0x26, 0x3e, 0x2f, 0xbe, 0x5a, 0x62, 0x11, 0x7a, 0xdb, 0x11, 0x6d, 0x4a, 0xa3, 0x1d, 0x47,
		0x00, 0x35, 0xc2, 0x36, 0x1b, 0x23, 0xf9, 0x6b, 0x7f, 0x7f, 0x78, 0x66, 0xf2, 0x60, 0x0c, 0x5d,
		0x3b, 0xd9, 0x98, 0x6c, 0x8a, 0x13, 0xd3, 0xd3, 0xa7, 0x44, 0xc8, 0xa1, 0x3e, 0xd9, 0x11, 0x14,
		0xc0, 0x3d, 0xe0, 0x1e, 0x70, 0x0f, 0xb8, 0x4f, 0x0d, 0xee, 0xa7, 0xe1, 0x6b, 0x83, 0x20, 0xbf,
		0xe7, 0xd8, 0xad, 0xbe, 0x21, 0x1c, 0x06, 0xc0, 0x9f, 0x34, 0x4d, 0x0b, 0xf7, 0x45, 0xc0, 0x3d,
		0xe0, 0x1e, 0x70, 0x4f, 0x09, 0xf7, 0x54, 0x42, 0xc1, 0x02, 0xac, 0xd0, 0x9b, 0xd6, 0x3c, 0xba,
		0x50, 0x5b, 0x16, 0x2d, 0xc8, 0xb0, 0x81, 0x0d, 0x27, 0xe8, 0xc8, 0x01, 0x1f, 0x6e, 0x10, 0x92,
		0x06, 0x46, 0xd2, 0x40, 0x49, 0x1a, 0x38, 0xd1, 0x82, 0x14, 0x31, 0x58, 0xb1, 0x81, 0x16, 0x3f,
		0x78, 0xc9, 0x02, 0x31, 0x26, 0x82, 0x2c, 0x0d, 0xd4, 0x64, 0x80, 0x9b, 0x5c, 0x90, 0x93, 0x05,
		0x76, 0xd2, 0x41, 0x4f, 0x3a, 0xf8, 0x49, 0x07, 0x41, 0x1e, 0x30, 0x64, 0x02, 0x45, 0x3e, 0x02,
		0x2f, 0x91, 0xd0, 0xcb, 0x20, 0xf8, 0xef, 0x13, 0xfe, 0x10, 0x9b, 0x77, 0xf2, 0x61, 0x4d, 0x0c,
		0x96, 0x14, 0xf3, 0x22, 0xce, 0xc8, 0x26, 0x14, 0xe7, 0xc2, 0xce, 0x94, 0x03, 0xfa, 0x45, 0x1f,
		0x58, 0x82, 0x0f, 0x84, 0x0f, 0x84, 0x0f, 0xcc, 0x90, 0x0f, 0xe4, 0x22, 0x08, 0x61, 0x07, 0xc2,
		0x35, 0xf9, 0xad, 0x38, 0xcc, 0x8d, 0x72, 0x4d, 0x6e, 0xfb, 0xe5, 0xa5, 0x0b, 0xd2, 0x68, 0x83,
		0x4c, 0xe8, 0x4c, 0x07, 0x42, 0x65, 0x43, 0x69, 0x6a, 0x90, 0x9a, 0x1a, 0xb4, 0xa6, 0x06, 0xb1,
		0xbc, 0x50, 0xcb, 0x0c, 0xb9, 0xf2, 0xe8, 0x47, 0x0a, 0xf0, 0xa8, 0x24, 0xac, 0x84, 0x19, 0xb9,
		0xaf, 0x73, 0x61, 0x3d, 0x04, 0xa4, 0xe4, 0x46, 0x8a, 0xa9, 0xcb, 0x81, 0x10, 0x85, 0xfa, 0x96,
		0x84, 0xb5, 0x3b, 0x1d, 0x9f, 0xd5, 0x2c, 0x15, 0x3e, 0xc8, 0xed, 0x98, 0xab, 0xce, 0xff, 0xfa,
		0x6b, 0x84, 0xfa, 0x3e, 0x80, 0x8c, 0xc0, 0xcc, 0xac, 0x4d, 0xe9, 0xcf, 0xb0, 0xa9, 0x6d, 0xb0,
		0xa9, 0x9d, 0xcd, 0xe8, 0xa5, 0x29, 0xc1, 0x83, 0x24, 0xad, 0x56, 0x1c, 0xb9, 0xc3, 0xa9, 0x62,
		0xc6, 0xff, 0x52, 0x37, 0x63, 0x08, 0x29, 0xaa, 0x3e, 0x47, 0xee, 0x75, 0xba, 0x4a, 0xf4, 0xbf,
		0xfe, 0x90, 0x30, 0x92, 0x3b, 0xf9, 0x5c, 0x4c, 0x8c, 0x0e, 0x46, 0x0d, 0x2f, 0x88, 0xe3, 0x55,
		0x41, 0x17, 0x22, 0xd9, 0xb9, 0x7e, 0xc1, 0xf9, 0xc1, 0xf9, 0xc1, 0xf9, 0xc1, 0xf9, 0xc1, 0xf9,
		0x17, 0x39, 0xbf, 0xd5, 0xef, 0x0a, 0x67, 0x58, 0xd1, 0x44, 0x22, 0xf7, 0x2f, 0x4b, 0xe8, 0xab,
		0x6e, 0xf5, 0xbb, 0xf2, 0x96, 0xf8, 0xb5, 0x7d, 0xe5, 0x39, 0x71, 0x4a, 0x67, 0x26, 0xea, 0xb5,
		0xe0, 0xcf, 0xe1, 0x97, 0x6f, 0x97, 0xff, 0xb7, 0x7e, 0xa1, 0x4a, 0x24, 0x8a, 0x45, 0xbf, 0xdb,
		0xcf, 0xdf, 0x1b, 0xe7, 0x67, 0xa7, 0x27, 0xd7, 0x75, 0x75, 0x67, 0x83, 0x88, 0xb0, 0x7a, 0x6d,
		0x9f, 0x05, 0xb0, 0x25, 0x71, 0x16, 0x27, 0x23, 0xc9, 0xb6, 0xc9, 0xba, 0x9c, 0x01, 0x0f, 0x0d,
		0xe7, 0x58, 0x29, 0x6c, 0x08, 0x21, 0xcc, 0x37, 0xfa, 0x8b, 0x67, 0xcf, 0xd1, 0xb5, 0xbe, 0xe5,
		0x7a, 0x89, 0xee, 0xb4, 0x8f, 0xd4, 0xa7, 0x23, 0xda, 0xc2, 0x11, 0x96, 0x21, 0x36, 0x51, 0x23,
		0x1d, 0x3b, 0xb9, 0x96, 0xa3, 0xb7, 0x3d, 0xcd, 0x14, 0x5e, 0x5b, 0xbb, 0x17, 0xae, 0x1b, 0xdc,
		0xc9, 0xa1, 0x99, 0xce, 0xbd, 0x26, 0x9e, 0x3d, 0x61, 0xb5, 0x44, 0x6b, 0x72, 0x93, 0x75, 0xa1,
		0x22, 0x13, 0x47, 0x25, 0xc7, 0xa1, 0xcb, 0xe2, 0xd1, 0x89, 0x01, 0x48, 0x56, 0xbf, 0xd2, 0x0a,
		0x4d, 0x97, 0x86, 0xa8, 0xd1, 0x2c, 0x04, 0x42, 0x1d, 0xb4, 0x91, 0xc4, 0xe6, 0x67, 0x89, 0x67,
		0x4f, 0x7b, 0xb4, 0x7b, 0xf2, 0x54, 0x91, 0xb0, 0x47, 0xe8, 0x21, 0xd0, 0x43, 0xa0, 0x87, 0x40,
		0x0f, 0x81, 0x1e, 0xb2, 0xb0, 0xee, 0xf8, 0x53, 0xb1, 0x17, 0xb4, 0x90, 0x9a, 0x9c, 0x5d, 0xac,
		0x71, 0x6a, 0xf6, 0xdc, 0xff, 0xc6, 0x4e, 0xc1, 0x0d, 0xff, 0x76, 0x60, 0x5a, 0x2d, 0xf1, 0xac,
		0x82, 0x4a, 0x45, 0xec, 0xd3, 0xf5, 0x74, 0xaf, 0xef, 0x6e, 0x34, 0x8f, 0x12, 0x3d, 0x47, 0x18,
		0xba, 0x27, 0x5a, 0x5b, 0x46, 0x92, 0x46, 0x53, 0xbb, 0xd5, 0x0c, 0x69, 0x32, 0xf7, 0xa0, 0x3f,
		0xa0, 0x3f, 0x64, 0xf4, 0x47, 0x7b, 0x70, 0xec, 0x7e, 0x0a, 0x24, 0x68, 0xd4, 0x2f, 0xa8, 0x10,
		0xa8, 0x10, 0xa8, 0x10, 0xa8, 0x10, 0xa8, 0x10, 0xa8, 0xd0, 0xac, 0x6b, 0x70, 0xe7, 0x5e, 0x1f,
		0x98, 0xad, 0x7c, 0x73, 0xa2, 0x73, 0xd3, 0xf5, 0x4e, 0x3c, 0xcf, 0x91, 0x63, 0x45, 0x5f, 0x4d,
		0xab, 0xde, 0x11, 0xfe, 0x3a, 0x97, 0x94, 0x5a, 0xab, 0x7e, 0xd5, 0x9f, 0xa7, 0x7a, 0x2c, 0x7e,
		0x2c, 0x97, 0xab, 0xb5, 0x72, 0xb9, 0x50, 0x3b, 0xac, 0x15, 0x8e, 0x2a, 0x95, 0x62, 0xb5, 0x58,
		0x91, 0xf0, 0x10, 0x97, 0x4e, 0x4b, 0x38, 0xa2, 0xf5, 0xe9, 0x45, 0x3d, 0x56, 0xac, 0x7e, 0xa7,
		0x23, 0xb3, 0xcb, 0xef, 0x6e, 0x50, 0x70, 0x83, 0x3f, 0x97, 0x38, 0x9f, 0x11, 0x27, 0x7b, 0x4d,
		0x92, 0x05, 0x04, 0x65, 0xae, 0x4d, 0x82, 0x28, 0x13, 0x51, 0x26, 0xa2, 0x4c, 0x44, 0x99, 0xb9,
		0x8e, 0x32, 0x91, 0x80, 0x48, 0x35, 0x75, 0xe9, 0x25, 0x20, 0x9e, 0x5f, 0x9e, 0x9e, 0x9c, 0x4b,
		0xcf, 0x3f, 0xbc, 0xba, 0x3e, 0xb9, 0x3e, 0x3b, 0x95, 0xd9, 0x6d, 0xc9, 0xef, 0xf6, 0xd3, 0x5f,
		0x0d, 0x24, 0x3c, 0x26, 0xec, 0xd2, 0x1f, 0x43, 0xb6, 0x72, 0x2f, 0xcb, 0xc9, 0x4f, 0x60, 0xa2,
		0x52, 0xcf, 0xf8, 0x8d, 0x0d, 0xf4, 0x58, 0x29, 0x22, 0xbd, 0x72, 0x63, 0x59, 0x85, 0x2b, 0xfe,
		0x57, 0xb3, 0xfa, 0xdd, 0x7b, 0x99, 0xbc, 0x62, 0xaa, 0x4f, 0x30, 0x0b, 0x30, 0x0b, 0x30, 0x0b,
		0x30, 0x0b, 0x30, 0x8b, 0x85, 0x75, 0xd7, 0x37, 0x2d, 0xef, 0xb0, 0x24, 0x91, 0x54, 0xc8, 0x50,
		0xaf, 0x93, 0x5d, 0xa7, 0x1f, 0xf5, 0xbf, 0x6d, 0xa9, 0x67, 0x82, 0xd2, 0x13, 0xb2, 0x7a, 0xde,
		0x9a, 0x72, 0x26, 0xe5, 0xd2, 0x51, 0xf9, 0xa8, 0x5a, 0x2b, 0x1d, 0x55, 0x60, 0x5b, 0xb2, 0x6c,
		0x0b, 0xe9, 0x42, 0x19, 0x70, 0xf4, 0x38, 0xc5, 0xc6, 0x14, 0xcf, 0x7c, 0xfb, 0x72, 0x5a, 0x2b,
		0x1f, 0x96, 0x8e, 0x95, 0x4f, 0x7f, 0x35, 0x94, 0xaf, 0x8d, 0xf3, 0x2b, 0xed, 0x93, 0xee, 0x8a,
		0x96, 0x52, 0xf7, 0x1e, 0x85, 0x63, 0x09, 0x4f, 0xf9, 0xd1, 0xb8, 0xc0, 0xe1, 0x35, 0x65, 0xa3,
		0xc9, 0xc7, 0x52, 0x12, 0xb2, 0x96, 0x61, 0x00, 0x85, 0xb3, 0x85, 0xc2, 0xf9, 0x14, 0xbb, 0x3c,
		0xd3, 0xf8, 0xf9, 0x22, 0x51, 0xe8, 0x1a, 0xf6, 0x07, 0x91, 0x2b, 0x52, 0x47, 0x10, 0xb9, 0x18,
		0x5d, 0x0e, 0x44, 0xae, 0x1c, 0xe3, 0xfa, 0xe6, 0x89, 0x5c, 0xf7, 0xb6, 0xdd, 0x11, 0xba, 0xd4,
		0xad, 0xf3, 0x22, 0xe8, 0x09, 0xe8, 0x09, 0xe8, 0x09, 0xe8, 0x09, 0xe8, 0x09, 0xe8, 0x49, 0x46,
		0x5a, 0xe6, 0xba, 0xff, 0xe4, 0xc4, 0xb2, 0x6c, 0x6f, 0x98, 0x9c, 0xc6, 0x7a, 0x0d, 0x8a, 0x6b,
		0x3c, 0x8a, 0xae, 0xde, 0x1b, 0x1d, 0x4d, 0x38, 0xb0, 0x7b, 0xc2, 0x32, 0x02, 0xba, 0xe0, 0x47,
		0x5e, 0xbf, 0x6c, 0xe7, 0xa7, 0xe6, 0x87, 0x5f, 0xba, 0x65, 0x88, 0x83, 0xf9, 0x37, 0xdc, 0x85,
		0x77, 0x0e, 0xda, 0xad, 0xfb, 0x83, 0x4e, 0xc9, 0x31, 0xef, 0x83, 0x2b, 0xb7, 0xcd, 0x9e, 0x16,
		0xf8, 0xba, 0x03, 0x61, 0x79, 0x8e, 0x29, 0xdc, 0xe0, 0xcf, 0x97, 0xf0, 0x72, 0x2e, 0x37, 0xfc,
		0xdb, 0xf0, 0xd6, 0xae, 0xdc, 0x5c, 0xd6, 0x95, 0xe9, 0x9b, 0x35, 0xff, 0x47, 0xbc, 0x70, 0x5e,
		0xb1, 0xcb, 0x7a, 0x96, 0x83, 0xff, 0xec, 0x46, 0x2a, 0x67, 0x35, 0x24, 0x9c, 0xcd, 0x90, 0x70,
		0x16, 0x83, 0xda, 0x50, 0x99, 0x11, 0x2e, 0x1b, 0xc8, 0xa6, 0xb2, 0x5c, 0xec, 0xe7, 0xf4, 0x0d,
		0xcf, 0x1a, 0x45, 0xbf, 0x17, 0xc3, 0x27, 0x3d, 0x1b, 0x3d, 0xe8, 0xdd, 0x97, 0xd6, 0xfd, 0xdd,
		0x79, 0xe9, 0x9b, 0x79, 0x7f, 0xf7, 0x55, 0x37, 0xce, 0x7a, 0xd7, 0xfe, 0x63, 0xde, 0xd5, 0xfd,
		0xc7, 0xbb, 0x6b, 0xb0, 0xdc, 0x8a, 0x38, 0xd8, 0xd0, 0x7b, 0xd5, 0x99, 0xec, 0x33, 0x55, 0xbb,
		0xa4, 0x99, 0xf9, 0xe4, 0xf3, 0x44, 0x30, 0x47, 0xc4, 0xf7, 0x5b, 0xb2, 0xdc, 0x67, 0x49, 0x7c,
		0x7f, 0x25, 0xf9, 0x7d, 0x95, 0x1c, 0x82, 0x2d, 0xaf, 0x30, 0xcb, 0x45, 0xae, 0xd9, 0x85, 0x56,
		0x76, 0x66, 0xcc, 0x2e, 0x9c, 0x66, 0x0b, 0x9d, 0xa9, 0xef, 0x87, 0x54, 0xc5, 0x13, 0xfd, 0x7d,
		0x90, 0x93, 0xb3, 0x46, 0x4f, 0xd4, 0x17, 0x9c, 0x31, 0xed, 0x1d, 0xb1, 0xed, 0x15, 0x71, 0xee,
		0x0d, 0xc9, 0xd9, 0x0b, 0xe2, 0xd6, 0xf5, 0xa4, 0xed, 0xf5, 0x48, 0x13, 0xe9, 0xa4, 0xed, 0xe5,
		0x64, 0x9b, 0x91, 0xb3, 0xed, 0xcd, 0x4c, 0xc3, 0x8b, 0x66, 0x72, 0x94, 0x46, 0x63, 0x4c, 0x30,
		0x66, 0x4e, 0x28, 0x66, 0x94, 0xcc, 0x64, 0x24, 0x0c, 0x87, 0xd9, 0x9c, 0xcc, 0x55, 0xf9, 0xa5,
		0x27, 0x6d, 0xca, 0x4b, 0xd2, 0xe4, 0x4c, 0x47, 0x91, 0x91, 0xe0, 0x3b, 0x31, 0x81, 0x6a, 0xad,
		0x56, 0x2b, 0x71, 0x17, 0x11, 0xd9, 0x64, 0x4b, 0xc8, 0x89, 0xb0, 0xdc, 0xcc, 0xaa, 0x2e, 0x43,
		0xc8, 0xdf, 0x1e, 0x6d, 0xd7, 0xd3, 0xcc, 0x1e, 0x5f, 0xa8, 0x3d, 0xee, 0x00, 0xe1, 0x36, 0xc2,
		0x6d, 0x84, 0xdb, 0x08, 0xb7, 0x19, 0xec, 0xde, 0xec, 0x69, 0x7a, 0xab, 0xe5, 0x08, 0xd7, 0x65,
		0x0c, 0xb9, 0x8b, 0x47, 0x0c, 0x6d, 0x8f, 0xc6, 0x26, 0x77, 0x21, 0xf7, 0x64, 0xe4, 0x9f, 0xca,
		0x8c, 0x63, 0xbf, 0x30, 0x07, 0x8c, 0x37, 0xc5, 0x4b, 0xbb, 0xdf, 0x57, 0xdd, 0xbd, 0x29, 0x68,
		0x47, 0xcd, 0xb7, 0x9b, 0xa2, 0x76, 0xd4, 0x1c, 0xfe, 0xb5, 0x18, 0xfc, 0xf1, 0x5a, 0x1a, 0xbc,
		0x95, 0x6e, 0x0a, 0x5a, 0x79, 0xf4, 0x6e, 0xa9, 0x72, 0x53, 0xd0, 0x2a, 0xcd, 0xbd, 0xdd, 0xdb,
		0xdb, 0xfd, 0xa8, 0xdf, 0xd9, 0x7b, 0x3d, 0x1c, 0xf0, 0xa5, 0xd2, 0x34, 0x39, 0xa7, 0x41, 0xe6,
		0x1d, 0xc1, 0xea, 0x3f, 0xbb, 0xb2, 0x66, 0x63, 0x8f, 0xf1, 0xe6, 0xe1, 0x66, 0x9e, 0x52, 0x69,
		0xe4, 0xc0, 0x52, 0x15, 0xb0, 0x14, 0x15, 0x96, 0x76, 0xa7, 0xee, 0xc9, 0x7e, 0x2d, 0x7e, 0x28,
		0x0f, 0x8e, 0xf7, 0x5e, 0x6b, 0x83, 0xf9, 0x37, 0xdf, 0x96, 0x7d, 0xac, 0xf8, 0xa1, 0x36, 0x38,
		0x5e, 0xf1, 0x2f, 0xd5, 0xc1, 0xf1, 0x9a, 0x6d, 0x54, 0x06, 0xbb, 0x0b, 0x1f, 0xf5, 0xdf, 0x2f,
		0xad, 0xfa, 0x42, 0x79, 0xc5, 0x17, 0x0e, 0x57, 0x7d, 0xe1, 0x70, 0xc5, 0x17, 0x56, 0x3e, 0x52,
		0x69, 0xc5, 0x17, 0x2a, 0x83, 0xb7, 0x85, 0xcf, 0xef, 0x2e, 0xff, 0x68, 0x75, 0xb0, 0xf7, 0xb6,
		0xea, 0xdf, 0x6a, 0x83, 0xb7, 0xe3, 0xbd, 0x3d, 0x00, 0xf5, 0xda, 0x40, 0x0d, 0xf3, 0x94, 0x6f,
		0x9e, 0xf9, 0x73, 0x5c, 0x59, 0x57, 0x82, 0x88, 0x19, 0x96, 0x84, 0x93, 0x0c, 0x12, 0x4e, 0x2e,
		0x48, 0x88, 0x0b, 0x52, 0x3e, 0x99, 0x20, 0xeb, 0x24, 0x42, 0x1a, 0x27, 0x0f, 0xa4, 0x9f, 0x34,
		0xc8, 0xd0, 0xc9, 0x02, 0xe8, 0xd9, 0x99, 0xc1, 0x43, 0xb5, 0x53, 0xd2, 0x9e, 0x2c, 0xc6, 0xcc,
		0x91, 0x51, 0xfb, 0x50, 0xb3, 0xa1, 0x66, 0xaf, 0x0b, 0xc1, 0x50, 0xb3, 0x53, 0xc4, 0x3d, 0x24,
		0x8f, 0x2c, 0xa0, 0x0c, 0x92, 0x47, 0xa6, 0x1e, 0x1c, 0xc9, 0x23, 0x89, 0x6c, 0x16, 0xc9, 0x23,
		0x51, 0x4d, 0x00, 0xc9, 0x23, 0x08, 0xb6, 0x37, 0x26, 0xd8, 0x3e, 0x64, 0x0e, 0xb6, 0x0f, 0x11,
		0x6c, 0x23, 0xd8, 0x46, 0xb0, 0x8d, 0x60, 0x1b, 0xc1, 0x36, 0x82, 0x6d, 0x04, 0xdb, 0x08, 0xb6,
		0x11, 0x6c, 0x23, 0xd8, 0xde, 0xd2, 0x60, 0xbb, 0xab, 0x1b, 0x61, 0x4e, 0x0b, 0x5b, 0xc4, 0x3d,
		0xdd, 0x09, 0xc2, 0x6e, 0x84, 0xdd, 0x08, 0xbb, 0x11, 0x76, 0xe7, 0x0a, 0x66, 0x14, 0xe6, 0xbc,
		0x3c, 0xf6, 0x7c, 0x3c, 0x75, 0x3a, 0x11, 0x67, 0x3e, 0xbf, 0xa7, 0x34, 0xd8, 0x7b, 0xad, 0x30,
		0x24, 0xf6, 0x36, 0x39, 0x06, 0x4a, 0x46, 0x7e, 0x98, 0xfa, 0xcf, 0xfb, 0xc3, 0xc5, 0x90, 0xbf,
		0xb4, 0x0d, 0xf1, 0xc6, 0x53, 0x47, 0xb7, 0xf8, 0x02, 0x8d, 0xa0, 0x75, 0x44, 0x18, 0x88, 0x30,
		0x10, 0x61, 0x20, 0xc2, 0x60, 0xb0, 0xfb, 0x8e, 0xd0, 0xdb, 0x8e, 0x68, 0x73, 0x46, 0x17, 0x35,
		0x9e, 0xe8, 0x22, 0x28, 0x43, 0xb6, 0xbf, 0x7f, 0xb0, 0xf8, 0x3f, 0x1f, 0x33, 0xdd, 0xe0, 0xff,
		0x0f, 0x86, 0x15, 0xca, 0x82, 0xbf, 0x6b, 0x66, 0x0b, 0x05, 0xe4, 0xd6, 0x5a, 0x7a, 0x9b, 0x53,
		0x40, 0x8e, 0xb0, 0x3e, 0x2b, 0x41, 0xf1, 0xb8, 0x9d, 0x14, 0x67, 0x77, 0x5c, 0x5f, 0x75, 0x8a,
		0x51, 0x28, 0x34, 0x47, 0xce, 0x69, 0x4b, 0xab, 0xd2, 0x97, 0x52, 0x95, 0x52, 0x3a, 0x95, 0xa1,
		0x54, 0x2a, 0x43, 0x69, 0xd4, 0xa4, 0x36, 0x44, 0x8c, 0x0c, 0x29, 0x20, 0x82, 0x4a, 0x52, 0xc0,
		0x31, 0x5e, 0x1d, 0xd3, 0x64, 0x38, 0x14, 0x1f, 0x3d, 0xe2, 0x7d, 0x33, 0xa6, 0xad, 0x50, 0xd9,
		0x88, 0x54, 0xdb, 0x88, 0x37, 0x33, 0xd1, 0xc7, 0x35, 0xc6, 0x98, 0xaa, 0x96, 0x78, 0xf6, 0xb4,
		0x47, 0xbb, 0xa7, 0x3d, 0x38, 0x76, 0xbf, 0x17, 0x5f, 0xd2, 0x0e, 0x23, 0xbe, 0xf9, 0x06, 0x63,
		0xce, 0x73, 0xb2, 0x12, 0xa1, 0x89, 0xc9, 0x22, 0x05, 0x29, 0xa4, 0x25, 0x7f, 0x54, 0x24, 0x8f,
		0x9c, 0xcc, 0x91, 0x93, 0x36, 0x72, 0x72, 0x26, 0x17, 0xa1, 0x92, 0x96, 0xe0, 0x9c, 0x5b, 0x41,
		0xc9, 0x27, 0x7c, 0xf9, 0xca, 0x4c, 0x3a, 0xeb, 0x34, 0x35, 0x7c, 0xc9, 0x54, 0x1d, 0x4a, 0x15,
		0x87, 0x47, 0xb5, 0xa1, 0x56, 0x69, 0xd8, 0x54, 0x19, 0x36, 0x15, 0x86, 0x4d, 0x75, 0x49, 0x97,
		0xfa, 0x50, 0xd5, 0xdc, 0x55, 0xcd, 0x16, 0x7d, 0xdd, 0x6e, 0xb2, 0xac, 0x2a, 0x62, 0x59, 0x97,
		0x5c, 0xce, 0x45, 0xd1, 0x6e, 0x69, 0x72, 0x2d, 0x8a, 0x76, 0xd3, 0x2a, 0x62, 0xe4, 0x32, 0x2c,
		0xa3, 0xfc, 0xca, 0x21, 0xbb, 0x4e, 0xcb, 0xad, 0x81, 0xa4, 0x76, 0x40, 0xa5, 0xa5, 0x66, 0xe3,
		0x4a, 0x86, 0x71, 0xe0, 0xe5, 0xd2, 0xc3, 0xfb, 0xa4, 0xe9, 0x8c, 0x5f, 0xcd, 0x00, 0x94, 0x07,
		0xca, 0x6f, 0x37, 0xca, 0x93, 0x5f, 0xcd, 0x30, 0x5e, 0xfb, 0x7c, 0xd9, 0x01, 0x61, 0x0f, 0x3c,
		0x19, 0x02, 0x45, 0x64, 0x08, 0x20, 0x43, 0x20, 0x63, 0xa0, 0x24, 0x0d, 0x9c, 0x68, 0x41, 0x8a,
		0x18, 0xac, 0xd8, 0x40, 0x6b, 0xc2, 0x75, 0xad, 0x96, 0xe0, 0x3b, 0x82, 0x30, 0xa1, 0xbf, 0x41,
		0x37, 0x4c, 0x26, 0xc2, 0x93, 0xe8, 0xc4, 0x0e, 0x67, 0x32, 0x60, 0x4d, 0x2e, 0xbc, 0xc9, 0x82,
		0x39, 0xe9, 0x70, 0x27, 0x1d, 0xf6, 0xa4, 0xc3, 0x1f, 0x0f, 0x0c, 0x32, 0xc1, 0x21, 0x1f, 0x63,
		0x97, 0xc8, 0xe0, 0x65, 0x30, 0xfa, 0x35, 0x18, 0x7e, 0x00, 0xcc, 0x79, 0xb9, 0xda, 0x98, 0xe5,
		0xba, 0x52, 0xca, 0x7b, 0x1a, 0x57, 0xda, 0x0f, 0xe5, 0xbd, 0x8d, 0x92, 0xe2, 0xf8, 0x45, 0x07,
		0x58, 0x82, 0x03, 0x84, 0x03, 0x84, 0x03, 0xcc, 0x90, 0x03, 0xe4, 0xe2, 0x05, 0x92, 0xf8, 0x81,
		0x54, 0x9e, 0x20, 0x89, 0x2f, 0x48, 0xe3, 0x0d, 0x32, 0xe1, 0x33, 0x1d, 0x18, 0x95, 0x0d, 0xa7,
		0xa9, 0xc1, 0x6a, 0x6a, 0xf0, 0x9a, 0x1a, 0xcc, 0xf2, 0xc2, 0x2d, 0x33, 0xec, 0xca, 0xe3, 0x1f,
		0x29, 0xf0, 0x10, 0x99, 0x7c, 0x64, 0x19, 0x2f, 0x99, 0xfb, 0x5f, 0xb8, 0xb3, 0x16, 0xfe, 0x8d,
		0x93, 0xb3, 0xf0, 0x9b, 0x65, 0xbe, 0xe2, 0x0b, 0xa6, 0x43, 0x22, 0x8b, 0x2c, 0x4c, 0x46, 0x1a,
		0xf0, 0x5c, 0x4a, 0xec, 0xdc, 0xeb, 0x65, 0x96, 0x46, 0x78, 0xb0, 0x44, 0x02, 0x3b, 0xce, 0xb4,
		0x82, 0x3d, 0x3a, 0x98, 0xc2, 0x11, 0xe0, 0xd1, 0x1e, 0x4d, 0x59, 0x68, 0x9d, 0xfc, 0xa8, 0xca,
		0x62, 0x0f, 0x12, 0x8e, 0xae, 0x2c, 0x74, 0x4a, 0x7f, 0x94, 0x65, 0x75, 0x17, 0x64, 0x47, 0x5b,
		0xb8, 0xad, 0x94, 0x19, 0xef, 0x32, 0x8a, 0x73, 0x2a, 0x8b, 0xae, 0x16, 0xf9, 0xf8, 0xcc, 0x85,
		0x78, 0xf6, 0xfe, 0x8f, 0xdd, 0xfb, 0xcb, 0x7f, 0xca, 0xf1, 0x0b, 0x9c, 0xe5, 0x4c, 0xd1, 0x6c,
		0xb3, 0x65, 0xae, 0x9b, 0x94, 0x8a, 0x46, 0xab, 0x3a, 0xb3, 0xa8, 0xcc, 0x6c, 0x29, 0x68, 0x25,
		0xa4, 0xa0, 0x21, 0x05, 0x4d, 0xb2, 0xfc, 0xb0, 0xe1, 0x29, 0x68, 0xc2, 0x65, 0x2c, 0x3b, 0xed,
		0x37, 0x8e, 0xd2, 0x34, 0x48, 0x3c, 0xcb, 0x84, 0x62, 0x8a, 0xc4, 0x33, 0xb9, 0x84, 0x48, 0x42,
		0xcd, 0x69, 0x72, 0x78, 0x51, 0xb8, 0x8b, 0xde, 0x9d, 0x0b, 0xeb, 0x21, 0x08, 0x89, 0x51, 0x72,
		0x7a, 0x59, 0x27, 0xe3, 0x7a, 0xc3, 0xa5, 0x02, 0x2a, 0x0d, 0x67, 0x63, 0x19, 0xcf, 0xab, 0x4d,
		0xb0, 0x81, 0x3c, 0xd8, 0x40, 0x5e, 0xaa, 0x4d, 0xe7, 0xbc, 0xac, 0xe8, 0xbf, 0x50, 0x40, 0x74,
		0xd2, 0xcb, 0x74, 0x01, 0xd1, 0x7f, 0x65, 0xbf, 0x54, 0x28, 0xae, 0x0e, 0x96, 0x1b, 0x3f, 0xe0,
		0xea, 0x60, 0x5c, 0x1d, 0x8c, 0xab, 0x83, 0xb7, 0xa2, 0xe0, 0x31, 0x61, 0x15, 0x8c, 0x05, 0xf8,
		0x20, 0xbf, 0x63, 0x08, 0x8a, 0x12, 0x14, 0x25, 0x28, 0x4a, 0x50, 0x94, 0x02, 0xbb, 0xef, 0x9b,
		0x96, 0x57, 0x2d, 0x33, 0x8a, 0x4a, 0x1f, 0x71, 0x8b, 0x59, 0x4a, 0x92, 0x12, 0xd4, 0x84, 0xad,
		0x57, 0x94, 0xe4, 0xa4, 0x47, 0x41, 0x63, 0x42, 0xc0, 0x2d, 0x39, 0xe0, 0xf6, 0x38, 0x1c, 0x63,
		0xe8, 0x14, 0x83, 0xd6, 0x11, 0x74, 0x23, 0xe8, 0x46, 0xd0, 0x8d, 0xa0, 0x9b, 0xc1, 0xee, 0x85,
		0xd5, 0xef, 0x0a, 0x67, 0x98, 0x83, 0xc8, 0xb8, 0x9d, 0x5b, 0x66, 0x68, 0xbb, 0x6e, 0xf5, 0xbb,
		0x7c, 0x4b, 0xea, 0xda, 0xbe, 0xf2, 0x1c, 0xd3, 0x7a, 0xe0, 0x3d, 0x40, 0x51, 0xf0, 0xe7, 0xa0,
		0x7e, 0x75, 0xc6, 0x29, 0xba, 0x16, 0x47, 0x7d, 0xdc, 0xd5, 0x7f, 0xb0, 0xf6, 0x53, 0xf2, 0xfb,
		0xf9, 0x74, 0x72, 0x55, 0xbf, 0xab, 0x9f, 0x7e, 0x6d, 0xa8, 0xf9, 0xaa, 0x48, 0x61, 0x9f, 0x05,
		0x58, 0xc3, 0x38, 0xd5, 0x93, 0x91, 0x61, 0x3b, 0x91, 0x3f, 0x5c, 0x16, 0x57, 0x67, 0xbc, 0xa1,
		0x6e, 0x68, 0x4b, 0xc7, 0x4a, 0x71, 0x3b, 0xcf, 0xd8, 0x20, 0x1d, 0x3d, 0x52, 0xbb, 0x59, 0x48,
		0x47, 0xc7, 0x5d, 0x43, 0xd3, 0xc1, 0x22, 0x89, 0x98, 0x8f, 0xab, 0x85, 0x70, 0xb5, 0x50, 0x7e,
		0x11, 0x21, 0xa5, 0xbb, 0x86, 0xa6, 0x0f, 0x4b, 0xe1, 0xca, 0xa1, 0xac, 0xdb, 0x4c, 0x1e, 0xae,
		0x1e, 0x22, 0xbc, 0x74, 0x08, 0xd7, 0x0d, 0xe1, 0xba, 0xa1, 0xd4, 0x95, 0x9a, 0x9c, 0x5e, 0x37,
		0x44, 0x7f, 0xd1, 0x10, 0xae, 0x18, 0x92, 0xb4, 0x58, 0xa9, 0x17, 0x2d, 0xdb, 0xe2, 0x65, 0x5b,
		0xc4, 0x6c, 0x8b, 0x39, 0x1b, 0x8c, 0x87, 0xee, 0x8a, 0x21, 0xd2, 0xb2, 0x6a, 0x2c, 0xe5, 0xd3,
		0x70, 0xd1, 0x10, 0xce, 0xff, 0x72, 0xc3, 0x04, 0x3b, 0x5c, 0x64, 0x53, 0x1f, 0xc3, 0x45, 0x43,
		0x8c, 0x65, 0x88, 0x51, 0xe0, 0x41, 0x6e, 0x5c, 0xb7, 0x08, 0xf0, 0x28, 0xf0, 0x00, 0x80, 0xdf,
		0x6e, 0x80, 0x47, 0x81, 0x07, 0x64, 0x06, 0xc9, 0x81, 0x1c, 0x6e, 0xe8, 0x91, 0x06, 0x41, 0xd2,
		0xa0, 0x48, 0x1a, 0x24, 0xd1, 0x42, 0x13, 0x31, 0x44, 0xf1, 0xc5, 0xa2, 0x12, 0xe0, 0x45, 0x41,
		0x81, 0x87, 0x55, 0x4f, 0x8e, 0x02, 0x0f, 0xc9, 0x6c, 0x16, 0xe9, 0xf8, 0xb0, 0x01, 0x24, 0xdf,
		0xcf, 0xfe, 0x87, 0x02, 0x0f, 0x72, 0x86, 0x04, 0x05, 0x1e, 0xd8, 0xa3, 0x1d, 0x14, 0x78, 0x58,
		0x33, 0x68, 0x43, 0x81, 0x07, 0xbe, 0x3e, 0x51, 0xe0, 0x21, 0xfb, 0x2e, 0x6f, 0x1b, 0x0a, 0x3c,
		0xb0, 0x5c, 0xed, 0xc4, 0x7a, 0x95, 0x13, 0x74, 0x25, 0xe8, 0x4a, 0xd0, 0x95, 0xa0, 0x2b, 0xa1,
		0xcc, 0xc3, 0x66, 0x0b, 0x4b, 0xd0, 0x14, 0xb6, 0x5e, 0x57, 0x42, 0x99, 0x07, 0x84, 0xdd, 0x1b,
		0x1a, 0x76, 0x7b, 0xc2, 0x69, 0xeb, 0x86, 0xe0, 0x0c, 0xbd, 0xc7, 0x5d, 0x20, 0xfc, 0x96, 0x11,
		0x7e, 0x9b, 0x6d, 0x44, 0xde, 0x19, 0x8c, 0xbc, 0xcd, 0x36, 0x82, 0x6e, 0x6a, 0x6b, 0xe7, 0xbb,
		0x7f, 0x94, 0xf3, 0xbe, 0xd1, 0x30, 0xe1, 0xf0, 0x20, 0x30, 0x8b, 0xe3, 0x10, 0x20, 0xdd, 0xf9,
		0x37, 0x46, 0xaf, 0x83, 0xa3, 0x78, 0x5b, 0xe0, 0x8c, 0x3a, 0xfa, 0xbd, 0xe8, 0xf0, 0x39, 0xa2,
		0x61, 0xf3, 0x70, 0x42, 0xd0, 0x80, 0xa0, 0x01, 0x41, 0x03, 0x62, 0xb0, 0x7b, 0xf1, 0x64, 0x6a,
		0xe4, 0xc5, 0x84, 0xa7, 0x51, 0xa6, 0x06, 0x0d, 0x28, 0x25, 0x0d, 0xa8, 0x08, 0xb6, 0xbf, 0xf5,
		0x1a, 0x50, 0xb5, 0x56, 0xab, 0x95, 0xa0, 0xfb, 0x40, 0xf7, 0xd9, 0x80, 0x50, 0xbb, 0x27, 0x84,
		0xa3, 0x99, 0x3d, 0xbe, 0x60, 0x7b, 0xdc, 0x01, 0xc2, 0x6d, 0x84, 0xdb, 0x08, 0xb7, 0x11, 0x6e,
		0x33, 0xd8, 0xbd, 0xd9, 0xd3, 0xf4, 0x56, 0xcb, 0x11, 0xae, 0xcb, 0x29, 0x00, 0x1d, 0x31, 0xb4,
		0x3d, 0x1a, 0x9b, 0xdc, 0xe6, 0xe3, 0x99, 0xbd, 0xa7, 0x32, 0xe3, 0xd8, 0x2f, 0xcc, 0xc1, 0x47,
		0xc6, 0x3e, 0xb8, 0x73, 0x5c, 0xc3, 0x8e, 0x76, 0x6f, 0x0a, 0xda, 0x51, 0xf3, 0xed, 0xa6, 0xa8,
		0x1d, 0x35, 0x87, 0x7f, 0x2d, 0x06, 0x7f, 0xbc, 0x96, 0x06, 0x6f, 0xa5, 0x9b, 0x82, 0x56, 0x1e,
		0xbd, 0x5b, 0xaa, 0xdc, 0x14, 0xb4, 0x4a, 0x73, 0x6f, 0xf7, 0xf6, 0x76, 0x3f, 0xea, 0x77, 0xf6,
		0x5e, 0x0f, 0x07, 0x7c, 0xf9, 0x72, 0x4d, 0xce, 0x69, 0x90, 0x91, 0x6f, 0x1c, 0xf6, 0xf6, 0xcf,
		0xae, 0xac, 0xd9, 0xd8, 0xfb, 0x83, 0x71, 0x3e, 0xf2, 0x54, 0x8c, 0x56, 0x0e, 0x2c, 0x55, 0x01,
		0x4b, 0x51, 0x61, 0x69, 0x77, 0x2a, 0x07, 0xff, 0xb5, 0xf8, 0xa1, 0x3c, 0x38, 0xde, 0x7b, 0xad,
		0x0d, 0xe6, 0xdf, 0x7c, 0x5b, 0xf6, 0xb1, 0xe2, 0x87, 0xda, 0xe0, 0x78, 0xc5, 0xbf, 0x54, 0x07,
		0xc7, 0x6b, 0xb6, 0x51, 0x19, 0xec, 0x2e, 0x7c, 0xd4, 0x7f, 0xbf, 0xb4, 0xea, 0x0b, 0xe5, 0x15,
		0x5f, 0x38, 0x5c, 0xf5, 0x85, 0xc3, 0x15, 0x5f, 0x58, 0xf9, 0x48, 0xa5, 0x15, 0x5f, 0xa8, 0x0c,
		0xde, 0x16, 0x3e, 0xbf, 0xbb, 0xfc, 0xa3, 0xd5, 0xc1, 0xde, 0xdb, 0xaa, 0x7f, 0xab, 0x0d, 0xde,
		0x8e, 0xf7, 0xf6, 0x00, 0xd4, 0x6b, 0x03, 0x35, 0xcc, 0x53, 0xbe, 0x79, 0xe6, 0xcf, 0x71, 0x41,
		0x09, 0x8a, 0xb1, 0xc2, 0x1c, 0xe1, 0xda, 0x9d, 0x27, 0xc1, 0x78, 0xbf, 0x62, 0xd8, 0x03, 0xb4,
		0x20, 0x68, 0x41, 0xd0, 0x82, 0xa0, 0x05, 0x31, 0xd8, 0xfd, 0xbd, 0x6d, 0x77, 0x84, 0xce, 0x7a,
		0xd9, 0x4b, 0x71, 0x0b, 0x9c, 0x81, 0xdb, 0xbf, 0x97, 0x90, 0x11, 0x3a, 0xd3, 0x0b, 0x9c, 0x02,
		0x92, 0x42, 0xb7, 0xd6, 0x1f, 0x20, 0x29, 0x94, 0xde, 0xda, 0x37, 0x3d, 0x29, 0xf4, 0x66, 0x92,
		0x14, 0xfa, 0x6f, 0xa3, 0xef, 0x38, 0xc2, 0xf2, 0x76, 0xf7, 0x0e, 0xf6, 0xf7, 0x0f, 0xc2, 0x4f,
		0x34, 0x47, 0x5f, 0x99, 0xc6, 0x59, 0x77, 0xc9, 0x7b, 0x61, 0xcb, 0x64, 0xe5, 0x2e, 0x19, 0xbc,
		0x1b, 0xee, 0x12, 0xa2, 0xbe, 0x05, 0x62, 0x72, 0x67, 0x08, 0xee, 0x0f, 0x9a, 0xf1, 0x35, 0x54,
		0x07, 0xc5, 0x71, 0x85, 0x10, 0xae, 0x10, 0xca, 0x17, 0x10, 0xa4, 0x7b, 0x6d, 0x10, 0x6e, 0x0c,
		0xca, 0xae, 0x89, 0x48, 0xbb, 0x2b, 0x68, 0x87, 0x71, 0x0e, 0x92, 0x8e, 0xbd, 0x94, 0x31, 0x8f,
		0xb1, 0x06, 0x63, 0xac, 0xb9, 0x68, 0xf3, 0xb9, 0xfe, 0xac, 0x44, 0x98, 0x11, 0xd5, 0xff, 0xd5,
		0xf1, 0x4a, 0x5e, 0x85, 0x41, 0xfe, 0xa4, 0x89, 0x88, 0x96, 0x10, 0xaf, 0xcc, 0x78, 0x6c, 0xfe,
		0x9f, 0x84, 0xdf, 0xd3, 0x88, 0xba, 0x49, 0x49, 0x3a, 0x19, 0x09, 0x27, 0x23, 0xd9, 0x64, 0xa2,
		0x2a, 0x2f, 0xe6, 0xc4, 0x2d, 0xbb, 0xad, 0x0a, 0xcb, 0x73, 0x4c, 0x41, 0x70, 0x01, 0xda, 0xb8,
		0x21, 0x5c, 0x7f, 0x86, 0xeb, 0xcf, 0x52, 0x5a, 0x62, 0xe9, 0x84, 0x5a, 0x89, 0xaf, 0x3f, 0xf3,
		0x57, 0xce, 0x0b, 0xdd, 0xdd, 0x67, 0xc3, 0xe6, 0x70, 0xf1, 0x99, 0x9c, 0x65, 0xca, 0x25, 0x4f,
		0xe3, 0xe2, 0xb3, 0x8c, 0x48, 0x35, 0x64, 0x17, 0x9f, 0xf9, 0x51, 0xe4, 0x38, 0x5f, 0x90, 0xfc,
		0x76, 0x9c, 0xe9, 0xc6, 0x71, 0x09, 0x5a, 0xb6, 0xa0, 0x81, 0x0b, 0x22, 0xd8, 0xa1, 0x82, 0x1d,
		0x32, 0xd8, 0xa1, 0x83, 0x4e, 0x2f, 0x56, 0x70, 0x09, 0x1a, 0xe3, 0x25, 0x68, 0xd3, 0xf0, 0xb5,
		0x41, 0x57, 0xa1, 0xf5, 0x1c, 0xbb, 0xd5, 0x37, 0x84, 0xc3, 0x00, 0xf8, 0x93, 0xa6, 0x33, 0x7e,
		0x25, 0x1a, 0xe0, 0x1e, 0x70, 0xbf, 0xdd, 0x70, 0x4f, 0x7e, 0x25, 0xda, 0x78, 0xed, 0x33, 0x1e,
		0xa8, 0x1e, 0xf7, 0xc0, 0x93, 0x30, 0x55, 0x44, 0xc2, 0x14, 0xb2, 0x68, 0x33, 0x06, 0x4a, 0xd2,
		0xc0, 0x89, 0x16, 0xa4, 0x88, 0xc1, 0x8a, 0x0d, 0xb4, 0xf8, 0xc1, 0x4b, 0x16, 0x88, 0x31, 0x11,
		0x64, 0x69, 0xa0, 0x26, 0x03, 0xdc, 0xe4, 0x82, 0x9c, 0x2c, 0xb0, 0x93, 0x0e, 0x7a, 0xd2, 0xc1,
		0x4f, 0x3a, 0x08, 0xf2, 0x80, 0x21, 0x13, 0x28, 0xf2, 0x11, 0x78, 0x89, 0x84, 0x5e, 0x06, 0xc1,
		0x7f, 0x9f, 0xf0, 0x87, 0xd8, 0x9c, 0x93, 0xc3, 0x79, 0x0c, 0x96, 0x44, 0x7c, 0x51, 0xfa, 0x4a,
		0x13, 0xa2, 0xbc, 0x38, 0x5d, 0x52, 0x40, 0xbf, 0xe8, 0x03, 0x4b, 0xf0, 0x81, 0xf0, 0x81, 0xf0,
		0x81, 0x19, 0xf2, 0x81, 0x5c, 0x04, 0x21, 0xec, 0xa0, 0x25, 0x1c, 0xf3, 0x49, 0xb4, 0xb4, 0xb6,
		0x63, 0x77, 0xb5, 0x61, 0xee, 0x1a, 0xbf, 0x55, 0x8f, 0xd7, 0xea, 0xb2, 0xce, 0x99, 0xcd, 0x8d,
		0x97, 0x4e, 0x48, 0xa3, 0x15, 0x32, 0xa1, 0x35, 0x1d, 0x88, 0x95, 0x0d, 0xb5, 0xa9, 0x41, 0x6e,
		0x6a, 0xd0, 0x9b, 0x1a, 0x04, 0xf3, 0x42, 0x31, 0x33, 0x24, 0xcb, 0xa3, 0x27, 0x0b, 0xeb, 0x8e,
		0xef, 0x44, 0xf4, 0xca, 0x88, 0xb3, 0xb8, 0x93, 0x4f, 0x03, 0xe0, 0x2c, 0x51, 0xdc, 0x32, 0x1d,
		0x61, 0x78, 0x9d, 0x17, 0xcd, 0x11, 0x86, 0x30, 0x39, 0xea, 0x6c, 0xac, 0x76, 0x98, 0x0b, 0x5d,
		0xc3, 0x5d, 0xc2, 0x5d, 0xc2, 0x5d, 0xc2, 0x5d, 0xc2, 0x5d, 0xc2, 0x5d, 0x66, 0xd3, 0x5d, 0x0a,
		0xd7, 0x94, 0xe7, 0x20, 0xfd, 0xce, 0xe0, 0x12, 0xe1, 0x12, 0xe1, 0x12, 0xe1, 0x12, 0xe1, 0x12,
		0x53, 0x80, 0x47, 0x45, 0x52, 0x35, 0xdd, 0xb0, 0xaf, 0x73, 0x61, 0x3d, 0x04, 0xdb, 0x5e, 0x37,
		0x52, 0x4c, 0x5d, 0x0e, 0x84, 0x28, 0xb2, 0x6e, 0x43, 0x5a, 0xe8, 0x74, 0x7c, 0x35, 0x4e, 0xa9,
		0xf0, 0x41, 0x6e, 0xc7, 0xb2, 0x2f, 0xc9, 0x59, 0x5c, 0x23, 0xb2, 0x2e, 0xcd, 0x91, 0x0c, 0x33,
		0xb3, 0x36, 0xa5, 0x3f, 0xc3, 0xa6, 0xb6, 0xc1, 0xa6, 0x76, 0x36, 0xa3, 0x97, 0xa6, 0x04, 0x0f,
		0x22, 0xab, 0xf2, 0x75, 0xd8, 0xe1, 0x54, 0x81, 0xe6, 0x7f, 0xa9, 0x9b, 0x31, 0x84, 0x32, 0x2b,
		0x88, 0x87, 0xbd, 0xfe, 0x33, 0x3d, 0x90, 0x7f, 0x48, 0x18, 0x49, 0xb0, 0xfb, 0x85, 0x39, 0xe8,
		0xda, 0xf7, 0x66, 0xc7, 0xf4, 0x5e, 0x34, 0xde, 0x3c, 0x9b, 0x85, 0x48, 0x76, 0xae, 0x5f, 0x70,
		0x7e, 0x70, 0x7e, 0x70, 0x7e, 0x70, 0x7e, 0x70, 0xfe, 0x45, 0xce, 0x6f, 0xf5, 0xbb, 0xc2, 0x19,
		0x56, 0xca, 0x92, 0xc8, 0xfd, 0xcb, 0x12, 0xfa, 0xaa, 0x5b, 0xfd, 0xae, 0xbc, 0x25, 0x7e, 0x6d,
		0x5f, 0x79, 0x8e, 0x69, 0x3d, 0x48, 0x25, 0x50, 0x6a, 0xc1, 0x9f, 0xc3, 0x2f, 0xdf, 0x2e, 0xff,
		0x6f, 0xfd, 0x42, 0x95, 0x48, 0x14, 0x8b, 0x7e, 0xb7, 0x9f, 0xbf, 0x37, 0xce, 0xcf, 0x4e, 0x4f,
		0xae, 0xeb, 0xea, 0xce, 0x06, 0x11, 0x61, 0xf5, 0xda, 0x3e, 0x0b, 0x60, 0x4b, 0xe2, 0x2c, 0x4e,
		0x46, 0x92, 0xfd, 0xe2, 0xe9, 0x59, 0x06, 0x3c, 0x34, 0x9c, 0x63, 0xa5, 0xb0, 0x21, 0x84, 0x30,
		0xdf, 0xe8, 0x2f, 0x9e, 0x3d, 0x47, 0xd7, 0xfa, 0x96, 0x1b, 0xaf, 0x56, 0x5e, 0xac, 0x3e, 0x1d,
		0xd1, 0x16, 0x8e, 0xb0, 0x0c, 0xb1, 0x89, 0x1a, 0x69, 0x98, 0x18, 0xe3, 0xe8, 0x6d, 0x4f, 0x33,
		0x85, 0xd7, 0xd6, 0xee, 0x85, 0xeb, 0x6a, 0xe2, 0xa9, 0x67, 0x69, 0xa6, 0x73, 0xaf, 0x89, 0x67,
		0x4f, 0x58, 0x2d, 0xd1, 0xd2, 0x42, 0xc2, 0x50, 0xa8, 0xc8, 0xc4, 0x51, 0xc9, 0x71, 0xe8, 0xb2,
		0x78, 0x74, 0x62, 0x00, 0x92, 0xd5, 0xaf, 0xb4, 0x42, 0xd3, 0xa5, 0x21, 0x6a, 0x34, 0x0b, 0x81,
		0x50, 0x07, 0x6d, 0x24, 0xb1, 0xf9, 0x85, 0xa5, 0x98, 0xa5, 0xa9, 0x22, 0x84, 0xc5, 0x9f, 0xa1,
		0x87, 0x40, 0x0f, 0x81, 0x1e, 0x02, 0x3d, 0x64, 0xe3, 0xf4, 0x10, 0xfe, 0xc3, 0xbe, 0x0b, 0x5a,
		0x48, 0x4d, 0xce, 0x2e, 0xd6, 0xf8, 0xf0, 0xef, 0xdc, 0xff, 0x96, 0x5c, 0x12, 0xc2, 0x70, 0x3f,
		0xcc, 0x36, 0x50, 0x29, 0xd7, 0xd3, 0xbd, 0xbe, 0xbb, 0xd1, 0x3c, 0x4a, 0xf4, 0x1c, 0x61, 0xe8,
		0x1e, 0xfb, 0xc9, 0x82, 0xac, 0x91, 0xa4, 0xd1, 0xd4, 0x6e, 0x35, 0x43, 0x9a, 0xcc, 0x3d, 0xe8,
		0x0f, 0xe8, 0x0f, 0x19, 0xfd, 0xd1, 0x1e, 0x1c, 0xbb, 0x9f, 0x02, 0x09, 0x1a, 0xf5, 0x0b, 0x2a,
		0x04, 0x2a, 0x04, 0x2a, 0x04, 0x2a, 0x04, 0x2a, 0x04, 0x2a, 0x34, 0xeb, 0x1a, 0xdc, 0xb9, 0xd7,
		0x07, 0x66, 0x2b, 0xdf, 0x9c, 0x88, 0xf4, 0x92, 0xc2, 0x77, 0x7b, 0x23, 0xbf, 0xc4, 0xf0, 0xfd,
		0x1e, 0x25, 0x5c, 0x72, 0xf8, 0xee, 0x43, 0xd0, 0x5f, 0x82, 0xb8, 0x7e, 0x97, 0x64, 0x97, 0x24,
		0x6e, 0x66, 0xc4, 0xc9, 0x5e, 0xf5, 0x72, 0x01, 0x41, 0x99, 0xab, 0x5f, 0x22, 0xca, 0x44, 0x94,
		0x89, 0x28, 0x13, 0x51, 0x66, 0xae, 0xa3, 0x4c, 0x24, 0x20, 0x52, 0x4d, 0x5d, 0x7a, 0x09, 0x88,
		0xe7, 0x97, 0xa7, 0x27, 0xe7, 0xd2, 0xf3, 0x0f, 0xaf, 0xae, 0x4f, 0xae, 0xcf, 0x4e, 0x65, 0x76,
		0x5b, 0xf2, 0xbb, 0xfd, 0xf4, 0x57, 0x03, 0x09, 0x8f, 0x09, 0xbb, 0xf4, 0xc7, 0x90, 0xad, 0xa0,
		0xe8, 0x72, 0xf2, 0x13, 0x98, 0xa8, 0xd4, 0x33, 0x7e, 0x63, 0x03, 0x3d, 0x56, 0x8a, 0x48, 0xaf,
		0xdc, 0x58, 0x56, 0xe1, 0x8a, 0xff, 0xd5, 0xac, 0x7e, 0xf7, 0x5e, 0x26, 0xaf, 0x98, 0xea, 0x13,
		0xcc, 0x02, 0xcc, 0x02, 0xcc, 0x02, 0xcc, 0x02, 0xcc, 0x62, 0x61, 0xdd, 0xf5, 0x4d, 0xcb, 0x3b,
		0x2c, 0x49, 0x24, 0x15, 0x32, 0xd4, 0xeb, 0x6f, 0xba, 0xf5, 0x20, 0x50, 0xcf, 0x84, 0xa8, 0xd3,
		0x71, 0xed, 0x09, 0x94, 0x9e, 0x90, 0xd5, 0xf3, 0xd6, 0x94, 0x33, 0x29, 0x97, 0x8e, 0xca, 0x47,
		0xd5, 0x5a, 0xe9, 0xa8, 0x02, 0xdb, 0x92, 0x65, 0x5b, 0x48, 0x17, 0xca, 0x80, 0xa3, 0xc7, 0x29,
		0x36, 0xa6, 0x78, 0xe6, 0xdb, 0x97, 0xd3, 0x5a, 0xf9, 0xb0, 0x74, 0xac, 0x7c, 0xfa, 0xab, 0xa1,
		0x7c, 0x6d, 0x9c, 0x5f, 0x69, 0x9f, 0x74, 0x57, 0xb4, 0x94, 0xba, 0xf7, 0x28, 0x1c, 0x4b, 0x78,
		0xca, 0x8f, 0xc6, 0x05, 0x0e, 0xaf, 0x29, 0x1b, 0x4d, 0x3e, 0x96, 0x92, 0x90, 0xb5, 0x0c, 0x03,
		0x28, 0x9c, 0x2d, 0x14, 0xce, 0xa7, 0xd8, 0xe5, 0x99, 0xc6, 0xcf, 0x17, 0x89, 0x42, 0xd7, 0xb0,
		0x3f, 0x88, 0x5c, 0x91, 0x3a, 0x82, 0xc8, 0xc5, 0xe8, 0x72, 0x20, 0x72, 0xe5, 0x18, 0xd7, 0x51,
		0xc6, 0x3e, 0x39, 0x4c, 0x72, 0x97, 0xb1, 0x07, 0x3d, 0x01, 0x3d, 0x01, 0x3d, 0x01, 0x3d, 0x01,
		0x3d, 0xd9, 0x4c, 0x7a, 0x92, 0xab, 0x1b, 0x36, 0x4f, 0x2c, 0xcb, 0xf6, 0x86, 0xc9, 0x69, 0xac,
		0x17, 0x6d, 0xba, 0xc6, 0xa3, 0xe8, 0xea, 0xbd, 0xd1, 0xd1, 0x84, 0x03, 0xbb, 0x27, 0x2c, 0x23,
		0xa0, 0x0b, 0x7e, 0xe4, 0xf5, 0xcb, 0x76, 0x7e, 0x6a, 0x7e, 0xf8, 0xa5, 0x5b, 0x86, 0x38, 0x98,
		0x7f, 0xc3, 0x5d, 0x78, 0xe7, 0xa0, 0xdd, 0xba, 0x3f, 0xe8, 0x94, 0x1c, 0xf3, 0xfe, 0xa0, 0xab,
		0x1b, 0x5a, 0xe0, 0xe8, 0x0e, 0x84, 0xe5, 0x39, 0xa6, 0x70, 0x83, 0x3f, 0x5f, 0xc2, 0xbb, 0x9f,
		0xdd, 0xf0, 0x6f, 0xc3, 0x4b, 0xa1, 0x73, 0x73, 0x17, 0xf4, 0x4e, 0x86, 0xad, 0xc7, 0x77, 0x01,
		0x8c, 0xe9, 0xdf, 0xbc, 0x07, 0x39, 0xf8, 0x0f, 0x6e, 0xa4, 0x72, 0x50, 0x43, 0xc2, 0xc1, 0x0c,
		0x09, 0x07, 0x31, 0xa8, 0x0d, 0x95, 0x19, 0xde, 0x32, 0x00, 0x6b, 0x2a, 0xcb, 0xa5, 0xf1, 0x4e,
		0xdf, 0xf0, 0xac, 0x51, 0xdc, 0x7b, 0x31, 0x7c, 0xcc, 0xb3, 0xd1, 0x53, 0xde, 0x7d, 0x69, 0xdd,
		0xdf, 0x9d, 0x97, 0xbe, 0x99, 0xf7, 0x77, 0x5f, 0x75, 0xe3, 0xda, 0x7f, 0xc8, 0xbb, 0xba, 0xff,
		0x70, 0x77, 0x0d, 0x96, 0xfb, 0xf6, 0xe9, 0x90, 0x90, 0xa6, 0x25, 0x22, 0x13, 0xe5, 0x32, 0xcd,
		0xf4, 0x4c, 0x92, 0x66, 0xda, 0x93, 0x4f, 0x12, 0xc1, 0x04, 0xa9, 0xb4, 0xe5, 0xdc, 0xa7, 0xe4,
		0x5e, 0xba, 0x6a, 0xed, 0xa1, 0x5c, 0x41, 0xd4, 0x5c, 0xa8, 0xde, 0x12, 0x65, 0x2d, 0x73, 0xa8,
		0xb4, 0xbc, 0x6a, 0x2c, 0x17, 0xa3, 0x66, 0x57, 0x57, 0xd9, 0xe9, 0x30, 0xbb, 0x5a, 0x9a, 0x2d,
		0x68, 0xfe, 0x6c, 0xd2, 0x86, 0x9e, 0xaa, 0x78, 0xa2, 0xbf, 0x04, 0x72, 0x72, 0xc0, 0xe8, 0x89,
		0xfa, 0x56, 0x33, 0xa6, 0x0d, 0x23, 0xb6, 0x0d, 0x22, 0xce, 0x0d, 0x21, 0x39, 0x1b, 0x40, 0xdc,
		0x62, 0x9e, 0xb4, 0x0d, 0x1e, 0x69, 0xca, 0x9c, 0xb4, 0x0d, 0x9c, 0x6c, 0x33, 0x71, 0xb6, 0x0d,
		0x99, 0x69, 0x78, 0xd1, 0x4c, 0x8e, 0x7a, 0x68, 0x8c, 0x59, 0xc5, 0xcc, 0x59, 0xc4, 0x8c, 0x3a,
		0x99, 0x8c, 0x2c, 0xe1, 0x30, 0x85, 0x93, 0xb9, 0x14, 0xbf, 0xf4, 0x4c, 0x4d, 0x79, 0x99, 0x99,
		0x9c, 0x39, 0x28, 0x32, 0xb2, 0x7a, 0x27, 0x26, 0x50, 0xad, 0xd5, 0x6a, 0x25, 0xee, 0xca, 0x21,
		0x9b, 0x6c, 0x09, 0x39, 0x11, 0x94, 0x9b, 0x59, 0x15, 0x65, 0x08, 0xf9, 0x5b, 0xa7, 0xa4, 0x3d,
		0x59, 0x8c, 0x91, 0xf6, 0xa8, 0x7d, 0x04, 0xdb, 0x08, 0xb6, 0x11, 0x6c, 0x23, 0xd8, 0x46, 0xb0,
		0x8d, 0x60, 0x1b, 0xc1, 0x36, 0x82, 0x6d, 0x04, 0xdb, 0x08, 0xb6, 0xb7, 0x2f, 0xd8, 0xee, 0xea,
		0x86, 0xa6, 0xb7, 0x5a, 0x8e, 0x70, 0x5d, 0xbe, 0x88, 0x7b, 0xba, 0x13, 0x84, 0xdd, 0x08, 0xbb,
		0x11, 0x76, 0x23, 0xec, 0xce, 0x15, 0xcc, 0x4c, 0x43, 0x4d, 0xf1, 0x23, 0x43, 0xdb, 0x0d, 0xdd,
		0xf3, 0x84, 0x63, 0xb1, 0x85, 0xdf, 0xea, 0x4d, 0x41, 0x3b, 0xd2, 0xb5, 0xf6, 0x89, 0xf6, 0xa5,
		0xf9, 0x5a, 0x1a, 0xec, 0x1e, 0xcf, 0xbe, 0xde, 0x7b, 0xad, 0x0c, 0xe8, 0xed, 0xb1, 0xc9, 0x31,
		0x50, 0x97, 0x57, 0x67, 0x7f, 0xb3, 0x8f, 0xd6, 0x3f, 0xef, 0x0f, 0xd7, 0x1f, 0x2a, 0xe2, 0x8d,
		0x18, 0x23, 0xfb, 0xd4, 0xd1, 0x2d, 0xbe, 0x40, 0x23, 0x68, 0x1d, 0x11, 0x06, 0x22, 0x0c, 0x44,
		0x18, 0x88, 0x30, 0x18, 0xec, 0x9e, 0xef, 0xae, 0x09, 0xce, 0xbb, 0x25, 0x7e, 0x73, 0x97, 0xc4,
		0xfe, 0xfe, 0x81, 0x8f, 0x99, 0x6e, 0xf0, 0xff, 0x07, 0xc3, 0x0c, 0xd3, 0xe0, 0xef, 0x1a, 0xf5,
		0x35, 0x12, 0x48, 0x00, 0x8e, 0xd6, 0xae, 0xec, 0x04, 0x60, 0xc2, 0x73, 0x35, 0x04, 0xc9, 0xbf,
		0x3b, 0x29, 0x4e, 0xed, 0xf8, 0x5c, 0x0c, 0x1d, 0x9d, 0xa0, 0x3d, 0x0a, 0x43, 0x7f, 0xf4, 0x45,
		0xca, 0x51, 0x17, 0x86, 0xa3, 0x2d, 0x0c, 0x47, 0x59, 0x92, 0xda, 0x0e, 0x31, 0x1c, 0xc8, 0x86,
		0x01, 0x95, 0x24, 0xeb, 0x3e, 0xce, 0xb9, 0x93, 0x64, 0xd0, 0x13, 0x1f, 0x30, 0xe2, 0x7d, 0x33,
		0xa6, 0x99, 0x50, 0x99, 0x87, 0x3c, 0xb3, 0x88, 0x37, 0x2d, 0xd1, 0x07, 0x35, 0xc6, 0x80, 0xce,
		0xdd, 0x91, 0x18, 0x5f, 0xbf, 0x5e, 0x71, 0xe9, 0x62, 0x5c, 0xd4, 0x4f, 0x78, 0xa4, 0x23, 0x31,
		0x33, 0xa4, 0x60, 0x80, 0xb4, 0x4c, 0x8f, 0x8a, 0xd1, 0x91, 0x33, 0x37, 0x72, 0x86, 0x46, 0xce,
		0xc4, 0xe4, 0xc2, 0x53, 0xd2, 0x23, 0x13, 0xd4, 0xd7, 0xa5, 0xf2, 0x5c, 0x87, 0x4a, 0x74, 0xe6,
		0x8a, 0x4c, 0xc2, 0xa1, 0x94, 0x6c, 0x78, 0x24, 0x1a, 0x6a, 0x49, 0x86, 0x4d, 0x82, 0x61, 0x93,
		0x5c, 0xd8, 0x24, 0x96, 0x74, 0xa9, 0x0e, 0xd5, 0x19, 0x29, 0xd5, 0x6c, 0xd1, 0x9f, 0xb3, 0x24,
		0x4b, 0xa1, 0x22, 0xd6, 0x70, 0xc9, 0xb5, 0x5b, 0x1c, 0xb2, 0x94, 0xa6, 0xcd, 0xe2, 0x90, 0x25,
		0xad, 0xfc, 0x45, 0xae, 0xb9, 0x32, 0x6a, 0xad, 0x1c, 0x1a, 0xeb, 0xb4, 0xb6, 0x1a, 0x48, 0x68,
		0x64, 0xf7, 0xef, 0x66, 0xe3, 0x08, 0xfd, 0x38, 0xf0, 0x72, 0xe9, 0xe1, 0x7d, 0xd2, 0x74, 0xc6,
		0x8f, 0xd2, 0x03, 0xe5, 0x81, 0xf2, 0xdb, 0x8d, 0xf2, 0xe4, 0x47, 0xe9, 0xc7, 0x6b, 0x9f, 0x2f,
		0x15, 0x20, 0xec, 0x81, 0x27, 0x1d, 0xa0, 0x88, 0x74, 0x00, 0xa4, 0x03, 0x64, 0x0c, 0x94, 0xa4,
		0x81, 0x13, 0x2d, 0x48, 0x11, 0x83, 0x15, 0x1b, 0x68, 0x4d, 0xb8, 0xae, 0xd5, 0x12, 0x7c, 0xe7,
		0x0d, 0x26, 0xf4, 0x37, 0xe8, 0x86, 0xc9, 0x44, 0x78, 0x8b, 0xc9, 0xb3, 0x17, 0x91, 0x97, 0x51,
		0x3c, 0x5e, 0x6e, 0xd1, 0x78, 0x59, 0x85, 0x80, 0xa5, 0x17, 0x89, 0x97, 0x5e, 0xe5, 0x57, 0x7a,
		0x51, 0xf8, 0x7c, 0xd5, 0x8a, 0x65, 0x2f, 0xfe, 0x2e, 0x21, 0x5b, 0x8a, 0x93, 0xd1, 0xaf, 0xc1,
		0xf0, 0x03, 0x60, 0xce, 0x4b, 0x09, 0x5a, 0x96, 0xca, 0x92, 0x94, 0x75, 0xf5, 0x56, 0xda, 0x0f,
		0x65, 0x9d, 0x3d, 0x49, 0x71, 0xfc, 0xa2, 0x03, 0x2c, 0xc1, 0x01, 0xc2, 0x01, 0xc2, 0x01, 0x66,
		0xc8, 0x01, 0x72, 0xf1, 0x02, 0x49, 0xfc, 0x40, 0x2a, 0x4f, 0x90, 0xc4, 0x17, 0xa4, 0xf1, 0x06,
		0x99, 0xf0, 0x99, 0x0e, 0x8c, 0xca, 0x86, 0xd3, 0xd4, 0x60, 0x35, 0x35, 0x78, 0x4d, 0x0d, 0x66,
		0x79, 0xe1, 0x96, 0x19, 0x76, 0xe5, 0xf1, 0x8f, 0x14, 0x78, 0x88, 0x4c, 0x3e, 0xb2, 0x8c, 0x97,
		0xcc, 0xfd, 0x2f, 0xdc, 0x59, 0x0b, 0xff, 0xc6, 0xc9, 0x59, 0xf8, 0xcd, 0x12, 0x97, 0xb1, 0x2c,
		0x65, 0x61, 0xec, 0x39, 0xc0, 0x73, 0xf9, 0xb0, 0x73, 0xaf, 0x97, 0x99, 0x19, 0x6e, 0x67, 0xa1,
		0xf4, 0xa7, 0x5c, 0xd1, 0x1d, 0xae, 0x66, 0x89, 0xd3, 0x29, 0xae, 0x66, 0x91, 0x0f, 0x76, 0x59,
		0x04, 0xb9, 0x4c, 0xdc, 0xd5, 0x72, 0x21, 0x9e, 0xbd, 0xff, 0x63, 0xf7, 0xfe, 0xf2, 0x9f, 0x71,
		0xfc, 0x02, 0x07, 0x36, 0x53, 0xb4, 0xd8, 0x0c, 0x59, 0x2a, 0xae, 0x70, 0x79, 0x97, 0x12, 0xe0,
		0x0a, 0x97, 0x2c, 0x6b, 0x1a, 0xc8, 0x3b, 0x4b, 0x4d, 0x73, 0xd8, 0xf4, 0x2b, 0x5c, 0x5c, 0xce,
		0x2b, 0x5c, 0x5c, 0x54, 0x95, 0x46, 0xb6, 0x59, 0x46, 0x64, 0x52, 0x64, 0x9b, 0xc9, 0x25, 0x42,
		0x12, 0xaa, 0x4a, 0x93, 0xc3, 0x8b, 0xc2, 0x5d, 0xd6, 0xee, 0x5c, 0x58, 0x0f, 0x41, 0x3c, 0x8c,
		0xa2, 0xd2, 0xcb, 0x3a, 0x19, 0x57, 0x14, 0x2e, 0x15, 0x50, 0x4b, 0x38, 0x1b, 0xcb, 0x78, 0x5e,
		0x65, 0x82, 0x0d, 0xe4, 0xc1, 0x06, 0xf2, 0x52, 0x4f, 0x3a, 0xe7, 0x85, 0x43, 0xff, 0x85, 0x12,
		0xa1, 0x93, 0x5e, 0xa6, 0x4b, 0x84, 0xfe, 0x2b, 0xfb, 0xc5, 0x40, 0x89, 0xa3, 0x1d, 0xf1, 0xec,
		0x39, 0xba, 0xd6, 0xb7, 0xdc, 0x40, 0x99, 0xe2, 0x89, 0x7b, 0x1c, 0xd1, 0x16, 0x8e, 0xb0, 0x8c,
		0x5c, 0x5e, 0x4a, 0x31, 0x0e, 0xda, 0xbe, 0x7d, 0x39, 0xad, 0x95, 0x0f, 0x4b, 0xc7, 0xca, 0xa7,
		0xbf, 0x1a, 0xca, 0xd7, 0xc6, 0xf9, 0x95, 0xf6, 0x49, 0x77, 0x45, 0x4b, 0xa9, 0x7b, 0x8f, 0xc2,
		0xb1, 0x84, 0xa7, 0xfc, 0x68, 0x5c, 0x6c, 0x58, 0x52, 0xdd, 0x64, 0xde, 0x36, 0x39, 0xaf, 0x6e,
		0xad, 0x89, 0x85, 0xcb, 0xdb, 0x82, 0x92, 0xc6, 0x84, 0xa5, 0x2f, 0x16, 0xe0, 0x83, 0xfc, 0x16,
		0x21, 0x28, 0x4a, 0x50, 0x94, 0xa0, 0x28, 0x41, 0x51, 0x0a, 0xec, 0xbe, 0x6f, 0x5a, 0x5e, 0xb5,
		0xcc, 0x28, 0x2a, 0x7d, 0xc4, 0x3d, 0x65, 0x29, 0x49, 0x4a, 0x50, 0x13, 0xb6, 0x5e, 0x51, 0x92,
		0x93, 0x16, 0x05, 0x8d, 0x09, 0x01, 0xb7, 0xe4, 0x80, 0xdb, 0xe3, 0x70, 0x8c, 0xa1, 0x53, 0x0c,
		0x5a, 0x47, 0xd0, 0x8d, 0xa0, 0x1b, 0x41, 0x37, 0x82, 0x6e, 0x06, 0xbb, 0x17, 0x56, 0xbf, 0x2b,
		0x9c, 0x61, 0x02, 0x22, 0xe3, 0x76, 0x6e, 0x99, 0xa1, 0xed, 0xba, 0xd5, 0xef, 0xf2, 0x2d, 0xa9,
		0x6b, 0xfb, 0xca, 0x73, 0x4c, 0xeb, 0x81, 0xf7, 0xd4, 0x44, 0xc1, 0x9f, 0x83, 0xfa, 0xd5, 0x19,
		0xa7, 0xe8, 0x5a, 0x1c, 0xf5, 0x71, 0x57, 0xff, 0xc1, 0xda, 0x4f, 0xc9, 0xef, 0xe7, 0xd3, 0xc9,
		0x55, 0xfd, 0xae, 0x7e, 0xfa, 0xb5, 0xa1, 0xe6, 0xab, 0x0c, 0x85, 0x7d, 0x16, 0x60, 0x0d, 0xe3,
		0x54, 0x4f, 0x46, 0x86, 0xed, 0x18, 0xfe, 0x70, 0x59, 0x5c, 0x9d, 0xf1, 0x86, 0xba, 0xa1, 0x2d,
		0x1d, 0x2b, 0xc5, 0xed, 0x3c, 0x5b, 0x83, 0x5c, 0xf4, 0x48, 0xed, 0xa6, 0x9e, 0x8b, 0x8e, 0xdb,
		0x84, 0xa6, 0x23, 0x45, 0x12, 0x25, 0x1f, 0x97, 0x08, 0xe1, 0x12, 0xa1, 0x9c, 0xc2, 0x41, 0x2a,
		0xb7, 0x0a, 0x4d, 0x9f, 0x90, 0xc2, 0xe5, 0x42, 0x99, 0x36, 0x97, 0x3c, 0x5c, 0x32, 0x44, 0x78,
		0xbd, 0x10, 0x2e, 0x16, 0xc2, 0xc5, 0x42, 0xa9, 0xcb, 0x33, 0x39, 0xbd, 0x58, 0x88, 0xfe, 0x4a,
		0x21, 0x5c, 0x26, 0x24, 0x69, 0xb1, 0x52, 0x2f, 0x5a, 0xb6, 0xc5, 0xcb, 0xb6, 0x88, 0xd9, 0x16,
		0x73, 0x36, 0x98, 0x0e, 0xdd, 0x65, 0x42, 0xa4, 0x05, 0xd4, 0x58, 0x0a, 0xa5, 0xe1, 0x4a, 0x21,
		0x1c, 0xfa, 0xe5, 0x86, 0x09, 0x76, 0xb8, 0xc8, 0xa6, 0x28, 0x86, 0x2b, 0x85, 0x18, 0x0b, 0x0e,
		0xa3, 0xaa, 0x83, 0xdc, 0xb8, 0x6e, 0x11, 0xe0, 0x51, 0xd5, 0x01, 0x00, 0xbf, 0xdd, 0x00, 0x8f,
		0xaa, 0x0e, 0x48, 0x07, 0x92, 0x03, 0x39, 0xdc, 0xd0, 0x23, 0x0d, 0x82, 0xa4, 0x41, 0x91, 0x34,
		0x48, 0xa2, 0x85, 0x26, 0x62, 0x88, 0xe2, 0x8b, 0x45, 0x25, 0xc0, 0x8b, 0x82, 0xaa, 0x0e, 0xab,
		0x9e, 0x1c, 0x55, 0x1d, 0x92, 0xd9, 0x2c, 0x72, 0xf0, 0x61, 0x03, 0xc8, 0xb8, 0x9f, 0xfd, 0x0f,
		0x55, 0x1d, 0xe4, 0x0c, 0x09, 0xaa, 0x3a, 0xb0, 0x47, 0x3b, 0xa8, 0xea, 0xb0, 0x66, 0xd0, 0x86,
		0xaa, 0x0e, 0x7c, 0x7d, 0xa2, 0xaa, 0x43, 0xf6, 0x5d, 0xde, 0x36, 0x54, 0x75, 0x60, 0xb9, 0xc4,
		0x89, 0xf5, 0xd2, 0x26, 0xe8, 0x4a, 0xd0, 0x95, 0xa0, 0x2b, 0x41, 0x57, 0x42, 0x6d, 0x87, 0xcd,
		0x16, 0x96, 0xa0, 0x29, 0x6c, 0xbd, 0xae, 0x84, 0xda, 0x0e, 0x08, 0xbb, 0x37, 0x34, 0xec, 0xf6,
		0x84, 0xd3, 0xd6, 0x0d, 0xc1, 0x19, 0x7a, 0x8f, 0xbb, 0x40, 0xf8, 0x2d, 0x23, 0xfc, 0x36, 0xdb,
		0x88, 0xbc, 0x33, 0x18, 0x79, 0x9b, 0x6d, 0x04, 0xdd, 0xd4, 0xd6, 0xce, 0x77, 0xd3, 0x28, 0xe7,
		0xcd, 0xa2, 0x61, 0xc2, 0xe1, 0x41, 0x60, 0x16, 0xc7, 0x21, 0x40, 0xba, 0xf3, 0x6f, 0x8c, 0x5e,
		0x07, 0xa7, 0xf0, 0xb6, 0xc0, 0x19, 0x75, 0xf4, 0x7b, 0xd1, 0xe1, 0x73, 0x44, 0xc3, 0xe6, 0xe1,
		0x84, 0xa0, 0x01, 0x41, 0x03, 0x82, 0x06, 0xc4, 0x60, 0xf7, 0xe2, 0xc9, 0xd4, 0xc8, 0x2b, 0x08,
		0x4f, 0xa3, 0x4c, 0x0d, 0x1a, 0x50, 0x4a, 0x1a, 0x50, 0x11, 0x6c, 0x7f, 0xeb, 0x35, 0xa0, 0x6a,
		0xad, 0x56, 0x2b, 0x41, 0xf7, 0x81, 0xee, 0xb3, 0x01, 0xa1, 0x76, 0x4f, 0x08, 0x47, 0x33, 0x7b,
		0x7c, 0xc1, 0xf6, 0xb8, 0x03, 0x84, 0xdb, 0x08, 0xb7, 0x11, 0x6e, 0x23, 0xdc, 0x66, 0xb0, 0x7b,
		0xb3, 0xa7, 0xe9, 0xad, 0x96, 0x23, 0x5c, 0x97, 0x53, 0x00, 0x3a, 0x62, 0x68, 0x7b, 0x34, 0x36,
		0xb9, 0xcd, 0xc7, 0x33, 0x7b, 0x4f, 0x65, 0xc6, 0xb1, 0x5f, 0x98, 0x83, 0x8f, 0x8c, 0x7d, 0x70,
		0xe7, 0xb8, 0x86, 0x1d, 0xed, 0xde, 0x14, 0xb4, 0xa3, 0xe6, 0xdb, 0x4d, 0x51, 0x3b, 0x6a, 0x0e,
		0xff, 0x5a, 0x0c, 0xfe, 0x78, 0x2d, 0x0d, 0xde, 0x4a, 0x37, 0x05, 0xad, 0x3c, 0x7a, 0xb7, 0x54,
		0xb9, 0x29, 0x68, 0x95, 0xe6, 0xde, 0xee, 0xed, 0xed, 0x7e, 0xd4, 0xef, 0xec, 0xbd, 0x1e, 0x0e,
		0xf8, 0xf2, 0xe5, 0x9a, 0x9c, 0xd3, 0x20, 0x23, 0xdf, 0x38, 0xec, 0xed, 0x9f, 0x5d, 0x59, 0xb3,
		0xb1, 0xf7, 0x07, 0xe3, 0x7c, 0xe4, 0xa9, 0x02, 0xad, 0x1c, 0x58, 0xaa, 0x02, 0x96, 0xa2, 0xc2,
		0xd2, 0xee, 0x54, 0x0e, 0xfe, 0x6b, 0xf1, 0x43, 0x79, 0x70, 0xbc, 0xf7, 0x5a, 0x1b, 0xcc, 0xbf,
		0xf9, 0xb6, 0xec, 0x63, 0xc5, 0x0f, 0xb5, 0xc1, 0xf1, 0x8a, 0x7f, 0xa9, 0x0e, 0x8e, 0xd7, 0x6c,
		0xa3, 0x32, 0xd8, 0x5d, 0xf8, 0xa8, 0xff, 0x7e, 0x69, 0xd5, 0x17, 0xca, 0x2b, 0xbe, 0x70, 0xb8,
		0xea, 0x0b, 0x87, 0x2b, 0xbe, 0xb0, 0xf2, 0x91, 0x4a, 0x2b, 0xbe, 0x50, 0x19, 0xbc, 0x2d, 0x7c,
		0x7e, 0x77, 0xf9, 0x47, 0xab, 0x83, 0xbd, 0xb7, 0x55, 0xff, 0x56, 0x1b, 0xbc, 0x1d, 0xef, 0xed,
		0x01, 0xa8, 0xd7, 0x06, 0x6a, 0x98, 0xa7, 0x7c, 0xf3, 0xcc, 0x9f, 0xe3, 0x82, 0x12, 0x14, 0x63,
		0x85, 0x39, 0xc2, 0xb5, 0x3b, 0x4f, 0x82, 0xf1, 0x52, 0xc5, 0xb0, 0x07, 0x68, 0x41, 0xd0, 0x82,
		0xa0, 0x05, 0x41, 0x0b, 0x62, 0xb0, 0xfb, 0x7b, 0xdb, 0xee, 0x08, 0x9d, 0xf5, 0x86, 0x97, 0xe2,
		0x16, 0x38, 0x03, 0xb7, 0x7f, 0x2f, 0x21, 0x23, 0x74, 0xa6, 0x17, 0x38, 0x05, 0x24, 0x85, 0x6e,
		0xad, 0x3f, 0x40, 0x52, 0x28, 0xbd, 0xb5, 0x6f, 0x7a, 0x52, 0xe8, 0xcd, 0x24, 0x29, 0xf4, 0xdf,
		0x46, 0xdf, 0x71, 0x84, 0xe5, 0xed, 0xee, 0x1d, 0xec, 0xef, 0x1f, 0x84, 0x9f, 0x68, 0x8e, 0xbe,
		0x32, 0x8d, 0xb3, 0xee, 0x92, 0xf7, 0xc2, 0x96, 0xc9, 0xca, 0x5d, 0x32, 0x78, 0x37, 0x5c, 0x20,
		0x44, 0x7a, 0x05, 0xc4, 0xe4, 0xae, 0x10, 0x5c, 0x1a, 0x34, 0xe3, 0x68, 0xa8, 0x4e, 0x89, 0xe3,
		0xde, 0x20, 0xdc, 0x1b, 0x94, 0x23, 0x14, 0x48, 0xf3, 0xae, 0x20, 0x5c, 0x13, 0x94, 0x51, 0xeb,
		0x90, 0x76, 0x41, 0xd0, 0x0e, 0xe3, 0x04, 0x24, 0x1d, 0x78, 0xfe, 0x01, 0x8f, 0xb1, 0xf6, 0x22,
		0xaf, 0xb5, 0x68, 0x53, 0xb9, 0xfe, 0x84, 0xac, 0xf7, 0xc9, 0x35, 0xa7, 0x2c, 0xee, 0x54, 0x71,
		0x4d, 0x51, 0x84, 0x89, 0x59, 0x77, 0x42, 0xd6, 0x9b, 0x87, 0xf7, 0x47, 0x75, 0x8d, 0x11, 0x55,
		0x7d, 0x03, 0xeb, 0xda, 0xf7, 0x66, 0xc7, 0xf4, 0x5e, 0xd6, 0x1e, 0xcf, 0x90, 0x3f, 0xcd, 0x7c,
		0x7b, 0xcd, 0xf9, 0x8b, 0x56, 0xbc, 0x3d, 0xb2, 0x9a, 0x12, 0x47, 0x25, 0x99, 0x56, 0x3f, 0xc4,
		0x53, 0x2f, 0x8a, 0x34, 0x18, 0x57, 0xd7, 0x48, 0xac, 0x57, 0x24, 0xd6, 0x21, 0xe6, 0xf5, 0x85,
		0xe0, 0x87, 0xa7, 0xb4, 0xa6, 0xa3, 0x96, 0x1d, 0x57, 0x8d, 0xb1, 0x55, 0x44, 0x1c, 0xf5, 0xf1,
		0x44, 0x8f, 0xbe, 0x1f, 0x71, 0xc4, 0xe2, 0xdd, 0x3b, 0x10, 0x5b, 0x10, 0x4c, 0x22, 0xf8, 0x25,
		0x30, 0x69, 0x2a, 0xc9, 0x8e, 0x4c, 0x92, 0x23, 0x93, 0xdc, 0x92, 0x99, 0xbc, 0x9c, 0x48, 0x24,
		0x6e, 0x05, 0x7e, 0xb5, 0xd5, 0xef, 0x75, 0x4c, 0x43, 0xf7, 0x84, 0x66, 0xf6, 0xb4, 0x96, 0xf0,
		0x44, 0x70, 0x34, 0x44, 0x0b, 0x14, 0x9c, 0x27, 0xbd, 0x93, 0xfc, 0x8e, 0xc4, 0xf7, 0x3a, 0x48,
		0x76, 0x73, 0x62, 0x61, 0x43, 0x6e, 0x4e, 0x8c, 0xb9, 0xd8, 0xa8, 0x75, 0xf2, 0xfc, 0x5d, 0x9b,
		0x18, 0x6f, 0x31, 0xa6, 0xc3, 0xd3, 0x12, 0x2b, 0xd3, 0x33, 0xb5, 0xc0, 0x8a, 0xd5, 0x24, 0x06,
		0x33, 0x5a, 0x3f, 0xd5, 0x04, 0x4d, 0xd0, 0x9c, 0xeb, 0xa4, 0x51, 0xb0, 0xe8, 0xae, 0x1e, 0x22,
		0xae, 0xc9, 0xc5, 0x76, 0xda, 0x8e, 0xfe, 0x54, 0xdd, 0x80, 0x46, 0xfa, 0xa3, 0x9f, 0x8a, 0x6a,
		0xa5, 0x72, 0x58, 0xd9, 0xbe, 0xe9, 0x48, 0x49, 0xbb, 0x6a, 0xe6, 0x52, 0xbb, 0x7a, 0x79, 0xb0,
		0x3d, 0xcd, 0x36, 0x34, 0xc3, 0xee, 0xf6, 0x1c, 0xe1, 0xba, 0xa2, 0xa5, 0x75, 0x84, 0xde, 0xf6,
		0x1b, 0x1d, 0x64, 0xf8, 0x32, 0x6a, 0xb3, 0x17, 0x32, 0x61, 0xcd, 0x7b, 0x74, 0x84, 0xfb, 0x68,
		0x77, 0x5a, 0xc9, 0x83, 0xae, 0xe5, 0xcd, 0x22, 0xd4, 0x42, 0xa8, 0x85, 0x50, 0x0b, 0xa1, 0x16,
		0x42, 0x2d, 0x84, 0x5a, 0x08, 0xb5, 0x10, 0x6a, 0x6d, 0x57, 0xa8, 0x15, 0x6b, 0xcf, 0x62, 0xa5,
		0x5b, 0x88, 0xb1, 0x87, 0x81, 0xc0, 0x0a, 0x81, 0x15, 0x02, 0x2b, 0xc2, 0x84, 0xfa, 0x84, 0x89,
		0xf3, 0xc0, 0xd1, 0xc4, 0x38, 0x4a, 0xc9, 0x59, 0x57, 0xb4, 0x1b, 0x73, 0x92, 0x3e, 0x8b, 0xb6,
		0xde, 0xef, 0x78, 0x89, 0x62, 0x66, 0xb5, 0x12, 0x6f, 0x55, 0x36, 0xe1, 0x0f, 0xe0, 0x0f, 0xe0,
		0x0f, 0x62, 0x10, 0xed, 0x8f, 0x04, 0xde, 0xa0, 0x02, 0x9e, 0x0d, 0x9e, 0x9d, 0x75, 0x9e, 0x5d,
		0x29, 0x80, 0x64, 0x6f, 0x24, 0xc9, 0x26, 0xbc, 0x71, 0x93, 0xf0, 0x66, 0x4d, 0x02, 0x44, 0x9a,
		0xba, 0x29, 0x53, 0x79, 0xf7, 0x46, 0x45, 0xc5, 0x1d, 0xa5, 0x79, 0x14, 0x2b, 0x14, 0xe9, 0xdf,
		0xc4, 0xa7, 0x00, 0x39, 0x6f, 0xc1, 0x64, 0x3b, 0xe8, 0x37, 0x7f, 0xab, 0x65, 0xb4, 0x49, 0xc0,
		0xea, 0x05, 0xb5, 0x8b, 0x48, 0xed, 0x7e, 0x99, 0x56, 0xcb, 0xfe, 0x45, 0xcc, 0xeb, 0x46, 0x8d,
		0xa6, 0x49, 0xea, 0x8a, 0x1f, 0x0b, 0xa0, 0x75, 0xa0, 0x75, 0xa0, 0x75, 0xf2, 0x68, 0x1d, 0xf6,
		0x4f, 0xc1, 0xeb, 0xb6, 0x64, 0xff, 0xb4, 0x00, 0x62, 0x07, 0x62, 0x07, 0x62, 0x07, 0x62, 0x07,
		0x62, 0x07, 0x62, 0xc7, 0x43, 0xec, 0xb6, 0xec, 0x48, 0xf3, 0x34, 0x7f, 0x3c, 0x18, 0x9d, 0xc0,
		0xe3, 0x3a, 0x72, 0x1c, 0xe9, 0x54, 0xae, 0xee, 0x89, 0xf8, 0x47, 0x09, 0x87, 0x5f, 0x97, 0x7c,
		0x92, 0xb0, 0x84, 0x93, 0x84, 0xa9, 0x42, 0x3f, 0x4e, 0x12, 0x26, 0x09, 0x50, 0x70, 0x92, 0x10,
		0xf2, 0x0c, 0xe4, 0x19, 0xc8, 0x33, 0x90, 0x67, 0x20, 0xcf, 0xc4, 0x95, 0x67, 0x90, 0xde, 0x9e,
		0x7d, 0x8a, 0x87, 0x83, 0x77, 0x88, 0x4c, 0x10, 0x99, 0x20, 0x32, 0x41, 0x64, 0x82, 0xc8, 0x04,
		0x91, 0x09, 0x22, 0x93, 0x2d, 0x8b, 0x4c, 0x70, 0x4e, 0x0d, 0x71, 0x08, 0xe2, 0x90, 0xec, 0xc4,
		0x21, 0xe9, 0x9f, 0x53, 0xc3, 0xb1, 0xae, 0xb0, 0x55, 0x1c, 0xeb, 0x02, 0x7c, 0x02, 0x3e, 0xf3,
		0x46, 0xe3, 0x70, 0xac, 0x0b, 0x2c, 0x0e, 0xc7, 0xba, 0x40, 0xe1, 0x32, 0x40, 0xe1, 0x90, 0xfd,
		0xb7, 0x1c, 0xa6, 0x91, 0xfd, 0x27, 0x37, 0x38, 0x58, 0x1a, 0x24, 0x20, 0xfb, 0x2f, 0x73, 0x4c,
		0x08, 0xa7, 0xa0, 0xc0, 0x82, 0xc0, 0x82, 0xc0, 0x82, 0x08, 0x58, 0x10, 0x36, 0xb3, 0x40, 0x83,
		0x70, 0x0a, 0x0a, 0x3c, 0x08, 0x3c, 0x08, 0x3c, 0x08, 0x3c, 0x08, 0x3c, 0x48, 0x2a, 0x0f, 0xda,
		0xe6, 0x43, 0x43, 0x31, 0xae, 0x21, 0xc6, 0x35, 0x85, 0x31, 0x13, 0x07, 0xd6, 0xb8, 0xad, 0xf0,
		0xab, 0x6e, 0x7c, 0x1d, 0x37, 0x2c, 0xf9, 0xce, 0xc2, 0x68, 0x5e, 0x6b, 0x86, 0xbc, 0x47, 0xb9,
		0x4f, 0x33, 0xeb, 0xb7, 0x15, 0x5a, 0xc2, 0xf3, 0xe7, 0x7a, 0x2b, 0x2f, 0x2c, 0x1c, 0xff, 0xf6,
		0xbc, 0xdc, 0x59, 0x28, 0x2c, 0xcf, 0x31, 0x85, 0x1b, 0xff, 0xa4, 0xe1, 0xb8, 0x81, 0xed, 0xb8,
		0xb5, 0x30, 0xba, 0x69, 0x53, 0x85, 0x61, 0xd9, 0x3f, 0x6e, 0x18, 0xd9, 0xf4, 0xe5, 0x44, 0x0f,
		0xb1, 0x4f, 0x1c, 0xfa, 0x96, 0x4d, 0x90, 0x22, 0x37, 0x6c, 0x26, 0x99, 0xac, 0x59, 0xdc, 0x10,
		0x59, 0x33, 0xfe, 0xf2, 0x81, 0xb2, 0x19, 0x7b, 0x79, 0xa5, 0x23, 0x6e, 0xc6, 0x5d, 0x76, 0x61,
		0x03, 0x31, 0x6f, 0xd3, 0x5d, 0x69, 0x7e, 0xb1, 0x6e, 0xd7, 0x25, 0x5e, 0x90, 0x64, 0x0b, 0x93,
		0x72, 0x81, 0xf2, 0x2c, 0x54, 0x19, 0xf2, 0x03, 0xc9, 0xc2, 0x95, 0xab, 0x3d, 0x50, 0x2c, 0x64,
		0x22, 0x55, 0x21, 0xa1, 0xe5, 0x25, 0x5d, 0xe0, 0x33, 0xcc, 0x49, 0x6f, 0xb5, 0x1c, 0xe1, 0xba,
		0x74, 0x56, 0x32, 0xcd, 0xad, 0xc6, 0x8d, 0x13, 0x4d, 0x67, 0xb2, 0xad, 0x46, 0x36, 0x28, 0xe0,
		0x80, 0x04, 0x5e, 0x68, 0xe0, 0x82, 0x08, 0x76, 0xa8, 0x60, 0x87, 0x0c, 0x76, 0xe8, 0xa0, 0x81,
		0x10, 0x22, 0x28, 0x09, 0x7f, 0x6d, 0xe2, 0x0d, 0x51, 0x89, 0x30, 0x30, 0x13, 0x0d, 0x7c, 0x24,
		0x6c, 0xb3, 0xa1, 0x7b, 0x9e, 0x70, 0xac, 0xc4, 0xbb, 0x16, 0x0b, 0x0d, 0xdf, 0x14, 0xb4, 0x23,
		0x5d, 0x6b, 0x9f, 0x68, 0x5f, 0x9a, 0xaf, 0xa5, 0xc1, 0xee, 0xf1, 0xec, 0xeb, 0xbd, 0xd7, 0xca,
		0x80, 0xce, 0xae, 0x9a, 0x94, 0x03, 0x72, 0x79, 0x75, 0xf6, 0x37, 0xdb, 0xa8, 0xfc, 0xf3, 0xfe,
		0xb0, 0xfc, 0x41, 0x38, 0x2e, 0x99, 0x5a, 0x6f, 0x44, 0x65, 0xcb, 0x16, 0xda, 0x25, 0x2f, 0x63,
		0x46, 0x0f, 0x5b, 0x14, 0x9b, 0xdb, 0x4f, 0x1d, 0xdd, 0xa2, 0x8f, 0x58, 0x82, 0x56, 0x11, 0xaa,
		0x20, 0x54, 0x41, 0xa8, 0xb2, 0x95, 0xa1, 0x8a, 0x8f, 0x94, 0x8e, 0x68, 0x73, 0x84, 0x29, 0x35,
		0xda, 0x30, 0x25, 0xd8, 0x0c, 0xdc, 0xdf, 0x3f, 0x98, 0xfb, 0x9f, 0x0f, 0x60, 0x6e, 0xf0, 0xff,
		0xa3, 0x7a, 0x8a, 0xc1, 0xdf, 0x35, 0xb3, 0xa5, 0xc2, 0xf9, 0x65, 0xc4, 0xf9, 0xa5, 0x2a, 0x1c,
		0x10, 0x0f, 0x3c, 0xd3, 0xe6, 0x74, 0xb0, 0x21, 0x7b, 0x30, 0xda, 0xdd, 0x0a, 0xfe, 0x8c, 0x57,
		0x1e, 0x94, 0x6e, 0xec, 0x13, 0x8c, 0xbb, 0x1a, 0x54, 0x31, 0x6c, 0xeb, 0x14, 0xc2, 0x79, 0x58,
		0x8b, 0x28, 0x6c, 0x12, 0x92, 0xaa, 0xdc, 0x60, 0x04, 0x92, 0x2a, 0x24, 0xd5, 0x35, 0x97, 0xbb,
		0xe6, 0x47, 0x12, 0xe4, 0x14, 0x65, 0xb6, 0x79, 0x5a, 0xae, 0x52, 0xdc, 0x52, 0xae, 0x62, 0xb6,
		0x41, 0x53, 0x52, 0xa0, 0x29, 0x66, 0x7b, 0x53, 0x19, 0x0a, 0x15, 0x98, 0x84, 0x0d, 0x12, 0x6d,
		0xc8, 0xae, 0x5c, 0x04, 0x24, 0x1b, 0xb4, 0xcc, 0xb0, 0xc2, 0x06, 0x2f, 0x9c, 0x30, 0xc3, 0x0e,
		0x37, 0xdc, 0xb0, 0x23, 0x0d, 0x7e, 0xa4, 0xc1, 0x90, 0x0c, 0x38, 0xa2, 0x85, 0x25, 0x62, 0x78,
		0x62, 0x83, 0x29, 0x06, 0xca, 0x23, 0x8d, 0x0a, 0xbd, 0x07, 0x62, 0x05, 0xa6, 0xe6, 0xb9, 0xc0,
		0x4c, 0x06, 0xa8, 0x49, 0x03, 0x37, 0x59, 0x20, 0x27, 0x1d, 0xec, 0xa4, 0x83, 0x9e, 0x4c, 0xf0,
		0xe3, 0x01, 0x41, 0x26, 0x30, 0x0c, 0x07, 0x86, 0x5c, 0x5d, 0x5e, 0xb9, 0x5a, 0xe8, 0xd5, 0xe6,
		0x95, 0x11, 0x58, 0x8d, 0xb1, 0x8f, 0x46, 0xa8, 0xfe, 0xf9, 0x66, 0x74, 0x1c, 0x02, 0xb2, 0x3b,
		0xff, 0xc6, 0xe8, 0x75, 0x70, 0x80, 0x24, 0x57, 0x26, 0xc1, 0x24, 0x57, 0x2f, 0xf4, 0xc3, 0x2e,
		0x5f, 0xf3, 0xaf, 0x4c, 0x86, 0x29, 0x50, 0xdd, 0xfe, 0xbd, 0xc4, 0x80, 0x62, 0xa6, 0x37, 0xc4,
		0x14, 0x88, 0x29, 0x10, 0x53, 0x20, 0xa6, 0x40, 0x4c, 0x91, 0xd1, 0x98, 0xe2, 0x66, 0x12, 0x53,
		0xfc, 0xdb, 0xe8, 0x3b, 0x8e, 0xb0, 0xbc, 0xdd, 0xbd, 0x83, 0xfd, 0xfd, 0x83, 0xf0, 0x13, 0xcd,
		0xd1, 0x57, 0xa6, 0x71, 0xdd, 0x5d, 0xf2, 0x5e, 0xd8, 0x72, 0x4b, 0x3c, 0x23, 0x3c, 0xd9, 0xd4,
		0xf0, 0x24, 0xd3, 0x7a, 0x4c, 0xfd, 0x39, 0x28, 0x84, 0x72, 0x43, 0xfe, 0xb3, 0xf9, 0x25, 0x41,
		0xdb, 0xd0, 0xc4, 0xb3, 0x77, 0xec, 0x89, 0x8e, 0xe8, 0x0a, 0xcf, 0x79, 0xd1, 0x6c, 0x4b, 0x33,
		0x1e, 0x83, 0xaa, 0x44, 0x52, 0x64, 0xc2, 0xa0, 0xd2, 0x8b, 0x04, 0x9d, 0x30, 0xeb, 0x12, 0x61,
		0x93, 0x7a, 0xcb, 0x86, 0x17, 0x5b, 0x24, 0x26, 0x90, 0x4c, 0x80, 0x7e, 0x66, 0x0b, 0x95, 0x24,
		0xb1, 0x84, 0x6f, 0x4e, 0x09, 0x21, 0x26, 0xe6, 0xbd, 0xb6, 0xeb, 0x13, 0xa7, 0x18, 0xf7, 0xde,
		0xae, 0x1d, 0x6c, 0x70, 0x6d, 0x21, 0x95, 0xb0, 0x85, 0x24, 0x8d, 0x09, 0x61, 0x0b, 0x69, 0xf3,
		0x42, 0x16, 0x6c, 0x21, 0x41, 0xee, 0x81, 0xdc, 0x03, 0xb9, 0x07, 0x72, 0x0f, 0xe4, 0x1e, 0x09,
		0x72, 0x0f, 0xff, 0x16, 0x12, 0x76, 0x44, 0x16, 0x03, 0x7b, 0xec, 0x88, 0xc0, 0x45, 0xc2, 0x45,
		0xc2, 0x45, 0xc2, 0x45, 0xe6, 0xc0, 0x45, 0xe6, 0x6a, 0x47, 0x64, 0xcb, 0xd8, 0xf2, 0xe6, 0xab,
		0xa9, 0x31, 0x0a, 0xf2, 0xca, 0x9b, 0xd2, 0xc1, 0x56, 0x1c, 0x82, 0x4d, 0xdd, 0x08, 0x54, 0x52,
		0xcd, 0x7a, 0x8d, 0x9a, 0xc3, 0xd7, 0xfe, 0xb3, 0xdd, 0xd5, 0xfd, 0x67, 0xba, 0x3b, 0x1b, 0x3f,
		0xc9, 0xe4, 0x6f, 0xdf, 0x04, 0x91, 0xdb, 0xc5, 0xe9, 0xdf, 0xd4, 0x2d, 0x8d, 0xe2, 0x08, 0x67,
		0x7c, 0x9b, 0xca, 0xe3, 0xf1, 0x63, 0xca, 0x12, 0x6f, 0x0c, 0x35, 0x9d, 0x88, 0x98, 0x1f, 0x8e,
		0x20, 0x67, 0x8f, 0x86, 0xe1, 0x08, 0x72, 0x4a, 0x9c, 0x88, 0x81, 0xfb, 0x50, 0x72, 0x9c, 0xe9,
		0xfa, 0x25, 0xa3, 0x2a, 0x25, 0xd3, 0x78, 0x92, 0x43, 0x8c, 0xa5, 0xd9, 0x59, 0x27, 0xdd, 0x49,
		0x27, 0x2f, 0xed, 0x50, 0x02, 0xae, 0x02, 0x57, 0x73, 0x89, 0xab, 0x64, 0xa5, 0x1d, 0xf4, 0x07,
		0x41, 0x5f, 0xd0, 0x41, 0x27, 0x4b, 0x91, 0x43, 0xc9, 0x39, 0x94, 0x9c, 0xe3, 0x86, 0x08, 0x76,
		0xa8, 0xc8, 0xa6, 0x56, 0xc3, 0x57, 0x72, 0xae, 0x6f, 0x5a, 0x5e, 0xb5, 0xcc, 0x50, 0x71, 0x8e,
		0xb2, 0x2e, 0x2e, 0xcd, 0xf5, 0xa2, 0xf3, 0xff, 0x31, 0x08, 0xa0, 0x94, 0xd7, 0x8f, 0x2e, 0x34,
		0x4e, 0x7c, 0x1d, 0xe9, 0x42, 0xfb, 0x5c, 0x37, 0x62, 0x2e, 0xda, 0x1e, 0xf5, 0x0d, 0x99, 0x4c,
		0xcb, 0x6e, 0x76, 0x6a, 0xf5, 0x67, 0xfe, 0xa9, 0x2d, 0x7e, 0x2c, 0x97, 0xab, 0xb5, 0x72, 0xb9,
		0x50, 0x3b, 0xac, 0x15, 0x8e, 0x2a, 0x95, 0x62, 0xb5, 0x58, 0xc1, 0x6c, 0x4b, 0x81, 0x6a, 0xfa,
		0xd6, 0x9a, 0x1b, 0x54, 0xef, 0x38, 0x90, 0x41, 0x35, 0x8f, 0xd2, 0x0d, 0xcd, 0xde, 0x92, 0x34,
		0x6c, 0x1b, 0x81, 0x28, 0x02, 0x51, 0x04, 0xa2, 0x5b, 0x19, 0x88, 0x0a, 0xab, 0xdf, 0x15, 0xce,
		0x70, 0x77, 0x88, 0xa1, 0xfe, 0x71, 0x99, 0xb0, 0xcd, 0xba, 0xd5, 0xef, 0xd2, 0x2f, 0x85, 0x6b,
		0xfb, 0xca, 0x73, 0x4c, 0xeb, 0x81, 0x67, 0x6b, 0xbe, 0xe0, 0x8f, 0xf1, 0xd5, 0xf5, 0xc9, 0xf5,
		0xd9, 0x29, 0xc7, 0xd1, 0x8d, 0xa2, 0xdf, 0xfc, 0xe7, 0xff, 0x5e, 0x9c, 0x7c, 0x3d, 0x3b, 0x55,
		0x33, 0x9d, 0x03, 0x71, 0x6d, 0x9f, 0x05, 0x8b, 0x95, 0x61, 0x8c, 0xc7, 0xbf, 0x9f, 0xfc, 0xbc,
		0xd0, 0x10, 0x82, 0x87, 0x93, 0x77, 0xac, 0x14, 0x36, 0x3b, 0xbd, 0x21, 0x1b, 0xf1, 0xce, 0x93,
		0xc9, 0x10, 0xe8, 0x3c, 0x99, 0x88, 0x70, 0x10, 0xe1, 0x20, 0xc2, 0xd9, 0xce, 0x08, 0xe7, 0xc9,
		0x32, 0x35, 0xb3, 0xc5, 0x10, 0xdc, 0xd4, 0x20, 0xb5, 0x71, 0xe9, 0x31, 0x10, 0x5f, 0xe4, 0x86,
		0x67, 0x8a, 0x3c, 0xa9, 0xad, 0x5a, 0xab, 0xd5, 0x4a, 0x90, 0xd7, 0x24, 0x06, 0x88, 0x0a, 0xe4,
		0xb5, 0x15, 0x93, 0x88, 0x7b, 0x50, 0x11, 0x7e, 0x22, 0xfc, 0x44, 0xf8, 0x89, 0x7b, 0x50, 0x15,
		0xdc, 0x83, 0xba, 0x6c, 0x40, 0x70, 0x0f, 0x6a, 0x26, 0xfd, 0x36, 0xae, 0x01, 0x85, 0xa7, 0x86,
		0xa7, 0x86, 0xa7, 0xa6, 0xb5, 0x5b, 0x5c, 0x03, 0xca, 0x8e, 0xfd, 0x38, 0x07, 0x17, 0xeb, 0x1c,
		0x1c, 0xc1, 0xf1, 0xda, 0x74, 0x4e, 0x48, 0x90, 0x38, 0x6a, 0x4a, 0x07, 0x8d, 0x73, 0x67, 0x69,
		0x3b, 0x5e, 0x9c, 0x8f, 0xc8, 0x08, 0x1c, 0x6e, 0xf1, 0xb9, 0xb3, 0x00, 0x48, 0xd2, 0x82, 0xd3,
		0x1d, 0x89, 0x93, 0xed, 0x2f, 0xb6, 0x39, 0x11, 0x42, 0x49, 0x80, 0xa2, 0xea, 0xb9, 0xe9, 0x7a,
		0x27, 0x9e, 0x97, 0xec, 0x60, 0x8d, 0xfa, 0xd5, 0xb4, 0xea, 0x1d, 0xe1, 0xaf, 0xa8, 0x84, 0x0a,
		0xbd, 0xfa, 0x55, 0x7f, 0x9e, 0x6a, 0x89, 0x36, 0x8d, 0x57, 0xbd, 0x74, 0x5a, 0xc2, 0x11, 0xad,
		0x4f, 0xfe, 0x08, 0x5a, 0xfd, 0x4e, 0x87, 0xa2, 0xa9, 0xef, 0xae, 0x70, 0x12, 0x6d, 0x19, 0xc4,
		0x35, 0x04, 0xa2, 0xe0, 0x47, 0x5e, 0xd0, 0xa3, 0x26, 0x3a, 0x98, 0x19, 0xed, 0xa8, 0x7f, 0x3c,
		0x2c, 0x88, 0xbe, 0x92, 0xa3, 0x7d, 0x23, 0xe2, 0x54, 0x27, 0x9d, 0x62, 0x19, 0x53, 0x1b, 0x6d,
		0xa0, 0xd7, 0x1f, 0xae, 0xf5, 0x3e, 0xb9, 0xe6, 0x80, 0xc6, 0x1d, 0x48, 0xce, 0x01, 0x8c, 0xb0,
		0x1a, 0x22, 0x58, 0xff, 0x7a, 0xd3, 0xf1, 0xfe, 0xe0, 0xae, 0x31, 0xb0, 0xaa, 0xd5, 0xd2, 0x7a,
		0x8e, 0xfd, 0xfc, 0xb2, 0xf6, 0x90, 0x86, 0x61, 0x45, 0xf8, 0xcd, 0x35, 0xa7, 0x2f, 0xda, 0x11,
		0xe8, 0xc8, 0xa1, 0x7c, 0x9c, 0x90, 0x7d, 0x3a, 0x34, 0x17, 0x4f, 0xbd, 0x28, 0xfe, 0x37, 0x6e,
		0xfc, 0x9d, 0x38, 0xce, 0x4e, 0x1c, 0x4f, 0xcf, 0xc7, 0xcd, 0xc1, 0x0f, 0x4f, 0x69, 0x49, 0x47,
		0x3d, 0x0c, 0x1c, 0xf7, 0xea, 0xe5, 0x64, 0x57, 0x2b, 0xc7, 0x3c, 0xbd, 0x1f, 0x9b, 0x8d, 0x26,
		0x61, 0x9f, 0x09, 0x4c, 0x9a, 0x8a, 0x5a, 0x92, 0x51, 0x49, 0x32, 0xea, 0x98, 0xcc, 0xe4, 0xe5,
		0x84, 0x09, 0x71, 0xcf, 0xc5, 0xab, 0xad, 0x7e, 0xaf, 0x63, 0x1a, 0xba, 0x27, 0x34, 0xb3, 0xa7,
		0xb5, 0x84, 0x27, 0x82, 0x4c, 0x1b, 0x2d, 0x28, 0xd2, 0xf4, 0xa4, 0x77, 0xe2, 0x4f, 0xe3, 0xd8,
		0x92, 0xde, 0xeb, 0x20, 0x2e, 0x07, 0x4a, 0x24, 0xf9, 0x24, 0x96, 0x7a, 0x28, 0x24, 0x1e, 0x82,
		0xc5, 0x46, 0xad, 0xe7, 0x90, 0xeb, 0x38, 0xe4, 0xfa, 0x0d, 0xcd, 0x62, 0x4c, 0x87, 0xb7, 0x27,
		0x16, 0x67, 0x66, 0x4e, 0x9a, 0x17, 0xab, 0x49, 0x0c, 0x66, 0xb4, 0x7e, 0xaa, 0x09, 0x9a, 0xa0,
		0x49, 0x6f, 0x25, 0x90, 0xaa, 0x28, 0xd3, 0x57, 0xa9, 0x4f, 0x86, 0xb3, 0x25, 0x2f, 0xd2, 0x27,
		0x2b, 0x52, 0x6c, 0xe2, 0x53, 0xa6, 0x9b, 0x86, 0x53, 0x51, 0xad, 0x54, 0x0e, 0x2b, 0xdb, 0x37,
		0x1d, 0x29, 0x69, 0x99, 0xcd, 0x5c, 0x4a, 0x58, 0xe4, 0x17, 0x1a, 0xc6, 0x10, 0x82, 0x62, 0x04,
		0xcb, 0xc2, 0x0a, 0x28, 0x7b, 0xe2, 0x28, 0x6b, 0xd4, 0x4e, 0xcc, 0x49, 0xf8, 0x2c, 0xda, 0x7a,
		0xbf, 0xe3, 0x25, 0xc2, 0x72, 0x35, 0xb0, 0xfa, 0x78, 0xae, 0xb8, 0x89, 0x20, 0x10, 0x41, 0x20,
		0x82, 0xc0, 0x88, 0x16, 0x73, 0x6f, 0xdb, 0x1d, 0x91, 0x68, 0xf3, 0x3c, 0x94, 0x26, 0x8a, 0x52,
		0x87, 0x40, 0x3c, 0x7b, 0x8e, 0xae, 0xf5, 0x2d, 0xd7, 0x4b, 0x04, 0x7e, 0x41, 0x5b, 0x8e, 0x68,
		0x0b, 0x47, 0x58, 0x46, 0x26, 0x02, 0xd1, 0x90, 0xf3, 0x3a, 0x7a, 0xdb, 0xd3, 0x4c, 0xe1, 0xb5,
		0xb5, 0x7b, 0xe1, 0xba, 0x81, 0x7d, 0x0e, 0xe5, 0x4e, 0x4d, 0x77, 0x7a, 0x9a, 0xd5, 0xd2, 0x8a,
		0x87, 0xb7, 0xd6, 0xb7, 0x2f, 0xa7, 0x4a, 0xad, 0x7c, 0x58, 0x3a, 0x56, 0x3e, 0xfd, 0xd5, 0x50,
		0xbe, 0x36, 0xce, 0xaf, 0xb4, 0x4f, 0xba, 0x2b, 0x5a, 0x4a, 0xdd, 0x7b, 0x14, 0x8e, 0x25, 0x3c,
		0xe5, 0x47, 0xe3, 0x22, 0xe3, 0x9b, 0xfd, 0x93, 0xe1, 0xcf, 0xd3, 0x7e, 0x3f, 0xe5, 0xfc, 0x20,
		0xce, 0x43, 0x9c, 0xf7, 0xfe, 0x63, 0x9b, 0x3d, 0xad, 0x6b, 0xdf, 0x9b, 0x1d, 0xd3, 0x7b, 0xd1,
		0xbc, 0x47, 0x47, 0xb8, 0x8f, 0x76, 0xa7, 0x95, 0x3c, 0xec, 0x5b, 0xde, 0x2c, 0xa2, 0x29, 0x44,
		0x53, 0x88, 0xa6, 0x20, 0xa9, 0x41, 0x52, 0x83, 0xa4, 0x06, 0x49, 0x0d, 0xa1, 0xd6, 0x76, 0x85,
		0x5a, 0x56, 0x4b, 0x73, 0xfb, 0xbd, 0xe0, 0x89, 0x93, 0x0c, 0xc1, 0x74, 0xa6, 0xca, 0x74, 0x7b,
		0x90, 0xd8, 0x10, 0x14, 0x22, 0x28, 0x84, 0xc4, 0x96, 0x6d, 0x89, 0x6d, 0x93, 0x7c, 0xc0, 0x96,
		0xe5, 0xd7, 0x8e, 0x33, 0x23, 0x47, 0xe7, 0x1a, 0xd8, 0xb2, 0x6b, 0x23, 0x25, 0x9f, 0xc6, 0xb9,
		0x13, 0x27, 0xd1, 0x1d, 0x38, 0x89, 0xb3, 0xe6, 0x4a, 0xc8, 0x9a, 0x4b, 0xd5, 0x91, 0x20, 0x6b,
		0x2e, 0x89, 0xe3, 0x41, 0xd6, 0x1c, 0xa2, 0x39, 0x44, 0x73, 0x90, 0xf8, 0x20, 0xf1, 0x41, 0xe2,
		0x83, 0xc4, 0xb7, 0xb9, 0x12, 0x1f, 0x92, 0xcc, 0xa0, 0x80, 0x21, 0x66, 0x42, 0xcc, 0x04, 0x05,
		0x8c, 0x7a, 0x08, 0x90, 0x64, 0x86, 0x24, 0x33, 0x59, 0x50, 0xb1, 0x14, 0x32, 0x90, 0x64, 0x96,
		0xf1, 0xb0, 0x08, 0x39, 0x59, 0x08, 0x3e, 0x10, 0x7c, 0x40, 0xb0, 0x81, 0x60, 0x03, 0xc1, 0x06,
		0x82, 0x0d, 0x04, 0x9b, 0xec, 0x44, 0x26, 0x48, 0x61, 0x82, 0x80, 0x83, 0x18, 0x0a, 0x31, 0xd4,
		0x66, 0x08, 0x38, 0xc8, 0xf8, 0x59, 0x37, 0xe3, 0x27, 0x46, 0x49, 0x68, 0x94, 0xd3, 0x8b, 0x58,
		0x49, 0x4e, 0x59, 0xaf, 0x9a, 0xde, 0x45, 0xab, 0x11, 0x34, 0x2a, 0xb1, 0x98, 0x5e, 0xb4, 0x2c,
		0xab, 0x58, 0xd9, 0x55, 0xb1, 0xcb, 0xe8, 0x95, 0xe4, 0x94, 0xd1, 0x8b, 0x5e, 0xe1, 0x7a, 0x73,
		0x2a, 0xe9, 0x45, 0xae, 0x40, 0x9d, 0x72, 0x31, 0x3d, 0xdd, 0x7a, 0x31, 0x74, 0xd7, 0xd3, 0x1e,
		0x74, 0x4f, 0xfc, 0xd2, 0x5f, 0xb4, 0xae, 0x6e, 0xc4, 0x4f, 0x11, 0x5c, 0xd6, 0x58, 0xbc, 0x84,
		0xc1, 0x02, 0xca, 0xec, 0x49, 0x0d, 0xdf, 0xb6, 0x2a, 0x61, 0x30, 0x76, 0x58, 0x46, 0x74, 0x73,
		0x58, 0x92, 0x1b, 0xc2, 0x12, 0xdf, 0x04, 0xc6, 0x72, 0xe3, 0x57, 0x33, 0xce, 0x0f, 0xa1, 0xb8,
		0xc1, 0x8b, 0xe9, 0xa6, 0xae, 0x66, 0x06, 0xd2, 0xb5, 0xdb, 0x1d, 0xdb, 0x6e, 0x69, 0x7d, 0xeb,
		0xa7, 0x65, 0xff, 0xb2, 0xb4, 0xbe, 0x65, 0x06, 0xd0, 0xea, 0xf6, 0x63, 0x0b, 0x0a, 0xa1, 0xf5,
		0xbe, 0xdb, 0x72, 0xd4, 0x04, 0xdc, 0x04, 0x92, 0x42, 0x1c, 0x29, 0xa1, 0x09, 0x9f, 0x02, 0x9f,
		0xb2, 0x71, 0x3e, 0x25, 0x3e, 0xc5, 0x8f, 0x49, 0xed, 0x79, 0x60, 0x2b, 0x70, 0x8d, 0x0f, 0xa6,
		0xf5, 0xa0, 0x79, 0x66, 0x37, 0xc1, 0x71, 0x93, 0xb9, 0x76, 0xb6, 0x63, 0xc9, 0xc7, 0xbf, 0x1b,
		0x68, 0xf3, 0x57, 0x7d, 0xec, 0xbb, 0x7d, 0xb2, 0xbe, 0xf0, 0x63, 0xef, 0x8f, 0x26, 0xd8, 0x17,
		0x4d, 0xb8, 0x1f, 0x9a, 0xec, 0x86, 0x99, 0xe4, 0xaa, 0x35, 0xd1, 0xbe, 0x27, 0xf9, 0x06, 0x1b,
		0xdd, 0xc6, 0xda, 0x20, 0xd9, 0xd5, 0x3b, 0x74, 0x43, 0x4c, 0xb0, 0x9f, 0x99, 0xe5, 0x61, 0x96,
		0x24, 0x86, 0x37, 0x33, 0xe2, 0x99, 0x3b, 0x42, 0x77, 0x2c, 0xd3, 0x7a, 0x48, 0xe6, 0x97, 0xc3,
		0x56, 0xe0, 0x95, 0xe1, 0x95, 0x37, 0xd4, 0x2b, 0x6f, 0x4c, 0x38, 0xfe, 0x6c, 0x76, 0xfb, 0x5d,
		0x6d, 0x7c, 0xcb, 0x53, 0x82, 0x75, 0x3f, 0xdb, 0x10, 0x96, 0x3e, 0x96, 0x3e, 0x02, 0x72, 0x04,
		0xe4, 0x08, 0xc8, 0x11, 0x90, 0x23, 0x20, 0x8f, 0xf8, 0xc9, 0xfc, 0xe5, 0x67, 0x44, 0x48, 0x6a,
		0x59, 0x23, 0x8f, 0x62, 0x27, 0xc1, 0xe0, 0xc4, 0x39, 0x13, 0xa6, 0xfe, 0x7a, 0x14, 0xeb, 0x6f,
		0x32, 0xc5, 0xc8, 0x7a, 0x08, 0xef, 0x2f, 0xf6, 0x5e, 0x7a, 0x42, 0xf9, 0xb7, 0xf2, 0xa7, 0xef,
		0x1f, 0x4d, 0xcd, 0x7f, 0xe5, 0x1e, 0x9f, 0x97, 0x7e, 0x5c, 0x9d, 0xfd, 0x79, 0x6b, 0xd9, 0x8e,
		0xf2, 0xce, 0xe7, 0x1a, 0xa5, 0xc6, 0x5a, 0x9f, 0x3b, 0x3f, 0x5c, 0xe3, 0x63, 0x9f, 0xeb, 0x5f,
		0x4e, 0xbe, 0x9f, 0x5f, 0xdf, 0x9d, 0x5d, 0x5c, 0x5d, 0x9f, 0x5c, 0x9c, 0xd6, 0xff, 0x94, 0x9c,
		0x90, 0x11, 0x8c, 0x79, 0x9a, 0xe9, 0x18, 0xf9, 0x98, 0x14, 0x96, 0xb0, 0xff, 0xb3, 0x70, 0x0d,
		0xc7, 0xec, 0x79, 0x89, 0xf6, 0x09, 0xcf, 0xf5, 0x17, 0xe1, 0x28, 0x25, 0x65, 0xf8, 0x73, 0xfa,
		0x4e, 0x00, 0x44, 0x4a, 0x4f, 0x77, 0xf4, 0xae, 0xf0, 0x84, 0xe3, 0x2a, 0xa6, 0x65, 0x74, 0xfa,
		0x2d, 0xd1, 0x52, 0xfc, 0xa9, 0xbe, 0xb5, 0x74, 0x65, 0x04, 0x1d, 0xca, 0x18, 0x3a, 0x14, 0xd3,
		0x55, 0x74, 0x65, 0xdc, 0x4e, 0xf8, 0xae, 0xed, 0x28, 0xfa, 0xad, 0x65, 0xd8, 0xdd, 0x7b, 0xd3,
		0x12, 0x2d, 0xc5, 0x1f, 0xba, 0xf0, 0x1f, 0xa3, 0x5a, 0x4c, 0x82, 0x30, 0x7b, 0xda, 0x58, 0x5b,
		0x53, 0x03, 0x16, 0x23, 0x7a, 0xa3, 0x88, 0xb1, 0x67, 0x6c, 0x37, 0x9d, 0xb1, 0x4f, 0xd7, 0x29,
		0xee, 0x24, 0x73, 0xda, 0xef, 0xf9, 0x8d, 0x88, 0xce, 0x94, 0xde, 0x89, 0xaa, 0x6b, 0xa5, 0x0f,
		0xbe, 0x93, 0xd3, 0xf8, 0xfb, 0x39, 0x5a, 0x3d, 0x86, 0xbf, 0x19, 0x1d, 0x35, 0x28, 0x48, 0x15,
		0x3e, 0xaa, 0xd6, 0xb3, 0x3b, 0xa6, 0xb1, 0x8e, 0x58, 0x30, 0x39, 0x2d, 0xb9, 0xa2, 0x81, 0x77,
		0x66, 0x64, 0xbd, 0x3c, 0xc6, 0xb5, 0x45, 0x80, 0x28, 0xa4, 0x3f, 0x1e, 0xc9, 0x8f, 0x8a, 0x36,
		0xb1, 0x49, 0x7c, 0x6c, 0x40, 0x89, 0x4d, 0xd2, 0x93, 0xc5, 0x64, 0xeb, 0xe6, 0x1d, 0xaa, 0x7a,
		0xaf, 0xd7, 0x79, 0x19, 0x1a, 0x48, 0x8c, 0xfb, 0xa6, 0x67, 0xbe, 0xbd, 0x19, 0x77, 0x4e, 0x3b,
		0x3d, 0xbb, 0xb3, 0x95, 0x99, 0xb2, 0xc1, 0x0f, 0xc7, 0x9d, 0xd3, 0x74, 0xa6, 0x9b, 0x19, 0xd1,
		0x34, 0xa2, 0x49, 0x6f, 0x8f, 0x62, 0x1a, 0xcd, 0xe4, 0xe5, 0xc8, 0xa5, 0xf1, 0xab, 0x67, 0x0e,
		0xb3, 0xfe, 0x34, 0xf1, 0xdc, 0xfb, 0xff, 0xd9, 0xfb, 0xf7, 0xe7, 0xb4, 0x91, 0xa5, 0x7f, 0x1c,
		0xff, 0x3d, 0x7f, 0x85, 0x8a, 0x3a, 0x55, 0x9b, 0x54, 0x45, 0xe1, 0x62, 0x7c, 0xad, 0x3a, 0xf5,
		0x2d, 0x62, 0x2b, 0xbb, 0xbc, 0x17, 0x1b, 0x0e, 0xc6, 0xbb, 0x9b, 0x6f, 0xe2, 0x87, 0x92, 0x61,
		0x6c, 0xeb, 0x59, 0x59, 0xd2, 0x91, 0x86, 0xc4, 0x7e, 0x36, 0xfe, 0xdf, 0x3f, 0xa5, 0x0b, 0x02,
		0x0c, 0xc4, 0x80, 0x66, 0x7a, 0x24, 0x78, 0xb9, 0xb6, 0x36, 0x0e, 0xb1, 0xa7, 0xa5, 0x99, 0x9e,
		0xee, 0x7e, 0xf5, 0xd5, 0xf5, 0xf9, 0xba, 0x22, 0x7d, 0x29, 0xff, 0x2c, 0x5e, 0x56, 0x65, 0xb1,
		0x63, 0xd7, 0xf8, 0x7f, 0xc6, 0x69, 0xaf, 0xdf, 0x6d, 0x5f, 0xf5, 0x0c, 0xd4, 0x3c, 0xd2, 0xcb,
		0x05, 0x51, 0xf2, 0x41, 0xb8, 0x9c, 0x10, 0x2e, 0x2f, 0xc4, 0xca, 0x8d, 0x8c, 0x2e, 0x55, 0xe5,
		0x35, 0x8f, 0x63, 0x49, 0x10, 0x8b, 0x80, 0xc8, 0x7f, 0x22, 0xa2, 0xfe, 0xb1, 0x9e, 0x61, 0x0d,
		0xc3, 0x19, 0x3d, 0x64, 0xe7, 0xbf, 0x9e, 0x7b, 0xc9, 0xfd, 0x4d, 0x92, 0x30, 0x16, 0xae, 0x56,
		0x09, 0xf7, 0xaa, 0x71, 0x7a, 0x6a, 0x74, 0xc6, 0x32, 0x4a, 0x40, 0x6b, 0x84, 0x6a, 0xb8, 0x68,
		0x76, 0xc1, 0x97, 0x91, 0x99, 0xa6, 0x76, 0xac, 0x19, 0x5d, 0x06, 0x01, 0xdb, 0x35, 0xb3, 0x53,
		0x42, 0x3a, 0x2a, 0xcc, 0xee, 0xd3, 0x89, 0x56, 0x55, 0xd4, 0x0b, 0xe1, 0x19, 0xb3, 0x09, 0x34,
		0xb2, 0xe6, 0x0e, 0x63, 0xe1, 0x64, 0x3d, 0x48, 0xb1, 0x7e, 0x66, 0x97, 0x85, 0xf5, 0x03, 0xeb,
		0x07, 0xd6, 0x0f, 0xac, 0x1f, 0x58, 0x3f, 0xb0, 0x7e, 0x60, 0xfd, 0xc0, 0xfa, 0x51, 0x6e, 0xfd,
		0x08, 0xf6, 0xf9, 0x08, 0xf1, 0xf5, 0xc0, 0x5c, 0x80, 0xb9, 0xb0, 0xbb, 0xe6, 0x42, 0x28, 0x35,
		0x7c, 0x76, 0x2b, 0xc2, 0x44, 0x38, 0xcc, 0xb0, 0x46, 0x27, 0x8d, 0x96, 0xc7, 0x07, 0x71, 0xe2,
		0xbb, 0x23, 0x6e, 0x39, 0x77, 0xc9, 0xdd, 0x4e, 0x3f, 0x4e, 0xac, 0x9a, 0x21, 0xbb, 0xb5, 0x1c,
		0x2b, 0x14, 0xa3, 0xc1, 0xf2, 0x7f, 0x4a, 0xff, 0x25, 0x8a, 0x8a, 0x93, 0x9e, 0x4f, 0xcb, 0x0a,
		0x78, 0x83, 0x73, 0x3f, 0xdb, 0x19, 0x9d, 0x5b, 0x8e, 0x61, 0xb3, 0x90, 0x45, 0x33, 0xa6, 0x5a,
		0x96, 0xce, 0xcd, 0xc7, 0xa9, 0x95, 0xaa, 0x47, 0xf5, 0xfa, 0xc1, 0x61, 0xbd, 0x5e, 0x39, 0xdc,
		0x3b, 0xac, 0x1c, 0xef, 0xef, 0x57, 0x0f, 0xaa, 0x19, 0x12, 0x43, 0x4b, 0x6d, 0x7f, 0xc8, 0x7c,
		0x36, 0xfc, 0xf8, 0x94, 0x5d, 0x68, 0xa4, 0x99, 0xd4, 0x01, 0xf3, 0xb3, 0xca, 0x0b, 0x81, 0x2d,
		0xc9, 0xa7, 0x85, 0x99, 0x1b, 0xbf, 0xad, 0x7e, 0xf3, 0x24, 0xc2, 0x62, 0x94, 0xd1, 0x8b, 0x7c,
		0x46, 0xb0, 0x45, 0x3b, 0xa9, 0xca, 0xb4, 0x12, 0xc1, 0x54, 0x57, 0xe1, 0x0b, 0xc4, 0x5b, 0x03,
		0x4b, 0x8d, 0xce, 0x52, 0x13, 0xec, 0x9f, 0x12, 0xe2, 0x97, 0x82, 0xa5, 0x06, 0x4b, 0x0d, 0x96,
		0x1a, 0x2c, 0x35, 0x58, 0x6a, 0xb0, 0xd4, 0x60, 0xa9, 0xc1, 0x52, 0xdb, 0x42, 0x4b, 0x6d, 0x87,
		0x7a, 0x1f, 0x2f, 0xc9, 0xfd, 0x2e, 0x4f, 0xe7, 0xea, 0x62, 0x0a, 0x7a, 0x11, 0xa7, 0xa0, 0x23,
		0x8f, 0x53, 0xa8, 0xe1, 0x8a, 0x3c, 0x4e, 0x64, 0x32, 0x00, 0xf0, 0x02, 0xf0, 0xee, 0x1a, 0xe0,
		0x45, 0x26, 0xc3, 0x4a, 0xab, 0x21, 0x93, 0x61, 0xbd, 0xab, 0x85, 0x4c, 0x86, 0xac, 0x20, 0x05,
		0x69, 0x8f, 0x30, 0x16, 0x60, 0x2c, 0xc0, 0x58, 0x80, 0xb1, 0x00, 0x63, 0x01, 0xc6, 0x02, 0x8c,
		0x05, 0xd1, 0xc6, 0x02, 0xb2, 0x04, 0xa1, 0x5d, 0xa1, 0x5d, 0xf3, 0xa4, 0x5d, 0x11, 0x7b, 0x96,
		0x71, 0x3e, 0x88, 0x3d, 0x67, 0xe3, 0x4a, 0xc4, 0x9e, 0x45, 0x09, 0x36, 0xc4, 0x9e, 0x91, 0x54,
		0x07, 0xc3, 0x06, 0x86, 0x0d, 0x0c, 0x1b, 0x18, 0x36, 0x30, 0x6c, 0x60, 0xd8, 0xc0, 0xb0, 0xd9,
		0x61, 0xc3, 0x06, 0x39, 0x68, 0xb3, 0x39, 0x68, 0x98, 0xcb, 0x2f, 0x61, 0x57, 0xc5, 0xcd, 0xeb,
		0x6f, 0x86, 0xd4, 0xc6, 0x7f, 0xeb, 0x24, 0xb4, 0xfa, 0x8d, 0x90, 0x56, 0x27, 0x26, 0x45, 0x38,
		0xc5, 0x3f, 0x31, 0xc9, 0x37, 0xf3, 0x60, 0xbe, 0x34, 0xec, 0x37, 0x71, 0x5c, 0xe6, 0xbd, 0x6d,
		0xe9, 0x9a, 0xc3, 0x69, 0xb7, 0xa7, 0x6d, 0xe9, 0x7a, 0xc3, 0x67, 0xd1, 0xb6, 0x54, 0x3e, 0x04,
		0xc5, 0xbc, 0x65, 0xc1, 0x56, 0x58, 0x11, 0xe6, 0x2d, 0x6f, 0x9c, 0xee, 0x9a, 0x08, 0xe3, 0x10,
		0x98, 0x31, 0x9d, 0x9b, 0xfe, 0x1d, 0xe3, 0xc2, 0x42, 0x53, 0x33, 0x8b, 0xc2, 0x8f, 0x93, 0xe1,
		0x52, 0xc1, 0x8f, 0xb3, 0xd9, 0xa5, 0x2b, 0xba, 0x1f, 0x67, 0xe4, 0x6c, 0x36, 0x80, 0x63, 0x4e,
		0xf7, 0x1c, 0x67, 0x58, 0x23, 0x79, 0x9d, 0x2f, 0x99, 0xce, 0x53, 0x00, 0x5c, 0x4f, 0x47, 0x51,
		0xde, 0x79, 0x3a, 0x7b, 0xe4, 0xfa, 0xc0, 0x7d, 0x78, 0x18, 0x39, 0x16, 0xcf, 0x9c, 0x16, 0x23,
		0x72, 0xb7, 0xc4, 0xee, 0x9a, 0xb8, 0xdd, 0x9b, 0xdb, 0xc5, 0x20, 0x4e, 0xbf, 0x79, 0x2f, 0x6e,
		0xe5, 0xf1, 0xee, 0x1d, 0x09, 0x5c, 0xb3, 0x63, 0x72, 0xce, 0x7c, 0x47, 0xd8, 0x46, 0xa6, 0x0b,
		0xbf, 0x3d, 0xd8, 0xdf, 0xdf, 0xfb, 0x52, 0xd1, 0xf7, 0xaf, 0x7f, 0x1c, 0xec, 0xef, 0x7f, 0xa9,
		0xe8, 0xb5, 0xeb, 0x2f, 0x15, 0xfd, 0x38, 0xfc, 0xdb, 0x97, 0x8a, 0x5e, 0x8f, 0xff, 0xf2, 0x4f,
		0xed, 0xf9, 0xc7, 0xc1, 0xd4, 0x5f, 0xf7, 0x9e, 0x7f, 0x7c, 0xa9, 0xea, 0xfb, 0xc9, 0xdf, 0xea,
		0xd1, 0xdf, 0x8e, 0x93, 0xbf, 0x55, 0xdf, 0x87, 0xff, 0x1a, 0x7e, 0xfb, 0xee, 0xe4, 0x6d, 0xbd,
		0x76, 0x5c, 0x3f, 0x3e, 0x38, 0xac, 0x1d, 0xc7, 0x14, 0xc6, 0x7f, 0xfd, 0x52, 0xd1, 0x8f, 0x12,
		0x32, 0xc9, 0x47, 0x5f, 0x2a, 0x7a, 0x75, 0x42, 0x2b, 0xfe, 0xf0, 0x4b, 0x45, 0x3f, 0x98, 0x10,
		0x8c, 0x3e, 0x8b, 0x96, 0x49, 0xa9, 0x86, 0x1f, 0x4d, 0x96, 0xfa, 0x67, 0x3f, 0xfa, 0xe4, 0x4b,
		0x45, 0xdf, 0x4b, 0x3e, 0x38, 0x08, 0x3f, 0x98, 0xfa, 0x81, 0xc3, 0xe7, 0x1f, 0xf5, 0x29, 0x42,
		0x47, 0xd1, 0x73, 0x8f, 0x7f, 0xf8, 0xf8, 0xc5, 0x5b, 0x1c, 0x8d, 0xdf, 0xa2, 0x24, 0x6c, 0xc3,
		0xaf, 0x45, 0x32, 0x44, 0xfb, 0xb2, 0xf9, 0x97, 0x34, 0xae, 0xf8, 0x1f, 0xb0, 0xc5, 0x6b, 0x6c,
		0xf1, 0x2f, 0x81, 0x7c, 0x21, 0x64, 0xa5, 0xe7, 0xf7, 0x10, 0xb1, 0xf9, 0x14, 0xb1, 0x6f, 0x63,
		0x9e, 0x9e, 0xf0, 0xd1, 0x8f, 0x6a, 0xf4, 0x47, 0xfc, 0x7d, 0x6d, 0x72, 0x83, 0x7e, 0xd4, 0xf6,
		0x23, 0x56, 0x7e, 0xf7, 0xf5, 0xeb, 0x87, 0x77, 0xff, 0xec, 0x3d, 0xaf, 0xff, 0x8b, 0x27, 0x32,
		0x2f, 0xee, 0x6e, 0x4a, 0xc2, 0x6d, 0x39, 0x3d, 0x08, 0x2c, 0x08, 0xac, 0x15, 0x05, 0xd6, 0x36,
		0xe8, 0x67, 0x48, 0x42, 0xe1, 0x92, 0x10, 0x6c, 0x01, 0x11, 0x0b, 0x11, 0x2b, 0x64, 0xe1, 0xc8,
		0x25, 0xfc, 0xf5, 0x6b, 0xe2, 0x14, 0x3e, 0x01, 0xdc, 0x02, 0x0a, 0x5f, 0x20, 0x71, 0xc1, 0x25,
		0x00, 0xe5, 0x10, 0xc0, 0x24, 0x02, 0x18, 0x18, 0x7d, 0x8b, 0xe4, 0x24, 0x20, 0x3b, 0xc4, 0xd9,
		0x6e, 0x8b, 0x33, 0x40, 0x35, 0xc8, 0xc9, 0xd7, 0xe5, 0x24, 0xb8, 0x04, 0x02, 0x18, 0x02, 0x58,
		0xa8, 0x00, 0x76, 0x7d, 0xeb, 0xce, 0x72, 0x00, 0xd5, 0x00, 0xe8, 0x7f, 0x26, 0x80, 0xc1, 0x25,
		0x00, 0xf4, 0x10, 0xc0, 0x52, 0x05, 0x30, 0x00, 0xfd, 0x16, 0xc9, 0x49, 0x00, 0x7a, 0x88, 0xb3,
		0xdd, 0x16, 0x67, 0x80, 0x6a, 0x90, 0x93, 0xaf, 0xcb, 0x49, 0x70, 0x09, 0x04, 0x30, 0x04, 0xb0,
		0x90, 0x85, 0x07, 0xae, 0xed, 0xfa, 0x27, 0x11, 0xfb, 0xfe, 0x53, 0x7b, 0x06, 0xe6, 0x2e, 0xac,
		0x8c, 0xdc, 0xc6, 0x83, 0x84, 0x18, 0x83, 0x18, 0x5b, 0x6d, 0x61, 0xdb, 0x72, 0xfe, 0xd6, 0x6f,
		0x4c, 0x67, 0xf8, 0xdd, 0x1a, 0xf2, 0x7b, 0x78, 0x9c, 0x5e, 0xbd, 0x5a, 0x6f, 0xff, 0xfe, 0xf1,
		0xfb, 0x8f, 0xf3, 0x1f, 0xbf, 0xbe, 0xfb, 0xff, 0xed, 0xa4, 0xb4, 0x24, 0xe4, 0x97, 0x7f, 0x6d,
		0x19, 0xbf, 0xe4, 0x4f, 0x28, 0xbf, 0x51, 0xfb, 0x1c, 0x19, 0x95, 0x82, 0xc0, 0x52, 0x59, 0xe6,
		0x8c, 0x1e, 0x98, 0x1f, 0x77, 0xce, 0x11, 0x58, 0x1f, 0x5b, 0x17, 0xb0, 0x96, 0x90, 0x36, 0xf2,
		0xe9, 0x6a, 0x42, 0xdb, 0xc9, 0xa7, 0xab, 0xc6, 0x6d, 0xe5, 0xaf, 0x7a, 0xed, 0x52, 0x9e, 0x8c,
		0x05, 0x81, 0x9d, 0xe0, 0xd3, 0x25, 0xa3, 0x97, 0x3c, 0xd1, 0x2a, 0x39, 0xb9, 0x7f, 0xcf, 0x8a,
		0x7a, 0x9b, 0x5d, 0xa3, 0x9f, 0x20, 0x45, 0x3f, 0x41, 0x67, 0x64, 0xdb, 0x02, 0xbb, 0xc8, 0xdd,
		0x9a, 0x76, 0x40, 0x3b, 0x9b, 0x95, 0x3d, 0x72, 0xdf, 0xd4, 0x47, 0x4e, 0xc0, 0xcd, 0x1b, 0x3b,
		0x63, 0xaf, 0x07, 0x9f, 0xdd, 0x32, 0x9f, 0x39, 0x83, 0x5c, 0xf5, 0x58, 0xe8, 0x7e, 0x3a, 0xd5,
		0x0e, 0xeb, 0x7b, 0xb5, 0x13, 0xed, 0xe3, 0xaf, 0x1d, 0xed, 0xbc, 0xd3, 0xba, 0xd4, 0x3f, 0x9a,
		0x01, 0x1b, 0x6a, 0x06, 0xbf, 0x67, 0xbe, 0xc3, 0xb8, 0xf6, 0x47, 0xe7, 0x42, 0xf3, 0xcc, 0x3b,
		0xa6, 0x57, 0x8f, 0x45, 0xa8, 0x16, 0x81, 0x7d, 0x1d, 0xb5, 0x17, 0x0d, 0x4e, 0x26, 0x1b, 0x2c,
		0x48, 0xfe, 0xca, 0x68, 0xef, 0xa8, 0xbd, 0xec, 0x79, 0xb2, 0xde, 0x09, 0x40, 0xe2, 0xae, 0xb6,
		0xc1, 0x5b, 0x34, 0x53, 0x79, 0xf3, 0x46, 0xdd, 0x62, 0x9b, 0x3d, 0x2d, 0x5a, 0x14, 0xcd, 0x9e,
		0xd0, 0xec, 0x69, 0x53, 0xc1, 0x87, 0x66, 0x4f, 0x59, 0xe1, 0x19, 0x9a, 0x3d, 0x11, 0xed, 0x96,
		0xd8, 0x5d, 0x83, 0x33, 0x18, 0xcd, 0x9e, 0x10, 0x21, 0x23, 0xf4, 0xf9, 0x82, 0x2d, 0x10, 0x6f,
		0x83, 0x88, 0x15, 0x24, 0x62, 0x91, 0x77, 0x5a, 0x64, 0x49, 0x88, 0x44, 0x53, 0x08, 0xac, 0x1d,
		0x13, 0x58, 0xc8, 0x19, 0x84, 0x24, 0x5c, 0x20, 0x09, 0xc1, 0x16, 0x10, 0xb1, 0x10, 0xb1, 0x42,
		0x16, 0x46, 0x1b, 0x1f, 0xa0, 0xf0, 0xd7, 0x25, 0x2e, 0xb8, 0x04, 0xa0, 0x1c, 0x02, 0x18, 0xcd,
		0x9e, 0x60, 0x99, 0xae, 0x27, 0x27, 0x01, 0xd9, 0x21, 0xce, 0x76, 0x5b, 0x9c, 0x01, 0xaa, 0x41,
		0x4e, 0xbe, 0x2e, 0x27, 0xc1, 0x25, 0x10, 0xc0, 0x10, 0xc0, 0x42, 0x05, 0x30, 0xda, 0xf8, 0x00,
		0xd0, 0xbf, 0x2e, 0x80, 0xc1, 0x25, 0x00, 0xf4, 0x10, 0xc0, 0x52, 0x05, 0x30, 0x00, 0xfd, 0x16,
		0xc9, 0x49, 0x00, 0x7a, 0x88, 0xb3, 0xdd, 0x16, 0x67, 0x80, 0x6a, 0x90, 0x93, 0xaf, 0xcb, 0x49,
		0x70, 0x09, 0x04, 0x30, 0x04, 0xb0, 0x90, 0x85, 0xd1, 0xec, 0x69, 0x4b, 0x64, 0x24, 0x9a, 0x3d,
		0x41, 0x8c, 0xa1, 0xd9, 0x13, 0x9a, 0x3d, 0xa1, 0xd9, 0xd3, 0x2a, 0xd2, 0x12, 0xcd, 0x9e, 0xd0,
		0xec, 0x49, 0xd4, 0x73, 0xa0, 0xd9, 0xd3, 0x0a, 0x6b, 0xa1, 0xd9, 0x53, 0x86, 0x97, 0x45, 0xb3,
		0x27, 0x39, 0xbf, 0x8d, 0x66, 0x4f, 0x68, 0xf6, 0xb4, 0xca, 0x13, 0xa0, 0xd9, 0x13, 0x9a, 0x3d,
		0xa1, 0xd9, 0x53, 0xf1, 0x24, 0xee, 0x36, 0x35, 0x7b, 0x7a, 0x23, 0x71, 0xc3, 0xb2, 0x6e, 0x54,
		0x29, 0x18, 0xdc, 0xb3, 0x07, 0xd3, 0x33, 0xf9, 0x7d, 0xc8, 0xcb, 0x65, 0xd7, 0x63, 0xce, 0x20,
		0x6a, 0xc5, 0xa4, 0x3b, 0x8c, 0x7f, 0x77, 0xfd, 0xbf, 0x75, 0x2b, 0x14, 0x9e, 0xce, 0x80, 0x95,
		0x5f, 0x7e, 0x10, 0xcc, 0x7d, 0x52, 0xb6, 0x1c, 0xce, 0xfc, 0xf4, 0xaf, 0xba, 0xe7, 0xda, 0xd6,
		0xc0, 0x62, 0x41, 0x39, 0xe9, 0x33, 0xc5, 0x1e, 0xa3, 0x3f, 0xa2, 0x8f, 0x9f, 0xca, 0x31, 0x9d,
		0xf5, 0x6e, 0xc4, 0xea, 0x9b, 0xb9, 0xc6, 0x46, 0x96, 0x02, 0x6e, 0xf2, 0xf5, 0x45, 0xda, 0x94,
		0x07, 0x27, 0xfc, 0xf5, 0x35, 0x0f, 0x6e, 0x6c, 0xa2, 0xaf, 0xf9, 0x6b, 0x69, 0x9f, 0xac, 0xda,
		0x9a, 0xbf, 0x98, 0xa1, 0x3f, 0x96, 0x80, 0xbe, 0x58, 0x59, 0xd5, 0x86, 0xb0, 0x3e, 0x58, 0xc2,
		0x74, 0x82, 0x98, 0xbe, 0x57, 0x72, 0x85, 0xc3, 0x99, 0xb5, 0x99, 0xc9, 0x5a, 0x4a, 0x2e, 0xaa,
		0xd8, 0x66, 0x73, 0x8b, 0x16, 0x45, 0xb3, 0x39, 0x34, 0x9b, 0x23, 0xbf, 0x74, 0xd9, 0x8c, 0x21,
		0x34, 0x9b, 0xd3, 0xd0, 0x6c, 0x4e, 0xe9, 0xae, 0x89, 0xdb, 0xbd, 0x05, 0xa6, 0x0c, 0x9a, 0xcd,
		0x21, 0xfa, 0x84, 0x08, 0xfd, 0xcc, 0xea, 0x68, 0x36, 0x87, 0x78, 0x3f, 0x44, 0xac, 0x28, 0x11,
		0x8b, 0xbc, 0xf7, 0x22, 0x4b, 0x42, 0x24, 0xba, 0x43, 0x60, 0xed, 0x98, 0xc0, 0x42, 0xce, 0x32,
		0x24, 0xe1, 0x02, 0x49, 0x08, 0xb6, 0x80, 0x88, 0x85, 0x88, 0x15, 0xb2, 0x30, 0xda, 0x88, 0x01,
		0x85, 0xbf, 0x2e, 0x71, 0xc1, 0x25, 0x00, 0xe5, 0x10, 0xc0, 0x68, 0x36, 0x07, 0xcb, 0x74, 0x3d,
		0x39, 0x09, 0xc8, 0x0e, 0x71, 0xb6, 0xdb, 0xe2, 0x0c, 0x50, 0x0d, 0x72, 0xf2, 0x75, 0x39, 0x09,
		0x2e, 0x81, 0x00, 0x86, 0x00, 0x16, 0x2a, 0x80, 0xd1, 0x46, 0x0c, 0x80, 0xfe, 0x75, 0x01, 0x0c,
		0x2e, 0x01, 0xa0, 0x87, 0x00, 0x96, 0x2a, 0x80, 0x01, 0xe8, 0xb7, 0x48, 0x4e, 0x02, 0xd0, 0x43,
		0x9c, 0xed, 0xb6, 0x38, 0x03, 0x54, 0x83, 0x9c, 0x7c, 0x5d, 0x4e, 0x82, 0x4b, 0x20, 0x80, 0x21,
		0x80, 0x85, 0x2c, 0x8c, 0x66, 0x73, 0x5b, 0x22, 0x23, 0xd1, 0x6c, 0x0e, 0x62, 0x0c, 0xcd, 0xe6,
		0xd0, 0x6c, 0x0e, 0xcd, 0xe6, 0x56, 0x91, 0x96, 0x68, 0x36, 0x87, 0x66, 0x73, 0xa2, 0x9e, 0x03,
		0xcd, 0xe6, 0x56, 0x58, 0x0b, 0xcd, 0xe6, 0x32, 0xbc, 0x2c, 0x9a, 0xcd, 0xc9, 0xf9, 0x6d, 0x34,
		0x9b, 0x43, 0xb3, 0xb9, 0x55, 0x9e, 0x00, 0xcd, 0xe6, 0xd0, 0x6c, 0x0e, 0xcd, 0xe6, 0x14, 0x4a,
		0xdc, 0x37, 0x04, 0x37, 0xbd, 0x94, 0xf4, 0x32, 0x13, 0xdb, 0x1b, 0x69, 0xd1, 0xa2, 0xe8, 0x8d,
		0x84, 0xde, 0x48, 0x9b, 0xca, 0x09, 0xf4, 0x46, 0xca, 0x8a, 0x66, 0xd0, 0x1b, 0x89, 0x68, 0xb7,
		0xc4, 0xee, 0x1a, 0x7c, 0xa7, 0xe8, 0x8d, 0x84, 0x80, 0x12, 0xa1, 0x8b, 0x14, 0x6c, 0x81, 0xf0,
		0x14, 0x44, 0xac, 0x20, 0x11, 0x8b, 0x34, 0xcd, 0x22, 0x4b, 0x42, 0xe4, 0x65, 0x42, 0x60, 0xed,
		0x98, 0xc0, 0x42, 0x8a, 0x1d, 0x24, 0xe1, 0x02, 0x49, 0x08, 0xb6, 0x80, 0x88, 0x85, 0x88, 0x15,
		0xb2, 0x30, 0xba, 0xde, 0x00, 0x85, 0xbf, 0x2e, 0x71, 0xc1, 0x25, 0x00, 0xe5, 0x10, 0xc0, 0xe8,
		0x8d, 0x04, 0xcb, 0x74, 0x3d, 0x39, 0x09, 0xc8, 0x0e, 0x71, 0xb6, 0xdb, 0xe2, 0x0c, 0x50, 0x0d,
		0x72, 0xf2, 0x75, 0x39, 0x09, 0x2e, 0x81, 0x00, 0x86, 0x00, 0x16, 0x2a, 0x80, 0xd1, 0xf5, 0x06,
		0x80, 0xfe, 0x75, 0x01, 0x0c, 0x2e, 0x01, 0xa0, 0x87, 0x00, 0x96, 0x2a, 0x80, 0x01, 0xe8, 0xb7,
		0x48, 0x4e, 0x02, 0xd0, 0x43, 0x9c, 0xed, 0xb6, 0x38, 0x03, 0x54, 0x83, 0x9c, 0x7c, 0x5d, 0x4e,
		0x82, 0x4b, 0x20, 0x80, 0x21, 0x80, 0x85, 0x2c, 0x8c, 0xde, 0x48, 0x5b, 0x22, 0x23, 0xd1, 0x1b,
		0x09, 0x62, 0x0c, 0xbd, 0x91, 0xd0, 0x1b, 0x09, 0xbd, 0x91, 0x56, 0x91, 0x96, 0xe8, 0x8d, 0x84,
		0xde, 0x48, 0xa2, 0x9e, 0x03, 0xbd, 0x91, 0x56, 0x58, 0x0b, 0xbd, 0x91, 0x32, 0xbc, 0x2c, 0x7a,
		0x23, 0xc9, 0xf9, 0x6d, 0xf4, 0x46, 0x42, 0x6f, 0xa4, 0x55, 0x9e, 0x00, 0xbd, 0x91, 0xd0, 0x1b,
		0x09, 0xbd, 0x91, 0x14, 0x4a, 0xdc, 0x37, 0x72, 0x7f, 0x63, 0x4d, 0xb9, 0x50, 0x6a, 0x38, 0x8e,
		0xcb, 0x63, 0x33, 0x6b, 0x13, 0x0e, 0x2e, 0x05, 0x83, 0x7b, 0xf6, 0x60, 0x7a, 0x26, 0xbf, 0x0f,
		0x8f, 0xbe, 0xec, 0x7a, 0xcc, 0x19, 0x44, 0x9d, 0x8b, 0x74, 0x87, 0xf1, 0xef, 0xae, 0xff, 0xb7,
		0x6e, 0x85, 0xb2, 0xc6, 0x19, 0xb0, 0xf2, 0xcb, 0x0f, 0x82, 0xb9, 0x4f, 0xca, 0x96, 0xc3, 0x99,
		0x9f, 0xfe, 0x55, 0xf7, 0x5c, 0xdb, 0x1a, 0x58, 0x2c, 0x28, 0x27, 0x6d, 0x99, 0xd8, 0x63, 0xf4,
		0x47, 0xf4, 0xf1, 0x53, 0x39, 0xe0, 0x26, 0x67, 0xeb, 0xf1, 0xcf, 0xea, 0x7b, 0xb9, 0xda, 0x4f,
		0xae, 0xb8, 0xdb, 0x9b, 0xee, 0xb2, 0xc2, 0xdd, 0x5d, 0x43, 0xe2, 0x94, 0x02, 0xee, 0x8f, 0x06,
		0xdc, 0x49, 0x04, 0xf0, 0x45, 0x4c, 0xb6, 0x99, 0x90, 0xe9, 0x37, 0x43, 0xaa, 0xe3, 0xbf, 0x75,
		0x12, 0x9a, 0xfd, 0x66, 0x44, 0xd3, 0x88, 0x48, 0x76, 0x62, 0x8a, 0x6f, 0xc4, 0x9c, 0xcb, 0xcf,
		0x7f, 0xe2, 0x95, 0x13, 0x5b, 0xf7, 0xa4, 0x68, 0x4e, 0x68, 0x85, 0xc3, 0xd8, 0xe4, 0x10, 0x7e,
		0xbe, 0xe3, 0xcb, 0xf7, 0xf1, 0x27, 0x7b, 0x58, 0x8a, 0xde, 0xe0, 0xd6, 0x1c, 0xb0, 0xe0, 0xd5,
		0xfd, 0x9b, 0x34, 0x5d, 0x9b, 0xfc, 0xce, 0x2b, 0xa7, 0x33, 0x86, 0x71, 0xaf, 0xfc, 0xd8, 0xaa,
		0xbd, 0xd3, 0xd6, 0xe9, 0x91, 0x36, 0xdd, 0x0b, 0xcd, 0x61, 0x3c, 0x3c, 0xa3, 0x55, 0x8e, 0x65,
		0x4d, 0xeb, 0x60, 0xe3, 0xf6, 0x66, 0x1b, 0xab, 0xf6, 0x97, 0xed, 0xca, 0xc6, 0xef, 0x26, 0xf9,
		0x9e, 0x9d, 0x59, 0xab, 0x81, 0x87, 0x09, 0x73, 0xac, 0xbe, 0x87, 0x73, 0x7c, 0xb5, 0xea, 0x1e,
		0xae, 0xc6, 0x5e, 0x6b, 0xb3, 0xd9, 0x26, 0xec, 0x96, 0x8d, 0xed, 0xb2, 0x1a, 0xa7, 0x99, 0xbb,
		0xec, 0x65, 0xb6, 0x34, 0x37, 0x66, 0x4b, 0x39, 0x0a, 0x7c, 0x55, 0x76, 0x4d, 0x7f, 0x61, 0x30,
		0xe6, 0x8d, 0x35, 0x37, 0x7e, 0x7c, 0xdc, 0xc9, 0xef, 0xaf, 0xb9, 0x69, 0xeb, 0x31, 0xf0, 0xc6,
		0x8c, 0x9c, 0x85, 0xa1, 0xc5, 0x30, 0xb6, 0x28, 0xf4, 0x25, 0xac, 0x9d, 0xa4, 0x30, 0x68, 0x95,
		0x99, 0xf1, 0x69, 0x70, 0xc3, 0xba, 0x17, 0x22, 0xfd, 0x45, 0x33, 0x08, 0xdc, 0x81, 0x65, 0x72,
		0x36, 0xd4, 0xcd, 0xe1, 0xd0, 0x67, 0x41, 0xa0, 0xdf, 0x9a, 0x0f, 0x96, 0x6d, 0xad, 0x60, 0x31,
		0xbc, 0xca, 0x4b, 0x3f, 0x5b, 0x1c, 0x6d, 0x5c, 0xb3, 0x5d, 0x35, 0xd1, 0x0e, 0x8f, 0xe2, 0x75,
		0x72, 0xdd, 0xf8, 0x2a, 0x66, 0x73, 0x36, 0xa8, 0x6f, 0xe6, 0x6a, 0x0d, 0x99, 0xc3, 0x2d, 0xfe,
		0xe4, 0xb3, 0x5b, 0x11, 0x2d, 0x5d, 0xb3, 0x38, 0x63, 0x9b, 0xc9, 0xa3, 0x7c, 0x34, 0x03, 0x01,
		0x2c, 0x38, 0x7e, 0xc1, 0xc6, 0xd9, 0x59, 0xd7, 0xb8, 0xbc, 0xec, 0x7f, 0x6a, 0x9c, 0x37, 0x5b,
		0x9f, 0xb3, 0xf2, 0xe1, 0x1f, 0xa6, 0x3d, 0x8a, 0xa4, 0x59, 0xf6, 0x50, 0xaf, 0x20, 0x9f, 0xe2,
		0xf8, 0x3d, 0x9b, 0x9d, 0x3f, 0xea, 0x02, 0x3c, 0x6e, 0xef, 0x73, 0xf8, 0x5e, 0x07, 0xdb, 0xf8,
		0x5e, 0xad, 0x5a, 0xdf, 0xe8, 0xfd, 0x66, 0x74, 0x2f, 0x8c, 0xde, 0x36, 0xbe, 0xde, 0x79, 0xa7,
		0x75, 0xa9, 0xda, 0x01, 0x7c, 0x5d, 0x10, 0x69, 0x8e, 0x90, 0x5b, 0xc6, 0xa5, 0x94, 0x85, 0xdc,
		0x32, 0xba, 0xd8, 0xd3, 0x75, 0x9e, 0xee, 0x5c, 0xae, 0xbb, 0x03, 0x7d, 0xe0, 0x3e, 0x78, 0xa1,
		0x69, 0xcb, 0x86, 0xba, 0xcd, 0xcc, 0xdb, 0x70, 0xd1, 0xe7, 0x3c, 0xcf, 0x69, 0x18, 0x0a, 0x18,
		0xcb, 0x30, 0x84, 0xf9, 0x0e, 0xf3, 0x1d, 0xe6, 0xfb, 0x86, 0xb7, 0x67, 0xec, 0x07, 0xd5, 0x37,
		0xbe, 0x47, 0x33, 0xf6, 0xfb, 0x11, 0xc4, 0x27, 0xa1, 0xf8, 0x5c, 0xdb, 0xff, 0xfd, 0x3a, 0x1f,
		0x40, 0x98, 0x46, 0x02, 0xc1, 0xba, 0x85, 0x1c, 0xdd, 0x40, 0x8e, 0x5a, 0xb7, 0xbb, 0x27, 0x42,
		0x43, 0x49, 0x21, 0xc8, 0xfb, 0x71, 0x98, 0x61, 0x8d, 0x4e, 0x1a, 0x67, 0x0e, 0x8f, 0xe1, 0x64,
		0x12, 0x38, 0x7d, 0xf9, 0x41, 0xf2, 0xf7, 0x28, 0x1c, 0x0c, 0x69, 0x4d, 0x28, 0xad, 0xfd, 0x1b,
		0xdd, 0x74, 0x9e, 0x06, 0x66, 0xc0, 0xf5, 0x3b, 0x93, 0xb3, 0xef, 0xe6, 0x93, 0x00, 0xb9, 0xbd,
		0x60, 0x51, 0x48, 0x70, 0x98, 0xc3, 0x30, 0x87, 0x37, 0xe2, 0x1b, 0x31, 0xa5, 0x05, 0x22, 0x4a,
		0x0a, 0xc4, 0x94, 0x12, 0x88, 0x2d, 0x21, 0x88, 0x4b, 0x07, 0xce, 0x9a, 0x97, 0xbd, 0x6e, 0xf3,
		0xe3, 0x55, 0xcf, 0x38, 0xeb, 0x5f, 0x7e, 0x3e, 0x37, 0x7a, 0xdd, 0xe6, 0xa9, 0x88, 0x64, 0xd9,
		0xea, 0xcb, 0xc5, 0x1b, 0x22, 0x57, 0xaf, 0x85, 0xab, 0xff, 0xf6, 0xf9, 0x63, 0xb7, 0x79, 0x26,
		0x62, 0xb9, 0xbd, 0x70, 0xb9, 0x53, 0xe3, 0xa2, 0xd7, 0x6d, 0xb4, 0x9a, 0xff, 0x7f, 0xe3, 0xac,
		0xa4, 0xb2, 0xb6, 0x46, 0x60, 0xed, 0xc4, 0xcc, 0x3b, 0x9d, 0x68, 0x7b, 0x02, 0xb6, 0x6a, 0xf1,
		0x91, 0xae, 0x9d, 0x89, 0xf0, 0xea, 0xda, 0x53, 0x4b, 0x57, 0x04, 0x2c, 0x9d, 0xf0, 0xca, 0x89,
		0x56, 0x53, 0x94, 0x44, 0xfc, 0x0c, 0xe3, 0x8c, 0xce, 0x38, 0x7b, 0x30, 0x07, 0xba, 0x67, 0x39,
		0x4e, 0x16, 0x51, 0x99, 0x6a, 0x91, 0xe9, 0xc5, 0x60, 0x8c, 0xc1, 0x18, 0x83, 0x31, 0xb6, 0x11,
		0xdf, 0xdc, 0xb8, 0xae, 0xcd, 0x4c, 0x21, 0x86, 0x58, 0x15, 0x85, 0x54, 0xe4, 0x85, 0x54, 0x28,
		0xa0, 0x52, 0x55, 0x40, 0x55, 0x42, 0xa9, 0x2a, 0x6c, 0x9e, 0xd7, 0x1f, 0x3b, 0x18, 0xdd, 0x08,
		0x8c, 0x20, 0xcc, 0xac, 0x06, 0xab, 0x07, 0x41, 0x84, 0x8d, 0x0d, 0x1e, 0x04, 0x11, 0x32, 0xd9,
		0x3a, 0x24, 0x41, 0x84, 0x2f, 0x93, 0x20, 0xc2, 0xbf, 0x07, 0x23, 0xdf, 0x67, 0x0e, 0x7f, 0xfb,
		0xae, 0xfc, 0xe1, 0x43, 0x39, 0xfd, 0x89, 0xeb, 0xe4, 0x57, 0xa6, 0xe5, 0x42, 0xb0, 0xe0, 0xb3,
		0x74, 0xe5, 0x21, 0x7b, 0x44, 0x3c, 0x62, 0x53, 0xf1, 0xbf, 0x6b, 0x85, 0xc0, 0x31, 0x37, 0x4d,
		0x98, 0x28, 0xa9, 0x89, 0x91, 0x55, 0xf1, 0xbb, 0x46, 0x59, 0xd5, 0x06, 0x39, 0x4d, 0x9b, 0xe7,
		0x32, 0x6d, 0xa8, 0x31, 0x51, 0xd5, 0x83, 0xaa, 0x9e, 0x75, 0x85, 0xc0, 0xc6, 0xba, 0x4e, 0x80,
		0x8e, 0xcb, 0xa2, 0xdb, 0x52, 0x9d, 0xf6, 0xe1, 0x43, 0x22, 0x25, 0xca, 0xd6, 0x30, 0x0f, 0x82,
		0x22, 0xee, 0x51, 0xb0, 0xb1, 0xac, 0x88, 0x7f, 0x9d, 0xb8, 0x08, 0xb0, 0x06, 0x71, 0x01, 0x71,
		0xb1, 0xd2, 0x53, 0xa2, 0x08, 0xb0, 0x98, 0x98, 0x15, 0x9e, 0x7a, 0x05, 0x57, 0xb1, 0xe8, 0xe8,
		0x15, 0x45, 0x80, 0x6b, 0xad, 0x8a, 0x22, 0x40, 0x05, 0xef, 0x85, 0x22, 0xc0, 0xe2, 0xbd, 0x1e,
		0x8a, 0x00, 0x57, 0xdf, 0x33, 0x14, 0x01, 0x66, 0x5c, 0x2a, 0x7b, 0x11, 0x20, 0x6a, 0xe6, 0x60,
		0xed, 0xc2, 0xda, 0xdd, 0x7e, 0x6b, 0x37, 0x1f, 0x35, 0x73, 0x28, 0x31, 0x2b, 0xb6, 0xec, 0x41,
		0x74, 0x78, 0x23, 0xb1, 0x83, 0xe8, 0x70, 0x26, 0x61, 0x53, 0x90, 0x12, 0x33, 0x54, 0x64, 0xc1,
		0xd8, 0x82, 0xd4, 0x83, 0xb1, 0x85, 0x8a, 0xac, 0x9f, 0xaf, 0x86, 0x8a, 0xac, 0xf1, 0x72, 0xa8,
		0xc8, 0x5a, 0x79, 0x45, 0x54, 0x64, 0x91, 0xca, 0x50, 0x14, 0x30, 0xc1, 0x76, 0x81, 0xed, 0x82,
		0x02, 0xa6, 0x2c, 0x76, 0x0b, 0x0a, 0x98, 0x50, 0xc0, 0x84, 0x02, 0x26, 0x0a, 0x25, 0xaf, 0x15,
		0x63, 0xf2, 0x13, 0xea, 0x7d, 0xe0, 0xd1, 0xdd, 0x12, 0xfb, 0x00, 0x1e, 0xdd, 0x4c, 0xa6, 0xc1,
		0xee, 0xd5, 0xfb, 0xa0, 0x3c, 0x66, 0xdd, 0xf2, 0x98, 0x02, 0xcd, 0xc3, 0xfb, 0x9d, 0x3d, 0xad,
		0x95, 0xa2, 0xb0, 0x59, 0xe2, 0xcb, 0xe6, 0x89, 0x2e, 0x42, 0x13, 0x5b, 0x32, 0x24, 0xb2, 0x64,
		0x48, 0x5c, 0x29, 0xe0, 0x68, 0xc2, 0x17, 0x0c, 0x2d, 0x78, 0x04, 0x61, 0xb4, 0x24, 0x66, 0x0c,
		0x4e, 0x6d, 0xb5, 0x8c, 0xf9, 0x7f, 0x0f, 0x9e, 0xbd, 0xc6, 0xe4, 0xbf, 0xe8, 0xa7, 0x8b, 0x31,
		0xf3, 0x6f, 0x85, 0x47, 0xd5, 0x0a, 0x39, 0xf0, 0x2f, 0x7a, 0xb1, 0xbc, 0x4c, 0xfb, 0xbb, 0xb3,
		0xdd, 0x1b, 0xd3, 0x5e, 0x7f, 0xd4, 0x5f, 0xf2, 0x7b, 0xdb, 0x31, 0xe7, 0x6f, 0x45, 0x56, 0xcb,
		0x0a, 0x2a, 0xf2, 0x37, 0xe4, 0x6f, 0x35, 0x56, 0x94, 0x63, 0x92, 0x60, 0xc2, 0x9f, 0x68, 0xf4,
		0x9c, 0x81, 0xa5, 0x45, 0xe1, 0xe5, 0xfc, 0x57, 0xf6, 0xad, 0xc7, 0xf2, 0x34, 0x58, 0x67, 0xe3,
		0xb2, 0xbe, 0xd0, 0xb8, 0xd5, 0x6d, 0xf3, 0x86, 0xd9, 0xd9, 0x5d, 0x4f, 0x53, 0x6b, 0x6d, 0xb8,
		0xd3, 0x67, 0xec, 0xd6, 0x1c, 0xd9, 0x3c, 0x93, 0x4b, 0x7a, 0x7c, 0x44, 0xfc, 0xa4, 0x79, 0xde,
		0x69, 0x35, 0x4f, 0x9b, 0x1b, 0x96, 0x60, 0x5c, 0xc3, 0x79, 0x96, 0x41, 0x0c, 0xc0, 0x7d, 0xb6,
		0x99, 0x98, 0x28, 0xba, 0x03, 0x6d, 0xeb, 0x4b, 0x0e, 0x2f, 0xae, 0x5a, 0xad, 0x7e, 0xab, 0xf1,
		0xd1, 0x68, 0xf5, 0x7b, 0x9f, 0x3b, 0xc6, 0xf6, 0xd6, 0x1c, 0x1a, 0x7f, 0x65, 0x91, 0x9e, 0x02,
		0xb8, 0x52, 0xe2, 0xbb, 0x65, 0xd3, 0x0c, 0xd9, 0xef, 0x69, 0xaa, 0x63, 0xd0, 0x85, 0xb8, 0x08,
		0x1d, 0xf9, 0xbc, 0xef, 0x3a, 0x73, 0x06, 0xa6, 0x17, 0x8c, 0xec, 0x6c, 0x9b, 0x90, 0x32, 0xe0,
		0xdc, 0x8a, 0x30, 0x36, 0x60, 0x6c, 0xc0, 0xd8, 0x80, 0xb1, 0x31, 0xfb, 0x82, 0x9d, 0x4b, 0xe3,
		0xea, 0xac, 0xfd, 0x67, 0xb3, 0x6b, 0xf4, 0x8d, 0x8b, 0xd3, 0x46, 0xe7, 0xf2, 0xaa, 0xd5, 0xe8,
		0x35, 0xdb, 0x17, 0xdb, 0x6b, 0x75, 0x74, 0xfe, 0x34, 0xd2, 0xd2, 0xf9, 0x7e, 0xb7, 0xf1, 0x67,
		0xff, 0xbc, 0x7d, 0x66, 0x6c, 0xa3, 0x09, 0x32, 0xf3, 0xa2, 0xbd, 0xc6, 0xaf, 0xbf, 0x1a, 0x67,
		0xa2, 0xde, 0x15, 0x26, 0xc9, 0xf6, 0x9b, 0x24, 0x9c, 0xdb, 0xba, 0xe7, 0xbb, 0x9e, 0x79, 0x27,
		0xc8, 0x22, 0x79, 0xb9, 0xa0, 0x4a, 0x0f, 0x4e, 0xa8, 0x1f, 0xe1, 0xb4, 0x81, 0x1d, 0x05, 0x3b,
		0x8a, 0xc6, 0x8e, 0x2a, 0x6c, 0x42, 0x34, 0x5a, 0x05, 0xd3, 0x6c, 0x94, 0xe0, 0x7c, 0x86, 0xf0,
		0x96, 0x95, 0xe3, 0xf8, 0x6f, 0x9e, 0x3a, 0x04, 0xa7, 0xfd, 0x23, 0x4c, 0xce, 0x7d, 0xeb, 0x66,
		0xc4, 0x37, 0x68, 0x6d, 0xb8, 0xa0, 0x1b, 0xc5, 0xd4, 0x6a, 0x88, 0x1c, 0x4a, 0xd4, 0x3a, 0x88,
		0x1c, 0x6a, 0x94, 0x91, 0xc3, 0x1c, 0xb6, 0x20, 0xa9, 0xc2, 0x7c, 0x83, 0xf9, 0x56, 0x14, 0xf3,
		0x6d, 0xd3, 0x8b, 0x97, 0x2e, 0xb0, 0x61, 0x36, 0xcb, 0x52, 0xc6, 0xdb, 0x28, 0xbb, 0x45, 0xf0,
		0x55, 0x14, 0x76, 0x25, 0x45, 0x5e, 0x4d, 0x09, 0x57, 0x54, 0xf4, 0x55, 0x95, 0x76, 0x65, 0xa5,
		0x5d, 0x5d, 0x39, 0x57, 0x58, 0x8c, 0x0f, 0x2c, 0x6b, 0x97, 0x81, 0xac, 0x57, 0x7b, 0x81, 0x49,
		0x9a, 0xa1, 0xbd, 0xe0, 0x0a, 0x26, 0x6a, 0xa6, 0x86, 0x69, 0x02, 0x1d, 0x29, 0xd2, 0xc4, 0x80,
		0x0c, 0x71, 0x20, 0x51, 0x2c, 0xc8, 0x12, 0x0f, 0xd2, 0xc5, 0x84, 0x74, 0x71, 0x21, 0x57, 0x6c,
		0x88, 0x11, 0x1f, 0x82, 0xc4, 0x88, 0x38, 0x47, 0x0f, 0xa5, 0x04, 0xd0, 0xb2, 0xb7, 0x50, 0x94,
		0xb5, 0x8f, 0x82, 0xbc, 0x45, 0xf2, 0xbd, 0x47, 0xe2, 0xd9, 0x51, 0xc0, 0x16, 0x46, 0x95, 0x1f,
		0x3a, 0x73, 0xcc, 0x1b, 0x9b, 0x49, 0x50, 0x46, 0x33, 0xab, 0x0b, 0x3a, 0x70, 0x11, 0xc1, 0x88,
		0xb9, 0x45, 0xa3, 0x7a, 0x2e, 0x31, 0xa2, 0xe6, 0x1a, 0x4a, 0x17, 0x4a, 0x17, 0x4a, 0x77, 0xc7,
		0x94, 0x6e, 0xf6, 0x68, 0xcb, 0x52, 0x7d, 0x5b, 0x85, 0xbe, 0xcd, 0x89, 0xbe, 0x55, 0x8a, 0x3f,
		0x05, 0x6f, 0xbc, 0xc4, 0xe8, 0xcf, 0xa2, 0x28, 0x49, 0xc6, 0xf1, 0x91, 0xe2, 0x8e, 0x22, 0xc3,
		0x31, 0x88, 0x45, 0xee, 0x32, 0xec, 0x75, 0x41, 0x46, 0x03, 0x1c, 0x75, 0x70, 0xd4, 0x15, 0x57,
		0x50, 0x0a, 0x53, 0xf2, 0x02, 0x1b, 0xc8, 0xcc, 0x29, 0xf5, 0x43, 0x01, 0x6b, 0x2d, 0x18, 0xb6,
		0x39, 0x2d, 0x4a, 0x0a, 0x2d, 0x60, 0xc3, 0xed, 0x96, 0x20, 0x61, 0xb3, 0x9f, 0xe2, 0xae, 0xc4,
		0x42, 0xac, 0x5b, 0x08, 0x58, 0x09, 0x02, 0x36, 0x4b, 0xff, 0xad, 0x7c, 0x88, 0x57, 0x61, 0x71,
		0x10, 0x41, 0xa1, 0xce, 0x39, 0xe6, 0x15, 0x12, 0xf2, 0x14, 0x7c, 0xdd, 0x0b, 0xeb, 0x86, 0x11,
		0x22, 0x06, 0xe0, 0x84, 0x51, 0x21, 0x26, 0xf2, 0xe9, 0x82, 0x11, 0x25, 0x3e, 0xe6, 0x6d, 0x06,
		0xf1, 0x6c, 0x25, 0x2a, 0x95, 0x49, 0x32, 0x5c, 0x93, 0x2e, 0x64, 0x64, 0x0a, 0x1b, 0xe9, 0x42,
		0x47, 0xb6, 0xf0, 0x21, 0x13, 0x42, 0x64, 0xc2, 0x88, 0x42, 0x28, 0x89, 0x15, 0x4e, 0x82, 0x85,
		0x94, 0x78, 0x28, 0x49, 0x00, 0x2d, 0x65, 0x42, 0xcd, 0xa5, 0xd0, 0x53, 0xfe, 0x74, 0x2a, 0xaa,
		0xa3, 0x96, 0xe4, 0xd7, 0x4e, 0xd7, 0x97, 0xee, 0xdf, 0x16, 0x7f, 0xa3, 0x04, 0x6e, 0xb1, 0x98,
		0x7e, 0xd8, 0xaf, 0xde, 0x26, 0x01, 0x7d, 0xb2, 0xa1, 0xab, 0xa1, 0xab, 0xa1, 0xab, 0xa1, 0xab,
		0x77, 0x50, 0x57, 0xe7, 0xa9, 0xef, 0x38, 0xd4, 0xbe, 0x3a, 0xb5, 0x9f, 0x2b, 0x7f, 0x81, 0xf1,
		0xc8, 0x03, 0xa1, 0xb9, 0x5e, 0xf2, 0x5c, 0x4f, 0xee, 0x40, 0x67, 0x8f, 0xfc, 0x84, 0x33, 0x9b,
		0x3d, 0x30, 0xee, 0x3f, 0xe9, 0xae, 0xa3, 0x0f, 0xee, 0x4d, 0xe7, 0x8e, 0xc9, 0x75, 0x47, 0x45,
		0xc9, 0x6b, 0x12, 0xfd, 0x51, 0x79, 0x73, 0x45, 0x5d, 0xe7, 0x3c, 0x95, 0x45, 0x59, 0x66, 0xc5,
		0x4c, 0x9c, 0x4b, 0x48, 0x9e, 0x85, 0xb8, 0x83, 0x13, 0x91, 0xac, 0x1a, 0x4f, 0x56, 0x10, 0x1e,
		0x30, 0x88, 0x97, 0xcd, 0x79, 0xbc, 0xa0, 0x86, 0x78, 0x41, 0x71, 0xcc, 0x7f, 0xc4, 0x0b, 0x10,
		0x2f, 0x80, 0x0f, 0x02, 0x3e, 0x08, 0xf8, 0x20, 0xe0, 0x83, 0x80, 0x0f, 0x22, 0x1f, 0xf1, 0x02,
		0xb8, 0xc5, 0xa1, 0x92, 0xa0, 0x92, 0xa0, 0x92, 0xa0, 0x92, 0xa0, 0x92, 0xb6, 0xcf, 0x2d, 0xbe,
		0xa5, 0xe8, 0x6f, 0xcb, 0x5d, 0x74, 0x1b, 0x8c, 0x0a, 0x95, 0xe8, 0xa1, 0x43, 0x79, 0x9b, 0xf0,
		0x13, 0x2e, 0x09, 0xf1, 0x7a, 0xfe, 0x6c, 0xa6, 0xe6, 0xb9, 0x67, 0x07, 0xfd, 0x5f, 0xa3, 0x27,
		0x9b, 0xcc, 0xd7, 0x9c, 0x7c, 0xd7, 0x65, 0xb7, 0x45, 0x2c, 0x04, 0x11, 0xe3, 0xe9, 0x15, 0xea,
		0xe1, 0x15, 0x5e, 0xf8, 0x51, 0x43, 0x6d, 0x5d, 0x1e, 0x6c, 0x53, 0xd4, 0xd6, 0xad, 0xf1, 0x4a,
		0x68, 0x82, 0x85, 0x7e, 0x1c, 0xb9, 0x86, 0xb2, 0xe8, 0xc7, 0x51, 0x24, 0xf3, 0x7e, 0xe7, 0x9b,
		0x60, 0xa1, 0x07, 0xd4, 0x66, 0x6a, 0x08, 0x3d, 0xa0, 0xa0, 0x73, 0xa0, 0x73, 0xa0, 0x73, 0x72,
		0xa5, 0x73, 0xf2, 0xdf, 0x03, 0x0a, 0x3e, 0xa2, 0x7c, 0xf8, 0x88, 0x04, 0xf8, 0xfd, 0x9e, 0x0b,
		0xd2, 0x11, 0xfd, 0x77, 0xf6, 0x24, 0xc8, 0x1e, 0x2b, 0xb5, 0xac, 0x80, 0x37, 0x38, 0xcf, 0xd8,
		0x61, 0xfd, 0xdc, 0x72, 0x0c, 0x9b, 0x85, 0xc2, 0x2e, 0xc8, 0xa6, 0x09, 0x4b, 0xe7, 0xe6, 0xe3,
		0xd4, 0x4a, 0xd5, 0xa3, 0x7a, 0xfd, 0xe0, 0xb0, 0x5e, 0xaf, 0x1c, 0xee, 0x1d, 0x56, 0x8e, 0xf7,
		0xf7, 0xab, 0x07, 0x99, 0x66, 0x0f, 0xb6, 0xfd, 0x21, 0xf3, 0xd9, 0xf0, 0x63, 0xb8, 0x7b, 0xce,
		0xc8, 0xb6, 0x45, 0x2c, 0x75, 0x15, 0x30, 0x7f, 0x9c, 0x2f, 0x5c, 0xc8, 0x91, 0x3e, 0xaa, 0x2e,
		0x6c, 0x29, 0x93, 0x2b, 0x73, 0x6d, 0xf7, 0x6d, 0x09, 0xe3, 0x89, 0xc8, 0x0f, 0x3b, 0x0f, 0xc3,
		0x8a, 0x7c, 0x16, 0x30, 0xff, 0x1b, 0x1b, 0xea, 0xb6, 0x79, 0xc3, 0x6c, 0xfd, 0xc6, 0x76, 0x07,
		0x7f, 0x67, 0x98, 0x56, 0xb4, 0x78, 0x39, 0x8c, 0x2b, 0x92, 0x08, 0x11, 0x30, 0xae, 0x48, 0xa3,
		0x1c, 0x57, 0xb4, 0x88, 0xc3, 0xb3, 0x4f, 0x2e, 0x5a, 0xb8, 0x2a, 0x86, 0x18, 0x61, 0x88, 0x91,
		0x32, 0x44, 0x8d, 0x21, 0x46, 0x18, 0x62, 0x44, 0xec, 0x34, 0x43, 0xfc, 0x16, 0xf1, 0xdb, 0x9f,
		0x2c, 0x64, 0xbb, 0x03, 0xd3, 0x96, 0x12, 0xbb, 0x4d, 0x57, 0x86, 0x0f, 0x3d, 0x47, 0xe2, 0x40,
		0x96, 0x58, 0x90, 0x2e, 0x1e, 0xa4, 0x8b, 0x09, 0xb9, 0xe2, 0x42, 0x9c, 0xeb, 0x56, 0x2b, 0x84,
		0x0f, 0x3d, 0xe0, 0xbe, 0xe5, 0xdc, 0x61, 0x6c, 0xd1, 0xa6, 0xeb, 0xee, 0xc8, 0xd8, 0x22, 0xdb,
		0xfd, 0xce, 0x7c, 0xfd, 0xc6, 0x1d, 0x39, 0x52, 0x34, 0xd0, 0x64, 0x71, 0x28, 0x21, 0x28, 0x21,
		0x28, 0xa1, 0x1d, 0x53, 0x42, 0x51, 0xca, 0x4a, 0xe4, 0xfc, 0x91, 0xa1, 0x88, 0x8e, 0x05, 0xae,
		0x99, 0xec, 0xc1, 0x17, 0xa1, 0x4c, 0x24, 0xb1, 0x56, 0x68, 0x64, 0x39, 0x7c, 0xaf, 0x26, 0xb1,
		0x54, 0x48, 0x46, 0xa5, 0x50, 0x37, 0x6a, 0xe1, 0x23, 0x7a, 0x97, 0xe5, 0xed, 0x76, 0xfa, 0xe0,
		0xe7, 0x96, 0x23, 0xad, 0x56, 0x30, 0x25, 0xf2, 0x87, 0x69, 0x8f, 0xc2, 0xdd, 0xa9, 0x1e, 0xbc,
		0x97, 0x4b, 0xe8, 0x93, 0x6f, 0x0e, 0x42, 0x83, 0xe9, 0xcc, 0xba, 0xb3, 0xb2, 0xc6, 0x6e, 0x57,
		0x63, 0x5a, 0x76, 0x67, 0x72, 0xeb, 0x1b, 0xcb, 0x14, 0x32, 0x25, 0x94, 0x88, 0x8b, 0x79, 0xc0,
		0x7c, 0x24, 0xe4, 0x81, 0x4a, 0xfd, 0x68, 0xff, 0x70, 0x1f, 0x8c, 0xa0, 0x54, 0xc1, 0xca, 0x5f,
		0xf5, 0x3a, 0xcf, 0x25, 0xaf, 0x12, 0xd5, 0x17, 0x73, 0x46, 0x0f, 0xcc, 0x8f, 0x61, 0x9b, 0xc4,
		0x72, 0xd7, 0xba, 0x84, 0xb5, 0x0d, 0x67, 0xf4, 0x20, 0xaf, 0x70, 0xbc, 0xe7, 0x5e, 0xc6, 0xc0,
		0x5d, 0xa6, 0xa8, 0x29, 0x55, 0xc2, 0x33, 0x68, 0x76, 0xfe, 0xa8, 0xf7, 0x8d, 0xbf, 0x3a, 0xad,
		0xe6, 0x69, 0xb3, 0xd7, 0xbf, 0xb8, 0x6a, 0xb5, 0x4a, 0x12, 0xc5, 0x67, 0x35, 0x24, 0xd9, 0x6d,
		0x5f, 0xf5, 0x8c, 0x6e, 0xbf, 0xd1, 0x32, 0xba, 0x3d, 0x99, 0xc4, 0x6a, 0xc9, 0xfb, 0x1d, 0xd0,
		0xbd, 0xdf, 0x5e, 0x44, 0xf2, 0x9c, 0x88, 0xda, 0x61, 0x48, 0xcd, 0xb8, 0xe8, 0x75, 0xdb, 0x9d,
		0xcf, 0xfd, 0x56, 0xe3, 0xa3, 0xd1, 0xea, 0x37, 0x2f, 0xce, 0x9a, 0xa7, 0x8d, 0x5e, 0xbb, 0x2b,
		0x93, 0xee, 0x51, 0x94, 0x7a, 0xd3, 0x8e, 0x49, 0x96, 0xde, 0x14, 0x48, 0x87, 0x97, 0x7a, 0x6e,
		0x33, 0x42, 0x73, 0x12, 0xaf, 0xd5, 0xb2, 0x03, 0x91, 0x62, 0x4d, 0xa7, 0x54, 0x67, 0x99, 0xee,
		0x44, 0xdb, 0x93, 0x49, 0x6b, 0x5e, 0x66, 0x48, 0xb5, 0x1a, 0x16, 0x5d, 0x62, 0x61, 0x2d, 0xfc,
		0x16, 0x6b, 0xa8, 0x31, 0x73, 0x9f, 0x68, 0x47, 0x12, 0xc9, 0xcc, 0x48, 0xc2, 0x13, 0xad, 0x5a,
		0x10, 0x7b, 0x25, 0xaf, 0xad, 0x76, 0xaf, 0xe1, 0x93, 0xce, 0xc7, 0x81, 0x88, 0xf0, 0x49, 0x8f,
		0x3c, 0x4f, 0x9e, 0x4f, 0x7a, 0x7a, 0x71, 0xf8, 0xa4, 0x33, 0x6f, 0x27, 0x7c, 0xd2, 0x13, 0x02,
		0xf0, 0x49, 0xc3, 0x27, 0x0d, 0x9f, 0x34, 0x7c, 0xd2, 0x52, 0x77, 0x3b, 0x7d, 0x70, 0xf8, 0xa4,
		0xb3, 0x31, 0x2d, 0x7c, 0xd2, 0xeb, 0xf2, 0x00, 0x7c, 0xd2, 0x39, 0x43, 0x63, 0x1a, 0x7c, 0xd2,
		0x02, 0xd5, 0x17, 0x7c, 0xd2, 0x4b, 0x3d, 0x67, 0xf0, 0x49, 0x67, 0x27, 0x06, 0x9f, 0xb4, 0x24,
		0xba, 0xf0, 0x49, 0xff, 0x54, 0x34, 0xc0, 0x27, 0x2d, 0x81, 0x20, 0x7c, 0xd2, 0xf9, 0xb1, 0x57,
		0xe0, 0x93, 0x5e, 0xc9, 0x77, 0xb4, 0xc3, 0x3e, 0x69, 0xf4, 0x5a, 0x59, 0xa9, 0x9a, 0x7f, 0x61,
		0x99, 0xfb, 0xc2, 0x4f, 0x85, 0x8c, 0x44, 0x53, 0xd3, 0x10, 0x57, 0x58, 0xbd, 0x95, 0xe8, 0x3a,
		0x2b, 0x41, 0x61, 0x04, 0x94, 0x55, 0x6e, 0xba, 0xfd, 0x28, 0xab, 0x54, 0x2f, 0x2c, 0x85, 0xb9,
		0xfd, 0x25, 0x0c, 0x55, 0x10, 0x39, 0x44, 0x21, 0x1d, 0x9a, 0xf0, 0xe1, 0x43, 0x22, 0x4b, 0xcb,
		0xa9, 0x18, 0x41, 0x97, 0x71, 0x74, 0x19, 0x87, 0x38, 0x85, 0x38, 0x45, 0x95, 0xba, 0x3a, 0x2b,
		0x4a, 0xb8, 0x35, 0x25, 0x43, 0x0c, 0x48, 0x14, 0x07, 0xb2, 0xc4, 0x82, 0x74, 0xf1, 0x20, 0x5d,
		0x4c, 0xc8, 0x15, 0x17, 0x62, 0xbd, 0x10, 0xa8, 0x52, 0xcf, 0x81, 0xf3, 0x01, 0x45, 0xda, 0x90,
		0xc1, 0x90, 0xc1, 0x90, 0xc1, 0xb9, 0x95, 0xc1, 0x48, 0x88, 0x13, 0xfc, 0x85, 0x84, 0x38, 0xca,
		0xdd, 0x4e, 0x1f, 0x1c, 0x09, 0x71, 0xd9, 0x98, 0x16, 0x09, 0x71, 0xeb, 0xf2, 0x00, 0x12, 0xe2,
		0x72, 0xa0, 0x60, 0xe5, 0xaf, 0x8a, 0x84, 0x38, 0x24, 0xc4, 0xcd, 0xda, 0x21, 0x48, 0x88, 0x13,
		0x40, 0x0c, 0x09, 0x71, 0x92, 0xe8, 0x22, 0x21, 0xee, 0xa7, 0xa2, 0x01, 0x09, 0x71, 0x12, 0x08,
		0x22, 0x21, 0x2e, 0x3f, 0xf6, 0xca, 0x96, 0x27, 0xc4, 0xa1, 0x46, 0x79, 0x73, 0x63, 0x0b, 0x2e,
		0x59, 0x31, 0x4b, 0xc3, 0x25, 0xbb, 0x8c, 0x00, 0x5c, 0xb2, 0x02, 0x38, 0x16, 0x2e, 0x59, 0x59,
		0x98, 0x16, 0x2e, 0x59, 0x82, 0xdd, 0x4e, 0x1f, 0x1c, 0x2e, 0xd9, 0x6c, 0x4c, 0x0b, 0x97, 0xec,
		0xba, 0x3c, 0x00, 0x97, 0x6c, 0xce, 0xc0, 0x88, 0x06, 0x97, 0xac, 0x40, 0xf5, 0x05, 0x97, 0xec,
		0x52, 0xc7, 0x11, 0x5c, 0xb2, 0xd9, 0x89, 0xc1, 0x25, 0x2b, 0x89, 0x2e, 0x5c, 0xb2, 0x3f, 0x15,
		0x0d, 0x70, 0xc9, 0x4a, 0x20, 0x08, 0x97, 0x6c, 0x7e, 0xec, 0x15, 0xb8, 0x64, 0x65, 0xae, 0x80,
		0x12, 0xdd, 0x05, 0x25, 0xba, 0x71, 0x11, 0x95, 0xaa, 0x62, 0x32, 0xd2, 0x39, 0xab, 0xbf, 0xb3,
		0x27, 0x01, 0xa5, 0x24, 0xa5, 0x96, 0x15, 0xf0, 0x06, 0xe7, 0x19, 0x67, 0xb6, 0x9e, 0x5b, 0x8e,
		0x61, 0xb3, 0x07, 0xe6, 0x64, 0x45, 0x86, 0x21, 0x72, 0x9e, 0x5a, 0xa9, 0x7a, 0x54, 0xaf, 0x1f,
		0x1c, 0xd6, 0xeb, 0x95, 0xc3, 0xbd, 0xc3, 0xca, 0xf1, 0xfe, 0x7e, 0xf5, 0xa0, 0x9a, 0x01, 0xe7,
		0x96, 0xda, 0xfe, 0x90, 0xf9, 0x6c, 0xf8, 0x31, 0xdc, 0x39, 0x67, 0x64, 0xdb, 0x22, 0x96, 0xba,
		0x0a, 0x98, 0x9f, 0x09, 0xa2, 0x6e, 0xca, 0x00, 0x82, 0x2e, 0x70, 0x2e, 0x2e, 0x6e, 0x29, 0x53,
		0x1d, 0xa6, 0x3f, 0x1a, 0x70, 0x27, 0x01, 0x8b, 0x17, 0xf1, 0x03, 0x35, 0x93, 0xe7, 0xe9, 0x9f,
		0x7b, 0x76, 0xd0, 0xff, 0x35, 0x7a, 0x9e, 0x7e, 0x37, 0xa1, 0xdc, 0x0a, 0x09, 0x7f, 0x8c, 0xe8,
		0xbe, 0xa1, 0xb9, 0xe8, 0x72, 0x27, 0xa0, 0x67, 0xe4, 0x04, 0x6a, 0x0e, 0x58, 0x6f, 0xd3, 0x57,
		0xdf, 0xba, 0x35, 0xb6, 0x6d, 0xc3, 0xe2, 0xdd, 0x4c, 0xc5, 0xba, 0x1b, 0x16, 0xe7, 0x6e, 0x5c,
		0x8c, 0x9b, 0x25, 0xbc, 0x28, 0x20, 0x8c, 0x98, 0x35, 0x5c, 0x28, 0x2c, 0x2c, 0x28, 0x2c, 0xfc,
		0x27, 0x26, 0xcc, 0x27, 0x57, 0x14, 0x6c, 0x5a, 0xfc, 0x5a, 0x0a, 0xd5, 0x61, 0x12, 0x7d, 0xdb,
		0xf8, 0xc4, 0xc6, 0x4c, 0x33, 0xb5, 0xd6, 0xa6, 0x43, 0xe4, 0xd9, 0xad, 0x39, 0xb2, 0x79, 0xa6,
		0xf0, 0xcf, 0xf8, 0x88, 0xf8, 0xc9, 0x18, 0xf4, 0x6e, 0x26, 0xed, 0xaf, 0x37, 0x35, 0xd0, 0x32,
		0x65, 0x1f, 0x64, 0xce, 0x36, 0x10, 0x91, 0x5d, 0x20, 0x30, 0x9b, 0x40, 0x54, 0xf6, 0x80, 0xf0,
		0x6c, 0x01, 0xe1, 0xd9, 0x01, 0x62, 0xb3, 0x01, 0x68, 0x41, 0x45, 0xe6, 0xe8, 0x7e, 0xca, 0x31,
		0xd6, 0x90, 0x39, 0xdc, 0xe2, 0x4f, 0xd9, 0xda, 0x90, 0xa4, 0x3a, 0x33, 0x8b, 0xd5, 0xdf, 0x4c,
		0x1e, 0xe5, 0xa3, 0x19, 0x08, 0xec, 0xd7, 0x71, 0x71, 0xd5, 0x6a, 0x25, 0xce, 0xbb, 0xde, 0xe7,
		0x8e, 0x91, 0x95, 0x0b, 0xa3, 0x60, 0x5e, 0x20, 0x24, 0xde, 0x2d, 0x38, 0x31, 0x6b, 0xec, 0x50,
		0x2b, 0xe5, 0x21, 0x07, 0x4d, 0xf0, 0xbb, 0x65, 0xd3, 0x0c, 0xe2, 0x9c, 0x39, 0xd7, 0xd4, 0xf2,
		0xe1, 0x0d, 0xc1, 0xd9, 0x95, 0xbc, 0xef, 0x3a, 0x73, 0x06, 0xa6, 0x17, 0x8c, 0xec, 0x6c, 0x38,
		0x35, 0x3d, 0xaf, 0xb9, 0x15, 0xa1, 0x9b, 0xa1, 0x9b, 0xa1, 0x9b, 0xa1, 0x9b, 0x67, 0x5f, 0xb0,
		0x73, 0x69, 0x5c, 0x9d, 0xb5, 0xff, 0x6c, 0x76, 0x8d, 0xbe, 0x71, 0x71, 0xda, 0xe8, 0x5c, 0x5e,
		0xb5, 0x1a, 0xbd, 0x66, 0xfb, 0x62, 0x7b, 0x95, 0x74, 0xe7, 0x4f, 0xa3, 0x6f, 0xf4, 0x7e, 0x33,
		0xba, 0x17, 0x46, 0xaf, 0xdf, 0x6d, 0xfc, 0xd9, 0x3f, 0x6f, 0x9f, 0x19, 0xdb, 0xa8, 0xb1, 0x67,
		0x5e, 0xb4, 0xd7, 0xf8, 0xf5, 0x57, 0xe3, 0x4c, 0xd4, 0xbb, 0x42, 0x83, 0xcf, 0xed, 0x3a, 0xe7,
		0xb6, 0xee, 0xf9, 0xae, 0x67, 0xde, 0x09, 0x52, 0xe0, 0x2f, 0x17, 0x54, 0xe9, 0x1f, 0x08, 0xd5,
		0x09, 0x5c, 0x02, 0x30, 0x3b, 0x60, 0x76, 0xd0, 0x98, 0x1d, 0x37, 0xae, 0x6b, 0x33, 0xd3, 0x11,
		0x61, 0x72, 0x54, 0x11, 0xb7, 0x91, 0x1a, 0xb7, 0xd9, 0x20, 0x8e, 0xbe, 0x46, 0x9c, 0xe6, 0x8d,
		0xc0, 0xcd, 0xdc, 0x74, 0x13, 0xe5, 0x6d, 0x5e, 0x69, 0xad, 0x30, 0xd4, 0x8a, 0xb1, 0xcb, 0xd5,
		0xce, 0xe2, 0xf5, 0x9d, 0x5d, 0x61, 0x57, 0x4b, 0x76, 0xe0, 0x05, 0x2b, 0xef, 0xe5, 0xa4, 0xa5,
		0x5a, 0xf8, 0x5b, 0x2b, 0x9e, 0xd9, 0x7a, 0x91, 0xb0, 0xb5, 0xf5, 0xde, 0x26, 0x7a, 0x2e, 0x83,
		0x5e, 0xdb, 0x54, 0x8f, 0x65, 0xd6, 0x5b, 0x99, 0xf5, 0x54, 0x36, 0xbd, 0x24, 0xf6, 0x1e, 0xaf,
		0x1b, 0xb9, 0x2a, 0x0d, 0x5c, 0x27, 0xe0, 0xbe, 0x69, 0x39, 0x6c, 0xa8, 0x27, 0xd7, 0x78, 0xc3,
		0x68, 0xee, 0xdc, 0x4a, 0xc4, 0x81, 0xdd, 0x0a, 0x02, 0xbb, 0x4a, 0xcd, 0xb4, 0xed, 0x0e, 0xec,
		0x9a, 0x0f, 0x6c, 0xa8, 0xb3, 0x47, 0xcf, 0xb6, 0x06, 0x16, 0x8f, 0xf8, 0x3b, 0x10, 0x10, 0xe2,
		0x5d, 0xb4, 0x6a, 0x36, 0x54, 0x54, 0x05, 0x2a, 0x02, 0x2a, 0x2a, 0x0a, 0x2a, 0xca, 0xda, 0x64,
		0x7c, 0xd1, 0x05, 0x12, 0xe7, 0xff, 0x5c, 0xb4, 0x78, 0xce, 0x26, 0x0b, 0x60, 0x50, 0x8b, 0xd2,
		0xcb, 0x2c, 0xed, 0x52, 0xcb, 0xb9, 0xdc, 0x62, 0x7c, 0xb4, 0xb9, 0x99, 0x2c, 0x30, 0x18, 0xdf,
		0x02, 0xc1, 0xce, 0xf1, 0x64, 0x5d, 0xb1, 0xed, 0x53, 0xaa, 0x68, 0x9f, 0x22, 0x64, 0x69, 0xb4,
		0x4f, 0x21, 0x15, 0x15, 0x62, 0x44, 0x86, 0x20, 0xd1, 0x21, 0x5c, 0x84, 0xcc, 0xd8, 0x11, 0xe2,
		0x79, 0x6a, 0xda, 0x90, 0x10, 0xcd, 0x4e, 0x62, 0xbb, 0x32, 0x49, 0x13, 0x2f, 0x32, 0xc5, 0x0c,
		0x81, 0xb8, 0x91, 0x2d, 0x76, 0xc8, 0xc4, 0x0f, 0x99, 0x18, 0xa2, 0x11, 0x47, 0x62, 0xc5, 0x92,
		0x60, 0xf1, 0x94, 0x6e, 0x81, 0xf0, 0x2e, 0x4f, 0x73, 0x1c, 0x2f, 0x7c, 0x08, 0xca, 0x9c, 0xd9,
		0x72, 0x94, 0xeb, 0x1d, 0x96, 0x34, 0x9a, 0x36, 0x5d, 0x5f, 0xfa, 0x88, 0x5a, 0xf1, 0x8c, 0x2c,
		0x70, 0x8b, 0x4b, 0x81, 0x35, 0xd4, 0x3d, 0xdf, 0xe5, 0x2c, 0xea, 0x59, 0xa3, 0xfb, 0xec, 0xbf,
		0x23, 0xcb, 0x67, 0x43, 0x79, 0x9a, 0x72, 0x19, 0x41, 0xc1, 0x6c, 0x23, 0x22, 0xf1, 0x61, 0xe9,
		0xe2, 0x51, 0x0d, 0xa3, 0x58, 0x51, 0x77, 0x0d, 0xe3, 0x81, 0xca, 0x78, 0xd0, 0x03, 0x1f, 0xf6,
		0x43, 0x4e, 0xed, 0x87, 0xf0, 0x6c, 0x60, 0x42, 0x08, 0xe6, 0xfb, 0xec, 0xf9, 0x24, 0xaf, 0xda,
		0x10, 0x55, 0xd8, 0x10, 0xbb, 0x6d, 0x43, 0x04, 0xcc, 0x4e, 0x34, 0xfa, 0x83, 0x3b, 0x64, 0x72,
		0xcd, 0x87, 0x17, 0xb4, 0x8a, 0x64, 0x39, 0x9c, 0x37, 0xff, 0x12, 0x96, 0x87, 0x0b, 0xf3, 0x01,
		0xe6, 0x03, 0xcc, 0x07, 0x98, 0x0f, 0xb2, 0xcd, 0x07, 0xb4, 0x95, 0x5c, 0xb6, 0xf5, 0x74, 0x6d,
		0x25, 0x1b, 0x67, 0xff, 0xaf, 0x7f, 0xd9, 0x3c, 0xeb, 0xb7, 0x2f, 0x5a, 0x9f, 0xa5, 0x37, 0x94,
		0x94, 0xa5, 0xa4, 0x24, 0x5d, 0x81, 0xa9, 0xf3, 0x90, 0xde, 0x8c, 0x70, 0xe6, 0x1c, 0xe4, 0x36,
		0xe9, 0x9b, 0x3a, 0x85, 0x9d, 0x6d, 0x65, 0x07, 0x1c, 0x20, 0x1d, 0x07, 0xe4, 0x2a, 0xea, 0x27,
		0xe9, 0x80, 0x64, 0xe4, 0xb0, 0xdb, 0x81, 0x17, 0x94, 0x5f, 0x26, 0xc4, 0x96, 0x17, 0xa5, 0xfb,
		0x2d, 0xfa, 0xb0, 0x9c, 0x64, 0x20, 0x6c, 0xd1, 0xd0, 0x9b, 0xf4, 0xfd, 0x7c, 0x77, 0xc4, 0x99,
		0xee, 0xde, 0xfc, 0x2f, 0x1b, 0xf0, 0x40, 0x7c, 0xee, 0xc6, 0x12, 0x3a, 0xc8, 0xe5, 0x10, 0x05,
		0x70, 0x90, 0xcb, 0x81, 0x5c, 0x0e, 0xa1, 0x52, 0x5d, 0x78, 0x2e, 0xc7, 0x42, 0x11, 0x20, 0xcf,
		0xe7, 0xb4, 0x98, 0x9c, 0x1c, 0x8f, 0x4b, 0x15, 0x1e, 0x17, 0x64, 0x7b, 0x14, 0xc5, 0xdd, 0xb2,
		0x6b, 0xbe, 0x16, 0xd1, 0x82, 0x2c, 0x5d, 0x58, 0x70, 0x9e, 0xeb, 0xd2, 0x0b, 0x25, 0x34, 0xef,
		0x95, 0x48, 0x84, 0x49, 0x17, 0x65, 0x14, 0x22, 0x8d, 0x50, 0xb4, 0x51, 0x89, 0x38, 0x72, 0x51,
		0x47, 0x2e, 0xf2, 0x68, 0x45, 0x9f, 0x3c, 0xa7, 0x8c, 0x4c, 0x9f, 0x9b, 0x2c, 0x91, 0x98, 0x12,
		0x30, 0x87, 0x43, 0x9f, 0x05, 0x81, 0x7c, 0x36, 0x1e, 0xdf, 0xcc, 0x31, 0x41, 0xc9, 0x3c, 0x25,
		0x27, 0xc2, 0x46, 0x2e, 0x34, 0x29, 0x85, 0xa7, 0x02, 0x21, 0x4a, 0x2d, 0x4c, 0x95, 0x09, 0x55,
		0x65, 0xc2, 0x55, 0x8d, 0x90, 0x95, 0x2b, 0x6c, 0x25, 0x0b, 0xdd, 0x74, 0xcb, 0xa4, 0xc5, 0xfe,
		0x96, 0xde, 0x38, 0xcb, 0xd3, 0x69, 0xe4, 0xa3, 0x26, 0x69, 0x26, 0xed, 0x6b, 0x7b, 0xf9, 0x85,
		0x84, 0xd9, 0x69, 0x84, 0xc8, 0x8b, 0x93, 0xfb, 0x56, 0x27, 0x3c, 0xbb, 0xb9, 0x33, 0x3c, 0x22,
		0xa4, 0xd9, 0x31, 0x39, 0x67, 0xbe, 0x43, 0x76, 0x9c, 0x29, 0xe1, 0xb7, 0x5f, 0x2a, 0xfa, 0xf1,
		0xf5, 0x8f, 0x2f, 0x55, 0xfd, 0xf8, 0x3a, 0xfe, 0xb6, 0x1a, 0xfd, 0xf1, 0x4f, 0xed, 0xf9, 0x47,
		0xed, 0x4b, 0x45, 0xaf, 0x27, 0x9f, 0xd6, 0xf6, 0xbf, 0x54, 0xf4, 0xfd, 0xeb, 0x77, 0x6f, 0xbf,
		0x7e, 0xfd, 0xb0, 0xee, 0xef, 0xbc, 0xfb, 0x67, 0xef, 0xb9, 0x44, 0xf6, 0x5a, 0xd7, 0x94, 0xc7,
		0xd6, 0xbe, 0x6c, 0xfe, 0xa5, 0xec, 0xec, 0xfe, 0xe7, 0x2d, 0xd5, 0xe9, 0xbd, 0xfb, 0x17, 0xe1,
		0xf9, 0x91, 0x50, 0x7a, 0x7e, 0xbf, 0xc5, 0x62, 0xf3, 0x00, 0x62, 0x53, 0xb6, 0xd8, 0x8c, 0x6e,
		0x91, 0xa9, 0xdf, 0x36, 0xf4, 0x4f, 0xd7, 0xff, 0x54, 0xdf, 0xd7, 0x9f, 0x4f, 0xde, 0xfd, 0x73,
		0xf8, 0xfc, 0xf2, 0xc3, 0x1f, 0x8b, 0x7e, 0xac, 0xfa, 0xfe, 0xf0, 0xf9, 0x64, 0xc9, 0xbf, 0x1c,
		0x3c, 0x9f, 0xac, 0xb8, 0xc6, 0xfe, 0xf3, 0xdb, 0xb9, 0x1f, 0x0d, 0x3f, 0xaf, 0x2d, 0xfb, 0x85,
		0xfa, 0x92, 0x5f, 0xd8, 0x5b, 0xf6, 0x0b, 0x7b, 0x4b, 0x7e, 0x61, 0xe9, 0x23, 0xd5, 0x96, 0xfc,
		0xc2, 0xfe, 0xf3, 0x8f, 0xb9, 0x9f, 0x7f, 0xbb, 0xf8, 0x47, 0x0f, 0x9e, 0xdf, 0xfd, 0x58, 0xf6,
		0x6f, 0x87, 0xcf, 0x3f, 0x4e, 0xde, 0xbd, 0x83, 0x22, 0x91, 0xa6, 0x48, 0xc0, 0xce, 0xf4, 0xec,
		0xbc, 0x7d, 0x8a, 0xf5, 0x4d, 0xb1, 0xdf, 0x43, 0x36, 0x02, 0x96, 0x9c, 0xd1, 0x35, 0x47, 0x8f,
		0x2c, 0xc3, 0x8b, 0x8e, 0x11, 0x24, 0x1e, 0x51, 0xe9, 0xde, 0xf5, 0x74, 0x4e, 0xe1, 0xa4, 0x48,
		0xed, 0xb5, 0x94, 0x22, 0xdc, 0xb7, 0x70, 0xdf, 0xc2, 0x7d, 0x0b, 0xf7, 0x2d, 0xdc, 0xb7, 0x53,
		0x37, 0x2e, 0xaa, 0x91, 0x21, 0x12, 0x91, 0x9a, 0xe4, 0xe2, 0x8e, 0x39, 0x5a, 0x52, 0x8b, 0x3d,
		0xe6, 0x0f, 0x8f, 0xa2, 0xf8, 0x63, 0x8e, 0x6a, 0x54, 0x0c, 0xd2, 0x6a, 0xb7, 0x2f, 0x0d, 0x4a,
		0x67, 0x44, 0x54, 0x15, 0x72, 0xd9, 0xeb, 0x36, 0x4f, 0x7b, 0xa5, 0x6d, 0xf2, 0x27, 0x11, 0x54,
		0x8c, 0xcc, 0x91, 0x8c, 0x0f, 0x4f, 0xba, 0x42, 0x9f, 0xd5, 0x7e, 0xf1, 0xd1, 0xc9, 0x2a, 0x23,
		0xa1, 0x07, 0x2d, 0xcf, 0x00, 0x2d, 0x00, 0x2d, 0xb2, 0xb6, 0xcb, 0x72, 0x86, 0xec, 0x91, 0x0e,
		0xb1, 0xc4, 0xe4, 0x00, 0x57, 0x00, 0x57, 0x00, 0x57, 0x00, 0x57, 0x00, 0x57, 0xa6, 0x6e, 0xdc,
		0xc8, 0x72, 0xf8, 0x11, 0x21, 0x4c, 0xd9, 0x27, 0x20, 0xd5, 0x35, 0x9d, 0xbb, 0xad, 0x4c, 0x34,
		0x39, 0xb7, 0x1c, 0x52, 0x4b, 0x5a, 0x4b, 0x07, 0x4d, 0xd2, 0x5a, 0xd3, 0x11, 0xdd, 0x4f, 0xbe,
		0x19, 0x75, 0xa0, 0x39, 0xb3, 0xee, 0xac, 0xa8, 0xc8, 0x91, 0xfa, 0x01, 0x2e, 0xd8, 0x9d, 0xc9,
		0xad, 0x6f, 0xe1, 0xbb, 0x47, 0xdd, 0xe8, 0xc8, 0xa8, 0x3f, 0x13, 0xe2, 0x96, 0x73, 0xf3, 0x51,
		0x1d, 0x4b, 0xd5, 0xf6, 0xf7, 0xc1, 0x54, 0x54, 0x4c, 0x85, 0x60, 0x1a, 0x70, 0xe9, 0x56, 0xe0,
		0xd2, 0x42, 0x15, 0x6f, 0x10, 0x1d, 0x78, 0x0e, 0xdb, 0x2f, 0x2c, 0x6e, 0x22, 0xb0, 0xf8, 0x63,
		0xa1, 0xbd, 0x1a, 0xe4, 0x33, 0x8c, 0x04, 0x66, 0x91, 0xec, 0x12, 0x21, 0x71, 0x85, 0x48, 0x76,
		0x81, 0xa0, 0x3a, 0x31, 0x9f, 0x2e, 0x0e, 0x54, 0x27, 0xee, 0xb2, 0x82, 0x93, 0xee, 0xb2, 0x98,
		0x4c, 0x75, 0x65, 0xe6, 0xad, 0xcf, 0x6e, 0x65, 0xde, 0x98, 0x71, 0x2c, 0xf5, 0x50, 0x22, 0x8d,
		0x4e, 0xa2, 0xa3, 0x3f, 0x7c, 0x48, 0xb4, 0x5e, 0x39, 0x96, 0xc9, 0x3b, 0xac, 0xfb, 0xe2, 0x11,
		0xcf, 0xd2, 0x75, 0x5f, 0x4c, 0xa6, 0xe0, 0x95, 0xf9, 0x35, 0xe8, 0x3e, 0xe8, 0x3e, 0xe8, 0xbe,
		0x5c, 0xe8, 0x3e, 0x54, 0xe6, 0xe7, 0x12, 0x28, 0x90, 0x01, 0x06, 0x4a, 0xe1, 0xa9, 0x40, 0x88,
		0x52, 0x0b, 0x53, 0x65, 0x42, 0x55, 0x99, 0x70, 0x55, 0x23, 0x64, 0xe5, 0xfb, 0xe8, 0x34, 0x54,
		0xe6, 0x0b, 0x33, 0x28, 0x51, 0x99, 0x2f, 0xe2, 0xe4, 0x50, 0x99, 0x2f, 0x9d, 0x30, 0x2a, 0xf3,
		0x33, 0x1d, 0x1b, 0x2a, 0xf3, 0xc5, 0x9f, 0x1f, 0x2a, 0xf3, 0xb3, 0x8a, 0x4d, 0x54, 0xe6, 0x4b,
		0x17, 0x9b, 0x28, 0x65, 0x46, 0x65, 0xfe, 0xb6, 0x29, 0x12, 0xb0, 0x33, 0x2a, 0xf3, 0x73, 0x8e,
		0x4f, 0xe5, 0xbf, 0x07, 0x0a, 0xca, 0x57, 0x33, 0x33, 0x50, 0x50, 0x0e, 0xaf, 0x23, 0xbc, 0x8e,
		0xf0, 0x3a, 0xc2, 0xeb, 0xb8, 0xe8, 0xc6, 0xa1, 0xa0, 0x5c, 0xdc, 0xe1, 0xa1, 0xa0, 0xbc, 0xf0,
		0x6e, 0x10, 0x14, 0x94, 0x17, 0xd4, 0xd6, 0x46, 0x1d, 0xf4, 0xfc, 0x21, 0xa3, 0x0e, 0x1a, 0x56,
		0x36, 0xac, 0x6c, 0x58, 0xd9, 0xb0, 0xb2, 0x55, 0x5b, 0xd9, 0xa8, 0x83, 0xce, 0xfa, 0x85, 0x3a,
		0x68, 0x39, 0x74, 0x51, 0x07, 0x4d, 0xc2, 0x52, 0xa8, 0x83, 0xde, 0x11, 0xa6, 0x42, 0xe8, 0x42,
		0x2d, 0x9c, 0x42, 0xf9, 0xee, 0x02, 0x3a, 0x05, 0x2f, 0xdf, 0x8d, 0x2b, 0x6b, 0x8a, 0x52, 0xc1,
		0x94, 0xeb, 0x01, 0xa8, 0xbf, 0xb3, 0x27, 0x59, 0x50, 0xbd, 0xd4, 0xb2, 0x02, 0xde, 0xe0, 0x5c,
		0xd2, 0x84, 0xd5, 0x73, 0xcb, 0x31, 0x6c, 0x16, 0x22, 0x1d, 0x49, 0x0a, 0x25, 0x54, 0xd2, 0x53,
		0x14, 0xaa, 0x47, 0xf5, 0xfa, 0xc1, 0x61, 0xbd, 0x5e, 0x39, 0xdc, 0x3b, 0xac, 0x1c, 0xef, 0xef,
		0x57, 0x0f, 0xaa, 0x12, 0xd4, 0x68, 0xa9, 0xed, 0x0f, 0x99, 0xcf, 0x86, 0x1f, 0xc3, 0x63, 0x71,
		0x46, 0xb6, 0x2d, 0x93, 0xc4, 0x55, 0xc0, 0x7c, 0x29, 0x1a, 0x51, 0x34, 0x97, 0x4a, 0x96, 0x8b,
		0x05, 0x97, 0x87, 0x25, 0x29, 0x35, 0x92, 0xfe, 0x68, 0xc0, 0x9d, 0x04, 0xae, 0x5e, 0xc4, 0xaf,
		0xd8, 0x4c, 0xde, 0xb0, 0x7f, 0xee, 0xd9, 0x41, 0xbf, 0x15, 0x78, 0x41, 0xff, 0x74, 0xf2, 0x86,
		0x1d, 0x93, 0xdf, 0xf7, 0x43, 0x80, 0x3b, 0x34, 0x92, 0xa7, 0x8c, 0x3e, 0x19, 0xff, 0xa5, 0x1b,
		0x3e, 0x71, 0x3b, 0x7e, 0xe0, 0x37, 0xf9, 0x14, 0xb0, 0xf9, 0x1a, 0xb2, 0x2f, 0x89, 0xe9, 0x0b,
		0xc3, 0xec, 0x62, 0xb8, 0x24, 0xfb, 0x99, 0x0a, 0x38, 0xcf, 0x52, 0x72, 0x91, 0xc4, 0x9c, 0x62,
		0xea, 0x45, 0x8a, 0x56, 0x15, 0xc4, 0x6d, 0x62, 0xfd, 0xe8, 0xc2, 0xfd, 0xe5, 0x32, 0xfc, 0xe2,
		0x12, 0xfd, 0xdf, 0xb2, 0xfc, 0xdc, 0xd2, 0xfd, 0xd9, 0xd2, 0xfd, 0xd6, 0x72, 0xfd, 0xd3, 0xf9,
		0x92, 0xe0, 0xc2, 0xfd, 0xca, 0x12, 0x9b, 0x53, 0xc8, 0x68, 0x46, 0xb1, 0xa0, 0xf9, 0x44, 0x24,
		0xb2, 0xb6, 0x48, 0xb0, 0x8b, 0xed, 0x25, 0x21, 0xa5, 0x77, 0x84, 0xe0, 0x5e, 0x11, 0xc2, 0x7b,
		0x43, 0x40, 0xb4, 0x43, 0xb4, 0x17, 0x4e, 0xb4, 0x8b, 0xee, 0xc5, 0x20, 0xd6, 0x42, 0x94, 0x69,
		0x29, 0x4a, 0xb2, 0x18, 0xa5, 0x59, 0x8e, 0x32, 0xc5, 0x0c, 0x81, 0xb8, 0x91, 0x2d, 0x76, 0xc8,
		0xc4, 0x0f, 0x99, 0x18, 0xa2, 0x11, 0x47, 0xe2, 0xbd, 0x0f, 0x32, 0x1c, 0x67, 0xd2, 0x32, 0x1b,
		0xa6, 0x2c, 0x95, 0x28, 0xc5, 0x55, 0x02, 0xc3, 0xa7, 0x65, 0x99, 0x79, 0xf5, 0x16, 0x09, 0xb4,
		0x29, 0x02, 0x6b, 0xa8, 0x7b, 0xbe, 0xcb, 0x59, 0x14, 0x26, 0xd5, 0x7d, 0xf6, 0xdf, 0x91, 0xe5,
		0xb3, 0xa1, 0x3c, 0x85, 0xb0, 0x8c, 0xa0, 0x60, 0xfe, 0x3b, 0x63, 0xb7, 0xe6, 0xc8, 0xe6, 0x52,
		0xb2, 0x42, 0x4a, 0x91, 0xdf, 0x5a, 0xec, 0x8d, 0xbe, 0x86, 0x8e, 0xa4, 0xd2, 0x91, 0x7a, 0xe0,
		0x43, 0x4d, 0xe6, 0x54, 0x4d, 0x86, 0x67, 0x03, 0x4d, 0x29, 0x98, 0xef, 0x6f, 0x5c, 0xd7, 0x66,
		0xa6, 0x23, 0x53, 0x55, 0x56, 0x77, 0x44, 0x55, 0x06, 0xcc, 0x4e, 0x14, 0xd7, 0x83, 0x3b, 0x64,
		0x72, 0xb5, 0xe4, 0x0b, 0x5a, 0x45, 0x52, 0x90, 0xe7, 0xcd, 0xbf, 0x8c, 0xb3, 0xfe, 0x79, 0xfb,
		0xcc, 0x80, 0x96, 0x84, 0x96, 0x84, 0x96, 0x84, 0x96, 0xcc, 0xbf, 0x96, 0x64, 0xce, 0xe8, 0x81,
		0xf9, 0x71, 0xd8, 0x5b, 0xa2, 0xa6, 0x94, 0x50, 0x6d, 0x2a, 0xb7, 0xba, 0x94, 0xa6, 0x9a, 0x34,
		0xae, 0x1e, 0x6d, 0x9c, 0xfd, 0xbf, 0xfe, 0x65, 0xf3, 0xac, 0xdf, 0xbe, 0x68, 0x7d, 0x96, 0xd9,
		0x35, 0x39, 0x2a, 0x1a, 0x95, 0xa5, 0xa4, 0x24, 0x5d, 0x81, 0xa9, 0xf3, 0x90, 0x5d, 0x18, 0x3a,
		0x7b, 0x0e, 0x52, 0x93, 0xa6, 0xa7, 0x4f, 0x41, 0x56, 0x0d, 0x68, 0xee, 0x53, 0x2b, 0x91, 0x47,
		0xb4, 0x9e, 0x21, 0x9e, 0xbb, 0x3c, 0x22, 0x81, 0x79, 0xc1, 0x02, 0xa2, 0xcb, 0x6f, 0x14, 0x1e,
		0xfe, 0x38, 0xaf, 0x57, 0x40, 0xdc, 0x47, 0x6c, 0x1a, 0xaf, 0xf8, 0xb4, 0x5d, 0x92, 0x34, 0x5d,
		0x09, 0x69, 0xb9, 0x12, 0xd2, 0x70, 0xb3, 0x32, 0x8d, 0x60, 0x49, 0x91, 0x3f, 0x09, 0x51, 0x12,
		0x92, 0xf1, 0x21, 0x28, 0x33, 0x36, 0x9b, 0xa0, 0xda, 0x5c, 0xbc, 0x6c, 0xf6, 0x9b, 0x1b, 0xf2,
		0x96, 0x28, 0x9e, 0x52, 0xcb, 0x4b, 0x9b, 0x1d, 0xd5, 0xfa, 0x1b, 0xbd, 0xc1, 0x26, 0x97, 0xf8,
		0xc8, 0x71, 0x98, 0xbd, 0xf9, 0xd0, 0x86, 0x14, 0x79, 0x8d, 0x17, 0xda, 0xf0, 0xa0, 0xb3, 0x65,
		0x19, 0x65, 0x76, 0xd6, 0x88, 0x70, 0xca, 0x08, 0x0c, 0xe3, 0x8b, 0xf2, 0xb0, 0x08, 0xf7, 0xa4,
		0x08, 0xf7, 0x98, 0x88, 0x0d, 0xb3, 0xd3, 0x0a, 0xa7, 0xac, 0x59, 0x3c, 0xc9, 0x9d, 0xc9, 0x7e,
		0xca, 0xb3, 0x77, 0x30, 0xeb, 0x11, 0x8b, 0x49, 0xf8, 0x13, 0xe6, 0x3f, 0x15, 0xe9, 0x2f, 0x95,
		0x90, 0x69, 0x23, 0xda, 0x19, 0x2a, 0xcd, 0xf9, 0x29, 0xcd, 0xd9, 0x29, 0x27, 0x53, 0x46, 0x2d,
		0x00, 0x12, 0x95, 0xa0, 0x57, 0xba, 0x31, 0x9d, 0xe1, 0x77, 0x6b, 0x18, 0xd9, 0x1d, 0x82, 0xb3,
		0x7c, 0x27, 0x4b, 0xe7, 0x3c, 0xd3, 0x17, 0x45, 0x1c, 0x42, 0x9d, 0x6d, 0xc8, 0xf4, 0x2d, 0x90,
		0xfb, 0x4c, 0x78, 0xa6, 0xaf, 0x39, 0xe2, 0xae, 0x2e, 0x5e, 0xaa, 0xcc, 0x5d, 0x88, 0x17, 0x74,
		0xe4, 0xc4, 0x6c, 0xab, 0x88, 0xd9, 0x22, 0xfb, 0x37, 0x4f, 0xa2, 0x89, 0x46, 0x44, 0x89, 0x15,
		0x55, 0x82, 0x45, 0x96, 0x34, 0xd1, 0x95, 0x2e, 0x3c, 0x18, 0xdf, 0x52, 0xc9, 0x23, 0x74, 0x13,
		0x3a, 0x05, 0x9f, 0xa1, 0x8b, 0xf9, 0xf1, 0x79, 0x10, 0x71, 0xe4, 0xa2, 0x8e, 0x5c, 0xe4, 0xd1,
		0x8a, 0x3e, 0x39, 0x22, 0x50, 0x92, 0x28, 0x94, 0x2e, 0x12, 0x27, 0xd6, 0xdd, 0xf0, 0x7f, 0x47,
		0x01, 0xd7, 0x2d, 0x87, 0x33, 0xff, 0x9b, 0x69, 0x53, 0xce, 0xd2, 0x9d, 0x25, 0x8c, 0xbe, 0xbb,
		0x79, 0x13, 0xa6, 0x0a, 0x84, 0x2a, 0xb5, 0x70, 0x55, 0x26, 0x64, 0x95, 0x09, 0x5b, 0x35, 0x42,
		0x57, 0xae, 0xf0, 0x95, 0x2c, 0x84, 0xd3, 0x2d, 0x53, 0xd3, 0x77, 0x77, 0xaf, 0x46, 0xd8, 0x78,
		0xf7, 0x10, 0x8d, 0x77, 0x37, 0x7f, 0x31, 0x34, 0xde, 0xa5, 0x7c, 0x00, 0x34, 0xde, 0x95, 0xcd,
		0x52, 0xf5, 0xda, 0x71, 0xfd, 0xf8, 0xe0, 0xb0, 0x76, 0x8c, 0xfe, 0xbb, 0x64, 0xbc, 0x85, 0xfe,
		0xbb, 0x39, 0x50, 0xf4, 0x44, 0x7d, 0x6d, 0x53, 0x7a, 0x4f, 0x77, 0x2e, 0xd7, 0xdd, 0x81, 0x3e,
		0x70, 0x1f, 0x3c, 0x9f, 0x05, 0x01, 0x1b, 0xea, 0x36, 0x33, 0x6f, 0x43, 0xe2, 0x98, 0x0b, 0xb3,
		0x14, 0xb3, 0xf2, 0x7b, 0x9f, 0x05, 0xf7, 0xae, 0x3d, 0x24, 0x07, 0xad, 0x13, 0xca, 0x40, 0xad,
		0x40, 0xad, 0x40, 0xad, 0x40, 0xad, 0x40, 0xad, 0x53, 0x37, 0xce, 0x63, 0xfe, 0x80, 0x39, 0xdc,
		0xbc, 0x63, 0x18, 0x19, 0x03, 0xe4, 0x0a, 0xe4, 0x0a, 0xe4, 0x4a, 0xcd, 0x52, 0xd5, 0x0a, 0x98,
		0x0a, 0x90, 0x15, 0x90, 0x15, 0x90, 0x35, 0x27, 0x90, 0x95, 0x39, 0xe6, 0x8d, 0xcd, 0x08, 0x91,
		0xea, 0x98, 0xa0, 0x64, 0xb6, 0x93, 0xd9, 0x0f, 0x66, 0x8e, 0x98, 0x84, 0x06, 0x6a, 0x73, 0x42,
		0x00, 0x80, 0x1e, 0x80, 0x1e, 0x80, 0x1e, 0x80, 0x1e, 0x80, 0x9e, 0xa4, 0x15, 0xdc, 0x32, 0x01,
		0x59, 0xad, 0xc2, 0x1a, 0x83, 0x35, 0x26, 0x6b, 0xbb, 0x1e, 0xcc, 0x47, 0xfd, 0xe6, 0x3b, 0x9d,
		0x31, 0x96, 0xd0, 0x83, 0x6d, 0x01, 0xdb, 0x02, 0xb6, 0x05, 0x6c, 0x0b, 0xd8, 0x16, 0x8b, 0x8a,
		0x4a, 0xf5, 0xbf, 0x6f, 0xbc, 0x80, 0xd0, 0xc4, 0x38, 0x22, 0x20, 0x75, 0xe5, 0xc4, 0xce, 0xc0,
		0xd2, 0xef, 0x44, 0xef, 0x86, 0x08, 0x85, 0x48, 0xa2, 0x88, 0x50, 0x20, 0x42, 0x21, 0x89, 0xa5,
		0x68, 0xc6, 0xf3, 0x82, 0xcb, 0x14, 0xe8, 0x68, 0x3a, 0x2a, 0x08, 0x59, 0x00, 0x24, 0xcb, 0x03,
		0xc9, 0x96, 0x43, 0x0b, 0x92, 0x63, 0x7a, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0xc9, 0x00,
		0xc9, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0xc9, 0x80, 0x2f, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0xc9, 0x00,
		0xc9, 0x00, 0xc9, 0x79, 0x5a, 0x59, 0x56, 0xc7, 0x17, 0xa2, 0x03, 0xa7, 0x6b, 0x50, 0x9e, 0xf4,
		0xe9, 0x4e, 0xfe, 0x2c, 0xa7, 0xa6, 0x6c, 0x79, 0xb6, 0xe1, 0x5f, 0x39, 0x69, 0x9e, 0x55, 0x94,
		0x59, 0x2e, 0x12, 0x9a, 0xe6, 0xb9, 0xdf, 0x98, 0x7f, 0x6b, 0xbb, 0xdf, 0xe5, 0x37, 0x2a, 0x4b,
		0x29, 0xa1, 0x55, 0x99, 0x2a, 0xaf, 0x0a, 0x5a, 0x95, 0x15, 0xd0, 0x6b, 0x82, 0x56, 0x65, 0xcb,
		0xb7, 0x46, 0x7a, 0xab, 0x32, 0xc9, 0x5d, 0x1c, 0xe7, 0x2e, 0xa6, 0xd4, 0x6e, 0x8e, 0x44, 0xa2,
		0x92, 0x4c, 0x64, 0x52, 0x8a, 0x4e, 0x05, 0x22, 0x94, 0x5a, 0x94, 0x2a, 0x13, 0xa9, 0xca, 0x44,
		0xab, 0x1a, 0x11, 0x4b, 0x03, 0x43, 0x65, 0x83, 0x44, 0xd9, 0xa2, 0x37, 0x25, 0x44, 0x55, 0xc6,
		0x34, 0x77, 0xc3, 0x69, 0xca, 0x99, 0x26, 0x1b, 0x4a, 0x58, 0xd6, 0x94, 0x12, 0x25, 0x28, 0x6f,
		0x4a, 0x7d, 0x22, 0x44, 0xfb, 0x48, 0x13, 0x6d, 0x25, 0x57, 0x72, 0x2a, 0x94, 0x9d, 0x42, 0xa5,
		0xa7, 0x4a, 0xf9, 0x29, 0x57, 0x82, 0xca, 0x95, 0xa1, 0x5a, 0xa5, 0x48, 0xa3, 0x1c, 0x89, 0x94,
		0x64, 0xba, 0x95, 0x64, 0xd1, 0xdb, 0xb9, 0x1b, 0x4b, 0x57, 0x46, 0x35, 0x87, 0x2e, 0xaa, 0x5b,
		0x75, 0x84, 0xc4, 0x4e, 0xf1, 0x94, 0xae, 0x32, 0xe7, 0x38, 0xdd, 0x4d, 0x24, 0x38, 0xc2, 0xd4,
		0xfb, 0x48, 0xd8, 0xc1, 0x6d, 0x5e, 0x7b, 0xce, 0x3f, 0x03, 0x6c, 0x22, 0xd8, 0x44, 0xb0, 0x89,
		0x60, 0x13, 0xc1, 0x26, 0x22, 0xbc, 0xb1, 0xa4, 0xbd, 0xe2, 0x5e, 0xca, 0x60, 0xc2, 0x64, 0x12,
		0xe2, 0xa4, 0xb3, 0xf1, 0x17, 0xad, 0x50, 0xd2, 0x54, 0x25, 0xa1, 0xa5, 0xc4, 0x15, 0x25, 0xa3,
		0xa5, 0xf4, 0x55, 0xa7, 0x0b, 0x4d, 0xee, 0x97, 0xaa, 0xb4, 0x21, 0x62, 0xd1, 0x35, 0xcb, 0x7a,
		0x0a, 0x92, 0xd5, 0xe6, 0x58, 0x8f, 0xbc, 0xf7, 0x1c, 0x98, 0x4f, 0x91, 0x76, 0xa6, 0xa7, 0x76,
		0x0d, 0x18, 0x0f, 0x18, 0x9f, 0x17, 0x18, 0xcf, 0x7d, 0xeb, 0xee, 0x8e, 0xf9, 0x3a, 0xfb, 0xc6,
		0x1c, 0xae, 0x0f, 0xdc, 0x51, 0x64, 0x8a, 0x13, 0xe3, 0xf8, 0x45, 0x0f, 0x01, 0x20, 0x0f, 0x20,
		0x0f, 0x20, 0x0f, 0x20, 0x0f, 0x20, 0x4f, 0x78, 0x63, 0x47, 0x96, 0xc3, 0xab, 0x07, 0x0a, 0x40,
		0xfc, 0x01, 0x40, 0x3c, 0x40, 0x3c, 0x70, 0x14, 0x40, 0xbc, 0x48, 0xd6, 0x3b, 0xd8, 0xdf, 0xdf,
		0xdb, 0x07, 0xfb, 0x01, 0xc6, 0x03, 0xc6, 0x03, 0xc6, 0x2b, 0x84, 0xf1, 0xa8, 0x5d, 0x5c, 0x83,
		0x5e, 0xee, 0x4a, 0xda, 0xc6, 0x49, 0x06, 0x52, 0x6b, 0xdb, 0xe4, 0xf3, 0x8a, 0xcc, 0x2e, 0x43,
		0x01, 0x37, 0x39, 0xa3, 0xab, 0xe9, 0x88, 0xc9, 0x6d, 0x59, 0x49, 0x47, 0x0d, 0x25, 0x1d, 0x05,
		0x72, 0xfc, 0xa0, 0xa4, 0x03, 0x25, 0x1d, 0xaf, 0x6f, 0x19, 0x4a, 0x3a, 0x44, 0x6f, 0x28, 0x4a,
		0x3a, 0x44, 0x2a, 0x37, 0x44, 0x3d, 0x0a, 0xad, 0xf4, 0x54, 0x29, 0x3f, 0xe5, 0x4a, 0x50, 0xb9,
		0x32, 0x54, 0xab, 0x14, 0x69, 0x7d, 0x1d, 0x28, 0xe9, 0x90, 0x88, 0x2e, 0xaa, 0x48, 0x55, 0x58,
		0x79, 0xcf, 0x50, 0x71, 0x00, 0x95, 0x0d, 0x95, 0x0d, 0x95, 0x0d, 0x95, 0x0d, 0x95, 0x8d, 0x8a,
		0x03, 0xa9, 0x5f, 0x48, 0x56, 0xa0, 0xa5, 0x8f, 0x68, 0x31, 0xb1, 0xe8, 0x9a, 0x65, 0x3d, 0x54,
		0x1c, 0x80, 0xf9, 0x34, 0xa4, 0x2a, 0x00, 0x65, 0x22, 0x21, 0x1e, 0x38, 0x13, 0x38, 0x13, 0x38,
		0x13, 0x38, 0x13, 0x38, 0x13, 0x09, 0xf1, 0xc0, 0x98, 0xc0, 0x98, 0xc0, 0x98, 0x5b, 0x84, 0x31,
		0x91, 0x10, 0x0f, 0x94, 0x09, 0x94, 0xa9, 0x96, 0x02, 0xf2, 0xb5, 0xa9, 0xf2, 0xb5, 0xe3, 0x34,
		0x61, 0xcc, 0xbb, 0x91, 0xcf, 0x7c, 0xbb, 0x3b, 0xef, 0x46, 0xf2, 0x0c, 0x96, 0xf8, 0xa5, 0xb9,
		0x3f, 0x1a, 0x70, 0x27, 0x41, 0x24, 0x17, 0xf1, 0x5b, 0x34, 0x93, 0x97, 0xe8, 0x9f, 0x7b, 0x76,
		0xd0, 0x6f, 0x05, 0x5e, 0xd0, 0x3f, 0x9d, 0xbc, 0x44, 0xc7, 0xe4, 0xf7, 0xfd, 0x5e, 0xf4, 0xec,
		0xfd, 0x8f, 0xe3, 0x87, 0xed, 0x37, 0x46, 0xdc, 0x9d, 0xfc, 0xad, 0x3d, 0x7e, 0xf4, 0x1d, 0x1e,
		0xd6, 0x23, 0xb7, 0x70, 0x81, 0xa4, 0x60, 0x81, 0x6c, 0x4c, 0x4f, 0x0d, 0x63, 0x7a, 0x72, 0xe4,
		0x70, 0xc3, 0x98, 0x9e, 0x5d, 0xd6, 0xb7, 0xd2, 0xc7, 0xf4, 0x98, 0xc3, 0xff, 0x1d, 0x05, 0x5c,
		0xb7, 0x1c, 0xce, 0xfc, 0x6f, 0xa6, 0x4d, 0x57, 0xdb, 0xf5, 0x92, 0x30, 0x26, 0xc9, 0xe7, 0x4d,
		0x98, 0x2a, 0x10, 0xaa, 0xd4, 0xc2, 0x55, 0x99, 0x90, 0x55, 0x26, 0x6c, 0xd5, 0x08, 0xdd, 0xed,
		0x40, 0xdc, 0xf4, 0x93, 0xe4, 0x47, 0x96, 0xc3, 0xf7, 0x6a, 0x84, 0x13, 0xe4, 0x0f, 0x31, 0xd0,
		0x7d, 0xf3, 0x17, 0xc3, 0x40, 0x77, 0xca, 0x07, 0xc0, 0x40, 0x77, 0xd9, 0x2c, 0x55, 0xaf, 0x1d,
		0xd7, 0x8f, 0x0f, 0x0e, 0x6b, 0xc7, 0x18, 0xe3, 0x4e, 0xc6, 0x5b, 0x18, 0xe3, 0xae, 0xf4, 0xf9,
		0x65, 0x36, 0xcf, 0x48, 0x10, 0x0f, 0x5d, 0x51, 0xd3, 0x4b, 0xac, 0x45, 0x55, 0xca, 0x04, 0xb0,
		0x05, 0xb0, 0x05, 0xb0, 0x05, 0xb0, 0x55, 0x30, 0xb0, 0x45, 0x5a, 0x6a, 0x44, 0x58, 0x62, 0x04,
		0xc0, 0x05, 0xc0, 0x05, 0xc0, 0x55, 0x04, 0xc0, 0x45, 0x5e, 0x1a, 0x04, 0xa4, 0x05, 0xa4, 0xb5,
		0x85, 0x48, 0x8b, 0xaa, 0x4b, 0x16, 0x71, 0x77, 0x2c, 0xd2, 0xae, 0x58, 0x14, 0xdd, 0xb0, 0xae,
		0x81, 0x43, 0x81, 0x43, 0x81, 0x43, 0x81, 0x43, 0x81, 0x43, 0x95, 0x74, 0xa9, 0x22, 0xea, 0x4e,
		0x55, 0x4c, 0x23, 0x62, 0x9c, 0x99, 0xa2, 0xdf, 0x5b, 0x77, 0xf7, 0xfa, 0xcd, 0x77, 0x3a, 0x6b,
		0x62, 0x8e, 0x32, 0xd4, 0x24, 0xd4, 0x24, 0xd4, 0x24, 0xd4, 0x24, 0xd4, 0xe4, 0xb4, 0x9a, 0x1c,
		0x27, 0xb8, 0xeb, 0x7f, 0xdf, 0x78, 0x01, 0xa1, 0xb6, 0x3c, 0x22, 0x20, 0x75, 0xe5, 0xc4, 0xee,
		0x98, 0xd2, 0xef, 0x44, 0xef, 0x06, 0x1f, 0xb1, 0x48, 0xa2, 0xf0, 0x11, 0xc3, 0x47, 0x2c, 0x89,
		0xa5, 0xaa, 0x47, 0xf5, 0xfa, 0xc1, 0x61, 0xbd, 0x5e, 0x39, 0xdc, 0x3b, 0xac, 0x1c, 0xef, 0xef,
		0x57, 0x0f, 0xaa, 0x48, 0xcf, 0x21, 0xe3, 0x32, 0x38, 0x8d, 0xb7, 0x16, 0xef, 0x3d, 0x98, 0x8f,
		0xa4, 0x28, 0x2f, 0xa1, 0x07, 0x6c, 0x07, 0x6c, 0x07, 0x6c, 0x07, 0x6c, 0x07, 0x6c, 0x07, 0x6c,
		0x07, 0x6c, 0x07, 0x6c, 0x07, 0xab, 0x1b, 0xd8, 0x0e, 0xd8, 0x0e, 0xd8, 0x0e, 0xd8, 0x4e, 0x24,
		0xb6, 0xb3, 0x1c, 0x5a, 0x6c, 0x17, 0xd3, 0x03, 0xb6, 0x03, 0xb6, 0x03, 0xb6, 0x03, 0xb6, 0x03,
		0xb6, 0x03, 0xb6, 0x03, 0xb6, 0x03, 0xb6, 0x83, 0xd5, 0x0d, 0x6c, 0x07, 0x6c, 0x07, 0x6c, 0xb7,
		0x7b, 0xd8, 0x0e, 0x4d, 0x4e, 0x17, 0xd0, 0xc9, 0x5d, 0x93, 0x53, 0x89, 0x8d, 0x74, 0x8b, 0xd1,
		0x26, 0x74, 0xe4, 0x0c, 0x93, 0x5e, 0xa9, 0xd2, 0x5b, 0x85, 0x4e, 0x48, 0x15, 0xbc, 0x5d, 0x68,
		0x05, 0xed, 0x42, 0x73, 0x84, 0xfe, 0xd1, 0x2e, 0x74, 0x97, 0x35, 0x97, 0xf4, 0x76, 0xa1, 0x83,
		0xf1, 0xad, 0x27, 0x72, 0xa4, 0x26, 0xf4, 0x68, 0x1c, 0xa9, 0x55, 0x38, 0x52, 0xf3, 0x2c, 0x42,
		0xa9, 0x45, 0xa9, 0x32, 0x91, 0xaa, 0x4c, 0xb4, 0xaa, 0x11, 0xb1, 0x34, 0xf0, 0x49, 0xb6, 0x23,
		0x55, 0xb6, 0xe8, 0x4d, 0x09, 0x51, 0x15, 0xb7, 0xcf, 0xdd, 0x70, 0x9a, 0x22, 0xf7, 0xc9, 0x86,
		0x12, 0x16, 0xbb, 0xa7, 0x44, 0x09, 0x8a, 0xde, 0x53, 0x2c, 0x8f, 0x39, 0x9f, 0x45, 0x53, 0x76,
		0x0a, 0x95, 0x9e, 0x2a, 0xe5, 0xa7, 0x5c, 0x09, 0x2a, 0x57, 0x86, 0x6a, 0x95, 0x22, 0x8d, 0x72,
		0x24, 0x52, 0x92, 0xe9, 0x56, 0xaa, 0x9b, 0xf3, 0x49, 0x57, 0x5c, 0x3f, 0x87, 0x2e, 0xaa, 0x5b,
		0x75, 0x84, 0xc4, 0xe3, 0xc7, 0x52, 0xba, 0x4f, 0x77, 0x2e, 0xd7, 0xdd, 0x81, 0x3e, 0x70, 0x1f,
		0x3c, 0x9f, 0x05, 0x01, 0x1b, 0xea, 0x36, 0x33, 0x6f, 0xc3, 0x87, 0x78, 0xc6, 0xf4, 0xf3, 0x95,
		0xb7, 0x11, 0xd3, 0xcf, 0x61, 0x15, 0xc1, 0x2a, 0x82, 0x55, 0x04, 0xab, 0x08, 0x56, 0x11, 0xa6,
		0x9f, 0x4b, 0xfc, 0xc2, 0xf4, 0x73, 0x5a, 0xfa, 0x18, 0x3f, 0x4d, 0x2c, 0xb6, 0x66, 0x59, 0x0f,
		0xd3, 0xcf, 0xc1, 0x7e, 0x94, 0xba, 0x99, 0x9e, 0xda, 0x35, 0x60, 0x3c, 0x60, 0x7c, 0x5e, 0x60,
		0x7c, 0x9a, 0x45, 0x44, 0x38, 0x56, 0x66, 0xde, 0x7a, 0x5c, 0xf0, 0x10, 0x80, 0xf1, 0x80, 0xf1,
		0x80, 0xf1, 0x80, 0xf1, 0x80, 0xf1, 0x84, 0x37, 0x96, 0x74, 0x82, 0xcd, 0x4b, 0x19, 0xbc, 0x0f,
		0x28, 0x0f, 0x28, 0x0f, 0x2c, 0x05, 0x28, 0x2f, 0x92, 0xf5, 0xc8, 0x27, 0xe2, 0x80, 0xf9, 0x00,
		0xe4, 0x01, 0xe4, 0x01, 0xe4, 0xe9, 0x28, 0xc8, 0x4e, 0x4c, 0x25, 0x66, 0x8c, 0xfc, 0x55, 0xb5,
		0xa5, 0xee, 0x89, 0x72, 0x52, 0x4d, 0x80, 0x06, 0x39, 0xf3, 0x87, 0x16, 0x55, 0xfe, 0x91, 0x95,
		0x75, 0xc4, 0xe4, 0xb6, 0xac, 0xaa, 0xa3, 0x86, 0xaa, 0x8e, 0x02, 0xf9, 0x7e, 0x50, 0xd5, 0x81,
		0xaa, 0x8e, 0xd7, 0xb7, 0x0c, 0x55, 0x1d, 0xa2, 0x37, 0x14, 0x55, 0x1d, 0x22, 0x95, 0x1b, 0x02,
		0x1f, 0x85, 0x56, 0x7a, 0xaa, 0x94, 0x9f, 0x72, 0x25, 0xa8, 0x5c, 0x19, 0xaa, 0x55, 0x8a, 0xb4,
		0xce, 0x0e, 0x54, 0x75, 0x48, 0x44, 0x17, 0x55, 0x64, 0x2b, 0xac, 0xbc, 0x67, 0x28, 0x3a, 0x80,
		0xd2, 0x86, 0xd2, 0x86, 0xd2, 0x86, 0xd2, 0x86, 0xd2, 0x46, 0xd1, 0x81, 0xc4, 0x2f, 0x64, 0x2a,
		0xd0, 0xd2, 0x47, 0xb0, 0x98, 0x58, 0x6c, 0xcd, 0xb2, 0x1e, 0x8a, 0x0e, 0xc0, 0x7e, 0x94, 0xba,
		0x99, 0x9e, 0xda, 0x35, 0x50, 0xe6, 0xca, 0x4c, 0x88, 0x9c, 0x78, 0xa0, 0x4c, 0xa0, 0x4c, 0xa0,
		0x4c, 0xa0, 0x4c, 0xa0, 0x4c, 0xe4, 0xc4, 0x03, 0x69, 0x02, 0x69, 0x02, 0x69, 0x6e, 0x13, 0xd2,
		0x44, 0x4e, 0x3c, 0x70, 0x26, 0x70, 0xa6, 0x4a, 0x0a, 0x48, 0xd9, 0x26, 0x4b, 0xd9, 0x96, 0x38,
		0x92, 0x44, 0x3e, 0xaf, 0x60, 0xec, 0x4d, 0xb1, 0xb8, 0xad, 0x24, 0x35, 0xc3, 0xde, 0x1f, 0x0d,
		0xb8, 0x93, 0xa0, 0x92, 0x8b, 0xf8, 0x35, 0x9a, 0xc9, 0x5b, 0xf4, 0xcf, 0x3d, 0x3b, 0xe8, 0xb7,
		0x02, 0x2f, 0xe8, 0x9f, 0x4e, 0xde, 0xa2, 0x63, 0xf2, 0xfb, 0x7e, 0x2f, 0x7a, 0xf8, 0xfe, 0xc7,
		0xf1, 0xd3, 0xf6, 0x1b, 0x23, 0xee, 0x4e, 0xfe, 0x76, 0x95, 0x3e, 0x7b, 0x51, 0xc6, 0xf6, 0xbc,
		0xc9, 0xf1, 0x5d, 0x28, 0xb1, 0x47, 0xee, 0x9b, 0xfa, 0x28, 0x3c, 0x96, 0x1b, 0x5b, 0x0e, 0x62,
		0x2d, 0x7d, 0xbf, 0x67, 0x8e, 0x34, 0x9c, 0x46, 0x30, 0x2c, 0xe7, 0xc3, 0x87, 0xa4, 0x90, 0xa6,
		0x1c, 0x78, 0x6c, 0x60, 0xdd, 0x5a, 0x83, 0x48, 0x68, 0xe8, 0xfc, 0xc9, 0x63, 0xda, 0xbf, 0xb5,
		0x5f, 0x1a, 0x57, 0xbd, 0xf6, 0x2f, 0x5b, 0x36, 0x4a, 0x27, 0x3a, 0xb3, 0x6d, 0x1e, 0xa4, 0xb3,
		0xda, 0xa1, 0x16, 0xb2, 0xb6, 0xe9, 0x8c, 0x05, 0x03, 0xdf, 0xf2, 0x48, 0xcc, 0xa9, 0xf4, 0x92,
		0x34, 0x9d, 0x81, 0x3d, 0x1a, 0x32, 0x8d, 0xdf, 0x5b, 0x81, 0x36, 0x70, 0x1d, 0x1e, 0x4a, 0x74,
		0x5f, 0xbb, 0x75, 0x7d, 0x2d, 0xd4, 0x3e, 0x5a, 0xaa, 0x7d, 0xbe, 0x3a, 0xe3, 0x0d, 0xd7, 0xe2,
		0x03, 0x18, 0xf9, 0xb1, 0x0e, 0x96, 0x7c, 0xf8, 0x84, 0x6e, 0xe5, 0xe9, 0x8b, 0x34, 0x9c, 0x3a,
		0x0c, 0x82, 0x58, 0x90, 0x0a, 0x1f, 0xf2, 0xcc, 0xbd, 0xca, 0xce, 0x07, 0xb0, 0x7d, 0xa5, 0xae,
		0x7a, 0x9d, 0x6b, 0x7b, 0x44, 0xb2, 0x4d, 0x9e, 0x3b, 0x5b, 0x5c, 0x82, 0x4c, 0x90, 0x64, 0x79,
		0x8b, 0xbd, 0x97, 0xe2, 0xf8, 0x5a, 0x20, 0x07, 0xca, 0x9a, 0xf6, 0x26, 0x77, 0xba, 0x9b, 0xa4,
		0xba, 0x5f, 0x69, 0x71, 0x6e, 0x99, 0xf1, 0x6c, 0x82, 0xb8, 0xb5, 0x6c, 0x43, 0x82, 0x2c, 0x0e,
		0x4d, 0x66, 0x2b, 0xd0, 0xc4, 0x95, 0xf3, 0x8d, 0xb3, 0x65, 0xd5, 0xd5, 0x96, 0x02, 0xc6, 0xa7,
		0xb4, 0x89, 0xf4, 0x29, 0xbe, 0xb3, 0xe4, 0xe4, 0x4e, 0xf2, 0xad, 0x60, 0x92, 0xaf, 0x4a, 0x41,
		0xa7, 0xd2, 0xfd, 0x80, 0x49, 0xbe, 0xb9, 0x05, 0x24, 0x92, 0xee, 0x8c, 0xf4, 0x84, 0x99, 0x49,
		0xed, 0xe4, 0x58, 0x7c, 0xe9, 0x7f, 0xdf, 0x78, 0x52, 0x2f, 0x4e, 0x22, 0xc7, 0x8e, 0x24, 0x92,
		0xb8, 0x72, 0xe2, 0xc0, 0x74, 0xe9, 0x77, 0xc9, 0xef, 0x42, 0x93, 0x6d, 0x43, 0xe0, 0x9b, 0xa1,
		0xcc, 0xa6, 0xa1, 0xce, 0x9e, 0x51, 0x96, 0xb0, 0x40, 0x9f, 0xa0, 0x40, 0x91, 0x58, 0x4d, 0x99,
		0xfd, 0x32, 0xc9, 0x76, 0x39, 0xaa, 0xd7, 0x0f, 0x0e, 0xeb, 0xf5, 0xca, 0xe1, 0xde, 0x61, 0xe5,
		0x78, 0x7f, 0xbf, 0x7a, 0x50, 0xdd, 0x07, 0xf7, 0x14, 0x42, 0x37, 0xca, 0x5f, 0xfd, 0xba, 0x50,
		0x3a, 0x9d, 0x20, 0xb8, 0x98, 0xd2, 0x92, 0x1a, 0x64, 0x24, 0x54, 0x4f, 0x53, 0x41, 0xc7, 0xc5,
		0x81, 0xa9, 0xcb, 0x8e, 0x71, 0xda, 0xfc, 0xd4, 0x34, 0xce, 0x7e, 0xd9, 0xf2, 0x26, 0x65, 0x04,
		0x21, 0x48, 0x65, 0x48, 0x60, 0x21, 0x22, 0x58, 0xe5, 0xc8, 0xb7, 0x42, 0xaf, 0x52, 0x06, 0x28,
		0xe7, 0x2e, 0x56, 0xef, 0x9e, 0x4d, 0x82, 0x50, 0xda, 0xb7, 0x50, 0xeb, 0x6a, 0x21, 0xab, 0x4d,
		0x7d, 0x68, 0x05, 0x1a, 0x7b, 0xf4, 0x6c, 0x6b, 0x60, 0x71, 0xfb, 0x29, 0x8d, 0x53, 0xd1, 0xf5,
		0x0c, 0x53, 0x50, 0x01, 0xa3, 0x2e, 0x64, 0xa9, 0xfc, 0x0e, 0xce, 0xdd, 0xc3, 0x2c, 0x1c, 0x82,
		0x74, 0x52, 0xd8, 0x47, 0xab, 0x33, 0x1d, 0x51, 0x02, 0x22, 0x79, 0xcb, 0x6a, 0x09, 0x59, 0x74,
		0x32, 0xe2, 0xa4, 0x73, 0xca, 0x96, 0xc0, 0x7f, 0x3e, 0x4f, 0x53, 0x12, 0x73, 0x51, 0x34, 0x9e,
		0x2c, 0xa5, 0x96, 0x89, 0x1c, 0xc1, 0x77, 0x8d, 0x00, 0xc3, 0x42, 0x02, 0x08, 0x30, 0x64, 0xb5,
		0x71, 0x10, 0x60, 0xc8, 0xab, 0x1a, 0x2f, 0x7e, 0x80, 0x81, 0xb3, 0x49, 0x88, 0x54, 0xa6, 0x88,
		0x9f, 0x16, 0x65, 0xd5, 0xba, 0x44, 0x1a, 0x86, 0x33, 0x7a, 0x90, 0x7f, 0x3b, 0x7b, 0xee, 0x25,
		0xf7, 0x2d, 0xe7, 0x8e, 0x26, 0x45, 0xb3, 0x12, 0x9e, 0xd4, 0x44, 0x7d, 0x11, 0xa0, 0xde, 0x6a,
		0x48, 0xb1, 0x71, 0xd5, 0x6b, 0x97, 0x0a, 0x5d, 0xab, 0xd5, 0x73, 0x9b, 0x44, 0x5d, 0x2c, 0xe3,
		0xcd, 0x92, 0x3e, 0xd0, 0xe0, 0x85, 0x21, 0x73, 0xa2, 0x55, 0x90, 0x81, 0x0a, 0xf0, 0x93, 0x2b,
		0xf0, 0x83, 0x94, 0x5d, 0xa5, 0x29, 0xbb, 0x32, 0xc6, 0xe8, 0xe4, 0x33, 0x01, 0x56, 0xce, 0x58,
		0x1c, 0xa9, 0x63, 0x70, 0xa4, 0xa7, 0xbf, 0xd6, 0x90, 0xfe, 0x4a, 0x08, 0xd6, 0x90, 0xfe, 0xba,
		0x8d, 0x3a, 0x02, 0xe9, 0xaf, 0xf0, 0x4e, 0xc1, 0x3b, 0x05, 0xef, 0x14, 0xbc, 0x53, 0xca, 0xbd,
		0x53, 0x48, 0x7f, 0xdd, 0x84, 0x10, 0xd2, 0x5f, 0x37, 0x21, 0x86, 0xf4, 0x57, 0x69, 0xd2, 0x0d,
		0xe9, 0xaf, 0xe0, 0x9e, 0x9c, 0xe9, 0x46, 0xf9, 0xab, 0x23, 0xfd, 0x75, 0x19, 0x2d, 0xa4, 0xbf,
		0x16, 0xd9, 0xf6, 0x5f, 0x84, 0x01, 0x90, 0xfe, 0x8a, 0xf4, 0x57, 0x09, 0x17, 0x0b, 0xe9, 0xaf,
		0xaf, 0x5d, 0x3c, 0xa4, 0xbf, 0x22, 0xfd, 0x15, 0xf6, 0x91, 0xd4, 0xe7, 0x95, 0x92, 0xcd, 0x69,
		0xdd, 0x39, 0xa6, 0xcd, 0x86, 0xa4, 0xee, 0xe0, 0x79, 0x9a, 0xf0, 0x09, 0x2f, 0x24, 0x00, 0x9f,
		0x70, 0x56, 0xb5, 0x04, 0x9f, 0x70, 0x5e, 0x25, 0x2f, 0x7c, 0xc2, 0x6b, 0xcb, 0x31, 0xf8, 0x84,
		0xf3, 0x04, 0xba, 0xe1, 0x13, 0x96, 0x72, 0xb9, 0xe0, 0x13, 0x16, 0xc4, 0x2a, 0xf0, 0x09, 0xc3,
		0x27, 0x0c, 0xcc, 0xb3, 0x08, 0xf3, 0xa0, 0x82, 0x2d, 0xb3, 0x25, 0x8f, 0x0a, 0x36, 0xe0, 0x41,
		0xe0, 0x41, 0xe0, 0x41, 0xe0, 0x41, 0x54, 0xb0, 0x65, 0x3d, 0x20, 0x54, 0xb0, 0x15, 0x00, 0xc7,
		0xa0, 0x82, 0x2d, 0xb7, 0xb6, 0x3c, 0x0a, 0xb2, 0x84, 0x30, 0xdd, 0xd6, 0x17, 0x64, 0x49, 0x18,
		0x92, 0x27, 0xb0, 0x1e, 0xeb, 0x4d, 0x8e, 0x98, 0x42, 0x16, 0x33, 0xa8, 0x67, 0x82, 0x92, 0xd0,
		0xb2, 0x37, 0x31, 0x13, 0x33, 0xc4, 0xb0, 0x64, 0x76, 0x06, 0x12, 0xc0, 0x3c, 0xa2, 0x67, 0x61,
		0xc8, 0x99, 0x81, 0x21, 0xb8, 0xf8, 0x4f, 0x38, 0xee, 0x95, 0x81, 0x73, 0x25, 0xe2, 0x5a, 0x59,
		0x38, 0x56, 0x3a, 0x6e, 0x95, 0x8e, 0x53, 0xe5, 0xe2, 0xd2, 0x7c, 0xa9, 0x0c, 0xd1, 0xc5, 0x7a,
		0x25, 0x73, 0xf8, 0x60, 0x39, 0x7a, 0xa8, 0xb4, 0x47, 0x81, 0xbc, 0xe2, 0xe2, 0x19, 0x2a, 0xa2,
		0xeb, 0x17, 0x25, 0xba, 0x22, 0xc7, 0xec, 0xc4, 0x4f, 0x1a, 0x67, 0xe7, 0xcd, 0x8b, 0xfe, 0x55,
		0x47, 0xac, 0x65, 0x73, 0x2d, 0xa7, 0xde, 0xba, 0x82, 0x71, 0x43, 0xa8, 0xb7, 0xce, 0x93, 0x88,
		0xa6, 0x75, 0x21, 0xe6, 0x1b, 0x02, 0x4a, 0x73, 0x15, 0xa6, 0x1c, 0x6f, 0x0d, 0x99, 0xc3, 0x2d,
		0xfe, 0xe4, 0xb3, 0x5b, 0x19, 0x5c, 0x3f, 0xb6, 0xeb, 0x24, 0xc4, 0x79, 0x4b, 0xcd, 0xe4, 0xd1,
		0x3f, 0x9a, 0x01, 0x41, 0xbc, 0xac, 0x77, 0x75, 0x71, 0x61, 0xb4, 0xfa, 0xb1, 0x6c, 0xbf, 0xec,
		0x35, 0x7a, 0x57, 0x97, 0xb2, 0x6e, 0x58, 0x14, 0x2f, 0x0f, 0xa4, 0xc6, 0xcb, 0x88, 0xa6, 0xc9,
		0xc6, 0xbb, 0x75, 0xd6, 0xfe, 0xf3, 0xa2, 0x90, 0x23, 0x78, 0x49, 0x77, 0x49, 0xb4, 0xbd, 0x20,
		0xdf, 0x21, 0x77, 0x0d, 0x87, 0x9c, 0xd0, 0xf5, 0xc9, 0x5a, 0x5c, 0xe5, 0xb3, 0x69, 0xd1, 0x50,
		0x62, 0x3d, 0x4d, 0x7a, 0xd7, 0xe4, 0x55, 0x85, 0xc0, 0xa0, 0x86, 0x41, 0x0d, 0x83, 0x7a, 0xe7,
		0x0d, 0xea, 0x20, 0x0e, 0x1d, 0x4b, 0xb4, 0xa5, 0x8f, 0xa0, 0x24, 0x77, 0x57, 0x49, 0xde, 0xbb,
		0xf6, 0x50, 0xf7, 0x7c, 0xcb, 0xf5, 0x2d, 0xfe, 0x24, 0x4f, 0x4d, 0xce, 0x92, 0x29, 0x92, 0x17,
		0xae, 0x02, 0xaf, 0x5b, 0x01, 0x8d, 0x04, 0x3f, 0xf8, 0xe6, 0xc1, 0x48, 0xc8, 0xa1, 0x91, 0x10,
		0x1d, 0x0c, 0x8c, 0x04, 0xc1, 0x1c, 0x3f, 0xb2, 0x1c, 0x7e, 0x24, 0xd1, 0x46, 0x90, 0xe1, 0x6e,
		0x93, 0x5b, 0x26, 0x25, 0x31, 0x1b, 0x92, 0xa2, 0x2c, 0x8a, 0xaa, 0x1c, 0x8a, 0xbc, 0x90, 0x85,
		0xae, 0x80, 0x45, 0xa2, 0x1f, 0x8f, 0xa4, 0xdc, 0x29, 0x65, 0x81, 0x43, 0xb0, 0x40, 0x2e, 0xd4,
		0x82, 0xbc, 0x55, 0xaf, 0x73, 0xad, 0xbe, 0x08, 0xfa, 0x55, 0x95, 0x7c, 0x76, 0xcb, 0x7c, 0xe6,
		0x0c, 0x0a, 0xa9, 0x10, 0xc6, 0x5a, 0xb8, 0xfb, 0xe9, 0x54, 0xdb, 0xab, 0x55, 0x8e, 0x35, 0x5d,
		0xeb, 0x5e, 0xfe, 0xd1, 0xd1, 0x7b, 0xc6, 0x89, 0x66, 0x3c, 0x72, 0xe6, 0x04, 0x96, 0xeb, 0x04,
		0x1a, 0x77, 0xa3, 0x8f, 0xb5, 0x5b, 0xd7, 0xff, 0xea, 0xb4, 0x2e, 0x3b, 0x5a, 0x9c, 0x26, 0xb6,
		0x6d, 0x05, 0x28, 0x93, 0xa3, 0xdc, 0xe6, 0x1a, 0x94, 0x4d, 0xcf, 0x1a, 0xb2, 0x4e, 0x82, 0x29,
		0x29, 0xb5, 0xcb, 0x1d, 0x81, 0xe0, 0xf8, 0xf0, 0xa1, 0x1c, 0xb7, 0x8c, 0xb1, 0x9c, 0x3b, 0xdd,
		0xf3, 0x5d, 0xee, 0x0e, 0x5c, 0x5b, 0xfb, 0xb7, 0xf6, 0x4b, 0x9a, 0x02, 0xd4, 0x69, 0xf4, 0x7e,
		0xeb, 0x5f, 0x1a, 0xbd, 0xab, 0x4e, 0x3f, 0xe4, 0xab, 0x5f, 0xb6, 0x4c, 0x66, 0x10, 0x34, 0xb5,
		0x53, 0x2b, 0x2e, 0x36, 0x38, 0xe1, 0x42, 0x1a, 0xc6, 0x94, 0x3d, 0xec, 0xd2, 0xeb, 0xf3, 0xe7,
		0x3d, 0x73, 0x34, 0x7e, 0xcf, 0xb4, 0x74, 0x8b, 0xb5, 0x74, 0x8b, 0xad, 0x60, 0x2c, 0x9f, 0x35,
		0xd9, 0x0c, 0x46, 0xd8, 0x9f, 0x4e, 0x5d, 0x5f, 0x3a, 0x25, 0xfd, 0xe8, 0x66, 0xae, 0xd2, 0xaa,
		0xa7, 0x8d, 0x5a, 0xa7, 0x1d, 0xc6, 0x2c, 0x88, 0x1a, 0xc9, 0xdc, 0xe2, 0xd2, 0x03, 0xe3, 0xbe,
		0x35, 0x90, 0x17, 0x2e, 0x4a, 0xd6, 0x47, 0xac, 0x04, 0x09, 0x15, 0x2b, 0xe9, 0x40, 0x24, 0x54,
		0xa8, 0x52, 0x05, 0x05, 0xcc, 0x50, 0x76, 0xf8, 0x5e, 0x4d, 0x62, 0xac, 0x64, 0x0f, 0xb1, 0x92,
		0xc9, 0x83, 0x93, 0xc6, 0x4a, 0x6a, 0xd5, 0xfa, 0x61, 0xfd, 0x68, 0xef, 0xa0, 0x7e, 0xb4, 0xc5,
		0x1e, 0xf3, 0x50, 0xfc, 0x20, 0x66, 0xb2, 0x32, 0x2b, 0x20, 0x78, 0x02, 0x20, 0x02, 0x20, 0xb2,
		0xe5, 0x40, 0x44, 0x4e, 0x8b, 0xbb, 0x17, 0x68, 0x44, 0x46, 0xc3, 0x23, 0xa2, 0x02, 0xd2, 0xd6,
		0x65, 0xa7, 0x7f, 0x6e, 0xf4, 0xba, 0xcd, 0xd3, 0x7e, 0xf3, 0xe2, 0x37, 0xa3, 0xdb, 0xec, 0x89,
		0xee, 0x6b, 0x87, 0xb4, 0x36, 0x40, 0x35, 0x40, 0x35, 0x40, 0x35, 0xc1, 0x50, 0x0d, 0xc5, 0xa4,
		0xab, 0x6d, 0xd4, 0x94, 0x80, 0xef, 0x7d, 0xee, 0x18, 0x28, 0x24, 0x5d, 0x63, 0xc3, 0x1a, 0x1f,
		0x2f, 0xdb, 0xad, 0xab, 0x9e, 0x81, 0x8a, 0xd2, 0x95, 0xb6, 0x4b, 0x92, 0x01, 0xb1, 0xb5, 0xfb,
		0xd5, 0x35, 0x5a, 0x8d, 0x5e, 0xf3, 0x0f, 0x03, 0xc5, 0xb8, 0x28, 0xc6, 0xdd, 0x61, 0xa0, 0x96,
		0x34, 0x51, 0x93, 0x84, 0xd0, 0xa2, 0xd5, 0x01, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x84,
		0x72, 0x3c, 0xca, 0x6f, 0xa1, 0x16, 0x25, 0xaa, 0x45, 0x6f, 0x3a, 0xf1, 0x5d, 0x92, 0x72, 0xf4,
		0x64, 0x65, 0x64, 0x43, 0x45, 0x42, 0x45, 0x42, 0x45, 0xa2, 0xf8, 0x14, 0xc5, 0xa7, 0x64, 0x5e,
		0x06, 0xda, 0x84, 0x8a, 0x2a, 0x82, 0xe7, 0xf9, 0x73, 0x61, 0x11, 0x27, 0x52, 0xec, 0xef, 0x83,
		0x09, 0x72, 0xa1, 0x18, 0xe4, 0xad, 0x8a, 0x0c, 0x8a, 0x9d, 0x46, 0x20, 0x2e, 0x67, 0xd1, 0x05,
		0xd4, 0x03, 0xfe, 0x64, 0x33, 0xdd, 0x67, 0xff, 0x1d, 0xb1, 0x80, 0xb3, 0xa1, 0x4c, 0x44, 0xb2,
		0x94, 0x66, 0x21, 0xf3, 0x2b, 0xae, 0x2e, 0x3a, 0xdd, 0x76, 0xcf, 0x38, 0x45, 0x5a, 0x05, 0x00,
		0x1b, 0x00, 0x1b, 0x00, 0x5b, 0xce, 0x01, 0x1b, 0xd2, 0x2a, 0x56, 0xdc, 0xa8, 0x44, 0xaa, 0x37,
		0xdb, 0x17, 0x48, 0xab, 0x58, 0x69, 0xc3, 0x5a, 0xcd, 0x8b, 0xdf, 0xfb, 0x17, 0xed, 0x33, 0xa3,
		0x3f, 0xb5, 0x75, 0x5d, 0xe3, 0x3f, 0x57, 0xc6, 0x25, 0x32, 0x06, 0x5e, 0xdf, 0xb9, 0x17, 0x9b,
		0xd6, 0xec, 0x62, 0xcf, 0x7e, 0xb6, 0x67, 0xd2, 0xcc, 0x2e, 0xf9, 0x20, 0x0e, 0xd9, 0x15, 0x00,
		0x71, 0x02, 0x41, 0x9c, 0xcf, 0x5c, 0x8f, 0x5b, 0x0f, 0xd6, 0xff, 0x31, 0x9d, 0x5b, 0x0f, 0xcc,
		0x97, 0x07, 0xdd, 0xe6, 0x28, 0x01, 0xa1, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0xa1, 0x08, 0xe5, 0xf8,
		0x91, 0xe5, 0xf0, 0xea, 0x81, 0x44, 0x70, 0x72, 0x80, 0x98, 0xd2, 0xe4, 0xc1, 0xd1, 0xd0, 0x34,
		0x13, 0xcf, 0x22, 0xa6, 0xb4, 0x26, 0x0b, 0x1c, 0xec, 0xef, 0xef, 0x21, 0xaa, 0x94, 0x2f, 0x40,
		0x82, 0xa8, 0x12, 0x00, 0x89, 0xc8, 0xc9, 0xd9, 0x8c, 0x8f, 0x3c, 0x82, 0xb9, 0x12, 0x2f, 0xe8,
		0x14, 0x29, 0x7a, 0x74, 0x88, 0x50, 0x51, 0x01, 0x81, 0x18, 0x06, 0x4b, 0xe4, 0x14, 0x88, 0x61,
		0xb0, 0x84, 0x2c, 0x20, 0x86, 0xdc, 0x3e, 0xe0, 0x30, 0x18, 0xe0, 0x5b, 0x88, 0xc3, 0xd0, 0x1b,
		0x09, 0x18, 0x4c, 0xa5, 0xfa, 0xc2, 0x60, 0x89, 0x15, 0xb5, 0x30, 0x06, 0x4b, 0x60, 0xb0, 0x04,
		0x06, 0x4b, 0xd0, 0x02, 0x60, 0x0d, 0x83, 0x25, 0xb6, 0x40, 0x66, 0x60, 0xb0, 0x04, 0x06, 0x4b,
		0x6c, 0x7e, 0x7d, 0x30, 0x58, 0x02, 0x83, 0x25, 0x30, 0x58, 0x02, 0x98, 0x65, 0x9a, 0x61, 0x10,
		0x37, 0x92, 0xb8, 0xc5, 0xa5, 0xe0, 0xde, 0xf5, 0xf9, 0x60, 0xc4, 0x75, 0x66, 0x5b, 0x77, 0x96,
		0x0c, 0x54, 0x38, 0x09, 0x1d, 0xcd, 0x91, 0x2a, 0x52, 0xf4, 0x28, 0x94, 0x8f, 0x08, 0x20, 0x89,
		0x5c, 0x18, 0x99, 0x7c, 0xab, 0x1a, 0x06, 0xc8, 0xe4, 0x53, 0xa5, 0x1f, 0x8b, 0x17, 0x40, 0xba,
		0x71, 0x5d, 0x9b, 0x99, 0x8e, 0xcc, 0x3a, 0xa3, 0x2a, 0x0c, 0x86, 0x1d, 0x36, 0x18, 0xe6, 0xc0,
		0xaf, 0x44, 0x8b, 0x61, 0x9e, 0x16, 0x74, 0x26, 0x74, 0x26, 0x74, 0x26, 0x74, 0xa6, 0x50, 0x8e,
		0x47, 0x7d, 0xee, 0x8a, 0x1b, 0x35, 0xe5, 0xda, 0xec, 0x74, 0xdb, 0xbd, 0xf6, 0x69, 0xbb, 0x85,
		0x1a, 0xdd, 0x35, 0x36, 0xad, 0x75, 0xd6, 0x41, 0x7d, 0xe9, 0x4a, 0x3b, 0xd5, 0xbd, 0xfc, 0x03,
		0x5b, 0xb5, 0xda, 0x56, 0x5d, 0x76, 0x51, 0x8c, 0x8b, 0x62, 0xdc, 0x5d, 0x86, 0x24, 0xee, 0x2d,
		0xd7, 0x3d, 0x9f, 0xb1, 0x07, 0x39, 0xe1, 0xaa, 0x09, 0x1e, 0x79, 0x41, 0xa8, 0x48, 0xfe, 0xcb,
		0x28, 0x3f, 0x0b, 0x0e, 0xcc, 0x02, 0x82, 0x31, 0x64, 0xc0, 0xe7, 0x14, 0x8c, 0x21, 0x03, 0x5e,
		0x06, 0xc7, 0xef, 0xbc, 0x03, 0x93, 0x22, 0x4b, 0x13, 0x79, 0x56, 0x05, 0x92, 0xa4, 0x8b, 0x24,
		0x2a, 0xf2, 0xac, 0x90, 0x67, 0xb5, 0xf9, 0xf5, 0x41, 0x9e, 0x15, 0xf2, 0xac, 0x90, 0x67, 0x45,
		0xbc, 0x2a, 0xf2, 0xac, 0x76, 0xda, 0x47, 0x21, 0x45, 0xd4, 0x4d, 0xb9, 0x26, 0xa2, 0xf5, 0x81,
		0xc8, 0x81, 0xc8, 0x81, 0xc8, 0x81, 0xc8, 0x85, 0x72, 0xbc, 0xe5, 0xe9, 0xe6, 0x70, 0x18, 0x0a,
		0x6d, 0x99, 0xa0, 0xfc, 0x58, 0xc2, 0xda, 0xc9, 0xde, 0x14, 0x16, 0xe6, 0x5a, 0xde, 0xb7, 0xba,
		0xc4, 0xbd, 0x9f, 0x3b, 0x83, 0x23, 0x89, 0x34, 0x3a, 0x26, 0xe7, 0xcc, 0x77, 0xa4, 0x46, 0x74,
		0x23, 0x42, 0x6f, 0xbf, 0x54, 0xf4, 0xe3, 0xeb, 0x1f, 0x5f, 0xaa, 0xfa, 0xf1, 0x75, 0xfc, 0x6d,
		0x35, 0xfa, 0xe3, 0x9f, 0xda, 0xf3, 0x8f, 0xda, 0x97, 0x8a, 0x5e, 0x4f, 0x3e, 0xad, 0xed, 0x7f,
		0xa9, 0xe8, 0xfb, 0xd7, 0xef, 0xde, 0x7e, 0xfd, 0xfa, 0x61, 0xdd, 0xdf, 0x79, 0xf7, 0xcf, 0xde,
		0xb3, 0x3c, 0x7b, 0xf9, 0x5a, 0xe6, 0x31, 0xb4, 0x2f, 0x9b, 0x7f, 0x91, 0x9d, 0xc5, 0xff, 0xbc,
		0xa5, 0x3a, 0x8d, 0x77, 0xff, 0x92, 0x78, 0x1e, 0x6f, 0x0a, 0xe4, 0x55, 0xa0, 0x11, 0x4b, 0x07,
		0x10, 0x4b, 0xeb, 0x8a, 0xa5, 0x88, 0xab, 0x4d, 0xfd, 0xb6, 0xa1, 0x7f, 0xba, 0xfe, 0xa7, 0xfa,
		0xbe, 0xfe, 0x7c, 0xf2, 0xee, 0x9f, 0xc3, 0xe7, 0x97, 0x1f, 0xfe, 0x58, 0xf4, 0x63, 0xd5, 0xf7,
		0x87, 0xcf, 0x27, 0x4b, 0xfe, 0xe5, 0xe0, 0xf9, 0x64, 0xc5, 0x35, 0xf6, 0x9f, 0xdf, 0xce, 0xfd,
		0x68, 0xf8, 0x79, 0x6d, 0xd9, 0x2f, 0xd4, 0x97, 0xfc, 0xc2, 0xde, 0xb2, 0x5f, 0xd8, 0x5b, 0xf2,
		0x0b, 0x4b, 0x1f, 0xa9, 0xb6, 0xe4, 0x17, 0xf6, 0x9f, 0x7f, 0xcc, 0xfd, 0xfc, 0xdb, 0xc5, 0x3f,
		0x7a, 0xf0, 0xfc, 0xee, 0xc7, 0xb2, 0x7f, 0x3b, 0x7c, 0xfe, 0x71, 0xf2, 0xee, 0x1d, 0x04, 0xf5,
		0xca, 0x82, 0x1a, 0xec, 0x49, 0xcf, 0x9e, 0xc5, 0x53, 0x5c, 0x68, 0x9b, 0x22, 0xfc, 0xfe, 0x21,
		0x20, 0x57, 0x20, 0x47, 0xca, 0x22, 0x87, 0x0a, 0x02, 0x72, 0x08, 0xc8, 0x6d, 0x7e, 0x7d, 0x10,
		0x90, 0x43, 0x40, 0x0e, 0x01, 0x39, 0x58, 0x1d, 0xd3, 0x0c, 0x83, 0x80, 0x9c, 0xc4, 0x2d, 0x2e,
		0x71, 0x19, 0x6e, 0xf3, 0x54, 0x9e, 0x47, 0xab, 0x23, 0x18, 0x87, 0x5a, 0xc5, 0x95, 0xf4, 0x1f,
		0x6a, 0x15, 0x55, 0xa9, 0x01, 0xd4, 0x2a, 0x2e, 0x71, 0xb9, 0x16, 0xbf, 0x56, 0xb1, 0x77, 0x75,
		0x71, 0x61, 0xb4, 0x30, 0x47, 0x74, 0xa5, 0xcd, 0xea, 0xd4, 0xce, 0x51, 0x6e, 0xf7, 0xd3, 0xfd,
		0xe9, 0xa0, 0xc8, 0x0e, 0x45, 0x76, 0x45, 0xb3, 0x97, 0xdf, 0xe4, 0xe8, 0xa0, 0x64, 0x1d, 0x50,
		0x29, 0x18, 0xdc, 0xb3, 0x07, 0xd3, 0x33, 0xf9, 0x7d, 0x78, 0x53, 0xcb, 0xae, 0xc7, 0x9c, 0x41,
		0x64, 0xd3, 0xea, 0x0e, 0xe3, 0xdf, 0x5d, 0xff, 0x6f, 0xdd, 0x72, 0x02, 0x6e, 0x3a, 0x03, 0x56,
		0x7e, 0xf9, 0x41, 0x30, 0xf7, 0x49, 0x39, 0xb4, 0x5a, 0xca, 0x76, 0xe0, 0x05, 0xe5, 0x81, 0xeb,
		0x04, 0xdc, 0x37, 0x2d, 0x87, 0x0d, 0xf5, 0x70, 0xf5, 0x32, 0x8f, 0x3b, 0xff, 0x26, 0x7f, 0x96,
		0x63, 0x22, 0x62, 0xc4, 0x42, 0xf6, 0x93, 0x12, 0x70, 0x4a, 0x25, 0x27, 0x96, 0x76, 0x62, 0xce,
		0x26, 0x95, 0x9d, 0xd1, 0xaa, 0x82, 0x78, 0x48, 0x2c, 0x06, 0x12, 0x8e, 0x7d, 0x64, 0x60, 0x1e,
		0x89, 0x58, 0x47, 0x16, 0xc6, 0x91, 0x8e, 0x6d, 0xa4, 0x63, 0x1a, 0xb9, 0x58, 0x26, 0x5f, 0x72,
		0x59, 0x38, 0x66, 0x49, 0x39, 0x36, 0xd4, 0x8f, 0x62, 0x71, 0x4a, 0x8a, 0x4f, 0x04, 0x8e, 0xd2,
		0x28, 0x75, 0x12, 0xd5, 0xf1, 0xe1, 0x43, 0x22, 0xd3, 0xcb, 0x91, 0xc8, 0xda, 0x22, 0xc1, 0xee,
		0xd5, 0x3c, 0x3d, 0xd6, 0x5a, 0xba, 0xc9, 0xb9, 0x6f, 0xdd, 0x8c, 0x78, 0x84, 0x5b, 0x04, 0x4b,
		0xfa, 0xc5, 0x64, 0xc4, 0x8a, 0xfe, 0x2a, 0x44, 0x3f, 0x44, 0x3f, 0x44, 0xbf, 0x18, 0x9e, 0x3d,
		0xb3, 0xc4, 0x4e, 0xae, 0x2f, 0x0d, 0xc6, 0xb7, 0x4a, 0x92, 0x5f, 0x3d, 0x59, 0x5f, 0x8e, 0x67,
		0xbd, 0x0a, 0xcf, 0x3a, 0x3c, 0xeb, 0x79, 0x12, 0x45, 0x34, 0x22, 0xa9, 0x18, 0xee, 0x1d, 0xd1,
		0xa2, 0x2a, 0x5d, 0x78, 0xc8, 0x02, 0x6e, 0x39, 0xa6, 0xd4, 0x7c, 0x8f, 0xf4, 0x56, 0x4d, 0x13,
		0x93, 0xc4, 0x2b, 0x72, 0xc2, 0x84, 0xd2, 0x85, 0x1a, 0x85, 0x70, 0x23, 0x14, 0x72, 0x54, 0xc2,
		0x8e, 0x5c, 0xe8, 0x91, 0x0b, 0x3f, 0x5a, 0x21, 0x28, 0x47, 0x18, 0x4a, 0x12, 0x8a, 0xf2, 0x20,
		0xfc, 0xd2, 0x1b, 0x23, 0xb5, 0x16, 0x70, 0xce, 0x20, 0x3b, 0x96, 0x48, 0x43, 0x6a, 0x6d, 0xe0,
		0xf8, 0x8b, 0x20, 0x8f, 0x8e, 0xb8, 0x56, 0x70, 0xee, 0x8c, 0x8e, 0x08, 0x68, 0x51, 0x95, 0x41,
		0xa4, 0x04, 0x8b, 0x5f, 0x43, 0x38, 0xfe, 0xba, 0xa6, 0x38, 0x1e, 0xca, 0x52, 0x95, 0x94, 0xea,
		0x76, 0xd4, 0x16, 0xa6, 0xe7, 0x24, 0x37, 0xd9, 0xf3, 0xfd, 0x16, 0x89, 0xb9, 0x03, 0x88, 0x39,
		0x51, 0x62, 0x0e, 0x45, 0x5f, 0x5b, 0x57, 0x93, 0xb8, 0x33, 0x82, 0x1f, 0x6c, 0xbb, 0x55, 0xb5,
		0x8a, 0x44, 0x8a, 0x10, 0x4d, 0x02, 0x34, 0x82, 0x6c, 0xa9, 0x94, 0x0e, 0x59, 0xd6, 0x94, 0xbc,
		0x03, 0x96, 0x70, 0x04, 0x25, 0x9f, 0x0d, 0x5c, 0x7f, 0xa8, 0xfb, 0xee, 0x88, 0x33, 0x9d, 0x39,
		0xe6, 0x8d, 0xcd, 0x86, 0xf2, 0xbd, 0x8f, 0x0b, 0xa9, 0xc2, 0x0d, 0x09, 0x37, 0x24, 0xdc, 0x90,
		0x70, 0x43, 0x16, 0xca, 0x0d, 0x29, 0xaf, 0x49, 0xf8, 0x1c, 0xf0, 0xab, 0x42, 0xaf, 0x6f, 0xa9,
		0x5e, 0xdf, 0xe9, 0x74, 0x76, 0x55, 0x59, 0xd3, 0x0b, 0x73, 0xc4, 0x84, 0xe6, 0x52, 0x8b, 0x3f,
		0x5f, 0x91, 0x75, 0xa7, 0xe1, 0xfb, 0x7b, 0xbe, 0xf5, 0x60, 0xfa, 0x4f, 0x7a, 0xb2, 0xfb, 0x92,
		0x72, 0x65, 0xe6, 0x28, 0x21, 0x6b, 0x06, 0x59, 0x33, 0xea, 0x2d, 0x37, 0x64, 0xcd, 0x10, 0x6a,
		0x11, 0x69, 0x59, 0x33, 0xd2, 0xc5, 0x18, 0xb5, 0x38, 0x93, 0x2c, 0xd6, 0x00, 0x5c, 0x01, 0x5c,
		0x01, 0x5c, 0xf3, 0x8a, 0x9a, 0x64, 0x89, 0xc9, 0x94, 0x80, 0x39, 0x7c, 0xb0, 0x1c, 0xfd, 0xce,
		0x77, 0x47, 0x5e, 0x40, 0xd7, 0x55, 0x6a, 0x86, 0xaa, 0x64, 0xee, 0x92, 0x2b, 0x36, 0xc9, 0xc4,
		0x27, 0xa5, 0x18, 0x55, 0x20, 0x4e, 0xa9, 0xc5, 0xaa, 0x32, 0xf1, 0xaa, 0x4c, 0xcc, 0xaa, 0x11,
		0xb7, 0x72, 0xc5, 0xae, 0x64, 0xf1, 0x4b, 0x26, 0x86, 0x53, 0x42, 0x92, 0xca, 0x54, 0x5e, 0xbd,
		0xe0, 0x52, 0xca, 0x57, 0x14, 0x8b, 0x64, 0x72, 0xd1, 0xac, 0x42, 0x44, 0x2b, 0x14, 0xd5, 0xaa,
		0x44, 0xb6, 0x72, 0xd1, 0xad, 0x5c, 0x84, 0xab, 0x15, 0xe5, 0x34, 0x22, 0x9d, 0x48, 0xb4, 0x93,
		0x8b, 0xf8, 0x94, 0x20, 0x7b, 0x1c, 0xd8, 0xa3, 0x21, 0x8b, 0xad, 0x60, 0xfa, 0xcb, 0x33, 0x96,
		0x17, 0xb3, 0x8f, 0x41, 0xcc, 0xbf, 0x72, 0x63, 0xf1, 0xb9, 0x51, 0x08, 0x2a, 0x15, 0x43, 0x0e,
		0x14, 0x84, 0x6a, 0x45, 0x91, 0x1b, 0x85, 0x91, 0x1b, 0xc5, 0x91, 0x0f, 0x05, 0x42, 0xab, 0x48,
		0x88, 0x15, 0x4a, 0xba, 0xc5, 0xd2, 0x73, 0x0f, 0x5e, 0xbd, 0xf1, 0xe2, 0xbb, 0x9d, 0xac, 0x6d,
		0xe9, 0x1f, 0x2a, 0xa0, 0x3d, 0xd5, 0x3d, 0xe5, 0x27, 0xff, 0x71, 0xa6, 0xdf, 0xd9, 0xee, 0x8d,
		0x39, 0x13, 0xf5, 0x0d, 0xef, 0x81, 0x3e, 0xed, 0xa4, 0x2a, 0x4f, 0xfd, 0x65, 0xfa, 0x7b, 0x5d,
		0x5c, 0x43, 0x96, 0xbc, 0xf2, 0x6f, 0xcb, 0x0a, 0x78, 0x83, 0x73, 0x5f, 0x0d, 0x0f, 0x9f, 0x5b,
		0x8e, 0x61, 0xb3, 0x50, 0x44, 0x05, 0xf4, 0xfa, 0x3a, 0x7e, 0x02, 0xf3, 0x71, 0xea, 0x09, 0xaa,
		0x47, 0xf5, 0xfa, 0xc1, 0x61, 0xbd, 0x5e, 0x39, 0xdc, 0x3b, 0xac, 0x1c, 0xef, 0xef, 0x57, 0x0f,
		0x64, 0x74, 0x24, 0x7d, 0xf5, 0xa1, 0xda, 0xfe, 0x90, 0xf9, 0x6c, 0xf8, 0xf1, 0xa9, 0x74, 0xa2,
		0x39, 0x23, 0xdb, 0x56, 0xf9, 0x08, 0x57, 0x01, 0x0b, 0x99, 0xe3, 0xd6, 0xb4, 0x03, 0xb6, 0xd5,
		0x37, 0x81, 0x28, 0x85, 0x69, 0x29, 0x7d, 0xf2, 0xd4, 0x26, 0xf5, 0x0a, 0x9b, 0xf0, 0x88, 0x4b,
		0x96, 0x13, 0x23, 0x21, 0xd3, 0xb6, 0x55, 0x83, 0xb2, 0xf9, 0x47, 0x01, 0x30, 0x03, 0x30, 0x03,
		0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03,
		0x30, 0x03, 0x30, 0xdb, 0x29, 0x60, 0xe6, 0x3c, 0xe5, 0x06, 0x98, 0xa5, 0x8f, 0x02, 0x60, 0x06,
		0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06,
		0x60, 0x06, 0x60, 0x06, 0x60, 0xa6, 0x0c, 0x98, 0x6d, 0x55, 0x56, 0xa6, 0x22, 0x06, 0xca, 0x59,
		0x13, 0x82, 0x97, 0x15, 0xa6, 0xf3, 0x1f, 0xcc, 0x68, 0x5e, 0x19, 0x3d, 0x0b, 0xd4, 0xb1, 0x1b,
		0x01, 0xab, 0x95, 0x02, 0x6e, 0x72, 0x46, 0x5f, 0x75, 0x11, 0x93, 0xdd, 0xf2, 0xa2, 0x8b, 0x1a,
		0x8a, 0x2e, 0xb6, 0xc8, 0x33, 0x80, 0xa2, 0x0b, 0x14, 0x5d, 0x88, 0xdb, 0x4a, 0x14, 0x5d, 0xc0,
		0x85, 0xbc, 0x8d, 0x8a, 0x21, 0x07, 0x0a, 0x42, 0xb5, 0xa2, 0xc8, 0x8d, 0xc2, 0xc8, 0x8d, 0xe2,
		0xc8, 0x87, 0x02, 0xa1, 0x47, 0xa4, 0x1a, 0x5c, 0xc8, 0x9a, 0x0a, 0x01, 0x0f, 0x17, 0x72, 0x71,
		0xf9, 0x17, 0x2e, 0x64, 0xb8, 0x90, 0x7f, 0xfa, 0x08, 0xea, 0x5c, 0xc8, 0xc8, 0xfd, 0x97, 0xab,
		0x38, 0x90, 0xfb, 0x0f, 0x7c, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7c, 0x00,
		0x7c, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7c, 0x90, 0x17, 0x7c, 0x80, 0x14, 0x74, 0xe0, 0x03, 0xe0,
		0x03, 0xe0, 0x03, 0xe0, 0x03, 0xe0, 0x03, 0xe0, 0x03, 0xe0, 0x03, 0xe0, 0x03, 0xe0, 0x03, 0xe0,
		0x83, 0x7c, 0xe2, 0x03, 0x64, 0x42, 0x0b, 0xa0, 0x5b, 0xe8, 0x4c, 0xe8, 0x38, 0xc1, 0x76, 0x5b,
		0x12, 0xa1, 0x0b, 0xdd, 0x42, 0x9f, 0x98, 0x7f, 0x0b, 0xcd, 0xb7, 0x25, 0x92, 0x94, 0x77, 0x7f,
		0x34, 0xe0, 0x4e, 0x62, 0x6d, 0x5e, 0xc4, 0x2f, 0xdc, 0x4c, 0xde, 0xb7, 0x7f, 0xee, 0xd9, 0x41,
		0xbf, 0x15, 0x78, 0x41, 0xff, 0x74, 0xf2, 0xbe, 0xa1, 0x6d, 0xd6, 0xef, 0x45, 0xef, 0xd6, 0xef,
		0xd4, 0x3a, 0xf1, 0x77, 0x8d, 0xf4, 0x25, 0xc3, 0xcf, 0x3a, 0xf1, 0x2b, 0x45, 0x3f, 0xd9, 0x08,
		0xdf, 0xe8, 0xd7, 0xf8, 0x85, 0x0a, 0x3a, 0x3a, 0x5d, 0xe2, 0xa5, 0x28, 0x0d, 0x4c, 0x67, 0x68,
		0x0d, 0x4d, 0xce, 0xf4, 0x80, 0x0d, 0x5c, 0x67, 0x38, 0xe6, 0x04, 0xc2, 0x31, 0x3c, 0xcb, 0x1f,
		0x01, 0x33, 0x79, 0xf2, 0xea, 0x22, 0xc2, 0x4c, 0x9e, 0x2d, 0x74, 0xf1, 0x60, 0x26, 0xcf, 0xfa,
		0x5b, 0x46, 0x37, 0x93, 0x67, 0x89, 0x94, 0x54, 0x30, 0xa5, 0x67, 0xd9, 0x93, 0x60, 0x6e, 0x4f,
		0xd1, 0xc4, 0xb8, 0x42, 0x71, 0xae, 0x4a, 0xac, 0x2b, 0x17, 0xef, 0xca, 0xc5, 0xbc, 0x5a, 0x71,
		0xbf, 0x9d, 0x7e, 0x11, 0xf2, 0x12, 0x32, 0xe2, 0x11, 0x6d, 0xf3, 0x4a, 0x80, 0x72, 0x54, 0x9b,
		0x22, 0xd1, 0xaf, 0x4c, 0x05, 0xa8, 0x54, 0x05, 0x39, 0x50, 0x09, 0xaa, 0x55, 0x43, 0x6e, 0x54,
		0x44, 0x6e, 0x54, 0x45, 0x3e, 0x54, 0x06, 0xad, 0xea, 0x20, 0x56, 0x21, 0xca, 0x54, 0x49, 0x4a,
		0xd8, 0xf3, 0x2d, 0xd7, 0xb7, 0xf8, 0x93, 0xba, 0xfb, 0x96, 0xce, 0xb2, 0x1f, 0x3f, 0x89, 0x22,
		0x2e, 0x57, 0x93, 0x5b, 0xa4, 0x5c, 0xdd, 0xe4, 0x41, 0xed, 0xe4, 0x48, 0xfd, 0xe4, 0x45, 0x0d,
		0xe5, 0x4e, 0x1d, 0xe5, 0x4e, 0x2d, 0xe5, 0x4b, 0x3d, 0xa9, 0x51, 0x53, 0x8a, 0xd4, 0x55, 0xba,
		0xf5, 0xca, 0x72, 0x95, 0xe6, 0x24, 0xc6, 0xc8, 0x72, 0x78, 0xf5, 0x40, 0xa5, 0xc0, 0x48, 0xf4,
		0xc7, 0x81, 0xc2, 0x47, 0xe8, 0x9a, 0xce, 0x5d, 0xb8, 0x1b, 0x5f, 0x94, 0x5e, 0x48, 0xb5, 0x02,
		0x53, 0x4b, 0xb2, 0x80, 0x94, 0x4b, 0xee, 0xf4, 0x61, 0xfe, 0x30, 0xed, 0x11, 0x53, 0xa7, 0xd8,
		0xe7, 0x9e, 0xe7, 0x93, 0x6f, 0x0e, 0xb8, 0xe5, 0x3a, 0x67, 0xd6, 0x9d, 0xa5, 0x2a, 0x4b, 0x6a,
		0xf1, 0x5d, 0x66, 0x77, 0x26, 0xb7, 0xbe, 0x31, 0x25, 0xc9, 0x41, 0x39, 0x12, 0xab, 0xb3, 0xac,
		0x6c, 0x3e, 0xe6, 0x8f, 0x95, 0x0f, 0xf6, 0xf7, 0xf7, 0xf6, 0xc1, 0xce, 0x45, 0x63, 0xe7, 0x37,
		0xbb, 0x49, 0xfd, 0x7a, 0xa7, 0x6c, 0x32, 0xc5, 0x8d, 0x6f, 0xd3, 0xe7, 0xc8, 0x4d, 0x03, 0x5c,
		0x75, 0x0c, 0xa8, 0x80, 0x05, 0x4a, 0x8a, 0x02, 0xc5, 0x4b, 0x0d, 0x73, 0x25, 0xe1, 0x62, 0x38,
		0x77, 0xe0, 0xdc, 0x81, 0x73, 0x07, 0xce, 0x1d, 0x38, 0x77, 0xb6, 0xc2, 0xb9, 0xa3, 0xae, 0x20,
		0xed, 0xa5, 0x02, 0x51, 0x51, 0x98, 0x36, 0x11, 0xe2, 0x4b, 0x0b, 0xd4, 0xbc, 0x9a, 0xf7, 0x32,
		0x8f, 0x76, 0xc1, 0x67, 0x49, 0x77, 0xf6, 0x32, 0x7d, 0x0d, 0x1a, 0x6c, 0x62, 0xd8, 0xc4, 0x4a,
		0x28, 0xee, 0xda, 0xd4, 0x91, 0xa2, 0x95, 0x9e, 0x2c, 0x2d, 0x03, 0x58, 0xfa, 0x2f, 0xa4, 0x23,
		0x26, 0xe8, 0x99, 0x96, 0xb2, 0xb3, 0x88, 0x62, 0xa8, 0x98, 0x0f, 0x88, 0x88, 0x9e, 0x22, 0x3b,
		0x05, 0x01, 0x91, 0x5e, 0x96, 0x37, 0xa8, 0x87, 0xf4, 0xb2, 0x2d, 0x86, 0x72, 0xe8, 0x29, 0x92,
		0x42, 0xb6, 0x04, 0x7c, 0xbd, 0x50, 0x76, 0x30, 0x63, 0xb2, 0x9b, 0x31, 0xa4, 0x13, 0xb4, 0xe6,
		0xad, 0x17, 0xc2, 0x49, 0x5a, 0x73, 0x3c, 0xad, 0xca, 0x68, 0xa9, 0xc1, 0x68, 0x81, 0xd1, 0x02,
		0xa3, 0x05, 0x46, 0x8b, 0xc4, 0x2d, 0x56, 0x96, 0x13, 0x6f, 0x0e, 0x92, 0xb4, 0x0d, 0xc5, 0xa1,
		0xd3, 0xe4, 0x39, 0x10, 0x32, 0x55, 0xf2, 0x00, 0x08, 0x99, 0xe6, 0x49, 0x05, 0xe5, 0x4e, 0x15,
		0xe5, 0x4e, 0x25, 0xe5, 0x4b, 0x35, 0xa9, 0x51, 0x51, 0x8a, 0x54, 0x95, 0x7a, 0x9c, 0x3d, 0x27,
		0x31, 0x6e, 0x5c, 0xd7, 0x66, 0xa6, 0x93, 0x87, 0x90, 0x69, 0x15, 0xd9, 0x5e, 0xd2, 0xf6, 0x18,
		0xe5, 0x7b, 0x30, 0x57, 0x60, 0xae, 0xc0, 0x5c, 0x81, 0xb9, 0x02, 0x73, 0xa5, 0xc8, 0xe6, 0x0a,
		0xca, 0xf7, 0x50, 0xbe, 0x37, 0xd9, 0x08, 0x94, 0xef, 0xfd, 0xe4, 0x79, 0x50, 0xef, 0x94, 0x73,
		0xb1, 0x3a, 0xcb, 0xca, 0x28, 0xdf, 0x03, 0x3b, 0x17, 0xd9, 0x36, 0x51, 0x4f, 0xfd, 0x1a, 0xfe,
		0x03, 0x69, 0x4c, 0x8e, 0x6a, 0x31, 0xf8, 0x12, 0xe0, 0x4b, 0x80, 0x2f, 0x01, 0xbe, 0x04, 0xf8,
		0x12, 0xb6, 0xc5, 0x97, 0x80, 0x6a, 0x31, 0x6d, 0x4b, 0xaa, 0xc5, 0x90, 0x50, 0x23, 0x56, 0x3a,
		0xa2, 0x38, 0x49, 0x76, 0x71, 0x12, 0xe1, 0xd4, 0x27, 0x7a, 0x9e, 0xdd, 0xae, 0xee, 0xdd, 0xbf,
		0xb3, 0x27, 0x65, 0x88, 0x43, 0xcd, 0x90, 0x44, 0x75, 0xc3, 0x11, 0x73, 0x35, 0x14, 0x51, 0xe1,
		0x30, 0x44, 0x85, 0x43, 0x10, 0x31, 0x2c, 0xb0, 0xe8, 0xca, 0xa5, 0x44, 0x5a, 0x53, 0x21, 0x7b,
		0x44, 0xdb, 0xe9, 0xf8, 0x2d, 0x2f, 0xc7, 0x2f, 0xd9, 0x21, 0xab, 0x87, 0xc1, 0xc0, 0xc4, 0x5c,
		0xdd, 0xe1, 0xed, 0xb9, 0xbb, 0x18, 0x36, 0x38, 0x7f, 0xb8, 0x44, 0x43, 0x4b, 0x68, 0x87, 0x94,
		0x60, 0x8c, 0xa0, 0x80, 0x93, 0xc2, 0x18, 0x41, 0xf1, 0x84, 0x31, 0x46, 0xb0, 0x38, 0x6a, 0x96,
		0x6e, 0x8c, 0x60, 0xe0, 0xdd, 0xea, 0xdc, 0x62, 0x37, 0x3e, 0x33, 0xff, 0x66, 0xbe, 0x82, 0xe9,
		0x81, 0x2f, 0x1e, 0x80, 0x76, 0x68, 0x60, 0x05, 0x43, 0x03, 0x8b, 0x2c, 0xbc, 0x55, 0x09, 0x71,
		0xe5, 0xc2, 0x5c, 0xb9, 0x50, 0x57, 0x2b, 0xdc, 0xb7, 0xd3, 0xed, 0x48, 0x1e, 0x27, 0x9b, 0x13,
		0xc2, 0x7a, 0x24, 0x85, 0x2d, 0x87, 0x72, 0x90, 0x5f, 0x6a, 0x2f, 0xd7, 0x09, 0x69, 0x1a, 0xce,
		0xe8, 0x81, 0x5e, 0x5a, 0xf4, 0xdc, 0x4b, 0xee, 0x87, 0xbb, 0xab, 0x24, 0xc6, 0x52, 0x09, 0x4f,
		0xba, 0xdb, 0xb8, 0x38, 0x6b, 0x9f, 0xab, 0x68, 0x54, 0x50, 0x0d, 0xc9, 0xb7, 0x8c, 0xc6, 0x65,
		0xaf, 0xff, 0xa9, 0xd9, 0x6a, 0xa9, 0x78, 0x84, 0x5a, 0xf8, 0x08, 0xe7, 0xed, 0xf1, 0x13, 0x6c,
		0x77, 0x5f, 0x1f, 0xb7, 0x19, 0x09, 0x65, 0x05, 0x8c, 0x36, 0x75, 0xc8, 0xe4, 0x7d, 0x48, 0xa2,
		0x07, 0x98, 0x1c, 0x31, 0x79, 0x3b, 0x92, 0x88, 0x7e, 0x72, 0xc9, 0x4e, 0xb4, 0x0a, 0x7a, 0xf8,
		0x64, 0x87, 0x42, 0xec, 0xd6, 0x1c, 0xd9, 0x5c, 0x89, 0xf0, 0x0a, 0xcd, 0xab, 0x09, 0xfd, 0xd0,
		0xba, 0xda, 0x2a, 0x83, 0x83, 0x3d, 0x72, 0xdf, 0xd4, 0x47, 0x4e, 0xc0, 0xcd, 0x1b, 0x9b, 0xd8,
		0xf4, 0xf8, 0x7e, 0xcf, 0x1c, 0xf2, 0x82, 0x16, 0x85, 0x2d, 0x82, 0x3e, 0x7c, 0x28, 0x7b, 0x26,
		0xbf, 0x8f, 0xfa, 0xfb, 0x8e, 0x62, 0x0f, 0xba, 0xfe, 0xc0, 0xf8, 0xbd, 0x3b, 0xd4, 0xfe, 0xad,
		0xfd, 0x92, 0x58, 0xce, 0xfc, 0xa4, 0xd5, 0x3e, 0x6d, 0xb4, 0x5a, 0x9f, 0xfb, 0xa7, 0xed, 0xf3,
		0xce, 0x55, 0xcf, 0x38, 0xfb, 0x65, 0xc7, 0x7b, 0x0a, 0x45, 0x6c, 0x82, 0x8e, 0x42, 0x13, 0x8c,
		0xb5, 0x31, 0x1f, 0xed, 0x44, 0xd2, 0xfa, 0x19, 0x0b, 0x06, 0xbe, 0xe5, 0x29, 0x6d, 0xe7, 0x9d,
		0x5e, 0xf9, 0xde, 0x3d, 0xd3, 0x42, 0x64, 0xa5, 0x8d, 0xdd, 0x5b, 0x96, 0x73, 0xa7, 0x25, 0x67,
		0x15, 0xf2, 0xb5, 0xc6, 0xef, 0x99, 0x16, 0x1e, 0xa6, 0x66, 0x05, 0x5f, 0x1d, 0xdb, 0x1d, 0x98,
		0xb6, 0xfd, 0xa4, 0xc5, 0x07, 0xcb, 0x86, 0xaa, 0xb8, 0x3e, 0x07, 0x29, 0xcd, 0xd3, 0x02, 0x60,
		0x38, 0x75, 0xa2, 0x0a, 0x53, 0x26, 0xf3, 0x94, 0xcf, 0x3c, 0x23, 0x0f, 0x32, 0x32, 0x19, 0xb2,
		0x37, 0x0b, 0x4d, 0xed, 0x1a, 0x09, 0x42, 0x02, 0xe8, 0x2a, 0x9f, 0xbd, 0x40, 0x90, 0x75, 0x42,
		0x10, 0x49, 0x65, 0x8f, 0x9e, 0x6d, 0x0d, 0x2c, 0x1e, 0x25, 0x3c, 0xe8, 0x49, 0x86, 0x10, 0x71,
		0x38, 0x69, 0xc1, 0x33, 0x20, 0xa2, 0x24, 0x84, 0x20, 0x22, 0x4a, 0xd4, 0xa6, 0x0f, 0x22, 0x4a,
		0x88, 0x28, 0x65, 0xdb, 0x4a, 0x75, 0x11, 0x25, 0xfa, 0x4a, 0x2b, 0x15, 0x95, 0x55, 0x3f, 0xa9,
		0xa4, 0xfa, 0xf0, 0x21, 0x2a, 0x8f, 0x1a, 0xea, 0x33, 0x1a, 0x29, 0x58, 0xf4, 0x21, 0x7d, 0x39,
		0x15, 0x1c, 0x8c, 0x92, 0xbe, 0xf2, 0xef, 0x60, 0x34, 0xfe, 0xea, 0xb4, 0x9a, 0xa7, 0xcd, 0x5e,
		0xeb, 0x73, 0xff, 0xcc, 0xf8, 0xd4, 0xbc, 0x80, 0x8b, 0x11, 0x2e, 0xc6, 0xcd, 0x5c, 0x8c, 0x8b,
		0x38, 0x09, 0x4e, 0x46, 0xea, 0x6b, 0xdf, 0xbb, 0x67, 0x5a, 0xa8, 0x38, 0x34, 0xf7, 0x36, 0x72,
		0xf5, 0x8c, 0x35, 0x8b, 0xfd, 0xa4, 0x0d, 0xd9, 0xad, 0xe5, 0xb0, 0x61, 0xec, 0xfd, 0x19, 0x05,
		0x70, 0x29, 0xc2, 0xa5, 0xb8, 0xd2, 0xfd, 0x5f, 0x8b, 0xa5, 0xe0, 0x40, 0x2c, 0x34, 0x35, 0x38,
		0x10, 0x45, 0xd0, 0x85, 0x03, 0x51, 0xc8, 0x36, 0xde, 0xbb, 0xf6, 0x50, 0x27, 0xef, 0x5b, 0x9d,
		0xaa, 0xd2, 0x59, 0xf2, 0x44, 0x2c, 0x3b, 0x49, 0x2f, 0xa1, 0x43, 0x2a, 0xa5, 0x0a, 0x8d, 0xd8,
		0xbe, 0x86, 0xeb, 0x55, 0x8c, 0x97, 0x41, 0xad, 0xeb, 0xd5, 0x0f, 0xbe, 0x79, 0x70, 0xbd, 0xee,
		0x80, 0x45, 0xf8, 0xd2, 0xf5, 0x1a, 0x1d, 0x3c, 0x5c, 0xaf, 0x1b, 0x6d, 0xa5, 0x3a, 0xd7, 0xeb,
		0xc8, 0x72, 0xf8, 0x91, 0x02, 0xc7, 0x2b, 0x65, 0x9f, 0x0e, 0x35, 0xfd, 0xb0, 0x15, 0x78, 0xf7,
		0x54, 0xf6, 0xbb, 0x56, 0xdd, 0xdf, 0x3a, 0x37, 0x0d, 0x80, 0xd5, 0x37, 0xfc, 0x55, 0xe1, 0xe6,
		0x52, 0xd9, 0x9f, 0x3a, 0x65, 0xbd, 0x43, 0xb0, 0x9e, 0x6a, 0xd6, 0x83, 0xe7, 0xa3, 0x00, 0xe6,
		0x86, 0xca, 0x48, 0x9b, 0xcf, 0x6e, 0x99, 0xcf, 0x9c, 0x01, 0xdb, 0xa5, 0x70, 0x5b, 0xf7, 0xd3,
		0xa9, 0xb6, 0x57, 0xab, 0x1c, 0x6b, 0xba, 0xd6, 0xbd, 0xfc, 0xa3, 0xa3, 0xf7, 0x8c, 0x13, 0xcd,
		0x78, 0xe4, 0xcc, 0x09, 0x2c, 0xd7, 0x09, 0x34, 0xee, 0x46, 0x1f, 0x6b, 0xb7, 0xae, 0xff, 0xd5,
		0x69, 0x5d, 0x76, 0xb4, 0xb8, 0xe9, 0xd1, 0xae, 0x8f, 0x08, 0x9e, 0xb0, 0x0a, 0x02, 0x6e, 0x13,
		0xa8, 0xb5, 0x29, 0x2f, 0x41, 0x17, 0x88, 0xd2, 0x05, 0xef, 0x91, 0x97, 0x20, 0x4b, 0x50, 0xbe,
		0x48, 0x8a, 0x49, 0x72, 0x5d, 0x02, 0xeb, 0xce, 0x31, 0x6d, 0xcb, 0xb9, 0xd3, 0x3d, 0xdf, 0xe5,
		0xee, 0xc0, 0xb5, 0x67, 0x62, 0xcb, 0x9d, 0x46, 0xef, 0xb7, 0xfe, 0xa5, 0xd1, 0xbb, 0xea, 0xf4,
		0x43, 0xd6, 0x47, 0x8a, 0x02, 0x52, 0x14, 0x5e, 0xa6, 0x28, 0x08, 0x60, 0x2a, 0x64, 0x2b, 0x50,
		0x0b, 0x83, 0x3f, 0xc7, 0x15, 0x29, 0xe9, 0x51, 0x69, 0xe9, 0x51, 0x59, 0xc1, 0x58, 0xfb, 0x69,
		0x48, 0x54, 0x40, 0xa2, 0xc2, 0x0a, 0x52, 0x60, 0x55, 0x6e, 0x42, 0x8e, 0x02, 0x90, 0x7a, 0x6e,
		0x90, 0x3a, 0x72, 0x14, 0x8a, 0x7c, 0x84, 0x25, 0x35, 0x65, 0x4d, 0x28, 0x64, 0x12, 0x47, 0x10,
		0x85, 0x4c, 0xd4, 0x76, 0x0c, 0xa2, 0xe9, 0x28, 0x64, 0xca, 0xb6, 0x95, 0xea, 0xa2, 0xe9, 0x41,
		0xdc, 0xb1, 0x4d, 0x41, 0x1d, 0xd3, 0x11, 0xcc, 0x1e, 0x98, 0x3d, 0x79, 0x31, 0x7b, 0x96, 0x14,
		0x84, 0xd0, 0x5b, 0x42, 0xcb, 0x1e, 0x64, 0x9b, 0xd3, 0x35, 0x97, 0x76, 0xf5, 0x41, 0x1a, 0x27,
		0x0c, 0x4f, 0x18, 0x9e, 0x30, 0x3c, 0x61, 0x78, 0x6e, 0x9f, 0xe1, 0x69, 0x0d, 0x99, 0xc3, 0x2d,
		0xfe, 0xa4, 0xa8, 0x8a, 0x9e, 0x32, 0x9b, 0xb3, 0x99, 0xbc, 0xea, 0x47, 0x33, 0x50, 0x20, 0x2f,
		0xc6, 0x1b, 0x1e, 0x85, 0x87, 0x62, 0xcd, 0xda, 0xe8, 0x35, 0xdb, 0x17, 0xfd, 0x73, 0xa3, 0xf7,
		0x5b, 0xfb, 0x8c, 0x5a, 0x7a, 0x44, 0x99, 0x6f, 0x01, 0x79, 0x84, 0x58, 0x53, 0x12, 0x25, 0x9e,
		0x39, 0x80, 0xf9, 0x82, 0xe2, 0x9d, 0x88, 0xd0, 0x29, 0xdf, 0xf5, 0x9e, 0xd1, 0xbd, 0x88, 0xcc,
		0xca, 0xff, 0x5c, 0x19, 0xdd, 0x26, 0x76, 0x9d, 0x62, 0xd7, 0xd5, 0x58, 0xf2, 0xf4, 0x7a, 0x3a,
		0xc5, 0x10, 0xb0, 0x3f, 0xe0, 0x36, 0x81, 0xdb, 0x44, 0x0f, 0x98, 0xff, 0x4d, 0xc5, 0x98, 0xa5,
		0x65, 0x0f, 0x02, 0x68, 0x0f, 0x68, 0x0f, 0x68, 0x0f, 0x68, 0x0f, 0x68, 0x4f, 0x78, 0x63, 0xd1,
		0x1c, 0x6f, 0xea, 0xbf, 0x71, 0xc6, 0x56, 0x90, 0x7e, 0x57, 0xf6, 0x06, 0xcc, 0x2b, 0x2f, 0xd1,
		0x58, 0xc1, 0xb2, 0x7f, 0x08, 0x7f, 0x2b, 0xf9, 0x56, 0x37, 0x87, 0xc3, 0xd0, 0x68, 0x41, 0x33,
		0x3d, 0x51, 0xb4, 0xd1, 0x4c, 0x6f, 0x49, 0x0b, 0xb4, 0x97, 0xd8, 0x19, 0x99, 0xea, 0xc8, 0x54,
		0xdf, 0xac, 0x99, 0xde, 0x3c, 0x27, 0x21, 0x3d, 0x9d, 0xfa, 0xda, 0xf7, 0x92, 0x59, 0x09, 0xd3,
		0xa7, 0xa5, 0xc5, 0x3a, 0x65, 0xc1, 0x30, 0x05, 0xf6, 0xc8, 0x99, 0xef, 0x44, 0xf3, 0x14, 0xfe,
		0x3b, 0x62, 0xbe, 0x85, 0x06, 0x7b, 0xc8, 0x5b, 0x5f, 0x49, 0x26, 0x64, 0x66, 0x33, 0x24, 0xb4,
		0x17, 0x9a, 0x1a, 0x12, 0xda, 0x45, 0xd0, 0x85, 0x8b, 0x52, 0xc8, 0x36, 0x26, 0x82, 0xc8, 0xe1,
		0xbe, 0x6b, 0x2b, 0xf3, 0x4b, 0xc6, 0xd4, 0xe1, 0x8c, 0x14, 0x83, 0xbb, 0xe1, 0x8c, 0x24, 0x36,
		0x78, 0xe0, 0x8c, 0x84, 0x33, 0x32, 0xdb, 0x56, 0x2a, 0x74, 0x46, 0x06, 0xde, 0x58, 0x00, 0xeb,
		0x3c, 0x7c, 0x0a, 0x8c, 0x7e, 0x97, 0x71, 0xbe, 0xea, 0x47, 0xbf, 0x77, 0x4e, 0x8d, 0xfe, 0x99,
		0xd1, 0x32, 0x7e, 0x6d, 0xf4, 0x8c, 0x33, 0x65, 0x13, 0xe0, 0x3b, 0xa7, 0xa7, 0xfd, 0xd3, 0xf6,
		0x45, 0xaf, 0xdb, 0x6e, 0xb5, 0xd4, 0x3c, 0x46, 0x6d, 0xfc, 0x18, 0x5d, 0xa3, 0xd3, 0xee, 0xf6,
		0xfa, 0xed, 0x8b, 0xd6, 0x67, 0xcc, 0x82, 0x97, 0x65, 0x8b, 0xcc, 0x1e, 0xb7, 0x9a, 0x79, 0xf0,
		0x2f, 0x0f, 0x5b, 0xcd, 0x54, 0xf8, 0xd9, 0xfb, 0xb7, 0xc5, 0xc3, 0xe1, 0x81, 0x6e, 0x81, 0x6e,
		0x73, 0x83, 0x6e, 0xa7, 0x9b, 0xd3, 0x51, 0x63, 0x5b, 0xea, 0x6e, 0x67, 0x40, 0xb6, 0x40, 0xb6,
		0x40, 0xb6, 0x40, 0xb6, 0x40, 0xb6, 0x68, 0x84, 0x2e, 0xf5, 0x6b, 0x57, 0x1b, 0xa1, 0x57, 0xd1,
		0x8d, 0x1a, 0x8d, 0xd0, 0xd5, 0xb0, 0x5e, 0x6d, 0x7f, 0x1f, 0xcc, 0x87, 0x56, 0xe8, 0x52, 0xbe,
		0x10, 0x8f, 0x06, 0x62, 0xcf, 0x0d, 0x62, 0xf7, 0x19, 0xf7, 0x9f, 0x74, 0x6e, 0x3d, 0xa8, 0x28,
		0x93, 0x99, 0x26, 0x0e, 0xcc, 0xbe, 0x0d, 0x98, 0x1d, 0xc3, 0xcb, 0x76, 0x14, 0xb3, 0x63, 0x78,
		0x59, 0x51, 0x31, 0x7b, 0xf5, 0x40, 0x01, 0x68, 0x3f, 0x00, 0x68, 0x07, 0x68, 0x07, 0x6e, 0x02,
		0x68, 0x17, 0xc9, 0x7a, 0x07, 0x15, 0x8c, 0xce, 0x03, 0x68, 0x07, 0x68, 0x7f, 0x9d, 0x4d, 0x50,
		0xdc, 0x48, 0x67, 0x63, 0x61, 0x22, 0x4f, 0x76, 0x8c, 0x85, 0x3a, 0x47, 0x4c, 0xe4, 0xd9, 0x74,
		0xdb, 0x30, 0x91, 0xa7, 0x30, 0x57, 0x5e, 0x43, 0x65, 0xe3, 0x5a, 0x52, 0x00, 0x13, 0x79, 0x60,
		0x7b, 0x16, 0xce, 0xf6, 0x44, 0xc0, 0xa8, 0xc8, 0x47, 0x58, 0x0a, 0x18, 0x1f, 0x79, 0xba, 0xe7,
		0x5b, 0xae, 0x6f, 0xf1, 0x27, 0xfa, 0x98, 0xd1, 0x0b, 0xfa, 0xdb, 0xdc, 0x88, 0xfe, 0x10, 0x0d,
		0xe7, 0x33, 0x90, 0x43, 0xe8, 0x6d, 0x2b, 0x6d, 0x45, 0x84, 0xde, 0x10, 0x7a, 0x13, 0xb7, 0x95,
		0x48, 0x97, 0x95, 0x49, 0x12, 0x91, 0x37, 0x0a, 0xe2, 0xe3, 0xf0, 0x07, 0x82, 0x1f, 0x88, 0xbc,
		0x29, 0x62, 0xbd, 0x43, 0xb0, 0x1e, 0xe2, 0x6e, 0xf0, 0x7d, 0xbc, 0xca, 0x26, 0x2a, 0xe3, 0x6e,
		0xd3, 0xa5, 0x99, 0x3b, 0x13, 0x7c, 0xeb, 0x7e, 0x3a, 0xd5, 0xf6, 0x6a, 0x95, 0x63, 0x4d, 0x1f,
		0x7b, 0x43, 0x4f, 0x34, 0xe3, 0x91, 0x33, 0x27, 0xb0, 0x5c, 0x27, 0xd0, 0xb8, 0x1b, 0x7d, 0xac,
		0xdd, 0xba, 0xfe, 0x57, 0xa7, 0x75, 0xd9, 0xd1, 0x7a, 0x23, 0xc7, 0x61, 0xa4, 0x65, 0x87, 0xaa,
		0xf1, 0xd4, 0x22, 0x5c, 0x45, 0x5d, 0x49, 0x9b, 0x3b, 0x88, 0xb5, 0x10, 0x6a, 0x6d, 0xca, 0x4b,
		0xd0, 0x05, 0xa2, 0x74, 0xc1, 0x7b, 0x64, 0x29, 0xc8, 0x12, 0x94, 0xc8, 0x52, 0xc8, 0x2e, 0x36,
		0x91, 0xa5, 0x80, 0x2c, 0x85, 0x4d, 0xb7, 0x0d, 0x59, 0x0a, 0x85, 0xb9, 0xf2, 0x1a, 0xb2, 0x14,
		0xd6, 0x92, 0x02, 0xc8, 0x52, 0x00, 0x52, 0x2f, 0x1c, 0x52, 0x47, 0x96, 0x42, 0x91, 0x8f, 0xb0,
		0x34, 0x0a, 0x98, 0x3e, 0x08, 0xbc, 0x5b, 0xfa, 0xfc, 0x84, 0x94, 0x32, 0xa2, 0xea, 0x42, 0x08,
		0xa2, 0x09, 0x15, 0xb5, 0x3d, 0x83, 0xa8, 0x3a, 0x9a, 0x50, 0x65, 0xdb, 0x4a, 0x75, 0x51, 0xf5,
		0x1b, 0xd7, 0xb5, 0x99, 0xe9, 0xa8, 0xe8, 0xaa, 0x5c, 0x45, 0xa4, 0x42, 0x10, 0x6d, 0x8c, 0x3f,
		0x5b, 0x38, 0xb4, 0xea, 0xe5, 0x10, 0x6b, 0xb8, 0xdb, 0xe0, 0x6e, 0xdb, 0x64, 0xf8, 0xd9, 0x3c,
		0x1f, 0xc1, 0xc3, 0x46, 0x7d, 0xe5, 0x7b, 0xf7, 0x4c, 0x1b, 0x05, 0x4c, 0x73, 0x6f, 0xb5, 0x10,
		0x2c, 0xcc, 0xce, 0xa1, 0x9a, 0x19, 0x54, 0x95, 0x1c, 0xa0, 0x15, 0x7c, 0x75, 0x6c, 0x77, 0x60,
		0xda, 0xda, 0xd4, 0x3f, 0xc2, 0x01, 0x07, 0x07, 0xdc, 0x0a, 0x72, 0x41, 0x10, 0xb3, 0xc1, 0x3f,
		0x57, 0x68, 0x6a, 0xf0, 0xcf, 0x89, 0xa0, 0xbb, 0x0b, 0xfe, 0xb9, 0x37, 0x05, 0x66, 0x10, 0x6a,
		0xc6, 0x28, 0x05, 0x83, 0x7b, 0xf6, 0x60, 0x7a, 0xc9, 0xf0, 0xed, 0xb2, 0xeb, 0x31, 0x27, 0x8e,
		0x73, 0xea, 0x0e, 0xe3, 0xdf, 0x5d, 0xff, 0x6f, 0xdd, 0x0a, 0x41, 0x94, 0x33, 0x60, 0xe5, 0x97,
		0x1f, 0x04, 0x73, 0x9f, 0x94, 0x43, 0x0b, 0xad, 0x6c, 0x07, 0x5e, 0x50, 0x1e, 0xb8, 0x4e, 0xc0,
		0x7d, 0xd3, 0x72, 0xd8, 0x50, 0x0f, 0x57, 0x2f, 0xf3, 0x38, 0x9d, 0x24, 0xf9, 0xb3, 0xec, 0xd5,
		0x3c, 0x3d, 0xfe, 0x56, 0x37, 0x39, 0xf7, 0xad, 0x9b, 0x11, 0x67, 0x41, 0xf4, 0xa9, 0xe7, 0x5b,
		0x0f, 0xa6, 0xff, 0x14, 0xff, 0xd6, 0xdc, 0x07, 0xf1, 0xc3, 0xc9, 0x15, 0xe6, 0xf2, 0x38, 0x48,
		0x22, 0xf7, 0x94, 0x9c, 0xd8, 0x36, 0x93, 0xcb, 0x33, 0xa9, 0x05, 0x18, 0x51, 0x93, 0x7c, 0x17,
		0x68, 0x7c, 0xc3, 0x64, 0x3e, 0x61, 0x4a, 0x5f, 0xb0, 0x02, 0x1f, 0x30, 0xb5, 0x59, 0xad, 0xcc,
		0xe7, 0xab, 0xcc, 0x52, 0x56, 0xe3, 0xe3, 0x2d, 0xb6, 0x3e, 0x25, 0xf3, 0xe5, 0x4e, 0x46, 0xe4,
		0x31, 0xf3, 0xd6, 0x67, 0x14, 0x01, 0xb4, 0xd4, 0x77, 0x4b, 0x50, 0xbf, 0x50, 0xea, 0x24, 0x26,
		0xc2, 0x24, 0x11, 0x2a, 0x52, 0x01, 0x50, 0xc4, 0x73, 0x3b, 0x15, 0xc1, 0xd2, 0x07, 0xc6, 0x7d,
		0x6b, 0xa0, 0xdf, 0xb8, 0x23, 0x67, 0xa8, 0xa7, 0xc6, 0x50, 0x54, 0xe4, 0x41, 0xa4, 0xa1, 0x7f,
		0xfe, 0x18, 0x34, 0xaa, 0xbb, 0x0a, 0xd5, 0x0d, 0xd5, 0x0d, 0xd5, 0x0d, 0xd5, 0xbd, 0xc9, 0x96,
		0x9d, 0x59, 0x34, 0x3d, 0xdd, 0x7f, 0x2a, 0x29, 0x15, 0x0d, 0x39, 0x5f, 0xf6, 0x34, 0xb4, 0x59,
		0x39, 0x55, 0x64, 0xe5, 0x14, 0x59, 0xac, 0xab, 0x12, 0xef, 0xca, 0xc5, 0xbc, 0x72, 0x71, 0xaf,
		0x56, 0xec, 0xd3, 0x88, 0x7f, 0x22, 0x35, 0x40, 0xae, 0x0e, 0x52, 0x82, 0x83, 0xb1, 0x54, 0x22,
		0xbe, 0x35, 0x63, 0x41, 0x91, 0xd0, 0x27, 0xe6, 0x58, 0x5a, 0xd1, 0xaf, 0x4c, 0x05, 0xa8, 0x54,
		0x05, 0x39, 0x50, 0x09, 0xaa, 0x55, 0x43, 0x6e, 0x54, 0x44, 0x6e, 0x54, 0x45, 0x3e, 0x54, 0x06,
		0xad, 0xea, 0x20, 0x56, 0x21, 0xca, 0x54, 0x49, 0x4a, 0x38, 0x31, 0xeb, 0x47, 0x9e, 0xc7, 0xfc,
		0xd8, 0xb8, 0x57, 0x9f, 0xcb, 0xb3, 0xe0, 0x99, 0x14, 0x71, 0xbe, 0x8a, 0x2e, 0x85, 0x73, 0x0f,
		0x51, 0x51, 0x93, 0x28, 0x72, 0xad, 0x68, 0xcf, 0x69, 0xeb, 0x2f, 0x72, 0xa3, 0xf6, 0xf3, 0xa0,
		0xfe, 0x73, 0x64, 0x06, 0xe4, 0xc5, 0x1c, 0xc8, 0x9d, 0x59, 0x90, 0x3b, 0xf3, 0x20, 0x5f, 0x66,
		0x82, 0x1a, 0x73, 0x41, 0x91, 0xd9, 0x90, 0x6e, 0x3d, 0x79, 0x7d, 0xc8, 0x52, 0x89, 0x31, 0xb2,
		0x1c, 0x7e, 0x50, 0x57, 0x29, 0x30, 0x12, 0xfd, 0x71, 0xa4, 0xf0, 0x11, 0xd4, 0xb4, 0x69, 0x7c,
		0xf9, 0xa5, 0x56, 0x60, 0x6a, 0xaa, 0xdb, 0x38, 0xce, 0x3d, 0x8c, 0xe2, 0xb6, 0x8e, 0x73, 0xcf,
		0x93, 0x97, 0x5e, 0x7b, 0xf3, 0x77, 0x59, 0x75, 0xef, 0xbd, 0x9c, 0x88, 0xd5, 0x59, 0x56, 0x36,
		0x1f, 0xf3, 0xc7, 0xca, 0xd5, 0xa3, 0x7a, 0xfd, 0xe0, 0xb0, 0x5e, 0xaf, 0x1c, 0xee, 0x1d, 0x56,
		0x8e, 0xf7, 0xf7, 0xab, 0x07, 0xd5, 0x7d, 0x70, 0x77, 0xd1, 0xb8, 0xfb, 0xcd, 0x6e, 0x52, 0xbf,
		0xde, 0x29, 0x13, 0x4d, 0x51, 0x7e, 0xfd, 0xdc, 0x73, 0x28, 0xcf, 0xb7, 0x57, 0xcf, 0x80, 0x2a,
		0x8a, 0xe5, 0xb8, 0x4a, 0x0b, 0x3d, 0xb5, 0xce, 0xa3, 0xa7, 0x80, 0x5f, 0x07, 0x7e, 0x1d, 0xf8,
		0x75, 0xe0, 0xd7, 0x81, 0x5f, 0x07, 0x7e, 0x9d, 0x95, 0x25, 0x86, 0x35, 0x64, 0x0e, 0xb7, 0xf8,
		0x13, 0x4d, 0x1e, 0xf9, 0x6b, 0x4a, 0x44, 0x25, 0xca, 0x29, 0x35, 0x93, 0xad, 0xf8, 0x68, 0x06,
		0x39, 0x90, 0x5f, 0xe3, 0x03, 0x8a, 0xba, 0x7c, 0x9e, 0x1b, 0xbd, 0x6e, 0xf3, 0xb4, 0xdf, 0xfb,
		0xdc, 0x31, 0x54, 0x8b, 0xb1, 0x08, 0xa2, 0x06, 0xca, 0x9d, 0x60, 0x5a, 0x2e, 0x1c, 0x61, 0x33,
		0x27, 0xf5, 0x5b, 0xbb, 0xd3, 0x3f, 0x6d, 0x5f, 0x5d, 0xf4, 0x4a, 0x70, 0xac, 0xe4, 0xee, 0x70,
		0x9a, 0xbf, 0x76, 0x92, 0x5b, 0x84, 0xd3, 0xc9, 0xdf, 0xe9, 0x44, 0x42, 0xee, 0xcc, 0x68, 0x35,
		0x3e, 0xe3, 0x74, 0xf2, 0x77, 0x3a, 0x3d, 0x23, 0x3f, 0x57, 0x47, 0xe9, 0x13, 0x5c, 0xc3, 0x3c,
		0xa6, 0x41, 0x26, 0xf0, 0xa9, 0xe5, 0x85, 0x0d, 0xb6, 0x3b, 0x3d, 0x4f, 0x31, 0xa3, 0x15, 0xae,
		0x27, 0xc6, 0x4f, 0x2b, 0x3d, 0x7f, 0xfa, 0xaf, 0x24, 0xed, 0x34, 0xd4, 0x31, 0x2f, 0x21, 0xe3,
		0x96, 0x02, 0x6e, 0x72, 0xa6, 0xae, 0x58, 0x20, 0x26, 0xbf, 0x63, 0xb5, 0x02, 0x35, 0xd4, 0x0a,
		0x50, 0x3e, 0x02, 0x6a, 0x05, 0x92, 0x07, 0x41, 0xad, 0xc0, 0xee, 0x18, 0x23, 0xa8, 0x15, 0x40,
		0xad, 0xc0, 0xb2, 0x87, 0x40, 0xad, 0x80, 0x12, 0xb5, 0x8f, 0x98, 0x32, 0x62, 0xca, 0x39, 0x34,
		0x0b, 0x72, 0x67, 0x1e, 0xe4, 0xcb, 0x4c, 0x50, 0xe7, 0x2d, 0xd1, 0x10, 0x53, 0x46, 0xad, 0x40,
		0xfc, 0x08, 0xa8, 0x15, 0x48, 0x36, 0x02, 0xb5, 0x02, 0x3f, 0x79, 0x1e, 0x64, 0x53, 0xe7, 0x5c,
		0xac, 0xce, 0xb2, 0x32, 0x6a, 0x05, 0xc0, 0xdd, 0x5b, 0x64, 0xaa, 0xa8, 0xa7, 0x7e, 0x8d, 0xd4,
		0x74, 0x69, 0x4c, 0x8e, 0xd4, 0x74, 0xb8, 0x11, 0xe0, 0x46, 0x80, 0x1b, 0x01, 0x6e, 0x04, 0xb8,
		0x11, 0x8a, 0xe8, 0x46, 0x40, 0x6a, 0x7a, 0xfa, 0x0c, 0x48, 0x4d, 0x5f, 0x19, 0x11, 0x21, 0x35,
		0x7d, 0xc1, 0x49, 0x21, 0x35, 0x3d, 0xc7, 0x87, 0x83, 0xd4, 0xf4, 0x3c, 0x9f, 0x0e, 0x52, 0xd3,
		0xf3, 0x7c, 0x3a, 0x48, 0x4d, 0x57, 0xea, 0x48, 0x51, 0x68, 0x1e, 0x23, 0xf9, 0x48, 0x2c, 0xe2,
		0x42, 0x26, 0x34, 0x55, 0x26, 0x74, 0x9c, 0x40, 0x8b, 0x44, 0xe8, 0xcc, 0x3c, 0xa3, 0xc4, 0xc1,
		0xa9, 0xd2, 0xb1, 0xa9, 0xc8, 0xa1, 0x89, 0x96, 0xe9, 0x48, 0x83, 0x46, 0x1a, 0xb4, 0x86, 0x34,
		0x68, 0x92, 0x2d, 0x56, 0xe6, 0x80, 0x54, 0x30, 0x57, 0x71, 0x99, 0x80, 0xa7, 0x98, 0xb3, 0x38,
		0x2f, 0x6c, 0xe7, 0xe6, 0x2e, 0x46, 0x2a, 0x6e, 0x5b, 0x0d, 0x95, 0xad, 0x1a, 0x59, 0xf3, 0x3b,
		0x7b, 0x22, 0xb6, 0x49, 0x4a, 0x2d, 0x2b, 0xe0, 0x0d, 0xce, 0x89, 0x47, 0xe5, 0x9c, 0x5b, 0x8e,
		0x61, 0xb3, 0x50, 0x04, 0x13, 0xe7, 0x93, 0x94, 0xce, 0xcd, 0xc7, 0x29, 0xca, 0x6a, 0xb3, 0x6e,
		0x4a, 0x6d, 0x7f, 0xc8, 0x7c, 0x36, 0xfc, 0x18, 0x9e, 0xba, 0x33, 0xb2, 0x6d, 0x15, 0xa4, 0xaf,
		0x02, 0xe6, 0x93, 0x26, 0xd0, 0x50, 0x5d, 0x26, 0x45, 0x58, 0x78, 0x87, 0x30, 0x70, 0x89, 0xb4,
		0x5c, 0xd6, 0x1f, 0x0d, 0x78, 0x32, 0xb3, 0xbe, 0x74, 0x11, 0x6f, 0x53, 0x33, 0xd9, 0xa5, 0xfe,
		0xb9, 0x67, 0x07, 0xfd, 0x56, 0xe0, 0x05, 0xfd, 0xd3, 0xc9, 0x2e, 0x85, 0x9a, 0xb0, 0xdf, 0x8b,
		0x76, 0xa4, 0xdf, 0xa9, 0x75, 0xe2, 0xef, 0x1a, 0xe9, 0xd6, 0x84, 0x9f, 0x75, 0xe2, 0x8d, 0x88,
		0x7e, 0x32, 0xfc, 0xdf, 0x79, 0xf4, 0xa2, 0x1f, 0xc3, 0xf7, 0x3c, 0x9d, 0xbc, 0xe6, 0x9b, 0xed,
		0xd0, 0x64, 0xc5, 0x9e, 0xee, 0x49, 0x7c, 0x9d, 0xb7, 0xeb, 0x1a, 0x63, 0xec, 0xf6, 0x22, 0x89,
		0x42, 0x51, 0x80, 0x4f, 0x5a, 0x70, 0x4f, 0x3e, 0x46, 0xbb, 0x86, 0x31, 0xda, 0x05, 0xf2, 0x0c,
		0x61, 0x8c, 0x36, 0xc6, 0x68, 0xbf, 0xbe, 0x65, 0x64, 0x63, 0xb4, 0xcd, 0x20, 0x70, 0x07, 0x96,
		0xc9, 0xd9, 0x50, 0xf7, 0x83, 0x6f, 0x9e, 0x1e, 0xb0, 0x20, 0xb0, 0x5c, 0x27, 0xa0, 0x1f, 0xa1,
		0xbd, 0xf4, 0x49, 0x68, 0xc7, 0x67, 0x57, 0x30, 0x3e, 0xbb, 0xc8, 0xe2, 0x5c, 0x95, 0x58, 0x57,
		0x2e, 0xde, 0x95, 0x8b, 0x79, 0xb5, 0xe2, 0x7e, 0x3b, 0x7d, 0x91, 0xe4, 0x0e, 0x7c, 0x85, 0x8e,
		0x7b, 0x15, 0x0e, 0xfb, 0x69, 0x47, 0xfd, 0xb2, 0xff, 0x02, 0xeb, 0xce, 0x31, 0x6d, 0xcb, 0xb9,
		0xd3, 0x3d, 0xdf, 0xe5, 0xee, 0xc0, 0xb5, 0x83, 0x72, 0xa4, 0xa0, 0x38, 0x2b, 0x8f, 0x75, 0xd4,
		0xf8, 0x9b, 0xb2, 0xed, 0x0e, 0x4c, 0x5b, 0xb7, 0x9c, 0x21, 0x7b, 0x2c, 0x6d, 0x15, 0x27, 0xc2,
		0x45, 0x0d, 0x17, 0x35, 0xb1, 0x8b, 0xfa, 0xcd, 0x16, 0xdc, 0x9d, 0xd2, 0x20, 0xf0, 0x6e, 0x13,
		0x8f, 0x10, 0xbd, 0x49, 0x3d, 0x4d, 0x1c, 0x56, 0x34, 0xac, 0x68, 0x58, 0xd1, 0xb0, 0xa2, 0x61,
		0x45, 0x13, 0xde, 0x58, 0xf2, 0xf6, 0x3d, 0x0a, 0xda, 0xf5, 0x28, 0x6a, 0xcf, 0xa3, 0x20, 0xa9,
		0x49, 0x65, 0xfb, 0x1d, 0xd5, 0xed, 0x76, 0x72, 0xd3, 0x80, 0x44, 0x7d, 0xc3, 0x11, 0x15, 0x0d,
		0x28, 0x54, 0xb6, 0xcb, 0xc9, 0x61, 0x7b, 0x1c, 0x70, 0x23, 0xb1, 0xaa, 0xa6, 0xa7, 0x76, 0x0d,
		0x90, 0xb9, 0x1e, 0xc8, 0xe4, 0x16, 0xbb, 0xf1, 0x99, 0xf9, 0x37, 0xf3, 0x15, 0x01, 0xcd, 0xa9,
		0x07, 0x00, 0xd8, 0x04, 0xd8, 0x04, 0xd8, 0x04, 0xd8, 0x04, 0xd8, 0x54, 0x20, 0x84, 0xf5, 0x48,
		0x0a, 0x5b, 0xce, 0x9d, 0x8a, 0xe0, 0x4d, 0x9d, 0x90, 0xa6, 0xe1, 0x8c, 0x1e, 0xe8, 0xa5, 0x45,
		0xcf, 0xbd, 0xe4, 0x7e, 0xb8, 0xbb, 0x4a, 0x0a, 0x6b, 0x2a, 0xe1, 0x49, 0x77, 0x1b, 0x17, 0x67,
		0xed, 0x73, 0x15, 0x45, 0x35, 0xd5, 0x90, 0x7c, 0xcb, 0x68, 0x5c, 0xf6, 0xfa, 0x9f, 0x9a, 0xad,
		0x96, 0x8a, 0x47, 0xa8, 0x85, 0x8f, 0x70, 0xde, 0x1e, 0x3f, 0xc1, 0x76, 0x17, 0x70, 0xb9, 0xcd,
		0x48, 0x28, 0x2b, 0x60, 0xb4, 0xa9, 0x43, 0x26, 0x1f, 0x16, 0x14, 0x43, 0xde, 0xf6, 0x84, 0x7e,
		0x4d, 0x01, 0xfd, 0xe4, 0x92, 0x9d, 0x68, 0x15, 0xd4, 0x97, 0x67, 0xde, 0xcc, 0xc9, 0xe4, 0x0f,
		0x7a, 0xe1, 0x15, 0x9a, 0x57, 0x13, 0xfa, 0xa1, 0x75, 0xb5, 0x55, 0x06, 0x07, 0x7b, 0xe4, 0xbe,
		0xa9, 0x8f, 0x9c, 0x80, 0x9b, 0x37, 0x36, 0xb1, 0xe9, 0xf1, 0xfd, 0x9e, 0x39, 0xbb, 0xe0, 0xf9,
		0x1d, 0x9b, 0x58, 0x1f, 0x3e, 0xc4, 0x29, 0xfe, 0x03, 0xf7, 0xc1, 0x1b, 0xc5, 0x85, 0x10, 0xfa,
		0x03, 0xe3, 0xf7, 0xee, 0x50, 0xfb, 0xb7, 0xf6, 0x4b, 0x62, 0x39, 0xf3, 0x93, 0x56, 0xfb, 0xb4,
		0xd1, 0x6a, 0x7d, 0xee, 0x9f, 0xb6, 0xcf, 0x3b, 0x57, 0x3d, 0xe3, 0xec, 0x97, 0x1d, 0xaf, 0x78,
		0x8f, 0xd8, 0x04, 0xf5, 0xee, 0x13, 0x8c, 0xb5, 0x31, 0x1f, 0xed, 0x84, 0xb3, 0xfb, 0x8c, 0x05,
		0x03, 0xdf, 0xf2, 0x94, 0x0e, 0xad, 0x9d, 0xb4, 0xc5, 0xba, 0x67, 0x5a, 0x88, 0xac, 0xb4, 0xb1,
		0x7b, 0xcb, 0x72, 0xee, 0xb4, 0xe4, 0xac, 0x42, 0xbe, 0xd6, 0xf8, 0x3d, 0xd3, 0xc2, 0xc3, 0xd4,
		0xac, 0xe0, 0xab, 0x13, 0xe5, 0x7f, 0xd9, 0x4f, 0x5a, 0x7c, 0xb0, 0x4c, 0xd9, 0xa4, 0xad, 0x1c,
		0xf4, 0xe7, 0x9d, 0x16, 0x00, 0xc3, 0xa9, 0x13, 0x55, 0xd8, 0xfb, 0x33, 0x4f, 0xcd, 0x79, 0x67,
		0xe4, 0x41, 0x46, 0x26, 0x43, 0xdb, 0xb0, 0x42, 0x53, 0x43, 0xa8, 0x63, 0x1d, 0x6b, 0xd7, 0xb3,
		0xad, 0x81, 0xc5, 0xa3, 0x7a, 0x4b, 0x3d, 0x29, 0x45, 0x26, 0x8e, 0x76, 0x2c, 0x78, 0x06, 0x04,
		0x3c, 0x84, 0x10, 0x44, 0xc0, 0x83, 0x5a, 0x33, 0x23, 0xe0, 0x81, 0x80, 0x47, 0xb6, 0xad, 0x44,
		0x8d, 0x8a, 0x6c, 0xa1, 0xf8, 0xb3, 0x1a, 0x95, 0x50, 0xfb, 0x0c, 0xf5, 0x19, 0x8d, 0x14, 0x2c,
		0xfa, 0x70, 0xdc, 0x87, 0x2a, 0xd2, 0x56, 0xf0, 0x7f, 0xc1, 0xff, 0x25, 0xd3, 0xff, 0x65, 0xfc,
		0xd5, 0x69, 0x35, 0x4f, 0x9b, 0xbd, 0xd6, 0xe7, 0xfe, 0x99, 0xf1, 0xa9, 0x79, 0x01, 0x0f, 0x18,
		0x3c, 0x60, 0x9b, 0x79, 0xc0, 0x16, 0x71, 0x12, 0x7c, 0x60, 0x2a, 0x7c, 0x60, 0xa1, 0xe2, 0xd0,
		0xdc, 0xdb, 0xc8, 0x13, 0x31, 0xd6, 0x2c, 0xf6, 0x93, 0x36, 0x64, 0xb7, 0x96, 0xc3, 0x86, 0xb1,
		0x73, 0x62, 0x14, 0xc0, 0xe3, 0x05, 0x8f, 0xd7, 0xca, 0x1e, 0xaf, 0x95, 0x59, 0x0a, 0xfe, 0x2d,
		0xf8, 0xb7, 0x76, 0xc4, 0xbf, 0x75, 0xef, 0xda, 0x43, 0xdd, 0xf3, 0x2d, 0xd7, 0xb7, 0xf8, 0x13,
		0xbd, 0x6b, 0x6b, 0x96, 0x3c, 0x91, 0x05, 0x3f, 0x09, 0xce, 0xd3, 0x19, 0xd2, 0xa5, 0x0a, 0x8d,
		0x54, 0xb9, 0x86, 0x67, 0x50, 0x0c, 0x08, 0x56, 0xeb, 0x19, 0xf4, 0x83, 0x6f, 0x1e, 0x3c, 0x83,
		0x3b, 0x60, 0xb0, 0xbc, 0xf4, 0x0c, 0x46, 0x07, 0x0f, 0xcf, 0xe0, 0x46, 0x5b, 0xa9, 0xb6, 0xee,
		0xf6, 0x48, 0x81, 0x5f, 0x70, 0x1f, 0x65, 0xb7, 0xe2, 0x5f, 0x14, 0x65, 0xb7, 0x28, 0x74, 0xdc,
		0xe5, 0xb2, 0xdb, 0x43, 0xb0, 0x1e, 0x6a, 0x6c, 0x8b, 0x0c, 0xcc, 0x77, 0x20, 0x10, 0xe4, 0xb3,
		0x5b, 0xe6, 0x33, 0x67, 0xc0, 0x76, 0x29, 0x1a, 0xd4, 0xfd, 0x74, 0xaa, 0xed, 0xd5, 0x2a, 0xc7,
		0x9a, 0xae, 0x75, 0x2f, 0xff, 0xe8, 0xe8, 0x3d, 0xe3, 0x44, 0x33, 0x1e, 0x39, 0x73, 0xa2, 0x9e,
		0x78, 0x1a, 0x77, 0xa3, 0x8f, 0xb5, 0x5b, 0xd7, 0xff, 0xea, 0xb4, 0x2e, 0x3b, 0x5a, 0xdc, 0xfc,
		0x7f, 0xd7, 0xc7, 0x7f, 0x4d, 0x58, 0x05, 0xf1, 0xa0, 0x09, 0xd4, 0xda, 0x94, 0x97, 0xa0, 0x0b,
		0x44, 0xe9, 0x82, 0xf7, 0x08, 0x9b, 0xcb, 0x12, 0x94, 0x2f, 0x72, 0x36, 0x92, 0x54, 0x8c, 0xf9,
		0xc6, 0xa2, 0x33, 0xa1, 0xcf, 0x68, 0x5a, 0xf6, 0xa5, 0xd1, 0xbb, 0xea, 0xf4, 0x43, 0xd6, 0x47,
		0x04, 0x1d, 0x11, 0xf4, 0x97, 0x11, 0x74, 0x01, 0x4c, 0x85, 0x60, 0x3a, 0xb5, 0x30, 0xf8, 0x73,
		0x9c, 0xcf, 0x9f, 0x1e, 0x95, 0x96, 0x1e, 0x95, 0x15, 0x8c, 0xb5, 0x9f, 0x86, 0x38, 0x3a, 0xe2,
		0xe8, 0x2b, 0x48, 0x81, 0x55, 0xb9, 0x09, 0x21, 0x74, 0x20, 0xf5, 0x1c, 0xbc, 0x0f, 0x45, 0x08,
		0x5d, 0x4d, 0x51, 0x08, 0xca, 0x40, 0xc4, 0x11, 0x44, 0x19, 0x08, 0xb5, 0x9a, 0x45, 0xb0, 0x17,
		0x65, 0x20, 0xd9, 0xb6, 0x52, 0x5d, 0xb0, 0x37, 0x88, 0xdb, 0x31, 0x29, 0xa8, 0x02, 0x39, 0x82,
		0x56, 0x5e, 0x79, 0xcf, 0x96, 0x64, 0x7b, 0xd3, 0x2b, 0xea, 0x65, 0x0f, 0xb2, 0xcd, 0xc9, 0x6e,
		0x4b, 0x3b, 0x4a, 0x20, 0x09, 0x0e, 0x76, 0x11, 0xec, 0x22, 0xd8, 0x45, 0xb0, 0x8b, 0xb6, 0xcf,
		0x2e, 0xb2, 0x86, 0xcc, 0xe1, 0x16, 0x7f, 0x52, 0x54, 0x22, 0x4b, 0x99, 0x0b, 0xd7, 0x4c, 0x5e,
		0xf5, 0xa3, 0x19, 0x28, 0x90, 0x17, 0xe3, 0x0d, 0x8f, 0x9c, 0xeb, 0xb1, 0x66, 0x6d, 0xf4, 0x9a,
		0xed, 0x8b, 0xfe, 0xb9, 0xd1, 0xfb, 0xad, 0x7d, 0x46, 0x2d, 0x3d, 0xa2, 0xbc, 0xa1, 0x80, 0x3c,
		0xbe, 0xa6, 0x29, 0x89, 0xb1, 0xcd, 0x1c, 0xc0, 0x7c, 0xb5, 0xe0, 0x4e, 0xc4, 0x37, 0x94, 0xef,
		0x7a, 0xcf, 0xe8, 0x5e, 0x44, 0x66, 0xe5, 0x7f, 0xae, 0x8c, 0x6e, 0x13, 0xbb, 0x4e, 0xb1, 0xeb,
		0x6a, 0x2c, 0x79, 0x7a, 0x3d, 0x9d, 0x62, 0x88, 0x6d, 0xb3, 0x3f, 0xb6, 0x13, 0xd5, 0x07, 0xcc,
		0xff, 0xa6, 0x62, 0x02, 0xc5, 0xb2, 0x07, 0x01, 0xf2, 0x04, 0xf2, 0x04, 0xf2, 0x04, 0xf2, 0x04,
		0xf2, 0x24, 0xbc, 0xb1, 0x68, 0xcc, 0x34, 0xf5, 0xdf, 0x64, 0x6a, 0xf8, 0xf8, 0xbb, 0xb2, 0x37,
		0x60, 0x5e, 0x79, 0x89, 0xc6, 0x0a, 0x96, 0xfd, 0x43, 0xf8, 0x5b, 0xc9, 0xb7, 0xba, 0x39, 0x1c,
		0xfa, 0x2c, 0x08, 0xd0, 0xc8, 0x49, 0x14, 0x6d, 0x34, 0x72, 0x5a, 0xd2, 0x7e, 0xe7, 0x25, 0xb4,
		0x43, 0x1a, 0x2a, 0xd2, 0x50, 0x37, 0x6b, 0xe4, 0x34, 0xcf, 0x49, 0xc8, 0x3d, 0xa5, 0xbe, 0xf6,
		0xbd, 0xa4, 0x8d, 0xf4, 0xf4, 0x69, 0x69, 0xb1, 0x4e, 0x59, 0xd0, 0x67, 0x9a, 0x3d, 0x72, 0xe6,
		0x3b, 0x51, 0xab, 0xe9, 0xff, 0x8e, 0x98, 0x6f, 0xa1, 0xb9, 0x13, 0x92, 0x52, 0x57, 0x92, 0x09,
		0x99, 0xd9, 0x0c, 0xd9, 0xaa, 0x85, 0xa6, 0x86, 0x6c, 0xd5, 0xb5, 0x3d, 0x68, 0x0e, 0xf7, 0x5d,
		0x5b, 0x99, 0xdb, 0x2c, 0xa6, 0x0e, 0x5f, 0x19, 0x7c, 0x65, 0xf0, 0x95, 0xc1, 0x57, 0x06, 0x5f,
		0x19, 0xa5, 0xaf, 0x2c, 0xf0, 0xc6, 0x02, 0x58, 0xe7, 0xe1, 0x53, 0x60, 0x68, 0xab, 0x8c, 0xf3,
		0x55, 0x3f, 0xb4, 0xb5, 0x73, 0x6a, 0xf4, 0xcf, 0x8c, 0x96, 0xf1, 0x6b, 0xa3, 0x67, 0x9c, 0x29,
		0x9b, 0xdd, 0xda, 0x39, 0x3d, 0xed, 0x9f, 0xb6, 0x2f, 0x7a, 0xdd, 0x76, 0xab, 0xa5, 0xe6, 0x31,
		0x6a, 0xe3, 0xc7, 0xe8, 0x1a, 0x9d, 0x76, 0xb7, 0xd7, 0x6f, 0x5f, 0xb4, 0x3e, 0x63, 0x8a, 0xab,
		0x2c, 0x5b, 0x64, 0xf6, 0xb8, 0xd5, 0x4c, 0x72, 0x7d, 0x79, 0xd8, 0x6a, 0xe6, 0xb9, 0xce, 0xde,
		0xbf, 0x2d, 0x1e, 0xeb, 0x0a, 0xf0, 0xb5, 0x3a, 0xf8, 0x9a, 0xee, 0xdb, 0x43, 0x0d, 0xbd, 0xa8,
		0x1b, 0xc1, 0x00, 0x78, 0x01, 0x78, 0x01, 0x78, 0x01, 0x78, 0x01, 0x78, 0xa1, 0x47, 0xac, 0xd4,
		0xaf, 0x5d, 0xed, 0x11, 0x5b, 0x45, 0xa3, 0x4e, 0xf4, 0x88, 0x55, 0xc3, 0x7a, 0xb5, 0xfd, 0x7d,
		0x30, 0x1f, 0xba, 0xc4, 0x4a, 0xf9, 0x42, 0x34, 0x6f, 0x75, 0x26, 0xf4, 0x19, 0xf7, 0x9f, 0x74,
		0x6e, 0x3d, 0xa8, 0xc8, 0x81, 0x9f, 0x26, 0x0e, 0x48, 0xb9, 0x0d, 0x90, 0x12, 0x63, 0x47, 0x76,
		0x14, 0x52, 0x62, 0xec, 0x48, 0x51, 0x21, 0x65, 0xf5, 0x40, 0x01, 0xa6, 0x3c, 0x00, 0xa6, 0x04,
		0xa6, 0x84, 0x59, 0x0f, 0x4c, 0x29, 0x92, 0xf5, 0x0e, 0x2a, 0x18, 0x7a, 0x03, 0x4c, 0x59, 0x68,
		0x4c, 0x89, 0xca, 0xa5, 0xad, 0xd1, 0xc6, 0xe8, 0xa5, 0x2f, 0x0e, 0x63, 0xa1, 0x88, 0x09, 0xbd,
		0xf4, 0x37, 0xdd, 0x36, 0xf4, 0xd2, 0x2f, 0xcc, 0x95, 0xd7, 0x50, 0xb6, 0xb4, 0x96, 0x14, 0x40,
		0x2f, 0x7d, 0xd8, 0x9e, 0x05, 0x7a, 0x1f, 0x8a, 0x78, 0x46, 0xc0, 0xf8, 0xc8, 0x53, 0x38, 0x8f,
		0xfe, 0x05, 0xfd, 0x6d, 0xee, 0xd1, 0x7b, 0x88, 0x5e, 0xbc, 0x19, 0xc8, 0x21, 0x32, 0xb4, 0x95,
		0xa6, 0x0c, 0x22, 0x43, 0x88, 0x0c, 0x89, 0xdb, 0x4a, 0x24, 0x1b, 0xca, 0x24, 0x89, 0xc0, 0x10,
		0x05, 0x71, 0x0c, 0xa4, 0x1f, 0x5f, 0x2d, 0x04, 0x86, 0x14, 0xb1, 0x1e, 0x06, 0xd2, 0x23, 0x2c,
		0x54, 0x68, 0x68, 0x8e, 0x81, 0xf4, 0xdb, 0xa5, 0x90, 0x31, 0x90, 0x3e, 0x0b, 0xae, 0xc2, 0x40,
		0xfa, 0x45, 0x50, 0x0b, 0x03, 0xe9, 0x55, 0xeb, 0x02, 0x0c, 0xa4, 0x97, 0x26, 0x28, 0x11, 0x44,
		0xcf, 0x2e, 0x36, 0x11, 0x44, 0x47, 0x10, 0x7d, 0xd3, 0x6d, 0x43, 0x10, 0xbd, 0x30, 0x57, 0x5e,
		0x43, 0x10, 0x7d, 0x2d, 0x29, 0x80, 0x20, 0x3a, 0x90, 0x7a, 0x81, 0xde, 0x87, 0x24, 0x88, 0xee,
		0xdd, 0xea, 0x0f, 0x8c, 0xfb, 0xd6, 0x40, 0x41, 0x00, 0x7d, 0x42, 0x1b, 0x81, 0x5f, 0x21, 0x04,
		0xd1, 0x65, 0x86, 0x5a, 0xe5, 0x22, 0xf0, 0x8b, 0x2e, 0x33, 0xd9, 0xb6, 0x52, 0x6d, 0xe0, 0xf7,
		0xa0, 0xae, 0x20, 0xf2, 0x7b, 0x84, 0xc8, 0xaf, 0xf8, 0x17, 0x45, 0xe4, 0x17, 0xe1, 0xb7, 0x5d,
		0x8e, 0xfc, 0x56, 0x8f, 0xea, 0xf5, 0x83, 0xc3, 0x7a, 0xbd, 0x72, 0xb8, 0x77, 0x58, 0x39, 0xde,
		0xdf, 0xaf, 0x1e, 0x54, 0xd1, 0x77, 0x06, 0xc1, 0x60, 0x40, 0x4c, 0xd5, 0x10, 0x73, 0x14, 0x30,
		0x7d, 0x10, 0x78, 0xb7, 0xf4, 0x00, 0x33, 0xa5, 0x0c, 0x78, 0x09, 0x78, 0x09, 0x78, 0x09, 0x78,
		0x09, 0x78, 0x49, 0x78, 0x63, 0x6f, 0x5c, 0xd7, 0x66, 0xa6, 0xa3, 0x62, 0x68, 0x44, 0x15, 0xb9,
		0x5a, 0x82, 0x68, 0x63, 0xf8, 0xe8, 0xc2, 0x91, 0x91, 0xad, 0xf6, 0x69, 0x34, 0x2f, 0xf2, 0xb4,
		0x7d, 0xde, 0xb9, 0xea, 0x61, 0xf4, 0x28, 0x12, 0x0e, 0x36, 0x1b, 0x3d, 0x3a, 0xcf, 0x47, 0xc8,
		0x31, 0xa0, 0xbe, 0xf2, 0xbd, 0x7b, 0xa6, 0x8d, 0x02, 0xa6, 0xb9, 0xb7, 0x5a, 0x08, 0x16, 0x66,
		0xa7, 0x40, 0xce, 0x8c, 0x89, 0x4c, 0x0e, 0xd0, 0x0a, 0xbe, 0x3a, 0xb6, 0x3b, 0x30, 0x6d, 0x6d,
		0xea, 0x1f, 0x91, 0x82, 0x80, 0x14, 0x84, 0x15, 0xe4, 0x82, 0x20, 0x66, 0x43, 0x86, 0x02, 0xdc,
		0x47, 0x79, 0x70, 0x1f, 0xbd, 0x29, 0xb0, 0x66, 0x2a, 0x35, 0x1c, 0xc7, 0x4d, 0xee, 0x13, 0x85,
		0xf8, 0x2c, 0x05, 0x83, 0x7b, 0xf6, 0x60, 0x86, 0x17, 0x3d, 0x94, 0x04, 0x65, 0xd7, 0x63, 0x4e,
		0x9c, 0x88, 0xa8, 0x3b, 0x8c, 0x7f, 0x77, 0xfd, 0xbf, 0x75, 0x2b, 0xb4, 0xf1, 0x9d, 0x01, 0x2b,
		0xbf, 0xfc, 0x20, 0x98, 0xfb, 0xa4, 0x1c, 0x1a, 0x10, 0x65, 0x3b, 0xf0, 0x82, 0xf2, 0xc0, 0x75,
		0x02, 0xee, 0x9b, 0x96, 0xc3, 0x86, 0x7a, 0xb8, 0x7a, 0x99, 0xc7, 0xf9, 0xde, 0xc9, 0x9f, 0x65,
		0xaf, 0xe6, 0xe9, 0xf1, 0xb7, 0xba, 0xc9, 0xb9, 0x6f, 0xdd, 0x8c, 0x38, 0x0b, 0xa2, 0x4f, 0x3d,
		0xdf, 0x7a, 0x30, 0xfd, 0xa7, 0xf8, 0xb7, 0xe6, 0x3e, 0x08, 0xb8, 0xc9, 0x99, 0x5c, 0x51, 0x23,
		0x8f, 0x81, 0xe4, 0xac, 0x2c, 0x89, 0x25, 0x43, 0x0d, 0x1a, 0xf2, 0x84, 0x13, 0x9a, 0x24, 0x92,
		0x48, 0xb4, 0xac, 0x80, 0x37, 0x38, 0x97, 0xdb, 0xfb, 0xbb, 0x74, 0x6e, 0x39, 0x86, 0xcd, 0x42,
		0x6d, 0x27, 0x39, 0xee, 0x51, 0x3a, 0x37, 0x1f, 0xa7, 0x28, 0xd1, 0x46, 0x7f, 0x4a, 0x6d, 0x7f,
		0xc8, 0x7c, 0x36, 0xfc, 0x18, 0x9e, 0x9a, 0x33, 0xb2, 0x6d, 0x0a, 0x52, 0x57, 0x41, 0xd4, 0xb8,
		0x5d, 0x5e, 0x20, 0x47, 0x16, 0x73, 0x13, 0xc9, 0xd9, 0xa2, 0xc9, 0x57, 0x89, 0xf6, 0x71, 0x29,
		0xe0, 0xfe, 0x68, 0xc0, 0x9d, 0x04, 0xe1, 0x5c, 0xc4, 0xef, 0xd6, 0x4c, 0x5e, 0xad, 0x7f, 0xee,
		0xd9, 0x41, 0xbf, 0x15, 0x78, 0x41, 0xff, 0x74, 0xf2, 0x6a, 0x1d, 0x93, 0xdf, 0xf7, 0xe3, 0x4a,
		0xa1, 0x7e, 0xa7, 0xd6, 0x89, 0xbf, 0x6b, 0xa4, 0xef, 0x13, 0x7e, 0xd6, 0x89, 0x9f, 0x3e, 0xfc,
		0x49, 0x39, 0x6a, 0x41, 0xbc, 0xd0, 0x16, 0xbb, 0xa2, 0xe0, 0x1b, 0x22, 0xfb, 0x66, 0xe4, 0xfc,
		0x46, 0x88, 0xe5, 0x21, 0x71, 0x27, 0x2d, 0xf0, 0x94, 0x4b, 0xe1, 0x3b, 0x07, 0x6c, 0xe0, 0x3a,
		0xc3, 0xf1, 0x5b, 0x07, 0xc2, 0x8f, 0x7a, 0x32, 0xb6, 0x71, 0x01, 0x31, 0xc1, 0x1c, 0x3b, 0xf6,
		0xb0, 0x0b, 0x5e, 0x56, 0x56, 0x28, 0x53, 0x66, 0xc8, 0x92, 0x20, 0x34, 0x29, 0xdb, 0xbb, 0x43,
		0x16, 0x6a, 0x24, 0x73, 0xc8, 0xd0, 0x84, 0x0e, 0xf3, 0xad, 0x55, 0xce, 0x2c, 0x39, 0x46, 0xfe,
		0x02, 0xf9, 0x22, 0x8f, 0x33, 0x97, 0xcb, 0x34, 0x59, 0x2c, 0x2a, 0x47, 0xb4, 0x49, 0x17, 0x71,
		0x14, 0xa2, 0x8e, 0x50, 0xe4, 0x51, 0x89, 0x3e, 0x72, 0x11, 0x48, 0x2e, 0x0a, 0x69, 0x45, 0x62,
		0x31, 0xfd, 0x2e, 0xb2, 0x44, 0x65, 0x4a, 0xc0, 0x1c, 0x3e, 0x58, 0x8e, 0x7e, 0xe7, 0xbb, 0x23,
		0x2f, 0x90, 0xcf, 0xcb, 0xe3, 0xeb, 0x39, 0x43, 0x55, 0x32, 0x77, 0xc9, 0x15, 0x9b, 0x64, 0xe2,
		0x93, 0x52, 0x8c, 0x2a, 0x10, 0xa7, 0xd4, 0x62, 0x55, 0x99, 0x78, 0x55, 0x26, 0x66, 0xd5, 0x88,
		0x5b, 0xb9, 0x62, 0x57, 0xb2, 0xf8, 0x25, 0x13, 0xc3, 0x29, 0xa1, 0xc1, 0x58, 0x8a, 0x10, 0x67,
		0x22, 0x27, 0x74, 0x69, 0xf3, 0x90, 0xab, 0xc8, 0x43, 0x2e, 0xb2, 0xa8, 0x56, 0x25, 0xb2, 0x95,
		0x8b, 0x6e, 0xe5, 0x22, 0x5c, 0xad, 0x28, 0xa7, 0x11, 0xe9, 0x44, 0xa2, 0x9d, 0x5c, 0xc4, 0xa7,
		0x04, 0xd9, 0xe3, 0xc0, 0x1e, 0x0d, 0x59, 0x6c, 0x05, 0xd3, 0x5f, 0x9e, 0xb1, 0xbc, 0x98, 0x7d,
		0x0c, 0x62, 0xfe, 0xa5, 0x2d, 0x48, 0x51, 0xa6, 0x10, 0x54, 0x2a, 0x86, 0x1c, 0x28, 0x08, 0xd5,
		0x8a, 0x22, 0x37, 0x0a, 0x23, 0x37, 0x8a, 0x23, 0x1f, 0x0a, 0x84, 0x56, 0x91, 0x10, 0x2b, 0x94,
		0x74, 0x8b, 0xc9, 0x0b, 0x5c, 0xe6, 0x6e, 0xbc, 0xcd, 0xcc, 0x5b, 0x9f, 0xdd, 0xaa, 0xb8, 0xf1,
		0x63, 0x4b, 0x5f, 0x41, 0xdb, 0xeb, 0x52, 0x27, 0x09, 0x2b, 0xbf, 0xe8, 0xad, 0xf7, 0xe2, 0x3f,
		0xce, 0xf4, 0x3b, 0xdb, 0xbd, 0x31, 0x67, 0x22, 0xc1, 0xe1, 0x3d, 0xd0, 0xa7, 0x9d, 0x54, 0xe5,
		0xa9, 0xbf, 0x4c, 0x7f, 0xaf, 0x47, 0x29, 0x0c, 0x5b, 0xcd, 0xbf, 0x24, 0x79, 0x59, 0x4b, 0xa9,
		0x93, 0xe5, 0x6b, 0x2d, 0x7f, 0x02, 0x85, 0x79, 0x5c, 0x4b, 0x1f, 0x8a, 0x2e, 0xbf, 0xeb, 0xf5,
		0x47, 0x90, 0x9e, 0xf7, 0x95, 0x97, 0x9b, 0x40, 0x9c, 0x8f, 0x3b, 0x47, 0xff, 0xe9, 0xce, 0xe5,
		0xba, 0x3b, 0x88, 0xb2, 0xf0, 0x7d, 0x16, 0x04, 0x6c, 0xa8, 0x87, 0xa2, 0x3d, 0x7c, 0x98, 0x6d,
		0x4d, 0x44, 0x27, 0x3c, 0xe2, 0x92, 0xe5, 0xc4, 0x48, 0xc8, 0xb4, 0x6d, 0xd5, 0xa0, 0x6c, 0xfe,
		0x51, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xcc, 0x00,
		0xcc, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xcc, 0x76, 0x0a, 0x98, 0x39, 0x4f, 0xb9, 0x01,
		0x66, 0xe9, 0xa3, 0x00, 0x98, 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x01,
		0x98, 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x29, 0x03, 0x66, 0x5b, 0x95,
		0x95, 0xa9, 0x88, 0x81, 0x72, 0xd8, 0x98, 0xe0, 0x45, 0xdd, 0xfc, 0x82, 0xcf, 0xca, 0x33, 0xea,
		0x37, 0xc9, 0xe8, 0x47, 0x1f, 0xf8, 0xd5, 0xcf, 0x3c, 0x6a, 0x27, 0x45, 0x3f, 0x65, 0x2c, 0x22,
		0xbb, 0xe5, 0x95, 0x17, 0x35, 0x54, 0x5e, 0x6c, 0x91, 0x7b, 0x00, 0x95, 0x17, 0xa8, 0xbc, 0x10,
		0xb7, 0x95, 0xa8, 0xbc, 0x80, 0x1f, 0x79, 0x1b, 0x15, 0x43, 0x0e, 0x14, 0x84, 0x6a, 0x45, 0x91,
		0x1b, 0x85, 0x91, 0x1b, 0xc5, 0x91, 0x0f, 0x05, 0x42, 0x0f, 0x4b, 0x35, 0xf8, 0x91, 0x35, 0x15,
		0x02, 0x1e, 0x7e, 0xe4, 0xe2, 0xf2, 0x2f, 0xfc, 0xc8, 0xf0, 0x23, 0xff, 0xf4, 0x11, 0xd4, 0xf9,
		0x91, 0x51, 0x00, 0x20, 0x57, 0x71, 0xa0, 0x00, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8,
		0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x20, 0x2f, 0xf8, 0x00,
		0x79, 0xe8, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07,
		0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xf9, 0xc4, 0x07, 0x48, 0x87, 0x16, 0x40, 0xb7, 0xf8, 0xe9,
		0xd0, 0x04, 0xb3, 0x62, 0xe9, 0x58, 0x0e, 0x63, 0x8d, 0x77, 0x8a, 0x79, 0x4b, 0x24, 0xc9, 0xef,
		0x32, 0x06, 0x72, 0x5e, 0x8e, 0x5f, 0x2a, 0xfa, 0xd9, 0x46, 0xf8, 0x4e, 0xbf, 0xc6, 0xaf, 0x54,
		0xd4, 0xa9, 0xcd, 0x12, 0x07, 0x4a, 0x11, 0xcd, 0x7e, 0xa0, 0x9d, 0xf9, 0x80, 0xf1, 0x3b, 0x85,
		0x72, 0xfc, 0x60, 0xfc, 0xce, 0x76, 0x3a, 0x6e, 0x30, 0x7e, 0x67, 0x35, 0x11, 0x1c, 0x78, 0xb7,
		0x3a, 0xb7, 0xd8, 0x8d, 0xcf, 0xcc, 0xbf, 0x99, 0xaf, 0x60, 0x0e, 0xcf, 0x8b, 0x07, 0xa0, 0x2d,
		0x0b, 0xab, 0x60, 0x20, 0x4f, 0x91, 0x85, 0xb7, 0x2a, 0x21, 0xae, 0x5c, 0x98, 0x2b, 0x17, 0xea,
		0x6a, 0x85, 0xfb, 0x76, 0xfa, 0x3a, 0xc8, 0xbd, 0xef, 0x73, 0x42, 0x58, 0x8f, 0xa4, 0xb0, 0xe5,
		0xdc, 0x51, 0xde, 0xdd, 0xb1, 0xbd, 0x5c, 0x27, 0xa4, 0x69, 0x38, 0xa3, 0x07, 0x7a, 0x69, 0xd1,
		0x73, 0x2f, 0xb9, 0x1f, 0xee, 0xae, 0x12, 0xf7, 0x74, 0x25, 0x3c, 0xe9, 0x6e, 0xe3, 0xe2, 0xac,
		0x7d, 0xae, 0x22, 0xbc, 0x52, 0x0d, 0xc9, 0xb7, 0x8c, 0xc6, 0x65, 0xaf, 0xff, 0xa9, 0xd9, 0x6a,
		0xa9, 0x78, 0x84, 0x5a, 0xf8, 0x08, 0xe7, 0xed, 0xf1, 0x13, 0x6c, 0x77, 0x28, 0xcf, 0x6d, 0x46,
		0x42, 0x59, 0x01, 0xa3, 0x4d, 0x1d, 0x32, 0x59, 0xe1, 0xfd, 0xcc, 0x03, 0x4c, 0x8e, 0x98, 0xac,
		0x0e, 0x7f, 0x86, 0x7e, 0x72, 0xc9, 0x4e, 0xb4, 0x0a, 0x72, 0x90, 0xb2, 0x43, 0x21, 0x76, 0x6b,
		0x8e, 0x6c, 0xae, 0x44, 0x78, 0x85, 0xe6, 0xd5, 0x84, 0x7e, 0x68, 0x5d, 0x6d, 0x95, 0xc1, 0xc1,
		0x1e, 0xb9, 0x6f, 0xea, 0x23, 0x27, 0xe0, 0xe6, 0x8d, 0x4d, 0x6c, 0x7a, 0x7c, 0xbf, 0x67, 0x4e,
		0xe9, 0x44, 0xfb, 0x42, 0x7a, 0x43, 0x14, 0x26, 0x36, 0x7c, 0xf8, 0x50, 0xf6, 0x4c, 0x7e, 0x1f,
		0x35, 0x66, 0x1a, 0xc5, 0xc1, 0x00, 0xfd, 0x81, 0xf1, 0x7b, 0x77, 0xa8, 0xfd, 0x5b, 0xfb, 0x25,
		0xb1, 0x9c, 0xf9, 0x49, 0xab, 0x7d, 0xda, 0x68, 0xb5, 0x3e, 0xf7, 0x4f, 0xdb, 0xe7, 0x9d, 0xab,
		0x9e, 0x71, 0xf6, 0xcb, 0x8e, 0xe7, 0x3e, 0x45, 0x6c, 0x82, 0xcc, 0xa7, 0x09, 0xc6, 0xda, 0x98,
		0x8f, 0xe8, 0x53, 0xa5, 0x14, 0x70, 0xee, 0x19, 0x0b, 0x06, 0xbe, 0xe5, 0x29, 0xeb, 0xbf, 0x36,
		0x73, 0xe5, 0x7b, 0xf7, 0x4c, 0x0b, 0x91, 0x95, 0x36, 0x76, 0x6f, 0x59, 0xce, 0x9d, 0x96, 0x9c,
		0x55, 0xc8, 0xd7, 0x1a, 0xbf, 0x67, 0x5a, 0x78, 0x98, 0x9a, 0x15, 0x7c, 0x75, 0x6c, 0x77, 0x60,
		0xda, 0xf6, 0x93, 0x16, 0x1f, 0x2c, 0x1b, 0xaa, 0xe2, 0x7a, 0xc5, 0x97, 0xff, 0xa5, 0x00, 0x18,
		0x4e, 0x9d, 0xe8, 0x7b, 0x75, 0x4f, 0x94, 0x17, 0x59, 0x30, 0x27, 0x0f, 0x32, 0x32, 0x99, 0x92,
		0x97, 0x78, 0xde, 0xf6, 0xb4, 0x4d, 0x32, 0x6a, 0xd7, 0x48, 0xf6, 0x11, 0x40, 0x57, 0x79, 0xd3,
		0xcc, 0xed, 0x68, 0x27, 0xc8, 0x1e, 0x3d, 0xdb, 0x1a, 0x58, 0x3c, 0xca, 0xe7, 0xd0, 0x93, 0xcc,
		0x0a, 0xe2, 0x70, 0xd2, 0x82, 0x67, 0x40, 0x44, 0x49, 0x08, 0x41, 0x44, 0x94, 0xa8, 0x4d, 0x1f,
		0x44, 0x94, 0x10, 0x51, 0xca, 0xb6, 0x95, 0xea, 0x22, 0x4a, 0xf4, 0x75, 0x1c, 0x2a, 0xea, 0x37,
		0x7e, 0x5e, 0xb7, 0x11, 0x6a, 0x9f, 0xa1, 0x3e, 0xa3, 0x91, 0x82, 0x45, 0x1f, 0x26, 0x9d, 0x8b,
		0xcb, 0x74, 0xf5, 0x19, 0x70, 0x30, 0x4a, 0xfa, 0xca, 0xbf, 0x83, 0xd1, 0xf8, 0xab, 0xd3, 0x6a,
		0x9e, 0x36, 0x7b, 0xad, 0xcf, 0xfd, 0x33, 0xe3, 0x53, 0xf3, 0x02, 0x2e, 0x46, 0xb8, 0x18, 0x37,
		0x73, 0x31, 0x2e, 0xe2, 0x24, 0x38, 0x19, 0xa9, 0xaf, 0x7d, 0xef, 0x9e, 0x69, 0xa1, 0xe2, 0xd0,
		0xdc, 0xdb, 0xc8, 0xd5, 0x33, 0xd6, 0x2c, 0xf6, 0x93, 0x36, 0x64, 0xb7, 0x96, 0xc3, 0x86, 0xb1,
		0xf7, 0x67, 0x14, 0xc0, 0xa5, 0x08, 0x97, 0xe2, 0x4a, 0xf7, 0x7f, 0x2d, 0x96, 0x82, 0x03, 0xb1,
		0xd0, 0xd4, 0xe0, 0x40, 0x14, 0x41, 0x17, 0x0e, 0x44, 0x21, 0xdb, 0x78, 0xef, 0xda, 0x43, 0xdd,
		0xf3, 0x2d, 0xd7, 0xb7, 0xf8, 0x13, 0xbd, 0xef, 0x70, 0x96, 0x3c, 0xd5, 0x2c, 0x80, 0x34, 0xbd,
		0x84, 0x0e, 0xa9, 0x94, 0x2a, 0x34, 0x62, 0xfb, 0x1a, 0xae, 0x57, 0x31, 0x5e, 0x06, 0xb5, 0xae,
		0x57, 0x3f, 0xf8, 0xe6, 0xc1, 0xf5, 0xba, 0x03, 0x16, 0xe1, 0x4b, 0xd7, 0x6b, 0x74, 0xf0, 0x70,
		0xbd, 0x6e, 0xb4, 0x95, 0xea, 0x5c, 0xaf, 0x23, 0xcb, 0xe1, 0x47, 0x0a, 0x1c, 0xaf, 0x84, 0xbd,
		0x45, 0x4a, 0x5d, 0xd3, 0xb9, 0x63, 0xbb, 0xe0, 0xdd, 0x3b, 0xb7, 0x14, 0xfa, 0x18, 0xfe, 0x30,
		0xed, 0x11, 0x53, 0xd3, 0xca, 0x26, 0xa2, 0xff, 0xc9, 0x37, 0x07, 0xa1, 0x31, 0x7f, 0x66, 0xdd,
		0x59, 0xaa, 0x7a, 0xea, 0xc4, 0x57, 0x8b, 0xdd, 0x99, 0xdc, 0xfa, 0xc6, 0x94, 0xb4, 0x8e, 0xd1,
		0x14, 0xb9, 0xb9, 0xce, 0xcd, 0x47, 0xf5, 0xac, 0x77, 0x08, 0xd6, 0x53, 0xcd, 0x7a, 0xf0, 0x7c,
		0x14, 0xc0, 0xdc, 0x50, 0x19, 0x69, 0xf3, 0xd9, 0x2d, 0xf3, 0x99, 0x33, 0x60, 0xbb, 0x14, 0x6e,
		0xeb, 0x7e, 0x3a, 0xd5, 0xf6, 0x6a, 0x95, 0x63, 0x4d, 0xd7, 0xba, 0x97, 0x7f, 0x74, 0xf4, 0x9e,
		0x71, 0xa2, 0x19, 0x8f, 0x9c, 0x39, 0x81, 0xe5, 0x3a, 0x81, 0xc6, 0xdd, 0xe8, 0x63, 0xed, 0xd6,
		0xf5, 0xbf, 0x3a, 0xad, 0xcb, 0x8e, 0x16, 0x37, 0x8b, 0xd9, 0xf5, 0x56, 0xa6, 0x13, 0x56, 0x41,
		0xc0, 0x6d, 0x02, 0xb5, 0x36, 0xe5, 0x25, 0xe8, 0x02, 0x51, 0xba, 0xe0, 0x3d, 0xf2, 0x12, 0x64,
		0x09, 0xca, 0x17, 0x49, 0x31, 0x49, 0xae, 0x4b, 0x60, 0xdd, 0x39, 0xa6, 0x6d, 0x39, 0x77, 0xba,
		0xe7, 0xbb, 0xdc, 0x1d, 0xb8, 0xf6, 0x4c, 0x6c, 0xb9, 0xd3, 0xe8, 0xfd, 0xd6, 0xbf, 0x34, 0x7a,
		0x57, 0x9d, 0x7e, 0xc8, 0xfa, 0x48, 0x51, 0x40, 0x8a, 0xc2, 0xcb, 0x14, 0x05, 0x01, 0x4c, 0x85,
		0x6c, 0x05, 0x6a, 0x61, 0xf0, 0xe7, 0xb8, 0x22, 0x25, 0x3d, 0x2a, 0x2d, 0x3d, 0x2a, 0x2b, 0x18,
		0x6b, 0x3f, 0x0d, 0x89, 0x0a, 0x48, 0x54, 0x58, 0x41, 0x0a, 0xac, 0xca, 0x4d, 0xc8, 0x51, 0x00,
		0x52, 0xcf, 0x0d, 0x52, 0x47, 0x8e, 0x42, 0x91, 0x8f, 0xb0, 0xa4, 0xa6, 0xac, 0x09, 0x85, 0x4c,
		0xe2, 0x08, 0xa2, 0x90, 0x89, 0xda, 0x8e, 0x41, 0x34, 0x1d, 0x85, 0x4c, 0xd9, 0xb6, 0x52, 0x5d,
		0x34, 0x3d, 0x88, 0x3b, 0xb6, 0x29, 0xa8, 0x63, 0x3a, 0x82, 0xd9, 0x03, 0xb3, 0x27, 0x2f, 0x66,
		0xcf, 0x92, 0x82, 0x10, 0x7a, 0x4b, 0x68, 0xd9, 0x83, 0x6c, 0x73, 0xba, 0xe6, 0xd2, 0xae, 0x3e,
		0x48, 0xe3, 0x84, 0xe1, 0x09, 0xc3, 0x13, 0x86, 0x27, 0x0c, 0xcf, 0xed, 0x33, 0x3c, 0xad, 0x21,
		0x73, 0xb8, 0xc5, 0x9f, 0x14, 0x55, 0xd1, 0x53, 0x66, 0x73, 0x36, 0x93, 0x57, 0xfd, 0x68, 0x06,
		0x4c, 0xdd, 0x84, 0xe1, 0x28, 0x3c, 0x14, 0x6b, 0xd6, 0x46, 0xaf, 0xd9, 0xbe, 0xe8, 0x9f, 0x1b,
		0xbd, 0xdf, 0xda, 0x67, 0xd4, 0xd2, 0x23, 0xca, 0x7c, 0x0b, 0xc8, 0x23, 0xc4, 0x9a, 0x92, 0x28,
		0xf1, 0xcc, 0x01, 0xcc, 0x17, 0x14, 0xef, 0x44, 0x84, 0x4e, 0xf9, 0xae, 0xf7, 0x8c, 0xee, 0x45,
		0x64, 0x56, 0xfe, 0xe7, 0xca, 0xe8, 0x36, 0xb1, 0xeb, 0x14, 0xbb, 0xae, 0xc6, 0x92, 0xa7, 0xd7,
		0xd3, 0x29, 0x86, 0x80, 0xfd, 0x01, 0xb7, 0x09, 0xdc, 0x26, 0x7a, 0xc0, 0xfc, 0x6f, 0x2a, 0xc6,
		0x2c, 0x2d, 0x7b, 0x10, 0x40, 0x7b, 0x40, 0x7b, 0x40, 0x7b, 0x40, 0x7b, 0x40, 0x7b, 0xc2, 0x1b,
		0x8b, 0xe6, 0x78, 0x53, 0xff, 0x8d, 0x33, 0xb6, 0x82, 0xf4, 0xbb, 0xb2, 0x37, 0x60, 0x5e, 0x79,
		0x89, 0xc6, 0x0a, 0x96, 0xfd, 0x43, 0xf8, 0x5b, 0xc9, 0xb7, 0xba, 0x39, 0x1c, 0x86, 0x46, 0x0b,
		0x9a, 0xe9, 0x89, 0xa2, 0x8d, 0x66, 0x7a, 0x4b, 0x5a, 0xa0, 0xbd, 0xc4, 0xce, 0xc8, 0x54, 0x47,
		0xa6, 0xfa, 0x66, 0xcd, 0xf4, 0xe6, 0x39, 0x09, 0xe9, 0xe9, 0xd4, 0xd7, 0xbe, 0x97, 0xcc, 0x4a,
		0x98, 0x3e, 0x2d, 0x2d, 0xd6, 0x29, 0x0b, 0x86, 0x29, 0xb0, 0x47, 0xce, 0x7c, 0x27, 0x9a, 0xa7,
		0xf0, 0xdf, 0x11, 0xf3, 0x2d, 0x34, 0xd8, 0x43, 0xde, 0xfa, 0x4a, 0x32, 0x21, 0x33, 0x9b, 0x21,
		0xa1, 0xbd, 0xd0, 0xd4, 0x90, 0xd0, 0x2e, 0x82, 0x2e, 0x5c, 0x94, 0x42, 0xb6, 0x31, 0x11, 0x44,
		0x0e, 0xf7, 0x5d, 0x5b, 0x99, 0x5f, 0x32, 0xa6, 0x0e, 0x67, 0xa4, 0x18, 0xdc, 0x0d, 0x67, 0x24,
		0xb1, 0xc1, 0x03, 0x67, 0x24, 0x9c, 0x91, 0xd9, 0xb6, 0x52, 0xa1, 0x33, 0x32, 0xf0, 0xc6, 0x02,
		0x58, 0xe7, 0xe1, 0x53, 0x60, 0xf4, 0xbb, 0x8c, 0xf3, 0x55, 0x3f, 0xfa, 0xbd, 0x73, 0x6a, 0xf4,
		0xcf, 0x8c, 0x96, 0xf1, 0x6b, 0xa3, 0x67, 0x9c, 0x29, 0x9b, 0x00, 0xdf, 0x39, 0x3d, 0xed, 0x9f,
		0xb6, 0x2f, 0x7a, 0xdd, 0x76, 0xab, 0xa5, 0xe6, 0x31, 0x6a, 0xe3, 0xc7, 0xe8, 0x1a, 0x9d, 0x76,
		0xb7, 0xd7, 0x6f, 0x5f, 0xb4, 0x3e, 0x63, 0x16, 0xbc, 0x2c, 0x5b, 0x64, 0xf6, 0xb8, 0xd5, 0xcc,
		0x83, 0x7f, 0x79, 0xd8, 0x6a, 0xa6, 0xc2, 0xcf, 0xde, 0xbf, 0x2d, 0x1e, 0x0e, 0x0f, 0x74, 0x0b,
		0x74, 0x9b, 0x1b, 0x74, 0x3b, 0xdd, 0x9c, 0x8e, 0x1a, 0xdb, 0x52, 0x77, 0x3b, 0x03, 0xb2, 0x05,
		0xb2, 0x05, 0xb2, 0x05, 0xb2, 0x05, 0xb2, 0x45, 0x23, 0x74, 0xa9, 0x5f, 0xbb, 0xda, 0x08, 0xbd,
		0x8a, 0x6e, 0xd4, 0x68, 0x84, 0xae, 0x86, 0xf5, 0x6a, 0xfb, 0xfb, 0x60, 0x3e, 0xb4, 0x42, 0x97,
		0xf2, 0x85, 0x78, 0x34, 0x10, 0x7b, 0x6e, 0x10, 0xbb, 0xcf, 0xb8, 0xff, 0xa4, 0x73, 0xeb, 0x41,
		0x45, 0x99, 0xcc, 0x34, 0x71, 0x60, 0xf6, 0x6d, 0xc0, 0xec, 0x18, 0x5e, 0xb6, 0xa3, 0x98, 0x1d,
		0xc3, 0xcb, 0x8a, 0x8a, 0xd9, 0xab, 0x07, 0x0a, 0x40, 0xfb, 0x01, 0x40, 0x3b, 0x40, 0x3b, 0x70,
		0x13, 0x40, 0xbb, 0x48, 0xd6, 0x3b, 0xa8, 0x60, 0x74, 0x1e, 0x40, 0x3b, 0x40, 0xfb, 0xeb, 0x6c,
		0x82, 0xe2, 0x46, 0x3a, 0x1b, 0x0b, 0x13, 0x79, 0xb2, 0x63, 0x2c, 0xd4, 0x39, 0x62, 0x22, 0xcf,
		0xa6, 0xdb, 0x86, 0x89, 0x3c, 0x85, 0xb9, 0xf2, 0x1a, 0x2a, 0x1b, 0xd7, 0x92, 0x02, 0x98, 0xc8,
		0x03, 0xdb, 0xb3, 0x70, 0xb6, 0x27, 0x02, 0x46, 0x45, 0x3e, 0xc2, 0x52, 0xc0, 0xf8, 0xc8, 0xd3,
		0x3d, 0xdf, 0x72, 0x7d, 0x8b, 0x3f, 0xd1, 0xc7, 0x8c, 0x5e, 0xd0, 0xdf, 0xe6, 0x46, 0xf4, 0x87,
		0x68, 0x38, 0x9f, 0x81, 0x1c, 0x42, 0x6f, 0x5b, 0x69, 0x2b, 0x22, 0xf4, 0x86, 0xd0, 0x9b, 0xb8,
		0xad, 0x44, 0xba, 0xac, 0x4c, 0x92, 0x88, 0xbc, 0x51, 0x10, 0x1f, 0x87, 0x3f, 0x10, 0xfc, 0x40,
		0xe4, 0x4d, 0x11, 0xeb, 0x1d, 0x82, 0xf5, 0x10, 0x77, 0x83, 0xef, 0xe3, 0x55, 0x36, 0x51, 0x19,
		0x77, 0x9b, 0x2e, 0xcd, 0xdc, 0x99, 0xe0, 0x5b, 0xf7, 0xd3, 0xa9, 0xb6, 0x57, 0xab, 0x1c, 0x6b,
		0xfa, 0xd8, 0x1b, 0x7a, 0xa2, 0x19, 0x8f, 0x9c, 0x39, 0x81, 0xe5, 0x3a, 0x81, 0xc6, 0xdd, 0xe8,
		0x63, 0xed, 0xd6, 0xf5, 0xbf, 0x3a, 0xad, 0xcb, 0x8e, 0xd6, 0x1b, 0x39, 0x0e, 0x23, 0x2d, 0x3b,
		0x54, 0x8d, 0xa7, 0x16, 0xe1, 0x2a, 0xea, 0x4a, 0xda, 0xdc, 0x41, 0xac, 0x85, 0x50, 0x6b, 0x53,
		0x5e, 0x82, 0x2e, 0x10, 0xa5, 0x0b, 0xde, 0x23, 0x4b, 0x41, 0x96, 0xa0, 0x44, 0x96, 0x42, 0x76,
		0xb1, 0x89, 0x2c, 0x05, 0x64, 0x29, 0x6c, 0xba, 0x6d, 0xc8, 0x52, 0x28, 0xcc, 0x95, 0xd7, 0x90,
		0xa5, 0xb0, 0x96, 0x14, 0x40, 0x96, 0x02, 0x90, 0x7a, 0xe1, 0x90, 0x3a, 0xb2, 0x14, 0x8a, 0x7c,
		0x84, 0xa5, 0x51, 0xc0, 0xf4, 0x41, 0xe0, 0xdd, 0xd2, 0xe7, 0x27, 0xa4, 0x94, 0x11, 0x55, 0x17,
		0x42, 0x10, 0x4d, 0xa8, 0xa8, 0xed, 0x19, 0x44, 0xd5, 0xd1, 0x84, 0x2a, 0xdb, 0x56, 0xaa, 0x8b,
		0xaa, 0xdf, 0xb8, 0xae, 0xcd, 0x4c, 0x47, 0x45, 0x57, 0xe5, 0x2a, 0x22, 0x15, 0x82, 0x68, 0x63,
		0xfc, 0xd9, 0xc2, 0xa1, 0x55, 0x2f, 0x87, 0x58, 0xc3, 0xdd, 0x06, 0x77, 0xdb, 0x26, 0xc3, 0xcf,
		0xe6, 0xf9, 0x08, 0x1e, 0x36, 0xea, 0x2b, 0xdf, 0xbb, 0x67, 0xda, 0x28, 0x60, 0x9a, 0x7b, 0xab,
		0x85, 0x60, 0x61, 0x76, 0x0e, 0xd5, 0xcc, 0xa0, 0xaa, 0xe4, 0x00, 0xad, 0xe0, 0xab, 0x63, 0xbb,
		0x03, 0xd3, 0xd6, 0xa6, 0xfe, 0x11, 0x0e, 0x38, 0x38, 0xe0, 0x56, 0x90, 0x0b, 0x82, 0x98, 0x0d,
		0xfe, 0xb9, 0x42, 0x53, 0x83, 0x7f, 0x4e, 0x04, 0xdd, 0x5d, 0xf0, 0xcf, 0xbd, 0x29, 0x30, 0x83,
		0x50, 0x33, 0x46, 0x29, 0x18, 0xdc, 0xb3, 0x07, 0xd3, 0x4b, 0x86, 0x6f, 0x97, 0x5d, 0x8f, 0x39,
		0x71, 0x9c, 0x53, 0x77, 0x18, 0xff, 0xee, 0xfa, 0x7f, 0xeb, 0x56, 0x08, 0xa2, 0x9c, 0x01, 0x2b,
		0xbf, 0xfc, 0x20, 0x98, 0xfb, 0xa4, 0x1c, 0x5a, 0x68, 0x65, 0x3b, 0xf0, 0x82, 0xf2, 0xc0, 0x75,
		0x02, 0xee, 0x9b, 0x96, 0xc3, 0x86, 0x7a, 0xb8, 0x7a, 0x99, 0xc7, 0xe9, 0x24, 0xc9, 0x9f, 0x65,
		0xaf, 0xe6, 0xe9, 0xf1, 0xb7, 0xba, 0xc9, 0xb9, 0x6f, 0xdd, 0x8c, 0x38, 0x0b, 0xa2, 0x4f, 0x03,
		0x36, 0x70, 0x9d, 0xa1, 0xe9, 0x3f, 0x45, 0xbf, 0xb7, 0xe8, 0xb3, 0x24, 0x12, 0x2b, 0x57, 0xa2,
		0xcb, 0x63, 0x23, 0x89, 0x2c, 0x54, 0x72, 0x62, 0x03, 0x4d, 0x2e, 0xe3, 0xa4, 0x66, 0x60, 0x44,
		0x4d, 0xf2, 0x85, 0xa0, 0x71, 0x10, 0x93, 0x39, 0x86, 0x29, 0x1d, 0xc2, 0x0a, 0x1c, 0xc1, 0xd4,
		0xb6, 0xb5, 0x32, 0xc7, 0xaf, 0x32, 0x73, 0x59, 0x8d, 0xa3, 0xb7, 0xd8, 0x4a, 0x95, 0xcc, 0xa1,
		0x3b, 0x99, 0x93, 0xc7, 0xcc, 0x5b, 0x9f, 0x51, 0x44, 0xd1, 0x52, 0x07, 0x2e, 0x41, 0x11, 0x43,
		0xa9, 0x93, 0xd8, 0x09, 0x93, 0x6c, 0xa8, 0x48, 0x05, 0x40, 0x11, 0xcf, 0xed, 0x54, 0x84, 0x4d,
		0x1f, 0x18, 0xf7, 0xad, 0x81, 0x7e, 0xe3, 0x8e, 0x9c, 0xa1, 0x9e, 0x5a, 0x44, 0x51, 0xa5, 0x07,
		0x91, 0x86, 0xfe, 0xf9, 0x63, 0xd0, 0xa8, 0xee, 0x2a, 0x54, 0x37, 0x54, 0x37, 0x54, 0x37, 0x54,
		0xf7, 0x26, 0x5b, 0x76, 0x66, 0xd1, 0x34, 0x76, 0xff, 0xa9, 0xa4, 0x54, 0x34, 0xe9, 0x7c, 0xd9,
		0xd3, 0xd0, 0xa6, 0xe6, 0x54, 0x91, 0x9a, 0x53, 0x64, 0xb1, 0xae, 0x4a, 0xbc, 0x2b, 0x17, 0xf3,
		0xca, 0xc5, 0xbd, 0x5a, 0xb1, 0x4f, 0x23, 0xfe, 0x89, 0xd4, 0x00, 0xb9, 0x3a, 0x48, 0x09, 0x0e,
		0xc6, 0x52, 0x89, 0xf8, 0xd6, 0x8c, 0x05, 0x45, 0x42, 0x9f, 0x98, 0x63, 0x69, 0x45, 0xbf, 0x32,
		0x15, 0xa0, 0x52, 0x15, 0xe4, 0x40, 0x25, 0xa8, 0x56, 0x0d, 0xb9, 0x51, 0x11, 0xb9, 0x51, 0x15,
		0xf9, 0x50, 0x19, 0xb4, 0xaa, 0x83, 0x58, 0x85, 0x28, 0x53, 0x25, 0x29, 0xe1, 0xc4, 0xac, 0x1f,
		0x79, 0x1e, 0xf3, 0x63, 0xe3, 0x5e, 0x7d, 0x42, 0xcf, 0x82, 0x67, 0x52, 0xc4, 0xf9, 0x2a, 0x5a,
		0x15, 0xce, 0x3d, 0x44, 0x45, 0x4d, 0xb6, 0xc8, 0xb5, 0xa2, 0x3d, 0xa7, 0x2d, 0xc2, 0xc8, 0x8d,
		0xda, 0xcf, 0x83, 0xfa, 0xcf, 0x91, 0x19, 0x90, 0x17, 0x73, 0x20, 0x77, 0x66, 0x41, 0xee, 0xcc,
		0x83, 0x7c, 0x99, 0x09, 0x6a, 0xcc, 0x05, 0x45, 0x66, 0x43, 0xba, 0xf5, 0xe4, 0x45, 0x22, 0x4b,
		0x25, 0xc6, 0xc8, 0x72, 0xf8, 0x41, 0x5d, 0xa5, 0xc0, 0x48, 0xf4, 0xc7, 0x91, 0xc2, 0x47, 0x50,
		0xd3, 0xab, 0xf1, 0xe5, 0x97, 0x5a, 0x81, 0xa9, 0xa9, 0xee, 0xe5, 0x38, 0xf7, 0x30, 0x8a, 0x7b,
		0x3b, 0xce, 0x3d, 0x4f, 0x5e, 0x1a, 0xee, 0xcd, 0xdf, 0x65, 0xd5, 0x0d, 0xf8, 0x72, 0x22, 0x56,
		0x67, 0x59, 0xd9, 0x7c, 0xcc, 0x1f, 0x2b, 0x57, 0x8f, 0xea, 0xf5, 0x83, 0xc3, 0x7a, 0xbd, 0x72,
		0xb8, 0x77, 0x58, 0x39, 0xde, 0xdf, 0xaf, 0x1e, 0x54, 0xf7, 0xc1, 0xdd, 0x45, 0xe3, 0xee, 0x37,
		0xbb, 0x49, 0xfd, 0x7a, 0xa7, 0x4c, 0x34, 0x45, 0x49, 0xf6, 0x73, 0xcf, 0xa1, 0x3c, 0xe9, 0x5e,
		0x3d, 0x03, 0xaa, 0xa8, 0x98, 0xe3, 0x2a, 0x2d, 0xf4, 0xd4, 0x3a, 0x8f, 0x9e, 0x02, 0x7e, 0x1d,
		0xf8, 0x75, 0xe0, 0xd7, 0x81, 0x5f, 0x07, 0x7e, 0x1d, 0xf8, 0x75, 0x56, 0x96, 0x18, 0xd6, 0x90,
		0x39, 0xdc, 0xe2, 0x4f, 0x34, 0x79, 0xe4, 0xaf, 0x29, 0x11, 0x95, 0x28, 0xa7, 0xd4, 0x4c, 0xb6,
		0xe2, 0xa3, 0x19, 0xe4, 0x40, 0x7e, 0x8d, 0x0f, 0x28, 0x6a, 0xf5, 0x79, 0x6e, 0xf4, 0xba, 0xcd,
		0xd3, 0x7e, 0xef, 0x73, 0xc7, 0x50, 0x2d, 0xc6, 0x22, 0x88, 0x1a, 0x28, 0x77, 0x82, 0x69, 0xb9,
		0x70, 0x84, 0xcd, 0x9c, 0xd4, 0x6f, 0xed, 0x4e, 0xff, 0xb4, 0x7d, 0x75, 0xd1, 0x2b, 0xc1, 0xb1,
		0x92, 0xbb, 0xc3, 0x69, 0xfe, 0xda, 0x49, 0x6e, 0x11, 0x4e, 0x27, 0x7f, 0xa7, 0x13, 0x09, 0xb9,
		0x33, 0xa3, 0xd5, 0xf8, 0x8c, 0xd3, 0xc9, 0xdf, 0xe9, 0xf4, 0x8c, 0xfc, 0x5c, 0x1d, 0xa5, 0x4f,
		0x70, 0x0d, 0xf3, 0x98, 0x06, 0x99, 0xc0, 0xa7, 0x96, 0x17, 0x36, 0xd8, 0xee, 0xf4, 0x3c, 0xc5,
		0x8c, 0x56, 0xcc, 0xc6, 0x18, 0x3f, 0x2d, 0xf7, 0xfc, 0xe9, 0xbf, 0x92, 0xf4, 0xd4, 0x50, 0xc7,
		0xc1, 0x84, 0xdc, 0x5b, 0x0a, 0xb8, 0xc9, 0x99, 0xba, 0x8a, 0x81, 0x98, 0xfc, 0x8e, 0x15, 0x0c,
		0xd4, 0x50, 0x30, 0x40, 0xf9, 0x08, 0x28, 0x18, 0x48, 0x1e, 0x04, 0x05, 0x03, 0xbb, 0x63, 0x91,
		0xa0, 0x60, 0x00, 0x05, 0x03, 0xcb, 0x1e, 0x02, 0x05, 0x03, 0x4a, 0xd4, 0x3e, 0x02, 0xcb, 0x08,
		0x2c, 0xe7, 0xd0, 0x2c, 0xc8, 0x9d, 0x79, 0x90, 0x2f, 0x33, 0x41, 0x9d, 0xcb, 0x44, 0x43, 0x60,
		0x19, 0x05, 0x03, 0xf1, 0x23, 0xa0, 0x60, 0x20, 0xd9, 0x08, 0x14, 0x0c, 0xfc, 0xe4, 0x79, 0x90,
		0x52, 0x9d, 0x73, 0xb1, 0x3a, 0xcb, 0xca, 0x28, 0x18, 0x00, 0x77, 0x6f, 0x91, 0xa9, 0xa2, 0x9e,
		0xfa, 0x35, 0xf2, 0xd3, 0xa5, 0x31, 0x39, 0xf2, 0xd3, 0xe1, 0x46, 0x80, 0x1b, 0x01, 0x6e, 0x04,
		0xb8, 0x11, 0xe0, 0x46, 0x28, 0xa2, 0x1b, 0x01, 0xf9, 0xe9, 0xe9, 0x33, 0x20, 0x3f, 0x7d, 0x65,
		0x44, 0x84, 0xfc, 0xf4, 0x05, 0x27, 0x85, 0xfc, 0xf4, 0x1c, 0x1f, 0x0e, 0xf2, 0xd3, 0xf3, 0x7c,
		0x3a, 0xc8, 0x4f, 0xcf, 0xf3, 0xe9, 0x20, 0x3f, 0x5d, 0xa9, 0x23, 0x45, 0xa1, 0x79, 0x8c, 0xe4,
		0x23, 0xb1, 0x88, 0x0b, 0xe9, 0xd0, 0xa4, 0xe9, 0xd0, 0x71, 0x16, 0x2d, 0xb2, 0xa1, 0x33, 0x33,
		0x8e, 0x12, 0x2f, 0xa7, 0x4a, 0xef, 0xa6, 0x22, 0xaf, 0x26, 0x9a, 0xa7, 0x23, 0x17, 0x1a, 0xb9,
		0xd0, 0x1a, 0x72, 0xa1, 0x49, 0xb6, 0x58, 0x99, 0x17, 0x52, 0xc1, 0x84, 0xc5, 0x65, 0x02, 0x9e,
		0x62, 0xe2, 0xe2, 0xbc, 0xb0, 0x9d, 0x9b, 0xc0, 0x18, 0xa9, 0xb8, 0x6d, 0x35, 0x54, 0xb6, 0x6a,
		0x78, 0xcd, 0xef, 0xec, 0x89, 0xd8, 0x26, 0x29, 0xb5, 0xac, 0x80, 0x37, 0x38, 0x27, 0x1e, 0x9a,
		0x73, 0x6e, 0x39, 0x86, 0xcd, 0x42, 0x11, 0x4c, 0x9c, 0x54, 0x52, 0x3a, 0x37, 0x1f, 0xa7, 0x28,
		0xab, 0x4d, 0xbd, 0x29, 0xb5, 0xfd, 0x21, 0xf3, 0xd9, 0xf0, 0x63, 0x78, 0xea, 0xce, 0xc8, 0xb6,
		0x55, 0x90, 0xbe, 0x0a, 0x98, 0x4f, 0x9a, 0x45, 0x43, 0x75, 0x99, 0x14, 0x01, 0xe2, 0x5d, 0x03,
		0xc2, 0x25, 0xd2, 0xc2, 0x59, 0x7f, 0x34, 0xe0, 0xc9, 0x08, 0xfb, 0xd2, 0x45, 0xbc, 0x57, 0xcd,
		0x64, 0xab, 0xfa, 0xe7, 0x9e, 0x1d, 0xf4, 0x5b, 0x81, 0x17, 0xf4, 0x4f, 0x27, 0x5b, 0x15, 0xaa,
		0xc3, 0x7e, 0x2f, 0xda, 0x96, 0x7e, 0xa7, 0xd6, 0x89, 0xbf, 0x6b, 0xa4, 0xfb, 0x13, 0x7e, 0x76,
		0x39, 0xde, 0x8a, 0xe8, 0x67, 0xc3, 0xff, 0x9d, 0x47, 0xaf, 0xfa, 0x31, 0x7c, 0xd3, 0xd3, 0xc9,
		0x8b, 0xbe, 0xd9, 0x0e, 0x85, 0x56, 0xec, 0x71, 0x9f, 0xc4, 0xb7, 0x7a, 0x0b, 0x6f, 0x33, 0x86,
		0x71, 0x2f, 0x12, 0x2c, 0x14, 0x15, 0xf9, 0xa4, 0x15, 0xf8, 0xe4, 0xc3, 0xb5, 0x6b, 0x18, 0xae,
		0x5d, 0x20, 0x2f, 0x11, 0x86, 0x6b, 0x63, 0xb8, 0xf6, 0xeb, 0x5b, 0x46, 0x36, 0x5c, 0xdb, 0x0c,
		0x02, 0x77, 0x60, 0x99, 0x9c, 0x0d, 0x75, 0x3f, 0xf8, 0x16, 0x2a, 0xb4, 0x20, 0xb0, 0x5c, 0x27,
		0xa0, 0x1f, 0xac, 0xbd, 0xf4, 0x49, 0x68, 0x87, 0x6a, 0x57, 0x30, 0x54, 0xbb, 0xc8, 0xe2, 0x5c,
		0x95, 0x58, 0x57, 0x2e, 0xde, 0x95, 0x8b, 0x79, 0xb5, 0xe2, 0x7e, 0x3b, 0xfd, 0x92, 0xe4, 0xce,
		0x7c, 0x85, 0x4e, 0x7c, 0x15, 0xce, 0xfb, 0x69, 0xa7, 0xfd, 0xb2, 0xff, 0x02, 0xeb, 0xce, 0x31,
		0x6d, 0xcb, 0xb9, 0xd3, 0x3d, 0xdf, 0xe5, 0xee, 0xc0, 0xb5, 0x83, 0x72, 0xa4, 0xa0, 0x38, 0x2b,
		0x8f, 0x75, 0xd4, 0xf8, 0x9b, 0xb2, 0xed, 0x0e, 0x4c, 0x5b, 0xb7, 0x9c, 0x21, 0x7b, 0x2c, 0x6d,
		0x15, 0x27, 0xc2, 0x5d, 0x0d, 0x77, 0x35, 0xb1, 0xbb, 0xfa, 0xcd, 0x16, 0xdc, 0x9d, 0xd2, 0x20,
		0xf0, 0x6e, 0x13, 0x8f, 0x10, 0xbd, 0x49, 0x3d, 0x4d, 0x1c, 0x56, 0x34, 0xac, 0x68, 0x58, 0xd1,
		0xb0, 0xa2, 0x61, 0x45, 0x13, 0xde, 0x58, 0xf2, 0x7e, 0x3e, 0x0a, 0xfa, 0xf7, 0x28, 0xea, 0xd7,
		0xa3, 0x20, 0xc1, 0x49, 0x65, 0x3f, 0x1e, 0xd5, 0xfd, 0x77, 0x72, 0xd3, 0x91, 0x44, 0x7d, 0x07,
		0x12, 0x15, 0x1d, 0x29, 0x54, 0xf6, 0xcf, 0xc9, 0x61, 0xbf, 0x1c, 0x70, 0x23, 0xb1, 0xaa, 0xa6,
		0xa7, 0x76, 0x0d, 0x90, 0xb9, 0x1e, 0xc8, 0xe4, 0x16, 0xbb, 0xf1, 0x99, 0xf9, 0x37, 0xf3, 0x15,
		0x01, 0xcd, 0xa9, 0x07, 0x00, 0xd8, 0x04, 0xd8, 0x04, 0xd8, 0x04, 0xd8, 0x04, 0xd8, 0x54, 0x20,
		0x84, 0xf5, 0x48, 0x0a, 0x5b, 0xce, 0x9d, 0x8a, 0xe0, 0x4d, 0x9d, 0x90, 0xa6, 0xe1, 0x8c, 0x1e,
		0xe8, 0xa5, 0x45, 0xcf, 0xbd, 0xe4, 0x7e, 0xb8, 0xbb, 0x4a, 0x8a, 0x6c, 0x2a, 0xe1, 0x49, 0x77,
		0x1b, 0x17, 0x67, 0xed, 0x73, 0x15, 0x05, 0x36, 0xd5, 0x90, 0x7c, 0xcb, 0x68, 0x5c, 0xf6, 0xfa,
		0x9f, 0x9a, 0xad, 0x96, 0x8a, 0x47, 0xa8, 0x85, 0x8f, 0x70, 0xde, 0x1e, 0x3f, 0xc1, 0x76, 0x17,
		0x73, 0xb9, 0xcd, 0x48, 0x28, 0x2b, 0x60, 0xb4, 0xa9, 0x43, 0x26, 0x9f, 0x1e, 0x14, 0x43, 0xde,
		0xf6, 0x84, 0x7e, 0x4d, 0x01, 0xfd, 0xe4, 0x92, 0x9d, 0x68, 0x15, 0xd4, 0x9a, 0x67, 0xde, 0xcc,
		0xc9, 0x28, 0x10, 0x7a, 0xe1, 0x15, 0x9a, 0x57, 0x13, 0xfa, 0xa1, 0x75, 0xb5, 0x55, 0x06, 0x07,
		0x7b, 0xe4, 0xbe, 0xa9, 0x8f, 0x9c, 0x80, 0x9b, 0x37, 0x36, 0xb1, 0xe9, 0xf1, 0xfd, 0x9e, 0x39,
		0xbb, 0xe0, 0xf9, 0x1d, 0x9b, 0x58, 0x1f, 0x3e, 0xc4, 0x29, 0xfe, 0x03, 0xf7, 0xc1, 0x1b, 0xc5,
		0xd5, 0x10, 0xfa, 0x03, 0xe3, 0xf7, 0xee, 0x50, 0xfb, 0xb7, 0xf6, 0x4b, 0x62, 0x39, 0xf3, 0x93,
		0x56, 0xfb, 0xb4, 0xd1, 0x6a, 0x7d, 0xee, 0x9f, 0xb6, 0xcf, 0x3b, 0x57, 0x3d, 0xe3, 0xec, 0x97,
		0x1d, 0xaf, 0x7e, 0x8f, 0xd8, 0x04, 0xb5, 0xef, 0x13, 0x8c, 0xb5, 0x31, 0x1f, 0xed, 0x84, 0xb3,
		0xfb, 0x8c, 0x05, 0x03, 0xdf, 0xf2, 0x94, 0x8e, 0xb2, 0x9d, 0xf4, 0xc9, 0xba, 0x67, 0x5a, 0x88,
		0xac, 0xb4, 0xb1, 0x7b, 0xcb, 0x72, 0xee, 0xb4, 0xe4, 0xac, 0x42, 0xbe, 0xd6, 0xf8, 0x3d, 0xd3,
		0xc2, 0xc3, 0xd4, 0xac, 0xe0, 0xab, 0x13, 0xe5, 0x7f, 0xd9, 0x4f, 0x5a, 0x7c, 0xb0, 0x4c, 0xd9,
		0xe8, 0xad, 0x1c, 0x34, 0xec, 0x9d, 0x16, 0x00, 0xc3, 0xa9, 0x13, 0x55, 0xd8, 0x0c, 0x34, 0x4f,
		0xdd, 0x7a, 0x67, 0xe4, 0x41, 0x46, 0x26, 0x43, 0x1f, 0xb1, 0x42, 0x53, 0x43, 0xa8, 0x63, 0x1d,
		0x6b, 0xd7, 0xb3, 0xad, 0x81, 0xc5, 0xa3, 0x7a, 0x4b, 0x3d, 0xa9, 0x48, 0x26, 0x8e, 0x76, 0x2c,
		0x78, 0x06, 0x04, 0x3c, 0x84, 0x10, 0x44, 0xc0, 0x83, 0x5a, 0x33, 0x23, 0xe0, 0x81, 0x80, 0x47,
		0xb6, 0xad, 0x44, 0x8d, 0x8a, 0x6c, 0xa1, 0xf8, 0xb3, 0x1a, 0x95, 0x50, 0xfb, 0x0c, 0xf5, 0x19,
		0x8d, 0x14, 0x2c, 0xfa, 0x70, 0xdc, 0x93, 0x2a, 0xd2, 0x56, 0xf0, 0x7f, 0xc1, 0xff, 0x25, 0xd3,
		0xff, 0x65, 0xfc, 0xd5, 0x69, 0x35, 0x4f, 0x9b, 0xbd, 0xd6, 0xe7, 0xfe, 0x99, 0xf1, 0xa9, 0x79,
		0x01, 0x0f, 0x18, 0x3c, 0x60, 0x9b, 0x79, 0xc0, 0x16, 0x71, 0x12, 0x7c, 0x60, 0x2a, 0x7c, 0x60,
		0xa1, 0xe2, 0xd0, 0xdc, 0xdb, 0xc8, 0x13, 0x31, 0xd6, 0x2c, 0xf6, 0x93, 0x36, 0x64, 0xb7, 0x96,
		0xc3, 0x86, 0xb1, 0x73, 0x62, 0x14, 0xc0, 0xe3, 0x05, 0x8f, 0xd7, 0xca, 0x1e, 0xaf, 0x95, 0x59,
		0x0a, 0xfe, 0x2d, 0xf8, 0xb7, 0x76, 0xc4, 0xbf, 0x75, 0xef, 0xda, 0x43, 0xdd, 0xf3, 0x2d, 0xd7,
		0xb7, 0xf8, 0x13, 0xbd, 0x6b, 0x6b, 0x96, 0x3c, 0x91, 0x05, 0x3f, 0x09, 0xce, 0xd3, 0x19, 0xd2,
		0xa5, 0x0a, 0x8d, 0x54, 0xb9, 0x86, 0x67, 0x50, 0x0c, 0x08, 0x56, 0xeb, 0x19, 0xf4, 0x83, 0x6f,
		0x1e, 0x3c, 0x83, 0x3b, 0x60, 0xb0, 0xbc, 0xf4, 0x0c, 0x46, 0x07, 0x0f, 0xcf, 0xe0, 0x46, 0x5b,
		0xa9, 0xb6, 0xee, 0xf6, 0x48, 0x81, 0x5f, 0x70, 0x1f, 0x65, 0xb7, 0xe2, 0x5f, 0x14, 0x65, 0xb7,
		0x28, 0x74, 0xdc, 0xe5, 0xb2, 0xdb, 0x43, 0xb0, 0x1e, 0x6a, 0x6c, 0x8b, 0x0c, 0xcc, 0x77, 0x20,
		0x10, 0xe4, 0xb3, 0x5b, 0xe6, 0x33, 0x67, 0xc0, 0x76, 0x29, 0x1a, 0xd4, 0xfd, 0x74, 0xaa, 0xed,
		0xd5, 0x2a, 0xc7, 0x9a, 0xae, 0x75, 0x2f, 0xff, 0xe8, 0xe8, 0x3d, 0xe3, 0x44, 0x33, 0x1e, 0x39,
		0x73, 0xa2, 0x9e, 0x78, 0x1a, 0x77, 0xa3, 0x8f, 0xb5, 0x5b, 0xd7, 0xff, 0xea, 0xb4, 0x2e, 0x3b,
		0x5a, 0x3c, 0x03, 0x60, 0xd7, 0x47, 0x81, 0x4d, 0x58, 0x05, 0xf1, 0xa0, 0x09, 0xd4, 0xda, 0x94,
		0x97, 0xa0, 0x0b, 0x44, 0xe9, 0x82, 0xf7, 0x08, 0x9b, 0xcb, 0x12, 0x94, 0x2f, 0x72, 0x36, 0x92,
		0x54, 0x8c, 0xf9, 0xc6, 0xa2, 0x33, 0xa1, 0xcf, 0x68, 0x7c, 0xf6, 0xa5, 0xd1, 0xbb, 0xea, 0xf4,
		0x43, 0xd6, 0x47, 0x04, 0x1d, 0x11, 0xf4, 0x97, 0x11, 0x74, 0x01, 0x4c, 0x85, 0x60, 0x3a, 0xb5,
		0x30, 0xf8, 0x73, 0x9c, 0xcf, 0x9f, 0x1e, 0x95, 0x96, 0x1e, 0x95, 0x15, 0x8c, 0xb5, 0x9f, 0x86,
		0x38, 0x3a, 0xe2, 0xe8, 0x2b, 0x48, 0x81, 0x55, 0xb9, 0x09, 0x21, 0x74, 0x20, 0xf5, 0x1c, 0xbc,
		0x0f, 0x45, 0x08, 0x5d, 0x4d, 0x51, 0x08, 0xca, 0x40, 0xc4, 0x11, 0x44, 0x19, 0x08, 0xb5, 0x9a,
		0x45, 0xb0, 0x17, 0x65, 0x20, 0xd9, 0xb6, 0x52, 0x5d, 0xb0, 0x37, 0x88, 0xdb, 0x31, 0x29, 0xa8,
		0x02, 0x39, 0x82, 0x56, 0x5e, 0x79, 0xcf, 0x96, 0x64, 0x7b, 0xd3, 0x2b, 0xea, 0x65, 0x0f, 0xb2,
		0xcd, 0xc9, 0x6e, 0x4b, 0x3b, 0x4a, 0x20, 0x09, 0x0e, 0x76, 0x11, 0xec, 0x22, 0xd8, 0x45, 0xb0,
		0x8b, 0xb6, 0xcf, 0x2e, 0xb2, 0x86, 0xcc, 0xe1, 0x16, 0x7f, 0x52, 0x54, 0x22, 0x4b, 0x99, 0x0b,
		0xd7, 0x4c, 0x5e, 0xf5, 0xa3, 0x19, 0x28, 0x90, 0x17, 0xe3, 0x0d, 0x8f, 0x9c, 0xeb, 0xb1, 0x66,
		0x6d, 0xf4, 0x9a, 0xed, 0x8b, 0xfe, 0xb9, 0xd1, 0xfb, 0xad, 0x7d, 0x46, 0x2d, 0x3d, 0xa2, 0xbc,
		0xa1, 0x80, 0x3c, 0xbe, 0xa6, 0x29, 0x89, 0xb1, 0xcd, 0x1c, 0xc0, 0x7c, 0xb5, 0xe0, 0x4e, 0xc4,
		0x37, 0x94, 0xef, 0x7a, 0xcf, 0xe8, 0x5e, 0x44, 0x66, 0xe5, 0x7f, 0xae, 0x8c, 0x6e, 0x13, 0xbb,
		0x4e, 0xb1, 0xeb, 0x6a, 0x2c, 0x79, 0x7a, 0x3d, 0x9d, 0x62, 0x88, 0x6d, 0xb3, 0x3f, 0xb6, 0x13,
		0xd5, 0x07, 0xcc, 0xff, 0xa6, 0x62, 0x02, 0xc5, 0xb2, 0x07, 0x01, 0xf2, 0x04, 0xf2, 0x04, 0xf2,
		0x04, 0xf2, 0x04, 0xf2, 0x24, 0xbc, 0xb1, 0x68, 0xcc, 0x34, 0xf5, 0xdf, 0x64, 0x6a, 0xf8, 0xf8,
		0xbb, 0xb2, 0x37, 0x60, 0x5e, 0x79, 0x89, 0xc6, 0x0a, 0x96, 0xfd, 0x43, 0xf8, 0x5b, 0xc9, 0xb7,
		0xba, 0x39, 0x1c, 0xfa, 0x2c, 0x08, 0xd0, 0xc8, 0x49, 0x14, 0x6d, 0x34, 0x72, 0x5a, 0xd2, 0x7e,
		0xe7, 0x25, 0xb4, 0x43, 0x1a, 0x2a, 0xd2, 0x50, 0x37, 0x6b, 0xe4, 0x34, 0xcf, 0x49, 0xc8, 0x3d,
		0xa5, 0xbe, 0xf6, 0xbd, 0xa4, 0x8d, 0xf4, 0xf4, 0x69, 0x69, 0xb1, 0x4e, 0x59, 0xd0, 0x67, 0x9a,
		0x3d, 0x72, 0xe6, 0x3b, 0x51, 0xab, 0xe9, 0xff, 0x8e, 0x98, 0x6f, 0xa1, 0xb9, 0x13, 0x92, 0x52,
		0x57, 0x92, 0x09, 0x99, 0xd9, 0x0c, 0xd9, 0xaa, 0x85, 0xa6, 0x86, 0x6c, 0xd5, 0xb5, 0x3d, 0x68,
		0x0e, 0xf7, 0x5d, 0x5b, 0x99, 0xdb, 0x2c, 0xa6, 0x0e, 0x5f, 0x19, 0x7c, 0x65, 0xf0, 0x95, 0xc1,
		0x57, 0x06, 0x5f, 0x19, 0xa5, 0xaf, 0x2c, 0xf0, 0xc6, 0x02, 0x58, 0xe7, 0xe1, 0x53, 0x60, 0x68,
		0xab, 0x8c, 0xf3, 0x55, 0x3f, 0xb4, 0xb5, 0x73, 0x6a, 0xf4, 0xcf, 0x8c, 0x96, 0xf1, 0x6b, 0xa3,
		0x67, 0x9c, 0x29, 0x9b, 0xdd, 0xda, 0x39, 0x3d, 0xed, 0x9f, 0xb6, 0x2f, 0x7a, 0xdd, 0x76, 0xab,
		0xa5, 0xe6, 0x31, 0x6a, 0xe3, 0xc7, 0xe8, 0x1a, 0x9d, 0x76, 0xb7, 0xd7, 0x6f, 0x5f, 0xb4, 0x3e,
		0x63, 0x8a, 0xab, 0x2c, 0x5b, 0x64, 0xf6, 0xb8, 0xd5, 0x4c, 0x72, 0x7d, 0x79, 0xd8, 0x6a, 0xe6,
		0xb9, 0xce, 0xde, 0xbf, 0x2d, 0x1e, 0xeb, 0x0a, 0xf0, 0xb5, 0x3a, 0xf8, 0x9a, 0xee, 0xdb, 0x43,
		0x0d, 0xbd, 0xa8, 0x1b, 0xc1, 0x00, 0x78, 0x01, 0x78, 0x01, 0x78, 0x01, 0x78, 0x01, 0x78, 0xa1,
		0x47, 0xac, 0xd4, 0xaf, 0x5d, 0xed, 0x11, 0x5b, 0x45, 0xa3, 0x4e, 0xf4, 0x88, 0x55, 0xc3, 0x7a,
		0xb5, 0xfd, 0x7d, 0x30, 0x1f, 0xba, 0xc4, 0x4a, 0xf9, 0x42, 0x34, 0x6f, 0x75, 0x26, 0xf4, 0x19,
		0xf7, 0x9f, 0x74, 0x6e, 0x3d, 0xa8, 0xc8, 0x81, 0x9f, 0x26, 0x0e, 0x48, 0xb9, 0x0d, 0x90, 0x12,
		0x63, 0x47, 0x76, 0x14, 0x52, 0x62, 0xec, 0x48, 0x51, 0x21, 0x65, 0xf5, 0x40, 0x01, 0xa6, 0x3c,
		0x00, 0xa6, 0x04, 0xa6, 0x84, 0x59, 0x0f, 0x4c, 0x29, 0x92, 0xf5, 0x0e, 0x2a, 0x18, 0x7a, 0x03,
		0x4c, 0x59, 0x68, 0x4c, 0x89, 0xca, 0xa5, 0xad, 0xd1, 0xc6, 0xe8, 0xa5, 0x2f, 0x0e, 0x63, 0xa1,
		0x88, 0x09, 0xbd, 0xf4, 0x37, 0xdd, 0x36, 0xf4, 0xd2, 0x2f, 0xcc, 0x95, 0xd7, 0x50, 0xb6, 0xb4,
		0x96, 0x14, 0x40, 0x2f, 0x7d, 0xd8, 0x9e, 0x05, 0x7a, 0x1f, 0x8a, 0x78, 0x46, 0xc0, 0xf8, 0xc8,
		0x53, 0x38, 0x8f, 0xfe, 0x05, 0xfd, 0x6d, 0xee, 0xd1, 0x7b, 0x88, 0x5e, 0xbc, 0x19, 0xc8, 0x21,
		0x32, 0xb4, 0x95, 0xa6, 0x0c, 0x22, 0x43, 0x88, 0x0c, 0x89, 0xdb, 0x4a, 0x24, 0x1b, 0xca, 0x24,
		0x89, 0xc0, 0x10, 0x05, 0x71, 0x0c, 0xa4, 0x1f, 0x5f, 0x2d, 0x04, 0x86, 0x14, 0xb1, 0x1e, 0x06,
		0xd2, 0x23, 0x2c, 0x54, 0x68, 0x68, 0x8e, 0x81, 0xf4, 0xdb, 0xa5, 0x90, 0x31, 0x90, 0x3e, 0x0b,
		0xae, 0xc2, 0x40, 0xfa, 0x45, 0x50, 0x0b, 0x03, 0xe9, 0x55, 0xeb, 0x02, 0x0c, 0xa4, 0x97, 0x26,
		0x28, 0x11, 0x44, 0xcf, 0x2e, 0x36, 0x11, 0x44, 0x47, 0x10, 0x7d, 0xd3, 0x6d, 0x43, 0x10, 0xbd,
		0x30, 0x57, 0x5e, 0x43, 0x10, 0x7d, 0x2d, 0x29, 0x80, 0x20, 0x3a, 0x90, 0x7a, 0x81, 0xde, 0x87,
		0x24, 0x88, 0xee, 0xdd, 0xea, 0x0f, 0x8c, 0xfb, 0xd6, 0x40, 0x41, 0x00, 0x7d, 0x42, 0x1b, 0x81,
		0x5f, 0x21, 0x04, 0xd1, 0x65, 0x86, 0x5a, 0xe5, 0x22, 0xf0, 0x8b, 0x2e, 0x33, 0xd9, 0xb6, 0x52,
		0x6d, 0xe0, 0xf7, 0xa0, 0xae, 0x20, 0xf2, 0x7b, 0x84, 0xc8, 0xaf, 0xf8, 0x17, 0x45, 0xe4, 0x17,
		0xe1, 0xb7, 0x5d, 0x8e, 0xfc, 0x56, 0x8f, 0xea, 0xf5, 0x83, 0xc3, 0x7a, 0xbd, 0x72, 0xb8, 0x77,
		0x58, 0x39, 0xde, 0xdf, 0xaf, 0x1e, 0x54, 0xd1, 0x77, 0x06, 0xc1, 0x60, 0x40, 0x4c, 0xd5, 0x10,
		0x73, 0x14, 0x30, 0x7d, 0x10, 0x78, 0xb7, 0xf4, 0x00, 0x33, 0xa5, 0x0c, 0x78, 0x09, 0x78, 0x09,
		0x78, 0x09, 0x78, 0x09, 0x78, 0x49, 0x78, 0x63, 0x6f, 0x5c, 0xd7, 0x66, 0xa6, 0xa3, 0x62, 0x68,
		0x44, 0x15, 0xb9, 0x5a, 0x82, 0x68, 0x63, 0xf8, 0xe8, 0xc2, 0x91, 0x91, 0xad, 0xf6, 0x69, 0x34,
		0x2f, 0xf2, 0xb4, 0x7d, 0xde, 0xb9, 0xea, 0x61, 0xf4, 0x28, 0x12, 0x0e, 0x36, 0x1b, 0x3d, 0x3a,
		0xcf, 0x47, 0xc8, 0x31, 0xa0, 0xbe, 0xf2, 0xbd, 0x7b, 0xa6, 0x8d, 0x02, 0xa6, 0xb9, 0xb7, 0x5a,
		0x08, 0x16, 0x66, 0xa7, 0x40, 0xce, 0x8c, 0x89, 0x4c, 0x0e, 0xd0, 0x0a, 0xbe, 0x3a, 0xb6, 0x3b,
		0x30, 0x6d, 0x6d, 0xea, 0x1f, 0x91, 0x82, 0x80, 0x14, 0x84, 0x15, 0xe4, 0x82, 0x20, 0x66, 0x43,
		0x86, 0x02, 0xdc, 0x47, 0x79, 0x70, 0x1f, 0xbd, 0x29, 0xb0, 0x66, 0x2a, 0x35, 0x1c, 0xc7, 0x4d,
		0xee, 0x13, 0x85, 0xf8, 0x2c, 0x05, 0x83, 0x7b, 0xf6, 0x60, 0x86, 0x17, 0x3d, 0x94, 0x04, 0x65,
		0xd7, 0x63, 0x4e, 0x9c, 0x88, 0xa8, 0x3b, 0x8c, 0x7f, 0x77, 0xfd, 0xbf, 0x75, 0x2b, 0xb4, 0xf1,
		0x9d, 0x01, 0x2b, 0xbf, 0xfc, 0x20, 0x98, 0xfb, 0xa4, 0x1c, 0x1a, 0x10, 0x65, 0x3b, 0xf0, 0x82,
		0xf2, 0xc0, 0x75, 0x02, 0xee, 0x9b, 0x96, 0xc3, 0x86, 0x7a, 0xb8, 0x7a, 0x99, 0xc7, 0xf9, 0xde,
		0xc9, 0x9f, 0x65, 0xaf, 0xe6, 0xe9, 0xf1, 0xb7, 0xba, 0xc9, 0xb9, 0x6f, 0xdd, 0x8c, 0x38, 0x0b,
		0xa2, 0x4f, 0x03, 0x36, 0x70, 0x9d, 0xa1, 0xe9, 0x3f, 0x45, 0xbf, 0xb7, 0xe8, 0xb3, 0x72, 0xc0,
		0x4d, 0xce, 0xe4, 0xca, 0x1b, 0x79, 0x5c, 0x24, 0x67, 0x65, 0x49, 0x7c, 0x19, 0xaa, 0xd1, 0x90,
		0x31, 0x9c, 0xd0, 0x2e, 0x91, 0x44, 0xa2, 0x65, 0x05, 0xbc, 0xc1, 0xb9, 0xdc, 0x06, 0xe0, 0xa5,
		0x73, 0xcb, 0x31, 0x6c, 0x16, 0xaa, 0x3c, 0xc9, 0xc1, 0x8f, 0xd2, 0xb9, 0xf9, 0x38, 0x45, 0x89,
		0x36, 0x04, 0x54, 0x6a, 0xfb, 0x43, 0xe6, 0xb3, 0xe1, 0xc7, 0xf0, 0xd4, 0x9c, 0x91, 0x6d, 0x53,
		0x90, 0xba, 0x0a, 0xa2, 0xee, 0xed, 0xf2, 0xa2, 0x39, 0xb2, 0x98, 0x9b, 0x48, 0xd8, 0x16, 0x52,
		0xc8, 0x4a, 0xb4, 0x94, 0x4b, 0x01, 0xf7, 0x47, 0x03, 0xee, 0x24, 0x58, 0xe7, 0x22, 0x7e, 0xc1,
		0x66, 0xf2, 0x7e, 0xfd, 0x73, 0xcf, 0x0e, 0xfa, 0xad, 0xc0, 0x0b, 0xfa, 0xa7, 0x93, 0xf7, 0xeb,
		0x98, 0xfc, 0xbe, 0x1f, 0xd7, 0x0c, 0xf5, 0x3b, 0xb5, 0x4e, 0xfc, 0x5d, 0x23, 0x7d, 0xa9, 0xf0,
		0xb3, 0xcb, 0xf1, 0xf3, 0x87, 0x3f, 0x2b, 0x47, 0x3b, 0x88, 0x97, 0xdd, 0x62, 0x57, 0x14, 0x7c,
		0x51, 0x64, 0x5f, 0x90, 0xfc, 0x5f, 0x0c, 0xb1, 0x6c, 0x24, 0xee, 0xb0, 0x05, 0x1e, 0x74, 0x29,
		0xb6, 0xa6, 0x44, 0x9f, 0xef, 0x24, 0xa3, 0x36, 0x5a, 0x5e, 0x30, 0x63, 0x8e, 0x9d, 0xea, 0x82,
		0x97, 0x4d, 0xa3, 0x97, 0x82, 0x07, 0xae, 0xca, 0x8c, 0x52, 0x12, 0x44, 0x23, 0x65, 0x3b, 0x74,
		0xc8, 0xa2, 0x8b, 0x64, 0x3e, 0x18, 0x9a, 0x68, 0x61, 0xbe, 0x95, 0xc7, 0x99, 0x25, 0xc7, 0xa4,
		0x2f, 0x0d, 0x59, 0xc0, 0x2d, 0x47, 0xae, 0xdd, 0x96, 0xde, 0xaa, 0x69, 0x62, 0xb2, 0x30, 0x96,
		0xd4, 0x14, 0x0d, 0xe9, 0x29, 0x19, 0x14, 0x29, 0x18, 0x84, 0x29, 0x17, 0x54, 0xde, 0x6b, 0xf2,
		0x94, 0x0a, 0x72, 0x07, 0x34, 0x6d, 0xca, 0x44, 0xb1, 0xfc, 0x2a, 0xd2, 0x53, 0x20, 0xd2, 0x1b,
		0x63, 0x79, 0xba, 0x39, 0x1c, 0xfa, 0x2c, 0x90, 0x7a, 0x69, 0xc6, 0x06, 0xd9, 0xb1, 0x44, 0x1a,
		0xc9, 0x9e, 0xc9, 0x8d, 0xfb, 0x13, 0xf8, 0x5c, 0x27, 0x27, 0xf3, 0xad, 0x4e, 0x70, 0x36, 0x73,
		0x67, 0x44, 0x50, 0xea, 0x50, 0xea, 0x98, 0x9c, 0x33, 0x9f, 0x2e, 0x4d, 0xa3, 0xf4, 0xf6, 0x4b,
		0x45, 0x3f, 0xbe, 0xfe, 0xf1, 0xa5, 0xaa, 0x1f, 0x5f, 0xc7, 0xdf, 0x56, 0xa3, 0x3f, 0xfe, 0xa9,
		0x3d, 0xff, 0xa8, 0x7d, 0xa9, 0xe8, 0xf5, 0xe4, 0xd3, 0xda, 0xfe, 0x97, 0x8a, 0xbe, 0x7f, 0xfd,
		0xee, 0xed, 0xd7, 0xaf, 0x1f, 0xd6, 0xfd, 0x9d, 0x77, 0xff, 0xec, 0x3d, 0xcb, 0x0f, 0x73, 0x5d,
		0x53, 0x1c, 0x4f, 0xfb, 0xb2, 0xf9, 0x17, 0xf9, 0x19, 0xfd, 0xcf, 0x5b, 0xaa, 0x53, 0x7a, 0xf7,
		0x2f, 0x82, 0x73, 0x2a, 0x72, 0xa0, 0x89, 0x56, 0xcc, 0x1d, 0x40, 0xcc, 0x89, 0x12, 0x73, 0xd1,
		0x6d, 0x30, 0xf5, 0xdb, 0x86, 0xfe, 0xe9, 0xfa, 0x9f, 0xea, 0xfb, 0xfa, 0xf3, 0xc9, 0xbb, 0x7f,
		0x0e, 0x9f, 0x5f, 0x7e, 0xf8, 0x63, 0xd1, 0x8f, 0x55, 0xdf, 0x1f, 0x3e, 0x9f, 0x2c, 0xf9, 0x97,
		0x83, 0xe7, 0x93, 0x15, 0xd7, 0xd8, 0x7f, 0x7e, 0x3b, 0xf7, 0xa3, 0xe1, 0xe7, 0xb5, 0x65, 0xbf,
		0x50, 0x5f, 0xf2, 0x0b, 0x7b, 0xcb, 0x7e, 0x61, 0x6f, 0xc9, 0x2f, 0x2c, 0x7d, 0xa4, 0xda, 0x92,
		0x5f, 0xd8, 0x7f, 0xfe, 0x31, 0xf7, 0xf3, 0x6f, 0x17, 0xff, 0xe8, 0xc1, 0xf3, 0xbb, 0x1f, 0xcb,
		0xfe, 0xed, 0xf0, 0xf9, 0xc7, 0xc9, 0xbb, 0x77, 0x10, 0xfc, 0x99, 0x05, 0x3f, 0xd8, 0x96, 0x9e,
		0x6d, 0x8b, 0xaf, 0x08, 0xdf, 0x14, 0xeb, 0xb9, 0x25, 0xc4, 0x88, 0x24, 0x78, 0x74, 0x7d, 0x36,
		0x70, 0xfd, 0xa1, 0xee, 0xbb, 0x23, 0xce, 0x74, 0xe6, 0x98, 0x37, 0x36, 0x1b, 0xca, 0x77, 0xa6,
		0x2d, 0xa4, 0x0a, 0xaf, 0x1a, 0xbc, 0x6a, 0xf0, 0xaa, 0xc1, 0xab, 0x56, 0x28, 0xaf, 0x9a, 0xfc,
		0x42, 0x22, 0xc9, 0x85, 0x43, 0x48, 0x65, 0x10, 0x7b, 0x5a, 0xf9, 0x4a, 0x65, 0x90, 0x90, 0x21,
		0x29, 0x30, 0x79, 0xe1, 0x4d, 0x8e, 0x18, 0x44, 0x66, 0x25, 0x9b, 0x9c, 0x4a, 0x35, 0x89, 0x29,
		0x04, 0x93, 0x36, 0xa4, 0xfc, 0xc9, 0x63, 0xb3, 0x8d, 0x47, 0x6b, 0x52, 0x3a, 0xd8, 0x52, 0xa6,
		0x16, 0x48, 0x2c, 0x08, 0x53, 0x93, 0x58, 0xf0, 0xda, 0x71, 0x15, 0x02, 0x89, 0x50, 0xd4, 0x5d,
		0xa5, 0x0c, 0xde, 0x74, 0x06, 0xf6, 0x68, 0xc8, 0x34, 0x7e, 0x6f, 0x05, 0xda, 0xc0, 0x75, 0x78,
		0x28, 0x58, 0x7d, 0xed, 0xd6, 0xf5, 0xb5, 0xd6, 0x65, 0x27, 0xd0, 0xdc, 0x5b, 0x2d, 0xda, 0xca,
		0x4e, 0xad, 0x23, 0x8b, 0x53, 0x08, 0x0c, 0x61, 0xfa, 0xe2, 0x27, 0x52, 0x2b, 0x78, 0xe6, 0x0e,
		0xac, 0x73, 0xa2, 0xbb, 0x69, 0x48, 0xbd, 0xc9, 0x97, 0xbf, 0x44, 0x94, 0xde, 0x96, 0x64, 0xd0,
		0xe5, 0xcb, 0x90, 0x2b, 0x09, 0xcd, 0xf3, 0x14, 0x9d, 0x75, 0x2d, 0xe6, 0x42, 0x65, 0x67, 0x50,
		0x01, 0x2c, 0x25, 0x38, 0x0b, 0x56, 0x4a, 0xf6, 0xab, 0xe0, 0xac, 0x57, 0xe1, 0xd9, 0xae, 0x32,
		0x5c, 0x56, 0x12, 0x5d, 0x54, 0xb2, 0x34, 0xb1, 0x74, 0x17, 0x94, 0x74, 0x65, 0x2b, 0xd7, 0xc5,
		0x94, 0x2f, 0xf8, 0x27, 0x3a, 0x4b, 0xb5, 0x64, 0x0e, 0x1f, 0x2c, 0x47, 0x0f, 0xef, 0xfd, 0x28,
		0x90, 0x97, 0x55, 0x3f, 0x43, 0x45, 0x74, 0xe2, 0xae, 0xc4, 0x71, 0xce, 0xa5, 0x14, 0xa1, 0x34,
		0xce, 0xce, 0x9b, 0x17, 0xfd, 0x2b, 0xc1, 0x56, 0xd9, 0xb5, 0x9c, 0x42, 0x83, 0x8a, 0xac, 0x42,
		0x83, 0x0a, 0x0a, 0x0d, 0x14, 0x79, 0x03, 0x50, 0x68, 0xa0, 0x0c, 0x91, 0x08, 0xe6, 0x79, 0x69,
		0x5e, 0xff, 0x49, 0x0a, 0xd3, 0x90, 0x39, 0xdc, 0xe2, 0x4f, 0x3e, 0x93, 0xd1, 0xb7, 0x31, 0xb5,
		0xeb, 0x24, 0x14, 0x06, 0x97, 0x9a, 0xc9, 0xa3, 0x7f, 0x34, 0x03, 0x26, 0xdf, 0xbf, 0xd2, 0xbb,
		0xba, 0xb8, 0x30, 0x5a, 0xfd, 0x58, 0xb6, 0x5f, 0xf6, 0x1a, 0xbd, 0xab, 0x4b, 0x59, 0x37, 0x2c,
		0xea, 0xb1, 0x1b, 0x48, 0xcd, 0x61, 0x91, 0x1c, 0xaa, 0x1c, 0x6f, 0x5a, 0xbc, 0x5b, 0x67, 0xed,
		0x3f, 0x2f, 0x24, 0xc6, 0xf1, 0xde, 0x6f, 0xc7, 0x2e, 0x5d, 0x75, 0x8a, 0x16, 0xeb, 0xbc, 0xde,
		0x19, 0xff, 0x90, 0xc8, 0xa2, 0x54, 0x73, 0xc4, 0x5d, 0xfd, 0x8e, 0x39, 0xcc, 0x37, 0xb9, 0x84,
		0xcc, 0x94, 0x89, 0x1d, 0x3d, 0x4b, 0x07, 0xd6, 0x23, 0xac, 0x47, 0x58, 0x8f, 0xb0, 0x1e, 0x85,
		0x72, 0xbc, 0xbc, 0x5c, 0x11, 0x49, 0x39, 0x22, 0xf9, 0x54, 0x09, 0x03, 0x77, 0xe4, 0x70, 0xe6,
		0x4b, 0x74, 0xaa, 0xa4, 0x14, 0x0a, 0xd6, 0xad, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x6a, 0x20, 0xdb,
		0x16, 0x48, 0xeb, 0x56, 0x70, 0xf3, 0xc4, 0x59, 0x20, 0x1f, 0x79, 0xc7, 0x64, 0x90, 0x4b, 0x4d,
		0x2d, 0xd0, 0x08, 0x05, 0x1b, 0x95, 0x80, 0x23, 0x17, 0x74, 0xe4, 0x02, 0x8f, 0x56, 0xf0, 0xc9,
		0xf5, 0x2f, 0x14, 0x3f, 0x97, 0x3a, 0x31, 0xbb, 0xa4, 0x8e, 0xfd, 0x23, 0x18, 0xf3, 0x47, 0x34,
		0xd6, 0x8f, 0xa0, 0x72, 0x97, 0x72, 0x6c, 0x1f, 0xf5, 0x98, 0x3e, 0x65, 0x83, 0xd0, 0xe8, 0x07,
		0x9f, 0x51, 0x0c, 0xd2, 0xa2, 0x1c, 0xb3, 0x97, 0x83, 0xb1, 0x7a, 0xbb, 0xc4, 0x3d, 0xa8, 0xea,
		0x94, 0xfa, 0xbc, 0x32, 0x72, 0xa9, 0x07, 0x23, 0xdf, 0x67, 0x0e, 0x8f, 0xf2, 0x0b, 0x75, 0x6e,
		0x3d, 0x10, 0x44, 0xfc, 0xe6, 0x49, 0x02, 0x83, 0x00, 0x83, 0x00, 0x83, 0x00, 0x83, 0x14, 0x0a,
		0x83, 0x84, 0x92, 0x8b, 0x5b, 0x83, 0xbf, 0x83, 0xc2, 0xa3, 0x90, 0x2b, 0x27, 0x36, 0x4c, 0x4a,
		0x8e, 0xe9, 0xb8, 0x71, 0x3b, 0x63, 0xa9, 0x82, 0x00, 0xa8, 0x07, 0xa8, 0x07, 0xa8, 0x07, 0xa8,
		0x07, 0xa8, 0x07, 0xa8, 0x47, 0x0d, 0xea, 0x71, 0xd8, 0x23, 0xd7, 0x7d, 0xe6, 0x7a, 0xdc, 0x7a,
		0xb0, 0xfe, 0x2f, 0x9e, 0x6b, 0x48, 0x03, 0x7e, 0x96, 0x52, 0x06, 0x06, 0x02, 0x06, 0x02, 0x06,
		0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06,
		0x02, 0x06, 0x92, 0x86, 0x81, 0x5c, 0xc7, 0xb6, 0x1c, 0x46, 0x04, 0x7b, 0xa6, 0x89, 0x01, 0xe9,
		0x00, 0xe9, 0x00, 0xe9, 0x00, 0xe9, 0x00, 0xe9, 0x00, 0xe9, 0x00, 0xe9, 0x00, 0xe9, 0x00, 0xe9,
		0x00, 0xe9, 0x00, 0xe9, 0x00, 0xe9, 0x48, 0x43, 0x3a, 0x9e, 0x39, 0xf8, 0x9b, 0x71, 0x82, 0x8a,
		0x9a, 0x31, 0x21, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x9c, 0x42, 0x21, 0x1c, 0xd4, 0xd4,
		0x00, 0x6f, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x6f, 0x64, 0xc3, 0x1b, 0xfc,
		0x5e, 0x1f, 0xdc, 0x87, 0x7a, 0x88, 0x04, 0x74, 0x4c, 0x51, 0x03, 0xf2, 0x00, 0xf2, 0x00, 0xf2,
		0x00, 0xf2, 0x00, 0xf2, 0x00, 0xf2, 0x00, 0xf2, 0x00, 0xf2, 0x00, 0xf2, 0x00, 0xf7, 0x00, 0x79,
		0xec, 0x0c, 0xf2, 0x88, 0x66, 0xc7, 0xd0, 0x41, 0x8f, 0x59, 0x72, 0xc0, 0x1e, 0xc0, 0x1e, 0xc0,
		0x1e, 0xc0, 0x1e, 0xc0, 0x1e, 0xc0, 0x1e, 0xc0, 0x1e, 0xc0, 0x1e, 0xc0, 0x1e, 0xe0, 0x1e, 0x60,
		0x8f, 0x7c, 0x62, 0x0f, 0x0c, 0xde, 0x57, 0x30, 0xaf, 0x35, 0x82, 0x4b, 0x65, 0x49, 0x2d, 0xe3,
		0x35, 0x01, 0x03, 0x5b, 0x4f, 0xc7, 0x8f, 0xb6, 0x03, 0xb3, 0x01, 0x86, 0x12, 0x87, 0x88, 0xa7,
		0xd6, 0xa5, 0xbc, 0x51, 0xda, 0x18, 0x14, 0x43, 0x0a, 0x7f, 0x31, 0x21, 0x20, 0x9f, 0xf0, 0x76,
		0xd7, 0x07, 0xc5, 0x04, 0xdc, 0xb7, 0x9c, 0x3b, 0x99, 0x73, 0x62, 0x8e, 0x76, 0x40, 0x17, 0xdc,
		0xbb, 0xf6, 0x50, 0xf7, 0x7c, 0xcb, 0xf5, 0x2d, 0xfe, 0x24, 0x4f, 0x1b, 0xcc, 0x92, 0x29, 0xd2,
		0x08, 0xde, 0x0a, 0x46, 0xee, 0x16, 0x50, 0x17, 0xfa, 0xc1, 0x37, 0x0f, 0xba, 0x30, 0x87, 0xba,
		0x30, 0x3a, 0x18, 0xe8, 0x42, 0xc1, 0x1c, 0x3f, 0xb2, 0x1c, 0x7e, 0x24, 0x51, 0x15, 0xca, 0x98,
		0xb5, 0x2b, 0xd7, 0x6d, 0x2b, 0xd1, 0x7f, 0x4e, 0xe1, 0xa6, 0xa5, 0x72, 0xcf, 0x92, 0x3b, 0xd6,
		0xe8, 0x1c, 0x6a, 0x12, 0xdd, 0xb0, 0x24, 0xee, 0xd7, 0x94, 0x05, 0x0e, 0xc1, 0x02, 0xb9, 0x50,
		0x0b, 0xf2, 0x56, 0xbd, 0xce, 0xb5, 0xfa, 0x62, 0x8f, 0xdc, 0x37, 0xf5, 0x91, 0x13, 0x70, 0xf3,
		0xc6, 0x96, 0xa4, 0xc8, 0x7c, 0x76, 0xcb, 0x7c, 0xe6, 0x0c, 0x0a, 0xa9, 0x10, 0xc6, 0x5a, 0xb8,
		0xfb, 0xe9, 0x54, 0xdb, 0xab, 0x55, 0x8e, 0x35, 0x5d, 0xeb, 0x5e, 0xfe, 0xd1, 0xd1, 0x7b, 0xc6,
		0x89, 0x66, 0x3c, 0x72, 0xe6, 0x04, 0x96, 0xeb, 0x04, 0x1a, 0x77, 0xa3, 0x8f, 0xb5, 0x5b, 0xd7,
		0xff, 0xea, 0xb4, 0x2e, 0x3b, 0x5a, 0xec, 0x7a, 0xdc, 0xb6, 0x94, 0x85, 0xc9, 0x51, 0x6e, 0x73,
		0xd6, 0xc2, 0xa6, 0x67, 0x0d, 0x59, 0x27, 0xc1, 0x94, 0xfc, 0x7e, 0xcf, 0x9c, 0x22, 0x0b, 0x8e,
		0x0f, 0x1f, 0xca, 0x81, 0x75, 0xe7, 0x98, 0xb6, 0xe5, 0xdc, 0xe9, 0x9e, 0xef, 0x72, 0x77, 0xe0,
		0xda, 0xda, 0xbf, 0xb5, 0x5f, 0x12, 0xe7, 0x21, 0x3f, 0xe9, 0x34, 0x7a, 0xbf, 0xf5, 0x2f, 0x8d,
		0xde, 0x55, 0xa7, 0x1f, 0xf2, 0xd5, 0x2f, 0x5b, 0x26, 0x33, 0xa2, 0x03, 0xdc, 0x66, 0x71, 0xb1,
		0xc1, 0x09, 0x17, 0xd2, 0x30, 0x3e, 0x93, 0x18, 0x5a, 0x5a, 0x7a, 0x7d, 0xfe, 0xbc, 0x67, 0x8e,
		0xc6, 0xef, 0x99, 0x96, 0x6e, 0xb1, 0x96, 0x6e, 0xb1, 0x15, 0x8c, 0xe5, 0xb3, 0x26, 0x9b, 0xc1,
		0x88, 0xee, 0xcd, 0xcb, 0xbb, 0x23, 0x2f, 0xd0, 0x96, 0x8b, 0x6b, 0x34, 0x77, 0x95, 0x56, 0x3d,
		0xed, 0x82, 0xe6, 0x51, 0xec, 0x28, 0x66, 0xc9, 0x65, 0x70, 0xe4, 0x81, 0x71, 0xdf, 0x1a, 0xc8,
		0x8b, 0x8a, 0x24, 0xeb, 0x23, 0x24, 0x80, 0xf0, 0xf8, 0x4a, 0xa2, 0x1e, 0xe1, 0x71, 0x55, 0x12,
		0xaf, 0x78, 0x21, 0x01, 0xcb, 0xe1, 0x7b, 0x35, 0x89, 0x21, 0x81, 0x3d, 0x84, 0x04, 0x26, 0x0f,
		0x4e, 0x1a, 0x12, 0xa8, 0x55, 0xeb, 0x87, 0xf5, 0xa3, 0xbd, 0x83, 0xfa, 0xd1, 0x16, 0x3b, 0x86,
		0x43, 0xf1, 0x83, 0xd0, 0xc0, 0xca, 0xac, 0x80, 0x18, 0x01, 0xec, 0xed, 0x6d, 0xb1, 0xb7, 0x75,
		0x2e, 0x43, 0x39, 0xbe, 0x30, 0xba, 0x63, 0x22, 0x45, 0x4a, 0x44, 0x4a, 0x3d, 0x45, 0xad, 0xcb,
		0x4e, 0xff, 0xdc, 0xe8, 0x75, 0x9b, 0xa7, 0xfd, 0xe6, 0xc5, 0x6f, 0x46, 0xb7, 0xd9, 0x33, 0xce,
		0x90, 0xa4, 0x04, 0x44, 0x02, 0x44, 0x02, 0x44, 0x92, 0x6b, 0x44, 0x32, 0x64, 0x0e, 0xb7, 0xf8,
		0x93, 0xcf, 0x6e, 0x65, 0x66, 0xed, 0xca, 0xc8, 0x55, 0x6a, 0x26, 0x8f, 0xfe, 0xd1, 0x0c, 0x08,
		0x26, 0xc6, 0x4c, 0x09, 0xf8, 0xde, 0xe7, 0x8e, 0x21, 0xeb, 0x76, 0x45, 0x46, 0x64, 0x20, 0xb5,
		0x70, 0x96, 0x28, 0x00, 0x30, 0xb5, 0x61, 0x8d, 0x8f, 0x97, 0xed, 0xd6, 0x55, 0xcf, 0x28, 0x64,
		0xf8, 0x84, 0x7e, 0xbb, 0x24, 0x19, 0x10, 0x5b, 0xbb, 0x5f, 0x5d, 0xa3, 0xd5, 0xe8, 0x35, 0xff,
		0x30, 0x8a, 0x16, 0xc7, 0xbf, 0xce, 0xbb, 0x36, 0xcb, 0x25, 0x1e, 0x49, 0xaa, 0x09, 0x25, 0x01,
		0x91, 0x68, 0x75, 0x58, 0xda, 0xb0, 0xb4, 0x61, 0x69, 0xc3, 0xd2, 0x16, 0xca, 0xf1, 0x28, 0x8d,
		0x13, 0xe2, 0x70, 0xf1, 0x98, 0xaf, 0x07, 0xdc, 0xe4, 0xa3, 0x40, 0x9e, 0x12, 0x98, 0x26, 0x02,
		0x5d, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0xaf, 0x8b, 0x2a, 0xaf, 0x4b, 0xbb, 0x63, 0x74,
		0xfb, 0x97, 0xbd, 0x46, 0xef, 0xea, 0x12, 0x5e, 0x97, 0xd7, 0x36, 0xec, 0xac, 0xfd, 0xe7, 0x05,
		0xdc, 0x06, 0xcb, 0xf7, 0xe7, 0xaa, 0x03, 0x2f, 0xc1, 0x2e, 0x78, 0x09, 0xbc, 0xe9, 0xe2, 0x25,
		0x49, 0x66, 0xa2, 0x27, 0xab, 0xaa, 0x06, 0x56, 0x22, 0xac, 0x44, 0x58, 0x89, 0x68, 0x20, 0x80,
		0x06, 0x02, 0x64, 0x46, 0x02, 0x6d, 0xb6, 0x60, 0x15, 0x99, 0x61, 0xf9, 0xb3, 0x40, 0x89, 0xb3,
		0x04, 0xf7, 0xf7, 0xc1, 0x04, 0xb9, 0x32, 0xb4, 0x91, 0x1e, 0xb8, 0x99, 0xa1, 0xed, 0x72, 0x16,
		0xf1, 0x99, 0x1e, 0xf0, 0x27, 0x9b, 0xe9, 0x3e, 0xfb, 0xef, 0x88, 0x05, 0x9c, 0x0d, 0x65, 0x1a,
		0xde, 0x4b, 0x69, 0x16, 0x32, 0x79, 0xf0, 0xea, 0xa2, 0xd3, 0x6d, 0xf7, 0x8c, 0x53, 0xe4, 0x0c,
		0x02, 0x97, 0x00, 0x97, 0x00, 0x97, 0xe4, 0x1c, 0x97, 0xc0, 0x7b, 0xbd, 0xe2, 0x46, 0x25, 0x52,
		0xbd, 0xd9, 0xbe, 0x40, 0xce, 0xe0, 0x4a, 0x1b, 0xd6, 0x6a, 0x5e, 0xfc, 0xde, 0xbf, 0x68, 0x9f,
		0x19, 0xfd, 0xa9, 0xad, 0xeb, 0x1a, 0xff, 0xb9, 0x32, 0x2e, 0x91, 0x0e, 0xf7, 0xfa, 0xce, 0xbd,
		0xd8, 0xb4, 0x66, 0x17, 0x7b, 0xf6, 0xb3, 0x3d, 0x93, 0x66, 0x76, 0xc9, 0xc7, 0x2a, 0x08, 0x0a,
		0x6c, 0x72, 0xf0, 0x3e, 0x73, 0x3d, 0x6e, 0x3d, 0x58, 0xff, 0xc7, 0x74, 0x6e, 0x3d, 0x30, 0x5f,
		0x1e, 0x42, 0x99, 0xa3, 0x04, 0x43, 0x1c, 0x86, 0x38, 0x0c, 0x71, 0x18, 0xe2, 0x42, 0x39, 0x7e,
		0x64, 0x39, 0xbc, 0x7a, 0x20, 0xd1, 0x06, 0x3f, 0x40, 0x84, 0x60, 0xf2, 0xe0, 0x68, 0x31, 0x9c,
		0x89, 0x67, 0x11, 0x21, 0x58, 0x93, 0x05, 0x0e, 0xf6, 0xf7, 0xf7, 0x10, 0x23, 0xc8, 0x97, 0xdd,
		0x8d, 0x18, 0xc1, 0x46, 0x76, 0xb7, 0x6b, 0x4b, 0x4c, 0xc3, 0x89, 0x56, 0x87, 0x7d, 0x0d, 0xfb,
		0x1a, 0xf6, 0x35, 0xec, 0x6b, 0xa1, 0x1c, 0x0f, 0x47, 0xf7, 0x8a, 0x1b, 0xd5, 0xba, 0xec, 0xf4,
		0xbb, 0xed, 0x16, 0x3c, 0xdc, 0xaf, 0xee, 0x94, 0xf1, 0x6b, 0xd7, 0xb8, 0xbc, 0x84, 0x57, 0x76,
		0xf9, 0x0e, 0x35, 0x2f, 0xb0, 0x45, 0xaf, 0x6c, 0x51, 0xaf, 0xdb, 0xb8, 0xb8, 0x6c, 0xf6, 0xe0,
		0xb4, 0xde, 0x05, 0xa7, 0x75, 0xc0, 0xf8, 0xc8, 0x23, 0x98, 0x06, 0xf8, 0x82, 0x4e, 0x91, 0x12,
		0x69, 0x0e, 0x91, 0x35, 0x53, 0x40, 0x30, 0x81, 0x71, 0x80, 0x39, 0x05, 0x13, 0x18, 0x07, 0x28,
		0x83, 0xe3, 0x91, 0xcd, 0x4f, 0x67, 0x2d, 0xc1, 0x57, 0x9f, 0x8d, 0x65, 0xe1, 0xab, 0x5f, 0x93,
		0x05, 0xd0, 0xea, 0x37, 0x5f, 0x50, 0x03, 0xe3, 0x00, 0x31, 0x0e, 0x70, 0xa1, 0x16, 0xc6, 0x38,
		0x40, 0x8c, 0x03, 0xc4, 0x38, 0x40, 0x5a, 0x00, 0xac, 0x61, 0x1c, 0xe0, 0x16, 0xc8, 0x0c, 0x8c,
		0x03, 0xc4, 0x38, 0xc0, 0xcd, 0xaf, 0x0f, 0xc6, 0x01, 0x62, 0x1c, 0x20, 0xc6, 0x01, 0x16, 0x1b,
		0xb3, 0xe4, 0x33, 0x3c, 0x72, 0xef, 0xfa, 0x7c, 0x30, 0xe2, 0x3a, 0xb3, 0xad, 0x3b, 0xeb, 0x46,
		0x66, 0xa2, 0xd1, 0x3c, 0xa9, 0x22, 0x05, 0x49, 0x42, 0x31, 0x80, 0x38, 0x89, 0xc8, 0x85, 0x91,
		0x74, 0xb5, 0xaa, 0xfe, 0x43, 0xd2, 0x95, 0x2a, 0x35, 0x50, 0xbc, 0x38, 0xc9, 0x8d, 0xeb, 0xda,
		0xcc, 0x74, 0x64, 0x26, 0x5c, 0x55, 0x77, 0x41, 0x2f, 0xce, 0x41, 0x19, 0x89, 0x8a, 0x71, 0x9e,
		0x16, 0x54, 0x03, 0x54, 0x03, 0x54, 0x03, 0x54, 0x83, 0x50, 0x8e, 0x47, 0x3e, 0xee, 0x8a, 0x1b,
		0x35, 0xe5, 0xa8, 0xea, 0x74, 0xdb, 0xbd, 0xf6, 0x69, 0xbb, 0x85, 0xd4, 0xdc, 0x35, 0x36, 0xad,
		0x75, 0xd6, 0x41, 0xfe, 0xe9, 0x4a, 0x3b, 0xd5, 0xbd, 0xfc, 0x03, 0x5b, 0xb5, 0xda, 0x56, 0x5d,
		0x76, 0x91, 0xb0, 0xbb, 0x13, 0x09, 0xbb, 0xee, 0x2d, 0xd7, 0x3d, 0x9f, 0xb1, 0x07, 0x39, 0x3e,
		0xf6, 0x89, 0xd9, 0xfd, 0x82, 0x50, 0x91, 0xbc, 0x51, 0x51, 0x52, 0x09, 0xdc, 0x51, 0x05, 0xc4,
		0x1c, 0x48, 0xdb, 0xcd, 0x29, 0xe6, 0x40, 0xda, 0x2e, 0xdc, 0x51, 0x05, 0x4d, 0x2d, 0x43, 0x72,
		0x48, 0x81, 0x24, 0xe9, 0x22, 0x89, 0x8a, 0xe4, 0x10, 0x24, 0x87, 0x6c, 0x7e, 0x7d, 0x90, 0x1c,
		0x82, 0xe4, 0x10, 0x24, 0x87, 0x10, 0xaf, 0xba, 0x13, 0xc9, 0x21, 0x72, 0x6e, 0xf4, 0x14, 0x02,
		0x8f, 0xd6, 0x07, 0xf0, 0x04, 0xf0, 0x04, 0xf0, 0x04, 0xf0, 0x14, 0xca, 0xf1, 0x96, 0xa7, 0x9b,
		0xc3, 0xa1, 0xcf, 0x82, 0x40, 0x26, 0xf6, 0x3c, 0x96, 0xb0, 0x76, 0xb2, 0x37, 0x85, 0x45, 0x73,
		0x96, 0xf7, 0xad, 0x2e, 0x71, 0xef, 0xe7, 0xce, 0xe0, 0x48, 0x22, 0x8d, 0x8e, 0xc9, 0x39, 0xf3,
		0x1d, 0xa9, 0xf1, 0xb9, 0x88, 0xd0, 0xdb, 0x2f, 0x15, 0xfd, 0xf8, 0xfa, 0xc7, 0x97, 0xaa, 0x7e,
		0x7c, 0x1d, 0x7f, 0x5b, 0x8d, 0xfe, 0xf8, 0xa7, 0xf6, 0xfc, 0xa3, 0xf6, 0xa5, 0xa2, 0xd7, 0x93,
		0x4f, 0x6b, 0xfb, 0x5f, 0x2a, 0xfa, 0xfe, 0xf5, 0xbb, 0xb7, 0x5f, 0xbf, 0x7e, 0x58, 0xf7, 0x77,
		0xde, 0xfd, 0xb3, 0xf7, 0x2c, 0xcf, 0x2c, 0xbc, 0x96, 0x79, 0x0c, 0xed, 0xcb, 0xe6, 0x5f, 0x64,
		0x67, 0xf1, 0x3f, 0x6f, 0xa9, 0x4e, 0xe3, 0xdd, 0xbf, 0x24, 0x9e, 0xc7, 0x9b, 0x02, 0x81, 0x67,
		0x1a, 0xb1, 0x74, 0x00, 0xb1, 0xb4, 0xae, 0x58, 0x8a, 0xb8, 0xda, 0xd4, 0x6f, 0x1b, 0xfa, 0xa7,
		0xeb, 0x7f, 0xaa, 0xef, 0xeb, 0xcf, 0x27, 0xef, 0xfe, 0x39, 0x7c, 0x7e, 0xf9, 0xe1, 0x8f, 0x45,
		0x3f, 0x56, 0x7d, 0x7f, 0xf8, 0x7c, 0xb2, 0xe4, 0x5f, 0x0e, 0x9e, 0x4f, 0x56, 0x5c, 0x63, 0xff,
		0xf9, 0xed, 0xdc, 0x8f, 0x86, 0x9f, 0xd7, 0x96, 0xfd, 0x42, 0x7d, 0xc9, 0x2f, 0xec, 0x2d, 0xfb,
		0x85, 0xbd, 0x25, 0xbf, 0xb0, 0xf4, 0x91, 0x6a, 0x4b, 0x7e, 0x61, 0xff, 0xf9, 0xc7, 0xdc, 0xcf,
		0xbf, 0x5d, 0xfc, 0xa3, 0x07, 0xcf, 0xef, 0x7e, 0x2c, 0xfb, 0xb7, 0xc3, 0xe7, 0x1f, 0x27, 0xef,
		0xde, 0x41, 0x50, 0xaf, 0x2c, 0xa8, 0xc1, 0x9e, 0xf4, 0xec, 0x59, 0x3c, 0xc5, 0x85, 0x96, 0x06,
		0xc2, 0xef, 0x1f, 0xe2, 0x4e, 0x05, 0x72, 0xa4, 0x2c, 0x72, 0xa8, 0x20, 0xee, 0x84, 0xb8, 0xd3,
		0xe6, 0xd7, 0x07, 0x71, 0x27, 0xc4, 0x9d, 0x10, 0x77, 0x2a, 0xb6, 0xd5, 0x91, 0xcb, 0xb8, 0x13,
		0x97, 0xe1, 0x1d, 0x4e, 0xc5, 0x56, 0xb4, 0x3a, 0x62, 0x4e, 0x28, 0xb0, 0x5a, 0x49, 0xcc, 0xa3,
		0xc0, 0x4a, 0x95, 0xb4, 0x43, 0x81, 0xd5, 0x12, 0xcf, 0x62, 0xf1, 0x0b, 0xac, 0x7a, 0x57, 0x17,
		0x17, 0x46, 0x0b, 0x53, 0x7d, 0x57, 0xda, 0xac, 0x4e, 0xed, 0x1c, 0x35, 0x42, 0x3f, 0xdd, 0x9f,
		0x0e, 0x2a, 0x83, 0x72, 0x5b, 0x19, 0xf4, 0x26, 0x47, 0x4c, 0x5a, 0x6a, 0x38, 0x8e, 0xcb, 0x4d,
		0xe1, 0x28, 0xb9, 0x14, 0x0c, 0xee, 0xd9, 0x83, 0xe9, 0x99, 0xfc, 0x3e, 0x64, 0xc8, 0xb2, 0xeb,
		0x31, 0x67, 0x10, 0x99, 0x6e, 0xba, 0xc3, 0xf8, 0x77, 0xd7, 0xff, 0x5b, 0xb7, 0x9c, 0x80, 0x9b,
		0xce, 0x80, 0x95, 0x5f, 0x7e, 0x10, 0xcc, 0x7d, 0x52, 0x0e, 0x95, 0x73, 0xd9, 0x0e, 0xbc, 0xa0,
		0x3c, 0x70, 0x9d, 0x80, 0xfb, 0xa6, 0xe5, 0xb0, 0xa1, 0x1e, 0xae, 0x5e, 0xe6, 0x71, 0x8f, 0xc5,
		0xe4, 0xcf, 0x72, 0xc0, 0x4d, 0x2e, 0xa8, 0x0c, 0x28, 0xfb, 0x41, 0x65, 0x5b, 0x21, 0xe3, 0x11,
		0x87, 0x26, 0x5b, 0xb8, 0xf7, 0x4e, 0x28, 0x14, 0x32, 0x2e, 0xd5, 0xb2, 0x02, 0xde, 0xe0, 0x5c,
		0xcc, 0x7c, 0xe3, 0xd2, 0xb9, 0xe5, 0x18, 0x36, 0x0b, 0x6d, 0x2f, 0x41, 0x8d, 0x87, 0x4b, 0xe7,
		0xe6, 0xe3, 0xd4, 0x8a, 0xd5, 0xa3, 0x7a, 0xfd, 0xe0, 0xb0, 0x5e, 0xaf, 0x1c, 0xee, 0x1d, 0x56,
		0x8e, 0xf7, 0xf7, 0xab, 0x07, 0x22, 0x0c, 0x84, 0x52, 0xdb, 0x1f, 0x32, 0x9f, 0x0d, 0x3f, 0x86,
		0xbb, 0xea, 0x8c, 0x6c, 0x5b, 0xe4, 0x92, 0x57, 0x41, 0x34, 0x3c, 0x3a, 0x7b, 0x67, 0xe4, 0xac,
		0x4c, 0x23, 0x58, 0x1e, 0xa8, 0x92, 0x03, 0x02, 0x6c, 0xa8, 0x52, 0xc0, 0xfd, 0xd1, 0x80, 0x3b,
		0x89, 0x4e, 0xbd, 0x88, 0x9f, 0xa5, 0x99, 0x3c, 0x4a, 0xff, 0xdc, 0xb3, 0x83, 0x7e, 0x2b, 0xf0,
		0x82, 0xfe, 0xe9, 0xe4, 0x51, 0x3a, 0x26, 0xbf, 0xef, 0xc7, 0x5d, 0x5f, 0xb3, 0xc9, 0xa0, 0xcd,
		0x25, 0xc7, 0x66, 0xbf, 0xb9, 0x21, 0xdb, 0x88, 0x62, 0x17, 0x72, 0x36, 0xd9, 0xec, 0x74, 0xd6,
		0xdf, 0xdb, 0xf5, 0x7e, 0x63, 0xcd, 0x53, 0xc8, 0xba, 0xfb, 0x64, 0xbb, 0xbe, 0xc1, 0x6d, 0xdc,
		0xf4, 0xf6, 0xad, 0x77, 0xb0, 0xab, 0x1f, 0xcf, 0x1a, 0x47, 0x53, 0x0a, 0x6d, 0x10, 0x6b, 0xa0,
		0x87, 0x5b, 0xb1, 0xf6, 0xb9, 0x4c, 0x32, 0xc1, 0xa7, 0x16, 0x59, 0x93, 0x2d, 0xc6, 0xa8, 0x78,
		0xcd, 0x5f, 0xdb, 0xd4, 0xb5, 0x96, 0xc5, 0x75, 0x26, 0xc0, 0x35, 0x96, 0xd5, 0xf5, 0x25, 0xcc,
		0xb5, 0x25, 0xcc, 0x75, 0x25, 0xc6, 0x35, 0x25, 0x57, 0xf4, 0x9c, 0x59, 0xfe, 0x86, 0x32, 0x27,
		0xe5, 0xeb, 0xcd, 0x4f, 0x6c, 0xfe, 0x8e, 0x6c, 0x7a, 0x64, 0x9b, 0x5d, 0x95, 0xcc, 0x57, 0x46,
		0xc4, 0xd5, 0x99, 0xdb, 0x8d, 0x8c, 0xae, 0x65, 0x51, 0x2e, 0x64, 0xe1, 0xae, 0x62, 0xe1, 0x2e,
		0xe1, 0x99, 0xfb, 0x95, 0xcd, 0xef, 0x4b, 0x6b, 0x6d, 0x6d, 0x7a, 0xe9, 0xd2, 0x05, 0x06, 0x63,
		0x7e, 0xcd, 0x78, 0xc4, 0x63, 0x96, 0x4b, 0xd6, 0xcb, 0x0a, 0x54, 0x33, 0x5d, 0x42, 0x61, 0x97,
		0x51, 0xe4, 0xa5, 0x14, 0x7d, 0x39, 0x45, 0x5f, 0x52, 0x69, 0x97, 0x55, 0xda, 0xa5, 0x95, 0x70,
		0x79, 0xf3, 0xe1, 0xa6, 0xc9, 0x7a, 0xa9, 0xd3, 0x85, 0x12, 0x5b, 0x59, 0x10, 0x63, 0x8c, 0x19,
		0x57, 0x80, 0xfb, 0xe8, 0xe5, 0x45, 0x17, 0x14, 0xba, 0x15, 0x1e, 0x0b, 0x96, 0x11, 0x03, 0x16,
		0x2d, 0x00, 0x64, 0x09, 0x02, 0xe9, 0x02, 0x41, 0xba, 0x60, 0x90, 0x28, 0x20, 0xc4, 0x79, 0x84,
		0x35, 0x81, 0xae, 0x7b, 0xe1, 0xd1, 0xdb, 0x29, 0xbb, 0xda, 0xb7, 0x9c, 0x3b, 0x91, 0xdc, 0x9a,
		0x96, 0x80, 0xec, 0x44, 0xf0, 0xe3, 0xe9, 0xce, 0xe5, 0xba, 0x3b, 0xd0, 0x07, 0xee, 0x83, 0xe7,
		0xb3, 0x20, 0x60, 0x43, 0xdd, 0x66, 0xe6, 0x6d, 0x48, 0xe4, 0x19, 0xa1, 0x89, 0x02, 0x79, 0x99,
		0xa7, 0x9c, 0x30, 0x53, 0xdf, 0x97, 0x13, 0xb3, 0x57, 0x95, 0x87, 0x37, 0x03, 0xc6, 0x63, 0x77,
		0x51, 0xb1, 0x97, 0x30, 0x00, 0x90, 0xac, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x1a, 0x00,
		0x08, 0x42, 0xf7, 0x72, 0x50, 0xbe, 0xe0, 0xcb, 0x0e, 0x10, 0x00, 0x10, 0x00, 0x10, 0x20, 0x4e,
		0x78, 0xa4, 0x0b, 0x5a, 0xce, 0xc0, 0x7d, 0xb0, 0x9c, 0x3b, 0xdd, 0x36, 0x6f, 0x98, 0xc4, 0x11,
		0x1f, 0x2f, 0xe8, 0x20, 0xfb, 0x5c, 0x7a, 0xf6, 0x39, 0x52, 0xcf, 0x15, 0x0b, 0x25, 0x02, 0xe1,
		0x24, 0x56, 0x48, 0x09, 0x16, 0x56, 0xf2, 0x3c, 0x17, 0x0b, 0x79, 0x5d, 0x8a, 0x64, 0xd1, 0xd0,
		0xeb, 0xe8, 0xe7, 0x3b, 0x3f, 0xb2, 0x1c, 0xbe, 0x57, 0x23, 0x68, 0x27, 0x72, 0x28, 0x91, 0x44,
		0xd7, 0x74, 0xee, 0x98, 0xf4, 0x6e, 0x0d, 0x04, 0xd5, 0x99, 0xe7, 0x96, 0x43, 0x52, 0x06, 0xaa,
		0xa5, 0x05, 0x06, 0xe1, 0xbd, 0x38, 0x78, 0x4f, 0x43, 0xf0, 0x93, 0x6f, 0x0e, 0xb8, 0xe5, 0x3a,
		0x67, 0xd6, 0x9d, 0x25, 0x2a, 0x97, 0x74, 0x35, 0x66, 0x67, 0x77, 0x26, 0xb7, 0xbe, 0x31, 0x21,
		0x29, 0x9b, 0x0a, 0x24, 0xf0, 0x62, 0x5e, 0x31, 0x1f, 0x15, 0xf0, 0x4a, 0xa5, 0x7e, 0xb4, 0x7f,
		0xb8, 0x0f, 0x86, 0xc9, 0xb5, 0x01, 0x40, 0xb7, 0x3a, 0x7a, 0x74, 0xcd, 0xaa, 0x53, 0xe6, 0x8c,
		0x1e, 0x98, 0x6f, 0x4a, 0xae, 0xa9, 0x4f, 0x2d, 0x9a, 0xba, 0x44, 0x1a, 0x86, 0x33, 0x7a, 0x90,
		0xdf, 0x8a, 0xa1, 0xe7, 0x5e, 0xc6, 0xd1, 0x2b, 0x92, 0xee, 0x07, 0x95, 0xf0, 0x8c, 0x9a, 0x9d,
		0x3f, 0xea, 0x7d, 0xe3, 0xaf, 0x4e, 0xab, 0x79, 0xda, 0xec, 0xf5, 0x2f, 0xae, 0x5a, 0x2d, 0x8a,
		0xf6, 0x07, 0xd5, 0x90, 0x74, 0xb7, 0x7d, 0xd5, 0x33, 0xba, 0xfd, 0x46, 0xcb, 0xe8, 0xf6, 0x28,
		0x88, 0xd6, 0x92, 0xf7, 0x3d, 0xa0, 0x7f, 0xdf, 0xbd, 0x88, 0xf4, 0x39, 0x31, 0xd5, 0xc3, 0x90,
		0xaa, 0x71, 0xd1, 0xeb, 0xb6, 0x3b, 0x9f, 0xfb, 0xad, 0xc6, 0x47, 0xa3, 0xd5, 0x6f, 0x5e, 0x9c,
		0x35, 0x4f, 0x1b, 0xbd, 0x76, 0x97, 0x82, 0xfe, 0x51, 0x94, 0xfd, 0xdc, 0x8e, 0x49, 0x4b, 0xee,
		0x24, 0xf1, 0x5e, 0xf6, 0xcd, 0x6c, 0x46, 0x90, 0x97, 0xe0, 0x5a, 0x2e, 0x3b, 0x30, 0xa9, 0xa8,
		0x21, 0xa5, 0x3e, 0xcb, 0xa4, 0x27, 0xda, 0x1e, 0x05, 0xcd, 0x79, 0x19, 0x44, 0x62, 0xdd, 0x2c,
		0x12, 0x06, 0x27, 0x5a, 0x8d, 0x80, 0x70, 0x7a, 0x29, 0x4e, 0xb4, 0x23, 0x02, 0x72, 0x33, 0x92,
		0xf6, 0x44, 0xab, 0xa2, 0xa9, 0x8b, 0xd4, 0x55, 0xf3, 0xdd, 0x4a, 0x4e, 0x52, 0xe2, 0x48, 0xba,
		0xbe, 0xf4, 0x04, 0x12, 0xf1, 0x07, 0x27, 0xb2, 0xdb, 0x8d, 0xe5, 0x70, 0xe6, 0xdf, 0x9a, 0x32,
		0x07, 0x2d, 0x4c, 0x48, 0x20, 0xf2, 0x40, 0xd1, 0xf7, 0xc6, 0xba, 0x45, 0xe8, 0xe1, 0x27, 0x84,
		0x54, 0x75, 0xbd, 0xb1, 0x6e, 0x11, 0x7b, 0x10, 0xcd, 0xed, 0xa1, 0xa4, 0x96, 0xdc, 0xef, 0x46,
		0x82, 0x15, 0x5b, 0xea, 0xa4, 0xd9, 0x73, 0x21, 0x5b, 0x9c, 0xa4, 0x02, 0x32, 0x78, 0xf9, 0x41,
		0xf2, 0xf7, 0x28, 0x31, 0x1c, 0x5a, 0x7a, 0x77, 0xb5, 0xf4, 0x03, 0xe3, 0xbe, 0x35, 0x90, 0xa7,
		0xa2, 0x93, 0xf5, 0xa1, 0x9f, 0x91, 0x19, 0xb0, 0x93, 0xea, 0x19, 0x99, 0x01, 0x32, 0x78, 0x7d,
		0x64, 0x39, 0xfc, 0x48, 0xa2, 0x6e, 0x96, 0xd1, 0x8a, 0x4e, 0x6e, 0x38, 0x5a, 0x62, 0x14, 0x83,
		0x22, 0xfc, 0x9c, 0x86, 0x12, 0x25, 0x7b, 0xbb, 0xc8, 0x83, 0x87, 0x74, 0x41, 0x43, 0x99, 0x7d,
		0xb8, 0x29, 0xa2, 0xca, 0x29, 0x0b, 0xd4, 0xf6, 0xf7, 0xc1, 0x04, 0xb9, 0x50, 0x0c, 0xf2, 0x56,
		0x85, 0x67, 0x70, 0x87, 0x31, 0x87, 0xc3, 0x1e, 0xb9, 0x7e, 0xef, 0x7a, 0xf2, 0x50, 0x47, 0x4a,
		0x01, 0xb8, 0x03, 0xb8, 0x03, 0xb8, 0x03, 0xb8, 0x43, 0x10, 0xaf, 0x63, 0xfa, 0x2a, 0x35, 0xf8,
		0xc0, 0xf4, 0xd5, 0x0c, 0x84, 0x30, 0x7d, 0xf5, 0xa7, 0xc7, 0x80, 0xe9, 0xab, 0x8a, 0xed, 0x76,
		0xc9, 0xd0, 0x15, 0xd3, 0x57, 0x73, 0x2a, 0x96, 0x30, 0xde, 0x12, 0xd3, 0x57, 0xf3, 0x2e, 0xa8,
		0xc1, 0x9e, 0x98, 0xbe, 0x0a, 0xc7, 0x18, 0x1c, 0x63, 0x94, 0x8e, 0x31, 0x6f, 0x14, 0xdc, 0xcb,
		0x2e, 0xd9, 0x9f, 0xa2, 0x01, 0xe7, 0x18, 0x9c, 0x63, 0x70, 0x8e, 0xc1, 0x39, 0x26, 0x90, 0xd7,
		0x51, 0xae, 0xaf, 0x02, 0x85, 0xa2, 0x5c, 0x3f, 0x07, 0xa7, 0x91, 0xbe, 0x08, 0xca, 0xf5, 0xe5,
		0x30, 0x3b, 0xca, 0xf5, 0x45, 0xf1, 0x0a, 0xca, 0xf5, 0xb5, 0x62, 0xa0, 0x41, 0x9a, 0xd5, 0xe1,
		0xd4, 0x9d, 0x55, 0xa7, 0x28, 0xd7, 0x5f, 0xd7, 0x7e, 0x42, 0xb9, 0xbe, 0x44, 0xa2, 0x28, 0xd7,
		0x47, 0xb9, 0xfe, 0xe6, 0x37, 0x13, 0xe5, 0xfa, 0xf2, 0x68, 0xa2, 0x5c, 0x5f, 0x2e, 0x39, 0x94,
		0xeb, 0x93, 0xae, 0x8a, 0xd8, 0xc3, 0x0e, 0xc7, 0x1e, 0x82, 0xd1, 0x0d, 0x41, 0xc5, 0xfe, 0x0c,
		0x15, 0xc4, 0x1f, 0x50, 0xb4, 0xbf, 0xf4, 0x30, 0x51, 0xb4, 0xaf, 0x5a, 0x25, 0xa0, 0x68, 0x7f,
		0x01, 0x58, 0x57, 0x5a, 0xb4, 0xff, 0x65, 0x52, 0xb4, 0xff, 0xef, 0xc1, 0xc8, 0xf7, 0x99, 0xc3,
		0xdf, 0xbe, 0x2b, 0x7f, 0xf8, 0x50, 0x4e, 0x7f, 0xe2, 0x3a, 0xf9, 0x95, 0x69, 0x39, 0x1b, 0x2c,
		0xf8, 0x2c, 0x5d, 0x79, 0xc8, 0x1e, 0x51, 0xff, 0x5f, 0x34, 0xb5, 0xbf, 0x13, 0xf3, 0xb7, 0x88,
		0xc7, 0x41, 0xc5, 0x43, 0x90, 0x84, 0x4c, 0x85, 0x12, 0x77, 0x4e, 0x02, 0xce, 0x28, 0x9a, 0xaf,
		0x2c, 0x61, 0xa4, 0x64, 0xbc, 0x6c, 0xce, 0xc7, 0xc9, 0xd4, 0x30, 0x4e, 0xa6, 0x30, 0x16, 0x19,
		0xc6, 0xc9, 0x60, 0x9c, 0x0c, 0xc6, 0xc9, 0x10, 0xe3, 0x43, 0xe4, 0xa7, 0xe5, 0x11, 0x1e, 0x22,
		0x3f, 0x4d, 0x16, 0xaf, 0x23, 0x3f, 0x6d, 0xee, 0x0b, 0xf9, 0x69, 0xab, 0x91, 0x40, 0x7e, 0xda,
		0x26, 0xc4, 0x90, 0x9f, 0x26, 0xed, 0x0b, 0xf9, 0x69, 0x60, 0x18, 0x85, 0x06, 0x00, 0xdd, 0xea,
		0xc8, 0x4f, 0x9b, 0x55, 0xa7, 0xc8, 0x4f, 0x5b, 0xd7, 0x7e, 0x42, 0x7e, 0x9a, 0x44, 0xa2, 0xc8,
		0x4f, 0x43, 0x7e, 0xda, 0xe6, 0x37, 0x13, 0xf9, 0x69, 0xf2, 0x68, 0x22, 0x3f, 0x4d, 0x2e, 0x39,
		0xe4, 0xa7, 0x91, 0xae, 0x7a, 0x8d, 0xa9, 0x29, 0x22, 0xcc, 0x47, 0x24, 0x60, 0x25, 0x0b, 0x23,
		0x01, 0xeb, 0x67, 0x87, 0x89, 0x04, 0x2c, 0xd5, 0x32, 0x0f, 0x09, 0x58, 0x0b, 0xd0, 0xe8, 0x96,
		0x4e, 0x4d, 0xc1, 0x70, 0x10, 0xa8, 0x21, 0xc4, 0x79, 0x77, 0x4c, 0x0b, 0x21, 0xce, 0x2b, 0x83,
		0xd7, 0x31, 0x1c, 0xe4, 0xe5, 0x17, 0x86, 0x83, 0xac, 0x46, 0x07, 0xc3, 0x41, 0x36, 0x62, 0x01,
		0x0c, 0x07, 0x29, 0x08, 0x13, 0xc0, 0xcf, 0x93, 0x1b, 0xd3, 0x1a, 0x33, 0x30, 0x60, 0x5e, 0xc3,
		0xbc, 0x86, 0x79, 0x8d, 0x19, 0x18, 0x8b, 0xdd, 0x3c, 0x48, 0xa3, 0x5c, 0xb4, 0xf3, 0x98, 0x81,
		0xb1, 0x36, 0x21, 0xcc, 0xc0, 0xf8, 0xe9, 0x31, 0x60, 0x06, 0x86, 0x62, 0xf3, 0x54, 0x32, 0x42,
		0xc3, 0x0c, 0x8c, 0x9c, 0x8a, 0x25, 0x0c, 0x19, 0xc0, 0x0c, 0x8c, 0xbc, 0x0b, 0x6a, 0xb0, 0x27,
		0x66, 0x60, 0xc0, 0xff, 0x23, 0xc5, 0xff, 0x83, 0x51, 0x0f, 0xf0, 0x01, 0xc1, 0x07, 0x04, 0x1f,
		0x90, 0x86, 0x52, 0x5a, 0xf8, 0x80, 0xd6, 0xd8, 0x79, 0x94, 0xd2, 0xe6, 0xe0, 0x34, 0xd2, 0x17,
		0x41, 0x29, 0xad, 0x1c, 0x66, 0x47, 0x29, 0xad, 0x28, 0x5e, 0x41, 0x29, 0xad, 0x56, 0x0c, 0xd0,
		0x43, 0xb3, 0x3a, 0x7c, 0x97, 0xb3, 0xea, 0x14, 0xa5, 0xb4, 0xeb, 0xda, 0x4f, 0x28, 0xa5, 0x95,
		0x48, 0x14, 0xa5, 0xb4, 0x28, 0xa5, 0xdd, 0xfc, 0x66, 0xa2, 0x94, 0x56, 0x1e, 0x4d, 0x94, 0xd2,
		0xca, 0x25, 0x87, 0x52, 0x5a, 0xd2, 0x55, 0xaf, 0x31, 0xd1, 0x40, 0x90, 0x05, 0x89, 0x89, 0x06,
		0x93, 0x85, 0x51, 0x50, 0xfb, 0xb3, 0xc3, 0x44, 0x41, 0xad, 0x6a, 0xc9, 0x87, 0x82, 0xda, 0x05,
		0x98, 0x14, 0x13, 0x0d, 0xe8, 0xb4, 0x1b, 0x1a, 0xf7, 0x4b, 0x6b, 0xdc, 0x1f, 0xf7, 0xa3, 0xcf,
		0x4b, 0xdf, 0xfe, 0x37, 0x0a, 0x0f, 0x58, 0xf4, 0xc1, 0xaa, 0x39, 0xd0, 0x92, 0x90, 0xd1, 0x07,
		0xfe, 0x68, 0xc0, 0x9d, 0x44, 0x96, 0x5e, 0xc4, 0x4f, 0xd2, 0x4c, 0x1e, 0xa4, 0x7f, 0xee, 0xd9,
		0x41, 0xbf, 0x15, 0x78, 0x41, 0xff, 0x32, 0x22, 0xde, 0x0a, 0xbc, 0xbe, 0x11, 0xd3, 0x7e, 0xa3,
		0xe6, 0xf0, 0x33, 0x1c, 0x7c, 0xc9, 0x72, 0xe2, 0x47, 0xcf, 0x7a, 0xe2, 0x53, 0x6d, 0x62, 0x44,
		0x9c, 0x83, 0xa0, 0xd1, 0x0e, 0xc2, 0x6c, 0x56, 0x91, 0x36, 0xaa, 0xe8, 0xd4, 0x0f, 0xd1, 0x26,
		0xa8, 0x34, 0x93, 0x53, 0x9a, 0x89, 0x29, 0x21, 0x75, 0x43, 0xad, 0x28, 0x16, 0x35, 0x8a, 0xa1,
		0x34, 0x18, 0xf3, 0xbf, 0xe0, 0x31, 0x2e, 0xc9, 0xba, 0x39, 0x9f, 0xe3, 0x52, 0xc1, 0x1c, 0x97,
		0xc2, 0xe0, 0x50, 0xcc, 0x71, 0xc1, 0x1c, 0x17, 0xcc, 0x71, 0x21, 0xf6, 0x8a, 0x21, 0xf9, 0x34,
		0x8f, 0x4e, 0x31, 0x24, 0x9f, 0xca, 0xe2, 0x75, 0x24, 0x9f, 0xce, 0x7d, 0x21, 0xf9, 0x74, 0x35,
		0x12, 0x48, 0x3e, 0xdd, 0x84, 0x18, 0x92, 0x4f, 0xa5, 0x7d, 0x21, 0xf9, 0x14, 0x0c, 0xa3, 0xd0,
		0x00, 0xa0, 0x5b, 0x1d, 0xc9, 0xa7, 0xb3, 0xea, 0x14, 0xc9, 0xa7, 0xeb, 0xda, 0x4f, 0x48, 0x3e,
		0x95, 0x48, 0x14, 0xc9, 0xa7, 0x48, 0x3e, 0xdd, 0xfc, 0x66, 0x22, 0xf9, 0x54, 0x1e, 0x4d, 0x24,
		0x9f, 0xca, 0x25, 0x87, 0xe4, 0x53, 0xd2, 0x55, 0xaf, 0x73, 0xed, 0xc0, 0x92, 0x94, 0x16, 0x93,
		0xae, 0xff, 0x74, 0xe7, 0x72, 0xdd, 0x1d, 0xe8, 0x03, 0xf7, 0xc1, 0xf3, 0x59, 0x10, 0xb0, 0xa1,
		0x6e, 0x33, 0xf3, 0x36, 0x24, 0xf6, 0x8c, 0x01, 0x37, 0x22, 0xec, 0x6a, 0xe4, 0xe3, 0x26, 0x0b,
		0x23, 0x1f, 0xf7, 0x67, 0x87, 0x89, 0x7c, 0x5c, 0xd5, 0xca, 0x00, 0xf9, 0xb8, 0x0b, 0x60, 0xfa,
		0x96, 0x0e, 0xb8, 0x81, 0x96, 0x2e, 0x92, 0x96, 0xc6, 0xe4, 0x9f, 0x6d, 0xd1, 0xcf, 0xc8, 0x0c,
		0xc8, 0xa3, 0x7a, 0x46, 0x66, 0x80, 0x0c, 0x5e, 0xc7, 0xe4, 0x9f, 0x97, 0x5f, 0x98, 0xfc, 0xb3,
		0x1a, 0x1d, 0x4c, 0xfe, 0xd9, 0x88, 0x05, 0x30, 0xf9, 0xa7, 0x20, 0x4c, 0x00, 0xcf, 0x20, 0x30,
		0x47, 0xde, 0x31, 0x07, 0x46, 0x22, 0x01, 0x77, 0x00, 0x77, 0x00, 0x77, 0x60, 0x24, 0xd2, 0x42,
		0xe9, 0x82, 0x8c, 0xe4, 0x85, 0x3b, 0x8f, 0x91, 0x48, 0x6b, 0x13, 0xc2, 0x48, 0xa4, 0x9f, 0x1e,
		0x03, 0x46, 0x22, 0x29, 0xb6, 0xdb, 0x25, 0x43, 0x57, 0x8c, 0x44, 0xca, 0xa9, 0x58, 0xc2, 0xcc,
		0x19, 0x8c, 0x44, 0xca, 0xbb, 0xa0, 0x06, 0x7b, 0x62, 0x24, 0x12, 0x1c, 0x63, 0x70, 0x8c, 0x51,
		0x3a, 0xc6, 0x30, 0x2b, 0x0a, 0xce, 0x31, 0x38, 0xc7, 0xe0, 0x1c, 0xd3, 0x50, 0xae, 0x0f, 0xe7,
		0xd8, 0x1a, 0x3b, 0x8f, 0x72, 0xfd, 0x1c, 0x9c, 0x46, 0xfa, 0x22, 0x28, 0xd7, 0x97, 0xc3, 0xec,
		0x28, 0xd7, 0x17, 0xc5, 0x2b, 0x28, 0xd7, 0xd7, 0x8a, 0x81, 0x06, 0x69, 0x56, 0x87, 0x53, 0x77,
		0x56, 0x9d, 0xa2, 0x5c, 0x7f, 0x5d, 0xfb, 0x09, 0xe5, 0xfa, 0x12, 0x89, 0xa2, 0x5c, 0x1f, 0xe5,
		0xfa, 0x9b, 0xdf, 0x4c, 0x94, 0xeb, 0xcb, 0xa3, 0x89, 0x72, 0x7d, 0xb9, 0xe4, 0x50, 0xae, 0x4f,
		0xba, 0x2a, 0x62, 0x0f, 0x3b, 0x1c, 0x7b, 0xc0, 0x10, 0xad, 0x25, 0xcb, 0xa2, 0x68, 0x7f, 0x11,
		0x01, 0x04, 0x20, 0xd6, 0x96, 0x5f, 0x28, 0xda, 0x47, 0xd1, 0xfe, 0x62, 0x41, 0xb0, 0x55, 0x43,
		0xb4, 0xa0, 0xf6, 0xa5, 0xab, 0x7d, 0x4c, 0x17, 0x13, 0x3f, 0x8c, 0x2a, 0x99, 0x82, 0x54, 0x4e,
		0xe6, 0xa4, 0xe4, 0x65, 0xbe, 0x98, 0x90, 0xe1, 0x58, 0x26, 0x67, 0xe2, 0x07, 0xca, 0xc4, 0xcb,
		0xe6, 0x7c, 0x9e, 0x4c, 0x0d, 0xf3, 0x64, 0x0a, 0x63, 0x92, 0x61, 0x9e, 0x0c, 0xe6, 0xc9, 0x60,
		0x9e, 0x0c, 0x31, 0x40, 0x44, 0x82, 0x5a, 0x1e, 0xf1, 0x21, 0x12, 0xd4, 0x64, 0xf1, 0x3a, 0x12,
		0xd4, 0xe6, 0xbe, 0x90, 0xa0, 0xb6, 0x1a, 0x09, 0x24, 0xa8, 0x6d, 0x42, 0x0c, 0x09, 0x6a, 0xd2,
		0xbe, 0x90, 0xa0, 0x06, 0x86, 0x51, 0x68, 0x00, 0xd0, 0xad, 0x8e, 0x04, 0xb5, 0x59, 0x75, 0x8a,
		0x04, 0xb5, 0x75, 0xed, 0x27, 0x24, 0xa8, 0x49, 0x24, 0x8a, 0x04, 0x35, 0x24, 0xa8, 0x6d, 0x7e,
		0x33, 0x91, 0xa0, 0x26, 0x8f, 0x26, 0x12, 0xd4, 0xe4, 0x92, 0x43, 0x82, 0x1a, 0xe9, 0xaa, 0xd7,
		0x18, 0x9b, 0x22, 0xc2, 0x7c, 0x44, 0x06, 0x56, 0xb2, 0x30, 0x32, 0xb0, 0x7e, 0x76, 0x98, 0xc8,
		0xc0, 0x52, 0x2d, 0xf3, 0x90, 0x81, 0xb5, 0x00, 0x8d, 0x6e, 0xe9, 0xd8, 0x14, 0x4c, 0x07, 0x81,
		0x1a, 0x42, 0x9c, 0x77, 0xc7, 0xb4, 0x10, 0xe2, 0xbc, 0x32, 0x78, 0x1d, 0xd3, 0x41, 0x5e, 0x7e,
		0x61, 0x3a, 0xc8, 0x6a, 0x74, 0x30, 0x1d, 0x64, 0x23, 0x16, 0xc0, 0x74, 0x90, 0x82, 0x30, 0x01,
		0xfc, 0x3c, 0xb9, 0x31, 0xad, 0x31, 0x04, 0x03, 0xe6, 0x35, 0xcc, 0x6b, 0x98, 0xd7, 0x18, 0x82,
		0xb1, 0xd8, 0xcd, 0x83, 0x34, 0xca, 0x45, 0x3b, 0x8f, 0x21, 0x18, 0x6b, 0x13, 0xc2, 0x10, 0x8c,
		0x9f, 0x1e, 0x03, 0x86, 0x60, 0x28, 0x36, 0x4f, 0x25, 0x23, 0x34, 0x0c, 0xc1, 0xc8, 0xa9, 0x58,
		0xc2, 0x94, 0x01, 0x0c, 0xc1, 0xc8, 0xbb, 0xa0, 0x06, 0x7b, 0x62, 0x08, 0x06, 0xfc, 0x3f, 0x52,
		0xfc, 0x3f, 0x98, 0xf5, 0x00, 0x1f, 0x10, 0x7c, 0x40, 0xf0, 0x01, 0x69, 0x28, 0xa5, 0x85, 0x0f,
		0x68, 0x8d, 0x9d, 0x47, 0x29, 0x6d, 0x0e, 0x4e, 0x23, 0x7d, 0x11, 0x94, 0xd2, 0xca, 0x61, 0x76,
		0x94, 0xd2, 0x8a, 0xe2, 0x15, 0x94, 0xd2, 0x6a, 0xc5, 0x00, 0x3d, 0x34, 0xab, 0xc3, 0x77, 0x39,
		0xab, 0x4e, 0x51, 0x4a, 0xbb, 0xae, 0xfd, 0x84, 0x52, 0x5a, 0x89, 0x44, 0x51, 0x4a, 0x8b, 0x52,
		0xda, 0xcd, 0x6f, 0x26, 0x4a, 0x69, 0xe5, 0xd1, 0x44, 0x29, 0xad, 0x5c, 0x72, 0x28, 0xa5, 0x25,
		0x5d, 0xf5, 0x1a, 0x23, 0x0d, 0x04, 0x59, 0x90, 0x18, 0x69, 0x30, 0x59, 0x18, 0x05, 0xb5, 0x3f,
		0x3b, 0x4c, 0x14, 0xd4, 0xaa, 0x96, 0x7c, 0x28, 0xa8, 0x5d, 0x80, 0x49, 0x31, 0xd2, 0x80, 0x4e,
		0xbb, 0xa1, 0x73, 0xbf, 0xbc, 0xce, 0xfd, 0x71, 0x43, 0xfa, 0xbc, 0x34, 0xee, 0x7f, 0xa3, 0xf0,
		0x84, 0x45, 0x9f, 0xac, 0xa2, 0x13, 0x2d, 0x09, 0x19, 0x7e, 0xe0, 0x8f, 0x06, 0xdc, 0x49, 0xa4,
		0xe9, 0x45, 0xfc, 0x28, 0xcd, 0xe4, 0x49, 0xfa, 0xe7, 0x9e, 0x1d, 0xf4, 0x5b, 0x81, 0x17, 0xf4,
		0x2f, 0x23, 0xea, 0xad, 0xc0, 0xeb, 0x37, 0x13, 0xe2, 0x6f, 0xd4, 0x1c, 0x7f, 0x86, 0xa3, 0x2f,
		0x25, 0xaf, 0x99, 0xed, 0xc0, 0x27, 0xf5, 0x43, 0xe1, 0x9f, 0x19, 0x19, 0x51, 0x8c, 0x01, 0x2b,
		0xcc, 0x60, 0x15, 0x69, 0xa0, 0x8a, 0xce, 0xfb, 0x10, 0x6d, 0x7f, 0x4a, 0xb3, 0x37, 0xa5, 0xd9,
		0x97, 0x12, 0xf2, 0x36, 0xd4, 0x8a, 0x61, 0x61, 0xe6, 0xa1, 0x04, 0x73, 0x50, 0xa4, 0xf9, 0x97,
		0x9a, 0x7b, 0x1f, 0x3e, 0x24, 0xf3, 0x73, 0xca, 0xd9, 0x3b, 0xa4, 0xa8, 0x11, 0xa1, 0x62, 0x86,
		0xe5, 0x08, 0x1d, 0x92, 0x23, 0x68, 0x38, 0x8e, 0xb0, 0xa1, 0x38, 0x10, 0xa2, 0x10, 0xa2, 0x84,
		0x42, 0x54, 0xd4, 0x30, 0x1b, 0x31, 0xd6, 0x91, 0x0c, 0x2b, 0x49, 0x92, 0xbb, 0x4f, 0xb8, 0x9b,
		0x0f, 0x53, 0xb0, 0x30, 0x05, 0xab, 0x40, 0xee, 0x0d, 0xe1, 0xce, 0xb9, 0x29, 0xad, 0x1e, 0x65,
		0x40, 0x08, 0xe4, 0xd6, 0xb4, 0xb4, 0x0d, 0xee, 0x8b, 0xe2, 0xbb, 0x2f, 0x04, 0x38, 0xa2, 0xd4,
		0x18, 0xbf, 0xdc, 0x37, 0x9d, 0xc0, 0xe2, 0xe2, 0xcc, 0xdf, 0xf1, 0x82, 0x39, 0x33, 0x80, 0xe1,
		0x45, 0x80, 0x01, 0xbc, 0x83, 0x06, 0xf0, 0x60, 0xcc, 0xff, 0x82, 0x4d, 0xe0, 0x64, 0xdd, 0x9c,
		0x8f, 0x82, 0x85, 0x11, 0x0c, 0x23, 0x78, 0xf7, 0x8c, 0x60, 0x8c, 0x82, 0x25, 0x40, 0xda, 0xd2,
		0x84, 0x8d, 0x4c, 0xa1, 0x23, 0x5b, 0xf8, 0xc8, 0x16, 0x42, 0x64, 0xc2, 0x88, 0x4c, 0x28, 0x11,
		0x08, 0x27, 0xb1, 0x42, 0x4a, 0xb0, 0xb0, 0x92, 0x87, 0xdc, 0x17, 0xf2, 0x3a, 0xea, 0x57, 0xe7,
		0xbe, 0x50, 0xbf, 0xba, 0x1a, 0x09, 0xd4, 0xaf, 0x6e, 0x42, 0x0c, 0xf5, 0xab, 0xd2, 0xbe, 0x50,
		0xbf, 0x0a, 0x86, 0x51, 0x68, 0x00, 0xd0, 0xad, 0x8e, 0xfa, 0xd5, 0x59, 0x75, 0x8a, 0xfa, 0xd5,
		0x75, 0xed, 0x27, 0xd4, 0xaf, 0x4a, 0x24, 0x8a, 0xfa, 0x55, 0xd4, 0xaf, 0x6e, 0x7e, 0x33, 0x51,
		0xbf, 0x2a, 0x8f, 0x26, 0xea, 0x57, 0xe5, 0x92, 0x43, 0xfd, 0x2a, 0xe9, 0xaa, 0xd7, 0xb9, 0x76,
		0x60, 0x49, 0xaa, 0xac, 0x49, 0xd7, 0x7f, 0xba, 0x73, 0xb9, 0xee, 0x0e, 0xf4, 0x81, 0xfb, 0xe0,
		0xf9, 0x2c, 0x08, 0xd8, 0x50, 0xb7, 0x99, 0x79, 0x1b, 0x12, 0x7b, 0xc6, 0x8c, 0x5c, 0x11, 0x76,
		0x35, 0x4a, 0x7a, 0x93, 0x85, 0x51, 0xd2, 0xfb, 0xb3, 0xc3, 0x44, 0x49, 0xaf, 0x6a, 0x65, 0x80,
		0x92, 0xde, 0x05, 0x30, 0x7d, 0x4b, 0x67, 0xe4, 0x42, 0x4b, 0x17, 0x49, 0x4b, 0x63, 0x78, 0xf0,
		0xb6, 0xe8, 0x67, 0x64, 0x06, 0xe4, 0x51, 0x3d, 0x23, 0x33, 0x40, 0x06, 0xaf, 0x63, 0x78, 0xf0,
		0xcb, 0x2f, 0x0c, 0x0f, 0x5e, 0x8d, 0x0e, 0x86, 0x07, 0x6f, 0xc4, 0x02, 0x18, 0x1e, 0x5c, 0x10,
		0x26, 0x80, 0x67, 0x10, 0x98, 0x23, 0xef, 0x98, 0x03, 0x53, 0x95, 0x81, 0x3b, 0x80, 0x3b, 0x80,
		0x3b, 0x30, 0x55, 0x79, 0xa1, 0x74, 0x41, 0x46, 0xf2, 0xc2, 0x9d, 0xc7, 0x54, 0xe5, 0xb5, 0x09,
		0x61, 0xaa, 0xf2, 0x4f, 0x8f, 0x01, 0x53, 0x95, 0x15, 0xdb, 0xed, 0x92, 0xa1, 0x2b, 0xa6, 0x2a,
		0xe7, 0x54, 0x2c, 0x61, 0x6c, 0x2d, 0xa6, 0x2a, 0xe7, 0x5d, 0x50, 0x83, 0x3d, 0x31, 0x55, 0x19,
		0x8e, 0x31, 0x38, 0xc6, 0x28, 0x1d, 0x63, 0x18, 0x37, 0x0d, 0xe7, 0x18, 0x9c, 0x63, 0x70, 0x8e,
		0x69, 0x28, 0xd7, 0x87, 0x73, 0x6c, 0x8d, 0x9d, 0x47, 0xb9, 0x7e, 0x0e, 0x4e, 0x23, 0x7d, 0x11,
		0x94, 0xeb, 0xcb, 0x61, 0x76, 0x94, 0xeb, 0x8b, 0xe2, 0x15, 0x94, 0xeb, 0x6b, 0xc5, 0x40, 0x83,
		0x34, 0xab, 0xc3, 0xa9, 0x3b, 0xab, 0x4e, 0x51, 0xae, 0xbf, 0xae, 0xfd, 0x84, 0x72, 0x7d, 0x89,
		0x44, 0x51, 0xae, 0x8f, 0x72, 0xfd, 0xcd, 0x6f, 0x26, 0xca, 0xf5, 0xe5, 0xd1, 0x44, 0xb9, 0xbe,
		0x5c, 0x72, 0x28, 0xd7, 0x27, 0x5d, 0x15, 0xb1, 0x87, 0x1d, 0x8e, 0x3d, 0x60, 0x0e, 0xf7, 0x92,
		0x65, 0x51, 0xb4, 0xbf, 0x88, 0x00, 0x02, 0x10, 0x6b, 0xcb, 0x2f, 0x14, 0xed, 0xa3, 0x68, 0x7f,
		0xb1, 0x20, 0xd8, 0xaa, 0x39, 0xdc, 0x50, 0xfb, 0xd2, 0xd5, 0x3e, 0x06, 0x94, 0x8b, 0x9f, 0x07,
		0x95, 0x4c, 0x41, 0x4a, 0x46, 0xa3, 0xe6, 0x66, 0x42, 0xb9, 0x90, 0xe9, 0xda, 0x22, 0xa6, 0xa5,
		0xce, 0x9b, 0x72, 0x02, 0xa6, 0xa6, 0xce, 0x89, 0x57, 0xd1, 0xf3, 0x64, 0x6a, 0x98, 0x27, 0x53,
		0x18, 0x93, 0x0c, 0xf3, 0x64, 0x30, 0x4f, 0x06, 0xf3, 0x64, 0x88, 0x01, 0x22, 0x12, 0xd4, 0xf2,
		0x88, 0x0f, 0x91, 0xa0, 0x26, 0x8b, 0xd7, 0x91, 0xa0, 0x36, 0xf7, 0x85, 0x04, 0xb5, 0xd5, 0x48,
		0x20, 0x41, 0x6d, 0x13, 0x62, 0xff, 0x1f, 0x7b, 0xef, 0xde, 0xdb, 0xb6, 0x92, 0x6c, 0x8b, 0xff,
		0xef, 0x4f, 0x21, 0x10, 0x03, 0x5c, 0x1b, 0x08, 0xa3, 0x87, 0xf5, 0xb0, 0x0d, 0x9c, 0x3f, 0xbc,
		0x63, 0x67, 0x1f, 0x63, 0xfc, 0xba, 0xb6, 0xb3, 0xef, 0xcc, 0x2f, 0xd1, 0x08, 0xb4, 0xd4, 0xb2,
		0x79, 0x43, 0x91, 0x3a, 0x64, 0x2b, 0x3b, 0xb9, 0xb1, 0xbe, 0xfb, 0x0f, 0xa2, 0xde, 0x96, 0x94,
		0x58, 0x62, 0x55, 0x35, 0x29, 0xad, 0xe0, 0xe0, 0xec, 0x8c, 0x63, 0x75, 0x53, 0xec, 0xea, 0xd5,
		0xb5, 0x56, 0x55, 0x57, 0x21, 0x41, 0x8d, 0xed, 0x0f, 0x12, 0xd4, 0x60, 0x30, 0x06, 0x1d, 0x00,
		0xb9, 0xd1, 0x91, 0xa0, 0x36, 0x7f, 0x9c, 0x22, 0x41, 0x6d, 0x5d, 0xff, 0x09, 0x09, 0x6a, 0x8c,
		0x93, 0x22, 0x41, 0x0d, 0x09, 0x6a, 0x9b, 0xef, 0x4c, 0x24, 0xa8, 0xf1, 0xcd, 0x89, 0x04, 0x35,
		0xde, 0xe9, 0x90, 0xa0, 0x26, 0x3a, 0x6a, 0x1d, 0x6d, 0x53, 0x28, 0xdc, 0x47, 0x64, 0x60, 0x8d,
		0x06, 0x46, 0x06, 0xd6, 0xaf, 0x16, 0x13, 0x19, 0x58, 0xa6, 0x31, 0x0f, 0x19, 0x58, 0x4b, 0xd8,
		0xe8, 0x96, 0xb6, 0x4d, 0x41, 0x77, 0x10, 0x1c, 0x43, 0x88, 0xf3, 0xee, 0xd8, 0x29, 0x84, 0x38,
		0x2f, 0x87, 0xad, 0xa3, 0x3b, 0xc8, 0xeb, 0x3f, 0xe8, 0x0e, 0xf2, 0xb6, 0x79, 0xd0, 0x1d, 0x64,
		0x23, 0x13, 0x40, 0x77, 0x90, 0x8c, 0x18, 0x01, 0x74, 0x9e, 0xd4, 0xb8, 0xd6, 0x68, 0x82, 0x01,
		0xf7, 0x1a, 0xee, 0x35, 0xdc, 0x6b, 0x34, 0xc1, 0x58, 0x2e, 0xf3, 0x20, 0x8d, 0x72, 0xd9, 0x9b,
		0x47, 0x13, 0x8c, 0xb5, 0x27, 0x42, 0x13, 0x8c, 0x5f, 0x2e, 0x03, 0x9a, 0x60, 0x18, 0x76, 0x4f,
		0x99, 0x19, 0x1a, 0x9a, 0x60, 0xa4, 0x14, 0x96, 0xd0, 0x65, 0x00, 0x4d, 0x30, 0xd2, 0x0e, 0xd4,
		0x30, 0x4f, 0x34, 0xc1, 0x80, 0xfe, 0xc3, 0xa2, 0xff, 0xa0, 0xd7, 0x03, 0x34, 0x20, 0x68, 0x40,
		0xd0, 0x80, 0x72, 0xb8, 0x4a, 0x0b, 0x0d, 0x68, 0x8d, 0x37, 0x8f, 0xab, 0xb4, 0x29, 0x58, 0x8d,
		0xc9, 0x17, 0xc1, 0x55, 0x5a, 0x1e, 0x63, 0xc7, 0x55, 0x5a, 0x2a, 0x5b, 0xc1, 0x55, 0xda, 0x5c,
		0x36, 0x48, 0x8f, 0xcc, 0xe8, 0xd0, 0x2e, 0xe7, 0x8f, 0x53, 0x5c, 0xa5, 0x5d, 0xd7, 0x7f, 0xc2,
		0x55, 0x5a, 0xc6, 0x49, 0x71, 0x95, 0x16, 0x57, 0x69, 0x37, 0xdf, 0x99, 0xb8, 0x4a, 0xcb, 0x37,
		0x27, 0xae, 0xd2, 0xf2, 0x4e, 0x87, 0xab, 0xb4, 0xa2, 0xa3, 0xd6, 0xd1, 0xd2, 0x80, 0xc8, 0x83,
		0x44, 0x4b, 0x83, 0xe9, 0xc0, 0xb8, 0x50, 0xfb, 0xab, 0xc5, 0xc4, 0x85, 0x5a, 0xd3, 0xc8, 0x87,
		0x0b, 0xb5, 0x4b, 0x38, 0x29, 0x5a, 0x1a, 0xc8, 0x9d, 0x6e, 0xa8, 0xdc, 0xcf, 0x57, 0xb9, 0x7f,
		0x58, 0x90, 0x3e, 0x2d, 0x85, 0xfb, 0xf7, 0x0c, 0xae, 0x30, 0xf5, 0xca, 0x1a, 0x5a, 0x51, 0x8b,
		0xa4, 0xf9, 0x41, 0xd8, 0x6b, 0x6a, 0x7f, 0x84, 0xa6, 0xd7, 0xc3, 0x47, 0xb9, 0x18, 0x3d, 0x49,
		0xe3, 0xaa, 0xeb, 0x45, 0x8d, 0xcb, 0xa8, 0x1b, 0x35, 0xee, 0xe3, 0xd9, 0x2f, 0xa3, 0x6e, 0xe3,
		0x61, 0x34, 0xf9, 0x9e, 0x99, 0xe5, 0xdf, 0xec, 0x93, 0x1b, 0x1a, 0xcc, 0xc0, 0x27, 0x89, 0xaf,
		0x0a, 0x0d, 0xde, 0xcf, 0x86, 0x43, 0x5c, 0xba, 0x91, 0x3e, 0xd5, 0x3a, 0x59, 0xc5, 0x79, 0xeb,
		0xca, 0xf5, 0xcf, 0x3d, 0x35, 0x70, 0x26, 0x12, 0x86, 0x0d, 0xac, 0x2b, 0xe7, 0xfb, 0xcc, 0x48,
		0xc5, 0xa3, 0x72, 0xb9, 0x5a, 0x2b, 0x97, 0x0b, 0xb5, 0xc3, 0x5a, 0xe1, 0xb8, 0x52, 0x29, 0x56,
		0x8b, 0x09, 0x82, 0x21, 0xd6, 0x4d, 0xd8, 0x52, 0xa1, 0x6a, 0xfd, 0x31, 0x78, 0x6b, 0x7e, 0xcf,
		0xf3, 0x28, 0x86, 0xfa, 0x14, 0xa9, 0x30, 0x51, 0xdc, 0x62, 0xd3, 0xc5, 0x27, 0x42, 0x09, 0x61,
		0x74, 0x48, 0x80, 0x0a, 0xeb, 0xa3, 0xc1, 0x66, 0x28, 0xb0, 0xfe, 0x1e, 0x5e, 0xef, 0x13, 0x6b,
		0x2e, 0x78, 0xd2, 0x85, 0x96, 0x58, 0xe0, 0xf5, 0x5e, 0xf4, 0xdb, 0x5f, 0xd7, 0x1a, 0xaf, 0xca,
		0xea, 0x0d, 0xbe, 0x55, 0xa4, 0x43, 0xc7, 0xf5, 0x55, 0xcb, 0x1e, 0x7d, 0xdd, 0xf5, 0x5e, 0xd7,
		0x34, 0x4d, 0x63, 0x71, 0xac, 0x35, 0x17, 0x6d, 0xb3, 0x96, 0x38, 0x1b, 0x73, 0xfb, 0x24, 0xdc,
		0x7d, 0x96, 0x9b, 0x6f, 0x98, 0x05, 0x97, 0x94, 0x7d, 0x93, 0xb1, 0x6b, 0x32, 0xf6, 0xfc, 0x9a,
		0x1d, 0x6f, 0x96, 0x88, 0xc6, 0x0b, 0x0c, 0x9b, 0x36, 0x8a, 0xb1, 0x06, 0x06, 0x6d, 0x47, 0x4a,
		0xf7, 0xba, 0x76, 0x37, 0x0c, 0x74, 0xd0, 0x0c, 0x36, 0x4f, 0x63, 0x9d, 0xa6, 0xab, 0x2e, 0x19,
		0x74, 0x53, 0xbf, 0x26, 0x51, 0x3f, 0xa9, 0xc4, 0x02, 0x19, 0x85, 0x10, 0x46, 0xb0, 0xa9, 0xa8,
		0xa5, 0x2d, 0x72, 0x09, 0x8b, 0x5c, 0xaa, 0xa2, 0xd9, 0x74, 0x66, 0x7c, 0xf1, 0xa4, 0x5d, 0x9b,
		0x2c, 0xaf, 0x95, 0xbc, 0x9a, 0xc0, 0x54, 0x78, 0x6a, 0x25, 0x2d, 0x1c, 0x40, 0xd4, 0xd4, 0x8d,
		0x4c, 0xad, 0xa6, 0x54, 0xa7, 0x67, 0x37, 0x67, 0xf2, 0x37, 0xc5, 0x21, 0x3f, 0xb3, 0xc9, 0xcd,
		0x6c, 0xf2, 0xf2, 0xeb, 0xbd, 0x3b, 0x78, 0xaf, 0xd0, 0x61, 0x44, 0x1c, 0xf1, 0x45, 0x6f, 0x35,
		0xbf, 0xe4, 0x30, 0xce, 0x13, 0x59, 0xfa, 0x5b, 0x59, 0xd8, 0xa7, 0xd9, 0xa7, 0xba, 0x75, 0xf4,
		0x73, 0x63, 0xf0, 0xff, 0xee, 0x07, 0xcf, 0x74, 0x3b, 0x7a, 0xa4, 0xc6, 0x65, 0x52, 0x23, 0xc9,
		0x8a, 0x52, 0x93, 0x76, 0xb2, 0xfe, 0x36, 0x13, 0x92, 0x20, 0xef, 0x6f, 0x30, 0x1b, 0xd0, 0x7a,
		0x59, 0x53, 0xd8, 0x84, 0x10, 0x6e, 0xbc, 0xdc, 0x6c, 0x52, 0xc2, 0x1e, 0xe1, 0x22, 0x6e, 0xba,
		0x78, 0x5c, 0x8b, 0xb6, 0xc6, 0x0a, 0xbd, 0x75, 0x65, 0xde, 0xb6, 0x0e, 0xbf, 0x7f, 0xab, 0x6f,
		0x78, 0xa3, 0x56, 0xe4, 0x3e, 0xf9, 0x8e, 0xe7, 0xfa, 0x4f, 0x13, 0xa4, 0x89, 0xde, 0xfc, 0x5a,
		0xa7, 0x99, 0x1c, 0x4b, 0x06, 0x79, 0xe3, 0x6a, 0xae, 0xe7, 0xea, 0xae, 0xed, 0xd2, 0x6e, 0xe2,
		0xba, 0x26, 0xe0, 0x8f, 0x9b, 0xfa, 0xa2, 0x89, 0x7d, 0xce, 0xc4, 0xbe, 0x65, 0x32, 0xfe, 0x47,
		0xbb, 0xc3, 0xd7, 0xe5, 0x73, 0x1b, 0xf1, 0xb7, 0x04, 0x7c, 0x2d, 0xab, 0x0a, 0xe3, 0x66, 0x5e,
		0xe8, 0xf6, 0x0b, 0x8c, 0x1b, 0xf1, 0xa5, 0x94, 0xea, 0x8b, 0x4f, 0x5e, 0xf0, 0xe8, 0x10, 0x48,
		0x8a, 0xa3, 0x71, 0xa0, 0x22, 0x26, 0x17, 0x2a, 0x76, 0x57, 0x44, 0x4c, 0x24, 0x44, 0x64, 0x4c,
		0x43, 0x74, 0x7a, 0xfa, 0x59, 0xf9, 0xda, 0x6d, 0xd2, 0xa8, 0x16, 0x13, 0xf3, 0x7b, 0x35, 0x2e,
		0x94, 0x45, 0x28, 0x8b, 0x50, 0x16, 0x13, 0x7c, 0xa3, 0xa4, 0x1b, 0x7d, 0x32, 0x50, 0x73, 0xbc,
		0x07, 0x88, 0x8c, 0x63, 0x6c, 0xbe, 0xa3, 0x71, 0x89, 0x16, 0x90, 0x66, 0xc3, 0x93, 0x6f, 0x7c,
		0x0e, 0x00, 0xe0, 0x03, 0x02, 0x2e, 0x40, 0x60, 0x07, 0x06, 0x76, 0x80, 0x60, 0x05, 0x0a, 0x1a,
		0xc0, 0x20, 0x02, 0x0e, 0x72, 0x00, 0x59, 0xe1, 0x39, 0xd8, 0x5f, 0xe3, 0xcc, 0x42, 0xa6, 0x3b,
		0x37, 0x4b, 0xe6, 0xc2, 0xcd, 0x1b, 0x89, 0x9b, 0x37, 0xb4, 0x40, 0xc4, 0x0d, 0x48, 0x62, 0xc0,
		0x24, 0x06, 0x50, 0x22, 0x40, 0x45, 0x0b, 0x58, 0xc4, 0xc0, 0x35, 0x79, 0x03, 0xfc, 0x77, 0x6f,
		0xc2, 0xa0, 0xa7, 0x63, 0x35, 0xd8, 0x89, 0xa2, 0xd8, 0x7c, 0x18, 0x2f, 0xe1, 0x1c, 0xa5, 0xfa,
		0x5d, 0xab, 0xef, 0x3a, 0x74, 0xec, 0x9e, 0x1f, 0x69, 0xe7, 0xd1, 0x63, 0x7a, 0xeb, 0xa1, 0x6a,
		0xab, 0x50, 0xf9, 0xcd, 0x4c, 0x57, 0xe7, 0xba, 0xfb, 0xf8, 0xa1, 0x78, 0x58, 0x2a, 0xe6, 0x1e,
		0x9e, 0x55, 0xee, 0xea, 0xac, 0x92, 0xbb, 0x52, 0x51, 0xe4, 0x3c, 0x29, 0xfb, 0xcc, 0x7d, 0x52,
		0x91, 0xce, 0x9d, 0x7a, 0x4f, 0x41, 0xe8, 0xea, 0xe7, 0xce, 0x17, 0xff, 0xee, 0xe3, 0x87, 0x4a,
		0xe1, 0xb0, 0x9a, 0xbb, 0x3c, 0xbb, 0xcd, 0xdd, 0x77, 0x55, 0xd3, 0x6d, 0xd3, 0x70, 0x63, 0x93,
		0x38, 0xbb, 0x0c, 0x6f, 0xa7, 0xcb, 0xca, 0x5c, 0xfe, 0x40, 0x0a, 0x7a, 0x97, 0x42, 0x30, 0xc5,
		0xba, 0xe3, 0x4e, 0x7a, 0xaa, 0x31, 0x90, 0xe9, 0xb6, 0xdc, 0x64, 0xfc, 0x1f, 0x4f, 0x81, 0xb6,
		0x83, 0xa6, 0xdd, 0x0c, 0x3a, 0xdd, 0x50, 0x45, 0x91, 0x6a, 0xd9, 0x9e, 0x72, 0xda, 0x83, 0xc9,
		0xfa, 0x3b, 0x70, 0x59, 0x5f, 0xf9, 0x2c, 0x47, 0xcb, 0x4c, 0xa1, 0xa7, 0x78, 0x7c, 0x62, 0xa3,
		0x38, 0x53, 0x6d, 0xa7, 0xe7, 0x69, 0x96, 0x23, 0xcb, 0x8a, 0x6f, 0x04, 0xd1, 0xc2, 0x42, 0x1d,
		0x34, 0x09, 0x34, 0x09, 0x34, 0x09, 0x34, 0x89, 0xd0, 0xde, 0x1f, 0x83, 0xc0, 0x53, 0x8e, 0xcf,
		0xc9, 0x8e, 0x8a, 0xf0, 0x0c, 0x32, 0xe6, 0x19, 0xa0, 0xd0, 0xc1, 0x66, 0xb9, 0x78, 0x4b, 0x72,
		0xd0, 0xf2, 0x5e, 0xab, 0x9b, 0x1f, 0x26, 0x32, 0xe4, 0xe7, 0x85, 0xcf, 0xfc, 0x28, 0xc8, 0x92,
		0x96, 0x9a, 0x07, 0x24, 0xb9, 0xe1, 0x8e, 0x56, 0xf4, 0xd1, 0xa8, 0xe1, 0xb0, 0x29, 0x0f, 0x46,
		0x95, 0x10, 0x8c, 0xca, 0x90, 0x33, 0x83, 0x60, 0x14, 0x82, 0x51, 0x08, 0x46, 0x81, 0x65, 0x81,
		0x65, 0x81, 0x65, 0x21, 0x18, 0x25, 0xf8, 0xae, 0x11, 0x8c, 0x7a, 0xa3, 0xc9, 0x20, 0x18, 0x95,
		0x43, 0x30, 0x0a, 0xc1, 0xa8, 0xcd, 0xfe, 0xd4, 0x11, 0x73, 0x49, 0x0c, 0x40, 0x88, 0xb9, 0xe4,
		0x10, 0x73, 0x01, 0x1b, 0x00, 0x1b, 0x00, 0x1b, 0x20, 0xb6, 0xf7, 0xec, 0xc5, 0x5c, 0x10, 0x5a,
		0x58, 0x6b, 0x5c, 0xe3, 0xa1, 0x05, 0x54, 0x53, 0xe6, 0x5a, 0x63, 0xe3, 0x6b, 0x2b, 0x54, 0xc3,
		0xe7, 0x7e, 0xfc, 0x4c, 0xe3, 0xaa, 0x2b, 0x51, 0xe3, 0xb2, 0xd5, 0x6d, 0xfc, 0x19, 0x3f, 0x52,
		0xe3, 0x74, 0xfe, 0x91, 0x4c, 0xd5, 0xf0, 0x49, 0x70, 0x1f, 0x96, 0xe8, 0xe6, 0x14, 0xed, 0x8d,
		0x29, 0x5c, 0x8d, 0x34, 0xe9, 0xdd, 0xe1, 0x6a, 0x64, 0x0a, 0xe0, 0x9a, 0xec, 0x6a, 0xa4, 0x17,
		0x85, 0xb6, 0xdb, 0xa2, 0x0f, 0x46, 0x8f, 0xc6, 0xa5, 0x8d, 0x46, 0x17, 0x70, 0x35, 0x32, 0xc5,
		0x74, 0x0f, 0xd1, 0xe8, 0x0c, 0xf9, 0xf4, 0xe4, 0xf4, 0x6d, 0x62, 0xaf, 0x6e, 0xd7, 0x76, 0x5a,
		0xad, 0x50, 0x45, 0x11, 0xa5, 0xcd, 0x32, 0xb4, 0xcb, 0xe7, 0x69, 0x93, 0xcf, 0x48, 0x88, 0xdd,
		0xee, 0xb7, 0x32, 0xc3, 0xbb, 0x5d, 0x78, 0xc7, 0x47, 0x3c, 0xcd, 0x92, 0xb4, 0x0a, 0x7d, 0xb6,
		0x50, 0x93, 0xb5, 0xff, 0xb9, 0x60, 0x1f, 0xd7, 0x5f, 0x3e, 0x17, 0xed, 0xe3, 0xfa, 0xf0, 0xaf,
		0xc5, 0xf8, 0x3f, 0x3f, 0x4b, 0xfd, 0x97, 0xd2, 0xe7, 0x82, 0x5d, 0x1e, 0xfd, 0xb4, 0x54, 0xf9,
		0x5c, 0xb0, 0x2b, 0xf5, 0x83, 0xfd, 0x2f, 0x5f, 0xde, 0xaf, 0xfb, 0x99, 0x83, 0x9f, 0x87, 0x7d,
		0x7a, 0x9d, 0xa7, 0xce, 0xf1, 0xba, 0x6f, 0xee, 0x2f, 0xfe, 0xc5, 0xfe, 0xce, 0xff, 0xb3, 0x2f,
		0xf5, 0xd6, 0x0f, 0xfe, 0x61, 0xed, 0xd6, 0x55, 0x1c, 0x5e, 0x18, 0xa9, 0x02, 0x46, 0x56, 0xc1,
		0x48, 0x6c, 0x9d, 0x8e, 0xdd, 0x3e, 0xb5, 0x3f, 0xd6, 0x7f, 0x16, 0xdf, 0x95, 0xfb, 0x27, 0x07,
		0x3f, 0x6b, 0xfd, 0xd7, 0x3f, 0x7c, 0x59, 0xf6, 0x6b, 0xc5, 0x77, 0xb5, 0xfe, 0xc9, 0x8a, 0x7f,
		0xa9, 0xf6, 0x4f, 0xde, 0x38, 0x46, 0xa5, 0xbf, 0xbf, 0xf0, 0xab, 0x83, 0x9f, 0x97, 0x56, 0x7d,
		0xa0, 0xbc, 0xe2, 0x03, 0x87, 0xab, 0x3e, 0x70, 0xb8, 0xe2, 0x03, 0x2b, 0x1f, 0xa9, 0xb4, 0xe2,
		0x03, 0x95, 0xfe, 0xcb, 0xc2, 0xef, 0xef, 0x2f, 0xff, 0xd5, 0x6a, 0xff, 0xe0, 0x65, 0xd5, 0xbf,
		0xd5, 0xfa, 0x2f, 0x27, 0x07, 0x07, 0x00, 0xd6, 0x05, 0x60, 0x85, 0x19, 0xca, 0x9b, 0x61, 0xfa,
		0x0f, 0x9a, 0xbd, 0x74, 0x3d, 0x17, 0x15, 0x23, 0x61, 0x4c, 0x79, 0x62, 0x4c, 0x75, 0x62, 0x3c,
		0xa7, 0x25, 0x13, 0x96, 0x24, 0x43, 0xc0, 0xdc, 0x09, 0x4a, 0x66, 0xa2, 0xc0, 0x82, 0x69, 0x46,
		0x7d, 0xe0, 0xc9, 0x5b, 0x16, 0x87, 0x29, 0x6a, 0xc9, 0x7e, 0x53, 0x0d, 0xa1, 0xc4, 0xf9, 0xf1,
		0xe4, 0x43, 0x89, 0x14, 0x57, 0xce, 0xcc, 0xc4, 0xeb, 0x9e, 0x42, 0xa7, 0xa9, 0xda, 0x3d, 0xcf,
		0x0e, 0x55, 0xa4, 0x9d, 0x50, 0xd3, 0x45, 0xee, 0x16, 0x46, 0x46, 0x0c, 0xef, 0xb7, 0xef, 0x0c,
		0x31, 0x3c, 0xc4, 0xf0, 0x56, 0x7f, 0x23, 0x94, 0x37, 0x4d, 0xc3, 0xc6, 0xe7, 0x00, 0x00, 0x3e,
		0x20, 0xe0, 0xf6, 0xd7, 0x11, 0xc3, 0x13, 0xf0, 0x95, 0x53, 0x7b, 0xa3, 0x74, 0x98, 0xcb, 0xde,
		0xe2, 0x4e, 0x96, 0x6f, 0x21, 0x5b, 0x1e, 0xd9, 0xf2, 0xc8, 0x96, 0x37, 0x05, 0xc1, 0x66, 0x75,
		0x12, 0x64, 0xcb, 0xf3, 0xd8, 0x3b, 0x2a, 0x14, 0xa1, 0x42, 0x11, 0xe3, 0x2b, 0xb6, 0xda, 0x41,
		0xf8, 0xb7, 0x13, 0xb6, 0x5c, 0xff, 0xc9, 0x7e, 0x0e, 0xbc, 0x96, 0x76, 0x3b, 0x8c, 0x97, 0xea,
		0x96, 0x4d, 0x86, 0x33, 0x13, 0x67, 0x26, 0xce, 0x4c, 0x9c, 0x99, 0x84, 0xf6, 0xde, 0x73, 0x7d,
		0x5d, 0xac, 0x32, 0x1e, 0x99, 0x55, 0x86, 0xa1, 0xef, 0x1c, 0xff, 0x29, 0x93, 0x25, 0x1b, 0xae,
		0x5c, 0x9f, 0xbf, 0x10, 0xc2, 0x5f, 0x8e, 0xd7, 0x53, 0xf4, 0xf0, 0xbb, 0x30, 0xcf, 0xc7, 0xd0,
		0x69, 0x0e, 0x7c, 0x8d, 0x33, 0xf7, 0xc9, 0xd5, 0x91, 0xc0, 0x84, 0xd7, 0xea, 0xc9, 0xd1, 0xee,
		0xb7, 0xc1, 0x77, 0x8b, 0x19, 0x29, 0x5f, 0xf1, 0x02, 0xc6, 0x72, 0x18, 0x57, 0xce, 0x77, 0x39,
		0x13, 0xa8, 0x56, 0x2a, 0x87, 0x15, 0x98, 0x41, 0x2a, 0xce, 0x06, 0xbe, 0x51, 0xeb, 0xa8, 0xe3,
		0xb3, 0x25, 0x75, 0x7c, 0x0e, 0xcb, 0xb5, 0xa3, 0xdc, 0x9f, 0xa3, 0x30, 0x63, 0xee, 0x6e, 0x18,
		0x66, 0xcc, 0x5d, 0xa9, 0xe6, 0xb3, 0xe3, 0xbb, 0x51, 0x27, 0xd7, 0x0e, 0xc2, 0xdc, 0xa5, 0xf3,
		0xa8, 0xbc, 0x2f, 0xfe, 0x99, 0x1b, 0xe9, 0xd0, 0x7d, 0xec, 0x0d, 0xb6, 0x5e, 0xee, 0x36, 0x79,
		0xdf, 0x7d, 0xd3, 0xfe, 0xeb, 0x32, 0x3f, 0x76, 0x67, 0xea, 0xf8, 0x24, 0x5e, 0x77, 0x60, 0x20,
		0x84, 0x99, 0xdd, 0x15, 0x66, 0x9e, 0x95, 0xd7, 0x55, 0xa1, 0xcd, 0x5d, 0xe7, 0x68, 0x7e, 0x1a,
		0x88, 0x31, 0x10, 0x63, 0x20, 0xc6, 0x40, 0x8c, 0x21, 0xb4, 0x77, 0x04, 0x30, 0x70, 0x4e, 0x72,
		0x9e, 0x93, 0xa1, 0x6a, 0x06, 0xbe, 0xaf, 0x9a, 0xda, 0xe6, 0x8d, 0x5d, 0xbc, 0x9a, 0x07, 0x27,
		0x25, 0x4e, 0x4a, 0x9c, 0x94, 0x38, 0x29, 0x09, 0xed, 0x1d, 0x61, 0x0b, 0x49, 0x85, 0x0a, 0x61,
		0x8b, 0x44, 0x36, 0x8b, 0xb0, 0xc5, 0x9a, 0x26, 0x80, 0xb0, 0x45, 0x7a, 0xce, 0x06, 0xbe, 0x51,
		0x11, 0xb6, 0x40, 0xd8, 0x02, 0x61, 0x8b, 0x2c, 0xb8, 0xb4, 0x4b, 0x5d, 0x5b, 0x84, 0x2d, 0xb6,
		0x1e, 0x03, 0x21, 0xc7, 0xb0, 0xcb, 0x31, 0xdf, 0x54, 0xf8, 0x43, 0x40, 0x8d, 0x99, 0x4e, 0x03,
		0x31, 0x06, 0x62, 0x0c, 0xc4, 0x18, 0x88, 0x31, 0x10, 0x63, 0x20, 0xc6, 0x40, 0x8c, 0x81, 0x18,
		0x03, 0x31, 0x06, 0x62, 0x0c, 0xc4, 0x18, 0x88, 0x31, 0x10, 0x63, 0x20, 0xc6, 0x00, 0x03, 0x21,
		0xc6, 0x64, 0x4a, 0x8c, 0x41, 0x8f, 0x30, 0x96, 0xe2, 0x6f, 0xaf, 0x0b, 0x9d, 0x91, 0x54, 0x83,
		0xa3, 0x5b, 0xb4, 0x3e, 0x49, 0x63, 0x2b, 0x47, 0x2b, 0xfa, 0x7a, 0x51, 0xc3, 0x61, 0x53, 0x5e,
		0x2e, 0xaa, 0x84, 0x72, 0x51, 0x19, 0xd2, 0xcc, 0x50, 0x2e, 0x0a, 0xe5, 0xa2, 0x50, 0x2e, 0x0a,
		0x61, 0x0b, 0x84, 0x2d, 0x8c, 0x41, 0xb0, 0x38, 0xc7, 0x43, 0xd8, 0x02, 0xb7, 0x2d, 0x58, 0x89,
		0x13, 0xaa, 0x22, 0xe1, 0x68, 0xc0, 0xd1, 0x80, 0xa3, 0x01, 0x47, 0xc3, 0x52, 0x7b, 0x47, 0x44,
		0x7b, 0xe1, 0x0f, 0x22, 0xda, 0x6f, 0x9b, 0x07, 0x11, 0xed, 0x8d, 0x4c, 0x00, 0x11, 0xed, 0xcc,
		0x98, 0x01, 0xa2, 0x39, 0x14, 0xc2, 0x11, 0x22, 0xda, 0x6f, 0x3b, 0x8a, 0x11, 0xd1, 0xce, 0x21,
		0xa2, 0x8d, 0x88, 0x76, 0x2a, 0x30, 0x10, 0xc5, 0x7f, 0x50, 0xfc, 0x07, 0x9a, 0x03, 0x34, 0x07,
		0x68, 0x0e, 0x0c, 0xf6, 0x0e, 0x39, 0x9a, 0xc8, 0xe9, 0x45, 0x8d, 0x1b, 0x1c, 0x08, 0x38, 0x10,
		0x70, 0x20, 0x64, 0xfd, 0x40, 0x80, 0x08, 0x2d, 0xa9, 0x37, 0x40, 0x84, 0x4e, 0x64, 0xb3, 0x10,
		0xa1, 0xd7, 0x34, 0x01, 0x88, 0xd0, 0x10, 0x60, 0x4c, 0x9f, 0x61, 0x10, 0xa1, 0xdf, 0x78, 0x14,
		0x43, 0x84, 0xce, 0x41, 0x84, 0x86, 0x08, 0x9d, 0x0a, 0x0c, 0x44, 0x29, 0x17, 0x94, 0x72, 0x81,
		0xe6, 0x00, 0xcd, 0x01, 0x9a, 0x03, 0x34, 0x07, 0x68, 0x0e, 0xd0, 0x1c, 0xa0, 0x39, 0x40, 0x73,
		0x80, 0xe6, 0x00, 0xcd, 0x01, 0x9a, 0x03, 0x34, 0x07, 0x68, 0x0e, 0xd0, 0x1c, 0xd2, 0xad, 0x39,
		0xa0, 0x62, 0x89, 0x4c, 0xc5, 0x92, 0x61, 0x21, 0x8e, 0xb4, 0x14, 0x2c, 0xd9, 0x33, 0xb8, 0xda,
		0xd4, 0xab, 0x9c, 0x82, 0xd5, 0xb5, 0x48, 0x0a, 0xc0, 0x84, 0xbd, 0xa6, 0xf6, 0x47, 0x87, 0xed,
		0xf5, 0xf0, 0xb1, 0x2e, 0x46, 0x4f, 0xd5, 0xb8, 0xea, 0x7a, 0x51, 0xe3, 0x7e, 0xfc, 0x54, 0x63,
		0x5c, 0x8d, 0x1a, 0x97, 0xad, 0x6e, 0xe3, 0xcf, 0xf8, 0xa1, 0x1a, 0x63, 0x7c, 0x1e, 0xc1, 0x73,
		0x32, 0x5b, 0xdb, 0xdc, 0x42, 0x12, 0x58, 0x07, 0x51, 0x11, 0x1c, 0xd2, 0xe2, 0x37, 0x44, 0x45,
		0x6f, 0xc8, 0x8a, 0xdd, 0x50, 0xaa, 0x8c, 0xf4, 0xaa, 0x22, 0xb5, 0x17, 0xc6, 0xa6, 0x1a, 0xb2,
		0xb9, 0x54, 0x2c, 0xaa, 0xa0, 0x59, 0xbc, 0xa6, 0x2a, 0x52, 0x63, 0x79, 0x51, 0x68, 0xbb, 0x2d,
		0xfa, 0x22, 0x57, 0xa3, 0x71, 0x69, 0xab, 0x5c, 0x15, 0xa8, 0xab, 0x5c, 0x15, 0x50, 0xe5, 0x8a,
		0x87, 0x86, 0xa1, 0xca, 0x55, 0xca, 0xdd, 0x7a, 0xf2, 0x30, 0xc1, 0xc4, 0x5e, 0xdd, 0xae, 0xed,
		0xb4, 0x5a, 0xa1, 0x8a, 0x22, 0x4a, 0x9b, 0x1d, 0x1f, 0xf9, 0xc7, 0x84, 0x63, 0x8e, 0xde, 0x01,
		0xad, 0xfa, 0xc3, 0x18, 0x78, 0x71, 0xbb, 0xdf, 0xca, 0x0c, 0xef, 0x76, 0xe1, 0x1d, 0x1f, 0x31,
		0x8c, 0x7d, 0xeb, 0x68, 0xad, 0x42, 0x9f, 0x4d, 0x6c, 0xb3, 0xf6, 0x3f, 0x17, 0xec, 0xe3, 0xfa,
		0xcb, 0xe7, 0xa2, 0x7d, 0x5c, 0x1f, 0xfe, 0xb5, 0x18, 0xff, 0xe7, 0x67, 0xa9, 0xff, 0x52, 0xfa,
		0x5c, 0xb0, 0xcb, 0xa3, 0x9f, 0x96, 0x2a, 0x9f, 0x0b, 0x76, 0xa5, 0x7e, 0xb0, 0xff, 0xe5, 0xcb,
		0xfb, 0x75, 0x3f, 0x73, 0xf0, 0xf3, 0xb0, 0x4f, 0xaf, 0x9b, 0xd4, 0x39, 0x5e, 0xf7, 0xcd, 0xfd,
		0xc5, 0xbf, 0xd8, 0xdf, 0xf9, 0x7f, 0xf6, 0xa5, 0xde, 0xfa, 0xc1, 0x3f, 0xac, 0xdd, 0xd2, 0xc0,
		0x79, 0x61, 0xa4, 0x0a, 0x18, 0x59, 0x05, 0x23, 0xb1, 0x75, 0x3a, 0x76, 0xfb, 0xd4, 0xfe, 0x58,
		0xff, 0x59, 0x7c, 0x57, 0xee, 0x9f, 0x1c, 0xfc, 0xac, 0xf5, 0x5f, 0xff, 0xf0, 0x65, 0xd9, 0xaf,
		0x15, 0xdf, 0xd5, 0xfa, 0x27, 0x2b, 0xfe, 0xa5, 0xda, 0x3f, 0x79, 0xe3, 0x18, 0x95, 0xfe, 0xfe,
		0xc2, 0xaf, 0x0e, 0x7e, 0x5e, 0x5a, 0xf5, 0x81, 0xf2, 0x8a, 0x0f, 0x1c, 0xae, 0xfa, 0xc0, 0xe1,
		0x8a, 0x0f, 0xac, 0x7c, 0xa4, 0xd2, 0x8a, 0x0f, 0x54, 0xfa, 0x2f, 0x0b, 0xbf, 0xbf, 0xbf, 0xfc,
		0x57, 0xab, 0xfd, 0x83, 0x97, 0x55, 0xff, 0x56, 0xeb, 0xbf, 0x9c, 0x1c, 0x1c, 0x00, 0x58, 0x17,
		0x80, 0x15, 0x66, 0x28, 0x6f, 0x86, 0xe9, 0x3f, 0x68, 0xf6, 0xd2, 0xf5, 0x5c, 0x54, 0x8c, 0x84,
		0x31, 0xe8, 0xcb, 0x18, 0xec, 0x65, 0x3c, 0xa7, 0xef, 0x3e, 0x7e, 0xa8, 0x14, 0x0e, 0xab, 0xb9,
		0xcb, 0xb3, 0xdb, 0xdc, 0x7d, 0x57, 0x35, 0xdd, 0xb6, 0xdb, 0x1c, 0x4a, 0xf4, 0xd9, 0x4e, 0x35,
		0xe4, 0x0e, 0xd1, 0x9a, 0xc9, 0x36, 0x5c, 0xbd, 0x5a, 0x69, 0x4f, 0x40, 0x4c, 0x1b, 0x9e, 0x20,
		0x94, 0x36, 0x37, 0x9e, 0x7c, 0x28, 0x8d, 0x20, 0x2e, 0x9a, 0x20, 0x56, 0xb5, 0x27, 0xb8, 0x68,
		0x54, 0x8b, 0x25, 0xbf, 0x48, 0x56, 0xa2, 0x90, 0x5e, 0xb2, 0xb0, 0xe6, 0x66, 0xa6, 0xb1, 0xfe,
		0xc2, 0x6e, 0xb0, 0xa8, 0x96, 0xeb, 0x6b, 0x15, 0xb6, 0x9d, 0xa6, 0xb2, 0x1d, 0x3d, 0x4c, 0x7a,
		0x51, 0xd1, 0xc6, 0x4b, 0x3b, 0xa5, 0xcc, 0xcb, 0x46, 0xdd, 0xd0, 0xe4, 0x92, 0x05, 0x2f, 0x13,
		0xc7, 0x2e, 0x28, 0x62, 0x15, 0x74, 0xb1, 0x09, 0x2a, 0xbf, 0x83, 0x3c, 0xf6, 0x40, 0xee, 0x44,
		0x90, 0xc6, 0x16, 0x64, 0x41, 0x32, 0x69, 0xb0, 0xd1, 0x6a, 0x8e, 0x6d, 0x96, 0x28, 0x89, 0x60,
		0x34, 0x5e, 0xca, 0xb2, 0x08, 0x0a, 0xc8, 0x22, 0x30, 0xb8, 0x61, 0xd9, 0xbd, 0x7f, 0x64, 0x11,
		0xac, 0x1e, 0xe8, 0x59, 0x79, 0x5e, 0x40, 0x5f, 0xda, 0x7f, 0xb6, 0xb0, 0xde, 0xec, 0xf8, 0xc8,
		0x2a, 0x48, 0x0f, 0x30, 0x70, 0x2b, 0x08, 0xc8, 0x2a, 0x10, 0x60, 0xef, 0xe9, 0xcf, 0x2a, 0x20,
		0xbf, 0x74, 0xc8, 0x70, 0xd9, 0x90, 0xe9, 0x92, 0x21, 0x83, 0xc4, 0xc8, 0x79, 0xa9, 0x90, 0xfb,
		0x32, 0xa1, 0xd8, 0xed, 0x31, 0xfe, 0x5b, 0x63, 0x0c, 0x97, 0x06, 0x59, 0x2f, 0x0b, 0x4a, 0x5c,
		0x12, 0xdc, 0xa6, 0xe5, 0x45, 0xdc, 0xe7, 0x0d, 0xcb, 0x80, 0xb8, 0xcf, 0xab, 0xa3, 0x0e, 0x71,
		0x9f, 0x94, 0x3a, 0x72, 0x4b, 0x1d, 0x3a, 0xc4, 0x7d, 0x52, 0x86, 0x27, 0x5c, 0x17, 0xd6, 0xd8,
		0x7b, 0x9f, 0xa7, 0xa3, 0xe9, 0xf5, 0x90, 0x6a, 0xc7, 0x82, 0xf7, 0x37, 0xc7, 0xe3, 0xa2, 0xf2,
		0x93, 0xf1, 0x41, 0xe5, 0x41, 0xe5, 0x41, 0xe5, 0x41, 0xe5, 0x41, 0xe5, 0x41, 0xe5, 0x41, 0xe5,
		0x41, 0xe5, 0x41, 0xe5, 0xe1, 0x7a, 0x67, 0xd2, 0xf5, 0x46, 0xce, 0xd9, 0x66, 0xe9, 0x4c, 0xcb,
		0x52, 0x6b, 0xf2, 0xa3, 0x00, 0x7f, 0x06, 0xcb, 0x25, 0x4c, 0xbe, 0x4e, 0x44, 0x97, 0xee, 0x30,
		0x33, 0x26, 0x52, 0x1e, 0xe4, 0xe8, 0x10, 0x52, 0x1e, 0x90, 0xf2, 0xf0, 0x86, 0x8d, 0x4e, 0x2f,
		0x91, 0x4c, 0x87, 0xa6, 0x55, 0x47, 0x8a, 0x50, 0x47, 0xa0, 0x8e, 0x40, 0x1d, 0xa1, 0xf8, 0xa6,
		0x54, 0x30, 0x32, 0x19, 0x70, 0x74, 0x1f, 0xd7, 0x6e, 0x3b, 0x1d, 0xd7, 0x73, 0x09, 0xbc, 0x87,
		0x95, 0x1b, 0x62, 0x61, 0x26, 0x9e, 0x12, 0xf1, 0x45, 0x94, 0x88, 0x47, 0x89, 0xf8, 0x14, 0x81,
		0x93, 0x08, 0x48, 0x31, 0xc9, 0x05, 0xc4, 0x16, 0x4f, 0x0d, 0x5e, 0xcb, 0x41, 0xec, 0x07, 0x9f,
		0x51, 0x2e, 0x85, 0xb2, 0x1f, 0x5c, 0x96, 0xc9, 0x03, 0x68, 0xec, 0xc0, 0x26, 0x01, 0x70, 0x72,
		0x40, 0x27, 0x05, 0x78, 0xe2, 0xc0, 0x27, 0x0e, 0x80, 0xa2, 0x40, 0xc8, 0x03, 0x88, 0x4c, 0xc0,
		0xc8, 0x0e, 0x90, 0x53, 0xa0, 0x6c, 0xbb, 0xf6, 0xe8, 0xfe, 0x1d, 0xb3, 0x19, 0x4f, 0xa0, 0x72,
		0x3c, 0x23, 0xb3, 0x51, 0xf1, 0x34, 0x08, 0x12, 0x07, 0x4d, 0x49, 0xf0, 0x94, 0x07, 0x51, 0x69,
		0x30, 0x35, 0x06, 0xaa, 0xc6, 0xc0, 0xd5, 0x08, 0xc8, 0xf2, 0x82, 0x2d, 0x33, 0xe8, 0x4e, 0xde,
		0x18, 0x5b, 0x03, 0xa3, 0x95, 0xfb, 0xcd, 0x53, 0x4e, 0x3b, 0x54, 0x6d, 0x89, 0x0d, 0x37, 0xf6,
		0x25, 0x6b, 0x02, 0x73, 0xdd, 0x8e, 0xc2, 0x37, 0xef, 0xdf, 0x8f, 0xe2, 0x29, 0xf9, 0xc9, 0x21,
		0xb0, 0x97, 0x4d, 0xf3, 0xe3, 0x6c, 0xb2, 0x43, 0x74, 0x47, 0xf5, 0xcd, 0x46, 0x47, 0x72, 0x87,
		0xd5, 0x30, 0x77, 0xc1, 0x71, 0x8c, 0xe3, 0x18, 0xc7, 0xf1, 0x76, 0x1f, 0xc7, 0xdc, 0x5c, 0x48,
		0x9e, 0x13, 0x99, 0xe2, 0x46, 0xc2, 0x1c, 0x49, 0x1c, 0x9c, 0x4d, 0x80, 0xb4, 0x39, 0xb0, 0x36,
		0x05, 0xda, 0xc6, 0xc1, 0xdb, 0x38, 0x88, 0x1b, 0x05, 0x73, 0x19, 0x50, 0x17, 0x02, 0x77, 0x79,
		0xce, 0xb5, 0xb0, 0x5f, 0x3b, 0x5d, 0x2f, 0x1a, 0xac, 0x9c, 0xed, 0xb4, 0x5d, 0xc9, 0x5d, 0x3b,
		0x76, 0x8c, 0xcb, 0x82, 0x73, 0x9e, 0xfb, 0xbd, 0x8e, 0x3c, 0x4e, 0x3c, 0x04, 0xf7, 0x3a, 0x74,
		0xfd, 0x27, 0xf1, 0x99, 0xe3, 0xd9, 0x0b, 0x83, 0x45, 0xbe, 0xb8, 0xfd, 0xab, 0x2c, 0x8c, 0x4e,
		0xf1, 0xe4, 0xc5, 0xd1, 0xe4, 0x55, 0x4b, 0x74, 0xee, 0xfe, 0x3b, 0xe9, 0x15, 0xbe, 0x88, 0x41,
		0xd0, 0xc0, 0xf2, 0xc6, 0x2b, 0x2b, 0xe6, 0x59, 0xbc, 0x9e, 0xba, 0x3a, 0xd8, 0xc1, 0xb2, 0x4b,
		0x8b, 0x03, 0x66, 0xb3, 0xa3, 0x9a, 0x27, 0x33, 0xfc, 0xb7, 0xf3, 0xb2, 0x67, 0x8e, 0x9b, 0x5f,
		0x46, 0x81, 0x25, 0xb4, 0x94, 0xef, 0x3c, 0x7a, 0xaa, 0x25, 0x4f, 0xcd, 0xc6, 0x13, 0x0b, 0x99,
		0xe9, 0x99, 0x6a, 0x3b, 0x3d, 0x4f, 0xb3, 0x15, 0x76, 0x5f, 0x3a, 0x69, 0x7c, 0x63, 0x45, 0xe6,
		0x84, 0xaa, 0x83, 0xe1, 0x82, 0xe1, 0x82, 0xe1, 0x82, 0xe1, 0x82, 0xe1, 0x8a, 0xed, 0xd7, 0xc7,
		0x20, 0xf0, 0x94, 0xe3, 0x9b, 0x20, 0xb7, 0x45, 0xf8, 0x90, 0xf0, 0x21, 0xcd, 0xcf, 0xc0, 0x1d,
		0xa2, 0x10, 0x36, 0x0c, 0xe3, 0xb7, 0x23, 0xa7, 0xf7, 0x01, 0xa7, 0x7f, 0xcd, 0xbf, 0x4e, 0xeb,
		0x9f, 0xff, 0xc1, 0x0f, 0x92, 0x2b, 0x95, 0xe6, 0xcc, 0x88, 0x33, 0xf2, 0x4f, 0xd3, 0xe1, 0xfa,
		0xcd, 0xe7, 0x01, 0x45, 0x07, 0xec, 0x37, 0x9f, 0x00, 0x52, 0x71, 0xff, 0x12, 0xe2, 0xfe, 0xd9,
		0x71, 0xb0, 0x11, 0xf7, 0x47, 0xdc, 0xff, 0xf7, 0x52, 0x08, 0xe2, 0xfe, 0x50, 0x45, 0xa0, 0x8a,
		0x40, 0x15, 0x81, 0x2a, 0x02, 0x55, 0x84, 0x7e, 0xbf, 0x22, 0xee, 0xcf, 0xbe, 0xb6, 0x88, 0xfb,
		0x23, 0xee, 0xcf, 0x35, 0x35, 0xe2, 0xfe, 0x19, 0x3f, 0x60, 0x10, 0x96, 0x4e, 0x72, 0x7a, 0x21,
		0x2c, 0x4d, 0xfa, 0x07, 0x61, 0x69, 0x10, 0x30, 0x10, 0x30, 0x10, 0x30, 0x10, 0x30, 0xb9, 0xfd,
		0xba, 0xfd, 0x61, 0x69, 0x08, 0xbc, 0xbf, 0xde, 0xc4, 0x88, 0x9a, 0xfe, 0x3e, 0x6a, 0x4a, 0xd0,
		0x0a, 0xdd, 0x9c, 0x15, 0x65, 0xab, 0xe8, 0xca, 0x3f, 0xd5, 0x0f, 0x01, 0x51, 0xde, 0xba, 0x74,
		0x23, 0x7d, 0xaa, 0x35, 0x73, 0x81, 0x97, 0x2b, 0xd7, 0x3f, 0xf7, 0xd4, 0xe0, 0x8c, 0x8c, 0x78,
		0xfd, 0x3f, 0xeb, 0xca, 0xf9, 0x3e, 0x33, 0x53, 0xf1, 0xa8, 0x5c, 0xae, 0xd6, 0xca, 0xe5, 0x42,
		0xed, 0xb0, 0x56, 0x38, 0xae, 0x54, 0x8a, 0xd5, 0x62, 0x85, 0x71, 0xf2, 0x9b, 0xb0, 0xa5, 0x42,
		0xd5, 0xfa, 0x63, 0xb0, 0x72, 0x7e, 0xcf, 0xf3, 0x24, 0xa6, 0xfa, 0x14, 0xa9, 0x90, 0xad, 0xce,
		0x3b, 0xa7, 0x81, 0x0b, 0x01, 0x6e, 0x26, 0x81, 0xd6, 0x62, 0xcd, 0xef, 0x08, 0x7b, 0x4d, 0x3d,
		0x0a, 0x31, 0x5a, 0xd7, 0xc3, 0x2f, 0x78, 0x31, 0xfa, 0x7e, 0x8d, 0xab, 0xae, 0x17, 0x35, 0xee,
		0xc7, 0xdf, 0xef, 0x76, 0xfc, 0xf5, 0x1a, 0x97, 0xad, 0x6e, 0xe3, 0x62, 0xfc, 0xf8, 0xa7, 0x93,
		0x6f, 0x37, 0xfd, 0x59, 0xe3, 0x74, 0xf8, 0x0d, 0x3e, 0x0e, 0xbf, 0xc0, 0x5e, 0x36, 0x10, 0x3c,
		0xdd, 0x95, 0x09, 0x99, 0xb7, 0x48, 0x36, 0xb6, 0x86, 0x95, 0xd2, 0x5e, 0x13, 0x84, 0x8b, 0xcd,
		0x55, 0x6d, 0x85, 0xb7, 0xba, 0x0a, 0x4a, 0xdb, 0x4a, 0xea, 0x3e, 0x28, 0x6d, 0x9b, 0x4a, 0x5d,
		0x66, 0x47, 0x4b, 0xdb, 0x0e, 0xdb, 0x16, 0x3e, 0x07, 0x5e, 0x4b, 0xbb, 0x8c, 0xb9, 0x4a, 0xaf,
		0xda, 0x24, 0x4e, 0xe6, 0xe3, 0x2d, 0x6d, 0x5b, 0x40, 0x69, 0x5b, 0x83, 0x40, 0x27, 0x05, 0x78,
		0xe2, 0xc0, 0x27, 0x0e, 0x80, 0xa2, 0x40, 0x98, 0x4d, 0x95, 0x85, 0x5d, 0x70, 0xe6, 0x6b, 0xf3,
		0xb8, 0x0a, 0xbd, 0xaa, 0x8c, 0x53, 0xf0, 0xb4, 0x81, 0x7c, 0xfd, 0x47, 0x40, 0x7d, 0xe5, 0x6c,
		0x13, 0xb9, 0x30, 0x19, 0x73, 0xdb, 0xc8, 0x85, 0xf9, 0xa4, 0xfa, 0x0c, 0x2e, 0xda, 0x3a, 0x77,
		0xdf, 0x41, 0x21, 0x58, 0x78, 0xad, 0x28, 0xca, 0x9b, 0x0a, 0x63, 0x1b, 0xca, 0x5d, 0x36, 0x97,
		0x8c, 0x46, 0x2e, 0xea, 0x99, 0x3a, 0x53, 0xd5, 0x77, 0x1d, 0x3a, 0x76, 0xcf, 0x8f, 0xb4, 0xf3,
		0xe8, 0x31, 0x9f, 0xae, 0xa1, 0x6a, 0xab, 0x50, 0xf9, 0xcd, 0xad, 0x38, 0x94, 0xc6, 0xae, 0xc2,
		0xdd, 0xc7, 0x0f, 0x95, 0xc2, 0x61, 0x35, 0x77, 0x79, 0x76, 0x9b, 0xbb, 0xef, 0xaa, 0xa6, 0xdb,
		0x76, 0x9b, 0x43, 0x15, 0x70, 0xbb, 0x2f, 0x5f, 0x4d, 0x17, 0x73, 0x97, 0xee, 0x5f, 0xad, 0x5e,
		0x6d, 0xe0, 0xe1, 0x56, 0xe0, 0xa1, 0x54, 0xa0, 0x4b, 0xfc, 0x62, 0x7e, 0x3f, 0x13, 0x6d, 0xc3,
		0x87, 0xd2, 0x51, 0x1c, 0x5f, 0xf8, 0xe6, 0x78, 0x52, 0x52, 0xd5, 0x64, 0x3e, 0x48, 0x55, 0x90,
		0xaa, 0x20, 0x55, 0x41, 0xaa, 0x82, 0x54, 0x05, 0xa9, 0x0a, 0x52, 0x15, 0xa4, 0x2a, 0x48, 0x55,
		0x30, 0x17, 0x50, 0x33, 0x50, 0x33, 0x50, 0xb3, 0x99, 0xce, 0xfe, 0xb6, 0xdb, 0xe2, 0x27, 0x66,
		0x73, 0xb3, 0x81, 0x96, 0x81, 0x96, 0x81, 0x96, 0x81, 0x96, 0x65, 0x88, 0x96, 0x09, 0xe0, 0xd7,
		0x2c, 0x86, 0x15, 0x8f, 0x70, 0x94, 0x6f, 0xe9, 0x51, 0x8e, 0xa4, 0xf7, 0xb4, 0x25, 0xbd, 0x73,
		0x94, 0x23, 0x4d, 0x67, 0xaa, 0x3b, 0xab, 0xcf, 0x27, 0x81, 0x95, 0x4c, 0x3e, 0x1e, 0xd2, 0xde,
		0x8d, 0xf8, 0x70, 0x48, 0x7b, 0xdf, 0xc2, 0x23, 0x84, 0xcd, 0x27, 0x13, 0xe8, 0x91, 0xcd, 0xd9,
		0x13, 0x7b, 0x49, 0x0f, 0xec, 0x39, 0xa0, 0xdc, 0xa9, 0xe3, 0x67, 0xb0, 0x7c, 0x02, 0xe7, 0x0f,
		0xbd, 0x95, 0xe0, 0xde, 0xd5, 0xf2, 0x03, 0xc8, 0x6d, 0xe3, 0xfc, 0x49, 0xe1, 0xf9, 0xe3, 0xb6,
		0x71, 0xeb, 0x8a, 0x68, 0x60, 0xe6, 0xa6, 0xfc, 0x32, 0xcd, 0xf8, 0x99, 0x8b, 0xf1, 0x6f, 0x9d,
		0x46, 0xca, 0x02, 0x6b, 0x52, 0xf0, 0x26, 0x0e, 0x73, 0xe2, 0x70, 0x27, 0x09, 0x7b, 0x7c, 0x92,
		0x10, 0xa7, 0x32, 0xc7, 0x5d, 0x3a, 0x7f, 0xea, 0x6c, 0xc9, 0x75, 0x2d, 0x99, 0x4e, 0x29, 0xd3,
		0xb9, 0xa4, 0x20, 0xd5, 0xb9, 0xa4, 0xb0, 0x9d, 0x9d, 0x4b, 0x58, 0x41, 0x54, 0x1a, 0x4c, 0x8d,
		0x81, 0xaa, 0x31, 0x70, 0x35, 0x01, 0xb2, 0xbc, 0x60, 0xcb, 0x0c, 0xba, 0xfc, 0x52, 0x88, 0x01,
		0x69, 0x44, 0x52, 0x2a, 0x59, 0x29, 0x9d, 0xe4, 0x63, 0xb3, 0x3b, 0x99, 0x51, 0xf1, 0x5f, 0xfd,
		0x60, 0xf4, 0xbf, 0xe3, 0x02, 0x4b, 0xa8, 0x88, 0xb8, 0xc6, 0x7c, 0xc6, 0x1a, 0x0b, 0x66, 0xb4,
		0x4f, 0x5b, 0xef, 0xd1, 0x80, 0xe3, 0x33, 0x37, 0x2b, 0x7c, 0x1f, 0xf8, 0x3e, 0xf0, 0x7d, 0xe0,
		0xfb, 0xc0, 0xf7, 0x81, 0xef, 0x13, 0xff, 0xe0, 0xf3, 0xd4, 0xf7, 0xf9, 0xaf, 0x66, 0x2f, 0x0c,
		0x95, 0xaf, 0xf7, 0x0f, 0xf2, 0xef, 0xdf, 0x4f, 0xc3, 0x4c, 0xf5, 0xd1, 0x47, 0x66, 0xcf, 0x91,
		0x68, 0xc9, 0xcf, 0x26, 0x23, 0xb7, 0xd4, 0x77, 0xb8, 0x51, 0xbb, 0xee, 0x46, 0x65, 0x4a, 0xef,
		0x3a, 0xff, 0x1e, 0x5f, 0x4d, 0xe0, 0xbb, 0x78, 0x24, 0x27, 0xd5, 0x06, 0x4d, 0x5b, 0x7d, 0xd7,
		0x27, 0x5a, 0x79, 0xaa, 0xa3, 0x74, 0xf8, 0xc3, 0x0e, 0x7c, 0xbb, 0xf9, 0x1c, 0xdf, 0xac, 0x12,
		0x95, 0x6f, 0xe3, 0x3b, 0x17, 0x82, 0xfa, 0x6d, 0xd6, 0xa4, 0xdb, 0x3a, 0x6a, 0x34, 0xd3, 0xe7,
		0xe4, 0xcd, 0xc5, 0xf0, 0x59, 0x1b, 0x86, 0x67, 0xe3, 0xb6, 0x06, 0x6f, 0x63, 0x70, 0x91, 0x86,
		0xe0, 0x62, 0xb1, 0xc7, 0x12, 0x62, 0x8f, 0xa9, 0xa1, 0x8c, 0x88, 0x3d, 0xee, 0xae, 0x2f, 0x86,
		0xd8, 0x23, 0xf4, 0x37, 0xe8, 0x6f, 0xd0, 0xdf, 0xa0, 0xbf, 0x41, 0x7f, 0xdb, 0x01, 0xfd, 0x4d,
		0x2e, 0xf6, 0x88, 0x90, 0xd9, 0xdb, 0x09, 0x0d, 0x42, 0x66, 0x38, 0xb2, 0x71, 0x64, 0xe3, 0xc8,
		0xc6, 0x91, 0x8d, 0x23, 0x7b, 0x3b, 0x42, 0x66, 0x50, 0x17, 0x72, 0x90, 0xc7, 0xe7, 0xe4, 0x71,
		0xc6, 0xce, 0xb0, 0x28, 0x80, 0xb0, 0x6b, 0xd6, 0x64, 0xb1, 0x44, 0x2f, 0x78, 0xda, 0x5e, 0x4e,
		0xfe, 0x76, 0xa7, 0xda, 0xbb, 0x70, 0x81, 0x96, 0x27, 0x0a, 0xc4, 0x1a, 0xfd, 0x61, 0xbf, 0x30,
		0x5b, 0x42, 0xc5, 0x06, 0x39, 0x5a, 0x83, 0x8a, 0x0d, 0x5b, 0x78, 0xe6, 0x31, 0x5e, 0x99, 0xed,
		0x0d, 0x00, 0x3a, 0x92, 0xb8, 0x34, 0x3b, 0x9a, 0x09, 0xa1, 0x6b, 0x53, 0x52, 0x0e, 0x4a, 0x0b,
		0x66, 0x4f, 0xab, 0x41, 0x69, 0x41, 0xd0, 0xcb, 0x65, 0x84, 0x20, 0x76, 0x04, 0xf3, 0xcc, 0xa0,
		0xca, 0xca, 0x0c, 0x3e, 0x8c, 0x9f, 0x7d, 0xe7, 0x9b, 0xaf, 0xa0, 0x4f, 0xf0, 0x66, 0x47, 0x31,
		0xaa, 0xfc, 0xe2, 0x28, 0xc6, 0x51, 0x9c, 0x86, 0xa3, 0x18, 0xcd, 0x57, 0xd6, 0x9a, 0x02, 0xcd,
		0x57, 0x36, 0x99, 0x0c, 0xcd, 0x57, 0xd8, 0xc0, 0x06, 0xcd, 0x57, 0x60, 0x2e, 0xa6, 0xcf, 0x26,
		0xfe, 0xd1, 0xd1, 0x27, 0x78, 0xd5, 0x5c, 0xe8, 0x13, 0x9c, 0x51, 0xaf, 0x7b, 0x99, 0xf7, 0x8d,
		0x3e, 0xc1, 0xe8, 0x13, 0x6c, 0x12, 0x0f, 0xd1, 0xf6, 0x76, 0xa5, 0xf2, 0x82, 0xb6, 0xb7, 0x50,
		0x5e, 0xa0, 0xbc, 0x40, 0x79, 0x81, 0xf2, 0x02, 0xe5, 0x05, 0xca, 0x0b, 0xa8, 0x34, 0x94, 0x17,
		0x98, 0x0b, 0x98, 0xc6, 0x76, 0x33, 0x0d, 0x74, 0x71, 0x05, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00,
		0xcb, 0x48, 0x09, 0x7e, 0xe5, 0x04, 0xba, 0xb8, 0xe2, 0x4e, 0x0e, 0xe9, 0xf8, 0xe9, 0x4d, 0xc1,
		0x4b, 0xed, 0x9d, 0x96, 0xbd, 0x14, 0xd9, 0xc9, 0xe0, 0xec, 0x60, 0xda, 0xdc, 0xd6, 0xa5, 0x1b,
		0xe9, 0x53, 0xad, 0x69, 0xf3, 0xe3, 0x07, 0xf4, 0xfa, 0xdc, 0x53, 0x83, 0xc3, 0x80, 0x98, 0x4f,
		0x0c, 0xd8, 0xd8, 0xcc, 0xc8, 0xc5, 0xa3, 0x72, 0xb9, 0x5a, 0x2b, 0x97, 0x0b, 0xb5, 0xc3, 0x5a,
		0xe1, 0xb8, 0x52, 0x29, 0x56, 0x8b, 0x84, 0xac, 0xc9, 0xba, 0x09, 0x5b, 0x2a, 0x54, 0xad, 0x3f,
		0x06, 0x6f, 0xdf, 0xef, 0x79, 0x1e, 0xc7, 0xd0, 0x9f, 0x22, 0x15, 0x92, 0x12, 0x20, 0x2a, 0xa3,
		0x63, 0x02, 0xa5, 0x54, 0x82, 0x91, 0x45, 0x7a, 0x85, 0x8d, 0x25, 0xe1, 0x97, 0x06, 0x29, 0x93,
		0xe3, 0x5a, 0xb2, 0x11, 0x12, 0x1a, 0x27, 0xb5, 0x51, 0xa6, 0xc8, 0x18, 0x93, 0xad, 0xef, 0xe6,
		0xab, 0x92, 0x60, 0x45, 0x88, 0x6e, 0x6b, 0x92, 0xde, 0xce, 0x24, 0xba, 0xc8, 0x44, 0x76, 0x61,
		0x89, 0x92, 0x2d, 0xd3, 0xb3, 0x62, 0x6a, 0xf6, 0xcb, 0xc6, 0x72, 0xd9, 0xd8, 0x2c, 0x0b, 0x6b,
		0x35, 0x8b, 0x91, 0x54, 0xb7, 0x1d, 0xb9, 0xae, 0x57, 0xf0, 0x5e, 0xa7, 0x20, 0x96, 0xd7, 0xc8,
		0xe5, 0x34, 0x0e, 0xf9, 0x8c, 0x4f, 0x2e, 0xe3, 0x92, 0xc7, 0xd8, 0xe5, 0x30, 0x76, 0xf9, 0x8b,
		0x55, 0xee, 0x4a, 0x17, 0xfd, 0x24, 0x97, 0xaf, 0xf8, 0x82, 0xe2, 0x0c, 0x41, 0x70, 0xa6, 0xa0,
		0x37, 0x83, 0xcc, 0xc3, 0x19, 0xd4, 0xe6, 0x0e, 0x62, 0x8b, 0x45, 0x21, 0xf9, 0xa3, 0x8e, 0x1c,
		0x51, 0x30, 0xce, 0x20, 0xb4, 0x44, 0xd0, 0x79, 0x9b, 0x96, 0x37, 0xa5, 0x92, 0x65, 0x3d, 0x55,
		0x67, 0x06, 0x63, 0xfa, 0x3d, 0x63, 0xba, 0x3d, 0x63, 0x45, 0x1c, 0xc9, 0x74, 0x7a, 0xc9, 0x22,
		0x39, 0xdc, 0xe9, 0xf2, 0x66, 0xea, 0xe4, 0x08, 0xa6, 0xc3, 0x6f, 0x39, 0x9e, 0xec, 0xa5, 0x00,
		0x91, 0xb8, 0xd2, 0xd5, 0x79, 0xd3, 0xd3, 0xc1, 0x64, 0xc1, 0x64, 0xc1, 0x64, 0xc1, 0x64, 0xc1,
		0x64, 0xc1, 0x64, 0xc1, 0x64, 0xc1, 0x64, 0xe1, 0x79, 0x4a, 0x7b, 0x9e, 0x08, 0x75, 0x13, 0x86,
		0xba, 0x09, 0xf2, 0xbd, 0x12, 0x44, 0xb9, 0xf7, 0x04, 0x97, 0x90, 0x6a, 0xe9, 0x4c, 0x2f, 0x99,
		0x95, 0x28, 0x35, 0x80, 0x30, 0x0b, 0x66, 0x33, 0xab, 0x59, 0x7f, 0xcd, 0x37, 0x58, 0x6f, 0xcb,
		0x57, 0xee, 0xd3, 0xf3, 0x63, 0x90, 0xa0, 0x06, 0xec, 0xc4, 0x87, 0x9c, 0x0e, 0xb5, 0xa1, 0xdd,
		0x25, 0xcb, 0x7d, 0x48, 0x4c, 0x10, 0x29, 0x08, 0x21, 0x1d, 0x01, 0xa4, 0x22, 0x7c, 0xe4, 0x04,
		0x8f, 0x9c, 0xd0, 0x91, 0x12, 0x38, 0x59, 0xa4, 0x4c, 0x9a, 0xab, 0x30, 0xd9, 0x33, 0x74, 0x59,
		0x48, 0x93, 0x11, 0x53, 0x96, 0x88, 0x54, 0x40, 0x22, 0x52, 0x0a, 0x54, 0x19, 0x24, 0x22, 0xc9,
		0x6d, 0xee, 0xc9, 0x40, 0x4e, 0x4f, 0x3f, 0x2b, 0x5f, 0x8f, 0x25, 0x78, 0x72, 0xf9, 0xf6, 0xd5,
		0xf8, 0xb4, 0xf2, 0x6d, 0x11, 0xf2, 0x2d, 0xc5, 0xc8, 0x90, 0x6f, 0x25, 0x81, 0x83, 0x96, 0xd4,
		0x53, 0xc9, 0xb7, 0xd4, 0x7d, 0x1c, 0xac, 0xe6, 0x78, 0x4f, 0x31, 0xf5, 0x9b, 0x19, 0x8d, 0x9f,
		0xb1, 0x86, 0x33, 0x05, 0x34, 0x9c, 0xe1, 0x07, 0x1e, 0x31, 0x00, 0x12, 0x03, 0x22, 0x11, 0x40,
		0x62, 0xd2, 0x2e, 0xb3, 0xd2, 0x70, 0x66, 0xde, 0x53, 0xb1, 0xbf, 0xc6, 0x17, 0x03, 0x99, 0x6b,
		0x22, 0x2c, 0x99, 0x13, 0x95, 0x11, 0xa4, 0x81, 0x4e, 0x0e, 0xf0, 0xa4, 0x80, 0x4f, 0x1c, 0x00,
		0xc5, 0x81, 0x50, 0x14, 0x10, 0x79, 0x80, 0x91, 0x09, 0x20, 0x27, 0x6f, 0x46, 0xae, 0x32, 0x42,
		0x18, 0xf4, 0x74, 0x2c, 0x7b, 0x3b, 0x51, 0x14, 0x9b, 0x5b, 0x76, 0xab, 0x23, 0xa0, 0x62, 0xf2,
		0x1a, 0x7f, 0x64, 0x2b, 0x26, 0x17, 0x0f, 0x4b, 0xc5, 0xdc, 0xc3, 0xb3, 0xca, 0x5d, 0x9d, 0x55,
		0x72, 0x57, 0x2a, 0x8a, 0x9c, 0x27, 0x65, 0x9f, 0xb9, 0x4f, 0x2a, 0xd2, 0xb9, 0x53, 0xef, 0x29,
		0x08, 0x5d, 0xfd, 0xdc, 0xf9, 0xe2, 0xa3, 0xb6, 0xf2, 0x8e, 0xd5, 0x56, 0x4e, 0x6c, 0x17, 0xa8,
		0x8d, 0xb6, 0xe2, 0x4f, 0x1d, 0x4d, 0xd7, 0x96, 0xcc, 0xf3, 0xe3, 0x29, 0xd0, 0x76, 0xd0, 0xb4,
		0x9b, 0x41, 0xa7, 0x1b, 0xaa, 0x28, 0x52, 0x2d, 0xdb, 0x53, 0x4e, 0x7b, 0x30, 0x69, 0x7f, 0x87,
		0x8b, 0xc9, 0x29, 0x9f, 0xf5, 0x68, 0x9b, 0x9c, 0x04, 0xa3, 0x79, 0x98, 0x8c, 0xe8, 0x4c, 0xb5,
		0x9d, 0x9e, 0xa7, 0x59, 0x8f, 0x4e, 0x2b, 0x4e, 0x39, 0xe2, 0x81, 0x9d, 0x3a, 0xe8, 0x23, 0xe8,
		0x23, 0xe8, 0x23, 0xe8, 0x63, 0x86, 0xe8, 0xe3, 0x63, 0x10, 0x78, 0xca, 0xf1, 0x25, 0x58, 0x63,
		0x11, 0x1e, 0xcd, 0x96, 0x7a, 0x34, 0x28, 0x42, 0x28, 0x93, 0xcc, 0x38, 0x49, 0xa4, 0x9b, 0xfc,
		0x2d, 0x3f, 0x2f, 0x62, 0xe7, 0x47, 0x81, 0xb9, 0xb4, 0x56, 0x1f, 0x24, 0x2d, 0x47, 0x46, 0x51,
		0xa3, 0x69, 0x25, 0x2e, 0x52, 0xd4, 0x6c, 0x5a, 0x89, 0x84, 0x5c, 0x01, 0xce, 0x12, 0x02, 0x9c,
		0x72, 0x8e, 0x1a, 0x02, 0x9c, 0x5b, 0x78, 0x58, 0x20, 0xc0, 0x09, 0x86, 0x0a, 0x86, 0x0a, 0x86,
		0x0a, 0x86, 0x9a, 0x1a, 0x86, 0x8a, 0x00, 0xe7, 0xef, 0x9e, 0x1a, 0x01, 0xce, 0x84, 0x26, 0x86,
		0x00, 0xe7, 0xef, 0xf0, 0x1d, 0x01, 0x4e, 0x04, 0x38, 0x89, 0xff, 0xd4, 0x11, 0xaf, 0x43, 0xbc,
		0xee, 0xf7, 0x93, 0x20, 0x5e, 0x07, 0x36, 0x04, 0x36, 0x04, 0x36, 0x04, 0x36, 0xb4, 0x25, 0xf1,
		0x3a, 0x84, 0x9f, 0x48, 0xc7, 0x4f, 0x55, 0xf8, 0x09, 0xbd, 0xaf, 0x4c, 0xdb, 0x45, 0xaa, 0xec,
		0x21, 0x1d, 0xed, 0x87, 0xae, 0x47, 0x0f, 0xd7, 0x38, 0x9d, 0x7f, 0xb8, 0x2d, 0xaa, 0x03, 0x4a,
		0x7c, 0xdf, 0x93, 0xe7, 0x9e, 0x27, 0x2e, 0x8e, 0xe3, 0xe2, 0x38, 0x2e, 0x8e, 0x93, 0x1e, 0x22,
		0xe4, 0x17, 0xc7, 0x87, 0x82, 0x81, 0xdd, 0x0a, 0xfe, 0xf6, 0x23, 0x1d, 0x2a, 0xa7, 0x63, 0x07,
		0xbe, 0xdd, 0x52, 0x1d, 0xc7, 0x6f, 0xf1, 0xe5, 0x5a, 0xfc, 0x6a, 0x52, 0xea, 0xf8, 0x2e, 0xa3,
		0x64, 0xc1, 0x21, 0x55, 0xd4, 0x79, 0x32, 0x50, 0x0a, 0xb8, 0x62, 0x8f, 0x0c, 0x94, 0x14, 0x4a,
		0x0d, 0xc8, 0x40, 0xe1, 0x93, 0x12, 0x04, 0x24, 0x04, 0x26, 0xe9, 0x20, 0x6b, 0x94, 0x5c, 0x2c,
		0xa5, 0x37, 0x9d, 0x99, 0x99, 0x9e, 0xf3, 0xa8, 0x3c, 0x3b, 0xea, 0x8e, 0x1a, 0x3a, 0xb3, 0xb9,
		0x0d, 0xaf, 0xe6, 0xc1, 0x49, 0x89, 0x93, 0x12, 0x27, 0x25, 0x4e, 0x4a, 0x42, 0x7b, 0x27, 0x6f,
		0x7e, 0xf0, 0x1a, 0x5d, 0xaa, 0x0c, 0x43, 0xf3, 0x34, 0x43, 0x18, 0xff, 0x61, 0x0c, 0x71, 0x70,
		0x36, 0x47, 0x98, 0x4c, 0xc2, 0xdc, 0x24, 0x61, 0x32, 0x8f, 0x54, 0x35, 0xfd, 0xa9, 0xcd, 0x72,
		0x57, 0xd5, 0x67, 0xda, 0xc6, 0xf3, 0x26, 0xe0, 0x7c, 0x97, 0x33, 0x01, 0xc6, 0x66, 0x0a, 0xbb,
		0x60, 0x06, 0x19, 0x89, 0x0e, 0xd6, 0x41, 0x45, 0x76, 0x98, 0x8a, 0x44, 0x21, 0x2f, 0x05, 0x19,
		0x8e, 0x0f, 0xea, 0x01, 0xea, 0x01, 0xea, 0x01, 0xea, 0x41, 0x68, 0xef, 0x6e, 0xd7, 0x76, 0x5a,
		0xad, 0x01, 0x64, 0x73, 0xea, 0x74, 0xc7, 0x0c, 0x63, 0x8f, 0xde, 0x4d, 0xe6, 0xe8, 0xc7, 0xf4,
		0xcd, 0x7f, 0x2b, 0x33, 0xbe, 0xfb, 0x85, 0x35, 0x38, 0x62, 0x9c, 0xe3, 0xd6, 0xd1, 0x5a, 0x85,
		0x3e, 0xfb, 0x5d, 0x0d, 0x6b, 0xff, 0x73, 0xc1, 0x3e, 0xae, 0xbf, 0x7c, 0x2e, 0xda, 0xc7, 0xf5,
		0xe1, 0x5f, 0x8b, 0xf1, 0x7f, 0x7e, 0x96, 0xfa, 0x2f, 0xa5, 0xcf, 0x05, 0xbb, 0x3c, 0xfa, 0x69,
		0xa9, 0xf2, 0xb9, 0x60, 0x57, 0xea, 0x07, 0xfb, 0x5f, 0xbe, 0xbc, 0x5f, 0xf7, 0x33, 0x07, 0x3f,
		0x0f, 0xfb, 0x7c, 0x09, 0x87, 0x75, 0xce, 0x65, 0xb8, 0xb9, 0xbf, 0xf8, 0x97, 0xd8, 0x5a, 0xfc,
		0x67, 0x5f, 0x6a, 0x35, 0x0e, 0xfe, 0x61, 0xa1, 0xfe, 0x99, 0x1c, 0x2c, 0x55, 0x01, 0x4b, 0xeb,
		0xc2, 0x52, 0x6c, 0xd5, 0x8e, 0xdd, 0x3e, 0xb5, 0x3f, 0xd6, 0x7f, 0x16, 0xdf, 0x95, 0xfb, 0x27,
		0x07, 0x3f, 0x6b, 0xfd, 0xd7, 0x3f, 0x7c, 0x59, 0xf6, 0x6b, 0xc5, 0x77, 0xb5, 0xfe, 0xc9, 0x8a,
		0x7f, 0xa9, 0xf6, 0x4f, 0xde, 0x38, 0x46, 0xa5, 0xbf, 0xbf, 0xf0, 0xab, 0x83, 0x9f, 0x97, 0x56,
		0x7d, 0xa0, 0xbc, 0xe2, 0x03, 0x87, 0xab, 0x3e, 0x70, 0xb8, 0xe2, 0x03, 0x2b, 0x1f, 0xa9, 0xb4,
		0xe2, 0x03, 0x95, 0xfe, 0xcb, 0xc2, 0xef, 0xef, 0x2f, 0xff, 0xd5, 0x6a, 0xff, 0xe0, 0x65, 0xd5,
		0xbf, 0xd5, 0xfa, 0x2f, 0x27, 0x07, 0x07, 0x00, 0xea, 0x37, 0x03, 0x35, 0xcc, 0x53, 0xde, 0x3c,
		0xb3, 0x77, 0x70, 0x41, 0x18, 0xdb, 0x79, 0x61, 0x0c, 0xf9, 0xeb, 0xec, 0xf9, 0xeb, 0x94, 0xf5,
		0xb3, 0xd2, 0x91, 0x1a, 0xfe, 0xac, 0x3c, 0x2f, 0xb0, 0x9d, 0xd6, 0xff, 0x75, 0x9a, 0xca, 0x6f,
		0xba, 0x2a, 0xa2, 0xcf, 0x12, 0x5f, 0x9c, 0x22, 0xe5, 0x09, 0xe3, 0x25, 0x24, 0x8c, 0x67, 0x48,
		0xe0, 0x44, 0xc2, 0x78, 0x8a, 0x13, 0xc6, 0xe7, 0xf7, 0xfe, 0x0f, 0xbe, 0x50, 0xcb, 0xeb, 0x89,
		0x50, 0x9a, 0x0f, 0x31, 0x17, 0x63, 0x90, 0x24, 0x06, 0x4d, 0x22, 0x10, 0xc5, 0xc3, 0x31, 0x32,
		0x53, 0x9a, 0x6f, 0x88, 0x2c, 0xcf, 0x81, 0xd7, 0xd2, 0x6e, 0x47, 0xa0, 0x28, 0xc7, 0xab, 0xf9,
		0x78, 0x8b, 0x50, 0x14, 0x51, 0x84, 0xc2, 0x20, 0xd0, 0x49, 0x01, 0x9e, 0x38, 0xf0, 0x89, 0x03,
		0xa0, 0x28, 0x10, 0xf2, 0x89, 0x2e, 0x39, 0xc6, 0x22, 0x14, 0x5c, 0x00, 0x39, 0xa5, 0xe6, 0x2c,
		0x25, 0x97, 0x57, 0xee, 0x4a, 0x8e, 0x12, 0xcc, 0xc2, 0x30, 0xc9, 0xee, 0x07, 0x9a, 0x80, 0x4d,
		0x79, 0xf8, 0x94, 0x86, 0x51, 0x63, 0x70, 0x6a, 0x0c, 0x56, 0x8d, 0xc0, 0x2b, 0x2f, 0xcc, 0x32,
		0xc3, 0xad, 0x18, 0xec, 0x4e, 0x26, 0x1a, 0x71, 0x5f, 0x2d, 0x67, 0xfe, 0x93, 0x42, 0xd2, 0xe3,
		0x99, 0x85, 0x8c, 0x90, 0xb7, 0x80, 0x9a, 0xb8, 0x2f, 0x6b, 0x12, 0xa4, 0xcd, 0x81, 0xb5, 0x29,
		0xd0, 0x36, 0x0e, 0xde, 0xc6, 0x41, 0xdc, 0x28, 0x98, 0xcb, 0x80, 0xba, 0x10, 0xb8, 0x4f, 0xde,
		0x24, 0x7b, 0x81, 0xb7, 0x95, 0xfb, 0x95, 0xed, 0x0e, 0xda, 0xef, 0xd0, 0xb7, 0x2a, 0x38, 0x25,
		0xef, 0x9d, 0xb5, 0x55, 0x7f, 0x64, 0xf1, 0x28, 0x27, 0x75, 0xc7, 0x6d, 0xe5, 0xe4, 0x42, 0x77,
		0xdf, 0x56, 0xce, 0x2f, 0x7d, 0x19, 0x6a, 0xf5, 0xde, 0x92, 0xba, 0x24, 0x65, 0x18, 0xb6, 0xe6,
		0x4d, 0xcf, 0xf9, 0x6e, 0xde, 0xf4, 0x04, 0xee, 0xdc, 0xc1, 0xfc, 0x52, 0x72, 0x36, 0xcb, 0xcf,
		0x56, 0xdf, 0xdb, 0x8e, 0xef, 0x23, 0x00, 0x0f, 0xa3, 0x28, 0x84, 0xfa, 0xde, 0x75, 0x43, 0xfe,
		0x2e, 0x87, 0x4b, 0x3d, 0x9b, 0x85, 0x27, 0x00, 0xbb, 0x04, 0xbb, 0x04, 0xbb, 0x04, 0xbb, 0x04,
		0xbb, 0x14, 0xdb, 0xaf, 0xda, 0xed, 0x28, 0xed, 0x36, 0xbf, 0x46, 0xd5, 0xb2, 0x01, 0x8a, 0x79,
		0x24, 0x38, 0xe5, 0x27, 0x7f, 0xe8, 0xf4, 0x59, 0xbe, 0xe3, 0x07, 0x91, 0x6a, 0x06, 0x7e, 0x2b,
		0xb2, 0x40, 0x71, 0x41, 0x71, 0xc1, 0x31, 0x40, 0x71, 0x29, 0x4d, 0xaf, 0x78, 0x54, 0x2e, 0x57,
		0x6b, 0xe5, 0x72, 0xa1, 0x76, 0x58, 0x2b, 0x1c, 0x57, 0x2a, 0xc5, 0x6a, 0x11, 0x8c, 0x17, 0x8c,
		0x17, 0x8c, 0xd7, 0x34, 0xe3, 0xf5, 0xd5, 0x53, 0xa0, 0x5d, 0x47, 0xab, 0x96, 0x3c, 0xd7, 0x9d,
		0x99, 0x1b, 0x2c, 0x17, 0x2c, 0x17, 0x2c, 0x17, 0x2c, 0x17, 0x2c, 0x57, 0x6c, 0xbf, 0x22, 0x86,
		0x0a, 0x82, 0x09, 0x82, 0x09, 0x82, 0xb9, 0x1d, 0x04, 0x13, 0x31, 0x54, 0x30, 0x4a, 0x30, 0xca,
		0x74, 0x30, 0xca, 0xef, 0xda, 0x8e, 0xc3, 0x98, 0x26, 0x18, 0xe5, 0x64, 0x6e, 0x30, 0x4a, 0x30,
		0x4a, 0x30, 0x4a, 0x30, 0x4a, 0x30, 0x4a, 0xb1, 0xfd, 0x8a, 0xb8, 0x29, 0x68, 0x2d, 0x68, 0x2d,
		0x78, 0x05, 0x68, 0x2d, 0x99, 0xe9, 0x21, 0x6e, 0x0a, 0x96, 0x0b, 0x96, 0x9b, 0xaa, 0x19, 0xb8,
		0xaf, 0xce, 0x32, 0x17, 0x79, 0x5c, 0x98, 0xcf, 0x6c, 0x6d, 0xc1, 0x85, 0x32, 0x79, 0xaf, 0x7e,
		0xf2, 0x23, 0x3f, 0x5f, 0x19, 0x26, 0x3f, 0x2c, 0x80, 0xb0, 0x97, 0x4d, 0xfb, 0xc9, 0x56, 0xed,
		0x0c, 0x21, 0x4b, 0xcc, 0x98, 0x05, 0x72, 0x56, 0xc4, 0x89, 0x74, 0xd8, 0x6b, 0x6a, 0x7f, 0xc4,
		0xa7, 0xae, 0x87, 0x5f, 0xed, 0x62, 0xf4, 0xcd, 0x1a, 0x57, 0x5d, 0x2f, 0x6a, 0xdc, 0x8f, 0xbf,
		0xd9, 0xed, 0xf8, 0x8b, 0x35, 0x2e, 0x5b, 0xdd, 0xc6, 0xf5, 0xe8, 0xeb, 0x34, 0xfe, 0x7b, 0xf0,
		0xb0, 0xa7, 0xe3, 0x67, 0x1f, 0xfe, 0xcf, 0xff, 0x1e, 0x3f, 0x7a, 0x46, 0xaa, 0xf0, 0x32, 0x18,
		0xb4, 0xe5, 0xfa, 0x5a, 0x85, 0x6d, 0xa7, 0xa9, 0xec, 0x50, 0xb5, 0xf9, 0xeb, 0x59, 0xcd, 0x4f,
		0x87, 0x72, 0x56, 0x4b, 0x27, 0x10, 0x2e, 0x67, 0xe5, 0xb6, 0x51, 0xcd, 0x6a, 0x83, 0x09, 0x4d,
		0x57, 0xb3, 0x72, 0xdb, 0x28, 0x66, 0x35, 0x7c, 0x31, 0x28, 0x66, 0x95, 0x3a, 0x90, 0x5c, 0x04,
		0xcb, 0x2d, 0x2d, 0x66, 0xc5, 0x0a, 0x9e, 0xd2, 0x20, 0x6a, 0x0c, 0x4c, 0x8d, 0x81, 0xaa, 0x09,
		0x70, 0xdd, 0x0e, 0x3e, 0x2e, 0x56, 0xca, 0x6a, 0xe2, 0x32, 0xca, 0xc7, 0xcd, 0xa7, 0x53, 0x23,
		0x6c, 0x9e, 0x35, 0x90, 0x36, 0x06, 0xd6, 0xa6, 0x40, 0xdb, 0x38, 0x78, 0x1b, 0x07, 0x71, 0x93,
		0x60, 0x2e, 0x03, 0xea, 0x42, 0xe0, 0x3e, 0x79, 0x91, 0xe6, 0x82, 0xe6, 0x9e, 0x72, 0xda, 0x7c,
		0x12, 0xc1, 0x2f, 0x3d, 0xe2, 0x9a, 0xe0, 0x9c, 0xb7, 0x13, 0x75, 0x6f, 0x60, 0xa6, 0x27, 0x93,
		0x03, 0x27, 0x7a, 0xfd, 0x83, 0xd1, 0xff, 0x8e, 0x35, 0x30, 0x64, 0xdd, 0xbd, 0x9d, 0xb9, 0xf5,
		0x1e, 0x0d, 0xfa, 0x0f, 0x73, 0xb3, 0xc3, 0x85, 0x80, 0x0b, 0x01, 0x17, 0x02, 0x2e, 0x04, 0x5c,
		0x08, 0xb8, 0x10, 0x46, 0x5c, 0x88, 0xcf, 0x53, 0x17, 0xe2, 0xbf, 0x9a, 0xbd, 0x30, 0x54, 0xbe,
		0xde, 0x3f, 0xc8, 0xbf, 0x7f, 0x9f, 0x9f, 0xfc, 0x46, 0x7d, 0xf4, 0x91, 0xd9, 0x73, 0x2b, 0x5a,
		0xf2, 0xb3, 0xc9, 0xc8, 0x2d, 0xf5, 0xdd, 0x42, 0x76, 0x44, 0x0a, 0xd4, 0x18, 0x64, 0x47, 0xcc,
		0xc7, 0xa6, 0xe7, 0xe2, 0x8c, 0x48, 0x8e, 0x10, 0x33, 0x48, 0x24, 0x47, 0x2c, 0x33, 0xc0, 0x6c,
		0xe5, 0x46, 0x5c, 0x8c, 0x1f, 0xfd, 0x4e, 0xb5, 0x77, 0x39, 0x35, 0xc2, 0x0b, 0x9a, 0x8e, 0x37,
		0x69, 0xa3, 0xcf, 0x9e, 0x1a, 0x31, 0x3f, 0x1d, 0x6f, 0x6a, 0x44, 0x81, 0x3b, 0x35, 0xa2, 0x84,
		0x4e, 0x5f, 0xe9, 0xa1, 0x77, 0xe8, 0xf4, 0xb5, 0xc3, 0x07, 0x32, 0x3b, 0xff, 0x12, 0xe4, 0x5b,
		0x12, 0xfc, 0x6a, 0xc2, 0xa7, 0xde, 0xbf, 0x1f, 0xfa, 0x8d, 0xf9, 0x79, 0x60, 0xde, 0xe1, 0x03,
		0x31, 0x54, 0x9d, 0x40, 0x2b, 0xb9, 0x13, 0xf1, 0xd5, 0x7c, 0x38, 0x12, 0x71, 0x24, 0xe2, 0x48,
		0xc4, 0x91, 0x88, 0x23, 0xd1, 0xf8, 0x91, 0xf8, 0x0a, 0x99, 0x77, 0xf8, 0x4c, 0xe4, 0x4d, 0x0d,
		0x15, 0x49, 0x09, 0x45, 0xbe, 0x3c, 0x4e, 0x40, 0x9c, 0x80, 0x3b, 0x75, 0x02, 0xb2, 0x67, 0xcc,
		0x4f, 0x84, 0x50, 0x5b, 0x4b, 0xc4, 0xff, 0x5e, 0x77, 0x1f, 0x1d, 0xcf, 0x2b, 0x93, 0x43, 0x5f,
		0x90, 0xca, 0xa1, 0x2f, 0xa0, 0x21, 0x74, 0xfa, 0x81, 0xd5, 0x18, 0xc0, 0x1a, 0x03, 0x5a, 0x23,
		0x80, 0xcb, 0x0b, 0xbc, 0xcc, 0x00, 0x2c, 0x47, 0x45, 0x16, 0xf6, 0x5b, 0xa7, 0xeb, 0x45, 0x83,
		0x95, 0xb1, 0x45, 0xa1, 0x72, 0xce, 0xcf, 0x2c, 0x0b, 0xcc, 0x75, 0xee, 0xf7, 0x3a, 0x72, 0x5b,
		0xfd, 0x21, 0xb8, 0xd7, 0xa1, 0xeb, 0x3f, 0xc9, 0x26, 0xba, 0x14, 0x06, 0xeb, 0x79, 0x79, 0x71,
		0xfd, 0x4f, 0xc9, 0x14, 0x97, 0xe2, 0x60, 0xd2, 0x87, 0xd3, 0xbb, 0x3f, 0xcf, 0x1f, 0xce, 0xcf,
		0xac, 0xed, 0x4a, 0x55, 0x0a, 0x2e, 0x04, 0x3b, 0xa6, 0xc7, 0x53, 0xc6, 0xab, 0x27, 0x5a, 0x33,
		0x66, 0xba, 0x76, 0x27, 0xb9, 0x22, 0x72, 0x77, 0x8c, 0x8e, 0xce, 0x68, 0xd8, 0xa3, 0x8e, 0x89,
		0xad, 0x30, 0xe8, 0x76, 0x05, 0x9a, 0x58, 0xbc, 0x6a, 0xd4, 0x38, 0x9e, 0x16, 0xfe, 0x37, 0xfc,
		0x6f, 0xf8, 0xdf, 0xf0, 0xbf, 0xe1, 0x7f, 0x4f, 0xf6, 0x5b, 0x33, 0xe8, 0xf9, 0x5a, 0x85, 0x22,
		0xb5, 0x40, 0x05, 0x6b, 0x80, 0x0a, 0xd7, 0xde, 0x14, 0x74, 0xd1, 0x4c, 0xd4, 0xda, 0x34, 0x55,
		0x63, 0xd3, 0x78, 0x35, 0x43, 0x73, 0x55, 0x0c, 0x05, 0x6b, 0x69, 0x1a, 0xa9, 0xa1, 0x99, 0xa2,
		0xda, 0x99, 0xbb, 0x6c, 0x65, 0x5b, 0xc2, 0xb8, 0xea, 0x60, 0x5c, 0x2b, 0x18, 0x57, 0xa8, 0x9a,
		0xca, 0xfd, 0x26, 0x4f, 0xb9, 0x26, 0xf3, 0x82, 0x73, 0x81, 0x73, 0x81, 0x73, 0x81, 0x73, 0x81,
		0x73, 0x81, 0x73, 0x81, 0x73, 0x81, 0x73, 0x81, 0x73, 0x81, 0x73, 0x81, 0x73, 0x81, 0x73, 0x6d,
		0x25, 0xe7, 0xf2, 0x9c, 0x48, 0xdb, 0x4d, 0x4f, 0x39, 0xa1, 0x1c, 0xdf, 0x9a, 0x99, 0x13, 0x5c,
		0x0b, 0x5c, 0x0b, 0x5c, 0x0b, 0x5c, 0x0b, 0x5c, 0xcb, 0x50, 0xb7, 0x3b, 0x49, 0xb6, 0x65, 0xa8,
		0xbb, 0x1d, 0x58, 0x1e, 0x58, 0x1e, 0x58, 0x1e, 0x58, 0x1e, 0xac, 0x0c, 0x2c, 0x6f, 0x57, 0x59,
		0x9e, 0x48, 0x25, 0x9e, 0x45, 0xa2, 0x27, 0x50, 0x91, 0x07, 0x5c, 0x0f, 0x5c, 0x0f, 0x5c, 0x0f,
		0x5c, 0x2f, 0x93, 0x5c, 0xcf, 0xed, 0x0a, 0xa1, 0xe3, 0x2c, 0x42, 0x16, 0x8f, 0x05, 0xe6, 0x1a,
		0xbd, 0xcb, 0xad, 0xa3, 0x5c, 0xd3, 0x95, 0xfb, 0x56, 0x16, 0x5c, 0xbb, 0x85, 0x35, 0x3c, 0x92,
		0x2d, 0x90, 0xab, 0x55, 0xe8, 0x8b, 0xf7, 0x85, 0xb7, 0xf6, 0x3f, 0x17, 0xec, 0xe3, 0xfa, 0xcb,
		0xe7, 0xa2, 0x7d, 0x5c, 0x1f, 0xfe, 0xb5, 0x18, 0xff, 0xe7, 0x67, 0xa9, 0xff, 0x52, 0xfa, 0x5c,
		0xb0, 0xcb, 0xa3, 0x9f, 0x96, 0x2a, 0x9f, 0x0b, 0x76, 0xa5, 0x7e, 0xb0, 0xff, 0xe5, 0xcb, 0xfb,
		0x75, 0x3f, 0x73, 0xf0, 0xf3, 0xb0, 0x2f, 0x57, 0x9a, 0xba, 0x2e, 0xb9, 0x6c, 0x37, 0xf7, 0x17,
		0xff, 0x32, 0xb6, 0x76, 0xff, 0xd9, 0x97, 0x5a, 0xbd, 0x83, 0x7f, 0x58, 0xdb, 0xd6, 0xca, 0xfa,
		0xdd, 0x16, 0xc3, 0x66, 0x15, 0xb0, 0xc9, 0x0d, 0x9b, 0xf1, 0x2e, 0x72, 0xec, 0xf6, 0xa9, 0xfd,
		0xb1, 0xfe, 0xb3, 0xf8, 0xae, 0xdc, 0x3f, 0x39, 0xf8, 0x59, 0xeb, 0xbf, 0xfe, 0xe1, 0xcb, 0xb2,
		0x5f, 0x2b, 0xbe, 0xab, 0xf5, 0x4f, 0x56, 0xfc, 0x4b, 0xb5, 0x7f, 0xf2, 0xc6, 0x31, 0x2a, 0xfd,
		0xfd, 0x85, 0x5f, 0x1d, 0xfc, 0xbc, 0xb4, 0xea, 0x03, 0xe5, 0x15, 0x1f, 0x38, 0x5c, 0xf5, 0x81,
		0xc3, 0x15, 0x1f, 0x58, 0xf9, 0x48, 0xa5, 0x15, 0x1f, 0xa8, 0xf4, 0x5f, 0x16, 0x7e, 0x7f, 0x7f,
		0xf9, 0xaf, 0x56, 0xfb, 0x07, 0x2f, 0xab, 0xfe, 0xad, 0xd6, 0x7f, 0x39, 0x39, 0x38, 0xc0, 0x41,
		0xc2, 0x76, 0x90, 0xc0, 0x9c, 0xe5, 0xcd, 0x79, 0xfb, 0x0e, 0x56, 0xa8, 0x8f, 0x06, 0xd4, 0x47,
		0xa1, 0xb2, 0xa7, 0x0b, 0xce, 0x86, 0x48, 0xf9, 0x53, 0xe8, 0x8f, 0xd0, 0x1f, 0xa1, 0x3f, 0x42,
		0x7f, 0x84, 0xfe, 0x08, 0xfd, 0x11, 0xfa, 0x23, 0xf4, 0x47, 0xe8, 0x8f, 0xd0, 0x1f, 0xa1, 0x3f,
		0x42, 0x7f, 0x84, 0xfe, 0x08, 0xc1, 0x06, 0xfa, 0x23, 0xf4, 0x47, 0x98, 0x33, 0xf4, 0x47, 0xe8,
		0x8f, 0x86, 0x46, 0x46, 0x93, 0x4e, 0xde, 0x26, 0x9d, 0x8c, 0x7d, 0x61, 0x19, 0xba, 0x97, 0xec,
		0xa5, 0xd8, 0xb4, 0xac, 0x7f, 0xaa, 0x1f, 0x8b, 0x9a, 0x75, 0x8e, 0x33, 0x83, 0xd6, 0xba, 0x74,
		0x23, 0x7d, 0xaa, 0x35, 0xcf, 0xcd, 0x4f, 0xeb, 0xca, 0xf5, 0xcf, 0x3d, 0xd5, 0x51, 0x3e, 0x57,
		0x1a, 0xbd, 0x75, 0xe5, 0x7c, 0x9f, 0x99, 0x41, 0xe6, 0xf2, 0x80, 0x75, 0x13, 0xb6, 0x54, 0xa8,
		0x5a, 0x7f, 0x0c, 0x56, 0xcb, 0xef, 0x79, 0x1e, 0xe7, 0x14, 0x9f, 0x22, 0x15, 0xb2, 0xdc, 0x03,
		0xa0, 0x36, 0x5e, 0x66, 0x3c, 0x4c, 0x3b, 0x0e, 0x5a, 0x2c, 0x7d, 0x91, 0x88, 0xdb, 0x12, 0xd3,
		0xc2, 0x34, 0x1d, 0x98, 0xd2, 0x8c, 0x44, 0x64, 0xd1, 0x5c, 0x96, 0x9c, 0x36, 0x0b, 0xa6, 0x31,
		0x86, 0xe4, 0x4b, 0x47, 0xb0, 0x6c, 0x96, 0xe7, 0x3c, 0x2a, 0xcf, 0x8e, 0xba, 0x4e, 0x53, 0xd9,
		0x2e, 0x5d, 0xd9, 0xb8, 0x99, 0x72, 0x05, 0x73, 0xe3, 0x13, 0x19, 0x1a, 0x6d, 0xb8, 0x98, 0x3c,
		0x2c, 0xcc, 0x11, 0xfe, 0xe5, 0x0b, 0xf3, 0x72, 0x85, 0x73, 0xd9, 0xc3, 0xb6, 0xec, 0xe1, 0x59,
		0xd6, 0x30, 0x6c, 0xba, 0xa0, 0x9b, 0x3c, 0x7c, 0xca, 0xd8, 0x85, 0x92, 0xa3, 0xeb, 0xe4, 0x6c,
		0x97, 0xc9, 0xe1, 0xd9, 0x92, 0x7f, 0x05, 0x5d, 0xdb, 0x04, 0xfa, 0x51, 0xc8, 0x03, 0xf6, 0xc3,
		0x71, 0x01, 0xf2, 0x00, 0x79, 0x80, 0x3c, 0x40, 0x3e, 0x13, 0x20, 0x3f, 0x84, 0xac, 0x2d, 0x02,
		0x77, 0xda, 0x9e, 0xc0, 0x2c, 0x3d, 0x80, 0x89, 0x7b, 0xfe, 0x92, 0x77, 0xb9, 0x07, 0xb4, 0x03,
		0xda, 0x33, 0x06, 0xed, 0xd4, 0x3d, 0x75, 0x2d, 0xe5, 0x3b, 0x8f, 0x9e, 0xb2, 0x5b, 0xc1, 0xdf,
		0x7e, 0xa4, 0x43, 0xe5, 0x74, 0xec, 0xc0, 0xb7, 0x5b, 0xaa, 0xe3, 0xf8, 0xf4, 0xc5, 0xe5, 0x27,
		0x7b, 0xe3, 0x57, 0x93, 0x12, 0x9b, 0xc6, 0x99, 0x6a, 0x3b, 0x3d, 0x4f, 0xb3, 0x84, 0xc4, 0xad,
		0x58, 0x74, 0xa6, 0xd5, 0x0c, 0xeb, 0xd4, 0x21, 0x13, 0x96, 0x8c, 0x7b, 0xb6, 0x0c, 0x7b, 0xce,
		0x8c, 0x7a, 0xfe, 0x0c, 0x7a, 0xee, 0x8c, 0x79, 0xb1, 0x0c, 0x79, 0xb1, 0x8c, 0x78, 0x91, 0x0c,
		0xf8, 0x74, 0x07, 0x35, 0xd9, 0x32, 0xda, 0x27, 0xf6, 0xfe, 0x18, 0x04, 0x9e, 0x72, 0x7c, 0x0e,
		0x83, 0x1f, 0x7b, 0x78, 0xc5, 0xb4, 0x06, 0x4e, 0x08, 0xfd, 0x2f, 0x26, 0x0d, 0x7d, 0x91, 0x64,
		0x71, 0x68, 0xe9, 0x38, 0x10, 0x70, 0x20, 0xe0, 0x40, 0xc0, 0x81, 0x10, 0xdb, 0x7b, 0xcf, 0xf5,
		0x75, 0xb1, 0xca, 0x78, 0x1e, 0x54, 0x19, 0x86, 0xe6, 0xad, 0x50, 0xcb, 0x98, 0xa0, 0x26, 0x51,
		0x81, 0x56, 0xaa, 0xe2, 0xac, 0x78, 0xed, 0x4f, 0xb9, 0x5a, 0x9f, 0x9c, 0xb7, 0xbb, 0x25, 0x2a,
		0xc6, 0x4e, 0x4c, 0xa0, 0x5a, 0xa9, 0x1c, 0x56, 0x60, 0x06, 0xa9, 0x38, 0x1b, 0xf8, 0x46, 0xad,
		0xef, 0x82, 0xc7, 0x4d, 0x1b, 0xc0, 0x5c, 0xf4, 0xb4, 0x29, 0x03, 0x99, 0xf0, 0xb0, 0xe1, 0x61,
		0xc3, 0xc3, 0x86, 0x87, 0xcd, 0x5f, 0x34, 0x80, 0xb3, 0x48, 0x00, 0x6f, 0x51, 0x00, 0x46, 0x2f,
		0x5b, 0xf8, 0xd2, 0xbf, 0xc4, 0x6d, 0x55, 0xb1, 0xdb, 0xa9, 0x5b, 0x70, 0x89, 0xbf, 0xce, 0xb9,
		0x0c, 0x92, 0x77, 0x2b, 0xb7, 0xe4, 0x52, 0x7e, 0x3d, 0x4b, 0x77, 0xd5, 0x64, 0x60, 0xa9, 0x0a,
		0x58, 0x5a, 0x17, 0x96, 0x70, 0xab, 0x78, 0xeb, 0x2e, 0xc9, 0x6f, 0x1d, 0x50, 0xc3, 0x3c, 0xb7,
		0xea, 0xd2, 0x7b, 0x1d, 0xfa, 0x4f, 0x6a, 0xf4, 0x1f, 0x5f, 0x3d, 0x05, 0xda, 0x75, 0xb4, 0x6a,
		0xd9, 0xc3, 0xa0, 0xa8, 0xd3, 0xfa, 0xa6, 0x42, 0xed, 0x46, 0xf1, 0x85, 0x56, 0xbb, 0x13, 0xb4,
		0x14, 0x9f, 0x38, 0xf4, 0x96, 0xc9, 0xa1, 0x1c, 0x41, 0x39, 0x82, 0x72, 0x04, 0xe5, 0x88, 0x52,
		0x93, 0x96, 0xc1, 0x9a, 0x39, 0xb2, 0x50, 0x66, 0x18, 0xfb, 0xdc, 0xef, 0x75, 0xf8, 0xf6, 0xd6,
		0x43, 0x70, 0xaf, 0x43, 0xd7, 0x7f, 0xe2, 0x2d, 0x2d, 0x52, 0x18, 0x2c, 0xc8, 0xd9, 0xcd, 0xff,
		0xb9, 0xbe, 0x7f, 0xb8, 0x3b, 0x3f, 0xbd, 0x6a, 0x7c, 0xba, 0xbe, 0xbf, 0xb9, 0xbc, 0xf8, 0x70,
		0xf1, 0x70, 0x7e, 0xc6, 0xc9, 0xe1, 0x8a, 0xaf, 0xa6, 0xbd, 0xb9, 0x6e, 0x9c, 0x9d, 0x5f, 0x9d,
		0x5e, 0x9f, 0x59, 0x99, 0x2a, 0x00, 0xf3, 0x10, 0x5c, 0xc4, 0x50, 0xc1, 0xb8, 0x40, 0x4b, 0x5f,
		0x12, 0xd9, 0x85, 0x83, 0xdf, 0x4d, 0x39, 0x6b, 0x0e, 0x27, 0xb9, 0xc2, 0x6e, 0x96, 0x78, 0x49,
		0xa5, 0xe3, 0xd8, 0x55, 0x2a, 0x34, 0xe0, 0x32, 0xfe, 0x7a, 0x5a, 0x38, 0x8b, 0x70, 0x16, 0xe1,
		0x2c, 0xc2, 0x59, 0x84, 0xb3, 0x08, 0x67, 0x11, 0xce, 0x22, 0x9c, 0x45, 0x38, 0x8b, 0xe9, 0x70,
		0x16, 0x23, 0x15, 0x45, 0x6e, 0xe0, 0xdb, 0xb4, 0x37, 0xaa, 0x17, 0xb0, 0x7a, 0x7e, 0x1a, 0x38,
		0x83, 0x70, 0x06, 0xe1, 0x0c, 0xc2, 0x19, 0x24, 0xb4, 0x77, 0xe5, 0xf7, 0x3a, 0x2a, 0x1c, 0xd6,
		0xe5, 0x83, 0xff, 0x67, 0xc6, 0xff, 0xbb, 0xbe, 0xb9, 0x6e, 0x9c, 0xff, 0xeb, 0xe2, 0xfe, 0xe1,
		0xfc, 0xfa, 0x81, 0xdd, 0xeb, 0xbb, 0xb8, 0xbe, 0x78, 0xb8, 0x38, 0xbd, 0xbc, 0xf8, 0xff, 0x78,
		0x3d, 0xcc, 0xd2, 0x60, 0xae, 0x9b, 0xdb, 0xf3, 0xeb, 0xbb, 0xf3, 0x0f, 0x9c, 0xf3, 0x1c, 0x8e,
		0xe7, 0xb9, 0x67, 0x7e, 0x79, 0xe5, 0xd1, 0x44, 0x77, 0xa7, 0x0f, 0x17, 0x37, 0xd7, 0xa7, 0x97,
		0xf0, 0x94, 0x5f, 0x4d, 0x31, 0x6b, 0x58, 0xbc, 0x0e, 0xf2, 0xdc, 0x7e, 0x61, 0xbd, 0x45, 0x32,
		0xb1, 0x60, 0xb2, 0xf2, 0x31, 0x2b, 0x67, 0xb9, 0x1f, 0x7e, 0x99, 0x43, 0xde, 0x69, 0x26, 0xd6,
		0x7b, 0x92, 0x2b, 0xa3, 0xba, 0x38, 0xc1, 0x3b, 0x55, 0xdf, 0x75, 0xe8, 0xd8, 0x3d, 0x3f, 0xd2,
		0xce, 0xa3, 0xc7, 0x74, 0x56, 0x87, 0xaa, 0xad, 0x42, 0xe5, 0x37, 0x33, 0x9d, 0x62, 0x7d, 0xf7,
		0xf1, 0x43, 0xa5, 0x70, 0x58, 0x7d, 0x97, 0xbb, 0x57, 0xcd, 0xf7, 0xb9, 0xd2, 0xfb, 0xca, 0xfb,
		0xf2, 0x7b, 0x4e, 0xbc, 0x16, 0xea, 0x43, 0x39, 0xeb, 0x76, 0x4f, 0xd7, 0x89, 0xf9, 0x5e, 0x9b,
		0x74, 0xeb, 0xc9, 0x39, 0x4f, 0x7c, 0xe9, 0x42, 0xe2, 0x66, 0x1d, 0x8a, 0x80, 0xbf, 0xc5, 0x8e,
		0xb6, 0xb2, 0x08, 0x38, 0x61, 0xb3, 0x0e, 0x82, 0x32, 0x81, 0x7b, 0x06, 0x17, 0x7a, 0xdc, 0x6c,
		0x63, 0x78, 0x47, 0x32, 0x47, 0x5a, 0x94, 0x84, 0xb6, 0xab, 0x06, 0x7d, 0x17, 0x0d, 0x91, 0xae,
		0x19, 0x0c, 0x5d, 0x32, 0x18, 0xba, 0x62, 0x24, 0xb5, 0x22, 0x62, 0x98, 0x30, 0x0b, 0x0f, 0x16,
		0x49, 0xdd, 0xce, 0xa4, 0x3d, 0x2b, 0x92, 0xc1, 0xd3, 0xe6, 0xa0, 0xb2, 0xd9, 0x27, 0x37, 0x34,
		0x20, 0x2a, 0xc3, 0x31, 0x62, 0x30, 0x9b, 0xad, 0xd0, 0xfa, 0xef, 0x77, 0x83, 0x77, 0x6b, 0x69,
		0x27, 0x7c, 0x52, 0x5a, 0x6d, 0x7e, 0xab, 0x7e, 0x42, 0x03, 0x26, 0x23, 0x6d, 0xb8, 0xc2, 0xc9,
		0xaa, 0xc3, 0x26, 0x8e, 0x4d, 0x50, 0xc4, 0x20, 0xe8, 0x62, 0x0d, 0x54, 0x24, 0x87, 0x3c, 0x76,
		0x40, 0xce, 0x50, 0x48, 0x63, 0x01, 0xb2, 0x98, 0x94, 0xb4, 0xfa, 0xaa, 0x35, 0xba, 0x00, 0x68,
		0xb7, 0x9d, 0x8e, 0xeb, 0xb9, 0x2a, 0x4a, 0xbe, 0xdc, 0x63, 0x03, 0x5c, 0x18, 0x39, 0xa9, 0xf7,
		0x47, 0x52, 0xba, 0x99, 0x2c, 0x80, 0x48, 0x19, 0x30, 0xa4, 0x0f, 0x10, 0x52, 0x2b, 0x14, 0x6c,
		0x01, 0x40, 0x36, 0xb9, 0x81, 0x25, 0xc0, 0x67, 0x96, 0xff, 0x50, 0x95, 0x5a, 0x9e, 0xdf, 0x9a,
		0x3f, 0xe8, 0x4b, 0xb6, 0xbf, 0x1a, 0x3f, 0xe5, 0xb5, 0xdb, 0xd1, 0x96, 0x83, 0x49, 0xb2, 0x44,
		0xed, 0xf6, 0x94, 0x2b, 0x66, 0xe4, 0xb5, 0xdb, 0x9d, 0xb6, 0x6b, 0x8f, 0x88, 0x24, 0x53, 0xce,
		0xd2, 0x64, 0x06, 0xa4, 0x2b, 0x21, 0x5d, 0xc9, 0x18, 0x08, 0x89, 0x81, 0x91, 0x08, 0x28, 0xd1,
		0x82, 0x13, 0x31, 0x48, 0x4d, 0xde, 0x80, 0x40, 0xee, 0x3a, 0x79, 0x2f, 0xa1, 0x05, 0xdf, 0xa5,
		0xc6, 0x30, 0xf6, 0x62, 0x6f, 0xa1, 0x09, 0x48, 0xee, 0x40, 0xae, 0x6c, 0x73, 0x8c, 0xb0, 0x4c,
		0x07, 0xce, 0x68, 0x7c, 0x9e, 0xe3, 0xa6, 0x88, 0xe3, 0x06, 0xc7, 0x0d, 0x8e, 0x9b, 0x34, 0x1e,
		0x37, 0xd4, 0xbe, 0x31, 0xbf, 0x8f, 0x2c, 0xe5, 0x2b, 0x33, 0xfb, 0xcc, 0xec, 0x60, 0x26, 0x01,
		0x6a, 0x72, 0xe0, 0x26, 0x05, 0x72, 0xe2, 0x60, 0x27, 0x0e, 0x7a, 0xa2, 0xe0, 0xc7, 0x03, 0x82,
		0x4c, 0x60, 0xc8, 0xef, 0x83, 0x2f, 0xec, 0x97, 0x4e, 0xd7, 0x8b, 0x06, 0x6f, 0xde, 0x76, 0xda,
		0xae, 0x44, 0x75, 0xc2, 0x32, 0xe3, 0x1c, 0xac, 0x77, 0x09, 0xa6, 0x6b, 0x23, 0x71, 0xa7, 0x60,
		0x32, 0x5b, 0x7c, 0xb7, 0xe0, 0xe2, 0xf6, 0xaf, 0x32, 0xf3, 0xee, 0xcf, 0x4d, 0xef, 0x16, 0xdc,
		0xfe, 0x55, 0xb5, 0x58, 0xe7, 0xea, 0xbf, 0xe3, 0x5e, 0x21, 0xee, 0x3c, 0xf9, 0xc9, 0x54, 0xf1,
		0xca, 0xb0, 0xf7, 0x40, 0x18, 0x4f, 0x55, 0x1d, 0xec, 0x20, 0xde, 0xa5, 0x01, 0x00, 0xe7, 0x18,
		0x73, 0x1c, 0x17, 0xe6, 0xf9, 0xf1, 0x14, 0x68, 0x3b, 0x68, 0xda, 0xcd, 0xa0, 0xd3, 0x0d, 0x55,
		0x14, 0xa9, 0x96, 0xed, 0x29, 0xa7, 0x3d, 0x98, 0xb4, 0x8f, 0xd4, 0xfe, 0xf4, 0x2f, 0xa4, 0x64,
		0x92, 0xd1, 0x38, 0xeb, 0x26, 0xff, 0x3a, 0xe2, 0x3f, 0xff, 0x83, 0x1f, 0x23, 0x75, 0x6a, 0x17,
		0x44, 0x29, 0xee, 0x8b, 0xdb, 0x8c, 0x17, 0xb6, 0xd9, 0x24, 0xa9, 0x12, 0x24, 0x29, 0x48, 0x52,
		0x90, 0xa4, 0x20, 0x49, 0x41, 0x92, 0x82, 0x24, 0x05, 0x49, 0x0a, 0x92, 0x14, 0x24, 0x29, 0x48,
		0x52, 0x90, 0xa4, 0x20, 0x49, 0x41, 0x92, 0x92, 0x01, 0x60, 0x28, 0x2c, 0x5b, 0xaf, 0xb0, 0x10,
		0x5e, 0x16, 0x4e, 0xb7, 0xc0, 0x32, 0x7c, 0x23, 0x11, 0x9f, 0xc4, 0x32, 0x9e, 0x00, 0x79, 0x3f,
		0x10, 0x59, 0x20, 0xb2, 0x40, 0x64, 0xa1, 0x82, 0x2c, 0x7e, 0x89, 0x65, 0x34, 0x0f, 0xaf, 0xc0,
		0x52, 0x84, 0xc0, 0x02, 0x81, 0x05, 0x02, 0xcb, 0x2e, 0x08, 0x2c, 0x5c, 0x80, 0x38, 0x99, 0x80,
		0x29, 0x83, 0x7b, 0xe5, 0xb6, 0x64, 0xc9, 0xe8, 0x16, 0x06, 0x4a, 0x31, 0xc0, 0x94, 0x04, 0x4e,
		0x79, 0x00, 0x95, 0x06, 0x52, 0x63, 0x80, 0x6a, 0x0c, 0x58, 0x8d, 0x00, 0x2c, 0xbf, 0x44, 0x93,
		0x13, 0xd0, 0xe6, 0xb8, 0x81, 0x77, 0x32, 0x91, 0xf2, 0x9d, 0x47, 0x2f, 0x41, 0xfd, 0x95, 0x8d,
		0xf7, 0xf7, 0x78, 0x62, 0x21, 0x13, 0x3c, 0x53, 0x6d, 0xa7, 0xe7, 0x69, 0xf6, 0x3e, 0xbc, 0x73,
		0x93, 0xc6, 0x05, 0xaf, 0x2c, 0x91, 0xf9, 0xea, 0x42, 0xef, 0x91, 0x37, 0xc8, 0x6a, 0xec, 0x88,
		0x33, 0x71, 0xd4, 0x99, 0x3b, 0xf2, 0x4c, 0x1d, 0x7d, 0xc6, 0x8f, 0x40, 0xe3, 0x47, 0xa1, 0xd1,
		0x23, 0x51, 0xe6, 0x68, 0x14, 0x3a, 0x22, 0x27, 0x6f, 0x92, 0x3d, 0x08, 0xbc, 0x72, 0xbf, 0x3e,
		0x06, 0x81, 0xa7, 0x1c, 0x5f, 0x72, 0xc3, 0x8e, 0x99, 0x45, 0x71, 0xab, 0x96, 0x50, 0x28, 0xb3,
		0x79, 0x61, 0x5e, 0xf1, 0x4c, 0x67, 0xf9, 0x9d, 0x28, 0xb0, 0x84, 0xd6, 0xb3, 0xf2, 0xbc, 0xc0,
		0x7e, 0x0e, 0xbc, 0x96, 0x76, 0x3b, 0x4a, 0xde, 0x95, 0x7c, 0x35, 0x3f, 0x3c, 0x21, 0x78, 0x42,
		0xf0, 0x84, 0xe0, 0x09, 0xc1, 0x13, 0x12, 0xdb, 0xaf, 0x3d, 0xd7, 0xd7, 0xc5, 0xaa, 0x01, 0x47,
		0xa8, 0x2a, 0x38, 0xe5, 0x9d, 0xe3, 0x3f, 0x29, 0x51, 0x01, 0x21, 0xc7, 0xda, 0x41, 0x63, 0xe5,
		0x17, 0xbd, 0x72, 0x7d, 0x71, 0x20, 0x9c, 0x4c, 0xfe, 0x97, 0xe3, 0xf5, 0x94, 0xdc, 0x31, 0xb7,
		0x30, 0xff, 0xc7, 0xd0, 0x69, 0x0e, 0x3c, 0xd1, 0x33, 0xf7, 0xc9, 0xa5, 0xaa, 0xe0, 0xbe, 0xd9,
		0xde, 0x52, 0x4f, 0x8e, 0x76, 0xbf, 0x29, 0x92, 0xc2, 0xe9, 0x29, 0x86, 0xad, 0x79, 0xd3, 0x73,
		0xbe, 0x9b, 0x37, 0xbd, 0x6a, 0xa5, 0x72, 0x58, 0x81, 0xf9, 0x99, 0x36, 0xbf, 0xbd, 0xed, 0x9c,
		0xad, 0xbe, 0x55, 0x3e, 0x87, 0x40, 0x9b, 0xaa, 0x95, 0x73, 0xf3, 0xb7, 0xaf, 0x4a, 0xd1, 0xa1,
		0xfc, 0xaa, 0xdd, 0x55, 0xee, 0xf2, 0xec, 0x36, 0x77, 0xdf, 0x55, 0x4d, 0xb7, 0xed, 0x36, 0xb9,
		0xba, 0x6c, 0xa6, 0x95, 0x35, 0x2d, 0x63, 0x4f, 0x52, 0x3d, 0xb2, 0x52, 0x4b, 0xa4, 0x96, 0x12,
		0xaa, 0xd5, 0xd6, 0x02, 0x3c, 0x07, 0x9e, 0x2f, 0x33, 0x1e, 0x48, 0xb1, 0x19, 0x5e, 0xc2, 0x91,
		0x14, 0xea, 0xfa, 0x5a, 0x85, 0xdf, 0x1c, 0xcf, 0x94, 0x14, 0x3b, 0x99, 0x1f, 0x52, 0x2c, 0xc9,
		0x84, 0x90, 0x62, 0x85, 0x9d, 0x09, 0x48, 0xb1, 0x90, 0x62, 0x13, 0xbd, 0x49, 0x48, 0xb1, 0xac,
		0x53, 0x42, 0x8a, 0x95, 0x98, 0x1c, 0x52, 0xec, 0x78, 0x6f, 0x41, 0x8a, 0x35, 0x64, 0x7a, 0x90,
		0x62, 0x21, 0xc5, 0x82, 0xba, 0x83, 0xba, 0xef, 0x00, 0x75, 0xf7, 0x82, 0xa6, 0xe3, 0xd9, 0xa3,
		0x4b, 0xfd, 0xf2, 0xcc, 0x7d, 0x7e, 0x7a, 0x10, 0x77, 0x10, 0x77, 0x10, 0x77, 0x10, 0x77, 0x10,
		0x77, 0xb1, 0xfd, 0xea, 0x76, 0x85, 0xd1, 0x77, 0x16, 0x81, 0x8b, 0xc7, 0x82, 0x73, 0x8e, 0xde,
		0xf1, 0xce, 0x84, 0x6c, 0xdd, 0xee, 0xb7, 0xb2, 0x81, 0xb5, 0x5d, 0x58, 0xe3, 0x23, 0x03, 0x73,
		0xdf, 0x3a, 0x5a, 0xab, 0xd0, 0x17, 0x5f, 0xee, 0xc9, 0x03, 0xec, 0x7f, 0x2e, 0xd8, 0xc7, 0xf5,
		0x97, 0xcf, 0x45, 0xfb, 0xb8, 0x3e, 0xfc, 0x6b, 0x31, 0xfe, 0xcf, 0xcf, 0x52, 0xff, 0xa5, 0xf4,
		0xb9, 0x60, 0x97, 0x47, 0x3f, 0x2d, 0x55, 0x3e, 0x17, 0xec, 0x4a, 0xfd, 0x60, 0xff, 0xcb, 0x97,
		0xf7, 0xeb, 0x7e, 0xe6, 0xe0, 0xe7, 0x61, 0x5f, 0x3e, 0xa0, 0x5a, 0x37, 0xb1, 0x9c, 0x37, 0xf7,
		0x17, 0xff, 0x32, 0xbe, 0xa6, 0xff, 0xd9, 0x97, 0x5a, 0xd5, 0x83, 0x7f, 0x18, 0x58, 0xd7, 0xbd,
		0x2d, 0x96, 0x96, 0xcc, 0xc2, 0x70, 0x15, 0x30, 0x6c, 0x0a, 0x86, 0xe3, 0xdd, 0xe7, 0xd8, 0xed,
		0x53, 0xfb, 0x63, 0xfd, 0x67, 0xf1, 0x5d, 0xb9, 0x7f, 0x72, 0xf0, 0xb3, 0xd6, 0x7f, 0xfd, 0xc3,
		0x97, 0x65, 0xbf, 0x56, 0x7c, 0x57, 0xeb, 0x9f, 0xac, 0xf8, 0x97, 0x6a, 0xff, 0xe4, 0x8d, 0x63,
		0x54, 0xfa, 0xfb, 0x0b, 0xbf, 0x3a, 0xf8, 0x79, 0x69, 0xd5, 0x07, 0xca, 0x2b, 0x3e, 0x70, 0xb8,
		0xea, 0x03, 0x87, 0x2b, 0x3e, 0xb0, 0xf2, 0x91, 0x4a, 0x2b, 0x3e, 0x50, 0xe9, 0xbf, 0x2c, 0xfc,
		0xfe, 0xfe, 0xf2, 0x5f, 0xad, 0xf6, 0x0f, 0x5e, 0x56, 0xfd, 0x5b, 0xad, 0xff, 0x72, 0x72, 0x70,
		0x80, 0x83, 0x49, 0xfc, 0x60, 0x82, 0x99, 0xcb, 0x9b, 0xf9, 0xf6, 0x1f, 0xd4, 0x90, 0xc5, 0x37,
		0xd3, 0x46, 0x20, 0x8b, 0x67, 0x78, 0x09, 0xad, 0x50, 0x75, 0x02, 0xad, 0xcc, 0xe9, 0xe2, 0xaf,
		0xe6, 0x87, 0x30, 0x4e, 0x73, 0x5c, 0x43, 0x18, 0x97, 0xb0, 0x22, 0x08, 0xe3, 0x10, 0xc6, 0x69,
		0x45, 0x5b, 0x08, 0xe3, 0xfc, 0xef, 0x18, 0xc2, 0x38, 0x14, 0x19, 0x01, 0x45, 0x06, 0xc2, 0xf8,
		0xb6, 0xea, 0x0f, 0x10, 0xc6, 0xb3, 0x73, 0xb0, 0xa6, 0x03, 0x86, 0x21, 0x8c, 0x43, 0x18, 0x87,
		0x30, 0x8e, 0x83, 0x89, 0xf9, 0x60, 0x82, 0x99, 0x43, 0x18, 0xcf, 0x28, 0xcf, 0xce, 0x41, 0x18,
		0x27, 0x9a, 0x77, 0x17, 0x84, 0xf1, 0x4c, 0x17, 0x9f, 0x17, 0x36, 0x8c, 0x54, 0x76, 0xd3, 0x1b,
		0xf5, 0x80, 0x1b, 0xfd, 0x37, 0x3f, 0xea, 0x1b, 0x92, 0xd5, 0xa6, 0x92, 0x8c, 0x6d, 0x88, 0x84,
		0xe3, 0x33, 0x66, 0xe2, 0x32, 0x42, 0xf1, 0x18, 0x74, 0x74, 0xa1, 0x99, 0x11, 0x1d, 0x5d, 0xd8,
		0x7d, 0x07, 0x74, 0x74, 0x59, 0xf3, 0x8d, 0x89, 0xc5, 0x4f, 0xa6, 0x37, 0xba, 0x94, 0xd3, 0x0e,
		0x55, 0x5b, 0x62, 0xc3, 0x8d, 0x15, 0x9c, 0x9a, 0xc0, 0x5c, 0xb7, 0x23, 0x3f, 0xe1, 0xfd, 0xfb,
		0xd1, 0xa9, 0x9c, 0x7f, 0x75, 0x14, 0xe0, 0x90, 0x5e, 0xf4, 0xb0, 0xe2, 0xde, 0xc0, 0x62, 0x67,
		0xf3, 0x70, 0xba, 0x2d, 0x6b, 0xb2, 0x56, 0xc2, 0x91, 0x8c, 0x23, 0x19, 0x47, 0xf2, 0x16, 0x1d,
		0xc9, 0x68, 0xb2, 0x46, 0xfd, 0x42, 0xd1, 0x64, 0x2d, 0x43, 0x6c, 0x53, 0x9c, 0x75, 0x9a, 0x38,
		0xea, 0xcc, 0x1d, 0x79, 0xa6, 0x8e, 0x3e, 0xe3, 0x47, 0xa0, 0xf1, 0xa3, 0xd0, 0xe8, 0x91, 0x28,
		0x73, 0x34, 0x0a, 0x1d, 0x91, 0xf2, 0xec, 0x75, 0x61, 0xbf, 0x6e, 0x7f, 0x93, 0x35, 0xf4, 0x00,
		0x23, 0x30, 0x13, 0xf4, 0x00, 0xc3, 0x41, 0x8d, 0x83, 0x1a, 0x07, 0x35, 0x0e, 0x6a, 0x14, 0x9e,
		0x65, 0x9c, 0x12, 0x85, 0x67, 0x25, 0x26, 0x47, 0xe1, 0xd9, 0xf1, 0xde, 0x42, 0xe1, 0x59, 0x43,
		0xa6, 0x87, 0xc2, 0xb3, 0x28, 0x3c, 0xcb, 0xf7, 0x07, 0x3d, 0xc0, 0xa8, 0xe6, 0x46, 0x0f, 0x30,
		0xf4, 0x00, 0x43, 0x0f, 0xb0, 0x5f, 0x12, 0x2a, 0xf4, 0x00, 0xdb, 0x16, 0x3c, 0x47, 0x8b, 0x2a,
		0x02, 0xf0, 0x44, 0x8b, 0x2a, 0x8e, 0x09, 0xa1, 0x14, 0x0a, 0x9f, 0x75, 0x50, 0x0a, 0xa1, 0x14,
		0x26, 0x7a, 0x93, 0x50, 0x0a, 0x59, 0xa7, 0x84, 0x52, 0x28, 0x29, 0xd7, 0x40, 0x29, 0x84, 0x52,
		0x68, 0xc8, 0xf4, 0xa0, 0x14, 0x42, 0x29, 0x04, 0xb3, 0x4c, 0x03, 0xb3, 0x44, 0x07, 0x25, 0x39,
		0x5e, 0x59, 0x02, 0xaf, 0x04, 0xaf, 0x04, 0xaf, 0x04, 0xaf, 0x4c, 0x11, 0xaf, 0x44, 0xa1, 0xc8,
		0x6d, 0xe3, 0x96, 0x28, 0x14, 0x89, 0x42, 0x91, 0x9c, 0xce, 0x35, 0x0a, 0x45, 0xa2, 0x50, 0x64,
		0xd6, 0x94, 0x0f, 0x14, 0x8a, 0x44, 0xa1, 0x48, 0x54, 0xd0, 0x43, 0xa1, 0xc8, 0xad, 0x3e, 0x98,
		0x60, 0xe6, 0x28, 0x14, 0x09, 0xd5, 0x76, 0x27, 0x54, 0x5b, 0x34, 0xf8, 0x81, 0x6e, 0x0b, 0xdd,
		0x16, 0xba, 0x2d, 0x74, 0x5b, 0xe8, 0xb6, 0xd0, 0x6d, 0xa1, 0xdb, 0x42, 0x30, 0x80, 0x6e, 0x0b,
		0x7a, 0x0c, 0xdd, 0x16, 0xba, 0x2d, 0x74, 0x5b, 0xe8, 0xb6, 0x10, 0xb4, 0xa0, 0xdb, 0x42, 0xb7,
		0x85, 0x99, 0x43, 0xb7, 0x85, 0x6e, 0x9b, 0x96, 0x19, 0xd0, 0x7f, 0x46, 0xbc, 0xff, 0xcc, 0xb0,
		0xa2, 0x7a, 0x56, 0x2b, 0xdb, 0xef, 0x65, 0xc8, 0x0a, 0xad, 0x7f, 0xaa, 0x1f, 0x62, 0x61, 0x01,
		0xeb, 0xd2, 0x8d, 0xf4, 0xa9, 0xd6, 0xbc, 0x75, 0xa8, 0xad, 0x2b, 0xd7, 0x3f, 0xf7, 0x54, 0x47,
		0xf9, 0xdc, 0x77, 0x44, 0xac, 0x2b, 0xe7, 0xfb, 0xcc, 0x4c, 0xc5, 0xa3, 0x72, 0xb9, 0x5a, 0x2b,
		0x97, 0x0b, 0xb5, 0xc3, 0x5a, 0xe1, 0xb8, 0x52, 0x29, 0x56, 0x8b, 0x8c, 0x37, 0x65, 0xac, 0x9b,
		0xb0, 0xa5, 0x42, 0xd5, 0xfa, 0x63, 0xb0, 0x7e, 0x7e, 0xcf, 0xf3, 0x24, 0xa6, 0xfa, 0x14, 0xa9,
		0x90, 0xf5, 0xd2, 0x0b, 0x97, 0x99, 0x0b, 0x81, 0x6c, 0x06, 0xc0, 0xd5, 0x62, 0x6d, 0xbc, 0x11,
		0xf6, 0x9a, 0xda, 0x1f, 0xf1, 0xf0, 0xeb, 0xe1, 0xd7, 0xb9, 0x18, 0x7d, 0x9b, 0xc6, 0x55, 0xd7,
		0x8b, 0x1a, 0xf7, 0xe3, 0x6f, 0x73, 0x3b, 0xfe, 0x32, 0x8d, 0xcb, 0x56, 0xb7, 0xf1, 0x30, 0xfa,
		0x32, 0x8d, 0xd3, 0xe1, 0xb3, 0x7f, 0x8c, 0x1f, 0x7d, 0xf4, 0x63, 0x9e, 0x93, 0x80, 0x1e, 0xa7,
		0x69, 0x47, 0x24, 0xde, 0x0a, 0xdc, 0x5b, 0x20, 0xcd, 0xa6, 0x4f, 0x6b, 0x40, 0x74, 0xcb, 0x4c,
		0x33, 0x12, 0x91, 0xa1, 0x8c, 0x5d, 0x01, 0xa7, 0xed, 0xda, 0xf1, 0x16, 0x26, 0x1a, 0x96, 0xe5,
		0xd0, 0xe7, 0x3b, 0xe4, 0x45, 0x0f, 0x75, 0xc6, 0x43, 0x9c, 0xf1, 0xd0, 0xa6, 0x32, 0x38, 0x26,
		0x44, 0x4a, 0x23, 0x12, 0x11, 0x9e, 0xba, 0xe4, 0xa7, 0x2c, 0x0d, 0x3a, 0x26, 0xc7, 0xb2, 0x64,
		0x23, 0x24, 0x34, 0x4a, 0x6a, 0x63, 0x4c, 0x85, 0x11, 0x26, 0x5b, 0xd9, 0xcd, 0xd7, 0x23, 0xc1,
		0x5a, 0x58, 0xcd, 0x71, 0xee, 0x56, 0xb2, 0x35, 0x98, 0x44, 0x83, 0x46, 0xe3, 0x25, 0xb4, 0x0e,
		0x9a, 0xf6, 0x6b, 0x64, 0x85, 0xaa, 0x28, 0x13, 0xce, 0xe8, 0x13, 0xc9, 0xa8, 0x13, 0xc4, 0xd8,
		0x12, 0xbf, 0xd8, 0x12, 0xba, 0x58, 0x12, 0xb5, 0xcc, 0xe2, 0x23, 0x55, 0xfb, 0xb0, 0x51, 0x45,
		0x3a, 0xa7, 0xd9, 0x54, 0x5d, 0x4d, 0x67, 0x22, 0xf3, 0xf5, 0xee, 0x46, 0xa3, 0x53, 0x39, 0xc6,
		0xa4, 0xd9, 0xab, 0xe4, 0xd5, 0xea, 0x38, 0xb2, 0x4f, 0xf9, 0xb2, 0x4b, 0xb9, 0xb2, 0x47, 0xd9,
		0xb3, 0x43, 0xd9, 0xb3, 0x3f, 0x59, 0xb3, 0x3b, 0xd3, 0x45, 0x35, 0xc9, 0xb3, 0x2f, 0x19, 0x1b,
		0x28, 0x11, 0x37, 0x48, 0xa2, 0x7a, 0x85, 0x8c, 0x65, 0xa8, 0x19, 0xcb, 0x4c, 0x33, 0xe8, 0x4e,
		0x26, 0xca, 0x44, 0x73, 0xa7, 0xc0, 0x4b, 0x96, 0x79, 0x16, 0xcb, 0x6a, 0x37, 0x55, 0xa6, 0xb9,
		0x9f, 0x52, 0xf5, 0xaf, 0xbe, 0x13, 0x62, 0xcc, 0x8f, 0xa7, 0x40, 0xdb, 0x41, 0xd3, 0x6e, 0x06,
		0x9d, 0xee, 0x80, 0x9c, 0xaa, 0x96, 0xed, 0x29, 0xa7, 0x3d, 0x98, 0xa4, 0x9f, 0x16, 0xe1, 0xe1,
		0x1d, 0x95, 0x57, 0x4b, 0xde, 0x11, 0x8e, 0xb7, 0xe3, 0x1b, 0x3c, 0x5b, 0x78, 0xb6, 0xf0, 0x6c,
		0x33, 0xe2, 0xd9, 0x92, 0xd7, 0x11, 0x66, 0xa8, 0x13, 0xcc, 0x54, 0x07, 0x98, 0xc1, 0x6b, 0xe4,
		0xac, 0xe3, 0xcb, 0x5d, 0xa7, 0x57, 0xac, 0x10, 0x2a, 0x7f, 0xa1, 0x53, 0x86, 0x7c, 0x0f, 0xd6,
		0x3a, 0xb9, 0x12, 0x75, 0x70, 0xb7, 0x69, 0x79, 0xe1, 0x7a, 0x83, 0xca, 0x83, 0xca, 0x83, 0xca,
		0x03, 0x4f, 0x40, 0xe5, 0xb3, 0x45, 0xe5, 0xc9, 0x5b, 0x36, 0xf1, 0xb6, 0x64, 0x02, 0x95, 0x07,
		0x95, 0x07, 0x95, 0x07, 0x95, 0x07, 0x95, 0x07, 0x95, 0x07, 0x95, 0x07, 0x95, 0x87, 0xeb, 0x0d,
		0xd7, 0x5b, 0xd8, 0xf5, 0x46, 0xfa, 0x6e, 0xc2, 0xf4, 0xdd, 0x51, 0xaa, 0x6a, 0x06, 0x93, 0x76,
		0x87, 0x17, 0x76, 0xc9, 0x72, 0x76, 0x87, 0xc3, 0xa5, 0x2c, 0x65, 0xb7, 0x84, 0x94, 0xdd, 0x14,
		0x10, 0x1d, 0xa4, 0xec, 0xbe, 0xfd, 0x1b, 0x21, 0x65, 0x17, 0x6a, 0x08, 0xd4, 0x10, 0xa8, 0x21,
		0x29, 0x57, 0x43, 0x90, 0xb2, 0x4b, 0x30, 0x36, 0xe2, 0x7c, 0x86, 0x40, 0x6c, 0x19, 0x98, 0x21,
		0xce, 0x07, 0xb1, 0x81, 0x97, 0x6b, 0x23, 0x63, 0x15, 0x8e, 0x1d, 0x1c, 0x3b, 0x38, 0x76, 0xa9,
		0x76, 0xec, 0x10, 0xe6, 0xa2, 0xb4, 0x48, 0x84, 0xb9, 0xde, 0x64, 0x7b, 0x08, 0x73, 0xad, 0x58,
		0x5a, 0x84, 0xb9, 0xe0, 0x79, 0x82, 0xc9, 0x82, 0xc9, 0x82, 0xc9, 0x82, 0xc9, 0x6e, 0x23, 0x93,
		0x45, 0xc2, 0x26, 0x98, 0x2c, 0x98, 0x2c, 0x98, 0x2c, 0x98, 0x2c, 0x98, 0x2c, 0x98, 0x2c, 0x98,
		0x2c, 0x98, 0x2c, 0x3c, 0x4f, 0xbe, 0x11, 0x90, 0xaf, 0xd8, 0xa2, 0x68, 0xd3, 0x91, 0x20, 0x5d,
		0x71, 0x4f, 0x70, 0xd9, 0xa8, 0x96, 0xcb, 0xc4, 0x32, 0x59, 0x89, 0xf2, 0x3a, 0x93, 0x96, 0x1a,
		0xde, 0xcc, 0x3c, 0xd6, 0x5f, 0xdc, 0xf5, 0x3e, 0xb1, 0xa6, 0x19, 0x24, 0x5d, 0x7e, 0xc1, 0x65,
		0xdf, 0x60, 0xb5, 0x37, 0x5f, 0xe5, 0xf5, 0x16, 0xf7, 0xed, 0x4b, 0xb4, 0xc6, 0xf2, 0x58, 0x61,
		0xf4, 0xad, 0x6b, 0x6f, 0x90, 0x7c, 0x3c, 0xed, 0x88, 0x3f, 0x1a, 0x60, 0x4d, 0x93, 0xd8, 0x2c,
		0xbd, 0x78, 0x63, 0x9a, 0x9e, 0x84, 0x8e, 0xcf, 0xd2, 0xee, 0xc1, 0xb7, 0xdd, 0xc4, 0x46, 0x12,
		0xf2, 0x6b, 0x32, 0x1e, 0x4d, 0xc6, 0x97, 0x5f, 0xf3, 0xe2, 0xf8, 0xc5, 0xa4, 0x0c, 0x76, 0x36,
		0x4d, 0xe0, 0xb5, 0x9e, 0xbc, 0xe0, 0x31, 0x81, 0x12, 0x36, 0x31, 0x98, 0xd1, 0x38, 0x1b, 0xbe,
		0xe1, 0x64, 0x19, 0xf8, 0x89, 0x15, 0x2d, 0x0a, 0x05, 0x8b, 0x60, 0xeb, 0x50, 0x4b, 0x54, 0xe4,
		0x92, 0x14, 0xb9, 0x04, 0x45, 0xb3, 0xb5, 0xcc, 0x38, 0x7a, 0x49, 0x73, 0xe6, 0xad, 0xa7, 0xd0,
		0x69, 0xaa, 0x76, 0xcf, 0xb3, 0x43, 0x15, 0x69, 0x27, 0xd4, 0x74, 0xb7, 0x62, 0x16, 0x46, 0x46,
		0x4d, 0x7b, 0x81, 0x6d, 0x4b, 0xbd, 0x7d, 0xd9, 0xb6, 0x31, 0xdb, 0x76, 0xe6, 0xd9, 0xd6, 0xe9,
		0xa0, 0xe1, 0x64, 0x57, 0x64, 0x88, 0xda, 0x56, 0x2c, 0x18, 0x30, 0x49, 0xfb, 0x0a, 0xe2, 0x2d,
		0x4f, 0xbe, 0xf5, 0x39, 0x20, 0x80, 0x11, 0x0a, 0xb8, 0x20, 0x81, 0x1d, 0x1a, 0xd8, 0x21, 0x82,
		0x17, 0x2a, 0x68, 0xb5, 0x48, 0xaa, 0xa8, 0x13, 0x15, 0x84, 0x4c, 0x06, 0x54, 0x3e, 0x79, 0x52,
		0xcd, 0xdc, 0x46, 0x18, 0x8d, 0x4f, 0xbc, 0xe2, 0x67, 0xaa, 0xed, 0xf4, 0x3c, 0xcd, 0xd2, 0x93,
		0xdd, 0x8a, 0x15, 0x72, 0xda, 0xe4, 0x0c, 0xe2, 0xe6, 0xf5, 0xc4, 0xe1, 0x7c, 0x36, 0x88, 0xe5,
		0x84, 0x5a, 0x01, 0xc8, 0xe5, 0x86, 0x5e, 0x31, 0x08, 0x16, 0x83, 0x62, 0x19, 0x48, 0xa6, 0x85,
		0x66, 0x62, 0x88, 0x9e, 0xbc, 0x02, 0xf2, 0x04, 0x81, 0x05, 0x8b, 0xa7, 0xbf, 0xcb, 0xb8, 0xe0,
		0xbb, 0x15, 0x77, 0xba, 0xcb, 0x2c, 0x7b, 0x21, 0x14, 0x7a, 0x4b, 0x26, 0x7c, 0xc5, 0x56, 0xa8,
		0x9a, 0xc1, 0x37, 0x15, 0xfe, 0xb0, 0x49, 0xef, 0x6c, 0x2d, 0x98, 0xf1, 0xfc, 0x34, 0x38, 0x29,
		0x71, 0x52, 0xe2, 0xa4, 0xc4, 0x49, 0x49, 0x6a, 0xf1, 0x3d, 0xd7, 0xd7, 0x87, 0x25, 0xc6, 0x83,
		0xb2, 0xc6, 0x30, 0x34, 0x4f, 0x8a, 0xdd, 0xf8, 0xcf, 0x4f, 0xbe, 0xce, 0xfc, 0x9c, 0x29, 0x77,
		0x93, 0x49, 0x98, 0x53, 0xef, 0x26, 0xf3, 0x48, 0xe5, 0x68, 0x4d, 0x6d, 0x96, 0x3b, 0x57, 0x8b,
		0x69, 0x1b, 0xcf, 0x9b, 0x00, 0x63, 0x6a, 0xde, 0x82, 0x09, 0x94, 0x4b, 0xc7, 0xe5, 0xe3, 0x6a,
		0xad, 0x74, 0x5c, 0x81, 0x2d, 0xa4, 0xe2, 0x80, 0xe0, 0x1b, 0xb5, 0x0e, 0x3e, 0xb2, 0xcb, 0x7c,
		0x24, 0x0e, 0x45, 0xb2, 0xd3, 0x91, 0x99, 0x59, 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46,
		0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0xb2, 0xc2, 0x46, 0x18,
		0xeb, 0x66, 0xcc, 0xb8, 0xe4, 0x5c, 0xf5, 0x33, 0x04, 0x4e, 0x86, 0x99, 0x7a, 0x1a, 0xb9, 0x4a,
		0xf9, 0xb8, 0x72, 0x92, 0x3b, 0x53, 0x51, 0x33, 0x74, 0xbb, 0x83, 0x5d, 0x95, 0x0b, 0xda, 0x39,
		0xfd, 0xac, 0x72, 0x77, 0x2a, 0x8a, 0xbd, 0xc8, 0x2f, 0xfe, 0x9d, 0x8a, 0x54, 0xf8, 0x2d, 0xa6,
		0x77, 0xb9, 0xf1, 0xcd, 0x84, 0x9c, 0x9d, 0x7b, 0x08, 0x9d, 0x76, 0xdb, 0x6d, 0xda, 0xe7, 0xfe,
		0x93, 0xeb, 0x2b, 0x15, 0xaa, 0xd6, 0x17, 0x7f, 0xff, 0xee, 0xfe, 0xaf, 0x5b, 0xfb, 0xe1, 0xfc,
		0x20, 0xf7, 0xe7, 0x28, 0x8f, 0x72, 0x30, 0xce, 0x80, 0x56, 0x0c, 0x3e, 0xd9, 0x54, 0xad, 0x5e,
		0xa8, 0x22, 0x8b, 0x11, 0xf1, 0x98, 0x3d, 0xdf, 0x65, 0x1e, 0x30, 0x77, 0xf5, 0x0e, 0x71, 0x67,
		0x78, 0xa9, 0x53, 0x6c, 0xca, 0x56, 0x80, 0xb5, 0x50, 0x7e, 0x32, 0xa6, 0xfc, 0xec, 0x44, 0xaf,
		0x14, 0xa1, 0xcb, 0x76, 0xa3, 0x7b, 0x63, 0xf9, 0xe1, 0x1d, 0x99, 0xfc, 0xeb, 0xec, 0x7c, 0x92,
		0x6e, 0x1e, 0x74, 0x0b, 0x47, 0x51, 0x67, 0x87, 0xa6, 0xcb, 0xc7, 0xc2, 0x59, 0x4f, 0xd1, 0xed,
		0xe3, 0x35, 0xdd, 0x26, 0xcf, 0x70, 0x2e, 0x21, 0xc3, 0x39, 0x4b, 0x32, 0x1d, 0x32, 0x9c, 0x91,
		0xe1, 0x8c, 0x0c, 0x67, 0x44, 0x4a, 0x10, 0x29, 0x31, 0x06, 0xc1, 0xe2, 0xe4, 0x10, 0x91, 0x12,
		0x64, 0x38, 0xf3, 0xd2, 0x27, 0x24, 0xf2, 0xe2, 0x40, 0xc0, 0x81, 0x80, 0x03, 0x01, 0x07, 0x02,
		0x42, 0xe7, 0xbf, 0xfa, 0x83, 0xd0, 0xf9, 0xdb, 0xe6, 0x41, 0xe8, 0x7c, 0x23, 0x13, 0x40, 0xe8,
		0x3c, 0x5b, 0xb6, 0xb0, 0x9b, 0xe1, 0x1c, 0xe4, 0xab, 0xc2, 0xe9, 0x86, 0xd3, 0x0d, 0xa7, 0x1b,
		0x4e, 0x37, 0x9c, 0x6e, 0x38, 0xdd, 0x70, 0xba, 0xe1, 0x74, 0xc3, 0xe9, 0x86, 0xd3, 0xcd, 0xec,
		0x74, 0x23, 0x5f, 0x55, 0xf6, 0x64, 0x40, 0xbe, 0x2a, 0xa5, 0x07, 0x8c, 0x7c, 0x55, 0xe4, 0xab,
		0xee, 0xa2, 0xc0, 0x81, 0xb4, 0x4c, 0xb9, 0xb4, 0x4c, 0x82, 0xa6, 0x25, 0x74, 0xeb, 0x86, 0x1e,
		0x34, 0xf4, 0x2b, 0x6c, 0x91, 0x64, 0xba, 0x6e, 0xd2, 0x11, 0xe3, 0x2e, 0xfa, 0xd6, 0x7d, 0x50,
		0x8d, 0x3f, 0xe3, 0xe7, 0x6a, 0x8c, 0xa1, 0x78, 0x84, 0xc4, 0xc6, 0xfa, 0xe4, 0x24, 0xa8, 0x58,
		0x1f, 0x37, 0xbe, 0x8c, 0xe8, 0x2a, 0x98, 0x8f, 0xc6, 0x43, 0xdd, 0x72, 0x41, 0x45, 0x13, 0x75,
		0xcb, 0x51, 0xb7, 0xfc, 0x17, 0x03, 0xa1, 0x6e, 0x39, 0xc5, 0x80, 0xc8, 0xea, 0xcf, 0x21, 0xab,
		0x3f, 0x63, 0x7e, 0x3e, 0x79, 0x56, 0x3f, 0x53, 0x1b, 0xee, 0xe5, 0x5e, 0x04, 0x75, 0x3b, 0xee,
		0xe9, 0x6b, 0xe1, 0xcc, 0xf2, 0x3f, 0x2e, 0x14, 0x0a, 0x48, 0xf2, 0xa7, 0x1c, 0x18, 0xe1, 0x65,
		0xa3, 0x88, 0x2c, 0xae, 0xa8, 0x21, 0xbc, 0x2c, 0x15, 0x5e, 0x26, 0xed, 0x77, 0xfe, 0x1a, 0x5f,
		0xaa, 0x08, 0x2f, 0x4f, 0x1f, 0x5c, 0x34, 0xbc, 0x5c, 0x2c, 0x14, 0x10, 0x61, 0x4e, 0xc9, 0x4e,
		0x9e, 0xb7, 0x02, 0xc9, 0x08, 0x73, 0xb5, 0x00, 0x33, 0x48, 0xcb, 0xf1, 0xc0, 0x37, 0x2a, 0x82,
		0xcb, 0x5b, 0x13, 0x5c, 0x3e, 0x2c, 0x15, 0x8e, 0x4f, 0x72, 0xa3, 0x38, 0xdf, 0x49, 0xee, 0xfc,
		0xbb, 0x56, 0x7e, 0xe4, 0x06, 0x7e, 0x94, 0xd3, 0x41, 0xfc, 0xe3, 0x5c, 0x3b, 0x08, 0xbf, 0xf8,
		0x97, 0xf7, 0xb7, 0xb9, 0x87, 0x9e, 0xef, 0x2b, 0x2f, 0x7a, 0xff, 0xc5, 0x47, 0x54, 0x9a, 0xc2,
		0x71, 0xde, 0x9d, 0xa8, 0x74, 0xa6, 0x8c, 0x0c, 0xe8, 0x8e, 0xf2, 0x4b, 0xbb, 0x5c, 0x78, 0xbb,
		0x1d, 0xaa, 0xe8, 0xd9, 0x0e, 0x55, 0xab, 0xd7, 0x64, 0x79, 0xcb, 0x33, 0xb7, 0x19, 0x5e, 0x4f,
		0x95, 0x25, 0xc9, 0x6d, 0x00, 0xa3, 0x90, 0xdc, 0x20, 0xb9, 0x41, 0x72, 0x83, 0xe4, 0x96, 0x66,
		0xc9, 0x6d, 0xe7, 0x3b, 0x07, 0x82, 0x0e, 0xae, 0x41, 0x07, 0x4b, 0xc7, 0xd5, 0xe2, 0xd0, 0x23,
		0xbf, 0x1b, 0x9e, 0xce, 0xb9, 0x9b, 0x6f, 0x2a, 0x7c, 0x56, 0x4e, 0x2b, 0x77, 0x37, 0x3e, 0xa6,
		0xbf, 0xf8, 0x53, 0x07, 0x1e, 0x94, 0x2c, 0xa3, 0x94, 0x6c, 0xed, 0x85, 0x06, 0x2d, 0x02, 0x2d,
		0x42, 0x55, 0xda, 0xd4, 0x2d, 0x90, 0xa1, 0xe4, 0xd8, 0x61, 0xc6, 0x25, 0x6a, 0xd1, 0xbe, 0xf5,
		0x6c, 0x45, 0x2d, 0xda, 0xd4, 0x12, 0x38, 0x64, 0xad, 0x99, 0x21, 0x68, 0xc8, 0x5a, 0x23, 0xd9,
		0x10, 0xc8, 0x5a, 0x83, 0x84, 0x06, 0x09, 0x0d, 0x12, 0x1a, 0x24, 0x34, 0x36, 0x8b, 0x47, 0xd6,
		0x9a, 0xa4, 0x1c, 0x85, 0xac, 0xb5, 0xa4, 0x66, 0x8b, 0xac, 0xb5, 0x35, 0xad, 0x00, 0x59, 0x6b,
		0xe9, 0x92, 0xda, 0x72, 0xc8, 0x5a, 0x43, 0x98, 0x62, 0xd5, 0x69, 0x8c, 0xac, 0x35, 0x31, 0x87,
		0x79, 0x99, 0xe3, 0x8c, 0xac, 0x35, 0x64, 0xad, 0xed, 0x00, 0xba, 0x23, 0x39, 0x0b, 0xc9, 0x59,
		0x50, 0x96, 0xa0, 0x2c, 0x41, 0x59, 0x82, 0xb2, 0x84, 0xe4, 0x2c, 0xb0, 0x9e, 0x34, 0xb0, 0x1e,
		0x24, 0x67, 0x21, 0x39, 0x0b, 0xc9, 0x59, 0xd9, 0xf2, 0xfe, 0x91, 0x83, 0xc4, 0x9d, 0x83, 0x84,
		0xc2, 0x8b, 0x5c, 0xeb, 0x6b, 0x74, 0x5d, 0xd3, 0x52, 0x6e, 0xf1, 0xbf, 0x87, 0x4f, 0x93, 0xc1,
		0x2a, 0x8b, 0x51, 0xd0, 0xd6, 0x76, 0x37, 0x54, 0xaa, 0xd3, 0x25, 0x31, 0x89, 0x69, 0x32, 0xdb,
		0xab, 0x81, 0x51, 0x77, 0x51, 0x90, 0xda, 0xa2, 0xee, 0x22, 0xea, 0x2e, 0xfe, 0x62, 0x20, 0xd4,
		0x5d, 0x4c, 0xa9, 0xda, 0x85, 0x0c, 0x56, 0x03, 0x4c, 0x0b, 0x19, 0xac, 0x49, 0xb4, 0x19, 0x9f,
		0x45, 0x93, 0x99, 0x6c, 0x84, 0xd1, 0xf8, 0x59, 0x8a, 0x2b, 0xc4, 0x89, 0x14, 0x08, 0x2c, 0x50,
		0x0e, 0x8c, 0xc0, 0x82, 0x51, 0x08, 0x16, 0x17, 0xbd, 0x10, 0x58, 0x40, 0x60, 0x41, 0xe0, 0x15,
		0xe3, 0x3e, 0x24, 0xe7, 0x2b, 0x7e, 0x2d, 0x01, 0xc4, 0x1d, 0x69, 0x83, 0x9e, 0xe6, 0x73, 0x16,
		0x56, 0x4d, 0x98, 0x25, 0xef, 0xe1, 0x10, 0xb7, 0x5d, 0xe0, 0x3a, 0xc0, 0x75, 0x80, 0xeb, 0x90,
		0x6a, 0xd7, 0x01, 0xb7, 0x5d, 0x16, 0xfe, 0xa0, 0x05, 0xf0, 0xdb, 0xe6, 0xc1, 0x55, 0x97, 0x8d,
		0x4c, 0x40, 0xf4, 0xaa, 0x4b, 0xa5, 0x72, 0x88, 0xee, 0xbf, 0xe9, 0x38, 0x1b, 0xf8, 0x46, 0xc5,
		0x55, 0x97, 0x6d, 0x49, 0xfa, 0xaa, 0xd4, 0x8a, 0xa5, 0xdc, 0xd5, 0xed, 0xe5, 0xbd, 0xfd, 0x70,
		0x9e, 0x1b, 0x90, 0xa0, 0x1c, 0x59, 0xe0, 0xd5, 0xa4, 0x73, 0xba, 0xcc, 0x49, 0xdd, 0x99, 0xfc,
		0xae, 0x5f, 0xae, 0x29, 0xb0, 0x0b, 0xba, 0x12, 0xea, 0x6c, 0xa5, 0x6e, 0x81, 0x0c, 0xe5, 0x42,
		0xbd, 0x92, 0xbd, 0x50, 0x70, 0xeb, 0xad, 0x47, 0x27, 0x0a, 0x6e, 0xa5, 0x56, 0x00, 0x43, 0xba,
		0x82, 0x19, 0x81, 0x0b, 0xe9, 0x0a, 0x89, 0x36, 0x02, 0xd2, 0x15, 0x72, 0x88, 0x39, 0x20, 0xe6,
		0x60, 0x16, 0x82, 0xc5, 0x39, 0x1c, 0x62, 0x0e, 0x48, 0x57, 0xe0, 0x65, 0x4f, 0x88, 0xca, 0x9b,
		0x3d, 0x24, 0x11, 0x95, 0xc7, 0x09, 0x89, 0x13, 0x12, 0x27, 0x64, 0xba, 0x4f, 0x48, 0x44, 0xe5,
		0x17, 0xfe, 0x20, 0x2a, 0xff, 0xb6, 0x79, 0x10, 0x95, 0xdf, 0xc8, 0x04, 0x10, 0x95, 0xcf, 0x8c,
		0x19, 0x20, 0xb2, 0x45, 0xb0, 0x5c, 0x88, 0xca, 0xbf, 0xf1, 0x28, 0x46, 0x54, 0x3e, 0xd3, 0xfe,
		0xea, 0x52, 0xbf, 0x15, 0x51, 0x79, 0x59, 0xec, 0x42, 0xf0, 0x79, 0x3d, 0x61, 0x27, 0x15, 0xc1,
		0x67, 0x54, 0x5a, 0xe1, 0x5a, 0xe8, 0x74, 0x2c, 0x70, 0x5a, 0x4a, 0xae, 0xdc, 0x07, 0x6d, 0x7d,
		0x4b, 0x84, 0xbd, 0x86, 0x4a, 0xaf, 0x90, 0x24, 0x35, 0x90, 0x26, 0x33, 0x90, 0x97, 0x59, 0x29,
		0xa1, 0xcc, 0x4a, 0x1a, 0x74, 0x3f, 0x94, 0x59, 0x59, 0xe3, 0x2b, 0x11, 0x96, 0x59, 0xe9, 0xf9,
		0x5a, 0x85, 0x11, 0x47, 0xa1, 0x95, 0xd1, 0xc8, 0xc8, 0x5d, 0x4a, 0x11, 0x1c, 0x70, 0x33, 0x30,
		0xe4, 0x2e, 0x65, 0xc9, 0xcd, 0xa7, 0xcf, 0x5d, 0x0a, 0xc3, 0x80, 0x10, 0x4c, 0x16, 0x36, 0xc2,
		0x68, 0x7c, 0x9e, 0xc8, 0x64, 0x11, 0x91, 0x49, 0x44, 0x26, 0xd3, 0xa8, 0xf4, 0x20, 0x32, 0x49,
		0x0f, 0x55, 0x93, 0x81, 0x9d, 0x9e, 0x7e, 0x56, 0xbe, 0x76, 0x9b, 0x31, 0x0b, 0xb6, 0xdb, 0x8e,
		0xeb, 0xf1, 0x99, 0xe6, 0x78, 0x77, 0x2d, 0x9b, 0x94, 0xc9, 0x76, 0x78, 0xd2, 0x2e, 0xd8, 0x41,
		0x4e, 0x02, 0xec, 0x04, 0x41, 0x4f, 0x0a, 0xfc, 0xc4, 0x41, 0x50, 0x1c, 0x0c, 0x65, 0x41, 0x91,
		0x07, 0x1c, 0x99, 0x40, 0x72, 0xf2, 0x6a, 0xd8, 0xd2, 0x38, 0x56, 0xb1, 0xbc, 0x6a, 0x99, 0x73,
		0xcf, 0x8c, 0x20, 0xec, 0x88, 0x71, 0x0a, 0xde, 0x0c, 0x8f, 0xf1, 0x1f, 0xde, 0x3d, 0x9f, 0x93,
		0xca, 0xf8, 0x98, 0x4c, 0x26, 0x94, 0xf9, 0x31, 0x99, 0x4f, 0x3a, 0xf4, 0x3f, 0x35, 0x77, 0xa9,
		0x14, 0x00, 0x66, 0x64, 0x98, 0x37, 0x15, 0x81, 0xcc, 0x90, 0x05, 0x53, 0x29, 0x1e, 0x95, 0xcb,
		0xd5, 0x5a, 0xb9, 0x5c, 0xa8, 0x1d, 0xd6, 0x0a, 0xc7, 0x95, 0x4a, 0xb1, 0x5a, 0xac, 0xc0, 0x7a,
		0x32, 0x71, 0x5a, 0xf1, 0x8f, 0x5e, 0xcf, 0x48, 0x10, 0x99, 0x61, 0x77, 0x5a, 0x8f, 0x4e, 0xcb,
		0x6e, 0x3e, 0xab, 0xe6, 0xd7, 0xa8, 0xd7, 0xe1, 0x27, 0x20, 0x73, 0xb3, 0x81, 0x79, 0x80, 0x79,
		0x80, 0x79, 0x80, 0x79, 0x80, 0x79, 0x80, 0x79, 0x80, 0x79, 0x80, 0x79, 0x80, 0x79, 0xc0, 0x7a,
		0xc0, 0x3c, 0x76, 0x8a, 0x79, 0x74, 0x9d, 0xe6, 0x57, 0xa5, 0xed, 0x76, 0x10, 0x76, 0x1c, 0x2d,
		0x43, 0x3f, 0xe6, 0xa7, 0x04, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
		0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x81, 0xf5, 0x80, 0x83, 0xec, 0x22, 0x07, 0xf1, 0x94, 0xff,
		0x14, 0x5f, 0x1f, 0x92, 0xe3, 0x20, 0xa3, 0x29, 0xc1, 0x41, 0xc0, 0x41, 0xc0, 0x41, 0xc0, 0x41,
		0xc0, 0x41, 0xc0, 0x41, 0xc0, 0x41, 0xc0, 0x41, 0xc0, 0x41, 0x60, 0x3d, 0xe0, 0x20, 0x3b, 0xc3,
		0x41, 0x82, 0x9e, 0xb6, 0x83, 0xb6, 0x1d, 0x84, 0x2d, 0x15, 0xf2, 0xd3, 0x8f, 0xb9, 0xd9, 0xc0,
		0x3c, 0xc0, 0x3c, 0xc0, 0x3c, 0xc0, 0x3c, 0xc0, 0x3c, 0xc0, 0x3c, 0xc0, 0x3c, 0xc0, 0x3c, 0xc0,
		0x3c, 0x60, 0x3d, 0x60, 0x1e, 0x3b, 0xc3, 0x3c, 0x42, 0xd5, 0x54, 0xee, 0x37, 0xd5, 0xb2, 0x7d,
		0xa7, 0xf9, 0x95, 0x9f, 0x7a, 0xcc, 0x4f, 0x07, 0xee, 0x01, 0xee, 0x01, 0xee, 0x01, 0xee, 0x01,
		0xee, 0x01, 0xee, 0x01, 0xee, 0x01, 0xee, 0x01, 0xee, 0x01, 0xeb, 0x01, 0xf7, 0xd8, 0x19, 0xee,
		0xa1, 0x43, 0xc7, 0x8f, 0x3a, 0xae, 0x8e, 0x8b, 0x50, 0xf5, 0x42, 0xc5, 0x4f, 0x3f, 0x16, 0x66,
		0x04, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03,
		0x01, 0x03, 0x81, 0xf5, 0x80, 0x81, 0xec, 0x1e, 0x03, 0xf9, 0x9f, 0x9e, 0xea, 0x29, 0xbb, 0xdd,
		0xf3, 0x3c, 0x41, 0x12, 0x32, 0x33, 0x29, 0x78, 0x08, 0x78, 0x08, 0x78, 0x08, 0x78, 0x08, 0x78,
		0x08, 0x78, 0x08, 0x78, 0x08, 0x78, 0x08, 0x78, 0x08, 0xac, 0x07, 0x3c, 0x64, 0x67, 0x78, 0x48,
		0xcf, 0xff, 0xea, 0x07, 0x7f, 0xfb, 0xb6, 0x48, 0x0e, 0xd6, 0xec, 0x64, 0xe0, 0x1d, 0xe0, 0x1d,
		0xe0, 0x1d, 0xe0, 0x1d, 0xe0, 0x1d, 0xe0, 0x1d, 0xe0, 0x1d, 0xe0, 0x1d, 0xe0, 0x1d, 0xb0, 0x1e,
		0xf0, 0x8e, 0x9d, 0xe3, 0x1d, 0xbe, 0x28, 0xf1, 0xc0, 0xdd, 0x0f, 0x30, 0x0f, 0x30, 0x0f, 0x30,
		0x0f, 0x30, 0x0f, 0x30, 0x0f, 0x30, 0x0f, 0xf8, 0x8e, 0x60, 0x1e, 0xb0, 0x1e, 0x30, 0x8f, 0x14,
		0x33, 0x8f, 0x54, 0xb7, 0x67, 0x3f, 0xf5, 0xfd, 0x40, 0xc7, 0xcd, 0xcc, 0x79, 0xba, 0xb4, 0x47,
		0xcd, 0x67, 0xd5, 0x71, 0xba, 0x4e, 0x5c, 0x18, 0xd8, 0xca, 0x07, 0x5d, 0xe5, 0x37, 0x63, 0x16,
		0x60, 0xfb, 0x4a, 0xff, 0x1d, 0x84, 0x5f, 0x6d, 0xd7, 0x8f, 0xb4, 0xe3, 0x37, 0x55, 0xfe, 0xf5,
		0x0f, 0xa2, 0x85, 0x9f, 0xe4, 0x3b, 0x5d, 0x2f, 0xca, 0x47, 0xee, 0x93, 0xef, 0x78, 0xae, 0xff,
		0x64, 0x77, 0xc3, 0x40, 0x07, 0xcd, 0xc0, 0x8b, 0xf2, 0x03, 0x87, 0xce, 0xd6, 0x2a, 0xff, 0xe4,
		0x05, 0x8f, 0x8e, 0x97, 0x8f, 0xb4, 0xa3, 0x55, 0x7e, 0xe4, 0x6f, 0x44, 0x79, 0x15, 0x86, 0x41,
		0x18, 0x31, 0x78, 0x1d, 0x56, 0xa4, 0xc3, 0x5e, 0x53, 0xfb, 0x23, 0x07, 0xe7, 0x7a, 0xf8, 0xbc,
		0x17, 0xa3, 0xc7, 0x6d, 0x5c, 0x75, 0xbd, 0xa8, 0x71, 0x3f, 0x7e, 0xdc, 0xdb, 0xf1, 0xd3, 0x36,
		0xee, 0xa2, 0x6f, 0xdd, 0x07, 0xd5, 0xf8, 0x33, 0x7e, 0xd8, 0xc6, 0x87, 0xd1, 0x63, 0x36, 0xce,
		0x87, 0x8f, 0xb9, 0x97, 0x4e, 0xeb, 0x23, 0xb4, 0x3c, 0xcb, 0x8d, 0xe3, 0x67, 0x76, 0x47, 0x45,
		0x91, 0xf3, 0xa4, 0x22, 0x72, 0xd3, 0x9b, 0xb8, 0x9c, 0xaf, 0x27, 0x22, 0xde, 0x3d, 0x3c, 0x7c,
		0x99, 0x8d, 0x27, 0x73, 0xf2, 0x63, 0x01, 0x5e, 0xcc, 0xcd, 0x87, 0xc5, 0x78, 0xb0, 0x18, 0xff,
		0x95, 0xe1, 0xbd, 0xe9, 0x3e, 0xe1, 0xd8, 0xf8, 0xad, 0x08, 0xaf, 0x65, 0xe4, 0xb3, 0xcc, 0x3c,
		0x96, 0x51, 0x50, 0x90, 0xe0, 0xad, 0x52, 0x7c, 0x55, 0x9c, 0x69, 0xc8, 0x31, 0x0c, 0x46, 0x5e,
		0x2a, 0xc2, 0x47, 0x0d, 0xf2, 0xd0, 0x6d, 0xb6, 0x8a, 0x8c, 0xf0, 0xb6, 0xfa, 0x6e, 0xf8, 0xe1,
		0xcf, 0xca, 0xf3, 0x02, 0x19, 0x4f, 0xfc, 0xd5, 0x54, 0xf0, 0xc5, 0xe1, 0x8b, 0xc3, 0x17, 0x87,
		0x2f, 0x0e, 0x5f, 0x1c, 0xbe, 0x38, 0x7c, 0x71, 0xf8, 0xe2, 0xf0, 0xc5, 0xe1, 0x8b, 0xef, 0xb6,
		0x2f, 0xde, 0x75, 0xf4, 0xb3, 0x1d, 0x07, 0x2b, 0x64, 0x1c, 0xf2, 0x65, 0xf3, 0xc1, 0x2b, 0x87,
		0x57, 0x0e, 0xaf, 0x1c, 0x5e, 0x39, 0xbc, 0x72, 0x78, 0xe5, 0xf0, 0xca, 0xe1, 0x95, 0xc3, 0x2b,
		0x87, 0x57, 0x0e, 0xaf, 0x5c, 0xd0, 0x1f, 0x87, 0x27, 0x0e, 0x4f, 0x1c, 0x9e, 0x38, 0x3c, 0x71,
		0x78, 0xe2, 0xf0, 0xc4, 0xe1, 0x89, 0xc3, 0x13, 0x87, 0x27, 0x0e, 0x4f, 0x1c, 0x9e, 0xf8, 0xd4,
		0x3f, 0xd6, 0xca, 0x91, 0x94, 0xc7, 0xe7, 0xa7, 0x83, 0x4f, 0x0e, 0x9f, 0x1c, 0x3e, 0x39, 0x7c,
		0x72, 0xf8, 0xe4, 0xf0, 0xc9, 0xe1, 0x93, 0xc3, 0x27, 0x87, 0x4f, 0x0e, 0x9f, 0x7c, 0xb7, 0x7d,
		0xf2, 0x50, 0x45, 0x2a, 0xfc, 0x16, 0xdf, 0x20, 0x96, 0x4c, 0x5d, 0xf9, 0xc5, 0xb4, 0xf0, 0xd1,
		0xe1, 0xa3, 0xc3, 0x47, 0x87, 0x8f, 0x0e, 0x1f, 0x1d, 0x3e, 0x3a, 0x7c, 0x74, 0xf8, 0xe8, 0xf0,
		0xd1, 0xe1, 0xa3, 0xc3, 0x47, 0x1f, 0x3b, 0xcb, 0xe2, 0xde, 0x39, 0xfc, 0x72, 0xf8, 0xe5, 0xf0,
		0xcb, 0xe1, 0x97, 0xc3, 0x2f, 0x87, 0x5f, 0x0e, 0xbf, 0x1c, 0x7e, 0x39, 0xfc, 0x72, 0xf8, 0xe5,
		0xf0, 0xcb, 0x17, 0xdc, 0x64, 0xb9, 0xb4, 0x96, 0xd5, 0xb3, 0xc2, 0x43, 0x87, 0x87, 0x0e, 0x0f,
		0x1d, 0x1e, 0x3a, 0x3c, 0x74, 0x78, 0xe8, 0xf0, 0xd0, 0xe1, 0xa1, 0xc3, 0x43, 0x87, 0x87, 0xbe,
		0xdb, 0x1e, 0x7a, 0x14, 0xaa, 0x76, 0xa8, 0x22, 0xa1, 0xfb, 0x9f, 0x8b, 0xb3, 0xc1, 0x23, 0x87,
		0x47, 0x0e, 0x8f, 0x1c, 0x1e, 0x39, 0x3c, 0x72, 0x78, 0xe4, 0xf0, 0xc8, 0xe1, 0x91, 0xc3, 0x23,
		0x87, 0x47, 0xbe, 0xc3, 0x1e, 0x79, 0xd0, 0xd3, 0x42, 0x8d, 0x83, 0x16, 0x66, 0x82, 0x27, 0x0e,
		0x4f, 0x1c, 0x9e, 0x38, 0x3c, 0x71, 0x78, 0xe2, 0xf0, 0xc4, 0xe1, 0x89, 0xc3, 0x13, 0x87, 0x27,
		0x0e, 0x4f, 0x7c, 0xc7, 0x3d, 0x71, 0xa9, 0xd6, 0x41, 0x4b, 0xe6, 0x82, 0x37, 0x0e, 0x6f, 0x1c,
		0xde, 0x38, 0xbc, 0x71, 0x78, 0xe3, 0xf0, 0xc6, 0xe1, 0x8d, 0xc3, 0x1b, 0x87, 0x37, 0x0e, 0x6f,
		0x7c, 0xc7, 0xbd, 0x71, 0xd1, 0xe6, 0x41, 0xab, 0x26, 0x84, 0x5f, 0x0e, 0xbf, 0x1c, 0x7e, 0x39,
		0xfc, 0x72, 0xf8, 0xe5, 0xf0, 0xcb, 0xe1, 0x97, 0xc3, 0x2f, 0x87, 0x5f, 0x0e, 0xbf, 0x1c, 0x7e,
		0xf9, 0xb3, 0xa4, 0x47, 0x0e, 0x5f, 0x1c, 0xbe, 0x38, 0x7c, 0x71, 0xf8, 0xe2, 0xf0, 0xc5, 0xe1,
		0x8b, 0xc3, 0x17, 0x87, 0x2f, 0x0e, 0x5f, 0x1c, 0xbe, 0x38, 0x7c, 0xf1, 0x19, 0x07, 0x59, 0xa8,
		0xd2, 0xca, 0x8a, 0xf9, 0xe0, 0x95, 0xc3, 0x2b, 0x87, 0x57, 0x0e, 0xaf, 0x1c, 0x5e, 0x39, 0xbc,
		0x72, 0x78, 0xe5, 0xf0, 0xca, 0xe1, 0x95, 0xc3, 0x2b, 0xdf, 0x71, 0xaf, 0xdc, 0x44, 0x0b, 0xa1,
		0xdf, 0xcc, 0x0b, 0x2f, 0x1d, 0x5e, 0x3a, 0xbc, 0x74, 0x78, 0xe9, 0xf0, 0xd2, 0xe1, 0xa5, 0xc3,
		0x4b, 0x87, 0x97, 0x0e, 0x2f, 0x1d, 0x5e, 0x3a, 0xbc, 0x74, 0xc1, 0x26, 0x42, 0x2b, 0x67, 0x84,
		0x67, 0x0e, 0xcf, 0x1c, 0x9e, 0x39, 0x3c, 0x73, 0x78, 0xe6, 0xf0, 0xcc, 0xe1, 0x99, 0xc3, 0x33,
		0x87, 0x67, 0x0e, 0xcf, 0x1c, 0x9e, 0xb9, 0x74, 0x1b, 0xa1, 0x5f, 0x4f, 0x0b, 0x1f, 0x1d, 0x3e,
		0x3a, 0x7c, 0x74, 0xf8, 0xe8, 0xf0, 0xd1, 0xe1, 0xa3, 0xc3, 0x47, 0x87, 0x8f, 0x0e, 0x1f, 0x1d,
		0x3e, 0xfa, 0x8e, 0xfb, 0xe8, 0x82, 0x8d, 0x84, 0x96, 0x4f, 0x07, 0x9f, 0x1c, 0x3e, 0x39, 0x7c,
		0x72, 0xf8, 0xe4, 0xf0, 0xc9, 0xe1, 0x93, 0xc3, 0x27, 0x87, 0x4f, 0x0e, 0x9f, 0x1c, 0x3e, 0xf9,
		0x0e, 0xfb, 0xe4, 0xc3, 0x9b, 0x99, 0x6e, 0x47, 0x05, 0x3d, 0xcd, 0xe8, 0x8b, 0xcf, 0x4f, 0x03,
		0x1f, 0x1c, 0x3e, 0x38, 0x7c, 0x70, 0xf8, 0xe0, 0xf0, 0xc1, 0xe1, 0x83, 0xc3, 0x07, 0x87, 0x0f,
		0x0e, 0x1f, 0x1c, 0x3e, 0xf8, 0x0e, 0xfb, 0xe0, 0xa1, 0xa3, 0x95, 0xed, 0xb9, 0x1d, 0x57, 0xab,
		0x96, 0x80, 0x2e, 0xbe, 0x7c, 0x3a, 0xf8, 0xe4, 0xf0, 0xc9, 0xe1, 0x93, 0xc3, 0x27, 0x87, 0x4f,
		0x0e, 0x9f, 0x1c, 0x3e, 0x39, 0x7c, 0x72, 0xf8, 0xe4, 0xf0, 0xc9, 0x77, 0xd9, 0x27, 0x9f, 0x4d,
		0xea, 0x66, 0x97, 0xc7, 0x97, 0xce, 0x06, 0x8f, 0x1c, 0x1e, 0x39, 0x3c, 0x72, 0x78, 0xe4, 0xf0,
		0xc8, 0xe1, 0x91, 0xc3, 0x23, 0x87, 0x47, 0x0e, 0x8f, 0x1c, 0x1e, 0x79, 0xd6, 0x3c, 0xf2, 0xbd,
		0x14, 0xed, 0x4d, 0xeb, 0xd4, 0xf7, 0x03, 0x1d, 0x3b, 0xd9, 0xa4, 0xdb, 0xd1, 0x8a, 0x9a, 0xcf,
		0xaa, 0xe3, 0x74, 0x1d, 0xfd, 0x3c, 0x38, 0x61, 0xf3, 0x41, 0x57, 0xf9, 0xcd, 0xd8, 0x2b, 0xb6,
		0x7d, 0xa5, 0xff, 0x0e, 0xc2, 0xaf, 0xb6, 0xeb, 0x47, 0xda, 0xf1, 0x9b, 0x2a, 0xff, 0xfa, 0x07,
		0xd1, 0xc2, 0x4f, 0xf2, 0x9d, 0xae, 0x17, 0xe5, 0x23, 0xf7, 0xc9, 0x77, 0x3c, 0xd7, 0x7f, 0xb2,
		0xbb, 0x61, 0xa0, 0x83, 0x66, 0xe0, 0x45, 0xf9, 0x81, 0x43, 0x64, 0x6b, 0x95, 0x7f, 0xf2, 0x82,
		0x47, 0xc7, 0xcb, 0x47, 0xda, 0xd1, 0x2a, 0x3f, 0x3a, 0xcf, 0x29, 0xd9, 0x82, 0x15, 0xe9, 0xb0,
		0xd7, 0xd4, 0xfe, 0xc8, 0x63, 0xb8, 0x1e, 0x3e, 0xe0, 0xc5, 0xe8, 0xf9, 0x1a, 0x57, 0x5d, 0x2f,
		0x6a, 0xdc, 0x8f, 0x9f, 0xef, 0x76, 0xfc, 0x78, 0x8d, 0xbb, 0xe8, 0x5b, 0xf7, 0x41, 0x35, 0xfe,
		0x8c, 0x9f, 0xae, 0xf1, 0x61, 0xfc, 0x5c, 0x7b, 0xe9, 0xb0, 0xa3, 0x64, 0x23, 0x24, 0xb4, 0x40,
		0x6a, 0xcb, 0x33, 0x69, 0x71, 0xc9, 0x16, 0x74, 0xf3, 0x65, 0xd8, 0xec, 0x93, 0x1b, 0x2e, 0x1c,
		0xd5, 0x82, 0x99, 0x59, 0xa8, 0x04, 0x58, 0x40, 0xb1, 0xf7, 0x37, 0xb3, 0x90, 0xf5, 0xd7, 0x77,
		0x83, 0xb5, 0xb5, 0xdc, 0x01, 0x28, 0xb5, 0x9d, 0xa6, 0xb2, 0x1d, 0xad, 0x43, 0xf7, 0xb1, 0xa7,
		0x13, 0x44, 0x5a, 0x27, 0xa4, 0x6a, 0xe9, 0xa8, 0x1b, 0x5a, 0xde, 0x88, 0x43, 0x15, 0x37, 0xfc,
		0x78, 0x52, 0x39, 0x86, 0x42, 0x76, 0x21, 0x94, 0x57, 0xa8, 0x64, 0x14, 0x72, 0xb9, 0x84, 0x5c,
		0x16, 0xa1, 0x95, 0x3f, 0x64, 0xd1, 0xf2, 0xcc, 0x0d, 0x93, 0x19, 0xcc, 0x64, 0x03, 0x25, 0x5f,
		0xe8, 0x85, 0x3d, 0x99, 0x74, 0xa1, 0x93, 0x6d, 0x48, 0x72, 0x9d, 0x94, 0x52, 0x17, 0x65, 0xd0,
		0x41, 0xa9, 0x75, 0x4f, 0x36, 0x9d, 0x93, 0x4d, 0xd7, 0xe4, 0xd1, 0x31, 0xcd, 0xfa, 0xaf, 0x49,
		0x37, 0xf8, 0x64, 0x20, 0xa7, 0xa7, 0x9f, 0x95, 0xaf, 0xdd, 0x26, 0x2d, 0x0d, 0x9b, 0x18, 0xf2,
		0xab, 0xf1, 0x89, 0x56, 0x94, 0x06, 0x02, 0xc8, 0xa1, 0x80, 0x03, 0x12, 0x18, 0xa1, 0x81, 0x0b,
		0x22, 0xd8, 0xa1, 0x82, 0x1d, 0x32, 0x78, 0xa1, 0x23, 0x9d, 0x62, 0x0c, 0x15, 0xa4, 0x4c, 0x06,
		0x6c, 0x8e, 0x77, 0x15, 0x53, 0x8c, 0x76, 0x34, 0x3e, 0x4f, 0x54, 0xb6, 0x88, 0xa8, 0x2c, 0xa2,
		0xb2, 0x69, 0x82, 0x22, 0x19, 0x48, 0xa2, 0x85, 0x26, 0x62, 0x88, 0x62, 0x83, 0xaa, 0x15, 0xde,
		0x90, 0xfd, 0x55, 0xfd, 0xe0, 0xb3, 0xcc, 0xe5, 0x1e, 0x52, 0x3c, 0x27, 0x93, 0xe5, 0xf0, 0x24,
		0x9c, 0xb0, 0x43, 0x9c, 0x04, 0xd4, 0x09, 0x42, 0x9e, 0x14, 0xf4, 0x89, 0x43, 0xa0, 0x38, 0x14,
		0xca, 0x42, 0x22, 0x0f, 0x34, 0x32, 0x41, 0xe4, 0xe4, 0xd5, 0xb0, 0x25, 0xb0, 0x2c, 0xec, 0x98,
		0x30, 0xe8, 0xe9, 0x58, 0x04, 0x77, 0xa2, 0x28, 0xb6, 0x37, 0xc6, 0xad, 0x33, 0x76, 0xd2, 0x8e,
		0x32, 0xb5, 0x16, 0xea, 0xbb, 0x0e, 0x1d, 0xbb, 0xe7, 0x47, 0xda, 0x79, 0xf4, 0x98, 0x57, 0x25,
		0x54, 0x6d, 0x15, 0x2a, 0xbf, 0xc9, 0x97, 0xa2, 0x33, 0xfe, 0xc3, 0x8b, 0x5e, 0x73, 0x26, 0x76,
		0xf7, 0xf1, 0x43, 0xae, 0x54, 0x2b, 0xd7, 0x4e, 0x72, 0x77, 0xf7, 0x7f, 0xdd, 0xe6, 0x3e, 0x84,
		0x3f, 0xba, 0x3a, 0x78, 0x0a, 0x9d, 0xee, 0xb3, 0xdb, 0xcc, 0x9d, 0x72, 0x28, 0x0d, 0x69, 0x00,
		0xf0, 0x65, 0x40, 0x3e, 0x5d, 0xde, 0x77, 0x32, 0x73, 0x4b, 0x63, 0xfa, 0x52, 0x6c, 0x5f, 0x67,
		0xfd, 0xd9, 0x9f, 0xae, 0xbf, 0x97, 0xcd, 0xd1, 0xeb, 0x99, 0xc2, 0x4c, 0xa6, 0x14, 0x91, 0x85,
		0x79, 0x7e, 0x3c, 0x05, 0xda, 0x0e, 0x9a, 0x76, 0x33, 0xe8, 0x74, 0x43, 0x15, 0x45, 0xaa, 0x65,
		0x7b, 0xca, 0x69, 0x0f, 0x26, 0xcd, 0x4a, 0xce, 0x11, 0xc3, 0x12, 0xbc, 0x26, 0x27, 0x9a, 0xd3,
		0x9b, 0x58, 0xc5, 0x88, 0xe2, 0x49, 0x41, 0x89, 0x40, 0x89, 0x40, 0x89, 0x40, 0x89, 0x32, 0x45,
		0x89, 0xdc, 0xd6, 0x00, 0xc6, 0xf4, 0x8f, 0x50, 0xb5, 0x25, 0xd8, 0x10, 0x63, 0x5a, 0xb1, 0x75,
		0x31, 0xfa, 0x2a, 0x7f, 0x38, 0x91, 0xc0, 0xfe, 0x9c, 0x38, 0xfc, 0xf7, 0x7f, 0xdd, 0x36, 0x4e,
		0x3f, 0x3d, 0xfc, 0x77, 0xe3, 0xe1, 0xdf, 0xb7, 0xe7, 0xdc, 0x9b, 0x34, 0xce, 0xd8, 0x8e, 0xd8,
		0x09, 0x93, 0x0c, 0x69, 0x5a, 0xf1, 0x1e, 0xaf, 0xce, 0x2a, 0x59, 0x77, 0x8d, 0xeb, 0xc0, 0x31,
		0xb8, 0xc6, 0xe6, 0x5d, 0x63, 0xe5, 0xb3, 0xaa, 0x38, 0x93, 0xbd, 0x3b, 0x9a, 0x87, 0xc9, 0x88,
		0xce, 0x54, 0xdb, 0xe9, 0x79, 0x9a, 0x15, 0xf4, 0xac, 0xf8, 0x4e, 0x08, 0x0f, 0xec, 0xd4, 0x41,
		0x0c, 0x40, 0x0c, 0x40, 0x0c, 0x40, 0x0c, 0x32, 0x45, 0x0c, 0x1e, 0x83, 0xc0, 0x53, 0x8e, 0x2f,
		0x41, 0x0a, 0x8a, 0xf0, 0x69, 0xb6, 0xd4, 0xa7, 0x49, 0x75, 0x8a, 0x06, 0xf3, 0x42, 0x4a, 0xdf,
		0xe3, 0x59, 0x76, 0xa1, 0x64, 0xfa, 0xc3, 0xfc, 0xbc, 0x62, 0x99, 0x1f, 0x65, 0xa6, 0xed, 0x40,
		0x55, 0x96, 0xe1, 0x0d, 0x34, 0xb6, 0x14, 0xbf, 0xe1, 0xf0, 0x19, 0xcb, 0xf0, 0x2b, 0x21, 0xc3,
		0x4f, 0xd0, 0x75, 0x43, 0x86, 0xdf, 0x36, 0x1e, 0x1f, 0xc8, 0xf0, 0x03, 0x6b, 0x05, 0x6b, 0x05,
		0x6b, 0x05, 0x6b, 0x4d, 0x11, 0x6b, 0x45, 0x86, 0xdf, 0xef, 0x9e, 0x1a, 0x19, 0x7e, 0x09, 0x4d,
		0x0c, 0x19, 0x7e, 0xc8, 0xf0, 0x43, 0x86, 0x5f, 0xc2, 0x3f, 0x75, 0x24, 0xac, 0x21, 0x61, 0x0d,
		0x1e, 0x3e, 0x3c, 0x7c, 0x78, 0xf8, 0xf0, 0xf0, 0xd7, 0xda, 0x31, 0x48, 0x58, 0x4b, 0xea, 0xbf,
		0x22, 0x61, 0x8d, 0xf8, 0x3d, 0x22, 0x61, 0x4d, 0x1e, 0xc7, 0x90, 0x7f, 0x85, 0xfc, 0xab, 0xb7,
		0xda, 0x36, 0xfc, 0x5c, 0xf8, 0xb9, 0xf0, 0x73, 0xe1, 0xe7, 0x66, 0xca, 0xcf, 0xcd, 0x7e, 0xfe,
		0x15, 0xd2, 0x89, 0x48, 0xc7, 0x4f, 0x75, 0x3a, 0x11, 0x41, 0x99, 0x67, 0xbe, 0xd5, 0x46, 0x45,
		0x79, 0xd3, 0xf6, 0x91, 0x9a, 0x4a, 0xf3, 0x17, 0xe3, 0x07, 0x6c, 0x70, 0x28, 0xf5, 0x04, 0x25,
		0xe7, 0x09, 0xaa, 0xa9, 0x3e, 0x3a, 0x7e, 0xeb, 0x6f, 0xb7, 0xa5, 0x9f, 0xed, 0x99, 0x16, 0x61,
		0x11, 0x7d, 0xdd, 0xcc, 0x15, 0xf3, 0xa0, 0x7e, 0x66, 0x0a, 0xbd, 0x65, 0xd4, 0xcf, 0x34, 0xe3,
		0xed, 0x6e, 0x79, 0xfd, 0xcc, 0xa5, 0x10, 0xc0, 0x97, 0x6b, 0xbb, 0x7c, 0x3a, 0xe4, 0xde, 0x22,
		0xf7, 0xd6, 0x3c, 0x5d, 0x47, 0xee, 0xad, 0x20, 0xd7, 0x62, 0xcb, 0xbd, 0xed, 0x86, 0x6e, 0x10,
		0xba, 0x5a, 0x20, 0xe3, 0x76, 0x32, 0x13, 0xd4, 0x49, 0xa8, 0x93, 0x50, 0x27, 0xa1, 0x4e, 0x66,
		0x4a, 0x9d, 0xf4, 0x94, 0xd3, 0x16, 0x8a, 0xc0, 0xd7, 0x18, 0xe7, 0xb8, 0x1d, 0xa9, 0x25, 0xef,
		0xdf, 0x8f, 0x5a, 0xe3, 0x4d, 0x50, 0x79, 0x87, 0xa3, 0x96, 0x3c, 0x17, 0xe6, 0x16, 0x4c, 0x88,
		0xe3, 0xe2, 0x1c, 0xb3, 0x13, 0x8f, 0xd3, 0x0f, 0xa7, 0x1f, 0x4e, 0xbf, 0xb4, 0x9e, 0x7e, 0x5c,
		0xa4, 0x60, 0x32, 0x81, 0xd3, 0xd4, 0xee, 0x37, 0x35, 0xa7, 0x76, 0xda, 0x71, 0x2f, 0x55, 0xb9,
		0xe4, 0xad, 0xd5, 0x8f, 0xc0, 0x6c, 0x77, 0xbc, 0x74, 0x42, 0x0c, 0x58, 0x25, 0x01, 0xd6, 0x00,
		0xd0, 0x4a, 0x03, 0xae, 0x31, 0xe0, 0x35, 0x06, 0xc0, 0x66, 0x80, 0x98, 0x17, 0x90, 0x99, 0x81,
		0x59, 0x8e, 0x9e, 0x2c, 0xec, 0xb8, 0x27, 0xa7, 0xf7, 0xa4, 0xaa, 0x65, 0x89, 0x1d, 0x37, 0x02,
		0xc8, 0x23, 0x81, 0xa9, 0xee, 0x1c, 0xff, 0x49, 0x89, 0xa4, 0xd4, 0xe6, 0xc4, 0xd2, 0x6a, 0xe3,
		0x2f, 0x76, 0xe5, 0xfa, 0x62, 0x90, 0x35, 0x99, 0x34, 0xce, 0x50, 0xe6, 0x3f, 0x71, 0x16, 0xe6,
		0xfd, 0x18, 0x0e, 0x0e, 0xf3, 0xc0, 0x3f, 0x73, 0x9f, 0x5c, 0x1d, 0x19, 0x78, 0x80, 0x6b, 0xf5,
		0xe4, 0x0c, 0xbc, 0x09, 0xeb, 0x24, 0x17, 0x67, 0x5f, 0x8a, 0xcd, 0xde, 0x7f, 0x27, 0x68, 0x52,
		0xce, 0x77, 0x73, 0x26, 0x55, 0x3c, 0x2a, 0x97, 0xab, 0xb5, 0x72, 0xb9, 0x50, 0x3b, 0xac, 0x15,
		0x8e, 0x2b, 0x95, 0x62, 0x95, 0xf3, 0x3e, 0x01, 0xac, 0x4c, 0xf0, 0xac, 0x94, 0x9b, 0xa5, 0x9e,
		0xd1, 0x2b, 0x9e, 0x8c, 0xbb, 0xdc, 0x72, 0xbe, 0x39, 0xae, 0xe7, 0x3c, 0x7a, 0xca, 0x9e, 0x84,
		0x84, 0x05, 0x39, 0xd8, 0x92, 0xc9, 0xc1, 0xbe, 0xc0, 0xbe, 0xc0, 0xbe, 0xc0, 0xbe, 0xc0, 0xbe,
		0x96, 0xa6, 0xeb, 0x74, 0x1e, 0xbb, 0xd1, 0x96, 0x91, 0xb0, 0x4f, 0xfe, 0xd0, 0x9f, 0xb2, 0xae,
		0x84, 0xbe, 0x1b, 0x58, 0x1f, 0x58, 0x1f, 0x58, 0x1f, 0x58, 0x1f, 0xac, 0x0c, 0xac, 0x6f, 0x37,
		0x59, 0xdf, 0xb3, 0xfb, 0xf4, 0xfc, 0xb7, 0xa3, 0x55, 0x68, 0x77, 0x9c, 0xf0, 0xab, 0x1c, 0xe1,
		0x7b, 0x35, 0x2f, 0xb8, 0x1e, 0xb8, 0x1e, 0xb8, 0x1e, 0xb8, 0x1e, 0xb8, 0x1e, 0xb8, 0x1e, 0xb8,
		0x1e, 0xb8, 0x1e, 0xbc, 0x70, 0x70, 0x3d, 0x70, 0x3d, 0x70, 0x3d, 0x70, 0x3d, 0x42, 0xa3, 0x62,
		0xbf, 0x88, 0xb5, 0xe0, 0xc1, 0x30, 0x5f, 0xc8, 0x02, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf,
		0xcb, 0x28, 0xbf, 0xeb, 0xf9, 0x42, 0xf5, 0xec, 0xc7, 0x37, 0x77, 0x8e, 0x05, 0xe6, 0x1a, 0xbd,
		0xc6, 0xad, 0x63, 0x59, 0x93, 0x45, 0x73, 0x7d, 0x7d, 0x64, 0x09, 0xfa, 0xe2, 0xa3, 0xc5, 0x13,
		0x74, 0x81, 0x85, 0xa9, 0xb2, 0xfc, 0x62, 0x1a, 0xa5, 0xce, 0xa6, 0x29, 0x74, 0x6a, 0x48, 0x8e,
		0x79, 0xb2, 0x63, 0x80, 0x5a, 0x1b, 0xa5, 0xd8, 0x0b, 0xa6, 0x57, 0x83, 0xe9, 0x99, 0x36, 0xbd,
		0xbd, 0xed, 0x9c, 0xad, 0xbe, 0xb7, 0x45, 0x1b, 0xd7, 0x80, 0x9b, 0xa1, 0xfc, 0x5e, 0x47, 0x85,
		0x52, 0x1d, 0x8f, 0x16, 0x3c, 0xc5, 0xb2, 0xe0, 0x9c, 0xe7, 0x7e, 0xaf, 0x23, 0xaf, 0x36, 0x3e,
		0x04, 0xf7, 0x3a, 0x74, 0xfd, 0x27, 0x23, 0x20, 0x6c, 0x15, 0x06, 0x6b, 0x7c, 0x7a, 0x79, 0x69,
		0xed, 0x6d, 0xf1, 0x39, 0x67, 0x3d, 0x04, 0x17, 0x02, 0x17, 0x79, 0x97, 0x13, 0xe0, 0xcb, 0xcb,
		0xc1, 0xb1, 0xb2, 0xa5, 0xe8, 0x0a, 0x95, 0xd6, 0xec, 0xf3, 0x73, 0xaa, 0xb4, 0xc3, 0x7b, 0xe8,
		0xaa, 0x65, 0xe2, 0x1a, 0xc6, 0x92, 0xb9, 0xa1, 0xdc, 0xae, 0x35, 0x11, 0x94, 0x5b, 0x5a, 0xf3,
		0x80, 0x72, 0x0b, 0xe5, 0xf6, 0xb7, 0x6e, 0x06, 0x32, 0x73, 0x28, 0xa7, 0x42, 0x66, 0x0e, 0x99,
		0xc6, 0x83, 0xcc, 0x9c, 0x5d, 0xd0, 0x72, 0x90, 0x99, 0x03, 0x2b, 0x03, 0xe7, 0xdb, 0x7a, 0xce,
		0x97, 0xa9, 0xc2, 0x6d, 0xcc, 0x9d, 0x73, 0x26, 0xf3, 0xa4, 0xab, 0x43, 0xca, 0xf2, 0xf6, 0x19,
		0xcb, 0x7f, 0xcc, 0xd1, 0x5f, 0x87, 0xcf, 0x56, 0xd2, 0x5d, 0x3b, 0xfc, 0x9f, 0xea, 0x07, 0x63,
		0xba, 0x97, 0x75, 0xe9, 0x46, 0xfa, 0x54, 0x6b, 0xa6, 0xfa, 0xe4, 0x57, 0xae, 0x7f, 0xee, 0xa9,
		0x01, 0xe7, 0x62, 0x3a, 0x4f, 0x06, 0x87, 0xf6, 0xcc, 0x0c, 0x32, 0xa7, 0xa8, 0x75, 0x13, 0xb6,
		0x54, 0xa8, 0x5a, 0x7f, 0x0c, 0x56, 0xc6, 0xef, 0x79, 0x1e, 0xe7, 0x14, 0x9f, 0x22, 0x15, 0xb2,
		0x1c, 0x88, 0x68, 0x28, 0x26, 0x05, 0x87, 0x16, 0x4b, 0xd5, 0x63, 0x92, 0xb6, 0x52, 0x7f, 0x8c,
		0x9f, 0xf7, 0x6e, 0xe6, 0x71, 0xd1, 0x17, 0xcd, 0x9c, 0xb9, 0x67, 0xc2, 0xcc, 0xb7, 0xa9, 0xfd,
		0x58, 0x73, 0x2c, 0x5f, 0x13, 0xb7, 0x1b, 0x1b, 0x8d, 0x8b, 0xf6, 0x62, 0x89, 0xdf, 0x24, 0xda,
		0x8b, 0x4d, 0x27, 0x40, 0x7b, 0xb1, 0x14, 0xb7, 0x17, 0x9b, 0x62, 0xa9, 0xdb, 0xe2, 0xeb, 0x2a,
		0x36, 0x37, 0x0b, 0x4f, 0x33, 0xb1, 0x02, 0x57, 0x33, 0xb1, 0x02, 0x9a, 0x89, 0x09, 0xc0, 0x90,
		0x18, 0x1c, 0x89, 0xc1, 0x92, 0x0c, 0x3c, 0x65, 0x43, 0x10, 0x60, 0x0b, 0xc9, 0x49, 0x20, 0xcc,
		0x9c, 0x33, 0x73, 0xb4, 0xd3, 0x7c, 0xf6, 0xc7, 0x53, 0xa0, 0xed, 0xa0, 0x69, 0x37, 0x83, 0x4e,
		0x37, 0x54, 0x51, 0xa4, 0x5a, 0xb6, 0xa7, 0x9c, 0xf6, 0x60, 0xb2, 0x3e, 0x18, 0x18, 0x18, 0xd8,
		0x88, 0x81, 0x8d, 0x78, 0xc4, 0x16, 0x31, 0xae, 0x67, 0xe5, 0x79, 0x01, 0x43, 0x83, 0xe7, 0xd1,
		0xb8, 0x60, 0x5c, 0x60, 0x5c, 0x60, 0x5c, 0xbb, 0xc1, 0xb8, 0x88, 0xc5, 0x1b, 0x5e, 0x11, 0x87,
		0x09, 0x5a, 0xc0, 0xb2, 0xc0, 0xb2, 0xc0, 0xb2, 0x32, 0xd3, 0xb2, 0x39, 0xf6, 0x52, 0xec, 0xd8,
		0xbf, 0xfb, 0xe6, 0x78, 0xfc, 0x7d, 0x2b, 0x5f, 0xcd, 0xc7, 0xd5, 0xcc, 0x4e, 0xb5, 0x9d, 0x9e,
		0xa7, 0x59, 0x33, 0x0d, 0xad, 0xe3, 0x42, 0xa1, 0xc0, 0x93, 0x54, 0x50, 0x47, 0x57, 0x6b, 0x69,
		0xe4, 0x17, 0x3c, 0x01, 0xa4, 0x4e, 0x02, 0xf1, 0x13, 0x41, 0xfc, 0x64, 0x90, 0x3d, 0x21, 0x78,
		0x4e, 0x0a, 0xa6, 0x13, 0x83, 0x5f, 0x9f, 0x5b, 0xd8, 0x31, 0x3d, 0xd7, 0xd7, 0xc5, 0xaa, 0x40,
		0x53, 0xeb, 0x2a, 0xe3, 0x14, 0x32, 0x19, 0xea, 0x02, 0x17, 0x18, 0x24, 0x33, 0xd2, 0xa7, 0x69,
		0xc3, 0x85, 0x82, 0x50, 0x96, 0xae, 0xb1, 0xf4, 0x60, 0xf9, 0xb4, 0x60, 0x81, 0xa4, 0x73, 0xd1,
		0x64, 0xf3, 0x89, 0xb5, 0x54, 0x0b, 0x30, 0x97, 0xac, 0x1c, 0x4f, 0xfc, 0xa3, 0xd7, 0x33, 0x75,
		0xac, 0xaa, 0xef, 0x3a, 0x74, 0xec, 0x9e, 0x1f, 0x69, 0xe7, 0xd1, 0x63, 0x3e, 0x60, 0x43, 0xd5,
		0x56, 0xa1, 0xf2, 0x9b, 0x5b, 0x71, 0x2e, 0x8d, 0xbd, 0x85, 0xbb, 0x8f, 0x1f, 0x72, 0x87, 0xa5,
		0xc2, 0xf1, 0x49, 0xee, 0xee, 0xfe, 0xaf, 0x5b, 0xfb, 0xe1, 0xfc, 0x24, 0x77, 0xfe, 0x5d, 0x2b,
		0x3f, 0x72, 0x03, 0x3f, 0xca, 0xe9, 0x20, 0xfe, 0x71, 0xae, 0x1d, 0x84, 0x5f, 0xfc, 0xcb, 0xfb,
		0xdb, 0xdc, 0x43, 0xcf, 0xf7, 0x95, 0x17, 0xbd, 0xff, 0xe2, 0x0f, 0x3e, 0x58, 0x29, 0x1f, 0x57,
		0x4e, 0x72, 0x67, 0x2a, 0x6a, 0x86, 0x6e, 0x77, 0xb0, 0xad, 0x73, 0x41, 0x3b, 0xa7, 0x9f, 0x55,
		0xee, 0x4e, 0x45, 0xb1, 0x53, 0xfd, 0xc5, 0x9f, 0xc9, 0x20, 0xcc, 0x8d, 0x33, 0x0e, 0x73, 0x76,
		0xee, 0x21, 0x74, 0xda, 0x6d, 0xb7, 0x69, 0x9f, 0xfb, 0x4f, 0xae, 0xaf, 0x54, 0xa8, 0x5a, 0x5f,
		0xfc, 0xfd, 0xd1, 0x13, 0x1c, 0xe4, 0xfe, 0x0c, 0x9d, 0xa6, 0x6a, 0xf7, 0xbc, 0xc1, 0x38, 0xda,
		0x09, 0xf5, 0xe0, 0x93, 0x4d, 0xd5, 0xea, 0x85, 0x2a, 0xda, 0xf2, 0x3b, 0xb7, 0x53, 0x1b, 0xdb,
		0xa5, 0x6b, 0xb7, 0x99, 0x33, 0x42, 0x9c, 0x1e, 0x5b, 0x71, 0x7a, 0x48, 0xdd, 0xd9, 0x11, 0x0b,
		0xea, 0xf3, 0x2d, 0x30, 0xc3, 0x12, 0x0c, 0xc0, 0x2e, 0x54, 0xd1, 0xb3, 0x1d, 0xaa, 0x56, 0xaf,
		0xc9, 0xba, 0x0a, 0x33, 0xf5, 0x36, 0x5e, 0x4f, 0x99, 0x65, 0xe9, 0x73, 0x00, 0xd7, 0x90, 0x3e,
		0x67, 0x86, 0x87, 0xf4, 0x99, 0x4a, 0x4f, 0x07, 0xd2, 0x67, 0x16, 0xce, 0xef, 0xec, 0x4b, 0x9f,
		0x8f, 0x41, 0xe0, 0x29, 0xc7, 0x17, 0xd0, 0x3e, 0x8b, 0x45, 0xd0, 0xe4, 0x5d, 0xa3, 0xc9, 0xa5,
		0xe3, 0x6a, 0x71, 0xc8, 0x44, 0xee, 0x86, 0x5e, 0x44, 0xee, 0xe6, 0x9b, 0x0a, 0x9f, 0x95, 0xd3,
		0xca, 0xdd, 0x8d, 0xdd, 0x89, 0x2f, 0xfe, 0x94, 0xb8, 0x80, 0xaa, 0x6e, 0x29, 0x55, 0x5d, 0xdb,
		0x10, 0x40, 0x17, 0x41, 0x17, 0x77, 0x8c, 0x2e, 0xe2, 0x52, 0x7a, 0x6a, 0x72, 0xc5, 0x87, 0x19,
		0xd0, 0xa4, 0x29, 0xe3, 0xf4, 0xcb, 0x4c, 0xb8, 0xc4, 0xd6, 0xb0, 0xce, 0x08, 0x5b, 0xfa, 0xe7,
		0x70, 0xf8, 0x8c, 0x65, 0x7f, 0x96, 0x90, 0xfd, 0x29, 0xe8, 0x37, 0x21, 0xfb, 0x73, 0x1b, 0x8f,
		0x0d, 0x64, 0x7f, 0xae, 0xf7, 0xba, 0x90, 0xfd, 0xf9, 0x0b, 0xa4, 0x87, 0x04, 0x6a, 0xf4, 0x04,
		0x90, 0x66, 0xd0, 0x90, 0x40, 0xb3, 0xc0, 0x49, 0x91, 0xfd, 0xf9, 0x66, 0xfc, 0x42, 0xf6, 0xe7,
		0x1b, 0xbe, 0x08, 0xb2, 0x3f, 0xb9, 0xcc, 0x1d, 0xd9, 0x9f, 0x44, 0xd6, 0x82, 0xec, 0xcf, 0xec,
		0x1c, 0x4f, 0xfc, 0xa3, 0x23, 0xfb, 0x73, 0xd5, 0x5c, 0xc8, 0xfe, 0x44, 0xf6, 0x27, 0x37, 0x31,
		0x40, 0xf6, 0x27, 0xb2, 0x3f, 0x71, 0x7a, 0xf0, 0x3f, 0x2f, 0x92, 0x19, 0x53, 0xa8, 0xe4, 0x21,
		0x99, 0x11, 0x4a, 0x1e, 0x94, 0x3c, 0x28, 0x79, 0x50, 0xf2, 0x90, 0xcc, 0x08, 0xd6, 0xc7, 0xcd,
		0xfa, 0x90, 0xcc, 0x08, 0xe6, 0x85, 0x64, 0xc6, 0xdd, 0x64, 0x3f, 0xc8, 0xcd, 0x4b, 0x5b, 0x6e,
		0x1e, 0x43, 0x67, 0x2c, 0xd4, 0xf7, 0xcd, 0xbe, 0x5d, 0x58, 0xa4, 0x49, 0x91, 0x24, 0xad, 0x81,
		0xfe, 0x7b, 0xf8, 0x60, 0x5b, 0x54, 0x78, 0x98, 0xa5, 0x3f, 0x03, 0x67, 0xd5, 0x74, 0x62, 0xdd,
		0x01, 0x45, 0x88, 0x51, 0x84, 0xd8, 0x84, 0x0e, 0x90, 0xae, 0x63, 0x85, 0x9c, 0xd7, 0x4f, 0x2c,
		0xd6, 0x53, 0x4e, 0x3b, 0x54, 0x6d, 0x4a, 0x8b, 0x1d, 0xf3, 0xf6, 0x1a, 0xe1, 0x98, 0xb7, 0xa3,
		0x93, 0xef, 0xfd, 0xfb, 0xd1, 0x4d, 0x81, 0xfc, 0x1c, 0x74, 0x6d, 0x25, 0xe0, 0x0f, 0x96, 0x85,
		0x11, 0xf1, 0xe9, 0x56, 0x7d, 0xd7, 0xeb, 0xce, 0xbb, 0x6d, 0x00, 0xbe, 0x01, 0xc0, 0x77, 0xdb,
		0xa8, 0x39, 0xff, 0xc6, 0x01, 0x51, 0x73, 0x9e, 0x11, 0x5e, 0x38, 0x61, 0x86, 0x1d, 0x6e, 0xa4,
		0xe4, 0xcd, 0xed, 0xbf, 0x73, 0x44, 0x09, 0x47, 0xd9, 0x10, 0xc3, 0xd8, 0x6e, 0x1c, 0x4d, 0x9c,
		0x14, 0xfe, 0x2c, 0x85, 0xe9, 0x54, 0x08, 0xc3, 0x4b, 0x83, 0x9a, 0x18, 0xb8, 0x49, 0x81, 0x9c,
		0x38, 0xd8, 0x89, 0x83, 0x9e, 0x24, 0xf8, 0xf1, 0x80, 0x20, 0x13, 0x18, 0xf2, 0x51, 0x75, 0x41,
		0xea, 0x2e, 0x41, 0xe5, 0x57, 0x52, 0xfb, 0x7c, 0x6c, 0x46, 0x27, 0x13, 0x40, 0x8e, 0x5e, 0xff,
		0x60, 0xf4, 0xbf, 0x63, 0x91, 0x18, 0x95, 0x39, 0x96, 0xcc, 0x83, 0x42, 0x8e, 0x4b, 0x5f, 0x4b,
		0xd4, 0x7b, 0x14, 0x74, 0x28, 0xe6, 0x66, 0x83, 0x4f, 0x01, 0x9f, 0x02, 0x3e, 0x05, 0x7c, 0x0a,
		0xf8, 0x14, 0x29, 0xf5, 0x29, 0x3e, 0x4f, 0x7d, 0x8a, 0xff, 0x6a, 0xf6, 0xc2, 0x50, 0xf9, 0x7a,
		0xff, 0x20, 0xff, 0xfe, 0xfd, 0x34, 0xbc, 0x50, 0x1f, 0x7d, 0x64, 0x16, 0xd7, 0xa3, 0x25, 0x3f,
		0x9b, 0x8c, 0xdc, 0x52, 0xdf, 0xe1, 0x9e, 0x6c, 0xab, 0x7b, 0x92, 0x6a, 0x3d, 0xe6, 0xfc, 0x7b,
		0x7c, 0x6d, 0x95, 0x3e, 0x13, 0x94, 0x5f, 0x12, 0x0c, 0x9a, 0xb6, 0xfa, 0xae, 0x4f, 0xb4, 0xf2,
		0x54, 0x47, 0xe9, 0xf0, 0x87, 0x1d, 0xf8, 0x76, 0xf3, 0x39, 0xbe, 0x68, 0x2f, 0x22, 0x13, 0xc6,
		0xf7, 0x6e, 0x05, 0x74, 0xc2, 0xb4, 0x4b, 0x84, 0x75, 0xe4, 0xcb, 0x25, 0xc8, 0x8b, 0x9a, 0x0b,
		0xae, 0xa2, 0xa4, 0x1d, 0x19, 0xa5, 0x42, 0x49, 0x3b, 0x04, 0x97, 0x52, 0xc1, 0x8d, 0x10, 0x5c,
		0x12, 0x73, 0x66, 0x10, 0x5c, 0x82, 0x10, 0x04, 0x21, 0x08, 0x42, 0x10, 0x84, 0x20, 0x08, 0x41,
		0x02, 0x42, 0x10, 0x7f, 0x70, 0x09, 0xb1, 0x92, 0x45, 0xc7, 0x1e, 0xb1, 0x12, 0x1c, 0x91, 0x38,
		0x22, 0x71, 0x44, 0xe2, 0x88, 0xcc, 0xc0, 0x11, 0x99, 0xa9, 0x58, 0x09, 0xee, 0x25, 0xd3, 0xfa,
		0x05, 0x29, 0xd6, 0x59, 0x71, 0x3d, 0xd9, 0xb4, 0x99, 0xa4, 0xd9, 0x3c, 0x52, 0x78, 0x4b, 0x79,
		0xf2, 0xb7, 0x3b, 0xd5, 0xde, 0xa6, 0xab, 0x6b, 0x83, 0x85, 0x52, 0xb4, 0xd5, 0xe5, 0x26, 0x87,
		0xed, 0xcc, 0xd8, 0xb8, 0xb4, 0x46, 0xe1, 0xe8, 0xe3, 0x9e, 0xb2, 0x90, 0xeb, 0xbe, 0x4b, 0xf7,
		0x94, 0x71, 0x71, 0x2d, 0x87, 0x8b, 0x6b, 0x52, 0x90, 0x23, 0xa5, 0x2a, 0xa0, 0x5d, 0xd6, 0x36,
		0x32, 0x26, 0xb6, 0xf8, 0xe2, 0xe3, 0x8f, 0xae, 0x13, 0x45, 0x76, 0xd0, 0xd5, 0x6e, 0xc7, 0xfd,
		0x7f, 0x4a, 0xb0, 0x71, 0xd6, 0xca, 0x99, 0x21, 0xad, 0x4a, 0xc3, 0x9e, 0x20, 0xfc, 0x49, 0xc1,
		0xa0, 0x38, 0x1c, 0x8a, 0xc3, 0xa2, 0x2c, 0x3c, 0xf2, 0x49, 0x55, 0x39, 0xf4, 0x8a, 0x5a, 0x07,
		0xbf, 0xd0, 0x2b, 0xea, 0x0d, 0x5f, 0xc4, 0x48, 0xaf, 0x28, 0x74, 0xfe, 0xc9, 0x08, 0x2c, 0xcc,
		0x9b, 0x8a, 0x91, 0x46, 0x51, 0x95, 0xca, 0x61, 0x05, 0xe6, 0x92, 0x89, 0xb3, 0x89, 0x7f, 0x74,
		0x74, 0xee, 0x5f, 0x36, 0x0f, 0xee, 0x07, 0x2f, 0x7d, 0x2d, 0x9e, 0xeb, 0x7f, 0xb5, 0xa7, 0xfa,
		0xb2, 0x1d, 0xe9, 0x1f, 0x9e, 0xb2, 0x43, 0xf5, 0x3f, 0x3d, 0x15, 0x69, 0xd5, 0xe2, 0xe7, 0x6d,
		0xbf, 0x7b, 0x80, 0x2c, 0xf7, 0x4d, 0x09, 0x9a, 0x76, 0xa7, 0xeb, 0x45, 0xfa, 0xe4, 0xf2, 0xe2,
		0xfa, 0x9f, 0x8d, 0xeb, 0x9b, 0xb3, 0xf3, 0xc6, 0xed, 0xdd, 0xcd, 0xc3, 0xf9, 0x87, 0x87, 0x8b,
		0x9b, 0xeb, 0xc6, 0xdd, 0xf9, 0xff, 0xfe, 0x74, 0x7e, 0xff, 0x70, 0x7e, 0x86, 0xd6, 0x2a, 0x20,
		0xbe, 0x20, 0xbe, 0x20, 0xbe, 0x20, 0xbe, 0x39, 0xcb, 0x6d, 0x29, 0x5f, 0xbb, 0xfa, 0x87, 0x50,
		0x6e, 0x11, 0xa3, 0xd7, 0x6c, 0x5d, 0x8c, 0xbe, 0xca, 0x1f, 0x4e, 0x24, 0xb0, 0x3f, 0xc7, 0x2f,
		0x70, 0xe6, 0x80, 0x79, 0xf8, 0xf7, 0xed, 0x39, 0xf7, 0x2e, 0x8d, 0x29, 0x48, 0xc4, 0x4e, 0xf2,
		0x65, 0x88, 0xfe, 0xdc, 0x8b, 0x34, 0x71, 0x66, 0x0b, 0xb3, 0x55, 0x13, 0x6f, 0xf4, 0xd5, 0xcb,
		0xbc, 0xb8, 0xc3, 0xbb, 0xdc, 0xe4, 0x5d, 0x7e, 0xba, 0x1e, 0xbd, 0x48, 0x91, 0xd7, 0xc7, 0x3a,
		0x43, 0x1d, 0x87, 0x2c, 0x98, 0xb0, 0xc9, 0x11, 0x91, 0x8f, 0x9a, 0x24, 0xe1, 0x70, 0xca, 0xdd,
		0x71, 0xe9, 0x9f, 0x0a, 0xdd, 0x71, 0xe9, 0x1f, 0x89, 0x39, 0x69, 0x21, 0xe4, 0x48, 0xcc, 0x11,
		0x3c, 0x3a, 0x90, 0x98, 0x43, 0x05, 0x73, 0xd0, 0x27, 0x8d, 0xc2, 0x9f, 0x14, 0x0c, 0x8a, 0xc3,
		0xa1, 0x38, 0x2c, 0xca, 0xc2, 0x63, 0x36, 0xa9, 0x13, 0x12, 0x73, 0xd6, 0x9a, 0x02, 0x89, 0x39,
		0x9b, 0x4c, 0x86, 0xc4, 0x1c, 0x36, 0xb0, 0x41, 0x62, 0x0e, 0xcc, 0xc5, 0xf4, 0xd9, 0xc4, 0x3f,
		0x7a, 0x1d, 0x79, 0x26, 0xc8, 0x33, 0xe1, 0x98, 0x04, 0x79, 0x26, 0xe0, 0x71, 0xe0, 0x71, 0xe0,
		0x71, 0xe0, 0x71, 0x6f, 0xde, 0x31, 0xc8, 0x33, 0x49, 0xf8, 0x02, 0x91, 0x67, 0x42, 0xf4, 0x22,
		0x91, 0x67, 0xc2, 0xf2, 0x46, 0x91, 0x67, 0x42, 0xf2, 0x2e, 0x91, 0x67, 0x62, 0xee, 0x90, 0x45,
		0xda, 0x04, 0xe9, 0xf8, 0xa9, 0x4d, 0x9b, 0x40, 0x0d, 0x2f, 0xd3, 0x36, 0x92, 0x5a, 0xdb, 0x48,
		0x61, 0x01, 0xaf, 0xdb, 0xe9, 0xc3, 0x6d, 0x51, 0xf9, 0x2e, 0xda, 0x84, 0x1e, 0x96, 0x44, 0x1e,
		0xb6, 0xa2, 0x5d, 0x25, 0x14, 0xed, 0xca, 0x92, 0x82, 0x81, 0xa2, 0x5d, 0xe9, 0x2e, 0xda, 0xd5,
		0x1b, 0x40, 0x65, 0xc4, 0x59, 0xb6, 0x6b, 0x34, 0x03, 0xf2, 0x03, 0x91, 0x1f, 0x68, 0x0e, 0x86,
		0xc4, 0xe0, 0x48, 0x06, 0x96, 0xb2, 0xc1, 0x91, 0xd8, 0xf2, 0x03, 0x55, 0x18, 0x06, 0x0c, 0xa0,
		0xb5, 0xb0, 0xa1, 0x46, 0xf3, 0xf0, 0xc6, 0x8c, 0x8a, 0x88, 0x19, 0x99, 0x84, 0x36, 0x29, 0x88,
		0x13, 0x87, 0x3a, 0x71, 0xc8, 0x93, 0x85, 0x3e, 0x66, 0x39, 0x8b, 0x2b, 0xc2, 0xce, 0x04, 0x89,
		0x93, 0x09, 0x9c, 0x9e, 0x7e, 0x56, 0xbe, 0x76, 0x9b, 0xb1, 0xee, 0x60, 0xb7, 0x1d, 0xd7, 0x93,
		0x0b, 0xb3, 0x2c, 0x9b, 0x9c, 0xd9, 0xd6, 0x78, 0x03, 0xef, 0x62, 0x60, 0x2a, 0x09, 0xaa, 0x06,
		0xc0, 0x55, 0x1a, 0x64, 0x8d, 0x81, 0xad, 0x31, 0xd0, 0x35, 0x03, 0xbe, 0xbc, 0x20, 0xcc, 0x0c,
		0xc6, 0x93, 0x57, 0xc6, 0x1e, 0xc8, 0x5f, 0xc5, 0x8a, 0xab, 0x65, 0x89, 0x3d, 0x37, 0x82, 0xc8,
		0x23, 0x81, 0xa9, 0x64, 0x72, 0xb5, 0xc7, 0x7f, 0x64, 0x30, 0x24, 0x27, 0x9d, 0xbb, 0x3d, 0x99,
		0x54, 0x38, 0x87, 0x7b, 0x32, 0xaf, 0xa9, 0xe4, 0xdc, 0xe9, 0x36, 0x91, 0x4e, 0xd2, 0x15, 0x42,
		0x9a, 0x79, 0x93, 0x12, 0xcc, 0xf1, 0x5e, 0x30, 0xa9, 0xe2, 0x51, 0xb9, 0x5c, 0xad, 0x95, 0xcb,
		0x85, 0xda, 0x61, 0xad, 0x70, 0x5c, 0xa9, 0x14, 0xab, 0xc5, 0x0a, 0xac, 0x4c, 0xca, 0xca, 0xf6,
		0xb6, 0x63, 0x96, 0x7a, 0x46, 0x53, 0xdb, 0x19, 0x77, 0xb9, 0xf5, 0xe8, 0xb4, 0xec, 0xe6, 0xb3,
		0x6a, 0x7e, 0x8d, 0x7a, 0x1d, 0x39, 0xe2, 0x35, 0x37, 0x2b, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17,
		0x18, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17,
		0x18, 0xd7, 0x16, 0x33, 0xae, 0xae, 0xd3, 0xfc, 0xaa, 0xb4, 0xdd, 0x0e, 0xc2, 0x8e, 0xa3, 0x65,
		0x69, 0xd7, 0xfc, 0xd4, 0xe0, 0x5e, 0xe0, 0x5e, 0xe0, 0x5e, 0xe0, 0x5e, 0xe0, 0x5e, 0xe0, 0x5e,
		0xe0, 0x5e, 0xe0, 0x5e, 0xe0, 0x5e, 0xe0, 0x5e, 0xe0, 0x5e, 0xe0, 0x5e, 0xdb, 0xcf, 0xbd, 0x3c,
		0xe5, 0x3f, 0xc5, 0x17, 0x12, 0xe5, 0xb9, 0xd7, 0x68, 0x6a, 0x70, 0x2f, 0x70, 0x2f, 0x70, 0x2f,
		0x70, 0x2f, 0x70, 0x2f, 0x70, 0x2f, 0x70, 0x2f, 0x70, 0x2f, 0x70, 0x2f, 0x70, 0x2f, 0x70, 0x2f,
		0x70, 0xaf, 0x2d, 0xe5, 0x5e, 0x41, 0x4f, 0xdb, 0x41, 0xdb, 0x0e, 0xc2, 0x96, 0x0a, 0xe5, 0x68,
		0xd7, 0xdc, 0xac, 0x60, 0x5c, 0x60, 0x5c, 0x60, 0x5c, 0x60, 0x5c, 0x60, 0x5c, 0x60, 0x5c, 0x60,
		0x5c, 0x60, 0x5c, 0x60, 0x5c, 0x60, 0x5c, 0x60, 0x5c, 0x60, 0x5c, 0x5b, 0xca, 0xb8, 0x42, 0xd5,
		0x54, 0xee, 0x37, 0xd5, 0xb2, 0x7d, 0xa7, 0xf9, 0x55, 0x8e, 0x72, 0xcd, 0x4f, 0x0b, 0xce, 0x05,
		0xce, 0x05, 0xce, 0x05, 0xce, 0x05, 0xce, 0x05, 0xce, 0x05, 0xce, 0x05, 0xce, 0x05, 0xce, 0x05,
		0xce, 0x05, 0xce, 0x05, 0xce, 0xb5, 0xa5, 0x9c, 0x4b, 0x87, 0x8e, 0x1f, 0x75, 0x5c, 0x1d, 0x17,
		0x13, 0xec, 0x85, 0x82, 0x3d, 0xa3, 0x16, 0x66, 0x06, 0xf3, 0x02, 0xf3, 0x02, 0xf3, 0x02, 0xf3,
		0x02, 0xf3, 0x02, 0xf3, 0x02, 0xf3, 0x02, 0xf3, 0x02, 0xf3, 0x02, 0xf3, 0x02, 0xf3, 0x02, 0xf3,
		0xda, 0x76, 0xe6, 0xf5, 0x3f, 0x3d, 0xd5, 0x53, 0x76, 0xbb, 0xe7, 0x79, 0x06, 0xc8, 0xd7, 0xcc,
		0xe4, 0xe0, 0x5f, 0xe0, 0x5f, 0xe0, 0x5f, 0xe0, 0x5f, 0xe0, 0x5f, 0xe0, 0x5f, 0xe0, 0x5f, 0xe0,
		0x5f, 0xe0, 0x5f, 0xe0, 0x5f, 0xe0, 0x5f, 0xe0, 0x5f, 0x5b, 0xca, 0xbf, 0x7a, 0xfe, 0x57, 0x3f,
		0xf8, 0xdb, 0xb7, 0x45, 0x73, 0x0d, 0x67, 0x27, 0x05, 0xdf, 0x02, 0xdf, 0x02, 0xdf, 0x02, 0xdf,
		0x02, 0xdf, 0x02, 0xdf, 0x02, 0xdf, 0x02, 0xdf, 0x02, 0xdf, 0x02, 0xdf, 0x02, 0xdf, 0x02, 0xdf,
		0xda, 0x72, 0xbe, 0xe5, 0x1b, 0x21, 0x5c, 0xb8, 0xdb, 0x05, 0xc6, 0x05, 0xc6, 0x05, 0xc6, 0x05,
		0xc6, 0x05, 0xc6, 0x05, 0xc6, 0x05, 0xc6, 0x05, 0xc6, 0x05, 0xc6, 0x05, 0x2b, 0x03, 0xe3, 0x32,
		0xce, 0xb8, 0xf6, 0x32, 0x84, 0x1d, 0xd6, 0xa9, 0xef, 0x07, 0xda, 0x19, 0xec, 0x14, 0x56, 0xb8,
		0xb0, 0xa2, 0xe6, 0xb3, 0xea, 0x38, 0x5d, 0x27, 0x2e, 0x78, 0x6f, 0xe5, 0x83, 0xae, 0xf2, 0x9b,
		0x31, 0xeb, 0xb1, 0x7d, 0xa5, 0xff, 0x0e, 0xc2, 0xaf, 0xb6, 0xeb, 0x47, 0xda, 0xf1, 0x9b, 0x2a,
		0xff, 0xfa, 0x07, 0xd1, 0xc2, 0x4f, 0xf2, 0x9d, 0xae, 0x17, 0xe5, 0x23, 0xf7, 0xc9, 0x77, 0x3c,
		0xd7, 0x7f, 0xb2, 0xbb, 0x61, 0xa0, 0x83, 0x66, 0xe0, 0x45, 0xf9, 0x81, 0x43, 0x6a, 0x6b, 0x95,
		0x77, 0x07, 0x0e, 0x50, 0xdb, 0x69, 0x2a, 0xdb, 0xd1, 0x3a, 0x74, 0x1f, 0x7b, 0x5a, 0x45, 0xd3,
		0x1f, 0xe6, 0x23, 0xed, 0x68, 0x95, 0x1f, 0xf9, 0x49, 0x51, 0x5e, 0x85, 0x61, 0x10, 0x46, 0x8c,
		0xde, 0x92, 0x15, 0xe9, 0xb0, 0xd7, 0xd4, 0xfe, 0xc8, 0x41, 0xbb, 0x1e, 0x7e, 0x9f, 0x8b, 0xd1,
		0xd7, 0x69, 0x5c, 0x75, 0xbd, 0xa8, 0x71, 0x3f, 0xfe, 0x3a, 0xb7, 0xe3, 0x6f, 0xd3, 0xb8, 0x8b,
		0xbe, 0x75, 0x1f, 0x54, 0xe3, 0x62, 0xfc, 0xdc, 0x8d, 0x0f, 0xa3, 0x27, 0x6e, 0x9c, 0x0f, 0x9f,
		0x78, 0x2f, 0x1b, 0x06, 0xcc, 0x60, 0xbc, 0x96, 0x1b, 0x87, 0x5c, 0xed, 0x8e, 0x8a, 0x22, 0xe7,
		0x49, 0x45, 0x6c, 0xd6, 0x3b, 0xf1, 0xaa, 0x5f, 0x4f, 0xc8, 0xb4, 0x21, 0x79, 0x25, 0x07, 0x76,
		0xa9, 0x41, 0x42, 0x62, 0x10, 0x94, 0x16, 0xa4, 0x24, 0x05, 0x71, 0x29, 0x41, 0x5c, 0x42, 0x90,
		0x95, 0x0e, 0xb2, 0x75, 0x08, 0xb3, 0x4b, 0x04, 0xa2, 0xd2, 0x80, 0x80, 0x24, 0x20, 0x24, 0x05,
		0x08, 0x68, 0x36, 0x92, 0xd4, 0x5f, 0x9a, 0xf2, 0x1b, 0x23, 0x61, 0xf2, 0xe4, 0x4b, 0x80, 0xda,
		0x8b, 0x52, 0xfa, 0x14, 0x50, 0xf9, 0x5d, 0xb2, 0x9e, 0x8c, 0x52, 0xdd, 0xfa, 0x6e, 0xf3, 0x8f,
		0x67, 0xe5, 0x79, 0x81, 0x2c, 0x03, 0x79, 0x35, 0x25, 0x38, 0x08, 0x38, 0x08, 0x38, 0x08, 0x38,
		0x08, 0x38, 0x08, 0x38, 0x08, 0x38, 0x08, 0x38, 0x08, 0x38, 0x08, 0xac, 0x07, 0x1c, 0x64, 0x97,
		0x38, 0x48, 0xd7, 0xd1, 0xcf, 0x76, 0x1c, 0xbf, 0x92, 0x25, 0x22, 0xcb, 0xe6, 0x05, 0x1b, 0x01,
		0x1b, 0x01, 0x1b, 0x01, 0x1b, 0x01, 0x1b, 0x01, 0x1b, 0x01, 0x1b, 0x01, 0x1b, 0x01, 0x1b, 0x81,
		0xf5, 0x80, 0x8d, 0xec, 0x1c, 0x1b, 0x91, 0xe7, 0x21, 0x60, 0x20, 0x60, 0x20, 0x60, 0x20, 0x60,
		0x20, 0x60, 0x20, 0x60, 0x20, 0x60, 0x20, 0xf0, 0x21, 0xc1, 0x40, 0x60, 0x3d, 0x60, 0x20, 0xbb,
		0xcb, 0x40, 0xb4, 0x72, 0x4c, 0x84, 0x43, 0xe6, 0xa7, 0x05, 0x17, 0x01, 0x17, 0x01, 0x17, 0x01,
		0x17, 0x01, 0x17, 0x01, 0x17, 0x01, 0x17, 0x01, 0x17, 0x01, 0x17, 0x81, 0xf5, 0x80, 0x8b, 0xec,
		0x12, 0x17, 0x09, 0x55, 0xa4, 0xc2, 0x6f, 0x71, 0x71, 0x05, 0x13, 0x29, 0x5a, 0xbf, 0x98, 0x1e,
		0xdc, 0x04, 0xdc, 0x04, 0xdc, 0x04, 0xdc, 0x04, 0xdc, 0x04, 0xdc, 0x04, 0xdc, 0x04, 0xdc, 0x04,
		0xdc, 0x04, 0xd6, 0x03, 0x6e, 0xb2, 0xab, 0xdc, 0xc4, 0x18, 0x2b, 0x01, 0x1f, 0x01, 0x1f, 0x01,
		0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x81, 0x47, 0x09, 0x3e, 0x02, 0xeb, 0x01,
		0x1f, 0xd9, 0x79, 0x3e, 0x22, 0x9f, 0xbe, 0xb5, 0x7a, 0x76, 0x30, 0x13, 0x30, 0x13, 0x30, 0x13,
		0x30, 0x13, 0x30, 0x13, 0x30, 0x13, 0x30, 0x13, 0x30, 0x13, 0x30, 0x13, 0x58, 0x0f, 0x98, 0xc9,
		0x2e, 0x31, 0x93, 0x28, 0x54, 0xed, 0x50, 0x45, 0xc2, 0xf7, 0xda, 0x17, 0x67, 0x05, 0x13, 0x01,
		0x13, 0x01, 0x13, 0x01, 0x13, 0x01, 0x13, 0x01, 0x13, 0x01, 0x13, 0x01, 0x13, 0x01, 0x13, 0x81,
		0xf5, 0x80, 0x89, 0xec, 0x0c, 0x13, 0x09, 0x7a, 0x5a, 0xb8, 0xe1, 0xe1, 0xc2, 0x8c, 0x60, 0x20,
		0x60, 0x20, 0x60, 0x20, 0x60, 0x20, 0x60, 0x20, 0x60, 0x20, 0x60, 0x20, 0x60, 0x20, 0x60, 0x20,
		0xb0, 0x1e, 0x30, 0x90, 0x9d, 0x62, 0x20, 0xd2, 0x2d, 0x0f, 0x97, 0xcc, 0x09, 0x16, 0x02, 0x16,
		0x02, 0x16, 0x02, 0x16, 0x02, 0x16, 0x02, 0x16, 0x02, 0x16, 0x02, 0x16, 0x02, 0x16, 0x02, 0xeb,
		0x01, 0x0b, 0xd9, 0x29, 0x16, 0x62, 0xa4, 0xe9, 0xe1, 0xaa, 0x89, 0xc1, 0x47, 0xc0, 0x47, 0xc0,
		0x47, 0xc0, 0x47, 0xc0, 0x47, 0xc0, 0x47, 0xc0, 0x47, 0xc0, 0x47, 0xc0, 0x47, 0x60, 0x3d, 0xe0,
		0x23, 0xbb, 0xc7, 0x47, 0x0c, 0x30, 0x11, 0x70, 0x10, 0x70, 0x10, 0x70, 0x10, 0x70, 0x10, 0x70,
		0x10, 0x70, 0x10, 0x70, 0x10, 0x78, 0x91, 0xe0, 0x20, 0xb0, 0x1e, 0x70, 0x90, 0x1d, 0xe6, 0x20,
		0xc2, 0x95, 0xb3, 0x56, 0xcc, 0x0b, 0x36, 0x02, 0x36, 0x02, 0x36, 0x02, 0x36, 0x02, 0x36, 0x02,
		0x36, 0x02, 0x36, 0x02, 0x36, 0x02, 0x36, 0x02, 0xeb, 0x01, 0x1b, 0xd9, 0x29, 0x36, 0x62, 0xb2,
		0xf5, 0xe1, 0x6f, 0xe6, 0x07, 0x3b, 0x01, 0x3b, 0x01, 0x3b, 0x01, 0x3b, 0x01, 0x3b, 0x01, 0x3b,
		0x01, 0x3b, 0x01, 0x3b, 0x01, 0x3b, 0x81, 0xf5, 0x80, 0x9d, 0xec, 0x2c, 0x3b, 0x31, 0xc7, 0x4b,
		0xc0, 0x48, 0xc0, 0x48, 0xc0, 0x48, 0xc0, 0x48, 0xc0, 0x48, 0xc0, 0x48, 0xc0, 0x48, 0xe0, 0x53,
		0x82, 0x91, 0xc0, 0x7a, 0xc0, 0x48, 0xc0, 0x48, 0x0c, 0x24, 0x71, 0xa1, 0xff, 0x21, 0xb8, 0x09,
		0xb8, 0x09, 0xb8, 0x09, 0xb8, 0x09, 0xb8, 0x09, 0xb8, 0x09, 0xbc, 0x4b, 0x70, 0x13, 0x70, 0x13,
		0x70, 0x13, 0x70, 0x93, 0x98, 0x1c, 0x18, 0x68, 0x80, 0xb8, 0x7c, 0x5a, 0x70, 0x11, 0x70, 0x11,
		0x70, 0x11, 0x70, 0x11, 0x70, 0x11, 0x70, 0x11, 0x70, 0x11, 0x70, 0x11, 0x70, 0x11, 0x58, 0x0f,
		0xb8, 0xc8, 0xce, 0x70, 0x91, 0xd0, 0xd1, 0xca, 0xf6, 0xdc, 0x8e, 0xab, 0x55, 0x4b, 0x90, 0x8b,
		0x2c, 0x9f, 0x16, 0x5c, 0x04, 0x5c, 0x04, 0x5c, 0x04, 0x5c, 0x04, 0x5c, 0x04, 0x5c, 0x04, 0x5c,
		0x04, 0x5c, 0x04, 0x5c, 0x04, 0xd6, 0x03, 0x2e, 0x92, 0x4e, 0x2e, 0xb2, 0x97, 0xe2, 0xbd, 0x6e,
		0x9d, 0xfa, 0x7e, 0xa0, 0xe3, 0xcc, 0x2b, 0x96, 0xed, 0x6d, 0x45, 0xcd, 0x67, 0xd5, 0x71, 0xba,
		0x8e, 0x7e, 0x1e, 0x78, 0x00, 0xf9, 0xa0, 0xab, 0xfc, 0x66, 0xcc, 0x02, 0x6c, 0x5f, 0xe9, 0xbf,
		0x83, 0xf0, 0xab, 0xed, 0xfa, 0x91, 0x76, 0xfc, 0xa6, 0xca, 0xbf, 0xfe, 0x41, 0xb4, 0xf0, 0x93,
		0x7c, 0xa7, 0xeb, 0x45, 0xf9, 0xc8, 0x7d, 0xf2, 0x1d, 0xcf, 0xf5, 0x9f, 0xec, 0x6e, 0x18, 0xe8,
		0xa0, 0x19, 0x78, 0x51, 0x7e, 0xe0, 0xd0, 0xd9, 0x5a, 0xe5, 0xdd, 0x81, 0x83, 0xd1, 0x76, 0x9a,
		0xca, 0x76, 0xb4, 0x0e, 0xdd, 0xc7, 0x9e, 0x56, 0xd1, 0xf4, 0x87, 0xf9, 0x48, 0x3b, 0x5a, 0xe5,
		0x47, 0x7e, 0x08, 0x07, 0x8b, 0xb2, 0x22, 0x1d, 0xf6, 0x9a, 0xda, 0x1f, 0x79, 0x3c, 0xd7, 0xc3,
		0x2f, 0x70, 0x31, 0x7a, 0xfe, 0xc6, 0x55, 0xd7, 0x8b, 0x1a, 0xf7, 0xe3, 0xe7, 0xbf, 0x1d, 0x3f,
		0x7e, 0xe3, 0x2e, 0xfa, 0xd6, 0x7d, 0x50, 0x8d, 0x8b, 0xf1, 0x83, 0x36, 0x3e, 0x8c, 0x1f, 0x71,
		0x2f, 0x9d, 0xa6, 0x48, 0x68, 0x86, 0xd6, 0x74, 0xcd, 0xdc, 0x16, 0xb9, 0x11, 0x4e, 0x9c, 0xcf,
		0xb9, 0x59, 0x88, 0x37, 0x11, 0x0f, 0x6d, 0x66, 0xa3, 0xcb, 0x9c, 0x34, 0x59, 0x80, 0x1e, 0x73,
		0xd3, 0x62, 0x31, 0x3a, 0x2c, 0x46, 0x83, 0x65, 0xe8, 0x6f, 0xba, 0x0f, 0x3a, 0x36, 0x9a, 0x2b,
		0x81, 0x30, 0xb3, 0x28, 0x53, 0x3c, 0xda, 0x81, 0x33, 0xa1, 0xe3, 0x7c, 0xb7, 0x3d, 0xd7, 0xff,
		0x6a, 0x3f, 0x3a, 0x7e, 0xeb, 0x6f, 0xb7, 0x15, 0xbb, 0x0f, 0x4c, 0x27, 0xc3, 0x92, 0xb9, 0x70,
		0x3e, 0xe0, 0x7c, 0xc0, 0xf9, 0x80, 0xf3, 0x81, 0xd4, 0xe2, 0x27, 0xf0, 0x62, 0x7f, 0x7d, 0xec,
		0x46, 0x8c, 0x27, 0x04, 0x83, 0xf6, 0x69, 0x7d, 0xf2, 0x87, 0x32, 0x88, 0xf5, 0x4f, 0xa6, 0x67,
		0xe7, 0x15, 0x55, 0x19, 0xd5, 0x6d, 0x09, 0x11, 0x55, 0x4a, 0x3c, 0x15, 0x97, 0xbd, 0xe4, 0xe4,
		0x2e, 0x46, 0x91, 0x54, 0x44, 0x1c, 0x35, 0x28, 0x8a, 0x6e, 0xb3, 0x55, 0x64, 0x44, 0x44, 0xac,
		0xa7, 0xd5, 0xe7, 0xdf, 0x4b, 0xd1, 0xde, 0xe4, 0x12, 0x33, 0xd3, 0x28, 0x62, 0xd2, 0xb8, 0x67,
		0xc9, 0x97, 0x8f, 0x60, 0xe9, 0xac, 0xa8, 0xf7, 0x18, 0x35, 0x43, 0xb7, 0x4b, 0xba, 0x70, 0x13,
		0xb7, 0x6b, 0x6e, 0x74, 0x22, 0x43, 0x1b, 0x53, 0x71, 0xa2, 0xe1, 0xa8, 0x89, 0x1c, 0x07, 0x81,
		0x63, 0x24, 0x6e, 0x5c, 0x84, 0x8d, 0x9d, 0xa8, 0xb1, 0x13, 0x34, 0x5e, 0x62, 0x96, 0x2e, 0xf0,
		0x3e, 0x73, 0x43, 0x5a, 0x83, 0x6d, 0x8e, 0x77, 0x15, 0x93, 0x6e, 0x34, 0x1a, 0x9f, 0x47, 0x2b,
		0x2a, 0x42, 0x2b, 0x82, 0x56, 0x04, 0xad, 0x28, 0x9d, 0x5a, 0x11, 0x35, 0x54, 0xf1, 0x7a, 0x42,
		0x92, 0x9e, 0xd1, 0x2a, 0x38, 0x43, 0x46, 0xb1, 0x51, 0x98, 0x93, 0x82, 0x3b, 0x71, 0xd8, 0x13,
		0x87, 0x3f, 0x59, 0x18, 0x64, 0x96, 0x29, 0x32, 0x9f, 0x51, 0xdc, 0x55, 0x61, 0x53, 0xf9, 0xda,
		0x79, 0x52, 0x02, 0x29, 0xc5, 0x15, 0xa4, 0x14, 0xff, 0xfe, 0x8b, 0x20, 0xa5, 0x98, 0xc5, 0xde,
		0x91, 0x52, 0x4c, 0x64, 0x2a, 0xc5, 0x02, 0x8c, 0x25, 0x1b, 0xa7, 0x13, 0xff, 0xe8, 0xf5, 0x4c,
		0x9d, 0xaa, 0xcc, 0x99, 0xba, 0x93, 0x79, 0x7e, 0x3c, 0x05, 0xda, 0x0e, 0x9a, 0x76, 0x33, 0xe8,
		0x74, 0x43, 0x15, 0x45, 0xaa, 0x65, 0x7b, 0xca, 0x69, 0x0f, 0x26, 0xed, 0x23, 0xe5, 0x3a, 0xfd,
		0x0b, 0x99, 0xb6, 0x68, 0xc5, 0x0c, 0xc9, 0xcc, 0x8f, 0x24, 0xb3, 0x1d, 0x48, 0x60, 0x1b, 0x06,
		0x69, 0xd8, 0xb4, 0xc7, 0xe1, 0xf0, 0x19, 0x93, 0x1e, 0x4b, 0x90, 0x1e, 0x05, 0xb9, 0x38, 0xa4,
		0xc7, 0x6d, 0x3c, 0x3c, 0xd8, 0xa4, 0xc7, 0xa6, 0xe3, 0x35, 0x7b, 0x9e, 0xa3, 0x55, 0xcb, 0x76,
		0x1e, 0xa3, 0xc0, 0xeb, 0x69, 0x65, 0xcf, 0x62, 0xb7, 0xfd, 0xf8, 0x37, 0xbf, 0x22, 0xf9, 0x96,
		0x87, 0x80, 0x50, 0x29, 0x0d, 0x86, 0x82, 0xa0, 0x28, 0x05, 0x8e, 0xe2, 0x20, 0x29, 0x0e, 0x96,
		0xb2, 0xa0, 0xc9, 0x4b, 0xd6, 0xb2, 0x2f, 0x54, 0xf6, 0x5c, 0x5f, 0xa3, 0xee, 0xc1, 0x9b, 0xfe,
		0x40, 0xa4, 0x84, 0xee, 0x64, 0x14, 0x16, 0xe6, 0x4d, 0x05, 0x75, 0x0f, 0xa0, 0x5a, 0xa6, 0x6a,
		0xf4, 0x5d, 0xae, 0xc1, 0x86, 0xfc, 0x08, 0xd0, 0x0e, 0xd0, 0x0e, 0xd0, 0x0e, 0xd0, 0x8e, 0xb7,
		0xed, 0x18, 0xe4, 0x47, 0x80, 0x7a, 0x80, 0x7a, 0x80, 0x7a, 0xac, 0x41, 0x3d, 0x90, 0x1f, 0x01,
		0xa6, 0x91, 0x35, 0xa6, 0x81, 0x70, 0x7f, 0x3a, 0xc3, 0xfd, 0x84, 0x37, 0x15, 0xe9, 0xd7, 0x1a,
		0x57, 0x57, 0xcd, 0x5a, 0x87, 0x45, 0x9a, 0x6d, 0x41, 0x52, 0x75, 0xef, 0x7e, 0xf6, 0xf1, 0xd2,
		0x72, 0xc1, 0x76, 0xcf, 0xa0, 0x79, 0x0e, 0x78, 0x2a, 0x71, 0x69, 0x2b, 0xeb, 0xd2, 0x8d, 0xf4,
		0xa9, 0xd6, 0x34, 0x61, 0xec, 0x81, 0x3f, 0x7d, 0xee, 0xa9, 0x01, 0xd1, 0x24, 0x72, 0x21, 0x06,
		0x6e, 0xd7, 0xcc, 0x88, 0x3c, 0x52, 0xac, 0x75, 0x13, 0xb6, 0x54, 0xa8, 0x5a, 0x7f, 0x0c, 0xde,
		0xae, 0xdf, 0xf3, 0x3c, 0xca, 0x21, 0x3f, 0x45, 0x2a, 0x24, 0xf1, 0x6d, 0x92, 0x1a, 0x0f, 0x31,
		0xa6, 0xa5, 0x0b, 0xcb, 0x2c, 0x8a, 0x8b, 0xef, 0x24, 0xb0, 0x95, 0x0c, 0xa9, 0x36, 0xc7, 0x97,
		0xcd, 0x3e, 0xb9, 0xa1, 0x51, 0x51, 0x19, 0x53, 0x1a, 0x8c, 0x68, 0xb3, 0x05, 0x5b, 0xff, 0x75,
		0x6f, 0xf0, 0xaa, 0x2d, 0x5f, 0xb9, 0x4f, 0xcf, 0x8f, 0x41, 0xb8, 0x79, 0x67, 0x93, 0x89, 0xf8,
		0x34, 0x1d, 0x6a, 0xc3, 0x25, 0x4f, 0x96, 0x8f, 0x98, 0x58, 0xfb, 0xa6, 0xd0, 0xb6, 0x09, 0xb5,
		0x6b, 0x2a, 0x6d, 0x9a, 0x5c, 0x7b, 0x26, 0xd7, 0x96, 0x69, 0xb5, 0x63, 0x59, 0x98, 0x4a, 0x9a,
		0x9f, 0x37, 0xd9, 0x35, 0xc9, 0xd7, 0xf9, 0xf5, 0x3e, 0x4c, 0xba, 0xcc, 0x34, 0xe9, 0xc1, 0x64,
		0xe9, 0xc0, 0x94, 0xa1, 0x27, 0x86, 0x10, 0x13, 0x75, 0x28, 0x89, 0x2d, 0x64, 0xc4, 0x16, 0x1a,
		0xe2, 0x09, 0x01, 0x99, 0xe5, 0x43, 0x54, 0xe9, 0xb7, 0x96, 0xd3, 0x6a, 0x85, 0x2a, 0x8a, 0xe8,
		0xcb, 0x1d, 0x8d, 0x07, 0xa6, 0xad, 0x74, 0x54, 0x40, 0xa5, 0x23, 0x92, 0xa1, 0x51, 0xe9, 0x48,
		0x14, 0x2c, 0xd2, 0xa9, 0xf5, 0x91, 0xc7, 0x7f, 0x27, 0x16, 0xeb, 0x29, 0xa7, 0x1d, 0xaa, 0x36,
		0xa5, 0xc5, 0x8e, 0x4f, 0xfd, 0x1a, 0xe1, 0x98, 0xb7, 0x23, 0xf6, 0xf5, 0xfe, 0xfd, 0xa8, 0x23,
		0xc7, 0x18, 0xb4, 0xb6, 0xa9, 0xa8, 0x1d, 0xe9, 0x05, 0x30, 0x96, 0x8b, 0x5f, 0x6c, 0x65, 0xec,
		0x4a, 0x00, 0x77, 0x80, 0xfb, 0x8e, 0x82, 0x3b, 0x79, 0x19, 0x3b, 0x6a, 0x4f, 0x91, 0xd9, 0x63,
		0x64, 0xf2, 0x1c, 0xd9, 0x3c, 0x48, 0x4e, 0xb0, 0x11, 0x00, 0x1d, 0x6e, 0xf0, 0x11, 0x03, 0x21,
		0x31, 0x30, 0x92, 0x01, 0x25, 0x5a, 0x70, 0x22, 0x06, 0x29, 0x3e, 0x4f, 0x74, 0xc1, 0xe2, 0xdd,
		0xae, 0xcd, 0x83, 0x2f, 0x73, 0x0e, 0xcc, 0x31, 0xc3, 0xd8, 0xa3, 0x77, 0x93, 0xb9, 0x7e, 0x04,
		0xd3, 0x37, 0xff, 0xad, 0xcc, 0xf8, 0xee, 0x17, 0xd6, 0x80, 0xf3, 0xe6, 0xd9, 0xad, 0xa3, 0xb5,
		0x0a, 0x7d, 0xf6, 0x04, 0x50, 0x6b, 0xff, 0x73, 0xc1, 0x3e, 0xae, 0xbf, 0x7c, 0x2e, 0xda, 0xc7,
		0xf5, 0xe1, 0x5f, 0x8b, 0xf1, 0x7f, 0x7e, 0x96, 0xfa, 0x2f, 0xa5, 0xcf, 0x05, 0xbb, 0x3c, 0xfa,
		0x69, 0xa9, 0xf2, 0xb9, 0x60, 0x57, 0xea, 0x07, 0xfb, 0x5f, 0xbe, 0xbc, 0x5f, 0xf7, 0x33, 0x07,
		0x3f, 0x0f, 0xfb, 0x7c, 0xa9, 0xd0, 0x75, 0xce, 0x65, 0xb8, 0xb9, 0xbf, 0xf8, 0x97, 0xd8, 0x5a,
		0xfc, 0x67, 0x5f, 0x6a, 0x35, 0x0e, 0xfe, 0x61, 0xa1, 0xc8, 0x90, 0x1c, 0x2c, 0x55, 0x01, 0x4b,
		0xeb, 0xc2, 0x52, 0x6c, 0xd5, 0x8e, 0xdd, 0x3e, 0xb5, 0x3f, 0xd6, 0x7f, 0x16, 0xdf, 0x95, 0xfb,
		0x27, 0x07, 0x3f, 0x6b, 0xfd, 0xd7, 0x3f, 0x7c, 0x59, 0xf6, 0x6b, 0xc5, 0x77, 0xb5, 0xfe, 0xc9,
		0x8a, 0x7f, 0xa9, 0xf6, 0x4f, 0xde, 0x38, 0x46, 0xa5, 0xbf, 0xbf, 0xf0, 0xab, 0x83, 0x9f, 0x97,
		0x56, 0x7d, 0xa0, 0xbc, 0xe2, 0x03, 0x87, 0xab, 0x3e, 0x70, 0xb8, 0xe2, 0x03, 0x2b, 0x1f, 0xa9,
		0xb4, 0xe2, 0x03, 0x95, 0xfe, 0xcb, 0xc2, 0xef, 0xef, 0x2f, 0xff, 0xd5, 0x6a, 0xff, 0xe0, 0x65,
		0xd5, 0xbf, 0xd5, 0xfa, 0x2f, 0x27, 0x07, 0x07, 0x00, 0xea, 0x37, 0x03, 0x35, 0xcc, 0x53, 0xde,
		0x3c, 0xb3, 0x77, 0x70, 0xed, 0x4e, 0x6b, 0x1c, 0x42, 0x65, 0xb1, 0xa5, 0xb4, 0x6a, 0x6a, 0xd5,
		0xb2, 0xa7, 0xe9, 0x67, 0x6c, 0x72, 0xd0, 0x92, 0xb9, 0xa0, 0x0c, 0x41, 0x19, 0x82, 0x32, 0x04,
		0x65, 0x88, 0xd4, 0xe2, 0x23, 0x1d, 0xba, 0xfe, 0x13, 0x1a, 0x25, 0x27, 0xfb, 0xae, 0xe3, 0xe4,
		0x2e, 0x3b, 0xd2, 0x8e, 0xee, 0x31, 0x46, 0x09, 0x5e, 0x4f, 0x84, 0x33, 0x01, 0x67, 0x02, 0xce,
		0x04, 0x9c, 0x09, 0xa4, 0x16, 0xaf, 0xfc, 0x5e, 0x47, 0x85, 0x0e, 0x53, 0xc1, 0x95, 0xc9, 0xc1,
		0x50, 0x66, 0x18, 0xfb, 0xdc, 0xef, 0x75, 0xf8, 0xf6, 0xd3, 0x43, 0x70, 0x3f, 0x3c, 0x2e, 0x59,
		0xcb, 0x46, 0x14, 0x06, 0x6b, 0xf0, 0xe9, 0x96, 0x53, 0x96, 0x2b, 0x0e, 0xa6, 0x38, 0xbb, 0xf9,
		0x3f, 0xd7, 0x56, 0xb6, 0x4a, 0x76, 0x04, 0x17, 0xf1, 0xd6, 0x67, 0x7c, 0xf9, 0xf1, 0x4b, 0x21,
		0xaf, 0xbe, 0x3c, 0x37, 0xc5, 0xa7, 0xdb, 0xc1, 0x49, 0xb8, 0x9b, 0xb7, 0xba, 0x53, 0xe9, 0xbd,
		0x85, 0xaa, 0x1d, 0xaa, 0xe8, 0xd9, 0x0e, 0x55, 0xab, 0xd7, 0x64, 0xb9, 0x22, 0x3e, 0x81, 0xd6,
		0xc5, 0xa9, 0xe0, 0xc1, 0xc1, 0x83, 0x83, 0x07, 0x07, 0x0f, 0x8e, 0xd4, 0xe2, 0x1f, 0x83, 0xc0,
		0x53, 0x0e, 0xab, 0xf7, 0x56, 0x4c, 0xf5, 0x2b, 0x56, 0xdf, 0x75, 0xe8, 0xd8, 0x3d, 0x3f, 0xd2,
		0xce, 0xa3, 0xc7, 0xf4, 0xb2, 0x43, 0xd5, 0x56, 0xa1, 0xf2, 0x9b, 0x99, 0xce, 0x4f, 0xb9, 0xfb,
		0xf8, 0x21, 0x57, 0x3a, 0xae, 0x16, 0x73, 0x77, 0xf7, 0x7f, 0xdd, 0xe6, 0xee, 0x86, 0xc7, 0x53,
		0xee, 0xe6, 0x9b, 0x0a, 0x9f, 0x95, 0xd3, 0xca, 0xdd, 0x8d, 0xcf, 0xa9, 0x2f, 0xfe, 0xf9, 0x77,
		0xad, 0xfc, 0xc8, 0x0d, 0xfc, 0x68, 0xcb, 0x4a, 0xff, 0x4d, 0xd7, 0x71, 0x9b, 0xab, 0xff, 0x6d,
		0xb4, 0xd0, 0x59, 0x2b, 0x15, 0xb8, 0x3b, 0x61, 0x2d, 0x94, 0xcd, 0xa1, 0xaf, 0x12, 0x30, 0xb9,
		0x2a, 0x3f, 0xf9, 0x1b, 0x65, 0xed, 0xa4, 0x2d, 0x29, 0x42, 0x43, 0x93, 0x34, 0x84, 0xfa, 0x33,
		0xa8, 0x3f, 0x93, 0x55, 0x50, 0x30, 0x5e, 0x73, 0xe6, 0x7a, 0xfc, 0x20, 0x28, 0x39, 0x93, 0x01,
		0xbb, 0x49, 0x73, 0x9d, 0x99, 0x48, 0x45, 0x43, 0x47, 0x2f, 0x71, 0x99, 0x99, 0xc9, 0x48, 0xa8,
		0x32, 0x83, 0x2a, 0x33, 0xc6, 0xf4, 0xa0, 0x8c, 0x55, 0x99, 0x19, 0x6d, 0x1a, 0xba, 0x22, 0x33,
		0xe3, 0x01, 0x51, 0x63, 0x46, 0x60, 0x93, 0x72, 0x69, 0x16, 0xa8, 0x31, 0x93, 0x06, 0xba, 0x43,
		0x56, 0x63, 0x46, 0x7d, 0xef, 0x7a, 0x6e, 0xd3, 0xd5, 0x76, 0x18, 0xf4, 0xb4, 0xb2, 0x83, 0xc7,
		0xff, 0xab, 0x9a, 0x9a, 0xa1, 0xe4, 0xcc, 0x8a, 0x79, 0x52, 0x5e, 0xa4, 0x00, 0x15, 0x68, 0xb8,
		0x64, 0x4d, 0x14, 0x29, 0x48, 0xbb, 0x6c, 0x46, 0x5e, 0xa4, 0x60, 0x29, 0x04, 0xf0, 0x05, 0xb3,
		0x97, 0x4f, 0x87, 0x76, 0xd8, 0x08, 0x68, 0x9b, 0x03, 0x28, 0x31, 0xa0, 0x92, 0x01, 0x2c, 0x5a,
		0xe0, 0x22, 0x06, 0x30, 0x36, 0x20, 0x9b, 0x0c, 0xec, 0xfa, 0x2d, 0xf5, 0x9d, 0xbf, 0xc5, 0xdc,
		0x70, 0x1a, 0xf4, 0x96, 0x93, 0x06, 0x34, 0x41, 0x60, 0x93, 0x02, 0x38, 0x71, 0xa0, 0x13, 0x07,
		0x3c, 0x59, 0xe0, 0xe3, 0x01, 0x40, 0x26, 0x20, 0x9c, 0xbc, 0x1a, 0xb9, 0xde, 0x72, 0xf4, 0xb5,
		0x06, 0x57, 0x7a, 0x60, 0x35, 0xde, 0x3b, 0xfc, 0xf3, 0xb5, 0x08, 0x87, 0x90, 0xbc, 0xcb, 0x4d,
		0x56, 0x49, 0x2b, 0x17, 0xae, 0xb4, 0x1f, 0xca, 0x4a, 0x86, 0x42, 0xbe, 0x3b, 0xbb, 0x0f, 0x8f,
		0xa3, 0x0f, 0x47, 0x1f, 0x8e, 0xbe, 0x94, 0x71, 0x81, 0xc9, 0x04, 0x4e, 0xc4, 0xdf, 0xbb, 0x73,
		0x5a, 0x95, 0x31, 0xf2, 0xb9, 0x8d, 0x97, 0x97, 0x1f, 0x88, 0xf1, 0x04, 0x49, 0xd0, 0x34, 0x00,
		0x9e, 0xd2, 0x20, 0x6a, 0x0c, 0x4c, 0x8d, 0x81, 0xaa, 0x19, 0x70, 0xe5, 0x05, 0x59, 0x66, 0xb0,
		0x95, 0xe3, 0x1b, 0x4b, 0x80, 0xd1, 0xf6, 0x7b, 0x9d, 0x47, 0x15, 0x4a, 0xec, 0xb9, 0x11, 0x44,
		0xd6, 0x04, 0xa6, 0x92, 0x69, 0x71, 0x3d, 0xfe, 0x23, 0x83, 0x21, 0x39, 0xe9, 0x96, 0xd7, 0x93,
		0x49, 0x85, 0x5b, 0x5f, 0x4f, 0xe6, 0x35, 0xd5, 0xd5, 0x78, 0xba, 0x4d, 0xa4, 0xbb, 0x1b, 0x0b,
		0x21, 0xcd, 0xbc, 0x49, 0x09, 0xb6, 0xc6, 0x5e, 0x30, 0xa9, 0x72, 0xe9, 0xb8, 0x7c, 0x5c, 0xad,
		0x95, 0x8e, 0x2b, 0xb0, 0x2d, 0x29, 0xdb, 0xda, 0xdb, 0x8e, 0x59, 0xea, 0x99, 0x3e, 0xeb, 0x05,
		0xae, 0xb6, 0x2d, 0xcc, 0xc9, 0x7f, 0xd5, 0xcd, 0xe0, 0xc9, 0x38, 0x73, 0x15, 0xee, 0xb0, 0x5c,
		0xab, 0xe5, 0xec, 0xdc, 0x30, 0xf5, 0xda, 0x73, 0xfd, 0xa7, 0xdc, 0x27, 0x7f, 0xe8, 0xe6, 0xa8,
		0x56, 0xee, 0xd2, 0xf5, 0xbf, 0x46, 0x39, 0xd7, 0xcf, 0xdd, 0xa9, 0x28, 0x26, 0x01, 0x5f, 0xfc,
		0x3b, 0x75, 0xaf, 0xc2, 0xbf, 0xe2, 0xe4, 0xe4, 0xdc, 0x38, 0x4d, 0x3b, 0x67, 0xe7, 0x1e, 0x42,
		0xa7, 0xdd, 0x76, 0x9b, 0xb9, 0x73, 0xff, 0xc9, 0xf5, 0x95, 0x0a, 0x07, 0x03, 0xed, 0xdf, 0xdd,
		0xff, 0x75, 0x6b, 0x3f, 0x9c, 0x1f, 0x58, 0x82, 0x08, 0x2d, 0x4c, 0x56, 0x96, 0x91, 0x16, 0xa9,
		0xdb, 0x75, 0xa9, 0xe1, 0x2f, 0x4b, 0x79, 0x8c, 0x94, 0x6d, 0xe1, 0x2c, 0x48, 0xd7, 0x59, 0xb0,
		0x97, 0xc1, 0x53, 0x86, 0x39, 0xea, 0xbe, 0x80, 0xbb, 0x9c, 0xd1, 0xf7, 0xd7, 0x14, 0x12, 0x2a,
		0x5b, 0x82, 0x85, 0x82, 0xca, 0xb6, 0x3d, 0xa7, 0x14, 0x54, 0xb6, 0xf5, 0x5f, 0x99, 0xbc, 0xca,
		0xd6, 0x73, 0x7d, 0x5d, 0x2d, 0x0b, 0x4a, 0x6c, 0x47, 0x90, 0xd8, 0x12, 0xe8, 0x21, 0x90, 0xd8,
		0x76, 0x42, 0x06, 0xd9, 0x15, 0x89, 0x8d, 0xe7, 0xd6, 0x3b, 0xac, 0x0c, 0x04, 0x2b, 0x33, 0x47,
		0x3e, 0xc4, 0x36, 0x26, 0xcf, 0x06, 0x62, 0x1b, 0x07, 0x77, 0x81, 0xd8, 0x06, 0xb1, 0x6d, 0x77,
		0xcf, 0x82, 0x8c, 0x8a, 0x6d, 0xa3, 0xfe, 0x2e, 0xb6, 0xdb, 0x92, 0xd4, 0xdc, 0x66, 0x66, 0x85,
		0xf4, 0xb6, 0xd6, 0x44, 0x90, 0xde, 0xb8, 0x8e, 0x2f, 0x48, 0x6f, 0x59, 0x45, 0xf7, 0xed, 0x94,
		0xde, 0x0e, 0x4b, 0xc8, 0x6e, 0xcb, 0x06, 0xad, 0x80, 0xf4, 0xb6, 0x1b, 0xa2, 0x08, 0xb2, 0xdb,
		0x60, 0x5b, 0x20, 0x59, 0x26, 0x49, 0x16, 0x04, 0xb7, 0x6c, 0x9d, 0x8c, 0x10, 0xdc, 0x38, 0x19,
		0x0b, 0x04, 0x37, 0x08, 0x6e, 0xbb, 0x7b, 0x16, 0x64, 0x53, 0x70, 0xeb, 0xda, 0x5d, 0x19, 0x05,
		0x67, 0xaa, 0xb6, 0x4d, 0xa6, 0x84, 0xd4, 0xb6, 0xd6, 0x44, 0x90, 0xda, 0xb8, 0x0e, 0x2e, 0x48,
		0x6d, 0x59, 0xc5, 0xf5, 0xed, 0x93, 0xda, 0xa4, 0xe0, 0x71, 0x16, 0x22, 0x8b, 0xc7, 0x02, 0x73,
		0x8d, 0x5e, 0xe5, 0xd6, 0x72, 0x0a, 0xb7, 0xfb, 0xad, 0x6c, 0x8b, 0x22, 0xc9, 0xdc, 0x12, 0x1e,
		0x09, 0xce, 0x79, 0xeb, 0x68, 0xad, 0x42, 0x5f, 0x6c, 0x35, 0x27, 0x13, 0xef, 0x7f, 0x2e, 0xd8,
		0xc7, 0xf5, 0x97, 0xcf, 0x45, 0xfb, 0xb8, 0x3e, 0xfc, 0x6b, 0x31, 0xfe, 0xcf, 0xcf, 0x52, 0xff,
		0xa5, 0xf4, 0xb9, 0x60, 0x97, 0x47, 0x3f, 0x2d, 0x55, 0x3e, 0x17, 0xec, 0x4a, 0xfd, 0x60, 0xff,
		0xcb, 0x97, 0xf7, 0xeb, 0x7e, 0xe6, 0xe0, 0xe7, 0x61, 0x3f, 0x3f, 0xf9, 0x50, 0x69, 0xf4, 0xaf,
		0x87, 0x9f, 0x0b, 0x76, 0xa9, 0x2e, 0xe8, 0x75, 0xd7, 0x25, 0xd7, 0xf3, 0xe6, 0xfe, 0xe2, 0x5f,
		0xc6, 0x16, 0xf5, 0x3f, 0xfb, 0xc6, 0x97, 0xf5, 0xe0, 0x1f, 0x82, 0x0b, 0x2b, 0x43, 0xa7, 0xde,
		0x6d, 0x31, 0xce, 0x56, 0x81, 0xb3, 0xcc, 0x38, 0x1b, 0x6f, 0x14, 0xc7, 0x6e, 0x9f, 0xda, 0x1f,
		0xeb, 0x3f, 0x8b, 0xef, 0xca, 0xfd, 0x93, 0x83, 0x9f, 0xb5, 0xfe, 0xeb, 0x1f, 0xbe, 0x2c, 0xfb,
		0xb5, 0xe2, 0xbb, 0x5a, 0xff, 0x64, 0xc5, 0xbf, 0x54, 0xfb, 0x27, 0x6f, 0x1c, 0xa3, 0xd2, 0xdf,
		0x5f, 0xf8, 0xd5, 0xc1, 0xcf, 0x4b, 0xab, 0x3e, 0x50, 0x5e, 0xf1, 0x81, 0xc3, 0x55, 0x1f, 0x38,
		0x5c, 0xf1, 0x81, 0x95, 0x8f, 0x54, 0x5a, 0xf1, 0x81, 0x4a, 0xff, 0x65, 0xe1, 0xf7, 0xf7, 0x97,
		0xff, 0x6a, 0xb5, 0x7f, 0xf0, 0xb2, 0xea, 0xdf, 0x6a, 0xfd, 0x97, 0x93, 0x83, 0x83, 0xfc, 0x7e,
		0x71, 0x80, 0x5e, 0x47, 0x43, 0x38, 0x2b, 0xd6, 0x17, 0x50, 0x2e, 0xfe, 0xff, 0x38, 0x87, 0xf8,
		0xce, 0x21, 0x58, 0x7d, 0x6a, 0xad, 0x7e, 0xfb, 0x4e, 0x69, 0x04, 0xc0, 0x7e, 0xb9, 0x25, 0x11,
		0x00, 0x63, 0x72, 0xa2, 0x10, 0x00, 0xe3, 0xd0, 0x11, 0x11, 0x00, 0x43, 0x00, 0x6c, 0x77, 0xcf,
		0x82, 0x4c, 0x06, 0xc0, 0x3c, 0xe7, 0x51, 0x79, 0x72, 0xc1, 0xaf, 0xe1, 0x74, 0x08, 0x7c, 0xad,
		0x47, 0x0b, 0x10, 0xf8, 0x62, 0x3a, 0xb0, 0x10, 0xf8, 0xca, 0x2a, 0x9e, 0x6f, 0x5f, 0xe0, 0xab,
		0xd3, 0xf5, 0x22, 0x5b, 0x02, 0x1f, 0x73, 0x88, 0x7c, 0xd1, 0xae, 0x9c, 0xd8, 0xed, 0x80, 0xd7,
		0xab, 0x57, 0x13, 0x9c, 0x52, 0xf6, 0xb6, 0x80, 0xfc, 0x6a, 0x4e, 0xbe, 0xa8, 0x89, 0xdb, 0x03,
		0x93, 0xc9, 0x27, 0xd5, 0x16, 0xaa, 0xef, 0xcc, 0x3c, 0x80, 0xe9, 0x94, 0xef, 0xe9, 0xe6, 0x32,
		0x95, 0xfa, 0x2d, 0x74, 0xc2, 0x2c, 0xb7, 0x3d, 0x03, 0xd7, 0x0c, 0x16, 0x6d, 0xaf, 0x50, 0x3e,
		0xaa, 0xd4, 0x2a, 0x30, 0x40, 0xd3, 0x06, 0xb8, 0xb7, 0x9d, 0xb3, 0x21, 0x00, 0x9c, 0xcc, 0xdd,
		0x50, 0x7e, 0xaf, 0xa3, 0xc2, 0x58, 0x2c, 0x32, 0x11, 0x00, 0x2e, 0x0b, 0xce, 0x79, 0xee, 0xf7,
		0x3a, 0xf2, 0x8a, 0xe6, 0x43, 0x70, 0xaf, 0x43, 0xd7, 0x7f, 0x32, 0x02, 0xc5, 0x56, 0x61, 0xb0,
		0xc6, 0x17, 0xb7, 0x7f, 0x95, 0x1b, 0xe7, 0xff, 0xba, 0xbd, 0xbc, 0xf8, 0x70, 0xf1, 0xd0, 0xb8,
		0xfe, 0x74, 0x79, 0x69, 0x19, 0x38, 0x8e, 0x8a, 0xb1, 0x9c, 0x79, 0xf3, 0xe9, 0xe1, 0xfc, 0xae,
		0x71, 0x7a, 0x79, 0x7e, 0xf7, 0x60, 0xe2, 0x21, 0x4a, 0xa3, 0xf7, 0x51, 0x35, 0xff, 0x3e, 0x0e,
		0xe3, 0x47, 0xb9, 0x32, 0xfc, 0x14, 0xb5, 0xc1, 0x53, 0x9c, 0x5f, 0x3f, 0xdc, 0xdd, 0xdc, 0xfe,
		0xbb, 0x71, 0x79, 0xfa, 0xc7, 0xf9, 0x65, 0xe3, 0xe2, 0xfa, 0xec, 0xe2, 0xc3, 0xe9, 0xc3, 0xcd,
		0x9d, 0x89, 0xe7, 0x39, 0x1a, 0x3c, 0xcf, 0xf5, 0xcd, 0xf0, 0x51, 0xac, 0xbd, 0x2d, 0xf6, 0xd1,
		0xac, 0x87, 0xe0, 0xc2, 0xd7, 0x66, 0x60, 0x61, 0xd5, 0x82, 0x8b, 0xb2, 0xc0, 0xc9, 0xd3, 0xcc,
		0x6f, 0x82, 0x93, 0xdc, 0xa1, 0x89, 0x67, 0x58, 0xc4, 0x48, 0x23, 0xde, 0xe2, 0x32, 0x70, 0x62,
		0x6b, 0x43, 0xf8, 0x6b, 0x0f, 0x61, 0xbc, 0x09, 0x45, 0x6a, 0x77, 0x2e, 0x4a, 0x04, 0xb3, 0x27,
		0xc5, 0x49, 0xae, 0xb8, 0xa5, 0xfe, 0x2b, 0xc2, 0x61, 0x29, 0x80, 0x66, 0xa4, 0x46, 0x70, 0xd1,
		0x0b, 0xa4, 0x46, 0xd0, 0x51, 0x26, 0xa4, 0x46, 0x20, 0x35, 0x02, 0x67, 0x41, 0x56, 0x53, 0x23,
		0x82, 0x20, 0x52, 0x82, 0xa9, 0x11, 0xf1, 0x74, 0x48, 0x8d, 0x58, 0x6b, 0x22, 0xa4, 0x46, 0x70,
		0x1d, 0x58, 0x48, 0x8d, 0xc8, 0x2a, 0x9e, 0x6f, 0x5f, 0x6a, 0xc4, 0x63, 0x10, 0x78, 0xca, 0xf1,
		0x25, 0xf3, 0x22, 0x8a, 0x20, 0x47, 0x20, 0x47, 0x20, 0x47, 0x20, 0x47, 0x20, 0x47, 0x20, 0x47,
		0x20, 0x47, 0x0b, 0x86, 0xab, 0x25, 0x9c, 0x80, 0x09, 0xec, 0xc6, 0xb3, 0x81, 0x1a, 0x81, 0x1a,
		0x81, 0x1a, 0x81, 0x1a, 0x81, 0x1a, 0x19, 0x4b, 0x06, 0x92, 0x4c, 0x02, 0x92, 0x4d, 0xfe, 0x31,
		0x93, 0xf4, 0x33, 0x4d, 0xf6, 0x91, 0xf4, 0xf8, 0x8b, 0xe3, 0x8c, 0x1a, 0xc9, 0x49, 0xe3, 0x34,
		0x9e, 0xd3, 0xfb, 0x6b, 0xc9, 0x39, 0x0f, 0x47, 0x73, 0x8a, 0xbe, 0xdd, 0xf2, 0x60, 0xd2, 0x61,
		0x18, 0x5e, 0x70, 0xd6, 0xca, 0x60, 0xd6, 0x4f, 0xd7, 0xd7, 0x9f, 0xae, 0xfe, 0x38, 0xbf, 0x3b,
		0x3f, 0x6b, 0x5c, 0x5c, 0x3f, 0x9c, 0xdf, 0x7d, 0x3c, 0xfd, 0x70, 0x6e, 0x6d, 0x53, 0xb6, 0xa5,
		0x81, 0x04, 0x9c, 0xd8, 0x66, 0x45, 0xd3, 0x39, 0x86, 0x16, 0x2b, 0x9a, 0x53, 0x33, 0x84, 0x20,
		0xd1, 0xec, 0x99, 0x21, 0x00, 0x9d, 0xe4, 0x8a, 0x82, 0x53, 0x8e, 0x93, 0x63, 0x24, 0x53, 0x58,
		0x97, 0xee, 0xc9, 0x93, 0x5c, 0x65, 0x4b, 0xb8, 0x71, 0x1f, 0x3a, 0xe9, 0x9a, 0x73, 0x42, 0x27,
		0x85, 0x4e, 0xba, 0x21, 0xf1, 0x84, 0x4e, 0x0a, 0x9d, 0x34, 0xc5, 0xb3, 0x64, 0x56, 0x27, 0xdd,
		0xcb, 0xd0, 0xd9, 0x65, 0x9d, 0xfa, 0x7e, 0xa0, 0x87, 0x84, 0x9f, 0x13, 0x8b, 0xac, 0xa8, 0xf9,
		0xac, 0x3a, 0x4e, 0xd7, 0xd1, 0xcf, 0x83, 0x4d, 0x97, 0x0f, 0xba, 0xca, 0x6f, 0xc6, 0xda, 0xa5,
		0xed, 0x2b, 0xfd, 0x77, 0x10, 0x7e, 0xb5, 0xdd, 0xc1, 0xb9, 0xe9, 0x37, 0x55, 0xfe, 0xf5, 0x0f,
		0xa2, 0x85, 0x9f, 0xe4, 0x3b, 0x5d, 0x2f, 0xca, 0x47, 0xf1, 0x7e, 0x75, 0xfd, 0x27, 0xbb, 0x3b,
		0xda, 0x84, 0x51, 0x3e, 0x8c, 0xbe, 0x75, 0x6d, 0xad, 0xf2, 0x91, 0x8a, 0x22, 0x37, 0xf0, 0xa3,
		0xf1, 0x5f, 0xf2, 0xea, 0x7b, 0xd7, 0x73, 0x9b, 0xae, 0xb6, 0xc3, 0xa0, 0xa7, 0x95, 0x1d, 0x3c,
		0xfe, 0x5f, 0xd5, 0xd4, 0xd1, 0xf2, 0x1f, 0xe7, 0x23, 0xed, 0x68, 0xc5, 0xb3, 0x63, 0xe9, 0xad,
		0x83, 0x76, 0x44, 0x62, 0x3b, 0x1b, 0x9c, 0x37, 0xc3, 0xa6, 0xa0, 0x2d, 0x45, 0xad, 0x71, 0x5a,
		0x97, 0x6e, 0xa4, 0x4f, 0xb5, 0x0e, 0x59, 0x2c, 0xd7, 0xba, 0x72, 0xfd, 0x73, 0x4f, 0x0d, 0x8e,
		0x09, 0xa6, 0x7b, 0xa3, 0xd6, 0x95, 0xf3, 0x7d, 0x66, 0x06, 0x99, 0x96, 0xf8, 0xd6, 0x4d, 0xd8,
		0x1a, 0x9c, 0x6b, 0x7f, 0x0c, 0x96, 0xc5, 0xef, 0x79, 0x1e, 0xe7, 0x14, 0x9f, 0x22, 0x15, 0xb2,
		0x5c, 0x78, 0xa5, 0xb6, 0x52, 0x66, 0x14, 0xcc, 0x14, 0xfa, 0x31, 0x78, 0x83, 0x56, 0xa4, 0xc3,
		0x5e, 0x53, 0xfb, 0x23, 0x77, 0xfe, 0x7a, 0xf8, 0x85, 0x2e, 0x46, 0xdf, 0xa7, 0x71, 0xd5, 0xf5,
		0xa2, 0xc6, 0xfd, 0xf8, 0xfb, 0x8c, 0x3d, 0xaa, 0xa8, 0x71, 0x17, 0x7d, 0xeb, 0x3e, 0xa8, 0xc6,
		0xfd, 0xf0, 0x4b, 0x34, 0xce, 0x47, 0x4f, 0x7b, 0x37, 0x78, 0xd8, 0x9b, 0xe1, 0xb3, 0xee, 0xa5,
		0x13, 0x49, 0x69, 0x46, 0x22, 0xb2, 0x72, 0x2e, 0xeb, 0x4e, 0xa9, 0x55, 0xd3, 0xd8, 0x44, 0xf2,
		0x15, 0x24, 0x58, 0x3d, 0xcb, 0x0b, 0x9a, 0x8e, 0x67, 0x0f, 0x0f, 0x4f, 0xaa, 0xa5, 0x9b, 0x49,
		0x11, 0x9e, 0x0e, 0x4e, 0x64, 0x69, 0xb4, 0x51, 0x6f, 0xf2, 0xe8, 0x36, 0x47, 0x14, 0x9b, 0x31,
		0x5a, 0xcd, 0x25, 0x12, 0xb0, 0x47, 0x9f, 0xd9, 0x19, 0x3e, 0x6f, 0x34, 0x39, 0x5d, 0xe8, 0x4d,
		0x1e, 0x05, 0x9e, 0x02, 0x80, 0x72, 0xda, 0xa1, 0x6a, 0x53, 0x5a, 0xec, 0x38, 0xa2, 0x4b, 0x78,
		0x8b, 0xd8, 0xba, 0x1d, 0x1d, 0x30, 0xef, 0xdf, 0x0f, 0x89, 0x59, 0x7e, 0x16, 0xb8, 0xb6, 0x08,
		0xec, 0x43, 0xd5, 0x0c, 0xc2, 0xd6, 0xab, 0xc3, 0x8c, 0x1c, 0xf5, 0x97, 0xce, 0x42, 0x0b, 0xff,
		0x45, 0xc0, 0x3f, 0xe0, 0x1f, 0xf0, 0x4f, 0x63, 0xb3, 0x67, 0x2e, 0xad, 0xbe, 0xb1, 0x0c, 0x00,
		0xe8, 0x4d, 0xec, 0x17, 0x68, 0x43, 0x6d, 0x6c, 0xb4, 0xa0, 0xb3, 0x08, 0x3e, 0xc4, 0xb1, 0x7a,
		0xce, 0x4c, 0x4a, 0x81, 0xcc, 0x49, 0xee, 0xc0, 0x95, 0x58, 0x66, 0xa4, 0x58, 0x14, 0x4a, 0x26,
		0xf3, 0x31, 0xdd, 0x2a, 0x30, 0x35, 0x88, 0x4d, 0x06, 0xa6, 0xa5, 0xc6, 0x2b, 0xf7, 0x13, 0x87,
		0x7c, 0xcd, 0x44, 0x9a, 0xd9, 0xbd, 0x28, 0x49, 0x40, 0x13, 0x04, 0x36, 0x29, 0x80, 0x13, 0x07,
		0x3a, 0x71, 0xc0, 0x93, 0x05, 0x3e, 0x1e, 0x00, 0x64, 0x02, 0x42, 0x3e, 0x52, 0x2f, 0x48, 0xf2,
		0x25, 0x48, 0xff, 0xef, 0x45, 0x00, 0x42, 0xfa, 0xcf, 0x6f, 0x4a, 0x7d, 0x96, 0x98, 0x8a, 0xa3,
		0x15, 0xff, 0xd1, 0x37, 0x9c, 0x86, 0xf7, 0xe8, 0x2b, 0x72, 0x1f, 0x7d, 0x25, 0x1c, 0x7d, 0x38,
		0xfa, 0x70, 0xf4, 0xa5, 0xe2, 0xe8, 0xe3, 0xe2, 0x02, 0x93, 0x09, 0x9c, 0x56, 0x2b, 0x54, 0x51,
		0x24, 0x77, 0x9f, 0x74, 0x3c, 0x21, 0xae, 0x94, 0xa6, 0x0d, 0x3c, 0x0d, 0x80, 0xa8, 0x34, 0x98,
		0x1a, 0x03, 0x55, 0x63, 0xe0, 0x6a, 0x06, 0x64, 0x79, 0xc1, 0x96, 0x19, 0x74, 0xe5, 0x78, 0xc7,
		0xa2, 0x74, 0xd2, 0xb5, 0x65, 0xf0, 0x31, 0x87, 0x46, 0x44, 0xd4, 0x2b, 0xf7, 0xad, 0x2c, 0xb8,
		0x76, 0x0b, 0x6b, 0xb8, 0x1b, 0xbd, 0xe1, 0x17, 0x9a, 0x33, 0x17, 0xe3, 0xff, 0xfc, 0x2c, 0xf5,
		0x5f, 0x4a, 0x9f, 0x0b, 0x76, 0x79, 0xf4, 0xd3, 0x52, 0xe5, 0x73, 0xc1, 0xae, 0xd4, 0x0f, 0xf6,
		0xbf, 0x7c, 0x79, 0xbf, 0xee, 0x67, 0x0e, 0x7e, 0x1e, 0xf6, 0xd1, 0xe2, 0x9c, 0x7e, 0xf6, 0x51,
		0x8b, 0x73, 0x81, 0xd5, 0xdb, 0xc2, 0x5e, 0xdd, 0xef, 0xb6, 0x18, 0x36, 0xab, 0x80, 0x4d, 0x6e,
		0xd8, 0x5c, 0xd6, 0x5e, 0xbf, 0xd6, 0x7f, 0xfd, 0xc3, 0x15, 0x5d, 0xf8, 0x6b, 0xfd, 0x93, 0x15,
		0xff, 0x52, 0xed, 0x9f, 0xbc, 0x71, 0x8c, 0xca, 0x8a, 0x4e, 0xfe, 0xa5, 0x55, 0x1f, 0x28, 0xaf,
		0xf8, 0xc0, 0xe1, 0xaa, 0x0f, 0x1c, 0xae, 0xf8, 0xc0, 0xca, 0x47, 0x2a, 0xad, 0xf8, 0x40, 0xa5,
		0xff, 0xb2, 0xf0, 0xfb, 0xfb, 0xcb, 0x7f, 0xb5, 0xda, 0x3f, 0x78, 0x59, 0xf5, 0x6f, 0xb5, 0xfe,
		0xcb, 0xc9, 0xc1, 0x01, 0x0e, 0x12, 0xb6, 0x83, 0x04, 0xe6, 0x2c, 0x6f, 0xce, 0xdb, 0x77, 0xb0,
		0xe2, 0x62, 0xa6, 0xbc, 0xcb, 0xc1, 0x9c, 0x87, 0xb0, 0xe8, 0x63, 0x30, 0xe6, 0x23, 0x40, 0x6f,
		0x84, 0xde, 0x08, 0xbd, 0x11, 0x7a, 0x63, 0x46, 0xf5, 0xc6, 0x9e, 0xeb, 0xeb, 0x23, 0x41, 0xa9,
		0x51, 0xa0, 0xb3, 0xad, 0x70, 0xb7, 0x6c, 0x41, 0xce, 0x6c, 0xa2, 0x3b, 0xf6, 0xa4, 0x33, 0xb1,
		0x70, 0x73, 0x37, 0xe3, 0xbd, 0x88, 0xcd, 0xf5, 0x20, 0x16, 0x6c, 0xac, 0x68, 0xa4, 0xe9, 0xf5,
		0xc4, 0xa4, 0x4a, 0x95, 0x0a, 0x8c, 0x4a, 0xca, 0xa8, 0x40, 0xa7, 0xb6, 0x96, 0x4e, 0x85, 0xaa,
		0x1b, 0x84, 0x5a, 0xb5, 0xec, 0xb6, 0xe7, 0x3c, 0x09, 0x66, 0x72, 0xbc, 0x9a, 0x17, 0x04, 0x0b,
		0x04, 0x0b, 0x04, 0x0b, 0x04, 0x0b, 0x04, 0x0b, 0x04, 0x0b, 0x04, 0x0b, 0x04, 0x0b, 0x04, 0x0b,
		0x04, 0x0b, 0x04, 0x0b, 0x04, 0x6b, 0x8b, 0x08, 0x96, 0xe7, 0x3c, 0x2a, 0xcf, 0x00, 0xc1, 0x1a,
		0xce, 0x0b, 0x82, 0x05, 0x82, 0x05, 0x82, 0x05, 0x82, 0x05, 0x82, 0x35, 0xb3, 0xe3, 0x3a, 0x5d,
		0x2f, 0x12, 0xc1, 0xc7, 0x1c, 0x32, 0xe6, 0xe9, 0xa9, 0xf1, 0x61, 0xc9, 0x40, 0xd2, 0x67, 0x4d,
		0x70, 0x4a, 0x59, 0xae, 0x2c, 0xbf, 0x9a, 0x46, 0xb9, 0xf3, 0x02, 0xe1, 0x29, 0x56, 0xdf, 0x99,
		0x79, 0x00, 0xd3, 0xbc, 0xc7, 0x3c, 0xff, 0x31, 0x40, 0xae, 0x8d, 0x92, 0xec, 0x45, 0xdb, 0x2b,
		0x94, 0x8f, 0x2a, 0xb5, 0x0a, 0x0c, 0xd0, 0xb4, 0x01, 0xee, 0x6d, 0xe7, 0x6c, 0xb8, 0x69, 0x92,
		0xcc, 0xdd, 0x90, 0xed, 0xd6, 0xb9, 0xe0, 0x31, 0x4a, 0xf6, 0x3d, 0x13, 0xed, 0xde, 0x39, 0xf5,
		0x57, 0x4d, 0x74, 0xf1, 0x9c, 0xcc, 0x3e, 0xe9, 0xe6, 0xd9, 0x38, 0xff, 0xd7, 0xed, 0xe5, 0xc5,
		0x87, 0x8b, 0x87, 0xc6, 0xf5, 0xa7, 0xcb, 0x4b, 0xcb, 0xc0, 0x71, 0x14, 0xf7, 0xf8, 0xbc, 0xbb,
		0xf9, 0xf4, 0x70, 0x7e, 0xd7, 0x38, 0xbd, 0x3c, 0xbf, 0x7b, 0x30, 0xf1, 0x10, 0xa5, 0x71, 0xa3,
		0x51, 0xf3, 0xef, 0x23, 0x6e, 0x05, 0x7a, 0x71, 0x65, 0xf8, 0x29, 0x6a, 0x83, 0xa7, 0x38, 0xbf,
		0x7e, 0xb8, 0xbb, 0xb9, 0xfd, 0x77, 0x23, 0xee, 0x46, 0xd8, 0xb8, 0xb8, 0x3e, 0xbb, 0xf8, 0x70,
		0xfa, 0x70, 0x73, 0x67, 0xe2, 0x79, 0x8e, 0xe2, 0xe6, 0x0e, 0x37, 0xc3, 0x47, 0xb1, 0xf6, 0xb6,
		0xd8, 0x47, 0x33, 0xd0, 0x39, 0x74, 0x0a, 0x85, 0x2b, 0x16, 0x5c, 0x94, 0x05, 0x4e, 0x9e, 0x66,
		0x7e, 0x13, 0x88, 0xb6, 0x19, 0x9d, 0x3e, 0xc3, 0x22, 0x46, 0x1a, 0xf1, 0x16, 0x97, 0x81, 0x93,
		0x68, 0xaf, 0xd7, 0xa9, 0x87, 0x30, 0xde, 0x84, 0x27, 0xb9, 0x23, 0x03, 0xd3, 0xcf, 0x9d, 0x14,
		0x27, 0xb9, 0xe2, 0x96, 0xfa, 0xaf, 0x08, 0x90, 0x99, 0x7d, 0x7e, 0x74, 0xda, 0x5b, 0x36, 0x8f,
		0xe9, 0xae, 0x3c, 0xcb, 0x1a, 0x0c, 0x2c, 0xfb, 0x21, 0xba, 0xec, 0x11, 0x52, 0x32, 0x74, 0xd9,
		0x5b, 0x3d, 0x03, 0xba, 0xec, 0xa5, 0xc4, 0x4a, 0xb7, 0xbd, 0xcb, 0xde, 0x5b, 0x91, 0x2f, 0xb5,
		0x1d, 0xf6, 0xee, 0xe2, 0x67, 0x45, 0x7f, 0xbd, 0x74, 0xd8, 0x75, 0x2a, 0xed, 0x79, 0x9b, 0x1a,
		0x2e, 0xd1, 0x56, 0x50, 0x66, 0xa9, 0x98, 0x8c, 0x96, 0x4a, 0x68, 0xa9, 0x94, 0x43, 0x4b, 0x25,
		0x5a, 0xbc, 0x26, 0x6f, 0xa9, 0xd4, 0x52, 0x91, 0x76, 0xfd, 0xf8, 0x04, 0xb0, 0xb9, 0xaa, 0x0f,
		0x4f, 0x76, 0xc5, 0xb2, 0xc9, 0x78, 0x5a, 0x2a, 0x15, 0xb8, 0x5a, 0x2a, 0x15, 0xd0, 0x52, 0x49,
		0x00, 0x94, 0xc4, 0xc0, 0x49, 0x0c, 0xa4, 0x64, 0xc0, 0x2a, 0x1b, 0x94, 0x9f, 0x2d, 0x2f, 0x51,
		0xa6, 0x72, 0x2f, 0x67, 0xde, 0x21, 0x6f, 0x9e, 0xa1, 0x40, 0xab, 0x07, 0xa1, 0xca, 0xbb, 0x12,
		0x25, 0x23, 0xc5, 0x4a, 0x44, 0x6e, 0x41, 0x25, 0xdd, 0x3a, 0xe7, 0x32, 0x48, 0x16, 0x38, 0xdc,
		0x92, 0xca, 0xb8, 0xf5, 0x2c, 0xc5, 0x17, 0x64, 0x60, 0xa9, 0x0a, 0x58, 0x5a, 0x17, 0x96, 0x50,
		0xda, 0x73, 0xeb, 0x2a, 0xd5, 0x6e, 0x1d, 0x50, 0xc3, 0x3c, 0xb7, 0xaa, 0xf2, 0x6c, 0x3d, 0x23,
		0x41, 0xd5, 0x7a, 0x5a, 0xc3, 0x0b, 0x84, 0x8a, 0x63, 0x7c, 0x91, 0xcb, 0x66, 0xb8, 0x4a, 0x32,
		0xed, 0xf0, 0x38, 0x9e, 0x01, 0x2a, 0x10, 0x54, 0x20, 0xa8, 0x40, 0x50, 0x81, 0x48, 0x2d, 0x9e,
		0xf5, 0x36, 0x2a, 0x54, 0xa0, 0x5f, 0xbc, 0x79, 0xf6, 0xdb, 0xa4, 0x02, 0xb7, 0x47, 0x85, 0x6e,
		0x8b, 0x0a, 0xdc, 0xce, 0x96, 0xbc, 0x0d, 0x2a, 0x7e, 0xfb, 0xd3, 0xd8, 0x65, 0x3b, 0xf9, 0xcb,
		0x75, 0x02, 0x37, 0x05, 0x44, 0x6f, 0x6f, 0x9a, 0xb9, 0xad, 0xb9, 0x4b, 0x06, 0x93, 0xd1, 0xec,
		0x68, 0xa8, 0x97, 0xf3, 0xc7, 0xa9, 0xcc, 0x6d, 0x49, 0x89, 0xdb, 0x91, 0x32, 0xb7, 0x21, 0x65,
		0x6f, 0x3f, 0x1a, 0xbc, 0xed, 0x68, 0xe4, 0x76, 0xa3, 0xc1, 0xdb, 0x8c, 0x66, 0x6e, 0x2f, 0x9a,
		0xbe, 0xad, 0x28, 0x79, 0x3b, 0x91, 0xbd, 0x26, 0x91, 0xd8, 0xed, 0x43, 0xb3, 0xb7, 0x0d, 0x4d,
		0xdc, 0x2e, 0x34, 0x76, 0x9b, 0xd0, 0xd8, 0xed, 0x41, 0xe1, 0xdb, 0x82, 0xb2, 0xb7, 0x03, 0x33,
		0x77, 0xfb, 0x0c, 0x22, 0xfb, 0x06, 0x26, 0x35, 0x94, 0xc0, 0x83, 0x9e, 0xe6, 0x56, 0xd9, 0x07,
		0x53, 0x40, 0x66, 0x87, 0xcc, 0xfe, 0x8b, 0xe5, 0x84, 0xcc, 0x6e, 0x1e, 0xf7, 0x20, 0xb3, 0x2f,
		0x27, 0xa5, 0x90, 0xd9, 0x17, 0xdf, 0x3c, 0x64, 0xf6, 0x14, 0xac, 0xc6, 0xe4, 0x8b, 0x40, 0x66,
		0xe7, 0x31, 0x76, 0xc8, 0xec, 0x54, 0xb6, 0x02, 0x99, 0x3d, 0x63, 0x44, 0x2d, 0x07, 0x99, 0x5d,
		0xf0, 0x38, 0x85, 0xcc, 0xbe, 0xae, 0xff, 0x04, 0x99, 0x9d, 0x71, 0x52, 0xc8, 0xec, 0x90, 0xd9,
		0x37, 0xdf, 0x99, 0x90, 0xd9, 0xf9, 0xe6, 0x84, 0xcc, 0xce, 0x3b, 0x1d, 0x64, 0x76, 0xd1, 0x51,
		0x77, 0x42, 0x66, 0x0f, 0x9a, 0x8e, 0x67, 0x0f, 0xab, 0x8c, 0xf1, 0x09, 0xed, 0x33, 0x93, 0x40,
		0x6a, 0x87, 0xd4, 0xfe, 0x8b, 0xe5, 0x84, 0xd4, 0x6e, 0x1e, 0xfb, 0xb2, 0x27, 0xb5, 0xf7, 0x5c,
		0x5f, 0x57, 0xcb, 0x8c, 0x32, 0x3b, 0xc3, 0xe9, 0xce, 0x2c, 0xf0, 0x32, 0xea, 0x02, 0x12, 0x82,
		0xae, 0x54, 0xc7, 0x59, 0x71, 0x39, 0x4e, 0x4e, 0x86, 0xe3, 0x6c, 0x36, 0x29, 0xa1, 0xd3, 0x4e,
		0xf5, 0x59, 0x91, 0x02, 0x9f, 0xbb, 0x62, 0x15, 0x70, 0xbe, 0xd3, 0xe3, 0x7c, 0x47, 0x5d, 0xdb,
		0x6d, 0x31, 0xfa, 0xdd, 0xc3, 0xf1, 0xe1, 0x72, 0xc3, 0xe5, 0x86, 0xcb, 0x0d, 0x97, 0x9b, 0xdc,
		0xe5, 0x2e, 0x56, 0x19, 0x5d, 0xee, 0x2a, 0x5c, 0x6e, 0xb8, 0xdc, 0x70, 0xb9, 0xcd, 0xb8, 0xdc,
		0xd5, 0x4a, 0xe5, 0x10, 0x3e, 0x36, 0x7c, 0x6c, 0x93, 0x67, 0x98, 0xfa, 0xae, 0x43, 0xc7, 0xee,
		0xf9, 0x91, 0x76, 0x1e, 0x3d, 0xa6, 0xd3, 0x2c, 0x54, 0x6d, 0x15, 0x2a, 0xbf, 0x99, 0xe9, 0x74,
		0xc7, 0xbb, 0x8f, 0x1f, 0x72, 0x87, 0xa5, 0xc2, 0x31, 0x67, 0x72, 0x86, 0x50, 0x23, 0xff, 0x59,
		0x6f, 0x74, 0xba, 0x36, 0xcc, 0xb8, 0x20, 0xdd, 0xbb, 0x7f, 0xce, 0x41, 0x9d, 0x2c, 0x1e, 0xd0,
		0x68, 0x07, 0x18, 0x7f, 0x37, 0x0c, 0xb4, 0x8a, 0x4f, 0x3d, 0x3b, 0x54, 0xff, 0xd3, 0x53, 0x91,
		0x56, 0x8c, 0xfc, 0x7f, 0xe9, 0x6c, 0x50, 0x03, 0xa0, 0x06, 0x40, 0x0d, 0x80, 0x1a, 0x40, 0x6a,
		0xf1, 0x6e, 0x4b, 0xf9, 0xda, 0xd5, 0x3f, 0x42, 0xd5, 0xe6, 0xbc, 0xec, 0xc2, 0xd1, 0xd7, 0xeb,
		0x62, 0xf4, 0xe8, 0x7f, 0x38, 0x11, 0xe3, 0xbe, 0x1a, 0xbf, 0xa8, 0xdb, 0xbb, 0x9b, 0x87, 0xf3,
		0x0f, 0x0f, 0x17, 0x37, 0xd7, 0x8d, 0x87, 0x7f, 0xdf, 0x9e, 0x73, 0xed, 0xae, 0x98, 0xc7, 0x45,
		0xac, 0xb7, 0x47, 0x98, 0x1d, 0xc1, 0xf1, 0x0b, 0xbb, 0xbc, 0xb8, 0xfe, 0x67, 0xe3, 0xfa, 0xe6,
		0xec, 0xbc, 0x31, 0xf3, 0xea, 0xee, 0xce, 0xff, 0xf7, 0xa7, 0xf3, 0xfb, 0x87, 0xf3, 0x33, 0x2b,
		0x8b, 0x54, 0x5e, 0xf2, 0xcd, 0xbd, 0x7a, 0x69, 0x17, 0x77, 0x78, 0x67, 0xbf, 0x7a, 0x67, 0x9f,
		0xae, 0x47, 0x2f, 0x8c, 0xf5, 0x35, 0xb1, 0x8c, 0x5c, 0x4f, 0xfb, 0xa1, 0x96, 0x4a, 0x87, 0x3c,
		0x52, 0x7e, 0x4b, 0x85, 0xb6, 0x8e, 0xba, 0xaa, 0xc9, 0xe7, 0x88, 0xcf, 0xcd, 0xc2, 0xe3, 0x80,
		0x17, 0xe1, 0x80, 0xc3, 0x01, 0x87, 0x03, 0x9e, 0x4e, 0x07, 0x9c, 0xba, 0x3d, 0xd9, 0x54, 0x4f,
		0x50, 0xce, 0x57, 0xbb, 0xe5, 0x68, 0xc7, 0x0e, 0x29, 0x1b, 0x1f, 0xae, 0x56, 0x14, 0xe6, 0xe7,
		0x63, 0xb2, 0x18, 0x1e, 0x4d, 0x81, 0x1d, 0xda, 0x24, 0x20, 0x4e, 0x10, 0xea, 0xa4, 0x20, 0x4f,
		0x1c, 0xfa, 0xc4, 0x21, 0x50, 0x16, 0x0a, 0x79, 0xdd, 0x4c, 0xae, 0x5e, 0xfa, 0x6c, 0x1a, 0xc5,
		0xa2, 0x56, 0xa1, 0x94, 0x6a, 0x7b, 0x81, 0x23, 0x53, 0x22, 0xe2, 0x98, 0x71, 0x8a, 0x4b, 0xe5,
		0x3f, 0xc5, 0x9d, 0x84, 0x51, 0x23, 0x62, 0x6d, 0x71, 0xc4, 0x3a, 0xc9, 0x95, 0x71, 0xe3, 0x3f,
		0x3b, 0x02, 0xc0, 0xd4, 0x54, 0x4c, 0x94, 0x88, 0x80, 0xa9, 0x64, 0xe3, 0x74, 0xe2, 0x1f, 0x3d,
		0x53, 0xc5, 0x21, 0x24, 0x72, 0x28, 0x26, 0x73, 0xf1, 0xe7, 0x52, 0x08, 0x1e, 0x48, 0x33, 0xb9,
		0x15, 0xa5, 0x52, 0xb1, 0x70, 0x92, 0xbb, 0xbb, 0xff, 0xeb, 0x36, 0xf7, 0xb7, 0xab, 0x9f, 0x73,
		0x17, 0xd7, 0x0f, 0xf7, 0xe7, 0x77, 0x7f, 0x49, 0xdc, 0xbc, 0x17, 0xf2, 0xbc, 0x97, 0x79, 0xe0,
		0x52, 0xd9, 0x17, 0xc6, 0x9c, 0xf1, 0xa5, 0x4e, 0xf9, 0x2f, 0x96, 0x1b, 0x88, 0x28, 0x8b, 0x88,
		0x7b, 0x19, 0xc0, 0x58, 0x4b, 0x46, 0x75, 0x81, 0xd6, 0x02, 0xad, 0x05, 0x5a, 0x0b, 0xb4, 0x16,
		0x68, 0x2d, 0xd0, 0x5a, 0xa0, 0xb5, 0x80, 0x40, 0x43, 0x6b, 0x81, 0xa9, 0x80, 0x59, 0x40, 0x6b,
		0x81, 0xd6, 0x02, 0xad, 0x05, 0x5a, 0x0b, 0x10, 0x71, 0x37, 0xb4, 0x96, 0xc8, 0xfd, 0x7f, 0x02,
		0x5a, 0x4b, 0x3c, 0x0b, 0xb4, 0x16, 0x68, 0x2d, 0xd0, 0x5a, 0xa0, 0xb5, 0x40, 0x6b, 0x81, 0xd6,
		0x02, 0xad, 0x05, 0x04, 0x1a, 0x5a, 0x0b, 0x4c, 0x05, 0xcc, 0x02, 0x5a, 0x0b, 0xb4, 0x16, 0x68,
		0x2d, 0xd0, 0x5a, 0x80, 0x88, 0xe9, 0xd2, 0x5a, 0x52, 0x7d, 0xf5, 0xe9, 0xd4, 0xf7, 0x03, 0x3d,
		0xec, 0x1d, 0xc5, 0x72, 0x03, 0x2a, 0x6a, 0x3e, 0xab, 0x8e, 0xd3, 0x75, 0x62, 0xbe, 0x60, 0xe5,
		0x83, 0xae, 0xf2, 0x9b, 0xb1, 0x0e, 0x62, 0xfb, 0x4a, 0xff, 0x1d, 0x84, 0x5f, 0x6d, 0x77, 0x70,
		0x4a, 0xf8, 0x4d, 0x95, 0x7f, 0xfd, 0x83, 0x68, 0xe1, 0x27, 0xf9, 0x4e, 0xd7, 0x8b, 0xf2, 0x91,
		0xfb, 0xe4, 0x3b, 0x9e, 0xeb, 0x3f, 0xd9, 0xdd, 0x30, 0xd0, 0x41, 0x33, 0xf0, 0xa2, 0xfc, 0x80,
		0xd2, 0xda, 0x5a, 0xe5, 0x23, 0x15, 0x45, 0x6e, 0xe0, 0x47, 0xe3, 0xbf, 0xe4, 0x23, 0xed, 0xc4,
		0x3f, 0x66, 0xbb, 0xe0, 0x39, 0xfc, 0x96, 0x3a, 0xec, 0x35, 0xb5, 0x3f, 0x02, 0xef, 0xeb, 0xe1,
		0x63, 0x5f, 0x8c, 0x9e, 0xba, 0x71, 0xd5, 0xf5, 0xa2, 0xc6, 0xfd, 0xf8, 0xa9, 0x6f, 0xc7, 0x0f,
		0xdd, 0xb8, 0x8b, 0xbe, 0x75, 0x1f, 0x54, 0xe3, 0x7e, 0xf8, 0xa8, 0x8d, 0xfb, 0xf8, 0x21, 0x1f,
		0xe2, 0x67, 0xdc, 0x89, 0xab, 0xbd, 0xf1, 0xd7, 0xb6, 0x47, 0x6f, 0x8d, 0xed, 0x6a, 0xef, 0xcc,
		0x2c, 0xa8, 0xad, 0x83, 0xab, 0xbd, 0x6f, 0xf2, 0x42, 0x70, 0xb5, 0x77, 0x5b, 0xce, 0x37, 0xfe,
		0xda, 0x3a, 0xd1, 0xb0, 0x97, 0x20, 0x63, 0x59, 0x9d, 0xa3, 0x5d, 0x38, 0x0d, 0xe2, 0xcd, 0x6d,
		0x3b, 0xad, 0x56, 0xa8, 0xa2, 0x88, 0xf1, 0x3c, 0x98, 0x9f, 0x07, 0x27, 0x02, 0x4e, 0x04, 0x9c,
		0x08, 0x38, 0x11, 0x48, 0x2d, 0xde, 0xed, 0x32, 0xe1, 0xcb, 0xdc, 0xa9, 0xc0, 0x10, 0xe1, 0x19,
		0xbf, 0x9b, 0xcc, 0x96, 0xda, 0x75, 0xbb, 0xdf, 0xca, 0x8c, 0xef, 0x7e, 0xf1, 0x64, 0x66, 0x9c,
		0xe3, 0xd6, 0xd1, 0x5a, 0x85, 0x3e, 0xbb, 0xaa, 0x69, 0xed, 0x7f, 0x2e, 0xd8, 0xc7, 0xf5, 0x97,
		0xcf, 0x45, 0xfb, 0xb8, 0x3e, 0xfc, 0x6b, 0x31, 0xfe, 0xcf, 0xcf, 0x52, 0xff, 0xa5, 0xf4, 0xb9,
		0x60, 0x97, 0x47, 0x3f, 0x2d, 0x55, 0x3e, 0x17, 0xec, 0x4a, 0xfd, 0x60, 0xff, 0xcb, 0x97, 0xf7,
		0xeb, 0x7e, 0xe6, 0xe0, 0xe7, 0x61, 0x9f, 0x4f, 0xca, 0xaa, 0x73, 0x2e, 0xc3, 0xcd, 0xfd, 0xc5,
		0xbf, 0xc4, 0xd6, 0xe2, 0x3f, 0xfb, 0x52, 0xab, 0x71, 0xf0, 0x0f, 0x0b, 0xc1, 0x0a, 0x39, 0x58,
		0xaa, 0x02, 0x96, 0xd6, 0x85, 0xa5, 0xd8, 0xaa, 0x1d, 0xbb, 0x7d, 0x6a, 0x7f, 0xac, 0xff, 0x2c,
		0xbe, 0x2b, 0xf7, 0x4f, 0x0e, 0x7e, 0xd6, 0xfa, 0xaf, 0x7f, 0xf8, 0xb2, 0xec, 0xd7, 0x8a, 0xef,
		0x6a, 0xfd, 0x93, 0x15, 0xff, 0x52, 0xed, 0x9f, 0xbc, 0x71, 0x8c, 0x4a, 0x7f, 0x7f, 0xe1, 0x57,
		0x07, 0x3f, 0x2f, 0xad, 0xfa, 0x40, 0x79, 0xc5, 0x07, 0x0e, 0x57, 0x7d, 0xe0, 0x70, 0xc5, 0x07,
		0x56, 0x3e, 0x52, 0x69, 0xc5, 0x07, 0x2a, 0xfd, 0x97, 0x85, 0xdf, 0xdf, 0x5f, 0xfe, 0xab, 0xd5,
		0xfe, 0xc1, 0xcb, 0xaa, 0x7f, 0xab, 0xf5, 0x5f, 0x4e, 0x0e, 0x0e, 0x00, 0xd4, 0x6f, 0x06, 0x6a,
		0x98, 0xa7, 0xbc, 0x79, 0x66, 0xef, 0xe0, 0x42, 0x2d, 0xfe, 0x4d, 0x14, 0x21, 0xed, 0xe8, 0x1e,
		0xa7, 0x12, 0x34, 0x1c, 0x1f, 0x0a, 0x10, 0x14, 0x20, 0x28, 0x40, 0x50, 0x80, 0x48, 0x2d, 0x5e,
		0xf9, 0xbd, 0x8e, 0x0a, 0x87, 0x61, 0x75, 0x46, 0x09, 0x88, 0x21, 0x3d, 0xd0, 0x3a, 0xf7, 0x7b,
		0x1d, 0xbe, 0xfd, 0xf4, 0x10, 0xdc, 0x0f, 0xc3, 0x25, 0xac, 0x29, 0x61, 0x85, 0xb8, 0x56, 0xf8,
		0x2d, 0x27, 0xd5, 0x2a, 0x0e, 0xa6, 0x38, 0xbb, 0xf9, 0x3f, 0xd7, 0x56, 0xb6, 0xd2, 0xdd, 0x83,
		0x8b, 0x78, 0xeb, 0x33, 0xbe, 0xfc, 0xf8, 0xa5, 0x90, 0x17, 0xbc, 0x9e, 0x9b, 0xe2, 0xd3, 0xed,
		0xe0, 0x24, 0xdc, 0xcd, 0xfc, 0x9f, 0x54, 0xfa, 0x6a, 0xba, 0xe7, 0xfb, 0xca, 0x63, 0x6d, 0x96,
		0x3c, 0x9d, 0x02, 0x1e, 0x1b, 0x3c, 0x36, 0x78, 0x6c, 0xf0, 0xd8, 0x48, 0x2d, 0x1e, 0xfd, 0x92,
		0x17, 0xfe, 0xa0, 0x5f, 0xf2, 0xdb, 0xe6, 0x41, 0xbf, 0xe4, 0x8d, 0x4c, 0x00, 0xfd, 0x92, 0x33,
		0x63, 0x06, 0xe8, 0x97, 0x4c, 0xb0, 0x5c, 0xe8, 0x97, 0xfc, 0xc6, 0xa3, 0x18, 0xfd, 0x92, 0xb3,
		0xe1, 0x98, 0x2e, 0x75, 0x50, 0xd1, 0x2f, 0x99, 0x09, 0x8d, 0xd2, 0xc9, 0xfb, 0x39, 0xfc, 0xf2,
		0x29, 0xe5, 0x1f, 0x8c, 0x0e, 0xb6, 0x0f, 0xb6, 0x0f, 0xb6, 0x0f, 0xb6, 0x4f, 0x6a, 0xf1, 0xe8,
		0x87, 0xfc, 0xc6, 0x17, 0x75, 0x79, 0x7f, 0xdb, 0xb8, 0xbb, 0xb9, 0x44, 0x23, 0xe4, 0xdf, 0xbe,
		0xa9, 0xf3, 0x3f, 0xef, 0xce, 0xef, 0xef, 0xd1, 0xbc, 0x77, 0xf5, 0x1b, 0xba, 0xb8, 0xc6, 0x2b,
		0xfa, 0xcd, 0x2b, 0x7a, 0xb8, 0x3b, 0xbd, 0xbe, 0xbf, 0x78, 0x40, 0x6f, 0xe3, 0xd4, 0x06, 0xcd,
		0xf6, 0x52, 0x64, 0xa8, 0x5c, 0x97, 0xf7, 0xd3, 0x71, 0x69, 0x9f, 0x66, 0x13, 0x24, 0x5f, 0xb0,
		0x64, 0x23, 0x24, 0x5c, 0xea, 0x81, 0x83, 0x3b, 0x58, 0x03, 0x2f, 0x68, 0x3a, 0x9e, 0xed, 0xfa,
		0x2d, 0x95, 0xd4, 0xc3, 0xb5, 0x2e, 0xdd, 0x48, 0x9f, 0x6a, 0x4d, 0xd3, 0xf1, 0xd6, 0xba, 0x72,
		0xfd, 0x73, 0x4f, 0x0d, 0x1c, 0x56, 0x22, 0xc9, 0xd3, 0xba, 0x72, 0xbe, 0xcf, 0x8c, 0x58, 0x3c,
		0x2a, 0x97, 0xab, 0xb5, 0x72, 0xb9, 0x50, 0x3b, 0xac, 0x15, 0x8e, 0x2b, 0x95, 0x62, 0x95, 0xc2,
		0xab, 0xb2, 0x6e, 0xc2, 0x96, 0x0a, 0x55, 0xeb, 0x8f, 0xc1, 0xcb, 0xf5, 0x7b, 0x9e, 0x47, 0x39,
		0xe4, 0xa7, 0x48, 0x85, 0x24, 0x9a, 0x6c, 0x52, 0xdb, 0x21, 0x86, 0x07, 0xd3, 0xb0, 0x40, 0xe0,
		0x83, 0x92, 0x14, 0xea, 0x48, 0x06, 0x4c, 0x9b, 0xc3, 0xc9, 0x66, 0x9f, 0xdc, 0xd0, 0x88, 0xa8,
		0x8c, 0xc7, 0x94, 0xd1, 0x6c, 0xb6, 0x48, 0xeb, 0xbf, 0xe2, 0xf5, 0x3e, 0xb1, 0xe6, 0x62, 0x24,
		0x5d, 0x04, 0xe1, 0x97, 0xbf, 0xc1, 0x06, 0x4d, 0xb4, 0x21, 0xd7, 0x5b, 0xe3, 0xb7, 0xaf, 0xd4,
		0x1a, 0xab, 0x64, 0x45, 0xea, 0x69, 0x70, 0x54, 0xd9, 0x61, 0xd0, 0xd3, 0x9b, 0xe4, 0x35, 0xce,
		0x14, 0xaa, 0x99, 0x1f, 0x68, 0x4d, 0x4b, 0x19, 0x4b, 0x0e, 0x6b, 0x7e, 0x6c, 0x53, 0xdd, 0x32,
		0x89, 0x2e, 0x39, 0xab, 0x3b, 0x46, 0xe1, 0x26, 0x46, 0x93, 0x50, 0x55, 0x24, 0x53, 0x0d, 0xc9,
		0x54, 0xc1, 0xd7, 0xaa, 0x5f, 0x14, 0x5a, 0x29, 0x43, 0xa2, 0x33, 0x77, 0x33, 0x87, 0xd1, 0x72,
		0x9e, 0x9e, 0x42, 0xf5, 0xe4, 0x68, 0x65, 0x47, 0x6e, 0xcb, 0x6e, 0x06, 0x3d, 0x5f, 0xab, 0x70,
		0xf3, 0x6b, 0x1d, 0x13, 0xe3, 0x59, 0x31, 0xee, 0x86, 0xef, 0x7f, 0xb3, 0xed, 0x93, 0x78, 0x1b,
		0x51, 0x6c, 0x27, 0xb2, 0x6d, 0x45, 0xb5, 0xbd, 0xc8, 0xb7, 0x19, 0xf9, 0x76, 0xa3, 0xdc, 0x76,
		0x66, 0xbc, 0xb3, 0x4d, 0xb7, 0xe3, 0xaf, 0xb7, 0x65, 0xf2, 0x25, 0xff, 0xe5, 0xee, 0x4c, 0xba,
		0xfc, 0xc9, 0x36, 0xe9, 0xe2, 0x66, 0x2d, 0x25, 0x1c, 0x88, 0x30, 0x36, 0x47, 0xb6, 0x79, 0xa9,
		0x37, 0x31, 0xdb, 0x66, 0x66, 0xdb, 0xd4, 0x1c, 0x9b, 0x3b, 0x1d, 0x5a, 0x50, 0xd2, 0x4d, 0x3f,
		0x19, 0x68, 0xe0, 0xc8, 0xdb, 0x9e, 0xf3, 0xa8, 0x3c, 0x3a, 0xfb, 0x18, 0x1b, 0xf0, 0xcc, 0xd8,
		0x44, 0xeb, 0x48, 0x1b, 0xb2, 0x27, 0x0f, 0xd5, 0x73, 0x84, 0xe8, 0xc9, 0xe1, 0x80, 0x0b, 0x16,
		0xd8, 0xe1, 0x81, 0x1d, 0x26, 0x38, 0xe1, 0x82, 0x4e, 0x84, 0xce, 0x11, 0x46, 0x0d, 0xc8, 0xc3,
		0xeb, 0x13, 0x6b, 0xf5, 0x94, 0xd3, 0xa6, 0x0d, 0xa9, 0x4f, 0xce, 0xfc, 0x1a, 0xe1, 0x98, 0xb7,
		0x23, 0x3d, 0xe4, 0xfd, 0xfb, 0x51, 0x79, 0xe0, 0x19, 0xcc, 0x4a, 0x4b, 0xd0, 0x81, 0x44, 0xeb,
		0xa4, 0xec, 0x7e, 0x3e, 0x77, 0x6f, 0x5e, 0x11, 0x63, 0x7b, 0x91, 0x1a, 0xdb, 0x4b, 0xc0, 0x76,
		0x60, 0xfb, 0x0e, 0x62, 0x3b, 0x95, 0x8b, 0x38, 0x19, 0xd0, 0xf5, 0xed, 0xa0, 0xa9, 0x95, 0x66,
		0x2c, 0xc4, 0x31, 0x9d, 0x02, 0xb9, 0x9e, 0x12, 0xb9, 0x9e, 0xa4, 0xa0, 0xc3, 0x0d, 0x3e, 0x62,
		0x20, 0x24, 0x06, 0x46, 0x12, 0xa0, 0x44, 0x0b, 0x4e, 0xc4, 0x20, 0xc5, 0xe7, 0x88, 0x2e, 0x58,
		0xfb, 0x48, 0x78, 0xaa, 0x96, 0x19, 0xb3, 0x3c, 0x8f, 0x70, 0xb1, 0x73, 0xfa, 0xe0, 0xb8, 0xd8,
		0x99, 0xc8, 0x6c, 0x71, 0xb1, 0x73, 0x4d, 0x13, 0xe0, 0x49, 0x0f, 0xda, 0x55, 0xab, 0xc0, 0xcd,
		0xaa, 0xb4, 0xec, 0xaa, 0x81, 0x53, 0xdc, 0xfd, 0xca, 0xec, 0x75, 0xc7, 0x13, 0xc0, 0xe7, 0x86,
		0xcf, 0x0d, 0x9f, 0x1b, 0x3e, 0x37, 0x7c, 0x6e, 0xf8, 0xdc, 0xf0, 0xb9, 0xe1, 0x73, 0xc3, 0xe7,
		0x86, 0xcf, 0xbd, 0xa3, 0x3e, 0x37, 0x43, 0x5a, 0xc4, 0xc2, 0xe9, 0x48, 0x9e, 0x1e, 0x01, 0xcf,
		0x1b, 0x9e, 0x37, 0x3c, 0x6f, 0x78, 0xde, 0x9c, 0xd8, 0x92, 0x43, 0xdf, 0xb1, 0x5f, 0xbf, 0xf9,
		0x9e, 0xeb, 0xeb, 0xc3, 0x92, 0x40, 0x6b, 0x9f, 0x1a, 0xe3, 0x14, 0xbc, 0x04, 0x88, 0x7f, 0x35,
		0x44, 0x09, 0xd1, 0xa2, 0x57, 0x5c, 0x7d, 0x27, 0x33, 0xa1, 0xb4, 0x2f, 0x2c, 0xef, 0x13, 0x0b,
		0x30, 0x26, 0x51, 0xe6, 0xb4, 0x68, 0x2b, 0x85, 0xf2, 0x51, 0xa5, 0x56, 0x81, 0xc1, 0x64, 0x82,
		0x4c, 0xf1, 0x8f, 0x8e, 0x7e, 0x79, 0xf3, 0xc7, 0x29, 0x6f, 0xfb, 0x8c, 0x05, 0x8f, 0xa6, 0xcc,
		0x38, 0x07, 0x6b, 0x3b, 0x8d, 0xa9, 0xff, 0x24, 0xd1, 0x56, 0x63, 0x32, 0x5b, 0xdc, 0x5e, 0xe3,
		0xe2, 0xf6, 0xaf, 0x72, 0xe3, 0xfc, 0x5f, 0xb7, 0x97, 0x17, 0x1f, 0x2e, 0x1e, 0x1a, 0xd7, 0x9f,
		0x2e, 0x2f, 0x2d, 0x01, 0xb8, 0x8e, 0xdb, 0x6e, 0xdc, 0xdd, 0x7c, 0x7a, 0x38, 0xbf, 0x6b, 0x9c,
		0x5e, 0x9e, 0xdf, 0x3d, 0x48, 0x4c, 0x5a, 0x1a, 0x7d, 0xdf, 0xaa, 0xfc, 0xf7, 0x3d, 0x8c, 0xa7,
		0xbe, 0x12, 0x9e, 0xb5, 0x16, 0x17, 0xb4, 0xba, 0x7e, 0xb8, 0xbb, 0xb9, 0xfd, 0x77, 0xe3, 0xf2,
		0xf4, 0x8f, 0xf3, 0xcb, 0xc6, 0xc5, 0xf5, 0xd9, 0xc5, 0x87, 0xd3, 0x87, 0x9b, 0x3b, 0x89, 0xf9,
		0x8f, 0xe2, 0xbb, 0xe0, 0x37, 0xc3, 0xa9, 0xad, 0xbd, 0x0c, 0xfb, 0x18, 0x02, 0x0d, 0x57, 0xa6,
		0x50, 0xb3, 0x62, 0xc1, 0x58, 0x59, 0xc3, 0x64, 0xf6, 0x79, 0x23, 0x3d, 0xc9, 0x1d, 0x4a, 0xcc,
		0xb9, 0x88, 0x41, 0x22, 0xde, 0xcd, 0x32, 0x30, 0x20, 0xcb, 0x39, 0xff, 0xf5, 0x09, 0x39, 0xde,
		0x14, 0x2c, 0x31, 0xb0, 0x45, 0x4a, 0x38, 0x8b, 0xb4, 0x27, 0xb9, 0x62, 0x46, 0xfd, 0x2b, 0x88,
		0xec, 0xa9, 0x01, 0x49, 0x2b, 0xe8, 0x69, 0xf6, 0x8c, 0xf2, 0x99, 0x39, 0x20, 0xb2, 0x43, 0x64,
		0x5f, 0xb9, 0x98, 0x10, 0xd9, 0x4d, 0xa3, 0x1e, 0xd2, 0x5b, 0x96, 0xc1, 0x0b, 0xd2, 0x5b, 0x66,
		0x1e, 0x1c, 0xe9, 0x2d, 0x89, 0xcc, 0x16, 0xe9, 0x2d, 0x6b, 0x9a, 0x00, 0xd2, 0x5b, 0xe0, 0x79,
		0x6f, 0xad, 0xe7, 0xcd, 0x9b, 0x53, 0x3e, 0x99, 0x01, 0x5e, 0x37, 0xbc, 0x6e, 0x78, 0xdd, 0xf0,
		0xba, 0xe1, 0x75, 0xc3, 0xeb, 0x86, 0xd7, 0x0d, 0xaf, 0x1b, 0x5e, 0x37, 0xbc, 0xee, 0x2c, 0x79,
		0xdd, 0xe8, 0xf2, 0x41, 0x57, 0x1c, 0xfc, 0x55, 0x61, 0xeb, 0xfc, 0xf2, 0xc2, 0xbd, 0xcb, 0x7f,
		0x8c, 0x4e, 0x20, 0x73, 0x7e, 0x33, 0x69, 0x92, 0x2f, 0x1a, 0x81, 0xa0, 0x11, 0xc8, 0xf6, 0x22,
		0x87, 0xb9, 0x66, 0x21, 0xf7, 0xc3, 0xa7, 0xbe, 0x1b, 0x3e, 0x74, 0xe3, 0x74, 0xfc, 0x74, 0xf7,
		0x6e, 0xeb, 0xc3, 0xe8, 0xd9, 0xd0, 0x40, 0x24, 0xab, 0xc6, 0x26, 0xd6, 0x56, 0x64, 0x83, 0xae,
		0x08, 0xee, 0xe0, 0x09, 0xdb, 0x4e, 0x53, 0x11, 0x54, 0xd7, 0x9f, 0x19, 0x0b, 0x15, 0xf5, 0x51,
		0x51, 0xdf, 0x88, 0x16, 0x96, 0xb1, 0x8a, 0xfa, 0x93, 0x2d, 0x43, 0x57, 0x45, 0x7f, 0x3a, 0x64,
		0xca, 0x2a, 0xe7, 0x17, 0x50, 0x39, 0xdf, 0xdc, 0xa6, 0x65, 0xdb, 0xbc, 0x1c, 0x9b, 0x38, 0x1d,
		0xdc, 0x89, 0xac, 0x72, 0x7e, 0x73, 0xbc, 0x03, 0x88, 0x8b, 0x2a, 0x8f, 0xc6, 0x4d, 0x79, 0x55,
		0x65, 0x54, 0xcc, 0x27, 0x54, 0x03, 0x51, 0x55, 0x39, 0x33, 0x0a, 0x1c, 0x43, 0x55, 0xe5, 0xd1,
		0xc1, 0x6e, 0xbb, 0x2d, 0xce, 0x12, 0x6f, 0x33, 0xb3, 0x20, 0x24, 0x8f, 0x90, 0xbc, 0x29, 0x28,
		0x12, 0x83, 0x24, 0x09, 0x68, 0xa2, 0x85, 0x28, 0x62, 0xa8, 0x9a, 0xbc, 0x00, 0xfe, 0x90, 0x3c,
		0x23, 0xba, 0xcc, 0x39, 0x31, 0x47, 0xa9, 0x7e, 0xcf, 0x4c, 0xc1, 0x99, 0xc9, 0xf8, 0x3f, 0x9e,
		0x02, 0x6d, 0x07, 0x4d, 0xbb, 0x19, 0x74, 0xba, 0xa1, 0x8a, 0x22, 0xd5, 0xb2, 0x3d, 0xe5, 0xb4,
		0x07, 0x93, 0xa1, 0x47, 0xbe, 0xc1, 0x05, 0x32, 0x25, 0x4b, 0x4e, 0x85, 0xb9, 0xe9, 0x5f, 0xf3,
		0x23, 0xf6, 0xb0, 0x45, 0xbd, 0x6b, 0x58, 0x1c, 0x24, 0x4e, 0xe8, 0x42, 0x97, 0x32, 0x70, 0x2e,
		0x70, 0x2e, 0x74, 0x29, 0x63, 0xe9, 0x52, 0x36, 0xc4, 0xf7, 0xfc, 0x1c, 0x6c, 0x6d, 0x25, 0xd8,
		0x0f, 0x96, 0x85, 0x11, 0xed, 0xe9, 0x56, 0x7d, 0xd7, 0x25, 0x36, 0xb7, 0x0d, 0xb8, 0x37, 0x00,
		0xf7, 0x6e, 0x1b, 0x12, 0xdb, 0x1b, 0x07, 0x24, 0x56, 0xea, 0x17, 0x36, 0x01, 0xa9, 0x62, 0xcf,
		0x04, 0x2b, 0x5b, 0x23, 0xab, 0x91, 0xc2, 0x0d, 0x64, 0xb5, 0x34, 0xc2, 0x51, 0x36, 0x64, 0x35,
		0x6a, 0x98, 0x5a, 0xf4, 0x81, 0xf8, 0xcc, 0x91, 0x3a, 0xab, 0x40, 0x88, 0x0a, 0x8b, 0x81, 0x99,
		0x04, 0xa8, 0x89, 0x81, 0x9b, 0x14, 0xc8, 0x89, 0x83, 0x9d, 0x38, 0xe8, 0x49, 0x82, 0x1f, 0x0f,
		0x08, 0x32, 0x81, 0x21, 0x1f, 0x55, 0x17, 0xa4, 0xee, 0x12, 0x54, 0x7e, 0x25, 0xb5, 0xcf, 0xc7,
		0x66, 0x74, 0x32, 0xa3, 0xe9, 0xbe, 0xfa, 0xc1, 0xe8, 0x7f, 0xc7, 0x29, 0xc8, 0x99, 0x32, 0x09,
		0xe6, 0xb0, 0xc8, 0x64, 0x1e, 0xb1, 0xf0, 0x08, 0xdf, 0xce, 0x64, 0x58, 0x02, 0x2b, 0xea, 0x3d,
		0x0a, 0x3a, 0x14, 0x73, 0xb3, 0xc1, 0xa7, 0x80, 0x4f, 0x01, 0x9f, 0x02, 0x3e, 0x05, 0x7c, 0x8a,
		0x94, 0xfa, 0x14, 0x9f, 0xa7, 0x3e, 0xc5, 0x7f, 0x35, 0x7b, 0x61, 0xa8, 0x7c, 0xbd, 0x7f, 0x90,
		0x7f, 0xff, 0x7e, 0x1a, 0x5e, 0xa8, 0x8f, 0x3e, 0x32, 0x8b, 0xeb, 0xd1, 0x92, 0x9f, 0x4d, 0x46,
		0x6e, 0xa9, 0xef, 0x70, 0x4f, 0xb6, 0xd5, 0x3d, 0x49, 0xb5, 0x1e, 0x73, 0xfe, 0x3d, 0xbe, 0x1c,
		0x4a, 0x5f, 0x5e, 0x83, 0x5f, 0x12, 0x0c, 0x9a, 0xb6, 0xfa, 0xae, 0x4f, 0xb4, 0xf2, 0x54, 0x47,
		0xe9, 0xf0, 0x87, 0x1d, 0xf8, 0x76, 0xf3, 0x39, 0xae, 0x17, 0x22, 0x22, 0x13, 0xc6, 0xd7, 0x52,
		0x05, 0x74, 0xc2, 0xb4, 0x4b, 0x84, 0xf5, 0x8c, 0x65, 0x84, 0xa5, 0x29, 0xf1, 0x68, 0x2e, 0xb4,
		0x4a, 0x9a, 0x86, 0x44, 0xbf, 0xd6, 0x94, 0xa5, 0xd4, 0x86, 0x65, 0x09, 0xd8, 0x62, 0x4b, 0xc3,
		0xe1, 0x33, 0x16, 0x5a, 0x2a, 0x21, 0xb4, 0x24, 0xc6, 0x90, 0x10, 0x5a, 0xda, 0x3e, 0x57, 0x06,
		0xa1, 0x25, 0xc8, 0x40, 0x90, 0x81, 0x20, 0x03, 0x41, 0x06, 0x82, 0x0c, 0x24, 0x20, 0x03, 0xf1,
		0x87, 0x96, 0x10, 0x29, 0x59, 0x74, 0xec, 0x11, 0x29, 0xc1, 0x11, 0x89, 0x23, 0x12, 0x47, 0x24,
		0x8e, 0xc8, 0x0c, 0x1c, 0x91, 0x99, 0x8a, 0x94, 0xec, 0x18, 0x5b, 0xde, 0x5d, 0x95, 0x95, 0xb0,
		0x24, 0x2a, 0xfd, 0x52, 0xe3, 0xee, 0xaf, 0x51, 0xe3, 0xb0, 0x48, 0x35, 0x6e, 0x82, 0xea, 0x97,
		0x17, 0xe3, 0xa7, 0x9b, 0xfe, 0xed, 0x4e, 0xb5, 0xb7, 0xe9, 0xf2, 0xda, 0x5c, 0x75, 0x48, 0xf2,
		0xbb, 0x6b, 0x73, 0xa3, 0xe3, 0xea, 0x1a, 0x85, 0xc3, 0x8f, 0x9b, 0xca, 0x39, 0xdc, 0x54, 0xce,
		0xa5, 0xf9, 0xea, 0xda, 0x6c, 0x19, 0x63, 0xbe, 0x18, 0x23, 0x69, 0xad, 0x64, 0x46, 0x80, 0x59,
		0x04, 0x9a, 0x12, 0x6a, 0x43, 0x89, 0x29, 0x0c, 0xa8, 0x0d, 0xb5, 0x7d, 0xdc, 0x89, 0x2d, 0xd2,
		0xd8, 0x0e, 0xc2, 0xbf, 0x9d, 0xb0, 0x35, 0xf0, 0x62, 0x9b, 0x9e, 0x13, 0x45, 0x2a, 0xe2, 0x97,
		0x54, 0x97, 0xcc, 0xc9, 0x2b, 0xac, 0x16, 0x21, 0xac, 0x9a, 0x83, 0x3b, 0x29, 0xd8, 0x13, 0x87,
		0x3f, 0x71, 0x18, 0x94, 0x84, 0x43, 0x3e, 0x91, 0x2a, 0xc7, 0x28, 0xac, 0x72, 0xc1, 0xe4, 0x4a,
		0xb8, 0xe4, 0xb7, 0xe6, 0x55, 0xa0, 0xc9, 0x6d, 0xd4, 0xbc, 0xd0, 0xc9, 0xee, 0x21, 0x9a, 0x80,
		0x52, 0x71, 0x48, 0x95, 0x86, 0x56, 0x63, 0x10, 0x6b, 0x0c, 0x6a, 0x4d, 0x40, 0x2e, 0x2f, 0xf4,
		0x32, 0x43, 0xb0, 0x18, 0x14, 0x4f, 0x26, 0x52, 0xdf, 0xbb, 0x72, 0x86, 0x3f, 0xde, 0xd9, 0x83,
		0x49, 0x85, 0x2c, 0x8f, 0x37, 0x39, 0x40, 0xdc, 0xa7, 0x35, 0x09, 0xcc, 0xc6, 0x00, 0xda, 0x14,
		0x50, 0x1b, 0x07, 0x6c, 0xe3, 0xc0, 0x6d, 0x12, 0xc0, 0x65, 0x80, 0x5c, 0x08, 0xd0, 0x27, 0x2f,
		0x92, 0x3d, 0x79, 0x61, 0xe5, 0x6e, 0xe5, 0x4f, 0x66, 0x58, 0xe9, 0x05, 0xd7, 0x04, 0xe7, 0x9c,
		0xa9, 0x22, 0x19, 0x07, 0x8e, 0xf3, 0x83, 0xc3, 0x66, 0x6f, 0x3b, 0x0c, 0x55, 0xc0, 0x48, 0x99,
		0x6e, 0xfa, 0xfc, 0xd6, 0x3a, 0x39, 0x6e, 0x00, 0x19, 0x66, 0x67, 0xe2, 0x2c, 0x0d, 0x4e, 0x01,
		0x9c, 0x02, 0x38, 0x05, 0x19, 0x74, 0x0a, 0xa4, 0xd8, 0x9e, 0x11, 0xd6, 0x67, 0x90, 0xfd, 0x19,
		0x62, 0x81, 0xc6, 0xd8, 0xa0, 0xc9, 0x03, 0xc0, 0xf8, 0x41, 0x60, 0xfa, 0x40, 0x48, 0xcd, 0xc1,
		0x90, 0x9a, 0x03, 0x22, 0x0d, 0x07, 0x85, 0xec, 0x81, 0x21, 0x7c, 0x70, 0x98, 0x63, 0x95, 0x0b,
		0xbb, 0xbd, 0xe7, 0xfa, 0xfa, 0xc8, 0xc4, 0x6e, 0x1f, 0x41, 0x7b, 0xc5, 0xc0, 0xd4, 0x77, 0x71,
		0xed, 0x12, 0x8e, 0x62, 0x2c, 0x6f, 0xf9, 0x63, 0x06, 0xdd, 0xe2, 0x2f, 0x7e, 0xe5, 0xfa, 0xc6,
		0xe0, 0x75, 0xf2, 0x10, 0x7f, 0x39, 0x5e, 0x4f, 0xc9, 0x9f, 0xad, 0x0b, 0xcf, 0xf1, 0x31, 0x74,
		0x9a, 0xda, 0x0d, 0xfc, 0x33, 0xf7, 0xc9, 0x8d, 0x6b, 0xf3, 0x98, 0x7e, 0xa0, 0x6b, 0xf5, 0xe4,
		0x68, 0xf7, 0x9b, 0x1a, 0x97, 0xbc, 0x31, 0xf6, 0x34, 0xfd, 0x77, 0x06, 0x4d, 0xd4, 0xf9, 0x9e,
		0x1e, 0x13, 0xad, 0xc1, 0x44, 0xd3, 0x6a, 0xa2, 0x7b, 0xbb, 0x31, 0x6b, 0x7d, 0x6f, 0x3b, 0xbf,
		0x9f, 0x20, 0xc4, 0x58, 0xae, 0x6f, 0x07, 0x4d, 0xad, 0x74, 0x64, 0x8e, 0x3a, 0x4f, 0x1f, 0x01,
		0x04, 0x1a, 0x04, 0x1a, 0x04, 0x1a, 0x04, 0x1a, 0x04, 0x7a, 0x4b, 0x08, 0xf4, 0xe8, 0x6a, 0x4a,
		0xb5, 0x6c, 0x90, 0x44, 0x1f, 0x81, 0x44, 0x83, 0x44, 0x83, 0xa1, 0x80, 0x44, 0xa7, 0x91, 0x44,
		0x17, 0x8f, 0xca, 0xe5, 0x6a, 0xad, 0x5c, 0x2e, 0xd4, 0x0e, 0x6b, 0x85, 0xe3, 0x4a, 0xa5, 0x58,
		0x2d, 0x56, 0x60, 0xb5, 0xe0, 0xd5, 0xe0, 0xd5, 0xd9, 0xe7, 0xd5, 0xdd, 0xaf, 0x86, 0x59, 0x75,
		0xfc, 0x00, 0xe0, 0xd4, 0xe0, 0xd4, 0xe0, 0xd4, 0xe0, 0xd4, 0xe0, 0xd4, 0xe0, 0xd4, 0xe0, 0xd4,
		0xe0, 0xd4, 0xe0, 0xd4, 0xe0, 0xd4, 0xe0, 0xd4, 0xb0, 0x5a, 0x70, 0x6a, 0x70, 0xea, 0x8c, 0x71,
		0xea, 0xa0, 0xa7, 0x8d, 0x07, 0xab, 0x67, 0x9e, 0x01, 0xcc, 0x1a, 0xcc, 0x1a, 0xcc, 0x1a, 0xcc,
		0x1a, 0xcc, 0x1a, 0xcc, 0x1a, 0xcc, 0x1a, 0xcc, 0x1a, 0xcc, 0x1a, 0xcc, 0x1a, 0xcc, 0x1a, 0x56,
		0x0b, 0x66, 0x0d, 0x66, 0x9d, 0x41, 0x66, 0x6d, 0x36, 0x5c, 0x3d, 0x79, 0x02, 0xb0, 0x6a, 0xb0,
		0x6a, 0xb0, 0x6a, 0xb0, 0x6a, 0xb0, 0x6a, 0xb0, 0x6a, 0xb0, 0x6a, 0xb0, 0x6a, 0xb0, 0x6a, 0xb0,
		0x6a, 0xb0, 0x6a, 0x58, 0x2d, 0x58, 0x35, 0x58, 0x75, 0x66, 0x66, 0x92, 0xaa, 0xb1, 0xc6, 0xdc,
		0x3f, 0x73, 0xe5, 0xbc, 0x69, 0x6a, 0x9d, 0x38, 0xdb, 0x5c, 0x6f, 0xf6, 0x7f, 0xe4, 0x17, 0x7b,
		0xca, 0x2c, 0xfc, 0x88, 0xa3, 0x0d, 0xa7, 0x39, 0xcb, 0xcb, 0x76, 0x75, 0xf8, 0x7f, 0xaa, 0x1f,
		0x32, 0x85, 0xf4, 0xac, 0x4b, 0x37, 0xd2, 0xa7, 0x5a, 0x0b, 0x15, 0xa3, 0xbf, 0x72, 0xfd, 0x73,
		0x4f, 0x0d, 0xec, 0x58, 0xe8, 0x20, 0x1d, 0x78, 0x37, 0x33, 0x33, 0x9a, 0x71, 0x2f, 0xac, 0x9b,
		0xb0, 0xa5, 0x42, 0xd5, 0xfa, 0x63, 0xb0, 0xa8, 0x7e, 0xcf, 0xf3, 0x24, 0xa7, 0xfc, 0x14, 0xc5,
		0x3d, 0xf7, 0xf8, 0x3d, 0x05, 0xee, 0x3d, 0x21, 0x8c, 0xef, 0x5b, 0x83, 0xeb, 0x96, 0x48, 0x4d,
		0x69, 0xd2, 0xce, 0xba, 0xf7, 0x6e, 0xeb, 0xc3, 0xf0, 0x0b, 0x36, 0x3e, 0x4e, 0xbe, 0xcd, 0x87,
		0xf8, 0xcb, 0xec, 0x65, 0xf3, 0xd0, 0xc8, 0x56, 0x9f, 0x28, 0xa1, 0xad, 0x96, 0xd5, 0x2d, 0x96,
		0x99, 0x7e, 0xf7, 0x0c, 0xcd, 0x39, 0x07, 0x2f, 0xd9, 0xf6, 0x9c, 0x47, 0xe5, 0xf1, 0x37, 0x42,
		0x9c, 0x99, 0x8b, 0xb7, 0x01, 0x62, 0x01, 0x0d, 0x10, 0x7f, 0xbf, 0x1a, 0x68, 0x80, 0xb8, 0xe9,
		0x84, 0x68, 0x80, 0x98, 0x96, 0x83, 0x8d, 0x3d, 0x02, 0x24, 0xd8, 0x8c, 0x45, 0xa2, 0xf9, 0xca,
		0x62, 0xb3, 0x95, 0x19, 0x4c, 0xde, 0xe1, 0x53, 0x90, 0xb7, 0x87, 0x8a, 0x48, 0xcf, 0x14, 0xb1,
		0xe6, 0xbf, 0x25, 0x9c, 0x7d, 0x38, 0xfb, 0x70, 0xf6, 0x19, 0x3f, 0xfb, 0xd8, 0x9b, 0xff, 0xca,
		0x95, 0x4f, 0x15, 0x2f, 0x97, 0x2a, 0x94, 0x1a, 0x27, 0x96, 0x0a, 0x87, 0x76, 0xbf, 0x59, 0x06,
		0x55, 0x63, 0xe0, 0x6a, 0x02, 0x64, 0xf9, 0xb5, 0xb9, 0x9c, 0x80, 0x78, 0x2d, 0x96, 0x7a, 0x66,
		0x24, 0xd5, 0x4c, 0x30, 0xb5, 0x4c, 0x38, 0x95, 0x4c, 0x30, 0x8e, 0x6c, 0x22, 0x55, 0xcc, 0x54,
		0x6a, 0x98, 0xf1, 0xa4, 0x1a, 0x73, 0x49, 0x34, 0x92, 0x57, 0x19, 0x4c, 0xa4, 0x76, 0xa5, 0x28,
		0x95, 0x6b, 0x97, 0xad, 0x6c, 0x4b, 0xd2, 0x38, 0xea, 0x59, 0x8d, 0xf7, 0xbd, 0x63, 0xe5, 0x59,
		0x22, 0xf7, 0x93, 0x84, 0xcb, 0x67, 0x82, 0x63, 0x81, 0x63, 0x81, 0x63, 0x81, 0x63, 0x81, 0x63,
		0x81, 0x63, 0x81, 0x63, 0xc1, 0xfb, 0x05, 0xc7, 0x02, 0xc7, 0x02, 0xc7, 0x02, 0xc7, 0x32, 0xc2,
		0xb1, 0x04, 0xd2, 0xdc, 0x16, 0xbc, 0x09, 0xf6, 0x74, 0x37, 0x30, 0x2d, 0x30, 0x2d, 0x30, 0x2d,
		0x30, 0xad, 0x0c, 0x32, 0x2d, 0x31, 0x6c, 0x9c, 0xc5, 0xc7, 0xe2, 0xb1, 0xc0, 0x5c, 0xa3, 0x77,
		0xb9, 0x75, 0x54, 0x6b, 0xbc, 0x72, 0x3d, 0xd7, 0xd7, 0x87, 0x25, 0xc1, 0x7a, 0x17, 0xe3, 0xd5,
		0x13, 0xec, 0xc9, 0x6d, 0xa8, 0xbe, 0x85, 0x81, 0x42, 0x26, 0x26, 0xeb, 0x59, 0x4c, 0x59, 0x4f,
		0xd5, 0x50, 0x85, 0x9e, 0xb4, 0x94, 0x02, 0x30, 0x5f, 0x02, 0xc0, 0x40, 0xc1, 0x0a, 0xa3, 0x85,
		0x2a, 0xa6, 0xb6, 0x57, 0x28, 0x1f, 0x55, 0x6a, 0x15, 0x18, 0xa0, 0x69, 0x03, 0xdc, 0xd2, 0x9a,
		0x0c, 0xf5, 0x6d, 0xaa, 0xc9, 0x60, 0xc0, 0xdd, 0x50, 0x7e, 0xaf, 0xa3, 0xc2, 0xe1, 0xdd, 0x45,
		0x79, 0x9f, 0xa3, 0x58, 0x16, 0x9c, 0xf3, 0xdc, 0xef, 0x75, 0xe4, 0xa5, 0xc7, 0x87, 0xe0, 0x5e,
		0x87, 0xae, 0xff, 0x64, 0xa6, 0x90, 0x5a, 0x61, 0xb0, 0xc6, 0x17, 0xb7, 0x7f, 0x95, 0x1b, 0xe7,
		0xff, 0xba, 0xbd, 0xbc, 0xf8, 0x70, 0xf1, 0xd0, 0xb8, 0xfe, 0x74, 0x79, 0x69, 0xa2, 0x9c, 0x5a,
		0x71, 0xf0, 0x28, 0x77, 0x37, 0x9f, 0x1e, 0xce, 0xef, 0x1a, 0xa7, 0x97, 0xe7, 0x77, 0x0f, 0x26,
		0x1e, 0xa2, 0x34, 0x7a, 0x1f, 0x55, 0xf3, 0xef, 0xe3, 0x30, 0x7e, 0x94, 0x2b, 0xc3, 0x4f, 0x51,
		0x1b, 0x3c, 0xc5, 0xf9, 0xf5, 0xc3, 0xdd, 0xcd, 0xed, 0xbf, 0x1b, 0x97, 0xa7, 0x7f, 0x9c, 0x5f,
		0x36, 0x2e, 0xae, 0xcf, 0x2e, 0x3e, 0x9c, 0x3e, 0xdc, 0xdc, 0x99, 0x78, 0x9e, 0xa3, 0xf8, 0x42,
		0xfc, 0xcd, 0xf0, 0x51, 0xac, 0xed, 0x2e, 0xaf, 0x18, 0x5c, 0xc4, 0x1a, 0x8a, 0x01, 0x58, 0x58,
		0xb5, 0xe0, 0xa2, 0x2c, 0x70, 0xf2, 0x34, 0xf3, 0x9b, 0xe0, 0x24, 0x77, 0x68, 0xe2, 0x19, 0x16,
		0x31, 0xd2, 0x88, 0xb7, 0xb8, 0x0c, 0x9c, 0xd8, 0xee, 0x84, 0xfd, 0xda, 0x43, 0x18, 0x6f, 0x42,
		0x43, 0x25, 0x30, 0x67, 0x4f, 0x8a, 0x93, 0x5c, 0x11, 0x35, 0xc5, 0x52, 0x3d, 0x0b, 0x82, 0x62,
		0x8b, 0x26, 0x2c, 0xd8, 0x73, 0x4c, 0xbe, 0xc7, 0x18, 0x82, 0x62, 0x14, 0xab, 0x85, 0xa0, 0x18,
		0xf1, 0xc4, 0x08, 0x8a, 0x65, 0xc4, 0x1d, 0x46, 0xfa, 0x21, 0x9d, 0xab, 0x84, 0xf4, 0x43, 0xc2,
		0x49, 0x91, 0x7e, 0x88, 0xf4, 0x43, 0x26, 0x93, 0x42, 0xfa, 0x21, 0xd2, 0x0f, 0xc1, 0xb4, 0x98,
		0x98, 0x96, 0xec, 0x1d, 0x2f, 0xa1, 0x9e, 0x53, 0x60, 0x59, 0x60, 0x59, 0x60, 0x59, 0x60, 0x59,
		0x60, 0x59, 0x60, 0x59, 0x60, 0x59, 0xf0, 0x7f, 0xc1, 0xb2, 0xc0, 0xb2, 0xc0, 0xb2, 0xc0, 0xb2,
		0x84, 0x47, 0x46, 0xe1, 0x7c, 0x81, 0xc2, 0xf9, 0x8c, 0xfd, 0x84, 0x18, 0xaa, 0x04, 0xef, 0xa5,
		0xd8, 0xbe, 0xc6, 0xfd, 0x80, 0xd8, 0x6e, 0xc1, 0xf0, 0xb6, 0x01, 0xe2, 0x6f, 0xfb, 0x63, 0xa4,
		0xcd, 0x8f, 0x40, 0x5b, 0x1f, 0x81, 0x36, 0x3e, 0xd4, 0xa6, 0xca, 0x0c, 0x81, 0x99, 0x80, 0x3e,
		0x8b, 0xa5, 0xe4, 0x38, 0x53, 0x8b, 0x1d, 0x5a, 0x84, 0xa6, 0xc3, 0x51, 0x9a, 0x91, 0x88, 0xcc,
		0x9b, 0xcb, 0xac, 0x53, 0x6b, 0xce, 0x34, 0x56, 0x91, 0x7c, 0x0d, 0x09, 0xd6, 0x8f, 0xb8, 0x5a,
		0x3f, 0x4b, 0x75, 0x7e, 0xe2, 0x6a, 0xfc, 0xe4, 0xd5, 0xf7, 0x39, 0x74, 0x6e, 0x36, 0x3d, 0x9b,
		0x4b, 0xb7, 0x66, 0xd7, 0xa7, 0xd9, 0x75, 0x68, 0x4e, 0xbd, 0x39, 0x5d, 0x78, 0x4d, 0x5d, 0xed,
		0x9e, 0xb1, 0xba, 0x3d, 0x7b, 0x35, 0x7b, 0xa6, 0xa0, 0x1b, 0x5b, 0x90, 0x8d, 0x33, 0xa8, 0xc6,
		0x1e, 0x44, 0xe3, 0x0e, 0x9a, 0x89, 0x05, 0xc9, 0xc4, 0x82, 0x62, 0x12, 0x41, 0xb0, 0x74, 0xd3,
		0x7b, 0xb6, 0xa0, 0x96, 0x48, 0x10, 0x8b, 0x31, 0x68, 0xc5, 0x1c, 0xa4, 0x62, 0x54, 0xe8, 0x24,
		0x82, 0x50, 0x52, 0x41, 0x27, 0x71, 0xf9, 0x5f, 0x4e, 0xee, 0xe7, 0x4c, 0xe2, 0x91, 0x08, 0x1a,
		0x19, 0x0c, 0x12, 0x6d, 0xb3, 0x55, 0x64, 0x44, 0xb4, 0xae, 0xa7, 0x55, 0xba, 0x79, 0x47, 0xea,
		0x77, 0xb3, 0x64, 0xc2, 0x31, 0x57, 0x37, 0x87, 0xcf, 0x0d, 0x9f, 0x1b, 0x3e, 0x37, 0x7c, 0x6e,
		0xf8, 0xdc, 0xf0, 0xb9, 0xe1, 0x5d, 0xc1, 0xe7, 0x86, 0x55, 0xc0, 0xe7, 0xce, 0x90, 0xcf, 0x3d,
		0x0a, 0x09, 0xda, 0x6e, 0x8b, 0xd3, 0xf1, 0x9e, 0x99, 0x05, 0xde, 0x37, 0xbc, 0x6f, 0x78, 0xdf,
		0xf0, 0xbe, 0xb3, 0x80, 0x2e, 0xb3, 0x08, 0x53, 0x3c, 0xda, 0x81, 0xf3, 0x80, 0xb1, 0xf0, 0x0b,
		0x7f, 0xa1, 0x17, 0x9c, 0x05, 0x38, 0x0b, 0x70, 0x16, 0x40, 0x89, 0x81, 0x12, 0x03, 0x25, 0x06,
		0x9c, 0x1b, 0x4a, 0x0c, 0xac, 0x02, 0x4a, 0x4c, 0xa6, 0x3c, 0x6f, 0xde, 0xf0, 0x27, 0x53, 0xe1,
		0x0f, 0x78, 0xdd, 0xf0, 0xba, 0xe1, 0x75, 0xc3, 0xeb, 0x86, 0xd7, 0x0d, 0xaf, 0x1b, 0xfe, 0x15,
		0xbc, 0x6e, 0x58, 0x05, 0xbc, 0x6e, 0x5e, 0xaf, 0x1b, 0xd7, 0x45, 0xa5, 0xaf, 0x8b, 0xd2, 0xd5,
		0x77, 0x20, 0xb8, 0x27, 0xba, 0x67, 0x70, 0xd9, 0xc7, 0xf5, 0x19, 0x08, 0x63, 0x4e, 0xb4, 0x15,
		0x19, 0xe8, 0x2b, 0x30, 0x88, 0x54, 0x5c, 0x60, 0xa8, 0xb0, 0xc0, 0x50, 0x51, 0x21, 0xa9, 0xf1,
		0x10, 0x63, 0x45, 0x9a, 0x30, 0xc2, 0x22, 0xb9, 0xbd, 0x4d, 0x59, 0xf8, 0x20, 0x19, 0x5e, 0x6d,
		0x8e, 0x32, 0x9b, 0x7d, 0x72, 0x43, 0xd3, 0xa2, 0x32, 0x29, 0xf3, 0xa6, 0xb4, 0xd9, 0x72, 0xad,
		0xff, 0xb2, 0xd7, 0xfb, 0xc4, 0x9a, 0xcb, 0x92, 0x74, 0x39, 0x0c, 0x2d, 0xc3, 0x06, 0x9b, 0x97,
		0x64, 0xb3, 0xae, 0xb7, 0xe6, 0x6f, 0x5f, 0xb9, 0xb7, 0xfd, 0xe6, 0x1b, 0xd7, 0x76, 0xd3, 0x35,
		0x15, 0x5a, 0xcb, 0x35, 0xd6, 0x6e, 0xb3, 0x35, 0x7b, 0xdb, 0x22, 0xfd, 0xfe, 0x95, 0xbf, 0xe1,
		0x75, 0x5b, 0x5a, 0xd9, 0x4f, 0x5e, 0xf0, 0xe8, 0x78, 0xb6, 0xa3, 0x75, 0xe8, 0x3e, 0xf6, 0xb4,
		0x7a, 0xbb, 0x20, 0x3e, 0x91, 0xa3, 0x96, 0x8e, 0xf2, 0xc6, 0xc5, 0x5e, 0xaf, 0x3a, 0xc7, 0xda,
		0x22, 0xf5, 0x26, 0xe2, 0xf3, 0xac, 0xa8, 0x3c, 0xb0, 0x82, 0x75, 0x56, 0x7c, 0x43, 0xb9, 0x38,
		0xb1, 0x0c, 0x9c, 0x58, 0xde, 0x7d, 0x2d, 0xdb, 0xc6, 0x5f, 0xdc, 0x10, 0x00, 0xac, 0x5b, 0x61,
		0x62, 0x58, 0xbd, 0xcd, 0x69, 0x75, 0x5c, 0xdf, 0x7e, 0x0a, 0x83, 0x5e, 0x77, 0xfd, 0xa0, 0xce,
		0x64, 0xcd, 0x17, 0x87, 0x5a, 0xf3, 0x3d, 0x6e, 0x56, 0x6e, 0x66, 0xe3, 0xe8, 0x4b, 0x92, 0xe8,
		0x4a, 0x02, 0x43, 0x4f, 0x6a, 0xf0, 0x64, 0x86, 0x4f, 0xb6, 0x01, 0x68, 0x36, 0x82, 0x8c, 0xd7,
		0xb3, 0x69, 0x09, 0x16, 0x6b, 0xc6, 0xb0, 0x37, 0x5f, 0xb2, 0xb1, 0xd5, 0xcc, 0x0e, 0xb6, 0xe1,
		0xbb, 0x4e, 0x56, 0x9b, 0x29, 0x71, 0xc8, 0x92, 0x22, 0x34, 0x49, 0xb0, 0x89, 0xa8, 0x36, 0x13,
		0xf9, 0xa6, 0x22, 0xdf, 0x5c, 0xb4, 0x9b, 0xcc, 0x0c, 0x03, 0x4c, 0x5a, 0xff, 0x68, 0x76, 0xdf,
		0xd8, 0x23, 0xdf, 0x30, 0xe1, 0x7a, 0x2f, 0xd9, 0x91, 0xc3, 0x91, 0x93, 0x8a, 0x6f, 0x24, 0x99,
		0x06, 0x64, 0x99, 0x05, 0x94, 0x99, 0x04, 0x84, 0xdb, 0x96, 0x7a, 0xfb, 0xb2, 0x6d, 0x63, 0xb6,
		0xed, 0xcc, 0xb3, 0xad, 0xd3, 0x21, 0x40, 0x93, 0x45, 0xf3, 0x27, 0x16, 0xe7, 0x29, 0xa7, 0x1d,
		0xaa, 0x36, 0x85, 0xc5, 0x8d, 0xcf, 0x4f, 0x82, 0x5e, 0xdc, 0xd6, 0xed, 0x88, 0x38, 0xbf, 0x7f,
		0x9f, 0x1f, 0xd2, 0xe6, 0xfc, 0x02, 0x9c, 0x98, 0x52, 0xf8, 0x12, 0x1c, 0xa9, 0xcd, 0x31, 0xf6,
		0x10, 0x41, 0xec, 0x68, 0x3c, 0x1a, 0x60, 0x2d, 0x02, 0x58, 0x01, 0xac, 0xbb, 0x0a, 0xac, 0x54,
		0x75, 0x24, 0xe9, 0xfd, 0x29, 0x6e, 0xbf, 0x8a, 0xd8, 0xbf, 0x22, 0x87, 0x03, 0x0e, 0x58, 0x60,
		0x84, 0x07, 0x2e, 0x98, 0x60, 0x87, 0x0b, 0x76, 0xd8, 0xe0, 0x85, 0x0f, 0x1a, 0x18, 0x21, 0x82,
		0x13, 0x7a, 0x7f, 0x6d, 0xc1, 0x62, 0x23, 0x1d, 0x6e, 0x16, 0xbb, 0xf9, 0xad, 0x1b, 0x70, 0xb4,
		0x13, 0x19, 0x36, 0x3f, 0x9e, 0x02, 0x6d, 0x07, 0x4d, 0xbb, 0x19, 0x74, 0xba, 0xa1, 0x8a, 0x22,
		0xd5, 0xb2, 0x07, 0xae, 0xf0, 0x60, 0x92, 0xfe, 0x16, 0xd5, 0x44, 0x7f, 0x74, 0xb5, 0xdd, 0x0d,
		0x22, 0x97, 0xf4, 0x05, 0x4e, 0x8c, 0x70, 0x6e, 0x74, 0x1c, 0x43, 0x38, 0x86, 0x70, 0x0c, 0xed,
		0xd8, 0x31, 0xd4, 0x73, 0x7d, 0x7d, 0x58, 0x62, 0x38, 0x86, 0x6a, 0x84, 0x43, 0xf2, 0x64, 0xfa,
		0xf3, 0x34, 0x50, 0xe2, 0xbb, 0xdc, 0xc3, 0x9c, 0xd1, 0x2f, 0x96, 0xb3, 0xcd, 0x9f, 0xab, 0xdd,
		0xe7, 0xe9, 0x5c, 0xc5, 0xbf, 0xb4, 0xe5, 0xd2, 0x71, 0xf9, 0xb8, 0x5a, 0x2b, 0x1d, 0x57, 0xb0,
		0xc6, 0x22, 0x00, 0x4d, 0x3f, 0x5a, 0x1d, 0xde, 0x77, 0x4a, 0xbc, 0x6f, 0x24, 0x0b, 0xff, 0x3a,
		0x1d, 0x6d, 0x59, 0xa2, 0x55, 0x7e, 0x21, 0x63, 0x65, 0x56, 0xb7, 0x1f, 0x49, 0xf9, 0x59, 0x54,
		0xee, 0x69, 0x7a, 0x4b, 0x91, 0xf6, 0x94, 0x22, 0xd7, 0xed, 0x4b, 0xd0, 0xed, 0xd3, 0xc0, 0x80,
		0xa0, 0xdb, 0xaf, 0xf1, 0x95, 0xa0, 0xdb, 0x43, 0x30, 0x81, 0x60, 0x02, 0xc1, 0x24, 0x33, 0x82,
		0x49, 0xea, 0x75, 0x7b, 0xc8, 0xd6, 0x40, 0x61, 0xa0, 0x30, 0x50, 0x78, 0xab, 0x51, 0x18, 0xb2,
		0x35, 0xa5, 0x49, 0x42, 0xb6, 0x7e, 0x93, 0xed, 0x41, 0xb6, 0x5e, 0xb1, 0xb4, 0x90, 0xad, 0x85,
		0x01, 0x9a, 0x7e, 0xb4, 0x3a, 0x54, 0xdb, 0xad, 0x55, 0x6d, 0x09, 0x0a, 0xc0, 0x64, 0xa5, 0xa0,
		0xc2, 0xa8, 0xc0, 0x0b, 0x91, 0x54, 0x43, 0x53, 0xdc, 0x85, 0xae, 0xa8, 0x0b, 0x6b, 0x31, 0x17,
		0xc2, 0x22, 0x2e, 0x84, 0xc5, 0x5b, 0xb6, 0xb0, 0xb2, 0xc6, 0xfa, 0x3b, 0xd8, 0x4a, 0x14, 0xf8,
		0xf8, 0x6d, 0xd5, 0x80, 0x07, 0xf5, 0x67, 0xfc, 0x3c, 0xa7, 0x93, 0xc7, 0x69, 0x9c, 0x0e, 0x26,
		0xff, 0x33, 0x9e, 0x1b, 0x95, 0x3d, 0x4c, 0x9a, 0x01, 0x5b, 0x91, 0x8d, 0x75, 0x0a, 0x4f, 0x84,
		0xde, 0x53, 0x82, 0x4b, 0xf0, 0xc3, 0x8f, 0xe3, 0xe2, 0x3b, 0xa3, 0x5c, 0x82, 0x8b, 0xef, 0x39,
		0xc9, 0x8b, 0xef, 0x03, 0x8b, 0x4e, 0x7e, 0xe3, 0x3d, 0x1e, 0x05, 0x57, 0xdd, 0x71, 0xd5, 0xdd,
		0x98, 0x7a, 0x98, 0xb1, 0xab, 0xee, 0xb8, 0x7d, 0x29, 0xb4, 0x35, 0x19, 0xb6, 0x28, 0xf5, 0x56,
		0x65, 0xdb, 0xb2, 0x6c, 0x5b, 0x97, 0x67, 0x0b, 0xa7, 0x43, 0x37, 0x21, 0xcb, 0xe2, 0x68, 0x06,
		0x91, 0xa6, 0x8f, 0x17, 0xc6, 0xa3, 0x22, 0x4e, 0x98, 0x22, 0x18, 0xe0, 0x82, 0x03, 0x76, 0x58,
		0x60, 0x87, 0x07, 0x5e, 0x98, 0xa0, 0x15, 0x8e, 0x11, 0x27, 0x24, 0x19, 0x12, 0x71, 0x42, 0xc4,
		0x09, 0x0d, 0x6c, 0xbb, 0xf9, 0xa5, 0x45, 0x9c, 0x30, 0x5d, 0x6b, 0x8c, 0xeb, 0x2d, 0x6f, 0x39,
		0x23, 0x71, 0xb9, 0x3c, 0xc9, 0xd7, 0x6c, 0x7b, 0x41, 0xd0, 0x72, 0xfd, 0x27, 0x5b, 0x53, 0x1e,
		0xc0, 0x93, 0xc3, 0x77, 0x7e, 0x78, 0xa2, 0x25, 0x3f, 0x53, 0x6d, 0xa7, 0xe7, 0x69, 0xd2, 0xe3,
		0xd2, 0xfa, 0x78, 0x79, 0x73, 0x73, 0x76, 0x7e, 0xd6, 0xb8, 0xbf, 0xbb, 0xfc, 0x93, 0xc6, 0xc9,
		0xaa, 0x83, 0x6e, 0x80, 0x6e, 0x80, 0x6e, 0xec, 0x18, 0xdd, 0x88, 0xc3, 0x77, 0x51, 0xe8, 0x3d,
		0xd9, 0x1c, 0xd8, 0x37, 0x0b, 0x08, 0xc5, 0x32, 0xe1, 0x98, 0xe7, 0x7e, 0xaf, 0x43, 0xbf, 0x27,
		0x1e, 0x82, 0xfb, 0x61, 0xae, 0x3c, 0x4b, 0xf7, 0xc2, 0xc2, 0xe0, 0x7d, 0xcf, 0xe1, 0x36, 0x83,
		0x57, 0x5c, 0x1c, 0x4c, 0x72, 0xff, 0x70, 0xfa, 0x70, 0xf1, 0x81, 0xf0, 0x6c, 0x60, 0xf2, 0xe3,
		0xad, 0x87, 0xe0, 0xc2, 0xd7, 0x3c, 0x6f, 0x7b, 0xee, 0x45, 0xb3, 0xb8, 0xd5, 0x73, 0xaf, 0xf9,
		0x24, 0x57, 0x44, 0xfb, 0x32, 0xf8, 0xbf, 0xdc, 0xfe, 0x2f, 0xcf, 0x3d, 0x41, 0xdc, 0x0d, 0x84,
		0xfb, 0x07, 0xf7, 0x6f, 0x17, 0xdd, 0x3f, 0xd4, 0xf4, 0xc3, 0xb1, 0xf3, 0x86, 0xaf, 0xf9, 0x6d,
		0x24, 0x87, 0x12, 0x9f, 0x3b, 0xc3, 0x61, 0x71, 0xf0, 0xe0, 0xe0, 0xc1, 0xc1, 0xb3, 0x63, 0x07,
		0x0f, 0xc2, 0x9c, 0x94, 0x26, 0x89, 0x30, 0xe7, 0x9b, 0x6c, 0x0f, 0x61, 0xce, 0x15, 0x4b, 0x8b,
		0x30, 0xa7, 0x01, 0x61, 0x26, 0x87, 0x30, 0xe7, 0x56, 0xfa, 0xdb, 0xb8, 0x0f, 0xba, 0xc1, 0x35,
		0xa2, 0xf8, 0xca, 0x4d, 0xfc, 0xff, 0x33, 0x5c, 0xb2, 0x8f, 0xb6, 0x9b, 0x19, 0x3a, 0x98, 0x49,
		0x93, 0x1f, 0xa4, 0x7a, 0xa3, 0x83, 0xd9, 0x5b, 0x2c, 0x2e, 0x33, 0x1d, 0xcc, 0xb2, 0xda, 0xb5,
		0x0c, 0xb5, 0x4f, 0x01, 0xa5, 0x80, 0xd2, 0xf4, 0x41, 0x29, 0x6e, 0xcd, 0x98, 0xf6, 0xa0, 0x38,
		0xb6, 0x3f, 0x23, 0x0c, 0x70, 0xc1, 0x01, 0x3b, 0x2c, 0xb0, 0xc3, 0x03, 0x2f, 0x4c, 0xd0, 0xea,
		0x0b, 0x90, 0x93, 0x49, 0x86, 0x84, 0x9c, 0x0c, 0x39, 0xd9, 0xc0, 0xb6, 0x9b, 0x5f, 0x5a, 0xc8,
		0xc9, 0xe9, 0x5a, 0x63, 0x54, 0xd7, 0xe3, 0xde, 0x03, 0xb8, 0x34, 0x32, 0xd9, 0x36, 0xb8, 0x34,
		0x02, 0x6f, 0x1b, 0xde, 0x36, 0xbc, 0xed, 0x84, 0x16, 0x8b, 0x4b, 0x23, 0xb3, 0xaf, 0x19, 0x97,
		0x46, 0x44, 0xdd, 0x58, 0x5c, 0x1a, 0x11, 0x70, 0xff, 0x70, 0x67, 0xe2, 0x77, 0x18, 0x88, 0x3b,
		0x13, 0xf0, 0x7e, 0xe0, 0xfd, 0xec, 0xa2, 0xf7, 0x83, 0x7e, 0x4a, 0x6f, 0xf9, 0x4e, 0xb8, 0x32,
		0x00, 0xdc, 0x05, 0xee, 0x02, 0x77, 0xe9, 0x2c, 0x16, 0x31, 0x1e, 0x4a, 0x93, 0x44, 0x8c, 0xe7,
		0x4d, 0xb6, 0x87, 0x18, 0xcf, 0x8a, 0xa5, 0x45, 0x8c, 0xc7, 0x00, 0x2d, 0xcf, 0xa1, 0x83, 0x12,
		0xf5, 0x0e, 0xda, 0x86, 0x8c, 0x79, 0xb3, 0xed, 0x92, 0x12, 0xe6, 0x79, 0xba, 0xcd, 0xa1, 0x94,
		0xdc, 0x51, 0x9d, 0x47, 0x15, 0x46, 0xb4, 0x59, 0x9f, 0xaf, 0x07, 0x47, 0xe5, 0x74, 0x41, 0x62,
		0x80, 0x1c, 0x50, 0xe4, 0x80, 0xfe, 0x62, 0xa0, 0xd1, 0x9e, 0xb4, 0x3d, 0x97, 0x23, 0x17, 0x74,
		0x6e, 0x74, 0x5a, 0xbd, 0xa0, 0x08, 0xbd, 0x00, 0x7a, 0x01, 0xf4, 0x02, 0xa2, 0x44, 0x17, 0x22,
		0x38, 0x99, 0x0c, 0x48, 0xd4, 0x73, 0x65, 0xe5, 0x46, 0x20, 0xe9, 0xc1, 0xc2, 0x0c, 0x2d, 0x6c,
		0x10, 0xc3, 0x09, 0x35, 0x02, 0x90, 0xc3, 0x0d, 0x3d, 0x62, 0x10, 0x24, 0x06, 0x45, 0x32, 0x90,
		0xc4, 0xc4, 0x94, 0x89, 0x6d, 0x9e, 0x1a, 0xaa, 0x26, 0x03, 0xb7, 0xc3, 0xa0, 0x63, 0x3b, 0xad,
		0x56, 0xa8, 0xa2, 0x88, 0xcf, 0x26, 0x27, 0xf9, 0x8a, 0xb3, 0xb3, 0x31, 0x59, 0x0b, 0x6d, 0x64,
		0x45, 0x0c, 0xd6, 0x24, 0xe0, 0x4d, 0x10, 0xe6, 0xa4, 0xe0, 0x4e, 0x1c, 0xf6, 0xc4, 0xe1, 0x4f,
		0x16, 0x06, 0x79, 0xe0, 0x90, 0x09, 0x16, 0x27, 0xaf, 0x86, 0x3c, 0xf2, 0xb3, 0x72, 0xc7, 0xb8,
		0x5d, 0x66, 0xfc, 0x9a, 0x73, 0xc9, 0x8e, 0x19, 0xe7, 0x18, 0xbd, 0xb3, 0xcf, 0xac, 0x46, 0xcb,
		0xbb, 0xe9, 0x5f, 0xad, 0xcc, 0xb7, 0xb2, 0xc0, 0xda, 0x2c, 0xac, 0xd1, 0x91, 0xc0, 0x5c, 0xb7,
		0x8e, 0xd6, 0x2a, 0xf4, 0xd9, 0x97, 0x6b, 0x32, 0xe1, 0xfe, 0xe7, 0x82, 0x7d, 0x5c, 0x7f, 0xf9,
		0x5c, 0xb4, 0x8f, 0xeb, 0xc3, 0xbf, 0x16, 0xe3, 0xff, 0xfc, 0x2c, 0xf5, 0x5f, 0x4a, 0x9f, 0x0b,
		0x76, 0x79, 0xf4, 0xd3, 0x52, 0xe5, 0x73, 0xc1, 0xae, 0xd4, 0x0f, 0xf6, 0xbf, 0x7c, 0x79, 0xbf,
		0xee, 0x67, 0x0e, 0x7e, 0x1e, 0xf6, 0x2d, 0xf6, 0xaf, 0x53, 0x97, 0x58, 0x9e, 0x9b, 0xfb, 0x8b,
		0x7f, 0x89, 0xaf, 0xd1, 0x7f, 0xf6, 0xa5, 0x56, 0xe9, 0xe0, 0x1f, 0x02, 0xeb, 0xc4, 0x3a, 0x43,
		0xff, 0xdd, 0x16, 0xc1, 0x5c, 0x15, 0x30, 0x47, 0x05, 0x73, 0xf1, 0x6e, 0x70, 0xec, 0xf6, 0xa9,
		0xfd, 0xb1, 0xfe, 0xb3, 0xf8, 0xae, 0xdc, 0x3f, 0x39, 0xf8, 0x59, 0xeb, 0xbf, 0xfe, 0xe1, 0xcb,
		0xb2, 0x5f, 0x2b, 0xbe, 0xab, 0xf5, 0x4f, 0x56, 0xfc, 0x4b, 0xb5, 0x7f, 0xf2, 0xc6, 0x31, 0x2a,
		0xfd, 0xfd, 0x85, 0x5f, 0x1d, 0xfc, 0xbc, 0xb4, 0xea, 0x03, 0xe5, 0x15, 0x1f, 0x38, 0x5c, 0xf5,
		0x81, 0xc3, 0x15, 0x1f, 0x58, 0xf9, 0x48, 0xa5, 0x15, 0x1f, 0xa8, 0xf4, 0x5f, 0x16, 0x7e, 0x7f,
		0x7f, 0xf9, 0xaf, 0x56, 0xfb, 0x07, 0x2f, 0xab, 0xfe, 0xad, 0xd6, 0x7f, 0x39, 0x39, 0x38, 0x00,
		0xf0, 0x27, 0x06, 0x7e, 0x98, 0xad, 0xbc, 0xd9, 0x66, 0xff, 0x20, 0xdc, 0xcb, 0xd6, 0x73, 0x73,
		0x31, 0x46, 0xa6, 0x2a, 0x91, 0x0b, 0xf3, 0xb0, 0x57, 0x8d, 0xe4, 0x5f, 0x60, 0x8e, 0x3c, 0x31,
		0x1d, 0xc8, 0x89, 0x8e, 0x33, 0x73, 0x41, 0x72, 0x84, 0xe4, 0x08, 0xc9, 0x11, 0x92, 0x23, 0x24,
		0x47, 0x48, 0x8e, 0x90, 0x1c, 0x21, 0x39, 0x82, 0x79, 0x42, 0x72, 0x84, 0xe4, 0x08, 0xc9, 0x11,
		0x92, 0x23, 0x24, 0x47, 0x00, 0x3f, 0x24, 0x47, 0x48, 0x8e, 0x90, 0x1c, 0x21, 0x39, 0xa6, 0x40,
		0x72, 0x4c, 0x75, 0x32, 0x26, 0xf3, 0x42, 0x9a, 0xba, 0xc6, 0xf7, 0xea, 0xc2, 0x5a, 0x7e, 0xf6,
		0x1a, 0x0b, 0x49, 0x67, 0x1c, 0xbe, 0x55, 0x26, 0x5c, 0x61, 0xde, 0x8c, 0x58, 0x89, 0x4c, 0x58,
		0x26, 0x39, 0x1a, 0x09, 0xfd, 0x66, 0xe4, 0x66, 0x24, 0xf4, 0x6f, 0xe3, 0x19, 0xc2, 0x26, 0x1f,
		0x33, 0x74, 0x0a, 0x5a, 0x49, 0xd0, 0x6b, 0x0c, 0x63, 0x2f, 0x76, 0x12, 0x9a, 0x83, 0xca, 0x1d,
		0x38, 0x80, 0x68, 0x3a, 0x10, 0xad, 0xb4, 0x0b, 0x8a, 0x8e, 0x44, 0x2b, 0x2d, 0x82, 0xeb, 0xc8,
		0x29, 0xe1, 0xc8, 0xc1, 0x91, 0x83, 0x23, 0x27, 0xd1, 0x2b, 0xc0, 0x1d, 0x32, 0xc3, 0x1e, 0x34,
		0xbb, 0x27, 0x2d, 0x01, 0x6f, 0x82, 0x30, 0x27, 0x05, 0x77, 0xe2, 0xb0, 0x27, 0x0e, 0x7f, 0xb2,
		0x30, 0xc8, 0xa7, 0x0b, 0xe5, 0x90, 0xd0, 0xb1, 0xb6, 0x4b, 0x86, 0x84, 0x8e, 0x75, 0x56, 0x06,
		0x09, 0x1d, 0x64, 0x13, 0x22, 0xa1, 0x63, 0xad, 0xe5, 0x41, 0x42, 0x47, 0xf2, 0x75, 0x42, 0x42,
		0xc7, 0x5b, 0x61, 0x0e, 0x09, 0x1d, 0x64, 0x30, 0x87, 0xc8, 0x38, 0x12, 0x3a, 0xb2, 0x0a, 0xfc,
		0x30, 0x5b, 0x24, 0x74, 0xa4, 0x84, 0xd7, 0xf1, 0x3d, 0x37, 0xae, 0x44, 0xbd, 0x76, 0x00, 0x70,
		0x25, 0x0a, 0x0a, 0x1a, 0x14, 0x34, 0x28, 0x68, 0x50, 0xd0, 0xa0, 0xa0, 0x41, 0x41, 0x83, 0x82,
		0x06, 0x22, 0x05, 0x05, 0x0d, 0x0a, 0x1a, 0x14, 0x34, 0x28, 0x68, 0x50, 0xd0, 0x00, 0xfc, 0x50,
		0xd0, 0xa0, 0xa0, 0x41, 0x41, 0x63, 0x56, 0xd0, 0x70, 0xc3, 0x27, 0x65, 0x37, 0x7c, 0x08, 0x3a,
		0x79, 0xf1, 0x2d, 0x72, 0xba, 0x1a, 0x87, 0xfc, 0x53, 0xfd, 0x60, 0xca, 0x44, 0xb4, 0x2e, 0xdd,
		0x48, 0x9f, 0x6a, 0x4d, 0xdc, 0x98, 0xe4, 0xca, 0xf5, 0xcf, 0x3d, 0xd5, 0x51, 0x3e, 0x75, 0x37,
		0x43, 0xeb, 0xca, 0xf9, 0x3e, 0x33, 0x72, 0xf1, 0xa8, 0x5c, 0xae, 0xd6, 0xca, 0xe5, 0x42, 0xed,
		0xb0, 0x56, 0x38, 0xae, 0x54, 0x8a, 0xd5, 0x22, 0x61, 0x8f, 0x46, 0xeb, 0x26, 0x6c, 0xa9, 0x50,
		0xb5, 0xfe, 0x18, 0xbc, 0x7d, 0xbf, 0xe7, 0x79, 0x1c, 0x43, 0x7f, 0x8a, 0x54, 0x48, 0xda, 0x8e,
		0x91, 0xca, 0xe8, 0x98, 0x30, 0x29, 0x8d, 0x58, 0x64, 0x91, 0xde, 0xa6, 0x08, 0x7b, 0x4d, 0xed,
		0x8f, 0x78, 0xdb, 0xf5, 0xf0, 0x79, 0x2f, 0x46, 0x8f, 0xdb, 0xb8, 0xea, 0x7a, 0x51, 0xe3, 0x41,
		0xfd, 0x19, 0x3f, 0xed, 0xe9, 0xe4, 0x61, 0x1b, 0xf7, 0xa1, 0xf7, 0xd4, 0xb8, 0x1a, 0x3e, 0xd2,
		0x60, 0x4b, 0x5a, 0xe8, 0x57, 0x99, 0xcb, 0x59, 0xea, 0xbb, 0x0e, 0x1d, 0xbb, 0x37, 0x78, 0x79,
		0x8f, 0x1e, 0x8d, 0xd4, 0x6b, 0xfd, 0xfd, 0xac, 0xe8, 0x9c, 0x76, 0x86, 0xe6, 0x63, 0x33, 0xf7,
		0x90, 0xbc, 0x20, 0x68, 0xb9, 0xfe, 0x93, 0xad, 0x7f, 0x74, 0x55, 0xee, 0xbf, 0x72, 0xff, 0xeb,
		0xfe, 0xe1, 0xf4, 0xe1, 0xe2, 0x43, 0xe3, 0xfe, 0xee, 0xf2, 0xcf, 0xff, 0x95, 0xb1, 0xe6, 0x64,
		0xf1, 0x5b, 0xcf, 0x72, 0x6b, 0xb2, 0xb7, 0x2e, 0x4b, 0x2a, 0x6f, 0x78, 0x9d, 0xa9, 0xa8, 0x19,
		0xba, 0x5d, 0x16, 0xff, 0x72, 0x62, 0xb8, 0x17, 0x7e, 0xd3, 0xeb, 0xb5, 0x54, 0x4e, 0x3f, 0xbb,
		0x51, 0xae, 0x19, 0xf8, 0xda, 0x71, 0x7d, 0x15, 0xe6, 0xda, 0x41, 0x98, 0x1b, 0xe2, 0xef, 0x17,
		0x7f, 0xf0, 0x8a, 0x72, 0x51, 0x57, 0x35, 0xdd, 0xb6, 0xdb, 0xcc, 0x0d, 0xdf, 0x67, 0x2f, 0x1c,
		0x9e, 0x31, 0xc4, 0x6b, 0xc7, 0x18, 0x80, 0x9c, 0xb5, 0xeb, 0xd6, 0xcc, 0x9b, 0x65, 0x88, 0xd1,
		0x4b, 0x44, 0x1b, 0xe7, 0xcc, 0x3c, 0xe1, 0x22, 0x6e, 0xb7, 0x37, 0xbf, 0x67, 0x96, 0x2c, 0xa3,
		0xfb, 0xf3, 0x32, 0x47, 0xce, 0x58, 0x2f, 0xe8, 0x3d, 0xc1, 0x35, 0x1c, 0x33, 0xc0, 0xd8, 0xad,
		0xdc, 0x70, 0x08, 0x12, 0xa6, 0x47, 0xc7, 0xec, 0x58, 0x99, 0x1c, 0x21, 0x73, 0x23, 0x64, 0x6a,
		0x9b, 0x2e, 0x3e, 0xd1, 0xc6, 0x35, 0xb0, 0x61, 0xad, 0x44, 0x0d, 0xd3, 0x37, 0x25, 0x52, 0x9b,
		0x41, 0xc2, 0xfa, 0x1b, 0x7a, 0xbd, 0x4f, 0xac, 0xb9, 0xfa, 0x49, 0x57, 0x5d, 0x76, 0xb5, 0xd7,
		0x7b, 0xe5, 0x6f, 0x7f, 0x71, 0x6b, 0xbc, 0x34, 0x4b, 0x2b, 0xdb, 0x8b, 0xba, 0xb6, 0x76, 0x3b,
		0x9b, 0xf4, 0xd6, 0x9f, 0xe6, 0x2a, 0xce, 0x0d, 0xb3, 0xe6, 0xa2, 0x6d, 0x56, 0x97, 0x60, 0xe3,
		0xf4, 0xc2, 0x24, 0x69, 0x83, 0x04, 0xe9, 0x80, 0x49, 0xbd, 0x6c, 0xb2, 0xf4, 0x3d, 0x32, 0x47,
		0x99, 0x26, 0xdd, 0x8e, 0x17, 0x18, 0x36, 0xbd, 0x57, 0x9f, 0xb4, 0x5d, 0x34, 0x4d, 0x5b, 0xe8,
		0x84, 0xa5, 0x3b, 0x12, 0x67, 0xe2, 0x52, 0x64, 0xda, 0x12, 0x66, 0xd2, 0x52, 0x11, 0x55, 0xf2,
		0x4c, 0x58, 0x72, 0xee, 0x49, 0x9b, 0xc9, 0x2a, 0xeb, 0x7e, 0x27, 0x2d, 0x65, 0x61, 0x35, 0x3d,
		0xe5, 0xf8, 0xbd, 0xae, 0xdd, 0x52, 0x9e, 0xf3, 0x23, 0xf9, 0x62, 0x4f, 0x76, 0xe2, 0xdc, 0xb0,
		0x09, 0xd7, 0x87, 0x26, 0x85, 0x9e, 0x2c, 0x55, 0x9e, 0x32, 0x25, 0x9e, 0x21, 0xf5, 0x9d, 0x5a,
		0x61, 0x62, 0x4b, 0x65, 0x67, 0x13, 0x91, 0x78, 0x52, 0xd3, 0xcd, 0x46, 0x1c, 0xc8, 0x52, 0xca,
		0x27, 0x16, 0xd7, 0x73, 0x7d, 0x5d, 0xac, 0x52, 0x18, 0xdc, 0x68, 0x7f, 0x56, 0x09, 0x86, 0xba,
		0x73, 0xfc, 0x27, 0x95, 0xc6, 0x28, 0xc8, 0x95, 0xcb, 0xa0, 0x50, 0xff, 0xe5, 0x78, 0x3d, 0xc5,
		0x50, 0x47, 0xf2, 0x63, 0xe8, 0x34, 0x07, 0xfc, 0xec, 0xcc, 0x7d, 0x72, 0xa9, 0x03, 0xdd, 0x43,
		0x1b, 0x52, 0x4f, 0x8e, 0x76, 0xbf, 0x29, 0xd2, 0xf8, 0x70, 0x8e, 0x38, 0xb8, 0x70, 0xe5, 0x7c,
		0xe7, 0x5b, 0xb2, 0x6a, 0xa5, 0x72, 0x58, 0xc1, 0xb2, 0x91, 0x60, 0x23, 0xdd, 0x28, 0xdb, 0xa5,
		0x63, 0xb3, 0xd5, 0xaf, 0x4e, 0x20, 0x2e, 0x27, 0x20, 0x14, 0xb1, 0x64, 0xe3, 0x79, 0xd4, 0xae,
		0xe6, 0xfc, 0xb0, 0x70, 0x35, 0xe1, 0x6a, 0xc2, 0xd5, 0x84, 0xab, 0x09, 0x57, 0x13, 0xae, 0xe6,
		0x96, 0xb8, 0x9a, 0x87, 0xd5, 0x02, 0x56, 0x0d, 0x9e, 0x26, 0x3c, 0xcd, 0x37, 0x7f, 0x9d, 0x50,
		0x05, 0x5d, 0xed, 0x76, 0xdc, 0xff, 0xa7, 0x86, 0xd1, 0x32, 0x3a, 0x67, 0x73, 0x61, 0x64, 0xf8,
		0x9b, 0xf0, 0x37, 0xe1, 0x6f, 0xc2, 0xdf, 0x84, 0xbf, 0x09, 0x7f, 0x73, 0x4b, 0xfc, 0x4d, 0x48,
		0x9b, 0x70, 0x38, 0x77, 0xd1, 0xe1, 0x44, 0xea, 0xe4, 0x2f, 0x92, 0xe9, 0xe6, 0x92, 0xcf, 0x12,
		0x35, 0xc1, 0xdb, 0x20, 0x9d, 0x71, 0x83, 0x04, 0xb0, 0x64, 0xbd, 0x83, 0x48, 0x7a, 0x04, 0x91,
		0x25, 0x14, 0x95, 0x90, 0x50, 0xc4, 0xe9, 0xb4, 0x23, 0xa1, 0x68, 0xe6, 0xd1, 0x91, 0x50, 0x04,
		0xd6, 0x0d, 0xd6, 0x0d, 0xd6, 0x0d, 0xd6, 0x0d, 0xd6, 0x0d, 0xd6, 0x0d, 0xd6, 0x0d, 0xd6, 0x6d,
		0x86, 0x8c, 0x22, 0xcf, 0x06, 0x1e, 0x18, 0x3c, 0x30, 0x78, 0x60, 0xf0, 0xc0, 0xe0, 0x81, 0xc1,
		0x03, 0x13, 0xf1, 0xc0, 0x90, 0x67, 0x03, 0x07, 0x8c, 0xc4, 0x01, 0x43, 0xfa, 0x09, 0xdc, 0x30,
		0xb8, 0x61, 0x70, 0xc3, 0xe0, 0x86, 0xc1, 0x0d, 0x83, 0x1b, 0x06, 0x21, 0x0c, 0x7e, 0x18, 0xb2,
		0x32, 0x24, 0xb2, 0x32, 0x12, 0x14, 0x2e, 0x47, 0x8d, 0x29, 0x82, 0x05, 0xb0, 0x36, 0xca, 0x53,
		0xd9, 0xa4, 0x98, 0xd8, 0x83, 0xba, 0x8c, 0xba, 0x0f, 0xc3, 0x49, 0xb9, 0x0a, 0x5c, 0xed, 0x11,
		0xae, 0xeb, 0xa6, 0xeb, 0x29, 0xb5, 0x8e, 0x6b, 0xac, 0xdc, 0x66, 0x2b, 0xf6, 0xb6, 0x55, 0xfa,
		0xfd, 0x3b, 0x7f, 0xc3, 0xfb, 0xb6, 0xb4, 0xb2, 0x5d, 0x5f, 0xab, 0xb0, 0xed, 0x34, 0xd5, 0xec,
		0x77, 0x7c, 0xeb, 0x8b, 0x9f, 0x2d, 0x38, 0xb6, 0x74, 0xa0, 0x37, 0xae, 0xf9, 0x7a, 0xe9, 0x4f,
		0x6b, 0x93, 0xc8, 0x4d, 0xc8, 0x62, 0x02, 0x52, 0xb8, 0x29, 0xf9, 0x4b, 0x4c, 0xf2, 0x12, 0x93,
		0xb9, 0x64, 0xa4, 0x8d, 0x16, 0x07, 0xd6, 0x4d, 0x2f, 0xb2, 0x26, 0x06, 0xb8, 0x79, 0xdd, 0xbc,
		0xe9, 0x10, 0xa8, 0x99, 0xc7, 0xa8, 0x6e, 0xa0, 0x66, 0x5e, 0x0e, 0x35, 0xf3, 0x84, 0x85, 0x43,
		0xa4, 0xb8, 0x1a, 0x12, 0x04, 0x77, 0x3a, 0xc5, 0xd5, 0x69, 0x75, 0x5c, 0xdf, 0x7e, 0x0a, 0x83,
		0x5e, 0x97, 0x4e, 0xda, 0x9f, 0x1d, 0x14, 0xaa, 0xbe, 0xc0, 0x66, 0xa5, 0xde, 0xb4, 0x6c, 0x9b,
		0x97, 0x6d, 0x13, 0xf3, 0x6c, 0x66, 0x1a, 0xcd, 0x29, 0x7d, 0xaa, 0x7e, 0xa4, 0x43, 0xd7, 0x7f,
		0x22, 0x54, 0xf5, 0x8b, 0x47, 0x46, 0xdf, 0x10, 0x69, 0x83, 0x35, 0xfa, 0xc6, 0x6a, 0x22, 0x0d,
		0xd5, 0x18, 0x1a, 0xa9, 0x31, 0x34, 0x50, 0xc3, 0xe5, 0x3d, 0xce, 0x57, 0x34, 0xe5, 0x87, 0xb6,
		0xdb, 0xa2, 0x4c, 0x97, 0x9c, 0x19, 0x15, 0x07, 0x3a, 0x0e, 0x74, 0x1c, 0xe8, 0x29, 0x3b, 0xd0,
		0x09, 0x77, 0x68, 0x8a, 0x8e, 0x75, 0x80, 0xfd, 0x2f, 0xbf, 0xce, 0x6c, 0x87, 0xa6, 0x67, 0x97,
		0x90, 0xbf, 0xbd, 0x1e, 0x18, 0x90, 0x0f, 0xc8, 0x07, 0xe4, 0xa7, 0x0c, 0xf2, 0x07, 0xc8, 0x15,
		0xaa, 0x36, 0x25, 0xda, 0xd7, 0x08, 0xc6, 0xba, 0x1d, 0xc5, 0x37, 0xdf, 0xbf, 0xcf, 0x4f, 0xfe,
		0xef, 0x77, 0x1d, 0xe7, 0xe2, 0x00, 0x24, 0x08, 0x24, 0x08, 0x24, 0x7c, 0x0a, 0xd3, 0x3e, 0x85,
		0x56, 0x76, 0x47, 0xe9, 0xd0, 0x6d, 0xd2, 0x79, 0x13, 0xd3, 0x21, 0xe1, 0x47, 0xc0, 0x8f, 0x80,
		0x1f, 0x91, 0x32, 0x3f, 0xa2, 0xe7, 0xfa, 0xfa, 0xb0, 0x44, 0xe8, 0x46, 0xd4, 0x90, 0xe1, 0xbd,
		0xe6, 0xa0, 0xc8, 0xf0, 0x26, 0xde, 0x26, 0xaf, 0x7d, 0x27, 0xbe, 0x25, 0x2b, 0x97, 0x8e, 0xcb,
		0xc7, 0xd5, 0x5a, 0xe9, 0x18, 0x69, 0xde, 0x34, 0x00, 0xf9, 0xff, 0xb3, 0xf7, 0xfe, 0xbd, 0x69,
		0x6b, 0xcb, 0xfa, 0xf8, 0xff, 0x7d, 0x15, 0x08, 0x5d, 0xe9, 0xb4, 0xd2, 0x76, 0xf3, 0xa3, 0x24,
		0x69, 0x23, 0x5d, 0x7d, 0x45, 0xc0, 0x69, 0xfc, 0xd9, 0x60, 0x73, 0x8c, 0x93, 0xd3, 0xde, 0xee,
		0x5c, 0xcb, 0x85, 0x45, 0x62, 0x6d, 0x62, 0x73, 0x6d, 0xd3, 0x36, 0xda, 0xcd, 0x7b, 0xff, 0x0a,
		0x03, 0x0e, 0x09, 0xa4, 0x4d, 0x60, 0xcd, 0x2c, 0x1b, 0x3f, 0xd1, 0x56, 0x77, 0x4b, 0x12, 0x2f,
		0x98, 0x99, 0x35, 0xf3, 0xcc, 0xb3, 0x66, 0xcd, 0xc8, 0x7b, 0x0a, 0xba, 0x0c, 0x52, 0xe3, 0x4c,
		0xd4, 0xb3, 0x67, 0x65, 0xb8, 0xab, 0x8a, 0x4b, 0x77, 0xb2, 0x17, 0x0b, 0xd0, 0x64, 0xd0, 0xbf,
		0x1a, 0x69, 0x83, 0x61, 0x18, 0xf6, 0xfd, 0xe0, 0x4a, 0xfb, 0xea, 0x05, 0xfd, 0xef, 0x7e, 0x3f,
		0x15, 0xd1, 0x86, 0x35, 0x59, 0x4f, 0x3c, 0x17, 0x35, 0x5a, 0xa8, 0xd1, 0x52, 0x06, 0xe5, 0x8b,
		0xd6, 0x86, 0x70, 0xb3, 0xf2, 0xc8, 0x25, 0xc3, 0xdb, 0xa8, 0x4c, 0x52, 0xd2, 0x56, 0x44, 0x36,
		0x8e, 0x6c, 0xbc, 0xf8, 0xd9, 0xf8, 0xa6, 0x5b, 0x3b, 0x7b, 0x50, 0x5f, 0x0c, 0x13, 0x4f, 0x1b,
		0x89, 0xa8, 0x27, 0x82, 0xc4, 0xbb, 0x92, 0x68, 0x27, 0x73, 0x53, 0x5e, 0x5a, 0x41, 0x92, 0x56,
		0xe5, 0x90, 0x72, 0xd2, 0xdd, 0x01, 0x85, 0x5b, 0x20, 0x74, 0x0f, 0x54, 0x6e, 0x82, 0xdc, 0x5d,
		0x90, 0xbb, 0x0d, 0x5a, 0xf7, 0x21, 0x39, 0x67, 0x95, 0x64, 0xb3, 0xd2, 0x48, 0xbe, 0x25, 0x8b,
		0x95, 0xbe, 0xff, 0x17, 0x7d, 0x80, 0x44, 0x0a, 0x44, 0x32, 0x01, 0x28, 0x9f, 0x08, 0x24, 0x25,
		0x04, 0xa9, 0x89, 0x41, 0x36, 0x92, 0x89, 0x9e, 0x6c, 0x22, 0x20, 0x0c, 0x49, 0x89, 0xc3, 0x25,
		0xd5, 0xee, 0xed, 0x42, 0xb9, 0x3c, 0xde, 0x59, 0xfe, 0xd3, 0x2e, 0x73, 0x15, 0x35, 0xc4, 0x8f,
		0x24, 0xf2, 0xb4, 0x71, 0x10, 0x27, 0xde, 0xd7, 0xa1, 0xe4, 0xf8, 0xf1, 0xfd, 0x5a, 0x04, 0x45,
		0xf0, 0xc6, 0xf3, 0x38, 0xf7, 0xf6, 0xed, 0x4e, 0x72, 0x1d, 0x89, 0xf8, 0x3a, 0x1c, 0xf6, 0xb5,
		0xe4, 0x76, 0x24, 0x2a, 0xff, 0x5d, 0xf9, 0x57, 0x53, 0x6f, 0x39, 0xf5, 0x7f, 0x55, 0x09, 0x3c,
		0x05, 0x11, 0x6a, 0x5b, 0x85, 0xde, 0x52, 0x4d, 0x10, 0x6d, 0x64, 0x6a, 0x0c, 0xb7, 0x12, 0xcb,
		0xfd, 0x4a, 0x55, 0x85, 0x08, 0x13, 0x4d, 0x11, 0xf7, 0x22, 0x7f, 0x24, 0x8d, 0xea, 0xff, 0xa5,
		0x61, 0x3b, 0xd7, 0xa2, 0x72, 0x0f, 0xe2, 0x2a, 0x69, 0x56, 0x57, 0xe9, 0x79, 0x41, 0x25, 0x0c,
		0x86, 0xb7, 0x95, 0xaf, 0xa2, 0x12, 0x8f, 0x44, 0xcf, 0x1f, 0xf8, 0xa2, 0x5f, 0x99, 0x58, 0x4a,
		0x25, 0xb9, 0x16, 0x7f, 0x05, 0x99, 0x7c, 0x2b, 0xa9, 0x7c, 0xfd, 0x78, 0xe1, 0xa7, 0x92, 0x70,
		0xf2, 0x5b, 0xde, 0xf2, 0x43, 0xc3, 0xc1, 0xe4, 0x17, 0x45, 0x25, 0x12, 0xb1, 0x88, 0xbe, 0x89,
		0x7e, 0x65, 0x53, 0xf2, 0x56, 0xf5, 0x2e, 0x7a, 0xbc, 0x93, 0xfa, 0x0b, 0x7a, 0xfb, 0x83, 0x6e,
		0x45, 0xae, 0x4d, 0xb5, 0xb4, 0xb1, 0x72, 0x61, 0x2a, 0x24, 0x1f, 0xf5, 0x0e, 0x08, 0x43, 0x09,
		0xc2, 0x90, 0x7c, 0xa6, 0x99, 0x3d, 0x97, 0xec, 0x6c, 0x53, 0x9e, 0x42, 0x24, 0x88, 0xb0, 0xda,
		0x0f, 0xbf, 0x07, 0x5a, 0xb6, 0xc1, 0x62, 0x02, 0x8e, 0xef, 0xd1, 0x02, 0xa0, 0xf8, 0x40, 0xf1,
		0x81, 0xe2, 0x03, 0xc5, 0x07, 0x8a, 0x0f, 0x14, 0x1f, 0x28, 0x3e, 0x50, 0x7c, 0xa0, 0xf8, 0x0a,
		0x0e, 0xc0, 0xa5, 0x5e, 0x53, 0x5a, 0xf4, 0x6f, 0x72, 0xaf, 0x2b, 0x2d, 0x6e, 0x2f, 0xf2, 0x6b,
		0x4b, 0xd9, 0x62, 0xf2, 0xaf, 0x2f, 0x2d, 0x3f, 0x5a, 0xda, 0x35, 0x26, 0xd9, 0x96, 0x01, 0xf2,
		0xf7, 0x37, 0xe4, 0xaf, 0x73, 0x66, 0xeb, 0xdd, 0x33, 0xab, 0xd5, 0x74, 0x1b, 0xb6, 0xd5, 0xed,
		0xea, 0xcd, 0x7f, 0x79, 0x41, 0xbf, 0xf2, 0xe0, 0x47, 0x67, 0x4c, 0x47, 0x2f, 0xcd, 0x70, 0x27,
		0xbf, 0xd3, 0xd5, 0x3b, 0x75, 0xbb, 0xee, 0xe8, 0xee, 0x79, 0xc7, 0x6d, 0x5a, 0xff, 0x31, 0xc1,
		0x1d, 0xab, 0xa7, 0xb9, 0x7e, 0xcf, 0x1d, 0xcb, 0xd1, 0x34, 0xa8, 0xe7, 0xc7, 0xdb, 0xaa, 0x5e,
		0x19, 0xfa, 0x71, 0x52, 0x09, 0x07, 0x95, 0x47, 0x3c, 0xc3, 0x6f, 0x49, 0xc5, 0x8c, 0x0e, 0xac,
		0x8c, 0x47, 0x7d, 0x2f, 0x49, 0x69, 0xc5, 0x24, 0xf2, 0xaf, 0xae, 0x26, 0x4e, 0xb5, 0xf2, 0xd5,
		0x8b, 0x45, 0xbf, 0x12, 0x06, 0x95, 0x5e, 0x14, 0xc6, 0xb1, 0x1f, 0x5c, 0x55, 0xbc, 0x45, 0x1e,
		0x72, 0xa2, 0xbc, 0x58, 0x8c, 0xbc, 0x68, 0xf2, 0x8b, 0xe3, 0x51, 0xfa, 0xef, 0xc9, 0x1b, 0xa8,
		0x2c, 0xbc, 0x01, 0x2f, 0x12, 0x7f, 0x05, 0x91, 0xf8, 0xbf, 0xb1, 0x1f, 0x89, 0x3e, 0xe8, 0xe9,
		0x3c, 0xee, 0xdb, 0xa5, 0xbd, 0x5b, 0x18, 0x73, 0x02, 0x85, 0xbd, 0x45, 0x08, 0x1a, 0x14, 0xf6,
		0x46, 0x1f, 0xf3, 0x89, 0x10, 0x2a, 0x9f, 0xca, 0x7e, 0x6a, 0x21, 0x50, 0xda, 0x1b, 0x8b, 0x16,
		0x94, 0x36, 0x5f, 0xf4, 0x03, 0xa5, 0x2d, 0xc3, 0x62, 0x45, 0x30, 0xbe, 0x11, 0x91, 0x27, 0x19,
		0x0a, 0x65, 0x37, 0x58, 0x6a, 0x12, 0x9f, 0xa9, 0x07, 0xe3, 0x1b, 0xf9, 0xfb, 0xc0, 0x09, 0xbb,
		0xd3, 0x8e, 0xad, 0x14, 0xe0, 0xb3, 0xba, 0x3b, 0x91, 0x71, 0xdb, 0xb0, 0x6d, 0xcb, 0xd6, 0x9b,
		0xf3, 0x0c, 0x88, 0x22, 0xd5, 0xdd, 0x9b, 0x2c, 0xf4, 0x38, 0xd5, 0x92, 0x8b, 0xaf, 0x24, 0x67,
		0x59, 0x55, 0x27, 0x34, 0xd2, 0xcd, 0x4b, 0x71, 0xac, 0xf0, 0x58, 0xe2, 0x24, 0xf4, 0xed, 0xb2,
		0xbc, 0x8f, 0x2b, 0x7b, 0x39, 0x85, 0x8a, 0x77, 0xa0, 0xd4, 0x8a, 0x4d, 0xa9, 0x81, 0x1f, 0x2b,
		0x24, 0x3f, 0x06, 0xb2, 0x6b, 0xc9, 0xe0, 0x9d, 0x6b, 0x51, 0x89, 0xc5, 0x50, 0xa4, 0xc7, 0x6b,
		0x95, 0x70, 0x50, 0xf9, 0x7e, 0x2d, 0x92, 0x6b, 0x11, 0x55, 0x6e, 0xfc, 0x28, 0x0a, 0x23, 0xd1,
		0xaf, 0x84, 0xd1, 0x3d, 0x8f, 0x90, 0x09, 0xf9, 0xaf, 0xe0, 0x9b, 0x37, 0x1c, 0x8b, 0x94, 0x42,
		0x98, 0xd5, 0xcb, 0x8d, 0x63, 0xd1, 0xaf, 0xcc, 0xc8, 0x84, 0x78, 0xf2, 0xaf, 0x68, 0xb1, 0xa4,
		0xee, 0x9e, 0x74, 0x48, 0xc2, 0xbf, 0x82, 0xaf, 0x93, 0x45, 0x13, 0x10, 0x58, 0x85, 0x20, 0xb0,
		0x94, 0x9a, 0x08, 0x48, 0x29, 0x90, 0x52, 0x20, 0xa5, 0x1e, 0x93, 0x52, 0x89, 0xcc, 0x14, 0x74,
		0x05, 0x17, 0x95, 0x3e, 0x1f, 0x14, 0x14, 0x28, 0x28, 0x50, 0x50, 0xa0, 0xa0, 0x40, 0x41, 0x49,
		0xa6, 0xa0, 0xd2, 0x4b, 0x5f, 0x64, 0xbc, 0xd3, 0x52, 0xda, 0x53, 0x5a, 0xe2, 0x69, 0x2a, 0x67,
		0x1a, 0xb6, 0x69, 0x59, 0xca, 0xa0, 0x9b, 0x00, 0x02, 0x19, 0x40, 0xe0, 0x78, 0xa4, 0x91, 0xdf,
		0xaf, 0x59, 0xb1, 0x06, 0xc0, 0x20, 0xc0, 0x20, 0xc0, 0x60, 0xc9, 0xc0, 0x20, 0xae, 0xd8, 0xc8,
		0x86, 0x0d, 0xb8, 0x62, 0xf3, 0x2c, 0xfb, 0xc3, 0x15, 0x9b, 0x27, 0x54, 0x8b, 0x2b, 0x36, 0x9c,
		0xc0, 0xb9, 0x82, 0x2b, 0x36, 0x2f, 0xf7, 0x6f, 0xb8, 0x62, 0xf3, 0xbc, 0x47, 0xe3, 0x8a, 0x4d,
		0x8e, 0xe3, 0xb4, 0xf4, 0x2b, 0x36, 0x8f, 0x8b, 0x60, 0x50, 0x42, 0xa0, 0x2e, 0x39, 0x58, 0x99,
		0x24, 0x10, 0x6a, 0x1a, 0x55, 0x07, 0x8f, 0xb7, 0xd5, 0xfd, 0x9d, 0x88, 0xc5, 0xeb, 0x10, 0x61,
		0x14, 0x89, 0x78, 0x14, 0x06, 0x7d, 0x3f, 0xb8, 0x4a, 0x4f, 0x8c, 0xc3, 0xe4, 0xba, 0xe2, 0x07,
		0xbd, 0x48, 0x78, 0xb1, 0x1f, 0x5c, 0xfd, 0x15, 0xa4, 0x77, 0x18, 0xc4, 0xfc, 0xdf, 0xf7, 0xdd,
		0x77, 0xa6, 0x57, 0x29, 0x1e, 0xdc, 0xa2, 0x48, 0xef, 0x55, 0xa4, 0x57, 0x29, 0xbc, 0xe0, 0xaf,
		0xe0, 0x99, 0xf7, 0x27, 0xee, 0xdf, 0xcd, 0x1f, 0x15, 0x2f, 0xe8, 0x4f, 0x9b, 0xfd, 0xc4, 0xde,
		0xcd, 0xaf, 0x2e, 0x50, 0xcc, 0xcf, 0xb3, 0xfb, 0x6f, 0x51, 0xce, 0x90, 0xc7, 0x4d, 0x5e, 0x79,
		0xfa, 0x3e, 0xce, 0x36, 0xd9, 0x1e, 0xea, 0x24, 0xb6, 0x08, 0x9b, 0x83, 0x22, 0xdf, 0xe8, 0x63,
		0x8e, 0x47, 0xd4, 0xec, 0x38, 0x88, 0x71, 0x99, 0x02, 0x05, 0x31, 0xce, 0x17, 0x16, 0x41, 0x8c,
		0xcb, 0xb0, 0x58, 0x10, 0xe3, 0xd2, 0xd9, 0x53, 0x10, 0xe3, 0xb9, 0xe0, 0x4e, 0x41, 0x8c, 0x6f,
		0xb1, 0x72, 0x01, 0xbe, 0x9f, 0xa1, 0x06, 0x10, 0xe3, 0xbf, 0x58, 0x0c, 0xc4, 0x38, 0x88, 0x71,
		0xf4, 0x9e, 0xfa, 0x55, 0x5a, 0x00, 0x62, 0x1c, 0xbd, 0xa7, 0xd6, 0xdf, 0x56, 0xf7, 0xe4, 0xe4,
		0x03, 0x96, 0x01, 0x9d, 0xa7, 0x28, 0xb6, 0x6a, 0x79, 0x98, 0xee, 0x5c, 0x1b, 0x13, 0xa8, 0xeb,
		0x2d, 0x42, 0xcf, 0x65, 0xa6, 0xae, 0xb7, 0x6a, 0x0e, 0xbf, 0x92, 0xf1, 0xf1, 0xab, 0x87, 0xa8,
		0x6f, 0x34, 0x55, 0x7e, 0x73, 0xed, 0x6c, 0xa0, 0x99, 0x6a, 0x9c, 0x78, 0x89, 0x90, 0x37, 0xd1,
		0x7a, 0xfa, 0xb8, 0x9c, 0x0d, 0xb4, 0xde, 0xc7, 0x40, 0xeb, 0x35, 0x01, 0x08, 0x06, 0x5a, 0xab,
		0xf2, 0x96, 0x18, 0x68, 0x8d, 0x13, 0x47, 0x9c, 0x38, 0x56, 0x70, 0xe2, 0x28, 0x17, 0xfd, 0xe2,
		0xc4, 0x11, 0x27, 0x8e, 0x15, 0x9c, 0x38, 0xaa, 0xa6, 0xec, 0x70, 0xe2, 0x98, 0x17, 0xe5, 0x82,
		0x33, 0x79, 0x86, 0x1a, 0x70, 0xae, 0x84, 0x81, 0xd6, 0xf9, 0xc6, 0x70, 0x2b, 0xb1, 0x1c, 0x06,
		0x5a, 0xbf, 0xc4, 0xb0, 0x31, 0xd0, 0x5a, 0xda, 0x4e, 0xc2, 0x40, 0x6b, 0x0c, 0xb4, 0x2e, 0x09,
		0xc2, 0xc0, 0x3c, 0x67, 0x30, 0x5c, 0x60, 0xb8, 0xc0, 0x70, 0x81, 0xe1, 0x02, 0xc3, 0x05, 0x86,
		0x0b, 0x0c, 0x17, 0x18, 0x2e, 0x30, 0x5c, 0x05, 0x64, 0xb8, 0x50, 0x53, 0xff, 0x8b, 0xc5, 0x50,
		0x53, 0x0f, 0xee, 0x13, 0x35, 0xf5, 0xbf, 0x4a, 0x0b, 0x50, 0x53, 0x8f, 0x9a, 0xfa, 0xf5, 0xb7,
		0x15, 0xe6, 0x39, 0x83, 0x9d, 0x95, 0xb8, 0x77, 0x31, 0xcf, 0x19, 0x08, 0x9a, 0xf3, 0xfd, 0x60,
		0x9c, 0xf1, 0x12, 0x9b, 0x03, 0x46, 0x37, 0xd7, 0x91, 0x01, 0x8c, 0x2e, 0x87, 0x8f, 0xc2, 0x2c,
		0x19, 0xcc, 0x92, 0xc1, 0x38, 0xe3, 0x27, 0x25, 0x8f, 0x71, 0xc6, 0x6c, 0x48, 0x09, 0xe3, 0x8c,
		0x0b, 0xce, 0x28, 0x81, 0x1e, 0x2a, 0x24, 0x3d, 0x04, 0xae, 0x67, 0xc9, 0xe0, 0x31, 0xce, 0x18,
		0xfc, 0xcd, 0x6f, 0x36, 0x17, 0xc6, 0x19, 0x83, 0x93, 0xc9, 0x17, 0x27, 0x83, 0x69, 0xbe, 0x60,
		0x60, 0xc0, 0xc0, 0x80, 0x81, 0x01, 0x03, 0x83, 0x69, 0xbe, 0x8f, 0x69, 0x17, 0x4c, 0xf3, 0xcd,
		0xf2, 0x08, 0x4c, 0xf3, 0x95, 0xe9, 0xbb, 0x30, 0xcc, 0x16, 0x58, 0x08, 0x58, 0x08, 0x58, 0x08,
		0xf7, 0x0b, 0x64, 0xf8, 0x00, 0xdc, 0x2f, 0x90, 0xfd, 0x70, 0xdc, 0x2f, 0x50, 0x84, 0xe1, 0x2a,
		0xb8, 0x5f, 0x90, 0x27, 0xe5, 0xe2, 0x7e, 0xc1, 0x33, 0xd4, 0x80, 0xfb, 0x05, 0xbf, 0x58, 0x0c,
		0xf7, 0x0b, 0x70, 0x1a, 0x8c, 0x61, 0xb6, 0xbf, 0x4a, 0x0b, 0x70, 0xbf, 0x00, 0xc3, 0x6c, 0xd7,
		0xdf, 0x56, 0x18, 0x66, 0x9b, 0x9f, 0x5d, 0x5d, 0xc1, 0x30, 0x5b, 0x0c, 0xb3, 0xe5, 0x40, 0xd2,
		0x15, 0x9c, 0x92, 0x73, 0x78, 0x76, 0xcc, 0x72, 0x05, 0x2f, 0x0c, 0x5e, 0xf8, 0x39, 0x91, 0x00,
		0xbc, 0xf0, 0x9a, 0x16, 0x0b, 0x5e, 0x58, 0x3a, 0x79, 0x08, 0x5e, 0x38, 0x17, 0xd4, 0x21, 0x78,
		0xe1, 0x2d, 0x56, 0x2e, 0x78, 0xe1, 0x67, 0xa8, 0x01, 0xbc, 0xf0, 0x73, 0xc8, 0x5b, 0xf0, 0xc2,
		0xe0, 0x85, 0xd1, 0x77, 0x66, 0x45, 0x5a, 0x00, 0x5e, 0x18, 0x7d, 0x67, 0xd6, 0xdf, 0x56, 0x98,
		0xe5, 0x0a, 0xa2, 0x57, 0xda, 0xce, 0xc5, 0x2c, 0x57, 0xa0, 0x67, 0xbe, 0xf7, 0x83, 0x51, 0xa6,
		0x54, 0xa3, 0x4c, 0xa7, 0x13, 0x3c, 0x55, 0x4d, 0x32, 0x7d, 0xc5, 0xa8, 0x4e, 0x59, 0x6a, 0xcc,
		0x93, 0xfa, 0xaa, 0x1b, 0x8d, 0x82, 0x8d, 0xc6, 0xbd, 0x24, 0x98, 0x81, 0x03, 0x73, 0xfa, 0xbe,
		0x8c, 0xd9, 0xdb, 0x72, 0xdb, 0xa3, 0x61, 0xec, 0x1a, 0xf3, 0xe5, 0x5d, 0xe3, 0x6a, 0x74, 0x3a,
		0x5b, 0xfd, 0x64, 0xb3, 0x91, 0x0c, 0x2f, 0xd7, 0xf9, 0x1a, 0xfa, 0xae, 0xde, 0x4b, 0xd3, 0xef,
		0xaf, 0xad, 0xed, 0x0c, 0x39, 0x3d, 0x78, 0xda, 0x9a, 0xd6, 0xb7, 0xd9, 0x21, 0xcc, 0xc6, 0x87,
		0x2e, 0x32, 0x0e, 0x59, 0x24, 0x1e, 0xaa, 0xc8, 0x82, 0x63, 0xd2, 0x0f, 0x4d, 0xa4, 0x23, 0x2a,
		0xb9, 0x87, 0x22, 0xbc, 0x1e, 0x73, 0xe3, 0x43, 0x8e, 0xcc, 0x62, 0x86, 0xc2, 0x1b, 0x44, 0x62,
		0xb0, 0x89, 0xc5, 0xcc, 0x2f, 0xf9, 0x1d, 0x6d, 0xf0, 0x8c, 0xce, 0xcc, 0x69, 0xbf, 0x7d, 0x3b,
		0x9b, 0xe1, 0xbd, 0xf3, 0x60, 0x6b, 0x17, 0xc2, 0xa1, 0x4d, 0xc4, 0x28, 0xd1, 0xa3, 0xad, 0xaf,
		0x95, 0x0d, 0x07, 0x77, 0xe7, 0xce, 0xa5, 0xf9, 0x03, 0x38, 0xb4, 0x35, 0x1c, 0x9a, 0x3f, 0x28,
		0x8a, 0x3b, 0xdb, 0x74, 0xc8, 0x76, 0xb5, 0x37, 0xb7, 0x58, 0x49, 0xe3, 0xf3, 0x67, 0xcf, 0xcb,
		0xd9, 0xfc, 0xfc, 0xdd, 0x7c, 0xce, 0xcf, 0xdf, 0x68, 0x7b, 0x52, 0xd1, 0x40, 0xc5, 0x9f, 0x9e,
		0xbf, 0xc9, 0xf6, 0xcd, 0x47, 0x7a, 0x2e, 0x6d, 0x76, 0x7e, 0x16, 0x14, 0xe5, 0xd7, 0x75, 0xdd,
		0x3f, 0x1a, 0x35, 0x5d, 0xb9, 0x71, 0x06, 0xd4, 0xdc, 0xf0, 0xf6, 0x55, 0x74, 0xc9, 0x70, 0x16,
		0x72, 0x59, 0xca, 0xfc, 0xd7, 0x73, 0x6d, 0x9e, 0xfa, 0x50, 0xa4, 0x42, 0x4f, 0xa6, 0x46, 0x3b,
		0xa9, 0x9a, 0x8f, 0x33, 0x87, 0x15, 0x3f, 0x7e, 0x61, 0xf6, 0xef, 0x94, 0x38, 0xca, 0x95, 0x0a,
		0x25, 0xd3, 0xb4, 0xd9, 0x73, 0x6f, 0xaf, 0xc2, 0x44, 0x0b, 0x7b, 0x5a, 0x2f, 0xbc, 0x19, 0x45,
		0x22, 0x8e, 0x45, 0x5f, 0x9b, 0xe8, 0x74, 0xb2, 0xc8, 0x36, 0xf5, 0xbe, 0x88, 0xc7, 0x5f, 0x09,
		0x03, 0xe0, 0x83, 0xa7, 0x23, 0x06, 0x22, 0x06, 0x22, 0x06, 0x22, 0x06, 0x16, 0x36, 0x06, 0x7e,
		0xb9, 0x8f, 0x81, 0xff, 0xdd, 0x1b, 0x47, 0x91, 0x08, 0x92, 0xd7, 0x6f, 0x76, 0xde, 0xbe, 0xbd,
		0xa7, 0x13, 0x2f, 0x67, 0xbf, 0xb2, 0xe8, 0xf7, 0xe2, 0x15, 0xaf, 0x65, 0x4f, 0xee, 0x8b, 0x1f,
		0x08, 0xa7, 0x38, 0x6e, 0xae, 0x54, 0xaa, 0xfa, 0x8f, 0xb4, 0xda, 0x72, 0xf3, 0x72, 0x3d, 0xf9,
		0x14, 0x47, 0xd8, 0xd3, 0xc4, 0x8f, 0xe4, 0x38, 0x11, 0x43, 0x71, 0x23, 0x92, 0xe8, 0x56, 0x0b,
		0x03, 0xad, 0x77, 0x9d, 0xde, 0x03, 0x20, 0xa1, 0x3d, 0xd2, 0x3a, 0x4d, 0x02, 0xde, 0x43, 0x35,
		0xe5, 0x71, 0x89, 0x8a, 0x04, 0xb1, 0xf3, 0xe0, 0x0c, 0x62, 0x76, 0x1e, 0xa3, 0xac, 0x12, 0x61,
		0xa3, 0x83, 0x74, 0x2f, 0x11, 0xf2, 0x48, 0xe1, 0xe9, 0xe3, 0x72, 0xc6, 0x09, 0xef, 0x83, 0x13,
		0x56, 0x0f, 0x79, 0xc1, 0x09, 0x3f, 0xfb, 0x03, 0x81, 0x13, 0x46, 0x3e, 0x8c, 0x7c, 0x18, 0xf9,
		0x30, 0xf2, 0x61, 0x96, 0x7c, 0x58, 0x3e, 0x27, 0x0c, 0x4a, 0x14, 0x21, 0x00, 0x21, 0x00, 0x21,
		0x00, 0x21, 0xa0, 0x20, 0x21, 0x20, 0xd7, 0x94, 0x28, 0x2e, 0xa0, 0xe4, 0x8d, 0xee, 0xc1, 0xbd,
		0x93, 0x02, 0x6a, 0x8d, 0xef, 0xba, 0xc9, 0xfc, 0x6f, 0xb6, 0x18, 0xe4, 0xb9, 0x2a, 0x7b, 0x33,
		0xea, 0x4f, 0x0a, 0xe5, 0x27, 0xad, 0x0a, 0x7b, 0x1f, 0x17, 0x4b, 0x28, 0x41, 0x1a, 0x2e, 0x96,
		0x48, 0xa4, 0xe7, 0xaa, 0x5e, 0xff, 0xc6, 0x0f, 0xb4, 0xab, 0x28, 0x1c, 0x8f, 0xe4, 0x31, 0xef,
		0x8b, 0x0f, 0x95, 0xc3, 0xbf, 0xef, 0x6e, 0x79, 0x4d, 0xb6, 0xa4, 0xd6, 0x7a, 0x60, 0xe0, 0x69,
		0x5a, 0xe7, 0xa9, 0x45, 0xad, 0xd2, 0x72, 0xa7, 0x85, 0x38, 0x99, 0xce, 0x4e, 0x93, 0x60, 0x70,
		0xf3, 0xa0, 0xf9, 0x5e, 0xa9, 0x84, 0xa4, 0xb6, 0x83, 0x92, 0xdf, 0x06, 0x8a, 0xa5, 0xfd, 0x13,
		0x41, 0xdb, 0x27, 0x82, 0x76, 0x4f, 0x6a, 0x4e, 0x96, 0xa5, 0xdc, 0x62, 0x5e, 0xda, 0x45, 0x12,
		0x6e, 0x33, 0x23, 0xce, 0x21, 0xce, 0x21, 0xce, 0x91, 0xc5, 0x39, 0x89, 0x3b, 0x54, 0x66, 0xb4,
		0x53, 0x53, 0x5d, 0x13, 0x0d, 0xaf, 0xb4, 0x1b, 0x71, 0xf3, 0x55, 0x44, 0xf1, 0xb5, 0x2f, 0x11,
		0xed, 0x3f, 0x7e, 0x30, 0x3c, 0x21, 0x3c, 0x21, 0x3c, 0x61, 0xce, 0x3c, 0xa1, 0xbc, 0x53, 0x12,
		0x99, 0xa7, 0x23, 0x8b, 0x7d, 0x24, 0xb2, 0xff, 0x12, 0xa1, 0x5d, 0x0d, 0xc3, 0xaf, 0xde, 0x70,
		0x91, 0x48, 0x9d, 0x38, 0x99, 0xe9, 0x9f, 0x3b, 0x9b, 0x1f, 0x8e, 0x23, 0xdd, 0x40, 0xba, 0x41,
		0x19, 0x6a, 0x13, 0xa1, 0xdd, 0x88, 0x24, 0xf2, 0x7b, 0xf2, 0x82, 0xec, 0xfd, 0x23, 0x11, 0x5e,
		0x11, 0x5e, 0x11, 0x5e, 0x73, 0x16, 0x5e, 0xc7, 0x7e, 0x90, 0xbc, 0xdb, 0x97, 0x18, 0x5d, 0x65,
		0x04, 0x57, 0xb9, 0x73, 0x25, 0xe4, 0xf6, 0x59, 0x97, 0x5f, 0x0c, 0x44, 0x34, 0x3f, 0x82, 0x7c,
		0xb4, 0x00, 0xdd, 0x48, 0x81, 0x3b, 0xb9, 0x0d, 0xec, 0xe9, 0x54, 0x56, 0xdb, 0xff, 0x50, 0xfb,
		0x70, 0x78, 0xb4, 0xff, 0xe1, 0x00, 0xba, 0x93, 0xe2, 0x20, 0xe5, 0x3d, 0xe5, 0x12, 0x95, 0x25,
		0x2f, 0xe1, 0x58, 0x54, 0x54, 0x96, 0x6c, 0x50, 0x01, 0xb4, 0x46, 0x71, 0xc7, 0x2b, 0x42, 0x7d,
		0x4c, 0xd0, 0xd1, 0x86, 0xb4, 0xdd, 0x66, 0xb9, 0xd9, 0xe6, 0xb9, 0x18, 0x49, 0xee, 0x25, 0x21,
		0xd7, 0x92, 0x90, 0x5b, 0xbd, 0x54, 0x99, 0x1b, 0x6e, 0x2a, 0x25, 0x9b, 0xa9, 0xba, 0x56, 0xed,
		0xd2, 0xf3, 0x0b, 0xb2, 0x5e, 0xb6, 0x4d, 0x9f, 0xbf, 0xd9, 0x9e, 0xf7, 0x93, 0xcf, 0xd4, 0xe0,
		0xba, 0x9a, 0x63, 0xd4, 0xd8, 0xf3, 0xe4, 0xf8, 0x7b, 0xa9, 0xfc, 0xfa, 0x27, 0x7e, 0x23, 0xaf,
		0x75, 0x66, 0xcd, 0xbc, 0x6c, 0x86, 0xcc, 0x0b, 0x64, 0x9f, 0xcd, 0x7c, 0x99, 0x37, 0x64, 0x9d,
		0x4f, 0x01, 0x09, 0x7b, 0x5a, 0xe0, 0xa7, 0x33, 0x41, 0xe2, 0xe3, 0xa6, 0x7e, 0x5a, 0x3f, 0x6f,
		0x39, 0xae, 0x61, 0x76, 0x9d, 0xba, 0xd9, 0xd0, 0x5f, 0x32, 0xc7, 0x65, 0xdd, 0x54, 0x78, 0xc3,
		0xb9, 0x2b, 0x1b, 0x27, 0xb6, 0x0f, 0xe7, 0xa4, 0xbc, 0x4c, 0x3a, 0xaf, 0x08, 0x7c, 0xe3, 0x46,
		0xb3, 0x4a, 0x32, 0x35, 0xb7, 0x3b, 0xad, 0x6e, 0x65, 0xfa, 0x59, 0xc6, 0xd1, 0x74, 0x7a, 0x8b,
		0x1f, 0x4f, 0x07, 0x46, 0x7c, 0xf3, 0x86, 0x7e, 0xbf, 0xf2, 0xdd, 0x4f, 0xae, 0xfd, 0x74, 0x56,
		0x44, 0xa5, 0x2f, 0x06, 0xde, 0x78, 0x98, 0xfc, 0x15, 0xcc, 0xb6, 0x58, 0x65, 0xbe, 0xc5, 0x5e,
		0x3a, 0x0c, 0x7a, 0x13, 0x36, 0x44, 0xde, 0x4c, 0x0f, 0x29, 0x54, 0xc7, 0x03, 0xab, 0x90, 0x24,
		0x4c, 0xb5, 0xbe, 0xfd, 0xd5, 0x66, 0x50, 0xfe, 0x77, 0xbe, 0xee, 0x85, 0x31, 0x81, 0x20, 0x16,
		0x3c, 0xc3, 0x54, 0x9e, 0x11, 0x8b, 0x7f, 0xad, 0xa5, 0xa7, 0xa5, 0xf8, 0x0b, 0xf9, 0x54, 0x67,
		0xeb, 0xfd, 0x5a, 0x2a, 0xd9, 0xd6, 0x4d, 0x7f, 0xfa, 0x37, 0xd2, 0x7e, 0x1e, 0x4b, 0xfb, 0x6c,
		0x16, 0xf6, 0x25, 0x2c, 0xeb, 0x22, 0x8b, 0x1a, 0x88, 0x64, 0xa2, 0x82, 0xe7, 0x48, 0xfe, 0x85,
		0xae, 0x61, 0x6d, 0x22, 0x74, 0xed, 0xdd, 0xff, 0x98, 0xc8, 0x9c, 0x7f, 0x36, 0x62, 0x8c, 0xf0,
		0x6c, 0xae, 0x71, 0x8d, 0xa3, 0xba, 0x97, 0x1c, 0xc5, 0xad, 0x68, 0xd9, 0xfe, 0xfb, 0x83, 0xb4,
		0xf5, 0xb6, 0xc3, 0x28, 0x1c, 0xfa, 0xbd, 0x5b, 0x6d, 0x10, 0x46, 0xdf, 0xbd, 0xa8, 0xef, 0x07,
		0x57, 0xcf, 0xdf, 0x1b, 0xcb, 0xbf, 0xfa, 0xbc, 0x8d, 0xb2, 0xa7, 0x78, 0xa3, 0x8c, 0x06, 0x5b,
		0xb9, 0x47, 0x46, 0x03, 0xea, 0xed, 0xf1, 0xdc, 0x02, 0xf6, 0x7b, 0x4e, 0xe0, 0xf9, 0xc3, 0xe2,
		0x97, 0xcb, 0x80, 0x9e, 0x7b, 0x24, 0xf4, 0xc2, 0xbb, 0x20, 0x2f, 0x3e, 0x0d, 0x5b, 0xe7, 0xd4,
		0xeb, 0xc5, 0xe6, 0x26, 0x13, 0xb8, 0xaf, 0x75, 0x56, 0x25, 0x17, 0xba, 0x3f, 0xd3, 0x1c, 0x69,
		0x32, 0xe2, 0x97, 0xde, 0xb3, 0xd8, 0xa0, 0xdd, 0xc9, 0xc6, 0x6d, 0x4d, 0xd6, 0xbc, 0xc8, 0xb4,
		0xf6, 0x91, 0xee, 0x26, 0x47, 0xb8, 0x6b, 0x1b, 0xb5, 0x8c, 0x94, 0xa4, 0x22, 0xf3, 0x40, 0x56,
		0xda, 0x01, 0xec, 0x26, 0x46, 0xcf, 0xc3, 0xd2, 0xae, 0x7b, 0xe9, 0x68, 0xd3, 0xb1, 0x0f, 0x72,
		0xc6, 0x3d, 0x6c, 0xdb, 0xb4, 0x95, 0x11, 0xa6, 0xad, 0x70, 0x6d, 0xab, 0xf5, 0xb6, 0xd7, 0x9a,
		0xdb, 0x6c, 0xe3, 0xed, 0x96, 0x3d, 0xc0, 0x1b, 0x8d, 0x86, 0x8b, 0x98, 0x5a, 0x9b, 0xa2, 0x6c,
		0x89, 0xf7, 0xfd, 0x9e, 0x58, 0x00, 0xa5, 0x4a, 0xe4, 0x1b, 0x58, 0xf6, 0x46, 0x26, 0xdb, 0xd0,
		0x64, 0x1b, 0x9b, 0x62, 0x83, 0x6f, 0xb6, 0xd1, 0x37, 0xdc, 0xf0, 0x2f, 0xa7, 0x0e, 0x08, 0xa8,
		0x05, 0x99, 0xd4, 0xc3, 0x4b, 0xa8, 0x89, 0xec, 0xbf, 0xd4, 0x85, 0xf8, 0x22, 0x9e, 0xfe, 0xe5,
		0x76, 0xce, 0x59, 0xcc, 0x08, 0x02, 0xbf, 0x5f, 0xdd, 0xaa, 0x46, 0x22, 0x64, 0xbd, 0x9c, 0xd5,
		0x14, 0xc0, 0x4e, 0x03, 0xc2, 0xb7, 0x68, 0xa0, 0xc5, 0x62, 0x28, 0xd2, 0x12, 0x1c, 0xa2, 0xa0,
		0xb3, 0x72, 0x0d, 0xc4, 0x1d, 0xc4, 0x1d, 0xc4, 0x1d, 0xc4, 0x1d, 0xc4, 0x9d, 0x92, 0xc5, 0x1d,
		0xdc, 0xf3, 0x46, 0x6c, 0x41, 0x6c, 0x29, 0x57, 0x6c, 0xc9, 0xe9, 0x1d, 0x6f, 0x38, 0xfa, 0x7c,
		0xb1, 0x68, 0xf9, 0x2c, 0xf1, 0x5e, 0x3a, 0xef, 0xde, 0x59, 0xe8, 0xe8, 0x79, 0x5f, 0xe2, 0xbd,
		0xc9, 0x4c, 0x0f, 0xee, 0xb1, 0xea, 0x1b, 0x44, 0x5e, 0x99, 0x7b, 0x7a, 0xc3, 0x48, 0x0b, 0x9a,
		0x9f, 0x25, 0x82, 0x82, 0xe6, 0x97, 0x17, 0x19, 0x25, 0x66, 0x5b, 0x32, 0xb2, 0xac, 0x15, 0x05,
		0x47, 0x0f, 0xb6, 0x75, 0x21, 0x9c, 0xd9, 0x44, 0x8c, 0x12, 0xbd, 0xd9, 0xfa, 0x5a, 0xd9, 0xb6,
		0x53, 0x4b, 0x1f, 0xee, 0x6c, 0x1d, 0x77, 0xe6, 0x97, 0xe7, 0xd4, 0x72, 0xc3, 0x62, 0x81, 0x25,
		0xa3, 0xdb, 0xa8, 0x68, 0x40, 0xd2, 0x36, 0x2c, 0x4c, 0xfe, 0x8e, 0x79, 0x60, 0x98, 0x07, 0x46,
		0xb2, 0xad, 0x97, 0x63, 0x2c, 0xe6, 0x81, 0x6d, 0xfc, 0x40, 0x0c, 0x83, 0xc1, 0x30, 0x18, 0x4a,
		0xa7, 0x21, 0xc9, 0x79, 0xc8, 0x27, 0x01, 0x09, 0x52, 0x1f, 0x8a, 0x54, 0xe8, 0xc9, 0xd4, 0x48,
		0xc1, 0x3c, 0x30, 0x0c, 0xb5, 0xce, 0x81, 0x08, 0x31, 0x10, 0x0d, 0x31, 0x10, 0x31, 0x10, 0x31,
		0x10, 0x31, 0xb0, 0xe8, 0x03, 0xd1, 0x10, 0x4e, 0x8b, 0x9d, 0xcf, 0xea, 0x3f, 0xd2, 0x3e, 0x3d,
		0x9b, 0xb7, 0xc8, 0x93, 0x4f, 0x71, 0x84, 0x3d, 0x4d, 0xfc, 0x48, 0x8e, 0x13, 0x31, 0x14, 0x37,
		0x22, 0x89, 0x6e, 0xb5, 0x30, 0xd0, 0x7a, 0xd7, 0x69, 0x4f, 0x3f, 0x12, 0xda, 0x23, 0xed, 0x08,
		0x44, 0xc0, 0x7b, 0xa8, 0xa6, 0x3c, 0x2e, 0xb7, 0x7a, 0x68, 0xe0, 0x33, 0x4f, 0x90, 0x1f, 0x0e,
		0x0d, 0xdc, 0xe4, 0x3c, 0x79, 0x73, 0xa5, 0x6c, 0xd4, 0xc5, 0x7e, 0xa3, 0x41, 0x71, 0xcb, 0x48,
		0x79, 0x83, 0x81, 0x71, 0x4b, 0xd1, 0x51, 0x16, 0x27, 0xbc, 0x0f, 0x4e, 0x58, 0x3d, 0xe4, 0x05,
		0x27, 0xfc, 0xec, 0x0f, 0x04, 0x4e, 0x18, 0xf9, 0x30, 0xf2, 0x61, 0xe4, 0xc3, 0xc8, 0x87, 0x59,
		0xf2, 0x61, 0xf9, 0x9c, 0x30, 0x28, 0x51, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x80, 0x82,
		0x84, 0x80, 0x5c, 0x53, 0xa2, 0x05, 0xcf, 0x66, 0xb6, 0x90, 0xee, 0xd9, 0xa0, 0x43, 0xbc, 0x04,
		0xb6, 0x07, 0xd7, 0x3c, 0xd6, 0xd2, 0x5a, 0x75, 0x23, 0x96, 0xec, 0x57, 0x6d, 0x50, 0x3b, 0xe9,
		0xbb, 0x39, 0xcd, 0xde, 0xcc, 0x7d, 0x7b, 0xf2, 0xfb, 0xbf, 0xd9, 0x62, 0x90, 0xe7, 0x0a, 0xed,
		0xcd, 0x68, 0x40, 0x29, 0xf4, 0x9f, 0xb4, 0x8a, 0xec, 0x7d, 0x5c, 0x30, 0xa1, 0x83, 0x6b, 0xb8,
		0x60, 0x22, 0x8d, 0xa6, 0x43, 0x1f, 0x29, 0xdc, 0xb9, 0xce, 0x4f, 0xfe, 0x85, 0x3b, 0xd7, 0xfc,
		0x79, 0x15, 0xfa, 0x79, 0x48, 0x84, 0xc5, 0x68, 0xaf, 0x04, 0x77, 0x0c, 0x77, 0x0c, 0x77, 0x0c,
		0x77, 0x5c, 0x74, 0x77, 0x8c, 0xae, 0x43, 0x70, 0xb9, 0x70, 0xb9, 0xe5, 0x72, 0xb9, 0x39, 0xed,
		0x3a, 0x04, 0x96, 0x96, 0x9e, 0xa5, 0xc5, 0xbc, 0xd5, 0xc5, 0x47, 0x60, 0xde, 0xea, 0x6f, 0x1e,
		0x51, 0xd2, 0x79, 0xab, 0xcf, 0xdb, 0x4c, 0xf2, 0xe7, 0xad, 0x3e, 0x7d, 0xb8, 0x81, 0xd9, 0xab,
		0x72, 0xb4, 0x27, 0x6d, 0xf6, 0xea, 0x33, 0x26, 0x66, 0x4d, 0x3e, 0xcf, 0x02, 0x01, 0x71, 0x15,
		0x85, 0xe3, 0xd1, 0x1a, 0x03, 0xa0, 0x56, 0x3f, 0x06, 0xb3, 0xa0, 0xf8, 0x40, 0x6c, 0x99, 0x67,
		0x41, 0xad, 0xb2, 0xbe, 0xf5, 0xc7, 0x42, 0xad, 0x7c, 0x1a, 0x26, 0x44, 0x91, 0xe5, 0x73, 0x98,
		0x10, 0x85, 0x09, 0x51, 0xbc, 0x34, 0x09, 0x4e, 0xf6, 0x95, 0xd0, 0x1f, 0x25, 0x3e, 0xd9, 0x4f,
		0x83, 0x88, 0x54, 0xf6, 0x32, 0x7b, 0x22, 0x98, 0x4b, 0x30, 0x97, 0x60, 0x2e, 0x73, 0xc4, 0x5c,
		0xc6, 0x49, 0xf4, 0xfb, 0xb9, 0xca, 0x9c, 0x9c, 0x25, 0x3a, 0xa5, 0x13, 0x8a, 0xa8, 0x7a, 0x33,
		0x1a, 0xc6, 0xda, 0x30, 0x1e, 0xc9, 0x73, 0xed, 0xd9, 0x13, 0xe1, 0xda, 0xe1, 0xda, 0xe1, 0xda,
		0x73, 0xe4, 0xda, 0x0b, 0x54, 0x07, 0xf0, 0xf6, 0xed, 0xce, 0xc4, 0x8f, 0xec, 0x0c, 0xe3, 0x51,
		0xbc, 0xd3, 0x0b, 0x83, 0x38, 0x89, 0x3c, 0x3f, 0x10, 0x7d, 0x6d, 0xe4, 0x25, 0xd7, 0x3b, 0xc9,
		0x38, 0x08, 0xc4, 0x30, 0x9e, 0xfd, 0x7f, 0x5e, 0x24, 0xb0, 0xf9, 0x8d, 0xc7, 0x4d, 0x55, 0xb6,
		0xd1, 0x61, 0xc7, 0xd2, 0xd3, 0x36, 0x3e, 0xfc, 0x58, 0x7e, 0x22, 0xc1, 0x61, 0xc8, 0xd2, 0x22,
		0x9b, 0x1f, 0x8e, 0x3c, 0xfd, 0xc8, 0xb5, 0x0f, 0x4b, 0x80, 0x2a, 0x72, 0x9e, 0xa3, 0x16, 0xe5,
		0xc8, 0x77, 0xe5, 0x51, 0xc1, 0xca, 0x57, 0x0b, 0x30, 0x95, 0x65, 0xe3, 0xbc, 0x5e, 0x56, 0x3e,
		0x8f, 0x69, 0x2c, 0xa0, 0xd4, 0x30, 0x8d, 0x45, 0x21, 0x18, 0x5b, 0x31, 0x8d, 0x25, 0xdb, 0xd2,
		0xb8, 0xe7, 0xf7, 0x2c, 0xe9, 0xe3, 0x9e, 0x1f, 0x5c, 0x57, 0x11, 0x5c, 0x17, 0x4e, 0x03, 0x40,
		0x19, 0x81, 0x32, 0x02, 0x65, 0xf4, 0xcc, 0xc8, 0x98, 0xb3, 0xd3, 0x00, 0x90, 0xe4, 0xf0, 0x78,
		0xf0, 0x78, 0xf0, 0x78, 0x64, 0x1e, 0x0f, 0x24, 0x39, 0xb1, 0xca, 0x40, 0x92, 0x17, 0x86, 0x24,
		0x07, 0x77, 0xac, 0x8a, 0x3b, 0xde, 0xbe, 0x4b, 0x44, 0x6b, 0xe6, 0x78, 0xb8, 0x40, 0x44, 0xb6,
		0xdd, 0xb7, 0xed, 0x02, 0xd1, 0xf3, 0xb7, 0x17, 0xc3, 0xb5, 0xa2, 0x49, 0xbc, 0xee, 0xce, 0x57,
		0xfd, 0x98, 0x2e, 0x8a, 0xfb, 0x45, 0xb2, 0x95, 0xcb, 0x7a, 0xd5, 0x68, 0xd6, 0x99, 0x60, 0x8d,
		0xdb, 0x45, 0xf3, 0xdf, 0xc4, 0x85, 0x22, 0xbe, 0xdc, 0xaa, 0xd4, 0x17, 0x8a, 0xd6, 0xeb, 0xf5,
		0xf3, 0xd0, 0x60, 0x6f, 0x71, 0x69, 0x88, 0x8e, 0x4a, 0xc0, 0xa5, 0x21, 0x5c, 0x1a, 0xe2, 0x65,
		0xe8, 0x70, 0x4c, 0xa8, 0x84, 0x79, 0x2b, 0xf1, 0x31, 0xe1, 0x7d, 0xcf, 0x26, 0x69, 0xac, 0xf9,
		0xfd, 0x23, 0x41, 0x9b, 0x83, 0x36, 0x07, 0x6d, 0x9e, 0x23, 0xda, 0x1c, 0xd7, 0x86, 0x7e, 0xfd,
		0xbc, 0x2d, 0xbb, 0x36, 0x94, 0xc8, 0x30, 0xa0, 0xcc, 0x78, 0xd2, 0xa7, 0x6d, 0x3a, 0x65, 0x4e,
		0x0c, 0xbc, 0xf1, 0x30, 0x91, 0x32, 0xac, 0xb5, 0xda, 0x39, 0xb1, 0xdd, 0x8e, 0xd5, 0x32, 0x1a,
		0x9f, 0xab, 0x4a, 0x67, 0x8b, 0x22, 0x4e, 0x21, 0x4e, 0x21, 0x4e, 0xc9, 0xb4, 0x36, 0x11, 0x8c,
		0x6f, 0x44, 0x34, 0x75, 0xec, 0x12, 0x83, 0x55, 0x4d, 0xc2, 0xb3, 0xf4, 0x60, 0x7c, 0x23, 0xcf,
		0x7a, 0x9d, 0xb0, 0x3b, 0x0d, 0xc9, 0x52, 0x27, 0x26, 0xed, 0x4e, 0x64, 0xb8, 0xe0, 0x1d, 0x25,
		0x4e, 0x37, 0xda, 0x9b, 0x3c, 0xfa, 0xc2, 0x3e, 0x75, 0xbb, 0x7a, 0x4b, 0x6f, 0x38, 0x86, 0x65,
		0x4a, 0x71, 0xc1, 0x92, 0x4c, 0x71, 0x41, 0xae, 0x46, 0xba, 0xc1, 0x24, 0x0a, 0x75, 0x41, 0x9e,
		0xd2, 0xa6, 0xbb, 0xa5, 0x0f, 0x5e, 0x29, 0xcd, 0xe3, 0xca, 0x1e, 0x06, 0x39, 0xe1, 0x0a, 0x97,
		0x7c, 0xc6, 0xa0, 0x30, 0xc7, 0xf0, 0x2b, 0x7b, 0x4c, 0xe7, 0xf9, 0x9a, 0xc3, 0xe6, 0x54, 0x8a,
		0x34, 0x0a, 0x05, 0x37, 0xb5, 0x08, 0x20, 0x27, 0x78, 0x4c, 0x3a, 0xaf, 0x54, 0x82, 0x9b, 0x5a,
		0x1b, 0x76, 0xc7, 0xe7, 0xf1, 0x61, 0xd1, 0x78, 0xf8, 0x82, 0xc3, 0xf3, 0x27, 0x95, 0x30, 0x7d,
		0x0c, 0xce, 0x60, 0xe0, 0xbb, 0x4a, 0xe0, 0xbb, 0x36, 0x3e, 0x83, 0x99, 0xec, 0x16, 0x79, 0x34,
		0x5d, 0xfa, 0x34, 0x39, 0x8c, 0xd6, 0x1e, 0x18, 0x2d, 0x30, 0x5a, 0x65, 0x64, 0xb4, 0x36, 0xdd,
		0xd2, 0xd9, 0x83, 0xbc, 0x9e, 0xb4, 0xd4, 0xf5, 0x81, 0xf1, 0xce, 0x9e, 0x2b, 0x77, 0x06, 0xfe,
		0x5e, 0x49, 0x67, 0xe0, 0x8f, 0x30, 0x03, 0x5f, 0xc5, 0x0c, 0xfc, 0xd1, 0xd6, 0xce, 0xc0, 0x97,
		0xe5, 0x3e, 0xb2, 0x07, 0x6e, 0x58, 0x1c, 0xf5, 0xdb, 0x4d, 0xb0, 0x51, 0xd1, 0x14, 0x93, 0x5b,
		0x21, 0x73, 0x2f, 0x94, 0x6e, 0x86, 0xdc, 0xdd, 0x50, 0xbb, 0x1d, 0x36, 0xf7, 0xc3, 0xe6, 0x86,
		0x38, 0xdc, 0x91, 0x5c, 0xb7, 0x24, 0xd9, 0x3d, 0x91, 0xb9, 0xa9, 0xec, 0xc1, 0x7d, 0xd1, 0xf3,
		0x46, 0xda, 0xc0, 0x1b, 0x0e, 0xbf, 0x7a, 0xbd, 0xbf, 0x97, 0x08, 0x61, 0x3a, 0x23, 0x9d, 0xef,
		0xb2, 0xdf, 0xbd, 0x01, 0x22, 0x8b, 0x92, 0x53, 0x08, 0xc0, 0xee, 0xf8, 0x38, 0x1c, 0x20, 0x9b,
		0x23, 0xe4, 0x72, 0x88, 0xec, 0x8e, 0x91, 0xdd, 0x41, 0x72, 0x3a, 0x4a, 0x1a, 0x87, 0x49, 0xe4,
		0x38, 0x33, 0xc1, 0x48, 0x2b, 0x7c, 0xf8, 0xed, 0x6e, 0x91, 0x77, 0xdf, 0xfd, 0xb7, 0x68, 0xed,
		0x88, 0x70, 0x8d, 0x39, 0x2b, 0xfe, 0x9c, 0x23, 0x41, 0x69, 0x57, 0xe1, 0xb9, 0xad, 0x42, 0xf2,
		0x91, 0xf5, 0x93, 0xeb, 0x90, 0x1d, 0x65, 0xf3, 0x6d, 0x4e, 0x02, 0x15, 0xcc, 0x62, 0xbf, 0x2a,
		0xcc, 0x01, 0xa8, 0x01, 0xa8, 0x01, 0xa8, 0x01, 0xa8, 0x01, 0xa8, 0x01, 0xa8, 0x01, 0xa8, 0x51,
		0x06, 0xa8, 0x11, 0x8f, 0x87, 0x5e, 0x22, 0xb4, 0xab, 0x88, 0x0b, 0x63, 0x2c, 0x2c, 0x48, 0x64,
		0x56, 0x32, 0x6f, 0x69, 0x3c, 0xb9, 0x48, 0xda, 0x0a, 0x85, 0x66, 0xbb, 0x5d, 0x02, 0x74, 0x01,
		0x74, 0x01, 0x74, 0x01, 0x74, 0x15, 0x06, 0x74, 0x7d, 0x0d, 0xc3, 0xa1, 0xf0, 0x02, 0x0e, 0xd0,
		0xb5, 0x07, 0x84, 0x03, 0x84, 0xb3, 0x16, 0xc2, 0x19, 0x73, 0x23, 0x9c, 0x31, 0x10, 0x0e, 0x10,
		0x0e, 0x10, 0x0e, 0x10, 0x0e, 0x10, 0x0e, 0x10, 0x0e, 0x10, 0x0e, 0x10, 0x0e, 0x31, 0xc2, 0x49,
		0xfb, 0xfd, 0xfb, 0x81, 0x36, 0xee, 0x8f, 0x78, 0x91, 0xce, 0xe2, 0xc2, 0x40, 0x3c, 0x40, 0x3c,
		0x40, 0x3c, 0x40, 0x3c, 0x40, 0x3c, 0x40, 0x3c, 0x40, 0x3c, 0x40, 0x3c, 0xf2, 0x11, 0x8f, 0x1f,
		0xf7, 0xbc, 0xa8, 0xcf, 0x80, 0x70, 0x66, 0x0b, 0x01, 0xd1, 0x00, 0xd1, 0x00, 0xd1, 0x00, 0xd1,
		0x00, 0xd1, 0x00, 0xd1, 0x00, 0xd1, 0x00, 0xd1, 0x48, 0x17, 0x0b, 0x7f, 0xb1, 0x2f, 0xca, 0x7c,
		0x11, 0xcb, 0x11, 0xcb, 0x11, 0xcb, 0x8b, 0x1b, 0xcb, 0x51, 0xe6, 0x0b, 0x78, 0x01, 0x78, 0xf1,
		0x4c, 0x78, 0xf1, 0x23, 0xd1, 0xae, 0xc3, 0x11, 0x07, 0xac, 0x98, 0xad, 0x04, 0x38, 0x01, 0x38,
		0x01, 0x38, 0x01, 0x38, 0x51, 0x18, 0x38, 0xe1, 0x8f, 0x34, 0xaf, 0xdf, 0x9f, 0x04, 0x0d, 0x0e,
		0x44, 0xf1, 0x81, 0x70, 0x8d, 0x99, 0xcc, 0xbe, 0x90, 0x9a, 0x2c, 0xed, 0x96, 0x7f, 0xa4, 0x99,
		0x6f, 0x35, 0x06, 0xdd, 0x2c, 0xe9, 0xe8, 0x3d, 0xc3, 0x5a, 0x1d, 0x2f, 0x49, 0x44, 0x14, 0x90,
		0xab, 0x2b, 0x5b, 0xf0, 0xf5, 0x97, 0x5d, 0xed, 0xc3, 0xe5, 0xcf, 0x2f, 0x7b, 0xda, 0x87, 0xcb,
		0xe9, 0x5f, 0xf7, 0xd2, 0xff, 0xfd, 0xb3, 0x7f, 0xf7, 0x73, 0xff, 0xcb, 0xae, 0x56, 0x9b, 0xbd,
		0xba, 0x7f, 0xf0, 0x65, 0x57, 0x3b, 0xb8, 0x7c, 0xf3, 0xfa, 0xaf, 0xbf, 0xde, 0xbe, 0xf4, 0x77,
		0xde, 0xfc, 0xf3, 0xee, 0xae, 0x4a, 0xfe, 0x71, 0x2e, 0x39, 0xd4, 0x63, 0x75, 0x8d, 0x4f, 0xec,
		0x3a, 0xfa, 0xdf, 0xd7, 0x5c, 0x5a, 0x7a, 0xf3, 0x5f, 0x0c, 0x7a, 0x22, 0x5d, 0xe1, 0xee, 0x8f,
		0x2d, 0x72, 0x73, 0x87, 0x70, 0x73, 0xb2, 0xdc, 0x5c, 0xba, 0x1b, 0x3c, 0x6d, 0x50, 0xd7, 0x4e,
		0x2f, 0xff, 0xd9, 0xfb, 0xa3, 0x76, 0x77, 0xfc, 0xe6, 0x9f, 0xa3, 0xbb, 0xc7, 0x2f, 0xfe, 0x5c,
		0xf5, 0x63, 0x7b, 0x7f, 0x1c, 0xdd, 0x1d, 0x3f, 0xf1, 0x9d, 0xc3, 0xbb, 0xe3, 0x67, 0x3e, 0xe3,
		0xe0, 0xee, 0xf5, 0xd2, 0x8f, 0x4e, 0x5e, 0xdf, 0x7f, 0xea, 0x17, 0x6a, 0x4f, 0xfc, 0xc2, 0xbb,
		0xa7, 0x7e, 0xe1, 0xdd, 0x13, 0xbf, 0xf0, 0xe4, 0x5b, 0xda, 0x7f, 0xe2, 0x17, 0x0e, 0xee, 0x7e,
		0x2e, 0xfd, 0xfc, 0xeb, 0xd5, 0x3f, 0x7a, 0x78, 0xf7, 0xe6, 0xe7, 0x53, 0xdf, 0x3b, 0xba, 0xfb,
		0x79, 0xfc, 0xe6, 0x0d, 0x1c, 0xff, 0xc6, 0x8e, 0x1f, 0x66, 0xcb, 0x6f, 0xb6, 0xc5, 0x0f, 0x84,
		0xaf, 0x8a, 0xf5, 0xbe, 0x41, 0x35, 0x6e, 0x25, 0xd5, 0x38, 0xf2, 0x92, 0x6b, 0x2d, 0x16, 0x43,
		0x91, 0xf6, 0x77, 0xd6, 0xae, 0xa2, 0x70, 0xcc, 0x40, 0x3b, 0xae, 0x5c, 0x15, 0x14, 0x24, 0x28,
		0x48, 0x50, 0x90, 0xa0, 0x20, 0x0b, 0x43, 0x41, 0x6e, 0xd9, 0x89, 0xe6, 0xdb, 0xb7, 0x3b, 0xcb,
		0xff, 0xad, 0xf2, 0xd4, 0xf1, 0xca, 0x57, 0xe7, 0xa7, 0x9d, 0xe9, 0x3f, 0xd6, 0x9e, 0x3a, 0x04,
		0x18, 0x52, 0x4e, 0x18, 0x12, 0xc6, 0x89, 0xa6, 0xaa, 0x91, 0xe2, 0xaf, 0x16, 0x07, 0x28, 0x01,
		0x28, 0x01, 0x28, 0x01, 0x28, 0x01, 0x28, 0x51, 0x03, 0x4a, 0x50, 0x66, 0x05, 0xd0, 0x51, 0xc9,
		0xfd, 0x60, 0x0b, 0x62, 0x45, 0xb2, 0xcf, 0x3e, 0x4e, 0xc7, 0x69, 0xa6, 0x7f, 0xee, 0x4c, 0x07,
		0x7f, 0x6d, 0x34, 0x0d, 0x99, 0x5e, 0xa7, 0x12, 0xf5, 0x59, 0x15, 0x01, 0x6d, 0x8f, 0xcd, 0xcc,
		0x53, 0x3f, 0x5e, 0x08, 0xc3, 0x90, 0x30, 0x0c, 0x49, 0x35, 0x74, 0xc4, 0x30, 0x24, 0xb6, 0x98,
		0x41, 0x36, 0x0c, 0x89, 0x68, 0x76, 0xdb, 0xd2, 0x66, 0x22, 0x99, 0xe1, 0x46, 0xec, 0xbe, 0x90,
		0x21, 0x23, 0x43, 0x46, 0x86, 0x9c, 0xc7, 0x5c, 0x88, 0xca, 0x1d, 0x66, 0x0b, 0xf8, 0x7d, 0x11,
		0x24, 0xfe, 0xe0, 0xd6, 0x0f, 0xae, 0xb4, 0x11, 0xfd, 0xe6, 0x7c, 0xb0, 0x41, 0x57, 0xac, 0x4d,
		0x6c, 0x67, 0xb4, 0x04, 0x23, 0x9b, 0x1b, 0xe5, 0x74, 0xa7, 0xec, 0x6e, 0x95, 0xdb, 0xbd, 0x2a,
		0x73, 0xb3, 0xca, 0xdc, 0xad, 0x0a, 0xb7, 0x4b, 0xeb, 0x7e, 0x89, 0xdd, 0x70, 0x26, 0x30, 0x72,
		0xc2, 0x72, 0xd9, 0x47, 0x8e, 0x34, 0x36, 0x63, 0xe4, 0xb8, 0xd7, 0xf1, 0x58, 0x94, 0x3c, 0x35,
		0x89, 0x3c, 0x1e, 0xa4, 0xb2, 0x74, 0xdf, 0x83, 0xd5, 0x8f, 0x54, 0x98, 0xeb, 0xa1, 0xef, 0xa3,
		0x10, 0x73, 0x85, 0x69, 0xb6, 0x30, 0xd7, 0x05, 0x83, 0x9d, 0xec, 0x97, 0xf6, 0x67, 0xdf, 0x7d,
		0xf7, 0x65, 0x57, 0xdb, 0xbf, 0x64, 0x28, 0x13, 0x9e, 0x7f, 0x5d, 0x72, 0xea, 0x53, 0x45, 0xd9,
		0x70, 0xb6, 0x3a, 0xdf, 0xbd, 0x91, 0x27, 0xd5, 0xca, 0x51, 0x47, 0x9b, 0x29, 0x96, 0x65, 0xa5,
		0xbb, 0x3f, 0xb6, 0xd8, 0xcf, 0x1e, 0xc2, 0xcf, 0x12, 0xfb, 0x59, 0x14, 0xf4, 0x2b, 0x2a, 0xe8,
		0xdf, 0x79, 0xbd, 0x37, 0xf1, 0x5e, 0xef, 0xa7, 0xee, 0x6c, 0xef, 0x72, 0xc9, 0xcb, 0xa5, 0x7f,
		0x22, 0x0e, 0xd1, 0xc5, 0x21, 0x58, 0x7d, 0x6e, 0xad, 0x7e, 0xfb, 0xa2, 0x34, 0xae, 0xb1, 0xfe,
		0x9a, 0xaf, 0xe0, 0xa9, 0x0c, 0xc9, 0xd6, 0x63, 0xaf, 0x10, 0xa1, 0x37, 0x84, 0x3b, 0x94, 0x02,
		0xad, 0x58, 0x47, 0x7d, 0x25, 0xc9, 0xa3, 0xb2, 0x07, 0x92, 0xca, 0x12, 0x3a, 0x1b, 0xa0, 0x28,
		0x7e, 0x8e, 0x13, 0x2f, 0x61, 0x28, 0x73, 0x9e, 0x2e, 0x53, 0xf0, 0xe3, 0xda, 0x7d, 0x1c, 0xd7,
		0xfe, 0x7e, 0x21, 0x1c, 0xd7, 0x4a, 0x73, 0xcb, 0x38, 0xae, 0x5d, 0x2d, 0x18, 0x1c, 0xd7, 0x52,
		0xb8, 0x4f, 0x1c, 0xd7, 0xe6, 0xd8, 0xad, 0x72, 0xbb, 0x57, 0x65, 0x6e, 0x56, 0x99, 0xbb, 0x55,
		0xe1, 0x76, 0x79, 0x32, 0x52, 0x1c, 0xd7, 0x4a, 0x41, 0x97, 0x38, 0xae, 0x95, 0xa1, 0x38, 0x1c,
		0xd7, 0x52, 0x2f, 0x8c, 0xe3, 0x5a, 0x1a, 0x7d, 0xe2, 0xb8, 0x16, 0xc7, 0xb5, 0x05, 0xf2, 0xb3,
		0x38, 0xae, 0xa5, 0xf6, 0xb3, 0x38, 0xb8, 0xc2, 0x71, 0x6d, 0x49, 0xe3, 0x10, 0xac, 0x1e, 0xc7,
		0xb5, 0x38, 0xae, 0x55, 0xfd, 0xfe, 0x71, 0xca, 0xb8, 0x6a, 0x9d, 0xfc, 0x9d, 0x32, 0x4e, 0x0f,
		0xbf, 0x4a, 0x7c, 0xc8, 0x98, 0x78, 0xd1, 0x95, 0x48, 0x62, 0xfa, 0x63, 0xc6, 0xf9, 0x42, 0xb8,
		0x17, 0xba, 0x1a, 0x3b, 0xe0, 0xa0, 0x31, 0xff, 0x0c, 0x38, 0x0e, 0x1a, 0x73, 0x13, 0xb2, 0xc8,
		0x0f, 0x1a, 0xa7, 0xfe, 0x8a, 0xef, 0x70, 0x71, 0xb6, 0x1e, 0xcf, 0x81, 0xe2, 0x1e, 0x0e, 0x14,
		0xf3, 0xeb, 0x3e, 0xb9, 0xdd, 0xa8, 0x32, 0x77, 0xaa, 0xcc, 0xad, 0xaa, 0x70, 0xaf, 0x3c, 0x39,
		0x13, 0xf5, 0x81, 0x22, 0xb5, 0xdb, 0xcd, 0x16, 0x22, 0xee, 0x56, 0xf2, 0xe4, 0xe6, 0x26, 0xed,
		0x5e, 0xa2, 0xc8, 0x1d, 0xb3, 0xbb, 0x65, 0x15, 0xee, 0x59, 0x99, 0x9b, 0x56, 0xe5, 0xae, 0x95,
		0xbb, 0x6d, 0xe5, 0xee, 0x5b, 0xa5, 0x1b, 0xe7, 0xa3, 0xc0, 0x2a, 0x7c, 0xc7, 0x61, 0x6c, 0xee,
		0x3d, 0x5b, 0xb0, 0x2f, 0xe2, 0xc4, 0x0f, 0xf8, 0x6e, 0x34, 0xac, 0xf4, 0x14, 0x8b, 0x6f, 0x82,
		0xd9, 0x72, 0x79, 0x0a, 0xfc, 0x94, 0x07, 0x02, 0x95, 0x01, 0x41, 0x79, 0x60, 0x50, 0x1d, 0x20,
		0x72, 0x13, 0x28, 0x72, 0x13, 0x30, 0xf2, 0x10, 0x38, 0x78, 0x03, 0x08, 0x73, 0x20, 0xc9, 0x04,
		0xcc, 0x56, 0x80, 0xf8, 0xe4, 0x6e, 0xe7, 0x2c, 0x48, 0x7c, 0x12, 0xdf, 0x7f, 0x50, 0xb0, 0x36,
		0x6b, 0xc1, 0xe2, 0xe3, 0x2f, 0x35, 0x1e, 0xae, 0xa2, 0xbe, 0xa0, 0xf1, 0x49, 0x13, 0x78, 0xaf,
		0xf0, 0x3d, 0xa8, 0xaa, 0x49, 0x58, 0x7a, 0x23, 0x25, 0x2a, 0x80, 0x7c, 0xfc, 0x75, 0xa9, 0x52,
		0xff, 0x2a, 0x0b, 0x53, 0x96, 0xde, 0x4d, 0xc9, 0x0a, 0x26, 0x97, 0x0c, 0x41, 0xc9, 0xca, 0x77,
		0x7f, 0x94, 0x38, 0x0e, 0x1c, 0x22, 0x0e, 0xe4, 0x2c, 0x0e, 0xa0, 0x54, 0x0d, 0x05, 0x9a, 0x88,
		0x93, 0xcf, 0x8a, 0x93, 0xd8, 0x25, 0x28, 0xe8, 0xcc, 0x0d, 0x8a, 0x78, 0xb5, 0xdd, 0x9f, 0x93,
		0x9b, 0x1e, 0x61, 0xee, 0xe7, 0xb3, 0xb4, 0xbe, 0xb2, 0xfe, 0x3e, 0xea, 0x0c, 0x8b, 0x51, 0xc5,
		0x55, 0xbf, 0xaf, 0xee, 0x50, 0xc3, 0xef, 0xe3, 0x2c, 0x83, 0x18, 0x2d, 0xe0, 0x2c, 0x03, 0x67,
		0x19, 0x38, 0xcb, 0x50, 0x06, 0x0f, 0xca, 0x77, 0x96, 0x11, 0x27, 0x91, 0x1f, 0x5c, 0xa9, 0x3c,
		0xc8, 0x78, 0x0f, 0x38, 0x06, 0x38, 0x56, 0x58, 0x38, 0x36, 0xd2, 0x92, 0x64, 0xa8, 0x10, 0x92,
		0x4d, 0xd7, 0x07, 0x2c, 0x03, 0x2c, 0x03, 0x2c, 0x03, 0x2c, 0x03, 0x2c, 0xdb, 0x12, 0x58, 0x36,
		0xf6, 0x83, 0xe4, 0xbd, 0x42, 0x54, 0x76, 0xa0, 0x60, 0x69, 0xdb, 0x0b, 0xae, 0x4a, 0x59, 0x5e,
		0xd2, 0xf6, 0x03, 0x65, 0xee, 0x35, 0x7b, 0x13, 0x17, 0xde, 0x70, 0x2c, 0xf8, 0x63, 0xeb, 0xd2,
		0xfb, 0x38, 0x8d, 0xa6, 0xf7, 0xaa, 0x9b, 0xfe, 0x95, 0x9f, 0x5e, 0x22, 0x56, 0xfd, 0x86, 0x4c,
		0x71, 0xe5, 0x25, 0xfe, 0xb7, 0x89, 0x6c, 0x06, 0xde, 0x30, 0x16, 0xca, 0xde, 0xcd, 0x9d, 0xc2,
		0x63, 0xac, 0xb6, 0xf7, 0x23, 0x3f, 0x26, 0xba, 0x7f, 0x70, 0x00, 0x23, 0xcd, 0xab, 0x91, 0xe2,
		0x10, 0x09, 0xac, 0x05, 0x58, 0x8b, 0x7c, 0xb3, 0x16, 0xb1, 0xa2, 0x6b, 0x65, 0x19, 0xe9, 0x38,
		0x5d, 0x1f, 0xac, 0x05, 0x58, 0x0b, 0xb0, 0x16, 0x60, 0x2d, 0xc0, 0x5a, 0x6c, 0x09, 0x6b, 0xe1,
		0x8f, 0x34, 0xaf, 0xdf, 0x9f, 0x04, 0x6c, 0xdc, 0x8c, 0x29, 0x07, 0x75, 0xf1, 0xe0, 0x66, 0x8c,
		0x3a, 0xdd, 0x2f, 0xd9, 0x00, 0x4a, 0xa2, 0x19, 0xaf, 0xc6, 0xa0, 0xb2, 0xb7, 0x4c, 0x37, 0x60,
		0x70, 0xd1, 0xa5, 0x54, 0x6e, 0xfd, 0x10, 0x6e, 0x3d, 0x6f, 0x6e, 0x1d, 0x35, 0xfc, 0x8a, 0x6a,
		0xf8, 0x11, 0xe8, 0x70, 0x85, 0xa5, 0xc4, 0xe6, 0x8f, 0xbb, 0x29, 0x5b, 0xf6, 0x39, 0x71, 0xac,
		0xb0, 0xfd, 0xc7, 0x0a, 0x5b, 0xd5, 0x4c, 0x4c, 0x91, 0x01, 0xe5, 0xb0, 0xcb, 0xfc, 0xac, 0xf7,
		0xf9, 0xec, 0xff, 0xa4, 0xa3, 0xad, 0xf9, 0x4d, 0x8a, 0xc1, 0x9c, 0x38, 0x2f, 0x52, 0xf1, 0x5f,
		0xa0, 0x62, 0x3e, 0xeb, 0x42, 0x17, 0x50, 0xd2, 0x85, 0xd1, 0x05, 0x14, 0x5d, 0x40, 0x0b, 0x1e,
		0xb8, 0xd9, 0xcf, 0xa6, 0xb2, 0xdd, 0x3a, 0x01, 0x78, 0x91, 0x18, 0xa8, 0x18, 0x8c, 0x77, 0xc4,
		0x3b, 0x18, 0x2f, 0xc5, 0x26, 0x6f, 0xdf, 0xce, 0xb0, 0xc0, 0x8e, 0xdf, 0x07, 0x1c, 0x78, 0x01,
		0xc2, 0x4b, 0xa7, 0xf6, 0xb0, 0x23, 0x82, 0xe9, 0xb2, 0x5b, 0xde, 0x1a, 0x7c, 0x1f, 0xa0, 0x00,
		0xa0, 0x00, 0xa0, 0x00, 0xa0, 0xe0, 0x91, 0x20, 0xd1, 0x1a, 0x1c, 0x15, 0x90, 0xdb, 0x16, 0x10,
		0x94, 0x07, 0x06, 0xd5, 0x01, 0x22, 0x37, 0x81, 0x22, 0x37, 0x01, 0x23, 0x0f, 0x81, 0x83, 0x37,
		0x80, 0x30, 0x07, 0x12, 0x75, 0x59, 0xe6, 0xd2, 0x6e, 0x47, 0x6b, 0x70, 0x15, 0x3b, 0x0b, 0xad,
		0xc1, 0x1f, 0x9b, 0x00, 0x0a, 0x65, 0xd0, 0x1a, 0x5c, 0x99, 0xfe, 0xd1, 0x1a, 0x1c, 0xad, 0xc1,
		0xd1, 0x1a, 0x1c, 0x71, 0x00, 0x05, 0x93, 0x68, 0x7a, 0x8c, 0xd6, 0xe0, 0xc5, 0x8a, 0x93, 0xd8,
		0x25, 0x68, 0x0d, 0x9e, 0x1b, 0x14, 0xb1, 0xed, 0xe5, 0x97, 0xe8, 0x50, 0x2d, 0x1b, 0x7d, 0xa1,
		0x43, 0x35, 0x75, 0xd0, 0x02, 0xa5, 0x0e, 0x4a, 0x1d, 0x94, 0xba, 0xb2, 0x28, 0x85, 0x0e, 0xd5,
		0x0a, 0x92, 0x68, 0xa0, 0x82, 0xcd, 0x51, 0x01, 0x1a, 0x25, 0x03, 0x1d, 0x00, 0x1d, 0x00, 0x1d,
		0x00, 0x1d, 0x00, 0x1d, 0x48, 0xdc, 0xed, 0x68, 0x94, 0xcc, 0xfd, 0x85, 0x46, 0xc9, 0x68, 0x94,
		0xbc, 0x7a, 0x4b, 0xa2, 0x51, 0x32, 0x1a, 0x25, 0xc3, 0x48, 0x73, 0x09, 0x0c, 0xd4, 0xad, 0x0a,
		0x4a, 0x7d, 0x73, 0xa3, 0x45, 0xbf, 0x5e, 0x24, 0xcf, 0x48, 0x9e, 0x91, 0x3c, 0x23, 0x79, 0x46,
		0xf2, 0x2c, 0x73, 0xb7, 0xa3, 0x5f, 0x2f, 0xfa, 0xf5, 0xa2, 0xb1, 0x23, 0xfa, 0xf5, 0xf2, 0x25,
		0x03, 0x28, 0xb7, 0x9b, 0xbd, 0x1b, 0xf4, 0xeb, 0xdd, 0x3a, 0xfe, 0x07, 0xfd, 0x7a, 0xe1, 0xd6,
		0x57, 0xba, 0x75, 0x14, 0xd6, 0xa2, 0x5f, 0x6f, 0xd9, 0x03, 0x1d, 0xcc, 0x1f, 0xfd, 0x7a, 0xb7,
		0x8c, 0x2f, 0xa8, 0x6c, 0x33, 0xbb, 0x8d, 0xb6, 0xb1, 0x12, 0xd6, 0xcd, 0x7d, 0xdb, 0xd8, 0x69,
		0xfb, 0xb1, 0x6d, 0x69, 0x13, 0xf7, 0xaa, 0xc0, 0xb6, 0x5a, 0xfd, 0x53, 0xdc, 0xb2, 0xdc, 0x60,
		0xa8, 0xb6, 0xfc, 0x38, 0xa9, 0x27, 0x09, 0x4f, 0xeb, 0xa5, 0x6a, 0xdb, 0x0f, 0xf4, 0xa1, 0xb8,
		0x11, 0x01, 0xd7, 0xe9, 0x6f, 0xb5, 0xed, 0xfd, 0x58, 0x58, 0x71, 0xef, 0x7d, 0xad, 0x76, 0x78,
		0x54, 0xab, 0xed, 0x1e, 0xbd, 0x3b, 0xda, 0xfd, 0x70, 0x70, 0xb0, 0x77, 0xb8, 0xc7, 0x70, 0x26,
		0x5e, 0xb5, 0xa2, 0xbe, 0x88, 0x44, 0xff, 0x64, 0xa2, 0xd3, 0x60, 0x3c, 0x1c, 0x72, 0x2e, 0x79,
		0x1e, 0x8b, 0x88, 0xe5, 0x78, 0x9b, 0x7a, 0x4b, 0x30, 0xbb, 0xed, 0xdc, 0xbb, 0xeb, 0x2a, 0x4b,
		0x1f, 0xcc, 0x68, 0xdc, 0x4b, 0x82, 0x19, 0x9f, 0x60, 0x4e, 0x3f, 0x94, 0x31, 0xfb, 0x4c, 0x6e,
		0x27, 0x7d, 0xe3, 0xa7, 0xd9, 0x47, 0x9a, 0xbd, 0xe0, 0xda, 0xe3, 0xa1, 0x70, 0xeb, 0xe9, 0x67,
		0x70, 0xf5, 0xfb, 0xcf, 0xf0, 0x31, 0x12, 0xae, 0x33, 0x7d, 0xeb, 0xaf, 0x8a, 0xe9, 0xf9, 0x69,
		0x9e, 0x4c, 0xb4, 0x71, 0xb8, 0x36, 0x4c, 0x7e, 0x37, 0x0a, 0x8d, 0x99, 0xc9, 0x37, 0x02, 0xb9,
		0x4f, 0x94, 0x6c, 0x4e, 0xd4, 0x66, 0x94, 0x3f, 0xf3, 0x21, 0x70, 0xac, 0xd2, 0x1d, 0xa9, 0x5c,
		0xd3, 0x96, 0x67, 0x80, 0x12, 0x8d, 0x8f, 0xa8, 0x09, 0x33, 0x69, 0xb3, 0x65, 0xa2, 0xa6, 0xca,
		0x64, 0xcd, 0x93, 0x29, 0xab, 0x8c, 0xc8, 0xab, 0x88, 0xa8, 0xab, 0x84, 0xd8, 0xaa, 0x80, 0xd8,
		0xaa, 0x7c, 0x38, 0xaa, 0x78, 0xf2, 0x1d, 0xcc, 0xa8, 0x9a, 0x0c, 0x57, 0xfb, 0xa2, 0xe7, 0x8d,
		0xb4, 0x81, 0x37, 0x1c, 0x7e, 0xf5, 0x7a, 0x7f, 0x2f, 0x85, 0x2e, 0x3a, 0x23, 0xbd, 0x6f, 0x24,
		0xfc, 0xeb, 0x37, 0x40, 0x64, 0x51, 0xb4, 0x65, 0x99, 0xe4, 0xe5, 0x97, 0x1c, 0x65, 0x96, 0x6c,
		0xe5, 0x94, 0x5c, 0x65, 0x93, 0xec, 0xe5, 0x91, 0xec, 0x65, 0x90, 0x9c, 0xe5, 0x8e, 0xc5, 0x4a,
		0x2a, 0xc9, 0xcb, 0x14, 0x19, 0x47, 0xb5, 0x70, 0x8c, 0x66, 0xc9, 0x46, 0xb1, 0x3c, 0x27, 0x79,
		0x99, 0xcd, 0x6a, 0x49, 0xd3, 0x84, 0xa2, 0xe4, 0xae, 0x7f, 0x50, 0xc5, 0x52, 0x55, 0x21, 0x14,
		0x91, 0x13, 0x91, 0x13, 0x91, 0x13, 0x91, 0x13, 0x91, 0x13, 0x91, 0xb3, 0x90, 0x91, 0x73, 0x81,
		0xc9, 0xe4, 0x09, 0x99, 0xa4, 0xd4, 0xe9, 0x34, 0x6d, 0x17, 0x03, 0x6f, 0x3c, 0x4c, 0x48, 0xeb,
		0xd7, 0xaa, 0xe9, 0x11, 0x29, 0x8d, 0xf5, 0x5c, 0x02, 0x43, 0x00, 0x43, 0x00, 0x43, 0x00, 0x43,
		0x14, 0x06, 0x43, 0x7c, 0x0d, 0xc3, 0xa1, 0xf0, 0x02, 0x0e, 0x0c, 0xb1, 0x87, 0x80, 0x3d, 0x8d,
		0x9f, 0x63, 0xee, 0x80, 0x3d, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46,
		0xc0, 0x46, 0xc0, 0x7e, 0x69, 0xc0, 0xbe, 0x19, 0x0d, 0x63, 0xcd, 0x0f, 0xb4, 0x71, 0x7f, 0xc4,
		0x1b, 0xb8, 0x17, 0x17, 0x46, 0x00, 0x47, 0x00, 0x47, 0x00, 0x47, 0x00, 0x47, 0x00, 0x47, 0x00,
		0x47, 0x00, 0x7f, 0x46, 0x00, 0xf7, 0xe3, 0x9e, 0x17, 0xf5, 0x19, 0x02, 0xf6, 0x6c, 0x21, 0x04,
		0x68, 0x04, 0x68, 0x04, 0x68, 0x04, 0x68, 0x04, 0x68, 0x04, 0x68, 0x04, 0xe8, 0xdf, 0xcb, 0x80,
		0xbf, 0xee, 0x0b, 0x15, 0x5f, 0x08, 0x4d, 0x08, 0x4d, 0x08, 0x4d, 0xc5, 0x0d, 0x4d, 0xa8, 0xf8,
		0x2a, 0x6f, 0xb4, 0xfc, 0x91, 0x68, 0xd7, 0xe1, 0x88, 0x23, 0x4a, 0xce, 0x56, 0x42, 0x74, 0x44,
		0x74, 0x44, 0x74, 0x44, 0x74, 0x2c, 0x4c, 0x74, 0x64, 0x69, 0x6c, 0xce, 0xd1, 0xc0, 0x9c, 0xa7,
		0x51, 0x39, 0x43, 0x6f, 0x1d, 0x45, 0x8d, 0xc7, 0x39, 0x3b, 0xd1, 0xb2, 0x77, 0x9c, 0xdd, 0xa2,
		0x86, 0xe1, 0x97, 0x1c, 0xea, 0x51, 0xd1, 0x17, 0x75, 0xcb, 0x1a, 0x7d, 0x5f, 0x16, 0xb9, 0xa1,
		0x18, 0xaf, 0x9b, 0x3b, 0x84, 0x9b, 0x93, 0xe5, 0xe6, 0xd0, 0x41, 0x78, 0x6b, 0x1b, 0x68, 0x6f,
		0xbd, 0xe3, 0x87, 0xd9, 0x6e, 0x65, 0xe3, 0xeb, 0xcb, 0x82, 0x36, 0x34, 0xbc, 0x2c, 0x31, 0x73,
		0x36, 0xf2, 0x92, 0x6b, 0x2d, 0x16, 0x43, 0x91, 0xf6, 0x57, 0xd3, 0xae, 0xa2, 0x70, 0xcc, 0xc0,
		0xa2, 0xad, 0x5c, 0x15, 0x8c, 0x1a, 0x18, 0x35, 0x30, 0x6a, 0x60, 0xd4, 0x0a, 0xc3, 0xa8, 0x6d,
		0xd9, 0x79, 0xd3, 0xdb, 0xb7, 0x3b, 0xcb, 0xff, 0xad, 0xf2, 0xd4, 0xf1, 0xca, 0x57, 0xe7, 0x67,
		0x51, 0xe9, 0x3f, 0x34, 0xbf, 0x5f, 0xe6, 0xf3, 0xa8, 0x51, 0x18, 0x27, 0x9a, 0xaa, 0x06, 0x3e,
		0xbf, 0x5a, 0x1c, 0x31, 0x16, 0x31, 0x16, 0x31, 0x16, 0x31, 0x16, 0x31, 0x56, 0x4d, 0x8c, 0xdd,
		0xd6, 0x9a, 0x0e, 0xf4, 0x6e, 0x57, 0xda, 0xbb, 0x9d, 0x60, 0x66, 0x91, 0xc4, 0x6e, 0xe8, 0xaf,
		0x72, 0x64, 0x14, 0x54, 0xc6, 0xa0, 0xde, 0x08, 0xaa, 0x52, 0x9b, 0xce, 0x6f, 0xd8, 0xa8, 0x5f,
		0x8e, 0x2d, 0x6e, 0x6e, 0x39, 0x12, 0xac, 0xa6, 0xda, 0x9b, 0xa3, 0x4f, 0x39, 0xd6, 0x92, 0x85,
		0xb6, 0xd9, 0x73, 0x25, 0xd9, 0xb5, 0xdc, 0x9e, 0xfb, 0xd2, 0x21, 0x37, 0x05, 0xc4, 0x26, 0x83,
		0xd4, 0x54, 0x10, 0x9a, 0x1c, 0x32, 0x93, 0x43, 0x64, 0x4a, 0x48, 0x9c, 0xaf, 0x38, 0x21, 0xbb,
		0x47, 0x7e, 0x35, 0x16, 0xff, 0x37, 0x16, 0x41, 0x4f, 0x68, 0x7e, 0x9f, 0x70, 0x9c, 0xc7, 0xc2,
		0x22, 0x34, 0x43, 0x3d, 0x76, 0xa9, 0x86, 0x7a, 0xec, 0x62, 0xa8, 0x07, 0x5b, 0x0e, 0x8f, 0xa1,
		0x1e, 0xdb, 0x97, 0xe5, 0x90, 0xe5, 0xe4, 0x99, 0xb5, 0x8f, 0xfd, 0x20, 0x79, 0xb7, 0x4f, 0x61,
		0xee, 0x33, 0xdf, 0x42, 0x90, 0x81, 0x57, 0x6d, 0x2f, 0xb8, 0xa2, 0xab, 0x16, 0x25, 0x64, 0x40,
		0xda, 0x3e, 0xfd, 0x88, 0xc7, 0xea, 0x85, 0x37, 0x4c, 0xfb, 0xed, 0x11, 0x0f, 0x21, 0xad, 0x9e,
		0x46, 0xd3, 0x24, 0xa5, 0xe9, 0x5f, 0xf9, 0x1c, 0x53, 0x4f, 0xab, 0xa6, 0xb8, 0xf2, 0x12, 0xff,
		0x9b, 0x20, 0x1f, 0xfa, 0x49, 0x58, 0x9f, 0x57, 0x6d, 0x7b, 0x3f, 0xf8, 0x4c, 0xa0, 0xb6, 0xff,
		0xa1, 0xf6, 0xe1, 0xf0, 0x68, 0xff, 0xc3, 0x01, 0x6c, 0x21, 0x37, 0xc4, 0x1a, 0xcd, 0x53, 0x2f,
		0x4b, 0x4d, 0xd7, 0xdd, 0x5e, 0x85, 0x89, 0x16, 0xf6, 0xb4, 0x5e, 0x78, 0x33, 0x8a, 0x44, 0x1c,
		0x8b, 0xbe, 0x36, 0x14, 0xde, 0x60, 0xb2, 0xd8, 0x1d, 0x28, 0xb4, 0x72, 0x52, 0x68, 0x33, 0x2e,
		0x66, 0x8b, 0x58, 0x2b, 0x7f, 0xf4, 0xad, 0x26, 0x9f, 0xb3, 0x4a, 0x9f, 0x0a, 0xc6, 0x4a, 0x4a,
		0xe2, 0xf8, 0x77, 0xa2, 0xdd, 0x78, 0x49, 0xef, 0x1a, 0xc4, 0x95, 0x0a, 0xe2, 0x2a, 0x93, 0x3e,
		0xf8, 0xab, 0xe7, 0x3d, 0x50, 0x32, 0x0d, 0xbe, 0xb4, 0x25, 0xa4, 0xd2, 0xe1, 0x44, 0x4e, 0x66,
		0x7b, 0x58, 0x2b, 0x02, 0xe7, 0x03, 0xf2, 0x2a, 0xc7, 0xce, 0xa9, 0x18, 0x1c, 0x16, 0xe1, 0x60,
		0xda, 0x38, 0xf1, 0x83, 0x14, 0xb3, 0x66, 0x57, 0xd0, 0x18, 0x9a, 0x15, 0x2f, 0x2f, 0x8a, 0x02,
		0x3c, 0x6e, 0xb7, 0xc7, 0xed, 0xfe, 0xb8, 0xdc, 0x20, 0xbb, 0x3b, 0x64, 0x77, 0x8b, 0x0a, 0xdc,
		0x23, 0x31, 0x93, 0xb3, 0x05, 0x4d, 0x24, 0xbe, 0xd5, 0x34, 0x72, 0x2b, 0xe3, 0xb8, 0xba, 0xcb,
		0x76, 0x65, 0x97, 0xad, 0x23, 0xc1, 0x4e, 0xf6, 0x4b, 0xfb, 0xb3, 0xef, 0xbe, 0xfb, 0xb2, 0xab,
		0xed, 0x5f, 0x12, 0xde, 0x58, 0xbd, 0xa4, 0xd4, 0x0f, 0xe7, 0x0d, 0x55, 0xc6, 0x96, 0x04, 0x4f,
		0xaa, 0x89, 0xf2, 0x8a, 0xe6, 0x65, 0xa1, 0xfc, 0x19, 0x31, 0x03, 0x9c, 0xad, 0xc3, 0xc6, 0x04,
		0xd3, 0x85, 0x15, 0x9a, 0xe9, 0x1e, 0x4b, 0xb8, 0x75, 0xe6, 0xf3, 0xb5, 0x58, 0x24, 0x4a, 0x70,
		0xf3, 0xe2, 0xfa, 0x80, 0xd0, 0x80, 0xd0, 0x80, 0xd0, 0x80, 0xd0, 0x05, 0x85, 0xd0, 0xdb, 0x76,
		0xa3, 0x25, 0xec, 0x4d, 0xbc, 0x72, 0x7c, 0xdc, 0x17, 0x03, 0x3f, 0x10, 0xfd, 0xf4, 0x1f, 0xd9,
		0x8b, 0x0b, 0xf9, 0xc2, 0x2f, 0xbf, 0x91, 0xbd, 0x4e, 0x78, 0xeb, 0x05, 0x60, 0x65, 0x2b, 0xc1,
		0x4a, 0xdc, 0xe3, 0x98, 0x3b, 0x36, 0x59, 0x05, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0xa3,
		0xa0, 0xc0, 0x83, 0xd0, 0x87, 0x2d, 0xfa, 0x31, 0xc2, 0xf2, 0x41, 0xe2, 0x62, 0xde, 0xf9, 0x17,
		0x43, 0x4f, 0x44, 0x8e, 0xe2, 0xde, 0x6c, 0x31, 0xa6, 0x22, 0xdf, 0x6c, 0x3d, 0xee, 0x02, 0xcf,
		0x7b, 0x4b, 0xe7, 0x2a, 0xf4, 0x24, 0x76, 0x0a, 0x0f, 0x4d, 0x85, 0xa1, 0x08, 0x78, 0xc9, 0x54,
		0x0e, 0xdf, 0xc1, 0x56, 0x0a, 0x11, 0x96, 0xe8, 0x9f, 0x0e, 0xea, 0x18, 0xd9, 0xd8, 0x8b, 0xb2,
		0x31, 0x26, 0x92, 0x78, 0xbe, 0x12, 0xb2, 0x32, 0x64, 0x65, 0xc8, 0xca, 0x90, 0x95, 0x21, 0x2b,
		0x43, 0x56, 0x86, 0xac, 0x0c, 0x48, 0x1b, 0x59, 0x19, 0x6c, 0x05, 0x59, 0x59, 0xbe, 0xc2, 0x69,
		0xcb, 0x8f, 0x93, 0x7a, 0x92, 0x44, 0xb4, 0x21, 0xb5, 0xed, 0x07, 0xfa, 0x50, 0x4c, 0x60, 0x0d,
		0xb1, 0xc9, 0x4e, 0x76, 0xff, 0xc2, 0x4a, 0x7b, 0xef, 0x6b, 0xb5, 0xc3, 0xa3, 0x5a, 0x6d, 0xf7,
		0xe8, 0xdd, 0xd1, 0xee, 0x87, 0x83, 0x83, 0xbd, 0xc3, 0x3d, 0xca, 0x70, 0x6b, 0x45, 0x7d, 0x11,
		0x89, 0xfe, 0xc9, 0x6d, 0xf5, 0xb8, 0x12, 0x8c, 0x87, 0x43, 0x8e, 0xa5, 0xce, 0x63, 0x11, 0x91,
		0xee, 0x49, 0xf0, 0x01, 0x5b, 0xc9, 0x07, 0x5c, 0x87, 0x23, 0x6d, 0xe8, 0xdf, 0xf8, 0x0c, 0x84,
		0xc0, 0xfd, 0x52, 0x60, 0x04, 0xc0, 0x08, 0x80, 0x11, 0x00, 0x23, 0x50, 0x50, 0x46, 0x60, 0xec,
		0x07, 0xc9, 0x7b, 0x50, 0x02, 0xa0, 0x04, 0x90, 0xe6, 0x81, 0x12, 0xf8, 0x9d, 0xa9, 0xec, 0x1f,
		0x1c, 0xc0, 0x58, 0xc0, 0x09, 0x14, 0x90, 0x13, 0x40, 0x66, 0xa6, 0x34, 0x33, 0x1b, 0x8a, 0xe0,
		0x2a, 0xad, 0xe0, 0x26, 0x4e, 0xcb, 0x66, 0xeb, 0x20, 0x27, 0x43, 0x4e, 0x86, 0x9c, 0x0c, 0x39,
		0x59, 0x81, 0x73, 0xb2, 0xbd, 0x43, 0x86, 0xa4, 0xec, 0x10, 0x49, 0x19, 0x92, 0x32, 0x24, 0x65,
		0xc5, 0x4e, 0xca, 0x0e, 0x0f, 0x0e, 0xde, 0x21, 0x2d, 0x43, 0x5a, 0x56, 0xc4, 0xb4, 0x4c, 0xfc,
		0x48, 0x22, 0x4f, 0x1b, 0x07, 0x71, 0xe2, 0x7d, 0x1d, 0x12, 0x47, 0xd7, 0x48, 0x0c, 0x44, 0x24,
		0xa6, 0x43, 0x31, 0x0b, 0x1f, 0x94, 0xe6, 0x50, 0xc1, 0x3e, 0x6d, 0x54, 0x8e, 0x3e, 0xec, 0x1d,
		0x57, 0x8c, 0x20, 0x11, 0x51, 0x20, 0x92, 0x4a, 0x27, 0x0a, 0x93, 0xb0, 0x17, 0x0e, 0xff, 0x0a,
		0x26, 0xdf, 0x7b, 0xbf, 0xbf, 0xbb, 0xbb, 0xe2, 0x9b, 0x7f, 0x54, 0x2e, 0x44, 0x14, 0xfb, 0x61,
		0x50, 0x39, 0xac, 0xbc, 0x36, 0x3a, 0xdf, 0x0e, 0xdf, 0x54, 0xba, 0x23, 0xd1, 0xf3, 0x07, 0x7e,
		0x2f, 0x4d, 0x92, 0xdf, 0x56, 0x19, 0xbc, 0x25, 0x13, 0x74, 0x5f, 0x05, 0xe1, 0xef, 0x6d, 0x81,
		0xc9, 0x7f, 0x71, 0xa3, 0xf9, 0x95, 0xa8, 0x9e, 0xcc, 0x58, 0xe0, 0x8d, 0x41, 0x92, 0x81, 0x24,
		0xdb, 0x54, 0x2c, 0xa3, 0xd9, 0x7e, 0x63, 0x18, 0xda, 0x3c, 0x5f, 0x09, 0x44, 0x19, 0x88, 0x32,
		0x10, 0x65, 0x20, 0xca, 0x0a, 0x4a, 0x94, 0xf9, 0x23, 0x6d, 0xee, 0xca, 0xb4, 0x64, 0xb2, 0x2a,
		0x43, 0x9b, 0x9b, 0x0f, 0x84, 0x6b, 0xcc, 0x24, 0xb7, 0x35, 0xd9, 0x09, 0x75, 0x71, 0xc9, 0x63,
		0xe5, 0x30, 0xd0, 0x20, 0x4c, 0xbc, 0x26, 0x9f, 0xb2, 0xee, 0xc9, 0x2b, 0x46, 0x9e, 0x73, 0x89,
		0xc4, 0x62, 0xe2, 0x91, 0x94, 0x13, 0x59, 0xea, 0x08, 0x2d, 0x62, 0xaf, 0xbf, 0xda, 0xa4, 0x18,
		0xf9, 0xd0, 0x25, 0x93, 0xda, 0x3f, 0xa8, 0xc1, 0xa8, 0xb8, 0x8c, 0xea, 0xd5, 0x76, 0xac, 0x72,
		0xf9, 0xaa, 0xc0, 0x5b, 0x8f, 0x31, 0xb0, 0xfb, 0x7d, 0x11, 0x24, 0x7e, 0x72, 0x4b, 0xdb, 0x5a,
		0x70, 0x09, 0x7b, 0x71, 0xc4, 0x77, 0x63, 0xf6, 0xd1, 0x4e, 0xbc, 0x98, 0x91, 0x9b, 0x9c, 0x0b,
		0xd6, 0xe8, 0xb8, 0x1d, 0xdb, 0x72, 0xac, 0x86, 0xd5, 0xe2, 0xa2, 0x26, 0x53, 0x7f, 0x19, 0xb3,
		0x21, 0x1a, 0x5e, 0x54, 0xf3, 0x58, 0xb8, 0xf5, 0x73, 0xe7, 0xac, 0xba, 0x8d, 0xb1, 0x56, 0x9d,
		0x48, 0x3f, 0xda, 0x3a, 0x24, 0x2a, 0x55, 0xa2, 0x46, 0xa3, 0xdd, 0x81, 0x48, 0xe5, 0x8a, 0xf4,
		0x23, 0x44, 0x2a, 0x5b, 0xa4, 0xa6, 0x6b, 0x40, 0xa6, 0x72, 0x65, 0xda, 0xda, 0x77, 0x20, 0x52,
		0xc9, 0x70, 0xca, 0x68, 0x43, 0xa2, 0x52, 0x25, 0x6a, 0x77, 0x2f, 0x60, 0xa4, 0x72, 0x45, 0xea,
		0x34, 0x20, 0x51, 0xb9, 0x12, 0x3d, 0x6f, 0x72, 0x4a, 0x94, 0x65, 0xa5, 0x4b, 0x94, 0x59, 0xb0,
		0x4a, 0x06, 0x65, 0x16, 0xca, 0x15, 0x4c, 0x51, 0x66, 0x11, 0xa7, 0x07, 0xe1, 0x7c, 0x83, 0x39,
		0x1f, 0xad, 0x87, 0x92, 0x8b, 0x95, 0x0b, 0xa0, 0xe4, 0x62, 0x03, 0xdd, 0xa3, 0xe4, 0xa2, 0x20,
		0xc1, 0x0a, 0x33, 0x39, 0x5f, 0xe6, 0xce, 0x30, 0x93, 0x13, 0x33, 0x39, 0x31, 0x93, 0x13, 0x10,
		0x19, 0x10, 0x59, 0x21, 0x44, 0x66, 0x1d, 0xc7, 0xf9, 0xf4, 0xd2, 0x00, 0xce, 0x00, 0xce, 0x00,
		0xce, 0x00, 0xce, 0x05, 0x05, 0xce, 0x98, 0xc4, 0x89, 0x49, 0x9c, 0x65, 0x85, 0x28, 0xaf, 0x72,
		0xac, 0x50, 0x6a, 0x45, 0x56, 0xe3, 0xde, 0xb5, 0xb8, 0xf1, 0x46, 0xd9, 0xbe, 0x19, 0x89, 0xa0,
		0x97, 0x82, 0x02, 0x2d, 0x10, 0xc9, 0xf7, 0x30, 0xfa, 0x5b, 0xf3, 0x83, 0x38, 0xf1, 0x82, 0x9e,
		0xd8, 0x79, 0xfc, 0x42, 0xbc, 0xf4, 0xca, 0xce, 0x28, 0x1c, 0xfa, 0xbd, 0x5b, 0x6d, 0x10, 0x46,
		0xdf, 0xbd, 0xa8, 0xef, 0x07, 0x57, 0xd3, 0x57, 0x7c, 0x11, 0xcf, 0xbe, 0xb5, 0x13, 0x8d, 0x87,
		0x22, 0x4e, 0xff, 0xdc, 0x99, 0xec, 0xb6, 0x9d, 0xe9, 0x62, 0x72, 0x37, 0x97, 0x3c, 0x8d, 0x4a,
		0xd4, 0x66, 0xd5, 0xef, 0xdd, 0x8c, 0xbe, 0xd5, 0xa4, 0x6b, 0xf1, 0x9e, 0xfb, 0x98, 0x3e, 0x5f,
		0xb2, 0xfd, 0xcd, 0xbd, 0xb6, 0xe4, 0xc7, 0x52, 0x01, 0x4f, 0x4a, 0xc0, 0xc9, 0x05, 0x34, 0xa9,
		0x01, 0x26, 0x1b, 0xb0, 0x64, 0x03, 0x94, 0x8c, 0x40, 0x32, 0xdf, 0xd1, 0xa2, 0xe9, 0xd3, 0xcc,
		0x15, 0xa8, 0xf6, 0xe6, 0xfb, 0x95, 0x38, 0xc1, 0x9e, 0xad, 0x43, 0x9b, 0x4d, 0xef, 0x21, 0x9b,
		0x46, 0x36, 0x8d, 0x6c, 0xba, 0x6c, 0xd9, 0x34, 0x95, 0x73, 0x5c, 0x70, 0x92, 0x7d, 0x06, 0x43,
		0xbe, 0x77, 0x95, 0x7d, 0xea, 0x06, 0x31, 0xc4, 0xf4, 0x23, 0x9b, 0xe3, 0xe4, 0x74, 0xa0, 0xaa,
		0x1c, 0x29, 0xb7, 0x43, 0x55, 0xe6, 0x58, 0x95, 0x39, 0x58, 0x85, 0x8e, 0x96, 0xd6, 0xe1, 0x12,
		0x3b, 0xde, 0x4c, 0x6e, 0xe4, 0x74, 0xe6, 0x72, 0x4e, 0x8c, 0x9b, 0x80, 0x34, 0x82, 0x6d, 0x58,
		0x4d, 0x1d, 0x57, 0x00, 0x65, 0x4b, 0xb5, 0xd9, 0x75, 0xdc, 0x73, 0xd3, 0xd6, 0xeb, 0x8d, 0xb3,
		0xfa, 0x49, 0x4b, 0x77, 0xeb, 0xcd, 0xb6, 0x61, 0xba, 0x1d, 0xdb, 0x3a, 0x33, 0x4e, 0x0c, 0x47,
		0x6f, 0xa2, 0x0a, 0x9b, 0x4e, 0xd6, 0x8d, 0xba, 0x69, 0x5a, 0x8e, 0x7b, 0x6a, 0xd7, 0x3f, 0xb6,
		0x75, 0xd3, 0x81, 0xa8, 0x09, 0x45, 0xcd, 0xe7, 0x3c, 0x54, 0x3a, 0x11, 0x35, 0x52, 0xcf, 0xb1,
		0x53, 0x51, 0x60, 0xf1, 0x39, 0xd5, 0x81, 0x32, 0x67, 0x03, 0x15, 0xcc, 0x55, 0x30, 0xf9, 0xf7,
		0x99, 0xd5, 0x75, 0xb0, 0x1f, 0xf2, 0xa4, 0x8c, 0x73, 0xf3, 0x4f, 0xd3, 0xfa, 0x8f, 0x09, 0x1d,
		0xa8, 0xd1, 0x81, 0xa9, 0x63, 0x3f, 0xe4, 0x49, 0x17, 0xd8, 0x0e, 0xca, 0x54, 0x30, 0x71, 0x47,
		0x90, 0xbb, 0x1a, 0xb9, 0xbb, 0x1d, 0x5b, 0x6f, 0xe8, 0x4d, 0xdd, 0x6c, 0xe8, 0xee, 0x85, 0x61,
		0xb5, 0xea, 0x8e, 0x61, 0x61, 0x13, 0xa8, 0x52, 0xc6, 0xe2, 0x0b, 0xa7, 0x96, 0xed, 0x3a, 0x56,
		0x17, 0xba, 0xe0, 0xd7, 0x85, 0xa9, 0xc3, 0x1f, 0xa9, 0x11, 0x3b, 0x76, 0x40, 0x3e, 0x54, 0xd1,
		0xb1, 0x6c, 0x6c, 0x01, 0x15, 0x72, 0xbf, 0x8f, 0xc6, 0x8d, 0x73, 0xc7, 0x3a, 0x3d, 0x85, 0x12,
		0x54, 0x28, 0x61, 0xd6, 0x78, 0x11, 0xb2, 0x67, 0x97, 0x7d, 0xd7, 0x6e, 0x4c, 0xa1, 0x90, 0xd1,
		0x9d, 0x80, 0x51, 0xe4, 0xc4, 0xaa, 0x94, 0x60, 0x5b, 0xe7, 0x8e, 0xee, 0x9e, 0xd6, 0x8d, 0x96,
		0x12, 0x1d, 0xb0, 0xae, 0x78, 0x89, 0x13, 0x28, 0x52, 0x7e, 0x45, 0x31, 0xf9, 0x5b, 0x62, 0xa1,
		0xb3, 0xb3, 0x5a, 0xe5, 0x94, 0xb5, 0x5a, 0x32, 0xb7, 0xbc, 0x32, 0x87, 0x79, 0xb3, 0xf0, 0x52,
		0x90, 0x2f, 0xad, 0x7c, 0x15, 0x93, 0xb0, 0x25, 0x15, 0xba, 0x52, 0xaa, 0xa9, 0x7c, 0x32, 0x67,
		0x25, 0x55, 0x4b, 0x29, 0x5e, 0x58, 0x34, 0x33, 0x4f, 0xc4, 0x4a, 0x92, 0x96, 0x50, 0xbe, 0xea,
		0xc8, 0xd0, 0x32, 0x0a, 0x9b, 0x9b, 0xf4, 0x2c, 0x9f, 0x8c, 0x15, 0x92, 0x9b, 0xe5, 0x14, 0xb6,
		0x1a, 0x12, 0x73, 0xfb, 0x65, 0xad, 0x37, 0xce, 0x2c, 0xd4, 0x96, 0xf3, 0x8b, 0xdc, 0x9c, 0x49,
		0x1d, 0x7c, 0x3c, 0xb6, 0x6a, 0xae, 0xed, 0xa6, 0x24, 0x72, 0xb5, 0xf5, 0x4e, 0xeb, 0x33, 0x1c,
		0xa1, 0x2a, 0xc1, 0x9b, 0x96, 0x09, 0x5f, 0x88, 0x3d, 0x9b, 0x7f, 0xd3, 0x29, 0x81, 0x68, 0x3f,
		0x39, 0x2e, 0x5c, 0xa2, 0x2a, 0x97, 0xf8, 0x50, 0xf8, 0xed, 0x7a, 0xeb, 0xd4, 0xb2, 0xdb, 0x7a,
		0xd3, 0xfd, 0xf7, 0xb9, 0x6e, 0x7f, 0x46, 0x05, 0x0d, 0xbf, 0x06, 0xce, 0x5b, 0x8e, 0xd1, 0x69,
		0xe9, 0xae, 0x61, 0x3a, 0xa7, 0x6e, 0xb7, 0xee, 0x18, 0xdd, 0xd3, 0xcf, 0xd0, 0x86, 0x22, 0x6d,
		0x98, 0x96, 0xab, 0xdb, 0xb6, 0x65, 0x43, 0xf4, 0x2a, 0x44, 0xdf, 0x3d, 0x3f, 0x71, 0x9d, 0x94,
		0x91, 0xd1, 0x4d, 0x07, 0xf6, 0xaf, 0x4a, 0x09, 0x8d, 0xb3, 0xd4, 0x19, 0x01, 0x2e, 0x03, 0xd3,
		0x15, 0x0d, 0x56, 0x94, 0x4f, 0xd2, 0x79, 0x80, 0x0f, 0xa5, 0x93, 0x3a, 0x3f, 0x4c, 0x28, 0xa3,
		0x88, 0x95, 0xc1, 0x81, 0x72, 0x0a, 0x9b, 0x3d, 0xec, 0x97, 0x4a, 0xcc, 0xff, 0x3e, 0xd7, 0xbb,
		0x0e, 0xc8, 0x0e, 0xb5, 0xe2, 0x57, 0x98, 0xde, 0x01, 0xda, 0x6e, 0xcb, 0x1e, 0x46, 0xf0, 0x97,
		0x2f, 0xe4, 0x4e, 0xdd, 0xae, 0xb7, 0xdd, 0x8e, 0x6d, 0x9d, 0xb4, 0xf4, 0xb6, 0x7b, 0x52, 0x6f,
		0xba, 0x2d, 0xdd, 0xfc, 0xe8, 0x9c, 0x41, 0xc6, 0x54, 0x32, 0x46, 0x24, 0x2a, 0x97, 0x7d, 0x2b,
		0xb0, 0xf3, 0x5c, 0xca, 0xbe, 0x6d, 0x74, 0xbb, 0x86, 0xf9, 0x71, 0xe2, 0xcd, 0x5d, 0xab, 0x83,
		0x16, 0x36, 0x2a, 0x74, 0xd0, 0xb1, 0x0c, 0xd3, 0xd1, 0x6d, 0xd7, 0x30, 0x9b, 0x46, 0xa3, 0xee,
		0xe8, 0xdd, 0x49, 0x40, 0x05, 0x26, 0x43, 0x28, 0x2b, 0xde, 0x96, 0x2e, 0x9b, 0xac, 0x15, 0x6f,
		0xdd, 0x12, 0x88, 0xfb, 0xcc, 0x72, 0xce, 0x6d, 0xa3, 0xeb, 0xd6, 0xcf, 0x9d, 0x33, 0xd4, 0x23,
		0xd3, 0xc9, 0x77, 0x02, 0xc2, 0xba, 0x1d, 0x03, 0xb2, 0x25, 0x90, 0x2d, 0x92, 0x8b, 0xf2, 0xb8,
		0x8c, 0x12, 0x83, 0x5a, 0x65, 0xae, 0x04, 0x32, 0x77, 0x9b, 0x7a, 0xc3, 0x6a, 0x77, 0x6c, 0xbd,
		0xdb, 0x85, 0xc5, 0x2b, 0x91, 0xbe, 0xfd, 0x39, 0x85, 0xda, 0x90, 0x3e, 0xbf, 0xf4, 0x4d, 0x5d,
		0x6f, 0xa6, 0xce, 0x5e, 0x37, 0x9d, 0x09, 0x0a, 0x07, 0x89, 0xa1, 0x48, 0xfe, 0x96, 0x6d, 0xfc,
		0x8f, 0x2a, 0xf1, 0x83, 0xbc, 0x28, 0x3a, 0x4a, 0x56, 0x18, 0xc2, 0xca, 0x25, 0x65, 0x55, 0xa1,
		0xaa, 0x44, 0x52, 0x56, 0x1a, 0x92, 0xca, 0x28, 0x67, 0x05, 0xa1, 0x67, 0xfb, 0xc5, 0x6c, 0xeb,
		0x4d, 0xc3, 0xd6, 0x1b, 0xa8, 0xd3, 0x51, 0x24, 0x76, 0x8c, 0xf7, 0x60, 0x16, 0xb8, 0xa9, 0x3b,
		0xff, 0xb1, 0xec, 0x3f, 0x21, 0x73, 0x46, 0x99, 0x3b, 0x56, 0x17, 0x86, 0xae, 0x42, 0xe8, 0xea,
		0x8c, 0x1d, 0xb9, 0x5a, 0xd1, 0x01, 0x01, 0x7a, 0x9b, 0x6e, 0x4b, 0x04, 0x2a, 0x91, 0x6c, 0xf9,
		0x23, 0x4d, 0xc9, 0x84, 0x0b, 0xe3, 0x95, 0x2f, 0x5f, 0xeb, 0xdc, 0xd1, 0x6d, 0xb7, 0xde, 0xbc,
		0xd0, 0x6d, 0xc7, 0xe8, 0xea, 0x6d, 0xdd, 0x44, 0x3a, 0x96, 0x03, 0x15, 0x34, 0x2d, 0xbd, 0xeb,
		0x9a, 0x96, 0x33, 0x6b, 0x94, 0xd7, 0xb0, 0xda, 0x6d, 0x9c, 0x3a, 0x28, 0xd3, 0x86, 0x69, 0xd9,
		0xed, 0x7a, 0x0b, 0x48, 0x16, 0x7e, 0xb5, 0xc8, 0x9b, 0xba, 0xa4, 0x52, 0xe7, 0xde, 0xbc, 0xa5,
		0x11, 0x73, 0x57, 0x6f, 0xe9, 0x8d, 0xf4, 0xa4, 0x07, 0x80, 0x41, 0xa9, 0xf8, 0xd1, 0x7c, 0x14,
		0x5b, 0xb8, 0x70, 0x36, 0xb4, 0xfd, 0x32, 0x76, 0x8c, 0xb6, 0xde, 0x75, 0xea, 0xed, 0x0e, 0xfc,
		0xa3, 0x22, 0xb9, 0xc3, 0x31, 0x62, 0xd3, 0x16, 0xc7, 0x78, 0xca, 0x24, 0x5c, 0x34, 0x23, 0x55,
		0x2f, 0x7d, 0x78, 0x47, 0x6c, 0xe0, 0xa2, 0x99, 0x50, 0x39, 0x44, 0xec, 0xea, 0x9f, 0x1a, 0xba,
		0xde, 0xd4, 0x9b, 0xf0, 0x90, 0x0a, 0x65, 0x7f, 0x6a, 0xd7, 0x3f, 0xa6, 0x0c, 0x92, 0xad, 0xd7,
		0xbb, 0x5d, 0xbd, 0x7d, 0xd2, 0xfa, 0xec, 0x1a, 0xa6, 0xeb, 0xd8, 0x75, 0xb3, 0x6b, 0xa0, 0x9e,
		0x84, 0x5d, 0x1f, 0x4a, 0x65, 0x8f, 0x90, 0xb5, 0x15, 0xfe, 0x34, 0x2f, 0x7b, 0xba, 0x6c, 0x72,
		0x57, 0x22, 0xe3, 0x57, 0xdb, 0xb1, 0x57, 0x69, 0x3f, 0x07, 0xb1, 0x25, 0x56, 0xc5, 0x8f, 0x24,
		0xf2, 0xb4, 0x71, 0x10, 0x27, 0xde, 0xd7, 0xe1, 0xc4, 0x32, 0xe8, 0xed, 0xb1, 0x1a, 0x89, 0x81,
		0x88, 0x44, 0xd0, 0x13, 0x6c, 0x20, 0x86, 0x6f, 0x93, 0xdd, 0x53, 0xb8, 0xa7, 0x8d, 0xca, 0xd1,
		0x87, 0xfd, 0xe3, 0x8a, 0x11, 0x24, 0x22, 0x0a, 0x44, 0x52, 0x69, 0x84, 0x41, 0x12, 0x85, 0xc3,
		0x4a, 0x5b, 0xc4, 0xb1, 0x77, 0x25, 0x2a, 0x9d, 0x28, 0x4c, 0xc2, 0x5e, 0x38, 0x64, 0x04, 0x90,
		0xd5, 0x6e, 0x38, 0x8e, 0x7a, 0x3c, 0x6a, 0x7e, 0xb0, 0xee, 0x9f, 0xe2, 0xf6, 0x7b, 0x18, 0xf5,
		0x27, 0x82, 0xb9, 0xd7, 0x3e, 0x33, 0x70, 0x3e, 0xf3, 0xe2, 0x7a, 0x74, 0x35, 0xbe, 0x11, 0x41,
		0x52, 0x3d, 0xae, 0x24, 0xd1, 0x58, 0x30, 0xbf, 0x81, 0x85, 0xd5, 0x5f, 0x62, 0x1e, 0x5b, 0xe6,
		0x91, 0xe9, 0x57, 0xb9, 0x2c, 0xb4, 0x47, 0xae, 0x07, 0x41, 0x98, 0x78, 0x89, 0x1f, 0x06, 0x3c,
		0xde, 0xf8, 0xf6, 0x2a, 0x4c, 0xb4, 0xb0, 0xa7, 0xf5, 0xc2, 0x9b, 0x51, 0x24, 0xe2, 0x58, 0xf4,
		0xb5, 0xa1, 0xf0, 0x06, 0x93, 0xc5, 0x89, 0x43, 0xdb, 0xab, 0x02, 0xaa, 0xa8, 0x9a, 0xdc, 0x8e,
		0xe8, 0xfd, 0x67, 0x16, 0x45, 0xd2, 0xd5, 0x88, 0x0d, 0xee, 0x4f, 0x3f, 0x98, 0x38, 0xe6, 0x5d,
		0xe2, 0x65, 0x1a, 0x61, 0x30, 0xf0, 0xaf, 0x18, 0x16, 0xea, 0x44, 0x62, 0xe0, 0xff, 0xe0, 0xd9,
		0x3c, 0x73, 0x3d, 0x85, 0x3d, 0x6d, 0xf4, 0x77, 0xa2, 0xdd, 0x78, 0x49, 0xef, 0x9a, 0x21, 0xae,
		0x71, 0xc7, 0xf1, 0xc5, 0xf8, 0x3d, 0x9a, 0x8a, 0x97, 0x27, 0x76, 0x2a, 0x0b, 0xda, 0x0f, 0x82,
		0xf5, 0x03, 0xed, 0x22, 0xa1, 0xf8, 0xa5, 0xdc, 0x1c, 0x0e, 0xff, 0xf8, 0x60, 0xef, 0xf9, 0x7d,
		0x11, 0x24, 0x7e, 0x72, 0x1b, 0x89, 0x01, 0xc7, 0xd6, 0x9b, 0xb9, 0xcb, 0xbd, 0x03, 0x86, 0xb5,
		0x8c, 0xd9, 0x47, 0x3b, 0xf1, 0x62, 0xc6, 0xcd, 0x9e, 0x71, 0x04, 0x9f, 0x3b, 0x5c, 0xec, 0xb6,
		0x0a, 0x56, 0x3b, 0x1f, 0xf3, 0xd6, 0x41, 0x6a, 0xc9, 0x13, 0xad, 0xde, 0x38, 0xb3, 0x20, 0x4f,
		0xb9, 0xf2, 0x9c, 0x1e, 0x25, 0x42, 0xaa, 0x12, 0xa5, 0xfa, 0x60, 0xdc, 0x0c, 0x24, 0x4b, 0x22,
		0xd9, 0x74, 0x3a, 0x05, 0x64, 0x2b, 0x4f, 0xb6, 0x0f, 0x3a, 0x1f, 0x43, 0xb0, 0x12, 0x05, 0x3b,
		0xeb, 0x66, 0x03, 0x99, 0xca, 0x93, 0xe9, 0xfc, 0x5e, 0x2a, 0x64, 0x2a, 0x51, 0xa6, 0x2b, 0x6e,
		0xef, 0x40, 0xbe, 0xd2, 0xe5, 0xdb, 0xb5, 0x5a, 0x46, 0xc3, 0x70, 0xd0, 0xcd, 0x4a, 0x76, 0x32,
		0x3b, 0xaf, 0x8d, 0x83, 0x50, 0x09, 0x84, 0x0a, 0x2c, 0x4b, 0x21, 0xda, 0xac, 0x40, 0x03, 0x82,
		0x95, 0x28, 0x58, 0xbb, 0xde, 0xd0, 0x53, 0x67, 0x8b, 0x5a, 0x97, 0x7c, 0x7d, 0x0e, 0xd4, 0xba,
		0x14, 0x6b, 0x5b, 0xa1, 0xd6, 0x65, 0xe5, 0xba, 0xa8, 0x75, 0x41, 0xad, 0x0b, 0xdb, 0x2a, 0xa8,
		0x75, 0x79, 0xc9, 0x7a, 0xdb, 0x58, 0xeb, 0xf2, 0xaa, 0x40, 0x8a, 0xe7, 0x52, 0x78, 0x35, 0xee,
		0x5d, 0x8b, 0x1b, 0x6f, 0xe4, 0x25, 0xd7, 0x13, 0x07, 0xb4, 0x13, 0x8e, 0x44, 0xd0, 0x4b, 0xeb,
		0x4f, 0xb4, 0x40, 0x24, 0xdf, 0xc3, 0xe8, 0x6f, 0xcd, 0x9f, 0xc0, 0x80, 0xa0, 0x27, 0x76, 0x1e,
		0xbf, 0x10, 0x2f, 0xbd, 0xb2, 0x33, 0x0a, 0x87, 0x7e, 0xef, 0x56, 0x1b, 0x84, 0xd1, 0x77, 0x2f,
		0xea, 0xfb, 0xc1, 0xd5, 0xf4, 0x15, 0x5f, 0xc4, 0xb3, 0x6f, 0xed, 0x44, 0xe3, 0xa1, 0x88, 0xd3,
		0x3f, 0x77, 0xfc, 0xd1, 0xb7, 0xda, 0x8e, 0xdf, 0xbb, 0x99, 0xfc, 0x6f, 0xba, 0x26, 0x8d, 0x57,
		0x93, 0xaf, 0x78, 0x02, 0xa5, 0x57, 0xe3, 0xc4, 0x4b, 0xe8, 0x62, 0x70, 0x86, 0x40, 0xa6, 0xcb,
		0x10, 0x19, 0xed, 0xfc, 0xc4, 0x9f, 0xe8, 0xf1, 0x59, 0x61, 0xd4, 0x3e, 0xd1, 0x02, 0x0c, 0x05,
		0x51, 0xdc, 0x85, 0x50, 0x5c, 0xe0, 0x8e, 0xbd, 0xf0, 0x89, 0x1d, 0xb9, 0x29, 0x28, 0x74, 0x2a,
		0x56, 0xc8, 0x6a, 0xfa, 0x11, 0xed, 0xd6, 0xe9, 0x85, 0x7d, 0xc6, 0x8a, 0xd2, 0x74, 0x35, 0x54,
		0x94, 0xe6, 0xcd, 0x81, 0xaa, 0x72, 0xa4, 0xaa, 0xb2, 0x65, 0x54, 0x94, 0xa2, 0xa2, 0xf4, 0x99,
		0x72, 0x43, 0x45, 0xa9, 0xc4, 0xb5, 0xd4, 0x56, 0x94, 0x32, 0xf6, 0x4b, 0x28, 0x6f, 0x45, 0xa9,
		0x5b, 0x6f, 0xb6, 0x0d, 0xd3, 0xed, 0xd8, 0xd6, 0x99, 0x71, 0x62, 0x38, 0x38, 0x3d, 0xa2, 0x94,
		0x75, 0xa3, 0x6e, 0x9a, 0x96, 0x93, 0x5d, 0x5c, 0x87, 0xa8, 0x09, 0x45, 0x8d, 0x66, 0x2b, 0xa5,
		0x74, 0x2a, 0x0a, 0x2c, 0x3e, 0xa7, 0x3a, 0x50, 0xe6, 0x6c, 0xa0, 0x82, 0xb9, 0x0a, 0x26, 0xff,
		0x3e, 0xb3, 0xba, 0x0e, 0xf6, 0x43, 0x9e, 0x94, 0x71, 0x6e, 0xfe, 0x69, 0x5a, 0xff, 0xc1, 0x04,
		0x06, 0x45, 0x3a, 0x30, 0x75, 0xec, 0x87, 0x3c, 0xe9, 0x02, 0xdb, 0x41, 0x99, 0x0a, 0x30, 0xcb,
		0x50, 0x9d, 0xdc, 0xdd, 0x8e, 0xad, 0x37, 0xf4, 0xa6, 0x6e, 0x36, 0x74, 0xf7, 0xc2, 0xb0, 0x5a,
		0xaa, 0x86, 0xd1, 0x43, 0x19, 0xd6, 0xa3, 0x17, 0x4e, 0x2d, 0xdb, 0x75, 0xac, 0x2e, 0x74, 0xc1,
		0xaf, 0x0b, 0x53, 0x87, 0x3f, 0x52, 0x23, 0x76, 0xec, 0x80, 0x7c, 0xa8, 0xa2, 0x63, 0xd9, 0xd8,
		0x02, 0x2a, 0xe4, 0x7e, 0x1f, 0x8d, 0x1b, 0xe7, 0x8e, 0x75, 0x7a, 0x0a, 0x25, 0xa8, 0x50, 0x82,
		0xe5, 0x58, 0x0d, 0xab, 0x05, 0xd9, 0xf3, 0xcb, 0xbe, 0x6b, 0x37, 0xa6, 0x50, 0xc8, 0xe8, 0x4e,
		0xc0, 0x28, 0x72, 0x62, 0x55, 0x4a, 0x98, 0x0e, 0xf4, 0x3b, 0xad, 0x1b, 0x2d, 0x25, 0x3a, 0x40,
		0x73, 0xea, 0x62, 0xd9, 0x54, 0x9e, 0xc9, 0xdf, 0x12, 0x0b, 0x9d, 0x9d, 0xd5, 0x2a, 0xa7, 0xac,
		0xd5, 0x92, 0xb9, 0xe5, 0x95, 0x39, 0xcc, 0x9b, 0x85, 0x97, 0x82, 0x7c, 0x69, 0xe5, 0xab, 0x98,
		0x84, 0x2d, 0xa9, 0xd0, 0x95, 0x52, 0x4d, 0xe5, 0x93, 0x39, 0x2b, 0xa9, 0x5a, 0x4a, 0xf1, 0xc2,
		0xa2, 0x99, 0x79, 0x22, 0x56, 0x92, 0xb4, 0x84, 0xf2, 0x55, 0x47, 0x86, 0x96, 0x51, 0xd8, 0xdc,
		0xa4, 0x67, 0xf9, 0x64, 0xac, 0x90, 0xdc, 0x2c, 0xa7, 0xb0, 0xd5, 0x90, 0x98, 0x25, 0x69, 0x72,
		0x8c, 0xda, 0x72, 0x76, 0x91, 0x63, 0xbe, 0x31, 0xb6, 0x6a, 0x21, 0xec, 0xa6, 0x4c, 0x7d, 0xde,
		0xe1, 0x08, 0x55, 0x09, 0xde, 0xb4, 0x4c, 0xf8, 0x42, 0xec, 0xd9, 0xfc, 0x9b, 0x4e, 0xd9, 0x06,
		0x34, 0xc0, 0x25, 0xaa, 0x14, 0x7e, 0xbb, 0xde, 0x3a, 0xb5, 0xec, 0xb6, 0xde, 0x74, 0xff, 0x7d,
		0xae, 0xdb, 0x9f, 0x51, 0x41, 0xc3, 0xaf, 0x81, 0xf3, 0x96, 0x63, 0x74, 0x5a, 0xba, 0x6b, 0x98,
		0xce, 0xa9, 0xdb, 0xad, 0x3b, 0x46, 0xf7, 0xf4, 0x33, 0xb4, 0xa1, 0x48, 0x1b, 0xa6, 0xe5, 0xea,
		0xb6, 0x6d, 0xd9, 0x10, 0xbd, 0x0a, 0xd1, 0x77, 0xcf, 0x4f, 0x5c, 0x27, 0x65, 0x64, 0x74, 0xd3,
		0x81, 0xfd, 0xab, 0x52, 0x42, 0xe3, 0x2c, 0x75, 0x46, 0x80, 0xcb, 0xc0, 0x74, 0x45, 0x83, 0x15,
		0xe5, 0x93, 0x74, 0x1e, 0xe0, 0x43, 0xe9, 0xa4, 0xce, 0x0f, 0x13, 0xca, 0x28, 0x62, 0x65, 0x70,
		0xa0, 0x9c, 0xc2, 0x66, 0x0f, 0xfb, 0xe5, 0x9b, 0x98, 0x08, 0xb2, 0x43, 0xad, 0xf8, 0x15, 0xa6,
		0x77, 0x80, 0xb6, 0xdb, 0xb2, 0x87, 0x11, 0xfc, 0xe5, 0x0b, 0xf9, 0xc1, 0xf8, 0x53, 0xf7, 0xa4,
		0xde, 0x74, 0x5b, 0xba, 0xf9, 0xd1, 0x39, 0x83, 0x8c, 0xa9, 0x64, 0x8c, 0x48, 0x54, 0x2e, 0xfb,
		0x56, 0x60, 0xe7, 0xb9, 0x94, 0x7d, 0xdb, 0xe8, 0x76, 0x0d, 0xf3, 0xe3, 0xc4, 0x9b, 0xbb, 0x56,
		0x07, 0x2d, 0x6c, 0x54, 0xe8, 0xa0, 0x63, 0x19, 0xa6, 0xa3, 0xdb, 0xae, 0x61, 0x36, 0x8d, 0x46,
		0xdd, 0xd1, 0xbb, 0x93, 0x80, 0x0a, 0x4c, 0x86, 0x50, 0x56, 0xbc, 0x2d, 0x5d, 0x36, 0x59, 0x2b,
		0xde, 0xba, 0xe5, 0x99, 0x57, 0xef, 0xd6, 0xcf, 0x9d, 0x33, 0xd4, 0x23, 0xd3, 0xc9, 0x77, 0x02,
		0xc2, 0xba, 0x1d, 0x03, 0xb2, 0x25, 0x90, 0x2d, 0x92, 0x8b, 0xf2, 0xb8, 0x8c, 0x12, 0x83, 0x5a,
		0x65, 0xae, 0x04, 0x32, 0x77, 0x9b, 0x7a, 0xc3, 0x6a, 0x77, 0x6c, 0xbd, 0xdb, 0x85, 0xc5, 0x2b,
		0x91, 0xbe, 0xfd, 0x39, 0x85, 0xda, 0x90, 0x3e, 0xbf, 0xf4, 0x4d, 0x5d, 0x6f, 0xa6, 0xce, 0x5e,
		0x37, 0x9d, 0x09, 0x0a, 0x07, 0x89, 0xa1, 0x48, 0xfe, 0x96, 0x6d, 0xfc, 0x8f, 0x2a, 0xf1, 0x83,
		0xbc, 0x28, 0x3a, 0x4a, 0x56, 0x18, 0xc2, 0xca, 0x25, 0x65, 0x55, 0xa1, 0xaa, 0x44, 0x52, 0x56,
		0x1a, 0x92, 0xca, 0x28, 0x67, 0x05, 0xa1, 0x67, 0xfb, 0xc5, 0x6c, 0xeb, 0x4d, 0xc3, 0xd6, 0x1b,
		0xa8, 0xd3, 0x51, 0x24, 0x76, 0x8c, 0xf7, 0x60, 0x16, 0xb8, 0xa9, 0x3b, 0xff, 0xb1, 0xec, 0x3f,
		0x21, 0x73, 0x46, 0x99, 0x3b, 0x56, 0x17, 0x86, 0xae, 0x42, 0xe8, 0xea, 0x8c, 0x1d, 0xb9, 0x5a,
		0xd1, 0x01, 0x01, 0x7a, 0x9b, 0x6e, 0x4b, 0x04, 0x2a, 0x91, 0x6c, 0xf9, 0x23, 0x4d, 0xc9, 0x84,
		0x0b, 0xe3, 0x95, 0x2f, 0x5f, 0xeb, 0xdc, 0xd1, 0x6d, 0xb7, 0xde, 0xbc, 0xd0, 0x6d, 0xc7, 0xe8,
		0xea, 0x6d, 0xdd, 0x44, 0x3a, 0x96, 0x03, 0x15, 0x34, 0x2d, 0xbd, 0xeb, 0x9a, 0x96, 0x33, 0x6b,
		0x94, 0xd7, 0xb0, 0xda, 0x6d, 0x9c, 0x3a, 0x28, 0xd3, 0x86, 0x69, 0xd9, 0xed, 0x7a, 0x0b, 0x48,
		0x16, 0x7e, 0xb5, 0xc8, 0x9b, 0xba, 0xa4, 0x52, 0xe7, 0xde, 0xbc, 0xa5, 0x11, 0x73, 0x57, 0x6f,
		0xe9, 0x8d, 0xf4, 0xa4, 0x07, 0x80, 0x41, 0xa9, 0xf8, 0xd1, 0x7c, 0x14, 0x5b, 0xb8, 0x70, 0x36,
		0xb4, 0xfd, 0x32, 0x76, 0x8c, 0xb6, 0xde, 0x75, 0xea, 0xed, 0x0e, 0xfc, 0xa3, 0x22, 0xb9, 0xc3,
		0x31, 0x62, 0xd3, 0x16, 0xc7, 0x78, 0xca, 0x24, 0x5c, 0x34, 0x23, 0x55, 0x2f, 0x7d, 0x78, 0x47,
		0x6c, 0xe0, 0xa2, 0x99, 0x50, 0x39, 0x44, 0xec, 0xea, 0x9f, 0x1a, 0xba, 0xde, 0xd4, 0x9b, 0xf0,
		0x90, 0x0a, 0x65, 0x7f, 0x6a, 0xd7, 0x3f, 0xa6, 0x0c, 0x92, 0xad, 0xd7, 0xbb, 0x5d, 0xbd, 0x7d,
		0xd2, 0xfa, 0xec, 0x1a, 0xa6, 0xeb, 0xd8, 0x75, 0xb3, 0x6b, 0xa0, 0x9e, 0x84, 0x5d, 0x1f, 0x4a,
		0x65, 0x8f, 0x90, 0xb5, 0x15, 0xfe, 0x34, 0x2f, 0x7b, 0xba, 0x6c, 0x72, 0x57, 0x22, 0xe3, 0x57,
		0xdb, 0xb1, 0x57, 0x69, 0x3f, 0x07, 0xb1, 0x25, 0x56, 0xc5, 0x8f, 0x24, 0xf2, 0xb4, 0x71, 0x10,
		0x27, 0xde, 0xd7, 0xe1, 0xc4, 0x32, 0xe8, 0xed, 0xb1, 0x1a, 0x89, 0x81, 0x88, 0x44, 0xd0, 0x13,
		0x6c, 0x20, 0x86, 0x6f, 0x93, 0xdd, 0x53, 0xb8, 0xa7, 0x8d, 0xca, 0xd1, 0x87, 0xfd, 0xe3, 0x8a,
		0x11, 0x24, 0x22, 0x0a, 0x44, 0x52, 0x69, 0x84, 0x41, 0x12, 0x85, 0xc3, 0x4a, 0x5b, 0xc4, 0xb1,
		0x77, 0x25, 0x2a, 0x9d, 0x28, 0x4c, 0xc2, 0x5e, 0x38, 0x64, 0x04, 0x90, 0xd5, 0x6e, 0x38, 0x8e,
		0x7a, 0x3c, 0x6a, 0x7e, 0xb0, 0xee, 0x9f, 0xe2, 0xf6, 0x7b, 0x18, 0xf5, 0x27, 0x82, 0xb9, 0xd7,
		0x3e, 0x33, 0x70, 0x3e, 0xf3, 0xe2, 0x7a, 0x74, 0x35, 0xbe, 0x11, 0x41, 0x52, 0x3d, 0xae, 0x24,
		0xd1, 0x58, 0x30, 0xbf, 0x81, 0x85, 0xd5, 0x5f, 0x62, 0x1e, 0x5b, 0xe6, 0x91, 0xe9, 0x57, 0xa1,
		0xf5, 0xf9, 0x74, 0xef, 0x9f, 0xd0, 0xd7, 0x57, 0x93, 0xdb, 0x11, 0xfd, 0xb6, 0xcf, 0x9c, 0x5f,
		0xba, 0x1a, 0x71, 0xe4, 0xfa, 0xd3, 0x0f, 0x26, 0xfe, 0x64, 0x97, 0x78, 0x99, 0x46, 0x18, 0x0c,
		0xfc, 0x2b, 0x86, 0x85, 0x3a, 0x91, 0x18, 0xf8, 0x3f, 0x78, 0x22, 0xf0, 0x5c, 0x4f, 0x61, 0x4f,
		0x1b, 0xfd, 0x9d, 0x68, 0x37, 0x5e, 0xd2, 0xbb, 0x66, 0x70, 0xc7, 0xdc, 0xe1, 0x67, 0x31, 0xec,
		0x8c, 0xa6, 0xe2, 0xe5, 0x71, 0xf9, 0xca, 0x62, 0xcd, 0x83, 0x18, 0xf3, 0x40, 0xbb, 0xc0, 0xc1,
		0xbf, 0x94, 0x9b, 0xc3, 0xe1, 0x1f, 0x1f, 0xec, 0x3d, 0xbf, 0x2f, 0x82, 0xc4, 0x4f, 0x6e, 0x23,
		0x31, 0xe0, 0xd8, 0x7a, 0x33, 0x77, 0xb9, 0x77, 0xc0, 0xb0, 0x96, 0x31, 0xfb, 0x68, 0x27, 0x5e,
		0xcc, 0xb8, 0xd9, 0xb3, 0xd4, 0xf6, 0x73, 0x87, 0x8b, 0x94, 0x55, 0x41, 0xc6, 0xe6, 0x63, 0x4c,
		0x38, 0xb8, 0x18, 0x79, 0xa2, 0xd5, 0x1b, 0x67, 0x16, 0xe4, 0x29, 0x57, 0x9e, 0xd3, 0x13, 0x30,
		0x48, 0x55, 0xa2, 0x54, 0x1f, 0x4c, 0x49, 0x81, 0x64, 0x49, 0x24, 0x9b, 0x0e, 0x55, 0x80, 0x6c,
		0xe5, 0xc9, 0xf6, 0x41, 0xc3, 0x5e, 0x08, 0x56, 0xa2, 0x60, 0x67, 0x4d, 0x58, 0x20, 0x53, 0x79,
		0x32, 0x9d, 0x5f, 0xa7, 0x84, 0x4c, 0x25, 0xca, 0x74, 0xc5, 0xa5, 0x13, 0xc8, 0x57, 0xba, 0x7c,
		0xbb, 0x56, 0xcb, 0x68, 0x18, 0x0e, 0x9a, 0x30, 0xc9, 0x4e, 0x66, 0xe7, 0x25, 0x5d, 0x10, 0x2a,
		0x81, 0x50, 0x81, 0x65, 0x29, 0x44, 0x9b, 0xd5, 0x15, 0x40, 0xb0, 0x12, 0x05, 0x6b, 0xd7, 0x1b,
		0x7a, 0xea, 0x6c, 0x51, 0xa2, 0x91, 0xaf, 0xcf, 0x81, 0x12, 0x8d, 0x62, 0x6d, 0x2b, 0x94, 0x68,
		0xac, 0x5c, 0x17, 0x25, 0x1a, 0x28, 0xd1, 0x60, 0x5b, 0xa5, 0xb0, 0x25, 0x1a, 0xaf, 0x0a, 0x14,
		0x41, 0xaa, 0xf5, 0x20, 0x08, 0x13, 0x2f, 0xf1, 0xc3, 0x80, 0xd4, 0x9d, 0x54, 0xe3, 0xde, 0xb5,
		0xb8, 0xf1, 0x46, 0x5e, 0x72, 0x3d, 0xd9, 0x37, 0x3b, 0xe1, 0x48, 0x04, 0xbd, 0xb4, 0x6c, 0x42,
		0x0b, 0x44, 0xf2, 0x3d, 0x8c, 0xfe, 0xd6, 0xfc, 0x49, 0xf4, 0x0a, 0x7a, 0x62, 0xe7, 0xf1, 0x0b,
		0xf1, 0xd2, 0x2b, 0x3b, 0xa3, 0x70, 0xe8, 0xf7, 0x6e, 0xb5, 0x41, 0x18, 0x7d, 0xf7, 0xa2, 0xbe,
		0x1f, 0x5c, 0x4d, 0x5f, 0xf1, 0x45, 0x3c, 0xfb, 0xd6, 0x4e, 0x34, 0x1e, 0x8a, 0x38, 0xfd, 0x73,
		0xc7, 0x1f, 0x7d, 0xab, 0xed, 0xf8, 0xbd, 0x9b, 0xc9, 0xff, 0xe2, 0xc4, 0x4b, 0x04, 0xcd, 0x5e,
		0x94, 0xaf, 0x77, 0xb9, 0x4f, 0x94, 0x6c, 0x41, 0xd4, 0x96, 0x93, 0x13, 0x8b, 0x21, 0x08, 0x6f,
		0xd5, 0x38, 0x89, 0xc6, 0xbd, 0x24, 0x98, 0x41, 0x0c, 0x73, 0xfa, 0x56, 0x8d, 0xd9, 0x3b, 0x75,
		0x3b, 0xe9, 0xdb, 0x39, 0xcd, 0xde, 0xe8, 0xec, 0x05, 0xd7, 0x1e, 0x0f, 0x85, 0x6b, 0x8c, 0xbe,
		0xd5, 0x5c, 0x63, 0xfa, 0xce, 0x5e, 0xe5, 0xd3, 0xd6, 0x24, 0xda, 0x59, 0x75, 0xba, 0x5d, 0x65,
		0x9b, 0x57, 0x86, 0xee, 0xa6, 0x8f, 0x97, 0xbc, 0x2f, 0xe6, 0x55, 0x14, 0x92, 0x1f, 0x9b, 0x15,
		0x99, 0xed, 0x4b, 0x7e, 0x30, 0x61, 0x51, 0x19, 0x57, 0x11, 0x19, 0x35, 0x20, 0x66, 0x2b, 0x12,
		0x63, 0x43, 0xb7, 0x8c, 0x45, 0x60, 0xf9, 0x8e, 0x62, 0x4d, 0x3f, 0xa2, 0x31, 0xfd, 0xbe, 0x88,
		0x13, 0x3f, 0x48, 0xe3, 0xa3, 0xe6, 0xf5, 0xfb, 0x91, 0x88, 0x63, 0x3a, 0xfb, 0x9c, 0xef, 0xb3,
		0x55, 0x8b, 0x12, 0x19, 0x10, 0x6d, 0x6d, 0x2d, 0x79, 0x4d, 0x2d, 0x47, 0x2d, 0x2d, 0x77, 0x0d,
		0x2d, 0x17, 0x2f, 0xc0, 0x5e, 0x33, 0xcb, 0x9e, 0xf4, 0x2b, 0xa8, 0x91, 0x2d, 0x56, 0xda, 0x48,
		0x5e, 0x0b, 0x7b, 0x5f, 0x03, 0x3b, 0xfa, 0x56, 0xd3, 0xc8, 0xad, 0x2c, 0x43, 0x6d, 0xef, 0x09,
		0xd7, 0xe8, 0x78, 0x49, 0x22, 0xa2, 0x80, 0x9c, 0x2f, 0xad, 0xbe, 0xfe, 0xb2, 0xab, 0x7d, 0xb8,
		0xfc, 0xf9, 0x65, 0x4f, 0xfb, 0x70, 0x39, 0xfd, 0xeb, 0x5e, 0xfa, 0xbf, 0x7f, 0xf6, 0xef, 0x7e,
		0xee, 0x7f, 0xd9, 0xd5, 0x6a, 0xb3, 0x57, 0xf7, 0x0f, 0xbe, 0xec, 0x6a, 0x07, 0x97, 0x6f, 0x5e,
		0xff, 0xf5, 0xd7, 0xdb, 0x97, 0xfe, 0xce, 0x9b, 0x7f, 0xde, 0xdd, 0xed, 0x64, 0xbf, 0xb4, 0x3f,
		0xfb, 0xee, 0xbb, 0x2f, 0xbb, 0xda, 0xfe, 0xe5, 0x1b, 0xba, 0x6d, 0x72, 0x49, 0xa9, 0x1f, 0xab,
		0x6b, 0x7c, 0x62, 0x53, 0xd2, 0xff, 0xbe, 0x56, 0xae, 0xa6, 0x37, 0xff, 0x45, 0xa8, 0xa8, 0xa2,
		0x90, 0x2c, 0x7f, 0xb0, 0x60, 0xbf, 0x99, 0x0b, 0xd3, 0x62, 0x91, 0x28, 0x81, 0x81, 0x8b, 0xeb,
		0x03, 0x11, 0x02, 0x11, 0x02, 0x11, 0x02, 0x11, 0x16, 0x14, 0x11, 0x0e, 0x85, 0x37, 0xa0, 0xbd,
		0x11, 0x95, 0xa1, 0xc1, 0x23, 0x5a, 0x34, 0x38, 0x63, 0xb6, 0x7b, 0x13, 0xaf, 0x1c, 0x1f, 0xf7,
		0xc5, 0xc0, 0x0f, 0x44, 0x3f, 0xfd, 0x47, 0xf6, 0xe2, 0x02, 0xfc, 0xfd, 0xe5, 0x37, 0xb2, 0xd7,
		0x53, 0x5a, 0xb9, 0xcc, 0xb1, 0x37, 0xee, 0x8d, 0x18, 0x22, 0xec, 0x64, 0x15, 0xc4, 0x51, 0xc4,
		0x51, 0xc4, 0x51, 0xc4, 0xd1, 0x82, 0xc6, 0x51, 0x42, 0x1f, 0xb6, 0xe8, 0xc7, 0x08, 0x6f, 0x13,
		0x57, 0x6d, 0x2f, 0xb8, 0xa2, 0xaf, 0x3f, 0x63, 0x28, 0xa6, 0x6b, 0xfb, 0x01, 0xdf, 0x2d, 0xe8,
		0xf4, 0x46, 0x32, 0x7d, 0xbb, 0x8a, 0x6c, 0xbd, 0xd3, 0xc8, 0xeb, 0x4d, 0x72, 0xd1, 0xa6, 0x7f,
		0xe5, 0x27, 0x31, 0xe3, 0xc2, 0xa6, 0xb8, 0xf2, 0x12, 0xff, 0xdb, 0xe4, 0xb3, 0x0e, 0xbc, 0x61,
		0x2c, 0xe8, 0xab, 0x48, 0x19, 0x6e, 0xce, 0xb7, 0xbd, 0x1f, 0xfc, 0xa6, 0x72, 0xf8, 0x0e, 0xb6,
		0x52, 0x88, 0xb0, 0x44, 0xff, 0xf4, 0xcb, 0x92, 0x27, 0x17, 0x4c, 0x14, 0xde, 0x7c, 0x25, 0x24,
		0x19, 0x48, 0x32, 0x90, 0x64, 0x20, 0xc9, 0x40, 0x92, 0x81, 0x24, 0x03, 0x49, 0x06, 0x80, 0x23,
		0x92, 0x0c, 0xd8, 0x0a, 0x92, 0x8c, 0x7c, 0x85, 0xd3, 0x96, 0x1f, 0x27, 0xf5, 0x24, 0x89, 0x68,
		0x43, 0x6a, 0xdb, 0x0f, 0xf4, 0xa1, 0x98, 0xc0, 0x1a, 0x62, 0x93, 0x9d, 0xec, 0xfe, 0x85, 0x95,
		0xf6, 0xde, 0xd7, 0x6a, 0x87, 0x47, 0xb5, 0xda, 0xee, 0xd1, 0xbb, 0xa3, 0xdd, 0x0f, 0x07, 0x07,
		0x7b, 0x87, 0x94, 0x1d, 0x02, 0xab, 0x56, 0xd4, 0x17, 0x91, 0xe8, 0x9f, 0xdc, 0x56, 0x8f, 0x2b,
		0xc1, 0x78, 0x38, 0xe4, 0x58, 0xea, 0x3c, 0x16, 0x11, 0xe9, 0x9e, 0x2c, 0x46, 0x7a, 0x7b, 0x1d,
		0x8e, 0xb4, 0xa1, 0x7f, 0xe3, 0x33, 0xe4, 0xb7, 0xf7, 0x4b, 0x21, 0xc1, 0x45, 0x82, 0x8b, 0x04,
		0x17, 0x09, 0x6e, 0x41, 0x13, 0xdc, 0xb1, 0x1f, 0x24, 0xef, 0x91, 0xe1, 0x22, 0xc3, 0x45, 0xd6,
		0x82, 0x0c, 0xf7, 0x77, 0xa6, 0xb2, 0x7f, 0x70, 0x00, 0x63, 0x41, 0x8a, 0x4b, 0x99, 0xe2, 0x16,
		0x22, 0xd1, 0x18, 0x8a, 0xe0, 0x2a, 0xad, 0x7e, 0x24, 0xce, 0x32, 0x66, 0xeb, 0x20, 0xc5, 0x40,
		0x8a, 0x81, 0x14, 0x03, 0x29, 0x46, 0x81, 0x53, 0x8c, 0xbd, 0x43, 0x86, 0x1c, 0xe3, 0x10, 0x39,
		0x06, 0x72, 0x0c, 0xe4, 0x18, 0xc5, 0xce, 0x31, 0x0e, 0x0f, 0x0e, 0xde, 0x21, 0xcb, 0x40, 0x96,
		0x41, 0x9a, 0x65, 0x10, 0xc5, 0x54, 0xc6, 0x3e, 0xa6, 0x8c, 0xfd, 0x4b, 0x19, 0x27, 0x86, 0x4d,
		0x1b, 0x52, 0xee, 0x2d, 0x34, 0xa4, 0x9c, 0x37, 0xa0, 0xfc, 0x2b, 0x98, 0x7c, 0xef, 0xfd, 0xfe,
		0xee, 0xee, 0x8a, 0x6f, 0xfe, 0x51, 0xb9, 0x10, 0x51, 0xec, 0x87, 0x41, 0xe5, 0xb0, 0xf2, 0xda,
		0xe8, 0x7c, 0x3b, 0x7c, 0x53, 0xe9, 0x8e, 0x44, 0xcf, 0x1f, 0xf8, 0xbd, 0xf4, 0x16, 0xf1, 0xdb,
		0x2d, 0x9f, 0xfc, 0xc7, 0xdd, 0xcd, 0x34, 0x1f, 0xc3, 0xff, 0xc8, 0x8c, 0x05, 0xde, 0x18, 0x9c,
		0xcf, 0x92, 0xe5, 0x8d, 0xe6, 0x9d, 0x70, 0xc9, 0x59, 0x9f, 0x11, 0x6d, 0x4b, 0x66, 0xf0, 0x3e,
		0xe0, 0x7d, 0xc0, 0xfb, 0x80, 0xf7, 0x21, 0xdf, 0x3b, 0xfe, 0x48, 0x9b, 0xbb, 0x32, 0x8d, 0x78,
		0x5c, 0x76, 0xd6, 0xf1, 0xe0, 0x03, 0xe1, 0x1a, 0x33, 0xc9, 0x6d, 0x0d, 0xd8, 0xa6, 0x3e, 0xfa,
		0x7f, 0xac, 0x1c, 0x8e, 0xb9, 0xbc, 0x3c, 0x34, 0x1d, 0x9f, 0xb2, 0xee, 0xb9, 0x18, 0x46, 0xda,
		0x6e, 0x89, 0x93, 0xd9, 0x65, 0x9e, 0x51, 0xa0, 0x8a, 0x97, 0x51, 0xc7, 0xcf, 0x10, 0x7b, 0xfd,
		0xd5, 0x26, 0xc5, 0x48, 0xef, 0x2d, 0x99, 0xd4, 0xfe, 0x41, 0x0d, 0x46, 0xc5, 0x65, 0x54, 0x18,
		0xa9, 0xa1, 0x7e, 0xeb, 0x61, 0xee, 0xbe, 0x8c, 0xb5, 0xd4, 0xce, 0xdd, 0x37, 0x3a, 0x6e, 0xc7,
		0xb6, 0x1c, 0xab, 0x61, 0xb5, 0x30, 0x7e, 0x9f, 0x40, 0xb8, 0xf5, 0x73, 0xe7, 0x0c, 0x13, 0xf5,
		0xa4, 0x8a, 0xf4, 0xa3, 0xad, 0x43, 0xa2, 0x52, 0x25, 0x6a, 0x34, 0x30, 0xaa, 0x54, 0xb6, 0x48,
		0x3f, 0x42, 0xa4, 0xb2, 0x45, 0x6a, 0xba, 0x06, 0x64, 0x2a, 0x57, 0xa6, 0xad, 0x7d, 0x07, 0x22,
		0x95, 0x0c, 0xa7, 0x8c, 0x36, 0x24, 0x2a, 0x55, 0xa2, 0x76, 0xf7, 0x02, 0x46, 0x2a, 0x57, 0xa4,
		0x4e, 0x03, 0x12, 0x95, 0x2b, 0xd1, 0xf3, 0x66, 0x07, 0x33, 0x9e, 0xf3, 0xf5, 0x39, 0x50, 0x35,
		0x40, 0x51, 0x35, 0x10, 0xa7, 0xe7, 0xba, 0x7c, 0x13, 0xb4, 0x1e, 0xad, 0x87, 0x0a, 0x82, 0x95,
		0x0b, 0xa0, 0x82, 0x60, 0x03, 0xdd, 0xa3, 0x82, 0xa0, 0x20, 0xbe, 0x17, 0xc3, 0xb3, 0x5e, 0xe6,
		0xce, 0x30, 0x3c, 0x0b, 0xc3, 0xb3, 0x30, 0x3c, 0x0b, 0x88, 0x4f, 0x26, 0xe2, 0x63, 0x9d, 0x9b,
		0xf5, 0xf4, 0xd2, 0xc0, 0x81, 0xc0, 0x81, 0xc0, 0x81, 0xc0, 0x81, 0x05, 0xc5, 0x81, 0x18, 0x99,
		0xb5, 0x35, 0x23, 0xb3, 0x72, 0x3d, 0x4d, 0xbd, 0x1e, 0x04, 0x61, 0x92, 0x5e, 0x02, 0xa2, 0x19,
		0xaa, 0x1e, 0xf7, 0xae, 0xc5, 0x8d, 0x37, 0xca, 0xcc, 0x60, 0x24, 0x82, 0x5e, 0x1a, 0xe3, 0xb4,
		0x40, 0x24, 0xdf, 0xc3, 0xe8, 0x6f, 0xcd, 0x0f, 0xe2, 0xc4, 0x0b, 0x7a, 0x62, 0xe7, 0xf1, 0x0b,
		0xf1, 0xd2, 0x2b, 0x3b, 0xa3, 0x70, 0xe8, 0xf7, 0x6e, 0xb5, 0x41, 0x18, 0x7d, 0xf7, 0xa2, 0xbe,
		0x1f, 0x5c, 0x4d, 0x5f, 0xf1, 0x45, 0x3c, 0xfb, 0xd6, 0x4e, 0x34, 0x1e, 0x8a, 0x38, 0xfd, 0x73,
		0x67, 0x62, 0x3c, 0x3b, 0x71, 0xe2, 0x25, 0x92, 0x4d, 0x45, 0x9e, 0x42, 0xe5, 0x3c, 0x49, 0x92,
		0x49, 0x50, 0x99, 0x82, 0x6a, 0x13, 0x90, 0xe8, 0x42, 0xab, 0x71, 0x12, 0x8d, 0x7b, 0x49, 0x30,
		0xf3, 0xd1, 0xe6, 0xf4, 0xbd, 0x19, 0xb3, 0xb7, 0xe6, 0x76, 0xd2, 0xf5, 0x4f, 0xb3, 0x77, 0x36,
		0x7b, 0xc1, 0xb5, 0xc7, 0x43, 0xe1, 0x1a, 0x93, 0xb7, 0xf2, 0x2a, 0x1f, 0x56, 0x23, 0xc1, 0x62,
		0xaa, 0xfe, 0xe8, 0xdb, 0xa1, 0x34, 0x3b, 0x59, 0xa4, 0x3f, 0x64, 0xb5, 0xcd, 0xc8, 0xe2, 0x9b,
		0xa4, 0xc7, 0xc9, 0x86, 0xe6, 0x14, 0x50, 0x9c, 0x1a, 0x7a, 0x53, 0x41, 0x6d, 0x72, 0x68, 0x4d,
		0x0e, 0xa5, 0x19, 0xa0, 0x73, 0xbe, 0xa2, 0x45, 0xd3, 0x97, 0xdb, 0x3c, 0xbb, 0xda, 0x9b, 0xef,
		0x2f, 0xc9, 0xa6, 0x35, 0xdf, 0x12, 0xb3, 0xe7, 0x4b, 0x56, 0xbb, 0x5c, 0x27, 0x43, 0xce, 0x03,
		0x50, 0xe6, 0xff, 0x5c, 0x79, 0x3f, 0x75, 0xbe, 0xcf, 0x96, 0xe7, 0xb3, 0xe5, 0xf7, 0x8c, 0x79,
		0x7d, 0xbe, 0xb3, 0x1d, 0xd9, 0x4e, 0x2b, 0x7b, 0xf0, 0x8a, 0xf9, 0xfd, 0x0c, 0x13, 0xc7, 0x56,
		0x2c, 0x0a, 0xda, 0x93, 0xdb, 0xed, 0x71, 0xbb, 0x3f, 0x2e, 0x37, 0xc8, 0xee, 0x0e, 0xd9, 0xdd,
		0xa2, 0x02, 0xf7, 0x48, 0x47, 0x33, 0x55, 0xb6, 0xe5, 0xf8, 0xfb, 0x10, 0xc7, 0xdf, 0x2f, 0x5b,
		0x68, 0x7a, 0xb0, 0xea, 0x69, 0x83, 0xba, 0x76, 0x7a, 0xf9, 0xcf, 0xde, 0x1f, 0xb5, 0xbb, 0xe3,
		0x37, 0xff, 0x1c, 0xdd, 0x3d, 0x7e, 0xf1, 0xe7, 0xaa, 0x1f, 0xdb, 0xfb, 0xe3, 0xe8, 0xee, 0xf8,
		0x89, 0xef, 0x1c, 0xde, 0x1d, 0x3f, 0xf3, 0x19, 0x07, 0x77, 0xaf, 0x97, 0x7e, 0x74, 0xf2, 0xfa,
		0xfe, 0x53, 0xbf, 0x50, 0x7b, 0xe2, 0x17, 0xde, 0x3d, 0xf5, 0x0b, 0xef, 0x9e, 0xf8, 0x85, 0x27,
		0xdf, 0xd2, 0xfe, 0x13, 0xbf, 0x70, 0x70, 0xf7, 0x73, 0xe9, 0xe7, 0x5f, 0xaf, 0xfe, 0xd1, 0xc3,
		0xbb, 0x37, 0x3f, 0x9f, 0xfa, 0xde, 0xd1, 0xdd, 0xcf, 0xe3, 0x37, 0x6f, 0x76, 0x5e, 0xef, 0xed,
		0x7f, 0xd9, 0xd5, 0xde, 0x4f, 0x4f, 0xa5, 0xf7, 0x2e, 0x97, 0x0e, 0xab, 0xd3, 0x3f, 0x51, 0x1e,
		0xf0, 0x8c, 0xd5, 0xfe, 0x17, 0x56, 0x9c, 0x73, 0x2b, 0x2e, 0x5e, 0xf1, 0x04, 0x55, 0x32, 0x45,
		0x7b, 0x64, 0x92, 0xad, 0x73, 0x7b, 0x15, 0x26, 0x5a, 0xd8, 0xd3, 0x7a, 0xe1, 0xcd, 0x68, 0x82,
		0xed, 0x45, 0x5f, 0x1b, 0x0a, 0x6f, 0x30, 0x59, 0xf4, 0xae, 0xcc, 0x13, 0x9d, 0x97, 0xb3, 0x1e,
		0xd6, 0x92, 0x93, 0xdf, 0xac, 0x8f, 0x04, 0x0c, 0x09, 0x18, 0x12, 0x30, 0x24, 0x60, 0x05, 0x4d,
		0xc0, 0xca, 0x56, 0x77, 0x72, 0xf8, 0x54, 0xdd, 0xc9, 0x21, 0x73, 0xdd, 0x09, 0xc0, 0xca, 0xb6,
		0x83, 0x95, 0xc1, 0x30, 0xfc, 0xae, 0x0d, 0xbd, 0xaf, 0x62, 0xc8, 0x0b, 0x52, 0x16, 0xd6, 0x05,
		0x38, 0x01, 0x38, 0x01, 0x38, 0x01, 0x38, 0x29, 0x32, 0x3b, 0x4c, 0xee, 0xce, 0x16, 0x5d, 0xda,
		0x11, 0xe6, 0xeb, 0xfc, 0xfe, 0x83, 0x60, 0xbe, 0x0e, 0x89, 0xd1, 0x63, 0xbe, 0x8e, 0x24, 0x53,
		0xd9, 0xdb, 0xad, 0xbd, 0x3f, 0x38, 0xc2, 0x84, 0x9d, 0x62, 0x84, 0x29, 0xfa, 0xa7, 0x83, 0x6e,
		0x46, 0x06, 0xf7, 0xfc, 0x0c, 0x2e, 0xee, 0x8d, 0x18, 0xf2, 0xb5, 0xc9, 0x2a, 0xc8, 0xce, 0x90,
		0x9d, 0x21, 0x3b, 0x43, 0x76, 0x56, 0xd0, 0xec, 0x8c, 0xd0, 0x87, 0x55, 0x78, 0x66, 0x2a, 0x20,
		0x25, 0x43, 0x4a, 0x86, 0x94, 0x8c, 0xc3, 0x54, 0x0e, 0xdf, 0xc1, 0x56, 0x90, 0x8d, 0x21, 0x1b,
		0x43, 0x36, 0xf6, 0xf2, 0x6c, 0x8c, 0xa9, 0xcc, 0x67, 0xbe, 0x12, 0xb2, 0x32, 0x64, 0x65, 0xc8,
		0xca, 0x90, 0x95, 0x21, 0x2b, 0x43, 0x56, 0x86, 0xac, 0x0c, 0x48, 0x1b, 0x59, 0x19, 0x6c, 0x05,
		0x59, 0x59, 0xbe, 0xc2, 0x69, 0xcb, 0x8f, 0x93, 0x7a, 0x92, 0x44, 0xb4, 0x21, 0xb5, 0xed, 0x07,
		0xfa, 0x50, 0x4c, 0x60, 0x0d, 0xb1, 0xc9, 0x4e, 0x76, 0xff, 0xc2, 0x4a, 0x7b, 0xef, 0x6b, 0xb5,
		0xc3, 0xa3, 0x5a, 0x6d, 0xf7, 0xe8, 0xdd, 0xd1, 0xee, 0x87, 0x83, 0x83, 0xbd, 0x43, 0xca, 0xc1,
		0x73, 0x55, 0x2b, 0xea, 0x8b, 0x48, 0xf4, 0x4f, 0x6e, 0xab, 0xc7, 0x95, 0x60, 0x3c, 0x1c, 0x72,
		0x2c, 0x75, 0x1e, 0x8b, 0x88, 0x74, 0x4f, 0x82, 0x0f, 0xd8, 0x4a, 0x3e, 0xe0, 0x3a, 0x1c, 0x69,
		0x43, 0xff, 0xc6, 0x67, 0x20, 0x04, 0xee, 0x97, 0x02, 0x23, 0x00, 0x46, 0x00, 0x8c, 0x00, 0x18,
		0x81, 0x82, 0x32, 0x02, 0xd4, 0x43, 0xf0, 0x41, 0x09, 0x80, 0x12, 0x00, 0x25, 0xb0, 0x25, 0x94,
		0xc0, 0xfe, 0x01, 0xea, 0x66, 0xc1, 0x09, 0x14, 0x91, 0x13, 0x40, 0x66, 0xa6, 0x34, 0x33, 0x1b,
		0x8a, 0xe0, 0x2a, 0xbd, 0x83, 0x4b, 0x9c, 0x96, 0xcd, 0xd6, 0x41, 0x4e, 0x86, 0x9c, 0x0c, 0x39,
		0x19, 0x72, 0xb2, 0x02, 0xe7, 0x64, 0x7b, 0x87, 0x0c, 0x49, 0xd9, 0x21, 0x92, 0x32, 0x24, 0x65,
		0x48, 0xca, 0x8a, 0x9d, 0x94, 0x1d, 0x1e, 0x1c, 0xbc, 0x43, 0x5a, 0x86, 0xb4, 0xac, 0x88, 0x69,
		0x99, 0xf8, 0x91, 0x44, 0x9e, 0x36, 0x0e, 0xe2, 0xc4, 0xfb, 0x3a, 0x24, 0x8e, 0xae, 0x91, 0x18,
		0x88, 0x48, 0x04, 0xbd, 0xad, 0x08, 0x4a, 0x73, 0xa8, 0x60, 0x9f, 0x36, 0x2a, 0x47, 0x1f, 0xf6,
		0x8e, 0x2b, 0x46, 0x90, 0x88, 0x28, 0x10, 0x49, 0xa5, 0x13, 0x85, 0x49, 0xd8, 0x0b, 0x87, 0x7f,
		0x05, 0x93, 0xef, 0xbd, 0xdf, 0xdf, 0xdd, 0x5d, 0xf1, 0xcd, 0x3f, 0x2a, 0x17, 0x22, 0x8a, 0xfd,
		0x30, 0xa8, 0x1c, 0x56, 0x5e, 0x1b, 0x9d, 0x6f, 0x87, 0x6f, 0x2a, 0xdd, 0x91, 0xe8, 0xf9, 0x03,
		0xbf, 0x97, 0x26, 0xc9, 0x6f, 0xab, 0x0c, 0xde, 0x92, 0x09, 0xba, 0xaf, 0x82, 0xf0, 0xf7, 0xb6,
		0xc0, 0xe4, 0xbf, 0xb8, 0xd1, 0xfc, 0x4a, 0x54, 0x4f, 0x66, 0x2c, 0xf0, 0xc6, 0x20, 0xc9, 0x40,
		0x92, 0x6d, 0x2a, 0x96, 0xd1, 0x6c, 0xbf, 0xd1, 0xd3, 0x64, 0xd9, 0x4a, 0x20, 0xca, 0x40, 0x94,
		0x81, 0x28, 0x03, 0x51, 0x56, 0x50, 0xa2, 0xcc, 0x1f, 0x69, 0x73, 0x57, 0xa6, 0x25, 0x93, 0x55,
		0x19, 0x1a, 0x95, 0x7e, 0x20, 0x5c, 0x63, 0x26, 0xb9, 0xad, 0xc9, 0x4e, 0xa8, 0x8b, 0x4b, 0x1e,
		0x2b, 0x87, 0x81, 0x06, 0x61, 0xe2, 0x35, 0xf9, 0x94, 0x75, 0x4f, 0x5e, 0x31, 0xf2, 0x9c, 0x4b,
		0x24, 0x16, 0x13, 0x8f, 0xa4, 0x9c, 0xc8, 0x52, 0x47, 0x68, 0x11, 0x7b, 0xfd, 0xd5, 0x26, 0xc5,
		0xc8, 0x87, 0x2e, 0x99, 0xd4, 0xfe, 0x41, 0x0d, 0x46, 0xc5, 0x65, 0x54, 0xaf, 0xb6, 0x63, 0x95,
		0xcb, 0x57, 0x05, 0xde, 0x7a, 0x8c, 0x81, 0xdd, 0xef, 0x8b, 0x20, 0xf1, 0x93, 0x5b, 0xda, 0xe6,
		0xf0, 0x4b, 0xd8, 0x8b, 0x23, 0xbe, 0x1b, 0xb3, 0x8f, 0x76, 0xe2, 0xc5, 0x8c, 0xdc, 0xe4, 0x5c,
		0xb0, 0x46, 0xc7, 0xed, 0xd8, 0x96, 0x63, 0x35, 0xac, 0x16, 0x17, 0x35, 0x99, 0xfa, 0xcb, 0x98,
		0x0d, 0xd1, 0xf0, 0xa2, 0x9a, 0xc7, 0xc2, 0xad, 0x9f, 0x3b, 0x67, 0xd5, 0x6d, 0x8c, 0xb5, 0xea,
		0x44, 0xfa, 0xd1, 0xd6, 0x21, 0x51, 0xa9, 0x12, 0x35, 0x1a, 0xed, 0x0e, 0x44, 0x2a, 0x57, 0xa4,
		0x1f, 0x21, 0x52, 0xd9, 0x22, 0x35, 0x5d, 0x03, 0x32, 0x95, 0x2b, 0xd3, 0xd6, 0xbe, 0x03, 0x91,
		0x4a, 0x86, 0x53, 0x46, 0x1b, 0x12, 0x95, 0x2a, 0x51, 0xbb, 0x7b, 0x01, 0x23, 0x95, 0x2b, 0x52,
		0xa7, 0x01, 0x89, 0xca, 0x95, 0xe8, 0x79, 0x93, 0x53, 0xa2, 0x2c, 0x2b, 0x5d, 0xa2, 0xcc, 0x82,
		0x55, 0x32, 0x28, 0xb3, 0x50, 0xae, 0x60, 0x8a, 0x32, 0x8b, 0x38, 0x3d, 0x08, 0x9f, 0x4f, 0x6b,
		0xa5, 0x2f, 0xb6, 0x78, 0xb4, 0x1e, 0x4a, 0x2e, 0x56, 0x2e, 0x80, 0x92, 0x8b, 0x0d, 0x74, 0x8f,
		0x92, 0x8b, 0x82, 0x04, 0xab, 0x2d, 0x99, 0xba, 0x46, 0x6e, 0x65, 0x19, 0xe3, 0xff, 0x9e, 0x76,
		0x2c, 0x6c, 0x22, 0xa2, 0x80, 0x9c, 0xf9, 0xae, 0xbe, 0x5e, 0x35, 0xcf, 0xff, 0xe8, 0xee, 0xf1,
		0x8b, 0x4f, 0x8c, 0xfd, 0x3f, 0xba, 0x3b, 0x7e, 0xe2, 0x3b, 0x87, 0x77, 0xc7, 0xcf, 0x7c, 0xc6,
		0xc1, 0xdd, 0xea, 0x99, 0xff, 0xfb, 0x4f, 0xfd, 0x42, 0xed, 0x89, 0x5f, 0x78, 0xf7, 0xd4, 0x2f,
		0xbc, 0x7b, 0xe2, 0x17, 0x9e, 0x7c, 0x4b, 0xfb, 0x4f, 0xfc, 0xc2, 0xc1, 0xdd, 0xcf, 0xa5, 0x9f,
		0x7f, 0xbd, 0xfa, 0x47, 0x0f, 0xef, 0xde, 0xfc, 0x7c, 0xea, 0x7b, 0x47, 0x77, 0x3f, 0x8f, 0xdf,
		0xbc, 0xd9, 0x79, 0xbd, 0xb7, 0xff, 0x65, 0x57, 0x7b, 0x7f, 0xf9, 0x73, 0xef, 0xcb, 0xae, 0xb6,
		0x77, 0x39, 0xf9, 0xc9, 0xcb, 0x9f, 0x5f, 0xf6, 0xb4, 0x0f, 0xf3, 0xbf, 0x4e, 0xfe, 0x7c, 0x43,
		0xe7, 0x46, 0x2e, 0x29, 0xed, 0xd7, 0xea, 0x1a, 0x9f, 0xd8, 0x8c, 0xf8, 0x7f, 0x61, 0xc5, 0x39,
		0xb7, 0xe2, 0xff, 0xaa, 0x22, 0xc1, 0x42, 0x82, 0x95, 0xb7, 0x04, 0x6b, 0x61, 0x72, 0x3a, 0x77,
		0xae, 0xb5, 0xb8, 0x34, 0xd2, 0x2e, 0xa4, 0x5d, 0x48, 0xbb, 0x90, 0x76, 0x15, 0x34, 0xed, 0x9a,
		0xc4, 0x15, 0xda, 0x62, 0xab, 0x2c, 0xe5, 0x3a, 0xa2, 0x4d, 0xb9, 0xae, 0x27, 0x1f, 0x67, 0x27,
		0xec, 0x4d, 0xbc, 0x72, 0x7c, 0xdc, 0x17, 0x03, 0x3f, 0x10, 0xfd, 0xf4, 0x1f, 0xd9, 0x8b, 0x0b,
		0x39, 0xe6, 0x2f, 0xbf, 0x91, 0xbd, 0x1e, 0x4c, 0xa4, 0x04, 0x88, 0x02, 0x88, 0xf2, 0x42, 0x88,
		0xb2, 0x30, 0x3d, 0x9e, 0x0b, 0x9a, 0x90, 0x0f, 0xac, 0x07, 0x24, 0x01, 0x24, 0x01, 0x24, 0x01,
		0x24, 0xe1, 0x61, 0x82, 0xc9, 0xdd, 0xd9, 0xa2, 0x4b, 0x3b, 0x42, 0xbb, 0xaa, 0xdf, 0x7f, 0x10,
		0xb4, 0xab, 0x22, 0x31, 0x7a, 0xb4, 0xab, 0x92, 0x64, 0x2a, 0x7b, 0xbb, 0xb5, 0xf7, 0x07, 0x47,
		0x68, 0x58, 0x55, 0x8c, 0x30, 0x45, 0xff, 0x74, 0x50, 0xcb, 0xdb, 0x9a, 0xb7, 0xbd, 0xca, 0xb1,
		0x42, 0xa9, 0x15, 0x59, 0x8d, 0x7b, 0xd7, 0xe2, 0xc6, 0x1b, 0x65, 0x7c, 0xc7, 0x48, 0x04, 0xbd,
		0x34, 0x73, 0xd2, 0x02, 0x91, 0x7c, 0x0f, 0xa3, 0xbf, 0x35, 0x3f, 0x88, 0x13, 0x2f, 0xe8, 0x89,
		0x9d, 0xc7, 0x2f, 0xc4, 0x4b, 0xaf, 0xec, 0x8c, 0xc2, 0xa1, 0xdf, 0xbb, 0xd5, 0x06, 0x61, 0xf4,
		0xdd, 0x8b, 0xfa, 0x7e, 0x70, 0x35, 0x7d, 0xc5, 0x17, 0xf1, 0xec, 0x5b, 0x3b, 0xd1, 0x78, 0x28,
		0xe2, 0xf4, 0xcf, 0x9d, 0x09, 0x30, 0xdb, 0x99, 0x2e, 0x26, 0x17, 0x15, 0xcb, 0xd3, 0xa8, 0x44,
		0x6d, 0x56, 0xfd, 0xde, 0xcd, 0xe8, 0xdb, 0xa1, 0x74, 0x2d, 0xde, 0xe3, 0xdc, 0xe9, 0xf3, 0x25,
		0xdb, 0xdf, 0x9c, 0x6d, 0x93, 0xfc, 0x58, 0xaa, 0xec, 0x9c, 0x32, 0x2b, 0xe7, 0xca, 0xc6, 0xa9,
		0xb3, 0x70, 0xb6, 0xec, 0x9b, 0x2d, 0xeb, 0x66, 0xcc, 0xb6, 0xf3, 0x1d, 0x2d, 0x9a, 0x3e, 0xcd,
		0x34, 0xc1, 0x6a, 0x6f, 0xbe, 0x5f, 0x89, 0xd9, 0xc7, 0xd9, 0x3a, 0xb4, 0x94, 0xe3, 0x1e, 0x28,
		0x47, 0xe5, 0x4e, 0x8e, 0xcb, 0xd9, 0xb1, 0x3b, 0x3d, 0x76, 0xe7, 0xa7, 0xc0, 0x09, 0xd2, 0x66,
		0x5b, 0x54, 0x39, 0x11, 0x95, 0x73, 0x5c, 0x70, 0x92, 0x7d, 0x06, 0x43, 0xbe, 0x77, 0x95, 0x7d,
		0xea, 0xb6, 0xb0, 0xc4, 0x67, 0x34, 0x6c, 0x8e, 0x93, 0xd3, 0x81, 0xaa, 0x72, 0xa4, 0xdc, 0x0e,
		0x55, 0x99, 0x63, 0x55, 0xe6, 0x60, 0x15, 0x3a, 0x5a, 0x26, 0xf2, 0x8c, 0x78, 0xf7, 0x91, 0x9f,
		0xf9, 0x2c, 0xe7, 0xc4, 0xe8, 0xff, 0x43, 0x23, 0xd8, 0x86, 0xd5, 0xd4, 0xd1, 0xf8, 0x47, 0xb6,
		0x54, 0x9b, 0x5d, 0xc7, 0x3d, 0x37, 0x6d, 0xbd, 0xde, 0x38, 0xab, 0x9f, 0xb4, 0x74, 0xb7, 0xde,
		0x6c, 0xda, 0xb8, 0x6f, 0x4d, 0x27, 0xdf, 0x13, 0xfd, 0xb3, 0x65, 0x36, 0xdd, 0x6e, 0xc3, 0xea,
		0xe8, 0xae, 0x75, 0xea, 0x76, 0xed, 0x06, 0xc4, 0x4d, 0x27, 0x6e, 0x46, 0xa7, 0xa1, 0xd2, 0x79,
		0xa8, 0x91, 0x7a, 0xce, 0x9c, 0x89, 0x02, 0x2b, 0xcf, 0xa9, 0xdc, 0x95, 0x3a, 0x19, 0xa8, 0x61,
		0xae, 0x86, 0xc9, 0xbf, 0xeb, 0xcd, 0xb6, 0x61, 0xba, 0x1d, 0xdb, 0x3a, 0x33, 0x4e, 0x0c, 0x47,
		0x6f, 0x42, 0x0f, 0xfc, 0x7a, 0xd0, 0x6d, 0xdb, 0x35, 0xcc, 0xc9, 0x2e, 0x70, 0x6d, 0xeb, 0xdc,
		0x31, 0xcc, 0x8f, 0xee, 0x19, 0x1c, 0x93, 0x0a, 0x4d, 0x9c, 0x35, 0xed, 0xae, 0xeb, 0x58, 0x96,
		0xdb, 0xb2, 0xcc, 0x8f, 0x50, 0x00, 0xbf, 0x02, 0x4c, 0x2b, 0xdd, 0x02, 0xba, 0xeb, 0x58, 0x13,
		0xf7, 0x04, 0x15, 0xf0, 0xab, 0xa0, 0x63, 0xd9, 0x90, 0xbb, 0x02, 0xb9, 0xdb, 0xfa, 0xff, 0xd3,
		0x1b, 0x0e, 0xcc, 0x5f, 0xb1, 0x1a, 0x26, 0x51, 0x78, 0x92, 0x17, 0xb8, 0xa7, 0x75, 0xa3, 0xa5,
		0x37, 0xdd, 0x8e, 0xd5, 0x32, 0x1a, 0x9f, 0x15, 0x68, 0x82, 0x75, 0xc5, 0x4b, 0xe4, 0xf8, 0x5b,
		0x0a, 0xb3, 0xcb, 0x27, 0x6f, 0xd5, 0x70, 0xba, 0x7c, 0x12, 0x57, 0x04, 0x9b, 0xcb, 0x27, 0x68,
		0x65, 0xf0, 0xb8, 0x7c, 0xa2, 0xe6, 0x85, 0xc1, 0xe5, 0x93, 0xaf, 0x52, 0xb8, 0x5b, 0x3e, 0x71,
		0xab, 0x86, 0xb5, 0x25, 0x90, 0xf8, 0x79, 0xa7, 0x65, 0x34, 0xea, 0xce, 0xf4, 0x58, 0x41, 0xef,
		0x76, 0x5d, 0x5b, 0xef, 0xb4, 0x3e, 0xe3, 0x88, 0x27, 0x17, 0x5a, 0x68, 0xd6, 0x71, 0xc4, 0xa0,
		0x50, 0xfc, 0x7a, 0xb3, 0x3e, 0x41, 0xe3, 0x17, 0xf6, 0xde, 0xfe, 0x7b, 0xe8, 0x21, 0x0f, 0x7a,
		0xf8, 0xb0, 0x0f, 0x3d, 0xe4, 0x40, 0x0f, 0xfb, 0x07, 0x87, 0xd0, 0x43, 0x0e, 0xf4, 0x70, 0x58,
		0x03, 0xc5, 0x07, 0xac, 0x57, 0x28, 0x94, 0x51, 0x5e, 0x31, 0xab, 0x41, 0x13, 0x90, 0x37, 0x2f,
		0x6a, 0x80, 0xbc, 0x79, 0xd1, 0x01, 0xe4, 0xcd, 0x8a, 0x02, 0xca, 0x29, 0xee, 0x7f, 0x9f, 0xeb,
		0x5d, 0x07, 0x9c, 0x48, 0x4e, 0xf4, 0xd0, 0xac, 0xa3, 0xcc, 0x4c, 0xa9, 0x02, 0xf4, 0x66, 0xdd,
		0x06, 0x2f, 0x92, 0x2f, 0x4d, 0x80, 0x19, 0xc9, 0x89, 0x26, 0xc0, 0x8d, 0xe4, 0x45, 0x13, 0x60,
		0x47, 0x80, 0xfb, 0x0a, 0x87, 0x37, 0xca, 0x2c, 0x68, 0x35, 0xb8, 0x02, 0x12, 0x07, 0x47, 0xb2,
		0xed, 0x38, 0x01, 0x12, 0x07, 0x4f, 0x22, 0x59, 0xe0, 0x7a, 0xe3, 0xcc, 0x42, 0xb1, 0x88, 0x5a,
		0xc1, 0x9b, 0xd6, 0x54, 0xf6, 0x80, 0xb9, 0xd8, 0xb6, 0x05, 0xb0, 0x9e, 0xd2, 0x48, 0x17, 0x7c,
		0xb1, 0x62, 0xd1, 0xc3, 0x31, 0x62, 0xeb, 0x16, 0xca, 0x7e, 0x4a, 0x20, 0xdf, 0x4f, 0x8e, 0x0b,
		0xcc, 0xa8, 0xca, 0x39, 0x3e, 0x14, 0x7e, 0xbb, 0xde, 0x3a, 0xb5, 0xec, 0xb6, 0xde, 0x74, 0xff,
		0x7d, 0xae, 0xdb, 0x9f, 0xc1, 0x57, 0xf3, 0x6b, 0xe0, 0xbc, 0xe5, 0x18, 0x9d, 0x96, 0xee, 0x1a,
		0xa6, 0x73, 0xea, 0x76, 0xeb, 0x8e, 0xd1, 0x3d, 0xfd, 0x0c, 0x6d, 0x28, 0xd2, 0x86, 0x69, 0xb9,
		0xba, 0x6d, 0x5b, 0x38, 0x56, 0x56, 0x22, 0xfa, 0xee, 0x79, 0xe3, 0x6c, 0xb2, 0x0f, 0x74, 0xfb,
		0xb4, 0xde, 0xd0, 0xa1, 0x03, 0x65, 0x3a, 0x70, 0xa6, 0x37, 0x91, 0x4d, 0xc7, 0x46, 0xeb, 0x00,
		0x20, 0xbb, 0xc2, 0x81, 0x8b, 0xf2, 0x49, 0x3a, 0x0f, 0x20, 0xa2, 0x74, 0x52, 0xe7, 0x07, 0x0b,
		0x65, 0x14, 0xb1, 0x2a, 0x50, 0x50, 0x5a, 0x59, 0x2b, 0x09, 0xfe, 0xa5, 0x92, 0x36, 0x58, 0xe1,
		0x1c, 0x88, 0x5f, 0x61, 0xaa, 0x07, 0x80, 0xbb, 0x2d, 0x7b, 0x18, 0x10, 0x40, 0xbe, 0x90, 0xcf,
		0xac, 0xb6, 0xee, 0xd6, 0x3f, 0xea, 0xa6, 0x93, 0x55, 0x70, 0x34, 0x8d, 0x6e, 0xc3, 0xba, 0xd0,
		0xed, 0xcf, 0xe0, 0x8c, 0xf3, 0xa9, 0x10, 0x1c, 0xb3, 0x61, 0x9b, 0x6f, 0x81, 0x55, 0x95, 0x5e,
		0xea, 0x40, 0xa6, 0x39, 0x55, 0x09, 0x1c, 0x2c, 0xb6, 0xfa, 0x56, 0xd8, 0xd5, 0xf6, 0xcb, 0xdd,
		0x30, 0x2f, 0x74, 0xbb, 0xab, 0xbb, 0xa6, 0x6e, 0x7c, 0x3c, 0x3b, 0xb1, 0x6c, 0xb7, 0xde, 0xbc,
		0xd0, 0x6d, 0xc7, 0xe8, 0xea, 0xed, 0x89, 0x2e, 0xe0, 0x5c, 0x73, 0xa4, 0x0c, 0xb8, 0x55, 0x6c,
		0xef, 0x82, 0x5b, 0x54, 0x09, 0x25, 0xde, 0xb5, 0x5a, 0x46, 0xc3, 0x70, 0xea, 0x8e, 0x61, 0x99,
		0xf0, 0xa7, 0x39, 0xd2, 0x05, 0xdc, 0x29, 0x36, 0x77, 0xb1, 0x0d, 0x6a, 0xfb, 0x05, 0xde, 0xb6,
		0x4e, 0x8c, 0x96, 0xee, 0x76, 0x6c, 0xfd, 0xd4, 0xf8, 0x04, 0x6c, 0xaa, 0xd0, 0x97, 0xfe, 0x4a,
		0x13, 0xf0, 0xa4, 0xd8, 0xd8, 0x45, 0x36, 0xa7, 0xb2, 0x89, 0x1b, 0x90, 0x34, 0x27, 0x6e, 0x14,
		0x78, 0x14, 0xdb, 0x7a, 0x5b, 0xac, 0xa9, 0x04, 0xd2, 0x3e, 0x6f, 0x39, 0x46, 0xa3, 0xde, 0x75,
		0xdc, 0x96, 0xd1, 0x75, 0x74, 0x53, 0xb7, 0xdd, 0xa6, 0x65, 0x62, 0xb0, 0x78, 0x3e, 0xb4, 0x00,
		0xf7, 0x89, 0x0d, 0x5d, 0x54, 0x53, 0x2a, 0xa5, 0xa8, 0xd3, 0x8a, 0x7f, 0x38, 0xcf, 0x7c, 0xa8,
		0x01, 0xde, 0x13, 0x5b, 0xba, 0xb0, 0xb6, 0x54, 0x4a, 0x59, 0xdb, 0x7a, 0xc7, 0xb2, 0xc1, 0x82,
		0xe6, 0x45, 0x0f, 0x70, 0xa0, 0xd8, 0xd4, 0xc5, 0x35, 0xa6, 0xed, 0x17, 0xb6, 0xd9, 0x6c, 0xea,
		0xae, 0x61, 0x9e, 0x5a, 0x76, 0x7b, 0x4a, 0x90, 0xd8, 0x7a, 0xb7, 0x63, 0x99, 0x5d, 0xa4, 0xef,
		0xcc, 0x7a, 0xb0, 0x9e, 0xd2, 0x83, 0xad, 0x9f, 0x9e, 0x77, 0x39, 0xc7, 0xb5, 0x2b, 0x30, 0xfe,
		0xdc, 0x2b, 0xa1, 0x7b, 0xde, 0x68, 0xe8, 0xdd, 0x2e, 0x94, 0xa0, 0x52, 0x09, 0xe7, 0xe6, 0x9f,
		0xa6, 0xf5, 0x1f, 0x13, 0x58, 0x02, 0xe1, 0xed, 0xd9, 0xc6, 0x84, 0xfa, 0xdd, 0x1c, 0xec, 0x68,
		0xd4, 0xed, 0x62, 0x3b, 0x6f, 0x95, 0x25, 0x95, 0x48, 0xd2, 0x28, 0x8a, 0x50, 0xef, 0x37, 0x51,
		0x0f, 0x81, 0xcd, 0xbc, 0x05, 0x86, 0x54, 0x02, 0x41, 0x3f, 0xce, 0x5d, 0x70, 0x98, 0x97, 0x1b,
		0x25, 0x18, 0x9d, 0x8b, 0x5a, 0x7a, 0x89, 0x12, 0x49, 0xbc, 0x4a, 0x1d, 0x1c, 0x42, 0x07, 0x6a,
		0x75, 0x60, 0xd6, 0xdb, 0x00, 0x0f, 0x88, 0x69, 0x05, 0x74, 0xa7, 0x65, 0x96, 0xf5, 0x21, 0x64,
		0xbd, 0x8d, 0xee, 0xb1, 0x84, 0x62, 0x56, 0x77, 0xb0, 0x55, 0x66, 0x61, 0xb3, 0x1f, 0x60, 0x95,
		0x59, 0xd8, 0xec, 0x07, 0x55, 0xdb, 0x2f, 0xec, 0x4e, 0xbd, 0xf1, 0xa7, 0xee, 0xb8, 0x8e, 0x65,
		0xb9, 0x27, 0xc6, 0x47, 0x64, 0xd4, 0x2a, 0x85, 0x0f, 0x06, 0x12, 0xdb, 0xb7, 0x60, 0x16, 0x54,
		0x06, 0x09, 0xdb, 0xf5, 0xb6, 0xdb, 0xb1, 0xad, 0x93, 0x96, 0xde, 0x86, 0x7f, 0x54, 0x28, 0x7b,
		0xdd, 0xb6, 0xdd, 0xb3, 0xa6, 0xed, 0x9e, 0x1a, 0x7a, 0x0b, 0x65, 0x5b, 0xfc, 0xe2, 0xff, 0xe4,
		0xa4, 0xe2, 0x6f, 0x9c, 0xd5, 0x0d, 0x33, 0xf5, 0x38, 0x2d, 0xcb, 0xfc, 0x08, 0x3d, 0xa8, 0xd2,
		0xc3, 0xcc, 0xe7, 0x43, 0x01, 0xdc, 0x0a, 0x30, 0xcc, 0x86, 0xd5, 0xee, 0xb4, 0x74, 0x47, 0xbf,
		0xdf, 0x0f, 0xd0, 0x02, 0xb7, 0x16, 0xac, 0x8e, 0x83, 0x2d, 0xa0, 0x4a, 0xf8, 0x5d, 0xdb, 0x3d,
		0xef, 0x74, 0xf4, 0x69, 0x3c, 0xd6, 0x6d, 0x1c, 0x3b, 0xb1, 0x6b, 0x60, 0x62, 0xfa, 0xed, 0xba,
		0xf9, 0x79, 0x1e, 0x0e, 0x50, 0x42, 0xad, 0x4e, 0x05, 0x56, 0xc7, 0x81, 0xf8, 0xd9, 0xc5, 0x7f,
		0x6e, 0xda, 0x7a, 0xc3, 0xfa, 0x68, 0x1a, 0xff, 0xa3, 0x37, 0xa7, 0x27, 0x39, 0x56, 0xc7, 0x81,
		0x1a, 0x94, 0xaa, 0xc1, 0xd4, 0x67, 0xd8, 0xf4, 0x73, 0x07, 0x23, 0x4a, 0x55, 0xab, 0xe2, 0x93,
		0x52, 0x5d, 0x80, 0x52, 0x2c, 0x96, 0x6d, 0xe5, 0x8b, 0x74, 0x29, 0x9d, 0x98, 0x15, 0x93, 0x2b,
		0x65, 0x95, 0x37, 0x7b, 0x06, 0x59, 0x36, 0x41, 0xab, 0x25, 0x4b, 0xca, 0x26, 0x6d, 0x25, 0xa4,
		0x48, 0xd9, 0x84, 0xac, 0x8e, 0xfc, 0x28, 0x9b, 0xa4, 0x15, 0x92, 0x1c, 0xa5, 0x15, 0x35, 0x2f,
		0x99, 0x51, 0x36, 0x31, 0x2b, 0x26, 0x2d, 0x4a, 0x2d, 0x6e, 0x35, 0xe4, 0x44, 0xc9, 0x45, 0xfe,
		0x09, 0x32, 0xa7, 0x90, 0xb9, 0xad, 0x37, 0x0d, 0x5b, 0x6f, 0xa0, 0xe3, 0x82, 0x22, 0xb1, 0xa3,
		0x54, 0x0f, 0x5b, 0xb6, 0x30, 0xb6, 0x53, 0x06, 0xd9, 0x9a, 0xe7, 0xed, 0x13, 0xdd, 0x36, 0x4c,
		0x94, 0x30, 0xab, 0x94, 0x7c, 0xbb, 0x5d, 0x37, 0x51, 0x9a, 0xc7, 0x24, 0x76, 0x73, 0x26, 0x76,
		0x5b, 0xef, 0x9e, 0xb7, 0x70, 0xf2, 0xc9, 0x2c, 0xf5, 0xae, 0xfe, 0x6f, 0xd7, 0x3c, 0x6f, 0x4f,
		0xa4, 0xaf, 0x3b, 0xc0, 0x01, 0x88, 0x55, 0x85, 0xf0, 0x98, 0xe5, 0x10, 0xaf, 0x2a, 0xcf, 0x58,
		0x2e, 0xe9, 0x2a, 0xf2, 0x80, 0x25, 0x10, 0xb2, 0x75, 0xee, 0xe8, 0x68, 0xad, 0xa8, 0x34, 0xd2,
		0xaf, 0x52, 0x01, 0x92, 0x7e, 0x6c, 0xe5, 0x42, 0xda, 0x51, 0x69, 0xe4, 0x8c, 0xa6, 0x8a, 0xaa,
		0x3d, 0x26, 0x5a, 0x2a, 0x62, 0x23, 0x17, 0xde, 0x8c, 0xb6, 0x5f, 0xcc, 0x8e, 0xd1, 0xd6, 0x5d,
		0xfd, 0x53, 0x43, 0xd7, 0x9b, 0x7a, 0x13, 0x9e, 0x52, 0xa1, 0xec, 0x4f, 0xed, 0xfa, 0xc7, 0x14,
		0x15, 0xd8, 0x7a, 0xbd, 0xdb, 0xd5, 0xdb, 0x27, 0xad, 0xcf, 0xa0, 0xf2, 0xb8, 0x95, 0x70, 0x66,
		0x75, 0xdc, 0x96, 0xd1, 0x36, 0x40, 0xe4, 0xc1, 0x87, 0x16, 0x71, 0x1f, 0x97, 0x4d, 0xd8, 0x0a,
		0xf6, 0x2b, 0xcf, 0x3e, 0xa5, 0xdf, 0x9f, 0xb4, 0x9f, 0x83, 0xd8, 0x10, 0xab, 0xe2, 0x47, 0x12,
		0x79, 0xda, 0x38, 0x88, 0x13, 0xef, 0xeb, 0x70, 0x62, 0x18, 0xf4, 0xe6, 0x58, 0x8d, 0xc4, 0x40,
		0x44, 0x22, 0xe8, 0x09, 0x36, 0xb0, 0xc2, 0xb7, 0xc7, 0xee, 0x71, 0xf7, 0x69, 0xa3, 0x52, 0xab,
		0xd5, 0xde, 0x1d, 0x57, 0x8c, 0x20, 0x11, 0x51, 0x20, 0x92, 0x4a, 0x23, 0x0c, 0x92, 0x28, 0x1c,
		0x56, 0xda, 0x22, 0x8e, 0xbd, 0x2b, 0x51, 0xe9, 0x44, 0x61, 0x12, 0xf6, 0xc2, 0x61, 0xe5, 0xb5,
		0xd1, 0x68, 0x77, 0xbe, 0x1d, 0xbe, 0xf9, 0x2b, 0xb8, 0x7f, 0xd0, 0x20, 0x8c, 0xee, 0x7f, 0x33,
		0xfb, 0xc9, 0x0b, 0x11, 0xc5, 0x7e, 0x18, 0x54, 0x0e, 0x2b, 0xaf, 0x8d, 0xc7, 0xbf, 0xd1, 0x1d,
		0x89, 0x9e, 0x3f, 0xf0, 0x7b, 0x5e, 0xe2, 0x87, 0xc1, 0x5b, 0x46, 0xf8, 0x59, 0xed, 0x86, 0xe3,
		0xa8, 0xc7, 0x63, 0x3c, 0x0f, 0xd6, 0xfd, 0x53, 0xdc, 0x7e, 0x0f, 0xa3, 0xfe, 0x44, 0xdc, 0xf7,
		0x36, 0xc5, 0x0c, 0xbb, 0xcf, 0xbc, 0xb8, 0x1e, 0x5d, 0x8d, 0x6f, 0x44, 0x90, 0x54, 0x8f, 0x2b,
		0x49, 0x34, 0x16, 0xcc, 0x6f, 0x60, 0x61, 0x75, 0xf5, 0x46, 0xb7, 0x65, 0xd1, 0x83, 0x7e, 0x95,
		0xcb, 0x42, 0x47, 0x8f, 0x7a, 0x10, 0x84, 0x49, 0xaa, 0x7a, 0x9e, 0xc8, 0x71, 0x7b, 0x15, 0x26,
		0x5a, 0xd8, 0xd3, 0x7a, 0xe1, 0xcd, 0x28, 0x12, 0x71, 0x2c, 0xfa, 0xda, 0x50, 0x78, 0x83, 0xc9,
		0xe2, 0xc4, 0x61, 0xf8, 0x55, 0x01, 0x55, 0x54, 0x4d, 0x6e, 0x47, 0xf4, 0x5e, 0x39, 0x8b, 0x78,
		0xe9, 0x6a, 0xc4, 0x06, 0xf7, 0xa7, 0x1f, 0x4c, 0xdc, 0xfd, 0x2e, 0xf1, 0x32, 0x8d, 0x30, 0x18,
		0xf8, 0x57, 0x0c, 0x0b, 0x75, 0x22, 0x31, 0xf0, 0x7f, 0xf0, 0x6c, 0x9e, 0xb9, 0x9e, 0xc2, 0x9e,
		0x36, 0xfa, 0x3b, 0xd1, 0x6e, 0xbc, 0xa4, 0x77, 0xcd, 0x10, 0x2d, 0xb9, 0xd1, 0xc1, 0x22, 0x2a,
		0x18, 0x4d, 0xc5, 0xcb, 0x13, 0x91, 0x95, 0x41, 0x81, 0x07, 0x10, 0xe0, 0x81, 0x76, 0x91, 0xfc,
		0xfc, 0x52, 0x6e, 0x0e, 0x87, 0x7f, 0x7c, 0xb0, 0xf7, 0xfc, 0xbe, 0x08, 0x12, 0x3f, 0xb9, 0x8d,
		0xc4, 0x80, 0x63, 0xeb, 0xcd, 0xdc, 0xe5, 0xde, 0x01, 0xc3, 0x5a, 0xc6, 0xec, 0xa3, 0x9d, 0x78,
		0x31, 0xe3, 0x66, 0xcf, 0xe8, 0x8c, 0xcf, 0x1d, 0x2e, 0xc6, 0x5d, 0x05, 0xd3, 0xae, 0x88, 0x24,
		0x6a, 0xe8, 0xb6, 0x63, 0x9c, 0x1a, 0x8d, 0xe9, 0xb1, 0x51, 0xa7, 0xee, 0x9c, 0x3d, 0x3c, 0x79,
		0x07, 0x21, 0x47, 0x2a, 0xeb, 0xc5, 0x43, 0x3b, 0x88, 0x5a, 0x9e, 0xa8, 0x9b, 0x7a, 0xd7, 0x31,
		0xcc, 0xa9, 0xa0, 0xcf, 0x4d, 0x5b, 0xaf, 0x37, 0xce, 0xea, 0x27, 0x2d, 0x9c, 0x87, 0xca, 0x14,
		0xf1, 0x79, 0xa7, 0x35, 0xb1, 0x65, 0x3d, 0x1d, 0x07, 0xa3, 0x77, 0xbb, 0x6e, 0xc3, 0x32, 0x4f,
		0x8d, 0xd9, 0x04, 0x02, 0x48, 0x9a, 0x52, 0xd2, 0xb6, 0xfe, 0xef, 0x73, 0xbd, 0x0b, 0xe7, 0x2c,
		0x51, 0xc8, 0x7a, 0xe3, 0xcc, 0x72, 0x6d, 0xbd, 0x83, 0x33, 0x28, 0x02, 0xa9, 0xc2, 0x5a, 0x65,
		0xcb, 0xf5, 0x93, 0xe3, 0xc2, 0x62, 0x89, 0x25, 0x0b, 0xab, 0x95, 0x2c, 0xdb, 0xd3, 0xb6, 0xd1,
		0xb9, 0x38, 0x84, 0x44, 0xe5, 0x49, 0xf4, 0xcc, 0x6a, 0xeb, 0x6e, 0xfd, 0xa3, 0x6e, 0x3a, 0x19,
		0x36, 0x68, 0x1a, 0xdd, 0x86, 0x75, 0xa1, 0xdb, 0x9f, 0xe1, 0x1b, 0x98, 0xa5, 0x0d, 0x7f, 0x21,
		0x59, 0xde, 0x46, 0xcb, 0xec, 0x5c, 0x1c, 0xba, 0x2d, 0xab, 0x51, 0x77, 0x2c, 0xdb, 0x3d, 0xef,
		0x34, 0xeb, 0x0e, 0x72, 0x38, 0x99, 0x02, 0x36, 0x2f, 0x74, 0xbb, 0xab, 0xbb, 0xd9, 0x54, 0x76,
		0x70, 0x3f, 0x5c, 0x92, 0x06, 0xf3, 0x43, 0x23, 0xe8, 0xb6, 0x75, 0x62, 0xb4, 0x74, 0xb7, 0x63,
		0xeb, 0xa7, 0xc6, 0x27, 0xd8, 0x33, 0x8f, 0x98, 0x61, 0xcc, 0x44, 0x52, 0xee, 0xb4, 0xdc, 0x86,
		0x65, 0x3a, 0xb6, 0xd5, 0x82, 0x58, 0x25, 0x8a, 0xf5, 0xbc, 0xe5, 0x18, 0x8d, 0x7a, 0xd7, 0x71,
		0x5b, 0x46, 0xd7, 0xd1, 0x4d, 0xdd, 0x76, 0x9b, 0x96, 0x09, 0x64, 0x41, 0x2b, 0xe2, 0x74, 0xa8,
		0x35, 0x64, 0x4c, 0x2a, 0x63, 0x5b, 0xef, 0x58, 0x36, 0x02, 0x1d, 0x89, 0x90, 0x57, 0x5d, 0x4c,
		0x86, 0xa4, 0x09, 0x25, 0x0d, 0x54, 0xc1, 0x24, 0x68, 0x47, 0xb7, 0xdb, 0xb3, 0xd3, 0x52, 0xc8,
		0x59, 0x9e, 0x9c, 0x91, 0x55, 0xb3, 0x49, 0x18, 0xae, 0x82, 0x48, 0xc0, 0x56, 0x53, 0x77, 0x0d,
		0xf3, 0xd4, 0x9a, 0x1d, 0xeb, 0x03, 0xc4, 0x91, 0x4b, 0xd8, 0xd6, 0xbb, 0x1d, 0xcb, 0xec, 0x22,
		0x1b, 0x91, 0x28, 0xe4, 0x87, 0x33, 0xdf, 0x21, 0x59, 0x99, 0x92, 0xb5, 0xeb, 0x6d, 0x7d, 0x02,
		0x22, 0x66, 0xdd, 0xcc, 0x21, 0x5c, 0x79, 0xc2, 0x9d, 0xf7, 0x3f, 0x86, 0x4c, 0x65, 0xca, 0x34,
		0x6b, 0xc7, 0x07, 0xb1, 0x4a, 0x14, 0x2b, 0x92, 0x63, 0x0e, 0xf9, 0x02, 0xe7, 0x12, 0x89, 0x17,
		0x44, 0x3b, 0x85, 0x58, 0x1f, 0xb4, 0xa0, 0x80, 0x60, 0xe5, 0x09, 0xf6, 0x42, 0xb7, 0xbb, 0x86,
		0x65, 0xee, 0xbb, 0xcb, 0x1c, 0x30, 0xfa, 0x7b, 0xe4, 0xeb, 0x73, 0xa0, 0xbf, 0x47, 0xb1, 0xf6,
		0x19, 0xfa, 0x7b, 0x30, 0xfa, 0x33, 0xf4, 0xf7, 0x40, 0x7f, 0x8f, 0x82, 0xaf, 0x82, 0xfe, 0x1e,
		0x2f, 0x59, 0x6f, 0x1b, 0xfb, 0x7b, 0xbc, 0x2a, 0x90, 0xe2, 0xb9, 0x14, 0x5e, 0x8d, 0x7b, 0xd7,
		0xe2, 0xc6, 0x1b, 0x79, 0xc9, 0xf5, 0xc4, 0xad, 0xed, 0x84, 0x23, 0x11, 0xf4, 0xd2, 0x9e, 0x1b,
		0x5a, 0x20, 0x92, 0xef, 0x61, 0xf4, 0xb7, 0xe6, 0x4f, 0x20, 0x4b, 0xd0, 0x13, 0x3b, 0x8f, 0x5f,
		0x88, 0x97, 0x5e, 0xd9, 0x19, 0x85, 0x43, 0xbf, 0x77, 0xab, 0x0d, 0xc2, 0xe8, 0xbb, 0x17, 0xf5,
		0xfd, 0xe0, 0x6a, 0xfa, 0x8a, 0x2f, 0xe2, 0xd9, 0xb7, 0x76, 0xa2, 0xf1, 0x50, 0xc4, 0xe9, 0x9f,
		0x3b, 0xfe, 0xe8, 0xdb, 0xe1, 0x8e, 0xdf, 0xbb, 0x99, 0xfc, 0x6f, 0xba, 0x26, 0x8d, 0x57, 0x93,
		0xaf, 0x78, 0x02, 0xa5, 0x57, 0xe3, 0xc4, 0x4b, 0xe8, 0x22, 0x7b, 0x86, 0x96, 0xa6, 0xcb, 0x10,
		0x19, 0xed, 0xbc, 0xcb, 0x01, 0xd1, 0xe3, 0xb3, 0x66, 0x30, 0xfb, 0x44, 0x0b, 0x30, 0x34, 0x81,
		0xe1, 0x6e, 0xfe, 0xc2, 0x05, 0x19, 0xd9, 0x9b, 0xbd, 0xb0, 0xe3, 0x41, 0x05, 0xcd, 0x5d, 0x8a,
		0x15, 0xb2, 0x9a, 0x7e, 0x44, 0xbb, 0x75, 0x7a, 0x61, 0x9f, 0xb1, 0x8b, 0x56, 0xba, 0x1a, 0xba,
		0x68, 0xe5, 0xcd, 0x81, 0xaa, 0x72, 0xa4, 0xaa, 0x72, 0x70, 0x74, 0xd1, 0x42, 0x17, 0xad, 0x67,
		0xca, 0x0d, 0x5d, 0xb4, 0x24, 0xae, 0xa5, 0xb6, 0x8b, 0x16, 0xe3, 0xdc, 0x8a, 0x12, 0x75, 0xd1,
		0x6a, 0x76, 0x9d, 0xc5, 0x36, 0x43, 0xe9, 0xed, 0x60, 0x1c, 0x77, 0xd1, 0xc9, 0xf7, 0x44, 0xff,
		0x6c, 0x99, 0x4d, 0xb7, 0xdb, 0xb0, 0x3a, 0xba, 0x6b, 0x9d, 0xba, 0x5d, 0xbb, 0x01, 0x71, 0xd3,
		0x89, 0x1b, 0xc3, 0x6e, 0xca, 0xe3, 0x4c, 0x14, 0x58, 0x79, 0x4e, 0xe5, 0xae, 0xd4, 0xc9, 0x40,
		0x0d, 0x73, 0x35, 0x4c, 0xfe, 0x5d, 0x6f, 0xb6, 0x0d, 0xd3, 0xed, 0xd8, 0xd6, 0x99, 0x71, 0x62,
		0x38, 0x3a, 0xe6, 0xe5, 0x2b, 0xd0, 0x83, 0x6e, 0xdb, 0xae, 0x61, 0x4e, 0x76, 0x41, 0x7a, 0x6d,
		0xc8, 0x30, 0x3f, 0xba, 0x67, 0x70, 0x4c, 0x2a, 0x34, 0x71, 0xd6, 0xb4, 0xbb, 0x69, 0x2d, 0x7b,
		0xcb, 0xe2, 0x2c, 0x62, 0x85, 0x02, 0xe6, 0x0a, 0x30, 0xad, 0xe9, 0xcd, 0x39, 0xd7, 0xb1, 0x26,
		0xee, 0x09, 0x2a, 0xe0, 0x57, 0x01, 0xef, 0x35, 0x67, 0xc8, 0x7d, 0x2e, 0x77, 0x5b, 0xff, 0x7f,
		0x7a, 0xc3, 0x81, 0xf9, 0x2b, 0x56, 0xc3, 0x24, 0x0a, 0x4f, 0xf2, 0x02, 0xf7, 0xb4, 0x6e, 0xb4,
		0xf4, 0xa6, 0xdb, 0xb1, 0x5a, 0x46, 0xe3, 0x33, 0x46, 0x31, 0x22, 0xc7, 0x2f, 0x26, 0xcc, 0x2e,
		0x9f, 0xbc, 0x55, 0xc3, 0xe9, 0xf2, 0x49, 0x5c, 0x11, 0x6c, 0x2e, 0x9f, 0xa0, 0x95, 0xc1, 0xe3,
		0xf2, 0x89, 0x1a, 0xdd, 0x7e, 0xb6, 0x18, 0xee, 0x96, 0x4f, 0xdc, 0xaa, 0x61, 0x6d, 0x39, 0x67,
		0x49, 0x74, 0x5a, 0x9f, 0x71, 0xc4, 0x93, 0x0b, 0x2d, 0x34, 0xeb, 0x38, 0x62, 0x50, 0x28, 0x7e,
		0xbd, 0x59, 0x9f, 0xa0, 0xf1, 0x0b, 0x7b, 0x6f, 0xff, 0x3d, 0xf4, 0x90, 0x07, 0x3d, 0x7c, 0xd8,
		0x87, 0x1e, 0x72, 0xa0, 0x87, 0xfd, 0x83, 0x43, 0xe8, 0x21, 0x07, 0x7a, 0x38, 0xac, 0x81, 0xe2,
		0x03, 0xd6, 0x2b, 0x14, 0xca, 0x28, 0xaf, 0x98, 0xd5, 0xa0, 0x09, 0xc8, 0x9b, 0x17, 0x35, 0x40,
		0xde, 0xbc, 0xe8, 0x00, 0xf2, 0x66, 0x45, 0x01, 0x25, 0x9e, 0xae, 0x09, 0x4e, 0x24, 0x27, 0x7a,
		0x68, 0xd6, 0x51, 0x66, 0xa6, 0x54, 0x01, 0x7a, 0xb3, 0x6e, 0x83, 0x17, 0xc9, 0x97, 0x26, 0xc0,
		0x8c, 0xe4, 0x44, 0x13, 0xe0, 0x46, 0xf2, 0xa2, 0x09, 0xb0, 0x23, 0xc0, 0x7d, 0x85, 0xc3, 0x1b,
		0x65, 0x16, 0xb4, 0x1a, 0x5c, 0x01, 0x89, 0x83, 0x23, 0xd9, 0x76, 0x9c, 0x00, 0x89, 0x83, 0x27,
		0x91, 0x2c, 0xf0, 0xd9, 0x50, 0x7c, 0x14, 0x8b, 0x28, 0x14, 0xbc, 0x69, 0x4d, 0x65, 0x0f, 0x98,
		0x8b, 0x6d, 0x5b, 0x00, 0xeb, 0x29, 0x8d, 0x74, 0xc1, 0x17, 0x2b, 0x16, 0x3d, 0x1c, 0x23, 0xb6,
		0x6e, 0xa1, 0xec, 0xa7, 0x04, 0xf2, 0xfd, 0xe4, 0xb8, 0xc0, 0x8c, 0xaa, 0x9c, 0xe3, 0x43, 0xe1,
		0xb7, 0xeb, 0xad, 0x53, 0xcb, 0x6e, 0xeb, 0x4d, 0xee, 0xf9, 0x8d, 0x0a, 0xcc, 0x3d, 0xa7, 0x1a,
		0x38, 0x6f, 0x39, 0x46, 0xa7, 0xa5, 0xbb, 0x86, 0xe9, 0x9c, 0xba, 0xdd, 0xba, 0x63, 0x74, 0x4f,
		0x3f, 0x43, 0x1b, 0x8a, 0xb4, 0x61, 0x5a, 0xae, 0x6e, 0xdb, 0x16, 0x8e, 0x95, 0x95, 0x88, 0xbe,
		0x7b, 0xde, 0x38, 0x9b, 0xec, 0x03, 0xdd, 0x3e, 0xad, 0x37, 0x74, 0xe8, 0x40, 0x99, 0x0e, 0x9c,
		0xe9, 0x4d, 0x64, 0xd3, 0xb1, 0xd1, 0x3a, 0x00, 0xc8, 0xae, 0x70, 0xe0, 0xa2, 0x7c, 0x92, 0xce,
		0x03, 0x88, 0x28, 0x9d, 0xd4, 0xf9, 0xc1, 0x42, 0x19, 0x45, 0xac, 0x0a, 0x14, 0x94, 0x56, 0xd6,
		0x4a, 0x82, 0x7f, 0xa9, 0xa4, 0x0d, 0x56, 0x38, 0x07, 0xe2, 0x57, 0x98, 0xea, 0x01, 0xe0, 0x6e,
		0xcb, 0x1e, 0x06, 0x04, 0x90, 0x2f, 0xe4, 0x33, 0xab, 0xad, 0xbb, 0xf5, 0x8f, 0xba, 0xe9, 0x64,
		0x15, 0x1c, 0x4d, 0xa3, 0xdb, 0xb0, 0x2e, 0x74, 0xfb, 0x33, 0x38, 0xe3, 0x7c, 0x2a, 0x04, 0xc7,
		0x6c, 0xd8, 0xe6, 0x5b, 0x60, 0x55, 0xa5, 0x97, 0x3a, 0x90, 0x69, 0x4e, 0x55, 0x02, 0x07, 0x8b,
		0xad, 0xbe, 0x15, 0x76, 0xb5, 0xfd, 0x72, 0x37, 0xcc, 0x0b, 0xdd, 0xee, 0xea, 0xae, 0xa9, 0x1b,
		0x1f, 0xcf, 0x4e, 0x2c, 0xdb, 0xad, 0x37, 0x2f, 0x74, 0xdb, 0x31, 0xba, 0x7a, 0x7b, 0xa2, 0x0b,
		0x38, 0xd7, 0x1c, 0x29, 0x03, 0x6e, 0x15, 0xdb, 0xbb, 0xe0, 0x16, 0x55, 0x42, 0x89, 0x77, 0xad,
		0x96, 0xd1, 0x30, 0x9c, 0xba, 0x63, 0x58, 0x26, 0xfc, 0x69, 0x8e, 0x74, 0x01, 0x77, 0x8a, 0xcd,
		0x5d, 0x6c, 0x83, 0xda, 0x7e, 0x81, 0xb7, 0xad, 0x13, 0xa3, 0xa5, 0xbb, 0x1d, 0x5b, 0x3f, 0x35,
		0x3e, 0x01, 0x9b, 0x2a, 0xf4, 0xa5, 0xbf, 0xd2, 0x04, 0x3c, 0x29, 0x36, 0x76, 0x91, 0xcd, 0xa9,
		0x6c, 0xe2, 0x06, 0x24, 0xcd, 0x89, 0x1b, 0x05, 0x1e, 0xc5, 0xb6, 0xde, 0x16, 0x6b, 0x2a, 0x81,
		0xb4, 0xcf, 0x5b, 0x8e, 0xd1, 0xa8, 0x77, 0x1d, 0xb7, 0x65, 0x74, 0x1d, 0xdd, 0xd4, 0x6d, 0xb7,
		0x69, 0x99, 0x18, 0x2c, 0x9e, 0x0f, 0x2d, 0xc0, 0x7d, 0x62, 0x43, 0x17, 0xd5, 0x94, 0x4a, 0x29,
		0xea, 0xb4, 0xe2, 0x1f, 0xce, 0x33, 0x1f, 0x6a, 0x80, 0xf7, 0xc4, 0x96, 0x2e, 0xac, 0x2d, 0x95,
		0x52, 0xd6, 0xb6, 0xde, 0xb1, 0x6c, 0xb0, 0xa0, 0x79, 0xd1, 0x03, 0x1c, 0x28, 0x36, 0x75, 0x71,
		0x8d, 0x69, 0xfb, 0x85, 0x6d, 0x36, 0x9b, 0xba, 0x6b, 0x98, 0xa7, 0x96, 0xdd, 0x9e, 0x12, 0x24,
		0xb6, 0xde, 0xed, 0x58, 0x66, 0x17, 0xe9, 0x3b, 0xb3, 0x1e, 0xac, 0xa7, 0xf4, 0x60, 0xeb, 0xa7,
		0xe7, 0x5d, 0xce, 0x71, 0xed, 0x0a, 0x8c, 0x3f, 0xf7, 0x4a, 0xe8, 0x9e, 0x37, 0x1a, 0x7a, 0xb7,
		0x0b, 0x25, 0xa8, 0x54, 0xc2, 0xb9, 0xf9, 0xa7, 0x69, 0xfd, 0xc7, 0x04, 0x96, 0x40, 0x78, 0x7b,
		0xb6, 0x31, 0xa1, 0x7e, 0x37, 0x07, 0x3b, 0x1a, 0x75, 0xbb, 0xd8, 0xce, 0x5b, 0x65, 0x49, 0x25,
		0x92, 0x34, 0x8a, 0x22, 0xd4, 0xfb, 0x4d, 0xd4, 0x43, 0x60, 0x33, 0x6f, 0x81, 0x21, 0x95, 0x40,
		0xd0, 0x8f, 0x73, 0x17, 0x1c, 0xe6, 0xe5, 0x46, 0x09, 0x46, 0xe7, 0xa2, 0x96, 0x5e, 0xa2, 0x44,
		0x12, 0xaf, 0x52, 0x07, 0x87, 0xd0, 0x81, 0x5a, 0x1d, 0x98, 0xf5, 0x36, 0xc0, 0x03, 0x62, 0x5a,
		0x01, 0xdd, 0x69, 0x99, 0x65, 0x7d, 0x08, 0x59, 0x6f, 0xa3, 0x7b, 0x2c, 0xa1, 0x98, 0xd5, 0x1d,
		0x6c, 0x95, 0x59, 0xd8, 0xec, 0x07, 0x58, 0x65, 0x16, 0x36, 0xfb, 0x41, 0xd5, 0xf6, 0x0b, 0xbb,
		0x53, 0x6f, 0xfc, 0xa9, 0x3b, 0xae, 0x63, 0x59, 0xee, 0x89, 0xf1, 0x11, 0x19, 0xb5, 0x4a, 0xe1,
		0x83, 0x81, 0xc4, 0xf6, 0x2d, 0x98, 0x05, 0x95, 0x41, 0xc2, 0x76, 0xbd, 0xed, 0x76, 0x6c, 0xeb,
		0xa4, 0xa5, 0xb7, 0xe1, 0x1f, 0x15, 0xca, 0x5e, 0xb7, 0x6d, 0xf7, 0xac, 0x69, 0xbb, 0xa7, 0x86,
		0xde, 0x42, 0xd9, 0x16, 0xbf, 0xf8, 0x3f, 0x39, 0xa9, 0xf8, 0x1b, 0x67, 0x75, 0xc3, 0x4c, 0x3d,
		0x4e, 0xcb, 0x32, 0x3f, 0x42, 0x0f, 0xaa, 0xf4, 0x30, 0xf3, 0xf9, 0x50, 0x00, 0xb7, 0x02, 0x0c,
		0xb3, 0x61, 0xb5, 0x3b, 0x2d, 0xdd, 0xd1, 0xef, 0xf7, 0x03, 0xb4, 0xc0, 0xad, 0x05, 0xab, 0xe3,
		0x60, 0x0b, 0xa8, 0x12, 0x7e, 0xd7, 0x76, 0xcf, 0x3b, 0x1d, 0x7d, 0x1a, 0x8f, 0x75, 0x1b, 0xc7,
		0x4e, 0xec, 0x1a, 0x98, 0x98, 0x7e, 0xbb, 0x6e, 0x7e, 0x9e, 0x87, 0x03, 0x94, 0x50, 0xab, 0x53,
		0x81, 0xd5, 0x71, 0x20, 0x7e, 0x76, 0xf1, 0x9f, 0x9b, 0xb6, 0xde, 0xb0, 0x3e, 0x9a, 0xc6, 0xff,
		0xe8, 0xcd, 0xe9, 0x49, 0x8e, 0xd5, 0x71, 0xa0, 0x06, 0xa5, 0x6a, 0x30, 0xf5, 0x19, 0x36, 0xfd,
		0xdc, 0xc1, 0x88, 0x52, 0xd5, 0xaa, 0xf8, 0xa4, 0x54, 0x17, 0xa0, 0x14, 0x8b, 0x65, 0x5b, 0xf9,
		0x22, 0x5d, 0x4a, 0x27, 0x66, 0xc5, 0xe4, 0x4a, 0x59, 0xe5, 0xcd, 0x9e, 0x41, 0x96, 0x4d, 0xd0,
		0x6a, 0xc9, 0x92, 0xb2, 0x49, 0x5b, 0x09, 0x29, 0x52, 0x36, 0x21, 0xab, 0x23, 0x3f, 0xca, 0x26,
		0x69, 0x85, 0x24, 0x47, 0x69, 0x45, 0xcd, 0x4b, 0x66, 0x94, 0x4d, 0xcc, 0x8a, 0x49, 0x8b, 0x52,
		0x8b, 0x5b, 0x0d, 0x39, 0x51, 0x72, 0x91, 0x7f, 0x82, 0xcc, 0x29, 0x64, 0x6e, 0xeb, 0x4d, 0xc3,
		0xd6, 0x1b, 0xe8, 0xb8, 0xa0, 0x48, 0xec, 0x28, 0xd5, 0xc3, 0x96, 0x2d, 0x8c, 0xed, 0x94, 0x41,
		0xb6, 0xe6, 0x79, 0xfb, 0x44, 0xb7, 0x0d, 0x13, 0x25, 0xcc, 0x2a, 0x25, 0xdf, 0x6e, 0xd7, 0x4d,
		0x94, 0xe6, 0x31, 0x89, 0xdd, 0x9c, 0x89, 0xdd, 0xd6, 0xbb, 0xe7, 0x2d, 0x9c, 0x7c, 0x32, 0x4b,
		0xbd, 0xab, 0xff, 0xdb, 0x35, 0xcf, 0xdb, 0x13, 0xe9, 0xeb, 0x0e, 0x70, 0x00, 0x62, 0x55, 0x21,
		0x3c, 0x66, 0x39, 0xc4, 0xab, 0xca, 0x33, 0x96, 0x4b, 0xba, 0x8a, 0x3c, 0x60, 0x09, 0x84, 0x6c,
		0x9d, 0x3b, 0x3a, 0x5a, 0x2b, 0x2a, 0x8d, 0xf4, 0xab, 0x54, 0x80, 0xa4, 0x1f, 0x5b, 0xb9, 0x90,
		0x76, 0x54, 0x1a, 0x39, 0xa3, 0xa9, 0xa2, 0x6a, 0x8f, 0x89, 0x96, 0x8a, 0xd8, 0xc8, 0x85, 0x37,
		0xa3, 0xed, 0x17, 0xb3, 0x63, 0xb4, 0x75, 0x57, 0xff, 0xd4, 0xd0, 0xf5, 0xa6, 0xde, 0x84, 0xa7,
		0x54, 0x28, 0xfb, 0x53, 0xbb, 0xfe, 0x31, 0x45, 0x05, 0xb6, 0x5e, 0xef, 0x76, 0xf5, 0xf6, 0x49,
		0xeb, 0x33, 0xa8, 0x3c, 0x6e, 0x25, 0x9c, 0x59, 0x1d, 0xb7, 0x65, 0xb4, 0x0d, 0x10, 0x79, 0xf0,
		0xa1, 0x45, 0xdc, 0xc7, 0x65, 0x13, 0xb6, 0x82, 0xfd, 0xca, 0xb3, 0x4f, 0xe9, 0xf7, 0x27, 0xed,
		0xe7, 0x20, 0x36, 0xc4, 0xaa, 0xf8, 0x91, 0x44, 0x9e, 0x36, 0x0e, 0xe2, 0xc4, 0xfb, 0x3a, 0x9c,
		0x18, 0x06, 0xbd, 0x39, 0x56, 0x23, 0x31, 0x10, 0x91, 0x08, 0x7a, 0x82, 0x0d, 0xac, 0xf0, 0xed,
		0xb1, 0x7b, 0xdc, 0x7d, 0xda, 0xa8, 0xd4, 0x6a, 0xb5, 0x77, 0xc7, 0x15, 0x23, 0x48, 0x44, 0x14,
		0x88, 0xa4, 0xd2, 0x08, 0x83, 0x24, 0x0a, 0x87, 0x95, 0xb6, 0x88, 0x63, 0xef, 0x4a, 0x54, 0x3a,
		0x51, 0x98, 0x84, 0xbd, 0x70, 0x58, 0x79, 0x6d, 0x34, 0xda, 0x9d, 0x6f, 0x87, 0x6f, 0xfe, 0x0a,
		0xee, 0x1f, 0x34, 0x08, 0xa3, 0xfb, 0xdf, 0xcc, 0x7e, 0xf2, 0x42, 0x44, 0xb1, 0x1f, 0x06, 0x95,
		0xc3, 0xca, 0x6b, 0xe3, 0xf1, 0x6f, 0x74, 0x47, 0xa2, 0xe7, 0x0f, 0xfc, 0x9e, 0x97, 0xf8, 0x61,
		0xf0, 0x96, 0x11, 0x7e, 0x56, 0xbb, 0xe1, 0x38, 0xea, 0xf1, 0x18, 0xcf, 0x83, 0x75, 0xff, 0x14,
		0xb7, 0xdf, 0xc3, 0xa8, 0x3f, 0x11, 0xf7, 0xbd, 0x4d, 0x31, 0xc3, 0xee, 0x33, 0x2f, 0xae, 0x47,
		0x57, 0xe3, 0x1b, 0x11, 0x24, 0xd5, 0xe3, 0x4a, 0x12, 0x8d, 0x05, 0xf3, 0x1b, 0x58, 0x58, 0x5d,
		0xbd, 0xd1, 0x6d, 0x59, 0xf4, 0xa0, 0x5f, 0x85, 0x36, 0x3e, 0xd1, 0xbd, 0x7f, 0xc2, 0xb8, 0x54,
		0x4d, 0x6e, 0x47, 0xf4, 0xce, 0x24, 0x73, 0xd4, 0xe9, 0x6a, 0xc4, 0x51, 0xf6, 0x4f, 0x3f, 0x98,
		0x78, 0xa9, 0x5d, 0xe2, 0x65, 0x1a, 0x61, 0x30, 0xf0, 0xaf, 0x18, 0x16, 0xea, 0x44, 0x62, 0xe0,
		0xff, 0xe0, 0x41, 0x0b, 0x73, 0x3d, 0x85, 0x3d, 0x6d, 0xf4, 0x77, 0xa2, 0xdd, 0x78, 0x49, 0xef,
		0x9a, 0xc1, 0xc9, 0x73, 0x07, 0xb5, 0xc5, 0x60, 0x36, 0x9a, 0x8a, 0x97, 0x27, 0x90, 0x28, 0x8b,
		0x60, 0x0f, 0x22, 0xd7, 0x03, 0xed, 0x02, 0xb3, 0xff, 0x52, 0x6e, 0x0e, 0x87, 0x7f, 0x7c, 0xb0,
		0xf7, 0xfc, 0xbe, 0x08, 0x12, 0x3f, 0xb9, 0x8d, 0xc4, 0x80, 0x63, 0xeb, 0xcd, 0xdc, 0xe5, 0xde,
		0x01, 0xc3, 0x5a, 0xc6, 0xec, 0xa3, 0x9d, 0x78, 0x31, 0xe3, 0x66, 0xcf, 0xb2, 0xf0, 0xcf, 0x1d,
		0x2e, 0xa2, 0x58, 0x05, 0x41, 0xac, 0x88, 0xdb, 0x68, 0xe8, 0xb6, 0x63, 0x9c, 0x1a, 0x8d, 0xe9,
		0x69, 0x47, 0xa7, 0xee, 0x9c, 0x3d, 0x3c, 0x30, 0x06, 0x8f, 0x44, 0x2a, 0xeb, 0xc5, 0xb3, 0x26,
		0x88, 0x5a, 0x9e, 0xa8, 0x9b, 0x7a, 0xd7, 0x31, 0xcc, 0xa9, 0xa0, 0xcf, 0x4d, 0x5b, 0xaf, 0x37,
		0xce, 0xea, 0x27, 0x2d, 0x1c, 0xe3, 0xc9, 0x14, 0xf1, 0x79, 0xa7, 0x35, 0xb1, 0x65, 0x3d, 0x9d,
		0x62, 0xa2, 0x77, 0xbb, 0x6e, 0xc3, 0x32, 0x4f, 0x8d, 0x59, 0xe3, 0x7c, 0x48, 0x9a, 0x52, 0xd2,
		0xb6, 0xfe, 0xef, 0x73, 0xbd, 0x0b, 0xe7, 0x2c, 0x51, 0xc8, 0x7a, 0xe3, 0xcc, 0x72, 0x6d, 0xbd,
		0x83, 0xa3, 0x13, 0x02, 0xa9, 0xc2, 0x5a, 0x65, 0xcb, 0xf5, 0x93, 0xe3, 0xc2, 0x62, 0x89, 0x25,
		0x0b, 0xab, 0x95, 0x2c, 0xdb, 0xd3, 0xb6, 0xd1, 0xb9, 0x38, 0x84, 0x44, 0xe5, 0x49, 0xf4, 0xcc,
		0x6a, 0xeb, 0x6e, 0xfd, 0xa3, 0x6e, 0x3a, 0x19, 0x36, 0x68, 0x1a, 0xdd, 0x86, 0x75, 0xa1, 0xdb,
		0x9f, 0xe1, 0x1b, 0x98, 0xa5, 0x0d, 0x7f, 0x21, 0x59, 0xde, 0x46, 0xcb, 0xec, 0x5c, 0x1c, 0xba,
		0x2d, 0xab, 0x51, 0x77, 0x2c, 0xdb, 0x3d, 0xef, 0x34, 0xeb, 0x0e, 0x72, 0x38, 0x99, 0x02, 0x36,
		0x2f, 0x74, 0xbb, 0xab, 0xbb, 0xd9, 0x30, 0x71, 0x70, 0x3f, 0x5c, 0x92, 0x06, 0xf3, 0x43, 0x23,
		0xe8, 0xb6, 0x75, 0x62, 0xb4, 0x74, 0xb7, 0x63, 0xeb, 0xa7, 0xc6, 0x27, 0xd8, 0x33, 0x8f, 0x98,
		0x61, 0xcc, 0x44, 0x52, 0xee, 0xb4, 0xdc, 0x86, 0x65, 0x3a, 0xb6, 0xd5, 0x82, 0x58, 0x25, 0x8a,
		0xf5, 0xbc, 0xe5, 0x18, 0x8d, 0x7a, 0xd7, 0x71, 0x5b, 0x46, 0xd7, 0xd1, 0x4d, 0xdd, 0x76, 0x9b,
		0x96, 0x09, 0x64, 0x41, 0x2b, 0xe2, 0x74, 0x16, 0x33, 0x64, 0x4c, 0x2a, 0x63, 0x5b, 0xef, 0x58,
		0x36, 0x02, 0x1d, 0x89, 0x90, 0x57, 0xdd, 0xa7, 0x85, 0xa4, 0x09, 0x25, 0x0d, 0x54, 0xc1, 0x24,
		0x68, 0x47, 0xb7, 0xdb, 0xb3, 0xd3, 0x52, 0xc8, 0x59, 0x9e, 0x9c, 0x91, 0x55, 0xb3, 0x49, 0x18,
		0xae, 0x82, 0x48, 0xc0, 0x8f, 0xe7, 0xe1, 0x03, 0xc4, 0x51, 0x4b, 0xd8, 0xd6, 0xbb, 0x1d, 0xcb,
		0xec, 0x22, 0x1b, 0x91, 0x28, 0xe4, 0x87, 0xa3, 0xca, 0x21, 0x59, 0x99, 0x92, 0xb5, 0xeb, 0x6d,
		0x7d, 0x02, 0x22, 0x66, 0x4d, 0xb8, 0x21, 0x5c, 0x79, 0xc2, 0x9d, 0xb7, 0xed, 0x85, 0x4c, 0x65,
		0xca, 0x34, 0xeb, 0x22, 0x07, 0xb1, 0x4a, 0x14, 0x2b, 0x92, 0x63, 0x0e, 0xf9, 0x02, 0xe7, 0x12,
		0x89, 0x17, 0x44, 0x3b, 0x85, 0x58, 0x1f, 0x74, 0x4e, 0x80, 0x60, 0xe5, 0x09, 0xf6, 0x42, 0xb7,
		0xbb, 0x86, 0x65, 0xee, 0xbb, 0xcb, 0x1c, 0x30, 0xda, 0x52, 0xe4, 0xeb, 0x73, 0xa0, 0x2d, 0x45,
		0xb1, 0xf6, 0x19, 0xda, 0x52, 0x30, 0xfa, 0x33, 0xb4, 0xa5, 0x40, 0x5b, 0x8a, 0x82, 0xaf, 0x52,
		0xd8, 0xb6, 0x14, 0xaf, 0x0a, 0x14, 0xed, 0xaa, 0xf5, 0x20, 0x08, 0x93, 0xd4, 0x44, 0x49, 0x9d,
		0x54, 0x35, 0xee, 0x5d, 0x8b, 0x1b, 0x6f, 0xe4, 0x25, 0xd7, 0x93, 0xdd, 0xb8, 0x13, 0x8e, 0x44,
		0xd0, 0x4b, 0x5b, 0x45, 0x68, 0x81, 0x48, 0xbe, 0x87, 0xd1, 0xdf, 0x9a, 0x3f, 0x89, 0xb4, 0x41,
		0x4f, 0xec, 0x3c, 0x7e, 0x21, 0x5e, 0x7a, 0x65, 0x67, 0x14, 0x0e, 0xfd, 0xde, 0xad, 0x36, 0x08,
		0xa3, 0xef, 0x5e, 0xd4, 0xf7, 0x83, 0xab, 0xe9, 0x2b, 0xbe, 0x88, 0x67, 0xdf, 0xda, 0x89, 0xc6,
		0x43, 0x11, 0xa7, 0x7f, 0xee, 0xf8, 0xa3, 0x6f, 0x87, 0x3b, 0x7e, 0xef, 0x66, 0xf2, 0xbf, 0x38,
		0xf1, 0x12, 0x41, 0xb3, 0x17, 0xe5, 0xeb, 0x5d, 0xee, 0x13, 0x25, 0x5b, 0x10, 0xb5, 0xe5, 0xe4,
		0xc4, 0x62, 0x08, 0x82, 0x66, 0x35, 0x4e, 0xa2, 0x71, 0x2f, 0x09, 0xe6, 0x07, 0x15, 0xd3, 0xb7,
		0x6a, 0xcc, 0xde, 0xa9, 0xdb, 0x49, 0xdf, 0xce, 0x69, 0xf6, 0x46, 0x67, 0x2f, 0xb8, 0xf6, 0x78,
		0x28, 0x5c, 0x63, 0xf4, 0xed, 0xd0, 0x35, 0xa6, 0xef, 0xec, 0x55, 0x3e, 0x6d, 0x4d, 0xa2, 0x9d,
		0x55, 0xa7, 0xdb, 0x55, 0xb6, 0x79, 0x65, 0x48, 0x74, 0xfa, 0x78, 0xc9, 0xfb, 0x62, 0xde, 0x39,
		0x42, 0xf2, 0x63, 0xb3, 0xc6, 0x3a, 0xfb, 0x92, 0x1f, 0x4c, 0xd8, 0x48, 0x87, 0xab, 0x71, 0x0e,
		0x35, 0xcc, 0x66, 0x6b, 0x8c, 0xc3, 0x86, 0x99, 0x19, 0x1b, 0xdf, 0xe4, 0x3b, 0x8a, 0x35, 0xfd,
		0x88, 0xc6, 0xf4, 0xfb, 0x22, 0x4e, 0xfc, 0x20, 0x8d, 0x8f, 0x9a, 0xd7, 0xef, 0x47, 0x22, 0x8e,
		0xe9, 0xec, 0x73, 0xbe, 0xcf, 0x56, 0x2d, 0x4a, 0x64, 0x40, 0xb4, 0xfd, 0xc4, 0xc8, 0xfb, 0x88,
		0x71, 0xf4, 0x0f, 0xe3, 0xee, 0x1b, 0xc6, 0xc5, 0x36, 0xb0, 0xf7, 0x09, 0x63, 0xa7, 0x12, 0x14,
		0xf4, 0x05, 0x2b, 0x56, 0xda, 0x48, 0xde, 0xff, 0xeb, 0xbe, 0xef, 0xd7, 0xe8, 0xdb, 0xa1, 0x46,
		0x6e, 0x65, 0x19, 0x6a, 0x7b, 0x4f, 0xb8, 0x46, 0xc7, 0x4b, 0x12, 0x11, 0x05, 0xe4, 0xdc, 0x6e,
		0xf5, 0xf5, 0xeb, 0x2f, 0xbb, 0xda, 0x07, 0x4f, 0x1b, 0xd4, 0xb5, 0xd3, 0xcb, 0x7f, 0xf6, 0xfe,
		0xa8, 0xdd, 0x1d, 0xbf, 0xf9, 0xe7, 0xe8, 0xee, 0xf1, 0x8b, 0x3f, 0x57, 0xfd, 0xd8, 0xde, 0x1f,
		0x47, 0x77, 0xc7, 0x4f, 0x7c, 0xe7, 0xf0, 0xee, 0xf8, 0x99, 0xcf, 0x38, 0xb8, 0x7b, 0xbd, 0xf4,
		0xa3, 0x93, 0xd7, 0xf7, 0x9f, 0xfa, 0x85, 0xda, 0x13, 0xbf, 0xf0, 0xee, 0xa9, 0x5f, 0x78, 0xf7,
		0xc4, 0x2f, 0x3c, 0xf9, 0x96, 0xf6, 0x9f, 0xf8, 0x85, 0x83, 0xbb, 0x9f, 0x4b, 0x3f, 0xff, 0x7a,
		0xf5, 0x8f, 0x1e, 0xde, 0xbd, 0xf9, 0xf9, 0xd4, 0xf7, 0x8e, 0xee, 0x7e, 0x1e, 0xbf, 0x79, 0xb3,
		0xf3, 0x7a, 0x6f, 0xff, 0xcb, 0xae, 0xf6, 0xfe, 0xf2, 0xe7, 0xde, 0x97, 0x5d, 0x6d, 0xef, 0x72,
		0xf2, 0x93, 0x97, 0x3f, 0xbf, 0xec, 0x69, 0x1f, 0xe6, 0x7f, 0x9d, 0xfc, 0xf9, 0x86, 0xce, 0x8d,
		0x5c, 0x52, 0xda, 0xaf, 0xd5, 0x35, 0x3e, 0xb1, 0x19, 0xf1, 0xff, 0xc2, 0x8a, 0x73, 0x6e, 0xc5,
		0xff, 0x45, 0x68, 0xc6, 0x45, 0xa1, 0xe8, 0xfe, 0x60, 0xc9, 0x1c, 0x66, 0x01, 0x50, 0x8b, 0x45,
		0xa2, 0x24, 0x89, 0x58, 0x5c, 0x1f, 0xf9, 0x04, 0xf2, 0x09, 0xe4, 0x13, 0xc8, 0x27, 0x0a, 0x9a,
		0x4f, 0x0c, 0x85, 0x37, 0xa0, 0xed, 0x21, 0x9c, 0xe5, 0x12, 0x47, 0xb4, 0xb9, 0xc4, 0xec, 0x5c,
		0xa4, 0x37, 0xf1, 0xca, 0xf1, 0x71, 0x5f, 0x0c, 0xfc, 0x40, 0xf4, 0xd3, 0x7f, 0x64, 0x2f, 0x2e,
		0x24, 0x4f, 0xbf, 0xfc, 0x46, 0xf6, 0x7a, 0x7a, 0x28, 0x81, 0xd8, 0x9b, 0xc6, 0xbe, 0xc1, 0x30,
		0xfc, 0xae, 0x0d, 0xbd, 0xaf, 0x62, 0xc8, 0x1b, 0x73, 0x17, 0xd6, 0x45, 0xac, 0x45, 0xac, 0x45,
		0xac, 0x45, 0xac, 0x2d, 0x32, 0x77, 0x47, 0xee, 0xce, 0x16, 0x5d, 0x1a, 0x65, 0xc8, 0xb5, 0xbd,
		0xe0, 0x8a, 0xbe, 0x30, 0x93, 0xa1, 0xca, 0xb4, 0xed, 0x07, 0x7c, 0x63, 0x06, 0xd2, 0x96, 0xff,
		0xf4, 0xf3, 0x60, 0xb2, 0xf5, 0x4e, 0x23, 0xaf, 0x37, 0x09, 0xa3, 0x4d, 0xff, 0xca, 0x4f, 0x62,
		0xc6, 0x85, 0x4d, 0x71, 0xe5, 0x25, 0xfe, 0xb7, 0xc9, 0x67, 0x1d, 0x78, 0xc3, 0x58, 0xd0, 0x97,
		0x57, 0x33, 0x8c, 0xa6, 0x68, 0x7b, 0x3f, 0xf8, 0x4d, 0x65, 0x6f, 0xb7, 0xf6, 0xfe, 0xe0, 0xe8,
		0x00, 0x06, 0x53, 0x88, 0x30, 0x45, 0xff, 0xf4, 0x52, 0x93, 0x81, 0x71, 0x6f, 0xc4, 0x90, 0x7e,
		0x4c, 0x56, 0x41, 0xb2, 0x81, 0x64, 0x03, 0xc9, 0x06, 0x92, 0x8d, 0x82, 0x26, 0x1b, 0x84, 0x3e,
		0x6c, 0xd1, 0x8f, 0x1d, 0x20, 0xc3, 0x40, 0x86, 0x81, 0x0c, 0xa3, 0xd8, 0x19, 0xc6, 0xe1, 0x3b,
		0xd8, 0x0a, 0x92, 0x0b, 0x24, 0x17, 0x71, 0x6f, 0xc4, 0x54, 0x53, 0x30, 0x5f, 0x09, 0x49, 0x06,
		0x92, 0x0c, 0x24, 0x19, 0x48, 0x32, 0x90, 0x64, 0x20, 0xc9, 0x40, 0x92, 0x01, 0xe0, 0x88, 0x24,
		0x03, 0xb6, 0x82, 0x24, 0x23, 0x5f, 0xe1, 0xb4, 0xe5, 0xc7, 0x49, 0x3d, 0x49, 0x22, 0xda, 0x90,
		0xda, 0xf6, 0x03, 0x7d, 0x28, 0x26, 0xb0, 0x86, 0xd8, 0x64, 0x27, 0xbb, 0x7f, 0x61, 0xa5, 0xbd,
		0xf7, 0xb5, 0xda, 0xe1, 0x51, 0xad, 0xb6, 0x7b, 0xf4, 0xee, 0x68, 0xf7, 0xc3, 0xc1, 0xc1, 0xde,
		0xe1, 0x1e, 0x65, 0xb8, 0xb5, 0xa2, 0xbe, 0x88, 0x44, 0xff, 0xe4, 0xb6, 0x7a, 0x5c, 0x09, 0xc6,
		0xc3, 0x21, 0xc7, 0x52, 0xe7, 0xb1, 0x88, 0x48, 0xf7, 0x64, 0x31, 0xd2, 0xdb, 0xeb, 0x70, 0xa4,
		0x0d, 0xfd, 0x1b, 0x9f, 0x21, 0xbf, 0xbd, 0x5f, 0x0a, 0x09, 0x2e, 0x12, 0x5c, 0x24, 0xb8, 0x48,
		0x70, 0x0b, 0x9a, 0xe0, 0x8e, 0xfd, 0x20, 0x79, 0x8f, 0x0c, 0x17, 0x19, 0x2e, 0xb2, 0x16, 0x64,
		0xb8, 0xbf, 0x33, 0x95, 0xfd, 0x03, 0x14, 0xe9, 0x21, 0xc5, 0x25, 0x4d, 0x71, 0x0b, 0x91, 0x68,
		0x0c, 0x45, 0x70, 0x95, 0x5e, 0xc7, 0x22, 0xce, 0x32, 0x66, 0xeb, 0x20, 0xc5, 0x40, 0x8a, 0x81,
		0x14, 0x03, 0x29, 0x46, 0x81, 0x53, 0x8c, 0xbd, 0x43, 0x86, 0x1c, 0xe3, 0x10, 0x39, 0x06, 0x72,
		0x0c, 0xe4, 0x18, 0xc5, 0xce, 0x31, 0x0e, 0x0f, 0x0e, 0xde, 0x21, 0xcb, 0x40, 0x96, 0x41, 0x9a,
		0x65, 0x10, 0xc5, 0x54, 0xc6, 0x11, 0x22, 0x8c, 0xa3, 0x43, 0x18, 0x82, 0xd2, 0xe2, 0xa8, 0x90,
		0xa3, 0x0f, 0x7b, 0xc7, 0xcb, 0xa3, 0x17, 0xfe, 0x0a, 0x26, 0xdf, 0x7b, 0xbf, 0xbf, 0xbb, 0xbb,
		0xe2, 0x9b, 0x7f, 0x2c, 0x0d, 0x66, 0xe0, 0x1f, 0x01, 0xc2, 0x3d, 0xfa, 0x43, 0xe5, 0xc8, 0x0f,
		0x65, 0xa3, 0x3e, 0x96, 0x46, 0x7c, 0x90, 0x18, 0x0b, 0xbc, 0x31, 0x38, 0x9f, 0x25, 0xcb, 0x1b,
		0xcd, 0xcc, 0x87, 0x9e, 0xf5, 0xc9, 0x56, 0x02, 0xef, 0x03, 0xde, 0x07, 0xbc, 0x0f, 0x78, 0x9f,
		0x82, 0xf2, 0x3e, 0xfe, 0x48, 0x9b, 0xbb, 0x32, 0x2d, 0x99, 0xac, 0xca, 0xd0, 0x82, 0xed, 0x03,
		0xe1, 0x1a, 0x33, 0xc9, 0x6d, 0x0d, 0xd8, 0xa6, 0x3e, 0xfa, 0x7f, 0xac, 0x1c, 0x86, 0xac, 0x9e,
		0x89, 0xa6, 0xe3, 0x53, 0xd6, 0x3d, 0x17, 0xc3, 0x48, 0xdb, 0x2d, 0x71, 0x32, 0xbb, 0xcc, 0x83,
		0xfc, 0x54, 0xf1, 0x32, 0xea, 0xf8, 0x19, 0x62, 0xaf, 0xbf, 0xda, 0xa4, 0x18, 0xe9, 0xbd, 0x25,
		0x93, 0xda, 0x3f, 0xa8, 0xc1, 0xa8, 0xb8, 0x8c, 0x0a, 0x13, 0x22, 0xd5, 0x6f, 0x3d, 0xc6, 0xc0,
		0xee, 0xf7, 0x45, 0x90, 0xf8, 0xc9, 0x2d, 0x6d, 0xdb, 0xdb, 0x25, 0xec, 0xc5, 0x11, 0xdf, 0x8d,
		0xd9, 0x47, 0x3b, 0xf1, 0x62, 0x46, 0xaa, 0x6d, 0x2e, 0x58, 0xa3, 0xe3, 0x76, 0x6c, 0xcb, 0xb1,
		0x1a, 0x56, 0x8b, 0x8b, 0x69, 0x4b, 0xfd, 0x65, 0xcc, 0x86, 0x68, 0x2a, 0xea, 0x46, 0xb1, 0x1b,
		0x1d, 0xb7, 0x7e, 0xee, 0x9c, 0x61, 0xba, 0xbd, 0x54, 0x91, 0x7e, 0xb4, 0x75, 0x48, 0x54, 0xaa,
		0x44, 0x8d, 0x46, 0xbb, 0x03, 0x91, 0xca, 0x15, 0xe9, 0x47, 0x88, 0x54, 0xb6, 0x48, 0x4d, 0xd7,
		0x80, 0x4c, 0xe5, 0xca, 0xb4, 0xb5, 0xef, 0x40, 0xa4, 0x92, 0xe1, 0x94, 0xd1, 0x86, 0x44, 0xa5,
		0x4a, 0xd4, 0xee, 0x5e, 0xc0, 0x48, 0xe5, 0x8a, 0xd4, 0x69, 0x40, 0xa2, 0x72, 0x25, 0x7a, 0xde,
		0xe4, 0x94, 0x28, 0xcb, 0x4a, 0x97, 0xa8, 0x1a, 0x60, 0x95, 0x4c, 0x31, 0xaa, 0x06, 0xe2, 0xf4,
		0x5c, 0x97, 0x6f, 0x20, 0xf4, 0xa3, 0xf5, 0x50, 0x41, 0xb0, 0x72, 0x01, 0x54, 0x10, 0x6c, 0xa0,
		0x7b, 0x54, 0x10, 0x14, 0xc4, 0xf7, 0x62, 0x16, 0xf4, 0xcb, 0xdc, 0x19, 0x66, 0x41, 0x63, 0x8a,
		0x2e, 0x66, 0x41, 0x3f, 0x65, 0xbf, 0x98, 0x05, 0x0d, 0x2b, 0xc6, 0x2c, 0x68, 0xde, 0x7c, 0x81,
		0x75, 0x0c, 0xf4, 0xd3, 0x4b, 0x23, 0x8b, 0x40, 0x16, 0x81, 0x2c, 0x02, 0x59, 0x44, 0x41, 0xb3,
		0x08, 0x4c, 0x80, 0xc6, 0x04, 0xe8, 0xdf, 0x46, 0x5c, 0xce, 0xe1, 0xcf, 0xcb, 0x4b, 0x22, 0xc2,
		0x22, 0xc2, 0x22, 0xc2, 0x22, 0xc2, 0x16, 0x99, 0xa7, 0xc3, 0xdc, 0xe7, 0x17, 0x7d, 0xa1, 0xd5,
		0xcb, 0x66, 0xeb, 0xa1, 0xd5, 0x8b, 0x54, 0x53, 0xc1, 0xdc, 0xe7, 0x2d, 0x32, 0x18, 0x14, 0x0a,
		0xd0, 0xa6, 0x21, 0xaf, 0x72, 0xbc, 0xbd, 0xab, 0xf5, 0x20, 0x08, 0x93, 0xb4, 0x93, 0x05, 0xc9,
		0x8e, 0xae, 0xc6, 0xbd, 0x6b, 0x71, 0xe3, 0x8d, 0xb2, 0x6c, 0x74, 0x24, 0x82, 0x5e, 0x9a, 0x08,
		0x68, 0x81, 0x48, 0xbe, 0x87, 0xd1, 0xdf, 0x9a, 0x1f, 0xc4, 0x89, 0x17, 0xf4, 0xc4, 0xce, 0xe3,
		0x17, 0xe2, 0xa5, 0x57, 0x76, 0x46, 0xe1, 0xd0, 0xef, 0xdd, 0x6a, 0x83, 0x30, 0xfa, 0xee, 0x45,
		0x7d, 0x3f, 0xb8, 0x9a, 0xbe, 0xe2, 0x8b, 0x78, 0xf6, 0xad, 0x9d, 0x68, 0x3c, 0x14, 0x71, 0xfa,
		0xe7, 0xce, 0x04, 0x67, 0xec, 0xc4, 0x89, 0x97, 0x48, 0xce, 0x58, 0xe5, 0x29, 0x54, 0xce, 0x93,
		0x24, 0x99, 0x04, 0x95, 0x29, 0xa8, 0x36, 0x01, 0x89, 0xf8, 0xb2, 0x1a, 0x27, 0xd1, 0xb8, 0x97,
		0x04, 0x33, 0x20, 0x6b, 0x4e, 0xdf, 0x9b, 0x31, 0x7b, 0x6b, 0x6e, 0x27, 0x5d, 0xff, 0x34, 0x7b,
		0x67, 0xb3, 0x17, 0x5c, 0x7b, 0x3c, 0x14, 0xae, 0x31, 0x79, 0x2b, 0xaf, 0xf2, 0x61, 0x35, 0x12,
		0x2c, 0xa6, 0x3a, 0xdc, 0x97, 0x66, 0x25, 0xf7, 0xdc, 0xdb, 0xbe, 0x24, 0x65, 0x65, 0x14, 0x9b,
		0xa4, 0xc7, 0xc9, 0xe6, 0x2e, 0x28, 0xb8, 0x0a, 0x6a, 0x6e, 0x82, 0x8a, 0x8b, 0x20, 0xe7, 0x1e,
		0xc8, 0xb9, 0x06, 0x06, 0x6e, 0x21, 0x5f, 0x91, 0xa2, 0xe9, 0xcb, 0x9d, 0xfe, 0x54, 0xed, 0xcd,
		0xf7, 0x97, 0x64, 0xd3, 0x9a, 0x6f, 0x89, 0xd9, 0xf3, 0x25, 0xab, 0x5d, 0xae, 0x93, 0x21, 0x73,
		0x36, 0x94, 0x4e, 0x87, 0xcb, 0xf9, 0x50, 0x3b, 0x21, 0x36, 0x67, 0xc4, 0xe6, 0x94, 0x18, 0x9d,
		0x53, 0x31, 0x32, 0x1d, 0xd9, 0x4e, 0x2b, 0x7b, 0x70, 0x5f, 0xc4, 0x89, 0x1f, 0xa4, 0xc0, 0x59,
		0xbb, 0xf1, 0x7a, 0x0c, 0xe3, 0xb2, 0x1f, 0x2d, 0x88, 0xf3, 0x20, 0x6e, 0x77, 0xc7, 0xed, 0xf6,
		0xb8, 0xdc, 0x1f, 0xbb, 0x1b, 0x64, 0x77, 0x87, 0x0a, 0xdc, 0x22, 0x2d, 0x15, 0x56, 0xfc, 0xf3,
		0xa0, 0x1b, 0xaf, 0x47, 0x7c, 0x05, 0xa5, 0xb2, 0x75, 0x75, 0xdb, 0x8b, 0x15, 0x99, 0x8f, 0x0b,
		0x3d, 0xf7, 0xef, 0xde, 0xfc, 0x73, 0x70, 0x87, 0xc2, 0xe1, 0xdf, 0xaf, 0xf6, 0xbf, 0xbf, 0x17,
		0x63, 0xf1, 0x2a, 0x57, 0xa9, 0x60, 0x24, 0x2d, 0x51, 0x9c, 0xad, 0x73, 0x7b, 0x15, 0x26, 0x5a,
		0xd8, 0xd3, 0x7a, 0xe1, 0xcd, 0x68, 0xe2, 0x12, 0x44, 0x5f, 0x1b, 0x0a, 0x6f, 0x30, 0x59, 0xf4,
		0xae, 0xc4, 0x85, 0x47, 0x8f, 0x30, 0x9f, 0x76, 0xe3, 0xc5, 0x7f, 0xb3, 0x23, 0xcd, 0xe9, 0xaa,
		0x80, 0x9b, 0x80, 0x9b, 0x80, 0x9b, 0x80, 0x9b, 0x80, 0x9b, 0x80, 0x9b, 0x80, 0x9b, 0x80, 0x9b,
		0x80, 0x9b, 0xdb, 0x07, 0x37, 0x45, 0x72, 0x2d, 0xa2, 0x84, 0xd2, 0x27, 0x67, 0xfe, 0xf8, 0x7e,
		0x29, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0xcb, 0x82, 0x02, 0xcb, 0xcc, 0x91, 0x61, 0x7e,
		0xc5, 0x73, 0xbf, 0x98, 0xe7, 0x57, 0x90, 0xce, 0x95, 0x7d, 0xac, 0x9d, 0x43, 0x0c, 0xb0, 0x58,
		0xff, 0x83, 0x29, 0x1d, 0x60, 0xb1, 0x77, 0xf0, 0xee, 0x10, 0xe3, 0x06, 0x98, 0xbe, 0x4a, 0x33,
		0xc3, 0x82, 0x71, 0x54, 0x2d, 0xcc, 0x0a, 0x53, 0x2c, 0xf2, 0xb0, 0xf9, 0x30, 0xc5, 0x42, 0xc6,
		0x5a, 0x6a, 0xa7, 0x58, 0xe8, 0xce, 0x99, 0x6e, 0x3b, 0x9f, 0x3b, 0x3a, 0x66, 0x58, 0x90, 0x89,
		0xd6, 0xad, 0xdb, 0xe8, 0x19, 0x4c, 0x22, 0x58, 0xa3, 0x73, 0x51, 0x83, 0x64, 0x89, 0x24, 0x7b,
		0x08, 0xc9, 0x52, 0x48, 0xb6, 0xd5, 0x6a, 0xc2, 0x1b, 0x90, 0x48, 0xb6, 0xdd, 0x69, 0x75, 0x21,
		0x59, 0x0a, 0xc9, 0xda, 0x56, 0x03, 0x93, 0x83, 0x48, 0x24, 0x7b, 0xd1, 0xaa, 0x9b, 0xe8, 0x7e,
		0x9f, 0xaf, 0xcf, 0x71, 0x87, 0x43, 0xda, 0x0a, 0x0e, 0x69, 0x55, 0xab, 0x60, 0xde, 0x19, 0x8c,
		0xe5, 0xce, 0xc9, 0xc2, 0x5a, 0x38, 0xa6, 0x5d, 0xb9, 0x00, 0x8e, 0x69, 0x37, 0xd0, 0x3d, 0x8e,
		0x69, 0x0b, 0x12, 0xa4, 0x50, 0xff, 0xf7, 0x32, 0x77, 0x86, 0xfa, 0xbf, 0x8d, 0x21, 0x11, 0xea,
		0xff, 0x00, 0x2d, 0x01, 0x2d, 0x55, 0x41, 0x4b, 0xa6, 0x9b, 0x26, 0x8f, 0x17, 0x04, 0xc8, 0x04,
		0xc8, 0x04, 0xc8, 0x04, 0xc8, 0x04, 0xc8, 0x04, 0xc8, 0x04, 0xc8, 0x04, 0xc8, 0x04, 0xc8, 0x54,
		0x0c, 0x32, 0xd1, 0xc5, 0x54, 0x4d, 0x0b, 0xcb, 0xe1, 0xfe, 0xce, 0xac, 0x7b, 0x59, 0x5e, 0x9b,
		0x98, 0x4a, 0xed, 0xaf, 0xe9, 0x25, 0x82, 0xae, 0x0d, 0xdc, 0xf4, 0xf1, 0x05, 0xeb, 0x02, 0xb7,
		0x8f, 0x2e, 0x70, 0xdc, 0x29, 0x03, 0xba, 0xc0, 0x6d, 0x6d, 0xa4, 0x40, 0x17, 0x38, 0x30, 0x26,
		0x60, 0x4c, 0xc0, 0x98, 0x80, 0x31, 0x01, 0x63, 0x02, 0xc6, 0x04, 0x8c, 0xc9, 0xb6, 0x32, 0x26,
		0x68, 0x6a, 0xf6, 0x5c, 0xe0, 0x84, 0xf3, 0x26, 0xa0, 0x27, 0xa0, 0x27, 0xa0, 0x27, 0xa0, 0x27,
		0xa0, 0x27, 0xa0, 0x27, 0xa0, 0x27, 0xf4, 0xe8, 0x5a, 0x76, 0x2f, 0xe8, 0xd1, 0x05, 0x9c, 0x04,
		0x9c, 0x04, 0x9c, 0x84, 0x1e, 0x5d, 0x2f, 0x86, 0x4a, 0xe8, 0xd1, 0xf5, 0x7c, 0xed, 0xa0, 0x47,
		0x57, 0x01, 0xb4, 0x95, 0x7d, 0x30, 0xf4, 0xe8, 0x42, 0x8f, 0x2e, 0x02, 0xab, 0x42, 0x8f, 0x2e,
		0xf4, 0xe8, 0x2a, 0xd6, 0x2a, 0xe8, 0xd1, 0xf5, 0xbc, 0xf0, 0x8e, 0x1e, 0x5d, 0x44, 0x82, 0x45,
		0x8f, 0x2e, 0x7a, 0xd1, 0xa2, 0x47, 0x17, 0x95, 0x60, 0xd1, 0xa3, 0x8b, 0x50, 0xb2, 0xe8, 0xd1,
		0x45, 0x22, 0x59, 0xf4, 0xe8, 0xa2, 0x92, 0x2c, 0x7a, 0x74, 0x51, 0x49, 0x16, 0x3d, 0xba, 0xa8,
		0x24, 0x8b, 0x1e, 0x5d, 0xf9, 0xfb, 0x1c, 0x77, 0x38, 0x73, 0x44, 0xcb, 0xa9, 0xe7, 0x65, 0x88,
		0x38, 0x75, 0x7c, 0x86, 0x36, 0x70, 0xea, 0xb8, 0xe1, 0x82, 0x38, 0x75, 0xcc, 0x17, 0x92, 0x40,
		0x75, 0xd6, 0x5a, 0x2e, 0x07, 0xd5, 0x59, 0x1b, 0x0a, 0x10, 0xd5, 0x59, 0x25, 0x43, 0x4a, 0xe8,
		0xa0, 0x04, 0xcc, 0x04, 0xcc, 0x04, 0xcc, 0x04, 0xcc, 0x04, 0xcc, 0x04, 0xcc, 0x04, 0xcc, 0xb4,
		0x25, 0x98, 0x09, 0x0d, 0x81, 0x94, 0x35, 0x04, 0x9a, 0xf6, 0xb1, 0xc9, 0x6b, 0x3f, 0xa0, 0x57,
		0x39, 0x32, 0x08, 0x2a, 0x43, 0x50, 0x6b, 0x00, 0x55, 0xa9, 0x2d, 0x97, 0xa2, 0x71, 0x2f, 0x09,
		0x66, 0x51, 0xd7, 0x9c, 0xbe, 0x33, 0x63, 0xf6, 0xc6, 0xdc, 0x4e, 0xba, 0xfa, 0x69, 0xf6, 0xbe,
		0x66, 0x2f, 0xb8, 0xf6, 0x78, 0x28, 0xdc, 0xd6, 0xbe, 0x1c, 0x1b, 0xdc, 0xdc, 0x62, 0x24, 0x58,
		0x4b, 0x35, 0x16, 0xff, 0x37, 0x16, 0x41, 0x4f, 0x68, 0x7e, 0x5f, 0x9a, 0xa9, 0xdc, 0x27, 0x67,
		0x0b, 0x0f, 0x97, 0x64, 0xd9, 0x72, 0x13, 0x31, 0xe9, 0x89, 0x17, 0x45, 0xa2, 0xf5, 0x20, 0xb1,
		0x92, 0x59, 0x43, 0x46, 0x95, 0x41, 0x91, 0x67, 0x4c, 0xe4, 0x19, 0xd2, 0x52, 0x46, 0x34, 0xa8,
		0x6e, 0x69, 0xa4, 0x90, 0x9e, 0xda, 0x64, 0xd6, 0x3a, 0x14, 0xde, 0x40, 0x6e, 0xcd, 0x63, 0x96,
		0xb6, 0x1c, 0x49, 0x7c, 0x66, 0x67, 0x16, 0xcc, 0xde, 0xbe, 0x9d, 0x75, 0x1c, 0xdc, 0x59, 0xf4,
		0x5a, 0xdb, 0xe4, 0xe9, 0xa5, 0x76, 0x19, 0x24, 0xe9, 0x2e, 0x28, 0xb9, 0xab, 0xa0, 0xf4, 0x6e,
		0x82, 0xf0, 0xee, 0xf0, 0xee, 0x85, 0xf2, 0xee, 0xb2, 0xfb, 0xfe, 0x55, 0x53, 0x5a, 0x50, 0xf4,
		0xb5, 0xb0, 0x97, 0x88, 0xf4, 0xda, 0x06, 0x51, 0xcf, 0xd2, 0x47, 0xeb, 0xd0, 0x34, 0x2f, 0xdd,
		0xa5, 0x6a, 0x5e, 0xba, 0x5b, 0xd0, 0xe6, 0xa5, 0x03, 0x74, 0x2d, 0x55, 0xe8, 0x96, 0x38, 0xdc,
		0x53, 0x31, 0x78, 0x2c, 0x32, 0xbe, 0x3d, 0xb3, 0xf6, 0x5e, 0x38, 0x0e, 0x12, 0x11, 0x1d, 0xd6,
		0x28, 0x2c, 0x7e, 0xe6, 0x5e, 0x08, 0xc8, 0x75, 0xe2, 0x6b, 0xb5, 0x84, 0x07, 0x1c, 0x1c, 0xd7,
		0x66, 0xb3, 0x0b, 0x8d, 0xc4, 0x77, 0x09, 0xd9, 0x2f, 0x2f, 0xf2, 0x5d, 0x56, 0x24, 0xac, 0x5f,
		0x66, 0xb9, 0xe3, 0x7a, 0x7f, 0x53, 0xfa, 0x7d, 0xad, 0x76, 0x78, 0x54, 0xab, 0xed, 0x1e, 0xbd,
		0x3b, 0xda, 0xfd, 0x70, 0x70, 0xb0, 0x77, 0x48, 0x7d, 0x23, 0x6e, 0x9b, 0xad, 0xa2, 0x20, 0xa7,
		0x33, 0x97, 0x25, 0x18, 0x16, 0x30, 0x47, 0xc6, 0xa3, 0xbf, 0x39, 0xf0, 0x77, 0xba, 0x0a, 0xd0,
		0x37, 0xd0, 0x37, 0xd0, 0x37, 0xd0, 0x37, 0xd0, 0x37, 0xd0, 0x37, 0xd0, 0x37, 0xd0, 0x37, 0xd0,
		0x37, 0xd0, 0x77, 0x49, 0xd1, 0x37, 0x45, 0xb9, 0xc4, 0x52, 0x78, 0x94, 0x5f, 0x36, 0x01, 0xec,
		0x0d, 0xec, 0x0d, 0xec, 0x0d, 0xec, 0x3d, 0xeb, 0x36, 0xf9, 0x6e, 0x9f, 0x10, 0x78, 0x1f, 0x01,
		0x78, 0x03, 0x78, 0x03, 0x78, 0xab, 0x01, 0xde, 0xb5, 0xfd, 0x0f, 0xb5, 0x0f, 0x87, 0x47, 0xfb,
		0x1f, 0x00, 0xb7, 0x01, 0xb7, 0x15, 0xc1, 0x6d, 0x54, 0xc2, 0xd3, 0x56, 0xc2, 0x4b, 0xbc, 0x07,
		0x91, 0x8f, 0xca, 0xc4, 0x24, 0xf2, 0x82, 0x78, 0x14, 0x46, 0x89, 0xfc, 0xea, 0xc4, 0xfb, 0x47,
		0xe7, 0xbc, 0x42, 0xb1, 0x28, 0xf5, 0xe7, 0x04, 0x17, 0x7b, 0x51, 0xa8, 0xf8, 0xec, 0x7c, 0x48,
		0xfe, 0xc5, 0xdc, 0x2d, 0xaf, 0x57, 0xec, 0xcd, 0xf7, 0x17, 0x11, 0x55, 0x33, 0x7b, 0x7e, 0xc1,
		0x86, 0xab, 0xef, 0x62, 0xb8, 0x3a, 0xc8, 0x9a, 0x02, 0x38, 0xa7, 0x62, 0x70, 0x36, 0x64, 0xc3,
		0xd5, 0xbf, 0x8e, 0xfd, 0x61, 0xe2, 0x07, 0x5a, 0x5f, 0x24, 0x9e, 0x3f, 0xa4, 0xef, 0xa5, 0xf2,
		0x68, 0x3d, 0xb4, 0x52, 0xe1, 0x76, 0x76, 0xdc, 0x4e, 0x8f, 0xcb, 0xf9, 0xb1, 0x3b, 0x41, 0x76,
		0x67, 0xa8, 0xc0, 0x29, 0x12, 0xf3, 0x15, 0xc5, 0x1f, 0x7a, 0x15, 0x8c, 0x6f, 0x44, 0x34, 0x4d,
		0xfd, 0x19, 0x5a, 0xa9, 0xd4, 0x08, 0xd7, 0xd0, 0x83, 0xf1, 0x0d, 0xfd, 0xe6, 0x74, 0xc2, 0x6e,
		0x12, 0xf9, 0xc1, 0x15, 0xcb, 0x24, 0x87, 0xea, 0xee, 0x44, 0x47, 0x4e, 0xa3, 0xe3, 0x1a, 0xa6,
		0xe1, 0x18, 0xf5, 0x16, 0xc7, 0x6c, 0x8c, 0xbd, 0xf9, 0x9a, 0x7a, 0xd7, 0xa9, 0x9f, 0xb4, 0x8c,
		0xee, 0x99, 0xde, 0xe4, 0x58, 0x77, 0x7f, 0xb2, 0xee, 0xa9, 0x5d, 0xff, 0xd8, 0xd6, 0x4d, 0xa7,
		0x5a, 0xe4, 0xb9, 0x29, 0x55, 0x27, 0x34, 0x82, 0x84, 0xc7, 0x42, 0x32, 0x81, 0x49, 0xbb, 0xbf,
		0xf9, 0xeb, 0x4f, 0xf6, 0xc8, 0x2e, 0xa4, 0xe7, 0x5f, 0x4f, 0xae, 0x3a, 0xdf, 0x01, 0xc7, 0x95,
		0xdd, 0x82, 0x36, 0x87, 0x2e, 0x56, 0x0c, 0x12, 0x3f, 0x92, 0xc8, 0xd3, 0xc6, 0x41, 0x9c, 0x78,
		0x5f, 0x87, 0xc4, 0xd1, 0xe8, 0xfb, 0xb5, 0x08, 0xb6, 0x69, 0x58, 0xe1, 0xdb, 0xb7, 0x3b, 0xd3,
		0xf4, 0x40, 0xbb, 0x09, 0xfb, 0xa2, 0xf2, 0xdf, 0x95, 0x7f, 0x9d, 0x9c, 0x1b, 0x2d, 0xc7, 0x30,
		0xff, 0xc5, 0xe1, 0x48, 0x99, 0x70, 0xea, 0x2a, 0xbc, 0x9a, 0x2a, 0x92, 0x69, 0xd0, 0x10, 0x37,
		0x6a, 0x5d, 0x89, 0x5e, 0x7f, 0xa1, 0x69, 0xfa, 0x26, 0xf9, 0x0c, 0xb6, 0xd4, 0x14, 0x71, 0x2f,
		0xf2, 0x47, 0x64, 0xdd, 0xb2, 0x7e, 0xb9, 0x8d, 0x9c, 0x6b, 0x3f, 0xae, 0x0c, 0x85, 0x37, 0xa8,
		0xf8, 0x71, 0x25, 0x0c, 0x86, 0xb7, 0x95, 0x6f, 0xde, 0xd0, 0xef, 0x57, 0x26, 0x56, 0x56, 0x49,
		0xae, 0x45, 0x25, 0x95, 0xf9, 0x20, 0x8c, 0x2a, 0xd3, 0x9b, 0x18, 0xf1, 0xe4, 0xe7, 0xe2, 0x91,
		0xe8, 0xf9, 0x03, 0x5f, 0xf4, 0x2b, 0x49, 0xf8, 0x57, 0xf0, 0x55, 0x54, 0x66, 0x09, 0xfb, 0x5b,
		0x2e, 0xbb, 0x64, 0xde, 0x7e, 0x8f, 0xb7, 0x60, 0x7f, 0x41, 0x63, 0x8c, 0xb3, 0x19, 0x55, 0xed,
		0xc6, 0xa5, 0x1d, 0x29, 0xd9, 0x68, 0xb6, 0x64, 0x0e, 0x21, 0x06, 0x6a, 0x70, 0x60, 0x26, 0xe2,
		0xd6, 0x82, 0xd9, 0x3a, 0xb7, 0x57, 0x61, 0xa2, 0x85, 0x3d, 0xad, 0x17, 0xde, 0x8c, 0x22, 0x11,
		0xc7, 0xa2, 0xaf, 0x4d, 0x2c, 0x7e, 0xb2, 0xe8, 0x5d, 0x89, 0xfb, 0x6a, 0xf7, 0x45, 0x9c, 0xf8,
		0x41, 0x2a, 0x7f, 0x4d, 0xea, 0x49, 0xf9, 0x93, 0x11, 0x6a, 0x69, 0x45, 0xd0, 0xc1, 0x2b, 0x17,
		0x00, 0x1d, 0x2c, 0x25, 0xb6, 0x83, 0x0e, 0x2e, 0x65, 0x2a, 0xce, 0x47, 0x07, 0x4f, 0x7c, 0x98,
		0x16, 0x8c, 0x6f, 0xb4, 0x28, 0xad, 0x25, 0x66, 0x60, 0x84, 0x3f, 0x10, 0xae, 0x31, 0x93, 0xdb,
		0xd6, 0xd0, 0x0a, 0xf1, 0x94, 0x79, 0x66, 0x9c, 0x8f, 0xfc, 0x9e, 0x61, 0x2d, 0xae, 0xe6, 0xdd,
		0xd9, 0x82, 0xaf, 0x77, 0xff, 0xd9, 0xfd, 0xa3, 0x76, 0xf7, 0x65, 0x57, 0xfb, 0x70, 0xf9, 0x73,
		0xf2, 0xf7, 0x77, 0x77, 0x5f, 0xf6, 0xb4, 0x0f, 0x97, 0xf7, 0x2f, 0xec, 0x2f, 0xbc, 0xf0, 0xcf,
		0xfe, 0xdd, 0xcf, 0xdd, 0xff, 0x6f, 0xe1, 0xdf, 0xef, 0xee, 0x7e, 0x7e, 0xd9, 0xd3, 0x0e, 0x66,
		0xff, 0xaa, 0xdd, 0xfd, 0x3c, 0xfc, 0xb2, 0xab, 0xd5, 0xee, 0xbf, 0x79, 0x78, 0xb0, 0xf0, 0xef,
		0xfd, 0xc9, 0xbf, 0x27, 0x2f, 0xec, 0xcf, 0x1e, 0x7f, 0x78, 0x70, 0xf0, 0xee, 0xcb, 0xae, 0x76,
		0x70, 0xf9, 0xe6, 0xaf, 0xbf, 0xde, 0xfe, 0xf5, 0xd7, 0xdb, 0x9c, 0xbc, 0x19, 0xfa, 0x3c, 0xe7,
		0x92, 0xc3, 0x94, 0x38, 0x9b, 0xc1, 0x67, 0xab, 0xfe, 0xef, 0x6b, 0x58, 0xd4, 0xf2, 0x9b, 0x79,
		0xf3, 0x5f, 0x55, 0x4c, 0xd7, 0xcf, 0x49, 0xe0, 0x98, 0x87, 0xf5, 0xaf, 0x22, 0x62, 0x8c, 0x1e,
		0x87, 0x0c, 0x4b, 0xd1, 0xde, 0x79, 0xe2, 0x57, 0x59, 0xf6, 0xc1, 0x38, 0xee, 0x44, 0x2d, 0x2d,
		0xca, 0x74, 0x47, 0x6a, 0x69, 0x5d, 0xee, 0x7b, 0x32, 0xcb, 0x1b, 0x85, 0xeb, 0xde, 0x0c, 0xb3,
		0x8f, 0x79, 0x68, 0x52, 0x0c, 0x77, 0xac, 0x9e, 0x34, 0xa9, 0x49, 0x60, 0x38, 0x80, 0x59, 0x71,
		0x99, 0xd5, 0x96, 0xd0, 0xd6, 0x08, 0xf0, 0xcf, 0x0b, 0xf0, 0x3c, 0x65, 0x5c, 0x4b, 0xe9, 0x61,
		0x8d, 0x61, 0x2d, 0x96, 0xb2, 0xae, 0x7b, 0xca, 0x80, 0xb3, 0xbc, 0x2b, 0x5b, 0x35, 0x2d, 0xf3,
		0xaa, 0x9b, 0x9f, 0x99, 0x4e, 0x9b, 0xfe, 0xe0, 0x92, 0x25, 0x57, 0x15, 0xd4, 0x3d, 0x93, 0x68,
		0x7e, 0x26, 0x2f, 0x10, 0xe2, 0xf3, 0x7e, 0x38, 0xb4, 0x63, 0x30, 0x5b, 0x1c, 0xda, 0x29, 0x55,
		0xc1, 0xd2, 0x11, 0x9a, 0x16, 0x0b, 0x05, 0x07, 0x77, 0xe9, 0xaa, 0x38, 0xbc, 0x5b, 0xcd, 0xaa,
		0xe1, 0xf0, 0x6e, 0x7d, 0xdd, 0xe3, 0xf0, 0xae, 0x20, 0x81, 0xab, 0xf8, 0x87, 0x77, 0xf2, 0x67,
		0x49, 0x3d, 0x09, 0xfc, 0x8f, 0x68, 0x47, 0xe2, 0xce, 0xda, 0x45, 0xf4, 0x26, 0x5e, 0x39, 0x3e,
		0xee, 0x8b, 0x81, 0x1f, 0x88, 0x7e, 0xfa, 0x8f, 0xec, 0xc5, 0xb9, 0xd3, 0x5e, 0x7e, 0x25, 0x7b,
		0x21, 0x1d, 0x5c, 0x08, 0x28, 0x02, 0x28, 0xf2, 0x7c, 0x28, 0x92, 0x55, 0xf2, 0x72, 0x20, 0x90,
		0xfb, 0xc5, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x0a, 0x0a, 0x3c, 0x70, 0x89, 0xf4,
		0xc5, 0xcc, 0x18, 0xfb, 0x25, 0x52, 0xfd, 0x53, 0xa7, 0x65, 0x34, 0x0c, 0x87, 0xed, 0x06, 0xe9,
		0xec, 0x1e, 0x0c, 0x2e, 0x72, 0x3e, 0x73, 0xa9, 0xb9, 0xbc, 0x78, 0x6e, 0x54, 0x66, 0xe6, 0x80,
		0xeb, 0x94, 0x80, 0xf6, 0x25, 0x80, 0xf6, 0xe2, 0xc7, 0x68, 0xe8, 0xf7, 0xfc, 0x44, 0x9b, 0xc3,
		0xee, 0x09, 0x52, 0x60, 0x42, 0xfa, 0xbf, 0x58, 0x1b, 0xc0, 0x1f, 0xc0, 0x1f, 0xc0, 0x1f, 0xc0,
		0x1f, 0xc0, 0x1f, 0xc0, 0x9f, 0x08, 0xf8, 0xd7, 0xcd, 0xcf, 0x6c, 0x98, 0xbf, 0xde, 0x6a, 0x01,
		0xef, 0x3f, 0xd7, 0x8b, 0xb5, 0x5a, 0x4c, 0x58, 0x9f, 0xa3, 0x28, 0x02, 0x30, 0x7f, 0x8e, 0x33,
		0xd1, 0x35, 0x65, 0xdd, 0x68, 0xb2, 0xdc, 0x4b, 0x63, 0x9e, 0xa5, 0xa2, 0x6d, 0x4a, 0x71, 0xe1,
		0xda, 0x4a, 0xd8, 0xf6, 0x2b, 0x55, 0xa3, 0x6f, 0xca, 0xa6, 0x1b, 0x49, 0x4e, 0x0b, 0x8c, 0x79,
		0xda, 0x8a, 0xc6, 0x29, 0x5b, 0xb9, 0x1f, 0x2b, 0x34, 0x8d, 0x53, 0xee, 0xad, 0x06, 0x45, 0x98,
		0x4a, 0x9f, 0x8e, 0x22, 0xcc, 0x55, 0xeb, 0x80, 0x1e, 0x7d, 0x02, 0xb6, 0xce, 0x28, 0xca, 0xa4,
		0x37, 0xd2, 0x06, 0x43, 0xef, 0x2a, 0x66, 0xa4, 0x45, 0xef, 0xd7, 0x04, 0x1d, 0xba, 0x72, 0x01,
		0xd0, 0xa1, 0x52, 0x02, 0x3c, 0xe8, 0xd0, 0x52, 0xa6, 0xe4, 0x7c, 0x74, 0xa8, 0xdf, 0x17, 0x41,
		0xe2, 0x27, 0xb7, 0x4c, 0x45, 0x98, 0x84, 0xd7, 0x29, 0xab, 0xc6, 0xec, 0xa3, 0x9c, 0x78, 0x31,
		0xc3, 0x26, 0xcd, 0x12, 0x97, 0x46, 0xc7, 0x3d, 0x6d, 0xd5, 0x3f, 0x76, 0xa9, 0x37, 0x69, 0x7a,
		0x2b, 0x35, 0x66, 0xb9, 0x37, 0xce, 0x9d, 0xfb, 0x35, 0x3a, 0x6e, 0xbd, 0xf1, 0xe7, 0x56, 0x64,
		0xd1, 0x0a, 0x44, 0xd7, 0xf8, 0x8f, 0x0d, 0xd1, 0xad, 0x27, 0x3a, 0xbd, 0xa1, 0x43, 0x74, 0x6b,
		0xfa, 0x3c, 0xea, 0x3a, 0xa9, 0xed, 0x15, 0x5d, 0xa7, 0x7b, 0x06, 0xd1, 0xad, 0x27, 0x3a, 0xbb,
		0xeb, 0x40, 0x74, 0xeb, 0x89, 0xae, 0xfb, 0x19, 0x1b, 0x76, 0x4d, 0xd1, 0x9d, 0xdb, 0x1f, 0xab,
		0x05, 0x27, 0xed, 0x2e, 0x91, 0x59, 0xa5, 0x6a, 0x6d, 0xf9, 0x71, 0x52, 0x4f, 0x92, 0x88, 0x36,
		0xbb, 0x6a, 0xfb, 0x81, 0x3e, 0x14, 0x93, 0x0c, 0x97, 0xb8, 0x85, 0x4b, 0xb5, 0xed, 0xfd, 0x58,
		0x58, 0x69, 0xef, 0x7d, 0xad, 0x76, 0x78, 0x54, 0xab, 0xed, 0x1e, 0xbd, 0x3b, 0xda, 0xfd, 0x70,
		0x70, 0xb0, 0x77, 0x48, 0x9a, 0x71, 0x59, 0x51, 0x5f, 0x44, 0xa2, 0x7f, 0x72, 0x5b, 0x3d, 0xae,
		0x04, 0xe3, 0xe1, 0x90, 0x63, 0xa9, 0xf3, 0x58, 0x44, 0xa4, 0xbd, 0x69, 0x70, 0xcc, 0x9e, 0x1b,
		0x47, 0x8c, 0x63, 0x76, 0x1c, 0xb3, 0xe3, 0x98, 0x5d, 0x2a, 0x9a, 0xc1, 0x31, 0xfb, 0x1a, 0x9b,
		0x10, 0xc7, 0xec, 0x38, 0x66, 0x67, 0x5f, 0x01, 0xc7, 0xec, 0x33, 0x43, 0xc4, 0x31, 0xbb, 0x42,
		0x15, 0x54, 0xe3, 0xd4, 0xf5, 0x32, 0xcd, 0x26, 0x59, 0x5c, 0x0c, 0x07, 0xeb, 0x2b, 0x17, 0xc0,
		0xc1, 0xba, 0x94, 0x90, 0x8e, 0x83, 0xf5, 0x52, 0xd2, 0x3f, 0x18, 0x4b, 0xb2, 0x91, 0xdc, 0x30,
		0x96, 0x64, 0x6d, 0xed, 0x60, 0x2c, 0x09, 0xc6, 0x92, 0xc8, 0xc2, 0xef, 0x18, 0x4b, 0x82, 0xb1,
		0x24, 0x85, 0xc8, 0x09, 0x99, 0x78, 0x35, 0x8c, 0x25, 0x91, 0xb0, 0x14, 0xc6, 0x92, 0xc8, 0x5c,
		0x14, 0x63, 0x49, 0x30, 0x96, 0x84, 0xc8, 0xa4, 0x30, 0x96, 0x04, 0x63, 0x49, 0x10, 0xe0, 0xa9,
		0x02, 0x3c, 0xc6, 0x92, 0xc8, 0xa2, 0x0c, 0x30, 0x96, 0x44, 0xa2, 0x2c, 0x31, 0x96, 0x24, 0xc7,
		0x2b, 0xe0, 0xa8, 0x6e, 0x66, 0x33, 0x38, 0xaa, 0x53, 0xa8, 0x82, 0xc5, 0xd3, 0x33, 0x9e, 0x89,
		0x24, 0x8f, 0x17, 0xc4, 0x91, 0xdd, 0x6a, 0x2e, 0x0d, 0x47, 0x76, 0xeb, 0xeb, 0x1e, 0x47, 0x76,
		0x05, 0x09, 0x57, 0x18, 0x46, 0xf2, 0x02, 0xb8, 0x8f, 0x61, 0x24, 0x00, 0x20, 0x8a, 0x01, 0xc8,
		0xab, 0x1c, 0x2b, 0x94, 0x5a, 0x91, 0xd5, 0xb8, 0x77, 0x2d, 0x6e, 0xbc, 0x51, 0xb6, 0x53, 0x46,
		0x22, 0xe8, 0xa5, 0x30, 0x40, 0x0b, 0x44, 0xf2, 0x3d, 0x8c, 0xfe, 0xd6, 0xfc, 0x20, 0x4e, 0xbc,
		0xa0, 0x27, 0x76, 0x1e, 0xbf, 0x10, 0x2f, 0xbd, 0xb2, 0x33, 0x0a, 0x87, 0x7e, 0xef, 0x56, 0x1b,
		0x84, 0xd1, 0x77, 0x2f, 0xea, 0xfb, 0xc1, 0xd5, 0xf4, 0x15, 0x5f, 0xc4, 0xb3, 0x6f, 0xed, 0x44,
		0xe3, 0xa1, 0x88, 0xd3, 0x3f, 0x77, 0x92, 0xc8, 0x0b, 0xe2, 0xc9, 0x5e, 0xdb, 0x99, 0xae, 0x28,
		0x77, 0x87, 0xc9, 0x53, 0xab, 0x44, 0x95, 0x56, 0xe3, 0xc4, 0x4b, 0xe4, 0x3b, 0xf1, 0x85, 0xd3,
		0xfc, 0xc9, 0xe3, 0x25, 0x9b, 0xe0, 0xdc, 0x55, 0x4b, 0x7e, 0x6c, 0x86, 0x36, 0xf7, 0x25, 0x3f,
		0x98, 0x10, 0x65, 0x72, 0xa1, 0x4b, 0x6a, 0x54, 0xc9, 0x86, 0x26, 0xd9, 0x50, 0x24, 0x23, 0x7a,
		0xcc, 0x77, 0xc0, 0x68, 0xfa, 0x34, 0x57, 0xfa, 0xaa, 0x5f, 0xc7, 0xfe, 0x30, 0xf1, 0x83, 0x59,
		0x23, 0x7c, 0xfa, 0x9c, 0xfa, 0xd1, 0x7a, 0x48, 0xa9, 0x91, 0x52, 0x23, 0xa5, 0x46, 0x4a, 0x5d,
		0xd0, 0x94, 0x1a, 0xdd, 0xf6, 0x5f, 0xaa, 0x1a, 0xfe, 0x6e, 0xfb, 0x4e, 0xa3, 0xe3, 0x1a, 0xa6,
		0xe1, 0x18, 0xf5, 0x16, 0x5b, 0xd7, 0xfd, 0xb4, 0xf9, 0x4e, 0xd7, 0xa9, 0x9f, 0xb4, 0x8c, 0xee,
		0x99, 0xde, 0xe4, 0x58, 0x77, 0x7f, 0xb2, 0xee, 0xa9, 0x5d, 0xff, 0xd8, 0xd6, 0x4d, 0x07, 0x2d,
		0xff, 0x9f, 0xb9, 0x54, 0x26, 0x30, 0xe9, 0x09, 0xcb, 0xea, 0x4f, 0xf6, 0xc8, 0x2e, 0x78, 0xa6,
		0x0d, 0x2c, 0xee, 0x00, 0x4c, 0x1d, 0xe0, 0x89, 0x41, 0x68, 0x87, 0xb0, 0x7e, 0x54, 0x5d, 0xbe,
		0x23, 0x3f, 0x9b, 0xc4, 0x87, 0x6e, 0x08, 0xc5, 0x45, 0xad, 0x2b, 0xd1, 0xeb, 0x2f, 0x34, 0x8d,
		0x66, 0x08, 0x9b, 0x6e, 0x23, 0x39, 0xd7, 0xda, 0x67, 0x09, 0x3b, 0x7a, 0x21, 0x6c, 0xe5, 0x6e,
		0xac, 0xd0, 0xf4, 0x42, 0xc8, 0x8c, 0x06, 0xf5, 0x55, 0x4a, 0x9f, 0x7e, 0x59, 0xe2, 0x72, 0xa1,
		0xbe, 0x88, 0x13, 0x3f, 0x48, 0x73, 0x73, 0xa6, 0xeb, 0xfd, 0x4b, 0x2b, 0x82, 0xdd, 0x5c, 0xb9,
		0x00, 0xd8, 0x4d, 0x29, 0xa1, 0x0a, 0xec, 0x66, 0x29, 0x33, 0x4b, 0xdc, 0xf1, 0xdf, 0x48, 0x6e,
		0xb8, 0xe3, 0xbf, 0xb6, 0x76, 0x70, 0xc7, 0x1f, 0x77, 0xfc, 0x65, 0x01, 0x53, 0xdc, 0xf1, 0xc7,
		0x1d, 0xff, 0x42, 0x24, 0x3b, 0x4c, 0x74, 0x11, 0xee, 0xf8, 0x4b, 0x58, 0x0a, 0x77, 0xfc, 0x65,
		0x2e, 0x8a, 0x3b, 0xfe, 0xb8, 0xe3, 0x4f, 0x64, 0x52, 0xb8, 0xe3, 0x8f, 0x3b, 0xfe, 0x08, 0xf0,
		0x54, 0x01, 0x1e, 0x77, 0xfc, 0x65, 0x51, 0x06, 0xb8, 0xe3, 0x2f, 0x51, 0x96, 0xb8, 0xe3, 0x9f,
		0xe3, 0x15, 0x70, 0x06, 0xc5, 0x71, 0x06, 0xc5, 0x73, 0x6f, 0x7d, 0xe5, 0xaa, 0x38, 0x8b, 0x5a,
		0x4d, 0x12, 0xe1, 0x2c, 0x6a, 0x7d, 0xdd, 0xe3, 0x2c, 0xaa, 0x20, 0x7e, 0x18, 0x97, 0xd7, 0x5f,
		0x80, 0x63, 0xcb, 0x7e, 0x79, 0xbd, 0x20, 0x91, 0x35, 0x2b, 0x1b, 0xe4, 0x08, 0xa8, 0xf7, 0x8b,
		0x21, 0x8e, 0x22, 0x8e, 0x22, 0x8e, 0x22, 0x8e, 0x16, 0x34, 0x8e, 0xe2, 0xc6, 0x5a, 0x9e, 0x39,
		0xa0, 0x29, 0xf7, 0x33, 0x9f, 0x08, 0xc8, 0x76, 0x5d, 0x6d, 0x56, 0x74, 0x8f, 0x5b, 0x63, 0xcf,
		0x5c, 0x6a, 0x2e, 0x2f, 0x9e, 0xeb, 0x5b, 0x99, 0x39, 0xe0, 0xee, 0x56, 0x11, 0x91, 0xea, 0x7c,
		0x2e, 0xa0, 0x36, 0x47, 0x91, 0x93, 0xc0, 0xc7, 0x04, 0x5c, 0x7f, 0xb1, 0x36, 0x70, 0x2c, 0x70,
		0x2c, 0x70, 0x2c, 0x70, 0x2c, 0x70, 0x2c, 0x70, 0x2c, 0x11, 0x8e, 0xad, 0x9b, 0x9f, 0xd9, 0x20,
		0x6c, 0xbd, 0xd5, 0x02, 0x7c, 0x7d, 0xae, 0x17, 0x6b, 0xb5, 0x98, 0xa0, 0x2b, 0xc7, 0x09, 0x2c,
		0x3a, 0x0e, 0xcc, 0x71, 0x26, 0x3a, 0x0e, 0xac, 0x1b, 0x4d, 0x7e, 0x35, 0x95, 0x1f, 0x2d, 0x07,
		0x8a, 0x0a, 0xd7, 0x56, 0xc2, 0xb6, 0x5f, 0xa9, 0x1a, 0x3d, 0x07, 0x36, 0xdd, 0x48, 0xb2, 0x47,
		0xe9, 0xa3, 0xe9, 0xc0, 0x16, 0xee, 0xc7, 0x0a, 0x4d, 0xd3, 0x81, 0x7b, 0xab, 0x41, 0xc5, 0x97,
		0xd2, 0xa7, 0x5f, 0x82, 0xed, 0x4b, 0xb4, 0xa4, 0x37, 0xd2, 0x06, 0x43, 0xef, 0x2a, 0x66, 0x64,
		0xf9, 0xee, 0xd7, 0x04, 0xbb, 0xb7, 0x72, 0x01, 0xb0, 0x7b, 0x52, 0xe2, 0x15, 0xd8, 0xbd, 0x52,
		0x66, 0x98, 0x7c, 0xec, 0x9e, 0xdf, 0x17, 0x41, 0xe2, 0x27, 0xb7, 0x4c, 0x15, 0x5f, 0x84, 0x57,
		0x91, 0xaa, 0xc6, 0xec, 0xa3, 0x9c, 0x78, 0x31, 0xc3, 0x26, 0xcd, 0x70, 0x78, 0xa3, 0xe3, 0x9e,
		0xb6, 0xea, 0x1f, 0xbb, 0xd4, 0x9b, 0x34, 0xbd, 0xd1, 0x15, 0xb3, 0xdc, 0xb9, 0xe4, 0x4e, 0x65,
		0x1a, 0x1d, 0xb7, 0xde, 0xf8, 0x73, 0x2b, 0x92, 0x42, 0x05, 0xa2, 0x6b, 0xfc, 0xc7, 0x86, 0xe8,
		0xd6, 0x13, 0x9d, 0xde, 0xd0, 0x21, 0xba, 0x35, 0x7d, 0x1e, 0x75, 0x15, 0xcb, 0xf6, 0x8a, 0xae,
		0xd3, 0x3d, 0x83, 0xe8, 0xd6, 0x13, 0x9d, 0xdd, 0x75, 0x20, 0xba, 0xf5, 0x44, 0xd7, 0xfd, 0x8c,
		0x0d, 0xbb, 0xa6, 0xe8, 0xce, 0xed, 0x8f, 0xd5, 0x82, 0x73, 0x50, 0x97, 0xc8, 0xac, 0x52, 0xb5,
		0xb6, 0xfc, 0x38, 0xa9, 0x27, 0x49, 0x44, 0x9b, 0x5d, 0xb5, 0xfd, 0x40, 0x1f, 0x8a, 0x49, 0x86,
		0x4b, 0xdc, 0xfe, 0xa0, 0xda, 0xf6, 0x7e, 0x2c, 0xac, 0xb4, 0xf7, 0xbe, 0x56, 0x3b, 0x3c, 0xaa,
		0xd5, 0x76, 0x8f, 0xde, 0x1d, 0xed, 0x7e, 0x38, 0x38, 0xd8, 0x3b, 0x24, 0xcd, 0xb8, 0xac, 0xa8,
		0x2f, 0x22, 0xd1, 0x3f, 0xb9, 0xad, 0x1e, 0x57, 0x82, 0xf1, 0x70, 0xc8, 0xb1, 0xd4, 0x79, 0x2c,
		0x22, 0xd2, 0xbe, 0x0e, 0x38, 0x35, 0xce, 0x8d, 0x23, 0xc6, 0xa9, 0x31, 0x4e, 0x8d, 0x71, 0x6a,
		0x2c, 0x15, 0xcd, 0xe0, 0xd4, 0x78, 0x8d, 0x4d, 0x88, 0x53, 0x63, 0x9c, 0x1a, 0xb3, 0xaf, 0x80,
		0x53, 0x63, 0x8a, 0x53, 0xe3, 0x38, 0xf5, 0x24, 0x4c, 0x6d, 0xea, 0x17, 0x17, 0xc3, 0x39, 0xf1,
		0xca, 0x05, 0x70, 0x4e, 0x2c, 0x25, 0x42, 0xe1, 0x9c, 0xb8, 0x94, 0x6c, 0x06, 0x3a, 0xd4, 0x6f,
		0x24, 0x37, 0x74, 0xa8, 0x5f, 0x5b, 0x3b, 0xe8, 0x50, 0x8f, 0x0e, 0xf5, 0xb2, 0xe0, 0x28, 0x3a,
		0xd4, 0xa3, 0x43, 0x7d, 0x21, 0x52, 0x1c, 0x26, 0x9a, 0x08, 0x1d, 0xea, 0x25, 0x2c, 0x85, 0x0e,
		0xf5, 0x32, 0x17, 0x45, 0x87, 0x7a, 0x74, 0xa8, 0x27, 0x32, 0x29, 0x74, 0xa8, 0x47, 0x87, 0x7a,
		0x04, 0x78, 0xaa, 0x00, 0x8f, 0x0e, 0xf5, 0xb2, 0x28, 0x03, 0x74, 0xa8, 0x97, 0x28, 0x4b, 0x74,
		0xa8, 0xcf, 0xf1, 0x0a, 0x38, 0x79, 0x22, 0x3e, 0x79, 0xe2, 0x69, 0x4e, 0xff, 0x78, 0x41, 0x9c,
		0x40, 0xad, 0xa6, 0x86, 0x70, 0x02, 0xb5, 0xbe, 0xee, 0x71, 0x02, 0x55, 0x10, 0xef, 0x8b, 0xbe,
		0xf4, 0x2f, 0x40, 0xaf, 0xe8, 0x4b, 0x9f, 0xeb, 0x27, 0x4a, 0xb6, 0xe5, 0x6a, 0x3d, 0x08, 0xc2,
		0xc4, 0x23, 0x2b, 0xc8, 0xab, 0xc6, 0xbd, 0x6b, 0x71, 0xe3, 0x8d, 0x32, 0xc5, 0x8f, 0x44, 0xd0,
		0x4b, 0xa3, 0x9a, 0x16, 0x88, 0xe4, 0x7b, 0x18, 0xfd, 0xad, 0xf9, 0x41, 0x9c, 0x78, 0x41, 0x4f,
		0xec, 0x3c, 0x7e, 0x21, 0x5e, 0x7a, 0x65, 0x67, 0x14, 0x0e, 0xfd, 0xde, 0xad, 0x36, 0x08, 0xa3,
		0xef, 0x5e, 0xd4, 0xf7, 0x83, 0xab, 0xe9, 0x2b, 0xbe, 0x88, 0x67, 0xdf, 0xda, 0x89, 0xc6, 0x43,
		0x11, 0xa7, 0x7f, 0xee, 0x24, 0x91, 0x17, 0xc4, 0x13, 0xd3, 0xd9, 0x89, 0x13, 0x2f, 0x91, 0x6c,
		0x2f, 0xf2, 0xb4, 0x2a, 0xe7, 0x49, 0x92, 0xec, 0x82, 0xca, 0x1e, 0x72, 0x61, 0x07, 0x12, 0xdd,
		0x67, 0x35, 0x4e, 0xa2, 0x71, 0x2f, 0x09, 0x66, 0xfe, 0xd9, 0x9c, 0xbe, 0x41, 0x63, 0xf6, 0xfe,
		0xdc, 0x4e, 0xfa, 0x26, 0x4e, 0xb3, 0xb7, 0x37, 0x7b, 0xc1, 0xb5, 0xc7, 0x43, 0xe1, 0x3a, 0xd9,
		0xfb, 0x79, 0x95, 0x0f, 0xfb, 0xd9, 0xec, 0x09, 0x1b, 0x5a, 0xde, 0x04, 0x47, 0xa5, 0x88, 0x5d,
		0xfc, 0xdf, 0x58, 0x04, 0x3d, 0xa1, 0xf9, 0xfd, 0x0d, 0xf5, 0x24, 0xf7, 0x9e, 0x8b, 0xfc, 0xfb,
		0x2c, 0x2c, 0xf7, 0x56, 0x08, 0xee, 0xa7, 0x10, 0xdc, 0x43, 0xd9, 0xd4, 0x76, 0x24, 0x7b, 0x2b,
		0x85, 0x5e, 0x4a, 0x82, 0x6f, 0xda, 0xc0, 0x27, 0x6d, 0xe6, 0x89, 0xd6, 0xf7, 0x1f, 0xeb, 0xfd,
		0xe6, 0x9a, 0x56, 0x23, 0xcb, 0x5a, 0xd4, 0x58, 0xc9, 0x7a, 0x2a, 0x7a, 0xb9, 0x80, 0xd7, 0x10,
		0x6e, 0x75, 0x8a, 0xaf, 0xd6, 0x95, 0xe9, 0x42, 0x25, 0xd7, 0xe4, 0x31, 0x6b, 0x2a, 0x77, 0x9e,
		0xbf, 0xac, 0xf9, 0xeb, 0x19, 0xd5, 0xb2, 0xbf, 0xe6, 0x03, 0x24, 0x50, 0x29, 0x0f, 0xa8, 0x92,
		0x4d, 0x92, 0x3d, 0x59, 0x1c, 0x88, 0x74, 0x8e, 0x43, 0x3a, 0x87, 0xb1, 0xc4, 0x51, 0x0c, 0xaa,
		0x05, 0x71, 0x46, 0x4d, 0x7f, 0x33, 0x7c, 0x52, 0x9d, 0xf9, 0x0d, 0xbf, 0xbf, 0xb9, 0x9a, 0xef,
		0x2b, 0x62, 0xe6, 0x8f, 0xdc, 0x14, 0xd3, 0x49, 0xe1, 0x45, 0xa5, 0xf1, 0x9f, 0x32, 0x79, 0x4e,
		0x69, 0x9b, 0x94, 0x8a, 0xb0, 0x24, 0x23, 0x26, 0xc9, 0x08, 0x48, 0x99, 0x9b, 0x38, 0x1f, 0x39,
		0x8d, 0x34, 0x66, 0x50, 0x7e, 0x95, 0xf3, 0x7d, 0x15, 0xb3, 0x2a, 0xcc, 0xb7, 0x41, 0x5c, 0x4b,
		0x64, 0xc8, 0x35, 0x93, 0x69, 0xfa, 0xb4, 0x0d, 0x35, 0xdd, 0x14, 0x03, 0x6f, 0x3c, 0x4c, 0xa4,
		0x14, 0xdb, 0x55, 0x3b, 0x27, 0xb6, 0xdb, 0xb1, 0x5a, 0x46, 0x63, 0xc3, 0x33, 0xef, 0x4b, 0xb8,
		0x6f, 0xb8, 0x6f, 0xb8, 0xef, 0x1c, 0xb9, 0x6f, 0xb9, 0xa5, 0x48, 0x32, 0x4b, 0x8d, 0xe4, 0x96,
		0x12, 0xd1, 0x94, 0x0a, 0x4d, 0x4b, 0x81, 0x16, 0xbc, 0xa3, 0x44, 0x22, 0x37, 0x9d, 0xeb, 0x72,
		0x61, 0x9f, 0xba, 0x5d, 0xbd, 0xa5, 0x37, 0x1c, 0xc3, 0x32, 0xa5, 0xb8, 0x60, 0x49, 0xa6, 0xb8,
		0x20, 0x57, 0xd9, 0x65, 0x43, 0x8b, 0xf2, 0x94, 0x5a, 0x61, 0xb0, 0x5a, 0x9a, 0xc7, 0x95, 0xbd,
		0xed, 0xa0, 0xbb, 0x41, 0x76, 0x91, 0x92, 0x5d, 0x1b, 0x9c, 0xd5, 0xad, 0x41, 0x76, 0xbd, 0x22,
		0x54, 0xc5, 0xfc, 0x64, 0x63, 0xdd, 0xac, 0x7a, 0xb3, 0x73, 0x8c, 0xcd, 0xcf, 0x2d, 0x48, 0xce,
		0x29, 0x24, 0x9c, 0x4b, 0x48, 0x38, 0x87, 0x78, 0xa9, 0x26, 0x37, 0xdc, 0x4c, 0xdc, 0x9b, 0xa8,
		0xba, 0x16, 0x87, 0xbb, 0xc6, 0xe1, 0xc1, 0xcb, 0xf6, 0xe9, 0xf3, 0x77, 0xdb, 0xf3, 0x7e, 0xf2,
		0x99, 0x5a, 0x5c, 0x57, 0x7b, 0x6c, 0x5a, 0x7b, 0x9e, 0x14, 0x7f, 0x2f, 0x93, 0x5f, 0xff, 0xc4,
		0x6f, 0xa4, 0xf5, 0x52, 0x29, 0x51, 0x4b, 0xe7, 0x19, 0x36, 0xfc, 0x42, 0x9b, 0xfd, 0xb5, 0x98,
		0x9f, 0x16, 0xde, 0x2f, 0x04, 0x57, 0x1d, 0x45, 0x61, 0x12, 0xf6, 0xc2, 0xe1, 0xef, 0xe7, 0x6f,
		0xdc, 0x93, 0xac, 0xd9, 0xaf, 0xfc, 0x46, 0x21, 0xcf, 0x3b, 0xd1, 0x78, 0x76, 0x96, 0xfd, 0x92,
		0x2c, 0x7a, 0x31, 0x4b, 0x0e, 0x44, 0x32, 0xd1, 0xd2, 0x73, 0xf4, 0xf1, 0xc2, 0x54, 0x78, 0xed,
		0x54, 0x77, 0xed, 0x54, 0xf6, 0x71, 0xaa, 0x3a, 0xff, 0x6c, 0xc4, 0x5b, 0xeb, 0xb9, 0x5c, 0x7f,
		0x66, 0x1b, 0xcf, 0x17, 0xe1, 0x63, 0xab, 0x7a, 0xae, 0x04, 0x5f, 0x76, 0x5c, 0xf6, 0x62, 0x2a,
		0x67, 0x1d, 0xca, 0x66, 0x3d, 0xa3, 0xdb, 0x94, 0x87, 0xd9, 0x98, 0x6f, 0xd9, 0x98, 0x57, 0x59,
		0xdb, 0x28, 0x69, 0xa2, 0xe5, 0x4b, 0x0f, 0xa6, 0xaa, 0x5f, 0xaf, 0x46, 0x2f, 0x97, 0xfa, 0x5c,
		0xd7, 0x93, 0x5f, 0x7e, 0x29, 0xac, 0x5e, 0xeb, 0xa4, 0x77, 0x6d, 0x36, 0x72, 0x13, 0xf6, 0x71,
		0xd1, 0xa4, 0x5f, 0xfe, 0x49, 0x65, 0xd0, 0x8b, 0xd2, 0xe8, 0x44, 0x69, 0xf4, 0xe1, 0x63, 0x73,
		0x9f, 0xc8, 0x25, 0x67, 0x89, 0xdb, 0xba, 0x67, 0xb3, 0xd5, 0xab, 0x61, 0xf8, 0xd5, 0x1b, 0x6e,
		0x5e, 0x09, 0x31, 0x7b, 0x8e, 0xe2, 0x52, 0x88, 0xdd, 0x7c, 0x94, 0x42, 0xac, 0xb7, 0x71, 0x64,
		0x6d, 0x20, 0xe9, 0x1b, 0x89, 0x8c, 0x8f, 0x97, 0xb2, 0xb1, 0xd4, 0x90, 0x55, 0x1b, 0x17, 0x43,
		0x78, 0x03, 0x5f, 0x8b, 0xbd, 0x81, 0x1f, 0xcb, 0x3b, 0x1d, 0xbc, 0x7f, 0xa4, 0x9c, 0xd3, 0xb4,
		0xbd, 0x2d, 0x3f, 0x4d, 0xdb, 0x6c, 0x9b, 0xca, 0xde, 0xae, 0x64, 0xdb, 0x96, 0x6c, 0xfb, 0x92,
		0x6c, 0x63, 0x49, 0x9c, 0xf7, 0xa6, 0x87, 0xe4, 0xbe, 0xa4, 0x5a, 0xec, 0xf9, 0x9e, 0x94, 0x67,
		0x1e, 0x8f, 0x77, 0xbb, 0x2c, 0xeb, 0x90, 0xb3, 0xe9, 0xa5, 0x6f, 0x7e, 0x0a, 0x27, 0x40, 0xe7,
		0x0c, 0xa8, 0x9c, 0x02, 0xb9, 0x73, 0x20, 0x77, 0x12, 0xa4, 0xce, 0x42, 0x8e, 0xd3, 0x90, 0xe4,
		0x3c, 0xa4, 0x3b, 0x91, 0x7b, 0x67, 0xd2, 0xef, 0x6b, 0x23, 0x2f, 0xb9, 0x96, 0x3f, 0x3b, 0xf7,
		0xde, 0xab, 0x64, 0x4b, 0x48, 0x56, 0xbb, 0x5c, 0xf7, 0x42, 0xe6, 0x66, 0x28, 0xdd, 0x0d, 0xbd,
		0xdb, 0xa1, 0x76, 0x3f, 0x6c, 0x6e, 0x88, 0xcd, 0x1d, 0xb1, 0xb8, 0x25, 0xb9, 0xee, 0x49, 0xb2,
		0x9b, 0x22, 0x73, 0x57, 0xd9, 0x83, 0x7b, 0xf3, 0x3d, 0x4a, 0xdc, 0x42, 0x63, 0xb6, 0x0e, 0x6d,
		0xe7, 0x8c, 0x3d, 0x74, 0xce, 0x50, 0xe8, 0xd8, 0xb8, 0x1c, 0x1c, 0xbb, 0xa3, 0x63, 0x77, 0x78,
		0xac, 0x8e, 0x8f, 0xc6, 0x01, 0x12, 0x39, 0x42, 0x72, 0x87, 0x98, 0x2d, 0x20, 0x86, 0xfe, 0x95,
		0xff, 0x75, 0x28, 0xb4, 0xa9, 0x69, 0x69, 0xb3, 0x5a, 0x08, 0xb6, 0x69, 0xd8, 0x4f, 0xac, 0x4f,
		0x6c, 0x70, 0xb4, 0x2d, 0x88, 0xd8, 0x1c, 0x2a, 0xa7, 0x63, 0xe5, 0x77, 0xb0, 0xdc, 0x8e, 0x56,
		0x99, 0xc3, 0x55, 0xe6, 0x78, 0x95, 0x38, 0x60, 0x5a, 0x47, 0x4c, 0xec, 0x90, 0x33, 0x89, 0x91,
		0xb7, 0x31, 0x5a, 0xda, 0x6f, 0xf4, 0xed, 0x8c, 0x96, 0x70, 0xe6, 0x11, 0xcf, 0xcc, 0x86, 0xac,
		0xbd, 0x51, 0x34, 0x0a, 0x87, 0xc7, 0x51, 0x38, 0x4e, 0xfc, 0xe0, 0x6a, 0x16, 0x09, 0xb2, 0x97,
		0x67, 0xb5, 0x4e, 0x69, 0xf3, 0x23, 0x3f, 0xf1, 0xc3, 0x20, 0x7e, 0xfa, 0x5b, 0xd9, 0x77, 0xe8,
		0x5a, 0x1e, 0x71, 0xd9, 0x19, 0x71, 0xab, 0xa1, 0xa5, 0xf5, 0x6e, 0xaf, 0xc2, 0x44, 0x0b, 0x7b,
		0x5a, 0x2f, 0xbc, 0x19, 0x45, 0x22, 0x8e, 0x45, 0x5f, 0x9b, 0x18, 0xde, 0x64, 0xf1, 0xa2, 0xf6,
		0x90, 0x24, 0x54, 0x51, 0x35, 0x12, 0x3d, 0x31, 0xed, 0xca, 0xcc, 0x84, 0x97, 0xe6, 0x0b, 0x12,
		0x9b, 0x9d, 0xcc, 0x1b, 0x7a, 0xbf, 0x5d, 0x2c, 0x2d, 0x45, 0xa6, 0xdd, 0xa6, 0x97, 0x00, 0x94,
		0x00, 0x94, 0x00, 0x94, 0x00, 0x94, 0x00, 0x94, 0xf7, 0x55, 0x84, 0x61, 0x38, 0x14, 0x1e, 0x6b,
		0x97, 0xf7, 0xbd, 0x42, 0xab, 0x88, 0x71, 0x20, 0xfb, 0x02, 0xc0, 0x18, 0x88, 0x48, 0x04, 0xbd,
		0xad, 0x9c, 0x4c, 0x33, 0xb7, 0x44, 0xfb, 0xb4, 0x51, 0x39, 0xfa, 0xb0, 0xb7, 0x57, 0xd1, 0x2a,
		0xf5, 0xfe, 0x37, 0x11, 0x25, 0x7e, 0x9c, 0xde, 0xa0, 0xaa, 0x84, 0x83, 0x4a, 0x7b, 0x3c, 0x4c,
		0xfc, 0xd1, 0x50, 0x54, 0x26, 0x89, 0x42, 0x5c, 0xf1, 0x83, 0xca, 0xc9, 0xc7, 0x0e, 0xe7, 0x50,
		0x65, 0x05, 0xa3, 0xa4, 0x1f, 0x07, 0x8d, 0x7b, 0x23, 0x60, 0x9e, 0x3a, 0xa2, 0x72, 0xa0, 0xf4,
		0x52, 0x1c, 0x79, 0xb9, 0x95, 0x60, 0x48, 0xca, 0x4b, 0x61, 0x32, 0x72, 0x65, 0xe4, 0xca, 0x54,
		0xe2, 0x8a, 0x45, 0xd0, 0xe7, 0x4b, 0x94, 0xd3, 0xd5, 0x90, 0x25, 0x23, 0x4b, 0x46, 0x96, 0x8c,
		0x2c, 0x19, 0x59, 0x32, 0xb2, 0x64, 0x64, 0xc9, 0xc8, 0x92, 0x91, 0x25, 0x23, 0x4b, 0x46, 0x96,
		0x8c, 0x2c, 0x19, 0x59, 0x32, 0xb2, 0xe4, 0x1c, 0x67, 0xc9, 0xda, 0x0d, 0xc3, 0x7c, 0xe5, 0x07,
		0x99, 0x72, 0xba, 0x22, 0xb2, 0x3f, 0x64, 0x7f, 0xc8, 0xfe, 0x90, 0xfd, 0x21, 0xfb, 0xcb, 0xf6,
		0xdb, 0xd8, 0x0f, 0x92, 0xf7, 0x8c, 0xb9, 0x1f, 0xc3, 0x5c, 0xfb, 0xaa, 0xed, 0x05, 0x57, 0x5b,
		0x99, 0x28, 0xb5, 0xfd, 0x80, 0x3f, 0x01, 0xb9, 0xf0, 0x86, 0x63, 0x41, 0x1f, 0x6d, 0x96, 0xd6,
		0x3d, 0x8d, 0xbc, 0xde, 0x04, 0xc4, 0x35, 0xfd, 0x2b, 0x5f, 0xd6, 0x90, 0xad, 0x97, 0x6d, 0x11,
		0x71, 0xe5, 0x25, 0xd3, 0xda, 0xb7, 0xcd, 0x67, 0x5a, 0xe5, 0xc8, 0xcb, 0x3c, 0x34, 0x29, 0xef,
		0x87, 0x3a, 0x93, 0xda, 0x3f, 0x38, 0x80, 0x51, 0x21, 0x37, 0x45, 0x6e, 0x8a, 0xdc, 0x54, 0xf5,
		0x93, 0xa9, 0xee, 0xb7, 0x31, 0x29, 0x5c, 0x76, 0xdf, 0xd5, 0x79, 0x37, 0xd2, 0xec, 0x6f, 0x3b,
		0x5f, 0xaf, 0x46, 0x3b, 0xd3, 0x06, 0x64, 0x3b, 0x59, 0x0f, 0xa4, 0xec, 0x6f, 0x3b, 0x59, 0x4b,
		0x83, 0x9d, 0xd9, 0x05, 0xe1, 0xa2, 0x8c, 0x61, 0x26, 0xe8, 0x0b, 0xb0, 0xd9, 0xdc, 0xbb, 0xe7,
		0xb3, 0x1a, 0x1b, 0xcc, 0xc5, 0x7b, 0x2e, 0x5a, 0x27, 0xbf, 0x88, 0xbd, 0x8f, 0x8b, 0xd8, 0xf9,
		0xa1, 0x2a, 0x70, 0x11, 0xbb, 0xc4, 0x81, 0x0a, 0x17, 0xb1, 0x29, 0x1d, 0x29, 0x38, 0xe1, 0x3c,
		0x3b, 0x58, 0x6e, 0x47, 0xab, 0xcc, 0xe1, 0x2a, 0x73, 0xbc, 0x4a, 0x1c, 0x30, 0x4f, 0x52, 0x8a,
		0x8b, 0xd8, 0x12, 0x70, 0x26, 0x2e, 0x62, 0xab, 0xcc, 0xa8, 0x71, 0x7f, 0xf8, 0xe5, 0x70, 0x09,
		0x95, 0xd1, 0xc0, 0x41, 0xc0, 0x41, 0xc0, 0x41, 0xc0, 0x41, 0x5b, 0x8b, 0x83, 0x50, 0x19, 0xfd,
		0xd2, 0x14, 0x1f, 0x95, 0xd1, 0x34, 0x96, 0x88, 0xca, 0xe8, 0x5f, 0x07, 0x0d, 0x54, 0x46, 0xa3,
		0x32, 0x7a, 0x1b, 0x4e, 0x9f, 0x71, 0xed, 0xf5, 0xb7, 0xae, 0x10, 0xd7, 0x5e, 0x91, 0xdc, 0x21,
		0xb9, 0x43, 0x72, 0x87, 0xe4, 0x0e, 0xc9, 0x1d, 0x92, 0x3b, 0x24, 0x77, 0x48, 0xee, 0x90, 0xdc,
		0x21, 0xb9, 0x43, 0x72, 0x87, 0xe4, 0x8e, 0x2c, 0xb9, 0xc3, 0x6d, 0x4d, 0x24, 0x2d, 0x48, 0x5a,
		0x90, 0xb4, 0x20, 0x69, 0x51, 0x9d, 0xb4, 0xe0, 0xb6, 0x66, 0x81, 0xf0, 0x3d, 0x6e, 0x6b, 0x72,
		0xbe, 0x01, 0xdc, 0xd6, 0xa4, 0x36, 0x29, 0xdc, 0xd6, 0xc4, 0x6d, 0xcd, 0xd2, 0xa4, 0x54, 0xb8,
		0x64, 0xb8, 0x2a, 0x19, 0xcc, 0xcb, 0x25, 0xc3, 0xe9, 0xdd, 0xb7, 0xa2, 0xdc, 0x31, 0xcc, 0xf5,
		0x44, 0x5a, 0x62, 0xdb, 0xc9, 0x8d, 0xcd, 0x54, 0x49, 0x6e, 0x7a, 0x46, 0xe3, 0x5e, 0x12, 0xcc,
		0xc0, 0xb9, 0x39, 0x7d, 0xb3, 0xc6, 0xec, 0xbd, 0xba, 0x9d, 0xd9, 0x3b, 0x74, 0x4f, 0xae, 0x46,
		0xee, 0xc7, 0xf4, 0x1d, 0xba, 0xf5, 0x81, 0xdf, 0xf5, 0x06, 0xbe, 0x5b, 0xef, 0xf7, 0x53, 0xae,
		0x4e, 0xae, 0x0d, 0xcb, 0xb3, 0x34, 0x89, 0x56, 0x56, 0x9d, 0xeb, 0x42, 0x9b, 0x09, 0x8a, 0x6a,
		0xaa, 0xfa, 0x83, 0x65, 0x68, 0x26, 0xab, 0xef, 0x62, 0xb2, 0x3a, 0x26, 0xab, 0xe7, 0x90, 0xcc,
		0xc1, 0x64, 0x75, 0x3a, 0x32, 0x86, 0xe1, 0x5a, 0x14, 0xe5, 0x35, 0xa8, 0xec, 0xda, 0xd3, 0xdb,
		0xb7, 0xb3, 0xde, 0x0c, 0x3b, 0x0f, 0x3d, 0x65, 0x19, 0x22, 0xd0, 0x68, 0x34, 0xbc, 0xa5, 0xba,
		0x70, 0x7c, 0x1f, 0x80, 0x16, 0x57, 0xa1, 0x89, 0x3f, 0x7b, 0x88, 0x3f, 0x0f, 0xe2, 0x4f, 0x34,
		0x0a, 0x87, 0x08, 0x40, 0x39, 0x0c, 0x40, 0xa9, 0x62, 0x4a, 0x16, 0x81, 0xa8, 0x3a, 0x28, 0x54,
		0x7b, 0xf3, 0x5d, 0x4a, 0xdc, 0x51, 0x66, 0xb6, 0x4e, 0xc1, 0x5b, 0xca, 0xec, 0x6e, 0x47, 0x4b,
		0x19, 0x22, 0xd7, 0xc6, 0xe5, 0xe2, 0xd8, 0x5d, 0x1d, 0xbb, 0xcb, 0xe3, 0x75, 0x7d, 0x74, 0xf4,
		0x54, 0xa5, 0xc8, 0x4d, 0x65, 0xfa, 0xd3, 0x4a, 0x7d, 0x4d, 0xfc, 0x18, 0x85, 0x51, 0xc2, 0xde,
		0x53, 0x66, 0xf5, 0xf2, 0xdb, 0x74, 0x3b, 0xc1, 0xd6, 0xff, 0x9f, 0xde, 0x70, 0x5c, 0xdb, 0x3a,
		0x77, 0x74, 0x5c, 0x52, 0xc8, 0x41, 0x1c, 0xe2, 0x8c, 0x47, 0x0a, 0xe2, 0x12, 0x77, 0x7c, 0x52,
		0x16, 0xa7, 0x94, 0xc5, 0x2b, 0x35, 0x71, 0x8b, 0x36, 0x7e, 0x11, 0xc7, 0x31, 0x7a, 0x92, 0xe9,
		0xb7, 0x11, 0x66, 0xd6, 0x79, 0x26, 0x99, 0xbc, 0x01, 0xc6, 0x2b, 0x0b, 0x35, 0x86, 0xb5, 0xf4,
		0x60, 0x7c, 0xc3, 0xb7, 0xcf, 0x9d, 0xb0, 0x9b, 0x44, 0x7e, 0x70, 0xc5, 0x5a, 0x47, 0x51, 0xdd,
		0x9d, 0xe8, 0xb2, 0xde, 0x68, 0xe8, 0x9d, 0x79, 0x2c, 0x65, 0xac, 0x1a, 0xd9, 0x4b, 0xeb, 0xc7,
		0xd9, 0x02, 0x39, 0xd3, 0x66, 0x5c, 0xd0, 0xa8, 0x91, 0x3a, 0x31, 0x46, 0x75, 0x3e, 0xd0, 0x24,
		0x6b, 0x59, 0xca, 0x43, 0x3d, 0x1e, 0x57, 0xf6, 0xb6, 0xa4, 0x50, 0xe4, 0x0e, 0x6d, 0xbd, 0x5f,
		0xb0, 0x1e, 0x46, 0x4e, 0xad, 0x95, 0x25, 0xfa, 0x37, 0x4a, 0xb3, 0xc4, 0x87, 0xcb, 0x23, 0x4b,
		0x44, 0x96, 0x88, 0x2c, 0x11, 0x59, 0x22, 0xb2, 0x44, 0x64, 0x89, 0xc8, 0x12, 0x91, 0x25, 0x22,
		0x4b, 0x44, 0x96, 0x88, 0x2c, 0x11, 0x59, 0x22, 0xb2, 0x44, 0xf6, 0x27, 0xe3, 0x5e, 0xc6, 0x66,
		0x35, 0xf6, 0x0b, 0x85, 0x6f, 0x98, 0xff, 0x84, 0xf9, 0x4f, 0x2f, 0x48, 0x7f, 0xf7, 0x51, 0xac,
		0x93, 0xa3, 0x34, 0x17, 0xc5, 0x3a, 0x65, 0x8e, 0x56, 0x28, 0xd6, 0xa1, 0x10, 0x2a, 0x68, 0xd8,
		0x0d, 0xe2, 0x0f, 0x68, 0xd8, 0x5c, 0xc7, 0x25, 0xee, 0xf8, 0xa4, 0x2c, 0x4e, 0x29, 0x8b, 0x57,
		0x6a, 0xe2, 0xd6, 0x76, 0xa4, 0xdb, 0xa0, 0x61, 0x09, 0xd6, 0x02, 0x0d, 0x4b, 0xbc, 0x38, 0x68,
		0x58, 0xe9, 0xae, 0x13, 0x34, 0x6c, 0xb1, 0xe2, 0x02, 0x6a, 0x4c, 0xd6, 0x0f, 0x3d, 0xa8, 0x31,
		0x41, 0x72, 0x83, 0xe4, 0x06, 0xc9, 0x0d, 0x92, 0x1b, 0x24, 0x37, 0x48, 0x6e, 0x90, 0xdc, 0x20,
		0xb9, 0x41, 0x72, 0x83, 0xe4, 0xa6, 0x14, 0xc9, 0x0d, 0x4a, 0x23, 0x56, 0xac, 0x93, 0xa7, 0xd2,
		0x08, 0x74, 0xad, 0x2c, 0x8a, 0xf9, 0xe4, 0xc9, 0x6c, 0x72, 0xd6, 0xb8, 0x72, 0xf2, 0xce, 0x3a,
		0xd3, 0x37, 0x56, 0x82, 0xce, 0x61, 0x44, 0xad, 0x77, 0x68, 0x5b, 0xee, 0xa0, 0x5b, 0xd8, 0x6a,
		0xc2, 0x00, 0xdd, 0x2a, 0xf3, 0x91, 0xff, 0xa3, 0x5b, 0x25, 0x5d, 0xaf, 0x30, 0xda, 0x66, 0xbb,
		0x4b, 0xbb, 0x8a, 0xb2, 0xe9, 0xee, 0x63, 0x77, 0xb6, 0x8b, 0xce, 0x61, 0x0a, 0xdd, 0x1c, 0x97,
		0xbb, 0x63, 0x77, 0x7b, 0xec, 0xee, 0x8f, 0xd5, 0x0d, 0x16, 0x33, 0x3b, 0x24, 0x67, 0x37, 0xb3,
		0xfd, 0xe2, 0xf7, 0x45, 0x90, 0xf8, 0xc9, 0x2d, 0x4d, 0x63, 0xdf, 0x25, 0x44, 0x46, 0x38, 0x41,
		0xa5, 0x6a, 0xcc, 0x3e, 0xca, 0x89, 0x17, 0x0b, 0xbe, 0x83, 0xc7, 0xfa, 0xa9, 0xe1, 0x76, 0x27,
		0x7f, 0x38, 0x9f, 0x3b, 0xd4, 0x5c, 0xe2, 0x74, 0x14, 0x4d, 0xcc, 0x72, 0xde, 0xc8, 0x44, 0x02,
		0xcf, 0xc5, 0x68, 0x74, 0x2e, 0x6a, 0xee, 0x69, 0xcb, 0xfa, 0x4f, 0xb7, 0xa3, 0x37, 0x18, 0x0e,
		0x3f, 0xfe, 0xd8, 0x4a, 0x01, 0xb6, 0xea, 0x27, 0x7a, 0x4b, 0x6f, 0xba, 0xe7, 0xa6, 0xd1, 0xa8,
		0x77, 0x1d, 0xc8, 0x71, 0x4d, 0x39, 0x42, 0x7e, 0x9b, 0xc8, 0xef, 0x10, 0x76, 0x28, 0x49, 0x8e,
		0x90, 0xdf, 0xda, 0xf2, 0x6b, 0xed, 0x5f, 0x74, 0x4c, 0x57, 0xbf, 0xe8, 0x98, 0x90, 0xde, 0xba,
		0xd2, 0xbb, 0xe8, 0xb4, 0xba, 0x90, 0xde, 0x1a, 0xd2, 0x7b, 0x37, 0x91, 0x5e, 0x1a, 0x49, 0xda,
		0xe7, 0x2d, 0x07, 0x7b, 0x78, 0x73, 0x39, 0xc2, 0x13, 0x6e, 0x2e, 0xc5, 0x43, 0x58, 0xa3, 0x24,
		0x39, 0xc2, 0x1a, 0xd7, 0x97, 0xa2, 0x61, 0xfe, 0xd9, 0x75, 0xea, 0x1c, 0xa5, 0x2f, 0x5b, 0x2c,
		0x3c, 0xb7, 0xdb, 0x39, 0x85, 0x00, 0x37, 0x11, 0x20, 0x80, 0xe1, 0x5a, 0x02, 0xec, 0xda, 0x8e,
		0xee, 0x76, 0xac, 0x96, 0xd1, 0xf8, 0x9c, 0x06, 0x66, 0xc8, 0x70, 0x63, 0x19, 0x1e, 0x42, 0x86,
		0x2f, 0x97, 0xe1, 0x45, 0xc7, 0xe4, 0x25, 0x0c, 0x69, 0x6f, 0x5c, 0xe0, 0xdc, 0xa3, 0xc2, 0x59,
		0x15, 0xc7, 0xde, 0x19, 0xaa, 0x18, 0x9d, 0x7b, 0x44, 0xe0, 0x7d, 0x1d, 0x8a, 0x3e, 0xfd, 0xb1,
		0xf9, 0x7c, 0x21, 0xaa, 0x4e, 0x1e, 0x0c, 0xf7, 0xb2, 0xaa, 0xe9, 0x40, 0x7c, 0x1a, 0xc7, 0x73,
		0x89, 0x42, 0x82, 0x95, 0x0b, 0xa0, 0x90, 0x60, 0x2d, 0xad, 0xa3, 0x90, 0xa0, 0xb4, 0x01, 0x95,
		0xaf, 0x90, 0xe0, 0x6b, 0x18, 0x0e, 0x85, 0x17, 0x70, 0x14, 0x11, 0xec, 0x01, 0xd3, 0x00, 0xd3,
		0x3c, 0x57, 0x2c, 0xb1, 0x08, 0xfa, 0x13, 0x99, 0xdc, 0x8c, 0x03, 0x3f, 0x99, 0x5d, 0xdb, 0xa3,
		0xef, 0x4d, 0xb8, 0x62, 0x51, 0xc4, 0x74, 0xc4, 0x74, 0xc4, 0x74, 0xc4, 0xf4, 0x02, 0xc5, 0x74,
		0x16, 0x0f, 0x56, 0x61, 0xba, 0xe5, 0xcc, 0x73, 0xbb, 0x99, 0xf7, 0x56, 0xf3, 0xf4, 0x36, 0x73,
		0xd7, 0xa9, 0x9b, 0xcd, 0xba, 0xdd, 0xe4, 0xb8, 0x8e, 0x9e, 0xde, 0x60, 0xd6, 0x3f, 0x39, 0xba,
		0xd9, 0xd4, 0x59, 0x16, 0xdc, 0x4f, 0x69, 0xfb, 0xba, 0xfd, 0x91, 0xe3, 0xa2, 0x76, 0xf5, 0xdd,
		0x64, 0xb5, 0x13, 0xcb, 0x39, 0xe3, 0x58, 0xac, 0x96, 0x5e, 0x3e, 0xb3, 0x4c, 0xe2, 0xa3, 0x30,
		0xf2, 0x56, 0x0c, 0x6c, 0xb7, 0xbe, 0xa7, 0x9a, 0x39, 0xae, 0xbc, 0xe3, 0xe8, 0x85, 0x30, 0xb7,
		0x71, 0xb2, 0x2e, 0xd0, 0x0f, 0x96, 0x9b, 0x5a, 0x38, 0x59, 0x43, 0xe8, 0x87, 0xee, 0x7d, 0x62,
		0x72, 0xc7, 0x15, 0x8e, 0x8e, 0x12, 0x99, 0x6b, 0x3a, 0xae, 0xec, 0xe2, 0x5e, 0x39, 0x03, 0x38,
		0x68, 0xf9, 0x71, 0x52, 0x4f, 0x12, 0xe2, 0x4e, 0xc6, 0x6d, 0x3f, 0xd0, 0x87, 0x62, 0x02, 0xcf,
		0x62, 0xda, 0xa6, 0x0b, 0xd5, 0xb6, 0xf7, 0x63, 0x61, 0xa5, 0xbd, 0xf7, 0xb5, 0xda, 0xe1, 0x51,
		0xad, 0xb6, 0x7b, 0xf4, 0xee, 0x68, 0xf7, 0xc3, 0xc1, 0xc1, 0xde, 0x21, 0xe9, 0x8d, 0x02, 0x2b,
		0xea, 0x8b, 0x48, 0xf4, 0x4f, 0x6e, 0xab, 0xc7, 0x95, 0x60, 0x3c, 0x1c, 0x72, 0x2c, 0x75, 0x1e,
		0x8b, 0x89, 0xf2, 0x52, 0x76, 0x19, 0x3c, 0xc7, 0x96, 0xf2, 0x1c, 0xe8, 0x2d, 0xa0, 0xae, 0xb7,
		0x00, 0xc5, 0x80, 0x8e, 0x7c, 0x5e, 0xde, 0xbf, 0x8a, 0xbc, 0x9e, 0x18, 0x8c, 0x87, 0x5a, 0x24,
		0xe2, 0xc4, 0x8b, 0x12, 0xba, 0x6b, 0xfc, 0x4b, 0x2b, 0xe1, 0x42, 0x3f, 0x2e, 0xf4, 0x2b, 0x27,
		0xaf, 0x70, 0xa1, 0x9f, 0x2f, 0x68, 0x90, 0x5d, 0xe8, 0x27, 0xea, 0x40, 0xb2, 0x82, 0xeb, 0x22,
		0xe8, 0x44, 0x42, 0xec, 0xc0, 0xc8, 0x1d, 0x19, 0x87, 0x43, 0xe3, 0x73, 0x6c, 0x5c, 0x0e, 0x8e,
		0xdd, 0xd1, 0xb1, 0x3b, 0x3c, 0x56, 0xc7, 0x57, 0xcc, 0x44, 0x9c, 0x7c, 0x9a, 0x10, 0x75, 0xb1,
		0xd6, 0xd2, 0xbe, 0xa4, 0x2d, 0xda, 0xba, 0x17, 0x1c, 0x67, 0x53, 0x6d, 0xc2, 0x22, 0xae, 0xf9,
		0x17, 0xba, 0x69, 0xe7, 0x2e, 0xd4, 0xf0, 0x87, 0x1c, 0xee, 0xd0, 0xa3, 0x2c, 0x04, 0x29, 0x0b,
		0x45, 0x4a, 0x42, 0x12, 0x6d, 0x68, 0x22, 0x0e, 0x51, 0x99, 0xc4, 0xf8, 0x7b, 0x69, 0xd3, 0x17,
		0x8b, 0x2d, 0x21, 0xef, 0x3d, 0x8c, 0x4e, 0x7e, 0xc1, 0x7a, 0x18, 0x9d, 0xac, 0x18, 0x3e, 0x96,
		0xa4, 0x3f, 0xf0, 0x63, 0xe2, 0x10, 0xe3, 0x93, 0x31, 0x3e, 0xf9, 0x05, 0x58, 0x74, 0x1f, 0x74,
		0x07, 0xe8, 0x0e, 0xd0, 0x1d, 0xa0, 0x3b, 0x40, 0x77, 0x80, 0xee, 0x00, 0xdd, 0x01, 0xba, 0x03,
		0x74, 0x07, 0xe8, 0x0e, 0xd0, 0x1d, 0xf4, 0x74, 0x07, 0x50, 0x4f, 0xa9, 0xb3, 0x74, 0x4c, 0xf2,
		0x29, 0x8a, 0x09, 0xe5, 0xcd, 0x74, 0xf2, 0x35, 0xcd, 0xe7, 0xe3, 0xec, 0xdd, 0xd9, 0xb3, 0x37,
		0x57, 0x82, 0xa2, 0x40, 0x7f, 0xf4, 0xad, 0xa6, 0x0d, 0xbd, 0xaf, 0x62, 0x28, 0xfa, 0xda, 0x38,
		0xf0, 0x7b, 0x5e, 0x4c, 0x58, 0x18, 0xb8, 0x72, 0x35, 0x14, 0x07, 0xa2, 0x38, 0x50, 0x39, 0x82,
		0x47, 0x71, 0x20, 0x5f, 0x8c, 0x23, 0x2b, 0x0e, 0x9c, 0x5a, 0x88, 0x36, 0xf4, 0x6f, 0xfc, 0x84,
		0x9e, 0x32, 0x7f, 0xb0, 0x1a, 0x0a, 0x05, 0x55, 0xd1, 0x19, 0x60, 0xce, 0x8b, 0x47, 0x57, 0x80,
		0x39, 0x67, 0x77, 0x8e, 0xd9, 0x02, 0xc4, 0x15, 0xd4, 0x4b, 0xdb, 0x92, 0xb4, 0x92, 0x9a, 0xc9,
		0x51, 0xb2, 0x39, 0x4c, 0x4e, 0xc7, 0xc9, 0xef, 0x40, 0xb9, 0x1d, 0xa9, 0x32, 0x87, 0xaa, 0xcc,
		0xb1, 0x2a, 0x71, 0xb0, 0xf4, 0x34, 0x60, 0x85, 0x81, 0x07, 0xa6, 0x76, 0xbc, 0xd9, 0x42, 0x37,
		0xde, 0x0f, 0x6d, 0x6a, 0x85, 0xe9, 0xec, 0x2e, 0xe6, 0x4e, 0xb9, 0x0f, 0x56, 0x67, 0x32, 0x46,
		0x9e, 0x43, 0x3a, 0x76, 0x27, 0xad, 0xc2, 0x59, 0xab, 0x73, 0xda, 0xaa, 0x9c, 0xb7, 0x72, 0x27,
		0xae, 0xdc, 0x99, 0x2b, 0x75, 0xea, 0x3c, 0xce, 0x9d, 0xc9, 0xc9, 0x67, 0x92, 0x64, 0x3b, 0xf4,
		0x5b, 0xda, 0xaf, 0x63, 0x3f, 0x48, 0xde, 0xed, 0x73, 0xee, 0xd7, 0x99, 0xf7, 0x3d, 0x62, 0x5c,
		0xd2, 0xf6, 0x82, 0x2b, 0xc1, 0x52, 0xc3, 0xb2, 0xf8, 0xc5, 0xeb, 0x8f, 0x2a, 0xb3, 0xce, 0x27,
		0xec, 0x8e, 0x30, 0x5b, 0x3c, 0x1d, 0xff, 0xc9, 0x17, 0xe6, 0x96, 0xd6, 0x3f, 0x8d, 0xbc, 0x5e,
		0xe2, 0x87, 0x41, 0xd3, 0xbf, 0xf2, 0xa9, 0x3b, 0xbf, 0xfc, 0x7a, 0x6f, 0x89, 0x2b, 0x2f, 0xf1,
		0xbf, 0x09, 0xd2, 0x46, 0x29, 0x39, 0x70, 0x5b, 0x0f, 0x4d, 0xcf, 0xfb, 0xa1, 0xde, 0xf4, 0x6a,
		0xfb, 0x1f, 0x6a, 0x1f, 0x0e, 0x8f, 0xf6, 0x3f, 0x1c, 0xc0, 0x06, 0x55, 0xdb, 0xe0, 0xab, 0xed,
		0x5c, 0xed, 0x72, 0xab, 0x80, 0x07, 0xf3, 0xcd, 0x9d, 0x6c, 0x5d, 0x65, 0x37, 0x78, 0xf8, 0x0c,
		0x86, 0x41, 0x85, 0x93, 0xc4, 0xe3, 0x9b, 0x08, 0x12, 0x2d, 0x11, 0x5e, 0xd4, 0x0f, 0xbf, 0x07,
		0xfc, 0xf9, 0xfb, 0xd2, 0x3b, 0x60, 0x32, 0x5c, 0xce, 0xc2, 0xe4, 0x6c, 0x51, 0x86, 0x02, 0xe5,
		0xcc, 0xcd, 0x80, 0x0b, 0x01, 0x17, 0x02, 0x2e, 0x04, 0x5c, 0x08, 0xb8, 0x10, 0xb6, 0xfd, 0xca,
		0x57, 0x08, 0xfd, 0xd8, 0xfd, 0x12, 0x17, 0x44, 0x03, 0x55, 0x02, 0x55, 0xbe, 0x40, 0x8c, 0xdf,
		0xbd, 0x28, 0xf0, 0x83, 0x2b, 0x2d, 0xb9, 0x8e, 0x44, 0x7c, 0x1d, 0x0e, 0xfb, 0xda, 0xa8, 0x97,
		0xf0, 0x43, 0xcb, 0xd5, 0x6f, 0x03, 0xb8, 0x08, 0xb8, 0x08, 0xb8, 0x08, 0xb8, 0x08, 0xb8, 0x88,
		0x2f, 0xc7, 0x17, 0x51, 0x4f, 0x04, 0x89, 0x77, 0x25, 0x14, 0x40, 0xa3, 0x03, 0x9c, 0x13, 0xc9,
		0xff, 0xa0, 0x38, 0x27, 0x02, 0x47, 0x5f, 0xe6, 0x73, 0xa2, 0xbd, 0x5d, 0x18, 0x1f, 0x0e, 0x88,
		0x68, 0xbe, 0x70, 0x40, 0x84, 0x54, 0x3e, 0x07, 0x2b, 0x6c, 0x5b, 0xcf, 0x3f, 0xc5, 0x37, 0x85,
		0x57, 0x5d, 0x15, 0xdd, 0x59, 0xbc, 0x72, 0x45, 0xda, 0x1b, 0x8e, 0xde, 0x64, 0x08, 0xcd, 0x85,
		0xb8, 0x67, 0xdc, 0x52, 0xba, 0x42, 0xd9, 0x3b, 0xee, 0x71, 0x76, 0xc2, 0x76, 0xc1, 0x63, 0x1f,
		0x17, 0x3c, 0x8a, 0xc3, 0xff, 0xe0, 0x82, 0x07, 0x2e, 0x78, 0xfc, 0x56, 0x62, 0xb8, 0xe0, 0x41,
		0xed, 0x9c, 0x41, 0xde, 0x17, 0xd9, 0x69, 0xab, 0x72, 0xde, 0xca, 0x9d, 0xb8, 0x72, 0x67, 0xae,
		0xd4, 0xa9, 0xf3, 0x26, 0xec, 0xb8, 0xe0, 0x41, 0xe6, 0x7d, 0x71, 0xc1, 0x83, 0xe0, 0x83, 0x82,
		0xb8, 0x07, 0x77, 0x8a, 0x0b, 0x1e, 0xb8, 0xe0, 0x01, 0xfe, 0x9e, 0xec, 0xeb, 0x12, 0x95, 0x62,
		0xcf, 0x36, 0xc2, 0x45, 0x02, 0x54, 0x13, 0x3f, 0x7a, 0x42, 0xf4, 0x19, 0x9a, 0xa0, 0x2f, 0x61,
		0x9c, 0xd5, 0x6f, 0x03, 0xc9, 0x26, 0x92, 0x4d, 0x24, 0x9b, 0x48, 0x36, 0x91, 0x6c, 0xb2, 0xed,
		0xd7, 0xed, 0xaf, 0xa0, 0xc7, 0xb5, 0x41, 0x59, 0x11, 0x1b, 0xd7, 0x06, 0x29, 0xc0, 0x2b, 0x40,
		0x0f, 0x40, 0x0f, 0x40, 0x0f, 0x40, 0x0f, 0x40, 0x0f, 0x40, 0x0f, 0x40, 0xcf, 0xa2, 0xcc, 0x70,
		0xab, 0x0d, 0x61, 0x1b, 0x61, 0x1b, 0x61, 0x1b, 0x61, 0x1b, 0x61, 0x1b, 0xb7, 0xda, 0xc8, 0xbf,
		0x70, 0x38, 0xce, 0xbb, 0x3e, 0x0e, 0x26, 0x99, 0x5d, 0xd7, 0x43, 0xd3, 0xc3, 0xad, 0x36, 0x18,
		0x5f, 0x05, 0xa7, 0xe2, 0xf9, 0xcf, 0x34, 0x71, 0xe9, 0xea, 0x05, 0xeb, 0xe5, 0xfe, 0xd2, 0x15,
		0xe1, 0xa8, 0x4f, 0x7a, 0x8b, 0xc1, 0x34, 0xd9, 0x22, 0xda, 0x5c, 0x95, 0xf4, 0xa6, 0xdc, 0xba,
		0xb3, 0x42, 0x8d, 0xd1, 0xb7, 0x5a, 0x6b, 0xfa, 0xae, 0xcf, 0xa7, 0x6f, 0xda, 0x9d, 0x92, 0x21,
		0xad, 0xf4, 0x3d, 0x17, 0x65, 0x18, 0xee, 0x1f, 0xb4, 0x53, 0xf8, 0xb4, 0x48, 0xf4, 0x84, 0xff,
		0x8d, 0xb0, 0x46, 0x69, 0x75, 0x4d, 0x52, 0xb6, 0x2c, 0xe6, 0xf2, 0xa9, 0xe2, 0xed, 0x30, 0x97,
		0xaf, 0x78, 0xbc, 0x1b, 0xe6, 0xf2, 0x3d, 0x29, 0x19, 0xcc, 0xe5, 0xcb, 0xa1, 0xa3, 0x64, 0x73,
		0x98, 0x9c, 0x8e, 0x93, 0xdf, 0x81, 0x72, 0x3b, 0x52, 0x65, 0x0e, 0x55, 0x99, 0x63, 0x55, 0xe2,
		0x60, 0xb7, 0x23, 0x05, 0xc7, 0xb5, 0x6d, 0x6a, 0xe7, 0x8c, 0xd3, 0xe9, 0x22, 0x3b, 0x6d, 0x55,
		0xce, 0x5b, 0xb9, 0x13, 0x57, 0xee, 0xcc, 0x95, 0x3a, 0x75, 0x1e, 0xe7, 0xce, 0xe4, 0xe4, 0x33,
		0x49, 0xe2, 0xda, 0x36, 0xe9, 0x92, 0x38, 0x99, 0xe6, 0x58, 0x1c, 0x27, 0xd3, 0xf3, 0xbd, 0x85,
		0x93, 0x69, 0x45, 0xa6, 0x87, 0x6b, 0xdb, 0xf9, 0xb1, 0x41, 0x1c, 0x50, 0x17, 0x00, 0x78, 0xa0,
		0xed, 0x6a, 0x91, 0x55, 0x88, 0x0b, 0x76, 0xb8, 0x60, 0x07, 0x2e, 0x04, 0x5c, 0x08, 0xb8, 0x10,
		0x70, 0x21, 0xe0, 0x42, 0x36, 0xde, 0xaf, 0x98, 0xcb, 0x07, 0x54, 0x09, 0x54, 0x89, 0x1b, 0x8c,
		0xc0, 0x45, 0xc0, 0x45, 0xc0, 0x45, 0xc0, 0x45, 0xc0, 0x45, 0xb8, 0xc1, 0xc8, 0xf0, 0x85, 0x73,
		0x22, 0xde, 0xf5, 0xc1, 0xd1, 0x33, 0xbb, 0xae, 0x87, 0xa6, 0x87, 0x1b, 0x8c, 0x30, 0xbe, 0x0a,
		0x0e, 0x88, 0x90, 0xca, 0x97, 0x3e, 0x95, 0xc7, 0x15, 0xd1, 0x17, 0xac, 0x97, 0xf7, 0xeb, 0x7a,
		0xd9, 0xdd, 0x2b, 0x0c, 0xe8, 0x7b, 0x5a, 0x87, 0x18, 0xd0, 0xb7, 0x31, 0x41, 0x84, 0x01, 0x7d,
		0x05, 0x22, 0x82, 0x70, 0xd3, 0x03, 0x37, 0x3d, 0x7e, 0x2b, 0x31, 0xdc, 0xf4, 0xa0, 0x76, 0xce,
		0x60, 0xf1, 0x8b, 0xec, 0xb4, 0x55, 0x39, 0x6f, 0xe5, 0x4e, 0x5c, 0xb9, 0x33, 0x57, 0xea, 0xd4,
		0x79, 0x33, 0x77, 0xdc, 0xf4, 0x20, 0xf3, 0xbe, 0xb8, 0xe9, 0x41, 0xf0, 0x41, 0xc1, 0xe0, 0x83,
		0x44, 0xc5, 0x4d, 0x0f, 0xdc, 0xf4, 0x00, 0x91, 0x4f, 0xf6, 0x85, 0x01, 0x7d, 0xcf, 0x37, 0x42,
		0x0c, 0xe8, 0x43, 0xb2, 0x89, 0x64, 0x13, 0xc9, 0x26, 0x92, 0x4d, 0x24, 0x9b, 0x98, 0x55, 0x53,
		0xa4, 0xb0, 0x8d, 0xfb, 0x83, 0xb8, 0x3f, 0x08, 0xd0, 0x03, 0xd0, 0x03, 0xd0, 0x03, 0xd0, 0x03,
		0xd0, 0x03, 0xd0, 0xb3, 0xfd, 0xa0, 0x07, 0xd7, 0xdb, 0x10, 0xb6, 0x11, 0xb6, 0x11, 0xb6, 0x11,
		0xb6, 0x11, 0xb6, 0x71, 0xbd, 0x8d, 0xfc, 0x0b, 0x87, 0xe3, 0xbc, 0xeb, 0xe3, 0x60, 0x92, 0xd9,
		0x75, 0x3d, 0x34, 0x3d, 0x5c, 0x6f, 0x83, 0xf1, 0x55, 0x70, 0x2a, 0x9e, 0xff, 0x4c, 0x13, 0xb7,
		0xaf, 0x5e, 0xb0, 0x5e, 0x71, 0x6e, 0x5f, 0x61, 0x52, 0x1f, 0x97, 0x31, 0x62, 0x52, 0x1f, 0xd3,
		0xd8, 0xb5, 0x0a, 0xe5, 0xc8, 0x3e, 0x7b, 0xfe, 0xde, 0x8b, 0x32, 0xba, 0xef, 0x55, 0x8e, 0xb7,
		0x46, 0x55, 0xfc, 0x48, 0x22, 0x4f, 0x1b, 0x4f, 0xd4, 0xf2, 0x75, 0x48, 0x93, 0xcf, 0x56, 0xbf,
		0x5f, 0x8b, 0x80, 0x2c, 0x8b, 0x63, 0x18, 0x8c, 0xf7, 0xf6, 0x6d, 0xb6, 0xb7, 0xb4, 0x89, 0x3d,
		0x57, 0xfe, 0xbb, 0xf2, 0xaf, 0x29, 0x77, 0xa2, 0x25, 0xb7, 0x23, 0x11, 0x1f, 0x1b, 0x9d, 0x8b,
		0x9a, 0xdb, 0xaa, 0x9f, 0xe8, 0x2d, 0xbd, 0xe9, 0x9e, 0x9b, 0x46, 0xa3, 0xde, 0x75, 0xfe, 0xb5,
		0x65, 0x83, 0xf4, 0x52, 0x25, 0x6e, 0xf3, 0x18, 0xbd, 0x35, 0xb5, 0x5c, 0xc8, 0x7b, 0xcd, 0x4d,
		0x11, 0xf7, 0x22, 0x7f, 0xc4, 0x02, 0xc7, 0xb2, 0x6d, 0x64, 0x04, 0xbd, 0xe1, 0xb8, 0x2f, 0x2a,
		0xc9, 0xb5, 0x1f, 0x57, 0x7a, 0x61, 0x90, 0x78, 0x7e, 0x20, 0xa2, 0xca, 0x20, 0x8c, 0x2a, 0x46,
		0xe7, 0x5b, 0xad, 0x32, 0x73, 0xf9, 0x95, 0x99, 0xcf, 0xaf, 0xc4, 0x23, 0xd1, 0xf3, 0x07, 0x7e,
		0xef, 0xaf, 0x59, 0xf0, 0x1c, 0x47, 0xd3, 0xd0, 0x4d, 0x6c, 0x13, 0x8c, 0xdc, 0xf4, 0xe2, 0xfe,
		0xea, 0x2f, 0xa8, 0x84, 0xe1, 0x4c, 0x49, 0x05, 0x11, 0xfd, 0x60, 0xbb, 0xc9, 0xb2, 0x06, 0x00,
		0x67, 0xd2, 0xa7, 0x5e, 0xe6, 0x1a, 0xbd, 0x10, 0x03, 0xfa, 0x3c, 0x02, 0x79, 0x02, 0xe7, 0x20,
		0x15, 0xaa, 0xcb, 0xdd, 0x90, 0xf2, 0x0c, 0x5a, 0xa2, 0xe9, 0x55, 0x53, 0xbd, 0xcc, 0xf5, 0x21,
		0xdb, 0xf0, 0xb2, 0x78, 0xf9, 0x60, 0x15, 0xc9, 0x1b, 0x87, 0xa6, 0x09, 0x08, 0xd9, 0xb1, 0x39,
		0xe5, 0xf1, 0x38, 0xfd, 0x31, 0x38, 0x35, 0xa4, 0x60, 0x3b, 0xd6, 0x66, 0x43, 0x0d, 0x2c, 0xc7,
		0xd4, 0xf9, 0x4e, 0xcc, 0xa9, 0x9a, 0x6c, 0x50, 0xcf, 0xaf, 0xe6, 0x99, 0x5b, 0x8d, 0xc1, 0xfe,
		0x79, 0x70, 0x6c, 0x2a, 0xf9, 0x08, 0x0c, 0xf6, 0xcf, 0x6b, 0x0e, 0x52, 0xd4, 0xc1, 0xfe, 0xe2,
		0x47, 0x22, 0x82, 0xbe, 0xe8, 0x6b, 0x81, 0xf8, 0x91, 0x68, 0xd7, 0xe1, 0x48, 0x9b, 0xa0, 0xfd,
		0xbe, 0x1f, 0x30, 0x0e, 0xfb, 0xff, 0xc5, 0x7b, 0xa0, 0x6e, 0xea, 0xc4, 0x78, 0xbf, 0x84, 0xe3,
		0x5e, 0xc9, 0x25, 0x4f, 0x1b, 0xbd, 0x5d, 0xae, 0x36, 0x7a, 0xbb, 0x68, 0xa3, 0x57, 0x0c, 0x52,
		0xaf, 0x82, 0x36, 0x7a, 0x68, 0xa3, 0xf7, 0x1c, 0x89, 0xb1, 0x15, 0x90, 0x2a, 0xb8, 0xef, 0xc1,
		0x74, 0xcf, 0x63, 0xdb, 0xaa, 0x56, 0x94, 0x35, 0x91, 0x2e, 0x68, 0x7b, 0x5e, 0x11, 0xf4, 0xb5,
		0xfe, 0x14, 0xb8, 0x68, 0x51, 0x38, 0x66, 0xed, 0xd5, 0xbb, 0xbc, 0x36, 0x10, 0x1a, 0x10, 0x1a,
		0x10, 0x1a, 0x10, 0x1a, 0x10, 0x1a, 0x10, 0x1a, 0x10, 0x1a, 0x10, 0x5a, 0x51, 0x10, 0x1a, 0x6a,
		0x78, 0x57, 0x61, 0xcb, 0x1c, 0x1c, 0xfd, 0xcf, 0x6b, 0x77, 0x29, 0x07, 0x74, 0x10, 0x14, 0xbc,
		0x12, 0x9c, 0xa0, 0x2e, 0x56, 0x2f, 0xd3, 0x1f, 0x5d, 0x3d, 0x58, 0x0d, 0x07, 0x58, 0xaa, 0xd0,
		0x28, 0x0e, 0xb0, 0x8a, 0x87, 0x36, 0x71, 0x80, 0xf5, 0x74, 0xfe, 0x4e, 0x7d, 0x80, 0x45, 0x7c,
		0xb2, 0xbf, 0xb4, 0x2d, 0x49, 0x4f, 0xf8, 0x99, 0x1c, 0x25, 0xd2, 0x78, 0xa4, 0xf1, 0x48, 0xe3,
		0xb7, 0x3b, 0x8d, 0xc7, 0xbc, 0x22, 0x6a, 0xe7, 0x8c, 0xb6, 0x4c, 0x45, 0x76, 0xda, 0xaa, 0x9c,
		0xb7, 0x72, 0x27, 0xae, 0xdc, 0x99, 0x2b, 0x75, 0xea, 0x3c, 0xce, 0x9d, 0xc9, 0xc9, 0x67, 0x92,
		0xc4, 0xbc, 0x22, 0xd2, 0x25, 0xd1, 0x92, 0x89, 0x63, 0x71, 0xb4, 0x64, 0x9a, 0xef, 0x2d, 0xb4,
		0x64, 0x52, 0x64, 0x7a, 0x98, 0x57, 0x94, 0x1f, 0x1b, 0x44, 0x67, 0xa6, 0x02, 0x00, 0x0f, 0xe6,
		0x93, 0xc8, 0x6c, 0x5d, 0x65, 0x27, 0x92, 0x7c, 0x06, 0x83, 0xc9, 0x12, 0xa4, 0xf4, 0x08, 0x26,
		0x4b, 0x80, 0x0b, 0x01, 0x17, 0x02, 0x2e, 0x04, 0x5c, 0x08, 0xb8, 0x10, 0x49, 0xfb, 0x75, 0xfb,
		0x27, 0x4b, 0x00, 0x55, 0x02, 0x55, 0xfe, 0x5e, 0x8c, 0x18, 0xdd, 0x01, 0x5c, 0x04, 0x5c, 0x04,
		0x5c, 0x04, 0x5c, 0x04, 0x5c, 0x84, 0xd1, 0x1d, 0xe4, 0x5f, 0x38, 0x27, 0xe2, 0x5d, 0x1f, 0x1c,
		0x3d, 0xb3, 0xeb, 0x7a, 0x68, 0x7a, 0x18, 0xdd, 0x01, 0xe3, 0xab, 0xe0, 0x80, 0x08, 0xa9, 0x7c,
		0xe9, 0x53, 0x79, 0xdc, 0x61, 0x7c, 0xc1, 0x7a, 0x79, 0xba, 0xda, 0xb6, 0x78, 0xd5, 0x8a, 0xf4,
		0x9e, 0x1b, 0xbd, 0xa9, 0x90, 0x76, 0xba, 0x48, 0x87, 0xc4, 0xf0, 0x35, 0xb7, 0x48, 0x97, 0xdb,
		0xb2, 0x8b, 0x1d, 0xfb, 0xb8, 0xd8, 0x51, 0x1c, 0xde, 0x07, 0x17, 0x3b, 0x70, 0xb1, 0xe3, 0xb7,
		0x12, 0xc3, 0xc5, 0x0e, 0x6a, 0xe7, 0x0c, 0xd2, 0xbe, 0xc8, 0x4e, 0x5b, 0x95, 0xf3, 0x56, 0xee,
		0xc4, 0x95, 0x3b, 0x73, 0xa5, 0x4e, 0x9d, 0x37, 0x51, 0xc7, 0xc5, 0x0e, 0x32, 0xef, 0x8b, 0x8b,
		0x1d, 0x04, 0x1f, 0x14, 0x84, 0x3d, 0x38, 0x53, 0x5c, 0xec, 0xc0, 0xc5, 0x0e, 0xf0, 0xf6, 0x64,
		0x5f, 0x97, 0xa8, 0x10, 0x7b, 0xb6, 0x11, 0x3e, 0x98, 0xcb, 0x2b, 0x7e, 0xf4, 0x84, 0xe8, 0x8b,
		0xbe, 0x92, 0xcb, 0x07, 0x2b, 0xde, 0x06, 0x92, 0x4d, 0x24, 0x9b, 0x48, 0x36, 0x91, 0x6c, 0x22,
		0xd9, 0x64, 0xdb, 0xaf, 0xdb, 0x5f, 0x39, 0x8f, 0xeb, 0x82, 0xb2, 0x22, 0x36, 0xae, 0x0b, 0x52,
		0x80, 0x57, 0x80, 0x1e, 0x80, 0x1e, 0x80, 0x1e, 0x80, 0x1e, 0x80, 0x1e, 0x80, 0x1e, 0x80, 0x9e,
		0x45, 0x99, 0xe1, 0x36, 0x1b, 0xc2, 0x36, 0xc2, 0x36, 0xc2, 0x36, 0xc2, 0x36, 0xc2, 0x36, 0x6e,
		0xb3, 0x91, 0x7f, 0xe1, 0x70, 0x9c, 0x77, 0x7d, 0x1c, 0x4c, 0x32, 0xbb, 0xae, 0x87, 0xa6, 0x87,
		0xdb, 0x6c, 0x30, 0xbe, 0x0a, 0x4e, 0xc5, 0xf3, 0x9f, 0x69, 0xe2, 0xb2, 0xd5, 0x0b, 0xd6, 0xcb,
		0xed, 0x65, 0xab, 0xe9, 0x1d, 0x1f, 0xcc, 0xac, 0xa3, 0xb7, 0xbd, 0x52, 0xce, 0xac, 0x63, 0x98,
		0xa1, 0x36, 0xfd, 0xcc, 0x49, 0x34, 0xee, 0x25, 0xc1, 0x2c, 0x23, 0x31, 0xa7, 0x1f, 0xc2, 0x98,
		0x7d, 0x06, 0xb7, 0x33, 0x7b, 0xe7, 0xee, 0xc9, 0xd5, 0xc8, 0xfd, 0x98, 0xbe, 0x73, 0xb7, 0x3e,
		0xf0, 0xbb, 0xde, 0xc0, 0x77, 0x8d, 0xd1, 0xb7, 0xda, 0xf9, 0xf4, 0xdd, 0xba, 0x53, 0xd6, 0xa3,
		0x95, 0xbe, 0x59, 0x8c, 0xd9, 0x9b, 0x56, 0x01, 0x45, 0xa2, 0x27, 0xfc, 0x6f, 0x84, 0xc5, 0x48,
		0xab, 0x8b, 0x8f, 0xb2, 0x65, 0x31, 0x78, 0x4f, 0x15, 0x41, 0x87, 0xc1, 0x7b, 0xc5, 0x23, 0xd8,
		0x30, 0x78, 0xef, 0x49, 0xc9, 0x60, 0xf0, 0x5e, 0x0e, 0x1d, 0x25, 0x9b, 0xc3, 0xe4, 0x74, 0x9c,
		0xfc, 0x0e, 0x94, 0xdb, 0x91, 0x2a, 0x73, 0xa8, 0xca, 0x1c, 0xab, 0x12, 0x07, 0xbb, 0x1d, 0xb9,
		0x36, 0xee, 0x67, 0x53, 0x3b, 0x67, 0x1c, 0x43, 0x17, 0xd9, 0x69, 0xab, 0x72, 0xde, 0xca, 0x9d,
		0xb8, 0x72, 0x67, 0xae, 0xd4, 0xa9, 0xf3, 0x38, 0x77, 0x26, 0x27, 0x9f, 0x49, 0x12, 0xf7, 0xb3,
		0x49, 0x97, 0xc4, 0x11, 0x34, 0xc7, 0xe2, 0x38, 0x82, 0x9e, 0xef, 0x2d, 0x1c, 0x41, 0x2b, 0x32,
		0x3d, 0xdc, 0xcf, 0xce, 0x8f, 0x0d, 0xe2, 0x24, 0xba, 0x00, 0xc0, 0x03, 0x7d, 0x55, 0x8b, 0xac,
		0x42, 0xdc, 0xa4, 0xc3, 0x4d, 0x3a, 0x70, 0x21, 0xe0, 0x42, 0xc0, 0x85, 0x80, 0x0b, 0x01, 0x17,
		0xb2, 0xf1, 0x7e, 0xc5, 0xe0, 0x3d, 0xa0, 0x4a, 0xa0, 0x4a, 0x5c, 0x55, 0x04, 0x2e, 0x02, 0x2e,
		0x02, 0x2e, 0x02, 0x2e, 0x02, 0x2e, 0xc2, 0x55, 0x45, 0x86, 0x2f, 0x9c, 0x13, 0xf1, 0xae, 0x0f,
		0x8e, 0x9e, 0xd9, 0x75, 0x3d, 0x34, 0x3d, 0x5c, 0x55, 0x84, 0xf1, 0x55, 0x70, 0x40, 0x84, 0x54,
		0xbe, 0xf4, 0xa9, 0x3c, 0xee, 0x82, 0xbe, 0x60, 0xbd, 0xbc, 0xde, 0xcf, 0xcb, 0xee, 0x5c, 0x61,
		0x02, 0xdf, 0xd3, 0xba, 0xc3, 0x04, 0xbe, 0x8d, 0x89, 0x21, 0x4c, 0xe0, 0x2b, 0x10, 0x01, 0x84,
		0x1b, 0x1e, 0xb8, 0xe1, 0xf1, 0x5b, 0x89, 0xe1, 0x86, 0x07, 0xb5, 0x73, 0x06, 0x7b, 0x5f, 0x64,
		0xa7, 0xad, 0xca, 0x79, 0x2b, 0x77, 0xe2, 0xca, 0x9d, 0xb9, 0x52, 0xa7, 0xce, 0x9b, 0xb1, 0xe3,
		0x86, 0x07, 0x99, 0xf7, 0xc5, 0x0d, 0x0f, 0x82, 0x0f, 0x0a, 0xe6, 0x1e, 0xe4, 0x29, 0x6e, 0x78,
		0xe0, 0x86, 0x07, 0x08, 0x7c, 0xb2, 0x2f, 0x4c, 0xe0, 0x7b, 0xbe, 0x11, 0x62, 0x02, 0x1f, 0x92,
		0x4d, 0x24, 0x9b, 0x48, 0x36, 0x91, 0x6c, 0x22, 0xd9, 0xc4, 0x30, 0x9a, 0x22, 0x85, 0x6d, 0xdc,
		0x1b, 0xc4, 0xbd, 0x41, 0x80, 0x1e, 0x80, 0x1e, 0x80, 0x1e, 0x80, 0x1e, 0x80, 0x1e, 0x80, 0x9e,
		0xed, 0x07, 0x3d, 0xb8, 0xd6, 0x86, 0xb0, 0x8d, 0xb0, 0x8d, 0xb0, 0x8d, 0xb0, 0x8d, 0xb0, 0x8d,
		0x6b, 0x6d, 0xe4, 0x5f, 0x38, 0x1c, 0xe7, 0x5d, 0x1f, 0x07, 0x93, 0xcc, 0xae, 0xeb, 0xa1, 0xe9,
		0xe1, 0x5a, 0x1b, 0x8c, 0xaf, 0x82, 0x53, 0xf1, 0xfc, 0x67, 0x9a, 0xb8, 0x75, 0xf5, 0x82, 0xf5,
		0xf2, 0x7f, 0xeb, 0x0a, 0xa3, 0xf8, 0xb8, 0x8c, 0xb0, 0xf4, 0xa3, 0xf8, 0xa8, 0xc7, 0xab, 0x55,
		0x48, 0x66, 0xf2, 0xd9, 0xf3, 0x37, 0x5d, 0xe2, 0xd9, 0x7c, 0xb4, 0x17, 0x10, 0x59, 0x2e, 0x1e,
		0xb2, 0xcd, 0xde, 0xdb, 0xc7, 0xec, 0xbd, 0xfc, 0x50, 0x6f, 0x98, 0xbd, 0x57, 0xe2, 0x78, 0x4b,
		0x3e, 0x7b, 0x4f, 0xfc, 0x48, 0x44, 0xd0, 0x17, 0x7d, 0x2d, 0x10, 0x3f, 0x12, 0xed, 0x3a, 0x1c,
		0x69, 0x93, 0x48, 0xdb, 0xf7, 0x03, 0xc6, 0x79, 0x7c, 0xbf, 0x78, 0x0f, 0xd4, 0xf7, 0x2f, 0x19,
		0x4b, 0x41, 0x38, 0x4a, 0x40, 0x2e, 0x79, 0x6e, 0xbc, 0xef, 0x62, 0xa6, 0x61, 0x8e, 0x03, 0x13,
		0x77, 0x80, 0x52, 0x16, 0xa8, 0x94, 0x05, 0x2c, 0x25, 0x81, 0x6b, 0x3b, 0xd8, 0x0b, 0xb6, 0xb3,
		0x1e, 0x05, 0xa5, 0x19, 0x4c, 0x25, 0x19, 0x05, 0x6d, 0x00, 0x23, 0x82, 0xbe, 0xd6, 0x9f, 0xc6,
		0x5b, 0x2d, 0x0a, 0xc7, 0xac, 0xdd, 0x60, 0x96, 0xd7, 0x06, 0xb0, 0x00, 0xb0, 0x00, 0xb0, 0x00,
		0xb0, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0xb0, 0x20, 0x07, 0x16, 0x38, 0xe4, 0x58, 0x05, 0x89, 0x72,
		0x74, 0xc8, 0x41, 0x78, 0x86, 0x46, 0x70, 0x3e, 0xf0, 0x2a, 0xc7, 0x66, 0x54, 0x15, 0x3f, 0x92,
		0xc8, 0xd3, 0xc6, 0x13, 0xbd, 0x7c, 0x1d, 0xd2, 0xf8, 0xa4, 0xea, 0xf7, 0x6b, 0x11, 0x90, 0x81,
		0x4b, 0x06, 0x76, 0xfe, 0xed, 0xdb, 0xcc, 0x0e, 0xb5, 0xc0, 0xbb, 0x11, 0x95, 0xff, 0xae, 0xfc,
		0x6b, 0x1a, 0xe7, 0xb4, 0xe4, 0x76, 0x24, 0xe2, 0x63, 0xa3, 0x73, 0x51, 0x73, 0xcf, 0x4d, 0xa3,
		0x51, 0xef, 0x3a, 0xff, 0xda, 0x32, 0x16, 0x3f, 0x55, 0xde, 0x36, 0x73, 0xf8, 0x2f, 0xd4, 0x6e,
		0x21, 0xf3, 0xd9, 0xa6, 0x88, 0x7b, 0x91, 0x3f, 0x62, 0xa9, 0xc3, 0xc8, 0xb6, 0x8d, 0x11, 0xf4,
		0x86, 0xe3, 0xbe, 0xa8, 0x24, 0xd7, 0x7e, 0x5c, 0xe9, 0x85, 0x41, 0xe2, 0xf9, 0x81, 0x88, 0x2a,
		0x83, 0x30, 0xaa, 0x18, 0x9d, 0x6f, 0xb5, 0xca, 0xec, 0xec, 0xb7, 0x12, 0x8f, 0x44, 0xcf, 0x1f,
		0xf8, 0xbd, 0xbf, 0x66, 0x01, 0x65, 0x1c, 0x4d, 0xc3, 0x19, 0xb1, 0x0d, 0x30, 0xe6, 0x05, 0xff,
		0x3f, 0x7b, 0x6f, 0xdb, 0xdb, 0xc6, 0xb5, 0xac, 0x69, 0x7f, 0xf7, 0xaf, 0x68, 0x10, 0x0f, 0xe0,
		0x1d, 0x20, 0xad, 0x48, 0xb2, 0x2c, 0xef, 0x18, 0xc8, 0x07, 0xd9, 0x56, 0x32, 0x9c, 0x23, 0x2b,
		0x84, 0x65, 0x6b, 0xce, 0xc1, 0xb6, 0x86, 0xa0, 0xc8, 0x25, 0xab, 0x71, 0xe8, 0x26, 0xa7, 0xd9,
		0x94, 0x65, 0x9c, 0x9d, 0xff, 0xfe, 0x80, 0x6f, 0x6d, 0xb6, 0x45, 0x45, 0xa2, 0xd9, 0x55, 0xb5,
		0x56, 0xf3, 0x22, 0x06, 0x67, 0x67, 0xe2, 0x98, 0xd5, 0x5c, 0x5d, 0xab, 0xea, 0xae, 0x97, 0xbb,
		0x6a, 0xf9, 0x3e, 0xf5, 0x96, 0x5e, 0x85, 0x02, 0x18, 0xb3, 0x08, 0x0a, 0x4a, 0xd7, 0x6b, 0x53,
		0x2d, 0x00, 0x44, 0x8a, 0x7e, 0xeb, 0x85, 0xd7, 0xe8, 0x44, 0x18, 0xdc, 0xfa, 0x04, 0x6a, 0x1b,
		0x22, 0x6d, 0x24, 0x15, 0xf4, 0xe6, 0x54, 0x7b, 0x03, 0xab, 0xd3, 0xe0, 0x0a, 0x75, 0xad, 0x91,
		0x0c, 0x6f, 0x0e, 0xe3, 0x7e, 0xe7, 0xd2, 0xf5, 0x5d, 0xaf, 0x78, 0x21, 0x55, 0x6b, 0x5c, 0xe1,
		0x18, 0x57, 0x4a, 0xab, 0xf8, 0xe6, 0xc8, 0x74, 0xdf, 0x88, 0xe5, 0x24, 0x25, 0x73, 0x90, 0xf2,
		0x39, 0x47, 0x69, 0x2c, 0xa1, 0x96, 0x53, 0x54, 0x83, 0x0b, 0x2a, 0x39, 0x43, 0xbf, 0x23, 0x6f,
		0xa9, 0x6e, 0x99, 0xd2, 0x70, 0x31, 0xf9, 0x1e, 0xc2, 0x92, 0xb4, 0xc0, 0x5b, 0x09, 0x77, 0x69,
		0x25, 0xf4, 0x33, 0x09, 0x41, 0x2b, 0xa1, 0xaf, 0x01, 0x49, 0xa8, 0xad, 0x84, 0xdd, 0xc5, 0x9d,
		0x57, 0x4a, 0x86, 0xcc, 0xe5, 0xd5, 0x6c, 0xc9, 0x0b, 0x95, 0xe9, 0x40, 0x32, 0x50, 0x11, 0x95,
		0x69, 0x2a, 0xd3, 0x3e, 0x18, 0xde, 0x42, 0x10, 0x4b, 0x5e, 0x84, 0xc5, 0x31, 0xcb, 0xa6, 0x4e,
		0xc6, 0xdb, 0xdc, 0x88, 0x9b, 0x1b, 0x73, 0x53, 0xa3, 0xae, 0x63, 0xdc, 0x95, 0x8c, 0x7c, 0x71,
		0x92, 0x2c, 0x79, 0x11, 0x15, 0xc9, 0x1c, 0x1b, 0x0d, 0xe1, 0xcc, 0xb1, 0x59, 0xdc, 0x2d, 0xe6,
		0xd8, 0x18, 0xa9, 0x1e, 0x4b, 0x5e, 0xfc, 0xd1, 0x41, 0xc6, 0xd9, 0x04, 0x00, 0x3c, 0xd8, 0xd2,
		0x1e, 0xf2, 0x2b, 0x64, 0x1c, 0x3f, 0xe3, 0xf8, 0xc9, 0x85, 0x90, 0x0b, 0x21, 0x17, 0x42, 0x2e,
		0x84, 0x5c, 0xc8, 0xc6, 0xf7, 0xb5, 0xfe, 0xe3, 0xf8, 0x41, 0x95, 0xa0, 0xca, 0x87, 0x8f, 0x91,
		0x7d, 0x07, 0xe0, 0x22, 0x70, 0x11, 0xb8, 0x08, 0x5c, 0x04, 0x2e, 0x62, 0xdf, 0x81, 0xf8, 0x87,
		0x3a, 0x91, 0xae, 0x7c, 0x72, 0xf4, 0xca, 0xa6, 0xab, 0xac, 0x7a, 0xec, 0x3b, 0x40, 0xf9, 0x22,
		0x0a, 0x44, 0x84, 0xf2, 0x5b, 0x1f, 0xca, 0xb3, 0x50, 0x62, 0x0d, 0x79, 0xf6, 0x0c, 0xe1, 0x3b,
		0x54, 0xd1, 0xd2, 0x8c, 0xff, 0x5f, 0xe6, 0xc4, 0x02, 0x86, 0x38, 0xde, 0x7d, 0x75, 0xa2, 0x43,
		0xf4, 0xef, 0x84, 0x2b, 0x92, 0xc3, 0xf4, 0xbf, 0x8f, 0x4e, 0xd4, 0x08, 0x1e, 0xfb, 0x10, 0x3c,
		0xc2, 0xc9, 0xff, 0x40, 0xf0, 0x80, 0xe0, 0xf1, 0xe0, 0x89, 0x41, 0xf0, 0x90, 0x36, 0xce, 0x24,
		0xef, 0x43, 0x36, 0xda, 0x56, 0xc6, 0xdb, 0xdc, 0x88, 0x9b, 0x1b, 0x73, 0x53, 0xa3, 0xae, 0x1b,
		0xb0, 0x43, 0xf0, 0x10, 0xb3, 0xbe, 0x10, 0x3c, 0x04, 0x7e, 0x28, 0x89, 0x7b, 0x72, 0xa7, 0x10,
		0x3c, 0x20, 0x78, 0x90, 0xbf, 0x17, 0xfb, 0x5c, 0xd0, 0x29, 0xf6, 0x68, 0x25, 0x2c, 0x2d, 0x39,
		0x75, 0xb7, 0x5d, 0xe7, 0x7a, 0xae, 0x67, 0x42, 0x42, 0x58, 0xf1, 0x18, 0x04, 0x9b, 0x04, 0x9b,
		0x04, 0x9b, 0x04, 0x9b, 0x04, 0x9b, 0x6a, 0xf7, 0xb5, 0xfe, 0x1d, 0xf4, 0xd0, 0x06, 0xab, 0xf2,
		0xd8, 0xd0, 0x06, 0x25, 0xc0, 0x2b, 0xa0, 0x07, 0xd0, 0x03, 0xe8, 0x01, 0xf4, 0x00, 0x7a, 0x00,
		0x3d, 0x80, 0x9e, 0xe5, 0x33, 0x83, 0xd5, 0x86, 0xdb, 0xc6, 0x6d, 0xe3, 0xb6, 0x71, 0xdb, 0xb8,
		0x6d, 0x58, 0x6d, 0xe2, 0x1f, 0x8a, 0xe3, 0xba, 0xf2, 0x29, 0x4c, 0x2a, 0x9b, 0xae, 0xb2, 0xea,
		0xc1, 0x6a, 0x43, 0xf9, 0x22, 0xaa, 0xe2, 0xfe, 0x47, 0x9a, 0x90, 0xae, 0xd6, 0x90, 0xe7, 0x3d,
		0xe9, 0x4a, 0x70, 0x01, 0xb9, 0xbc, 0xc6, 0xb0, 0xdf, 0x3e, 0x44, 0x9d, 0x6b, 0x88, 0x32, 0xe5,
		0x36, 0xd8, 0x13, 0x7a, 0x78, 0x32, 0x7b, 0xea, 0xf9, 0xba, 0xd0, 0xf6, 0x2c, 0x19, 0x72, 0x32,
		0x7d, 0xe6, 0x50, 0x56, 0xf4, 0xff, 0x2c, 0xbb, 0x85, 0x2f, 0xce, 0x5c, 0xd7, 0x25, 0x37, 0x82,
		0x3d, 0x4a, 0xab, 0x7b, 0x92, 0x0a, 0xb1, 0xec, 0xe5, 0xb3, 0xca, 0xdb, 0xb1, 0x97, 0x2f, 0xbc,
		0xbc, 0x1b, 0x7b, 0xf9, 0xee, 0x3d, 0x19, 0xf6, 0xf2, 0x79, 0x68, 0x28, 0xd5, 0x0c, 0xa6, 0xa6,
		0xe1, 0xd4, 0x37, 0xa0, 0xda, 0x86, 0xd4, 0xcc, 0xa0, 0x9a, 0x19, 0x56, 0x13, 0x03, 0x5b, 0x8f,
		0x10, 0x1c, 0xda, 0xb6, 0xb4, 0x71, 0xa6, 0x3a, 0x1d, 0xb2, 0xd1, 0xb6, 0x32, 0xde, 0xe6, 0x46,
		0xdc, 0xdc, 0x98, 0x9b, 0x1a, 0x75, 0x1d, 0xe3, 0xae, 0x64, 0xe4, 0x8b, 0x93, 0x84, 0xb6, 0x2d,
		0x2a, 0x92, 0xca, 0xb4, 0x86, 0x70, 0x2a, 0xd3, 0x8b, 0xbb, 0x45, 0x65, 0xda, 0x48, 0xf5, 0xa0,
		0x6d, 0xfb, 0xa3, 0x83, 0x14, 0xa8, 0x03, 0x00, 0x1e, 0x8c, 0x5d, 0x0d, 0xf9, 0x15, 0x42, 0xb0,
		0x83, 0x60, 0x47, 0x2e, 0x84, 0x5c, 0x08, 0xb9, 0x10, 0x72, 0x21, 0xe4, 0x42, 0x36, 0xbe, 0xaf,
		0xec, 0xe5, 0x03, 0x55, 0x82, 0x2a, 0x61, 0x30, 0x82, 0x8b, 0xc0, 0x45, 0xe0, 0x22, 0x70, 0x11,
		0xb8, 0x08, 0x06, 0xa3, 0xc2, 0x87, 0x3a, 0x91, 0xae, 0x7c, 0x72, 0xf4, 0xca, 0xa6, 0xab, 0xac,
		0x7a, 0x30, 0x18, 0x51, 0xbe, 0x88, 0x02, 0x11, 0xa1, 0xfc, 0xd6, 0x87, 0xf2, 0x50, 0x44, 0xd7,
		0x90, 0xe7, 0x3b, 0x5d, 0xaf, 0xe0, 0x5e, 0xb1, 0xa0, 0xef, 0xfe, 0x77, 0xc8, 0x82, 0xbe, 0x8d,
		0x13, 0x44, 0x2c, 0xe8, 0x0b, 0x28, 0x11, 0x04, 0xd3, 0x03, 0xa6, 0xc7, 0x83, 0x27, 0x06, 0xd3,
		0x43, 0xda, 0x38, 0x93, 0xc5, 0x0f, 0xd9, 0x68, 0x5b, 0x19, 0x6f, 0x73, 0x23, 0x6e, 0x6e, 0xcc,
		0x4d, 0x8d, 0xba, 0x6e, 0xe4, 0x0e, 0xd3, 0x43, 0xcc, 0xfa, 0xc2, 0xf4, 0x10, 0xf8, 0xa1, 0x64,
		0xf0, 0x49, 0xa2, 0xc2, 0xf4, 0x80, 0xe9, 0x41, 0x22, 0x5f, 0xec, 0xc3, 0x82, 0xbe, 0xc7, 0x2b,
		0x21, 0x0b, 0xfa, 0x08, 0x36, 0x09, 0x36, 0x09, 0x36, 0x09, 0x36, 0x09, 0x36, 0xd9, 0x55, 0x13,
		0x92, 0xdb, 0x86, 0x3f, 0x08, 0x7f, 0x10, 0xd0, 0x03, 0xe8, 0x01, 0xf4, 0x00, 0x7a, 0x00, 0x3d,
		0x80, 0x9e, 0xfa, 0x83, 0x1e, 0xe8, 0x6d, 0xb8, 0x6d, 0xdc, 0x36, 0x6e, 0x1b, 0xb7, 0x8d, 0xdb,
		0x86, 0xde, 0x26, 0xfe, 0xa1, 0x38, 0xae, 0x2b, 0x9f, 0xc2, 0xa4, 0xb2, 0xe9, 0x2a, 0xab, 0x1e,
		0xf4, 0x36, 0x94, 0x2f, 0xa2, 0x2a, 0xee, 0x7f, 0xa4, 0x09, 0xfb, 0x6a, 0x0d, 0x79, 0xe1, 0xb0,
		0xaf, 0xd8, 0xd4, 0xa7, 0xa5, 0x8c, 0x6c, 0xea, 0x53, 0x5a, 0xbb, 0x16, 0x49, 0xae, 0xec, 0x7b,
		0xb7, 0x78, 0xf6, 0x50, 0x56, 0xf7, 0x3d, 0xf1, 0xf8, 0x6a, 0x34, 0xdc, 0x6d, 0x9e, 0x75, 0xe2,
		0xf1, 0xe4, 0xb5, 0x5c, 0xf6, 0x65, 0xe2, 0xd9, 0xc6, 0x97, 0x6b, 0x97, 0x8a, 0x45, 0x71, 0x0a,
		0x8b, 0xf1, 0x76, 0x76, 0x8a, 0xbb, 0x15, 0x4f, 0xf4, 0x39, 0xfa, 0x2d, 0x7a, 0x3a, 0xcb, 0x9d,
		0xc4, 0xf9, 0xd7, 0xa1, 0x1b, 0xbd, 0x6c, 0xb6, 0xce, 0x0f, 0xdb, 0x27, 0x47, 0xaf, 0x8e, 0x4f,
		0x8e, 0xdf, 0xb4, 0x3f, 0x9c, 0x36, 0x5f, 0x1f, 0x9d, 0xbd, 0x7f, 0x5a, 0xb3, 0x45, 0x7a, 0xd3,
		0x97, 0x58, 0xe7, 0x35, 0x7a, 0x3f, 0xf8, 0x96, 0x83, 0xe4, 0x35, 0xbf, 0x71, 0xa3, 0x6e, 0x96,
		0x0c, 0x55, 0xe0, 0x58, 0x71, 0x8d, 0x9a, 0x69, 0xb7, 0x3f, 0xee, 0xb9, 0x28, 0xbf, 0x4e, 0x46,
		0x51, 0x77, 0x90, 0xe6, 0x9d, 0x24, 0x75, 0x59, 0x74, 0x35, 0xc8, 0xa2, 0x66, 0xeb, 0xe6, 0x30,
		0x9a, 0x9b, 0xfc, 0x68, 0x6e, 0xf3, 0xa3, 0xd1, 0xd0, 0x75, 0x93, 0xab, 0xa4, 0xfb, 0x71, 0xee,
		0x3c, 0xc7, 0xd9, 0xcc, 0x75, 0x0b, 0xeb, 0x84, 0x62, 0x6e, 0x7a, 0xf9, 0x7e, 0xf5, 0x96, 0x5e,
		0x89, 0x42, 0x4d, 0xc9, 0x22, 0x11, 0x5d, 0xba, 0x6e, 0x55, 0x69, 0x03, 0xc0, 0x59, 0xf4, 0x5b,
		0x2f, 0xbc, 0x46, 0x2f, 0xc2, 0x80, 0xde, 0x47, 0x20, 0x2f, 0x60, 0x1c, 0x2a, 0x85, 0xea, 0xd5,
		0x5e, 0xc8, 0xea, 0x14, 0xba, 0x42, 0xd5, 0x6b, 0x4c, 0xdf, 0xcb, 0xe2, 0x7d, 0x54, 0xad, 0x78,
		0x85, 0xbf, 0x2c, 0x49, 0xa9, 0xf8, 0xe2, 0xc8, 0x0c, 0x01, 0x11, 0x2b, 0x9b, 0x4b, 0x96, 0xc7,
		0xe5, 0xcb, 0xe0, 0xd2, 0x90, 0x42, 0xad, 0xac, 0xad, 0x86, 0x1a, 0x54, 0xca, 0xd4, 0x7e, 0x07,
		0xe6, 0x52, 0x43, 0x36, 0xa4, 0xf7, 0x57, 0xeb, 0xec, 0xad, 0x66, 0xb1, 0xbf, 0x0f, 0x86, 0xcd,
		0x32, 0x1f, 0xc1, 0x62, 0x7f, 0x5f, 0x63, 0x90, 0x50, 0x17, 0xfb, 0x8f, 0x5c, 0xda, 0x8b, 0x7b,
		0x33, 0x9a, 0x45, 0x9c, 0x0d, 0xc6, 0xaa, 0x93, 0xdf, 0xee, 0xca, 0x96, 0x1e, 0xe2, 0xa4, 0xc8,
		0x27, 0xd1, 0xe0, 0x91, 0x5c, 0xe8, 0x8c, 0xcd, 0xdb, 0xd5, 0x1a, 0x9b, 0xb7, 0xcb, 0xd8, 0xbc,
		0x30, 0x92, 0x78, 0x11, 0x63, 0xf3, 0x18, 0x9b, 0xf7, 0x98, 0x13, 0x53, 0x6b, 0x18, 0x35, 0xe0,
		0x77, 0x28, 0xf1, 0x3a, 0xea, 0xd6, 0xa5, 0x62, 0x36, 0x34, 0x9a, 0x8e, 0x10, 0xd5, 0x17, 0xee,
		0x45, 0x22, 0x79, 0xd1, 0x09, 0x22, 0x39, 0xee, 0x59, 0xa0, 0x7d, 0x42, 0x20, 0x1f, 0xb7, 0xdc,
		0x0b, 0x23, 0x9f, 0x08, 0x29, 0x49, 0x23, 0x1d, 0x42, 0x3a, 0x84, 0x74, 0x08, 0xe9, 0x10, 0xff,
		0xd3, 0x21, 0xc2, 0x79, 0xe2, 0x3b, 0xd7, 0x52, 0x34, 0x5f, 0xac, 0x64, 0x28, 0x09, 0xe3, 0x09,
		0xe3, 0x09, 0xe3, 0xeb, 0x1d, 0xc6, 0x33, 0xfd, 0x5e, 0xda, 0x38, 0x43, 0xf2, 0x0f, 0xd9, 0x68,
		0x5b, 0x19, 0x6f, 0x73, 0x23, 0x6e, 0x6e, 0xcc, 0x4d, 0x8d, 0xba, 0x8e, 0x71, 0x57, 0x32, 0xf2,
		0xc5, 0x49, 0x32, 0xfd, 0x5e, 0x54, 0x24, 0x04, 0x7f, 0x0d, 0xe1, 0x10, 0xfc, 0x17, 0x77, 0x0b,
		0x82, 0xbf, 0x91, 0xea, 0x31, 0xfd, 0xde, 0x1f, 0x1d, 0x84, 0xe7, 0x1f, 0x00, 0xf0, 0x60, 0x8d,
		0x6d, 0xc8, 0xaf, 0x90, 0x39, 0xc5, 0xcc, 0x29, 0x26, 0x17, 0x42, 0x2e, 0x84, 0x5c, 0x08, 0xb9,
		0x10, 0x72, 0x21, 0x1b, 0xdf, 0xd7, 0xfa, 0xcf, 0x29, 0x06, 0x55, 0x82, 0x2a, 0x1f, 0x3e, 0x46,
		0x06, 0x41, 0x83, 0x8b, 0xc0, 0x45, 0xe0, 0x22, 0x70, 0x11, 0xb8, 0x88, 0x41, 0xd0, 0xe2, 0x1f,
		0xea, 0x44, 0xba, 0xf2, 0xc9, 0xd1, 0x2b, 0x9b, 0xae, 0xb2, 0xea, 0x31, 0x08, 0x1a, 0xe5, 0x8b,
		0x28, 0x10, 0x11, 0xca, 0x6f, 0x7d, 0x28, 0x0f, 0x87, 0x71, 0x0d, 0x79, 0x3e, 0x51, 0xdb, 0x96,
		0xa9, 0x56, 0xa2, 0x3c, 0x37, 0x79, 0x55, 0xf9, 0x4b, 0x74, 0x34, 0x73, 0x47, 0x75, 0xb8, 0xc5,
		0x54, 0x5c, 0xcd, 0x88, 0x1d, 0xfb, 0x10, 0x3b, 0xc2, 0xc9, 0xfb, 0x40, 0xec, 0x80, 0xd8, 0xf1,
		0xe0, 0x89, 0x41, 0xec, 0x90, 0x36, 0xce, 0x24, 0xed, 0x43, 0x36, 0xda, 0x56, 0xc6, 0xdb, 0xdc,
		0x88, 0x9b, 0x1b, 0x73, 0x53, 0xa3, 0xae, 0x1b, 0xa8, 0x43, 0xec, 0x10, 0xb3, 0xbe, 0x10, 0x3b,
		0x04, 0x7e, 0x28, 0x09, 0x7b, 0x72, 0xa6, 0x10, 0x3b, 0x20, 0x76, 0x90, 0xb7, 0x17, 0xfb, 0x5c,
		0xd0, 0x21, 0xf6, 0x68, 0x25, 0x2c, 0x6d, 0x79, 0x73, 0xb7, 0x5d, 0xe7, 0x7a, 0xae, 0x67, 0x42,
		0x3e, 0x58, 0xf1, 0x18, 0x04, 0x9b, 0x04, 0x9b, 0x04, 0x9b, 0x04, 0x9b, 0x04, 0x9b, 0x6a, 0xf7,
		0xb5, 0xfe, 0x9d, 0xf3, 0xd0, 0x05, 0xab, 0xf2, 0xd8, 0xd0, 0x05, 0x25, 0xc0, 0x2b, 0xa0, 0x07,
		0xd0, 0x03, 0xe8, 0x01, 0xf4, 0x00, 0x7a, 0x00, 0x3d, 0x80, 0x9e, 0xe5, 0x33, 0x83, 0xcd, 0x86,
		0xdb, 0xc6, 0x6d, 0xe3, 0xb6, 0x71, 0xdb, 0xb8, 0x6d, 0xd8, 0x6c, 0xe2, 0x1f, 0x8a, 0xe3, 0xba,
		0xf2, 0x29, 0x4c, 0x2a, 0x9b, 0xae, 0xb2, 0xea, 0xc1, 0x66, 0x43, 0xf9, 0x22, 0xaa, 0xe2, 0xfe,
		0x47, 0x9a, 0x90, 0xad, 0xd6, 0x90, 0xe7, 0x2d, 0xd9, 0x6a, 0xc6, 0xf1, 0x61, 0x67, 0x9d, 0xbc,
		0xee, 0x6d, 0xe5, 0xce, 0x3a, 0x85, 0x1d, 0x6a, 0xb3, 0xdf, 0x9c, 0x67, 0xe3, 0x6e, 0x9e, 0xce,
		0x23, 0x92, 0xd3, 0xd9, 0x8f, 0x68, 0xce, 0x7f, 0x43, 0xbb, 0x35, 0x7f, 0xf2, 0xf6, 0xab, 0x4f,
		0xc3, 0xf6, 0x1f, 0xd3, 0x27, 0x6f, 0x1f, 0x5d, 0x25, 0x67, 0x9d, 0xab, 0xa4, 0xdd, 0x1c, 0xde,
		0x1c, 0x7e, 0x98, 0x3d, 0x6d, 0x7b, 0x96, 0xf5, 0x38, 0x99, 0x3e, 0x2c, 0x6b, 0xf6, 0x66, 0x5d,
		0x40, 0x99, 0xeb, 0xba, 0xe4, 0x46, 0xb0, 0x19, 0x69, 0x75, 0xf3, 0x51, 0x21, 0x96, 0xc5, 0x7b,
		0x56, 0x09, 0x3a, 0x16, 0xef, 0x85, 0x97, 0x60, 0x63, 0xf1, 0xde, 0xbd, 0x27, 0xc3, 0xe2, 0x3d,
		0x0f, 0x0d, 0xa5, 0x9a, 0xc1, 0xd4, 0x34, 0x9c, 0xfa, 0x06, 0x54, 0xdb, 0x90, 0x9a, 0x19, 0x54,
		0x33, 0xc3, 0x6a, 0x62, 0x60, 0xeb, 0x11, 0x6b, 0xc3, 0xcf, 0x96, 0x36, 0xce, 0x94, 0xa1, 0x43,
		0x36, 0xda, 0x56, 0xc6, 0xdb, 0xdc, 0x88, 0x9b, 0x1b, 0x73, 0x53, 0xa3, 0xae, 0x63, 0xdc, 0x95,
		0x8c, 0x7c, 0x71, 0x92, 0xf0, 0xb3, 0x45, 0x45, 0x52, 0x82, 0xd6, 0x10, 0x4e, 0x09, 0x7a, 0x71,
		0xb7, 0x28, 0x41, 0x1b, 0xa9, 0x1e, 0xfc, 0x6c, 0x7f, 0x74, 0x90, 0x4a, 0x74, 0x00, 0xc0, 0x83,
		0xb9, 0xaa, 0x21, 0xbf, 0x42, 0x98, 0x74, 0x30, 0xe9, 0xc8, 0x85, 0x90, 0x0b, 0x21, 0x17, 0x42,
		0x2e, 0x84, 0x5c, 0xc8, 0xc6, 0xf7, 0x95, 0xc5, 0x7b, 0xa0, 0x4a, 0x50, 0x25, 0x54, 0x45, 0x70,
		0x11, 0xb8, 0x08, 0x5c, 0x04, 0x2e, 0x02, 0x17, 0x41, 0x55, 0x54, 0xf8, 0x50, 0x27, 0xd2, 0x95,
		0x4f, 0x8e, 0x5e, 0xd9, 0x74, 0x95, 0x55, 0x0f, 0xaa, 0x22, 0xca, 0x17, 0x51, 0x20, 0x22, 0x94,
		0xdf, 0xfa, 0x50, 0x1e, 0x2e, 0xe8, 0x1a, 0xf2, 0x7c, 0xe5, 0xe7, 0x15, 0x9c, 0x2b, 0x36, 0xf0,
		0xdd, 0xff, 0xee, 0xd8, 0xc0, 0xb7, 0x71, 0x62, 0x88, 0x0d, 0x7c, 0x01, 0x25, 0x80, 0x60, 0x78,
		0xc0, 0xf0, 0x78, 0xf0, 0xc4, 0x60, 0x78, 0x48, 0x1b, 0x67, 0xb2, 0xf7, 0x21, 0x1b, 0x6d, 0x2b,
		0xe3, 0x6d, 0x6e, 0xc4, 0xcd, 0x8d, 0xb9, 0xa9, 0x51, 0xd7, 0x8d, 0xd8, 0x61, 0x78, 0x88, 0x59,
		0x5f, 0x18, 0x1e, 0x02, 0x3f, 0x94, 0xcc, 0x3d, 0xc9, 0x53, 0x18, 0x1e, 0x30, 0x3c, 0x48, 0xe0,
		0x8b, 0x7d, 0xd8, 0xc0, 0xf7, 0x78, 0x25, 0x64, 0x03, 0x1f, 0xc1, 0x26, 0xc1, 0x26, 0xc1, 0x26,
		0xc1, 0x26, 0xc1, 0x26, 0xcb, 0x68, 0x42, 0x72, 0xdb, 0xf0, 0x06, 0xe1, 0x0d, 0x02, 0x7a, 0x00,
		0x3d, 0x80, 0x1e, 0x40, 0x0f, 0xa0, 0x07, 0xd0, 0x53, 0x7f, 0xd0, 0x03, 0xad, 0x0d, 0xb7, 0x8d,
		0xdb, 0xc6, 0x6d, 0xe3, 0xb6, 0x71, 0xdb, 0xd0, 0xda, 0xc4, 0x3f, 0x14, 0xc7, 0x75, 0xe5, 0x53,
		0x98, 0x54, 0x36, 0x5d, 0x65, 0xd5, 0x83, 0xd6, 0x86, 0xf2, 0x45, 0x54, 0xc5, 0xfd, 0x8f, 0x34,
		0x61, 0x5d, 0xad, 0x21, 0xcf, 0x7f, 0xd6, 0x15, 0xab, 0xf8, 0xb4, 0x94, 0x70, 0xeb, 0x57, 0xf1,
		0x49, 0xaf, 0x57, 0x8b, 0x44, 0x76, 0xf2, 0xbd, 0x5b, 0x3c, 0xf4, 0x16, 0xef, 0xe6, 0x93, 0x25,
		0x20, 0xaa, 0x10, 0x0f, 0xd5, 0x76, 0xef, 0xed, 0xb3, 0x7b, 0xcf, 0x9f, 0xd4, 0x1b, 0xbb, 0xf7,
		0xb6, 0xd8, 0xdf, 0x8a, 0xef, 0xde, 0x1b, 0xb9, 0xb4, 0x17, 0xf7, 0x66, 0x1d, 0x11, 0x71, 0x36,
		0x18, 0xab, 0x92, 0xb4, 0xef, 0xca, 0x96, 0xe6, 0x5b, 0x2a, 0xb6, 0x7e, 0x68, 0xb4, 0x7c, 0x5c,
		0xe8, 0x30, 0xdc, 0x77, 0xd9, 0x61, 0xe8, 0xb1, 0x23, 0xd2, 0x76, 0x48, 0x66, 0x8e, 0xc9, 0xcc,
		0x41, 0x99, 0x38, 0xaa, 0x7a, 0x64, 0x2b, 0xd4, 0x6a, 0x3b, 0x06, 0xad, 0x18, 0x4a, 0x2d, 0x18,
		0xe4, 0x1e, 0xb6, 0x37, 0xf7, 0x20, 0x98, 0xda, 0x12, 0x08, 0xdb, 0x9f, 0x78, 0xac, 0x46, 0x0d,
		0x77, 0x9b, 0x67, 0x9d, 0x78, 0x3c, 0x79, 0x2f, 0x97, 0x7d, 0x19, 0x9b, 0xd4, 0xf8, 0x72, 0xed,
		0x52, 0x31, 0x70, 0xa9, 0x10, 0x34, 0xef, 0xec, 0x14, 0x7a, 0x18, 0xa7, 0x9d, 0xcf, 0x2e, 0xfa,
		0x2d, 0x7a, 0x3a, 0xf3, 0x73, 0x71, 0xfe, 0x75, 0xe8, 0x46, 0x2f, 0x9b, 0xad, 0xf3, 0xc3, 0xf6,
		0x87, 0xd3, 0xe6, 0xeb, 0xa3, 0xb3, 0xf7, 0x4f, 0x6b, 0x16, 0x5c, 0x4f, 0x5f, 0x5e, 0x9d, 0x43,
		0xeb, 0x35, 0xdf, 0x6e, 0x90, 0x73, 0xc6, 0xde, 0xb8, 0x51, 0x37, 0x4b, 0x86, 0x2a, 0xe5, 0x91,
		0xe2, 0xda, 0x34, 0xd3, 0x6e, 0x7f, 0xdc, 0x73, 0x51, 0x7e, 0x9d, 0x8c, 0xa2, 0xee, 0x20, 0xcd,
		0x3b, 0x49, 0xea, 0xb2, 0xe8, 0x6a, 0x90, 0x45, 0xcd, 0xd6, 0xcd, 0x61, 0x34, 0x4f, 0xc9, 0x46,
		0xa3, 0xa1, 0xeb, 0x26, 0x57, 0x49, 0xf7, 0xe3, 0xdc, 0xa1, 0x8c, 0xb3, 0x99, 0x3b, 0x13, 0xd6,
		0x01, 0xc5, 0xb8, 0x60, 0xf9, 0x3e, 0xf5, 0x96, 0x5e, 0x85, 0x02, 0x18, 0xb3, 0x08, 0x0a, 0x4a,
		0xd7, 0x6b, 0x53, 0x2d, 0x00, 0x44, 0x8a, 0x7e, 0xeb, 0x85, 0xd7, 0xe8, 0x44, 0x18, 0xdc, 0xfa,
		0x04, 0x6a, 0x1b, 0x22, 0xd5, 0x9d, 0x0a, 0x4a, 0x66, 0xd5, 0xde, 0xc0, 0xea, 0x34, 0xb8, 0x42,
		0x5d, 0x6b, 0xf4, 0xf7, 0x6f, 0x86, 0x69, 0xec, 0x6e, 0x86, 0xd5, 0xeb, 0x59, 0xe1, 0x0e, 0x97,
		0x64, 0x54, 0x7c, 0x4b, 0x64, 0x0a, 0x60, 0x62, 0xf9, 0x47, 0xc9, 0x7c, 0xa3, 0x7c, 0x7e, 0x51,
		0x1a, 0x37, 0xa8, 0xe5, 0x0f, 0xd5, 0xa0, 0x81, 0x4a, 0x7e, 0xd0, 0xef, 0x28, 0x5b, 0xaa, 0x60,
		0x55, 0x9a, 0xef, 0x21, 0x5f, 0xc6, 0x2f, 0x49, 0x0b, 0xbc, 0x9a, 0xbf, 0x4b, 0x35, 0xdf, 0xcf,
		0x84, 0x03, 0xd5, 0x7c, 0x5f, 0x83, 0x8f, 0x50, 0xab, 0xf9, 0xdd, 0xc5, 0x9d, 0x57, 0x4a, 0x7c,
		0xcc, 0xe5, 0xd5, 0x6c, 0xce, 0x3a, 0x55, 0xe8, 0x40, 0xb2, 0x4d, 0x11, 0x55, 0x68, 0xaa, 0xd0,
		0x3e, 0x18, 0xde, 0x42, 0x10, 0x73, 0xd6, 0x85, 0xc5, 0x41, 0x27, 0xaf, 0x93, 0xf1, 0x36, 0x37,
		0xe2, 0xe6, 0xc6, 0xdc, 0xd4, 0xa8, 0xeb, 0x18, 0x77, 0x25, 0x23, 0x5f, 0x9c, 0x24, 0x73, 0xd6,
		0x45, 0x45, 0x42, 0x25, 0xd7, 0x10, 0x0e, 0x95, 0x7c, 0x71, 0xb7, 0xa0, 0x92, 0x1b, 0xa9, 0x1e,
		0x73, 0xd6, 0xfd, 0xd1, 0x41, 0x18, 0xe5, 0x01, 0x00, 0x0f, 0x16, 0xa5, 0x86, 0xfc, 0x0a, 0x99,
		0x88, 0xcb, 0x44, 0x5c, 0x72, 0x21, 0xe4, 0x42, 0xc8, 0x85, 0x90, 0x0b, 0x21, 0x17, 0xb2, 0xf1,
		0x7d, 0xad, 0xff, 0x44, 0x5c, 0x50, 0x25, 0xa8, 0xf2, 0xe1, 0x63, 0x64, 0xe4, 0x30, 0xb8, 0x08,
		0x5c, 0x04, 0x2e, 0x02, 0x17, 0x81, 0x8b, 0x18, 0x39, 0x2c, 0xfe, 0xa1, 0x4e, 0xa4, 0x2b, 0x9f,
		0x1c, 0xbd, 0xb2, 0xe9, 0x2a, 0xab, 0x1e, 0x23, 0x87, 0x51, 0xbe, 0x88, 0x02, 0x11, 0xa1, 0xfc,
		0xd6, 0x87, 0xf2, 0xcc, 0x74, 0x5e, 0x43, 0x9e, 0x31, 0x1b, 0xf8, 0x1b, 0x41, 0xb4, 0x34, 0x5c,
		0xf7, 0x97, 0x39, 0x9d, 0x20, 0x54, 0x22, 0xbc, 0xe8, 0x48, 0xe0, 0x8e, 0xea, 0x64, 0x46, 0xc1,
		0x29, 0xb6, 0xdf, 0xc7, 0x24, 0x6a, 0xb4, 0x8e, 0x7d, 0x68, 0x1d, 0xe1, 0x64, 0x7d, 0xa0, 0x75,
		0x40, 0xeb, 0x78, 0xf0, 0xc4, 0xa0, 0x75, 0x48, 0x1b, 0x67, 0x52, 0xf6, 0x21, 0x1b, 0x6d, 0x2b,
		0xe3, 0x6d, 0x6e, 0xc4, 0xcd, 0x8d, 0xb9, 0xa9, 0x51, 0xd7, 0x0d, 0xd3, 0xa1, 0x75, 0x88, 0x59,
		0x5f, 0x68, 0x1d, 0x02, 0x3f, 0x94, 0x74, 0x3d, 0x19, 0x53, 0x68, 0x1d, 0xd0, 0x3a, 0xc8, 0xda,
		0x8b, 0x7d, 0x2e, 0xe8, 0x0f, 0x7b, 0xb4, 0x12, 0x96, 0xb6, 0x8b, 0xb9, 0xdb, 0xae, 0x73, 0x3d,
		0xd7, 0x33, 0xa1, 0x1e, 0xac, 0x78, 0x0c, 0x82, 0x4d, 0x82, 0x4d, 0x82, 0x4d, 0x82, 0x4d, 0x82,
		0x4d, 0xb5, 0xfb, 0x5a, 0xff, 0xbe, 0x79, 0xc8, 0x82, 0x55, 0x79, 0x6c, 0xc8, 0x82, 0x12, 0xe0,
		0x15, 0xd0, 0x03, 0xe8, 0x01, 0xf4, 0x00, 0x7a, 0x00, 0x3d, 0x80, 0x1e, 0x40, 0xcf, 0xf2, 0x99,
		0xc1, 0x65, 0xc3, 0x6d, 0xe3, 0xb6, 0x71, 0xdb, 0xb8, 0x6d, 0xdc, 0x36, 0x5c, 0x36, 0xf1, 0x0f,
		0xc5, 0x71, 0x5d, 0xf9, 0x14, 0x26, 0x95, 0x4d, 0x57, 0x59, 0xf5, 0xe0, 0xb2, 0xa1, 0x7c, 0x11,
		0x55, 0x71, 0xff, 0x23, 0x4d, 0xa8, 0x56, 0x6b, 0xc8, 0xf3, 0x94, 0x6a, 0x25, 0xb8, 0x58, 0x5c,
		0x5e, 0x4f, 0xd8, 0x5b, 0x1f, 0x8e, 0xa6, 0x35, 0x44, 0x59, 0x71, 0x3f, 0xba, 0xf5, 0xf3, 0x64,
		0xff, 0x7c, 0x98, 0x1e, 0xdf, 0x0c, 0xd3, 0xf6, 0x2c, 0xdf, 0x71, 0x32, 0x7d, 0xd4, 0x50, 0xf6,
		0xec, 0xff, 0x2c, 0xbb, 0x5e, 0x2f, 0xce, 0x5c, 0xd7, 0x25, 0x37, 0x82, 0x6d, 0x48, 0xab, 0xdb,
		0x8e, 0x0a, 0xb1, 0x2c, 0xdc, 0xb3, 0x4a, 0xcd, 0xb1, 0x70, 0x2f, 0xbc, 0xd4, 0x1a, 0x0b, 0xf7,
		0xee, 0x3d, 0x19, 0x16, 0xee, 0x79, 0x68, 0x28, 0xd5, 0x0c, 0xa6, 0xa6, 0xe1, 0xd4, 0x37, 0xa0,
		0xda, 0x86, 0xd4, 0xcc, 0xa0, 0x9a, 0x19, 0x56, 0x13, 0x03, 0x5b, 0x8f, 0x28, 0x1b, 0x66, 0xb6,
		0xb4, 0x71, 0xa6, 0x00, 0x1d, 0xb2, 0xd1, 0xb6, 0x32, 0xde, 0xe6, 0x46, 0xdc, 0xdc, 0x98, 0x9b,
		0x1a, 0x75, 0x1d, 0xe3, 0xae, 0x64, 0xe4, 0x8b, 0x93, 0x84, 0x99, 0x2d, 0x2a, 0x92, 0xe2, 0xb3,
		0x86, 0x70, 0x8a, 0xcf, 0x8b, 0xbb, 0x45, 0xf1, 0xd9, 0x48, 0xf5, 0x60, 0x66, 0xfb, 0xa3, 0x83,
		0xd4, 0xa0, 0x03, 0x00, 0x1e, 0xcc, 0x53, 0x0d, 0xf9, 0x15, 0xc2, 0xa1, 0x83, 0x43, 0x47, 0x2e,
		0x84, 0x5c, 0x08, 0xb9, 0x10, 0x72, 0x21, 0xe4, 0x42, 0x36, 0xbe, 0xaf, 0x2c, 0xdc, 0x03, 0x55,
		0x82, 0x2a, 0x21, 0x29, 0x82, 0x8b, 0xc0, 0x45, 0xe0, 0x22, 0x70, 0x11, 0xb8, 0x08, 0x92, 0xa2,
		0xc2, 0x87, 0x3a, 0x91, 0xae, 0x7c, 0x72, 0xf4, 0xca, 0xa6, 0xab, 0xac, 0x7a, 0x90, 0x14, 0x51,
		0xbe, 0x88, 0x02, 0x11, 0xa1, 0xfc, 0xd6, 0x87, 0xf2, 0xb0, 0x40, 0xd7, 0x90, 0xe7, 0x27, 0x37,
		0xaf, 0x60, 0x5c, 0xb1, 0x79, 0xef, 0xfe, 0x37, 0xc7, 0xe6, 0xbd, 0x8d, 0xd3, 0x42, 0x6c, 0xde,
		0x0b, 0x28, 0xfd, 0x03, 0xbf, 0x03, 0x7e, 0xc7, 0x83, 0x27, 0x06, 0xbf, 0x43, 0xda, 0x38, 0x93,
		0xbb, 0x0f, 0xd9, 0x68, 0x5b, 0x19, 0x6f, 0x73, 0x23, 0x6e, 0x6e, 0xcc, 0x4d, 0x8d, 0xba, 0x6e,
		0xbc, 0x0e, 0xbf, 0x43, 0xcc, 0xfa, 0xc2, 0xef, 0x10, 0xf8, 0xa1, 0xe4, 0xed, 0x49, 0x9d, 0xc2,
		0xef, 0x80, 0xdf, 0x41, 0xfa, 0x5e, 0xec, 0xc3, 0xe6, 0xbd, 0xc7, 0x2b, 0x21, 0x9b, 0xf7, 0x08,
		0x36, 0x09, 0x36, 0x09, 0x36, 0x09, 0x36, 0x09, 0x36, 0x59, 0x42, 0x13, 0x92, 0xdb, 0x86, 0x35,
		0x08, 0x6b, 0x10, 0xd0, 0x03, 0xe8, 0x01, 0xf4, 0x00, 0x7a, 0x00, 0x3d, 0x80, 0x9e, 0xfa, 0x83,
		0x1e, 0x48, 0x6d, 0xb8, 0x6d, 0xdc, 0x36, 0x6e, 0x1b, 0xb7, 0x8d, 0xdb, 0x86, 0xd4, 0x26, 0xfe,
		0xa1, 0x38, 0xae, 0x2b, 0x9f, 0xc2, 0xa4, 0xb2, 0xe9, 0x2a, 0xab, 0x1e, 0xa4, 0x36, 0x94, 0x2f,
		0xa2, 0x2a, 0xee, 0x7f, 0xa4, 0x09, 0xe7, 0x6a, 0x0d, 0x79, 0xbe, 0x73, 0xae, 0x58, 0xc1, 0xa7,
		0xa5, 0x82, 0x5b, 0xbe, 0x82, 0x4f, 0x7a, 0xb1, 0x5a, 0x24, 0xb0, 0x8b, 0xef, 0xdd, 0xe2, 0x91,
		0x43, 0xd9, 0xc9, 0xf7, 0xc4, 0xe3, 0x7b, 0xd0, 0x70, 0xb7, 0x79, 0xd6, 0x89, 0xc7, 0x93, 0xb7,
		0x71, 0xd9, 0x97, 0x09, 0x59, 0x1b, 0x5f, 0xae, 0x5d, 0x2a, 0x16, 0xa8, 0x29, 0x6c, 0xbc, 0xdb,
		0xd9, 0x29, 0x2e, 0x52, 0x3c, 0x51, 0xe3, 0xe8, 0xb7, 0xe8, 0xe9, 0x2c, 0x3d, 0x12, 0xe7, 0x5f,
		0x87, 0x6e, 0xf4, 0xf2, 0x64, 0xff, 0xbc, 0x75, 0xda, 0x3e, 0x3e, 0x6f, 0x9d, 0x3e, 0xad, 0xd9,
		0x5e, 0xbc, 0xe9, 0xab, 0xab, 0xf3, 0x56, 0xbc, 0xb5, 0xde, 0x6d, 0x90, 0x34, 0xe5, 0x37, 0x6e,
		0xd4, 0xcd, 0x92, 0xa1, 0x0a, 0xba, 0x2a, 0xae, 0x4c, 0x33, 0xed, 0xf6, 0xc7, 0x3d, 0x17, 0xe5,
		0xd7, 0xc9, 0x28, 0xea, 0x0e, 0xd2, 0xbc, 0x93, 0xa4, 0x2e, 0x8b, 0xae, 0x06, 0x59, 0xf4, 0xea,
		0x8f, 0x56, 0x34, 0x39, 0xce, 0x68, 0x34, 0x74, 0xdd, 0xe4, 0x2a, 0xe9, 0x7e, 0x9c, 0x7b, 0xc2,
		0x71, 0x36, 0xf3, 0xc3, 0xc2, 0x6f, 0x5f, 0x31, 0xbd, 0xbc, 0x7c, 0x93, 0x7a, 0x4b, 0xaf, 0x41,
		0xa1, 0x2c, 0x64, 0x91, 0x4b, 0x2e, 0x5d, 0xac, 0x4d, 0x34, 0x00, 0xe4, 0x2b, 0xfa, 0xad, 0x17,
		0x5e, 0x23, 0x12, 0x61, 0x44, 0xee, 0x0f, 0x12, 0x17, 0x30, 0x03, 0x55, 0x60, 0xed, 0x6a, 0x6f,
		0x5f, 0x75, 0xda, 0x5b, 0xa1, 0x9e, 0x35, 0x66, 0x2f, 0xe1, 0x66, 0xd8, 0xaf, 0x9e, 0x39, 0x5e,
		0xb8, 0xc0, 0x25, 0x19, 0x15, 0xdf, 0x10, 0x99, 0x21, 0x1d, 0x62, 0x65, 0x6d, 0xc9, 0xf2, 0xb5,
		0x7c, 0x99, 0x5a, 0x1a, 0x2f, 0xa8, 0x95, 0x9d, 0xd5, 0x20, 0x81, 0x4a, 0x19, 0xd9, 0xef, 0xa8,
		0x5a, 0x6a, 0x08, 0x46, 0x89, 0x12, 0xa4, 0xbb, 0x83, 0x9f, 0xd5, 0xfb, 0xea, 0xc6, 0x4d, 0xcf,
		0xc8, 0x59, 0xa6, 0x18, 0x58, 0xbd, 0xef, 0x6b, 0xe0, 0xc1, 0xea, 0xfd, 0xc7, 0x5d, 0x4b, 0x56,
		0xef, 0x7b, 0x6a, 0x38, 0xf5, 0x0d, 0xa8, 0x45, 0x96, 0x29, 0x62, 0x34, 0x1b, 0xa3, 0xd9, 0x7c,
		0x30, 0xbc, 0x85, 0x20, 0x46, 0xb3, 0x09, 0x8b, 0xa3, 0x03, 0xbd, 0x4e, 0xc6, 0xdb, 0xdc, 0x88,
		0x9b, 0x1b, 0x73, 0x53, 0xa3, 0xae, 0x63, 0xdc, 0x95, 0x8c, 0x7c, 0x71, 0x92, 0x8c, 0x66, 0x13,
		0x15, 0x49, 0xf7, 0xb9, 0x86, 0x70, 0xba, 0xcf, 0x17, 0x77, 0x8b, 0xee, 0x73, 0x23, 0xd5, 0x63,
		0x34, 0x9b, 0x3f, 0x3a, 0x48, 0x13, 0x7a, 0x00, 0xc0, 0x83, 0xcd, 0x2a, 0x21, 0xbf, 0x42, 0x86,
		0xe8, 0x30, 0x44, 0x87, 0x5c, 0x08, 0xb9, 0x10, 0x72, 0x21, 0xe4, 0x42, 0xc8, 0x85, 0x6c, 0x7c,
		0x5f, 0x59, 0xbd, 0x0f, 0xaa, 0x04, 0x55, 0x32, 0xa5, 0x08, 0x5c, 0x04, 0x2e, 0x02, 0x17, 0x81,
		0x8b, 0xc0, 0x45, 0x4c, 0x29, 0x52, 0xf8, 0x50, 0x27, 0xd2, 0x95, 0x4f, 0x8e, 0x5e, 0xd9, 0x74,
		0x95, 0x55, 0x8f, 0x29, 0x45, 0x28, 0x5f, 0x44, 0x81, 0x88, 0x50, 0x7e, 0xeb, 0x43, 0x79, 0xc6,
		0x40, 0xad, 0x21, 0xcf, 0x0b, 0x26, 0xf0, 0xcd, 0x70, 0xfa, 0x37, 0xbe, 0x11, 0xad, 0xd8, 0xb8,
		0x7f, 0xff, 0x0b, 0x63, 0xe3, 0xfe, 0xc6, 0xd9, 0x20, 0x36, 0xee, 0x07, 0x94, 0xf5, 0x81, 0xd6,
		0x01, 0xad, 0xe3, 0xc1, 0x13, 0x83, 0xd6, 0x21, 0x6d, 0x9c, 0x49, 0xd9, 0x87, 0x6c, 0xb4, 0xad,
		0x8c, 0xb7, 0xb9, 0x11, 0x37, 0x37, 0xe6, 0xa6, 0x46, 0x5d, 0x37, 0x4c, 0x87, 0xd6, 0x21, 0x66,
		0x7d, 0xa1, 0x75, 0x08, 0xfc, 0x50, 0xd2, 0xf5, 0x64, 0x4c, 0xa1, 0x75, 0x40, 0xeb, 0x20, 0x6b,
		0x2f, 0xf6, 0x61, 0xe3, 0xfe, 0xe3, 0x95, 0x90, 0x8d, 0xfb, 0x04, 0x9b, 0x04, 0x9b, 0x04, 0x9b,
		0x04, 0x9b, 0x04, 0x9b, 0x2c, 0x9f, 0x0d, 0xc9, 0x6d, 0x43, 0x16, 0x84, 0x2c, 0x08, 0xe8, 0x01,
		0xf4, 0x00, 0x7a, 0x00, 0x3d, 0x80, 0x1e, 0x40, 0x4f, 0xfd, 0x41, 0x0f, 0x5c, 0x36, 0xdc, 0x36,
		0x6e, 0x1b, 0xb7, 0x8d, 0xdb, 0xc6, 0x6d, 0xc3, 0x65, 0x13, 0xff, 0x50, 0x1c, 0xd7, 0x95, 0x4f,
		0x61, 0x52, 0xd9, 0x74, 0x95, 0x55, 0x0f, 0x2e, 0x1b, 0xca, 0x17, 0x51, 0x15, 0xf7, 0x3f, 0xd2,
		0x84, 0x6a, 0xb5, 0x86, 0x3c, 0x4f, 0xa9, 0x56, 0x2c, 0xda, 0xd7, 0xd2, 0xbc, 0xed, 0x5a, 0xb4,
		0x7f, 0x47, 0xd3, 0x3c, 0xde, 0xaf, 0x7f, 0x3e, 0xec, 0x8f, 0x96, 0xf7, 0xeb, 0x07, 0xb3, 0x57,
		0xff, 0x67, 0xd9, 0xf5, 0x7a, 0x71, 0xe6, 0xba, 0x2e, 0xb9, 0x11, 0x6c, 0x43, 0x5a, 0xdd, 0x76,
		0x54, 0x88, 0x65, 0xe1, 0x9e, 0x55, 0x6a, 0x8e, 0x85, 0x7b, 0xe1, 0xa5, 0xd6, 0x58, 0xb8, 0x77,
		0xef, 0xc9, 0xb0, 0x70, 0xcf, 0x43, 0x43, 0xa9, 0x66, 0x30, 0x35, 0x0d, 0xa7, 0xbe, 0x01, 0xd5,
		0x36, 0xa4, 0x66, 0x06, 0xd5, 0xcc, 0xb0, 0x9a, 0x18, 0xd8, 0x7a, 0x44, 0xd9, 0x30, 0xb3, 0xa5,
		0x8d, 0x33, 0x05, 0xe8, 0x90, 0x8d, 0xb6, 0x95, 0xf1, 0x36, 0x37, 0xe2, 0xe6, 0xc6, 0xdc, 0xd4,
		0xa8, 0xeb, 0x18, 0x77, 0x25, 0x23, 0x5f, 0x9c, 0x24, 0xcc, 0x6c, 0x51, 0x91, 0x14, 0x9f, 0x35,
		0x84, 0x53, 0x7c, 0x5e, 0xdc, 0x2d, 0x8a, 0xcf, 0x46, 0xaa, 0x07, 0x33, 0xdb, 0x1f, 0x1d, 0xa4,
		0x06, 0x1d, 0x00, 0xf0, 0x60, 0x9e, 0x6a, 0xc8, 0xaf, 0x10, 0x0e, 0x1d, 0x1c, 0x3a, 0x72, 0x21,
		0xe4, 0x42, 0xc8, 0x85, 0x90, 0x0b, 0x21, 0x17, 0xb2, 0xf1, 0x7d, 0x65, 0xe1, 0x1e, 0xa8, 0x12,
		0x54, 0x09, 0x49, 0x11, 0x5c, 0x04, 0x2e, 0x02, 0x17, 0x81, 0x8b, 0xc0, 0x45, 0x90, 0x14, 0x15,
		0x3e, 0xd4, 0x89, 0x74, 0xe5, 0x93, 0xa3, 0x57, 0x36, 0x5d, 0x65, 0xd5, 0x83, 0xa4, 0x88, 0xf2,
		0x45, 0x14, 0x88, 0x08, 0xe5, 0xb7, 0x3e, 0x94, 0x87, 0x05, 0xba, 0x86, 0x3c, 0x3f, 0xb9, 0x79,
		0x05, 0xe3, 0x8a, 0xcd, 0x7b, 0xf7, 0xbf, 0x39, 0x36, 0xef, 0x6d, 0x9c, 0x16, 0x62, 0xf3, 0x5e,
		0x40, 0xe9, 0x1f, 0xf8, 0x1d, 0xf0, 0x3b, 0x1e, 0x3c, 0x31, 0xf8, 0x1d, 0xd2, 0xc6, 0x99, 0xdc,
		0x7d, 0xc8, 0x46, 0xdb, 0xca, 0x78, 0x9b, 0x1b, 0x71, 0x73, 0x63, 0x6e, 0x6a, 0xd4, 0x75, 0xe3,
		0x75, 0xf8, 0x1d, 0x62, 0xd6, 0x17, 0x7e, 0x87, 0xc0, 0x0f, 0x25, 0x6f, 0x4f, 0xea, 0x14, 0x7e,
		0x07, 0xfc, 0x0e, 0xd2, 0xf7, 0x62, 0x1f, 0x36, 0xef, 0x3d, 0x5e, 0x09, 0xd9, 0xbc, 0x47, 0xb0,
		0x49, 0xb0, 0x49, 0xb0, 0x49, 0xb0, 0x49, 0xb0, 0xc9, 0x12, 0x9a, 0x90, 0xdc, 0x36, 0xac, 0x41,
		0x58, 0x83, 0x80, 0x1e, 0x40, 0x0f, 0xa0, 0x07, 0xd0, 0x03, 0xe8, 0x01, 0xf4, 0xd4, 0x1f, 0xf4,
		0x40, 0x6a, 0xc3, 0x6d, 0xe3, 0xb6, 0x71, 0xdb, 0xb8, 0x6d, 0xdc, 0x36, 0xa4, 0x36, 0xf1, 0x0f,
		0xc5, 0x71, 0x5d, 0xf9, 0x14, 0x26, 0x95, 0x4d, 0x57, 0x59, 0xf5, 0x20, 0xb5, 0xa1, 0x7c, 0x11,
		0x55, 0x71, 0xff, 0x23, 0x4d, 0x38, 0x57, 0x6b, 0xc8, 0xf3, 0x9d, 0x73, 0xc5, 0x0a, 0x3e, 0x2d,
		0x15, 0xdc, 0xf2, 0x15, 0x7c, 0xd2, 0x8b, 0xd5, 0x22, 0x81, 0x5d, 0x7c, 0xef, 0x16, 0x8f, 0x1c,
		0xca, 0x4e, 0xbe, 0x27, 0x1e, 0xdf, 0x83, 0x86, 0xbb, 0xcd, 0xb3, 0x4e, 0x3c, 0x9e, 0xbc, 0x8d,
		0xcb, 0xbe, 0x4c, 0xc8, 0xda, 0xf8, 0x72, 0xed, 0x52, 0xb1, 0x40, 0x4d, 0x61, 0xe3, 0xdd, 0xce,
		0x4e, 0x71, 0x91, 0xe2, 0x89, 0x1a, 0x47, 0xbf, 0x45, 0x4f, 0x67, 0xe9, 0x91, 0x38, 0xff, 0x3a,
		0x74, 0xa3, 0x97, 0x27, 0xfb, 0xe7, 0xad, 0xd3, 0xf6, 0x79, 0xeb, 0xe4, 0xec, 0x69, 0xcd, 0xf6,
		0xe2, 0x4d, 0x5f, 0x5d, 0x9d, 0xb7, 0xe2, 0xad, 0xf5, 0x6e, 0x83, 0xa4, 0x29, 0xbf, 0x71, 0xa3,
		0x6e, 0x96, 0x0c, 0x55, 0xd0, 0x55, 0x71, 0x65, 0x9a, 0x69, 0xb7, 0x3f, 0xee, 0xb9, 0x28, 0xbf,
		0x4e, 0x46, 0x51, 0x77, 0x90, 0xe6, 0x9d, 0x24, 0x75, 0x59, 0x74, 0x35, 0xc8, 0xa2, 0x57, 0x7f,
		0xb4, 0xe2, 0x51, 0xf2, 0x29, 0xed, 0xf4, 0xfb, 0xae, 0x17, 0x4d, 0x0e, 0x36, 0x1a, 0x0d, 0x5d,
		0x37, 0xb9, 0x4a, 0xba, 0x1f, 0xe7, 0x3e, 0x71, 0x9c, 0xcd, 0x3c, 0xb2, 0xb0, 0x1e, 0x28, 0x26,
		0x9a, 0x97, 0xef, 0x54, 0x6f, 0xe9, 0x85, 0x28, 0x14, 0x88, 0x2c, 0xb2, 0xca, 0xa5, 0x2b, 0x56,
		0x8d, 0x2e, 0x80, 0x86, 0x45, 0xbf, 0xf5, 0xc2, 0x6b, 0x94, 0x22, 0x8c, 0xd2, 0xfd, 0x41, 0xe7,
		0x02, 0x06, 0xa1, 0x0a, 0xfc, 0x5d, 0xed, 0xed, 0xab, 0x4e, 0x7b, 0x2b, 0xd4, 0xb3, 0x46, 0xff,
		0xd9, 0xe4, 0x25, 0x24, 0xc3, 0x9b, 0x83, 0xf8, 0xf3, 0xb8, 0x9f, 0x27, 0xdd, 0xce, 0xa8, 0xfa,
		0x3a, 0x7a, 0xe1, 0x20, 0x57, 0x4a, 0xab, 0xf8, 0xd6, 0xc8, 0x0c, 0xf3, 0x10, 0x2b, 0x7f, 0x4b,
		0x96, 0xb9, 0xe5, 0xcb, 0xd9, 0xd2, 0x68, 0x42, 0xad, 0x3c, 0xad, 0x06, 0x18, 0x54, 0xca, 0xcd,
		0x7e, 0x47, 0xdf, 0x52, 0xc3, 0x32, 0x4a, 0xd4, 0x21, 0xdd, 0x5d, 0xfd, 0xac, 0xe8, 0x57, 0x37,
		0x6e, 0x7a, 0x46, 0xce, 0x32, 0x15, 0xc1, 0x8a, 0x7e, 0x5f, 0x83, 0x11, 0x56, 0xf4, 0x3f, 0xee,
		0x5a, 0xb2, 0xa2, 0xdf, 0x53, 0xc3, 0xa9, 0x6f, 0x40, 0x2d, 0x72, 0x50, 0x11, 0x23, 0xdc, 0x18,
		0xe1, 0xe6, 0x83, 0xe1, 0x2d, 0x04, 0x31, 0xc2, 0x4d, 0x58, 0x1c, 0x9d, 0xea, 0x75, 0x32, 0xde,
		0xe6, 0x46, 0xdc, 0xdc, 0x98, 0x9b, 0x1a, 0x75, 0x1d, 0xe3, 0xae, 0x64, 0xe4, 0x8b, 0x93, 0x64,
		0x84, 0x9b, 0xa8, 0x48, 0xba, 0xd4, 0x35, 0x84, 0xd3, 0xa5, 0xbe, 0xb8, 0x5b, 0x74, 0xa9, 0x1b,
		0xa9, 0x1e, 0x23, 0xdc, 0xfc, 0xd1, 0x41, 0x9a, 0xd5, 0x03, 0x00, 0x1e, 0x6c, 0x60, 0x09, 0xf9,
		0x15, 0x32, 0x6c, 0x87, 0x61, 0x3b, 0xe4, 0x42, 0xc8, 0x85, 0x90, 0x0b, 0x21, 0x17, 0x42, 0x2e,
		0x64, 0xe3, 0xfb, 0xca, 0x8a, 0x7e, 0x50, 0x25, 0xa8, 0x92, 0x69, 0x46, 0xe0, 0x22, 0x70, 0x11,
		0xb8, 0x08, 0x5c, 0x04, 0x2e, 0x62, 0x9a, 0x91, 0xc2, 0x87, 0x3a, 0x91, 0xae, 0x7c, 0x72, 0xf4,
		0xca, 0xa6, 0xab, 0xac, 0x7a, 0x4c, 0x33, 0x42, 0xf9, 0x22, 0x0a, 0x44, 0x84, 0xf2, 0x5b, 0x1f,
		0xca, 0x33, 0x2e, 0x6a, 0x0d, 0x79, 0xd6, 0xec, 0xe0, 0x15, 0x54, 0xd1, 0xd2, 0x14, 0x1f, 0x76,
		0xf4, 0xdf, 0xff, 0xea, 0xd8, 0xd1, 0xbf, 0x71, 0x5e, 0x88, 0x1d, 0xfd, 0x01, 0xe5, 0x7f, 0x20,
		0x78, 0x40, 0xf0, 0x78, 0xf0, 0xc4, 0x20, 0x78, 0x48, 0x1b, 0x67, 0x92, 0xf7, 0x21, 0x1b, 0x6d,
		0x2b, 0xe3, 0x6d, 0x6e, 0xc4, 0xcd, 0x8d, 0xb9, 0xa9, 0x51, 0xd7, 0x0d, 0xd8, 0x21, 0x78, 0x88,
		0x59, 0x5f, 0x08, 0x1e, 0x02, 0x3f, 0x94, 0xc4, 0x3d, 0xb9, 0x53, 0x08, 0x1e, 0x10, 0x3c, 0xc8,
		0xdf, 0x8b, 0x7d, 0xd8, 0xd1, 0xff, 0x78, 0x25, 0x64, 0x47, 0x3f, 0xc1, 0x26, 0xc1, 0x26, 0xc1,
		0x26, 0xc1, 0x26, 0xc1, 0x26, 0xeb, 0x6a, 0x43, 0x72, 0xdb, 0xd0, 0x06, 0xa1, 0x0d, 0x02, 0x7a,
		0x00, 0x3d, 0x80, 0x1e, 0x40, 0x0f, 0xa0, 0x07, 0xd0, 0x53, 0x7f, 0xd0, 0x03, 0xab, 0x0d, 0xb7,
		0x8d, 0xdb, 0xc6, 0x6d, 0xe3, 0xb6, 0x71, 0xdb, 0xb0, 0xda, 0xc4, 0x3f, 0x14, 0xc7, 0x75, 0xe5,
		0x53, 0x98, 0x54, 0x36, 0x5d, 0x65, 0xd5, 0x83, 0xd5, 0x86, 0xf2, 0x45, 0x54, 0xc5, 0xfd, 0x8f,
		0x34, 0x21, 0x5d, 0xad, 0x21, 0xcf, 0x7b, 0xd2, 0x15, 0x4b, 0xfa, 0xb5, 0x74, 0x70, 0x6b, 0x96,
		0xf4, 0x3f, 0xa4, 0x73, 0x9e, 0x6e, 0xe9, 0x7f, 0x76, 0x3e, 0x4c, 0x9b, 0xc3, 0x9b, 0x83, 0xb7,
		0x8b, 0x87, 0x5e, 0x5e, 0xd7, 0x1f, 0xcc, 0x9a, 0xfe, 0x9f, 0x65, 0xb7, 0xf0, 0xc5, 0x99, 0xeb,
		0xba, 0xe4, 0x46, 0xb0, 0x47, 0x69, 0x75, 0x4f, 0x52, 0x21, 0x96, 0xbd, 0x7c, 0x56, 0x79, 0x3b,
		0xf6, 0xf2, 0x85, 0x97, 0x77, 0x63, 0x2f, 0xdf, 0xbd, 0x27, 0xc3, 0x5e, 0x3e, 0x0f, 0x0d, 0xa5,
		0x9a, 0xc1, 0xd4, 0x34, 0x9c, 0xfa, 0x06, 0x54, 0xdb, 0x90, 0x9a, 0x19, 0x54, 0x33, 0xc3, 0x6a,
		0x62, 0x60, 0xeb, 0x11, 0x82, 0x43, 0xdb, 0x96, 0x36, 0xce, 0x54, 0xa7, 0x43, 0x36, 0xda, 0x56,
		0xc6, 0xdb, 0xdc, 0x88, 0x9b, 0x1b, 0x73, 0x53, 0xa3, 0xae, 0x63, 0xdc, 0x95, 0x8c, 0x7c, 0x71,
		0x92, 0xd0, 0xb6, 0x45, 0x45, 0x52, 0x99, 0xd6, 0x10, 0x4e, 0x65, 0x7a, 0x71, 0xb7, 0xa8, 0x4c,
		0x1b, 0xa9, 0x1e, 0xb4, 0x6d, 0x7f, 0x74, 0x90, 0x02, 0x75, 0x00, 0xc0, 0x83, 0xb1, 0xab, 0x21,
		0xbf, 0x42, 0x08, 0x76, 0x10, 0xec, 0xc8, 0x85, 0x90, 0x0b, 0x21, 0x17, 0x42, 0x2e, 0x84, 0x5c,
		0xc8, 0xc6, 0xf7, 0x95, 0xbd, 0x7c, 0xa0, 0x4a, 0x50, 0x25, 0x0c, 0x46, 0x70, 0x11, 0xb8, 0x08,
		0x5c, 0x04, 0x2e, 0x02, 0x17, 0xc1, 0x60, 0x54, 0xf8, 0x50, 0x27, 0xd2, 0x95, 0x4f, 0x8e, 0x5e,
		0xd9, 0x74, 0x95, 0x55, 0x0f, 0x06, 0x23, 0xca, 0x17, 0x51, 0x20, 0x22, 0x94, 0xdf, 0xfa, 0x50,
		0x1e, 0x8a, 0xe8, 0x1a, 0xf2, 0x7c, 0xa7, 0xeb, 0x15, 0xdc, 0x2b, 0x16, 0xf4, 0xdd, 0xff, 0x0e,
		0x59, 0xd0, 0xb7, 0x71, 0x82, 0x88, 0x05, 0x7d, 0x01, 0x25, 0x82, 0x60, 0x7a, 0xc0, 0xf4, 0x78,
		0xf0, 0xc4, 0x60, 0x7a, 0x48, 0x1b, 0x67, 0xb2, 0xf8, 0x21, 0x1b, 0x6d, 0x2b, 0xe3, 0x6d, 0x6e,
		0xc4, 0xcd, 0x8d, 0xb9, 0xa9, 0x51, 0xd7, 0x8d, 0xdc, 0x61, 0x7a, 0x88, 0x59, 0x5f, 0x98, 0x1e,
		0x02, 0x3f, 0x94, 0x0c, 0x3e, 0x49, 0x54, 0x98, 0x1e, 0x30, 0x3d, 0x48, 0xe4, 0x8b, 0x7d, 0x58,
		0xd0, 0xf7, 0x78, 0x25, 0x64, 0x41, 0x1f, 0xc1, 0x26, 0xc1, 0x26, 0xc1, 0x26, 0xc1, 0x26, 0xc1,
		0x26, 0xbb, 0x6a, 0x42, 0x72, 0xdb, 0xf0, 0x07, 0xe1, 0x0f, 0x02, 0x7a, 0x00, 0x3d, 0x80, 0x1e,
		0x40, 0x0f, 0xa0, 0x07, 0xd0, 0x53, 0x7f, 0xd0, 0x03, 0xbd, 0x0d, 0xb7, 0x8d, 0xdb, 0xc6, 0x6d,
		0xe3, 0xb6, 0x71, 0xdb, 0xd0, 0xdb, 0xc4, 0x3f, 0x14, 0xc7, 0x75, 0xe5, 0x53, 0x98, 0x54, 0x36,
		0x5d, 0x65, 0xd5, 0x83, 0xde, 0x86, 0xf2, 0x45, 0x54, 0xc5, 0xfd, 0x8f, 0x34, 0x61, 0x5f, 0xad,
		0x21, 0x2f, 0x1c, 0xf6, 0x15, 0x9b, 0xfa, 0xb4, 0x94, 0x91, 0x4d, 0x7d, 0x4a, 0x6b, 0xd7, 0x22,
		0xc9, 0x95, 0x7d, 0xef, 0x16, 0xcf, 0x1e, 0xca, 0xea, 0xbe, 0x27, 0x1e, 0x5f, 0x8d, 0x86, 0xbb,
		0xcd, 0xb3, 0x4e, 0x3c, 0x9e, 0xbc, 0x96, 0xcb, 0xbe, 0x4c, 0x3c, 0xdb, 0xf8, 0x72, 0xed, 0x52,
		0xb1, 0x28, 0x4e, 0x61, 0x31, 0xde, 0xce, 0x4e, 0x71, 0xb7, 0xe2, 0x89, 0x3e, 0x47, 0xbf, 0x45,
		0x4f, 0x67, 0xb9, 0x93, 0x38, 0xff, 0x3a, 0x74, 0xa3, 0x97, 0x27, 0xcf, 0xce, 0x5b, 0xa7, 0xed,
		0x66, 0xeb, 0xfc, 0xa0, 0xfd, 0xf6, 0xc3, 0xc9, 0xfb, 0xe6, 0xeb, 0xa3, 0xb3, 0xf7, 0x4f, 0x6b,
		0xb6, 0x48, 0x6f, 0xfa, 0x12, 0xeb, 0xbc, 0x46, 0xef, 0x07, 0xdf, 0x72, 0x90, 0xbc, 0xe6, 0x37,
		0x6e, 0xd4, 0xcd, 0x92, 0xa1, 0x0a, 0x1c, 0x2b, 0xae, 0x51, 0x33, 0xed, 0xf6, 0xc7, 0x3d, 0x17,
		0xe5, 0xd7, 0xc9, 0x28, 0xea, 0x0e, 0xd2, 0xbc, 0x93, 0xa4, 0x2e, 0x8b, 0xae, 0x06, 0x59, 0x54,
		0xb8, 0xa9, 0xa8, 0xd9, 0xba, 0x39, 0x8c, 0xa6, 0x27, 0x1d, 0x8d, 0x86, 0xae, 0x9b, 0x5c, 0x25,
		0xdd, 0x8f, 0x73, 0xe7, 0x39, 0xce, 0x66, 0xae, 0x5b, 0x58, 0x27, 0x14, 0x73, 0xd3, 0xcb, 0xf7,
		0xab, 0xb7, 0xf4, 0x4a, 0x14, 0x6a, 0x4a, 0x16, 0x89, 0xe8, 0xd2, 0x75, 0xab, 0x4a, 0x1b, 0x00,
		0xce, 0xa2, 0xdf, 0x7a, 0xe1, 0x35, 0x7a, 0x11, 0x06, 0xf4, 0x3e, 0x02, 0x79, 0x01, 0xe3, 0x50,
		0x29, 0x54, 0xaf, 0xf6, 0x42, 0x56, 0xa7, 0xd0, 0x15, 0xaa, 0x5e, 0x63, 0xe9, 0xbd, 0x8c, 0xd3,
		0xd9, 0xaf, 0xae, 0x5a, 0xfd, 0x0a, 0xaf, 0xb9, 0x42, 0x56, 0xc5, 0x97, 0x48, 0x66, 0x20, 0x88,
		0x58, 0x09, 0x5d, 0xb2, 0x54, 0x2e, 0x5f, 0x12, 0x97, 0x86, 0x17, 0x6a, 0x25, 0x6e, 0x35, 0x04,
		0xa1, 0x52, 0xb2, 0xf6, 0x3b, 0x48, 0x97, 0x1a, 0xb8, 0x51, 0xa2, 0x1f, 0xe9, 0x6e, 0xfe, 0x67,
		0xe1, 0xbf, 0xba, 0x71, 0xd3, 0x33, 0x72, 0x96, 0x79, 0x0a, 0x16, 0xfe, 0xfb, 0x1a, 0x9b, 0xb0,
		0xf0, 0xff, 0x71, 0xd7, 0x92, 0x85, 0xff, 0x9e, 0x1a, 0x4e, 0x7d, 0x03, 0x6a, 0x91, 0x94, 0x8a,
		0x18, 0x03, 0xc7, 0x18, 0x38, 0x1f, 0x0c, 0x6f, 0x21, 0x88, 0x31, 0x70, 0xc2, 0xe2, 0xe8, 0x76,
		0xaf, 0x93, 0xf1, 0x36, 0x37, 0xe2, 0xe6, 0xc6, 0xdc, 0xd4, 0xa8, 0xeb, 0x18, 0x77, 0x25, 0x23,
		0x5f, 0x9c, 0x24, 0x63, 0xe0, 0x44, 0x45, 0xd2, 0xe9, 0xae, 0x21, 0x9c, 0x4e, 0xf7, 0xc5, 0xdd,
		0xa2, 0xd3, 0xdd, 0x48, 0xf5, 0x18, 0x03, 0xe7, 0x8f, 0x0e, 0xd2, 0xf0, 0x1e, 0x00, 0xf0, 0x60,
		0x9f, 0x4b, 0xc8, 0xaf, 0x90, 0x81, 0x3d, 0x0c, 0xec, 0x21, 0x17, 0x42, 0x2e, 0x84, 0x5c, 0x08,
		0xb9, 0x10, 0x72, 0x21, 0x1b, 0xdf, 0x57, 0x16, 0xfe, 0x83, 0x2a, 0x41, 0x95, 0x4c, 0x44, 0x02,
		0x17, 0x81, 0x8b, 0xc0, 0x45, 0xe0, 0x22, 0x70, 0x11, 0x13, 0x91, 0x14, 0x3e, 0xd4, 0x89, 0x74,
		0xe5, 0x93, 0xa3, 0x57, 0x36, 0x5d, 0x65, 0xd5, 0x63, 0x22, 0x12, 0xca, 0x17, 0x51, 0x20, 0x22,
		0x94, 0xdf, 0xfa, 0x50, 0x9e, 0x91, 0x53, 0x6b, 0xc8, 0xf3, 0x87, 0x2c, 0x3c, 0x27, 0x8a, 0x96,
		0x66, 0xfe, 0xb0, 0xe5, 0xff, 0xfe, 0x17, 0xc7, 0x96, 0xff, 0x8d, 0xb3, 0x42, 0x6c, 0xf9, 0x0f,
		0x28, 0xfb, 0x03, 0xbd, 0x03, 0x7a, 0xc7, 0x83, 0x27, 0x06, 0xbd, 0x43, 0xda, 0x38, 0x93, 0xba,
		0x0f, 0xd9, 0x68, 0x5b, 0x19, 0x6f, 0x73, 0x23, 0x6e, 0x6e, 0xcc, 0x4d, 0x8d, 0xba, 0x6e, 0xb8,
		0x0e, 0xbd, 0x43, 0xcc, 0xfa, 0x42, 0xef, 0x10, 0xf8, 0xa1, 0xa4, 0xed, 0xc9, 0x9c, 0x42, 0xef,
		0x80, 0xde, 0x41, 0xf6, 0x5e, 0xec, 0xc3, 0x96, 0xff, 0xc7, 0x2b, 0x21, 0x5b, 0xfe, 0x09, 0x36,
		0x09, 0x36, 0x09, 0x36, 0x09, 0x36, 0x09, 0x36, 0x59, 0x78, 0x1b, 0x92, 0xdb, 0x86, 0x34, 0x08,
		0x69, 0x10, 0xd0, 0x03, 0xe8, 0x01, 0xf4, 0x00, 0x7a, 0x00, 0x3d, 0x80, 0x9e, 0xfa, 0x83, 0x1e,
		0x38, 0x6d, 0xb8, 0x6d, 0xdc, 0x36, 0x6e, 0x1b, 0xb7, 0x8d, 0xdb, 0x86, 0xd3, 0x26, 0xfe, 0xa1,
		0x38, 0xae, 0x2b, 0x9f, 0xc2, 0xa4, 0xb2, 0xe9, 0x2a, 0xab, 0x1e, 0x9c, 0x36, 0x94, 0x2f, 0xa2,
		0x2a, 0xee, 0x7f, 0xa4, 0x09, 0xe5, 0x6a, 0x0d, 0x79, 0x9e, 0x53, 0xae, 0x58, 0xed, 0xaf, 0xa5,
		0x81, 0x5b, 0xb8, 0xda, 0x7f, 0x95, 0xc6, 0x79, 0xbe, 0xcf, 0xff, 0x43, 0x7a, 0x67, 0x9b, 0x7f,
		0x30, 0x5b, 0xfc, 0x7f, 0x96, 0xdd, 0xbe, 0x17, 0x67, 0xae, 0xeb, 0x92, 0x1b, 0xc1, 0xee, 0xa4,
		0xd5, 0xdd, 0x48, 0x85, 0x58, 0xf6, 0xf1, 0x59, 0x65, 0xec, 0xd8, 0xc7, 0x17, 0x5e, 0xc6, 0x8d,
		0x7d, 0x7c, 0xf7, 0x9e, 0x0c, 0xfb, 0xf8, 0x3c, 0x34, 0x94, 0x6a, 0x06, 0x53, 0xd3, 0x70, 0xea,
		0x1b, 0x50, 0x6d, 0x43, 0x6a, 0x66, 0x50, 0xcd, 0x0c, 0xab, 0x89, 0x81, 0xad, 0x47, 0xf0, 0x0d,
		0x61, 0x5b, 0xda, 0x38, 0x53, 0x97, 0x0e, 0xd9, 0x68, 0x5b, 0x19, 0x6f, 0x73, 0x23, 0x6e, 0x6e,
		0xcc, 0x4d, 0x8d, 0xba, 0x8e, 0x71, 0x57, 0x32, 0xf2, 0xc5, 0x49, 0x42, 0xd8, 0x16, 0x15, 0x49,
		0x4d, 0x5a, 0x43, 0x38, 0x35, 0xe9, 0xc5, 0xdd, 0xa2, 0x26, 0x6d, 0xa4, 0x7a, 0x10, 0xb6, 0xfd,
		0xd1, 0x41, 0x4a, 0xd3, 0x01, 0x00, 0x0f, 0xc6, 0xad, 0x86, 0xfc, 0x0a, 0xa1, 0xd6, 0x41, 0xad,
		0x23, 0x17, 0x42, 0x2e, 0x84, 0x5c, 0x08, 0xb9, 0x10, 0x72, 0x21, 0x1b, 0xdf, 0x57, 0xf6, 0xf1,
		0x81, 0x2a, 0x41, 0x95, 0x70, 0x17, 0xc1, 0x45, 0xe0, 0x22, 0x70, 0x11, 0xb8, 0x08, 0x5c, 0x04,
		0x77, 0x51, 0xe1, 0x43, 0x9d, 0x48, 0x57, 0x3e, 0x39, 0x7a, 0x65, 0xd3, 0x55, 0x56, 0x3d, 0xb8,
		0x8b, 0x28, 0x5f, 0x44, 0x81, 0x88, 0x50, 0x7e, 0xeb, 0x43, 0x79, 0xc8, 0xa1, 0x6b, 0xc8, 0xf3,
		0x9b, 0xaa, 0x57, 0x30, 0xaf, 0x58, 0xcc, 0x77, 0xff, 0x1b, 0x64, 0x31, 0xdf, 0xc6, 0xe9, 0x21,
		0x16, 0xf3, 0x05, 0x94, 0x06, 0x82, 0xe7, 0x01, 0xcf, 0xe3, 0xc1, 0x13, 0x83, 0xe7, 0x21, 0x6d,
		0x9c, 0xc9, 0xe1, 0x87, 0x6c, 0xb4, 0xad, 0x8c, 0xb7, 0xb9, 0x11, 0x37, 0x37, 0xe6, 0xa6, 0x46,
		0x5d, 0x37, 0x6e, 0x87, 0xe7, 0x21, 0x66, 0x7d, 0xe1, 0x79, 0x08, 0xfc, 0x50, 0xf2, 0xf7, 0xa4,
		0x50, 0xe1, 0x79, 0xc0, 0xf3, 0x20, 0x8d, 0x2f, 0xf6, 0x61, 0x31, 0xdf, 0xe3, 0x95, 0x90, 0xc5,
		0x7c, 0x04, 0x9b, 0x04, 0x9b, 0x04, 0x9b, 0x04, 0x9b, 0x04, 0x9b, 0xec, 0xa8, 0x09, 0xc9, 0x6d,
		0xc3, 0x1e, 0x84, 0x3d, 0x08, 0xe8, 0x01, 0xf4, 0x00, 0x7a, 0x00, 0x3d, 0x80, 0x1e, 0x40, 0x4f,
		0xfd, 0x41, 0x0f, 0xe4, 0x36, 0xdc, 0x36, 0x6e, 0x1b, 0xb7, 0x8d, 0xdb, 0xc6, 0x6d, 0x43, 0x6e,
		0x13, 0xff, 0x50, 0x1c, 0xd7, 0x95, 0x4f, 0x61, 0x52, 0xd9, 0x74, 0x95, 0x55, 0x0f, 0x72, 0x1b,
		0xca, 0x17, 0x51, 0x15, 0xf7, 0x3f, 0xd2, 0x84, 0x7b, 0xb5, 0x86, 0xbc, 0x50, 0xb8, 0x57, 0x6c,
		0xe8, 0xd3, 0x52, 0x45, 0x36, 0xf4, 0xa9, 0x2c, 0x5c, 0x8b, 0xe4, 0x56, 0xf5, 0xbd, 0x5b, 0x3c,
		0x79, 0x28, 0x2b, 0xfb, 0x9e, 0x78, 0x7c, 0x2d, 0x1a, 0xee, 0x36, 0xcf, 0x3a, 0xf1, 0x78, 0xf2,
		0x52, 0x2e, 0xfb, 0x32, 0x91, 0x6c, 0xe3, 0xcb, 0xb5, 0x4b, 0xc5, 0xe2, 0x37, 0x85, 0x85, 0x78,
		0x3b, 0x3b, 0xc5, 0xbd, 0x8a, 0x27, 0xda, 0x1c, 0xfd, 0x16, 0x3d, 0x9d, 0x65, 0x4d, 0xe2, 0xfc,
		0xeb, 0xd0, 0x8d, 0x5e, 0x9e, 0x3c, 0x3b, 0x6f, 0x9d, 0xb6, 0x9b, 0xad, 0xf3, 0x83, 0xf6, 0x87,
		0xd3, 0xe6, 0xeb, 0xa3, 0xb3, 0xf7, 0x4f, 0x6b, 0xb6, 0x3e, 0x6f, 0xfa, 0x0a, 0xeb, 0xbc, 0x3c,
		0xef, 0x87, 0xde, 0x71, 0x90, 0x6c, 0xe6, 0x37, 0x6e, 0xd4, 0xcd, 0x92, 0xa1, 0x0a, 0x08, 0x2b,
		0xae, 0x50, 0x33, 0xed, 0xf6, 0xc7, 0x3d, 0x17, 0xe5, 0xd7, 0xc9, 0x28, 0xea, 0x0e, 0xd2, 0xbc,
		0x93, 0xa4, 0x2e, 0x8b, 0xae, 0x06, 0x59, 0xd4, 0x6c, 0xdd, 0x1c, 0x44, 0x73, 0x3b, 0x1f, 0x4d,
		0x4f, 0x39, 0x1a, 0x0d, 0x5d, 0x37, 0xb9, 0x4a, 0xba, 0x1f, 0xe7, 0x2e, 0x73, 0x9c, 0xcd, 0x1c,
		0xb6, 0xb0, 0x3e, 0x28, 0xe6, 0xa3, 0x97, 0xef, 0x56, 0x6f, 0xe9, 0x85, 0x28, 0xd4, 0x91, 0x2c,
		0x92, 0xcf, 0xa5, 0xab, 0x56, 0x8d, 0x2e, 0x00, 0x96, 0x45, 0xbf, 0xf5, 0xc2, 0x6b, 0xd4, 0x22,
		0x0c, 0xe2, 0xfd, 0x03, 0xef, 0x02, 0x86, 0xa1, 0x42, 0x78, 0x5e, 0xed, 0x65, 0xac, 0x4e, 0x99,
		0x2b, 0x54, 0xbb, 0x46, 0xf1, 0x4e, 0x0e, 0xe3, 0xcf, 0xe3, 0x7e, 0x3e, 0xfb, 0xdd, 0x55, 0x2b,
		0x5f, 0xe1, 0x2f, 0x57, 0x4a, 0xab, 0xf8, 0x12, 0xc9, 0x8c, 0x00, 0x11, 0x2b, 0x9a, 0x4b, 0x16,
		0xc7, 0xe5, 0x8b, 0xe0, 0xd2, 0xe0, 0x42, 0xad, 0xa8, 0xad, 0x86, 0x1f, 0x54, 0x8a, 0xd4, 0x7e,
		0x07, 0xe7, 0x52, 0x23, 0x36, 0x4a, 0x84, 0x23, 0xdd, 0x4d, 0xff, 0x2c, 0xf8, 0x57, 0x37, 0x6e,
		0x7a, 0x46, 0xce, 0x32, 0x43, 0xc1, 0x82, 0x7f, 0x5f, 0x63, 0x13, 0x16, 0xfc, 0x3f, 0xee, 0x5a,
		0xb2, 0xe0, 0xdf, 0x53, 0xc3, 0xa9, 0x6f, 0x40, 0x2d, 0x52, 0x52, 0x11, 0x83, 0xdf, 0x18, 0xfc,
		0xe6, 0x83, 0xe1, 0x2d, 0x04, 0x31, 0xf8, 0x4d, 0x58, 0x1c, 0xfd, 0xed, 0x75, 0x32, 0xde, 0xe6,
		0x46, 0xdc, 0xdc, 0x98, 0x9b, 0x1a, 0x75, 0x1d, 0xe3, 0xae, 0x64, 0xe4, 0x8b, 0x93, 0x64, 0xf0,
		0x9b, 0xa8, 0x48, 0x7a, 0xdb, 0x35, 0x84, 0xd3, 0xdb, 0xbe, 0xb8, 0x5b, 0xf4, 0xb6, 0x1b, 0xa9,
		0x1e, 0x83, 0xdf, 0xfc, 0xd1, 0x41, 0x5a, 0xdc, 0x03, 0x00, 0x1e, 0xec, 0x6f, 0x09, 0xf9, 0x15,
		0x32, 0xa2, 0x87, 0x11, 0x3d, 0xe4, 0x42, 0xc8, 0x85, 0x90, 0x0b, 0x21, 0x17, 0x42, 0x2e, 0x64,
		0xe3, 0xfb, 0xca, 0x82, 0x7f, 0x50, 0x25, 0xa8, 0x92, 0x19, 0x48, 0xe0, 0x22, 0x70, 0x11, 0xb8,
		0x08, 0x5c, 0x04, 0x2e, 0x62, 0x06, 0x92, 0xc2, 0x87, 0x3a, 0x91, 0xae, 0x7c, 0x72, 0xf4, 0xca,
		0xa6, 0xab, 0xac, 0x7a, 0xcc, 0x40, 0x42, 0xf9, 0x22, 0x0a, 0x44, 0x84, 0xf2, 0x5b, 0x1f, 0xca,
		0x33, 0x64, 0x6a, 0x0d, 0x79, 0xbe, 0x90, 0x85, 0x97, 0xa8, 0xa2, 0xa5, 0x59, 0x3f, 0x6c, 0xf6,
		0xbf, 0xff, 0xd5, 0xb1, 0xd9, 0x7f, 0xe3, 0xbc, 0x10, 0x9b, 0xfd, 0x03, 0xca, 0xff, 0x40, 0xf0,
		0x80, 0xe0, 0xf1, 0xe0, 0x89, 0x41, 0xf0, 0x90, 0x36, 0xce, 0x24, 0xef, 0x43, 0x36, 0xda, 0x56,
		0xc6, 0xdb, 0xdc, 0x88, 0x9b, 0x1b, 0x73, 0x53, 0xa3, 0xae, 0x1b, 0xb0, 0x43, 0xf0, 0x10, 0xb3,
		0xbe, 0x10, 0x3c, 0x04, 0x7e, 0x28, 0x89, 0x7b, 0x72, 0xa7, 0x10, 0x3c, 0x20, 0x78, 0x90, 0xbf,
		0x17, 0xfb, 0x5c, 0xd0, 0x29, 0xf6, 0x68, 0x25, 0x64, 0xb3, 0x3f, 0xc1, 0x26, 0xc1, 0x26, 0xc1,
		0x26, 0xc1, 0x26, 0xc1, 0x26, 0x4b, 0x6e, 0x43, 0x72, 0xdb, 0xd0, 0x06, 0xa1, 0x0d, 0x02, 0x7a,
		0x00, 0x3d, 0x80, 0x1e, 0x40, 0x0f, 0xa0, 0x07, 0xd0, 0x53, 0x7f, 0xd0, 0x03, 0xab, 0x0d, 0xb7,
		0x8d, 0xdb, 0xc6, 0x6d, 0xe3, 0xb6, 0x71, 0xdb, 0xb0, 0xda, 0xc4, 0x3f, 0x14, 0xc7, 0x75, 0xe5,
		0x53, 0x98, 0x54, 0x36, 0x5d, 0x65, 0xd5, 0x83, 0xd5, 0x86, 0xf2, 0x45, 0x54, 0xc5, 0xfd, 0x8f,
		0x34, 0x21, 0x5d, 0xad, 0x21, 0xcf, 0x7b, 0xd2, 0x15, 0x2b, 0xfd, 0xb5, 0x74, 0x70, 0xeb, 0x56,
		0xfa, 0xdf, 0xa7, 0x73, 0x7e, 0xef, 0xf2, 0x3f, 0x7c, 0xbb, 0x78, 0xe8, 0xe5, 0x6d, 0xfe, 0xc1,
		0x6c, 0xf1, 0xff, 0x59, 0x76, 0x0b, 0x5f, 0x9c, 0xb9, 0xae, 0x4b, 0x6e, 0x04, 0x7b, 0x94, 0x56,
		0xf7, 0x24, 0x15, 0x62, 0xd9, 0xcb, 0x67, 0x95, 0xb7, 0x63, 0x2f, 0x5f, 0x78, 0x79, 0x37, 0xf6,
		0xf2, 0xdd, 0x7b, 0x32, 0xec, 0xe5, 0xf3, 0xd0, 0x50, 0xaa, 0x19, 0x4c, 0x4d, 0xc3, 0xa9, 0x6f,
		0x40, 0xb5, 0x0d, 0xa9, 0x99, 0x41, 0x35, 0x33, 0xac, 0x26, 0x06, 0xb6, 0x1e, 0x21, 0x38, 0xb4,
		0x6d, 0x69, 0xe3, 0x4c, 0x75, 0x3a, 0x64, 0xa3, 0x6d, 0x65, 0xbc, 0xcd, 0x8d, 0xb8, 0xb9, 0x31,
		0x37, 0x35, 0xea, 0x3a, 0xc6, 0x5d, 0xc9, 0xc8, 0x17, 0x27, 0x09, 0x6d, 0x5b, 0x54, 0x24, 0x95,
		0x69, 0x0d, 0xe1, 0x54, 0xa6, 0x17, 0x77, 0x8b, 0xca, 0xb4, 0x91, 0xea, 0x41, 0xdb, 0xf6, 0x47,
		0x07, 0x29, 0x50, 0x07, 0x00, 0x3c, 0x18, 0xbb, 0x1a, 0xf2, 0x2b, 0x84, 0x60, 0x07, 0xc1, 0x8e,
		0x5c, 0x08, 0xb9, 0x10, 0x72, 0x21, 0xe4, 0x42, 0xc8, 0x85, 0x6c, 0x7c, 0x5f, 0xd9, 0xcb, 0x07,
		0xaa, 0x04, 0x55, 0xc2, 0x60, 0x04, 0x17, 0x81, 0x8b, 0xc0, 0x45, 0xe0, 0x22, 0x70, 0x11, 0x0c,
		0x46, 0x85, 0x0f, 0x75, 0x22, 0x5d, 0xf9, 0xe4, 0xe8, 0x95, 0x4d, 0x57, 0x59, 0xf5, 0x60, 0x30,
		0xa2, 0x7c, 0x11, 0x05, 0x22, 0x42, 0xf9, 0xad, 0x0f, 0xe5, 0xa1, 0x88, 0xae, 0x21, 0xcf, 0x77,
		0xba, 0x5e, 0xc1, 0xbd, 0x62, 0x41, 0xdf, 0xfd, 0xef, 0x90, 0x05, 0x7d, 0x1b, 0x27, 0x88, 0x58,
		0xd0, 0x17, 0x50, 0x22, 0x08, 0xa6, 0x07, 0x4c, 0x8f, 0x07, 0x4f, 0x0c, 0xa6, 0x87, 0xb4, 0x71,
		0x26, 0x8b, 0x1f, 0xb2, 0xd1, 0xb6, 0x32, 0xde, 0xe6, 0x46, 0xdc, 0xdc, 0x98, 0x9b, 0x1a, 0x75,
		0xdd, 0xc8, 0x1d, 0xa6, 0x87, 0x98, 0xf5, 0x85, 0xe9, 0x21, 0xf0, 0x43, 0xc9, 0xe0, 0x93, 0x44,
		0x85, 0xe9, 0x01, 0xd3, 0x83, 0x44, 0xbe, 0xd8, 0x87, 0x05, 0x7d, 0x8f, 0x57, 0x42, 0x16, 0xf4,
		0x11, 0x6c, 0x12, 0x6c, 0x12, 0x6c, 0x12, 0x6c, 0x12, 0x6c, 0xb2, 0xab, 0x26, 0x24, 0xb7, 0x0d,
		0x7f, 0x10, 0xfe, 0x20, 0xa0, 0x07, 0xd0, 0x03, 0xe8, 0x01, 0xf4, 0x00, 0x7a, 0x00, 0x3d, 0xf5,
		0x07, 0x3d, 0xd0, 0xdb, 0x70, 0xdb, 0xb8, 0x6d, 0xdc, 0x36, 0x6e, 0x1b, 0xb7, 0x0d, 0xbd, 0x4d,
		0xfc, 0x43, 0x71, 0x5c, 0x57, 0x3e, 0x85, 0x49, 0x65, 0xd3, 0x55, 0x56, 0x3d, 0xe8, 0x6d, 0x28,
		0x5f, 0x44, 0x55, 0xdc, 0xff, 0x48, 0x13, 0xf6, 0xd5, 0x1a, 0xf2, 0xc2, 0x61, 0x5f, 0xb1, 0xa9,
		0x4f, 0x4b, 0x19, 0xd9, 0xd4, 0xa7, 0xb4, 0x76, 0x2d, 0x92, 0x5c, 0xd9, 0xf7, 0x6e, 0xf1, 0xec,
		0xa1, 0xac, 0xee, 0x7b, 0xe2, 0xf1, 0xd5, 0x68, 0xb8, 0xdb, 0x3c, 0xeb, 0xc4, 0xe3, 0xc9, 0x6b,
		0xb9, 0xec, 0xcb, 0xc4, 0xb3, 0x8d, 0x2f, 0xd7, 0x2e, 0x15, 0x8b, 0xe2, 0x14, 0x16, 0xe3, 0xed,
		0xec, 0x14, 0x77, 0x2b, 0x9e, 0xe8, 0x73, 0xf4, 0x5b, 0xf4, 0x74, 0x96, 0x3b, 0x89, 0xf3, 0xaf,
		0x43, 0x37, 0x7a, 0x79, 0xf2, 0xec, 0xbc, 0x75, 0xda, 0x6e, 0xb6, 0xce, 0x0f, 0xdb, 0x6f, 0x3f,
		0x9c, 0xbc, 0x6f, 0xbe, 0x3e, 0x3a, 0x7b, 0xff, 0xb4, 0x66, 0x8b, 0xf4, 0xa6, 0x2f, 0xb1, 0xce,
		0x6b, 0xf4, 0x7e, 0xf0, 0x2d, 0x07, 0xc9, 0x6b, 0x7e, 0xe3, 0x46, 0xdd, 0x2c, 0x19, 0xaa, 0xc0,
		0xb1, 0xe2, 0x1a, 0x35, 0xd3, 0x6e, 0x7f, 0xdc, 0x73, 0x51, 0x7e, 0x9d, 0x8c, 0xa2, 0xee, 0x20,
		0xcd, 0x3b, 0x49, 0xea, 0xb2, 0xe8, 0x6a, 0x90, 0x45, 0x85, 0x9b, 0x8a, 0x9a, 0xad, 0x9b, 0xc3,
		0x68, 0x7a, 0xd2, 0xd1, 0x68, 0xe8, 0xba, 0xc9, 0x55, 0xd2, 0xfd, 0x38, 0x77, 0x9e, 0xe3, 0x6c,
		0xe6, 0xba, 0x85, 0x75, 0x42, 0x31, 0x37, 0xbd, 0x7c, 0xbf, 0x7a, 0x4b, 0xaf, 0x44, 0xa1, 0xa6,
		0x64, 0x91, 0x88, 0x2e, 0x5d, 0xb7, 0xaa, 0xb4, 0x01, 0xe0, 0x2c, 0xfa, 0xad, 0x17, 0x5e, 0xa3,
		0x17, 0x61, 0x40, 0xef, 0x23, 0x90, 0x17, 0x30, 0x0e, 0x95, 0x42, 0xf5, 0x6a, 0x2f, 0x64, 0x75,
		0x0a, 0x5d, 0xa1, 0xea, 0x35, 0x96, 0xde, 0xcb, 0x38, 0x9d, 0xfd, 0xea, 0xaa, 0xd5, 0xaf, 0xf0,
		0x9a, 0x2b, 0x64, 0x55, 0x7c, 0x89, 0x64, 0x06, 0x82, 0x88, 0x95, 0xd0, 0x25, 0x4b, 0xe5, 0xf2,
		0x25, 0x71, 0x69, 0x78, 0xa1, 0x56, 0xe2, 0x56, 0x43, 0x10, 0x2a, 0x25, 0x6b, 0xbf, 0x83, 0x74,
		0xa9, 0x81, 0x1b, 0x25, 0xfa, 0x91, 0xee, 0xe6, 0x7f, 0x16, 0xfe, 0xab, 0x1b, 0x37, 0x3d, 0x23,
		0x67, 0x99, 0xa7, 0x60, 0xe1, 0xbf, 0xaf, 0xb1, 0x09, 0x0b, 0xff, 0x1f, 0x77, 0x2d, 0x59, 0xf8,
		0xef, 0xa9, 0xe1, 0xd4, 0x37, 0xa0, 0x16, 0x49, 0xa9, 0x88, 0x31, 0x70, 0x8c, 0x81, 0xf3, 0xc1,
		0xf0, 0x16, 0x82, 0x18, 0x03, 0x27, 0x2c, 0x8e, 0x6e, 0xf7, 0x3a, 0x19, 0x6f, 0x73, 0x23, 0x6e,
		0x6e, 0xcc, 0x4d, 0x8d, 0xba, 0x8e, 0x71, 0x57, 0x32, 0xf2, 0xc5, 0x49, 0x32, 0x06, 0x4e, 0x54,
		0x24, 0x9d, 0xee, 0x1a, 0xc2, 0xe9, 0x74, 0x5f, 0xdc, 0x2d, 0x3a, 0xdd, 0x8d, 0x54, 0x8f, 0x31,
		0x70, 0xfe, 0xe8, 0x20, 0x0d, 0xef, 0x01, 0x00, 0x0f, 0xf6, 0xb9, 0x84, 0xfc, 0x0a, 0x19, 0xd8,
		0xc3, 0xc0, 0x1e, 0x72, 0x21, 0xe4, 0x42, 0xc8, 0x85, 0x90, 0x0b, 0x21, 0x17, 0xb2, 0xf1, 0x7d,
		0x65, 0xe1, 0x3f, 0xa8, 0x12, 0x54, 0xc9, 0x44, 0x24, 0x70, 0x11, 0xb8, 0x08, 0x5c, 0x04, 0x2e,
		0x02, 0x17, 0x31, 0x11, 0x49, 0xe1, 0x43, 0x9d, 0x48, 0x57, 0x3e, 0x39, 0x7a, 0x65, 0xd3, 0x55,
		0x56, 0x3d, 0x26, 0x22, 0xa1, 0x7c, 0x11, 0x05, 0x22, 0x42, 0xf9, 0xad, 0x0f, 0xe5, 0x19, 0x39,
		0xb5, 0x86, 0x3c, 0x7f, 0xc8, 0xc2, 0x73, 0xa2, 0x68, 0x69, 0xe6, 0x0f, 0x5b, 0xfe, 0xef, 0x7f,
		0x71, 0x6c, 0xf9, 0xdf, 0x38, 0x2b, 0xc4, 0x96, 0xff, 0x80, 0xb2, 0x3f, 0xd0, 0x3b, 0xa0, 0x77,
		0x3c, 0x78, 0x62, 0xd0, 0x3b, 0xa4, 0x8d, 0x33, 0xa9, 0xfb, 0x90, 0x8d, 0xb6, 0x95, 0xf1, 0x36,
		0x37, 0xe2, 0xe6, 0xc6, 0xdc, 0xd4, 0xa8, 0xeb, 0x86, 0xeb, 0xd0, 0x3b, 0xc4, 0xac, 0x2f, 0xf4,
		0x0e, 0x81, 0x1f, 0x4a, 0xda, 0x9e, 0xcc, 0x29, 0xf4, 0x0e, 0xe8, 0x1d, 0x64, 0xef, 0xc5, 0x3e,
		0x6c, 0xf9, 0x7f, 0xbc, 0x12, 0xb2, 0xe5, 0x9f, 0x60, 0x93, 0x60, 0x93, 0x60, 0x93, 0x60, 0x93,
		0x60, 0x93, 0x85, 0xb7, 0x21, 0xb9, 0x6d, 0x48, 0x83, 0x90, 0x06, 0x01, 0x3d, 0x80, 0x1e, 0x40,
		0x0f, 0xa0, 0x07, 0xd0, 0x03, 0xe8, 0xa9, 0x3f, 0xe8, 0x81, 0xd3, 0x86, 0xdb, 0xc6, 0x6d, 0xe3,
		0xb6, 0x71, 0xdb, 0xb8, 0x6d, 0x38, 0x6d, 0xe2, 0x1f, 0x8a, 0xe3, 0xba, 0xf2, 0x29, 0x4c, 0x2a,
		0x9b, 0xae, 0xb2, 0xea, 0xc1, 0x69, 0x43, 0xf9, 0x22, 0xaa, 0xe2, 0xfe, 0x47, 0x9a, 0x50, 0xae,
		0xd6, 0x90, 0xe7, 0x39, 0xe5, 0x8a, 0xd5, 0xfe, 0x5a, 0x1a, 0xb8, 0x85, 0xab, 0xfd, 0x57, 0x69,
		0x9c, 0xe7, 0xfb, 0xfc, 0x3f, 0xa4, 0x77, 0xb6, 0xf9, 0x07, 0xb3, 0xc5, 0xff, 0x67, 0xd9, 0xed,
		0x7b, 0x71, 0xe6, 0xba, 0x2e, 0xb9, 0x11, 0xec, 0x4e, 0x5a, 0xdd, 0x8d, 0x54, 0x88, 0x65, 0x1f,
		0x9f, 0x55, 0xc6, 0x8e, 0x7d, 0x7c, 0xe1, 0x65, 0xdc, 0xd8, 0xc7, 0x77, 0xef, 0xc9, 0xb0, 0x8f,
		0xcf, 0x43, 0x43, 0xa9, 0x66, 0x30, 0x35, 0x0d, 0xa7, 0xbe, 0x01, 0xd5, 0x36, 0xa4, 0x66, 0x06,
		0xd5, 0xcc, 0xb0, 0x9a, 0x18, 0xd8, 0x7a, 0x04, 0xdf, 0x10, 0xb6, 0xa5, 0x8d, 0x33, 0x75, 0xe9,
		0x90, 0x8d, 0xb6, 0x95, 0xf1, 0x36, 0x37, 0xe2, 0xe6, 0xc6, 0xdc, 0xd4, 0xa8, 0xeb, 0x18, 0x77,
		0x25, 0x23, 0x5f, 0x9c, 0x24, 0x84, 0x6d, 0x51, 0x91, 0xd4, 0xa4, 0x35, 0x84, 0x53, 0x93, 0x5e,
		0xdc, 0x2d, 0x6a, 0xd2, 0x46, 0xaa, 0x07, 0x61, 0xdb, 0x1f, 0x1d, 0xa4, 0x34, 0x1d, 0x00, 0xf0,
		0x60, 0xdc, 0x6a, 0xc8, 0xaf, 0x10, 0x6a, 0x1d, 0xd4, 0x3a, 0x72, 0x21, 0xe4, 0x42, 0xc8, 0x85,
		0x90, 0x0b, 0x21, 0x17, 0xb2, 0xf1, 0x7d, 0x65, 0x1f, 0x1f, 0xa8, 0x12, 0x54, 0x09, 0x77, 0x11,
		0x5c, 0x04, 0x2e, 0x02, 0x17, 0x81, 0x8b, 0xc0, 0x45, 0x70, 0x17, 0x15, 0x3e, 0xd4, 0x89, 0x74,
		0xe5, 0x93, 0xa3, 0x57, 0x36, 0x5d, 0x65, 0xd5, 0x83, 0xbb, 0x88, 0xf2, 0x45, 0x14, 0x88, 0x08,
		0xe5, 0xb7, 0x3e, 0x94, 0x87, 0x1c, 0xba, 0x86, 0x3c, 0xbf, 0xa9, 0x7a, 0x05, 0xf3, 0x8a, 0xc5,
		0x7c, 0xf7, 0xbf, 0x41, 0x16, 0xf3, 0x6d, 0x9c, 0x1e, 0x62, 0x31, 0x5f, 0x40, 0x69, 0x20, 0x78,
		0x1e, 0xf0, 0x3c, 0x1e, 0x3c, 0x31, 0x78, 0x1e, 0xd2, 0xc6, 0x99, 0x1c, 0x7e, 0xc8, 0x46, 0xdb,
		0xca, 0x78, 0x9b, 0x1b, 0x71, 0x73, 0x63, 0x6e, 0x6a, 0xd4, 0x75, 0xe3, 0x76, 0x78, 0x1e, 0x62,
		0xd6, 0x17, 0x9e, 0x87, 0xc0, 0x0f, 0x25, 0x7f, 0x4f, 0x0a, 0x15, 0x9e, 0x07, 0x3c, 0x0f, 0xd2,
		0xf8, 0x62, 0x1f, 0x16, 0xf3, 0x3d, 0x5e, 0x09, 0x59, 0xcc, 0x47, 0xb0, 0x49, 0xb0, 0x49, 0xb0,
		0x49, 0xb0, 0x49, 0xb0, 0xc9, 0x8e, 0x9a, 0x90, 0xdc, 0x36, 0xec, 0x41, 0xd8, 0x83, 0x80, 0x1e,
		0x40, 0x0f, 0xa0, 0x07, 0xd0, 0x03, 0xe8, 0x01, 0xf4, 0xd4, 0x1f, 0xf4, 0x40, 0x6e, 0xc3, 0x6d,
		0xe3, 0xb6, 0x71, 0xdb, 0xb8, 0x6d, 0xdc, 0x36, 0xe4, 0x36, 0xf1, 0x0f, 0xc5, 0x71, 0x5d, 0xf9,
		0x14, 0x26, 0x95, 0x4d, 0x57, 0x59, 0xf5, 0x20, 0xb7, 0xa1, 0x7c, 0x11, 0x55, 0x71, 0xff, 0x23,
		0x4d, 0xb8, 0x57, 0x6b, 0xc8, 0x0b, 0x85, 0x7b, 0xc5, 0x86, 0x3e, 0x2d, 0x55, 0x64, 0x43, 0x9f,
		0xca, 0xc2, 0xb5, 0x48, 0x6e, 0x55, 0xdf, 0xbb, 0xc5, 0x93, 0x87, 0xb2, 0xb2, 0xef, 0x89, 0xc7,
		0xd7, 0xa2, 0xe1, 0x6e, 0xf3, 0xac, 0x13, 0x8f, 0x27, 0x2f, 0xe5, 0xb2, 0x2f, 0x13, 0xc9, 0x36,
		0xbe, 0x5c, 0xbb, 0x54, 0x2c, 0x7e, 0x53, 0x58, 0x88, 0xb7, 0xb3, 0x53, 0xdc, 0xab, 0x78, 0xa2,
		0xcd, 0xd1, 0x6f, 0xd1, 0xd3, 0x59, 0xd6, 0x24, 0xce, 0xbf, 0x0e, 0xdd, 0xe8, 0xe5, 0xc9, 0xb3,
		0xf3, 0xd6, 0x69, 0xbb, 0xd9, 0x3a, 0x3f, 0x6c, 0x7f, 0x38, 0x6d, 0xbe, 0x3e, 0x3a, 0x7b, 0xff,
		0xb4, 0x66, 0xeb, 0xf3, 0xa6, 0xaf, 0xb0, 0xce, 0xcb, 0xf3, 0x7e, 0xe8, 0x1d, 0x07, 0xc9, 0x66,
		0x7e, 0xe3, 0x46, 0xdd, 0x2c, 0x19, 0xaa, 0x80, 0xb0, 0xe2, 0x0a, 0x35, 0xd3, 0x6e, 0x7f, 0xdc,
		0x73, 0x51, 0x7e, 0x9d, 0x8c, 0xa2, 0xee, 0x20, 0xcd, 0x3b, 0x49, 0xea, 0xb2, 0xe8, 0x6a, 0x90,
		0x45, 0x73, 0xf7, 0x14, 0x35, 0x5b, 0x37, 0x87, 0xd1, 0xf4, 0x94, 0xa3, 0xd1, 0xd0, 0x75, 0x93,
		0xab, 0xa4, 0xfb, 0x71, 0xee, 0x32, 0xc7, 0xd9, 0xcc, 0x61, 0x0b, 0xeb, 0x83, 0x62, 0x3e, 0x7a,
		0xf9, 0x6e, 0xf5, 0x96, 0x5e, 0x88, 0x42, 0x1d, 0xc9, 0x22, 0xf9, 0x5c, 0xba, 0x6a, 0xd5, 0xe8,
		0x02, 0x60, 0x59, 0xf4, 0x5b, 0x2f, 0xbc, 0x46, 0x2d, 0xc2, 0x20, 0xde, 0x3f, 0xf0, 0x2e, 0x60,
		0x18, 0x2a, 0x84, 0xe7, 0xd5, 0x5e, 0xc6, 0xea, 0x94, 0xb9, 0x42, 0xb5, 0x6b, 0x64, 0x83, 0x71,
		0xee, 0xe2, 0x91, 0xeb, 0xbb, 0x69, 0xa6, 0x30, 0x1e, 0x4c, 0x0d, 0x76, 0xf5, 0x84, 0xf4, 0xc2,
		0x65, 0xde, 0x27, 0xb0, 0xe2, 0xab, 0x24, 0x33, 0x08, 0x44, 0xac, 0x74, 0x2e, 0x59, 0x22, 0x97,
		0x2f, 0x85, 0x4b, 0x43, 0x0c, 0xb5, 0xd2, 0xb6, 0x1a, 0x8a, 0x50, 0x29, 0x55, 0xfb, 0x1d, 0xa2,
		0x4b, 0x0d, 0xda, 0x90, 0xde, 0x60, 0xad, 0xb3, 0xb9, 0x9a, 0xd5, 0xfe, 0x3e, 0x18, 0x36, 0xcb,
		0xdc, 0x04, 0xab, 0xfd, 0x7d, 0x8d, 0x4a, 0x42, 0x5d, 0xed, 0xdf, 0xe9, 0xdd, 0xb8, 0x2c, 0x4f,
		0x46, 0x2e, 0x4e, 0xd2, 0x4e, 0x37, 0x4f, 0x6e, 0x5c, 0x3c, 0x45, 0x63, 0x23, 0xbd, 0x84, 0xc9,
		0xfd, 0x8f, 0x20, 0x3d, 0xd6, 0x49, 0x91, 0x61, 0xa2, 0xc1, 0x2c, 0xb9, 0xd0, 0x19, 0xa4, 0xb7,
		0xab, 0x35, 0x48, 0x6f, 0x97, 0x41, 0x7a, 0x61, 0xa4, 0xf8, 0x22, 0x06, 0xe9, 0x31, 0x48, 0xef,
		0x31, 0x27, 0xa6, 0xd6, 0x42, 0x6a, 0xc0, 0xf8, 0x50, 0x62, 0x7a, 0xd4, 0xad, 0x6f, 0xc5, 0x6c,
		0x88, 0x74, 0x98, 0x03, 0x7a, 0x3b, 0xfd, 0x2f, 0x9d, 0xaf, 0xa3, 0xe9, 0x69, 0x75, 0x32, 0x17,
		0x7f, 0x56, 0x98, 0xe1, 0xf1, 0x0d, 0xa8, 0xdd, 0x95, 0x0d, 0x42, 0x03, 0xa1, 0x81, 0xd0, 0x40,
		0x68, 0x20, 0x34, 0x10, 0x1a, 0x08, 0x0d, 0x84, 0x06, 0x42, 0x6b, 0xb8, 0xb4, 0x73, 0xd9, 0x77,
		0x71, 0x27, 0xf9, 0x34, 0xd4, 0x83, 0x66, 0xcb, 0x42, 0xc1, 0x64, 0x60, 0x32, 0x30, 0x19, 0x98,
		0x0c, 0x4c, 0x06, 0x26, 0x03, 0x93, 0x81, 0xc9, 0xc0, 0x64, 0x0d, 0x77, 0x9b, 0xbb, 0x2c, 0xed,
		0xf4, 0x8b, 0xdc, 0xd5, 0xb4, 0xc0, 0x98, 0xc5, 0x89, 0x62, 0xf6, 0xec, 0x6f, 0x9e, 0xa1, 0x4e,
		0x88, 0x6d, 0xe2, 0x49, 0x00, 0x6c, 0x00, 0x36, 0x00, 0x1b, 0x80, 0x0d, 0xc0, 0x06, 0x60, 0x03,
		0xb0, 0x01, 0xd8, 0xd6, 0x3f, 0xae, 0xe4, 0x53, 0x3a, 0xc8, 0x5c, 0xdc, 0x19, 0xc5, 0xc3, 0x4e,
		0x7e, 0x1d, 0xf7, 0x5d, 0xfa, 0x69, 0x4a, 0x50, 0x51, 0xc2, 0x6a, 0xab, 0xc5, 0x93, 0x58, 0x03,
		0xa7, 0x81, 0xd3, 0xc0, 0x69, 0xe0, 0x34, 0x70, 0x1a, 0x38, 0x0d, 0x9c, 0x06, 0x4e, 0x5b, 0x00,
		0xa5, 0xd4, 0xdd, 0xe6, 0xf1, 0xf5, 0x60, 0x18, 0x27, 0x9f, 0x86, 0xf1, 0x67, 0x97, 0x67, 0x49,
		0x57, 0x1d, 0xac, 0xad, 0x7a, 0x06, 0x10, 0x1b, 0x88, 0x0d, 0xc4, 0x06, 0x62, 0x03, 0xb1, 0x81,
		0xd8, 0x40, 0x6c, 0x20, 0xb6, 0x50, 0x10, 0x1b, 0x63, 0x26, 0x57, 0xc8, 0x31, 0x9e, 0x54, 0x73,
		0xcf, 0x90, 0x92, 0x5f, 0xe6, 0x94, 0xff, 0x50, 0x46, 0x34, 0x8a, 0x4c, 0xd7, 0xe9, 0xe4, 0x4e,
		0x7e, 0xb6, 0xc2, 0x4c, 0x4c, 0xe0, 0xa3, 0x15, 0xf6, 0x19, 0xad, 0xe0, 0x0f, 0xf4, 0x64, 0xb4,
		0xc2, 0x16, 0xbb, 0x2d, 0x46, 0x2b, 0x90, 0x19, 0x21, 0x33, 0x42, 0x66, 0x84, 0xcc, 0x08, 0x99,
		0x11, 0x32, 0x23, 0x64, 0x46, 0x98, 0x08, 0xf0, 0x03, 0xf8, 0x82, 0x89, 0x00, 0x00, 0x0b, 0x80,
		0x05, 0xc0, 0x02, 0x60, 0x01, 0xb0, 0x00, 0x58, 0xd4, 0x0b, 0x58, 0x40, 0x64, 0x07, 0x4a, 0x00,
		0x25, 0x80, 0x12, 0x40, 0x09, 0xa0, 0x04, 0x50, 0x02, 0x28, 0xb1, 0x09, 0x94, 0x80, 0x7f, 0x0d,
		0xff, 0x1a, 0x9c, 0x01, 0xce, 0x00, 0x67, 0x80, 0x33, 0xc0, 0x19, 0xe0, 0x0c, 0xa1, 0xb3, 0x81,
		0x36, 0x4c, 0x1a, 0x03, 0x78, 0x01, 0xbc, 0x00, 0x5e, 0x00, 0x2f, 0x80, 0x17, 0xc0, 0x0b, 0x19,
		0x78, 0x01, 0xdb, 0x15, 0xa0, 0x01, 0xd0, 0x00, 0x68, 0x00, 0x34, 0x00, 0x1a, 0x00, 0x8d, 0xad,
		0x05, 0x1a, 0x90, 0x34, 0x57, 0xc8, 0xf1, 0x94, 0xa4, 0x39, 0xe3, 0x0e, 0x86, 0xc2, 0xd1, 0xf4,
		0x7a, 0x47, 0xb7, 0xb0, 0x26, 0x79, 0xaa, 0x41, 0x0d, 0x11, 0xde, 0x6c, 0x36, 0xee, 0xe6, 0xe9,
		0xdc, 0xf4, 0x9e, 0xce, 0x1e, 0xbd, 0x39, 0x7f, 0xf2, 0x76, 0x6b, 0xfe, 0xbc, 0xed, 0x57, 0x9f,
		0x86, 0xed, 0x3f, 0xa6, 0xcf, 0xdb, 0x3e, 0xba, 0x4a, 0xce, 0x3a, 0x57, 0x49, 0xfb, 0xdd, 0xe4,
		0x21, 0xcf, 0x16, 0xcf, 0xf8, 0xe7, 0xfc, 0x11, 0x9f, 0xf8, 0xa9, 0x84, 0x15, 0x2a, 0x60, 0x63,
		0x94, 0xe5, 0x2e, 0x1e, 0x0e, 0xfa, 0x49, 0xf7, 0x6b, 0x9c, 0x0c, 0x6f, 0x0e, 0x2a, 0x57, 0xc1,
		0x6f, 0x6c, 0xe3, 0xef, 0x25, 0x55, 0x7c, 0x8d, 0x64, 0x08, 0xc7, 0x62, 0xd1, 0x80, 0x24, 0xfa,
		0x97, 0x47, 0xfb, 0xd2, 0xe8, 0x5e, 0x0d, 0xcd, 0xab, 0xa1, 0x77, 0x15, 0xb4, 0xee, 0xb7, 0xa3,
		0x93, 0x22, 0x08, 0xcf, 0x35, 0x24, 0xee, 0x27, 0x9f, 0x93, 0x5c, 0x7e, 0x6c, 0x42, 0x49, 0x5a,
		0xe0, 0xd3, 0x13, 0x76, 0x99, 0x9e, 0xe0, 0x4f, 0x2a, 0x83, 0xe9, 0x09, 0x5b, 0x1c, 0x4f, 0x8a,
		0x4f, 0x4f, 0xe8, 0x2e, 0xee, 0xbc, 0x52, 0x5e, 0x7d, 0x2e, 0x4f, 0x27, 0x27, 0xbc, 0x47, 0x4e,
		0xd8, 0x63, 0x03, 0xaa, 0x6d, 0x48, 0xcd, 0x0c, 0xaa, 0x99, 0x61, 0x35, 0x31, 0xb0, 0xf2, 0x29,
		0xc1, 0x48, 0x21, 0x27, 0x2c, 0x6d, 0x78, 0x0b, 0x41, 0x9f, 0x3b, 0xb7, 0xf1, 0x4c, 0x0b, 0x15,
		0x26, 0xd6, 0xdc, 0xb9, 0xe4, 0x25, 0xe9, 0x4a, 0xca, 0xa8, 0x53, 0xb0, 0x53, 0x37, 0xd2, 0x16,
		0xc6, 0xda, 0xce, 0x68, 0x5b, 0x19, 0x6f, 0x73, 0x23, 0x6e, 0x6e, 0xcc, 0x4d, 0x8d, 0xba, 0x8e,
		0x71, 0x57, 0x32, 0xf2, 0xc5, 0x49, 0xaa, 0x15, 0x00, 0xef, 0xdc, 0xd7, 0x71, 0x92, 0xe6, 0xcf,
		0xf6, 0x35, 0xef, 0xeb, 0xdc, 0xfa, 0xbe, 0x50, 0x14, 0xf9, 0xae, 0x93, 0x7e, 0x72, 0x2a, 0xfd,
		0x2c, 0xcb, 0x1f, 0x5d, 0x7b, 0x34, 0xfd, 0xa1, 0x6f, 0x93, 0x54, 0xdd, 0x10, 0x16, 0xc2, 0xcf,
		0x3b, 0xfd, 0xb1, 0xd3, 0x73, 0x73, 0x77, 0xe4, 0xff, 0x9e, 0x75, 0xa6, 0x65, 0x92, 0x37, 0xc9,
		0xa7, 0x24, 0x1f, 0x19, 0x3e, 0xc8, 0xa9, 0xfb, 0xd4, 0xc9, 0x93, 0x9b, 0xc9, 0x59, 0x4c, 0xdb,
		0x9b, 0xd4, 0x9f, 0xe2, 0xaf, 0x9f, 0x0d, 0x54, 0xaf, 0x73, 0x6b, 0xaf, 0x7a, 0x07, 0xfb, 0xbf,
		0x1e, 0xfc, 0x7a, 0xf8, 0x62, 0xff, 0xd7, 0xe7, 0xe8, 0xa0, 0xb5, 0x0e, 0x3e, 0xa9, 0xa7, 0xb4,
		0x8b, 0x5a, 0x01, 0x0f, 0xe5, 0x21, 0xee, 0x85, 0x5c, 0xb3, 0x61, 0xee, 0x7a, 0x0a, 0xa3, 0xf0,
		0x0a, 0x27, 0x81, 0xc7, 0x8d, 0x4b, 0xf3, 0x38, 0x77, 0x9d, 0xac, 0x37, 0xf8, 0x92, 0xea, 0xc7,
		0xef, 0x77, 0x9e, 0x40, 0x49, 0x71, 0x35, 0x9b, 0x94, 0x0b, 0xa1, 0x0a, 0xcd, 0xca, 0x85, 0x99,
		0x21, 0x17, 0x42, 0x2e, 0x84, 0x5c, 0x08, 0xb9, 0x10, 0x72, 0x21, 0x6a, 0xf7, 0x55, 0xaf, 0x29,
		0xfa, 0x7b, 0xf3, 0x2b, 0xdc, 0x1c, 0x0d, 0xaa, 0x04, 0x55, 0xae, 0x71, 0x8c, 0x5f, 0x3a, 0x59,
		0x9a, 0xa4, 0x9f, 0xe2, 0xfc, 0x3a, 0x73, 0xa3, 0xeb, 0x41, 0xbf, 0x17, 0x0f, 0xbb, 0xb9, 0x3e,
		0xb4, 0x5c, 0xfd, 0x18, 0xe0, 0x22, 0x70, 0x11, 0xb8, 0x08, 0x5c, 0x04, 0x2e, 0xd2, 0x8b, 0xf1,
		0x5d, 0xd6, 0x75, 0x69, 0xde, 0xf9, 0xe4, 0x0c, 0xa0, 0xd1, 0x73, 0xea, 0x44, 0xd5, 0xff, 0x50,
		0xea, 0x44, 0xe4, 0xe8, 0xb7, 0xb9, 0x4e, 0xb4, 0xb7, 0x8b, 0xf2, 0x51, 0x20, 0x92, 0xf9, 0x50,
		0x20, 0x22, 0x94, 0xf7, 0x40, 0x42, 0xdd, 0xd6, 0x3f, 0x1b, 0xd3, 0x85, 0xbf, 0xa7, 0x89, 0xfe,
		0xb2, 0x4c, 0xb7, 0x12, 0xdd, 0x0d, 0x2c, 0xaf, 0x2e, 0x92, 0xa3, 0x94, 0x64, 0x77, 0x06, 0xdf,
		0x09, 0x55, 0x24, 0x77, 0x07, 0x7f, 0x1f, 0x99, 0xa8, 0x91, 0x3b, 0xf6, 0x21, 0x77, 0x84, 0x93,
		0xfb, 0x81, 0xdc, 0x01, 0xb9, 0xe3, 0xc1, 0x13, 0x83, 0xdc, 0x21, 0x6d, 0x9c, 0x49, 0xdc, 0x87,
		0x6c, 0xb4, 0xad, 0x8c, 0xb7, 0xb9, 0x11, 0x37, 0x37, 0xe6, 0xa6, 0x46, 0x5d, 0x37, 0x58, 0x87,
		0xdc, 0x21, 0x66, 0x7d, 0x21, 0x77, 0x08, 0xfc, 0x50, 0x92, 0xf6, 0xe4, 0x4d, 0x21, 0x77, 0x40,
		0xee, 0x20, 0x77, 0x2f, 0xf6, 0xb9, 0xa0, 0x4b, 0xec, 0xd1, 0x4a, 0xb8, 0x9c, 0x00, 0x8d, 0xdd,
		0x6d, 0xd7, 0xb9, 0x9e, 0xc2, 0x4a, 0xfa, 0x3b, 0x18, 0x67, 0xf5, 0x63, 0x10, 0x6c, 0x12, 0x6c,
		0x12, 0x6c, 0x12, 0x6c, 0x12, 0x6c, 0xaa, 0xdd, 0xd7, 0xfa, 0x77, 0xcf, 0x43, 0x19, 0xac, 0xca,
		0x63, 0x43, 0x19, 0x94, 0x00, 0xaf, 0x80, 0x1e, 0x40, 0x0f, 0xa0, 0x07, 0xd0, 0x03, 0xe8, 0x01,
		0xf4, 0x00, 0x7a, 0x96, 0xcf, 0x0c, 0x46, 0x1b, 0x6e, 0x1b, 0xb7, 0x8d, 0xdb, 0xc6, 0x6d, 0xe3,
		0xb6, 0x61, 0xb4, 0x89, 0x7f, 0x28, 0x8e, 0xeb, 0xca, 0xa7, 0x30, 0xa9, 0x6c, 0xba, 0xca, 0xaa,
		0x07, 0xa3, 0x0d, 0xe5, 0x8b, 0xa8, 0x8a, 0xfb, 0x1f, 0x69, 0x42, 0xb8, 0x5a, 0x43, 0x9e, 0xd7,
		0x84, 0x2b, 0xc1, 0x3d, 0x9f, 0xf2, 0xda, 0xc2, 0x46, 0xd9, 0xd0, 0xf4, 0xad, 0x21, 0xca, 0x90,
		0xfb, 0xd1, 0xed, 0xa0, 0x67, 0x59, 0xee, 0x5a, 0xd3, 0x27, 0x6e, 0x0e, 0x6f, 0x0e, 0xda, 0xb3,
		0x04, 0xc8, 0xc9, 0xf4, 0x79, 0x43, 0xd9, 0x80, 0xfb, 0xb3, 0xec, 0xd6, 0xbd, 0x38, 0x73, 0x5d,
		0x97, 0xdc, 0x08, 0xf6, 0x25, 0xad, 0xee, 0x43, 0x2a, 0xc4, 0xb2, 0x87, 0xcf, 0x2a, 0x57, 0xc7,
		0x1e, 0xbe, 0xf0, 0x72, 0x6d, 0xec, 0xe1, 0xbb, 0xf7, 0x64, 0xd8, 0xc3, 0xe7, 0xa1, 0xa1, 0x54,
		0x33, 0x98, 0x9a, 0x86, 0x53, 0xdf, 0x80, 0x6a, 0x1b, 0x52, 0x33, 0x83, 0x6a, 0x66, 0x58, 0x4d,
		0x0c, 0x6c, 0x3d, 0xc2, 0x6e, 0xa8, 0xda, 0xd2, 0xc6, 0x99, 0x8a, 0x74, 0xc8, 0x46, 0xdb, 0xca,
		0x78, 0x9b, 0x1b, 0x71, 0x73, 0x63, 0x6e, 0x6a, 0xd4, 0x75, 0x8c, 0xbb, 0x92, 0x91, 0x2f, 0x4e,
		0x12, 0xaa, 0xb6, 0xa8, 0x48, 0xaa, 0xd1, 0x1a, 0xc2, 0xa9, 0x46, 0x2f, 0xee, 0x16, 0xd5, 0x68,
		0x23, 0xd5, 0x83, 0xaa, 0xed, 0x8f, 0x0e, 0x52, 0x94, 0x0e, 0x00, 0x78, 0x30, 0x66, 0x35, 0xe4,
		0x57, 0x08, 0xa9, 0x0e, 0x52, 0x1d, 0xb9, 0x10, 0x72, 0x21, 0xe4, 0x42, 0xc8, 0x85, 0x90, 0x0b,
		0xd9, 0xf8, 0xbe, 0xb2, 0x87, 0x0f, 0x54, 0x09, 0xaa, 0x84, 0xb5, 0x08, 0x2e, 0x02, 0x17, 0x81,
		0x8b, 0xc0, 0x45, 0xe0, 0x22, 0x58, 0x8b, 0x0a, 0x1f, 0xea, 0x44, 0xba, 0xf2, 0xc9, 0xd1, 0x2b,
		0x9b, 0xae, 0xb2, 0xea, 0xc1, 0x5a, 0x44, 0xf9, 0x22, 0x0a, 0x44, 0x84, 0xf2, 0x5b, 0x1f, 0xca,
		0x43, 0x0b, 0x5d, 0x43, 0x9e, 0xcf, 0x34, 0xbd, 0x82, 0x77, 0xc5, 0x42, 0xbe, 0xfb, 0xdf, 0x1f,
		0x0b, 0xf9, 0x36, 0x4e, 0x0e, 0xb1, 0x90, 0x2f, 0xa0, 0x24, 0x10, 0x2c, 0x0f, 0x58, 0x1e, 0x0f,
		0x9e, 0x18, 0x2c, 0x0f, 0x69, 0xe3, 0x4c, 0x06, 0x3f, 0x64, 0xa3, 0x6d, 0x65, 0xbc, 0xcd, 0x8d,
		0xb8, 0xb9, 0x31, 0x37, 0x35, 0xea, 0xba, 0x51, 0x3b, 0x2c, 0x0f, 0x31, 0xeb, 0x0b, 0xcb, 0x43,
		0xe0, 0x87, 0x92, 0xbd, 0x27, 0x81, 0x0a, 0xcb, 0x03, 0x96, 0x07, 0x49, 0x7c, 0xb1, 0x0f, 0x0b,
		0xf9, 0x1e, 0xaf, 0x84, 0x2c, 0xe4, 0x23, 0xd8, 0x24, 0xd8, 0x24, 0xd8, 0x24, 0xd8, 0x24, 0xd8,
		0x64, 0x37, 0x4d, 0x48, 0x6e, 0x1b, 0xee, 0x20, 0xdc, 0x41, 0x40, 0x0f, 0xa0, 0x07, 0xd0, 0x03,
		0xe8, 0x01, 0xf4, 0x00, 0x7a, 0xea, 0x0f, 0x7a, 0xa0, 0xb6, 0xe1, 0xb6, 0x71, 0xdb, 0xb8, 0x6d,
		0xdc, 0x36, 0x6e, 0x1b, 0x6a, 0x9b, 0xf8, 0x87, 0xe2, 0xb8, 0xae, 0x7c, 0x0a, 0x93, 0xca, 0xa6,
		0xab, 0xac, 0x7a, 0x50, 0xdb, 0x50, 0xbe, 0x88, 0xaa, 0xb8, 0xff, 0x91, 0x26, 0xcc, 0xab, 0x35,
		0xe4, 0x85, 0xc1, 0xbc, 0x62, 0x33, 0x9f, 0x96, 0x22, 0xb2, 0x99, 0x4f, 0x61, 0xd5, 0x5a, 0x24,
		0xb5, 0xa2, 0xef, 0xdd, 0xe2, 0xb9, 0x43, 0x59, 0xd5, 0xf7, 0xc4, 0xe3, 0x2b, 0xd1, 0x70, 0xb7,
		0x79, 0xd6, 0x89, 0xc7, 0x93, 0x57, 0x72, 0xd9, 0x97, 0x89, 0x61, 0x1b, 0x5f, 0xae, 0x5d, 0x2a,
		0x16, 0xb9, 0x29, 0x2c, 0xc2, 0xdb, 0xd9, 0x29, 0xee, 0x54, 0x3c, 0xd1, 0xe5, 0xe8, 0xb7, 0xe8,
		0xe9, 0x2c, 0x5f, 0x12, 0xe7, 0x5f, 0x87, 0x6e, 0xf4, 0xf2, 0xec, 0xdd, 0xfb, 0xe3, 0x76, 0xeb,
		0xcf, 0x93, 0xe6, 0xeb, 0xff, 0x6a, 0x37, 0x5b, 0xe7, 0x07, 0x4f, 0x6b, 0xb6, 0x34, 0x6f, 0xfa,
		0x02, 0xeb, 0xbc, 0x32, 0xef, 0x07, 0xde, 0x70, 0x90, 0x1c, 0xe6, 0x37, 0x6e, 0xd4, 0xcd, 0x92,
		0xa1, 0x0a, 0xf4, 0x2a, 0xae, 0xcf, 0x9f, 0x69, 0xff, 0x6b, 0x94, 0xa4, 0xdd, 0xfe, 0xb8, 0xe7,
		0xa2, 0xfc, 0x3a, 0x19, 0x45, 0xdd, 0x41, 0x9a, 0x77, 0x92, 0xd4, 0x65, 0xd1, 0x44, 0xb3, 0xa2,
		0xfc, 0xda, 0x45, 0x9d, 0x5e, 0x2f, 0x73, 0xa3, 0x51, 0x74, 0xd5, 0xf9, 0x9c, 0x4c, 0xfe, 0xf3,
		0xd1, 0xc7, 0x74, 0x34, 0x74, 0xdd, 0xe4, 0x2a, 0x71, 0xbd, 0x28, 0x1f, 0x44, 0x97, 0x2e, 0x3a,
		0x7b, 0x17, 0xbf, 0x3f, 0x8e, 0x66, 0x4e, 0x21, 0x3a, 0x3b, 0xfa, 0xbd, 0x19, 0x5d, 0x0d, 0xb2,
		0xe9, 0x5f, 0x6e, 0xb6, 0x6e, 0x0e, 0xa2, 0x71, 0x9a, 0x74, 0x3b, 0xa3, 0xfc, 0x63, 0x5a, 0xfe,
		0xaa, 0x1d, 0x69, 0xc5, 0x55, 0xcc, 0x5f, 0x2f, 0xdf, 0xc9, 0xde, 0xd2, 0xab, 0x54, 0xa8, 0x3b,
		0x59, 0x24, 0xab, 0x4b, 0x57, 0xd4, 0x5a, 0x8b, 0x00, 0xe6, 0xa2, 0xdf, 0x7a, 0xe1, 0x35, 0x4a,
		0x12, 0x0e, 0x18, 0x7c, 0x0b, 0x14, 0x04, 0x0c, 0x4a, 0x65, 0xa1, 0x40, 0xb5, 0x17, 0xb1, 0x3a,
		0x45, 0xae, 0x50, 0xe5, 0x1a, 0xdf, 0xbd, 0x8f, 0xc3, 0xca, 0x95, 0xee, 0xdb, 0x94, 0x91, 0xef,
		0x25, 0x55, 0x7c, 0x71, 0x64, 0x06, 0x8c, 0x88, 0x95, 0xe4, 0x25, 0x4b, 0xef, 0xf2, 0x25, 0x76,
		0x69, 0x28, 0xa2, 0x56, 0x32, 0x57, 0x43, 0x1b, 0x2a, 0x25, 0x70, 0xbf, 0x13, 0x00, 0x52, 0x03,
		0x3c, 0x4a, 0x74, 0x26, 0x39, 0x95, 0x5c, 0x45, 0x9e, 0x92, 0xd2, 0x4a, 0xd9, 0x69, 0x49, 0xe2,
		0x7d, 0x46, 0x1a, 0x7d, 0x45, 0x7a, 0x7d, 0x44, 0x16, 0x79, 0x10, 0x95, 0x3e, 0x21, 0xdb, 0x4c,
		0x88, 0x74, 0x1f, 0x50, 0x58, 0x85, 0x02, 0xe9, 0xe9, 0x46, 0x8b, 0x65, 0xfe, 0x6a, 0xb9, 0x98,
		0xb9, 0xbc, 0x9a, 0x8d, 0x95, 0xdb, 0x65, 0xac, 0x5c, 0x18, 0x09, 0xac, 0x88, 0xb1, 0x72, 0x8c,
		0x95, 0xf3, 0xc1, 0xf0, 0x16, 0x82, 0x18, 0x2b, 0x27, 0x2c, 0x8e, 0xee, 0xf9, 0x3a, 0x19, 0x6f,
		0x73, 0x23, 0x6e, 0x6e, 0xcc, 0x4d, 0x8d, 0xba, 0x8e, 0x71, 0x57, 0x32, 0xf2, 0xc5, 0x49, 0x32,
		0x56, 0x4e, 0x54, 0x24, 0x9d, 0xf3, 0x1a, 0xc2, 0xe9, 0x9c, 0x5f, 0xdc, 0x2d, 0x3a, 0xe7, 0x8d,
		0x54, 0x8f, 0xb1, 0x72, 0xfe, 0xe8, 0x20, 0x0d, 0xf4, 0x01, 0x00, 0x0f, 0x76, 0xc3, 0x84, 0xfc,
		0x0a, 0x19, 0x00, 0xc4, 0x00, 0x20, 0x72, 0x21, 0xe4, 0x42, 0xc8, 0x85, 0x90, 0x0b, 0x21, 0x17,
		0xb2, 0xf1, 0x7d, 0xad, 0xff, 0x00, 0x20, 0x50, 0x25, 0xa8, 0xf2, 0xe1, 0x63, 0x64, 0xc2, 0x12,
		0xb8, 0x08, 0x5c, 0x04, 0x2e, 0x02, 0x17, 0x81, 0x8b, 0x98, 0xb0, 0x24, 0xfe, 0xa1, 0x4e, 0xa4,
		0x2b, 0x9f, 0x1c, 0xbd, 0xb2, 0xe9, 0x2a, 0xab, 0x1e, 0x13, 0x96, 0x50, 0xbe, 0x88, 0x02, 0x11,
		0xa1, 0xfc, 0xd6, 0x87, 0xf2, 0x8c, 0xb0, 0x5a, 0x43, 0x9e, 0x5f, 0x04, 0xe1, 0xc3, 0xd2, 0x24,
		0xa1, 0x5f, 0xe6, 0xa4, 0x82, 0x50, 0x19, 0xf2, 0xa2, 0xf3, 0x8f, 0x3a, 0xb9, 0xd3, 0x63, 0x77,
		0xcc, 0xc4, 0xd5, 0x8c, 0xdc, 0xb1, 0x0f, 0xb9, 0x23, 0x9c, 0xdc, 0x0f, 0xe4, 0x0e, 0xc8, 0x1d,
		0x0f, 0x9e, 0x18, 0xe4, 0x0e, 0x69, 0xe3, 0x4c, 0xe2, 0x3e, 0x64, 0xa3, 0x6d, 0x65, 0xbc, 0xcd,
		0x8d, 0xb8, 0xb9, 0x31, 0x37, 0x35, 0xea, 0xba, 0xc1, 0x3a, 0xe4, 0x0e, 0x31, 0xeb, 0x0b, 0xb9,
		0x43, 0xe0, 0x87, 0x92, 0xb4, 0x27, 0x6f, 0x0a, 0xb9, 0x03, 0x72, 0x07, 0xb9, 0x7b, 0xb1, 0xcf,
		0x05, 0x5d, 0x62, 0x8f, 0x56, 0xc2, 0xd5, 0xcb, 0xfa, 0x2d, 0x08, 0x08, 0x2b, 0x1e, 0x83, 0x60,
		0x93, 0x60, 0x93, 0x60, 0x93, 0x60, 0x93, 0x60, 0x53, 0xed, 0xbe, 0xb2, 0x3e, 0x37, 0x14, 0xb7,
		0x0d, 0x65, 0x10, 0xca, 0x20, 0xa0, 0x07, 0xd0, 0x03, 0xe8, 0x01, 0xf4, 0x00, 0x7a, 0x00, 0x3d,
		0xf5, 0x07, 0x3d, 0x30, 0xda, 0x70, 0xdb, 0xb8, 0x6d, 0xdc, 0x36, 0x6e, 0x1b, 0xb7, 0x0d, 0xa3,
		0x4d, 0xfc, 0x43, 0x71, 0x5c, 0x57, 0x3e, 0x85, 0x49, 0x65, 0xd3, 0x55, 0x56, 0x3d, 0x18, 0x6d,
		0x28, 0x5f, 0x44, 0x55, 0xdc, 0xff, 0x48, 0x13, 0xc2, 0xd5, 0x1a, 0xf2, 0xbc, 0x26, 0x5c, 0xcd,
		0x78, 0x3e, 0x6c, 0x24, 0x95, 0xd7, 0x3f, 0x2d, 0xbd, 0xf3, 0x5a, 0xdf, 0x1a, 0xa2, 0x0c, 0xb9,
		0x4a, 0xd6, 0x82, 0x1e, 0xb6, 0x67, 0x09, 0x90, 0x93, 0xe9, 0xf3, 0x06, 0xb2, 0xf3, 0x56, 0x40,
		0x67, 0xcb, 0x0d, 0x41, 0x99, 0xeb, 0xba, 0xe4, 0x46, 0xb0, 0x2f, 0x69, 0x75, 0x1f, 0x52, 0x21,
		0x96, 0x3d, 0x7c, 0x56, 0xb9, 0x3a, 0xf6, 0xf0, 0x85, 0x97, 0x6b, 0x63, 0x0f, 0xdf, 0xbd, 0x27,
		0xc3, 0x1e, 0x3e, 0x0f, 0x0d, 0xa5, 0x9a, 0xc1, 0xd4, 0x34, 0x9c, 0xfa, 0x06, 0x54, 0xdb, 0x90,
		0x9a, 0x19, 0x54, 0x33, 0xc3, 0x6a, 0x62, 0x60, 0xeb, 0x11, 0x76, 0x43, 0xd5, 0x96, 0x36, 0xce,
		0x54, 0xa4, 0x43, 0x36, 0xda, 0x56, 0xc6, 0xdb, 0xdc, 0x88, 0x9b, 0x1b, 0x73, 0x53, 0xa3, 0xae,
		0x63, 0xdc, 0x95, 0x8c, 0x7c, 0x71, 0x92, 0x50, 0xb5, 0x45, 0x45, 0x52, 0x8d, 0xd6, 0x10, 0x4e,
		0x35, 0x7a, 0x71, 0xb7, 0xa8, 0x46, 0x1b, 0xa9, 0x1e, 0x54, 0x6d, 0x7f, 0x74, 0x90, 0xa2, 0x74,
		0x00, 0xc0, 0x83, 0x31, 0xab, 0x21, 0xbf, 0x42, 0x48, 0x75, 0x90, 0xea, 0xc8, 0x85, 0x90, 0x0b,
		0x21, 0x17, 0x42, 0x2e, 0x84, 0x5c, 0xc8, 0xc6, 0xf7, 0x95, 0x3d, 0x7c, 0xa0, 0x4a, 0x50, 0x25,
		0xac, 0x45, 0x70, 0x11, 0xb8, 0x08, 0x5c, 0x04, 0x2e, 0x02, 0x17, 0xc1, 0x5a, 0x54, 0xf8, 0x50,
		0x27, 0xd2, 0x95, 0x4f, 0x8e, 0x5e, 0xd9, 0x74, 0x95, 0x55, 0x0f, 0xd6, 0x22, 0xca, 0x17, 0x51,
		0x20, 0x22, 0x94, 0xdf, 0xfa, 0x50, 0x1e, 0x5a, 0xe8, 0x1a, 0xf2, 0x7c, 0xa6, 0xe9, 0x15, 0xbc,
		0x2b, 0x16, 0xf2, 0xdd, 0xff, 0xfe, 0x58, 0xc8, 0xb7, 0x71, 0x72, 0x88, 0x85, 0x7c, 0x01, 0x25,
		0x81, 0x60, 0x79, 0xc0, 0xf2, 0x78, 0xf0, 0xc4, 0x60, 0x79, 0x48, 0x1b, 0x67, 0x32, 0xf8, 0x21,
		0x1b, 0x6d, 0x2b, 0xe3, 0x6d, 0x6e, 0xc4, 0xcd, 0x8d, 0xb9, 0xa9, 0x51, 0xd7, 0x8d, 0xda, 0x61,
		0x79, 0x88, 0x59, 0x5f, 0x58, 0x1e, 0x02, 0x3f, 0x94, 0xec, 0x3d, 0x09, 0x54, 0x58, 0x1e, 0xb0,
		0x3c, 0x48, 0xe2, 0x8b, 0x7d, 0x58, 0xc8, 0xf7, 0x78, 0x25, 0x64, 0x21, 0x1f, 0xc1, 0x26, 0xc1,
		0x26, 0xc1, 0x26, 0xc1, 0x26, 0xc1, 0x26, 0xbb, 0x69, 0x42, 0x72, 0xdb, 0x70, 0x07, 0xe1, 0x0e,
		0x02, 0x7a, 0x00, 0x3d, 0x80, 0x1e, 0x40, 0x0f, 0xa0, 0x07, 0xd0, 0x53, 0x7f, 0xd0, 0x03, 0xb5,
		0x0d, 0xb7, 0x8d, 0xdb, 0xc6, 0x6d, 0xe3, 0xb6, 0x71, 0xdb, 0x50, 0xdb, 0xc4, 0x3f, 0x14, 0xc7,
		0x75, 0xe5, 0x53, 0x98, 0x54, 0x36, 0x5d, 0x65, 0xd5, 0x83, 0xda, 0x86, 0xf2, 0x45, 0x54, 0xc5,
		0xfd, 0x8f, 0x34, 0x61, 0x5e, 0xad, 0x21, 0x2f, 0x0c, 0xe6, 0x15, 0x9b, 0xf9, 0xb4, 0x14, 0x91,
		0xcd, 0x7c, 0x0a, 0xab, 0xd6, 0x22, 0xa9, 0x15, 0x7d, 0xef, 0x16, 0xcf, 0x1d, 0xca, 0xaa, 0xbe,
		0x27, 0x1e, 0x5f, 0x89, 0x86, 0xbb, 0xcd, 0xb3, 0x4e, 0x3c, 0x9e, 0xbc, 0x92, 0xcb, 0xbe, 0x4c,
		0x0c, 0xdb, 0xf8, 0x72, 0xed, 0x52, 0xb1, 0xc8, 0x4d, 0x61, 0x11, 0xde, 0xce, 0x4e, 0x71, 0xa7,
		0xe2, 0x89, 0x2e, 0x47, 0xbf, 0x45, 0x4f, 0x67, 0xf9, 0x92, 0x38, 0xff, 0x3a, 0x74, 0xa3, 0x97,
		0x67, 0xef, 0xde, 0x1f, 0xb7, 0x5b, 0x7f, 0x9e, 0x34, 0x5f, 0xff, 0x57, 0xbb, 0xd9, 0x3a, 0x3f,
		0x7c, 0x5a, 0xb3, 0xa5, 0x79, 0xd3, 0x17, 0x58, 0xe7, 0x95, 0x79, 0x3f, 0xf0, 0x86, 0x83, 0xe4,
		0x30, 0xbf, 0x71, 0xa3, 0x6e, 0x96, 0x0c, 0x55, 0xa0, 0x57, 0x71, 0x7d, 0xfe, 0x4c, 0xfb, 0x5f,
		0xa3, 0x24, 0xed, 0xf6, 0xc7, 0x3d, 0x17, 0xe5, 0xd7, 0xc9, 0x28, 0xea, 0x0e, 0xd2, 0xbc, 0x93,
		0xa4, 0x2e, 0x8b, 0x26, 0x9a, 0x15, 0xe5, 0xd7, 0x2e, 0xea, 0xf4, 0x7a, 0x99, 0x1b, 0x8d, 0xa2,
		0xab, 0xce, 0xe7, 0x64, 0xf2, 0x9f, 0x8f, 0x3e, 0xa6, 0xa3, 0xa1, 0xeb, 0x26, 0x57, 0x89, 0xeb,
		0x45, 0xf9, 0x20, 0xba, 0x74, 0xd1, 0xd9, 0xbb, 0xf8, 0xfd, 0x71, 0x34, 0x73, 0x0a, 0xd1, 0xd9,
		0xd1, 0xef, 0xcd, 0xe8, 0x6a, 0x90, 0x4d, 0xff, 0x72, 0xb3, 0x75, 0x73, 0x18, 0x8d, 0xd3, 0xa4,
		0xdb, 0x19, 0xe5, 0x1f, 0xd3, 0xf2, 0x57, 0xed, 0x48, 0x2b, 0xae, 0x62, 0xfe, 0x7a, 0xf9, 0x4e,
		0xf6, 0x96, 0x5e, 0xa5, 0x42, 0xdd, 0xc9, 0x22, 0x59, 0x5d, 0xba, 0xa2, 0xd6, 0x5a, 0x04, 0x30,
		0x17, 0xfd, 0xd6, 0x0b, 0xaf, 0x51, 0x92, 0x70, 0xc0, 0xe0, 0x5b, 0xa0, 0x20, 0x60, 0x50, 0x2a,
		0x0b, 0x05, 0xaa, 0xbd, 0x88, 0xd5, 0x29, 0x72, 0x85, 0x2a, 0x27, 0x34, 0x6a, 0x44, 0x74, 0xb4,
		0x88, 0xd0, 0x28, 0x11, 0xb1, 0xd1, 0x21, 0x92, 0x45, 0x76, 0xf9, 0x62, 0xba, 0x34, 0xe8, 0x50,
		0x2b, 0x8e, 0xab, 0xe1, 0x0a, 0x95, 0x62, 0xb7, 0xdf, 0xa1, 0xbe, 0xd4, 0xa8, 0x8e, 0x46, 0x29,
		0x74, 0x92, 0xd3, 0xc9, 0xc5, 0xad, 0x2a, 0x8b, 0x13, 0x52, 0x17, 0xd9, 0x1e, 0x23, 0xf1, 0x9e,
		0x22, 0x8d, 0x1e, 0x22, 0xbd, 0x9e, 0x21, 0x8b, 0x9c, 0x87, 0x4a, 0x4f, 0x90, 0x6d, 0xd6, 0x43,
		0xba, 0xe7, 0x27, 0xac, 0xa2, 0x80, 0x78, 0x0f, 0x4f, 0x71, 0x5f, 0x92, 0x9e, 0x4b, 0xf3, 0x24,
		0xff, 0x9a, 0xb9, 0x2b, 0xc9, 0x4b, 0xb3, 0x40, 0x64, 0x82, 0x5d, 0x3a, 0x8d, 0xe6, 0xfc, 0xa7,
		0xbc, 0xea, 0x8c, 0x14, 0x67, 0xe3, 0x1d, 0xfd, 0xde, 0x6c, 0x4f, 0x42, 0xf7, 0xf6, 0xfb, 0xff,
		0x6a, 0x1d, 0x4b, 0x5f, 0xd1, 0x69, 0x5f, 0xc2, 0x48, 0xa5, 0xf3, 0x48, 0xb9, 0x89, 0xb7, 0xd9,
		0x3a, 0x3f, 0x68, 0xff, 0x7e, 0xf2, 0xe7, 0xff, 0x39, 0x6b, 0x1d, 0xbf, 0x6e, 0xd4, 0xa1, 0x3d,
		0xda, 0xe2, 0x00, 0x4f, 0x8e, 0x5e, 0x1d, 0x9f, 0x1c, 0xbf, 0x69, 0x7f, 0x38, 0x6d, 0xbe, 0x3e,
		0x3a, 0x7b, 0xcf, 0x39, 0xfe, 0xe0, 0x39, 0x72, 0x7e, 0x9b, 0x9c, 0xdf, 0x21, 0x7a, 0x58, 0xd1,
		0x39, 0x72, 0x7e, 0x3f, 0x7c, 0x7e, 0x27, 0xfb, 0xe7, 0xad, 0xd3, 0xf6, 0xf1, 0x79, 0xeb, 0x94,
		0xd3, 0xfb, 0xd1, 0xd3, 0x3b, 0x6f, 0x9d, 0x9c, 0x71, 0x7a, 0x3f, 0x70, 0x7a, 0xcf, 0x26, 0xa7,
		0x37, 0xf5, 0x24, 0x6f, 0x3f, 0x9c, 0xbc, 0xe7, 0x0e, 0x6f, 0x7e, 0x8e, 0x58, 0xc2, 0xcd, 0x4f,
		0xf1, 0x10, 0x6d, 0xac, 0xe8, 0x1c, 0xd1, 0xc6, 0x1f, 0x3f, 0xc5, 0xe6, 0xe9, 0x7f, 0x9c, 0xbd,
		0x3f, 0x7a, 0x7f, 0xcc, 0xe1, 0x6d, 0x70, 0x78, 0xed, 0xb3, 0xd6, 0xef, 0x1c, 0xe0, 0x26, 0x07,
		0x08, 0x30, 0xfc, 0xa1, 0x03, 0xfc, 0xae, 0xf9, 0xec, 0x80, 0x33, 0xdc, 0xf8, 0x0c, 0x0f, 0x39,
		0xc3, 0xf5, 0xcf, 0xf0, 0xbc, 0x75, 0xaa, 0x9b, 0x30, 0x14, 0x95, 0x70, 0xb1, 0xf5, 0x3d, 0x57,
		0x02, 0x1a, 0xda, 0x70, 0x69, 0xe7, 0xb2, 0x2f, 0x38, 0x3d, 0xb3, 0x50, 0xc6, 0x85, 0x20, 0xa1,
		0x6a, 0x90, 0xc6, 0x88, 0x2d, 0xc9, 0x91, 0x5a, 0x17, 0xd4, 0xc5, 0x57, 0x0a, 0xa0, 0x2e, 0xfe,
		0x43, 0x6f, 0x9d, 0xba, 0xb8, 0xff, 0xfe, 0x21, 0xf8, 0xba, 0xb8, 0xfc, 0x08, 0x2a, 0xe1, 0x91,
		0x53, 0x61, 0xb8, 0xe8, 0x91, 0x4b, 0x7b, 0x71, 0x77, 0xf0, 0xf9, 0xf3, 0x38, 0x4d, 0xf2, 0xaf,
		0x53, 0x82, 0x8b, 0xbc, 0xbb, 0x5e, 0x25, 0x14, 0x17, 0x85, 0x8b, 0xc2, 0x45, 0xe1, 0xa2, 0x02,
		0x72, 0x51, 0x2a, 0x16, 0xac, 0xe4, 0xa9, 0x0e, 0x04, 0x65, 0x1c, 0xa7, 0xe3, 0xcf, 0xf2, 0x37,
		0xf3, 0xfd, 0xe0, 0x2c, 0xcf, 0x92, 0xf4, 0x93, 0x0e, 0x45, 0x6e, 0x77, 0x9a, 0xed, 0x79, 0x7f,
		0x74, 0xfa, 0xe6, 0xe8, 0xdd, 0x1b, 0x0d, 0x66, 0xdc, 0xde, 0x44, 0xe0, 0xf1, 0x7f, 0xbe, 0x3f,
		0x3e, 0x7d, 0x73, 0xac, 0x22, 0x70, 0x7f, 0x9a, 0x54, 0x3d, 0x7a, 0xf7, 0xc7, 0xb1, 0x86, 0xb4,
		0x67, 0x13, 0x69, 0xaf, 0xfe, 0x7c, 0xff, 0xbf, 0x34, 0x84, 0x1d, 0x4c, 0xb9, 0x41, 0x7f, 0x9e,
		0x0a, 0x17, 0x2a, 0xa4, 0x07, 0x9c, 0xbc, 0x1f, 0x34, 0x53, 0x9d, 0xa1, 0x9c, 0xb3, 0x37, 0xf3,
		0x32, 0x7a, 0xa6, 0xf0, 0x72, 0x0a, 0x1d, 0x17, 0x5f, 0x18, 0x3c, 0x15, 0x37, 0xd3, 0x70, 0xf1,
		0x9d, 0xc1, 0x33, 0xf3, 0x3e, 0x51, 0xb9, 0x97, 0xd1, 0x81, 0xc6, 0x12, 0xdf, 0x85, 0x69, 0x7a,
		0x19, 0xed, 0xc2, 0x29, 0x55, 0x00, 0x07, 0x27, 0xc9, 0x28, 0x3f, 0xca, 0x73, 0xd9, 0x35, 0xb5,
		0x8d, 0xb7, 0x49, 0x7a, 0xdc, 0x77, 0x13, 0x78, 0x26, 0x3c, 0x38, 0xac, 0xf1, 0xb6, 0x73, 0xbb,
		0x24, 0x69, 0xef, 0x9f, 0x07, 0x07, 0x87, 0x2f, 0x0e, 0x0e, 0x76, 0x5f, 0x3c, 0x7b, 0xb1, 0xfb,
		0xeb, 0xf3, 0xe7, 0x7b, 0x87, 0xa2, 0xfd, 0xde, 0x7f, 0x66, 0x3d, 0x97, 0xb9, 0xde, 0xab, 0xaf,
		0x8d, 0x97, 0x51, 0x3a, 0xee, 0xf7, 0x35, 0x44, 0x7d, 0x18, 0xb9, 0x4c, 0x74, 0x12, 0x5a, 0x18,
		0x61, 0x7b, 0x3e, 0xc8, 0x3b, 0xfd, 0x78, 0xd8, 0xc9, 0xaf, 0x47, 0xf2, 0xe1, 0xfa, 0xb2, 0x30,
		0xc2, 0x74, 0xc2, 0x74, 0xc2, 0x74, 0xc2, 0xf4, 0x80, 0xc2, 0x74, 0xf1, 0x75, 0xc1, 0x0a, 0xeb,
		0x81, 0x95, 0x26, 0x1e, 0x2b, 0xc4, 0x28, 0x9a, 0x13, 0x8d, 0xb5, 0x27, 0x18, 0x9b, 0x0d, 0x8d,
		0xd5, 0x1f, 0x12, 0xab, 0xb1, 0xde, 0x42, 0x73, 0x02, 0xb1, 0xd9, 0x3a, 0xde, 0x6d, 0xd2, 0x99,
		0x40, 0x43, 0xdc, 0x0b, 0x02, 0x8d, 0x29, 0x3a, 0x73, 0x7a, 0xb1, 0xc6, 0x42, 0x1e, 0xe1, 0x06,
		0xe1, 0x06, 0xe1, 0x06, 0xe1, 0x06, 0xe1, 0x06, 0xe1, 0x06, 0xe1, 0x06, 0xe1, 0x06, 0xe1, 0x06,
		0x3a, 0x43, 0xb8, 0xe1, 0x49, 0xb8, 0xc1, 0x94, 0x56, 0xc3, 0x29, 0xad, 0xd5, 0x2f, 0x08, 0xf1,
		0x73, 0xfc, 0xe9, 0x78, 0xe4, 0xe2, 0xcf, 0xe3, 0x7e, 0x9e, 0x0c, 0xfb, 0x4e, 0xa8, 0xe0, 0xf5,
		0x0d, 0xba, 0xdd, 0x95, 0x15, 0xd8, 0x60, 0xd4, 0x5d, 0x06, 0xa3, 0xea, 0x05, 0x96, 0x0c, 0x46,
		0xad, 0xa1, 0xdf, 0x10, 0x1b, 0x8c, 0xda, 0x5d, 0xdc, 0x51, 0xe1, 0x0c, 0xda, 0x5c, 0x8e, 0x6c,
		0xe6, 0x6c, 0x8f, 0xcc, 0x19, 0x99, 0x33, 0x32, 0x67, 0xdb, 0x90, 0x39, 0x93, 0x32, 0x88, 0x85,
		0x00, 0x69, 0x96, 0xf0, 0x9d, 0x7b, 0x29, 0xcb, 0x16, 0xfe, 0x76, 0x70, 0x0a, 0xac, 0xe1, 0x42,
		0x98, 0x20, 0x7b, 0xb8, 0x88, 0x4b, 0x85, 0xcf, 0x4b, 0x67, 0x93, 0xbf, 0xda, 0x06, 0x7f, 0xcd,
		0xcd, 0xfd, 0xfa, 0x1b, 0xfb, 0xb5, 0x37, 0xf5, 0x9b, 0x6d, 0xe8, 0x37, 0xdb, 0xcc, 0x6f, 0xb2,
		0x91, 0x3f, 0xec, 0x5d, 0xb2, 0x6a, 0x9b, 0xf7, 0x15, 0x59, 0xca, 0x77, 0x90, 0xf7, 0x1e, 0xeb,
		0x7e, 0xd7, 0x90, 0xf7, 0xf5, 0xd3, 0x20, 0x8f, 0x07, 0xdd, 0xb8, 0x3b, 0xf8, 0x3c, 0xcc, 0xdc,
		0x68, 0xe4, 0x7a, 0x71, 0xdf, 0x75, 0xae, 0x26, 0xc2, 0xff, 0x82, 0x71, 0xa1, 0x00, 0x1f, 0xb7,
		0x64, 0xbd, 0xee, 0xdd, 0xd4, 0xe1, 0x2f, 0xf3, 0x40, 0x7c, 0x9b, 0xe7, 0xff, 0x4c, 0x7c, 0x96,
		0xfc, 0xf0, 0x1f, 0x39, 0xc4, 0x43, 0xba, 0x83, 0x74, 0x07, 0xe9, 0x0e, 0xd2, 0x1d, 0x55, 0x0a,
		0x10, 0xce, 0x03, 0xdf, 0xb9, 0x96, 0xa2, 0xf9, 0x60, 0x25, 0x43, 0x49, 0xf0, 0x4e, 0xf0, 0x4e,
		0xf0, 0x5e, 0xef, 0xe0, 0x5d, 0xda, 0xf0, 0x16, 0x82, 0x3a, 0xfd, 0xfe, 0xe0, 0xcb, 0x37, 0xb0,
		0xde, 0x19, 0xe9, 0xdd, 0x83, 0x62, 0x6b, 0xe1, 0x9d, 0x47, 0x50, 0x52, 0x4b, 0xcd, 0x9c, 0x74,
		0x21, 0x54, 0x21, 0x37, 0xbd, 0xf8, 0x5c, 0x28, 0x9d, 0xa3, 0x4e, 0xae, 0x5a, 0xdd, 0xed, 0x59,
		0xb8, 0x3f, 0x3b, 0x37, 0x68, 0xe5, 0x0e, 0xcd, 0xdd, 0xa2, 0xb9, 0x7b, 0x34, 0x75, 0x93, 0x3a,
		0xee, 0x52, 0xc9, 0x6d, 0x16, 0x27, 0xa9, 0x96, 0xfb, 0xbe, 0x73, 0x5f, 0xf5, 0x72, 0xe0, 0x77,
		0xa2, 0x8d, 0xbd, 0x5a, 0xbd, 0x42, 0xe5, 0xdc, 0x78, 0x21, 0xd7, 0x2c, 0x47, 0xae, 0x77, 0x13,
		0x35, 0xf8, 0x03, 0x9f, 0x3b, 0xb7, 0xc9, 0xe7, 0xf1, 0x67, 0xe1, 0xa9, 0x2c, 0xf7, 0x5e, 0xc3,
		0xb2, 0xf8, 0x3a, 0xe3, 0xc9, 0x3d, 0xb0, 0x24, 0x58, 0x12, 0x2c, 0x09, 0x96, 0x04, 0x4b, 0xd6,
		0x0d, 0x4b, 0x8a, 0x93, 0x67, 0xef, 0xb3, 0xbe, 0x2f, 0x14, 0x45, 0xea, 0x90, 0x6b, 0xbf, 0xff,
		0xe8, 0xda, 0xa3, 0x48, 0x9b, 0x7c, 0x7b, 0x47, 0xb8, 0x32, 0x19, 0xf7, 0x8e, 0x7c, 0x2b, 0xa2,
		0xe5, 0xdd, 0xbb, 0xa5, 0x4d, 0xbc, 0x34, 0x32, 0x5b, 0x65, 0xd5, 0xeb, 0xdc, 0xda, 0xab, 0x9e,
		0x36, 0xb9, 0x17, 0x1d, 0x34, 0x76, 0xd0, 0xfa, 0xd2, 0x2e, 0xc8, 0x80, 0x90, 0x01, 0xb1, 0x97,
		0x50, 0xb7, 0xb6, 0x51, 0xff, 0xba, 0x09, 0xdd, 0xe4, 0x6f, 0x48, 0xb6, 0x14, 0xca, 0x2b, 0x8a,
		0xa0, 0x92, 0x34, 0xfa, 0x49, 0xfa, 0xdf, 0xf1, 0x65, 0x27, 0xed, 0x7d, 0x49, 0x7a, 0xf9, 0x75,
		0xec, 0x6e, 0xf3, 0x6f, 0x0b, 0x86, 0xf4, 0x7a, 0x6d, 0xfe, 0xf6, 0x29, 0xe8, 0xc0, 0xf1, 0x35,
		0x6d, 0x44, 0x07, 0x4e, 0xfd, 0xd2, 0x42, 0x74, 0xe0, 0xac, 0x7d, 0x62, 0x6a, 0x1d, 0x38, 0x4a,
		0x2d, 0x90, 0x77, 0xae, 0xb7, 0x4a, 0x2b, 0xa4, 0xb2, 0x41, 0x56, 0x37, 0xcc, 0x16, 0x06, 0xda,
		0xce, 0x50, 0x5b, 0x19, 0x6c, 0x73, 0xc3, 0x6d, 0x6e, 0xc0, 0x4d, 0x0d, 0xb9, 0x6e, 0x20, 0xaf,
		0x15, 0x5e, 0x6b, 0x19, 0xf8, 0x42, 0xa0, 0x16, 0xb5, 0xff, 0x5e, 0x3b, 0xa1, 0x43, 0xf5, 0xbf,
		0xcf, 0xf4, 0x2b, 0x67, 0xdb, 0xd4, 0x5d, 0x80, 0xa5, 0x2b, 0xb0, 0x77, 0x09, 0xd6, 0xae, 0xc1,
		0x1b, 0x17, 0xe1, 0x8d, 0xab, 0xf0, 0xc2, 0x65, 0xe8, 0xba, 0x0e, 0x65, 0x17, 0x52, 0x9c, 0xb0,
		0x7a, 0x89, 0xf8, 0xce, 0x7d, 0xd7, 0x6f, 0x3b, 0xbc, 0x83, 0xec, 0xf7, 0x6a, 0xfd, 0x8a, 0x8d,
		0x92, 0xf1, 0x85, 0x7c, 0xf3, 0xa4, 0xbc, 0xfe, 0x4d, 0xfe, 0x8b, 0x6a, 0x4e, 0x05, 0x72, 0x3d,
		0x4d, 0xde, 0xff, 0x5d, 0x72, 0x58, 0x25, 0xb3, 0xaf, 0xa7, 0x65, 0x1a, 0xed, 0xb6, 0xb3, 0x09,
		0xb8, 0xea, 0x39, 0xa4, 0x99, 0xd8, 0x9a, 0xa7, 0x90, 0xf6, 0x49, 0x21, 0x91, 0x42, 0x22, 0x85,
		0x84, 0x4f, 0x27, 0x85, 0x44, 0x0a, 0x89, 0x14, 0x12, 0x29, 0x24, 0x52, 0x48, 0xa4, 0x90, 0x48,
		0x21, 0x85, 0x9f, 0x42, 0x02, 0xf5, 0x90, 0xc9, 0x10, 0xce, 0x64, 0x08, 0x6c, 0xa6, 0x31, 0x4c,
		0x64, 0xd0, 0x35, 0x5b, 0x6f, 0x75, 0x6d, 0xa8, 0x64, 0xaa, 0xb2, 0x71, 0x37, 0x4f, 0xe7, 0x4e,
		0xe7, 0x74, 0xf6, 0x3b, 0x9b, 0xf3, 0x9f, 0xd9, 0x6e, 0xcd, 0x7f, 0x5c, 0xfb, 0xd5, 0xa7, 0x61,
		0xfb, 0x8f, 0xe9, 0x8f, 0x6b, 0x1f, 0x5d, 0x25, 0x67, 0x9d, 0xab, 0xa4, 0xfd, 0x61, 0xe4, 0xde,
		0xce, 0x7f, 0x50, 0x6b, 0xf2, 0x7b, 0xda, 0xc7, 0x97, 0x9f, 0x86, 0xed, 0x93, 0x24, 0xfd, 0xef,
		0x57, 0x8b, 0x9f, 0x73, 0x7c, 0x9b, 0xbf, 0x2e, 0x7e, 0x0c, 0x8d, 0xc1, 0x2b, 0x0e, 0x5f, 0x23,
		0x4d, 0xa8, 0x9a, 0x1e, 0x54, 0x6f, 0xf5, 0xdd, 0xa7, 0xd5, 0x37, 0x9c, 0xd8, 0x8e, 0x56, 0x5f,
		0x5a, 0x7d, 0xbd, 0x49, 0xe3, 0x31, 0x6c, 0x8f, 0x61, 0x7b, 0x55, 0xb9, 0x3b, 0x06, 0xa4, 0x84,
		0xec, 0x06, 0xad, 0xdc, 0xa1, 0xb9, 0x5b, 0x34, 0x77, 0x8f, 0xa6, 0x6e, 0xb2, 0x9e, 0xf9, 0x20,
		0x86, 0xed, 0x85, 0x9c, 0xd3, 0x61, 0x16, 0x5c, 0x7d, 0xe0, 0x0e, 0xb3, 0xe0, 0x80, 0x3a, 0x40,
		0x1d, 0xa0, 0x0e, 0x50, 0xa7, 0x76, 0x50, 0x87, 0x59, 0x70, 0x62, 0x1f, 0x66, 0xc1, 0xe9, 0xca,
		0x67, 0x0e, 0x97, 0xb2, 0xd9, 0x2a, 0xab, 0x1e, 0xb3, 0xe0, 0xd0, 0x41, 0x75, 0x07, 0xad, 0x2f,
		0xed, 0x82, 0xa6, 0x0b, 0x7b, 0x0b, 0x44, 0xd3, 0xc5, 0xac, 0xe9, 0x42, 0xa1, 0x0d, 0x88, 0x15,
		0xbb, 0xaa, 0x1a, 0xe7, 0xa9, 0xa6, 0x35, 0x44, 0x9b, 0x47, 0x2a, 0xed, 0xdc, 0xd9, 0xe6, 0x5d,
		0xc0, 0x89, 0xca, 0x2e, 0xe0, 0x84, 0x5d, 0xc0, 0x96, 0xb9, 0x37, 0x76, 0x01, 0x87, 0x97, 0x3b,
		0x63, 0x17, 0xf0, 0xbd, 0x27, 0xc3, 0x2e, 0x60, 0x0f, 0x0d, 0xa5, 0x9a, 0xc1, 0xd4, 0x34, 0x9c,
		0xfa, 0x06, 0x54, 0xdb, 0x90, 0x9a, 0x19, 0x54, 0x33, 0xc3, 0x6a, 0x62, 0x60, 0xeb, 0x11, 0x43,
		0xab, 0xb5, 0x27, 0x52, 0xa7, 0xd7, 0xf9, 0x50, 0xa7, 0x0f, 0xc2, 0xd5, 0x59, 0xb8, 0x3c, 0x3b,
		0xd7, 0x67, 0xe5, 0x02, 0xcd, 0x5d, 0xa1, 0xb9, 0x4b, 0x34, 0x75, 0x8d, 0x3a, 0x2e, 0x52, 0xc9,
		0x55, 0x16, 0x27, 0x49, 0x9d, 0x5e, 0x54, 0x24, 0x75, 0x7a, 0x0d, 0xe1, 0xd4, 0xe9, 0x17, 0x77,
		0x8b, 0x3a, 0xbd, 0x91, 0xea, 0x51, 0xa7, 0xf7, 0x47, 0x07, 0xa9, 0xd3, 0x07, 0x00, 0x3c, 0xd8,
		0xd9, 0x46, 0x12, 0xc7, 0x07, 0xc5, 0xf0, 0xb0, 0x3c, 0x9d, 0xb0, 0xb3, 0xed, 0xef, 0x5e, 0x18,
		0x3b, 0xdb, 0xa8, 0x94, 0x04, 0x94, 0x2e, 0xa2, 0x52, 0x52, 0xcb, 0x74, 0x10, 0x95, 0x92, 0x47,
		0x09, 0x62, 0x67, 0x5b, 0xc0, 0x86, 0xd9, 0xc2, 0x40, 0xdb, 0x19, 0x6a, 0x2b, 0x83, 0x6d, 0x6e,
		0xb8, 0xcd, 0x0d, 0xb8, 0xa9, 0x21, 0xd7, 0x0d, 0xe4, 0x19, 0xb8, 0x2d, 0x65, 0x27, 0x18, 0xb8,
		0x5d, 0x57, 0x57, 0x60, 0xef, 0x12, 0xac, 0x5d, 0x83, 0x37, 0x2e, 0xc2, 0x1b, 0x57, 0xe1, 0x85,
		0xcb, 0xd0, 0x75, 0x1d, 0xca, 0x2e, 0xa4, 0x38, 0x61, 0x06, 0x6e, 0xb3, 0xb3, 0x4d, 0x58, 0x3e,
		0x3b, 0xdb, 0x02, 0x87, 0x9b, 0x4c, 0x3a, 0x2f, 0x25, 0xef, 0xd9, 0xd9, 0x56, 0xed, 0x5b, 0x66,
		0x67, 0x9b, 0x58, 0xfc, 0xc0, 0xce, 0x36, 0x52, 0x48, 0xa4, 0x90, 0xf0, 0xe9, 0xa4, 0x90, 0x48,
		0x21, 0x91, 0x42, 0x22, 0x85, 0x44, 0x0a, 0x89, 0x14, 0x12, 0x29, 0xa4, 0x1a, 0xa4, 0x90, 0x40,
		0x3d, 0x64, 0x32, 0x84, 0x33, 0x19, 0xec, 0x6c, 0xf3, 0x45, 0x7d, 0xe9, 0x9a, 0x7d, 0x58, 0x5d,
		0x03, 0xdb, 0xd9, 0xd6, 0x64, 0x67, 0xdb, 0xda, 0x87, 0xcf, 0xce, 0xb6, 0x4d, 0x63, 0x41, 0x76,
		0xb6, 0x05, 0x14, 0xdb, 0xd1, 0xea, 0x4b, 0xab, 0xaf, 0x37, 0x69, 0x3c, 0x86, 0xa2, 0x68, 0x85,
		0x0a, 0x0c, 0x45, 0xa9, 0xc4, 0xd5, 0xd1, 0x3c, 0x5d, 0x03, 0x17, 0x68, 0xee, 0x0a, 0xcd, 0x5d,
		0xa2, 0xa9, 0x6b, 0xac, 0x67, 0x0e, 0x88, 0xa1, 0x28, 0xa2, 0x22, 0x19, 0x8a, 0xa2, 0x21, 0x9c,
		0xa1, 0x28, 0x8b, 0xbb, 0xc5, 0x50, 0x14, 0x23, 0xd5, 0x63, 0x28, 0x8a, 0x3f, 0x3a, 0xc8, 0x50,
		0x14, 0xaf, 0x7f, 0x0f, 0xd5, 0x87, 0x75, 0xe4, 0x79, 0x5a, 0x7d, 0x60, 0x79, 0x89, 0x96, 0xe6,
		0x6d, 0xf1, 0xf2, 0x92, 0x24, 0x9c, 0xe5, 0x25, 0xcd, 0x2d, 0x5f, 0x5e, 0x22, 0x5b, 0x90, 0x52,
		0x29, 0x44, 0xa9, 0xad, 0x2f, 0xd9, 0x67, 0x7d, 0x89, 0x3f, 0xd9, 0x35, 0xd6, 0x97, 0x6c, 0xb1,
		0x6b, 0x15, 0x5f, 0x5f, 0xa2, 0xd5, 0xe7, 0xad, 0xdc, 0xd7, 0xad, 0x5a, 0x0c, 0x6a, 0x4c, 0xc3,
		0x48, 0x59, 0xac, 0x79, 0xa1, 0xd3, 0xdb, 0xb0, 0xcb, 0x18, 0x33, 0x8f, 0x5d, 0x8e, 0xb6, 0xeb,
		0x31, 0x73, 0x41, 0x66, 0xae, 0xc8, 0xc4, 0x25, 0xd5, 0x23, 0xef, 0xa0, 0x56, 0xa8, 0x31, 0xe8,
		0x23, 0x57, 0xea, 0x1b, 0x27, 0xa1, 0xb0, 0xed, 0x09, 0x05, 0xc1, 0xac, 0x95, 0x40, 0x98, 0xfe,
		0xc4, 0x63, 0x65, 0x92, 0x56, 0x22, 0xff, 0x94, 0xa7, 0x21, 0x92, 0x35, 0xa9, 0x2a, 0x01, 0x55,
		0xad, 0x52, 0x57, 0xa7, 0x7a, 0xd5, 0x7c, 0x53, 0x45, 0xca, 0x3b, 0x01, 0x5a, 0x93, 0x83, 0x5e,
		0xbc, 0xe5, 0x78, 0x7a, 0xf2, 0x15, 0x7d, 0xf7, 0x49, 0x32, 0xca, 0x8f, 0xf2, 0xbc, 0xda, 0x80,
		0xb2, 0xf1, 0x36, 0x49, 0x8f, 0xfb, 0x6e, 0x02, 0x95, 0x2a, 0xae, 0xe9, 0x35, 0xde, 0x76, 0x6e,
		0x97, 0xbe, 0x79, 0xef, 0x9f, 0x07, 0x07, 0x87, 0x2f, 0x0e, 0x0e, 0x76, 0x5f, 0x3c, 0x7b, 0xb1,
		0xfb, 0xeb, 0xf3, 0xe7, 0x7b, 0x87, 0x7b, 0x15, 0x56, 0x32, 0x1b, 0x7f, 0x66, 0x3d, 0x97, 0xb9,
		0xde, 0xab, 0xc9, 0xf1, 0xa7, 0xe3, 0x7e, 0x5f, 0xe2, 0xab, 0x3f, 0x8c, 0x5c, 0x56, 0x69, 0xd1,
		0xb1, 0x2a, 0xad, 0x13, 0x32, 0x95, 0xc6, 0x26, 0xb2, 0x42, 0x7b, 0xf8, 0xe3, 0x76, 0xb0, 0x1a,
		0xb3, 0xb7, 0xb9, 0x91, 0xda, 0xec, 0x1b, 0x36, 0x54, 0xb4, 0xaa, 0x15, 0xcc, 0x46, 0xb1, 0x36,
		0x7b, 0x95, 0x3f, 0xfe, 0x02, 0x36, 0x38, 0xfc, 0x46, 0x67, 0x38, 0xec, 0x7f, 0x8d, 0x87, 0x83,
		0x7e, 0xd2, 0xdd, 0x7c, 0x1e, 0x7f, 0x11, 0x78, 0x95, 0xbe, 0x75, 0x43, 0xd5, 0xa8, 0xa6, 0xa6,
		0x51, 0x59, 0x62, 0xa9, 0xca, 0xc4, 0xd1, 0x72, 0x62, 0x28, 0x1b, 0x0e, 0xfa, 0x15, 0x18, 0xa4,
		0xaa, 0x33, 0x3f, 0x62, 0x99, 0x1d, 0xb1, 0xcc, 0xcd, 0xf7, 0x99, 0x99, 0xe9, 0xc1, 0x06, 0x6e,
		0x1e, 0xab, 0xca, 0xf2, 0x57, 0x3d, 0xe1, 0x5d, 0x66, 0x82, 0x7b, 0xc5, 0x65, 0xcc, 0xca, 0x73,
		0xca, 0x12, 0xb9, 0x63, 0x01, 0x53, 0x20, 0x65, 0x12, 0xc4, 0x4d, 0x83, 0xb8, 0x89, 0x90, 0x35,
		0x15, 0x7e, 0x06, 0x8e, 0x55, 0x17, 0x0a, 0x1b, 0xbd, 0x59, 0x01, 0x2d, 0x76, 0xb7, 0xc3, 0x41,
		0x96, 0x57, 0x05, 0x21, 0xee, 0xbd, 0x17, 0xab, 0xc5, 0x55, 0xac, 0x0f, 0x92, 0x45, 0xc1, 0xc6,
		0xbb, 0xe3, 0xff, 0x7d, 0xfc, 0xfa, 0x7d, 0xfb, 0xdd, 0x9f, 0x1f, 0xde, 0x1f, 0x57, 0x9b, 0xec,
		0xa8, 0xb8, 0xf6, 0x27, 0x54, 0xeb, 0x13, 0xab, 0xed, 0x49, 0xd6, 0xf2, 0x04, 0xed, 0xb2, 0xb4,
		0x7d, 0x56, 0xb3, 0xd3, 0x6a, 0xf6, 0x5a, 0xc7, 0x6e, 0x57, 0x9f, 0x42, 0x8c, 0x04, 0xb2, 0xd7,
		0x62, 0xd5, 0xb4, 0x3b, 0x16, 0x77, 0x66, 0x6a, 0xe3, 0x7c, 0x22, 0x50, 0x40, 0xfb, 0x17, 0x60,
		0xef, 0x40, 0xe0, 0xbb, 0x8f, 0xd3, 0xf1, 0x67, 0xb9, 0x7b, 0xf5, 0x7e, 0x70, 0x96, 0x67, 0x49,
		0x2a, 0xbb, 0x30, 0xa9, 0xb1, 0x3b, 0x79, 0x17, 0x47, 0xaf, 0x5f, 0x1f, 0xb7, 0x16, 0xbe, 0x43,
		0xb0, 0x65, 0x6d, 0x6f, 0x22, 0x4c, 0xce, 0x51, 0x09, 0x5d, 0x86, 0xa5, 0x37, 0xd2, 0x9c, 0x1a,
		0x05, 0xc1, 0xd7, 0x51, 0x7a, 0x13, 0xa2, 0x6d, 0x2a, 0xe5, 0xf7, 0xf0, 0x32, 0xda, 0xa3, 0xea,
		0x57, 0xc5, 0xfb, 0x13, 0xae, 0xfa, 0xa9, 0x4d, 0xc7, 0xaf, 0xb0, 0xc2, 0xf5, 0x73, 0xf5, 0x51,
		0x41, 0xf2, 0x59, 0x35, 0x2a, 0x28, 0x8b, 0x23, 0x2a, 0x20, 0x2a, 0x20, 0x2a, 0x20, 0x2a, 0x20,
		0x2a, 0x20, 0x2a, 0x20, 0x2a, 0x20, 0x2a, 0x20, 0x2a, 0x20, 0x2a, 0x20, 0x2a, 0x30, 0xf9, 0x26,
		0x3a, 0x90, 0x96, 0x1a, 0x45, 0x96, 0xba, 0x22, 0x2a, 0x5d, 0x2c, 0x55, 0x41, 0xf7, 0x4f, 0x05,
		0x9d, 0x07, 0xd5, 0x12, 0x68, 0x45, 0x08, 0xb3, 0x62, 0x95, 0xe5, 0x7d, 0x2a, 0xcb, 0x21, 0xc5,
		0x26, 0x54, 0x96, 0xa9, 0x2c, 0x53, 0x59, 0x26, 0x87, 0x44, 0x0e, 0x89, 0x1c, 0x12, 0x39, 0x24,
		0x72, 0x48, 0xe4, 0x90, 0xc8, 0x21, 0x91, 0x43, 0xda, 0xb6, 0x1c, 0x12, 0x05, 0x54, 0x0a, 0xa8,
		0x80, 0x5f, 0xc0, 0x2f, 0xe0, 0x17, 0xf0, 0x0b, 0xf8, 0x05, 0xfc, 0x02, 0x7e, 0x01, 0xbf, 0x80,
		0x5f, 0x9b, 0x6f, 0xa2, 0x4e, 0x78, 0x4f, 0x9d, 0xb0, 0xc2, 0x81, 0x3f, 0x0c, 0x09, 0xf0, 0xe3,
		0x9d, 0x36, 0x2a, 0x29, 0xb6, 0xae, 0x3d, 0x6f, 0x62, 0xf2, 0x04, 0xad, 0xd9, 0x03, 0x04, 0x38,
		0xa8, 0x60, 0xf2, 0x66, 0x5c, 0xcf, 0x65, 0xd5, 0xbc, 0xff, 0x12, 0x71, 0xf9, 0xdb, 0xd7, 0x32,
		0xaa, 0xe0, 0x31, 0x01, 0x5b, 0x35, 0x33, 0x2c, 0x99, 0x54, 0x20, 0x32, 0x43, 0x92, 0x41, 0x05,
		0x0f, 0xde, 0x77, 0x06, 0x15, 0x78, 0x65, 0x08, 0xa4, 0x13, 0x36, 0xf5, 0xeb, 0x26, 0xa9, 0x74,
		0xd8, 0x6c, 0xcd, 0x9b, 0x49, 0x92, 0x9e, 0x4b, 0xf3, 0xe4, 0x2a, 0x71, 0x99, 0x5c, 0x12, 0x7d,
		0x49, 0x06, 0x29, 0x63, 0x8d, 0x94, 0xb1, 0xcc, 0x14, 0x6d, 0x32, 0xc6, 0x5e, 0x19, 0x26, 0xa1,
		0xc4, 0x47, 0x70, 0x09, 0xe3, 0xce, 0x28, 0x4e, 0xc7, 0x9f, 0x2f, 0x2b, 0x37, 0x2e, 0x91, 0xec,
		0x46, 0x51, 0xe1, 0xcd, 0xa1, 0x82, 0xb9, 0x48, 0x8d, 0x4d, 0xa0, 0x5a, 0x1b, 0x3f, 0xd5, 0xb7,
		0x2a, 0xea, 0x6d, 0x4f, 0x14, 0x9c, 0x57, 0xaf, 0xb2, 0x91, 0x53, 0x7d, 0xf3, 0x66, 0x9d, 0x75,
		0x21, 0x90, 0x24, 0xfe, 0x05, 0x2c, 0xa8, 0xed, 0x9d, 0x8d, 0xf0, 0xd9, 0x4d, 0xbc, 0x78, 0xdc,
		0x19, 0xc9, 0x45, 0x22, 0xdf, 0x44, 0x10, 0x88, 0x10, 0x88, 0x10, 0x88, 0x10, 0x88, 0x10, 0x88,
		0x10, 0x88, 0x10, 0x88, 0x10, 0x88, 0x10, 0x88, 0x10, 0x88, 0x04, 0x13, 0x88, 0x88, 0x6c, 0xa2,
		0x59, 0x36, 0xab, 0x32, 0x1b, 0x69, 0x96, 0x6f, 0xad, 0xda, 0x66, 0x9a, 0x42, 0xa8, 0xdc, 0x86,
		0x9a, 0xbb, 0x22, 0x2a, 0xdf, 0x54, 0x43, 0x48, 0xab, 0x17, 0xd2, 0xd2, 0xb0, 0x57, 0x71, 0x73,
		0x57, 0xa9, 0x89, 0x88, 0xc9, 0x1e, 0x8f, 0x8d, 0x27, 0x98, 0xec, 0xe1, 0x6b, 0x22, 0x82, 0x56,
		0x0c, 0x93, 0x44, 0x03, 0xad, 0x18, 0x1b, 0x5f, 0x05, 0x5a, 0x31, 0x04, 0x0d, 0x8e, 0xbc, 0xe1,
		0x91, 0x36, 0x40, 0x6a, 0x86, 0x48, 0xcd, 0x20, 0xa9, 0x18, 0x26, 0x99, 0x38, 0x94, 0x0c, 0xe8,
		0x2a, 0x03, 0x43, 0x06, 0xb4, 0x1c, 0xaa, 0x93, 0x01, 0x0d, 0x20, 0xeb, 0x45, 0x06, 0x14, 0x5d,
		0x10, 0xf1, 0x11, 0x72, 0xdf, 0x7a, 0x41, 0xc7, 0x41, 0x15, 0x2e, 0x91, 0x8e, 0x03, 0xf0, 0x36,
		0x78, 0x1b, 0xbc, 0x0d, 0xde, 0x06, 0x6f, 0x83, 0xb7, 0xc1, 0xdb, 0xe0, 0x6d, 0xf0, 0xb6, 0x06,
		0xde, 0xa6, 0xe3, 0xe0, 0xfb, 0x5b, 0x4b, 0xc7, 0x81, 0x75, 0xe4, 0x46, 0x61, 0x5d, 0xb4, 0xb0,
		0xce, 0x28, 0x1c, 0xa9, 0x97, 0x6b, 0xf7, 0x52, 0x6d, 0x66, 0xe1, 0xbc, 0x2e, 0x3d, 0x42, 0xa0,
		0xd3, 0x70, 0x2a, 0x18, 0x8f, 0x51, 0xed, 0x58, 0x0c, 0xe6, 0xdf, 0x58, 0xa6, 0x5c, 0x98, 0x7f,
		0xe3, 0x81, 0x5d, 0xae, 0x6c, 0xfe, 0x4d, 0x85, 0x29, 0xdb, 0xa5, 0x6c, 0x4a, 0xc5, 0xcd, 0x56,
		0xbb, 0xcc, 0xbd, 0xa9, 0xe2, 0x9b, 0x69, 0xb6, 0xd2, 0x34, 0x10, 0x7e, 0xa2, 0xf5, 0xb7, 0x9d,
		0xb4, 0xd7, 0xc9, 0x07, 0xd9, 0xd7, 0x0a, 0x7b, 0x18, 0x2b, 0xcf, 0xcf, 0x8a, 0xe6, 0x65, 0x05,
		0xf2, 0xb1, 0x42, 0x79, 0x58, 0x99, 0x04, 0x81, 0x5c, 0xed, 0x45, 0x38, 0xdf, 0xaa, 0x96, 0x5b,
		0x93, 0xcf, 0xa9, 0xfd, 0x25, 0x93, 0x99, 0x91, 0x7f, 0xb5, 0xd2, 0x79, 0xd4, 0x3a, 0xbd, 0x63,
		0x4f, 0xb3, 0x47, 0x17, 0x5b, 0x91, 0x3d, 0x12, 0xe7, 0xcb, 0xf8, 0xc1, 0x98, 0xc8, 0x06, 0xe3,
		0xdc, 0x65, 0x71, 0xd2, 0xab, 0x1e, 0xc5, 0x7f, 0xfb, 0x6a, 0xc0, 0x3c, 0x60, 0x1e, 0x30, 0xef,
		0x21, 0x98, 0x97, 0x03, 0xde, 0xbd, 0x41, 0x9e, 0xbb, 0x5e, 0xfc, 0xff, 0xc6, 0x9d, 0x9e, 0x00,
		0xf4, 0xde, 0xfb, 0x67, 0x85, 0xdf, 0xd9, 0xea, 0xe4, 0xb9, 0xcb, 0xd2, 0xca, 0xd1, 0x77, 0xe3,
		0x1f, 0xff, 0xda, 0x8d, 0x7f, 0xbd, 0xf8, 0xf7, 0xbf, 0xf6, 0xe2, 0x5f, 0x2f, 0x66, 0xff, 0xb8,
		0x37, 0xfd, 0x9f, 0xff, 0xd9, 0xff, 0xeb, 0xdf, 0xfb, 0xff, 0xda, 0x8d, 0x0f, 0xe6, 0xff, 0x76,
		0xff, 0xf9, 0xbf, 0x76, 0xe3, 0xe7, 0x17, 0x3f, 0xfd, 0xe3, 0xe3, 0xc7, 0x9d, 0x75, 0xff, 0xce,
		0x4f, 0xff, 0xf3, 0xec, 0xaf, 0xea, 0xb4, 0xf3, 0xa2, 0xca, 0x63, 0xfd, 0xf3, 0xac, 0xf9, 0x9f,
		0x62, 0x67, 0xfb, 0x7f, 0xff, 0xa1, 0x75, 0xba, 0x3f, 0xfd, 0x7f, 0x8d, 0x9a, 0x42, 0x27, 0x77,
		0x9b, 0x67, 0x9d, 0x78, 0x9c, 0x8e, 0xf2, 0xce, 0x65, 0xbf, 0x62, 0x3b, 0x90, 0xb9, 0x2b, 0x97,
		0xb9, 0xb4, 0x1b, 0x44, 0x50, 0xbb, 0x30, 0x5a, 0xef, 0x7e, 0x7f, 0x7d, 0xb0, 0xff, 0x62, 0x2f,
		0x8a, 0xa3, 0xa3, 0xe8, 0xd5, 0x20, 0xeb, 0xb9, 0x2c, 0xfa, 0xa3, 0x93, 0xbb, 0x2f, 0x9d, 0xaf,
		0xd1, 0xa2, 0x38, 0x13, 0x1d, 0x44, 0xff, 0x78, 0xf5, 0x47, 0x2b, 0x3e, 0xf8, 0xe9, 0xe7, 0x8f,
		0xe9, 0x99, 0x9b, 0x86, 0x1a, 0xd1, 0xc1, 0xce, 0x7e, 0xe0, 0xad, 0x8e, 0xdf, 0x5e, 0x57, 0x9d,
		0xba, 0x1d, 0x37, 0x79, 0x9f, 0x84, 0x73, 0x84, 0x73, 0xca, 0xe1, 0x1c, 0x85, 0xfa, 0x0d, 0x0a,
		0xf5, 0x9b, 0x0e, 0x32, 0xb0, 0x29, 0x8f, 0x2f, 0x76, 0xec, 0x4d, 0x63, 0xe5, 0xb8, 0x97, 0xcc,
		0x7e, 0x6e, 0x75, 0xe5, 0xf2, 0x7b, 0xbe, 0x9f, 0xf2, 0xb9, 0x5e, 0xc0, 0x4d, 0xf9, 0x9c, 0xf2,
		0xf9, 0xfd, 0x5f, 0xc4, 0xfa, 0x18, 0x32, 0x6f, 0x64, 0xde, 0xb6, 0x2f, 0xf3, 0x56, 0xf9, 0xcc,
		0x12, 0x77, 0x9b, 0xbb, 0x2c, 0xed, 0xf4, 0xab, 0x86, 0x12, 0xf7, 0xde, 0x8b, 0xfb, 0x04, 0xc2,
		0xae, 0x84, 0x5d, 0x69, 0x66, 0xa2, 0x6c, 0xf3, 0x0d, 0xb0, 0x2b, 0x65, 0xf4, 0x7d, 0x9c, 0xa4,
		0xf9, 0x3f, 0x05, 0x99, 0x95, 0xcf, 0x61, 0x56, 0x7e, 0x7b, 0x70, 0x55, 0x66, 0xe5, 0x1e, 0x6c,
		0x3a, 0x3f, 0x6e, 0x71, 0x59, 0x05, 0x34, 0x99, 0x95, 0xfb, 0xcf, 0xa1, 0x54, 0xfa, 0xe1, 0x18,
		0xe4, 0xbe, 0x95, 0x6d, 0x32, 0x5b, 0xbc, 0x4d, 0x26, 0x49, 0x95, 0x23, 0x93, 0xfb, 0x04, 0x12,
		0x99, 0x10, 0x99, 0x10, 0x99, 0x10, 0x99, 0x10, 0x99, 0x10, 0x99, 0x10, 0x99, 0x10, 0x99, 0x10,
		0x99, 0x10, 0x99, 0x10, 0x99, 0xb0, 0x14, 0xc4, 0xbf, 0x17, 0xa4, 0xda, 0x3d, 0xb3, 0xba, 0x47,
		0x84, 0xed, 0x20, 0x8f, 0xc5, 0x80, 0x6c, 0x07, 0xf1, 0x35, 0x78, 0xa4, 0xd2, 0x6e, 0x12, 0x1c,
		0x52, 0x69, 0xaf, 0xf6, 0x5e, 0x50, 0x69, 0x27, 0x9f, 0x45, 0x3e, 0x8b, 0x7c, 0x16, 0xf9, 0x2c,
		0xf2, 0x59, 0xe4, 0xb3, 0xc8, 0x67, 0x91, 0xcf, 0x22, 0x9f, 0xa5, 0x94, 0xcf, 0xa2, 0xa0, 0x4c,
		0x41, 0x19, 0x00, 0x0e, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01, 0xe0, 0x00, 0x70, 0x00, 0x38, 0x00,
		0x1c, 0x00, 0x1e, 0x24, 0x00, 0xa7, 0x6e, 0xaa, 0x53, 0x37, 0x65, 0xf9, 0x83, 0xd4, 0x5b, 0xf6,
		0xe0, 0xed, 0xda, 0x6c, 0x81, 0x78, 0x33, 0x7b, 0x96, 0x77, 0x93, 0x47, 0x79, 0xb3, 0x78, 0x92,
		0x10, 0xa7, 0x5d, 0x7c, 0x4d, 0x3b, 0x9f, 0x93, 0x6e, 0x9c, 0xba, 0xe4, 0xd3, 0xf5, 0xe5, 0x20,
		0x8b, 0x67, 0x81, 0x91, 0x1b, 0x55, 0x38, 0xf0, 0xe2, 0x5e, 0x11, 0xcc, 0xbc, 0xd0, 0x0b, 0xb6,
		0x99, 0x79, 0xc1, 0xcc, 0x8b, 0xb5, 0xcd, 0x40, 0xf5, 0x9d, 0x39, 0xf7, 0x09, 0x62, 0x2a, 0x86,
		0x7f, 0x79, 0x39, 0x7a, 0x75, 0x4c, 0xf2, 0x6e, 0x35, 0xef, 0xd5, 0xa9, 0x78, 0xbc, 0xce, 0x9d,
		0x6b, 0x50, 0xe9, 0x98, 0x1d, 0x21, 0xc3, 0x22, 0x66, 0x60, 0x24, 0x0d, 0x8d, 0xbc, 0xc1, 0x91,
		0x36, 0x3c, 0x6a, 0x06, 0x48, 0xcd, 0x10, 0xa9, 0x18, 0x24, 0x99, 0xcc, 0x4c, 0xd5, 0x85, 0x80,
		0xaa, 0x0d, 0x55, 0xf1, 0xc5, 0x43, 0xe7, 0xb2, 0xf8, 0x53, 0x36, 0x18, 0x0f, 0xe5, 0x14, 0x72,
		0x71, 0xa5, 0x96, 0x64, 0x09, 0x29, 0x8a, 0x4c, 0x45, 0x53, 0xdc, 0xa0, 0x69, 0x18, 0x36, 0x3d,
		0x03, 0xa7, 0x65, 0xe8, 0xd4, 0x0d, 0x9e, 0xba, 0xe1, 0x53, 0x35, 0x80, 0x32, 0x86, 0x50, 0xc8,
		0x20, 0x16, 0x27, 0x23, 0x56, 0x21, 0xbd, 0x73, 0x5f, 0xfa, 0xae, 0x73, 0x95, 0xb9, 0x2b, 0xc9,
		0x0b, 0xb3, 0xc0, 0x61, 0x2f, 0x04, 0x65, 0xb4, 0xe6, 0xd9, 0xcc, 0x9d, 0x9d, 0x5f, 0x96, 0xff,
		0xdf, 0x37, 0xdb, 0x3c, 0x5a, 0xfa, 0xe7, 0x39, 0x29, 0x67, 0xe9, 0xdf, 0xc4, 0xd3, 0x3c, 0x62,
		0x50, 0x2a, 0x22, 0x4c, 0x6a, 0x2b, 0xe4, 0xa8, 0x91, 0xdb, 0xe4, 0x6e, 0xaa, 0xc4, 0x9a, 0xaf,
		0xa1, 0xac, 0x4f, 0xfb, 0x86, 0x2e, 0x44, 0xb1, 0x2e, 0xc8, 0x02, 0x64, 0x01, 0xb2, 0x00, 0x59,
		0x48, 0xdc, 0x97, 0x64, 0x18, 0x8b, 0x6b, 0x57, 0x81, 0x2d, 0x7e, 0x15, 0x94, 0x31, 0x3f, 0xb2,
		0x7f, 0x89, 0xaa, 0xac, 0xec, 0x95, 0xff, 0xee, 0xc5, 0xdc, 0x1c, 0xc4, 0x2a, 0x17, 0x3f, 0x12,
		0x5a, 0x36, 0xf5, 0x77, 0x30, 0x50, 0x64, 0x51, 0xd2, 0xbd, 0x02, 0xb5, 0xd6, 0x27, 0xfd, 0x52,
		0xfc, 0xa5, 0xfd, 0xf9, 0x9f, 0x3e, 0xfb, 0xd7, 0x6e, 0xbc, 0x7f, 0xf1, 0x53, 0x43, 0xfc, 0x77,
		0x5e, 0x68, 0xbc, 0x37, 0xc9, 0x2d, 0x57, 0xf7, 0x4a, 0xd5, 0xdb, 0x7e, 0x75, 0xef, 0xeb, 0xab,
		0x72, 0x2d, 0xd6, 0xbd, 0x2f, 0x50, 0x54, 0xc2, 0x5f, 0x3f, 0xd7, 0xc8, 0x2e, 0x1e, 0x62, 0x17,
		0x2b, 0xb2, 0x8b, 0x53, 0x85, 0xef, 0xc4, 0x57, 0x47, 0xf1, 0xef, 0x17, 0xff, 0xb3, 0xf7, 0xf3,
		0xc1, 0x5f, 0x2f, 0x7f, 0xfa, 0x9f, 0x17, 0x7f, 0x7d, 0xff, 0x2f, 0xff, 0xbd, 0xea, 0x3f, 0xdb,
		0xfb, 0xf9, 0xc5, 0x5f, 0x2f, 0xef, 0xf9, 0x93, 0xc3, 0xbf, 0x5e, 0x3e, 0xf2, 0x3b, 0x9e, 0xff,
		0xf5, 0x8f, 0x3b, 0xff, 0xe9, 0xe4, 0xdf, 0xef, 0xdf, 0xf7, 0x17, 0x0e, 0xee, 0xf9, 0x0b, 0xcf,
		0xee, 0xfb, 0x0b, 0xcf, 0xee, 0xf9, 0x0b, 0xf7, 0x3e, 0xd2, 0xfe, 0x3d, 0x7f, 0xe1, 0xf9, 0x5f,
		0xff, 0xbe, 0xf3, 0xdf, 0xff, 0x63, 0xf5, 0x7f, 0x7a, 0xf8, 0xd7, 0x4f, 0xff, 0xbe, 0xef, 0xcf,
		0x5e, 0xfc, 0xf5, 0xef, 0x97, 0x3f, 0xfd, 0xf4, 0xcb, 0x3f, 0xf6, 0x26, 0x56, 0xe8, 0x9f, 0x33,
		0xb3, 0xb4, 0x77, 0x71, 0xc7, 0x5a, 0x4d, 0xff, 0x2f, 0x7e, 0x63, 0x73, 0xbf, 0x81, 0x76, 0x7b,
		0xab, 0xdd, 0xe1, 0x7b, 0xd5, 0x27, 0x61, 0x3d, 0x37, 0x59, 0x4e, 0xfb, 0x2c, 0xe7, 0x56, 0xcf,
		0x60, 0x53, 0x6d, 0x6a, 0xbe, 0xaf, 0x3b, 0xf6, 0xbe, 0x3f, 0xa9, 0x74, 0x0a, 0x58, 0xf5, 0xef,
		0xbb, 0x4a, 0x56, 0xb1, 0x50, 0x5e, 0x5c, 0x36, 0x1f, 0x0e, 0x67, 0x58, 0x33, 0xdf, 0x4d, 0xab,
		0x90, 0x97, 0xf9, 0xec, 0x6d, 0xe7, 0x0c, 0xcb, 0x55, 0xc2, 0x25, 0x2b, 0xe0, 0xcb, 0x95, 0xef,
		0x45, 0x59, 0x7b, 0xa6, 0xf3, 0x5b, 0xe0, 0x6c, 0xaa, 0x1d, 0x45, 0x79, 0x47, 0x23, 0xaa, 0x1c,
		0x49, 0x79, 0x47, 0x17, 0xa4, 0x5c, 0xcd, 0x3e, 0xae, 0x06, 0x57, 0x83, 0xab, 0xd9, 0xe0, 0x04,
		0xe8, 0x4a, 0x35, 0xc4, 0xcc, 0xe2, 0xd8, 0x59, 0xc3, 0xb0, 0xe9, 0x19, 0x38, 0x2d, 0x43, 0xa7,
		0x6e, 0xf0, 0xd4, 0x0d, 0x9f, 0xaa, 0x01, 0x94, 0xcb, 0x02, 0x45, 0x74, 0xa5, 0x9a, 0x63, 0xf2,
		0x55, 0xd8, 0xdc, 0xb7, 0xae, 0x54, 0x9a, 0x2c, 0x69, 0xb2, 0xc4, 0x51, 0xe2, 0x28, 0x71, 0x94,
		0x41, 0x3b, 0x4a, 0x9a, 0x2c, 0xd7, 0xf9, 0xd0, 0x64, 0x59, 0x11, 0xaa, 0xa1, 0xc9, 0xb2, 0xe2,
		0x0f, 0x4d, 0x96, 0x34, 0x59, 0xea, 0x3b, 0x2a, 0x1b, 0xbb, 0x48, 0x93, 0x65, 0x55, 0x76, 0x91,
		0x36, 0x34, 0x9a, 0x2c, 0x69, 0xb2, 0x44, 0xbb, 0x69, 0xb2, 0xf4, 0x28, 0xa8, 0x94, 0x7b, 0x6e,
		0x7a, 0x06, 0xab, 0x35, 0x31, 0x7e, 0xf7, 0x0c, 0x56, 0x38, 0x01, 0xb7, 0xfa, 0xd7, 0xed, 0xd7,
		0xc0, 0xb3, 0xff, 0x70, 0x5f, 0xab, 0x9f, 0x69, 0x79, 0x92, 0x8c, 0xf2, 0xa3, 0x3c, 0xaf, 0x78,
		0x94, 0xda, 0xdb, 0x24, 0x3d, 0xee, 0xbb, 0xcf, 0x2e, 0xad, 0x7a, 0xae, 0x78, 0xe3, 0x6d, 0xe7,
		0x76, 0xe9, 0x9b, 0xf7, 0xfe, 0x79, 0x70, 0x70, 0xf8, 0xe2, 0xe0, 0x60, 0xf7, 0xc5, 0xb3, 0x17,
		0xbb, 0xbf, 0x3e, 0x7f, 0xbe, 0x77, 0xb8, 0x57, 0xe1, 0xd4, 0xf4, 0xc6, 0x9f, 0x59, 0xcf, 0x65,
		0xae, 0xf7, 0x6a, 0x72, 0xee, 0xe9, 0xb8, 0xdf, 0x97, 0xf8, 0xea, 0x0f, 0x23, 0x97, 0x55, 0x3a,
		0x10, 0x9d, 0xb1, 0xdb, 0x1b, 0xd8, 0xa3, 0x46, 0xa5, 0x7d, 0x5b, 0x6b, 0xcf, 0x6e, 0x9e, 0x3d,
		0xd4, 0xe9, 0xfc, 0x99, 0x5a, 0x15, 0xb6, 0xb8, 0x31, 0x1e, 0xdc, 0x43, 0x2d, 0x0c, 0x71, 0x2e,
		0xf7, 0xa7, 0xac, 0xd3, 0x75, 0x57, 0xe3, 0x7e, 0x9c, 0xb9, 0x51, 0xde, 0xc9, 0xf2, 0xea, 0xc6,
		0x71, 0xdf, 0xf9, 0x66, 0xa6, 0x70, 0x3f, 0x78, 0x66, 0x4c, 0xe1, 0x66, 0x0a, 0xf7, 0xfd, 0xbf,
		0xa8, 0xb2, 0x29, 0xdc, 0x15, 0x8f, 0xc6, 0x95, 0x19, 0x89, 0xcb, 0x8c, 0x6d, 0x66, 0x6c, 0x33,
		0x63, 0xbb, 0xd2, 0x18, 0xa0, 0xfa, 0x7d, 0xf8, 0x69, 0xe7, 0xb2, 0xef, 0x7a, 0x82, 0xfb, 0xef,
		0xe7, 0x02, 0xa0, 0xce, 0xc1, 0x67, 0x30, 0x33, 0x41, 0x6a, 0xa6, 0x48, 0xc5, 0x24, 0x85, 0x91,
		0x46, 0x95, 0xa7, 0xce, 0x5d, 0x0e, 0x06, 0x7d, 0xd7, 0x49, 0x25, 0xa9, 0x73, 0x7b, 0x5b, 0x9d,
		0xa9, 0x56, 0x1b, 0x4f, 0xe0, 0x27, 0xcf, 0xef, 0xda, 0xf5, 0x87, 0x2e, 0x8b, 0x07, 0x69, 0xff,
		0xab, 0x9c, 0x7f, 0x5c, 0x16, 0x82, 0x8f, 0xc4, 0x47, 0xe2, 0x23, 0xf1, 0x91, 0xf8, 0x48, 0x7c,
		0x64, 0x20, 0x3e, 0x72, 0x9e, 0x1a, 0x8e, 0xf3, 0xe4, 0xb3, 0x20, 0x25, 0xbe, 0x24, 0x05, 0x2f,
		0x89, 0x97, 0xc4, 0x4b, 0xe2, 0x25, 0x2b, 0xd4, 0xf7, 0x71, 0x92, 0xe6, 0x7b, 0x87, 0x82, 0x4e,
		0xf2, 0x50, 0xe0, 0xab, 0xdf, 0x75, 0xd2, 0x4f, 0x72, 0xe4, 0x15, 0x41, 0x16, 0xd1, 0xdb, 0x24,
		0xd5, 0x5b, 0xdb, 0xbf, 0xcb, 0xd2, 0x7e, 0x3f, 0xae, 0x71, 0x59, 0x05, 0x3a, 0xb7, 0x7a, 0x2a,
		0x70, 0xb0, 0xfb, 0xeb, 0x21, 0x5a, 0xe0, 0x85, 0x6b, 0x90, 0xfb, 0xd6, 0x0b, 0xa2, 0x90, 0xed,
		0x8d, 0x42, 0x46, 0x79, 0xa7, 0xef, 0x66, 0xdb, 0xfe, 0x47, 0xc2, 0xa1, 0xc8, 0x5d, 0x51, 0xc4,
		0x23, 0xc4, 0x23, 0xc4, 0x23, 0xc4, 0x23, 0xc4, 0x23, 0xc4, 0x23, 0xc4, 0x23, 0xc4, 0x23, 0x0f,
		0xaa, 0xc0, 0xe1, 0xf3, 0xe7, 0xcf, 0x9e, 0xa3, 0x06, 0x04, 0x24, 0x04, 0x24, 0x5e, 0x05, 0x24,
		0xb0, 0x7d, 0x2a, 0xe6, 0x59, 0x7c, 0x4f, 0x20, 0xa8, 0x74, 0x21, 0x41, 0x05, 0x04, 0x9a, 0x0a,
		0xba, 0xf4, 0xab, 0x9d, 0x05, 0x2d, 0x32, 0x03, 0x5a, 0xac, 0x0d, 0x7b, 0x9f, 0x36, 0xec, 0x80,
		0x22, 0x45, 0xda, 0xb0, 0x69, 0xc3, 0xa6, 0x0d, 0x9b, 0x64, 0x15, 0xc9, 0x2a, 0x92, 0x55, 0x95,
		0xea, 0x7b, 0x78, 0x2d, 0x66, 0x74, 0x1b, 0xd3, 0x6d, 0x8c, 0x2b, 0xc0, 0x15, 0xe0, 0x0a, 0x70,
		0x05, 0x3e, 0xba, 0x02, 0x9a, 0x6a, 0x71, 0x06, 0x38, 0x03, 0x9c, 0x41, 0xd8, 0xce, 0x80, 0x22,
		0xf6, 0x9d, 0x0f, 0x45, 0xec, 0xc7, 0xc9, 0xa1, 0x88, 0xfd, 0x43, 0x2a, 0x40, 0x53, 0x6d, 0x28,
		0x5a, 0xb0, 0x9d, 0x35, 0x6c, 0x7a, 0x47, 0xe9, 0x1d, 0x05, 0x76, 0x03, 0xbb, 0x81, 0xdd, 0xc0,
		0x6e, 0x60, 0x37, 0xb0, 0x1b, 0xd8, 0xbd, 0xb6, 0x0a, 0xd0, 0x3b, 0x0a, 0xee, 0x36, 0xc4, 0xdd,
		0xb4, 0x48, 0x4a, 0xb7, 0x48, 0x56, 0xb8, 0x7f, 0x81, 0x11, 0xe3, 0xfe, 0xbc, 0xd7, 0x46, 0x25,
		0xbd, 0xa6, 0xeb, 0xce, 0xaf, 0xff, 0x63, 0xfe, 0x14, 0xef, 0xe6, 0x0f, 0x11, 0xe0, 0x78, 0xf3,
		0x69, 0xb4, 0x1c, 0x8f, 0x5c, 0xdf, 0x4d, 0x7d, 0x52, 0x3c, 0x18, 0x4e, 0xfe, 0x67, 0x54, 0xdd,
		0x94, 0xf3, 0xfb, 0x04, 0x30, 0xec, 0x5c, 0x2f, 0xb4, 0x66, 0xd8, 0x39, 0xc3, 0xce, 0xef, 0xff,
		0x22, 0x86, 0x9d, 0x7b, 0x9a, 0x6b, 0xa3, 0xcb, 0x5e, 0x3f, 0x97, 0x46, 0x97, 0xfd, 0x8f, 0x7f,
		0x61, 0xa7, 0x77, 0xe3, 0xb2, 0x3c, 0x19, 0xb9, 0x38, 0x49, 0x27, 0x21, 0xee, 0xcd, 0x22, 0x19,
		0x2f, 0x97, 0xf2, 0xbf, 0x5f, 0x64, 0xc5, 0x6a, 0xf1, 0xc6, 0x5d, 0x75, 0xc6, 0xfd, 0x5c, 0x24,
		0x87, 0xd6, 0x98, 0x46, 0xe5, 0xd5, 0xa6, 0x6a, 0x2f, 0x28, 0x7d, 0x50, 0xfa, 0x30, 0x33, 0xd3,
		0x6a, 0xe6, 0x5a, 0xc5, 0x6c, 0xcb, 0x24, 0xa2, 0x68, 0x3f, 0x5d, 0x81, 0xee, 0x18, 0x76, 0xbb,
		0xc5, 0x63, 0xa6, 0x3a, 0xfd, 0x2f, 0x9d, 0xaf, 0xa3, 0xe9, 0xaf, 0xef, 0x64, 0x2e, 0xfe, 0x2c,
		0x49, 0xd8, 0x5b, 0x21, 0x0b, 0xc4, 0x00, 0x62, 0x00, 0x31, 0x80, 0x18, 0x40, 0x0c, 0x20, 0x06,
		0x10, 0x43, 0x10, 0x88, 0x61, 0x46, 0xbb, 0x8f, 0x3b, 0xc9, 0xa7, 0xa1, 0x34, 0xb7, 0x7f, 0x26,
		0x04, 0x8c, 0x00, 0x46, 0x00, 0x23, 0x80, 0x11, 0xc0, 0x08, 0x60, 0x04, 0x30, 0x42, 0x18, 0x18,
		0xe1, 0x36, 0x77, 0x59, 0xda, 0xe9, 0x17, 0xb1, 0xfe, 0xb4, 0x40, 0x90, 0xc5, 0x89, 0xe4, 0x38,
		0xa0, 0xfb, 0x65, 0x86, 0x84, 0x20, 0x26, 0x96, 0x15, 0x00, 0x01, 0x80, 0x00, 0x40, 0x00, 0x20,
		0x00, 0x10, 0x00, 0x88, 0xed, 0x04, 0x10, 0xc9, 0xa7, 0x74, 0x90, 0xb9, 0xb8, 0x33, 0x8a, 0x87,
		0x9d, 0xfc, 0x3a, 0xee, 0xbb, 0xf4, 0xd3, 0xb4, 0xc5, 0x55, 0x08, 0x3b, 0xac, 0x16, 0x47, 0xe2,
		0x01, 0xdc, 0x00, 0x6e, 0x00, 0x37, 0x80, 0x1b, 0xc0, 0x0d, 0xe0, 0x86, 0x90, 0x70, 0x43, 0xea,
		0x6e, 0xf3, 0xf8, 0x7a, 0x30, 0x8c, 0x93, 0x4f, 0xc3, 0xf8, 0xb3, 0xcb, 0xb3, 0xa4, 0x2b, 0x0e,
		0x1e, 0x56, 0xc9, 0x04, 0x41, 0x80, 0x20, 0x40, 0x10, 0x20, 0x08, 0x10, 0x04, 0x08, 0x02, 0x04,
		0x21, 0x87, 0x20, 0xe0, 0x70, 0x57, 0xcc, 0xf5, 0xbd, 0x87, 0x41, 0xca, 0xb6, 0x9b, 0xc7, 0x9a,
		0x29, 0xb6, 0xdd, 0xf8, 0x8a, 0x6f, 0xe0, 0xe1, 0x99, 0xe0, 0x17, 0x78, 0x78, 0x55, 0xdf, 0x0c,
		0x78, 0x78, 0x84, 0x9d, 0x84, 0x9d, 0x84, 0x9d, 0x84, 0x9d, 0x84, 0x9d, 0xa2, 0xd1, 0x15, 0x74,
		0x33, 0x1c, 0x23, 0x8e, 0x11, 0xc7, 0x88, 0x63, 0xc4, 0x31, 0xe2, 0x18, 0x65, 0x1c, 0x23, 0xac,
		0x2a, 0x5c, 0x21, 0xae, 0x10, 0x57, 0x88, 0x2b, 0xc4, 0x15, 0x6e, 0xbb, 0x2b, 0x84, 0x3c, 0xf4,
		0xa3, 0x5f, 0x0e, 0x79, 0x08, 0x3f, 0x89, 0x9f, 0xc4, 0x4f, 0xe2, 0x27, 0xe1, 0xc8, 0x54, 0xfd,
		0xd6, 0xe0, 0xc8, 0xe0, 0x1e, 0x71, 0x8f, 0xb8, 0x47, 0xdc, 0x23, 0xee, 0x31, 0x20, 0xf7, 0x08,
		0x15, 0x04, 0x47, 0x89, 0xa3, 0xc4, 0x51, 0xe2, 0x28, 0x71, 0x94, 0x35, 0x72, 0x94, 0x30, 0x1e,
		0x94, 0x18, 0x0f, 0x2c, 0xaf, 0x93, 0x7a, 0xcd, 0x3e, 0xbc, 0x5e, 0x9b, 0x1d, 0x76, 0xef, 0x26,
		0x0f, 0x73, 0xb6, 0x78, 0x96, 0x3f, 0xe7, 0x8f, 0x12, 0xe0, 0x26, 0xbb, 0x6a, 0xc8, 0x33, 0x95,
		0x92, 0x66, 0x2a, 0xdf, 0x52, 0xb7, 0xcf, 0x96, 0x3a, 0x0f, 0x90, 0x1c, 0x5b, 0xea, 0xd6, 0x88,
		0x0d, 0xab, 0xda, 0x52, 0xd7, 0x19, 0x55, 0x4f, 0x8c, 0xeb, 0x8c, 0x2a, 0x66, 0xc5, 0xed, 0xb2,
		0x9d, 0xce, 0xe3, 0x10, 0x0f, 0x56, 0x5c, 0x40, 0x38, 0xfe, 0x6d, 0x27, 0xed, 0x75, 0xf2, 0x41,
		0xf6, 0xb5, 0x42, 0xb2, 0x69, 0xe5, 0x61, 0xe0, 0x92, 0x25, 0x89, 0xd3, 0xf1, 0xe7, 0x4b, 0x97,
		0x55, 0x79, 0x0d, 0xe6, 0x46, 0xe5, 0x45, 0x85, 0x5f, 0xf9, 0xae, 0x93, 0x7e, 0x72, 0x95, 0x27,
		0xea, 0x04, 0xe2, 0xea, 0xb7, 0x49, 0x2a, 0x97, 0xe2, 0x59, 0x6c, 0xfb, 0x17, 0x5a, 0xbc, 0xaf,
		0xb6, 0xe1, 0x5f, 0x7e, 0xb3, 0xff, 0x5f, 0x02, 0xf9, 0x8c, 0xb7, 0x9d, 0x5b, 0xf9, 0x57, 0x7b,
		0xb0, 0xff, 0xeb, 0xc1, 0xaf, 0x87, 0x2f, 0xf6, 0x7f, 0x7d, 0xce, 0x3b, 0xd6, 0x4d, 0xdd, 0x55,
		0xf6, 0x6d, 0x17, 0x35, 0x9a, 0xec, 0x50, 0x7d, 0xdb, 0x60, 0x79, 0xc1, 0x7a, 0x85, 0xdd, 0x81,
		0x60, 0x59, 0xb0, 0x2c, 0x58, 0xb6, 0x52, 0x2c, 0x2b, 0x87, 0x3b, 0x7b, 0x83, 0x3c, 0x77, 0xbd,
		0xf8, 0xff, 0x8d, 0x3b, 0x3d, 0x01, 0xe4, 0xb9, 0xf7, 0xcf, 0x0a, 0xbf, 0xb3, 0xd5, 0xc9, 0x73,
		0x97, 0xa5, 0x95, 0x83, 0xcf, 0xc6, 0x3f, 0xfe, 0xb5, 0x1b, 0xff, 0x7a, 0xf1, 0xef, 0x7f, 0xed,
		0xc5, 0xbf, 0x5e, 0xcc, 0xfe, 0x71, 0x6f, 0xfa, 0x3f, 0xff, 0xb3, 0xff, 0xd7, 0xbf, 0xf7, 0xff,
		0xb5, 0x1b, 0x1f, 0xcc, 0xff, 0xed, 0xfe, 0xf3, 0x7f, 0xed, 0xc6, 0xcf, 0x2f, 0x7e, 0xfa, 0xc7,
		0xc7, 0x8f, 0x3b, 0xeb, 0xfe, 0x9d, 0x9f, 0xfe, 0xe7, 0xd9, 0x5f, 0xd5, 0x69, 0xe7, 0x45, 0x95,
		0xc7, 0xfa, 0xe7, 0x59, 0xf3, 0x3f, 0xc5, 0xce, 0xf6, 0xff, 0xfe, 0x43, 0xeb, 0x74, 0x7f, 0xfa,
		0xff, 0x1a, 0xbe, 0x21, 0x87, 0x8a, 0x6e, 0xbf, 0xbb, 0xcd, 0xb3, 0x4e, 0x3c, 0x4e, 0x47, 0x79,
		0xe7, 0xb2, 0x5f, 0xb1, 0x1d, 0xc8, 0xdc, 0x95, 0xcb, 0x5c, 0xda, 0x0d, 0x22, 0xa6, 0x5b, 0x18,
		0xad, 0x77, 0xbf, 0xbf, 0x3e, 0xd8, 0x7f, 0xb1, 0x17, 0xc5, 0xd1, 0x51, 0xf4, 0x6a, 0x90, 0xf5,
		0x5c, 0x16, 0xfd, 0xd1, 0xc9, 0xdd, 0x97, 0xce, 0xd7, 0x68, 0x51, 0xa1, 0x88, 0x0e, 0xa2, 0x7f,
		0xbc, 0xfa, 0xa3, 0x15, 0x1f, 0xfc, 0xf4, 0xf3, 0xc7, 0xf4, 0x6c, 0x56, 0x9b, 0x88, 0x0e, 0x76,
		0xf6, 0x03, 0x6f, 0x28, 0xf8, 0xf6, 0xba, 0xea, 0xd4, 0x53, 0xb0, 0xc9, 0xfb, 0x24, 0x9a, 0x09,
		0x30, 0x9a, 0xc9, 0x07, 0x79, 0xa7, 0x3f, 0x6d, 0xbd, 0x16, 0x48, 0xca, 0x2f, 0x7f, 0x39, 0x11,
		0x0d, 0x11, 0x0d, 0x11, 0xcd, 0x56, 0x45, 0x34, 0xe3, 0x24, 0xcd, 0x9f, 0xed, 0x93, 0x46, 0xaf,
		0xe6, 0x41, 0x49, 0xa3, 0x3f, 0x4a, 0xf7, 0x48, 0xa3, 0xdf, 0xf3, 0x6a, 0x49, 0xa3, 0x03, 0x3c,
		0xfd, 0x03, 0x9e, 0x53, 0x74, 0xe0, 0xe4, 0xb0, 0xe7, 0xe2, 0xfb, 0x81, 0x9f, 0xc0, 0x4f, 0xe0,
		0x27, 0xf0, 0x13, 0xf8, 0x09, 0xfc, 0x04, 0x7e, 0x02, 0x3f, 0x81, 0x9f, 0x01, 0xc3, 0x4f, 0xe8,
		0x2a, 0x3f, 0x48, 0x57, 0xa9, 0x80, 0x75, 0x64, 0xc3, 0x08, 0x19, 0x8f, 0x5c, 0xfc, 0x79, 0xdc,
		0xcf, 0x93, 0x61, 0xdf, 0x55, 0x94, 0xad, 0xfe, 0x86, 0x13, 0xee, 0x7e, 0xb7, 0x67, 0x5c, 0x91,
		0x5d, 0xb8, 0x22, 0x1e, 0xa0, 0x7f, 0xb8, 0x22, 0x8f, 0xff, 0x45, 0x95, 0x71, 0x45, 0xba, 0x8b,
		0x3b, 0x50, 0x71, 0x7a, 0x60, 0xfe, 0xbd, 0x9e, 0x6f, 0x52, 0x22, 0x2d, 0x40, 0x5a, 0x60, 0x3b,
		0xd3, 0x02, 0x95, 0x6f, 0x52, 0x9a, 0x0d, 0xa9, 0xee, 0x49, 0x4f, 0xc1, 0x66, 0x19, 0x04, 0x13,
		0x59, 0x98, 0xc8, 0x62, 0x66, 0x82, 0xd5, 0x4c, 0xb1, 0x8a, 0x49, 0x16, 0x4a, 0x08, 0x30, 0x91,
		0xe5, 0x2e, 0x72, 0x63, 0x39, 0x2f, 0xcb, 0x79, 0xfd, 0x7b, 0x41, 0xaa, 0xc9, 0xa1, 0xbb, 0x79,
		0x90, 0x1a, 0xee, 0xe5, 0x75, 0x97, 0x15, 0x6e, 0x42, 0xf9, 0x86, 0xfd, 0xaa, 0x73, 0xc7, 0xc4,
		0x92, 0xc4, 0x92, 0xc4, 0x92, 0x7e, 0xc7, 0x92, 0x15, 0x27, 0xa5, 0x64, 0x93, 0x53, 0x42, 0x86,
		0x85, 0x48, 0x8a, 0x48, 0x8a, 0x48, 0xaa, 0xe2, 0x5c, 0x4f, 0xc5, 0x86, 0xaa, 0xf8, 0xe2, 0x4e,
		0xbf, 0x3f, 0xf8, 0xf2, 0x0d, 0xdc, 0x75, 0x46, 0x72, 0x7a, 0xf9, 0x6d, 0x4d, 0xea, 0xf7, 0x22,
		0x85, 0xd4, 0x46, 0x32, 0x41, 0x26, 0x99, 0x28, 0x13, 0x4a, 0x98, 0x09, 0x27, 0xce, 0xc4, 0xcd,
		0xbe, 0x86, 0xf9, 0xd7, 0x73, 0x03, 0x5a, 0xee, 0x40, 0xdd, 0x2d, 0xa8, 0xbb, 0x07, 0x55, 0x37,
		0x21, 0xe3, 0x2e, 0x84, 0xdc, 0x86, 0x7c, 0x22, 0x4e, 0x31, 0x21, 0x27, 0x9c, 0x98, 0x93, 0x7e,
		0x05, 0xc2, 0x89, 0x3a, 0xfd, 0x84, 0x9d, 0xdc, 0x4d, 0x90, 0xe8, 0x64, 0xfc, 0xdc, 0xb9, 0x4d,
		0x3e, 0x8f, 0x3f, 0x57, 0xcc, 0x67, 0xbd, 0xf7, 0x1a, 0x94, 0xc5, 0x85, 0x8c, 0x6f, 0xf6, 0xc0,
		0x36, 0x60, 0x1b, 0xb0, 0x0d, 0xd8, 0x06, 0x6c, 0x53, 0x39, 0x6d, 0xe4, 0x3e, 0xeb, 0xf5, 0x42,
		0x50, 0x84, 0x0c, 0xad, 0xe4, 0xfb, 0x8f, 0xec, 0x7d, 0x8f, 0xa4, 0x69, 0x27, 0x77, 0x84, 0x09,
		0xd3, 0x50, 0xee, 0xc8, 0xd3, 0xa2, 0x2c, 0xdc, 0xd5, 0x75, 0x69, 0x0a, 0x83, 0x92, 0x59, 0x28,
		0xab, 0x4a, 0xe7, 0x56, 0x5f, 0x55, 0xa4, 0x69, 0x2d, 0xdb, 0xac, 0x33, 0x4f, 0xc2, 0xfc, 0xf6,
		0x0b, 0x22, 0xd6, 0x9a, 0x46, 0xac, 0x5b, 0xdd, 0x23, 0x64, 0xdc, 0x8a, 0xe2, 0x26, 0x7f, 0x5c,
		0x65, 0x3f, 0x4a, 0xf5, 0x6f, 0xb5, 0xca, 0x35, 0x93, 0xfd, 0x24, 0xfd, 0xef, 0xf8, 0xb2, 0x93,
		0xf6, 0xbe, 0x24, 0xbd, 0xfc, 0x3a, 0x76, 0xb7, 0xf9, 0xe4, 0xe6, 0x7c, 0x1e, 0xa7, 0x49, 0xfe,
		0x55, 0xae, 0xf0, 0xfc, 0xb7, 0x52, 0x29, 0x47, 0x53, 0x8e, 0x36, 0x8f, 0xcd, 0x29, 0x47, 0xeb,
		0x79, 0x14, 0xb1, 0x72, 0xb4, 0x50, 0xff, 0xcc, 0x9d, 0xeb, 0x24, 0xd2, 0x47, 0x23, 0x6c, 0xc0,
		0xc4, 0x0d, 0x99, 0x86, 0x41, 0xd3, 0x33, 0x6c, 0x5a, 0x06, 0x4e, 0xdd, 0xd0, 0xa9, 0x1b, 0x3c,
		0x55, 0xc3, 0x27, 0x1b, 0x85, 0x49, 0xc5, 0x4a, 0x52, 0x06, 0xb1, 0x10, 0x20, 0x45, 0x52, 0xbb,
		0xf7, 0x5e, 0xca, 0x90, 0xd6, 0xee, 0x33, 0x95, 0xc2, 0xa9, 0x0a, 0x71, 0x93, 0xa9, 0x69, 0x3a,
		0xf5, 0x4d, 0xa8, 0xb6, 0x29, 0x35, 0x33, 0xa9, 0x66, 0xa6, 0xd5, 0xc4, 0xc4, 0x2a, 0xa5, 0xd3,
		0x84, 0x6f, 0x9c, 0x78, 0xfd, 0xe7, 0xce, 0x7d, 0x93, 0xef, 0x71, 0xb9, 0x83, 0x24, 0xf7, 0x82,
		0x7e, 0x45, 0x4a, 0x99, 0xc4, 0x42, 0x9e, 0x7a, 0x46, 0x51, 0xfe, 0x26, 0xfd, 0x45, 0xea, 0x78,
		0x85, 0x1c, 0x1f, 0x32, 0x8f, 0x7f, 0x97, 0x19, 0x13, 0x49, 0x4b, 0xca, 0xa9, 0x84, 0x44, 0xe3,
		0x55, 0x35, 0x1b, 0xbb, 0x1f, 0xb4, 0xc9, 0x55, 0x6c, 0xf2, 0x36, 0x8f, 0xe7, 0xf7, 0x89, 0xe7,
		0x89, 0xe7, 0x89, 0xe7, 0x89, 0xe7, 0x89, 0xe7, 0x89, 0xe7, 0x89, 0xe7, 0x89, 0xe7, 0x89, 0xe7,
		0x89, 0xe7, 0x09, 0x43, 0x09, 0x43, 0x37, 0x0d, 0x43, 0x2b, 0x98, 0xee, 0xab, 0x18, 0x85, 0xd2,
		0x4c, 0xe5, 0xb1, 0x2e, 0x35, 0x44, 0x72, 0x04, 0xd9, 0xb8, 0x9b, 0xa7, 0x73, 0x73, 0x7c, 0x3a,
		0xfb, 0x11, 0xcd, 0xf9, 0x6f, 0x68, 0x2f, 0xd6, 0x4b, 0xb6, 0x5f, 0x7d, 0x1a, 0xb6, 0xff, 0x98,
		0x3e, 0x79, 0xfb, 0xc3, 0xc8, 0xbd, 0x9d, 0x3f, 0x78, 0x6b, 0xf2, 0xdc, 0xed, 0xe3, 0xcb, 0x4f,
		0xc3, 0xf6, 0x49, 0x92, 0xfe, 0xf7, 0xab, 0xc5, 0x63, 0x1f, 0xdf, 0xe6, 0xaf, 0x8b, 0x87, 0xde,
		0x82, 0xbe, 0x30, 0x99, 0x44, 0x8b, 0x68, 0x82, 0x45, 0xbc, 0xd3, 0x6b, 0x9f, 0x4e, 0x2f, 0x3d,
		0xb4, 0x4f, 0xa7, 0x57, 0x0d, 0xdd, 0x1d, 0x83, 0x47, 0x7e, 0xe4, 0xd0, 0x18, 0x3c, 0x62, 0x90,
		0x1c, 0xa2, 0x2f, 0xce, 0xcb, 0xe4, 0x0f, 0x79, 0xf4, 0x2d, 0x8e, 0xc0, 0x19, 0x3c, 0x62, 0x19,
		0x48, 0x33, 0x47, 0xc3, 0x1f, 0x77, 0xcd, 0x1c, 0x0d, 0x5c, 0x35, 0xae, 0x1a, 0x57, 0x8d, 0xab,
		0x66, 0x8e, 0xc6, 0xe3, 0x3f, 0xcc, 0xd1, 0xd8, 0x4c, 0x1e, 0x73, 0x34, 0x2a, 0x55, 0x15, 0xe6,
		0x68, 0xd4, 0x4b, 0x67, 0x98, 0xa3, 0x21, 0x1b, 0x80, 0x51, 0xc9, 0x34, 0xae, 0x64, 0x0a, 0x14,
		0xbe, 0x59, 0x54, 0x13, 0x9c, 0x1a, 0x34, 0x2a, 0x2d, 0xb3, 0x56, 0x52, 0xab, 0xae, 0xd3, 0xe6,
		0x9c, 0x44, 0x64, 0x73, 0x4e, 0xc2, 0xe6, 0x1c, 0x3f, 0xb3, 0x13, 0x6c, 0xce, 0x31, 0xc9, 0x2e,
		0xb0, 0x39, 0x67, 0xa3, 0x6b, 0xc0, 0xe6, 0x1c, 0x1a, 0x58, 0xac, 0x0d, 0x90, 0x9a, 0x21, 0x52,
		0x31, 0x48, 0x61, 0x44, 0x39, 0x62, 0x0d, 0x2c, 0x54, 0xc2, 0x7e, 0x50, 0x08, 0x95, 0x30, 0x0d,
		0x53, 0xaf, 0x61, 0xf2, 0xf5, 0x4c, 0xbf, 0x96, 0x0b, 0x50, 0x77, 0x05, 0xea, 0x2e, 0x41, 0xd5,
		0x35, 0xc8, 0xa6, 0x02, 0xa9, 0x84, 0x3d, 0xda, 0x7a, 0x51, 0x09, 0x7b, 0xc4, 0x0f, 0xa1, 0x12,
		0x26, 0xa2, 0xeb, 0x54, 0xc2, 0x2a, 0x52, 0x15, 0x2a, 0x61, 0x51, 0x58, 0x0e, 0x4a, 0xfe, 0xdb,
		0x99, 0x28, 0xbf, 0x4a, 0x0e, 0x13, 0xe5, 0x85, 0x83, 0xea, 0x9a, 0x97, 0x0e, 0x13, 0x26, 0xca,
		0x33, 0x51, 0xde, 0x30, 0x76, 0x27, 0x4d, 0xeb, 0x45, 0x6c, 0x4e, 0x9a, 0x56, 0xcf, 0xa3, 0x30,
		0x51, 0xde, 0xc0, 0x80, 0x89, 0x1b, 0x32, 0x0d, 0x83, 0xa6, 0x67, 0xd8, 0xb4, 0x0c, 0x9c, 0xba,
		0xa1, 0x53, 0x37, 0x78, 0xaa, 0x86, 0x4f, 0x36, 0x0a, 0x63, 0x02, 0xdd, 0x63, 0xef, 0x25, 0x13,
		0xe8, 0x7c, 0x35, 0x9d, 0xfa, 0x26, 0x54, 0xdb, 0x94, 0x9a, 0x99, 0x54, 0x33, 0xd3, 0x6a, 0x62,
		0x62, 0x95, 0xd2, 0x69, 0x4c, 0xa0, 0xdb, 0x1c, 0x49, 0x32, 0x51, 0x7e, 0x1d, 0x79, 0x4c, 0x94,
		0x37, 0x86, 0x43, 0x5b, 0x32, 0xca, 0x2f, 0x61, 0xa2, 0xfc, 0xc3, 0xaf, 0x88, 0x89, 0xf2, 0x8f,
		0x06, 0xa7, 0x4c, 0x94, 0x27, 0x9e, 0x27, 0x9e, 0x27, 0x9e, 0x27, 0x9e, 0x27, 0x9e, 0x27, 0x9e,
		0x27, 0x9e, 0x27, 0x9e, 0x27, 0x9e, 0x27, 0x0c, 0x25, 0x0c, 0xdd, 0x38, 0x0c, 0x65, 0xa2, 0x7c,
		0x28, 0x3a, 0xe5, 0xbd, 0x2e, 0x79, 0x3a, 0x51, 0xbe, 0xc9, 0x44, 0x79, 0x26, 0xca, 0x4b, 0x27,
		0x54, 0xe8, 0xf4, 0xf2, 0x02, 0xdd, 0xd3, 0xe9, 0xa5, 0xe7, 0xee, 0x20, 0xe4, 0xae, 0x73, 0x58,
		0x10, 0x72, 0x95, 0x13, 0x42, 0xf4, 0xc2, 0x79, 0x99, 0xf0, 0x21, 0x77, 0xbe, 0xc5, 0x51, 0x37,
		0x84, 0xdc, 0xb5, 0x44, 0x40, 0xc8, 0xfd, 0x11, 0x61, 0x10, 0x72, 0xc5, 0x8c, 0x0d, 0x84, 0x5c,
		0x74, 0xc6, 0x0b, 0x07, 0x25, 0xff, 0xed, 0x8c, 0xa6, 0xad, 0x04, 0x0a, 0x6d, 0x41, 0x4a, 0x94,
		0xd1, 0xb4, 0xd6, 0xea, 0xe0, 0x83, 0x1a, 0x78, 0x36, 0x9a, 0xb6, 0x59, 0xb3, 0xd1, 0xb4, 0xd5,
		0xa6, 0xb0, 0x45, 0x52, 0xd7, 0x62, 0xc3, 0x69, 0xf7, 0x19, 0x4e, 0x1b, 0x50, 0xfe, 0x81, 0xe1,
		0xb4, 0x1e, 0x0f, 0xa7, 0x95, 0xea, 0xad, 0x13, 0xee, 0xa5, 0x13, 0x4d, 0x1f, 0x4b, 0x2c, 0x20,
		0xbd, 0x90, 0xa9, 0x06, 0xee, 0x32, 0xf7, 0x81, 0x6a, 0xa0, 0x47, 0xa6, 0x58, 0xc5, 0x24, 0x87,
		0x11, 0xe9, 0x89, 0xa5, 0x76, 0x15, 0x7a, 0xf1, 0x84, 0x7a, 0xef, 0x88, 0xe2, 0x82, 0x8a, 0xe2,
		0x2a, 0x8c, 0xe3, 0x2b, 0x88, 0x99, 0x9e, 0x18, 0xbe, 0xe9, 0xaa, 0xdf, 0xb0, 0xf1, 0x9b, 0x6d,
		0x54, 0x12, 0x7f, 0x6e, 0x1a, 0x92, 0x6f, 0xa6, 0x59, 0x3f, 0xae, 0x0f, 0x3f, 0xf6, 0x37, 0x7f,
		0x50, 0x83, 0xaa, 0xd2, 0x1c, 0x4d, 0x8d, 0xd9, 0x40, 0x3d, 0xd6, 0x57, 0x8b, 0x1f, 0xd3, 0x82,
		0xf5, 0xdf, 0xe1, 0x0f, 0xbc, 0xbf, 0x46, 0xea, 0x92, 0x4f, 0xd7, 0x97, 0x83, 0xec, 0xc7, 0x7b,
		0x6e, 0x0a, 0x5f, 0xfd, 0xed, 0xab, 0x7e, 0x50, 0x8f, 0x36, 0xcb, 0xa5, 0x6c, 0x0c, 0xec, 0xab,
		0x00, 0xf0, 0xd5, 0x01, 0xf5, 0xaa, 0x00, 0x79, 0xe5, 0xc0, 0xbb, 0x72, 0x80, 0x5d, 0x29, 0x90,
		0xd6, 0xb5, 0x7c, 0x9b, 0xe6, 0x2a, 0x8a, 0x3b, 0xb3, 0xf9, 0x6b, 0xfe, 0xfe, 0x16, 0x6e, 0xfa,
		0x96, 0xab, 0x49, 0x6c, 0x56, 0x16, 0x6d, 0x57, 0x19, 0x5d, 0x57, 0x1f, 0x4d, 0x57, 0x1d, 0x3d,
		0x8b, 0x45, 0xcb, 0x62, 0xd1, 0xb1, 0x48, 0x34, 0x6c, 0x0b, 0x88, 0xab, 0x4a, 0x44, 0x36, 0x3a,
		0x57, 0x49, 0x3c, 0xea, 0x5c, 0x25, 0xa3, 0xea, 0x6b, 0x19, 0xdf, 0xbe, 0x9a, 0x65, 0x7b, 0xfe,
		0x25, 0xd7, 0xa8, 0x67, 0x98, 0x24, 0xcf, 0x6a, 0x5e, 0xcf, 0x58, 0xdc, 0x79, 0xb9, 0x82, 0x46,
		0x21, 0x81, 0x49, 0xce, 0x64, 0xf4, 0xcd, 0x8c, 0x90, 0x9a, 0x31, 0x52, 0x31, 0x4a, 0xd5, 0x1a,
		0xa7, 0x8a, 0x8d, 0x94, 0x98, 0xb1, 0xfa, 0x66, 0xb4, 0x7a, 0x3d, 0x2d, 0x6e, 0xcf, 0x37, 0x51,
		0xcc, 0x73, 0xd6, 0x36, 0x6b, 0x7a, 0xe6, 0x4d, 0xcb, 0xcc, 0xa9, 0x9b, 0x3b, 0x75, 0xb3, 0xa7,
		0x6a, 0xfe, 0x64, 0xcc, 0xa0, 0x90, 0x39, 0x14, 0x37, 0x8b, 0x85, 0x00, 0xe1, 0x41, 0xf7, 0x77,
		0xae, 0xa5, 0xe8, 0xc0, 0x7b, 0x25, 0x43, 0xa9, 0x66, 0x30, 0x35, 0x0d, 0xa7, 0xbe, 0x01, 0xd5,
		0x36, 0xa4, 0x66, 0x06, 0xd5, 0xcc, 0xb0, 0x9a, 0x18, 0x58, 0x59, 0x43, 0x2b, 0x6c, 0x70, 0xd5,
		0x0c, 0x6f, 0x21, 0xc8, 0xf5, 0x93, 0x4f, 0xc9, 0x65, 0xdf, 0xc5, 0x33, 0x55, 0x8c, 0x87, 0x83,
		0x7e, 0xd2, 0xfd, 0xaa, 0x77, 0x19, 0x8a, 0x5e, 0xc2, 0xd5, 0xcf, 0xa1, 0xa4, 0xa0, 0x3a, 0xe3,
		0xfa, 0xd4, 0x0d, 0xb7, 0x85, 0x01, 0xb7, 0x33, 0xe4, 0x56, 0x06, 0xdd, 0xdc, 0xb0, 0x9b, 0x1b,
		0x78, 0x53, 0x43, 0xaf, 0x63, 0xf0, 0x95, 0x0c, 0x7f, 0x71, 0x92, 0x6a, 0xe3, 0xff, 0xee, 0xdc,
		0xd7, 0xbe, 0xeb, 0x5c, 0x65, 0xee, 0x4a, 0xf3, 0xc2, 0x2e, 0xf0, 0xf2, 0x0b, 0x45, 0x99, 0xad,
		0xa2, 0xdd, 0xa6, 0x1b, 0x67, 0xc3, 0x41, 0xff, 0x65, 0x36, 0x18, 0xe7, 0x49, 0xfa, 0x69, 0xee,
		0x79, 0x8a, 0x7f, 0x3d, 0xfb, 0xff, 0xc6, 0x3d, 0x77, 0x95, 0xa4, 0x49, 0x9e, 0x0c, 0xd2, 0xd1,
		0xfd, 0x7f, 0x54, 0xfc, 0xc9, 0xb4, 0x49, 0xa6, 0x56, 0xfa, 0xa8, 0xbc, 0xbb, 0xa0, 0x90, 0x6b,
		0xb6, 0xc3, 0x40, 0xcf, 0xac, 0x68, 0x30, 0xcd, 0x33, 0xd7, 0x75, 0x33, 0x26, 0xb4, 0x32, 0xae,
		0x5b, 0x08, 0x56, 0x52, 0x53, 0x8d, 0xd1, 0x43, 0x77, 0x84, 0x0a, 0x70, 0x4a, 0xee, 0xfb, 0x5c,
		0x00, 0x88, 0x01, 0xc4, 0x00, 0x62, 0x00, 0x31, 0x80, 0x58, 0xed, 0xbe, 0xea, 0xcd, 0xc5, 0xbe,
		0x03, 0x88, 0xf7, 0x6a, 0xf5, 0x0a, 0xdd, 0x6d, 0x9e, 0x75, 0xe2, 0x71, 0x3a, 0xca, 0x3b, 0x97,
		0x7d, 0xe5, 0x97, 0x99, 0xb9, 0x2b, 0x97, 0xb9, 0xb4, 0xeb, 0x54, 0xa1, 0x41, 0xa4, 0x32, 0x72,
		0xea, 0x5e, 0xcd, 0x7d, 0xf7, 0xfb, 0xeb, 0xe8, 0xc5, 0xaf, 0x7b, 0x7b, 0x51, 0x1c, 0x1d, 0xf5,
		0x6e, 0x5c, 0x96, 0x27, 0x23, 0x37, 0xb1, 0x46, 0xd1, 0xe0, 0x2a, 0x5a, 0xf0, 0x35, 0xa2, 0x29,
		0x61, 0x23, 0x4a, 0xd2, 0xe8, 0xd5, 0x1f, 0x2d, 0x65, 0xfb, 0x6c, 0xe9, 0x9c, 0x56, 0x39, 0xa9,
		0x6f, 0x4a, 0xf2, 0xb3, 0xcd, 0xb3, 0x58, 0xfb, 0xab, 0x95, 0x7e, 0x6b, 0x7d, 0x2d, 0x52, 0x7f,
		0xe6, 0xbf, 0x9e, 0xd4, 0x53, 0xda, 0x05, 0x39, 0x04, 0x72, 0x08, 0xbe, 0xe4, 0x10, 0x46, 0x2e,
		0xed, 0xe9, 0x27, 0x10, 0xa6, 0x52, 0xc9, 0x1e, 0x90, 0x3d, 0x20, 0x7b, 0x40, 0xf6, 0x80, 0xec,
		0x01, 0xd9, 0x03, 0xb2, 0x07, 0x64, 0x0f, 0xc8, 0x1e, 0x90, 0x3d, 0x20, 0x7b, 0x40, 0xf6, 0x80,
		0xec, 0x01, 0xd9, 0x03, 0xb2, 0x07, 0xc1, 0x64, 0x0f, 0xe2, 0xcf, 0x9a, 0x03, 0xef, 0x97, 0x33,
		0x08, 0x53, 0xc9, 0x44, 0xbf, 0x44, 0xbf, 0x44, 0xbf, 0x44, 0xbf, 0x44, 0xbf, 0x6a, 0xf7, 0x75,
		0x9c, 0xa4, 0xf9, 0x3f, 0x0d, 0x62, 0xdf, 0xe7, 0x8a, 0x22, 0x75, 0x36, 0x17, 0x79, 0x10, 0x18,
		0x6a, 0x6e, 0x36, 0xba, 0x23, 0x5c, 0x79, 0xd3, 0xd1, 0x1d, 0xf9, 0x56, 0x5b, 0x6c, 0xee, 0x5e,
		0x2d, 0xed, 0xad, 0x36, 0x46, 0x56, 0xab, 0xac, 0x7a, 0x9d, 0x5b, 0x7b, 0xd5, 0xdb, 0x7f, 0xfe,
		0x1c, 0xe5, 0xb3, 0x56, 0x3e, 0x62, 0x75, 0x62, 0xf5, 0xad, 0x8e, 0xd5, 0x83, 0xe6, 0xb5, 0x2a,
		0x2b, 0x86, 0xce, 0x68, 0xdd, 0x62, 0x00, 0x6c, 0xf1, 0x4f, 0xbf, 0x14, 0xf3, 0xe9, 0x8a, 0x7f,
		0xfa, 0xa5, 0x18, 0xcf, 0xf2, 0xcb, 0x7c, 0x08, 0x41, 0xa0, 0xcb, 0xe2, 0x04, 0x55, 0x44, 0x68,
		0x79, 0xff, 0xfd, 0x99, 0x21, 0x81, 0x65, 0xfe, 0xf7, 0x45, 0x24, 0x6a, 0xc3, 0x20, 0xf6, 0x19,
		0x06, 0x11, 0x4e, 0xba, 0x87, 0x61, 0x10, 0x0c, 0x83, 0x78, 0xf0, 0xc4, 0x18, 0x06, 0xc1, 0x30,
		0x88, 0x30, 0x0d, 0xb8, 0x9d, 0x21, 0xb7, 0x32, 0xe8, 0xe6, 0x86, 0xdd, 0xdc, 0xc0, 0x9b, 0x1a,
		0x7a, 0xdd, 0xc0, 0x9d, 0x61, 0x10, 0x82, 0x78, 0x99, 0x61, 0x10, 0x3e, 0x66, 0x1f, 0x98, 0x55,
		0x50, 0x1d, 0xac, 0x83, 0x6d, 0x00, 0x5e, 0x03, 0xaf, 0x81, 0xd7, 0xc0, 0x6b, 0xe0, 0xb5, 0x8a,
		0xee, 0x2b, 0x6c, 0x83, 0xaa, 0x52, 0x21, 0xb0, 0x0d, 0x74, 0x35, 0x17, 0xb6, 0xc1, 0x7a, 0x4e,
		0x0a, 0xb6, 0xc1, 0x2a, 0xbf, 0x05, 0xdb, 0xc0, 0x4c, 0xda, 0x05, 0x21, 0xee, 0xa3, 0x55, 0x16,
		0x2a, 0x3d, 0xc1, 0x2d, 0xc1, 0x2d, 0xc1, 0x2d, 0xc1, 0x2d, 0xc1, 0x2d, 0xc1, 0x2d, 0xc1, 0x2d,
		0xc1, 0x2d, 0xc1, 0x2d, 0xc1, 0x2d, 0xc1, 0x2d, 0xc1, 0x2d, 0xc1, 0x6d, 0x2d, 0x82, 0x5b, 0x98,
		0xde, 0x04, 0x67, 0x04, 0x67, 0x04, 0x67, 0x04, 0x67, 0xdb, 0x12, 0x9c, 0xc1, 0xf4, 0xae, 0x51,
		0xdc, 0x02, 0xd3, 0x1b, 0xb2, 0x2d, 0x4c, 0x6f, 0x94, 0x0f, 0xa6, 0x37, 0xa1, 0xa4, 0x8d, 0x04,
		0x88, 0xc8, 0x0a, 0x44, 0xe4, 0x19, 0xff, 0x35, 0x54, 0x1e, 0x72, 0x50, 0x9b, 0xf4, 0x95, 0xf4,
		0xcd, 0x4b, 0x3d, 0x6b, 0x88, 0x32, 0xc6, 0xb3, 0x71, 0x37, 0x4f, 0xe7, 0x41, 0xc8, 0xe9, 0xec,
		0x07, 0x34, 0xe7, 0xcf, 0xdf, 0x6e, 0xcd, 0x9f, 0xba, 0xfd, 0xea, 0xd3, 0xb0, 0x7d, 0x3a, 0x7f,
		0xd6, 0xf6, 0xd1, 0x55, 0x72, 0xd6, 0xb9, 0x4a, 0xda, 0x47, 0xbd, 0xde, 0x34, 0x5b, 0x2a, 0x73,
		0x03, 0xaa, 0xd7, 0x4f, 0x01, 0xdd, 0x6c, 0x2c, 0xde, 0x56, 0x3c, 0x3f, 0x42, 0x19, 0xd5, 0x2c,
		0xa2, 0xc4, 0xb2, 0x38, 0xa1, 0xbb, 0x26, 0x9b, 0x96, 0x13, 0x4f, 0xc3, 0x69, 0xa4, 0xdd, 0xf4,
		0xd2, 0x6c, 0x5a, 0x69, 0x35, 0xf5, 0x34, 0x9a, 0x7a, 0xda, 0x4c, 0x35, 0x4d, 0x16, 0x96, 0x77,
		0x15, 0x4f, 0x7b, 0x29, 0x12, 0x22, 0x35, 0x08, 0x90, 0x05, 0xe1, 0x71, 0x67, 0x67, 0x3e, 0x8d,
		0xe6, 0x97, 0xb2, 0x65, 0xde, 0x66, 0x8f, 0x38, 0x1c, 0xf6, 0xbf, 0x4a, 0x8f, 0x3e, 0xf8, 0xe6,
		0x10, 0x97, 0xa5, 0xc9, 0xfa, 0xc3, 0x3d, 0xfc, 0xe1, 0xa3, 0xfc, 0x61, 0x36, 0x1c, 0xf4, 0x71,
		0x88, 0x01, 0x3a, 0xc4, 0xe9, 0x8b, 0xc3, 0x23, 0x46, 0x1a, 0x33, 0x63, 0x1a, 0xdd, 0xc5, 0xad,
		0x57, 0x9a, 0xd5, 0x35, 0x97, 0x57, 0xb3, 0x61, 0x5d, 0xbb, 0xf5, 0x1c, 0xd6, 0x25, 0x6c, 0x42,
		0xb5, 0x4d, 0xa9, 0x99, 0x49, 0x35, 0x33, 0xad, 0x36, 0x26, 0x56, 0xd6, 0xd4, 0x0a, 0x9b, 0x5c,
		0x35, 0xd3, 0x5b, 0x08, 0xea, 0xcd, 0x38, 0x36, 0xb1, 0xbb, 0x1d, 0x0e, 0xb2, 0xdc, 0x6c, 0x5a,
		0xd7, 0xea, 0xc7, 0xa8, 0x33, 0xcf, 0xe8, 0xdd, 0xf1, 0xff, 0x3e, 0x7e, 0xfd, 0xbe, 0xfd, 0xee,
		0xcf, 0x0f, 0xef, 0x8f, 0xa1, 0x1b, 0x05, 0xe0, 0x07, 0x2d, 0xfc, 0xa1, 0xa1, 0x5f, 0xb4, 0xf2,
		0x8f, 0xe6, 0x7e, 0xd2, 0xdc, 0x5f, 0xda, 0xfa, 0x4d, 0x1d, 0xff, 0xa9, 0xe4, 0x47, 0x8b, 0xa3,
		0xb4, 0xeb, 0x69, 0x5b, 0x78, 0xb6, 0xf9, 0x6c, 0xaf, 0x7c, 0xf2, 0x20, 0x06, 0xe4, 0xa3, 0x03,
		0x45, 0x99, 0xc7, 0xe9, 0xf8, 0xb3, 0xbe, 0xbd, 0x78, 0x3f, 0x38, 0xcb, 0xb3, 0x24, 0xfd, 0x64,
		0xd2, 0xf9, 0xd3, 0xd8, 0x9d, 0xbc, 0xeb, 0xa3, 0xd7, 0xaf, 0x8f, 0x5b, 0x0b, 0x9f, 0x6e, 0xd0,
		0xf7, 0xb4, 0x37, 0x65, 0x78, 0xa8, 0x03, 0x0b, 0xe5, 0xcb, 0xbc, 0xf4, 0xc6, 0x9b, 0x53, 0xe3,
		0x68, 0xf0, 0xba, 0x4b, 0x6f, 0xda, 0xa4, 0xc1, 0xaa, 0xfc, 0x9e, 0x5f, 0x46, 0x7b, 0x35, 0x6d,
		0x75, 0xfa, 0x8b, 0xa5, 0x16, 0x15, 0xc8, 0x65, 0x01, 0x65, 0xa5, 0xd1, 0x72, 0xf2, 0xd9, 0x8b,
		0x68, 0xb9, 0xfc, 0x18, 0x44, 0xcb, 0x44, 0xcb, 0x44, 0xcb, 0x44, 0xcb, 0x44, 0xcb, 0x44, 0xcb,
		0x44, 0xcb, 0x44, 0xcb, 0x44, 0xcb, 0x44, 0xcb, 0x44, 0xcb, 0x44, 0xcb, 0x44, 0xcb, 0x44, 0xcb,
		0x26, 0xd1, 0xb2, 0x71, 0x4d, 0xd9, 0xa4, 0x96, 0x4c, 0x38, 0x47, 0x38, 0x47, 0x38, 0x47, 0x38,
		0x47, 0x38, 0xc7, 0xea, 0xa7, 0xe0, 0x56, 0x3f, 0x29, 0xe9, 0xe3, 0x49, 0x32, 0xca, 0x8f, 0xf2,
		0x3c, 0xd3, 0xd5, 0xc9, 0xb7, 0x49, 0x7a, 0xdc, 0x9f, 0xce, 0xba, 0x53, 0x1e, 0x89, 0xd0, 0x78,
		0xdb, 0xb9, 0x5d, 0x92, 0xbc, 0xf7, 0xcf, 0x83, 0x83, 0xc3, 0x17, 0x07, 0x07, 0xbb, 0x2f, 0x9e,
		0xbd, 0xd8, 0xfd, 0xf5, 0xf9, 0xf3, 0xbd, 0xc3, 0x3d, 0xcd, 0xf9, 0x33, 0x7f, 0x66, 0x3d, 0x97,
		0xb9, 0xde, 0xab, 0xaf, 0xfa, 0x4e, 0xad, 0x18, 0xf3, 0x33, 0x72, 0x99, 0xb6, 0x3f, 0x33, 0x1c,
		0x4c, 0xb9, 0xec, 0xcc, 0x07, 0xb3, 0xd3, 0x8f, 0x2f, 0xbf, 0x5a, 0x64, 0x3c, 0x7c, 0x98, 0x48,
		0x59, 0x72, 0xec, 0x53, 0x4d, 0xa8, 0x6b, 0x28, 0x6e, 0x71, 0xa9, 0x3f, 0x4c, 0x0e, 0x74, 0xf6,
		0x6a, 0xc9, 0x04, 0x90, 0x09, 0xf0, 0x25, 0x13, 0x60, 0x5c, 0x2f, 0x37, 0xa9, 0x93, 0x93, 0x09,
		0x20, 0x13, 0x40, 0x26, 0x80, 0x4c, 0x00, 0x99, 0x00, 0x32, 0x01, 0x64, 0x02, 0xc8, 0x04, 0x90,
		0x09, 0x20, 0x13, 0x40, 0x26, 0x80, 0x4c, 0x00, 0x99, 0x00, 0x32, 0x01, 0x9e, 0x66, 0x02, 0x98,
		0xc6, 0xba, 0x86, 0x3c, 0x9f, 0xa6, 0x64, 0x2e, 0x0d, 0x80, 0x9a, 0xcf, 0xe2, 0x0a, 0x76, 0x22,
		0xab, 0xe8, 0x9c, 0xcf, 0x4e, 0xee, 0xf4, 0xa6, 0xcd, 0xcc, 0xc4, 0xd5, 0x6c, 0xd8, 0xcc, 0x3e,
		0xc3, 0x66, 0x02, 0x02, 0x9f, 0x0c, 0x9b, 0x61, 0xd8, 0xcc, 0xc3, 0x47, 0xc6, 0xb0, 0x19, 0xe8,
		0x73, 0x55, 0x7f, 0xa0, 0xcf, 0x05, 0xe7, 0x0f, 0x0d, 0xfd, 0xa2, 0x75, 0x72, 0x86, 0x2a, 0x0b,
		0x55, 0x96, 0xea, 0x8e, 0x12, 0xfa, 0x1c, 0xf4, 0x39, 0x51, 0xe9, 0xd0, 0xe7, 0xa0, 0xcf, 0xe9,
		0x3e, 0x02, 0xf4, 0xb9, 0xa0, 0xa4, 0x30, 0x0b, 0x85, 0x60, 0x8e, 0x60, 0x8e, 0x60, 0x8e, 0x60,
		0x8e, 0x60, 0x8e, 0x60, 0x8e, 0x60, 0x8e, 0x60, 0x8e, 0x60, 0x8e, 0x60, 0x8e, 0x60, 0x8e, 0x60,
		0x8e, 0x60, 0x6e, 0xa5, 0x4a, 0x30, 0xaa, 0x83, 0x68, 0x83, 0x68, 0x83, 0x68, 0x83, 0x68, 0x63,
		0x5b, 0xa3, 0x0d, 0x08, 0x3a, 0x10, 0x74, 0xee, 0x1e, 0x17, 0x04, 0x1d, 0x08, 0x3a, 0x10, 0x74,
		0x20, 0xe8, 0x40, 0xd0, 0xa9, 0xfc, 0x52, 0xab, 0x13, 0x74, 0x98, 0x24, 0xb1, 0xb9, 0x3d, 0x64,
		0x92, 0x04, 0x81, 0x2a, 0x81, 0x2a, 0x81, 0x2a, 0x81, 0x2a, 0x81, 0x2a, 0x81, 0x2a, 0x81, 0x2a,
		0x81, 0x2a, 0x81, 0x2a, 0x81, 0x2a, 0x81, 0x2a, 0x81, 0x6a, 0x50, 0x81, 0x2a, 0x83, 0x0e, 0xd6,
		0x90, 0xe7, 0xeb, 0xa0, 0x83, 0x19, 0xbf, 0x3e, 0xd4, 0x39, 0x07, 0x4f, 0x02, 0x52, 0x3d, 0x2d,
		0x95, 0xf3, 0x55, 0xd5, 0x1a, 0xa2, 0x43, 0x29, 0xb2, 0x71, 0x37, 0x4f, 0xe7, 0x30, 0xe6, 0x74,
		0xf6, 0x1b, 0x9a, 0xf3, 0x9f, 0xd0, 0x6e, 0xcd, 0x1f, 0xbc, 0xfd, 0xea, 0xd3, 0xb0, 0x7d, 0x3a,
		0x7f, 0xdc, 0xf6, 0xd1, 0x55, 0x72, 0xd6, 0xb9, 0x4a, 0xda, 0x47, 0x93, 0x67, 0x6c, 0xcd, 0x1e,
		0xf1, 0x49, 0x18, 0x5a, 0x2a, 0xa0, 0xa1, 0x8d, 0xee, 0x22, 0x61, 0x25, 0xa3, 0x99, 0x05, 0xc6,
		0x9c, 0xcb, 0x11, 0xba, 0x63, 0xb2, 0x93, 0x3c, 0xc4, 0xb3, 0x7a, 0x1a, 0x59, 0xbc, 0xe5, 0xac,
		0xdd, 0xe5, 0xa7, 0xa1, 0xe4, 0xb5, 0x54, 0xc2, 0xf6, 0xea, 0x49, 0x39, 0x75, 0xbc, 0xfe, 0x7d,
		0xd2, 0x6d, 0xf2, 0xde, 0xf0, 0xaa, 0x91, 0xc6, 0xdc, 0x8d, 0xc6, 0xc2, 0x99, 0xc5, 0x73, 0xf7,
		0xa2, 0x34, 0xf8, 0xa8, 0x2c, 0x56, 0x67, 0x00, 0xd2, 0xae, 0xd6, 0x00, 0xa4, 0xdd, 0x7a, 0x0e,
		0x40, 0x92, 0x35, 0xa7, 0x56, 0x29, 0x13, 0xe6, 0x1f, 0x89, 0x9a, 0xdb, 0x7a, 0xc4, 0xd3, 0x6a,
		0xa5, 0x8c, 0x6f, 0x55, 0xe4, 0x9e, 0x4b, 0xf3, 0x24, 0xff, 0xaa, 0x53, 0xc6, 0x28, 0x90, 0xa5,
		0x42, 0x4a, 0xb8, 0xd1, 0x9c, 0xff, 0xb4, 0x57, 0x9d, 0x91, 0xd3, 0x2f, 0xcf, 0x1f, 0xfd, 0xde,
		0x6c, 0x9f, 0x4d, 0xfe, 0xcf, 0xfb, 0xff, 0x6a, 0x69, 0xf1, 0x68, 0x1a, 0xe7, 0x9d, 0xfe, 0xd8,
		0x8d, 0x54, 0x39, 0xc0, 0x46, 0x49, 0xf6, 0x66, 0xeb, 0xfc, 0xa0, 0xfd, 0xfb, 0xc9, 0x9f, 0xff,
		0xe7, 0xac, 0x75, 0xfc, 0xba, 0x51, 0xc7, 0xac, 0xa7, 0xe5, 0xc1, 0x9e, 0x1c, 0xbd, 0x3a, 0x3e,
		0x39, 0x7e, 0xd3, 0xfe, 0x70, 0xda, 0x7c, 0x7d, 0x74, 0xf6, 0x9e, 0xf3, 0xad, 0xf8, 0x7c, 0x39,
		0x57, 0x89, 0x73, 0x3d, 0x44, 0x6f, 0x85, 0xcf, 0x97, 0x73, 0xad, 0xfc, 0x5c, 0x4f, 0xf6, 0xcf,
		0x5b, 0xa7, 0xed, 0xe3, 0xf3, 0xd6, 0x29, 0xa7, 0x5a, 0xf5, 0xa9, 0x9e, 0xb7, 0x4e, 0xce, 0x38,
		0xd5, 0x0a, 0x4f, 0xf5, 0xd9, 0xe4, 0x54, 0xa7, 0x1e, 0xec, 0xed, 0x87, 0x93, 0xf7, 0xd8, 0x02,
		0xb9, 0xf3, 0xc5, 0xd2, 0xca, 0x9d, 0xee, 0x21, 0xda, 0x2b, 0x7c, 0xbe, 0x68, 0x6f, 0xf5, 0xa7,
		0xdb, 0x3c, 0xfd, 0x8f, 0xb3, 0xf7, 0x47, 0x9a, 0xe3, 0x30, 0xb6, 0xe8, 0x50, 0xdb, 0x67, 0xad,
		0xdf, 0x39, 0x58, 0x89, 0x83, 0x05, 0xd8, 0x56, 0x7a, 0xb0, 0x67, 0xef, 0xde, 0x1f, 0xb7, 0x5b,
		0x7f, 0x9e, 0x34, 0x5f, 0xff, 0xd7, 0x14, 0x28, 0x70, 0xb6, 0x62, 0x67, 0x7b, 0xc8, 0xd9, 0x56,
		0x77, 0xb6, 0xe7, 0xad, 0x53, 0x9b, 0x84, 0xad, 0xce, 0x54, 0x4a, 0xea, 0x5a, 0x7f, 0xab, 0x05,
		0xda, 0x7d, 0xa2, 0x66, 0x1b, 0xd2, 0xc2, 0xdc, 0x46, 0xe5, 0xd2, 0xce, 0x65, 0xdf, 0xf5, 0xf4,
		0xda, 0x32, 0x16, 0x02, 0x69, 0xc8, 0x58, 0x4b, 0x10, 0x0d, 0x19, 0x95, 0x6a, 0x07, 0x0d, 0x19,
		0x34, 0x64, 0x3c, 0x70, 0x62, 0xfa, 0x0d, 0x19, 0x97, 0x83, 0x41, 0xdf, 0x75, 0x52, 0xcd, 0x66,
		0x8c, 0x3d, 0xb0, 0x05, 0xd8, 0x42, 0xea, 0xb8, 0x46, 0x2e, 0xed, 0x4d, 0xce, 0xea, 0xf3, 0x38,
		0x4d, 0xf2, 0xf9, 0xe8, 0x60, 0xbd, 0xbd, 0x97, 0x2b, 0x84, 0x83, 0x39, 0xc0, 0x1c, 0x60, 0x0e,
		0x30, 0x07, 0x98, 0x63, 0x89, 0x4d, 0xa4, 0x68, 0x21, 0x23, 0xe5, 0x89, 0xee, 0xba, 0x93, 0xdc,
		0x6d, 0x26, 0xb8, 0xcf, 0x26, 0xb7, 0x9f, 0xbd, 0x3f, 0x3a, 0x7d, 0x73, 0xf4, 0xee, 0x8d, 0xe6,
		0x3c, 0x92, 0xe9, 0xb4, 0xf6, 0xe3, 0xff, 0x7c, 0x7f, 0x7c, 0xfa, 0xe6, 0x58, 0x55, 0xf0, 0xfe,
		0xb4, 0xcc, 0x70, 0xf4, 0xee, 0x0f, 0xcd, 0x21, 0xf5, 0x8d, 0x67, 0x13, 0xa9, 0xaf, 0xfe, 0x7c,
		0xff, 0xbf, 0x34, 0x85, 0x1e, 0x4c, 0xe9, 0x98, 0x7f, 0x9e, 0x1e, 0xd7, 0x6b, 0x4e, 0x8a, 0xfe,
		0xe4, 0xfb, 0xd9, 0x9b, 0x7b, 0x19, 0x3d, 0xd3, 0xdc, 0x23, 0xb1, 0xb8, 0x1b, 0xe2, 0x9b, 0xd1,
		0x4b, 0x62, 0x67, 0x37, 0x43, 0x7c, 0x49, 0x7a, 0xd9, 0x9d, 0x4c, 0x54, 0xf4, 0x65, 0xa4, 0xb9,
		0xa5, 0xa3, 0x30, 0x79, 0x2f, 0xa3, 0x5d, 0x26, 0x42, 0x78, 0x00, 0x5e, 0x54, 0x87, 0x1f, 0xe9,
		0x0f, 0x3d, 0xf2, 0x62, 0xd8, 0x51, 0x69, 0xc8, 0x51, 0x3a, 0xee, 0xf7, 0x35, 0x45, 0xce, 0x47,
		0xb0, 0x5c, 0x75, 0xfa, 0x23, 0x47, 0xde, 0x68, 0xcb, 0xf3, 0x46, 0x4c, 0x0e, 0x59, 0x21, 0xc7,
		0xa3, 0xc9, 0x21, 0xf3, 0x31, 0x11, 0x5b, 0x3c, 0x90, 0xe3, 0x53, 0xd6, 0xe9, 0xba, 0xab, 0x71,
		0x3f, 0xce, 0xdc, 0x28, 0xef, 0x64, 0xb9, 0xfc, 0x68, 0x8e, 0x3b, 0x12, 0x19, 0xd2, 0xb1, 0x52,
		0x00, 0x43, 0x3a, 0x7e, 0xe8, 0xad, 0x33, 0xa4, 0x63, 0x6b, 0x1d, 0x98, 0xf8, 0x90, 0x0e, 0xe1,
		0xe9, 0x45, 0x77, 0xae, 0xa5, 0xe8, 0x14, 0x23, 0x25, 0x43, 0xa9, 0x66, 0x30, 0x35, 0x0d, 0xa7,
		0xbe, 0x01, 0xd5, 0x36, 0xa4, 0x66, 0x06, 0xd5, 0xcc, 0xb0, 0x9a, 0x18, 0xd8, 0x7a, 0x24, 0x35,
		0xa4, 0x0d, 0x6f, 0x21, 0x48, 0xab, 0x11, 0xef, 0xce, 0xfd, 0xd6, 0x69, 0xc8, 0xfb, 0x76, 0xa0,
		0x16, 0xcb, 0xea, 0xa7, 0x29, 0x0b, 0xb6, 0xd4, 0x07, 0xe0, 0xe2, 0x2c, 0x5c, 0x9d, 0x9d, 0xcb,
		0xb3, 0x72, 0x7d, 0xe6, 0x2e, 0xd0, 0xdc, 0x15, 0x9a, 0xba, 0x44, 0x1d, 0xd7, 0xa8, 0xe4, 0x22,
		0x8b, 0x93, 0xb4, 0x5b, 0xc6, 0xa1, 0xd7, 0x38, 0x79, 0x27, 0xb2, 0xd8, 0xab, 0xd5, 0x2b, 0x54,
		0x4e, 0x8c, 0x17, 0x72, 0xcd, 0x12, 0xe4, 0x7a, 0x37, 0x11, 0x16, 0xcf, 0x3a, 0xf2, 0x3c, 0x4a,
		0xa4, 0x7f, 0x9f, 0xd4, 0x15, 0xcd, 0xac, 0xcb, 0x6b, 0x8b, 0x68, 0xc3, 0xef, 0x74, 0x16, 0xbe,
		0x5e, 0x8b, 0xef, 0x54, 0x5c, 0xcd, 0x52, 0x48, 0xfb, 0xa4, 0x90, 0x48, 0x21, 0x91, 0x42, 0x22,
		0x85, 0xb4, 0xbe, 0xa0, 0x4e, 0xef, 0xc6, 0x65, 0x79, 0x32, 0xb2, 0xc8, 0x22, 0x2d, 0xc9, 0x26,
		0x01, 0x42, 0x02, 0x84, 0x04, 0x08, 0x09, 0x10, 0x12, 0x20, 0x24, 0x40, 0x02, 0x8a, 0xcf, 0x7f,
		0xa6, 0xc6, 0x53, 0x19, 0xe2, 0xa1, 0xc6, 0x03, 0xc4, 0x01, 0xe2, 0x00, 0x71, 0x80, 0x38, 0x40,
		0x1c, 0x20, 0xce, 0x36, 0x41, 0x9c, 0xcc, 0x75, 0x5d, 0x72, 0x63, 0x81, 0x71, 0x0a, 0xc9, 0x38,
		0x67, 0x9c, 0x33, 0xce, 0x19, 0xe7, 0x8c, 0x73, 0xc6, 0x39, 0x07, 0xe4, 0x9c, 0xe9, 0x0f, 0x58,
		0x43, 0x9e, 0xcf, 0xfd, 0x01, 0x6c, 0x84, 0xd7, 0x52, 0xbf, 0x6d, 0xe4, 0x75, 0x2a, 0x71, 0x0c,
		0xa3, 0x4d, 0xb7, 0xc2, 0xff, 0x31, 0x7f, 0xce, 0x77, 0xf3, 0xc7, 0xdc, 0x62, 0x22, 0x6a, 0x32,
		0xbc, 0x39, 0x88, 0xfb, 0x9d, 0x4b, 0xd7, 0x77, 0xbd, 0x78, 0x9c, 0x26, 0xdd, 0xce, 0x48, 0x81,
		0x8c, 0xba, 0x52, 0x2a, 0x84, 0x54, 0xab, 0x58, 0x07, 0x42, 0x6a, 0x78, 0xb1, 0x0a, 0x84, 0xd4,
		0x7b, 0x4f, 0x46, 0x9c, 0x90, 0x3a, 0xd3, 0xa8, 0xb8, 0x9f, 0x7c, 0x4e, 0x72, 0xbd, 0x96, 0xc2,
		0x92, 0x54, 0xc8, 0xa9, 0xbe, 0x26, 0x8c, 0xe8, 0x2c, 0xac, 0x5f, 0x42, 0x88, 0xce, 0x42, 0xef,
		0x8c, 0x70, 0x21, 0x48, 0x69, 0x3a, 0xc0, 0x9d, 0xeb, 0xad, 0x32, 0x25, 0x40, 0xd9, 0x20, 0xab,
		0x1b, 0x66, 0x0b, 0x03, 0x6d, 0x67, 0xa8, 0xad, 0x0c, 0xb6, 0xb9, 0xe1, 0x36, 0x37, 0xe0, 0xa6,
		0x86, 0x5c, 0xc7, 0xa0, 0x2b, 0x19, 0x76, 0x75, 0x03, 0x5f, 0x08, 0xfc, 0xdc, 0xb9, 0x8d, 0x67,
		0x5a, 0xeb, 0x46, 0xfa, 0x57, 0x67, 0x61, 0x2c, 0x4a, 0x4f, 0xa1, 0xac, 0xbc, 0xba, 0x65, 0x5d,
		0x33, 0x67, 0x60, 0xe9, 0x14, 0xec, 0x9d, 0x83, 0xb5, 0x93, 0xf0, 0xc6, 0x59, 0x78, 0xe3, 0x34,
		0xbc, 0x70, 0x1e, 0xba, 0x4e, 0x44, 0xd9, 0x99, 0x14, 0x27, 0xac, 0x5e, 0x26, 0xbe, 0x73, 0xdf,
		0xc7, 0x49, 0x9a, 0x3f, 0xdb, 0xb7, 0xb8, 0xef, 0x73, 0xeb, 0xfe, 0xc2, 0x40, 0xf4, 0xbb, 0x4e,
		0xfa, 0xc9, 0xa9, 0xb6, 0x44, 0x2f, 0x7f, 0x6c, 0xec, 0x5b, 0x34, 0x9f, 0xd4, 0x6c, 0x66, 0x60,
		0x8b, 0x87, 0x38, 0xef, 0xf4, 0xc7, 0x4e, 0xdf, 0xbd, 0xde, 0x79, 0x8e, 0xdf, 0xb3, 0x4e, 0x37,
		0x4f, 0x06, 0xe9, 0x9b, 0xe4, 0x53, 0xa2, 0x35, 0xb9, 0xfa, 0xef, 0xef, 0xa4, 0xfb, 0xd4, 0xc9,
		0x93, 0x1b, 0xa7, 0x32, 0xd8, 0xd9, 0x23, 0x33, 0x58, 0x56, 0xd1, 0xce, 0xad, 0x3f, 0x2a, 0x7a,
		0xb0, 0xff, 0xeb, 0xc1, 0xaf, 0x87, 0x2f, 0xf6, 0x7f, 0x7d, 0x8e, 0xae, 0xfa, 0xaa, 0xab, 0x4f,
		0xb6, 0x43, 0xea, 0x45, 0xad, 0x81, 0x90, 0xd1, 0xb4, 0x9b, 0x42, 0xbe, 0xf9, 0xd4, 0x1b, 0x7d,
		0xc5, 0x52, 0x7c, 0xc5, 0x93, 0x80, 0xea, 0xc6, 0xa5, 0x79, 0x9c, 0xbb, 0x4e, 0xd6, 0x1b, 0x7c,
		0x49, 0xed, 0xf2, 0x19, 0x77, 0x9e, 0x44, 0x59, 0xd1, 0x2d, 0xf8, 0x78, 0x85, 0x70, 0x45, 0x5e,
		0x5e, 0x61, 0xb6, 0xc8, 0x19, 0x89, 0x0a, 0x26, 0x67, 0x44, 0xce, 0x88, 0x9c, 0x91, 0x25, 0x38,
		0xdb, 0xbe, 0x9c, 0x91, 0x3e, 0xc5, 0xe0, 0x7b, 0xf3, 0xae, 0x44, 0x35, 0x00, 0x0d, 0x83, 0x86,
		0x05, 0x8e, 0xf7, 0x4b, 0x27, 0x4b, 0x93, 0xf4, 0x53, 0x9c, 0x5f, 0x67, 0x6e, 0x74, 0x3d, 0xe8,
		0xf7, 0xe2, 0x61, 0x37, 0xb7, 0x83, 0xc4, 0xab, 0x1f, 0x07, 0xdc, 0x06, 0x6e, 0x03, 0xb7, 0x81,
		0xdb, 0xc0, 0x6d, 0xb5, 0xc1, 0x6d, 0x43, 0x97, 0x75, 0x5d, 0x9a, 0x77, 0x3e, 0x39, 0x43, 0xe8,
		0xf6, 0x9c, 0x7a, 0x9f, 0xde, 0x0f, 0xa7, 0xde, 0xb7, 0xf4, 0x1c, 0xd4, 0x50, 0x3c, 0x31, 0x85,
		0x65, 0x15, 0xf5, 0xa9, 0xde, 0xb7, 0xb7, 0x8b, 0x92, 0x7a, 0xab, 0xa4, 0x14, 0xfa, 0x48, 0x6d,
		0x90, 0xda, 0xf0, 0x55, 0x52, 0xdd, 0xf7, 0xa2, 0x78, 0x34, 0x77, 0x60, 0x15, 0x9d, 0xfc, 0x97,
		0x65, 0xba, 0xa4, 0xca, 0x5e, 0x0c, 0x3d, 0xf5, 0xd2, 0x18, 0x96, 0xa6, 0xb3, 0x2f, 0xe3, 0x4e,
		0x48, 0xa6, 0xb1, 0x37, 0xe3, 0xfb, 0x08, 0x4c, 0x9d, 0x54, 0xb5, 0x0f, 0xa9, 0x4a, 0x40, 0x32,
		0xa4, 0x2a, 0x48, 0x55, 0xa1, 0x3b, 0x73, 0x48, 0x55, 0x90, 0xaa, 0xea, 0xe7, 0x14, 0xec, 0x9d,
		0x83, 0xb5, 0x93, 0xf0, 0xc6, 0x59, 0x78, 0xe3, 0x34, 0xbc, 0x70, 0x1e, 0x36, 0x49, 0x0d, 0x48,
		0x55, 0xea, 0xd6, 0x1d, 0x52, 0x95, 0xe2, 0x0f, 0xa7, 0xc8, 0xb2, 0xf4, 0x1c, 0xe4, 0xaf, 0x3d,
		0x31, 0x83, 0x65, 0x15, 0x85, 0x54, 0x85, 0xae, 0x7a, 0x0b, 0x10, 0xec, 0xa4, 0x5e, 0xd0, 0xcd,
		0xb8, 0xb1, 0xd2, 0x2e, 0x27, 0x9e, 0x63, 0x77, 0xdb, 0x75, 0xae, 0xa7, 0xb8, 0x73, 0xe2, 0x0e,
		0xf6, 0x5a, 0xfd, 0x38, 0x04, 0xd9, 0x04, 0xd9, 0x04, 0xd9, 0x04, 0xd9, 0x04, 0xd9, 0xb5, 0x09,
		0xb2, 0xb7, 0x8f, 0x85, 0x02, 0x35, 0x58, 0x1a, 0x39, 0x40, 0x0d, 0xd6, 0x04, 0xdf, 0x80, 0x32,
		0x40, 0x19, 0xa0, 0x0c, 0x50, 0x06, 0x28, 0x03, 0x94, 0x01, 0xca, 0x7c, 0x02, 0x65, 0x30, 0x54,
		0x81, 0x0f, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01, 0xf8, 0xa0, 0x1a, 0x82, 0xc3, 0x50, 0xb5, 0xb8,
		0x5b, 0x34, 0x4f, 0xd0, 0x3c, 0xb1, 0xfa, 0x5e, 0xd2, 0x3c, 0x01, 0x43, 0x15, 0x25, 0xf5, 0x12,
		0x1d, 0xd8, 0x49, 0xbd, 0x80, 0x28, 0xe9, 0xbf, 0x29, 0x83, 0x28, 0xf9, 0x18, 0xa2, 0xa4, 0xc2,
		0x82, 0x70, 0x3d, 0xed, 0x62, 0x6f, 0x7d, 0x5d, 0xf5, 0xb4, 0xa1, 0xc2, 0x80, 0xfd, 0xf1, 0x0d,
		0xe3, 0xcd, 0xe1, 0xcd, 0xc1, 0xc9, 0xec, 0xf9, 0x3f, 0xcc, 0x1e, 0xbf, 0x3d, 0x4b, 0x1f, 0x9d,
		0x4c, 0x9f, 0x3e, 0xd4, 0x05, 0xfc, 0x3f, 0xeb, 0xec, 0xd4, 0x8d, 0x33, 0xd7, 0x75, 0xc9, 0x8d,
		0x42, 0xd7, 0xdc, 0xea, 0x2e, 0xb9, 0x42, 0x3c, 0x5b, 0x76, 0xd7, 0x12, 0xc4, 0x96, 0xdd, 0x4a,
		0xb5, 0x83, 0x2d, 0xbb, 0x6c, 0xd9, 0x7d, 0xe0, 0xc4, 0xd8, 0xb2, 0x1b, 0xa0, 0x41, 0x56, 0x37,
		0xcc, 0x16, 0x06, 0xda, 0xce, 0x50, 0x5b, 0x19, 0x6c, 0x73, 0xc3, 0x6d, 0x6e, 0xc0, 0x4d, 0x0d,
		0x79, 0x3d, 0x93, 0x16, 0x0c, 0x84, 0x60, 0x20, 0x44, 0xfd, 0x9c, 0x82, 0xbd, 0x73, 0xb0, 0x76,
		0x12, 0xde, 0x38, 0x0b, 0x6f, 0x9c, 0x86, 0x17, 0xce, 0x43, 0xd7, 0x89, 0x28, 0x3b, 0x93, 0xe2,
		0x84, 0x19, 0x08, 0xc1, 0x40, 0x08, 0xcd, 0x1f, 0x4e, 0x4f, 0xc3, 0xd2, 0x73, 0x50, 0x2e, 0xf6,
		0xc4, 0x0c, 0x96, 0x55, 0x94, 0x81, 0x10, 0xe8, 0xaa, 0xb7, 0x00, 0xc1, 0x4e, 0x2a, 0xc3, 0xb7,
		0x25, 0xe5, 0xb3, 0x57, 0x4c, 0xf4, 0x78, 0xa1, 0xd2, 0x16, 0x69, 0x24, 0xa8, 0xb4, 0x1a, 0x51,
		0x05, 0x39, 0x23, 0xc5, 0x3b, 0x45, 0xce, 0x88, 0x9c, 0x51, 0xe1, 0xc8, 0xc9, 0x19, 0x09, 0x9f,
		0x30, 0x54, 0x5a, 0xb6, 0xec, 0x82, 0x86, 0x43, 0x46, 0xc3, 0x70, 0x98, 0xc1, 0x6d, 0xe0, 0x36,
		0x70, 0x1b, 0xb8, 0x0d, 0xdc, 0xa6, 0x9a, 0xfb, 0x80, 0xc3, 0x6c, 0x71, 0xb7, 0xa8, 0xf7, 0x51,
		0xef, 0x5b, 0x7d, 0x2f, 0xa9, 0xf7, 0xc1, 0x61, 0x46, 0x49, 0xbd, 0x44, 0x07, 0x76, 0x52, 0x29,
		0xf4, 0x91, 0xda, 0x08, 0x50, 0x12, 0xe4, 0x71, 0x7f, 0x48, 0xb9, 0x05, 0x6f, 0x92, 0x75, 0xbb,
		0xeb, 0xbf, 0x67, 0xd6, 0xed, 0x56, 0x2d, 0x8e, 0x75, 0xbb, 0xa2, 0x92, 0x61, 0x57, 0xc1, 0xae,
		0x0a, 0xdd, 0xab, 0xc3, 0xae, 0x82, 0x5d, 0x55, 0x3f, 0xa7, 0x60, 0xef, 0x1c, 0xac, 0x9d, 0x84,
		0x37, 0xce, 0xc2, 0x1b, 0xa7, 0xe1, 0x85, 0xf3, 0xb0, 0xc9, 0x6e, 0xc0, 0xae, 0x52, 0xb7, 0xee,
		0xb0, 0xab, 0x14, 0x7f, 0x38, 0xd5, 0x96, 0xa5, 0xe7, 0x20, 0x91, 0xed, 0x89, 0x19, 0x2c, 0xab,
		0x28, 0xec, 0x2a, 0x74, 0xd5, 0x5b, 0x80, 0x60, 0x27, 0x95, 0x75, 0xbb, 0x9b, 0x2b, 0x2d, 0xeb,
		0x76, 0x09, 0xb2, 0x09, 0xb2, 0x09, 0xb2, 0x09, 0xb2, 0x09, 0xb2, 0x35, 0xef, 0x3b, 0x9b, 0xdd,
		0xea, 0x02, 0x1f, 0xe0, 0x08, 0x47, 0x70, 0x84, 0x01, 0x65, 0x80, 0x32, 0x40, 0x19, 0xa0, 0x0c,
		0x50, 0x06, 0x28, 0x03, 0x94, 0x19, 0x83, 0x32, 0xa8, 0xaa, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01,
		0xf8, 0x00, 0x7c, 0x50, 0x0d, 0xc1, 0xa1, 0xaa, 0x5a, 0xdc, 0x2d, 0x9a, 0x27, 0x68, 0x9e, 0x58,
		0x7d, 0x2f, 0x69, 0x9e, 0x80, 0xaa, 0x8a, 0x92, 0x7a, 0x89, 0x0e, 0xec, 0xa4, 0xb2, 0x6e, 0x37,
		0x00, 0x53, 0x06, 0x63, 0x72, 0x2d, 0xc6, 0x24, 0x7b, 0x77, 0x7d, 0x51, 0x60, 0xf6, 0xee, 0x3e,
		0x46, 0x61, 0xc3, 0x5e, 0xc0, 0xfb, 0x6e, 0xf1, 0x2b, 0x42, 0x5d, 0xc4, 0xfb, 0x24, 0xa0, 0x8b,
		0xd5, 0x70, 0xb7, 0x79, 0xd6, 0x89, 0xc7, 0x93, 0x17, 0x77, 0xd9, 0x97, 0x8d, 0xf0, 0x1b, 0x5f,
		0xae, 0x5d, 0x2a, 0x1e, 0xc7, 0x2a, 0xae, 0xb7, 0xdd, 0xd9, 0x29, 0x6e, 0x67, 0x3c, 0xb9, 0x09,
		0xd1, 0x6f, 0xd1, 0xd3, 0x59, 0xf6, 0x29, 0xce, 0xbf, 0x0e, 0xdd, 0xe8, 0x65, 0xb3, 0x75, 0x7e,
		0xd0, 0x3e, 0x39, 0x7a, 0x75, 0x7c, 0x72, 0xfc, 0xa6, 0xfd, 0xe1, 0xb4, 0xf9, 0xfa, 0xe8, 0xec,
		0xfd, 0xd3, 0x9a, 0xaf, 0xc3, 0x9d, 0xbe, 0xe4, 0x6d, 0x5a, 0x86, 0xfb, 0x83, 0x5a, 0x50, 0x8b,
		0xc9, 0x08, 0x6f, 0xdc, 0xa8, 0x9b, 0x25, 0x43, 0x55, 0x20, 0x59, 0x5c, 0xbf, 0x66, 0xda, 0xed,
		0x8f, 0x7b, 0x2e, 0xca, 0xaf, 0x93, 0x51, 0xd4, 0x1d, 0xa4, 0x79, 0x27, 0x49, 0x5d, 0x16, 0x5d,
		0x0d, 0xb2, 0xa8, 0xd9, 0xba, 0x39, 0x88, 0xe6, 0x2e, 0x26, 0x9a, 0xfb, 0x98, 0x68, 0x34, 0x74,
		0xdd, 0xe4, 0x2a, 0xe9, 0x7e, 0x9c, 0xbb, 0xf0, 0x71, 0x36, 0x03, 0x12, 0x4a, 0x3a, 0x63, 0x50,
		0x35, 0x58, 0xbe, 0x97, 0xbd, 0xa5, 0x57, 0xa5, 0x58, 0x2d, 0xb4, 0x2c, 0x11, 0x94, 0xae, 0x69,
		0x55, 0xda, 0x42, 0x18, 0x60, 0xfa, 0xed, 0x17, 0x41, 0xa1, 0x2b, 0xa5, 0x70, 0xc5, 0xf7, 0x30,
		0x45, 0xd0, 0xe0, 0x54, 0x1c, 0x88, 0xc8, 0x5c, 0xef, 0xea, 0xaf, 0x83, 0x80, 0xc2, 0x36, 0xa6,
		0x6f, 0x6e, 0xf1, 0xc6, 0xa4, 0xd4, 0xb5, 0xf0, 0xde, 0x25, 0x69, 0x42, 0xd7, 0x4f, 0x76, 0xa8,
		0x91, 0x78, 0xfb, 0x85, 0x46, 0x9b, 0x85, 0x5e, 0x3b, 0x85, 0x16, 0x00, 0x52, 0x6f, 0x8f, 0x50,
		0xc7, 0x38, 0xaa, 0xed, 0x0e, 0x61, 0xa5, 0x33, 0xa4, 0x87, 0x06, 0x35, 0xba, 0x8b, 0x3b, 0x2f,
		0xac, 0xc4, 0x8b, 0x6b, 0x39, 0x97, 0x27, 0xac, 0x50, 0x3a, 0xd3, 0xdf, 0xd4, 0xfa, 0xd5, 0x34,
		0xfb, 0xd3, 0xf4, 0xfb, 0xd1, 0x2c, 0xb3, 0x3b, 0xaa, 0xfd, 0x66, 0x7e, 0xe4, 0x77, 0xb4, 0xfa,
		0xc9, 0xc2, 0x2e, 0xcc, 0x68, 0x4d, 0x6b, 0x6b, 0xb8, 0xdb, 0xdc, 0xa5, 0x3d, 0xd7, 0x8b, 0x53,
		0x77, 0x9b, 0xc7, 0xd7, 0x83, 0x61, 0x3c, 0x89, 0x75, 0x7a, 0x49, 0xfa, 0x49, 0x3f, 0x03, 0xf5,
		0x37, 0xcf, 0xa2, 0x35, 0x24, 0xcf, 0x80, 0x17, 0xa6, 0xc9, 0x07, 0xbb, 0xd0, 0x1d, 0x7f, 0xba,
		0xab, 0x3d, 0xfe, 0x74, 0x97, 0xf1, 0xa7, 0xe1, 0x3b, 0x48, 0x73, 0x47, 0x69, 0xee, 0x30, 0x4d,
		0x1d, 0xa7, 0x8e, 0x03, 0x55, 0x72, 0xa4, 0xc5, 0x49, 0xaa, 0x37, 0x5c, 0x1b, 0xf2, 0xb4, 0x94,
		0xf9, 0x59, 0x75, 0xef, 0xb2, 0x32, 0x5f, 0x68, 0x50, 0x93, 0xb1, 0xef, 0x2e, 0xed, 0xc5, 0xbd,
		0x19, 0xc0, 0x8a, 0xb3, 0xc1, 0xd8, 0x64, 0x06, 0xfc, 0xdd, 0x67, 0x00, 0x59, 0x82, 0x2c, 0x41,
		0x96, 0x20, 0x4b, 0x90, 0x25, 0xc8, 0x12, 0x64, 0x09, 0xb2, 0x04, 0x59, 0x06, 0x24, 0x81, 0xfe,
		0x78, 0xd9, 0xc6, 0x93, 0x45, 0x5f, 0xbc, 0xc6, 0x92, 0x2b, 0xc1, 0x16, 0x72, 0xc1, 0x2a, 0xfc,
		0x32, 0x63, 0x40, 0xaf, 0x8c, 0x59, 0x92, 0x4a, 0x31, 0xd3, 0x57, 0x84, 0x4d, 0x31, 0xb3, 0x7e,
		0x08, 0x9a, 0x62, 0xe6, 0xfa, 0xb9, 0x0f, 0xad, 0x62, 0xa6, 0x52, 0x37, 0xc9, 0x9d, 0xeb, 0xad,
		0xd2, 0x55, 0xa2, 0x6c, 0x90, 0x49, 0x81, 0x90, 0x02, 0x21, 0x05, 0x42, 0x0a, 0xc4, 0x27, 0x03,
		0x5f, 0x08, 0x64, 0xb7, 0x20, 0x23, 0xf2, 0xa2, 0xfa, 0x3b, 0x07, 0x6b, 0x27, 0xe1, 0x8d, 0xb3,
		0xf0, 0xc6, 0x69, 0x78, 0xe1, 0x3c, 0x74, 0x9d, 0x88, 0xb2, 0x33, 0x29, 0x4e, 0x98, 0xdd, 0x82,
		0xec, 0x16, 0xd4, 0xfc, 0xe1, 0x8c, 0xc7, 0x5b, 0x7a, 0x0e, 0x26, 0x8f, 0x79, 0x62, 0x06, 0xcb,
		0x2a, 0xca, 0x6e, 0x41, 0x74, 0xd5, 0x5b, 0x80, 0x60, 0x27, 0xf5, 0xa2, 0xd6, 0x40, 0xc8, 0xa8,
		0x3a, 0x5d, 0xc8, 0x37, 0xaf, 0x52, 0xeb, 0x2b, 0x16, 0x5b, 0x99, 0xd8, 0xca, 0xa4, 0x60, 0xb6,
		0xc8, 0x19, 0x89, 0x0a, 0x26, 0x67, 0x44, 0xce, 0x88, 0x9c, 0x91, 0x25, 0x38, 0x63, 0x2b, 0x93,
		0xbe, 0x79, 0xd7, 0xde, 0xca, 0x04, 0x1a, 0x06, 0x0d, 0x57, 0x77, 0xbc, 0xac, 0xc3, 0x02, 0xb7,
		0x81, 0xdb, 0xc0, 0x6d, 0xe0, 0x36, 0x70, 0x9b, 0x6a, 0xee, 0x83, 0x75, 0x58, 0x16, 0x77, 0x8b,
		0x7a, 0x1f, 0xf5, 0xbe, 0xd5, 0xf7, 0x92, 0x7a, 0x1f, 0xeb, 0xb0, 0x50, 0x52, 0x2f, 0xd1, 0x81,
		0x9d, 0x54, 0x0a, 0x7d, 0xa4, 0x36, 0x02, 0x94, 0xc4, 0x1e, 0x32, 0x1b, 0xda, 0xea, 0x32, 0x4d,
		0x52, 0x85, 0xc3, 0xaa, 0xa7, 0x56, 0x2a, 0x13, 0x7b, 0xa6, 0x8b, 0xda, 0xf4, 0x87, 0xf4, 0x4c,
		0xc5, 0xd6, 0x9c, 0x4c, 0xb5, 0x0f, 0x99, 0x4a, 0x40, 0x32, 0x64, 0x2a, 0xc8, 0x54, 0xa1, 0x3b,
		0x71, 0xc8, 0x54, 0x90, 0xa9, 0xea, 0xe7, 0x14, 0xec, 0x9d, 0x83, 0xb5, 0x93, 0xf0, 0xc6, 0x59,
		0x78, 0xe3, 0x34, 0xbc, 0x70, 0x1e, 0x36, 0xc9, 0x0c, 0xc8, 0x54, 0xea, 0xd6, 0x1d, 0x32, 0x95,
		0xe2, 0x0f, 0xa7, 0xb8, 0xb2, 0xf4, 0x1c, 0xe4, 0xad, 0x3d, 0x31, 0x83, 0x65, 0x15, 0x85, 0x4c,
		0x85, 0xae, 0x7a, 0x0b, 0x10, 0xec, 0xa4, 0x5e, 0xd0, 0xc5, 0xb8, 0xb1, 0xd2, 0x2e, 0x27, 0x9e,
		0x63, 0x77, 0xdb, 0x75, 0xae, 0xe7, 0x7a, 0xa6, 0xc4, 0x9e, 0x15, 0x8f, 0x43, 0x90, 0x4d, 0x90,
		0x4d, 0x90, 0x4d, 0x90, 0x4d, 0x90, 0x5d, 0x9b, 0x20, 0x7b, 0xfb, 0xd8, 0x27, 0x50, 0x82, 0xa5,
		0x91, 0x03, 0x94, 0x60, 0x4d, 0xf0, 0x0d, 0x28, 0x03, 0x94, 0x01, 0xca, 0x00, 0x65, 0x80, 0x32,
		0x40, 0x19, 0xa0, 0xcc, 0x27, 0x50, 0x06, 0x33, 0x15, 0xf8, 0x00, 0x7c, 0x00, 0x3e, 0x00, 0x1f,
		0x80, 0x0f, 0xaa, 0x21, 0x38, 0xcc, 0x54, 0x8b, 0xbb, 0x45, 0xf3, 0x04, 0xcd, 0x13, 0xab, 0xef,
		0x25, 0xcd, 0x13, 0x30, 0x53, 0x51, 0x52, 0x2f, 0xd1, 0x81, 0x9d, 0xd4, 0x0b, 0x08, 0x92, 0xfe,
		0x9b, 0x32, 0x08, 0x92, 0x7f, 0x47, 0x90, 0x9c, 0xf1, 0xee, 0xd8, 0x3b, 0x6b, 0xaf, 0xaf, 0xec,
		0x9d, 0x5d, 0xa1, 0x9f, 0x0d, 0x15, 0xc6, 0x6b, 0x36, 0xee, 0xe6, 0xe9, 0x3c, 0xf2, 0x3a, 0x9d,
		0xfd, 0xb0, 0xe6, 0xfc, 0x77, 0xb5, 0x5b, 0xf3, 0x5f, 0xd3, 0x7e, 0xf5, 0x69, 0xd8, 0x3e, 0x9d,
		0xff, 0x86, 0xf6, 0xd1, 0x55, 0x72, 0xd6, 0xb9, 0x4a, 0xda, 0xcd, 0xe1, 0xcd, 0xc1, 0x87, 0xd9,
		0x73, 0xb7, 0x67, 0x79, 0xa2, 0x93, 0xe9, 0x63, 0xb3, 0x34, 0xf7, 0xce, 0x31, 0x97, 0xfa, 0xd1,
		0x32, 0xd7, 0x75, 0xc9, 0x8d, 0x42, 0x7b, 0xdc, 0xea, 0x76, 0xb8, 0x42, 0x3c, 0x6b, 0x74, 0xd7,
		0x12, 0xc4, 0x1a, 0xdd, 0x4a, 0xb5, 0x83, 0x35, 0xba, 0xac, 0xd1, 0x7d, 0xe0, 0xc4, 0x58, 0xa3,
		0x1b, 0xa0, 0x41, 0x56, 0x37, 0xcc, 0x16, 0x06, 0xda, 0xce, 0x50, 0x5b, 0x19, 0x6c, 0x73, 0xc3,
		0x6d, 0x6e, 0xc0, 0x4d, 0x0d, 0x79, 0x3d, 0xb3, 0x13, 0x4c, 0x7e, 0x60, 0xf2, 0x43, 0xfd, 0x9c,
		0x82, 0xbd, 0x73, 0xb0, 0x76, 0x12, 0xde, 0x38, 0x0b, 0x6f, 0x9c, 0x86, 0x17, 0xce, 0x43, 0xd7,
		0x89, 0x28, 0x3b, 0x93, 0xe2, 0x84, 0x99, 0xfc, 0xc0, 0xe4, 0x07, 0xcd, 0x1f, 0x4e, 0xf3, 0xc2,
		0xd2, 0x73, 0x50, 0x17, 0xf6, 0xc4, 0x0c, 0x96, 0x55, 0x94, 0xc9, 0x0f, 0xe8, 0xaa, 0xb7, 0x00,
		0xc1, 0x4e, 0x2a, 0xd3, 0xb5, 0x25, 0xe5, 0xb3, 0x38, 0x4c, 0xf4, 0x78, 0xe1, 0xcc, 0x16, 0x69,
		0x24, 0x38, 0xb3, 0x1a, 0x51, 0x05, 0x39, 0x23, 0xc5, 0x3b, 0x45, 0xce, 0x88, 0x9c, 0x51, 0xe1,
		0xc8, 0xc9, 0x19, 0x09, 0x9f, 0x30, 0x9c, 0x59, 0xd6, 0xe8, 0x82, 0x86, 0x43, 0x46, 0xc3, 0x90,
		0x95, 0xc1, 0x6d, 0xe0, 0x36, 0x70, 0x1b, 0xb8, 0x0d, 0xdc, 0xa6, 0x9a, 0xfb, 0x80, 0xac, 0x6c,
		0x71, 0xb7, 0xa8, 0xf7, 0x51, 0xef, 0x5b, 0x7d, 0x2f, 0xa9, 0xf7, 0x41, 0x56, 0x46, 0x49, 0xbd,
		0x44, 0x07, 0x76, 0x52, 0x29, 0xf4, 0x91, 0xda, 0x08, 0x50, 0x12, 0x2c, 0x71, 0x7b, 0x16, 0x6e,
		0xc1, 0x97, 0x64, 0x9f, 0xee, 0xfa, 0xef, 0x97, 0x7d, 0xba, 0x55, 0x8b, 0x63, 0x9f, 0xae, 0xa8,
		0x64, 0x58, 0x55, 0xb0, 0xaa, 0x42, 0xf7, 0xe6, 0xb0, 0xaa, 0x60, 0x55, 0xd5, 0xcf, 0x29, 0xd8,
		0x3b, 0x07, 0x6b, 0x27, 0xe1, 0x8d, 0xb3, 0xf0, 0xc6, 0x69, 0x78, 0xe1, 0x3c, 0x6c, 0xb2, 0x1a,
		0xb0, 0xaa, 0xd4, 0xad, 0x3b, 0xac, 0x2a, 0xc5, 0x1f, 0x4e, 0x95, 0x65, 0xe9, 0x39, 0x48, 0x60,
		0x7b, 0x62, 0x06, 0xcb, 0x2a, 0x0a, 0xab, 0x0a, 0x5d, 0xf5, 0x16, 0x20, 0xd8, 0x49, 0x65, 0x9f,
		0xee, 0xe6, 0x4a, 0xcb, 0x3e, 0x5d, 0x82, 0x6c, 0x82, 0x6c, 0x82, 0x6c, 0x82, 0x6c, 0x82, 0x6c,
		0xcd, 0xfb, 0xce, 0xea, 0xb6, 0xba, 0xc0, 0x07, 0xb8, 0xc1, 0x11, 0xdc, 0x60, 0x40, 0x19, 0xa0,
		0x0c, 0x50, 0x06, 0x28, 0x03, 0x94, 0x01, 0xca, 0x00, 0x65, 0xc6, 0xa0, 0x0c, 0x8a, 0x2a, 0xf0,
		0x01, 0xf8, 0x00, 0x7c, 0x00, 0x3e, 0x00, 0x1f, 0x54, 0x43, 0x70, 0x28, 0xaa, 0x16, 0x77, 0x8b,
		0xe6, 0x09, 0x9a, 0x27, 0x56, 0xdf, 0x4b, 0x9a, 0x27, 0xa0, 0xa8, 0xa2, 0xa4, 0x5e, 0xa2, 0x03,
		0x3b, 0xa9, 0xec, 0xd3, 0x0d, 0xc0, 0x94, 0xc1, 0x94, 0x7c, 0x14, 0x53, 0x92, 0xc5, 0xba, 0xbe,
		0x28, 0x2e, 0x8b, 0x75, 0xff, 0x4e, 0x51, 0x03, 0xdd, 0xb0, 0xfb, 0x6e, 0xf1, 0xf8, 0x6c, 0xda,
		0x5d, 0x71, 0xdc, 0x1a, 0x94, 0x63, 0x55, 0xaa, 0xb1, 0xfa, 0x26, 0xdd, 0x7d, 0x36, 0xe9, 0x6e,
		0x20, 0x91, 0x4d, 0xba, 0xe2, 0x20, 0x8c, 0x4d, 0xba, 0x6b, 0x9e, 0x98, 0xda, 0x26, 0x5d, 0x77,
		0x9b, 0xbb, 0xb4, 0xe7, 0x7a, 0x71, 0xea, 0x6e, 0xf3, 0xf8, 0x7a, 0x30, 0x8c, 0x27, 0xfe, 0xbf,
		0x97, 0xa4, 0x06, 0xdb, 0x75, 0xff, 0xe6, 0x59, 0xb4, 0x98, 0xd8, 0x06, 0xcd, 0x47, 0x9a, 0x4d,
		0x47, 0x17, 0xba, 0x33, 0x36, 0x76, 0xd9, 0x5c, 0x1c, 0xb0, 0x63, 0xb4, 0x72, 0x90, 0xe6, 0x8e,
		0xd2, 0xdc, 0x61, 0x9a, 0x3a, 0xce, 0x7a, 0xe6, 0x81, 0xd4, 0xab, 0x7a, 0x86, 0xcd, 0x40, 0xca,
		0x4d, 0x40, 0x35, 0x19, 0x7d, 0xe5, 0xd2, 0x5e, 0xdc, 0x9b, 0xf9, 0xff, 0x38, 0x1b, 0x8c, 0x4d,
		0xe6, 0x60, 0xdd, 0x7d, 0x06, 0x80, 0x0f, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01, 0xf8, 0x00, 0x7c,
		0x00, 0x3e, 0x5b, 0x07, 0x7c, 0x28, 0x65, 0xad, 0x03, 0xe1, 0x3c, 0x2d, 0x65, 0x29, 0x54, 0x57,
		0x05, 0x6b, 0x3f, 0x4f, 0x02, 0x52, 0xbd, 0x86, 0xbb, 0xcd, 0xb3, 0x4e, 0x3c, 0x9e, 0xbc, 0xc3,
		0xcb, 0xbe, 0xac, 0xdd, 0x6b, 0x7c, 0xb9, 0x76, 0xa9, 0x38, 0x60, 0x56, 0xac, 0xb8, 0xec, 0xec,
		0x14, 0xfa, 0x1b, 0xa7, 0x9d, 0xcf, 0x2e, 0xfa, 0x2d, 0x7a, 0x3a, 0xf3, 0xbd, 0x71, 0xfe, 0x75,
		0xe8, 0x46, 0x2f, 0x9b, 0xad, 0xf3, 0x83, 0xf6, 0x87, 0xd3, 0xe6, 0xeb, 0xa3, 0xb3, 0xf7, 0x4f,
		0x6b, 0x5e, 0x99, 0x99, 0xbe, 0xdc, 0x6d, 0xaa, 0xcb, 0xac, 0xf9, 0xf6, 0x6b, 0x11, 0xf3, 0xbf,
		0x71, 0xa3, 0x6e, 0x96, 0x0c, 0x55, 0xbb, 0x83, 0x8a, 0xeb, 0xd6, 0x4c, 0xbb, 0xfd, 0x71, 0xcf,
		0x45, 0xf9, 0x75, 0x32, 0x8a, 0xba, 0x83, 0x34, 0xef, 0x24, 0xa9, 0xcb, 0xa2, 0xab, 0x41, 0x16,
		0x35, 0x5b, 0x37, 0x07, 0xd1, 0xbc, 0x8f, 0x20, 0x1a, 0x0d, 0x5d, 0x37, 0xb9, 0x4a, 0xba, 0x1f,
		0xe7, 0xce, 0x6c, 0x9c, 0xcd, 0x5c, 0xaa, 0x92, 0x8e, 0x18, 0xc4, 0x40, 0xcb, 0xf7, 0xb0, 0xb7,
		0xf4, 0x8a, 0x14, 0x81, 0xa4, 0x65, 0x00, 0x54, 0xba, 0x96, 0x9b, 0x6a, 0x09, 0x40, 0xd8, 0xf4,
		0xdb, 0x2f, 0x82, 0x42, 0x4f, 0x4a, 0x80, 0xdd, 0x57, 0xa0, 0xde, 0x10, 0x6d, 0x73, 0xaa, 0xa4,
		0xab, 0x4c, 0xe6, 0x3e, 0x57, 0xaf, 0xff, 0x02, 0x1a, 0xda, 0x48, 0x86, 0x37, 0x87, 0x71, 0xbf,
		0x73, 0xe9, 0xfa, 0xae, 0x57, 0xbc, 0x32, 0x29, 0x3d, 0x2d, 0xdc, 0xf4, 0x4a, 0xa9, 0x42, 0xf7,
		0x4f, 0xb6, 0x6f, 0x4c, 0x3c, 0x5b, 0xac, 0x91, 0x1d, 0xd6, 0xcb, 0x06, 0x6b, 0x21, 0x1f, 0xf5,
		0x6c, 0xaf, 0x3a, 0xb8, 0x51, 0xcd, 0xe6, 0x86, 0x95, 0xaf, 0x90, 0xee, 0xf3, 0x2a, 0x0d, 0x82,
		0xd4, 0xeb, 0xb2, 0x2d, 0x49, 0xad, 0x59, 0xb3, 0xed, 0x2e, 0xcd, 0xb6, 0x61, 0xa6, 0x74, 0x68,
		0xb6, 0x0d, 0x35, 0x3c, 0xab, 0x4b, 0xb3, 0x6d, 0x77, 0x61, 0x43, 0x94, 0x53, 0x4d, 0x73, 0xb9,
		0x35, 0x5f, 0xb0, 0x46, 0x0f, 0x44, 0x0d, 0x0c, 0xb6, 0xb9, 0xe1, 0x36, 0x37, 0xe0, 0xa6, 0x86,
		0x5c, 0xc7, 0xa0, 0x2b, 0x19, 0x76, 0x75, 0x03, 0x5f, 0x08, 0x64, 0xc1, 0x1a, 0x73, 0xc2, 0xa2,
		0xfa, 0x3b, 0x07, 0x6b, 0x27, 0xe1, 0x8d, 0xb3, 0xf0, 0xc6, 0x69, 0x78, 0xe1, 0x3c, 0x74, 0x9d,
		0x88, 0xb2, 0x33, 0x29, 0x4e, 0x98, 0x05, 0x6b, 0x2c, 0x58, 0xd3, 0xfc, 0xe1, 0xcc, 0x08, 0x5b,
		0x7a, 0x0e, 0xc6, 0x2f, 0x79, 0x62, 0x06, 0xcb, 0x2a, 0xca, 0x82, 0x35, 0x74, 0xd5, 0x5b, 0x80,
		0x60, 0x27, 0xf5, 0xa2, 0xd6, 0x40, 0xc8, 0x68, 0xc4, 0x56, 0x21, 0xff, 0xeb, 0xa7, 0x41, 0x1e,
		0x0f, 0xba, 0x71, 0x77, 0xf0, 0x79, 0x98, 0xb9, 0xd1, 0xc8, 0xf5, 0xe2, 0xbe, 0xeb, 0x5c, 0x4d,
		0x1e, 0xe6, 0x2f, 0xa6, 0xa0, 0x6f, 0x7c, 0xbc, 0xac, 0xa6, 0x29, 0xd2, 0x48, 0xac, 0xa6, 0xd1,
		0x88, 0x2a, 0xc8, 0x19, 0x29, 0xde, 0x29, 0x72, 0x46, 0xe4, 0x8c, 0x0a, 0x47, 0x4e, 0xce, 0x48,
		0xf8, 0x84, 0x59, 0x4d, 0xa3, 0xbf, 0x9a, 0x06, 0x34, 0x0c, 0x1a, 0xae, 0xee, 0x78, 0xd9, 0x09,
		0x04, 0x6e, 0x03, 0xb7, 0x81, 0xdb, 0xc0, 0x6d, 0xe0, 0x36, 0xd5, 0xdc, 0x07, 0x3b, 0x81, 0x2c,
		0xee, 0x16, 0xf5, 0x3e, 0xea, 0x7d, 0xab, 0xef, 0x25, 0xf5, 0x3e, 0x76, 0x02, 0xa1, 0xa4, 0x5e,
		0xa2, 0x03, 0x3b, 0xa9, 0x14, 0xfa, 0x48, 0x6d, 0x04, 0x28, 0x89, 0x65, 0x4c, 0x9a, 0xf3, 0x06,
		0xee, 0xd0, 0xc9, 0x4b, 0xbb, 0x6e, 0x7e, 0x99, 0x93, 0x75, 0x18, 0xdd, 0xfb, 0xf8, 0xd7, 0xab,
		0xb2, 0x42, 0xe6, 0x4e, 0x48, 0xa6, 0xb1, 0x4a, 0xe6, 0xfb, 0x08, 0x4c, 0x9d, 0x54, 0xb5, 0x0f,
		0xa9, 0x4a, 0x40, 0x32, 0xa4, 0x2a, 0x48, 0x55, 0xa1, 0x3b, 0x73, 0x48, 0x55, 0x90, 0xaa, 0xea,
		0xe7, 0x14, 0xec, 0x9d, 0x83, 0xb5, 0x93, 0xf0, 0xc6, 0x59, 0x78, 0xe3, 0x34, 0xbc, 0x70, 0x1e,
		0x36, 0x49, 0x0d, 0x48, 0x55, 0xea, 0xd6, 0x1d, 0x52, 0x95, 0xe2, 0x0f, 0xa7, 0xc8, 0xb2, 0xf4,
		0x1c, 0xe4, 0xaf, 0x3d, 0x31, 0x83, 0x65, 0x15, 0x85, 0x54, 0x85, 0xae, 0x7a, 0x0b, 0x10, 0xec,
		0xa4, 0x5e, 0xd0, 0xcd, 0xb8, 0xb1, 0xd2, 0x96, 0x96, 0xac, 0xbb, 0xdb, 0xae, 0x73, 0x3d, 0xd7,
		0x33, 0x25, 0xf8, 0xac, 0x78, 0x1c, 0x82, 0x6c, 0x82, 0x6c, 0x82, 0x6c, 0x82, 0x6c, 0x82, 0xec,
		0xda, 0x04, 0xd9, 0xdb, 0xc7, 0x42, 0x81, 0x1a, 0x2c, 0x8d, 0x1c, 0xa0, 0x06, 0x6b, 0x82, 0x6f,
		0x40, 0x19, 0xa0, 0x0c, 0x50, 0x06, 0x28, 0x03, 0x94, 0x01, 0xca, 0x00, 0x65, 0x3e, 0x81, 0x32,
		0x18, 0xaa, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01, 0xf8, 0x00, 0x7c, 0x50, 0x0d, 0xc1, 0x61, 0xa8,
		0x5a, 0xdc, 0x2d, 0x9a, 0x27, 0x68, 0x9e, 0x58, 0x7d, 0x2f, 0x69, 0x9e, 0x80, 0xa1, 0x8a, 0x92,
		0x7a, 0x89, 0x0e, 0xec, 0xa4, 0x5e, 0x40, 0x94, 0xf4, 0xdf, 0x94, 0x41, 0x94, 0x7c, 0x0c, 0x51,
		0x72, 0xc6, 0xbf, 0x63, 0xc1, 0xb9, 0xbd, 0xde, 0x6a, 0xeb, 0x6b, 0x50, 0x7a, 0xda, 0x50, 0x61,
		0xc0, 0x6e, 0xb4, 0x5d, 0xfc, 0xf0, 0x64, 0xf6, 0xfc, 0xf3, 0x25, 0xe3, 0xed, 0x59, 0xfa, 0xe8,
		0x64, 0xfa, 0xf4, 0x81, 0x2e, 0xde, 0x17, 0xd4, 0xf8, 0x72, 0x9b, 0x5a, 0xe6, 0xba, 0x2e, 0xb9,
		0x51, 0xe8, 0x9a, 0x5b, 0xdd, 0x25, 0x57, 0x88, 0x67, 0xcb, 0xee, 0x5a, 0x82, 0xd8, 0xb2, 0x5b,
		0xa9, 0x76, 0xb0, 0x65, 0x97, 0x2d, 0xbb, 0x0f, 0x9c, 0x18, 0x5b, 0x76, 0x03, 0x34, 0xc8, 0xea,
		0x86, 0xd9, 0xc2, 0x40, 0xdb, 0x19, 0x6a, 0x2b, 0x83, 0x6d, 0x6e, 0xb8, 0xcd, 0x0d, 0xb8, 0xa9,
		0x21, 0xaf, 0x67, 0xd2, 0x82, 0x81, 0x10, 0x0c, 0x84, 0xa8, 0x9f, 0x53, 0xb0, 0x77, 0x0e, 0xd6,
		0x4e, 0xc2, 0x1b, 0x67, 0xe1, 0x8d, 0xd3, 0xf0, 0xc2, 0x79, 0xe8, 0x3a, 0x11, 0x65, 0x67, 0x52,
		0x9c, 0x30, 0x03, 0x21, 0x18, 0x08, 0xa1, 0xf9, 0xc3, 0xe9, 0x69, 0x58, 0x7a, 0x0e, 0xca, 0xc5,
		0x9e, 0x98, 0xc1, 0xb2, 0x8a, 0x32, 0x10, 0x02, 0x5d, 0xf5, 0x16, 0x20, 0xd8, 0x49, 0x65, 0xf8,
		0xb6, 0xa4, 0x7c, 0xf6, 0x8a, 0x89, 0x1e, 0x2f, 0x54, 0xda, 0x22, 0x8d, 0x04, 0x95, 0x56, 0x23,
		0xaa, 0x20, 0x67, 0xa4, 0x78, 0xa7, 0xc8, 0x19, 0x91, 0x33, 0x2a, 0x1c, 0x39, 0x39, 0x23, 0xe1,
		0x13, 0x86, 0x4a, 0xcb, 0x96, 0x5d, 0xd0, 0x70, 0xc8, 0x68, 0x18, 0x0e, 0x33, 0xb8, 0x0d, 0xdc,
		0x06, 0x6e, 0x03, 0xb7, 0x81, 0xdb, 0x54, 0x73, 0x1f, 0x70, 0x98, 0x2d, 0xee, 0x16, 0xf5, 0x3e,
		0xea, 0x7d, 0xab, 0xef, 0x25, 0xf5, 0x3e, 0x38, 0xcc, 0x28, 0xa9, 0x97, 0xe8, 0xc0, 0x4e, 0x2a,
		0x85, 0x3e, 0x52, 0x1b, 0x01, 0x4a, 0x82, 0x3c, 0xee, 0x0f, 0x29, 0xb7, 0xe0, 0x4d, 0xb2, 0x6e,
		0x77, 0xfd, 0xf7, 0xcc, 0xba, 0xdd, 0xaa, 0xc5, 0xb1, 0x6e, 0x57, 0x54, 0x32, 0xec, 0x2a, 0xd8,
		0x55, 0xa1, 0x7b, 0x75, 0xd8, 0x55, 0xb0, 0xab, 0xea, 0xe7, 0x14, 0xec, 0x9d, 0x83, 0xb5, 0x93,
		0xf0, 0xc6, 0x59, 0x78, 0xe3, 0x34, 0xbc, 0x70, 0x1e, 0x36, 0xd9, 0x0d, 0xd8, 0x55, 0xea, 0xd6,
		0x1d, 0x76, 0x95, 0xe2, 0x0f, 0xa7, 0xda, 0xb2, 0xf4, 0x1c, 0x24, 0xb2, 0x3d, 0x31, 0x83, 0x65,
		0x15, 0x85, 0x5d, 0x85, 0xae, 0x7a, 0x0b, 0x10, 0xec, 0xa4, 0xb2, 0x6e, 0x77, 0x73, 0xa5, 0x65,
		0xdd, 0x2e, 0x41, 0x36, 0x41, 0x36, 0x41, 0x36, 0x41, 0x36, 0x41, 0xb6, 0xe6, 0x7d, 0x67, 0xb3,
		0x5b, 0x5d, 0xe0, 0x03, 0x1c, 0xe1, 0x08, 0x8e, 0x30, 0xa0, 0x0c, 0x50, 0x06, 0x28, 0x03, 0x94,
		0x01, 0xca, 0x00, 0x65, 0x80, 0x32, 0x63, 0x50, 0x06, 0x55, 0x15, 0xf8, 0x00, 0x7c, 0x00, 0x3e,
		0x00, 0x1f, 0x80, 0x0f, 0xaa, 0x21, 0x38, 0x54, 0x55, 0x8b, 0xbb, 0x45, 0xf3, 0x04, 0xcd, 0x13,
		0xab, 0xef, 0x25, 0xcd, 0x13, 0x50, 0x55, 0x51, 0x52, 0x2f, 0xd1, 0x81, 0x9d, 0x54, 0xd6, 0xed,
		0x06, 0x60, 0xca, 0x60, 0x4c, 0xae, 0xc5, 0x98, 0x64, 0xef, 0xae, 0x2f, 0x0a, 0xcc, 0xde, 0xdd,
		0xc7, 0x28, 0x6c, 0xd8, 0x0b, 0x78, 0xdf, 0x2d, 0x7e, 0x45, 0xa8, 0x8b, 0x78, 0x9f, 0x04, 0x74,
		0xb1, 0x1a, 0xee, 0x36, 0xcf, 0x3a, 0xf1, 0x78, 0xf2, 0xe2, 0x2e, 0xfb, 0xb2, 0x11, 0x7e, 0xe3,
		0xcb, 0xb5, 0x4b, 0xc5, 0xe3, 0x58, 0xc5, 0xf5, 0xb6, 0x3b, 0x3b, 0xc5, 0xed, 0x8c, 0x27, 0x37,
		0x21, 0xfa, 0x2d, 0x7a, 0x3a, 0xcb, 0x3e, 0xc5, 0xf9, 0xd7, 0xa1, 0x1b, 0xbd, 0x6c, 0xb6, 0xce,
		0x0f, 0xdb, 0x27, 0x47, 0xaf, 0x8e, 0x4f, 0x8e, 0xdf, 0xb4, 0x3f, 0x9c, 0x36, 0x5f, 0x1f, 0x9d,
		0xbd, 0x7f, 0x5a, 0xf3, 0x75, 0xb8, 0xd3, 0x97, 0xbc, 0x4d, 0xcb, 0x70, 0x7f, 0x50, 0x0b, 0x6a,
		0x31, 0x19, 0xe1, 0x8d, 0x1b, 0x75, 0xb3, 0x64, 0xa8, 0x0a, 0x24, 0x8b, 0xeb, 0xd7, 0x4c, 0xbb,
		0xfd, 0x71, 0xcf, 0x45, 0xf9, 0x75, 0x32, 0x8a, 0xba, 0x83, 0x34, 0xef, 0x24, 0xa9, 0xcb, 0xa2,
		0xab, 0x41, 0x16, 0x35, 0x5b, 0x37, 0x87, 0xd1, 0xdc, 0xc5, 0x44, 0x73, 0x1f, 0x13, 0x8d, 0x86,
		0xae, 0x9b, 0x5c, 0x25, 0xdd, 0x8f, 0x73, 0x17, 0x3e, 0xce, 0x66, 0x40, 0x42, 0x49, 0x67, 0x0c,
		0xaa, 0x06, 0xcb, 0xf7, 0xb2, 0xb7, 0xf4, 0xaa, 0x14, 0xab, 0x85, 0x96, 0x25, 0x82, 0xd2, 0x35,
		0xad, 0x4a, 0x5b, 0x08, 0x03, 0x4c, 0xbf, 0xfd, 0x22, 0x28, 0x74, 0xa5, 0x14, 0xae, 0xf8, 0x1e,
		0xa6, 0x08, 0x1a, 0x9c, 0x8a, 0x03, 0x11, 0x99, 0xeb, 0x5d, 0xfd, 0x75, 0x10, 0x50, 0xd8, 0xc6,
		0xf4, 0xcd, 0x2d, 0xde, 0x98, 0x94, 0xba, 0x16, 0xde, 0xbb, 0x24, 0x4d, 0xe8, 0xfa, 0xc9, 0x0e,
		0x35, 0x12, 0x6f, 0xbf, 0xd0, 0x68, 0xb3, 0xd0, 0x6b, 0xa7, 0xd0, 0x02, 0x40, 0xea, 0xed, 0x11,
		0xea, 0x18, 0x47, 0xb5, 0xdd, 0x21, 0xac, 0x74, 0x86, 0xf4, 0xd0, 0xa0, 0x46, 0x77, 0x71, 0xe7,
		0x85, 0x95, 0x78, 0x71, 0x2d, 0xe7, 0xf2, 0x84, 0x15, 0x4a, 0x67, 0xfa, 0x9b, 0x5a, 0xbf, 0x9a,
		0x66, 0x7f, 0x9a, 0x7e, 0x3f, 0x9a, 0x65, 0x76, 0x47, 0xb5, 0xdf, 0xcc, 0x8f, 0xfc, 0x8e, 0x56,
		0x3f, 0x59, 0xd8, 0x85, 0x19, 0xad, 0x69, 0x6d, 0x8d, 0x91, 0x4b, 0x7b, 0x71, 0x6f, 0x46, 0x87,
		0x8a, 0xb3, 0xc1, 0xd8, 0x64, 0x32, 0xe7, 0xdd, 0x67, 0xd0, 0x1a, 0x8a, 0x67, 0xc0, 0x03, 0xd3,
		0xe4, 0x7f, 0x5d, 0xe8, 0x8e, 0x3b, 0xdd, 0xd5, 0x1e, 0x77, 0xba, 0xcb, 0xb8, 0xd3, 0xf0, 0x1d,
		0xa2, 0xb9, 0x63, 0x34, 0x77, 0x90, 0xa6, 0x8e, 0x52, 0xc7, 0x61, 0x2a, 0x39, 0xce, 0xe2, 0x24,
		0xd5, 0x1b, 0xac, 0x0d, 0x79, 0x59, 0xca, 0x7c, 0xac, 0xba, 0x77, 0x55, 0x99, 0x2f, 0x30, 0xa0,
		0x6b, 0xc9, 0x2b, 0xc5, 0xf0, 0xae, 0x1c, 0xb0, 0xe8, 0x56, 0xd2, 0x58, 0x3d, 0x20, 0xd8, 0xd8,
		0x23, 0x98, 0x1b, 0x5d, 0xee, 0xe3, 0xd2, 0x4b, 0x2e, 0x95, 0xa4, 0x92, 0x62, 0x22, 0xc5, 0x44,
		0x8a, 0x89, 0x14, 0x13, 0x29, 0x26, 0xa5, 0x1c, 0xff, 0x9d, 0xeb, 0xad, 0x92, 0xeb, 0x57, 0x36,
		0xc8, 0xa4, 0x40, 0x48, 0x81, 0x90, 0x02, 0x21, 0x05, 0xe2, 0x93, 0x81, 0x2f, 0x04, 0xb2, 0xf1,
		0x85, 0xc1, 0x25, 0x51, 0xfd, 0x9d, 0x83, 0xb5, 0x93, 0xf0, 0xc6, 0x59, 0x78, 0xe3, 0x34, 0xbc,
		0x70, 0x1e, 0xba, 0x4e, 0x44, 0xd9, 0x99, 0x14, 0x27, 0xcc, 0xc6, 0x17, 0x36, 0xbe, 0x68, 0xfe,
		0x70, 0x86, 0x96, 0x2c, 0x3d, 0x07, 0xf3, 0x20, 0x3c, 0x31, 0x83, 0x65, 0x15, 0x65, 0xe3, 0x0b,
		0xba, 0xea, 0x2d, 0x40, 0xb0, 0x93, 0xca, 0x9a, 0x7d, 0x49, 0xf9, 0xdb, 0xb8, 0x66, 0x9f, 0x59,
		0xf9, 0xcc, 0xca, 0x97, 0x37, 0x5b, 0xe4, 0x8c, 0x44, 0x05, 0x93, 0x33, 0x22, 0x67, 0x44, 0xce,
		0xc8, 0x12, 0x9c, 0x31, 0x2b, 0x5f, 0xdf, 0xbc, 0x6b, 0xcf, 0xca, 0x07, 0x0d, 0x83, 0x86, 0xab,
		0x3b, 0x5e, 0x96, 0x14, 0x80, 0xdb, 0xc0, 0x6d, 0xe0, 0x36, 0x70, 0x1b, 0xb8, 0x4d, 0x35, 0xf7,
		0xc1, 0x92, 0x02, 0x8b, 0xbb, 0x45, 0xbd, 0x8f, 0x7a, 0xdf, 0xea, 0x7b, 0x49, 0xbd, 0x8f, 0x25,
		0x05, 0x28, 0xa9, 0x97, 0xe8, 0xc0, 0x4e, 0x2a, 0x85, 0x3e, 0x52, 0x1b, 0x01, 0x4a, 0x62, 0x3b,
		0x84, 0x0d, 0x6d, 0x75, 0x99, 0x26, 0xa9, 0xc2, 0x61, 0xd5, 0x53, 0xab, 0xbf, 0x54, 0x56, 0x05,
		0x74, 0x4c, 0x86, 0xf4, 0x4c, 0xc5, 0xd6, 0x9c, 0x4c, 0xb5, 0x0f, 0x99, 0x4a, 0x40, 0x32, 0x64,
		0x2a, 0xc8, 0x54, 0xa1, 0x3b, 0x71, 0xc8, 0x54, 0x90, 0xa9, 0xea, 0xe7, 0x14, 0xec, 0x9d, 0x83,
		0xb5, 0x93, 0xf0, 0xc6, 0x59, 0x78, 0xe3, 0x34, 0xbc, 0x70, 0x1e, 0x36, 0xc9, 0x0c, 0xc8, 0x54,
		0xea, 0xd6, 0x1d, 0x32, 0x95, 0xe2, 0x0f, 0xa7, 0xb8, 0xb2, 0xf4, 0x1c, 0xe4, 0xad, 0x3d, 0x31,
		0x83, 0x65, 0x15, 0x85, 0x4c, 0x85, 0xae, 0x7a, 0x0b, 0x10, 0xec, 0xa4, 0x5e, 0xd0, 0xc5, 0xb8,
		0xb1, 0xd2, 0x96, 0xb6, 0xbb, 0xba, 0xdb, 0xae, 0x73, 0x3d, 0xd7, 0x33, 0x25, 0xf6, 0xac, 0x78,
		0x1c, 0x82, 0x6c, 0x82, 0x6c, 0x82, 0x6c, 0x82, 0x6c, 0x82, 0xec, 0xda, 0x04, 0xd9, 0xdb, 0xc7,
		0x3e, 0x81, 0x12, 0x2c, 0x8d, 0x1c, 0xa0, 0x04, 0x6b, 0x82, 0x6f, 0x40, 0x19, 0xa0, 0x0c, 0x50,
		0x06, 0x28, 0x03, 0x94, 0x01, 0xca, 0x00, 0x65, 0x3e, 0x81, 0x32, 0x98, 0xa9, 0xc0, 0x07, 0xe0,
		0x03, 0xf0, 0x01, 0xf8, 0x00, 0x7c, 0x50, 0x0d, 0xc1, 0x61, 0xa6, 0x5a, 0xdc, 0x2d, 0x9a, 0x27,
		0x68, 0x9e, 0x58, 0x7d, 0x2f, 0x69, 0x9e, 0x80, 0x99, 0x8a, 0x92, 0x7a, 0x89, 0x0e, 0xec, 0xa4,
		0x5e, 0x40, 0x90, 0xf4, 0xdf, 0x94, 0x41, 0x90, 0xfc, 0x3b, 0x82, 0xe4, 0x8c, 0x77, 0xc7, 0xde,
		0x59, 0x7b, 0x7d, 0x65, 0xef, 0xec, 0x0a, 0xfd, 0x6c, 0xa8, 0x30, 0x5e, 0xb3, 0x71, 0x37, 0x4f,
		0xe7, 0x91, 0xd7, 0xe9, 0xec, 0x87, 0x35, 0xe7, 0xbf, 0xab, 0xdd, 0x9a, 0xff, 0x9a, 0xf6, 0xab,
		0x4f, 0xc3, 0xf6, 0xe9, 0xfc, 0x37, 0xb4, 0x8f, 0xae, 0x92, 0xb3, 0xce, 0x55, 0xd2, 0x6e, 0x0e,
		0x6f, 0x0e, 0x3f, 0xcc, 0x9e, 0xbb, 0x3d, 0xcb, 0x13, 0x9d, 0x4c, 0x1f, 0x9b, 0xa5, 0xb9, 0x77,
		0x8e, 0xb9, 0xd4, 0x8f, 0x96, 0xb9, 0xae, 0x4b, 0x6e, 0x14, 0xda, 0xe3, 0x56, 0xb7, 0xc3, 0x15,
		0xe2, 0x59, 0xa3, 0xbb, 0x96, 0x20, 0xd6, 0xe8, 0x56, 0xaa, 0x1d, 0xac, 0xd1, 0x65, 0x8d, 0xee,
		0x03, 0x27, 0xc6, 0x1a, 0xdd, 0x00, 0x0d, 0xb2, 0xba, 0x61, 0xb6, 0x30, 0xd0, 0x76, 0x86, 0xda,
		0xca, 0x60, 0x9b, 0x1b, 0x6e, 0x73, 0x03, 0x6e, 0x6a, 0xc8, 0xeb, 0x99, 0x9d, 0x60, 0xf2, 0x03,
		0x93, 0x1f, 0xea, 0xe7, 0x14, 0xec, 0x9d, 0x83, 0xb5, 0x93, 0xf0, 0xc6, 0x59, 0x78, 0xe3, 0x34,
		0xbc, 0x70, 0x1e, 0xba, 0x4e, 0x44, 0xd9, 0x99, 0x14, 0x27, 0xcc, 0xe4, 0x07, 0x26, 0x3f, 0x68,
		0xfe, 0x70, 0x9a, 0x17, 0x96, 0x9e, 0x83, 0xba, 0xb0, 0x27, 0x66, 0xb0, 0xac, 0xa2, 0x4c, 0x7e,
		0x40, 0x57, 0xbd, 0x05, 0x08, 0x76, 0x52, 0x99, 0xae, 0x2d, 0x29, 0x9f, 0xc5, 0x61, 0xa2, 0xc7,
		0x0b, 0x67, 0xb6, 0x48, 0x23, 0xc1, 0x99, 0xd5, 0x88, 0x2a, 0xc8, 0x19, 0x29, 0xde, 0x29, 0x72,
		0x46, 0xe4, 0x8c, 0x0a, 0x47, 0x4e, 0xce, 0x48, 0xf8, 0x84, 0xe1, 0xcc, 0xb2, 0x46, 0x17, 0x34,
		0x1c, 0x32, 0x1a, 0x86, 0xac, 0x0c, 0x6e, 0x03, 0xb7, 0x81, 0xdb, 0xc0, 0x6d, 0xe0, 0x36, 0xd5,
		0xdc, 0x07, 0x64, 0x65, 0x8b, 0xbb, 0x45, 0xbd, 0x8f, 0x7a, 0xdf, 0xea, 0x7b, 0x49, 0xbd, 0x0f,
		0xb2, 0x32, 0x4a, 0xea, 0x25, 0x3a, 0xb0, 0x93, 0x4a, 0xa1, 0x8f, 0xd4, 0x46, 0x80, 0x92, 0x60,
		0x89, 0xdb, 0xb3, 0x70, 0x0b, 0xbe, 0x24, 0xfb, 0x74, 0xd7, 0x7f, 0xbf, 0xec, 0xd3, 0xad, 0x5a,
		0x1c, 0xfb, 0x74, 0x45, 0x25, 0xc3, 0xaa, 0x82, 0x55, 0x15, 0xba, 0x37, 0x87, 0x55, 0x05, 0xab,
		0xaa, 0x7e, 0x4e, 0xc1, 0xde, 0x39, 0x58, 0x3b, 0x09, 0x6f, 0x9c, 0x85, 0x37, 0x4e, 0xc3, 0x0b,
		0xe7, 0x61, 0x93, 0xd5, 0x80, 0x55, 0xa5, 0x6e, 0xdd, 0x61, 0x55, 0x29, 0xfe, 0x70, 0xaa, 0x2c,
		0x4b, 0xcf, 0x41, 0x02, 0xdb, 0x13, 0x33, 0x58, 0x56, 0x51, 0x58, 0x55, 0xe8, 0xaa, 0xb7, 0x00,
		0xc1, 0x4e, 0x2a, 0xfb, 0x74, 0x37, 0x57, 0x5a, 0xf6, 0xe9, 0x12, 0x64, 0x13, 0x64, 0x13, 0x64,
		0x13, 0x64, 0x13, 0x64, 0x6b, 0xde, 0x77, 0x56, 0xb7, 0xd5, 0x05, 0x3e, 0xc0, 0x0d, 0x8e, 0xe0,
		0x06, 0x03, 0xca, 0x00, 0x65, 0x80, 0x32, 0x40, 0x19, 0xa0, 0x0c, 0x50, 0x06, 0x28, 0x33, 0x06,
		0x65, 0x50, 0x54, 0x81, 0x0f, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01, 0xf8, 0xa0, 0x1a, 0x82, 0x43,
		0x51, 0xb5, 0xb8, 0x5b, 0x34, 0x4f, 0xd0, 0x3c, 0xb1, 0xfa, 0x5e, 0xd2, 0x3c, 0x01, 0x45, 0x15,
		0x25, 0xf5, 0x12, 0x1d, 0xd8, 0x49, 0x65, 0x9f, 0x6e, 0x00, 0xa6, 0x0c, 0xa6, 0xe4, 0xa3, 0x98,
		0x92, 0x2c, 0xd6, 0xf5, 0x45, 0x71, 0x59, 0xac, 0xfb, 0x77, 0x8a, 0x1a, 0xe8, 0x86, 0xdd, 0x77,
		0x8b, 0xc7, 0x67, 0xd3, 0xee, 0x8a, 0xe3, 0xd6, 0xa0, 0x1c, 0xab, 0x52, 0x8d, 0xd5, 0x37, 0xe9,
		0xee, 0xb3, 0x49, 0x77, 0x03, 0x89, 0x6c, 0xd2, 0x15, 0x07, 0x61, 0x6c, 0xd2, 0x5d, 0xf3, 0xc4,
		0xd4, 0x36, 0xe9, 0x8e, 0x5c, 0xda, 0x8b, 0x7b, 0xb3, 0x9e, 0x9b, 0x38, 0x1b, 0x8c, 0x4d, 0xc6,
		0x3f, 0xdc, 0x7d, 0x06, 0x2d, 0xe6, 0xb5, 0x41, 0xb3, 0x91, 0x66, 0x93, 0xd1, 0x85, 0xee, 0x4c,
		0x8d, 0x5d, 0x36, 0x15, 0x07, 0xec, 0x08, 0xad, 0x1c, 0xa2, 0xb9, 0x63, 0x34, 0x77, 0x90, 0xa6,
		0x8e, 0xb2, 0x9e, 0x79, 0x1f, 0xf5, 0x2a, 0x9e, 0x61, 0xf3, 0x8f, 0x72, 0xd3, 0x0f, 0x19, 0x1c,
		0x32, 0x38, 0x8f, 0xc9, 0xe0, 0x28, 0x24, 0x15, 0x05, 0x53, 0x1e, 0x4f, 0x02, 0x52, 0xbd, 0x86,
		0xbb, 0xcd, 0xb3, 0x4e, 0x3c, 0x9e, 0xbc, 0xc3, 0xcb, 0xbe, 0xac, 0xdd, 0x6b, 0x7c, 0xb9, 0x76,
		0xa9, 0x38, 0x60, 0x56, 0x4c, 0x34, 0xec, 0xec, 0x14, 0xfa, 0x1b, 0xa7, 0x9d, 0xcf, 0x2e, 0xfa,
		0x2d, 0x7a, 0x3a, 0xf3, 0xbd, 0x71, 0xfe, 0x75, 0xe8, 0x46, 0x2f, 0x9b, 0xad, 0xf3, 0xc3, 0xf6,
		0x87, 0xd3, 0xe6, 0xeb, 0xa3, 0xb3, 0xf7, 0x4f, 0x6b, 0x9e, 0x90, 0x98, 0xbe, 0xdc, 0x6d, 0x4a,
		0x47, 0xac, 0xf9, 0xf6, 0x6b, 0x31, 0xe5, 0xf1, 0x8d, 0x1b, 0x75, 0xb3, 0x64, 0xa8, 0x5a, 0x14,
		0x2b, 0xae, 0x5b, 0x33, 0xed, 0xf6, 0xc7, 0x3d, 0x17, 0xe5, 0xd7, 0xc9, 0x28, 0xea, 0x0e, 0xd2,
		0xbc, 0x93, 0xa4, 0x2e, 0x8b, 0xae, 0x06, 0x59, 0xd4, 0x6c, 0xdd, 0x1c, 0x46, 0xf3, 0xf4, 0x79,
		0x34, 0x1a, 0xba, 0x6e, 0x72, 0x95, 0x74, 0x3f, 0xce, 0x9d, 0xd9, 0x38, 0x9b, 0xb9, 0x54, 0x25,
		0x1d, 0x31, 0x88, 0x81, 0x96, 0xef, 0x61, 0x6f, 0xe9, 0x15, 0x29, 0x02, 0x49, 0xcb, 0x00, 0xa8,
		0x74, 0x2d, 0x37, 0xd5, 0x12, 0x80, 0xb0, 0xe9, 0xb7, 0x5f, 0x04, 0x85, 0x9e, 0x94, 0x00, 0xbb,
		0xaf, 0x40, 0xbd, 0x21, 0x5a, 0xdd, 0xab, 0xa4, 0x98, 0x2a, 0x73, 0x9f, 0xab, 0xd7, 0x7f, 0x01,
		0x0d, 0x6d, 0xf4, 0xf7, 0x6f, 0x86, 0x69, 0xec, 0x6e, 0x86, 0x72, 0xda, 0x59, 0x38, 0xe7, 0x25,
		0x59, 0x42, 0x77, 0x4d, 0xb6, 0x34, 0x2a, 0x9e, 0x19, 0xd6, 0xc8, 0x04, 0xeb, 0x65, 0x7e, 0xb5,
		0x50, 0x8e, 0x7a, 0x66, 0x57, 0x1d, 0xc8, 0xa8, 0x66, 0x6e, 0xc3, 0xca, 0x4d, 0x48, 0x97, 0x32,
		0x4b, 0xb3, 0x8e, 0xf4, 0x1a, 0x49, 0x4a, 0x52, 0x6b, 0xd6, 0x4f, 0xb2, 0x4b, 0x3f, 0x49, 0x98,
		0xe9, 0x1b, 0xfa, 0x49, 0x42, 0x0d, 0xc5, 0xea, 0xd2, 0x4f, 0xd2, 0x5d, 0xd8, 0x10, 0xe5, 0xb4,
		0xd2, 0x5c, 0x6e, 0xcd, 0x77, 0x88, 0xd0, 0xef, 0x50, 0x03, 0x83, 0x6d, 0x6e, 0xb8, 0xcd, 0x0d,
		0xb8, 0xa9, 0x21, 0xd7, 0x31, 0xe8, 0x4a, 0x86, 0x5d, 0xdd, 0xc0, 0x17, 0x02, 0xd9, 0x21, 0xc2,
		0x28, 0x8c, 0xa8, 0xfe, 0xce, 0xc1, 0xda, 0x49, 0x78, 0xe3, 0x2c, 0xbc, 0x71, 0x1a, 0x5e, 0x38,
		0x0f, 0x5d, 0x27, 0xa2, 0xec, 0x4c, 0x8a, 0x13, 0x66, 0x87, 0x08, 0x3b, 0x44, 0x34, 0x7f, 0x38,
		0x63, 0x30, 0x96, 0x9e, 0x83, 0x09, 0x03, 0x9e, 0x98, 0xc1, 0xb2, 0x8a, 0xb2, 0x43, 0x04, 0x5d,
		0xf5, 0x16, 0x20, 0xd8, 0x49, 0x65, 0x61, 0xbb, 0xa4, 0xfc, 0x6d, 0x5c, 0xd8, 0xce, 0xf4, 0x75,
		0xa6, 0xaf, 0xcb, 0x9b, 0x2d, 0x72, 0x46, 0xa2, 0x82, 0xc9, 0x19, 0x91, 0x33, 0x22, 0x67, 0x64,
		0x09, 0xce, 0x98, 0xbe, 0xae, 0x6f, 0xde, 0xb5, 0xa7, 0xaf, 0x83, 0x86, 0x41, 0xc3, 0xd5, 0x1d,
		0x2f, 0x63, 0xef, 0xc1, 0x6d, 0xe0, 0x36, 0x70, 0x1b, 0xb8, 0x0d, 0xdc, 0xa6, 0x9a, 0xfb, 0x60,
		0xec, 0xbd, 0xc5, 0xdd, 0xa2, 0xde, 0x47, 0xbd, 0x6f, 0xf5, 0xbd, 0xa4, 0xde, 0xc7, 0xd8, 0x7b,
		0x94, 0xd4, 0x4b, 0x74, 0x60, 0x27, 0x95, 0x42, 0x1f, 0xa9, 0x8d, 0x00, 0x25, 0xb1, 0x6f, 0x40,
		0x6d, 0xb6, 0xc0, 0x37, 0x12, 0x79, 0x69, 0x88, 0xfb, 0x2f, 0x73, 0x8a, 0x4e, 0x5d, 0x46, 0x73,
		0xa8, 0x8c, 0xa2, 0xef, 0x98, 0xcc, 0xe3, 0x55, 0x98, 0x91, 0xfe, 0x7d, 0xdc, 0xa5, 0x4e, 0xa5,
		0xda, 0x87, 0x4a, 0x25, 0x20, 0x19, 0x2a, 0x15, 0x54, 0xaa, 0xd0, 0x5d, 0x38, 0x54, 0x2a, 0xa8,
		0x54, 0xf5, 0x73, 0x0a, 0xf6, 0xce, 0xc1, 0xda, 0x49, 0x78, 0xe3, 0x2c, 0xbc, 0x71, 0x1a, 0x5e,
		0x38, 0x0f, 0x9b, 0x54, 0x06, 0x54, 0x2a, 0x75, 0xeb, 0x0e, 0x95, 0x4a, 0xf1, 0x87, 0x53, 0x5a,
		0x59, 0x7a, 0x0e, 0xb2, 0xd6, 0x9e, 0x98, 0xc1, 0xb2, 0x8a, 0x42, 0xa5, 0x42, 0x57, 0xbd, 0x05,
		0x08, 0x76, 0x52, 0x2f, 0xe8, 0x61, 0xdc, 0x58, 0x69, 0x4b, 0xdb, 0x43, 0xdd, 0x6d, 0xd7, 0xb9,
		0x9e, 0xeb, 0x99, 0xd2, 0x7a, 0x56, 0x3c, 0x0e, 0x41, 0x36, 0x41, 0x36, 0x41, 0x36, 0x41, 0x36,
		0x41, 0x76, 0x6d, 0x82, 0xec, 0xed, 0xe3, 0x9e, 0x40, 0x08, 0x96, 0x46, 0x0e, 0x10, 0x82, 0x35,
		0xc1, 0x37, 0xa0, 0x0c, 0x50, 0x06, 0x28, 0x03, 0x94, 0x01, 0xca, 0x00, 0x65, 0x80, 0x32, 0x9f,
		0x40, 0x19, 0xbc, 0x54, 0xe0, 0x03, 0xf0, 0x01, 0xf8, 0x00, 0x7c, 0x00, 0x3e, 0xa8, 0x86, 0xe0,
		0xf0, 0x52, 0x2d, 0xee, 0x16, 0xcd, 0x13, 0x34, 0x4f, 0xac, 0xbe, 0x97, 0x34, 0x4f, 0xc0, 0x4b,
		0x45, 0x49, 0xbd, 0x44, 0x07, 0x76, 0x52, 0x2f, 0xa0, 0x47, 0xfa, 0x6f, 0xca, 0xa0, 0x47, 0xde,
		0x4f, 0x8f, 0x9c, 0xb1, 0xee, 0x58, 0x5c, 0x6e, 0xaf, 0xad, 0xda, 0x5a, 0x1a, 0x80, 0x76, 0x36,
		0x54, 0xd8, 0xae, 0x3f, 0xbe, 0x2b, 0xfc, 0x64, 0xff, 0x7c, 0x98, 0x1e, 0xdf, 0x0c, 0xd3, 0xf6,
		0x2c, 0x43, 0x74, 0x32, 0x7d, 0xe8, 0x40, 0xb7, 0xe7, 0x0b, 0xaa, 0x77, 0xb9, 0x13, 0x2d, 0x73,
		0x5d, 0x97, 0xdc, 0x28, 0x34, 0xc6, 0xad, 0x6e, 0x84, 0x2b, 0xc4, 0xb3, 0x3e, 0x77, 0x2d, 0x41,
		0xac, 0xcf, 0xad, 0x54, 0x3b, 0x58, 0x9f, 0xcb, 0xfa, 0xdc, 0x07, 0x4e, 0x8c, 0xf5, 0xb9, 0x01,
		0x1a, 0x64, 0x75, 0xc3, 0x6c, 0x61, 0xa0, 0xed, 0x0c, 0xb5, 0x95, 0xc1, 0x36, 0x37, 0xdc, 0xe6,
		0x06, 0xdc, 0xd4, 0x90, 0xd7, 0x33, 0x2f, 0xc1, 0xcc, 0x07, 0x66, 0x3e, 0xd4, 0xcf, 0x29, 0xd8,
		0x3b, 0x07, 0x6b, 0x27, 0xe1, 0x8d, 0xb3, 0xf0, 0xc6, 0x69, 0x78, 0xe1, 0x3c, 0x74, 0x9d, 0x88,
		0xb2, 0x33, 0x29, 0x4e, 0x98, 0x99, 0x0f, 0xcc, 0x7c, 0xd0, 0xfc, 0xe1, 0xb4, 0x2d, 0x2c, 0x3d,
		0x07, 0x15, 0x61, 0x4f, 0xcc, 0x60, 0x59, 0x45, 0x99, 0xf9, 0x80, 0xae, 0x7a, 0x0b, 0x10, 0xec,
		0xa4, 0x32, 0x55, 0x5b, 0x52, 0x3e, 0x0b, 0xc3, 0x44, 0x8f, 0x17, 0xb6, 0x6c, 0x91, 0x46, 0x82,
		0x2d, 0xab, 0x11, 0x55, 0x90, 0x33, 0x52, 0xbc, 0x53, 0xe4, 0x8c, 0xc8, 0x19, 0x15, 0x8e, 0x9c,
		0x9c, 0x91, 0xf0, 0x09, 0xc3, 0x96, 0x65, 0x7d, 0x2e, 0x68, 0x38, 0x64, 0x34, 0x0c, 0x4d, 0x19,
		0xdc, 0x06, 0x6e, 0x03, 0xb7, 0x81, 0xdb, 0xc0, 0x6d, 0xaa, 0xb9, 0x0f, 0x68, 0xca, 0x16, 0x77,
		0x8b, 0x7a, 0x1f, 0xf5, 0xbe, 0xd5, 0xf7, 0x92, 0x7a, 0x1f, 0x34, 0x65, 0x94, 0xd4, 0x4b, 0x74,
		0x60, 0x27, 0x95, 0x42, 0x1f, 0xa9, 0x8d, 0x00, 0x25, 0xc1, 0x0f, 0xb7, 0x66, 0xe0, 0x16, 0x6c,
		0x49, 0xf6, 0xe8, 0xae, 0xff, 0x76, 0xd9, 0xa3, 0x5b, 0xb5, 0x38, 0xf6, 0xe8, 0x8a, 0x4a, 0x86,
		0x53, 0x05, 0xa7, 0x2a, 0x74, 0x5f, 0x0e, 0xa7, 0x0a, 0x4e, 0x55, 0xfd, 0x9c, 0x82, 0xbd, 0x73,
		0xb0, 0x76, 0x12, 0xde, 0x38, 0x0b, 0x6f, 0x9c, 0x86, 0x17, 0xce, 0xc3, 0x26, 0xa7, 0x01, 0xa7,
		0x4a, 0xdd, 0xba, 0xc3, 0xa9, 0x52, 0xfc, 0xe1, 0xd4, 0x58, 0x96, 0x9e, 0x83, 0xf4, 0xb5, 0x27,
		0x66, 0xb0, 0xac, 0xa2, 0x70, 0xaa, 0xd0, 0x55, 0x6f, 0x01, 0x82, 0x9d, 0x54, 0xf6, 0xe8, 0x6e,
		0xae, 0xb4, 0xec, 0xd1, 0x25, 0xc8, 0x26, 0xc8, 0x26, 0xc8, 0x26, 0xc8, 0x26, 0xc8, 0xd6, 0xbc,
		0xef, 0xac, 0x6c, 0xab, 0x0b, 0x7c, 0x80, 0x19, 0x1c, 0xc1, 0x0c, 0x06, 0x94, 0x01, 0xca, 0x00,
		0x65, 0x80, 0x32, 0x40, 0x19, 0xa0, 0x0c, 0x50, 0x66, 0x0c, 0xca, 0x20, 0xa8, 0x02, 0x1f, 0x80,
		0x0f, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x41, 0x35, 0x04, 0x87, 0xa0, 0x6a, 0x71, 0xb7, 0x68, 0x9e,
		0xa0, 0x79, 0x62, 0xf5, 0xbd, 0xa4, 0x79, 0x02, 0x82, 0x2a, 0x4a, 0xea, 0x25, 0x3a, 0xb0, 0x93,
		0xca, 0x1e, 0xdd, 0x00, 0x4c, 0x19, 0x3c, 0xc9, 0x47, 0xf0, 0x24, 0x59, 0xa8, 0xeb, 0x8b, 0xda,
		0xb2, 0x50, 0xf7, 0x7e, 0x35, 0x0d, 0x72, 0xb3, 0xee, 0xbb, 0xc5, 0xc3, 0x87, 0xba, 0x61, 0xf7,
		0x49, 0x40, 0xb7, 0xa8, 0xe1, 0x6e, 0xf3, 0xac, 0x13, 0x8f, 0x27, 0xef, 0xeb, 0xb2, 0x2f, 0x1b,
		0xc4, 0x37, 0xbe, 0x5c, 0xbb, 0x54, 0x3c, 0x54, 0x55, 0xdc, 0x5b, 0xbb, 0xb3, 0x53, 0x5c, 0xc5,
		0x78, 0x72, 0x01, 0xa2, 0xdf, 0xa2, 0xa7, 0xb3, 0x04, 0x53, 0x9c, 0x7f, 0x1d, 0xba, 0xd1, 0xcb,
		0x93, 0xfd, 0xf3, 0xd6, 0x69, 0xfb, 0xf8, 0xbc, 0x75, 0xfa, 0xb4, 0xe6, 0xdb, 0x6d, 0xa7, 0xaf,
		0x76, 0x9b, 0x76, 0xdb, 0xae, 0xf5, 0xee, 0x6b, 0x31, 0xe8, 0xe0, 0x8d, 0x1b, 0x75, 0xb3, 0x64,
		0xa8, 0x8a, 0x0b, 0x8b, 0xab, 0xd6, 0x4c, 0xbb, 0xfd, 0x71, 0xcf, 0x45, 0xf9, 0x75, 0x32, 0x8a,
		0xba, 0x83, 0x34, 0xef, 0x24, 0xa9, 0xcb, 0xa2, 0xab, 0x41, 0x16, 0xbd, 0xfa, 0xa3, 0x15, 0x4d,
		0x8e, 0x39, 0x1a, 0x0d, 0x5d, 0x37, 0xb9, 0x4a, 0xba, 0x1f, 0xe7, 0xfe, 0x78, 0x9c, 0xcd, 0x50,
		0x81, 0x92, 0x76, 0x18, 0x24, 0xfe, 0x97, 0x6f, 0x60, 0x6f, 0xe9, 0xf5, 0x28, 0x16, 0xfc, 0x2c,
		0xb3, 0xfc, 0xa5, 0x0b, 0xb9, 0x89, 0x86, 0x80, 0xe3, 0x4d, 0xbf, 0xfd, 0x22, 0x28, 0xc4, 0xa4,
		0x14, 0x6f, 0xf8, 0x19, 0x67, 0x08, 0x9a, 0x96, 0x6a, 0x22, 0x09, 0x99, 0xbb, 0x5c, 0xbd, 0xee,
		0x0b, 0x68, 0x67, 0x63, 0xf6, 0x9a, 0x6e, 0x86, 0x7d, 0xb9, 0x09, 0x15, 0x85, 0x43, 0x5e, 0x92,
		0x25, 0x74, 0xcf, 0x64, 0x87, 0x0e, 0x89, 0xb7, 0x47, 0x68, 0xb4, 0x41, 0xe8, 0xb5, 0x3b, 0x68,
		0xa1, 0x1b, 0xf5, 0xf6, 0x05, 0x75, 0x00, 0xa3, 0xda, 0x8e, 0x10, 0x56, 0x2e, 0x42, 0x7a, 0xa8,
		0x4f, 0x89, 0xe2, 0x27, 0xaf, 0xca, 0xab, 0x88, 0x85, 0xd2, 0xda, 0xac, 0x33, 0xa9, 0x4d, 0xad,
		0xb7, 0x4c, 0xb3, 0x97, 0x4c, 0xbf, 0x77, 0xcc, 0x32, 0x61, 0xa3, 0xda, 0x1b, 0xe6, 0x47, 0xca,
		0x46, 0xab, 0xf7, 0x2b, 0xec, 0x72, 0x8a, 0xd6, 0x64, 0xb5, 0x46, 0x77, 0x61, 0x43, 0x94, 0x53,
		0x49, 0x73, 0xb9, 0x35, 0x1f, 0x9d, 0xb9, 0xcb, 0xe8, 0xcc, 0xf0, 0x0d, 0xb6, 0xb9, 0xe1, 0x36,
		0x37, 0xe0, 0xa6, 0x86, 0x5c, 0xc7, 0xa0, 0x2b, 0x19, 0x76, 0x75, 0x03, 0x5f, 0x08, 0x64, 0x74,
		0x26, 0x0c, 0x90, 0xa8, 0xfe, 0xce, 0xc1, 0xda, 0x49, 0x78, 0xe3, 0x2c, 0xbc, 0x71, 0x1a, 0x5e,
		0x38, 0x0f, 0x5d, 0x27, 0xa2, 0xec, 0x4c, 0x8a, 0x13, 0x66, 0x74, 0x26, 0xa3, 0x33, 0x35, 0x7f,
		0x38, 0xec, 0x8f, 0xa5, 0xe7, 0xa0, 0xb1, 0xde, 0x13, 0x33, 0x58, 0x56, 0x51, 0x46, 0x67, 0xa2,
		0xab, 0xde, 0x02, 0x04, 0x3b, 0xa9, 0x6c, 0x29, 0x93, 0x94, 0xcf, 0x02, 0x76, 0xd1, 0xe3, 0x65,
		0xe8, 0x58, 0x91, 0x46, 0x62, 0xe8, 0x98, 0x46, 0x54, 0x41, 0xce, 0x48, 0xf1, 0x4e, 0x91, 0x33,
		0x22, 0x67, 0x54, 0x38, 0x72, 0x72, 0x46, 0xc2, 0x27, 0xcc, 0xd0, 0x31, 0xfd, 0xa1, 0x63, 0xa0,
		0x61, 0xd0, 0x70, 0x75, 0xc7, 0xcb, 0xb4, 0x37, 0x70, 0x1b, 0xb8, 0x0d, 0xdc, 0x06, 0x6e, 0x03,
		0xb7, 0xa9, 0xe6, 0x3e, 0x98, 0xf6, 0x66, 0x71, 0xb7, 0xa8, 0xf7, 0x51, 0xef, 0x5b, 0x7d, 0x2f,
		0xa9, 0xf7, 0x31, 0xed, 0x0d, 0x25, 0xf5, 0x12, 0x1d, 0xd8, 0x49, 0xa5, 0xd0, 0x47, 0x6a, 0x23,
		0x40, 0x49, 0x8c, 0xd9, 0x53, 0x9e, 0x2b, 0x70, 0x33, 0x9c, 0xfe, 0xed, 0x6f, 0x24, 0xc9, 0x5f,
		0xe6, 0x14, 0x9d, 0xba, 0x8c, 0xe5, 0x50, 0x99, 0xc2, 0xd6, 0xc9, 0x9d, 0x3e, 0x97, 0x6a, 0x26,
		0xb6, 0xe6, 0x54, 0xaa, 0x7d, 0xa8, 0x54, 0x02, 0x92, 0xa1, 0x52, 0x41, 0xa5, 0x0a, 0xdd, 0x85,
		0x43, 0xa5, 0x82, 0x4a, 0x55, 0x3f, 0xa7, 0x60, 0xef, 0x1c, 0xac, 0x9d, 0x84, 0x37, 0xce, 0xc2,
		0x1b, 0xa7, 0xe1, 0x85, 0xf3, 0xb0, 0x49, 0x65, 0x40, 0xa5, 0x52, 0xb7, 0xee, 0x50, 0xa9, 0x14,
		0x7f, 0x38, 0xa5, 0x95, 0xa5, 0xe7, 0x20, 0x6b, 0xed, 0x89, 0x19, 0x2c, 0xab, 0x28, 0x54, 0x2a,
		0x74, 0xd5, 0x5b, 0x80, 0x60, 0x27, 0xf5, 0x82, 0x1e, 0xc6, 0x8d, 0x95, 0xb6, 0xb4, 0x38, 0xc3,
		0xdd, 0x76, 0x9d, 0xeb, 0xb9, 0x9e, 0x29, 0xad, 0x67, 0xc5, 0xe3, 0x10, 0x64, 0x13, 0x64, 0x13,
		0x64, 0x13, 0x64, 0x13, 0x64, 0xd7, 0x26, 0xc8, 0x66, 0xe1, 0x7d, 0x5d, 0xe0, 0x03, 0x84, 0xe0,
		0x08, 0x42, 0x30, 0xa0, 0x0c, 0x50, 0x06, 0x28, 0x03, 0x94, 0x01, 0xca, 0x00, 0x65, 0x80, 0x32,
		0x63, 0x50, 0x06, 0x2f, 0x15, 0xf8, 0x00, 0x7c, 0x00, 0x3e, 0x00, 0x1f, 0x80, 0x0f, 0xaa, 0x21,
		0x38, 0xbc, 0x54, 0x8b, 0xbb, 0x45, 0xf3, 0x04, 0xcd, 0x13, 0xab, 0xef, 0x25, 0xcd, 0x13, 0xf0,
		0x52, 0x51, 0x52, 0x2f, 0xd1, 0x81, 0x9d, 0xd4, 0x0b, 0xe8, 0x91, 0xfe, 0x9b, 0x32, 0xe8, 0x91,
		0xf7, 0xd3, 0x23, 0x67, 0xac, 0x3b, 0x96, 0x96, 0xdb, 0x6b, 0xab, 0xb6, 0x96, 0x06, 0xa0, 0x9d,
		0x0d, 0x15, 0xb6, 0xeb, 0x86, 0x9b, 0xc2, 0xcf, 0x87, 0xfd, 0x51, 0x7b, 0x96, 0x21, 0x3a, 0x99,
		0x3e, 0x74, 0xa0, 0x9b, 0xf3, 0x05, 0xd5, 0xbb, 0xdc, 0x89, 0x96, 0xb9, 0xae, 0x4b, 0x6e, 0x14,
		0x1a, 0xe3, 0x56, 0x37, 0xc2, 0x15, 0xe2, 0x59, 0x9f, 0xbb, 0x96, 0x20, 0xd6, 0xe7, 0x56, 0xaa,
		0x1d, 0xac, 0xcf, 0x65, 0x7d, 0xee, 0x03, 0x27, 0xc6, 0xfa, 0xdc, 0x00, 0x0d, 0xb2, 0xba, 0x61,
		0xb6, 0x30, 0xd0, 0x76, 0x86, 0xda, 0xca, 0x60, 0x9b, 0x1b, 0x6e, 0x73, 0x03, 0x6e, 0x6a, 0xc8,
		0xeb, 0x99, 0x97, 0x60, 0xe6, 0x03, 0x33, 0x1f, 0xea, 0xe7, 0x14, 0xec, 0x9d, 0x83, 0xb5, 0x93,
		0xf0, 0xc6, 0x59, 0x78, 0xe3, 0x34, 0xbc, 0x70, 0x1e, 0xba, 0x4e, 0x44, 0xd9, 0x99, 0x14, 0x27,
		0xcc, 0xcc, 0x07, 0x66, 0x3e, 0x68, 0xfe, 0x70, 0xda, 0x16, 0x96, 0x9e, 0x83, 0x8a, 0xb0, 0x27,
		0x66, 0xb0, 0xac, 0xa2, 0xcc, 0x7c, 0x40, 0x57, 0xbd, 0x05, 0x08, 0x76, 0x52, 0x99, 0xaa, 0x2d,
		0x29, 0x9f, 0x85, 0x61, 0xa2, 0xc7, 0x0b, 0x5b, 0xb6, 0x48, 0x23, 0xc1, 0x96, 0xd5, 0x88, 0x2a,
		0xc8, 0x19, 0x29, 0xde, 0x29, 0x72, 0x46, 0xe4, 0x8c, 0x0a, 0x47, 0x4e, 0xce, 0x48, 0xf8, 0x84,
		0x61, 0xcb, 0xb2, 0x3e, 0x17, 0x34, 0x1c, 0x32, 0x1a, 0x86, 0xa6, 0x0c, 0x6e, 0x03, 0xb7, 0x81,
		0xdb, 0xc0, 0x6d, 0xe0, 0x36, 0xd5, 0xdc, 0x07, 0x34, 0x65, 0x8b, 0xbb, 0x45, 0xbd, 0x8f, 0x7a,
		0xdf, 0xea, 0x7b, 0x49, 0xbd, 0x0f, 0x9a, 0x32, 0x4a, 0xea, 0x25, 0x3a, 0xb0, 0x93, 0x4a, 0xa1,
		0x8f, 0xd4, 0x46, 0x80, 0x92, 0xe0, 0x87, 0x5b, 0x33, 0x70, 0x0b, 0xb6, 0x24, 0x7b, 0x74, 0xd7,
		0x7f, 0xbb, 0xec, 0xd1, 0xad, 0x5a, 0x1c, 0x7b, 0x74, 0x45, 0x25, 0xc3, 0xa9, 0x82, 0x53, 0x15,
		0xba, 0x2f, 0x87, 0x53, 0x05, 0xa7, 0xaa, 0x7e, 0x4e, 0xc1, 0xde, 0x39, 0x58, 0x3b, 0x09, 0x6f,
		0x9c, 0x85, 0x37, 0x4e, 0xc3, 0x0b, 0xe7, 0x61, 0x93, 0xd3, 0x80, 0x53, 0xa5, 0x6e, 0xdd, 0xe1,
		0x54, 0x29, 0xfe, 0x70, 0x6a, 0x2c, 0x4b, 0xcf, 0x41, 0xfa, 0xda, 0x13, 0x33, 0x58, 0x56, 0x51,
		0x38, 0x55, 0xe8, 0xaa, 0xb7, 0x00, 0xc1, 0x4e, 0x2a, 0x7b, 0x74, 0x37, 0x57, 0x5a, 0xf6, 0xe8,
		0x12, 0x64, 0x13, 0x64, 0x13, 0x64, 0x13, 0x64, 0x13, 0x64, 0x6b, 0xde, 0x77, 0x56, 0xb6, 0xd5,
		0x05, 0x3e, 0xc0, 0x0c, 0x8e, 0x60, 0x06, 0x03, 0xca, 0x00, 0x65, 0x80, 0x32, 0x40, 0x19, 0xa0,
		0x0c, 0x50, 0x06, 0x28, 0x33, 0x06, 0x65, 0x10, 0x54, 0x81, 0x0f, 0xc0, 0x07, 0xe0, 0x03, 0xf0,
		0x01, 0xf8, 0xa0, 0x1a, 0x82, 0x43, 0x50, 0xb5, 0xb8, 0x5b, 0x34, 0x4f, 0xd0, 0x3c, 0xb1, 0xfa,
		0x5e, 0xd2, 0x3c, 0x01, 0x41, 0x15, 0x25, 0xf5, 0x12, 0x1d, 0xd8, 0x49, 0x65, 0x8f, 0x6e, 0x00,
		0xa6, 0x0c, 0x9e, 0xe4, 0x23, 0x78, 0x92, 0x2c, 0xd4, 0xf5, 0x45, 0x6d, 0x59, 0xa8, 0x7b, 0xbf,
		0x9a, 0x06, 0xb9, 0x59, 0xf7, 0xdd, 0xe2, 0xe1, 0x43, 0xdd, 0xb0, 0xfb, 0x24, 0xa0, 0x5b, 0xd4,
		0x70, 0xb7, 0x79, 0xd6, 0x89, 0xc7, 0x93, 0xf7, 0x75, 0xd9, 0x97, 0x0d, 0xe2, 0x1b, 0x5f, 0xae,
		0x5d, 0x2a, 0x1e, 0xaa, 0x2a, 0xee, 0xad, 0xdd, 0xd9, 0x29, 0xae, 0x62, 0x3c, 0xb9, 0x00, 0xd1,
		0x6f, 0xd1, 0xd3, 0x59, 0x82, 0x29, 0xce, 0xbf, 0x0e, 0xdd, 0xe8, 0xe5, 0xc9, 0xfe, 0x79, 0xeb,
		0xb4, 0x7d, 0xde, 0x3a, 0x39, 0x7b, 0x5a, 0xf3, 0xed, 0xb6, 0xd3, 0x57, 0xbb, 0x4d, 0xbb, 0x6d,
		0xd7, 0x7a, 0xf7, 0xb5, 0x18, 0x74, 0xf0, 0xc6, 0x8d, 0xba, 0x59, 0x32, 0x54, 0xc5, 0x85, 0xc5,
		0x55, 0x6b, 0xa6, 0xdd, 0xfe, 0xb8, 0xe7, 0xa2, 0xfc, 0x3a, 0x19, 0x45, 0xdd, 0x41, 0x9a, 0x77,
		0x92, 0xd4, 0x65, 0xd1, 0xd5, 0x20, 0x8b, 0x5e, 0xfd, 0xd1, 0x8a, 0x47, 0xc9, 0xa7, 0xb4, 0xd3,
		0xef, 0xbb, 0x5e, 0x34, 0x39, 0xf0, 0x68, 0x34, 0x74, 0xdd, 0xe4, 0x2a, 0xe9, 0x7e, 0x9c, 0x7b,
		0xe6, 0x71, 0x36, 0xc3, 0x07, 0x4a, 0x7a, 0x62, 0x50, 0x02, 0x58, 0xbe, 0x8b, 0xbd, 0xa5, 0x17,
		0xa5, 0x58, 0xfa, 0xb3, 0xcc, 0xf7, 0x97, 0xae, 0x66, 0x35, 0xba, 0x02, 0xb6, 0x37, 0xfd, 0xf6,
		0x8b, 0xa0, 0x50, 0x94, 0x52, 0x0c, 0xe2, 0x67, 0xec, 0x21, 0x68, 0x64, 0xaa, 0x89, 0x2e, 0x64,
		0xee, 0x72, 0xf5, 0xba, 0x2f, 0xa0, 0x9d, 0x8d, 0xfe, 0xb3, 0xc9, 0x6b, 0x4a, 0x86, 0x37, 0x07,
		0xf1, 0xe7, 0x71, 0x3f, 0x4f, 0xba, 0x9d, 0x91, 0x5c, 0x3f, 0x46, 0xe1, 0xae, 0x57, 0x4a, 0x15,
		0xba, 0x7b, 0xb2, 0xc3, 0x89, 0xc4, 0xdb, 0x28, 0x34, 0xda, 0x25, 0xf4, 0xda, 0x22, 0xb4, 0xb0,
		0x8f, 0x7a, 0x9b, 0x83, 0x3a, 0xbc, 0x51, 0x6d, 0x5b, 0x08, 0x2b, 0x67, 0x21, 0x3d, 0xfc, 0xa7,
		0x44, 0x05, 0x94, 0x57, 0xe5, 0x55, 0x04, 0x44, 0x69, 0x6d, 0xd6, 0x99, 0xe8, 0xa6, 0xd6, 0x83,
		0xa6, 0xd9, 0x73, 0xa6, 0xdf, 0x63, 0x66, 0x99, 0xd8, 0x51, 0xed, 0x21, 0xf3, 0x23, 0xb5, 0xa3,
		0xd5, 0x23, 0x16, 0x76, 0xd9, 0x45, 0x6b, 0x02, 0x5b, 0xa3, 0xbb, 0xb0, 0x21, 0xca, 0x29, 0xa7,
		0xb9, 0xdc, 0x9a, 0x8f, 0xd8, 0xdc, 0x65, 0xc4, 0x66, 0xf8, 0x06, 0xdb, 0xdc, 0x70, 0x9b, 0x1b,
		0x70, 0x53, 0x43, 0xae, 0x63, 0xd0, 0x95, 0x0c, 0xbb, 0xba, 0x81, 0x2f, 0x04, 0x32, 0x62, 0x13,
		0xa6, 0x48, 0x54, 0x7f, 0xe7, 0x60, 0xed, 0x24, 0xbc, 0x71, 0x16, 0xde, 0x38, 0x0d, 0x2f, 0x9c,
		0x87, 0xae, 0x13, 0x51, 0x76, 0x26, 0xc5, 0x09, 0x33, 0x62, 0x93, 0x11, 0x9b, 0x9a, 0x3f, 0x1c,
		0x96, 0xc8, 0xd2, 0x73, 0xd0, 0x80, 0xef, 0x89, 0x19, 0x2c, 0xab, 0x28, 0x23, 0x36, 0xd1, 0x55,
		0x6f, 0x01, 0x82, 0x9d, 0x54, 0xb6, 0x99, 0x49, 0xca, 0x67, 0x51, 0xbb, 0xe8, 0xf1, 0x32, 0x9c,
		0xac, 0x48, 0x23, 0x31, 0x9c, 0x4c, 0x23, 0xaa, 0x20, 0x67, 0xa4, 0x78, 0xa7, 0xc8, 0x19, 0x91,
		0x33, 0x2a, 0x1c, 0x39, 0x39, 0x23, 0xe1, 0x13, 0x66, 0x38, 0x99, 0xfe, 0x70, 0x32, 0xd0, 0x30,
		0x68, 0xb8, 0xba, 0xe3, 0x65, 0x2a, 0x1c, 0xb8, 0x0d, 0xdc, 0x06, 0x6e, 0x03, 0xb7, 0x81, 0xdb,
		0x54, 0x73, 0x1f, 0x4c, 0x85, 0xb3, 0xb8, 0x5b, 0xd4, 0xfb, 0xa8, 0xf7, 0xad, 0xbe, 0x97, 0xd4,
		0xfb, 0x98, 0x0a, 0x87, 0x92, 0x7a, 0x89, 0x0e, 0xec, 0xa4, 0x52, 0xe8, 0x23, 0xb5, 0x11, 0xa0,
		0x24, 0xc6, 0xf1, 0xe9, 0xcd, 0x1a, 0x58, 0x41, 0x27, 0x2f, 0x4d, 0x3c, 0xfb, 0x65, 0x4e, 0xd6,
		0xa9, 0xcb, 0xd0, 0x0e, 0x95, 0xb9, 0x6d, 0x9d, 0xdc, 0xe9, 0xb3, 0xaa, 0x66, 0x62, 0x6b, 0x4e,
		0xaa, 0xda, 0x87, 0x54, 0x25, 0x20, 0x19, 0x52, 0x15, 0xa4, 0xaa, 0xd0, 0x9d, 0x39, 0xa4, 0x2a,
		0x48, 0x55, 0xf5, 0x73, 0x0a, 0xf6, 0xce, 0xc1, 0xda, 0x49, 0x78, 0xe3, 0x2c, 0xbc, 0x71, 0x1a,
		0x5e, 0x38, 0x0f, 0x9b, 0xa4, 0x06, 0xa4, 0x2a, 0x75, 0xeb, 0x0e, 0xa9, 0x4a, 0xf1, 0x87, 0x53,
		0x64, 0x59, 0x7a, 0x0e, 0xf2, 0xd7, 0x9e, 0x98, 0xc1, 0xb2, 0x8a, 0x42, 0xaa, 0x42, 0x57, 0xbd,
		0x05, 0x08, 0x76, 0x52, 0x2f, 0xe8, 0x66, 0xdc, 0x58, 0x69, 0x4b, 0xab, 0x36, 0xdc, 0x6d, 0xd7,
		0xb9, 0x9e, 0xeb, 0x99, 0x12, 0x7c, 0x56, 0x3c, 0x0e, 0x41, 0x36, 0x41, 0x36, 0x41, 0x36, 0x41,
		0x36, 0x41, 0x76, 0x6d, 0x82, 0x6c, 0x56, 0xe4, 0xd7, 0x05, 0x3e, 0x40, 0x0d, 0x8e, 0xa0, 0x06,
		0x03, 0xca, 0x00, 0x65, 0x80, 0x32, 0x40, 0x19, 0xa0, 0x0c, 0x50, 0x06, 0x28, 0x33, 0x06, 0x65,
		0x30, 0x54, 0x81, 0x0f, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01, 0xf8, 0xa0, 0x1a, 0x82, 0xc3, 0x50,
		0xb5, 0xb8, 0x5b, 0x34, 0x4f, 0xd0, 0x3c, 0xb1, 0xfa, 0x5e, 0xd2, 0x3c, 0x01, 0x43, 0x15, 0x25,
		0xf5, 0x12, 0x1d, 0xd8, 0x49, 0xbd, 0x80, 0x28, 0xe9, 0xbf, 0x29, 0x83, 0x28, 0xf9, 0x18, 0xa2,
		0xe4, 0x8c, 0x7f, 0xc7, 0x72, 0x73, 0x7b, 0xbd, 0xd5, 0xd6, 0xd7, 0xa0, 0xf4, 0xb4, 0xa1, 0xc2,
		0x80, 0xdd, 0x60, 0xb7, 0xf8, 0xb3, 0xf3, 0x61, 0xda, 0x1c, 0xde, 0x1c, 0xbc, 0x5d, 0x3c, 0x7e,
		0x7b, 0x96, 0x3e, 0x3a, 0x99, 0x3e, 0x7d, 0xa0, 0x4b, 0xf7, 0x05, 0x35, 0xbe, 0xdc, 0xa6, 0x96,
		0xb9, 0xae, 0x4b, 0x6e, 0x14, 0xba, 0xe6, 0x56, 0x77, 0xc9, 0x15, 0xe2, 0xd9, 0xb2, 0xbb, 0x96,
		0x20, 0xb6, 0xec, 0x56, 0xaa, 0x1d, 0x6c, 0xd9, 0x65, 0xcb, 0xee, 0x03, 0x27, 0xc6, 0x96, 0xdd,
		0x00, 0x0d, 0xb2, 0xba, 0x61, 0xb6, 0x30, 0xd0, 0x76, 0x86, 0xda, 0xca, 0x60, 0x9b, 0x1b, 0x6e,
		0x73, 0x03, 0x6e, 0x6a, 0xc8, 0xeb, 0x99, 0xb4, 0x60, 0x20, 0x04, 0x03, 0x21, 0xea, 0xe7, 0x14,
		0xec, 0x9d, 0x83, 0xb5, 0x93, 0xf0, 0xc6, 0x59, 0x78, 0xe3, 0x34, 0xbc, 0x70, 0x1e, 0xba, 0x4e,
		0x44, 0xd9, 0x99, 0x14, 0x27, 0xcc, 0x40, 0x08, 0x06, 0x42, 0x68, 0xfe, 0x70, 0x7a, 0x1a, 0x96,
		0x9e, 0x83, 0x72, 0xb1, 0x27, 0x66, 0xb0, 0xac, 0xa2, 0x0c, 0x84, 0x40, 0x57, 0xbd, 0x05, 0x08,
		0x76, 0x52, 0x19, 0xbe, 0x2d, 0x29, 0x9f, 0xbd, 0x62, 0xa2, 0xc7, 0x0b, 0x95, 0xb6, 0x48, 0x23,
		0x41, 0xa5, 0xd5, 0x88, 0x2a, 0xc8, 0x19, 0x29, 0xde, 0x29, 0x72, 0x46, 0xe4, 0x8c, 0x0a, 0x47,
		0x4e, 0xce, 0x48, 0xf8, 0x84, 0xa1, 0xd2, 0xb2, 0x65, 0x17, 0x34, 0x1c, 0x32, 0x1a, 0x86, 0xc3,
		0x0c, 0x6e, 0x03, 0xb7, 0x81, 0xdb, 0xc0, 0x6d, 0xe0, 0x36, 0xd5, 0xdc, 0x07, 0x1c, 0x66, 0x8b,
		0xbb, 0x45, 0xbd, 0x8f, 0x7a, 0xdf, 0xea, 0x7b, 0x49, 0xbd, 0x0f, 0x0e, 0x33, 0x4a, 0xea, 0x25,
		0x3a, 0xb0, 0x93, 0x4a, 0xa1, 0x8f, 0xd4, 0x46, 0x80, 0x92, 0x20, 0x8f, 0xfb, 0x43, 0xca, 0x2d,
		0x78, 0x93, 0xac, 0xdb, 0x5d, 0xff, 0x3d, 0xb3, 0x6e, 0xb7, 0x6a, 0x71, 0xac, 0xdb, 0x15, 0x95,
		0x0c, 0xbb, 0x0a, 0x76, 0x55, 0xe8, 0x5e, 0x1d, 0x76, 0x15, 0xec, 0xaa, 0xfa, 0x39, 0x05, 0x7b,
		0xe7, 0x60, 0xed, 0x24, 0xbc, 0x71, 0x16, 0xde, 0x38, 0x0d, 0x2f, 0x9c, 0x87, 0x4d, 0x76, 0x03,
		0x76, 0x95, 0xba, 0x75, 0x87, 0x5d, 0xa5, 0xf8, 0xc3, 0xa9, 0xb6, 0x2c, 0x3d, 0x07, 0x89, 0x6c,
		0x4f, 0xcc, 0x60, 0x59, 0x45, 0x61, 0x57, 0xa1, 0xab, 0xde, 0x02, 0x04, 0x3b, 0xa9, 0xac, 0xdb,
		0xdd, 0x5c, 0x69, 0x59, 0xb7, 0x4b, 0x90, 0x4d, 0x90, 0x4d, 0x90, 0x4d, 0x90, 0x4d, 0x90, 0xad,
		0x79, 0xdf, 0xd9, 0xec, 0x56, 0x17, 0xf8, 0x00, 0x47, 0x38, 0x82, 0x23, 0x0c, 0x28, 0x03, 0x94,
		0x01, 0xca, 0x00, 0x65, 0x80, 0x32, 0x40, 0x19, 0xa0, 0xcc, 0x18, 0x94, 0x41, 0x55, 0x05, 0x3e,
		0x00, 0x1f, 0x80, 0x0f, 0xc0, 0x07, 0xe0, 0x83, 0x6a, 0x08, 0x0e, 0x55, 0xd5, 0xe2, 0x6e, 0xd1,
		0x3c, 0x41, 0xf3, 0xc4, 0xea, 0x7b, 0x49, 0xf3, 0x04, 0x54, 0x55, 0x94, 0xd4, 0x4b, 0x74, 0x60,
		0x27, 0x95, 0x75, 0xbb, 0x01, 0x98, 0x32, 0x18, 0x93, 0x6b, 0x31, 0x26, 0xd9, 0xbb, 0xeb, 0x8b,
		0x02, 0xb3, 0x77, 0xf7, 0x31, 0x0a, 0x1b, 0xf6, 0x02, 0xde, 0x77, 0x8b, 0x5f, 0x11, 0xea, 0x22,
		0xde, 0x27, 0x01, 0x5d, 0xac, 0x86, 0xbb, 0xcd, 0xb3, 0x4e, 0x3c, 0x9e, 0xbc, 0xb8, 0xcb, 0xbe,
		0x6c, 0x84, 0xdf, 0xf8, 0x72, 0xed, 0x52, 0xf1, 0x38, 0x56, 0x71, 0xbd, 0xed, 0xce, 0x4e, 0x71,
		0x3b, 0xe3, 0xc9, 0x4d, 0x88, 0x7e, 0x8b, 0x9e, 0xce, 0xb2, 0x4f, 0x71, 0xfe, 0x75, 0xe8, 0x46,
		0x2f, 0x4f, 0x9e, 0x9d, 0xb7, 0x4e, 0xdb, 0xcd, 0xd6, 0xf9, 0x41, 0xfb, 0xed, 0x87, 0x93, 0xf7,
		0xcd, 0xd7, 0x47, 0x67, 0xef, 0x9f, 0xd6, 0x7c, 0x1d, 0xee, 0xf4, 0x25, 0x6f, 0xd3, 0x32, 0xdc,
		0x1f, 0xd4, 0x82, 0x5a, 0x4c, 0x46, 0x78, 0xe3, 0x46, 0xdd, 0x2c, 0x19, 0xaa, 0x02, 0xc9, 0xe2,
		0xfa, 0x35, 0xd3, 0x6e, 0x7f, 0xdc, 0x73, 0x51, 0x7e, 0x9d, 0x8c, 0xa2, 0xee, 0x20, 0xcd, 0x3b,
		0x49, 0xea, 0xb2, 0xe8, 0x6a, 0x90, 0x45, 0x85, 0x83, 0x8c, 0x9a, 0xad, 0x9b, 0xc3, 0x68, 0xfa,
		0x06, 0xa2, 0xd1, 0xd0, 0x75, 0x93, 0xab, 0xa4, 0xfb, 0x71, 0xee, 0xc2, 0xc7, 0xd9, 0x0c, 0x48,
		0x28, 0xe9, 0x8c, 0x41, 0xd5, 0x60, 0xf9, 0x5e, 0xf6, 0x96, 0x5e, 0x95, 0x62, 0xb5, 0xd0, 0xb2,
		0x44, 0x50, 0xba, 0xa6, 0x55, 0x69, 0x0b, 0x61, 0x80, 0xe9, 0xb7, 0x5f, 0x04, 0x85, 0xae, 0x94,
		0xc2, 0x15, 0xdf, 0xc3, 0x14, 0x41, 0x83, 0x53, 0x71, 0x20, 0x22, 0x73, 0xbd, 0xab, 0xbf, 0x0e,
		0x02, 0x0a, 0xdb, 0x58, 0x7a, 0x73, 0xe3, 0x74, 0x76, 0x1a, 0x52, 0x4a, 0x5b, 0xf8, 0xf0, 0x15,
		0x32, 0x85, 0xae, 0xa2, 0xec, 0x80, 0x23, 0xf1, 0x56, 0x0c, 0x8d, 0x96, 0x0b, 0xbd, 0xd6, 0x0a,
		0x2d, 0x30, 0xa4, 0xde, 0x2a, 0xa1, 0x8e, 0x77, 0x54, 0x5b, 0x1f, 0xc2, 0x4a, 0x6d, 0x48, 0x0f,
		0x10, 0x2a, 0xd1, 0x09, 0xe5, 0x55, 0x79, 0x15, 0x89, 0x51, 0x5a, 0x9b, 0x75, 0xa6, 0xc2, 0xa9,
		0xf5, 0xb1, 0x69, 0xf6, 0xad, 0xe9, 0xf7, 0xa9, 0x59, 0x66, 0x7d, 0x54, 0xfb, 0xd0, 0xfc, 0xc8,
		0xfb, 0x68, 0xf5, 0x99, 0x85, 0x5d, 0xb0, 0xd1, 0x9a, 0xe2, 0xd6, 0xe8, 0x2e, 0x6c, 0x88, 0x72,
		0x16, 0x6a, 0x2e, 0xb7, 0xe6, 0x63, 0x3a, 0x77, 0x19, 0xd3, 0x19, 0xbe, 0xc1, 0x36, 0x37, 0xdc,
		0xe6, 0x06, 0xdc, 0xd4, 0x90, 0xeb, 0x18, 0x74, 0x25, 0xc3, 0xae, 0x6e, 0xe0, 0x0b, 0x81, 0x8c,
		0xe9, 0x84, 0x6d, 0x12, 0xd5, 0xdf, 0x39, 0x58, 0x3b, 0x09, 0x6f, 0x9c, 0x85, 0x37, 0x4e, 0xc3,
		0x0b, 0xe7, 0xa1, 0xeb, 0x44, 0x94, 0x9d, 0x49, 0x71, 0xc2, 0x8c, 0xe9, 0x64, 0x4c, 0xa7, 0xe6,
		0x0f, 0x87, 0x69, 0xb2, 0xf4, 0x1c, 0x34, 0xf1, 0x7b, 0x62, 0x06, 0xcb, 0x2a, 0xca, 0x98, 0x4e,
		0x74, 0xd5, 0x5b, 0x80, 0x60, 0x27, 0x95, 0xdd, 0x68, 0x92, 0xf2, 0x59, 0xfb, 0x2e, 0x7a, 0xbc,
		0x0c, 0x38, 0x2b, 0xd2, 0x48, 0x0c, 0x38, 0xd3, 0x88, 0x2a, 0xc8, 0x19, 0x29, 0xde, 0x29, 0x72,
		0x46, 0xe4, 0x8c, 0x0a, 0x47, 0x4e, 0xce, 0x48, 0xf8, 0x84, 0x19, 0x70, 0xa6, 0x3f, 0xe0, 0x0c,
		0x34, 0x0c, 0x1a, 0xae, 0xee, 0x78, 0x99, 0x2c, 0x07, 0x6e, 0x03, 0xb7, 0x81, 0xdb, 0xc0, 0x6d,
		0xe0, 0x36, 0xd5, 0xdc, 0x07, 0x93, 0xe5, 0x2c, 0xee, 0x16, 0xf5, 0x3e, 0xea, 0x7d, 0xab, 0xef,
		0x25, 0xf5, 0x3e, 0x26, 0xcb, 0xa1, 0xa4, 0x5e, 0xa2, 0x03, 0x3b, 0xa9, 0x14, 0xfa, 0x48, 0x6d,
		0x04, 0x28, 0x89, 0x91, 0x7e, 0x16, 0xa3, 0x07, 0xe6, 0x64, 0xf2, 0xd2, 0x7c, 0xb4, 0x5f, 0xe6,
		0x54, 0x9d, 0xba, 0x4c, 0xf0, 0x50, 0x99, 0xf2, 0xd6, 0xc9, 0x9d, 0x3e, 0xa7, 0x6a, 0x26, 0xb6,
		0xe6, 0x94, 0xaa, 0x7d, 0x28, 0x55, 0x02, 0x92, 0xa1, 0x54, 0x41, 0xa9, 0x0a, 0xdd, 0x95, 0x43,
		0xa9, 0x82, 0x52, 0x55, 0x3f, 0xa7, 0x60, 0xef, 0x1c, 0xac, 0x9d, 0x84, 0x37, 0xce, 0xc2, 0x1b,
		0xa7, 0xe1, 0x85, 0xf3, 0xb0, 0x49, 0x69, 0x40, 0xa9, 0x52, 0xb7, 0xee, 0x50, 0xaa, 0x14, 0x7f,
		0x38, 0x25, 0x96, 0xa5, 0xe7, 0x20, 0x7b, 0xed, 0x89, 0x19, 0x2c, 0xab, 0x28, 0x94, 0x2a, 0x74,
		0xd5, 0x5b, 0x80, 0x60, 0x27, 0xf5, 0x82, 0x5e, 0xc6, 0x8d, 0x95, 0xb6, 0xb4, 0x98, 0xc3, 0xdd,
		0x76, 0x9d, 0xeb, 0xb9, 0x9e, 0x29, 0xbd, 0x67, 0xc5, 0xe3, 0x10, 0x64, 0x13, 0x64, 0x13, 0x64,
		0x13, 0x64, 0x13, 0x64, 0xd7, 0x26, 0xc8, 0x66, 0xc9, 0x7e, 0x5d, 0xe0, 0x03, 0xc4, 0xe0, 0x08,
		0x62, 0x30, 0xa0, 0x0c, 0x50, 0x06, 0x28, 0x03, 0x94, 0x01, 0xca, 0x00, 0x65, 0x80, 0x32, 0x63,
		0x50, 0x06, 0x3f, 0x15, 0xf8, 0x00, 0x7c, 0x00, 0x3e, 0x00, 0x1f, 0x80, 0x0f, 0xaa, 0x21, 0x38,
		0xfc, 0x54, 0x8b, 0xbb, 0x45, 0xf3, 0x04, 0xcd, 0x13, 0xab, 0xef, 0x25, 0xcd, 0x13, 0xf0, 0x53,
		0x51, 0x52, 0x2f, 0xd1, 0x81, 0x9d, 0xd4, 0x0b, 0x68, 0x92, 0xfe, 0x9b, 0x32, 0x68, 0x92, 0x0f,
		0xd3, 0x24, 0x67, 0xec, 0x3b, 0xf6, 0x9c, 0xdb, 0x6b, 0xad, 0xb6, 0xb6, 0x06, 0xa4, 0xa5, 0x0d,
		0x15, 0xf6, 0x6b, 0x05, 0xab, 0xc5, 0x3f, 0xcc, 0x1e, 0xbe, 0x3d, 0x4b, 0x1c, 0x9d, 0x4c, 0x9f,
		0x3d, 0xd0, 0xdd, 0xfb, 0x82, 0xda, 0x5e, 0x6e, 0x50, 0xcb, 0x5c, 0xd7, 0x25, 0x37, 0x0a, 0xfd,
		0x72, 0xab, 0xfb, 0xe3, 0x0a, 0xf1, 0x6c, 0xd7, 0x5d, 0x4b, 0x10, 0xdb, 0x75, 0x2b, 0xd5, 0x0e,
		0xb6, 0xeb, 0xb2, 0x5d, 0xf7, 0x81, 0x13, 0x63, 0xbb, 0x6e, 0x80, 0x06, 0x59, 0xdd, 0x30, 0x5b,
		0x18, 0x68, 0x3b, 0x43, 0x6d, 0x65, 0xb0, 0xcd, 0x0d, 0xb7, 0xb9, 0x01, 0x37, 0x35, 0xe4, 0xf5,
		0x4c, 0x57, 0x30, 0x0a, 0x82, 0x51, 0x10, 0xf5, 0x73, 0x0a, 0xf6, 0xce, 0xc1, 0xda, 0x49, 0x78,
		0xe3, 0x2c, 0xbc, 0x71, 0x1a, 0x5e, 0x38, 0x0f, 0x5d, 0x27, 0xa2, 0xec, 0x4c, 0x8a, 0x13, 0x66,
		0x14, 0x04, 0xa3, 0x20, 0x34, 0x7f, 0x38, 0xdd, 0x0c, 0x4b, 0xcf, 0x41, 0xa1, 0xd8, 0x13, 0x33,
		0x58, 0x56, 0x51, 0x46, 0x41, 0xa0, 0xab, 0xde, 0x02, 0x04, 0x3b, 0xa9, 0x0c, 0xdd, 0x96, 0x94,
		0xcf, 0x3e, 0x31, 0xd1, 0xe3, 0x85, 0x44, 0x5b, 0xa4, 0x91, 0x20, 0xd1, 0x6a, 0x44, 0x15, 0xe4,
		0x8c, 0x14, 0xef, 0x14, 0x39, 0x23, 0x72, 0x46, 0x85, 0x23, 0x27, 0x67, 0x24, 0x7c, 0xc2, 0x90,
		0x68, 0xd9, 0xae, 0x0b, 0x1a, 0x0e, 0x19, 0x0d, 0xc3, 0x5e, 0x06, 0xb7, 0x81, 0xdb, 0xc0, 0x6d,
		0xe0, 0x36, 0x70, 0x9b, 0x6a, 0xee, 0x03, 0xf6, 0xb2, 0xc5, 0xdd, 0xa2, 0xde, 0x47, 0xbd, 0x6f,
		0xf5, 0xbd, 0xa4, 0xde, 0x07, 0x7b, 0x19, 0x25, 0xf5, 0x12, 0x1d, 0xd8, 0x49, 0xa5, 0xd0, 0x47,
		0x6a, 0x23, 0x40, 0x49, 0xd0, 0xc6, 0x7d, 0x21, 0xe4, 0x16, 0xac, 0x49, 0xd6, 0xec, 0xae, 0xff,
		0x96, 0x59, 0xb3, 0x5b, 0xb5, 0x38, 0xd6, 0xec, 0x8a, 0x4a, 0x86, 0x5b, 0x05, 0xb7, 0x2a, 0x74,
		0x9f, 0x0e, 0xb7, 0x0a, 0x6e, 0x55, 0xfd, 0x9c, 0x82, 0xbd, 0x73, 0xb0, 0x76, 0x12, 0xde, 0x38,
		0x0b, 0x6f, 0x9c, 0x86, 0x17, 0xce, 0xc3, 0x26, 0xb7, 0x01, 0xb7, 0x4a, 0xdd, 0xba, 0xc3, 0xad,
		0x52, 0xfc, 0xe1, 0xd4, 0x5a, 0x96, 0x9e, 0x83, 0x34, 0xb6, 0x27, 0x66, 0xb0, 0xac, 0xa2, 0x70,
		0xab, 0xd0, 0x55, 0x6f, 0x01, 0x82, 0x9d, 0x54, 0xd6, 0xec, 0x6e, 0xae, 0xb4, 0xac, 0xd9, 0x25,
		0xc8, 0x26, 0xc8, 0x26, 0xc8, 0x26, 0xc8, 0x26, 0xc8, 0xd6, 0xbc, 0xef, 0x6c, 0x74, 0xab, 0x0b,
		0x7c, 0x80, 0x21, 0x1c, 0xc1, 0x10, 0x06, 0x94, 0x01, 0xca, 0x00, 0x65, 0x80, 0x32, 0x40, 0x19,
		0xa0, 0x0c, 0x50, 0x66, 0x0c, 0xca, 0x20, 0xaa, 0x02, 0x1f, 0x80, 0x0f, 0xc0, 0x07, 0xe0, 0x03,
		0xf0, 0x41, 0x35, 0x04, 0x87, 0xa8, 0x6a, 0x71, 0xb7, 0x68, 0x9e, 0xa0, 0x79, 0x62, 0xf5, 0xbd,
		0xa4, 0x79, 0x02, 0xa2, 0x2a, 0x4a, 0xea, 0x25, 0x3a, 0xb0, 0x93, 0xca, 0x9a, 0xdd, 0x00, 0x4c,
		0x19, 0x7c, 0xc9, 0x35, 0xf8, 0x92, 0xec, 0xdb, 0xf5, 0x45, 0x7d, 0xd9, 0xb7, 0xfb, 0xb0, 0xba,
		0x86, 0xbc, 0x78, 0xf7, 0xdd, 0xe2, 0x37, 0x84, 0xba, 0x80, 0xf7, 0x49, 0x40, 0x97, 0xaa, 0xe1,
		0x6e, 0xf3, 0xac, 0x13, 0x8f, 0x27, 0xaf, 0xed, 0xb2, 0x2f, 0x1b, 0xdb, 0x37, 0xbe, 0x5c, 0xbb,
		0x54, 0x3c, 0x82, 0x55, 0x5c, 0x6b, 0xbb, 0xb3, 0x53, 0xdc, 0xcc, 0x78, 0x72, 0x0f, 0xa2, 0xdf,
		0xa2, 0xa7, 0xb3, 0xbc, 0x53, 0x9c, 0x7f, 0x1d, 0xba, 0xd1, 0xcb, 0x93, 0x67, 0xe7, 0xad, 0xd3,
		0x76, 0xb3, 0x75, 0x7e, 0xd0, 0xfe, 0x70, 0xda, 0x7c, 0x7d, 0x74, 0xf6, 0xfe, 0x69, 0xcd, 0x97,
		0xe0, 0x4e, 0x5f, 0xf1, 0x36, 0xad, 0xc0, 0xfd, 0x21, 0x1d, 0xa8, 0xc5, 0x3c, 0x84, 0x37, 0x6e,
		0xd4, 0xcd, 0x92, 0xa1, 0x2a, 0x7c, 0x2c, 0xae, 0x5e, 0x33, 0xed, 0xf6, 0xc7, 0x3d, 0x17, 0xe5,
		0xd7, 0xc9, 0x28, 0xea, 0x0e, 0xd2, 0xbc, 0x93, 0xa4, 0x2e, 0x8b, 0xae, 0x06, 0x59, 0xd4, 0x6c,
		0xdd, 0x1c, 0x44, 0x73, 0xbf, 0x12, 0x4d, 0x4f, 0x3f, 0x1a, 0x0d, 0x5d, 0x37, 0xb9, 0x4a, 0xba,
		0x1f, 0xe7, 0x8e, 0x7b, 0x9c, 0xcd, 0xe0, 0x83, 0x92, 0xbe, 0x18, 0x54, 0x0a, 0x96, 0xef, 0x64,
		0x6f, 0xe9, 0x45, 0x29, 0x56, 0x08, 0x2d, 0xcb, 0x02, 0xa5, 0x2b, 0x5a, 0x8d, 0xae, 0x00, 0xfd,
		0x4d, 0xbf, 0xfd, 0x22, 0x28, 0x54, 0xa5, 0x14, 0xa2, 0xf8, 0x1d, 0x9a, 0x08, 0x1a, 0x9b, 0x4a,
		0x83, 0x0f, 0x99, 0xab, 0x5d, 0xfd, 0x55, 0x10, 0x50, 0xd6, 0x46, 0xf1, 0xd6, 0x0e, 0xe3, 0xcf,
		0xe3, 0x7e, 0x3e, 0x3b, 0x0f, 0x29, 0x95, 0x2d, 0xbc, 0xf7, 0x4a, 0xa9, 0x42, 0x57, 0x51, 0x76,
		0xa4, 0x91, 0x78, 0xf3, 0x85, 0x46, 0x93, 0x85, 0x5e, 0x33, 0x85, 0x16, 0x14, 0x52, 0x6f, 0x8e,
		0x50, 0x47, 0x3b, 0xaa, 0xcd, 0x0e, 0x61, 0xa5, 0x34, 0xa4, 0x47, 0x06, 0x95, 0x08, 0x84, 0xf2,
		0xaa, 0xbc, 0x8a, 0xb6, 0x28, 0xad, 0xcd, 0x3a, 0x73, 0xe0, 0xd4, 0x3a, 0xd7, 0x34, 0x3b, 0xd5,
		0xf4, 0x3b, 0xd3, 0x2c, 0xf3, 0x3d, 0xaa, 0x9d, 0x67, 0x7e, 0x64, 0x7c, 0xb4, 0x3a, 0xcb, 0xc2,
		0x2e, 0xd2, 0x68, 0xcd, 0x6d, 0x6b, 0x74, 0x17, 0x36, 0x44, 0x39, 0x03, 0x35, 0x97, 0x5b, 0xf3,
		0xc1, 0x9c, 0xbb, 0x0c, 0xe6, 0x0c, 0xdf, 0x60, 0x9b, 0x1b, 0x6e, 0x73, 0x03, 0x6e, 0x6a, 0xc8,
		0x75, 0x0c, 0xba, 0x92, 0x61, 0x57, 0x37, 0xf0, 0x85, 0x40, 0x06, 0x73, 0xc2, 0x2f, 0x89, 0xea,
		0xef, 0x1c, 0xac, 0x9d, 0x84, 0x37, 0xce, 0xc2, 0x1b, 0xa7, 0xe1, 0x85, 0xf3, 0xd0, 0x75, 0x22,
		0xca, 0xce, 0xa4, 0x38, 0x61, 0x06, 0x73, 0x32, 0x98, 0x53, 0xf3, 0x87, 0xc3, 0x2d, 0x59, 0x7a,
		0x0e, 0xda, 0xf6, 0x3d, 0x31, 0x83, 0x65, 0x15, 0x65, 0x30, 0x27, 0xba, 0xea, 0x2d, 0x40, 0xb0,
		0x93, 0xca, 0x2e, 0x34, 0x49, 0xf9, 0xac, 0x79, 0x17, 0x3d, 0x5e, 0x46, 0x9a, 0x15, 0x69, 0x24,
		0x46, 0x9a, 0x69, 0x44, 0x15, 0xe4, 0x8c, 0x14, 0xef, 0x14, 0x39, 0x23, 0x72, 0x46, 0x85, 0x23,
		0x27, 0x67, 0x24, 0x7c, 0xc2, 0x8c, 0x34, 0xd3, 0x1f, 0x69, 0x06, 0x1a, 0x06, 0x0d, 0x57, 0x77,
		0xbc, 0xcc, 0x92, 0x03, 0xb7, 0x81, 0xdb, 0xc0, 0x6d, 0xe0, 0x36, 0x70, 0x9b, 0x6a, 0xee, 0x83,
		0x59, 0x72, 0x16, 0x77, 0x8b, 0x7a, 0x1f, 0xf5, 0xbe, 0xd5, 0xf7, 0x92, 0x7a, 0x1f, 0xb3, 0xe4,
		0x50, 0x52, 0x2f, 0xd1, 0x81, 0x9d, 0x54, 0x0a, 0x7d, 0xa4, 0x36, 0x02, 0x94, 0xc4, 0x10, 0x3f,
		0xfd, 0xd1, 0x03, 0x4b, 0x74, 0xf2, 0xd2, 0x5c, 0xb4, 0x5f, 0xe6, 0x64, 0x9d, 0xba, 0xcc, 0xf0,
		0x50, 0x99, 0xee, 0xd6, 0xc9, 0x9d, 0x3e, 0xab, 0x6a, 0x26, 0xb6, 0xe6, 0xa4, 0xaa, 0x7d, 0x48,
		0x55, 0x02, 0x92, 0x21, 0x55, 0x41, 0xaa, 0x0a, 0xdd, 0x99, 0x43, 0xaa, 0x82, 0x54, 0x55, 0x3f,
		0xa7, 0x60, 0xef, 0x1c, 0xac, 0x9d, 0x84, 0x37, 0xce, 0xc2, 0x1b, 0xa7, 0xe1, 0x85, 0xf3, 0xb0,
		0x49, 0x6a, 0x40, 0xaa, 0x52, 0xb7, 0xee, 0x90, 0xaa, 0x14, 0x7f, 0x38, 0x45, 0x96, 0xa5, 0xe7,
		0x20, 0x7f, 0xed, 0x89, 0x19, 0x2c, 0xab, 0x28, 0xa4, 0x2a, 0x74, 0xd5, 0x5b, 0x80, 0x60, 0x27,
		0xf5, 0x82, 0x6e, 0xc6, 0x8d, 0x95, 0xb6, 0xb4, 0x90, 0xc3, 0xdd, 0x76, 0x9d, 0xeb, 0xb9, 0x9e,
		0x29, 0xc1, 0x67, 0xc5, 0xe3, 0x10, 0x64, 0x13, 0x64, 0x13, 0x64, 0x13, 0x64, 0x13, 0x64, 0xd7,
		0x26, 0xc8, 0x66, 0xb1, 0x7e, 0x5d, 0xe0, 0x03, 0xd4, 0xe0, 0x08, 0x6a, 0x30, 0xa0, 0x0c, 0x50,
		0x06, 0x28, 0x03, 0x94, 0x01, 0xca, 0x00, 0x65, 0x80, 0x32, 0x63, 0x50, 0x06, 0x43, 0x15, 0xf8,
		0x00, 0x7c, 0x00, 0x3e, 0x00, 0x1f, 0x80, 0x0f, 0xaa, 0x21, 0x38, 0x0c, 0x55, 0x8b, 0xbb, 0x45,
		0xf3, 0x04, 0xcd, 0x13, 0xab, 0xef, 0x25, 0xcd, 0x13, 0x30, 0x54, 0x51, 0x52, 0x2f, 0xd1, 0x81,
		0x9d, 0xd4, 0x0b, 0x88, 0x92, 0xfe, 0x9b, 0x32, 0x88, 0x92, 0x8f, 0x21, 0x4a, 0xce, 0xf8, 0x77,
		0xec, 0x3a, 0xb7, 0xd7, 0x5b, 0x6d, 0x7d, 0x0d, 0x4a, 0x4f, 0x1b, 0x2a, 0x0c, 0xd8, 0xcd, 0x57,
		0x8c, 0x1f, 0xbe, 0x5d, 0x3c, 0x7e, 0x7b, 0x96, 0x3e, 0x3a, 0x99, 0x3e, 0x7d, 0xa0, 0x3b, 0xf8,
		0x05, 0x35, 0xbe, 0xdc, 0xa6, 0x96, 0xb9, 0xae, 0x4b, 0x6e, 0x14, 0xba, 0xe6, 0x56, 0x77, 0xc9,
		0x15, 0xe2, 0xd9, 0xb2, 0xbb, 0x96, 0x20, 0xb6, 0xec, 0x56, 0xaa, 0x1d, 0x6c, 0xd9, 0x65, 0xcb,
		0xee, 0x03, 0x27, 0xc6, 0x96, 0xdd, 0x00, 0x0d, 0xb2, 0xba, 0x61, 0xb6, 0x30, 0xd0, 0x76, 0x86,
		0xda, 0xca, 0x60, 0x9b, 0x1b, 0x6e, 0x73, 0x03, 0x6e, 0x6a, 0xc8, 0xeb, 0x99, 0xb4, 0x60, 0x20,
		0x04, 0x03, 0x21, 0xea, 0xe7, 0x14, 0xec, 0x9d, 0x83, 0xb5, 0x93, 0xf0, 0xc6, 0x59, 0x78, 0xe3,
		0x34, 0xbc, 0x70, 0x1e, 0xba, 0x4e, 0x44, 0xd9, 0x99, 0x14, 0x27, 0xcc, 0x40, 0x08, 0x06, 0x42,
		0x68, 0xfe, 0x70, 0x7a, 0x1a, 0x96, 0x9e, 0x83, 0x72, 0xb1, 0x27, 0x66, 0xb0, 0xac, 0xa2, 0x0c,
		0x84, 0x40, 0x57, 0xbd, 0x05, 0x08, 0x76, 0x52, 0x19, 0xbe, 0x2d, 0x29, 0x9f, 0xbd, 0x62, 0xa2,
		0xc7, 0x0b, 0x95, 0xb6, 0x48, 0x23, 0x41, 0xa5, 0xd5, 0x88, 0x2a, 0xc8, 0x19, 0x29, 0xde, 0x29,
		0x72, 0x46, 0xe4, 0x8c, 0x0a, 0x47, 0x4e, 0xce, 0x48, 0xf8, 0x84, 0xa1, 0xd2, 0xb2, 0x65, 0x17,
		0x34, 0x1c, 0x32, 0x1a, 0x86, 0xc3, 0x0c, 0x6e, 0x03, 0xb7, 0x81, 0xdb, 0xc0, 0x6d, 0xe0, 0x36,
		0xd5, 0xdc, 0x07, 0x1c, 0x66, 0x8b, 0xbb, 0x45, 0xbd, 0x8f, 0x7a, 0xdf, 0xea, 0x7b, 0x49, 0xbd,
		0x0f, 0x0e, 0x33, 0x4a, 0xea, 0x25, 0x3a, 0xb0, 0x93, 0x4a, 0xa1, 0x8f, 0xd4, 0x46, 0x80, 0x92,
		0x20, 0x8f, 0xfb, 0x43, 0xca, 0x2d, 0x78, 0x93, 0xac, 0xdb, 0x5d, 0xff, 0x3d, 0xb3, 0x6e, 0xb7,
		0x6a, 0x71, 0xac, 0xdb, 0x15, 0x95, 0x0c, 0xbb, 0x0a, 0x76, 0x55, 0xe8, 0x5e, 0x1d, 0x76, 0x15,
		0xec, 0xaa, 0xfa, 0x39, 0x05, 0x7b, 0xe7, 0x60, 0xed, 0x24, 0xbc, 0x71, 0x16, 0xde, 0x38, 0x0d,
		0x2f, 0x9c, 0x87, 0x4d, 0x76, 0x03, 0x76, 0x95, 0xba, 0x75, 0x87, 0x5d, 0xa5, 0xf8, 0xc3, 0xa9,
		0xb6, 0x2c, 0x3d, 0x07, 0x89, 0x6c, 0x4f, 0xcc, 0x60, 0x59, 0x45, 0x61, 0x57, 0xa1, 0xab, 0xde,
		0x02, 0x04, 0x3b, 0xa9, 0xac, 0xdb, 0xdd, 0x5c, 0x69, 0x59, 0xb7, 0x4b, 0x90, 0x4d, 0x90, 0x4d,
		0x90, 0x4d, 0x90, 0x4d, 0x90, 0xad, 0x79, 0xdf, 0xd9, 0xec, 0x56, 0x17, 0xf8, 0x00, 0x47, 0x38,
		0x82, 0x23, 0x0c, 0x28, 0x03, 0x94, 0x01, 0xca, 0x00, 0x65, 0x80, 0x32, 0x40, 0x19, 0xa0, 0xcc,
		0x18, 0x94, 0x41, 0x55, 0x05, 0x3e, 0x00, 0x1f, 0x80, 0x0f, 0xc0, 0x07, 0xe0, 0x83, 0x6a, 0x08,
		0x0e, 0x55, 0xd5, 0xe2, 0x6e, 0xd1, 0x3c, 0x41, 0xf3, 0xc4, 0xea, 0x7b, 0x49, 0xf3, 0x04, 0x54,
		0x55, 0x94, 0xd4, 0x4b, 0x74, 0x60, 0x27, 0x95, 0x75, 0xbb, 0x01, 0x98, 0x32, 0x18, 0x93, 0x6b,
		0x31, 0x26, 0xd9, 0xbb, 0xeb, 0x8b, 0x02, 0xb3, 0x77, 0xf7, 0x31, 0x0a, 0x1b, 0xf6, 0x02, 0xde,
		0x77, 0x8b, 0x5f, 0x11, 0xea, 0x22, 0xde, 0x27, 0x01, 0x5d, 0xac, 0x86, 0xbb, 0xcd, 0xb3, 0x4e,
		0x3c, 0x9e, 0xbc, 0xb8, 0xcb, 0xbe, 0x6c, 0x84, 0xdf, 0xf8, 0x72, 0xed, 0x52, 0xf1, 0x38, 0x56,
		0x71, 0xbd, 0xed, 0xce, 0x4e, 0x71, 0x3b, 0xe3, 0xc9, 0x4d, 0x88, 0x7e, 0x8b, 0x9e, 0xce, 0xb2,
		0x4f, 0x71, 0xfe, 0x75, 0xe8, 0x46, 0x2f, 0x4f, 0x9e, 0x9d, 0xb7, 0x4e, 0xdb, 0xcd, 0xd6, 0xf9,
		0x61, 0xfb, 0xed, 0x87, 0x93, 0xf7, 0xcd, 0xd7, 0x47, 0x67, 0xef, 0x9f, 0xd6, 0x7c, 0x1d, 0xee,
		0xf4, 0x25, 0x6f, 0xd3, 0x32, 0xdc, 0x1f, 0xd4, 0x82, 0x5a, 0x4c, 0x46, 0x78, 0xe3, 0x46, 0xdd,
		0x2c, 0x19, 0xaa, 0x02, 0xc9, 0xe2, 0xfa, 0x35, 0xd3, 0x6e, 0x7f, 0xdc, 0x73, 0x51, 0x7e, 0x9d,
		0x8c, 0xa2, 0xee, 0x20, 0xcd, 0x3b, 0x49, 0xea, 0xb2, 0xe8, 0x6a, 0x90, 0x45, 0x85, 0x83, 0x8c,
		0x9a, 0xad, 0x9b, 0xc3, 0x68, 0xfa, 0x06, 0xa2, 0xd1, 0xd0, 0x75, 0x93, 0xab, 0xa4, 0xfb, 0x71,
		0xee, 0xc2, 0xc7, 0xd9, 0x0c, 0x48, 0x28, 0xe9, 0x8c, 0x41, 0xd5, 0x60, 0xf9, 0x5e, 0xf6, 0x96,
		0x5e, 0x95, 0x62, 0xb5, 0xd0, 0xb2, 0x44, 0x50, 0xba, 0xa6, 0x55, 0x69, 0x0b, 0x61, 0x80, 0xe9,
		0xb7, 0x5f, 0x04, 0x85, 0xae, 0x94, 0xc2, 0x15, 0xdf, 0xc3, 0x14, 0x41, 0x83, 0x53, 0x71, 0x20,
		0x22, 0x73, 0xbd, 0xab, 0xbf, 0x0e, 0x02, 0x0a, 0xdb, 0x58, 0x7a, 0x73, 0xe3, 0x74, 0x76, 0x1a,
		0x52, 0x4a, 0x5b, 0xf8, 0xf0, 0x15, 0x32, 0x85, 0xae, 0xa2, 0xec, 0x80, 0x23, 0xf1, 0x56, 0x0c,
		0x8d, 0x96, 0x0b, 0xbd, 0xd6, 0x0a, 0x2d, 0x30, 0xa4, 0xde, 0x2a, 0xa1, 0x8e, 0x77, 0x54, 0x5b,
		0x1f, 0xc2, 0x4a, 0x6d, 0x48, 0x0f, 0x10, 0x2a, 0xd1, 0x09, 0xe5, 0x55, 0x79, 0x15, 0x89, 0x51,
		0x5a, 0x9b, 0x75, 0xa6, 0xc2, 0xa9, 0xf5, 0xb1, 0x69, 0xf6, 0xad, 0xe9, 0xf7, 0xa9, 0x59, 0x66,
		0x7d, 0x54, 0xfb, 0xd0, 0xfc, 0xc8, 0xfb, 0x68, 0xf5, 0x99, 0x85, 0x5d, 0xb0, 0xd1, 0x9a, 0xe2,
		0xd6, 0xe8, 0x2e, 0x6c, 0x88, 0x72, 0x16, 0x6a, 0x2e, 0xb7, 0xe6, 0x63, 0x3a, 0x77, 0x19, 0xd3,
		0x19, 0xbe, 0xc1, 0x36, 0x37, 0xdc, 0xe6, 0x06, 0xdc, 0xd4, 0x90, 0xeb, 0x18, 0x74, 0x25, 0xc3,
		0xae, 0x6e, 0xe0, 0x0b, 0x81, 0x8c, 0xe9, 0x84, 0x6d, 0x12, 0xd5, 0xdf, 0x39, 0x58, 0x3b, 0x09,
		0x6f, 0x9c, 0x85, 0x37, 0x4e, 0xc3, 0x0b, 0xe7, 0xa1, 0xeb, 0x44, 0x94, 0x9d, 0x49, 0x71, 0xc2,
		0x8c, 0xe9, 0x64, 0x4c, 0xa7, 0xe6, 0x0f, 0x87, 0x69, 0xb2, 0xf4, 0x1c, 0x34, 0xf1, 0x7b, 0x62,
		0x06, 0xcb, 0x2a, 0xca, 0x98, 0x4e, 0x74, 0xd5, 0x5b, 0x80, 0x60, 0x27, 0x95, 0xdd, 0x68, 0x92,
		0xf2, 0x59, 0xfb, 0x2e, 0x7a, 0xbc, 0x0c, 0x38, 0x2b, 0xd2, 0x48, 0x0c, 0x38, 0xd3, 0x88, 0x2a,
		0xc8, 0x19, 0x29, 0xde, 0x29, 0x72, 0x46, 0xe4, 0x8c, 0x0a, 0x47, 0x4e, 0xce, 0x48, 0xf8, 0x84,
		0x19, 0x70, 0xa6, 0x3f, 0xe0, 0x0c, 0x34, 0x0c, 0x1a, 0xae, 0xee, 0x78, 0x99, 0x2c, 0x07, 0x6e,
		0x03, 0xb7, 0x81, 0xdb, 0xc0, 0x6d, 0xe0, 0x36, 0xd5, 0xdc, 0x07, 0x93, 0xe5, 0x2c, 0xee, 0x16,
		0xf5, 0x3e, 0xea, 0x7d, 0xab, 0xef, 0x25, 0xf5, 0x3e, 0x26, 0xcb, 0xa1, 0xa4, 0x5e, 0xa2, 0x03,
		0x3b, 0xa9, 0x14, 0xfa, 0x48, 0x6d, 0x04, 0x28, 0x89, 0x91, 0x7e, 0x16, 0xa3, 0x07, 0xe6, 0x64,
		0xf2, 0xd2, 0x7c, 0xb4, 0x5f, 0xe6, 0x54, 0x9d, 0xba, 0x4c, 0xf0, 0x50, 0x99, 0xf2, 0xd6, 0xc9,
		0x9d, 0x3e, 0xa7, 0x6a, 0x26, 0xb6, 0xe6, 0x94, 0xaa, 0x7d, 0x28, 0x55, 0x02, 0x92, 0xa1, 0x54,
		0x41, 0xa9, 0x0a, 0xdd, 0x95, 0x43, 0xa9, 0x82, 0x52, 0x55, 0x3f, 0xa7, 0x60, 0xef, 0x1c, 0xac,
		0x9d, 0x84, 0x37, 0xce, 0xc2, 0x1b, 0xa7, 0xe1, 0x85, 0xf3, 0xb0, 0x49, 0x69, 0x40, 0xa9, 0x52,
		0xb7, 0xee, 0x50, 0xaa, 0x14, 0x7f, 0x38, 0x25, 0x96, 0xa5, 0xe7, 0x20, 0x7b, 0xed, 0x89, 0x19,
		0x2c, 0xab, 0x28, 0x94, 0x2a, 0x74, 0xd5, 0x5b, 0x80, 0x60, 0x27, 0xf5, 0x82, 0x5e, 0xc6, 0x8d,
		0x95, 0xb6, 0xb4, 0x98, 0xc3, 0xdd, 0x76, 0x9d, 0xeb, 0xb9, 0x9e, 0x29, 0xbd, 0x67, 0xc5, 0xe3,
		0x10, 0x64, 0x13, 0x64, 0x13, 0x64, 0x13, 0x64, 0x13, 0x64, 0xd7, 0x26, 0xc8, 0x66, 0xc9, 0x7e,
		0x5d, 0xe0, 0x03, 0xc4, 0xe0, 0x08, 0x62, 0x30, 0xa0, 0x0c, 0x50, 0x06, 0x28, 0x03, 0x94, 0x01,
		0xca, 0x00, 0x65, 0x80, 0x32, 0x63, 0x50, 0x06, 0x3f, 0x15, 0xf8, 0x00, 0x7c, 0x00, 0x3e, 0x00,
		0x1f, 0x80, 0x0f, 0xaa, 0x21, 0x38, 0xfc, 0x54, 0x8b, 0xbb, 0x45, 0xf3, 0x04, 0xcd, 0x13, 0xab,
		0xef, 0x25, 0xcd, 0x13, 0xf0, 0x53, 0x51, 0x52, 0x2f, 0xd1, 0x81, 0x9d, 0xd4, 0x0b, 0x68, 0x92,
		0xfe, 0x9b, 0x32, 0x68, 0x92, 0x0f, 0xd3, 0x24, 0x67, 0xec, 0x3b, 0xf6, 0x9c, 0xdb, 0x6b, 0xad,
		0xb6, 0xb6, 0x06, 0xa4, 0xa5, 0x0d, 0x15, 0xf6, 0x6b, 0x05, 0xab, 0xc5, 0x3f, 0xcc, 0x1e, 0xbe,
		0x3d, 0x4b, 0x1c, 0x9d, 0x4c, 0x9f, 0x3d, 0xd0, 0xdd, 0xfb, 0x82, 0xda, 0x5e, 0x6e, 0x50, 0xcb,
		0x5c, 0xd7, 0x25, 0x37, 0x0a, 0xfd, 0x72, 0xab, 0xfb, 0xe3, 0x0a, 0xf1, 0x6c, 0xd7, 0x5d, 0x4b,
		0x10, 0xdb, 0x75, 0x2b, 0xd5, 0x0e, 0xb6, 0xeb, 0xb2, 0x5d, 0xf7, 0x81, 0x13, 0x63, 0xbb, 0x6e,
		0x80, 0x06, 0x59, 0xdd, 0x30, 0x5b, 0x18, 0x68, 0x3b, 0x43, 0x6d, 0x65, 0xb0, 0xcd, 0x0d, 0xb7,
		0xb9, 0x01, 0x37, 0x35, 0xe4, 0xf5, 0x4c, 0x57, 0x30, 0x0a, 0x82, 0x51, 0x10, 0xf5, 0x73, 0x0a,
		0xf6, 0xce, 0xc1, 0xda, 0x49, 0x78, 0xe3, 0x2c, 0xbc, 0x71, 0x1a, 0x5e, 0x38, 0x0f, 0x5d, 0x27,
		0xa2, 0xec, 0x4c, 0x8a, 0x13, 0x66, 0x14, 0x04, 0xa3, 0x20, 0x34, 0x7f, 0x38, 0xdd, 0x0c, 0x4b,
		0xcf, 0x41, 0xa1, 0xd8, 0x13, 0x33, 0x58, 0x56, 0x51, 0x46, 0x41, 0xa0, 0xab, 0xde, 0x02, 0x04,
		0x3b, 0xa9, 0x0c, 0xdd, 0x96, 0x94, 0xcf, 0x3e, 0x31, 0xd1, 0xe3, 0x85, 0x44, 0x5b, 0xa4, 0x91,
		0x20, 0xd1, 0x6a, 0x44, 0x15, 0xe4, 0x8c, 0x14, 0xef, 0x14, 0x39, 0x23, 0x72, 0x46, 0x85, 0x23,
		0x27, 0x67, 0x24, 0x7c, 0xc2, 0x90, 0x68, 0xd9, 0xae, 0x0b, 0x1a, 0x0e, 0x19, 0x0d, 0xc3, 0x5e,
		0x06, 0xb7, 0x81, 0xdb, 0xc0, 0x6d, 0xe0, 0x36, 0x70, 0x9b, 0x6a, 0xee, 0x03, 0xf6, 0xb2, 0xc5,
		0xdd, 0xa2, 0xde, 0x47, 0xbd, 0x6f, 0xf5, 0xbd, 0xa4, 0xde, 0x07, 0x7b, 0x19, 0x25, 0xf5, 0x12,
		0x1d, 0xd8, 0x49, 0xa5, 0xd0, 0x47, 0x6a, 0x23, 0x40, 0x49, 0xd0, 0xc6, 0x7d, 0x21, 0xe4, 0x16,
		0xac, 0x49, 0xd6, 0xec, 0xae, 0xff, 0x96, 0x59, 0xb3, 0x5b, 0xb5, 0x38, 0xd6, 0xec, 0x8a, 0x4a,
		0x86, 0x5b, 0x05, 0xb7, 0x2a, 0x74, 0x9f, 0x0e, 0xb7, 0x0a, 0x6e, 0x55, 0xfd, 0x9c, 0x82, 0xbd,
		0x73, 0xb0, 0x76, 0x12, 0xde, 0x38, 0x0b, 0x6f, 0x9c, 0x86, 0x17, 0xce, 0xc3, 0x26, 0xb7, 0x01,
		0xb7, 0x4a, 0xdd, 0xba, 0xc3, 0xad, 0x52, 0xfc, 0xe1, 0xd4, 0x5a, 0x96, 0x9e, 0x83, 0x34, 0xb6,
		0x27, 0x66, 0xb0, 0xac, 0xa2, 0x70, 0xab, 0xd0, 0x55, 0x6f, 0x01, 0x82, 0x9d, 0x54, 0xd6, 0xec,
		0x6e, 0xae, 0xb4, 0xac, 0xd9, 0x25, 0xc8, 0x26, 0xc8, 0x26, 0xc8, 0x26, 0xc8, 0x26, 0xc8, 0xd6,
		0xbc, 0xef, 0x6c, 0x74, 0xab, 0x0b, 0x7c, 0x80, 0x21, 0x1c, 0xc1, 0x10, 0x06, 0x94, 0x01, 0xca,
		0x00, 0x65, 0x80, 0x32, 0x40, 0x19, 0xa0, 0x0c, 0x50, 0x66, 0x0c, 0xca, 0x20, 0xaa, 0x02, 0x1f,
		0x80, 0x0f, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x41, 0x35, 0x04, 0x87, 0xa8, 0x6a, 0x71, 0xb7, 0x68,
		0x9e, 0xa0, 0x79, 0x62, 0xf5, 0xbd, 0xa4, 0x79, 0x02, 0xa2, 0x2a, 0x4a, 0xea, 0x25, 0x3a, 0xb0,
		0x93, 0xca, 0x9a, 0xdd, 0x00, 0x4c, 0x19, 0x7c, 0xc9, 0x35, 0xf8, 0x92, 0xec, 0xdb, 0xf5, 0x45,
		0x7d, 0xd9, 0xb7, 0xfb, 0xb0, 0xba, 0x86, 0xbc, 0x78, 0xf7, 0xdd, 0xe2, 0x37, 0x84, 0xba, 0x80,
		0xf7, 0x49, 0x40, 0x97, 0xaa, 0xe1, 0x6e, 0xf3, 0xac, 0x13, 0x8f, 0x27, 0xaf, 0xed, 0xb2, 0x2f,
		0x1b, 0xdb, 0x37, 0xbe, 0x5c, 0xbb, 0x54, 0x3c, 0x82, 0x55, 0x5c, 0x6b, 0xbb, 0xb3, 0x53, 0xdc,
		0xcc, 0x78, 0x72, 0x0f, 0xa2, 0xdf, 0xa2, 0xa7, 0xb3, 0xbc, 0x53, 0x9c, 0x7f, 0x1d, 0xba, 0xd1,
		0xcb, 0x93, 0x67, 0xe7, 0xad, 0xd3, 0x76, 0xb3, 0x75, 0x7e, 0xd8, 0xfe, 0x70, 0xda, 0x7c, 0x7d,
		0x74, 0xf6, 0xfe, 0x69, 0xcd, 0x97, 0xe0, 0x4e, 0x5f, 0xf1, 0x36, 0xad, 0xc0, 0xfd, 0x21, 0x1d,
		0xa8, 0xc5, 0x3c, 0x84, 0x37, 0x6e, 0xd4, 0xcd, 0x92, 0xa1, 0x2a, 0x7c, 0x2c, 0xae, 0x5e, 0x33,
		0xed, 0xf6, 0xc7, 0x3d, 0x17, 0xe5, 0xd7, 0xc9, 0x28, 0xea, 0x0e, 0xd2, 0xbc, 0x93, 0xa4, 0x2e,
		0xfb, 0xff, 0xd9, 0xfb, 0xdb, 0xa6, 0xb6, 0xb1, 0x65, 0x8f, 0x1b, 0x7e, 0x9f, 0x4f, 0xa1, 0x72,
		0x9d, 0xaa, 0x99, 0xa9, 0xda, 0x4a, 0x80, 0xf0, 0x30, 0xa1, 0x6a, 0xbf, 0x30, 0xe0, 0x24, 0x3e,
		0x07, 0x8c, 0x6f, 0x63, 0xb2, 0x67, 0xee, 0x19, 0x8e, 0x4b, 0xd8, 0x0b, 0xa2, 0xeb, 0x18, 0xd9,
		0x97, 0x24, 0x93, 0xa4, 0x66, 0xf2, 0xdd, 0xaf, 0xf2, 0x93, 0xb0, 0x83, 0x99, 0x40, 0x50, 0xf7,
		0x5a, 0x92, 0x7f, 0xa9, 0x53, 0x7b, 0x72, 0x92, 0xe0, 0x96, 0x5b, 0xbd, 0xba, 0xff, 0xdd, 0xab,
		0xff, 0xdd, 0xde, 0xd5, 0x20, 0xf6, 0x66, 0x81, 0xd1, 0xab, 0x37, 0x6f, 0x77, 0xbd, 0x89, 0xf6,
		0xbd, 0x64, 0x68, 0xba, 0xe1, 0x55, 0xd8, 0xfd, 0x73, 0x16, 0xb8, 0x47, 0xf1, 0x14, 0x3e, 0x28,
		0xd9, 0x8b, 0x85, 0x9b, 0x82, 0xc5, 0x33, 0xd9, 0x5b, 0x78, 0x51, 0x8a, 0x37, 0x84, 0x36, 0xaf,
		0x05, 0x96, 0x8e, 0x68, 0x3e, 0xb6, 0x02, 0xf4, 0xb7, 0xfa, 0xe9, 0x17, 0x85, 0x42, 0x55, 0x4a,
		0x29, 0x8a, 0xdb, 0xa9, 0x89, 0xa0, 0xb3, 0xc9, 0x35, 0xf9, 0x90, 0x39, 0xda, 0xf9, 0x1f, 0x05,
		0x01, 0x63, 0xad, 0x24, 0x71, 0x6a, 0xfc, 0xe1, 0xa0, 0x1f, 0x76, 0xbf, 0x8c, 0xdf, 0xdd, 0xb6,
		0x98, 0xb9, 0xde, 0xcd, 0x33, 0xfa, 0x56, 0xa2, 0xd0, 0x11, 0x94, 0x1d, 0x65, 0x24, 0xde, 0x74,
		0xa1, 0xd1, 0x5c, 0xa1, 0xd7, 0x44, 0xa1, 0x05, 0x81, 0xd4, 0x9b, 0x22, 0xd4, 0x51, 0x8e, 0x6a,
		0x93, 0x43, 0xb1, 0x4a, 0x19, 0xd2, 0xa3, 0x82, 0x96, 0x88, 0x83, 0xf2, 0xa6, 0xbc, 0x8a, 0xae,
		0x28, 0x6d, 0xcd, 0x3a, 0xf3, 0xdf, 0xd4, 0x3a, 0xd6, 0x34, 0x3b, 0xd4, 0xf4, 0x3b, 0xd2, 0x6c,
		0xd6, 0x79, 0x54, 0x3b, 0xce, 0xdc, 0xa8, 0xf4, 0x68, 0x75, 0x94, 0x15, 0xfb, 0x72, 0x46, 0x6b,
		0x5e, 0x5b, 0xa5, 0x3b, 0xf7, 0x21, 0xca, 0x95, 0xa7, 0x99, 0xdc, 0x92, 0x0f, 0xe4, 0xdc, 0x60,
		0x20, 0x67, 0xf1, 0x1d, 0xb6, 0x75, 0xc7, 0x6d, 0xdd, 0x81, 0x5b, 0x75, 0xe4, 0x3a, 0x0e, 0x5d,
		0xc9, 0xb1, 0xab, 0x3b, 0xf8, 0x4c, 0x20, 0x03, 0x39, 0xe1, 0x95, 0x78, 0xe5, 0x0f, 0x0e, 0xb6,
		0x83, 0x84, 0x33, 0xc1, 0xc2, 0x99, 0xa0, 0xe1, 0x44, 0xf0, 0xd0, 0x0d, 0x22, 0xca, 0xc1, 0x24,
		0xd3, 0x30, 0x03, 0x39, 0x19, 0xc8, 0xa9, 0xf9, 0xc5, 0xe1, 0x94, 0x2c, 0x3c, 0x07, 0xed, 0xfa,
		0x8e, 0xb8, 0xc1, 0x65, 0x13, 0x65, 0x20, 0x27, 0xb6, 0xea, 0x2c, 0x40, 0xb0, 0x27, 0x95, 0x1d,
		0x68, 0x92, 0xf2, 0x59, 0xef, 0x2e, 0xaa, 0x5e, 0x46, 0x99, 0x65, 0x65, 0x24, 0x46, 0x99, 0x69,
		0x64, 0x15, 0xd4, 0x8c, 0x14, 0xcf, 0x14, 0x35, 0x23, 0x6a, 0x46, 0x59, 0x20, 0xa7, 0x66, 0x24,
		0xac, 0x61, 0x46, 0x99, 0xe9, 0x8f, 0x32, 0x03, 0x0d, 0x83, 0x86, 0xf3, 0x53, 0x2f, 0x33, 0xe4,
		0xc0, 0x6d, 0xe0, 0x36, 0x70, 0x1b, 0xb8, 0x0d, 0xdc, 0xa6, 0x5a, 0xfb, 0x60, 0x86, 0x9c, 0x8d,
		0xb3, 0xc5, 0x7d, 0x1f, 0xf7, 0x7d, 0xab, 0xcf, 0x25, 0xf7, 0x7d, 0xcc, 0x90, 0xc3, 0x48, 0x9d,
		0x44, 0x07, 0xf6, 0xa4, 0x72, 0xd1, 0x47, 0x69, 0xa3, 0x80, 0x92, 0x18, 0xde, 0xa7, 0x36, 0x72,
		0xe0, 0x5b, 0x2a, 0xf9, 0xd2, 0x2c, 0xb4, 0x57, 0x33, 0xa2, 0x4e, 0x59, 0xe6, 0x76, 0xa8, 0x4c,
		0x74, 0x0b, 0x52, 0xa3, 0xcf, 0xa8, 0x9a, 0x8a, 0x2d, 0x39, 0xa1, 0x6a, 0x0b, 0x42, 0x95, 0x80,
		0x64, 0x08, 0x55, 0x10, 0xaa, 0x8a, 0x1e, 0xc8, 0x21, 0x54, 0x41, 0xa8, 0x2a, 0x5f, 0x50, 0xb0,
		0x1f, 0x1c, 0x6c, 0x07, 0x09, 0x67, 0x82, 0x85, 0x33, 0x41, 0xc3, 0x89, 0xe0, 0x61, 0xa7, 0xa0,
		0x01, 0xa1, 0x4a, 0xdd, 0xbb, 0x43, 0xa8, 0x52, 0xfc, 0xe2, 0x5c, 0xb0, 0x2c, 0x3c, 0x07, 0xb5,
		0x6b, 0x47, 0xdc, 0xe0, 0xb2, 0x89, 0x42, 0xa8, 0xc2, 0x56, 0x9d, 0x05, 0x08, 0xf6, 0xa4, 0x5e,
		0xd0, 0xc9, 0xf8, 0x6c, 0xa3, 0x5d, 0x5a, 0xc2, 0x61, 0x3e, 0x77, 0x8d, 0xe9, 0x99, 0x9e, 0x55,
		0x72, 0xcf, 0x8a, 0xc7, 0x21, 0xc9, 0x26, 0xc9, 0x26, 0xc9, 0x26, 0xc9, 0x26, 0xc9, 0x2e, 0x4d,
		0x92, 0xcd, 0x32, 0xfd, 0xb2, 0xc0, 0x07, 0x68, 0xc1, 0x1e, 0xb4, 0x60, 0x40, 0x19, 0xa0, 0x0c,
		0x50, 0x06, 0x28, 0x03, 0x94, 0x01, 0xca, 0x00, 0x65, 0x96, 0x41, 0x19, 0xec, 0x54, 0xe0, 0x03,
		0xf0, 0x01, 0xf8, 0x00, 0x7c, 0x00, 0x3e, 0xa8, 0xa6, 0xe0, 0xb0, 0x53, 0x6d, 0x9c, 0x2d, 0x9a,
		0x27, 0x68, 0x9e, 0x58, 0x7d, 0x2e, 0x69, 0x9e, 0x80, 0x9d, 0x8a, 0x91, 0x3a, 0x89, 0x0e, 0xec,
		0x49, 0xbd, 0x80, 0x24, 0xe9, 0xbe, 0x2b, 0x83, 0x24, 0xf9, 0x3d, 0x92, 0xe4, 0x94, 0x7b, 0xc7,
		0x6e, 0x73, 0xfb, 0x36, 0xab, 0x6d, 0xab, 0x85, 0xb1, 0xd1, 0x8a, 0x0a, 0xf3, 0xf5, 0xc7, 0xd7,
		0x89, 0x9f, 0xc5, 0xa9, 0x69, 0x4e, 0x9e, 0xbd, 0x3e, 0xbc, 0xdd, 0xee, 0x4c, 0x4b, 0x46, 0xc7,
		0x93, 0x27, 0x2f, 0xe8, 0xae, 0x7d, 0x41, 0x4b, 0x5f, 0x6e, 0x4d, 0x8b, 0x4d, 0xd7, 0x84, 0xb7,
		0x0a, 0x9d, 0x72, 0xab, 0x3b, 0xe3, 0x32, 0xf1, 0x6c, 0xd5, 0x7d, 0x92, 0x20, 0xb6, 0xea, 0xe6,
		0x6a, 0x1d, 0x6c, 0xd5, 0x65, 0xab, 0xee, 0x77, 0x34, 0xc6, 0x56, 0xdd, 0x02, 0x3a, 0x64, 0x75,
		0xc7, 0x6c, 0xc3, 0x41, 0xdb, 0x73, 0xd4, 0xb6, 0x1c, 0xb6, 0x75, 0xc7, 0x6d, 0xdd, 0x81, 0x5b,
		0x75, 0xe4, 0xe5, 0x2c, 0x54, 0x30, 0x04, 0x82, 0x21, 0x10, 0xe5, 0x0b, 0x0a, 0xf6, 0x83, 0x83,
		0xed, 0x20, 0xe1, 0x4c, 0xb0, 0x70, 0x26, 0x68, 0x38, 0x11, 0x3c, 0x74, 0x83, 0x88, 0x72, 0x30,
		0xc9, 0x34, 0xcc, 0x10, 0x08, 0x86, 0x40, 0x68, 0x7e, 0x71, 0xfa, 0x18, 0x16, 0x9e, 0x83, 0x2b,
		0x62, 0x47, 0xdc, 0xe0, 0xb2, 0x89, 0x32, 0x04, 0x02, 0x5b, 0x75, 0x16, 0x20, 0xd8, 0x93, 0xca,
		0xb0, 0x6d, 0x49, 0xf9, 0xec, 0x11, 0x13, 0x55, 0x2f, 0xf4, 0xd9, 0xac, 0x8c, 0x04, 0x7d, 0x56,
		0x23, 0xab, 0xa0, 0x66, 0xa4, 0x78, 0xa6, 0xa8, 0x19, 0x51, 0x33, 0xca, 0x02, 0x39, 0x35, 0x23,
		0x61, 0x0d, 0x43, 0x9f, 0x65, 0xab, 0x2e, 0x68, 0xb8, 0xc8, 0x68, 0x18, 0xde, 0x32, 0xb8, 0x0d,
		0xdc, 0x06, 0x6e, 0x03, 0xb7, 0x81, 0xdb, 0x54, 0x6b, 0x1f, 0xf0, 0x96, 0x6d, 0x9c, 0x2d, 0xee,
		0xfb, 0xb8, 0xef, 0x5b, 0x7d, 0x2e, 0xb9, 0xef, 0x83, 0xb7, 0x8c, 0x91, 0x3a, 0x89, 0x0e, 0xec,
		0x49, 0xe5, 0xa2, 0x8f, 0xd2, 0x46, 0x01, 0x25, 0x41, 0x18, 0x77, 0x83, 0x8c, 0x9b, 0x71, 0x26,
		0x59, 0xaf, 0xfb, 0xf4, 0x77, 0xcc, 0x7a, 0xdd, 0xbc, 0xc5, 0xb1, 0x5e, 0x57, 0x54, 0x32, 0xcc,
		0x2a, 0x98, 0x55, 0x45, 0x8f, 0xe8, 0x30, 0xab, 0x60, 0x56, 0x95, 0x2f, 0x28, 0xd8, 0x0f, 0x0e,
		0xb6, 0x83, 0x84, 0x33, 0xc1, 0xc2, 0x99, 0xa0, 0xe1, 0x44, 0xf0, 0xb0, 0x53, 0xd9, 0x80, 0x59,
		0xa5, 0xee, 0xdd, 0x61, 0x56, 0x29, 0x7e, 0x71, 0x6e, 0x5a, 0x16, 0x9e, 0x83, 0x22, 0xb6, 0x23,
		0x6e, 0x70, 0xd9, 0x44, 0x61, 0x56, 0x61, 0xab, 0xce, 0x02, 0x04, 0x7b, 0x52, 0x59, 0xaf, 0xfb,
		0x7c, 0xa3, 0x65, 0xbd, 0x2e, 0x49, 0x36, 0x49, 0x36, 0x49, 0x36, 0x49, 0x36, 0x49, 0xb6, 0xe6,
		0x79, 0x67, 0x93, 0x5b, 0x59, 0xe0, 0x03, 0xfc, 0x60, 0x0f, 0x7e, 0x30, 0xa0, 0x0c, 0x50, 0x06,
		0x28, 0x03, 0x94, 0x01, 0xca, 0x00, 0x65, 0x80, 0x32, 0xcb, 0xa0, 0x0c, 0x9a, 0x2a, 0xf0, 0x01,
		0xf8, 0x00, 0x7c, 0x00, 0x3e, 0x00, 0x1f, 0x54, 0x53, 0x70, 0x68, 0xaa, 0x36, 0xce, 0x16, 0xcd,
		0x13, 0x34, 0x4f, 0xac, 0x3e, 0x97, 0x34, 0x4f, 0x40, 0x53, 0xc5, 0x48, 0x9d, 0x44, 0x07, 0xf6,
		0xa4, 0xb2, 0x5e, 0xb7, 0x00, 0xae, 0x0c, 0xb6, 0xe4, 0xa3, 0xd9, 0x92, 0xec, 0xd9, 0x75, 0xc5,
		0x78, 0xd9, 0xb3, 0xfb, 0x3d, 0x63, 0x2d, 0xee, 0xc2, 0xdd, 0xd6, 0xfc, 0x1b, 0x14, 0x75, 0xf1,
		0xee, 0x8b, 0x02, 0x1d, 0xa8, 0x8a, 0xf9, 0x9c, 0xc6, 0x81, 0x3f, 0x1a, 0xbf, 0xb4, 0xcb, 0xbe,
		0x6c, 0x56, 0x5f, 0xf9, 0xf4, 0xd1, 0x44, 0xe2, 0xb9, 0xab, 0xe2, 0x3a, 0xdb, 0x97, 0x2f, 0xb3,
		0x53, 0xe9, 0x8f, 0x4f, 0x81, 0xf7, 0x6f, 0xef, 0xa7, 0x69, 0xc5, 0xc9, 0x4f, 0xbf, 0x0c, 0x4d,
		0xb2, 0x7f, 0xd6, 0x6a, 0xd7, 0x3a, 0xcd, 0xd3, 0xe3, 0xfa, 0xe1, 0xef, 0x9d, 0x7a, 0xf3, 0xc3,
		0xf6, 0x4f, 0x25, 0x5f, 0x7d, 0x3b, 0x79, 0xc1, 0xeb, 0xb4, 0xf8, 0xf6, 0x07, 0x2c, 0xa0, 0x14,
		0x53, 0x10, 0x8e, 0x4c, 0xd2, 0x8d, 0xc3, 0xa1, 0x2a, 0x68, 0xcc, 0x8e, 0xdd, 0x69, 0xd4, 0xff,
		0xe2, 0x85, 0x51, 0xb7, 0x3f, 0xea, 0x19, 0x2f, 0xfd, 0x18, 0x26, 0x5e, 0x77, 0x10, 0xa5, 0x41,
		0x18, 0x99, 0xd8, 0x1b, 0x5b, 0xa0, 0x97, 0x7e, 0x34, 0x5e, 0xd0, 0xeb, 0xc5, 0x26, 0x49, 0xbc,
		0xab, 0xe0, 0x26, 0x1c, 0xff, 0xf3, 0xe4, 0xcf, 0x28, 0x19, 0x9a, 0x6e, 0x78, 0x15, 0x9a, 0x9e,
		0x97, 0x0e, 0xbc, 0x4b, 0xe3, 0x9d, 0xb5, 0xfc, 0x76, 0xcd, 0x9b, 0x06, 0x21, 0xef, 0xac, 0xfa,
		0xb6, 0xee, 0x5d, 0x0d, 0xe2, 0xc9, 0x0f, 0xd7, 0x9b, 0xb7, 0xdb, 0xde, 0x28, 0x0a, 0xbb, 0x41,
		0x92, 0xfe, 0x19, 0x2d, 0x7f, 0xd4, 0x4b, 0x2d, 0x03, 0xb7, 0x70, 0xb3, 0xb0, 0x78, 0x96, 0x7b,
		0x0b, 0xaf, 0x58, 0xf1, 0x46, 0xd1, 0xe6, 0x35, 0xc2, 0xd2, 0xd1, 0xb6, 0x6d, 0x65, 0xa4, 0x19,
		0x56, 0x3f, 0xfd, 0xa2, 0x50, 0x28, 0x4e, 0x29, 0x1d, 0x72, 0x39, 0x0d, 0x12, 0x74, 0x52, 0x39,
		0x26, 0x3a, 0x32, 0xc7, 0x3a, 0xff, 0x63, 0x20, 0x60, 0xa8, 0x95, 0x6f, 0xde, 0xd8, 0xae, 0x98,
		0xa9, 0xde, 0x4d, 0x4d, 0xfa, 0x56, 0xa2, 0xd0, 0xf1, 0x93, 0x1d, 0x98, 0x24, 0xde, 0xda, 0xa1,
		0xd1, 0xc2, 0xa1, 0xd7, 0xaa, 0xa1, 0x05, 0x9c, 0xd4, 0x5b, 0x2f, 0xd4, 0xb1, 0x91, 0x6a, 0x2b,
		0x45, 0xb1, 0xca, 0x26, 0xd2, 0x03, 0x89, 0x96, 0xe8, 0x89, 0xf2, 0xa6, 0xbc, 0x8a, 0x14, 0x29,
		0x6d, 0xcd, 0x3a, 0x53, 0xe6, 0xd4, 0xfa, 0xe2, 0x34, 0xfb, 0xe0, 0xf4, 0xfb, 0xde, 0x6c, 0x56,
		0x95, 0x54, 0xfb, 0xda, 0xdc, 0xa8, 0x2b, 0x69, 0xf5, 0xad, 0x15, 0xfb, 0x12, 0x48, 0x6b, 0x2a,
		0x5c, 0xa5, 0x3b, 0xf7, 0x21, 0xca, 0x95, 0xae, 0x99, 0xdc, 0x92, 0x8f, 0xfd, 0xdc, 0x60, 0xec,
		0x67, 0xf1, 0x1d, 0xb6, 0x75, 0xc7, 0x6d, 0xdd, 0x81, 0x5b, 0x75, 0xe4, 0x3a, 0x0e, 0x5d, 0xc9,
		0xb1, 0xab, 0x3b, 0xf8, 0x4c, 0x20, 0x63, 0x3f, 0x61, 0xaf, 0x78, 0xe5, 0x0f, 0x0e, 0xb6, 0x83,
		0x84, 0x33, 0xc1, 0xc2, 0x99, 0xa0, 0xe1, 0x44, 0xf0, 0xd0, 0x0d, 0x22, 0xca, 0xc1, 0x24, 0xd3,
		0x30, 0x63, 0x3f, 0x19, 0xfb, 0xa9, 0xf9, 0xc5, 0x61, 0xae, 0x2c, 0x3c, 0x07, 0xa4, 0x00, 0x47,
		0xdc, 0xe0, 0xb2, 0x89, 0x32, 0xf6, 0x13, 0x5b, 0x75, 0x16, 0x20, 0xd8, 0x93, 0xca, 0x9e, 0x35,
		0x49, 0xf9, 0xac, 0x90, 0x17, 0x55, 0x2f, 0x03, 0xd3, 0xb2, 0x32, 0x12, 0x03, 0xd3, 0x34, 0xb2,
		0x0a, 0x6a, 0x46, 0x8a, 0x67, 0x8a, 0x9a, 0x11, 0x35, 0xa3, 0x2c, 0x90, 0x53, 0x33, 0x12, 0xd6,
		0x30, 0x03, 0xd3, 0xf4, 0x07, 0xa6, 0x81, 0x86, 0x41, 0xc3, 0xf9, 0xa9, 0x97, 0x49, 0x75, 0xe0,
		0x36, 0x70, 0x1b, 0xb8, 0x0d, 0xdc, 0x06, 0x6e, 0x53, 0xad, 0x7d, 0x30, 0xa9, 0xce, 0xc6, 0xd9,
		0xe2, 0xbe, 0x8f, 0xfb, 0xbe, 0xd5, 0xe7, 0x92, 0xfb, 0x3e, 0x26, 0xd5, 0x61, 0xa4, 0x4e, 0xa2,
		0x03, 0x7b, 0x52, 0xb9, 0xe8, 0xa3, 0xb4, 0x51, 0x40, 0x49, 0x8c, 0x08, 0xb4, 0x35, 0x6e, 0x60,
		0x77, 0x69, 0xea, 0xda, 0xab, 0x19, 0x51, 0xa7, 0x2c, 0x33, 0x3b, 0x54, 0x66, 0xc7, 0x05, 0xa9,
		0xd1, 0x67, 0x54, 0x4d, 0xc5, 0x96, 0x9c, 0x50, 0xb5, 0x05, 0xa1, 0x4a, 0x40, 0x32, 0x84, 0x2a,
		0x08, 0x55, 0x45, 0x0f, 0xe4, 0x10, 0xaa, 0x20, 0x54, 0x95, 0x2f, 0x28, 0xd8, 0x0f, 0x0e, 0xb6,
		0x83, 0x84, 0x33, 0xc1, 0xc2, 0x99, 0xa0, 0xe1, 0x44, 0xf0, 0xb0, 0x53, 0xd0, 0x80, 0x50, 0xa5,
		0xee, 0xdd, 0x21, 0x54, 0x29, 0x7e, 0x71, 0x2e, 0x58, 0x16, 0x9e, 0x83, 0xda, 0xb5, 0x23, 0x6e,
		0x70, 0xd9, 0x44, 0x21, 0x54, 0x61, 0xab, 0xce, 0x02, 0x04, 0x7b, 0x52, 0x2f, 0xe8, 0x64, 0x7c,
		0xb6, 0xd1, 0x2e, 0xad, 0xfb, 0x30, 0x9f, 0xbb, 0xc6, 0xf4, 0x4c, 0xcf, 0x2a, 0xb9, 0x67, 0xc5,
		0xe3, 0x90, 0x64, 0x93, 0x64, 0x93, 0x64, 0x93, 0x64, 0x93, 0x64, 0x97, 0x26, 0xc9, 0x66, 0x65,
		0x7f, 0x59, 0xe0, 0x03, 0xb4, 0x60, 0x0f, 0x5a, 0x30, 0xa0, 0x0c, 0x50, 0x06, 0x28, 0x03, 0x94,
		0x01, 0xca, 0x00, 0x65, 0x80, 0x32, 0xcb, 0xa0, 0x0c, 0x76, 0x2a, 0xf0, 0x01, 0xf8, 0x00, 0x7c,
		0x00, 0x3e, 0x00, 0x1f, 0x54, 0x53, 0x70, 0xd8, 0xa9, 0x36, 0xce, 0x16, 0xcd, 0x13, 0x34, 0x4f,
		0xac, 0x3e, 0x97, 0x34, 0x4f, 0xc0, 0x4e, 0xc5, 0x48, 0x9d, 0x44, 0x07, 0xf6, 0xa4, 0x5e, 0x40,
		0x92, 0x74, 0xdf, 0x95, 0x41, 0x92, 0xfc, 0x1e, 0x49, 0x72, 0xca, 0xbd, 0x63, 0xaf, 0xb9, 0x7d,
		0x9b, 0xd5, 0xb6, 0xd5, 0xc2, 0xd8, 0x68, 0x45, 0x85, 0xf9, 0x9a, 0xd3, 0x32, 0xf1, 0xdd, 0xce,
		0xb4, 0x64, 0x74, 0x3c, 0x79, 0xf2, 0x82, 0xee, 0xd9, 0x17, 0xb4, 0xf4, 0xe5, 0xd6, 0xb4, 0xd8,
		0x74, 0x4d, 0x78, 0xab, 0xd0, 0x29, 0xb7, 0xba, 0x33, 0x2e, 0x13, 0xcf, 0x56, 0xdd, 0x27, 0x09,
		0x62, 0xab, 0x6e, 0xae, 0xd6, 0xc1, 0x56, 0x5d, 0xb6, 0xea, 0x7e, 0x47, 0x63, 0x6c, 0xd5, 0x2d,
		0xa0, 0x43, 0x56, 0x77, 0xcc, 0x36, 0x1c, 0xb4, 0x3d, 0x47, 0x6d, 0xcb, 0x61, 0x5b, 0x77, 0xdc,
		0xd6, 0x1d, 0xb8, 0x55, 0x47, 0x5e, 0xce, 0x42, 0x05, 0x43, 0x20, 0x18, 0x02, 0x51, 0xbe, 0xa0,
		0x60, 0x3f, 0x38, 0xd8, 0x0e, 0x12, 0xce, 0x04, 0x0b, 0x67, 0x82, 0x86, 0x13, 0xc1, 0x43, 0x37,
		0x88, 0x28, 0x07, 0x93, 0x4c, 0xc3, 0x0c, 0x81, 0x60, 0x08, 0x84, 0xe6, 0x17, 0xa7, 0x8f, 0x61,
		0xe1, 0x39, 0xb8, 0x22, 0x76, 0xc4, 0x0d, 0x2e, 0x9b, 0x28, 0x43, 0x20, 0xb0, 0x55, 0x67, 0x01,
		0x82, 0x3d, 0xa9, 0x0c, 0xdb, 0x96, 0x94, 0xcf, 0x1e, 0x31, 0x51, 0xf5, 0x42, 0x9f, 0xcd, 0xca,
		0x48, 0xd0, 0x67, 0x35, 0xb2, 0x0a, 0x6a, 0x46, 0x8a, 0x67, 0x8a, 0x9a, 0x11, 0x35, 0xa3, 0x2c,
		0x90, 0x53, 0x33, 0x12, 0xd6, 0x30, 0xf4, 0x59, 0xb6, 0xea, 0x82, 0x86, 0x8b, 0x8c, 0x86, 0xe1,
		0x2d, 0x83, 0xdb, 0xc0, 0x6d, 0xe0, 0x36, 0x70, 0x1b, 0xb8, 0x4d, 0xb5, 0xf6, 0x01, 0x6f, 0xd9,
		0xc6, 0xd9, 0xe2, 0xbe, 0x8f, 0xfb, 0xbe, 0xd5, 0xe7, 0x92, 0xfb, 0x3e, 0x78, 0xcb, 0x18, 0xa9,
		0x93, 0xe8, 0xc0, 0x9e, 0x54, 0x2e, 0xfa, 0x28, 0x6d, 0x14, 0x50, 0x12, 0x84, 0x71, 0x37, 0xc8,
		0xb8, 0x19, 0x67, 0x92, 0xf5, 0xba, 0x4f, 0x7f, 0xc7, 0xac, 0xd7, 0xcd, 0x5b, 0x1c, 0xeb, 0x75,
		0x45, 0x25, 0xc3, 0xac, 0x82, 0x59, 0x55, 0xf4, 0x88, 0x0e, 0xb3, 0x0a, 0x66, 0x55, 0xf9, 0x82,
		0x82, 0xfd, 0xe0, 0x60, 0x3b, 0x48, 0x38, 0x13, 0x2c, 0x9c, 0x09, 0x1a, 0x4e, 0x04, 0x0f, 0x3b,
		0x95, 0x0d, 0x98, 0x55, 0xea, 0xde, 0x1d, 0x66, 0x95, 0xe2, 0x17, 0xe7, 0xa6, 0x65, 0xe1, 0x39,
		0x28, 0x62, 0x3b, 0xe2, 0x06, 0x97, 0x4d, 0x14, 0x66, 0x15, 0xb6, 0xea, 0x2c, 0x40, 0xb0, 0x27,
		0x95, 0xf5, 0xba, 0xcf, 0x37, 0x5a, 0xd6, 0xeb, 0x92, 0x64, 0x93, 0x64, 0x93, 0x64, 0x93, 0x64,
		0x93, 0x64, 0x6b, 0x9e, 0x77, 0x36, 0xb9, 0x95, 0x05, 0x3e, 0xc0, 0x0f, 0xf6, 0xe0, 0x07, 0x03,
		0xca, 0x00, 0x65, 0x80, 0x32, 0x40, 0x19, 0xa0, 0x0c, 0x50, 0x06, 0x28, 0xb3, 0x0c, 0xca, 0xa0,
		0xa9, 0x02, 0x1f, 0x80, 0x0f, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x41, 0x35, 0x05, 0x87, 0xa6, 0x6a,
		0xe3, 0x6c, 0xd1, 0x3c, 0x41, 0xf3, 0xc4, 0xea, 0x73, 0x49, 0xf3, 0x04, 0x34, 0x55, 0x8c, 0xd4,
		0x49, 0x74, 0x60, 0x4f, 0x2a, 0xeb, 0x75, 0x0b, 0xe0, 0xca, 0x60, 0x4b, 0x3e, 0x9a, 0x2d, 0xc9,
		0x9e, 0x5d, 0x57, 0x8c, 0x97, 0x3d, 0xbb, 0xdf, 0x33, 0xd6, 0xe2, 0x2e, 0xdc, 0x6d, 0xcd, 0xbf,
		0x41, 0x51, 0x17, 0xef, 0xbe, 0x28, 0xd0, 0x81, 0xaa, 0x98, 0xcf, 0x69, 0x1c, 0xf8, 0xa3, 0xf1,
		0x4b, 0xbb, 0xec, 0xcb, 0x66, 0xf5, 0x95, 0x4f, 0x1f, 0x4d, 0x24, 0x9e, 0xbb, 0x2a, 0xae, 0xb3,
		0x7d, 0xf9, 0x32, 0x3b, 0x95, 0xfe, 0xf8, 0x14, 0x78, 0xff, 0xf6, 0x7e, 0x9a, 0x56, 0x9c, 0xfc,
		0xf4, 0xcb, 0xd0, 0x24, 0xfb, 0x67, 0xad, 0x76, 0xad, 0xd3, 0x3c, 0x3d, 0xae, 0x1f, 0xfe, 0xde,
		0xa9, 0x37, 0x3f, 0xec, 0xfe, 0x54, 0xf2, 0xd5, 0xb7, 0x93, 0x17, 0xbc, 0x4e, 0x8b, 0x6f, 0x7f,
		0xc0, 0x02, 0x4a, 0x31, 0x05, 0xe1, 0xc8, 0x24, 0xdd, 0x38, 0x1c, 0xaa, 0x82, 0xc6, 0xec, 0xd8,
		0x9d, 0x46, 0xfd, 0x2f, 0x5e, 0x18, 0x75, 0xfb, 0xa3, 0x9e, 0xf1, 0xd2, 0x8f, 0x61, 0xe2, 0x75,
		0x07, 0x51, 0x1a, 0x84, 0x91, 0x89, 0xbd, 0xb1, 0x05, 0x7a, 0xe9, 0x47, 0xe3, 0x05, 0xbd, 0x5e,
		0x6c, 0x92, 0xc4, 0xbb, 0x0a, 0x6e, 0xc2, 0xf1, 0x3f, 0x4f, 0xfe, 0x8c, 0x92, 0xa1, 0xe9, 0x86,
		0x57, 0xa1, 0xe9, 0x79, 0xe9, 0xc0, 0xbb, 0x34, 0xde, 0x59, 0xcb, 0x6f, 0xd7, 0xbc, 0x69, 0x10,
		0xf2, 0xce, 0xaa, 0x6f, 0xeb, 0xde, 0xd5, 0x20, 0x9e, 0xfc, 0x70, 0xbd, 0x79, 0xbb, 0xeb, 0x8d,
		0xa2, 0xb0, 0x1b, 0x24, 0xe9, 0x9f, 0xd1, 0xf2, 0x47, 0xbd, 0xd4, 0x32, 0x70, 0x0b, 0x37, 0x0b,
		0x8b, 0x67, 0xb9, 0xb7, 0xf0, 0x8a, 0x15, 0x6f, 0x14, 0x6d, 0x5e, 0x23, 0x2c, 0x1d, 0x6d, 0xdb,
		0x56, 0x46, 0x9a, 0x61, 0xf5, 0xd3, 0x2f, 0x0a, 0x85, 0xe2, 0x94, 0xd2, 0x21, 0x97, 0xd3, 0x20,
		0x41, 0x27, 0x95, 0x63, 0xa2, 0x23, 0x73, 0xac, 0xf3, 0x3f, 0x06, 0x02, 0x86, 0x2a, 0x3c, 0x3a,
		0x49, 0x65, 0x54, 0x92, 0xf0, 0x68, 0x24, 0xf1, 0x51, 0x48, 0x1a, 0xcd, 0x1a, 0x7a, 0x4d, 0x19,
		0x5a, 0x10, 0x49, 0xbd, 0xc9, 0x42, 0x1d, 0x05, 0xa9, 0x36, 0x4d, 0x14, 0xab, 0x40, 0x22, 0x3d,
		0x7a, 0xa8, 0x12, 0x74, 0x67, 0x97, 0x52, 0xc2, 0x46, 0x3c, 0x3f, 0x96, 0x33, 0x79, 0xc2, 0x06,
		0xa5, 0xd3, 0x05, 0xa7, 0xd6, 0xf5, 0xa6, 0xd9, 0xe5, 0xa6, 0xdf, 0xd5, 0x66, 0xb3, 0x66, 0xa4,
		0xda, 0xb5, 0xe6, 0x46, 0xd5, 0x48, 0xab, 0x2b, 0xad, 0xd8, 0x57, 0x3c, 0x6a, 0x5d, 0x66, 0x16,
		0x9a, 0xd2, 0x95, 0x9a, 0xd0, 0x05, 0x2f, 0x39, 0x04, 0x51, 0xdd, 0x52, 0x45, 0x55, 0x31, 0x2e,
		0x2e, 0x89, 0x25, 0x3c, 0x12, 0x1e, 0x09, 0x8f, 0x84, 0x47, 0xc2, 0x63, 0x76, 0xde, 0xc2, 0x9e,
		0x89, 0xd2, 0x30, 0xfd, 0x12, 0x9b, 0x2b, 0xcd, 0x10, 0xa9, 0xd0, 0x66, 0x5d, 0xa9, 0xcf, 0xbe,
		0xda, 0x41, 0x90, 0x58, 0x18, 0xee, 0x5d, 0x7d, 0x5b, 0xef, 0x9c, 0x8d, 0xff, 0xa7, 0xfd, 0x7b,
		0xb3, 0xa6, 0x75, 0xd4, 0x27, 0x8d, 0xa2, 0x89, 0x6a, 0x2b, 0xb9, 0x25, 0x56, 0x58, 0xbd, 0xf9,
		0x61, 0xbb, 0xf3, 0xf6, 0xf8, 0xf4, 0x3f, 0x67, 0xcd, 0xda, 0x61, 0xa5, 0x8c, 0x3c, 0x3c, 0x9b,
		0x8a, 0x3d, 0xae, 0x1e, 0xd4, 0x8e, 0x6b, 0x47, 0x9d, 0xf3, 0x46, 0xfd, 0xb0, 0x7a, 0xd6, 0x46,
		0xbf, 0x39, 0xeb, 0x17, 0xbd, 0x4a, 0xe8, 0x75, 0x17, 0xbb, 0x15, 0xd6, 0x2f, 0x7a, 0xcd, 0x5d,
		0xaf, 0xc7, 0x5b, 0x1f, 0x9a, 0x8d, 0x4e, 0xed, 0x43, 0xb3, 0x81, 0x56, 0xf3, 0xd6, 0xea, 0x87,
		0xe6, 0xf1, 0x19, 0x5a, 0xcd, 0x51, 0xab, 0xaf, 0xc7, 0x5a, 0x9d, 0x44, 0xb0, 0x93, 0xf3, 0xe3,
		0x36, 0xbe, 0x40, 0x4e, 0xbf, 0x78, 0x5a, 0x39, 0xed, 0xee, 0x62, 0xbd, 0xc2, 0xfa, 0xc5, 0x7a,
		0xf3, 0xd7, 0x6e, 0xbd, 0xf1, 0x3f, 0x67, 0xed, 0x6a, 0xbb, 0x86, 0x52, 0x05, 0x94, 0xda, 0x39,
		0x6b, 0xbe, 0x45, 0xb1, 0x12, 0x8a, 0x05, 0xd8, 0xe6, 0xaa, 0xd8, 0x6f, 0xb8, 0x07, 0xdb, 0xe8,
		0x56, 0x4c, 0xb7, 0xbb, 0xe8, 0x36, 0x3f, 0xdd, 0x7e, 0x68, 0x36, 0xec, 0x14, 0x6c, 0x55, 0x24,
		0x5d, 0xd0, 0x72, 0xaf, 0x6f, 0xd9, 0x15, 0x13, 0x05, 0x97, 0x7d, 0x85, 0x75, 0x03, 0x99, 0x11,
		0xcf, 0x05, 0xd2, 0x47, 0xf0, 0x24, 0x41, 0xf4, 0x11, 0xe4, 0x6a, 0x1d, 0xf4, 0x11, 0xd0, 0x47,
		0xf0, 0x1d, 0x8d, 0xd1, 0x66, 0xb7, 0xa6, 0x21, 0x51, 0x6d, 0xbd, 0xed, 0x37, 0x2b, 0x77, 0xc4,
		0x57, 0xd9, 0x2a, 0xed, 0x2f, 0x27, 0x28, 0x12, 0x14, 0x09, 0x8a, 0xe5, 0x0c, 0x8a, 0x5a, 0xfb,
		0xc6, 0x2b, 0x13, 0x2e, 0x6c, 0xbf, 0xaf, 0xb8, 0x08, 0xed, 0xae, 0x9d, 0x2f, 0x13, 0xad, 0x64,
		0x86, 0xba, 0x83, 0xb1, 0xd5, 0x07, 0x62, 0xdb, 0x18, 0x84, 0x6d, 0x6f, 0x00, 0xb6, 0xad, 0xc1,
		0xd7, 0xd6, 0x07, 0x5e, 0x5b, 0x1f, 0x74, 0x6d, 0x75, 0xc0, 0x75, 0xb9, 0x46, 0x1f, 0xaa, 0x0f,
		0xb2, 0xb6, 0xb7, 0xf9, 0xdb, 0xc2, 0xc6, 0x6f, 0x4b, 0xc3, 0xaa, 0x2d, 0x8c, 0x25, 0xb7, 0x39,
		0x9c, 0xda, 0xf6, 0x50, 0x6a, 0x67, 0xe6, 0xfc, 0xda, 0x9f, 0xef, 0x6b, 0x61, 0xf8, 0xb4, 0xd5,
		0xa1, 0xd3, 0xce, 0x6c, 0xea, 0xc6, 0x06, 0x95, 0x03, 0xb4, 0xbe, 0xb4, 0x8b, 0xb2, 0xcc, 0xc3,
		0x52, 0xa8, 0xa8, 0x64, 0x33, 0x60, 0xd5, 0x73, 0x4a, 0xc5, 0xe9, 0xb3, 0xa4, 0x94, 0xa4, 0x94,
		0xa4, 0x94, 0xa4, 0x94, 0xa4, 0x94, 0xa4, 0x94, 0xa4, 0x94, 0xa4, 0x94, 0xa4, 0x94, 0xa4, 0x94,
		0xd8, 0x20, 0x29, 0x25, 0x29, 0xa5, 0x64, 0x4a, 0xe9, 0x0f, 0xe3, 0xf9, 0xd4, 0x5d, 0x7b, 0xd9,
		0xe5, 0xe2, 0x43, 0x90, 0x68, 0x92, 0x68, 0x92, 0x68, 0x92, 0x68, 0x92, 0x68, 0x92, 0x68, 0x92,
		0x68, 0x92, 0x68, 0x02, 0xf2, 0x49, 0x34, 0x49, 0x34, 0x49, 0x34, 0x49, 0x34, 0x8b, 0x99, 0x68,
		0x26, 0x53, 0x70, 0xa8, 0x9c, 0x59, 0x4e, 0xa4, 0x92, 0x4a, 0x92, 0x4a, 0x92, 0x4a, 0x92, 0x4a,
		0x92, 0x4a, 0x92, 0x4a, 0x92, 0x4a, 0x92, 0x4a, 0x02, 0xe3, 0x49, 0x25, 0x49, 0x25, 0x49, 0x25,
		0x49, 0x25, 0x8b, 0x26, 0x41, 0x9a, 0x1e, 0xaa, 0xb4, 0x6e, 0xf5, 0x2e, 0x29, 0x76, 0x68, 0xed,
		0x6a, 0x1a, 0xa4, 0xe3, 0x8f, 0x50, 0x61, 0xf2, 0x7b, 0xcf, 0x5d, 0xbe, 0xda, 0x9c, 0x3f, 0x27,
		0xf3, 0x1f, 0x56, 0x55, 0x5a, 0x7a, 0x7e, 0x77, 0x70, 0x73, 0x33, 0x8a, 0xc2, 0xf4, 0xcb, 0x64,
		0x5f, 0xbd, 0xde, 0x28, 0x88, 0x55, 0xc2, 0x19, 0x95, 0xe4, 0x6a, 0x9d, 0x85, 0xa9, 0x10, 0xe5,
		0xab, 0xa3, 0x30, 0x15, 0xc2, 0xdd, 0x3a, 0x49, 0x76, 0xde, 0x54, 0x3d, 0xe4, 0xa2, 0x97, 0xdc,
		0xdc, 0x56, 0x90, 0x55, 0x8b, 0x46, 0x37, 0x7a, 0x27, 0xbc, 0x3d, 0x38, 0x4b, 0xe3, 0x30, 0xba,
		0xd6, 0xad, 0x74, 0x6d, 0x4c, 0xa6, 0x85, 0xb6, 0xab, 0x8d, 0xa3, 0x6a, 0xeb, 0x48, 0xb3, 0xd0,
		0xb5, 0x39, 0x16, 0x5c, 0xfb, 0xad, 0x5d, 0x6b, 0x1c, 0xd5, 0x54, 0x05, 0x6f, 0x4d, 0x86, 0xfa,
		0x56, 0x5b, 0xef, 0x6a, 0x9a, 0x52, 0x5f, 0x8f, 0xa5, 0x1e, 0x9c, 0xb6, 0xdf, 0x6b, 0x0a, 0xdd,
		0x9e, 0x20, 0xd2, 0xd3, 0x86, 0xd2, 0xa0, 0x6d, 0xb5, 0x7a, 0xf0, 0xa0, 0xae, 0x78, 0x09, 0x37,
		0x11, 0x39, 0x79, 0x73, 0xfb, 0xde, 0x6b, 0xc5, 0x97, 0x97, 0x9d, 0x0d, 0xf1, 0x49, 0x61, 0x4b,
		0x62, 0xa7, 0x27, 0x43, 0x6c, 0xc3, 0xff, 0xea, 0x70, 0x32, 0x36, 0xd1, 0x7d, 0x6f, 0x5b, 0xf3,
		0x5e, 0x6c, 0xee, 0xf2, 0xf6, 0xbd, 0x0d, 0x6a, 0x16, 0x0e, 0x80, 0x97, 0xe3, 0x30, 0x49, 0xab,
		0x69, 0xaa, 0x34, 0xd7, 0xea, 0x24, 0x8c, 0x6a, 0x7d, 0x33, 0x86, 0x97, 0x4a, 0x65, 0xc8, 0xca,
		0x49, 0xf0, 0x79, 0x41, 0xe2, 0xe6, 0xaf, 0xdb, 0xdb, 0xbb, 0x7b, 0xdb, 0xdb, 0x1b, 0x7b, 0xaf,
		0xf7, 0x36, 0xde, 0xec, 0xec, 0x6c, 0xee, 0xaa, 0xec, 0x91, 0x3c, 0x8d, 0x7b, 0x26, 0x36, 0xbd,
		0x83, 0x2f, 0x95, 0x7d, 0x2f, 0x1a, 0xf5, 0xfb, 0x9a, 0x22, 0xcf, 0x13, 0x13, 0xab, 0xd4, 0x5b,
		0x05, 0xcb, 0x1d, 0x2f, 0x0a, 0x74, 0xb2, 0xb4, 0xaa, 0x80, 0xce, 0x55, 0xff, 0x64, 0xc0, 0x4e,
		0xfe, 0xef, 0x5e, 0xe0, 0xbd, 0x57, 0x46, 0x89, 0xf1, 0x6f, 0x46, 0xfd, 0x34, 0x1c, 0xf6, 0x8d,
		0x3f, 0x7e, 0x25, 0x72, 0xe3, 0x53, 0xef, 0x2e, 0xc9, 0xef, 0xcb, 0x14, 0xb2, 0x68, 0xd9, 0xc1,
		0xa9, 0xe2, 0xa5, 0x31, 0x8d, 0x92, 0x98, 0x5e, 0x29, 0x4c, 0xab, 0x04, 0xa6, 0x5e, 0xfa, 0x52,
		0x2f, 0x79, 0xa9, 0x96, 0xba, 0x8a, 0x15, 0xc3, 0xa4, 0x07, 0x9d, 0x56, 0xba, 0xf3, 0x33, 0xaf,
		0x74, 0xb1, 0x30, 0x93, 0xc7, 0x84, 0x69, 0xd7, 0x1c, 0xa7, 0xbe, 0x03, 0xd5, 0x76, 0xa4, 0xd6,
		0x1c, 0xaa, 0x35, 0xc7, 0x6a, 0xc5, 0xc1, 0x96, 0x23, 0x1d, 0x57, 0x9b, 0x30, 0xad, 0xb5, 0xf9,
		0xe6, 0xde, 0xf9, 0xd6, 0xd9, 0x80, 0x73, 0xa7, 0x50, 0x73, 0x15, 0x8c, 0xfa, 0xa9, 0x6a, 0x9f,
		0x65, 0x65, 0x92, 0x6c, 0xeb, 0x14, 0x7f, 0x2f, 0xa0, 0x27, 0x14, 0x2d, 0xd4, 0xd9, 0x0b, 0x79,
		0xb6, 0x42, 0x9f, 0xf5, 0x10, 0x68, 0x3d, 0x14, 0x5a, 0x0d, 0x89, 0x3a, 0xa1, 0x51, 0x29, 0x44,
		0x66, 0x9a, 0xb4, 0x47, 0x4f, 0xd0, 0xdb, 0x54, 0x74, 0x2f, 0xb3, 0xd8, 0x2c, 0xd5, 0x2b, 0x54,
		0x6e, 0x98, 0xcc, 0xe4, 0x7e, 0xb9, 0x1e, 0xa4, 0xfe, 0xa0, 0xeb, 0x77, 0x07, 0x37, 0xc3, 0xd8,
		0x24, 0x89, 0xe9, 0xf9, 0x7d, 0x13, 0x5c, 0x8d, 0x1f, 0xe2, 0x2b, 0xb7, 0x52, 0x0e, 0xc0, 0xe0,
		0x35, 0xee, 0xa4, 0xbd, 0x5f, 0xd6, 0x7d, 0x35, 0x2b, 0x5e, 0xd0, 0xac, 0x7a, 0x3f, 0x8b, 0x19,
		0xc7, 0x4f, 0xbd, 0xe5, 0x9d, 0xf2, 0x28, 0x8d, 0x12, 0x12, 0x25, 0x24, 0x4a, 0x48, 0x94, 0x90,
		0x8a, 0x50, 0x42, 0x52, 0xaa, 0xe1, 0xdf, 0x3b, 0xde, 0x2a, 0xb5, 0x7c, 0x65, 0x87, 0x4c, 0xe1,
		0x83, 0xc2, 0x07, 0x85, 0x0f, 0x0a, 0x1f, 0x2e, 0x39, 0xf8, 0x4c, 0x60, 0xd0, 0xef, 0x0f, 0x3e,
		0xdd, 0x25, 0x25, 0x41, 0xa2, 0x7f, 0x7e, 0xe6, 0x1e, 0xe3, 0xfe, 0xa3, 0x28, 0x9b, 0xb1, 0x8d,
		0xfb, 0x84, 0x4c, 0xb8, 0xe2, 0xbd, 0xc2, 0xfc, 0xd7, 0x85, 0xb2, 0x7e, 0x75, 0xef, 0x19, 0xac,
		0x85, 0x5d, 0x9b, 0xe1, 0xd7, 0x7e, 0x18, 0xb6, 0x1d, 0x8e, 0x9d, 0x09, 0xcb, 0xce, 0x84, 0x67,
		0x27, 0xc2, 0xb4, 0x6e, 0xb8, 0x56, 0x0e, 0xdb, 0x99, 0x86, 0xd5, 0xef, 0x2d, 0xee, 0x9d, 0x77,
		0xfd, 0xfb, 0x8b, 0x7b, 0xd9, 0xd4, 0x66, 0xa9, 0x5f, 0xb1, 0xa5, 0x7b, 0x8d, 0x4c, 0xbe, 0xf5,
		0xfb, 0x0d, 0xfd, 0x93, 0xfc, 0x95, 0x8b, 0xb1, 0x1c, 0xe4, 0xba, 0x7d, 0x0f, 0x62, 0xc6, 0x3f,
		0xad, 0x71, 0x19, 0xa2, 0x67, 0x54, 0x2a, 0xb3, 0x53, 0x27, 0xec, 0x0c, 0xfd, 0xe1, 0xa9, 0x13,
		0xb1, 0x25, 0xaf, 0xd2, 0x6d, 0x51, 0xa5, 0x2b, 0x4f, 0x5a, 0x40, 0x95, 0x8e, 0x2a, 0x5d, 0x7e,
		0x85, 0x22, 0xaa, 0x74, 0x54, 0xe9, 0xb4, 0x7e, 0x51, 0xa5, 0x2b, 0x5d, 0xf8, 0xb5, 0x1f, 0x86,
		0x6d, 0x87, 0x63, 0x67, 0xc2, 0xb2, 0x33, 0xe1, 0xd9, 0x89, 0x30, 0xad, 0x9f, 0xdb, 0x7b, 0x54,
		0xe9, 0x3c, 0x1b, 0xee, 0x5d, 0xbb, 0x4a, 0x07, 0xd2, 0xa4, 0x58, 0x94, 0x6f, 0xb1, 0x48, 0x70,
		0x30, 0x85, 0x85, 0x5a, 0x11, 0x2d, 0xdd, 0xa5, 0xb2, 0x4e, 0xd7, 0xa7, 0x24, 0x9f, 0x27, 0xe6,
		0x64, 0xf6, 0xd4, 0xcd, 0xf1, 0x43, 0x77, 0x6a, 0xe2, 0x38, 0xa3, 0xa0, 0x23, 0x93, 0x55, 0x0a,
		0xac, 0xaa, 0x85, 0x55, 0xf5, 0x3e, 0xf4, 0x2d, 0xfa, 0xd0, 0x8b, 0x93, 0xa1, 0xd1, 0x87, 0x4e,
		0x1f, 0xfa, 0xf7, 0x6b, 0x70, 0x8c, 0x32, 0xc8, 0x59, 0xa1, 0x8c, 0x32, 0xc8, 0x33, 0xb4, 0x31,
		0xca, 0xa0, 0xc8, 0x21, 0xcf, 0x56, 0xe8, 0xb3, 0x1e, 0x02, 0xad, 0x87, 0x42, 0xab, 0x21, 0xb1,
		0x9c, 0x15, 0x1c, 0x46, 0x19, 0x50, 0x96, 0xa1, 0x2c, 0xe3, 0x40, 0x59, 0x46, 0xa1, 0x5e, 0xc8,
		0x98, 0x64, 0x55, 0xc3, 0x73, 0xdb, 0xe0, 0x2a, 0xa2, 0x55, 0xa9, 0xfc, 0x4a, 0x7f, 0x85, 0x99,
		0xed, 0xfc, 0xc2, 0x61, 0xd3, 0x1f, 0x43, 0xc6, 0x49, 0x77, 0xcc, 0xcc, 0x1e, 0xfc, 0xc9, 0xbb,
		0xc9, 0x59, 0x86, 0xe8, 0x3c, 0x7f, 0xf9, 0xf9, 0xfd, 0x56, 0xe6, 0xf5, 0x2b, 0xcc, 0xe7, 0x57,
		0x98, 0xc7, 0x9f, 0xb7, 0xb5, 0x0a, 0x3b, 0x68, 0x87, 0x1c, 0xb3, 0x80, 0x17, 0x7e, 0x8e, 0xf7,
		0xcd, 0xd7, 0xd9, 0xe6, 0xe7, 0x12, 0xf3, 0xf9, 0xa4, 0x9c, 0xcc, 0x54, 0xca, 0x3c, 0xed, 0x9b,
		0x65, 0x3e, 0xaf, 0xff, 0xf9, 0x2f, 0x2b, 0x87, 0x17, 0x55, 0x09, 0x86, 0xc3, 0xfe, 0x17, 0x7f,
		0x38, 0xe8, 0x87, 0xdd, 0x2f, 0xb9, 0xbd, 0xa6, 0xbb, 0x36, 0xd3, 0xc5, 0x4f, 0xcf, 0xc9, 0xac,
		0xf2, 0xbd, 0xf7, 0xca, 0xbd, 0xf8, 0x27, 0x51, 0xdc, 0x5b, 0x2c, 0xde, 0xc5, 0xc3, 0x41, 0x3f,
		0x47, 0x77, 0x28, 0x55, 0x9d, 0x13, 0xaf, 0xbe, 0x89, 0x57, 0xd7, 0xbe, 0xad, 0x9e, 0x4d, 0x14,
		0x5f, 0x52, 0x57, 0x9d, 0xf7, 0x4d, 0x90, 0xd4, 0xe4, 0x21, 0xd9, 0x09, 0x43, 0x42, 0x57, 0xea,
		0x62, 0xf7, 0x0b, 0x92, 0xf7, 0x08, 0x82, 0x2e, 0x47, 0xda, 0xf5, 0xa8, 0xb9, 0x20, 0x35, 0x57,
		0xa4, 0xe3, 0x92, 0x8a, 0x91, 0xa2, 0x4b, 0x5d, 0x5a, 0x57, 0x7a, 0xd3, 0xcb, 0x5b, 0xdf, 0x7c,
		0x1e, 0x0e, 0xe2, 0x34, 0x6f, 0x48, 0xf4, 0xe0, 0xf9, 0x5a, 0x2d, 0x56, 0x6a, 0x6b, 0x8c, 0xc2,
		0x05, 0x75, 0xa5, 0x55, 0xfb, 0xef, 0xda, 0x61, 0xbb, 0xd3, 0x3a, 0x3d, 0x6f, 0x0b, 0xed, 0x57,
		0xbd, 0x90, 0x5d, 0xa3, 0xb5, 0xc1, 0x1a, 0x2d, 0x9b, 0x71, 0x41, 0x2b, 0x3e, 0xa8, 0xc7, 0x09,
		0xf5, 0x78, 0xa1, 0x1b, 0x37, 0x64, 0xe2, 0x87, 0x50, 0x1c, 0xc9, 0x54, 0x23, 0x7e, 0xb3, 0x7b,
		0xcf, 0xd3, 0x4f, 0x5d, 0xbc, 0xf4, 0x62, 0x78, 0x8d, 0x85, 0xf0, 0x3a, 0x8b, 0xe0, 0x75, 0x17,
		0xc0, 0x4f, 0x17, 0xbf, 0x57, 0x0f, 0x0f, 0x6b, 0xcd, 0x79, 0x0c, 0x53, 0x68, 0x0f, 0x9d, 0x2c,
		0x7d, 0x97, 0x0f, 0x9c, 0xc2, 0x87, 0x69, 0xe1, 0x8d, 0x69, 0x2d, 0x22, 0x5f, 0x7e, 0x53, 0x3a,
		0x1b, 0x8b, 0x97, 0xde, 0xd3, 0xbe, 0xb7, 0xc9, 0x6d, 0xb4, 0x82, 0x9f, 0xd6, 0xba, 0x8d, 0x56,
		0x9f, 0xcc, 0x54, 0x8c, 0xfd, 0xb9, 0xf3, 0xe0, 0x15, 0xde, 0x58, 0xc9, 0x8e, 0x96, 0xc5, 0x92,
		0x1d, 0x91, 0x1d, 0x91, 0x1d, 0x91, 0x1d, 0x91, 0x1d, 0x91, 0x1d, 0x91, 0x1d, 0x91, 0x1d, 0x91,
		0x1d, 0x91, 0x1d, 0x91, 0x1d, 0x91, 0x1d, 0x59, 0xcb, 0x8e, 0x94, 0xef, 0x8c, 0x54, 0xee, 0x8a,
		0x80, 0xfb, 0xc0, 0x7d, 0xe0, 0x3e, 0x70, 0x5f, 0xe6, 0xc4, 0x8c, 0xa3, 0x46, 0x6c, 0xae, 0x34,
		0x20, 0xfe, 0x9e, 0xa0, 0x8c, 0x66, 0xd6, 0x85, 0x3a, 0x35, 0xa4, 0xfd, 0x78, 0x30, 0x4a, 0xc3,
		0xe8, 0x7a, 0xe6, 0x9b, 0xb3, 0x3f, 0x9e, 0x65, 0x35, 0x3d, 0x73, 0x15, 0x46, 0xe1, 0x38, 0x4c,
		0x27, 0x0f, 0xff, 0x55, 0xf6, 0x37, 0x93, 0xde, 0xe4, 0x42, 0xd9, 0x8f, 0x28, 0xb7, 0x21, 0x93,
		0x22, 0xce, 0x71, 0xb8, 0x93, 0x64, 0x81, 0xeb, 0x90, 0x09, 0x5f, 0xe4, 0x3c, 0x28, 0x0d, 0xae,
		0x19, 0x25, 0x26, 0x96, 0xf6, 0xf7, 0x8a, 0x74, 0xf0, 0xc5, 0x60, 0x36, 0x98, 0x6a, 0xd3, 0xbf,
		0xfc, 0xa2, 0x91, 0xb1, 0xda, 0xa0, 0x7e, 0x2f, 0x05, 0xb6, 0xc9, 0x9b, 0x64, 0x12, 0xd4, 0xc3,
		0x87, 0x6a, 0xc6, 0xf2, 0x19, 0xbf, 0x1a, 0x32, 0x3d, 0x32, 0xbd, 0xc7, 0xaa, 0x45, 0xf9, 0xfe,
		0x4b, 0xe5, 0xde, 0x8b, 0x4c, 0x8f, 0x4c, 0x8f, 0x4c, 0x8f, 0x4c, 0x8f, 0x4c, 0x8f, 0x4c, 0x8f,
		0x4c, 0x8f, 0x4c, 0x8f, 0x4c, 0x8f, 0x4c, 0x8f, 0x4c, 0x8f, 0x4c, 0xaf, 0x40, 0x99, 0x1e, 0x73,
		0x3a, 0x6c, 0x0c, 0x44, 0x58, 0x60, 0xf7, 0x8b, 0x6c, 0x7d, 0xcc, 0x71, 0x32, 0x46, 0x8e, 0x8c,
		0x79, 0x99, 0x61, 0xe2, 0xa2, 0xc3, 0xc3, 0xc5, 0x99, 0xcd, 0x5b, 0x30, 0x9b, 0x15, 0x91, 0x0f,
		0xcc, 0xe6, 0x32, 0x86, 0x09, 0x98, 0xcd, 0xcf, 0x51, 0x1e, 0xbd, 0xfb, 0x8f, 0xf0, 0xff, 0x94,
		0x78, 0xad, 0xc6, 0x05, 0xed, 0xcc, 0x98, 0x12, 0x6f, 0x11, 0x12, 0x61, 0x7a, 0xf7, 0x7f, 0x10,
		0xcc, 0xd2, 0xbb, 0xff, 0x34, 0x69, 0xf4, 0xee, 0xe7, 0xf1, 0xc6, 0xe8, 0xdd, 0x77, 0xda, 0x9b,
		0x0a, 0xfa, 0x69, 0x88, 0xba, 0xdf, 0x0f, 0x01, 0x10, 0x75, 0x01, 0xfb, 0x80, 0x7d, 0xc0, 0x3e,
		0x60, 0x1f, 0xb0, 0x0f, 0xd8, 0x07, 0xec, 0x03, 0xf6, 0x01, 0xfb, 0x80, 0x7d, 0x0f, 0xde, 0x29,
		0xe8, 0x15, 0xf4, 0x0a, 0x7a, 0x05, 0xbd, 0x5a, 0x46, 0xaf, 0x74, 0x23, 0xd3, 0x8d, 0xfc, 0xa3,
		0x52, 0xe8, 0x46, 0x96, 0x3a, 0x95, 0x74, 0x23, 0x17, 0x34, 0xa8, 0x79, 0x74, 0x23, 0x3f, 0xf1,
		0x50, 0x89, 0x77, 0x23, 0x43, 0xa3, 0xbc, 0xef, 0x5f, 0xa0, 0x51, 0x92, 0xb8, 0x90, 0xb8, 0x90,
		0xb8, 0x90, 0xb8, 0x90, 0xb8, 0x90, 0xb8, 0x90, 0xb8, 0x90, 0xb8, 0x90, 0xb8, 0x90, 0xb8, 0x94,
		0x3e, 0x71, 0x81, 0x15, 0x68, 0x9b, 0x15, 0x38, 0x25, 0xb3, 0xb1, 0x2e, 0xdb, 0x9e, 0x3d, 0x38,
		0x61, 0x07, 0x95, 0x5c, 0xe9, 0x97, 0x3f, 0xb0, 0xb7, 0x7d, 0xfc, 0x2c, 0xcd, 0xe9, 0xa3, 0x94,
		0x69, 0x79, 0x77, 0xe2, 0x8f, 0xdf, 0xab, 0x3f, 0x18, 0x4e, 0x10, 0xb2, 0xc0, 0xfe, 0xee, 0x6f,
		0x04, 0xb0, 0xc2, 0x3b, 0x8f, 0xca, 0xc7, 0xe5, 0xf5, 0x90, 0x0d, 0xde, 0x16, 0x36, 0x78, 0x8f,
		0xf5, 0xce, 0x02, 0xef, 0xc7, 0x7d, 0x20, 0x0b, 0xbc, 0x05, 0x1d, 0x8c, 0xa4, 0xa3, 0x91, 0x77,
		0x38, 0x5a, 0x89, 0x69, 0xf9, 0x59, 0xee, 0xb9, 0x3a, 0xa4, 0x62, 0x64, 0x3d, 0x62, 0x24, 0xf7,
		0xa0, 0xdf, 0x1f, 0x7c, 0xf2, 0x07, 0x9f, 0x22, 0x3f, 0x48, 0xe4, 0x2f, 0x94, 0x96, 0xa4, 0x15,
		0x99, 0xe5, 0xb2, 0x01, 0xb5, 0x45, 0xc1, 0xd1, 0x6b, 0x38, 0x7c, 0x3d, 0xc7, 0xaf, 0x15, 0x00,
		0xd4, 0x03, 0x81, 0x7a, 0x40, 0x50, 0x0d, 0x0c, 0x72, 0x85, 0x36, 0xaf, 0x14, 0x37, 0x6c, 0xa3,
		0x30, 0x4a, 0x7f, 0x55, 0xb8, 0x5f, 0x93, 0xbc, 0x02, 0x69, 0x05, 0xd1, 0xb5, 0x11, 0x8d, 0x18,
		0xe3, 0x5f, 0x0a, 0x17, 0x11, 0x27, 0x61, 0xa4, 0x72, 0xe3, 0x31, 0x11, 0xf6, 0x21, 0xe8, 0x8f,
		0x8c, 0x0e, 0xeb, 0x62, 0x22, 0xef, 0x6d, 0x1c, 0x74, 0xd3, 0x70, 0x10, 0x1d, 0x85, 0xd7, 0xa1,
		0xf4, 0x95, 0xdc, 0xb2, 0xa9, 0x9b, 0xeb, 0x20, 0x0d, 0x6f, 0xc7, 0xdf, 0xf5, 0x2a, 0xe8, 0x27,
		0x46, 0x5c, 0xea, 0x57, 0x85, 0x5b, 0x9c, 0x93, 0xe0, 0xb3, 0xbe, 0xa9, 0x6c, 0xed, 0xec, 0x60,
		0x2c, 0x85, 0x08, 0x4c, 0xf2, 0x9f, 0x7e, 0xc1, 0x58, 0xd1, 0x15, 0x72, 0x58, 0x20, 0xb1, 0x52,
		0x2d, 0xbd, 0x30, 0x09, 0x2e, 0xfb, 0xc6, 0x1f, 0x1a, 0x13, 0xfb, 0x41, 0xe2, 0x5f, 0x85, 0xfd,
		0xd4, 0xc4, 0x0a, 0x03, 0x1a, 0x56, 0xcb, 0x2d, 0x72, 0xee, 0x3a, 0xf1, 0x4a, 0xe4, 0xaf, 0xe4,
		0xaf, 0xe4, 0xaf, 0xe4, 0xaf, 0xe4, 0xaf, 0x97, 0x83, 0x41, 0xdf, 0x04, 0x91, 0x46, 0x87, 0xe8,
		0x26, 0x88, 0x07, 0xc4, 0xf3, 0x58, 0xb5, 0xc4, 0x66, 0xd8, 0x0f, 0xba, 0x19, 0xf2, 0x90, 0x87,
		0x3a, 0xdf, 0x0a, 0x04, 0xe3, 0x80, 0x71, 0xc0, 0x38, 0x60, 0x1c, 0x30, 0x0e, 0x18, 0x07, 0x8c,
		0x03, 0xc6, 0xa1, 0x2d, 0xdc, 0x46, 0x3b, 0xf0, 0x72, 0x2b, 0x29, 0xfb, 0x62, 0xf2, 0x72, 0x89,
		0xec, 0x8b, 0xa1, 0x91, 0xce, 0x11, 0x6c, 0x46, 0x23, 0x9d, 0x5e, 0x9c, 0xa0, 0x91, 0xce, 0xad,
		0x44, 0x9d, 0x46, 0x3a, 0x92, 0x74, 0x92, 0x74, 0x92, 0x74, 0x92, 0x74, 0x1a, 0xe9, 0x1e, 0xfd,
		0x8b, 0x46, 0xba, 0xe7, 0xc9, 0xa3, 0x91, 0x2e, 0x57, 0x53, 0xa1, 0x91, 0xae, 0x24, 0xc6, 0x42,
		0x23, 0x9d, 0xe8, 0xf3, 0xd2, 0x17, 0xe6, 0x74, 0x2a, 0xc6, 0x9d, 0x29, 0xe9, 0x18, 0xe9, 0x18,
		0xe9, 0x18, 0xe9, 0x58, 0x49, 0xee, 0x4c, 0x69, 0x73, 0x5a, 0xf5, 0x5e, 0x69, 0x73, 0x22, 0x64,
		0x13, 0xb2, 0x09, 0xd9, 0x84, 0x6c, 0x42, 0xf6, 0x1a, 0x84, 0x6c, 0xba, 0x76, 0x1c, 0xe8, 0xda,
		0x61, 0x9e, 0xa3, 0x6d, 0x93, 0x70, 0xc5, 0x14, 0xac, 0x8f, 0x74, 0x4c, 0x9a, 0x41, 0xfa, 0xf1,
		0x74, 0xf6, 0x30, 0x25, 0x1a, 0xea, 0x98, 0xf3, 0xe4, 0x35, 0x99, 0x89, 0x6b, 0x8c, 0x70, 0x64,
		0x84, 0x23, 0x23, 0x1c, 0x73, 0x8d, 0x17, 0xb9, 0x8f, 0x70, 0x0c, 0x46, 0xe9, 0x47, 0x7f, 0x18,
		0x24, 0xc9, 0xcc, 0x04, 0x84, 0xfa, 0x4f, 0x97, 0xc5, 0xc8, 0xf4, 0xa1, 0x6e, 0x30, 0xd0, 0x91,
		0x3e, 0x54, 0x07, 0x93, 0x66, 0xfa, 0x50, 0xe5, 0x92, 0xe2, 0xbb, 0x3a, 0xe7, 0x7c, 0x43, 0x8c,
		0x8c, 0x8f, 0x59, 0x82, 0x33, 0xbf, 0xae, 0x75, 0x96, 0xa9, 0x46, 0xee, 0x71, 0x93, 0xa8, 0xd1,
		0x33, 0x49, 0x37, 0x0e, 0x87, 0x22, 0xfa, 0xbd, 0xbb, 0x6f, 0x5f, 0x10, 0x42, 0xb0, 0x24, 0x58,
		0x12, 0x2c, 0x09, 0x96, 0x39, 0xda, 0x7b, 0x92, 0xc6, 0x61, 0x74, 0x4d, 0x88, 0x24, 0x44, 0x8a,
		0x84, 0x48, 0x13, 0x05, 0x97, 0x7d, 0x23, 0x98, 0x4d, 0xce, 0x05, 0xe4, 0xcd, 0x96, 0x12, 0xbc,
		0xc4, 0xae, 0x8c, 0x5d, 0x66, 0xbe, 0x9e, 0xec, 0x02, 0x64, 0x00, 0x32, 0x00, 0x19, 0x80, 0x0c,
		0x72, 0xb4, 0x77, 0xb9, 0x3b, 0x65, 0xa1, 0xbb, 0x64, 0xa0, 0x41, 0xa1, 0xa0, 0x41, 0x7f, 0xd0,
		0x0d, 0xfa, 0x12, 0x8d, 0x6f, 0x77, 0x2b, 0x90, 0xe7, 0x12, 0x88, 0x8e, 0x44, 0x47, 0xa2, 0x23,
		0xd1, 0x31, 0x47, 0x7b, 0x0f, 0x12, 0x3f, 0x1a, 0xdd, 0x5c, 0x8a, 0x30, 0x5f, 0xe6, 0x0e, 0x46,
		0x60, 0xaf, 0xba, 0x30, 0x4f, 0x55, 0x76, 0x27, 0xb9, 0x7c, 0xb7, 0xa6, 0x12, 0x1f, 0x55, 0x9d,
		0x5a, 0xa8, 0x47, 0x29, 0xfc, 0x2a, 0xbb, 0x2c, 0x5e, 0xcf, 0x04, 0xb6, 0xb7, 0xde, 0x6c, 0xbf,
		0xd9, 0xdd, 0xdb, 0x7a, 0xb3, 0x83, 0x2d, 0x38, 0x11, 0x23, 0xe4, 0x3e, 0xf5, 0x82, 0x34, 0x64,
		0x7d, 0xd3, 0x90, 0x79, 0xbf, 0xa2, 0x1f, 0xf4, 0x7a, 0xe3, 0xaf, 0x2f, 0x97, 0x8e, 0xdc, 0x93,
		0x44, 0x5a, 0x42, 0x5a, 0x42, 0x5a, 0x42, 0x5a, 0x92, 0xa3, 0xbd, 0x87, 0x43, 0x21, 0xef, 0xb2,
		0xe8, 0x61, 0x36, 0xdf, 0x08, 0x7c, 0xf6, 0x4c, 0x37, 0x85, 0xcb, 0x4b, 0xee, 0x34, 0x7f, 0xbb,
		0x2d, 0xa8, 0xfb, 0x7b, 0xef, 0xe0, 0x57, 0x41, 0x19, 0xcd, 0x20, 0x4d, 0x4d, 0x1c, 0x89, 0x8f,
		0x33, 0xaa, 0xfc, 0xfc, 0xc7, 0x86, 0xff, 0xe6, 0xe2, 0xef, 0x3f, 0x36, 0xfd, 0x37, 0x17, 0xd3,
		0xdf, 0x6e, 0x4e, 0xfe, 0xf3, 0xd7, 0xd6, 0xd7, 0xbf, 0xb7, 0xfe, 0xd8, 0xf0, 0xb7, 0x67, 0x7f,
		0xba, 0xb5, 0xf3, 0xc7, 0x86, 0xbf, 0x73, 0xf1, 0xcb, 0xcf, 0x7f, 0xfe, 0xf9, 0xf2, 0xa9, 0x3f,
		0xf3, 0xcb, 0x5f, 0xaf, 0xbf, 0xca, 0x31, 0xd2, 0x2e, 0x24, 0x5f, 0xc3, 0xe9, 0x59, 0xfd, 0x37,
		0xb5, 0x77, 0xf1, 0xbf, 0x3f, 0x6b, 0xbd, 0x8d, 0x5f, 0xfe, 0xab, 0xc2, 0x6e, 0x35, 0x3d, 0xb7,
		0xb4, 0x8b, 0x5b, 0x7a, 0xaa, 0x5b, 0x9a, 0x58, 0x75, 0xe0, 0x5f, 0x55, 0xfd, 0xb7, 0x17, 0x7f,
		0x6d, 0xfe, 0x6b, 0xfb, 0xeb, 0xfe, 0x2f, 0x7f, 0xed, 0x7d, 0xfd, 0xf6, 0x0f, 0xff, 0x5e, 0xf5,
		0xcf, 0x36, 0xff, 0xb5, 0xf7, 0x75, 0xff, 0x81, 0xbf, 0xd9, 0xfd, 0xba, 0xff, 0xc8, 0xcf, 0xd8,
		0xf9, 0xfa, 0xf3, 0xbd, 0x7f, 0x3a, 0xfe, 0xf3, 0xad, 0x87, 0x7e, 0x60, 0xfb, 0x81, 0x1f, 0x78,
		0xfd, 0xd0, 0x0f, 0xbc, 0x7e, 0xe0, 0x07, 0x1e, 0x7c, 0xa4, 0xad, 0x07, 0x7e, 0x60, 0xe7, 0xeb,
		0xdf, 0xf7, 0xfe, 0xfd, 0xcf, 0xab, 0xff, 0xe9, 0xee, 0xd7, 0x5f, 0xfe, 0x7e, 0xe8, 0xef, 0xf6,
		0xbe, 0xfe, 0xbd, 0xff, 0xcb, 0x2f, 0x38, 0xea, 0x47, 0x3b, 0x6a, 0xcc, 0x53, 0xdf, 0x3c, 0x8b,
		0x17, 0xb8, 0x28, 0x96, 0x51, 0x2c, 0x13, 0x28, 0x96, 0x0d, 0x07, 0x71, 0xaa, 0x50, 0x29, 0x9b,
		0x88, 0x29, 0x52, 0x6b, 0xdf, 0xe6, 0xde, 0x1b, 0x3a, 0xfb, 0x28, 0x12, 0x52, 0x24, 0xa4, 0x48,
		0xe8, 0x6e, 0x91, 0x70, 0xec, 0x55, 0xe5, 0xbb, 0x17, 0x76, 0xe9, 0x5e, 0xb8, 0x7b, 0x70, 0xba,
		0x17, 0x9e, 0x65, 0xb8, 0x74, 0x2f, 0x3c, 0xd1, 0x04, 0x76, 0x77, 0x76, 0x5e, 0xd3, 0xb8, 0xe0,
		0x4e, 0xd6, 0x44, 0x2e, 0x46, 0x2e, 0x96, 0x73, 0x2e, 0x26, 0x35, 0x37, 0xf4, 0x0e, 0x26, 0x88,
		0xcc, 0x09, 0x25, 0x03, 0x21, 0x03, 0x21, 0x03, 0xa1, 0x7b, 0x9a, 0xee, 0x69, 0xf2, 0x0f, 0x80,
		0x67, 0x59, 0xf3, 0x0f, 0xba, 0xa7, 0x49, 0x42, 0x48, 0x42, 0xd6, 0x24, 0x09, 0xb9, 0x8e, 0x07,
		0xa3, 0xa1, 0x70, 0x1e, 0x32, 0x95, 0x41, 0x2a, 0x42, 0x2a, 0x42, 0x2a, 0x42, 0x2a, 0x92, 0xa3,
		0xbd, 0x8f, 0xbd, 0x75, 0x6c, 0xae, 0x24, 0xdb, 0xa5, 0x25, 0x32, 0x91, 0xe6, 0x6c, 0x9e, 0xf7,
		0xcb, 0x97, 0xaf, 0xb2, 0xff, 0xbb, 0x73, 0x94, 0xc9, 0xc2, 0xef, 0x17, 0x7e, 0xeb, 0x4f, 0x46,
		0x66, 0x13, 0xaf, 0xd7, 0x3c, 0x5e, 0xa7, 0x12, 0x87, 0x6a, 0x39, 0x5c, 0x4f, 0x44, 0x10, 0xad,
		0x89, 0xd6, 0x44, 0x6b, 0xa2, 0x75, 0x01, 0x9c, 0xcb, 0x52, 0xbc, 0xde, 0x16, 0xf8, 0xec, 0x5a,
		0x34, 0xba, 0x91, 0x3b, 0x4c, 0xed, 0xc1, 0xd9, 0x74, 0x8e, 0xa3, 0xe8, 0xb6, 0xa1, 0x8d, 0xf1,
		0x1b, 0xa8, 0x37, 0xda, 0xb5, 0x56, 0xa3, 0x7a, 0x2c, 0x49, 0x26, 0xd8, 0x1c, 0x0b, 0xaa, 0xfd,
		0x36, 0x13, 0x54, 0xac, 0x9d, 0x4f, 0x83, 0x7a, 0x94, 0xca, 0xbe, 0x86, 0x4c, 0x31, 0xb9, 0xad,
		0xd3, 0x58, 0x29, 0x26, 0x7b, 0xd1, 0xfb, 0xde, 0x06, 0x3b, 0x9f, 0x80, 0xb6, 0xae, 0x43, 0xdb,
		0xd8, 0xdc, 0x0c, 0x6e, 0x8d, 0x3f, 0x8c, 0xc3, 0xdb, 0x20, 0x35, 0xa2, 0x37, 0xe3, 0xf7, 0x45,
		0x01, 0x75, 0x81, 0xba, 0x40, 0x5d, 0xa0, 0xae, 0xa4, 0x93, 0x99, 0x6d, 0x52, 0x93, 0x44, 0xbe,
		0x02, 0xb7, 0x75, 0x95, 0x7a, 0xcf, 0x44, 0x69, 0x98, 0x7e, 0x39, 0x08, 0x12, 0x23, 0xbf, 0xe4,
		0xb8, 0x55, 0x3b, 0x39, 0xfd, 0x50, 0xeb, 0x34, 0x5b, 0xf5, 0x0f, 0xd5, 0x76, 0xad, 0x53, 0x3d,
		0xeb, 0x9c, 0x36, 0xdb, 0xf5, 0xd3, 0x86, 0xd4, 0x91, 0x9b, 0x5c, 0x78, 0x26, 0xa2, 0xa4, 0x3f,
		0xe1, 0x2b, 0xdb, 0xb9, 0xe6, 0x16, 0x54, 0x36, 0x53, 0x62, 0xf5, 0xf8, 0xb8, 0x52, 0xc4, 0xab,
		0x6e, 0x1b, 0x0a, 0x6b, 0x1e, 0x57, 0x0f, 0xa5, 0x35, 0x26, 0xb3, 0xee, 0x1a, 0x14, 0x0e, 0x0a,
		0xcf, 0x11, 0x85, 0x0f, 0x46, 0xa9, 0xf1, 0xaf, 0xfa, 0xc1, 0xd0, 0xef, 0x05, 0x37, 0x43, 0x89,
		0x9a, 0xc4, 0xd2, 0xa2, 0xa7, 0x6f, 0x64, 0x15, 0x89, 0x2b, 0x28, 0xb0, 0xc3, 0x1e, 0xb6, 0x20,
		0x79, 0x08, 0x79, 0x08, 0x79, 0x48, 0x9e, 0xf6, 0xce, 0x1e, 0x00, 0x10, 0x83, 0x24, 0x62, 0x48,
		0x4c, 0xd4, 0x1b, 0x7f, 0xf7, 0x9b, 0x51, 0x14, 0xa6, 0x5f, 0xe4, 0xd0, 0xc2, 0x37, 0x72, 0x8a,
		0x84, 0x14, 0x1a, 0xa7, 0x8d, 0x1a, 0x40, 0x01, 0xa0, 0x00, 0x50, 0x00, 0x28, 0xb8, 0x0b, 0x14,
		0x32, 0xdf, 0xca, 0x05, 0xfd, 0x7d, 0xed, 0xeb, 0x5d, 0xd0, 0x9f, 0xb5, 0xab, 0x8d, 0xa3, 0x6a,
		0xeb, 0x48, 0xe5, 0x82, 0xbe, 0x71, 0x54, 0x13, 0x15, 0xb4, 0x35, 0x16, 0x74, 0x5c, 0x6d, 0xbd,
		0xab, 0x49, 0x4a, 0x79, 0x3d, 0x96, 0x72, 0x70, 0xda, 0x7e, 0x2f, 0x29, 0x64, 0x7b, 0x2c, 0x24,
		0xff, 0x48, 0x2e, 0xe4, 0x2f, 0x16, 0x2c, 0x57, 0xbc, 0xa1, 0x61, 0xa2, 0xf9, 0x7d, 0xef, 0xf5,
		0xbf, 0x64, 0x7b, 0x26, 0x26, 0xb6, 0x2a, 0xdb, 0x33, 0x31, 0xb5, 0xd4, 0x7d, 0x6f, 0x4b, 0x50,
		0xc6, 0xc4, 0x84, 0xf6, 0xbd, 0x6d, 0x41, 0x11, 0x99, 0x0b, 0xa1, 0xf5, 0x23, 0x1f, 0x85, 0x9a,
		0xcf, 0x69, 0x1c, 0xf8, 0xa3, 0x28, 0x49, 0x83, 0xcb, 0xbe, 0x50, 0x18, 0x4e, 0xd2, 0x20, 0x1d,
		0x25, 0x45, 0x1e, 0xa1, 0xdd, 0x33, 0xc3, 0xd8, 0x74, 0x83, 0xd4, 0xf4, 0x24, 0xfd, 0xb0, 0x30,
		0x78, 0x5e, 0x05, 0xa2, 0x67, 0xaf, 0x46, 0x98, 0x99, 0xa8, 0x05, 0xa6, 0x57, 0x82, 0xea, 0x85,
		0x77, 0x07, 0x23, 0x92, 0x72, 0x16, 0xe5, 0xac, 0xc5, 0x54, 0x48, 0xa9, 0xa6, 0x05, 0xeb, 0x82,
		0xca, 0x0e, 0x95, 0x1d, 0x2a, 0x3b, 0x54, 0x76, 0xa8, 0xec, 0x50, 0xd9, 0xa1, 0xb2, 0x43, 0x65,
		0x87, 0xca, 0x0e, 0x95, 0x1d, 0xd9, 0xe0, 0x7b, 0x1c, 0x26, 0x69, 0x35, 0x4d, 0x63, 0x99, 0x00,
		0x7c, 0x12, 0x46, 0xb5, 0xbe, 0x19, 0xc3, 0x1b, 0xa1, 0xd1, 0x46, 0x95, 0x93, 0xe0, 0xf3, 0x82,
		0x84, 0xcd, 0x5f, 0xb7, 0xb7, 0x77, 0xf7, 0xb6, 0xb7, 0x37, 0xf6, 0x5e, 0xef, 0x6d, 0xbc, 0xd9,
		0xd9, 0xd9, 0xdc, 0x15, 0x69, 0x09, 0x3f, 0x8d, 0x7b, 0x26, 0x36, 0xbd, 0x83, 0x2f, 0x95, 0x7d,
		0x2f, 0x1a, 0xf5, 0xfb, 0x92, 0x22, 0xce, 0x13, 0x13, 0x8b, 0xcc, 0x6a, 0x22, 0x2f, 0x97, 0xcf,
		0xcb, 0x5f, 0x38, 0xf4, 0xa2, 0xa4, 0x5e, 0x50, 0x25, 0xe9, 0x7e, 0x34, 0x37, 0xc1, 0x70, 0x36,
		0xd0, 0xe3, 0xd5, 0x60, 0x68, 0xa2, 0xee, 0x24, 0x3b, 0xf6, 0x23, 0x93, 0x7e, 0x1a, 0xc4, 0xff,
		0xe7, 0x87, 0x51, 0x92, 0x06, 0x51, 0xd7, 0xbc, 0xfa, 0xf6, 0x0f, 0x92, 0x7b, 0x7f, 0xf2, 0x6a,
		0x18, 0x0f, 0xd2, 0x41, 0x77, 0xd0, 0x4f, 0xb2, 0xdf, 0xbd, 0xba, 0xbc, 0x1e, 0xbe, 0x9a, 0xaf,
		0xd4, 0x48, 0xb2, 0xdf, 0xbd, 0x9a, 0x0a, 0xc9, 0x07, 0xb3, 0x3c, 0xff, 0x4d, 0xe5, 0xf0, 0x96,
		0x2a, 0xe6, 0xf2, 0x7a, 0xe8, 0xdf, 0x8c, 0xfa, 0x69, 0xf8, 0x71, 0x90, 0xdf, 0x40, 0xaa, 0x2c,
		0x0d, 0x5a, 0xfe, 0xf8, 0x9c, 0xac, 0x6a, 0x9e, 0xf9, 0xe4, 0xf4, 0x71, 0x79, 0xd7, 0x55, 0x24,
		0xea, 0x29, 0x72, 0x75, 0x14, 0xa9, 0xfa, 0x89, 0x78, 0xdd, 0x44, 0xbc, 0x5e, 0x22, 0x5a, 0x27,
		0x71, 0xcb, 0x4f, 0x1f, 0x85, 0xf9, 0xa2, 0xb1, 0x4a, 0x77, 0x7e, 0xa6, 0x84, 0xaa, 0xb8, 0xb3,
		0xcf, 0x97, 0x29, 0xdc, 0x6e, 0x52, 0xb8, 0xa5, 0x70, 0xeb, 0x90, 0x23, 0x52, 0x71, 0x48, 0xc5,
		0xc8, 0x1d, 0xf3, 0x76, 0x54, 0x77, 0x38, 0x28, 0x0a, 0x2e, 0xfb, 0xa6, 0x27, 0xcf, 0xb6, 0x9d,
		0x0b, 0x12, 0x32, 0x11, 0xc9, 0xa6, 0xea, 0x4c, 0x88, 0x00, 0x0d, 0x6b, 0xfe, 0x4b, 0x68, 0xe7,
		0xa8, 0xd0, 0x9d, 0x9c, 0xb8, 0x8b, 0xd7, 0x70, 0xf5, 0x7a, 0x2e, 0x5f, 0xcb, 0xf5, 0xab, 0x87,
		0x00, 0xf5, 0x50, 0xa0, 0x1a, 0x12, 0x64, 0x42, 0x83, 0x50, 0x88, 0xc8, 0x34, 0x23, 0x76, 0xc7,
		0x77, 0xef, 0xbc, 0xc8, 0xd1, 0xbd, 0xee, 0x21, 0xd3, 0xcd, 0x42, 0xbd, 0x02, 0xe1, 0xfa, 0x9c,
		0x7e, 0x9d, 0x4e, 0xee, 0x24, 0x08, 0xbc, 0x82, 0xca, 0xbc, 0xee, 0xe2, 0xa7, 0x69, 0x5f, 0x1e,
		0xd8, 0x2c, 0x49, 0x23, 0x8a, 0x13, 0xc5, 0x89, 0xe2, 0x44, 0xf1, 0x02, 0x45, 0xf1, 0x51, 0x18,
		0xa5, 0xbf, 0x2a, 0xc4, 0x70, 0xc1, 0xf5, 0x2e, 0xc2, 0xcb, 0x96, 0xe6, 0xbf, 0x64, 0x8f, 0xbb,
		0xa7, 0xb5, 0x7c, 0x29, 0x13, 0xa6, 0xb4, 0x84, 0x29, 0x93, 0xa7, 0xbd, 0x80, 0xe7, 0xce, 0xd4,
		0xb5, 0x16, 0xf1, 0x08, 0x7b, 0x85, 0x65, 0x53, 0x51, 0x58, 0xd2, 0x74, 0xcf, 0x54, 0xb6, 0x76,
		0x76, 0x30, 0x96, 0x42, 0x04, 0x26, 0xf9, 0x4f, 0xbf, 0x20, 0x27, 0x2b, 0x69, 0x4e, 0xb6, 0xd6,
		0xcd, 0x2f, 0xb6, 0x7a, 0x2c, 0x96, 0x5a, 0x06, 0x72, 0xed, 0xb8, 0xc8, 0xff, 0xbd, 0xe6, 0xca,
		0x82, 0x49, 0x83, 0x54, 0x92, 0xf7, 0x32, 0xf9, 0xf8, 0x82, 0x5d, 0x98, 0x6e, 0x71, 0x61, 0xaa,
		0x97, 0x6f, 0x73, 0x61, 0x5a, 0xc2, 0x28, 0xc1, 0x85, 0xe9, 0xf7, 0x14, 0xc4, 0x85, 0xe9, 0x3f,
		0xb9, 0x76, 0x4a, 0xad, 0x36, 0x5d, 0xbe, 0x96, 0xeb, 0x57, 0x0f, 0x01, 0xea, 0xa1, 0x40, 0x35,
		0x24, 0xc8, 0xe6, 0x9c, 0x5c, 0x98, 0x3e, 0x01, 0x99, 0x6e, 0x72, 0xff, 0xc7, 0xfd, 0x1f, 0x41,
		0x89, 0xa0, 0x44, 0x50, 0x22, 0x28, 0xfd, 0xe3, 0x79, 0xe1, 0xfe, 0xef, 0xb1, 0xbf, 0xb8, 0xff,
		0x7b, 0x9e, 0x3c, 0xee, 0xff, 0x72, 0x35, 0x15, 0xee, 0xff, 0x4a, 0x62, 0x2c, 0xdc, 0xff, 0xc9,
		0xa6, 0x18, 0x5c, 0x67, 0x59, 0xbf, 0xce, 0x9a, 0xde, 0xc2, 0xc0, 0x1d, 0xb7, 0x67, 0x10, 0x6e,
		0x18, 0x42, 0x25, 0xd7, 0x8b, 0xc3, 0x78, 0xd4, 0x4d, 0xa3, 0x19, 0x8c, 0x6d, 0x4c, 0x9f, 0xb0,
		0x3e, 0x7b, 0xc0, 0x4e, 0x73, 0xf6, 0x58, 0x9d, 0x83, 0xeb, 0x61, 0xa7, 0x31, 0x7b, 0x98, 0x4e,
		0xed, 0xf2, 0x7a, 0x78, 0x32, 0x7f, 0x96, 0x32, 0xd1, 0xd9, 0x27, 0x97, 0x05, 0xfe, 0xe5, 0x55,
		0x4f, 0x80, 0xcb, 0x7e, 0xf7, 0xd9, 0x10, 0xd9, 0x73, 0x29, 0x4f, 0x5c, 0xf5, 0x20, 0xb2, 0xdb,
		0x20, 0xb2, 0x5f, 0xf5, 0x20, 0xb2, 0x3f, 0xf2, 0x03, 0x21, 0xb2, 0x0b, 0x3a, 0x18, 0x49, 0x47,
		0x23, 0xef, 0x70, 0xa4, 0x1d, 0x8f, 0x9a, 0x03, 0x52, 0x73, 0x44, 0x2a, 0x0e, 0xa9, 0x18, 0xe9,
		0x0e, 0x7d, 0x19, 0x8f, 0x73, 0x61, 0x5c, 0xf5, 0xd8, 0x74, 0x6d, 0x5a, 0x2e, 0x4e, 0xdd, 0xd5,
		0xa9, 0xbb, 0x3c, 0x55, 0xd7, 0x27, 0x5b, 0xf3, 0xa2, 0xff, 0xe0, 0x09, 0x08, 0x0c, 0xc2, 0xf6,
		0x2a, 0x39, 0x90, 0x03, 0x84, 0xe1, 0x45, 0x69, 0xab, 0xa9, 0x59, 0x0d, 0x06, 0x66, 0x40, 0x5e,
		0xde, 0x10, 0x66, 0x00, 0x19, 0x28, 0x19, 0x28, 0x19, 0x28, 0x19, 0x28, 0x19, 0x28, 0x19, 0x28,
		0x19, 0x28, 0x19, 0x28, 0x19, 0x28, 0x09, 0xd5, 0xfa, 0x25, 0x54, 0xf4, 0xa6, 0xd8, 0xb6, 0x06,
		0x07, 0xac, 0xc0, 0x7a, 0x63, 0xca, 0xe4, 0x49, 0x0e, 0xf2, 0x8a, 0x49, 0x8e, 0x74, 0xa5, 0xc4,
		0xf1, 0x20, 0xf6, 0x3f, 0x06, 0x51, 0xaf, 0x9f, 0xe7, 0xda, 0xb3, 0x3b, 0x20, 0xbc, 0xfc, 0xf9,
		0x74, 0xa7, 0xe4, 0x82, 0x67, 0x59, 0xb3, 0xe0, 0xb1, 0x66, 0x21, 0xd7, 0xb0, 0x41, 0x77, 0x8a,
		0x47, 0x77, 0x8a, 0x92, 0xc3, 0xa1, 0x36, 0xe8, 0xa4, 0x43, 0x5a, 0xf3, 0xda, 0x60, 0x1a, 0x9b,
		0x20, 0xf5, 0x83, 0xc4, 0xff, 0x14, 0xa6, 0x1f, 0x7b, 0x71, 0xf0, 0x49, 0xbe, 0x4a, 0x78, 0x5f,
		0x24, 0x93, 0x44, 0x56, 0xfe, 0x62, 0x92, 0x88, 0xba, 0xfb, 0xd7, 0x0b, 0x03, 0x5a, 0xe1, 0x40,
		0x3d, 0x2c, 0xa8, 0x87, 0x07, 0xd5, 0x30, 0x21, 0x57, 0x6e, 0xf3, 0xa8, 0xa3, 0x3e, 0x0d, 0xad,
		0x16, 0xab, 0x93, 0xc7, 0x7c, 0x4e, 0xe3, 0xc0, 0x1f, 0x45, 0x49, 0x1a, 0x5c, 0xf6, 0x85, 0x5f,
		0x46, 0x6c, 0xae, 0x4c, 0x6c, 0xa2, 0x6e, 0x29, 0x98, 0xe7, 0x73, 0xcb, 0xea, 0xc5, 0xc1, 0x55,
		0xea, 0x87, 0x26, 0xbd, 0xf2, 0xc3, 0x5e, 0xec, 0x2f, 0x97, 0x58, 0xfc, 0xcd, 0xdd, 0x8a, 0x02,
		0xb5, 0x59, 0xc9, 0x57, 0xaf, 0xf2, 0xd9, 0x77, 0xef, 0x54, 0x89, 0x6e, 0xac, 0xed, 0xbe, 0x57,
		0xba, 0xf1, 0xef, 0xbe, 0x74, 0x48, 0xd0, 0x0f, 0x81, 0x47, 0xfa, 0x1c, 0x57, 0xc8, 0xa1, 0xcf,
		0x51, 0x38, 0x51, 0x2d, 0xed, 0xb5, 0xdc, 0x92, 0xe7, 0xa1, 0xd7, 0x31, 0xaf, 0xa8, 0x4e, 0xaf,
		0x23, 0xf5, 0x4c, 0x47, 0x12, 0x57, 0xea, 0x99, 0x7a, 0x61, 0x42, 0xae, 0xd7, 0x31, 0x8e, 0x07,
		0x91, 0x19, 0x8c, 0x12, 0x7f, 0x34, 0xec, 0x05, 0xa9, 0xf1, 0x6f, 0x4c, 0x92, 0x04, 0xd7, 0x26,
		0x51, 0xe8, 0x7e, 0x7c, 0x50, 0x34, 0x75, 0x3c, 0xea, 0x78, 0xd4, 0xf1, 0xa8, 0xe3, 0x15, 0xa8,
		0x8e, 0x37, 0x0a, 0xa3, 0xf4, 0xf5, 0x96, 0x42, 0x19, 0x6f, 0x8f, 0xe9, 0x8b, 0xdf, 0xff, 0x22,
		0x4c, 0x5f, 0x14, 0xb1, 0x75, 0xa6, 0x2f, 0xe6, 0x64, 0x2a, 0xdb, 0x5b, 0x6f, 0xb6, 0xdf, 0xec,
		0xee, 0x6d, 0xbd, 0x61, 0x08, 0x63, 0x31, 0x02, 0x94, 0xfc, 0xa7, 0x5f, 0xac, 0xf1, 0x9c, 0x77,
		0x9a, 0x2a, 0x9e, 0x29, 0x84, 0xa6, 0x0a, 0x92, 0x31, 0x92, 0x31, 0x92, 0x31, 0x92, 0x31, 0x9a,
		0x2a, 0xfe, 0xe9, 0xa9, 0x69, 0xaa, 0x78, 0xa6, 0x65, 0xd1, 0x54, 0x41, 0x53, 0x05, 0x4d, 0x15,
		0xe5, 0x4b, 0x6a, 0xe8, 0x11, 0xb0, 0xdf, 0x23, 0x00, 0x7d, 0xd7, 0xb6, 0x45, 0x38, 0x62, 0x09,
		0xd6, 0x29, 0xbc, 0xe3, 0xa7, 0x79, 0x3f, 0x7f, 0x98, 0x12, 0xd1, 0x78, 0xaf, 0xe3, 0xa0, 0x6b,
		0xae, 0x46, 0x7d, 0x3f, 0x36, 0x49, 0x1a, 0xc4, 0x69, 0xfe, 0x44, 0xde, 0x7b, 0x12, 0xa0, 0xf2,
		0xba, 0x97, 0xfd, 0x43, 0xe5, 0xb5, 0x92, 0xbd, 0x43, 0xe5, 0x7d, 0xd6, 0x31, 0x80, 0xca, 0x4b,
		0xeb, 0x9b, 0x2b, 0xe5, 0x45, 0x5a, 0xdf, 0xf4, 0xb2, 0x1f, 0xc6, 0xfc, 0x3d, 0xce, 0x85, 0x71,
		0x93, 0x62, 0xd3, 0xb5, 0x69, 0x57, 0xe7, 0xb8, 0x49, 0x29, 0x40, 0x09, 0x8c, 0x9b, 0x94, 0x27,
		0x20, 0x30, 0x06, 0xcd, 0xaf, 0x92, 0x53, 0x06, 0x02, 0x96, 0x00, 0x90, 0xfc, 0x68, 0xfa, 0x43,
		0x13, 0xfb, 0x83, 0xa8, 0xff, 0x45, 0x3e, 0x7e, 0x2f, 0x0a, 0x23, 0x86, 0x13, 0xc3, 0x89, 0xe1,
		0xc4, 0x70, 0x62, 0x38, 0x31, 0x9c, 0x18, 0xfe, 0x2c, 0xb5, 0xcc, 0xae, 0x08, 0xfc, 0x34, 0xbc,
		0x31, 0xf2, 0x41, 0x7c, 0x49, 0x1a, 0x51, 0x9c, 0x28, 0x4e, 0x14, 0x27, 0x8a, 0x17, 0x28, 0x8a,
		0x8f, 0xc2, 0x28, 0x15, 0xed, 0x2f, 0x9b, 0x7b, 0xaf, 0x5d, 0x08, 0x66, 0xdf, 0xff, 0x22, 0x10,
		0xcc, 0x44, 0x6c, 0x1d, 0x82, 0x59, 0x4e, 0xa6, 0xb2, 0xbd, 0xf1, 0x66, 0x17, 0x6b, 0x29, 0x44,
		0x68, 0x92, 0xff, 0x74, 0x46, 0x5b, 0x91, 0x95, 0x3d, 0x5a, 0x2d, 0x49, 0x1a, 0xf4, 0x8d, 0x1f,
		0x0f, 0x46, 0xa9, 0x49, 0x94, 0x52, 0xb3, 0xfb, 0x22, 0xc9, 0xcf, 0xc8, 0xcf, 0xc8, 0xcf, 0xc8,
		0xcf, 0xc8, 0xcf, 0xc8, 0xcf, 0xc8, 0xcf, 0xc8, 0xcf, 0x4a, 0x97, 0x9f, 0xed, 0xee, 0xec, 0xbc,
		0x66, 0xf6, 0x07, 0x09, 0x1a, 0x09, 0x5a, 0xb9, 0x13, 0x34, 0x78, 0x85, 0x16, 0xd8, 0x64, 0xdf,
		0x92, 0x90, 0x98, 0x3e, 0x9c, 0x63, 0xa6, 0xce, 0xf4, 0x61, 0x28, 0x18, 0x2e, 0x64, 0xdb, 0x50,
		0x30, 0xf4, 0x02, 0x05, 0x14, 0x8c, 0xc7, 0xb9, 0x30, 0x0a, 0x8b, 0x36, 0x5d, 0x9b, 0x96, 0x8b,
		0x53, 0x77, 0x75, 0xea, 0x2e, 0x4f, 0xd5, 0xf5, 0xc9, 0xa6, 0x57, 0xb4, 0x6f, 0x3e, 0x01, 0x81,
		0x6d, 0xc2, 0x28, 0x80, 0x51, 0x40, 0x48, 0x22, 0x24, 0x11, 0x92, 0x08, 0x49, 0x84, 0x24, 0xdb,
		0x21, 0xa9, 0x3f, 0xe8, 0x06, 0x59, 0x11, 0x2b, 0x8c, 0xae, 0xe5, 0xe3, 0xd2, 0x3d, 0x89, 0x04,
		0x27, 0x82, 0x13, 0xc1, 0x89, 0xe0, 0x44, 0x70, 0x22, 0x38, 0x2d, 0xeb, 0xe0, 0x66, 0xd0, 0x53,
		0x68, 0x0d, 0x9c, 0x48, 0x21, 0x08, 0x11, 0x84, 0x08, 0x42, 0x04, 0xa1, 0x02, 0x05, 0x21, 0x13,
		0x8d, 0x6e, 0x4c, 0x3c, 0xbd, 0x5b, 0x57, 0x08, 0x44, 0xdb, 0x82, 0x32, 0x6a, 0xd1, 0xe8, 0x46,
		0xfe, 0x58, 0xb6, 0x07, 0x67, 0x69, 0x2c, 0x99, 0xe3, 0x2c, 0x49, 0xdb, 0x18, 0xbf, 0xa3, 0xf7,
		0xb5, 0xe3, 0x66, 0xad, 0xd5, 0x39, 0x6d, 0x1c, 0xff, 0xae, 0x31, 0xb6, 0x7d, 0x73, 0x2c, 0xf3,
		0xa0, 0x7e, 0x5c, 0x6d, 0xd7, 0x5a, 0xd5, 0x63, 0x0d, 0x89, 0x5b, 0x63, 0x89, 0xad, 0xda, 0xc9,
		0x69, 0xbb, 0xd6, 0x99, 0x7e, 0x59, 0xd9, 0x49, 0xe5, 0xc2, 0xdd, 0x7a, 0x95, 0xf6, 0xa0, 0x1e,
		0xa5, 0x3a, 0x06, 0x72, 0xf7, 0x9e, 0x72, 0x6f, 0x4c, 0x58, 0x1d, 0x24, 0x16, 0x6c, 0x51, 0xa5,
		0x41, 0xef, 0x1b, 0xbb, 0xd8, 0xf7, 0xb6, 0x0a, 0xda, 0x3b, 0xb7, 0xce, 0x5c, 0x9d, 0xa1, 0x31,
		0xb1, 0xaf, 0x3b, 0x46, 0xe1, 0xbe, 0x48, 0xd0, 0x39, 0xe8, 0x1c, 0x74, 0x0e, 0x3a, 0x2f, 0x10,
		0x3a, 0x87, 0xab, 0xf3, 0xe8, 0x5f, 0x70, 0x75, 0x9e, 0x27, 0x0f, 0xae, 0x4e, 0xae, 0xa6, 0xc2,
		0x2c, 0x85, 0xb2, 0x58, 0x0b, 0x54, 0x9d, 0x42, 0xa7, 0x1b, 0x2a, 0xd7, 0xd1, 0xdf, 0x0a, 0x24,
		0xd5, 0x20, 0xd5, 0x20, 0xd5, 0x20, 0xd5, 0x28, 0x50, 0xaa, 0xc1, 0x6d, 0xb4, 0x4a, 0x68, 0x62,
		0x96, 0x28, 0x41, 0x89, 0xa0, 0x44, 0x50, 0x22, 0x28, 0x3d, 0xe6, 0xbc, 0x50, 0xff, 0x7a, 0xf4,
		0x2f, 0xea, 0x5f, 0x54, 0x34, 0xac, 0xba, 0x85, 0x65, 0x53, 0xa1, 0xfe, 0x55, 0x16, 0x6b, 0xa1,
		0xfe, 0x55, 0xb8, 0x24, 0x83, 0xd1, 0x98, 0xa4, 0x1b, 0xa4, 0x1b, 0xa4, 0x1b, 0xa4, 0x1b, 0xa4,
		0x1b, 0xa4, 0x1b, 0xa4, 0x1b, 0xa4, 0x1b, 0x12, 0xa6, 0xc2, 0x68, 0x4c, 0xf2, 0x8d, 0x02, 0xe6,
		0x1b, 0x4c, 0x7a, 0x74, 0x61, 0xd2, 0xe3, 0x74, 0x40, 0xa1, 0xab, 0x83, 0x1e, 0x5f, 0x38, 0x64,
		0x1b, 0x52, 0x36, 0xe1, 0x8c, 0x2d, 0x54, 0x72, 0x1d, 0xab, 0x19, 0x8f, 0xba, 0x69, 0x34, 0xc3,
		0xb3, 0x8d, 0xe9, 0x43, 0xd6, 0x67, 0xcf, 0xd8, 0x69, 0xce, 0x9e, 0xac, 0x73, 0x70, 0x3d, 0xec,
		0x34, 0x66, 0xcf, 0xd3, 0x79, 0x37, 0x7b, 0x9e, 0xd6, 0xec, 0x71, 0x5e, 0xb8, 0x61, 0x42, 0x39,
		0x98, 0x4f, 0xa5, 0x3f, 0xb8, 0xbe, 0x0e, 0xa3, 0x6b, 0x7f, 0x30, 0x1c, 0x9b, 0x4f, 0x92, 0x9b,
		0xfd, 0x2c, 0xcc, 0xa1, 0x58, 0x16, 0x90, 0x93, 0xc9, 0xe7, 0x3b, 0x69, 0x34, 0xf7, 0xa2, 0x86,
		0x44, 0x11, 0x43, 0xae, 0x68, 0x21, 0x55, 0xa4, 0x10, 0x2f, 0x4a, 0x88, 0x17, 0x21, 0x44, 0x8b,
		0x0e, 0x6e, 0x05, 0x91, 0xbc, 0x27, 0x83, 0x56, 0xba, 0xf3, 0x33, 0x25, 0x34, 0xc1, 0x78, 0xf6,
		0xf9, 0x05, 0x1b, 0x61, 0xbc, 0xc1, 0x08, 0x63, 0x79, 0xc7, 0xa3, 0xe6, 0x80, 0xd4, 0x1c, 0x91,
		0x8a, 0x43, 0x2a, 0x46, 0x06, 0x24, 0x36, 0xc2, 0xb8, 0x3f, 0x18, 0x03, 0xdb, 0x29, 0xe6, 0xf3,
		0x27, 0xe9, 0x87, 0xdf, 0xfd, 0x18, 0x44, 0xd7, 0x26, 0xd1, 0x18, 0xd7, 0xf5, 0xa0, 0x6c, 0x21,
		0x43, 0x3a, 0x32, 0x57, 0xc1, 0xa8, 0x9f, 0x8a, 0xd6, 0x41, 0x2b, 0xe3, 0x83, 0x20, 0x53, 0xa5,
		0xbf, 0xe0, 0xf6, 0x4c, 0x3b, 0x1e, 0xe8, 0xc5, 0x05, 0xad, 0xf8, 0xa0, 0x1e, 0x27, 0xd4, 0xe3,
		0x85, 0x6a, 0xdc, 0x90, 0xad, 0x21, 0xd2, 0x41, 0xfe, 0x04, 0xf8, 0xba, 0xc9, 0x1e, 0xa2, 0x15,
		0x72, 0xd8, 0x43, 0x24, 0x8c, 0xcd, 0xca, 0x5a, 0x9d, 0xfe, 0xa6, 0x8a, 0xc5, 0x1a, 0xa2, 0xbc,
		0x5c, 0x22, 0x6b, 0x88, 0xc8, 0xe1, 0xc9, 0xe1, 0xc9, 0xe1, 0xc9, 0xe1, 0xc9, 0xe1, 0xc9, 0xe1,
		0xc9, 0xe1, 0xc9, 0xe1, 0xc9, 0xe1, 0xc9, 0xe1, 0x0b, 0xc6, 0x02, 0x27, 0x25, 0x75, 0x20, 0x25,
		0xa5, 0x5f, 0xca, 0xb6, 0x49, 0xb8, 0x62, 0x0a, 0xb6, 0xdb, 0xa5, 0x8e, 0xa7, 0x8f, 0x73, 0x3a,
		0x7b, 0x9a, 0x12, 0x75, 0x4b, 0x65, 0xe8, 0x3e, 0xe8, 0xf5, 0x62, 0x93, 0x08, 0xb4, 0x4b, 0xdd,
		0x93, 0x90, 0x6f, 0xbf, 0xd4, 0x06, 0xfd, 0x52, 0x0e, 0x43, 0x5a, 0xfa, 0xa5, 0x0a, 0x14, 0x44,
		0x72, 0x87, 0x9c, 0x77, 0x75, 0x04, 0x13, 0x5c, 0xc5, 0xe6, 0x2a, 0x4f, 0x83, 0x9d, 0x43, 0xca,
		0xbd, 0x1c, 0x3f, 0xb3, 0x39, 0x8b, 0x73, 0x2f, 0x5f, 0xce, 0xca, 0xe1, 0xaf, 0xee, 0x39, 0xaf,
		0x12, 0xb9, 0xfe, 0x09, 0x71, 0xd7, 0x8f, 0xcd, 0x55, 0xdf, 0x74, 0xd3, 0x41, 0x9c, 0xbf, 0xe7,
		0xff, 0x56, 0x00, 0x8d, 0xb2, 0x38, 0x7e, 0x1c, 0xbf, 0x83, 0x8e, 0x9f, 0x46, 0x59, 0x8f, 0x46,
		0x59, 0x25, 0x87, 0x23, 0xed, 0x78, 0xd4, 0x1c, 0x90, 0x9a, 0x23, 0x52, 0x71, 0x48, 0xc5, 0xa8,
		0x7c, 0x89, 0x5d, 0xb2, 0x7d, 0x03, 0x55, 0xfc, 0x6e, 0x3f, 0x34, 0x82, 0xeb, 0x7c, 0x1e, 0x82,
		0x48, 0x73, 0xb9, 0x45, 0xbe, 0x5c, 0x9b, 0x50, 0x86, 0xb9, 0x5d, 0x53, 0x08, 0x00, 0x1a, 0x81,
		0x40, 0x2f, 0x20, 0x68, 0x05, 0x06, 0xf5, 0x00, 0xa1, 0x1e, 0x28, 0x54, 0x03, 0x86, 0x4c, 0xe0,
		0x10, 0x0a, 0x20, 0x72, 0xa5, 0x8e, 0x07, 0xcf, 0x0b, 0x1d, 0xb2, 0x0f, 0x19, 0x27, 0x1d, 0xb2,
		0x16, 0x5f, 0xc1, 0x0a, 0xe4, 0x31, 0x4a, 0x52, 0x13, 0xfb, 0x61, 0xcf, 0x06, 0xea, 0xc9, 0x64,
		0x13, 0xe1, 0x89, 0xf0, 0x44, 0x78, 0x22, 0x7c, 0x81, 0x22, 0x7c, 0xbc, 0xe8, 0xc0, 0xfc, 0x74,
		0x2c, 0x57, 0x21, 0xd8, 0xbf, 0x11, 0x94, 0x31, 0xd3, 0x5d, 0xe1, 0xa7, 0xc9, 0x2d, 0xce, 0xf8,
		0x7b, 0xbd, 0xa5, 0xb1, 0xd5, 0x78, 0xf6, 0x76, 0xf6, 0x34, 0x76, 0xe4, 0xaa, 0xcc, 0xfc, 0xd3,
		0x7b, 0x5b, 0xd9, 0x17, 0xd3, 0x9c, 0x01, 0x98, 0x09, 0x55, 0x9e, 0x05, 0x98, 0xc9, 0xb5, 0x35,
		0xe4, 0xed, 0xee, 0x8c, 0x68, 0x0f, 0x7b, 0x13, 0x76, 0xfc, 0xab, 0x4d, 0x4a, 0x71, 0x56, 0xe0,
		0x3d, 0x93, 0xda, 0xde, 0x7a, 0xb3, 0xfd, 0x66, 0x77, 0x6f, 0xeb, 0xcd, 0x0e, 0xb6, 0xa5, 0x65,
		0x5b, 0x2f, 0xca, 0x21, 0xe5, 0xa2, 0xc8, 0x2b, 0xf1, 0x15, 0x03, 0x7c, 0x38, 0xbc, 0xdd, 0xce,
		0xb9, 0xbf, 0xec, 0x51, 0x20, 0xec, 0x57, 0x05, 0x59, 0xcd, 0x20, 0x4d, 0x4d, 0x1c, 0xa9, 0x45,
		0xfa, 0xca, 0xcf, 0x7f, 0x6c, 0xf8, 0x6f, 0x2e, 0xfe, 0xfe, 0x63, 0xd3, 0x7f, 0x73, 0x31, 0xfd,
		0xed, 0xe6, 0xe4, 0x3f, 0x7f, 0x6d, 0x7d, 0xfd, 0x7b, 0xeb, 0x8f, 0x0d, 0x7f, 0x7b, 0xf6, 0xa7,
		0x5b, 0x3b, 0x7f, 0x6c, 0xf8, 0x3b, 0x17, 0xbf, 0xfc, 0xfc, 0xe7, 0x9f, 0x2f, 0x9f, 0xfa, 0x33,
		0xbf, 0xfc, 0xf5, 0xfa, 0x6b, 0x45, 0xfe, 0xf8, 0x68, 0xbc, 0x9e, 0xd3, 0xb3, 0xfa, 0x6f, 0xea,
		0xef, 0xe8, 0x7f, 0x7f, 0xd6, 0x7a, 0x4b, 0xbf, 0xfc, 0x57, 0xa5, 0xe8, 0x6e, 0xae, 0x68, 0xf3,
		0x5f, 0x29, 0xb8, 0xda, 0x7e, 0xc1, 0xf0, 0x3f, 0x6c, 0x34, 0xfd, 0x7f, 0x53, 0x16, 0x66, 0x24,
		0x41, 0x5e, 0xf0, 0x88, 0x91, 0x04, 0x74, 0x4b, 0x7d, 0xef, 0x6d, 0xd2, 0x2d, 0x55, 0xba, 0x38,
		0x41, 0xb7, 0xd4, 0xf3, 0xd4, 0x47, 0xb7, 0xd4, 0x3f, 0x39, 0x7e, 0xee, 0x52, 0x6d, 0x06, 0x04,
		0xad, 0xc0, 0xa0, 0x1e, 0x20, 0xd4, 0x03, 0x85, 0x6a, 0xc0, 0x90, 0xcd, 0x49, 0xe9, 0x96, 0x7a,
		0x02, 0x6e, 0xdd, 0xa4, 0xf9, 0x87, 0xe6, 0x1f, 0x02, 0x16, 0x01, 0x8b, 0x80, 0x45, 0xc0, 0xfa,
		0x71, 0x6f, 0x46, 0xf3, 0xcf, 0x8f, 0xfc, 0xa2, 0xf9, 0xe7, 0x79, 0xa2, 0x68, 0xfe, 0xc9, 0x53,
		0x28, 0xcd, 0x3f, 0x34, 0xff, 0x08, 0x99, 0x14, 0xcd, 0x3f, 0x34, 0xff, 0xfc, 0xe0, 0x2f, 0x9a,
		0x7f, 0x1e, 0x17, 0xe0, 0x69, 0xfe, 0xc9, 0x51, 0x20, 0xcd, 0x3f, 0x4f, 0x7a, 0x3d, 0x34, 0xff,
		0xb8, 0xee, 0xe6, 0x58, 0xfe, 0x4c, 0x2f, 0x8b, 0x03, 0xbd, 0x2c, 0xcc, 0x32, 0xb5, 0x6d, 0x12,
		0xae, 0x98, 0x82, 0xed, 0x59, 0xa6, 0xad, 0xf1, 0xe3, 0xb4, 0xb2, 0xa7, 0x29, 0xd1, 0x40, 0xbb,
		0x7c, 0xbb, 0xa8, 0x44, 0xba, 0xa7, 0xc4, 0x86, 0xd7, 0x6d, 0x31, 0xbc, 0x2e, 0x4f, 0x88, 0xcf,
		0xf0, 0xba, 0xc2, 0x84, 0x8b, 0xdc, 0x87, 0xd7, 0x05, 0xa3, 0xf4, 0xa3, 0x3f, 0x0c, 0x92, 0x64,
		0x66, 0x02, 0x42, 0x4d, 0x99, 0xcb, 0x62, 0x64, 0x9a, 0x33, 0x37, 0x18, 0x65, 0x47, 0x73, 0xa6,
		0x43, 0x6e, 0x49, 0xc5, 0x3d, 0x15, 0x23, 0xf1, 0x11, 0xbb, 0xa2, 0x5c, 0x6a, 0xb4, 0x08, 0xa3,
		0x6b, 0x29, 0x1f, 0xb3, 0x5c, 0x0b, 0x5b, 0x83, 0x26, 0xfd, 0x9e, 0x49, 0xba, 0x71, 0x38, 0x14,
		0xc9, 0x55, 0xb3, 0x97, 0xb6, 0x28, 0x84, 0x98, 0x40, 0x4c, 0x20, 0x26, 0x10, 0x13, 0x72, 0xcd,
		0x65, 0xe3, 0x30, 0xba, 0x26, 0x12, 0x3c, 0x33, 0x12, 0x7c, 0x89, 0x82, 0x9b, 0xb0, 0x1b, 0xf4,
		0xfb, 0x5f, 0xfc, 0x69, 0x09, 0x69, 0x14, 0x1b, 0xc1, 0x54, 0xe1, 0x01, 0x79, 0x79, 0xd3, 0x45,
		0x04, 0xf9, 0x0e, 0x12, 0x3c, 0x87, 0x0b, 0xe2, 0x23, 0xf1, 0x91, 0xf8, 0x48, 0x7c, 0xcc, 0xd1,
		0xde, 0xe5, 0xf8, 0x07, 0x42, 0xbc, 0x03, 0x37, 0x03, 0xa4, 0x89, 0x82, 0xcb, 0xbe, 0x64, 0x44,
		0x9c, 0x0b, 0x28, 0x52, 0x08, 0xcc, 0x7f, 0xeb, 0x30, 0x11, 0x90, 0x08, 0x48, 0x04, 0x24, 0x02,
		0x12, 0x01, 0xdd, 0x8b, 0x80, 0x49, 0x1a, 0x5c, 0xf6, 0xc3, 0xe4, 0xa3, 0xe9, 0xf9, 0x69, 0x1c,
		0x44, 0x49, 0x38, 0x5d, 0x1d, 0x2a, 0x17, 0x11, 0x1f, 0x10, 0x48, 0x88, 0x20, 0x44, 0x10, 0x22,
		0x08, 0x11, 0x39, 0xda, 0x7b, 0x77, 0x30, 0x8a, 0x52, 0x13, 0xef, 0x6e, 0x0b, 0x06, 0x09, 0x81,
		0xe6, 0x6a, 0x61, 0xd2, 0x94, 0x20, 0xd9, 0x50, 0x83, 0x14, 0xa5, 0x45, 0x82, 0x52, 0x27, 0xa6,
		0xe8, 0x11, 0x51, 0x04, 0x29, 0x15, 0x2a, 0x24, 0xa6, 0xcc, 0x04, 0x36, 0x7f, 0xdd, 0xde, 0xde,
		0xdd, 0xdb, 0xde, 0xde, 0xd8, 0x7b, 0xbd, 0xb7, 0xf1, 0x66, 0x67, 0x67, 0x73, 0x77, 0x73, 0x07,
		0xab, 0x70, 0x22, 0x5a, 0xc8, 0x7d, 0xea, 0x85, 0xd3, 0x51, 0xcd, 0x7c, 0x4e, 0xe3, 0xc0, 0x1f,
		0x45, 0x13, 0x94, 0x2b, 0x14, 0xdf, 0x62, 0x73, 0x65, 0x62, 0x13, 0x75, 0x0b, 0x19, 0x23, 0xe6,
		0xc1, 0xb9, 0xf5, 0xf6, 0xd0, 0xdb, 0xde, 0xda, 0x7b, 0xed, 0xf9, 0xde, 0x91, 0xb9, 0x0a, 0xa3,
		0x69, 0x1a, 0xe0, 0x0d, 0xae, 0xbc, 0x93, 0x20, 0x0a, 0xae, 0x4d, 0xcf, 0x3b, 0xbd, 0xfc, 0x7f,
		0x4c, 0x37, 0x4d, 0xbc, 0xab, 0x41, 0xec, 0x1d, 0xbc, 0x6b, 0xfa, 0xdb, 0x25, 0x9b, 0xf6, 0x70,
		0xf7, 0x1a, 0xcb, 0x3c, 0xf0, 0xe1, 0x47, 0xde, 0x33, 0x3e, 0x6e, 0x0d, 0x2a, 0x0f, 0xfd, 0x20,
		0x49, 0xfd, 0x85, 0x6a, 0x80, 0x5c, 0xc9, 0xe1, 0x9e, 0x24, 0x6a, 0x0d, 0xd4, 0x1a, 0xa8, 0x35,
		0x50, 0x6b, 0xc8, 0xd1, 0xde, 0xd3, 0xf0, 0xc6, 0xa4, 0x61, 0xf7, 0xff, 0x92, 0xc2, 0x55, 0x1b,
		0xce, 0xa3, 0x69, 0x22, 0x53, 0x89, 0x82, 0x68, 0x90, 0x98, 0xee, 0x20, 0xea, 0x49, 0xd0, 0xd3,
		0xa9, 0x6a, 0x50, 0xd5, 0xa0, 0xaa, 0x41, 0x55, 0x83, 0xaa, 0xc6, 0x7a, 0x23, 0xfe, 0x29, 0xa6,
		0xf2, 0xfb, 0xe1, 0x4d, 0x98, 0xfa, 0xe6, 0x73, 0xd7, 0x98, 0x9e, 0x38, 0xf6, 0x5f, 0x2d, 0x93,
		0x2c, 0x80, 0x2c, 0x80, 0x2c, 0x80, 0x2c, 0x80, 0x2c, 0x80, 0x2c, 0x80, 0x2c, 0x80, 0x2c, 0x80,
		0x2c, 0x80, 0x2c, 0x80, 0x2c, 0x40, 0x3e, 0x0b, 0x18, 0x74, 0x83, 0xbe, 0x1f, 0x08, 0xb6, 0x18,
		0x66, 0x12, 0x40, 0xf8, 0x20, 0x7c, 0x10, 0x3e, 0x08, 0x3f, 0x47, 0x7b, 0x0f, 0x12, 0x3f, 0x1a,
		0xdd, 0x5c, 0x9a, 0x58, 0x10, 0xdf, 0xef, 0x81, 0xbb, 0xc1, 0xdd, 0xe0, 0x6e, 0x3b, 0xb8, 0x5b,
		0x6b, 0x10, 0x3a, 0x68, 0x1b, 0xb4, 0xad, 0x80, 0xb6, 0x6f, 0x4c, 0x92, 0x04, 0xd7, 0x46, 0x10,
		0x6d, 0x67, 0x12, 0x0a, 0xb6, 0xb7, 0x17, 0xb4, 0x0d, 0xda, 0x06, 0x6d, 0x3f, 0x47, 0x03, 0x72,
		0x7b, 0x7b, 0x4d, 0xd7, 0x84, 0xb7, 0x46, 0x63, 0xc9, 0xdf, 0x5c, 0x92, 0xec, 0x4a, 0xbf, 0x4d,
		0x56, 0xfa, 0x59, 0x74, 0x6e, 0x5a, 0x4e, 0x4e, 0xdd, 0xd9, 0xa9, 0x3b, 0x3d, 0x55, 0xe7, 0x27,
		0x0c, 0x27, 0xa5, 0xb6, 0x71, 0x0b, 0x39, 0xc5, 0xbb, 0xe3, 0x72, 0xda, 0xae, 0xbf, 0xad, 0x1f,
		0x56, 0xdb, 0xf5, 0xd3, 0x86, 0xbc, 0x29, 0xcf, 0x0f, 0xe7, 0x92, 0x54, 0x61, 0xe3, 0x92, 0xdd,
		0x83, 0xaa, 0xe6, 0x3c, 0x35, 0x9d, 0xa8, 0xbe, 0x33, 0xd5, 0x76, 0xaa, 0xd6, 0x9c, 0xab, 0x35,
		0x27, 0x6b, 0xc5, 0xd9, 0xca, 0x3a, 0x5d, 0x85, 0x6a, 0x91, 0xa7, 0xb2, 0x57, 0xf5, 0xde, 0x79,
		0x1b, 0x85, 0x51, 0xba, 0xbb, 0xad, 0xb8, 0xd6, 0xeb, 0x57, 0xb6, 0x77, 0xfe, 0xf8, 0x17, 0x63,
		0x7b, 0xa7, 0xe6, 0x03, 0xb0, 0xbd, 0x53, 0xda, 0xa4, 0xf4, 0x9b, 0x45, 0xb0, 0x32, 0xa5, 0x50,
		0xa9, 0x27, 0xa5, 0xa8, 0x0b, 0xee, 0x24, 0xaf, 0x9e, 0xce, 0x9b, 0x47, 0xd5, 0x76, 0x4d, 0x2f,
		0xcd, 0x9a, 0xc9, 0x23, 0xc1, 0x22, 0xc1, 0x22, 0xc1, 0x22, 0xc1, 0x22, 0xc1, 0x22, 0xc1, 0x22,
		0xc1, 0x22, 0xc1, 0x22, 0xc1, 0x22, 0xc1, 0x22, 0xc1, 0x22, 0xc1, 0x2a, 0x5f, 0x82, 0x35, 0xe1,
		0xe7, 0x46, 0x83, 0x34, 0xbc, 0x0a, 0xbb, 0x93, 0x5d, 0xca, 0xbe, 0x89, 0xe3, 0x41, 0xec, 0x77,
		0x07, 0x3d, 0xa3, 0x97, 0x76, 0xfd, 0xe3, 0x53, 0x90, 0x8c, 0x91, 0x8c, 0x91, 0x8c, 0x91, 0x8c,
		0x91, 0x8c, 0x65, 0xe7, 0x2d, 0xec, 0x99, 0x28, 0x0d, 0xd3, 0x2f, 0xb1, 0xb9, 0x52, 0xcc, 0xc8,
		0x34, 0x20, 0x57, 0xa5, 0x3e, 0xfb, 0x6a, 0x07, 0x41, 0xa2, 0x78, 0xcc, 0xe7, 0x8a, 0x3d, 0x78,
		0xd7, 0xec, 0xd4, 0x5a, 0xad, 0xd3, 0x56, 0xe7, 0xf0, 0xf4, 0xa8, 0xa6, 0x75, 0xd6, 0x27, 0x28,
		0x37, 0x51, 0xcb, 0x43, 0x75, 0x73, 0xd1, 0x25, 0xfd, 0x1e, 0xd6, 0xaa, 0x67, 0xb5, 0x4a, 0x19,
		0xf3, 0x23, 0x4b, 0x0a, 0x7d, 0x5b, 0x6f, 0xd4, 0xdb, 0xb5, 0xce, 0x59, 0xbb, 0xda, 0xae, 0x75,
		0x4e, 0xaa, 0x87, 0xef, 0xeb, 0x8d, 0xda, 0xd4, 0x82, 0xd1, 0x72, 0x7e, 0x5a, 0x7e, 0x7f, 0x7a,
		0x7c, 0xd4, 0x69, 0xd7, 0x4f, 0x6a, 0xad, 0x4e, 0xed, 0xb7, 0x66, 0xbd, 0x55, 0x3b, 0x42, 0xbb,
		0xf9, 0x69, 0xf7, 0xa4, 0x76, 0x76, 0x56, 0x7d, 0x57, 0xeb, 0xbc, 0xaf, 0x55, 0x8f, 0xc6, 0x1a,
		0xc6, 0x7a, 0xf3, 0xd5, 0xef, 0x69, 0xb3, 0xd6, 0xe8, 0xcc, 0x95, 0x8c, 0x76, 0x73, 0xd6, 0x6e,
		0xeb, 0xf4, 0xbc, 0x5d, 0xeb, 0xb4, 0x6a, 0x6f, 0x5b, 0xb5, 0xb3, 0xf7, 0xa8, 0x59, 0x4a, 0xcd,
		0xd3, 0x9b, 0x59, 0x6b, 0xfa, 0x55, 0x91, 0x74, 0x51, 0xf4, 0x44, 0xab, 0x54, 0x25, 0xb0, 0x64,
		0x74, 0xe9, 0x46, 0x15, 0x6c, 0xfe, 0x20, 0x14, 0xc2, 0x9e, 0x24, 0x88, 0x42, 0x58, 0xae, 0xd6,
		0x41, 0x21, 0x8c, 0x42, 0xd8, 0x77, 0x34, 0x46, 0x21, 0x2c, 0x47, 0x59, 0xae, 0x14, 0xc2, 0xce,
		0xce, 0x0f, 0xa8, 0x85, 0x49, 0xa8, 0xb8, 0x7a, 0x74, 0x52, 0x6f, 0xd4, 0xcf, 0xda, 0xad, 0x6a,
		0xbb, 0xfe, 0x61, 0x9c, 0x41, 0x9c, 0xd5, 0xda, 0x64, 0x0c, 0x62, 0xfa, 0x3d, 0x7b, 0x7f, 0xde,
		0x3e, 0x3a, 0xfd, 0x4f, 0x03, 0x15, 0xe7, 0xa8, 0xe2, 0x76, 0xbb, 0x55, 0x3f, 0x18, 0xe7, 0xbf,
		0x6f, 0x8f, 0xab, 0xef, 0xce, 0xc8, 0x7a, 0xe5, 0x14, 0x7c, 0x5c, 0x6b, 0xbc, 0x6b, 0xbf, 0x47,
		0xc3, 0xb9, 0x07, 0xba, 0xea, 0x51, 0x67, 0x1c, 0xec, 0xea, 0x47, 0xb5, 0x46, 0xbb, 0xfe, 0xb6,
		0x5e, 0x43, 0xbb, 0x39, 0x6b, 0x77, 0x5e, 0xb2, 0x99, 0x5a, 0x30, 0xda, 0x95, 0xd1, 0x6e, 0xfb,
		0xf7, 0x26, 0x17, 0x6b, 0x39, 0xeb, 0xb6, 0x59, 0xab, 0xb5, 0x3a, 0xd5, 0x33, 0xd4, 0x9a, 0x9f,
		0x5a, 0x27, 0x17, 0xc0, 0xca, 0x39, 0x85, 0xcd, 0xdc, 0xc2, 0x8e, 0xba, 0x1d, 0xcb, 0x35, 0x2c,
		0x98, 0xb7, 0x9b, 0x7a, 0xd7, 0xcf, 0x41, 0xd6, 0x57, 0xf5, 0x87, 0xa7, 0x8d, 0x46, 0xed, 0xb0,
		0x5d, 0x3f, 0x6d, 0x74, 0x5a, 0xb5, 0xff, 0xae, 0x1d, 0xb6, 0x35, 0x2f, 0xed, 0xd7, 0x5b, 0xed,
		0x9d, 0xc3, 0xd3, 0xe3, 0xe3, 0xfa, 0xd9, 0x54, 0xf5, 0x67, 0xa7, 0xc7, 0xe7, 0x93, 0xa9, 0x35,
		0x28, 0x5f, 0x5c, 0xf9, 0x27, 0xd5, 0xdf, 0x3a, 0x8d, 0xf3, 0x93, 0x4e, 0xb3, 0x55, 0x7b, 0x5b,
		0xff, 0xad, 0x76, 0xd6, 0x69, 0xd5, 0xaa, 0x87, 0xef, 0x31, 0x7c, 0x0d, 0xdd, 0x9f, 0xb6, 0xdf,
		0xd7, 0x5a, 0x9d, 0xc3, 0xd3, 0xc6, 0xdb, 0xfa, 0xbb, 0xce, 0xe1, 0xfb, 0x6a, 0xe3, 0x5d, 0x0d,
		0xb5, 0x2b, 0xa8, 0xfd, 0xbc, 0xdd, 0x39, 0x7d, 0x3b, 0xf1, 0x33, 0xe7, 0xad, 0xc3, 0xda, 0x19,
		0x3a, 0x97, 0xd7, 0xf9, 0x24, 0x2f, 0x3a, 0xaa, 0xcd, 0x8c, 0xfd, 0xbc, 0x65, 0xc5, 0xc1, 0xa8,
		0x4a, 0xbc, 0x20, 0x05, 0x94, 0x00, 0x66, 0x8d, 0xd3, 0x76, 0xe7, 0xec, 0xf7, 0xc6, 0xe1, 0xfb,
		0xd6, 0x69, 0xa3, 0xfe, 0xff, 0xa7, 0xab, 0xb2, 0x34, 0xf8, 0x77, 0x3d, 0xd4, 0x6b, 0x19, 0xe7,
		0xae, 0x69, 0x77, 0x3b, 0xc5, 0x23, 0xe5, 0xb7, 0xd0, 0xaa, 0x1d, 0xd6, 0xea, 0x1f, 0x6a, 0x9d,
		0xf3, 0x46, 0xed, 0xb7, 0xe6, 0xc4, 0x91, 0xdc, 0xb5, 0x61, 0x9e, 0xb5, 0xab, 0x07, 0xc7, 0xf5,
		0x33, 0x72, 0x0c, 0xdb, 0x6f, 0xe2, 0xb4, 0x59, 0x6b, 0x4c, 0xf0, 0x58, 0xeb, 0x84, 0x37, 0x61,
		0xfd, 0x4d, 0x9c, 0xd5, 0x1a, 0x6d, 0x30, 0x31, 0x81, 0xee, 0xb1, 0xe6, 0x54, 0x6f, 0x7c, 0xa8,
		0x1e, 0xd7, 0xb9, 0x2b, 0x95, 0xd7, 0x70, 0xa3, 0xd6, 0xfe, 0xcf, 0x69, 0xeb, 0x7f, 0x3a, 0x6f,
		0xeb, 0xb5, 0x63, 0x00, 0xb1, 0x88, 0x82, 0x7f, 0x6b, 0x77, 0xde, 0x9f, 0x36, 0x3b, 0x59, 0xef,
		0x0a, 0x5a, 0xce, 0x5f, 0xcb, 0xa7, 0xad, 0xfa, 0xbb, 0x7a, 0x03, 0x1d, 0x4b, 0xe8, 0xf8, 0xa4,
		0x7a, 0xfc, 0xf6, 0xb4, 0x75, 0x52, 0x3b, 0xea, 0x54, 0xcf, 0x3a, 0xcd, 0x2a, 0x7e, 0x58, 0x48,
		0xb9, 0x77, 0xbd, 0x6d, 0xf5, 0x33, 0x3a, 0x5f, 0x73, 0xd5, 0xb1, 0xed, 0x6b, 0xa0, 0xb5, 0x23,
		0x2d, 0x53, 0x94, 0x50, 0xd6, 0xbf, 0xcd, 0xce, 0xc2, 0xf5, 0x4d, 0x7b, 0xed, 0x75, 0x1c, 0xae,
		0xaf, 0xce, 0x9d, 0xb8, 0x2f, 0xa1, 0xc4, 0x50, 0xf8, 0x80, 0x55, 0x3f, 0x3b, 0xab, 0x37, 0xde,
		0x75, 0xfe, 0x53, 0x3b, 0x3e, 0xee, 0xfc, 0x4f, 0xe3, 0xf4, 0x3f, 0x64, 0x0f, 0x22, 0x7a, 0x5e,
		0x9a, 0xb6, 0x01, 0x2c, 0xb0, 0x10, 0xa0, 0x6c, 0xd1, 0x39, 0xd6, 0x1b, 0x16, 0xa8, 0x37, 0xcb,
		0xaf, 0xaf, 0xba, 0xcf, 0x1b, 0xd5, 0xc3, 0xc3, 0x5a, 0xb3, 0x5d, 0x3d, 0x38, 0xae, 0x75, 0xb2,
		0xd9, 0x54, 0x68, 0x5e, 0x43, 0xf3, 0x67, 0xe7, 0xcd, 0xe6, 0x69, 0xab, 0x5d, 0x3b, 0xea, 0x1c,
		0x56, 0x9b, 0xd5, 0x83, 0xfa, 0x71, 0xbd, 0xfd, 0x3b, 0x9a, 0xd7, 0xd5, 0xfc, 0x69, 0x73, 0x8c,
		0x86, 0xab, 0xc7, 0x9d, 0x66, 0xb5, 0x55, 0x3d, 0xa9, 0xb5, 0x71, 0xf2, 0xda, 0x6f, 0xe0, 0x43,
		0xad, 0x35, 0x69, 0x7b, 0x69, 0x9c, 0x9f, 0x1c, 0x58, 0xd1, 0x3e, 0x69, 0x48, 0x61, 0xe1, 0xf1,
		0xec, 0xec, 0xde, 0x95, 0x7f, 0xe1, 0x34, 0xe7, 0xad, 0x63, 0x9b, 0xad, 0xe8, 0x6b, 0xa0, 0x5e,
		0x6b, 0x2d, 0xe7, 0xe5, 0xd7, 0xad, 0xcd, 0xd6, 0xf2, 0x35, 0x98, 0x55, 0xe9, 0x58, 0x27, 0xdf,
		0x5a, 0x6b, 0xdc, 0x4a, 0xc7, 0xde, 0xda, 0x6b, 0x5c, 0xb7, 0x33, 0x6f, 0xdd, 0xc6, 0xdf, 0x52,
		0xef, 0x54, 0x56, 0xbf, 0xed, 0xc6, 0x41, 0x12, 0xb2, 0xa2, 0x1f, 0x60, 0xdb, 0xc5, 0xc4, 0x75,
		0xd0, 0x70, 0xab, 0x76, 0x78, 0xfa, 0x6e, 0x72, 0x63, 0xcb, 0xf5, 0x9b, 0xb8, 0xb2, 0xcf, 0x9a,
		0xb5, 0xc3, 0xfa, 0xdb, 0xfa, 0x21, 0x5a, 0xcd, 0x55, 0xab, 0x56, 0xeb, 0xde, 0xeb, 0xa5, 0x61,
		0x9b, 0xf5, 0xed, 0xf5, 0xd2, 0xb4, 0xad, 0x3a, 0xf6, 0xda, 0xed, 0x6b, 0x20, 0x31, 0x50, 0xd6,
		0xbf, 0xe5, 0xd1, 0xac, 0x16, 0x0c, 0xdd, 0x39, 0xc5, 0xdb, 0x19, 0xd9, 0xba, 0xbe, 0x9a, 0xb7,
		0x4c, 0xf1, 0x42, 0xf1, 0x36, 0xa9, 0x5f, 0x68, 0xdf, 0x1e, 0x25, 0x6c, 0x7d, 0x75, 0x6f, 0x91,
		0x2a, 0x86, 0xd2, 0xed, 0x51, 0xc8, 0xd6, 0x58, 0xf7, 0x4e, 0x74, 0x91, 0xaf, 0xaf, 0xfe, 0xed,
		0xb7, 0xcf, 0xac, 0xaf, 0xee, 0x1d, 0xaa, 0xe3, 0x66, 0x2f, 0xa1, 0xac, 0xd7, 0x2e, 0xec, 0x5b,
		0xb4, 0xfa, 0xe9, 0xba, 0xfb, 0x16, 0xd3, 0xf0, 0xc6, 0xea, 0x9a, 0xc5, 0x89, 0x7c, 0xb6, 0x2b,
		0x3e, 0x49, 0x10, 0xdb, 0x15, 0x73, 0xb5, 0x0e, 0xb6, 0x2b, 0xb2, 0x5d, 0xf1, 0x3b, 0x1a, 0xd3,
		0xdf, 0xae, 0x38, 0xf6, 0x8b, 0x69, 0xd8, 0xfd, 0xbf, 0x64, 0x77, 0x5b, 0x71, 0xbb, 0xe2, 0xaf,
		0x0a, 0xa2, 0xce, 0xa3, 0x30, 0x4d, 0xc6, 0x5f, 0x31, 0x0a, 0xa2, 0x41, 0x62, 0xba, 0x83, 0xa8,
		0x97, 0x68, 0x7c, 0xc5, 0x56, 0x10, 0x5d, 0x1b, 0xb5, 0xeb, 0x08, 0x3d, 0xbc, 0x5c, 0x39, 0x09,
		0x23, 0x35, 0x6f, 0x99, 0x09, 0x9d, 0xdc, 0xee, 0xc8, 0xc7, 0xba, 0x7b, 0x72, 0xdf, 0xc6, 0x41,
		0x77, 0x0c, 0x1c, 0x8e, 0xc2, 0xeb, 0xa9, 0x19, 0x69, 0x3f, 0x40, 0xc3, 0x5c, 0x07, 0x69, 0x78,
		0x3b, 0xfe, 0xee, 0x57, 0x41, 0x3f, 0x31, 0x65, 0xbc, 0xb7, 0xac, 0x9c, 0x04, 0x9f, 0xed, 0x99,
		0xd4, 0xe6, 0xaf, 0xdb, 0xdb, 0xbb, 0x7b, 0xdb, 0xdb, 0x1b, 0x7b, 0xaf, 0xf7, 0x36, 0xde, 0xec,
		0xec, 0x6c, 0xee, 0x6a, 0x2c, 0x7d, 0xc5, 0xca, 0x14, 0xb3, 0x3f, 0x79, 0x29, 0x17, 0x45, 0xcd,
		0xfe, 0x5e, 0x14, 0xc8, 0x77, 0x54, 0xaa, 0x51, 0x34, 0x48, 0x27, 0x89, 0x9c, 0xa8, 0xbb, 0xa8,
		0x24, 0xdd, 0x8f, 0xe6, 0x26, 0x18, 0x06, 0xe9, 0xc7, 0x31, 0x70, 0x78, 0x35, 0x18, 0x9a, 0xa8,
		0x3b, 0xc9, 0xb6, 0xfc, 0xc8, 0xa4, 0x9f, 0x06, 0xf1, 0xff, 0xf9, 0x61, 0x94, 0xa4, 0x41, 0xd4,
		0x35, 0xaf, 0xbe, 0xfd, 0x83, 0xe4, 0xde, 0x9f, 0xbc, 0x1a, 0xc6, 0x83, 0x74, 0xd0, 0x1d, 0xf4,
		0x93, 0xec, 0x77, 0xaf, 0x2e, 0xaf, 0x87, 0xaf, 0x22, 0x13, 0x5e, 0x7f, 0xbc, 0x1c, 0xc4, 0x49,
		0xf6, 0xbb, 0x57, 0x49, 0x1a, 0xa4, 0xe6, 0xd5, 0x8d, 0x49, 0x92, 0xe0, 0xda, 0x24, 0xaf, 0x62,
		0xd3, 0x35, 0xe1, 0xad, 0xe9, 0x09, 0xc2, 0x95, 0x4a, 0x92, 0xc6, 0xa3, 0x6e, 0x1a, 0xcd, 0x60,
		0x60, 0x63, 0xfa, 0xec, 0xf5, 0xd9, 0xa3, 0x77, 0x9a, 0xb3, 0x07, 0xee, 0x1c, 0x5c, 0x0f, 0x3b,
		0x8d, 0xd9, 0x63, 0x76, 0x4e, 0x66, 0x0f, 0xd8, 0x69, 0xcd, 0x1f, 0xf0, 0x45, 0x31, 0x6c, 0x53,
		0xc0, 0x2e, 0x2b, 0xc9, 0x34, 0xb3, 0x91, 0xb1, 0xc6, 0x0c, 0x9f, 0x4f, 0xa4, 0x08, 0x9d, 0xaa,
		0xf9, 0xaa, 0x73, 0xa1, 0x8f, 0x97, 0xae, 0x53, 0x68, 0xd4, 0x27, 0xf4, 0xea, 0x12, 0x5a, 0xf5,
		0x08, 0xf5, 0x3a, 0x84, 0x7a, 0xfd, 0x41, 0xb5, 0xee, 0x50, 0xac, 0x38, 0x7a, 0x14, 0xc6, 0xc2,
		0xc7, 0xe5, 0xb4, 0x5d, 0x7f, 0x5b, 0x3f, 0xac, 0x4e, 0xb6, 0x64, 0xa8, 0x95, 0x7b, 0x97, 0xa4,
		0x52, 0xe4, 0x75, 0xcd, 0x89, 0xea, 0x3b, 0x53, 0x6d, 0xa7, 0x6a, 0xcd, 0xb9, 0x5a, 0x73, 0xb2,
		0x56, 0x9c, 0xad, 0x4e, 0x5a, 0x57, 0xbe, 0x22, 0xef, 0x28, 0x8c, 0xd2, 0xd2, 0xd5, 0x77, 0xa9,
		0xb3, 0x4a, 0x14, 0xc5, 0xa8, 0xb3, 0xaa, 0x55, 0xc0, 0xa8, 0xb3, 0x62, 0x65, 0x5e, 0xb1, 0x43,
		0xa5, 0x9e, 0x94, 0x0b, 0xba, 0x6c, 0xee, 0x19, 0xd5, 0x94, 0x7f, 0xa5, 0x97, 0x66, 0xcd, 0xe4,
		0x91, 0x60, 0x91, 0x60, 0x91, 0x60, 0x91, 0x60, 0x91, 0x60, 0x91, 0x60, 0x91, 0x60, 0x91, 0x60,
		0x91, 0x60, 0x91, 0x60, 0x91, 0x60, 0x91, 0x60, 0x95, 0x2f, 0xc1, 0xba, 0x4f, 0x23, 0x30, 0x71,
		0x3c, 0x88, 0xfd, 0xee, 0xa0, 0x67, 0x95, 0xcc, 0xb0, 0xf0, 0x14, 0x24, 0x63, 0x24, 0x63, 0x24,
		0x63, 0x24, 0x63, 0x24, 0x63, 0xd9, 0x79, 0x0b, 0x7b, 0x26, 0x4a, 0xc3, 0xf4, 0x4b, 0x6c, 0xae,
		0x14, 0x33, 0x32, 0x0d, 0xc8, 0x55, 0xa9, 0xcf, 0xbe, 0xda, 0x41, 0x90, 0x28, 0x1e, 0xf3, 0x6c,
		0x05, 0xd0, 0xbb, 0xe6, 0x94, 0x89, 0xdc, 0x51, 0x9c, 0xf3, 0x64, 0x63, 0xbe, 0x93, 0xa5, 0x79,
		0x5a, 0x87, 0xb5, 0xea, 0x19, 0x83, 0x22, 0x73, 0x54, 0xe8, 0xdb, 0x7a, 0xa3, 0xde, 0xae, 0x75,
		0xce, 0xda, 0x93, 0x31, 0x65, 0xd5, 0xc3, 0xf7, 0xf5, 0x06, 0xab, 0x28, 0x72, 0xd7, 0x72, 0x36,
		0x50, 0xb6, 0xd5, 0xa9, 0xfd, 0xd6, 0xac, 0x33, 0xcf, 0x3f, 0x57, 0xed, 0x7e, 0xb3, 0x84, 0x18,
		0xeb, 0xcd, 0x59, 0xbf, 0x4b, 0xbb, 0x1c, 0xd1, 0x6e, 0xce, 0xda, 0x5d, 0x1e, 0x1d, 0x8f, 0x9a,
		0x85, 0xd4, 0xfc, 0xcd, 0x24, 0x4e, 0x6d, 0xfd, 0x32, 0xc9, 0xc3, 0xea, 0xa7, 0xdb, 0x28, 0x81,
		0x25, 0xa3, 0x4b, 0x37, 0xaa, 0x60, 0xf3, 0x07, 0xa1, 0x10, 0xf6, 0x24, 0x41, 0x14, 0xc2, 0x72,
		0xb5, 0x0e, 0x0a, 0x61, 0x14, 0xc2, 0xbe, 0xa3, 0x31, 0x0a, 0x61, 0x39, 0xca, 0x72, 0xa5, 0x10,
		0xa6, 0x3b, 0xf3, 0x7c, 0x8d, 0x6a, 0x61, 0xd5, 0xa3, 0x93, 0x7a, 0xa3, 0x7e, 0xd6, 0x6e, 0x55,
		0xdb, 0xf5, 0x0f, 0xe3, 0x0c, 0xe2, 0xac, 0xc6, 0x4e, 0x2f, 0x39, 0xfd, 0x9e, 0xbd, 0x3f, 0x6f,
		0x1f, 0x9d, 0xfe, 0xa7, 0x81, 0x8a, 0x73, 0x54, 0xb1, 0xdd, 0xf1, 0xfc, 0xeb, 0xa4, 0x60, 0x3b,
		0x63, 0xf8, 0xcb, 0xaf, 0xe1, 0x83, 0xea, 0x51, 0x67, 0x1c, 0xec, 0xea, 0x47, 0xb5, 0x46, 0xbb,
		0xfe, 0xb6, 0xce, 0xfe, 0x94, 0xbc, 0xb5, 0x6b, 0x6b, 0xa9, 0xdf, 0x7a, 0x69, 0xb7, 0xfd, 0x7b,
		0x93, 0x8b, 0xb5, 0x9c, 0x75, 0x3b, 0x59, 0xe3, 0x5c, 0x65, 0x33, 0x76, 0x8e, 0x6a, 0x9d, 0x5c,
		0x00, 0xb3, 0x47, 0x69, 0xbd, 0x72, 0x0d, 0x0b, 0xe6, 0xed, 0xa6, 0xde, 0xf5, 0x73, 0x90, 0xf5,
		0x55, 0xfd, 0xe1, 0x69, 0xa3, 0x51, 0x3b, 0x6c, 0xd7, 0x4f, 0x1b, 0x9d, 0x56, 0xed, 0xbf, 0x27,
		0x2b, 0xb4, 0x51, 0xbb, 0x8e, 0xda, 0x3b, 0x87, 0xa7, 0xc7, 0xc7, 0xf5, 0xb3, 0xa9, 0xea, 0xcf,
		0x4e, 0x8f, 0xcf, 0x27, 0x53, 0x6b, 0x50, 0xbe, 0xb8, 0xf2, 0x4f, 0xaa, 0xbf, 0x75, 0x1a, 0xe7,
		0x27, 0x9d, 0x66, 0xab, 0xf6, 0xb6, 0xfe, 0x5b, 0xed, 0xac, 0xd3, 0xaa, 0x55, 0x0f, 0xdf, 0x63,
		0xf8, 0x1a, 0xba, 0x3f, 0x6d, 0xbf, 0xaf, 0xb5, 0x3a, 0x87, 0xa7, 0x8d, 0xb7, 0xf5, 0x77, 0x9d,
		0xc3, 0xf7, 0xd5, 0xc6, 0x3b, 0x56, 0xc9, 0x68, 0xa8, 0xfd, 0xbc, 0xdd, 0x39, 0x7d, 0x3b, 0xf1,
		0x33, 0xe7, 0xad, 0xc3, 0xda, 0x19, 0x3a, 0x97, 0xd7, 0xf9, 0x24, 0x2f, 0x3a, 0xaa, 0xcd, 0x8c,
		0xfd, 0xbc, 0x65, 0xc5, 0xc1, 0xb0, 0xaa, 0xbf, 0xa8, 0x29, 0xe0, 0x1d, 0x30, 0x6b, 0x9c, 0xb6,
		0x3b, 0x67, 0xbf, 0x37, 0x0e, 0xdf, 0xb7, 0x4e, 0x27, 0xfb, 0x88, 0xc8, 0xb4, 0x4b, 0x82, 0x7f,
		0xd7, 0x43, 0xbd, 0x96, 0x71, 0xee, 0x9a, 0x76, 0xb7, 0x53, 0x3c, 0x52, 0x7e, 0x0b, 0xad, 0xda,
		0x61, 0xad, 0xfe, 0xa1, 0xd6, 0x39, 0x6f, 0xd4, 0x7e, 0x6b, 0x4e, 0x1c, 0xc9, 0x5d, 0x1b, 0xe6,
		0x59, 0xbb, 0x7a, 0x70, 0x5c, 0x3f, 0x23, 0xc7, 0xb0, 0xfd, 0x26, 0x4e, 0x9b, 0xb5, 0xc6, 0x04,
		0x8f, 0xb5, 0x4e, 0x78, 0x13, 0xd6, 0xdf, 0xc4, 0x59, 0xad, 0xd1, 0x06, 0x13, 0x13, 0xe8, 0x1e,
		0x6b, 0x4e, 0xf3, 0xed, 0xd7, 0xdc, 0x95, 0x4a, 0x6b, 0xd8, 0xd2, 0x5a, 0xfd, 0x75, 0x52, 0xb0,
		0xbd, 0xf5, 0xf9, 0xeb, 0xa3, 0x65, 0x7b, 0x6b, 0xf2, 0xd7, 0x80, 0x8f, 0x68, 0x6f, 0x1d, 0xfe,
		0x5a, 0x29, 0xd7, 0xd2, 0xda, 0xfb, 0x75, 0xd0, 0xb1, 0xed, 0x6b, 0xa0, 0xb5, 0x23, 0x2d, 0x53,
		0x94, 0x50, 0xd6, 0xbf, 0xcd, 0xce, 0xc2, 0xf5, 0x4d, 0x7b, 0xed, 0x75, 0x1c, 0xae, 0xaf, 0xce,
		0x9d, 0xb8, 0x2f, 0xa1, 0xc4, 0x50, 0xf8, 0x80, 0x55, 0x3f, 0x3b, 0xab, 0x37, 0xde, 0x75, 0xfe,
		0x53, 0x3b, 0x3e, 0xee, 0xfc, 0x4f, 0xe3, 0xf4, 0x3f, 0x64, 0x0f, 0x22, 0x7a, 0x5e, 0x9a, 0xb6,
		0x01, 0x2c, 0xb0, 0x10, 0xa0, 0x6c, 0xd1, 0x39, 0xd6, 0x1b, 0x16, 0xa8, 0x37, 0xcb, 0xaf, 0xaf,
		0xba, 0xcf, 0x1b, 0xd5, 0xc3, 0xc3, 0x5a, 0xb3, 0x5d, 0x3d, 0x38, 0xae, 0x75, 0xb2, 0xd9, 0x54,
		0x68, 0x5e, 0x43, 0xf3, 0x67, 0xe7, 0xcd, 0xe6, 0x69, 0xab, 0x5d, 0x3b, 0xea, 0x1c, 0x56, 0x9b,
		0xd5, 0x83, 0xfa, 0x71, 0xbd, 0xfd, 0x3b, 0x9a, 0xd7, 0xd5, 0xfc, 0x69, 0x73, 0x8c, 0x86, 0xab,
		0xc7, 0x9d, 0x66, 0xb5, 0x55, 0x3d, 0xa9, 0xb5, 0x71, 0xf2, 0xda, 0x6f, 0xe0, 0x43, 0xad, 0x35,
		0x69, 0x7b, 0x69, 0x9c, 0x9f, 0x1c, 0x58, 0xd1, 0x3e, 0x69, 0x48, 0x61, 0xe1, 0xf1, 0xec, 0xec,
		0xde, 0x95, 0x7f, 0xe1, 0x34, 0xe7, 0xad, 0x63, 0x9b, 0xad, 0xe8, 0x6b, 0xa0, 0x5e, 0x6b, 0x2d,
		0xe7, 0xe5, 0xd7, 0xad, 0xcd, 0xd6, 0xf2, 0x35, 0x98, 0x55, 0xe9, 0x58, 0x27, 0xdf, 0x5a, 0x6b,
		0xdc, 0x4a, 0xc7, 0xde, 0xda, 0x6b, 0x5c, 0xb7, 0x33, 0x6f, 0xdd, 0xc6, 0xdf, 0x52, 0xef, 0x54,
		0x56, 0xbf, 0xed, 0xc6, 0x41, 0x12, 0xb2, 0xa2, 0x1f, 0x60, 0xdb, 0xc5, 0xc4, 0x75, 0xd0, 0x70,
		0xab, 0x76, 0x78, 0xfa, 0x6e, 0x72, 0x63, 0xcb, 0xf5, 0x9b, 0xb8, 0xb2, 0xcf, 0x9a, 0xb5, 0xc3,
		0xfa, 0xdb, 0xfa, 0x21, 0x5a, 0xcd, 0x55, 0xab, 0x56, 0xeb, 0xde, 0xeb, 0xa5, 0x61, 0x9b, 0xf5,
		0xed, 0xf5, 0xd2, 0xb4, 0xad, 0x3a, 0xf6, 0xda, 0xed, 0x6b, 0x20, 0x31, 0x50, 0xd6, 0xbf, 0xe5,
		0xd1, 0xac, 0x16, 0x0c, 0xdd, 0x39, 0xc5, 0xdb, 0x19, 0xd9, 0xba, 0xbe, 0x9a, 0xb7, 0x4c, 0xf1,
		0x42, 0xf1, 0x36, 0xa9, 0x5f, 0x68, 0xdf, 0x1e, 0x25, 0x6c, 0x7d, 0x75, 0x6f, 0x91, 0x2a, 0x86,
		0xd2, 0xed, 0x51, 0xc8, 0xd6, 0x58, 0xf7, 0x4e, 0x74, 0x91, 0xaf, 0xaf, 0xfe, 0xed, 0xb7, 0xcf,
		0xac, 0xaf, 0xee, 0x1d, 0xaa, 0xe3, 0x66, 0x2f, 0xa1, 0xac, 0xd7, 0x2e, 0xec, 0x5b, 0xb4, 0xfa,
		0xe9, 0xba, 0xfb, 0x16, 0xd3, 0xf0, 0xc6, 0xea, 0x9a, 0xc5, 0x89, 0x7c, 0xb6, 0x2b, 0x3e, 0x49,
		0x10, 0xdb, 0x15, 0x73, 0xb5, 0x0e, 0xb6, 0x2b, 0xb2, 0x5d, 0xf1, 0x3b, 0x1a, 0xd3, 0xdf, 0xae,
		0x38, 0xf6, 0x8b, 0x69, 0xd8, 0xfd, 0xbf, 0x64, 0x77, 0x5b, 0x71, 0xbb, 0xe2, 0xaf, 0x0a, 0xa2,
		0xce, 0xa3, 0x30, 0x4d, 0xc6, 0x5f, 0x31, 0x0a, 0xa2, 0x41, 0x62, 0xba, 0x83, 0xa8, 0x97, 0x68,
		0x7c, 0xc5, 0x56, 0x10, 0x5d, 0x1b, 0xb5, 0xeb, 0x08, 0x3d, 0xbc, 0x5c, 0x39, 0x09, 0x23, 0x35,
		0x6f, 0x99, 0x09, 0x9d, 0xdc, 0xee, 0xc8, 0xc7, 0xba, 0x7b, 0x72, 0xdf, 0xc6, 0x41, 0x77, 0x0c,
		0x1c, 0x8e, 0xc2, 0xeb, 0xa9, 0x19, 0x69, 0x3f, 0x40, 0xc3, 0x5c, 0x07, 0x69, 0x78, 0x3b, 0xfe,
		0xee, 0x57, 0x41, 0x3f, 0x31, 0x65, 0xbc, 0xb7, 0xac, 0x9c, 0x04, 0x9f, 0xed, 0x99, 0xd4, 0xe6,
		0xaf, 0xdb, 0xdb, 0xbb, 0x7b, 0xdb, 0xdb, 0x1b, 0x7b, 0xaf, 0xf7, 0x36, 0xde, 0xec, 0xec, 0x6c,
		0xee, 0x6a, 0x2c, 0x7d, 0xc5, 0xca, 0x14, 0xb3, 0x3f, 0x79, 0x29, 0x17, 0x45, 0xcd, 0xfe, 0x5e,
		0x14, 0xc8, 0x77, 0x54, 0xaa, 0x51, 0x34, 0x48, 0x27, 0x89, 0x9c, 0xa8, 0xbb, 0xa8, 0x24, 0xdd,
		0x8f, 0xe6, 0x26, 0x18, 0x06, 0xe9, 0xc7, 0x31, 0x70, 0x78, 0x35, 0x18, 0x9a, 0xa8, 0x3b, 0xc9,
		0xb6, 0xfc, 0xc8, 0xa4, 0x9f, 0x06, 0xf1, 0xff, 0xf9, 0x61, 0x94, 0xa4, 0x41, 0xd4, 0x35, 0xaf,
		0xbe, 0xfd, 0x83, 0xe4, 0xde, 0x9f, 0xbc, 0x1a, 0xc6, 0x83, 0x74, 0xd0, 0x1d, 0xf4, 0x93, 0xec,
		0x77, 0xaf, 0x2e, 0xaf, 0x87, 0xaf, 0x22, 0x13, 0x5e, 0x7f, 0xbc, 0x1c, 0xc4, 0x49, 0xf6, 0xbb,
		0x57, 0x49, 0x1a, 0xa4, 0xe6, 0xd5, 0x8d, 0x49, 0x92, 0xe0, 0xda, 0x24, 0xaf, 0x92, 0x31, 0x68,
		0x16, 0x4c, 0xcf, 0x93, 0x34, 0x1e, 0x75, 0xd3, 0x68, 0x06, 0x01, 0x1b, 0xd3, 0xe7, 0xae, 0xcf,
		0x1e, 0xbb, 0xd3, 0x9c, 0x3d, 0x6c, 0xe7, 0xe0, 0x7a, 0xd8, 0x69, 0xcc, 0x1e, 0xb1, 0x73, 0x32,
		0x7b, 0xb8, 0xce, 0xd9, 0xf8, 0xe1, 0x5e, 0x14, 0xc3, 0x26, 0xf3, 0xfd, 0xc4, 0x9c, 0xad, 0x5b,
		0xda, 0xaa, 0x1d, 0xb1, 0x66, 0x01, 0x43, 0x7e, 0x96, 0x01, 0xe7, 0x6b, 0xbb, 0xf9, 0x59, 0x58,
		0x8e, 0xd6, 0x55, 0x99, 0xbf, 0x0a, 0x3f, 0xe8, 0xf5, 0x62, 0x93, 0x24, 0xb9, 0xdb, 0x57, 0x96,
		0x3f, 0xde, 0x93, 0x94, 0xf3, 0x19, 0x91, 0xa9, 0xa9, 0x89, 0xd5, 0xd0, 0x24, 0x6b, 0x66, 0xf2,
		0x35, 0x32, 0xe9, 0x9a, 0x98, 0x5a, 0x0d, 0x4c, 0xad, 0xe6, 0xa5, 0x52, 0xe3, 0x72, 0x3b, 0x8a,
		0x89, 0xd5, 0xac, 0x32, 0x7b, 0x0f, 0x87, 0x42, 0xde, 0x65, 0xd1, 0xc3, 0x6c, 0xbe, 0x11, 0xf8,
		0xec, 0x99, 0x6e, 0x64, 0x4a, 0x41, 0x82, 0x38, 0xf8, 0x4e, 0xf3, 0xb7, 0xdb, 0x82, 0xba, 0xbf,
		0xf7, 0x0e, 0x04, 0xeb, 0x82, 0x95, 0x66, 0x90, 0xa6, 0x26, 0x8e, 0xc4, 0x2b, 0x73, 0x95, 0x9f,
		0xff, 0xd8, 0xf0, 0xdf, 0x5c, 0xfc, 0xfd, 0xc7, 0xa6, 0xff, 0xe6, 0x62, 0xfa, 0xdb, 0xcd, 0xc9,
		0x7f, 0xfe, 0xda, 0xfa, 0xfa, 0xf7, 0xd6, 0x1f, 0x1b, 0xfe, 0xf6, 0xec, 0x4f, 0xb7, 0x76, 0xfe,
		0xd8, 0xf0, 0x77, 0x2e, 0x7e, 0xf9, 0xf9, 0xcf, 0x3f, 0x5f, 0x3e, 0xf5, 0x67, 0x7e, 0xf9, 0xeb,
		0xf5, 0x57, 0xb9, 0x62, 0xfa, 0x85, 0xe4, 0x6b, 0x38, 0x3d, 0xab, 0xff, 0xa6, 0xf6, 0x2e, 0xfe,
		0xf7, 0x67, 0xad, 0xb7, 0xf1, 0xcb, 0x7f, 0x09, 0xbe, 0x8f, 0x22, 0x25, 0xeb, 0x3a, 0x6e, 0x69,
		0x17, 0xb7, 0xf4, 0x54, 0xb7, 0x34, 0xb1, 0xea, 0xc0, 0xbf, 0xaa, 0xfa, 0x6f, 0x2f, 0xfe, 0xda,
		0xfc, 0xd7, 0xf6, 0xd7, 0xfd, 0x5f, 0xfe, 0xda, 0xfb, 0xfa, 0xed, 0x1f, 0xfe, 0xbd, 0xea, 0x9f,
		0x6d, 0xfe, 0x6b, 0xef, 0xeb, 0xfe, 0x03, 0x7f, 0xb3, 0xfb, 0x75, 0xff, 0x91, 0x9f, 0xb1, 0xf3,
		0xf5, 0xe7, 0x7b, 0xff, 0x74, 0xfc, 0xe7, 0x5b, 0x0f, 0xfd, 0xc0, 0xf6, 0x03, 0x3f, 0xf0, 0xfa,
		0xa1, 0x1f, 0x78, 0xfd, 0xc0, 0x0f, 0x3c, 0xf8, 0x48, 0x5b, 0x0f, 0xfc, 0xc0, 0xce, 0xd7, 0xbf,
		0xef, 0xfd, 0xfb, 0x9f, 0x57, 0xff, 0xd3, 0xdd, 0xaf, 0xbf, 0xfc, 0xfd, 0xd0, 0xdf, 0xed, 0x7d,
		0xfd, 0x7b, 0xff, 0x97, 0x5f, 0x70, 0xd4, 0x8f, 0x76, 0xd4, 0x98, 0xa7, 0xbe, 0x79, 0x16, 0x2f,
		0x70, 0xbd, 0x70, 0xfb, 0x39, 0x1d, 0xaf, 0x09, 0x0d, 0x07, 0x71, 0xaa, 0x50, 0x10, 0x9a, 0x88,
		0xc9, 0x39, 0xd7, 0x3c, 0x32, 0x57, 0xc1, 0xa8, 0x9f, 0x8a, 0xb8, 0xa3, 0xca, 0xe6, 0xde, 0x9b,
		0x7c, 0x4f, 0xc2, 0x05, 0xb5, 0x30, 0x6a, 0x61, 0xd4, 0xc2, 0xa8, 0x85, 0xe5, 0x68, 0xef, 0x63,
		0xaf, 0xea, 0x47, 0xa3, 0x9b, 0x4b, 0x13, 0x0b, 0x16, 0xc3, 0x76, 0x05, 0x3e, 0x5a, 0xb6, 0x2f,
		0x4a, 0x30, 0xeb, 0xd4, 0xe8, 0x7b, 0xd2, 0xea, 0x73, 0x52, 0xef, 0x38, 0xd1, 0xeb, 0x30, 0x91,
		0xec, 0x67, 0xd7, 0xe8, 0x53, 0xca, 0x4c, 0x60, 0x77, 0x67, 0xe7, 0xf5, 0x0e, 0x66, 0xe0, 0x4c,
		0x72, 0x40, 0xca, 0xf1, 0xa3, 0x2f, 0x7d, 0x68, 0x4c, 0xec, 0x07, 0x82, 0xb7, 0xcf, 0x73, 0x01,
		0x00, 0x6d, 0x80, 0x36, 0x40, 0x1b, 0xa0, 0x9d, 0xa3, 0xbd, 0x07, 0x89, 0x3c, 0xcc, 0xde, 0x03,
		0x66, 0x03, 0xb3, 0x81, 0xd9, 0x76, 0x60, 0xf6, 0xf6, 0xd6, 0x9b, 0xed, 0x37, 0xbb, 0x7b, 0x5b,
		0x6f, 0xc0, 0xda, 0x60, 0xed, 0x92, 0x60, 0xed, 0xeb, 0x78, 0x30, 0x1a, 0x0a, 0xc3, 0xed, 0xa9,
		0x0c, 0x10, 0x37, 0x88, 0x1b, 0xc4, 0x0d, 0xe2, 0xce, 0xd1, 0xde, 0xfb, 0x26, 0xb8, 0x8a, 0xcd,
		0x95, 0x64, 0x8f, 0xa7, 0x04, 0xe0, 0x6e, 0xce, 0xf8, 0x15, 0x2f, 0x5f, 0xbe, 0xca, 0xfe, 0xef,
		0xce, 0x51, 0x26, 0x0b, 0xbf, 0x5f, 0xf8, 0xad, 0x3f, 0xe1, 0x2e, 0xac, 0x4b, 0x58, 0x4a, 0x25,
		0x6c, 0x67, 0x39, 0x2a, 0x4d, 0x44, 0x10, 0x94, 0x08, 0x4a, 0x04, 0x25, 0x82, 0x52, 0x01, 0x9c,
		0xcb, 0x52, 0x58, 0xda, 0x16, 0xf8, 0xec, 0x5a, 0x34, 0xba, 0x91, 0x3b, 0x4c, 0xed, 0xc1, 0x59,
		0x1a, 0x87, 0xd1, 0xb5, 0x2c, 0x1d, 0x77, 0x63, 0x3a, 0xfb, 0xb4, 0x5d, 0x6b, 0x35, 0xaa, 0xc7,
		0x92, 0x8d, 0xbe, 0x9b, 0x63, 0x41, 0xb5, 0xdf, 0x66, 0x82, 0x0a, 0x45, 0x8d, 0x6e, 0x0f, 0xea,
		0x51, 0x2a, 0xfb, 0x1a, 0x32, 0xc5, 0xec, 0x7b, 0x9b, 0x82, 0x2f, 0x21, 0x7b, 0xd1, 0xfb, 0xde,
		0xc6, 0x7a, 0xf2, 0x8b, 0x9d, 0x44, 0x70, 0xff, 0xef, 0xc8, 0x4c, 0xe7, 0xeb, 0x0b, 0xc1, 0xb7,
		0xd9, 0xe7, 0xcb, 0x60, 0xb7, 0x4d, 0xb0, 0x1b, 0xd8, 0x0d, 0xec, 0xe6, 0x22, 0x76, 0x3b, 0x0a,
		0x63, 0x19, 0x73, 0x0f, 0xa3, 0xe1, 0x48, 0x2e, 0x22, 0xde, 0x91, 0x90, 0x26, 0x62, 0x84, 0xcc,
		0x43, 0x76, 0x94, 0xa4, 0xf8, 0x08, 0x49, 0x8d, 0xd1, 0x91, 0x7a, 0x23, 0x23, 0xb5, 0x46, 0x45,
		0xaa, 0x8f, 0x88, 0x54, 0x1f, 0x0d, 0xa9, 0x3a, 0x12, 0xb2, 0x58, 0x23, 0x8e, 0xc4, 0x47, 0x3f,
		0x66, 0xe7, 0x65, 0x14, 0x46, 0xe9, 0xeb, 0x2d, 0x05, 0xde, 0xe4, 0x9e, 0xa0, 0x08, 0x9d, 0x29,
		0x8b, 0x0a, 0x83, 0x38, 0x35, 0xa7, 0x2a, 0x6a, 0x4f, 0x53, 0xb4, 0x36, 0xdf, 0x4e, 0x7f, 0xae,
		0x9d, 0xc2, 0xd4, 0x44, 0xd5, 0x69, 0x89, 0xea, 0x6d, 0x12, 0xeb, 0x68, 0x33, 0x05, 0x9d, 0x1d,
		0x58, 0x14, 0x56, 0xa7, 0xc0, 0x99, 0xac, 0x0c, 0x46, 0xa9, 0x4a, 0x76, 0x31, 0x93, 0x43, 0x7a,
		0x41, 0x7a, 0x41, 0x7a, 0x41, 0x7a, 0x41, 0x7a, 0x41, 0x7a, 0x41, 0x7a, 0x41, 0x7a, 0x41, 0x7a,
		0x81, 0xcd, 0x90, 0x5e, 0x38, 0x92, 0x5e, 0x30, 0x5c, 0xda, 0xda, 0x70, 0x69, 0x91, 0x4b, 0x63,
		0xef, 0x47, 0x47, 0x4b, 0xff, 0xff, 0xa6, 0x4f, 0xb3, 0x06, 0xcd, 0x00, 0xb1, 0xb9, 0x19, 0xdc,
		0x1a, 0x7f, 0x18, 0x87, 0xb7, 0x41, 0x6a, 0x44, 0xb9, 0xbd, 0xf7, 0x45, 0xd1, 0xde, 0x49, 0x8b,
		0x80, 0xf5, 0xe4, 0x96, 0x16, 0x01, 0xbd, 0x18, 0x26, 0xdf, 0xde, 0x79, 0xcf, 0xc9, 0xf8, 0x83,
		0xe1, 0x24, 0x66, 0x0a, 0x76, 0x7b, 0x0a, 0x20, 0xdd, 0x4a, 0xbd, 0x67, 0xa2, 0x34, 0x4c, 0xbf,
		0x1c, 0x04, 0x89, 0x91, 0x2f, 0x4e, 0xb6, 0x6a, 0x27, 0xa7, 0x1f, 0x6a, 0x9d, 0x66, 0xab, 0xfe,
		0xa1, 0xda, 0xae, 0x75, 0xaa, 0x67, 0x9d, 0xe9, 0xce, 0x62, 0xa9, 0x23, 0x37, 0x49, 0x16, 0x12,
		0xd1, 0x74, 0x5c, 0x69, 0x31, 0xe9, 0x82, 0xca, 0x66, 0x4a, 0xac, 0x1e, 0x1f, 0x57, 0x8a, 0x48,
		0xd6, 0xb5, 0xa1, 0xb0, 0xe6, 0x71, 0xf5, 0x50, 0x5a, 0x63, 0x2f, 0x8a, 0x91, 0xd2, 0xac, 0x43,
		0xe7, 0x69, 0x3c, 0x18, 0xa5, 0xc6, 0xbf, 0xea, 0x07, 0x43, 0xbf, 0x17, 0xdc, 0x0c, 0x25, 0xda,
		0xcd, 0xef, 0x02, 0xc1, 0x7d, 0x59, 0x45, 0x9a, 0x5d, 0x39, 0xa9, 0x28, 0x30, 0xbd, 0x12, 0xb8,
		0x0d, 0xdc, 0x06, 0x6e, 0xbb, 0x0b, 0xb7, 0x2f, 0x07, 0x83, 0xbe, 0x09, 0x44, 0xd1, 0xf5, 0xe6,
		0x1a, 0x04, 0xc6, 0xc4, 0x44, 0x3d, 0xbf, 0x3b, 0xb8, 0xb9, 0x19, 0x45, 0x61, 0xfa, 0x45, 0x2e,
		0x28, 0x7e, 0x23, 0xa7, 0x48, 0x01, 0xb1, 0x71, 0xda, 0xa8, 0x11, 0x0f, 0x89, 0x87, 0xc4, 0x43,
		0xe2, 0xa1, 0xbb, 0xf1, 0x30, 0xf3, 0xad, 0x50, 0x8c, 0xef, 0x6b, 0x5f, 0x8f, 0x62, 0x7c, 0xd6,
		0xae, 0x36, 0x8e, 0xaa, 0xad, 0x23, 0x15, 0x8a, 0x71, 0xe3, 0xa8, 0x26, 0x2a, 0x68, 0x6b, 0x2c,
		0xe8, 0xb8, 0xda, 0x7a, 0x57, 0x93, 0x94, 0xf2, 0x7a, 0x2c, 0xe5, 0xe0, 0xb4, 0xfd, 0x5e, 0x52,
		0xc8, 0xf6, 0xe4, 0x0a, 0x2e, 0xf7, 0x48, 0x2e, 0x5c, 0x1d, 0xd3, 0xa0, 0x64, 0x4f, 0x34, 0xbf,
		0xef, 0xbd, 0xfe, 0x97, 0x2c, 0xeb, 0x7b, 0x62, 0xab, 0xb2, 0xac, 0xef, 0xa9, 0xa5, 0xee, 0x7b,
		0x5b, 0x82, 0x32, 0x26, 0x26, 0xb4, 0xef, 0x6d, 0x4b, 0xf6, 0x70, 0xce, 0x5d, 0xc8, 0xda, 0x92,
		0xd7, 0x73, 0x0e, 0xbe, 0xe6, 0x73, 0x1a, 0x07, 0xfe, 0x28, 0x4a, 0xd2, 0xe0, 0xb2, 0x2f, 0x14,
		0x86, 0x93, 0x34, 0x48, 0x47, 0x49, 0x91, 0x17, 0x74, 0xf6, 0xcc, 0x30, 0x36, 0xdd, 0x20, 0x35,
		0xbd, 0x92, 0x35, 0x28, 0xcf, 0x5e, 0x4d, 0x99, 0x1b, 0x94, 0x17, 0xde, 0x1d, 0x13, 0x3a, 0xd7,
		0xae, 0x6a, 0x23, 0x3c, 0x14, 0x6d, 0x95, 0x30, 0x0a, 0x18, 0x14, 0x30, 0x28, 0x60, 0x50, 0xc0,
		0xa0, 0x80, 0x41, 0x01, 0x83, 0x02, 0x06, 0x05, 0x0c, 0x0a, 0x18, 0x14, 0x30, 0x28, 0x60, 0x48,
		0x05, 0xdf, 0xe3, 0x30, 0x49, 0xab, 0x69, 0x2a, 0x34, 0xe4, 0xea, 0x24, 0x8c, 0x6a, 0x7d, 0x33,
		0x86, 0x37, 0x42, 0x1c, 0xa6, 0xca, 0x49, 0xf0, 0x79, 0x41, 0xc2, 0xe6, 0xaf, 0xdb, 0xdb, 0xbb,
		0x7b, 0xdb, 0xdb, 0x1b, 0x7b, 0xaf, 0xf7, 0x36, 0xde, 0xec, 0xec, 0x6c, 0xee, 0x8a, 0xf4, 0xb1,
		0x9e, 0xc6, 0x3d, 0x13, 0x9b, 0xde, 0xc1, 0x97, 0xca, 0xbe, 0x17, 0x8d, 0xfa, 0x7d, 0x49, 0x11,
		0xe7, 0x89, 0x89, 0x45, 0xc8, 0x58, 0xae, 0xa6, 0x9f, 0x49, 0x12, 0x0e, 0x22, 0x7f, 0x42, 0xa0,
		0x91, 0x4c, 0x3c, 0x17, 0xc5, 0x90, 0x72, 0x92, 0x72, 0x92, 0x72, 0x92, 0x72, 0xe6, 0x68, 0xef,
		0x26, 0x1a, 0xdd, 0x98, 0x38, 0x90, 0x66, 0x69, 0x90, 0x6f, 0xfe, 0x43, 0xbe, 0x59, 0x3f, 0x3a,
		0xae, 0x89, 0xe7, 0x9a, 0x87, 0xa7, 0x8d, 0x46, 0xed, 0xb0, 0x2d, 0x9e, 0x6a, 0x56, 0x0f, 0xdb,
		0xf5, 0x0f, 0xf2, 0xb9, 0xe6, 0x69, 0xb3, 0xd6, 0x38, 0xab, 0x35, 0xda, 0xe2, 0xf9, 0xe6, 0x58,
		0xd0, 0xe1, 0x69, 0xe3, 0x6d, 0xbd, 0x75, 0x22, 0x29, 0x6b, 0x67, 0x52, 0x0f, 0x38, 0x6b, 0x57,
		0x0f, 0x8e, 0xeb, 0x67, 0xef, 0x6b, 0x47, 0xa4, 0xb8, 0xdf, 0x06, 0x83, 0xa9, 0x5d, 0xc9, 0x66,
		0x86, 0xf3, 0x43, 0x22, 0x9b, 0xe3, 0x2e, 0xbe, 0xe6, 0x7d, 0x6f, 0x47, 0x72, 0x08, 0xfc, 0xd8,
		0xb3, 0x88, 0x0e, 0x65, 0x58, 0x3a, 0x1f, 0xb2, 0x39, 0x75, 0x76, 0xe4, 0xf7, 0xbd, 0xd7, 0x4c,
		0xb4, 0x77, 0x27, 0x13, 0x1a, 0x0d, 0x87, 0x83, 0x38, 0x35, 0x3d, 0xbf, 0x1b, 0x0c, 0x83, 0xcb,
		0xb0, 0x1f, 0xa6, 0xa1, 0xe4, 0x84, 0xfb, 0x07, 0xe4, 0x91, 0x1b, 0x91, 0x1b, 0x91, 0x1b, 0x91,
		0x1b, 0xe5, 0x68, 0xef, 0xe1, 0x8c, 0x06, 0x2e, 0xbc, 0x46, 0xaf, 0xf8, 0x0c, 0xf6, 0x83, 0x77,
		0xcd, 0xce, 0x61, 0xb5, 0x59, 0x3d, 0xa8, 0x1f, 0xd7, 0xdb, 0xbf, 0xc3, 0x5b, 0xff, 0x9e, 0xbe,
		0xaa, 0x47, 0x47, 0x9d, 0x66, 0xb5, 0xfd, 0xfe, 0x0c, 0xae, 0xfa, 0x3f, 0x28, 0xe9, 0xac, 0xf1,
		0x7a, 0x0b, 0x05, 0x3d, 0xac, 0xa0, 0xf9, 0x8d, 0x5c, 0xa7, 0x51, 0xfb, 0xad, 0xfd, 0xfe, 0xb4,
		0xd9, 0x19, 0x03, 0xf1, 0xa3, 0x7a, 0xe3, 0x1d, 0x4a, 0x7b, 0x58, 0x69, 0xef, 0x5a, 0xd5, 0xc3,
		0xda, 0xdb, 0xf3, 0xe3, 0x4e, 0x6b, 0x9c, 0x85, 0xb5, 0xda, 0xe8, 0xea, 0x61, 0x5d, 0x9d, 0x34,
		0x0f, 0xde, 0x35, 0x51, 0xd0, 0xc3, 0x0a, 0x6a, 0x9d, 0x9e, 0xb7, 0x6b, 0x9d, 0x56, 0xed, 0x6d,
		0xab, 0x76, 0xf6, 0x9e, 0x29, 0x1a, 0xdc, 0x20, 0x73, 0x83, 0xfc, 0x0c, 0x11, 0x45, 0xb8, 0x41,
		0x7e, 0xe1, 0x90, 0x65, 0x4b, 0x0d, 0xa5, 0xb4, 0x3b, 0x8c, 0x32, 0x1f, 0x37, 0xfa, 0xfc, 0x17,
		0x95, 0xc3, 0x4b, 0xaa, 0xa4, 0xe1, 0x8d, 0x89, 0xf3, 0x2b, 0x85, 0x65, 0x71, 0x67, 0xf6, 0xb9,
		0x39, 0x99, 0x51, 0xbe, 0xcb, 0x1d, 0x73, 0x2f, 0x71, 0x49, 0x94, 0xb6, 0xe4, 0x4a, 0x5a, 0x52,
		0xa5, 0x2c, 0xf1, 0x12, 0x96, 0x78, 0xe9, 0x4a, 0xb4, 0x64, 0xe5, 0x96, 0x63, 0xce, 0x7b, 0x19,
		0x63, 0xa5, 0x3b, 0x3f, 0x53, 0x42, 0x35, 0xf5, 0xd9, 0xe7, 0xb3, 0x35, 0x96, 0x1a, 0xba, 0x35,
		0x07, 0xa4, 0xe6, 0x88, 0x54, 0x1c, 0x52, 0x31, 0x72, 0x22, 0xb1, 0xad, 0xb1, 0xdd, 0x41, 0x14,
		0x99, 0x6e, 0xea, 0xc7, 0x26, 0x8d, 0xbf, 0xc8, 0x17, 0xa0, 0x97, 0xc5, 0x09, 0x99, 0x8b, 0xe4,
		0x84, 0xa5, 0x4c, 0xc8, 0xeb, 0x0d, 0x99, 0x3a, 0xc2, 0x05, 0xbb, 0xaf, 0xb4, 0x7d, 0xbe, 0x9e,
		0xef, 0xd7, 0x8a, 0x01, 0xea, 0xb1, 0x40, 0x3d, 0x26, 0xa8, 0xc6, 0x06, 0x99, 0x18, 0x21, 0x14,
		0x2b, 0x32, 0xcd, 0xe8, 0xee, 0xbe, 0xda, 0xdc, 0x55, 0xd8, 0x7d, 0xb5, 0xcb, 0xee, 0xab, 0xef,
		0x7f, 0x11, 0x76, 0x5f, 0x89, 0xd8, 0x3a, 0xbb, 0xaf, 0x72, 0x32, 0x95, 0xdd, 0x9d, 0x9d, 0xd7,
		0xac, 0xbd, 0x2a, 0x46, 0x6c, 0x92, 0xff, 0xf4, 0x8b, 0x42, 0xc5, 0x54, 0xe1, 0xf5, 0x52, 0x99,
		0x9c, 0x2f, 0xd7, 0x83, 0xd4, 0x1f, 0x74, 0xfd, 0xee, 0xe0, 0x66, 0x18, 0x9b, 0x24, 0x31, 0x3d,
		0xbf, 0x6f, 0x82, 0xab, 0xb1, 0xd0, 0xaf, 0x6b, 0xbc, 0x86, 0xf8, 0xe3, 0xa0, 0xdf, 0xf3, 0xd3,
		0xf0, 0x46, 0xa1, 0x55, 0xea, 0x4e, 0x54, 0x91, 0xb3, 0xd4, 0x37, 0x64, 0xa9, 0x64, 0xa9, 0x64,
		0xa9, 0x64, 0xa9, 0x64, 0xa9, 0x64, 0xa9, 0x64, 0xa9, 0x64, 0xa9, 0x64, 0xa9, 0x64, 0xa9, 0x64,
		0xa9, 0x25, 0xcf, 0x52, 0x15, 0x86, 0x08, 0x67, 0xb2, 0x62, 0x73, 0x65, 0x62, 0x13, 0x75, 0x4b,
		0x11, 0x94, 0xb2, 0x7e, 0xe1, 0xb7, 0x87, 0xde, 0xf6, 0xd6, 0xde, 0xa6, 0xe7, 0x7b, 0x55, 0xef,
		0x60, 0x10, 0xf7, 0x4c, 0xec, 0xbd, 0x0b, 0x52, 0xf3, 0x29, 0xf8, 0xe2, 0xcd, 0x77, 0x21, 0x7b,
		0xdb, 0xff, 0xf2, 0xce, 0x4c, 0xf7, 0xa5, 0xb7, 0xb9, 0x51, 0x51, 0x70, 0x82, 0x4a, 0x58, 0x7c,
		0x15, 0x26, 0xbf, 0x7b, 0xc5, 0x4a, 0x6e, 0x49, 0x1b, 0x9e, 0xaf, 0x84, 0xe9, 0x4f, 0xb5, 0x01,
		0x7c, 0x67, 0x29, 0x7c, 0x27, 0x15, 0x3e, 0x9b, 0xaf, 0xa0, 0xf2, 0x7f, 0xc6, 0x0c, 0x83, 0x7e,
		0x78, 0x6b, 0xfc, 0x30, 0x4a, 0x4d, 0x7c, 0x1b, 0xf4, 0xe5, 0x4b, 0x7d, 0x2b, 0x64, 0xd2, 0x99,
		0xb2, 0xe2, 0x1c, 0x53, 0xf3, 0x5b, 0x29, 0x80, 0x9a, 0xdf, 0x33, 0xf1, 0x05, 0x35, 0x3f, 0x47,
		0xa3, 0x37, 0x35, 0xbf, 0x47, 0x7b, 0x2f, 0x6a, 0x7e, 0x8f, 0x29, 0xe4, 0x50, 0xf3, 0x2b, 0x45,
		0x11, 0x87, 0x9a, 0x1f, 0xe6, 0x42, 0xde, 0x4a, 0xde, 0x4a, 0xde, 0x9a, 0xa9, 0xe5, 0x26, 0x8c,
		0xc2, 0x9b, 0xd1, 0x8d, 0x1f, 0xf4, 0x6e, 0x4d, 0x9c, 0x86, 0xc9, 0x84, 0xff, 0xad, 0x98, 0xc3,
		0x7e, 0x47, 0x3e, 0xf9, 0x2c, 0xf9, 0x2c, 0xf9, 0x2c, 0xf9, 0x2c, 0xf9, 0x2c, 0xf9, 0x2c, 0xf9,
		0x2c, 0xf9, 0x2c, 0x09, 0x0a, 0xf9, 0x2c, 0xe6, 0x42, 0x3e, 0xeb, 0x6e, 0x4c, 0xa5, 0x87, 0xe5,
		0x99, 0x50, 0xe1, 0x09, 0xfd, 0x0b, 0xde, 0x9b, 0x97, 0x5b, 0x2f, 0x37, 0x5f, 0x6e, 0xd2, 0xc7,
		0x52, 0x6c, 0x88, 0xbe, 0x12, 0xaa, 0xff, 0x88, 0x1d, 0xe0, 0x43, 0x4b, 0xe1, 0x43, 0xa9, 0x09,
		0xda, 0x7c, 0x05, 0x95, 0xd8, 0x24, 0x69, 0x10, 0xa7, 0x4a, 0x84, 0xb5, 0x25, 0x69, 0x94, 0xb6,
		0x28, 0x6d, 0x51, 0xda, 0xa2, 0xb4, 0x45, 0x69, 0x8b, 0xd2, 0x16, 0xa5, 0x2d, 0x4a, 0x5b, 0x94,
		0xb6, 0x30, 0x17, 0xd2, 0x32, 0xd2, 0xb2, 0xc2, 0xa5, 0x65, 0x4e, 0x4f, 0xe5, 0x14, 0x7e, 0x91,
		0xd6, 0xe6, 0xbb, 0x4f, 0xc7, 0x96, 0xbf, 0x9a, 0x0d, 0x1b, 0x5e, 0x87, 0xd5, 0x88, 0xc2, 0xcb,
		0xe1, 0x05, 0x97, 0xc2, 0x8b, 0x0d, 0x6d, 0xde, 0x62, 0x68, 0xb3, 0x5e, 0xae, 0xcd, 0xd0, 0xe6,
		0x12, 0x86, 0x07, 0x86, 0x36, 0x3f, 0x45, 0x59, 0xb4, 0x12, 0x3e, 0xe8, 0xe3, 0xa9, 0xb7, 0xda,
		0xf4, 0xfd, 0x5a, 0x31, 0x40, 0x3d, 0x16, 0xa8, 0xc7, 0x04, 0xd5, 0xd8, 0x20, 0x9b, 0x75, 0x52,
		0x6f, 0x7d, 0xb4, 0xf7, 0xa2, 0xde, 0xfa, 0x98, 0x22, 0x1a, 0xf5, 0xd6, 0x52, 0x14, 0xd0, 0xa8,
		0xb7, 0x62, 0x2e, 0xb6, 0x63, 0x93, 0xfc, 0xa7, 0x5f, 0x30, 0x83, 0x98, 0x19, 0xc4, 0x8f, 0x15,
		0xc2, 0x0c, 0x62, 0x92, 0x2e, 0x92, 0x2e, 0x92, 0x2e, 0x92, 0x2e, 0x92, 0x2e, 0x92, 0x2e, 0x92,
		0x2e, 0x92, 0x2e, 0x92, 0x2e, 0x92, 0x2e, 0x67, 0x92, 0x2e, 0xf8, 0x5b, 0x6e, 0x05, 0x25, 0x66,
		0x10, 0xaf, 0xc2, 0xe4, 0x70, 0xb7, 0x98, 0x41, 0x4c, 0xc1, 0xea, 0x87, 0x0c, 0x8a, 0x91, 0xba,
		0xcf, 0x16, 0x42, 0xdf, 0x00, 0x25, 0x2c, 0x4a, 0x58, 0x94, 0xb0, 0x28, 0x61, 0x51, 0xc2, 0xa2,
		0x84, 0x45, 0x09, 0x8b, 0x12, 0x16, 0x25, 0x2c, 0x4a, 0x58, 0xa4, 0x61, 0x4f, 0x31, 0x12, 0x26,
		0xc4, 0x92, 0x9e, 0x91, 0x9e, 0x91, 0x9e, 0x91, 0x9e, 0x91, 0x9e, 0x91, 0x9e, 0x91, 0x9e, 0x91,
		0x9e, 0x91, 0x9e, 0x91, 0x9e, 0x91, 0x9e, 0x95, 0x3f, 0x3d, 0xa3, 0xc3, 0xc0, 0xad, 0xa0, 0xc4,
		0x84, 0xd8, 0x87, 0x70, 0x39, 0x5d, 0x06, 0x4c, 0x88, 0xa5, 0xc4, 0xf5, 0xc3, 0x46, 0x15, 0x99,
		0xeb, 0x41, 0x1a, 0x06, 0xa9, 0xe9, 0xf9, 0x8a, 0x2c, 0x99, 0x95, 0x52, 0xa9, 0xdc, 0x50, 0xb9,
		0xa1, 0x72, 0x43, 0xe5, 0x86, 0xca, 0x0d, 0x95, 0x1b, 0x2a, 0x37, 0x54, 0x6e, 0xa8, 0xdc, 0x60,
		0x2e, 0x64, 0x1d, 0xa5, 0xcc, 0x3a, 0x58, 0xb3, 0x40, 0x96, 0x41, 0x96, 0x41, 0x96, 0x41, 0x96,
		0x41, 0x96, 0x41, 0x96, 0x41, 0x96, 0x41, 0x96, 0x41, 0x96, 0x41, 0x96, 0xb1, 0xd6, 0x59, 0x06,
		0x5b, 0x03, 0xec, 0x6d, 0x0d, 0x98, 0x0e, 0xbb, 0x77, 0x75, 0x69, 0xc0, 0x0b, 0x87, 0x2c, 0x42,
		0xca, 0x12, 0x2c, 0x5b, 0x40, 0x25, 0xd7, 0xc5, 0x0c, 0xf1, 0xa8, 0x9b, 0x46, 0x33, 0xec, 0xda,
		0x98, 0x3e, 0x5a, 0x7d, 0xf6, 0x64, 0x9d, 0xf9, 0xe5, 0x74, 0xe7, 0xe0, 0x7a, 0xd8, 0x69, 0xcc,
		0x9e, 0xa2, 0xd3, 0x9e, 0x3e, 0xc5, 0x0b, 0x37, 0xec, 0x25, 0x07, 0x5b, 0xa9, 0xa4, 0x71, 0x10,
		0x25, 0xc3, 0x41, 0x9c, 0xe6, 0x66, 0x26, 0x59, 0x3a, 0x70, 0xf7, 0xd1, 0x39, 0xd9, 0x74, 0xbe,
		0x6b, 0x29, 0x72, 0xaf, 0x55, 0x48, 0xd4, 0x26, 0xe4, 0x6a, 0x11, 0x52, 0xb5, 0x07, 0xf1, 0x5a,
		0x83, 0x78, 0x6d, 0x41, 0xb4, 0x96, 0xe0, 0x56, 0x94, 0xc8, 0x7b, 0x8d, 0x44, 0xa5, 0x3b, 0x3f,
		0x53, 0x42, 0xeb, 0x6e, 0x66, 0x9f, 0x5f, 0xb0, 0x7d, 0x37, 0x1b, 0xec, 0xbb, 0x91, 0x77, 0x3c,
		0x6a, 0x0e, 0x48, 0xcd, 0x11, 0xa9, 0x38, 0xa4, 0x62, 0x24, 0x36, 0x62, 0xfb, 0x6e, 0xfa, 0x83,
		0x6e, 0xd0, 0xf7, 0x83, 0x5e, 0x2f, 0x36, 0x49, 0x22, 0x7f, 0xc5, 0xb3, 0x2c, 0x8e, 0x3b, 0x1e,
		0x6d, 0xf7, 0xa6, 0xe7, 0xe6, 0xb4, 0xdc, 0x9d, 0xba, 0xdb, 0x53, 0x77, 0x7f, 0xaa, 0x6e, 0x50,
		0xb6, 0xd2, 0x55, 0x82, 0x3b, 0x9e, 0x28, 0x1c, 0x44, 0x0a, 0x57, 0x3c, 0x9b, 0x6f, 0x04, 0x65,
		0xcc, 0xd4, 0x55, 0x1a, 0xb6, 0x45, 0x38, 0x14, 0x0e, 0x29, 0xda, 0x6f, 0x48, 0xf7, 0x4d, 0xe9,
		0xbd, 0xb1, 0x15, 0x6f, 0xee, 0x76, 0x5b, 0xf1, 0xdd, 0xdd, 0x7b, 0x87, 0xbf, 0x2a, 0xca, 0x6c,
		0x06, 0x69, 0x6a, 0xe2, 0x48, 0xed, 0x75, 0x66, 0x82, 0x7f, 0xfe, 0x63, 0xc3, 0x7f, 0x73, 0xf1,
		0xf7, 0x1f, 0x9b, 0xfe, 0x9b, 0x8b, 0xe9, 0x6f, 0x37, 0x27, 0xff, 0xf9, 0x6b, 0xeb, 0xeb, 0xdf,
		0x5b, 0x7f, 0x6c, 0xf8, 0xdb, 0xb3, 0x3f, 0xdd, 0xda, 0xf9, 0x63, 0xc3, 0xdf, 0xb9, 0xf8, 0xe5,
		0xe7, 0x3f, 0xff, 0x7c, 0xf9, 0xd4, 0x9f, 0xf9, 0xe5, 0xaf, 0xd7, 0x5f, 0x2b, 0x6a, 0x5f, 0xeb,
		0x42, 0xf3, 0xb5, 0x9d, 0x9e, 0xd5, 0x7f, 0xb3, 0xf6, 0xee, 0xfe, 0xf7, 0x67, 0xad, 0xb7, 0xf7,
		0xcb, 0x7f, 0x29, 0xbe, 0x3f, 0x15, 0x49, 0x5f, 0xff, 0x55, 0x62, 0xb7, 0xb9, 0x8b, 0xdb, 0x94,
		0x76, 0x9b, 0x93, 0x53, 0x14, 0xf8, 0x57, 0x55, 0xff, 0xed, 0xc5, 0x5f, 0x9b, 0xff, 0xda, 0xfe,
		0xba, 0xff, 0xcb, 0x5f, 0x7b, 0x5f, 0xbf, 0xfd, 0xc3, 0xbf, 0x57, 0xfd, 0xb3, 0xcd, 0x7f, 0xed,
		0x7d, 0xdd, 0x7f, 0xe0, 0x6f, 0x76, 0xbf, 0xee, 0x3f, 0xf2, 0x33, 0x76, 0xbe, 0xfe, 0x7c, 0xef,
		0x9f, 0x8e, 0xff, 0x7c, 0xeb, 0xa1, 0x1f, 0xd8, 0x7e, 0xe0, 0x07, 0x5e, 0x3f, 0xf4, 0x03, 0xaf,
		0x1f, 0xf8, 0x81, 0x07, 0x1f, 0x69, 0xeb, 0x81, 0x1f, 0xd8, 0xf9, 0xfa, 0xf7, 0xbd, 0x7f, 0xff,
		0xf3, 0xea, 0x7f, 0xba, 0xfb, 0xf5, 0x97, 0xbf, 0x1f, 0xfa, 0xbb, 0xbd, 0xaf, 0x7f, 0xef, 0xff,
		0xf2, 0x0b, 0x81, 0x44, 0x2c, 0x90, 0x60, 0xce, 0xfa, 0xe6, 0x5c, 0xbe, 0xc0, 0xfa, 0xa2, 0xd8,
		0xdf, 0x43, 0x18, 0x18, 0x28, 0x66, 0xbe, 0x49, 0x1a, 0x87, 0xd1, 0xb5, 0x66, 0xd6, 0xfb, 0x2b,
		0x0d, 0x56, 0x0a, 0x05, 0x2d, 0xe1, 0x46, 0xa6, 0x4c, 0xce, 0x97, 0xeb, 0x41, 0xea, 0x0f, 0xba,
		0x7e, 0x77, 0x70, 0x33, 0x1c, 0x83, 0x49, 0xd3, 0xf3, 0xfb, 0x26, 0xb8, 0x1a, 0x0b, 0xfd, 0xba,
		0xce, 0x03, 0x25, 0xd3, 0x91, 0xdf, 0x0b, 0x93, 0xee, 0xe0, 0xd6, 0xc4, 0x5f, 0x14, 0xe6, 0x47,
		0x2e, 0x89, 0x2b, 0xf2, 0xb8, 0xc8, 0x49, 0x93, 0x27, 0x13, 0x23, 0x17, 0x3e, 0x9e, 0xdb, 0xa2,
		0x27, 0x49, 0xe2, 0xb6, 0x28, 0xb7, 0x10, 0xc2, 0x6d, 0xd1, 0x03, 0x9a, 0xd1, 0xbb, 0x2d, 0xba,
		0x1c, 0x0c, 0xfa, 0x26, 0x50, 0xb9, 0x2f, 0xda, 0x04, 0xdf, 0x80, 0x6f, 0x1e, 0xab, 0x96, 0x61,
		0x90, 0x24, 0xe1, 0xad, 0xf1, 0x6f, 0x06, 0x3d, 0x05, 0x5e, 0xef, 0x92, 0x34, 0xd0, 0x0d, 0xe8,
		0x06, 0x74, 0x03, 0xba, 0x01, 0xdd, 0x80, 0x6e, 0x40, 0x37, 0xa0, 0x1b, 0x01, 0x74, 0x93, 0x76,
		0x87, 0xfe, 0x8d, 0x46, 0x37, 0xeb, 0x5c, 0x10, 0xb1, 0x9b, 0xd8, 0x4d, 0xec, 0x26, 0x76, 0x17,
		0x28, 0x76, 0x33, 0xab, 0xe4, 0xd1, 0xbf, 0x98, 0x55, 0xf2, 0x3c, 0x79, 0xcc, 0x2a, 0xc9, 0xd5,
		0x54, 0x98, 0x55, 0x52, 0x1a, 0x73, 0xe1, 0x2a, 0x9d, 0x64, 0xcc, 0xa9, 0x64, 0x8c, 0xe1, 0x2e,
		0x36, 0x46, 0x7b, 0xcc, 0xe7, 0x44, 0xbc, 0x9a, 0xb1, 0xbb, 0x5d, 0x1d, 0xf0, 0x92, 0xeb, 0xf0,
		0x91, 0x20, 0x35, 0x72, 0x34, 0xf9, 0xe9, 0xc7, 0x17, 0x8c, 0x25, 0xbf, 0x05, 0x4b, 0x5e, 0x2f,
		0xdd, 0x86, 0x25, 0x5f, 0xc2, 0x08, 0x01, 0x4b, 0xfe, 0xe9, 0xee, 0x8c, 0xea, 0xa2, 0x4d, 0x37,
		0xa7, 0xe5, 0xee, 0xd4, 0xdd, 0x9e, 0xba, 0xfb, 0x53, 0x75, 0x83, 0xb2, 0x39, 0x16, 0x2c, 0xf9,
		0x47, 0x63, 0x31, 0x58, 0xf2, 0x8f, 0x7f, 0x29, 0xb0, 0xe4, 0x0b, 0xf2, 0xc6, 0x56, 0xbc, 0x39,
		0x58, 0xf2, 0xe2, 0x82, 0x61, 0xc9, 0x3f, 0xeb, 0xb5, 0xc1, 0x92, 0xcf, 0xff, 0xfd, 0xc1, 0x92,
		0x7f, 0xae, 0xdb, 0x84, 0x25, 0x2f, 0xee, 0x36, 0xa1, 0x15, 0xc3, 0x92, 0x2f, 0x5b, 0x20, 0xc1,
		0x9c, 0x61, 0xc9, 0x3b, 0x5a, 0x1c, 0xd0, 0xfb, 0x1e, 0xb0, 0xe4, 0x9f, 0x11, 0xfa, 0xb9, 0xda,
		0x17, 0x7d, 0x5e, 0x89, 0xb6, 0xe1, 0x69, 0xd5, 0x3d, 0xd7, 0x5d, 0x00, 0x0f, 0x5a, 0xe4, 0x82,
		0x2c, 0xca, 0xfb, 0xab, 0x71, 0x00, 0xe5, 0xfd, 0x1f, 0x79, 0xeb, 0x94, 0xf7, 0x9d, 0xf7, 0xb3,
		0xc5, 0x2f, 0xef, 0x8f, 0xfd, 0x96, 0x1f, 0x8d, 0x6e, 0x2e, 0x4d, 0x4c, 0x07, 0xb1, 0x1b, 0x50,
		0x87, 0x0e, 0x62, 0x11, 0x83, 0xa7, 0x83, 0x38, 0x27, 0x53, 0xa1, 0x83, 0xb8, 0x78, 0x29, 0x26,
		0x69, 0x06, 0xb3, 0xa5, 0x1e, 0x27, 0x8c, 0xe9, 0x0b, 0x24, 0x61, 0x24, 0x61, 0x24, 0x61, 0x24,
		0x61, 0x4c, 0x5f, 0x28, 0x59, 0xb8, 0x66, 0x54, 0x12, 0xc1, 0x9a, 0x60, 0x4d, 0xb0, 0x26, 0x58,
		0x13, 0xac, 0x09, 0xd6, 0x8e, 0x07, 0xeb, 0xd8, 0xdc, 0x0c, 0x52, 0xa3, 0x47, 0xd4, 0xf9, 0x46,
		0x1e, 0x81, 0x89, 0xc0, 0x44, 0x60, 0x22, 0x30, 0x15, 0x28, 0x30, 0xa9, 0x90, 0x42, 0xa0, 0xeb,
		0xfc, 0xd0, 0x9b, 0x51, 0x25, 0x7d, 0x68, 0x76, 0x2d, 0xab, 0x77, 0x2b, 0x97, 0x88, 0xdc, 0x71,
		0xa1, 0xf1, 0x7a, 0x6c, 0xf4, 0xe0, 0x96, 0x8c, 0xc4, 0x41, 0x6f, 0xe6, 0xa3, 0xdd, 0xdc, 0x2e,
		0x6e, 0x2e, 0x2f, 0x37, 0x47, 0xf7, 0x7a, 0x69, 0xc9, 0x18, 0xa5, 0x77, 0xfc, 0x98, 0x6d, 0x29,
		0x49, 0x17, 0x17, 0xf4, 0xa8, 0x14, 0xb5, 0x8e, 0xa6, 0xd3, 0x0b, 0xbf, 0x28, 0x8c, 0x0a, 0x1a,
		0x15, 0x34, 0x2a, 0x68, 0x54, 0xd0, 0x0a, 0x54, 0x41, 0xa3, 0x19, 0xde, 0xb9, 0xdc, 0x92, 0x66,
		0x78, 0x11, 0x83, 0xa7, 0x19, 0x3e, 0x27, 0x53, 0xa1, 0x19, 0xbe, 0x58, 0xa9, 0x00, 0x89, 0x86,
		0xc7, 0xaa, 0x1e, 0x12, 0x0c, 0x12, 0x0c, 0x12, 0x0c, 0x12, 0x0c, 0xf5, 0x04, 0x83, 0x55, 0x3d,
		0xe4, 0x16, 0x80, 0x45, 0x72, 0x0b, 0x72, 0x0b, 0x72, 0x8b, 0xd2, 0xe6, 0x16, 0x6c, 0x9e, 0xb1,
		0xba, 0x79, 0x66, 0xba, 0x30, 0xc5, 0xd5, 0xc5, 0x33, 0x2f, 0x1c, 0x32, 0x0a, 0x29, 0x63, 0xb0,
		0x6f, 0x04, 0x95, 0x5c, 0xf7, 0xfb, 0xc4, 0xa3, 0x6e, 0x1a, 0xcd, 0x10, 0x6c, 0x63, 0xfa, 0x74,
		0xf5, 0xd9, 0xc3, 0x75, 0x9a, 0xb3, 0x47, 0xea, 0x1c, 0x5c, 0x0f, 0x3b, 0x8d, 0xd9, 0x83, 0x74,
		0xda, 0xd9, 0x83, 0xbc, 0x70, 0xc3, 0x6a, 0x72, 0xb0, 0x98, 0xca, 0x28, 0x31, 0xfe, 0xcd, 0xa8,
		0x9f, 0x86, 0xc3, 0xbe, 0xf1, 0xc7, 0x2f, 0x37, 0xbf, 0x5a, 0xc7, 0x5d, 0x82, 0x70, 0x5f, 0x46,
		0x4e, 0xb6, 0x9e, 0xef, 0xca, 0xa3, 0xdc, 0xcb, 0x18, 0x12, 0x65, 0x0b, 0xb9, 0x32, 0x85, 0x54,
		0x59, 0x42, 0xbc, 0x0c, 0x21, 0x5e, 0x76, 0x10, 0x2d, 0x33, 0xb8, 0x15, 0x3d, 0xf2, 0x5e, 0x51,
		0x54, 0xe9, 0xce, 0xcf, 0x94, 0xd0, 0x2a, 0xb5, 0xd9, 0xe7, 0x17, 0x6c, 0x97, 0xda, 0x06, 0xbb,
		0xd4, 0xe4, 0x1d, 0x8f, 0x9a, 0x03, 0x52, 0x73, 0x44, 0x2a, 0x0e, 0xa9, 0x18, 0x39, 0x8f, 0xd8,
		0x2e, 0x35, 0x13, 0x05, 0x97, 0x7d, 0xd3, 0x93, 0xbf, 0xf2, 0x99, 0x0b, 0x62, 0x8c, 0xc2, 0xea,
		0xd2, 0x00, 0x57, 0x61, 0xda, 0xae, 0x5e, 0xcf, 0xe5, 0x6b, 0xb9, 0x7e, 0xf5, 0x10, 0xa0, 0x1e,
		0x0a, 0x54, 0x43, 0x82, 0x6c, 0x41, 0x90, 0x31, 0x0a, 0x4f, 0x40, 0xa6, 0x9b, 0x2c, 0x39, 0x5f,
		0x21, 0x87, 0x25, 0xe7, 0xc2, 0xb0, 0xab, 0xac, 0xa5, 0xe6, 0xfb, 0x35, 0xaa, 0x35, 0xda, 0x76,
		0x6e, 0xc6, 0xc1, 0x42, 0x2c, 0x43, 0x37, 0xf9, 0x43, 0x08, 0xf2, 0x73, 0xf2, 0x73, 0xf2, 0xf3,
		0xf5, 0xcc, 0xcf, 0x85, 0x0a, 0x8a, 0xf7, 0x8e, 0x93, 0x48, 0x61, 0x51, 0xd8, 0x81, 0x91, 0x85,
		0x92, 0x85, 0x92, 0x85, 0xba, 0x99, 0x02, 0x49, 0x39, 0xc4, 0x4c, 0x40, 0xd0, 0xef, 0x0f, 0x3e,
		0xdd, 0x81, 0xd8, 0x20, 0x91, 0xb7, 0xe7, 0xf9, 0x09, 0xbd, 0x2f, 0x5a, 0xd8, 0xcc, 0x34, 0x8a,
		0x9b, 0x99, 0x30, 0xc1, 0x22, 0xe7, 0xfc, 0x97, 0xf0, 0xf0, 0x04, 0xe1, 0xa2, 0xa7, 0x5a, 0xd8,
		0xd1, 0x0c, 0x3f, 0xfa, 0x61, 0x48, 0x3b, 0x1c, 0x59, 0x0b, 0x4b, 0xd6, 0xc2, 0x93, 0x95, 0x30,
		0x25, 0x1b, 0xae, 0x84, 0xc3, 0x56, 0xa6, 0x31, 0xf1, 0x22, 0xea, 0xbd, 0xf3, 0x26, 0x5f, 0x4c,
		0xbd, 0x87, 0xc6, 0x37, 0x0b, 0xfd, 0x8a, 0x94, 0x8a, 0xac, 0x99, 0x3c, 0xf5, 0x62, 0xab, 0xfc,
		0x49, 0xfa, 0x4a, 0x55, 0x7d, 0x85, 0x1c, 0x87, 0x8a, 0xb2, 0x66, 0xfc, 0x4f, 0x25, 0x2a, 0xb3,
		0x72, 0x16, 0x20, 0xc1, 0x4b, 0x9d, 0xf6, 0x43, 0x8b, 0xd7, 0x40, 0xa6, 0x62, 0x0a, 0x5e, 0x02,
		0xd9, 0xa2, 0x04, 0x42, 0x09, 0x84, 0x12, 0x08, 0x25, 0x10, 0x4a, 0x20, 0x94, 0x40, 0x28, 0x81,
		0x50, 0x02, 0xa1, 0x04, 0x42, 0x09, 0x84, 0x12, 0x88, 0x9d, 0x12, 0x08, 0x48, 0x68, 0xad, 0x33,
		0x77, 0x01, 0x1e, 0xaf, 0x60, 0xe2, 0x4e, 0x27, 0x9e, 0x3b, 0xa6, 0x53, 0x11, 0xa9, 0xa2, 0x3c,
		0x9d, 0x05, 0x7c, 0x9e, 0x98, 0x93, 0xd9, 0xd3, 0x35, 0xc7, 0x0f, 0xd7, 0xa9, 0xe5, 0x1e, 0x39,
		0xdd, 0x6c, 0x12, 0x94, 0x29, 0x39, 0x89, 0x96, 0x9a, 0xc4, 0xdb, 0x04, 0xb7, 0x68, 0x13, 0xd4,
		0xc3, 0xec, 0xb4, 0x09, 0x96, 0x30, 0x8a, 0x41, 0xe3, 0x73, 0xa0, 0xcc, 0x03, 0x8d, 0x4f, 0xbd,
		0x8c, 0xc3, 0xed, 0x41, 0x21, 0xca, 0x34, 0xdc, 0x1e, 0xb8, 0x93, 0x33, 0x43, 0xe3, 0x23, 0x17,
		0x26, 0x17, 0x66, 0x12, 0x9a, 0x6d, 0xab, 0x70, 0xc8, 0x1a, 0x6c, 0x8f, 0x44, 0xfb, 0xb6, 0x18,
		0xe2, 0xcc, 0x64, 0xb4, 0x17, 0x16, 0xed, 0x6f, 0x0c, 0x52, 0xc6, 0x2a, 0x9c, 0xbf, 0xb7, 0x9c,
		0xb6, 0x47, 0x56, 0x8e, 0xc3, 0x24, 0xad, 0xa6, 0x69, 0x3e, 0xf9, 0x52, 0xe5, 0x24, 0x8c, 0x6a,
		0x7d, 0x33, 0x46, 0x1a, 0x39, 0x0d, 0x46, 0xad, 0x9c, 0x04, 0x9f, 0x17, 0x3e, 0x71, 0xf3, 0xd7,
		0xed, 0xed, 0xdd, 0xbd, 0xed, 0xed, 0x8d, 0xbd, 0xd7, 0x7b, 0x1b, 0x6f, 0x76, 0x76, 0x36, 0x77,
		0x37, 0x73, 0x18, 0xfb, 0x5a, 0x39, 0x8d, 0x7b, 0x26, 0x36, 0xbd, 0x83, 0xb1, 0x86, 0xa3, 0x51,
		0xbf, 0x9f, 0xe7, 0x47, 0x9e, 0x27, 0x26, 0xce, 0x65, 0x62, 0xeb, 0x73, 0x0d, 0x28, 0x67, 0xc7,
		0x65, 0xcb, 0x61, 0xe5, 0xe0, 0x9d, 0x7e, 0xc4, 0x2b, 0x3d, 0xcf, 0x09, 0xfd, 0xb8, 0xeb, 0xf8,
		0xb1, 0x9f, 0xfc, 0x41, 0x5b, 0xc9, 0xcb, 0x46, 0x94, 0x6d, 0xe3, 0xc7, 0xde, 0xcd, 0xd3, 0x35,
		0xfb, 0x03, 0x5a, 0xad, 0x0c, 0x8d, 0x89, 0xfd, 0xeb, 0x78, 0x30, 0x1a, 0xfe, 0x78, 0xdb, 0xd0,
		0xdd, 0xd6, 0xad, 0x85, 0x0f, 0xfb, 0xc1, 0x37, 0xfc, 0xbc, 0xe2, 0xf5, 0xb3, 0x2b, 0x18, 0x79,
		0x54, 0x28, 0xf2, 0xab, 0x40, 0xe4, 0x55, 0x61, 0xc8, 0xbd, 0x82, 0x90, 0x7b, 0x85, 0x20, 0xd7,
		0x0a, 0x80, 0xae, 0x4f, 0x7a, 0x6e, 0x31, 0x77, 0xe1, 0xd4, 0x3c, 0xff, 0x45, 0xdf, 0x3f, 0x89,
		0xcf, 0x7d, 0xd3, 0xf9, 0xdc, 0x26, 0xe5, 0x56, 0x5a, 0xcc, 0xb3, 0x84, 0x98, 0x7f, 0xa9, 0x30,
		0xef, 0x92, 0xa0, 0x58, 0xe9, 0x4f, 0xac, 0xc4, 0x27, 0x52, 0xca, 0xb3, 0x9b, 0xd9, 0xe4, 0x75,
		0x5b, 0x53, 0x09, 0xae, 0x42, 0x3f, 0x09, 0xae, 0x42, 0x81, 0x69, 0xd3, 0x77, 0x1f, 0xcd, 0x90,
		0x69, 0x77, 0xdc, 0x81, 0x94, 0x5b, 0x10, 0x77, 0x0f, 0xe2, 0x6e, 0x42, 0xd4, 0x5d, 0xb8, 0x59,
		0x98, 0xcb, 0x7d, 0xc8, 0xf4, 0xfc, 0xcc, 0xcb, 0xb5, 0xa7, 0x64, 0x12, 0x18, 0x64, 0x45, 0x87,
		0x8a, 0x35, 0x27, 0xa4, 0xe6, 0x8c, 0x54, 0x9c, 0x52, 0xbe, 0xce, 0x29, 0x67, 0x27, 0x25, 0xe6,
		0xac, 0xee, 0x9c, 0x56, 0xaf, 0x97, 0xf3, 0xc6, 0x8d, 0x87, 0xbd, 0x57, 0x26, 0x8a, 0x71, 0x56,
		0xda, 0x6e, 0x4d, 0xcf, 0xbd, 0x69, 0xb9, 0x39, 0x75, 0x77, 0xa7, 0xee, 0xf6, 0x54, 0xdd, 0x9f,
		0x8c, 0x1b, 0x14, 0x72, 0x87, 0xe2, 0x6e, 0x31, 0x13, 0x20, 0x3c, 0xe7, 0xef, 0xde, 0xb1, 0x14,
		0x9d, 0xf7, 0xa7, 0xe4, 0x28, 0xd5, 0x1c, 0xa6, 0xa6, 0xe3, 0xd4, 0x77, 0xa0, 0xda, 0x8e, 0xd4,
		0x9a, 0x43, 0xb5, 0xe6, 0x58, 0xad, 0x38, 0x58, 0x59, 0x47, 0x2b, 0xec, 0x70, 0xd5, 0x1c, 0x6f,
		0x26, 0xc8, 0xf4, 0xc3, 0xeb, 0xf0, 0xb2, 0x6f, 0xfc, 0xa9, 0x29, 0xfa, 0xc3, 0x41, 0x3f, 0xec,
		0x7e, 0xd1, 0x3b, 0x0c, 0x59, 0x83, 0xf5, 0xea, 0xe7, 0x50, 0x32, 0x50, 0x1d, 0xda, 0xb8, 0xba,
		0xe3, 0xb6, 0xe1, 0xc0, 0xed, 0x39, 0x72, 0x5b, 0x0e, 0xdd, 0xba, 0x63, 0xb7, 0xee, 0xe0, 0xad,
		0x3a, 0x7a, 0x1d, 0x87, 0xaf, 0xe4, 0xf8, 0x33, 0x4d, 0xaa, 0xd1, 0xd0, 0xef, 0x9d, 0xd7, 0xbe,
		0x09, 0xae, 0x62, 0x73, 0xa5, 0x79, 0x60, 0xe7, 0x78, 0x79, 0x4f, 0x51, 0x66, 0x33, 0x6b, 0x86,
		0xe9, 0xfa, 0xf1, 0x70, 0xd0, 0xdf, 0x8f, 0x07, 0xa3, 0x34, 0x8c, 0xae, 0x67, 0x91, 0x27, 0xfb,
		0xe3, 0xe9, 0xff, 0xeb, 0xf7, 0xcc, 0x55, 0x18, 0x85, 0x69, 0x38, 0x88, 0x92, 0x87, 0xff, 0x2a,
		0xfb, 0x9b, 0x49, 0x2b, 0x53, 0xa9, 0xec, 0x51, 0x79, 0xec, 0x60, 0x26, 0xd7, 0xda, 0xf8, 0x41,
		0x3d, 0xb7, 0xa2, 0xf0, 0x0a, 0x2b, 0xb1, 0xe9, 0x9a, 0xe9, 0xaa, 0x7a, 0x65, 0x5c, 0x37, 0x17,
		0xac, 0x64, 0xa6, 0x9a, 0xf3, 0x92, 0x32, 0xa1, 0x0a, 0x73, 0x93, 0xe6, 0xbf, 0x2e, 0x00, 0xc4,
		0x00, 0x62, 0x00, 0x31, 0x80, 0x18, 0x40, 0xac, 0x76, 0x5e, 0xf5, 0xe6, 0x33, 0xdd, 0x03, 0xc4,
		0x9b, 0xa5, 0x7a, 0x85, 0xe6, 0x73, 0x1a, 0x07, 0xfe, 0x28, 0x4a, 0xd2, 0xe0, 0xb2, 0xaf, 0xfc,
		0x32, 0x63, 0x73, 0x65, 0x62, 0x13, 0x4d, 0xbc, 0xe0, 0x1f, 0xaa, 0x3e, 0x40, 0xd7, 0xe7, 0x2e,
		0x59, 0x6e, 0xeb, 0xed, 0xa1, 0xb7, 0xf7, 0x66, 0x73, 0xd3, 0xf3, 0xbd, 0x6a, 0xef, 0xd6, 0xc4,
		0x69, 0x98, 0x4c, 0xa8, 0x3b, 0xde, 0xe0, 0xca, 0x9b, 0x53, 0xba, 0xbc, 0x09, 0xa7, 0xcb, 0x0b,
		0x23, 0xef, 0xe0, 0x5d, 0x53, 0xd9, 0x3f, 0xdb, 0x0c, 0x4e, 0xab, 0x82, 0xd4, 0x9d, 0x91, 0xfc,
		0xcb, 0xce, 0xb3, 0xd8, 0x8e, 0x57, 0x2b, 0xe3, 0xd6, 0xd3, 0xad, 0x48, 0xfd, 0x99, 0xbf, 0xbe,
		0x28, 0xa7, 0xb4, 0x0b, 0x6a, 0x08, 0xd4, 0x10, 0x5c, 0xa9, 0x21, 0x24, 0x26, 0xea, 0xe9, 0x17,
		0x10, 0x26, 0x52, 0xa9, 0x1e, 0x50, 0x3d, 0xa0, 0x7a, 0x40, 0xf5, 0x80, 0xea, 0x01, 0xd5, 0x03,
		0xaa, 0x07, 0x54, 0x0f, 0xa8, 0x1e, 0x50, 0x3d, 0xa0, 0x7a, 0x40, 0xf5, 0x80, 0xea, 0x01, 0xd5,
		0x03, 0xaa, 0x07, 0x85, 0xa9, 0x1e, 0xf8, 0x37, 0xc1, 0x67, 0x3b, 0x15, 0x84, 0x89, 0x64, 0xb2,
		0x5f, 0xb2, 0x5f, 0xb2, 0x5f, 0xb2, 0x5f, 0xb2, 0x5f, 0xb5, 0xf3, 0x3a, 0x0a, 0xa3, 0xf4, 0x57,
		0x0b, 0xb9, 0xef, 0x8e, 0xa2, 0xc8, 0x56, 0x10, 0x5d, 0xaf, 0x45, 0x62, 0x78, 0x12, 0x46, 0xf6,
		0x12, 0xad, 0x0f, 0x41, 0x7f, 0x64, 0xf4, 0xa2, 0xdc, 0x3d, 0xf9, 0x6f, 0xe3, 0xa0, 0x3b, 0x06,
		0x9f, 0x47, 0xe1, 0x75, 0x98, 0xd7, 0x34, 0xcd, 0x1f, 0x3b, 0x5a, 0xe6, 0x3a, 0x48, 0xa7, 0xbd,
		0x9c, 0xcf, 0x1f, 0x62, 0xe9, 0xb0, 0xd7, 0x5a, 0x36, 0xbd, 0xe0, 0xb3, 0x7d, 0xd3, 0xdb, 0xda,
		0xd9, 0xc1, 0xf8, 0x6c, 0x1b, 0x1f, 0xb9, 0x3a, 0xb9, 0xfa, 0x5a, 0xe7, 0xea, 0x85, 0xe6, 0xb5,
		0x2a, 0x1b, 0x86, 0xce, 0xe0, 0xdb, 0x85, 0x31, 0xb0, 0x0b, 0xbf, 0x7f, 0x95, 0xcd, 0xa8, 0xcb,
		0x7e, 0xf7, 0x2a, 0x1b, 0xd1, 0xf2, 0x6a, 0x36, 0x88, 0xa0, 0xa8, 0x7b, 0x38, 0x05, 0xe7, 0x9a,
		0xc8, 0xac, 0xa0, 0x7b, 0xb8, 0x3a, 0x24, 0xb0, 0x92, 0xee, 0xa1, 0xac, 0x44, 0x6d, 0x20, 0xc4,
		0x16, 0x03, 0x21, 0x8a, 0x53, 0xf2, 0x61, 0x20, 0x04, 0x03, 0x21, 0xbe, 0xab, 0x31, 0x06, 0x42,
		0x30, 0x10, 0xa2, 0x98, 0x0e, 0xdc, 0x9e, 0x23, 0xb7, 0xe5, 0xd0, 0xad, 0x3b, 0x76, 0xeb, 0x0e,
		0xde, 0xaa, 0xa3, 0xd7, 0x4d, 0xde, 0x19, 0x08, 0x21, 0x88, 0x97, 0x19, 0x08, 0xe1, 0x62, 0x05,
		0x82, 0x79, 0x05, 0xf9, 0xc1, 0x3a, 0x18, 0x07, 0xe0, 0x35, 0xf0, 0x1a, 0x78, 0x0d, 0xbc, 0x06,
		0x5e, 0xcb, 0xe9, 0xbc, 0xc2, 0x38, 0xc8, 0xab, 0x14, 0x02, 0xe3, 0x40, 0xd7, 0x72, 0x61, 0x1c,
		0x3c, 0x2d, 0x48, 0xc1, 0x38, 0x58, 0x15, 0xb7, 0x60, 0x1c, 0x58, 0x93, 0x76, 0x41, 0x8a, 0xfb,
		0x68, 0x93, 0x85, 0x4e, 0x4f, 0x72, 0x4b, 0x72, 0x4b, 0x72, 0x4b, 0x72, 0x4b, 0x72, 0x4b, 0x72,
		0x4b, 0x72, 0x4b, 0x72, 0x4b, 0x72, 0x4b, 0x72, 0x4b, 0x72, 0x4b, 0x72, 0x4b, 0x72, 0x5b, 0x8a,
		0xe4, 0x16, 0xb6, 0x37, 0xc9, 0x19, 0xc9, 0x19, 0xc9, 0x19, 0xc9, 0xd9, 0xba, 0x24, 0x67, 0xb0,
		0xbd, 0x4b, 0x94, 0xb7, 0xc0, 0xf6, 0x86, 0x70, 0x0b, 0xdb, 0x1b, 0xe3, 0x83, 0xed, 0x4d, 0x2a,
		0x69, 0x47, 0x02, 0x64, 0x64, 0x25, 0x32, 0xf2, 0x94, 0x03, 0x5b, 0x54, 0x2e, 0x72, 0xa1, 0x36,
		0xea, 0x2b, 0xd9, 0x9c, 0xb3, 0xb6, 0x56, 0x11, 0x65, 0x8e, 0xc7, 0xa3, 0x6e, 0x1a, 0xcd, 0x92,
		0x91, 0xc6, 0xf4, 0x4b, 0xd4, 0x67, 0xdf, 0xa1, 0xd3, 0x9c, 0x3d, 0x79, 0xe7, 0xe0, 0x7a, 0xd8,
		0x69, 0x1a, 0x13, 0xbf, 0x1b, 0x3f, 0x6c, 0xa7, 0x7a, 0x15, 0x9e, 0x05, 0x57, 0x61, 0xa7, 0xda,
		0xeb, 0x4d, 0xca, 0xa6, 0x32, 0xc7, 0x20, 0x7f, 0x23, 0x15, 0x30, 0xd0, 0xca, 0xfc, 0x75, 0xf9,
		0x33, 0x1d, 0xca, 0xd8, 0x67, 0x96, 0x2e, 0x2e, 0x8b, 0x13, 0x3a, 0x70, 0xb2, 0xf5, 0x39, 0xf1,
		0x7a, 0x9c, 0x46, 0xfd, 0x4d, 0xaf, 0xde, 0xa6, 0x55, 0x5f, 0x53, 0xaf, 0xa7, 0xa9, 0xd7, 0xcf,
		0x54, 0xeb, 0x65, 0xc5, 0x0a, 0xb1, 0xe2, 0xf5, 0x2f, 0x45, 0x66, 0xa4, 0x06, 0x13, 0x32, 0x63,
		0x3e, 0xbe, 0x7c, 0x39, 0x1b, 0x4b, 0xf3, 0x6a, 0xd9, 0x33, 0xaf, 0x73, 0x44, 0x1c, 0x0e, 0xfb,
		0x5f, 0xa4, 0x67, 0x20, 0xdc, 0x05, 0xc4, 0x45, 0x69, 0xb2, 0xf1, 0x70, 0x93, 0x78, 0xf8, 0xa8,
		0x78, 0x18, 0x0f, 0x07, 0x7d, 0x02, 0x62, 0x01, 0x03, 0xe2, 0xe4, 0xc5, 0x11, 0x11, 0x3d, 0x8d,
		0xe1, 0x31, 0x95, 0xee, 0xfc, 0xd4, 0x2b, 0x0d, 0xed, 0x9a, 0xc9, 0x2b, 0xd9, 0xd4, 0xae, 0x8d,
		0x72, 0x4e, 0xed, 0x12, 0x76, 0xa1, 0xda, 0xae, 0xd4, 0x9a, 0x4b, 0xb5, 0xe6, 0x5a, 0xed, 0xb8,
		0x58, 0x59, 0x57, 0x2b, 0xec, 0x72, 0xd5, 0x5c, 0x6f, 0x26, 0xa8, 0x37, 0x25, 0xdb, 0xf8, 0xe6,
		0xf3, 0x70, 0x10, 0xa7, 0xd6, 0xc6, 0x76, 0xad, 0x7e, 0x8c, 0x32, 0x13, 0x8e, 0x5a, 0xb5, 0xff,
		0xae, 0x1d, 0xb6, 0x3b, 0xad, 0xd3, 0xf3, 0x76, 0x0d, 0xde, 0x51, 0x01, 0xe2, 0xa0, 0x8d, 0x78,
		0x68, 0x31, 0x2e, 0xda, 0x8a, 0x8f, 0xd6, 0xe3, 0xa4, 0xf5, 0x78, 0x69, 0x37, 0x6e, 0xea, 0xc4,
		0x4f, 0xa5, 0x38, 0x9a, 0xa9, 0xd2, 0x5e, 0x73, 0xdb, 0x3c, 0xb2, 0xcd, 0x86, 0x7c, 0xa5, 0xe3,
		0x07, 0xb1, 0xc0, 0x42, 0xda, 0x56, 0x94, 0x59, 0x8b, 0x46, 0x37, 0xfa, 0xfe, 0xa2, 0x3d, 0x38,
		0x4b, 0xe3, 0x30, 0xba, 0xb6, 0xd2, 0x02, 0x54, 0xd9, 0x18, 0xbf, 0xeb, 0xea, 0xe1, 0x61, 0xad,
		0x39, 0x8f, 0xe9, 0x16, 0x1a, 0xa0, 0x36, 0x27, 0x54, 0x0f, 0x75, 0x60, 0xa1, 0x7c, 0x98, 0x17,
		0xde, 0x78, 0x7d, 0xe2, 0x1c, 0x2d, 0xbc, 0xee, 0xa5, 0x37, 0x6d, 0xa5, 0xd3, 0x6a, 0xf9, 0x3d,
		0xef, 0x7b, 0x9b, 0x25, 0xed, 0x79, 0xfa, 0xca, 0x86, 0x8b, 0x1c, 0xe4, 0xb2, 0x8d, 0x32, 0xd7,
		0x6c, 0x39, 0xbc, 0x71, 0x22, 0x5b, 0x5e, 0x7e, 0x0c, 0xb2, 0x65, 0xb2, 0x65, 0xb2, 0x65, 0xb2,
		0x65, 0xb2, 0x65, 0xb2, 0x65, 0xb2, 0x65, 0xb2, 0x65, 0xb2, 0x65, 0xb2, 0x65, 0xb2, 0x65, 0xb2,
		0x65, 0xb2, 0x65, 0xb2, 0x65, 0x2b, 0xd9, 0xb2, 0xe5, 0x3b, 0x65, 0x2b, 0x77, 0xc9, 0xa4, 0x73,
		0xa4, 0x73, 0xa4, 0x73, 0xa4, 0x73, 0xa4, 0x73, 0xec, 0x80, 0x2a, 0xdc, 0x0e, 0x28, 0x25, 0x7b,
		0x3c, 0x0e, 0x93, 0xb4, 0x9a, 0xa6, 0xb1, 0xae, 0x4d, 0x9e, 0x84, 0x51, 0xad, 0x3f, 0x19, 0x7a,
		0xa7, 0x3c, 0x1b, 0xa1, 0x72, 0x12, 0x7c, 0x5e, 0x90, 0xbc, 0xf9, 0xeb, 0xf6, 0xf6, 0xee, 0xde,
		0xf6, 0xf6, 0xc6, 0xde, 0xeb, 0xbd, 0x8d, 0x37, 0x3b, 0x3b, 0x9b, 0xbb, 0x9b, 0x9a, 0x83, 0x68,
		0x4e, 0xe3, 0x9e, 0x89, 0x4d, 0xef, 0xe0, 0x8b, 0x7e, 0x50, 0xcb, 0xe6, 0xfd, 0x24, 0x26, 0xd6,
		0x8e, 0x67, 0x16, 0x27, 0x54, 0x2e, 0x06, 0xf3, 0xc1, 0x54, 0xfb, 0xfe, 0xe5, 0x17, 0x1b, 0x15,
		0x0f, 0x17, 0x46, 0x53, 0x2e, 0x05, 0xf6, 0x89, 0x25, 0x94, 0x35, 0x15, 0xb7, 0x71, 0xa8, 0xcf,
		0xc7, 0x0a, 0x9d, 0xbe, 0x5a, 0x2a, 0x01, 0x54, 0x02, 0x5c, 0xa9, 0x04, 0x58, 0xbe, 0x2f, 0xb7,
		0x72, 0x4f, 0x4e, 0x25, 0x80, 0x4a, 0x00, 0x95, 0x00, 0x2a, 0x01, 0x54, 0x02, 0xa8, 0x04, 0x50,
		0x09, 0xa0, 0x12, 0x40, 0x25, 0x80, 0x4a, 0x00, 0x95, 0x00, 0x2a, 0x01, 0x54, 0x02, 0xa8, 0x04,
		0x38, 0x5a, 0x09, 0x60, 0x2c, 0xeb, 0x13, 0xe4, 0xb9, 0x36, 0x2a, 0x73, 0x61, 0x08, 0xd4, 0x6c,
		0x1e, 0x57, 0x61, 0x47, 0xb3, 0x8a, 0x0e, 0xfb, 0x0c, 0x52, 0xa3, 0x37, 0x71, 0x66, 0x2a, 0xae,
		0x64, 0x03, 0x67, 0xb6, 0x18, 0x38, 0x53, 0x20, 0x00, 0xca, 0xc0, 0x19, 0x06, 0xce, 0x7c, 0x5f,
		0x65, 0x0c, 0x9c, 0x81, 0x42, 0x97, 0xf7, 0x2f, 0x28, 0x74, 0x85, 0x8b, 0x87, 0x16, 0xe3, 0xa2,
		0xed, 0x02, 0x0d, 0x37, 0x2d, 0xdc, 0xb4, 0xe4, 0xa7, 0x4a, 0x28, 0x74, 0x50, 0xe8, 0x44, 0xa5,
		0x43, 0xa1, 0x83, 0x42, 0xa7, 0xfb, 0x08, 0x50, 0xe8, 0x0a, 0x25, 0x85, 0x79, 0x28, 0x24, 0x73,
		0x24, 0x73, 0x24, 0x73, 0x24, 0x73, 0x24, 0x73, 0x24, 0x73, 0x24, 0x73, 0x24, 0x73, 0x24, 0x73,
		0x24, 0x73, 0x24, 0x73, 0x24, 0x73, 0x24, 0x73, 0x2b, 0x4d, 0x82, 0x71, 0x1d, 0x64, 0x1b, 0x64,
		0x1b, 0x64, 0x1b, 0x64, 0x1b, 0xeb, 0x9a, 0x6d, 0x40, 0xd2, 0x81, 0xa4, 0x73, 0x5f, 0x5d, 0x90,
		0x74, 0x20, 0xe9, 0x40, 0xd2, 0x81, 0xa4, 0x03, 0x49, 0x27, 0xf7, 0x43, 0xad, 0x4e, 0xd2, 0x61,
		0x9a, 0xc4, 0xf3, 0xfd, 0x21, 0xd3, 0x24, 0x48, 0x54, 0x49, 0x54, 0x49, 0x54, 0x49, 0x54, 0x49,
		0x54, 0x49, 0x54, 0x49, 0x54, 0x49, 0x54, 0x49, 0x54, 0x49, 0x54, 0x49, 0x54, 0x49, 0x54, 0x0b,
		0x95, 0xa8, 0x32, 0xec, 0xe0, 0x09, 0xf2, 0x5c, 0x1e, 0x76, 0x30, 0xe5, 0xd8, 0x17, 0x75, 0xd6,
		0xc1, 0x8b, 0x02, 0x99, 0x9f, 0x96, 0xd9, 0xb9, 0x6c, 0x6e, 0x15, 0xd1, 0xe1, 0x14, 0xf1, 0xa8,
		0x9b, 0x46, 0x33, 0x38, 0xd3, 0x98, 0x7e, 0x8f, 0xfa, 0xec, 0x6b, 0x74, 0x9a, 0xb3, 0x87, 0xef,
		0x1c, 0x5c, 0x0f, 0x3b, 0x4d, 0x63, 0xe2, 0x77, 0xe3, 0xe7, 0xed, 0x54, 0xaf, 0xc2, 0xb3, 0xe0,
		0x2a, 0xec, 0x54, 0xc7, 0x0f, 0xd9, 0x9c, 0x3e, 0xe3, 0x8b, 0x62, 0x98, 0xaa, 0x80, 0x99, 0x56,
		0xba, 0xf3, 0xca, 0x95, 0x8c, 0x79, 0x66, 0x60, 0x73, 0x26, 0x47, 0xe8, 0xa0, 0xc9, 0x8e, 0xf4,
		0x10, 0x2f, 0xef, 0x69, 0x94, 0xf3, 0x16, 0xcb, 0x77, 0x97, 0xd7, 0x43, 0xc9, 0x73, 0xa9, 0x04,
		0xf2, 0xd5, 0xab, 0x73, 0xea, 0xc0, 0xfd, 0xdb, 0xea, 0xdb, 0xf8, 0xbd, 0x11, 0x5a, 0x3d, 0x8d,
		0x01, 0x1c, 0x95, 0x79, 0x34, 0xf3, 0x67, 0xf1, 0x45, 0x69, 0x02, 0xd2, 0xb2, 0x58, 0x9d, 0x49,
		0x48, 0x1b, 0x5a, 0x93, 0x90, 0x36, 0xca, 0x39, 0x09, 0x49, 0xd6, 0x9d, 0xda, 0xaa, 0x9d, 0x30,
		0x08, 0x49, 0xd4, 0xdd, 0x96, 0x23, 0xb1, 0x56, 0xbb, 0xd3, 0xb8, 0xbb, 0x4e, 0xee, 0x99, 0x28,
		0x0d, 0xd3, 0x2f, 0x3a, 0xf7, 0x19, 0x19, 0xb2, 0x54, 0xa8, 0x0d, 0x57, 0xea, 0xb3, 0xaf, 0x76,
		0x10, 0x24, 0x46, 0xff, 0x9e, 0xbe, 0xfa, 0xb6, 0xde, 0x39, 0x1b, 0xff, 0x4f, 0xfb, 0xf7, 0xa6,
		0x16, 0xa1, 0xa6, 0xf2, 0x21, 0xe8, 0x8f, 0x4c, 0xa2, 0x4a, 0x06, 0xb6, 0x54, 0x6d, 0xaf, 0x37,
		0x3f, 0x6c, 0x77, 0xde, 0x1e, 0x9f, 0xfe, 0xe7, 0xac, 0x59, 0x3b, 0xac, 0x94, 0xb1, 0xfc, 0x69,
		0x53, 0xb1, 0xc7, 0xd5, 0x83, 0xda, 0x71, 0xed, 0xa8, 0x73, 0xde, 0xa8, 0x1f, 0x56, 0xcf, 0xda,
		0xe8, 0x37, 0x67, 0xfd, 0xa2, 0x57, 0x09, 0xbd, 0xee, 0x62, 0xb7, 0xc2, 0xfa, 0x45, 0xaf, 0xb9,
		0xeb, 0xf5, 0x78, 0xeb, 0x43, 0xb3, 0xd1, 0xa9, 0x7d, 0x68, 0x36, 0xd0, 0x6a, 0xde, 0x5a, 0xfd,
		0xd0, 0x3c, 0x3e, 0x43, 0xab, 0x39, 0x6a, 0xf5, 0xf5, 0x58, 0xab, 0x93, 0x08, 0x76, 0x72, 0x7e,
		0xdc, 0xc6, 0x17, 0xc8, 0xe9, 0x17, 0x4f, 0x2b, 0xa7, 0xdd, 0x5d, 0xac, 0x57, 0x58, 0xbf, 0x58,
		0x6f, 0xfe, 0xda, 0xad, 0x37, 0xfe, 0xe7, 0xac, 0x5d, 0xd5, 0x9c, 0x8b, 0xb1, 0x46, 0x4a, 0xed,
		0x9c, 0x35, 0xdf, 0xa2, 0x58, 0x09, 0xc5, 0x02, 0x6c, 0x73, 0x55, 0xec, 0x59, 0xab, 0x5d, 0xeb,
		0x34, 0x4f, 0x8f, 0xeb, 0x87, 0xbf, 0x4f, 0x80, 0x02, 0xba, 0x15, 0xd3, 0xed, 0x2e, 0xba, 0xcd,
		0x4f, 0xb7, 0x1f, 0x9a, 0x0d, 0x3b, 0x05, 0x5b, 0x9d, 0xf1, 0x94, 0xdc, 0x6b, 0xfd, 0xa3, 0x15,
		0x68, 0x37, 0x8c, 0x5a, 0x5b, 0x97, 0x56, 0xcc, 0xb5, 0x54, 0x26, 0x0a, 0x2e, 0xfb, 0xa6, 0xa7,
		0xd7, 0x96, 0x31, 0x17, 0x48, 0x43, 0xc6, 0x93, 0x04, 0xd1, 0x90, 0x91, 0xab, 0x75, 0xd0, 0x90,
		0x41, 0x43, 0xc6, 0x77, 0x34, 0xa6, 0xdf, 0x90, 0x71, 0x39, 0x18, 0xf4, 0x4d, 0x10, 0x69, 0x36,
		0x63, 0x6c, 0x82, 0x2d, 0xc0, 0x16, 0x52, 0xea, 0x4a, 0x4c, 0xd4, 0x1b, 0xeb, 0xea, 0x66, 0x14,
		0x85, 0xe9, 0x6c, 0x86, 0xb0, 0xde, 0x02, 0xcc, 0x15, 0xc2, 0xc1, 0x1c, 0x60, 0x0e, 0x30, 0x07,
		0x98, 0x03, 0xcc, 0xb1, 0xc0, 0x26, 0x52, 0xf4, 0x90, 0x9e, 0xf2, 0x68, 0x77, 0xdd, 0x91, 0xee,
		0x76, 0x46, 0xb9, 0x4f, 0x47, 0xb8, 0x9f, 0xb5, 0xab, 0x8d, 0xa3, 0x6a, 0xeb, 0x48, 0x73, 0x30,
		0xc9, 0x64, 0x6c, 0x7b, 0xed, 0xb7, 0x76, 0xad, 0x71, 0x54, 0x53, 0x15, 0xbc, 0x35, 0xb9, 0x66,
		0xa8, 0xb6, 0xde, 0x69, 0x4e, 0xab, 0xaf, 0xbc, 0x1e, 0x4b, 0x3d, 0x38, 0x6d, 0xbf, 0xd7, 0x14,
		0xba, 0x3d, 0xe1, 0x63, 0x9e, 0x36, 0x6a, 0xe5, 0x1a, 0x98, 0xa2, 0x3f, 0x02, 0x7f, 0xfa, 0xe6,
		0xf6, 0xbd, 0xd7, 0x9a, 0x0b, 0x25, 0xe6, 0x67, 0x43, 0x7c, 0x45, 0xfa, 0x92, 0xd8, 0xe9, 0xc9,
		0x10, 0xdf, 0x96, 0xbe, 0x1c, 0x4e, 0xc6, 0x26, 0xba, 0xef, 0x69, 0xae, 0xeb, 0xc8, 0x5c, 0xde,
		0xbe, 0xb7, 0xc1, 0x68, 0x08, 0x07, 0xc0, 0x8b, 0xea, 0x14, 0x24, 0xfd, 0xe9, 0x47, 0x4e, 0x4c,
		0x3d, 0x5a, 0x9a, 0x76, 0x14, 0x8d, 0xfa, 0x7d, 0x4d, 0x91, 0xb3, 0x59, 0x2c, 0x57, 0x41, 0x3f,
		0x31, 0xd4, 0x8d, 0xd6, 0xbc, 0x6e, 0xc4, 0xf8, 0x90, 0x15, 0x72, 0x1c, 0x1b, 0x1f, 0x32, 0x1b,
		0x15, 0xb1, 0xc6, 0x43, 0x39, 0xae, 0xe3, 0xa0, 0x6b, 0xae, 0x46, 0x7d, 0x3f, 0x36, 0x49, 0x1a,
		0xc4, 0xa9, 0xfc, 0x78, 0x8e, 0x7b, 0x12, 0x19, 0xd4, 0xb1, 0x52, 0x00, 0x83, 0x3a, 0x7e, 0xe8,
		0xad, 0x33, 0xa8, 0x63, 0x6d, 0x83, 0x98, 0xf8, 0xa0, 0x0e, 0xe1, 0x09, 0x46, 0xf7, 0x8e, 0xa5,
		0xe8, 0x24, 0x23, 0x25, 0x47, 0xa9, 0xe6, 0x30, 0x35, 0x1d, 0xa7, 0xbe, 0x03, 0xd5, 0x76, 0xa4,
		0xd6, 0x1c, 0xaa, 0x35, 0xc7, 0x6a, 0xc5, 0xc1, 0x96, 0xa3, 0xb0, 0x21, 0xed, 0x78, 0x33, 0x41,
		0x5a, 0xcd, 0x78, 0xf7, 0xce, 0xb7, 0x4e, 0x53, 0xde, 0x9d, 0x42, 0x6d, 0x6c, 0xae, 0x9f, 0x94,
		0x2d, 0x58, 0x59, 0x5f, 0x80, 0x10, 0x67, 0x23, 0xd4, 0xd9, 0x0b, 0x79, 0xb6, 0x42, 0x9f, 0xf5,
		0x10, 0x68, 0x3d, 0x14, 0x5a, 0x0d, 0x89, 0x3a, 0xa1, 0x51, 0x29, 0x44, 0x66, 0x9a, 0xb4, 0xb7,
		0x99, 0x43, 0xaf, 0x79, 0xf2, 0x5e, 0x66, 0xb1, 0x59, 0xaa, 0x57, 0xa8, 0x5c, 0x1c, 0xcf, 0xe4,
		0x5a, 0x2b, 0x92, 0xeb, 0x9d, 0x44, 0x98, 0x3c, 0x4f, 0x91, 0xe7, 0x58, 0x31, 0xfd, 0xdb, 0xc2,
		0xae, 0x68, 0x75, 0x5d, 0xde, 0x62, 0x44, 0x1b, 0x7f, 0x27, 0x83, 0xf1, 0xf5, 0x5a, 0x7d, 0x27,
		0xe2, 0x4a, 0x56, 0x46, 0xda, 0xa2, 0x8c, 0x44, 0x19, 0x89, 0x32, 0x12, 0x65, 0x24, 0xca, 0x48,
		0x94, 0x91, 0x28, 0x23, 0x51, 0x46, 0xa2, 0x8c, 0x44, 0x19, 0x89, 0x32, 0x12, 0x65, 0x24, 0xaa,
		0x1c, 0x54, 0x39, 0x14, 0xab, 0x1c, 0x2c, 0xb9, 0xd3, 0x32, 0xc1, 0x75, 0xed, 0x52, 0x55, 0xea,
		0x98, 0xf4, 0x9e, 0xbd, 0xe8, 0xee, 0xdd, 0xec, 0x41, 0x5b, 0xb3, 0xe7, 0x5c, 0xe3, 0xbe, 0xda,
		0x70, 0x78, 0xbb, 0xed, 0xf7, 0x83, 0x4b, 0xd3, 0x37, 0x3d, 0x7f, 0x14, 0x85, 0xdd, 0x20, 0x51,
		0xe8, 0xad, 0x5d, 0x29, 0x95, 0xfe, 0x5a, 0x5b, 0x49, 0x0f, 0xfd, 0xb5, 0xc5, 0x4b, 0x5a, 0xe8,
		0xaf, 0xb5, 0x56, 0x9f, 0x9b, 0x59, 0x94, 0xdf, 0x0f, 0x6f, 0xc2, 0x54, 0xef, 0x76, 0x64, 0x49,
		0x2a, 0xbd, 0xb6, 0xae, 0x56, 0x8e, 0xb8, 0x24, 0x29, 0x5f, 0x65, 0x88, 0x4b, 0x12, 0xe7, 0x9c,
		0x70, 0x26, 0x48, 0x89, 0xec, 0x70, 0xef, 0x78, 0xab, 0x90, 0x1e, 0x94, 0x1d, 0xb2, 0xba, 0x63,
		0xb6, 0xe1, 0xa0, 0xed, 0x39, 0x6a, 0x5b, 0x0e, 0xdb, 0xba, 0xe3, 0xb6, 0xee, 0xc0, 0xad, 0x3a,
		0x72, 0x1d, 0x87, 0xae, 0xe4, 0xd8, 0xd5, 0x1d, 0x7c, 0x26, 0xf0, 0x26, 0xf8, 0xec, 0x4f, 0xad,
		0x76, 0xb2, 0x1e, 0xd3, 0xd2, 0x10, 0xf4, 0xa5, 0xa7, 0x50, 0x36, 0x5e, 0xdd, 0xfb, 0x5d, 0x6b,
		0xc1, 0xc0, 0x66, 0x50, 0xb0, 0x1f, 0x1c, 0x6c, 0x07, 0x09, 0x67, 0x82, 0x85, 0x33, 0x41, 0xc3,
		0x89, 0xe0, 0xa1, 0x1b, 0x44, 0x94, 0x83, 0x49, 0xa6, 0x61, 0xf5, 0xfb, 0xe2, 0x7b, 0xe7, 0x7d,
		0x14, 0x46, 0xe9, 0xeb, 0x2d, 0x1b, 0xe7, 0x7d, 0xe6, 0xdd, 0xf7, 0x2c, 0x88, 0x6e, 0x05, 0xd1,
		0xb5, 0x51, 0x6d, 0xbf, 0x5a, 0xfc, 0x65, 0xc7, 0xbf, 0x79, 0xb3, 0xe1, 0x53, 0xd6, 0x1c, 0x6c,
		0xf6, 0x10, 0x93, 0x8d, 0xdf, 0xfa, 0xe1, 0xf5, 0xde, 0x73, 0xbc, 0x8d, 0x83, 0x6e, 0x1a, 0x0e,
		0xa2, 0xa3, 0xf0, 0x3a, 0xd4, 0x1a, 0xc6, 0xf5, 0xcf, 0x67, 0xd2, 0x5c, 0x07, 0x69, 0x78, 0x6b,
		0x54, 0x66, 0x55, 0x39, 0xe4, 0x06, 0x97, 0x4d, 0x34, 0xf8, 0xec, 0x8e, 0x89, 0x6e, 0x6f, 0xbd,
		0xd9, 0x7e, 0xb3, 0xbb, 0xb7, 0xf5, 0x66, 0x07, 0x5b, 0x75, 0xd5, 0x56, 0x5f, 0xac, 0x87, 0xd4,
		0x8b, 0x52, 0x03, 0x21, 0x4b, 0xe4, 0xbd, 0x4c, 0xbe, 0x75, 0x12, 0x9f, 0xbe, 0x61, 0x29, 0xbe,
		0xe2, 0x71, 0x42, 0x75, 0x6b, 0xa2, 0xd4, 0x4f, 0x4d, 0x10, 0xf7, 0x06, 0x9f, 0x22, 0x7b, 0xf5,
		0x8c, 0x7b, 0x4f, 0xa2, 0x6c, 0xe8, 0x36, 0x7a, 0xff, 0x33, 0xe1, 0x8a, 0x1c, 0x80, 0xcc, 0x6d,
		0x51, 0x33, 0x12, 0x15, 0x4c, 0xcd, 0x88, 0x9a, 0x11, 0x35, 0x23, 0x9b, 0xe0, 0x6c, 0xfd, 0x6a,
		0x46, 0xfa, 0x5c, 0x83, 0x6f, 0xdd, 0xbb, 0x12, 0xe7, 0x00, 0x34, 0x0c, 0x1a, 0x16, 0x50, 0xef,
		0xa7, 0x20, 0x8e, 0xc2, 0xe8, 0xda, 0x4f, 0x3f, 0xc6, 0x26, 0xf9, 0x38, 0xe8, 0xf7, 0xfc, 0x61,
		0x37, 0xb5, 0x07, 0x89, 0x57, 0x3f, 0x0e, 0xb8, 0x0d, 0xdc, 0x06, 0x6e, 0x03, 0xb7, 0x81, 0xdb,
		0x4a, 0x83, 0xdb, 0x86, 0x26, 0xee, 0x9a, 0x28, 0x0d, 0xae, 0x8d, 0x45, 0xe8, 0xb6, 0xc3, 0x7d,
		0x9f, 0xde, 0x17, 0xe7, 0xbe, 0x6f, 0xe1, 0x39, 0xb8, 0x43, 0x71, 0xc4, 0x15, 0x2e, 0x9b, 0xa8,
		0x4b, 0xf7, 0x7d, 0x9b, 0x1b, 0x18, 0xa9, 0xb3, 0x46, 0xca, 0x45, 0x1f, 0xa5, 0x0d, 0x4a, 0x1b,
		0xae, 0x4a, 0x2a, 0xfb, 0x98, 0x57, 0xc7, 0x86, 0x0f, 0xac, 0xa2, 0x94, 0xbf, 0x5a, 0xa4, 0x4c,
		0xaa, 0x8c, 0xf9, 0xd4, 0x33, 0x31, 0x05, 0xf3, 0x52, 0x1a, 0xff, 0x79, 0x2f, 0x2d, 0xd3, 0x18,
		0x03, 0xfa, 0x6d, 0x16, 0xa6, 0x4e, 0xac, 0xda, 0x82, 0x58, 0x25, 0x20, 0x19, 0x62, 0x15, 0xc4,
		0xaa, 0xa2, 0x07, 0x74, 0x88, 0x55, 0x10, 0xab, 0xca, 0x17, 0x14, 0xec, 0x07, 0x07, 0xdb, 0x41,
		0xc2, 0x99, 0x60, 0xe1, 0x4c, 0xd0, 0x70, 0x22, 0x78, 0xd8, 0x29, 0x6c, 0x40, 0xac, 0x52, 0xf7,
		0xee, 0x10, 0xab, 0x14, 0xbf, 0x38, 0x17, 0x2d, 0x0b, 0xcf, 0x41, 0x0d, 0xdb, 0x11, 0x37, 0xb8,
		0x6c, 0xa2, 0x10, 0xab, 0xb0, 0x55, 0x67, 0x01, 0x82, 0x3d, 0xa9, 0x17, 0x74, 0x34, 0x3e, 0xdb,
		0x68, 0x17, 0x0b, 0xcf, 0xbe, 0xf9, 0xdc, 0x35, 0xa6, 0xa7, 0xb8, 0xc7, 0xe3, 0x1e, 0xf6, 0x5a,
		0xfd, 0x38, 0x24, 0xd9, 0x24, 0xd9, 0x24, 0xd9, 0x24, 0xd9, 0x24, 0xd9, 0xa5, 0x49, 0xb2, 0xd7,
		0x8f, 0x89, 0x02, 0x3d, 0x58, 0x1a, 0x39, 0x40, 0x0f, 0xd6, 0x04, 0xdf, 0x80, 0x32, 0x40, 0x19,
		0xa0, 0x0c, 0x50, 0x06, 0x28, 0x03, 0x94, 0x01, 0xca, 0x5c, 0x02, 0x65, 0xb0, 0x54, 0x81, 0x0f,
		0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01, 0xf8, 0xa0, 0x9a, 0x82, 0xc3, 0x52, 0xb5, 0x71, 0xb6, 0x68,
		0x9e, 0xa0, 0x79, 0x62, 0xf5, 0xb9, 0xa4, 0x79, 0x02, 0x96, 0x2a, 0x46, 0xea, 0x24, 0x3a, 0xb0,
		0x27, 0xf5, 0x02, 0xb2, 0xa4, 0xfb, 0xae, 0x0c, 0xb2, 0xe4, 0x63, 0xc9, 0x92, 0x0a, 0xdb, 0xc2,
		0xf5, 0x2c, 0x8c, 0x45, 0xf6, 0x65, 0xb6, 0xd5, 0x8a, 0x0a, 0x13, 0xf6, 0x19, 0xeb, 0xc6, 0xeb,
		0xc3, 0xdb, 0xed, 0xe3, 0xe9, 0x17, 0x38, 0x9f, 0x3e, 0x7f, 0x67, 0x5a, 0x47, 0x3a, 0x9e, 0x3c,
		0x7e, 0x51, 0x57, 0xf2, 0xff, 0x4b, 0x67, 0xc1, 0xae, 0x1f, 0x9b, 0xae, 0x09, 0x6f, 0x15, 0xda,
		0xe7, 0x56, 0xb7, 0xcb, 0x65, 0xe2, 0x59, 0xb9, 0xfb, 0x24, 0x41, 0xac, 0xdc, 0xcd, 0xd5, 0x3a,
		0x58, 0xb9, 0xcb, 0xca, 0xdd, 0xef, 0x68, 0x8c, 0x95, 0xbb, 0x05, 0x74, 0xc8, 0xea, 0x8e, 0xd9,
		0x86, 0x83, 0xb6, 0xe7, 0xa8, 0x6d, 0x39, 0x6c, 0xeb, 0x8e, 0xdb, 0xba, 0x03, 0xb7, 0xea, 0xc8,
		0xcb, 0x59, 0xbd, 0x60, 0x32, 0x04, 0x93, 0x21, 0xca, 0x17, 0x14, 0xec, 0x07, 0x07, 0xdb, 0x41,
		0xc2, 0x99, 0x60, 0xe1, 0x4c, 0xd0, 0x70, 0x22, 0x78, 0xe8, 0x06, 0x11, 0xe5, 0x60, 0x92, 0x69,
		0x98, 0xc9, 0x10, 0x4c, 0x86, 0xd0, 0xfc, 0xe2, 0x34, 0x37, 0x2c, 0x3c, 0x07, 0xf7, 0xc6, 0x8e,
		0xb8, 0xc1, 0x65, 0x13, 0x65, 0x32, 0x04, 0xb6, 0xea, 0x2c, 0x40, 0xb0, 0x27, 0x95, 0x49, 0xdc,
		0x92, 0xf2, 0x59, 0x32, 0x26, 0xaa, 0x5e, 0x38, 0xb5, 0x59, 0x19, 0x09, 0x4e, 0xad, 0x46, 0x56,
		0x41, 0xcd, 0x48, 0xf1, 0x4c, 0x51, 0x33, 0xa2, 0x66, 0x94, 0x05, 0x72, 0x6a, 0x46, 0xc2, 0x1a,
		0x86, 0x53, 0xcb, 0xca, 0x5d, 0xd0, 0x70, 0x91, 0xd1, 0x30, 0x64, 0x66, 0x70, 0x1b, 0xb8, 0x0d,
		0xdc, 0x06, 0x6e, 0x03, 0xb7, 0xa9, 0xd6, 0x3e, 0x20, 0x33, 0xdb, 0x38, 0x5b, 0xdc, 0xf7, 0x71,
		0xdf, 0xb7, 0xfa, 0x5c, 0x72, 0xdf, 0x07, 0x99, 0x19, 0x23, 0x75, 0x12, 0x1d, 0xd8, 0x93, 0xca,
		0x45, 0x1f, 0xa5, 0x8d, 0x02, 0x4a, 0x82, 0x45, 0xee, 0x16, 0x33, 0x37, 0xe3, 0x4e, 0xb2, 0x7b,
		0xf7, 0xe9, 0xef, 0x9a, 0xdd, 0xbb, 0x79, 0x8b, 0x63, 0xf7, 0xae, 0xa8, 0x64, 0x18, 0x56, 0x30,
		0xac, 0x8a, 0x1e, 0xd9, 0x61, 0x58, 0xc1, 0xb0, 0x2a, 0x5f, 0x50, 0xb0, 0x1f, 0x1c, 0x6c, 0x07,
		0x09, 0x67, 0x82, 0x85, 0x33, 0x41, 0xc3, 0x89, 0xe0, 0x61, 0xa7, 0xc2, 0x01, 0xc3, 0x4a, 0xdd,
		0xbb, 0xc3, 0xb0, 0x52, 0xfc, 0xe2, 0xdc, 0xb8, 0x2c, 0x3c, 0x07, 0xc5, 0x6c, 0x47, 0xdc, 0xe0,
		0xb2, 0x89, 0xc2, 0xb0, 0xc2, 0x56, 0x9d, 0x05, 0x08, 0xf6, 0xa4, 0xb2, 0x7b, 0xf7, 0xf9, 0x46,
		0xcb, 0xee, 0x5d, 0x92, 0x6c, 0x92, 0x6c, 0x92, 0x6c, 0x92, 0x6c, 0x92, 0x6c, 0xcd, 0xf3, 0xce,
		0x9a, 0xb7, 0xb2, 0xc0, 0x07, 0x78, 0xc2, 0x1e, 0x3c, 0x61, 0x40, 0x19, 0xa0, 0x0c, 0x50, 0x06,
		0x28, 0x03, 0x94, 0x01, 0xca, 0x00, 0x65, 0x96, 0x41, 0x19, 0x74, 0x55, 0xe0, 0x03, 0xf0, 0x01,
		0xf8, 0x00, 0x7c, 0x00, 0x3e, 0xa8, 0xa6, 0xe0, 0xd0, 0x55, 0x6d, 0x9c, 0x2d, 0x9a, 0x27, 0x68,
		0x9e, 0x58, 0x7d, 0x2e, 0x69, 0x9e, 0x80, 0xae, 0x8a, 0x91, 0x3a, 0x89, 0x0e, 0xec, 0x49, 0x65,
		0xf7, 0x6e, 0x01, 0x5c, 0x19, 0xac, 0xc9, 0x27, 0xb3, 0x26, 0x59, 0xc2, 0xeb, 0x8a, 0x11, 0xb3,
		0x84, 0xf7, 0xb1, 0x46, 0x5b, 0xf0, 0x6d, 0xbc, 0xad, 0xf9, 0xd7, 0x28, 0xea, 0x56, 0xde, 0x17,
		0x05, 0x3a, 0x5d, 0x15, 0xf3, 0x39, 0x8d, 0x03, 0x7f, 0x34, 0x7e, 0x73, 0x97, 0x7d, 0xd9, 0x54,
		0xbf, 0xf2, 0xe9, 0xa3, 0x89, 0xc4, 0x13, 0x5a, 0xc5, 0x5d, 0xb7, 0x2f, 0x5f, 0x66, 0xc7, 0xd3,
		0x1f, 0x1f, 0x05, 0xef, 0xdf, 0xde, 0x4f, 0xd3, 0x32, 0x94, 0x9f, 0x7e, 0x19, 0x9a, 0x64, 0xbf,
		0xde, 0xfc, 0xb0, 0xdd, 0x39, 0xae, 0x1e, 0xd4, 0x8e, 0x6b, 0x47, 0x9d, 0xf3, 0x46, 0xfd, 0xb0,
		0x7a, 0xd6, 0xfe, 0xa9, 0xe4, 0xbb, 0x71, 0x27, 0x2f, 0x79, 0x9d, 0x36, 0xe3, 0xfe, 0xa0, 0x15,
		0x94, 0x62, 0x44, 0xc2, 0x91, 0x49, 0xba, 0x71, 0x38, 0x54, 0x45, 0x94, 0xd9, 0xf1, 0xab, 0x47,
		0xdd, 0xfe, 0xa8, 0x67, 0xbc, 0xf4, 0x63, 0x98, 0x78, 0xdd, 0x41, 0x94, 0x06, 0x61, 0x64, 0x62,
		0xef, 0x6a, 0x10, 0x7b, 0xf5, 0xe6, 0xed, 0xb6, 0x37, 0x0b, 0x31, 0xde, 0x2c, 0xc6, 0x78, 0xc9,
		0xd0, 0x74, 0xc3, 0xab, 0xb0, 0xfb, 0xe7, 0x2c, 0x8e, 0x8f, 0xe2, 0x29, 0x9a, 0x50, 0xb2, 0x19,
		0x0b, 0xd7, 0x07, 0x8b, 0xe7, 0xb2, 0xb7, 0xf0, 0xaa, 0x14, 0xaf, 0x0d, 0x6d, 0xde, 0x15, 0x2c,
		0x1d, 0xd3, 0xbc, 0xac, 0x85, 0x5c, 0xc0, 0xea, 0xa7, 0x5f, 0x14, 0x0a, 0x5d, 0x29, 0xe5, 0x2c,
		0x45, 0xc8, 0x55, 0x04, 0x9d, 0x4e, 0xde, 0xd9, 0x88, 0xcc, 0x19, 0xcf, 0xff, 0x4c, 0x08, 0x58,
		0x6d, 0x65, 0xf2, 0xea, 0xe6, 0xaf, 0x4c, 0xca, 0x66, 0xb3, 0x10, 0xbe, 0x24, 0x4d, 0xe8, 0x0c,
		0xca, 0x8e, 0x38, 0x12, 0x6f, 0xc6, 0xd0, 0x68, 0xba, 0xd0, 0x6b, 0xae, 0xd0, 0x42, 0x41, 0xea,
		0xcd, 0x12, 0xea, 0x40, 0x47, 0xb5, 0xf9, 0xa1, 0x58, 0x35, 0x0d, 0xe9, 0x11, 0x42, 0x95, 0xee,
		0xfc, 0xcc, 0x0b, 0x1b, 0xf1, 0xfc, 0x58, 0xce, 0xe4, 0x09, 0x1b, 0x94, 0xce, 0x2c, 0x38, 0xb5,
		0xee, 0x35, 0xcd, 0x6e, 0x35, 0xfd, 0xee, 0x34, 0x9b, 0x25, 0x1e, 0xd5, 0xee, 0x33, 0x37, 0x8a,
		0x3c, 0x5a, 0xdd, 0x65, 0xc5, 0xbe, 0xa2, 0xd1, 0x9a, 0xdd, 0x56, 0x31, 0x9f, 0x53, 0x13, 0xf5,
		0x4c, 0xcf, 0x8f, 0xcc, 0xe7, 0xd4, 0xff, 0x38, 0x18, 0xfa, 0xe3, 0x84, 0xa7, 0x17, 0x46, 0xd7,
		0xfa, 0x65, 0xa8, 0x7f, 0x78, 0x16, 0xad, 0x91, 0x79, 0x16, 0x58, 0x62, 0x9a, 0xec, 0xb0, 0x0b,
		0xdd, 0x61, 0xa8, 0x1b, 0xda, 0xc3, 0x50, 0x37, 0x18, 0x86, 0x5a, 0xfc, 0x00, 0x69, 0x3d, 0x50,
		0x5a, 0x0f, 0x98, 0x56, 0x03, 0xa7, 0x4e, 0x00, 0x55, 0x0a, 0xa4, 0x99, 0x26, 0xd5, 0xdb, 0xaf,
		0x2d, 0xb2, 0xb6, 0x94, 0xd9, 0x5a, 0x65, 0xef, 0xb9, 0xb2, 0xbe, 0xe2, 0xa0, 0x24, 0x43, 0xe0,
		0x4d, 0xd4, 0xf3, 0x7b, 0x53, 0x80, 0xe5, 0xc7, 0x83, 0x91, 0x95, 0x89, 0xf0, 0xf7, 0x9f, 0x01,
		0x64, 0x09, 0xb2, 0x04, 0x59, 0x82, 0x2c, 0x41, 0x96, 0x20, 0x4b, 0x90, 0x25, 0xc8, 0x12, 0x64,
		0x59, 0x20, 0x09, 0x74, 0xca, 0xcb, 0x77, 0x9f, 0xcc, 0x3b, 0xe4, 0x35, 0xd6, 0x5e, 0x09, 0xf6,
		0x92, 0x0b, 0xde, 0xc4, 0x2f, 0x72, 0x07, 0xf4, 0xae, 0x32, 0x97, 0xa4, 0x72, 0xa1, 0xe9, 0x2a,
		0xca, 0xe6, 0x42, 0xb3, 0x7c, 0x28, 0x9a, 0x0b, 0xcd, 0xa7, 0xd7, 0x3f, 0xb4, 0x2e, 0x34, 0x95,
		0x3a, 0x4a, 0xee, 0x1d, 0x6f, 0x95, 0xce, 0x12, 0x65, 0x87, 0x4c, 0x19, 0x84, 0x32, 0x08, 0x65,
		0x10, 0xca, 0x20, 0x2e, 0x39, 0xf8, 0x4c, 0x20, 0xdb, 0x06, 0x19, 0x9a, 0xe7, 0x95, 0x3f, 0x38,
		0xd8, 0x0e, 0x12, 0xce, 0x04, 0x0b, 0x67, 0x82, 0x86, 0x13, 0xc1, 0x43, 0x37, 0x88, 0x28, 0x07,
		0x93, 0x4c, 0xc3, 0x6c, 0x1b, 0x64, 0xdb, 0xa0, 0xe6, 0x17, 0x67, 0x60, 0xde, 0xc2, 0x73, 0x30,
		0x8b, 0xcc, 0x11, 0x37, 0xb8, 0x6c, 0xa2, 0x6c, 0x1b, 0xc4, 0x56, 0x9d, 0x05, 0x08, 0xf6, 0xa4,
		0x5e, 0x94, 0x1a, 0x08, 0x59, 0xba, 0xa1, 0xce, 0xe4, 0x5b, 0xbf, 0xa9, 0xd6, 0x37, 0x2c, 0xf6,
		0x34, 0xb1, 0xa7, 0x49, 0xc1, 0x6d, 0x51, 0x33, 0x12, 0x15, 0x4c, 0xcd, 0x88, 0x9a, 0x11, 0x35,
		0x23, 0x9b, 0xe0, 0x8c, 0x3d, 0x4d, 0xfa, 0xee, 0x5d, 0x7b, 0x4f, 0x13, 0x68, 0x18, 0x34, 0x9c,
		0x9f, 0x7a, 0x59, 0x90, 0x05, 0x6e, 0x03, 0xb7, 0x81, 0xdb, 0xc0, 0x6d, 0xe0, 0x36, 0xd5, 0xda,
		0x07, 0x0b, 0xb2, 0x6c, 0x9c, 0x2d, 0xee, 0xfb, 0xb8, 0xef, 0x5b, 0x7d, 0x2e, 0xb9, 0xef, 0x63,
		0x41, 0x16, 0x46, 0xea, 0x24, 0x3a, 0xb0, 0x27, 0x95, 0x8b, 0x3e, 0x4a, 0x1b, 0x05, 0x94, 0xc4,
		0x66, 0x32, 0x7b, 0xd4, 0xd5, 0x45, 0xaa, 0xa4, 0x0a, 0x8f, 0x55, 0xcf, 0xb4, 0x54, 0x26, 0xf7,
		0x4c, 0x56, 0xb7, 0xe9, 0x0f, 0xeb, 0x99, 0x88, 0x2d, 0x39, 0xa1, 0x6a, 0x0b, 0x42, 0x95, 0x80,
		0x64, 0x08, 0x55, 0x10, 0xaa, 0x8a, 0x1e, 0xc8, 0x21, 0x54, 0x41, 0xa8, 0x2a, 0x5f, 0x50, 0xb0,
		0x1f, 0x1c, 0x6c, 0x07, 0x09, 0x67, 0x82, 0x85, 0x33, 0x41, 0xc3, 0x89, 0xe0, 0x61, 0xa7, 0xa0,
		0x01, 0xa1, 0x4a, 0xdd, 0xbb, 0x43, 0xa8, 0x52, 0xfc, 0xe2, 0x5c, 0xb0, 0x2c, 0x3c, 0x07, 0xb5,
		0x6b, 0x47, 0xdc, 0xe0, 0xb2, 0x89, 0x42, 0xa8, 0xc2, 0x56, 0x9d, 0x05, 0x08, 0xf6, 0xa4, 0x5e,
		0xd0, 0xc9, 0xf8, 0x6c, 0xa3, 0x5d, 0x2c, 0x3c, 0xfb, 0xe6, 0x73, 0xd7, 0x98, 0x9e, 0xe9, 0x59,
		0x25, 0xf7, 0xac, 0x78, 0x1c, 0x92, 0x6c, 0x92, 0x6c, 0x92, 0x6c, 0x92, 0x6c, 0x92, 0xec, 0xd2,
		0x24, 0xd9, 0xeb, 0xc7, 0x40, 0x81, 0x16, 0x2c, 0x8d, 0x1c, 0xa0, 0x05, 0x6b, 0x82, 0x6f, 0x40,
		0x19, 0xa0, 0x0c, 0x50, 0x06, 0x28, 0x03, 0x94, 0x01, 0xca, 0x00, 0x65, 0x2e, 0x81, 0x32, 0xd8,
		0xa9, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01, 0xf8, 0x00, 0x7c, 0x50, 0x4d, 0xc1, 0x61, 0xa7, 0xda,
		0x38, 0x5b, 0x34, 0x4f, 0xd0, 0x3c, 0xb1, 0xfa, 0x5c, 0xd2, 0x3c, 0x01, 0x3b, 0x15, 0x23, 0x75,
		0x12, 0x1d, 0xd8, 0x93, 0x7a, 0x01, 0x49, 0xd2, 0x7d, 0x57, 0x06, 0x49, 0xf2, 0x7b, 0x24, 0xc9,
		0x29, 0xf7, 0x8e, 0x1d, 0xb4, 0xf6, 0x6d, 0x96, 0x1d, 0xb4, 0x0f, 0xd8, 0x68, 0x45, 0x85, 0xf9,
		0x1a, 0x8f, 0xba, 0x69, 0x34, 0xcb, 0xc0, 0x1a, 0xd3, 0x2f, 0x57, 0x9f, 0x7d, 0xb7, 0x4e, 0x73,
		0xf6, 0x8d, 0x3a, 0x07, 0xd7, 0xc3, 0x4e, 0xd3, 0x98, 0xf8, 0xdd, 0xf8, 0x4b, 0x74, 0xaa, 0x57,
		0xe1, 0x59, 0x70, 0x15, 0x76, 0xea, 0xc3, 0xdb, 0xed, 0xf3, 0xe9, 0x83, 0x77, 0xa6, 0x05, 0xa3,
		0xe3, 0xc9, 0x73, 0xb3, 0x41, 0xf7, 0x9e, 0x9e, 0x97, 0x1a, 0xd3, 0x62, 0xd3, 0x35, 0xe1, 0xad,
		0x42, 0x9f, 0xdc, 0xea, 0xbe, 0xb8, 0x4c, 0x3c, 0x3b, 0x75, 0x9f, 0x24, 0x88, 0x9d, 0xba, 0xb9,
		0x5a, 0x07, 0x3b, 0x75, 0xd9, 0xa9, 0xfb, 0x1d, 0x8d, 0xb1, 0x53, 0xb7, 0x80, 0x0e, 0x59, 0xdd,
		0x31, 0xdb, 0x70, 0xd0, 0xf6, 0x1c, 0xb5, 0x2d, 0x87, 0x6d, 0xdd, 0x71, 0x5b, 0x77, 0xe0, 0x56,
		0x1d, 0x79, 0x39, 0xcb, 0x14, 0x8c, 0x80, 0x60, 0x04, 0x44, 0xf9, 0x82, 0x82, 0xfd, 0xe0, 0x60,
		0x3b, 0x48, 0x38, 0x13, 0x2c, 0x9c, 0x09, 0x1a, 0x4e, 0x04, 0x0f, 0xdd, 0x20, 0xa2, 0x1c, 0x4c,
		0x32, 0x0d, 0x33, 0x02, 0x82, 0x11, 0x10, 0x9a, 0x5f, 0x9c, 0x2e, 0x86, 0x85, 0xe7, 0xe0, 0x82,
		0xd8, 0x11, 0x37, 0xb8, 0x6c, 0xa2, 0x8c, 0x80, 0xc0, 0x56, 0x9d, 0x05, 0x08, 0xf6, 0xa4, 0x32,
		0x6a, 0x5b, 0x52, 0x3e, 0x5b, 0xc4, 0x44, 0xd5, 0x0b, 0x79, 0x36, 0x2b, 0x23, 0x41, 0x9e, 0xd5,
		0xc8, 0x2a, 0xa8, 0x19, 0x29, 0x9e, 0x29, 0x6a, 0x46, 0xd4, 0x8c, 0xb2, 0x40, 0x4e, 0xcd, 0x48,
		0x58, 0xc3, 0x90, 0x67, 0xd9, 0xa9, 0x0b, 0x1a, 0x2e, 0x32, 0x1a, 0x86, 0xb5, 0x0c, 0x6e, 0x03,
		0xb7, 0x81, 0xdb, 0xc0, 0x6d, 0xe0, 0x36, 0xd5, 0xda, 0x07, 0xac, 0x65, 0x1b, 0x67, 0x8b, 0xfb,
		0x3e, 0xee, 0xfb, 0x56, 0x9f, 0x4b, 0xee, 0xfb, 0x60, 0x2d, 0x63, 0xa4, 0x4e, 0xa2, 0x03, 0x7b,
		0x52, 0xb9, 0xe8, 0xa3, 0xb4, 0x51, 0x40, 0x49, 0xd0, 0xc5, 0xdd, 0xa0, 0xe2, 0x66, 0x9c, 0x49,
		0x96, 0xeb, 0x3e, 0xfd, 0x1d, 0xb3, 0x5c, 0x37, 0x6f, 0x71, 0x2c, 0xd7, 0x15, 0x95, 0x0c, 0xb3,
		0x0a, 0x66, 0x55, 0xd1, 0x23, 0x3a, 0xcc, 0x2a, 0x98, 0x55, 0xe5, 0x0b, 0x0a, 0xf6, 0x83, 0x83,
		0xed, 0x20, 0xe1, 0x4c, 0xb0, 0x70, 0x26, 0x68, 0x38, 0x11, 0x3c, 0xec, 0x54, 0x36, 0x60, 0x56,
		0xa9, 0x7b, 0x77, 0x98, 0x55, 0x8a, 0x5f, 0x9c, 0x9b, 0x96, 0x85, 0xe7, 0xa0, 0x88, 0xed, 0x88,
		0x1b, 0x5c, 0x36, 0x51, 0x98, 0x55, 0xd8, 0xaa, 0xb3, 0x00, 0xc1, 0x9e, 0x54, 0x96, 0xeb, 0x3e,
		0xdf, 0x68, 0x59, 0xae, 0x4b, 0x92, 0x4d, 0x92, 0x4d, 0x92, 0x4d, 0x92, 0x4d, 0x92, 0xad, 0x79,
		0xde, 0xd9, 0xe3, 0x56, 0x16, 0xf8, 0x00, 0x3f, 0xd8, 0x83, 0x1f, 0x0c, 0x28, 0x03, 0x94, 0x01,
		0xca, 0x00, 0x65, 0x80, 0x32, 0x40, 0x19, 0xa0, 0xcc, 0x32, 0x28, 0x83, 0xa6, 0x0a, 0x7c, 0x00,
		0x3e, 0x00, 0x1f, 0x80, 0x0f, 0xc0, 0x07, 0xd5, 0x14, 0x1c, 0x9a, 0xaa, 0x8d, 0xb3, 0x45, 0xf3,
		0x04, 0xcd, 0x13, 0xab, 0xcf, 0x25, 0xcd, 0x13, 0xd0, 0x54, 0x31, 0x52, 0x27, 0xd1, 0x81, 0x3d,
		0xa9, 0x2c, 0xd7, 0x2d, 0x80, 0x2b, 0x83, 0x2d, 0xf9, 0x68, 0xb6, 0x24, 0x5b, 0x76, 0x5d, 0x31,
		0x5e, 0xb6, 0xec, 0x7e, 0xcf, 0x58, 0x8b, 0xba, 0x6e, 0xb7, 0x35, 0x7f, 0x7e, 0xd6, 0xee, 0xae,
		0xd0, 0xb7, 0x06, 0xf7, 0x58, 0x95, 0x73, 0xac, 0xbe, 0x56, 0x77, 0x8b, 0xb5, 0xba, 0xcf, 0x90,
		0xc8, 0x5a, 0x5d, 0x71, 0x34, 0xc6, 0x5a, 0xdd, 0x27, 0x6a, 0x4c, 0x6d, 0xad, 0xae, 0xf9, 0x9c,
		0x9a, 0xa8, 0x67, 0x7a, 0x7e, 0x64, 0x3e, 0xa7, 0xfe, 0xc7, 0xc1, 0xd0, 0x1f, 0x83, 0x80, 0x5e,
		0x18, 0x59, 0x58, 0xb5, 0xfb, 0x0f, 0xcf, 0xa2, 0x45, 0xc9, 0xb6, 0xd0, 0x85, 0xa4, 0xd9, 0x7d,
		0x74, 0xa1, 0x3b, 0x6c, 0x63, 0x83, 0x35, 0xc6, 0x05, 0x0e, 0x8c, 0xb6, 0x02, 0xa4, 0xf5, 0x40,
		0x69, 0x3d, 0x60, 0x5a, 0x0d, 0x9c, 0xe5, 0x2c, 0x08, 0xa9, 0x5f, 0xef, 0x59, 0xec, 0x0a, 0x52,
		0xee, 0x06, 0x2a, 0xc9, 0x0c, 0x2c, 0x13, 0xf5, 0xfc, 0xde, 0x34, 0xfe, 0xfb, 0xf1, 0x60, 0x64,
		0x65, 0x20, 0xd6, 0xfd, 0x67, 0x00, 0xf8, 0x00, 0x7c, 0x00, 0x3e, 0x00, 0x1f, 0x80, 0x0f, 0xc0,
		0x07, 0xe0, 0xb3, 0x76, 0xc0, 0x87, 0xfb, 0xac, 0xa7, 0x40, 0x38, 0x87, 0xef, 0xb3, 0x14, 0xae,
		0x59, 0x05, 0xef, 0x7f, 0x5e, 0x14, 0xc8, 0xfc, 0x2a, 0xe6, 0x73, 0x1a, 0x07, 0xfe, 0x68, 0xfc,
		0x1e, 0x2f, 0xfb, 0xb2, 0xbe, 0xaf, 0xf2, 0xe9, 0xa3, 0x89, 0xc4, 0x41, 0xb3, 0xe2, 0xad, 0xcb,
		0xcb, 0x97, 0x99, 0xfd, 0xfa, 0x51, 0x70, 0x63, 0xbc, 0x7f, 0x7b, 0x3f, 0x4d, 0xe3, 0xaf, 0x9f,
		0x7e, 0x19, 0x9a, 0x64, 0xbf, 0xde, 0xfc, 0xb0, 0xdd, 0x39, 0x6f, 0xd4, 0x0f, 0xab, 0x67, 0xed,
		0x9f, 0x4a, 0x7e, 0x3b, 0x33, 0x79, 0xb9, 0xeb, 0x74, 0x37, 0xf3, 0xc4, 0xb7, 0x5f, 0x8a, 0xbc,
		0xff, 0xc8, 0x24, 0xdd, 0x38, 0x1c, 0xaa, 0xb6, 0x0a, 0x65, 0xc7, 0xad, 0x1e, 0x75, 0xfb, 0xa3,
		0x9e, 0xf1, 0xd2, 0x8f, 0x61, 0xe2, 0x75, 0x07, 0x51, 0x1a, 0x84, 0x91, 0x89, 0xbd, 0xab, 0x41,
		0xec, 0xd5, 0x9b, 0xb7, 0xdb, 0xde, 0xac, 0x97, 0xc0, 0x4b, 0x86, 0xa6, 0x1b, 0x5e, 0x85, 0xdd,
		0x3f, 0x67, 0x01, 0x6d, 0x14, 0x4f, 0xc3, 0xaa, 0x92, 0x8d, 0x58, 0xc8, 0x83, 0x16, 0xcf, 0x61,
		0x6f, 0xe1, 0x15, 0x29, 0x82, 0x49, 0x9b, 0x49, 0xd0, 0xd2, 0xb1, 0x7c, 0xae, 0x95, 0x00, 0x86,
		0xad, 0x7e, 0xfa, 0x45, 0xa1, 0xd0, 0x93, 0x12, 0x68, 0x77, 0x19, 0xac, 0x57, 0x44, 0xdb, 0x9d,
		0xf2, 0x69, 0x2f, 0x93, 0x39, 0xd4, 0xf9, 0x1f, 0x02, 0x01, 0x33, 0xad, 0x84, 0xc3, 0xdb, 0x5d,
		0xbf, 0x1f, 0x5c, 0x9a, 0xbe, 0xe9, 0x65, 0xef, 0x4c, 0xca, 0x58, 0xb3, 0x58, 0xbd, 0x52, 0xaa,
		0xd0, 0x21, 0x94, 0x6d, 0x20, 0x13, 0x2f, 0x1b, 0x6b, 0x94, 0x89, 0xf5, 0xca, 0xc2, 0x5a, 0xf0,
		0x47, 0xbd, 0xec, 0xab, 0x8e, 0x70, 0x54, 0xcb, 0xba, 0xc5, 0x2a, 0x5a, 0x48, 0x37, 0x7c, 0x2d,
		0x8d, 0x86, 0xd4, 0x6b, 0xb7, 0x5d, 0x92, 0x5a, 0xb2, 0xae, 0xdb, 0x0d, 0xba, 0x6e, 0x8b, 0x59,
		0xd7, 0xa1, 0xeb, 0xb6, 0xa8, 0x39, 0x5a, 0x59, 0xba, 0x6e, 0xbb, 0x73, 0x1f, 0xa2, 0x5c, 0x6f,
		0x9a, 0xc9, 0x2d, 0xf9, 0xca, 0x35, 0x9a, 0x21, 0x4a, 0xe0, 0xb0, 0xad, 0x3b, 0x6e, 0xeb, 0x0e,
		0xdc, 0xaa, 0x23, 0xd7, 0x71, 0xe8, 0x4a, 0x8e, 0x5d, 0xdd, 0xc1, 0x67, 0x02, 0x59, 0xb9, 0xc6,
		0xe4, 0x30, 0xaf, 0xfc, 0xc1, 0xc1, 0x76, 0x90, 0x70, 0x26, 0x58, 0x38, 0x13, 0x34, 0x9c, 0x08,
		0x1e, 0xba, 0x41, 0x44, 0x39, 0x98, 0x64, 0x1a, 0x66, 0xe5, 0x1a, 0x2b, 0xd7, 0x34, 0xbf, 0x38,
		0x53, 0xc3, 0x16, 0x9e, 0x83, 0x81, 0x4c, 0x8e, 0xb8, 0xc1, 0x65, 0x13, 0x65, 0xe5, 0x1a, 0xb6,
		0xea, 0x2c, 0x40, 0xb0, 0x27, 0xf5, 0xa2, 0xd4, 0x40, 0xc8, 0xd2, 0xd0, 0xad, 0x4c, 0xfe, 0x97,
		0xeb, 0x41, 0xea, 0x0f, 0xba, 0x7e, 0x77, 0x70, 0x33, 0x8c, 0x4d, 0x92, 0x98, 0x9e, 0xdf, 0x37,
		0xc1, 0xd5, 0xf8, 0x61, 0xbe, 0x32, 0x17, 0xfd, 0xd9, 0xea, 0x65, 0x59, 0x4d, 0x56, 0x46, 0x62,
		0x59, 0x8d, 0x46, 0x56, 0x41, 0xcd, 0x48, 0xf1, 0x4c, 0x51, 0x33, 0xa2, 0x66, 0x94, 0x05, 0x72,
		0x6a, 0x46, 0xc2, 0x1a, 0x66, 0x59, 0x8d, 0xfe, 0xb2, 0x1a, 0xd0, 0x30, 0x68, 0x38, 0x3f, 0xf5,
		0xb2, 0x25, 0x08, 0xdc, 0x06, 0x6e, 0x03, 0xb7, 0x81, 0xdb, 0xc0, 0x6d, 0xaa, 0xb5, 0x0f, 0xb6,
		0x04, 0xd9, 0x38, 0x5b, 0xdc, 0xf7, 0x71, 0xdf, 0xb7, 0xfa, 0x5c, 0x72, 0xdf, 0xc7, 0x96, 0x20,
		0x8c, 0xd4, 0x49, 0x74, 0x60, 0x4f, 0x2a, 0x17, 0x7d, 0x94, 0x36, 0x0a, 0x28, 0x89, 0xf5, 0x4c,
		0xda, 0x43, 0x07, 0xee, 0x51, 0xca, 0x97, 0x36, 0xdf, 0xbc, 0x9a, 0x11, 0x76, 0x98, 0xe3, 0xfb,
		0xf8, 0x57, 0xac, 0xb2, 0x4f, 0xe6, 0x5e, 0x5a, 0xa6, 0xb1, 0x57, 0xe6, 0xdb, 0x2c, 0x4c, 0x9d,
		0x58, 0xb5, 0x05, 0xb1, 0x4a, 0x40, 0x32, 0xc4, 0x2a, 0x88, 0x55, 0x45, 0x0f, 0xe8, 0x10, 0xab,
		0x20, 0x56, 0x95, 0x2f, 0x28, 0xd8, 0x0f, 0x0e, 0xb6, 0x83, 0x84, 0x33, 0xc1, 0xc2, 0x99, 0xa0,
		0xe1, 0x44, 0xf0, 0xb0, 0x53, 0xd8, 0x80, 0x58, 0xa5, 0xee, 0xdd, 0x21, 0x56, 0x29, 0x7e, 0x71,
		0x2e, 0x5a, 0x16, 0x9e, 0x83, 0x1a, 0xb6, 0x23, 0x6e, 0x70, 0xd9, 0x44, 0x21, 0x56, 0x61, 0xab,
		0xce, 0x02, 0x04, 0x7b, 0x52, 0x2f, 0xe8, 0x68, 0x7c, 0xb6, 0xd1, 0x2e, 0xad, 0x5c, 0x37, 0x9f,
		0xbb, 0xc6, 0xf4, 0x4c, 0xcf, 0x2a, 0xc9, 0x67, 0xc5, 0xe3, 0x90, 0x64, 0x93, 0x64, 0x93, 0x64,
		0x93, 0x64, 0x93, 0x64, 0x97, 0x26, 0xc9, 0x5e, 0x3f, 0x26, 0x0a, 0xf4, 0x60, 0x69, 0xe4, 0x00,
		0x3d, 0x58, 0x13, 0x7c, 0x03, 0xca, 0x00, 0x65, 0x80, 0x32, 0x40, 0x19, 0xa0, 0x0c, 0x50, 0x06,
		0x28, 0x73, 0x09, 0x94, 0xc1, 0x52, 0x05, 0x3e, 0x00, 0x1f, 0x80, 0x0f, 0xc0, 0x07, 0xe0, 0x83,
		0x6a, 0x0a, 0x0e, 0x4b, 0xd5, 0xc6, 0xd9, 0xa2, 0x79, 0x82, 0xe6, 0x89, 0xd5, 0xe7, 0x92, 0xe6,
		0x09, 0x58, 0xaa, 0x18, 0xa9, 0x93, 0xe8, 0xc0, 0x9e, 0xd4, 0x0b, 0xc8, 0x92, 0xee, 0xbb, 0x32,
		0xc8, 0x92, 0x8f, 0x25, 0x4b, 0x4e, 0x39, 0x78, 0x6c, 0x3b, 0xb7, 0x6f, 0xbb, 0xda, 0x36, 0x5b,
		0x38, 0x5b, 0xad, 0xa8, 0x30, 0x61, 0x9f, 0xb7, 0x6a, 0x7c, 0xf7, 0x78, 0xfa, 0x05, 0x66, 0x1b,
		0xc7, 0x3b, 0xd3, 0x3a, 0xd2, 0xf1, 0xe4, 0xf1, 0x0b, 0xba, 0x8a, 0x5f, 0xd0, 0xec, 0x97, 0xfb,
		0xd5, 0x62, 0xd3, 0x35, 0xe1, 0xad, 0x42, 0xfb, 0xdc, 0xea, 0x76, 0xb9, 0x4c, 0x3c, 0x2b, 0x77,
		0x9f, 0x24, 0x88, 0x95, 0xbb, 0xb9, 0x5a, 0x07, 0x2b, 0x77, 0x59, 0xb9, 0xfb, 0x1d, 0x8d, 0xb1,
		0x72, 0xb7, 0x80, 0x0e, 0x59, 0xdd, 0x31, 0xdb, 0x70, 0xd0, 0xf6, 0x1c, 0xb5, 0x2d, 0x87, 0x6d,
		0xdd, 0x71, 0x5b, 0x77, 0xe0, 0x56, 0x1d, 0x79, 0x39, 0xab, 0x17, 0x4c, 0x86, 0x60, 0x32, 0x44,
		0xf9, 0x82, 0x82, 0xfd, 0xe0, 0x60, 0x3b, 0x48, 0x38, 0x13, 0x2c, 0x9c, 0x09, 0x1a, 0x4e, 0x04,
		0x0f, 0xdd, 0x20, 0xa2, 0x1c, 0x4c, 0x32, 0x0d, 0x33, 0x19, 0x82, 0xc9, 0x10, 0x9a, 0x5f, 0x9c,
		0xe6, 0x86, 0x85, 0xe7, 0xe0, 0xde, 0xd8, 0x11, 0x37, 0xb8, 0x6c, 0xa2, 0x4c, 0x86, 0xc0, 0x56,
		0x9d, 0x05, 0x08, 0xf6, 0xa4, 0x32, 0x89, 0x5b, 0x52, 0x3e, 0x4b, 0xc6, 0x44, 0xd5, 0x0b, 0xa7,
		0x36, 0x2b, 0x23, 0xc1, 0xa9, 0xd5, 0xc8, 0x2a, 0xa8, 0x19, 0x29, 0x9e, 0x29, 0x6a, 0x46, 0xd4,
		0x8c, 0xb2, 0x40, 0x4e, 0xcd, 0x48, 0x58, 0xc3, 0x70, 0x6a, 0x59, 0xb9, 0x0b, 0x1a, 0x2e, 0x32,
		0x1a, 0x86, 0xcc, 0x0c, 0x6e, 0x03, 0xb7, 0x81, 0xdb, 0xc0, 0x6d, 0xe0, 0x36, 0xd5, 0xda, 0x07,
		0x64, 0x66, 0x1b, 0x67, 0x8b, 0xfb, 0x3e, 0xee, 0xfb, 0x56, 0x9f, 0x4b, 0xee, 0xfb, 0x20, 0x33,
		0x63, 0xa4, 0x4e, 0xa2, 0x03, 0x7b, 0x52, 0xb9, 0xe8, 0xa3, 0xb4, 0x51, 0x40, 0x49, 0xb0, 0xc8,
		0xdd, 0x62, 0xe6, 0x66, 0xdc, 0x49, 0x76, 0xef, 0x3e, 0xfd, 0x5d, 0xb3, 0x7b, 0x37, 0x6f, 0x71,
		0xec, 0xde, 0x15, 0x95, 0x0c, 0xc3, 0x0a, 0x86, 0x55, 0xd1, 0x23, 0x3b, 0x0c, 0x2b, 0x18, 0x56,
		0xe5, 0x0b, 0x0a, 0xf6, 0x83, 0x83, 0xed, 0x20, 0xe1, 0x4c, 0xb0, 0x70, 0x26, 0x68, 0x38, 0x11,
		0x3c, 0xec, 0x54, 0x38, 0x60, 0x58, 0xa9, 0x7b, 0x77, 0x18, 0x56, 0x8a, 0x5f, 0x9c, 0x1b, 0x97,
		0x85, 0xe7, 0xa0, 0x98, 0xed, 0x88, 0x1b, 0x5c, 0x36, 0x51, 0x18, 0x56, 0xd8, 0xaa, 0xb3, 0x00,
		0xc1, 0x9e, 0x54, 0x76, 0xef, 0x3e, 0xdf, 0x68, 0xd9, 0xbd, 0x4b, 0x92, 0x4d, 0x92, 0x4d, 0x92,
		0x4d, 0x92, 0x4d, 0x92, 0xad, 0x79, 0xde, 0x59, 0xf3, 0x56, 0x16, 0xf8, 0x00, 0x4f, 0xd8, 0x83,
		0x27, 0x0c, 0x28, 0x03, 0x94, 0x01, 0xca, 0x00, 0x65, 0x80, 0x32, 0x40, 0x19, 0xa0, 0xcc, 0x32,
		0x28, 0x83, 0xae, 0x0a, 0x7c, 0x00, 0x3e, 0x00, 0x1f, 0x80, 0x0f, 0xc0, 0x07, 0xd5, 0x14, 0x1c,
		0xba, 0xaa, 0x8d, 0xb3, 0x45, 0xf3, 0x04, 0xcd, 0x13, 0xab, 0xcf, 0x25, 0xcd, 0x13, 0xd0, 0x55,
		0x31, 0x52, 0x27, 0xd1, 0x81, 0x3d, 0xa9, 0xec, 0xde, 0x2d, 0x80, 0x2b, 0x83, 0x35, 0xf9, 0x64,
		0xd6, 0x24, 0x4b, 0x78, 0x5d, 0x31, 0x62, 0x96, 0xf0, 0x3e, 0xd6, 0x68, 0x0b, 0xbe, 0x8d, 0xb7,
		0x35, 0xff, 0x1a, 0x45, 0xdd, 0xca, 0xfb, 0xa2, 0x40, 0xa7, 0xab, 0x62, 0x3e, 0xa7, 0x71, 0xe0,
		0x8f, 0xc6, 0x6f, 0xee, 0xb2, 0x2f, 0x9b, 0xea, 0x57, 0x3e, 0x7d, 0x34, 0x91, 0x78, 0x42, 0xab,
		0xb8, 0xeb, 0xf6, 0xe5, 0xcb, 0xec, 0x78, 0xfa, 0xe3, 0xa3, 0xe0, 0xfd, 0xdb, 0xfb, 0x69, 0x5a,
		0x86, 0xf2, 0xd3, 0x2f, 0x43, 0x93, 0xec, 0xd7, 0x9b, 0x1f, 0x76, 0x3b, 0xc7, 0xd5, 0x83, 0xda,
		0x71, 0xed, 0xa8, 0x73, 0xde, 0xa8, 0x1f, 0x56, 0xcf, 0xda, 0x3f, 0x95, 0x7c, 0x37, 0xee, 0xe4,
		0x25, 0xaf, 0xd3, 0x66, 0xdc, 0x1f, 0xb4, 0x82, 0x52, 0x8c, 0x48, 0x38, 0x32, 0x49, 0x37, 0x0e,
		0x87, 0xaa, 0x88, 0x32, 0x3b, 0x7e, 0xf5, 0xa8, 0xdb, 0x1f, 0xf5, 0x8c, 0x97, 0x7e, 0x0c, 0x13,
		0xaf, 0x3b, 0x88, 0xd2, 0x20, 0x8c, 0x4c, 0xec, 0x5d, 0x0d, 0x62, 0xaf, 0xde, 0xbc, 0xdd, 0xf5,
		0x66, 0x21, 0xc6, 0x9b, 0xc5, 0x18, 0x2f, 0x19, 0x9a, 0x6e, 0x78, 0x15, 0x76, 0xff, 0x9c, 0xc5,
		0xf1, 0x51, 0x3c, 0x45, 0x13, 0x4a, 0x36, 0x63, 0xe1, 0xfa, 0x60, 0xf1, 0x5c, 0xf6, 0x16, 0x5e,
		0x95, 0xe2, 0xb5, 0xa1, 0xcd, 0xbb, 0x82, 0xa5, 0x63, 0x9a, 0x97, 0xb5, 0x90, 0x0b, 0x58, 0xfd,
		0xf4, 0x8b, 0x42, 0xa1, 0x2b, 0xa5, 0x9c, 0xa5, 0x08, 0xb9, 0x8a, 0xa0, 0xd3, 0xc9, 0x3b, 0x1b,
		0x91, 0x39, 0xe3, 0xf9, 0x9f, 0x09, 0x01, 0xab, 0xad, 0x4c, 0x5e, 0xdd, 0xfc, 0x95, 0x49, 0xd9,
		0x6c, 0x16, 0xc2, 0x97, 0xa4, 0x09, 0x9d, 0x41, 0xd9, 0x11, 0x47, 0xe2, 0xcd, 0x18, 0x1a, 0x4d,
		0x17, 0x7a, 0xcd, 0x15, 0x5a, 0x28, 0x48, 0xbd, 0x59, 0x42, 0x1d, 0xe8, 0xa8, 0x36, 0x3f, 0x14,
		0xab, 0xa6, 0x21, 0x3d, 0x42, 0xa8, 0xd2, 0x9d, 0x9f, 0x79, 0x61, 0x23, 0x9e, 0x1f, 0xcb, 0x99,
		0x3c, 0x61, 0x83, 0xd2, 0x99, 0x05, 0xa7, 0xd6, 0xbd, 0xa6, 0xd9, 0xad, 0xa6, 0xdf, 0x9d, 0x66,
		0xb3, 0xc4, 0xa3, 0xda, 0x7d, 0xe6, 0x46, 0x91, 0x47, 0xab, 0xbb, 0xac, 0xd8, 0x57, 0x34, 0x5a,
		0xb3, 0xdb, 0x2a, 0x89, 0x89, 0x7a, 0x7e, 0x6f, 0x4a, 0x8e, 0xf2, 0xe3, 0xc1, 0xc8, 0xca, 0x9c,
		0xce, 0xfb, 0xcf, 0xa0, 0x35, 0x22, 0xcf, 0x02, 0x2b, 0x4c, 0x93, 0x0d, 0x76, 0xa1, 0x3b, 0xfc,
		0x74, 0x43, 0x7b, 0xf8, 0xe9, 0x06, 0xc3, 0x4f, 0x8b, 0x1f, 0x10, 0xad, 0x07, 0x46, 0xeb, 0x01,
		0xd2, 0x6a, 0xa0, 0xd4, 0x09, 0x98, 0x4a, 0x81, 0x33, 0xd3, 0xa4, 0x7a, 0xbb, 0xb5, 0x45, 0x96,
		0x96, 0x32, 0x3b, 0xab, 0xec, 0x3d, 0x56, 0xd6, 0x57, 0x1a, 0xd0, 0xbf, 0xe4, 0x94, 0x61, 0x38,
		0x79, 0x27, 0x30, 0xef, 0x5b, 0xd2, 0x58, 0x46, 0x20, 0xd8, 0xe1, 0x23, 0x58, 0x1f, 0x5d, 0xec,
		0xe8, 0xd2, 0x2b, 0x30, 0x2d, 0x49, 0xa5, 0xcc, 0x44, 0x99, 0x89, 0x32, 0x13, 0x65, 0x26, 0xca,
		0x4c, 0x4a, 0x75, 0xfe, 0x7b, 0xc7, 0x5b, 0xa5, 0xde, 0xaf, 0xec, 0x90, 0x29, 0x83, 0x50, 0x06,
		0xa1, 0x0c, 0x42, 0x19, 0xc4, 0x25, 0x07, 0x9f, 0x09, 0x64, 0x07, 0x0c, 0xa3, 0x4c, 0xbc, 0xf2,
		0x07, 0x07, 0xdb, 0x41, 0xc2, 0x99, 0x60, 0xe1, 0x4c, 0xd0, 0x70, 0x22, 0x78, 0xe8, 0x06, 0x11,
		0xe5, 0x60, 0x92, 0x69, 0x98, 0x1d, 0x30, 0xec, 0x80, 0xd1, 0xfc, 0xe2, 0x8c, 0x31, 0x59, 0x78,
		0x0e, 0x26, 0x44, 0x38, 0xe2, 0x06, 0x97, 0x4d, 0x94, 0x1d, 0x30, 0xd8, 0xaa, 0xb3, 0x00, 0xc1,
		0x9e, 0x54, 0x96, 0xef, 0x4b, 0xca, 0x5f, 0xc7, 0xe5, 0xfb, 0x4c, 0xcf, 0x67, 0x7a, 0xbe, 0xbc,
		0xdb, 0xa2, 0x66, 0x24, 0x2a, 0x98, 0x9a, 0x11, 0x35, 0x23, 0x6a, 0x46, 0x36, 0xc1, 0x19, 0xd3,
		0xf3, 0xf5, 0xdd, 0xbb, 0xf6, 0xf4, 0x7c, 0xd0, 0x30, 0x68, 0x38, 0x3f, 0xf5, 0xb2, 0xb6, 0x00,
		0xdc, 0x06, 0x6e, 0x03, 0xb7, 0x81, 0xdb, 0xc0, 0x6d, 0xaa, 0xb5, 0x0f, 0xd6, 0x16, 0xd8, 0x38,
		0x5b, 0xdc, 0xf7, 0x71, 0xdf, 0xb7, 0xfa, 0x5c, 0x72, 0xdf, 0xc7, 0xda, 0x02, 0x8c, 0xd4, 0x49,
		0x74, 0x60, 0x4f, 0x2a, 0x17, 0x7d, 0x94, 0x36, 0x0a, 0x28, 0x89, 0x7d, 0x11, 0xf6, 0xa8, 0xab,
		0x8b, 0x54, 0x49, 0x15, 0x1e, 0xab, 0x9e, 0x69, 0x7d, 0x55, 0x59, 0x1c, 0x10, 0x58, 0x19, 0xd6,
		0x33, 0x11, 0x5b, 0x72, 0x42, 0xd5, 0x16, 0x84, 0x2a, 0x01, 0xc9, 0x10, 0xaa, 0x20, 0x54, 0x15,
		0x3d, 0x90, 0x43, 0xa8, 0x82, 0x50, 0x55, 0xbe, 0xa0, 0x60, 0x3f, 0x38, 0xd8, 0x0e, 0x12, 0xce,
		0x04, 0x0b, 0x67, 0x82, 0x86, 0x13, 0xc1, 0xc3, 0x4e, 0x41, 0x03, 0x42, 0x95, 0xba, 0x77, 0x87,
		0x50, 0xa5, 0xf8, 0xc5, 0xb9, 0x60, 0x59, 0x78, 0x0e, 0x6a, 0xd7, 0x8e, 0xb8, 0xc1, 0x65, 0x13,
		0x85, 0x50, 0x85, 0xad, 0x3a, 0x0b, 0x10, 0xec, 0x49, 0xbd, 0xa0, 0x93, 0xf1, 0xd9, 0x46, 0xbb,
		0xb4, 0xeb, 0xd5, 0x7c, 0xee, 0x1a, 0xd3, 0x33, 0x3d, 0xab, 0xe4, 0x9e, 0x15, 0x8f, 0x43, 0x92,
		0x4d, 0x92, 0x4d, 0x92, 0x4d, 0x92, 0x4d, 0x92, 0x5d, 0x9a, 0x24, 0x7b, 0xfd, 0x18, 0x28, 0xd0,
		0x82, 0xa5, 0x91, 0x03, 0xb4, 0x60, 0x4d, 0xf0, 0x0d, 0x28, 0x03, 0x94, 0x01, 0xca, 0x00, 0x65,
		0x80, 0x32, 0x40, 0x19, 0xa0, 0xcc, 0x25, 0x50, 0x06, 0x3b, 0x15, 0xf8, 0x00, 0x7c, 0x00, 0x3e,
		0x00, 0x1f, 0x80, 0x0f, 0xaa, 0x29, 0x38, 0xec, 0x54, 0x1b, 0x67, 0x8b, 0xe6, 0x09, 0x9a, 0x27,
		0x56, 0x9f, 0x4b, 0x9a, 0x27, 0x60, 0xa7, 0x62, 0xa4, 0x4e, 0xa2, 0x03, 0x7b, 0x52, 0x2f, 0x20,
		0x49, 0xba, 0xef, 0xca, 0x20, 0x49, 0x7e, 0x8f, 0x24, 0x39, 0xe5, 0xde, 0xb1, 0x83, 0xd6, 0xbe,
		0xcd, 0xb2, 0x83, 0xf6, 0x01, 0x1b, 0xad, 0xa8, 0x30, 0x5f, 0xe3, 0x51, 0x37, 0x8d, 0x66, 0x19,
		0x58, 0x63, 0xfa, 0xe5, 0xea, 0xb3, 0xef, 0xd6, 0x69, 0xce, 0xbe, 0x51, 0xe7, 0xe0, 0x7a, 0xd8,
		0x69, 0x1a, 0x13, 0xbf, 0x1b, 0x7f, 0x89, 0x4e, 0xf5, 0x2a, 0x3c, 0x0b, 0xae, 0xc2, 0x4e, 0x7d,
		0x78, 0xbb, 0x7b, 0x3e, 0x7d, 0xf0, 0xce, 0xb4, 0x60, 0x74, 0x3c, 0x79, 0x6e, 0x36, 0xe8, 0xde,
		0xd3, 0xf3, 0x52, 0x63, 0x5a, 0x6c, 0xba, 0x26, 0xbc, 0x55, 0xe8, 0x93, 0x5b, 0xdd, 0x17, 0x97,
		0x89, 0x67, 0xa7, 0xee, 0x93, 0x04, 0xb1, 0x53, 0x37, 0x57, 0xeb, 0x60, 0xa7, 0x2e, 0x3b, 0x75,
		0xbf, 0xa3, 0x31, 0x76, 0xea, 0x16, 0xd0, 0x21, 0xab, 0x3b, 0x66, 0x1b, 0x0e, 0xda, 0x9e, 0xa3,
		0xb6, 0xe5, 0xb0, 0xad, 0x3b, 0x6e, 0xeb, 0x0e, 0xdc, 0xaa, 0x23, 0x2f, 0x67, 0x99, 0x82, 0x11,
		0x10, 0x8c, 0x80, 0x28, 0x5f, 0x50, 0xb0, 0x1f, 0x1c, 0x6c, 0x07, 0x09, 0x67, 0x82, 0x85, 0x33,
		0x41, 0xc3, 0x89, 0xe0, 0xa1, 0x1b, 0x44, 0x94, 0x83, 0x49, 0xa6, 0x61, 0x46, 0x40, 0x30, 0x02,
		0x42, 0xf3, 0x8b, 0xd3, 0xc5, 0xb0, 0xf0, 0x1c, 0x5c, 0x10, 0x3b, 0xe2, 0x06, 0x97, 0x4d, 0x94,
		0x11, 0x10, 0xd8, 0xaa, 0xb3, 0x00, 0xc1, 0x9e, 0x54, 0x46, 0x6d, 0x4b, 0xca, 0x67, 0x8b, 0x98,
		0xa8, 0x7a, 0x21, 0xcf, 0x66, 0x65, 0x24, 0xc8, 0xb3, 0x1a, 0x59, 0x05, 0x35, 0x23, 0xc5, 0x33,
		0x45, 0xcd, 0x88, 0x9a, 0x51, 0x16, 0xc8, 0xa9, 0x19, 0x09, 0x6b, 0x18, 0xf2, 0x2c, 0x3b, 0x75,
		0x41, 0xc3, 0x45, 0x46, 0xc3, 0xb0, 0x96, 0xc1, 0x6d, 0xe0, 0x36, 0x70, 0x1b, 0xb8, 0x0d, 0xdc,
		0xa6, 0x5a, 0xfb, 0x80, 0xb5, 0x6c, 0xe3, 0x6c, 0x71, 0xdf, 0xc7, 0x7d, 0xdf, 0xea, 0x73, 0xc9,
		0x7d, 0x1f, 0xac, 0x65, 0x8c, 0xd4, 0x49, 0x74, 0x60, 0x4f, 0x2a, 0x17, 0x7d, 0x94, 0x36, 0x0a,
		0x28, 0x09, 0xba, 0xb8, 0x1b, 0x54, 0xdc, 0x8c, 0x33, 0xc9, 0x72, 0xdd, 0xa7, 0xbf, 0x63, 0x96,
		0xeb, 0xe6, 0x2d, 0x8e, 0xe5, 0xba, 0xa2, 0x92, 0x61, 0x56, 0xc1, 0xac, 0x2a, 0x7a, 0x44, 0x87,
		0x59, 0x05, 0xb3, 0xaa, 0x7c, 0x41, 0xc1, 0x7e, 0x70, 0xb0, 0x1d, 0x24, 0x9c, 0x09, 0x16, 0xce,
		0x04, 0x0d, 0x27, 0x82, 0x87, 0x9d, 0xca, 0x06, 0xcc, 0x2a, 0x75, 0xef, 0x0e, 0xb3, 0x4a, 0xf1,
		0x8b, 0x73, 0xd3, 0xb2, 0xf0, 0x1c, 0x14, 0xb1, 0x1d, 0x71, 0x83, 0xcb, 0x26, 0x0a, 0xb3, 0x0a,
		0x5b, 0x75, 0x16, 0x20, 0xd8, 0x93, 0xca, 0x72, 0xdd, 0xe7, 0x1b, 0x2d, 0xcb, 0x75, 0x49, 0xb2,
		0x49, 0xb2, 0x49, 0xb2, 0x49, 0xb2, 0x49, 0xb2, 0x35, 0xcf, 0x3b, 0x7b, 0xdc, 0xca, 0x02, 0x1f,
		0xe0, 0x07, 0x7b, 0xf0, 0x83, 0x01, 0x65, 0x80, 0x32, 0x40, 0x19, 0xa0, 0x0c, 0x50, 0x06, 0x28,
		0x03, 0x94, 0x59, 0x06, 0x65, 0xd0, 0x54, 0x81, 0x0f, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01, 0xf8,
		0xa0, 0x9a, 0x82, 0x43, 0x53, 0xb5, 0x71, 0xb6, 0x68, 0x9e, 0xa0, 0x79, 0x62, 0xf5, 0xb9, 0xa4,
		0x79, 0x02, 0x9a, 0x2a, 0x46, 0xea, 0x24, 0x3a, 0xb0, 0x27, 0x95, 0xe5, 0xba, 0x05, 0x70, 0x65,
		0xb0, 0x25, 0x1f, 0xcd, 0x96, 0x64, 0xcb, 0xae, 0x2b, 0xc6, 0xcb, 0x96, 0xdd, 0xef, 0x19, 0x6b,
		0x51, 0xd7, 0xed, 0xb6, 0xe6, 0xcf, 0xcf, 0xda, 0xdd, 0x15, 0xfa, 0xd6, 0xe0, 0x1e, 0xab, 0x72,
		0x8e, 0xd5, 0xd7, 0xea, 0x6e, 0xb1, 0x56, 0xf7, 0x19, 0x12, 0x59, 0xab, 0x2b, 0x8e, 0xc6, 0x58,
		0xab, 0xfb, 0x44, 0x8d, 0xa9, 0xad, 0xd5, 0x4d, 0x4c, 0xd4, 0xf3, 0x7b, 0xd3, 0xe6, 0x1b, 0x3f,
		0x1e, 0x8c, 0xac, 0xcc, 0x81, 0xb8, 0xff, 0x0c, 0x5a, 0x14, 0x6c, 0x0b, 0x5d, 0x47, 0x9a, 0xdd,
		0x46, 0x17, 0xba, 0xc3, 0x35, 0x36, 0x58, 0x5b, 0x5c, 0xe0, 0x40, 0x68, 0x2b, 0x20, 0x5a, 0x0f,
		0x8c, 0xd6, 0x03, 0xa4, 0xd5, 0x40, 0x59, 0xce, 0x02, 0x90, 0xfa, 0x75, 0x9e, 0xc5, 0x2e, 0x20,
		0xe5, 0xee, 0x1f, 0xca, 0x38, 0x94, 0x71, 0x1e, 0x5b, 0xc6, 0x51, 0xa8, 0x2e, 0x0a, 0x96, 0x3d,
		0x5e, 0x14, 0xc8, 0xfc, 0x2a, 0xe6, 0x73, 0x1a, 0x07, 0xfe, 0x68, 0xfc, 0x1e, 0x2f, 0xfb, 0xb2,
		0xbe, 0xaf, 0xf2, 0xe9, 0xa3, 0x89, 0xc4, 0x41, 0xb3, 0x62, 0xb1, 0xe1, 0xe5, 0xcb, 0xcc, 0x7e,
		0xfd, 0x28, 0xb8, 0x31, 0xde, 0xbf, 0xbd, 0x9f, 0xa6, 0xf1, 0xd7, 0x4f, 0xbf, 0x0c, 0x4d, 0xb2,
		0x5f, 0x6f, 0x7e, 0xd8, 0xed, 0x9c, 0x37, 0xea, 0x87, 0xd5, 0xb3, 0xf6, 0x4f, 0x25, 0x2f, 0x4a,
		0x4c, 0x5e, 0xee, 0x3a, 0x95, 0x24, 0x9e, 0xf8, 0xf6, 0x4b, 0x31, 0xf2, 0xf1, 0xc8, 0x24, 0xdd,
		0x38, 0x1c, 0xaa, 0xde, 0x90, 0x65, 0xc7, 0xad, 0x1e, 0x75, 0xfb, 0xa3, 0x9e, 0xf1, 0xd2, 0x8f,
		0x61, 0xe2, 0x75, 0x07, 0x51, 0x1a, 0x84, 0x91, 0x89, 0xbd, 0xab, 0x41, 0xec, 0xd5, 0x9b, 0xb7,
		0xbb, 0xde, 0xac, 0x84, 0xee, 0x25, 0x43, 0xd3, 0x0d, 0xaf, 0xc2, 0xee, 0x9f, 0xb3, 0x80, 0x36,
		0x8a, 0xa7, 0x61, 0x55, 0xc9, 0x46, 0x2c, 0xe4, 0x41, 0x8b, 0xe7, 0xb0, 0xb7, 0xf0, 0x8a, 0x14,
		0xc1, 0xa4, 0xcd, 0x24, 0x68, 0xe9, 0x58, 0x3e, 0xd7, 0x4a, 0x00, 0xc3, 0x56, 0x3f, 0xfd, 0xa2,
		0x50, 0xe8, 0x49, 0x09, 0xb4, 0xbb, 0x0c, 0xd6, 0x2b, 0xa2, 0xb7, 0x7c, 0xf9, 0xdc, 0xaa, 0xca,
		0x1c, 0xea, 0xfc, 0x0f, 0x81, 0x80, 0x99, 0x56, 0xfa, 0x5b, 0xb7, 0xc3, 0xc8, 0x37, 0xb7, 0x43,
		0x39, 0x13, 0xcd, 0x22, 0xf4, 0x82, 0x2c, 0xa1, 0x03, 0x27, 0x7b, 0x47, 0x2a, 0x5e, 0x22, 0xd6,
		0x28, 0x09, 0xeb, 0x95, 0x80, 0xb5, 0xa0, 0x8e, 0x7a, 0x89, 0x57, 0x1d, 0xcd, 0xa8, 0x96, 0x70,
		0x8b, 0x55, 0xa0, 0x90, 0xbe, 0xd3, 0x5c, 0x9a, 0x7e, 0xa4, 0xd7, 0x51, 0xb2, 0x24, 0xb5, 0x64,
		0x8d, 0x25, 0x1b, 0x34, 0x96, 0x14, 0xb3, 0x86, 0x43, 0x63, 0x49, 0x51, 0xf3, 0xb1, 0xb2, 0x34,
		0x96, 0x74, 0xe7, 0x3e, 0x44, 0xb9, 0xb6, 0x34, 0x93, 0x5b, 0xf2, 0xad, 0x22, 0x34, 0x3e, 0x94,
		0xc0, 0x61, 0x5b, 0x77, 0xdc, 0xd6, 0x1d, 0xb8, 0x55, 0x47, 0xae, 0xe3, 0xd0, 0x95, 0x1c, 0xbb,
		0xba, 0x83, 0xcf, 0x04, 0xb2, 0x55, 0x84, 0xe1, 0x18, 0x5e, 0xf9, 0x83, 0x83, 0xed, 0x20, 0xe1,
		0x4c, 0xb0, 0x70, 0x26, 0x68, 0x38, 0x11, 0x3c, 0x74, 0x83, 0x88, 0x72, 0x30, 0xc9, 0x34, 0xcc,
		0x56, 0x11, 0xb6, 0x8a, 0x68, 0x7e, 0x71, 0x06, 0x63, 0x2c, 0x3c, 0x07, 0x33, 0x07, 0x1c, 0x71,
		0x83, 0xcb, 0x26, 0xca, 0x56, 0x11, 0x6c, 0xd5, 0x59, 0x80, 0x60, 0x4f, 0x2a, 0x6b, 0xdc, 0x25,
		0xe5, 0xaf, 0xe3, 0x1a, 0x77, 0xe6, 0xb1, 0x33, 0x8f, 0x5d, 0xde, 0x6d, 0x51, 0x33, 0x12, 0x15,
		0x4c, 0xcd, 0x88, 0x9a, 0x11, 0x35, 0x23, 0x9b, 0xe0, 0x8c, 0x79, 0xec, 0xfa, 0xee, 0x5d, 0x7b,
		0x1e, 0x3b, 0x68, 0x18, 0x34, 0x9c, 0x9f, 0x7a, 0x19, 0x84, 0x0f, 0x6e, 0x03, 0xb7, 0x81, 0xdb,
		0xc0, 0x6d, 0xe0, 0x36, 0xd5, 0xda, 0x07, 0x83, 0xf0, 0x6d, 0x9c, 0x2d, 0xee, 0xfb, 0xb8, 0xef,
		0x5b, 0x7d, 0x2e, 0xb9, 0xef, 0x63, 0x10, 0x3e, 0x46, 0xea, 0x24, 0x3a, 0xb0, 0x27, 0x95, 0x8b,
		0x3e, 0x4a, 0x1b, 0x05, 0x94, 0xc4, 0x06, 0x02, 0xd5, 0x01, 0x03, 0x77, 0x44, 0xf2, 0xa5, 0x91,
		0xee, 0xaf, 0x66, 0x34, 0x9d, 0xb2, 0xcc, 0xe8, 0x50, 0x19, 0x4c, 0x1f, 0x58, 0x19, 0xce, 0xab,
		0x30, 0x30, 0xfd, 0xdb, 0xdc, 0x4b, 0x9d, 0x4e, 0xb5, 0x05, 0x9d, 0x4a, 0x40, 0x32, 0x74, 0x2a,
		0xe8, 0x54, 0x45, 0x0f, 0xe3, 0xd0, 0xa9, 0xa0, 0x53, 0x95, 0x2f, 0x28, 0xd8, 0x0f, 0x0e, 0xb6,
		0x83, 0x84, 0x33, 0xc1, 0xc2, 0x99, 0xa0, 0xe1, 0x44, 0xf0, 0xb0, 0x53, 0xce, 0x80, 0x4e, 0xa5,
		0xee, 0xdd, 0xa1, 0x53, 0x29, 0x7e, 0x71, 0xae, 0x57, 0x16, 0x9e, 0x83, 0xca, 0xb5, 0x23, 0x6e,
		0x70, 0xd9, 0x44, 0xa1, 0x53, 0x61, 0xab, 0xce, 0x02, 0x04, 0x7b, 0x52, 0x2f, 0xe8, 0x63, 0x7c,
		0xb6, 0xd1, 0x2e, 0xed, 0x12, 0x35, 0x9f, 0xbb, 0xc6, 0xf4, 0x4c, 0xcf, 0x2a, 0xb5, 0x67, 0xc5,
		0xe3, 0x90, 0x64, 0x93, 0x64, 0x93, 0x64, 0x93, 0x64, 0x93, 0x64, 0x97, 0x26, 0xc9, 0x5e, 0x3f,
		0xfe, 0x09, 0xa4, 0x60, 0x69, 0xe4, 0x00, 0x29, 0x58, 0x13, 0x7c, 0x03, 0xca, 0x00, 0x65, 0x80,
		0x32, 0x40, 0x19, 0xa0, 0x0c, 0x50, 0x06, 0x28, 0x73, 0x09, 0x94, 0xc1, 0x4d, 0x05, 0x3e, 0x00,
		0x1f, 0x80, 0x0f, 0xc0, 0x07, 0xe0, 0x83, 0x6a, 0x0a, 0x0e, 0x37, 0xd5, 0xc6, 0xd9, 0xa2, 0x79,
		0x82, 0xe6, 0x89, 0xd5, 0xe7, 0x92, 0xe6, 0x09, 0xb8, 0xa9, 0x18, 0xa9, 0x93, 0xe8, 0xc0, 0x9e,
		0xd4, 0x0b, 0x28, 0x92, 0xee, 0xbb, 0x32, 0x28, 0x92, 0xff, 0x4c, 0x91, 0x9c, 0x32, 0xef, 0xd8,
		0x62, 0x6e, 0xdf, 0x62, 0xb5, 0x2d, 0xb5, 0x20, 0x16, 0x5a, 0x51, 0x61, 0xbd, 0x3e, 0x63, 0x71,
		0xf8, 0xf1, 0xd6, 0x87, 0x61, 0x54, 0xbb, 0x1d, 0x46, 0x9d, 0x69, 0xa9, 0xe8, 0x78, 0xf2, 0xd4,
		0x05, 0xdd, 0xa7, 0x2f, 0x68, 0xe3, 0xcb, 0x2d, 0x69, 0xb1, 0xe9, 0x9a, 0xf0, 0x56, 0xa1, 0x43,
		0x6e, 0x75, 0x47, 0x5c, 0x26, 0x9e, 0x5d, 0xba, 0x4f, 0x12, 0xc4, 0x2e, 0xdd, 0x5c, 0xad, 0x83,
		0x5d, 0xba, 0xec, 0xd2, 0xfd, 0x8e, 0xc6, 0xd8, 0xa5, 0x5b, 0x40, 0x87, 0xac, 0xee, 0x98, 0x6d,
		0x38, 0x68, 0x7b, 0x8e, 0xda, 0x96, 0xc3, 0xb6, 0xee, 0xb8, 0xad, 0x3b, 0x70, 0xab, 0x8e, 0xbc,
		0x9c, 0x05, 0x0a, 0x86, 0x3f, 0x30, 0xfc, 0xa1, 0x7c, 0x41, 0xc1, 0x7e, 0x70, 0xb0, 0x1d, 0x24,
		0x9c, 0x09, 0x16, 0xce, 0x04, 0x0d, 0x27, 0x82, 0x87, 0x6e, 0x10, 0x51, 0x0e, 0x26, 0x99, 0x86,
		0x19, 0xfe, 0xc0, 0xf0, 0x07, 0xcd, 0x2f, 0x4e, 0xff, 0xc2, 0xc2, 0x73, 0x70, 0x35, 0xec, 0x88,
		0x1b, 0x5c, 0x36, 0x51, 0x86, 0x3f, 0x60, 0xab, 0xce, 0x02, 0x04, 0x7b, 0x52, 0x19, 0xb1, 0x2d,
		0x29, 0x9f, 0xed, 0x61, 0xa2, 0xea, 0x85, 0x36, 0x9b, 0x95, 0x91, 0xa0, 0xcd, 0x6a, 0x64, 0x15,
		0xd4, 0x8c, 0x14, 0xcf, 0x14, 0x35, 0x23, 0x6a, 0x46, 0x59, 0x20, 0xa7, 0x66, 0x24, 0xac, 0x61,
		0x68, 0xb3, 0xec, 0xd2, 0x05, 0x0d, 0x17, 0x19, 0x0d, 0xc3, 0x57, 0x06, 0xb7, 0x81, 0xdb, 0xc0,
		0x6d, 0xe0, 0x36, 0x70, 0x9b, 0x6a, 0xed, 0x03, 0xbe, 0xb2, 0x8d, 0xb3, 0xc5, 0x7d, 0x1f, 0xf7,
		0x7d, 0xab, 0xcf, 0x25, 0xf7, 0x7d, 0xf0, 0x95, 0x31, 0x52, 0x27, 0xd1, 0x81, 0x3d, 0xa9, 0x5c,
		0xf4, 0x51, 0xda, 0x28, 0xa0, 0x24, 0x88, 0xe2, 0x2e, 0xd0, 0x70, 0x33, 0xc6, 0x24, 0x4b, 0x75,
		0x9f, 0xfe, 0x86, 0x59, 0xaa, 0x9b, 0xb7, 0x38, 0x96, 0xea, 0x8a, 0x4a, 0x86, 0x57, 0x05, 0xaf,
		0xaa, 0xe8, 0xf1, 0x1c, 0x5e, 0x15, 0xbc, 0xaa, 0xf2, 0x05, 0x05, 0xfb, 0xc1, 0xc1, 0x76, 0x90,
		0x70, 0x26, 0x58, 0x38, 0x13, 0x34, 0x9c, 0x08, 0x1e, 0x76, 0xea, 0x1a, 0xf0, 0xaa, 0xd4, 0xbd,
		0x3b, 0xbc, 0x2a, 0xc5, 0x2f, 0xce, 0x3d, 0xcb, 0xc2, 0x73, 0x50, 0xc2, 0x76, 0xc4, 0x0d, 0x2e,
		0x9b, 0x28, 0xbc, 0x2a, 0x6c, 0xd5, 0x59, 0x80, 0x60, 0x4f, 0x2a, 0x4b, 0x75, 0x9f, 0x6f, 0xb4,
		0x2c, 0xd5, 0x25, 0xc9, 0x26, 0xc9, 0x26, 0xc9, 0x26, 0xc9, 0x26, 0xc9, 0xd6, 0x3c, 0xef, 0xec,
		0x6f, 0x2b, 0x0b, 0x7c, 0x80, 0x1d, 0xec, 0xc1, 0x0e, 0x06, 0x94, 0x01, 0xca, 0x00, 0x65, 0x80,
		0x32, 0x40, 0x19, 0xa0, 0x0c, 0x50, 0x66, 0x19, 0x94, 0x41, 0x52, 0x05, 0x3e, 0x00, 0x1f, 0x80,
		0x0f, 0xc0, 0x07, 0xe0, 0x83, 0x6a, 0x0a, 0x0e, 0x49, 0xd5, 0xc6, 0xd9, 0xa2, 0x79, 0x82, 0xe6,
		0x89, 0xd5, 0xe7, 0x92, 0xe6, 0x09, 0x48, 0xaa, 0x18, 0xa9, 0x93, 0xe8, 0xc0, 0x9e, 0x54, 0x96,
		0xea, 0x16, 0xc0, 0x95, 0xc1, 0x95, 0x7c, 0x24, 0x57, 0x92, 0xed, 0xba, 0xae, 0x98, 0x2e, 0xdb,
		0x75, 0xff, 0xd9, 0x54, 0x8b, 0xb9, 0x66, 0xb7, 0x35, 0x7f, 0xfa, 0xa2, 0xae, 0xdb, 0x7d, 0x51,
		0xa0, 0xa3, 0x54, 0x31, 0x9f, 0xd3, 0x38, 0xf0, 0x47, 0xe3, 0x17, 0x76, 0xd9, 0x97, 0xcd, 0xe6,
		0x2b, 0x9f, 0x3e, 0x9a, 0x48, 0x3c, 0x67, 0x55, 0x5c, 0x62, 0xfb, 0xf2, 0x65, 0x76, 0x16, 0xfd,
		0xf1, 0x09, 0xf0, 0xfe, 0xed, 0xfd, 0x34, 0xad, 0x34, 0xf9, 0xe9, 0x97, 0xa1, 0x49, 0xf6, 0x8f,
		0xb7, 0x3e, 0x34, 0x1b, 0x9d, 0xda, 0x87, 0x66, 0xe3, 0xa7, 0x92, 0xaf, 0xba, 0x9d, 0xbc, 0xda,
		0x75, 0x5a, 0x74, 0xfb, 0xa4, 0x77, 0x5f, 0x8a, 0x89, 0x07, 0x47, 0x26, 0xe9, 0xc6, 0xe1, 0x50,
		0x15, 0x20, 0x66, 0x47, 0xad, 0x1e, 0x75, 0xfb, 0xa3, 0x9e, 0xf1, 0xd2, 0x8f, 0x61, 0xe2, 0x75,
		0x07, 0x51, 0x1a, 0x84, 0x91, 0x89, 0xbd, 0xab, 0x41, 0xec, 0x1d, 0xbc, 0x6b, 0x7a, 0x63, 0x35,
		0x7b, 0xc9, 0xd0, 0x74, 0xc3, 0xab, 0xb0, 0xfb, 0xe7, 0x2c, 0x28, 0x8f, 0xe2, 0x29, 0x34, 0x50,
		0xb2, 0x0e, 0x0b, 0x37, 0x00, 0x8b, 0x27, 0xb0, 0xb7, 0xf0, 0x7a, 0x14, 0x6f, 0xfe, 0x6c, 0x96,
		0xfb, 0x97, 0x0e, 0xe4, 0x73, 0x2c, 0x04, 0x30, 0x6f, 0xf5, 0xd3, 0x2f, 0x0a, 0x85, 0x98, 0x94,
		0x92, 0x0e, 0x77, 0x93, 0x0d, 0x41, 0xf7, 0x92, 0x53, 0x3a, 0x21, 0x73, 0xa0, 0xf3, 0x3f, 0x00,
		0x02, 0x26, 0x5a, 0x99, 0xbe, 0xa7, 0xdb, 0x61, 0x5f, 0x6e, 0x5e, 0x45, 0x16, 0x95, 0x17, 0x64,
		0x09, 0x1d, 0x36, 0xd9, 0x11, 0x44, 0xe2, 0xcd, 0x12, 0x1a, 0x4d, 0x11, 0x7a, 0xcd, 0x0f, 0x5a,
		0x10, 0x47, 0xbd, 0x99, 0x41, 0x1d, 0xc5, 0xa8, 0x36, 0x27, 0x14, 0xab, 0x20, 0x21, 0x3d, 0xe2,
		0x67, 0x89, 0xf0, 0x27, 0x6f, 0xca, 0xab, 0x68, 0x86, 0xd2, 0xd6, 0xac, 0x33, 0xb7, 0x4d, 0xad,
		0xd3, 0x4c, 0xb3, 0xb3, 0x4c, 0xbf, 0x93, 0xcc, 0x66, 0xd5, 0x46, 0xb5, 0x53, 0xcc, 0x8d, 0xba,
		0x8d, 0x56, 0x27, 0x58, 0xb1, 0x2f, 0x56, 0xb4, 0xe6, 0xac, 0x55, 0xba, 0x73, 0x1f, 0xa2, 0x5c,
		0x4f, 0x9a, 0xc9, 0x2d, 0xf9, 0x20, 0xcd, 0x0d, 0x06, 0x69, 0x16, 0xdf, 0x61, 0x5b, 0x77, 0xdc,
		0xd6, 0x1d, 0xb8, 0x55, 0x47, 0xae, 0xe3, 0xd0, 0x95, 0x1c, 0xbb, 0xba, 0x83, 0xcf, 0x04, 0x32,
		0x48, 0x13, 0x3e, 0x88, 0x57, 0xfe, 0xe0, 0x60, 0x3b, 0x48, 0x38, 0x13, 0x2c, 0x9c, 0x09, 0x1a,
		0x4e, 0x04, 0x0f, 0xdd, 0x20, 0xa2, 0x1c, 0x4c, 0x32, 0x0d, 0x33, 0x48, 0x93, 0x41, 0x9a, 0x9a,
		0x5f, 0x1c, 0x2e, 0xc8, 0xc2, 0x73, 0xd0, 0x66, 0xef, 0x88, 0x1b, 0x5c, 0x36, 0x51, 0x06, 0x69,
		0x62, 0xab, 0xce, 0x02, 0x04, 0x7b, 0x52, 0xd9, 0x5b, 0x26, 0x29, 0x9f, 0x95, 0xec, 0xa2, 0xea,
		0x65, 0x04, 0x59, 0x56, 0x46, 0x62, 0x04, 0x99, 0x46, 0x56, 0x41, 0xcd, 0x48, 0xf1, 0x4c, 0x51,
		0x33, 0xa2, 0x66, 0x94, 0x05, 0x72, 0x6a, 0x46, 0xc2, 0x1a, 0x66, 0x04, 0x99, 0xfe, 0x08, 0x32,
		0xd0, 0x30, 0x68, 0x38, 0x3f, 0xf5, 0x32, 0xfb, 0x0d, 0xdc, 0x06, 0x6e, 0x03, 0xb7, 0x81, 0xdb,
		0xc0, 0x6d, 0xaa, 0xb5, 0x0f, 0x66, 0xbf, 0xd9, 0x38, 0x5b, 0xdc, 0xf7, 0x71, 0xdf, 0xb7, 0xfa,
		0x5c, 0x72, 0xdf, 0xc7, 0xec, 0x37, 0x8c, 0xd4, 0x49, 0x74, 0x60, 0x4f, 0x2a, 0x17, 0x7d, 0x94,
		0x36, 0x0a, 0x28, 0x89, 0xa1, 0x7b, 0x16, 0x86, 0x0b, 0xdc, 0x0e, 0x27, 0x9f, 0x70, 0x47, 0x94,
		0x7c, 0x35, 0xa3, 0xe9, 0x94, 0x65, 0x3e, 0x87, 0xca, 0x3c, 0xb6, 0x20, 0x35, 0xfa, 0x7c, 0xaa,
		0xa9, 0xd8, 0x92, 0xd3, 0xa9, 0xb6, 0xa0, 0x53, 0x09, 0x48, 0x86, 0x4e, 0x05, 0x9d, 0xaa, 0xe8,
		0x61, 0x1c, 0x3a, 0x15, 0x74, 0xaa, 0xf2, 0x05, 0x05, 0xfb, 0xc1, 0xc1, 0x76, 0x90, 0x70, 0x26,
		0x58, 0x38, 0x13, 0x34, 0x9c, 0x08, 0x1e, 0x76, 0xca, 0x19, 0xd0, 0xa9, 0xd4, 0xbd, 0x3b, 0x74,
		0x2a, 0xc5, 0x2f, 0xce, 0xf5, 0xca, 0xc2, 0x73, 0x50, 0xb9, 0x76, 0xc4, 0x0d, 0x2e, 0x9b, 0x28,
		0x74, 0x2a, 0x6c, 0xd5, 0x59, 0x80, 0x60, 0x4f, 0xea, 0x05, 0x7d, 0x8c, 0xcf, 0x36, 0xda, 0xa5,
		0x15, 0x1a, 0xe6, 0x73, 0xd7, 0x98, 0x9e, 0xe9, 0x59, 0xa5, 0xf6, 0xac, 0x78, 0x1c, 0x92, 0x6c,
		0x92, 0x6c, 0x92, 0x6c, 0x92, 0x6c, 0x92, 0xec, 0xd2, 0x24, 0xd9, 0xac, 0xc0, 0x2f, 0x0b, 0x7c,
		0x80, 0x14, 0xec, 0x41, 0x0a, 0x06, 0x94, 0x01, 0xca, 0x00, 0x65, 0x80, 0x32, 0x40, 0x19, 0xa0,
		0x0c, 0x50, 0x66, 0x19, 0x94, 0xc1, 0x4d, 0x05, 0x3e, 0x00, 0x1f, 0x80, 0x0f, 0xc0, 0x07, 0xe0,
		0x83, 0x6a, 0x0a, 0x0e, 0x37, 0xd5, 0xc6, 0xd9, 0xa2, 0x79, 0x82, 0xe6, 0x89, 0xd5, 0xe7, 0x92,
		0xe6, 0x09, 0xb8, 0xa9, 0x18, 0xa9, 0x93, 0xe8, 0xc0, 0x9e, 0xd4, 0x0b, 0x28, 0x92, 0xee, 0xbb,
		0x32, 0x28, 0x92, 0xff, 0x4c, 0x91, 0x9c, 0x32, 0xef, 0xd8, 0x60, 0x6e, 0xdf, 0x62, 0xb5, 0x2d,
		0xb5, 0x20, 0x16, 0x5a, 0x51, 0x61, 0xbd, 0x3e, 0x77, 0x6d, 0xf8, 0x87, 0x61, 0x3f, 0xe9, 0x4c,
		0x4b, 0x45, 0xc7, 0x93, 0xa7, 0x2e, 0xe8, 0x2e, 0x7d, 0x41, 0x1b, 0x5f, 0x6e, 0x49, 0x8b, 0x4d,
		0xd7, 0x84, 0xb7, 0x0a, 0x1d, 0x72, 0xab, 0x3b, 0xe2, 0x32, 0xf1, 0xec, 0xd2, 0x7d, 0x92, 0x20,
		0x76, 0xe9, 0xe6, 0x6a, 0x1d, 0xec, 0xd2, 0x65, 0x97, 0xee, 0x77, 0x34, 0xc6, 0x2e, 0xdd, 0x02,
		0x3a, 0x64, 0x75, 0xc7, 0x6c, 0xc3, 0x41, 0xdb, 0x73, 0xd4, 0xb6, 0x1c, 0xb6, 0x75, 0xc7, 0x6d,
		0xdd, 0x81, 0x5b, 0x75, 0xe4, 0xe5, 0x2c, 0x50, 0x30, 0xfc, 0x81, 0xe1, 0x0f, 0xe5, 0x0b, 0x0a,
		0xf6, 0x83, 0x83, 0xed, 0x20, 0xe1, 0x4c, 0xb0, 0x70, 0x26, 0x68, 0x38, 0x11, 0x3c, 0x74, 0x83,
		0x88, 0x72, 0x30, 0xc9, 0x34, 0xcc, 0xf0, 0x07, 0x86, 0x3f, 0x68, 0x7e, 0x71, 0xfa, 0x17, 0x16,
		0x9e, 0x83, 0xab, 0x61, 0x47, 0xdc, 0xe0, 0xb2, 0x89, 0x32, 0xfc, 0x01, 0x5b, 0x75, 0x16, 0x20,
		0xd8, 0x93, 0xca, 0x88, 0x6d, 0x49, 0xf9, 0x6c, 0x0f, 0x13, 0x55, 0x2f, 0xb4, 0xd9, 0xac, 0x8c,
		0x04, 0x6d, 0x56, 0x23, 0xab, 0xa0, 0x66, 0xa4, 0x78, 0xa6, 0xa8, 0x19, 0x51, 0x33, 0xca, 0x02,
		0x39, 0x35, 0x23, 0x61, 0x0d, 0x43, 0x9b, 0x65, 0x97, 0x2e, 0x68, 0xb8, 0xc8, 0x68, 0x18, 0xbe,
		0x32, 0xb8, 0x0d, 0xdc, 0x06, 0x6e, 0x03, 0xb7, 0x81, 0xdb, 0x54, 0x6b, 0x1f, 0xf0, 0x95, 0x6d,
		0x9c, 0x2d, 0xee, 0xfb, 0xb8, 0xef, 0x5b, 0x7d, 0x2e, 0xb9, 0xef, 0x83, 0xaf, 0x8c, 0x91, 0x3a,
		0x89, 0x0e, 0xec, 0x49, 0xe5, 0xa2, 0x8f, 0xd2, 0x46, 0x01, 0x25, 0x41, 0x14, 0x77, 0x81, 0x86,
		0x9b, 0x31, 0x26, 0x59, 0xaa, 0xfb, 0xf4, 0x37, 0xcc, 0x52, 0xdd, 0xbc, 0xc5, 0xb1, 0x54, 0x57,
		0x54, 0x32, 0xbc, 0x2a, 0x78, 0x55, 0x45, 0x8f, 0xe7, 0xf0, 0xaa, 0xe0, 0x55, 0x95, 0x2f, 0x28,
		0xd8, 0x0f, 0x0e, 0xb6, 0x83, 0x84, 0x33, 0xc1, 0xc2, 0x99, 0xa0, 0xe1, 0x44, 0xf0, 0xb0, 0x53,
		0xd7, 0x80, 0x57, 0xa5, 0xee, 0xdd, 0xe1, 0x55, 0x29, 0x7e, 0x71, 0xee, 0x59, 0x16, 0x9e, 0x83,
		0x12, 0xb6, 0x23, 0x6e, 0x70, 0xd9, 0x44, 0xe1, 0x55, 0x61, 0xab, 0xce, 0x02, 0x04, 0x7b, 0x52,
		0x59, 0xaa, 0xfb, 0x7c, 0xa3, 0x65, 0xa9, 0x2e, 0x49, 0x36, 0x49, 0x36, 0x49, 0x36, 0x49, 0x36,
		0x49, 0xb6, 0xe6, 0x79, 0x67, 0x7f, 0x5b, 0x59, 0xe0, 0x03, 0xec, 0x60, 0x0f, 0x76, 0x30, 0xa0,
		0x0c, 0x50, 0x06, 0x28, 0x03, 0x94, 0x01, 0xca, 0x00, 0x65, 0x80, 0x32, 0xcb, 0xa0, 0x0c, 0x92,
		0x2a, 0xf0, 0x01, 0xf8, 0x00, 0x7c, 0x00, 0x3e, 0x00, 0x1f, 0x54, 0x53, 0x70, 0x48, 0xaa, 0x36,
		0xce, 0x16, 0xcd, 0x13, 0x34, 0x4f, 0xac, 0x3e, 0x97, 0x34, 0x4f, 0x40, 0x52, 0xc5, 0x48, 0x9d,
		0x44, 0x07, 0xf6, 0xa4, 0xb2, 0x54, 0xb7, 0x00, 0xae, 0x0c, 0xae, 0xe4, 0x23, 0xb9, 0x92, 0x6c,
		0xd7, 0x75, 0xc5, 0x74, 0xd9, 0xae, 0xfb, 0xcf, 0xa6, 0x5a, 0xcc, 0x35, 0xbb, 0xad, 0xf9, 0xd3,
		0x17, 0x75, 0xdd, 0xee, 0x8b, 0x02, 0x1d, 0xa5, 0x8a, 0xf9, 0x9c, 0xc6, 0x81, 0x3f, 0x1a, 0xbf,
		0xb0, 0xcb, 0xbe, 0x6c, 0x36, 0x5f, 0xf9, 0xf4, 0xd1, 0x44, 0xe2, 0x39, 0xab, 0xe2, 0x12, 0xdb,
		0x97, 0x2f, 0xb3, 0xb3, 0xe8, 0x8f, 0x4f, 0x80, 0xf7, 0x6f, 0xef, 0xa7, 0x69, 0xa5, 0xc9, 0x4f,
		0xbf, 0x0c, 0x4d, 0xb2, 0x7f, 0xbc, 0xf5, 0xa1, 0xd9, 0xe8, 0x7c, 0x68, 0x1e, 0x9f, 0xfd, 0x54,
		0xf2, 0x55, 0xb7, 0x93, 0x57, 0xbb, 0x4e, 0x8b, 0x6e, 0x9f, 0xf4, 0xee, 0x4b, 0x31, 0xf1, 0xe0,
		0xc8, 0x24, 0xdd, 0x38, 0x1c, 0xaa, 0x02, 0xc4, 0xec, 0xa8, 0xd5, 0xa3, 0x6e, 0x7f, 0xd4, 0x33,
		0x5e, 0xfa, 0x31, 0x4c, 0xbc, 0xee, 0x20, 0x4a, 0x83, 0x30, 0x32, 0xb1, 0x77, 0x35, 0x88, 0xbd,
		0x83, 0x77, 0x4d, 0x3f, 0x09, 0xaf, 0xa3, 0xa0, 0xdf, 0x37, 0x3d, 0x6f, 0xac, 0x70, 0x2f, 0x19,
		0x9a, 0x6e, 0x78, 0x15, 0x76, 0xff, 0x9c, 0x85, 0xe7, 0x51, 0x3c, 0x05, 0x09, 0x4a, 0x76, 0x62,
		0xe1, 0x2e, 0x60, 0xf1, 0x2c, 0xf6, 0x16, 0x5e, 0x94, 0xe2, 0x1d, 0xa0, 0xcd, 0xc2, 0xff, 0xd2,
		0xd1, 0xcc, 0xc7, 0x56, 0x00, 0xf8, 0x56, 0x3f, 0xfd, 0xa2, 0x50, 0x28, 0x4a, 0x29, 0x11, 0x71,
		0x37, 0x01, 0x11, 0x74, 0x34, 0x39, 0xa5, 0x18, 0x32, 0x07, 0x3a, 0xff, 0x03, 0x20, 0x60, 0xa2,
		0x95, 0xfe, 0xeb, 0xf1, 0x7b, 0x0a, 0x87, 0xb7, 0xdb, 0xfe, 0xcd, 0xa8, 0x9f, 0x86, 0xdd, 0x20,
		0x91, 0xeb, 0xce, 0xc8, 0x62, 0xf6, 0x4a, 0xa9, 0x42, 0x07, 0x50, 0x76, 0x54, 0x91, 0x78, 0x53,
		0x85, 0x46, 0xf3, 0x84, 0x5e, 0x93, 0x84, 0x16, 0x00, 0x52, 0x6f, 0x7a, 0x50, 0xc7, 0x38, 0xaa,
		0x4d, 0x0c, 0xc5, 0x2a, 0x5c, 0x48, 0x8f, 0x02, 0x5a, 0x22, 0x06, 0xca, 0x9b, 0xf2, 0x2a, 0x3a,
		0xa2, 0xb4, 0x35, 0xeb, 0xcc, 0x77, 0x53, 0xeb, 0x48, 0xd3, 0xec, 0x40, 0xd3, 0xef, 0x38, 0xb3,
		0x59, 0xdd, 0x51, 0xed, 0x28, 0x73, 0xa3, 0xbe, 0xa3, 0xd5, 0x31, 0x56, 0xec, 0x0b, 0x18, 0xad,
		0x79, 0x6c, 0x95, 0xee, 0xdc, 0x87, 0x28, 0xd7, 0x9d, 0x66, 0x72, 0x4b, 0x3e, 0x70, 0x73, 0x83,
		0x81, 0x9b, 0xc5, 0x77, 0xd8, 0xd6, 0x1d, 0xb7, 0x75, 0x07, 0x6e, 0xd5, 0x91, 0xeb, 0x38, 0x74,
		0x25, 0xc7, 0xae, 0xee, 0xe0, 0x33, 0x81, 0x0c, 0xdc, 0x84, 0x37, 0xe2, 0x95, 0x3f, 0x38, 0xd8,
		0x0e, 0x12, 0xce, 0x04, 0x0b, 0x67, 0x82, 0x86, 0x13, 0xc1, 0x43, 0x37, 0x88, 0x28, 0x07, 0x93,
		0x4c, 0xc3, 0x0c, 0xdc, 0x64, 0xe0, 0xa6, 0xe6, 0x17, 0x87, 0x33, 0xb2, 0xf0, 0x1c, 0xb4, 0xe3,
		0x3b, 0xe2, 0x06, 0x97, 0x4d, 0x94, 0x81, 0x9b, 0xd8, 0xaa, 0xb3, 0x00, 0xc1, 0x9e, 0x54, 0xf6,
		0x9b, 0x49, 0xca, 0x67, 0x75, 0xbb, 0xa8, 0x7a, 0x19, 0x55, 0x96, 0x95, 0x91, 0x18, 0x55, 0xa6,
		0x91, 0x55, 0x50, 0x33, 0x52, 0x3c, 0x53, 0xd4, 0x8c, 0xa8, 0x19, 0x65, 0x81, 0x9c, 0x9a, 0x91,
		0xb0, 0x86, 0x19, 0x55, 0xa6, 0x3f, 0xaa, 0x0c, 0x34, 0x0c, 0x1a, 0xce, 0x4f, 0xbd, 0xcc, 0x88,
		0x03, 0xb7, 0x81, 0xdb, 0xc0, 0x6d, 0xe0, 0x36, 0x70, 0x9b, 0x6a, 0xed, 0x83, 0x19, 0x71, 0x36,
		0xce, 0x16, 0xf7, 0x7d, 0xdc, 0xf7, 0xad, 0x3e, 0x97, 0xdc, 0xf7, 0x31, 0x23, 0x0e, 0x23, 0x75,
		0x12, 0x1d, 0xd8, 0x93, 0xca, 0x45, 0x1f, 0xa5, 0x8d, 0x02, 0x4a, 0x62, 0x38, 0x9f, 0xee, 0xc0,
		0x81, 0x15, 0x94, 0xf2, 0xa5, 0xd9, 0x67, 0xaf, 0x66, 0x84, 0x9d, 0xb2, 0x4c, 0xef, 0x50, 0x99,
		0xe0, 0x16, 0xa4, 0x46, 0x9f, 0x59, 0x35, 0x15, 0x5b, 0x72, 0x62, 0xd5, 0x16, 0xc4, 0x2a, 0x01,
		0xc9, 0x10, 0xab, 0x20, 0x56, 0x15, 0x3d, 0xa0, 0x43, 0xac, 0x82, 0x58, 0x55, 0xbe, 0xa0, 0x60,
		0x3f, 0x38, 0xd8, 0x0e, 0x12, 0xce, 0x04, 0x0b, 0x67, 0x82, 0x86, 0x13, 0xc1, 0xc3, 0x4e, 0x61,
		0x03, 0x62, 0x95, 0xba, 0x77, 0x87, 0x58, 0xa5, 0xf8, 0xc5, 0xb9, 0x68, 0x59, 0x78, 0x0e, 0x6a,
		0xd8, 0x8e, 0xb8, 0xc1, 0x65, 0x13, 0x85, 0x58, 0x85, 0xad, 0x3a, 0x0b, 0x10, 0xec, 0x49, 0xbd,
		0xa0, 0xa3, 0xf1, 0xd9, 0x46, 0xbb, 0xb4, 0x74, 0xc3, 0x7c, 0xee, 0x1a, 0xd3, 0x33, 0x3d, 0xab,
		0x24, 0x9f, 0x15, 0x8f, 0x43, 0x92, 0x4d, 0x92, 0x4d, 0x92, 0x4d, 0x92, 0x4d, 0x92, 0x5d, 0x9a,
		0x24, 0x9b, 0xa5, 0xf9, 0x65, 0x81, 0x0f, 0xd0, 0x83, 0x3d, 0xe8, 0xc1, 0x80, 0x32, 0x40, 0x19,
		0xa0, 0x0c, 0x50, 0x06, 0x28, 0x03, 0x94, 0x01, 0xca, 0x2c, 0x83, 0x32, 0x58, 0xaa, 0xc0, 0x07,
		0xe0, 0x03, 0xf0, 0x01, 0xf8, 0x00, 0x7c, 0x50, 0x4d, 0xc1, 0x61, 0xa9, 0xda, 0x38, 0x5b, 0x34,
		0x4f, 0xd0, 0x3c, 0xb1, 0xfa, 0x5c, 0xd2, 0x3c, 0x01, 0x4b, 0x15, 0x23, 0x75, 0x12, 0x1d, 0xd8,
		0x93, 0x7a, 0x01, 0x59, 0xd2, 0x7d, 0x57, 0x06, 0x59, 0xf2, 0xb1, 0x64, 0xc9, 0x29, 0x07, 0x8f,
		0x4d, 0xe7, 0xf6, 0x6d, 0x57, 0xdb, 0x66, 0x0b, 0x67, 0xab, 0x15, 0x15, 0x26, 0xec, 0x73, 0x16,
		0x8d, 0xbf, 0xfe, 0x30, 0x8c, 0xea, 0xc3, 0xdb, 0xed, 0x93, 0xf9, 0xf3, 0x77, 0xa6, 0x75, 0xa4,
		0xe3, 0xc9, 0xe3, 0x17, 0x74, 0x0d, 0xbf, 0xa0, 0xd9, 0x2f, 0xf7, 0xab, 0xc5, 0xa6, 0x6b, 0xc2,
		0x5b, 0x85, 0xf6, 0xb9, 0xd5, 0xed, 0x72, 0x99, 0x78, 0x56, 0xee, 0x3e, 0x49, 0x10, 0x2b, 0x77,
		0x73, 0xb5, 0x0e, 0x56, 0xee, 0xb2, 0x72, 0xf7, 0x3b, 0x1a, 0x63, 0xe5, 0x6e, 0x01, 0x1d, 0xb2,
		0xba, 0x63, 0xb6, 0xe1, 0xa0, 0xed, 0x39, 0x6a, 0x5b, 0x0e, 0xdb, 0xba, 0xe3, 0xb6, 0xee, 0xc0,
		0xad, 0x3a, 0xf2, 0x72, 0x56, 0x2f, 0x98, 0x0c, 0xc1, 0x64, 0x88, 0xf2, 0x05, 0x05, 0xfb, 0xc1,
		0xc1, 0x76, 0x90, 0x70, 0x26, 0x58, 0x38, 0x13, 0x34, 0x9c, 0x08, 0x1e, 0xba, 0x41, 0x44, 0x39,
		0x98, 0x64, 0x1a, 0x66, 0x32, 0x04, 0x93, 0x21, 0x34, 0xbf, 0x38, 0xcd, 0x0d, 0x0b, 0xcf, 0xc1,
		0xbd, 0xb1, 0x23, 0x6e, 0x70, 0xd9, 0x44, 0x99, 0x0c, 0x81, 0xad, 0x3a, 0x0b, 0x10, 0xec, 0x49,
		0x65, 0x12, 0xb7, 0xa4, 0x7c, 0x96, 0x8c, 0x89, 0xaa, 0x17, 0x4e, 0x6d, 0x56, 0x46, 0x82, 0x53,
		0xab, 0x91, 0x55, 0x50, 0x33, 0x52, 0x3c, 0x53, 0xd4, 0x8c, 0xa8, 0x19, 0x65, 0x81, 0x9c, 0x9a,
		0x91, 0xb0, 0x86, 0xe1, 0xd4, 0xb2, 0x72, 0x17, 0x34, 0x5c, 0x64, 0x34, 0x0c, 0x99, 0x19, 0xdc,
		0x06, 0x6e, 0x03, 0xb7, 0x81, 0xdb, 0xc0, 0x6d, 0xaa, 0xb5, 0x0f, 0xc8, 0xcc, 0x36, 0xce, 0x16,
		0xf7, 0x7d, 0xdc, 0xf7, 0xad, 0x3e, 0x97, 0xdc, 0xf7, 0x41, 0x66, 0xc6, 0x48, 0x9d, 0x44, 0x07,
		0xf6, 0xa4, 0x72, 0xd1, 0x47, 0x69, 0xa3, 0x80, 0x92, 0x60, 0x91, 0xbb, 0xc5, 0xcc, 0xcd, 0xb8,
		0x93, 0xec, 0xde, 0x7d, 0xfa, 0xbb, 0x66, 0xf7, 0x6e, 0xde, 0xe2, 0xd8, 0xbd, 0x2b, 0x2a, 0x19,
		0x86, 0x15, 0x0c, 0xab, 0xa2, 0x47, 0x76, 0x18, 0x56, 0x30, 0xac, 0xca, 0x17, 0x14, 0xec, 0x07,
		0x07, 0xdb, 0x41, 0xc2, 0x99, 0x60, 0xe1, 0x4c, 0xd0, 0x70, 0x22, 0x78, 0xd8, 0xa9, 0x70, 0xc0,
		0xb0, 0x52, 0xf7, 0xee, 0x30, 0xac, 0x14, 0xbf, 0x38, 0x37, 0x2e, 0x0b, 0xcf, 0x41, 0x31, 0xdb,
		0x11, 0x37, 0xb8, 0x6c, 0xa2, 0x30, 0xac, 0xb0, 0x55, 0x67, 0x01, 0x82, 0x3d, 0xa9, 0xec, 0xde,
		0x7d, 0xbe, 0xd1, 0xb2, 0x7b, 0x97, 0x24, 0x9b, 0x24, 0x9b, 0x24, 0x9b, 0x24, 0x9b, 0x24, 0x5b,
		0xf3, 0xbc, 0xb3, 0xe6, 0xad, 0x2c, 0xf0, 0x01, 0x9e, 0xb0, 0x07, 0x4f, 0x18, 0x50, 0x06, 0x28,
		0x03, 0x94, 0x01, 0xca, 0x00, 0x65, 0x80, 0x32, 0x40, 0x99, 0x65, 0x50, 0x06, 0x5d, 0x15, 0xf8,
		0x00, 0x7c, 0x00, 0x3e, 0x00, 0x1f, 0x80, 0x0f, 0xaa, 0x29, 0x38, 0x74, 0x55, 0x1b, 0x67, 0x8b,
		0xe6, 0x09, 0x9a, 0x27, 0x56, 0x9f, 0x4b, 0x9a, 0x27, 0xa0, 0xab, 0x62, 0xa4, 0x4e, 0xa2, 0x03,
		0x7b, 0x52, 0xd9, 0xbd, 0x5b, 0x00, 0x57, 0x06, 0x6b, 0xf2, 0xc9, 0xac, 0x49, 0x96, 0xf0, 0xba,
		0x62, 0xc4, 0x2c, 0xe1, 0x7d, 0xac, 0xd1, 0x16, 0x7c, 0x1b, 0x6f, 0x6b, 0xfe, 0x35, 0x8a, 0xba,
		0x95, 0xf7, 0x45, 0x81, 0x4e, 0x57, 0xc5, 0x7c, 0x4e, 0xe3, 0xc0, 0x1f, 0x8d, 0xdf, 0xdc, 0x65,
		0x5f, 0x36, 0xd5, 0xaf, 0x7c, 0xfa, 0x68, 0x22, 0xf1, 0x84, 0x56, 0x71, 0xd7, 0xed, 0xcb, 0x97,
		0xd9, 0xf1, 0xf4, 0xc7, 0x47, 0xc1, 0xfb, 0xb7, 0xf7, 0xd3, 0xb4, 0x0c, 0xe5, 0xa7, 0x5f, 0x86,
		0x26, 0xd9, 0x3f, 0x7e, 0xfd, 0xa1, 0xd9, 0xe8, 0xd4, 0x9b, 0x1f, 0xb6, 0x3b, 0x27, 0xe7, 0xc7,
		0xed, 0xfa, 0x61, 0xf5, 0xac, 0xfd, 0x53, 0xc9, 0x77, 0xe3, 0x4e, 0x5e, 0xf2, 0x3a, 0x6d, 0xc6,
		0xfd, 0x41, 0x2b, 0x28, 0xc5, 0x88, 0x84, 0x23, 0x93, 0x74, 0xe3, 0x70, 0xa8, 0x8a, 0x28, 0xb3,
		0xe3, 0x57, 0x8f, 0xba, 0xfd, 0x51, 0xcf, 0x78, 0xe9, 0xc7, 0x30, 0xf1, 0xba, 0x83, 0x28, 0x0d,
		0xc2, 0xc8, 0xc4, 0xde, 0xd5, 0x20, 0xf6, 0xb2, 0x08, 0xe9, 0xd5, 0x9b, 0xb7, 0xbb, 0xde, 0xe4,
		0x0d, 0x78, 0xc9, 0xd0, 0x74, 0xc3, 0xab, 0xb0, 0xfb, 0xe7, 0x2c, 0x8e, 0x8f, 0xe2, 0x29, 0x9a,
		0x50, 0xb2, 0x19, 0x0b, 0xd7, 0x07, 0x8b, 0xe7, 0xb2, 0xb7, 0xf0, 0xaa, 0x14, 0xaf, 0x0d, 0x6d,
		0xde, 0x15, 0x2c, 0x1d, 0xd3, 0xbc, 0xac, 0x85, 0x5c, 0xc0, 0xea, 0xa7, 0x5f, 0x14, 0x0a, 0x5d,
		0x29, 0xe5, 0x2c, 0x45, 0xc8, 0x55, 0x04, 0x9d, 0x4e, 0xde, 0xd9, 0x88, 0xcc, 0x19, 0xcf, 0xff,
		0x4c, 0x08, 0x58, 0x6d, 0x65, 0xe1, 0xd5, 0x8d, 0xa2, 0xa9, 0x36, 0xa4, 0x2c, 0x37, 0x0b, 0xe4,
		0x2b, 0x64, 0x0a, 0x9d, 0x47, 0xd9, 0x71, 0x47, 0xe2, 0x8d, 0x19, 0x1a, 0x0d, 0x18, 0x7a, 0x8d,
		0x16, 0x5a, 0x88, 0x48, 0xbd, 0x71, 0x42, 0x1d, 0xf4, 0xa8, 0x36, 0x42, 0x14, 0xab, 0xbe, 0x21,
		0x3d, 0x4e, 0x68, 0x89, 0x5c, 0x28, 0x6f, 0xca, 0xab, 0x28, 0x8d, 0xd2, 0xd6, 0xac, 0x33, 0x23,
		0x4e, 0xad, 0xab, 0x4d, 0xb3, 0x8b, 0x4d, 0xbf, 0x6b, 0xcd, 0x66, 0xe9, 0x47, 0xb5, 0x2b, 0xcd,
		0x8d, 0xe2, 0x8f, 0x56, 0xd7, 0x59, 0xb1, 0xaf, 0x6e, 0xb4, 0x66, 0xba, 0x55, 0xba, 0x73, 0x1f,
		0xa2, 0x5c, 0x8a, 0x9a, 0xc9, 0x2d, 0xf9, 0xd0, 0xce, 0x0d, 0x86, 0x76, 0x16, 0xdf, 0x61, 0x5b,
		0x77, 0xdc, 0xd6, 0x1d, 0xb8, 0x55, 0x47, 0xae, 0xe3, 0xd0, 0x95, 0x1c, 0xbb, 0xba, 0x83, 0xcf,
		0x04, 0x32, 0xb4, 0x13, 0xee, 0x89, 0x57, 0xfe, 0xe0, 0x60, 0x3b, 0x48, 0x38, 0x13, 0x2c, 0x9c,
		0x09, 0x1a, 0x4e, 0x04, 0x0f, 0xdd, 0x20, 0xa2, 0x1c, 0x4c, 0x32, 0x0d, 0x33, 0xb4, 0x93, 0xa1,
		0x9d, 0x9a, 0x5f, 0x1c, 0xde, 0xc9, 0xc2, 0x73, 0xd0, 0xd2, 0xef, 0x88, 0x1b, 0x5c, 0x36, 0x51,
		0x86, 0x76, 0x62, 0xab, 0xce, 0x02, 0x04, 0x7b, 0x52, 0xd9, 0x96, 0x26, 0x29, 0x9f, 0x45, 0xf0,
		0xa2, 0xea, 0x65, 0xdc, 0x59, 0x56, 0x46, 0x62, 0xdc, 0x99, 0x46, 0x56, 0x41, 0xcd, 0x48, 0xf1,
		0x4c, 0x51, 0x33, 0xa2, 0x66, 0x94, 0x05, 0x72, 0x6a, 0x46, 0xc2, 0x1a, 0x66, 0xdc, 0x99, 0xfe,
		0xb8, 0x33, 0xd0, 0x30, 0x68, 0x38, 0x3f, 0xf5, 0x32, 0x67, 0x0e, 0xdc, 0x06, 0x6e, 0x03, 0xb7,
		0x81, 0xdb, 0xc0, 0x6d, 0xaa, 0xb5, 0x0f, 0xe6, 0xcc, 0xd9, 0x38, 0x5b, 0xdc, 0xf7, 0x71, 0xdf,
		0xb7, 0xfa, 0x5c, 0x72, 0xdf, 0xc7, 0x9c, 0x39, 0x8c, 0xd4, 0x49, 0x74, 0x60, 0x4f, 0x2a, 0x17,
		0x7d, 0x94, 0x36, 0x0a, 0x28, 0x89, 0x01, 0x7f, 0xb6, 0xe6, 0x0f, 0xcc, 0x08, 0xe5, 0x4b, 0x93,
		0xd2, 0x5e, 0xcd, 0xe8, 0x3a, 0x65, 0x19, 0xe5, 0xa1, 0x32, 0xef, 0x2d, 0x48, 0x8d, 0x3e, 0xaf,
		0x6a, 0x2a, 0xb6, 0xe4, 0xb4, 0xaa, 0x2d, 0x68, 0x55, 0x02, 0x92, 0xa1, 0x55, 0x41, 0xab, 0x2a,
		0x7a, 0x38, 0x87, 0x56, 0x05, 0xad, 0xaa, 0x7c, 0x41, 0xc1, 0x7e, 0x70, 0xb0, 0x1d, 0x24, 0x9c,
		0x09, 0x16, 0xce, 0x04, 0x0d, 0x27, 0x82, 0x87, 0x9d, 0xb2, 0x06, 0xb4, 0x2a, 0x75, 0xef, 0x0e,
		0xad, 0x4a, 0xf1, 0x8b, 0x73, 0xcd, 0xb2, 0xf0, 0x1c, 0x54, 0xb0, 0x1d, 0x71, 0x83, 0xcb, 0x26,
		0x0a, 0xad, 0x0a, 0x5b, 0x75, 0x16, 0x20, 0xd8, 0x93, 0x7a, 0x41, 0x3f, 0xe3, 0xb3, 0x8d, 0x76,
		0x69, 0x45, 0x87, 0xf9, 0xdc, 0x35, 0xa6, 0x67, 0x7a, 0x56, 0x29, 0x3e, 0x2b, 0x1e, 0x87, 0x24,
		0x9b, 0x24, 0x9b, 0x24, 0x9b, 0x24, 0x9b, 0x24, 0xbb, 0x34, 0x49, 0x36, 0x6b, 0xf7, 0xcb, 0x02,
		0x1f, 0x20, 0x07, 0x7b, 0x90, 0x83, 0x01, 0x65, 0x80, 0x32, 0x40, 0x19, 0xa0, 0x0c, 0x50, 0x06,
		0x28, 0x03, 0x94, 0x59, 0x06, 0x65, 0x70, 0x54, 0x81, 0x0f, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01,
		0xf8, 0xa0, 0x9a, 0x82, 0xc3, 0x51, 0xb5, 0x71, 0xb6, 0x68, 0x9e, 0xa0, 0x79, 0x62, 0xf5, 0xb9,
		0xa4, 0x79, 0x02, 0x8e, 0x2a, 0x46, 0xea, 0x24, 0x3a, 0xb0, 0x27, 0xf5, 0x02, 0xaa, 0xa4, 0xfb,
		0xae, 0x0c, 0xaa, 0xe4, 0xe3, 0xa8, 0x92, 0x53, 0x06, 0x1e, 0x4b, 0xcf, 0xed, 0x5b, 0xae, 0xb6,
		0xc5, 0x16, 0xcc, 0x52, 0x2b, 0x2a, 0x2c, 0xd8, 0x3c, 0xf6, 0x8c, 0x9f, 0x4f, 0x9f, 0xbe, 0x33,
		0xad, 0x20, 0x1d, 0x4f, 0x1e, 0xbe, 0xa0, 0xdb, 0xf8, 0x05, 0x4d, 0x7e, 0xb9, 0x53, 0x2d, 0x36,
		0x5d, 0x13, 0xde, 0x2a, 0x34, 0xce, 0xad, 0x6e, 0x94, 0xcb, 0xc4, 0xb3, 0x6a, 0xf7, 0x49, 0x82,
		0x58, 0xb5, 0x9b, 0xab, 0x75, 0xb0, 0x6a, 0x97, 0x55, 0xbb, 0xdf, 0xd1, 0x18, 0xab, 0x76, 0x0b,
		0xe8, 0x90, 0xd5, 0x1d, 0xb3, 0x0d, 0x07, 0x6d, 0xcf, 0x51, 0xdb, 0x72, 0xd8, 0xd6, 0x1d, 0xb7,
		0x75, 0x07, 0x6e, 0xd5, 0x91, 0x97, 0xb3, 0x6e, 0xc1, 0x4c, 0x08, 0x66, 0x42, 0x94, 0x2f, 0x28,
		0xd8, 0x0f, 0x0e, 0xb6, 0x83, 0x84, 0x33, 0xc1, 0xc2, 0x99, 0xa0, 0xe1, 0x44, 0xf0, 0xd0, 0x0d,
		0x22, 0xca, 0xc1, 0x24, 0xd3, 0x30, 0x33, 0x21, 0x98, 0x09, 0xa1, 0xf9, 0xc5, 0x69, 0x6b, 0x58,
		0x78, 0x0e, 0x6e, 0x8c, 0x1d, 0x71, 0x83, 0xcb, 0x26, 0xca, 0x4c, 0x08, 0x6c, 0xd5, 0x59, 0x80,
		0x60, 0x4f, 0x2a, 0x13, 0xb8, 0x25, 0xe5, 0xb3, 0x5c, 0x4c, 0x54, 0xbd, 0xb0, 0x69, 0xb3, 0x32,
		0x12, 0x6c, 0x5a, 0x8d, 0xac, 0x82, 0x9a, 0x91, 0xe2, 0x99, 0xa2, 0x66, 0x44, 0xcd, 0x28, 0x0b,
		0xe4, 0xd4, 0x8c, 0x84, 0x35, 0x0c, 0x9b, 0x96, 0x55, 0xbb, 0xa0, 0xe1, 0x22, 0xa3, 0x61, 0x68,
		0xcc, 0xe0, 0x36, 0x70, 0x1b, 0xb8, 0x0d, 0xdc, 0x06, 0x6e, 0x53, 0xad, 0x7d, 0x40, 0x63, 0xb6,
		0x71, 0xb6, 0xb8, 0xef, 0xe3, 0xbe, 0x6f, 0xf5, 0xb9, 0xe4, 0xbe, 0x0f, 0x1a, 0x33, 0x46, 0xea,
		0x24, 0x3a, 0xb0, 0x27, 0x95, 0x8b, 0x3e, 0x4a, 0x1b, 0x05, 0x94, 0x04, 0x7f, 0xdc, 0x25, 0x56,
		0x6e, 0xc6, 0x9c, 0x64, 0xe7, 0xee, 0xd3, 0xdf, 0x34, 0x3b, 0x77, 0xf3, 0x16, 0xc7, 0xce, 0x5d,
		0x51, 0xc9, 0xf0, 0xab, 0xe0, 0x57, 0x15, 0x3d, 0xae, 0xc3, 0xaf, 0x82, 0x5f, 0x55, 0xbe, 0xa0,
		0x60, 0x3f, 0x38, 0xd8, 0x0e, 0x12, 0xce, 0x04, 0x0b, 0x67, 0x82, 0x86, 0x13, 0xc1, 0xc3, 0x4e,
		0x7d, 0x03, 0x7e, 0x95, 0xba, 0x77, 0x87, 0x5f, 0xa5, 0xf8, 0xc5, 0xb9, 0x6f, 0x59, 0x78, 0x0e,
		0x4a, 0xd9, 0x8e, 0xb8, 0xc1, 0x65, 0x13, 0x85, 0x5f, 0x85, 0xad, 0x3a, 0x0b, 0x10, 0xec, 0x49,
		0x65, 0xe7, 0xee, 0xf3, 0x8d, 0x96, 0x9d, 0xbb, 0x24, 0xd9, 0x24, 0xd9, 0x24, 0xd9, 0x24, 0xd9,
		0x24, 0xd9, 0x9a, 0xe7, 0x9d, 0xf5, 0x6e, 0x65, 0x81, 0x0f, 0xb0, 0x84, 0x3d, 0x58, 0xc2, 0x80,
		0x32, 0x40, 0x19, 0xa0, 0x0c, 0x50, 0x06, 0x28, 0x03, 0x94, 0x01, 0xca, 0x2c, 0x83, 0x32, 0xc8,
		0xaa, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01, 0xf8, 0x00, 0x7c, 0x50, 0x4d, 0xc1, 0x21, 0xab, 0xda,
		0x38, 0x5b, 0x34, 0x4f, 0xd0, 0x3c, 0xb1, 0xfa, 0x5c, 0xd2, 0x3c, 0x01, 0x59, 0x15, 0x23, 0x75,
		0x12, 0x1d, 0xd8, 0x93, 0xca, 0xce, 0xdd, 0x02, 0xb8, 0x32, 0x38, 0x93, 0x4f, 0xe4, 0x4c, 0xb2,
		0x7c, 0xd7, 0x15, 0x13, 0x66, 0xf9, 0xee, 0xe3, 0x4c, 0xb6, 0xd0, 0x5b, 0x78, 0x5b, 0xf3, 0x2f,
		0x51, 0xd4, 0x6d, 0xbc, 0x2f, 0x0a, 0x74, 0xb2, 0x2a, 0xe6, 0x73, 0x1a, 0x07, 0xfe, 0x68, 0xfc,
		0xde, 0x2e, 0xfb, 0xb2, 0x49, 0x7e, 0xe5, 0xd3, 0x47, 0x13, 0x89, 0xa7, 0xb2, 0x8a, 0x3b, 0x6e,
		0x5f, 0xbe, 0xcc, 0x8e, 0xa6, 0x3f, 0x3e, 0x08, 0xde, 0xbf, 0xbd, 0x9f, 0xa6, 0x05, 0x28, 0x3f,
		0xfd, 0x32, 0x34, 0xc9, 0xfe, 0xf1, 0xeb, 0x0f, 0xcd, 0x46, 0xa7, 0xde, 0xfc, 0xb0, 0xdd, 0x39,
		0x6f, 0xd4, 0x0f, 0xab, 0x67, 0xed, 0x9f, 0x4a, 0xbe, 0x11, 0x77, 0xf2, 0x8a, 0xd7, 0x69, 0x1f,
		0xee, 0x0f, 0xd9, 0x40, 0x29, 0x06, 0x23, 0x1c, 0x99, 0xa4, 0x1b, 0x87, 0x43, 0x55, 0x1c, 0x99,
		0x1d, 0xbd, 0x7a, 0xd4, 0xed, 0x8f, 0x7a, 0xc6, 0x4b, 0x3f, 0x86, 0x89, 0xd7, 0x1d, 0x44, 0x69,
		0x10, 0x46, 0x26, 0xf6, 0xae, 0x06, 0xb1, 0x57, 0x6f, 0xde, 0x6e, 0x7b, 0xb3, 0xb8, 0xe2, 0x4d,
		0xb4, 0xef, 0x25, 0x43, 0xd3, 0x0d, 0xaf, 0xc2, 0xee, 0x9f, 0xb3, 0xe8, 0x3d, 0x8a, 0xa7, 0x18,
		0x42, 0xc9, 0x5e, 0x2c, 0x5c, 0x19, 0x2c, 0x9e, 0xc9, 0xde, 0xc2, 0x8b, 0x52, 0xbc, 0x2a, 0xb4,
		0x79, 0x3f, 0xb0, 0x74, 0x44, 0xf3, 0xb1, 0x15, 0xf0, 0xbf, 0xd5, 0x4f, 0xbf, 0x28, 0x14, 0xaa,
		0x52, 0xca, 0x53, 0xdc, 0xcf, 0x4f, 0x04, 0x1d, 0x4e, 0xbe, 0x19, 0x88, 0xcc, 0xf9, 0xce, 0xff,
		0x3c, 0x08, 0x58, 0x6c, 0x25, 0x7b, 0x6d, 0xbb, 0xfe, 0xcd, 0xa8, 0x9f, 0x4e, 0xf5, 0x21, 0x65,
		0xb7, 0x59, 0x08, 0x5f, 0x29, 0x55, 0xe8, 0x3c, 0xca, 0x0e, 0x38, 0x12, 0x6f, 0xc5, 0xd0, 0x68,
		0xb9, 0xd0, 0x6b, 0xad, 0xd0, 0xc2, 0x43, 0xea, 0xad, 0x12, 0xea, 0x90, 0x47, 0xb5, 0xf5, 0xa1,
		0x58, 0x75, 0x0d, 0xe9, 0x01, 0x42, 0x4b, 0x74, 0x42, 0x79, 0x53, 0x5e, 0x45, 0x62, 0x94, 0xb6,
		0x66, 0x9d, 0xa9, 0x70, 0x6a, 0x7d, 0x6c, 0x9a, 0x7d, 0x6b, 0xfa, 0x7d, 0x6a, 0x36, 0x8b, 0x3e,
		0xaa, 0x7d, 0x68, 0x6e, 0x94, 0x7d, 0xb4, 0xfa, 0xcc, 0x8a, 0x7d, 0x5d, 0xa3, 0x35, 0xc5, 0xad,
		0xd2, 0x9d, 0xfb, 0x10, 0xe5, 0x32, 0xd4, 0x4c, 0x6e, 0xc9, 0xc7, 0x74, 0x6e, 0x30, 0xa6, 0xb3,
		0xf8, 0x0e, 0xdb, 0xba, 0xe3, 0xb6, 0xee, 0xc0, 0xad, 0x3a, 0x72, 0x1d, 0x87, 0xae, 0xe4, 0xd8,
		0xd5, 0x1d, 0x7c, 0x26, 0x90, 0x31, 0x9d, 0xb0, 0x4d, 0xbc, 0xf2, 0x07, 0x07, 0xdb, 0x41, 0xc2,
		0x99, 0x60, 0xe1, 0x4c, 0xd0, 0x70, 0x22, 0x78, 0xe8, 0x06, 0x11, 0xe5, 0x60, 0x92, 0x69, 0x98,
		0x31, 0x9d, 0x8c, 0xe9, 0xd4, 0xfc, 0xe2, 0x30, 0x4d, 0x16, 0x9e, 0x83, 0x26, 0x7e, 0x47, 0xdc,
		0xe0, 0xb2, 0x89, 0x32, 0xa6, 0x13, 0x5b, 0x75, 0x16, 0x20, 0xd8, 0x93, 0xca, 0x76, 0x34, 0x49,
		0xf9, 0x2c, 0x7e, 0x17, 0x55, 0x2f, 0x03, 0xce, 0xb2, 0x32, 0x12, 0x03, 0xce, 0x34, 0xb2, 0x0a,
		0x6a, 0x46, 0x8a, 0x67, 0x8a, 0x9a, 0x11, 0x35, 0xa3, 0x2c, 0x90, 0x53, 0x33, 0x12, 0xd6, 0x30,
		0x03, 0xce, 0xf4, 0x07, 0x9c, 0x81, 0x86, 0x41, 0xc3, 0xf9, 0xa9, 0x97, 0xc9, 0x72, 0xe0, 0x36,
		0x70, 0x1b, 0xb8, 0x0d, 0xdc, 0x06, 0x6e, 0x53, 0xad, 0x7d, 0x30, 0x59, 0xce, 0xc6, 0xd9, 0xe2,
		0xbe, 0x8f, 0xfb, 0xbe, 0xd5, 0xe7, 0x92, 0xfb, 0x3e, 0x26, 0xcb, 0x61, 0xa4, 0x4e, 0xa2, 0x03,
		0x7b, 0x52, 0xb9, 0xe8, 0xa3, 0xb4, 0x51, 0x40, 0x49, 0x8c, 0xf4, 0xb3, 0x33, 0x7f, 0x60, 0x81,
		0x52, 0xbe, 0x34, 0x21, 0xed, 0xd5, 0x8c, 0xb0, 0x53, 0x96, 0x61, 0x1e, 0x2a, 0x73, 0xde, 0x82,
		0xd4, 0xe8, 0x33, 0xab, 0xa6, 0x62, 0x4b, 0x4e, 0xac, 0xda, 0x82, 0x58, 0x25, 0x20, 0x19, 0x62,
		0x15, 0xc4, 0xaa, 0xa2, 0x07, 0x74, 0x88, 0x55, 0x10, 0xab, 0xca, 0x17, 0x14, 0xec, 0x07, 0x07,
		0xdb, 0x41, 0xc2, 0x99, 0x60, 0xe1, 0x4c, 0xd0, 0x70, 0x22, 0x78, 0xd8, 0x29, 0x6c, 0x40, 0xac,
		0x52, 0xf7, 0xee, 0x10, 0xab, 0x14, 0xbf, 0x38, 0x17, 0x2d, 0x0b, 0xcf, 0x41, 0x0d, 0xdb, 0x11,
		0x37, 0xb8, 0x6c, 0xa2, 0x10, 0xab, 0xb0, 0x55, 0x67, 0x01, 0x82, 0x3d, 0xa9, 0x17, 0x74, 0x34,
		0x3e, 0xdb, 0x68, 0x97, 0x56, 0x73, 0x98, 0xcf, 0x5d, 0x63, 0x7a, 0xa6, 0x67, 0x95, 0xe4, 0xb3,
		0xe2, 0x71, 0x48, 0xb2, 0x49, 0xb2, 0x49, 0xb2, 0x49, 0xb2, 0x49, 0xb2, 0x4b, 0x93, 0x64, 0xb3,
		0x6a, 0xbf, 0x2c, 0xf0, 0x01, 0x7a, 0xb0, 0x07, 0x3d, 0x18, 0x50, 0x06, 0x28, 0x03, 0x94, 0x01,
		0xca, 0x00, 0x65, 0x80, 0x32, 0x40, 0x99, 0x65, 0x50, 0x06, 0x4b, 0x15, 0xf8, 0x00, 0x7c, 0x00,
		0x3e, 0x00, 0x1f, 0x80, 0x0f, 0xaa, 0x29, 0x38, 0x2c, 0x55, 0x1b, 0x67, 0x8b, 0xe6, 0x09, 0x9a,
		0x27, 0x56, 0x9f, 0x4b, 0x9a, 0x27, 0x60, 0xa9, 0x62, 0xa4, 0x4e, 0xa2, 0x03, 0x7b, 0x52, 0x2f,
		0x20, 0x4b, 0xba, 0xef, 0xca, 0x20, 0x4b, 0x3e, 0x96, 0x2c, 0x39, 0xe5, 0xe0, 0xb1, 0xf8, 0xdc,
		0xbe, 0xed, 0x6a, 0xdb, 0x6c, 0xe1, 0x6c, 0xb5, 0xa2, 0xc2, 0x84, 0xcd, 0x61, 0xdf, 0xf8, 0xee,
		0xc9, 0xfc, 0xf9, 0x3b, 0xd3, 0x3a, 0xd2, 0xf1, 0xe4, 0xf1, 0x0b, 0xba, 0x95, 0x5f, 0xd0, 0xec,
		0x97, 0xfb, 0xd5, 0x62, 0xd3, 0x35, 0xe1, 0xad, 0x42, 0xfb, 0xdc, 0xea, 0x76, 0xb9, 0x4c, 0x3c,
		0x2b, 0x77, 0x9f, 0x24, 0x88, 0x95, 0xbb, 0xb9, 0x5a, 0x07, 0x2b, 0x77, 0x59, 0xb9, 0xfb, 0x1d,
		0x8d, 0xb1, 0x72, 0xb7, 0x80, 0x0e, 0x59, 0xdd, 0x31, 0xdb, 0x70, 0xd0, 0xf6, 0x1c, 0xb5, 0x2d,
		0x87, 0x6d, 0xdd, 0x71, 0x5b, 0x77, 0xe0, 0x56, 0x1d, 0x79, 0x39, 0xab, 0x17, 0x4c, 0x86, 0x60,
		0x32, 0x44, 0xf9, 0x82, 0x82, 0xfd, 0xe0, 0x60, 0x3b, 0x48, 0x38, 0x13, 0x2c, 0x9c, 0x09, 0x1a,
		0x4e, 0x04, 0x0f, 0xdd, 0x20, 0xa2, 0x1c, 0x4c, 0x32, 0x0d, 0x33, 0x19, 0x82, 0xc9, 0x10, 0x9a,
		0x5f, 0x9c, 0xe6, 0x86, 0x85, 0xe7, 0xe0, 0xde, 0xd8, 0x11, 0x37, 0xb8, 0x6c, 0xa2, 0x4c, 0x86,
		0xc0, 0x56, 0x9d, 0x05, 0x08, 0xf6, 0xa4, 0x32, 0x89, 0x5b, 0x52, 0x3e, 0x4b, 0xc6, 0x44, 0xd5,
		0x0b, 0xa7, 0x36, 0x2b, 0x23, 0xc1, 0xa9, 0xd5, 0xc8, 0x2a, 0xa8, 0x19, 0x29, 0x9e, 0x29, 0x6a,
		0x46, 0xd4, 0x8c, 0xb2, 0x40, 0x4e, 0xcd, 0x48, 0x58, 0xc3, 0x70, 0x6a, 0x59, 0xb9, 0x0b, 0x1a,
		0x2e, 0x32, 0x1a, 0x86, 0xcc, 0x0c, 0x6e, 0x03, 0xb7, 0x81, 0xdb, 0xc0, 0x6d, 0xe0, 0x36, 0xd5,
		0xda, 0x07, 0x64, 0x66, 0x1b, 0x67, 0x8b, 0xfb, 0x3e, 0xee, 0xfb, 0x56, 0x9f, 0x4b, 0xee, 0xfb,
		0x20, 0x33, 0x63, 0xa4, 0x4e, 0xa2, 0x03, 0x7b, 0x52, 0xb9, 0xe8, 0xa3, 0xb4, 0x51, 0x40, 0x49,
		0xb0, 0xc8, 0xdd, 0x62, 0xe6, 0x66, 0xdc, 0x49, 0x76, 0xef, 0x3e, 0xfd, 0x5d, 0xb3, 0x7b, 0x37,
		0x6f, 0x71, 0xec, 0xde, 0x15, 0x95, 0x0c, 0xc3, 0x0a, 0x86, 0x55, 0xd1, 0x23, 0x3b, 0x0c, 0x2b,
		0x18, 0x56, 0xe5, 0x0b, 0x0a, 0xf6, 0x83, 0x83, 0xed, 0x20, 0xe1, 0x4c, 0xb0, 0x70, 0x26, 0x68,
		0x38, 0x11, 0x3c, 0xec, 0x54, 0x38, 0x60, 0x58, 0xa9, 0x7b, 0x77, 0x18, 0x56, 0x8a, 0x5f, 0x9c,
		0x1b, 0x97, 0x85, 0xe7, 0xa0, 0x98, 0xed, 0x88, 0x1b, 0x5c, 0x36, 0x51, 0x18, 0x56, 0xd8, 0xaa,
		0xb3, 0x00, 0xc1, 0x9e, 0x54, 0x76, 0xef, 0x3e, 0xdf, 0x68, 0xd9, 0xbd, 0x4b, 0x92, 0x4d, 0x92,
		0x4d, 0x92, 0x4d, 0x92, 0x4d, 0x92, 0xad, 0x79, 0xde, 0x59, 0xf3, 0x56, 0x16, 0xf8, 0x00, 0x4f,
		0xd8, 0x83, 0x27, 0x0c, 0x28, 0x03, 0x94, 0x01, 0xca, 0x00, 0x65, 0x80, 0x32, 0x40, 0x19, 0xa0,
		0xcc, 0x32, 0x28, 0x83, 0xae, 0x0a, 0x7c, 0x00, 0x3e, 0x00, 0x1f, 0x80, 0x0f, 0xc0, 0x07, 0xd5,
		0x14, 0x1c, 0xba, 0xaa, 0x8d, 0xb3, 0x45, 0xf3, 0x04, 0xcd, 0x13, 0xab, 0xcf, 0x25, 0xcd, 0x13,
		0xd0, 0x55, 0x31, 0x52, 0x27, 0xd1, 0x81, 0x3d, 0xa9, 0xec, 0xde, 0x2d, 0x80, 0x2b, 0x83, 0x35,
		0xf9, 0x64, 0xd6, 0x24, 0x4b, 0x78, 0x5d, 0x31, 0x62, 0x96, 0xf0, 0x3e, 0xd6, 0x68, 0x0b, 0xbe,
		0x8d, 0xb7, 0x35, 0xff, 0x1a, 0x45, 0xdd, 0xca, 0xfb, 0xa2, 0x40, 0xa7, 0xab, 0x62, 0x3e, 0xa7,
		0x71, 0xe0, 0x8f, 0xc6, 0x6f, 0xee, 0xb2, 0x2f, 0x9b, 0xea, 0x57, 0x3e, 0x7d, 0x34, 0x91, 0x78,
		0x42, 0xab, 0xb8, 0xeb, 0xf6, 0xe5, 0xcb, 0xec, 0x78, 0xfa, 0xe3, 0xa3, 0xe0, 0xfd, 0xdb, 0xfb,
		0x69, 0x5a, 0x86, 0xf2, 0xd3, 0x2f, 0x43, 0x93, 0xec, 0x1f, 0xbf, 0xfe, 0xd0, 0x6c, 0x74, 0xea,
		0xcd, 0x0f, 0xbb, 0x9d, 0x93, 0xf3, 0xe3, 0x76, 0xfd, 0xb0, 0x7a, 0xd6, 0xfe, 0xa9, 0xe4, 0xbb,
		0x71, 0x27, 0x2f, 0x79, 0x9d, 0x36, 0xe3, 0xfe, 0xa0, 0x15, 0x94, 0x62, 0x44, 0xc2, 0x91, 0x49,
		0xba, 0x71, 0x38, 0x54, 0x45, 0x94, 0xd9, 0xf1, 0xab, 0x47, 0xdd, 0xfe, 0xa8, 0x67, 0xbc, 0xf4,
		0x63, 0x98, 0x78, 0xdd, 0x41, 0x94, 0x06, 0x61, 0x64, 0x62, 0xef, 0x6a, 0x10, 0x7b, 0x59, 0x84,
		0xf4, 0xea, 0xcd, 0xdb, 0x5d, 0x6f, 0xf2, 0x06, 0xbc, 0x64, 0x68, 0xba, 0xe1, 0x55, 0xd8, 0xfd,
		0x73, 0x16, 0xc7, 0x47, 0xf1, 0x14, 0x4d, 0x28, 0xd9, 0x8c, 0x85, 0xeb, 0x83, 0xc5, 0x73, 0xd9,
		0x5b, 0x78, 0x55, 0x8a, 0xd7, 0x86, 0x36, 0xef, 0x0a, 0x96, 0x8e, 0x69, 0x5e, 0xd6, 0x42, 0x2e,
		0x60, 0xf5, 0xd3, 0x2f, 0x0a, 0x85, 0xae, 0x94, 0x72, 0x96, 0x22, 0xe4, 0x2a, 0x82, 0x4e, 0x27,
		0xef, 0x6c, 0x44, 0xe6, 0x8c, 0xe7, 0x7f, 0x26, 0x04, 0xac, 0xb6, 0xb2, 0xf0, 0xea, 0x46, 0xd1,
		0x54, 0x1b, 0x52, 0x96, 0x9b, 0x05, 0xf2, 0x15, 0x32, 0x85, 0xce, 0xa3, 0xec, 0xb8, 0x23, 0xf1,
		0xc6, 0x0c, 0x8d, 0x06, 0x0c, 0xbd, 0x46, 0x0b, 0x2d, 0x44, 0xa4, 0xde, 0x38, 0xa1, 0x0e, 0x7a,
		0x54, 0x1b, 0x21, 0x8a, 0x55, 0xdf, 0x90, 0x1e, 0x27, 0xb4, 0x44, 0x2e, 0x94, 0x37, 0xe5, 0x55,
		0x94, 0x46, 0x69, 0x6b, 0xd6, 0x99, 0x11, 0xa7, 0xd6, 0xd5, 0xa6, 0xd9, 0xc5, 0xa6, 0xdf, 0xb5,
		0x66, 0xb3, 0xf4, 0xa3, 0xda, 0x95, 0xe6, 0x46, 0xf1, 0x47, 0xab, 0xeb, 0xac, 0xd8, 0x57, 0x37,
		0x5a, 0x33, 0xdd, 0x2a, 0xdd, 0xb9, 0x0f, 0x51, 0x2e, 0x45, 0xcd, 0xe4, 0x96, 0x7c, 0x68, 0xe7,
		0x06, 0x43, 0x3b, 0x8b, 0xef, 0xb0, 0xad, 0x3b, 0x6e, 0xeb, 0x0e, 0xdc, 0xaa, 0x23, 0xd7, 0x71,
		0xe8, 0x4a, 0x8e, 0x5d, 0xdd, 0xc1, 0x67, 0x02, 0x19, 0xda, 0x09, 0xf7, 0xc4, 0x2b, 0x7f, 0x70,
		0xb0, 0x1d, 0x24, 0x9c, 0x09, 0x16, 0xce, 0x04, 0x0d, 0x27, 0x82, 0x87, 0x6e, 0x10, 0x51, 0x0e,
		0x26, 0x99, 0x86, 0x19, 0xda, 0xc9, 0xd0, 0x4e, 0xcd, 0x2f, 0x0e, 0xef, 0x64, 0xe1, 0x39, 0x68,
		0xe9, 0x77, 0xc4, 0x0d, 0x2e, 0x9b, 0x28, 0x43, 0x3b, 0xb1, 0x55, 0x67, 0x01, 0x82, 0x3d, 0xa9,
		0x6c, 0x4b, 0x93, 0x94, 0xcf, 0x22, 0x78, 0x51, 0xf5, 0x32, 0xee, 0x2c, 0x2b, 0x23, 0x31, 0xee,
		0x4c, 0x23, 0xab, 0xa0, 0x66, 0xa4, 0x78, 0xa6, 0xa8, 0x19, 0x51, 0x33, 0xca, 0x02, 0x39, 0x35,
		0x23, 0x61, 0x0d, 0x33, 0xee, 0x4c, 0x7f, 0xdc, 0x19, 0x68, 0x18, 0x34, 0x9c, 0x9f, 0x7a, 0x99,
		0x33, 0x07, 0x6e, 0x03, 0xb7, 0x81, 0xdb, 0xc0, 0x6d, 0xe0, 0x36, 0xd5, 0xda, 0x07, 0x73, 0xe6,
		0x6c, 0x9c, 0x2d, 0xee, 0xfb, 0xb8, 0xef, 0x5b, 0x7d, 0x2e, 0xb9, 0xef, 0x63, 0xce, 0x1c, 0x46,
		0xea, 0x24, 0x3a, 0xb0, 0x27, 0x95, 0x8b, 0x3e, 0x4a, 0x1b, 0x05, 0x94, 0xc4, 0x80, 0x3f, 0x5b,
		0xf3, 0x07, 0x66, 0x84, 0xf2, 0xa5, 0x49, 0x69, 0xaf, 0x66, 0x74, 0x9d, 0xb2, 0x8c, 0xf2, 0x50,
		0x99, 0xf7, 0x16, 0xa4, 0x46, 0x9f, 0x57, 0x35, 0x15, 0x5b, 0x72, 0x5a, 0xd5, 0x16, 0xb4, 0x2a,
		0x01, 0xc9, 0xd0, 0xaa, 0xa0, 0x55, 0x15, 0x3d, 0x9c, 0x43, 0xab, 0x82, 0x56, 0x55, 0xbe, 0xa0,
		0x60, 0x3f, 0x38, 0xd8, 0x0e, 0x12, 0xce, 0x04, 0x0b, 0x67, 0x82, 0x86, 0x13, 0xc1, 0xc3, 0x4e,
		0x59, 0x03, 0x5a, 0x95, 0xba, 0x77, 0x87, 0x56, 0xa5, 0xf8, 0xc5, 0xb9, 0x66, 0x59, 0x78, 0x0e,
		0x2a, 0xd8, 0x8e, 0xb8, 0xc1, 0x65, 0x13, 0x85, 0x56, 0x85, 0xad, 0x3a, 0x0b, 0x10, 0xec, 0x49,
		0xbd, 0xa0, 0x9f, 0xf1, 0xd9, 0x46, 0xbb, 0xb4, 0xa2, 0xc3, 0x7c, 0xee, 0x1a, 0xd3, 0x33, 0x3d,
		0xab, 0x14, 0x9f, 0x15, 0x8f, 0x43, 0x92, 0x4d, 0x92, 0x4d, 0x92, 0x4d, 0x92, 0x4d, 0x92, 0x5d,
		0x9a, 0x24, 0x9b, 0xb5, 0xfb, 0x65, 0x81, 0x0f, 0x90, 0x83, 0x3d, 0xc8, 0xc1, 0x80, 0x32, 0x40,
		0x19, 0xa0, 0x0c, 0x50, 0x06, 0x28, 0x03, 0x94, 0x01, 0xca, 0x2c, 0x83, 0x32, 0x38, 0xaa, 0xc0,
		0x07, 0xe0, 0x03, 0xf0, 0x01, 0xf8, 0x00, 0x7c, 0x50, 0x4d, 0xc1, 0xe1, 0xa8, 0xda, 0x38, 0x5b,
		0x34, 0x4f, 0xd0, 0x3c, 0xb1, 0xfa, 0x5c, 0xd2, 0x3c, 0x01, 0x47, 0x15, 0x23, 0x75, 0x12, 0x1d,
		0xd8, 0x93, 0x7a, 0x01, 0x55, 0xd2, 0x7d, 0x57, 0x06, 0x55, 0xf2, 0x71, 0x54, 0xc9, 0x29, 0x03,
		0x8f, 0xa5, 0xe7, 0xf6, 0x2d, 0x57, 0xdb, 0x62, 0x0b, 0x66, 0xa9, 0x15, 0x15, 0x16, 0x6c, 0x1e,
		0x7b, 0xc6, 0xcf, 0xa7, 0x4f, 0xdf, 0x99, 0x56, 0x90, 0x8e, 0x27, 0x0f, 0x5f, 0xd0, 0x6d, 0xfc,
		0x82, 0x26, 0xbf, 0xdc, 0xa9, 0x16, 0x9b, 0xae, 0x09, 0x6f, 0x15, 0x1a, 0xe7, 0x56, 0x37, 0xca,
		0x65, 0xe2, 0x59, 0xb5, 0xfb, 0x24, 0x41, 0xac, 0xda, 0xcd, 0xd5, 0x3a, 0x58, 0xb5, 0xcb, 0xaa,
		0xdd, 0xef, 0x68, 0x8c, 0x55, 0xbb, 0x05, 0x74, 0xc8, 0xea, 0x8e, 0xd9, 0x86, 0x83, 0xb6, 0xe7,
		0xa8, 0x6d, 0x39, 0x6c, 0xeb, 0x8e, 0xdb, 0xba, 0x03, 0xb7, 0xea, 0xc8, 0xcb, 0x59, 0xb7, 0x60,
		0x26, 0x04, 0x33, 0x21, 0xca, 0x17, 0x14, 0xec, 0x07, 0x07, 0xdb, 0x41, 0xc2, 0x99, 0x60, 0xe1,
		0x4c, 0xd0, 0x70, 0x22, 0x78, 0xe8, 0x06, 0x11, 0xe5, 0x60, 0x92, 0x69, 0x98, 0x99, 0x10, 0xcc,
		0x84, 0xd0, 0xfc, 0xe2, 0xb4, 0x35, 0x2c, 0x3c, 0x07, 0x37, 0xc6, 0x8e, 0xb8, 0xc1, 0x65, 0x13,
		0x65, 0x26, 0x04, 0xb6, 0xea, 0x2c, 0x40, 0xb0, 0x27, 0x95, 0x09, 0xdc, 0x92, 0xf2, 0x59, 0x2e,
		0x26, 0xaa, 0x5e, 0xd8, 0xb4, 0x59, 0x19, 0x09, 0x36, 0xad, 0x46, 0x56, 0x41, 0xcd, 0x48, 0xf1,
		0x4c, 0x51, 0x33, 0xa2, 0x66, 0x94, 0x05, 0x72, 0x6a, 0x46, 0xc2, 0x1a, 0x86, 0x4d, 0xcb, 0xaa,
		0x5d, 0xd0, 0x70, 0x91, 0xd1, 0x30, 0x34, 0x66, 0x70, 0x1b, 0xb8, 0x0d, 0xdc, 0x06, 0x6e, 0x03,
		0xb7, 0xa9, 0xd6, 0x3e, 0xa0, 0x31, 0xdb, 0x38, 0x5b, 0xdc, 0xf7, 0x71, 0xdf, 0xb7, 0xfa, 0x5c,
		0x72, 0xdf, 0x07, 0x8d, 0x19, 0x23, 0x75, 0x12, 0x1d, 0xd8, 0x93, 0xca, 0x45, 0x1f, 0xa5, 0x8d,
		0x02, 0x4a, 0x82, 0x3f, 0xee, 0x12, 0x2b, 0x37, 0x63, 0x4e, 0xb2, 0x73, 0xf7, 0xe9, 0x6f, 0x9a,
		0x9d, 0xbb, 0x79, 0x8b, 0x63, 0xe7, 0xae, 0xa8, 0x64, 0xf8, 0x55, 0xf0, 0xab, 0x8a, 0x1e, 0xd7,
		0xe1, 0x57, 0xc1, 0xaf, 0x2a, 0x5f, 0x50, 0xb0, 0x1f, 0x1c, 0x6c, 0x07, 0x09, 0x67, 0x82, 0x85,
		0x33, 0x41, 0xc3, 0x89, 0xe0, 0x61, 0xa7, 0xbe, 0x01, 0xbf, 0x4a, 0xdd, 0xbb, 0xc3, 0xaf, 0x52,
		0xfc, 0xe2, 0xdc, 0xb7, 0x2c, 0x3c, 0x07, 0xa5, 0x6c, 0x47, 0xdc, 0xe0, 0xb2, 0x89, 0xc2, 0xaf,
		0xc2, 0x56, 0x9d, 0x05, 0x08, 0xf6, 0xa4, 0xb2, 0x73, 0xf7, 0xf9, 0x46, 0xcb, 0xce, 0x5d, 0x92,
		0x6c, 0x92, 0x6c, 0x92, 0x6c, 0x92, 0x6c, 0x92, 0x6c, 0xcd, 0xf3, 0xce, 0x7a, 0xb7, 0xb2, 0xc0,
		0x07, 0x58, 0xc2, 0x1e, 0x2c, 0x61, 0x40, 0x19, 0xa0, 0x0c, 0x50, 0x06, 0x28, 0x03, 0x94, 0x01,
		0xca, 0x00, 0x65, 0x96, 0x41, 0x19, 0x64, 0x55, 0xe0, 0x03, 0xf0, 0x01, 0xf8, 0x00, 0x7c, 0x00,
		0x3e, 0xa8, 0xa6, 0xe0, 0x90, 0x55, 0x6d, 0x9c, 0x2d, 0x9a, 0x27, 0x68, 0x9e, 0x58, 0x7d, 0x2e,
		0x69, 0x9e, 0x80, 0xac, 0x8a, 0x91, 0x3a, 0x89, 0x0e, 0xec, 0x49, 0x65, 0xe7, 0x6e, 0x01, 0x5c,
		0x19, 0x9c, 0xc9, 0x27, 0x72, 0x26, 0x59, 0xbe, 0xeb, 0x8a, 0x09, 0xb3, 0x7c, 0xf7, 0x71, 0x26,
		0x5b, 0xe8, 0x2d, 0xbc, 0xad, 0xf9, 0x97, 0x28, 0xea, 0x36, 0xde, 0x17, 0x05, 0x3a, 0x59, 0x15,
		0xf3, 0x39, 0x8d, 0x03, 0x7f, 0x34, 0x7e, 0x6f, 0x97, 0x7d, 0xd9, 0x24, 0xbf, 0xf2, 0xe9, 0xa3,
		0x89, 0xc4, 0x53, 0x59, 0xc5, 0x1d, 0xb7, 0x2f, 0x5f, 0x66, 0x47, 0xd3, 0x1f, 0x1f, 0x04, 0xef,
		0xdf, 0xde, 0x4f, 0xd3, 0x02, 0x94, 0x9f, 0x7e, 0x19, 0x9a, 0x64, 0xff, 0xf8, 0xf5, 0x87, 0x66,
		0xa3, 0x53, 0x6f, 0x7e, 0xd8, 0xed, 0x9c, 0x37, 0xea, 0x87, 0xd5, 0xb3, 0xf6, 0x4f, 0x25, 0xdf,
		0x88, 0x3b, 0x79, 0xc5, 0xeb, 0xb4, 0x0f, 0xf7, 0x87, 0x6c, 0xa0, 0x14, 0x83, 0x11, 0x8e, 0x4c,
		0xd2, 0x8d, 0xc3, 0xa1, 0x2a, 0x8e, 0xcc, 0x8e, 0x5e, 0x3d, 0xea, 0xf6, 0x47, 0x3d, 0xe3, 0xa5,
		0x1f, 0xc3, 0xc4, 0xeb, 0x0e, 0xa2, 0x34, 0x08, 0x23, 0x13, 0x7b, 0x57, 0x83, 0xd8, 0x9b, 0x45,
		0x46, 0xaf, 0xde, 0xbc, 0xdd, 0xf5, 0x26, 0xda, 0xf7, 0x92, 0xa1, 0xe9, 0x86, 0x57, 0x61, 0xf7,
		0xcf, 0x59, 0xf4, 0x1e, 0xc5, 0x53, 0x0c, 0xa1, 0x64, 0x2f, 0x16, 0xae, 0x0c, 0x16, 0xcf, 0x64,
		0x6f, 0xe1, 0x45, 0x29, 0x5e, 0x15, 0xda, 0xbc, 0x1f, 0x58, 0x3a, 0xa2, 0xf9, 0xd8, 0x0a, 0xf8,
		0xdf, 0xea, 0xa7, 0x5f, 0x14, 0x0a, 0x55, 0x29, 0xe5, 0x29, 0xee, 0xe7, 0x27, 0x82, 0x0e, 0x27,
		0xdf, 0x0c, 0x44, 0xe6, 0x7c, 0xe7, 0x7f, 0x1e, 0x04, 0x2c, 0xb6, 0x92, 0xc4, 0xff, 0x1f, 0x7b,
		0x6f, 0xdb, 0xd3, 0xc6, 0xb2, 0x74, 0x81, 0x7e, 0xcf, 0xaf, 0xb0, 0x46, 0x47, 0x7a, 0x40, 0xca,
		0xc4, 0xd8, 0xf8, 0x25, 0x20, 0x3d, 0x1f, 0x4c, 0x20, 0x79, 0x7c, 0x2f, 0x01, 0x04, 0x24, 0xf7,
		0x1c, 0x65, 0xfb, 0x58, 0x63, 0xbb, 0x0d, 0xbd, 0x63, 0x7a, 0xac, 0x99, 0x36, 0x01, 0x05, 0xff,
		0xf7, 0x2b, 0xbf, 0x0d, 0x18, 0xdb, 0xd9, 0x18, 0xa6, 0xab, 0xab, 0xc7, 0xcb, 0xda, 0x3a, 0xe1,
		0x18, 0x4c, 0x37, 0xd3, 0xd5, 0xb5, 0x56, 0xad, 0xaa, 0xae, 0xd6, 0xc2, 0xef, 0x87, 0x3d, 0xd9,
		0xbe, 0x1f, 0x2d, 0x5e, 0xc9, 0x98, 0xcd, 0x3e, 0x76, 0x37, 0x7a, 0x3e, 0xa2, 0xa1, 0x7d, 0x68,
		0xb6, 0xb1, 0x91, 0xf1, 0x12, 0x0c, 0x8a, 0x52, 0x0b, 0xba, 0x92, 0x0a, 0x2a, 0x1e, 0x44, 0x5e,
		0x22, 0x41, 0x4e, 0x75, 0x48, 0x4b, 0x1e, 0xdc, 0xd2, 0x33, 0x4c, 0x37, 0x0e, 0x9a, 0x3b, 0x46,
		0x68, 0xde, 0x94, 0x97, 0x1d, 0x5e, 0x34, 0x6d, 0xcd, 0x34, 0xdd, 0xe0, 0xc8, 0xea, 0xd7, 0x28,
		0xeb, 0xd5, 0xe8, 0xeb, 0xd3, 0x6c, 0x8a, 0x3d, 0xa4, 0xf5, 0x67, 0x3c, 0xe4, 0x1e, 0xaa, 0xfa,
		0x32, 0xb7, 0xd3, 0x34, 0x54, 0xdd, 0xdb, 0xbc, 0xf6, 0xcc, 0x87, 0x10, 0xcb, 0x4f, 0xd3, 0x71,
		0x33, 0xde, 0x9e, 0x73, 0x07, 0xed, 0x39, 0xdd, 0x77, 0xd8, 0xd6, 0x1d, 0xb7, 0x75, 0x07, 0x6e,
		0xd5, 0x91, 0xd3, 0x38, 0x74, 0x22, 0xc7, 0x4e, 0xee, 0xe0, 0x93, 0x01, 0xd1, 0x9e, 0x13, 0xa7,
		0x4c, 0x72, 0xd9, 0x07, 0x07, 0xdb, 0x20, 0xc1, 0x06, 0x2c, 0xd8, 0x80, 0x06, 0x0b, 0xf0, 0xa0,
		0x05, 0x11, 0x62, 0x30, 0x49, 0x9e, 0x30, 0xda, 0x73, 0xa2, 0x3d, 0x27, 0xe5, 0x1f, 0x8e, 0x13,
		0x26, 0x4f, 0xe6, 0x81, 0xe2, 0x7d, 0x26, 0x6e, 0x70, 0xde, 0x44, 0xd1, 0x9e, 0x13, 0xb6, 0xca,
		0x96, 0x20, 0xd8, 0x1b, 0x15, 0xb7, 0xa2, 0x99, 0x1c, 0x1f, 0x17, 0xbe, 0x1b, 0x7d, 0xbc, 0x68,
		0x6c, 0x96, 0xc8, 0x48, 0x68, 0x6c, 0x46, 0x11, 0x55, 0x40, 0x33, 0x22, 0xdc, 0x53, 0xd0, 0x8c,
		0xa0, 0x19, 0x25, 0x40, 0x0e, 0xcd, 0xc8, 0xf0, 0x13, 0x46, 0x63, 0x33, 0xfa, 0xc6, 0x66, 0x60,
		0xc3, 0x60, 0xc3, 0xe9, 0x3d, 0x5e, 0x74, 0x94, 0x03, 0x6f, 0x03, 0x6f, 0x03, 0x6f, 0x03, 0x6f,
		0x03, 0x6f, 0x23, 0xd5, 0x3e, 0xd0, 0x51, 0xce, 0xc6, 0xde, 0x42, 0xbe, 0x0f, 0xf9, 0xbe, 0xe5,
		0xfb, 0x12, 0xf9, 0x3e, 0x74, 0x94, 0x83, 0x91, 0xb2, 0x64, 0x07, 0xf6, 0x46, 0x45, 0xa2, 0x0f,
		0xd2, 0x86, 0x83, 0x23, 0xa1, 0x95, 0x1f, 0x69, 0xdf, 0x81, 0xe7, 0xc7, 0xc9, 0xe7, 0xba, 0xa2,
		0xe5, 0xa7, 0x87, 0x75, 0xb2, 0xd2, 0xc0, 0x83, 0xa4, 0xb7, 0x5b, 0xa0, 0x05, 0xfd, 0xa9, 0xaa,
		0xc9, 0xb0, 0x19, 0x3f, 0x54, 0x55, 0xc4, 0xa1, 0x2a, 0x03, 0x23, 0xe3, 0x50, 0x15, 0x0e, 0x55,
		0xb9, 0x0e, 0xe6, 0x38, 0x54, 0x85, 0x43, 0x55, 0xd9, 0x03, 0x05, 0xfb, 0xe0, 0x60, 0x1b, 0x24,
		0xd8, 0x80, 0x05, 0x1b, 0xd0, 0x60, 0x01, 0x1e, 0x76, 0x44, 0x0d, 0x1c, 0xaa, 0x22, 0xf7, 0xee,
		0x38, 0x54, 0x45, 0xf8, 0x87, 0x23, 0xc9, 0xf2, 0x64, 0x1e, 0xd0, 0xaf, 0x99, 0xb8, 0xc1, 0x79,
		0x13, 0xc5, 0xa1, 0x2a, 0xd8, 0x2a, 0x5b, 0x82, 0x60, 0x6f, 0xd4, 0x06, 0xaa, 0x19, 0xdf, 0x6c,
		0xb4, 0x73, 0xd7, 0x71, 0x88, 0xbb, 0xb6, 0x10, 0x1d, 0xd1, 0xb1, 0x7a, 0xc0, 0x67, 0xc9, 0x74,
		0x10, 0x64, 0x23, 0xc8, 0x46, 0x90, 0x8d, 0x20, 0x1b, 0x41, 0x76, 0x66, 0x82, 0x6c, 0x5c, 0xaf,
		0x9f, 0x15, 0xfa, 0x80, 0xa3, 0xc1, 0x39, 0x1c, 0x0d, 0x06, 0x29, 0x03, 0x29, 0x03, 0x29, 0x03,
		0x29, 0x03, 0x29, 0x03, 0x29, 0x03, 0x29, 0xb3, 0x4c, 0xca, 0x70, 0x42, 0x15, 0xf4, 0x01, 0xf4,
		0x01, 0xf4, 0x01, 0xf4, 0x01, 0xf4, 0x81, 0x34, 0x04, 0xc7, 0x09, 0x55, 0x1b, 0x7b, 0x0b, 0xc5,
		0x13, 0x28, 0x9e, 0x58, 0xbe, 0x2f, 0x51, 0x3c, 0x81, 0x13, 0xaa, 0x30, 0x52, 0x96, 0xec, 0xc0,
		0xde, 0xa8, 0x0d, 0x1c, 0x94, 0xe4, 0xef, 0xca, 0x70, 0x50, 0xf2, 0x25, 0x07, 0x25, 0x27, 0xe7,
		0xef, 0x70, 0xd1, 0xb9, 0x7d, 0xbb, 0xa5, 0xb6, 0x57, 0xa7, 0xec, 0xd4, 0x23, 0x39, 0x01, 0xfb,
		0x86, 0xbb, 0xc5, 0x2f, 0x22, 0x2d, 0xce, 0xc6, 0x93, 0xaf, 0xf7, 0x6f, 0x4b, 0xcd, 0x89, 0x76,
		0x74, 0x3c, 0x9e, 0xba, 0xa3, 0xb7, 0xef, 0x1b, 0x34, 0xf7, 0xf9, 0x1a, 0xb5, 0x48, 0xb4, 0x85,
		0xbc, 0x25, 0x28, 0x99, 0x5b, 0x5e, 0x22, 0x97, 0x0c, 0x8f, 0x2b, 0x76, 0xd7, 0x1a, 0x08, 0x57,
		0xec, 0xa6, 0x6a, 0x1d, 0xb8, 0x62, 0x17, 0x57, 0xec, 0xfe, 0xc3, 0x13, 0xc3, 0x15, 0xbb, 0x0e,
		0x3a, 0x64, 0x72, 0xc7, 0x6c, 0xc3, 0x41, 0xdb, 0x73, 0xd4, 0xb6, 0x1c, 0xb6, 0x75, 0xc7, 0x6d,
		0xdd, 0x81, 0x5b, 0x75, 0xe4, 0xd9, 0x54, 0x2c, 0xd0, 0x0d, 0x02, 0xdd, 0x20, 0xb2, 0x07, 0x0a,
		0xf6, 0xc1, 0xc1, 0x36, 0x48, 0xb0, 0x01, 0x0b, 0x36, 0xa0, 0xc1, 0x02, 0x3c, 0x68, 0x41, 0x84,
		0x18, 0x4c, 0x92, 0x27, 0x8c, 0x6e, 0x10, 0xe8, 0x06, 0x41, 0xf9, 0x87, 0xa3, 0xa0, 0xe1, 0xc9,
		0x3c, 0x90, 0x2b, 0x66, 0xe2, 0x06, 0xe7, 0x4d, 0x14, 0xdd, 0x20, 0x60, 0xab, 0x6c, 0x09, 0x82,
		0xbd, 0x51, 0xd1, 0x79, 0xdb, 0xe4, 0xf8, 0xb8, 0x54, 0xcc, 0xe8, 0xe3, 0xc5, 0x39, 0xda, 0x44,
		0x46, 0xc2, 0x39, 0x5a, 0x8a, 0xa8, 0x02, 0x9a, 0x11, 0xe1, 0x9e, 0x82, 0x66, 0x04, 0xcd, 0x28,
		0x01, 0x72, 0x68, 0x46, 0x86, 0x9f, 0x30, 0xce, 0xd1, 0xe2, 0x8a, 0x5d, 0xb0, 0x61, 0x97, 0xd9,
		0x30, 0x0e, 0x30, 0x83, 0xb7, 0x81, 0xb7, 0x81, 0xb7, 0x81, 0xb7, 0x81, 0xb7, 0x91, 0x6a, 0x1f,
		0x38, 0xc0, 0x6c, 0x63, 0x6f, 0x21, 0xdf, 0x87, 0x7c, 0xdf, 0xf2, 0x7d, 0x89, 0x7c, 0x1f, 0x0e,
		0x30, 0xc3, 0x48, 0x59, 0xb2, 0x03, 0x7b, 0xa3, 0x22, 0xd1, 0x07, 0x69, 0xc3, 0xc1, 0x91, 0x70,
		0x72, 0x9c, 0xcf, 0x89, 0xdc, 0xe4, 0xdc, 0x24, 0xee, 0xda, 0x5d, 0x7f, 0x9d, 0x71, 0xd7, 0x6e,
		0xda, 0xc3, 0xe1, 0xae, 0x5d, 0xa3, 0x23, 0xe3, 0x74, 0x15, 0x4e, 0x57, 0xb9, 0x8e, 0xea, 0x38,
		0x5d, 0x85, 0xd3, 0x55, 0xd9, 0x03, 0x05, 0xfb, 0xe0, 0x60, 0x1b, 0x24, 0xd8, 0x80, 0x05, 0x1b,
		0xd0, 0x60, 0x01, 0x1e, 0x76, 0xd4, 0x0d, 0x9c, 0xae, 0x22, 0xf7, 0xee, 0x38, 0x5d, 0x45, 0xf8,
		0x87, 0x23, 0xdb, 0xf2, 0x64, 0x1e, 0x10, 0xb2, 0x99, 0xb8, 0xc1, 0x79, 0x13, 0xc5, 0xe9, 0x2a,
		0xd8, 0x2a, 0x5b, 0x82, 0x60, 0x6f, 0x54, 0xdc, 0xb5, 0xfb, 0x76, 0xa3, 0xc5, 0x5d, 0xbb, 0x08,
		0xb2, 0x11, 0x64, 0x23, 0xc8, 0x46, 0x90, 0x8d, 0x20, 0x9b, 0x72, 0xbf, 0xe3, 0x5a, 0xb7, 0xac,
		0xd0, 0x07, 0x9c, 0x11, 0xce, 0xe1, 0x8c, 0x30, 0x48, 0x19, 0x48, 0x19, 0x48, 0x19, 0x48, 0x19,
		0x48, 0x19, 0x48, 0x19, 0x48, 0x99, 0x65, 0x52, 0x86, 0xa3, 0xaa, 0xa0, 0x0f, 0xa0, 0x0f, 0xa0,
		0x0f, 0xa0, 0x0f, 0xa0, 0x0f, 0xa4, 0x21, 0x38, 0x8e, 0xaa, 0xda, 0xd8, 0x5b, 0x28, 0x9e, 0x40,
		0xf1, 0xc4, 0xf2, 0x7d, 0x89, 0xe2, 0x09, 0x1c, 0x55, 0x85, 0x91, 0xb2, 0x64, 0x07, 0xf6, 0x46,
		0xc5, 0x5d, 0xbb, 0x0e, 0xb8, 0x32, 0x9c, 0x98, 0x5c, 0xeb, 0xc4, 0x24, 0x2e, 0xdd, 0xe5, 0x62,
		0xc0, 0xb8, 0x74, 0xf7, 0x25, 0x06, 0xeb, 0xf0, 0xed, 0xbb, 0xe7, 0xb3, 0x3f, 0xc1, 0xd5, 0x5b,
		0x78, 0xdf, 0x39, 0xb4, 0xab, 0x3c, 0x71, 0xa7, 0xa3, 0xc0, 0x1f, 0x8c, 0x56, 0xad, 0xd5, 0x33,
		0x1b, 0xde, 0x7b, 0xbf, 0xae, 0x85, 0x32, 0x1e, 0xc4, 0x12, 0xde, 0x6d, 0xfb, 0xe1, 0x43, 0xb2,
		0x2d, 0xfd, 0xd1, 0x36, 0xc8, 0xfd, 0x6f, 0xee, 0x7f, 0x26, 0xd2, 0x93, 0xaf, 0xef, 0xfb, 0x22,
		0xde, 0xbf, 0x38, 0xbf, 0x3c, 0x6a, 0x9e, 0x9d, 0x1e, 0xd7, 0x3f, 0xfd, 0xa7, 0x59, 0x3f, 0xfb,
		0x5e, 0xfa, 0x9f, 0x8c, 0xdf, 0x83, 0x3b, 0x5e, 0xe0, 0x4d, 0xba, 0x05, 0xf7, 0x15, 0x16, 0x90,
		0x89, 0x76, 0x08, 0x87, 0x22, 0x6e, 0x47, 0xb2, 0x4f, 0xca, 0x1e, 0x93, 0x6d, 0x77, 0xaa, 0x7a,
		0xf7, 0x39, 0xa9, 0xda, 0xbd, 0x41, 0x47, 0xe4, 0xf4, 0xb5, 0x8c, 0x73, 0xed, 0x50, 0xe9, 0x40,
		0x2a, 0x11, 0xe5, 0x46, 0x16, 0x98, 0xd3, 0xd7, 0x22, 0x17, 0x74, 0x3a, 0x91, 0x88, 0xe3, 0x5c,
		0x37, 0xb8, 0x91, 0xa3, 0x1f, 0x8f, 0xff, 0x52, 0x71, 0x5f, 0xb4, 0x65, 0x57, 0x8a, 0x4e, 0x4e,
		0x87, 0xb9, 0x96, 0xc8, 0x5d, 0x9c, 0xfb, 0x97, 0x47, 0xb9, 0x09, 0x08, 0xe5, 0x2e, 0x6a, 0x9f,
		0xeb, 0xb9, 0x6e, 0x18, 0x8d, 0x3f, 0x5c, 0x3f, 0xbb, 0x2d, 0xe5, 0x06, 0x4a, 0xb6, 0x83, 0x58,
		0xff, 0xa5, 0xe6, 0x7f, 0xd5, 0x07, 0x2a, 0x03, 0xb7, 0x90, 0x62, 0x78, 0xba, 0x97, 0x3b, 0x4f,
		0x96, 0x98, 0x30, 0xb5, 0x68, 0x33, 0x9f, 0x30, 0xb7, 0xb5, 0x6d, 0x5b, 0x19, 0x62, 0x0d, 0xab,
		0xbf, 0xbd, 0xe1, 0x14, 0x8b, 0x23, 0x8a, 0x89, 0xb8, 0xc7, 0x42, 0x06, 0x1d, 0x55, 0x9a, 0xd1,
		0x8e, 0x99, 0xbd, 0x9d, 0xfe, 0x5e, 0x30, 0x60, 0xad, 0xde, 0xb3, 0x25, 0xab, 0x18, 0xb3, 0xd7,
		0xc7, 0x1e, 0x4a, 0xcf, 0x47, 0x34, 0xb4, 0x07, 0xcd, 0xb6, 0x4f, 0x32, 0x5e, 0xe8, 0x41, 0x51,
		0xd0, 0x41, 0x57, 0xb8, 0x41, 0xc5, 0x9e, 0xc8, 0x0b, 0x31, 0xc8, 0x09, 0x12, 0x69, 0x61, 0x85,
		0x5b, 0xda, 0x89, 0xe9, 0xf6, 0x44, 0x73, 0x87, 0x15, 0xcd, 0x9b, 0xf2, 0xb2, 0x23, 0x92, 0xa6,
		0xad, 0x99, 0xa6, 0xe7, 0x1c, 0x59, 0x95, 0x1c, 0x65, 0x55, 0x1c, 0x7d, 0x15, 0x9c, 0x4d, 0x69,
		0x89, 0xb4, 0xca, 0x8d, 0x87, 0xb8, 0x44, 0x55, 0xc5, 0xe6, 0x76, 0x3a, 0x88, 0xaa, 0x47, 0x9c,
		0xd7, 0x9e, 0xf9, 0x10, 0x62, 0xb9, 0x6b, 0x3a, 0x6e, 0xc6, 0x9b, 0x80, 0xee, 0xa0, 0x09, 0xa8,
		0xfb, 0x0e, 0xdb, 0xba, 0xe3, 0xb6, 0xee, 0xc0, 0xad, 0x3a, 0x72, 0x1a, 0x87, 0x4e, 0xe4, 0xd8,
		0xc9, 0x1d, 0x7c, 0x32, 0x20, 0x9a, 0x80, 0xe2, 0x2c, 0x4b, 0x2e, 0xfb, 0xe0, 0x60, 0x1b, 0x24,
		0xd8, 0x80, 0x05, 0x1b, 0xd0, 0x60, 0x01, 0x1e, 0xb4, 0x20, 0x42, 0x0c, 0x26, 0xc9, 0x13, 0x46,
		0x13, 0x50, 0x34, 0x01, 0xa5, 0xfc, 0xc3, 0x71, 0x8e, 0xe5, 0xc9, 0x3c, 0x70, 0x44, 0x80, 0x89,
		0x1b, 0x9c, 0x37, 0x51, 0x34, 0x01, 0x85, 0xad, 0xb2, 0x25, 0x08, 0xf6, 0x46, 0xc5, 0xcd, 0x6b,
		0x26, 0xc7, 0xc7, 0xa5, 0xf2, 0x46, 0x1f, 0x2f, 0xda, 0xa7, 0x25, 0x32, 0x12, 0xda, 0xa7, 0x51,
		0x44, 0x15, 0xd0, 0x8c, 0x08, 0xf7, 0x14, 0x34, 0x23, 0x68, 0x46, 0x09, 0x90, 0x43, 0x33, 0x32,
		0xfc, 0x84, 0xd1, 0x3e, 0x8d, 0xbe, 0x7d, 0x1a, 0xd8, 0x30, 0xd8, 0x70, 0x7a, 0x8f, 0x17, 0x7d,
		0xeb, 0xc0, 0xdb, 0xc0, 0xdb, 0xc0, 0xdb, 0xc0, 0xdb, 0xc0, 0xdb, 0x48, 0xb5, 0x0f, 0xf4, 0xad,
		0xb3, 0xb1, 0xb7, 0x90, 0xef, 0x43, 0xbe, 0x6f, 0xf9, 0xbe, 0x44, 0xbe, 0x0f, 0x7d, 0xeb, 0x60,
		0xa4, 0x2c, 0xd9, 0x81, 0xbd, 0x51, 0x91, 0xe8, 0x83, 0xb4, 0xe1, 0xe0, 0x48, 0x68, 0x18, 0x68,
		0xb3, 0xe7, 0x40, 0x65, 0xae, 0xff, 0x5a, 0x7e, 0x7a, 0x58, 0x27, 0x2b, 0xcd, 0x3b, 0x48, 0xba,
		0xc8, 0x05, 0x5a, 0xd0, 0x9f, 0xaa, 0x9a, 0x0c, 0x9b, 0xf1, 0x43, 0x55, 0x45, 0x1c, 0xaa, 0x32,
		0x30, 0x32, 0x0e, 0x55, 0xe1, 0x50, 0x95, 0xeb, 0x60, 0x8e, 0x43, 0x55, 0x38, 0x54, 0x95, 0x3d,
		0x50, 0xb0, 0x0f, 0x0e, 0xb6, 0x41, 0x82, 0x0d, 0x58, 0xb0, 0x01, 0x0d, 0x16, 0xe0, 0x61, 0x47,
		0xd4, 0xc0, 0xa1, 0x2a, 0x72, 0xef, 0x8e, 0x43, 0x55, 0x84, 0x7f, 0x38, 0x92, 0x2c, 0x4f, 0xe6,
		0x01, 0xfd, 0x9a, 0x89, 0x1b, 0x9c, 0x37, 0x51, 0x1c, 0xaa, 0x82, 0xad, 0xb2, 0x25, 0x08, 0xf6,
		0x46, 0x6d, 0xa0, 0x9a, 0xf1, 0xcd, 0x46, 0x3b, 0x77, 0xf1, 0x87, 0xb8, 0x6b, 0x0b, 0xd1, 0x11,
		0x1d, 0xab, 0x07, 0x7c, 0x96, 0x4c, 0x07, 0x41, 0x36, 0x82, 0x6c, 0x04, 0xd9, 0x08, 0xb2, 0x11,
		0x64, 0x67, 0x26, 0xc8, 0xc6, 0x25, 0xfe, 0x59, 0xa1, 0x0f, 0x38, 0x1a, 0x9c, 0xc3, 0xd1, 0x60,
		0x90, 0x32, 0x90, 0x32, 0x90, 0x32, 0x90, 0x32, 0x90, 0x32, 0x90, 0x32, 0x90, 0x32, 0xcb, 0xa4,
		0x0c, 0x27, 0x54, 0x41, 0x1f, 0x40, 0x1f, 0x40, 0x1f, 0x40, 0x1f, 0x40, 0x1f, 0x48, 0x43, 0x70,
		0x9c, 0x50, 0xb5, 0xb1, 0xb7, 0x50, 0x3c, 0x81, 0xe2, 0x89, 0xe5, 0xfb, 0x12, 0xc5, 0x13, 0x38,
		0xa1, 0x0a, 0x23, 0x65, 0xc9, 0x0e, 0xec, 0x8d, 0xda, 0xc0, 0x41, 0x49, 0xfe, 0xae, 0x0c, 0x07,
		0x25, 0x5f, 0x72, 0x50, 0x72, 0x72, 0xfe, 0x0e, 0x97, 0x9c, 0xdb, 0xb7, 0x5b, 0x6a, 0x7b, 0x75,
		0xca, 0x4e, 0x3d, 0x92, 0x13, 0xb0, 0x69, 0xdd, 0x2c, 0x5e, 0x69, 0x4e, 0xb4, 0xa3, 0xe3, 0xf1,
		0xd4, 0x1d, 0xbd, 0x79, 0xdf, 0xa0, 0xb9, 0xcf, 0xd7, 0xa8, 0x45, 0xa2, 0x2d, 0xe4, 0x2d, 0x41,
		0xc9, 0xdc, 0xf2, 0x12, 0xb9, 0x64, 0x78, 0x5c, 0xb1, 0xbb, 0xd6, 0x40, 0xb8, 0x62, 0x37, 0x55,
		0xeb, 0xc0, 0x15, 0xbb, 0xb8, 0x62, 0xf7, 0x1f, 0x9e, 0x18, 0xae, 0xd8, 0x75, 0xd0, 0x21, 0x93,
		0x3b, 0x66, 0x1b, 0x0e, 0xda, 0x9e, 0xa3, 0xb6, 0xe5, 0xb0, 0xad, 0x3b, 0x6e, 0xeb, 0x0e, 0xdc,
		0xaa, 0x23, 0xcf, 0xa6, 0x62, 0x81, 0x6e, 0x10, 0xe8, 0x06, 0x91, 0x3d, 0x50, 0xb0, 0x0f, 0x0e,
		0xb6, 0x41, 0x82, 0x0d, 0x58, 0xb0, 0x01, 0x0d, 0x16, 0xe0, 0x41, 0x0b, 0x22, 0xc4, 0x60, 0x92,
		0x3c, 0x61, 0x74, 0x83, 0x40, 0x37, 0x08, 0xca, 0x3f, 0x1c, 0x05, 0x0d, 0x4f, 0xe6, 0x81, 0x5c,
		0x31, 0x13, 0x37, 0x38, 0x6f, 0xa2, 0xe8, 0x06, 0x01, 0x5b, 0x65, 0x4b, 0x10, 0xec, 0x8d, 0x8a,
		0xce, 0xdb, 0x26, 0xc7, 0xc7, 0xa5, 0x62, 0x46, 0x1f, 0x2f, 0xce, 0xd1, 0x26, 0x32, 0x12, 0xce,
		0xd1, 0x52, 0x44, 0x15, 0xd0, 0x8c, 0x08, 0xf7, 0x14, 0x34, 0x23, 0x68, 0x46, 0x09, 0x90, 0x43,
		0x33, 0x32, 0xfc, 0x84, 0x71, 0x8e, 0x16, 0x57, 0xec, 0x82, 0x0d, 0xbb, 0xcc, 0x86, 0x71, 0x80,
		0x19, 0xbc, 0x0d, 0xbc, 0x0d, 0xbc, 0x0d, 0xbc, 0x0d, 0xbc, 0x8d, 0x54, 0xfb, 0xc0, 0x01, 0x66,
		0x1b, 0x7b, 0x0b, 0xf9, 0x3e, 0xe4, 0xfb, 0x96, 0xef, 0x4b, 0xe4, 0xfb, 0x70, 0x80, 0x19, 0x46,
		0xca, 0x92, 0x1d, 0xd8, 0x1b, 0x15, 0x89, 0x3e, 0x48, 0x1b, 0x0e, 0x8e, 0x84, 0x93, 0xe3, 0x7c,
		0x4e, 0xe4, 0x26, 0xe7, 0x26, 0x71, 0xd7, 0xee, 0xfa, 0xeb, 0x8c, 0xbb, 0x76, 0xd3, 0x1e, 0x0e,
		0x77, 0xed, 0x1a, 0x1d, 0x19, 0xa7, 0xab, 0x70, 0xba, 0xca, 0x75, 0x54, 0xc7, 0xe9, 0x2a, 0x9c,
		0xae, 0xca, 0x1e, 0x28, 0xd8, 0x07, 0x07, 0xdb, 0x20, 0xc1, 0x06, 0x2c, 0xd8, 0x80, 0x06, 0x0b,
		0xf0, 0xb0, 0xa3, 0x6e, 0xe0, 0x74, 0x15, 0xb9, 0x77, 0xc7, 0xe9, 0x2a, 0xc2, 0x3f, 0x1c, 0xd9,
		0x96, 0x27, 0xf3, 0x80, 0x90, 0xcd, 0xc4, 0x0d, 0xce, 0x9b, 0x28, 0x4e, 0x57, 0xc1, 0x56, 0xd9,
		0x12, 0x04, 0x7b, 0xa3, 0xe2, 0xae, 0xdd, 0xb7, 0x1b, 0x2d, 0xee, 0xda, 0x45, 0x90, 0x8d, 0x20,
		0x1b, 0x41, 0x36, 0x82, 0x6c, 0x04, 0xd9, 0x94, 0xfb, 0x1d, 0xd7, 0xba, 0x65, 0x85, 0x3e, 0xe0,
		0x8c, 0x70, 0x0e, 0x67, 0x84, 0x41, 0xca, 0x40, 0xca, 0x40, 0xca, 0x40, 0xca, 0x40, 0xca, 0x40,
		0xca, 0x40, 0xca, 0x2c, 0x93, 0x32, 0x1c, 0x55, 0x05, 0x7d, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x7d,
		0x00, 0x7d, 0x20, 0x0d, 0xc1, 0x71, 0x54, 0xd5, 0xc6, 0xde, 0x42, 0xf1, 0x04, 0x8a, 0x27, 0x96,
		0xef, 0x4b, 0x14, 0x4f, 0xe0, 0xa8, 0x2a, 0x8c, 0x94, 0x25, 0x3b, 0xb0, 0x37, 0x2a, 0xee, 0xda,
		0x75, 0xc0, 0x95, 0xe1, 0xc4, 0xe4, 0x5a, 0x27, 0x26, 0x71, 0xe9, 0x2e, 0x17, 0x03, 0xc6, 0xa5,
		0xbb, 0x2f, 0x31, 0x58, 0x87, 0x6f, 0xdf, 0x3d, 0x9f, 0xfd, 0x09, 0xae, 0xde, 0xc2, 0xfb, 0xce,
		0xa1, 0x5d, 0xe5, 0x89, 0x3b, 0x1d, 0x05, 0xfe, 0x60, 0xb4, 0x6a, 0xad, 0x9e, 0xd9, 0xf0, 0xde,
		0xfb, 0x75, 0x2d, 0x94, 0xf1, 0x20, 0x96, 0xf0, 0x6e, 0xdb, 0x0f, 0x1f, 0x92, 0x6d, 0xe9, 0x8f,
		0xb6, 0x41, 0xee, 0x7f, 0x73, 0xff, 0x33, 0x91, 0x9e, 0x7c, 0x7d, 0xdf, 0x17, 0xf1, 0xfe, 0xc5,
		0xf9, 0xe5, 0x51, 0xf3, 0xec, 0xf4, 0xb8, 0xfe, 0xe9, 0x3f, 0xcd, 0xfa, 0xd9, 0xf7, 0xca, 0xff,
		0x64, 0xfc, 0x1e, 0xdc, 0xf1, 0x02, 0x6f, 0xd2, 0x2d, 0xb8, 0xaf, 0xb0, 0x80, 0x4c, 0xb4, 0x43,
		0x38, 0x14, 0x71, 0x3b, 0x92, 0x7d, 0x52, 0xf6, 0x98, 0x6c, 0xbb, 0x53, 0xd5, 0xbb, 0xcf, 0x49,
		0xd5, 0xee, 0x0d, 0x3a, 0x22, 0xa7, 0xaf, 0x65, 0x9c, 0x6b, 0x87, 0x4a, 0x07, 0x52, 0x89, 0x28,
		0x37, 0xb2, 0xc0, 0x9c, 0xbe, 0x16, 0xb9, 0xa0, 0xd3, 0x89, 0x44, 0x1c, 0xe7, 0xba, 0xc1, 0x8d,
		0x1c, 0xfd, 0x78, 0xfc, 0x97, 0x8a, 0xfb, 0xa2, 0x2d, 0xbb, 0x52, 0x74, 0x72, 0x3a, 0xcc, 0xb5,
		0x44, 0xee, 0xe2, 0xdc, 0xbf, 0x3c, 0xca, 0x4d, 0x40, 0x28, 0x77, 0x51, 0xfb, 0x5c, 0xcf, 0x75,
		0xc3, 0x68, 0xfc, 0xe1, 0xfa, 0xd9, 0x6d, 0x25, 0x37, 0x50, 0xb2, 0x1d, 0xc4, 0xfa, 0x2f, 0x35,
		0xff, 0xab, 0x3e, 0x50, 0x19, 0xb8, 0x85, 0x14, 0xc3, 0xd3, 0xbd, 0xdc, 0x79, 0xb2, 0xc4, 0x84,
		0xa9, 0x45, 0x9b, 0xf9, 0x84, 0xb9, 0xad, 0x6d, 0xdb, 0xca, 0x10, 0x6b, 0x58, 0xfd, 0xed, 0x0d,
		0xa7, 0x58, 0x1c, 0x51, 0x4c, 0xc4, 0x3d, 0x16, 0x32, 0xe8, 0xa8, 0xd2, 0x8c, 0x76, 0xcc, 0xec,
		0xed, 0xf4, 0xf7, 0x82, 0x01, 0x6b, 0x35, 0xdc, 0x48, 0x89, 0xa4, 0x71, 0x92, 0xe1, 0x46, 0x49,
		0xc6, 0x1b, 0x23, 0x51, 0x94, 0x6e, 0xd0, 0x95, 0x68, 0x50, 0xf1, 0x24, 0xf2, 0x92, 0x0b, 0x72,
		0x2a, 0x44, 0x5a, 0x42, 0xe1, 0x96, 0x4a, 0x62, 0xba, 0x11, 0x91, 0x37, 0x17, 0x45, 0x9a, 0xb7,
		0xe5, 0xd9, 0xee, 0x9c, 0x1f, 0xd6, 0xb0, 0x79, 0xd1, 0x54, 0xc8, 0x91, 0x55, 0xc4, 0x51, 0x56,
		0xc0, 0xd1, 0x57, 0xbc, 0xd9, 0x94, 0x91, 0x48, 0x2b, 0xda, 0x78, 0x08, 0x49, 0x54, 0x15, 0x6b,
		0x6e, 0xa7, 0x7e, 0xc8, 0x2a, 0xd0, 0x92, 0xfd, 0x26, 0x3b, 0x42, 0x69, 0xa9, 0xef, 0x23, 0xd1,
		0xa5, 0xd8, 0x74, 0x33, 0x66, 0x49, 0x50, 0x63, 0xe6, 0xd5, 0xa7, 0x7f, 0xda, 0x41, 0x10, 0x5b,
		0xe8, 0x6c, 0x5a, 0xfb, 0x5c, 0x6f, 0x5e, 0x8c, 0xfe, 0xe7, 0xf2, 0x3f, 0x67, 0x47, 0x54, 0x5b,
		0x7d, 0x5c, 0x25, 0x13, 0x93, 0xd6, 0xd1, 0x59, 0x2a, 0x89, 0xaf, 0x9f, 0x7d, 0x2f, 0x35, 0x3f,
		0x1f, 0x9f, 0xfe, 0x7f, 0x17, 0x67, 0x47, 0x9f, 0xbc, 0x2c, 0x1e, 0x42, 0xb0, 0xf9, 0x60, 0x8f,
		0x6b, 0x07, 0x47, 0xc7, 0x47, 0x87, 0xcd, 0x6f, 0x27, 0xf5, 0x4f, 0xb5, 0x8b, 0x4b, 0x3c, 0xdf,
		0x94, 0x9f, 0x2f, 0x9e, 0xab, 0x89, 0xe7, 0x5a, 0x81, 0xdd, 0x1a, 0x7e, 0xbe, 0x78, 0xae, 0xa9,
		0x3f, 0xd7, 0xe3, 0xe2, 0xf7, 0xb3, 0x93, 0xe6, 0xd1, 0xf7, 0xb3, 0x13, 0x3c, 0xd5, 0xb4, 0x9f,
		0xea, 0xf7, 0xb3, 0xe3, 0x0b, 0x3c, 0xd5, 0x14, 0x9f, 0xea, 0xee, 0xe8, 0xa9, 0x8e, 0x11, 0xec,
		0xeb, 0xb7, 0xe3, 0x4b, 0xf8, 0x02, 0x73, 0xcf, 0x17, 0x9e, 0xd6, 0xdc, 0xd3, 0xad, 0xc0, 0x7a,
		0x0d, 0x3f, 0x5f, 0x58, 0x6f, 0xfa, 0x4f, 0xb7, 0x7e, 0xf2, 0xff, 0x5e, 0x5c, 0xd6, 0x2e, 0x8f,
		0xf0, 0x50, 0x0d, 0x3c, 0xd4, 0xe6, 0xc5, 0xd9, 0x67, 0x3c, 0x58, 0x13, 0x0f, 0x16, 0xc4, 0x36,
		0xd5, 0x07, 0xfb, 0xac, 0xde, 0xb2, 0x84, 0x67, 0x6b, 0xec, 0xd9, 0x56, 0xf0, 0x6c, 0xd3, 0x7b,
		0xb6, 0xdf, 0xcf, 0x4e, 0xec, 0x08, 0xb6, 0x24, 0x23, 0x35, 0x50, 0x66, 0x48, 0x6f, 0xd9, 0x9e,
		0x50, 0x41, 0xab, 0x47, 0xd0, 0x6b, 0x39, 0x31, 0xe2, 0xd9, 0x80, 0xa8, 0x23, 0x58, 0x6b, 0x20,
		0xd4, 0x11, 0xa4, 0x6a, 0x1d, 0xa8, 0x23, 0x40, 0x1d, 0xc1, 0x3f, 0x3c, 0x31, 0xfa, 0x3a, 0x02,
		0xba, 0xc6, 0x77, 0x44, 0x8d, 0xee, 0xdc, 0x84, 0xc4, 0x58, 0xa8, 0x8e, 0xdf, 0x0e, 0x6f, 0x6e,
		0x06, 0x4a, 0xea, 0xfb, 0xf1, 0x19, 0x2d, 0x3a, 0x78, 0x5c, 0x36, 0x38, 0xa0, 0x12, 0x50, 0x09,
		0xa8, 0x04, 0x54, 0x02, 0x2a, 0x93, 0xfd, 0x46, 0xea, 0x21, 0xe7, 0x10, 0xb3, 0x44, 0x30, 0xd6,
		0x91, 0x1a, 0xdc, 0xd0, 0xed, 0xf0, 0xcb, 0xf0, 0x42, 0x47, 0x52, 0x5d, 0xd1, 0x9e, 0x22, 0xdd,
		0x19, 0xab, 0x45, 0x97, 0xb5, 0x93, 0xc3, 0xda, 0xf9, 0x21, 0xe5, 0xe1, 0xd1, 0xc2, 0x68, 0xe0,
		0xa3, 0x7f, 0x5f, 0x1e, 0x9d, 0x1c, 0x1e, 0x91, 0x0e, 0x5c, 0x1c, 0x8b, 0xba, 0xb5, 0xf3, 0x2f,
		0x47, 0x94, 0xa3, 0xee, 0x8e, 0x46, 0x3d, 0x38, 0xbd, 0xfc, 0x3f, 0xca, 0x41, 0x4b, 0xe3, 0xe3,
		0x6f, 0xa7, 0x27, 0x44, 0x89, 0x16, 0xaa, 0x76, 0x48, 0x97, 0x61, 0x5d, 0xd1, 0xb6, 0x30, 0x9e,
		0xac, 0xdc, 0x7e, 0x6e, 0x97, 0x70, 0xf1, 0x92, 0xbd, 0x41, 0x76, 0xcd, 0xff, 0x78, 0xd8, 0xc9,
		0xce, 0x20, 0xbb, 0xe9, 0x7f, 0x02, 0x27, 0x23, 0x13, 0xdd, 0xcf, 0x95, 0x28, 0xaf, 0xdc, 0x9f,
		0xb9, 0xbc, 0xfd, 0xdc, 0x0e, 0x8e, 0x6f, 0x33, 0x20, 0x2f, 0xc7, 0x32, 0xd6, 0x35, 0xad, 0x69,
		0x2e, 0x91, 0xf7, 0xbe, 0x4a, 0x75, 0xd4, 0x13, 0x23, 0x7a, 0x49, 0xd4, 0xf6, 0xd0, 0xfb, 0x1a,
		0xdc, 0x3d, 0x19, 0xb1, 0xf0, 0xb1, 0x54, 0xaa, 0x54, 0x4b, 0xa5, 0x9d, 0xea, 0x6e, 0x75, 0x67,
		0xaf, 0x5c, 0x2e, 0x54, 0x48, 0xce, 0x11, 0x9c, 0x46, 0x1d, 0x11, 0x89, 0xce, 0xc1, 0xbd, 0xb7,
		0x9f, 0x53, 0x83, 0x5e, 0x8f, 0x72, 0xc8, 0x6f, 0xb1, 0x88, 0x48, 0xfa, 0x3a, 0xa2, 0x5d, 0xd4,
		0x34, 0x80, 0xda, 0xd0, 0x46, 0x03, 0xe6, 0xda, 0xff, 0xb9, 0x71, 0x6c, 0x7f, 0x10, 0x0b, 0xff,
		0x66, 0xd0, 0xd3, 0xb2, 0xdf, 0x13, 0xfe, 0x68, 0x59, 0x62, 0xf3, 0x67, 0xf8, 0x97, 0x8c, 0xe9,
		0xf8, 0x81, 0xfe, 0x1d, 0x1c, 0xe8, 0xe7, 0x23, 0x83, 0xe1, 0x40, 0xff, 0x06, 0xe3, 0x98, 0xf1,
		0x03, 0xfd, 0xed, 0xd9, 0x9e, 0x27, 0x4a, 0x2e, 0x4c, 0xc7, 0xa3, 0xc9, 0x27, 0x14, 0x90, 0x4f,
		0x60, 0xec, 0x40, 0xa9, 0x1d, 0xa9, 0x35, 0x87, 0x6a, 0xcd, 0xb1, 0x5a, 0x71, 0xb0, 0xd9, 0x08,
		0xc9, 0x4d, 0x3b, 0xde, 0x64, 0x20, 0xaa, 0xea, 0xa7, 0x85, 0xfd, 0x4d, 0x53, 0x05, 0xf5, 0xf8,
		0x40, 0x2d, 0x5c, 0x0b, 0x4b, 0x79, 0x1d, 0x2c, 0xd1, 0x35, 0xb0, 0xc4, 0xf7, 0xb7, 0x91, 0xdf,
		0xdb, 0x66, 0xe3, 0xbe, 0x36, 0x7b, 0xf7, 0xb4, 0xd9, 0xba, 0x9f, 0xcd, 0xfa, 0xbd, 0x6c, 0xd6,
		0xef, 0x63, 0xb3, 0x7a, 0x0f, 0x5b, 0xb6, 0x6e, 0xe8, 0x20, 0xbf, 0x6f, 0xcd, 0xe2, 0x35, 0xad,
		0xc4, 0xd7, 0xb3, 0x66, 0xfd, 0x92, 0x95, 0xfb, 0xab, 0x50, 0xfb, 0x61, 0xdb, 0x6f, 0x87, 0x37,
		0xfd, 0x48, 0xc4, 0xb1, 0xe8, 0xf8, 0x3d, 0x11, 0x74, 0x47, 0x93, 0x18, 0x22, 0x33, 0xc5, 0x80,
		0x06, 0x6f, 0xf8, 0x25, 0x26, 0x8b, 0xd2, 0x6e, 0x7e, 0x2a, 0x60, 0xa0, 0x68, 0x75, 0x31, 0x92,
		0x19, 0x61, 0x28, 0xdd, 0x21, 0x0e, 0xf3, 0x4c, 0x0d, 0x32, 0x12, 0x64, 0x24, 0xc8, 0x48, 0x90,
		0x91, 0x5c, 0x90, 0x91, 0x88, 0x74, 0xfc, 0x85, 0xed, 0x4d, 0xa2, 0xe7, 0x13, 0x3b, 0x64, 0x88,
		0x1f, 0x10, 0x3f, 0x20, 0x7e, 0x40, 0xfc, 0xe0, 0xe4, 0xe0, 0x93, 0x01, 0x83, 0x5e, 0x2f, 0xfc,
		0xf5, 0x18, 0x94, 0x04, 0x31, 0xfd, 0xfe, 0x49, 0xba, 0xb2, 0x2f, 0x4c, 0x85, 0xd8, 0x8c, 0x6d,
		0xe4, 0x14, 0x92, 0xc1, 0x09, 0x73, 0x0b, 0xb3, 0x57, 0x83, 0xf8, 0xf9, 0xd2, 0xe6, 0x1a, 0xac,
		0xc1, 0xae, 0x4d, 0xf8, 0xb5, 0x0f, 0xc3, 0xb6, 0xe1, 0x98, 0x0d, 0x2c, 0xb3, 0x81, 0x67, 0x16,
		0x30, 0x4d, 0x0b, 0xd7, 0xc4, 0xb0, 0x9d, 0x3c, 0x61, 0xf2, 0xdc, 0xc5, 0xc2, 0x7e, 0xa7, 0xcf,
		0x61, 0x2c, 0x44, 0x53, 0x85, 0x4c, 0x2f, 0xb1, 0xa5, 0xdc, 0x46, 0x32, 0xbe, 0xf5, 0x1c, 0x07,
		0xfd, 0x4e, 0x26, 0x5c, 0x62, 0xef, 0x26, 0xb8, 0x93, 0x37, 0x83, 0x1b, 0xc3, 0xc5, 0xde, 0xff,
		0xb8, 0x8d, 0xe7, 0xa7, 0xb1, 0x49, 0x3c, 0xb8, 0x00, 0x0e, 0x0c, 0x0e, 0x0c, 0x0e, 0x0c, 0x0e,
		0x0c, 0x0e, 0x0c, 0x0e, 0xfc, 0xba, 0xfd, 0x3e, 0x90, 0x4a, 0xef, 0x16, 0x2d, 0x52, 0xe0, 0xaa,
		0x85, 0xa1, 0xcf, 0x03, 0x75, 0x25, 0xac, 0x40, 0x76, 0x8e, 0xbc, 0x7f, 0xe8, 0xdc, 0x1f, 0xfe,
		0x55, 0x2a, 0x6b, 0x0e, 0x36, 0x99, 0xc4, 0xf8, 0x8a, 0x2d, 0x7a, 0x78, 0x5d, 0x98, 0xc7, 0xe7,
		0x28, 0x68, 0x8f, 0x62, 0x93, 0x43, 0x79, 0x25, 0xa9, 0xce, 0x63, 0xff, 0x79, 0x4f, 0x8a, 0xab,
		0x40, 0xcb, 0x5b, 0x41, 0x72, 0x5c, 0x99, 0x91, 0x1b, 0x9c, 0x37, 0xd1, 0xe0, 0x8e, 0x8f, 0x89,
		0x96, 0x8a, 0x7b, 0xa5, 0xbd, 0x4a, 0xb5, 0xb8, 0x57, 0x86, 0xad, 0x72, 0xb5, 0xd5, 0x77, 0x9b,
		0x31, 0x6a, 0x03, 0x4a, 0x91, 0xc1, 0xf1, 0x37, 0x51, 0x29, 0x42, 0x19, 0x75, 0x0a, 0xe3, 0xf2,
		0xaf, 0x9a, 0x15, 0xa3, 0xdf, 0x40, 0x51, 0x3a, 0x4b, 0x67, 0x58, 0x04, 0x46, 0xe5, 0xf5, 0xa4,
		0xfa, 0xe9, 0xb7, 0x02, 0xd5, 0xf9, 0x25, 0x3b, 0xfa, 0xda, 0x17, 0x77, 0xfa, 0xb1, 0x31, 0x2b,
		0x7d, 0xad, 0xd7, 0x1f, 0x67, 0x83, 0x0a, 0xb0, 0x54, 0x06, 0x44, 0x05, 0x18, 0x89, 0x15, 0xa1,
		0x02, 0x0c, 0x15, 0x60, 0x29, 0x3d, 0x49, 0xf2, 0x0a, 0x30, 0xe2, 0x52, 0xdf, 0x05, 0x37, 0x41,
		0x5a, 0xf2, 0x6b, 0xc9, 0xf1, 0x5b, 0x03, 0x00, 0x9b, 0x40, 0x60, 0x1f, 0x10, 0x6c, 0x03, 0x03,
		0x1b, 0x80, 0x60, 0x03, 0x14, 0x2c, 0x00, 0xc3, 0x8e, 0xe0, 0x41, 0x2d, 0x3f, 0x50, 0x03, 0x49,
		0x32, 0x30, 0x75, 0x0b, 0x92, 0x95, 0xfe, 0x86, 0xb6, 0x25, 0xc9, 0x2a, 0x88, 0xb1, 0xa4, 0x6a,
		0x5a, 0x83, 0x1a, 0x0e, 0x90, 0xc3, 0x07, 0x7a, 0xb8, 0x40, 0x10, 0x3b, 0x28, 0x62, 0x07, 0x49,
		0xac, 0xa0, 0xc9, 0x0e, 0x44, 0x59, 0x82, 0xaa, 0xe4, 0xc9, 0x5b, 0x2b, 0x1d, 0x58, 0xf0, 0x17,
		0xf6, 0xca, 0x68, 0x17, 0x22, 0x94, 0xc2, 0x46, 0x99, 0x80, 0xe5, 0xa4, 0x49, 0x32, 0x0f, 0x36,
		0xc9, 0x13, 0x7b, 0x9e, 0x60, 0x88, 0xec, 0x9c, 0xc1, 0xf1, 0x1d, 0x49, 0xb2, 0xfc, 0x49, 0xa4,
		0x27, 0xcd, 0xc0, 0xd0, 0x5b, 0x25, 0x65, 0xd9, 0xf9, 0xa4, 0xd3, 0xba, 0x35, 0x0d, 0x6e, 0x32,
		0xfc, 0x86, 0x49, 0x70, 0x45, 0x48, 0x70, 0x9b, 0x13, 0xff, 0x40, 0x82, 0x63, 0x19, 0xe7, 0x40,
		0x82, 0x33, 0x32, 0x30, 0x24, 0xb8, 0x39, 0x88, 0x81, 0x04, 0x07, 0x09, 0x0e, 0x12, 0x1c, 0x7f,
		0x48, 0x62, 0x05, 0x4d, 0xf6, 0x02, 0xef, 0x1c, 0x24, 0x38, 0x48, 0x70, 0x50, 0x7c, 0xa0, 0xf8,
		0xf0, 0x53, 0x7c, 0x0c, 0xde, 0x08, 0xc7, 0x40, 0xf0, 0x41, 0xf5, 0x38, 0xcc, 0x9c, 0xb0, 0xfa,
		0x78, 0xf2, 0xb8, 0x74, 0x34, 0x68, 0x6b, 0x35, 0x05, 0xbd, 0x93, 0xc9, 0xdf, 0x5f, 0x9f, 0xfe,
		0xf9, 0xcd, 0xb3, 0xe9, 0x1f, 0xdd, 0x3c, 0xb8, 0xea, 0x37, 0xcf, 0x84, 0x88, 0xbe, 0x8c, 0xfe,
		0xce, 0x66, 0xad, 0x2b, 0x2f, 0x82, 0xae, 0x6c, 0x7e, 0x8b, 0xc5, 0xd7, 0xe9, 0xdf, 0x76, 0x36,
		0xfa, 0xd3, 0x9a, 0x47, 0xad, 0xab, 0x7e, 0xf3, 0x58, 0xaa, 0x9f, 0x07, 0xb3, 0xbf, 0xec, 0xe8,
		0x4e, 0x7f, 0x4a, 0xfe, 0x2e, 0xd4, 0xca, 0xaf, 0xb1, 0x2e, 0x94, 0x8a, 0xac, 0x15, 0x25, 0xd6,
		0x5a, 0xf5, 0x7b, 0x11, 0xd5, 0xef, 0xd9, 0x09, 0x6f, 0x51, 0xfd, 0x8e, 0xea, 0xf7, 0xd4, 0x9e,
		0x24, 0xfa, 0x9f, 0xa2, 0xff, 0x29, 0xd9, 0x0b, 0xbd, 0x9f, 0x32, 0x07, 0xbf, 0xf6, 0x61, 0xd8,
		0x36, 0x1c, 0xb3, 0x81, 0x65, 0x36, 0xf0, 0xcc, 0x02, 0xa6, 0x37, 0x43, 0x62, 0x43, 0xff, 0x53,
		0xfa, 0xfe, 0xa7, 0x68, 0xc3, 0x69, 0xce, 0x9a, 0xd0, 0x86, 0x13, 0x54, 0x0c, 0x54, 0x0c, 0x54,
		0x0c, 0x54, 0x0c, 0x54, 0x0c, 0x54, 0x6c, 0xcd, 0xfd, 0x8e, 0x36, 0x9c, 0xe4, 0x2f, 0xb4, 0xe1,
		0x44, 0x1b, 0xce, 0xe5, 0x7b, 0x12, 0x6d, 0x38, 0xd1, 0x86, 0x13, 0xb6, 0xca, 0x99, 0x20, 0xd8,
		0x1b, 0xb5, 0x81, 0x7a, 0x1e, 0xfe, 0x1e, 0x0d, 0xf5, 0x3c, 0x7f, 0xae, 0xe7, 0x21, 0xac, 0x4c,
		0xc3, 0x2d, 0xff, 0xac, 0x2c, 0xd5, 0x11, 0x0b, 0xf5, 0x48, 0x8a, 0x96, 0xd2, 0x2e, 0x26, 0x33,
		0xbb, 0xa3, 0xcc, 0xd9, 0xb9, 0x41, 0x1b, 0xf7, 0xe4, 0xe8, 0xb9, 0x98, 0xb6, 0xec, 0x24, 0x8c,
		0x96, 0xe6, 0x6d, 0x87, 0xa8, 0x10, 0x8c, 0x4c, 0xfe, 0xa4, 0x94, 0x3b, 0xe9, 0xe5, 0x4d, 0x6a,
		0x39, 0xd3, 0x9a, 0x7c, 0x69, 0x4d, 0xae, 0xb4, 0x22, 0x4f, 0xba, 0x8d, 0xf9, 0x54, 0x85, 0x5b,
		0xd4, 0xed, 0x4a, 0xed, 0xb4, 0x29, 0x45, 0x5f, 0xea, 0x2c, 0x38, 0x6a, 0x5b, 0x0e, 0xdb, 0xba,
		0xe3, 0xb6, 0xee, 0xc0, 0xad, 0x3a, 0xf2, 0x6c, 0xca, 0x0f, 0xe4, 0x95, 0xb9, 0x28, 0x01, 0x41,
		0x09, 0x08, 0x01, 0xc4, 0xa2, 0x04, 0x24, 0xcb, 0xd0, 0x6b, 0x1b, 0x82, 0xd9, 0x40, 0x31, 0x1b,
		0x48, 0x66, 0x01, 0xcd, 0xb4, 0x10, 0x4d, 0x0c, 0xd5, 0xc9, 0x13, 0x46, 0x09, 0x08, 0x4a, 0x40,
		0x28, 0xff, 0x70, 0x94, 0x80, 0x3c, 0x99, 0x07, 0xd2, 0xea, 0x4c, 0xdc, 0xe0, 0xbc, 0x89, 0xa2,
		0x04, 0x04, 0xb6, 0xca, 0x96, 0x20, 0xd8, 0x1b, 0x15, 0x37, 0xb1, 0x9a, 0x1c, 0x1f, 0x37, 0xb1,
		0xba, 0x6d, 0x48, 0xa8, 0xbd, 0x59, 0x59, 0xd9, 0x20, 0x71, 0x13, 0xeb, 0x6b, 0x16, 0x16, 0x37,
		0xb1, 0xae, 0x08, 0xd8, 0x90, 0xf1, 0x32, 0xb0, 0xbe, 0xc8, 0x78, 0x91, 0x4d, 0x00, 0x19, 0xaf,
		0xcc, 0x80, 0x3e, 0x6e, 0x62, 0xcd, 0xa0, 0xe3, 0xb7, 0x06, 0x00, 0x36, 0x81, 0xc0, 0x3e, 0x20,
		0xd8, 0x06, 0x06, 0x36, 0x00, 0xc1, 0x06, 0x28, 0x58, 0x00, 0x86, 0x1d, 0xc1, 0x03, 0xd7, 0x40,
		0x50, 0xfb, 0x1b, 0x5c, 0x03, 0x81, 0x6b, 0x20, 0x70, 0x0d, 0x04, 0x53, 0x28, 0x62, 0x07, 0x49,
		0xac, 0xa0, 0xc9, 0x0e, 0x44, 0x59, 0x82, 0xaa, 0xe4, 0xc9, 0xe3, 0x1a, 0x88, 0x25, 0x11, 0x0a,
		0x6e, 0x62, 0xb5, 0x31, 0x0f, 0xdc, 0xc4, 0x8a, 0x7b, 0x39, 0x8c, 0x8e, 0xef, 0x48, 0x92, 0x05,
		0x37, 0xb1, 0xd2, 0x58, 0x03, 0x6e, 0x62, 0x25, 0x8f, 0x8b, 0x70, 0x13, 0xeb, 0x06, 0xc5, 0x3f,
		0x90, 0xe0, 0x58, 0xc6, 0x39, 0x90, 0xe0, 0x8c, 0x0c, 0x0c, 0x09, 0x6e, 0x0e, 0x62, 0x20, 0xc1,
		0x41, 0x82, 0x83, 0x04, 0xc7, 0x1f, 0x92, 0x58, 0x41, 0x93, 0xbd, 0xc0, 0x3b, 0x07, 0x09, 0x0e,
		0x12, 0x1c, 0x14, 0x1f, 0x28, 0x3e, 0xfc, 0x14, 0x1f, 0xdc, 0xc4, 0xea, 0x8a, 0xd9, 0xa3, 0x7a,
		0xfc, 0xf5, 0x66, 0xee, 0xee, 0x4d, 0xac, 0x75, 0xdc, 0xc4, 0x9a, 0xda, 0xba, 0xe0, 0x26, 0x56,
		0x53, 0xe1, 0x30, 0x6e, 0x62, 0xcd, 0x50, 0x78, 0x8b, 0xea, 0x77, 0x54, 0xbf, 0xa7, 0xf6, 0x24,
		0xd1, 0xef, 0x09, 0xfd, 0x9e, 0x8c, 0xbe, 0xd0, 0xef, 0x29, 0x73, 0x90, 0x6b, 0x1f, 0x7a, 0x6d,
		0x43, 0x30, 0x1b, 0x28, 0x66, 0x03, 0xc9, 0x2c, 0xa0, 0x79, 0x33, 0x64, 0x35, 0xf4, 0x7b, 0x42,
		0xbf, 0x27, 0xca, 0x3f, 0x1c, 0xfd, 0x9e, 0x9e, 0xcc, 0x03, 0x3d, 0x74, 0x98, 0xb8, 0xc1, 0x79,
		0x13, 0x45, 0xbf, 0x27, 0xd8, 0x2a, 0x5b, 0x82, 0x60, 0x6f, 0x54, 0x5c, 0xf9, 0xe5, 0x82, 0x06,
		0x83, 0xc4, 0xd1, 0x1f, 0x13, 0x47, 0xb8, 0xf2, 0x8b, 0x8b, 0xc5, 0xe2, 0xca, 0xaf, 0xa5, 0x16,
		0xea, 0xde, 0x95, 0x5f, 0x75, 0x5c, 0xf9, 0xb5, 0xe2, 0x29, 0x53, 0xe4, 0x20, 0x49, 0x73, 0x8f,
		0xe4, 0x97, 0x7e, 0x15, 0x71, 0xe9, 0xd7, 0x1b, 0x46, 0xc4, 0xa5, 0x5f, 0xc6, 0xd9, 0x16, 0x2e,
		0xfd, 0x5a, 0xf3, 0x89, 0x91, 0x5d, 0xfa, 0x45, 0x7d, 0x8a, 0xc2, 0xd2, 0xa9, 0x09, 0x2b, 0xf9,
		0x3f, 0x6f, 0x1c, 0x71, 0xd3, 0xd0, 0xe8, 0x06, 0x6d, 0x39, 0xcd, 0x0e, 0x9a, 0x49, 0x3a, 0x0c,
		0x79, 0xb6, 0xa0, 0xcf, 0x3a, 0x04, 0x5a, 0x87, 0x42, 0xab, 0x90, 0x98, 0x4d, 0x29, 0x87, 0x3c,
		0x37, 0x67, 0xf1, 0xf4, 0x06, 0xf1, 0x69, 0x0d, 0x68, 0x33, 0xd0, 0x66, 0xd6, 0xd3, 0x66, 0x08,
		0x84, 0x43, 0x83, 0x32, 0xc7, 0x3b, 0x87, 0x8c, 0x90, 0xca, 0xf8, 0xf8, 0x1b, 0x9d, 0x67, 0x54,
		0x9d, 0x4a, 0x51, 0x03, 0x34, 0xb3, 0x2f, 0xd2, 0xb7, 0xda, 0x74, 0x7f, 0x63, 0xca, 0xf6, 0x3f,
		0xe2, 0x8e, 0xa3, 0xb5, 0x98, 0x19, 0x84, 0x3f, 0x5e, 0x9c, 0x94, 0xc7, 0x38, 0x96, 0xb1, 0xae,
		0x69, 0x6d, 0x26, 0x06, 0xf7, 0xbe, 0x4a, 0x75, 0xd4, 0x13, 0x23, 0xf6, 0x67, 0x28, 0x43, 0xec,
		0x7d, 0x0d, 0xee, 0x9e, 0x8c, 0x50, 0xf8, 0x58, 0x2a, 0x55, 0xaa, 0xa5, 0xd2, 0x4e, 0x75, 0xb7,
		0xba, 0xb3, 0x57, 0x2e, 0x17, 0x2a, 0x05, 0x03, 0x79, 0x72, 0xef, 0x34, 0xea, 0x88, 0x48, 0x74,
		0x0e, 0x46, 0xcb, 0xa3, 0x06, 0xbd, 0x9e, 0xc9, 0x21, 0xbe, 0xc5, 0x22, 0x32, 0x92, 0xd2, 0x4e,
		0xdb, 0x5a, 0x0d, 0x7b, 0x69, 0x66, 0xde, 0xd9, 0x80, 0x2b, 0x7e, 0x93, 0x0b, 0x4e, 0xd7, 0xe3,
		0xa6, 0xe7, 0x17, 0xd3, 0xf9, 0x4d, 0x29, 0xd9, 0xaa, 0x29, 0x1b, 0xe5, 0x61, 0x9b, 0xe9, 0x98,
		0xc0, 0xdb, 0x17, 0x2c, 0x85, 0xc5, 0xf2, 0x82, 0x7e, 0xbf, 0x77, 0xef, 0xf7, 0xc3, 0x9e, 0x6c,
		0xa7, 0x77, 0x97, 0x4d, 0x12, 0xce, 0xce, 0xfd, 0xf6, 0x94, 0x4c, 0x2b, 0xdd, 0x4c, 0x58, 0xea,
		0x72, 0xa0, 0x09, 0xb9, 0xef, 0xa9, 0x9c, 0x17, 0xf5, 0xc3, 0x5e, 0x8a, 0x3e, 0xd1, 0x94, 0x5e,
		0x67, 0x5c, 0x8f, 0x33, 0xae, 0xb7, 0x3d, 0xd7, 0xd3, 0xc6, 0x0f, 0x3e, 0xa3, 0xee, 0x3a, 0xed,
		0xdc, 0x90, 0xa9, 0xdb, 0x51, 0xcc, 0xde, 0x7e, 0x62, 0x28, 0xc9, 0x6e, 0x2c, 0xe3, 0x60, 0x32,
		0xb3, 0x60, 0xd0, 0xe5, 0x98, 0x76, 0x3d, 0x64, 0x2e, 0x88, 0xcc, 0x15, 0xd1, 0xb8, 0x24, 0x37,
		0x62, 0x75, 0x53, 0x69, 0x6c, 0xaf, 0x33, 0x49, 0xe7, 0xfa, 0xe2, 0xae, 0x1f, 0x46, 0x3a, 0x6d,
		0x4a, 0xb4, 0x72, 0x7f, 0x2d, 0x1f, 0xd6, 0x90, 0xfd, 0x50, 0xa4, 0xac, 0xbd, 0xf3, 0xa3, 0xff,
		0xe7, 0xe8, 0xd3, 0x65, 0xf3, 0xfc, 0xf4, 0xdb, 0xe5, 0x91, 0x19, 0x7d, 0xca, 0x50, 0x66, 0xda,
		0x70, 0x26, 0xda, 0x78, 0xe6, 0x99, 0x22, 0xd3, 0x4c, 0x80, 0x0b, 0x54, 0xf8, 0x40, 0x8e, 0x13,
		0xe4, 0x78, 0x41, 0x8b, 0x1b, 0x66, 0xf0, 0xc3, 0x10, 0x8e, 0x24, 0x8f, 0xc6, 0x78, 0xae, 0x77,
		0xc1, 0xd3, 0x4f, 0x5c, 0xbc, 0xaf, 0x47, 0x03, 0x1b, 0xdc, 0x3d, 0x33, 0x32, 0x5b, 0x32, 0x38,
		0xc6, 0x91, 0x1a, 0xdc, 0x98, 0xdf, 0x9f, 0x97, 0xe1, 0x85, 0x8e, 0xa4, 0xa2, 0xb9, 0x6c, 0xd1,
		0xdb, 0x19, 0xad, 0x55, 0xed, 0xd3, 0xa7, 0xa3, 0xb3, 0x19, 0x86, 0x11, 0x14, 0x8c, 0x16, 0x46,
		0x83, 0x9a, 0x07, 0x4e, 0xc3, 0x9b, 0xe9, 0xc9, 0x8a, 0xd5, 0xc7, 0xce, 0x86, 0x60, 0xb9, 0xe6,
		0x56, 0x8a, 0xa4, 0xa8, 0x6b, 0x7e, 0x9d, 0xf6, 0x73, 0x05, 0xe4, 0xa6, 0x09, 0xfc, 0x34, 0x55,
		0x6e, 0x9a, 0xfc, 0x06, 0x1b, 0x03, 0xc9, 0xd6, 0xf7, 0xe6, 0xa2, 0x23, 0x79, 0x63, 0x25, 0x3a,
		0x9a, 0x1f, 0x16, 0xd1, 0x11, 0xa2, 0x23, 0x44, 0x47, 0x88, 0x8e, 0x10, 0x1d, 0x21, 0x3a, 0x42,
		0x74, 0x84, 0xe8, 0x08, 0xd1, 0x11, 0xa2, 0x23, 0x44, 0x47, 0x88, 0x8e, 0xac, 0x45, 0x47, 0xc4,
		0x39, 0x23, 0x92, 0x5c, 0x11, 0xe8, 0x3e, 0xe8, 0x3e, 0xe8, 0x3e, 0xe8, 0xbe, 0x99, 0x1d, 0x33,
		0x42, 0x8d, 0x48, 0x74, 0x29, 0x28, 0xbe, 0xc1, 0x36, 0x93, 0xde, 0x59, 0x52, 0x89, 0x3a, 0x31,
		0xa4, 0xfd, 0x28, 0x1c, 0x68, 0xa9, 0xae, 0xa6, 0xbe, 0x39, 0x79, 0x7b, 0x1a, 0xd5, 0x74, 0x44,
		0x57, 0x2a, 0x39, 0x82, 0xe9, 0x78, 0xf5, 0xb7, 0x92, 0xef, 0x8c, 0x0b, 0x94, 0x9d, 0xb2, 0x1f,
		0xa3, 0x87, 0x1c, 0x92, 0x51, 0x8c, 0x1f, 0x76, 0x78, 0x1c, 0xc9, 0xc2, 0xa1, 0x87, 0x64, 0xf0,
		0xa7, 0x87, 0x1f, 0x88, 0x5a, 0xd9, 0x0c, 0x62, 0x11, 0x99, 0xf6, 0xf7, 0x84, 0x07, 0xc4, 0x9f,
		0x82, 0x59, 0x38, 0x79, 0x9a, 0x7e, 0x8b, 0xe2, 0x9a, 0x1a, 0x2b, 0x87, 0xc1, 0xe7, 0x80, 0x6d,
		0xbc, 0x92, 0xe8, 0x0d, 0xb5, 0x7a, 0x53, 0x4d, 0x8f, 0xfb, 0x8c, 0x96, 0x06, 0x91, 0x1e, 0x22,
		0xbd, 0x97, 0x3e, 0x16, 0xe2, 0xfc, 0x17, 0x49, 0xde, 0x0b, 0x91, 0x1e, 0x22, 0x3d, 0x44, 0x7a,
		0x88, 0xf4, 0x10, 0xe9, 0x21, 0xd2, 0x43, 0xa4, 0x87, 0x48, 0x0f, 0x91, 0x1e, 0x22, 0x3d, 0x44,
		0x7a, 0x88, 0xf4, 0x1c, 0x8a, 0xf4, 0xd0, 0xb0, 0xc3, 0x56, 0x53, 0x84, 0x27, 0x27, 0xfc, 0xf3,
		0xd3, 0x53, 0xb9, 0x5c, 0x3b, 0x64, 0xa4, 0x78, 0x6a, 0xde, 0x4c, 0x8b, 0x71, 0xa3, 0x2d, 0xc5,
		0x8d, 0x9f, 0x6e, 0x2e, 0xe2, 0x74, 0x33, 0x21, 0xfb, 0xc1, 0xe9, 0xe6, 0x2c, 0x42, 0x05, 0x4e,
		0x37, 0xbf, 0xe5, 0xe1, 0xa1, 0x7e, 0xff, 0x05, 0xfe, 0x1f, 0x32, 0xaf, 0x55, 0x5c, 0xa0, 0x8e,
		0x8e, 0x21, 0xf3, 0xba, 0x10, 0x0c, 0xa3, 0x7e, 0xff, 0x95, 0x64, 0x16, 0xf5, 0xfb, 0xeb, 0x8d,
		0x86, 0xfa, 0xfd, 0x34, 0x56, 0x0c, 0xf5, 0xfb, 0xac, 0xbd, 0xa9, 0x41, 0x3f, 0x8d, 0xc3, 0xba,
		0xff, 0x0c, 0x01, 0x38, 0xac, 0x0b, 0xb2, 0x0f, 0xb2, 0x0f, 0xb2, 0x0f, 0xb2, 0x0f, 0xb2, 0x0f,
		0xb2, 0x0f, 0xb2, 0x0f, 0xb2, 0x0f, 0xb2, 0x0f, 0xb2, 0x9f, 0xc3, 0xd9, 0x53, 0xb0, 0x57, 0xb0,
		0x57, 0xb0, 0x57, 0xb0, 0x57, 0xcb, 0xec, 0x15, 0x15, 0xc9, 0xa8, 0x48, 0x7e, 0xed, 0x28, 0xa8,
		0x48, 0x36, 0xb5, 0x2b, 0x51, 0x91, 0xec, 0x28, 0xa8, 0xe5, 0x50, 0x91, 0xbc, 0xe6, 0xa6, 0x32,
		0x5e, 0x91, 0x8c, 0xa3, 0x94, 0x8b, 0xfe, 0x05, 0x47, 0x29, 0x11, 0xb8, 0x20, 0x70, 0x41, 0xe0,
		0x82, 0xc0, 0x05, 0x81, 0x0b, 0x02, 0x17, 0x04, 0x2e, 0x08, 0x5c, 0x10, 0xb8, 0x20, 0x70, 0xc9,
		0x7c, 0xe0, 0x82, 0x93, 0x81, 0x1c, 0x4e, 0x06, 0x4e, 0x0e, 0xb4, 0xe1, 0xea, 0x6c, 0x7b, 0x36,
		0xc1, 0xc6, 0x16, 0xbc, 0x54, 0x8f, 0x61, 0xbe, 0xe6, 0x22, 0xf7, 0xd1, 0x64, 0xce, 0x26, 0x73,
		0xc9, 0xd2, 0x4d, 0xde, 0xb1, 0x3f, 0x5a, 0x5c, 0x3f, 0xec, 0x8f, 0xa9, 0xb2, 0x81, 0xcb, 0xbc,
		0x9f, 0x0d, 0x80, 0xfb, 0xbc, 0xd3, 0x90, 0x40, 0x5a, 0x57, 0x7d, 0x5c, 0xe7, 0x6d, 0xe1, 0x3a,
		0xef, 0xd1, 0x73, 0xc7, 0x6d, 0xde, 0x2f, 0xfb, 0x85, 0xb8, 0xcd, 0xdb, 0xa0, 0x83, 0x31, 0xe9,
		0x68, 0xcc, 0x3b, 0x1c, 0xaa, 0x08, 0x35, 0xfb, 0xc7, 0xdd, 0x53, 0x75, 0x48, 0x6e, 0x84, 0x3f,
		0xc6, 0x4e, 0xbb, 0x07, 0xbd, 0x5e, 0xf8, 0xcb, 0x0f, 0x7f, 0x29, 0x3f, 0x88, 0xcd, 0x67, 0x96,
		0xe6, 0x46, 0x73, 0xf9, 0xb8, 0xcb, 0x0e, 0xce, 0xb8, 0x10, 0x38, 0x7a, 0x0a, 0x87, 0x4f, 0xe7,
		0xf8, 0xa9, 0x00, 0x80, 0x1c, 0x08, 0xc8, 0x01, 0x81, 0x14, 0x18, 0xcc, 0x29, 0x6e, 0xb9, 0x4c,
		0xa4, 0xda, 0x06, 0x52, 0xe9, 0x8f, 0x04, 0x89, 0x36, 0x93, 0xb9, 0x90, 0xf3, 0x40, 0x5d, 0x09,
		0xa3, 0x88, 0x31, 0x7a, 0x11, 0x64, 0x24, 0xbe, 0x4a, 0x45, 0x92, 0xfa, 0x18, 0x0f, 0xf6, 0x3d,
		0xe8, 0x0d, 0x04, 0xcd, 0xf1, 0x8b, 0xf1, 0x78, 0x9f, 0xa3, 0xa0, 0xad, 0x65, 0xa8, 0x0e, 0xe5,
		0x95, 0x34, 0x9d, 0x9b, 0x9b, 0x37, 0x75, 0x71, 0x15, 0x68, 0x79, 0x3b, 0xfa, 0x5b, 0xbb, 0x41,
		0x2f, 0x16, 0xc6, 0x47, 0x1d, 0x12, 0xa4, 0x73, 0xbe, 0x06, 0x77, 0xf4, 0xa6, 0x52, 0x2c, 0x97,
		0x61, 0x2c, 0x4e, 0x00, 0x93, 0xf9, 0xdf, 0xde, 0x40, 0x8f, 0xd1, 0x25, 0xe3, 0xe0, 0x36, 0x89,
		0xa5, 0x8f, 0xa5, 0x23, 0xe3, 0xa0, 0xd5, 0x13, 0xfe, 0x38, 0x55, 0x12, 0xc4, 0x7e, 0x57, 0xf6,
		0xb4, 0x88, 0x08, 0x3a, 0x35, 0x2c, 0x1f, 0xd7, 0xe5, 0xd8, 0x75, 0xec, 0x95, 0x10, 0xbf, 0x22,
		0x7e, 0x45, 0xfc, 0x8a, 0xf8, 0x15, 0xf1, 0x6b, 0x2b, 0x0c, 0x7b, 0x22, 0x50, 0x14, 0xa5, 0xa2,
		0x05, 0x30, 0x1e, 0x30, 0x9e, 0x97, 0x3e, 0x96, 0x48, 0xf4, 0x7b, 0x41, 0x3b, 0x61, 0x1e, 0xe6,
		0xa9, 0xce, 0xf3, 0x01, 0xc1, 0x71, 0xc0, 0x71, 0xc0, 0x71, 0xc0, 0x71, 0xc0, 0x71, 0xc0, 0x71,
		0xc0, 0x71, 0xc0, 0x71, 0x50, 0x1f, 0x6e, 0xab, 0x26, 0x78, 0xbe, 0x9c, 0x14, 0x97, 0xc7, 0xa4,
		0xe5, 0x16, 0x71, 0x79, 0x0c, 0x8a, 0xe9, 0x98, 0xf0, 0x33, 0x14, 0xd3, 0xd1, 0x61, 0x05, 0x8a,
		0xe9, 0x78, 0x05, 0xeb, 0x28, 0xa6, 0x43, 0xa0, 0x8e, 0x40, 0x1d, 0x81, 0x3a, 0x02, 0x75, 0x14,
		0xd3, 0xbd, 0xf8, 0x85, 0x62, 0xba, 0xb7, 0x8d, 0x87, 0x62, 0xba, 0x54, 0x4d, 0x05, 0xc5, 0x74,
		0x19, 0x31, 0x16, 0x14, 0xd3, 0x19, 0x9d, 0x2f, 0x6a, 0xc3, 0x58, 0x87, 0x62, 0xc8, 0x9b, 0x22,
		0x1c, 0x43, 0x38, 0x86, 0x70, 0x0c, 0xe1, 0x58, 0x46, 0xf2, 0xa6, 0x28, 0x75, 0x5a, 0xb6, 0xae,
		0x28, 0x75, 0x02, 0x64, 0x03, 0xb2, 0x01, 0xd9, 0x80, 0x6c, 0x40, 0xf6, 0x06, 0x40, 0x36, 0x2a,
		0x77, 0x98, 0x54, 0xee, 0xa0, 0xb9, 0xa3, 0x6d, 0xb3, 0xe0, 0x64, 0x0e, 0xf6, 0xfb, 0x3b, 0xc6,
		0x67, 0x81, 0xbe, 0x3e, 0x9d, 0xce, 0x26, 0x43, 0x1d, 0x1e, 0x53, 0x6e, 0xc3, 0x66, 0xa6, 0xfd,
		0x1a, 0xfa, 0x39, 0xa2, 0x9f, 0x23, 0xfa, 0x39, 0xa6, 0x0a, 0x1a, 0xa9, 0xf7, 0x73, 0x0c, 0x06,
		0xfa, 0xda, 0xef, 0x07, 0x71, 0x3c, 0x35, 0x01, 0x43, 0x85, 0xa8, 0xf3, 0xc3, 0x98, 0x29, 0x48,
		0xdd, 0x41, 0x77, 0x47, 0x14, 0xa4, 0x32, 0x8c, 0x9e, 0x51, 0x90, 0x6a, 0x2e, 0x3a, 0x7e, 0x14,
		0x3c, 0x67, 0xf7, 0xc6, 0x98, 0xf1, 0x31, 0x73, 0x74, 0xe6, 0xe3, 0x46, 0x87, 0x9b, 0x64, 0x27,
		0x7d, 0x78, 0x9e, 0xd8, 0xe8, 0x88, 0xb8, 0x1d, 0xc9, 0xbe, 0x91, 0xe7, 0xfb, 0x98, 0x78, 0x7f,
		0x32, 0x08, 0xc0, 0x12, 0x60, 0x09, 0xb0, 0x04, 0x58, 0xa6, 0x68, 0xef, 0xb1, 0x8e, 0xa4, 0xba,
		0x02, 0x44, 0x02, 0x22, 0x8d, 0x40, 0x64, 0x2f, 0x6c, 0x07, 0x3d, 0x13, 0x69, 0xee, 0xc7, 0xdb,
		0x0f, 0x67, 0x23, 0x00, 0x1c, 0x01, 0x8e, 0x00, 0x47, 0x80, 0x63, 0x9a, 0x52, 0x55, 0xec, 0xab,
		0xc1, 0x4d, 0xcb, 0x48, 0x9d, 0xeb, 0xcc, 0xc1, 0x18, 0xb8, 0x52, 0xd5, 0xf0, 0xa9, 0x14, 0xb3,
		0xd7, 0x91, 0x9a, 0xaf, 0xcd, 0x20, 0x3a, 0x7d, 0x42, 0x7e, 0x90, 0x80, 0xee, 0x00, 0xc1, 0xd0,
		0xec, 0x3d, 0xb1, 0x74, 0x26, 0x50, 0x2a, 0xee, 0x95, 0xf6, 0x2a, 0xd5, 0xe2, 0x5e, 0x19, 0xb6,
		0xc0, 0x02, 0x23, 0xcc, 0xfd, 0xd6, 0x06, 0xc2, 0x90, 0xcd, 0x0d, 0x43, 0x4c, 0x15, 0xdb, 0x26,
		0x4c, 0xc1, 0x4c, 0x71, 0x2d, 0x82, 0x10, 0x04, 0x21, 0x08, 0x42, 0x10, 0x84, 0x20, 0x08, 0x41,
		0x10, 0x02, 0xe2, 0x89, 0x20, 0x04, 0xb6, 0x80, 0x20, 0x04, 0x41, 0x88, 0xd3, 0x41, 0xc8, 0xb8,
		0x38, 0xda, 0x9f, 0xd6, 0x2e, 0x9b, 0x0c, 0x46, 0x9e, 0x0c, 0x84, 0xa0, 0x04, 0x41, 0x09, 0x82,
		0x12, 0x04, 0x25, 0x29, 0xda, 0x3b, 0xca, 0x06, 0x00, 0x95, 0xa6, 0xa1, 0x52, 0x9b, 0xb0, 0xe2,
		0x79, 0x90, 0x1c, 0x0f, 0x01, 0x78, 0x04, 0x3c, 0x02, 0x1e, 0x01, 0x8f, 0x0e, 0x38, 0x97, 0x39,
		0x84, 0x2c, 0x19, 0xf8, 0xdd, 0x47, 0x6a, 0x70, 0x63, 0x6e, 0x33, 0x5d, 0x86, 0x17, 0x13, 0xde,
		0x60, 0xf4, 0x74, 0xfc, 0xce, 0x68, 0x05, 0xea, 0x27, 0x97, 0x47, 0xe7, 0x27, 0xb5, 0x63, 0x93,
		0x67, 0xe3, 0x0b, 0xa3, 0x81, 0x8e, 0xfe, 0x3d, 0x1d, 0xc8, 0xad, 0x1e, 0x05, 0x61, 0x7d, 0xec,
		0x01, 0x0c, 0x2e, 0x43, 0xf2, 0x60, 0x52, 0xbf, 0x1f, 0x60, 0x6e, 0x98, 0x64, 0xa1, 0xf7, 0x73,
		0x3b, 0xe8, 0x51, 0x00, 0x6a, 0xcb, 0x9d, 0xda, 0x46, 0xe2, 0x26, 0xbc, 0x15, 0x7e, 0x3f, 0x92,
		0xb7, 0x81, 0x16, 0x46, 0x93, 0xd2, 0x8b, 0x43, 0x81, 0xea, 0x82, 0xea, 0x82, 0xea, 0x82, 0xea,
		0x9a, 0x74, 0x32, 0xd3, 0x8e, 0x1f, 0x26, 0x99, 0xaf, 0x81, 0x44, 0x99, 0x57, 0xef, 0x08, 0xa5,
		0xa5, 0xbe, 0x3f, 0x08, 0x62, 0x61, 0xbe, 0x29, 0xdf, 0xf9, 0xd1, 0xd7, 0xd3, 0xef, 0x47, 0xcd,
		0xb3, 0xf3, 0xfa, 0xf7, 0xda, 0xe5, 0x51, 0xb3, 0x76, 0xd1, 0x3c, 0x3d, 0xbb, 0xac, 0x9f, 0x9e,
		0x98, 0xda, 0x72, 0xe3, 0x5c, 0x63, 0x6c, 0xb4, 0x39, 0x9f, 0xe1, 0x6c, 0xe9, 0xec, 0xc9, 0x3d,
		0x79, 0x64, 0xd3, 0x87, 0x58, 0x3b, 0x3e, 0xf6, 0x5c, 0xcc, 0x32, 0xdb, 0x78, 0x60, 0x67, 0xc7,
		0xb5, 0x4f, 0xa6, 0x9f, 0x98, 0x99, 0xf6, 0x8c, 0x60, 0xe1, 0x60, 0xe1, 0x29, 0xb2, 0xf0, 0x70,
		0xa0, 0x85, 0xdf, 0xed, 0x05, 0x7d, 0xbf, 0x13, 0xdc, 0xf4, 0x4d, 0x68, 0x12, 0x73, 0xfd, 0x08,
		0x9e, 0x8d, 0x95, 0xf6, 0x25, 0x5f, 0x06, 0x7b, 0xaf, 0x9a, 0xe8, 0xb9, 0xda, 0x40, 0x1c, 0x82,
		0x38, 0x04, 0x71, 0x08, 0xe2, 0x90, 0x14, 0xed, 0xdd, 0x5c, 0x2f, 0x54, 0x43, 0x3d, 0x50, 0xc1,
		0x18, 0x9c, 0x62, 0x0c, 0xb1, 0x50, 0x9d, 0xd1, 0xdf, 0x7e, 0x33, 0x50, 0x52, 0xdf, 0x1b, 0xbc,
		0xa7, 0x77, 0x7e, 0x1c, 0x97, 0x98, 0xc2, 0xc9, 0xe9, 0xc9, 0x11, 0x88, 0x02, 0x88, 0x02, 0x88,
		0x02, 0x88, 0x02, 0x5f, 0xa2, 0x90, 0xf8, 0x56, 0x24, 0xe8, 0x17, 0x9f, 0x3e, 0x5d, 0x82, 0xfe,
		0xe2, 0xb2, 0x76, 0x72, 0x58, 0x3b, 0x3f, 0x24, 0x49, 0xd0, 0x9f, 0x1c, 0x1e, 0x19, 0x1d, 0xa8,
		0x38, 0x1a, 0xe8, 0xb8, 0x76, 0xfe, 0xe5, 0xc8, 0xe4, 0x28, 0xbb, 0xa3, 0x51, 0x0e, 0x4e, 0x2f,
		0xff, 0xcf, 0xe4, 0x20, 0xa5, 0x71, 0x4f, 0xed, 0xd4, 0x91, 0xdc, 0x90, 0xbf, 0x78, 0x62, 0xb9,
		0xc6, 0x0b, 0x1a, 0xc6, 0x4f, 0x7e, 0x3f, 0xb7, 0xfb, 0xde, 0x6c, 0xcd, 0xc4, 0xd8, 0x56, 0xcd,
		0xd6, 0x4c, 0x4c, 0x2c, 0x75, 0x3f, 0x57, 0x34, 0x38, 0xc6, 0xd8, 0x84, 0xf6, 0x73, 0x25, 0x93,
		0x97, 0xb9, 0xcc, 0x5c, 0x08, 0x4a, 0x3f, 0xd2, 0x79, 0xa0, 0xe2, 0x4e, 0x47, 0x81, 0x3f, 0x50,
		0xb1, 0x0e, 0x5a, 0x3d, 0x43, 0x30, 0x1c, 0xeb, 0x40, 0x0f, 0x62, 0x17, 0xcf, 0x85, 0x3e, 0x76,
		0xe4, 0xec, 0x47, 0xa2, 0x1d, 0x68, 0xd1, 0xc9, 0xd8, 0x4d, 0x45, 0xd3, 0xa5, 0xc9, 0xf2, 0x4d,
		0x45, 0x4f, 0xd6, 0x0e, 0x87, 0x11, 0x21, 0x67, 0x41, 0xce, 0x7a, 0x1a, 0x0a, 0x11, 0x69, 0x5a,
		0x38, 0x75, 0x01, 0x65, 0x07, 0xca, 0x0e, 0x94, 0x1d, 0x28, 0x3b, 0x50, 0x76, 0xa0, 0xec, 0x40,
		0xd9, 0x81, 0xb2, 0x03, 0x65, 0x07, 0xca, 0x8e, 0x59, 0xf0, 0x3d, 0x96, 0xb1, 0xae, 0x69, 0x1d,
		0x99, 0x01, 0xe0, 0xaf, 0x52, 0x1d, 0xf5, 0xc4, 0x88, 0xde, 0x18, 0xea, 0x2a, 0xe4, 0x7d, 0x0d,
		0xee, 0x9e, 0x8c, 0x50, 0xf8, 0x58, 0x2a, 0x55, 0xaa, 0xa5, 0xd2, 0x4e, 0x75, 0xb7, 0xba, 0xb3,
		0x57, 0x2e, 0x17, 0x2a, 0x46, 0x4a, 0xc2, 0x4f, 0xa3, 0x8e, 0x88, 0x44, 0xe7, 0xe0, 0xde, 0xdb,
		0xcf, 0xa9, 0x41, 0xaf, 0x67, 0x72, 0x88, 0x6f, 0xb1, 0x88, 0x8c, 0xb4, 0x49, 0x42, 0x5c, 0x6e,
		0x3e, 0x2e, 0xc7, 0x65, 0xb2, 0x86, 0x2f, 0x93, 0x9d, 0xde, 0x45, 0x9a, 0xa1, 0x5b, 0x5b, 0x45,
		0xeb, 0xaa, 0xef, 0xdf, 0x0c, 0x7a, 0x5a, 0x5e, 0x87, 0xfd, 0xf4, 0x2f, 0x6f, 0x9d, 0xff, 0xf5,
		0xb8, 0xc3, 0x95, 0x9f, 0x96, 0x82, 0x3b, 0x5c, 0xad, 0x68, 0x25, 0x19, 0xbf, 0xc3, 0x35, 0xe5,
		0xcb, 0xa0, 0x97, 0x48, 0x2c, 0x29, 0x5e, 0x0a, 0x6d, 0xc8, 0xb1, 0x18, 0x73, 0x30, 0x26, 0x1d,
		0x8d, 0x79, 0x87, 0x63, 0xda, 0xf1, 0x90, 0x39, 0x20, 0x32, 0x47, 0x44, 0xe2, 0x90, 0xdc, 0x88,
		0x1f, 0xd3, 0x76, 0x54, 0x8f, 0x3c, 0x48, 0x05, 0xad, 0x9e, 0xe8, 0x98, 0x3f, 0x71, 0x3b, 0x1b,
		0xc8, 0x90, 0x89, 0x98, 0x2c, 0xac, 0x4e, 0x06, 0x31, 0x70, 0x14, 0x6b, 0xf6, 0x6a, 0x18, 0x7a,
		0x2e, 0x66, 0xf2, 0x72, 0xc6, 0x5d, 0x3c, 0x85, 0xab, 0xa7, 0x73, 0xf9, 0x54, 0xae, 0x9f, 0x1c,
		0x02, 0xc8, 0xa1, 0x80, 0x14, 0x12, 0xcc, 0x40, 0x83, 0x21, 0x88, 0x48, 0x9e, 0x8c, 0xb1, 0x3c,
		0xdf, 0xc2, 0x7e, 0x31, 0x77, 0xe4, 0x6b, 0x81, 0x99, 0x16, 0x9c, 0x5a, 0x02, 0xc3, 0x1a, 0x1d,
		0xbd, 0x56, 0x67, 0x6e, 0x27, 0x18, 0x58, 0x02, 0x6f, 0xa6, 0xbb, 0xf8, 0x5a, 0xf7, 0xcc, 0x13,
		0x9b, 0xb9, 0xd1, 0x80, 0xe2, 0x40, 0x71, 0xa0, 0x38, 0x50, 0xdc, 0x21, 0x14, 0x1f, 0x48, 0xa5,
		0x3f, 0x12, 0x60, 0xb8, 0xc1, 0xdb, 0x55, 0x0c, 0xdf, 0x75, 0x34, 0x7b, 0x99, 0xdd, 0xee, 0x39,
		0xaa, 0xbb, 0x8f, 0x92, 0xc1, 0x88, 0xee, 0x40, 0x4a, 0xc6, 0xa3, 0xbe, 0xff, 0xe6, 0xd1, 0xd4,
		0xa9, 0xee, 0xc1, 0x31, 0xec, 0x15, 0xe6, 0x4d, 0x85, 0xe0, 0x8e, 0xa4, 0x05, 0x53, 0x29, 0x96,
		0xcb, 0x30, 0x16, 0x27, 0x80, 0xc9, 0xfc, 0x6f, 0x6f, 0x20, 0x26, 0xcb, 0x68, 0x4c, 0xb6, 0xd1,
		0x05, 0x30, 0x36, 0xeb, 0x2c, 0xe6, 0xca, 0x06, 0x52, 0xad, 0xba, 0x48, 0x7f, 0x6d, 0x53, 0x3d,
		0x0d, 0xa3, 0x03, 0x6d, 0xf2, 0xfc, 0xcb, 0xf8, 0xd7, 0x3b, 0x96, 0x34, 0x2d, 0x22, 0x69, 0x4a,
		0x17, 0x73, 0x23, 0x69, 0x9a, 0x41, 0xa4, 0x40, 0xd2, 0xf4, 0x9f, 0x1e, 0x10, 0x92, 0xa6, 0x7f,
		0x72, 0xed, 0x90, 0x5b, 0x6d, 0xba, 0x7c, 0x2a, 0xd7, 0x4f, 0x0e, 0x01, 0xe4, 0x50, 0x40, 0x0a,
		0x09, 0x66, 0xe3, 0x4e, 0x24, 0x4d, 0xd7, 0x60, 0xa6, 0x05, 0xe4, 0x00, 0x91, 0x03, 0x04, 0x28,
		0x01, 0x94, 0x00, 0x4a, 0x00, 0xa5, 0x3f, 0xee, 0x17, 0xe4, 0x00, 0x5f, 0xfa, 0x42, 0x0e, 0xf0,
		0x6d, 0xe3, 0x21, 0x07, 0x98, 0xaa, 0xa9, 0x20, 0x07, 0x98, 0x11, 0x63, 0x41, 0x0e, 0xd0, 0x6c,
		0x88, 0x81, 0x94, 0x16, 0x8b, 0x94, 0xd6, 0x24, 0x13, 0x83, 0x73, 0xe4, 0xf6, 0x8c, 0x82, 0x8f,
		0x31, 0x78, 0xa9, 0x26, 0x10, 0xa3, 0x41, 0x5b, 0xab, 0x29, 0x9d, 0x3d, 0x99, 0xcc, 0xb2, 0x3e,
		0x9d, 0x64, 0xf3, 0x6c, 0x3a, 0xb5, 0xe6, 0xc1, 0x55, 0xbf, 0x79, 0x26, 0x44, 0xf4, 0x65, 0x34,
		0x9b, 0xe6, 0x51, 0xeb, 0xaa, 0xff, 0x75, 0x36, 0x99, 0x2c, 0x9d, 0x6d, 0x1f, 0x67, 0x0d, 0xfc,
		0x56, 0xb7, 0x63, 0xe0, 0x60, 0xfb, 0xe3, 0xef, 0xc6, 0xa9, 0xf6, 0x54, 0x74, 0x8a, 0x6e, 0x07,
		0xa7, 0xda, 0x6d, 0x9c, 0x6a, 0xef, 0x76, 0x70, 0xaa, 0xfd, 0x85, 0xbf, 0x10, 0xa7, 0xda, 0x0d,
		0x3a, 0x18, 0x93, 0x8e, 0xc6, 0xbc, 0xc3, 0x31, 0xed, 0x78, 0xc8, 0x1c, 0x10, 0x99, 0x23, 0x22,
		0x71, 0x48, 0x6e, 0xc4, 0x3d, 0x28, 0xd0, 0x78, 0x99, 0x0b, 0x43, 0xce, 0xc7, 0xa6, 0x6b, 0xa3,
		0x72, 0x71, 0xe4, 0xae, 0x8e, 0xdc, 0xe5, 0x91, 0xba, 0x3e, 0xb3, 0xe2, 0x17, 0x0a, 0x11, 0xd6,
		0x60, 0x60, 0x38, 0xbd, 0xbd, 0x6c, 0x1c, 0x9c, 0x14, 0x30, 0x4c, 0x2f, 0x32, 0x2d, 0xab, 0x26,
		0x3a, 0x0c, 0x8e, 0x09, 0xa4, 0xe5, 0x11, 0x71, 0x4c, 0x00, 0x51, 0x28, 0xa2, 0x50, 0x44, 0xa1,
		0x88, 0x42, 0x11, 0x85, 0x22, 0x0a, 0x45, 0x14, 0x8a, 0x28, 0x14, 0x51, 0x28, 0x82, 0xaa, 0xcd,
		0x0c, 0xaa, 0x50, 0xa8, 0x62, 0xdb, 0x22, 0x98, 0x58, 0x82, 0xfd, 0x2a, 0x95, 0xf1, 0x54, 0x0e,
		0xd2, 0x02, 0x27, 0x26, 0x25, 0x2a, 0x51, 0x14, 0x46, 0xfe, 0x75, 0xa0, 0x3a, 0xbd, 0x34, 0x2f,
		0x45, 0x7b, 0x64, 0xc4, 0xf3, 0xbf, 0x1f, 0xa5, 0x2a, 0xa9, 0x10, 0x5b, 0x5c, 0xc0, 0x90, 0xc3,
		0x05, 0x0c, 0xa9, 0x62, 0x07, 0x4a, 0x55, 0x72, 0x28, 0x55, 0x21, 0x72, 0x38, 0x10, 0x09, 0x59,
		0x3a, 0xa4, 0x0d, 0x17, 0x09, 0x75, 0x24, 0x02, 0xed, 0x07, 0xb1, 0xff, 0x4b, 0xea, 0xeb, 0x4e,
		0x14, 0xfc, 0x32, 0x2f, 0x17, 0x2e, 0x0e, 0x89, 0xfe, 0x22, 0x4b, 0x5f, 0xe8, 0x2f, 0x42, 0xee,
		0xfe, 0xe9, 0x60, 0x80, 0x0a, 0x0e, 0xc8, 0x61, 0x81, 0x1c, 0x1e, 0x48, 0x61, 0xc2, 0x9c, 0xee,
		0x96, 0x83, 0xa0, 0xba, 0x1e, 0x5b, 0x75, 0xab, 0xac, 0x47, 0xdc, 0xe9, 0x28, 0xf0, 0x07, 0x2a,
		0xd6, 0x41, 0xab, 0x67, 0x78, 0x31, 0x22, 0xd1, 0x15, 0x91, 0x50, 0xed, 0x4c, 0x9c, 0x47, 0x9f,
		0x59, 0x56, 0x27, 0x0a, 0xba, 0xda, 0x97, 0x42, 0x77, 0x7d, 0xd9, 0x89, 0xfc, 0x79, 0x89, 0xc5,
		0x2f, 0x54, 0x3c, 0x82, 0x03, 0xcf, 0x44, 0xbe, 0x7a, 0x99, 0xcf, 0x7e, 0x5c, 0x53, 0xa2, 0x43,
		0xc8, 0xd4, 0xee, 0x7b, 0xa9, 0x1b, 0xff, 0xc7, 0x45, 0xc7, 0xd1, 0xe8, 0x55, 0xe4, 0x11, 0x45,
		0x8f, 0x4b, 0xc6, 0x41, 0xd1, 0xa3, 0xe1, 0x40, 0x35, 0xd3, 0xf9, 0xb9, 0x39, 0xef, 0x83, 0xc2,
		0xc7, 0xb4, 0x90, 0x1d, 0x85, 0x8f, 0xd0, 0x34, 0x99, 0x04, 0xaf, 0xd0, 0x34, 0xe9, 0xa0, 0x02,
		0x9a, 0xe6, 0x6b, 0x1e, 0x1a, 0x34, 0xcd, 0x3f, 0xb9, 0x7b, 0x68, 0x9a, 0x36, 0x61, 0x80, 0x3a,
		0x4e, 0x86, 0xa6, 0xe9, 0x40, 0x30, 0x0a, 0x4d, 0x73, 0x0d, 0xb6, 0x0a, 0x4d, 0x73, 0xd5, 0x58,
		0xd0, 0x34, 0xdd, 0xf6, 0xd5, 0xcb, 0x7c, 0x36, 0x34, 0x4d, 0x68, 0x9a, 0x6b, 0x91, 0x47, 0x48,
		0x74, 0x90, 0xe8, 0xd6, 0x91, 0xe8, 0x50, 0x46, 0x6f, 0xdb, 0x2a, 0x18, 0x59, 0x83, 0xfd, 0x52,
		0xfa, 0xd1, 0x74, 0xfe, 0x6f, 0x36, 0x9b, 0x0c, 0x95, 0xd3, 0x5f, 0x45, 0x41, 0x5b, 0x74, 0x07,
		0x3d, 0x3f, 0x12, 0xb1, 0x0e, 0x22, 0x9d, 0x7e, 0x41, 0xfd, 0xc2, 0x08, 0x28, 0xa9, 0xe7, 0x27,
		0x03, 0xa0, 0xa4, 0xde, 0x4a, 0x18, 0x8f, 0x92, 0xfa, 0x37, 0x6d, 0x03, 0x94, 0xd4, 0x23, 0xfd,
		0xc4, 0x45, 0x67, 0x44, 0xfa, 0x89, 0x2e, 0x0c, 0x42, 0xdf, 0x8d, 0x97, 0xb9, 0x30, 0xa4, 0x54,
		0x6c, 0xba, 0x36, 0x6a, 0x99, 0x0e, 0x29, 0x15, 0x07, 0xb4, 0x30, 0xa4, 0x54, 0xd6, 0x60, 0x60,
		0xe8, 0xfe, 0xb8, 0x6c, 0x9c, 0x2c, 0x14, 0x42, 0x1a, 0x20, 0x92, 0xd7, 0xa2, 0xd7, 0x17, 0x91,
		0x1f, 0xaa, 0xde, 0xbd, 0x79, 0xfc, 0x7e, 0x3a, 0x18, 0x30, 0x1c, 0x18, 0x0e, 0x0c, 0x07, 0x86,
		0x03, 0xc3, 0x81, 0xe1, 0xc0, 0xf0, 0x37, 0x3d, 0x96, 0x69, 0x8a, 0xc0, 0xd7, 0xf2, 0x46, 0x98,
		0x07, 0xf1, 0xb9, 0xd1, 0x80, 0xe2, 0x40, 0x71, 0xa0, 0x38, 0x50, 0xdc, 0x21, 0x14, 0x1f, 0x48,
		0xa5, 0x8d, 0x16, 0x9a, 0xcd, 0xbc, 0x57, 0x05, 0x97, 0x6f, 0xff, 0xf3, 0x1f, 0x82, 0xcb, 0xb7,
		0x8d, 0xd8, 0x3a, 0x2e, 0xdf, 0x4e, 0xc9, 0x54, 0x4a, 0x3b, 0x7b, 0x15, 0x58, 0x8b, 0x13, 0xd0,
		0x64, 0xfe, 0xb7, 0xe3, 0x88, 0x39, 0xa2, 0xb2, 0x17, 0x3f, 0x96, 0x58, 0x07, 0x3d, 0xe1, 0x47,
		0xe1, 0x40, 0x8b, 0x98, 0x28, 0x34, 0x5b, 0x1c, 0x12, 0xf1, 0x19, 0xe2, 0x33, 0xc4, 0x67, 0x88,
		0xcf, 0x10, 0x9f, 0x21, 0x3e, 0x43, 0x7c, 0x86, 0xf8, 0x2c, 0x73, 0xf1, 0x59, 0xa5, 0x5c, 0xde,
		0x2d, 0xc3, 0x5c, 0x10, 0xa0, 0x21, 0x40, 0xcb, 0x74, 0x80, 0x86, 0x03, 0x86, 0x96, 0x8e, 0x94,
		0x3d, 0x3f, 0x88, 0x84, 0x2e, 0x60, 0x29, 0x46, 0xeb, 0xe8, 0x02, 0x86, 0x63, 0x18, 0x1c, 0x22,
		0x6e, 0x1c, 0xc3, 0xa0, 0x03, 0x0b, 0x1c, 0xc3, 0x78, 0x99, 0x0b, 0x83, 0xb8, 0x68, 0xd3, 0xb5,
		0x51, 0xb9, 0x38, 0x72, 0x57, 0x47, 0xee, 0xf2, 0x48, 0x5d, 0x9f, 0xd9, 0x10, 0x0b, 0x25, 0x9c,
		0x6b, 0x30, 0xb0, 0x02, 0x4e, 0x15, 0xe0, 0x54, 0x01, 0x20, 0x09, 0x90, 0x04, 0x48, 0x02, 0x24,
		0x01, 0x92, 0x6c, 0x43, 0x12, 0x8a, 0xe4, 0x01, 0x4a, 0x00, 0x25, 0x80, 0x12, 0x40, 0xe9, 0x25,
		0xfb, 0x05, 0x45, 0x18, 0x2f, 0x7e, 0xa1, 0x08, 0xe3, 0x6d, 0xe3, 0xa1, 0x08, 0x23, 0x55, 0x53,
		0x41, 0x91, 0x7c, 0x56, 0xac, 0x05, 0x35, 0x18, 0xce, 0x05, 0x19, 0xa8, 0xf9, 0x46, 0xb8, 0x81,
		0x70, 0x03, 0xe1, 0x06, 0xc2, 0x0d, 0x84, 0x1b, 0x08, 0x37, 0x10, 0x6e, 0x20, 0xdc, 0x30, 0x61,
		0x2a, 0xa8, 0xf9, 0x46, 0xbc, 0xe1, 0x60, 0xbc, 0x81, 0x12, 0x66, 0x2e, 0x25, 0xcc, 0xb8, 0x25,
		0xc5, 0xb6, 0x5d, 0xb0, 0xb2, 0x07, 0xeb, 0xf7, 0xa4, 0x7c, 0x99, 0x4e, 0xe8, 0x7c, 0x3a, 0x9f,
		0x0c, 0xdd, 0x94, 0xd2, 0x0b, 0xaf, 0xae, 0xa4, 0xba, 0xf2, 0xc3, 0xfe, 0xc8, 0x86, 0xe2, 0xf4,
		0x2f, 0x4a, 0x79, 0x3e, 0x00, 0xee, 0x49, 0xe1, 0xa7, 0x5e, 0xe0, 0x9e, 0x14, 0x2b, 0xea, 0x03,
		0xee, 0x49, 0x79, 0xd3, 0x36, 0xc0, 0x3d, 0x29, 0x38, 0xa0, 0x63, 0xdb, 0x01, 0x91, 0x39, 0x22,
		0x12, 0x87, 0xe4, 0x46, 0x28, 0x64, 0xec, 0x80, 0x4e, 0x2f, 0x1c, 0xb1, 0x5b, 0x79, 0x75, 0xdd,
		0x0a, 0x23, 0x7f, 0x1c, 0x83, 0xf8, 0xed, 0xeb, 0x40, 0x5d, 0x89, 0xd8, 0x7c, 0x9a, 0xe8, 0x0f,
		0x63, 0xbb, 0x7c, 0x71, 0xff, 0x68, 0x23, 0xe0, 0xde, 0x7e, 0x02, 0x1c, 0xa0, 0xc0, 0x03, 0x3a,
		0x5c, 0xa0, 0xc2, 0x07, 0x72, 0x9c, 0x20, 0xc7, 0x0b, 0x52, 0xdc, 0x30, 0x2b, 0x26, 0xa2, 0x94,
		0x7c, 0x0d, 0xfa, 0x8a, 0x06, 0xf5, 0xcb, 0xc6, 0x41, 0xa7, 0x0d, 0xc3, 0xdc, 0x2c, 0xcb, 0x32,
		0xf5, 0x33, 0x25, 0x0b, 0x8d, 0x36, 0xd2, 0x72, 0x8b, 0x68, 0xb4, 0x81, 0x38, 0x1e, 0x71, 0x3c,
		0xe2, 0x78, 0xc4, 0xf1, 0x88, 0xe3, 0x11, 0xc7, 0x23, 0x8e, 0x47, 0x1c, 0x8f, 0x38, 0x1e, 0x71,
		0xbc, 0x63, 0x47, 0xc2, 0x11, 0x96, 0x32, 0x09, 0x4b, 0x51, 0x3c, 0x65, 0xdb, 0x2c, 0x38, 0x99,
		0x83, 0xf5, 0xda, 0xa9, 0xe3, 0xc9, 0x7c, 0x4e, 0xa7, 0xd3, 0xc9, 0x50, 0xe9, 0xd4, 0xe3, 0x43,
		0xf7, 0xa7, 0xcf, 0x24, 0xe5, 0xd2, 0xa9, 0xe7, 0x03, 0xa4, 0x5b, 0x3a, 0xb5, 0x83, 0xd2, 0x29,
		0xc6, 0xcc, 0x16, 0xa5, 0x53, 0x0e, 0xe1, 0x48, 0xea, 0xcc, 0xf3, 0x51, 0x4e, 0x10, 0x41, 0x37,
		0x12, 0xdd, 0x34, 0x0d, 0x76, 0xc6, 0x2c, 0xab, 0x29, 0xfe, 0xce, 0xb3, 0x29, 0xd4, 0x7d, 0xf8,
		0x30, 0x55, 0xc5, 0xf3, 0xcf, 0x7d, 0x57, 0x86, 0xfc, 0xfe, 0xf8, 0x2c, 0xaf, 0x1f, 0x89, 0x6e,
		0x4f, 0xb4, 0x75, 0x18, 0xa5, 0xef, 0xf7, 0x9f, 0x0f, 0x80, 0x92, 0x59, 0xf8, 0x7d, 0xf8, 0x7d,
		0x86, 0x7e, 0x1f, 0x25, 0xb3, 0x39, 0x94, 0xcc, 0x12, 0x39, 0x1c, 0xd3, 0x8e, 0x87, 0xcc, 0x01,
		0x91, 0x39, 0x22, 0x12, 0x87, 0xe4, 0x86, 0xfe, 0x65, 0x2c, 0xd5, 0xf6, 0x8c, 0xaa, 0xf8, 0xed,
		0x9e, 0x9c, 0x3c, 0x68, 0xd3, 0xfd, 0x1b, 0x97, 0x8f, 0xeb, 0x72, 0x8a, 0x6d, 0x7c, 0x8a, 0x18,
		0x39, 0x36, 0x02, 0x00, 0xa0, 0x00, 0x02, 0x3a, 0x40, 0xa0, 0x02, 0x06, 0x72, 0x80, 0x20, 0x07,
		0x0a, 0x52, 0xc0, 0x30, 0x03, 0x1c, 0x86, 0x00, 0xc4, 0x9c, 0xd2, 0xb1, 0x72, 0xbf, 0xa0, 0x56,
		0x76, 0x95, 0x71, 0xa2, 0x56, 0xd6, 0xe2, 0x12, 0x2c, 0x61, 0x1e, 0x83, 0x58, 0x8b, 0xc8, 0x97,
		0x1d, 0x1b, 0xac, 0x27, 0x19, 0x1b, 0x08, 0x0f, 0x84, 0x07, 0xc2, 0x03, 0xe1, 0x1d, 0x42, 0xf8,
		0xe8, 0xa9, 0x03, 0xf3, 0xf5, 0x68, 0x5c, 0x02, 0xb0, 0xdf, 0x33, 0x38, 0xc6, 0xf4, 0xd9, 0x39,
		0xdf, 0x60, 0xee, 0x69, 0xdb, 0xbf, 0xdd, 0xa2, 0x47, 0xd0, 0xa7, 0x6c, 0xba, 0x3a, 0x55, 0x82,
		0xa1, 0x68, 0xda, 0x00, 0xd2, 0xad, 0x56, 0xf2, 0x87, 0x51, 0xb6, 0x05, 0x4c, 0x06, 0x25, 0x6e,
		0x0f, 0x98, 0x8c, 0x6b, 0xab, 0xef, 0xdb, 0xe3, 0x1e, 0xa1, 0xee, 0xff, 0x66, 0xd8, 0xf1, 0x2f,
		0x37, 0x29, 0xc2, 0xf6, 0x81, 0x0b, 0x26, 0x55, 0x2a, 0xee, 0x95, 0xf6, 0x2a, 0xd5, 0xe2, 0x5e,
		0x19, 0xb6, 0x45, 0x65, 0x5b, 0xef, 0xb2, 0x31, 0x4a, 0xe3, 0x9d, 0xc3, 0x3b, 0x90, 0x10, 0xe0,
		0x65, 0xff, 0xb6, 0xe4, 0x07, 0x9d, 0xce, 0x28, 0xbe, 0x27, 0x84, 0xf9, 0xc2, 0x47, 0x82, 0xb1,
		0xce, 0x02, 0xad, 0x45, 0xa4, 0xc8, 0x90, 0xde, 0xdb, 0xfa, 0xb1, 0xe3, 0xef, 0x35, 0x1e, 0x7e,
		0x14, 0xfc, 0xbd, 0xc6, 0xe4, 0xcb, 0xc2, 0xf8, 0x9f, 0xdf, 0xc5, 0xe1, 0x43, 0xf1, 0xc7, 0x8e,
		0x5f, 0x9a, 0xbe, 0x5b, 0x2c, 0xff, 0xd8, 0xf1, 0xcb, 0x8d, 0xed, 0xad, 0xbf, 0xfe, 0xfa, 0xb0,
		0xee, 0x67, 0xb6, 0x7f, 0xef, 0x0e, 0x3d, 0xf3, 0xdb, 0x87, 0x62, 0x79, 0x4e, 0x2f, 0xea, 0xff,
		0x26, 0x5f, 0xa3, 0xff, 0x6e, 0x51, 0xad, 0xd2, 0xf6, 0xbf, 0x3c, 0xd7, 0xdd, 0x9c, 0x6b, 0x2d,
		0x61, 0x21, 0xb8, 0xda, 0x5e, 0x60, 0x9c, 0x02, 0xb1, 0x55, 0xf6, 0xff, 0x4c, 0x1a, 0x46, 0x73,
		0x82, 0xb4, 0x28, 0x12, 0x9a, 0x13, 0xa0, 0x62, 0xea, 0x9f, 0x56, 0x13, 0x15, 0x53, 0x99, 0xc3,
		0x0a, 0x54, 0x4c, 0xbd, 0xed, 0xf1, 0xa1, 0x62, 0xea, 0x4f, 0x8e, 0x1f, 0xf9, 0x54, 0x9b, 0x80,
		0x40, 0x05, 0x0c, 0xe4, 0x00, 0x41, 0x0e, 0x14, 0xa4, 0x80, 0x61, 0x36, 0x2e, 0x45, 0xc5, 0xd4,
		0x1a, 0xbc, 0xb5, 0x80, 0x02, 0x20, 0x14, 0x00, 0x01, 0xb0, 0x00, 0x58, 0x00, 0x2c, 0x00, 0xd6,
		0xeb, 0xbd, 0x19, 0x0a, 0x80, 0x5e, 0xf3, 0x42, 0x01, 0xd0, 0xdb, 0x86, 0x42, 0x01, 0x50, 0x9a,
		0x83, 0xa2, 0x00, 0x08, 0x05, 0x40, 0x86, 0x4c, 0x0a, 0x05, 0x40, 0x28, 0x00, 0x7a, 0xe5, 0x0b,
		0x05, 0x40, 0x2f, 0x03, 0x78, 0x14, 0x00, 0xa5, 0x38, 0x20, 0x0a, 0x80, 0xd6, 0x5a, 0x1e, 0x14,
		0x00, 0x71, 0x77, 0x73, 0xb8, 0x13, 0x1a, 0xf5, 0x2c, 0x4c, 0xea, 0x59, 0xd0, 0xd5, 0xd4, 0xb6,
		0x59, 0x70, 0x32, 0x07, 0xeb, 0x5d, 0x4d, 0xcf, 0x47, 0xf3, 0x39, 0x4f, 0xa6, 0x93, 0xa1, 0xee,
		0x76, 0xe9, 0x96, 0x53, 0x19, 0x29, 0xa3, 0x32, 0xd6, 0xc9, 0xae, 0x88, 0x4e, 0x76, 0x69, 0x72,
		0x7d, 0x74, 0xb2, 0x73, 0x06, 0x33, 0x52, 0xef, 0x64, 0x17, 0x0c, 0xf4, 0xb5, 0xdf, 0x0f, 0xe2,
		0x78, 0x6a, 0x02, 0x86, 0xaa, 0x33, 0xe7, 0x87, 0x31, 0x53, 0xa5, 0xb9, 0x83, 0xbe, 0x76, 0xa8,
		0xd2, 0x64, 0xe4, 0x96, 0x48, 0xdc, 0x93, 0x1b, 0x11, 0x90, 0xb1, 0x5c, 0xe5, 0x5c, 0xc5, 0x85,
		0x54, 0x57, 0xa6, 0x7c, 0xcc, 0xbc, 0x28, 0xb6, 0x01, 0xd5, 0xfa, 0x1d, 0x11, 0xb7, 0x23, 0xd9,
		0x37, 0x12, 0xb4, 0x26, 0x8b, 0xf6, 0x74, 0x10, 0x60, 0x02, 0x30, 0x01, 0x98, 0x00, 0x4c, 0x48,
		0x35, 0x96, 0x8d, 0xa4, 0xba, 0x02, 0x12, 0xbc, 0xed, 0x6f, 0xed, 0x85, 0xed, 0xa0, 0xe7, 0x07,
		0xb1, 0x39, 0x18, 0x48, 0x46, 0x00, 0x06, 0x00, 0x03, 0x80, 0x01, 0xc0, 0x80, 0x34, 0x85, 0x87,
		0xd8, 0x57, 0x83, 0x9b, 0x96, 0x88, 0x0c, 0xc2, 0x80, 0x81, 0x62, 0x38, 0xc3, 0xc5, 0x6f, 0x06,
		0x8b, 0x46, 0x29, 0x8a, 0xdb, 0xa8, 0x8a, 0xd9, 0xc8, 0x0b, 0x8c, 0xe8, 0x0a, 0x8a, 0x0c, 0x96,
		0xc6, 0x90, 0x14, 0xa3, 0x91, 0x17, 0x9f, 0x65, 0xd9, 0x16, 0x1c, 0xc9, 0xf2, 0x37, 0x36, 0x80,
		0x6d, 0x8f, 0x73, 0xa9, 0x26, 0xc9, 0xf6, 0x6c, 0x00, 0x70, 0x6d, 0x70, 0x6d, 0x70, 0x6d, 0x70,
		0x6d, 0x70, 0x6d, 0x70, 0x6d, 0x70, 0x6d, 0x70, 0x6d, 0x70, 0x6d, 0x70, 0xed, 0x4d, 0xe4, 0xda,
		0x06, 0x2e, 0x06, 0x5f, 0xce, 0xb9, 0x53, 0xbf, 0x20, 0x1c, 0xdc, 0x1b, 0xdc, 0x1b, 0xdc, 0x1b,
		0xdc, 0x1b, 0xb9, 0xce, 0x74, 0x11, 0x41, 0x9b, 0x58, 0xac, 0x79, 0x2c, 0x30, 0xd0, 0x43, 0x01,
		0x28, 0x00, 0x14, 0x00, 0x0a, 0x6c, 0x38, 0x0a, 0x98, 0x72, 0x2e, 0x73, 0x40, 0x50, 0x32, 0xf0,
		0xbb, 0x8f, 0xd4, 0xe0, 0xc6, 0xdc, 0x66, 0xba, 0x0c, 0x2f, 0x26, 0xf0, 0x68, 0xb4, 0x5d, 0xce,
		0xce, 0x68, 0x05, 0xea, 0x27, 0x97, 0x47, 0xe7, 0x27, 0xb5, 0x63, 0x93, 0x1d, 0x72, 0x0a, 0xa3,
		0x81, 0x8e, 0xfe, 0x3d, 0x1d, 0xc8, 0xad, 0xa6, 0x45, 0x61, 0xdd, 0x60, 0x13, 0xd5, 0x89, 0x29,
		0xcd, 0x1e, 0x4c, 0xea, 0x7d, 0x9b, 0xe7, 0x86, 0x49, 0x16, 0x7a, 0x3f, 0xb7, 0xb3, 0x99, 0xa7,
		0x64, 0x59, 0x32, 0xb8, 0x48, 0xdc, 0x84, 0xb7, 0xc2, 0xef, 0x47, 0xf2, 0x36, 0xd0, 0xc2, 0x68,
		0x26, 0x6d, 0x71, 0x28, 0x30, 0x3a, 0x30, 0x3a, 0x30, 0x3a, 0x30, 0x3a, 0x93, 0x4e, 0xc6, 0x0f,
		0x4d, 0x9c, 0x97, 0x98, 0x23, 0x78, 0x06, 0xd4, 0x7d, 0xaf, 0xde, 0x11, 0x4a, 0x4b, 0x7d, 0x7f,
		0x10, 0xc4, 0xc2, 0x7c, 0xff, 0xd5, 0xf3, 0xa3, 0xaf, 0xa7, 0xdf, 0x8f, 0x9a, 0x67, 0xe7, 0xf5,
		0xef, 0xb5, 0xcb, 0xa3, 0x66, 0xed, 0xa2, 0x79, 0x7a, 0x76, 0x59, 0x3f, 0x3d, 0x31, 0xb5, 0xe5,
		0xc6, 0x09, 0x92, 0xd8, 0x68, 0x77, 0x14, 0xc3, 0x29, 0x9e, 0xd9, 0x93, 0x7b, 0xf2, 0xc8, 0xa6,
		0x0f, 0xb1, 0x76, 0x7c, 0xec, 0xb9, 0x98, 0x1a, 0xb3, 0xf1, 0xc0, 0xce, 0x8e, 0x6b, 0x9f, 0x4c,
		0x3f, 0x31, 0x33, 0x7d, 0xf4, 0x41, 0x36, 0x5f, 0x43, 0x36, 0xc7, 0xdd, 0x2e, 0xba, 0xbd, 0xa0,
		0xef, 0x77, 0x82, 0x9b, 0xbe, 0x89, 0x08, 0xf3, 0x59, 0x4b, 0xe9, 0xb9, 0xb1, 0xd2, 0xbe, 0x4a,
		0xc3, 0xe0, 0x5d, 0x10, 0x26, 0xee, 0x80, 0x68, 0x80, 0x6e, 0x83, 0x6e, 0x83, 0x6e, 0x83, 0x6e,
		0xa7, 0x68, 0xef, 0xe6, 0xee, 0x66, 0x30, 0x74, 0x27, 0x03, 0xd3, 0xbb, 0xde, 0x84, 0xea, 0xf8,
		0xed, 0xf0, 0xe6, 0x66, 0xa0, 0xa4, 0xbe, 0x37, 0x78, 0xe9, 0xdb, 0xfc, 0x38, 0x2e, 0x01, 0xe2,
		0xc9, 0xe9, 0xc9, 0x11, 0xf0, 0x10, 0x78, 0x08, 0x3c, 0x04, 0x1e, 0xf2, 0xc5, 0xc3, 0xc4, 0xb7,
		0x22, 0xab, 0xb8, 0xf8, 0xf4, 0xe9, 0xb2, 0x8a, 0x17, 0x97, 0xb5, 0x93, 0xc3, 0xda, 0xf9, 0x21,
		0x49, 0x56, 0xf1, 0xe4, 0xf0, 0xc8, 0xe8, 0x40, 0xc5, 0xd1, 0x40, 0xc7, 0xb5, 0xf3, 0x2f, 0x47,
		0x26, 0x47, 0xd9, 0x1d, 0x8d, 0x72, 0x70, 0x7a, 0xf9, 0x7f, 0x26, 0x07, 0x29, 0x8d, 0x5b, 0x51,
		0xa6, 0x8e, 0xe4, 0x86, 0xd5, 0x31, 0x8a, 0x2c, 0xec, 0xf8, 0xc9, 0xef, 0xe7, 0x76, 0xdf, 0x9b,
		0x4d, 0xf4, 0x8e, 0x6d, 0xd5, 0x6c, 0xa2, 0x77, 0x62, 0xa9, 0xa9, 0xdf, 0xd5, 0xbb, 0x48, 0x06,
		0xf7, 0x73, 0x25, 0x93, 0x57, 0x52, 0xcd, 0x5c, 0xc8, 0xc6, 0xe6, 0xab, 0x53, 0x06, 0x5f, 0x71,
		0xa7, 0xa3, 0xc0, 0x1f, 0xa8, 0x58, 0x07, 0xad, 0x9e, 0x21, 0x18, 0x8e, 0x75, 0xa0, 0x07, 0xb1,
		0x8b, 0x47, 0x93, 0x1e, 0x5b, 0x7c, 0xf5, 0x23, 0xd1, 0x0e, 0xb4, 0xe8, 0x64, 0xec, 0xbe, 0xb5,
		0xe9, 0xd2, 0x64, 0xf9, 0xbe, 0xb5, 0x27, 0x6b, 0x87, 0xf3, 0x30, 0x1b, 0xa7, 0xda, 0x18, 0xae,
		0x83, 0x5e, 0x36, 0x18, 0x04, 0x0c, 0x08, 0x18, 0x10, 0x30, 0x20, 0x60, 0x40, 0xc0, 0x80, 0x80,
		0x01, 0x01, 0x03, 0x02, 0x06, 0x04, 0x0c, 0x08, 0x18, 0x10, 0x30, 0x4c, 0x81, 0xef, 0xb1, 0x8c,
		0x75, 0x4d, 0xeb, 0xc8, 0x0c, 0x00, 0x7f, 0x95, 0xea, 0xa8, 0x27, 0x46, 0xf4, 0xc6, 0x50, 0xff,
		0x06, 0xef, 0x6b, 0x70, 0xf7, 0x64, 0x84, 0xc2, 0xc7, 0x52, 0xa9, 0x52, 0x2d, 0x95, 0x76, 0xaa,
		0xbb, 0xd5, 0x9d, 0xbd, 0x72, 0xb9, 0x50, 0x31, 0x52, 0xc7, 0x7a, 0x1a, 0x75, 0x44, 0x24, 0x3a,
		0x07, 0xf7, 0xde, 0x7e, 0x4e, 0x0d, 0x7a, 0x3d, 0x93, 0x43, 0x7c, 0x8b, 0x45, 0x64, 0xa4, 0x21,
		0x05, 0xcf, 0xf0, 0x53, 0x87, 0x3a, 0xe8, 0xf9, 0xfd, 0x40, 0x5f, 0x1b, 0x3c, 0xb4, 0xf1, 0x74,
		0x10, 0x84, 0x9b, 0x08, 0x37, 0x11, 0x6e, 0x22, 0xdc, 0x4c, 0xd1, 0xde, 0x8d, 0x5d, 0xc4, 0x8f,
		0xfe, 0x67, 0xcb, 0x39, 0x06, 0xfa, 0x9f, 0xbd, 0xde, 0x66, 0xd1, 0xff, 0x6c, 0x4d, 0x13, 0x40,
		0xff, 0x33, 0x86, 0x41, 0x56, 0x0e, 0xf9, 0x9e, 0xb7, 0x11, 0xee, 0x31, 0xbb, 0x11, 0xe6, 0x39,
		0xf7, 0x6c, 0x1c, 0xd0, 0x6e, 0xd0, 0x6e, 0xd0, 0x6e, 0xd0, 0x6e, 0xd0, 0x6e, 0xd0, 0x6e, 0xd0,
		0x6e, 0xd0, 0x6e, 0xd0, 0x6e, 0xd0, 0x6e, 0xf6, 0xb4, 0x9b, 0xd5, 0x2d, 0xe0, 0x35, 0xa5, 0x42,
		0x1d, 0xa4, 0x7e, 0x37, 0xab, 0x17, 0xb7, 0xaf, 0xc5, 0x4d, 0xd0, 0x0f, 0xf4, 0xf5, 0x08, 0x54,
		0xf3, 0x61, 0x5f, 0xa8, 0xf6, 0x98, 0x06, 0xfb, 0x4a, 0xe8, 0x5f, 0x61, 0xf4, 0xd3, 0x97, 0x2a,
		0xd6, 0x81, 0x6a, 0x8b, 0xfc, 0xf3, 0x37, 0xe2, 0x85, 0x77, 0xf2, 0xfd, 0x28, 0xd4, 0x61, 0x3b,
		0xec, 0xc5, 0xc9, 0x57, 0xf9, 0xd6, 0x55, 0x3f, 0xff, 0xd8, 0x0c, 0x39, 0x7e, 0xf2, 0x75, 0x3e,
		0xd6, 0x81, 0x4e, 0xe9, 0x80, 0xf8, 0xdb, 0x17, 0x2b, 0x85, 0x85, 0xf2, 0xb4, 0xbc, 0x11, 0x51,
		0x7a, 0x51, 0xd5, 0x63, 0x34, 0x35, 0xf9, 0xbd, 0x29, 0x99, 0xd2, 0xac, 0x7a, 0x25, 0xa5, 0x5f,
		0x97, 0x76, 0xd4, 0x64, 0x22, 0x5a, 0x32, 0x17, 0x25, 0x99, 0x8a, 0x8e, 0x8c, 0x47, 0x45, 0xc6,
		0xa3, 0x21, 0xa3, 0x51, 0x10, 0x2f, 0xe7, 0x7c, 0x28, 0xd3, 0xcd, 0xa8, 0x7b, 0xed, 0xd9, 0x9e,
		0x32, 0x24, 0xcf, 0x4c, 0x7f, 0xbf, 0x19, 0x59, 0xa6, 0x00, 0x59, 0x06, 0xb2, 0x0c, 0x64, 0x19,
		0x8e, 0xb2, 0x4c, 0xda, 0x8e, 0xea, 0xa9, 0xc3, 0x52, 0xa2, 0xad, 0xfd, 0x48, 0xe8, 0xe8, 0xde,
		0x7c, 0xb3, 0xb7, 0xf9, 0xe1, 0x0c, 0x99, 0x8b, 0xc9, 0x5e, 0x10, 0xc9, 0x20, 0xbb, 0x3b, 0x66,
		0xca, 0x30, 0x1b, 0x86, 0x1e, 0x8a, 0x19, 0xe9, 0xdd, 0xb8, 0xaf, 0xa7, 0xf0, 0xf9, 0x74, 0xbe,
		0x9f, 0x0a, 0x03, 0xc8, 0xb1, 0x80, 0x1c, 0x13, 0x48, 0xb1, 0xc1, 0xb0, 0x32, 0x63, 0xaa, 0xf0,
		0xda, 0x94, 0x94, 0xbf, 0xb0, 0x5f, 0x06, 0x52, 0xe9, 0x42, 0xc5, 0xe4, 0x7e, 0x99, 0x7a, 0xaf,
		0x8a, 0xc1, 0x21, 0xcc, 0x4a, 0xfc, 0xb3, 0x97, 0xd9, 0xfd, 0x9e, 0xa3, 0x92, 0xfc, 0x93, 0xc1,
		0x88, 0xa4, 0xff, 0x64, 0x3c, 0x6a, 0xd9, 0xf7, 0xd1, 0xd6, 0xa9, 0xe4, 0x5f, 0xc3, 0x6e, 0x61,
		0xde, 0x54, 0x08, 0x52, 0x03, 0x0b, 0xa6, 0x52, 0x29, 0x97, 0x77, 0xcb, 0x30, 0x17, 0x27, 0xb0,
		0xc9, 0xfc, 0x6f, 0x6f, 0x38, 0x85, 0xa9, 0x86, 0xd4, 0xfc, 0x85, 0x71, 0xee, 0xaf, 0x42, 0xed,
		0x87, 0x6d, 0xbf, 0x1d, 0xde, 0xf4, 0x23, 0x11, 0xc7, 0xa2, 0xe3, 0xf7, 0x44, 0xd0, 0x1d, 0x0d,
		0xea, 0x4a, 0x7a, 0xc8, 0xc0, 0x12, 0x78, 0xd7, 0x61, 0xaf, 0xe3, 0x6b, 0x79, 0x43, 0xd0, 0x96,
		0xfc, 0x71, 0x28, 0x97, 0xa3, 0xd4, 0x3d, 0x44, 0xa9, 0x88, 0x52, 0x11, 0xa5, 0x22, 0x4a, 0x45,
		0x94, 0x8a, 0x28, 0x15, 0x51, 0x2a, 0xa2, 0x54, 0x44, 0xa9, 0x88, 0x52, 0x11, 0xa5, 0x66, 0x3c,
		0x4a, 0x25, 0x68, 0x77, 0x98, 0x8c, 0x15, 0x89, 0xae, 0x88, 0x84, 0x6a, 0x67, 0x02, 0x94, 0x92,
		0x3b, 0xa9, 0x3e, 0x7f, 0xca, 0x95, 0x8a, 0xd5, 0x42, 0xce, 0xcf, 0xd5, 0x72, 0x07, 0x61, 0xd4,
		0x11, 0x51, 0xee, 0x4b, 0xa0, 0xc5, 0xaf, 0xe0, 0x3e, 0x77, 0x36, 0x2d, 0x90, 0xcb, 0x95, 0xde,
		0xe7, 0x2e, 0x44, 0xfb, 0x43, 0xae, 0xb0, 0xe3, 0x11, 0x38, 0x41, 0x22, 0x2e, 0xbe, 0x8c, 0x93,
		0x3f, 0x2e, 0x31, 0x91, 0x5b, 0xa2, 0xa6, 0xe7, 0x4b, 0x69, 0xfa, 0xba, 0x36, 0x00, 0xdf, 0x99,
		0x09, 0xdf, 0x09, 0x85, 0xcf, 0xe6, 0x12, 0x78, 0x3f, 0x85, 0xe8, 0x07, 0x3d, 0x79, 0x2b, 0x7c,
		0xa9, 0xb4, 0x88, 0x6e, 0x83, 0x9e, 0x79, 0xa9, 0x6f, 0xc9, 0x98, 0xa8, 0x4c, 0x59, 0xb2, 0x8f,
		0xa1, 0xf9, 0x2d, 0x1d, 0x00, 0x9a, 0xdf, 0x1b, 0xf9, 0x05, 0x34, 0x3f, 0xa6, 0xe8, 0x0d, 0xcd,
		0xef, 0xc5, 0xde, 0x0b, 0x9a, 0xdf, 0x4b, 0x84, 0x1c, 0x68, 0x7e, 0x99, 0x10, 0x71, 0xa0, 0xf9,
		0xc1, 0x5c, 0x10, 0xb7, 0x22, 0x6e, 0x45, 0xdc, 0x9a, 0x3c, 0x96, 0x1b, 0xa9, 0xe4, 0xcd, 0xe0,
		0xc6, 0x0f, 0x3a, 0xb7, 0x22, 0xd2, 0x32, 0x1e, 0xf7, 0x3a, 0x25, 0x8c, 0x61, 0xff, 0x61, 0x7c,
		0xc4, 0xb3, 0x88, 0x67, 0x11, 0xcf, 0x22, 0x9e, 0x45, 0x3c, 0x8b, 0x78, 0x16, 0xf1, 0x2c, 0xe2,
		0x59, 0x04, 0x28, 0x88, 0x67, 0x61, 0x2e, 0x88, 0x67, 0xf9, 0x62, 0x2a, 0x6a, 0x58, 0xde, 0x48,
		0x15, 0xd6, 0xa8, 0x5f, 0xc8, 0xed, 0x7d, 0x28, 0x7e, 0x28, 0x7c, 0x28, 0xa0, 0x8e, 0xc5, 0x6d,
		0x8a, 0xbe, 0x94, 0xaa, 0xbf, 0xc6, 0x0e, 0xe0, 0x43, 0x33, 0xe1, 0x43, 0xa1, 0x09, 0xda, 0x5c,
		0x02, 0x2f, 0x12, 0xb1, 0x0e, 0x22, 0x4d, 0x74, 0x60, 0x6d, 0x6e, 0x34, 0x48, 0x5b, 0x90, 0xb6,
		0x20, 0x6d, 0x41, 0xda, 0x82, 0xb4, 0x05, 0x69, 0x0b, 0xd2, 0x16, 0xa4, 0x2d, 0x48, 0x5b, 0x30,
		0x17, 0x84, 0x65, 0x08, 0xcb, 0x9c, 0x0b, 0xcb, 0x58, 0x77, 0xe5, 0x34, 0xbc, 0x90, 0x56, 0x7b,
		0xbc, 0x4f, 0x5a, 0x97, 0xe7, 0xa7, 0x0d, 0x87, 0x37, 0xe0, 0x86, 0xad, 0x49, 0x53, 0x7b, 0x63,
		0x9d, 0x9b, 0x27, 0xbf, 0xde, 0xb1, 0xc6, 0xcd, 0x45, 0x34, 0x6e, 0xa6, 0x8b, 0xb7, 0xd1, 0xb8,
		0x39, 0x83, 0x10, 0x81, 0xc6, 0xcd, 0xeb, 0x3c, 0x2c, 0x94, 0x13, 0xae, 0xf4, 0xf1, 0xd0, 0x5c,
		0x6d, 0xfa, 0x7e, 0x2a, 0x0c, 0x20, 0xc7, 0x02, 0x72, 0x4c, 0x20, 0xc5, 0x06, 0xb3, 0x91, 0x27,
		0x34, 0xd7, 0x17, 0x7b, 0x2f, 0x68, 0xae, 0x2f, 0x11, 0xd2, 0xa0, 0xb9, 0x66, 0x42, 0x44, 0x83,
		0xe6, 0x0a, 0x73, 0xb1, 0x8d, 0x4d, 0xe6, 0x7f, 0x7b, 0x03, 0x7d, 0x88, 0xd1, 0x87, 0xf8, 0xa5,
		0x83, 0xa0, 0x0f, 0x31, 0x82, 0x2e, 0x04, 0x5d, 0x08, 0xba, 0x10, 0x74, 0x21, 0xe8, 0x42, 0xd0,
		0x85, 0xa0, 0x0b, 0x41, 0x17, 0x82, 0x2e, 0x04, 0x5d, 0x6c, 0x82, 0x2e, 0x9c, 0xe1, 0xe2, 0x05,
		0x4a, 0xe8, 0x43, 0xbc, 0x8c, 0x93, 0xe3, 0xfc, 0x16, 0xfa, 0x10, 0x43, 0xb0, 0x7a, 0x95, 0x41,
		0xa1, 0xad, 0xee, 0x9b, 0x07, 0x41, 0xdd, 0x00, 0x24, 0x2c, 0x48, 0x58, 0x90, 0xb0, 0x20, 0x61,
		0x41, 0xc2, 0x82, 0x84, 0x05, 0x09, 0x0b, 0x12, 0x16, 0x24, 0x2c, 0x48, 0x58, 0x08, 0xc3, 0xd6,
		0x31, 0x12, 0x74, 0x89, 0x45, 0x78, 0x86, 0xf0, 0x0c, 0xe1, 0x19, 0xc2, 0x33, 0x84, 0x67, 0x08,
		0xcf, 0x10, 0x9e, 0x21, 0x3c, 0x43, 0x78, 0x86, 0xf0, 0x0c, 0xe1, 0x59, 0xf6, 0xc3, 0x33, 0x54,
		0x18, 0xf0, 0x02, 0x25, 0x74, 0x89, 0x5d, 0xc5, 0xcb, 0x51, 0x65, 0x80, 0x2e, 0xb1, 0x90, 0xb8,
		0xde, 0xe0, 0x25, 0xd1, 0xf4, 0x14, 0x4a, 0x0d, 0x94, 0x1a, 0x28, 0x35, 0x50, 0x6a, 0xa0, 0xd4,
		0x40, 0xa9, 0x81, 0x52, 0x03, 0xa5, 0x06, 0x4a, 0x0d, 0x94, 0x9a, 0x0d, 0x8e, 0x32, 0xd0, 0xc3,
		0xd3, 0x6e, 0x0f, 0xcf, 0x49, 0xeb, 0x49, 0xae, 0x2d, 0x3c, 0xdf, 0x31, 0xb2, 0x0a, 0x53, 0xd6,
		0xc0, 0xc0, 0x0a, 0xbc, 0x54, 0x5b, 0xa5, 0x46, 0x83, 0xb6, 0x56, 0x53, 0x0e, 0x7b, 0x32, 0x99,
		0x5e, 0x7d, 0x3a, 0xbb, 0xe6, 0x4c, 0x2e, 0x6a, 0x1e, 0x5c, 0xf5, 0x9b, 0x67, 0x42, 0x44, 0x5f,
		0x46, 0xd3, 0x68, 0x5e, 0x4e, 0xa6, 0xf1, 0x8e, 0x87, 0xd1, 0xa4, 0x60, 0x30, 0x9e, 0x8e, 0x02,
		0x15, 0xf7, 0xc3, 0x48, 0xa7, 0x66, 0x2b, 0x49, 0x5c, 0xf0, 0xf8, 0xab, 0x53, 0x32, 0xec, 0x74,
		0x3b, 0xc5, 0xa6, 0x2e, 0x5a, 0x98, 0x10, 0x29, 0xcc, 0x89, 0x12, 0xa6, 0x44, 0x08, 0xe3, 0xa2,
		0x83, 0x71, 0x91, 0xc1, 0xa8, 0xa8, 0xc0, 0x0b, 0x2a, 0xd2, 0xee, 0xec, 0xea, 0xb5, 0x67, 0x7b,
		0xca, 0x50, 0x07, 0xea, 0xe9, 0xef, 0x77, 0xac, 0x05, 0xf5, 0x0e, 0x5a, 0x50, 0x9b, 0x77, 0x3c,
		0x64, 0x0e, 0x88, 0xcc, 0x11, 0x91, 0x38, 0x24, 0x37, 0x22, 0x1c, 0x63, 0x2d, 0xa8, 0x7b, 0x61,
		0x3b, 0xe8, 0xf9, 0x41, 0xa7, 0x13, 0x89, 0x38, 0x36, 0x9f, 0xeb, 0x99, 0x1f, 0x0e, 0xc9, 0x1e,
		0x6a, 0xf7, 0x46, 0xe7, 0xe6, 0xa8, 0xdc, 0x1d, 0xb9, 0xdb, 0x23, 0x77, 0x7f, 0xa4, 0x6e, 0xd0,
		0xac, 0xe4, 0x95, 0x81, 0x64, 0x8f, 0x92, 0xa1, 0x22, 0xc8, 0xf5, 0x14, 0xf6, 0x0c, 0x8e, 0x31,
		0x7d, 0x5c, 0x99, 0x29, 0x80, 0x92, 0x7d, 0xc3, 0x90, 0x42, 0xbd, 0x42, 0xb4, 0x2b, 0x45, 0xb7,
		0x62, 0x4b, 0x56, 0xee, 0xb6, 0x44, 0xb8, 0x76, 0x0b, 0x6b, 0xf8, 0x91, 0x70, 0xcc, 0xb3, 0x40,
		0x6b, 0x11, 0x29, 0xb2, 0xe5, 0x4c, 0x06, 0xde, 0xfa, 0xb1, 0xe3, 0xef, 0x35, 0x1e, 0x7e, 0x14,
		0xfc, 0xbd, 0xc6, 0xe4, 0xcb, 0xc2, 0xf8, 0x9f, 0xdf, 0xc5, 0xe1, 0x43, 0xf1, 0xc7, 0x8e, 0x5f,
		0x9a, 0xbe, 0x5b, 0x2c, 0xff, 0xd8, 0xf1, 0xcb, 0x8d, 0xed, 0xad, 0xbf, 0xfe, 0xfa, 0xb0, 0xee,
		0x67, 0xb6, 0x7f, 0xef, 0x0e, 0x3d, 0xb2, 0x3f, 0xab, 0x41, 0xb9, 0x6c, 0xa7, 0x17, 0xf5, 0x7f,
		0x5b, 0x5b, 0xbb, 0xff, 0x6e, 0x51, 0xad, 0xde, 0xf6, 0xbf, 0x08, 0xd7, 0x8f, 0x64, 0xa4, 0xe1,
		0xfb, 0x0c, 0xbb, 0xcd, 0x0a, 0xdc, 0xa6, 0x69, 0xb7, 0x39, 0xde, 0x45, 0x81, 0xdf, 0xad, 0xf9,
		0x9f, 0x1b, 0xbf, 0x0b, 0xef, 0x4b, 0xc3, 0xfd, 0xed, 0xdf, 0xd5, 0xe1, 0xf3, 0x37, 0x1f, 0x96,
		0xfd, 0x58, 0xe1, 0x7d, 0x75, 0xb8, 0xbf, 0xe2, 0x3b, 0x95, 0xe1, 0xfe, 0x0b, 0x7f, 0x47, 0x79,
		0xb8, 0xb5, 0xf0, 0xa3, 0xa3, 0xf7, 0x8b, 0xab, 0x3e, 0x50, 0x5a, 0xf1, 0x81, 0xdd, 0x55, 0x1f,
		0xd8, 0x5d, 0xf1, 0x81, 0x95, 0x53, 0x2a, 0xae, 0xf8, 0x40, 0x79, 0xf8, 0xb0, 0xf0, 0xf3, 0x5b,
		0xcb, 0x7f, 0xb4, 0x32, 0xdc, 0x7e, 0x58, 0xf5, 0xbd, 0xea, 0xf0, 0x61, 0x7f, 0x7b, 0x1b, 0x40,
		0x62, 0x0c, 0x48, 0x60, 0xce, 0xf4, 0xe6, 0x9c, 0x3d, 0x60, 0x7d, 0xe7, 0xf6, 0xdf, 0x61, 0x98,
		0x18, 0x10, 0x46, 0xbe, 0xb1, 0x8e, 0xa4, 0xba, 0xa2, 0x8c, 0x7a, 0x3f, 0xa2, 0xd2, 0x8a, 0x40,
		0xd0, 0xc2, 0xf5, 0xd2, 0x36, 0x97, 0xc0, 0xbb, 0xd1, 0x03, 0xbf, 0x23, 0xe3, 0x76, 0x78, 0x2b,
		0x28, 0x2e, 0xe6, 0x9c, 0x1f, 0xce, 0xe5, 0x0e, 0x2e, 0xe3, 0x6a, 0x4f, 0x34, 0x71, 0x79, 0xf2,
		0xeb, 0x91, 0x2d, 0x5a, 0x6b, 0x24, 0x64, 0x8b, 0x52, 0x83, 0x10, 0x64, 0x8b, 0x56, 0x3c, 0x19,
		0xba, 0x6c, 0x51, 0x2b, 0x0c, 0x7b, 0x22, 0x20, 0xc9, 0x17, 0x15, 0xc0, 0x6f, 0xc0, 0x6f, 0x5e,
		0xfa, 0x58, 0xfa, 0x41, 0x1c, 0xcb, 0x5b, 0xe1, 0xdf, 0x84, 0x1d, 0x82, 0x03, 0xbe, 0x73, 0xa3,
		0x81, 0xdd, 0x80, 0xdd, 0x80, 0xdd, 0x80, 0xdd, 0x80, 0xdd, 0x80, 0xdd, 0x80, 0xdd, 0x80, 0xdd,
		0x18, 0x60, 0x37, 0xba, 0xdd, 0xf7, 0x6f, 0x28, 0xaa, 0x59, 0x67, 0x03, 0x01, 0xbb, 0x81, 0xdd,
		0xc0, 0x6e, 0x60, 0xb7, 0x43, 0xd8, 0x8d, 0xa6, 0x25, 0x2f, 0x7e, 0xa1, 0x69, 0xc9, 0xdb, 0xc6,
		0x43, 0xd3, 0x92, 0x54, 0x4d, 0x05, 0x4d, 0x4b, 0x32, 0x63, 0x2e, 0x48, 0xa5, 0x23, 0x18, 0x63,
		0x15, 0x8c, 0xa1, 0xcb, 0x8b, 0xad, 0xfe, 0x1e, 0xb3, 0x5e, 0x11, 0xf9, 0xe9, 0x09, 0x6f, 0xae,
		0x9d, 0x5e, 0x52, 0xed, 0x40, 0x12, 0x68, 0x61, 0xee, 0xa8, 0xfc, 0xe4, 0xd7, 0x3b, 0x76, 0x52,
		0xbe, 0x88, 0x93, 0xf2, 0x74, 0x21, 0x37, 0x4e, 0xca, 0x67, 0x10, 0x25, 0x70, 0x52, 0x7e, 0x7d,
		0x77, 0x06, 0x85, 0xd1, 0xa6, 0x9b, 0xa3, 0x72, 0x77, 0xe4, 0x6e, 0x8f, 0xdc, 0xfd, 0x91, 0xba,
		0x41, 0xb3, 0x71, 0x16, 0x4e, 0xca, 0xbf, 0x98, 0x8b, 0xe1, 0xa4, 0xfc, 0xcb, 0x17, 0x05, 0x27,
		0xe5, 0x1d, 0x59, 0xb1, 0x25, 0x2b, 0x87, 0x93, 0xf2, 0xc6, 0x07, 0xc6, 0x49, 0xf9, 0x37, 0x2d,
		0x1b, 0x4e, 0xca, 0xa7, 0xbf, 0x7e, 0x38, 0x29, 0xff, 0x56, 0xb7, 0x89, 0x93, 0xf2, 0xc6, 0xdd,
		0x26, 0x8e, 0x16, 0xe3, 0xa4, 0x7c, 0xd6, 0x80, 0x04, 0xe6, 0x8c, 0x93, 0xf2, 0x4c, 0xc5, 0x01,
		0xba, 0xbf, 0x03, 0x27, 0xe5, 0xdf, 0x00, 0xfd, 0x48, 0xef, 0x1b, 0x9d, 0x2f, 0x0e, 0x7e, 0xbf,
		0x6c, 0x30, 0x1c, 0x8d, 0xfa, 0xe3, 0x3e, 0x45, 0xf2, 0xe3, 0x05, 0x86, 0x8a, 0xe4, 0xc7, 0xab,
		0x07, 0x44, 0xf2, 0x83, 0x0b, 0xeb, 0xc0, 0xd1, 0xa8, 0xac, 0xc1, 0x35, 0xce, 0x31, 0x03, 0xac,
		0x01, 0xd6, 0x00, 0x6b, 0x80, 0x35, 0xc0, 0x1a, 0x60, 0xcd, 0x1c, 0xac, 0x71, 0x2c, 0x17, 0x50,
		0x04, 0x28, 0x02, 0x14, 0x01, 0x8a, 0x56, 0xef, 0x17, 0x1c, 0xcb, 0x7d, 0xf1, 0x0b, 0xc7, 0x72,
		0xdf, 0x36, 0x1e, 0x8e, 0xe5, 0xa6, 0x6a, 0x2a, 0x38, 0x96, 0x9b, 0x19, 0x73, 0x41, 0xde, 0xce,
		0x6c, 0x6c, 0x81, 0x53, 0xa6, 0xd6, 0x4f, 0x99, 0x4e, 0x0e, 0x47, 0x72, 0x3d, 0x64, 0xca, 0xea,
		0x8e, 0x68, 0x43, 0x06, 0xc1, 0xc3, 0x10, 0xbc, 0x54, 0xcf, 0xf3, 0x46, 0x83, 0xb6, 0x56, 0x53,
		0x26, 0x7b, 0x32, 0x99, 0x61, 0x7d, 0x3a, 0xc1, 0xe6, 0xd9, 0x74, 0x5a, 0xcd, 0x83, 0xab, 0x7e,
		0xf3, 0x4c, 0x88, 0xe8, 0xcb, 0x68, 0x26, 0xcd, 0xcb, 0x64, 0x26, 0xef, 0x78, 0x98, 0x4e, 0x0a,
		0x66, 0xe3, 0x0d, 0x62, 0xe1, 0xdf, 0x0c, 0x7a, 0x5a, 0xf6, 0x7b, 0xc2, 0x1f, 0xad, 0x70, 0x7a,
		0xa2, 0xc7, 0x63, 0xa4, 0xb0, 0x38, 0x46, 0x4a, 0x06, 0x9f, 0xee, 0x19, 0xe7, 0xd4, 0xf5, 0x0c,
		0x13, 0xfa, 0x85, 0x39, 0xbd, 0xc2, 0x94, 0x3e, 0x61, 0x5c, 0x8f, 0x30, 0xae, 0x3f, 0x18, 0xd5,
		0x1b, 0x78, 0x41, 0x48, 0xda, 0x67, 0x92, 0xbd, 0xf6, 0x6c, 0x4f, 0x19, 0xea, 0x9d, 0x30, 0xfd,
		0xfd, 0x8e, 0x35, 0x4f, 0xd8, 0x41, 0xf3, 0x04, 0xf3, 0x8e, 0x87, 0xcc, 0x01, 0x91, 0x39, 0x22,
		0x12, 0x87, 0xe4, 0x46, 0xf0, 0x63, 0xac, 0x79, 0x82, 0x50, 0x41, 0xab, 0x27, 0x3a, 0xe6, 0x73,
		0x3f, 0xb3, 0x81, 0x50, 0x9e, 0xb1, 0x5c, 0x23, 0x40, 0x4e, 0x8c, 0xda, 0xd5, 0xd3, 0xb9, 0x7c,
		0x2a, 0xd7, 0x4f, 0x0e, 0x01, 0xe4, 0x50, 0x40, 0x0a, 0x09, 0x66, 0x95, 0x41, 0x94, 0x67, 0xac,
		0xc1, 0x4c, 0xd1, 0x66, 0x7e, 0xd9, 0x38, 0xe8, 0x6c, 0x68, 0x98, 0x76, 0x65, 0x59, 0x73, 0x5e,
		0xd4, 0xa9, 0x36, 0xa8, 0xc5, 0xa1, 0x18, 0x01, 0x86, 0xb1, 0x28, 0x5d, 0xa4, 0x4f, 0x23, 0x10,
		0xa3, 0x23, 0x46, 0x47, 0x8c, 0xbe, 0x99, 0x31, 0xba, 0x21, 0x51, 0x71, 0x61, 0x3b, 0x19, 0x11,
		0x17, 0x0d, 0x3b, 0x30, 0x44, 0xa2, 0x88, 0x44, 0x11, 0x89, 0xf2, 0x0c, 0x83, 0x4c, 0x39, 0xc4,
		0x64, 0x80, 0xa0, 0xd7, 0x0b, 0x7f, 0x3d, 0x92, 0xd8, 0x20, 0x36, 0x6f, 0xcf, 0xb3, 0x1d, 0xba,
		0x38, 0xb4, 0x61, 0x33, 0xa3, 0x10, 0x38, 0x93, 0xc1, 0x0c, 0x0a, 0x9d, 0xb3, 0x97, 0xe1, 0xb6,
		0x35, 0x86, 0x85, 0x4f, 0x32, 0xd8, 0xa1, 0x84, 0x1f, 0x7a, 0x18, 0xa2, 0x86, 0x23, 0x6b, 0xb0,
		0x64, 0x0d, 0x9e, 0xac, 0xc0, 0x94, 0x59, 0xb8, 0x32, 0x0c, 0x5b, 0xc9, 0x13, 0x33, 0x2e, 0xa4,
		0x2e, 0xec, 0x37, 0xf3, 0x82, 0xea, 0x02, 0x1b, 0x2f, 0x38, 0xbd, 0x44, 0x44, 0x42, 0x6b, 0x32,
		0x1e, 0xb9, 0xe0, 0x6a, 0x7e, 0x27, 0x19, 0x5c, 0x22, 0xef, 0x26, 0xb8, 0x93, 0x37, 0x83, 0x9b,
		0x94, 0x2b, 0xed, 0xfe, 0x71, 0x1b, 0xcd, 0x0f, 0x9b, 0x25, 0x5e, 0x56, 0x00, 0x27, 0x03, 0x27,
		0x03, 0x27, 0x03, 0x27, 0x03, 0x27, 0xa3, 0xda, 0x6f, 0x03, 0xa9, 0xf4, 0x6e, 0x91, 0x90, 0x92,
		0x55, 0x09, 0x86, 0xa2, 0x39, 0x08, 0x3a, 0x7b, 0x11, 0x76, 0x97, 0xa6, 0x3c, 0x18, 0x9a, 0x0c,
		0x4a, 0x7c, 0x40, 0x34, 0x19, 0xd7, 0xd6, 0xc9, 0xbf, 0xc7, 0x3d, 0x42, 0x7d, 0x02, 0x90, 0xc8,
		0xcd, 0xcc, 0x9b, 0x14, 0xe1, 0x01, 0xd2, 0x05, 0x93, 0x2a, 0x15, 0xf7, 0x4a, 0x7b, 0x95, 0x6a,
		0x71, 0xaf, 0x0c, 0xdb, 0xa2, 0xb2, 0x2d, 0xf4, 0x1f, 0x46, 0x64, 0x9f, 0x89, 0xc8, 0x1e, 0x35,
		0x73, 0x4b, 0xc6, 0x61, 0x56, 0x72, 0x25, 0x46, 0x3f, 0x6e, 0xa2, 0xee, 0xca, 0x9c, 0x15, 0x98,
		0x68, 0x41, 0xd5, 0x93, 0xea, 0xa7, 0xdf, 0x0a, 0x54, 0xe7, 0x97, 0xec, 0xe8, 0x6b, 0x5f, 0xdc,
		0xe9, 0xd1, 0x4e, 0xbc, 0x19, 0x28, 0xa9, 0x09, 0xba, 0x3d, 0xff, 0x71, 0x74, 0x94, 0x43, 0xd8,
		0xd2, 0x3e, 0x50, 0x0e, 0xe1, 0x9e, 0xb6, 0x81, 0x72, 0x88, 0x95, 0x4f, 0xc6, 0x78, 0x39, 0x84,
		0xe1, 0x3a, 0xb1, 0x85, 0x6d, 0x69, 0xb4, 0x5e, 0x8c, 0xc8, 0x51, 0x92, 0x39, 0x4c, 0x4a, 0xc7,
		0x49, 0xef, 0x40, 0xa9, 0x1d, 0xa9, 0x35, 0x87, 0x6a, 0xcd, 0xb1, 0x5a, 0x71, 0xb0, 0x34, 0xd1,
		0xaa, 0xe9, 0x58, 0xd2, 0xb4, 0xe3, 0x4d, 0x06, 0x32, 0x7d, 0x98, 0x76, 0xe5, 0xfe, 0x36, 0x7b,
		0xb8, 0x76, 0x95, 0x4b, 0xa6, 0x6a, 0x34, 0x46, 0xe5, 0x9a, 0x6d, 0xb8, 0x68, 0x7b, 0xae, 0xda,
		0x96, 0xcb, 0xb6, 0xee, 0xba, 0xad, 0xbb, 0x70, 0xab, 0xae, 0x9c, 0xc6, 0xa5, 0x13, 0xb9, 0xf6,
		0xe4, 0x49, 0x92, 0xe5, 0x05, 0x17, 0xf6, 0x2b, 0x5d, 0xcd, 0xd6, 0x02, 0x23, 0x2e, 0x64, 0x6a,
		0x09, 0x89, 0x15, 0xdf, 0x64, 0x5c, 0x6b, 0xca, 0x2f, 0xdd, 0x4e, 0x1c, 0x22, 0x15, 0xb0, 0xc6,
		0x78, 0x1c, 0x15, 0xe2, 0x3f, 0x29, 0x94, 0x46, 0xe5, 0x63, 0xf3, 0x26, 0x64, 0xb2, 0x00, 0x71,
		0xd2, 0x4d, 0x93, 0x4c, 0x10, 0x99, 0x0c, 0x97, 0x31, 0x3d, 0xa4, 0x08, 0x3d, 0x04, 0x7a, 0x08,
		0xf4, 0x10, 0xe8, 0x21, 0xd0, 0x43, 0xa0, 0x87, 0x40, 0x0f, 0x81, 0x1e, 0x02, 0x3d, 0x04, 0x7a,
		0xc8, 0x26, 0xeb, 0x21, 0x60, 0x17, 0x08, 0xd7, 0xdf, 0x12, 0xae, 0x1b, 0xb8, 0xe2, 0x81, 0x30,
		0x5a, 0x47, 0x51, 0x61, 0x06, 0x6c, 0xd0, 0x33, 0xaa, 0xb9, 0xbc, 0xe2, 0xb6, 0x89, 0x6f, 0xb1,
		0xf8, 0x3a, 0xfd, 0x1b, 0xce, 0x46, 0x7f, 0x42, 0xf3, 0xa8, 0x75, 0xd5, 0x6f, 0x1e, 0x4b, 0xf5,
		0xf3, 0x60, 0xf6, 0x17, 0x1c, 0xdd, 0xe9, 0x4f, 0xc9, 0xfc, 0x37, 0xb8, 0x54, 0xd2, 0xac, 0xa6,
		0x45, 0xa2, 0x65, 0x91, 0x15, 0x3f, 0x16, 0x51, 0xfc, 0xc8, 0x27, 0xe0, 0x41, 0xf1, 0xe3, 0x06,
		0x23, 0x31, 0x7a, 0x41, 0xa5, 0xf9, 0x30, 0xd1, 0x0b, 0x8a, 0xa1, 0x3e, 0x87, 0x12, 0x52, 0x27,
		0xf5, 0x37, 0xa4, 0x4c, 0x90, 0x32, 0xe1, 0xa3, 0xa7, 0x65, 0xb8, 0x17, 0x14, 0x5a, 0x18, 0xbd,
		0x7c, 0xf5, 0xd1, 0xc2, 0x08, 0x54, 0x02, 0x54, 0x02, 0x54, 0x02, 0x54, 0x02, 0x54, 0xe2, 0xcd,
		0xfb, 0x0d, 0x2d, 0x8c, 0xde, 0xfc, 0x42, 0x0b, 0x23, 0x33, 0xe3, 0xa2, 0x85, 0x11, 0x89, 0x49,
		0xa1, 0x85, 0x11, 0x5a, 0x18, 0x39, 0x38, 0x4a, 0x03, 0x49, 0x72, 0xf3, 0x1e, 0x63, 0xa3, 0x93,
		0xe4, 0x06, 0x6b, 0x31, 0x70, 0x57, 0x5e, 0xe6, 0xcd, 0xc7, 0x33, 0x92, 0xde, 0x4f, 0xab, 0x7c,
		0x62, 0x13, 0xee, 0xf1, 0x93, 0x46, 0xef, 0xf1, 0x93, 0xb8, 0xc7, 0x0f, 0xf7, 0xf8, 0xb1, 0x10,
		0x7c, 0x70, 0x8f, 0x1f, 0x1d, 0x90, 0xe1, 0x1e, 0x3f, 0x0b, 0x0e, 0xcc, 0xb8, 0x23, 0xa3, 0x70,
		0x68, 0x74, 0x8e, 0x8d, 0xca, 0xc1, 0x91, 0x3b, 0x3a, 0x72, 0x87, 0x47, 0xea, 0xf8, 0xdc, 0x0c,
		0x10, 0x8d, 0xd7, 0x6e, 0x21, 0xc9, 0x9a, 0xf2, 0x60, 0x48, 0xb2, 0x72, 0x80, 0x1a, 0x4a, 0xc8,
		0xa1, 0x87, 0x1e, 0x6a, 0x08, 0xb2, 0x06, 0x45, 0xd6, 0x20, 0xc9, 0x0a, 0x34, 0x99, 0x85, 0x28,
		0xc3, 0x50, 0x95, 0x3c, 0x31, 0x24, 0x59, 0x53, 0x19, 0x0a, 0x49, 0xd6, 0x34, 0x07, 0x45, 0x92,
		0x15, 0x49, 0x56, 0x43, 0x26, 0x85, 0x24, 0x2b, 0x92, 0xac, 0xaf, 0x25, 0xf3, 0x38, 0x6d, 0xbe,
		0xc6, 0x78, 0xb8, 0x27, 0xc6, 0xb2, 0x18, 0xb1, 0xa1, 0xd9, 0x6a, 0x89, 0x7b, 0x62, 0x70, 0x4f,
		0x8c, 0x83, 0x1a, 0x08, 0xe4, 0x76, 0x27, 0x34, 0x0e, 0xc8, 0xed, 0x7c, 0x10, 0x0e, 0xf7, 0xc4,
		0x30, 0x74, 0x94, 0x64, 0x0e, 0x93, 0xd2, 0x71, 0xd2, 0x3b, 0x50, 0x6a, 0x47, 0x6a, 0xcd, 0xa1,
		0x5a, 0x73, 0xac, 0x56, 0x1c, 0x2c, 0x4d, 0xb4, 0x8a, 0xbe, 0xa8, 0x6f, 0xdd, 0xdf, 0xe8, 0x8b,
		0xea, 0xaa, 0x8b, 0xb6, 0xe7, 0xaa, 0x6d, 0xb9, 0x6c, 0xeb, 0xae, 0xdb, 0xba, 0x0b, 0xb7, 0xea,
		0xca, 0x69, 0x5c, 0x3a, 0x91, 0x6b, 0x4f, 0x9e, 0x24, 0xfa, 0xa2, 0x3a, 0xbf, 0x84, 0xb8, 0x27,
		0x06, 0xf4, 0x8d, 0x83, 0x61, 0xb0, 0x54, 0x88, 0x71, 0x4f, 0xcc, 0xeb, 0x96, 0x12, 0xf7, 0xc4,
		0xbc, 0x99, 0x74, 0xe3, 0x9e, 0x18, 0xe8, 0x21, 0xd0, 0x43, 0xa0, 0x87, 0x40, 0x0f, 0x81, 0x1e,
		0x02, 0x3d, 0x04, 0x7a, 0x08, 0xf4, 0x10, 0xe8, 0x21, 0x1b, 0xad, 0x87, 0x80, 0x5d, 0x20, 0x5c,
		0x7f, 0x4b, 0xb8, 0x8e, 0x7b, 0x62, 0xa8, 0x6c, 0x72, 0xa3, 0x8b, 0x0a, 0xdd, 0xbe, 0x27, 0xa6,
		0x8e, 0x7b, 0x62, 0xac, 0x68, 0x5a, 0xb8, 0x27, 0x86, 0x49, 0x40, 0x84, 0xe2, 0x47, 0xf7, 0x02,
		0x1a, 0x14, 0x3f, 0x5a, 0xd3, 0x9c, 0xd0, 0x6b, 0x20, 0xed, 0xc1, 0xd0, 0x6b, 0x80, 0x93, 0x16,
		0x87, 0x34, 0x49, 0x26, 0xb4, 0x36, 0xa4, 0x49, 0xdc, 0x11, 0x32, 0xd0, 0x6b, 0x20, 0x95, 0xa1,
		0xd0, 0x6b, 0x20, 0xcd, 0x41, 0xd1, 0x6b, 0x00, 0xbd, 0x06, 0x0c, 0x99, 0x14, 0x7a, 0x0d, 0xa0,
		0xd7, 0xc0, 0x6b, 0xc9, 0x3c, 0xd4, 0x6c, 0x82, 0x18, 0x7a, 0x93, 0xd5, 0x6c, 0x34, 0x74, 0x77,
		0xc5, 0x8c, 0x38, 0x9a, 0x0f, 0xdf, 0x86, 0xee, 0xf5, 0x0d, 0x69, 0xe8, 0x6e, 0x26, 0x6b, 0x61,
		0x34, 0x5b, 0x61, 0xbc, 0xa5, 0x7b, 0x11, 0x2d, 0xdd, 0xe9, 0x24, 0x20, 0xb4, 0x74, 0xcf, 0x20,
		0x94, 0x19, 0x6b, 0xe9, 0x6e, 0xba, 0x72, 0x95, 0xa8, 0x52, 0x95, 0x24, 0x63, 0x60, 0xf2, 0x26,
		0xf9, 0x86, 0xd9, 0x04, 0xf4, 0x0e, 0xba, 0xef, 0x58, 0x74, 0xf9, 0x54, 0xae, 0x9f, 0x1c, 0x02,
		0xc8, 0xa1, 0x80, 0x14, 0x12, 0xdc, 0x0c, 0x9e, 0x8d, 0xab, 0xf9, 0x84, 0x15, 0xb0, 0x86, 0x2b,
		0x5e, 0x11, 0x10, 0x67, 0x3a, 0x20, 0x36, 0x20, 0xa5, 0xa4, 0x18, 0x73, 0xbe, 0x63, 0x64, 0x21,
		0xa6, 0x2c, 0x83, 0x99, 0x45, 0x78, 0xa9, 0xc6, 0xf9, 0x29, 0xa8, 0x22, 0xe9, 0x18, 0xe7, 0xdb,
		0x4d, 0xe9, 0x6d, 0xbf, 0xe1, 0x8d, 0x46, 0x38, 0x62, 0x2b, 0x63, 0xa6, 0x92, 0x2c, 0x9d, 0x3f,
		0x7e, 0xac, 0x6f, 0xfc, 0xad, 0xc7, 0x32, 0xd6, 0x35, 0xad, 0xd3, 0x89, 0x9b, 0xbc, 0xaf, 0x52,
		0x1d, 0xf5, 0xc4, 0x88, 0x71, 0xa4, 0x94, 0xb7, 0xf1, 0xbe, 0x06, 0x77, 0x4f, 0x7e, 0x63, 0xe1,
		0x63, 0xa9, 0x54, 0xa9, 0x96, 0x4a, 0x3b, 0xd5, 0xdd, 0xea, 0xce, 0x5e, 0xb9, 0x5c, 0xa8, 0x14,
		0x52, 0xc8, 0x4e, 0x79, 0xa7, 0x51, 0x47, 0x44, 0xa2, 0x73, 0x30, 0x7a, 0xc0, 0x6a, 0xd0, 0xeb,
		0xa5, 0xf9, 0x2b, 0xbf, 0xc5, 0x22, 0x4a, 0x25, 0x91, 0xf4, 0x56, 0xfb, 0x49, 0xd9, 0x79, 0xd9,
		0x74, 0x5a, 0x29, 0x78, 0xa8, 0x57, 0x79, 0xa6, 0xb7, 0x39, 0xa2, 0xd7, 0xbb, 0x8f, 0xd7, 0x7d,
		0xf2, 0x95, 0x06, 0x93, 0x96, 0xa1, 0x90, 0x1b, 0xc8, 0xeb, 0x56, 0x67, 0xfd, 0x67, 0xfb, 0x8a,
		0xe7, 0xea, 0x45, 0xb2, 0xf5, 0xea, 0x87, 0x99, 0x44, 0x12, 0xa3, 0x5f, 0xf2, 0xca, 0x35, 0x7d,
		0x9b, 0x76, 0xfd, 0x66, 0x8d, 0x3a, 0x0d, 0x81, 0xe2, 0xa9, 0x00, 0x11, 0xc9, 0xd6, 0x1b, 0x45,
		0x88, 0xb4, 0x44, 0x86, 0xd4, 0x45, 0x84, 0xd4, 0x45, 0x82, 0xe7, 0x22, 0xc0, 0xec, 0xd9, 0x39,
		0xe2, 0x8d, 0xde, 0xaa, 0xe9, 0x7a, 0x41, 0x57, 0xfa, 0x71, 0xd0, 0x95, 0x6f, 0xaf, 0x02, 0x4f,
		0x2c, 0xf0, 0xf1, 0x57, 0xbe, 0x95, 0xd3, 0xa5, 0x92, 0x52, 0x4a, 0x2d, 0x85, 0x94, 0xa6, 0x8e,
		0x98, 0xee, 0x76, 0x35, 0xa5, 0x0d, 0x1a, 0xd3, 0x00, 0x8d, 0x69, 0x7d, 0xa9, 0x6f, 0x67, 0x1e,
		0xd1, 0x4d, 0x5a, 0xa9, 0x9b, 0x64, 0x6f, 0xa6, 0x67, 0x22, 0xcf, 0x77, 0x7d, 0x5a, 0x16, 0x92,
		0x6e, 0x3e, 0x39, 0xf5, 0x24, 0x83, 0x89, 0xa4, 0x82, 0x19, 0xa7, 0x60, 0xca, 0x39, 0x18, 0x77,
		0x12, 0xc6, 0x9d, 0x85, 0x71, 0xa7, 0xc1, 0x53, 0xa7, 0x4b, 0x3b, 0x0f, 0x9c, 0x6c, 0x7d, 0x7f,
		0x1a, 0x2f, 0x1a, 0x2a, 0x5b, 0x99, 0x1f, 0xc6, 0x4c, 0xf9, 0xca, 0x8e, 0xa9, 0xf2, 0x95, 0x1d,
		0x37, 0xcb, 0x57, 0xd2, 0x77, 0x43, 0xa6, 0xdd, 0x11, 0x99, 0x5b, 0x22, 0x73, 0x4f, 0x64, 0x6e,
		0x2a, 0x5d, 0x77, 0x95, 0xb2, 0xdb, 0x4a, 0x9e, 0x82, 0xb1, 0xdc, 0xe4, 0xe3, 0x0d, 0x47, 0x22,
		0xe8, 0x46, 0xa2, 0x6b, 0xc2, 0xe8, 0x67, 0xac, 0xc6, 0xc0, 0x59, 0x22, 0xef, 0x6c, 0xaa, 0x25,
		0x7d, 0xf8, 0x30, 0xc9, 0x5a, 0xe5, 0xe7, 0x1d, 0xe6, 0x06, 0xd4, 0x4d, 0xca, 0xfe, 0x6d, 0xc9,
		0x8f, 0x23, 0x2d, 0xfc, 0x7e, 0xd8, 0x93, 0xed, 0x7b, 0x73, 0x58, 0xb4, 0x30, 0x92, 0x63, 0xd5,
		0x94, 0x80, 0x23, 0xc0, 0x11, 0xe0, 0x88, 0x23, 0x9b, 0x4e, 0x7e, 0x71, 0x6f, 0xf2, 0x4c, 0x09,
		0x2e, 0xf4, 0x9b, 0x0e, 0x84, 0xbb, 0xfb, 0xa8, 0x5d, 0x1b, 0xad, 0x8b, 0xa3, 0x72, 0x75, 0xe4,
		0x2e, 0x8f, 0xdc, 0xf5, 0x91, 0xbb, 0x40, 0x33, 0xae, 0xd0, 0x90, 0x4b, 0x34, 0xee, 0x1a, 0x93,
		0x01, 0xa2, 0x70, 0xa0, 0x05, 0x61, 0xff, 0x9a, 0xe9, 0x78, 0xb8, 0xc3, 0x8f, 0x9b, 0x03, 0xb5,
		0xe3, 0x48, 0xa9, 0x1d, 0xaa, 0x35, 0xc7, 0x6a, 0xcd, 0xc1, 0x5a, 0x73, 0xb4, 0x66, 0x1d, 0xae,
		0x61, 0xc7, 0x4b, 0xe6, 0x80, 0xe7, 0x1d, 0x31, 0x7d, 0xe7, 0xfa, 0xc9, 0xb0, 0xb4, 0x7d, 0xeb,
		0x0b, 0xe8, 0x5b, 0xef, 0xb8, 0xbb, 0xb6, 0xe5, 0xb6, 0xad, 0xbb, 0x6f, 0xeb, 0x6e, 0xdc, 0xba,
		0x3b, 0xa7, 0x71, 0xeb, 0x44, 0xee, 0x9d, 0xdc, 0xcd, 0x27, 0x03, 0xb6, 0xc3, 0x5e, 0x18, 0xd1,
		0xef, 0x9b, 0xc7, 0xab, 0xb4, 0x47, 0xc3, 0x13, 0x9b, 0x2c, 0xed, 0xb5, 0x25, 0xd6, 0x60, 0xc0,
		0x26, 0x1c, 0xf0, 0x80, 0x05, 0xdb, 0xf0, 0xc0, 0x06, 0x26, 0xd8, 0xc0, 0x05, 0x1b, 0xd8, 0xa0,
		0x85, 0x0f, 0x62, 0x18, 0x49, 0x9e, 0x32, 0xf9, 0x75, 0x28, 0x0b, 0xfb, 0xde, 0x5c, 0x02, 0xf6,
		0xc5, 0x2c, 0xbf, 0x6a, 0x61, 0xec, 0x85, 0x04, 0xee, 0x04, 0xe8, 0xde, 0x65, 0xd3, 0xb4, 0x29,
		0x5b, 0x05, 0x0a, 0xd5, 0xe9, 0x87, 0x72, 0xec, 0x38, 0x2c, 0x71, 0x96, 0x64, 0x06, 0xa0, 0x2d,
		0xa0, 0x2d, 0xa0, 0x2d, 0xa0, 0x2d, 0xa0, 0x2d, 0xa0, 0x2d, 0x19, 0xa5, 0x2d, 0x09, 0xd6, 0x81,
		0xb9, 0xbc, 0xf9, 0xe1, 0xf6, 0x03, 0x7d, 0xed, 0xcb, 0x8e, 0x3d, 0xe2, 0x32, 0x9b, 0x00, 0x78,
		0x0b, 0x78, 0x0b, 0x78, 0x0b, 0x78, 0x0b, 0x78, 0x0b, 0x78, 0x4b, 0x46, 0x79, 0xcb, 0x0c, 0xea,
		0x40, 0x5b, 0xde, 0xfc, 0x6c, 0xcd, 0xde, 0xbb, 0xf8, 0x8f, 0x16, 0x6d, 0xf2, 0x3e, 0xc6, 0x7f,
		0xb4, 0x65, 0x50, 0x16, 0x50, 0x16, 0x50, 0x16, 0x50, 0x96, 0xec, 0x52, 0x16, 0xea, 0x82, 0x83,
		0x64, 0xe0, 0x40, 0xeb, 0xc8, 0x97, 0xaa, 0x23, 0xee, 0xec, 0x6d, 0xba, 0xe4, 0x38, 0xf2, 0xe3,
		0x5c, 0x2c, 0x19, 0xbb, 0x9d, 0x18, 0xd9, 0x3a, 0xf0, 0x70, 0x00, 0x20, 0x5e, 0x40, 0xc4, 0x05,
		0x90, 0xd8, 0x01, 0x13, 0x3b, 0x80, 0x62, 0x07, 0x54, 0x76, 0x00, 0xcb, 0x12, 0x70, 0xd9, 0x8f,
		0xb9, 0x19, 0xc5, 0xde, 0x1c, 0x62, 0xf0, 0x65, 0xb1, 0xf8, 0xd2, 0xff, 0xc6, 0x60, 0x1b, 0x0b,
		0x1d, 0x27, 0x5f, 0x4d, 0x63, 0xf6, 0x09, 0x00, 0xbf, 0xdb, 0x8c, 0x2d, 0x63, 0x61, 0xbb, 0x58,
		0xaa, 0xf5, 0x5c, 0xd8, 0x27, 0x36, 0x6a, 0x3e, 0x41, 0xb4, 0x40, 0xb4, 0x40, 0xb4, 0x40, 0xb4,
		0x40, 0xb4, 0x32, 0x40, 0xb4, 0xc8, 0xae, 0x0b, 0xff, 0x27, 0x14, 0xb1, 0x49, 0xb3, 0x68, 0xaf,
		0x17, 0x5f, 0xf5, 0xb2, 0xeb, 0x33, 0x73, 0xb6, 0xae, 0x23, 0x5f, 0x39, 0x19, 0x4b, 0xd7, 0x94,
		0xaf, 0x9c, 0x8f, 0xed, 0x2b, 0xa6, 0x57, 0xef, 0x65, 0x5b, 0x57, 0x4f, 0x33, 0x73, 0xab, 0xf3,
		0xa6, 0x1c, 0xdc, 0xf1, 0x33, 0x65, 0x5b, 0xd7, 0xa3, 0xc3, 0xa6, 0x1d, 0x25, 0x28, 0xf6, 0x47,
		0x6f, 0x40, 0x44, 0x30, 0x28, 0x22, 0xdc, 0xdc, 0x0c, 0x94, 0xd4, 0xf7, 0x5c, 0x92, 0x37, 0xcf,
		0x27, 0x04, 0x61, 0x01, 0xc2, 0x02, 0x84, 0x05, 0x08, 0x0b, 0x10, 0x16, 0x20, 0x2c, 0xac, 0xe9,
		0x37, 0x90, 0xc1, 0xc9, 0xbd, 0x24, 0x83, 0x33, 0x43, 0x5c, 0x29, 0xe2, 0xe4, 0xeb, 0x7b, 0x24,
		0x71, 0x68, 0x16, 0xc7, 0xda, 0xf9, 0xd7, 0x85, 0xdd, 0x62, 0xe9, 0x1c, 0x2c, 0x18, 0x17, 0x18,
		0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x57, 0x06, 0x18, 0x97, 0xec, 0xfb, 0x41, 0xa7, 0x13, 0x89,
		0x38, 0xe6, 0x40, 0xba, 0xf6, 0x2c, 0xce, 0x61, 0xba, 0x26, 0x1b, 0x9f, 0xce, 0x99, 0xbb, 0x96,
		0xc1, 0xbe, 0x6d, 0x2c, 0xd8, 0xc8, 0x47, 0x06, 0x73, 0x39, 0x0b, 0xb4, 0x16, 0x91, 0xb2, 0x6e,
		0x2e, 0xc9, 0x84, 0xb6, 0x7e, 0xec, 0xf8, 0x7b, 0x8d, 0x87, 0x1f, 0x05, 0x7f, 0xaf, 0x31, 0xf9,
		0xb2, 0x30, 0xfe, 0xe7, 0x77, 0x71, 0xf8, 0x50, 0xfc, 0xb1, 0xe3, 0x97, 0xa6, 0xef, 0x16, 0xcb,
		0x3f, 0x76, 0xfc, 0x72, 0x63, 0x7b, 0xeb, 0xaf, 0xbf, 0x3e, 0xac, 0xfb, 0x99, 0xed, 0xdf, 0xbb,
		0x43, 0xcf, 0xfa, 0x9f, 0xdb, 0xe0, 0xb0, 0xfc, 0xa7, 0x17, 0xf5, 0x7f, 0xb3, 0xb3, 0x81, 0xff,
		0x6e, 0x51, 0x59, 0xc1, 0xf6, 0xbf, 0x18, 0xd8, 0x81, 0xdd, 0xd4, 0xca, 0x7b, 0xc0, 0x44, 0x02,
		0x13, 0x15, 0xc0, 0x84, 0x2b, 0x30, 0x31, 0xde, 0xed, 0x81, 0xdf, 0xad, 0xf9, 0x9f, 0x1b, 0xbf,
		0x0b, 0xef, 0x4b, 0xc3, 0xfd, 0xed, 0xdf, 0xd5, 0xe1, 0xf3, 0x37, 0x1f, 0x96, 0xfd, 0x58, 0xe1,
		0x7d, 0x75, 0xb8, 0xbf, 0xe2, 0x3b, 0x95, 0xe1, 0xfe, 0x0b, 0x7f, 0x47, 0x79, 0xb8, 0xb5, 0xf0,
		0xa3, 0xa3, 0xf7, 0x8b, 0xab, 0x3e, 0x50, 0x5a, 0xf1, 0x81, 0xdd, 0x55, 0x1f, 0xd8, 0x5d, 0xf1,
		0x81, 0x95, 0x53, 0x2a, 0xae, 0xf8, 0x40, 0x79, 0xf8, 0xb0, 0xf0, 0xf3, 0x5b, 0xcb, 0x7f, 0xb4,
		0x32, 0xdc, 0x7e, 0x58, 0xf5, 0xbd, 0xea, 0xf0, 0x61, 0x7f, 0x7b, 0x1b, 0xc0, 0xc9, 0x1e, 0x38,
		0xb1, 0x2d, 0xe8, 0xb7, 0x05, 0x88, 0x04, 0x6a, 0x34, 0xb2, 0x47, 0xd5, 0x3c, 0x71, 0xa7, 0x7d,
		0x76, 0x75, 0x1a, 0xcb, 0x26, 0x85, 0xcc, 0x81, 0x1d, 0x1c, 0x44, 0xe6, 0xe0, 0xd9, 0x6c, 0x90,
		0x39, 0x58, 0x31, 0x21, 0x64, 0x0e, 0x58, 0x22, 0x28, 0x32, 0x07, 0xa8, 0xd5, 0xc8, 0xbd, 0xa4,
		0x56, 0xe3, 0x29, 0xea, 0x4a, 0x11, 0xcf, 0xfd, 0x7f, 0xd4, 0x6c, 0x10, 0x2d, 0x92, 0x54, 0xb7,
		0x41, 0x4f, 0x76, 0xfc, 0x48, 0x04, 0x71, 0xa8, 0xec, 0x53, 0xb1, 0x67, 0xf3, 0x01, 0x0b, 0x03,
		0x0b, 0x03, 0x0b, 0x03, 0x0b, 0x03, 0x0b, 0x03, 0x0b, 0x5b, 0x17, 0x49, 0x3a, 0x42, 0x69, 0xa9,
		0xef, 0x99, 0x30, 0x31, 0x8b, 0x47, 0xd4, 0xbc, 0xfa, 0xf4, 0x51, 0x1c, 0x04, 0x31, 0x03, 0x17,
		0x36, 0x5b, 0xa0, 0xfa, 0xc9, 0xf7, 0xda, 0x71, 0xfd, 0xb0, 0x79, 0x7e, 0xfa, 0xed, 0xf2, 0xa8,
		0x79, 0x7e, 0x54, 0xbb, 0x38, 0x3d, 0xb1, 0xed, 0xcd, 0xc6, 0x27, 0x0b, 0x63, 0x16, 0x02, 0x3c,
		0x93, 0xb3, 0x96, 0xcf, 0x57, 0xab, 0x76, 0xd1, 0x3c, 0x3e, 0x3d, 0x3d, 0xf3, 0x70, 0x2a, 0x96,
		0xed, 0x12, 0x7d, 0x3a, 0xfe, 0x76, 0x71, 0x79, 0x74, 0x8e, 0x75, 0xe2, 0xbe, 0x4e, 0xa7, 0x27,
		0x9f, 0x8f, 0x0e, 0xb1, 0x42, 0x7c, 0x57, 0xe8, 0xf4, 0xbc, 0xfe, 0xa5, 0x7e, 0x52, 0xbb, 0x3c,
		0x3d, 0xf7, 0x36, 0xfc, 0xc4, 0x74, 0x63, 0xd3, 0xf8, 0xf3, 0x46, 0xa8, 0x3f, 0xbd, 0x20, 0xd6,
		0xfe, 0x4d, 0xd8, 0x91, 0x5d, 0x29, 0x3a, 0xf6, 0xc5, 0x9f, 0xf9, 0xe9, 0x40, 0xfb, 0x81, 0xf6,
		0x03, 0xed, 0x07, 0xda, 0x0f, 0xb4, 0x1f, 0x68, 0x3f, 0x6b, 0xfa, 0x0d, 0x2d, 0x6f, 0x84, 0x96,
		0xed, 0x9f, 0x71, 0xa5, 0xc4, 0x40, 0xfb, 0xb1, 0x58, 0x70, 0xeb, 0x7d, 0x53, 0x93, 0x46, 0x44,
		0x9e, 0x0a, 0x54, 0x18, 0x8b, 0x76, 0xa8, 0x3a, 0x56, 0xcf, 0x33, 0xa1, 0x37, 0xdc, 0xf4, 0x41,
		0xa0, 0x37, 0xdc, 0x1f, 0xe6, 0x83, 0x3e, 0x5a, 0x0e, 0xc5, 0xee, 0x3c, 0x7b, 0xc3, 0x15, 0x3e,
		0x96, 0x4a, 0x95, 0x6a, 0xa9, 0xb4, 0x53, 0xdd, 0xad, 0xee, 0xec, 0x95, 0xcb, 0x85, 0x4a, 0x01,
		0x5d, 0xe2, 0x9c, 0xb3, 0x6e, 0x54, 0x20, 0x43, 0xf3, 0x48, 0xd9, 0xc8, 0x6d, 0xdd, 0x75, 0xbb,
		0x40, 0x52, 0xed, 0xdc, 0x79, 0x9b, 0x4c, 0xe3, 0x50, 0x74, 0x83, 0x41, 0x4f, 0x5b, 0xe5, 0x62,
		0xde, 0x8e, 0x9d, 0xd8, 0xac, 0x01, 0x6d, 0xc9, 0xca, 0x04, 0xa0, 0x2d, 0x3d, 0x9f, 0x0d, 0xb4,
		0xa5, 0x15, 0x13, 0x82, 0xb6, 0xc4, 0x92, 0x9d, 0x40, 0x5b, 0x42, 0x8b, 0x7f, 0xc8, 0x38, 0x90,
		0x71, 0x10, 0xe8, 0x42, 0xc6, 0xa1, 0x30, 0x65, 0xb4, 0xf8, 0x87, 0x78, 0x03, 0xf1, 0x06, 0xe2,
		0xcd, 0xd4, 0xc8, 0xa7, 0x87, 0x83, 0xc2, 0x81, 0x16, 0xf6, 0x05, 0x9c, 0xa7, 0x93, 0x81, 0xa0,
		0x00, 0x41, 0x01, 0x82, 0x02, 0x04, 0x05, 0x08, 0x0a, 0x10, 0x14, 0xd6, 0xf4, 0x1b, 0xad, 0x30,
		0xec, 0x89, 0x40, 0x71, 0x38, 0xa4, 0x54, 0xd8, 0x14, 0xea, 0xf2, 0x2e, 0xc3, 0x26, 0xee, 0xd5,
		0x94, 0x0a, 0x75, 0x30, 0x0a, 0x52, 0xac, 0x18, 0xb8, 0x17, 0xb7, 0xaf, 0xc5, 0x4d, 0xd0, 0x9f,
		0x1e, 0xff, 0xcf, 0x87, 0x7d, 0xa1, 0xda, 0x63, 0xa2, 0xe0, 0x2b, 0xa1, 0x7f, 0x85, 0xd1, 0x4f,
		0x5f, 0xaa, 0x58, 0x07, 0xaa, 0x2d, 0xf2, 0xcf, 0xdf, 0x88, 0x17, 0xde, 0xc9, 0xf7, 0xa3, 0x50,
		0x87, 0xed, 0xb0, 0x17, 0x27, 0x5f, 0xe5, 0x5b, 0x57, 0xfd, 0x7c, 0x24, 0x5b, 0xf9, 0xa0, 0x2b,
		0xfd, 0x38, 0xe8, 0xca, 0x38, 0xf9, 0x2a, 0x3f, 0xee, 0xcd, 0x1b, 0x47, 0x5a, 0xf8, 0xfd, 0xb0,
		0x27, 0xdb, 0xf7, 0xf9, 0xde, 0xc4, 0xb5, 0xe6, 0xc7, 0x34, 0x2d, 0x9e, 0xfc, 0x33, 0x69, 0x2e,
		0x40, 0xeb, 0x69, 0xe9, 0x4c, 0x8e, 0xd0, 0xdc, 0xbc, 0x81, 0xfa, 0xa9, 0xc2, 0x5f, 0xca, 0x0f,
		0xb4, 0x8e, 0x64, 0x6b, 0xf4, 0x84, 0xc9, 0x4d, 0xee, 0x51, 0x98, 0x5d, 0x9c, 0x0b, 0xf1, 0xc6,
		0x9b, 0xb9, 0x51, 0xe2, 0x61, 0x6d, 0xb1, 0x70, 0x9b, 0xec, 0x9b, 0x07, 0xeb, 0xb6, 0xcd, 0xb6,
		0xd9, 0xb0, 0x6c, 0x36, 0xec, 0x9a, 0x0d, 0xab, 0xce, 0x36, 0xc5, 0x38, 0x94, 0x91, 0x9d, 0x6d,
		0xbf, 0xe0, 0xe4, 0xed, 0xcb, 0x40, 0x8b, 0x53, 0xb2, 0x2b, 0x06, 0x15, 0x20, 0x06, 0x41, 0x0c,
		0x82, 0x18, 0x04, 0x31, 0x08, 0x62, 0x10, 0x77, 0x38, 0x4b, 0x26, 0x30, 0xc2, 0x0e, 0x5f, 0xdb,
		0x96, 0xa4, 0xe6, 0x3c, 0xd8, 0xe3, 0x94, 0x2c, 0x6f, 0x0d, 0xbb, 0x39, 0x0e, 0x36, 0xf0, 0xc6,
		0x09, 0xe6, 0x78, 0xc2, 0x1d, 0x37, 0xd8, 0x63, 0x0b, 0x7f, 0x6c, 0x61, 0x90, 0x2d, 0x1c, 0xda,
		0x85, 0x45, 0xcb, 0xf0, 0x98, 0xac, 0xca, 0x25, 0x07, 0x80, 0xca, 0xf1, 0x6a, 0xb5, 0xbb, 0x10,
		0x7d, 0x55, 0x79, 0x5c, 0xaf, 0x33, 0x6b, 0xbd, 0x3b, 0xe9, 0xa3, 0xfb, 0x08, 0xe6, 0x1b, 0x5a,
		0x94, 0x63, 0x71, 0xeb, 0x78, 0x93, 0x6c, 0x03, 0x1b, 0x62, 0x37, 0x99, 0x0e, 0x0f, 0x52, 0x57,
		0x00, 0xa9, 0x03, 0xa9, 0x03, 0xa9, 0x03, 0xa9, 0x03, 0xa9, 0xb3, 0xb5, 0x2a, 0xb6, 0xb5, 0x8f,
		0x79, 0x0d, 0xa4, 0x27, 0x18, 0x9d, 0xa7, 0x98, 0x93, 0x42, 0x46, 0x33, 0x63, 0xb2, 0x91, 0x78,
		0x28, 0x22, 0xec, 0x40, 0x94, 0x23, 0x98, 0xf2, 0x06, 0x55, 0xae, 0xe0, 0xca, 0x1e, 0x64, 0xd9,
		0x83, 0x2d, 0x7b, 0xd0, 0xe5, 0x01, 0xbe, 0x4c, 0x40, 0x98, 0x9f, 0xc2, 0xb2, 0xe0, 0xb7, 0x06,
		0x52, 0xe9, 0x42, 0x85, 0x93, 0xcf, 0x9a, 0xa2, 0x60, 0x85, 0xd1, 0x94, 0x78, 0x1c, 0x8b, 0x7d,
		0xfe, 0xe2, 0xe5, 0xd3, 0x73, 0xdc, 0x8e, 0xcd, 0x2e, 0x4c, 0x8e, 0xd9, 0x31, 0xda, 0x85, 0xf9,
		0x71, 0x3d, 0x82, 0xb8, 0xe8, 0x3b, 0xb8, 0x1d, 0x49, 0x64, 0xea, 0xf6, 0xe7, 0xb7, 0x46, 0x70,
		0xc7, 0x7f, 0x6b, 0x54, 0xca, 0xe5, 0xdd, 0x32, 0xb6, 0x47, 0xd6, 0xb7, 0xc7, 0x3b, 0xcc, 0x66,
		0xd9, 0xab, 0x01, 0xce, 0xfa, 0xc4, 0x8c, 0xc5, 0x9d, 0x8e, 0x02, 0x7f, 0xa0, 0x62, 0x1d, 0xb4,
		0x7a, 0xcc, 0xd8, 0x6b, 0x24, 0xba, 0x22, 0x12, 0xaa, 0x0d, 0x52, 0xb6, 0x06, 0xd5, 0x3f, 0xff,
		0xfc, 0x29, 0x57, 0x2a, 0x56, 0x0b, 0x39, 0x3f, 0x57, 0xcb, 0x1d, 0x84, 0x51, 0x47, 0x44, 0xb9,
		0x2f, 0x81, 0x16, 0xbf, 0x82, 0xfb, 0xdc, 0xd9, 0xf4, 0x0c, 0x4e, 0xae, 0x94, 0xdb, 0x3a, 0xf8,
		0x72, 0xe6, 0x97, 0xb6, 0x3d, 0x86, 0x18, 0xca, 0x54, 0xce, 0x58, 0x26, 0x6b, 0x3c, 0x5a, 0x28,
		0x53, 0x94, 0xe2, 0xae, 0x70, 0x2c, 0x55, 0x3a, 0xd6, 0x34, 0x61, 0x20, 0x2f, 0x90, 0xd7, 0xa9,
		0xe7, 0xc1, 0xa1, 0x5f, 0x10, 0x9f, 0x9a, 0xd5, 0x05, 0x04, 0xe3, 0x52, 0xbb, 0xfa, 0xe8, 0xf0,
		0x91, 0xb1, 0xf9, 0xe3, 0x84, 0x90, 0xb1, 0xc9, 0x08, 0xc5, 0x41, 0xc6, 0x26, 0x55, 0x1e, 0x83,
		0x8c, 0x0d, 0xf7, 0xe8, 0x97, 0x77, 0xc6, 0xe6, 0x23, 0xc3, 0x84, 0x4d, 0x19, 0x09, 0x1b, 0xf7,
		0xb4, 0x01, 0x24, 0x6c, 0xde, 0x30, 0x3f, 0x28, 0xd2, 0x19, 0xf3, 0xfa, 0xf3, 0x5b, 0xc3, 0x85,
		0x84, 0x4d, 0xb1, 0x8c, 0x74, 0x4d, 0xe6, 0x37, 0x07, 0x44, 0xa3, 0xa5, 0x2f, 0xa4, 0x6b, 0x9e,
		0x9a, 0x31, 0xd2, 0x35, 0x19, 0xa1, 0x64, 0x48, 0xd7, 0x58, 0xd0, 0x34, 0x90, 0xae, 0x31, 0x21,
		0x73, 0x20, 0x5d, 0x03, 0xe4, 0xcd, 0xf2, 0xf3, 0x60, 0x93, 0xae, 0xb9, 0x9d, 0x86, 0x03, 0x1c,
		0xf3, 0x35, 0x93, 0xb9, 0x21, 0x61, 0xb3, 0x6c, 0x3a, 0x48, 0xd8, 0xac, 0x61, 0x4d, 0x48, 0xd8,
		0xbc, 0x92, 0xdc, 0x20, 0x61, 0xf3, 0x66, 0x26, 0x83, 0x84, 0x0d, 0xf7, 0xf8, 0x97, 0x6f, 0xc2,
		0xa6, 0x25, 0x55, 0x10, 0xdd, 0x33, 0xcc, 0xd8, 0xec, 0x31, 0x9a, 0xd2, 0xb1, 0x50, 0x57, 0xe3,
		0xe6, 0x26, 0xd0, 0x07, 0xfe, 0xe1, 0x49, 0x39, 0x91, 0xb2, 0x29, 0x40, 0x95, 0x7e, 0xa3, 0xf3,
		0x40, 0xca, 0xe6, 0x15, 0x5b, 0x03, 0x67, 0x6c, 0xb0, 0x3d, 0x40, 0xce, 0x38, 0xcf, 0x06, 0x49,
		0x9b, 0xa7, 0x66, 0x8c, 0xa4, 0x4d, 0x46, 0x48, 0x19, 0x92, 0x36, 0x16, 0x74, 0x0d, 0x24, 0x6d,
		0x4c, 0x48, 0x1d, 0x48, 0xda, 0x00, 0x79, 0xb3, 0xfc, 0x3c, 0x38, 0x24, 0x6d, 0xc4, 0x9d, 0x16,
		0xaa, 0x23, 0x3a, 0xfc, 0x52, 0x36, 0xc9, 0xcc, 0x90, 0xb0, 0x59, 0x36, 0x1d, 0x24, 0x6c, 0xd6,
		0xb0, 0x25, 0x24, 0x6c, 0x5e, 0x49, 0x6c, 0x90, 0xb0, 0x79, 0x33, 0x8b, 0x41, 0xc2, 0x86, 0x7b,
		0xec, 0xcb, 0x38, 0x61, 0x63, 0xfd, 0xe6, 0xde, 0x55, 0x30, 0x68, 0xe9, 0x26, 0x5f, 0xc8, 0x27,
		0x90, 0x4f, 0x20, 0x9f, 0x40, 0x3e, 0x01, 0xe1, 0x80, 0x7c, 0x02, 0xf9, 0x04, 0xf2, 0x89, 0xed,
		0xfd, 0x16, 0xf6, 0xb5, 0x0c, 0x55, 0xd0, 0xe3, 0x27, 0x9f, 0x24, 0x33, 0x83, 0x7c, 0x02, 0xf9,
		0x04, 0xf2, 0x09, 0xe4, 0x13, 0xc8, 0x27, 0x90, 0x4f, 0x20, 0x9f, 0x40, 0x3e, 0x81, 0x7c, 0x02,
		0xf9, 0x04, 0xf2, 0x09, 0xe4, 0x13, 0x10, 0x0e, 0xc8, 0x27, 0x90, 0x4f, 0x20, 0x9f, 0xd8, 0xdc,
		0x6f, 0xfd, 0x20, 0xd2, 0x92, 0xa3, 0x7a, 0x32, 0x9b, 0x18, 0xc4, 0x13, 0x88, 0x27, 0x10, 0x4f,
		0x20, 0x9e, 0x40, 0x3c, 0x81, 0x78, 0x02, 0xf1, 0x04, 0xe2, 0x09, 0xc4, 0x13, 0x88, 0x27, 0x10,
		0x4f, 0x20, 0x9e, 0x80, 0x70, 0x40, 0x3c, 0x81, 0x78, 0x02, 0xf1, 0xc4, 0xe6, 0x7e, 0xd3, 0x51,
		0xa0, 0x62, 0x39, 0x3d, 0x7b, 0xce, 0x4c, 0x3f, 0x79, 0x32, 0x37, 0x48, 0x28, 0x90, 0x50, 0x20,
		0xa1, 0x40, 0x42, 0x81, 0x84, 0x02, 0x09, 0x05, 0x12, 0x0a, 0x24, 0x14, 0x48, 0x28, 0x90, 0x50,
		0x20, 0xa1, 0x40, 0x42, 0x01, 0xe1, 0x80, 0x84, 0x02, 0x09, 0x65, 0x83, 0x25, 0x94, 0x77, 0x1b,
		0xcc, 0x3c, 0xbc, 0x9a, 0x52, 0xa1, 0x0e, 0xb4, 0x0c, 0x79, 0xb4, 0x50, 0xf5, 0xe2, 0xf6, 0xb5,
		0xb8, 0x09, 0xfa, 0xc1, 0xb8, 0xf3, 0xad, 0x97, 0x0f, 0xfb, 0x42, 0xb5, 0xc7, 0x12, 0x85, 0xaf,
		0x84, 0xfe, 0x15, 0x46, 0x3f, 0x7d, 0x39, 0x62, 0x47, 0xaa, 0x2d, 0xf2, 0xcf, 0xdf, 0x88, 0x17,
		0xde, 0xc9, 0xf7, 0xa7, 0xfe, 0x29, 0x4e, 0xbe, 0xca, 0xb7, 0xae, 0xfa, 0xf9, 0x48, 0xb6, 0xf2,
		0x41, 0x57, 0xfa, 0x71, 0xd0, 0x95, 0x71, 0xf2, 0x55, 0x5e, 0xf6, 0x6f, 0x4b, 0x7e, 0x1c, 0x69,
		0xe1, 0xf7, 0xc3, 0x9e, 0x6c, 0xdf, 0xe7, 0x7b, 0x93, 0xa0, 0x2b, 0x1f, 0x85, 0x03, 0x2d, 0xe2,
		0xc9, 0x3f, 0xf9, 0x81, 0xfa, 0xa9, 0xc2, 0x5f, 0xca, 0x0f, 0xb4, 0x8e, 0x64, 0x6b, 0xfc, 0x8d,
		0x85, 0xb7, 0xf2, 0xb1, 0x0e, 0xb4, 0xb0, 0xeb, 0x0b, 0xed, 0xd9, 0xb5, 0x9d, 0x91, 0x2d, 0xed,
		0xa4, 0x11, 0x01, 0xe1, 0x70, 0x13, 0xb7, 0x77, 0x2c, 0x63, 0x5d, 0xd3, 0x3a, 0xb2, 0xba, 0x8f,
		0xbd, 0xaf, 0x52, 0x1d, 0xf5, 0xc4, 0x88, 0x3b, 0x58, 0x6e, 0x96, 0xea, 0x7d, 0x0d, 0xee, 0x9e,
		0xcc, 0xa4, 0xf0, 0xb1, 0x54, 0xaa, 0x54, 0x4b, 0xa5, 0x9d, 0xea, 0x6e, 0x75, 0x67, 0xaf, 0x5c,
		0x2e, 0x54, 0x0a, 0x16, 0x5b, 0xce, 0x7a, 0xa7, 0x23, 0x1a, 0x25, 0x3a, 0x07, 0x23, 0xd3, 0x51,
		0x83, 0x5e, 0x8f, 0xc3, 0x54, 0xbe, 0xc5, 0x22, 0xb2, 0xda, 0x3d, 0xd6, 0xd6, 0x0e, 0x66, 0x82,
		0x81, 0x19, 0xc1, 0x3e, 0x8b, 0xc1, 0x97, 0x17, 0xeb, 0x68, 0xd0, 0xd6, 0x6a, 0x1a, 0x7c, 0x9f,
		0x4c, 0x1e, 0x49, 0x7d, 0xfa, 0x44, 0x9a, 0xb3, 0x68, 0xa5, 0x79, 0x70, 0xd5, 0x6f, 0x9e, 0xcb,
		0x56, 0xb3, 0xd6, 0x95, 0x17, 0x41, 0x57, 0x36, 0xeb, 0xfd, 0xdb, 0xd2, 0x45, 0xa4, 0xc5, 0xd9,
		0xf8, 0x4f, 0x6f, 0x1e, 0x87, 0xed, 0xd1, 0x77, 0xcf, 0x47, 0x7f, 0x72, 0xf3, 0xdb, 0xe4, 0xef,
		0xab, 0x25, 0x7f, 0xde, 0xbb, 0xcd, 0x80, 0x54, 0xda, 0x11, 0x89, 0xb7, 0xbe, 0xed, 0x2d, 0xef,
		0xe4, 0x56, 0xa7, 0xb5, 0x7c, 0x3a, 0xfb, 0xa3, 0x19, 0x89, 0xc8, 0xc2, 0x67, 0x74, 0x74, 0x64,
		0x5a, 0xbe, 0xec, 0xe4, 0x84, 0xea, 0xf4, 0x43, 0xa9, 0x74, 0xae, 0x1d, 0xf6, 0xc2, 0x88, 0xc8,
		0x37, 0xdb, 0xe1, 0xa2, 0xf6, 0xb8, 0x27, 0x2b, 0xae, 0x69, 0x91, 0x5b, 0x5a, 0xe4, 0x92, 0x54,
		0xdb, 0xcb, 0x12, 0x70, 0xf0, 0x07, 0x0c, 0x42, 0xda, 0x67, 0x80, 0xe6, 0xd1, 0x60, 0x9b, 0x79,
		0xa4, 0x31, 0x3b, 0x82, 0xe1, 0x4d, 0x46, 0xbd, 0xb9, 0x38, 0x6f, 0x2a, 0xb3, 0x06, 0x69, 0xce,
		0x4c, 0xcc, 0xfc, 0x66, 0x43, 0x86, 0x47, 0x65, 0x70, 0x2c, 0x0d, 0xcd, 0xa0, 0xc3, 0x4e, 0xd5,
		0x41, 0x9b, 0xd9, 0x09, 0xe9, 0xdb, 0xa9, 0x01, 0x1b, 0xf5, 0x94, 0x90, 0x57, 0xd7, 0xad, 0x30,
		0x8a, 0x8d, 0x99, 0x67, 0x52, 0xa9, 0xf0, 0x38, 0x94, 0xa1, 0xbd, 0x36, 0xab, 0xf8, 0x31, 0xf4,
		0xeb, 0x4d, 0x17, 0xb2, 0x52, 0x14, 0xa6, 0xd2, 0x16, 0x9a, 0x52, 0x95, 0x76, 0x90, 0x17, 0x82,
		0x92, 0xd7, 0x59, 0x90, 0x17, 0x6a, 0xba, 0x85, 0xb2, 0x87, 0xd2, 0xac, 0x10, 0x90, 0xf8, 0x2e,
		0xf3, 0xa6, 0xfc, 0xdc, 0x5b, 0x9a, 0xb6, 0x64, 0xb3, 0x4e, 0x93, 0xcc, 0x79, 0x52, 0x3a, 0x51,
		0x3b, 0xce, 0x94, 0xda, 0xa9, 0x5a, 0x73, 0xae, 0xd6, 0x9c, 0xac, 0x35, 0x67, 0x9b, 0x8d, 0xd8,
		0xda, 0xb4, 0x13, 0x4e, 0x06, 0x0a, 0x3a, 0x7f, 0x8f, 0xd7, 0x44, 0x2a, 0xbf, 0x1f, 0xc6, 0x9a,
		0x6e, 0x27, 0xcc, 0xf6, 0xfb, 0xf3, 0x09, 0x50, 0x09, 0xef, 0x24, 0xae, 0x9a, 0xdc, 0x65, 0xdb,
		0x70, 0xdd, 0x76, 0x5d, 0xb8, 0x2d, 0x57, 0x6e, 0xdd, 0xa5, 0x5b, 0x77, 0xed, 0xd6, 0x5d, 0x3c,
		0x8d, 0xab, 0x27, 0x72, 0xf9, 0xe4, 0xae, 0x3f, 0x19, 0x70, 0x2a, 0x61, 0x92, 0x6f, 0x9c, 0x99,
		0xbb, 0x98, 0x8e, 0x4f, 0x6c, 0xb4, 0xb4, 0x00, 0x60, 0x0d, 0x08, 0x6c, 0x02, 0x02, 0x0f, 0x60,
		0xb0, 0x0d, 0x10, 0x6c, 0x80, 0x82, 0x0d, 0x60, 0xb0, 0x01, 0x0e, 0x5a, 0x00, 0x21, 0x06, 0x12,
		0x6b, 0x80, 0x32, 0x0f, 0x2c, 0xf6, 0xf6, 0xdb, 0x1c, 0xbe, 0xd8, 0xda, 0x6b, 0x76, 0x60, 0xc6,
		0x3a, 0xdc, 0x70, 0x80, 0x1d, 0x5e, 0xf0, 0xc3, 0x05, 0x86, 0xd8, 0xc1, 0x11, 0x3b, 0x58, 0x62,
		0x07, 0x4f, 0x76, 0x60, 0xca, 0x12, 0x5c, 0x59, 0x87, 0xad, 0x64, 0x02, 0x93, 0x1a, 0x4c, 0xeb,
		0xfb, 0x74, 0xe6, 0xbd, 0x28, 0x4b, 0x42, 0xff, 0x09, 0xce, 0x2c, 0xb7, 0x1f, 0x62, 0xd3, 0x07,
		0x89, 0x53, 0xff, 0x23, 0x9e, 0x7d, 0x8f, 0xb8, 0x75, 0x24, 0x60, 0xdb, 0xe7, 0x88, 0x6d, 0xbb,
		0x01, 0xb6, 0x7d, 0x8d, 0x36, 0xfb, 0x28, 0x38, 0x9b, 0xfe, 0x45, 0x89, 0xdf, 0xe9, 0x89, 0xa0,
		0x1b, 0x89, 0x2e, 0x07, 0xa7, 0x33, 0x8b, 0xba, 0xaa, 0x0c, 0xe6, 0x72, 0x36, 0xad, 0x23, 0xfc,
		0xf0, 0x61, 0x72, 0xce, 0x3c, 0x3f, 0x01, 0xf2, 0x4d, 0x3d, 0x6d, 0x6e, 0x31, 0xf2, 0x9a, 0x9d,
		0xae, 0xe1, 0xc3, 0xe9, 0x92, 0x19, 0x81, 0xd6, 0x81, 0xd6, 0x81, 0xd6, 0x81, 0xd6, 0x81, 0xd6,
		0x81, 0xd6, 0x81, 0xd6, 0x39, 0x49, 0xeb, 0x12, 0x2c, 0x07, 0xb3, 0x23, 0x5f, 0x8c, 0xe9, 0xf9,
		0x69, 0x3e, 0xc4, 0x6e, 0x36, 0x21, 0xf0, 0x3a, 0xf0, 0x3a, 0xf0, 0x3a, 0xf0, 0x3a, 0xf0, 0x3a,
		0xf0, 0x3a, 0xf0, 0x3a, 0x27, 0x79, 0xdd, 0x0c, 0xca, 0x41, 0xeb, 0xc8, 0xd7, 0x62, 0xd2, 0x97,
		0x93, 0x0d, 0xa9, 0x9b, 0x4c, 0x87, 0x07, 0xa5, 0x2b, 0x80, 0xd2, 0x81, 0xd2, 0x81, 0xd2, 0x81,
		0xd2, 0x81, 0xd2, 0xd9, 0x5a, 0x15, 0xdb, 0x05, 0x4a, 0xc9, 0x44, 0xc6, 0xcd, 0x8c, 0xa5, 0xea,
		0x88, 0x3b, 0x7e, 0x57, 0xba, 0x3d, 0x99, 0x1b, 0xae, 0x74, 0xe3, 0x0c, 0xa4, 0x1c, 0x01, 0x95,
		0x37, 0xb0, 0x72, 0x05, 0x58, 0xf6, 0x40, 0xcb, 0x1e, 0x70, 0xd9, 0x03, 0x2f, 0x0f, 0x00, 0x66,
		0x02, 0xc4, 0xfc, 0x34, 0x16, 0xc6, 0x5a, 0x0b, 0x47, 0xcd, 0x65, 0x99, 0xf6, 0xf2, 0x87, 0xff,
		0xc6, 0x94, 0x22, 0x16, 0x3a, 0x4e, 0xbe, 0x9a, 0x2a, 0x35, 0x13, 0x9a, 0x81, 0x8b, 0x72, 0xb8,
		0x6c, 0x4a, 0xaf, 0x25, 0x62, 0xed, 0x4f, 0xfb, 0xe8, 0x31, 0xe3, 0xa5, 0x8f, 0x53, 0x03, 0x2d,
		0x05, 0x2d, 0x05, 0x2d, 0x05, 0x2d, 0x05, 0x2d, 0x05, 0x2d, 0xdd, 0x30, 0x5a, 0x8a, 0x9b, 0x86,
		0x41, 0xe3, 0x5e, 0xb0, 0x26, 0x3c, 0x0e, 0x42, 0x2e, 0x58, 0x2f, 0x87, 0x03, 0x91, 0xa0, 0x6f,
		0xa0, 0x6f, 0xa0, 0x6f, 0xa0, 0x6f, 0xa0, 0x6f, 0xa0, 0x6f, 0xe4, 0x7e, 0x6b, 0x20, 0x95, 0xde,
		0x2d, 0x32, 0x64, 0x6f, 0x9c, 0x34, 0xc5, 0xf3, 0x40, 0x5d, 0x8d, 0x9e, 0xd6, 0x0f, 0x56, 0x3e,
		0x80, 0xdf, 0xf5, 0xfc, 0xde, 0x57, 0xa9, 0xd8, 0x81, 0x4d, 0x32, 0xb9, 0xef, 0x41, 0x6f, 0x20,
		0xf8, 0xd0, 0x99, 0x85, 0xf9, 0x7d, 0x8e, 0x82, 0xb6, 0x96, 0xa1, 0x3a, 0x94, 0x57, 0xd2, 0xf6,
		0x5d, 0xba, 0x7f, 0xf6, 0x1d, 0xe2, 0x2a, 0xd0, 0xf2, 0x56, 0x58, 0xbd, 0x3a, 0xd6, 0x01, 0xb7,
		0x3f, 0xbf, 0x35, 0x82, 0x3b, 0xfe, 0x5b, 0xa3, 0x54, 0xdc, 0x2b, 0xed, 0x55, 0xaa, 0xc5, 0xbd,
		0x32, 0xf6, 0x48, 0xd6, 0xf7, 0xc8, 0x3b, 0xcc, 0x66, 0xd9, 0xab, 0x01, 0xd1, 0x88, 0x8b, 0x0f,
		0xf5, 0xda, 0xe1, 0xcd, 0xcd, 0x40, 0x49, 0x7d, 0xcf, 0xb5, 0x32, 0xed, 0xf9, 0x04, 0x21, 0x24,
		0x2d, 0x9b, 0x0e, 0x84, 0xa4, 0x35, 0x4c, 0x0a, 0x42, 0xd2, 0x5a, 0x96, 0x0e, 0x21, 0xe9, 0x8d,
		0x13, 0x84, 0x90, 0xe4, 0x50, 0x44, 0x81, 0xf2, 0xb4, 0x57, 0xc0, 0xa0, 0x83, 0xe5, 0x69, 0x33,
		0x5e, 0x21, 0x45, 0x9c, 0x7c, 0x7d, 0x8f, 0x0a, 0x35, 0x9e, 0x2c, 0x95, 0x4d, 0x4b, 0xb0, 0x85,
		0x3d, 0xc9, 0xa4, 0x35, 0x18, 0x78, 0x29, 0x78, 0x29, 0x78, 0x29, 0x78, 0x29, 0x78, 0x29, 0x78,
		0x29, 0xb9, 0xdf, 0x92, 0x7d, 0x3f, 0xe8, 0x74, 0x22, 0x11, 0xc7, 0x1c, 0xa9, 0xe9, 0x1e, 0xa3,
		0x39, 0x4d, 0xd7, 0x10, 0x49, 0xce, 0x17, 0x5b, 0xd6, 0x6d, 0x89, 0xa1, 0x6d, 0x2d, 0xd8, 0xd8,
		0x47, 0x86, 0x73, 0x3b, 0x0b, 0xb4, 0x16, 0x91, 0x62, 0x67, 0x6e, 0xc9, 0x04, 0xb7, 0x7e, 0xec,
		0xf8, 0x7b, 0x8d, 0x87, 0x1f, 0x05, 0x7f, 0xaf, 0x31, 0xf9, 0xb2, 0x30, 0xfe, 0xe7, 0x77, 0x71,
		0xf8, 0x50, 0xfc, 0xb1, 0xe3, 0x97, 0xa6, 0xef, 0x16, 0xcb, 0x3f, 0x76, 0xfc, 0x72, 0x63, 0x7b,
		0xeb, 0xaf, 0xbf, 0x3e, 0xac, 0xfb, 0x99, 0xed, 0xdf, 0xbb, 0x43, 0x8f, 0xdd, 0x9f, 0xdf, 0xe0,
		0x68, 0x2e, 0xa7, 0x17, 0xf5, 0x7f, 0xb3, 0xb7, 0x99, 0xff, 0x6e, 0x51, 0x59, 0xcd, 0xf6, 0xbf,
		0x18, 0xda, 0x0d, 0xaf, 0x84, 0xe2, 0x7b, 0xc0, 0xd8, 0x8b, 0x61, 0xac, 0x02, 0x18, 0xcb, 0x2a,
		0x8c, 0x8d, 0xbd, 0x4b, 0xe0, 0x77, 0x6b, 0xfe, 0xe7, 0xc6, 0xef, 0xc2, 0xfb, 0xd2, 0x70, 0x7f,
		0xfb, 0x77, 0x75, 0xf8, 0xfc, 0xcd, 0x87, 0x65, 0x3f, 0x56, 0x78, 0x5f, 0x1d, 0xee, 0xaf, 0xf8,
		0x4e, 0x65, 0xb8, 0xff, 0xc2, 0xdf, 0x51, 0x1e, 0x6e, 0x2d, 0xfc, 0xe8, 0xe8, 0xfd, 0xe2, 0xaa,
		0x0f, 0x94, 0x56, 0x7c, 0x60, 0x77, 0xd5, 0x07, 0x76, 0x57, 0x7c, 0x60, 0xe5, 0x94, 0x8a, 0x2b,
		0x3e, 0x50, 0x1e, 0x3e, 0x2c, 0xfc, 0xfc, 0xd6, 0xf2, 0x1f, 0xad, 0x0c, 0xb7, 0x1f, 0x56, 0x7d,
		0xaf, 0x3a, 0x7c, 0xd8, 0xdf, 0xde, 0x06, 0xb0, 0x67, 0x0e, 0xd8, 0xb1, 0x8d, 0xe8, 0xb7, 0x11,
		0x88, 0x8e, 0x13, 0x3a, 0x54, 0x0e, 0x95, 0x53, 0x9c, 0xa8, 0xa7, 0x27, 0xee, 0xb4, 0xcf, 0xbe,
		0x7a, 0x6a, 0xd9, 0x24, 0x91, 0xa9, 0x5a, 0x36, 0x1d, 0x64, 0xaa, 0xd6, 0x30, 0x2b, 0x64, 0xaa,
		0xd6, 0xb2, 0x74, 0x64, 0xaa, 0xde, 0x38, 0x41, 0x64, 0xaa, 0x1c, 0x12, 0x64, 0x50, 0x41, 0xf5,
		0x1a, 0xed, 0xc5, 0xbd, 0x0a, 0xaa, 0xa7, 0xdc, 0x42, 0x8a, 0x78, 0xee, 0xff, 0xa3, 0x92, 0x8a,
		0x29, 0x6b, 0x95, 0xea, 0x36, 0xe8, 0xc9, 0x8e, 0x1f, 0x89, 0x20, 0x0e, 0x15, 0x3f, 0xc2, 0xfa,
		0x6c, 0x7e, 0xe0, 0xaa, 0xe0, 0xaa, 0xe0, 0xaa, 0xe0, 0xaa, 0xe0, 0xaa, 0xe0, 0xaa, 0x1b, 0xc6,
		0x55, 0x65, 0x47, 0x28, 0x2d, 0xf5, 0x3d, 0x53, 0xbe, 0xca, 0xe8, 0xf8, 0xb2, 0x57, 0x9f, 0x3e,
		0xaa, 0x83, 0x20, 0x66, 0xe8, 0x52, 0x67, 0x0b, 0x5a, 0x3f, 0xf9, 0x5e, 0x3b, 0xae, 0x1f, 0x36,
		0xcf, 0x4f, 0xbf, 0x5d, 0x1e, 0x35, 0xcf, 0x8f, 0x6a, 0x17, 0xa7, 0x27, 0xdc, 0xbc, 0xeb, 0xf8,
		0x94, 0x7a, 0xcc, 0x32, 0x4d, 0xc4, 0xf4, 0x5c, 0xff, 0xf3, 0xd5, 0xad, 0x5d, 0x34, 0x8f, 0x4f,
		0x4f, 0xcf, 0x3c, 0x74, 0x6c, 0xc8, 0xcc, 0x92, 0x7e, 0x3a, 0xfe, 0x76, 0x71, 0x79, 0x74, 0x8e,
		0x75, 0xcd, 0xda, 0xba, 0x9e, 0x9e, 0x7c, 0x3e, 0x3a, 0xc4, 0x8a, 0x66, 0x67, 0x45, 0x4f, 0xcf,
		0xeb, 0x5f, 0xea, 0x27, 0xb5, 0xcb, 0xd3, 0x73, 0x0f, 0xdd, 0x40, 0xfe, 0xf8, 0x6a, 0x20, 0x1e,
		0x61, 0x36, 0x0b, 0x0e, 0xea, 0x60, 0x2f, 0x88, 0xb5, 0x7f, 0x13, 0x76, 0x64, 0x57, 0x8a, 0x0e,
		0x3f, 0x71, 0x70, 0x7e, 0x7a, 0xd0, 0x06, 0x97, 0x4d, 0x07, 0xda, 0xe0, 0x1a, 0x06, 0x05, 0x6d,
		0x70, 0x2d, 0x4b, 0x87, 0x36, 0xf8, 0xc6, 0x09, 0x42, 0x1b, 0x74, 0x88, 0xff, 0x32, 0xd6, 0x06,
		0xb5, 0xbc, 0x11, 0x5a, 0xb6, 0x7f, 0xc6, 0x95, 0x12, 0x43, 0x6d, 0x90, 0xd1, 0x31, 0x02, 0xef,
		0x9b, 0x9a, 0x34, 0x31, 0xf4, 0x54, 0xa0, 0xc2, 0x58, 0xb4, 0x43, 0xd5, 0x61, 0x75, 0x4a, 0x15,
		0x7d, 0x6f, 0x5f, 0xf8, 0xa0, 0xd0, 0xf7, 0xf6, 0x0d, 0xf3, 0x43, 0x4f, 0xcf, 0x0c, 0x6b, 0x33,
		0x6e, 0xf4, 0xbd, 0x2d, 0x7c, 0x2c, 0x95, 0x2a, 0xd5, 0x52, 0x69, 0xa7, 0xba, 0x5b, 0xdd, 0xd9,
		0x2b, 0x97, 0x0b, 0x95, 0x02, 0x3a, 0xe0, 0x66, 0x7e, 0xb7, 0xe0, 0x1c, 0xc7, 0xd2, 0x17, 0xce,
		0x71, 0xb0, 0xf1, 0xa6, 0x5e, 0x3f, 0xd0, 0xd7, 0xbe, 0x64, 0xa8, 0x76, 0xcd, 0x26, 0xc6, 0x24,
		0x1a, 0x3a, 0x14, 0xdd, 0x60, 0xd0, 0xd3, 0xac, 0xb8, 0xaa, 0xb7, 0xc3, 0x23, 0x76, 0x6e, 0x40,
		0x8b, 0x5c, 0x36, 0x1d, 0x68, 0x91, 0x6b, 0x6c, 0x77, 0x68, 0x91, 0x6b, 0x59, 0x3a, 0xb4, 0xc8,
		0x37, 0x4e, 0x10, 0x5a, 0xa4, 0x43, 0xf1, 0x1e, 0xae, 0xb7, 0x5a, 0x1f, 0x05, 0x71, 0xbd, 0xd5,
		0x3f, 0xbd, 0x20, 0xf3, 0xbd, 0x4e, 0xcb, 0x80, 0xcc, 0x97, 0x79, 0xe1, 0x02, 0x32, 0xdf, 0xeb,
		0xb6, 0x06, 0xae, 0xb7, 0xda, 0x9c, 0x3d, 0x02, 0x71, 0x6f, 0xb9, 0x18, 0x00, 0x71, 0x8f, 0x8b,
		0x0f, 0xf5, 0xa6, 0x87, 0x49, 0xc3, 0x81, 0x16, 0xfc, 0x04, 0xbe, 0xa7, 0x93, 0x83, 0x80, 0xb4,
		0x6c, 0x3a, 0x10, 0x90, 0xd6, 0x30, 0x27, 0x08, 0x48, 0x6b, 0x59, 0x3a, 0x04, 0xa4, 0x37, 0x4e,
		0x10, 0x02, 0x92, 0x43, 0x91, 0x04, 0x63, 0x01, 0xa9, 0x15, 0x86, 0x3d, 0x11, 0x28, 0x8e, 0x87,
		0x5c, 0x0b, 0xa0, 0x72, 0x0c, 0x66, 0x60, 0x79, 0x0b, 0x79, 0x35, 0xa5, 0x42, 0x1d, 0x8c, 0x82,
		0x46, 0x16, 0x1b, 0xc8, 0x8b, 0xdb, 0xd7, 0xe2, 0x26, 0xe8, 0x4f, 0x9b, 0xf4, 0xe4, 0xc3, 0xbe,
		0x50, 0xed, 0x31, 0x51, 0xf2, 0x95, 0xd0, 0xbf, 0xc2, 0xe8, 0xa7, 0x2f, 0x55, 0xac, 0x03, 0xd5,
		0x16, 0xf9, 0xe7, 0x6f, 0xc4, 0x0b, 0xef, 0xe4, 0xfb, 0x51, 0xa8, 0xc3, 0x76, 0xd8, 0x8b, 0x93,
		0xaf, 0xf2, 0xad, 0xab, 0x7e, 0x3e, 0x92, 0xad, 0x7c, 0xd0, 0x95, 0x7e, 0x1c, 0x74, 0x65, 0x9c,
		0x7c, 0x95, 0x1f, 0xdf, 0xc8, 0x10, 0x47, 0x5a, 0xf8, 0xfd, 0xb0, 0x27, 0xdb, 0xf7, 0x79, 0x25,
		0xe4, 0xd5, 0x75, 0x2b, 0x8c, 0xe2, 0xe4, 0xab, 0x7c, 0xd0, 0xf9, 0x7b, 0x8c, 0x06, 0x52, 0xf9,
		0xfd, 0x30, 0xd6, 0xf9, 0x31, 0xc3, 0x8d, 0x27, 0xff, 0x4c, 0xfa, 0x02, 0xd9, 0x05, 0x09, 0x7b,
		0xd6, 0x6c, 0xd1, 0x92, 0xbd, 0x81, 0xfa, 0xa9, 0xc2, 0x5f, 0xca, 0x0f, 0xb4, 0x8e, 0x64, 0x6b,
		0xb4, 0x22, 0xd6, 0xad, 0xf9, 0x31, 0x87, 0xb0, 0x38, 0x37, 0xcb, 0x7b, 0x7e, 0x86, 0x00, 0x96,
		0xa7, 0xc1, 0x25, 0x00, 0xe2, 0x14, 0xf8, 0xf0, 0x0c, 0x78, 0xb8, 0x05, 0x3a, 0x6c, 0x03, 0x1c,
		0xb6, 0x81, 0x0d, 0xdb, 0x80, 0x66, 0xb3, 0xd9, 0xd7, 0xa1, 0x8c, 0x78, 0xb8, 0x9d, 0x05, 0x90,
		0xe2, 0xa7, 0x28, 0x2e, 0x4e, 0x91, 0x97, 0xae, 0x58, 0x80, 0xae, 0xc8, 0x1e, 0x5e, 0x79, 0xc3,
		0x2c, 0x57, 0xb8, 0x65, 0x0f, 0xbb, 0xec, 0xe1, 0x97, 0x3d, 0x0c, 0xf3, 0x91, 0x63, 0x72, 0x8c,
		0x74, 0x45, 0x2e, 0xf0, 0x9c, 0x4c, 0x68, 0x84, 0x7d, 0xbe, 0xe6, 0xa6, 0x76, 0xce, 0x79, 0xd4,
		0xc7, 0x29, 0x32, 0xdb, 0x7a, 0xbc, 0xd2, 0x7f, 0x6c, 0xe1, 0x9a, 0x33, 0x6c, 0xbb, 0x01, 0xdf,
		0xdc, 0x61, 0xdc, 0x19, 0x38, 0x77, 0x06, 0xd6, 0x9d, 0x81, 0x77, 0x5e, 0x30, 0xcf, 0x0c, 0xee,
		0x93, 0x55, 0xbc, 0xe4, 0x08, 0xb0, 0x39, 0xde, 0x77, 0x3d, 0x2c, 0x44, 0xc3, 0x55, 0x9e, 0xf7,
		0x6d, 0xce, 0xee, 0x7e, 0x98, 0x5c, 0xe1, 0xf0, 0x48, 0x56, 0x50, 0xef, 0xc7, 0x7d, 0x6b, 0x7a,
		0x93, 0xec, 0x1a, 0x5b, 0xe2, 0x3b, 0x99, 0x1e, 0x4f, 0xd2, 0x5b, 0x00, 0xe9, 0x05, 0xe9, 0x05,
		0xe9, 0x05, 0xe9, 0x05, 0xe9, 0x05, 0xb2, 0x2e, 0x5f, 0x45, 0x6e, 0x5a, 0x57, 0x32, 0xb1, 0x31,
		0x47, 0xeb, 0x09, 0xc6, 0x47, 0xe7, 0xe6, 0xa4, 0xaf, 0xd1, 0x4c, 0x99, 0x6e, 0x54, 0x9e, 0x0a,
		0x18, 0x7b, 0x52, 0xe0, 0x02, 0x39, 0x70, 0x8b, 0x24, 0xb8, 0x42, 0x16, 0x9c, 0x23, 0x0d, 0xce,
		0x91, 0x07, 0xe7, 0x48, 0x04, 0x4f, 0x32, 0xc1, 0x94, 0x54, 0x24, 0xab, 0xcb, 0x56, 0x51, 0x5b,
		0xf0, 0x9b, 0x03, 0xa9, 0x74, 0xa1, 0xc2, 0xd9, 0x67, 0x4e, 0x51, 0xbc, 0xc2, 0x78, 0x8a, 0x3c,
		0x3b, 0x42, 0x3c, 0x7f, 0xf1, 0xc6, 0x9c, 0x1c, 0xf7, 0x8e, 0x11, 0x0b, 0x93, 0x65, 0xde, 0x41,
		0x62, 0x61, 0xbe, 0xae, 0x9c, 0x96, 0x5f, 0xf4, 0x55, 0xdc, 0x4f, 0xcf, 0x3b, 0x02, 0x4b, 0xf3,
		0x5b, 0x2d, 0xb8, 0x73, 0x6f, 0xab, 0x55, 0xca, 0xe5, 0xdd, 0x32, 0xb6, 0x1b, 0xb6, 0x9b, 0x03,
		0xdc, 0x94, 0xff, 0xec, 0x1a, 0xe0, 0xf4, 0x6b, 0x6c, 0x0b, 0x71, 0xa7, 0xa3, 0xc0, 0x1f, 0xa8,
		0x58, 0x07, 0xad, 0x1e, 0x73, 0x76, 0x1f, 0x89, 0xae, 0x88, 0x84, 0x6a, 0x83, 0x94, 0xa6, 0x18,
		0x2a, 0x9d, 0x7f, 0xfe, 0x94, 0x2b, 0x15, 0xab, 0x85, 0x9c, 0x9f, 0xab, 0xe5, 0x0e, 0xc2, 0xa8,
		0x23, 0xa2, 0xdc, 0x97, 0x40, 0x8b, 0x5f, 0xc1, 0x7d, 0xee, 0x6c, 0x7a, 0xdc, 0x32, 0x57, 0xca,
		0x6d, 0x1d, 0x7c, 0x39, 0xf3, 0x4b, 0xdb, 0x9e, 0x03, 0x1c, 0xc0, 0x11, 0x39, 0xea, 0x31, 0x14,
		0x7c, 0x94, 0xa5, 0x1e, 0x2d, 0xdc, 0x11, 0x54, 0x75, 0x4d, 0xa1, 0x4a, 0x26, 0xfe, 0x54, 0xa9,
		0x5a, 0x73, 0x0b, 0x80, 0x39, 0x80, 0x39, 0x6c, 0xf4, 0xf3, 0xe2, 0xd8, 0x7a, 0x90, 0x6f, 0x4d,
		0xfd, 0x02, 0xe2, 0x72, 0xad, 0xad, 0x7f, 0x04, 0x24, 0x64, 0x18, 0xdf, 0x34, 0x41, 0x64, 0x18,
		0x37, 0x94, 0xd2, 0x21, 0xc3, 0x48, 0xca, 0xdb, 0x90, 0x61, 0xcc, 0x9a, 0x1a, 0xe1, 0x56, 0x86,
		0xf1, 0xa3, 0x03, 0x09, 0xc6, 0x32, 0x12, 0x8c, 0xd9, 0xd7, 0x72, 0x90, 0x60, 0x34, 0x38, 0x5f,
		0x64, 0x3c, 0x36, 0x1c, 0x95, 0xe6, 0xb7, 0x9a, 0x8b, 0x09, 0xc6, 0x62, 0x19, 0xe9, 0x45, 0x6c,
		0x36, 0x17, 0x88, 0x29, 0xff, 0xd9, 0x21, 0xbd, 0xb8, 0xce, 0xb6, 0x40, 0x7a, 0x71, 0x43, 0x29,
		0x29, 0xd2, 0x8b, 0x6c, 0x02, 0x41, 0xa4, 0x17, 0xe9, 0x27, 0x8e, 0xf4, 0x22, 0x66, 0xe7, 0x08,
		0x73, 0x40, 0x7a, 0xf1, 0x05, 0xfb, 0x79, 0x9c, 0xb3, 0xbb, 0x9d, 0x86, 0x53, 0x2e, 0xe4, 0x17,
		0x27, 0x73, 0x45, 0x82, 0xf1, 0x35, 0xd3, 0x43, 0x82, 0x31, 0x45, 0x6b, 0x44, 0x82, 0xd1, 0x10,
		0x99, 0x43, 0x82, 0xd1, 0x38, 0x73, 0x43, 0x82, 0x31, 0x6b, 0x7a, 0x84, 0x3b, 0x09, 0xc6, 0x96,
		0x54, 0x41, 0x74, 0xef, 0x40, 0x86, 0x71, 0x8f, 0xf1, 0x14, 0x8f, 0x85, 0xba, 0x1a, 0x37, 0x0b,
		0x83, 0x9e, 0xf3, 0xc6, 0x27, 0xe9, 0x64, 0x8a, 0xb1, 0x80, 0xac, 0x87, 0x61, 0x67, 0x85, 0x14,
		0xa3, 0x81, 0xad, 0x86, 0x33, 0x8c, 0xd8, 0x6e, 0x19, 0xd9, 0x6e, 0x90, 0x0a, 0x5f, 0xf5, 0x42,
		0x92, 0x71, 0x9d, 0x6d, 0x81, 0x24, 0xe3, 0x86, 0x92, 0x52, 0x24, 0x19, 0xd9, 0xc4, 0x82, 0x48,
		0x32, 0xd2, 0x4f, 0x1c, 0x49, 0x46, 0xcc, 0xce, 0x11, 0xe6, 0x80, 0x24, 0xe3, 0xcb, 0x78, 0x8c,
		0x50, 0x1d, 0xd1, 0xe1, 0x9f, 0x62, 0x4c, 0x66, 0x8a, 0x04, 0xe3, 0x6b, 0xa6, 0x87, 0x04, 0x63,
		0x8a, 0xb6, 0x88, 0x04, 0xa3, 0x21, 0x22, 0x87, 0x04, 0xa3, 0x71, 0xd6, 0x86, 0x04, 0x63, 0xd6,
		0xb4, 0x08, 0x87, 0x12, 0x8c, 0x61, 0xd8, 0x13, 0x81, 0x72, 0x20, 0xc3, 0x58, 0x28, 0xc0, 0x04,
		0xd7, 0xa3, 0x91, 0x90, 0xc3, 0x52, 0x7f, 0x41, 0x0e, 0x03, 0x7b, 0x7a, 0x0d, 0x8b, 0x82, 0x1c,
		0x66, 0x83, 0x58, 0x41, 0x0e, 0xc3, 0xec, 0x72, 0x90, 0xc3, 0x5c, 0xe6, 0x32, 0x5e, 0xd8, 0xd7,
		0x32, 0x54, 0x41, 0x8f, 0xbf, 0x1c, 0x96, 0xcc, 0x14, 0x72, 0xd8, 0x6b, 0xa6, 0x07, 0x39, 0x2c,
		0x4d, 0x5b, 0x84, 0x1c, 0x66, 0x86, 0xc8, 0x41, 0x0e, 0x33, 0xce, 0xda, 0x20, 0x87, 0x65, 0x4d,
		0x8b, 0x80, 0x1c, 0x96, 0x3e, 0x8c, 0x43, 0x0e, 0x5b, 0xeb, 0xa9, 0x41, 0x0e, 0x33, 0xf1, 0x82,
		0x1c, 0x06, 0xf6, 0xf4, 0x1a, 0x16, 0x05, 0x39, 0xcc, 0x06, 0xb1, 0x82, 0x1c, 0x86, 0xd9, 0xe5,
		0x20, 0x87, 0xb9, 0xcc, 0x65, 0xbc, 0x7e, 0x10, 0x69, 0xe9, 0x82, 0x1a, 0x36, 0x9b, 0x28, 0xc4,
		0xb0, 0xd7, 0x4c, 0x0f, 0x62, 0x58, 0x8a, 0xa6, 0x08, 0x31, 0xcc, 0x10, 0x8d, 0x83, 0x18, 0x66,
		0x9c, 0xb3, 0x41, 0x0c, 0xcb, 0x9a, 0x12, 0x01, 0x31, 0x2c, 0x7d, 0x18, 0x87, 0x18, 0xb6, 0xd6,
		0x53, 0x83, 0x18, 0x66, 0xe2, 0x05, 0x31, 0x0c, 0xec, 0xe9, 0x35, 0x2c, 0x0a, 0x62, 0x98, 0x0d,
		0x62, 0x05, 0x31, 0x0c, 0xb3, 0xcb, 0x41, 0x0c, 0x73, 0x99, 0xcb, 0x78, 0x3a, 0x0a, 0x54, 0x2c,
		0xa7, 0xbd, 0x50, 0x98, 0xeb, 0x61, 0x4f, 0xe6, 0x0a, 0x49, 0xec, 0x35, 0xd3, 0x83, 0x24, 0x96,
		0xa2, 0x35, 0x42, 0x12, 0x33, 0x44, 0xe6, 0x20, 0x89, 0x19, 0x67, 0x6e, 0x90, 0xc4, 0xb2, 0xa6,
		0x47, 0x40, 0x12, 0x4b, 0x1f, 0xc6, 0x21, 0x89, 0xad, 0xf5, 0xd4, 0x20, 0x89, 0x99, 0x78, 0x41,
		0x12, 0x03, 0x7b, 0x7a, 0x0d, 0x8b, 0x82, 0x24, 0x66, 0x83, 0x58, 0x41, 0x12, 0xc3, 0xec, 0x72,
		0x90, 0xc4, 0x1c, 0x9d, 0x11, 0x33, 0x66, 0xe5, 0xd5, 0x94, 0x0a, 0x75, 0xa0, 0x65, 0xc8, 0xb3,
		0x65, 0xbc, 0x17, 0xb7, 0xaf, 0xc5, 0x4d, 0xd0, 0x0f, 0xc6, 0x37, 0x03, 0x78, 0xf9, 0xb0, 0x2f,
		0x54, 0x7b, 0x2c, 0x31, 0xf9, 0x4a, 0xe8, 0x5f, 0x61, 0xf4, 0xd3, 0x97, 0x23, 0x36, 0xa8, 0xda,
		0x22, 0xff, 0xfc, 0x8d, 0x78, 0xe1, 0x9d, 0x7c, 0x7f, 0xea, 0x1f, 0xe3, 0xe4, 0xab, 0x7c, 0xeb,
		0xaa, 0x9f, 0x8f, 0x64, 0x2b, 0x1f, 0x74, 0xa5, 0x1f, 0x07, 0x5d, 0x19, 0x27, 0x5f, 0xe5, 0x65,
		0xff, 0xb6, 0xe4, 0xc7, 0x91, 0x16, 0x7e, 0x3f, 0xec, 0xc9, 0xf6, 0x7d, 0x5e, 0x09, 0x79, 0x75,
		0xdd, 0x0a, 0xa3, 0x38, 0xf9, 0x2a, 0x1f, 0x74, 0xfe, 0x1e, 0xc7, 0xb9, 0x52, 0xf9, 0xfd, 0x30,
		0xd6, 0xf9, 0x28, 0x1c, 0x68, 0x11, 0x4f, 0xfe, 0xc9, 0x0f, 0xd4, 0x4f, 0x15, 0xfe, 0x52, 0x7e,
		0xa0, 0x75, 0x24, 0x5b, 0xe3, 0x6f, 0x2c, 0xbc, 0x95, 0x8f, 0x75, 0xa0, 0x05, 0x2f, 0x37, 0xcd,
		0x67, 0xcb, 0xf0, 0x98, 0x09, 0x93, 0x4d, 0x3b, 0xe2, 0x5e, 0xc9, 0xa5, 0x61, 0x7a, 0x14, 0x8d,
		0x33, 0x99, 0xd7, 0xb1, 0x8c, 0x75, 0x4d, 0xeb, 0x88, 0x95, 0x0b, 0xf1, 0xbe, 0x4a, 0x75, 0xd4,
		0x13, 0x23, 0xda, 0xc4, 0xac, 0x6f, 0xbc, 0xf7, 0x35, 0xb8, 0x7b, 0x32, 0xb3, 0xc2, 0xc7, 0x52,
		0xa9, 0x52, 0x2d, 0x95, 0x76, 0xaa, 0xbb, 0xd5, 0x9d, 0xbd, 0x72, 0xb9, 0x50, 0x29, 0x30, 0xea,
		0xce, 0xef, 0x9d, 0x8e, 0x18, 0xa6, 0xe8, 0x1c, 0x8c, 0x4c, 0x4f, 0x0d, 0x7a, 0x3d, 0x8e, 0x53,
		0xfb, 0x16, 0x8b, 0x88, 0x55, 0xa3, 0x7d, 0x2e, 0x1e, 0x83, 0x29, 0xbc, 0x67, 0x1f, 0xd6, 0x19,
		0x85, 0xc4, 0x5e, 0xac, 0xa3, 0x41, 0x5b, 0xab, 0xa9, 0x84, 0x72, 0x32, 0x79, 0x7a, 0xf5, 0xe9,
		0xc3, 0x6b, 0xce, 0x62, 0xc6, 0xe6, 0xc1, 0x55, 0xbf, 0x79, 0x2e, 0x5b, 0xcd, 0x5a, 0x57, 0x5e,
		0x04, 0x5d, 0xd9, 0xac, 0xf7, 0x6f, 0x4b, 0x17, 0x91, 0x16, 0x67, 0xe3, 0xa7, 0xd4, 0x3c, 0x99,
		0x3e, 0x9b, 0x66, 0xad, 0xf3, 0xf7, 0xb9, 0x6c, 0xd5, 0xd5, 0x59, 0x18, 0xeb, 0xe6, 0xf9, 0xe8,
		0x89, 0x34, 0xbf, 0x4d, 0xfe, 0xfc, 0x5a, 0xf2, 0xd7, 0xbf, 0x03, 0x79, 0xb0, 0x3f, 0x03, 0xcb,
		0x4e, 0x88, 0x9b, 0xf3, 0xc9, 0x9a, 0xd3, 0xb1, 0xbb, 0xc9, 0xec, 0x99, 0xb6, 0x9d, 0x91, 0x2d,
		0x6d, 0xa6, 0x19, 0xe7, 0x1f, 0x59, 0xad, 0x2f, 0x3b, 0x39, 0xa1, 0x3a, 0xfd, 0x50, 0x2a, 0x9d,
		0x6b, 0x87, 0xbd, 0x30, 0xb2, 0x84, 0x32, 0x3c, 0x08, 0x3f, 0x1f, 0x82, 0xcf, 0x9a, 0xd0, 0x33,
		0x22, 0xf0, 0x8c, 0x08, 0xbb, 0xad, 0xed, 0xcc, 0x04, 0x13, 0x9d, 0xc6, 0x42, 0x8b, 0xdc, 0xda,
		0x3c, 0x97, 0xb6, 0x83, 0xea, 0xf4, 0x98, 0x4a, 0x3b, 0x22, 0xf1, 0x76, 0xb7, 0xbd, 0xcd, 0x1d,
		0xdd, 0xde, 0xb4, 0xb6, 0x4f, 0x67, 0x81, 0x34, 0x23, 0x11, 0xd9, 0xb8, 0x2d, 0xdb, 0x76, 0xcd,
		0xa6, 0x09, 0x51, 0xca, 0x24, 0x2a, 0xd1, 0xec, 0x49, 0xf3, 0x3b, 0x84, 0x60, 0x77, 0x78, 0x4f,
		0x2d, 0x20, 0xa2, 0xab, 0xe9, 0x49, 0xaa, 0xa3, 0x9e, 0x8d, 0x4f, 0xe4, 0x0f, 0x66, 0xa5, 0x8c,
		0x44, 0xc3, 0x51, 0x9f, 0x30, 0xb0, 0x71, 0x62, 0xc0, 0xee, 0x09, 0x00, 0x5b, 0x35, 0x69, 0xd6,
		0x2b, 0xf4, 0xad, 0x17, 0x88, 0x59, 0xaf, 0xa0, 0xcf, 0x16, 0x53, 0x39, 0x94, 0xb4, 0x0a, 0x95,
		0x37, 0xa5, 0xb1, 0xe4, 0x1b, 0x67, 0xe6, 0x2e, 0xa6, 0xe3, 0x13, 0x1b, 0x2d, 0x2d, 0x00, 0x58,
		0x03, 0x02, 0x9b, 0x80, 0xc0, 0x03, 0x18, 0x6c, 0x03, 0x04, 0x1b, 0xa0, 0x60, 0x03, 0x18, 0x6c,
		0x80, 0x63, 0x33, 0x64, 0x1d, 0x6a, 0x40, 0x99, 0x07, 0x16, 0x7b, 0xfb, 0x6d, 0x0e, 0x5f, 0x6c,
		0xed, 0x35, 0x3b, 0x30, 0x63, 0x1d, 0x6e, 0x38, 0xc0, 0x0e, 0x2f, 0xf8, 0xe1, 0x02, 0x43, 0xec,
		0xe0, 0x88, 0x1d, 0x2c, 0xb1, 0x83, 0x27, 0x3b, 0x30, 0x65, 0x09, 0xae, 0xac, 0xc3, 0x56, 0x32,
		0x81, 0x49, 0xb1, 0x82, 0xf5, 0x7d, 0x3a, 0xf3, 0x5e, 0x36, 0x6b, 0x27, 0x9e, 0xc3, 0x99, 0xe5,
		0xba, 0x64, 0x36, 0x0d, 0x3b, 0x38, 0x35, 0xe6, 0xe0, 0xd9, 0x80, 0x83, 0xdb, 0x51, 0x51, 0xb6,
		0x0d, 0x35, 0xd8, 0x9e, 0xf3, 0x64, 0xdb, 0x20, 0x63, 0xb3, 0xeb, 0x54, 0xd9, 0x34, 0xb6, 0x48,
		0xfc, 0x4e, 0x4f, 0x04, 0xdd, 0x48, 0x74, 0x39, 0x38, 0x9d, 0x59, 0xd4, 0x55, 0x65, 0x30, 0x97,
		0xb3, 0x69, 0xee, 0xf7, 0xc3, 0x87, 0xc9, 0xa9, 0xb9, 0xfc, 0x04, 0xc8, 0x37, 0xb5, 0x0e, 0xd6,
		0x62, 0xe4, 0x35, 0x2b, 0x43, 0xe5, 0xc3, 0xe9, 0x92, 0x19, 0x81, 0xd6, 0x81, 0xd6, 0x81, 0xd6,
		0x81, 0xd6, 0x81, 0xd6, 0x81, 0xd6, 0x81, 0xd6, 0x39, 0x49, 0xeb, 0x12, 0x2c, 0x07, 0xb3, 0x23,
		0x5f, 0x8c, 0xe9, 0x41, 0x23, 0x3e, 0xc4, 0x6e, 0x36, 0x21, 0xf0, 0x3a, 0xf0, 0x3a, 0xf0, 0x3a,
		0xf0, 0x3a, 0xf0, 0x3a, 0xf0, 0x3a, 0xf0, 0x3a, 0x27, 0x79, 0xdd, 0x0c, 0xca, 0x41, 0xeb, 0xc8,
		0xd7, 0x62, 0xd2, 0x65, 0x8c, 0x0d, 0xa9, 0x9b, 0x4c, 0x87, 0x07, 0xa5, 0x2b, 0x80, 0xd2, 0x81,
		0xd2, 0x81, 0xd2, 0x81, 0xd2, 0x81, 0xd2, 0xd9, 0x5a, 0x15, 0xdb, 0x05, 0x4a, 0xc9, 0x44, 0xc6,
		0xad, 0x15, 0xa5, 0xea, 0x08, 0x3e, 0x37, 0xc4, 0x3c, 0x9e, 0xee, 0x7b, 0x9c, 0x1b, 0x97, 0x7e,
		0x94, 0xac, 0xee, 0x22, 0x62, 0x77, 0xf7, 0x10, 0xc7, 0xbb, 0x86, 0x78, 0xdf, 0x2d, 0xc4, 0xb5,
		0x1b, 0x3e, 0xfb, 0xbb, 0x83, 0xd8, 0xb7, 0xb6, 0x67, 0x7f, 0x37, 0x10, 0x3a, 0x0d, 0xb3, 0xd4,
		0x58, 0x18, 0x6b, 0x2d, 0x1c, 0x35, 0x97, 0x65, 0xda, 0xcb, 0x1f, 0xfe, 0x1b, 0x53, 0x8a, 0x58,
		0xe8, 0x38, 0xf9, 0x6a, 0xaa, 0xd4, 0x4c, 0x68, 0x06, 0xba, 0x78, 0x72, 0xd9, 0x94, 0x4c, 0x2a,
		0xe8, 0x17, 0x76, 0x23, 0x87, 0x4a, 0x7a, 0xd0, 0x51, 0xd0, 0x51, 0xd0, 0x51, 0xd0, 0x51, 0xd0,
		0x51, 0xd0, 0x51, 0x72, 0xbf, 0x35, 0x90, 0x4a, 0xef, 0x16, 0x19, 0xb2, 0x51, 0x4e, 0x64, 0xf4,
		0x3c, 0x50, 0x57, 0xfc, 0xae, 0x41, 0x64, 0x78, 0xdb, 0xd1, 0x57, 0xa9, 0xf8, 0xde, 0x91, 0xfe,
		0x3d, 0xe8, 0x0d, 0x04, 0xe3, 0x9b, 0xbd, 0x3f, 0x47, 0x41, 0x5b, 0xcb, 0x50, 0x1d, 0xca, 0x2b,
		0xc9, 0xed, 0xca, 0x97, 0x79, 0xdf, 0x21, 0xae, 0x82, 0xe9, 0x75, 0xf8, 0x7c, 0x6e, 0x2c, 0x61,
		0xe8, 0xf6, 0xe7, 0xb7, 0x46, 0x70, 0xc7, 0x7f, 0x6b, 0x94, 0x8a, 0x7b, 0xa5, 0xbd, 0x4a, 0xb5,
		0xb8, 0x57, 0xc6, 0x1e, 0xc9, 0xfa, 0x1e, 0xc1, 0x8d, 0x6d, 0x4b, 0x5f, 0x0d, 0x88, 0x46, 0x5c,
		0x7c, 0xa8, 0xd7, 0x0e, 0x6f, 0x6e, 0x06, 0x4a, 0xea, 0x7b, 0xae, 0x29, 0xcd, 0xe7, 0x13, 0x84,
		0x90, 0xb4, 0x6c, 0x3a, 0x10, 0x92, 0xd6, 0x30, 0x29, 0x08, 0x49, 0x6b, 0x59, 0x3a, 0x84, 0xa4,
		0x37, 0x4e, 0x10, 0x42, 0x92, 0x43, 0x11, 0x05, 0xf2, 0x9a, 0xaf, 0x80, 0x41, 0x07, 0xf3, 0x9a,
		0x33, 0x5e, 0x21, 0x45, 0x9c, 0x7c, 0x7d, 0x8f, 0xd4, 0x26, 0x4f, 0x96, 0xca, 0xa6, 0x97, 0xc4,
		0xc2, 0x9e, 0x64, 0xd2, 0x53, 0x02, 0xbc, 0x14, 0xbc, 0x14, 0xbc, 0x14, 0xbc, 0x14, 0xbc, 0x14,
		0xbc, 0x94, 0xdc, 0x6f, 0xc9, 0xbe, 0x1f, 0x74, 0x3a, 0x91, 0x88, 0x63, 0x8e, 0xd4, 0x74, 0x8f,
		0xd1, 0x9c, 0xa6, 0x6b, 0x88, 0x24, 0xe7, 0x8b, 0x2d, 0xeb, 0xb6, 0xc4, 0xd0, 0xb6, 0x16, 0x6c,
		0xec, 0x23, 0xc3, 0xb9, 0x9d, 0x05, 0x5a, 0x8b, 0x48, 0xb1, 0x33, 0xb7, 0x64, 0x82, 0x5b, 0x3f,
		0x76, 0xfc, 0xbd, 0xc6, 0xc3, 0x8f, 0x82, 0xbf, 0xd7, 0x98, 0x7c, 0x59, 0x18, 0xff, 0xf3, 0xbb,
		0x38, 0x7c, 0x28, 0xfe, 0xd8, 0xf1, 0x4b, 0xd3, 0x77, 0x8b, 0xe5, 0x1f, 0x3b, 0x7e, 0xb9, 0xb1,
		0xbd, 0xf5, 0xd7, 0x5f, 0x1f, 0xd6, 0xfd, 0xcc, 0xf6, 0xef, 0xdd, 0xa1, 0xc7, 0xee, 0xcf, 0x6f,
		0x70, 0x34, 0x97, 0xd3, 0x8b, 0xfa, 0xbf, 0xd9, 0xdb, 0xcc, 0x7f, 0xb7, 0xa8, 0xac, 0x66, 0xfb,
		0x5f, 0x0c, 0xed, 0x86, 0x57, 0x42, 0xf1, 0x3d, 0x60, 0xec, 0xc5, 0x30, 0x56, 0x01, 0x8c, 0x65,
		0x15, 0xc6, 0xc6, 0xde, 0x25, 0xf0, 0xbb, 0x35, 0xff, 0x73, 0xe3, 0x77, 0xe1, 0x7d, 0x69, 0xb8,
		0xbf, 0xfd, 0xbb, 0x3a, 0x7c, 0xfe, 0xe6, 0xc3, 0xb2, 0x1f, 0x2b, 0xbc, 0xaf, 0x0e, 0xf7, 0x57,
		0x7c, 0xa7, 0x32, 0xdc, 0x7f, 0xe1, 0xef, 0x28, 0x0f, 0xb7, 0x16, 0x7e, 0x74, 0xf4, 0x7e, 0x71,
		0xd5, 0x07, 0x4a, 0x2b, 0x3e, 0xb0, 0xbb, 0xea, 0x03, 0xbb, 0x2b, 0x3e, 0xb0, 0x72, 0x4a, 0xc5,
		0x15, 0x1f, 0x28, 0x0f, 0x1f, 0x16, 0x7e, 0x7e, 0x6b, 0xf9, 0x8f, 0x56, 0x86, 0xdb, 0x0f, 0xab,
		0xbe, 0x57, 0x1d, 0x3e, 0xec, 0x6f, 0x6f, 0x03, 0xd8, 0x33, 0x07, 0xec, 0xd8, 0x46, 0xf4, 0xdb,
		0x08, 0x44, 0xc7, 0x09, 0x1d, 0x2a, 0x87, 0xca, 0x29, 0x4e, 0xd4, 0xd3, 0x13, 0x77, 0xda, 0x67,
		0x5f, 0x3d, 0xb5, 0x6c, 0x92, 0xc8, 0x54, 0x2d, 0x9b, 0x0e, 0x32, 0x55, 0x6b, 0x98, 0x15, 0x32,
		0x55, 0x6b, 0x59, 0x3a, 0x32, 0x55, 0x6f, 0x9c, 0x20, 0x32, 0x55, 0x0e, 0x09, 0x32, 0xa8, 0xa0,
		0x7a, 0x8d, 0xf6, 0xe2, 0x5e, 0x05, 0xd5, 0x53, 0x6e, 0x21, 0x45, 0x3c, 0xf7, 0xff, 0x51, 0x49,
		0xc5, 0x94, 0xb5, 0x4a, 0x75, 0x1b, 0xf4, 0x64, 0xc7, 0x8f, 0x44, 0x10, 0x87, 0x8a, 0x1f, 0x61,
		0x7d, 0x36, 0x3f, 0x70, 0x55, 0x70, 0x55, 0x70, 0x55, 0x70, 0x55, 0x70, 0x55, 0x70, 0xd5, 0x0d,
		0xe3, 0xaa, 0xb2, 0x23, 0x94, 0x96, 0xfa, 0x9e, 0x29, 0x5f, 0x65, 0x74, 0x7c, 0xd9, 0xab, 0x4f,
		0x1f, 0xd5, 0x41, 0x10, 0x33, 0x74, 0xa9, 0xb3, 0x05, 0xad, 0x9f, 0x7c, 0xaf, 0x1d, 0xd7, 0x0f,
		0x9b, 0xe7, 0xa7, 0xdf, 0x2e, 0x8f, 0x9a, 0xe7, 0x47, 0xb5, 0x8b, 0xd3, 0x13, 0x6e, 0xde, 0x75,
		0x7c, 0x4a, 0x3d, 0x66, 0x99, 0x26, 0x62, 0x7a, 0xae, 0xff, 0xf9, 0xea, 0xd6, 0x2e, 0x9a, 0xc7,
		0xa7, 0xa7, 0x67, 0x1e, 0x3a, 0x36, 0x64, 0x66, 0x49, 0x3f, 0x1d, 0x7f, 0xbb, 0xb8, 0x3c, 0x3a,
		0xc7, 0xba, 0x66, 0x6d, 0x5d, 0x4f, 0x4f, 0x3e, 0x1f, 0x1d, 0x62, 0x45, 0xb3, 0xb3, 0xa2, 0xa7,
		0xe7, 0xf5, 0x2f, 0xf5, 0x93, 0xda, 0xe5, 0xe9, 0xb9, 0x87, 0x6e, 0x20, 0x7f, 0x7c, 0x35, 0x10,
		0x8f, 0x30, 0x9b, 0x05, 0x07, 0x75, 0xb0, 0x17, 0xc4, 0xda, 0xbf, 0x09, 0x3b, 0xb2, 0x2b, 0x45,
		0x87, 0x9f, 0x38, 0x38, 0x3f, 0x3d, 0x68, 0x83, 0xcb, 0xa6, 0x03, 0x6d, 0x70, 0x0d, 0x83, 0x82,
		0x36, 0xb8, 0x96, 0xa5, 0x43, 0x1b, 0x7c, 0xe3, 0x04, 0xa1, 0x0d, 0x3a, 0xc4, 0x7f, 0x19, 0x6b,
		0x83, 0x5a, 0xde, 0x08, 0x2d, 0xdb, 0x3f, 0xe3, 0x4a, 0x89, 0xa1, 0x36, 0xc8, 0xe8, 0x18, 0x81,
		0xf7, 0x4d, 0x4d, 0x9a, 0x18, 0x7a, 0x2a, 0x50, 0x61, 0x2c, 0xda, 0xa1, 0xea, 0xb0, 0x3a, 0xa5,
		0x8a, 0xbe, 0xb7, 0x2f, 0x7c, 0x50, 0xe8, 0x7b, 0xfb, 0x86, 0xf9, 0xa1, 0xa7, 0x67, 0x86, 0xb5,
		0x19, 0x37, 0xfa, 0xde, 0x16, 0x3e, 0x96, 0x4a, 0x95, 0x6a, 0xa9, 0xb4, 0x53, 0xdd, 0xad, 0xee,
		0xec, 0x95, 0xcb, 0x85, 0x4a, 0x01, 0x1d, 0x70, 0x33, 0xbf, 0x5b, 0x70, 0x8e, 0x63, 0xe9, 0x0b,
		0xe7, 0x38, 0xd8, 0x78, 0x53, 0x6f, 0x76, 0xe3, 0x38, 0x3b, 0xb5, 0x6b, 0x36, 0x31, 0x26, 0xd1,
		0xd0, 0xa1, 0xe8, 0x06, 0x83, 0x9e, 0x66, 0xc5, 0x55, 0xbd, 0x1d, 0x1e, 0xb1, 0x73, 0x03, 0x5a,
		0xe4, 0xb2, 0xe9, 0x40, 0x8b, 0x5c, 0x63, 0xbb, 0x43, 0x8b, 0x5c, 0xcb, 0xd2, 0xa1, 0x45, 0xbe,
		0x71, 0x82, 0xd0, 0x22, 0x1d, 0x8a, 0xf7, 0x70, 0xbd, 0xd5, 0xfa, 0x28, 0x88, 0xeb, 0xad, 0xfe,
		0xe9, 0x05, 0x99, 0xef, 0x75, 0x5a, 0x06, 0x64, 0xbe, 0xcc, 0x0b, 0x17, 0x90, 0xf9, 0x5e, 0xb7,
		0x35, 0x70, 0xbd, 0xd5, 0xe6, 0xec, 0x11, 0x88, 0x7b, 0xcb, 0xc5, 0x00, 0x88, 0x7b, 0x5c, 0x7c,
		0xa8, 0x37, 0x3d, 0x4c, 0x1a, 0x0e, 0xb4, 0xe0, 0x27, 0xf0, 0x3d, 0x9d, 0x1c, 0x04, 0xa4, 0x65,
		0xd3, 0x81, 0x80, 0xb4, 0x86, 0x39, 0x41, 0x40, 0x5a, 0xcb, 0xd2, 0x21, 0x20, 0xbd, 0x71, 0x82,
		0x10, 0x90, 0x1c, 0x8a, 0x24, 0x18, 0x0b, 0x48, 0xad, 0x30, 0xec, 0x89, 0x40, 0x71, 0x3c, 0xe4,
		0x5a, 0x00, 0x95, 0x63, 0x30, 0x03, 0xcb, 0x5b, 0xc8, 0xab, 0x29, 0x15, 0xea, 0x60, 0x14, 0x34,
		0xb2, 0xd8, 0x40, 0x5e, 0xdc, 0xbe, 0x16, 0x37, 0x41, 0x7f, 0xda, 0xa4, 0x27, 0x1f, 0xf6, 0x85,
		0x6a, 0x8f, 0x89, 0x92, 0xaf, 0x84, 0xfe, 0x15, 0x46, 0x3f, 0x7d, 0xa9, 0x62, 0x1d, 0xa8, 0xb6,
		0xc8, 0x3f, 0x7f, 0x23, 0x5e, 0x78, 0x27, 0xdf, 0x8f, 0x42, 0x1d, 0xb6, 0xc3, 0x5e, 0x9c, 0x7c,
		0x95, 0x6f, 0x5d, 0xf5, 0xf3, 0x91, 0x6c, 0xe5, 0x83, 0xae, 0xf4, 0xe3, 0xa0, 0x2b, 0xe3, 0xe4,
		0xab, 0xfc, 0xf8, 0x46, 0x86, 0x38, 0xd2, 0xc2, 0xef, 0x87, 0x3d, 0xd9, 0xbe, 0xcf, 0x2b, 0x21,
		0xaf, 0xae, 0x5b, 0x61, 0x14, 0x27, 0x5f, 0xe5, 0x83, 0xce, 0xdf, 0x63, 0x34, 0x90, 0xca, 0xef,
		0x47, 0x22, 0x3f, 0x26, 0xb8, 0xf1, 0xe4, 0x9f, 0x49, 0x5b, 0x20, 0xbb, 0x18, 0x61, 0xcf, 0x98,
		0x2d, 0x1a, 0xb2, 0x37, 0x50, 0x3f, 0x55, 0xf8, 0x4b, 0xf9, 0x81, 0xd6, 0x91, 0x6c, 0x8d, 0x56,
		0xc4, 0xba, 0x31, 0x3f, 0xa6, 0x10, 0x16, 0xe7, 0x66, 0x79, 0xcb, 0xcf, 0x00, 0xc0, 0xf2, 0x34,
		0xb8, 0xc4, 0x3f, 0x9c, 0xe2, 0x1e, 0x9e, 0xf1, 0x0e, 0xb7, 0x38, 0x87, 0x6d, 0x7c, 0xc3, 0x36,
		0xae, 0x61, 0x1b, 0xcf, 0x6c, 0x36, 0xf9, 0x3a, 0x94, 0x11, 0x0f, 0xb7, 0xb3, 0x00, 0x52, 0xfc,
		0x04, 0xc5, 0xc5, 0x29, 0xf2, 0x92, 0x15, 0x0b, 0x90, 0x15, 0xd9, 0xc3, 0x2b, 0x6f, 0x98, 0xe5,
		0x0a, 0xb7, 0xec, 0x61, 0x97, 0x3d, 0xfc, 0xb2, 0x87, 0x61, 0x3e, 0x6a, 0x4c, 0x8e, 0x91, 0xac,
		0xc8, 0x05, 0x9e, 0x93, 0x09, 0x8d, 0xb0, 0xcf, 0xd7, 0xdc, 0xc4, 0xce, 0x39, 0x8f, 0xfa, 0x38,
		0x45, 0x66, 0x5b, 0x8f, 0x57, 0xf6, 0x8f, 0x2d, 0x5c, 0x73, 0x86, 0x6d, 0x37, 0xe0, 0x9b, 0x3b,
		0x8c, 0x3b, 0x03, 0xe7, 0xce, 0xc0, 0xba, 0x33, 0xf0, 0xce, 0x0b, 0xe6, 0x99, 0xc1, 0x7d, 0xb2,
		0x8a, 0x97, 0x1c, 0x01, 0x36, 0xc7, 0xfb, 0xaa, 0x87, 0x85, 0x68, 0xb8, 0xca, 0xf3, 0xba, 0xcd,
		0xd9, 0xd5, 0x0f, 0x93, 0x1b, 0x1c, 0x1e, 0xc9, 0x0a, 0xca, 0xfd, 0xb8, 0x6f, 0x4d, 0x6f, 0x92,
		0x5d, 0x63, 0x4b, 0x7c, 0x27, 0xd3, 0xe3, 0x49, 0x7a, 0x0b, 0x20, 0xbd, 0x20, 0xbd, 0x20, 0xbd,
		0x20, 0xbd, 0x20, 0xbd, 0x40, 0xd6, 0xe5, 0xab, 0xc8, 0x4d, 0xeb, 0x4a, 0x26, 0x36, 0xe6, 0x68,
		0x3d, 0xc1, 0xf8, 0xe4, 0xdc, 0x9c, 0xf4, 0x35, 0x9a, 0x29, 0xd3, 0x8d, 0xca, 0x53, 0x01, 0x63,
		0x4f, 0x0a, 0x5c, 0x20, 0x07, 0x6e, 0x91, 0x04, 0x57, 0xc8, 0x82, 0x73, 0xa4, 0xc1, 0x39, 0xf2,
		0xe0, 0x1c, 0x89, 0xe0, 0x49, 0x26, 0x98, 0x92, 0x8a, 0x64, 0x75, 0xd9, 0x2a, 0x6a, 0x0b, 0x7e,
		0x73, 0x20, 0x95, 0x2e, 0x54, 0x38, 0xfb, 0xcc, 0x29, 0x8a, 0x57, 0x18, 0x4f, 0x91, 0x67, 0x43,
		0x88, 0xe7, 0x2f, 0xde, 0x98, 0x93, 0xe3, 0xde, 0x30, 0x62, 0x61, 0xb2, 0xcc, 0x1b, 0x48, 0x2c,
		0xcc, 0xd7, 0x95, 0xc3, 0xf2, 0x8b, 0xbe, 0x8a, 0xfb, 0xe1, 0x79, 0x47, 0x60, 0x69, 0x7e, 0xab,
		0x05, 0x77, 0xee, 0x6d, 0xb5, 0x4a, 0xb9, 0xbc, 0x5b, 0xc6, 0x76, 0xc3, 0x76, 0x73, 0x80, 0x9b,
		0xf2, 0x9f, 0x5d, 0x03, 0x9c, 0x7e, 0x8d, 0x6d, 0x21, 0xee, 0x74, 0x14, 0xf8, 0x03, 0x15, 0xeb,
		0xa0, 0xd5, 0x63, 0xce, 0xee, 0x23, 0xd1, 0x15, 0x91, 0x50, 0x6d, 0x90, 0xd2, 0x14, 0x43, 0xa5,
		0xf3, 0xcf, 0x9f, 0x72, 0xa5, 0x62, 0xb5, 0x90, 0xf3, 0x73, 0xb5, 0xdc, 0x41, 0x18, 0x75, 0x44,
		0x94, 0xfb, 0x12, 0x68, 0xf1, 0x2b, 0xb8, 0xcf, 0x9d, 0x4d, 0x4f, 0x5b, 0xe6, 0x4a, 0xb9, 0xad,
		0x83, 0x2f, 0x67, 0x7e, 0x69, 0xdb, 0x73, 0x80, 0x03, 0x38, 0x22, 0x47, 0x3d, 0x86, 0x82, 0x8f,
		0xb2, 0xd4, 0xa3, 0x85, 0x3b, 0x82, 0xaa, 0xae, 0x29, 0x54, 0xc9, 0xc4, 0x9f, 0x2a, 0x55, 0x6b,
		0x6e, 0x01, 0x30, 0x07, 0x30, 0x87, 0x8d, 0x7e, 0x5e, 0x1c, 0x3b, 0x0f, 0xf2, 0xad, 0xa9, 0x5f,
		0x40, 0x5c, 0xae, 0xb5, 0xf5, 0x8f, 0x80, 0x84, 0x0c, 0xe3, 0x9b, 0x26, 0x88, 0x0c, 0xe3, 0x86,
		0x52, 0x3a, 0x64, 0x18, 0x49, 0x79, 0x1b, 0x32, 0x8c, 0x59, 0x53, 0x23, 0xdc, 0xca, 0x30, 0x7e,
		0x74, 0x20, 0xc1, 0x58, 0x46, 0x82, 0x31, 0xfb, 0x5a, 0x0e, 0x12, 0x8c, 0x06, 0xe7, 0x8b, 0x8c,
		0xc7, 0x86, 0xa3, 0xd2, 0xfc, 0x56, 0x73, 0x31, 0xc1, 0x58, 0x2c, 0x23, 0xbd, 0x88, 0xcd, 0xe6,
		0x02, 0x31, 0xe5, 0x3f, 0x3b, 0xa4, 0x17, 0xd7, 0xd9, 0x16, 0x48, 0x2f, 0x6e, 0x28, 0x25, 0x45,
		0x7a, 0x91, 0x4d, 0x20, 0x88, 0xf4, 0x22, 0xfd, 0xc4, 0x91, 0x5e, 0xc4, 0xec, 0x1c, 0x61, 0x0e,
		0x48, 0x2f, 0xbe, 0x60, 0x3f, 0x8f, 0x73, 0x76, 0xb7, 0xd3, 0x70, 0xca, 0x85, 0xfc, 0xe2, 0x64,
		0xae, 0x48, 0x30, 0xbe, 0x66, 0x7a, 0x48, 0x30, 0xa6, 0x68, 0x8d, 0x48, 0x30, 0x1a, 0x22, 0x73,
		0x48, 0x30, 0x1a, 0x67, 0x6e, 0x48, 0x30, 0x66, 0x4d, 0x8f, 0x70, 0x27, 0xc1, 0xd8, 0x92, 0x2a,
		0x88, 0xee, 0x1d, 0xc8, 0x30, 0xee, 0x31, 0x9e, 0xe2, 0xb1, 0x50, 0x57, 0xe3, 0x66, 0x61, 0xd0,
		0x73, 0xde, 0xf8, 0x24, 0x9d, 0x4c, 0x31, 0x16, 0x90, 0xf5, 0x30, 0xec, 0xac, 0x90, 0x62, 0x34,
		0xb0, 0xd5, 0x70, 0x86, 0x11, 0xdb, 0x2d, 0x23, 0xdb, 0x0d, 0x52, 0xe1, 0xab, 0x5e, 0x48, 0x32,
		0xae, 0xb3, 0x2d, 0x90, 0x64, 0xdc, 0x50, 0x52, 0x8a, 0x24, 0x23, 0x9b, 0x58, 0x10, 0x49, 0x46,
		0xfa, 0x89, 0x23, 0xc9, 0x88, 0xd9, 0x39, 0xc2, 0x1c, 0x90, 0x64, 0x7c, 0x19, 0x8f, 0x11, 0xaa,
		0x23, 0x3a, 0xfc, 0x53, 0x8c, 0xc9, 0x4c, 0x91, 0x60, 0x7c, 0xcd, 0xf4, 0x90, 0x60, 0x4c, 0xd1,
		0x16, 0x91, 0x60, 0x34, 0x44, 0xe4, 0x90, 0x60, 0x34, 0xce, 0xda, 0x90, 0x60, 0xcc, 0x9a, 0x16,
		0xe1, 0x50, 0x82, 0x31, 0x0c, 0x7b, 0x22, 0x50, 0x0e, 0x64, 0x18, 0x0b, 0x05, 0x98, 0xe0, 0x7a,
		0x34, 0x12, 0x72, 0x58, 0xea, 0x2f, 0xc8, 0x61, 0x60, 0x4f, 0xaf, 0x61, 0x51, 0x90, 0xc3, 0x6c,
		0x10, 0x2b, 0xc8, 0x61, 0x98, 0x5d, 0x0e, 0x72, 0x98, 0xcb, 0x5c, 0xc6, 0x0b, 0xfb, 0x5a, 0x86,
		0x2a, 0xe8, 0xf1, 0x97, 0xc3, 0x92, 0x99, 0x42, 0x0e, 0x7b, 0xcd, 0xf4, 0x20, 0x87, 0xa5, 0x69,
		0x8b, 0x90, 0xc3, 0xcc, 0x10, 0x39, 0xc8, 0x61, 0xc6, 0x59, 0x1b, 0xe4, 0xb0, 0xac, 0x69, 0x11,
		0x90, 0xc3, 0xd2, 0x87, 0x71, 0xc8, 0x61, 0x6b, 0x3d, 0x35, 0xc8, 0x61, 0x26, 0x5e, 0x90, 0xc3,
		0xc0, 0x9e, 0x5e, 0xc3, 0xa2, 0x20, 0x87, 0xd9, 0x20, 0x56, 0x90, 0xc3, 0x30, 0xbb, 0x1c, 0xe4,
		0x30, 0x97, 0xb9, 0x8c, 0xd7, 0x0f, 0x22, 0x2d, 0x5d, 0x50, 0xc3, 0x66, 0x13, 0x85, 0x18, 0xf6,
		0x9a, 0xe9, 0x41, 0x0c, 0x4b, 0xd1, 0x14, 0x21, 0x86, 0x19, 0xa2, 0x71, 0x10, 0xc3, 0x8c, 0x73,
		0x36, 0x88, 0x61, 0x59, 0x53, 0x22, 0x20, 0x86, 0xa5, 0x0f, 0xe3, 0x10, 0xc3, 0xd6, 0x7a, 0x6a,
		0x10, 0xc3, 0x4c, 0xbc, 0x20, 0x86, 0x81, 0x3d, 0xbd, 0x86, 0x45, 0x41, 0x0c, 0xb3, 0x41, 0xac,
		0x20, 0x86, 0x61, 0x76, 0x39, 0x88, 0x61, 0x2e, 0x73, 0x19, 0x4f, 0x47, 0x81, 0x8a, 0xe5, 0xb4,
		0x17, 0x0a, 0x73, 0x3d, 0xec, 0xc9, 0x5c, 0x21, 0x89, 0xbd, 0x66, 0x7a, 0x90, 0xc4, 0x52, 0xb4,
		0x46, 0x48, 0x62, 0x86, 0xc8, 0x1c, 0x24, 0x31, 0xe3, 0xcc, 0x0d, 0x92, 0x58, 0xd6, 0xf4, 0x08,
		0x48, 0x62, 0xe9, 0xc3, 0x38, 0x24, 0xb1, 0xb5, 0x9e, 0x1a, 0x24, 0x31, 0x13, 0x2f, 0x48, 0x62,
		0x60, 0x4f, 0xaf, 0x61, 0x51, 0x90, 0xc4, 0x6c, 0x10, 0x2b, 0x48, 0x62, 0x98, 0x5d, 0x0e, 0x92,
		0x98, 0xa3, 0x33, 0x62, 0xc6, 0xac, 0xbc, 0x9a, 0x52, 0xa1, 0x0e, 0xb4, 0x0c, 0x79, 0xb6, 0x8c,
		0xf7, 0xe2, 0xf6, 0xb5, 0xb8, 0x09, 0xfa, 0xc1, 0xf8, 0x66, 0x00, 0x2f, 0x1f, 0xf6, 0x85, 0x6a,
		0x8f, 0x25, 0x26, 0x5f, 0x09, 0xfd, 0x2b, 0x8c, 0x7e, 0xfa, 0x72, 0xc4, 0x06, 0x55, 0x5b, 0xe4,
		0x9f, 0xbf, 0x11, 0x2f, 0xbc, 0x93, 0xef, 0x4f, 0xfd, 0x63, 0x9c, 0x7c, 0x95, 0x6f, 0x5d, 0xf5,
		0xf3, 0x91, 0x6c, 0xe5, 0x83, 0xae, 0xf4, 0xe3, 0xa0, 0x2b, 0xe3, 0xe4, 0xab, 0xbc, 0xec, 0xdf,
		0x96, 0xfc, 0x38, 0xd2, 0xc2, 0xef, 0x87, 0x3d, 0xd9, 0xbe, 0xcf, 0x2b, 0x21, 0xaf, 0xae, 0x5b,
		0x61, 0x14, 0x27, 0x5f, 0xe5, 0x83, 0xce, 0xdf, 0xe3, 0x38, 0x57, 0x2a, 0xbf, 0x1f, 0x89, 0x7c,
		0x14, 0x0e, 0xb4, 0x88, 0x27, 0xff, 0xe4, 0x07, 0xea, 0xa7, 0x0a, 0x7f, 0x29, 0x3f, 0xd0, 0x3a,
		0x92, 0xad, 0xf1, 0x37, 0x16, 0xde, 0xca, 0xc7, 0x3a, 0xd0, 0x82, 0x97, 0x97, 0xe6, 0xb3, 0x63,
		0x78, 0xcc, 0x84, 0xc9, 0x9e, 0x1d, 0x51, 0xaf, 0xe4, 0xce, 0x30, 0x3d, 0x0a, 0xc6, 0x99, 0xcc,
		0xeb, 0x58, 0xc6, 0xba, 0xa6, 0x75, 0xc4, 0xca, 0x83, 0x78, 0x5f, 0xa5, 0x3a, 0xea, 0x89, 0x11,
		0x6b, 0x62, 0xd6, 0x36, 0xde, 0xfb, 0x1a, 0xdc, 0x3d, 0x99, 0x59, 0xe1, 0x63, 0xa9, 0x54, 0xa9,
		0x96, 0x4a, 0x3b, 0xd5, 0xdd, 0xea, 0xce, 0x5e, 0xb9, 0x5c, 0xa8, 0x14, 0x18, 0x35, 0xe7, 0xf7,
		0x4e, 0x47, 0x04, 0x53, 0x74, 0x0e, 0x46, 0xa6, 0xa7, 0x06, 0xbd, 0x1e, 0xc7, 0xa9, 0x7d, 0x8b,
		0x45, 0xc4, 0xaa, 0xcf, 0x3e, 0x17, 0x8f, 0xc1, 0x14, 0xdd, 0x33, 0x8f, 0xea, 0x8c, 0x02, 0x62,
		0x2f, 0xd6, 0xd1, 0xa0, 0xad, 0xd5, 0x54, 0x40, 0x39, 0x99, 0x3c, 0xbc, 0xfa, 0xf4, 0xd9, 0x35,
		0x67, 0x11, 0x63, 0xf3, 0xe0, 0xaa, 0xdf, 0x3c, 0x97, 0xad, 0x66, 0xad, 0x2b, 0x2f, 0x82, 0xae,
		0x6c, 0xd6, 0xfb, 0xb7, 0xa5, 0x8b, 0x48, 0x8b, 0xb3, 0xf1, 0x43, 0x6a, 0x9e, 0x4c, 0x1f, 0x4d,
		0xb3, 0xd6, 0xf9, 0xfb, 0x5c, 0xb6, 0xea, 0xea, 0x2c, 0x12, 0xcd, 0xf3, 0xd1, 0x03, 0x69, 0x7e,
		0x9b, 0xfc, 0xf5, 0xb5, 0xe4, 0x8f, 0x7f, 0x07, 0xea, 0x60, 0x7f, 0x06, 0x96, 0x5d, 0x10, 0x37,
		0xd7, 0x93, 0x31, 0x97, 0x63, 0x77, 0x8f, 0xd9, 0xb3, 0x6c, 0x3b, 0x23, 0x5b, 0xda, 0x4b, 0x33,
		0xc2, 0x3f, 0x32, 0x5a, 0x5f, 0x76, 0x72, 0x42, 0x75, 0xfa, 0xa1, 0x54, 0x3a, 0xd7, 0x0e, 0x7b,
		0x61, 0x64, 0x09, 0x63, 0x78, 0xb0, 0x7d, 0x3e, 0xec, 0x9e, 0x35, 0x9b, 0x67, 0xc4, 0xde, 0x19,
		0xb1, 0x75, 0x5b, 0xdb, 0x99, 0x09, 0x24, 0xba, 0x0c, 0x85, 0x16, 0x89, 0xb5, 0x71, 0x22, 0x6d,
		0x07, 0xd3, 0xe9, 0x11, 0x95, 0x76, 0x44, 0xe2, 0xcd, 0x6e, 0x7b, 0x93, 0xbb, 0xb9, 0xb9, 0x69,
		0x4d, 0x9f, 0xce, 0x00, 0x69, 0x46, 0x22, 0x32, 0x71, 0x5b, 0xa6, 0xed, 0x98, 0x49, 0x13, 0x42,
		0x94, 0x41, 0x48, 0xa2, 0xd9, 0x91, 0xe6, 0xf7, 0x07, 0xc1, 0xde, 0xf0, 0x66, 0xeb, 0x1f, 0x0e,
		0xb4, 0xdf, 0x0f, 0x63, 0x4d, 0xb6, 0x3b, 0x92, 0xb2, 0xa8, 0x85, 0x19, 0x10, 0x79, 0x84, 0x59,
		0x15, 0x23, 0xd1, 0x70, 0xd4, 0x87, 0x0b, 0x6c, 0x1c, 0x16, 0xb0, 0x5b, 0xfc, 0x6f, 0xab, 0x1c,
		0xcd, 0x7a, 0x71, 0xbe, 0xf5, 0xda, 0x30, 0xeb, 0xc5, 0xf3, 0xd9, 0xe2, 0x2a, 0x87, 0x92, 0x56,
		0xa0, 0xf2, 0xa6, 0x44, 0x96, 0x7c, 0xe3, 0xcc, 0xdc, 0xc5, 0x74, 0x7c, 0x62, 0xa3, 0xa5, 0x05,
		0x00, 0x6b, 0x40, 0x60, 0x13, 0x10, 0x78, 0x00, 0x83, 0x6d, 0x80, 0x60, 0x03, 0x14, 0x6c, 0x00,
		0x83, 0x0d, 0x70, 0x6c, 0x86, 0xae, 0x43, 0x0d, 0x28, 0xf3, 0xc0, 0x62, 0x6f, 0xbf, 0xcd, 0xe1,
		0x8b, 0xad, 0xbd, 0x66, 0x07, 0x66, 0xac, 0xc3, 0x0d, 0x07, 0xd8, 0xe1, 0x05, 0x3f, 0x5c, 0x60,
		0x88, 0x1d, 0x1c, 0xb1, 0x83, 0x25, 0x76, 0xf0, 0x64, 0x07, 0xa6, 0x2c, 0xc1, 0x95, 0x75, 0xd8,
		0x4a, 0x26, 0x30, 0xa9, 0x55, 0xb0, 0xbe, 0x4f, 0x67, 0xde, 0xcb, 0x66, 0xe9, 0xc4, 0x73, 0x38,
		0xb3, 0x5c, 0x93, 0xcc, 0xa6, 0x57, 0x07, 0xa7, 0x9e, 0x1c, 0x3c, 0x7b, 0x6f, 0x70, 0x3b, 0x25,
		0xca, 0xb6, 0x97, 0x06, 0xdb, 0x23, 0x9e, 0x6c, 0x7b, 0x63, 0x6c, 0x76, 0x95, 0x2a, 0x9b, 0x9e,
		0x16, 0x89, 0xdf, 0xe9, 0x89, 0xa0, 0x1b, 0x89, 0x2e, 0x07, 0xa7, 0x33, 0x8b, 0xba, 0xaa, 0x0c,
		0xe6, 0x72, 0x36, 0xcd, 0xfe, 0x7e, 0xf8, 0x30, 0x39, 0x31, 0x97, 0x9f, 0x00, 0xf9, 0xa6, 0x96,
		0xc1, 0x5a, 0x8c, 0xbc, 0x66, 0x55, 0xa8, 0x7c, 0x38, 0x5d, 0x32, 0x23, 0xd0, 0x3a, 0xd0, 0x3a,
		0xd0, 0x3a, 0xd0, 0x3a, 0xd0, 0x3a, 0xd0, 0x3a, 0xd0, 0x3a, 0x27, 0x69, 0x5d, 0x82, 0xe5, 0x60,
		0x76, 0xe4, 0x8b, 0x31, 0x3d, 0x67, 0xc4, 0x87, 0xd8, 0xcd, 0x26, 0x04, 0x5e, 0x07, 0x5e, 0x07,
		0x5e, 0x07, 0x5e, 0x07, 0x5e, 0x07, 0x5e, 0x07, 0x5e, 0xe7, 0x24, 0xaf, 0x9b, 0x41, 0x39, 0x68,
		0x1d, 0xf9, 0x5a, 0x4c, 0x3a, 0x8c, 0xb1, 0x21, 0x75, 0x93, 0xe9, 0xf0, 0xa0, 0x74, 0x05, 0x50,
		0x3a, 0x50, 0x3a, 0x50, 0x3a, 0x50, 0x3a, 0x50, 0x3a, 0x5b, 0xab, 0x62, 0xbb, 0x40, 0x29, 0x99,
		0xc8, 0xb8, 0xad, 0xa2, 0x54, 0x1d, 0xc1, 0xe7, 0x72, 0x98, 0xc7, 0xf3, 0x7d, 0x8f, 0x73, 0xe3,
		0xd2, 0x8b, 0x92, 0xd5, 0x35, 0x44, 0xec, 0xae, 0x1d, 0xe2, 0x78, 0xcd, 0x10, 0xef, 0x6b, 0x85,
		0xb8, 0x36, 0xc2, 0x67, 0x7f, 0x6d, 0x10, 0xfb, 0xae, 0xf6, 0xec, 0xaf, 0x05, 0x42, 0x97, 0x61,
		0x96, 0x1a, 0x0b, 0x63, 0xad, 0x85, 0xa3, 0xe6, 0xb2, 0x4c, 0x7b, 0xf9, 0xc3, 0x7f, 0x63, 0x4a,
		0x11, 0x0b, 0x1d, 0x27, 0x5f, 0x4d, 0x95, 0x9a, 0x09, 0xcd, 0x40, 0x0f, 0x4f, 0x2e, 0x9b, 0x92,
		0x49, 0x05, 0xfd, 0xc2, 0x6e, 0xe4, 0x50, 0x49, 0x0f, 0x3a, 0x0a, 0x3a, 0x0a, 0x3a, 0x0a, 0x3a,
		0x0a, 0x3a, 0x0a, 0x3a, 0x4a, 0xee, 0xb7, 0x06, 0x52, 0xe9, 0xdd, 0x22, 0x43, 0x36, 0xca, 0x89,
		0x8c, 0x9e, 0x07, 0xea, 0x8a, 0xdf, 0x0d, 0x88, 0x0c, 0x2f, 0x3a, 0xfa, 0x2a, 0x15, 0xdf, 0xeb,
		0xd1, 0xbf, 0x07, 0xbd, 0x81, 0x60, 0x7c, 0xa9, 0xf7, 0xe7, 0x28, 0x68, 0x6b, 0x19, 0xaa, 0x43,
		0x79, 0x25, 0xb9, 0x5d, 0xf7, 0x32, 0xef, 0x3b, 0xc4, 0x55, 0x30, 0xbd, 0x09, 0x9f, 0xcf, 0x6d,
		0x25, 0x0c, 0xdd, 0xfe, 0xfc, 0xd6, 0x08, 0xee, 0xf8, 0x6f, 0x8d, 0x52, 0x71, 0xaf, 0xb4, 0x57,
		0xa9, 0x16, 0xf7, 0xca, 0xd8, 0x23, 0x59, 0xdf, 0x23, 0xb8, 0xad, 0x6d, 0xe9, 0xab, 0x01, 0xd1,
		0x88, 0x8b, 0x0f, 0xf5, 0xda, 0xe1, 0xcd, 0xcd, 0x40, 0x49, 0x7d, 0xcf, 0x35, 0xa5, 0xf9, 0x7c,
		0x82, 0x10, 0x92, 0x96, 0x4d, 0x07, 0x42, 0xd2, 0x1a, 0x26, 0x05, 0x21, 0x69, 0x2d, 0x4b, 0x87,
		0x90, 0xf4, 0xc6, 0x09, 0x42, 0x48, 0x72, 0x28, 0xa2, 0x40, 0x5e, 0xf3, 0x15, 0x30, 0xe8, 0x60,
		0x5e, 0x73, 0xc6, 0x2b, 0xa4, 0x88, 0x93, 0xaf, 0xef, 0x91, 0xda, 0xe4, 0xc9, 0x52, 0xd9, 0xf4,
		0x92, 0x58, 0xd8, 0x93, 0x4c, 0x7a, 0x4a, 0x80, 0x97, 0x82, 0x97, 0x82, 0x97, 0x82, 0x97, 0x82,
		0x97, 0x82, 0x97, 0x92, 0xfb, 0x2d, 0xd9, 0xf7, 0x83, 0x4e, 0x27, 0x12, 0x71, 0xcc, 0x91, 0x9a,
		0xee, 0x31, 0x9a, 0xd3, 0x74, 0x0d, 0x91, 0xe4, 0x7c, 0xb1, 0x65, 0xdd, 0x96, 0x18, 0xda, 0xd6,
		0x82, 0x8d, 0x7d, 0x64, 0x38, 0xb7, 0xb3, 0x40, 0x6b, 0x11, 0x29, 0x76, 0xe6, 0x96, 0x4c, 0x70,
		0xeb, 0xc7, 0x8e, 0xbf, 0xd7, 0x78, 0xf8, 0x51, 0xf0, 0xf7, 0x1a, 0x93, 0x2f, 0x0b, 0xe3, 0x7f,
		0x7e, 0x17, 0x87, 0x0f, 0xc5, 0x1f, 0x3b, 0x7e, 0x69, 0xfa, 0x6e, 0xb1, 0xfc, 0x63, 0xc7, 0x2f,
		0x37, 0xb6, 0xb7, 0xfe, 0xfa, 0xeb, 0xc3, 0xba, 0x9f, 0xd9, 0xfe, 0xbd, 0x3b, 0xf4, 0xd8, 0xfd,
		0xf9, 0x0d, 0x8e, 0xe6, 0x72, 0x7a, 0x51, 0xff, 0x37, 0x7b, 0x9b, 0xf9, 0xef, 0x16, 0x95, 0xd5,
		0x6c, 0xff, 0x8b, 0xa1, 0xdd, 0xf0, 0x4a, 0x28, 0xbe, 0x07, 0x8c, 0xbd, 0x18, 0xc6, 0x2a, 0x80,
		0xb1, 0xac, 0xc2, 0xd8, 0xd8, 0xbb, 0x04, 0x7e, 0xb7, 0xe6, 0x7f, 0x6e, 0xfc, 0x2e, 0xbc, 0x2f,
		0x0d, 0xf7, 0xb7, 0x7f, 0x57, 0x87, 0xcf, 0xdf, 0x7c, 0x58, 0xf6, 0x63, 0x85, 0xf7, 0xd5, 0xe1,
		0xfe, 0x8a, 0xef, 0x54, 0x86, 0xfb, 0x2f, 0xfc, 0x1d, 0xe5, 0xe1, 0xd6, 0xc2, 0x8f, 0x8e, 0xde,
		0x2f, 0xae, 0xfa, 0x40, 0x69, 0xc5, 0x07, 0x76, 0x57, 0x7d, 0x60, 0x77, 0xc5, 0x07, 0x56, 0x4e,
		0xa9, 0xb8, 0xe2, 0x03, 0xe5, 0xe1, 0xc3, 0xc2, 0xcf, 0x6f, 0x2d, 0xff, 0xd1, 0xca, 0x70, 0xfb,
		0x61, 0xd5, 0xf7, 0xaa, 0xc3, 0x87, 0xfd, 0xed, 0x6d, 0x00, 0x7b, 0xe6, 0x80, 0x1d, 0xdb, 0x88,
		0x7e, 0x1b, 0x81, 0xe8, 0x38, 0xa1, 0x43, 0xe5, 0x50, 0x39, 0xc5, 0x89, 0x7a, 0x7a, 0xe2, 0x4e,
		0xfb, 0xec, 0xab, 0xa7, 0x96, 0x4d, 0x12, 0x99, 0xaa, 0x65, 0xd3, 0x41, 0xa6, 0x6a, 0x0d, 0xb3,
		0x42, 0xa6, 0x6a, 0x2d, 0x4b, 0x47, 0xa6, 0xea, 0x8d, 0x13, 0x44, 0xa6, 0xca, 0x21, 0x41, 0x06,
		0x15, 0x54, 0xaf, 0xd1, 0x5e, 0xdc, 0xab, 0xa0, 0x7a, 0xca, 0x2d, 0xa4, 0x88, 0xe7, 0xfe, 0x3f,
		0x2a, 0xa9, 0x98, 0xb2, 0x56, 0xa9, 0x6e, 0x83, 0x9e, 0xec, 0xf8, 0x91, 0x08, 0xe2, 0x50, 0xf1,
		0x23, 0xac, 0xcf, 0xe6, 0x07, 0xae, 0x0a, 0xae, 0x0a, 0xae, 0x0a, 0xae, 0x0a, 0xae, 0x0a, 0xae,
		0xba, 0x61, 0x5c, 0x55, 0x76, 0x84, 0xd2, 0x52, 0xdf, 0x33, 0xe5, 0xab, 0x8c, 0x8e, 0x2f, 0x7b,
		0xf5, 0xe9, 0xa3, 0x3a, 0x08, 0x62, 0x86, 0x2e, 0x75, 0xb6, 0xa0, 0xf5, 0x93, 0xef, 0xb5, 0xe3,
		0xfa, 0x61, 0xf3, 0xfc, 0xf4, 0xdb, 0xe5, 0x51, 0xf3, 0xfc, 0xa8, 0x76, 0x71, 0x7a, 0xc2, 0xcd,
		0xbb, 0x8e, 0x4f, 0xa9, 0xc7, 0x2c, 0xd3, 0x44, 0x4c, 0xcf, 0xf5, 0x3f, 0x5f, 0xdd, 0xda, 0x45,
		0xf3, 0xf8, 0xf4, 0xf4, 0xcc, 0x43, 0xc7, 0x86, 0xcc, 0x2c, 0xe9, 0xa7, 0xe3, 0x6f, 0x17, 0x97,
		0x47, 0xe7, 0x58, 0xd7, 0xac, 0xad, 0xeb, 0xe9, 0xc9, 0xe7, 0xa3, 0x43, 0xac, 0x68, 0x76, 0x56,
		0xf4, 0xf4, 0xbc, 0xfe, 0xa5, 0x7e, 0x52, 0xbb, 0x3c, 0x3d, 0xf7, 0xd0, 0x0d, 0xe4, 0x8f, 0xaf,
		0x06, 0xe2, 0x11, 0x66, 0xb3, 0xe0, 0xa0, 0x0e, 0xf6, 0x82, 0x58, 0xfb, 0x37, 0x61, 0x47, 0x76,
		0xa5, 0xe8, 0xf0, 0x13, 0x07, 0xe7, 0xa7, 0x07, 0x6d, 0x70, 0xd9, 0x74, 0xa0, 0x0d, 0xae, 0x61,
		0x50, 0xd0, 0x06, 0xd7, 0xb2, 0x74, 0x68, 0x83, 0x6f, 0x9c, 0x20, 0xb4, 0x41, 0x87, 0xf8, 0x2f,
		0x63, 0x6d, 0x50, 0xcb, 0x1b, 0xa1, 0x65, 0xfb, 0x67, 0x5c, 0x29, 0x31, 0xd4, 0x06, 0x19, 0x1d,
		0x23, 0xf0, 0xbe, 0xa9, 0x49, 0x13, 0x43, 0x4f, 0x05, 0x2a, 0x8c, 0x45, 0x3b, 0x54, 0x1d, 0x56,
		0xa7, 0x54, 0xd1, 0xf7, 0xf6, 0x85, 0x0f, 0x0a, 0x7d, 0x6f, 0xdf, 0x30, 0x3f, 0xf4, 0xf4, 0xcc,
		0xb0, 0x36, 0xe3, 0x46, 0xdf, 0xdb, 0xc2, 0xc7, 0x52, 0xa9, 0x52, 0x2d, 0x95, 0x76, 0xaa, 0xbb,
		0xd5, 0x9d, 0xbd, 0x72, 0xb9, 0x50, 0x29, 0xa0, 0x03, 0x6e, 0xe6, 0x77, 0x0b, 0xce, 0x71, 0x2c,
		0x7d, 0xe1, 0x1c, 0x07, 0x1b, 0x6f, 0xea, 0xcd, 0x6e, 0x1c, 0x67, 0xa7, 0x76, 0xcd, 0x26, 0xc6,
		0x24, 0x1a, 0x3a, 0x14, 0xdd, 0x60, 0xd0, 0xd3, 0xac, 0xb8, 0xaa, 0xb7, 0xc3, 0x23, 0x76, 0x6e,
		0x40, 0x8b, 0x5c, 0x36, 0x1d, 0x68, 0x91, 0x6b, 0x6c, 0x77, 0x68, 0x91, 0x6b, 0x59, 0x3a, 0xb4,
		0xc8, 0x37, 0x4e, 0x10, 0x5a, 0xa4, 0x43, 0xf1, 0x1e, 0xae, 0xb7, 0x5a, 0x1f, 0x05, 0x71, 0xbd,
		0xd5, 0x3f, 0xbd, 0x20, 0xf3, 0xbd, 0x4e, 0xcb, 0x80, 0xcc, 0x97, 0x79, 0xe1, 0x02, 0x32, 0xdf,
		0xeb, 0xb6, 0x06, 0xae, 0xb7, 0xda, 0x9c, 0x3d, 0x02, 0x71, 0x6f, 0xb9, 0x18, 0x00, 0x71, 0x8f,
		0x8b, 0x0f, 0xf5, 0xa6, 0x87, 0x49, 0xc3, 0x81, 0x16, 0xfc, 0x04, 0xbe, 0xa7, 0x93, 0x83, 0x80,
		0xb4, 0x6c, 0x3a, 0x10, 0x90, 0xd6, 0x30, 0x27, 0x08, 0x48, 0x6b, 0x59, 0x3a, 0x04, 0xa4, 0x37,
		0x4e, 0x10, 0x02, 0x92, 0x43, 0x91, 0x04, 0x63, 0x01, 0xa9, 0x15, 0x86, 0x3d, 0x11, 0x28, 0x8e,
		0x87, 0x5c, 0x0b, 0xa0, 0x72, 0x0c, 0x66, 0x60, 0x79, 0x0b, 0x79, 0x35, 0xa5, 0x42, 0x1d, 0x8c,
		0x82, 0x46, 0x16, 0x1b, 0xc8, 0x8b, 0xdb, 0xd7, 0xe2, 0x26, 0xe8, 0x4f, 0x9b, 0xf4, 0xe4, 0xc3,
		0xbe, 0x50, 0xed, 0x31, 0x51, 0xf2, 0x95, 0xd0, 0xbf, 0xc2, 0xe8, 0xa7, 0x2f, 0x55, 0xac, 0x03,
		0xd5, 0x16, 0xf9, 0xe7, 0x6f, 0xc4, 0x0b, 0xef, 0xe4, 0xfb, 0x51, 0xa8, 0xc3, 0x76, 0xd8, 0x8b,
		0x93, 0xaf, 0xf2, 0xad, 0xab, 0x7e, 0x3e, 0x92, 0xad, 0x7c, 0xd0, 0x95, 0x7e, 0x1c, 0x74, 0x65,
		0x9c, 0x7c, 0x95, 0x1f, 0xdf, 0xc8, 0x10, 0x47, 0x5a, 0xf8, 0xfd, 0xb0, 0x27, 0xdb, 0xf7, 0x79,
		0x25, 0xe4, 0xd5, 0x75, 0x2b, 0x8c, 0xe2, 0xe4, 0xab, 0x7c, 0xd0, 0xf9, 0x7b, 0x8c, 0x06, 0xe1,
		0x40, 0xfb, 0xfd, 0x30, 0xd6, 0xf9, 0x31, 0xc5, 0x8d, 0x27, 0xff, 0x4c, 0x1a, 0x03, 0xd9, 0x45,
		0x09, 0x7b, 0xe6, 0x6c, 0xd1, 0x94, 0xbd, 0x81, 0xfa, 0xa9, 0xc2, 0x5f, 0xca, 0x0f, 0xb4, 0x8e,
		0x64, 0x6b, 0xb4, 0x22, 0xd6, 0xcd, 0xf9, 0x31, 0x89, 0xb0, 0x38, 0x37, 0xcb, 0x9b, 0x7e, 0x06,
		0x01, 0x96, 0xa7, 0xc1, 0x25, 0x02, 0xe2, 0x14, 0xf9, 0xf0, 0x8c, 0x78, 0xb8, 0x45, 0x3a, 0x6c,
		0x23, 0x1c, 0xb6, 0x91, 0x0d, 0xdb, 0x88, 0x66, 0xb3, 0xe9, 0xd7, 0xa1, 0x8c, 0x78, 0xb8, 0x9d,
		0x05, 0x90, 0xe2, 0x27, 0x29, 0x2e, 0x4e, 0x91, 0x97, 0xb0, 0x58, 0x80, 0xb0, 0xc8, 0x1e, 0x5e,
		0x79, 0xc3, 0x2c, 0x57, 0xb8, 0x65, 0x0f, 0xbb, 0xec, 0xe1, 0x97, 0x3d, 0x0c, 0xf3, 0xd1, 0x63,
		0x72, 0x8c, 0x84, 0x45, 0x2e, 0xf0, 0x9c, 0x4c, 0x68, 0x84, 0x7d, 0xbe, 0xe6, 0x26, 0x77, 0xce,
		0x79, 0xd4, 0xc7, 0x29, 0x32, 0xdb, 0x7a, 0xbc, 0xf2, 0x7f, 0x6c, 0xe1, 0x9a, 0x33, 0x6c, 0xbb,
		0x01, 0xdf, 0xdc, 0x61, 0xdc, 0x19, 0x38, 0x77, 0x06, 0xd6, 0x9d, 0x81, 0x77, 0x5e, 0x30, 0xcf,
		0x0c, 0xee, 0x93, 0x55, 0xbc, 0xe4, 0x08, 0xb0, 0x39, 0xde, 0x97, 0x3d, 0x2c, 0x44, 0xc3, 0x55,
		0x9e, 0x17, 0x6e, 0xce, 0x2e, 0x7f, 0x98, 0xdc, 0xe1, 0xf0, 0x48, 0x56, 0x50, 0xf0, 0xc7, 0x7d,
		0x6b, 0x7a, 0x93, 0xec, 0x1a, 0x5b, 0xe2, 0x3b, 0x99, 0x1e, 0x4f, 0xd2, 0x5b, 0x00, 0xe9, 0x05,
		0xe9, 0x05, 0xe9, 0x05, 0xe9, 0x05, 0xe9, 0x05, 0xb2, 0x2e, 0x5f, 0x45, 0x6e, 0x5a, 0x57, 0x32,
		0xb1, 0x31, 0x47, 0xeb, 0x09, 0xc6, 0x67, 0xe7, 0xe6, 0xa4, 0xaf, 0xd1, 0x4c, 0x99, 0x6e, 0x54,
		0x9e, 0x0a, 0x18, 0x7b, 0x52, 0xe0, 0x02, 0x39, 0x70, 0x8b, 0x24, 0xb8, 0x42, 0x16, 0x9c, 0x23,
		0x0d, 0xce, 0x91, 0x07, 0xe7, 0x48, 0x04, 0x4f, 0x32, 0xc1, 0x94, 0x54, 0x24, 0xab, 0xcb, 0x56,
		0x51, 0x5b, 0xf0, 0x9b, 0x03, 0xa9, 0x74, 0xa1, 0xc2, 0xd9, 0x67, 0x4e, 0x51, 0xbc, 0xc2, 0x78,
		0x8a, 0x3c, 0x5b, 0x42, 0x3c, 0x7f, 0xf1, 0xc6, 0x9c, 0x1c, 0xf7, 0x96, 0x11, 0x0b, 0x93, 0x65,
		0xde, 0x42, 0x62, 0x61, 0xbe, 0xae, 0x1c, 0x97, 0x5f, 0xf4, 0x55, 0xdc, 0x8f, 0xcf, 0x3b, 0x02,
		0x4b, 0xf3, 0x5b, 0x2d, 0xb8, 0x73, 0x6f, 0xab, 0x55, 0xca, 0xe5, 0xdd, 0x32, 0xb6, 0x1b, 0xb6,
		0x9b, 0x03, 0xdc, 0x94, 0xff, 0xec, 0x1a, 0xe0, 0xf4, 0x6b, 0x6c, 0x0b, 0x71, 0xa7, 0xa3, 0xc0,
		0x1f, 0xa8, 0x58, 0x07, 0xad, 0x1e, 0x73, 0x76, 0x1f, 0x89, 0xae, 0x88, 0x84, 0x6a, 0x83, 0x94,
		0xa6, 0x18, 0x2a, 0x9d, 0x7f, 0xfe, 0x94, 0x2b, 0x15, 0xab, 0x85, 0x9c, 0x9f, 0xab, 0xe5, 0x0e,
		0xc2, 0xa8, 0x23, 0xa2, 0xdc, 0x97, 0x40, 0x8b, 0x5f, 0xc1, 0x7d, 0xee, 0x6c, 0x7a, 0xde, 0x32,
		0x57, 0xca, 0x6d, 0x1d, 0x7c, 0x39, 0xf3, 0x4b, 0xdb, 0x9e, 0x03, 0x1c, 0xc0, 0x11, 0x39, 0xea,
		0x31, 0x14, 0x7c, 0x94, 0xa5, 0x1e, 0x2d, 0xdc, 0x11, 0x54, 0x75, 0x4d, 0xa1, 0x4a, 0x26, 0xfe,
		0x54, 0xa9, 0x5a, 0x73, 0x0b, 0x80, 0x39, 0x80, 0x39, 0x6c, 0xf4, 0xf3, 0xe2, 0xd8, 0x7b, 0x90,
		0x6f, 0x4d, 0xfd, 0x02, 0xe2, 0x72, 0xad, 0xad, 0x7f, 0x04, 0x24, 0x64, 0x18, 0xdf, 0x34, 0x41,
		0x64, 0x18, 0x37, 0x94, 0xd2, 0x21, 0xc3, 0x48, 0xca, 0xdb, 0x90, 0x61, 0xcc, 0x9a, 0x1a, 0xe1,
		0x56, 0x86, 0xf1, 0xa3, 0x03, 0x09, 0xc6, 0x32, 0x12, 0x8c, 0xd9, 0xd7, 0x72, 0x90, 0x60, 0x34,
		0x38, 0x5f, 0x64, 0x3c, 0x36, 0x1c, 0x95, 0xe6, 0xb7, 0x9a, 0x8b, 0x09, 0xc6, 0x62, 0x19, 0xe9,
		0x45, 0x6c, 0x36, 0x17, 0x88, 0x29, 0xff, 0xd9, 0x21, 0xbd, 0xb8, 0xce, 0xb6, 0x40, 0x7a, 0x71,
		0x43, 0x29, 0x29, 0xd2, 0x8b, 0x6c, 0x02, 0x41, 0xa4, 0x17, 0xe9, 0x27, 0x8e, 0xf4, 0x22, 0x66,
		0xe7, 0x08, 0x73, 0x40, 0x7a, 0xf1, 0x05, 0xfb, 0x79, 0x9c, 0xb3, 0xbb, 0x9d, 0x86, 0x53, 0x2e,
		0xe4, 0x17, 0x27, 0x73, 0x45, 0x82, 0xf1, 0x35, 0xd3, 0x43, 0x82, 0x31, 0x45, 0x6b, 0x44, 0x82,
		0xd1, 0x10, 0x99, 0x43, 0x82, 0xd1, 0x38, 0x73, 0x43, 0x82, 0x31, 0x6b, 0x7a, 0x84, 0x3b, 0x09,
		0xc6, 0x96, 0x54, 0x41, 0x74, 0xef, 0x40, 0x86, 0x71, 0x8f, 0xf1, 0x14, 0x8f, 0x85, 0xba, 0x1a,
		0x37, 0x0b, 0x83, 0x9e, 0xf3, 0xc6, 0x27, 0xe9, 0x64, 0x8a, 0xb1, 0x80, 0xac, 0x87, 0x61, 0x67,
		0x85, 0x14, 0xa3, 0x81, 0xad, 0x86, 0x33, 0x8c, 0xd8, 0x6e, 0x19, 0xd9, 0x6e, 0x90, 0x0a, 0x5f,
		0xf5, 0x42, 0x92, 0x71, 0x9d, 0x6d, 0x81, 0x24, 0xe3, 0x86, 0x92, 0x52, 0x24, 0x19, 0xd9, 0xc4,
		0x82, 0x48, 0x32, 0xd2, 0x4f, 0x1c, 0x49, 0x46, 0xcc, 0xce, 0x11, 0xe6, 0x80, 0x24, 0xe3, 0xcb,
		0x78, 0x8c, 0x50, 0x1d, 0xd1, 0xe1, 0x9f, 0x62, 0x4c, 0x66, 0x8a, 0x04, 0xe3, 0x6b, 0xa6, 0x87,
		0x04, 0x63, 0x8a, 0xb6, 0x88, 0x04, 0xa3, 0x21, 0x22, 0x87, 0x04, 0xa3, 0x71, 0xd6, 0x86, 0x04,
		0x63, 0xd6, 0xb4, 0x08, 0x87, 0x12, 0x8c, 0x61, 0xd8, 0x13, 0x81, 0x72, 0x20, 0xc3, 0x58, 0x28,
		0xc0, 0x04, 0xd7, 0xa3, 0x91, 0x90, 0xc3, 0x52, 0x7f, 0x41, 0x0e, 0x03, 0x7b, 0x7a, 0x0d, 0x8b,
		0x82, 0x1c, 0x66, 0x83, 0x58, 0x41, 0x0e, 0xc3, 0xec, 0x72, 0x90, 0xc3, 0x5c, 0xe6, 0x32, 0x5e,
		0xd8, 0xd7, 0x32, 0x54, 0x41, 0x8f, 0xbf, 0x1c, 0x96, 0xcc, 0x14, 0x72, 0xd8, 0x6b, 0xa6, 0x07,
		0x39, 0x2c, 0x4d, 0x5b, 0x84, 0x1c, 0x66, 0x86, 0xc8, 0x41, 0x0e, 0x33, 0xce, 0xda, 0x20, 0x87,
		0x65, 0x4d, 0x8b, 0x80, 0x1c, 0x96, 0x3e, 0x8c, 0x43, 0x0e, 0x5b, 0xeb, 0xa9, 0x41, 0x0e, 0x33,
		0xf1, 0x82, 0x1c, 0x06, 0xf6, 0xf4, 0x1a, 0x16, 0x05, 0x39, 0xcc, 0x06, 0xb1, 0x82, 0x1c, 0x86,
		0xd9, 0xe5, 0x20, 0x87, 0xb9, 0xcc, 0x65, 0xbc, 0x7e, 0x10, 0x69, 0xe9, 0x82, 0x1a, 0x36, 0x9b,
		0x28, 0xc4, 0xb0, 0xd7, 0x4c, 0x0f, 0x62, 0x58, 0x8a, 0xa6, 0x08, 0x31, 0xcc, 0x10, 0x8d, 0x83,
		0x18, 0x66, 0x9c, 0xb3, 0x41, 0x0c, 0xcb, 0x9a, 0x12, 0x01, 0x31, 0x2c, 0x7d, 0x18, 0x87, 0x18,
		0xb6, 0xd6, 0x53, 0x83, 0x18, 0x66, 0xe2, 0x05, 0x31, 0x0c, 0xec, 0xe9, 0x35, 0x2c, 0x0a, 0x62,
		0x98, 0x0d, 0x62, 0x05, 0x31, 0x0c, 0xb3, 0xcb, 0x41, 0x0c, 0x73, 0x99, 0xcb, 0x78, 0x3a, 0x0a,
		0x54, 0x2c, 0xa7, 0xbd, 0x50, 0x98, 0xeb, 0x61, 0x4f, 0xe6, 0x0a, 0x49, 0xec, 0x35, 0xd3, 0x83,
		0x24, 0x96, 0xa2, 0x35, 0x42, 0x12, 0x33, 0x44, 0xe6, 0x20, 0x89, 0x19, 0x67, 0x6e, 0x90, 0xc4,
		0xb2, 0xa6, 0x47, 0x40, 0x12, 0x4b, 0x1f, 0xc6, 0x21, 0x89, 0xad, 0xf5, 0xd4, 0x20, 0x89, 0x99,
		0x78, 0x41, 0x12, 0x03, 0x7b, 0x7a, 0x0d, 0x8b, 0x82, 0x24, 0x66, 0x83, 0x58, 0x41, 0x12, 0xc3,
		0xec, 0x72, 0x90, 0xc4, 0x1c, 0x9d, 0x11, 0x33, 0x66, 0xe5, 0xd5, 0x94, 0x0a, 0x75, 0xa0, 0x65,
		0xc8, 0xb3, 0x65, 0xbc, 0x17, 0xb7, 0xaf, 0xc5, 0x4d, 0xd0, 0x0f, 0xc6, 0x37, 0x03, 0x78, 0xf9,
		0xb0, 0x2f, 0x54, 0x7b, 0x2c, 0x31, 0xf9, 0x4a, 0xe8, 0x5f, 0x61, 0xf4, 0xd3, 0x97, 0x23, 0x36,
		0xa8, 0xda, 0x22, 0xff, 0xfc, 0x8d, 0x78, 0xe1, 0x9d, 0x7c, 0x7f, 0xea, 0x1f, 0xe3, 0xe4, 0xab,
		0x7c, 0xeb, 0xaa, 0x9f, 0x8f, 0x64, 0x2b, 0x1f, 0x74, 0xa5, 0x1f, 0x07, 0x5d, 0x19, 0x27, 0x5f,
		0xe5, 0x65, 0xff, 0xb6, 0xe4, 0xc7, 0x91, 0x16, 0x7e, 0x3f, 0xec, 0xc9, 0xf6, 0x7d, 0x5e, 0x09,
		0x79, 0x75, 0xdd, 0x0a, 0xa3, 0x38, 0xf9, 0x2a, 0x1f, 0x74, 0xfe, 0x1e, 0xc7, 0xb9, 0xe1, 0x40,
		0xfb, 0xfd, 0x30, 0xd6, 0xf9, 0x28, 0x1c, 0x68, 0x11, 0x4f, 0xfe, 0xc9, 0x0f, 0xd4, 0x4f, 0x15,
		0xfe, 0x52, 0x7e, 0xa0, 0x75, 0x24, 0x5b, 0xe3, 0x6f, 0x2c, 0xbc, 0x95, 0x8f, 0x75, 0xa0, 0x05,
		0x2f, 0x3f, 0xcd, 0x67, 0xcf, 0xf0, 0x98, 0x09, 0x93, 0x5d, 0x3b, 0x22, 0x5f, 0xc9, 0xad, 0x61,
		0x7a, 0x14, 0x8e, 0x33, 0x99, 0xd7, 0xb1, 0x8c, 0x75, 0x4d, 0xeb, 0x88, 0x95, 0x0f, 0xf1, 0xbe,
		0x4a, 0x75, 0xd4, 0x13, 0x23, 0xde, 0xc4, 0xac, 0x71, 0xbc, 0xf7, 0x35, 0xb8, 0x7b, 0x32, 0xb3,
		0xc2, 0xc7, 0x52, 0xa9, 0x52, 0x2d, 0x95, 0x76, 0xaa, 0xbb, 0xd5, 0x9d, 0xbd, 0x72, 0xb9, 0x50,
		0x29, 0x30, 0x6a, 0xcf, 0xef, 0x9d, 0x8e, 0x28, 0xa6, 0xe8, 0x1c, 0x8c, 0x4c, 0x4f, 0x0d, 0x7a,
		0x3d, 0x8e, 0x53, 0xfb, 0x16, 0x8b, 0x88, 0x55, 0xa7, 0x7d, 0x2e, 0x1e, 0x83, 0x29, 0xbe, 0x6f,
		0x00, 0xae, 0x33, 0x0a, 0x8a, 0xbd, 0x58, 0x47, 0x83, 0xb6, 0x56, 0x53, 0x11, 0xe5, 0x64, 0xf2,
		0xf8, 0xea, 0xd3, 0xa7, 0xd7, 0x9c, 0x45, 0x8d, 0xcd, 0x83, 0xab, 0x7e, 0xf3, 0x5c, 0xb6, 0x9a,
		0xb5, 0xae, 0xbc, 0x08, 0xba, 0xb2, 0x59, 0xef, 0xdf, 0x96, 0x2e, 0x22, 0x2d, 0xce, 0xc6, 0x8f,
		0xa9, 0x79, 0x32, 0x7d, 0x38, 0xcd, 0x5a, 0xe7, 0xef, 0x73, 0xd9, 0x3a, 0x1d, 0xe8, 0xb3, 0x30,
		0xd6, 0xcd, 0xf3, 0xd1, 0x23, 0x69, 0x7e, 0x9b, 0xfc, 0xfd, 0xb5, 0xe4, 0xcf, 0x7f, 0x07, 0xfa,
		0x60, 0x7f, 0x06, 0x96, 0xdd, 0x10, 0x37, 0xf7, 0x93, 0x39, 0xb7, 0x63, 0x77, 0x97, 0xd9, 0xb3,
		0x6d, 0x3b, 0x23, 0x5b, 0xda, 0x4d, 0x33, 0xda, 0x3f, 0x32, 0x5b, 0x5f, 0x76, 0x72, 0x42, 0x75,
		0xfa, 0xa1, 0x54, 0x3a, 0xd7, 0x0e, 0x7b, 0x61, 0x64, 0x09, 0x67, 0x78, 0x70, 0x7e, 0x3e, 0x1c,
		0x9f, 0x35, 0xa7, 0x67, 0xc4, 0xe1, 0x19, 0x71, 0x76, 0x5b, 0xdb, 0x99, 0x09, 0x28, 0xba, 0x0d,
		0x86, 0x16, 0xe9, 0x35, 0x01, 0x9d, 0xb6, 0x83, 0xeb, 0xf4, 0xa8, 0x4a, 0x3b, 0x22, 0xf1, 0x86,
		0xb7, 0xbd, 0xd1, 0x5d, 0xdd, 0xe0, 0xb4, 0xc6, 0x4f, 0x67, 0x82, 0x34, 0x23, 0x11, 0x19, 0xb9,
		0x2d, 0xe3, 0x76, 0xce, 0xa8, 0x09, 0x81, 0xca, 0x28, 0x30, 0xd1, 0xec, 0x4a, 0xf3, 0x7b, 0x84,
		0x60, 0x7f, 0x78, 0x73, 0x36, 0x10, 0xd1, 0x55, 0xf7, 0x24, 0x75, 0x52, 0xcf, 0x27, 0x40, 0xe4,
		0x13, 0x66, 0x55, 0x8d, 0x44, 0xc3, 0x51, 0x1f, 0x36, 0xb0, 0x71, 0x78, 0xc0, 0xee, 0x61, 0x00,
		0x5b, 0xe5, 0x69, 0xd6, 0x8b, 0xf5, 0xad, 0xd7, 0x8a, 0x59, 0x2f, 0xa6, 0xcf, 0x16, 0x5b, 0x39,
		0x94, 0xb4, 0x42, 0x95, 0x37, 0xa5, 0xb2, 0xe4, 0x1b, 0x67, 0xe6, 0x2e, 0xa6, 0xe3, 0x13, 0x1b,
		0x2d, 0x2d, 0x00, 0x58, 0x03, 0x02, 0x9b, 0x80, 0xc0, 0x03, 0x18, 0x6c, 0x03, 0x04, 0x1b, 0xa0,
		0x60, 0x03, 0x18, 0x6c, 0x80, 0x63, 0x33, 0xb4, 0x1d, 0x6a, 0x40, 0x99, 0x07, 0x16, 0x7b, 0xfb,
		0x6d, 0x0e, 0x5f, 0x6c, 0xed, 0x35, 0x3b, 0x30, 0x63, 0x1d, 0x6e, 0x38, 0xc0, 0x0e, 0x2f, 0xf8,
		0xe1, 0x02, 0x43, 0xec, 0xe0, 0x88, 0x1d, 0x2c, 0xb1, 0x83, 0x27, 0x3b, 0x30, 0x65, 0x09, 0xae,
		0xac, 0xc3, 0x56, 0x32, 0x81, 0x49, 0xcd, 0x82, 0xf5, 0x7d, 0x3a, 0xf3, 0x5e, 0x36, 0x4b, 0x28,
		0x9e, 0xc3, 0x99, 0xe5, 0x0a, 0x65, 0x36, 0xbd, 0x3b, 0x38, 0xf5, 0xe8, 0xe0, 0xd9, 0x8b, 0x83,
		0xdb, 0xa9, 0x51, 0xb6, 0xbd, 0x35, 0xd8, 0x1e, 0xf9, 0x64, 0xdb, 0x2b, 0x63, 0xb3, 0xeb, 0x55,
		0xd9, 0xf4, 0xb8, 0x48, 0xfc, 0x4e, 0x4f, 0x04, 0xdd, 0x48, 0x74, 0x39, 0x38, 0x9d, 0x59, 0xd4,
		0x55, 0x65, 0x30, 0x97, 0xb3, 0x69, 0xfe, 0xf7, 0xc3, 0x87, 0xc9, 0xf9, 0xb9, 0xfc, 0x04, 0xc8,
		0x37, 0xb5, 0x1c, 0xd6, 0x62, 0xe4, 0x35, 0xab, 0x46, 0xe5, 0xc3, 0xe9, 0x92, 0x19, 0x81, 0xd6,
		0x81, 0xd6, 0x81, 0xd6, 0x81, 0xd6, 0x81, 0xd6, 0x81, 0xd6, 0x81, 0xd6, 0x39, 0x49, 0xeb, 0x12,
		0x2c, 0x07, 0xb3, 0x23, 0x5f, 0x8c, 0xe9, 0x79, 0x23, 0x3e, 0xc4, 0x6e, 0x36, 0x21, 0xf0, 0x3a,
		0xf0, 0x3a, 0xf0, 0x3a, 0xf0, 0x3a, 0xf0, 0x3a, 0xf0, 0x3a, 0xf0, 0x3a, 0x27, 0x79, 0xdd, 0x0c,
		0xca, 0x41, 0xeb, 0xc8, 0xd7, 0x62, 0xd2, 0x6f, 0x8c, 0x0d, 0xa9, 0x9b, 0x4c, 0x87, 0x07, 0xa5,
		0x2b, 0x80, 0xd2, 0x81, 0xd2, 0x81, 0xd2, 0x81, 0xd2, 0x81, 0xd2, 0xd9, 0x5a, 0x15, 0xdb, 0x05,
		0x4a, 0xc9, 0x44, 0xc6, 0x4d, 0x16, 0xa5, 0xea, 0x08, 0x3e, 0x97, 0xc5, 0x3c, 0x1e, 0xef, 0x7b,
		0x9c, 0x1b, 0x97, 0xce, 0x94, 0xac, 0xae, 0x25, 0x62, 0x77, 0x0d, 0x11, 0xc7, 0x6b, 0x87, 0x78,
		0x5f, 0x33, 0xc4, 0xb5, 0x31, 0x3e, 0xfb, 0x6b, 0x84, 0xd8, 0x77, 0xb9, 0x67, 0x7f, 0x4d, 0x10,
		0x7a, 0x0e, 0xb3, 0xd4, 0x58, 0x18, 0x6b, 0x2d, 0x1c, 0x35, 0x97, 0x65, 0xda, 0xcb, 0x1f, 0xfe,
		0x1b, 0x53, 0x8a, 0x58, 0xe8, 0x38, 0xf9, 0x6a, 0xaa, 0xd4, 0x4c, 0x68, 0x06, 0xba, 0x79, 0x72,
		0xd9, 0x94, 0x4c, 0x2a, 0xe8, 0x17, 0x76, 0x23, 0x87, 0x4a, 0x7a, 0xd0, 0x51, 0xd0, 0x51, 0xd0,
		0x51, 0xd0, 0x51, 0xd0, 0x51, 0xd0, 0x51, 0x72, 0xbf, 0x35, 0x90, 0x4a, 0xef, 0x16, 0x19, 0xb2,
		0x51, 0x4e, 0x64, 0xf4, 0x3c, 0x50, 0x57, 0xfc, 0x6e, 0x44, 0x64, 0x78, 0xf1, 0xd1, 0x57, 0xa9,
		0xf8, 0x5e, 0x97, 0xfe, 0x3d, 0xe8, 0x0d, 0x04, 0xe3, 0x4b, 0xbe, 0x3f, 0x47, 0x41, 0x5b, 0xcb,
		0x50, 0x1d, 0xca, 0x2b, 0xc9, 0xed, 0xf2, 0x97, 0x79, 0xdf, 0x21, 0xae, 0x82, 0xe9, 0xcd, 0xf8,
		0x7c, 0xee, 0x2e, 0x61, 0xe8, 0xf6, 0xe7, 0xb7, 0x46, 0x70, 0xc7, 0x7f, 0x6b, 0x94, 0x8a, 0x7b,
		0xa5, 0xbd, 0x4a, 0xb5, 0xb8, 0x57, 0xc6, 0x1e, 0xc9, 0xfa, 0x1e, 0xc1, 0xdd, 0x6d, 0x4b, 0x5f,
		0x0d, 0x88, 0x46, 0x5c, 0x7c, 0xa8, 0xd7, 0x0e, 0x6f, 0x6e, 0x06, 0x4a, 0xea, 0x7b, 0xae, 0x29,
		0xcd, 0xe7, 0x13, 0x84, 0x90, 0xb4, 0x6c, 0x3a, 0x10, 0x92, 0xd6, 0x30, 0x29, 0x08, 0x49, 0x6b,
		0x59, 0x3a, 0x84, 0xa4, 0x37, 0x4e, 0x10, 0x42, 0x92, 0x43, 0x11, 0x05, 0xf2, 0x9a, 0xaf, 0x80,
		0x41, 0x07, 0xf3, 0x9a, 0x33, 0x5e, 0x21, 0x45, 0x9c, 0x7c, 0x7d, 0x8f, 0xd4, 0x26, 0x4f, 0x96,
		0xca, 0xa6, 0x97, 0xc4, 0xc2, 0x9e, 0x64, 0xd2, 0x53, 0x02, 0xbc, 0x14, 0xbc, 0x14, 0xbc, 0x14,
		0xbc, 0x14, 0xbc, 0x14, 0xbc, 0x94, 0xdc, 0x6f, 0xc9, 0xbe, 0x1f, 0x74, 0x3a, 0x91, 0x88, 0x63,
		0x8e, 0xd4, 0x74, 0x8f, 0xd1, 0x9c, 0xa6, 0x6b, 0x88, 0x24, 0xe7, 0x8b, 0x2d, 0xeb, 0xb6, 0xc4,
		0xd0, 0xb6, 0x16, 0x6c, 0xec, 0x23, 0xc3, 0xb9, 0x9d, 0x05, 0x5a, 0x8b, 0x48, 0xb1, 0x33, 0xb7,
		0x64, 0x82, 0x5b, 0x3f, 0x76, 0xfc, 0xbd, 0xc6, 0xc3, 0x8f, 0x82, 0xbf, 0xd7, 0x98, 0x7c, 0x59,
		0x18, 0xff, 0xf3, 0xbb, 0x38, 0x7c, 0x28, 0xfe, 0xd8, 0xf1, 0x4b, 0xd3, 0x77, 0x8b, 0xe5, 0x1f,
		0x3b, 0x7e, 0xb9, 0xb1, 0xbd, 0xf5, 0xd7, 0x5f, 0x1f, 0xd6, 0xfd, 0xcc, 0xf6, 0xef, 0xdd, 0xa1,
		0xc7, 0xee, 0xcf, 0x6f, 0x70, 0x34, 0x97, 0xd3, 0x8b, 0xfa, 0xbf, 0xd9, 0xdb, 0xcc, 0x7f, 0xb7,
		0xa8, 0xac, 0x66, 0xfb, 0x5f, 0x0c, 0xed, 0x86, 0x57, 0x42, 0xf1, 0x3d, 0x60, 0xec, 0xc5, 0x30,
		0x56, 0x01, 0x8c, 0x65, 0x15, 0xc6, 0xc6, 0xde, 0x25, 0xf0, 0xbb, 0x35, 0xff, 0x73, 0xe3, 0x77,
		0xe1, 0x7d, 0x69, 0xb8, 0xbf, 0xfd, 0xbb, 0x3a, 0x7c, 0xfe, 0xe6, 0xc3, 0xb2, 0x1f, 0x2b, 0xbc,
		0xaf, 0x0e, 0xf7, 0x57, 0x7c, 0xa7, 0x32, 0xdc, 0x7f, 0xe1, 0xef, 0x28, 0x0f, 0xb7, 0x16, 0x7e,
		0x74, 0xf4, 0x7e, 0x71, 0xd5, 0x07, 0x4a, 0x2b, 0x3e, 0xb0, 0xbb, 0xea, 0x03, 0xbb, 0x2b, 0x3e,
		0xb0, 0x72, 0x4a, 0xc5, 0x15, 0x1f, 0x28, 0x0f, 0x1f, 0x16, 0x7e, 0x7e, 0x6b, 0xf9, 0x8f, 0x56,
		0x86, 0xdb, 0x0f, 0xab, 0xbe, 0x57, 0x1d, 0x3e, 0xec, 0x6f, 0x6f, 0x03, 0xd8, 0x33, 0x07, 0xec,
		0xd8, 0x46, 0xf4, 0xdb, 0x08, 0x44, 0xc7, 0x09, 0x1d, 0x2a, 0x87, 0xca, 0x29, 0x4e, 0xd4, 0xd3,
		0x13, 0x77, 0xda, 0x67, 0x5f, 0x3d, 0xb5, 0x6c, 0x92, 0xc8, 0x54, 0x2d, 0x9b, 0x0e, 0x32, 0x55,
		0x6b, 0x98, 0x15, 0x32, 0x55, 0x6b, 0x59, 0x3a, 0x32, 0x55, 0x6f, 0x9c, 0x20, 0x32, 0x55, 0x0e,
		0x09, 0x32, 0xa8, 0xa0, 0x7a, 0x8d, 0xf6, 0xe2, 0x5e, 0x05, 0xd5, 0x53, 0x6e, 0x21, 0x45, 0x3c,
		0xf7, 0xff, 0x51, 0x49, 0xc5, 0x94, 0xb5, 0x4a, 0x75, 0x1b, 0xf4, 0x64, 0xc7, 0x8f, 0x44, 0x10,
		0x87, 0x8a, 0x1f, 0x61, 0x7d, 0x36, 0x3f, 0x70, 0x55, 0x70, 0x55, 0x70, 0x55, 0x70, 0x55, 0x70,
		0x55, 0x70, 0xd5, 0x0d, 0xe3, 0xaa, 0xb2, 0x23, 0x94, 0x96, 0xfa, 0x9e, 0x29, 0x5f, 0x65, 0x74,
		0x7c, 0xd9, 0xab, 0x4f, 0x1f, 0xd5, 0x41, 0x10, 0x33, 0x74, 0xa9, 0xb3, 0x05, 0xad, 0x9f, 0x7c,
		0xaf, 0x1d, 0xd7, 0x0f, 0x9b, 0xe7, 0xa7, 0xdf, 0x2e, 0x8f, 0x9a, 0xe7, 0x47, 0xb5, 0x8b, 0xd3,
		0x13, 0x6e, 0xde, 0x75, 0x7c, 0x4a, 0x3d, 0x66, 0x99, 0x26, 0x62, 0x7a, 0xae, 0xff, 0xf9, 0xea,
		0xd6, 0x2e, 0x9a, 0xc7, 0xa7, 0xa7, 0x67, 0x1e, 0x3a, 0x36, 0x64, 0x66, 0x49, 0x3f, 0x1d, 0x7f,
		0xbb, 0xb8, 0x3c, 0x3a, 0xc7, 0xba, 0x66, 0x6d, 0x5d, 0x4f, 0x4f, 0x3e, 0x1f, 0x1d, 0x62, 0x45,
		0xb3, 0xb3, 0xa2, 0xa7, 0xe7, 0xf5, 0x2f, 0xf5, 0x93, 0xda, 0xe5, 0xe9, 0xb9, 0x87, 0x6e, 0x20,
		0x7f, 0x7c, 0x35, 0x10, 0x8f, 0x30, 0x9b, 0x05, 0x07, 0x75, 0xb0, 0x17, 0xc4, 0xda, 0xbf, 0x09,
		0x3b, 0xb2, 0x2b, 0x45, 0x87, 0x9f, 0x38, 0x38, 0x3f, 0x3d, 0x68, 0x83, 0xcb, 0xa6, 0x03, 0x6d,
		0x70, 0x0d, 0x83, 0x82, 0x36, 0xb8, 0x96, 0xa5, 0x43, 0x1b, 0x7c, 0xe3, 0x04, 0xa1, 0x0d, 0x3a,
		0xc4, 0x7f, 0x19, 0x6b, 0x83, 0x5a, 0xde, 0x08, 0x2d, 0xdb, 0x3f, 0xe3, 0x4a, 0x89, 0xa1, 0x36,
		0xc8, 0xe8, 0x18, 0x81, 0xf7, 0x4d, 0x4d, 0x9a, 0x18, 0x7a, 0x2a, 0x50, 0x61, 0x2c, 0xda, 0xa1,
		0xea, 0xb0, 0x3a, 0xa5, 0x8a, 0xbe, 0xb7, 0x2f, 0x7c, 0x50, 0xe8, 0x7b, 0xfb, 0x86, 0xf9, 0xa1,
		0xa7, 0x67, 0x86, 0xb5, 0x19, 0x37, 0xfa, 0xde, 0x16, 0x3e, 0x96, 0x4a, 0x95, 0x6a, 0xa9, 0xb4,
		0x53, 0xdd, 0xad, 0xee, 0xec, 0x95, 0xcb, 0x85, 0x4a, 0x01, 0x1d, 0x70, 0x33, 0xbf, 0x5b, 0x70,
		0x8e, 0x63, 0xe9, 0x0b, 0xe7, 0x38, 0xd8, 0x78, 0x53, 0x6f, 0x76, 0xe3, 0x38, 0x3b, 0xb5, 0x6b,
		0x36, 0x31, 0x26, 0xd1, 0xd0, 0xa1, 0xe8, 0x06, 0x83, 0x9e, 0x66, 0xc5, 0x55, 0xbd, 0x1d, 0x1e,
		0xb1, 0x73, 0x03, 0x5a, 0xe4, 0xb2, 0xe9, 0x40, 0x8b, 0x5c, 0x63, 0xbb, 0x43, 0x8b, 0x5c, 0xcb,
		0xd2, 0xa1, 0x45, 0xbe, 0x71, 0x82, 0xd0, 0x22, 0x1d, 0x8a, 0xf7, 0x70, 0xbd, 0xd5, 0xfa, 0x28,
		0x88, 0xeb, 0xad, 0xfe, 0xe9, 0x05, 0x99, 0xef, 0x75, 0x5a, 0x06, 0x64, 0xbe, 0xcc, 0x0b, 0x17,
		0x90, 0xf9, 0x5e, 0xb7, 0x35, 0x70, 0xbd, 0xd5, 0xe6, 0xec, 0x11, 0x88, 0x7b, 0xcb, 0xc5, 0x00,
		0x88, 0x7b, 0x5c, 0x7c, 0xa8, 0x37, 0x3d, 0x4c, 0x1a, 0x0e, 0xb4, 0xe0, 0x27, 0xf0, 0x3d, 0x9d,
		0x1c, 0x04, 0xa4, 0x65, 0xd3, 0x81, 0x80, 0xb4, 0x86, 0x39, 0x41, 0x40, 0x5a, 0xcb, 0xd2, 0x21,
		0x20, 0xbd, 0x71, 0x82, 0x10, 0x90, 0x1c, 0x8a, 0x24, 0x18, 0x0b, 0x48, 0xad, 0x30, 0xec, 0x89,
		0x40, 0x71, 0x3c, 0xe4, 0x5a, 0x00, 0x95, 0x63, 0x30, 0x03, 0xcb, 0x5b, 0xc8, 0xab, 0x29, 0x15,
		0xea, 0x60, 0x14, 0x34, 0xb2, 0xd8, 0x40, 0x5e, 0xdc, 0xbe, 0x16, 0x37, 0x41, 0x7f, 0xda, 0xa4,
		0x27, 0x1f, 0xf6, 0x85, 0x6a, 0x8f, 0x89, 0x92, 0xaf, 0x84, 0xfe, 0x15, 0x46, 0x3f, 0x7d, 0xa9,
		0x62, 0x1d, 0xa8, 0xb6, 0xc8, 0x3f, 0x7f, 0x23, 0x5e, 0x78, 0x27, 0xdf, 0x8f, 0x42, 0x1d, 0xb6,
		0xc3, 0x5e, 0x9c, 0x7c, 0x95, 0x6f, 0x5d, 0xf5, 0xf3, 0x91, 0x6c, 0xe5, 0x83, 0xae, 0xf4, 0xe3,
		0xa0, 0x2b, 0xe3, 0xe4, 0xab, 0xfc, 0xf8, 0x46, 0x86, 0x38, 0xd2, 0xc2, 0xef, 0x87, 0x3d, 0xd9,
		0xbe, 0xcf, 0x2b, 0x21, 0xaf, 0xae, 0x5b, 0x61, 0x14, 0x27, 0x5f, 0xe5, 0x83, 0xce, 0xdf, 0x63,
		0x34, 0x08, 0x07, 0xda, 0xef, 0x47, 0x22, 0x3f, 0x66, 0xb8, 0xf1, 0xe4, 0x9f, 0x49, 0x5f, 0x20,
		0xbb, 0x20, 0x61, 0xcf, 0x9a, 0x2d, 0x5a, 0xb2, 0x37, 0x50, 0x3f, 0x55, 0xf8, 0x4b, 0xf9, 0x81,
		0xd6, 0x91, 0x6c, 0x8d, 0x56, 0xc4, 0xba, 0x35, 0x3f, 0xe6, 0x10, 0x16, 0xe7, 0x66, 0x79, 0xcf,
		0xcf, 0x10, 0xc0, 0xf2, 0x34, 0xb8, 0x04, 0x40, 0x9c, 0x02, 0x1f, 0x9e, 0x01, 0x0f, 0xb7, 0x40,
		0x87, 0x6d, 0x80, 0xc3, 0x36, 0xb0, 0x61, 0x1b, 0xd0, 0x6c, 0x36, 0xfb, 0x3a, 0x94, 0x11, 0x0f,
		0xb7, 0xb3, 0x00, 0x52, 0xfc, 0x14, 0xc5, 0xc5, 0x29, 0xf2, 0xd2, 0x15, 0x0b, 0xd0, 0x15, 0xd9,
		0xc3, 0x2b, 0x6f, 0x98, 0xe5, 0x0a, 0xb7, 0xec, 0x61, 0x97, 0x3d, 0xfc, 0xb2, 0x87, 0x61, 0x3e,
		0x72, 0x4c, 0x8e, 0x91, 0xae, 0xc8, 0x05, 0x9e, 0x93, 0x09, 0x8d, 0xb0, 0xcf, 0xd7, 0xdc, 0xd4,
		0xce, 0x39, 0x8f, 0xfa, 0x38, 0x45, 0x66, 0x5b, 0x8f, 0x57, 0xfa, 0x8f, 0x2d, 0x5c, 0x73, 0x86,
		0x6d, 0x37, 0xe0, 0x9b, 0x3b, 0x8c, 0x3b, 0x03, 0xe7, 0xce, 0xc0, 0xba, 0x33, 0xf0, 0xce, 0x0b,
		0xe6, 0x99, 0xc1, 0x7d, 0xb2, 0x8a, 0x97, 0x1c, 0x01, 0x36, 0xc7, 0xfb, 0xae, 0x87, 0x85, 0x68,
		0xb8, 0xca, 0xf3, 0xbe, 0xcd, 0xd9, 0xdd, 0x0f, 0x93, 0x2b, 0x1c, 0x1e, 0xc9, 0x0a, 0xea, 0xfd,
		0xb8, 0x6f, 0x4d, 0x6f, 0x92, 0x5d, 0x63, 0x4b, 0x7c, 0x27, 0xd3, 0xe3, 0x49, 0x7a, 0x0b, 0x20,
		0xbd, 0x20, 0xbd, 0x20, 0xbd, 0x20, 0xbd, 0x20, 0xbd, 0x40, 0xd6, 0xe5, 0xab, 0xc8, 0x4d, 0xeb,
		0x4a, 0x26, 0x36, 0xe6, 0x68, 0x3d, 0xc1, 0xf8, 0xe8, 0xdc, 0x9c, 0xf4, 0x35, 0x9a, 0x29, 0xd3,
		0x8d, 0xca, 0x53, 0x01, 0x63, 0x4f, 0x0a, 0x5c, 0x20, 0x07, 0x6e, 0x91, 0x04, 0x57, 0xc8, 0x82,
		0x73, 0xa4, 0xc1, 0x39, 0xf2, 0xe0, 0x1c, 0x89, 0xe0, 0x49, 0x26, 0x98, 0x92, 0x8a, 0x64, 0x75,
		0xd9, 0x2a, 0x6a, 0x0b, 0x7e, 0x73, 0x20, 0x95, 0x2e, 0x54, 0x38, 0xfb, 0xcc, 0x29, 0x8a, 0x57,
		0x18, 0x4f, 0x91, 0x67, 0x47, 0x88, 0xe7, 0x2f, 0xde, 0x98, 0x93, 0xe3, 0xde, 0x31, 0x62, 0x61,
		0xb2, 0xcc, 0x3b, 0x48, 0x2c, 0xcc, 0xd7, 0x95, 0xd3, 0xf2, 0x8b, 0xbe, 0x8a, 0xfb, 0xe9, 0x79,
		0x47, 0x60, 0x69, 0x7e, 0xab, 0x05, 0x77, 0xee, 0x6d, 0xb5, 0x4a, 0xb9, 0xbc, 0x5b, 0xc6, 0x76,
		0xc3, 0x76, 0x73, 0x80, 0x9b, 0xf2, 0x9f, 0x5d, 0x03, 0x9c, 0x7e, 0x8d, 0x6d, 0x21, 0xee, 0x74,
		0x14, 0xf8, 0x03, 0x15, 0xeb, 0xa0, 0xd5, 0x63, 0xce, 0xee, 0x23, 0xd1, 0x15, 0x91, 0x50, 0x6d,
		0x90, 0xd2, 0x14, 0x43, 0xa5, 0xf3, 0xcf, 0x9f, 0x72, 0xa5, 0x62, 0xb5, 0x90, 0xf3, 0x73, 0xb5,
		0xdc, 0x41, 0x18, 0x75, 0x44, 0x94, 0xfb, 0x12, 0x68, 0xf1, 0x2b, 0xb8, 0xcf, 0x9d, 0x4d, 0x8f,
		0x5b, 0xe6, 0x4a, 0xb9, 0xad, 0x83, 0x2f, 0x67, 0x7e, 0x69, 0xdb, 0x73, 0x80, 0x03, 0x38, 0x22,
		0x47, 0x3d, 0x86, 0x82, 0x8f, 0xb2, 0xd4, 0xa3, 0x85, 0x3b, 0x82, 0xaa, 0xae, 0x29, 0x54, 0xc9,
		0xc4, 0x9f, 0x2a, 0x55, 0x6b, 0x6e, 0x01, 0x30, 0x07, 0x30, 0x87, 0x8d, 0x7e, 0x5e, 0x1c, 0x5b,
		0x0f, 0xf2, 0xad, 0xa9, 0x5f, 0x40, 0x5c, 0xae, 0xb5, 0xf5, 0x8f, 0x80, 0x84, 0x0c, 0xe3, 0x9b,
		0x26, 0x88, 0x0c, 0xe3, 0x86, 0x52, 0x3a, 0x64, 0x18, 0x49, 0x79, 0x1b, 0x32, 0x8c, 0x59, 0x53,
		0x23, 0xdc, 0xca, 0x30, 0x7e, 0x74, 0x20, 0xc1, 0x58, 0x46, 0x82, 0x31, 0xfb, 0x5a, 0x0e, 0x12,
		0x8c, 0x06, 0xe7, 0x8b, 0x8c, 0xc7, 0x86, 0xa3, 0xd2, 0xfc, 0x56, 0x73, 0x31, 0xc1, 0x58, 0x2c,
		0x23, 0xbd, 0x88, 0xcd, 0xe6, 0x02, 0x31, 0xe5, 0x3f, 0x3b, 0xa4, 0x17, 0xd7, 0xd9, 0x16, 0x48,
		0x2f, 0x6e, 0x28, 0x25, 0x45, 0x7a, 0x91, 0x4d, 0x20, 0x88, 0xf4, 0x22, 0xfd, 0xc4, 0x91, 0x5e,
		0xc4, 0xec, 0x1c, 0x61, 0x0e, 0x48, 0x2f, 0xbe, 0x60, 0x3f, 0x8f, 0x73, 0x76, 0xb7, 0xd3, 0x70,
		0xca, 0x85, 0xfc, 0xe2, 0x64, 0xae, 0x48, 0x30, 0xbe, 0x66, 0x7a, 0x48, 0x30, 0xa6, 0x68, 0x8d,
		0x48, 0x30, 0x1a, 0x22, 0x73, 0x48, 0x30, 0x1a, 0x67, 0x6e, 0x48, 0x30, 0x66, 0x4d, 0x8f, 0x70,
		0x27, 0xc1, 0xd8, 0x92, 0x2a, 0x88, 0xee, 0x1d, 0xc8, 0x30, 0xee, 0x31, 0x9e, 0xe2, 0xb1, 0x50,
		0x57, 0xe3, 0x66, 0x61, 0xd0, 0x73, 0xde, 0xf8, 0x24, 0x9d, 0x4c, 0x31, 0x16, 0x90, 0xf5, 0x30,
		0xec, 0xac, 0x90, 0x62, 0x34, 0xb0, 0xd5, 0x70, 0x86, 0x11, 0xdb, 0x2d, 0x23, 0xdb, 0x0d, 0x52,
		0xe1, 0xab, 0x5e, 0x48, 0x32, 0xae, 0xb3, 0x2d, 0x90, 0x64, 0xdc, 0x50, 0x52, 0x8a, 0x24, 0x23,
		0x9b, 0x58, 0x10, 0x49, 0x46, 0xfa, 0x89, 0x23, 0xc9, 0x88, 0xd9, 0x39, 0xc2, 0x1c, 0x90, 0x64,
		0x7c, 0x19, 0x8f, 0x11, 0xaa, 0x23, 0x3a, 0xfc, 0x53, 0x8c, 0xc9, 0x4c, 0x91, 0x60, 0x7c, 0xcd,
		0xf4, 0x90, 0x60, 0x4c, 0xd1, 0x16, 0x91, 0x60, 0x34, 0x44, 0xe4, 0x90, 0x60, 0x34, 0xce, 0xda,
		0x90, 0x60, 0xcc, 0x9a, 0x16, 0xe1, 0x50, 0x82, 0x31, 0x0c, 0x7b, 0x22, 0x50, 0x0e, 0x64, 0x18,
		0x0b, 0x05, 0x98, 0xe0, 0x7a, 0x34, 0x12, 0x72, 0x58, 0xea, 0x2f, 0xc8, 0x61, 0x60, 0x4f, 0xaf,
		0x61, 0x51, 0x90, 0xc3, 0x6c, 0x10, 0x2b, 0xc8, 0x61, 0x98, 0x5d, 0x0e, 0x72, 0x98, 0xcb, 0x5c,
		0xc6, 0x0b, 0xfb, 0x5a, 0x86, 0x2a, 0xe8, 0xf1, 0x97, 0xc3, 0x92, 0x99, 0x42, 0x0e, 0x7b, 0xcd,
		0xf4, 0x20, 0x87, 0xa5, 0x69, 0x8b, 0x90, 0xc3, 0xcc, 0x10, 0x39, 0xc8, 0x61, 0xc6, 0x59, 0x1b,
		0xe4, 0xb0, 0xac, 0x69, 0x11, 0x90, 0xc3, 0xd2, 0x87, 0x71, 0xc8, 0x61, 0x6b, 0x3d, 0x35, 0xc8,
		0x61, 0x26, 0x5e, 0x90, 0xc3, 0xc0, 0x9e, 0x5e, 0xc3, 0xa2, 0x20, 0x87, 0xd9, 0x20, 0x56, 0x90,
		0xc3, 0x30, 0xbb, 0x1c, 0xe4, 0x30, 0x97, 0xb9, 0x8c, 0xd7, 0x0f, 0x22, 0x2d, 0x5d, 0x50, 0xc3,
		0x66, 0x13, 0x85, 0x18, 0xf6, 0x9a, 0xe9, 0x41, 0x0c, 0x4b, 0xd1, 0x14, 0x21, 0x86, 0x19, 0xa2,
		0x71, 0x10, 0xc3, 0x8c, 0x73, 0x36, 0x88, 0x61, 0x59, 0x53, 0x22, 0x20, 0x86, 0xa5, 0x0f, 0xe3,
		0x10, 0xc3, 0xd6, 0x7a, 0x6a, 0x10, 0xc3, 0x4c, 0xbc, 0x20, 0x86, 0x81, 0x3d, 0xbd, 0x86, 0x45,
		0x41, 0x0c, 0xb3, 0x41, 0xac, 0x20, 0x86, 0x61, 0x76, 0x39, 0x88, 0x61, 0x2e, 0x73, 0x19, 0x4f,
		0x47, 0x81, 0x8a, 0xe5, 0xb4, 0x17, 0x0a, 0x73, 0x3d, 0xec, 0xc9, 0x5c, 0x21, 0x89, 0xbd, 0x66,
		0x7a, 0x90, 0xc4, 0x52, 0xb4, 0x46, 0x48, 0x62, 0x86, 0xc8, 0x1c, 0x24, 0x31, 0xe3, 0xcc, 0x0d,
		0x92, 0x58, 0xd6, 0xf4, 0x08, 0x48, 0x62, 0xe9, 0xc3, 0x38, 0x24, 0xb1, 0xb5, 0x9e, 0x1a, 0x24,
		0x31, 0x13, 0x2f, 0x48, 0x62, 0x60, 0x4f, 0xaf, 0x61, 0x51, 0x90, 0xc4, 0x6c, 0x10, 0x2b, 0x48,
		0x62, 0x98, 0x5d, 0x0e, 0x92, 0x98, 0xa3, 0x33, 0x62, 0xc6, 0xac, 0xbc, 0x9a, 0x52, 0xa1, 0x0e,
		0xb4, 0x0c, 0x79, 0xb6, 0x8c, 0xf7, 0xe2, 0xf6, 0xb5, 0xb8, 0x09, 0xfa, 0xc1, 0xf8, 0x66, 0x00,
		0x2f, 0x1f, 0xf6, 0x85, 0x6a, 0x8f, 0x25, 0x26, 0x5f, 0x09, 0xfd, 0x2b, 0x8c, 0x7e, 0xfa, 0x72,
		0xc4, 0x06, 0x55, 0x5b, 0xe4, 0x9f, 0xbf, 0x11, 0x2f, 0xbc, 0x93, 0xef, 0x4f, 0xfd, 0x63, 0x9c,
		0x7c, 0x95, 0x6f, 0x5d, 0xf5, 0xf3, 0x91, 0x6c, 0xe5, 0x83, 0xae, 0xf4, 0xe3, 0xa0, 0x2b, 0xe3,
		0xe4, 0xab, 0xbc, 0xec, 0xdf, 0x96, 0xfc, 0x38, 0xd2, 0xc2, 0xef, 0x87, 0x3d, 0xd9, 0xbe, 0xcf,
		0x2b, 0x21, 0xaf, 0xae, 0x5b, 0x61, 0x14, 0x27, 0x5f, 0xe5, 0x83, 0xce, 0xdf, 0xe3, 0x38, 0x37,
		0x1c, 0x68, 0xbf, 0x1f, 0x89, 0x7c, 0x14, 0x0e, 0xb4, 0x88, 0x27, 0xff, 0xe4, 0x07, 0xea, 0xa7,
		0x0a, 0x7f, 0x29, 0x3f, 0xd0, 0x3a, 0x92, 0xad, 0xf1, 0x37, 0x16, 0xde, 0xca, 0xc7, 0x3a, 0xd0,
		0x82, 0x97, 0x9b, 0xe6, 0xb3, 0x65, 0x78, 0xcc, 0x84, 0xc9, 0xa6, 0x1d, 0x71, 0xaf, 0xe4, 0xd2,
		0x30, 0x3d, 0x8a, 0xc6, 0x99, 0xcc, 0xeb, 0x58, 0xc6, 0xba, 0xa6, 0x75, 0xc4, 0xca, 0x85, 0x78,
		0x5f, 0xa5, 0x3a, 0xea, 0x89, 0x11, 0x6d, 0x62, 0xd6, 0x37, 0xde, 0xfb, 0x1a, 0xdc, 0x3d, 0x99,
		0x59, 0xe1, 0x63, 0xa9, 0x54, 0xa9, 0x96, 0x4a, 0x3b, 0xd5, 0xdd, 0xea, 0xce, 0x5e, 0xb9, 0x5c,
		0xa8, 0x14, 0x18, 0x75, 0xe7, 0xf7, 0x4e, 0x47, 0x0c, 0x53, 0x74, 0x0e, 0x46, 0xa6, 0xa7, 0x06,
		0xbd, 0x1e, 0xc7, 0xa9, 0x7d, 0x8b, 0x45, 0xc4, 0xaa, 0xd1, 0x3e, 0x17, 0x8f, 0xc1, 0x14, 0xde,
		0xb3, 0x0f, 0xeb, 0x8c, 0x42, 0x62, 0x2f, 0xd6, 0xd1, 0xa0, 0xad, 0xd5, 0x54, 0x42, 0x39, 0x99,
		0x3c, 0xbd, 0xfa, 0xf4, 0xe1, 0x35, 0x67, 0x31, 0x63, 0xf3, 0xe0, 0xaa, 0xdf, 0x3c, 0x97, 0xad,
		0x66, 0xad, 0x2b, 0x2f, 0x82, 0xae, 0x6c, 0xd6, 0xfb, 0xb7, 0xa5, 0x8b, 0x48, 0x8b, 0xb3, 0xf1,
		0x53, 0x6a, 0x9e, 0x4c, 0x9f, 0x4d, 0xb3, 0xd6, 0xf9, 0xfb, 0x5c, 0xb6, 0x4e, 0x07, 0xfa, 0x2c,
		0x12, 0xcd, 0xf3, 0xd1, 0x13, 0x69, 0x7e, 0x9b, 0xfc, 0xf9, 0xb5, 0xe4, 0xaf, 0x7f, 0x07, 0xf2,
		0x60, 0x7f, 0x06, 0x96, 0x9d, 0x10, 0x37, 0xe7, 0x93, 0x35, 0xa7, 0x63, 0x77, 0x93, 0xd9, 0x33,
		0x6d, 0x3b, 0x23, 0x5b, 0xda, 0x4c, 0x33, 0xce, 0x3f, 0xb2, 0x5a, 0x5f, 0x76, 0x72, 0x42, 0x75,
		0xfa, 0xa1, 0x54, 0x3a, 0xd7, 0x0e, 0x7b, 0x61, 0x64, 0x09, 0x65, 0x78, 0x10, 0x7e, 0x3e, 0x04,
		0x9f, 0x35, 0xa1, 0x67, 0x44, 0xe0, 0x19, 0x11, 0x76, 0x5b, 0xdb, 0x99, 0x09, 0x26, 0x3a, 0x8d,
		0x85, 0x16, 0xb9, 0xb5, 0x79, 0x2e, 0x6d, 0x07, 0xd5, 0xe9, 0x31, 0x95, 0x76, 0x44, 0xe2, 0xed,
		0x6e, 0x7b, 0x9b, 0x3b, 0xba, 0xbd, 0x69, 0x6d, 0x9f, 0xce, 0x02, 0x69, 0x46, 0x22, 0xb2, 0x71,
		0x5b, 0xb6, 0xed, 0x9a, 0x4d, 0x13, 0xa2, 0x94, 0x49, 0x54, 0xa2, 0xd9, 0x93, 0xe6, 0x77, 0x08,
		0xc1, 0xee, 0xf0, 0x66, 0xa6, 0xe0, 0x07, 0x9d, 0x4e, 0x24, 0xe2, 0x98, 0x6c, 0x7f, 0x24, 0xf5,
		0x51, 0x0b, 0x33, 0x20, 0xf2, 0x09, 0xb4, 0xa7, 0x12, 0xc8, 0x4f, 0x19, 0xd8, 0x38, 0x35, 0x60,
		0xf7, 0x14, 0x80, 0xad, 0xba, 0x34, 0xeb, 0x55, 0xfa, 0xd6, 0x8b, 0xc4, 0xac, 0x57, 0xd1, 0x67,
		0x8b, 0xad, 0x90, 0x57, 0xad, 0x27, 0xfb, 0xb6, 0x27, 0x82, 0x6e, 0x24, 0xba, 0x94, 0x9b, 0x76,
		0x56, 0x55, 0x5e, 0x25, 0x1c, 0xf3, 0x6c, 0x4a, 0xc8, 0x3e, 0x7c, 0x98, 0x94, 0xb2, 0xe4, 0x17,
		0x30, 0x08, 0x0c, 0x62, 0x0d, 0x22, 0x17, 0x68, 0x41, 0x4f, 0x1b, 0x26, 0xc3, 0xd2, 0x72, 0x85,
		0x02, 0xb8, 0x02, 0xb8, 0x02, 0xb8, 0x02, 0xb8, 0x02, 0x1f, 0xae, 0x70, 0x28, 0x69, 0x33, 0x5a,
		0xf6, 0x02, 0x46, 0x2e, 0x81, 0xa3, 0xa5, 0x00, 0xd2, 0x1a, 0x38, 0xd8, 0x04, 0x09, 0x1e, 0x60,
		0x61, 0x1b, 0x34, 0xd8, 0x80, 0x07, 0x1b, 0x10, 0x61, 0x03, 0x26, 0xb4, 0xa0, 0x42, 0x0c, 0x2e,
		0xf6, 0x02, 0xd2, 0x85, 0x7d, 0x2f, 0xfb, 0x96, 0xbc, 0xfc, 0x1c, 0xfd, 0xdf, 0xb3, 0x30, 0xf6,
		0xf4, 0xd9, 0xdb, 0x39, 0x8e, 0x6b, 0x31, 0xdb, 0xff, 0xb8, 0xf2, 0xb7, 0x25, 0x8b, 0x6b, 0xbf,
		0x60, 0x03, 0x1f, 0x2d, 0xce, 0xe1, 0x2c, 0xd0, 0x5a, 0x44, 0xca, 0xfa, 0xe9, 0x6c, 0x6f, 0xeb,
		0xc7, 0x8e, 0xbf, 0xd7, 0x78, 0xf8, 0x51, 0xf0, 0xf7, 0x1a, 0x93, 0x2f, 0x0b, 0xe3, 0x7f, 0x7e,
		0x17, 0x87, 0x0f, 0xc5, 0x1f, 0x3b, 0x7e, 0x69, 0xfa, 0x6e, 0xb1, 0xfc, 0x63, 0xc7, 0x2f, 0x37,
		0xb6, 0xb7, 0xfe, 0xfa, 0xeb, 0xc3, 0xba, 0x9f, 0xd9, 0xfe, 0xbd, 0x3b, 0xb4, 0x57, 0x2f, 0xd8,
		0xb0, 0xb9, 0xcc, 0xa7, 0x17, 0xf5, 0x7f, 0xb3, 0x59, 0xeb, 0xff, 0x6e, 0x51, 0xad, 0xf6, 0xf6,
		0xbf, 0x2c, 0xae, 0xf7, 0x26, 0x95, 0x74, 0xf1, 0x70, 0xeb, 0x15, 0xb8, 0x75, 0x6e, 0x6e, 0x7d,
		0xbc, 0x6b, 0x03, 0xbf, 0x5b, 0xf3, 0x3f, 0x37, 0x7e, 0x17, 0xde, 0x97, 0x86, 0xfb, 0xdb, 0xbf,
		0xab, 0xc3, 0xe7, 0x6f, 0x3e, 0x2c, 0xfb, 0xb1, 0xc2, 0xfb, 0xea, 0x70, 0x7f, 0xc5, 0x77, 0x2a,
		0xc3, 0xfd, 0x17, 0xfe, 0x8e, 0xf2, 0x70, 0x6b, 0xe1, 0x47, 0x47, 0xef, 0x17, 0x57, 0x7d, 0xa0,
		0xb4, 0xe2, 0x03, 0xbb, 0xab, 0x3e, 0xb0, 0xbb, 0xe2, 0x03, 0x2b, 0xa7, 0x54, 0x5c, 0xf1, 0x81,
		0xf2, 0xf0, 0x61, 0xe1, 0xe7, 0xb7, 0x96, 0xff, 0x68, 0x65, 0xb8, 0xfd, 0xb0, 0xea, 0x7b, 0xd5,
		0xe1, 0xc3, 0xfe, 0xf6, 0x36, 0x80, 0x8e, 0x0d, 0xd0, 0xc1, 0xfc, 0xe9, 0xcd, 0x7f, 0xf3, 0x80,
		0xff, 0x5d, 0xb6, 0xff, 0x4e, 0x14, 0x2a, 0xbe, 0x52, 0xcf, 0x42, 0xa1, 0xe2, 0xd2, 0x42, 0x45,
		0xc2, 0x8e, 0x13, 0x04, 0x59, 0xf9, 0x77, 0x0e, 0x9b, 0xea, 0xec, 0x74, 0x17, 0x71, 0xf6, 0x85,
		0xf6, 0xfc, 0x16, 0xfd, 0x39, 0x2d, 0x16, 0xe7, 0xb1, 0x2c, 0x9c, 0xbb, 0xb2, 0x70, 0xbe, 0xca,
		0xf4, 0x06, 0x21, 0xf6, 0xe1, 0xdc, 0x7d, 0xb7, 0x47, 0x52, 0x83, 0x94, 0x66, 0x31, 0xb9, 0x59,
		0x9c, 0x31, 0xe7, 0xfd, 0xcd, 0xfc, 0x66, 0x43, 0xdb, 0x85, 0x6a, 0x9b, 0x30, 0xdd, 0x1e, 0x66,
		0x6c, 0x2c, 0x7d, 0x0b, 0x48, 0xf7, 0x37, 0xa6, 0x6c, 0x4b, 0x14, 0xcd, 0x75, 0xbd, 0x5f, 0xd7,
		0xc2, 0x9c, 0x38, 0x61, 0xd0, 0xee, 0x67, 0x4a, 0xeb, 0x87, 0x0f, 0x89, 0x3d, 0xfa, 0x23, 0x0f,
		0x99, 0xfb, 0xdf, 0xdc, 0xff, 0x84, 0x6d, 0xbf, 0x75, 0xd5, 0xd7, 0xfb, 0x17, 0xe7, 0x97, 0x47,
		0xcd, 0xb3, 0xd3, 0xe3, 0xfa, 0xa7, 0xff, 0x34, 0xeb, 0x67, 0xdf, 0x4b, 0xff, 0x63, 0xd0, 0x59,
		0x53, 0x55, 0x4f, 0x3c, 0xad, 0x92, 0x18, 0xaf, 0x9d, 0x61, 0xb8, 0xa7, 0xae, 0x85, 0x98, 0xab,
		0x79, 0x58, 0x6f, 0x71, 0xdf, 0x39, 0x48, 0xa9, 0xbc, 0x43, 0x11, 0xb7, 0x23, 0xd9, 0x27, 0xe1,
		0x53, 0xc9, 0xa6, 0xa9, 0xab, 0x76, 0x6f, 0xd0, 0x11, 0x39, 0x7d, 0x2d, 0xe3, 0x5c, 0x3b, 0x54,
		0x3a, 0x90, 0x4a, 0x44, 0xb9, 0x50, 0xf5, 0xee, 0x73, 0xdd, 0x30, 0xca, 0xe9, 0x6b, 0x91, 0xab,
		0x9f, 0xdd, 0x96, 0x72, 0xb5, 0xcf, 0xf5, 0xf7, 0xb9, 0x8b, 0x73, 0xff, 0xf2, 0x28, 0x37, 0x61,
		0x11, 0x7f, 0xa9, 0x8b, 0xda, 0xe7, 0xfa, 0x07, 0xd3, 0x56, 0x47, 0x58, 0x8a, 0xf4, 0x74, 0x43,
		0x75, 0x9e, 0x2c, 0x06, 0x01, 0xaf, 0xb3, 0x51, 0x67, 0x34, 0xb7, 0xbf, 0xde, 0x6e, 0x07, 0xe0,
		0x92, 0x46, 0x7f, 0x6b, 0x83, 0x35, 0x3f, 0x31, 0xcc, 0x71, 0x59, 0x71, 0x5b, 0x03, 0xfe, 0x20,
		0x9d, 0xb8, 0x2e, 0xdd, 0x2d, 0x98, 0x9e, 0x09, 0xa7, 0x68, 0x6c, 0x93, 0x2a, 0xa9, 0x81, 0x92,
		0xed, 0x20, 0xd6, 0xa9, 0x9b, 0xda, 0x7c, 0x2d, 0xd6, 0x6c, 0x94, 0x94, 0xb7, 0x8a, 0x99, 0x23,
		0x36, 0xc6, 0xaa, 0xa5, 0x4d, 0x56, 0x43, 0xd3, 0x54, 0x3b, 0x9b, 0xa6, 0x10, 0x64, 0xd5, 0xca,
		0x64, 0x2c, 0x81, 0xac, 0xda, 0x98, 0x77, 0xd0, 0x6d, 0xea, 0xc8, 0x89, 0xd7, 0x9b, 0x3c, 0x53,
		0x73, 0x16, 0x99, 0x1c, 0x73, 0x9d, 0x0e, 0x64, 0xc8, 0x4c, 0xcc, 0x9e, 0x16, 0x7c, 0x74, 0x69,
		0x45, 0x43, 0x03, 0x10, 0x1c, 0xf4, 0xa0, 0x3d, 0xd0, 0x61, 0x43, 0x7a, 0x20, 0x39, 0xa0, 0x61,
		0x57, 0x7c, 0xa0, 0x38, 0x70, 0xe1, 0x96, 0xa6, 0x6d, 0xfa, 0x34, 0x9e, 0x37, 0x6d, 0x3a, 0x45,
		0xa6, 0x83, 0x4c, 0xc7, 0x33, 0x9d, 0x52, 0x26, 0x39, 0x5e, 0x4d, 0x76, 0x72, 0x8e, 0xf2, 0xa4,
		0x9c, 0x9d, 0x93, 0x71, 0xd4, 0x27, 0xe1, 0xac, 0x9d, 0x7c, 0xb3, 0x76, 0xd2, 0xcd, 0xda, 0xc9,
		0x36, 0xb7, 0x8b, 0x53, 0xa8, 0x8e, 0x43, 0x4f, 0x1c, 0x23, 0x7d, 0xd7, 0x0b, 0xca, 0x66, 0xa2,
		0xe8, 0x7a, 0x91, 0x15, 0x77, 0x6d, 0xcb, 0x6d, 0x5b, 0x77, 0xdf, 0xd6, 0xdd, 0xb8, 0x75, 0x77,
		0x4e, 0xe3, 0xd6, 0x89, 0xdc, 0x3b, 0xb9, 0x9b, 0x4f, 0x06, 0x0c, 0x23, 0x79, 0x25, 0x95, 0xbd,
		0x5e, 0x17, 0xd3, 0xf1, 0xd1, 0xe1, 0x22, 0x6b, 0x80, 0xc0, 0x03, 0x18, 0x6c, 0x03, 0x04, 0x1b,
		0xa0, 0x60, 0x03, 0x18, 0x6c, 0x80, 0x83, 0x16, 0x40, 0x88, 0x81, 0x24, 0x79, 0xca, 0xf6, 0x3b,
		0x5c, 0xd0, 0xb7, 0x5e, 0x5c, 0xe0, 0xf9, 0x55, 0x0b, 0x63, 0x2f, 0xb4, 0x62, 0x9c, 0x22, 0x5d,
		0x56, 0x4f, 0x2b, 0x11, 0x92, 0xfd, 0xe9, 0xfd, 0x3b, 0xf6, 0x48, 0xcb, 0x6c, 0x02, 0x60, 0x2d,
		0x60, 0x2d, 0x60, 0x2d, 0x60, 0x2d, 0x60, 0x2d, 0x60, 0x2d, 0x19, 0x65, 0x2d, 0x33, 0xa8, 0x03,
		0x6d, 0x79, 0x3b, 0x6d, 0xb1, 0x03, 0x67, 0x8f, 0xac, 0xc5, 0x8a, 0x40, 0x09, 0xd2, 0x02, 0xd2,
		0x02, 0xd2, 0x02, 0xd2, 0x02, 0xd2, 0x02, 0xd2, 0x42, 0x46, 0x5a, 0x26, 0xdb, 0x1e, 0x9c, 0xe5,
		0xcd, 0x8f, 0x96, 0xf6, 0x0e, 0x8c, 0x05, 0x83, 0xa6, 0xbc, 0x0b, 0x63, 0xc1, 0x94, 0xc1, 0x58,
		0xc0, 0x58, 0xc0, 0x58, 0xc0, 0x58, 0xb2, 0xcb, 0x58, 0xa8, 0xab, 0x0d, 0x92, 0x81, 0x03, 0xad,
		0x23, 0x5f, 0xaa, 0x8e, 0xb8, 0xb3, 0xb7, 0xe9, 0x66, 0xae, 0xe7, 0xc9, 0x5c, 0x2c, 0x19, 0xbb,
		0x9d, 0x10, 0xd9, 0x3a, 0xf0, 0x70, 0x00, 0x20, 0x5e, 0x40, 0xc4, 0x05, 0x90, 0xd8, 0x01, 0x13,
		0x3b, 0x80, 0x62, 0x07, 0x54, 0x76, 0x00, 0xcb, 0x12, 0x70, 0xd9, 0x0f, 0xb9, 0x19, 0x85, 0xde,
		0x1c, 0x42, 0xf0, 0x65, 0xa1, 0xf8, 0xd2, 0xff, 0xc6, 0x60, 0x1b, 0x0b, 0x1d, 0x27, 0x5f, 0x4d,
		0x43, 0xf6, 0x09, 0x00, 0x6f, 0x48, 0xcb, 0x5a, 0x0b, 0xdb, 0xc5, 0x6b, 0x87, 0x37, 0x37, 0x03,
		0x25, 0xf5, 0x3d, 0x17, 0xde, 0xf5, 0x7c, 0x42, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x5f,
		0x20, 0x5f, 0x20, 0x5f, 0x20, 0x5f, 0x26, 0xc8, 0xd7, 0x0c, 0x71, 0xa5, 0x88, 0x93, 0xaf, 0xef,
		0xc1, 0xbf, 0x68, 0x16, 0x47, 0xdc, 0x69, 0x9f, 0x1d, 0x07, 0x5b, 0x36, 0x29, 0xf0, 0x30, 0xf0,
		0x30, 0xf0, 0x30, 0xf0, 0x30, 0xf0, 0x30, 0xf0, 0x30, 0xf0, 0x30, 0x13, 0x3c, 0xec, 0x29, 0xea,
		0x8e, 0xb8, 0xd8, 0x1c, 0x0a, 0x83, 0x8f, 0xd1, 0x2c, 0x92, 0x54, 0xb7, 0x41, 0x4f, 0x76, 0xfc,
		0x48, 0x04, 0x71, 0xa8, 0xec, 0x53, 0xb1, 0x67, 0xf3, 0x01, 0x0b, 0x03, 0x0b, 0x03, 0x0b, 0x03,
		0x0b, 0x03, 0x0b, 0x03, 0x0b, 0x5b, 0x17, 0x49, 0x3a, 0x42, 0x69, 0xa9, 0xef, 0x99, 0x30, 0xb1,
		0xb2, 0xc5, 0x39, 0xd4, 0xa7, 0x8f, 0xe2, 0x20, 0x88, 0x19, 0xb8, 0xb0, 0xe4, 0x0e, 0x86, 0x93,
		0xef, 0xb5, 0xe3, 0xfa, 0x61, 0xf3, 0xfc, 0xf4, 0xdb, 0xe5, 0x51, 0xf3, 0xfc, 0xa8, 0x76, 0x71,
		0x7a, 0x62, 0xdb, 0x9b, 0x7d, 0x0f, 0x7a, 0x83, 0x71, 0xff, 0x45, 0xbb, 0x77, 0xd5, 0xe6, 0xac,
		0x5e, 0xe2, 0xfd, 0xc7, 0xd5, 0xaa, 0x5d, 0x34, 0x8f, 0x4f, 0x4f, 0xcf, 0x3c, 0xeb, 0xb3, 0x1b,
		0xbe, 0xc7, 0x12, 0x2d, 0x5f, 0xa2, 0x4f, 0xc7, 0xdf, 0x2e, 0x2e, 0x8f, 0xce, 0xb1, 0x4e, 0xdc,
		0xd7, 0xe9, 0xf4, 0xe4, 0xf3, 0xd1, 0x21, 0x56, 0x88, 0xef, 0x0a, 0x9d, 0x9e, 0xd7, 0xbf, 0xd4,
		0x4f, 0x6a, 0x97, 0xa7, 0xe7, 0x0c, 0x56, 0xc9, 0xea, 0x0c, 0x1a, 0x9b, 0xc6, 0x9f, 0x37, 0x42,
		0xfd, 0xe9, 0x05, 0xb1, 0xf6, 0x6f, 0xc2, 0x8e, 0xec, 0x4a, 0xd1, 0xb1, 0x2f, 0xfe, 0xcc, 0x4f,
		0x07, 0xda, 0x0f, 0xb4, 0x1f, 0x68, 0x3f, 0xd0, 0x7e, 0xa0, 0xfd, 0x40, 0xfb, 0x59, 0xd3, 0x6f,
		0x68, 0x79, 0x23, 0xb4, 0x6c, 0xff, 0x8c, 0x2b, 0x25, 0x06, 0xda, 0xcf, 0x47, 0x8b, 0x53, 0xf8,
		0xa6, 0xe4, 0xf8, 0xc2, 0x79, 0x4f, 0x05, 0x2a, 0x8c, 0x45, 0x3b, 0x54, 0x9d, 0xd8, 0xe6, 0x23,
		0x39, 0x0f, 0xd4, 0x95, 0xb0, 0xae, 0xaf, 0xd8, 0x0f, 0x37, 0xbc, 0xaf, 0x52, 0x59, 0x47, 0x94,
		0x64, 0x32, 0x63, 0xd9, 0xcb, 0x1e, 0xe7, 0x58, 0x98, 0xcf, 0xe7, 0x28, 0x68, 0x6b, 0x19, 0xaa,
		0x43, 0x79, 0x35, 0x31, 0x5f, 0x2e, 0x13, 0x3b, 0x11, 0x57, 0x81, 0x96, 0xb7, 0xa3, 0x67, 0xd5,
		0x0d, 0x7a, 0xb1, 0x40, 0xec, 0x3e, 0x32, 0xe5, 0xe0, 0x8e, 0x9f, 0x29, 0x17, 0x3e, 0x96, 0x4a,
		0x95, 0x6a, 0xa9, 0xb4, 0x53, 0xdd, 0xad, 0xee, 0xec, 0x95, 0xcb, 0x85, 0x8a, 0x4d, 0x09, 0x1e,
		0xd6, 0xed, 0xa0, 0xe6, 0x61, 0x6f, 0xf4, 0x06, 0x34, 0x0f, 0x63, 0x46, 0x6e, 0xa9, 0xd5, 0xff,
		0x62, 0x6c, 0x6b, 0xa3, 0xe5, 0x3f, 0x54, 0x0e, 0xa8, 0x1c, 0x50, 0x39, 0xa0, 0x72, 0x40, 0xe5,
		0xc8, 0x80, 0xca, 0x31, 0x50, 0xd2, 0x5a, 0x89, 0xe4, 0x53, 0x10, 0x29, 0xec, 0x59, 0x9c, 0xc3,
		0x74, 0x39, 0x36, 0x5e, 0x4f, 0x78, 0xbc, 0xc3, 0xdd, 0x0f, 0x3a, 0x9d, 0x48, 0xc4, 0xb1, 0xc7,
		0x20, 0x34, 0x64, 0x60, 0x21, 0xbc, 0x2c, 0x85, 0x8f, 0xc5, 0x2c, 0xb1, 0x9c, 0xdb, 0x12, 0x23,
		0xdb, 0x59, 0xb0, 0xa1, 0x8f, 0x8c, 0xe6, 0x74, 0x16, 0x68, 0x2d, 0x22, 0xc5, 0xc6, 0x9c, 0x92,
		0x89, 0x6d, 0xfd, 0xd8, 0xf1, 0xf7, 0x1a, 0x0f, 0x3f, 0x0a, 0xfe, 0x5e, 0x63, 0xf2, 0x65, 0x61,
		0xfc, 0xcf, 0xef, 0xe2, 0xf0, 0xa1, 0xf8, 0x63, 0xc7, 0x2f, 0x4d, 0xdf, 0x2d, 0x96, 0x7f, 0xec,
		0xf8, 0xe5, 0xc6, 0xf6, 0xd6, 0x5f, 0x7f, 0x7d, 0x58, 0xf7, 0x33, 0xdb, 0xbf, 0x77, 0x87, 0x1e,
		0x9b, 0x3f, 0xbb, 0xc1, 0xc9, 0x2c, 0x4e, 0x2f, 0xea, 0xff, 0x66, 0x6b, 0x1b, 0xff, 0xdd, 0xa2,
		0xb2, 0x8e, 0xed, 0x7f, 0x31, 0xb2, 0x0f, 0x16, 0x33, 0x19, 0xbe, 0x07, 0xec, 0xac, 0x84, 0x9d,
		0x0a, 0x60, 0xc7, 0x75, 0xd8, 0x19, 0x7b, 0x89, 0xc0, 0xef, 0xd6, 0xfc, 0xcf, 0x8d, 0xdf, 0x85,
		0xf7, 0xa5, 0xe1, 0xfe, 0xf6, 0xef, 0xea, 0xf0, 0xf9, 0x9b, 0x0f, 0xcb, 0x7e, 0xac, 0xf0, 0xbe,
		0x3a, 0xdc, 0x5f, 0xf1, 0x9d, 0xca, 0x70, 0xff, 0x85, 0xbf, 0xa3, 0x3c, 0xdc, 0x5a, 0xf8, 0xd1,
		0xd1, 0xfb, 0xc5, 0x55, 0x1f, 0x28, 0xad, 0xf8, 0xc0, 0xee, 0xaa, 0x0f, 0xec, 0xae, 0xf8, 0xc0,
		0xca, 0x29, 0x15, 0x57, 0x7c, 0xa0, 0x3c, 0x7c, 0x58, 0xf8, 0xf9, 0xad, 0xe5, 0x3f, 0x5a, 0x19,
		0x6e, 0x3f, 0xac, 0xfa, 0x5e, 0x75, 0xf8, 0xb0, 0xbf, 0xbd, 0x0d, 0x20, 0x76, 0x16, 0x88, 0xb1,
		0x5d, 0xe8, 0xb7, 0x0b, 0x88, 0x09, 0x0b, 0xf1, 0x8e, 0xcf, 0x73, 0xb0, 0x4c, 0xcc, 0x38, 0x29,
		0x47, 0x2c, 0x0e, 0xcc, 0x2d, 0xf0, 0x2f, 0x06, 0x59, 0x7b, 0x5e, 0x07, 0xe8, 0x16, 0x16, 0xae,
		0x7e, 0x72, 0x71, 0x59, 0x3b, 0x3e, 0x6e, 0x9e, 0x9d, 0x9f, 0x5e, 0x9e, 0x7e, 0x3a, 0x3d, 0x6e,
		0x5e, 0xfe, 0xe7, 0xec, 0x88, 0x09, 0x95, 0xe6, 0x74, 0xa2, 0x8e, 0x5f, 0x10, 0x34, 0xb7, 0x8c,
		0x07, 0x5f, 0xce, 0xf8, 0x80, 0xd3, 0xf0, 0x3d, 0x96, 0xeb, 0xcf, 0xcb, 0x75, 0x58, 0x3f, 0x3f,
		0xfa, 0x74, 0x79, 0xfc, 0x9f, 0xe6, 0xa7, 0xd3, 0x93, 0x93, 0xa3, 0x4f, 0x97, 0x1c, 0x4e, 0x72,
		0x61, 0xf5, 0x5e, 0xba, 0x7a, 0x5f, 0xce, 0xeb, 0x07, 0x75, 0x2c, 0x98, 0x3b, 0x0b, 0x56, 0xff,
		0xf2, 0x15, 0xee, 0xd1, 0xa5, 0xf5, 0xba, 0xa8, 0x5f, 0x60, 0xbd, 0xdc, 0x59, 0xaf, 0xe3, 0xd3,
		0x4f, 0xb5, 0x63, 0x2c, 0x98, 0x63, 0x0b, 0xd6, 0xac, 0x7d, 0xf9, 0x72, 0x7e, 0xf4, 0xa5, 0x76,
		0x79, 0x84, 0xa5, 0x73, 0x67, 0xe9, 0x4e, 0x2f, 0xce, 0x3e, 0x63, 0xbd, 0xdc, 0x5a, 0xaf, 0x5d,
		0x2c, 0x98, 0x3b, 0x0b, 0x76, 0xf6, 0xe9, 0x08, 0x64, 0xd1, 0xa5, 0xf5, 0xaa, 0x7f, 0xc5, 0x72,
		0xb9, 0xb3, 0x5c, 0x17, 0x97, 0xb5, 0xcb, 0xfa, 0x27, 0x46, 0x2b, 0xc6, 0x62, 0x26, 0x0d, 0x1c,
		0x97, 0xda, 0xa8, 0x27, 0xbf, 0x19, 0xc7, 0xa5, 0xfa, 0x81, 0xbe, 0xf6, 0x25, 0x83, 0xe6, 0x30,
		0xb3, 0x89, 0x58, 0x2a, 0xfb, 0x3f, 0x14, 0xdd, 0x60, 0xd0, 0xd3, 0x56, 0x13, 0x19, 0xde, 0x8e,
		0x1d, 0x9f, 0xdb, 0xc0, 0x21, 0x35, 0x2b, 0x13, 0xc0, 0x21, 0xb5, 0xe7, 0xb3, 0xc1, 0x21, 0xb5,
		0x15, 0x13, 0xc2, 0x21, 0x35, 0x96, 0xec, 0x04, 0x87, 0xd4, 0x06, 0x52, 0xe9, 0xdd, 0x22, 0x83,
		0x53, 0x6a, 0x55, 0x74, 0xbd, 0x41, 0xd7, 0x9b, 0xb9, 0xc9, 0xa0, 0xeb, 0xcd, 0x4b, 0xf7, 0x32,
		0xba, 0xde, 0x2c, 0x31, 0x65, 0x8e, 0x5d, 0x6f, 0x4a, 0xc5, 0xbd, 0xd2, 0x5e, 0xa5, 0x5a, 0xdc,
		0x43, 0xaf, 0x1b, 0xe7, 0x6c, 0x1a, 0xe2, 0x0d, 0xc4, 0x9b, 0xb4, 0xc5, 0x1b, 0xbb, 0x01, 0xe4,
		0xa3, 0x76, 0x63, 0x33, 0x46, 0x82, 0x8c, 0x00, 0x19, 0x01, 0x32, 0x02, 0x64, 0x04, 0xc8, 0x08,
		0x0e, 0xcb, 0x08, 0xe3, 0xe6, 0x14, 0xd6, 0xf7, 0x08, 0x87, 0x43, 0xc1, 0x6c, 0x0e, 0x01, 0x93,
		0xf5, 0x9a, 0xc8, 0x27, 0x1f, 0x2a, 0x4e, 0xbf, 0xbb, 0xfb, 0x63, 0xc7, 0x2f, 0x36, 0x2c, 0x9e,
		0x7d, 0x6d, 0xd8, 0x5c, 0x7f, 0x4e, 0x67, 0x5b, 0x09, 0x9b, 0x4a, 0xac, 0x34, 0x03, 0x9b, 0x87,
		0x3a, 0x11, 0xbd, 0x98, 0x33, 0xad, 0xe9, 0x4d, 0xb0, 0xe1, 0x40, 0x0b, 0xfb, 0x21, 0xcc, 0xd3,
		0xc9, 0x20, 0x8e, 0x41, 0x1c, 0x83, 0x38, 0x06, 0x71, 0x0c, 0xe2, 0x18, 0xc4, 0x31, 0x6b, 0xfa,
		0x8d, 0x56, 0x18, 0xf6, 0x44, 0xc0, 0xa2, 0x6b, 0x67, 0x61, 0x53, 0xa8, 0xcb, 0xbb, 0x0c, 0x9b,
		0xb8, 0x57, 0x53, 0x2a, 0xd4, 0x81, 0x96, 0x96, 0x2e, 0xef, 0xf7, 0xe2, 0xf6, 0xb5, 0xb8, 0x09,
		0xfa, 0x81, 0xbe, 0x1e, 0x99, 0x77, 0x3e, 0xec, 0x0b, 0xd5, 0x1e, 0x13, 0x05, 0x5f, 0x09, 0xfd,
		0x2b, 0x8c, 0x7e, 0xfa, 0x52, 0xc5, 0x3a, 0x50, 0x6d, 0x91, 0xff, 0xff, 0xd9, 0x7b, 0xf7, 0x9e,
		0xb6, 0x91, 0xf7, 0xfd, 0xff, 0xff, 0x3e, 0x0a, 0xcb, 0x7a, 0x4b, 0x1f, 0x90, 0xd6, 0x35, 0x09,
		0x39, 0x94, 0x4a, 0xdf, 0x3f, 0xc2, 0x42, 0x2b, 0x24, 0x0a, 0x08, 0xca, 0x6a, 0x7f, 0xa2, 0x6c,
		0x34, 0x49, 0x26, 0x74, 0x4a, 0x18, 0x47, 0xf6, 0x84, 0x83, 0x0a, 0xcf, 0xfd, 0xa7, 0x9c, 0xcc,
		0x21, 0x61, 0x97, 0x84, 0xd8, 0x73, 0x4d, 0x72, 0x45, 0x2b, 0xe1, 0x0d, 0xd0, 0xdc, 0xd8, 0x73,
		0xcf, 0xf5, 0x9a, 0xeb, 0x9e, 0xc3, 0xcb, 0x37, 0x92, 0x89, 0x77, 0xc2, 0x6e, 0x1c, 0x99, 0xa8,
		0x19, 0x75, 0x92, 0xf4, 0x2a, 0x6c, 0x5c, 0x74, 0xc3, 0x58, 0x35, 0x42, 0xd1, 0x56, 0x41, 0x22,
		0xda, 0x2a, 0x49, 0xaf, 0xc2, 0x81, 0x29, 0xd0, 0xd3, 0xaa, 0x29, 0x12, 0x13, 0x76, 0x86, 0xdd,
		0x6a, 0x38, 0x40, 0xb4, 0x64, 0xf8, 0x25, 0x4c, 0x8c, 0x30, 0x32, 0xdf, 0x5e, 0x36, 0xbf, 0xe6,
		0x96, 0x63, 0x53, 0xf3, 0x7b, 0xfa, 0x52, 0x47, 0x37, 0x3a, 0x10, 0xc6, 0xc4, 0xaa, 0xd1, 0xbf,
		0xc3, 0xb9, 0x37, 0xb7, 0x27, 0xfb, 0x1e, 0x4f, 0xc4, 0x92, 0x73, 0xd2, 0x8d, 0xbb, 0xd0, 0x9c,
		0x3f, 0xd6, 0x16, 0x81, 0xdb, 0x24, 0x6f, 0x0c, 0xe2, 0xb6, 0x4d, 0xda, 0x30, 0x84, 0x0d, 0x43,
		0xd6, 0x30, 0x44, 0xbd, 0xdc, 0x78, 0xb1, 0xa3, 0x62, 0x3b, 0x69, 0x3f, 0xd1, 0xc9, 0xdb, 0xb7,
		0x80, 0x26, 0x43, 0xb2, 0x6b, 0x04, 0x15, 0x68, 0x04, 0xd1, 0x08, 0xa2, 0x11, 0x44, 0x23, 0x88,
		0x46, 0x10, 0xba, 0x9c, 0xa5, 0x01, 0xf4, 0xb5, 0x23, 0x30, 0xb6, 0xed, 0xa8, 0x67, 0x3d, 0xd8,
		0x63, 0x48, 0x96, 0x53, 0xc3, 0x6e, 0x7d, 0x03, 0x46, 0xde, 0x90, 0x64, 0x0e, 0x53, 0xee, 0xd0,
		0x64, 0x0f, 0x56, 0xfe, 0x60, 0x65, 0x10, 0x56, 0x0e, 0xed, 0xca, 0xa2, 0x65, 0x79, 0x4c, 0x9f,
		0xca, 0x77, 0x04, 0x81, 0x7a, 0xd6, 0xef, 0x74, 0xa4, 0x68, 0x83, 0x6d, 0x4c, 0x5c, 0x05, 0x88,
		0xe5, 0x68, 0xe4, 0xbb, 0x7f, 0xfc, 0x38, 0xb4, 0xba, 0xc3, 0x47, 0x31, 0x5f, 0xd1, 0xe5, 0x04,
		0x16, 0x53, 0xc7, 0x1f, 0x56, 0x1b, 0x60, 0xc0, 0x6e, 0x18, 0x0e, 0x06, 0xd4, 0x15, 0x08, 0x75,
		0x84, 0x3a, 0x42, 0x1d, 0xa1, 0x8e, 0x50, 0x67, 0xeb, 0xa9, 0xd8, 0xf6, 0x3e, 0x9e, 0x7b, 0x20,
		0x1d, 0xa9, 0xf1, 0x4e, 0x52, 0x48, 0x23, 0x03, 0x49, 0x24, 0x0c, 0x47, 0x04, 0x4e, 0x44, 0x11,
		0xc5, 0x14, 0x5b, 0x54, 0x51, 0xc5, 0x15, 0x5e, 0x64, 0xe1, 0xc5, 0x16, 0x5e, 0x74, 0x31, 0xc4,
		0x17, 0x44, 0x84, 0xf1, 0x1c, 0x96, 0x89, 0x7e, 0xab, 0xa7, 0xb4, 0x29, 0x54, 0x00, 0x4f, 0xe2,
		0xac, 0x00, 0x85, 0x84, 0xb1, 0xa1, 0xcf, 0xcb, 0x17, 0x56, 0x9f, 0xee, 0xa1, 0x6d, 0xf8, 0x33,
		0x11, 0x1c, 0xd8, 0x06, 0x40, 0x13, 0xf1, 0xa1, 0x6e, 0x9e, 0x32, 0xd9, 0x77, 0xa0, 0x6d, 0xa6,
		0x02, 0xda, 0xed, 0x3f, 0x4f, 0x0d, 0x71, 0x8b, 0x9f, 0x1a, 0x95, 0x72, 0x79, 0xb3, 0xcc, 0xf4,
		0x58, 0xf6, 0xf4, 0xf8, 0xc0, 0x68, 0xa6, 0xbd, 0x78, 0x76, 0xfc, 0xd3, 0x66, 0x2c, 0x6f, 0x4d,
		0x2c, 0x82, 0x9e, 0x4e, 0x8c, 0x68, 0x74, 0xc0, 0xe8, 0x35, 0x96, 0x6d, 0x19, 0x4b, 0xdd, 0x24,
		0x94, 0xcd, 0x80, 0xfa, 0xc7, 0x5f, 0xfe, 0xf4, 0x4a, 0xc5, 0x6a, 0xc1, 0x0b, 0xbc, 0x9a, 0xb7,
		0x1d, 0xc5, 0x2d, 0x19, 0x7b, 0x5f, 0x85, 0x91, 0x37, 0xe2, 0xce, 0x3b, 0x1a, 0xad, 0xbf, 0xf1,
		0x4a, 0xde, 0xda, 0xf6, 0xd7, 0xa3, 0xa0, 0xb4, 0xee, 0x03, 0x6a, 0x28, 0xa8, 0x9d, 0x31, 0xcd,
		0xd6, 0x78, 0x6c, 0xa1, 0xa0, 0x2a, 0x85, 0xee, 0x70, 0x4c, 0x75, 0x3a, 0x66, 0x6c, 0xc2, 0x54,
		0x5e, 0x2a, 0xaf, 0x53, 0xf7, 0x03, 0x61, 0xa7, 0x53, 0x9c, 0x39, 0xab, 0x13, 0x0a, 0x86, 0x32,
		0x77, 0xf5, 0xb1, 0xc3, 0x67, 0xc5, 0xe6, 0x5f, 0x03, 0x62, 0xc5, 0x66, 0x49, 0x10, 0x87, 0x15,
		0x9b, 0x85, 0x72, 0x0c, 0x2b, 0x36, 0xe8, 0xa3, 0x5f, 0xec, 0x8a, 0xcd, 0x27, 0xc0, 0x82, 0x4d,
		0x99, 0x05, 0x1b, 0xf7, 0xbc, 0x01, 0x16, 0x6c, 0xde, 0x11, 0x1f, 0x1d, 0xe9, 0x25, 0xeb, 0xf5,
		0x9f, 0xa7, 0x86, 0x0b, 0x05, 0x9b, 0x62, 0x99, 0xe5, 0x9a, 0xa5, 0x4f, 0x0e, 0x9a, 0x46, 0x53,
		0x5f, 0x2c, 0xd7, 0x3c, 0x6d, 0xc6, 0x2c, 0xd7, 0x2c, 0x09, 0x92, 0xb1, 0x5c, 0x63, 0xc1, 0xd3,
		0x60, 0xb9, 0x26, 0x0b, 0x9b, 0x83, 0xe5, 0x1a, 0x2a, 0xef, 0x32, 0xdf, 0x0f, 0x98, 0x72, 0xcd,
		0xf5, 0x68, 0x38, 0x80, 0x58, 0xaf, 0x19, 0xc6, 0xc6, 0x82, 0xcd, 0xb4, 0x70, 0x58, 0xb0, 0x99,
		0xa1, 0x35, 0xb1, 0x60, 0x33, 0x27, 0xdc, 0xb0, 0x60, 0xf3, 0x6e, 0x92, 0x61, 0xc1, 0x06, 0x7d,
		0xfc, 0x8b, 0x5b, 0xb0, 0x69, 0x28, 0x2d, 0xe2, 0x3b, 0xc0, 0x8a, 0xcd, 0x16, 0x50, 0x48, 0xfb,
		0x52, 0x5f, 0x0c, 0x36, 0x37, 0xa1, 0x3f, 0xf0, 0x1f, 0x77, 0xca, 0x89, 0x92, 0x4d, 0x81, 0xae,
		0xf4, 0x3b, 0x3b, 0x0f, 0x96, 0x6c, 0xe6, 0x48, 0x0d, 0xae, 0xb1, 0x61, 0x7a, 0x10, 0xce, 0x90,
		0xa3, 0x61, 0xd1, 0xe6, 0x69, 0x33, 0x66, 0xd1, 0x66, 0x49, 0xa0, 0x8c, 0x45, 0x1b, 0x0b, 0xbe,
		0x06, 0x8b, 0x36, 0x59, 0x58, 0x1d, 0x2c, 0xda, 0x50, 0x79, 0x97, 0xf9, 0x7e, 0x20, 0x14, 0x6d,
		0xe4, 0xad, 0x91, 0xba, 0x25, 0x5b, 0x78, 0x25, 0x9b, 0x34, 0x32, 0x16, 0x6c, 0xa6, 0x85, 0xc3,
		0x82, 0xcd, 0x0c, 0x6d, 0x89, 0x05, 0x9b, 0x39, 0xc1, 0x86, 0x05, 0x9b, 0x77, 0x53, 0x0c, 0x0b,
		0x36, 0xe8, 0x63, 0x5f, 0xe0, 0x82, 0x8d, 0xf5, 0x53, 0x7b, 0x5f, 0x93, 0x41, 0x4b, 0xa7, 0xf8,
		0xd2, 0x3e, 0xa1, 0x7d, 0x42, 0xfb, 0x84, 0xf6, 0x09, 0x81, 0x83, 0xf6, 0x09, 0xed, 0x13, 0xda,
		0x27, 0xb6, 0xf3, 0x2d, 0xea, 0x1a, 0x15, 0x69, 0xd1, 0xc1, 0xb3, 0x4f, 0xd2, 0xc8, 0x68, 0x9f,
		0xd0, 0x3e, 0xa1, 0x7d, 0x42, 0xfb, 0x84, 0xf6, 0x09, 0xed, 0x13, 0xda, 0x27, 0xb4, 0x4f, 0x68,
		0x9f, 0xd0, 0x3e, 0xa1, 0x7d, 0x42, 0xfb, 0x84, 0xc0, 0x41, 0xfb, 0x84, 0xf6, 0x09, 0xed, 0x13,
		0x9b, 0xf9, 0xd6, 0x15, 0xb1, 0x51, 0x88, 0xee, 0xc9, 0x38, 0x30, 0x9a, 0x27, 0x34, 0x4f, 0x68,
		0x9e, 0xd0, 0x3c, 0xa1, 0x79, 0x42, 0xf3, 0x84, 0xe6, 0x09, 0xcd, 0x13, 0x9a, 0x27, 0x34, 0x4f,
		0x68, 0x9e, 0xd0, 0x3c, 0x21, 0x70, 0xd0, 0x3c, 0xa1, 0x79, 0x42, 0xf3, 0xc4, 0x66, 0xbe, 0x99,
		0x58, 0xe8, 0x44, 0x8d, 0xd6, 0x9e, 0x83, 0xf9, 0x27, 0x4f, 0x62, 0xa3, 0x85, 0x42, 0x0b, 0x85,
		0x16, 0x0a, 0x2d, 0x14, 0x5a, 0x28, 0xb4, 0x50, 0x68, 0xa1, 0xd0, 0x42, 0xa1, 0x85, 0x42, 0x0b,
		0x85, 0x16, 0x0a, 0x2d, 0x14, 0x02, 0x07, 0x2d, 0x14, 0x5a, 0x28, 0x2b, 0x6c, 0xa1, 0x7c, 0x58,
		0x61, 0xf2, 0xf0, 0x6b, 0x5a, 0x47, 0x46, 0x18, 0x15, 0x61, 0x6c, 0xa1, 0xea, 0x27, 0xcd, 0x9f,
		0xf2, 0x4a, 0x74, 0xc5, 0x60, 0xe7, 0x5b, 0x3f, 0x8c, 0xba, 0x52, 0x37, 0x07, 0x16, 0x45, 0xa0,
		0xa5, 0xb9, 0x89, 0xe2, 0xcb, 0x40, 0xf5, 0xe9, 0x48, 0x37, 0x65, 0xf8, 0xf2, 0x8d, 0x64, 0xe2,
		0x9d, 0xb0, 0x3b, 0xea, 0x9f, 0x92, 0xf4, 0x2a, 0x6c, 0x5c, 0x74, 0xc3, 0x58, 0x35, 0x42, 0xd1,
		0x56, 0x41, 0x22, 0xda, 0x2a, 0x49, 0xaf, 0x42, 0xd5, 0xbd, 0x2e, 0x05, 0x3d, 0xad, 0x9a, 0x22,
		0x31, 0x61, 0x67, 0x38, 0xe0, 0x0a, 0xe3, 0xa8, 0x67, 0x64, 0x32, 0xfc, 0x12, 0xf6, 0xf4, 0xa5,
		0x8e, 0x6e, 0x74, 0x20, 0x8c, 0x89, 0x55, 0x63, 0xf0, 0x8d, 0x89, 0xb7, 0xc2, 0xc4, 0x08, 0x23,
		0xed, 0xf6, 0x83, 0xf6, 0xda, 0xb4, 0x9d, 0x4f, 0xb6, 0x94, 0x45, 0x7d, 0xf8, 0x40, 0x38, 0x85,
		0xdb, 0xdf, 0x57, 0x89, 0xa9, 0x19, 0x13, 0x5b, 0xcd, 0x61, 0xff, 0x9b, 0xd2, 0xbb, 0x1d, 0xd9,
		0xe7, 0x06, 0xcb, 0x1b, 0xa5, 0xfa, 0xdf, 0xc4, 0xed, 0x93, 0x48, 0x0a, 0x9f, 0x4a, 0xa5, 0x4a,
		0xb5, 0x54, 0xda, 0xa8, 0x6e, 0x56, 0x37, 0xb6, 0xca, 0xe5, 0x42, 0xa5, 0x60, 0x71, 0xbb, 0x59,
		0xff, 0xb0, 0x8f, 0x50, 0xb2, 0xb5, 0xdd, 0x6f, 0x3a, 0xba, 0xd7, 0xe9, 0x20, 0x84, 0x72, 0x9a,
		0xc8, 0xd8, 0xea, 0xce, 0xb1, 0xb6, 0x32, 0x18, 0x44, 0xff, 0x96, 0x40, 0xf7, 0x2c, 0x0e, 0xba,
		0xfc, 0xc4, 0xc4, 0xbd, 0xa6, 0xd1, 0xa3, 0x41, 0xf7, 0xc1, 0xf0, 0x76, 0xec, 0x8d, 0xee, 0x46,
		0x7d, 0x3c, 0x4a, 0xa9, 0x6f, 0x5f, 0x74, 0xeb, 0xc7, 0xaa, 0x51, 0xaf, 0xb5, 0xd5, 0x89, 0x68,
		0xab, 0xfa, 0x5e, 0xf7, 0xba, 0x74, 0x3a, 0xfc, 0xbb, 0xeb, 0xfb, 0x51, 0xb3, 0xff, 0xad, 0xe3,
		0xfe, 0xdf, 0x5b, 0x3f, 0x1d, 0xfe, 0x71, 0xb5, 0xf4, 0x6f, 0xfb, 0xb0, 0x1a, 0x5a, 0x9a, 0xef,
		0x27, 0xe6, 0x9c, 0xf3, 0xb6, 0x73, 0xdd, 0xb9, 0x1c, 0xcf, 0xb7, 0xd5, 0xe7, 0xd7, 0xf6, 0xf2,
		0xf9, 0xa4, 0x9c, 0x5a, 0xf7, 0x98, 0x41, 0x87, 0x25, 0x36, 0x2f, 0x8a, 0xd5, 0x85, 0xd2, 0x5e,
		0xbf, 0x91, 0x05, 0x2a, 0xaf, 0x3d, 0x2b, 0xed, 0xf0, 0xa7, 0x3d, 0xde, 0x84, 0xe2, 0x4b, 0x8b,
		0x3c, 0x69, 0x91, 0x1f, 0xf3, 0xca, 0x2e, 0x4b, 0x9a, 0x81, 0xad, 0x15, 0x39, 0xa2, 0xde, 0xa2,
		0xd1, 0x2e, 0x1f, 0x4d, 0xcb, 0x5e, 0x61, 0xb2, 0xfd, 0x84, 0x8c, 0xb3, 0x2b, 0xef, 0xac, 0x42,
		0xcd, 0xa6, 0x6c, 0x1b, 0x63, 0x76, 0x4d, 0x24, 0xc3, 0xe6, 0xe1, 0x0f, 0xdd, 0xd3, 0xac, 0x5b,
		0x45, 0x5a, 0xa0, 0x1d, 0x7e, 0x5c, 0xc6, 0xcd, 0x7d, 0x3c, 0xd9, 0x21, 0xe3, 0x8f, 0x49, 0xe7,
		0xf2, 0x15, 0x33, 0xfe, 0xa0, 0x1c, 0xe7, 0xe8, 0xd9, 0x99, 0x7b, 0x97, 0x77, 0xd5, 0xdb, 0xda,
		0x5c, 0x39, 0x6b, 0x25, 0x69, 0x6b, 0x73, 0xdb, 0x28, 0x9c, 0x4e, 0x0b, 0x67, 0x0e, 0xc5, 0xb5,
		0x0c, 0x75, 0xf3, 0x83, 0x43, 0x6d, 0x2e, 0xaf, 0xb6, 0x06, 0xd7, 0xc6, 0xfc, 0x4c, 0xe9, 0x66,
		0x41, 0xa3, 0x99, 0x6c, 0x52, 0x60, 0xf1, 0x0d, 0x34, 0x83, 0xc6, 0xe9, 0x6b, 0xa9, 0x2e, 0x7e,
		0x36, 0xa2, 0x38, 0xc9, 0xac, 0x5d, 0xa6, 0xd4, 0xf1, 0xf8, 0x51, 0x19, 0x25, 0x59, 0xb6, 0x68,
		0x98, 0x39, 0x12, 0xe6, 0x81, 0x82, 0xf9, 0x22, 0x60, 0x5e, 0xe8, 0x97, 0x3b, 0xf2, 0xe5, 0x8e,
		0x7a, 0xb9, 0x23, 0x9e, 0x5b, 0xf2, 0xba, 0xa3, 0xb2, 0xb5, 0xcb, 0xd3, 0xbe, 0x2b, 0xbf, 0xc1,
		0x74, 0xfa, 0x89, 0x4b, 0x36, 0x9e, 0xde, 0xe0, 0x78, 0x9a, 0xe3, 0x69, 0x8e, 0xa7, 0x97, 0x70,
		0x3c, 0x9d, 0x75, 0x27, 0x9c, 0x7e, 0x90, 0x68, 0xfd, 0x1a, 0x3c, 0x13, 0xa5, 0x83, 0x6e, 0x94,
		0x98, 0xfc, 0x32, 0x61, 0x9c, 0xef, 0x2f, 0x03, 0xc8, 0xab, 0x3a, 0x9d, 0x4b, 0x57, 0x9d, 0x7b,
		0x97, 0x6d, 0xa3, 0xeb, 0xb6, 0xdb, 0x85, 0xdb, 0xea, 0xca, 0xad, 0x77, 0xe9, 0xd6, 0xbb, 0x76,
		0xeb, 0x5d, 0x7c, 0x3e, 0x5d, 0x7d, 0x4e, 0x5d, 0x7e, 0xee, 0x5d, 0x7f, 0xfa, 0x81, 0xa3, 0x9a,
		0x5f, 0xee, 0x89, 0x33, 0xee, 0x2e, 0x46, 0x9f, 0x9f, 0x73, 0xa3, 0xcd, 0x57, 0x00, 0x72, 0x33,
		0x3e, 0x90, 0x04, 0x01, 0x43, 0x18, 0x6c, 0x0b, 0x04, 0x8c, 0x50, 0xc0, 0x08, 0x06, 0x8c, 0x70,
		0xe4, 0x2b, 0x20, 0x39, 0x0b, 0x89, 0x35, 0x41, 0x79, 0x2e, 0x2c, 0xf6, 0xf2, 0xed, 0x99, 0xbe,
		0xd8, 0xca, 0x35, 0x3b, 0x32, 0x63, 0x6d, 0xdc, 0x81, 0x24, 0x3b, 0x58, 0xf2, 0x83, 0x22, 0x43,
		0x70, 0x72, 0x04, 0x27, 0x4b, 0x70, 0xf2, 0x64, 0x47, 0xa6, 0x2c, 0xc9, 0x95, 0x75, 0xd9, 0x4a,
		0x03, 0x18, 0xaf, 0x55, 0xb0, 0x9e, 0xa9, 0x8f, 0x87, 0x2e, 0xe4, 0xb9, 0x78, 0xe2, 0xbf, 0x24,
		0xcd, 0xf2, 0xc6, 0x7c, 0x30, 0x3b, 0x04, 0x22, 0xed, 0x0c, 0x88, 0xb9, 0x23, 0x20, 0xda, 0x5e,
		0x3d, 0xb0, 0x3b, 0x00, 0xc2, 0x6e, 0xc4, 0x03, 0xbb, 0xe3, 0xdf, 0x6a, 0x6f, 0x92, 0x02, 0xb3,
		0xb3, 0x5f, 0xda, 0xef, 0x74, 0xa4, 0x68, 0xc7, 0xb2, 0x8d, 0xd0, 0xe9, 0x8c, 0x47, 0x5e, 0x55,
		0x80, 0x58, 0x8e, 0x46, 0x93, 0x08, 0x3f, 0x7e, 0x1c, 0x4e, 0x14, 0x0d, 0xc7, 0x52, 0xbe, 0xaa,
		0xbb, 0xb1, 0x58, 0x1c, 0x7f, 0x75, 0x31, 0xe4, 0xfa, 0x91, 0xea, 0x20, 0x06, 0x5f, 0x84, 0x3a,
		0x42, 0x1d, 0xa1, 0x8e, 0x50, 0x47, 0xa8, 0x23, 0xd4, 0x11, 0xea, 0xe6, 0x84, 0xba, 0x61, 0xb7,
		0x43, 0xa6, 0xcb, 0xfd, 0x51, 0xe4, 0xb3, 0x38, 0xf7, 0xcd, 0x09, 0x93, 0xc7, 0xe2, 0xdd, 0x37,
		0xa7, 0x0a, 0x89, 0x8e, 0x44, 0x47, 0xa2, 0x23, 0xd1, 0x91, 0xe8, 0x6c, 0x3d, 0x15, 0xdb, 0x95,
		0xac, 0x34, 0x90, 0xc1, 0x7e, 0xb0, 0x4a, 0xb7, 0xe4, 0x2d, 0xde, 0x89, 0x58, 0x4f, 0x62, 0xe3,
		0x89, 0x58, 0xc8, 0x42, 0x8a, 0x28, 0xa8, 0xd8, 0xc2, 0x8a, 0x2a, 0xb0, 0xf0, 0x42, 0x0b, 0x2f,
		0xb8, 0xf0, 0xc2, 0x8b, 0x21, 0xc0, 0x20, 0x42, 0x8c, 0x67, 0xb1, 0x00, 0x5b, 0x2d, 0x88, 0x96,
		0xcb, 0x34, 0xeb, 0xe5, 0x5f, 0xfe, 0x1b, 0x20, 0x45, 0x22, 0x4d, 0x92, 0x5e, 0x8d, 0x8c, 0x9a,
		0x21, 0x66, 0xf0, 0x9c, 0x11, 0x94, 0xa4, 0xf4, 0x1b, 0x32, 0x31, 0xc1, 0x68, 0xa7, 0x15, 0x30,
		0x2e, 0x7d, 0x0c, 0x8d, 0x58, 0x4a, 0x2c, 0x25, 0x96, 0x12, 0x4b, 0x89, 0xa5, 0xc4, 0xd2, 0x15,
		0xc3, 0x52, 0x1e, 0xd4, 0x4a, 0x8c, 0x7b, 0xc3, 0x33, 0x69, 0x46, 0x57, 0x57, 0x3d, 0xad, 0xcc,
		0x1d, 0xaa, 0xc9, 0xf8, 0x32, 0x40, 0x22, 0x1d, 0x91, 0x8e, 0x48, 0x47, 0xa4, 0x23, 0xd2, 0x11,
		0xe9, 0x56, 0x0c, 0xe9, 0xe8, 0x34, 0xbe, 0x4d, 0x7a, 0xde, 0xe4, 0x34, 0x8e, 0xb9, 0x42, 0xc9,
		0x24, 0xbd, 0xbe, 0xa3, 0xd9, 0x88, 0x49, 0xa9, 0xf2, 0xd6, 0x04, 0xf0, 0xa4, 0x3a, 0x2d, 0x48,
		0xd2, 0x2a, 0x69, 0x95, 0xb4, 0x4a, 0x5a, 0x25, 0xad, 0x92, 0x56, 0x49, 0xab, 0xa4, 0xd5, 0x79,
		0x69, 0xf5, 0x29, 0x5b, 0xf4, 0x89, 0xf5, 0x19, 0x6b, 0x90, 0x5a, 0x31, 0xa9, 0x55, 0xe9, 0x6b,
		0xd1, 0x51, 0xad, 0x20, 0x96, 0x22, 0xb1, 0x7c, 0x28, 0xf8, 0xd4, 0x0c, 0x7d, 0x11, 0x1f, 0x59,
		0x95, 0xac, 0x4a, 0x56, 0x25, 0xab, 0x92, 0x55, 0xc9, 0xaa, 0x2b, 0xc6, 0xaa, 0xaa, 0x25, 0xb5,
		0x51, 0xe6, 0x0e, 0x94, 0x57, 0xcb, 0x40, 0x31, 0xed, 0x8d, 0x6e, 0xd5, 0xb6, 0x48, 0x00, 0xbb,
		0xd4, 0xf1, 0x03, 0xdd, 0x3b, 0xf8, 0xab, 0xb6, 0xbf, 0xb7, 0x53, 0x3f, 0x3e, 0x3c, 0xfd, 0xbe,
		0x5b, 0x3f, 0xde, 0xad, 0x9d, 0x1c, 0x1e, 0xa0, 0xf5, 0xae, 0x7f, 0x89, 0x4e, 0x6f, 0xb0, 0x89,
		0xf7, 0x19, 0x54, 0x5c, 0xfd, 0xd7, 0x6f, 0xb8, 0x88, 0xa6, 0x3e, 0xdd, 0xda, 0x49, 0x7d, 0xff,
		0xf0, 0xf0, 0xc8, 0x87, 0x8b, 0xf6, 0xe1, 0x0f, 0x3e, 0xd2, 0xf9, 0x1e, 0xe9, 0x9f, 0xfb, 0xa7,
		0x27, 0xdf, 0x77, 0x8f, 0xf9, 0x5c, 0x97, 0xed, 0xb9, 0x1e, 0x1e, 0x7c, 0xd9, 0xdd, 0xe1, 0x13,
		0x5d, 0x9e, 0x27, 0x7a, 0x78, 0xbc, 0xf7, 0x75, 0xef, 0xa0, 0xf6, 0xfd, 0xf0, 0x18, 0xf0, 0xa9,
		0x42, 0x45, 0x74, 0xce, 0xf1, 0x08, 0x58, 0x14, 0x08, 0xee, 0x60, 0x47, 0x24, 0x26, 0xb8, 0x8a,
		0x5a, 0xaa, 0xad, 0x64, 0x0b, 0xcf, 0x1c, 0x7c, 0x1e, 0x1e, 0xbd, 0xc1, 0x69, 0xe1, 0xd0, 0x1b,
		0x9c, 0xa1, 0x41, 0xd1, 0x1b, 0x9c, 0xa9, 0xa5, 0xd3, 0x1b, 0x7c, 0x67, 0x80, 0xf4, 0x06, 0x1d,
		0xe2, 0x5f, 0x60, 0x6f, 0xd0, 0xa8, 0x2b, 0x69, 0x54, 0xf3, 0x32, 0xa9, 0x94, 0x00, 0xbd, 0xc1,
		0x4f, 0x40, 0x21, 0x9d, 0x6a, 0x65, 0x92, 0xc1, 0xe1, 0xcd, 0x42, 0x47, 0x89, 0x6c, 0x46, 0xba,
		0x95, 0x20, 0xdd, 0xb2, 0x63, 0xa1, 0x2f, 0x24, 0x9c, 0xdf, 0x86, 0x37, 0xdc, 0xf3, 0xbf, 0x29,
		0x0d, 0xa7, 0x88, 0x69, 0x70, 0x03, 0xdb, 0x14, 0x87, 0xb9, 0x26, 0xe2, 0xfb, 0x12, 0x8b, 0xa6,
		0x51, 0x91, 0xde, 0x51, 0x17, 0xc3, 0x74, 0x40, 0x0d, 0xf4, 0x40, 0x5e, 0x08, 0xa3, 0xae, 0xfb,
		0xf7, 0xb2, 0x2d, 0x3a, 0x89, 0xa4, 0x37, 0xf3, 0x96, 0xd4, 0x10, 0xb7, 0xf8, 0xa9, 0x51, 0xf8,
		0x54, 0x2a, 0x55, 0xaa, 0xa5, 0xd2, 0x46, 0x75, 0xb3, 0xba, 0xb1, 0x55, 0x2e, 0x17, 0x2a, 0x48,
		0x25, 0x24, 0x66, 0xcb, 0x12, 0xf3, 0x24, 0x5e, 0x34, 0xe7, 0xf4, 0xbc, 0x50, 0x7a, 0x53, 0x98,
		0xf3, 0xb9, 0x26, 0x20, 0x1f, 0xe3, 0x9c, 0xae, 0x97, 0x70, 0x4f, 0x9f, 0xeb, 0x95, 0x80, 0xe8,
		0x73, 0xcd, 0x1a, 0x1d, 0x7d, 0xae, 0x39, 0x03, 0xa4, 0xcf, 0xb5, 0x14, 0x24, 0x40, 0x9f, 0xeb,
		0xbf, 0xfa, 0xad, 0x9e, 0xd2, 0x66, 0xb3, 0x08, 0x68, 0x71, 0x55, 0x69, 0x21, 0xfd, 0xc7, 0x8b,
		0x16, 0xd2, 0x7c, 0xe3, 0x64, 0x5a, 0x48, 0x4b, 0x3f, 0x28, 0xa6, 0x85, 0x34, 0x5f, 0x6a, 0x94,
		0x8a, 0x5b, 0xa5, 0xad, 0x4a, 0xb5, 0xb8, 0x45, 0xe3, 0x68, 0xe9, 0x73, 0x84, 0xc6, 0xd1, 0xd4,
		0xd7, 0x39, 0xc1, 0xf5, 0x49, 0x33, 0x96, 0xb7, 0x26, 0x16, 0x41, 0x4f, 0x27, 0x46, 0x34, 0x3a,
		0x60, 0x08, 0x1b, 0xcb, 0xb6, 0x8c, 0xa5, 0x6e, 0x92, 0xcc, 0x66, 0xe0, 0xfd, 0x56, 0x2c, 0xda,
		0x26, 0x50, 0xd2, 0xb4, 0x03, 0xd5, 0x8a, 0x03, 0xd1, 0x6a, 0x0d, 0xf6, 0x4c, 0x4e, 0xbc, 0xc0,
		0xab, 0xb5, 0xae, 0x65, 0x6c, 0x54, 0x22, 0xfb, 0xe3, 0x4a, 0x2f, 0x6a, 0x7b, 0xdf, 0x7a, 0x1d,
		0xa3, 0xba, 0x1d, 0xe9, 0x1d, 0xf5, 0x7f, 0xe2, 0x87, 0x56, 0xda, 0xdb, 0xfe, 0x7a, 0xe4, 0x03,
		0x8a, 0x2b, 0xa8, 0xcf, 0x31, 0xcd, 0xef, 0x78, 0x6c, 0xb5, 0xa0, 0xca, 0x85, 0x6e, 0x7d, 0x4c,
		0xb5, 0x40, 0x16, 0xd0, 0xac, 0xa9, 0xd0, 0x54, 0x68, 0xa7, 0xee, 0x07, 0x44, 0x69, 0x07, 0xcb,
		0x92, 0xc7, 0x3a, 0xab, 0xfb, 0xb1, 0xfb, 0x67, 0x61, 0xe7, 0x5f, 0x03, 0x62, 0x61, 0x67, 0x49,
		0x80, 0x87, 0x85, 0x9d, 0x85, 0x52, 0x0d, 0x0b, 0x3b, 0xe8, 0xe3, 0x63, 0xe0, 0xcd, 0x0d, 0xba,
		0xd7, 0xa5, 0x00, 0x2e, 0x07, 0xd3, 0xcd, 0x0d, 0x3e, 0x61, 0x6d, 0xc6, 0x65, 0x64, 0xac, 0xe1,
		0x6c, 0x04, 0x7f, 0xed, 0x6c, 0x23, 0xd8, 0x3a, 0xbf, 0x3f, 0x2b, 0x04, 0x5b, 0xe7, 0xc3, 0xcb,
		0xc2, 0xe0, 0xcb, 0xef, 0xe2, 0xc3, 0x7d, 0xf1, 0x6c, 0x23, 0x28, 0x8d, 0xde, 0x2d, 0x96, 0xcf,
		0x36, 0x82, 0xf2, 0xf9, 0xfa, 0xda, 0x8f, 0x1f, 0x1f, 0x67, 0xfd, 0x9d, 0xf5, 0xdf, 0x9b, 0x0f,
		0x61, 0xfa, 0x4b, 0xc5, 0xd1, 0x77, 0x37, 0xcf, 0x36, 0x82, 0xe2, 0xf9, 0x3a, 0x4e, 0xb7, 0x73,
		0x8e, 0xd4, 0x5e, 0x0e, 0x4f, 0xf6, 0xfe, 0x86, 0x6d, 0x34, 0xff, 0xac, 0x59, 0x6f, 0x36, 0xeb,
		0xff, 0xf3, 0x39, 0x5a, 0xe4, 0x68, 0x71, 0xa2, 0x69, 0x8e, 0x36, 0x9e, 0x8b, 0x7a, 0x46, 0xe2,
		0x0d, 0x19, 0x9f, 0x06, 0xc7, 0x71, 0x23, 0xc7, 0x8d, 0x1c, 0x37, 0x72, 0xdc, 0xc8, 0x71, 0x23,
		0xc7, 0x8d, 0x2b, 0x36, 0x6e, 0xe4, 0x09, 0x72, 0xf8, 0x28, 0xf7, 0x61, 0x85, 0x53, 0xc8, 0xaf,
		0x69, 0x1d, 0x19, 0x61, 0x14, 0xc8, 0xde, 0xca, 0x7e, 0xd2, 0xfc, 0x29, 0xaf, 0xc4, 0xe8, 0x4c,
		0x64, 0x3f, 0x8c, 0xba, 0x52, 0x37, 0x07, 0xa0, 0x14, 0x68, 0x69, 0x6e, 0xa2, 0xf8, 0x32, 0x50,
		0x3a, 0x31, 0x42, 0x37, 0x65, 0xf8, 0xf2, 0x8d, 0x64, 0xe2, 0x9d, 0xb0, 0x1b, 0x47, 0x26, 0x6a,
		0x46, 0x9d, 0x24, 0xbd, 0x0a, 0x1b, 0x17, 0xdd, 0x30, 0x56, 0x8d, 0x50, 0xb4, 0x55, 0x90, 0x88,
		0xb6, 0x4a, 0xd2, 0xab, 0x70, 0x60, 0xf2, 0xf4, 0xb4, 0x6a, 0x8a, 0xc4, 0x84, 0x5a, 0xaa, 0x8b,
		0x9f, 0x8d, 0x28, 0x4e, 0xd2, 0xab, 0x50, 0xb4, 0x7e, 0x0d, 0x94, 0x40, 0xe9, 0xa0, 0x1b, 0x25,
		0x26, 0x1c, 0xd0, 0x6d, 0x32, 0xfc, 0x32, 0xdc, 0x3f, 0xdc, 0xae, 0x40, 0xd8, 0x6b, 0xc9, 0x16,
		0x5b, 0xb1, 0xdf, 0xd3, 0x97, 0x3a, 0xba, 0xd1, 0x81, 0x30, 0x26, 0x56, 0x8d, 0xfe, 0x13, 0xb1,
		0xde, 0x92, 0x1f, 0xe7, 0x83, 0x4f, 0xc6, 0x66, 0x39, 0xdf, 0xc7, 0xbd, 0xbf, 0xe5, 0x30, 0x50,
		0x06, 0x3f, 0x48, 0x83, 0x1e, 0xcc, 0xc1, 0x0e, 0xda, 0x20, 0x07, 0x76, 0x70, 0x03, 0x3b, 0xa8,
		0x81, 0x1d, 0xcc, 0xac, 0x36, 0x79, 0xed, 0xa8, 0x18, 0xa3, 0xdb, 0x99, 0x10, 0x29, 0x3c, 0x37,
		0x71, 0x32, 0x44, 0x2c, 0x4f, 0xb1, 0x40, 0x4f, 0x11, 0x5e, 0x5e, 0xb1, 0x65, 0x16, 0x55, 0x6e,
		0xe1, 0x65, 0x17, 0x5e, 0x7e, 0xe1, 0x65, 0x18, 0xc7, 0x8a, 0xf1, 0x80, 0x3c, 0x45, 0x14, 0x79,
		0x4e, 0x03, 0xea, 0x6b, 0x5f, 0x60, 0xd0, 0x9c, 0xce, 0x67, 0x3d, 0xea, 0x63, 0x88, 0x60, 0xa9,
		0x87, 0x55, 0xfa, 0x83, 0x95, 0x6b, 0x64, 0xd9, 0x76, 0x43, 0xbe, 0xd1, 0x65, 0xdc, 0x19, 0x39,
		0x77, 0x46, 0xd6, 0x9d, 0x91, 0x77, 0x2c, 0x99, 0x07, 0x93, 0xfb, 0xf4, 0x29, 0x7e, 0x47, 0x14,
		0x58, 0x0f, 0xfb, 0x4c, 0xd8, 0x89, 0xd1, 0x70, 0x15, 0x30, 0xb6, 0x27, 0x67, 0xc4, 0x0e, 0x8f,
		0x7a, 0x7d, 0x84, 0x15, 0xae, 0x0c, 0x43, 0x4f, 0x4d, 0x7f, 0x58, 0x5d, 0x83, 0x05, 0xdf, 0x61,
		0x78, 0x98, 0xd0, 0x5b, 0x20, 0xf4, 0x12, 0x7a, 0x09, 0xbd, 0x84, 0x5e, 0x42, 0x2f, 0x95, 0x75,
		0xfa, 0x53, 0x44, 0xf3, 0xba, 0xd2, 0xc0, 0x06, 0x8c, 0xd6, 0x91, 0xc0, 0xdb, 0xa0, 0x3d, 0xb3,
		0xbe, 0xfa, 0x91, 0x82, 0x26, 0x2a, 0xa6, 0x03, 0x06, 0x0f, 0x05, 0x2e, 0xc0, 0x81, 0x5b, 0x90,
		0xe0, 0x0a, 0x2c, 0x38, 0x07, 0x0d, 0xce, 0xc1, 0x83, 0x73, 0x10, 0x81, 0x09, 0x13, 0xa0, 0x50,
		0x91, 0x3e, 0x5d, 0x58, 0x47, 0x6d, 0xa2, 0xdf, 0xec, 0x29, 0x6d, 0x0a, 0x15, 0xe4, 0x3e, 0x73,
		0xa4, 0xe2, 0x15, 0xe0, 0x10, 0x31, 0x77, 0xf7, 0x7d, 0xf9, 0xc2, 0xd6, 0x1c, 0x0f, 0x7d, 0xf7,
		0xdf, 0x89, 0x60, 0xc1, 0x77, 0x03, 0x9e, 0x88, 0xd7, 0x95, 0x9d, 0x4f, 0x27, 0xfb, 0x2a, 0xf4,
		0x9d, 0x50, 0x1d, 0x91, 0xa5, 0xe7, 0xa9, 0x26, 0x6e, 0xdd, 0x4b, 0xb5, 0x4a, 0xb9, 0xbc, 0x59,
		0x66, 0xba, 0x31, 0xdd, 0x1c, 0x60, 0x53, 0xfc, 0xe8, 0xce, 0xc9, 0xf4, 0x33, 0xa4, 0x05, 0xf0,
		0x46, 0xc6, 0x13, 0xb1, 0xe2, 0x6e, 0x6c, 0xec, 0x20, 0x94, 0x8e, 0x87, 0x4a, 0xc7, 0x5f, 0xfe,
		0xf4, 0x4a, 0xc5, 0x6a, 0xc1, 0x0b, 0xbc, 0x9a, 0xb7, 0x1d, 0xc5, 0x2d, 0x19, 0x7b, 0x5f, 0x85,
		0x91, 0x37, 0xe2, 0xce, 0x3b, 0x1a, 0x2d, 0xb5, 0xf4, 0x4a, 0xde, 0xda, 0xf6, 0xd7, 0xa3, 0xa0,
		0xb4, 0xee, 0x3b, 0xc0, 0x00, 0x8e, 0xd8, 0x51, 0x8f, 0x43, 0x41, 0x77, 0x36, 0x41, 0x9e, 0x88,
		0xdd, 0x35, 0x87, 0x2a, 0x0d, 0xfc, 0xa9, 0x53, 0x35, 0x63, 0x0a, 0x90, 0x1c, 0x48, 0x0e, 0x2b,
		0x7d, 0xbf, 0x10, 0x8f, 0x91, 0xc1, 0x9d, 0x53, 0x3f, 0xa1, 0xb8, 0xa8, 0x73, 0xeb, 0x1f, 0x05,
		0x89, 0x15, 0xc6, 0x77, 0x05, 0xc8, 0x0a, 0xe3, 0x8a, 0x22, 0x1d, 0x2b, 0x8c, 0xb9, 0x72, 0x1b,
		0x2b, 0x8c, 0xcb, 0xe6, 0x46, 0xb8, 0x55, 0x61, 0xfc, 0xe4, 0x40, 0x81, 0xb1, 0xcc, 0x02, 0xe3,
		0xf2, 0x7b, 0x39, 0x2c, 0x30, 0x66, 0x18, 0x2f, 0x2b, 0x1e, 0x2b, 0xae, 0x4a, 0xcf, 0x53, 0xcd,
		0xc5, 0x02, 0x63, 0xb1, 0xcc, 0xf2, 0x22, 0x93, 0xcd, 0x05, 0x30, 0xc5, 0x8f, 0x8e, 0xe5, 0xc5,
		0x59, 0xd2, 0x82, 0xe5, 0xc5, 0x15, 0x45, 0x52, 0x96, 0x17, 0x61, 0x06, 0x82, 0x2c, 0x2f, 0xe6,
		0x1f, 0x38, 0xcb, 0x8b, 0x8c, 0xce, 0x11, 0x72, 0x60, 0x79, 0xf1, 0x0d, 0xf9, 0x3c, 0xa8, 0xd9,
		0x5d, 0x8f, 0x86, 0x53, 0x2e, 0xd4, 0x17, 0x87, 0xb1, 0xb2, 0xc0, 0x38, 0x4f, 0x78, 0x2c, 0x30,
		0x2e, 0xb0, 0x35, 0xb2, 0xc0, 0x98, 0x11, 0xcc, 0xb1, 0xc0, 0x98, 0x39, 0xb9, 0xb1, 0xc0, 0xb8,
		0x6c, 0x7e, 0x84, 0x3b, 0x05, 0xc6, 0x86, 0xd2, 0x22, 0xbe, 0x73, 0xa0, 0xc2, 0xb8, 0x05, 0x1c,
		0xe2, 0xbe, 0xd4, 0x17, 0x83, 0xcd, 0xc2, 0xe8, 0xe7, 0xbc, 0xf3, 0x4e, 0x3a, 0x59, 0x62, 0x2c,
		0xb0, 0xea, 0x91, 0x71, 0x67, 0xc5, 0x12, 0x63, 0x06, 0xa9, 0xc6, 0x35, 0x8c, 0x4c, 0xb7, 0x25,
		0x49, 0x37, 0x5a, 0x85, 0x73, 0xbd, 0x58, 0x64, 0x9c, 0x25, 0x2d, 0x58, 0x64, 0x5c, 0x51, 0x28,
		0x65, 0x91, 0x11, 0x66, 0x2c, 0xc8, 0x22, 0x63, 0xfe, 0x81, 0xb3, 0xc8, 0xc8, 0xe8, 0x1c, 0x21,
		0x07, 0x16, 0x19, 0xdf, 0xc6, 0x31, 0x52, 0xb7, 0x64, 0x0b, 0xbf, 0xc4, 0x98, 0x46, 0xca, 0x02,
		0xe3, 0x3c, 0xe1, 0xb1, 0xc0, 0xb8, 0xc0, 0xb6, 0xc8, 0x02, 0x63, 0x46, 0x20, 0xc7, 0x02, 0x63,
		0xe6, 0xd4, 0xc6, 0x02, 0xe3, 0xb2, 0x79, 0x11, 0x0e, 0x15, 0x18, 0xa3, 0xa8, 0x23, 0x85, 0x76,
		0xa0, 0xc2, 0x58, 0x28, 0xb0, 0x09, 0xce, 0x86, 0x91, 0xb4, 0xc3, 0x16, 0xfe, 0xa2, 0x1d, 0x46,
		0x7a, 0x9a, 0x87, 0xa2, 0x68, 0x87, 0xd9, 0x00, 0x2b, 0xda, 0x61, 0x8c, 0xce, 0xa3, 0x1d, 0xe6,
		0x32, 0xcb, 0xf8, 0x51, 0xd7, 0xa8, 0x48, 0x8b, 0x0e, 0xbe, 0x1d, 0x96, 0x46, 0x4a, 0x3b, 0x6c,
		0x9e, 0xf0, 0x68, 0x87, 0x2d, 0xb2, 0x2d, 0xd2, 0x0e, 0xcb, 0x06, 0xe4, 0x68, 0x87, 0x65, 0x4e,
		0x6d, 0xb4, 0xc3, 0x96, 0xcd, 0x8b, 0xa0, 0x1d, 0xb6, 0x78, 0x19, 0xa7, 0x1d, 0x36, 0xd3, 0x5d,
		0xa3, 0x1d, 0x96, 0xc5, 0x8b, 0x76, 0x18, 0xe9, 0x69, 0x1e, 0x8a, 0xa2, 0x1d, 0x66, 0x03, 0xac,
		0x68, 0x87, 0x31, 0x3a, 0x8f, 0x76, 0x98, 0xcb, 0x2c, 0xe3, 0x77, 0x45, 0x6c, 0x94, 0x0b, 0x6e,
		0xd8, 0x38, 0x50, 0x9a, 0x61, 0xf3, 0x84, 0x47, 0x33, 0x6c, 0x81, 0x4d, 0x91, 0x66, 0x58, 0x46,
		0x18, 0x47, 0x33, 0x2c, 0x73, 0x66, 0xa3, 0x19, 0xb6, 0x6c, 0x4e, 0x04, 0xcd, 0xb0, 0xc5, 0xcb,
		0x38, 0xcd, 0xb0, 0x99, 0xee, 0x1a, 0xcd, 0xb0, 0x2c, 0x5e, 0x34, 0xc3, 0x48, 0x4f, 0xf3, 0x50,
		0x14, 0xcd, 0x30, 0x1b, 0x60, 0x45, 0x33, 0x8c, 0xd1, 0x79, 0x34, 0xc3, 0x5c, 0x66, 0x19, 0xdf,
		0xc4, 0x42, 0x27, 0x6a, 0xb4, 0x17, 0x0a, 0xb8, 0x1f, 0xf6, 0x24, 0x56, 0x5a, 0x62, 0xf3, 0x84,
		0x47, 0x4b, 0x6c, 0x81, 0xad, 0x91, 0x96, 0x58, 0x46, 0x30, 0x47, 0x4b, 0x2c, 0x73, 0x72, 0xa3,
		0x25, 0xb6, 0x6c, 0x7e, 0x04, 0x2d, 0xb1, 0xc5, 0xcb, 0x38, 0x2d, 0xb1, 0x99, 0xee, 0x1a, 0x2d,
		0xb1, 0x2c, 0x5e, 0xb4, 0xc4, 0x48, 0x4f, 0xf3, 0x50, 0x14, 0x2d, 0x31, 0x1b, 0x60, 0x45, 0x4b,
		0x8c, 0xd1, 0x79, 0xb4, 0xc4, 0x1c, 0x8d, 0x08, 0x8c, 0xac, 0xfc, 0x9a, 0xd6, 0x91, 0x11, 0x46,
		0x45, 0x98, 0x5b, 0xc6, 0xfb, 0x49, 0xf3, 0xa7, 0xbc, 0x12, 0x5d, 0x31, 0x38, 0x19, 0xc0, 0x0f,
		0xa3, 0xae, 0xd4, 0xcd, 0x81, 0xc5, 0x14, 0x68, 0x69, 0x6e, 0xa2, 0xf8, 0x32, 0x50, 0x7d, 0x1a,
		0xd4, 0x4d, 0x19, 0xbe, 0x7c, 0x23, 0x99, 0x78, 0x27, 0xec, 0x8e, 0xfa, 0xc7, 0x24, 0xbd, 0x0a,
		0x1b, 0x17, 0xdd, 0x30, 0x56, 0x8d, 0x50, 0xb4, 0x55, 0x90, 0x88, 0xb6, 0x4a, 0xd2, 0xab, 0x50,
		0x75, 0xaf, 0x4b, 0x41, 0x4f, 0xab, 0xa6, 0x48, 0x4c, 0xa8, 0xa5, 0xba, 0xf8, 0xd9, 0x88, 0xe2,
		0x24, 0xbd, 0x0a, 0x45, 0xeb, 0xd7, 0x60, 0x8c, 0xab, 0x74, 0xd0, 0x8d, 0x12, 0x13, 0xc6, 0x51,
		0xcf, 0xc8, 0x64, 0xf8, 0x25, 0xec, 0xe9, 0x4b, 0x1d, 0xdd, 0xe8, 0x40, 0x18, 0x13, 0xab, 0xc6,
		0xe0, 0x1b, 0x13, 0x6f, 0x85, 0x89, 0x11, 0x46, 0x62, 0x75, 0xd1, 0x38, 0xe9, 0x82, 0x11, 0x09,
		0x48, 0xc2, 0xf6, 0xb9, 0x2b, 0x3d, 0x30, 0xcc, 0xf4, 0x47, 0xe2, 0x20, 0x71, 0xed, 0xab, 0xc4,
		0xd4, 0x8c, 0x89, 0xa1, 0xba, 0x0f, 0xff, 0x9b, 0xd2, 0xbb, 0x1d, 0xd9, 0x47, 0x26, 0xb0, 0x3d,
		0xe3, 0xfd, 0x6f, 0xe2, 0xf6, 0x49, 0x64, 0x85, 0x4f, 0xa5, 0x52, 0xa5, 0x5a, 0x2a, 0x6d, 0x54,
		0x37, 0xab, 0x1b, 0x5b, 0xe5, 0x72, 0xa1, 0x52, 0x00, 0xda, 0x99, 0xdf, 0x3f, 0xec, 0xd3, 0xa5,
		0x6c, 0x6d, 0xf7, 0x9b, 0x9e, 0xee, 0x75, 0x3a, 0x88, 0xa1, 0x9d, 0x26, 0x32, 0x86, 0xda, 0x64,
		0x1f, 0xa5, 0xc7, 0x00, 0x95, 0xf6, 0xe5, 0x96, 0x74, 0xa0, 0xa1, 0xb0, 0x9f, 0x98, 0xb8, 0xd7,
		0x34, 0x7a, 0x64, 0x9d, 0x1c, 0x0c, 0xef, 0xdc, 0xde, 0xe8, 0xc6, 0xd5, 0xc7, 0x63, 0xc5, 0xfa,
		0xf6, 0x45, 0xb7, 0x7e, 0xac, 0x1a, 0xf5, 0x5a, 0x5b, 0x9d, 0x88, 0xb6, 0xaa, 0xef, 0x75, 0xaf,
		0x4b, 0xa7, 0xc3, 0x5b, 0x54, 0x3f, 0x18, 0xdd, 0x98, 0x7a, 0xad, 0xf5, 0xeb, 0x58, 0x35, 0xf6,
		0xf4, 0x51, 0x94, 0x98, 0xfa, 0x71, 0xff, 0x76, 0xd4, 0x4f, 0x87, 0x7f, 0x7b, 0x2d, 0xfd, 0xd3,
		0x3f, 0x90, 0x1a, 0xec, 0x47, 0x60, 0xb9, 0xf7, 0x41, 0xeb, 0x75, 0x96, 0xa9, 0xb7, 0xb1, 0x9b,
		0x60, 0xf6, 0x9a, 0xb5, 0x9d, 0x4f, 0xb6, 0x94, 0x48, 0x63, 0xd0, 0x1f, 0x96, 0xa8, 0xbd, 0x7e,
		0xc3, 0x0d, 0x94, 0xad, 0xcd, 0xbb, 0x31, 0xe8, 0x1e, 0x87, 0xe6, 0xa1, 0xe9, 0x1d, 0x88, 0xd6,
		0x81, 0xe8, 0xdc, 0x56, 0x1a, 0x83, 0xe8, 0xa0, 0xb3, 0xfa, 0x67, 0x11, 0xa4, 0x33, 0x06, 0x67,
		0x3b, 0x32, 0x9e, 0xbf, 0x88, 0xe6, 0xfb, 0x89, 0x39, 0xe7, 0xb9, 0xed, 0xfc, 0x76, 0x30, 0xaf,
		0xf3, 0x6d, 0xf7, 0xf9, 0xb5, 0xbe, 0x1c, 0x5b, 0x9e, 0x3f, 0x2c, 0x18, 0xe4, 0xdd, 0xe0, 0xd2,
		0xe9, 0x17, 0xc3, 0x8f, 0xcf, 0x39, 0xd3, 0xc6, 0x53, 0xa5, 0x72, 0xfe, 0xd8, 0x74, 0x26, 0x73,
		0x31, 0xe7, 0x0f, 0xb6, 0x38, 0x43, 0x19, 0x63, 0xe6, 0xb1, 0xed, 0x39, 0x31, 0x30, 0x33, 0x85,
		0x61, 0x26, 0xac, 0xc0, 0xcc, 0xec, 0x25, 0x53, 0x90, 0x29, 0x86, 0x4c, 0x61, 0xa1, 0x74, 0x9e,
		0x23, 0x52, 0x7c, 0x58, 0xa2, 0xe6, 0x6d, 0xab, 0x59, 0xbb, 0xd4, 0x9c, 0xfd, 0x5c, 0x19, 0x32,
		0x9b, 0xd1, 0x6d, 0x3e, 0xc9, 0x98, 0x7d, 0x6a, 0xe4, 0x90, 0x16, 0xfe, 0xd3, 0xc7, 0x1f, 0xe7,
		0x47, 0x3a, 0x29, 0xdf, 0xbd, 0xf8, 0xfc, 0x9c, 0x3a, 0x82, 0x7c, 0x49, 0x3e, 0xf7, 0xb5, 0x88,
		0x36, 0xc8, 0xdd, 0x2e, 0xb1, 0xdb, 0x22, 0x75, 0xeb, 0x84, 0x6e, 0x9d, 0xcc, 0xad, 0x13, 0xf9,
		0x72, 0x21, 0xca, 0x8e, 0xca, 0xb7, 0xc4, 0xe5, 0x8f, 0x2c, 0x31, 0x6b, 0x4e, 0xce, 0xe8, 0xf3,
		0x69, 0xe5, 0xd0, 0xca, 0xa1, 0x95, 0x43, 0x2b, 0x87, 0x56, 0x8e, 0xe3, 0x82, 0xf2, 0x5c, 0x58,
		0xec, 0xe5, 0xdb, 0x33, 0x7d, 0xb1, 0x95, 0x6b, 0x76, 0x64, 0xc6, 0xda, 0xb8, 0x03, 0x49, 0x76,
		0xb0, 0xe4, 0x07, 0x45, 0x86, 0xe0, 0xe4, 0x08, 0x4e, 0x96, 0xe0, 0xe4, 0xc9, 0x8e, 0x4c, 0x59,
		0x92, 0x2b, 0xeb, 0xb2, 0x95, 0x06, 0x30, 0x9e, 0xef, 0x68, 0x3d, 0x53, 0x1f, 0x77, 0xc8, 0xb7,
		0x39, 0x01, 0xf3, 0xa5, 0xa4, 0x59, 0x5e, 0xc9, 0x04, 0xb3, 0xbd, 0x17, 0xd2, 0x36, 0x5e, 0x98,
		0xdb, 0x75, 0xa1, 0x6d, 0x2c, 0x01, 0xbb, 0xfd, 0x16, 0xec, 0xae, 0x10, 0xb0, 0xdb, 0x69, 0xad,
		0xf6, 0x02, 0x17, 0x98, 0x6d, 0xb0, 0xd2, 0x7e, 0xa7, 0x23, 0x45, 0x3b, 0x96, 0x6d, 0x84, 0x4e,
		0x67, 0x3c, 0xf2, 0xaa, 0x02, 0xc4, 0x72, 0x34, 0x2a, 0xfc, 0x7e, 0xfc, 0x38, 0x9c, 0x2c, 0x10,
		0x8e, 0xa5, 0x7c, 0x55, 0x97, 0xd1, 0x58, 0x1c, 0x7f, 0x75, 0x31, 0xe4, 0xfa, 0x91, 0xea, 0x20,
		0x06, 0x5f, 0x84, 0x3a, 0x42, 0x1d, 0xa1, 0x8e, 0x50, 0x47, 0xa8, 0x23, 0xd4, 0x11, 0xea, 0xe6,
		0x84, 0xba, 0x61, 0xb7, 0x43, 0xa6, 0xcb, 0xfd, 0x51, 0xd8, 0x59, 0x8b, 0xf2, 0x6a, 0xc2, 0xd8,
		0x58, 0x9b, 0xf2, 0x6a, 0xaa, 0x90, 0xe8, 0x48, 0x74, 0x24, 0x3a, 0x12, 0x1d, 0x89, 0xce, 0xd6,
		0x53, 0xb1, 0x5d, 0xc9, 0x4a, 0x03, 0x19, 0xec, 0xd8, 0xa7, 0x74, 0x4b, 0xe2, 0x1c, 0x3a, 0xf2,
		0x38, 0x0d, 0xfc, 0x31, 0x36, 0x94, 0x6d, 0x0e, 0xa1, 0x8e, 0xb7, 0x81, 0x3b, 0xce, 0x06, 0xf1,
		0xf8, 0x1a, 0xec, 0xe3, 0x6a, 0x50, 0x37, 0x58, 0x87, 0x3f, 0x8e, 0x06, 0x7e, 0xb7, 0x74, 0xf8,
		0xe3, 0x66, 0xb8, 0x81, 0x2d, 0xa4, 0xc5, 0x02, 0x6c, 0xb5, 0x20, 0x5a, 0x2e, 0xd3, 0xac, 0x97,
		0x7f, 0xf9, 0x6f, 0x80, 0x14, 0x89, 0x34, 0x49, 0x7a, 0x35, 0x32, 0x6a, 0x86, 0x98, 0xc1, 0x3d,
		0x22, 0x51, 0x92, 0xd2, 0x6f, 0x46, 0x57, 0x57, 0x3d, 0xad, 0xcc, 0x1d, 0x2a, 0x9d, 0xbe, 0x0c,
		0x90, 0x88, 0x4a, 0x44, 0x25, 0xa2, 0x12, 0x51, 0x89, 0xa8, 0x44, 0x54, 0x22, 0x2a, 0x11, 0x75,
		0x5e, 0x44, 0x1d, 0x73, 0x85, 0x92, 0x49, 0x7a, 0x7d, 0x47, 0x4a, 0xc5, 0xa4, 0x54, 0x79, 0x6b,
		0x02, 0x78, 0x52, 0x9d, 0x16, 0x24, 0x69, 0x95, 0xb4, 0x4a, 0x5a, 0x25, 0xad, 0x92, 0x56, 0x49,
		0xab, 0xa4, 0x55, 0xd2, 0xea, 0xbc, 0xb4, 0xfa, 0x94, 0x2d, 0xfa, 0xc4, 0xfa, 0x8c, 0x35, 0x48,
		0xad, 0x98, 0xd4, 0xaa, 0xf4, 0xb5, 0xe8, 0xa8, 0x56, 0x10, 0x4b, 0x91, 0x00, 0x9d, 0xbf, 0x95,
		0x66, 0xe8, 0x8b, 0xf8, 0xc8, 0xaa, 0x64, 0x55, 0xb2, 0x2a, 0x59, 0x95, 0xac, 0x4a, 0x56, 0x5d,
		0x31, 0x56, 0x55, 0x2d, 0xa9, 0x8d, 0x32, 0x77, 0xa0, 0xbc, 0x8a, 0x74, 0x1a, 0xec, 0xde, 0xe8,
		0x56, 0x6d, 0x8b, 0x04, 0xb0, 0x4b, 0x1d, 0x3f, 0xd0, 0xbd, 0x83, 0xbf, 0x6a, 0xfb, 0x7b, 0x3b,
		0xf5, 0xe3, 0xc3, 0xd3, 0xef, 0xbb, 0xf5, 0xe3, 0xdd, 0xda, 0xc9, 0xe1, 0x01, 0x5a, 0xef, 0xfa,
		0x97, 0xe8, 0xf4, 0x06, 0xbb, 0x3f, 0x9e, 0xc1, 0x9d, 0xb8, 0x8e, 0x77, 0x06, 0xfc, 0xd4, 0xa7,
		0x5b, 0x3b, 0xa9, 0xef, 0x1f, 0x1e, 0x1e, 0xf9, 0x70, 0xd1, 0x82, 0x1d, 0xf0, 0xef, 0xd0, 0x23,
		0xfd, 0x73, 0xff, 0xf4, 0xe4, 0xfb, 0xee, 0x31, 0x9f, 0xeb, 0xb2, 0x3d, 0xd7, 0xc3, 0x83, 0x2f,
		0xbb, 0x3b, 0x7c, 0xa2, 0xcb, 0xf3, 0x44, 0x0f, 0x8f, 0xf7, 0xbe, 0xee, 0x1d, 0xd4, 0xbe, 0x1f,
		0x1e, 0x03, 0x3e, 0x55, 0xa8, 0x88, 0xce, 0x39, 0x1e, 0x01, 0x8b, 0x02, 0xc1, 0x1d, 0xec, 0x88,
		0xc4, 0x04, 0x57, 0x51, 0x4b, 0xb5, 0x95, 0x6c, 0xe1, 0x99, 0x83, 0xcf, 0xc3, 0xa3, 0x37, 0x38,
		0x2d, 0x1c, 0x7a, 0x83, 0x33, 0x34, 0x28, 0x7a, 0x83, 0x33, 0xb5, 0x74, 0x7a, 0x83, 0xef, 0x0c,
		0x90, 0xde, 0xa0, 0x43, 0xfc, 0x0b, 0xec, 0x0d, 0x1a, 0x75, 0x25, 0x8d, 0x6a, 0x5e, 0x26, 0x95,
		0x12, 0xa0, 0x37, 0xf8, 0x09, 0x28, 0xa4, 0x53, 0xad, 0x06, 0x27, 0xe2, 0xfb, 0x5a, 0xe8, 0x28,
		0x91, 0xcd, 0x48, 0xb7, 0x12, 0xa4, 0x5b, 0x76, 0x2c, 0xf4, 0x85, 0x84, 0xf3, 0xdb, 0xf0, 0x86,
		0x7b, 0xfe, 0x37, 0xa5, 0xe1, 0x14, 0x31, 0x0d, 0x6e, 0x60, 0x9b, 0xe2, 0x30, 0xd7, 0x44, 0x7c,
		0x5f, 0x62, 0xd1, 0x34, 0x2a, 0xd2, 0x3b, 0xea, 0x62, 0x98, 0x0e, 0xa8, 0x81, 0x1e, 0xc8, 0x0b,
		0x61, 0xd4, 0x75, 0xff, 0x5e, 0xb6, 0x45, 0x27, 0x91, 0xf4, 0x66, 0xde, 0x92, 0x1a, 0xe2, 0x16,
		0x3f, 0x35, 0x0a, 0x9f, 0x4a, 0xa5, 0x4a, 0xb5, 0x54, 0xda, 0xa8, 0x6e, 0x56, 0x37, 0xb6, 0xca,
		0xe5, 0x42, 0x05, 0xa9, 0x84, 0xc4, 0x6c, 0x59, 0x62, 0x9e, 0xc4, 0x8b, 0xe6, 0x9c, 0x9e, 0x17,
		0x4a, 0x6f, 0x0a, 0x73, 0xb0, 0xc3, 0x04, 0xe4, 0x63, 0x1c, 0xf0, 0xf0, 0x12, 0xee, 0xe9, 0x73,
		0xbd, 0x12, 0x10, 0x7d, 0xae, 0x59, 0xa3, 0xa3, 0xcf, 0x35, 0x67, 0x80, 0xf4, 0xb9, 0x96, 0x82,
		0x04, 0xe8, 0x73, 0xfd, 0x57, 0xbf, 0xd5, 0x53, 0xda, 0x6c, 0x16, 0x01, 0x2d, 0xae, 0x2a, 0x2d,
		0xa4, 0xff, 0x78, 0xd1, 0x42, 0x9a, 0x6f, 0x9c, 0x4c, 0x0b, 0x69, 0xe9, 0x07, 0xc5, 0xb4, 0x90,
		0xe6, 0x4b, 0x8d, 0x52, 0x71, 0xab, 0xb4, 0x55, 0xa9, 0x16, 0xb7, 0x68, 0x1c, 0x2d, 0x7d, 0x8e,
		0xd0, 0x38, 0x9a, 0xfa, 0x3a, 0x27, 0xb8, 0x3e, 0x69, 0xc6, 0xf2, 0xd6, 0xc4, 0x22, 0xe8, 0xe9,
		0xc4, 0x88, 0x46, 0x07, 0x0c, 0x61, 0x63, 0xd9, 0x96, 0xb1, 0xd4, 0x4d, 0x92, 0xd9, 0x0c, 0xbc,
		0xdf, 0x8a, 0x45, 0xdb, 0x04, 0x4a, 0x9a, 0x76, 0xa0, 0x5a, 0x71, 0x20, 0x5a, 0xad, 0xa0, 0x2b,
		0xcc, 0xcf, 0xc4, 0x0b, 0xbc, 0x5a, 0xeb, 0x5a, 0xc6, 0x46, 0x25, 0xb2, 0x3f, 0xae, 0xf4, 0xa2,
		0xb6, 0xf7, 0xad, 0xd7, 0x31, 0xaa, 0xdb, 0x91, 0xde, 0x51, 0xff, 0x27, 0x7e, 0x68, 0xa5, 0xbd,
		0xed, 0xaf, 0x47, 0x3e, 0xa0, 0xb8, 0x82, 0xfa, 0x1c, 0xd3, 0xfc, 0x8e, 0xc7, 0x56, 0x0b, 0xaa,
		0x5c, 0xe8, 0xd6, 0xc7, 0x54, 0x0b, 0x64, 0x01, 0xcd, 0x9a, 0x0a, 0x4d, 0x85, 0x76, 0xea, 0x7e,
		0x40, 0x94, 0x76, 0xb0, 0x2c, 0x79, 0xac, 0x43, 0x1e, 0x1f, 0xbb, 0x7f, 0x16, 0x76, 0xfe, 0x35,
		0x20, 0x16, 0x76, 0x96, 0x04, 0x78, 0x58, 0xd8, 0x59, 0x28, 0xd5, 0xb0, 0xb0, 0x83, 0x3e, 0x3e,
		0x06, 0xde, 0xdc, 0xa0, 0x7b, 0x5d, 0x0a, 0xe0, 0x72, 0x30, 0xdd, 0xdc, 0xe0, 0x13, 0xd6, 0x66,
		0x5c, 0x46, 0xc6, 0x1a, 0xce, 0x46, 0xf0, 0xd7, 0xce, 0x36, 0x82, 0xad, 0xf3, 0xfb, 0xb3, 0x42,
		0xb0, 0x75, 0x3e, 0xbc, 0x2c, 0x0c, 0xbe, 0xfc, 0x2e, 0x3e, 0xdc, 0x17, 0xcf, 0x36, 0x82, 0xd2,
		0xe8, 0xdd, 0x62, 0xf9, 0x6c, 0x23, 0x28, 0x9f, 0xaf, 0xaf, 0xfd, 0xf8, 0xf1, 0x71, 0xd6, 0xdf,
		0x59, 0xff, 0xbd, 0xf9, 0x10, 0xa6, 0xbf, 0x54, 0x1c, 0x7d, 0x77, 0xf3, 0x6c, 0x23, 0x28, 0x9e,
		0xaf, 0xe3, 0x74, 0x3b, 0xe7, 0x48, 0xed, 0xe5, 0xf0, 0x64, 0xef, 0x6f, 0xd8, 0x46, 0xf3, 0xcf,
		0x9a, 0xf5, 0x66, 0xb3, 0xfe, 0x3f, 0x9f, 0xa3, 0x45, 0x8e, 0x16, 0x27, 0x9a, 0xe6, 0x68, 0xe3,
		0xb9, 0xa8, 0x67, 0x24, 0xde, 0x90, 0xf1, 0x69, 0x70, 0x1c, 0x37, 0x72, 0xdc, 0xc8, 0x71, 0x23,
		0xc7, 0x8d, 0x1c, 0x37, 0x72, 0xdc, 0xb8, 0x62, 0xe3, 0xc6, 0x46, 0x14, 0x75, 0xa4, 0xd0, 0x88,
		0x63, 0xc6, 0x02, 0x51, 0x0e, 0x20, 0x02, 0xdb, 0xa7, 0x3b, 0xd7, 0xb4, 0x8e, 0x8c, 0x30, 0x0a,
		0x64, 0x6f, 0x65, 0x3f, 0x69, 0xfe, 0x94, 0x57, 0xa2, 0x3b, 0xda, 0xd0, 0x3b, 0x8c, 0xba, 0x52,
		0x37, 0x07, 0xa0, 0x14, 0x68, 0x69, 0x6e, 0xa2, 0xf8, 0x32, 0x50, 0x3a, 0x31, 0x42, 0x37, 0x65,
		0xf8, 0xf2, 0x8d, 0x64, 0xe2, 0x9d, 0xb0, 0x1b, 0x47, 0x26, 0x6a, 0x46, 0x9d, 0x24, 0xbd, 0x0a,
		0x1b, 0x17, 0xdd, 0x30, 0x56, 0x8d, 0x50, 0xb4, 0x55, 0x90, 0x88, 0xb6, 0x4a, 0xd2, 0xab, 0x70,
		0x60, 0xf2, 0xf4, 0xb4, 0x6a, 0x8a, 0xc4, 0x84, 0x5a, 0xaa, 0x8b, 0x9f, 0x8d, 0x28, 0x4e, 0xd2,
		0xab, 0x50, 0xb4, 0x7e, 0x0d, 0x94, 0x40, 0xe9, 0xa0, 0x1b, 0xcb, 0x70, 0x00, 0xb7, 0xc9, 0xf0,
		0xcb, 0x70, 0xfb, 0x70, 0xbb, 0xfa, 0x60, 0xaf, 0x21, 0x5b, 0x6c, 0xc4, 0x7e, 0x4f, 0x5f, 0xea,
		0xe8, 0x46, 0x07, 0xc2, 0x98, 0x58, 0x35, 0xfa, 0x4f, 0xc4, 0x7a, 0x43, 0x7e, 0x9c, 0x0e, 0x3e,
		0x19, 0x9b, 0xe5, 0x74, 0x1f, 0x77, 0xfe, 0x96, 0xc3, 0x40, 0x19, 0xfb, 0x20, 0x8d, 0x79, 0x30,
		0xc7, 0x3a, 0x68, 0x63, 0x1c, 0xd8, 0xb1, 0x0d, 0xec, 0x98, 0x06, 0x76, 0x2c, 0xb3, 0xda, 0xe0,
		0xb5, 0xa3, 0x62, 0x8c, 0x6e, 0x67, 0x42, 0xa4, 0xf0, 0xcc, 0xc4, 0xc9, 0x10, 0xb1, 0x2c, 0xc5,
		0x02, 0x2d, 0x45, 0x78, 0x79, 0xc5, 0x96, 0x59, 0x54, 0xb9, 0x85, 0x97, 0x5d, 0x78, 0xf9, 0x85,
		0x97, 0x61, 0x1c, 0x27, 0xc6, 0x03, 0xb2, 0x14, 0x51, 0xe4, 0x39, 0x0d, 0xa8, 0xaf, 0x7d, 0x81,
		0x41, 0x33, 0x3a, 0x9f, 0xf5, 0xa8, 0x8f, 0x21, 0x82, 0xa5, 0x1e, 0x56, 0xe5, 0x0f, 0x56, 0xae,
		0x91, 0x65, 0xdb, 0x0d, 0xf9, 0x46, 0x97, 0x71, 0x67, 0xe4, 0xdc, 0x19, 0x59, 0x77, 0x46, 0xde,
		0xb1, 0x64, 0x1e, 0x4c, 0xee, 0xd3, 0xa7, 0xf8, 0x1d, 0x51, 0x60, 0x3d, 0xec, 0x23, 0x61, 0x27,
		0x46, 0xc3, 0x55, 0xc0, 0xd8, 0x9e, 0x1c, 0x11, 0x3b, 0x3c, 0xe9, 0xf5, 0x11, 0x56, 0xb8, 0x30,
		0x0c, 0x3d, 0x35, 0xfd, 0x61, 0x75, 0x0d, 0x16, 0x7c, 0x87, 0xe1, 0x61, 0x42, 0x6f, 0x81, 0xd0,
		0x4b, 0xe8, 0x25, 0xf4, 0x12, 0x7a, 0x09, 0xbd, 0x54, 0xd6, 0xe9, 0x4f, 0x11, 0xcd, 0xeb, 0x4a,
		0x03, 0x1b, 0x30, 0x5a, 0x47, 0x02, 0xef, 0x82, 0xf6, 0xcc, 0xfa, 0xea, 0x47, 0x0a, 0x9a, 0xa8,
		0x98, 0x0e, 0x18, 0x3c, 0x14, 0xb8, 0x00, 0x07, 0x6e, 0x41, 0x82, 0x2b, 0xb0, 0xe0, 0x1c, 0x34,
		0x38, 0x07, 0x0f, 0xce, 0x41, 0x04, 0x26, 0x4c, 0x80, 0x42, 0x45, 0xfa, 0x74, 0x61, 0x1d, 0xb5,
		0x89, 0x7e, 0xb3, 0xa7, 0xb4, 0x29, 0x54, 0x90, 0xfb, 0xcc, 0x91, 0x8a, 0x57, 0x80, 0x43, 0xc4,
		0xdc, 0xdc, 0xf7, 0xe5, 0x0b, 0x5b, 0x73, 0x3c, 0xf4, 0xcd, 0x7f, 0x27, 0x82, 0x05, 0xdf, 0x0c,
		0x78, 0x22, 0x5e, 0x57, 0x36, 0x3e, 0x9d, 0xec, 0xab, 0xd0, 0x37, 0x42, 0x75, 0x44, 0x96, 0x9e,
		0xa7, 0x9a, 0xb8, 0x75, 0x2f, 0xd5, 0x2a, 0xe5, 0xf2, 0x66, 0x99, 0xe9, 0xc6, 0x74, 0x73, 0x80,
		0x4d, 0xf1, 0xa3, 0x3b, 0x27, 0xd3, 0xcf, 0x90, 0x16, 0xc0, 0xfb, 0x18, 0x4f, 0xc4, 0x8a, 0xbb,
		0xaf, 0xb1, 0x83, 0x50, 0x3a, 0x1e, 0x2a, 0x1d, 0x7f, 0xf9, 0xd3, 0x2b, 0x15, 0xab, 0x05, 0x2f,
		0xf0, 0x6a, 0xde, 0x76, 0x14, 0xb7, 0x64, 0xec, 0x7d, 0x15, 0x46, 0xde, 0x88, 0x3b, 0xef, 0x68,
		0xb4, 0xd2, 0xd2, 0x2b, 0x79, 0x6b, 0xdb, 0x5f, 0x8f, 0x82, 0xd2, 0xba, 0xef, 0x00, 0x03, 0x38,
		0x62, 0x47, 0x3d, 0x0e, 0x05, 0xdd, 0xd9, 0x03, 0x79, 0x22, 0x76, 0xd7, 0x1c, 0xaa, 0x34, 0xf0,
		0xa7, 0x4e, 0xd5, 0x8c, 0x29, 0x40, 0x72, 0x20, 0x39, 0xac, 0xf4, 0xfd, 0x42, 0x3c, 0x45, 0x06,
		0x77, 0x4e, 0xfd, 0x84, 0xe2, 0xa2, 0xce, 0xad, 0x7f, 0x14, 0x24, 0x56, 0x18, 0xdf, 0x15, 0x20,
		0x2b, 0x8c, 0x2b, 0x8a, 0x74, 0xac, 0x30, 0xe6, 0xca, 0x6d, 0xac, 0x30, 0x2e, 0x9b, 0x1b, 0xe1,
		0x56, 0x85, 0xf1, 0x93, 0x03, 0x05, 0xc6, 0x32, 0x0b, 0x8c, 0xcb, 0xef, 0xe5, 0xb0, 0xc0, 0x98,
		0x61, 0xbc, 0xac, 0x78, 0xac, 0xb8, 0x2a, 0x3d, 0x4f, 0x35, 0x17, 0x0b, 0x8c, 0xc5, 0x32, 0xcb,
		0x8b, 0x4c, 0x36, 0x17, 0xc0, 0x14, 0x3f, 0x3a, 0x96, 0x17, 0x67, 0x49, 0x0b, 0x96, 0x17, 0x57,
		0x14, 0x49, 0x59, 0x5e, 0x84, 0x19, 0x08, 0xb2, 0xbc, 0x98, 0x7f, 0xe0, 0x2c, 0x2f, 0x32, 0x3a,
		0x47, 0xc8, 0x81, 0xe5, 0xc5, 0x37, 0xe4, 0xf3, 0xa0, 0x66, 0x77, 0x3d, 0x1a, 0x4e, 0xb9, 0x50,
		0x5f, 0x1c, 0xc6, 0xca, 0x02, 0xe3, 0x3c, 0xe1, 0xb1, 0xc0, 0xb8, 0xc0, 0xd6, 0xc8, 0x02, 0x63,
		0x46, 0x30, 0xc7, 0x02, 0x63, 0xe6, 0xe4, 0xc6, 0x02, 0xe3, 0xb2, 0xf9, 0x11, 0xee, 0x14, 0x18,
		0x1b, 0x4a, 0x8b, 0xf8, 0xce, 0x81, 0x0a, 0xe3, 0x16, 0x70, 0x88, 0xfb, 0x52, 0x5f, 0x0c, 0x36,
		0x0b, 0xa3, 0x9f, 0xf3, 0xce, 0x3b, 0xe9, 0x64, 0x89, 0xb1, 0xc0, 0xaa, 0x47, 0xc6, 0x9d, 0x15,
		0x4b, 0x8c, 0x19, 0xa4, 0x1a, 0xd7, 0x30, 0x32, 0xdd, 0x96, 0x24, 0xdd, 0x68, 0x15, 0xce, 0xf5,
		0x62, 0x91, 0x71, 0x96, 0xb4, 0x60, 0x91, 0x71, 0x45, 0xa1, 0x94, 0x45, 0x46, 0x98, 0xb1, 0x20,
		0x8b, 0x8c, 0xf9, 0x07, 0xce, 0x22, 0x23, 0xa3, 0x73, 0x84, 0x1c, 0x58, 0x64, 0x7c, 0x1b, 0xc7,
		0x48, 0xdd, 0x92, 0x2d, 0xfc, 0x12, 0x63, 0x1a, 0x29, 0x0b, 0x8c, 0xf3, 0x84, 0xc7, 0x02, 0xe3,
		0x02, 0xdb, 0x22, 0x0b, 0x8c, 0x19, 0x81, 0x1c, 0x0b, 0x8c, 0x99, 0x53, 0x1b, 0x0b, 0x8c, 0xcb,
		0xe6, 0x45, 0x38, 0x54, 0x60, 0x8c, 0xa2, 0x8e, 0x14, 0xda, 0x81, 0x0a, 0x63, 0xa1, 0xc0, 0x26,
		0x38, 0x1b, 0x46, 0xd2, 0x0e, 0x5b, 0xf8, 0x8b, 0x76, 0x18, 0xe9, 0x69, 0x1e, 0x8a, 0xa2, 0x1d,
		0x66, 0x03, 0xac, 0x68, 0x87, 0x31, 0x3a, 0x8f, 0x76, 0x98, 0xcb, 0x2c, 0xe3, 0x47, 0x5d, 0xa3,
		0x22, 0x2d, 0x3a, 0xf8, 0x76, 0x58, 0x1a, 0x29, 0xed, 0xb0, 0x79, 0xc2, 0xa3, 0x1d, 0xb6, 0xc8,
		0xb6, 0x48, 0x3b, 0x2c, 0x1b, 0x90, 0xa3, 0x1d, 0x96, 0x39, 0xb5, 0xd1, 0x0e, 0x5b, 0x36, 0x2f,
		0x82, 0x76, 0xd8, 0xe2, 0x65, 0x9c, 0x76, 0xd8, 0x4c, 0x77, 0x8d, 0x76, 0x58, 0x16, 0x2f, 0xda,
		0x61, 0xa4, 0xa7, 0x79, 0x28, 0x8a, 0x76, 0x98, 0x0d, 0xb0, 0xa2, 0x1d, 0xc6, 0xe8, 0x3c, 0xda,
		0x61, 0x2e, 0xb3, 0x8c, 0xdf, 0x15, 0xb1, 0x51, 0x2e, 0xb8, 0x61, 0xe3, 0x40, 0x69, 0x86, 0xcd,
		0x13, 0x1e, 0xcd, 0xb0, 0x05, 0x36, 0x45, 0x9a, 0x61, 0x19, 0x61, 0x1c, 0xcd, 0xb0, 0xcc, 0x99,
		0x8d, 0x66, 0xd8, 0xb2, 0x39, 0x11, 0x34, 0xc3, 0x16, 0x2f, 0xe3, 0x34, 0xc3, 0x66, 0xba, 0x6b,
		0x34, 0xc3, 0xb2, 0x78, 0xd1, 0x0c, 0x23, 0x3d, 0xcd, 0x43, 0x51, 0x34, 0xc3, 0x6c, 0x80, 0x15,
		0xcd, 0x30, 0x46, 0xe7, 0xd1, 0x0c, 0x73, 0x99, 0x65, 0x7c, 0x13, 0x0b, 0x9d, 0xa8, 0xd1, 0x5e,
		0x28, 0xe0, 0x7e, 0xd8, 0x93, 0x58, 0x69, 0x89, 0xcd, 0x13, 0x1e, 0x2d, 0xb1, 0x05, 0xb6, 0x46,
		0x5a, 0x62, 0x19, 0xc1, 0x1c, 0x2d, 0xb1, 0xcc, 0xc9, 0x8d, 0x96, 0xd8, 0xb2, 0xf9, 0x11, 0xb4,
		0xc4, 0x16, 0x2f, 0xe3, 0xb4, 0xc4, 0x66, 0xba, 0x6b, 0xb4, 0xc4, 0xb2, 0x78, 0xd1, 0x12, 0x23,
		0x3d, 0xcd, 0x43, 0x51, 0xb4, 0xc4, 0x6c, 0x80, 0x15, 0x2d, 0x31, 0x46, 0xe7, 0xd1, 0x12, 0x73,
		0x34, 0x22, 0x30, 0xb2, 0xf2, 0x6b, 0x5a, 0x47, 0x46, 0x18, 0x15, 0x61, 0x6e, 0x19, 0xef, 0x27,
		0xcd, 0x9f, 0xf2, 0x4a, 0x74, 0xc5, 0xe0, 0x64, 0x00, 0x3f, 0x8c, 0xba, 0x52, 0x37, 0x07, 0x16,
		0x53, 0xa0, 0xa5, 0xb9, 0x89, 0xe2, 0xcb, 0x40, 0xf5, 0x69, 0x50, 0x37, 0x65, 0xf8, 0xf2, 0x8d,
		0x64, 0xe2, 0x9d, 0xb0, 0x3b, 0xea, 0x1f, 0x93, 0xf4, 0x2a, 0x6c, 0x5c, 0x74, 0xc3, 0x58, 0x35,
		0x42, 0xd1, 0x56, 0x41, 0x22, 0xda, 0x2a, 0x49, 0xaf, 0x42, 0xd5, 0xbd, 0x2e, 0x05, 0x3d, 0xad,
		0x9a, 0x22, 0x31, 0xa1, 0x96, 0xea, 0xe2, 0x67, 0x23, 0x8a, 0x93, 0xf4, 0x2a, 0x14, 0xad, 0x5f,
		0x83, 0x31, 0xae, 0xd2, 0x41, 0x37, 0x96, 0x61, 0x1c, 0xf5, 0x8c, 0x4c, 0x86, 0x5f, 0xc2, 0x9e,
		0xbe, 0xd4, 0xd1, 0x8d, 0x0e, 0x84, 0x31, 0xb1, 0x6a, 0x0c, 0xbe, 0x31, 0xf1, 0x56, 0x98, 0x18,
		0x61, 0x24, 0x56, 0x0f, 0x8d, 0x93, 0x2d, 0x18, 0x91, 0x80, 0xe4, 0x6b, 0x1f, 0xbb, 0xd2, 0xf3,
		0xc2, 0x4c, 0x7f, 0x20, 0x0e, 0x12, 0xd7, 0xbe, 0x4a, 0x4c, 0xcd, 0x98, 0x18, 0xaa, 0xf7, 0xf0,
		0xbf, 0x29, 0xbd, 0xdb, 0x91, 0x7d, 0x62, 0x02, 0xdb, 0x32, 0xde, 0xff, 0x26, 0x6e, 0x9f, 0x44,
		0x56, 0xf8, 0x54, 0x2a, 0x55, 0xaa, 0xa5, 0xd2, 0x46, 0x75, 0xb3, 0xba, 0xb1, 0x55, 0x2e, 0x17,
		0x2a, 0x05, 0xa0, 0x8d, 0xf9, 0xfd, 0xc3, 0x3e, 0x5c, 0xca, 0xd6, 0x76, 0xbf, 0xe9, 0xe9, 0x5e,
		0xa7, 0x83, 0x18, 0xda, 0x69, 0x22, 0x63, 0xa8, 0x3d, 0xf6, 0x51, 0x7a, 0x0c, 0x50, 0x65, 0x5f,
		0x6a, 0x45, 0x07, 0x1a, 0x08, 0xfb, 0x89, 0x89, 0x7b, 0x4d, 0xa3, 0x47, 0xc6, 0xc9, 0xc1, 0xf0,
		0xc6, 0xed, 0x8d, 0xee, 0x5b, 0x7d, 0x3c, 0x52, 0xac, 0x6f, 0x5f, 0x74, 0xeb, 0xc7, 0xaa, 0x51,
		0xaf, 0xb5, 0xd5, 0x89, 0x68, 0xab, 0xfa, 0x5e, 0xf7, 0xba, 0x74, 0x3a, 0xbc, 0x43, 0xf5, 0x83,
		0xd1, 0x7d, 0xa9, 0xd7, 0x5a, 0xbf, 0x8e, 0x55, 0x63, 0x4f, 0x1f, 0xc5, 0xb2, 0x7e, 0xdc, 0xbf,
		0x1b, 0xf5, 0xd3, 0xe1, 0x9f, 0x5e, 0x4b, 0xff, 0xf2, 0x0f, 0x64, 0x06, 0xfb, 0x11, 0x58, 0xee,
		0x7b, 0xd0, 0xfa, 0x9c, 0x25, 0xea, 0x6b, 0xec, 0xe6, 0x97, 0xbd, 0x56, 0x6d, 0xe7, 0x93, 0x2d,
		0xe5, 0xd1, 0x98, 0xf2, 0x87, 0xe5, 0x69, 0xaf, 0xdf, 0x6e, 0x03, 0x65, 0x6b, 0xe3, 0x6e, 0x0c,
		0xb4, 0xc7, 0x41, 0x79, 0x68, 0x74, 0x07, 0x42, 0x75, 0x20, 0x34, 0xb7, 0x95, 0xc6, 0x20, 0x32,
		0xe8, 0xaa, 0xfc, 0x59, 0xa4, 0xe8, 0x6c, 0xa9, 0xd9, 0x8e, 0x88, 0xe7, 0x2f, 0xa1, 0xf9, 0x7e,
		0x62, 0xce, 0x59, 0x6e, 0x3b, 0xbb, 0xdd, 0xcb, 0xea, 0x7c, 0x9b, 0x7d, 0x7e, 0x8d, 0x2f, 0xc7,
		0x86, 0xe7, 0x0f, 0x4b, 0x05, 0x79, 0xb7, 0xb7, 0x74, 0xde, 0xc5, 0xf0, 0xe3, 0x73, 0x4e, 0xb4,
		0xf1, 0x1c, 0xa9, 0x9c, 0x3f, 0x36, 0x9d, 0xc2, 0x5c, 0xcc, 0xf9, 0x83, 0x2d, 0x4e, 0x4d, 0xc6,
		0x98, 0x72, 0x6c, 0x7b, 0x32, 0x0c, 0xcc, 0x14, 0x61, 0x98, 0x99, 0x2a, 0x30, 0x53, 0x7a, 0x89,
		0x14, 0x44, 0x8a, 0x01, 0x52, 0x58, 0xa8, 0x99, 0xe7, 0x48, 0x14, 0x1f, 0x96, 0xa8, 0x75, 0xdb,
		0x6a, 0xd5, 0x0e, 0xb5, 0x66, 0x3f, 0x57, 0x82, 0xcc, 0x64, 0x64, 0x9b, 0x4f, 0x2a, 0x66, 0x9f,
		0x18, 0x39, 0x24, 0x85, 0x3f, 0x7e, 0xf8, 0x51, 0xcf, 0x04, 0xdd, 0x28, 0x31, 0xb9, 0xa5, 0x45,
		0x8a, 0x77, 0x13, 0x11, 0xe4, 0xd4, 0x15, 0xe4, 0x8b, 0xf2, 0xb9, 0xaf, 0x42, 0xb4, 0x81, 0xee,
		0x76, 0x91, 0xdd, 0x16, 0xaa, 0x5b, 0x47, 0x74, 0xeb, 0x68, 0x6e, 0x1d, 0xc9, 0x97, 0x0b, 0x52,
		0x76, 0x54, 0xbe, 0x05, 0x2e, 0x7f, 0xe4, 0x89, 0x59, 0xb3, 0x72, 0x46, 0x9f, 0x4f, 0x2f, 0x87,
		0x5e, 0x0e, 0xbd, 0x1c, 0x7a, 0x39, 0xf4, 0x72, 0x1c, 0x17, 0x94, 0xe7, 0xc2, 0x62, 0x2f, 0xdf,
		0x9e, 0xe9, 0x8b, 0xad, 0x5c, 0xb3, 0x23, 0x33, 0xd6, 0xc6, 0x1d, 0x48, 0xb2, 0x83, 0x25, 0x3f,
		0x28, 0x32, 0x04, 0x27, 0x47, 0x70, 0xb2, 0x04, 0x27, 0x4f, 0x76, 0x64, 0xca, 0x92, 0x5c, 0x59,
		0x97, 0xad, 0x34, 0x80, 0xf1, 0x6c, 0x47, 0xeb, 0x99, 0xfa, 0xb8, 0x37, 0xbe, 0xcd, 0xe9, 0x97,
		0x2f, 0x25, 0xcd, 0xf2, 0x22, 0x26, 0x98, 0x8d, 0xbd, 0x90, 0x36, 0xf0, 0xc2, 0xdc, 0xa8, 0x0b,
		0x6d, 0x4b, 0x09, 0xd8, 0x8d, 0xb7, 0x60, 0xf7, 0x83, 0x80, 0xdd, 0x48, 0x6b, 0xb5, 0x57, 0xb7,
		0xc0, 0x6c, 0x80, 0x95, 0xf6, 0x3b, 0x1d, 0x29, 0xda, 0xb1, 0x6c, 0x23, 0x74, 0x3a, 0xe3, 0x91,
		0x57, 0x15, 0x20, 0x96, 0xa3, 0x51, 0xe9, 0xf7, 0xe3, 0xc7, 0xe1, 0x74, 0x81, 0x70, 0x2c, 0xe5,
		0xab, 0xba, 0x88, 0xc6, 0xe2, 0xf8, 0xab, 0x8b, 0x21, 0xd7, 0x8f, 0x54, 0x07, 0x31, 0xf8, 0x22,
		0xd4, 0x11, 0xea, 0x08, 0x75, 0x84, 0x3a, 0x42, 0x1d, 0xa1, 0x8e, 0x50, 0x37, 0x27, 0xd4, 0x0d,
		0xbb, 0x1d, 0x32, 0x5d, 0xee, 0x8f, 0xc2, 0xce, 0x62, 0x94, 0x57, 0x13, 0xc6, 0xc6, 0xe2, 0x94,
		0x57, 0x53, 0x85, 0x44, 0x47, 0xa2, 0x23, 0xd1, 0x91, 0xe8, 0x48, 0x74, 0xb6, 0x9e, 0x8a, 0xed,
		0x4a, 0x56, 0x1a, 0xc8, 0x60, 0xb3, 0x3e, 0xa5, 0x5b, 0x12, 0xe7, 0xb8, 0x91, 0xc7, 0x89, 0xe0,
		0x8f, 0xb1, 0xa1, 0xec, 0x70, 0x08, 0x75, 0xb0, 0x0d, 0xdc, 0x41, 0x36, 0x88, 0x07, 0xd7, 0x60,
		0x1f, 0x54, 0x83, 0xba, 0xb5, 0x3a, 0xfc, 0x41, 0x34, 0xf0, 0xfb, 0xa4, 0xc3, 0x1f, 0x34, 0xc3,
		0xbd, 0x6b, 0x21, 0x2d, 0x16, 0x60, 0xab, 0x05, 0xd1, 0x72, 0x99, 0x66, 0xbd, 0xfc, 0xcb, 0x7f,
		0x03, 0xa4, 0x48, 0xa4, 0x49, 0xd2, 0xab, 0x91, 0x51, 0x33, 0xc4, 0x0c, 0x6e, 0x10, 0x89, 0x92,
		0x94, 0x7e, 0x33, 0xba, 0xba, 0xea, 0x69, 0x65, 0xee, 0x50, 0xe9, 0xf4, 0x65, 0x80, 0x44, 0x54,
		0x22, 0x2a, 0x11, 0x95, 0x88, 0x4a, 0x44, 0x25, 0xa2, 0x12, 0x51, 0x89, 0xa8, 0xf3, 0x22, 0xea,
		0x98, 0x2b, 0x94, 0x4c, 0xd2, 0xeb, 0x3b, 0x52, 0x2a, 0x26, 0xa5, 0xca, 0x5b, 0x13, 0xc0, 0x93,
		0xea, 0xb4, 0x20, 0x49, 0xab, 0xa4, 0x55, 0xd2, 0x2a, 0x69, 0x95, 0xb4, 0x4a, 0x5a, 0x25, 0xad,
		0x92, 0x56, 0xe7, 0xa5, 0xd5, 0xa7, 0x6c, 0xd1, 0x27, 0xd6, 0x67, 0xac, 0x41, 0x6a, 0xc5, 0xa4,
		0x56, 0xa5, 0xaf, 0x45, 0x47, 0xb5, 0x82, 0x58, 0x8a, 0x04, 0xe8, 0xe8, 0xad, 0x34, 0x43, 0x5f,
		0xc4, 0x47, 0x56, 0x25, 0xab, 0x92, 0x55, 0xc9, 0xaa, 0x64, 0x55, 0xb2, 0xea, 0x8a, 0xb1, 0xaa,
		0x6a, 0x49, 0x6d, 0x94, 0xb9, 0x03, 0xe5, 0x55, 0xa4, 0x83, 0x60, 0xf7, 0x46, 0xb7, 0x6a, 0x5b,
		0x24, 0x80, 0x5d, 0xea, 0xf8, 0x81, 0xee, 0x1d, 0xfc, 0x55, 0xdb, 0xdf, 0xdb, 0xa9, 0x1f, 0x1f,
		0x9e, 0x7e, 0xdf, 0xad, 0x1f, 0xef, 0xd6, 0x4e, 0x0e, 0x0f, 0xd0, 0x7a, 0xd7, 0xbf, 0x44, 0xa7,
		0x37, 0xd8, 0xfd, 0xf1, 0x0c, 0xee, 0xac, 0x75, 0xbc, 0xd3, 0xdf, 0xa7, 0x3e, 0xdd, 0xda, 0x49,
		0x7d, 0xff, 0xf0, 0xf0, 0xc8, 0x87, 0x8b, 0x16, 0xec, 0x68, 0x7f, 0x87, 0x1e, 0xe9, 0x9f, 0xfb,
		0xa7, 0x27, 0xdf, 0x77, 0x8f, 0xf9, 0x5c, 0x97, 0xed, 0xb9, 0x1e, 0x1e, 0x7c, 0xd9, 0xdd, 0xe1,
		0x13, 0x5d, 0x9e, 0x27, 0x7a, 0x78, 0xbc, 0xf7, 0x75, 0xef, 0xa0, 0xf6, 0xfd, 0xf0, 0x18, 0xf0,
		0xa9, 0x42, 0x45, 0x74, 0xce, 0xf1, 0x08, 0x58, 0x14, 0x08, 0xee, 0x60, 0x47, 0x24, 0x26, 0xb8,
		0x8a, 0x5a, 0xaa, 0xad, 0x64, 0x0b, 0xcf, 0x1c, 0x7c, 0x1e, 0x1e, 0xbd, 0xc1, 0x69, 0xe1, 0xd0,
		0x1b, 0x9c, 0xa1, 0x41, 0xd1, 0x1b, 0x9c, 0xa9, 0xa5, 0xd3, 0x1b, 0x7c, 0x67, 0x80, 0xf4, 0x06,
		0x1d, 0xe2, 0x5f, 0x60, 0x6f, 0xd0, 0xa8, 0x2b, 0x69, 0x54, 0xf3, 0x32, 0xa9, 0x94, 0x00, 0xbd,
		0xc1, 0x4f, 0x40, 0x21, 0x9d, 0x6a, 0x35, 0x38, 0x0f, 0xdf, 0xd7, 0x42, 0x47, 0x89, 0x6c, 0x46,
		0xba, 0x95, 0x20, 0xdd, 0xb2, 0x63, 0xa1, 0x2f, 0x24, 0x9c, 0xdf, 0x86, 0x37, 0xdc, 0xf3, 0xbf,
		0x29, 0x0d, 0xa7, 0x88, 0x69, 0x70, 0x03, 0xdb, 0x14, 0x87, 0xb9, 0x26, 0xe2, 0xfb, 0x12, 0x8b,
		0xa6, 0x51, 0x91, 0xde, 0x51, 0x17, 0xc3, 0x74, 0x40, 0x0d, 0xf4, 0x40, 0x5e, 0x08, 0xa3, 0xae,
		0xfb, 0xf7, 0xb2, 0x2d, 0x3a, 0x89, 0xa4, 0x37, 0xf3, 0x96, 0xd4, 0x10, 0xb7, 0xf8, 0xa9, 0x51,
		0xf8, 0x54, 0x2a, 0x55, 0xaa, 0xa5, 0xd2, 0x46, 0x75, 0xb3, 0xba, 0xb1, 0x55, 0x2e, 0x17, 0x2a,
		0x48, 0x25, 0x24, 0x66, 0xcb, 0x12, 0xf3, 0x24, 0x5e, 0x34, 0xe7, 0xf4, 0xbc, 0x50, 0x7a, 0x53,
		0x98, 0x83, 0x1d, 0x26, 0x20, 0x1f, 0xe3, 0x80, 0x87, 0x97, 0x70, 0x4f, 0x9f, 0xeb, 0x95, 0x80,
		0xe8, 0x73, 0xcd, 0x1a, 0x1d, 0x7d, 0xae, 0x39, 0x03, 0xa4, 0xcf, 0xb5, 0x14, 0x24, 0x40, 0x9f,
		0xeb, 0xbf, 0xfa, 0xad, 0x9e, 0xd2, 0x66, 0xb3, 0x08, 0x68, 0x71, 0x55, 0x69, 0x21, 0xfd, 0xc7,
		0x8b, 0x16, 0xd2, 0x7c, 0xe3, 0x64, 0x5a, 0x48, 0x4b, 0x3f, 0x28, 0xa6, 0x85, 0x34, 0x5f, 0x6a,
		0x94, 0x8a, 0x5b, 0xa5, 0xad, 0x4a, 0xb5, 0xb8, 0x45, 0xe3, 0x68, 0xe9, 0x73, 0x84, 0xc6, 0xd1,
		0xd4, 0xd7, 0x39, 0xc1, 0xf5, 0x49, 0x33, 0x96, 0xb7, 0x26, 0x16, 0x41, 0x4f, 0x27, 0x46, 0x34,
		0x3a, 0x60, 0x08, 0x1b, 0xcb, 0xb6, 0x8c, 0xa5, 0x6e, 0x92, 0xcc, 0x66, 0xe0, 0xfd, 0x56, 0x2c,
		0xda, 0x26, 0x50, 0xd2, 0xb4, 0x03, 0xd5, 0x8a, 0x03, 0xd1, 0x6a, 0x05, 0x5d, 0x61, 0x7e, 0x26,
		0x5e, 0xe0, 0xd5, 0x5a, 0xd7, 0x32, 0x36, 0x2a, 0x91, 0xfd, 0x71, 0xa5, 0x17, 0xb5, 0xbd, 0x6f,
		0xbd, 0x8e, 0x51, 0xdd, 0x8e, 0xf4, 0x8e, 0xfa, 0x3f, 0xf1, 0x43, 0x2b, 0xed, 0x6d, 0x7f, 0x3d,
		0xf2, 0x01, 0xc5, 0x15, 0xd4, 0xe7, 0x98, 0xe6, 0x77, 0x3c, 0xb6, 0x5a, 0x50, 0xe5, 0x42, 0xb7,
		0x3e, 0xa6, 0x5a, 0x20, 0x0b, 0x68, 0xd6, 0x54, 0x68, 0x2a, 0xb4, 0x53, 0xf7, 0x03, 0xa2, 0xb4,
		0x83, 0x65, 0xc9, 0x63, 0x1d, 0xf2, 0xf8, 0xd8, 0xfd, 0xb3, 0xb0, 0xf3, 0xaf, 0x01, 0xb1, 0xb0,
		0xb3, 0x24, 0xc0, 0xc3, 0xc2, 0xce, 0x42, 0xa9, 0x86, 0x85, 0x1d, 0xf4, 0xf1, 0x31, 0xf0, 0xe6,
		0x06, 0xdd, 0xeb, 0x52, 0x00, 0x97, 0x83, 0xe9, 0xe6, 0x06, 0x9f, 0xb0, 0x36, 0xe3, 0x32, 0x32,
		0xd6, 0x70, 0x36, 0x82, 0xbf, 0x76, 0xb6, 0x11, 0x6c, 0x9d, 0xdf, 0x9f, 0x15, 0x82, 0xad, 0xf3,
		0xe1, 0x65, 0x61, 0xf0, 0xe5, 0x77, 0xf1, 0xe1, 0xbe, 0x78, 0xb6, 0x11, 0x94, 0x46, 0xef, 0x16,
		0xcb, 0x67, 0x1b, 0x41, 0xf9, 0x7c, 0x7d, 0xed, 0xc7, 0x8f, 0x8f, 0xb3, 0xfe, 0xce, 0xfa, 0xef,
		0xcd, 0x87, 0x30, 0xfd, 0xa5, 0xe2, 0xe8, 0xbb, 0x9b, 0x67, 0x1b, 0x41, 0xf1, 0x7c, 0x1d, 0xa7,
		0xdb, 0x39, 0x47, 0x6a, 0x2f, 0x87, 0x27, 0x7b, 0x7f, 0xc3, 0x36, 0x9a, 0x7f, 0xd6, 0xac, 0x37,
		0x9b, 0xf5, 0xff, 0xf9, 0x1c, 0x2d, 0x72, 0xb4, 0x38, 0xd1, 0x34, 0x47, 0x1b, 0xcf, 0x45, 0x3d,
		0x23, 0xf1, 0x86, 0x8c, 0x4f, 0x83, 0xe3, 0xb8, 0x91, 0xe3, 0x46, 0x8e, 0x1b, 0x39, 0x6e, 0xe4,
		0xb8, 0x91, 0xe3, 0xc6, 0x15, 0x1b, 0x37, 0x36, 0xa2, 0xa8, 0x23, 0x85, 0x46, 0x1c, 0x33, 0x16,
		0x88, 0x72, 0x00, 0x11, 0xd8, 0x3e, 0xdd, 0xb9, 0xa6, 0x75, 0x64, 0x84, 0x51, 0x20, 0x7b, 0x2b,
		0xfb, 0x49, 0xf3, 0xa7, 0xbc, 0x12, 0xdd, 0xd1, 0x86, 0xde, 0x61, 0xd4, 0x95, 0xba, 0x39, 0x00,
		0xa5, 0x40, 0x4b, 0x73, 0x13, 0xc5, 0x97, 0x81, 0xd2, 0x89, 0x11, 0xba, 0x29, 0xc3, 0x97, 0x6f,
		0x24, 0x13, 0xef, 0x84, 0xdd, 0x38, 0x32, 0x51, 0x33, 0xea, 0x24, 0xe9, 0x55, 0xd8, 0xb8, 0xe8,
		0x86, 0xb1, 0x6a, 0x84, 0xa2, 0xad, 0x82, 0x44, 0xb4, 0x55, 0x92, 0x5e, 0x85, 0x03, 0x93, 0xa7,
		0xa7, 0x55, 0x53, 0x24, 0x26, 0xd4, 0x52, 0x5d, 0xfc, 0x6c, 0x44, 0x71, 0x92, 0x5e, 0x85, 0xa2,
		0xf5, 0x6b, 0xa0, 0x04, 0x51, 0xcf, 0x04, 0xdd, 0x28, 0x31, 0xe1, 0x00, 0x6f, 0x93, 0xe1, 0x97,
		0xe1, 0x06, 0xe2, 0x76, 0x15, 0xc2, 0x5e, 0x53, 0xb6, 0xd8, 0x8c, 0xfd, 0x9e, 0xbe, 0xd4, 0xd1,
		0x8d, 0x0e, 0x84, 0x31, 0xb1, 0x6a, 0xf4, 0x9f, 0x88, 0xf5, 0xa6, 0xfc, 0x38, 0x21, 0x7c, 0x32,
		0x36, 0xcb, 0x09, 0x3f, 0xee, 0xfe, 0x2d, 0x87, 0x81, 0x32, 0xfa, 0x41, 0x1a, 0xf5, 0x60, 0x8e,
		0x76, 0xd0, 0x46, 0x39, 0xb0, 0xa3, 0x1b, 0xd8, 0x51, 0x0d, 0xec, 0x68, 0x66, 0xb5, 0xd1, 0x6b,
		0x47, 0xc5, 0x18, 0xdd, 0xce, 0x84, 0x48, 0xe1, 0xd9, 0x89, 0x93, 0x21, 0x62, 0x99, 0x8a, 0x05,
		0x9a, 0x8a, 0xf0, 0xf2, 0x8a, 0x2d, 0xb3, 0xa8, 0x72, 0x0b, 0x2f, 0xbb, 0xf0, 0xf2, 0x0b, 0x2f,
		0xc3, 0x38, 0x5e, 0x8c, 0x07, 0x64, 0x2a, 0xa2, 0xc8, 0x73, 0x1a, 0x50, 0x5f, 0xfb, 0x02, 0x83,
		0x66, 0x75, 0x3e, 0xeb, 0x51, 0x1f, 0x43, 0x04, 0x4b, 0x3d, 0xac, 0xda, 0x1f, 0xac, 0x5c, 0x23,
		0xcb, 0xb6, 0x1b, 0xf2, 0x8d, 0x2e, 0xe3, 0xce, 0xc8, 0xb9, 0x33, 0xb2, 0xee, 0x8c, 0xbc, 0x63,
		0xc9, 0x3c, 0x98, 0xdc, 0xa7, 0x4f, 0xf1, 0x3b, 0xa2, 0xc0, 0x7a, 0xd8, 0x87, 0xc2, 0x4e, 0x8c,
		0x86, 0xab, 0x80, 0xb1, 0x3d, 0x39, 0x24, 0x76, 0x78, 0xd6, 0xeb, 0x23, 0xac, 0x70, 0x69, 0x18,
		0x7a, 0x6a, 0xfa, 0xc3, 0xea, 0x1a, 0x2c, 0xf8, 0x0e, 0xc3, 0xc3, 0x84, 0xde, 0x02, 0xa1, 0x97,
		0xd0, 0x4b, 0xe8, 0x25, 0xf4, 0x12, 0x7a, 0xa9, 0xac, 0xd3, 0x9f, 0x22, 0x9a, 0xd7, 0x95, 0x06,
		0x36, 0x60, 0xb4, 0x8e, 0x04, 0xde, 0x07, 0xed, 0x99, 0xf5, 0xd5, 0x8f, 0x14, 0x34, 0x51, 0x31,
		0x1d, 0x30, 0x78, 0x28, 0x70, 0x01, 0x0e, 0xdc, 0x82, 0x04, 0x57, 0x60, 0xc1, 0x39, 0x68, 0x70,
		0x0e, 0x1e, 0x9c, 0x83, 0x08, 0x4c, 0x98, 0x00, 0x85, 0x8a, 0xf4, 0xe9, 0xc2, 0x3a, 0x6a, 0x13,
		0xfd, 0x66, 0x4f, 0x69, 0x53, 0xa8, 0x20, 0xf7, 0x99, 0x23, 0x15, 0xaf, 0x00, 0x87, 0x88, 0xb9,
		0xbd, 0xef, 0xcb, 0x17, 0xb6, 0xe6, 0x78, 0xe8, 0xdb, 0xff, 0x4e, 0x04, 0x0b, 0xbe, 0x1d, 0xf0,
		0x44, 0xbc, 0xae, 0x6c, 0x7d, 0x3a, 0xd9, 0x57, 0xa1, 0x6f, 0x85, 0xea, 0x88, 0x2c, 0x3d, 0x4f,
		0x35, 0x71, 0xeb, 0x5e, 0xaa, 0x55, 0xca, 0xe5, 0xcd, 0x32, 0xd3, 0x8d, 0xe9, 0xe6, 0x00, 0x9b,
		0xe2, 0x47, 0x77, 0x4e, 0xa6, 0x9f, 0x21, 0x2d, 0x80, 0x77, 0x32, 0x9e, 0x88, 0x15, 0x77, 0x67,
		0x63, 0x07, 0xa1, 0x74, 0x3c, 0x54, 0x3a, 0xfe, 0xf2, 0xa7, 0x57, 0x2a, 0x56, 0x0b, 0x5e, 0xe0,
		0xd5, 0xbc, 0xed, 0x28, 0x6e, 0xc9, 0xd8, 0xfb, 0x2a, 0x8c, 0xbc, 0x11, 0x77, 0xde, 0xd1, 0x68,
		0xad, 0xa5, 0x57, 0xf2, 0xd6, 0xb6, 0xbf, 0x1e, 0x05, 0xa5, 0x75, 0xdf, 0x01, 0x06, 0x70, 0xc4,
		0x8e, 0x7a, 0x1c, 0x0a, 0xba, 0xb3, 0x0b, 0xf2, 0x44, 0xec, 0xae, 0x39, 0x54, 0x69, 0xe0, 0x4f,
		0x9d, 0xaa, 0x19, 0x53, 0x80, 0xe4, 0x40, 0x72, 0x58, 0xe9, 0xfb, 0x85, 0x78, 0x8e, 0x0c, 0xee,
		0x9c, 0xfa, 0x09, 0xc5, 0x45, 0x9d, 0x5b, 0xff, 0x28, 0x48, 0xac, 0x30, 0xbe, 0x2b, 0x40, 0x56,
		0x18, 0x57, 0x14, 0xe9, 0x58, 0x61, 0xcc, 0x95, 0xdb, 0x58, 0x61, 0x5c, 0x36, 0x37, 0xc2, 0xad,
		0x0a, 0xe3, 0x27, 0x07, 0x0a, 0x8c, 0x65, 0x16, 0x18, 0x97, 0xdf, 0xcb, 0x61, 0x81, 0x31, 0xc3,
		0x78, 0x59, 0xf1, 0x58, 0x71, 0x55, 0x7a, 0x9e, 0x6a, 0x2e, 0x16, 0x18, 0x8b, 0x65, 0x96, 0x17,
		0x99, 0x6c, 0x2e, 0x80, 0x29, 0x7e, 0x74, 0x2c, 0x2f, 0xce, 0x92, 0x16, 0x2c, 0x2f, 0xae, 0x28,
		0x92, 0xb2, 0xbc, 0x08, 0x33, 0x10, 0x64, 0x79, 0x31, 0xff, 0xc0, 0x59, 0x5e, 0x64, 0x74, 0x8e,
		0x90, 0x03, 0xcb, 0x8b, 0x6f, 0xc8, 0xe7, 0x41, 0xcd, 0xee, 0x7a, 0x34, 0x9c, 0x72, 0xa1, 0xbe,
		0x38, 0x8c, 0x95, 0x05, 0xc6, 0x79, 0xc2, 0x63, 0x81, 0x71, 0x81, 0xad, 0x91, 0x05, 0xc6, 0x8c,
		0x60, 0x8e, 0x05, 0xc6, 0xcc, 0xc9, 0x8d, 0x05, 0xc6, 0x65, 0xf3, 0x23, 0xdc, 0x29, 0x30, 0x36,
		0x94, 0x16, 0xf1, 0x9d, 0x03, 0x15, 0xc6, 0x2d, 0xe0, 0x10, 0xf7, 0xa5, 0xbe, 0x18, 0x6c, 0x16,
		0x46, 0x3f, 0xe7, 0x9d, 0x77, 0xd2, 0xc9, 0x12, 0x63, 0x81, 0x55, 0x8f, 0x8c, 0x3b, 0x2b, 0x96,
		0x18, 0x33, 0x48, 0x35, 0xae, 0x61, 0x64, 0xba, 0x2d, 0x49, 0xba, 0xd1, 0x2a, 0x9c, 0xeb, 0xc5,
		0x22, 0xe3, 0x2c, 0x69, 0xc1, 0x22, 0xe3, 0x8a, 0x42, 0x29, 0x8b, 0x8c, 0x30, 0x63, 0x41, 0x16,
		0x19, 0xf3, 0x0f, 0x9c, 0x45, 0x46, 0x46, 0xe7, 0x08, 0x39, 0xb0, 0xc8, 0xf8, 0x36, 0x8e, 0x91,
		0xba, 0x25, 0x5b, 0xf8, 0x25, 0xc6, 0x34, 0x52, 0x16, 0x18, 0xe7, 0x09, 0x8f, 0x05, 0xc6, 0x05,
		0xb6, 0x45, 0x16, 0x18, 0x33, 0x02, 0x39, 0x16, 0x18, 0x33, 0xa7, 0x36, 0x16, 0x18, 0x97, 0xcd,
		0x8b, 0x70, 0xa8, 0xc0, 0x18, 0x45, 0x1d, 0x29, 0xb4, 0x03, 0x15, 0xc6, 0x42, 0x81, 0x4d, 0x70,
		0x36, 0x8c, 0xa4, 0x1d, 0xb6, 0xf0, 0x17, 0xed, 0x30, 0xd2, 0xd3, 0x3c, 0x14, 0x45, 0x3b, 0xcc,
		0x06, 0x58, 0xd1, 0x0e, 0x63, 0x74, 0x1e, 0xed, 0x30, 0x97, 0x59, 0xc6, 0x8f, 0xba, 0x46, 0x45,
		0x5a, 0x74, 0xf0, 0xed, 0xb0, 0x34, 0x52, 0xda, 0x61, 0xf3, 0x84, 0x47, 0x3b, 0x6c, 0x91, 0x6d,
		0x91, 0x76, 0x58, 0x36, 0x20, 0x47, 0x3b, 0x2c, 0x73, 0x6a, 0xa3, 0x1d, 0xb6, 0x6c, 0x5e, 0x04,
		0xed, 0xb0, 0xc5, 0xcb, 0x38, 0xed, 0xb0, 0x99, 0xee, 0x1a, 0xed, 0xb0, 0x2c, 0x5e, 0xb4, 0xc3,
		0x48, 0x4f, 0xf3, 0x50, 0x14, 0xed, 0x30, 0x1b, 0x60, 0x45, 0x3b, 0x8c, 0xd1, 0x79, 0xb4, 0xc3,
		0x5c, 0x66, 0x19, 0xbf, 0x2b, 0x62, 0xa3, 0x5c, 0x70, 0xc3, 0xc6, 0x81, 0xd2, 0x0c, 0x9b, 0x27,
		0x3c, 0x9a, 0x61, 0x0b, 0x6c, 0x8a, 0x34, 0xc3, 0x32, 0xc2, 0x38, 0x9a, 0x61, 0x99, 0x33, 0x1b,
		0xcd, 0xb0, 0x65, 0x73, 0x22, 0x68, 0x86, 0x2d, 0x5e, 0xc6, 0x69, 0x86, 0xcd, 0x74, 0xd7, 0x68,
		0x86, 0x65, 0xf1, 0xa2, 0x19, 0x46, 0x7a, 0x9a, 0x87, 0xa2, 0x68, 0x86, 0xd9, 0x00, 0x2b, 0x9a,
		0x61, 0x8c, 0xce, 0xa3, 0x19, 0xe6, 0x32, 0xcb, 0xf8, 0x26, 0x16, 0x3a, 0x51, 0xa3, 0xbd, 0x50,
		0xc0, 0xfd, 0xb0, 0x27, 0xb1, 0xd2, 0x12, 0x9b, 0x27, 0x3c, 0x5a, 0x62, 0x0b, 0x6c, 0x8d, 0xb4,
		0xc4, 0x32, 0x82, 0x39, 0x5a, 0x62, 0x99, 0x93, 0x1b, 0x2d, 0xb1, 0x65, 0xf3, 0x23, 0x68, 0x89,
		0x2d, 0x5e, 0xc6, 0x69, 0x89, 0xcd, 0x74, 0xd7, 0x68, 0x89, 0x65, 0xf1, 0xa2, 0x25, 0x46, 0x7a,
		0x9a, 0x87, 0xa2, 0x68, 0x89, 0xd9, 0x00, 0x2b, 0x5a, 0x62, 0x8c, 0xce, 0xa3, 0x25, 0xe6, 0x68,
		0x44, 0x60, 0x64, 0xe5, 0xd7, 0xb4, 0x8e, 0x8c, 0x30, 0x2a, 0xc2, 0xdc, 0x32, 0xde, 0x4f, 0x9a,
		0x3f, 0xe5, 0x95, 0xe8, 0x8a, 0xc1, 0xc9, 0x00, 0x7e, 0x18, 0x75, 0xa5, 0x6e, 0x0e, 0x2c, 0xa6,
		0x40, 0x4b, 0x73, 0x13, 0xc5, 0x97, 0x81, 0xea, 0xd3, 0xa0, 0x6e, 0xca, 0xf0, 0xe5, 0x1b, 0xc9,
		0xc4, 0x3b, 0x61, 0x77, 0xd4, 0x3f, 0x26, 0xe9, 0x55, 0xd8, 0xb8, 0xe8, 0x86, 0xb1, 0x6a, 0x84,
		0xa2, 0xad, 0x82, 0x44, 0xb4, 0x55, 0x92, 0x5e, 0x85, 0xaa, 0x7b, 0x5d, 0x0a, 0x7a, 0x5a, 0x35,
		0x45, 0x62, 0x42, 0x2d, 0xd5, 0xc5, 0xcf, 0x46, 0x14, 0x27, 0xe9, 0x55, 0x28, 0x5a, 0xbf, 0x06,
		0x63, 0xdc, 0xa8, 0x67, 0x82, 0x6e, 0x94, 0x98, 0x30, 0x8e, 0x7a, 0x46, 0x26, 0xc3, 0x2f, 0x61,
		0x4f, 0x5f, 0xea, 0xe8, 0x46, 0x07, 0xc2, 0x98, 0x58, 0x35, 0x06, 0xdf, 0x98, 0x78, 0x2b, 0x4c,
		0x8c, 0x30, 0x12, 0xab, 0x8f, 0xc6, 0xc9, 0x17, 0x8c, 0x48, 0x40, 0x32, 0xb6, 0x0f, 0x5e, 0xe9,
		0x89, 0x61, 0xa6, 0x3f, 0x14, 0x07, 0x89, 0x6b, 0x5f, 0x25, 0xa6, 0x66, 0x4c, 0x0c, 0xd5, 0x7f,
		0xf8, 0xdf, 0x94, 0xde, 0xed, 0xc8, 0x3e, 0x33, 0x81, 0x6d, 0x1a, 0xef, 0x7f, 0x13, 0xb7, 0x4f,
		0x22, 0x2b, 0x7c, 0x2a, 0x95, 0x2a, 0xd5, 0x52, 0x69, 0xa3, 0xba, 0x59, 0xdd, 0xd8, 0x2a, 0x97,
		0x0b, 0x95, 0x02, 0xd0, 0xd6, 0xfc, 0xfe, 0x61, 0x1f, 0x2f, 0x65, 0x6b, 0xbb, 0xdf, 0xf4, 0x74,
		0xaf, 0xd3, 0x41, 0x0c, 0xed, 0x34, 0x91, 0x31, 0xd4, 0x2e, 0xfb, 0x28, 0x3d, 0x06, 0xa8, 0xb6,
		0x2f, 0xb9, 0xa6, 0x03, 0x0d, 0x86, 0xfd, 0xc4, 0xc4, 0xbd, 0xa6, 0xd1, 0x23, 0xf3, 0xe4, 0x60,
		0x78, 0xeb, 0xf6, 0x46, 0x77, 0xae, 0x3e, 0x1e, 0x2d, 0xd6, 0xb7, 0x2f, 0xba, 0xf5, 0x63, 0xd5,
		0xa8, 0xd7, 0xda, 0xea, 0x44, 0xb4, 0x55, 0x7d, 0xaf, 0x7b, 0x5d, 0x3a, 0x1d, 0xde, 0xa3, 0xfa,
		0xc1, 0xe8, 0xce, 0xd4, 0x6b, 0xad, 0x5f, 0xc7, 0xaa, 0x71, 0xd8, 0x33, 0x47, 0x51, 0x62, 0xea,
		0xc7, 0xfd, 0xfb, 0x51, 0x3f, 0x1d, 0xfe, 0xf1, 0xb5, 0xf4, 0x6f, 0xff, 0x40, 0x6e, 0xb0, 0x1f,
		0x81, 0xe5, 0xfe, 0x07, 0xad, 0xdf, 0x59, 0xaa, 0xfe, 0xc6, 0x6e, 0x86, 0xd9, 0x6b, 0xd7, 0x76,
		0x3e, 0xd9, 0x52, 0x26, 0x8d, 0x59, 0x7f, 0x58, 0xa6, 0xf6, 0xfa, 0x2d, 0x37, 0x50, 0xb6, 0x36,
		0xf0, 0xc6, 0x00, 0x7c, 0x1c, 0xa0, 0x87, 0x06, 0x78, 0x20, 0x60, 0x07, 0x02, 0x74, 0x5b, 0x69,
		0x0c, 0x22, 0x84, 0xee, 0x0a, 0xa0, 0x45, 0x96, 0xce, 0x9a, 0x9d, 0xed, 0x08, 0x79, 0xfe, 0x32,
		0x9a, 0xef, 0x27, 0xe6, 0x9c, 0xe9, 0xb6, 0x33, 0xdc, 0xc5, 0xcc, 0xce, 0xb7, 0xe1, 0xe7, 0xd7,
		0xfc, 0x72, 0x6c, 0x7a, 0xfe, 0xb0, 0x6c, 0x90, 0x77, 0x8b, 0x4b, 0x67, 0x61, 0x0c, 0x3f, 0x3e,
		0xe7, 0x54, 0x1b, 0xcf, 0x98, 0xca, 0xf9, 0x63, 0xd3, 0x09, 0xcd, 0xc5, 0x9c, 0x3f, 0xd8, 0xe2,
		0x44, 0x65, 0x8c, 0x09, 0xc8, 0xb6, 0xa7, 0xc6, 0xc0, 0x4c, 0x18, 0x86, 0x99, 0xb7, 0x02, 0x33,
		0xc1, 0x97, 0x50, 0x41, 0xa8, 0x18, 0x41, 0x85, 0x85, 0x0a, 0x7a, 0x8e, 0x4c, 0xf1, 0x61, 0x89,
		0xda, 0xb7, 0xad, 0x76, 0xed, 0x54, 0x7b, 0xf6, 0x73, 0xa5, 0xc8, 0x8c, 0x46, 0xb8, 0xf9, 0xa4,
		0x63, 0xf6, 0xc9, 0x91, 0x43, 0x62, 0xf8, 0xcf, 0x1a, 0x40, 0x9c, 0x1f, 0xed, 0xa4, 0x8c, 0xf7,
		0x32, 0x80, 0x9c, 0x3a, 0x83, 0x7c, 0x71, 0x3e, 0xf7, 0x75, 0x89, 0x36, 0xf0, 0xdd, 0x2e, 0xb6,
		0xdb, 0xc2, 0x75, 0xeb, 0x98, 0x6e, 0x1d, 0xcf, 0xad, 0x63, 0xf9, 0x72, 0x61, 0xca, 0x8e, 0xca,
		0xb7, 0xd4, 0xe5, 0x8f, 0x7c, 0x31, 0x6b, 0x76, 0xce, 0xe8, 0xf3, 0xe9, 0xe7, 0xd0, 0xcf, 0xa1,
		0x9f, 0x43, 0x3f, 0x87, 0x7e, 0x8e, 0xe3, 0x82, 0xf2, 0x5c, 0x58, 0xec, 0xe5, 0xdb, 0x33, 0x7d,
		0xb1, 0x95, 0x6b, 0x76, 0x64, 0xc6, 0xda, 0xb8, 0x03, 0x49, 0x76, 0xb0, 0xe4, 0x07, 0x45, 0x86,
		0xe0, 0xe4, 0x08, 0x4e, 0x96, 0xe0, 0xe4, 0xc9, 0x8e, 0x4c, 0x59, 0x92, 0x2b, 0xeb, 0xb2, 0x95,
		0x06, 0x30, 0x9e, 0xf7, 0x68, 0x3d, 0x53, 0x1f, 0x77, 0xcb, 0xb7, 0x39, 0x11, 0xf3, 0xa5, 0xa4,
		0x59, 0x5e, 0xd4, 0x04, 0xb3, 0xd5, 0x17, 0xd2, 0x96, 0x5e, 0x98, 0x5b, 0x77, 0xa1, 0x6d, 0x32,
		0x01, 0xbb, 0x15, 0x17, 0xec, 0x0e, 0x11, 0xb0, 0x5b, 0x6b, 0xad, 0xf6, 0x4a, 0x17, 0x98, 0x2d,
		0xb1, 0xd2, 0x7e, 0xa7, 0x23, 0x45, 0x3b, 0x96, 0x6d, 0x84, 0x4e, 0x67, 0x3c, 0xf2, 0xaa, 0x02,
		0xc4, 0x72, 0x34, 0x2a, 0xfe, 0x7e, 0xfc, 0x38, 0x9c, 0x30, 0x10, 0x8e, 0xa5, 0x7c, 0x55, 0x97,
		0xd3, 0x58, 0x1c, 0x7f, 0x75, 0x31, 0xe4, 0xfa, 0x91, 0xea, 0x20, 0x06, 0x5f, 0x84, 0x3a, 0x42,
		0x1d, 0xa1, 0x8e, 0x50, 0x47, 0xa8, 0x23, 0xd4, 0x11, 0xea, 0xe6, 0x84, 0xba, 0x61, 0xb7, 0x43,
		0xa6, 0xcb, 0xfd, 0x51, 0xd8, 0x59, 0x90, 0xf2, 0x6a, 0xc2, 0xd8, 0x58, 0xa0, 0xf2, 0x6a, 0xaa,
		0x90, 0xe8, 0x48, 0x74, 0x24, 0x3a, 0x12, 0x1d, 0x89, 0xce, 0xd6, 0x53, 0xb1, 0x5d, 0xc9, 0x4a,
		0x03, 0x19, 0x6c, 0xde, 0xa7, 0x74, 0x4b, 0xe2, 0x1c, 0x40, 0xf2, 0x38, 0x0f, 0xfc, 0x31, 0x36,
		0x94, 0x1d, 0x0f, 0xa1, 0x8e, 0xba, 0x81, 0x3b, 0xda, 0x06, 0xf1, 0x28, 0x1b, 0xec, 0xa3, 0x6b,
		0x50, 0x37, 0x5b, 0x87, 0x3f, 0x9a, 0x06, 0x7e, 0xe7, 0x74, 0xf8, 0xa3, 0x67, 0xb8, 0x97, 0x2d,
		0xa4, 0xc5, 0x02, 0x6c, 0xb5, 0x20, 0x5a, 0x2e, 0xd3, 0xac, 0x97, 0x7f, 0xf9, 0x6f, 0x80, 0x14,
		0x89, 0x34, 0x49, 0x7a, 0x35, 0x32, 0x6a, 0x86, 0x98, 0xc1, 0xcd, 0x22, 0x51, 0x92, 0xd2, 0x6f,
		0x46, 0x57, 0x57, 0x3d, 0xad, 0xcc, 0x1d, 0x2a, 0x9d, 0xbe, 0x0c, 0x90, 0x88, 0x4a, 0x44, 0x25,
		0xa2, 0x12, 0x51, 0x89, 0xa8, 0x44, 0x54, 0x22, 0x2a, 0x11, 0x75, 0x5e, 0x44, 0x1d, 0x73, 0x85,
		0x92, 0x49, 0x7a, 0x7d, 0x47, 0x4a, 0xc5, 0xa4, 0x54, 0x79, 0x6b, 0x02, 0x78, 0x52, 0x9d, 0x16,
		0x24, 0x69, 0x95, 0xb4, 0x4a, 0x5a, 0x25, 0xad, 0x92, 0x56, 0x49, 0xab, 0xa4, 0x55, 0xd2, 0xea,
		0xbc, 0xb4, 0xfa, 0x94, 0x2d, 0xfa, 0xc4, 0xfa, 0x8c, 0x35, 0x48, 0xad, 0x98, 0xd4, 0xaa, 0xf4,
		0xb5, 0xe8, 0xa8, 0x56, 0x10, 0x4b, 0x91, 0x00, 0x1d, 0xc5, 0x95, 0x66, 0xe8, 0x8b, 0xf8, 0xc8,
		0xaa, 0x64, 0x55, 0xb2, 0x2a, 0x59, 0x95, 0xac, 0x4a, 0x56, 0x5d, 0x31, 0x56, 0x55, 0x2d, 0xa9,
		0x8d, 0x32, 0x77, 0xa0, 0xbc, 0x8a, 0x74, 0x30, 0xec, 0xde, 0xe8, 0x56, 0x6d, 0x8b, 0x04, 0xb0,
		0x4b, 0x1d, 0x3f, 0xd0, 0xbd, 0x83, 0xbf, 0x6a, 0xfb, 0x7b, 0x3b, 0xf5, 0xe3, 0xc3, 0xd3, 0xef,
		0xbb, 0xf5, 0xe3, 0xdd, 0xda, 0xc9, 0xe1, 0x01, 0x5a, 0xef, 0xfa, 0x97, 0xe8, 0xf4, 0x06, 0xbb,
		0x3f, 0x9e, 0xc1, 0x9d, 0xbe, 0x8e, 0x77, 0x1e, 0xfc, 0xd4, 0xa7, 0x5b, 0x3b, 0xa9, 0xef, 0x1f,
		0x1e, 0x1e, 0xf9, 0x70, 0xd1, 0x82, 0x1d, 0xf6, 0xef, 0xd0, 0x23, 0xfd, 0x73, 0xff, 0xf4, 0xe4,
		0xfb, 0xee, 0x31, 0x9f, 0xeb, 0xb2, 0x3d, 0xd7, 0xc3, 0x83, 0x2f, 0xbb, 0x3b, 0x7c, 0xa2, 0xcb,
		0xf3, 0x44, 0x0f, 0x8f, 0xf7, 0xbe, 0xee, 0x1d, 0xd4, 0xbe, 0x1f, 0x1e, 0x03, 0x3e, 0x55, 0xa8,
		0x88, 0xce, 0x39, 0x1e, 0x01, 0x8b, 0x02, 0xc1, 0x1d, 0xec, 0x88, 0xc4, 0x04, 0x57, 0x51, 0x4b,
		0xb5, 0x95, 0x6c, 0xe1, 0x99, 0x83, 0xcf, 0xc3, 0xa3, 0x37, 0x38, 0x2d, 0x1c, 0x7a, 0x83, 0x33,
		0x34, 0x28, 0x7a, 0x83, 0x33, 0xb5, 0x74, 0x7a, 0x83, 0xef, 0x0c, 0x90, 0xde, 0xa0, 0x43, 0xfc,
		0x0b, 0xec, 0x0d, 0x1a, 0x75, 0x25, 0x8d, 0x6a, 0x5e, 0x26, 0x95, 0x12, 0xa0, 0x37, 0xf8, 0x09,
		0x28, 0xa4, 0x53, 0xad, 0x06, 0x27, 0xe3, 0xfb, 0x5a, 0xe8, 0x28, 0x91, 0xcd, 0x48, 0xb7, 0x12,
		0xa4, 0x5b, 0x76, 0x2c, 0xf4, 0x85, 0x84, 0xf3, 0xdb, 0xf0, 0x86, 0x7b, 0xfe, 0x37, 0xa5, 0xe1,
		0x14, 0x31, 0x0d, 0x6e, 0x60, 0x9b, 0xe2, 0x30, 0xd7, 0x44, 0x7c, 0x5f, 0x62, 0xd1, 0x34, 0x2a,
		0xd2, 0x3b, 0xea, 0x62, 0x98, 0x0e, 0xa8, 0x81, 0x1e, 0xc8, 0x0b, 0x61, 0xd4, 0x75, 0xff, 0x5e,
		0xb6, 0x45, 0x27, 0x91, 0xf4, 0x66, 0xde, 0x92, 0x1a, 0xe2, 0x16, 0x3f, 0x35, 0x0a, 0x9f, 0x4a,
		0xa5, 0x4a, 0xb5, 0x54, 0xda, 0xa8, 0x6e, 0x56, 0x37, 0xb6, 0xca, 0xe5, 0x42, 0x05, 0xa9, 0x84,
		0xc4, 0x6c, 0x59, 0x62, 0x9e, 0xc4, 0x8b, 0xe6, 0x9c, 0x9e, 0x17, 0x4a, 0x6f, 0x0a, 0x73, 0xb0,
		0xc3, 0x04, 0xe4, 0x63, 0x1c, 0xf0, 0xf0, 0x12, 0xee, 0xe9, 0x73, 0xbd, 0x12, 0x10, 0x7d, 0xae,
		0x59, 0xa3, 0xa3, 0xcf, 0x35, 0x67, 0x80, 0xf4, 0xb9, 0x96, 0x82, 0x04, 0xe8, 0x73, 0xfd, 0x57,
		0xbf, 0xd5, 0x53, 0xda, 0x6c, 0x16, 0x01, 0x2d, 0xae, 0x2a, 0x2d, 0xa4, 0xff, 0x78, 0xd1, 0x42,
		0x9a, 0x6f, 0x9c, 0x4c, 0x0b, 0x69, 0xe9, 0x07, 0xc5, 0xb4, 0x90, 0xe6, 0x4b, 0x8d, 0x52, 0x71,
		0xab, 0xb4, 0x55, 0xa9, 0x16, 0xb7, 0x68, 0x1c, 0x2d, 0x7d, 0x8e, 0xd0, 0x38, 0x9a, 0xfa, 0x3a,
		0x27, 0xb8, 0x3e, 0x69, 0xc6, 0xf2, 0xd6, 0xc4, 0x22, 0xe8, 0xe9, 0xc4, 0x88, 0x46, 0x07, 0x0c,
		0x61, 0x63, 0xd9, 0x96, 0xb1, 0xd4, 0x4d, 0x92, 0xd9, 0x0c, 0xbc, 0xdf, 0x8a, 0x45, 0xdb, 0x04,
		0x4a, 0x9a, 0x76, 0xa0, 0x5a, 0x71, 0x20, 0x5a, 0xad, 0xa0, 0x2b, 0xcc, 0xcf, 0xc4, 0x0b, 0xbc,
		0x5a, 0xeb, 0x5a, 0xc6, 0x46, 0x25, 0xb2, 0x3f, 0xae, 0xf4, 0xa2, 0xb6, 0xf7, 0xad, 0xd7, 0x31,
		0xaa, 0xdb, 0x91, 0xde, 0x51, 0xff, 0x27, 0x7e, 0x68, 0xa5, 0xbd, 0xed, 0xaf, 0x47, 0x3e, 0xa0,
		0xb8, 0x82, 0xfa, 0x1c, 0xd3, 0xfc, 0x8e, 0xc7, 0x56, 0x0b, 0xaa, 0x5c, 0xe8, 0xd6, 0xc7, 0x54,
		0x0b, 0x64, 0x01, 0xcd, 0x9a, 0x0a, 0x4d, 0x85, 0x76, 0xea, 0x7e, 0x40, 0x94, 0x76, 0xb0, 0x2c,
		0x79, 0xac, 0x43, 0x1e, 0x1f, 0xbb, 0x7f, 0x16, 0x76, 0xfe, 0x35, 0x20, 0x16, 0x76, 0x96, 0x04,
		0x78, 0x58, 0xd8, 0x59, 0x28, 0xd5, 0xb0, 0xb0, 0x83, 0x3e, 0x3e, 0x06, 0xde, 0xdc, 0xa0, 0x7b,
		0x5d, 0x0a, 0xe0, 0x72, 0x30, 0xdd, 0xdc, 0xe0, 0x13, 0xd6, 0x66, 0x5c, 0x46, 0xc6, 0x1a, 0xce,
		0x46, 0xf0, 0xd7, 0xce, 0x36, 0x82, 0xad, 0xf3, 0xfb, 0xb3, 0x42, 0xb0, 0x75, 0x3e, 0xbc, 0x2c,
		0x0c, 0xbe, 0xfc, 0x2e, 0x3e, 0xdc, 0x17, 0xcf, 0x36, 0x82, 0xd2, 0xe8, 0xdd, 0x62, 0xf9, 0x6c,
		0x23, 0x28, 0x9f, 0xaf, 0xaf, 0xfd, 0xf8, 0xf1, 0x71, 0xd6, 0xdf, 0x59, 0xff, 0xbd, 0xf9, 0x10,
		0xa6, 0xbf, 0x54, 0x1c, 0x7d, 0x77, 0xf3, 0x6c, 0x23, 0x28, 0x9e, 0xaf, 0xe3, 0x74, 0x3b, 0xe7,
		0x48, 0xed, 0xe5, 0xf0, 0x64, 0xef, 0x6f, 0xd8, 0x46, 0xf3, 0xcf, 0x9a, 0xf5, 0x66, 0xb3, 0xfe,
		0x3f, 0x9f, 0xa3, 0x45, 0x8e, 0x16, 0x27, 0x9a, 0xe6, 0x68, 0xe3, 0xb9, 0xa8, 0x67, 0x24, 0xde,
		0x90, 0xf1, 0x69, 0x70, 0x1c, 0x37, 0x72, 0xdc, 0xc8, 0x71, 0x23, 0xc7, 0x8d, 0x1c, 0x37, 0x72,
		0xdc, 0xb8, 0x62, 0xe3, 0xc6, 0x46, 0x14, 0x75, 0xa4, 0xd0, 0x88, 0x63, 0xc6, 0x02, 0x51, 0x0e,
		0x20, 0x02, 0xdb, 0xa7, 0x3b, 0xd7, 0xb4, 0x8e, 0x8c, 0x30, 0x0a, 0x64, 0x6f, 0x65, 0x3f, 0x69,
		0xfe, 0x94, 0x57, 0xa2, 0x3b, 0xda, 0xd0, 0x3b, 0x8c, 0xba, 0x52, 0x37, 0x07, 0xa0, 0x14, 0x68,
		0x69, 0x6e, 0xa2, 0xf8, 0x32, 0x50, 0x3a, 0x31, 0x42, 0x37, 0x65, 0xf8, 0xf2, 0x8d, 0x64, 0xe2,
		0x9d, 0xb0, 0x1b, 0x47, 0x26, 0x6a, 0x46, 0x9d, 0x24, 0xbd, 0x0a, 0x1b, 0x17, 0xdd, 0x30, 0x56,
		0x8d, 0x50, 0xb4, 0x55, 0x90, 0x88, 0xb6, 0x4a, 0xd2, 0xab, 0x70, 0x60, 0xf2, 0xf4, 0xb4, 0x6a,
		0x8a, 0xc4, 0x84, 0x5a, 0xaa, 0x8b, 0x9f, 0x8d, 0x28, 0x4e, 0xd2, 0xab, 0x50, 0xb4, 0x7e, 0x0d,
		0x94, 0x20, 0xea, 0x99, 0xa0, 0x1b, 0xcb, 0x70, 0x40, 0xb7, 0xc9, 0xf0, 0xcb, 0x70, 0xff, 0x70,
		0xbb, 0x02, 0x61, 0xaf, 0x25, 0x5b, 0x6c, 0xc5, 0x7e, 0x4f, 0x5f, 0xea, 0xe8, 0x46, 0x07, 0xc2,
		0x98, 0x58, 0x35, 0xfa, 0x4f, 0xc4, 0x7a, 0x4b, 0x7e, 0x9c, 0x0f, 0x3e, 0x19, 0x9b, 0xe5, 0x7c,
		0x1f, 0xf7, 0xfe, 0x96, 0xc3, 0x40, 0x19, 0xfc, 0x20, 0x0d, 0x7a, 0x30, 0x07, 0x3b, 0x68, 0x83,
		0x1c, 0xd8, 0xc1, 0x0d, 0xec, 0xa0, 0x06, 0x76, 0x30, 0xb3, 0xda, 0xe4, 0xb5, 0xa3, 0x62, 0x8c,
		0x6e, 0x67, 0x42, 0xa4, 0xf0, 0xdc, 0xc4, 0xc9, 0x10, 0xb1, 0x3c, 0xc5, 0x02, 0x3d, 0x45, 0x78,
		0x79, 0xc5, 0x96, 0x59, 0x54, 0xb9, 0x85, 0x97, 0x5d, 0x78, 0xf9, 0x85, 0x97, 0x61, 0x1c, 0x2b,
		0xc6, 0x03, 0xf2, 0x14, 0x51, 0xe4, 0x39, 0x0d, 0xa8, 0xaf, 0x7d, 0x81, 0x41, 0x73, 0x3a, 0x9f,
		0xf5, 0xa8, 0x8f, 0x21, 0x82, 0xa5, 0x1e, 0x56, 0xe9, 0x0f, 0x56, 0xae, 0x91, 0x65, 0xdb, 0x0d,
		0xf9, 0x46, 0x97, 0x71, 0x67, 0xe4, 0xdc, 0x19, 0x59, 0x77, 0x46, 0xde, 0xb1, 0x64, 0x1e, 0x4c,
		0xee, 0xd3, 0xa7, 0xf8, 0x1d, 0x51, 0x60, 0x3d, 0xec, 0x33, 0x61, 0x27, 0x46, 0xc3, 0x55, 0xc0,
		0xd8, 0x9e, 0x9c, 0x11, 0x3b, 0x3c, 0xea, 0xf5, 0x11, 0x56, 0xb8, 0x32, 0x0c, 0x3d, 0x35, 0xfd,
		0x61, 0x75, 0x0d, 0x16, 0x7c, 0x87, 0xe1, 0x61, 0x42, 0x6f, 0x81, 0xd0, 0x4b, 0xe8, 0x25, 0xf4,
		0x12, 0x7a, 0x09, 0xbd, 0x54, 0xd6, 0xe9, 0x4f, 0x11, 0xcd, 0xeb, 0x4a, 0x03, 0x1b, 0x30, 0x5a,
		0x47, 0x02, 0x6f, 0x83, 0xf6, 0xcc, 0xfa, 0xea, 0x47, 0x0a, 0x9a, 0xa8, 0x98, 0x0e, 0x18, 0x3c,
		0x14, 0xb8, 0x00, 0x07, 0x6e, 0x41, 0x82, 0x2b, 0xb0, 0xe0, 0x1c, 0x34, 0x38, 0x07, 0x0f, 0xce,
		0x41, 0x04, 0x26, 0x4c, 0x80, 0x42, 0x45, 0xfa, 0x74, 0x61, 0x1d, 0xb5, 0x89, 0x7e, 0xb3, 0xa7,
		0xb4, 0x29, 0x54, 0x90, 0xfb, 0xcc, 0x91, 0x8a, 0x57, 0x80, 0x43, 0xc4, 0xdc, 0xdd, 0xf7, 0xe5,
		0x0b, 0x5b, 0x73, 0x3c, 0xf4, 0xdd, 0x7f, 0x27, 0x82, 0x05, 0xdf, 0x0d, 0x78, 0x22, 0x5e, 0x57,
		0x76, 0x3e, 0x9d, 0xec, 0xab, 0xd0, 0x77, 0x42, 0x75, 0x44, 0x96, 0x9e, 0xa7, 0x9a, 0xb8, 0x75,
		0x2f, 0xd5, 0x2a, 0xe5, 0xf2, 0x66, 0x99, 0xe9, 0xc6, 0x74, 0x73, 0x80, 0x4d, 0xf1, 0xa3, 0x3b,
		0x27, 0xd3, 0xcf, 0x90, 0x16, 0xc0, 0x1b, 0x19, 0x4f, 0xc4, 0x8a, 0xbb, 0xb1, 0xb1, 0x83, 0x50,
		0x3a, 0x1e, 0x2a, 0x1d, 0x7f, 0xf9, 0xd3, 0x2b, 0x15, 0xab, 0x05, 0x2f, 0xf0, 0x6a, 0xde, 0x76,
		0x14, 0xb7, 0x64, 0xec, 0x7d, 0x15, 0x46, 0xde, 0x88, 0x3b, 0xef, 0x68, 0xb4, 0xd4, 0xd2, 0x2b,
		0x79, 0x6b, 0xdb, 0x5f, 0x8f, 0x82, 0xd2, 0xba, 0xef, 0x00, 0x03, 0x38, 0x62, 0x47, 0x3d, 0x0e,
		0x05, 0xdd, 0xd9, 0x04, 0x79, 0x22, 0x76, 0xd7, 0x1c, 0xaa, 0x34, 0xf0, 0xa7, 0x4e, 0xd5, 0x8c,
		0x29, 0x40, 0x72, 0x20, 0x39, 0xac, 0xf4, 0xfd, 0x42, 0x3c, 0x46, 0x06, 0x77, 0x4e, 0xfd, 0x84,
		0xe2, 0xa2, 0xce, 0xad, 0x7f, 0x14, 0x24, 0x56, 0x18, 0xdf, 0x15, 0x20, 0x2b, 0x8c, 0x2b, 0x8a,
		0x74, 0xac, 0x30, 0xe6, 0xca, 0x6d, 0xac, 0x30, 0x2e, 0x9b, 0x1b, 0xe1, 0x56, 0x85, 0xf1, 0x93,
		0x03, 0x05, 0xc6, 0x32, 0x0b, 0x8c, 0xcb, 0xef, 0xe5, 0xb0, 0xc0, 0x98, 0x61, 0xbc, 0xac, 0x78,
		0xac, 0xb8, 0x2a, 0x3d, 0x4f, 0x35, 0x17, 0x0b, 0x8c, 0xc5, 0x32, 0xcb, 0x8b, 0x4c, 0x36, 0x17,
		0xc0, 0x14, 0x3f, 0x3a, 0x96, 0x17, 0x67, 0x49, 0x0b, 0x96, 0x17, 0x57, 0x14, 0x49, 0x59, 0x5e,
		0x84, 0x19, 0x08, 0xb2, 0xbc, 0x98, 0x7f, 0xe0, 0x2c, 0x2f, 0x32, 0x3a, 0x47, 0xc8, 0x81, 0xe5,
		0xc5, 0x37, 0xe4, 0xf3, 0xa0, 0x66, 0x77, 0x3d, 0x1a, 0x4e, 0xb9, 0x50, 0x5f, 0x1c, 0xc6, 0xca,
		0x02, 0xe3, 0x3c, 0xe1, 0xb1, 0xc0, 0xb8, 0xc0, 0xd6, 0xc8, 0x02, 0x63, 0x46, 0x30, 0xc7, 0x02,
		0x63, 0xe6, 0xe4, 0xc6, 0x02, 0xe3, 0xb2, 0xf9, 0x11, 0xee, 0x14, 0x18, 0x1b, 0x4a, 0x8b, 0xf8,
		0xce, 0x81, 0x0a, 0xe3, 0x16, 0x70, 0x88, 0xfb, 0x52, 0x5f, 0x0c, 0x36, 0x0b, 0xa3, 0x9f, 0xf3,
		0xce, 0x3b, 0xe9, 0x64, 0x89, 0xb1, 0xc0, 0xaa, 0x47, 0xc6, 0x9d, 0x15, 0x4b, 0x8c, 0x19, 0xa4,
		0x1a, 0xd7, 0x30, 0x32, 0xdd, 0x96, 0x24, 0xdd, 0x68, 0x15, 0xce, 0xf5, 0x62, 0x91, 0x71, 0x96,
		0xb4, 0x60, 0x91, 0x71, 0x45, 0xa1, 0x94, 0x45, 0x46, 0x98, 0xb1, 0x20, 0x8b, 0x8c, 0xf9, 0x07,
		0xce, 0x22, 0x23, 0xa3, 0x73, 0x84, 0x1c, 0x58, 0x64, 0x7c, 0x1b, 0xc7, 0x48, 0xdd, 0x92, 0x2d,
		0xfc, 0x12, 0x63, 0x1a, 0x29, 0x0b, 0x8c, 0xf3, 0x84, 0xc7, 0x02, 0xe3, 0x02, 0xdb, 0x22, 0x0b,
		0x8c, 0x19, 0x81, 0x1c, 0x0b, 0x8c, 0x99, 0x53, 0x1b, 0x0b, 0x8c, 0xcb, 0xe6, 0x45, 0x38, 0x54,
		0x60, 0x8c, 0xa2, 0x8e, 0x14, 0xda, 0x81, 0x0a, 0x63, 0xa1, 0xc0, 0x26, 0x38, 0x1b, 0x46, 0xd2,
		0x0e, 0x5b, 0xf8, 0x8b, 0x76, 0x18, 0xe9, 0x69, 0x1e, 0x8a, 0xa2, 0x1d, 0x66, 0x03, 0xac, 0x68,
		0x87, 0x31, 0x3a, 0x8f, 0x76, 0x98, 0xcb, 0x2c, 0xe3, 0x47, 0x5d, 0xa3, 0x22, 0x2d, 0x3a, 0xf8,
		0x76, 0x58, 0x1a, 0x29, 0xed, 0xb0, 0x79, 0xc2, 0xa3, 0x1d, 0xb6, 0xc8, 0xb6, 0x48, 0x3b, 0x2c,
		0x1b, 0x90, 0xa3, 0x1d, 0x96, 0x39, 0xb5, 0xd1, 0x0e, 0x5b, 0x36, 0x2f, 0x82, 0x76, 0xd8, 0xe2,
		0x65, 0x9c, 0x76, 0xd8, 0x4c, 0x77, 0x8d, 0x76, 0x58, 0x16, 0x2f, 0xda, 0x61, 0xa4, 0xa7, 0x79,
		0x28, 0x8a, 0x76, 0x98, 0x0d, 0xb0, 0xa2, 0x1d, 0xc6, 0xe8, 0x3c, 0xda, 0x61, 0x2e, 0xb3, 0x8c,
		0xdf, 0x15, 0xb1, 0x51, 0x2e, 0xb8, 0x61, 0xe3, 0x40, 0x69, 0x86, 0xcd, 0x13, 0x1e, 0xcd, 0xb0,
		0x05, 0x36, 0x45, 0x9a, 0x61, 0x19, 0x61, 0x1c, 0xcd, 0xb0, 0xcc, 0x99, 0x8d, 0x66, 0xd8, 0xb2,
		0x39, 0x11, 0x34, 0xc3, 0x16, 0x2f, 0xe3, 0x34, 0xc3, 0x66, 0xba, 0x6b, 0x34, 0xc3, 0xb2, 0x78,
		0xd1, 0x0c, 0x23, 0x3d, 0xcd, 0x43, 0x51, 0x34, 0xc3, 0x6c, 0x80, 0x15, 0xcd, 0x30, 0x46, 0xe7,
		0xd1, 0x0c, 0x73, 0x99, 0x65, 0x7c, 0x13, 0x0b, 0x9d, 0xa8, 0xd1, 0x5e, 0x28, 0xe0, 0x7e, 0xd8,
		0x93, 0x58, 0x69, 0x89, 0xcd, 0x13, 0x1e, 0x2d, 0xb1, 0x05, 0xb6, 0x46, 0x5a, 0x62, 0x19, 0xc1,
		0x1c, 0x2d, 0xb1, 0xcc, 0xc9, 0x8d, 0x96, 0xd8, 0xb2, 0xf9, 0x11, 0xb4, 0xc4, 0x16, 0x2f, 0xe3,
		0xb4, 0xc4, 0x66, 0xba, 0x6b, 0xb4, 0xc4, 0xb2, 0x78, 0xd1, 0x12, 0x23, 0x3d, 0xcd, 0x43, 0x51,
		0xb4, 0xc4, 0x6c, 0x80, 0x15, 0x2d, 0x31, 0x46, 0xe7, 0xd1, 0x12, 0x73, 0x34, 0x22, 0x30, 0xb2,
		0xf2, 0x6b, 0x5a, 0x47, 0x46, 0x18, 0x15, 0x61, 0x6e, 0x19, 0xef, 0x27, 0xcd, 0x9f, 0xf2, 0x4a,
		0x74, 0xc5, 0xe0, 0x64, 0x00, 0x3f, 0x8c, 0xba, 0x52, 0x37, 0x07, 0x16, 0x53, 0xa0, 0xa5, 0xb9,
		0x89, 0xe2, 0xcb, 0x40, 0xf5, 0x69, 0x50, 0x37, 0x65, 0xf8, 0xf2, 0x8d, 0x64, 0xe2, 0x9d, 0xb0,
		0x3b, 0xea, 0x1f, 0x93, 0xf4, 0x2a, 0x6c, 0x5c, 0x74, 0xc3, 0x58, 0x35, 0x42, 0xd1, 0x56, 0x41,
		0x22, 0xda, 0x2a, 0x49, 0xaf, 0x42, 0xd5, 0xbd, 0x2e, 0x05, 0x3d, 0xad, 0x9a, 0x22, 0x31, 0xa1,
		0x96, 0xea, 0xe2, 0x67, 0x23, 0x8a, 0x93, 0xf4, 0x2a, 0x14, 0xad, 0x5f, 0x83, 0x31, 0x6e, 0xd4,
		0x33, 0x41, 0x37, 0x96, 0x61, 0x1c, 0xf5, 0x8c, 0x4c, 0x86, 0x5f, 0xc2, 0x9e, 0xbe, 0xd4, 0xd1,
		0x8d, 0x0e, 0x84, 0x31, 0xb1, 0x6a, 0x0c, 0xbe, 0x31, 0xf1, 0x56, 0x98, 0x18, 0x61, 0x24, 0x56,
		0x17, 0x8d, 0x93, 0x2e, 0x18, 0x91, 0x80, 0x24, 0x6c, 0x9f, 0xbb, 0xd2, 0x03, 0xc3, 0x4c, 0x7f,
		0x24, 0x0e, 0x12, 0xd7, 0xbe, 0x4a, 0x4c, 0xcd, 0x98, 0x18, 0xaa, 0xfb, 0xf0, 0xbf, 0x29, 0xbd,
		0xdb, 0x91, 0x7d, 0x64, 0x02, 0xdb, 0x33, 0xde, 0xff, 0x26, 0x6e, 0x9f, 0x44, 0x56, 0xf8, 0x54,
		0x2a, 0x55, 0xaa, 0xa5, 0xd2, 0x46, 0x75, 0xb3, 0xba, 0xb1, 0x55, 0x2e, 0x17, 0x2a, 0x05, 0xa0,
		0x9d, 0xf9, 0xfd, 0xc3, 0x3e, 0x5d, 0xca, 0xd6, 0x76, 0xbf, 0xe9, 0xe9, 0x5e, 0xa7, 0x83, 0x18,
		0xda, 0x69, 0x22, 0x63, 0xa8, 0x4d, 0xf6, 0x51, 0x7a, 0x0c, 0x50, 0x69, 0x5f, 0x6e, 0x49, 0x07,
		0x1a, 0x0a, 0xfb, 0x89, 0x89, 0x7b, 0x4d, 0xa3, 0x47, 0xd6, 0xc9, 0xc1, 0xf0, 0xce, 0xed, 0x8d,
		0x6e, 0x5c, 0x7d, 0x3c, 0x56, 0xac, 0x6f, 0x5f, 0x74, 0xeb, 0xc7, 0xaa, 0x51, 0xaf, 0xb5, 0xd5,
		0x89, 0x68, 0xab, 0xfa, 0x5e, 0xf7, 0xba, 0x74, 0x3a, 0xbc, 0x45, 0xf5, 0x83, 0xd1, 0x8d, 0xa9,
		0xd7, 0x5a, 0xbf, 0x8e, 0x55, 0xe3, 0xb0, 0x67, 0x8e, 0x62, 0x59, 0x3f, 0xee, 0xdf, 0x8e, 0xfa,
		0xe9, 0xf0, 0x6f, 0xaf, 0xa5, 0x7f, 0xfa, 0x07, 0x52, 0x83, 0xfd, 0x08, 0x2c, 0xf7, 0x3e, 0x68,
		0xbd, 0xce, 0x32, 0xf5, 0x36, 0x76, 0x13, 0xcc, 0x5e, 0xb3, 0xb6, 0xf3, 0xc9, 0x96, 0x12, 0x69,
		0x0c, 0xfa, 0xc3, 0x12, 0xb5, 0xd7, 0x6f, 0xb8, 0x81, 0xb2, 0xb5, 0x79, 0x37, 0x06, 0xdd, 0xe3,
		0xd0, 0x3c, 0x34, 0xbd, 0x03, 0xd1, 0x3a, 0x10, 0x9d, 0xdb, 0x4a, 0x63, 0x10, 0x1d, 0x74, 0x56,
		0xff, 0x2c, 0x82, 0x74, 0xc6, 0xe0, 0x6c, 0x47, 0xc6, 0xf3, 0x17, 0xd1, 0x7c, 0x3f, 0x31, 0xe7,
		0x3c, 0xb7, 0x9d, 0xdf, 0x0e, 0xe6, 0x75, 0xbe, 0xed, 0x3e, 0xbf, 0xd6, 0x97, 0x63, 0xcb, 0xf3,
		0x87, 0x05, 0x83, 0xbc, 0x1b, 0x5c, 0x3a, 0xfd, 0x62, 0xf8, 0xf1, 0x39, 0x67, 0xda, 0x78, 0xaa,
		0x54, 0xce, 0x1f, 0x9b, 0xce, 0x64, 0x2e, 0xe6, 0xfc, 0xc1, 0x16, 0x67, 0x28, 0x63, 0xcc, 0x3c,
		0xb6, 0x3d, 0x27, 0x06, 0x66, 0xa6, 0x30, 0xcc, 0x84, 0x15, 0x98, 0x99, 0xbd, 0x64, 0x0a, 0x32,
		0xc5, 0x90, 0x29, 0x2c, 0x94, 0xce, 0x73, 0x44, 0x8a, 0x0f, 0x4b, 0xd4, 0xbc, 0x6d, 0x35, 0x6b,
		0x97, 0x9a, 0xb3, 0x9f, 0x2b, 0x43, 0x66, 0x33, 0xba, 0xcd, 0x27, 0x19, 0xb3, 0x4f, 0x8d, 0x1c,
		0xd2, 0xc2, 0x1f, 0xb7, 0x83, 0x40, 0xb4, 0x5a, 0xb1, 0x4c, 0x92, 0xdc, 0x12, 0x23, 0x25, 0xbc,
		0x89, 0x08, 0x72, 0xea, 0x0c, 0xf2, 0x5d, 0xbf, 0x98, 0xfb, 0x7a, 0x44, 0x1b, 0xf4, 0x6e, 0x97,
		0xda, 0x6d, 0xd1, 0xba, 0x75, 0x4a, 0xb7, 0x4e, 0xe7, 0xd6, 0xa9, 0x7c, 0xb9, 0x30, 0x25, 0xf7,
		0xf5, 0x6d, 0x69, 0xde, 0x76, 0xa4, 0x68, 0xc7, 0xb2, 0x9d, 0x67, 0xd2, 0x8e, 0x4d, 0x95, 0x6a,
		0x8e, 0x9f, 0x79, 0x34, 0x22, 0xb1, 0x8f, 0x1f, 0x87, 0xf4, 0x1e, 0x4e, 0x68, 0x10, 0x09, 0x02,
		0xd4, 0x09, 0xb4, 0xe2, 0x00, 0xe6, 0xec, 0xfc, 0x91, 0x15, 0xc8, 0x0a, 0x64, 0x05, 0xb2, 0xc2,
		0x5b, 0xee, 0xe6, 0x8e, 0xca, 0x77, 0x4a, 0x8c, 0xbd, 0x01, 0x23, 0xca, 0xc0, 0xd1, 0xd2, 0x00,
		0xd2, 0x9a, 0x38, 0xd8, 0x14, 0x09, 0x0c, 0xb1, 0xb0, 0x2d, 0x1a, 0x30, 0xe2, 0x01, 0x23, 0x22,
		0x30, 0x62, 0x92, 0xaf, 0xa8, 0xe4, 0x2c, 0x2e, 0xf6, 0x06, 0xa4, 0x13, 0x79, 0xaf, 0xba, 0x96,
		0x7a, 0xf9, 0x67, 0xf8, 0xbf, 0x65, 0xe1, 0xb3, 0x47, 0xf7, 0xde, 0xce, 0xc6, 0x1d, 0x16, 0xa7,
		0x0b, 0x3e, 0x3e, 0xf9, 0xeb, 0x92, 0xc5, 0x67, 0x3f, 0xd1, 0x06, 0x3e, 0x59, 0x8c, 0xe1, 0x48,
		0x18, 0x23, 0x63, 0x6d, 0x7d, 0x1f, 0x17, 0x7f, 0xed, 0x6c, 0x23, 0xd8, 0x3a, 0xbf, 0x3f, 0x2b,
		0x04, 0x5b, 0xe7, 0xc3, 0xcb, 0xc2, 0xe0, 0xcb, 0xef, 0xe2, 0xc3, 0x7d, 0xf1, 0x6c, 0x23, 0x28,
		0x8d, 0xde, 0x2d, 0x96, 0xcf, 0x36, 0x82, 0xf2, 0xf9, 0xfa, 0xda, 0x8f, 0x1f, 0x1f, 0x67, 0xfd,
		0x9d, 0xf5, 0xdf, 0x9b, 0x0f, 0xf6, 0x16, 0x1a, 0x9c, 0xdb, 0x7c, 0xcc, 0x87, 0x27, 0x7b, 0x7f,
		0xc3, 0x3c, 0xeb, 0x7f, 0xd6, 0xf2, 0x7a, 0xda, 0xeb, 0xff, 0xb3, 0xf8, 0xbc, 0x57, 0x69, 0x4e,
		0x38, 0x46, 0xb7, 0x5e, 0x61, 0xb7, 0x8e, 0xd6, 0xad, 0x0f, 0xb2, 0x56, 0x04, 0xed, 0x5a, 0xf0,
		0xe5, 0xfc, 0x77, 0xe1, 0x8f, 0xd2, 0xc3, 0xe7, 0xf5, 0xdf, 0xd5, 0x87, 0x97, 0x6f, 0xde, 0x4f,
		0xfb, 0xb1, 0xc2, 0x1f, 0xd5, 0x87, 0xcf, 0xaf, 0x7c, 0xa7, 0xf2, 0xf0, 0xf9, 0x8d, 0xff, 0x46,
		0xf9, 0x61, 0x6d, 0xe2, 0x47, 0xfb, 0xef, 0x17, 0x5f, 0xfb, 0x85, 0xd2, 0x2b, 0xbf, 0xb0, 0xf9,
		0xda, 0x2f, 0x6c, 0xbe, 0xf2, 0x0b, 0xaf, 0x86, 0x54, 0x7c, 0xe5, 0x17, 0xca, 0x0f, 0xf7, 0x13,
		0x3f, 0xbf, 0x36, 0xfd, 0x47, 0x2b, 0x0f, 0xeb, 0xf7, 0xaf, 0x7d, 0xaf, 0xfa, 0x70, 0xff, 0x79,
		0x7d, 0x9d, 0x42, 0x07, 0x23, 0x74, 0x6c, 0xfe, 0xf9, 0x37, 0xff, 0xd5, 0x13, 0xfe, 0x0f, 0xcb,
		0xfd, 0x77, 0x72, 0x86, 0xe2, 0x9c, 0x7e, 0x16, 0x67, 0x28, 0x4e, 0xcc, 0x50, 0xcc, 0x71, 0x82,
		0x6d, 0x0e, 0x15, 0xf9, 0x0f, 0x0e, 0x37, 0xd3, 0xf1, 0x92, 0xf0, 0x9c, 0x2b, 0x2f, 0xf9, 0x2e,
		0xfe, 0xce, 0x7f, 0x91, 0x37, 0xc4, 0x62, 0x6e, 0x0b, 0x8b, 0xb6, 0x2d, 0x2c, 0xce, 0xce, 0x3a,
		0x41, 0x72, 0xee, 0xbf, 0x91, 0xfb, 0x6d, 0x3f, 0x97, 0xb9, 0x47, 0x0b, 0x9b, 0x41, 0x9e, 0xad,
		0xc0, 0x64, 0xd7, 0xed, 0x67, 0xf3, 0x2f, 0x67, 0x94, 0x27, 0x79, 0xe5, 0x07, 0x60, 0x5e, 0x64,
		0xd3, 0xbe, 0x16, 0xff, 0xf4, 0x17, 0xfb, 0x2f, 0x2e, 0xb8, 0x1d, 0xe5, 0xb1, 0xef, 0xbe, 0x7f,
		0xf3, 0x53, 0x66, 0xe7, 0x46, 0x64, 0xd8, 0xe6, 0xc7, 0xd6, 0xea, 0xc7, 0x8f, 0x69, 0x5b, 0x0c,
		0xfa, 0x5d, 0xa3, 0xf7, 0xff, 0xbc, 0xff, 0x8b, 0x9a, 0x41, 0xe3, 0xa2, 0x6b, 0x3e, 0xef, 0x1d,
		0xfd, 0x55, 0xaa, 0x9f, 0x1e, 0xec, 0xfd, 0x59, 0x3b, 0xf9, 0xfe, 0x7f, 0x19, 0xf6, 0xd0, 0x79,
		0x4d, 0x95, 0x78, 0x3a, 0x25, 0x62, 0xf0, 0xdc, 0x32, 0xd6, 0xf7, 0xbc, 0x27, 0x3e, 0x3c, 0x9b,
		0xe0, 0xf0, 0xf6, 0x07, 0xfb, 0xc1, 0x41, 0x7e, 0xf2, 0x77, 0x64, 0xd2, 0x8c, 0x55, 0x37, 0x17,
		0x78, 0x4a, 0x93, 0x65, 0x4f, 0x37, 0x3b, 0xbd, 0x96, 0xf4, 0xcc, 0x4f, 0x95, 0x78, 0xcd, 0x48,
		0x1b, 0xa1, 0xb4, 0x8c, 0xbd, 0x76, 0x14, 0x7b, 0x7b, 0x47, 0xd7, 0x25, 0x6f, 0xd4, 0x8f, 0x7b,
		0xc7, 0x7b, 0xdb, 0x59, 0xb7, 0xad, 0x1c, 0x67, 0x17, 0x3d, 0x4d, 0x9b, 0xd6, 0x93, 0xdb, 0x9e,
		0x03, 0xb2, 0xd9, 0x98, 0x3a, 0xf4, 0x2c, 0x8b, 0x66, 0x79, 0xe2, 0x64, 0xc2, 0x4c, 0xff, 0xd5,
		0x73, 0x68, 0xd6, 0xc8, 0x98, 0x55, 0x61, 0x18, 0x35, 0x83, 0xac, 0x5f, 0xc0, 0xc0, 0x6c, 0xb1,
		0xb9, 0xb7, 0xb8, 0xb6, 0xbb, 0xc0, 0x56, 0x36, 0x2c, 0x82, 0x27, 0xb1, 0x91, 0x41, 0x37, 0xea,
		0xa8, 0xe6, 0xdd, 0xc2, 0xdb, 0xd9, 0xf3, 0x72, 0xfb, 0xd3, 0x4f, 0x5a, 0x70, 0xae, 0x64, 0xb3,
		0x40, 0x26, 0xb3, 0xb9, 0xce, 0x59, 0xce, 0x65, 0xce, 0x67, 0xae, 0x72, 0xd6, 0xb4, 0x90, 0xdb,
		0x5c, 0xe3, 0xdc, 0x80, 0x20, 0xb7, 0xb9, 0xc2, 0xd8, 0x23, 0xe8, 0xac, 0x16, 0x8c, 0xf8, 0x9d,
		0xe1, 0x3d, 0xcd, 0xae, 0x45, 0xa6, 0x8b, 0x54, 0x47, 0x1f, 0x94, 0x51, 0x33, 0xc9, 0x76, 0xad,
		0x5f, 0xe6, 0xcb, 0x37, 0xf2, 0x58, 0xa6, 0x91, 0xef, 0x72, 0x0c, 0x1b, 0x5e, 0x42, 0x2e, 0xcb,
		0x2b, 0xec, 0xba, 0x09, 0x79, 0x2c, 0x97, 0x70, 0xcb, 0x9c, 0xce, 0x7a, 0x2d, 0x9d, 0x3f, 0xda,
		0x7e, 0x32, 0x37, 0x73, 0x63, 0xf4, 0x79, 0x59, 0x17, 0x85, 0x73, 0x59, 0x1c, 0x9d, 0xdb, 0xba,
		0xb7, 0x3c, 0xd7, 0xb9, 0xd9, 0x59, 0xd7, 0x96, 0xf7, 0x3a, 0x36, 0x6b, 0xeb, 0xd6, 0xac, 0xad,
		0x53, 0xb3, 0xb6, 0x2e, 0xcd, 0xed, 0xe9, 0x25, 0x79, 0x2d, 0x66, 0x1e, 0x76, 0x8c, 0xf9, 0xef,
		0x59, 0x91, 0xe7, 0x7e, 0xe2, 0xdc, 0xb3, 0x62, 0x59, 0xba, 0x6b, 0x5b, 0xdd, 0xb6, 0xf5, 0xee,
		0xdb, 0x7a, 0x37, 0x6e, 0xbd, 0x3b, 0xcf, 0xa7, 0x5b, 0xcf, 0xa9, 0x7b, 0xcf, 0xbd, 0x9b, 0x4f,
		0x3f, 0xb0, 0x19, 0x75, 0xa2, 0xd8, 0xde, 0x46, 0x15, 0xc3, 0x8f, 0xe7, 0xee, 0x14, 0xcb, 0x26,
		0x07, 0x18, 0xb2, 0x60, 0x5b, 0x1e, 0x60, 0x64, 0x02, 0x46, 0x2e, 0x60, 0x64, 0x23, 0x5f, 0xf9,
		0xc8, 0x59, 0x46, 0xd2, 0xbb, 0x6c, 0x7f, 0x77, 0x8a, 0xfc, 0xb7, 0x4d, 0x9c, 0xa0, 0xfc, 0xaa,
		0x85, 0xcf, 0x9e, 0xd8, 0x46, 0x71, 0x28, 0x74, 0x3c, 0x5d, 0xe5, 0xdd, 0x77, 0x56, 0xea, 0x56,
		0x37, 0x52, 0x83, 0x8e, 0xc3, 0x12, 0xb3, 0xa4, 0x11, 0x10, 0x5b, 0x88, 0x2d, 0xc4, 0x16, 0x62,
		0x0b, 0xb1, 0x85, 0xd8, 0xb2, 0xa4, 0xd8, 0x92, 0x6a, 0x1d, 0xc9, 0xe5, 0xdd, 0x37, 0x77, 0x7c,
		0x4c, 0xb0, 0x35, 0x70, 0xb1, 0x73, 0x4e, 0x31, 0xb9, 0x85, 0xdc, 0x42, 0x6e, 0x21, 0xb7, 0x90,
		0x5b, 0xc8, 0x2d, 0xb9, 0x71, 0xcb, 0x58, 0xea, 0x88, 0x2d, 0xef, 0xbe, 0xb7, 0x3c, 0xce, 0x96,
		0xc8, 0x42, 0x64, 0x21, 0xb2, 0x10, 0x59, 0x96, 0x11, 0x59, 0xf2, 0x9e, 0x70, 0x90, 0x7e, 0xb0,
		0x30, 0x26, 0x0e, 0x94, 0x6e, 0xc9, 0x5b, 0x7b, 0x49, 0x37, 0xee, 0x7a, 0x9e, 0xc4, 0x62, 0xa9,
		0xb1, 0xdb, 0x19, 0x23, 0x5b, 0x17, 0x1e, 0x04, 0x01, 0xc2, 0x12, 0x22, 0x14, 0x41, 0x82, 0x13,
		0x26, 0x38, 0x81, 0x82, 0x13, 0x2a, 0x3b, 0x82, 0x65, 0x49, 0xb8, 0xec, 0x8f, 0xb9, 0x81, 0xc6,
		0xde, 0x08, 0x63, 0xf0, 0x69, 0x63, 0xf1, 0xa9, 0xff, 0x0d, 0xc4, 0x36, 0x91, 0x26, 0x49, 0xaf,
		0x46, 0x63, 0xf6, 0xa1, 0x00, 0xaf, 0xc8, 0x9e, 0xb3, 0x16, 0xd2, 0xc5, 0xd2, 0x5c, 0xcf, 0x89,
		0x3c, 0xb1, 0x31, 0xe7, 0x93, 0xa0, 0x45, 0xd0, 0x22, 0x68, 0x11, 0xb4, 0x08, 0x5a, 0x4b, 0x00,
		0x5a, 0x3d, 0xa5, 0xcd, 0x66, 0x11, 0x80, 0xb3, 0x6c, 0x62, 0xd6, 0xb1, 0xd0, 0x17, 0xd2, 0xfa,
		0xc9, 0x10, 0x76, 0xfb, 0x4c, 0x6f, 0xb4, 0x27, 0xb5, 0xf5, 0xce, 0x3b, 0x0d, 0xe6, 0x2f, 0xd1,
		0xe9, 0x49, 0x7b, 0xf2, 0x3e, 0x11, 0xcf, 0x97, 0x58, 0x34, 0x8d, 0x8a, 0xf4, 0x8e, 0xba, 0x50,
		0x79, 0xed, 0xd9, 0xfd, 0xb6, 0x5c, 0x96, 0x17, 0xc2, 0xa8, 0x6b, 0x99, 0xcb, 0xd6, 0xd6, 0xc0,
		0xdd, 0xea, 0xf3, 0xa6, 0x2c, 0x6e, 0xf1, 0x9a, 0x72, 0xa9, 0xb8, 0x55, 0xda, 0xaa, 0x54, 0x8b,
		0x5b, 0x65, 0xb6, 0x69, 0xd7, 0xda, 0xf4, 0x87, 0xd5, 0xfc, 0xf4, 0x73, 0x9a, 0x08, 0x19, 0x9a,
		0x08, 0x57, 0x57, 0x3d, 0xad, 0xcc, 0x1d, 0x4a, 0xf1, 0xe6, 0x65, 0x40, 0x34, 0x16, 0x68, 0x2c,
		0xd0, 0x58, 0xa0, 0xb1, 0x40, 0x63, 0x81, 0xc6, 0xc2, 0x8c, 0xfd, 0x06, 0x2b, 0x38, 0xde, 0x5b,
		0x2a, 0x38, 0x63, 0xc5, 0x55, 0x32, 0x49, 0xaf, 0xef, 0x58, 0xc4, 0xc9, 0xe7, 0xe1, 0x58, 0x5b,
		0xff, 0x3a, 0x91, 0x2d, 0x96, 0xd6, 0xc1, 0x92, 0xb8, 0x48, 0x5c, 0x24, 0x2e, 0x12, 0x17, 0x89,
		0x6b, 0x09, 0x88, 0x4b, 0x75, 0x91, 0x4e, 0xba, 0xdf, 0xb2, 0x18, 0xc3, 0xe8, 0x99, 0xac, 0x7c,
		0x39, 0xe7, 0xc9, 0xb1, 0x0c, 0x25, 0x80, 0xb6, 0x31, 0xd1, 0x46, 0x3e, 0x01, 0xc4, 0x82, 0x72,
		0x2e, 0x7c, 0x1a, 0xd0, 0xe0, 0x7c, 0xf4, 0xf3, 0xfb, 0xb3, 0x42, 0xb0, 0x75, 0x3e, 0xbc, 0x2c,
		0x0c, 0xbe, 0xfc, 0x2e, 0x3e, 0xdc, 0x17, 0xcf, 0x36, 0x82, 0xd2, 0xe8, 0xdd, 0x62, 0xf9, 0x6c,
		0x23, 0x28, 0x9f, 0xaf, 0xaf, 0xfd, 0xf8, 0xf1, 0x71, 0xd6, 0xdf, 0x59, 0xff, 0xbd, 0xf9, 0xe0,
		0x5b, 0xff, 0x73, 0xcf, 0x11, 0x1e, 0xff, 0xe1, 0xc9, 0xde, 0xdf, 0x70, 0x6d, 0xe0, 0x9f, 0xb5,
		0xbc, 0x5a, 0x81, 0xcd, 0x33, 0xf1, 0xd3, 0x76, 0x60, 0xb7, 0xb4, 0xf2, 0x07, 0x65, 0xe2, 0xc9,
		0xe9, 0x3d, 0x94, 0x09, 0x47, 0x64, 0x62, 0x90, 0xed, 0x22, 0x68, 0xd7, 0x82, 0x2f, 0xe7, 0xbf,
		0x0b, 0x7f, 0x94, 0x1e, 0x3e, 0xaf, 0xff, 0xae, 0x3e, 0xbc, 0x7c, 0xf3, 0x7e, 0xda, 0x8f, 0x15,
		0xfe, 0xa8, 0x3e, 0x7c, 0x7e, 0xe5, 0x3b, 0x95, 0x87, 0xcf, 0x6f, 0xfc, 0x37, 0xca, 0x0f, 0x6b,
		0x13, 0x3f, 0xda, 0x7f, 0xbf, 0xf8, 0xda, 0x2f, 0x94, 0x5e, 0xf9, 0x85, 0xcd, 0xd7, 0x7e, 0x61,
		0xf3, 0x95, 0x5f, 0x78, 0x35, 0xa4, 0xe2, 0x2b, 0xbf, 0x50, 0x7e, 0xb8, 0x9f, 0xf8, 0xf9, 0xb5,
		0xe9, 0x3f, 0x5a, 0x79, 0x58, 0xbf, 0x7f, 0xed, 0x7b, 0xd5, 0x87, 0xfb, 0xcf, 0xeb, 0xeb, 0x14,
		0x4e, 0x78, 0xe1, 0x64, 0x5a, 0xe4, 0x9f, 0x16, 0x04, 0x09, 0xce, 0xd1, 0x58, 0x3e, 0x54, 0xf3,
		0xe5, 0xad, 0x09, 0xe0, 0xe6, 0x69, 0x4c, 0x0b, 0x8a, 0x95, 0x03, 0x3b, 0x3a, 0xc8, 0xca, 0xc1,
		0x8b, 0x68, 0x58, 0x39, 0x78, 0x25, 0x20, 0x56, 0x0e, 0x20, 0x15, 0x94, 0x95, 0x03, 0xce, 0xd5,
		0xf0, 0xde, 0x32, 0x57, 0xe3, 0xa9, 0xea, 0x2a, 0x99, 0x3c, 0xfb, 0x7f, 0xce, 0xd9, 0xc8, 0xe9,
		0x21, 0x29, 0x7d, 0x2d, 0x3a, 0xaa, 0x15, 0xc4, 0x52, 0x24, 0x91, 0xb6, 0x8f, 0x62, 0x2f, 0xe2,
		0x21, 0x85, 0x91, 0xc2, 0x48, 0x61, 0xa4, 0x30, 0x52, 0x18, 0x29, 0x6c, 0x56, 0x25, 0x69, 0x49,
		0x6d, 0x94, 0xb9, 0x03, 0x21, 0x31, 0x8b, 0x4b, 0xd4, 0xfc, 0xbd, 0xd1, 0xad, 0xd8, 0x16, 0x09,
		0x40, 0x17, 0x36, 0x7e, 0x40, 0x7b, 0x07, 0x7f, 0xd5, 0xf6, 0xf7, 0x76, 0xea, 0xc7, 0x87, 0xa7,
		0xdf, 0x77, 0xeb, 0xc7, 0xbb, 0xb5, 0x93, 0xc3, 0x03, 0xdb, 0xbd, 0xd9, 0x60, 0x65, 0x61, 0x02,
		0x61, 0xc0, 0x83, 0xac, 0xb5, 0x7c, 0xf9, 0xb4, 0x6a, 0x27, 0xf5, 0xfd, 0xc3, 0xc3, 0x23, 0x9f,
		0xab, 0x62, 0x61, 0x1f, 0xd1, 0x9f, 0xfb, 0xa7, 0x27, 0xdf, 0x77, 0x8f, 0xf9, 0x9c, 0xd0, 0x9f,
		0xd3, 0xe1, 0xc1, 0x97, 0xdd, 0x1d, 0x3e, 0x21, 0xdc, 0x27, 0x74, 0x78, 0xbc, 0xf7, 0x75, 0xef,
		0xa0, 0xf6, 0xfd, 0xf0, 0xd8, 0x5f, 0xf1, 0x15, 0xd3, 0xe7, 0xab, 0xc6, 0xcf, 0x2b, 0xe1, 0xfe,
		0x74, 0x44, 0x62, 0x82, 0xab, 0xa8, 0xa5, 0xda, 0x4a, 0xb6, 0xec, 0x9b, 0x3f, 0xcf, 0xc3, 0xa1,
		0xf7, 0x43, 0xef, 0x87, 0xde, 0x0f, 0xbd, 0x1f, 0x7a, 0x3f, 0xf4, 0x7e, 0x66, 0xec, 0x37, 0x8c,
		0xba, 0x92, 0x46, 0x35, 0x2f, 0x93, 0x4a, 0x09, 0xc0, 0xfb, 0xb1, 0x38, 0xe1, 0xd6, 0x3f, 0xd5,
		0xc3, 0x8d, 0x88, 0x7c, 0x2d, 0x74, 0x94, 0xc8, 0x66, 0xa4, 0x5b, 0x56, 0xd7, 0x33, 0x71, 0x6f,
		0xb8, 0xd1, 0x8d, 0xe0, 0xde, 0x70, 0xff, 0x12, 0x0f, 0xf7, 0xd1, 0x72, 0x68, 0xec, 0x8e, 0xb9,
		0x37, 0x5c, 0xe1, 0x53, 0xa9, 0x54, 0xa9, 0x96, 0x4a, 0x1b, 0xd5, 0xcd, 0xea, 0xc6, 0x56, 0xb9,
		0x5c, 0xa8, 0x14, 0xb8, 0x4b, 0x9c, 0x73, 0xad, 0x9b, 0x33, 0x90, 0xe9, 0x79, 0x2c, 0xb8, 0x91,
		0xdb, 0x3a, 0xeb, 0x76, 0x02, 0x52, 0xed, 0x9c, 0x79, 0x9b, 0x86, 0xb1, 0x23, 0xdb, 0xa2, 0xd7,
		0x31, 0x56, 0x59, 0xcc, 0xdf, 0xb0, 0x33, 0x36, 0x3b, 0xa7, 0xb7, 0x64, 0x25, 0x00, 0x7a, 0x4b,
		0x2f, 0xa3, 0xa1, 0xb7, 0xf4, 0x4a, 0x40, 0xf4, 0x96, 0x20, 0xe9, 0x84, 0xde, 0x12, 0xb7, 0xf8,
		0xa7, 0x8d, 0x43, 0x1b, 0x87, 0x03, 0x5d, 0xda, 0x38, 0x79, 0x34, 0x65, 0x6e, 0xf1, 0x4f, 0xf3,
		0x86, 0xe6, 0x0d, 0xcd, 0x9b, 0x51, 0x23, 0x1f, 0x2d, 0x0e, 0x8a, 0x7a, 0x46, 0xda, 0x37, 0x70,
		0x9e, 0x06, 0x43, 0x43, 0x81, 0x86, 0x02, 0x0d, 0x05, 0x1a, 0x0a, 0x34, 0x14, 0x68, 0x28, 0xcc,
		0xd8, 0x6f, 0x34, 0xa2, 0xa8, 0x23, 0x85, 0x46, 0x58, 0xa4, 0x54, 0x58, 0x15, 0x74, 0xf9, 0xb0,
		0xc4, 0x4d, 0xdc, 0xaf, 0x69, 0x1d, 0x19, 0xd1, 0x1f, 0xa4, 0x58, 0x69, 0xe0, 0x7e, 0xd2, 0xfc,
		0x29, 0xaf, 0x44, 0x77, 0xb4, 0xfc, 0x3f, 0x8c, 0xba, 0x52, 0x37, 0x07, 0xa0, 0x10, 0x68, 0x69,
		0x6e, 0xa2, 0xf8, 0x32, 0x50, 0x3a, 0x31, 0x42, 0x37, 0x65, 0xf8, 0xf2, 0x8d, 0x64, 0xe2, 0x9d,
		0xb0, 0x1b, 0x47, 0x26, 0x6a, 0x46, 0x9d, 0x24, 0xbd, 0x0a, 0x1b, 0x17, 0xdd, 0x30, 0x56, 0x8d,
		0x50, 0xb4, 0x55, 0x90, 0x88, 0xb6, 0x4a, 0xd2, 0xab, 0x70, 0xb0, 0xe9, 0x62, 0x12, 0x1b, 0x19,
		0x74, 0xa3, 0x8e, 0x6a, 0xde, 0x85, 0x9d, 0x61, 0xd7, 0x1a, 0x0e, 0x30, 0x2d, 0x19, 0x7e, 0x19,
		0x6e, 0x2e, 0x90, 0x6f, 0x4f, 0x9b, 0x5f, 0x93, 0xcb, 0xb1, 0xb9, 0xf9, 0x3d, 0x7d, 0xa9, 0xa3,
		0x1b, 0x1d, 0x08, 0x63, 0x62, 0xd5, 0xe8, 0xdf, 0xe1, 0xdc, 0x9b, 0xdc, 0xa3, 0x31, 0x3b, 0x19,
		0x4b, 0xce, 0x89, 0x37, 0xee, 0x46, 0x73, 0xfe, 0x58, 0x5b, 0x14, 0x6e, 0x93, 0xbe, 0x31, 0xa8,
		0xdb, 0x36, 0x6d, 0xc3, 0x50, 0x36, 0x0c, 0x5d, 0xc3, 0x50, 0xf5, 0x72, 0x23, 0xc6, 0x8e, 0x8a,
		0xed, 0xa4, 0xfd, 0x44, 0x27, 0x6f, 0xdf, 0x06, 0x9a, 0x0c, 0xc9, 0xae, 0x19, 0x54, 0xa0, 0x19,
		0x44, 0x33, 0x88, 0x66, 0x10, 0xcd, 0x20, 0x9a, 0x41, 0xe8, 0x72, 0x96, 0x06, 0xd0, 0xd7, 0x8e,
		0xc0, 0xd8, 0xb6, 0xa4, 0x9e, 0xf5, 0x60, 0x8f, 0x21, 0x59, 0x4e, 0x0d, 0xbb, 0x35, 0x0e, 0x18,
		0x79, 0x43, 0x92, 0x39, 0x4c, 0xb9, 0x43, 0x93, 0x3d, 0x58, 0xf9, 0x83, 0x95, 0x41, 0x58, 0x39,
		0xb4, 0x2b, 0x8b, 0x96, 0xe5, 0x31, 0x7d, 0x2a, 0xdf, 0x11, 0x04, 0xca, 0xc3, 0xda, 0x6a, 0x77,
		0x62, 0xf4, 0x55, 0xc5, 0x38, 0x5e, 0x67, 0xbc, 0xf5, 0xee, 0x70, 0x1f, 0xdd, 0x47, 0x31, 0x5f,
		0xd1, 0x49, 0x39, 0x16, 0x53, 0xc7, 0x1f, 0x56, 0x1b, 0x60, 0xc0, 0x6e, 0x18, 0x0e, 0x06, 0xd4,
		0x15, 0x08, 0x75, 0x84, 0x3a, 0x42, 0x1d, 0xa1, 0x8e, 0x50, 0x67, 0xeb, 0xa9, 0xd8, 0xf6, 0x3e,
		0x9e, 0x7b, 0x20, 0x1d, 0x09, 0xb4, 0x9e, 0xe2, 0x99, 0x15, 0xd2, 0x8f, 0x0c, 0x24, 0x91, 0x30,
		0x1c, 0x11, 0x38, 0x11, 0x45, 0x14, 0x53, 0x6c, 0x51, 0x45, 0x15, 0x57, 0x78, 0x91, 0x85, 0x17,
		0x5b, 0x78, 0xd1, 0xc5, 0x10, 0x5f, 0x10, 0x11, 0xc6, 0x73, 0x58, 0x26, 0xfa, 0xad, 0x9e, 0xd2,
		0xa6, 0x50, 0x41, 0xea, 0xb3, 0x46, 0x2a, 0x58, 0x01, 0x0a, 0x09, 0x63, 0x59, 0xec, 0xcb, 0x17,
		0x56, 0x9f, 0xee, 0xa1, 0x2d, 0x9b, 0x9d, 0x08, 0x0e, 0x6c, 0x19, 0xed, 0x44, 0x7c, 0xa8, 0x4b,
		0x10, 0x27, 0xfb, 0x0e, 0xb4, 0x25, 0x89, 0xa0, 0xdd, 0xfe, 0xf3, 0xd4, 0x10, 0xb7, 0xf8, 0xa9,
		0x51, 0x29, 0x97, 0x37, 0xcb, 0x4c, 0x8f, 0x65, 0x4f, 0x8f, 0x0f, 0x8c, 0x66, 0xda, 0xeb, 0x9c,
		0xcc, 0xfa, 0xa4, 0x19, 0xcb, 0x5b, 0x13, 0x8b, 0xa0, 0xa7, 0x13, 0x23, 0x1a, 0x1d, 0x30, 0x7a,
		0x8d, 0x65, 0x5b, 0xc6, 0x52, 0x37, 0x09, 0x65, 0x33, 0xa0, 0xfe, 0xf1, 0x97, 0x3f, 0xbd, 0x52,
		0xb1, 0x5a, 0xf0, 0x02, 0xaf, 0xe6, 0x6d, 0x47, 0x71, 0x4b, 0xc6, 0xde, 0x57, 0x61, 0xe4, 0x8d,
		0xb8, 0xf3, 0x8e, 0x46, 0x6b, 0x70, 0xbc, 0x92, 0xb7, 0xb6, 0xfd, 0xf5, 0x28, 0x28, 0xad, 0xfb,
		0x80, 0x1a, 0x0a, 0x6a, 0x67, 0x4c, 0xb3, 0x35, 0x1e, 0x5b, 0x28, 0xa8, 0x4a, 0xa1, 0x3b, 0x1c,
		0x53, 0x9d, 0x8e, 0x19, 0x9b, 0x30, 0x95, 0x97, 0xca, 0xeb, 0xd4, 0xfd, 0x40, 0xd8, 0x2f, 0x08,
		0x67, 0xce, 0xea, 0x84, 0x82, 0xa1, 0xcc, 0x5d, 0x7d, 0xec, 0xf0, 0x59, 0xb1, 0xf9, 0xd7, 0x80,
		0x58, 0xb1, 0x59, 0x12, 0xc4, 0x61, 0xc5, 0x66, 0xa1, 0x1c, 0xc3, 0x8a, 0x0d, 0xfa, 0xe8, 0x17,
		0xbb, 0x62, 0xf3, 0x09, 0xb0, 0x60, 0x53, 0x66, 0xc1, 0xc6, 0x3d, 0x6f, 0x80, 0x05, 0x9b, 0x77,
		0xc4, 0x47, 0x47, 0x7a, 0xc9, 0x7a, 0xfd, 0xe7, 0xa9, 0xe1, 0x42, 0xc1, 0xa6, 0x58, 0x66, 0xb9,
		0x66, 0xe9, 0x93, 0x83, 0xa6, 0xd1, 0xd4, 0x17, 0xcb, 0x35, 0x4f, 0x9b, 0x31, 0xcb, 0x35, 0x4b,
		0x82, 0x64, 0x2c, 0xd7, 0x58, 0xf0, 0x34, 0x58, 0xae, 0xc9, 0xc2, 0xe6, 0x60, 0xb9, 0x86, 0xca,
		0xbb, 0xcc, 0xf7, 0x03, 0xa6, 0x5c, 0x73, 0x3d, 0x1a, 0x0e, 0x20, 0xd6, 0x6b, 0x86, 0xb1, 0xb1,
		0x60, 0x33, 0x2d, 0x1c, 0x16, 0x6c, 0x66, 0x68, 0x4d, 0x2c, 0xd8, 0xcc, 0x09, 0x37, 0x2c, 0xd8,
		0xbc, 0x9b, 0x64, 0x58, 0xb0, 0x41, 0x1f, 0xff, 0xe2, 0x16, 0x6c, 0x1a, 0x4a, 0x8b, 0xf8, 0x0e,
		0xb0, 0x62, 0xb3, 0x05, 0x14, 0xd2, 0xbe, 0xd4, 0x17, 0x83, 0xcd, 0x4d, 0xe8, 0x0f, 0xfc, 0xc7,
		0x9d, 0x72, 0xa2, 0x64, 0x53, 0xa0, 0x2b, 0xfd, 0xce, 0xce, 0x83, 0x25, 0x9b, 0x39, 0x52, 0x83,
		0x6b, 0x6c, 0x98, 0x1e, 0x84, 0x33, 0xe4, 0x68, 0x58, 0xb4, 0x79, 0xda, 0x8c, 0x59, 0xb4, 0x59,
		0x12, 0x28, 0x63, 0xd1, 0xc6, 0x82, 0xaf, 0xc1, 0xa2, 0x4d, 0x16, 0x56, 0x07, 0x8b, 0x36, 0x54,
		0xde, 0x65, 0xbe, 0x1f, 0x08, 0x45, 0x1b, 0x79, 0x6b, 0xa4, 0x6e, 0xc9, 0x16, 0x5e, 0xc9, 0x26,
		0x8d, 0x8c, 0x05, 0x9b, 0x69, 0xe1, 0xb0, 0x60, 0x33, 0x43, 0x5b, 0x62, 0xc1, 0x66, 0x4e, 0xb0,
		0x61, 0xc1, 0xe6, 0xdd, 0x14, 0xc3, 0x82, 0x0d, 0xfa, 0xd8, 0x17, 0xb8, 0x60, 0x63, 0xfd, 0xe4,
		0xde, 0xd7, 0x64, 0xd0, 0xd2, 0x49, 0xbe, 0xb4, 0x4f, 0x68, 0x9f, 0xd0, 0x3e, 0xa1, 0x7d, 0x42,
		0xe0, 0xa0, 0x7d, 0x42, 0xfb, 0x84, 0xf6, 0x89, 0xed, 0x7c, 0x8b, 0xba, 0x46, 0x45, 0x5a, 0x74,
		0xf0, 0xec, 0x93, 0x34, 0x32, 0xda, 0x27, 0xb4, 0x4f, 0x68, 0x9f, 0xd0, 0x3e, 0xa1, 0x7d, 0x42,
		0xfb, 0x84, 0xf6, 0x09, 0xed, 0x13, 0xda, 0x27, 0xb4, 0x4f, 0x68, 0x9f, 0xd0, 0x3e, 0x21, 0x70,
		0xd0, 0x3e, 0xa1, 0x7d, 0x42, 0xfb, 0xc4, 0x66, 0xbe, 0x75, 0x45, 0x6c, 0x14, 0xa2, 0x7b, 0x32,
		0x0e, 0x8c, 0xe6, 0x09, 0xcd, 0x13, 0x9a, 0x27, 0x34, 0x4f, 0x68, 0x9e, 0xd0, 0x3c, 0xa1, 0x79,
		0x42, 0xf3, 0x84, 0xe6, 0x09, 0xcd, 0x13, 0x9a, 0x27, 0x34, 0x4f, 0x08, 0x1c, 0x34, 0x4f, 0x68,
		0x9e, 0xd0, 0x3c, 0xb1, 0x99, 0x6f, 0x26, 0x16, 0x3a, 0x51, 0xa3, 0xb5, 0xe7, 0x60, 0xfe, 0xc9,
		0x93, 0xd8, 0x68, 0xa1, 0xd0, 0x42, 0xa1, 0x85, 0x42, 0x0b, 0x85, 0x16, 0x0a, 0x2d, 0x14, 0x5a,
		0x28, 0xb4, 0x50, 0x68, 0xa1, 0xd0, 0x42, 0xa1, 0x85, 0x42, 0x0b, 0x85, 0xc0, 0x41, 0x0b, 0x85,
		0x16, 0xca, 0x0a, 0x5b, 0x28, 0x1f, 0x56, 0x98, 0x3c, 0xfc, 0x9a, 0xd6, 0x91, 0x11, 0x46, 0x45,
		0x18, 0x5b, 0xa8, 0xfa, 0x49, 0xf3, 0xa7, 0xbc, 0x12, 0x5d, 0x31, 0xd8, 0xf9, 0xd6, 0x0f, 0xa3,
		0xae, 0xd4, 0xcd, 0x81, 0x45, 0x11, 0x68, 0x69, 0x6e, 0xa2, 0xf8, 0x32, 0x50, 0x7d, 0x3a, 0xd2,
		0x4d, 0x19, 0xbe, 0x7c, 0x23, 0x99, 0x78, 0x27, 0xec, 0x8e, 0xfa, 0xa7, 0x24, 0xbd, 0x0a, 0x1b,
		0x17, 0xdd, 0x30, 0x56, 0x8d, 0x50, 0xb4, 0x55, 0x90, 0x88, 0xb6, 0x4a, 0xd2, 0xab, 0x50, 0x75,
		0xaf, 0x2b, 0x41, 0x12, 0x1b, 0x19, 0x74, 0xa3, 0x8e, 0x6a, 0xde, 0x85, 0x9d, 0xe1, 0xa0, 0x2b,
		0x8c, 0xa3, 0x9e, 0x91, 0xc9, 0xf0, 0x4b, 0xd8, 0xd3, 0x97, 0x3a, 0xba, 0xd1, 0x81, 0x30, 0x26,
		0x56, 0x8d, 0xc1, 0x37, 0x26, 0xde, 0x0a, 0x13, 0x23, 0x8c, 0xb4, 0xdb, 0x17, 0xda, 0x6b, 0xd7,
		0x76, 0x3e, 0xd9, 0x52, 0x26, 0xf5, 0x01, 0x04, 0xe1, 0x24, 0x6e, 0x7f, 0x5f, 0x25, 0xa6, 0x66,
		0x4c, 0x6c, 0x35, 0x8f, 0xfd, 0x6f, 0x4a, 0xef, 0x76, 0x64, 0x9f, 0x1d, 0x2c, 0x6f, 0x96, 0xea,
		0x7f, 0x13, 0xb7, 0x4f, 0x22, 0x29, 0x7c, 0x2a, 0x95, 0x2a, 0xd5, 0x52, 0x69, 0xa3, 0xba, 0x59,
		0xdd, 0xd8, 0x2a, 0x97, 0x0b, 0x95, 0x82, 0xc5, 0x2d, 0x67, 0xfd, 0xc3, 0x3e, 0x46, 0xc9, 0xd6,
		0x76, 0xbf, 0xe9, 0xe8, 0x5e, 0xa7, 0x83, 0x10, 0xca, 0x69, 0x22, 0x63, 0xab, 0xbb, 0xc7, 0xda,
		0xca, 0x60, 0x10, 0x0d, 0x5c, 0x12, 0xed, 0xb3, 0x38, 0xf8, 0xf2, 0x13, 0x13, 0xf7, 0x9a, 0x46,
		0x8f, 0x06, 0xdf, 0x07, 0xc3, 0x5b, 0xb2, 0x37, 0xba, 0x23, 0xf5, 0xf1, 0x68, 0xa5, 0xbe, 0x7d,
		0xd1, 0xad, 0x1f, 0xab, 0x46, 0xbd, 0xd6, 0x56, 0x27, 0xa2, 0xad, 0xea, 0x7b, 0xdd, 0xeb, 0xca,
		0x49, 0x6c, 0xe4, 0xd1, 0xe0, 0x4f, 0xaf, 0xef, 0x47, 0xcd, 0xfe, 0x77, 0x8f, 0xfb, 0x7f, 0x72,
		0xfd, 0x74, 0xf8, 0xf7, 0xd5, 0xd2, 0x3f, 0xef, 0xc3, 0x6a, 0x48, 0x6a, 0xbe, 0x9f, 0x98, 0x73,
		0xea, 0xdb, 0x4e, 0x79, 0x27, 0x53, 0x3d, 0xdf, 0x96, 0x9f, 0x5f, 0xfb, 0xcb, 0xe7, 0x93, 0x72,
		0x6a, 0xe1, 0x63, 0x1c, 0xed, 0x37, 0xad, 0x40, 0xb5, 0x3c, 0xa9, 0x5b, 0xdd, 0x48, 0x69, 0xe3,
		0x35, 0xa3, 0x4e, 0x14, 0xe7, 0xd4, 0x37, 0xdb, 0x61, 0x51, 0x7b, 0xec, 0x09, 0xc5, 0x9a, 0x16,
		0xd9, 0xd2, 0x22, 0x4b, 0xe6, 0x95, 0x5e, 0x96, 0x84, 0x03, 0x5f, 0x30, 0x72, 0xc4, 0xbe, 0x0c,
		0x30, 0x2f, 0x1f, 0x6d, 0xcb, 0x5e, 0x69, 0xb2, 0xfd, 0x84, 0x8c, 0x93, 0x2c, 0xef, 0xe4, 0x42,
		0x4e, 0xaa, 0x6c, 0x1b, 0x64, 0x76, 0xcd, 0x24, 0x9b, 0x7f, 0x39, 0xa3, 0x86, 0x97, 0x57, 0x83,
		0x83, 0x6c, 0x68, 0x19, 0x76, 0xd8, 0x0b, 0xed, 0xa0, 0xb3, 0xc9, 0x84, 0xc5, 0xb7, 0xd3, 0x0c,
		0xda, 0xa8, 0xaf, 0xa5, 0xba, 0xf8, 0xd9, 0x88, 0xe2, 0x24, 0xb3, 0xe6, 0x99, 0xce, 0x54, 0x78,
		0xfc, 0xa8, 0x8c, 0x72, 0x6d, 0x3c, 0xe3, 0x27, 0xa3, 0x7f, 0x3e, 0xeb, 0x89, 0xac, 0x79, 0x4c,
		0x4c, 0xcd, 0x77, 0xa2, 0x69, 0x5e, 0x53, 0x3b, 0x72, 0x9f, 0x08, 0x9a, 0xfb, 0x3c, 0x8b, 0xdc,
		0x27, 0x6a, 0xba, 0xa5, 0xb2, 0x3b, 0x2a, 0x5b, 0x23, 0x20, 0xed, 0xbb, 0xb2, 0x6f, 0xca, 0x2f,
		0x7b, 0xcb, 0xac, 0x5b, 0x72, 0xb6, 0x9d, 0x66, 0x6e, 0x9d, 0x67, 0x9e, 0x9d, 0xa8, 0x9d, 0xce,
		0x34, 0xef, 0x4e, 0xd5, 0x5a, 0xe7, 0x6a, 0xad, 0x93, 0xb5, 0xd6, 0xd9, 0x2e, 0xc7, 0xd8, 0x3a,
		0xeb, 0x4e, 0x38, 0xfd, 0x20, 0xd1, 0xfa, 0x35, 0x78, 0x26, 0x4a, 0x07, 0xdd, 0x28, 0x31, 0xf9,
		0x65, 0xc2, 0x38, 0xdf, 0x5f, 0x06, 0x90, 0x97, 0xf1, 0x9e, 0x4b, 0x57, 0x9d, 0x7b, 0x97, 0x6d,
		0xa3, 0xeb, 0xb6, 0xdb, 0x85, 0xdb, 0xea, 0xca, 0xad, 0x77, 0xe9, 0xd6, 0xbb, 0x76, 0xeb, 0x5d,
		0x7c, 0x3e, 0x5d, 0x7d, 0x4e, 0x5d, 0x7e, 0xee, 0x5d, 0x7f, 0xfa, 0x81, 0x23, 0x0b, 0x33, 0xf7,
		0xc4, 0x19, 0x77, 0x17, 0xa3, 0xcf, 0xcf, 0xb9, 0xd1, 0xe6, 0x2b, 0x00, 0xd6, 0x84, 0xc0, 0xa6,
		0x20, 0x60, 0x08, 0x83, 0x6d, 0x81, 0x80, 0x11, 0x0a, 0x18, 0xc1, 0x80, 0x11, 0x8e, 0x7c, 0x05,
		0x24, 0x67, 0x21, 0xb1, 0x26, 0x28, 0xcf, 0x85, 0xc5, 0x5e, 0xbe, 0x3d, 0xd3, 0x17, 0x5b, 0xb9,
		0x66, 0x47, 0x66, 0xac, 0xcb, 0x0d, 0x82, 0xec, 0x60, 0xc9, 0x0f, 0x8a, 0x0c, 0xc1, 0xc9, 0x11,
		0x9c, 0x2c, 0xc1, 0xc9, 0x93, 0x1d, 0x99, 0xb2, 0x24, 0x57, 0xd6, 0x65, 0x2b, 0x0d, 0x60, 0x38,
		0x07, 0xd3, 0x7a, 0x9e, 0x8e, 0x7b, 0xaf, 0x3c, 0xa7, 0x84, 0xfe, 0x97, 0x9c, 0x59, 0xde, 0x7e,
		0x08, 0x66, 0x1f, 0x24, 0xa4, 0xfd, 0x8f, 0x30, 0xf7, 0x3d, 0x42, 0xdb, 0x91, 0x00, 0x76, 0x9f,
		0x23, 0xd8, 0xed, 0x06, 0x60, 0xf7, 0x35, 0x5a, 0xed, 0xa5, 0xe0, 0x30, 0xfb, 0x17, 0xa5, 0xfd,
		0x4e, 0x47, 0x8a, 0x76, 0x2c, 0xdb, 0x08, 0x9d, 0xce, 0x78, 0xd4, 0x55, 0x05, 0x88, 0xe5, 0x68,
		0x34, 0x8f, 0xf0, 0xe3, 0xc7, 0xe1, 0x3a, 0xf3, 0x70, 0x28, 0xe4, 0xab, 0xba, 0xda, 0xdc, 0xe2,
		0xc8, 0x6b, 0xbc, 0xba, 0x06, 0x87, 0xe9, 0xd2, 0x88, 0x88, 0x75, 0xc4, 0x3a, 0x62, 0x1d, 0xb1,
		0x8e, 0x58, 0x47, 0xac, 0x23, 0xd6, 0x39, 0x89, 0x75, 0xa9, 0x96, 0x93, 0xec, 0x72, 0x7f, 0x18,
		0xa3, 0xf5, 0xd3, 0x38, 0x60, 0x37, 0x0e, 0x88, 0x5c, 0x47, 0xae, 0x23, 0xd7, 0x91, 0xeb, 0xc8,
		0x75, 0xe4, 0x3a, 0x72, 0x9d, 0x93, 0x5c, 0x37, 0x96, 0x72, 0x62, 0x5d, 0xee, 0xcf, 0x62, 0xb8,
		0x2f, 0x27, 0x0c, 0xd4, 0x0d, 0xc3, 0xc1, 0x40, 0xba, 0x02, 0x91, 0x8e, 0x48, 0x47, 0xa4, 0x23,
		0xd2, 0x11, 0xe9, 0x6c, 0x3d, 0x15, 0xdb, 0x13, 0x94, 0xd2, 0x40, 0x06, 0x9b, 0x19, 0x2b, 0xdd,
		0x92, 0xb7, 0x78, 0x47, 0xba, 0x3d, 0x89, 0x8d, 0x47, 0xba, 0x21, 0x0b, 0x29, 0xa2, 0xa0, 0x62,
		0x0b, 0x2b, 0xaa, 0xc0, 0xc2, 0x0b, 0x2d, 0xbc, 0xe0, 0xc2, 0x0b, 0x2f, 0x86, 0x00, 0x83, 0x08,
		0x31, 0x9e, 0xc7, 0x02, 0xec, 0xb5, 0x20, 0x7a, 0x2e, 0xd3, 0xbc, 0x97, 0x7f, 0xf9, 0x6f, 0x80,
		0x14, 0x89, 0x34, 0x49, 0x7a, 0x35, 0x72, 0x6a, 0x86, 0x98, 0xc1, 0x83, 0x72, 0x50, 0x92, 0xd2,
		0x6f, 0xc8, 0xc4, 0x04, 0xa3, 0x7d, 0xf4, 0xc0, 0xb8, 0xf4, 0x31, 0x34, 0x62, 0x29, 0xb1, 0x94,
		0x58, 0x4a, 0x2c, 0x25, 0x96, 0x12, 0x4b, 0x57, 0x0c, 0x4b, 0x79, 0xd2, 0x30, 0x31, 0xee, 0x0d,
		0xcf, 0x04, 0x63, 0x21, 0xe4, 0x44, 0xeb, 0x45, 0x58, 0x10, 0x49, 0x7c, 0x23, 0xbe, 0x11, 0xdf,
		0x88, 0x6f, 0xc4, 0x37, 0xe2, 0x5b, 0xee, 0xfd, 0x56, 0x4f, 0x69, 0xb3, 0x59, 0x04, 0xa4, 0x37,
		0x24, 0x4f, 0xf1, 0x58, 0xe8, 0x8b, 0xfe, 0xdd, 0x3a, 0x83, 0xea, 0x03, 0xf0, 0x8e, 0xe7, 0xf7,
		0xbf, 0x29, 0x0d, 0x27, 0x36, 0x69, 0x70, 0x7f, 0x89, 0x4e, 0x4f, 0xe2, 0xe0, 0xcc, 0x44, 0x7c,
		0x5f, 0x62, 0xd1, 0x34, 0x2a, 0xd2, 0x3b, 0xea, 0x42, 0xd9, 0x3e, 0x4b, 0xf7, 0xdf, 0xfb, 0x0e,
		0x79, 0x21, 0x8c, 0xba, 0x96, 0x56, 0x8f, 0x8e, 0x75, 0xa0, 0xdb, 0x7f, 0x9e, 0x1a, 0xe2, 0x16,
		0x3f, 0x35, 0x4a, 0xc5, 0xad, 0xd2, 0x56, 0xa5, 0x5a, 0xdc, 0x2a, 0x33, 0x47, 0x96, 0x3d, 0x47,
		0x3e, 0x30, 0x9a, 0x69, 0xaf, 0x73, 0x9a, 0x46, 0x28, 0x7d, 0xa8, 0xdf, 0x8c, 0xae, 0xae, 0x7a,
		0x5a, 0x99, 0x3b, 0xd4, 0x99, 0x69, 0x2f, 0x03, 0xa4, 0x91, 0x34, 0x2d, 0x1c, 0x1a, 0x49, 0x33,
		0x34, 0x29, 0x1a, 0x49, 0x33, 0xb5, 0x74, 0x1a, 0x49, 0xef, 0x0c, 0x90, 0x46, 0x92, 0x43, 0x23,
		0x0a, 0x4e, 0x4f, 0x9b, 0x43, 0x06, 0x1d, 0x9c, 0x9e, 0x36, 0xe6, 0x0a, 0x25, 0x93, 0xf4, 0xfa,
		0x8e, 0x33, 0xd4, 0x30, 0x29, 0x15, 0x66, 0x4b, 0xb0, 0x89, 0x9c, 0x04, 0xd9, 0x1a, 0x8c, 0x5c,
		0x4a, 0x2e, 0x25, 0x97, 0x92, 0x4b, 0xc9, 0xa5, 0xe4, 0xd2, 0xdc, 0xfb, 0x2d, 0xd5, 0x0d, 0x44,
		0xab, 0x15, 0xcb, 0x24, 0x41, 0x44, 0xd3, 0x2d, 0xa0, 0x98, 0x46, 0xcf, 0x90, 0x45, 0xce, 0x37,
		0xb7, 0xac, 0xeb, 0x12, 0x60, 0xdb, 0x9a, 0x68, 0x63, 0x9f, 0x00, 0x63, 0x3b, 0x12, 0xc6, 0xc8,
		0x58, 0xc3, 0x35, 0xb7, 0x34, 0xc0, 0xb5, 0xb3, 0x8d, 0x60, 0xeb, 0xfc, 0xfe, 0xac, 0x10, 0x6c,
		0x9d, 0x0f, 0x2f, 0x0b, 0x83, 0x2f, 0xbf, 0x8b, 0x0f, 0xf7, 0xc5, 0xb3, 0x8d, 0xa0, 0x34, 0x7a,
		0xb7, 0x58, 0x3e, 0xdb, 0x08, 0xca, 0xe7, 0xeb, 0x6b, 0x3f, 0x7e, 0x7c, 0x9c, 0xf5, 0x77, 0xd6,
		0x7f, 0x6f, 0x3e, 0xf8, 0x70, 0x7f, 0xfe, 0x39, 0x62, 0x73, 0x39, 0x3c, 0xd9, 0xfb, 0x1b, 0xbe,
		0xcd, 0xfc, 0xb3, 0x96, 0x57, 0xab, 0x59, 0xff, 0x1f, 0x60, 0xbb, 0xc1, 0x2a, 0x28, 0xfe, 0x41,
		0x19, 0x7b, 0xb3, 0x8c, 0x55, 0x28, 0x63, 0xcb, 0x2a, 0x63, 0x83, 0xde, 0x45, 0x04, 0xed, 0x5a,
		0xf0, 0xe5, 0xfc, 0x77, 0xe1, 0x8f, 0xd2, 0xc3, 0xe7, 0xf5, 0xdf, 0xd5, 0x87, 0x97, 0x6f, 0xde,
		0x4f, 0xfb, 0xb1, 0xc2, 0x1f, 0xd5, 0x87, 0xcf, 0xaf, 0x7c, 0xa7, 0xf2, 0xf0, 0xf9, 0x8d, 0xff,
		0x46, 0xf9, 0x61, 0x6d, 0xe2, 0x47, 0xfb, 0xef, 0x17, 0x5f, 0xfb, 0x85, 0xd2, 0x2b, 0xbf, 0xb0,
		0xf9, 0xda, 0x2f, 0x6c, 0xbe, 0xf2, 0x0b, 0xaf, 0x86, 0x54, 0x7c, 0xe5, 0x17, 0xca, 0x0f, 0xf7,
		0x13, 0x3f, 0xbf, 0x36, 0xfd, 0x47, 0x2b, 0x0f, 0xeb, 0xf7, 0xaf, 0x7d, 0xaf, 0xfa, 0x70, 0xff,
		0x79, 0x7d, 0x9d, 0xc2, 0xbe, 0x74, 0xc2, 0xce, 0x34, 0xca, 0x3f, 0x8d, 0x08, 0x3a, 0x4e, 0xf8,
		0x50, 0x1e, 0x67, 0x4e, 0x21, 0xa1, 0xa7, 0x2f, 0x6f, 0x4d, 0x00, 0x3f, 0x7b, 0x6a, 0x5a, 0x90,
		0xac, 0x54, 0x4d, 0x0b, 0x87, 0x95, 0xaa, 0x19, 0x9a, 0x15, 0x2b, 0x55, 0x33, 0xb5, 0x74, 0x56,
		0xaa, 0xde, 0x19, 0x20, 0x2b, 0x55, 0x0e, 0x19, 0x32, 0x9c, 0x41, 0x35, 0x8f, 0xf7, 0xe2, 0xde,
		0x0c, 0xaa, 0xa7, 0x6c, 0xa1, 0x64, 0xf2, 0xec, 0xff, 0x39, 0x93, 0x0a, 0x94, 0x5a, 0x95, 0xbe,
		0x16, 0x1d, 0xd5, 0x0a, 0x62, 0x29, 0x92, 0x48, 0xe3, 0x01, 0xeb, 0x8b, 0xf8, 0xc8, 0xaa, 0x64,
		0x55, 0xb2, 0x2a, 0x59, 0x95, 0xac, 0x4a, 0x56, 0x5d, 0x31, 0x56, 0x55, 0x2d, 0xa9, 0x8d, 0x32,
		0x77, 0xa0, 0xbc, 0x0a, 0xb4, 0x7c, 0xd9, 0xdf, 0x1b, 0xdd, 0xaa, 0x6d, 0x91, 0x00, 0x76, 0xa9,
		0xe3, 0x07, 0xba, 0x77, 0xf0, 0x57, 0x6d, 0x7f, 0x6f, 0xa7, 0x7e, 0x7c, 0x78, 0xfa, 0x7d, 0xb7,
		0x7e, 0xbc, 0x5b, 0x3b, 0x39, 0x3c, 0x40, 0xeb, 0x5d, 0x07, 0xab, 0xd4, 0x13, 0xc8, 0x32, 0x11,
		0xe8, 0xba, 0xfe, 0x97, 0x4f, 0xb7, 0x76, 0x52, 0xdf, 0x3f, 0x3c, 0x3c, 0xf2, 0xb9, 0x63, 0xc3,
		0xd2, 0x3c, 0xd2, 0x3f, 0xf7, 0x4f, 0x4f, 0xbe, 0xef, 0x1e, 0xf3, 0xb9, 0x2e, 0xdb, 0x73, 0x3d,
		0x3c, 0xf8, 0xb2, 0xbb, 0xc3, 0x27, 0xba, 0x3c, 0x4f, 0xf4, 0xf0, 0x78, 0xef, 0xeb, 0xde, 0x41,
		0xed, 0xfb, 0xe1, 0xb1, 0xcf, 0xdd, 0x40, 0xfe, 0xf5, 0x75, 0xce, 0xf1, 0x08, 0x58, 0x14, 0x08,
		0xee, 0x60, 0x47, 0x24, 0x26, 0xb8, 0x8a, 0x5a, 0xaa, 0xad, 0x64, 0x0b, 0xcf, 0x1c, 0x7c, 0x1e,
		0x1e, 0xbd, 0xc1, 0x69, 0xe1, 0xd0, 0x1b, 0x9c, 0xa1, 0x41, 0xd1, 0x1b, 0x9c, 0xa9, 0xa5, 0xd3,
		0x1b, 0x7c, 0x67, 0x80, 0xf4, 0x06, 0x1d, 0xe2, 0x5f, 0x60, 0x6f, 0xd0, 0xa8, 0x2b, 0x69, 0x54,
		0xf3, 0x32, 0xa9, 0x94, 0x00, 0xbd, 0x41, 0xa0, 0x65, 0x04, 0xfe, 0xa9, 0x1e, 0x6e, 0x62, 0xe8,
		0x6b, 0xa1, 0xa3, 0x44, 0x36, 0x23, 0xdd, 0x82, 0x5a, 0xa5, 0xca, 0x7d, 0x6f, 0xdf, 0x78, 0xa3,
		0xb8, 0xef, 0xed, 0x3b, 0xe2, 0xe3, 0x9e, 0x9e, 0x4b, 0xec, 0xcd, 0xb8, 0xb1, 0xef, 0x6d, 0xe1,
		0x53, 0xa9, 0x54, 0xa9, 0x96, 0x4a, 0x1b, 0xd5, 0xcd, 0xea, 0xc6, 0x56, 0xb9, 0x5c, 0xa8, 0x14,
		0xb8, 0x03, 0xee, 0xd2, 0x67, 0x0b, 0xd7, 0x71, 0x4c, 0x7d, 0x71, 0x1d, 0x07, 0x4c, 0x6f, 0xea,
		0x77, 0x85, 0xf9, 0x19, 0x28, 0x40, 0xb7, 0x6b, 0x1c, 0x18, 0xc8, 0x68, 0x68, 0x47, 0xb6, 0x45,
		0xaf, 0x63, 0xa0, 0x58, 0xd5, 0xdf, 0xc0, 0x18, 0x3b, 0x9f, 0xd3, 0x8b, 0x9c, 0x16, 0x0e, 0xbd,
		0xc8, 0x19, 0xd2, 0x9d, 0x5e, 0xe4, 0x4c, 0x2d, 0x9d, 0x5e, 0xe4, 0x3b, 0x03, 0xa4, 0x17, 0xe9,
		0xd0, 0x78, 0x8f, 0xc7, 0x5b, 0xcd, 0xae, 0x82, 0x3c, 0xde, 0xea, 0xbf, 0x5e, 0xb4, 0xf9, 0xe6,
		0xf3, 0x32, 0x68, 0xf3, 0x2d, 0xbd, 0x71, 0x41, 0x9b, 0x6f, 0xbe, 0xd4, 0xe0, 0xf1, 0x56, 0xab,
		0x93, 0x23, 0x34, 0xf7, 0xa6, 0x9b, 0x01, 0x34, 0xf7, 0x50, 0xfa, 0x50, 0x7f, 0xb4, 0x98, 0x34,
		0xea, 0x19, 0x89, 0x67, 0xf0, 0x3d, 0x0d, 0x8e, 0x06, 0xd2, 0xb4, 0x70, 0x68, 0x20, 0xcd, 0xd0,
		0x9c, 0x68, 0x20, 0xcd, 0xd4, 0xd2, 0x69, 0x20, 0xbd, 0x33, 0x40, 0x1a, 0x48, 0x0e, 0x8d, 0x24,
		0x80, 0x0d, 0xa4, 0x46, 0x14, 0x75, 0xa4, 0xd0, 0x88, 0x8b, 0x5c, 0x0b, 0x44, 0x39, 0x80, 0x08,
		0x2c, 0xa7, 0x90, 0x5f, 0xd3, 0x3a, 0x32, 0xa2, 0x3f, 0x68, 0x84, 0x48, 0x20, 0x3f, 0x69, 0xfe,
		0x94, 0x57, 0xa2, 0x3b, 0xda, 0xa4, 0x27, 0x8c, 0xba, 0x52, 0x37, 0x07, 0xa0, 0x14, 0x68, 0x69,
		0x6e, 0xa2, 0xf8, 0x32, 0x50, 0x3a, 0x31, 0x42, 0x37, 0x65, 0xf8, 0xf2, 0x8d, 0x64, 0xe2, 0x9d,
		0xb0, 0x1b, 0x47, 0x26, 0x6a, 0x46, 0x9d, 0x24, 0xbd, 0x0a, 0x1b, 0x17, 0xdd, 0x30, 0x56, 0x8d,
		0x50, 0xb4, 0x55, 0x90, 0x88, 0xb6, 0x4a, 0xd2, 0xab, 0x70, 0xb0, 0x95, 0x75, 0x12, 0x1b, 0x19,
		0x74, 0xa3, 0x8e, 0x6a, 0xde, 0x85, 0x5a, 0xaa, 0x8b, 0x9f, 0x8d, 0x28, 0x4e, 0xd2, 0xab, 0x50,
		0xb4, 0x7e, 0x0d, 0xd4, 0x40, 0xe9, 0xa0, 0x1b, 0x25, 0x26, 0x1c, 0x10, 0x6e, 0x32, 0xfc, 0x32,
		0xdc, 0x17, 0xc8, 0xae, 0x48, 0xd8, 0x6b, 0xcd, 0x16, 0x5b, 0xb2, 0xdf, 0xd3, 0x97, 0x3a, 0xba,
		0xd1, 0x81, 0x30, 0x26, 0x56, 0x8d, 0xfe, 0x13, 0xb1, 0xde, 0x9a, 0x1f, 0x6b, 0x08, 0x93, 0xb1,
		0x59, 0xce, 0xf9, 0xb1, 0x02, 0x58, 0x0e, 0x03, 0x65, 0x00, 0x84, 0x34, 0xf0, 0xc1, 0x1c, 0xf0,
		0xa0, 0x0d, 0x74, 0x60, 0x07, 0x38, 0xb0, 0x03, 0x1b, 0xd8, 0x01, 0xcd, 0x6a, 0xd3, 0xd7, 0x8e,
		0x8a, 0x31, 0xba, 0x9d, 0x09, 0x91, 0xc2, 0x73, 0x14, 0x27, 0x43, 0xc4, 0xf2, 0x15, 0x0b, 0xf4,
		0x15, 0xe1, 0xe5, 0x15, 0x5b, 0x66, 0x51, 0xe5, 0x16, 0x5e, 0x76, 0xe1, 0xe5, 0x17, 0x5e, 0x86,
		0x71, 0xec, 0x18, 0x0f, 0xc8, 0x57, 0x44, 0x91, 0xe7, 0x34, 0xa0, 0xbe, 0xf6, 0x05, 0x06, 0xcd,
		0xed, 0x7c, 0xd6, 0xa3, 0x3e, 0x86, 0x08, 0x96, 0x7a, 0x58, 0xe5, 0x3f, 0x58, 0xb9, 0x46, 0x96,
		0x6d, 0x37, 0xe4, 0x1b, 0x5d, 0xc6, 0x9d, 0x91, 0x73, 0x67, 0x64, 0xdd, 0x19, 0x79, 0xc7, 0x92,
		0x79, 0x30, 0xb9, 0x4f, 0x9f, 0xe2, 0x77, 0x44, 0x81, 0xf5, 0xb0, 0xcf, 0x7a, 0x98, 0x18, 0x0d,
		0x57, 0x31, 0xcf, 0xdb, 0x1c, 0x9f, 0xfd, 0x30, 0x3c, 0xc2, 0xe1, 0x11, 0x56, 0x38, 0xdf, 0x0f,
		0x3d, 0x35, 0xfd, 0x61, 0x75, 0x0d, 0x16, 0x7c, 0x87, 0xe1, 0x61, 0x42, 0x6f, 0x81, 0xd0, 0x4b,
		0xe8, 0x25, 0xf4, 0x12, 0x7a, 0x09, 0xbd, 0x54, 0xd6, 0xe9, 0x4f, 0x11, 0xcd, 0xeb, 0x4a, 0x03,
		0x1b, 0x30, 0x5a, 0x47, 0x02, 0x2f, 0x9d, 0x7b, 0x66, 0x7d, 0xf5, 0x23, 0x05, 0x4d, 0x54, 0x4c,
		0x07, 0x0c, 0x1e, 0x0a, 0x5c, 0x80, 0x03, 0xb7, 0x20, 0xc1, 0x15, 0x58, 0x70, 0x0e, 0x1a, 0x9c,
		0x83, 0x07, 0xe7, 0x20, 0x02, 0x13, 0x26, 0x40, 0xa1, 0x22, 0x7d, 0xba, 0xb0, 0x8e, 0xda, 0x44,
		0xbf, 0xd9, 0x53, 0xda, 0x14, 0x2a, 0xc8, 0x7d, 0xe6, 0x48, 0xc5, 0x2b, 0xc0, 0x21, 0x62, 0xee,
		0x08, 0xf1, 0xf2, 0x85, 0xad, 0x39, 0x1e, 0xfa, 0x8e, 0x11, 0x13, 0xc1, 0x82, 0xef, 0x20, 0x31,
		0x11, 0xaf, 0x2b, 0xab, 0xe5, 0x27, 0xfb, 0x2a, 0xf4, 0xd5, 0xf3, 0x8e, 0xc8, 0xd2, 0xf3, 0x54,
		0x13, 0xb7, 0xee, 0xa5, 0x5a, 0xa5, 0x5c, 0xde, 0x2c, 0x33, 0xdd, 0x98, 0x6e, 0x0e, 0xb0, 0x29,
		0x7e, 0x74, 0xe7, 0x64, 0xfa, 0x19, 0xd2, 0x42, 0xde, 0x9a, 0x58, 0x04, 0x3d, 0x9d, 0x18, 0xd1,
		0xe8, 0x80, 0xd3, 0x7d, 0x2c, 0xdb, 0x32, 0x96, 0xba, 0x49, 0x28, 0x5d, 0xe0, 0x50, 0xe9, 0xf8,
		0xcb, 0x9f, 0x5e, 0xa9, 0x58, 0x2d, 0x78, 0x81, 0x57, 0xf3, 0xb6, 0xa3, 0xb8, 0x25, 0x63, 0xef,
		0xab, 0x30, 0xf2, 0x46, 0xdc, 0x79, 0x47, 0xa3, 0xe5, 0x96, 0x5e, 0xc9, 0x5b, 0xdb, 0xfe, 0x7a,
		0x14, 0x94, 0xd6, 0x7d, 0x07, 0x18, 0xc0, 0x11, 0x3b, 0xea, 0x71, 0x28, 0xf8, 0x68, 0x4b, 0x3d,
		0xb6, 0x70, 0x47, 0x54, 0xd5, 0x35, 0x87, 0x2a, 0x0d, 0xfc, 0xa9, 0x53, 0x35, 0x63, 0x0a, 0x90,
		0x1c, 0x48, 0x0e, 0x2b, 0x7d, 0xbf, 0x10, 0xb7, 0x1e, 0xc4, 0x9d, 0x53, 0x3f, 0xa1, 0xb8, 0xa8,
		0x73, 0xeb, 0x1f, 0x05, 0x89, 0x15, 0xc6, 0x77, 0x05, 0xc8, 0x0a, 0xe3, 0x8a, 0x22, 0x1d, 0x2b,
		0x8c, 0xb9, 0x72, 0x1b, 0x2b, 0x8c, 0xcb, 0xe6, 0x46, 0xb8, 0x55, 0x61, 0xfc, 0xe4, 0x40, 0x81,
		0xb1, 0xcc, 0x02, 0xe3, 0xf2, 0x7b, 0x39, 0x2c, 0x30, 0x66, 0x18, 0x2f, 0x2b, 0x1e, 0x2b, 0xae,
		0x4a, 0xcf, 0x53, 0xcd, 0xc5, 0x02, 0x63, 0xb1, 0xcc, 0xf2, 0x22, 0x93, 0xcd, 0x05, 0x30, 0xc5,
		0x8f, 0x8e, 0xe5, 0xc5, 0x59, 0xd2, 0x82, 0xe5, 0xc5, 0x15, 0x45, 0x52, 0x96, 0x17, 0x61, 0x06,
		0x82, 0x2c, 0x2f, 0xe6, 0x1f, 0x38, 0xcb, 0x8b, 0x8c, 0xce, 0x11, 0x72, 0x60, 0x79, 0xf1, 0x0d,
		0xf9, 0x3c, 0xa8, 0xd9, 0x5d, 0x8f, 0x86, 0x53, 0x2e, 0xd4, 0x17, 0x87, 0xb1, 0xb2, 0xc0, 0x38,
		0x4f, 0x78, 0x2c, 0x30, 0x2e, 0xb0, 0x35, 0xb2, 0xc0, 0x98, 0x11, 0xcc, 0xb1, 0xc0, 0x98, 0x39,
		0xb9, 0xb1, 0xc0, 0xb8, 0x6c, 0x7e, 0x84, 0x3b, 0x05, 0xc6, 0x86, 0xd2, 0x22, 0xbe, 0x73, 0xa0,
		0xc2, 0xb8, 0x05, 0x1c, 0xe2, 0xbe, 0xd4, 0x17, 0x83, 0xcd, 0xc2, 0xe8, 0xe7, 0xbc, 0xf3, 0x4e,
		0x3a, 0x59, 0x62, 0x2c, 0xb0, 0xea, 0x91, 0x71, 0x67, 0xc5, 0x12, 0x63, 0x06, 0xa9, 0xc6, 0x35,
		0x8c, 0x4c, 0xb7, 0x25, 0x49, 0x37, 0x5a, 0x85, 0x73, 0xbd, 0x58, 0x64, 0x9c, 0x25, 0x2d, 0x58,
		0x64, 0x5c, 0x51, 0x28, 0x65, 0x91, 0x11, 0x66, 0x2c, 0xc8, 0x22, 0x63, 0xfe, 0x81, 0xb3, 0xc8,
		0xc8, 0xe8, 0x1c, 0x21, 0x07, 0x16, 0x19, 0xdf, 0xc6, 0x31, 0x52, 0xb7, 0x64, 0x0b, 0xbf, 0xc4,
		0x98, 0x46, 0xca, 0x02, 0xe3, 0x3c, 0xe1, 0xb1, 0xc0, 0xb8, 0xc0, 0xb6, 0xc8, 0x02, 0x63, 0x46,
		0x20, 0xc7, 0x02, 0x63, 0xe6, 0xd4, 0xc6, 0x02, 0xe3, 0xb2, 0x79, 0x11, 0x0e, 0x15, 0x18, 0xa3,
		0xa8, 0x23, 0x85, 0x76, 0xa0, 0xc2, 0x58, 0x28, 0xb0, 0x09, 0xce, 0x86, 0x91, 0xb4, 0xc3, 0x16,
		0xfe, 0xa2, 0x1d, 0x46, 0x7a, 0x9a, 0x87, 0xa2, 0x68, 0x87, 0xd9, 0x00, 0x2b, 0xda, 0x61, 0x8c,
		0xce, 0xa3, 0x1d, 0xe6, 0x32, 0xcb, 0xf8, 0x51, 0xd7, 0xa8, 0x48, 0x8b, 0x0e, 0xbe, 0x1d, 0x96,
		0x46, 0x4a, 0x3b, 0x6c, 0x9e, 0xf0, 0x68, 0x87, 0x2d, 0xb2, 0x2d, 0xd2, 0x0e, 0xcb, 0x06, 0xe4,
		0x68, 0x87, 0x65, 0x4e, 0x6d, 0xb4, 0xc3, 0x96, 0xcd, 0x8b, 0xa0, 0x1d, 0xb6, 0x78, 0x19, 0xa7,
		0x1d, 0x36, 0xd3, 0x5d, 0xa3, 0x1d, 0x96, 0xc5, 0x8b, 0x76, 0x18, 0xe9, 0x69, 0x1e, 0x8a, 0xa2,
		0x1d, 0x66, 0x03, 0xac, 0x68, 0x87, 0x31, 0x3a, 0x8f, 0x76, 0x98, 0xcb, 0x2c, 0xe3, 0x77, 0x45,
		0x6c, 0x94, 0x0b, 0x6e, 0xd8, 0x38, 0x50, 0x9a, 0x61, 0xf3, 0x84, 0x47, 0x33, 0x6c, 0x81, 0x4d,
		0x91, 0x66, 0x58, 0x46, 0x18, 0x47, 0x33, 0x2c, 0x73, 0x66, 0xa3, 0x19, 0xb6, 0x6c, 0x4e, 0x04,
		0xcd, 0xb0, 0xc5, 0xcb, 0x38, 0xcd, 0xb0, 0x99, 0xee, 0x1a, 0xcd, 0xb0, 0x2c, 0x5e, 0x34, 0xc3,
		0x48, 0x4f, 0xf3, 0x50, 0x14, 0xcd, 0x30, 0x1b, 0x60, 0x45, 0x33, 0x8c, 0xd1, 0x79, 0x34, 0xc3,
		0x5c, 0x66, 0x19, 0xdf, 0xc4, 0x42, 0x27, 0x6a, 0xb4, 0x17, 0x0a, 0xb8, 0x1f, 0xf6, 0x24, 0x56,
		0x5a, 0x62, 0xf3, 0x84, 0x47, 0x4b, 0x6c, 0x81, 0xad, 0x91, 0x96, 0x58, 0x46, 0x30, 0x47, 0x4b,
		0x2c, 0x73, 0x72, 0xa3, 0x25, 0xb6, 0x6c, 0x7e, 0x04, 0x2d, 0xb1, 0xc5, 0xcb, 0x38, 0x2d, 0xb1,
		0x99, 0xee, 0x1a, 0x2d, 0xb1, 0x2c, 0x5e, 0xb4, 0xc4, 0x48, 0x4f, 0xf3, 0x50, 0x14, 0x2d, 0x31,
		0x1b, 0x60, 0x45, 0x4b, 0x8c, 0xd1, 0x79, 0xb4, 0xc4, 0x1c, 0x8d, 0x08, 0x8c, 0xac, 0xfc, 0x9a,
		0xd6, 0x91, 0x11, 0x46, 0x45, 0x98, 0x5b, 0xc6, 0xfb, 0x49, 0xf3, 0xa7, 0xbc, 0x12, 0x5d, 0x31,
		0x38, 0x19, 0xc0, 0x0f, 0xa3, 0xae, 0xd4, 0xcd, 0x81, 0xc5, 0x14, 0x68, 0x69, 0x6e, 0xa2, 0xf8,
		0x32, 0x50, 0x7d, 0x1a, 0xd4, 0x4d, 0x19, 0xbe, 0x7c, 0x23, 0x99, 0x78, 0x27, 0xec, 0x8e, 0xfa,
		0xc7, 0x24, 0xbd, 0x0a, 0x1b, 0x17, 0xdd, 0x30, 0x56, 0x8d, 0x50, 0xb4, 0x55, 0x90, 0x88, 0xb6,
		0x4a, 0xd2, 0xab, 0x50, 0x75, 0xaf, 0x2b, 0x41, 0x12, 0x1b, 0x19, 0x74, 0xa3, 0x8e, 0x6a, 0xde,
		0x85, 0x5a, 0xaa, 0x8b, 0x9f, 0x8d, 0x28, 0x4e, 0xd2, 0xab, 0x50, 0xb4, 0x7e, 0x0d, 0xc6, 0xb9,
		0x4a, 0x07, 0xdd, 0x28, 0x31, 0x61, 0x1c, 0xf5, 0x8c, 0x4c, 0x86, 0x5f, 0xc2, 0x9e, 0xbe, 0xd4,
		0xd1, 0x8d, 0x0e, 0x84, 0x31, 0xb1, 0x6a, 0x0c, 0xbe, 0x31, 0xf1, 0x56, 0x98, 0x18, 0x61, 0x24,
		0x56, 0x37, 0x8d, 0x93, 0x32, 0x18, 0x91, 0x80, 0x24, 0x6d, 0x9f, 0xbd, 0xd2, 0x43, 0xc3, 0x4c,
		0x7f, 0x34, 0x0e, 0x12, 0xd7, 0xbe, 0x4a, 0x4c, 0xcd, 0x98, 0x18, 0xaa, 0x0b, 0xf1, 0xbf, 0x29,
		0xbd, 0xdb, 0x91, 0x7d, 0x6c, 0x02, 0xdb, 0x37, 0xde, 0xff, 0x26, 0x6e, 0x9f, 0x44, 0x56, 0xf8,
		0x54, 0x2a, 0x55, 0xaa, 0xa5, 0xd2, 0x46, 0x75, 0xb3, 0xba, 0xb1, 0x55, 0x2e, 0x17, 0x2a, 0x05,
		0xa0, 0xdd, 0xf9, 0xfd, 0xc3, 0x3e, 0x61, 0xca, 0xd6, 0x76, 0xbf, 0xe9, 0xe9, 0x5e, 0xa7, 0x83,
		0x18, 0xda, 0x69, 0x22, 0x63, 0xa8, 0x8d, 0xf6, 0x51, 0x7a, 0x0c, 0x50, 0x79, 0x5f, 0x7e, 0x59,
		0x07, 0x1a, 0x12, 0xfb, 0x89, 0x89, 0x7b, 0x4d, 0xa3, 0x47, 0x16, 0xca, 0xc1, 0xf0, 0xee, 0xed,
		0x8d, 0x6e, 0x5e, 0x7d, 0x3c, 0x66, 0xac, 0x6f, 0x5f, 0x74, 0xeb, 0xc7, 0xaa, 0x51, 0xaf, 0xb5,
		0xd5, 0x89, 0x68, 0xab, 0xfa, 0x5e, 0xf7, 0xba, 0x72, 0x12, 0x1b, 0x79, 0x34, 0xb8, 0x4b, 0xf5,
		0x83, 0xd1, 0xbd, 0xa9, 0xd7, 0x5a, 0xbf, 0x8e, 0x55, 0x63, 0x4f, 0x1f, 0x45, 0x89, 0xa9, 0x1f,
		0xf7, 0xef, 0x48, 0xfd, 0x74, 0xf8, 0xe7, 0xd7, 0xd2, 0xbf, 0xfe, 0x03, 0xe1, 0xc1, 0x7e, 0x04,
		0x96, 0x3b, 0x21, 0xb4, 0xce, 0x67, 0xd9, 0x3a, 0x1d, 0xbb, 0x49, 0x66, 0xaf, 0x69, 0xdb, 0xf9,
		0x64, 0x4b, 0xc9, 0x34, 0x66, 0xfe, 0x7e, 0xab, 0x0d, 0x54, 0xcb, 0x93, 0xba, 0xd5, 0x8d, 0x94,
		0x36, 0x5e, 0x33, 0xea, 0x44, 0xb1, 0x25, 0x95, 0xc1, 0x00, 0x7e, 0x1c, 0xc0, 0x87, 0x06, 0x7a,
		0x20, 0x80, 0x07, 0x02, 0x76, 0x5b, 0xe9, 0x0c, 0xa2, 0x89, 0x4e, 0x6b, 0xa1, 0x45, 0xb6, 0xce,
		0x9e, 0xa5, 0xed, 0xa8, 0x7a, 0xfe, 0x9a, 0x9a, 0xef, 0x27, 0xe6, 0x9c, 0xee, 0xb6, 0xd3, 0xdc,
		0xd1, 0xf4, 0xce, 0xb7, 0xed, 0xe7, 0xd7, 0x02, 0xf3, 0xf9, 0xa4, 0x9c, 0xda, 0xb8, 0xad, 0xb6,
		0xed, 0x5a, 0x9b, 0xce, 0x51, 0xa5, 0xb2, 0x54, 0xa5, 0x7c, 0x72, 0x32, 0xfb, 0x0c, 0xc9, 0x21,
		0x3b, 0xfc, 0xa7, 0x2d, 0x20, 0xce, 0x6f, 0x4e, 0x4f, 0x3a, 0x3b, 0xea, 0xc5, 0xe7, 0xe7, 0xd4,
		0x1f, 0x8c, 0xa7, 0x32, 0xe6, 0xf4, 0x71, 0x79, 0xaf, 0x30, 0xb0, 0xb1, 0x62, 0xc0, 0xee, 0x0a,
		0x00, 0x5b, 0x73, 0xd2, 0xac, 0xcf, 0xd0, 0xb7, 0x3e, 0x41, 0xcc, 0xfa, 0x0c, 0xfa, 0xe5, 0x22,
		0x95, 0x1d, 0x95, 0xaf, 0x43, 0xe5, 0x8f, 0x30, 0x36, 0xf7, 0xc4, 0x19, 0x77, 0x17, 0xa3, 0xcf,
		0xcf, 0xb9, 0xd1, 0xe6, 0x2b, 0x00, 0xd6, 0x84, 0xc0, 0xa6, 0x20, 0x60, 0x08, 0x83, 0x6d, 0x81,
		0x80, 0x11, 0x0a, 0x18, 0xc1, 0x80, 0x11, 0x8e, 0xd5, 0xb0, 0x75, 0xf2, 0x16, 0x94, 0xe7, 0xc2,
		0x62, 0x2f, 0xdf, 0x9e, 0xe9, 0x8b, 0xad, 0x5c, 0xb3, 0x23, 0x33, 0xd6, 0xe5, 0x06, 0x41, 0x76,
		0xb0, 0xe4, 0x07, 0x45, 0x86, 0xe0, 0xe4, 0x08, 0x4e, 0x96, 0xe0, 0xe4, 0xc9, 0x8e, 0x4c, 0x59,
		0x92, 0x2b, 0xeb, 0xb2, 0x95, 0x06, 0x30, 0x9c, 0xac, 0x60, 0x3d, 0x4f, 0xc7, 0xbd, 0x97, 0xcd,
		0xb9, 0x13, 0x2f, 0xe5, 0xcc, 0xf2, 0xbc, 0x64, 0x98, 0x0d, 0x3b, 0x90, 0x36, 0xe6, 0xc0, 0xdc,
		0x80, 0x03, 0x6d, 0xa9, 0x28, 0xec, 0x86, 0x1a, 0xb0, 0xeb, 0x3c, 0x61, 0x37, 0xc8, 0x58, 0xed,
		0x79, 0xaa, 0x30, 0x1b, 0x5b, 0xa4, 0xfd, 0x4e, 0x47, 0x8a, 0x76, 0x2c, 0xdb, 0x08, 0x9d, 0xce,
		0x78, 0xd4, 0x55, 0x05, 0x88, 0xe5, 0x68, 0x54, 0xfb, 0xfd, 0xf8, 0x71, 0xb8, 0x6a, 0x2e, 0x1c,
		0x0a, 0xf9, 0xaa, 0xce, 0x83, 0xb5, 0x38, 0xf2, 0x1a, 0x4f, 0x43, 0xc5, 0x61, 0xba, 0x34, 0x22,
		0x62, 0x1d, 0xb1, 0x8e, 0x58, 0x47, 0xac, 0x23, 0xd6, 0x11, 0xeb, 0x88, 0x75, 0x4e, 0x62, 0x5d,
		0xaa, 0xe5, 0x24, 0xbb, 0xdc, 0x1f, 0xc6, 0x68, 0xa1, 0x11, 0x0e, 0xd8, 0x8d, 0x03, 0x22, 0xd7,
		0x91, 0xeb, 0xc8, 0x75, 0xe4, 0x3a, 0x72, 0x1d, 0xb9, 0x8e, 0x5c, 0xe7, 0x24, 0xd7, 0x8d, 0xa5,
		0x9c, 0x58, 0x97, 0xfb, 0xb3, 0x18, 0xee, 0x32, 0x06, 0x03, 0x75, 0xc3, 0x70, 0x30, 0x90, 0xae,
		0x40, 0xa4, 0x23, 0xd2, 0x11, 0xe9, 0x88, 0x74, 0x44, 0x3a, 0x5b, 0x4f, 0xc5, 0xf6, 0x04, 0xa5,
		0x34, 0x90, 0xc1, 0xd6, 0x8a, 0x4a, 0xb7, 0x24, 0xce, 0x09, 0x31, 0x8f, 0xab, 0xfb, 0x1e, 0x63,
		0x43, 0xd9, 0x8f, 0x12, 0xea, 0x2c, 0x22, 0xb8, 0xb3, 0x87, 0x10, 0xcf, 0x1a, 0xc2, 0x3e, 0x5b,
		0x08, 0x75, 0x37, 0x7c, 0xf8, 0xb3, 0x83, 0xe0, 0xb7, 0xb6, 0x87, 0x3f, 0x1b, 0x88, 0x3b, 0x0d,
		0x43, 0x7a, 0x2c, 0xc0, 0x5e, 0x0b, 0xa2, 0xe7, 0x32, 0xcd, 0x7b, 0xf9, 0x97, 0xff, 0x06, 0x48,
		0x91, 0x48, 0x93, 0xa4, 0x57, 0x23, 0xa7, 0x66, 0x88, 0x19, 0xdc, 0xc5, 0x13, 0x25, 0x29, 0x41,
		0x66, 0xd0, 0x4f, 0x64, 0x23, 0xc2, 0x4c, 0x7a, 0xe2, 0x28, 0x71, 0x94, 0x38, 0x4a, 0x1c, 0x25,
		0x8e, 0x12, 0x47, 0x73, 0xef, 0xb7, 0x7a, 0x4a, 0x9b, 0xcd, 0x22, 0x20, 0x8d, 0x22, 0xc1, 0xe8,
		0xb1, 0xd0, 0x17, 0x78, 0xc7, 0x20, 0x02, 0x9e, 0x76, 0xf4, 0x4d, 0x69, 0xdc, 0x33, 0xd2, 0xff,
		0x12, 0x9d, 0x9e, 0x04, 0x3e, 0xd9, 0xfb, 0x4b, 0x2c, 0x9a, 0x46, 0x45, 0x7a, 0x47, 0x5d, 0x28,
		0xb4, 0x23, 0x5f, 0x9e, 0xf7, 0x1d, 0xf2, 0x42, 0x8c, 0x8e, 0xc3, 0xc7, 0x39, 0xb1, 0x04, 0xb0,
		0xdb, 0x7f, 0x9e, 0x1a, 0xe2, 0x16, 0x3f, 0x35, 0x4a, 0xc5, 0xad, 0xd2, 0x56, 0xa5, 0x5a, 0xdc,
		0x2a, 0x33, 0x47, 0x96, 0x3d, 0x47, 0x78, 0x62, 0xdb, 0xd4, 0xd7, 0x39, 0x4d, 0x23, 0x94, 0x3e,
		0xd4, 0x6f, 0x46, 0x57, 0x57, 0x3d, 0xad, 0xcc, 0x1d, 0x6a, 0x49, 0xf3, 0x65, 0x80, 0x34, 0x92,
		0xa6, 0x85, 0x43, 0x23, 0x69, 0x86, 0x26, 0x45, 0x23, 0x69, 0xa6, 0x96, 0x4e, 0x23, 0xe9, 0x9d,
		0x01, 0xd2, 0x48, 0x72, 0x68, 0x44, 0xc1, 0xba, 0xe6, 0x1c, 0x32, 0xe8, 0x60, 0x5d, 0x73, 0xcc,
		0x15, 0x4a, 0x26, 0xe9, 0xf5, 0x1d, 0x4b, 0x9b, 0x98, 0x94, 0x0a, 0xb3, 0x97, 0xc4, 0x44, 0x4e,
		0x82, 0xec, 0x29, 0x41, 0x2e, 0x25, 0x97, 0x92, 0x4b, 0xc9, 0xa5, 0xe4, 0x52, 0x72, 0x69, 0xee,
		0xfd, 0x96, 0xea, 0x06, 0xa2, 0xd5, 0x8a, 0x65, 0x92, 0x20, 0xa2, 0xe9, 0x16, 0x50, 0x4c, 0xa3,
		0x67, 0xc8, 0x22, 0xe7, 0x9b, 0x5b, 0xd6, 0x75, 0x09, 0xb0, 0x6d, 0x4d, 0xb4, 0xb1, 0x4f, 0x80,
		0xb1, 0x1d, 0x09, 0x63, 0x64, 0xac, 0xe1, 0x9a, 0x5b, 0x1a, 0xe0, 0xda, 0xd9, 0x46, 0xb0, 0x75,
		0x7e, 0x7f, 0x56, 0x08, 0xb6, 0xce, 0x87, 0x97, 0x85, 0xc1, 0x97, 0xdf, 0xc5, 0x87, 0xfb, 0xe2,
		0xd9, 0x46, 0x50, 0x1a, 0xbd, 0x5b, 0x2c, 0x9f, 0x6d, 0x04, 0xe5, 0xf3, 0xf5, 0xb5, 0x1f, 0x3f,
		0x3e, 0xce, 0xfa, 0x3b, 0xeb, 0xbf, 0x37, 0x1f, 0x7c, 0xb8, 0x3f, 0xff, 0x1c, 0xb1, 0xb9, 0x1c,
		0x9e, 0xec, 0xfd, 0x0d, 0xdf, 0x66, 0xfe, 0x59, 0xcb, 0xab, 0xd5, 0xac, 0xff, 0x0f, 0xb0, 0xdd,
		0x60, 0x15, 0x14, 0xff, 0xa0, 0x8c, 0xbd, 0x59, 0xc6, 0x2a, 0x94, 0xb1, 0x65, 0x95, 0xb1, 0x41,
		0xef, 0x22, 0x82, 0x76, 0x2d, 0xf8, 0x72, 0xfe, 0xbb, 0xf0, 0x47, 0xe9, 0xe1, 0xf3, 0xfa, 0xef,
		0xea, 0xc3, 0xcb, 0x37, 0xef, 0xa7, 0xfd, 0x58, 0xe1, 0x8f, 0xea, 0xc3, 0xe7, 0x57, 0xbe, 0x53,
		0x79, 0xf8, 0xfc, 0xc6, 0x7f, 0xa3, 0xfc, 0xb0, 0x36, 0xf1, 0xa3, 0xfd, 0xf7, 0x8b, 0xaf, 0xfd,
		0x42, 0xe9, 0x95, 0x5f, 0xd8, 0x7c, 0xed, 0x17, 0x36, 0x5f, 0xf9, 0x85, 0x57, 0x43, 0x2a, 0xbe,
		0xf2, 0x0b, 0xe5, 0x87, 0xfb, 0x89, 0x9f, 0x5f, 0x9b, 0xfe, 0xa3, 0x95, 0x87, 0xf5, 0xfb, 0xd7,
		0xbe, 0x57, 0x7d, 0xb8, 0xff, 0xbc, 0xbe, 0x4e, 0x61, 0x5f, 0x3a, 0x61, 0x67, 0x1a, 0xe5, 0x9f,
		0x46, 0x04, 0x1d, 0x27, 0x7c, 0x28, 0x8f, 0x33, 0xa7, 0x90, 0xd0, 0xd3, 0x97, 0xb7, 0x26, 0x80,
		0x9f, 0x3d, 0x35, 0x2d, 0x48, 0x56, 0xaa, 0xa6, 0x85, 0xc3, 0x4a, 0xd5, 0x0c, 0xcd, 0x8a, 0x95,
		0xaa, 0x99, 0x5a, 0x3a, 0x2b, 0x55, 0xef, 0x0c, 0x90, 0x95, 0x2a, 0x87, 0x0c, 0x19, 0xce, 0xa0,
		0x9a, 0xc7, 0x7b, 0x71, 0x6f, 0x06, 0xd5, 0x53, 0xb6, 0x50, 0x32, 0x79, 0xf6, 0xff, 0x9c, 0x49,
		0x05, 0x4a, 0xad, 0x4a, 0x5f, 0x8b, 0x8e, 0x6a, 0x05, 0xb1, 0x14, 0x49, 0xa4, 0xf1, 0x80, 0xf5,
		0x45, 0x7c, 0x64, 0x55, 0xb2, 0x2a, 0x59, 0x95, 0xac, 0x4a, 0x56, 0x25, 0xab, 0xae, 0x18, 0xab,
		0xaa, 0x96, 0xd4, 0x46, 0x99, 0x3b, 0x50, 0x5e, 0x05, 0x5a, 0xbe, 0xec, 0xef, 0x8d, 0x6e, 0xd5,
		0xb6, 0x48, 0x00, 0xbb, 0xd4, 0xf1, 0x03, 0xdd, 0x3b, 0xf8, 0xab, 0xb6, 0xbf, 0xb7, 0x53, 0x3f,
		0x3e, 0x3c, 0xfd, 0xbe, 0x5b, 0x3f, 0xde, 0xad, 0x9d, 0x1c, 0x1e, 0xa0, 0xf5, 0xae, 0x83, 0x55,
		0xea, 0x09, 0x64, 0x99, 0x08, 0x74, 0x5d, 0xff, 0xcb, 0xa7, 0x5b, 0x3b, 0xa9, 0xef, 0x1f, 0x1e,
		0x1e, 0xf9, 0xdc, 0xb1, 0x61, 0x69, 0x1e, 0xe9, 0x9f, 0xfb, 0xa7, 0x27, 0xdf, 0x77, 0x8f, 0xf9,
		0x5c, 0x97, 0xed, 0xb9, 0x1e, 0x1e, 0x7c, 0xd9, 0xdd, 0xe1, 0x13, 0x5d, 0x9e, 0x27, 0x7a, 0x78,
		0xbc, 0xf7, 0x75, 0xef, 0xa0, 0xf6, 0xfd, 0xf0, 0xd8, 0xe7, 0x6e, 0x20, 0xff, 0xfa, 0x3a, 0xe7,
		0x78, 0x04, 0x2c, 0x0a, 0x04, 0x77, 0xb0, 0x23, 0x12, 0x13, 0x5c, 0x45, 0x2d, 0xd5, 0x56, 0xb2,
		0x85, 0x67, 0x0e, 0x3e, 0x0f, 0x8f, 0xde, 0xe0, 0xb4, 0x70, 0xe8, 0x0d, 0xce, 0xd0, 0xa0, 0xe8,
		0x0d, 0xce, 0xd4, 0xd2, 0xe9, 0x0d, 0xbe, 0x33, 0x40, 0x7a, 0x83, 0x0e, 0xf1, 0x2f, 0xb0, 0x37,
		0x68, 0xd4, 0x95, 0x34, 0xaa, 0x79, 0x99, 0x54, 0x4a, 0x80, 0xde, 0x20, 0xd0, 0x32, 0x02, 0xff,
		0x54, 0x0f, 0x37, 0x31, 0xf4, 0xb5, 0xd0, 0x51, 0x22, 0x9b, 0x91, 0x6e, 0x41, 0xad, 0x52, 0xe5,
		0xbe, 0xb7, 0x6f, 0xbc, 0x51, 0xdc, 0xf7, 0xf6, 0x1d, 0xf1, 0x71, 0x4f, 0xcf, 0x25, 0xf6, 0x66,
		0xdc, 0xd8, 0xf7, 0xb6, 0xf0, 0xa9, 0x54, 0xaa, 0x54, 0x4b, 0xa5, 0x8d, 0xea, 0x66, 0x75, 0x63,
		0xab, 0x5c, 0x2e, 0x54, 0x0a, 0xdc, 0x01, 0x77, 0xe9, 0xb3, 0x85, 0xeb, 0x38, 0xa6, 0xbe, 0xb8,
		0x8e, 0x03, 0xa6, 0x37, 0xf5, 0xc7, 0x27, 0x8e, 0xc3, 0xb9, 0x5d, 0xe3, 0xc0, 0x40, 0x46, 0x43,
		0x3b, 0xb2, 0x2d, 0x7a, 0x1d, 0x03, 0xc5, 0xaa, 0xfe, 0x06, 0xc6, 0xd8, 0xf9, 0x9c, 0x5e, 0xe4,
		0xb4, 0x70, 0xe8, 0x45, 0xce, 0x90, 0xee, 0xf4, 0x22, 0x67, 0x6a, 0xe9, 0xf4, 0x22, 0xdf, 0x19,
		0x20, 0xbd, 0x48, 0x87, 0xc6, 0x7b, 0x3c, 0xde, 0x6a, 0x76, 0x15, 0xe4, 0xf1, 0x56, 0xff, 0xf5,
		0xa2, 0xcd, 0x37, 0x9f, 0x97, 0x41, 0x9b, 0x6f, 0xe9, 0x8d, 0x0b, 0xda, 0x7c, 0xf3, 0xa5, 0x06,
		0x8f, 0xb7, 0x5a, 0x9d, 0x1c, 0xa1, 0xb9, 0x37, 0xdd, 0x0c, 0xa0, 0xb9, 0x87, 0xd2, 0x87, 0xfa,
		0xa3, 0xc5, 0xa4, 0x51, 0xcf, 0x48, 0x3c, 0x83, 0xef, 0x69, 0x70, 0x34, 0x90, 0xa6, 0x85, 0x43,
		0x03, 0x69, 0x86, 0xe6, 0x44, 0x03, 0x69, 0xa6, 0x96, 0x4e, 0x03, 0xe9, 0x9d, 0x01, 0xd2, 0x40,
		0x72, 0x68, 0x24, 0x01, 0x6c, 0x20, 0x35, 0xa2, 0xa8, 0x23, 0x85, 0x46, 0x5c, 0xe4, 0x5a, 0x20,
		0xca, 0x01, 0x44, 0x60, 0x39, 0x85, 0xfc, 0x9a, 0xd6, 0x91, 0x11, 0xfd, 0x41, 0x23, 0x44, 0x02,
		0xf9, 0x49, 0xf3, 0xa7, 0xbc, 0x12, 0xdd, 0xd1, 0x26, 0x3d, 0x61, 0xd4, 0x95, 0xba, 0x39, 0x00,
		0xa5, 0x40, 0x4b, 0x73, 0x13, 0xc5, 0x97, 0x81, 0xd2, 0x89, 0x11, 0xba, 0x29, 0xc3, 0x97, 0x6f,
		0x24, 0x13, 0xef, 0x84, 0xdd, 0x38, 0x32, 0x51, 0x33, 0xea, 0x24, 0xe9, 0x55, 0xd8, 0xb8, 0xe8,
		0x86, 0xb1, 0x6a, 0x84, 0xa2, 0xad, 0x82, 0x44, 0xb4, 0x55, 0x92, 0x5e, 0x85, 0x83, 0xad, 0xac,
		0x93, 0xd8, 0xc8, 0xa0, 0x1b, 0x75, 0x54, 0xf3, 0x2e, 0xd4, 0x52, 0x5d, 0xfc, 0x6c, 0x44, 0x71,
		0x92, 0x5e, 0x85, 0xa2, 0xf5, 0x6b, 0xa0, 0x06, 0x4a, 0x07, 0xdd, 0x58, 0x86, 0x03, 0xc0, 0x4d,
		0x86, 0x5f, 0x86, 0xdb, 0x02, 0xd9, 0xd5, 0x08, 0x7b, 0x8d, 0xd9, 0x62, 0x43, 0xf6, 0x7b, 0xfa,
		0x52, 0x47, 0x37, 0x3a, 0x10, 0xc6, 0xc4, 0xaa, 0xd1, 0x7f, 0x22, 0xd6, 0x1b, 0xf3, 0x63, 0x09,
		0x61, 0x32, 0x36, 0xcb, 0x29, 0x3f, 0x16, 0x00, 0xcb, 0x61, 0xa0, 0x8c, 0x7f, 0x90, 0xc6, 0x3d,
		0x98, 0xe3, 0x1d, 0xb4, 0x71, 0x0e, 0xec, 0xf8, 0x06, 0x76, 0x5c, 0x03, 0x3b, 0x9e, 0x59, 0x6d,
		0xf8, 0xda, 0x51, 0x31, 0x46, 0xb7, 0x33, 0x21, 0x52, 0x78, 0x86, 0xe2, 0x64, 0x88, 0x58, 0xb6,
		0x62, 0x81, 0xb6, 0x22, 0xbc, 0xbc, 0x62, 0xcb, 0x2c, 0xaa, 0xdc, 0xc2, 0xcb, 0x2e, 0xbc, 0xfc,
		0xc2, 0xcb, 0x30, 0x8e, 0x1b, 0xe3, 0x01, 0xd9, 0x8a, 0x28, 0xf2, 0x9c, 0x06, 0xd4, 0xd7, 0xbe,
		0xc0, 0xa0, 0x99, 0x9d, 0xcf, 0x7a, 0xd4, 0xc7, 0x10, 0xc1, 0x52, 0x0f, 0xab, 0xfa, 0x07, 0x2b,
		0xd7, 0xc8, 0xb2, 0xed, 0x86, 0x7c, 0xa3, 0xcb, 0xb8, 0x33, 0x72, 0xee, 0x8c, 0xac, 0x3b, 0x23,
		0xef, 0x58, 0x32, 0x0f, 0x26, 0xf7, 0xe9, 0x53, 0xfc, 0x8e, 0x28, 0xb0, 0x1e, 0xf6, 0x51, 0x0f,
		0x13, 0xa3, 0xe1, 0x2a, 0xe6, 0x71, 0x9b, 0xe3, 0xa3, 0x1f, 0x86, 0x27, 0x38, 0x3c, 0xc2, 0x0a,
		0xa7, 0xfb, 0xa1, 0xa7, 0xa6, 0x3f, 0xac, 0xae, 0xc1, 0x82, 0xef, 0x30, 0x3c, 0x4c, 0xe8, 0x2d,
		0x10, 0x7a, 0x09, 0xbd, 0x84, 0x5e, 0x42, 0x2f, 0xa1, 0x97, 0xca, 0x3a, 0xfd, 0x29, 0xa2, 0x79,
		0x5d, 0x69, 0x60, 0x03, 0x46, 0xeb, 0x48, 0xe0, 0x95, 0x73, 0xcf, 0xac, 0xaf, 0x7e, 0xa4, 0xa0,
		0x89, 0x8a, 0xe9, 0x80, 0xc1, 0x43, 0x81, 0x0b, 0x70, 0xe0, 0x16, 0x24, 0xb8, 0x02, 0x0b, 0xce,
		0x41, 0x83, 0x73, 0xf0, 0xe0, 0x1c, 0x44, 0x60, 0xc2, 0x04, 0x28, 0x54, 0xa4, 0x4f, 0x17, 0xd6,
		0x51, 0x9b, 0xe8, 0x37, 0x7b, 0x4a, 0x9b, 0x42, 0x05, 0xb9, 0xcf, 0x1c, 0xa9, 0x78, 0x05, 0x38,
		0x44, 0xcc, 0x0d, 0x21, 0x5e, 0xbe, 0xb0, 0x35, 0xc7, 0x43, 0xdf, 0x30, 0x62, 0x22, 0x58, 0xf0,
		0x0d, 0x24, 0x26, 0xe2, 0x75, 0x65, 0xb1, 0xfc, 0x64, 0x5f, 0x85, 0xbe, 0x78, 0xde, 0x11, 0x59,
		0x7a, 0x9e, 0x6a, 0xe2, 0xd6, 0xbd, 0x54, 0xab, 0x94, 0xcb, 0x9b, 0x65, 0xa6, 0x1b, 0xd3, 0xcd,
		0x01, 0x36, 0xc5, 0x8f, 0xee, 0x9c, 0x4c, 0x3f, 0x43, 0x5a, 0xc8, 0x5b, 0x13, 0x8b, 0xa0, 0xa7,
		0x13, 0x23, 0x1a, 0x1d, 0x70, 0xba, 0x8f, 0x65, 0x5b, 0xc6, 0x52, 0x37, 0x09, 0xa5, 0x0b, 0x1c,
		0x2a, 0x1d, 0x7f, 0xf9, 0xd3, 0x2b, 0x15, 0xab, 0x05, 0x2f, 0xf0, 0x6a, 0xde, 0x76, 0x14, 0xb7,
		0x64, 0xec, 0x7d, 0x15, 0x46, 0xde, 0x88, 0x3b, 0xef, 0x68, 0xb4, 0xda, 0xd2, 0x2b, 0x79, 0x6b,
		0xdb, 0x5f, 0x8f, 0x82, 0xd2, 0xba, 0xef, 0x00, 0x03, 0x38, 0x62, 0x47, 0x3d, 0x0e, 0x05, 0x1f,
		0x6d, 0xa9, 0xc7, 0x16, 0xee, 0x88, 0xaa, 0xba, 0xe6, 0x50, 0xa5, 0x81, 0x3f, 0x75, 0xaa, 0x66,
		0x4c, 0x01, 0x92, 0x03, 0xc9, 0x61, 0xa5, 0xef, 0x17, 0xe2, 0xce, 0x83, 0xb8, 0x73, 0xea, 0x27,
		0x14, 0x17, 0x75, 0x6e, 0xfd, 0xa3, 0x20, 0xb1, 0xc2, 0xf8, 0xae, 0x00, 0x59, 0x61, 0x5c, 0x51,
		0xa4, 0x63, 0x85, 0x31, 0x57, 0x6e, 0x63, 0x85, 0x71, 0xd9, 0xdc, 0x08, 0xb7, 0x2a, 0x8c, 0x9f,
		0x1c, 0x28, 0x30, 0x96, 0x59, 0x60, 0x5c, 0x7e, 0x2f, 0x87, 0x05, 0xc6, 0x0c, 0xe3, 0x65, 0xc5,
		0x63, 0xc5, 0x55, 0xe9, 0x79, 0xaa, 0xb9, 0x58, 0x60, 0x2c, 0x96, 0x59, 0x5e, 0x64, 0xb2, 0xb9,
		0x00, 0xa6, 0xf8, 0xd1, 0xb1, 0xbc, 0x38, 0x4b, 0x5a, 0xb0, 0xbc, 0xb8, 0xa2, 0x48, 0xca, 0xf2,
		0x22, 0xcc, 0x40, 0x90, 0xe5, 0xc5, 0xfc, 0x03, 0x67, 0x79, 0x91, 0xd1, 0x39, 0x42, 0x0e, 0x2c,
		0x2f, 0xbe, 0x21, 0x9f, 0x07, 0x35, 0xbb, 0xeb, 0xd1, 0x70, 0xca, 0x85, 0xfa, 0xe2, 0x30, 0x56,
		0x16, 0x18, 0xe7, 0x09, 0x8f, 0x05, 0xc6, 0x05, 0xb6, 0x46, 0x16, 0x18, 0x33, 0x82, 0x39, 0x16,
		0x18, 0x33, 0x27, 0x37, 0x16, 0x18, 0x97, 0xcd, 0x8f, 0x70, 0xa7, 0xc0, 0xd8, 0x50, 0x5a, 0xc4,
		0x77, 0x0e, 0x54, 0x18, 0xb7, 0x80, 0x43, 0xdc, 0x97, 0xfa, 0x62, 0xb0, 0x59, 0x18, 0xfd, 0x9c,
		0x77, 0xde, 0x49, 0x27, 0x4b, 0x8c, 0x05, 0x56, 0x3d, 0x32, 0xee, 0xac, 0x58, 0x62, 0xcc, 0x20,
		0xd5, 0xb8, 0x86, 0x91, 0xe9, 0xb6, 0x24, 0xe9, 0x46, 0xab, 0x70, 0xae, 0x17, 0x8b, 0x8c, 0xb3,
		0xa4, 0x05, 0x8b, 0x8c, 0x2b, 0x0a, 0xa5, 0x2c, 0x32, 0xc2, 0x8c, 0x05, 0x59, 0x64, 0xcc, 0x3f,
		0x70, 0x16, 0x19, 0x19, 0x9d, 0x23, 0xe4, 0xc0, 0x22, 0xe3, 0xdb, 0x38, 0x46, 0xea, 0x96, 0x6c,
		0xe1, 0x97, 0x18, 0xd3, 0x48, 0x59, 0x60, 0x9c, 0x27, 0x3c, 0x16, 0x18, 0x17, 0xd8, 0x16, 0x59,
		0x60, 0xcc, 0x08, 0xe4, 0x58, 0x60, 0xcc, 0x9c, 0xda, 0x58, 0x60, 0x5c, 0x36, 0x2f, 0xc2, 0xa1,
		0x02, 0x63, 0x14, 0x75, 0xa4, 0xd0, 0x0e, 0x54, 0x18, 0x0b, 0x05, 0x36, 0xc1, 0xd9, 0x30, 0x92,
		0x76, 0xd8, 0xc2, 0x5f, 0xb4, 0xc3, 0x48, 0x4f, 0xf3, 0x50, 0x14, 0xed, 0x30, 0x1b, 0x60, 0x45,
		0x3b, 0x8c, 0xd1, 0x79, 0xb4, 0xc3, 0x5c, 0x66, 0x19, 0x3f, 0xea, 0x1a, 0x15, 0x69, 0xd1, 0xc1,
		0xb7, 0xc3, 0xd2, 0x48, 0x69, 0x87, 0xcd, 0x13, 0x1e, 0xed, 0xb0, 0x45, 0xb6, 0x45, 0xda, 0x61,
		0xd9, 0x80, 0x1c, 0xed, 0xb0, 0xcc, 0xa9, 0x8d, 0x76, 0xd8, 0xb2, 0x79, 0x11, 0xb4, 0xc3, 0x16,
		0x2f, 0xe3, 0xb4, 0xc3, 0x66, 0xba, 0x6b, 0xb4, 0xc3, 0xb2, 0x78, 0xd1, 0x0e, 0x23, 0x3d, 0xcd,
		0x43, 0x51, 0xb4, 0xc3, 0x6c, 0x80, 0x15, 0xed, 0x30, 0x46, 0xe7, 0xd1, 0x0e, 0x73, 0x99, 0x65,
		0xfc, 0xae, 0x88, 0x8d, 0x72, 0xc1, 0x0d, 0x1b, 0x07, 0x4a, 0x33, 0x6c, 0x9e, 0xf0, 0x68, 0x86,
		0x2d, 0xb0, 0x29, 0xd2, 0x0c, 0xcb, 0x08, 0xe3, 0x68, 0x86, 0x65, 0xce, 0x6c, 0x34, 0xc3, 0x96,
		0xcd, 0x89, 0xa0, 0x19, 0xb6, 0x78, 0x19, 0xa7, 0x19, 0x36, 0xd3, 0x5d, 0xa3, 0x19, 0x96, 0xc5,
		0x8b, 0x66, 0x18, 0xe9, 0x69, 0x1e, 0x8a, 0xa2, 0x19, 0x66, 0x03, 0xac, 0x68, 0x86, 0x31, 0x3a,
		0x8f, 0x66, 0x98, 0xcb, 0x2c, 0xe3, 0x9b, 0x58, 0xe8, 0x44, 0x8d, 0xf6, 0x42, 0x01, 0xf7, 0xc3,
		0x9e, 0xc4, 0x4a, 0x4b, 0x6c, 0x9e, 0xf0, 0x68, 0x89, 0x2d, 0xb0, 0x35, 0xd2, 0x12, 0xcb, 0x08,
		0xe6, 0x68, 0x89, 0x65, 0x4e, 0x6e, 0xb4, 0xc4, 0x96, 0xcd, 0x8f, 0xa0, 0x25, 0xb6, 0x78, 0x19,
		0xa7, 0x25, 0x36, 0xd3, 0x5d, 0xa3, 0x25, 0x96, 0xc5, 0x8b, 0x96, 0x18, 0xe9, 0x69, 0x1e, 0x8a,
		0xa2, 0x25, 0x66, 0x03, 0xac, 0x68, 0x89, 0x31, 0x3a, 0x8f, 0x96, 0x98, 0xa3, 0x11, 0x81, 0x91,
		0x95, 0x5f, 0xd3, 0x3a, 0x32, 0xc2, 0xa8, 0x08, 0x73, 0xcb, 0x78, 0x3f, 0x69, 0xfe, 0x94, 0x57,
		0xa2, 0x2b, 0x06, 0x27, 0x03, 0xf8, 0x61, 0xd4, 0x95, 0xba, 0x39, 0xb0, 0x98, 0x02, 0x2d, 0xcd,
		0x4d, 0x14, 0x5f, 0x06, 0xaa, 0x4f, 0x83, 0xba, 0x29, 0xc3, 0x97, 0x6f, 0x24, 0x13, 0xef, 0x84,
		0xdd, 0x51, 0xff, 0x98, 0xa4, 0x57, 0x61, 0xe3, 0xa2, 0x1b, 0xc6, 0xaa, 0x11, 0x8a, 0xb6, 0x0a,
		0x12, 0xd1, 0x56, 0x49, 0x7a, 0x15, 0xaa, 0xee, 0x75, 0x25, 0x48, 0x62, 0x23, 0x83, 0x6e, 0xd4,
		0x51, 0xcd, 0xbb, 0x50, 0x4b, 0x75, 0xf1, 0xb3, 0x11, 0xc5, 0x49, 0x7a, 0x15, 0x8a, 0xd6, 0xaf,
		0xc1, 0x38, 0x57, 0xe9, 0xa0, 0x1b, 0xcb, 0x30, 0x8e, 0x7a, 0x46, 0x26, 0xc3, 0x2f, 0x61, 0x4f,
		0x5f, 0xea, 0xe8, 0x46, 0x07, 0xc2, 0x98, 0x58, 0x35, 0x06, 0xdf, 0x98, 0x78, 0x2b, 0x4c, 0x8c,
		0x30, 0x12, 0xab, 0x97, 0xc6, 0xc9, 0x18, 0x8c, 0x48, 0x40, 0x72, 0xb6, 0x8f, 0x5e, 0xe9, 0x99,
		0x61, 0xa6, 0x3f, 0x18, 0x07, 0x89, 0x6b, 0x5f, 0x25, 0xa6, 0x66, 0x4c, 0x0c, 0xd5, 0x83, 0xf8,
		0xdf, 0x94, 0xde, 0xed, 0xc8, 0x3e, 0x35, 0x81, 0x6d, 0x1b, 0xef, 0x7f, 0x13, 0xb7, 0x4f, 0x22,
		0x2b, 0x7c, 0x2a, 0x95, 0x2a, 0xd5, 0x52, 0x69, 0xa3, 0xba, 0x59, 0xdd, 0xd8, 0x2a, 0x97, 0x0b,
		0x95, 0x02, 0xd0, 0xe6, 0xfc, 0xfe, 0x61, 0x1f, 0x30, 0x65, 0x6b, 0xbb, 0xdf, 0xf4, 0x74, 0xaf,
		0xd3, 0x41, 0x0c, 0xed, 0x34, 0x91, 0x31, 0xd4, 0x3e, 0xfb, 0x28, 0x3d, 0x06, 0xa8, 0xba, 0x2f,
		0xbd, 0xaa, 0x03, 0x0d, 0x88, 0xfd, 0xc4, 0xc4, 0xbd, 0xa6, 0xd1, 0x23, 0x03, 0xe5, 0x60, 0x78,
		0xf3, 0xf6, 0x46, 0xf7, 0xae, 0x3e, 0x1e, 0x31, 0xd6, 0xb7, 0x2f, 0xba, 0xf5, 0x63, 0xd5, 0xa8,
		0xd7, 0xda, 0xea, 0x44, 0xb4, 0x55, 0x7d, 0xaf, 0x7b, 0x5d, 0x39, 0x89, 0x8d, 0x3c, 0x1a, 0xdc,
		0xa4, 0xfa, 0xc1, 0xe8, 0xd6, 0xd4, 0x6b, 0xad, 0x5f, 0xc7, 0xaa, 0xb1, 0xa7, 0x8f, 0x62, 0x59,
		0x3f, 0xee, 0xdf, 0x90, 0xfa, 0xe9, 0xf0, 0xaf, 0xaf, 0xa5, 0x7f, 0xfc, 0x07, 0xa2, 0x83, 0xfd,
		0x08, 0x2c, 0x77, 0x41, 0x68, 0x5d, 0xcf, 0x92, 0x75, 0x39, 0x76, 0x73, 0xcc, 0x5e, 0xcb, 0xb6,
		0xf3, 0xc9, 0x96, 0x72, 0x69, 0x0c, 0xfc, 0xfd, 0x46, 0x1b, 0xa8, 0x96, 0x27, 0x75, 0xab, 0x1b,
		0x29, 0x6d, 0xbc, 0x66, 0xd4, 0x89, 0x62, 0x4b, 0x1a, 0x83, 0x41, 0xfb, 0x38, 0x74, 0x0f, 0x4d,
		0xf3, 0x40, 0xf4, 0x0e, 0x44, 0xeb, 0xb6, 0xd2, 0x19, 0x44, 0x12, 0x5d, 0x96, 0x42, 0x8b, 0x60,
		0x9d, 0x39, 0x48, 0xdb, 0xd1, 0xf4, 0xfc, 0x15, 0x35, 0xdf, 0x4f, 0xcc, 0x39, 0xd9, 0x6d, 0x27,
		0xb9, 0x9b, 0xc9, 0x9d, 0x6f, 0xd3, 0xcf, 0xaf, 0x01, 0xe6, 0xf3, 0x49, 0x39, 0x35, 0x71, 0x5b,
		0x4d, 0xdb, 0xb1, 0x26, 0x9d, 0xa3, 0x44, 0x65, 0x28, 0x49, 0xf9, 0x64, 0x64, 0xf6, 0xf9, 0x91,
		0x43, 0x6e, 0xf8, 0xe3, 0xe7, 0x1f, 0xf5, 0x4c, 0xd0, 0x8d, 0x12, 0x93, 0x5b, 0x76, 0xa4, 0xd3,
		0xa2, 0x26, 0x22, 0xc8, 0xa9, 0x47, 0x18, 0xcf, 0x62, 0xcc, 0xe9, 0xe3, 0xf2, 0x5e, 0x5c, 0x60,
		0x63, 0xb1, 0x80, 0xdd, 0xc9, 0xff, 0xb6, 0xa6, 0xa3, 0x59, 0x9f, 0x9c, 0x6f, 0x7d, 0x6e, 0x98,
		0xf5, 0xc9, 0xf3, 0xcb, 0xc5, 0x2a, 0x3b, 0x2a, 0x5f, 0x83, 0xca, 0x1f, 0x81, 0x6c, 0xee, 0x89,
		0x33, 0xee, 0x2e, 0x46, 0x9f, 0x9f, 0x73, 0xa3, 0xcd, 0x57, 0x00, 0xac, 0x09, 0x81, 0x4d, 0x41,
		0xc0, 0x10, 0x06, 0xdb, 0x02, 0x01, 0x23, 0x14, 0x30, 0x82, 0x01, 0x23, 0x1c, 0xab, 0xe1, 0xeb,
		0xe4, 0x2d, 0x28, 0xcf, 0x85, 0xc5, 0x5e, 0xbe, 0x3d, 0xd3, 0x17, 0x5b, 0xb9, 0x66, 0x47, 0x66,
		0xac, 0xcb, 0x0d, 0x82, 0xec, 0x60, 0xc9, 0x0f, 0x8a, 0x0c, 0xc1, 0xc9, 0x11, 0x9c, 0x2c, 0xc1,
		0xc9, 0x93, 0x1d, 0x99, 0xb2, 0x24, 0x57, 0xd6, 0x65, 0x2b, 0x0d, 0x60, 0x38, 0x57, 0xc1, 0x7a,
		0x9e, 0x8e, 0x7b, 0x2f, 0x9b, 0x53, 0x27, 0x5e, 0xca, 0x99, 0xe5, 0x39, 0xc9, 0x30, 0x7b, 0x75,
		0x20, 0xed, 0xc9, 0x81, 0xb9, 0xf7, 0x06, 0xda, 0x2a, 0x51, 0xd8, 0xbd, 0x34, 0x60, 0x97, 0x78,
		0xc2, 0xee, 0x8d, 0xb1, 0xda, 0xb3, 0x54, 0x61, 0xf6, 0xb4, 0x48, 0xfb, 0x9d, 0x8e, 0x14, 0xed,
		0x58, 0xb6, 0x11, 0x3a, 0x9d, 0xf1, 0xa8, 0xab, 0x0a, 0x10, 0xcb, 0xd1, 0xa8, 0xfa, 0xfb, 0xf1,
		0xe3, 0x70, 0xc5, 0x5c, 0x38, 0x14, 0xf2, 0x55, 0x9d, 0x06, 0x6b, 0x71, 0xe4, 0x35, 0x9e, 0x85,
		0x8a, 0xc3, 0x74, 0x69, 0x44, 0xc4, 0x3a, 0x62, 0x1d, 0xb1, 0x8e, 0x58, 0x47, 0xac, 0x23, 0xd6,
		0x11, 0xeb, 0x9c, 0xc4, 0xba, 0x54, 0xcb, 0x49, 0x76, 0xb9, 0x3f, 0x8c, 0xd1, 0x3a, 0x23, 0x1c,
		0xb0, 0x1b, 0x07, 0x44, 0xae, 0x23, 0xd7, 0x91, 0xeb, 0xc8, 0x75, 0xe4, 0x3a, 0x72, 0x1d, 0xb9,
		0xce, 0x49, 0xae, 0x1b, 0x4b, 0x39, 0xb1, 0x2e, 0xf7, 0x67, 0x31, 0xdc, 0x61, 0x0c, 0x06, 0xea,
		0x86, 0xe1, 0x60, 0x20, 0x5d, 0x81, 0x48, 0x47, 0xa4, 0x23, 0xd2, 0x11, 0xe9, 0x88, 0x74, 0xb6,
		0x9e, 0x8a, 0xed, 0x09, 0x4a, 0x69, 0x20, 0x83, 0x6d, 0x15, 0x95, 0x6e, 0x49, 0x9c, 0xc3, 0x61,
		0x1e, 0xd7, 0xf7, 0x3d, 0xc6, 0x86, 0xb2, 0x17, 0x25, 0xd4, 0x31, 0x44, 0x70, 0xc7, 0x0e, 0x21,
		0x1e, 0x33, 0x84, 0x7d, 0xac, 0x10, 0xea, 0x46, 0xf8, 0xf0, 0xc7, 0x06, 0xc1, 0xef, 0x6a, 0x0f,
		0x7f, 0x2c, 0x10, 0x77, 0x19, 0x86, 0xf4, 0x58, 0x80, 0xbd, 0x16, 0x44, 0xcf, 0x65, 0x9a, 0xf7,
		0xf2, 0x2f, 0xff, 0x0d, 0x90, 0x22, 0x91, 0x26, 0x49, 0xaf, 0x46, 0x4e, 0xcd, 0x10, 0x33, 0xb8,
		0x87, 0x27, 0x4a, 0x52, 0x82, 0xcc, 0xa0, 0x9f, 0xc8, 0x46, 0x84, 0x99, 0xf4, 0xc4, 0x51, 0xe2,
		0x28, 0x71, 0x94, 0x38, 0x4a, 0x1c, 0x25, 0x8e, 0xe6, 0xde, 0x6f, 0xf5, 0x94, 0x36, 0x9b, 0x45,
		0x40, 0x1a, 0x45, 0x82, 0xd1, 0x63, 0xa1, 0x2f, 0xf0, 0x4e, 0x40, 0x04, 0x3c, 0xe8, 0xe8, 0x9b,
		0xd2, 0xb8, 0xc7, 0xa3, 0xff, 0x25, 0x3a, 0x3d, 0x09, 0x7c, 0xa8, 0xf7, 0x97, 0x58, 0x34, 0x8d,
		0x8a, 0xf4, 0x8e, 0xba, 0x50, 0x68, 0xc7, 0xbd, 0x3c, 0xef, 0x3b, 0xe4, 0x85, 0x18, 0x9d, 0x84,
		0x8f, 0x73, 0x5a, 0x09, 0x60, 0xb7, 0xff, 0x3c, 0x35, 0xc4, 0x2d, 0x7e, 0x6a, 0x94, 0x8a, 0x5b,
		0xa5, 0xad, 0x4a, 0xb5, 0xb8, 0x55, 0x66, 0x8e, 0x2c, 0x7b, 0x8e, 0xf0, 0xb4, 0xb6, 0xa9, 0xaf,
		0x73, 0x9a, 0x46, 0x28, 0x7d, 0xa8, 0xdf, 0x8c, 0xae, 0xae, 0x7a, 0x5a, 0x99, 0x3b, 0xd4, 0x92,
		0xe6, 0xcb, 0x00, 0x69, 0x24, 0x4d, 0x0b, 0x87, 0x46, 0xd2, 0x0c, 0x4d, 0x8a, 0x46, 0xd2, 0x4c,
		0x2d, 0x9d, 0x46, 0xd2, 0x3b, 0x03, 0xa4, 0x91, 0xe4, 0xd0, 0x88, 0x82, 0x75, 0xcd, 0x39, 0x64,
		0xd0, 0xc1, 0xba, 0xe6, 0x98, 0x2b, 0x94, 0x4c, 0xd2, 0xeb, 0x3b, 0x96, 0x36, 0x31, 0x29, 0x15,
		0x66, 0x2f, 0x89, 0x89, 0x9c, 0x04, 0xd9, 0x53, 0x82, 0x5c, 0x4a, 0x2e, 0x25, 0x97, 0x92, 0x4b,
		0xc9, 0xa5, 0xe4, 0xd2, 0xdc, 0xfb, 0x2d, 0xd5, 0x0d, 0x44, 0xab, 0x15, 0xcb, 0x24, 0x41, 0x44,
		0xd3, 0x2d, 0xa0, 0x98, 0x46, 0xcf, 0x90, 0x45, 0xce, 0x37, 0xb7, 0xac, 0xeb, 0x12, 0x60, 0xdb,
		0x9a, 0x68, 0x63, 0x9f, 0x00, 0x63, 0x3b, 0x12, 0xc6, 0xc8, 0x58, 0xc3, 0x35, 0xb7, 0x34, 0xc0,
		0xb5, 0xb3, 0x8d, 0x60, 0xeb, 0xfc, 0xfe, 0xac, 0x10, 0x6c, 0x9d, 0x0f, 0x2f, 0x0b, 0x83, 0x2f,
		0xbf, 0x8b, 0x0f, 0xf7, 0xc5, 0xb3, 0x8d, 0xa0, 0x34, 0x7a, 0xb7, 0x58, 0x3e, 0xdb, 0x08, 0xca,
		0xe7, 0xeb, 0x6b, 0x3f, 0x7e, 0x7c, 0x9c, 0xf5, 0x77, 0xd6, 0x7f, 0x6f, 0x3e, 0xf8, 0x70, 0x7f,
		0xfe, 0x39, 0x62, 0x73, 0x39, 0x3c, 0xd9, 0xfb, 0x1b, 0xbe, 0xcd, 0xfc, 0xb3, 0x96, 0x57, 0xab,
		0x59, 0xff, 0x1f, 0x60, 0xbb, 0xc1, 0x2a, 0x28, 0xfe, 0x41, 0x19, 0x7b, 0xb3, 0x8c, 0x55, 0x28,
		0x63, 0xcb, 0x2a, 0x63, 0x83, 0xde, 0x45, 0x04, 0xed, 0x5a, 0xf0, 0xe5, 0xfc, 0x77, 0xe1, 0x8f,
		0xd2, 0xc3, 0xe7, 0xf5, 0xdf, 0xd5, 0x87, 0x97, 0x6f, 0xde, 0x4f, 0xfb, 0xb1, 0xc2, 0x1f, 0xd5,
		0x87, 0xcf, 0xaf, 0x7c, 0xa7, 0xf2, 0xf0, 0xf9, 0x8d, 0xff, 0x46, 0xf9, 0x61, 0x6d, 0xe2, 0x47,
		0xfb, 0xef, 0x17, 0x5f, 0xfb, 0x85, 0xd2, 0x2b, 0xbf, 0xb0, 0xf9, 0xda, 0x2f, 0x6c, 0xbe, 0xf2,
		0x0b, 0xaf, 0x86, 0x54, 0x7c, 0xe5, 0x17, 0xca, 0x0f, 0xf7, 0x13, 0x3f, 0xbf, 0x36, 0xfd, 0x47,
		0x2b, 0x0f, 0xeb, 0xf7, 0xaf, 0x7d, 0xaf, 0xfa, 0x70, 0xff, 0x79, 0x7d, 0x9d, 0xc2, 0xbe, 0x74,
		0xc2, 0xce, 0x34, 0xca, 0x3f, 0x8d, 0x08, 0x3a, 0x4e, 0xf8, 0x50, 0x1e, 0x67, 0x4e, 0x21, 0xa1,
		0xa7, 0x2f, 0x6f, 0x4d, 0x00, 0x3f, 0x7b, 0x6a, 0x5a, 0x90, 0xac, 0x54, 0x4d, 0x0b, 0x87, 0x95,
		0xaa, 0x19, 0x9a, 0x15, 0x2b, 0x55, 0x33, 0xb5, 0x74, 0x56, 0xaa, 0xde, 0x19, 0x20, 0x2b, 0x55,
		0x0e, 0x19, 0x32, 0x9c, 0x41, 0x35, 0x8f, 0xf7, 0xe2, 0xde, 0x0c, 0xaa, 0xa7, 0x6c, 0xa1, 0x64,
		0xf2, 0xec, 0xff, 0x39, 0x93, 0x0a, 0x94, 0x5a, 0x95, 0xbe, 0x16, 0x1d, 0xd5, 0x0a, 0x62, 0x29,
		0x92, 0x48, 0xe3, 0x01, 0xeb, 0x8b, 0xf8, 0xc8, 0xaa, 0x64, 0x55, 0xb2, 0x2a, 0x59, 0x95, 0xac,
		0x4a, 0x56, 0x5d, 0x31, 0x56, 0x55, 0x2d, 0xa9, 0x8d, 0x32, 0x77, 0xa0, 0xbc, 0x0a, 0xb4, 0x7c,
		0xd9, 0xdf, 0x1b, 0xdd, 0xaa, 0x6d, 0x91, 0x00, 0x76, 0xa9, 0xe3, 0x07, 0xba, 0x77, 0xf0, 0x57,
		0x6d, 0x7f, 0x6f, 0xa7, 0x7e, 0x7c, 0x78, 0xfa, 0x7d, 0xb7, 0x7e, 0xbc, 0x5b, 0x3b, 0x39, 0x3c,
		0x40, 0xeb, 0x5d, 0x07, 0xab, 0xd4, 0x13, 0xc8, 0x32, 0x11, 0xe8, 0xba, 0xfe, 0x97, 0x4f, 0xb7,
		0x76, 0x52, 0xdf, 0x3f, 0x3c, 0x3c, 0xf2, 0xb9, 0x63, 0xc3, 0xd2, 0x3c, 0xd2, 0x3f, 0xf7, 0x4f,
		0x4f, 0xbe, 0xef, 0x1e, 0xf3, 0xb9, 0x2e, 0xdb, 0x73, 0x3d, 0x3c, 0xf8, 0xb2, 0xbb, 0xc3, 0x27,
		0xba, 0x3c, 0x4f, 0xf4, 0xf0, 0x78, 0xef, 0xeb, 0xde, 0x41, 0xed, 0xfb, 0xe1, 0xb1, 0xcf, 0xdd,
		0x40, 0xfe, 0xf5, 0x75, 0xce, 0xf1, 0x08, 0x58, 0x14, 0x08, 0xee, 0x60, 0x47, 0x24, 0x26, 0xb8,
		0x8a, 0x5a, 0xaa, 0xad, 0x64, 0x0b, 0xcf, 0x1c, 0x7c, 0x1e, 0x1e, 0xbd, 0xc1, 0x69, 0xe1, 0xd0,
		0x1b, 0x9c, 0xa1, 0x41, 0xd1, 0x1b, 0x9c, 0xa9, 0xa5, 0xd3, 0x1b, 0x7c, 0x67, 0x80, 0xf4, 0x06,
		0x1d, 0xe2, 0x5f, 0x60, 0x6f, 0xd0, 0xa8, 0x2b, 0x69, 0x54, 0xf3, 0x32, 0xa9, 0x94, 0x00, 0xbd,
		0x41, 0xa0, 0x65, 0x04, 0xfe, 0xa9, 0x1e, 0x6e, 0x62, 0xe8, 0x6b, 0xa1, 0xa3, 0x44, 0x36, 0x23,
		0xdd, 0x82, 0x5a, 0xa5, 0xca, 0x7d, 0x6f, 0xdf, 0x78, 0xa3, 0xb8, 0xef, 0xed, 0x3b, 0xe2, 0xe3,
		0x9e, 0x9e, 0x4b, 0xec, 0xcd, 0xb8, 0xb1, 0xef, 0x6d, 0xe1, 0x53, 0xa9, 0x54, 0xa9, 0x96, 0x4a,
		0x1b, 0xd5, 0xcd, 0xea, 0xc6, 0x56, 0xb9, 0x5c, 0xa8, 0x14, 0xb8, 0x03, 0xee, 0xd2, 0x67, 0x0b,
		0xd7, 0x71, 0x4c, 0x7d, 0x71, 0x1d, 0x07, 0x4c, 0x6f, 0xea, 0x8f, 0x4f, 0x1c, 0x87, 0x73, 0xbb,
		0xc6, 0x81, 0x81, 0x8c, 0x86, 0x76, 0x64, 0x5b, 0xf4, 0x3a, 0x06, 0x8a, 0x55, 0xfd, 0x0d, 0x8c,
		0xb1, 0xf3, 0x39, 0xbd, 0xc8, 0x69, 0xe1, 0xd0, 0x8b, 0x9c, 0x21, 0xdd, 0xe9, 0x45, 0xce, 0xd4,
		0xd2, 0xe9, 0x45, 0xbe, 0x33, 0x40, 0x7a, 0x91, 0x0e, 0x8d, 0xf7, 0x78, 0xbc, 0xd5, 0xec, 0x2a,
		0xc8, 0xe3, 0xad, 0xfe, 0xeb, 0x45, 0x9b, 0x6f, 0x3e, 0x2f, 0x83, 0x36, 0xdf, 0xd2, 0x1b, 0x17,
		0xb4, 0xf9, 0xe6, 0x4b, 0x0d, 0x1e, 0x6f, 0xb5, 0x3a, 0x39, 0x42, 0x73, 0x6f, 0xba, 0x19, 0x40,
		0x73, 0x0f, 0xa5, 0x0f, 0xf5, 0x47, 0x8b, 0x49, 0xa3, 0x9e, 0x91, 0x78, 0x06, 0xdf, 0xd3, 0xe0,
		0x68, 0x20, 0x4d, 0x0b, 0x87, 0x06, 0xd2, 0x0c, 0xcd, 0x89, 0x06, 0xd2, 0x4c, 0x2d, 0x9d, 0x06,
		0xd2, 0x3b, 0x03, 0xa4, 0x81, 0xe4, 0xd0, 0x48, 0x02, 0xd8, 0x40, 0x6a, 0x44, 0x51, 0x47, 0x0a,
		0x8d, 0xb8, 0xc8, 0xb5, 0x40, 0x94, 0x03, 0x88, 0xc0, 0x72, 0x0a, 0xf9, 0x35, 0xad, 0x23, 0x23,
		0xfa, 0x83, 0x46, 0x88, 0x04, 0xf2, 0x93, 0xe6, 0x4f, 0x79, 0x25, 0xba, 0xa3, 0x4d, 0x7a, 0xc2,
		0xa8, 0x2b, 0x75, 0x73, 0x00, 0x4a, 0x81, 0x96, 0xe6, 0x26, 0x8a, 0x2f, 0x03, 0xa5, 0x13, 0x23,
		0x74, 0x53, 0x86, 0x2f, 0xdf, 0x48, 0x26, 0xde, 0x09, 0xbb, 0x71, 0x64, 0xa2, 0x66, 0xd4, 0x49,
		0xd2, 0xab, 0xb0, 0x71, 0xd1, 0x0d, 0x63, 0xd5, 0x08, 0x45, 0x5b, 0x05, 0x89, 0x68, 0xab, 0x24,
		0xbd, 0x0a, 0x07, 0x5b, 0x59, 0x27, 0xb1, 0x91, 0x41, 0x37, 0xea, 0xa8, 0xe6, 0x5d, 0xa8, 0xa5,
		0xba, 0xf8, 0xd9, 0x88, 0xe2, 0x24, 0xbd, 0x0a, 0x45, 0xeb, 0xd7, 0x40, 0x0d, 0xa2, 0x9e, 0x09,
		0xba, 0x51, 0x62, 0xc2, 0x01, 0xe2, 0x26, 0xc3, 0x2f, 0xc3, 0x8d, 0x81, 0xec, 0xaa, 0x84, 0xbd,
		0xe6, 0x6c, 0xb1, 0x29, 0xfb, 0x3d, 0x7d, 0xa9, 0xa3, 0x1b, 0x1d, 0x08, 0x63, 0x62, 0xd5, 0xe8,
		0x3f, 0x11, 0xeb, 0xcd, 0xf9, 0xb1, 0x88, 0x30, 0x19, 0x9b, 0xe5, 0xa4, 0x1f, 0x4b, 0x80, 0xe5,
		0x30, 0x50, 0x46, 0x40, 0x48, 0x23, 0x1f, 0xcc, 0x11, 0x0f, 0xda, 0x48, 0x07, 0x76, 0x84, 0x03,
		0x3b, 0xb2, 0x81, 0x1d, 0xd1, 0xac, 0x36, 0x7e, 0xed, 0xa8, 0x18, 0xa3, 0xdb, 0x99, 0x10, 0x29,
		0x3c, 0x4b, 0x71, 0x32, 0x44, 0x2c, 0x63, 0xb1, 0x40, 0x63, 0x11, 0x5e, 0x5e, 0xb1, 0x65, 0x16,
		0x55, 0x6e, 0xe1, 0x65, 0x17, 0x5e, 0x7e, 0xe1, 0x65, 0x18, 0xc7, 0x8f, 0xf1, 0x80, 0x8c, 0x45,
		0x14, 0x79, 0x4e, 0x03, 0xea, 0x6b, 0x5f, 0x60, 0xd0, 0xec, 0xce, 0x67, 0x3d, 0xea, 0x63, 0x88,
		0x60, 0xa9, 0x87, 0x55, 0xff, 0x83, 0x95, 0x6b, 0x64, 0xd9, 0x76, 0x43, 0xbe, 0xd1, 0x65, 0xdc,
		0x19, 0x39, 0x77, 0x46, 0xd6, 0x9d, 0x91, 0x77, 0x2c, 0x99, 0x07, 0x93, 0xfb, 0xf4, 0x29, 0x7e,
		0x47, 0x14, 0x58, 0x0f, 0xfb, 0xb0, 0x87, 0x89, 0xd1, 0x70, 0x15, 0xf3, 0xc0, 0xcd, 0xf1, 0xe1,
		0x0f, 0xc3, 0x33, 0x1c, 0x1e, 0x61, 0x85, 0x13, 0xfe, 0xd0, 0x53, 0xd3, 0x1f, 0x56, 0xd7, 0x60,
		0xc1, 0x77, 0x18, 0x1e, 0x26, 0xf4, 0x16, 0x08, 0xbd, 0x84, 0x5e, 0x42, 0x2f, 0xa1, 0x97, 0xd0,
		0x4b, 0x65, 0x9d, 0xfe, 0x14, 0xd1, 0xbc, 0xae, 0x34, 0xb0, 0x01, 0xa3, 0x75, 0x24, 0xf0, 0xda,
		0xb9, 0x67, 0xd6, 0x57, 0x3f, 0x52, 0xd0, 0x44, 0xc5, 0x74, 0xc0, 0xe0, 0xa1, 0xc0, 0x05, 0x38,
		0x70, 0x0b, 0x12, 0x5c, 0x81, 0x05, 0xe7, 0xa0, 0xc1, 0x39, 0x78, 0x70, 0x0e, 0x22, 0x30, 0x61,
		0x02, 0x14, 0x2a, 0xd2, 0xa7, 0x0b, 0xeb, 0xa8, 0x4d, 0xf4, 0x9b, 0x3d, 0xa5, 0x4d, 0xa1, 0x82,
		0xdc, 0x67, 0x8e, 0x54, 0xbc, 0x02, 0x1c, 0x22, 0xe6, 0x96, 0x10, 0x2f, 0x5f, 0xd8, 0x9a, 0xe3,
		0xa1, 0x6f, 0x19, 0x31, 0x11, 0x2c, 0xf8, 0x16, 0x12, 0x13, 0xf1, 0xba, 0xb2, 0x5c, 0x7e, 0xb2,
		0xaf, 0x42, 0x5f, 0x3e, 0xef, 0x88, 0x2c, 0x3d, 0x4f, 0x35, 0x71, 0xeb, 0x5e, 0xaa, 0x55, 0xca,
		0xe5, 0xcd, 0x32, 0xd3, 0x8d, 0xe9, 0xe6, 0x00, 0x9b, 0xe2, 0x47, 0x77, 0x4e, 0xa6, 0x9f, 0x21,
		0x2d, 0xe4, 0xad, 0x89, 0x45, 0xd0, 0xd3, 0x89, 0x11, 0x8d, 0x0e, 0x38, 0xdd, 0xc7, 0xb2, 0x2d,
		0x63, 0xa9, 0x9b, 0x84, 0xd2, 0x05, 0x0e, 0x95, 0x8e, 0xbf, 0xfc, 0xe9, 0x95, 0x8a, 0xd5, 0x82,
		0x17, 0x78, 0x35, 0x6f, 0x3b, 0x8a, 0x5b, 0x32, 0xf6, 0xbe, 0x0a, 0x23, 0x6f, 0xc4, 0x9d, 0x77,
		0x34, 0x5a, 0x6f, 0xe9, 0x95, 0xbc, 0xb5, 0xed, 0xaf, 0x47, 0x41, 0x69, 0xdd, 0x77, 0x80, 0x01,
		0x1c, 0xb1, 0xa3, 0x1e, 0x87, 0x82, 0x8f, 0xb6, 0xd4, 0x63, 0x0b, 0x77, 0x44, 0x55, 0x5d, 0x73,
		0xa8, 0xd2, 0xc0, 0x9f, 0x3a, 0x55, 0x33, 0xa6, 0x00, 0xc9, 0x81, 0xe4, 0xb0, 0xd2, 0xf7, 0x0b,
		0x71, 0xef, 0x41, 0xdc, 0x39, 0xf5, 0x13, 0x8a, 0x8b, 0x3a, 0xb7, 0xfe, 0x51, 0x90, 0x58, 0x61,
		0x7c, 0x57, 0x80, 0xac, 0x30, 0xae, 0x28, 0xd2, 0xb1, 0xc2, 0x98, 0x2b, 0xb7, 0xb1, 0xc2, 0xb8,
		0x6c, 0x6e, 0x84, 0x5b, 0x15, 0xc6, 0x4f, 0x0e, 0x14, 0x18, 0xcb, 0x2c, 0x30, 0x2e, 0xbf, 0x97,
		0xc3, 0x02, 0x63, 0x86, 0xf1, 0xb2, 0xe2, 0xb1, 0xe2, 0xaa, 0xf4, 0x3c, 0xd5, 0x5c, 0x2c, 0x30,
		0x16, 0xcb, 0x2c, 0x2f, 0x32, 0xd9, 0x5c, 0x00, 0x53, 0xfc, 0xe8, 0x58, 0x5e, 0x9c, 0x25, 0x2d,
		0x58, 0x5e, 0x5c, 0x51, 0x24, 0x65, 0x79, 0x11, 0x66, 0x20, 0xc8, 0xf2, 0x62, 0xfe, 0x81, 0xb3,
		0xbc, 0xc8, 0xe8, 0x1c, 0x21, 0x07, 0x96, 0x17, 0xdf, 0x90, 0xcf, 0x83, 0x9a, 0xdd, 0xf5, 0x68,
		0x38, 0xe5, 0x42, 0x7d, 0x71, 0x18, 0x2b, 0x0b, 0x8c, 0xf3, 0x84, 0xc7, 0x02, 0xe3, 0x02, 0x5b,
		0x23, 0x0b, 0x8c, 0x19, 0xc1, 0x1c, 0x0b, 0x8c, 0x99, 0x93, 0x1b, 0x0b, 0x8c, 0xcb, 0xe6, 0x47,
		0xb8, 0x53, 0x60, 0x6c, 0x28, 0x2d, 0xe2, 0x3b, 0x07, 0x2a, 0x8c, 0x5b, 0xc0, 0x21, 0xee, 0x4b,
		0x7d, 0x31, 0xd8, 0x2c, 0x8c, 0x7e, 0xce, 0x3b, 0xef, 0xa4, 0x93, 0x25, 0xc6, 0x02, 0xab, 0x1e,
		0x19, 0x77, 0x56, 0x2c, 0x31, 0x66, 0x90, 0x6a, 0x5c, 0xc3, 0xc8, 0x74, 0x5b, 0x92, 0x74, 0xa3,
		0x55, 0x38, 0xd7, 0x8b, 0x45, 0xc6, 0x59, 0xd2, 0x82, 0x45, 0xc6, 0x15, 0x85, 0x52, 0x16, 0x19,
		0x61, 0xc6, 0x82, 0x2c, 0x32, 0xe6, 0x1f, 0x38, 0x8b, 0x8c, 0x8c, 0xce, 0x11, 0x72, 0x60, 0x91,
		0xf1, 0x6d, 0x1c, 0x23, 0x75, 0x4b, 0xb6, 0xf0, 0x4b, 0x8c, 0x69, 0xa4, 0x2c, 0x30, 0xce, 0x13,
		0x1e, 0x0b, 0x8c, 0x0b, 0x6c, 0x8b, 0x2c, 0x30, 0x66, 0x04, 0x72, 0x2c, 0x30, 0x66, 0x4e, 0x6d,
		0x2c, 0x30, 0x2e, 0x9b, 0x17, 0xe1, 0x50, 0x81, 0x31, 0x8a, 0x3a, 0x52, 0x68, 0x07, 0x2a, 0x8c,
		0x85, 0x02, 0x9b, 0xe0, 0x6c, 0x18, 0x49, 0x3b, 0x6c, 0xe1, 0x2f, 0xda, 0x61, 0xa4, 0xa7, 0x79,
		0x28, 0x8a, 0x76, 0x98, 0x0d, 0xb0, 0xa2, 0x1d, 0xc6, 0xe8, 0x3c, 0xda, 0x61, 0x2e, 0xb3, 0x8c,
		0x1f, 0x75, 0x8d, 0x8a, 0xb4, 0xe8, 0xe0, 0xdb, 0x61, 0x69, 0xa4, 0xb4, 0xc3, 0xe6, 0x09, 0x8f,
		0x76, 0xd8, 0x22, 0xdb, 0x22, 0xed, 0xb0, 0x6c, 0x40, 0x8e, 0x76, 0x58, 0xe6, 0xd4, 0x46, 0x3b,
		0x6c, 0xd9, 0xbc, 0x08, 0xda, 0x61, 0x8b, 0x97, 0x71, 0xda, 0x61, 0x33, 0xdd, 0x35, 0xda, 0x61,
		0x59, 0xbc, 0x68, 0x87, 0x91, 0x9e, 0xe6, 0xa1, 0x28, 0xda, 0x61, 0x36, 0xc0, 0x8a, 0x76, 0x18,
		0xa3, 0xf3, 0x68, 0x87, 0xb9, 0xcc, 0x32, 0x7e, 0x57, 0xc4, 0x46, 0xb9, 0xe0, 0x86, 0x8d, 0x03,
		0xa5, 0x19, 0x36, 0x4f, 0x78, 0x34, 0xc3, 0x16, 0xd8, 0x14, 0x69, 0x86, 0x65, 0x84, 0x71, 0x34,
		0xc3, 0x32, 0x67, 0x36, 0x9a, 0x61, 0xcb, 0xe6, 0x44, 0xd0, 0x0c, 0x5b, 0xbc, 0x8c, 0xd3, 0x0c,
		0x9b, 0xe9, 0xae, 0xd1, 0x0c, 0xcb, 0xe2, 0x45, 0x33, 0x8c, 0xf4, 0x34, 0x0f, 0x45, 0xd1, 0x0c,
		0xb3, 0x01, 0x56, 0x34, 0xc3, 0x18, 0x9d, 0x47, 0x33, 0xcc, 0x65, 0x96, 0xf1, 0x4d, 0x2c, 0x74,
		0xa2, 0x46, 0x7b, 0xa1, 0x80, 0xfb, 0x61, 0x4f, 0x62, 0xa5, 0x25, 0x36, 0x4f, 0x78, 0xb4, 0xc4,
		0x16, 0xd8, 0x1a, 0x69, 0x89, 0x65, 0x04, 0x73, 0xb4, 0xc4, 0x32, 0x27, 0x37, 0x5a, 0x62, 0xcb,
		0xe6, 0x47, 0xd0, 0x12, 0x5b, 0xbc, 0x8c, 0xd3, 0x12, 0x9b, 0xe9, 0xae, 0xd1, 0x12, 0xcb, 0xe2,
		0x45, 0x4b, 0x8c, 0xf4, 0x34, 0x0f, 0x45, 0xd1, 0x12, 0xb3, 0x01, 0x56, 0xb4, 0xc4, 0x18, 0x9d,
		0x47, 0x4b, 0xcc, 0xd1, 0x88, 0xc0, 0xc8, 0xca, 0xaf, 0x69, 0x1d, 0x19, 0x61, 0x54, 0x84, 0xb9,
		0x65, 0xbc, 0x9f, 0x34, 0x7f, 0xca, 0x2b, 0xd1, 0x15, 0x83, 0x93, 0x01, 0xfc, 0x30, 0xea, 0x4a,
		0xdd, 0x1c, 0x58, 0x4c, 0x81, 0x96, 0xe6, 0x26, 0x8a, 0x2f, 0x03, 0xd5, 0xa7, 0x41, 0xdd, 0x94,
		0xe1, 0xcb, 0x37, 0x92, 0x89, 0x77, 0xc2, 0xee, 0xa8, 0x7f, 0x4c, 0xd2, 0xab, 0xb0, 0x71, 0xd1,
		0x0d, 0x63, 0xd5, 0x08, 0x45, 0x5b, 0x05, 0x89, 0x68, 0xab, 0x24, 0xbd, 0x0a, 0x55, 0xf7, 0xba,
		0x12, 0x24, 0xb1, 0x91, 0x41, 0x37, 0xea, 0xa8, 0xe6, 0x5d, 0xa8, 0xa5, 0xba, 0xf8, 0xd9, 0x88,
		0xe2, 0x24, 0xbd, 0x0a, 0x45, 0xeb, 0xd7, 0x60, 0x9c, 0x1b, 0xf5, 0x4c, 0xd0, 0x8d, 0x12, 0x13,
		0xc6, 0x51, 0xcf, 0xc8, 0x64, 0xf8, 0x25, 0xec, 0xe9, 0x4b, 0x1d, 0xdd, 0xe8, 0x40, 0x18, 0x13,
		0xab, 0xc6, 0xe0, 0x1b, 0x13, 0x6f, 0x85, 0x89, 0x11, 0x46, 0x62, 0xf5, 0xd3, 0x38, 0x39, 0x83,
		0x11, 0x09, 0x48, 0xd6, 0xf6, 0xe1, 0x2b, 0x3d, 0x35, 0xcc, 0xf4, 0x87, 0xe3, 0x20, 0x71, 0xed,
		0xab, 0xc4, 0xd4, 0x8c, 0x89, 0xa1, 0xfa, 0x10, 0xff, 0x9b, 0xd2, 0xbb, 0x1d, 0xd9, 0xe7, 0x26,
		0xb0, 0x8d, 0xe3, 0xfd, 0x6f, 0xe2, 0xf6, 0x49, 0x64, 0x85, 0x4f, 0xa5, 0x52, 0xa5, 0x5a, 0x2a,
		0x6d, 0x54, 0x37, 0xab, 0x1b, 0x5b, 0xe5, 0x72, 0xa1, 0x52, 0x00, 0xda, 0x9e, 0xdf, 0x3f, 0xec,
		0x23, 0xa6, 0x6c, 0x6d, 0xf7, 0x9b, 0x9e, 0xee, 0x75, 0x3a, 0x88, 0xa1, 0x9d, 0x26, 0x32, 0x86,
		0xda, 0x69, 0x1f, 0xa5, 0xc7, 0x00, 0xd5, 0xf7, 0x15, 0xd0, 0x75, 0xa0, 0x41, 0xb1, 0x9f, 0x98,
		0xb8, 0xd7, 0x34, 0x7a, 0x64, 0xa2, 0x1c, 0x0c, 0x6f, 0xdf, 0xde, 0xe8, 0xee, 0xd5, 0xc7, 0xa3,
		0xc6, 0xfa, 0xf6, 0x45, 0xb7, 0x7e, 0xac, 0x1a, 0xf5, 0x5a, 0x5b, 0x9d, 0x88, 0xb6, 0xaa, 0xef,
		0x75, 0xaf, 0x2b, 0x27, 0xb1, 0x91, 0x47, 0x83, 0xdb, 0x54, 0x3f, 0x18, 0xdd, 0x9c, 0x7a, 0xad,
		0xf5, 0xeb, 0x58, 0x35, 0x0e, 0x7b, 0xe6, 0x28, 0x4a, 0x4c, 0xfd, 0xb8, 0x7f, 0x4b, 0xea, 0xa7,
		0xc3, 0xbf, 0xbf, 0x96, 0xfe, 0xf9, 0x1f, 0x88, 0x0f, 0xf6, 0x23, 0xb0, 0xdc, 0x0d, 0xa1, 0x75,
		0x3f, 0x4b, 0xd7, 0xed, 0xd8, 0xcd, 0x32, 0x7b, 0x6d, 0xdb, 0xce, 0x27, 0x5b, 0xca, 0xa6, 0x31,
		0xf6, 0xf7, 0x9b, 0x6d, 0xa0, 0x5a, 0x9e, 0xd4, 0xad, 0x6e, 0xa4, 0xb4, 0xf1, 0x9a, 0x51, 0x27,
		0x8a, 0x2d, 0xe9, 0x0c, 0x06, 0xf3, 0xe3, 0x30, 0x3e, 0x34, 0xd3, 0x03, 0x31, 0x3c, 0x10, 0xb3,
		0xdb, 0x4a, 0x67, 0x10, 0x51, 0x74, 0x5b, 0x0c, 0x2d, 0xe2, 0x75, 0x0e, 0x38, 0x6d, 0x47, 0xd7,
		0xf3, 0x57, 0xd5, 0x7c, 0x3f, 0x31, 0xe7, 0x84, 0xb7, 0x9d, 0xe8, 0xae, 0x26, 0x78, 0xbe, 0x8d,
		0x3f, 0xbf, 0x26, 0x98, 0xcf, 0x27, 0xe5, 0xd4, 0xc8, 0x6d, 0x35, 0x6e, 0xe7, 0x1a, 0x75, 0x8e,
		0x42, 0x95, 0xa9, 0x30, 0xe5, 0x93, 0x95, 0xd9, 0xe7, 0x48, 0x0e, 0xf9, 0xe1, 0x3f, 0x6b, 0x03,
		0x71, 0x7e, 0xb3, 0x7b, 0xd2, 0x79, 0x52, 0x2f, 0x03, 0xc8, 0xa9, 0x4f, 0x18, 0xcf, 0x6a, 0xcc,
		0xe9, 0xe3, 0xf2, 0x5e, 0x6c, 0x60, 0x63, 0xf1, 0x80, 0xdd, 0xc5, 0x00, 0xb6, 0xa6, 0xa7, 0x59,
		0x9f, 0xac, 0x6f, 0x7d, 0xae, 0x98, 0xf5, 0xc9, 0xf4, 0xcb, 0x45, 0x2b, 0x3b, 0x2a, 0x5f, 0xa3,
		0xca, 0x1f, 0xa1, 0x6c, 0xee, 0x89, 0x33, 0xee, 0x2e, 0x46, 0x9f, 0x9f, 0x73, 0xa3, 0xcd, 0x57,
		0x00, 0xac, 0x09, 0x81, 0x4d, 0x41, 0xc0, 0x10, 0x06, 0xdb, 0x02, 0x01, 0x23, 0x14, 0x30, 0x82,
		0x01, 0x23, 0x1c, 0xab, 0xe1, 0xed, 0xe4, 0x2d, 0x28, 0xcf, 0x85, 0xc5, 0x5e, 0xbe, 0x3d, 0xd3,
		0x17, 0x5b, 0xb9, 0x66, 0x47, 0x66, 0xac, 0xcb, 0x0d, 0x82, 0xec, 0x60, 0xc9, 0x0f, 0x8a, 0x0c,
		0xc1, 0xc9, 0x11, 0x9c, 0x2c, 0xc1, 0xc9, 0x93, 0x1d, 0x99, 0xb2, 0x24, 0x57, 0xd6, 0x65, 0x2b,
		0x0d, 0x60, 0x38, 0x67, 0xc1, 0x7a, 0x9e, 0x8e, 0x7b, 0x2f, 0x9b, 0x53, 0x28, 0x5e, 0xca, 0x99,
		0xe5, 0x19, 0xca, 0x30, 0x7b, 0x77, 0x20, 0xed, 0xd1, 0x81, 0xb9, 0x17, 0x07, 0xda, 0xaa, 0x51,
		0xd8, 0xbd, 0x35, 0x60, 0x97, 0x7c, 0xc2, 0xee, 0x95, 0xb1, 0xda, 0xf3, 0x55, 0x61, 0xf6, 0xb8,
		0x48, 0xfb, 0x9d, 0x8e, 0x14, 0xed, 0x58, 0xb6, 0x11, 0x3a, 0x9d, 0xf1, 0xa8, 0xab, 0x0a, 0x10,
		0xcb, 0xd1, 0xa8, 0xfe, 0xfb, 0xf1, 0xe3, 0x70, 0xfd, 0x5c, 0x38, 0x14, 0xf2, 0x55, 0x9d, 0x0e,
		0x6b, 0x71, 0xe4, 0x35, 0x9e, 0x8d, 0x8a, 0xc3, 0x74, 0x69, 0x44, 0xc4, 0x3a, 0x62, 0x1d, 0xb1,
		0x8e, 0x58, 0x47, 0xac, 0x23, 0xd6, 0x11, 0xeb, 0x9c, 0xc4, 0xba, 0x54, 0xcb, 0x49, 0x76, 0xb9,
		0x3f, 0x8c, 0xd1, 0x7a, 0x23, 0x1c, 0xb0, 0x1b, 0x07, 0x44, 0xae, 0x23, 0xd7, 0x91, 0xeb, 0xc8,
		0x75, 0xe4, 0x3a, 0x72, 0x1d, 0xb9, 0xce, 0x49, 0xae, 0x1b, 0x4b, 0x39, 0xb1, 0x2e, 0xf7, 0x67,
		0x31, 0xdc, 0x6f, 0x0c, 0x06, 0xea, 0x86, 0xe1, 0x60, 0x20, 0x5d, 0x81, 0x48, 0x47, 0xa4, 0x23,
		0xd2, 0x11, 0xe9, 0x88, 0x74, 0xb6, 0x9e, 0x8a, 0xed, 0x09, 0x4a, 0x69, 0x20, 0x83, 0x4d, 0x16,
		0x95, 0x6e, 0x49, 0x9c, 0xc3, 0x62, 0x1e, 0x97, 0xf7, 0x3d, 0xc6, 0x86, 0xb2, 0x33, 0x25, 0xd4,
		0xb1, 0x44, 0x70, 0xc7, 0x10, 0x21, 0x1e, 0x3b, 0x84, 0x7d, 0xcc, 0x10, 0xea, 0xc6, 0xf8, 0xf0,
		0xc7, 0x08, 0xc1, 0xef, 0x72, 0x0f, 0x7f, 0x4c, 0x10, 0xf7, 0x1c, 0x86, 0xf4, 0x58, 0x80, 0xbd,
		0x16, 0x44, 0xcf, 0x65, 0x9a, 0xf7, 0xf2, 0x2f, 0xff, 0x0d, 0x90, 0x22, 0x91, 0x26, 0x49, 0xaf,
		0x46, 0x4e, 0xcd, 0x10, 0x33, 0xb8, 0x9b, 0x27, 0x4a, 0x52, 0x82, 0xcc, 0xa0, 0x9f, 0xc8, 0x46,
		0x84, 0x99, 0xf4, 0xc4, 0x51, 0xe2, 0x28, 0x71, 0x94, 0x38, 0x4a, 0x1c, 0x25, 0x8e, 0xe6, 0xde,
		0x6f, 0xf5, 0x94, 0x36, 0x9b, 0x45, 0x40, 0x1a, 0x45, 0x82, 0xd1, 0x63, 0xa1, 0x2f, 0xf0, 0x4e,
		0x44, 0x04, 0x3c, 0xf8, 0xe8, 0x9b, 0xd2, 0xb8, 0xc7, 0xa5, 0xff, 0x25, 0x3a, 0x3d, 0x09, 0x7c,
		0xc8, 0xf7, 0x97, 0x58, 0x34, 0x8d, 0x8a, 0xf4, 0x8e, 0xba, 0x50, 0x68, 0x87, 0xbf, 0x3c, 0xef,
		0x3b, 0xe4, 0x85, 0x18, 0x9d, 0x8c, 0x8f, 0x73, 0x76, 0x09, 0x60, 0xb7, 0xff, 0x3c, 0x35, 0xc4,
		0x2d, 0x7e, 0x6a, 0x94, 0x8a, 0x5b, 0xa5, 0xad, 0x4a, 0xb5, 0xb8, 0x55, 0x66, 0x8e, 0x2c, 0x7b,
		0x8e, 0xf0, 0xec, 0xb6, 0xa9, 0xaf, 0x73, 0x9a, 0x46, 0x28, 0x7d, 0xa8, 0xdf, 0x8c, 0xae, 0xae,
		0x7a, 0x5a, 0x99, 0x3b, 0xd4, 0x92, 0xe6, 0xcb, 0x00, 0x69, 0x24, 0x4d, 0x0b, 0x87, 0x46, 0xd2,
		0x0c, 0x4d, 0x8a, 0x46, 0xd2, 0x4c, 0x2d, 0x9d, 0x46, 0xd2, 0x3b, 0x03, 0xa4, 0x91, 0xe4, 0xd0,
		0x88, 0x82, 0x75, 0xcd, 0x39, 0x64, 0xd0, 0xc1, 0xba, 0xe6, 0x98, 0x2b, 0x94, 0x4c, 0xd2, 0xeb,
		0x3b, 0x96, 0x36, 0x31, 0x29, 0x15, 0x66, 0x2f, 0x89, 0x89, 0x9c, 0x04, 0xd9, 0x53, 0x82, 0x5c,
		0x4a, 0x2e, 0x25, 0x97, 0x92, 0x4b, 0xc9, 0xa5, 0xe4, 0xd2, 0xdc, 0xfb, 0x2d, 0xd5, 0x0d, 0x44,
		0xab, 0x15, 0xcb, 0x24, 0x41, 0x44, 0xd3, 0x2d, 0xa0, 0x98, 0x46, 0xcf, 0x90, 0x45, 0xce, 0x37,
		0xb7, 0xac, 0xeb, 0x12, 0x60, 0xdb, 0x9a, 0x68, 0x63, 0x9f, 0x00, 0x63, 0x3b, 0x12, 0xc6, 0xc8,
		0x58, 0xc3, 0x35, 0xb7, 0x34, 0xc0, 0xb5, 0xb3, 0x8d, 0x60, 0xeb, 0xfc, 0xfe, 0xac, 0x10, 0x6c,
		0x9d, 0x0f, 0x2f, 0x0b, 0x83, 0x2f, 0xbf, 0x8b, 0x0f, 0xf7, 0xc5, 0xb3, 0x8d, 0xa0, 0x34, 0x7a,
		0xb7, 0x58, 0x3e, 0xdb, 0x08, 0xca, 0xe7, 0xeb, 0x6b, 0x3f, 0x7e, 0x7c, 0x9c, 0xf5, 0x77, 0xd6,
		0x7f, 0x6f, 0x3e, 0xf8, 0x70, 0x7f, 0xfe, 0x39, 0x62, 0x73, 0x39, 0x3c, 0xd9, 0xfb, 0x1b, 0xbe,
		0xcd, 0xfc, 0xb3, 0x96, 0x57, 0xab, 0x59, 0xff, 0x1f, 0x60, 0xbb, 0xc1, 0x2a, 0x28, 0xfe, 0x41,
		0x19, 0x7b, 0xb3, 0x8c, 0x55, 0x28, 0x63, 0xcb, 0x2a, 0x63, 0x83, 0xde, 0x45, 0x04, 0xed, 0x5a,
		0xf0, 0xe5, 0xfc, 0x77, 0xe1, 0x8f, 0xd2, 0xc3, 0xe7, 0xf5, 0xdf, 0xd5, 0x87, 0x97, 0x6f, 0xde,
		0x4f, 0xfb, 0xb1, 0xc2, 0x1f, 0xd5, 0x87, 0xcf, 0xaf, 0x7c, 0xa7, 0xf2, 0xf0, 0xf9, 0x8d, 0xff,
		0x46, 0xf9, 0x61, 0x6d, 0xe2, 0x47, 0xfb, 0xef, 0x17, 0x5f, 0xfb, 0x85, 0xd2, 0x2b, 0xbf, 0xb0,
		0xf9, 0xda, 0x2f, 0x6c, 0xbe, 0xf2, 0x0b, 0xaf, 0x86, 0x54, 0x7c, 0xe5, 0x17, 0xca, 0x0f, 0xf7,
		0x13, 0x3f, 0xbf, 0x36, 0xfd, 0x47, 0x2b, 0x0f, 0xeb, 0xf7, 0xaf, 0x7d, 0xaf, 0xfa, 0x70, 0xff,
		0x79, 0x7d, 0x9d, 0xc2, 0xbe, 0x74, 0xc2, 0xce, 0x34, 0xca, 0x3f, 0x8d, 0x08, 0x3a, 0x4e, 0xf8,
		0x50, 0x1e, 0x67, 0x4e, 0x21, 0xa1, 0xa7, 0x2f, 0x6f, 0x4d, 0x00, 0x3f, 0x7b, 0x6a, 0x5a, 0x90,
		0xac, 0x54, 0x4d, 0x0b, 0x87, 0x95, 0xaa, 0x19, 0x9a, 0x15, 0x2b, 0x55, 0x33, 0xb5, 0x74, 0x56,
		0xaa, 0xde, 0x19, 0x20, 0x2b, 0x55, 0x0e, 0x19, 0x32, 0x9c, 0x41, 0x35, 0x8f, 0xf7, 0xe2, 0xde,
		0x0c, 0xaa, 0xa7, 0x6c, 0xa1, 0x64, 0xf2, 0xec, 0xff, 0x39, 0x93, 0x0a, 0x94, 0x5a, 0x95, 0xbe,
		0x16, 0x1d, 0xd5, 0x0a, 0x62, 0x29, 0x92, 0x48, 0xe3, 0x01, 0xeb, 0x8b, 0xf8, 0xc8, 0xaa, 0x64,
		0x55, 0xb2, 0x2a, 0x59, 0x95, 0xac, 0x4a, 0x56, 0x5d, 0x31, 0x56, 0x55, 0x2d, 0xa9, 0x8d, 0x32,
		0x77, 0xa0, 0xbc, 0x0a, 0xb4, 0x7c, 0xd9, 0xdf, 0x1b, 0xdd, 0xaa, 0x6d, 0x91, 0x00, 0x76, 0xa9,
		0xe3, 0x07, 0xba, 0x77, 0xf0, 0x57, 0x6d, 0x7f, 0x6f, 0xa7, 0x7e, 0x7c, 0x78, 0xfa, 0x7d, 0xb7,
		0x7e, 0xbc, 0x5b, 0x3b, 0x39, 0x3c, 0x40, 0xeb, 0x5d, 0x07, 0xab, 0xd4, 0x13, 0xc8, 0x32, 0x11,
		0xe8, 0xba, 0xfe, 0x97, 0x4f, 0xb7, 0x76, 0x52, 0xdf, 0x3f, 0x3c, 0x3c, 0xf2, 0xb9, 0x63, 0xc3,
		0xd2, 0x3c, 0xd2, 0x3f, 0xf7, 0x4f, 0x4f, 0xbe, 0xef, 0x1e, 0xf3, 0xb9, 0x2e, 0xdb, 0x73, 0x3d,
		0x3c, 0xf8, 0xb2, 0xbb, 0xc3, 0x27, 0xba, 0x3c, 0x4f, 0xf4, 0xf0, 0x78, 0xef, 0xeb, 0xde, 0x41,
		0xed, 0xfb, 0xe1, 0xb1, 0xcf, 0xdd, 0x40, 0xfe, 0xf5, 0x75, 0xce, 0xf1, 0x08, 0x58, 0x14, 0x08,
		0xee, 0x60, 0x47, 0x24, 0x26, 0xb8, 0x8a, 0x5a, 0xaa, 0xad, 0x64, 0x0b, 0xcf, 0x1c, 0x7c, 0x1e,
		0x1e, 0xbd, 0xc1, 0x69, 0xe1, 0xd0, 0x1b, 0x9c, 0xa1, 0x41, 0xd1, 0x1b, 0x9c, 0xa9, 0xa5, 0xd3,
		0x1b, 0x7c, 0x67, 0x80, 0xf4, 0x06, 0x1d, 0xe2, 0x5f, 0x60, 0x6f, 0xd0, 0xa8, 0x2b, 0x69, 0x54,
		0xf3, 0x32, 0xa9, 0x94, 0x00, 0xbd, 0x41, 0xa0, 0x65, 0x04, 0xfe, 0xa9, 0x1e, 0x6e, 0x62, 0xe8,
		0x6b, 0xa1, 0xa3, 0x44, 0x36, 0x23, 0xdd, 0x82, 0x5a, 0xa5, 0xca, 0x7d, 0x6f, 0xdf, 0x78, 0xa3,
		0xb8, 0xef, 0xed, 0x3b, 0xe2, 0xe3, 0x9e, 0x9e, 0x4b, 0xec, 0xcd, 0xb8, 0xb1, 0xef, 0x6d, 0xe1,
		0x53, 0xa9, 0x54, 0xa9, 0x96, 0x4a, 0x1b, 0xd5, 0xcd, 0xea, 0xc6, 0x56, 0xb9, 0x5c, 0xa8, 0x14,
		0xb8, 0x03, 0xee, 0xd2, 0x67, 0x0b, 0xd7, 0x71, 0x4c, 0x7d, 0x71, 0x1d, 0x07, 0x4c, 0x6f, 0xea,
		0x8f, 0x4f, 0x1c, 0x87, 0x73, 0xbb, 0xc6, 0x81, 0x81, 0x8c, 0x86, 0x76, 0x64, 0x5b, 0xf4, 0x3a,
		0x06, 0x8a, 0x55, 0xfd, 0x0d, 0x8c, 0xb1, 0xf3, 0x39, 0xbd, 0xc8, 0x69, 0xe1, 0xd0, 0x8b, 0x9c,
		0x21, 0xdd, 0xe9, 0x45, 0xce, 0xd4, 0xd2, 0xe9, 0x45, 0xbe, 0x33, 0x40, 0x7a, 0x91, 0x0e, 0x8d,
		0xf7, 0x78, 0xbc, 0xd5, 0xec, 0x2a, 0xc8, 0xe3, 0xad, 0xfe, 0xeb, 0x45, 0x9b, 0x6f, 0x3e, 0x2f,
		0x83, 0x36, 0xdf, 0xd2, 0x1b, 0x17, 0xb4, 0xf9, 0xe6, 0x4b, 0x0d, 0x1e, 0x6f, 0xb5, 0x3a, 0x39,
		0x42, 0x73, 0x6f, 0xba, 0x19, 0x40, 0x73, 0x0f, 0xa5, 0x0f, 0xf5, 0x47, 0x8b, 0x49, 0xa3, 0x9e,
		0x91, 0x78, 0x06, 0xdf, 0xd3, 0xe0, 0x68, 0x20, 0x4d, 0x0b, 0x87, 0x06, 0xd2, 0x0c, 0xcd, 0x89,
		0x06, 0xd2, 0x4c, 0x2d, 0x9d, 0x06, 0xd2, 0x3b, 0x03, 0xa4, 0x81, 0xe4, 0xd0, 0x48, 0x02, 0xd8,
		0x40, 0x6a, 0x44, 0x51, 0x47, 0x0a, 0x8d, 0xb8, 0xc8, 0xb5, 0x40, 0x94, 0x03, 0x88, 0xc0, 0x72,
		0x0a, 0xf9, 0x35, 0xad, 0x23, 0x23, 0xfa, 0x83, 0x46, 0x88, 0x04, 0xf2, 0x93, 0xe6, 0x4f, 0x79,
		0x25, 0xba, 0xa3, 0x4d, 0x7a, 0xc2, 0xa8, 0x2b, 0x75, 0x73, 0x00, 0x4a, 0x81, 0x96, 0xe6, 0x26,
		0x8a, 0x2f, 0x03, 0xa5, 0x13, 0x23, 0x74, 0x53, 0x86, 0x2f, 0xdf, 0x48, 0x26, 0xde, 0x09, 0xbb,
		0x71, 0x64, 0xa2, 0x66, 0xd4, 0x49, 0xd2, 0xab, 0xb0, 0x71, 0xd1, 0x0d, 0x63, 0xd5, 0x08, 0x45,
		0x5b, 0x05, 0x89, 0x68, 0xab, 0x24, 0xbd, 0x0a, 0x07, 0x5b, 0x59, 0x27, 0xb1, 0x91, 0x41, 0x37,
		0xea, 0xa8, 0xe6, 0x5d, 0xa8, 0xa5, 0xba, 0xf8, 0xd9, 0x88, 0xe2, 0x24, 0xbd, 0x0a, 0x45, 0xeb,
		0xd7, 0x40, 0x0d, 0xa2, 0x9e, 0x09, 0xba, 0xb1, 0x0c, 0x07, 0x84, 0x9b, 0x0c, 0xbf, 0x0c, 0xf7,
		0x05, 0xb2, 0x2b, 0x12, 0xf6, 0x5a, 0xb3, 0xc5, 0x96, 0xec, 0xf7, 0xf4, 0xa5, 0x8e, 0x6e, 0x74,
		0x20, 0x8c, 0x89, 0x55, 0xa3, 0xff, 0x44, 0xac, 0xb7, 0xe6, 0xc7, 0x1a, 0xc2, 0x64, 0x6c, 0x96,
		0x73, 0x7e, 0xac, 0x00, 0x96, 0xc3, 0x40, 0x19, 0x00, 0x21, 0x0d, 0x7c, 0x30, 0x07, 0x3c, 0x68,
		0x03, 0x1d, 0xd8, 0x01, 0x0e, 0xec, 0xc0, 0x06, 0x76, 0x40, 0xb3, 0xda, 0xf4, 0xb5, 0xa3, 0x62,
		0x8c, 0x6e, 0x67, 0x42, 0xa4, 0xf0, 0x1c, 0xc5, 0xc9, 0x10, 0xb1, 0x7c, 0xc5, 0x02, 0x7d, 0x45,
		0x78, 0x79, 0xc5, 0x96, 0x59, 0x54, 0xb9, 0x85, 0x97, 0x5d, 0x78, 0xf9, 0x85, 0x97, 0x61, 0x1c,
		0x3b, 0xc6, 0x03, 0xf2, 0x15, 0x51, 0xe4, 0x39, 0x0d, 0xa8, 0xaf, 0x7d, 0x81, 0x41, 0x73, 0x3b,
		0x9f, 0xf5, 0xa8, 0x8f, 0x21, 0x82, 0xa5, 0x1e, 0x56, 0xf9, 0x0f, 0x56, 0xae, 0x91, 0x65, 0xdb,
		0x0d, 0xf9, 0x46, 0x97, 0x71, 0x67, 0xe4, 0xdc, 0x19, 0x59, 0x77, 0x46, 0xde, 0xb1, 0x64, 0x1e,
		0x4c, 0xee, 0xd3, 0xa7, 0xf8, 0x1d, 0x51, 0x60, 0x3d, 0xec, 0xb3, 0x1e, 0x26, 0x46, 0xc3, 0x55,
		0xcc, 0xf3, 0x36, 0xc7, 0x67, 0x3f, 0x0c, 0x8f, 0x70, 0x78, 0x84, 0x15, 0xce, 0xf7, 0x43, 0x4f,
		0x4d, 0x7f, 0x58, 0x5d, 0x83, 0x05, 0xdf, 0x61, 0x78, 0x98, 0xd0, 0x5b, 0x20, 0xf4, 0x12, 0x7a,
		0x09, 0xbd, 0x84, 0x5e, 0x42, 0x2f, 0x95, 0x75, 0xfa, 0x53, 0x44, 0xf3, 0xba, 0xd2, 0xc0, 0x06,
		0x8c, 0xd6, 0x91, 0xc0, 0x4b, 0xe7, 0x9e, 0x59, 0x5f, 0xfd, 0x48, 0x41, 0x13, 0x15, 0xd3, 0x01,
		0x83, 0x87, 0x02, 0x17, 0xe0, 0xc0, 0x2d, 0x48, 0x70, 0x05, 0x16, 0x9c, 0x83, 0x06, 0xe7, 0xe0,
		0xc1, 0x39, 0x88, 0xc0, 0x84, 0x09, 0x50, 0xa8, 0x48, 0x9f, 0x2e, 0xac, 0xa3, 0x36, 0xd1, 0x6f,
		0xf6, 0x94, 0x36, 0x85, 0x0a, 0x72, 0x9f, 0x39, 0x52, 0xf1, 0x0a, 0x70, 0x88, 0x98, 0x3b, 0x42,
		0xbc, 0x7c, 0x61, 0x6b, 0x8e, 0x87, 0xbe, 0x63, 0xc4, 0x44, 0xb0, 0xe0, 0x3b, 0x48, 0x4c, 0xc4,
		0xeb, 0xca, 0x6a, 0xf9, 0xc9, 0xbe, 0x0a, 0x7d, 0xf5, 0xbc, 0x23, 0xb2, 0xf4, 0x3c, 0xd5, 0xc4,
		0xad, 0x7b, 0xa9, 0x56, 0x29, 0x97, 0x37, 0xcb, 0x4c, 0x37, 0xa6, 0x9b, 0x03, 0x6c, 0x8a, 0x1f,
		0xdd, 0x39, 0x99, 0x7e, 0x86, 0xb4, 0x90, 0xb7, 0x26, 0x16, 0x41, 0x4f, 0x27, 0x46, 0x34, 0x3a,
		0xe0, 0x74, 0x1f, 0xcb, 0xb6, 0x8c, 0xa5, 0x6e, 0x12, 0x4a, 0x17, 0x38, 0x54, 0x3a, 0xfe, 0xf2,
		0xa7, 0x57, 0x2a, 0x56, 0x0b, 0x5e, 0xe0, 0xd5, 0xbc, 0xed, 0x28, 0x6e, 0xc9, 0xd8, 0xfb, 0x2a,
		0x8c, 0xbc, 0x11, 0x77, 0xde, 0xd1, 0x68, 0xb9, 0xa5, 0x57, 0xf2, 0xd6, 0xb6, 0xbf, 0x1e, 0x05,
		0xa5, 0x75, 0xdf, 0x01, 0x06, 0x70, 0xc4, 0x8e, 0x7a, 0x1c, 0x0a, 0x3e, 0xda, 0x52, 0x8f, 0x2d,
		0xdc, 0x11, 0x55, 0x75, 0xcd, 0xa1, 0x4a, 0x03, 0x7f, 0xea, 0x54, 0xcd, 0x98, 0x02, 0x24, 0x07,
		0x92, 0xc3, 0x4a, 0xdf, 0x2f, 0xc4, 0xad, 0x07, 0x71, 0xe7, 0xd4, 0x4f, 0x28, 0x2e, 0xea, 0xdc,
		0xfa, 0x47, 0x41, 0x62, 0x85, 0xf1, 0x5d, 0x01, 0xb2, 0xc2, 0xb8, 0xa2, 0x48, 0xc7, 0x0a, 0x63,
		0xae, 0xdc, 0xc6, 0x0a, 0xe3, 0xb2, 0xb9, 0x11, 0x6e, 0x55, 0x18, 0x3f, 0x39, 0x50, 0x60, 0x2c,
		0xb3, 0xc0, 0xb8, 0xfc, 0x5e, 0x0e, 0x0b, 0x8c, 0x19, 0xc6, 0xcb, 0x8a, 0xc7, 0x8a, 0xab, 0xd2,
		0xf3, 0x54, 0x73, 0xb1, 0xc0, 0x58, 0x2c, 0xb3, 0xbc, 0xc8, 0x64, 0x73, 0x01, 0x4c, 0xf1, 0xa3,
		0x63, 0x79, 0x71, 0x96, 0xb4, 0x60, 0x79, 0x71, 0x45, 0x91, 0x94, 0xe5, 0x45, 0x98, 0x81, 0x20,
		0xcb, 0x8b, 0xf9, 0x07, 0xce, 0xf2, 0x22, 0xa3, 0x73, 0x84, 0x1c, 0x58, 0x5e, 0x7c, 0x43, 0x3e,
		0x0f, 0x6a, 0x76, 0xd7, 0xa3, 0xe1, 0x94, 0x0b, 0xf5, 0xc5, 0x61, 0xac, 0x2c, 0x30, 0xce, 0x13,
		0x1e, 0x0b, 0x8c, 0x0b, 0x6c, 0x8d, 0x2c, 0x30, 0x66, 0x04, 0x73, 0x2c, 0x30, 0x66, 0x4e, 0x6e,
		0x2c, 0x30, 0x2e, 0x9b, 0x1f, 0xe1, 0x4e, 0x81, 0xb1, 0xa1, 0xb4, 0x88, 0xef, 0x1c, 0xa8, 0x30,
		0x6e, 0x01, 0x87, 0xb8, 0x2f, 0xf5, 0xc5, 0x60, 0xb3, 0x30, 0xfa, 0x39, 0xef, 0xbc, 0x93, 0x4e,
		0x96, 0x18, 0x0b, 0xac, 0x7a, 0x64, 0xdc, 0x59, 0xb1, 0xc4, 0x98, 0x41, 0xaa, 0x71, 0x0d, 0x23,
		0xd3, 0x6d, 0x49, 0xd2, 0x8d, 0x56, 0xe1, 0x5c, 0x2f, 0x16, 0x19, 0x67, 0x49, 0x0b, 0x16, 0x19,
		0x57, 0x14, 0x4a, 0x59, 0x64, 0x84, 0x19, 0x0b, 0xb2, 0xc8, 0x98, 0x7f, 0xe0, 0x2c, 0x32, 0x32,
		0x3a, 0x47, 0xc8, 0x81, 0x45, 0xc6, 0xb7, 0x71, 0x8c, 0xd4, 0x2d, 0xd9, 0xc2, 0x2f, 0x31, 0xa6,
		0x91, 0xb2, 0xc0, 0x38, 0x4f, 0x78, 0x2c, 0x30, 0x2e, 0xb0, 0x2d, 0xb2, 0xc0, 0x98, 0x11, 0xc8,
		0xb1, 0xc0, 0x98, 0x39, 0xb5, 0xb1, 0xc0, 0xb8, 0x6c, 0x5e, 0x84, 0x43, 0x05, 0xc6, 0x28, 0xea,
		0x48, 0xa1, 0x1d, 0xa8, 0x30, 0x16, 0x0a, 0x6c, 0x82, 0xb3, 0x61, 0x24, 0xed, 0xb0, 0x85, 0xbf,
		0x68, 0x87, 0x91, 0x9e, 0xe6, 0xa1, 0x28, 0xda, 0x61, 0x36, 0xc0, 0x8a, 0x76, 0x18, 0xa3, 0xf3,
		0x68, 0x87, 0xb9, 0xcc, 0x32, 0x7e, 0xd4, 0x35, 0x2a, 0xd2, 0xa2, 0x83, 0x6f, 0x87, 0xa5, 0x91,
		0xd2, 0x0e, 0x9b, 0x27, 0x3c, 0xda, 0x61, 0x8b, 0x6c, 0x8b, 0xb4, 0xc3, 0xb2, 0x01, 0x39, 0xda,
		0x61, 0x99, 0x53, 0x1b, 0xed, 0xb0, 0x65, 0xf3, 0x22, 0x68, 0x87, 0x2d, 0x5e, 0xc6, 0x69, 0x87,
		0xcd, 0x74, 0xd7, 0x68, 0x87, 0x65, 0xf1, 0xa2, 0x1d, 0x46, 0x7a, 0x9a, 0x87, 0xa2, 0x68, 0x87,
		0xd9, 0x00, 0x2b, 0xda, 0x61, 0x8c, 0xce, 0xa3, 0x1d, 0xe6, 0x32, 0xcb, 0xf8, 0x5d, 0x11, 0x1b,
		0xe5, 0x82, 0x1b, 0x36, 0x0e, 0x94, 0x66, 0xd8, 0x3c, 0xe1, 0xd1, 0x0c, 0x5b, 0x60, 0x53, 0xa4,
		0x19, 0x96, 0x11, 0xc6, 0xd1, 0x0c, 0xcb, 0x9c, 0xd9, 0x68, 0x86, 0x2d, 0x9b, 0x13, 0x41, 0x33,
		0x6c, 0xf1, 0x32, 0x4e, 0x33, 0x6c, 0xa6, 0xbb, 0x46, 0x33, 0x2c, 0x8b, 0x17, 0xcd, 0x30, 0xd2,
		0xd3, 0x3c, 0x14, 0x45, 0x33, 0xcc, 0x06, 0x58, 0xd1, 0x0c, 0x63, 0x74, 0x1e, 0xcd, 0x30, 0x97,
		0x59, 0xc6, 0x37, 0xb1, 0xd0, 0x89, 0x1a, 0xed, 0x85, 0x02, 0xee, 0x87, 0x3d, 0x89, 0x95, 0x96,
		0xd8, 0x3c, 0xe1, 0xd1, 0x12, 0x5b, 0x60, 0x6b, 0xa4, 0x25, 0x96, 0x11, 0xcc, 0xd1, 0x12, 0xcb,
		0x9c, 0xdc, 0x68, 0x89, 0x2d, 0x9b, 0x1f, 0x41, 0x4b, 0x6c, 0xf1, 0x32, 0x4e, 0x4b, 0x6c, 0xa6,
		0xbb, 0x46, 0x4b, 0x2c, 0x8b, 0x17, 0x2d, 0x31, 0xd2, 0xd3, 0x3c, 0x14, 0x45, 0x4b, 0xcc, 0x06,
		0x58, 0xd1, 0x12, 0x63, 0x74, 0x1e, 0x2d, 0x31, 0x47, 0x23, 0x02, 0x23, 0x2b, 0xbf, 0xa6, 0x75,
		0x64, 0x84, 0x51, 0x11, 0xe6, 0x96, 0xf1, 0x7e, 0xd2, 0xfc, 0x29, 0xaf, 0x44, 0x57, 0x0c, 0x4e,
		0x06, 0xf0, 0xc3, 0xa8, 0x2b, 0x75, 0x73, 0x60, 0x31, 0x05, 0x5a, 0x9a, 0x9b, 0x28, 0xbe, 0x0c,
		0x54, 0x9f, 0x06, 0x75, 0x53, 0x86, 0x2f, 0xdf, 0x48, 0x26, 0xde, 0x09, 0xbb, 0xa3, 0xfe, 0x31,
		0x49, 0xaf, 0xc2, 0xc6, 0x45, 0x37, 0x8c, 0x55, 0x23, 0x14, 0x6d, 0x15, 0x24, 0xa2, 0xad, 0x92,
		0xf4, 0x2a, 0x54, 0xdd, 0xeb, 0x4a, 0x90, 0xc4, 0x46, 0x06, 0xdd, 0xa8, 0xa3, 0x9a, 0x77, 0xa1,
		0x96, 0xea, 0xe2, 0x67, 0x23, 0x8a, 0x93, 0xf4, 0x2a, 0x14, 0xad, 0x5f, 0x83, 0x71, 0x6e, 0xd4,
		0x33, 0x41, 0x37, 0x96, 0x61, 0x1c, 0xf5, 0x8c, 0x4c, 0x86, 0x5f, 0xc2, 0x9e, 0xbe, 0xd4, 0xd1,
		0x8d, 0x0e, 0x84, 0x31, 0xb1, 0x6a, 0x0c, 0xbe, 0x31, 0xf1, 0x56, 0x98, 0x18, 0x61, 0x24, 0x56,
		0x37, 0x8d, 0x93, 0x32, 0x18, 0x91, 0x80, 0x24, 0x6d, 0x9f, 0xbd, 0xd2, 0x43, 0xc3, 0x4c, 0x7f,
		0x34, 0x0e, 0x12, 0xd7, 0xbe, 0x4a, 0x4c, 0xcd, 0x98, 0x18, 0xaa, 0x0b, 0xf1, 0xbf, 0x29, 0xbd,
		0xdb, 0x91, 0x7d, 0x6c, 0x02, 0xdb, 0x37, 0xde, 0xff, 0x26, 0x6e, 0x9f, 0x44, 0x56, 0xf8, 0x54,
		0x2a, 0x55, 0xaa, 0xa5, 0xd2, 0x46, 0x75, 0xb3, 0xba, 0xb1, 0x55, 0x2e, 0x17, 0x2a, 0x05, 0xa0,
		0xdd, 0xf9, 0xfd, 0xc3, 0x3e, 0x61, 0xca, 0xd6, 0x76, 0xbf, 0xe9, 0xe9, 0x5e, 0xa7, 0x83, 0x18,
		0xda, 0x69, 0x22, 0x63, 0xa8, 0x8d, 0xf6, 0x51, 0x7a, 0x0c, 0x50, 0x79, 0x5f, 0x7e, 0x59, 0x07,
		0x1a, 0x12, 0xfb, 0x89, 0x89, 0x7b, 0x4d, 0xa3, 0x47, 0x16, 0xca, 0xc1, 0xf0, 0xee, 0xed, 0x8d,
		0x6e, 0x5e, 0x7d, 0x3c, 0x66, 0xac, 0x6f, 0x5f, 0x74, 0xeb, 0xc7, 0xaa, 0x51, 0xaf, 0xb5, 0xd5,
		0x89, 0x68, 0xab, 0xfa, 0x5e, 0xf7, 0xba, 0x72, 0x12, 0x1b, 0x79, 0x34, 0xb8, 0x4b, 0xf5, 0x83,
		0xd1, 0xbd, 0xa9, 0xd7, 0x5a, 0xbf, 0x8e, 0x55, 0xe3, 0xb0, 0x67, 0x8e, 0x62, 0x59, 0x3f, 0xee,
		0xdf, 0x91, 0xfa, 0xe9, 0xf0, 0xcf, 0xaf, 0xa5, 0x7f, 0xfd, 0x07, 0xc2, 0x83, 0xfd, 0x08, 0x2c,
		0x77, 0x42, 0x68, 0x9d, 0xcf, 0xb2, 0x75, 0x3a, 0x76, 0x93, 0xcc, 0x5e, 0xd3, 0xb6, 0xf3, 0xc9,
		0x96, 0x92, 0x69, 0xcc, 0xfc, 0xfd, 0x56, 0x1b, 0xa8, 0x96, 0x27, 0x75, 0xab, 0x1b, 0x29, 0x6d,
		0xbc, 0x66, 0xd4, 0x89, 0x62, 0x4b, 0x2a, 0x83, 0x01, 0xfc, 0x38, 0x80, 0x0f, 0x0d, 0xf4, 0x40,
		0x00, 0x0f, 0x04, 0xec, 0xb6, 0xd2, 0x19, 0x44, 0x13, 0x9d, 0xd6, 0x42, 0x8b, 0x6c, 0x9d, 0x3d,
		0x4b, 0xdb, 0x51, 0xf5, 0xfc, 0x35, 0x35, 0xdf, 0x4f, 0xcc, 0x39, 0xdd, 0x6d, 0xa7, 0xb9, 0xa3,
		0xe9, 0x9d, 0x6f, 0xdb, 0xcf, 0xaf, 0x05, 0xe6, 0xf3, 0x49, 0x39, 0xb5, 0x71, 0x5b, 0x6d, 0xdb,
		0xb5, 0x36, 0x9d, 0xa3, 0x4a, 0x65, 0xa9, 0x4a, 0xf9, 0xe4, 0x64, 0xf6, 0x19, 0x92, 0x43, 0x76,
		0xf8, 0xe3, 0xa6, 0x10, 0x88, 0x56, 0x2b, 0x96, 0x49, 0x92, 0x5b, 0x7e, 0xa4, 0xf3, 0xa3, 0x26,
		0x22, 0xc8, 0xa9, 0x4f, 0xc8, 0x77, 0x55, 0x42, 0xee, 0xab, 0x0c, 0x6c, 0xac, 0x1a, 0xb0, 0xbb,
		0x0a, 0xc0, 0xd6, 0xbc, 0x34, 0xeb, 0xb3, 0xf4, 0xad, 0x4f, 0x12, 0xb3, 0x3e, 0x8b, 0x7e, 0xb9,
		0x68, 0x25, 0xf7, 0x59, 0xeb, 0x69, 0xde, 0x76, 0xa4, 0x68, 0xc7, 0xb2, 0x9d, 0x67, 0xd2, 0x8e,
		0x67, 0x95, 0x57, 0x73, 0xfc, 0xcc, 0xa3, 0x11, 0x90, 0x7d, 0xfc, 0x38, 0x9c, 0xca, 0x12, 0x4e,
		0x68, 0x10, 0x09, 0x62, 0x06, 0x90, 0x13, 0x46, 0xe6, 0x8f, 0x0d, 0xc3, 0x8f, 0xcd, 0x97, 0x15,
		0x0a, 0x64, 0x05, 0xb2, 0x02, 0x59, 0x81, 0xac, 0x80, 0xc3, 0x0a, 0x3b, 0x2a, 0xdf, 0x8a, 0x96,
		0xbd, 0x01, 0x23, 0xca, 0xc0, 0xd1, 0xd2, 0x00, 0xd2, 0x9a, 0x38, 0xd8, 0x14, 0x09, 0x0c, 0xb1,
		0xb0, 0x2d, 0x1a, 0x30, 0xe2, 0x01, 0x23, 0x22, 0x30, 0x62, 0x92, 0xaf, 0xa8, 0xe4, 0x2c, 0x2e,
		0xf6, 0x06, 0xa4, 0x13, 0x79, 0xaf, 0xba, 0x96, 0x7a, 0xf9, 0x67, 0xf8, 0xbf, 0x65, 0xe1, 0xb3,
		0x47, 0xf7, 0xde, 0xce, 0x72, 0x5c, 0x8b, 0xd5, 0xfe, 0xc7, 0x27, 0x7f, 0x5d, 0xb2, 0xf8, 0xec,
		0x27, 0xda, 0xc0, 0x27, 0x8b, 0x31, 0x1c, 0x09, 0x63, 0x64, 0xac, 0xad, 0xaf, 0xce, 0xf6, 0xd7,
		0xce, 0x36, 0x82, 0xad, 0xf3, 0xfb, 0xb3, 0x42, 0xb0, 0x75, 0x3e, 0xbc, 0x2c, 0x0c, 0xbe, 0xfc,
		0x2e, 0x3e, 0xdc, 0x17, 0xcf, 0x36, 0x82, 0xd2, 0xe8, 0xdd, 0x62, 0xf9, 0x6c, 0x23, 0x28, 0x9f,
		0xaf, 0xaf, 0xfd, 0xf8, 0xf1, 0x71, 0xd6, 0xdf, 0x59, 0xff, 0xbd, 0xf9, 0x60, 0x6f, 0xbe, 0xe0,
		0xb9, 0xcd, 0xc7, 0x7c, 0x78, 0xb2, 0xf7, 0x37, 0xcc, 0xb3, 0xfe, 0x67, 0x2d, 0xaf, 0xa7, 0xbd,
		0xfe, 0x3f, 0x8b, 0xcf, 0x7b, 0x95, 0xa6, 0x74, 0x61, 0x74, 0xeb, 0x15, 0x76, 0xeb, 0x68, 0xdd,
		0xfa, 0x20, 0x6b, 0x45, 0xd0, 0xae, 0x05, 0x5f, 0xce, 0x7f, 0x17, 0xfe, 0x28, 0x3d, 0x7c, 0x5e,
		0xff, 0x5d, 0x7d, 0x78, 0xf9, 0xe6, 0xfd, 0xb4, 0x1f, 0x2b, 0xfc, 0x51, 0x7d, 0xf8, 0xfc, 0xca,
		0x77, 0x2a, 0x0f, 0x9f, 0xdf, 0xf8, 0x6f, 0x94, 0x1f, 0xd6, 0x26, 0x7e, 0xb4, 0xff, 0x7e, 0xf1,
		0xb5, 0x5f, 0x28, 0xbd, 0xf2, 0x0b, 0x9b, 0xaf, 0xfd, 0xc2, 0xe6, 0x2b, 0xbf, 0xf0, 0x6a, 0x48,
		0xc5, 0x57, 0x7e, 0xa1, 0xfc, 0x70, 0x3f, 0xf1, 0xf3, 0x6b, 0xd3, 0x7f, 0xb4, 0xf2, 0xb0, 0x7e,
		0xff, 0xda, 0xf7, 0xaa, 0x0f, 0xf7, 0x9f, 0xd7, 0xd7, 0x29, 0x74, 0x30, 0x42, 0xc7, 0xe6, 0x9f,
		0x7f, 0xf3, 0x5f, 0x3d, 0xe1, 0xff, 0xb0, 0xdc, 0x7f, 0x27, 0x27, 0x2a, 0xce, 0xe9, 0x67, 0x71,
		0xa2, 0xe2, 0xd4, 0x89, 0x8a, 0x39, 0xee, 0x38, 0x91, 0x43, 0x55, 0xfe, 0x83, 0xc3, 0x4d, 0x75,
		0xbc, 0xba, 0x2b, 0xe7, 0xea, 0x4b, 0xbe, 0xeb, 0xb7, 0xf2, 0x5f, 0xa7, 0x05, 0xb1, 0x1e, 0xcb,
		0xc2, 0xba, 0x2b, 0x0b, 0xeb, 0xab, 0xb2, 0x4e, 0x90, 0x9c, 0xfb, 0x70, 0xf4, 0xbe, 0xdb, 0xcf,
		0x65, 0x0e, 0xd2, 0x22, 0x27, 0x93, 0x67, 0xab, 0x33, 0xd9, 0xf5, 0xfe, 0xd9, 0xfc, 0xcb, 0x19,
		0xa5, 0x4b, 0x5e, 0x69, 0x02, 0x9a, 0x1e, 0xd9, 0xb4, 0xb1, 0xc5, 0xb7, 0x80, 0xc5, 0xfe, 0x8b,
		0x0b, 0x6e, 0x4b, 0x79, 0x6c, 0xae, 0xeb, 0xdf, 0xfc, 0x94, 0xd9, 0x99, 0x13, 0x19, 0xb6, 0xfb,
		0xb1, 0xd3, 0xfa, 0xf1, 0x63, 0xda, 0x1e, 0x83, 0x7e, 0x0f, 0xe9, 0xfd, 0x3f, 0xef, 0xff, 0xa2,
		0x66, 0xd0, 0xb8, 0xe8, 0x9a, 0xcf, 0x27, 0xc7, 0xdf, 0x77, 0xeb, 0x47, 0x87, 0xfb, 0x7b, 0x7f,
		0xfe, 0x7f, 0xf5, 0xff, 0x9f, 0xbd, 0xb7, 0xed, 0x49, 0x24, 0x89, 0xfe, 0xfe, 0x9f, 0xef, 0xab,
		0xe8, 0x74, 0x36, 0xf9, 0xe9, 0x95, 0xe9, 0x69, 0x1b, 0xb9, 0x11, 0x93, 0xff, 0x03, 0x1c, 0x75,
		0x42, 0x2e, 0x6f, 0x08, 0xea, 0x5c, 0xfb, 0x8b, 0xcb, 0x92, 0x02, 0x0a, 0xac, 0x1d, 0xac, 0x26,
		0xdd, 0x85, 0xa3, 0x51, 0xde, 0xfb, 0x3f, 0x34, 0xd0, 0xa0, 0xc0, 0xec, 0xc0, 0xd0, 0x5d, 0xa7,
		0xe0, 0x4b, 0x26, 0x23, 0xb6, 0x20, 0xc7, 0xae, 0x73, 0xea, 0x7c, 0xea, 0x7b, 0xea, 0xa6, 0x5c,
		0xf9, 0x96, 0xff, 0x9f, 0x04, 0x3b, 0xeb, 0xb4, 0x66, 0x4f, 0xcc, 0xce, 0x92, 0x88, 0xda, 0x2e,
		0xe1, 0x74, 0x9f, 0xf6, 0x5c, 0x88, 0x77, 0x73, 0x1e, 0x56, 0x6b, 0xdc, 0x3f, 0x0c, 0x44, 0x2a,
		0xfb, 0x94, 0x87, 0xcd, 0x40, 0xf4, 0x52, 0xe1, 0xa9, 0x38, 0x68, 0xca, 0xb2, 0xd9, 0xed, 0xb7,
		0xb8, 0xa5, 0x1e, 0x44, 0x68, 0x35, 0x7d, 0xa9, 0x98, 0x90, 0x3c, 0xb0, 0x7c, 0xd9, 0x7d, 0xb1,
		0xda, 0x7e, 0x60, 0xa9, 0x07, 0x6e, 0x95, 0x2b, 0x4f, 0x79, 0xab, 0x74, 0x5e, 0xfe, 0x64, 0xdd,
		0x54, 0x9d, 0xdb, 0x33, 0x6b, 0x44, 0x11, 0x7f, 0xcb, 0x9b, 0xd2, 0x79, 0xf9, 0x73, 0xd2, 0x5e,
		0x97, 0xe2, 0x54, 0xa4, 0xd9, 0x80, 0x6a, 0xcd, 0x34, 0x46, 0x0a, 0x5c, 0xa7, 0x63, 0x9e, 0xd1,
		0xbb, 0xf8, 0xfa, 0x7d, 0x3f, 0x00, 0x4b, 0x26, 0xfa, 0x5b, 0x6b, 0xa4, 0xf9, 0x24, 0x61, 0xc6,
		0x25, 0xc5, 0xb6, 0x09, 0xf4, 0x07, 0x9b, 0x19, 0xd7, 0x6d, 0x36, 0x04, 0x37, 0xe7, 0xc2, 0x1b,
		0x74, 0xb6, 0x51, 0x39, 0xbd, 0x2f, 0x45, 0x93, 0x85, 0x6a, 0xe3, 0xae, 0xf6, 0xbe, 0x68, 0x3f,
		0xf9, 0x94, 0x0d, 0x87, 0x4a, 0x32, 0x4b, 0x6c, 0x12, 0x9b, 0x2d, 0x9d, 0xe4, 0x6c, 0xe8, 0x74,
		0x66, 0x3b, 0x27, 0x8d, 0x10, 0xa9, 0xcd, 0x56, 0x4e, 0x8d, 0x12, 0x52, 0x9b, 0x6d, 0x4c, 0x7b,
		0xd0, 0x9d, 0xd4, 0x92, 0x13, 0xbb, 0x3b, 0xba, 0xa7, 0xc9, 0x79, 0x64, 0xbc, 0xcc, 0x75, 0xfc,
		0x41, 0x09, 0xb9, 0x49, 0xb2, 0xab, 0x05, 0xa7, 0x5d, 0x5a, 0x26, 0xa1, 0x0f, 0x48, 0x61, 0xa1,
		0x47, 0xba, 0x0b, 0x3a, 0x74, 0x48, 0x0f, 0xa9, 0x2c, 0xd0, 0xd0, 0x2b, 0x3e, 0xa4, 0xb1, 0xe0,
		0xc2, 0x2c, 0x4d, 0x3b, 0xe9, 0xd5, 0x78, 0xf6, 0x78, 0xd3, 0xa9, 0xd4, 0x74, 0x90, 0xf1, 0xe7,
		0x25, 0x5d, 0x52, 0x4e, 0x65, 0x79, 0x75, 0x6a, 0x2b, 0xe7, 0xd2, 0x5c, 0x29, 0xa7, 0x67, 0x65,
		0x5c, 0xda, 0x2b, 0xe1, 0xb4, 0xad, 0x7c, 0xd3, 0xb6, 0xd2, 0x4d, 0xdb, 0xca, 0x36, 0xb3, 0x27,
		0xa7, 0xa4, 0xb5, 0x1c, 0x7a, 0xd4, 0x31, 0xa6, 0xbf, 0xeb, 0x45, 0x9a, 0x9b, 0x89, 0x62, 0xd7,
		0x8b, 0x6d, 0xe9, 0xae, 0x75, 0x75, 0xdb, 0xda, 0xbb, 0x6f, 0xed, 0xdd, 0xb8, 0xf6, 0xee, 0x3c,
		0x9d, 0x6e, 0x3d, 0xa5, 0xee, 0x3d, 0xf5, 0x6e, 0x3e, 0xfe, 0x40, 0x3f, 0x10, 0x1d, 0x21, 0xf5,
		0xed, 0x75, 0x31, 0xfe, 0x7c, 0xec, 0x70, 0xb1, 0x6d, 0x09, 0x81, 0x46, 0x62, 0xd0, 0x9d, 0x20,
		0xc8, 0x24, 0x0a, 0x32, 0x09, 0x83, 0x4c, 0xe2, 0x48, 0x37, 0x81, 0xa4, 0x9c, 0x48, 0xe2, 0xbb,
		0xac, 0x7f, 0x87, 0x8b, 0xf4, 0xb7, 0x5e, 0x9c, 0xe3, 0xfc, 0x82, 0x86, 0xcf, 0x9e, 0xdb, 0x8a,
		0x71, 0x9c, 0xe9, 0xb6, 0x75, 0xb5, 0x52, 0x8a, 0xb0, 0x3f, 0x3e, 0x7f, 0x47, 0x1f, 0xb4, 0x4c,
		0x0c, 0x00, 0xb5, 0x80, 0x5a, 0x40, 0x2d, 0xa0, 0x16, 0x50, 0x0b, 0xa8, 0x65, 0x4b, 0xa9, 0x65,
		0x92, 0xea, 0x80, 0x2d, 0xbf, 0x8f, 0x2d, 0x7a, 0xd2, 0xd9, 0x94, 0x5a, 0xb4, 0x08, 0x94, 0x80,
		0x16, 0x40, 0x0b, 0xa0, 0x05, 0xd0, 0x02, 0x68, 0x01, 0xb4, 0xa4, 0x06, 0x2d, 0xa3, 0xb0, 0x07,
		0xb3, 0xfc, 0xf6, 0xad, 0x4d, 0xf7, 0x0c, 0x8c, 0x39, 0x87, 0x4e, 0xf3, 0x2c, 0x8c, 0x39, 0x57,
		0x06, 0xb1, 0x80, 0x58, 0x40, 0x2c, 0x20, 0x96, 0xed, 0x25, 0x96, 0xb4, 0x67, 0x1b, 0xc4, 0x1f,
		0xcc, 0x94, 0x0a, 0x1c, 0x21, 0x5b, 0xfc, 0x59, 0x5f, 0xd0, 0x4d, 0xba, 0x9e, 0x19, 0x5b, 0x34,
		0x39, 0xbb, 0x9e, 0x21, 0xb2, 0xf6, 0xc4, 0x43, 0x21, 0x01, 0xd1, 0x4a, 0x44, 0x54, 0x12, 0x12,
		0xb9, 0xc4, 0x44, 0x2e, 0x41, 0x91, 0x4b, 0x54, 0x7a, 0x12, 0x96, 0xa6, 0xc4, 0xa5, 0x7f, 0xc8,
		0x4d, 0x68, 0xe8, 0x4d, 0x61, 0x08, 0xbe, 0x68, 0x28, 0xbe, 0xf0, 0x5f, 0x94, 0x6c, 0x43, 0xae,
		0xc2, 0xf8, 0xd9, 0x78, 0xc8, 0x3e, 0x4a, 0xc0, 0x3b, 0xb2, 0x65, 0xad, 0x86, 0x70, 0xb1, 0x9b,
		0xfe, 0xe3, 0x63, 0x5f, 0x0a, 0xf5, 0x42, 0x85, 0xbb, 0x3e, 0x1a, 0x04, 0xf8, 0x02, 0x7c, 0x01,
		0xbe, 0x00, 0x5f, 0x80, 0x2f, 0xc0, 0x17, 0xe0, 0x2b, 0x09, 0xf8, 0x9a, 0x64, 0x5c, 0xc1, 0xc3,
		0xf8, 0xf9, 0x0b, 0xf8, 0x2b, 0x9d, 0xc6, 0xe1, 0xcf, 0xca, 0x21, 0xc7, 0x60, 0x8b, 0x8c, 0x02,
		0x87, 0x81, 0xc3, 0xc0, 0x61, 0xe0, 0x30, 0x70, 0x18, 0x38, 0x0c, 0x1c, 0x96, 0x04, 0x87, 0xcd,
		0x66, 0xdd, 0x21, 0x8b, 0xbd, 0xcb, 0xc2, 0xe0, 0xb1, 0x74, 0x1a, 0x49, 0xc8, 0x27, 0xd6, 0x15,
		0x2d, 0x27, 0xe0, 0x2c, 0xf4, 0xa5, 0x7e, 0x14, 0xfb, 0x60, 0x0f, 0x28, 0x0c, 0x14, 0x06, 0x0a,
		0x03, 0x85, 0x81, 0xc2, 0x40, 0x61, 0xab, 0x66, 0x92, 0x16, 0x97, 0x4a, 0xa8, 0x17, 0x22, 0x24,
		0x96, 0xd3, 0x68, 0x43, 0x79, 0x7c, 0x2b, 0x4e, 0x58, 0x48, 0xa0, 0x0b, 0x8b, 0xcf, 0x60, 0xb8,
		0xfa, 0x56, 0xba, 0x28, 0x9f, 0xd6, 0xab, 0xd7, 0x77, 0xb7, 0x67, 0xf5, 0xea, 0x59, 0xe9, 0xe6,
		0xfa, 0x4a, 0x77, 0x6f, 0xf6, 0x8d, 0x75, 0xfb, 0xd1, 0xfe, 0x8b, 0x7a, 0xcf, 0xaa, 0xb5, 0xb4,
		0x1e, 0xe2, 0xfd, 0xd3, 0xd6, 0x2a, 0xdd, 0xd4, 0x2f, 0xae, 0xaf, 0x2b, 0xb6, 0x76, 0xeb, 0x06,
		0x9f, 0xd0, 0x44, 0x8b, 0x9b, 0xe8, 0xcb, 0xc5, 0xdd, 0xcd, 0xed, 0x59, 0x15, 0xed, 0x44, 0xbd,
		0x9d, 0xae, 0xaf, 0xce, 0xcf, 0x4e, 0xd1, 0x42, 0x74, 0x5b, 0xe8, 0xba, 0x5a, 0xfe, 0x5a, 0xbe,
		0x2a, 0xdd, 0x5e, 0x57, 0x09, 0xb4, 0x92, 0x56, 0x0b, 0x6a, 0xbb, 0xc6, 0xcf, 0x3b, 0xa1, 0xfe,
		0x74, 0x59, 0xa8, 0x9c, 0x47, 0xbf, 0x25, 0xda, 0x82, 0xb7, 0xf4, 0x8b, 0x3f, 0xef, 0xcd, 0x81,
		0xf6, 0x03, 0xed, 0x07, 0xda, 0x0f, 0xb4, 0x1f, 0x68, 0x3f, 0xd0, 0x7e, 0x56, 0xec, 0x37, 0x94,
		0x78, 0xe4, 0x4a, 0x34, 0xbf, 0x87, 0xf9, 0x2c, 0x01, 0xed, 0xe7, 0x48, 0xa3, 0x09, 0x77, 0x52,
		0x44, 0x07, 0xce, 0xdb, 0x92, 0x49, 0x3f, 0xe4, 0x4d, 0x5f, 0xb6, 0x42, 0x9d, 0xb7, 0xa4, 0xca,
		0x64, 0x87, 0x6b, 0xd7, 0x57, 0xf4, 0x0f, 0x37, 0xec, 0x4b, 0x21, 0xb5, 0x67, 0x94, 0xd8, 0x98,
		0x48, 0xf6, 0xd2, 0xc7, 0x1c, 0x73, 0xf6, 0x9c, 0x07, 0xac, 0xa9, 0x84, 0x2f, 0x4f, 0x45, 0x67,
		0xe4, 0xbe, 0x54, 0x0c, 0xbb, 0xe2, 0x1d, 0xa6, 0xc4, 0xd3, 0xf0, 0x5e, 0xb5, 0x59, 0x37, 0xe4,
		0x18, 0xbb, 0x0f, 0x5d, 0x99, 0x3d, 0xd3, 0x73, 0x65, 0xef, 0x28, 0x9b, 0xcd, 0x17, 0xb2, 0xd9,
		0x83, 0xc2, 0x61, 0xe1, 0xa0, 0x98, 0xcb, 0x79, 0x79, 0x9d, 0x12, 0x3c, 0xbc, 0xdb, 0x40, 0xcd,
		0x43, 0xdf, 0xa7, 0xd7, 0xa0, 0x79, 0x24, 0xe6, 0xe4, 0x9a, 0xb6, 0xfa, 0x9f, 0x1f, 0xdb, 0xea,
		0xd8, 0xf2, 0x1f, 0x2a, 0x07, 0x54, 0x0e, 0xa8, 0x1c, 0x50, 0x39, 0xa0, 0x72, 0x6c, 0x81, 0xca,
		0xd1, 0x97, 0x42, 0xdb, 0x14, 0xc9, 0xd9, 0x24, 0xe2, 0x15, 0x35, 0xda, 0x30, 0x6e, 0x8e, 0x9d,
		0xd7, 0x13, 0xa6, 0x67, 0xb8, 0x3b, 0xac, 0xd5, 0x0a, 0x78, 0x18, 0xda, 0x04, 0x86, 0x86, 0x04,
		0x3c, 0x84, 0x96, 0xa7, 0xd0, 0xf1, 0x98, 0x05, 0x9e, 0xf3, 0x94, 0x25, 0xe4, 0x3b, 0x73, 0x3e,
		0x74, 0x44, 0xc8, 0xa6, 0x0a, 0x53, 0x8a, 0x07, 0x92, 0x8c, 0x3b, 0xc5, 0x86, 0xed, 0xdd, 0x1f,
		0x38, 0xc5, 0xda, 0xdb, 0xbd, 0xe7, 0x14, 0x6b, 0xa3, 0xa7, 0x5e, 0xf4, 0xe5, 0x35, 0x33, 0x78,
		0xcb, 0xdc, 0x1f, 0x38, 0xd9, 0xf1, 0xd5, 0x4c, 0xee, 0xfe, 0xc0, 0xc9, 0xd5, 0xf6, 0xf7, 0xfe,
		0xfe, 0xfb, 0xf3, 0xaa, 0xef, 0xd9, 0x7f, 0x3d, 0x1c, 0xd8, 0x64, 0xfe, 0xec, 0x1a, 0x25, 0xb7,
		0xb8, 0xbe, 0x29, 0xff, 0x45, 0xd6, 0x37, 0xfe, 0xd9, 0x4b, 0xcb, 0x3b, 0xf6, 0xff, 0x24, 0xe4,
		0x1f, 0x24, 0x2c, 0x19, 0x7c, 0x42, 0xda, 0x59, 0x9a, 0x76, 0xf2, 0x48, 0x3b, 0xa6, 0xa7, 0x9d,
		0xa8, 0x97, 0x60, 0x4e, 0xbb, 0xe4, 0x9c, 0xd7, 0x5e, 0xbd, 0x4f, 0xd9, 0xc1, 0xf1, 0xfe, 0x6b,
		0x61, 0xf0, 0xf1, 0xe2, 0xdb, 0xa2, 0x97, 0x79, 0x9f, 0x0a, 0x83, 0xe3, 0x25, 0x3f, 0xc9, 0x0f,
		0x8e, 0x7f, 0xf1, 0x77, 0xe4, 0x06, 0x7b, 0x73, 0x2f, 0x1d, 0x5e, 0xcf, 0x2c, 0x7b, 0x43, 0x76,
		0xc9, 0x1b, 0x0e, 0x97, 0xbd, 0xe1, 0x70, 0xc9, 0x1b, 0x96, 0x9a, 0x94, 0x59, 0xf2, 0x86, 0xdc,
		0xe0, 0x6d, 0xee, 0xf5, 0x7b, 0x8b, 0x5f, 0x9a, 0x1f, 0xec, 0xbf, 0x2d, 0xfb, 0x59, 0x61, 0xf0,
		0x76, 0xbc, 0xbf, 0x8f, 0x44, 0x6c, 0x6c, 0x22, 0x46, 0xb8, 0xa4, 0x1f, 0x2e, 0x00, 0x13, 0x12,
		0xe2, 0x1d, 0x9d, 0xfb, 0xa0, 0x19, 0xcc, 0x28, 0x29, 0x47, 0x24, 0x16, 0xcc, 0xcd, 0xf1, 0x17,
		0x81, 0xaa, 0x3d, 0xad, 0x05, 0x74, 0x73, 0x0d, 0x57, 0xbe, 0xba, 0xb9, 0x2d, 0x5d, 0x5c, 0xd4,
		0x2b, 0xd5, 0xeb, 0xdb, 0xeb, 0x2f, 0xd7, 0x17, 0xf5, 0xdb, 0xff, 0xad, 0x9c, 0x11, 0x41, 0x69,
		0x4a, 0x2b, 0xea, 0xe8, 0x0d, 0x82, 0xde, 0x35, 0xe3, 0xc9, 0xd7, 0x0a, 0x9d, 0xe4, 0x34, 0xf8,
		0x84, 0xe6, 0xfa, 0x79, 0x73, 0x9d, 0x96, 0xab, 0x67, 0x5f, 0x6e, 0x2f, 0xfe, 0xb7, 0xfe, 0xe5,
		0xfa, 0xea, 0xea, 0xec, 0xcb, 0x2d, 0x85, 0x95, 0x5c, 0x68, 0xbd, 0x5f, 0x6d, 0xbd, 0xaf, 0xd5,
		0xf2, 0x49, 0x19, 0x0d, 0x66, 0x4e, 0x83, 0x95, 0xbf, 0x5e, 0xa2, 0x7b, 0x34, 0xa9, 0xbd, 0x6e,
		0xca, 0x37, 0x68, 0x2f, 0x73, 0xda, 0xeb, 0xe2, 0xfa, 0x4b, 0xe9, 0x02, 0x0d, 0x66, 0x58, 0x83,
		0xd5, 0x4b, 0x5f, 0xbf, 0x56, 0xcf, 0xbe, 0x96, 0x6e, 0xcf, 0xd0, 0x74, 0xe6, 0x34, 0xdd, 0xf5,
		0x4d, 0xe5, 0x1c, 0xed, 0x65, 0x56, 0x7b, 0x1d, 0xa2, 0xc1, 0xcc, 0x69, 0xb0, 0xca, 0x97, 0x33,
		0xc0, 0xa2, 0x49, 0xed, 0x55, 0xbe, 0x44, 0x73, 0x99, 0xd3, 0x5c, 0x37, 0xb7, 0xa5, 0xdb, 0xf2,
		0x17, 0x42, 0x2d, 0x46, 0xc2, 0x92, 0x1a, 0x96, 0x4b, 0xed, 0xd4, 0x9d, 0xdf, 0x8d, 0xe5, 0x52,
		0x3d, 0xa6, 0x1e, 0x1c, 0x41, 0x60, 0x73, 0x98, 0x89, 0x21, 0x9a, 0xa6, 0xfd, 0x9f, 0xf2, 0x36,
		0xeb, 0x77, 0x95, 0xd6, 0x42, 0x86, 0x7d, 0xa0, 0xa7, 0xcf, 0xad, 0x61, 0x91, 0x9a, 0x16, 0x03,
		0xb0, 0x48, 0xed, 0xa3, 0x35, 0x58, 0xa4, 0xb6, 0xc4, 0x20, 0x2c, 0x52, 0x23, 0x49, 0x27, 0x58,
		0xa4, 0xd6, 0x17, 0x52, 0x1d, 0x66, 0x08, 0xac, 0x52, 0x2b, 0x60, 0xd7, 0x1b, 0xec, 0x7a, 0xf3,
		0xce, 0x18, 0xec, 0x7a, 0xf3, 0xab, 0xb1, 0x8c, 0x5d, 0x6f, 0x16, 0xb8, 0x32, 0xc5, 0x5d, 0x6f,
		0xb2, 0x99, 0x62, 0xb6, 0x98, 0x2f, 0x64, 0x8a, 0xd8, 0xeb, 0xc6, 0x38, 0x9f, 0x86, 0x78, 0x03,
		0xf1, 0x66, 0xd3, 0xe2, 0x8d, 0xde, 0x01, 0xe4, 0x54, 0xbb, 0xd1, 0x39, 0x46, 0x82, 0x8c, 0x00,
		0x19, 0x01, 0x32, 0x02, 0x64, 0x04, 0xc8, 0x08, 0x06, 0xcb, 0x08, 0xd1, 0x2a, 0x61, 0xed, 0x31,
		0x42, 0x61, 0x51, 0x30, 0x99, 0x45, 0xc0, 0x58, 0xf4, 0xab, 0x6d, 0x15, 0xa3, 0xbb, 0xe7, 0x65,
		0xee, 0x0f, 0x9c, 0xa3, 0xd1, 0x5e, 0x0c, 0x5e, 0x6d, 0x6e, 0x8b, 0x86, 0xe8, 0x7f, 0x8d, 0x6b,
		0x83, 0x6b, 0x3a, 0xe3, 0x83, 0xd2, 0xda, 0x5f, 0xac, 0xf5, 0x25, 0x1f, 0x25, 0x1a, 0x97, 0x04,
		0x63, 0xec, 0x9b, 0x5c, 0xe0, 0x8d, 0xcf, 0x11, 0xf6, 0xfb, 0x8a, 0xeb, 0x1f, 0x00, 0xcf, 0x1a,
		0x83, 0x51, 0x30, 0x46, 0xc1, 0x18, 0x05, 0x63, 0x14, 0x8c, 0x51, 0x30, 0x46, 0xc1, 0x2b, 0xf6,
		0x1b, 0x0d, 0xdf, 0xef, 0x72, 0x46, 0x62, 0xcf, 0x57, 0x6f, 0x57, 0xd0, 0xe5, 0x8f, 0x2d, 0x76,
		0x71, 0xbb, 0x24, 0xa5, 0xaf, 0x98, 0x12, 0xbe, 0x9e, 0xb2, 0xbc, 0x1d, 0x36, 0x1f, 0xf8, 0x23,
		0xeb, 0x31, 0xf5, 0x30, 0x74, 0x6f, 0xd7, 0xef, 0x71, 0xd9, 0x8c, 0x40, 0xc1, 0x91, 0x5c, 0xfd,
		0xf0, 0x83, 0xef, 0x8e, 0x90, 0xa1, 0x62, 0xb2, 0xc9, 0xdd, 0x8f, 0x17, 0xc2, 0xb9, 0x2b, 0x6e,
		0x2f, 0xf0, 0x95, 0xdf, 0xf4, 0xbb, 0x61, 0xfc, 0xcc, 0x6d, 0x74, 0x7a, 0x6e, 0x20, 0x1a, 0x2e,
		0x6b, 0x0b, 0x27, 0x64, 0x6d, 0x11, 0xc6, 0xcf, 0xdc, 0x48, 0x52, 0xea, 0x4b, 0xd1, 0x64, 0xa1,
		0x72, 0xbb, 0xa3, 0x6e, 0xd5, 0x8d, 0x10, 0x2d, 0x1c, 0x7d, 0x71, 0x43, 0xc5, 0x14, 0x4f, 0xb7,
		0x97, 0x4d, 0xcf, 0xdd, 0x52, 0x74, 0x35, 0xbb, 0x2f, 0xbf, 0x4b, 0xff, 0x87, 0x74, 0x98, 0x52,
		0x81, 0x68, 0x0c, 0xef, 0x70, 0xea, 0xee, 0x36, 0xb3, 0x6b, 0xf6, 0x9c, 0x2d, 0x29, 0x07, 0xdd,
		0xa4, 0x0b, 0x4d, 0xf9, 0x63, 0x75, 0x11, 0xb8, 0x4e, 0xf2, 0xa6, 0x41, 0xdc, 0xba, 0x49, 0x9b,
		0x0c, 0x61, 0x93, 0x21, 0x6b, 0x32, 0x44, 0xbd, 0xdd, 0x78, 0x71, 0x2a, 0x02, 0x3d, 0x61, 0x3f,
		0xd7, 0xc9, 0xeb, 0x97, 0x80, 0xe6, 0x4d, 0xd2, 0x2b, 0x04, 0x79, 0x10, 0x82, 0x20, 0x04, 0x41,
		0x08, 0x82, 0x10, 0x04, 0x21, 0x88, 0x7a, 0x3a, 0x8b, 0x0d, 0x18, 0xe6, 0x0e, 0x47, 0xe9, 0x96,
		0xa3, 0xde, 0xf5, 0x60, 0x53, 0x93, 0x34, 0x87, 0x86, 0xde, 0xfa, 0x06, 0x99, 0xf4, 0x46, 0x29,
		0xcd, 0xd1, 0x4c, 0x77, 0xd4, 0xd2, 0x1e, 0xd9, 0xf4, 0x47, 0x36, 0x0d, 0x92, 0x4d, 0x87, 0x7a,
		0xd3, 0xa2, 0xe6, 0xf4, 0x18, 0xb7, 0xca, 0x2d, 0x85, 0x04, 0xf5, 0xae, 0xdf, 0xe9, 0x72, 0xd6,
		0x26, 0xb6, 0xad, 0x75, 0x81, 0x80, 0x2d, 0x95, 0xb1, 0xee, 0xfe, 0xf9, 0xf3, 0x48, 0xea, 0x76,
		0xa7, 0xc9, 0x7c, 0x47, 0x17, 0xa3, 0x68, 0x0c, 0x1d, 0x7b, 0x54, 0x6d, 0x20, 0x03, 0x76, 0x23,
		0x73, 0x68, 0x40, 0x9d, 0x07, 0xa8, 0x03, 0xd4, 0x01, 0xea, 0x00, 0x75, 0x80, 0x3a, 0x5d, 0xad,
		0xa2, 0x5b, 0xfb, 0x78, 0xaf, 0x81, 0x74, 0xb9, 0xa4, 0x77, 0x0e, 0x47, 0x6c, 0x19, 0x91, 0x40,
		0xa2, 0xa1, 0x88, 0x90, 0x4b, 0xa2, 0x14, 0x93, 0x29, 0xed, 0xa4, 0x4a, 0x35, 0xb9, 0x92, 0x4f,
		0xb2, 0xe4, 0x93, 0x2d, 0xf9, 0xa4, 0x4b, 0x23, 0xf9, 0x12, 0x49, 0xc2, 0xf4, 0x14, 0x96, 0xb9,
		0x7e, 0xab, 0x2f, 0xa4, 0xf2, 0xf2, 0x04, 0xcf, 0x71, 0xcd, 0x13, 0x32, 0x89, 0xc6, 0x76, 0x50,
		0x1f, 0x1f, 0xb4, 0xfa, 0x74, 0x8b, 0xda, 0x76, 0x51, 0x73, 0xc6, 0x11, 0xdb, 0x3e, 0x6a, 0xce,
		0x3e, 0xaa, 0x5b, 0xef, 0xcc, 0xf7, 0x1d, 0xd4, 0xb6, 0xe2, 0x21, 0xda, 0xed, 0xbf, 0x0f, 0x0d,
		0xf6, 0x4c, 0x3f, 0x34, 0xf2, 0xb9, 0xdc, 0x61, 0x0e, 0xe1, 0xb1, 0xed, 0xe1, 0xf1, 0x07, 0xac,
		0x59, 0xf4, 0xa8, 0x81, 0x59, 0x67, 0xdc, 0x98, 0x3f, 0xab, 0x80, 0x39, 0x7d, 0x19, 0x2a, 0xd6,
		0xe8, 0x12, 0xa3, 0xd7, 0x80, 0xb7, 0x79, 0xc0, 0x65, 0x13, 0x50, 0xb6, 0x02, 0xea, 0x57, 0xcf,
		0xbf, 0x58, 0xd9, 0x4c, 0xc1, 0xb3, 0x1c, 0xab, 0x64, 0x9d, 0xf8, 0x41, 0x8b, 0x07, 0xd6, 0x57,
		0xa6, 0xf8, 0x0f, 0xf6, 0x62, 0x55, 0xc6, 0xeb, 0x6f, 0xac, 0xac, 0xb5, 0x77, 0xf2, 0xb5, 0xe2,
		0x64, 0xf7, 0x6d, 0x82, 0x39, 0x94, 0xa8, 0x9c, 0xb1, 0x48, 0xd6, 0x98, 0x7a, 0x28, 0xd1, 0x2c,
		0x45, 0x5d, 0xe1, 0x58, 0xa8, 0x74, 0xac, 0xe8, 0xc2, 0xc8, 0xbc, 0xc8, 0xbc, 0x46, 0xdd, 0x0f,
		0x0a, 0xfb, 0xe4, 0xd2, 0x99, 0xb3, 0x3a, 0x97, 0xc1, 0xa8, 0xcc, 0x5d, 0x9d, 0x76, 0xf8, 0xa8,
		0xd8, 0xfc, 0xd4, 0x20, 0x54, 0x6c, 0xb6, 0x04, 0x71, 0x50, 0xb1, 0xd9, 0x28, 0xc7, 0xa0, 0x62,
		0x43, 0x7d, 0xf4, 0x4b, 0xbb, 0x62, 0x73, 0x44, 0xb0, 0x60, 0x93, 0x43, 0xc1, 0xc6, 0x3c, 0x6d,
		0x00, 0x05, 0x9b, 0xdf, 0xb0, 0x0f, 0x8a, 0xf4, 0x96, 0xf5, 0xfa, 0xef, 0x43, 0xc3, 0x84, 0x82,
		0x4d, 0x26, 0x87, 0x72, 0xcd, 0xd6, 0x07, 0x07, 0x44, 0xa3, 0x85, 0x0f, 0x94, 0x6b, 0x66, 0xdd,
		0x18, 0xe5, 0x9a, 0x2d, 0x41, 0x32, 0x94, 0x6b, 0x34, 0x68, 0x1a, 0x28, 0xd7, 0x24, 0x21, 0x73,
		0xa0, 0x5c, 0x83, 0xcc, 0xbb, 0xcd, 0xf7, 0x83, 0x4c, 0xb9, 0xe6, 0x69, 0x3c, 0x1c, 0xa0, 0x58,
		0xaf, 0x19, 0xd9, 0x86, 0x82, 0xcd, 0x22, 0x73, 0x50, 0xb0, 0x59, 0xc1, 0x9b, 0x50, 0xb0, 0x59,
		0x13, 0x6e, 0x50, 0xb0, 0xf9, 0x6d, 0x92, 0x41, 0xc1, 0x86, 0xfa, 0xf8, 0x97, 0x6e, 0xc1, 0xa6,
		0x21, 0x24, 0x0b, 0x5e, 0x08, 0x56, 0x6c, 0x8a, 0x84, 0x4c, 0xba, 0xe0, 0xb2, 0x13, 0x6d, 0x6e,
		0x02, 0x7d, 0xe0, 0x3f, 0xee, 0x94, 0x11, 0x25, 0x1b, 0x0f, 0xaa, 0xf4, 0x6f, 0x76, 0x1e, 0x28,
		0xd9, 0xac, 0x11, 0x1a, 0x58, 0x63, 0x83, 0xf0, 0x00, 0x9c, 0x51, 0xb6, 0x06, 0x45, 0x9b, 0x59,
		0x37, 0x46, 0xd1, 0x66, 0x4b, 0xa0, 0x0c, 0x45, 0x1b, 0x0d, 0xba, 0x06, 0x8a, 0x36, 0x49, 0x48,
		0x1d, 0x28, 0xda, 0x20, 0xf3, 0x6e, 0xf3, 0xfd, 0xa0, 0x50, 0xb4, 0xe1, 0xcf, 0x8a, 0xcb, 0x16,
		0x6f, 0xd1, 0x2b, 0xd9, 0xc4, 0x96, 0xa1, 0x60, 0xb3, 0xc8, 0x1c, 0x14, 0x6c, 0x56, 0xf0, 0x25,
		0x14, 0x6c, 0xd6, 0x04, 0x1b, 0x14, 0x6c, 0x7e, 0x9b, 0x62, 0x50, 0xb0, 0xa1, 0x3e, 0xf6, 0x25,
		0x5c, 0xb0, 0xd1, 0x7e, 0x6a, 0xef, 0xb2, 0x34, 0xa8, 0xe9, 0x14, 0x5f, 0xc8, 0x27, 0x90, 0x4f,
		0x20, 0x9f, 0x40, 0x3e, 0x01, 0x70, 0x40, 0x3e, 0x81, 0x7c, 0x02, 0xf9, 0x44, 0x77, 0xbc, 0xf9,
		0x3d, 0x25, 0x7c, 0xc9, 0xba, 0xf4, 0xe4, 0x93, 0xd8, 0x32, 0xc8, 0x27, 0x90, 0x4f, 0x20, 0x9f,
		0x40, 0x3e, 0x81, 0x7c, 0x02, 0xf9, 0x04, 0xf2, 0x09, 0xe4, 0x13, 0xc8, 0x27, 0x90, 0x4f, 0x20,
		0x9f, 0x40, 0x3e, 0x01, 0x70, 0x40, 0x3e, 0x81, 0x7c, 0x02, 0xf9, 0x44, 0x67, 0xbc, 0xf5, 0x58,
		0xa0, 0x04, 0x45, 0xf5, 0x64, 0x62, 0x18, 0xc4, 0x13, 0x88, 0x27, 0x10, 0x4f, 0x20, 0x9e, 0x40,
		0x3c, 0x81, 0x78, 0x02, 0xf1, 0x04, 0xe2, 0x09, 0xc4, 0x13, 0x88, 0x27, 0x10, 0x4f, 0x20, 0x9e,
		0x00, 0x38, 0x20, 0x9e, 0x40, 0x3c, 0x81, 0x78, 0xa2, 0x33, 0xde, 0x54, 0xc0, 0x64, 0x28, 0xc6,
		0x6b, 0xcf, 0x89, 0xe9, 0x27, 0x33, 0xb6, 0x41, 0x42, 0x81, 0x84, 0x02, 0x09, 0x05, 0x12, 0x0a,
		0x24, 0x14, 0x48, 0x28, 0x90, 0x50, 0x20, 0xa1, 0x40, 0x42, 0x81, 0x84, 0x02, 0x09, 0x05, 0x12,
		0x0a, 0x80, 0x03, 0x12, 0x0a, 0x24, 0x94, 0x1d, 0x96, 0x50, 0xfe, 0xd8, 0x61, 0xf2, 0xb0, 0x4b,
		0x52, 0xfa, 0x8a, 0x29, 0xe1, 0xd3, 0xd8, 0x42, 0xd5, 0x0e, 0x9b, 0x0f, 0xfc, 0x91, 0xf5, 0x58,
		0xb4, 0xf3, 0xad, 0xed, 0xfa, 0x3d, 0x2e, 0x9b, 0x91, 0x44, 0xe1, 0x48, 0xae, 0x7e, 0xf8, 0xc1,
		0x77, 0x47, 0x0c, 0xe9, 0x48, 0x36, 0xb9, 0xfb, 0xf1, 0x42, 0x38, 0x77, 0xc5, 0xed, 0x8d, 0xfb,
		0xa7, 0x30, 0x7e, 0xe6, 0x36, 0x3a, 0x3d, 0x37, 0x10, 0x0d, 0x97, 0xb5, 0x85, 0x13, 0xb2, 0xb6,
		0x08, 0xe3, 0x67, 0xae, 0xe8, 0x3d, 0xe5, 0x9d, 0xbe, 0x14, 0x4d, 0x16, 0x2a, 0xb7, 0x3b, 0x1a,
		0x70, 0xb9, 0x81, 0xdf, 0x57, 0x3c, 0x1c, 0x7d, 0x71, 0xfb, 0xf2, 0xbb, 0xf4, 0x7f, 0x48, 0x87,
		0x29, 0x15, 0x88, 0x46, 0xf4, 0x83, 0xb9, 0x4b, 0x6e, 0xa8, 0x98, 0xe2, 0x7a, 0xfb, 0x41, 0x7d,
		0x3e, 0xad, 0xe7, 0x93, 0x35, 0x45, 0xd1, 0x10, 0x3e, 0x28, 0x9c, 0xc2, 0x6d, 0x5f, 0x88, 0x50,
		0x95, 0x94, 0x0a, 0xb4, 0xc6, 0xb0, 0x7d, 0x29, 0xe4, 0x59, 0x97, 0x0f, 0xb9, 0x41, 0xf3, 0x46,
		0xa9, 0xf6, 0x25, 0x7b, 0x9e, 0xb1, 0xc4, 0x3b, 0xca, 0x66, 0xf3, 0x85, 0x6c, 0xf6, 0xa0, 0x70,
		0x58, 0x38, 0x28, 0xe6, 0x72, 0x5e, 0xde, 0xd3, 0xb8, 0xdd, 0xac, 0x7d, 0x3d, 0x44, 0x28, 0xde,
		0x3a, 0x19, 0xba, 0x8e, 0xec, 0x77, 0xbb, 0x14, 0x4c, 0xb9, 0x0b, 0x79, 0xa0, 0x75, 0xe7, 0x58,
		0x5d, 0x11, 0x4c, 0x24, 0xff, 0x6d, 0x41, 0xde, 0xd3, 0x38, 0xe8, 0xb2, 0x43, 0x15, 0xf4, 0x9b,
		0x4a, 0x8e, 0x07, 0xdd, 0x57, 0xa3, 0xdb, 0x51, 0x1e, 0xdf, 0x8d, 0xfa, 0x64, 0x94, 0x52, 0x3f,
		0xe9, 0xf4, 0xea, 0x55, 0xd1, 0xa8, 0x97, 0xda, 0xe2, 0x86, 0xb5, 0x45, 0xbd, 0xdc, 0x7b, 0xca,
		0xdf, 0x8d, 0xfe, 0xee, 0xfa, 0x85, 0xdf, 0x1c, 0xfe, 0xa8, 0x3a, 0xfc, 0x7b, 0xeb, 0x77, 0xa3,
		0x3f, 0xae, 0x14, 0xff, 0x6d, 0x7f, 0xec, 0x46, 0x2e, 0x4d, 0xf7, 0x13, 0x53, 0x8e, 0x79, 0xdd,
		0xb1, 0x6e, 0x5c, 0x8c, 0xa7, 0xeb, 0xf5, 0xe9, 0xf9, 0x5e, 0x3a, 0x9f, 0x94, 0x92, 0x77, 0x4f,
		0x18, 0x74, 0x54, 0x62, 0xb3, 0xfc, 0x40, 0x74, 0x84, 0xb4, 0x86, 0x4e, 0xe6, 0x88, 0xb4, 0xf6,
		0xac, 0xd4, 0xc3, 0x9f, 0xfa, 0x78, 0x93, 0x14, 0x5f, 0x6a, 0xe4, 0x49, 0x8d, 0xfc, 0x98, 0x56,
		0x74, 0x69, 0xca, 0x19, 0xb4, 0x73, 0x45, 0x8a, 0xa8, 0xb7, 0x69, 0xb4, 0x4b, 0x27, 0xa7, 0x25,
		0x9f, 0x61, 0x92, 0xfd, 0x84, 0x84, 0xa3, 0x2b, 0xed, 0xa8, 0xa2, 0x1a, 0x4d, 0xc9, 0x3a, 0x63,
		0x72, 0x2e, 0x92, 0xa0, 0x7b, 0xd8, 0x23, 0xf5, 0x34, 0x69, 0xaf, 0x88, 0x0b, 0xb4, 0xa3, 0x8f,
		0x4b, 0xd8, 0xdd, 0x27, 0x93, 0x1d, 0x12, 0xfe, 0x98, 0x78, 0x2e, 0x5f, 0x26, 0xe1, 0x0f, 0x4a,
		0x71, 0x8e, 0x9e, 0x9e, 0xb9, 0x77, 0x69, 0x57, 0xbd, 0xb5, 0xcd, 0x95, 0xd3, 0x56, 0x92, 0xd6,
		0x36, 0xb7, 0x0d, 0x89, 0xd3, 0xe8, 0xc4, 0x99, 0x42, 0x71, 0x2d, 0xc1, 0xbc, 0xf9, 0x87, 0x41,
		0x3e, 0x97, 0x96, 0xaf, 0x91, 0xf3, 0x31, 0x3b, 0x51, 0xba, 0xd9, 0xd0, 0x68, 0x26, 0x99, 0x10,
		0xd8, 0xbc, 0x83, 0x26, 0xe0, 0x9c, 0xb6, 0xe4, 0xa2, 0xf3, 0xd0, 0xf0, 0x83, 0x30, 0x31, 0xbf,
		0x8c, 0xa9, 0x63, 0xfa, 0x51, 0x09, 0x05, 0x59, 0xb2, 0x68, 0x98, 0x38, 0x12, 0xa6, 0x81, 0x82,
		0xe9, 0x22, 0x60, 0x5a, 0xe8, 0x97, 0x3a, 0xf2, 0xa5, 0x8e, 0x7a, 0xa9, 0x23, 0x9e, 0x59, 0xe9,
		0xf5, 0x54, 0x24, 0x2b, 0x97, 0xc7, 0x7d, 0x57, 0x7a, 0x83, 0xe9, 0xf8, 0x13, 0xb7, 0x6c, 0x3c,
		0x7d, 0x80, 0xf1, 0x34, 0xc6, 0xd3, 0x18, 0x4f, 0x6f, 0xe1, 0x78, 0x3a, 0xe9, 0x4e, 0x38, 0xfe,
		0x20, 0xd6, 0xfa, 0x37, 0x6a, 0x13, 0x21, 0x9d, 0x9e, 0x1f, 0xaa, 0xf4, 0x22, 0x61, 0x12, 0xef,
		0x1f, 0x0d, 0x48, 0xab, 0x3a, 0x9d, 0x4a, 0x57, 0x9d, 0x7a, 0x97, 0xad, 0xa3, 0xeb, 0xd6, 0xdb,
		0x85, 0xeb, 0xea, 0xca, 0xb5, 0x77, 0xe9, 0xda, 0xbb, 0x76, 0xed, 0x5d, 0x7c, 0x3a, 0x5d, 0x7d,
		0x4a, 0x5d, 0x7e, 0xea, 0x5d, 0x7f, 0xfc, 0x81, 0xe3, 0x9a, 0x5f, 0xea, 0x81, 0x33, 0xe9, 0x2e,
		0xc6, 0x9f, 0x9f, 0xb2, 0xd3, 0xa6, 0x9b, 0x00, 0x52, 0x13, 0x3e, 0x28, 0x25, 0x04, 0x1a, 0x89,
		0x41, 0x77, 0x82, 0x20, 0x93, 0x28, 0xc8, 0x24, 0x0c, 0x32, 0x89, 0x23, 0xdd, 0x04, 0x92, 0x72,
		0x22, 0xd1, 0x96, 0x50, 0xde, 0x27, 0x16, 0x7d, 0xf1, 0xf6, 0x2e, 0xbf, 0xe8, 0x8a, 0x35, 0x3d,
		0x69, 0x46, 0xdb, 0xb8, 0x83, 0x52, 0xda, 0xa1, 0x95, 0x7e, 0xa8, 0xa4, 0x21, 0x72, 0xe9, 0x88,
		0x5c, 0x5a, 0x22, 0x97, 0x9e, 0xf4, 0xa4, 0x29, 0x4d, 0xe9, 0x4a, 0x7b, 0xda, 0x8a, 0x0d, 0x98,
		0xac, 0x55, 0xd0, 0x1e, 0xa9, 0xd3, 0x43, 0x17, 0xd2, 0x5c, 0x3c, 0xf1, 0x5f, 0x29, 0x4d, 0xf3,
		0xc6, 0x7c, 0x64, 0x76, 0x08, 0xa4, 0xb4, 0x33, 0x20, 0xcd, 0x1d, 0x01, 0xa9, 0xed, 0xd5, 0x43,
		0x76, 0x07, 0x40, 0xb2, 0x1b, 0xf1, 0x90, 0xdd, 0xf1, 0x6f, 0xb7, 0x37, 0x49, 0x21, 0xb3, 0xb3,
		0x5f, 0xdc, 0xef, 0x74, 0x39, 0x6b, 0x07, 0xbc, 0x4d, 0xa1, 0xd3, 0x99, 0x8c, 0xbc, 0x0a, 0x04,
		0x6c, 0xa9, 0x8c, 0x27, 0x11, 0x7e, 0xfe, 0x3c, 0x9a, 0x28, 0xea, 0x4e, 0x52, 0xf9, 0xae, 0xee,
		0xc6, 0xa2, 0x71, 0xfc, 0xd5, 0xa3, 0x91, 0xae, 0xa7, 0x54, 0x47, 0x62, 0xf0, 0x05, 0xa8, 0x03,
		0xd4, 0x01, 0xea, 0x00, 0x75, 0x80, 0x3a, 0x40, 0x1d, 0xa0, 0x6e, 0x4d, 0xa8, 0x1b, 0x75, 0x3b,
		0x60, 0xba, 0xd4, 0x9b, 0x22, 0x9d, 0xc5, 0xb9, 0xbf, 0x1c, 0x30, 0x69, 0x2c, 0xde, 0xfd, 0xe5,
		0x50, 0x01, 0xd1, 0x81, 0xe8, 0x40, 0x74, 0x20, 0x3a, 0x10, 0x9d, 0xae, 0x56, 0xd1, 0x5d, 0xc9,
		0x8a, 0x0d, 0x89, 0xf6, 0x83, 0x15, 0xb2, 0xc5, 0x9f, 0xe9, 0x9d, 0x88, 0x35, 0x63, 0x1b, 0x4e,
		0xc4, 0xa2, 0x9c, 0x48, 0x29, 0x26, 0x54, 0xda, 0x89, 0x95, 0x6a, 0x82, 0x25, 0x9f, 0x68, 0xc9,
		0x27, 0x5c, 0xf2, 0x89, 0x97, 0x46, 0x02, 0x26, 0x92, 0x88, 0xe9, 0x49, 0x2c, 0x84, 0xa5, 0x16,
		0x8a, 0x92, 0xcb, 0x22, 0xe9, 0xe5, 0x27, 0xff, 0x22, 0xa4, 0x08, 0xb9, 0x0a, 0xe3, 0x67, 0x63,
		0xa1, 0x66, 0x84, 0x19, 0x38, 0x67, 0x84, 0x4a, 0x50, 0xda, 0x0d, 0x1e, 0x2a, 0x67, 0xbc, 0xd3,
		0x0a, 0x31, 0x2e, 0x9d, 0x9a, 0x06, 0x2c, 0x05, 0x96, 0x02, 0x4b, 0x81, 0xa5, 0xc0, 0x52, 0x60,
		0xe9, 0x8e, 0x61, 0x29, 0x0e, 0x6a, 0x05, 0xc6, 0xfd, 0x42, 0x9b, 0x34, 0xfd, 0xc7, 0xc7, 0xbe,
		0x14, 0xea, 0x85, 0xaa, 0xc8, 0xf8, 0xd1, 0x40, 0x20, 0x1d, 0x90, 0x0e, 0x48, 0x07, 0xa4, 0x03,
		0xd2, 0x01, 0xe9, 0x76, 0x0c, 0xe9, 0xa0, 0x34, 0xfe, 0x5a, 0xea, 0xf9, 0x25, 0xa5, 0x71, 0xc2,
		0x15, 0x82, 0x87, 0xf1, 0xf3, 0x17, 0x88, 0x8d, 0x34, 0x29, 0x95, 0x3f, 0x2b, 0x87, 0x3c, 0xa9,
		0x2e, 0x32, 0x12, 0xb4, 0x0a, 0x5a, 0x05, 0xad, 0x82, 0x56, 0x41, 0xab, 0xa0, 0x55, 0xd0, 0x2a,
		0x68, 0x75, 0x5d, 0x5a, 0x9d, 0x65, 0x8b, 0x21, 0xb1, 0xbe, 0x63, 0x0d, 0x50, 0x2b, 0x4d, 0x6a,
		0x15, 0xf2, 0x89, 0x75, 0x45, 0xcb, 0x09, 0x38, 0x0b, 0x35, 0x1f, 0x0a, 0xbe, 0x30, 0x42, 0x3f,
		0xd8, 0x07, 0x56, 0x05, 0xab, 0x82, 0x55, 0xc1, 0xaa, 0x60, 0x55, 0xb0, 0xea, 0x8e, 0xb1, 0xaa,
		0x68, 0x71, 0xa9, 0x84, 0x7a, 0x21, 0xca, 0xab, 0x39, 0x42, 0x36, 0x95, 0xc7, 0xb7, 0xea, 0x84,
		0x85, 0x04, 0xbb, 0xd4, 0x49, 0x83, 0x96, 0xaf, 0xbe, 0x95, 0x2e, 0xca, 0xa7, 0xf5, 0xea, 0xf5,
		0xdd, 0xed, 0x59, 0xbd, 0x7a, 0x56, 0xba, 0xb9, 0xbe, 0xa2, 0xd6, 0xbb, 0x7e, 0x63, 0xdd, 0x7e,
		0xb4, 0x89, 0xf7, 0x3d, 0x29, 0xbb, 0x86, 0x8f, 0x57, 0x72, 0x16, 0x2d, 0x6c, 0xdd, 0xd2, 0x4d,
		0xfd, 0xe2, 0xfa, 0xba, 0x62, 0x93, 0xb3, 0x76, 0xf0, 0x09, 0x4d, 0xba, 0x5e, 0x93, 0x7e, 0xb9,
		0xb8, 0xbb, 0xb9, 0x3d, 0xab, 0xa2, 0x5d, 0xb7, 0xad, 0x5d, 0xaf, 0xaf, 0xce, 0xcf, 0x4e, 0xd1,
		0xa2, 0xdb, 0xd3, 0xa2, 0xd7, 0xd5, 0xf2, 0xd7, 0xf2, 0x55, 0xe9, 0xf6, 0xba, 0x4a, 0xb0, 0x55,
		0x49, 0x59, 0x54, 0xc3, 0x78, 0x84, 0x98, 0x15, 0x14, 0xd4, 0xc1, 0x2e, 0x0b, 0x95, 0xf3, 0xe8,
		0xb7, 0x44, 0x5b, 0xf0, 0x16, 0x3d, 0x71, 0xf0, 0xbd, 0x79, 0xd0, 0x06, 0x17, 0x99, 0x03, 0x6d,
		0x70, 0x05, 0x87, 0x82, 0x36, 0xb8, 0x92, 0xa7, 0x43, 0x1b, 0xfc, 0x4d, 0x03, 0xa1, 0x0d, 0x1a,
		0xc4, 0xbf, 0x84, 0xb5, 0x41, 0x25, 0x1e, 0xb9, 0x12, 0xcd, 0xef, 0x61, 0x3e, 0x4b, 0x50, 0x1b,
		0x3c, 0x22, 0x64, 0xd2, 0x9d, 0x14, 0x2a, 0x8c, 0x0e, 0x6f, 0x66, 0xd2, 0x0f, 0x79, 0xd3, 0x97,
		0xad, 0x90, 0xd2, 0x2d, 0xab, 0x32, 0xd9, 0xe1, 0xe4, 0xf4, 0x36, 0x7a, 0xc3, 0x3d, 0xfb, 0x52,
		0x48, 0x72, 0x19, 0x31, 0x36, 0x2e, 0x92, 0x4d, 0xe9, 0x30, 0xd7, 0x9c, 0x7d, 0xe7, 0x01, 0x6b,
		0x2a, 0xe1, 0xcb, 0x53, 0xd1, 0x19, 0x85, 0x03, 0x55, 0x43, 0xaf, 0x78, 0x87, 0x29, 0xf1, 0x34,
		0xbc, 0x97, 0x6d, 0xd6, 0x0d, 0x39, 0xb4, 0x99, 0x5f, 0x09, 0x0d, 0xf6, 0x4c, 0x3f, 0x34, 0xbc,
		0xa3, 0x6c, 0x36, 0x5f, 0xc8, 0x66, 0x0f, 0x0a, 0x87, 0x85, 0x83, 0x62, 0x2e, 0xe7, 0xe5, 0x29,
		0x95, 0x90, 0x10, 0x2d, 0x5b, 0xcc, 0x93, 0xf4, 0xac, 0xa9, 0x41, 0xf3, 0xa2, 0xd2, 0x9b, 0x92,
		0x39, 0x9f, 0x6b, 0x0e, 0xf2, 0x69, 0x9c, 0xd3, 0xf5, 0x11, 0xee, 0xa1, 0x73, 0x2d, 0x31, 0x08,
		0x3a, 0xd7, 0xaa, 0xd6, 0x41, 0xe7, 0x5a, 0xd3, 0x40, 0xe8, 0x5c, 0x5b, 0x41, 0x02, 0xd0, 0xb9,
		0xfe, 0xab, 0xdf, 0xea, 0x0b, 0xa9, 0x0e, 0x33, 0x04, 0x25, 0xae, 0x02, 0x24, 0xa4, 0xff, 0x78,
		0x40, 0x42, 0x5a, 0x6f, 0x9c, 0x0c, 0x09, 0x69, 0xeb, 0x07, 0xc5, 0x90, 0x90, 0xd6, 0x0b, 0x8d,
		0x6c, 0xa6, 0x98, 0x2d, 0xe6, 0x0b, 0x99, 0x22, 0x84, 0xa3, 0xad, 0x8f, 0x11, 0x08, 0x47, 0x0b,
		0x1f, 0x35, 0x80, 0xeb, 0x8c, 0x1b, 0xf3, 0x67, 0x15, 0x30, 0xa7, 0x2f, 0x43, 0xc5, 0x1a, 0x5d,
		0x62, 0x08, 0x1b, 0xf0, 0x36, 0x0f, 0xb8, 0x6c, 0x82, 0xcc, 0x56, 0xe0, 0xfd, 0x56, 0xc0, 0xda,
		0xca, 0x11, 0x5c, 0xb5, 0x1d, 0xd1, 0x0a, 0x1c, 0xd6, 0x6a, 0x45, 0x7b, 0x26, 0x87, 0x96, 0x63,
		0x95, 0x5a, 0x4f, 0x3c, 0x50, 0x22, 0xe4, 0xc3, 0x71, 0xa5, 0xe5, 0xb7, 0xad, 0xcb, 0x7e, 0x57,
		0x89, 0x5e, 0x97, 0x5b, 0x95, 0xe1, 0x2b, 0xfe, 0x96, 0x42, 0x5a, 0x27, 0x5f, 0x2b, 0x36, 0xc1,
		0xe4, 0x4a, 0x54, 0xe7, 0x58, 0xa4, 0x77, 0x4c, 0xbd, 0x96, 0x68, 0xe6, 0xa2, 0x2e, 0x7d, 0x2c,
		0x94, 0x40, 0x36, 0xe0, 0xd6, 0xc8, 0xd0, 0xc8, 0xd0, 0x46, 0xdd, 0x0f, 0x12, 0xa5, 0x1d, 0x5a,
		0x92, 0x3c, 0xad, 0xb3, 0xba, 0xa7, 0xdd, 0x3f, 0x0a, 0x3b, 0x3f, 0x35, 0x08, 0x85, 0x9d, 0x2d,
		0x01, 0x1e, 0x14, 0x76, 0x36, 0x4a, 0x35, 0x28, 0xec, 0x50, 0x1f, 0x1f, 0x13, 0xde, 0xdc, 0xa0,
		0xf7, 0x94, 0x77, 0xc8, 0xc5, 0x60, 0xbc, 0xb9, 0xc1, 0x11, 0xad, 0xcd, 0xb8, 0x14, 0x0f, 0x24,
		0x39, 0x19, 0xc1, 0xde, 0xdb, 0xbb, 0x3f, 0x70, 0x8a, 0xcc, 0x69, 0x97, 0x9c, 0xf3, 0xda, 0xab,
		0xf7, 0x29, 0x3b, 0x38, 0xde, 0x7f, 0x2d, 0x0c, 0x3e, 0x5e, 0x7c, 0x5b, 0xf4, 0x32, 0xef, 0x53,
		0x61, 0x70, 0xbc, 0xe4, 0x27, 0xf9, 0xc1, 0xf1, 0x2f, 0xfe, 0x8e, 0xdc, 0x60, 0x6f, 0xee, 0xa5,
		0xc3, 0xeb, 0x99, 0x65, 0x6f, 0xc8, 0x2e, 0x79, 0xc3, 0xe1, 0xb2, 0x37, 0x1c, 0x2e, 0x79, 0xc3,
		0x52, 0x93, 0x32, 0x4b, 0xde, 0x90, 0x1b, 0xbc, 0xcd, 0xbd, 0x7e, 0x6f, 0xf1, 0x4b, 0xf3, 0x83,
		0xfd, 0xb7, 0x65, 0x3f, 0x2b, 0x0c, 0xde, 0x8e, 0xf7, 0xf7, 0xdd, 0x3d, 0x2f, 0x73, 0x7f, 0xe0,
		0x1c, 0xd5, 0xde, 0xbc, 0xfb, 0x03, 0xc7, 0xab, 0x0d, 0x5f, 0x59, 0x7b, 0xbb, 0xf7, 0x9c, 0xe2,
		0xe4, 0xe9, 0xf0, 0xff, 0x7d, 0x3a, 0xdd, 0x72, 0x8d, 0x52, 0x3c, 0x5d, 0xdf, 0x94, 0xff, 0x22,
		0x1b, 0x54, 0xff, 0x20, 0xaa, 0x88, 0x47, 0xd5, 0x9f, 0x36, 0xb4, 0x06, 0x68, 0x0d, 0x73, 0x81,
		0x3b, 0xde, 0xb6, 0xd0, 0xef, 0x2b, 0x4e, 0x4f, 0x70, 0x98, 0x35, 0x0e, 0xaa, 0x03, 0x54, 0x07,
		0xa8, 0x0e, 0x50, 0x1d, 0xa0, 0x3a, 0x40, 0x75, 0xd8, 0x31, 0xd5, 0x01, 0xe7, 0x0f, 0xd2, 0x47,
		0xb9, 0x3f, 0x76, 0x38, 0x84, 0xec, 0x92, 0x94, 0xbe, 0x62, 0x4a, 0x10, 0xd9, 0x99, 0xdb, 0x0e,
		0x9b, 0x0f, 0xfc, 0x91, 0x8d, 0x4f, 0xd4, 0xb6, 0x5d, 0xbf, 0xc7, 0x65, 0x33, 0x02, 0x25, 0x47,
		0x72, 0xf5, 0xc3, 0x0f, 0xbe, 0x3b, 0x42, 0x86, 0x8a, 0xc9, 0x26, 0x77, 0x3f, 0x5e, 0x08, 0xe7,
		0xae, 0xb8, 0xbd, 0xc0, 0x57, 0x7e, 0xd3, 0xef, 0x86, 0xf1, 0x33, 0xb7, 0xd1, 0xe9, 0xb9, 0x81,
		0x68, 0xb8, 0xac, 0x2d, 0x9c, 0x90, 0xb5, 0x45, 0x18, 0x3f, 0x73, 0x23, 0x89, 0xb0, 0x2f, 0x45,
		0x93, 0x85, 0xca, 0x95, 0x5c, 0x74, 0x1e, 0x1a, 0x7e, 0x10, 0xc6, 0xcf, 0x5c, 0xd6, 0xfa, 0x37,
		0xca, 0x04, 0x42, 0x3a, 0x3d, 0x3f, 0x54, 0x6e, 0x44, 0xb7, 0xe1, 0xe8, 0xcb, 0x68, 0xf7, 0x79,
		0xbd, 0x09, 0x42, 0x9f, 0x27, 0x6b, 0xf4, 0x62, 0xbb, 0x2f, 0xbf, 0x4b, 0xff, 0x87, 0x74, 0x98,
		0x52, 0x81, 0x68, 0x0c, 0x5b, 0x44, 0xbb, 0x27, 0x4f, 0x57, 0x13, 0xcc, 0xdb, 0xa6, 0x39, 0xde,
		0x27, 0xbd, 0xbf, 0x66, 0x33, 0xa8, 0x0c, 0x7e, 0x28, 0x0d, 0x7a, 0x68, 0x0e, 0x76, 0xa8, 0x0d,
		0x72, 0xc8, 0x0e, 0x6e, 0xc8, 0x0e, 0x6a, 0xc8, 0x0e, 0x66, 0x76, 0x9b, 0xbc, 0x4e, 0x45, 0x40,
		0xa3, 0xdb, 0x99, 0x4b, 0x52, 0xf4, 0xd4, 0xc4, 0x79, 0x13, 0x69, 0x69, 0x8a, 0x1e, 0x34, 0x45,
		0xf2, 0xe9, 0x95, 0x76, 0x9a, 0xa5, 0x9a, 0x6e, 0xc9, 0xa7, 0x5d, 0xf2, 0xe9, 0x97, 0x7c, 0x1a,
		0xa6, 0x23, 0xc5, 0x58, 0x84, 0x34, 0x45, 0x2a, 0xe9, 0x39, 0x36, 0x68, 0x98, 0xfb, 0x1c, 0x45,
		0x4d, 0xe9, 0x7c, 0xd7, 0xa3, 0x4e, 0x4d, 0x24, 0x16, 0x7a, 0xb4, 0x4a, 0x7f, 0x64, 0xd3, 0x35,
		0xe5, 0xb4, 0x6d, 0x46, 0xfa, 0xa6, 0x9e, 0xc6, 0x8d, 0x49, 0xe7, 0xc6, 0xa4, 0x75, 0x63, 0xd2,
		0x3b, 0xad, 0x34, 0x4f, 0x2c, 0xdd, 0xc7, 0xad, 0x78, 0x4b, 0x31, 0xc1, 0x5a, 0xb4, 0x4f, 0x14,
		0x9e, 0x1b, 0x0d, 0x17, 0x08, 0xda, 0x36, 0x73, 0xc2, 0xf0, 0xe8, 0xa0, 0xe0, 0x29, 0xac, 0x60,
		0x5d, 0x21, 0xf5, 0xd0, 0xb4, 0x47, 0xd5, 0x35, 0xb2, 0xe0, 0x3b, 0x32, 0x8f, 0x26, 0xf4, 0x7a,
		0x80, 0x5e, 0x40, 0x2f, 0xa0, 0x17, 0xd0, 0x0b, 0xe8, 0x45, 0x66, 0x5d, 0xdc, 0x8a, 0xd4, 0xb4,
		0xae, 0xd8, 0xb0, 0x88, 0xd1, 0xba, 0x9c, 0xf0, 0x26, 0x7a, 0xef, 0xa4, 0xaf, 0xa1, 0xa5, 0x44,
		0x03, 0x95, 0xa6, 0x02, 0x46, 0x1e, 0x0a, 0x4c, 0x80, 0x03, 0xb3, 0x20, 0xc1, 0x14, 0x58, 0x30,
		0x0e, 0x1a, 0x8c, 0x83, 0x07, 0xe3, 0x20, 0x82, 0x26, 0x4c, 0x10, 0x85, 0x8a, 0xb8, 0x75, 0xc9,
		0x2a, 0x6a, 0x73, 0xfd, 0x66, 0x5f, 0x48, 0xe5, 0xe5, 0x29, 0xf7, 0x99, 0xe3, 0x2c, 0x9e, 0x27,
		0x6c, 0x22, 0xcd, 0xbd, 0xa1, 0x3f, 0x3e, 0x68, 0xe7, 0x1c, 0x8b, 0xfa, 0xde, 0xd1, 0x73, 0xc6,
		0x12, 0xdf, 0x4b, 0x7a, 0xce, 0x5e, 0x53, 0xf6, 0xcd, 0x9d, 0xef, 0xab, 0xa8, 0xef, 0xa3, 0x6b,
		0x48, 0x5a, 0x7a, 0x1f, 0x6a, 0xec, 0xd9, 0xbc, 0x50, 0xcb, 0xe7, 0x72, 0x87, 0x39, 0x84, 0x1b,
		0xc2, 0xcd, 0x00, 0x36, 0xa5, 0x6f, 0x5d, 0x0d, 0x4c, 0xbf, 0x42, 0x58, 0x10, 0xde, 0x06, 0x7b,
		0xce, 0x56, 0xba, 0xdb, 0x62, 0x1b, 0x08, 0xa5, 0x93, 0xa1, 0x52, 0xf5, 0xfc, 0x8b, 0x95, 0xcd,
		0x14, 0x3c, 0xcb, 0xb1, 0x4a, 0xd6, 0x89, 0x1f, 0xb4, 0x78, 0x60, 0x7d, 0x65, 0x8a, 0xff, 0x60,
		0x2f, 0x56, 0x65, 0xbc, 0xd4, 0xd2, 0xca, 0x5a, 0x7b, 0x27, 0x5f, 0x2b, 0x4e, 0x76, 0xdf, 0x36,
		0x80, 0x01, 0x0c, 0x91, 0xa3, 0xa6, 0x43, 0x41, 0x73, 0xb6, 0xd0, 0x9e, 0xb3, 0xdd, 0x34, 0x85,
		0x2a, 0x36, 0x7c, 0x56, 0xa9, 0x5a, 0x31, 0x04, 0x40, 0x0e, 0x20, 0x87, 0x9d, 0xbe, 0x5f, 0x14,
		0x0f, 0x21, 0xa2, 0x3b, 0xa7, 0x7e, 0x2e, 0xe3, 0x52, 0x9d, 0x5b, 0x3f, 0x4d, 0x48, 0xa8, 0x30,
		0xfe, 0x96, 0x81, 0xa8, 0x30, 0xee, 0x28, 0xd2, 0xa1, 0xc2, 0x98, 0x2a, 0xb7, 0xa1, 0xc2, 0xb8,
		0x6d, 0x6a, 0x84, 0x59, 0x15, 0xc6, 0x23, 0x03, 0x0a, 0x8c, 0x39, 0x14, 0x18, 0xb7, 0x5f, 0xcb,
		0x41, 0x81, 0x31, 0x41, 0x7b, 0x51, 0xf1, 0xd8, 0xf1, 0xac, 0xf4, 0x3e, 0xd4, 0x4c, 0x2c, 0x30,
		0x66, 0x72, 0x28, 0x2f, 0x22, 0xd8, 0x4c, 0x00, 0x53, 0xfa, 0xd6, 0xa1, 0xbc, 0xb8, 0x4a, 0x58,
		0xa0, 0xbc, 0xb8, 0xa3, 0x48, 0x8a, 0xf2, 0x22, 0x99, 0x81, 0x20, 0xca, 0x8b, 0xe9, 0x1b, 0x8e,
		0xf2, 0x22, 0xac, 0x33, 0x84, 0x1c, 0x50, 0x5e, 0xfc, 0x85, 0x78, 0x8e, 0x6a, 0x76, 0x4f, 0xe3,
		0xe1, 0x94, 0x09, 0xf5, 0xc5, 0x91, 0xad, 0x28, 0x30, 0xae, 0x63, 0x1e, 0x0a, 0x8c, 0x1b, 0xf4,
		0x46, 0x14, 0x18, 0x13, 0x82, 0x39, 0x14, 0x18, 0x13, 0x27, 0x37, 0x14, 0x18, 0xb7, 0x4d, 0x8f,
		0x30, 0xa7, 0xc0, 0xd8, 0x10, 0x92, 0x05, 0x2f, 0x06, 0x54, 0x18, 0x8b, 0x84, 0x4d, 0xbc, 0xe0,
		0xb2, 0x13, 0x6d, 0x16, 0x06, 0x3d, 0xe7, 0x37, 0xef, 0xa4, 0x91, 0x25, 0x46, 0x0f, 0x55, 0x8f,
		0x84, 0x3b, 0x2b, 0x94, 0x18, 0x13, 0x08, 0x35, 0xac, 0x61, 0x44, 0xb8, 0x6d, 0x49, 0xb8, 0x41,
		0x2a, 0x5c, 0xeb, 0x81, 0x22, 0xe3, 0x2a, 0x61, 0x81, 0x22, 0xe3, 0x8e, 0x42, 0x29, 0x8a, 0x8c,
		0x64, 0xc6, 0x82, 0x28, 0x32, 0xa6, 0x6f, 0x38, 0x8a, 0x8c, 0xb0, 0xce, 0x10, 0x72, 0x40, 0x91,
		0xf1, 0xd7, 0x38, 0x86, 0xcb, 0x16, 0x6f, 0xd1, 0x2f, 0x31, 0xc6, 0x96, 0xa2, 0xc0, 0xb8, 0x8e,
		0x79, 0x28, 0x30, 0x6e, 0xd0, 0x17, 0x51, 0x60, 0x4c, 0x08, 0xe4, 0x50, 0x60, 0x4c, 0x9c, 0xda,
		0x50, 0x60, 0xdc, 0x36, 0x2d, 0xc2, 0xa0, 0x02, 0xa3, 0xef, 0x77, 0x39, 0x93, 0x06, 0x54, 0x18,
		0x3d, 0x0f, 0x2e, 0xb8, 0x1a, 0x46, 0x42, 0x0e, 0xdb, 0xf8, 0x03, 0x72, 0x18, 0xe8, 0x69, 0x1d,
		0x8a, 0x82, 0x1c, 0xa6, 0x03, 0xac, 0x20, 0x87, 0xc1, 0x3a, 0x0b, 0x72, 0x98, 0xc9, 0x2c, 0x63,
		0xfb, 0x3d, 0x25, 0x7c, 0xc9, 0xba, 0xf4, 0xe5, 0xb0, 0xd8, 0x52, 0xc8, 0x61, 0xeb, 0x98, 0x07,
		0x39, 0x6c, 0x93, 0xbe, 0x08, 0x39, 0x2c, 0x19, 0x90, 0x83, 0x1c, 0x96, 0x38, 0xb5, 0x41, 0x0e,
		0xdb, 0x36, 0x2d, 0x02, 0x72, 0xd8, 0xe6, 0xd3, 0x38, 0xe4, 0xb0, 0x95, 0xee, 0x1a, 0xe4, 0xb0,
		0x24, 0x1e, 0x90, 0xc3, 0x40, 0x4f, 0xeb, 0x50, 0x14, 0xe4, 0x30, 0x1d, 0x60, 0x05, 0x39, 0x0c,
		0xd6, 0x59, 0x90, 0xc3, 0x4c, 0x66, 0x19, 0xbb, 0xc7, 0x02, 0x25, 0x4c, 0x50, 0xc3, 0x26, 0x86,
		0x42, 0x0c, 0x5b, 0xc7, 0x3c, 0x88, 0x61, 0x1b, 0x74, 0x45, 0x88, 0x61, 0x09, 0x61, 0x1c, 0xc4,
		0xb0, 0xc4, 0x99, 0x0d, 0x62, 0xd8, 0xb6, 0x29, 0x11, 0x10, 0xc3, 0x36, 0x9f, 0xc6, 0x21, 0x86,
		0xad, 0x74, 0xd7, 0x20, 0x86, 0x25, 0xf1, 0x80, 0x18, 0x06, 0x7a, 0x5a, 0x87, 0xa2, 0x20, 0x86,
		0xe9, 0x00, 0x2b, 0x88, 0x61, 0xb0, 0xce, 0x82, 0x18, 0x66, 0x32, 0xcb, 0xd8, 0x2a, 0x60, 0x32,
		0x14, 0xe3, 0xbd, 0x50, 0x88, 0xeb, 0x61, 0x33, 0xb6, 0x42, 0x12, 0x5b, 0xc7, 0x3c, 0x48, 0x62,
		0x1b, 0xf4, 0x46, 0x48, 0x62, 0x09, 0xc1, 0x1c, 0x24, 0xb1, 0xc4, 0xc9, 0x0d, 0x92, 0xd8, 0xb6,
		0xe9, 0x11, 0x90, 0xc4, 0x36, 0x9f, 0xc6, 0x21, 0x89, 0xad, 0x74, 0xd7, 0x20, 0x89, 0x25, 0xf1,
		0x80, 0x24, 0x06, 0x7a, 0x5a, 0x87, 0xa2, 0x20, 0x89, 0xe9, 0x00, 0x2b, 0x48, 0x62, 0xb0, 0xce,
		0x82, 0x24, 0x66, 0xa8, 0x45, 0xc4, 0xc8, 0xca, 0x2e, 0x49, 0xe9, 0x2b, 0xa6, 0x84, 0x4f, 0x73,
		0xcb, 0x78, 0x3b, 0x6c, 0x3e, 0xf0, 0x47, 0xd6, 0x63, 0xd1, 0xc9, 0x00, 0xb6, 0xeb, 0xf7, 0xb8,
		0x6c, 0x46, 0x12, 0x93, 0x23, 0xb9, 0xfa, 0xe1, 0x07, 0xdf, 0x1d, 0x31, 0xa4, 0x41, 0xd9, 0xe4,
		0xee, 0xc7, 0x0b, 0xe1, 0xdc, 0x15, 0xb7, 0x37, 0xee, 0x1f, 0xc3, 0xf8, 0x99, 0xdb, 0xe8, 0xf4,
		0xdc, 0x40, 0x34, 0x5c, 0xd6, 0x16, 0x4e, 0xc8, 0xda, 0x22, 0x8c, 0x9f, 0xb9, 0xa2, 0xf7, 0x94,
		0x77, 0xfa, 0x52, 0x34, 0x59, 0xa8, 0x5c, 0xc9, 0x45, 0xe7, 0xa1, 0xe1, 0x07, 0x61, 0xfc, 0xcc,
		0x65, 0xad, 0x7f, 0xa3, 0x31, 0xae, 0x90, 0x4e, 0xcf, 0x0f, 0x95, 0x1b, 0xf8, 0x7d, 0xc5, 0xc3,
		0xd1, 0x17, 0xb7, 0x2f, 0xbf, 0x4b, 0xff, 0x87, 0x74, 0x98, 0x52, 0x81, 0x68, 0x44, 0x3f, 0x98,
		0xbb, 0xe4, 0x86, 0x8a, 0x29, 0x4e, 0xab, 0x8b, 0xa6, 0x13, 0x2e, 0x34, 0x2c, 0x21, 0x12, 0xb0,
		0x43, 0xee, 0x8a, 0x0f, 0x0c, 0x53, 0xc3, 0x91, 0x38, 0x11, 0xbb, 0x2e, 0x44, 0xa8, 0x4a, 0x4a,
		0x05, 0xa4, 0xba, 0x0f, 0xfb, 0x52, 0xc8, 0xb3, 0x2e, 0x1f, 0x22, 0x13, 0xb1, 0x3d, 0xe3, 0xed,
		0x4b, 0xf6, 0x3c, 0x63, 0x99, 0x77, 0x94, 0xcd, 0xe6, 0x0b, 0xd9, 0xec, 0x41, 0xe1, 0xb0, 0x70,
		0x50, 0xcc, 0xe5, 0xbc, 0xbc, 0x47, 0x68, 0x67, 0x7e, 0xfb, 0x7a, 0x48, 0x97, 0xbc, 0x75, 0x32,
		0x74, 0x3d, 0xd9, 0xef, 0x76, 0x29, 0x9a, 0x76, 0x17, 0xf2, 0x80, 0xd4, 0x26, 0xfb, 0x54, 0x7a,
		0x0c, 0xa2, 0xa9, 0x7d, 0xbb, 0x53, 0x3a, 0xa1, 0xa1, 0xb0, 0x1d, 0xaa, 0xa0, 0xdf, 0x54, 0x72,
		0x2c, 0x9d, 0x5c, 0x8d, 0xee, 0x5c, 0x79, 0x7c, 0xe3, 0xea, 0x93, 0xb1, 0x62, 0xfd, 0xa4, 0xd3,
		0xab, 0x57, 0x45, 0xa3, 0x5e, 0x6a, 0x8b, 0x1b, 0xd6, 0x16, 0xf5, 0x72, 0xef, 0x29, 0x7f, 0x37,
		0xba, 0x45, 0xf5, 0xab, 0xf1, 0x8d, 0xa9, 0x97, 0x5a, 0xff, 0x56, 0x45, 0xa3, 0x2c, 0x2b, 0x7e,
		0xa8, 0xea, 0xd5, 0xe1, 0xed, 0xa8, 0xdf, 0x8d, 0xfe, 0xf6, 0x52, 0xfc, 0xa7, 0xff, 0x01, 0x6a,
		0xd0, 0x6f, 0x81, 0xe6, 0xde, 0x87, 0x5a, 0xaf, 0xb3, 0x4d, 0xbd, 0x8d, 0xde, 0x00, 0xd3, 0xe7,
		0xd6, 0x7a, 0x3e, 0x59, 0x53, 0x20, 0x4d, 0x40, 0x7f, 0x54, 0xa2, 0xb6, 0x86, 0x8e, 0xeb, 0x08,
		0x5d, 0x9b, 0x77, 0xd3, 0xa0, 0x7b, 0x3a, 0x34, 0x4f, 0x9a, 0xde, 0x09, 0xd1, 0x3a, 0x21, 0x3a,
		0xd7, 0x15, 0xc6, 0x44, 0xf2, 0xa0, 0xb1, 0xf9, 0x4f, 0x23, 0x48, 0x27, 0x0c, 0xce, 0x7a, 0xd2,
		0x78, 0xfa, 0x49, 0x34, 0xdd, 0x4f, 0x4c, 0x39, 0xce, 0x75, 0xc7, 0xb7, 0x81, 0x71, 0x9d, 0xae,
		0xdf, 0xa7, 0xe7, 0x7d, 0xe9, 0x7c, 0x52, 0x4a, 0xfe, 0xad, 0xcb, 0xaf, 0x4d, 0xf2, 0xe7, 0x14,
		0x53, 0x53, 0x62, 0xa9, 0x28, 0x9d, 0x60, 0x4c, 0x3e, 0x34, 0x52, 0x08, 0x0b, 0x7b, 0xb6, 0xf9,
		0x83, 0xf4, 0xa6, 0xea, 0xc4, 0x93, 0x9e, 0x3e, 0x7c, 0x7e, 0x4a, 0x1d, 0xc1, 0x64, 0x86, 0x62,
		0x4a, 0x1f, 0x97, 0xf6, 0xc2, 0x01, 0x1d, 0x0b, 0x01, 0xf4, 0x4e, 0xec, 0xd7, 0x35, 0xd5, 0x4c,
		0xfb, 0xc4, 0x7b, 0xed, 0xf3, 0xbe, 0xb4, 0x4f, 0x8c, 0xdf, 0x2e, 0x44, 0x39, 0x15, 0xe9, 0xea,
		0x51, 0xf6, 0x98, 0x5f, 0x53, 0x0f, 0x9c, 0x49, 0x77, 0x31, 0xfe, 0xfc, 0x94, 0x9d, 0x36, 0xdd,
		0x04, 0x30, 0x9f, 0x08, 0x32, 0x29, 0x7f, 0xb0, 0xc6, 0x95, 0x61, 0x34, 0x56, 0x7c, 0xe9, 0x9e,
		0x8b, 0x4c, 0x66, 0x85, 0x16, 0x99, 0x89, 0xc2, 0x64, 0x56, 0x54, 0x6d, 0xb7, 0x96, 0x93, 0x76,
		0x42, 0x79, 0x9f, 0x58, 0xf4, 0xc5, 0xdb, 0xbb, 0xfc, 0xa2, 0x2b, 0xd6, 0xf4, 0xa4, 0x19, 0x6d,
		0xe3, 0x0e, 0x4a, 0x69, 0x87, 0x56, 0xfa, 0xa1, 0x92, 0x86, 0xc8, 0xa5, 0x23, 0x72, 0x69, 0x89,
		0x5c, 0x7a, 0xd2, 0x93, 0xa6, 0x34, 0xa5, 0x2b, 0xed, 0x69, 0x2b, 0x36, 0x60, 0x32, 0x39, 0x41,
		0x7b, 0xa4, 0x4e, 0xb7, 0xb3, 0xd5, 0x39, 0x5b, 0xe2, 0x63, 0x4a, 0xd3, 0x3c, 0xed, 0x98, 0xcc,
		0x5e, 0x1c, 0x94, 0xf6, 0xdc, 0xa0, 0xb9, 0xb7, 0x06, 0xb5, 0x55, 0xa0, 0x64, 0xf7, 0xca, 0x20,
		0xbb, 0x84, 0x93, 0xec, 0xde, 0x17, 0xbb, 0x3d, 0x1b, 0x95, 0xcc, 0x9e, 0x15, 0x71, 0xbf, 0xd3,
		0xe5, 0xac, 0x1d, 0xf0, 0x36, 0x85, 0x4e, 0x67, 0x32, 0xf2, 0x2a, 0x10, 0xb0, 0xa5, 0x32, 0x2e,
		0xfc, 0x7e, 0xfe, 0x3c, 0x5a, 0x14, 0xe7, 0x4e, 0x52, 0xf9, 0xae, 0xce, 0x79, 0xd5, 0x38, 0xfe,
		0xea, 0xd1, 0x48, 0xd7, 0x53, 0xaa, 0x23, 0x31, 0xf8, 0x02, 0xd4, 0x01, 0xea, 0x00, 0x75, 0x80,
		0x3a, 0x40, 0x1d, 0xa0, 0x0e, 0x50, 0xb7, 0x26, 0xd4, 0x8d, 0xba, 0x1d, 0x30, 0x5d, 0xea, 0x4d,
		0x31, 0xda, 0x69, 0x82, 0x0c, 0xd2, 0x8d, 0xcc, 0xa1, 0x41, 0x74, 0x1e, 0x88, 0x0e, 0x44, 0x07,
		0xa2, 0x03, 0xd1, 0x81, 0xe8, 0x74, 0xb5, 0x8a, 0xee, 0x4a, 0x56, 0x6c, 0x48, 0xb4, 0xbd, 0x8e,
		0x90, 0x2d, 0x4e, 0x67, 0x87, 0xf0, 0xe9, 0x34, 0xf0, 0xa9, 0x6d, 0x54, 0xf6, 0x24, 0x22, 0xb5,
		0x17, 0x3d, 0xb9, 0xbd, 0xe7, 0x29, 0xee, 0x35, 0x4f, 0x7b, 0x6f, 0x79, 0xaa, 0xbb, 0xa1, 0x92,
		0xdf, 0x3b, 0x9e, 0xfc, 0xd6, 0xa6, 0xe4, 0xf7, 0x86, 0xc7, 0x6e, 0x73, 0x24, 0x25, 0x16, 0xc2,
		0x52, 0x0b, 0x45, 0xc9, 0x65, 0x91, 0xf4, 0xf2, 0x93, 0x7f, 0x11, 0x52, 0x84, 0x5c, 0x85, 0xf1,
		0xb3, 0xb1, 0x50, 0x33, 0xc2, 0x0c, 0x6c, 0xe8, 0x44, 0x25, 0x28, 0xed, 0xa6, 0xff, 0xf8, 0xd8,
		0x97, 0x42, 0xbd, 0x50, 0xa5, 0xd3, 0x8f, 0x06, 0x02, 0x51, 0x81, 0xa8, 0x40, 0x54, 0x20, 0x2a,
		0x10, 0x15, 0x88, 0x0a, 0x44, 0x05, 0xa2, 0xae, 0x8b, 0xa8, 0x13, 0xae, 0x10, 0x3c, 0x8c, 0x9f,
		0xbf, 0x80, 0x52, 0x69, 0x52, 0x2a, 0x7f, 0x56, 0x0e, 0x79, 0x52, 0x5d, 0x64, 0x24, 0x68, 0x15,
		0xb4, 0x0a, 0x5a, 0x05, 0xad, 0x82, 0x56, 0x41, 0xab, 0xa0, 0x55, 0xd0, 0xea, 0xba, 0xb4, 0x3a,
		0xcb, 0x16, 0x43, 0x62, 0x7d, 0xc7, 0x1a, 0xa0, 0x56, 0x9a, 0xd4, 0x2a, 0xe4, 0x13, 0xeb, 0x8a,
		0x96, 0x13, 0x70, 0x16, 0x12, 0x3a, 0x2c, 0x23, 0x8e, 0xd0, 0x0f, 0xf6, 0x81, 0x55, 0xc1, 0xaa,
		0x60, 0x55, 0xb0, 0x2a, 0x58, 0x15, 0xac, 0xba, 0x63, 0xac, 0x2a, 0x5a, 0x5c, 0x2a, 0xa1, 0x5e,
		0x88, 0xf2, 0x2a, 0xa5, 0xa3, 0xdb, 0xca, 0xe3, 0x5b, 0x75, 0xc2, 0x42, 0x82, 0x5d, 0xea, 0xa4,
		0x41, 0xcb, 0x57, 0xdf, 0x4a, 0x17, 0xe5, 0xd3, 0x7a, 0xf5, 0xfa, 0xee, 0xf6, 0xac, 0x5e, 0x3d,
		0x2b, 0xdd, 0x5c, 0x5f, 0x51, 0xeb, 0x5d, 0xbf, 0xb1, 0x6e, 0x3f, 0xda, 0xfd, 0x91, 0xde, 0x29,
		0xee, 0x34, 0xcf, 0x0c, 0x9f, 0x6b, 0xdd, 0xd2, 0x4d, 0xfd, 0xe2, 0xfa, 0xba, 0x42, 0xef, 0x2c,
		0xea, 0xc1, 0x27, 0x34, 0xe9, 0x7a, 0x4d, 0xfa, 0xe5, 0xe2, 0xee, 0xe6, 0xf6, 0xac, 0x8a, 0x76,
		0xdd, 0xb6, 0x76, 0xbd, 0xbe, 0x3a, 0x3f, 0x3b, 0x45, 0x8b, 0x6e, 0x4f, 0x8b, 0x5e, 0x57, 0xcb,
		0x5f, 0xcb, 0x57, 0xa5, 0xdb, 0xeb, 0xaa, 0x8d, 0xb3, 0xd9, 0x7f, 0xfa, 0xa8, 0x61, 0x3c, 0x42,
		0xcc, 0x0a, 0x0a, 0xea, 0x60, 0x97, 0x85, 0xca, 0x79, 0xf4, 0x5b, 0xa2, 0x2d, 0x78, 0x8b, 0x9e,
		0x38, 0xf8, 0xde, 0x3c, 0x68, 0x83, 0x8b, 0xcc, 0x81, 0x36, 0xb8, 0x82, 0x43, 0x41, 0x1b, 0x5c,
		0xc9, 0xd3, 0xa1, 0x0d, 0xfe, 0xa6, 0x81, 0xd0, 0x06, 0x0d, 0xe2, 0x5f, 0xc2, 0xda, 0xa0, 0x12,
		0x8f, 0x5c, 0x89, 0xe6, 0xf7, 0x30, 0x9f, 0x25, 0xa8, 0x0d, 0x1e, 0x11, 0x32, 0xe9, 0x4e, 0x8a,
		0xe8, 0xf8, 0x5a, 0x5b, 0x32, 0xe9, 0x87, 0xbc, 0xe9, 0xcb, 0x56, 0x48, 0xe9, 0x96, 0x55, 0x99,
		0xec, 0x70, 0x72, 0x7a, 0x1b, 0xbd, 0xe1, 0x9e, 0x7d, 0x29, 0x24, 0xb9, 0x8c, 0x18, 0x1b, 0x17,
		0xc9, 0xa6, 0x74, 0x98, 0x6b, 0xce, 0xbe, 0xf3, 0x80, 0x35, 0x95, 0xf0, 0xe5, 0xa9, 0xe8, 0x08,
		0xdd, 0xe7, 0x4a, 0xff, 0xbc, 0x83, 0xe3, 0x1d, 0xa6, 0xc4, 0x13, 0xd7, 0x7a, 0x8c, 0xb2, 0x61,
		0xda, 0x8c, 0x7d, 0xc9, 0x9e, 0xe9, 0x87, 0x06, 0xad, 0xf3, 0xc3, 0x11, 0x2d, 0x3b, 0xc4, 0x93,
		0xf4, 0xac, 0xa9, 0x41, 0xf3, 0xa2, 0xd2, 0x9b, 0x92, 0x39, 0xd8, 0x61, 0x0e, 0xf2, 0x69, 0x1c,
		0xf0, 0xf0, 0x11, 0xee, 0xa1, 0x73, 0x2d, 0x31, 0x08, 0x3a, 0xd7, 0xaa, 0xd6, 0x41, 0xe7, 0x5a,
		0xd3, 0x40, 0xe8, 0x5c, 0x5b, 0x41, 0x02, 0xd0, 0xb9, 0xfe, 0xab, 0xdf, 0xea, 0x0b, 0xa9, 0x0e,
		0x33, 0x04, 0x25, 0xae, 0x02, 0x24, 0xa4, 0xff, 0x78, 0x40, 0x42, 0x5a, 0x6f, 0x9c, 0x0c, 0x09,
		0x69, 0xeb, 0x07, 0xc5, 0x90, 0x90, 0xd6, 0x0b, 0x8d, 0x6c, 0xa6, 0x98, 0x2d, 0xe6, 0x0b, 0x99,
		0x22, 0x84, 0xa3, 0xad, 0x8f, 0x11, 0x08, 0x47, 0x0b, 0x1f, 0x35, 0x80, 0xeb, 0x8c, 0x1b, 0xf3,
		0x67, 0x15, 0x30, 0xa7, 0x2f, 0x43, 0xc5, 0x1a, 0x5d, 0x62, 0x08, 0x1b, 0xf0, 0x36, 0x0f, 0xb8,
		0x6c, 0x82, 0xcc, 0x56, 0xe0, 0xfd, 0x56, 0xc0, 0xda, 0xca, 0x11, 0x5c, 0xb5, 0x1d, 0xd1, 0x0a,
		0x1c, 0xd6, 0x6a, 0x39, 0x3d, 0xa6, 0x1e, 0x42, 0xcb, 0xb1, 0x4a, 0xad, 0x27, 0x1e, 0x28, 0x11,
		0xf2, 0xe1, 0xb8, 0xd2, 0xf2, 0xdb, 0xd6, 0x65, 0xbf, 0xab, 0x44, 0xaf, 0xcb, 0xad, 0xca, 0xf0,
		0x15, 0x7f, 0x4b, 0x21, 0xad, 0x93, 0xaf, 0x15, 0x9b, 0x60, 0x72, 0x25, 0xaa, 0x73, 0x2c, 0xd2,
		0x3b, 0xa6, 0x5e, 0x4b, 0x34, 0x73, 0x51, 0x97, 0x3e, 0x16, 0x4a, 0x20, 0x1b, 0x70, 0x6b, 0x64,
		0x68, 0x64, 0x68, 0xa3, 0xee, 0x07, 0x89, 0xd2, 0x0e, 0x2d, 0x49, 0x9e, 0xd6, 0x21, 0x8f, 0xd3,
		0xee, 0x1f, 0x85, 0x9d, 0x9f, 0x1a, 0x84, 0xc2, 0xce, 0x96, 0x00, 0x0f, 0x0a, 0x3b, 0x1b, 0xa5,
		0x1a, 0x14, 0x76, 0xa8, 0x8f, 0x8f, 0x09, 0x6f, 0x6e, 0xd0, 0x7b, 0xca, 0x3b, 0xe4, 0x62, 0x30,
		0xde, 0xdc, 0xe0, 0x88, 0xd6, 0x66, 0x5c, 0x8a, 0x07, 0x92, 0x9c, 0x8c, 0x60, 0xef, 0xed, 0xdd,
		0x1f, 0x38, 0x45, 0xe6, 0xb4, 0x4b, 0xce, 0x79, 0xed, 0xd5, 0xfb, 0x94, 0x1d, 0x1c, 0xef, 0xbf,
		0x16, 0x06, 0x1f, 0x2f, 0xbe, 0x2d, 0x7a, 0x99, 0xf7, 0xa9, 0x30, 0x38, 0x5e, 0xf2, 0x93, 0xfc,
		0xe0, 0xf8, 0x17, 0x7f, 0x47, 0x6e, 0xb0, 0x37, 0xf7, 0xd2, 0xe1, 0xf5, 0xcc, 0xb2, 0x37, 0x64,
		0x97, 0xbc, 0xe1, 0x70, 0xd9, 0x1b, 0x0e, 0x97, 0xbc, 0x61, 0xa9, 0x49, 0x99, 0x25, 0x6f, 0xc8,
		0x0d, 0xde, 0xe6, 0x5e, 0xbf, 0xb7, 0xf8, 0xa5, 0xf9, 0xc1, 0xfe, 0xdb, 0xb2, 0x9f, 0x15, 0x06,
		0x6f, 0xc7, 0xfb, 0xfb, 0xee, 0x9e, 0x97, 0xb9, 0x3f, 0x70, 0x8e, 0x6a, 0x6f, 0xde, 0xfd, 0x81,
		0xe3, 0xd5, 0x86, 0xaf, 0xac, 0xbd, 0xdd, 0x7b, 0x4e, 0x71, 0xf2, 0x74, 0xf8, 0xff, 0x3e, 0x9d,
		0x6e, 0xb9, 0x46, 0x29, 0x9e, 0xae, 0x6f, 0xca, 0x7f, 0x91, 0x0d, 0xaa, 0x7f, 0x10, 0x55, 0xc4,
		0xa3, 0xea, 0x4f, 0x1b, 0x5a, 0x03, 0xb4, 0x86, 0xb9, 0xc0, 0x1d, 0x6f, 0x5b, 0xe8, 0xf7, 0x15,
		0xa7, 0x27, 0x38, 0xcc, 0x1a, 0x07, 0xd5, 0x01, 0xaa, 0x03, 0x54, 0x07, 0xa8, 0x0e, 0x50, 0x1d,
		0xa0, 0x3a, 0xec, 0x98, 0xea, 0xd0, 0xf0, 0xfd, 0x2e, 0x67, 0x92, 0xa2, 0xe2, 0xe0, 0x01, 0xe5,
		0x08, 0x58, 0xa0, 0xfb, 0x6c, 0xf0, 0x92, 0x94, 0xbe, 0x62, 0x4a, 0x10, 0xd9, 0x99, 0xdb, 0x0e,
		0x9b, 0x0f, 0xfc, 0x91, 0xf5, 0xc6, 0xdb, 0xc1, 0xbb, 0x7e, 0x8f, 0xcb, 0x66, 0x04, 0x4a, 0x8e,
		0xe4, 0xea, 0x87, 0x1f, 0x7c, 0x77, 0x84, 0x0c, 0x15, 0x93, 0x4d, 0xee, 0x7e, 0xbc, 0x10, 0xce,
		0x5d, 0x71, 0x7b, 0x81, 0xaf, 0xfc, 0xa6, 0xdf, 0x0d, 0xe3, 0x67, 0x6e, 0xa3, 0xd3, 0x73, 0x03,
		0xd1, 0x70, 0x59, 0x5b, 0x38, 0x21, 0x6b, 0x8b, 0x30, 0x7e, 0xe6, 0x46, 0x12, 0x61, 0x5f, 0x8a,
		0x26, 0x0b, 0x95, 0x2b, 0xb9, 0xe8, 0x3c, 0x34, 0xfc, 0x20, 0x8c, 0x9f, 0xb9, 0xac, 0xf5, 0x6f,
		0x94, 0x09, 0x84, 0x74, 0x7a, 0x01, 0x77, 0x23, 0xb8, 0x0d, 0x47, 0x5f, 0x46, 0x9b, 0xcf, 0xeb,
		0xcd, 0x0f, 0xfa, 0x1c, 0x59, 0xa3, 0x13, 0xdb, 0x7d, 0xf9, 0x5d, 0xfa, 0x3f, 0xa4, 0xc3, 0x94,
		0x0a, 0x44, 0x63, 0xd8, 0x22, 0xda, 0x1d, 0x79, 0xba, 0x98, 0x60, 0xde, 0x36, 0xcd, 0xe1, 0x3e,
		0xe9, 0xfc, 0x35, 0x9b, 0x41, 0x65, 0xec, 0x43, 0x69, 0xcc, 0x43, 0x73, 0xac, 0x43, 0x6d, 0x8c,
		0x43, 0x76, 0x6c, 0x43, 0x76, 0x4c, 0x43, 0x76, 0x2c, 0xb3, 0xdb, 0xe0, 0x75, 0x2a, 0x02, 0x1a,
		0xdd, 0xce, 0x5c, 0x92, 0xa2, 0x27, 0x26, 0xce, 0x9b, 0x48, 0x4b, 0x52, 0xf4, 0x20, 0x29, 0x92,
		0x4f, 0xaf, 0xb4, 0xd3, 0x2c, 0xd5, 0x74, 0x4b, 0x3e, 0xed, 0x92, 0x4f, 0xbf, 0xe4, 0xd3, 0x30,
		0x1d, 0x25, 0xc6, 0x22, 0x24, 0x29, 0x52, 0x49, 0xcf, 0xb1, 0x41, 0xc3, 0xdc, 0xe7, 0x28, 0x6a,
		0x42, 0xe7, 0xbb, 0x1e, 0x75, 0x6a, 0x22, 0xb1, 0xd0, 0xa3, 0x55, 0xf9, 0x23, 0x9b, 0xae, 0x29,
		0xa7, 0x6d, 0x33, 0xd2, 0x37, 0xf5, 0x34, 0x6e, 0x4c, 0x3a, 0x37, 0x26, 0xad, 0x1b, 0x93, 0xde,
		0x69, 0xa5, 0x79, 0x62, 0xe9, 0x3e, 0x6e, 0xc5, 0x5b, 0x8a, 0x09, 0xd6, 0xa2, 0x7d, 0xa0, 0xf0,
		0xdc, 0x68, 0xb8, 0x40, 0xd0, 0xb6, 0x99, 0x03, 0x86, 0x47, 0xe7, 0x04, 0x4f, 0x61, 0x05, 0xcb,
		0x0a, 0xa9, 0x87, 0xa6, 0x3d, 0xaa, 0xae, 0x91, 0x05, 0xdf, 0x91, 0x79, 0x34, 0xa1, 0xd7, 0x03,
		0xf4, 0x02, 0x7a, 0x01, 0xbd, 0x80, 0x5e, 0x40, 0x2f, 0x32, 0xeb, 0xe2, 0x56, 0xa4, 0xa6, 0x75,
		0xc5, 0x86, 0x45, 0x8c, 0xd6, 0xe5, 0x84, 0xf7, 0xd0, 0x7b, 0x27, 0x7d, 0x0d, 0x2d, 0x25, 0x1a,
		0xa8, 0x34, 0x15, 0x30, 0xf2, 0x50, 0x60, 0x02, 0x1c, 0x98, 0x05, 0x09, 0xa6, 0xc0, 0x82, 0x71,
		0xd0, 0x60, 0x1c, 0x3c, 0x18, 0x07, 0x11, 0x34, 0x61, 0x82, 0x28, 0x54, 0xc4, 0xad, 0x4b, 0x56,
		0x51, 0x9b, 0xeb, 0x37, 0xfb, 0x42, 0x2a, 0x2f, 0x4f, 0xb9, 0xcf, 0x1c, 0x67, 0xf1, 0x3c, 0x61,
		0x13, 0x69, 0x6e, 0x0d, 0xfd, 0xf1, 0x41, 0x3b, 0xe7, 0x58, 0xd4, 0xb7, 0x8e, 0x9e, 0x33, 0x96,
		0xf8, 0x56, 0xd2, 0x73, 0xf6, 0x9a, 0xb2, 0x6d, 0xee, 0x7c, 0x5f, 0x45, 0x7d, 0x1b, 0x5d, 0x43,
		0xd2, 0xd2, 0xfb, 0x50, 0x63, 0xcf, 0xe6, 0x85, 0x5a, 0x3e, 0x97, 0x3b, 0xcc, 0x21, 0xdc, 0x10,
		0x6e, 0x06, 0xb0, 0x29, 0x7d, 0xeb, 0x6a, 0x60, 0xfa, 0x15, 0xc2, 0x82, 0xf0, 0x2e, 0xd8, 0x73,
		0xb6, 0xd2, 0xdd, 0x15, 0xdb, 0x40, 0x28, 0x9d, 0x0c, 0x95, 0xaa, 0xe7, 0x5f, 0xac, 0x6c, 0xa6,
		0xe0, 0x59, 0x8e, 0x55, 0xb2, 0x4e, 0xfc, 0xa0, 0xc5, 0x03, 0xeb, 0x2b, 0x53, 0xfc, 0x07, 0x7b,
		0xb1, 0x2a, 0xe3, 0x95, 0x96, 0x56, 0xd6, 0xda, 0x3b, 0xf9, 0x5a, 0x71, 0xb2, 0xfb, 0xb6, 0x01,
		0x0c, 0x60, 0x88, 0x1c, 0x35, 0x1d, 0x0a, 0x9a, 0xb3, 0x83, 0xf6, 0x9c, 0xed, 0xa6, 0x29, 0x54,
		0xb1, 0xe1, 0xb3, 0x4a, 0xd5, 0x8a, 0x21, 0x00, 0x72, 0x00, 0x39, 0xec, 0xf4, 0xfd, 0xa2, 0x78,
		0x06, 0x11, 0xdd, 0x39, 0xf5, 0x73, 0x19, 0x97, 0xea, 0xdc, 0xfa, 0x69, 0x42, 0x42, 0x85, 0xf1,
		0xb7, 0x0c, 0x44, 0x85, 0x71, 0x47, 0x91, 0x0e, 0x15, 0xc6, 0x54, 0xb9, 0x0d, 0x15, 0xc6, 0x6d,
		0x53, 0x23, 0xcc, 0xaa, 0x30, 0x1e, 0x19, 0x50, 0x60, 0xcc, 0xa1, 0xc0, 0xb8, 0xfd, 0x5a, 0x0e,
		0x0a, 0x8c, 0x09, 0xda, 0x8b, 0x8a, 0xc7, 0x8e, 0x67, 0xa5, 0xf7, 0xa1, 0x66, 0x62, 0x81, 0x31,
		0x93, 0x43, 0x79, 0x11, 0xc1, 0x66, 0x02, 0x98, 0xd2, 0xb7, 0x0e, 0xe5, 0xc5, 0x55, 0xc2, 0x02,
		0xe5, 0xc5, 0x1d, 0x45, 0x52, 0x94, 0x17, 0xc9, 0x0c, 0x04, 0x51, 0x5e, 0x4c, 0xdf, 0x70, 0x94,
		0x17, 0x61, 0x9d, 0x21, 0xe4, 0x80, 0xf2, 0xe2, 0x2f, 0xc4, 0x73, 0x54, 0xb3, 0x7b, 0x1a, 0x0f,
		0xa7, 0x4c, 0xa8, 0x2f, 0x8e, 0x6c, 0x45, 0x81, 0x71, 0x1d, 0xf3, 0x50, 0x60, 0xdc, 0xa0, 0x37,
		0xa2, 0xc0, 0x98, 0x10, 0xcc, 0xa1, 0xc0, 0x98, 0x38, 0xb9, 0xa1, 0xc0, 0xb8, 0x6d, 0x7a, 0x84,
		0x39, 0x05, 0xc6, 0x86, 0x90, 0x2c, 0x78, 0x31, 0xa0, 0xc2, 0x58, 0x24, 0x6c, 0xe2, 0x05, 0x97,
		0x9d, 0x68, 0xb3, 0x30, 0xe8, 0x39, 0xbf, 0x79, 0x27, 0x8d, 0x2c, 0x31, 0x7a, 0xa8, 0x7a, 0x24,
		0xdc, 0x59, 0xa1, 0xc4, 0x98, 0x40, 0xa8, 0x61, 0x0d, 0x23, 0xc2, 0x6d, 0x4b, 0xc2, 0x0d, 0x52,
		0xe1, 0x5a, 0x0f, 0x14, 0x19, 0x57, 0x09, 0x0b, 0x14, 0x19, 0x77, 0x14, 0x4a, 0x51, 0x64, 0x24,
		0x33, 0x16, 0x44, 0x91, 0x31, 0x7d, 0xc3, 0x51, 0x64, 0x84, 0x75, 0x86, 0x90, 0x03, 0x8a, 0x8c,
		0xbf, 0xc6, 0x31, 0x5c, 0xb6, 0x78, 0x8b, 0x7e, 0x89, 0x31, 0xb6, 0x14, 0x05, 0xc6, 0x75, 0xcc,
		0x43, 0x81, 0x71, 0x83, 0xbe, 0x88, 0x02, 0x63, 0x42, 0x20, 0x87, 0x02, 0x63, 0xe2, 0xd4, 0x86,
		0x02, 0xe3, 0xb6, 0x69, 0x11, 0x06, 0x15, 0x18, 0x7d, 0xbf, 0xcb, 0x99, 0x34, 0xa0, 0xc2, 0xe8,
		0x79, 0x70, 0xc1, 0xd5, 0x30, 0x12, 0x72, 0xd8, 0xc6, 0x1f, 0x90, 0xc3, 0x40, 0x4f, 0xeb, 0x50,
		0x14, 0xe4, 0x30, 0x1d, 0x60, 0x05, 0x39, 0x0c, 0xd6, 0x59, 0x90, 0xc3, 0x4c, 0x66, 0x19, 0xdb,
		0xef, 0x29, 0xe1, 0x4b, 0xd6, 0xa5, 0x2f, 0x87, 0xc5, 0x96, 0x42, 0x0e, 0x5b, 0xc7, 0x3c, 0xc8,
		0x61, 0x9b, 0xf4, 0x45, 0xc8, 0x61, 0xc9, 0x80, 0x1c, 0xe4, 0xb0, 0xc4, 0xa9, 0x0d, 0x72, 0xd8,
		0xb6, 0x69, 0x11, 0x90, 0xc3, 0x36, 0x9f, 0xc6, 0x21, 0x87, 0xad, 0x74, 0xd7, 0x20, 0x87, 0x25,
		0xf1, 0x80, 0x1c, 0x06, 0x7a, 0x5a, 0x87, 0xa2, 0x20, 0x87, 0xe9, 0x00, 0x2b, 0xc8, 0x61, 0xb0,
		0xce, 0x82, 0x1c, 0x66, 0x32, 0xcb, 0xd8, 0x3d, 0x16, 0x28, 0x61, 0x82, 0x1a, 0x36, 0x31, 0x14,
		0x62, 0xd8, 0x3a, 0xe6, 0x41, 0x0c, 0xdb, 0xa0, 0x2b, 0x42, 0x0c, 0x4b, 0x08, 0xe3, 0x20, 0x86,
		0x25, 0xce, 0x6c, 0x10, 0xc3, 0xb6, 0x4d, 0x89, 0x80, 0x18, 0xb6, 0xf9, 0x34, 0x0e, 0x31, 0x6c,
		0xa5, 0xbb, 0x06, 0x31, 0x2c, 0x89, 0x07, 0xc4, 0x30, 0xd0, 0xd3, 0x3a, 0x14, 0x05, 0x31, 0x4c,
		0x07, 0x58, 0x41, 0x0c, 0x83, 0x75, 0x16, 0xc4, 0x30, 0x93, 0x59, 0xc6, 0x56, 0x01, 0x93, 0xa1,
		0x18, 0xef, 0x85, 0x42, 0x5c, 0x0f, 0x9b, 0xb1, 0x15, 0x92, 0xd8, 0x3a, 0xe6, 0x41, 0x12, 0xdb,
		0xa0, 0x37, 0x42, 0x12, 0x4b, 0x08, 0xe6, 0x20, 0x89, 0x25, 0x4e, 0x6e, 0x90, 0xc4, 0xb6, 0x4d,
		0x8f, 0x80, 0x24, 0xb6, 0xf9, 0x34, 0x0e, 0x49, 0x6c, 0xa5, 0xbb, 0x06, 0x49, 0x2c, 0x89, 0x07,
		0x24, 0x31, 0xd0, 0xd3, 0x3a, 0x14, 0x05, 0x49, 0x4c, 0x07, 0x58, 0x41, 0x12, 0x83, 0x75, 0x16,
		0x24, 0x31, 0x43, 0x2d, 0x22, 0x46, 0x56, 0x76, 0x49, 0x4a, 0x5f, 0x31, 0x25, 0x7c, 0x9a, 0x5b,
		0xc6, 0xdb, 0x61, 0xf3, 0x81, 0x3f, 0xb2, 0x1e, 0x8b, 0x4e, 0x06, 0xb0, 0x5d, 0xbf, 0xc7, 0x65,
		0x33, 0x92, 0x98, 0x1c, 0xc9, 0xd5, 0x0f, 0x3f, 0xf8, 0xee, 0x88, 0x21, 0x0d, 0xca, 0x26, 0x77,
		0x3f, 0x5e, 0x08, 0xe7, 0xae, 0xb8, 0xbd, 0x71, 0xff, 0x18, 0xc6, 0xcf, 0xdc, 0x46, 0xa7, 0xe7,
		0x06, 0xa2, 0xe1, 0xb2, 0xb6, 0x70, 0x42, 0xd6, 0x16, 0x61, 0xfc, 0xcc, 0x15, 0xbd, 0xa7, 0xbc,
		0xd3, 0x97, 0xa2, 0xc9, 0x42, 0xe5, 0x4a, 0x2e, 0x3a, 0x0f, 0x0d, 0x3f, 0x08, 0xe3, 0x67, 0x2e,
		0x6b, 0xfd, 0x1b, 0x8d, 0x71, 0x85, 0x74, 0x7a, 0x01, 0x77, 0x03, 0xbf, 0xaf, 0x78, 0x38, 0xfa,
		0xe2, 0xf6, 0xe5, 0x77, 0xe9, 0xff, 0x90, 0x0e, 0x53, 0x2a, 0x10, 0x8d, 0xe8, 0x07, 0x73, 0x97,
		0xdc, 0x50, 0x31, 0xc5, 0x69, 0xf5, 0xd0, 0x74, 0xa2, 0x85, 0x86, 0x25, 0x44, 0xe2, 0x75, 0x88,
		0x5d, 0xf1, 0x79, 0x61, 0x6a, 0x38, 0x10, 0x27, 0x62, 0xd7, 0x85, 0x08, 0x55, 0x49, 0xa9, 0x80,
		0x54, 0xef, 0x61, 0x5f, 0x0a, 0x79, 0xd6, 0xe5, 0x43, 0x62, 0x22, 0xb6, 0x65, 0xbc, 0x7d, 0xc9,
		0x9e, 0x67, 0x2c, 0xf3, 0x8e, 0xb2, 0xd9, 0x7c, 0x21, 0x9b, 0x3d, 0x28, 0x1c, 0x16, 0x0e, 0x8a,
		0xb9, 0x9c, 0x97, 0xf7, 0x08, 0x6d, 0xcc, 0x6f, 0x5f, 0x0f, 0xe1, 0x92, 0xb7, 0x4e, 0x86, 0xae,
		0x27, 0xfb, 0xdd, 0x2e, 0x45, 0xd3, 0xee, 0x42, 0x1e, 0x90, 0xda, 0x63, 0x9f, 0x4a, 0x8f, 0x41,
		0x34, 0xb3, 0x6f, 0x75, 0x46, 0x27, 0x34, 0x10, 0xb6, 0x43, 0x15, 0xf4, 0x9b, 0x4a, 0x8e, 0x85,
		0x93, 0xab, 0xd1, 0x8d, 0x2b, 0x8f, 0xef, 0x5b, 0x7d, 0x32, 0x52, 0xac, 0x9f, 0x74, 0x7a, 0xf5,
		0xaa, 0x68, 0xd4, 0x4b, 0x6d, 0x71, 0xc3, 0xda, 0xa2, 0x5e, 0xee, 0x3d, 0xe5, 0xef, 0x46, 0x77,
		0xa8, 0x7e, 0x35, 0xbe, 0x2f, 0xf5, 0x52, 0xeb, 0xdf, 0xaa, 0x68, 0x94, 0x65, 0x25, 0xe0, 0xf5,
		0xea, 0xf0, 0x6e, 0xd4, 0xef, 0x46, 0x7f, 0x7a, 0x29, 0xfe, 0xcb, 0xff, 0x00, 0x33, 0xe8, 0xb7,
		0x40, 0x73, 0xdf, 0x43, 0xad, 0xcf, 0xd9, 0xa2, 0xbe, 0x46, 0x6f, 0x7c, 0xe9, 0xf3, 0x6a, 0x3d,
		0x9f, 0xac, 0x29, 0x8e, 0x26, 0x94, 0x3f, 0x2a, 0x4f, 0x5b, 0x43, 0xbf, 0x75, 0x84, 0xae, 0x8d,
		0xbb, 0x69, 0xa0, 0x3d, 0x1d, 0x94, 0x27, 0x8d, 0xee, 0x84, 0x50, 0x9d, 0x10, 0x9a, 0xeb, 0x0a,
		0x63, 0x22, 0x69, 0xd0, 0xd4, 0xf4, 0xa7, 0x91, 0xa2, 0x93, 0xa5, 0x66, 0x3d, 0x49, 0x3c, 0xfd,
		0x14, 0x9a, 0xee, 0x27, 0xa6, 0x1c, 0xe5, 0xba, 0xa3, 0xdb, 0xbc, 0xa8, 0x4e, 0xd7, 0xed, 0xd3,
		0x73, 0xbe, 0x74, 0x3e, 0x29, 0x25, 0xf7, 0xd6, 0xe5, 0xd6, 0x06, 0xb9, 0x73, 0x8a, 0x79, 0x29,
		0xa9, 0x3c, 0x94, 0x4e, 0x28, 0x26, 0x1f, 0x18, 0x29, 0x04, 0x85, 0x3d, 0x69, 0x7c, 0xbf, 0xaf,
		0x9c, 0x9e, 0x1f, 0xaa, 0xd4, 0xc2, 0x22, 0x9e, 0xed, 0x34, 0x67, 0x41, 0x4a, 0x5d, 0xc1, 0x64,
		0x72, 0x62, 0x4a, 0x1f, 0x97, 0xf6, 0x9a, 0x01, 0x1d, 0x6b, 0x00, 0xf4, 0xce, 0xe9, 0xd7, 0x35,
		0xcb, 0x4c, 0xfb, 0x9c, 0x7b, 0xed, 0x53, 0xbe, 0xb4, 0xcf, 0x89, 0xdf, 0x2e, 0x48, 0x39, 0x15,
		0xe9, 0xca, 0x51, 0xf6, 0x98, 0x60, 0x53, 0x0f, 0x9c, 0x49, 0x77, 0x31, 0xfe, 0xfc, 0x94, 0x9d,
		0x36, 0xdd, 0x04, 0x30, 0x9f, 0x08, 0x32, 0x29, 0x7f, 0xb0, 0xc6, 0x45, 0x61, 0x34, 0x16, 0x7b,
		0xe9, 0x9e, 0x86, 0x4c, 0x66, 0x71, 0x16, 0x99, 0x39, 0xc2, 0x64, 0x16, 0x53, 0x6d, 0xb7, 0x98,
		0x93, 0x76, 0x42, 0x79, 0x9f, 0x58, 0xf4, 0xc5, 0xdb, 0xbb, 0xfc, 0xa2, 0x2b, 0xd6, 0xf4, 0xa4,
		0x19, 0x6d, 0xe3, 0x0e, 0x4a, 0x69, 0x87, 0x56, 0xfa, 0xa1, 0x92, 0x86, 0xc8, 0xa5, 0x23, 0x72,
		0x69, 0x89, 0x5c, 0x7a, 0xd2, 0x93, 0xa6, 0x34, 0xa5, 0x2b, 0xed, 0x69, 0x2b, 0x36, 0x60, 0x32,
		0x37, 0x41, 0x7b, 0xa4, 0x4e, 0x77, 0xb2, 0xd5, 0x39, 0x59, 0xe2, 0x63, 0x4a, 0xd3, 0x3c, 0xe5,
		0x98, 0xcc, 0x36, 0x1c, 0x94, 0xb6, 0xdb, 0xa0, 0xb9, 0xad, 0x06, 0xb5, 0x05, 0xa0, 0x64, 0xb7,
		0xc9, 0x20, 0xbb, 0x7a, 0x93, 0xec, 0xb6, 0x17, 0xbb, 0x3d, 0x17, 0x95, 0xcc, 0x76, 0x15, 0x71,
		0xbf, 0xd3, 0xe5, 0xac, 0x1d, 0xf0, 0x36, 0x85, 0x4e, 0x67, 0x32, 0xf2, 0x2a, 0x10, 0xb0, 0xa5,
		0x32, 0x2e, 0xfd, 0x7e, 0xfe, 0x3c, 0x5a, 0x10, 0xe7, 0x4e, 0x52, 0xf9, 0xae, 0x4e, 0x79, 0xd5,
		0x38, 0xfe, 0xea, 0xd1, 0x48, 0xd7, 0x53, 0xaa, 0x23, 0x31, 0xf8, 0x02, 0xd4, 0x01, 0xea, 0x00,
		0x75, 0x80, 0x3a, 0x40, 0x1d, 0xa0, 0x0e, 0x50, 0xb7, 0x26, 0xd4, 0x8d, 0xba, 0x1d, 0x30, 0x5d,
		0xea, 0x4d, 0x31, 0xda, 0x65, 0x82, 0x0c, 0xd2, 0x8d, 0xcc, 0xa1, 0x41, 0x74, 0x1e, 0x88, 0x0e,
		0x44, 0x07, 0xa2, 0x03, 0xd1, 0x81, 0xe8, 0x74, 0xb5, 0x8a, 0xee, 0x4a, 0x56, 0x6c, 0x48, 0xb4,
		0xb5, 0x8e, 0x90, 0x2d, 0x4e, 0x67, 0x73, 0xf0, 0xe9, 0x44, 0xf0, 0xa9, 0x6d, 0x54, 0xf6, 0x23,
		0x22, 0xb5, 0x0d, 0x3d, 0xb9, 0x6d, 0xe7, 0x29, 0x6e, 0x33, 0x4f, 0x7b, 0x5b, 0x79, 0xaa, 0x1b,
		0xa1, 0x92, 0xdf, 0x36, 0x9e, 0xfc, 0xae, 0xa6, 0xe4, 0xb7, 0x85, 0xc7, 0x4e, 0x73, 0x24, 0x25,
		0x16, 0xc2, 0x52, 0x0b, 0x45, 0xc9, 0x65, 0x91, 0xf4, 0xf2, 0x93, 0x7f, 0x11, 0x52, 0x84, 0x5c,
		0x85, 0xf1, 0xb3, 0xb1, 0x50, 0x33, 0xc2, 0x0c, 0x6c, 0xe7, 0x44, 0x25, 0x28, 0xed, 0xa6, 0xff,
		0xf8, 0xd8, 0x97, 0x42, 0xbd, 0x50, 0xa5, 0xd3, 0x8f, 0x06, 0x02, 0x51, 0x81, 0xa8, 0x40, 0x54,
		0x20, 0x2a, 0x10, 0x15, 0x88, 0x0a, 0x44, 0x05, 0xa2, 0xae, 0x8b, 0xa8, 0x13, 0xae, 0x10, 0x3c,
		0x8c, 0x9f, 0xbf, 0x80, 0x52, 0x69, 0x52, 0x2a, 0x7f, 0x56, 0x0e, 0x79, 0x52, 0x5d, 0x64, 0x24,
		0x68, 0x15, 0xb4, 0x0a, 0x5a, 0x05, 0xad, 0x82, 0x56, 0x41, 0xab, 0xa0, 0x55, 0xd0, 0xea, 0xba,
		0xb4, 0x3a, 0xcb, 0x16, 0x43, 0x62, 0x7d, 0xc7, 0x1a, 0xa0, 0x56, 0x9a, 0xd4, 0x2a, 0xe4, 0x13,
		0xeb, 0x8a, 0x96, 0x13, 0x70, 0x16, 0x12, 0x3a, 0x28, 0x23, 0x8e, 0xd0, 0x0f, 0xf6, 0x81, 0x55,
		0xc1, 0xaa, 0x60, 0x55, 0xb0, 0x2a, 0x58, 0x15, 0xac, 0xba, 0x63, 0xac, 0x2a, 0x5a, 0x5c, 0x2a,
		0xa1, 0x5e, 0x88, 0xf2, 0x2a, 0xa5, 0x63, 0xdb, 0xca, 0xe3, 0x5b, 0x75, 0xc2, 0x42, 0x82, 0x5d,
		0xea, 0xa4, 0x41, 0xcb, 0x57, 0xdf, 0x4a, 0x17, 0xe5, 0xd3, 0x7a, 0xf5, 0xfa, 0xee, 0xf6, 0xac,
		0x5e, 0x3d, 0x2b, 0xdd, 0x5c, 0x5f, 0x51, 0xeb, 0x5d, 0xbf, 0xb1, 0x6e, 0x3f, 0xda, 0xfd, 0x91,
		0xde, 0x01, 0xee, 0x34, 0x8f, 0x0b, 0x9f, 0x6b, 0xdd, 0xd2, 0x4d, 0xfd, 0xe2, 0xfa, 0xba, 0x42,
		0xef, 0x18, 0xea, 0xc1, 0x27, 0x34, 0xe9, 0x7a, 0x4d, 0xfa, 0xe5, 0xe2, 0xee, 0xe6, 0xf6, 0xac,
		0x8a, 0x76, 0xdd, 0xb6, 0x76, 0xbd, 0xbe, 0x3a, 0x3f, 0x3b, 0x45, 0x8b, 0x6e, 0x4f, 0x8b, 0x5e,
		0x57, 0xcb, 0x5f, 0xcb, 0x57, 0xa5, 0xdb, 0xeb, 0xaa, 0x8d, 0x63, 0xd9, 0x7f, 0xfa, 0xa8, 0x61,
		0x3c, 0x42, 0xcc, 0x0a, 0x0a, 0xea, 0x60, 0x97, 0x85, 0xca, 0x79, 0xf4, 0x5b, 0xa2, 0x2d, 0x78,
		0x8b, 0x9e, 0x38, 0xf8, 0xde, 0x3c, 0x68, 0x83, 0x8b, 0xcc, 0x81, 0x36, 0xb8, 0x82, 0x43, 0x41,
		0x1b, 0x5c, 0xc9, 0xd3, 0xa1, 0x0d, 0xfe, 0xa6, 0x81, 0xd0, 0x06, 0x0d, 0xe2, 0x5f, 0xc2, 0xda,
		0xa0, 0x12, 0x8f, 0x5c, 0x89, 0xe6, 0xf7, 0x30, 0x9f, 0x25, 0xa8, 0x0d, 0x1e, 0x11, 0x32, 0xe9,
		0x4e, 0x8a, 0xe8, 0xf4, 0x5a, 0x5b, 0x32, 0xe9, 0x87, 0xbc, 0xe9, 0xcb, 0x56, 0x48, 0xe9, 0x96,
		0x55, 0x99, 0xec, 0x70, 0x72, 0x7a, 0x1b, 0xbd, 0xe1, 0x9e, 0x7d, 0x29, 0x24, 0xb9, 0x8c, 0x18,
		0x1b, 0x17, 0xc9, 0xa6, 0x74, 0x98, 0x6b, 0xce, 0xbe, 0xf3, 0x80, 0x35, 0x95, 0xf0, 0xe5, 0xa9,
		0xe8, 0x08, 0xdd, 0xc7, 0x4a, 0xff, 0xbc, 0x83, 0xe3, 0x1d, 0xa6, 0xc4, 0x13, 0xd7, 0x7a, 0x8a,
		0xb2, 0x61, 0xda, 0x8c, 0x7d, 0xc9, 0x9e, 0xe9, 0x87, 0x06, 0xad, 0xe3, 0xc3, 0x11, 0x2d, 0x3b,
		0xc4, 0x93, 0xf4, 0xac, 0xa9, 0x41, 0xf3, 0xa2, 0xd2, 0x9b, 0x92, 0x39, 0xd8, 0x61, 0x0e, 0xf2,
		0x69, 0x1c, 0xf0, 0xf0, 0x11, 0xee, 0xa1, 0x73, 0x2d, 0x31, 0x08, 0x3a, 0xd7, 0xaa, 0xd6, 0x41,
		0xe7, 0x5a, 0xd3, 0x40, 0xe8, 0x5c, 0x5b, 0x41, 0x02, 0xd0, 0xb9, 0xfe, 0xab, 0xdf, 0xea, 0x0b,
		0xa9, 0x0e, 0x33, 0x04, 0x25, 0xae, 0x02, 0x24, 0xa4, 0xff, 0x78, 0x40, 0x42, 0x5a, 0x6f, 0x9c,
		0x0c, 0x09, 0x69, 0xeb, 0x07, 0xc5, 0x90, 0x90, 0xd6, 0x0b, 0x8d, 0x6c, 0xa6, 0x98, 0x2d, 0xe6,
		0x0b, 0x99, 0x22, 0x84, 0xa3, 0xad, 0x8f, 0x11, 0x08, 0x47, 0x0b, 0x1f, 0x35, 0x80, 0xeb, 0x8c,
		0x1b, 0xf3, 0x67, 0x15, 0x30, 0xa7, 0x2f, 0x43, 0xc5, 0x1a, 0x5d, 0x62, 0x08, 0x1b, 0xf0, 0x36,
		0x0f, 0xb8, 0x6c, 0x82, 0xcc, 0x56, 0xe0, 0xfd, 0x56, 0xc0, 0xda, 0xca, 0x11, 0x5c, 0xb5, 0x1d,
		0xd1, 0x0a, 0x1c, 0xd6, 0x6a, 0x39, 0x3d, 0xa6, 0x1e, 0x42, 0xcb, 0xb1, 0x4a, 0xad, 0x27, 0x1e,
		0x28, 0x11, 0xf2, 0xe1, 0xb8, 0xd2, 0xf2, 0xdb, 0xd6, 0x65, 0xbf, 0xab, 0x44, 0xaf, 0xcb, 0xad,
		0xca, 0xf0, 0x15, 0x7f, 0x4b, 0x21, 0xad, 0x93, 0xaf, 0x15, 0x9b, 0x60, 0x72, 0x25, 0xaa, 0x73,
		0x2c, 0xd2, 0x3b, 0xa6, 0x5e, 0x4b, 0x34, 0x73, 0x51, 0x97, 0x3e, 0x16, 0x4a, 0x20, 0x1b, 0x70,
		0x6b, 0x64, 0x68, 0x64, 0x68, 0xa3, 0xee, 0x07, 0x89, 0xd2, 0x0e, 0x2d, 0x49, 0x9e, 0xd6, 0x21,
		0x8f, 0xd3, 0xee, 0x1f, 0x85, 0x9d, 0x9f, 0x1a, 0x84, 0xc2, 0xce, 0x96, 0x00, 0x0f, 0x0a, 0x3b,
		0x1b, 0xa5, 0x1a, 0x14, 0x76, 0xa8, 0x8f, 0x8f, 0x09, 0x6f, 0x6e, 0xd0, 0x7b, 0xca, 0x3b, 0xe4,
		0x62, 0x30, 0xde, 0xdc, 0xe0, 0x88, 0xd6, 0x66, 0x5c, 0x8a, 0x07, 0x92, 0x9c, 0x8c, 0x60, 0xef,
		0xed, 0xdd, 0x1f, 0x38, 0x45, 0xe6, 0xb4, 0x4b, 0xce, 0x79, 0xed, 0xd5, 0xfb, 0x94, 0x1d, 0x1c,
		0xef, 0xbf, 0x16, 0x06, 0x1f, 0x2f, 0xbe, 0x2d, 0x7a, 0x99, 0xf7, 0xa9, 0x30, 0x38, 0x5e, 0xf2,
		0x93, 0xfc, 0xe0, 0xf8, 0x17, 0x7f, 0x47, 0x6e, 0xb0, 0x37, 0xf7, 0xd2, 0xe1, 0xf5, 0xcc, 0xb2,
		0x37, 0x64, 0x97, 0xbc, 0xe1, 0x70, 0xd9, 0x1b, 0x0e, 0x97, 0xbc, 0x61, 0xa9, 0x49, 0x99, 0x25,
		0x6f, 0xc8, 0x0d, 0xde, 0xe6, 0x5e, 0xbf, 0xb7, 0xf8, 0xa5, 0xf9, 0xc1, 0xfe, 0xdb, 0xb2, 0x9f,
		0x15, 0x06, 0x6f, 0xc7, 0xfb, 0xfb, 0xee, 0x9e, 0x97, 0xb9, 0x3f, 0x70, 0x8e, 0x6a, 0x6f, 0xde,
		0xfd, 0x81, 0xe3, 0xd5, 0x86, 0xaf, 0xac, 0xbd, 0xdd, 0x7b, 0x4e, 0x71, 0xf2, 0x74, 0xf8, 0xff,
		0x3e, 0x9d, 0x6e, 0xb9, 0x46, 0x29, 0x9e, 0xae, 0x6f, 0xca, 0x7f, 0x91, 0x0d, 0xaa, 0x7f, 0x10,
		0x55, 0xc4, 0xa3, 0xea, 0x4f, 0x1b, 0x5a, 0x03, 0xb4, 0x86, 0xb9, 0xc0, 0x1d, 0x6f, 0x5b, 0xe8,
		0xf7, 0x15, 0xa7, 0x27, 0x38, 0xcc, 0x1a, 0x07, 0xd5, 0x01, 0xaa, 0x03, 0x54, 0x07, 0xa8, 0x0e,
		0x50, 0x1d, 0xa0, 0x3a, 0xec, 0x98, 0xea, 0xd0, 0xf0, 0xfd, 0x2e, 0x67, 0x92, 0xa2, 0xe2, 0xe0,
		0x01, 0xe5, 0x08, 0x58, 0xa0, 0xfb, 0x6c, 0xf0, 0x92, 0x94, 0xbe, 0x62, 0x4a, 0x10, 0xd9, 0x99,
		0xdb, 0x0e, 0x9b, 0x0f, 0xfc, 0x91, 0xf5, 0xc6, 0xdb, 0xc1, 0xbb, 0x7e, 0x8f, 0xcb, 0x66, 0x04,
		0x4a, 0x8e, 0xe4, 0xea, 0x87, 0x1f, 0x7c, 0x77, 0x84, 0x0c, 0x15, 0x93, 0x4d, 0xee, 0x7e, 0xbc,
		0x10, 0xce, 0x5d, 0x71, 0x7b, 0x81, 0xaf, 0xfc, 0xa6, 0xdf, 0x0d, 0xe3, 0x67, 0x6e, 0xa3, 0xd3,
		0x73, 0x03, 0xd1, 0x70, 0x59, 0x5b, 0x38, 0x21, 0x6b, 0x8b, 0x30, 0x7e, 0xe6, 0x46, 0x12, 0x61,
		0x5f, 0x8a, 0x26, 0x0b, 0x95, 0x2b, 0xb9, 0xe8, 0x3c, 0x34, 0xfc, 0x20, 0x8c, 0x9f, 0xb9, 0xac,
		0xf5, 0x6f, 0x94, 0x09, 0xfc, 0xbe, 0x72, 0x7a, 0x7e, 0xa8, 0xdc, 0x08, 0x6f, 0xc3, 0xd1, 0x97,
		0xd1, 0xf6, 0xf3, 0x7a, 0x33, 0x84, 0x3e, 0x57, 0xd6, 0xe8, 0xc6, 0x76, 0x5f, 0x7e, 0x97, 0xfe,
		0x0f, 0xe9, 0x30, 0xa5, 0x02, 0xd1, 0x18, 0xb6, 0x88, 0x76, 0x57, 0x9e, 0x2e, 0x27, 0x98, 0xb7,
		0x4d, 0x73, 0xc0, 0x4f, 0xba, 0x7f, 0xcd, 0x66, 0x50, 0x19, 0xfd, 0x50, 0x1a, 0xf5, 0xd0, 0x1c,
		0xed, 0x50, 0x1b, 0xe5, 0x90, 0x1d, 0xdd, 0x90, 0x1d, 0xd5, 0x90, 0x1d, 0xcd, 0xec, 0x36, 0x7a,
		0x9d, 0x8a, 0x80, 0x46, 0xb7, 0x33, 0x97, 0xa4, 0xe8, 0xc9, 0x89, 0xf3, 0x26, 0xd2, 0x12, 0x15,
		0x3d, 0x88, 0x8a, 0xe4, 0xd3, 0x2b, 0xed, 0x34, 0x4b, 0x35, 0xdd, 0x92, 0x4f, 0xbb, 0xe4, 0xd3,
		0x2f, 0xf9, 0x34, 0x4c, 0x47, 0x8b, 0xb1, 0x08, 0x89, 0x8a, 0x54, 0xd2, 0x73, 0x6c, 0xd0, 0x30,
		0xf7, 0x39, 0x8a, 0x9a, 0xd4, 0xf9, 0xae, 0x47, 0x9d, 0x9a, 0x48, 0x2c, 0xf4, 0x68, 0xd5, 0xfe,
		0xc8, 0xa6, 0x6b, 0xca, 0x69, 0xdb, 0x8c, 0xf4, 0x4d, 0x3d, 0x8d, 0x1b, 0x93, 0xce, 0x8d, 0x49,
		0xeb, 0xc6, 0xa4, 0x77, 0x5a, 0x69, 0x9e, 0x58, 0xba, 0x8f, 0x5b, 0xf1, 0x96, 0x62, 0x82, 0xb5,
		0x68, 0x1f, 0x29, 0x3c, 0x37, 0x1a, 0x2e, 0x10, 0xb4, 0x6d, 0xe6, 0x88, 0xe1, 0xd1, 0x49, 0xc1,
		0x53, 0x58, 0xc1, 0xc2, 0x42, 0xea, 0xa1, 0x69, 0x8f, 0xaa, 0x6b, 0x64, 0xc1, 0x77, 0x64, 0x1e,
		0x4d, 0xe8, 0xf5, 0x00, 0xbd, 0x80, 0x5e, 0x40, 0x2f, 0xa0, 0x17, 0xd0, 0x8b, 0xcc, 0xba, 0xb8,
		0x15, 0xa9, 0x69, 0x5d, 0xb1, 0x61, 0x11, 0xa3, 0x75, 0x39, 0xe1, 0x5d, 0xf4, 0xde, 0x49, 0x5f,
		0x43, 0x4b, 0x89, 0x06, 0x2a, 0x4d, 0x05, 0x8c, 0x3c, 0x14, 0x98, 0x00, 0x07, 0x66, 0x41, 0x82,
		0x29, 0xb0, 0x60, 0x1c, 0x34, 0x18, 0x07, 0x0f, 0xc6, 0x41, 0x04, 0x4d, 0x98, 0x20, 0x0a, 0x15,
		0x71, 0xeb, 0x92, 0x55, 0xd4, 0xe6, 0xfa, 0xcd, 0xbe, 0x90, 0xca, 0xcb, 0x53, 0xee, 0x33, 0xc7,
		0x59, 0x3c, 0x4f, 0xd8, 0x44, 0x9a, 0x9b, 0x43, 0x7f, 0x7c, 0xd0, 0xce, 0x39, 0x16, 0xf5, 0xcd,
		0xa3, 0xe7, 0x8c, 0x25, 0xbe, 0x99, 0xf4, 0x9c, 0xbd, 0xa6, 0x6c, 0x9c, 0x3b, 0xdf, 0x57, 0x51,
		0xdf, 0x48, 0xd7, 0x90, 0xb4, 0xf4, 0x3e, 0xd4, 0xd8, 0xb3, 0x79, 0xa1, 0x96, 0xcf, 0xe5, 0x0e,
		0x73, 0x08, 0x37, 0x84, 0x9b, 0x01, 0x6c, 0x4a, 0xdf, 0xba, 0x1a, 0x98, 0x7e, 0x85, 0xb0, 0x20,
		0xbc, 0x0f, 0xf6, 0x9c, 0xad, 0x74, 0xf7, 0xc5, 0x36, 0x10, 0x4a, 0x27, 0x43, 0xa5, 0xea, 0xf9,
		0x17, 0x2b, 0x9b, 0x29, 0x78, 0x96, 0x63, 0x95, 0xac, 0x13, 0x3f, 0x68, 0xf1, 0xc0, 0xfa, 0xca,
		0x14, 0xff, 0xc1, 0x5e, 0xac, 0xca, 0x78, 0xad, 0xa5, 0x95, 0xb5, 0xf6, 0x4e, 0xbe, 0x56, 0x9c,
		0xec, 0xbe, 0x6d, 0x00, 0x03, 0x18, 0x22, 0x47, 0x4d, 0x87, 0x82, 0xe6, 0xec, 0xa1, 0x3d, 0x67,
		0xbb, 0x69, 0x0a, 0x55, 0x6c, 0xf8, 0xac, 0x52, 0xb5, 0x62, 0x08, 0x80, 0x1c, 0x40, 0x0e, 0x3b,
		0x7d, 0xbf, 0x28, 0x9e, 0x42, 0x44, 0x77, 0x4e, 0xfd, 0x5c, 0xc6, 0xa5, 0x3a, 0xb7, 0x7e, 0x9a,
		0x90, 0x50, 0x61, 0xfc, 0x2d, 0x03, 0x51, 0x61, 0xdc, 0x51, 0xa4, 0x43, 0x85, 0x31, 0x55, 0x6e,
		0x43, 0x85, 0x71, 0xdb, 0xd4, 0x08, 0xb3, 0x2a, 0x8c, 0x47, 0x06, 0x14, 0x18, 0x73, 0x28, 0x30,
		0x6e, 0xbf, 0x96, 0x83, 0x02, 0x63, 0x82, 0xf6, 0xa2, 0xe2, 0xb1, 0xe3, 0x59, 0xe9, 0x7d, 0xa8,
		0x99, 0x58, 0x60, 0xcc, 0xe4, 0x50, 0x5e, 0x44, 0xb0, 0x99, 0x00, 0xa6, 0xf4, 0xad, 0x43, 0x79,
		0x71, 0x95, 0xb0, 0x40, 0x79, 0x71, 0x47, 0x91, 0x14, 0xe5, 0x45, 0x32, 0x03, 0x41, 0x94, 0x17,
		0xd3, 0x37, 0x1c, 0xe5, 0x45, 0x58, 0x67, 0x08, 0x39, 0xa0, 0xbc, 0xf8, 0x0b, 0xf1, 0x1c, 0xd5,
		0xec, 0x9e, 0xc6, 0xc3, 0x29, 0x13, 0xea, 0x8b, 0x23, 0x5b, 0x51, 0x60, 0x5c, 0xc7, 0x3c, 0x14,
		0x18, 0x37, 0xe8, 0x8d, 0x28, 0x30, 0x26, 0x04, 0x73, 0x28, 0x30, 0x26, 0x4e, 0x6e, 0x28, 0x30,
		0x6e, 0x9b, 0x1e, 0x61, 0x4e, 0x81, 0xb1, 0x21, 0x24, 0x0b, 0x5e, 0x0c, 0xa8, 0x30, 0x16, 0x09,
		0x9b, 0x78, 0xc1, 0x65, 0x27, 0xda, 0x2c, 0x0c, 0x7a, 0xce, 0x6f, 0xde, 0x49, 0x23, 0x4b, 0x8c,
		0x1e, 0xaa, 0x1e, 0x09, 0x77, 0x56, 0x28, 0x31, 0x26, 0x10, 0x6a, 0x58, 0xc3, 0x88, 0x70, 0xdb,
		0x92, 0x70, 0x83, 0x54, 0xb8, 0xd6, 0x03, 0x45, 0xc6, 0x55, 0xc2, 0x02, 0x45, 0xc6, 0x1d, 0x85,
		0x52, 0x14, 0x19, 0xc9, 0x8c, 0x05, 0x51, 0x64, 0x4c, 0xdf, 0x70, 0x14, 0x19, 0x61, 0x9d, 0x21,
		0xe4, 0x80, 0x22, 0xe3, 0xaf, 0x71, 0x0c, 0x97, 0x2d, 0xde, 0xa2, 0x5f, 0x62, 0x8c, 0x2d, 0x45,
		0x81, 0x71, 0x1d, 0xf3, 0x50, 0x60, 0xdc, 0xa0, 0x2f, 0xa2, 0xc0, 0x98, 0x10, 0xc8, 0xa1, 0xc0,
		0x98, 0x38, 0xb5, 0xa1, 0xc0, 0xb8, 0x6d, 0x5a, 0x84, 0x41, 0x05, 0x46, 0xdf, 0xef, 0x72, 0x26,
		0x0d, 0xa8, 0x30, 0x7a, 0x1e, 0x5c, 0x70, 0x35, 0x8c, 0x84, 0x1c, 0xb6, 0xf1, 0x07, 0xe4, 0x30,
		0xd0, 0xd3, 0x3a, 0x14, 0x05, 0x39, 0x4c, 0x07, 0x58, 0x41, 0x0e, 0x83, 0x75, 0x16, 0xe4, 0x30,
		0x93, 0x59, 0xc6, 0xf6, 0x7b, 0x4a, 0xf8, 0x92, 0x75, 0xe9, 0xcb, 0x61, 0xb1, 0xa5, 0x90, 0xc3,
		0xd6, 0x31, 0x0f, 0x72, 0xd8, 0x26, 0x7d, 0x11, 0x72, 0x58, 0x32, 0x20, 0x07, 0x39, 0x2c, 0x71,
		0x6a, 0x83, 0x1c, 0xb6, 0x6d, 0x5a, 0x04, 0xe4, 0xb0, 0xcd, 0xa7, 0x71, 0xc8, 0x61, 0x2b, 0xdd,
		0x35, 0xc8, 0x61, 0x49, 0x3c, 0x20, 0x87, 0x81, 0x9e, 0xd6, 0xa1, 0x28, 0xc8, 0x61, 0x3a, 0xc0,
		0x0a, 0x72, 0x18, 0xac, 0xb3, 0x20, 0x87, 0x99, 0xcc, 0x32, 0x76, 0x8f, 0x05, 0x4a, 0x98, 0xa0,
		0x86, 0x4d, 0x0c, 0x85, 0x18, 0xb6, 0x8e, 0x79, 0x10, 0xc3, 0x36, 0xe8, 0x8a, 0x10, 0xc3, 0x12,
		0xc2, 0x38, 0x88, 0x61, 0x89, 0x33, 0x1b, 0xc4, 0xb0, 0x6d, 0x53, 0x22, 0x20, 0x86, 0x6d, 0x3e,
		0x8d, 0x43, 0x0c, 0x5b, 0xe9, 0xae, 0x41, 0x0c, 0x4b, 0xe2, 0x01, 0x31, 0x0c, 0xf4, 0xb4, 0x0e,
		0x45, 0x41, 0x0c, 0xd3, 0x01, 0x56, 0x10, 0xc3, 0x60, 0x9d, 0x05, 0x31, 0xcc, 0x64, 0x96, 0xb1,
		0x55, 0xc0, 0x64, 0x28, 0xc6, 0x7b, 0xa1, 0x10, 0xd7, 0xc3, 0x66, 0x6c, 0x85, 0x24, 0xb6, 0x8e,
		0x79, 0x90, 0xc4, 0x36, 0xe8, 0x8d, 0x90, 0xc4, 0x12, 0x82, 0x39, 0x48, 0x62, 0x89, 0x93, 0x1b,
		0x24, 0xb1, 0x6d, 0xd3, 0x23, 0x20, 0x89, 0x6d, 0x3e, 0x8d, 0x43, 0x12, 0x5b, 0xe9, 0xae, 0x41,
		0x12, 0x4b, 0xe2, 0x01, 0x49, 0x0c, 0xf4, 0xb4, 0x0e, 0x45, 0x41, 0x12, 0xd3, 0x01, 0x56, 0x90,
		0xc4, 0x60, 0x9d, 0x05, 0x49, 0xcc, 0x50, 0x8b, 0x88, 0x91, 0x95, 0x5d, 0x92, 0xd2, 0x57, 0x4c,
		0x09, 0x9f, 0xe6, 0x96, 0xf1, 0x76, 0xd8, 0x7c, 0xe0, 0x8f, 0xac, 0xc7, 0xa2, 0x93, 0x01, 0x6c,
		0xd7, 0xef, 0x71, 0xd9, 0x8c, 0x24, 0x26, 0x47, 0x72, 0xf5, 0xc3, 0x0f, 0xbe, 0x3b, 0x62, 0x48,
		0x83, 0xb2, 0xc9, 0xdd, 0x8f, 0x17, 0xc2, 0xb9, 0x2b, 0x6e, 0x6f, 0xdc, 0x3f, 0x86, 0xf1, 0x33,
		0xb7, 0xd1, 0xe9, 0xb9, 0x81, 0x68, 0xb8, 0xac, 0x2d, 0x9c, 0x90, 0xb5, 0x45, 0x18, 0x3f, 0x73,
		0x45, 0xef, 0x29, 0xef, 0xf4, 0xa5, 0x68, 0xb2, 0x50, 0xb9, 0x92, 0x8b, 0xce, 0x43, 0xc3, 0x0f,
		0xc2, 0xf8, 0x99, 0xcb, 0x5a, 0xff, 0x46, 0x63, 0x5c, 0xbf, 0xaf, 0x9c, 0x9e, 0x1f, 0x2a, 0x37,
		0xf0, 0xfb, 0x8a, 0x87, 0xa3, 0x2f, 0x6e, 0x5f, 0x7e, 0x97, 0xfe, 0x0f, 0xe9, 0x30, 0xa5, 0x02,
		0xd1, 0x88, 0x7e, 0x30, 0x77, 0xc9, 0x0d, 0x15, 0x53, 0x9c, 0x56, 0x1f, 0x4d, 0x27, 0x5e, 0x68,
		0x58, 0x42, 0x24, 0x62, 0x87, 0xe0, 0x15, 0x9f, 0x18, 0xa6, 0x86, 0x43, 0x71, 0x22, 0x76, 0x5d,
		0x88, 0x50, 0x95, 0x94, 0x0a, 0x48, 0xf5, 0x1f, 0xf6, 0xa5, 0x90, 0x67, 0x5d, 0x3e, 0x64, 0x26,
		0x62, 0x9b, 0xc6, 0xdb, 0x97, 0xec, 0x79, 0xc6, 0x32, 0xef, 0x28, 0x9b, 0xcd, 0x17, 0xb2, 0xd9,
		0x83, 0xc2, 0x61, 0xe1, 0xa0, 0x98, 0xcb, 0x79, 0x79, 0x8f, 0xd0, 0xd6, 0xfc, 0xf6, 0xf5, 0x10,
		0x2f, 0x79, 0xeb, 0x64, 0xe8, 0x7a, 0xb2, 0xdf, 0xed, 0x52, 0x34, 0xed, 0x2e, 0xe4, 0x01, 0xa9,
		0x5d, 0xf6, 0xa9, 0xf4, 0x18, 0x44, 0x73, 0xfb, 0x96, 0xe7, 0x74, 0x42, 0x83, 0x61, 0x3b, 0x54,
		0x41, 0xbf, 0xa9, 0xe4, 0x58, 0x3c, 0xb9, 0x1a, 0xdd, 0xba, 0xf2, 0xf8, 0xce, 0xd5, 0x27, 0xa3,
		0xc5, 0xfa, 0x49, 0xa7, 0x57, 0xaf, 0x8a, 0x46, 0xbd, 0xd4, 0x16, 0x37, 0xac, 0x2d, 0xea, 0xe5,
		0xde, 0x53, 0xfe, 0x6e, 0x74, 0x8f, 0xea, 0x57, 0xe3, 0x3b, 0x53, 0x2f, 0xb5, 0xfe, 0xad, 0x8a,
		0xc6, 0x75, 0x5f, 0x55, 0xfc, 0x50, 0xd5, 0xab, 0xc3, 0xfb, 0x51, 0xbf, 0x1b, 0xfd, 0xf1, 0xa5,
		0xf8, 0x6f, 0xff, 0x03, 0xdc, 0xa0, 0xdf, 0x02, 0xcd, 0xfd, 0x0f, 0xb5, 0x7e, 0x67, 0xab, 0xfa,
		0x1b, 0xbd, 0x11, 0xa6, 0xcf, 0xaf, 0xf5, 0x7c, 0xb2, 0xa6, 0x48, 0x9a, 0xb0, 0xfe, 0xa8, 0x4c,
		0x6d, 0x0d, 0x3d, 0xd7, 0x11, 0xba, 0x36, 0xf0, 0xa6, 0x01, 0xf8, 0x74, 0x80, 0x9e, 0x34, 0xc0,
		0x13, 0x02, 0x76, 0x42, 0x80, 0xae, 0x2b, 0x8c, 0x89, 0x24, 0x42, 0x73, 0x13, 0xa0, 0x46, 0x96,
		0x4e, 0x9a, 0x9d, 0xf5, 0x24, 0xf2, 0xf4, 0xd3, 0x68, 0xba, 0x9f, 0x98, 0x72, 0xa4, 0xeb, 0x8e,
		0x70, 0x13, 0x23, 0x3b, 0x5d, 0xc7, 0x4f, 0xcf, 0xfd, 0xd2, 0xf9, 0xa4, 0x94, 0x1c, 0x5c, 0x97,
		0x63, 0x1b, 0xe5, 0xd0, 0x29, 0x66, 0xa7, 0xe4, 0xb2, 0x51, 0x3a, 0xe1, 0x98, 0x7c, 0x70, 0xa4,
		0x10, 0x18, 0xf6, 0x3b, 0x07, 0x08, 0xd2, 0x9b, 0xb4, 0x13, 0x4f, 0x7f, 0xfa, 0x68, 0x40, 0x4a,
		0x9d, 0xc1, 0x64, 0xb2, 0x62, 0x4a, 0x1f, 0x97, 0xf6, 0x1a, 0x02, 0x1d, 0x6b, 0x02, 0xf4, 0xce,
		0xf1, 0xd7, 0x35, 0xeb, 0x4c, 0xfb, 0x1c, 0x7c, 0xed, 0x53, 0xc0, 0xb4, 0xcf, 0x91, 0xdf, 0x2e,
		0x4c, 0x39, 0x15, 0xe9, 0xca, 0x52, 0xf6, 0x98, 0x61, 0x53, 0x0f, 0x9c, 0x49, 0x77, 0x31, 0xfe,
		0xfc, 0x94, 0x9d, 0x36, 0xdd, 0x04, 0x30, 0x9f, 0x08, 0x32, 0x29, 0x7f, 0xb0, 0xc6, 0x45, 0x62,
		0x34, 0x16, 0x7f, 0xe9, 0x9e, 0x96, 0x4c, 0x66, 0xb1, 0x16, 0x99, 0x39, 0xc3, 0x64, 0x16, 0x57,
		0x6d, 0xb7, 0xa0, 0x93, 0x76, 0x42, 0x79, 0x9f, 0x58, 0xf4, 0xc5, 0xdb, 0xbb, 0xfc, 0xa2, 0x2b,
		0xd6, 0xf4, 0xa4, 0x19, 0x6d, 0xe3, 0x0e, 0x4a, 0x69, 0x87, 0x56, 0xfa, 0xa1, 0x92, 0x86, 0xc8,
		0xa5, 0x23, 0x72, 0x69, 0x89, 0x5c, 0x7a, 0xd2, 0x93, 0xa6, 0x34, 0xa5, 0x2b, 0xed, 0x69, 0x2b,
		0x36, 0x60, 0x32, 0x47, 0x41, 0x7b, 0xa4, 0x4e, 0x77, 0xb6, 0xd5, 0x39, 0x69, 0xe2, 0x63, 0x4a,
		0xd3, 0x3c, 0x01, 0x99, 0xcc, 0xb6, 0x1c, 0x94, 0xb6, 0xdf, 0xa0, 0xb9, 0xcd, 0x06, 0xb5, 0x05,
		0xa1, 0x64, 0xb7, 0xcd, 0x20, 0xbb, 0x9a, 0x93, 0xec, 0x36, 0x18, 0xbb, 0x3d, 0x2b, 0x95, 0xcc,
		0xf6, 0x15, 0x71, 0xbf, 0xd3, 0xe5, 0xac, 0x1d, 0xf0, 0x36, 0x85, 0x4e, 0x67, 0x32, 0xf2, 0x2a,
		0x10, 0xb0, 0xa5, 0x32, 0x2e, 0xfe, 0x7e, 0xfe, 0x3c, 0x5a, 0x1e, 0xe7, 0x4e, 0x52, 0xf9, 0xae,
		0x4e, 0x7d, 0xd5, 0x38, 0xfe, 0xea, 0xd1, 0x48, 0xd7, 0x53, 0xaa, 0x23, 0x31, 0xf8, 0x02, 0xd4,
		0x01, 0xea, 0x00, 0x75, 0x80, 0x3a, 0x40, 0x1d, 0xa0, 0x0e, 0x50, 0xb7, 0x26, 0xd4, 0x8d, 0xba,
		0x1d, 0x30, 0x5d, 0xea, 0x4d, 0x31, 0xda, 0x73, 0x82, 0x0c, 0xd2, 0x8d, 0xcc, 0xa1, 0x41, 0x74,
		0x1e, 0x88, 0x0e, 0x44, 0x07, 0xa2, 0x03, 0xd1, 0x81, 0xe8, 0x74, 0xb5, 0x8a, 0xee, 0x4a, 0x56,
		0x6c, 0x48, 0xb4, 0xd1, 0x8e, 0x90, 0x2d, 0x4e, 0x67, 0xb3, 0xf0, 0xe9, 0x3c, 0xf0, 0xa9, 0x6d,
		0x54, 0x76, 0x27, 0x22, 0xb5, 0x2d, 0x3d, 0xb9, 0x6d, 0xe8, 0x29, 0x6e, 0x3b, 0x4f, 0x7b, 0x9b,
		0x79, 0xaa, 0x1b, 0xa3, 0x92, 0xdf, 0x46, 0x9e, 0xfc, 0x2e, 0xa7, 0xe4, 0xb7, 0x89, 0xc7, 0xbe,
		0x73, 0x24, 0x25, 0x16, 0xc2, 0x52, 0x0b, 0x45, 0xc9, 0x65, 0x91, 0xf4, 0xf2, 0x93, 0x7f, 0x11,
		0x52, 0x84, 0x5c, 0x85, 0xf1, 0xb3, 0xb1, 0x50, 0x33, 0xc2, 0x0c, 0x6c, 0xec, 0x44, 0x25, 0x28,
		0xed, 0xa6, 0xff, 0xf8, 0xd8, 0x97, 0x42, 0xbd, 0x50, 0xa5, 0xd3, 0x8f, 0x06, 0x02, 0x51, 0x81,
		0xa8, 0x40, 0x54, 0x20, 0x2a, 0x10, 0x15, 0x88, 0x0a, 0x44, 0x05, 0xa2, 0xae, 0x8b, 0xa8, 0x13,
		0xae, 0x10, 0x3c, 0x8c, 0x9f, 0xbf, 0x80, 0x52, 0x69, 0x52, 0x2a, 0x7f, 0x56, 0x0e, 0x79, 0x52,
		0x5d, 0x64, 0x24, 0x68, 0x15, 0xb4, 0x0a, 0x5a, 0x05, 0xad, 0x82, 0x56, 0x41, 0xab, 0xa0, 0x55,
		0xd0, 0xea, 0xba, 0xb4, 0x3a, 0xcb, 0x16, 0x43, 0x62, 0x7d, 0xc7, 0x1a, 0xa0, 0x56, 0x9a, 0xd4,
		0x2a, 0xe4, 0x13, 0xeb, 0x8a, 0x96, 0x13, 0x70, 0x16, 0x12, 0x3a, 0x36, 0x23, 0x8e, 0xd0, 0x0f,
		0xf6, 0x81, 0x55, 0xc1, 0xaa, 0x60, 0x55, 0xb0, 0x2a, 0x58, 0x15, 0xac, 0xba, 0x63, 0xac, 0x2a,
		0x5a, 0x5c, 0x2a, 0xa1, 0x5e, 0x88, 0xf2, 0x2a, 0xa5, 0x43, 0xdc, 0xca, 0xe3, 0x5b, 0x75, 0xc2,
		0x42, 0x82, 0x5d, 0xea, 0xa4, 0x41, 0xcb, 0x57, 0xdf, 0x4a, 0x17, 0xe5, 0xd3, 0x7a, 0xf5, 0xfa,
		0xee, 0xf6, 0xac, 0x5e, 0x3d, 0x2b, 0xdd, 0x5c, 0x5f, 0x51, 0xeb, 0x5d, 0xbf, 0xb1, 0x6e, 0x3f,
		0xda, 0xfd, 0x91, 0xde, 0x81, 0xee, 0x34, 0x8f, 0x0f, 0x9f, 0x6b, 0xdd, 0xd2, 0x4d, 0xfd, 0xe2,
		0xfa, 0xba, 0x42, 0xef, 0x58, 0xea, 0xc1, 0x27, 0x34, 0xe9, 0x7a, 0x4d, 0xfa, 0xe5, 0xe2, 0xee,
		0xe6, 0xf6, 0xac, 0x8a, 0x76, 0xdd, 0xb6, 0x76, 0xbd, 0xbe, 0x3a, 0x3f, 0x3b, 0x45, 0x8b, 0x6e,
		0x4f, 0x8b, 0x5e, 0x57, 0xcb, 0x5f, 0xcb, 0x57, 0xa5, 0xdb, 0xeb, 0xaa, 0x8d, 0x63, 0xda, 0x7f,
		0xfa, 0xa8, 0x61, 0x3c, 0x42, 0xcc, 0x0a, 0x0a, 0xea, 0x60, 0x97, 0x85, 0xca, 0x79, 0xf4, 0x5b,
		0xa2, 0x2d, 0x78, 0x8b, 0x9e, 0x38, 0xf8, 0xde, 0x3c, 0x68, 0x83, 0x8b, 0xcc, 0x81, 0x36, 0xb8,
		0x82, 0x43, 0x41, 0x1b, 0x5c, 0xc9, 0xd3, 0xa1, 0x0d, 0xfe, 0xa6, 0x81, 0xd0, 0x06, 0x0d, 0xe2,
		0x5f, 0xc2, 0xda, 0xa0, 0x12, 0x8f, 0x5c, 0x89, 0xe6, 0xf7, 0x30, 0x9f, 0x25, 0xa8, 0x0d, 0x1e,
		0x11, 0x32, 0xe9, 0x4e, 0x8a, 0xe8, 0x14, 0x5b, 0x5b, 0x32, 0xe9, 0x87, 0xbc, 0xe9, 0xcb, 0x56,
		0x48, 0xe9, 0x96, 0x55, 0x99, 0xec, 0x70, 0x72, 0x7a, 0x1b, 0xbd, 0xe1, 0x9e, 0x7d, 0x29, 0x24,
		0xb9, 0x8c, 0x18, 0x1b, 0x17, 0xc9, 0xa6, 0x74, 0x98, 0x6b, 0xce, 0xbe, 0xf3, 0x80, 0x35, 0x95,
		0xf0, 0xe5, 0xa9, 0xe8, 0x08, 0xdd, 0xc7, 0x4b, 0xff, 0xbc, 0x83, 0xe3, 0x1d, 0xa6, 0xc4, 0x13,
		0xd7, 0x7a, 0x9a, 0xb2, 0x61, 0xda, 0x8c, 0x7d, 0xc9, 0x9e, 0xe9, 0x87, 0x06, 0xad, 0x63, 0xc4,
		0x11, 0x2d, 0x3b, 0xc4, 0x93, 0xf4, 0xac, 0xa9, 0x41, 0xf3, 0xa2, 0xd2, 0x9b, 0x92, 0x39, 0xd8,
		0x61, 0x0e, 0xf2, 0x69, 0x1c, 0xf0, 0xf0, 0x11, 0xee, 0xa1, 0x73, 0x2d, 0x31, 0x08, 0x3a, 0xd7,
		0xaa, 0xd6, 0x41, 0xe7, 0x5a, 0xd3, 0x40, 0xe8, 0x5c, 0x5b, 0x41, 0x02, 0xd0, 0xb9, 0xfe, 0xab,
		0xdf, 0xea, 0x0b, 0xa9, 0x0e, 0x33, 0x04, 0x25, 0xae, 0x02, 0x24, 0xa4, 0xff, 0x78, 0x40, 0x42,
		0x5a, 0x6f, 0x9c, 0x0c, 0x09, 0x69, 0xeb, 0x07, 0xc5, 0x90, 0x90, 0xd6, 0x0b, 0x8d, 0x6c, 0xa6,
		0x98, 0x2d, 0xe6, 0x0b, 0x99, 0x22, 0x84, 0xa3, 0xad, 0x8f, 0x11, 0x08, 0x47, 0x0b, 0x1f, 0x35,
		0x80, 0xeb, 0x8c, 0x1b, 0xf3, 0x67, 0x15, 0x30, 0xa7, 0x2f, 0x43, 0xc5, 0x1a, 0x5d, 0x62, 0x08,
		0x1b, 0xf0, 0x36, 0x0f, 0xb8, 0x6c, 0x82, 0xcc, 0x56, 0xe0, 0xfd, 0x56, 0xc0, 0xda, 0xca, 0x11,
		0x5c, 0xb5, 0x1d, 0xd1, 0x0a, 0x1c, 0xd6, 0x6a, 0x39, 0x3d, 0xa6, 0x1e, 0x42, 0xcb, 0xb1, 0x4a,
		0xad, 0x27, 0x1e, 0x28, 0x11, 0xf2, 0xe1, 0xb8, 0xd2, 0xf2, 0xdb, 0xd6, 0x65, 0xbf, 0xab, 0x44,
		0xaf, 0xcb, 0xad, 0xca, 0xf0, 0x15, 0x7f, 0x4b, 0x21, 0xad, 0x93, 0xaf, 0x15, 0x9b, 0x60, 0x72,
		0x25, 0xaa, 0x73, 0x2c, 0xd2, 0x3b, 0xa6, 0x5e, 0x4b, 0x34, 0x73, 0x51, 0x97, 0x3e, 0x16, 0x4a,
		0x20, 0x1b, 0x70, 0x6b, 0x64, 0x68, 0x64, 0x68, 0xa3, 0xee, 0x07, 0x89, 0xd2, 0x0e, 0x2d, 0x49,
		0x9e, 0xd6, 0x21, 0x8f, 0xd3, 0xee, 0x1f, 0x85, 0x9d, 0x9f, 0x1a, 0x84, 0xc2, 0xce, 0x96, 0x00,
		0x0f, 0x0a, 0x3b, 0x1b, 0xa5, 0x1a, 0x14, 0x76, 0xa8, 0x8f, 0x8f, 0x09, 0x6f, 0x6e, 0xd0, 0x7b,
		0xca, 0x3b, 0xe4, 0x62, 0x30, 0xde, 0xdc, 0xe0, 0x88, 0xd6, 0x66, 0x5c, 0x8a, 0x07, 0x92, 0x9c,
		0x8c, 0x60, 0xef, 0xed, 0xdd, 0x1f, 0x38, 0x45, 0xe6, 0xb4, 0x4b, 0xce, 0x79, 0xed, 0xd5, 0xfb,
		0x94, 0x1d, 0x1c, 0xef, 0xbf, 0x16, 0x06, 0x1f, 0x2f, 0xbe, 0x2d, 0x7a, 0x99, 0xf7, 0xa9, 0x30,
		0x38, 0x5e, 0xf2, 0x93, 0xfc, 0xe0, 0xf8, 0x17, 0x7f, 0x47, 0x6e, 0xb0, 0x37, 0xf7, 0xd2, 0xe1,
		0xf5, 0xcc, 0xb2, 0x37, 0x64, 0x97, 0xbc, 0xe1, 0x70, 0xd9, 0x1b, 0x0e, 0x97, 0xbc, 0x61, 0xa9,
		0x49, 0x99, 0x25, 0x6f, 0xc8, 0x0d, 0xde, 0xe6, 0x5e, 0xbf, 0xb7, 0xf8, 0xa5, 0xf9, 0xc1, 0xfe,
		0xdb, 0xb2, 0x9f, 0x15, 0x06, 0x6f, 0xc7, 0xfb, 0xfb, 0xee, 0x9e, 0x97, 0xb9, 0x3f, 0x70, 0x8e,
		0x6a, 0x6f, 0xde, 0xfd, 0x81, 0xe3, 0xd5, 0x86, 0xaf, 0xac, 0xbd, 0xdd, 0x7b, 0x4e, 0x71, 0xf2,
		0x74, 0xf8, 0xff, 0x3e, 0x9d, 0x6e, 0xb9, 0x46, 0x29, 0x9e, 0xae, 0x6f, 0xca, 0x7f, 0x91, 0x0d,
		0xaa, 0x7f, 0x10, 0x55, 0xc4, 0xa3, 0xea, 0x4f, 0x1b, 0x5a, 0x03, 0xb4, 0x86, 0xb9, 0xc0, 0x1d,
		0x6f, 0x5b, 0xe8, 0xf7, 0x15, 0xa7, 0x27, 0x38, 0xcc, 0x1a, 0x07, 0xd5, 0x01, 0xaa, 0x03, 0x54,
		0x07, 0xa8, 0x0e, 0x50, 0x1d, 0xa0, 0x3a, 0xec, 0x98, 0xea, 0xd0, 0xf0, 0xfd, 0x2e, 0x67, 0x92,
		0xa2, 0xe2, 0xe0, 0x01, 0xe5, 0x08, 0x58, 0xa0, 0xfb, 0x6c, 0xf0, 0x92, 0x94, 0xbe, 0x62, 0x4a,
		0x10, 0xd9, 0x99, 0xdb, 0x0e, 0x9b, 0x0f, 0xfc, 0x91, 0xf5, 0xc6, 0xdb, 0xc1, 0xbb, 0x7e, 0x8f,
		0xcb, 0x66, 0x04, 0x4a, 0x8e, 0xe4, 0xea, 0x87, 0x1f, 0x7c, 0x77, 0x84, 0x0c, 0x15, 0x93, 0x4d,
		0xee, 0x7e, 0xbc, 0x10, 0xce, 0x5d, 0x71, 0x7b, 0x81, 0xaf, 0xfc, 0xa6, 0xdf, 0x0d, 0xe3, 0x67,
		0x6e, 0xa3, 0xd3, 0x73, 0x03, 0xd1, 0x70, 0x59, 0x5b, 0x38, 0x21, 0x6b, 0x8b, 0x30, 0x7e, 0xe6,
		0x46, 0x12, 0x61, 0x5f, 0x8a, 0x26, 0x0b, 0x95, 0x2b, 0xb9, 0xe8, 0x3c, 0x34, 0xfc, 0x20, 0x8c,
		0x9f, 0xb9, 0xac, 0xf5, 0x6f, 0x94, 0x09, 0xfc, 0xbe, 0x72, 0x7a, 0x01, 0x77, 0x23, 0xba, 0x0d,
		0x47, 0x5f, 0x46, 0xbb, 0xcf, 0xeb, 0x4d, 0x10, 0xfa, 0x3c, 0x59, 0xa3, 0x17, 0xdb, 0x7d, 0xf9,
		0x5d, 0xfa, 0x3f, 0xa4, 0xc3, 0x94, 0x0a, 0x44, 0x63, 0xd8, 0x22, 0xda, 0x3d, 0x79, 0xba, 0x9a,
		0x60, 0xde, 0x36, 0xcd, 0xf1, 0x3e, 0xe9, 0xfd, 0x35, 0x9b, 0x41, 0x65, 0xf0, 0x43, 0x69, 0xd0,
		0x43, 0x73, 0xb0, 0x43, 0x6d, 0x90, 0x43, 0x76, 0x70, 0x43, 0x76, 0x50, 0x43, 0x76, 0x30, 0xb3,
		0xdb, 0xe4, 0x75, 0x2a, 0x02, 0x1a, 0xdd, 0xce, 0x5c, 0x92, 0xa2, 0xa7, 0x26, 0xce, 0x9b, 0x48,
		0x4b, 0x53, 0xf4, 0xa0, 0x29, 0x92, 0x4f, 0xaf, 0xb4, 0xd3, 0x2c, 0xd5, 0x74, 0x4b, 0x3e, 0xed,
		0x92, 0x4f, 0xbf, 0xe4, 0xd3, 0x30, 0x1d, 0x29, 0xc6, 0x22, 0xa4, 0x29, 0x52, 0x49, 0xcf, 0xb1,
		0x41, 0xc3, 0xdc, 0xe7, 0x28, 0x6a, 0x4a, 0xe7, 0xbb, 0x1e, 0x75, 0x6a, 0x22, 0xb1, 0xd0, 0xa3,
		0x55, 0xfa, 0x23, 0x9b, 0xae, 0x29, 0xa7, 0x6d, 0x33, 0xd2, 0x37, 0xf5, 0x34, 0x6e, 0x4c, 0x3a,
		0x37, 0x26, 0xad, 0x1b, 0x93, 0xde, 0x69, 0xa5, 0x79, 0x62, 0xe9, 0x3e, 0x6e, 0xc5, 0x5b, 0x8a,
		0x09, 0xd6, 0xa2, 0x7d, 0xa2, 0xf0, 0xdc, 0x68, 0xb8, 0x40, 0xd0, 0xb6, 0x99, 0x13, 0x86, 0x47,
		0x07, 0x05, 0x4f, 0x61, 0x05, 0xeb, 0x0a, 0xa9, 0x87, 0xa6, 0x3d, 0xaa, 0xae, 0x91, 0x05, 0xdf,
		0x91, 0x79, 0x34, 0xa1, 0xd7, 0x03, 0xf4, 0x02, 0x7a, 0x01, 0xbd, 0x80, 0x5e, 0x40, 0x2f, 0x32,
		0xeb, 0xe2, 0x56, 0xa4, 0xa6, 0x75, 0xc5, 0x86, 0x45, 0x8c, 0xd6, 0xe5, 0x84, 0x37, 0xd1, 0x7b,
		0x27, 0x7d, 0x0d, 0x2d, 0x25, 0x1a, 0xa8, 0x34, 0x15, 0x30, 0xf2, 0x50, 0x60, 0x02, 0x1c, 0x98,
		0x05, 0x09, 0xa6, 0xc0, 0x82, 0x71, 0xd0, 0x60, 0x1c, 0x3c, 0x18, 0x07, 0x11, 0x34, 0x61, 0x82,
		0x28, 0x54, 0xc4, 0xad, 0x4b, 0x56, 0x51, 0x9b, 0xeb, 0x37, 0xfb, 0x42, 0x2a, 0x2f, 0x4f, 0xb9,
		0xcf, 0x1c, 0x67, 0xf1, 0x3c, 0x61, 0x13, 0x69, 0xee, 0x0d, 0xfd, 0xf1, 0x41, 0x3b, 0xe7, 0x58,
		0xd4, 0xf7, 0x8e, 0x9e, 0x33, 0x96, 0xf8, 0x5e, 0xd2, 0x73, 0xf6, 0x9a, 0xb2, 0x6f, 0xee, 0x7c,
		0x5f, 0x45, 0x7d, 0x1f, 0x5d, 0x43, 0xd2, 0xd2, 0xfb, 0x50, 0x63, 0xcf, 0xe6, 0x85, 0x5a, 0x3e,
		0x97, 0x3b, 0xcc, 0x21, 0xdc, 0x10, 0x6e, 0x06, 0xb0, 0x29, 0x7d, 0xeb, 0x6a, 0x60, 0xfa, 0x15,
		0xc2, 0x82, 0xf0, 0x36, 0xd8, 0x73, 0xb6, 0xd2, 0xdd, 0x16, 0xdb, 0x40, 0x28, 0x9d, 0x0c, 0x95,
		0xaa, 0xe7, 0x5f, 0xac, 0x6c, 0xa6, 0xe0, 0x59, 0x8e, 0x55, 0xb2, 0x4e, 0xfc, 0xa0, 0xc5, 0x03,
		0xeb, 0x2b, 0x53, 0xfc, 0x07, 0x7b, 0xb1, 0x2a, 0xe3, 0xa5, 0x96, 0x56, 0xd6, 0xda, 0x3b, 0xf9,
		0x5a, 0x71, 0xb2, 0xfb, 0xb6, 0x01, 0x0c, 0x60, 0x88, 0x1c, 0x35, 0x1d, 0x0a, 0x9a, 0xb3, 0x85,
		0xf6, 0x9c, 0xed, 0xa6, 0x29, 0x54, 0xb1, 0xe1, 0xb3, 0x4a, 0xd5, 0x8a, 0x21, 0x00, 0x72, 0x00,
		0x39, 0xec, 0xf4, 0xfd, 0xa2, 0x78, 0x08, 0x11, 0xdd, 0x39, 0xf5, 0x73, 0x19, 0x97, 0xea, 0xdc,
		0xfa, 0x69, 0x42, 0x42, 0x85, 0xf1, 0xb7, 0x0c, 0x44, 0x85, 0x71, 0x47, 0x91, 0x0e, 0x15, 0xc6,
		0x54, 0xb9, 0x0d, 0x15, 0xc6, 0x6d, 0x53, 0x23, 0xcc, 0xaa, 0x30, 0x1e, 0x19, 0x50, 0x60, 0xcc,
		0xa1, 0xc0, 0xb8, 0xfd, 0x5a, 0x0e, 0x0a, 0x8c, 0x09, 0xda, 0x8b, 0x8a, 0xc7, 0x8e, 0x67, 0xa5,
		0xf7, 0xa1, 0x66, 0x62, 0x81, 0x31, 0x93, 0x43, 0x79, 0x11, 0xc1, 0x66, 0x02, 0x98, 0xd2, 0xb7,
		0x0e, 0xe5, 0xc5, 0x55, 0xc2, 0x02, 0xe5, 0xc5, 0x1d, 0x45, 0x52, 0x94, 0x17, 0xc9, 0x0c, 0x04,
		0x51, 0x5e, 0x4c, 0xdf, 0x70, 0x94, 0x17, 0x61, 0x9d, 0x21, 0xe4, 0x80, 0xf2, 0xe2, 0x2f, 0xc4,
		0x73, 0x54, 0xb3, 0x7b, 0x1a, 0x0f, 0xa7, 0x4c, 0xa8, 0x2f, 0x8e, 0x6c, 0x45, 0x81, 0x71, 0x1d,
		0xf3, 0x50, 0x60, 0xdc, 0xa0, 0x37, 0xa2, 0xc0, 0x98, 0x10, 0xcc, 0xa1, 0xc0, 0x98, 0x38, 0xb9,
		0xa1, 0xc0, 0xb8, 0x6d, 0x7a, 0x84, 0x39, 0x05, 0xc6, 0x86, 0x90, 0x2c, 0x78, 0x31, 0xa0, 0xc2,
		0x58, 0x24, 0x6c, 0xe2, 0x05, 0x97, 0x9d, 0x68, 0xb3, 0x30, 0xe8, 0x39, 0xbf, 0x79, 0x27, 0x8d,
		0x2c, 0x31, 0x7a, 0xa8, 0x7a, 0x24, 0xdc, 0x59, 0xa1, 0xc4, 0x98, 0x40, 0xa8, 0x61, 0x0d, 0x23,
		0xc2, 0x6d, 0x4b, 0xc2, 0x0d, 0x52, 0xe1, 0x5a, 0x0f, 0x14, 0x19, 0x57, 0x09, 0x0b, 0x14, 0x19,
		0x77, 0x14, 0x4a, 0x51, 0x64, 0x24, 0x33, 0x16, 0x44, 0x91, 0x31, 0x7d, 0xc3, 0x51, 0x64, 0x84,
		0x75, 0x86, 0x90, 0x03, 0x8a, 0x8c, 0xbf, 0xc6, 0x31, 0x5c, 0xb6, 0x78, 0x8b, 0x7e, 0x89, 0x31,
		0xb6, 0x14, 0x05, 0xc6, 0x75, 0xcc, 0x43, 0x81, 0x71, 0x83, 0xbe, 0x88, 0x02, 0x63, 0x42, 0x20,
		0x87, 0x02, 0x63, 0xe2, 0xd4, 0x86, 0x02, 0xe3, 0xb6, 0x69, 0x11, 0x06, 0x15, 0x18, 0x7d, 0xbf,
		0xcb, 0x99, 0x34, 0xa0, 0xc2, 0xe8, 0x79, 0x70, 0xc1, 0xd5, 0x30, 0x12, 0x72, 0xd8, 0xc6, 0x1f,
		0x90, 0xc3, 0x40, 0x4f, 0xeb, 0x50, 0x14, 0xe4, 0x30, 0x1d, 0x60, 0x05, 0x39, 0x0c, 0xd6, 0x59,
		0x90, 0xc3, 0x4c, 0x66, 0x19, 0xdb, 0xef, 0x29, 0xe1, 0x4b, 0xd6, 0xa5, 0x2f, 0x87, 0xc5, 0x96,
		0x42, 0x0e, 0x5b, 0xc7, 0x3c, 0xc8, 0x61, 0x9b, 0xf4, 0x45, 0xc8, 0x61, 0xc9, 0x80, 0x1c, 0xe4,
		0xb0, 0xc4, 0xa9, 0x0d, 0x72, 0xd8, 0xb6, 0x69, 0x11, 0x90, 0xc3, 0x36, 0x9f, 0xc6, 0x21, 0x87,
		0xad, 0x74, 0xd7, 0x20, 0x87, 0x25, 0xf1, 0x80, 0x1c, 0x06, 0x7a, 0x5a, 0x87, 0xa2, 0x20, 0x87,
		0xe9, 0x00, 0x2b, 0xc8, 0x61, 0xb0, 0xce, 0x82, 0x1c, 0x66, 0x32, 0xcb, 0xd8, 0x3d, 0x16, 0x28,
		0x61, 0x82, 0x1a, 0x36, 0x31, 0x14, 0x62, 0xd8, 0x3a, 0xe6, 0x41, 0x0c, 0xdb, 0xa0, 0x2b, 0x42,
		0x0c, 0x4b, 0x08, 0xe3, 0x20, 0x86, 0x25, 0xce, 0x6c, 0x10, 0xc3, 0xb6, 0x4d, 0x89, 0x80, 0x18,
		0xb6, 0xf9, 0x34, 0x0e, 0x31, 0x6c, 0xa5, 0xbb, 0x06, 0x31, 0x2c, 0x89, 0x07, 0xc4, 0x30, 0xd0,
		0xd3, 0x3a, 0x14, 0x05, 0x31, 0x4c, 0x07, 0x58, 0x41, 0x0c, 0x83, 0x75, 0x16, 0xc4, 0x30, 0x93,
		0x59, 0xc6, 0x56, 0x01, 0x93, 0xa1, 0x18, 0xef, 0x85, 0x42, 0x5c, 0x0f, 0x9b, 0xb1, 0x15, 0x92,
		0xd8, 0x3a, 0xe6, 0x41, 0x12, 0xdb, 0xa0, 0x37, 0x42, 0x12, 0x4b, 0x08, 0xe6, 0x20, 0x89, 0x25,
		0x4e, 0x6e, 0x90, 0xc4, 0xb6, 0x4d, 0x8f, 0x80, 0x24, 0xb6, 0xf9, 0x34, 0x0e, 0x49, 0x6c, 0xa5,
		0xbb, 0x06, 0x49, 0x2c, 0x89, 0x07, 0x24, 0x31, 0xd0, 0xd3, 0x3a, 0x14, 0x05, 0x49, 0x4c, 0x07,
		0x58, 0x41, 0x12, 0x83, 0x75, 0x16, 0x24, 0x31, 0x43, 0x2d, 0x22, 0x46, 0x56, 0x76, 0x49, 0x4a,
		0x5f, 0x31, 0x25, 0x7c, 0x9a, 0x5b, 0xc6, 0xdb, 0x61, 0xf3, 0x81, 0x3f, 0xb2, 0x1e, 0x8b, 0x4e,
		0x06, 0xb0, 0x5d, 0xbf, 0xc7, 0x65, 0x33, 0x92, 0x98, 0x1c, 0xc9, 0xd5, 0x0f, 0x3f, 0xf8, 0xee,
		0x88, 0x21, 0x0d, 0xca, 0x26, 0x77, 0x3f, 0x5e, 0x08, 0xe7, 0xae, 0xb8, 0xbd, 0x71, 0xff, 0x18,
		0xc6, 0xcf, 0xdc, 0x46, 0xa7, 0xe7, 0x06, 0xa2, 0xe1, 0xb2, 0xb6, 0x70, 0x42, 0xd6, 0x16, 0x61,
		0xfc, 0xcc, 0x15, 0xbd, 0xa7, 0xbc, 0xd3, 0x97, 0xa2, 0xc9, 0x42, 0xe5, 0x4a, 0x2e, 0x3a, 0x0f,
		0x0d, 0x3f, 0x08, 0xe3, 0x67, 0x2e, 0x6b, 0xfd, 0x1b, 0x8d, 0x71, 0xfd, 0xbe, 0x72, 0x7a, 0x01,
		0x77, 0x03, 0xbf, 0xaf, 0x78, 0x38, 0xfa, 0xe2, 0xf6, 0xe5, 0x77, 0xe9, 0xff, 0x90, 0x0e, 0x53,
		0x2a, 0x10, 0x8d, 0xe8, 0x07, 0x73, 0x97, 0xdc, 0x50, 0x31, 0xc5, 0x69, 0x75, 0xd1, 0x74, 0xc2,
		0x85, 0x86, 0x25, 0x44, 0x02, 0x76, 0xc8, 0x5d, 0xf1, 0x81, 0x61, 0x6a, 0x38, 0x12, 0x27, 0x62,
		0xd7, 0x85, 0x08, 0x55, 0x49, 0xa9, 0x80, 0x54, 0xf7, 0x61, 0x5f, 0x0a, 0x79, 0xd6, 0xe5, 0x43,
		0x64, 0x22, 0xb6, 0x67, 0xbc, 0x7d, 0xc9, 0x9e, 0x67, 0x2c, 0xf3, 0x8e, 0xb2, 0xd9, 0x7c, 0x21,
		0x9b, 0x3d, 0x28, 0x1c, 0x16, 0x0e, 0x8a, 0xb9, 0x9c, 0x97, 0xf7, 0x08, 0xed, 0xcc, 0x6f, 0x5f,
		0x0f, 0xe9, 0x92, 0xb7, 0x4e, 0x86, 0xae, 0x27, 0xfb, 0xdd, 0x2e, 0x45, 0xd3, 0xee, 0x42, 0x1e,
		0x90, 0xda, 0x64, 0x9f, 0x4a, 0x8f, 0x41, 0x34, 0xb5, 0x6f, 0x77, 0x4a, 0x27, 0x34, 0x14, 0xb6,
		0x43, 0x15, 0xf4, 0x9b, 0x4a, 0x8e, 0xa5, 0x93, 0xab, 0xd1, 0x9d, 0x2b, 0x8f, 0x6f, 0x5c, 0x7d,
		0x32, 0x56, 0xac, 0x9f, 0x74, 0x7a, 0xf5, 0xaa, 0x68, 0xd4, 0x4b, 0x6d, 0x71, 0xc3, 0xda, 0xa2,
		0x5e, 0xee, 0x3d, 0xe5, 0xef, 0x46, 0xb7, 0xa8, 0x7e, 0x35, 0xbe, 0x31, 0xf5, 0x52, 0xeb, 0xdf,
		0xaa, 0x68, 0x5c, 0xf7, 0x55, 0x25, 0xe0, 0xf5, 0xea, 0xf0, 0x76, 0xd4, 0xef, 0x46, 0x7f, 0x7b,
		0x29, 0xfe, 0xd3, 0xff, 0x00, 0x35, 0xe8, 0xb7, 0x40, 0x73, 0xef, 0x43, 0xad, 0xd7, 0xd9, 0xa6,
		0xde, 0x46, 0x6f, 0x80, 0xe9, 0x73, 0x6b, 0x3d, 0x9f, 0xac, 0x29, 0x90, 0x26, 0xa0, 0x3f, 0x2a,
		0x51, 0x5b, 0x43, 0xc7, 0x75, 0x84, 0xae, 0xcd, 0xbb, 0x69, 0xd0, 0x3d, 0x1d, 0x9a, 0x27, 0x4d,
		0xef, 0x84, 0x68, 0x9d, 0x10, 0x9d, 0xeb, 0x0a, 0x63, 0x22, 0x79, 0xd0, 0xd8, 0xfc, 0xa7, 0x11,
		0xa4, 0x13, 0x06, 0x67, 0x3d, 0x69, 0x3c, 0xfd, 0x24, 0x9a, 0xee, 0x27, 0xa6, 0x1c, 0xe7, 0xba,
		0xe3, 0xdb, 0xc0, 0xb8, 0x4e, 0xd7, 0xef, 0xd3, 0xf3, 0xbe, 0x74, 0x3e, 0x29, 0x25, 0xff, 0xd6,
		0xe5, 0xd7, 0x26, 0xf9, 0x73, 0x8a, 0xa9, 0x29, 0xb1, 0x54, 0x94, 0x4e, 0x30, 0x26, 0x1f, 0x1a,
		0x29, 0x84, 0x85, 0x3d, 0xf1, 0x03, 0x87, 0xb5, 0x5a, 0x01, 0x0f, 0xc3, 0xd4, 0x02, 0x23, 0x9e,
		0xf6, 0x34, 0x67, 0x41, 0x4a, 0x9d, 0x41, 0xba, 0x8b, 0x0d, 0x52, 0x5f, 0x3c, 0xa0, 0x63, 0x31,
		0x80, 0xde, 0xc9, 0xfd, 0xba, 0xa6, 0x9b, 0x69, 0x9f, 0x7c, 0xaf, 0x7d, 0xee, 0x97, 0xf6, 0xc9,
		0xf1, 0xdb, 0x85, 0x29, 0xa9, 0x4f, 0x46, 0x8f, 0xe3, 0xb6, 0xcb, 0x59, 0x3b, 0xe0, 0xed, 0x34,
		0x83, 0x76, 0x32, 0x59, 0xbc, 0x90, 0xe2, 0x67, 0x56, 0xc6, 0x24, 0xf6, 0xf9, 0xf3, 0x68, 0x96,
		0x8a, 0x3b, 0x97, 0x83, 0x40, 0x10, 0x2b, 0x50, 0x1c, 0x53, 0x3c, 0x7d, 0x6c, 0x18, 0x7d, 0x6c,
		0xba, 0xac, 0xe0, 0x81, 0x15, 0xc0, 0x0a, 0x60, 0x05, 0xb0, 0x02, 0x1d, 0x56, 0x38, 0x15, 0xe9,
		0xd6, 0xaf, 0xf4, 0x0d, 0x18, 0xa9, 0x0c, 0x1c, 0x35, 0x0d, 0x20, 0xb5, 0x25, 0x07, 0x9d, 0x49,
		0x82, 0x46, 0xb2, 0xd0, 0x9d, 0x34, 0xc8, 0x24, 0x0f, 0x32, 0x49, 0x84, 0x4c, 0x32, 0x49, 0x37,
		0xa9, 0xa4, 0x9c, 0x5c, 0xf4, 0x0d, 0x48, 0xe7, 0xe2, 0x5e, 0xf4, 0x34, 0xf5, 0xf2, 0xef, 0xf0,
		0xbf, 0xa8, 0xe1, 0xb3, 0xc7, 0xf7, 0x5e, 0xcf, 0x2a, 0x5b, 0x8d, 0xb5, 0xfd, 0x69, 0xcb, 0x3f,
		0x65, 0x35, 0xb6, 0xfd, 0x9c, 0x0f, 0x1c, 0x69, 0xb4, 0xa1, 0xc2, 0x94, 0xe2, 0x81, 0xd4, 0xbe,
		0xe8, 0xda, 0xde, 0xbb, 0x3f, 0x70, 0x8a, 0xb5, 0xb7, 0x7b, 0xcf, 0x29, 0xd6, 0x46, 0x4f, 0xbd,
		0xe8, 0xcb, 0x6b, 0x66, 0xf0, 0x96, 0xb9, 0x3f, 0x70, 0xb2, 0xe3, 0xab, 0x99, 0xdc, 0xfd, 0x81,
		0x93, 0xab, 0xed, 0xef, 0xfd, 0xfd, 0xf7, 0xe7, 0x55, 0xdf, 0xb3, 0xff, 0x7a, 0x38, 0xd0, 0x37,
		0x2b, 0xb0, 0xa6, 0xb3, 0x99, 0xaf, 0x6f, 0xca, 0x7f, 0x91, 0x69, 0xeb, 0x7f, 0xf6, 0xd2, 0x6a,
		0xed, 0xfd, 0x3f, 0x35, 0xb6, 0xf7, 0x2e, 0x4d, 0xe0, 0xa2, 0xd1, 0xad, 0xe7, 0xd1, 0xad, 0x53,
		0xeb, 0xd6, 0xa3, 0xa8, 0x65, 0x4e, 0xbb, 0xe4, 0x9c, 0xd7, 0x5e, 0xbd, 0x4f, 0xd9, 0xc1, 0xf1,
		0xfe, 0x6b, 0x61, 0xf0, 0xf1, 0xe2, 0xdb, 0xa2, 0x97, 0x79, 0x9f, 0x0a, 0x83, 0xe3, 0x25, 0x3f,
		0xc9, 0x0f, 0x8e, 0x7f, 0xf1, 0x77, 0xe4, 0x06, 0x7b, 0x73, 0x2f, 0x1d, 0x5e, 0xcf, 0x2c, 0x7b,
		0x43, 0x76, 0xc9, 0x1b, 0x0e, 0x97, 0xbd, 0xe1, 0x70, 0xc9, 0x1b, 0x96, 0x9a, 0x94, 0x59, 0xf2,
		0x86, 0xdc, 0xe0, 0x6d, 0xee, 0xf5, 0x7b, 0x8b, 0x5f, 0x9a, 0x1f, 0xec, 0xbf, 0x2d, 0xfb, 0x59,
		0x61, 0xf0, 0x76, 0xbc, 0xbf, 0x8f, 0x44, 0x47, 0x26, 0xd1, 0xc1, 0xfd, 0xd3, 0x77, 0xff, 0xdd,
		0x4b, 0xfc, 0x7f, 0x6c, 0xf7, 0xdf, 0x89, 0x19, 0x8a, 0x6b, 0xea, 0x59, 0x98, 0xa1, 0x38, 0x37,
		0x43, 0x31, 0xc5, 0x8d, 0x24, 0x52, 0xa8, 0xc8, 0xff, 0x61, 0xb0, 0x9b, 0x4e, 0xd6, 0x6f, 0xa5,
		0x5c, 0x79, 0x49, 0x77, 0xa5, 0x56, 0xfa, 0x2b, 0xb2, 0x48, 0xac, 0xbc, 0xd2, 0xb0, 0xc2, 0x4a,
		0xc3, 0x4a, 0xaa, 0xa4, 0x03, 0x24, 0xe5, 0xfe, 0x9b, 0x72, 0xbf, 0x6d, 0xa7, 0x32, 0xf7, 0x68,
		0x63, 0x33, 0xc8, 0x93, 0x4d, 0x30, 0xc9, 0x75, 0xfb, 0xc9, 0xfc, 0xe6, 0x84, 0xe2, 0x24, 0xad,
		0xf8, 0x20, 0x18, 0x17, 0xc9, 0xf8, 0xd7, 0xe6, 0x5b, 0x7f, 0xb3, 0xbf, 0x71, 0xc3, 0x7e, 0x94,
		0xc6, 0x26, 0xb9, 0xf6, 0x8f, 0x07, 0x9e, 0x9c, 0x1a, 0x91, 0xa0, 0xcf, 0x4f, 0xa4, 0xd5, 0xcf,
		0x9f, 0x63, 0x5f, 0x74, 0x86, 0x5d, 0xa3, 0xf5, 0xff, 0x59, 0xff, 0xe3, 0x37, 0x9d, 0x46, 0xa7,
		0xa7, 0x8e, 0xcb, 0x95, 0x6f, 0xf9, 0xfa, 0xdd, 0x55, 0xf9, 0x4b, 0xe9, 0xe6, 0xf6, 0x7f, 0x12,
		0xec, 0xa1, 0xd3, 0x9a, 0x2a, 0x31, 0x3b, 0x25, 0x22, 0x6a, 0xb7, 0x84, 0xf3, 0x7b, 0xda, 0x13,
		0x1f, 0xde, 0x4d, 0x70, 0xf8, 0xf5, 0x86, 0xfd, 0xc3, 0x40, 0x7e, 0xb2, 0x4f, 0x79, 0xd8, 0x0c,
		0x44, 0x2f, 0x15, 0x78, 0x8a, 0x83, 0xa5, 0x2c, 0x9b, 0xdd, 0x7e, 0x8b, 0x5b, 0xea, 0x41, 0x84,
		0x56, 0xd3, 0x97, 0x8a, 0x09, 0xc9, 0x03, 0xab, 0xed, 0x07, 0x56, 0xb9, 0xf2, 0x94, 0xb7, 0xc6,
		0xfd, 0xb8, 0x55, 0x2d, 0x9f, 0x24, 0xed, 0x5b, 0x29, 0xce, 0x2e, 0x9a, 0x0d, 0x9b, 0xd6, 0xcc,
		0x6d, 0x4f, 0x01, 0xd9, 0x74, 0x4c, 0x1d, 0x7a, 0x17, 0x45, 0xab, 0xb4, 0x38, 0x98, 0x30, 0xd1,
		0xdf, 0x5a, 0x23, 0xcd, 0x1a, 0x09, 0xb3, 0x2a, 0x19, 0x46, 0x4d, 0x20, 0xea, 0x37, 0x30, 0x30,
		0xdb, 0x6c, 0xec, 0x6d, 0xce, 0x77, 0x37, 0xe8, 0x65, 0x76, 0x37, 0xf3, 0xd4, 0x93, 0x0e, 0x7f,
		0xea, 0x6d, 0xde, 0xc3, 0xa6, 0x4b, 0xba, 0xa6, 0x9f, 0xb1, 0xe1, 0xf8, 0x48, 0x66, 0x51, 0x4c,
		0x62, 0xf3, 0x9b, 0x93, 0x9c, 0xbf, 0x9c, 0xce, 0xfc, 0xe4, 0xa4, 0x09, 0x21, 0xb5, 0xf9, 0xc5,
		0xa9, 0x41, 0x40, 0x6a, 0xf3, 0x83, 0x69, 0x8f, 0x9a, 0x93, 0x5a, 0x24, 0x62, 0x77, 0x47, 0xf7,
		0x34, 0x39, 0x8f, 0x8c, 0x7b, 0xb1, 0xf1, 0x07, 0x25, 0xe4, 0x26, 0xc9, 0xae, 0xef, 0x9b, 0x76,
		0x69, 0x99, 0x84, 0x3e, 0x20, 0x85, 0xa5, 0x19, 0xe9, 0x2e, 0xc1, 0xd0, 0xa1, 0x1f, 0xa4, 0xb2,
		0xa4, 0x42, 0xaf, 0x82, 0x90, 0xc6, 0x12, 0x09, 0xb3, 0x04, 0xe9, 0xa4, 0xd7, 0xcf, 0xd9, 0xe3,
		0xfd, 0xa1, 0x52, 0x13, 0x34, 0xc6, 0x9f, 0x97, 0x74, 0x21, 0x38, 0x95, 0x05, 0xd1, 0xa9, 0xad,
		0x75, 0x4b, 0x73, 0x6d, 0x9b, 0x9e, 0xb5, 0x6c, 0x69, 0xaf, 0x5d, 0xd3, 0xb6, 0x56, 0x4d, 0xdb,
		0xda, 0x34, 0x6d, 0x6b, 0xd1, 0xcc, 0x9e, 0x52, 0x92, 0xd6, 0x02, 0xe6, 0x51, 0xc7, 0xe8, 0xb4,
		0x44, 0xa8, 0x84, 0xec, 0xf4, 0x45, 0xf8, 0xc0, 0x83, 0xf4, 0x77, 0xad, 0x58, 0x64, 0x04, 0xf6,
		0xb0, 0x30, 0xad, 0x0b, 0xd7, 0xdb, 0x95, 0xeb, 0xea, 0xd2, 0xb5, 0x77, 0xed, 0xda, 0xbb, 0x78,
		0xed, 0x5d, 0x7d, 0x3a, 0x5d, 0x7e, 0x4a, 0x5d, 0x7f, 0xea, 0x29, 0x80, 0x44, 0x2a, 0x20, 0x94,
		0x12, 0x3e, 0xa6, 0x06, 0xec, 0x64, 0xb1, 0xed, 0x29, 0x43, 0x77, 0xea, 0x20, 0x93, 0x42, 0xc8,
		0xa4, 0x12, 0x32, 0x29, 0x25, 0xdd, 0xd4, 0x92, 0x72, 0x8a, 0x89, 0xef, 0xb2, 0xfe, 0x9d, 0x2c,
		0xd2, 0xdf, 0x62, 0x71, 0x6e, 0x04, 0x50, 0xd0, 0xf0, 0xd9, 0x73, 0x5b, 0x2e, 0x2e, 0x4a, 0x7b,
		0x5b, 0xed, 0x7a, 0x04, 0xce, 0xf7, 0x27, 0x70, 0x6e, 0x3f, 0x81, 0xa5, 0xe7, 0xd5, 0xf3, 0x2f,
		0x85, 0xec, 0x61, 0xe6, 0xd8, 0x3a, 0xf9, 0x5a, 0xb1, 0x2e, 0x2b, 0x17, 0x37, 0xce, 0x09, 0x0b,
		0x79, 0xcb, 0x3a, 0x53, 0x0f, 0x3c, 0x90, 0x5c, 0x59, 0xdf, 0x2a, 0x57, 0x3a, 0x97, 0xa4, 0x13,
		0x39, 0x35, 0x9f, 0xe2, 0x69, 0xf8, 0xe4, 0x4e, 0xb9, 0xff, 0x78, 0x7a, 0xfd, 0x7f, 0x3b, 0xd6,
		0xae, 0x9d, 0x34, 0x86, 0x85, 0xae, 0xe6, 0xe5, 0xab, 0x94, 0xf7, 0xf4, 0x9d, 0xeb, 0xa1, 0xd3,
		0xdc, 0xdb, 0x77, 0x8e, 0x8e, 0x30, 0x08, 0xc6, 0x20, 0x18, 0x83, 0x60, 0x0c, 0x82, 0xb7, 0x77,
		0x24, 0x92, 0xb6, 0xde, 0x3a, 0x1d, 0x7e, 0x10, 0xd0, 0x5d, 0xe7, 0xfa, 0x20, 0xfd, 0xfa, 0xeb,
		0xc7, 0x14, 0xa4, 0xe9, 0x10, 0x50, 0x6d, 0xa9, 0x88, 0x42, 0x4a, 0xa2, 0x95, 0x9a, 0x28, 0x8f,
		0x05, 0xb5, 0xa6, 0x2a, 0x33, 0x06, 0x82, 0x3a, 0x53, 0x97, 0xe6, 0xe1, 0x9e, 0xa6, 0x9e, 0x43,
		0x9b, 0xae, 0x4b, 0x38, 0x9d, 0x58, 0x9a, 0xb7, 0x2e, 0xfe, 0xd8, 0x38, 0x7a, 0xb7, 0x77, 0x23,
		0x70, 0x5c, 0xff, 0x74, 0x78, 0x1b, 0x08, 0xd9, 0xd1, 0xdc, 0x83, 0x5a, 0x44, 0x76, 0xbf, 0x9c,
		0x26, 0x7f, 0x22, 0xfb, 0x00, 0xc6, 0x06, 0xcd, 0x6d, 0x61, 0x3b, 0xda, 0x57, 0xef, 0xde, 0x73,
		0x72, 0xe3, 0xef, 0xb3, 0x83, 0xb7, 0xfc, 0x74, 0x2f, 0xdb, 0xd7, 0xc3, 0xc1, 0x5b, 0x3e, 0x37,
		0xf3, 0x7d, 0x66, 0xf8, 0xfd, 0xf0, 0x42, 0x66, 0xbc, 0xd9, 0x6d, 0x3e, 0x97, 0x3b, 0x1c, 0x6d,
		0x77, 0x7b, 0xbc, 0xe8, 0x97, 0x1f, 0x45, 0xbf, 0xfc, 0x70, 0xfc, 0x7d, 0x71, 0xf0, 0x96, 0xbd,
		0x3f, 0xf0, 0xc6, 0xdf, 0x1d, 0x0d, 0xde, 0xb2, 0x99, 0xfb, 0x03, 0xe7, 0x68, 0xfc, 0x7d, 0x61,
		0xf8, 0x7d, 0xf1, 0xfe, 0x20, 0x7e, 0x79, 0x3e, 0xba, 0x90, 0x9d, 0x79, 0x49, 0x6e, 0x74, 0xa5,
		0x18, 0x7d, 0x62, 0x6c, 0x70, 0x74, 0x69, 0x68, 0x75, 0x7e, 0x6a, 0xf5, 0xe8, 0x5a, 0x61, 0xfa,
		0x69, 0x99, 0xf8, 0xda, 0xcc, 0x67, 0xc6, 0x97, 0x46, 0xbf, 0x51, 0xe3, 0x9e, 0x95, 0x93, 0x47,
		0x8d, 0x82, 0xdb, 0x52, 0xda, 0xc3, 0x32, 0xb6, 0x6a, 0xc1, 0xa6, 0xcd, 0xf0, 0xde, 0x77, 0xde,
		0xab, 0x73, 0xcf, 0xc9, 0xd8, 0x7f, 0xb5, 0x5a, 0x30, 0xf8, 0x84, 0x84, 0x8c, 0x84, 0x6c, 0x72,
		0x42, 0x4e, 0x68, 0x1f, 0xfa, 0xe3, 0x24, 0xfb, 0x4e, 0x64, 0x4d, 0xa3, 0xb2, 0xa6, 0x89, 0x2e,
		0x86, 0xd4, 0x86, 0xd4, 0x86, 0xd4, 0x66, 0xfc, 0x58, 0xd3, 0x30, 0xa0, 0x46, 0xd6, 0x44, 0xd6,
		0x84, 0xf7, 0x22, 0x21, 0x2f, 0x4e, 0xc8, 0x38, 0xdf, 0x61, 0xab, 0x3e, 0x31, 0xed, 0x29, 0x0b,
		0x9a, 0xce, 0x45, 0x88, 0x3f, 0x5f, 0xe7, 0x5e, 0x6d, 0xd3, 0x1d, 0xbc, 0xdc, 0xf1, 0x36, 0x38,
		0xa3, 0xc9, 0xf3, 0xe1, 0xa2, 0x39, 0xf4, 0x69, 0x9e, 0x96, 0x90, 0xbe, 0xeb, 0xa5, 0x39, 0x07,
		0x52, 0xbd, 0xf4, 0xb8, 0xd3, 0x16, 0x4f, 0xdc, 0x11, 0x3d, 0xa7, 0xa7, 0x67, 0x66, 0x42, 0x8c,
		0xf1, 0x8b, 0x8c, 0xc1, 0xfc, 0xc8, 0x64, 0x61, 0x0b, 0xf3, 0x23, 0x31, 0x3f, 0x72, 0x64, 0x08,
		0xe6, 0x47, 0xee, 0x14, 0x6c, 0x68, 0x9b, 0x1f, 0x39, 0xed, 0xe5, 0xa3, 0xcc, 0xae, 0x7f, 0x6e,
		0xe4, 0x47, 0x83, 0xf4, 0xce, 0x8b, 0xf4, 0x30, 0x2f, 0x12, 0xf3, 0x22, 0x49, 0xa4, 0x26, 0x72,
		0x29, 0x8a, 0x5c, 0xaa, 0x22, 0x97, 0xb2, 0xf4, 0x2a, 0x11, 0xba, 0xe6, 0x45, 0xea, 0x4a, 0x65,
		0xb1, 0x01, 0x7c, 0xbc, 0xf6, 0xd1, 0x51, 0xac, 0xa3, 0x3f, 0x5c, 0x27, 0x9d, 0xd8, 0x3b, 0xab,
		0x34, 0x07, 0x88, 0xde, 0x49, 0xff, 0x64, 0x92, 0x1c, 0xa5, 0x64, 0x47, 0x33, 0xe9, 0x51, 0x4b,
		0x7e, 0x64, 0x93, 0x20, 0xd9, 0x64, 0x48, 0x36, 0x29, 0xea, 0x4d, 0x8e, 0x9a, 0x93, 0x64, 0xdc,
		0x2a, 0xda, 0x17, 0x11, 0xcc, 0xf5, 0x3b, 0xfa, 0x36, 0x8b, 0x59, 0x3a, 0x06, 0x2b, 0xd0, 0x28,
		0xdf, 0xbf, 0xdf, 0x4c, 0xe6, 0x5d, 0x3e, 0xdf, 0x69, 0x1f, 0x26, 0xb0, 0xcb, 0xcc, 0x9c, 0x4d,
		0xfa, 0x77, 0x9d, 0xf9, 0xf8, 0xa0, 0x91, 0x38, 0x2d, 0x83, 0x76, 0xa5, 0xa1, 0x0e, 0x21, 0x8b,
		0x60, 0x84, 0xca, 0xae, 0x35, 0xc6, 0x70, 0xc9, 0x42, 0x3e, 0xa1, 0xbd, 0xab, 0x0d, 0x2d, 0x82,
		0x21, 0x92, 0x05, 0x68, 0x77, 0x73, 0x45, 0xef, 0x30, 0x7f, 0x6c, 0x95, 0x2b, 0xd6, 0x68, 0xa4,
		0x67, 0x95, 0x5a, 0x4f, 0x3c, 0x50, 0x22, 0x8c, 0x0e, 0x40, 0xb7, 0x84, 0x7c, 0xe7, 0x59, 0xd6,
		0xde, 0xd9, 0xb7, 0xca, 0xd5, 0x3e, 0x7a, 0x3e, 0xf4, 0x7c, 0x3a, 0x7a, 0xbe, 0xb5, 0x7c, 0x15,
		0x9d, 0x21, 0x31, 0x2b, 0x76, 0x75, 0xee, 0x9b, 0xc6, 0x34, 0x64, 0xeb, 0x9b, 0x34, 0xb3, 0x34,
		0xf7, 0xe8, 0x9a, 0x3a, 0xb3, 0x6c, 0x2c, 0x0d, 0xc9, 0x77, 0x32, 0x9e, 0x87, 0xe4, 0x6b, 0x16,
		0x73, 0x40, 0xf2, 0xfd, 0x2d, 0xb0, 0x80, 0xe4, 0x4b, 0x64, 0xa0, 0x04, 0xc9, 0xf7, 0x17, 0xd2,
		0x14, 0x4d, 0xc9, 0x77, 0x9a, 0xcc, 0xa1, 0xf7, 0x42, 0xef, 0x85, 0x10, 0x02, 0x28, 0x81, 0x10,
		0x02, 0x21, 0x04, 0x42, 0x08, 0x84, 0x10, 0xaa, 0x42, 0x88, 0xd3, 0xe5, 0xb2, 0x13, 0x51, 0x0c,
		0x35, 0x3d, 0x64, 0x62, 0x19, 0x64, 0x11, 0xc8, 0x22, 0x90, 0x45, 0x20, 0x8b, 0x40, 0x16, 0x81,
		0x2c, 0x02, 0x59, 0xc4, 0x6c, 0x59, 0x64, 0x92, 0xd3, 0xa1, 0x8e, 0x40, 0x1d, 0x81, 0x3a, 0x02,
		0x36, 0x81, 0x3a, 0x02, 0x75, 0x04, 0xea, 0x08, 0xd4, 0x11, 0x62, 0xea, 0x48, 0x8f, 0xa9, 0x87,
		0x90, 0x8e, 0x24, 0x32, 0x32, 0x87, 0x86, 0x0e, 0xe2, 0x41, 0x07, 0x81, 0x0e, 0x02, 0x1d, 0x04,
		0x3a, 0x08, 0x74, 0x10, 0x5d, 0xad, 0xa2, 0x7b, 0xf9, 0xfc, 0xbb, 0x34, 0x49, 0x27, 0xbc, 0x67,
		0xb3, 0x25, 0x95, 0xc8, 0xa6, 0x91, 0x34, 0xc9, 0x25, 0x4f, 0x8a, 0x49, 0x94, 0x76, 0x32, 0x35,
		0x69, 0x00, 0x4f, 0x2a, 0xb9, 0x9a, 0x39, 0x7a, 0xa7, 0x94, 0x6c, 0x89, 0x0d, 0xc8, 0x89, 0xf4,
		0x5c, 0x54, 0x92, 0xf0, 0x34, 0x19, 0x73, 0x1e, 0x38, 0xa2, 0x47, 0xaf, 0x67, 0x88, 0xf3, 0xf2,
		0xd8, 0x40, 0x62, 0x61, 0x47, 0xa3, 0xbe, 0x4f, 0x3e, 0x55, 0x53, 0x4e, 0xd9, 0x66, 0xa4, 0x6e,
		0xea, 0x29, 0xdc, 0x98, 0x54, 0x6e, 0x4c, 0x4a, 0x37, 0x26, 0xb5, 0xd3, 0x4a, 0xf1, 0xc4, 0x52,
		0x7d, 0xdc, 0x8a, 0x64, 0xe6, 0x1f, 0x2c, 0xed, 0xf7, 0xe8, 0xcc, 0x47, 0x58, 0x3a, 0x12, 0x2e,
		0x10, 0xb4, 0x6d, 0x6e, 0xbe, 0xc2, 0x04, 0x55, 0xfe, 0x40, 0x70, 0x12, 0x0f, 0xcc, 0x11, 0x55,
		0xf6, 0x98, 0x7a, 0x70, 0x44, 0x8b, 0x38, 0xfb, 0x4e, 0xac, 0x04, 0x00, 0x03, 0x80, 0x01, 0xc0,
		0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0c, 0x00, 0xa6, 0x0a, 0xc0, 0x13, 0x5e, 0x01, 0x05,
		0x93, 0xa7, 0xe0, 0x30, 0xca, 0xa8, 0x0e, 0x6b, 0xb5, 0x02, 0x1e, 0x86, 0x4e, 0x9b, 0x3d, 0x8a,
		0xee, 0x0b, 0x5d, 0x1c, 0x5e, 0x6c, 0x2e, 0xb8, 0x18, 0x5c, 0x0c, 0x2e, 0x06, 0x17, 0x83, 0x8b,
		0xc1, 0xc5, 0xe0, 0x62, 0x70, 0x31, 0x41, 0x2e, 0x5e, 0x0c, 0x2e, 0x00, 0x64, 0x53, 0x00, 0x79,
		0xc1, 0xd9, 0xb4, 0xe4, 0x29, 0x79, 0x91, 0xcd, 0x40, 0x65, 0xa0, 0x32, 0x50, 0x19, 0xa8, 0x0c,
		0x54, 0x06, 0x2a, 0x03, 0x95, 0x81, 0xca, 0x74, 0x51, 0x79, 0x11, 0xbd, 0x80, 0x97, 0xe9, 0xf3,
		0xf2, 0xb0, 0x0d, 0x09, 0xa3, 0x71, 0x64, 0x1e, 0x4d, 0x0a, 0xf6, 0x40, 0xc1, 0xa0, 0x60, 0x50,
		0x30, 0x28, 0x18, 0x14, 0x8c, 0xcc, 0xba, 0xb8, 0x15, 0xa9, 0x2d, 0x1e, 0x8a, 0x0d, 0x63, 0x93,
		0x2d, 0x62, 0x5a, 0x8e, 0xf2, 0x9d, 0x1e, 0xe7, 0x01, 0xdd, 0xce, 0x65, 0xd2, 0x45, 0x2f, 0xb0,
		0x99, 0x68, 0xf0, 0xd2, 0x94, 0xc9, 0xc8, 0x83, 0x82, 0x09, 0xc0, 0x60, 0x16, 0x38, 0x98, 0x02,
		0x10, 0xc6, 0x81, 0x84, 0x71, 0x40, 0x61, 0x1c, 0x58, 0xd0, 0x04, 0x0c, 0xa2, 0xa0, 0x11, 0xb7,
		0x2e, 0x59, 0xd9, 0x6d, 0xae, 0xdf, 0x14, 0xbd, 0x49, 0x75, 0x95, 0x72, 0xbf, 0x39, 0x19, 0xea,
		0x17, 0x09, 0xdb, 0x38, 0x6e, 0xf3, 0x7b, 0xd2, 0xfd, 0x0e, 0xed, 0xbc, 0xf3, 0xc1, 0x33, 0x9f,
		0xb2, 0x06, 0xf8, 0xe6, 0x9c, 0x8f, 0x1e, 0x19, 0x60, 0x6b, 0x85, 0x29, 0xc5, 0x03, 0x49, 0xde,
		0x5d, 0x63, 0x83, 0xf7, 0xee, 0x0f, 0x9c, 0x62, 0xed, 0xed, 0xde, 0x73, 0x8a, 0xb5, 0xd1, 0x53,
		0x2f, 0xfa, 0xf2, 0x9a, 0x19, 0xbc, 0x65, 0xee, 0x0f, 0x9c, 0xec, 0xf8, 0x6a, 0x26, 0x77, 0x7f,
		0xe0, 0xe4, 0x6a, 0xfb, 0x7b, 0x7f, 0xff, 0xfd, 0x79, 0xd5, 0xf7, 0xec, 0xbf, 0x1e, 0x0e, 0x6c,
		0xf2, 0xb7, 0xa3, 0x66, 0x82, 0x7b, 0x5d, 0xdf, 0x94, 0xff, 0x32, 0xce, 0xc7, 0xfe, 0xd9, 0x4b,
		0xcb, 0xcb, 0xf6, 0xff, 0x34, 0xc0, 0xcf, 0x48, 0x5b, 0x38, 0xf8, 0x84, 0x34, 0xbb, 0xb1, 0x34,
		0x9b, 0x47, 0x9a, 0x45, 0x9a, 0x1d, 0xa5, 0xd9, 0xa8, 0x37, 0x63, 0x4e, 0xbb, 0xe4, 0x9c, 0xd7,
		0x5e, 0xbd, 0x4f, 0xd9, 0xc1, 0xf1, 0xfe, 0x6b, 0x61, 0xf0, 0xf1, 0xe2, 0xdb, 0xa2, 0x97, 0x79,
		0x9f, 0x0a, 0x83, 0xe3, 0x25, 0x3f, 0xc9, 0x0f, 0x8e, 0x7f, 0xf1, 0x77, 0xe4, 0x06, 0x7b, 0x73,
		0x2f, 0x1d, 0x5e, 0xcf, 0x2c, 0x7b, 0x43, 0x76, 0xc9, 0x1b, 0x0e, 0x97, 0xbd, 0xe1, 0x70, 0xc9,
		0x1b, 0x96, 0x9a, 0x94, 0x59, 0xf2, 0x86, 0xdc, 0xe0, 0x6d, 0xee, 0xf5, 0x7b, 0x8b, 0x5f, 0x9a,
		0x1f, 0xec, 0xbf, 0x2d, 0xfb, 0x59, 0x61, 0xf0, 0x76, 0xbc, 0xbf, 0x0f, 0xf0, 0xd8, 0x79, 0xf0,
		0x40, 0xd8, 0xa5, 0x1f, 0x76, 0x00, 0xb1, 0xad, 0xd4, 0x05, 0xe9, 0xde, 0x37, 0xaa, 0x8a, 0xe5,
		0x85, 0x08, 0x55, 0x49, 0xa9, 0x80, 0xb6, 0x6a, 0x79, 0x29, 0xe4, 0x59, 0x37, 0x3a, 0x4f, 0x23,
		0xa4, 0x5b, 0x37, 0x1b, 0x59, 0xca, 0x9e, 0x67, 0x2c, 0xf5, 0x8e, 0xb2, 0xd9, 0x7c, 0x21, 0x9b,
		0x3d, 0x28, 0x1c, 0x16, 0x0e, 0x8a, 0xb9, 0x9c, 0x97, 0xf7, 0x72, 0x84, 0x8d, 0xbf, 0x0e, 0x5a,
		0x3c, 0xe0, 0xad, 0x93, 0x17, 0xfb, 0xd8, 0x92, 0xfd, 0x6e, 0xd7, 0x04, 0x53, 0xef, 0xc2, 0xa8,
		0x78, 0xde, 0x66, 0xdd, 0x90, 0xff, 0x81, 0x9e, 0xd2, 0xd0, 0xbe, 0xc8, 0x66, 0x4a, 0x05, 0x8e,
		0x90, 0x2d, 0xfe, 0x6c, 0xc0, 0x4c, 0x88, 0xa9, 0xad, 0x98, 0x01, 0xb1, 0x8e, 0x79, 0x98, 0x01,
		0xb1, 0x41, 0x6f, 0xc4, 0x0c, 0x88, 0x8d, 0x46, 0x0e, 0x66, 0x40, 0x24, 0x6c, 0x30, 0x66, 0x40,
		0x6c, 0xf3, 0x78, 0xc2, 0x9c, 0x19, 0x10, 0x74, 0x17, 0x20, 0x7d, 0x4c, 0xe3, 0x14, 0x17, 0x22,
		0x4d, 0x53, 0xe5, 0x74, 0x41, 0xd2, 0x7f, 0xfe, 0x8b, 0xc0, 0x29, 0xe4, 0x2a, 0x8c, 0x9f, 0x4d,
		0x0e, 0xae, 0x8d, 0x60, 0x0a, 0xf8, 0x6e, 0x2c, 0xbe, 0x37, 0x58, 0xf3, 0x7b, 0xbf, 0x47, 0x1f,
		0xdd, 0xc7, 0x76, 0x02, 0xdb, 0x81, 0xed, 0xc0, 0x76, 0x60, 0x3b, 0xb0, 0x1d, 0xd8, 0x0e, 0x6c,
		0x37, 0x0a, 0xdb, 0x1b, 0xbe, 0xdf, 0xe5, 0x4c, 0x9a, 0x80, 0xed, 0x1e, 0x80, 0xd6, 0x5c, 0xa0,
		0xe5, 0xa1, 0x22, 0x75, 0xee, 0xe6, 0xf2, 0x80, 0x98, 0x58, 0x0a, 0xa8, 0x05, 0xd4, 0x02, 0x6a,
		0x01, 0xb5, 0x80, 0x5a, 0x40, 0x2d, 0xa0, 0x16, 0x50, 0x0b, 0xa8, 0x45, 0x50, 0xbc, 0x6f, 0xc3,
		0xa6, 0xff, 0xf8, 0xd8, 0x97, 0x42, 0xbd, 0x98, 0x32, 0xd3, 0xe2, 0xa3, 0xc1, 0x40, 0x5c, 0x20,
		0x2e, 0x10, 0x17, 0x88, 0x0b, 0xc4, 0x05, 0xe2, 0x02, 0x71, 0x31, 0xdd, 0x22, 0x19, 0xc4, 0xdd,
		0x96, 0xe9, 0x16, 0x13, 0x7a, 0x12, 0x3c, 0x8c, 0x9f, 0xbf, 0x60, 0xc6, 0xc5, 0x76, 0xb0, 0x3c,
		0x0f, 0x05, 0x7d, 0x7e, 0x1f, 0x1a, 0x09, 0x66, 0x07, 0xb3, 0x83, 0xd9, 0xc1, 0xec, 0x60, 0x76,
		0x30, 0x3b, 0x98, 0xdd, 0x28, 0x66, 0xa7, 0x9b, 0xbe, 0x2d, 0x43, 0xb6, 0x04, 0xb1, 0x2f, 0xb8,
		0xec, 0x44, 0xc4, 0x8e, 0xfd, 0xe1, 0x7e, 0xf3, 0x4e, 0x5e, 0x0a, 0x49, 0x3e, 0x37, 0xc6, 0xc6,
		0x7e, 0x63, 0xdd, 0xfe, 0x30, 0x84, 0x32, 0x07, 0x9f, 0xcc, 0x30, 0xf8, 0x3c, 0x60, 0x4d, 0x25,
		0x7c, 0x79, 0x2a, 0x3a, 0x82, 0xfa, 0x22, 0xeb, 0xf7, 0x7d, 0x15, 0xef, 0x30, 0x25, 0x9e, 0x38,
		0xe9, 0x35, 0xc0, 0x06, 0xa4, 0xa5, 0xf7, 0xb1, 0xc6, 0x9e, 0x11, 0x6b, 0x88, 0x35, 0xf3, 0x63,
		0x0d, 0x7b, 0xa8, 0xac, 0xf5, 0xa8, 0xd1, 0x56, 0x40, 0x8d, 0xd8, 0xe6, 0xc9, 0x9e, 0xd9, 0x7d,
		0xe8, 0xff, 0xd8, 0x68, 0xea, 0x75, 0x9a, 0xda, 0xa4, 0x6d, 0xbd, 0xec, 0x7f, 0x66, 0x1b, 0x9c,
		0xf0, 0x06, 0x53, 0x35, 0xa8, 0xfe, 0xa6, 0x82, 0x9a, 0xcd, 0x9f, 0x95, 0x63, 0xdc, 0x2c, 0x9e,
		0x45, 0x46, 0xa3, 0x2a, 0xb0, 0x8e, 0x79, 0xa8, 0x0a, 0x6c, 0xd0, 0x2d, 0x51, 0x15, 0xd8, 0x68,
		0xe4, 0xa0, 0x2a, 0x90, 0xb0, 0xc1, 0xa8, 0x0a, 0x6c, 0xb1, 0xfc, 0x82, 0x99, 0x3c, 0x09, 0xa4,
		0xf1, 0xad, 0x99, 0xc9, 0x33, 0x4b, 0x50, 0x82, 0x87, 0xef, 0xbe, 0xc7, 0x8c, 0x9e, 0x2d, 0x61,
		0xfb, 0x0e, 0x53, 0xfc, 0x07, 0x7b, 0x71, 0x66, 0x8e, 0x66, 0x22, 0x8f, 0xf6, 0x0b, 0x6c, 0x06,
		0xd9, 0x83, 0xec, 0x41, 0xf6, 0x20, 0x7b, 0x90, 0x3d, 0xc8, 0x1e, 0x64, 0x6f, 0xda, 0xa1, 0x90,
		0xe4, 0x23, 0x1c, 0x67, 0x42, 0x6e, 0xea, 0x61, 0xda, 0x99, 0x90, 0x46, 0x24, 0x1f, 0x0b, 0x67,
		0x55, 0x25, 0x6c, 0x70, 0x5a, 0x87, 0xf5, 0xb9, 0xf1, 0x9b, 0x32, 0xe3, 0x9f, 0x1e, 0xde, 0x1f,
		0x38, 0x99, 0x1a, 0x8e, 0x6c, 0xda, 0x8c, 0xdf, 0xe1, 0xac, 0xc8, 0xf5, 0xdc, 0x0f, 0x67, 0x17,
		0x6d, 0x29, 0x28, 0x9a, 0x99, 0x97, 0xf3, 0xc8, 0xcb, 0xc8, 0xcb, 0x38, 0x43, 0x52, 0xe7, 0x61,
		0x76, 0xee, 0x9e, 0x37, 0xcc, 0x22, 0x47, 0xa3, 0xb4, 0xe2, 0xd5, 0xe6, 0xb2, 0x4d, 0xf4, 0x3f,
		0xb8, 0x05, 0xdc, 0x82, 0xe8, 0x24, 0x1b, 0x9d, 0xa0, 0xba, 0xad, 0x14, 0x25, 0x2d, 0x4c, 0xb8,
		0x34, 0x99, 0xcb, 0x6d, 0x21, 0x9f, 0x58, 0x57, 0xb4, 0x9c, 0x80, 0xb3, 0xd0, 0x97, 0xf4, 0x0b,
		0xb2, 0x1f, 0xec, 0x45, 0x31, 0x76, 0x1d, 0xf3, 0x50, 0x8c, 0xdd, 0xa0, 0x47, 0xa2, 0x18, 0xbb,
		0xd1, 0xc8, 0x41, 0x31, 0x36, 0x61, 0x83, 0x51, 0x8c, 0xdd, 0x62, 0x8d, 0xcd, 0xa4, 0x62, 0x6c,
		0x8b, 0x4b, 0x25, 0xd4, 0x8b, 0x21, 0x53, 0x2d, 0x29, 0x9f, 0x6b, 0x5d, 0x1e, 0xdf, 0xca, 0x13,
		0x16, 0x1a, 0xd0, 0xc5, 0x4f, 0x1c, 0xa0, 0x7c, 0xf5, 0xad, 0x74, 0x51, 0x3e, 0xad, 0x57, 0xaf,
		0xef, 0x6e, 0xcf, 0xea, 0xd5, 0xb3, 0xd2, 0xcd, 0xf5, 0x15, 0xf5, 0xde, 0x3e, 0x5a, 0x8b, 0x1d,
		0x1a, 0xa1, 0x8b, 0x18, 0xb2, 0xba, 0xfd, 0xa3, 0x37, 0x94, 0x6e, 0xea, 0x17, 0xd7, 0xd7, 0x15,
		0x1b, 0xfb, 0x1c, 0xec, 0xac, 0x0b, 0x7c, 0xb9, 0xb8, 0xbb, 0xb9, 0x3d, 0xab, 0xc2, 0x0f, 0x76,
		0xdd, 0x0f, 0xae, 0xaf, 0xce, 0xcf, 0x4e, 0xe1, 0x01, 0xbb, 0xeb, 0x01, 0xd7, 0xd5, 0xf2, 0xd7,
		0xf2, 0x55, 0xe9, 0xf6, 0xba, 0x6a, 0x63, 0x2f, 0x8e, 0xdf, 0x7a, 0xd4, 0x30, 0xbe, 0x33, 0xdc,
		0x2a, 0x8a, 0xea, 0x71, 0x97, 0x35, 0x78, 0x97, 0xbe, 0x68, 0x3c, 0x32, 0x13, 0x5a, 0xf1, 0x3a,
		0xe6, 0x41, 0x2b, 0xde, 0xa0, 0x23, 0x42, 0x2b, 0xde, 0x68, 0xe4, 0x40, 0x2b, 0x4e, 0xd8, 0x60,
		0x68, 0xc5, 0x5b, 0x3c, 0x3e, 0x30, 0x48, 0x2b, 0x0e, 0x55, 0x20, 0x64, 0xc7, 0x88, 0xbd, 0x7a,
		0xe1, 0x81, 0x2b, 0xdc, 0x35, 0xfe, 0xac, 0x02, 0xe6, 0xf4, 0x65, 0xa8, 0x58, 0xa3, 0x4b, 0xdc,
		0x17, 0x03, 0xde, 0xe6, 0x01, 0x97, 0x4d, 0x2c, 0x7c, 0xda, 0x60, 0x60, 0x57, 0xcf, 0xbf, 0x14,
		0xb2, 0x87, 0x99, 0x63, 0xeb, 0xe4, 0x6b, 0xc5, 0xba, 0xac, 0x5c, 0xdc, 0x38, 0x27, 0x2c, 0xe4,
		0x2d, 0xeb, 0x4c, 0x3d, 0xf0, 0x40, 0x72, 0x65, 0x7d, 0xab, 0x5c, 0x99, 0x30, 0xf3, 0xda, 0x10,
		0x64, 0x5a, 0x84, 0x4e, 0x53, 0xbf, 0x36, 0x64, 0x97, 0x56, 0xd3, 0x28, 0x6a, 0x21, 0x4d, 0xfd,
		0x92, 0xe3, 0x43, 0xf3, 0xda, 0x52, 0xeb, 0x30, 0x63, 0xd2, 0x58, 0x6e, 0x19, 0x89, 0x49, 0x19,
		0x43, 0x44, 0xaf, 0x0c, 0x54, 0xaf, 0xb5, 0xcc, 0x83, 0xea, 0xb5, 0x41, 0x4f, 0x84, 0xea, 0x95,
		0x10, 0xba, 0x41, 0xf5, 0x4a, 0x9c, 0xd3, 0xa0, 0x7a, 0x6d, 0x9b, 0xe6, 0x00, 0xd5, 0x6b, 0xe3,
		0x59, 0x1c, 0xaa, 0xd7, 0x4a, 0x77, 0x0d, 0xaa, 0x57, 0x12, 0x0f, 0xa8, 0x5e, 0x40, 0xa6, 0x5f,
		0x47, 0x27, 0xa8, 0x5e, 0x3a, 0x68, 0x0a, 0xaa, 0xd7, 0x2e, 0x5b, 0x07, 0xd5, 0xcb, 0x58, 0x6e,
		0xb1, 0xbb, 0x2c, 0x54, 0xce, 0xa3, 0xdf, 0x12, 0x6d, 0xc1, 0x5b, 0x26, 0x88, 0x5f, 0xb3, 0xe6,
		0x42, 0x03, 0x5b, 0xc7, 0x3c, 0x68, 0x60, 0x1b, 0x74, 0x48, 0x68, 0x60, 0x09, 0x81, 0x1c, 0x34,
		0xb0, 0xc4, 0xa9, 0x0d, 0x1a, 0xd8, 0xb6, 0x29, 0x10, 0xe6, 0x68, 0x60, 0x4a, 0x3c, 0x72, 0x25,
		0x9a, 0xdf, 0xc3, 0x7c, 0xd6, 0x00, 0x21, 0x8c, 0xf2, 0x49, 0xed, 0x77, 0x72, 0x74, 0x18, 0xaf,
		0x2d, 0x99, 0xf4, 0x43, 0xde, 0xf4, 0x65, 0x2b, 0xa4, 0x7c, 0x4b, 0xab, 0x4c, 0x76, 0xa0, 0x3a,
		0x6d, 0xe0, 0x46, 0x1a, 0x79, 0xb0, 0x3c, 0xce, 0xba, 0x4e, 0xba, 0x83, 0xc5, 0xb9, 0xf2, 0x09,
		0x84, 0x9a, 0x89, 0xe7, 0xca, 0x7b, 0x47, 0xd9, 0x6c, 0xbe, 0x90, 0xcd, 0x1e, 0x14, 0x0e, 0x0b,
		0x07, 0xc5, 0x5c, 0xce, 0xcb, 0x53, 0xde, 0xec, 0x02, 0xd1, 0x07, 0xbe, 0x36, 0xc8, 0x3a, 0x68,
		0x9e, 0xc6, 0xf6, 0xee, 0xf6, 0x63, 0xbf, 0xab, 0x44, 0x6f, 0x74, 0x8c, 0x21, 0x71, 0xbd, 0x73,
		0x6a, 0x2a, 0xb4, 0xce, 0x75, 0xcc, 0x83, 0xd6, 0xb9, 0x41, 0x67, 0x84, 0xd6, 0xb9, 0xd1, 0xc8,
		0x81, 0xd6, 0x99, 0xb0, 0xc1, 0xd0, 0x3a, 0xb7, 0x78, 0x7c, 0x66, 0x90, 0xd6, 0xd9, 0xf0, 0xfd,
		0x2e, 0x67, 0xd2, 0x84, 0x09, 0x7f, 0x1e, 0xb0, 0xd6, 0x58, 0xac, 0xed, 0x71, 0x1e, 0x38, 0xa2,
		0x47, 0x1f, 0x6a, 0x27, 0x86, 0x02, 0x69, 0x81, 0xb4, 0x40, 0x5a, 0x20, 0x2d, 0x90, 0x16, 0x48,
		0x0b, 0xa4, 0x35, 0xed, 0xc4, 0x65, 0xd6, 0x6a, 0x05, 0x3c, 0x0c, 0x71, 0xe4, 0xf2, 0x46, 0xda,
		0x1c, 0xd5, 0xf0, 0x8d, 0x79, 0xe6, 0x53, 0xd6, 0x00, 0xdf, 0x9c, 0xf3, 0x51, 0x9c, 0xed, 0x98,
		0x80, 0xc1, 0x69, 0x1d, 0x7a, 0x8b, 0x23, 0x0a, 0x37, 0xe2, 0x5e, 0x38, 0x5a, 0xf9, 0xa7, 0x5e,
		0x86, 0xb3, 0xf6, 0xb6, 0x14, 0xfc, 0xcc, 0x4c, 0xb3, 0x79, 0xa4, 0x59, 0xa4, 0x59, 0x0b, 0x47,
		0x28, 0xeb, 0x3c, 0xa4, 0x15, 0xe0, 0xb1, 0xf3, 0xe0, 0x81, 0xb0, 0x4b, 0x3f, 0xec, 0x00, 0x62,
		0x5b, 0xa9, 0x0b, 0x5a, 0x98, 0xd8, 0x67, 0x32, 0x4a, 0x8f, 0x0a, 0x8b, 0x3d, 0xa6, 0x1e, 0x1c,
		0xd1, 0x32, 0xa4, 0x0c, 0x3a, 0xb1, 0x16, 0xb5, 0xd0, 0x75, 0xcc, 0x43, 0x2d, 0x74, 0x83, 0xfe,
		0x88, 0x5a, 0xe8, 0x46, 0x23, 0x07, 0xb5, 0xd0, 0x84, 0x0d, 0x46, 0x2d, 0x74, 0x8b, 0x25, 0x31,
		0x83, 0x6a, 0xa1, 0x7d, 0x21, 0xd5, 0x61, 0xc6, 0x80, 0x3a, 0x68, 0x01, 0xab, 0x82, 0x7f, 0xf3,
		0x81, 0x55, 0xc1, 0x9b, 0x35, 0x16, 0xab, 0x82, 0xd3, 0xea, 0xab, 0xb0, 0x2a, 0x38, 0x81, 0x50,
		0x33, 0x71, 0x55, 0x70, 0x36, 0x53, 0xcc, 0x16, 0xf3, 0x85, 0x4c, 0x11, 0x6b, 0x81, 0x11, 0x73,
		0x26, 0x00, 0x2a, 0x7d, 0xeb, 0x20, 0x19, 0x1a, 0xdb, 0xa7, 0xdb, 0x61, 0x24, 0x27, 0x4c, 0x2a,
		0xd9, 0x4e, 0x9b, 0x3d, 0x8a, 0xee, 0x0b, 0x7d, 0xed, 0x70, 0xb1, 0xd9, 0x10, 0x11, 0xd7, 0x31,
		0x0f, 0x22, 0xe2, 0x06, 0x1d, 0x13, 0x22, 0xe2, 0x46, 0x23, 0x07, 0x22, 0x62, 0xc2, 0x06, 0x43,
		0x44, 0xdc, 0xe2, 0xd1, 0x9a, 0x49, 0x0b, 0x2a, 0x5a, 0x5c, 0x2a, 0xa1, 0x5e, 0x02, 0xde, 0x36,
		0x61, 0x45, 0x05, 0xe1, 0xc1, 0xa3, 0x5d, 0x1e, 0xdf, 0xca, 0x13, 0x16, 0x1a, 0xd0, 0xc5, 0x4f,
		0x1c, 0xa0, 0x74, 0x5e, 0xae, 0xdf, 0x0c, 0xff, 0xbb, 0xfd, 0xdf, 0xca, 0x19, 0xf5, 0x6e, 0x3e,
		0x12, 0x13, 0x42, 0x23, 0xa6, 0x4a, 0x19, 0x22, 0xcf, 0x4c, 0xdc, 0xa0, 0x5c, 0xf9, 0x96, 0xad,
		0x9f, 0x5f, 0x5c, 0xff, 0xbf, 0x9b, 0xca, 0xd9, 0x17, 0x1b, 0x32, 0xdd, 0x6e, 0x3a, 0xc0, 0x45,
		0xe9, 0xe4, 0xec, 0xe2, 0xec, 0xb4, 0x7e, 0x77, 0x55, 0xfe, 0x52, 0xba, 0xb9, 0x85, 0x1f, 0xec,
		0xa8, 0x1f, 0xa0, 0xfd, 0x77, 0xb9, 0xfd, 0xf3, 0xe8, 0x07, 0xe0, 0x07, 0x91, 0x1f, 0xa0, 0xfd,
		0x77, 0xb6, 0xfd, 0x2f, 0x32, 0xdf, 0x2a, 0x57, 0xf5, 0x33, 0x33, 0x0e, 0xd0, 0x42, 0xeb, 0x27,
		0xd2, 0xfa, 0xdf, 0x2a, 0x17, 0x37, 0x68, 0xfd, 0x1d, 0x6c, 0xfd, 0xc3, 0x61, 0xeb, 0x47, 0x24,
		0x78, 0x79, 0x77, 0x71, 0x8b, 0x1c, 0x00, 0x3f, 0x00, 0x09, 0xc0, 0x0b, 0xf2, 0xe8, 0x0d, 0xe0,
		0x07, 0x18, 0x17, 0xec, 0xb8, 0x17, 0x94, 0xaf, 0xfe, 0xef, 0xcd, 0x6d, 0xe9, 0xf6, 0x0c, 0x8d,
		0xbf, 0xc3, 0x8d, 0x5f, 0xbf, 0xa9, 0x9c, 0xc3, 0x01, 0x76, 0xd9, 0x01, 0x20, 0x0c, 0xec, 0xa4,
		0x03, 0xdc, 0x54, 0x6f, 0xcf, 0xea, 0x95, 0xeb, 0x8b, 0xf2, 0x97, 0xff, 0x8d, 0x06, 0x06, 0xf0,
		0x81, 0x9d, 0xf7, 0x81, 0x3c, 0x7c, 0x60, 0xf7, 0x7c, 0xe0, 0x5b, 0xe5, 0xca, 0xac, 0x09, 0x03,
		0xa4, 0x2d, 0xac, 0x61, 0xde, 0x9f, 0xe1, 0x56, 0x11, 0x5e, 0x63, 0x10, 0xf8, 0x7d, 0xc5, 0x9d,
		0x96, 0x08, 0x95, 0x90, 0x9d, 0xbe, 0x08, 0x1f, 0x78, 0x60, 0xcc, 0x42, 0x83, 0x45, 0xb6, 0x63,
		0xb5, 0xc1, 0x3a, 0xe6, 0x61, 0xb5, 0xc1, 0x06, 0xbd, 0x13, 0xab, 0x0d, 0x36, 0x1a, 0x39, 0x58,
		0x6d, 0x90, 0xb0, 0xc1, 0x58, 0x6d, 0xb0, 0xc5, 0xa3, 0x08, 0x83, 0x56, 0x1b, 0x98, 0x93, 0xce,
		0x2d, 0x9c, 0xe3, 0xb0, 0x53, 0x83, 0xdb, 0x29, 0x78, 0xaa, 0x40, 0xc8, 0x0e, 0xb6, 0x96, 0xde,
		0x30, 0xdc, 0x19, 0x7f, 0x82, 0xc3, 0x68, 0xb3, 0xd8, 0x7b, 0xcf, 0xc9, 0x8d, 0xbf, 0xcf, 0x0e,
		0xde, 0xf2, 0xd3, 0x0d, 0xf3, 0x5f, 0x0f, 0x07, 0x6f, 0xf9, 0xdc, 0xcc, 0xf7, 0x99, 0xe1, 0xf7,
		0xc3, 0x0b, 0x99, 0xf1, 0x8e, 0xfa, 0xf9, 0x5c, 0xee, 0x70, 0xb4, 0xa7, 0xfe, 0xf1, 0xa2, 0x5f,
		0x7e, 0x14, 0xfd, 0xf2, 0xc3, 0xf1, 0xf7, 0xc5, 0xc1, 0x5b, 0xf6, 0xfe, 0xc0, 0x1b, 0x7f, 0x77,
		0x34, 0x78, 0xcb, 0x66, 0xee, 0x0f, 0x9c, 0xa3, 0xf1, 0xf7, 0x85, 0xe1, 0xf7, 0xc5, 0xfb, 0x83,
		0xf8, 0xe5, 0xf9, 0xe8, 0x42, 0x76, 0xe6, 0x25, 0xb9, 0xd1, 0x95, 0x62, 0xf4, 0x89, 0xb1, 0xc1,
		0xa3, 0x4d, 0x38, 0xee, 0x0f, 0x9c, 0xfc, 0xd4, 0xea, 0xf1, 0xc6, 0x1c, 0xd3, 0x4f, 0xcb, 0xc4,
		0xd7, 0x66, 0x3e, 0x33, 0xbe, 0x34, 0xfa, 0x8d, 0xd8, 0x00, 0x7a, 0x33, 0x61, 0xb1, 0x2d, 0x27,
		0x4f, 0x20, 0x3a, 0xde, 0x45, 0x07, 0x36, 0x6a, 0xde, 0x52, 0xd6, 0x06, 0xd0, 0x00, 0x68, 0x2c,
		0x1c, 0x49, 0xf5, 0x93, 0xc3, 0x82, 0x8e, 0x93, 0xcc, 0x0d, 0xa0, 0x0e, 0x50, 0x87, 0xe1, 0x2e,
		0x0c, 0x34, 0x00, 0x1a, 0x00, 0x0d, 0x80, 0x06, 0xc4, 0xb5, 0x0e, 0xc3, 0x06, 0x5c, 0xa0, 0x0e,
		0x50, 0x47, 0x8a, 0x5a, 0x07, 0xa2, 0x03, 0x40, 0xb3, 0x41, 0xa0, 0xc1, 0x0e, 0xb3, 0x86, 0xdf,
		0x2f, 0x8a, 0xb3, 0xbf, 0x9e, 0x58, 0x57, 0xb4, 0x46, 0x13, 0xa8, 0xe8, 0x4f, 0xf7, 0x9a, 0x35,
		0x16, 0xf3, 0xbb, 0xd6, 0x31, 0x0f, 0xf3, 0xbb, 0x36, 0xe8, 0x8e, 0x98, 0xdf, 0xb5, 0xd1, 0xc8,
		0xc1, 0xfc, 0xae, 0x84, 0x0d, 0xc6, 0xfc, 0xae, 0x2d, 0x16, 0x96, 0x0c, 0x9a, 0xdf, 0xd5, 0xf0,
		0xfd, 0x2e, 0x67, 0xd2, 0x84, 0x39, 0x5d, 0x1e, 0xd0, 0xd6, 0x40, 0x8b, 0x88, 0x85, 0xa8, 0x5d,
		0x92, 0xd2, 0x57, 0x4c, 0x09, 0x9f, 0xe6, 0xe1, 0x57, 0x76, 0xd8, 0x7c, 0xe0, 0x8f, 0xac, 0xc7,
		0xd4, 0xc3, 0x30, 0x3c, 0x5d, 0xbf, 0xc7, 0x65, 0x33, 0x02, 0x45, 0x47, 0x72, 0xf5, 0xc3, 0x0f,
		0xbe, 0x3b, 0x42, 0x86, 0x8a, 0xc9, 0x26, 0x77, 0x3f, 0x5e, 0x08, 0xe7, 0xae, 0xb8, 0xbd, 0xc0,
		0x57, 0x7e, 0xd3, 0xef, 0x86, 0xf1, 0x33, 0xb7, 0xd1, 0xe9, 0xb9, 0x81, 0x68, 0xb8, 0xac, 0x2d,
		0x9c, 0x90, 0xb5, 0x45, 0x18, 0x3f, 0x73, 0xbb, 0x99, 0xa7, 0x9e, 0x74, 0xf8, 0x53, 0x4f, 0xba,
		0xdd, 0x51, 0x52, 0x72, 0x23, 0xc0, 0x0f, 0xdd, 0x05, 0xd3, 0x40, 0x5d, 0xf5, 0xd2, 0xe3, 0x4e,
		0x5b, 0x3c, 0x71, 0x47, 0xf4, 0x9c, 0x11, 0x26, 0xcc, 0x5c, 0x8b, 0xde, 0xe1, 0x0e, 0xff, 0x8e,
		0x30, 0xfa, 0xdf, 0x0d, 0x15, 0x53, 0x9c, 0x56, 0x82, 0xa3, 0x13, 0x29, 0x84, 0xa2, 0xc4, 0xee,
		0xcb, 0xef, 0xd2, 0xff, 0x21, 0x1d, 0xa6, 0x54, 0x20, 0x1a, 0xc3, 0xe6, 0x27, 0x17, 0x29, 0xd3,
		0x13, 0x15, 0xe7, 0x6d, 0x25, 0xd6, 0xdf, 0x4c, 0xb2, 0x17, 0x31, 0xb3, 0xa8, 0x0e, 0x3e, 0x29,
		0x0f, 0x3a, 0xcd, 0x18, 0x6c, 0x52, 0x1f, 0x64, 0x1a, 0x33, 0xb8, 0x34, 0x66, 0x50, 0x69, 0xcc,
		0x60, 0x12, 0x64, 0xfa, 0xb3, 0x56, 0x3c, 0x15, 0x34, 0x57, 0xf9, 0xce, 0x27, 0x59, 0xfa, 0xea,
		0xf4, 0xbc, 0xc9, 0xb4, 0x35, 0x6a, 0x0f, 0x1a, 0xf5, 0xd6, 0xe1, 0x82, 0x59, 0xd8, 0x60, 0x0a,
		0x3e, 0x18, 0x87, 0x11, 0xc6, 0xe1, 0x84, 0x71, 0x58, 0x41, 0x13, 0x2f, 0x88, 0x62, 0x06, 0x79,
		0xdc, 0x88, 0x0d, 0x1c, 0xe6, 0x6e, 0x47, 0x51, 0x57, 0xd2, 0xdf, 0xf5, 0xf0, 0x53, 0x93, 0x89,
		0x87, 0x36, 0xed, 0xd2, 0xb8, 0x31, 0xf8, 0x61, 0x12, 0x86, 0x98, 0x89, 0x23, 0xa6, 0x61, 0x89,
		0xb1, 0x78, 0x62, 0x2c, 0xa6, 0x18, 0x8b, 0x2b, 0xb4, 0xb1, 0x85, 0x38, 0xbe, 0xc4, 0xad, 0x7e,
		0x6b, 0x02, 0x20, 0xbc, 0xeb, 0x77, 0xbb, 0x9c, 0xb5, 0x69, 0x1f, 0xde, 0x3a, 0xa7, 0x4e, 0x14,
		0xcc, 0x58, 0xc4, 0x11, 0x95, 0x4c, 0x3f, 0x7f, 0x1e, 0x95, 0x1a, 0xdd, 0x29, 0x8c, 0x61, 0x2e,
		0xf1, 0xb6, 0x85, 0xbe, 0x3d, 0xaa, 0x26, 0x1b, 0x33, 0x30, 0x18, 0x99, 0x6b, 0xc6, 0xa0, 0xc0,
		0xc3, 0xa0, 0x00, 0x83, 0x02, 0x0c, 0x0a, 0x30, 0x28, 0xc0, 0xa0, 0x00, 0x54, 0x60, 0xe6, 0xa0,
		0x80, 0xba, 0xb6, 0x19, 0x1b, 0x1a, 0x31, 0x6a, 0x97, 0x4b, 0x73, 0xba, 0xb0, 0x77, 0x52, 0xe7,
		0xd0, 0x72, 0x43, 0x3a, 0x02, 0x33, 0x14, 0x4f, 0xe3, 0x20, 0xc7, 0x44, 0xd8, 0x31, 0x1b, 0x7a,
		0x4c, 0x85, 0x1f, 0xe3, 0x21, 0xc8, 0x78, 0x18, 0x32, 0x1e, 0x8a, 0xcc, 0x80, 0x23, 0x43, 0x20,
		0x29, 0xf6, 0x06, 0x63, 0x14, 0xd4, 0xb9, 0x7e, 0xbb, 0x2f, 0xa4, 0xf2, 0xf2, 0x26, 0xf5, 0xd9,
		0x63, 0x0a, 0xc9, 0x1b, 0x64, 0x72, 0x95, 0xc9, 0x0e, 0x37, 0x66, 0xfb, 0x8f, 0xc9, 0xc3, 0xac,
		0x9c, 0x18, 0xdd, 0xe8, 0x4b, 0x21, 0x8d, 0x4b, 0xe6, 0xb1, 0xf1, 0xdf, 0x58, 0xb7, 0xcf, 0xcd,
		0xc1, 0xd5, 0x39, 0xfb, 0xcf, 0x03, 0xd6, 0x54, 0xc2, 0x97, 0xa7, 0xa2, 0x23, 0x54, 0x68, 0xf0,
		0x1f, 0x72, 0xc5, 0x3b, 0x4c, 0x89, 0xa7, 0x61, 0x5b, 0xb4, 0x59, 0x37, 0xe4, 0xc6, 0xfd, 0x15,
		0x83, 0x4f, 0x06, 0x86, 0x2e, 0x7b, 0x36, 0x3f, 0x74, 0xf3, 0xb9, 0xdc, 0x61, 0x0e, 0xe1, 0x8b,
		0xf0, 0xdd, 0x01, 0x36, 0x37, 0xcf, 0xda, 0x1a, 0xc6, 0x3c, 0x1b, 0x0c, 0x33, 0xfe, 0xac, 0x02,
		0xe6, 0xf4, 0x65, 0xa8, 0x58, 0xa3, 0x6b, 0xd8, 0xe8, 0x27, 0xe0, 0x6d, 0x1e, 0x70, 0xd9, 0x04,
		0x94, 0xa7, 0x38, 0xd4, 0xac, 0x9e, 0x7f, 0xb1, 0xb2, 0x99, 0x82, 0x67, 0x39, 0x56, 0xc9, 0x3a,
		0xf1, 0x83, 0x16, 0x0f, 0xac, 0xaf, 0x4c, 0xf1, 0x1f, 0xec, 0xc5, 0xaa, 0x8c, 0x97, 0xd6, 0x5b,
		0x59, 0x6b, 0xef, 0xe4, 0x6b, 0xc5, 0xc9, 0xee, 0xdb, 0x06, 0x32, 0x8c, 0xa1, 0x72, 0xe2, 0x74,
		0x68, 0x3d, 0x95, 0x15, 0xa7, 0x11, 0x62, 0x28, 0x05, 0x98, 0xae, 0x30, 0xc6, 0x7f, 0xc8, 0xac,
		0xd2, 0xb8, 0x62, 0x08, 0x81, 0x7c, 0x60, 0xad, 0x49, 0xe4, 0x83, 0x23, 0xd5, 0x37, 0xd0, 0x5f,
		0x98, 0xb3, 0xe6, 0x67, 0x8e, 0x10, 0x4c, 0x59, 0xfb, 0x33, 0x4d, 0x98, 0xa8, 0x88, 0x27, 0x6a,
		0x30, 0x2a, 0xe2, 0x40, 0xd8, 0x95, 0xd1, 0x15, 0x15, 0x71, 0xed, 0x9c, 0x8a, 0x8a, 0xf8, 0x0e,
		0x13, 0x88, 0x65, 0x7e, 0x45, 0xfc, 0xc8, 0xc0, 0x82, 0x78, 0x0e, 0x05, 0xf1, 0x84, 0x1f, 0x28,
		0x88, 0xa7, 0x6b, 0x3c, 0x0a, 0xe2, 0x54, 0xba, 0x46, 0x14, 0xc4, 0x35, 0x84, 0xee, 0x36, 0x14,
		0xc4, 0x33, 0x39, 0x94, 0xc3, 0x11, 0xbc, 0xbb, 0x00, 0xe6, 0xe6, 0x59, 0x8b, 0x72, 0xf8, 0x26,
		0xc3, 0x0c, 0xe5, 0x70, 0x20, 0xf9, 0x4a, 0xe3, 0x4c, 0x94, 0xc3, 0xc9, 0x0f, 0xac, 0x51, 0x0e,
		0xa7, 0xf7, 0x87, 0xa0, 0x1c, 0x0e, 0x6b, 0x77, 0x84, 0x7c, 0x50, 0x0e, 0xdf, 0x40, 0x7f, 0x11,
		0xd5, 0x94, 0x9f, 0xc6, 0xc3, 0x51, 0x13, 0xeb, 0xe1, 0x23, 0xdb, 0x51, 0x10, 0x4f, 0xc2, 0x5c,
		0x14, 0xc4, 0x53, 0xf4, 0x66, 0x14, 0xc4, 0x35, 0xc1, 0x2b, 0x0a, 0xe2, 0xda, 0x49, 0x15, 0x05,
		0xf1, 0x1d, 0x66, 0x10, 0xcb, 0xec, 0x82, 0x78, 0x43, 0x48, 0x16, 0xbc, 0x18, 0x58, 0x11, 0x2f,
		0x1a, 0x64, 0xf2, 0x05, 0x97, 0x9d, 0x68, 0xf3, 0x4d, 0xe8, 0x6f, 0x09, 0xdf, 0xe9, 0xad, 0x28,
		0x89, 0x7b, 0xa8, 0xaa, 0x69, 0xee, 0x1c, 0x51, 0x12, 0xd7, 0x10, 0xba, 0x58, 0x23, 0x8e, 0xf0,
		0x45, 0xf8, 0x5a, 0x90, 0x86, 0x13, 0x7b, 0xa0, 0x28, 0xbe, 0xc9, 0x30, 0x43, 0x51, 0x1c, 0x50,
		0xbe, 0xd2, 0x58, 0x13, 0x45, 0x71, 0xf2, 0x63, 0x6b, 0x14, 0xc5, 0xe9, 0xfd, 0x21, 0x28, 0x8a,
		0xc3, 0xda, 0x1d, 0x21, 0x1f, 0x14, 0xc5, 0x37, 0xc3, 0x65, 0x5c, 0xb6, 0x78, 0xcb, 0xbc, 0x92,
		0x78, 0x6c, 0x39, 0x0a, 0xe2, 0x49, 0x98, 0x8b, 0x82, 0x78, 0x8a, 0xbe, 0x8c, 0x82, 0xb8, 0x26,
		0x70, 0x45, 0x41, 0x5c, 0x3b, 0xa5, 0xa2, 0x20, 0xbe, 0xc3, 0xfc, 0x61, 0x19, 0x5e, 0x10, 0xf7,
		0xfd, 0x2e, 0x67, 0xd2, 0xc0, 0x8a, 0xb8, 0xe7, 0xc1, 0x85, 0x37, 0x8b, 0xd1, 0x90, 0x37, 0x53,
		0x7f, 0x40, 0xde, 0x04, 0x1d, 0xa6, 0x41, 0x89, 0x90, 0x37, 0x29, 0x82, 0x23, 0xe4, 0x4d, 0x58,
		0xbb, 0xce, 0x03, 0xf2, 0xe6, 0xce, 0xb0, 0x99, 0xed, 0xf7, 0x94, 0xf0, 0x25, 0xeb, 0x9a, 0x27,
		0x6f, 0xc6, 0x96, 0x43, 0xde, 0x4c, 0xc2, 0x5c, 0xc8, 0x9b, 0x69, 0xfa, 0x32, 0xe4, 0x4d, 0x3d,
		0xe0, 0x0a, 0x79, 0x53, 0x3b, 0xa5, 0x42, 0xde, 0xdc, 0x61, 0xfe, 0xb0, 0x20, 0x6f, 0xea, 0xc1,
		0x10, 0xc8, 0x9b, 0x1b, 0xbd, 0xab, 0x90, 0x37, 0x75, 0x3c, 0x20, 0x6f, 0x82, 0x0e, 0xd3, 0xa0,
		0x44, 0xc8, 0x9b, 0x14, 0xc1, 0x11, 0xf2, 0x26, 0xac, 0x5d, 0xe7, 0x01, 0x79, 0x73, 0x67, 0xd8,
		0xcc, 0xee, 0xb1, 0x40, 0x09, 0x13, 0xd5, 0xcd, 0x89, 0xe1, 0x10, 0x37, 0x93, 0x30, 0x17, 0xe2,
		0x66, 0x8a, 0xae, 0x0c, 0x71, 0x53, 0x13, 0xb6, 0x42, 0xdc, 0xd4, 0xce, 0xa8, 0x10, 0x37, 0x77,
		0x98, 0x3e, 0x2c, 0x88, 0x9b, 0x7a, 0x30, 0x04, 0xe2, 0xe6, 0x46, 0xef, 0x2a, 0xc4, 0x4d, 0x1d,
		0x0f, 0x88, 0x9b, 0xa0, 0xc3, 0x34, 0x28, 0x11, 0xe2, 0x26, 0x45, 0x70, 0x84, 0xb8, 0x09, 0x6b,
		0xd7, 0x79, 0x40, 0xdc, 0xdc, 0x19, 0x36, 0xb3, 0x55, 0xc0, 0x64, 0x28, 0xc6, 0x7b, 0x73, 0x19,
		0xa6, 0x6f, 0xce, 0xd8, 0x0e, 0x89, 0x33, 0x09, 0x73, 0x21, 0x71, 0xa6, 0xe8, 0xcd, 0x90, 0x38,
		0x35, 0xc1, 0x2b, 0x24, 0x4e, 0xed, 0xa4, 0x0a, 0x89, 0x73, 0x87, 0x19, 0xc4, 0x82, 0xc4, 0xa9,
		0x07, 0x43, 0x20, 0x71, 0x6e, 0xf4, 0xae, 0x42, 0xe2, 0xd4, 0xf1, 0x80, 0xc4, 0x09, 0x3a, 0x4c,
		0x83, 0x12, 0x21, 0x71, 0x52, 0x04, 0x47, 0x48, 0x9c, 0xb0, 0x76, 0x9d, 0x07, 0x24, 0xce, 0x5d,
		0xb0, 0x90, 0x38, 0x39, 0xda, 0x25, 0x29, 0x7d, 0xc5, 0x94, 0xf0, 0xcd, 0x38, 0x22, 0xc7, 0x0e,
		0x9b, 0x0f, 0xfc, 0x91, 0xf5, 0x58, 0x74, 0x72, 0x92, 0xed, 0xfa, 0x3d, 0x2e, 0x9b, 0x91, 0x44,
		0xe8, 0x48, 0xae, 0x7e, 0xf8, 0xc1, 0x77, 0x47, 0x0c, 0xe9, 0x57, 0x36, 0xb9, 0xfb, 0xf1, 0x42,
		0x38, 0x77, 0xc5, 0xed, 0x8d, 0xfb, 0xe7, 0x30, 0x7e, 0xe6, 0x36, 0x3a, 0x3d, 0x37, 0x10, 0x0d,
		0x97, 0xb5, 0x85, 0x13, 0xb2, 0xb6, 0x08, 0xe3, 0x67, 0x6e, 0x37, 0xf3, 0xd4, 0x93, 0x0e, 0x7f,
		0xea, 0x49, 0xb7, 0x3b, 0x92, 0x0b, 0xdc, 0xc0, 0xef, 0x2b, 0x1e, 0x8e, 0xbe, 0x38, 0x2d, 0x11,
		0x2a, 0x21, 0x3b, 0x7d, 0x11, 0x3e, 0xf0, 0xc0, 0x55, 0x2f, 0x3d, 0xee, 0xb4, 0xc5, 0x13, 0x77,
		0x44, 0xcf, 0x19, 0x09, 0x3c, 0x33, 0xd7, 0xa2, 0x77, 0xb8, 0xc3, 0xbf, 0x23, 0x8c, 0xfe, 0x77,
		0xfb, 0xf2, 0xbb, 0xf4, 0x7f, 0x48, 0x87, 0x29, 0x15, 0x88, 0x46, 0xf4, 0x5b, 0xe7, 0x2e, 0xb9,
		0xa1, 0x62, 0x8a, 0xd3, 0x4e, 0x21, 0x74, 0xc3, 0x91, 0xa6, 0x65, 0x44, 0x3b, 0x88, 0x21, 0x77,
		0xc6, 0x07, 0xd2, 0x0e, 0xdd, 0x96, 0x28, 0x73, 0xda, 0x17, 0x22, 0x54, 0x25, 0xa5, 0x02, 0xd2,
		0xdd, 0x97, 0x7d, 0x29, 0xe4, 0x59, 0x97, 0x0f, 0x91, 0x91, 0xf8, 0x19, 0x3a, 0xf6, 0x25, 0x7b,
		0x9e, 0xb1, 0xd4, 0x3b, 0xca, 0x66, 0xf3, 0x85, 0x6c, 0xf6, 0xa0, 0x70, 0x58, 0x38, 0x28, 0xe6,
		0x72, 0x5e, 0xde, 0x23, 0x7c, 0x92, 0x91, 0x7d, 0x3d, 0xa4, 0x6f, 0xde, 0x3a, 0x19, 0xba, 0xae,
		0xec, 0x77, 0xbb, 0x26, 0x98, 0x7a, 0x17, 0xf2, 0x80, 0xf4, 0xa1, 0x44, 0x54, 0x7b, 0x28, 0x43,
		0xd0, 0x65, 0xb7, 0x91, 0x85, 0xb0, 0x54, 0x61, 0x87, 0x2a, 0xe8, 0x37, 0x95, 0x1c, 0x4b, 0x61,
		0x57, 0xa3, 0x3b, 0x5d, 0x1e, 0xdf, 0xe8, 0xfa, 0x64, 0xec, 0x5e, 0x3f, 0xe9, 0xf4, 0xea, 0x55,
		0xd1, 0xa8, 0x97, 0xda, 0xe2, 0x86, 0xb5, 0x45, 0xfd, 0x22, 0xf3, 0xad, 0x27, 0xcf, 0x9e, 0x7a,
		0xb2, 0x7e, 0xe1, 0x37, 0x87, 0x3f, 0xa8, 0x0e, 0x6f, 0xcc, 0xe9, 0xec, 0x9d, 0xac, 0xdf, 0xbe,
		0xf4, 0xf8, 0xb9, 0x78, 0xe2, 0xd1, 0x8f, 0xea, 0x15, 0xa6, 0x1e, 0xea, 0x77, 0xa3, 0x5b, 0x53,
		0x8a, 0xef, 0xcc, 0x1f, 0x80, 0x24, 0xf3, 0x2c, 0x22, 0xd6, 0x19, 0x52, 0xef, 0x04, 0x77, 0xa9,
		0xf3, 0xa3, 0x15, 0xd0, 0x74, 0xc2, 0x86, 0x86, 0x25, 0x44, 0x02, 0x77, 0x32, 0xae, 0xea, 0x71,
		0x1e, 0x38, 0xa2, 0x67, 0x45, 0x5f, 0x87, 0x0e, 0xe5, 0x88, 0x96, 0x15, 0x46, 0xb5, 0x0a, 0x67,
		0x81, 0x77, 0x4e, 0x7e, 0xc4, 0x5a, 0xad, 0x80, 0x87, 0xa1, 0xd3, 0x66, 0x8f, 0xa2, 0x4b, 0xe5,
		0x84, 0x6e, 0x9a, 0x63, 0x30, 0xba, 0x63, 0x2e, 0xa3, 0xc6, 0x58, 0x84, 0xc7, 0x54, 0x84, 0xc7,
		0x50, 0x54, 0x7a, 0x1b, 0xa2, 0x78, 0xb0, 0xb5, 0x58, 0x40, 0x68, 0xb8, 0x93, 0xee, 0xf0, 0x86,
		0x06, 0xfc, 0xe8, 0x47, 0x0d, 0xbd, 0x16, 0x68, 0xee, 0x76, 0xa8, 0x75, 0x37, 0xdb, 0xd8, 0xcd,
		0xe8, 0x0d, 0x34, 0x7d, 0xee, 0xad, 0xd1, 0xb5, 0xed, 0x51, 0xd9, 0x4d, 0xb7, 0x47, 0xc7, 0x93,
		0xb6, 0x46, 0xe6, 0x68, 0x0e, 0xf5, 0xc9, 0x04, 0x4e, 0xcd, 0x66, 0x50, 0x59, 0x1f, 0x42, 0x69,
		0xdd, 0x07, 0xcd, 0xf5, 0x1c, 0xd4, 0x66, 0xe2, 0x91, 0x5d, 0x7f, 0x41, 0x76, 0x9a, 0x1c, 0xd9,
		0xf5, 0x12, 0xbb, 0x0d, 0x5d, 0xa7, 0x82, 0x86, 0xf0, 0x62, 0x73, 0xf5, 0xc0, 0x03, 0xc9, 0x95,
		0xa3, 0x58, 0x87, 0x4e, 0x98, 0xc7, 0xe7, 0x08, 0xcf, 0x5a, 0x47, 0x45, 0x0c, 0x24, 0xb5, 0x18,
		0x93, 0xdc, 0x62, 0x4b, 0x8a, 0x8b, 0x29, 0x69, 0x2f, 0x96, 0xa4, 0x3a, 0xdd, 0x9d, 0xfc, 0x62,
		0x47, 0xf2, 0x73, 0xd3, 0xc9, 0x2f, 0x56, 0x44, 0x99, 0x67, 0xb6, 0xb5, 0xc8, 0x2d, 0x26, 0xa4,
		0x9c, 0x07, 0x67, 0x73, 0x61, 0x81, 0x90, 0x49, 0x55, 0x26, 0x3b, 0xf4, 0x96, 0xa3, 0x11, 0xac,
		0xf2, 0x5f, 0x0a, 0xba, 0x73, 0xb0, 0xec, 0x6f, 0xac, 0xdb, 0xe7, 0x74, 0x67, 0x5d, 0xda, 0xe7,
		0x01, 0x6b, 0x2a, 0xe1, 0xcb, 0x53, 0xd1, 0x11, 0x94, 0xa7, 0x87, 0xda, 0x57, 0xbc, 0xc3, 0xc6,
		0xdb, 0xb4, 0xd0, 0x9c, 0xad, 0x48, 0x70, 0xa6, 0xa2, 0x7d, 0xc9, 0x9e, 0xe9, 0x87, 0x46, 0x36,
		0x53, 0xcc, 0x16, 0xf3, 0x85, 0x4c, 0x31, 0x87, 0x18, 0xd9, 0xf6, 0x18, 0xc1, 0x2c, 0xa5, 0x85,
		0x8f, 0x1a, 0x0a, 0x98, 0x54, 0xfa, 0x50, 0x3b, 0x2e, 0x81, 0xd1, 0x53, 0x91, 0xa6, 0xa6, 0x41,
		0x42, 0x5a, 0x64, 0x0e, 0x24, 0xa4, 0x15, 0x9c, 0x09, 0x12, 0xd2, 0x4a, 0x9e, 0x0e, 0x09, 0xe9,
		0x37, 0x0d, 0x84, 0x84, 0x64, 0xd0, 0x28, 0x82, 0xb0, 0x84, 0x44, 0x2d, 0x09, 0xce, 0x26, 0x42,
		0xaf, 0x48, 0xc8, 0xa6, 0x71, 0x13, 0x42, 0x3f, 0xfa, 0x65, 0xc7, 0x7a, 0xca, 0x3a, 0x64, 0x37,
		0x43, 0x8c, 0x5d, 0xec, 0x88, 0xa0, 0x6d, 0x15, 0xa6, 0x14, 0x0f, 0x24, 0xd9, 0xcd, 0xb3, 0xec,
		0xbd, 0xfb, 0x03, 0xa7, 0x58, 0x7b, 0xbb, 0xf7, 0x9c, 0x62, 0x6d, 0xf4, 0xd4, 0x8b, 0xbe, 0xbc,
		0x66, 0x06, 0x6f, 0x99, 0xfb, 0x03, 0x27, 0x3b, 0xbe, 0x9a, 0xc9, 0xdd, 0x1f, 0x38, 0xb9, 0xda,
		0xfe, 0xde, 0xdf, 0x7f, 0x7f, 0x5e, 0xf5, 0x3d, 0xfb, 0xaf, 0x87, 0x03, 0x37, 0x7e, 0x53, 0x66,
		0xfc, 0xd3, 0xc3, 0xfb, 0x03, 0x27, 0x53, 0x23, 0xb8, 0xf5, 0x4e, 0x8d, 0xa2, 0x1f, 0x5d, 0xdf,
		0x94, 0xff, 0x22, 0xef, 0x4c, 0xff, 0xec, 0x69, 0x77, 0xa7, 0xfd, 0x3f, 0x09, 0x3a, 0x14, 0xd6,
		0x4a, 0x9a, 0x9a, 0xf7, 0xf2, 0xc8, 0x7b, 0x5b, 0x9a, 0xf7, 0xa2, 0x0e, 0x84, 0x39, 0xed, 0x92,
		0x73, 0x5e, 0x7b, 0xf5, 0x3e, 0x65, 0x07, 0xc7, 0xfb, 0xaf, 0x85, 0xc1, 0xc7, 0x8b, 0x6f, 0x8b,
		0x5e, 0xe6, 0x7d, 0x2a, 0x0c, 0x8e, 0x97, 0xfc, 0x24, 0x3f, 0x38, 0xfe, 0xc5, 0xdf, 0x91, 0x1b,
		0xec, 0xcd, 0xbd, 0x74, 0x78, 0x3d, 0xb3, 0xec, 0x0d, 0xd9, 0x25, 0x6f, 0x38, 0x5c, 0xf6, 0x86,
		0xc3, 0x25, 0x6f, 0x58, 0x6a, 0x52, 0x66, 0xc9, 0x1b, 0x72, 0x83, 0xb7, 0xb9, 0xd7, 0xef, 0x2d,
		0x7e, 0x69, 0x7e, 0xb0, 0xff, 0xb6, 0xec, 0x67, 0x85, 0xc1, 0xdb, 0xf1, 0xfe, 0xbe, 0xbb, 0xe7,
		0x0d, 0x7b, 0xf5, 0xa3, 0x51, 0x37, 0xef, 0xd5, 0xe6, 0x7a, 0xff, 0xe8, 0x7f, 0x70, 0xc1, 0xf6,
		0x71, 0x01, 0xa2, 0x8d, 0x6c, 0xb4, 0x81, 0x9a, 0x8c, 0x10, 0xc1, 0x2c, 0x94, 0xc4, 0x28, 0x71,
		0xec, 0x54, 0x72, 0x73, 0xba, 0x5c, 0x76, 0xa2, 0xf5, 0x6c, 0x54, 0x2b, 0x63, 0x13, 0x0b, 0x51,
		0x20, 0x5b, 0x64, 0x0e, 0x0a, 0x64, 0x2b, 0xf8, 0x14, 0x0a, 0x64, 0x2b, 0x79, 0x3a, 0x0a, 0x64,
		0xbf, 0x69, 0x20, 0x0a, 0x64, 0x06, 0xe9, 0x3a, 0x84, 0x0b, 0x64, 0xa1, 0x0a, 0x84, 0xa4, 0x38,
		0xbb, 0xda, 0x3b, 0x02, 0xd3, 0x11, 0xb0, 0x00, 0xfb, 0x34, 0xbc, 0xb7, 0x67, 0xbb, 0xf6, 0x69,
		0x20, 0xb0, 0x4b, 0xb7, 0xc6, 0x7d, 0x1a, 0xfe, 0xd8, 0xa1, 0x80, 0x9a, 0xec, 0xe6, 0x36, 0xbb,
		0xa6, 0xc6, 0xfa, 0x38, 0x10, 0xb2, 0x74, 0x4f, 0x97, 0xa0, 0xb1, 0x3f, 0x1b, 0x9d, 0xfd, 0xd8,
		0x48, 0xef, 0xbf, 0x46, 0x68, 0xbf, 0x35, 0x42, 0xfb, 0xab, 0xe9, 0x8a, 0x6f, 0x42, 0x07, 0xaa,
		0x11, 0x3a, 0x20, 0x8d, 0xd0, 0x16, 0x27, 0xd5, 0xf3, 0x2f, 0x45, 0xef, 0x30, 0x7f, 0x6c, 0x95,
		0x2b, 0xd6, 0x48, 0xc9, 0xb0, 0x4a, 0xad, 0x27, 0x1e, 0x28, 0x11, 0x46, 0x01, 0x6e, 0x09, 0x69,
		0x9d, 0x8d, 0x7b, 0x67, 0xeb, 0x5b, 0xe5, 0xca, 0xda, 0x3b, 0xfb, 0x56, 0xb9, 0xda, 0xc7, 0x7e,
		0x28, 0x3f, 0x95, 0x0f, 0xa8, 0x9d, 0x34, 0x66, 0xc6, 0x96, 0x28, 0xeb, 0xfa, 0xe2, 0xae, 0x0f,
		0x86, 0xb4, 0x7d, 0x7a, 0x6d, 0xa7, 0x72, 0x19, 0x91, 0x41, 0xdf, 0x76, 0x0d, 0xf6, 0x6c, 0xad,
		0xdb, 0xd2, 0xa5, 0xb3, 0xc1, 0xa7, 0x9e, 0x0e, 0x2a, 0xfd, 0x6e, 0x21, 0xdd, 0x4f, 0x4c, 0xb9,
		0x1b, 0xd0, 0x1d, 0xfe, 0x66, 0x87, 0x7d, 0xba, 0x21, 0x90, 0x9e, 0x23, 0xa6, 0xe8, 0x84, 0xf6,
		0xe8, 0xb6, 0xfa, 0xfd, 0xc0, 0x89, 0xe5, 0x92, 0x90, 0x77, 0xc6, 0xf0, 0x94, 0xae, 0x43, 0xc6,
		0xc3, 0x87, 0x9f, 0xd8, 0x94, 0x72, 0x78, 0xea, 0xd9, 0x4f, 0x53, 0x5b, 0x39, 0x5a, 0x67, 0xd9,
		0x99, 0x46, 0x79, 0x59, 0xf7, 0xf8, 0x8f, 0x4c, 0xb9, 0x98, 0xcc, 0xe0, 0x8e, 0x4c, 0xf9, 0x77,
		0xbb, 0x41, 0x44, 0xd7, 0x7e, 0x95, 0x33, 0x9d, 0xfd, 0x08, 0xdd, 0xb5, 0x45, 0xde, 0x7c, 0xf6,
		0xd1, 0x39, 0x96, 0xd0, 0xbc, 0x95, 0xb3, 0xf6, 0x19, 0x51, 0x14, 0x66, 0x40, 0xd1, 0x9a, 0xf1,
		0x44, 0x45, 0x9a, 0x24, 0x37, 0xa3, 0x89, 0x9c, 0x0e, 0x49, 0x6e, 0xc6, 0xd2, 0x6e, 0x95, 0x7f,
		0x75, 0x6f, 0xbd, 0x6c, 0xf3, 0x50, 0xd0, 0x39, 0x97, 0x60, 0x68, 0x0c, 0x8d, 0x53, 0x09, 0x0e,
		0x70, 0x2a, 0x01, 0x99, 0xd4, 0x46, 0x33, 0xc5, 0x51, 0x4b, 0x75, 0x64, 0x53, 0x1e, 0xd9, 0xd4,
		0x47, 0x36, 0x05, 0xea, 0x4d, 0x85, 0x9a, 0x53, 0x62, 0xdc, 0x2a, 0x64, 0x26, 0xe7, 0xc6, 0xfd,
		0x4e, 0x97, 0xb3, 0x76, 0xc0, 0xdb, 0x14, 0x3a, 0x9d, 0xc9, 0x88, 0x8b, 0xc0, 0x66, 0xc7, 0x76,
		0x65, 0xac, 0xc8, 0x7f, 0xfe, 0x3c, 0x9a, 0xb8, 0xe8, 0x0e, 0xd3, 0xf8, 0x4e, 0xbb, 0x2e, 0xa1,
		0x49, 0x3f, 0xb1, 0x4d, 0x74, 0x26, 0xff, 0x4c, 0x1e, 0x04, 0xa7, 0xdd, 0x57, 0xcf, 0xbf, 0x14,
		0xb2, 0x87, 0x99, 0x63, 0xeb, 0xe4, 0x6b, 0xc5, 0xba, 0xac, 0x5c, 0xdc, 0x38, 0x27, 0x2c, 0xe4,
		0xad, 0x77, 0x93, 0x2e, 0xb0, 0x90, 0x68, 0x25, 0x06, 0xa1, 0x36, 0x13, 0x88, 0x3c, 0x8e, 0x2c,
		0xc4, 0x92, 0x5f, 0x72, 0x4c, 0xac, 0x32, 0xa2, 0x94, 0x05, 0xd0, 0xcd, 0xa1, 0x9b, 0x43, 0x37,
		0x87, 0x6e, 0x6e, 0xfb, 0xad, 0xa8, 0xe1, 0x44, 0xd9, 0xd4, 0xa3, 0xc6, 0x0f, 0x44, 0x47, 0x48,
		0xa6, 0x84, 0xec, 0x8c, 0x6a, 0x7f, 0x81, 0x23, 0x7a, 0x74, 0x94, 0xdc, 0xc5, 0xe6, 0x41, 0xdb,
		0x85, 0xb6, 0xfb, 0x5f, 0x8e, 0x03, 0x6d, 0xf7, 0xd7, 0x80, 0x03, 0xda, 0xee, 0xca, 0x74, 0x01,
		0x6d, 0x97, 0xc8, 0xd0, 0x08, 0xda, 0xee, 0x2f, 0xa4, 0x29, 0x9a, 0xda, 0xee, 0xe2, 0xc4, 0x0e,
		0xb5, 0x17, 0x6a, 0x2f, 0x64, 0x10, 0xc8, 0x20, 0x90, 0x41, 0x20, 0x83, 0x40, 0x06, 0x81, 0x0c,
		0x92, 0xba, 0x0c, 0xe2, 0x0f, 0x31, 0x84, 0xca, 0xce, 0x96, 0x73, 0x2a, 0xc8, 0x3b, 0xeb, 0x20,
		0x82, 0x40, 0x04, 0x81, 0x08, 0x02, 0x11, 0x04, 0x22, 0x08, 0x44, 0x10, 0x88, 0x20, 0x46, 0x8b,
		0x20, 0xef, 0xf2, 0x3a, 0x34, 0x10, 0x68, 0x20, 0xd0, 0x40, 0xa0, 0x81, 0x40, 0x03, 0x81, 0x06,
		0x02, 0x0d, 0x04, 0x1a, 0x48, 0x6a, 0x51, 0xd3, 0x63, 0xea, 0x21, 0xa4, 0x23, 0x7a, 0x8c, 0xcc,
		0xa1, 0xa1, 0x72, 0x78, 0x50, 0x39, 0xa0, 0x72, 0x40, 0xe5, 0x80, 0xca, 0x01, 0x95, 0x43, 0x57,
		0xab, 0xe8, 0x5e, 0xe1, 0xfe, 0x2e, 0x4d, 0xd2, 0x3b, 0xf4, 0x2a, 0xb2, 0x8a, 0xd6, 0x41, 0x57,
		0x1e, 0x0e, 0xba, 0x22, 0x9f, 0x44, 0x69, 0x27, 0x53, 0x93, 0x46, 0xeb, 0x38, 0xe8, 0x6a, 0xab,
		0x92, 0x2d, 0xb1, 0x01, 0x39, 0x91, 0x9e, 0x8b, 0x4a, 0x12, 0x9e, 0x26, 0x63, 0x4e, 0x63, 0xc1,
		0xc2, 0xf2, 0xbc, 0xcc, 0x29, 0x2c, 0x59, 0x58, 0x96, 0xa2, 0x0f, 0x88, 0x99, 0x45, 0x2d, 0x55,
		0x53, 0x4e, 0xd9, 0x66, 0xa4, 0x6e, 0xea, 0x29, 0xdc, 0x98, 0x54, 0x6e, 0x4c, 0x4a, 0x37, 0x26,
		0xb5, 0xd3, 0x4a, 0xf1, 0xc4, 0x52, 0x7d, 0xdc, 0x8a, 0xe4, 0xce, 0xb6, 0x9c, 0xeb, 0xf7, 0xe8,
		0xcc, 0x36, 0x58, 0x3a, 0x12, 0x2e, 0x10, 0xb4, 0x6d, 0x6e, 0x36, 0xc2, 0x04, 0x55, 0x70, 0x08,
		0x3d, 0xf5, 0xc0, 0x1c, 0x51, 0x65, 0x8f, 0xa9, 0x07, 0x47, 0xb4, 0x88, 0xb3, 0xef, 0xc4, 0x4a,
		0x00, 0x30, 0x00, 0x18, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x03, 0x80, 0x01, 0xc0, 0x00, 0x60, 0xaa,
		0x00, 0x3c, 0xe1, 0x15, 0x50, 0x30, 0x79, 0x0a, 0x0e, 0xa3, 0x8c, 0xea, 0xb0, 0x56, 0x2b, 0xe0,
		0x61, 0xe8, 0xb4, 0xd9, 0xa3, 0xe8, 0xbe, 0xd0, 0xc5, 0xe1, 0xc5, 0xe6, 0x82, 0x8b, 0xc1, 0xc5,
		0xe0, 0x62, 0x70, 0x31, 0xb8, 0x18, 0x5c, 0x0c, 0x2e, 0x06, 0x17, 0x13, 0xe4, 0xe2, 0xc5, 0xe0,
		0x02, 0x40, 0x36, 0x05, 0x90, 0x17, 0x1c, 0x2d, 0x4b, 0x9e, 0x92, 0x17, 0xd9, 0x0c, 0x54, 0x06,
		0x2a, 0x03, 0x95, 0x81, 0xca, 0x40, 0x65, 0xa0, 0x32, 0x50, 0x19, 0xa8, 0x4c, 0x17, 0x95, 0x17,
		0xd1, 0x0b, 0x78, 0x99, 0x3e, 0x2f, 0x0f, 0xdb, 0x90, 0x30, 0x1a, 0x47, 0xe6, 0xd1, 0xa4, 0x60,
		0x0f, 0x14, 0x0c, 0x0a, 0x06, 0x05, 0x83, 0x82, 0x41, 0xc1, 0xc8, 0xac, 0x8b, 0x5b, 0x91, 0xda,
		0xe2, 0xa1, 0xd8, 0x30, 0xd6, 0x7a, 0xe2, 0x81, 0x12, 0x21, 0x6f, 0x39, 0xca, 0x77, 0x7a, 0x9c,
		0x07, 0x74, 0x3b, 0x97, 0x49, 0x17, 0xbd, 0xc0, 0x66, 0xa2, 0xc1, 0x4b, 0x53, 0x26, 0x23, 0x0f,
		0x0a, 0x26, 0x00, 0x83, 0x59, 0xe0, 0x60, 0x0a, 0x40, 0x18, 0x07, 0x12, 0xc6, 0x01, 0x85, 0x71,
		0x60, 0x41, 0x13, 0x30, 0x88, 0x82, 0x46, 0xdc, 0xba, 0x64, 0x65, 0xb7, 0xb9, 0x7e, 0x53, 0xf4,
		0x26, 0xd5, 0x55, 0xca, 0xfd, 0xe6, 0x64, 0xa8, 0x5f, 0x24, 0x6c, 0xe3, 0xb8, 0xcd, 0xef, 0x49,
		0xf7, 0x3b, 0xb4, 0xf3, 0xce, 0x07, 0xcf, 0x7c, 0xca, 0x1a, 0xe0, 0x9b, 0x73, 0x3e, 0x7a, 0x64,
		0x80, 0xad, 0x15, 0xa6, 0x14, 0x0f, 0x24, 0x79, 0x77, 0x8d, 0x0d, 0xde, 0xbb, 0x3f, 0x70, 0x8a,
		0xb5, 0xb7, 0x7b, 0xcf, 0x29, 0xd6, 0x46, 0x4f, 0xbd, 0xe8, 0xcb, 0x6b, 0x66, 0xf0, 0x96, 0xb9,
		0x3f, 0x70, 0xb2, 0xe3, 0xab, 0x99, 0xdc, 0xfd, 0x81, 0x93, 0xab, 0xed, 0xef, 0xfd, 0xfd, 0xf7,
		0xe7, 0x55, 0xdf, 0xb3, 0xff, 0x7a, 0x38, 0xb0, 0xc9, 0xdf, 0x8e, 0x9a, 0x09, 0xee, 0x75, 0x7d,
		0x53, 0xfe, 0xcb, 0x38, 0x1f, 0xfb, 0x67, 0x2f, 0x2d, 0x2f, 0xdb, 0xff, 0xd3, 0x00, 0x3f, 0x23,
		0x6d, 0xe1, 0xe0, 0x13, 0xd2, 0xec, 0xc6, 0xd2, 0x6c, 0x1e, 0x69, 0x16, 0x69, 0x76, 0x94, 0x66,
		0xa3, 0xde, 0x8c, 0x39, 0xed, 0x92, 0x73, 0x5e, 0x7b, 0xf5, 0x3e, 0x65, 0x07, 0xc7, 0xfb, 0xaf,
		0x85, 0xc1, 0xc7, 0x8b, 0x6f, 0x8b, 0x5e, 0xe6, 0x7d, 0x2a, 0x0c, 0x8e, 0x97, 0xfc, 0x24, 0x3f,
		0x38, 0xfe, 0xc5, 0xdf, 0x91, 0x1b, 0xec, 0xcd, 0xbd, 0x74, 0x78, 0x3d, 0xb3, 0xec, 0x0d, 0xd9,
		0x25, 0x6f, 0x38, 0x5c, 0xf6, 0x86, 0xc3, 0x25, 0x6f, 0x58, 0x6a, 0x52, 0x66, 0xc9, 0x1b, 0x72,
		0x83, 0xb7, 0xb9, 0xd7, 0xef, 0x2d, 0x7e, 0x69, 0x7e, 0xb0, 0xff, 0xb6, 0xec, 0x67, 0x85, 0xc1,
		0xdb, 0xf1, 0xfe, 0x3e, 0xc0, 0x63, 0xe7, 0xc1, 0x03, 0x61, 0x97, 0x7e, 0xd8, 0x01, 0xc4, 0xb6,
		0x52, 0x17, 0xa4, 0x7b, 0xdf, 0xa8, 0x2a, 0x96, 0x17, 0x22, 0x54, 0x25, 0xa5, 0x02, 0xda, 0xaa,
		0xe5, 0xa5, 0x90, 0x67, 0x5d, 0xfe, 0xc8, 0xa5, 0x0a, 0xe9, 0xd6, 0xcd, 0x46, 0x96, 0xb2, 0xe7,
		0x19, 0x4b, 0xbd, 0xa3, 0x6c, 0x36, 0x5f, 0xc8, 0x66, 0x0f, 0x0a, 0x87, 0x85, 0x83, 0x62, 0x2e,
		0xe7, 0xe5, 0xbd, 0x1c, 0x61, 0xe3, 0xaf, 0x83, 0x16, 0x0f, 0x78, 0xeb, 0xe4, 0xc5, 0x3e, 0xb6,
		0x64, 0xbf, 0xdb, 0x35, 0xc1, 0xd4, 0xbb, 0x30, 0x2a, 0x9e, 0xb7, 0x59, 0x37, 0xe4, 0x7f, 0xa0,
		0xa7, 0x34, 0xb4, 0x2f, 0xb2, 0x99, 0x52, 0x81, 0x23, 0x64, 0x8b, 0x3f, 0x1b, 0x30, 0x13, 0x62,
		0x6a, 0x2b, 0x66, 0x40, 0xac, 0x63, 0x1e, 0x66, 0x40, 0x6c, 0xd0, 0x1b, 0x31, 0x03, 0x62, 0xa3,
		0x91, 0x83, 0x19, 0x10, 0x09, 0x1b, 0x8c, 0x19, 0x10, 0xdb, 0x3c, 0x9e, 0x30, 0x67, 0x06, 0x04,
		0xdd, 0x05, 0x48, 0x1f, 0xd3, 0x38, 0xc5, 0x85, 0x48, 0xd3, 0x54, 0x39, 0x5d, 0x90, 0xf4, 0x9f,
		0xff, 0x22, 0x70, 0x0a, 0xb9, 0x0a, 0xe3, 0x67, 0xe3, 0x45, 0x4c, 0x23, 0x98, 0x02, 0xbe, 0x1b,
		0x8b, 0xef, 0x0d, 0xd6, 0xfc, 0xde, 0xef, 0xd1, 0x47, 0xf7, 0xb1, 0x9d, 0xc0, 0x76, 0x60, 0x3b,
		0xb0, 0x1d, 0xd8, 0x0e, 0x6c, 0x07, 0xb6, 0x03, 0xdb, 0x8d, 0xc2, 0xf6, 0x86, 0xef, 0x77, 0x39,
		0x93, 0x26, 0x60, 0xbb, 0x07, 0xa0, 0x35, 0x17, 0x68, 0x79, 0xa8, 0x48, 0x9d, 0xbb, 0xb9, 0x3c,
		0x20, 0x26, 0x96, 0x02, 0x6a, 0x01, 0xb5, 0x80, 0x5a, 0x40, 0x2d, 0xa0, 0x16, 0x50, 0x0b, 0xa8,
		0x05, 0xd4, 0x02, 0x6a, 0x11, 0x14, 0xef, 0xdb, 0xb0, 0xe9, 0x3f, 0x3e, 0xf6, 0xa5, 0x50, 0x2f,
		0xa6, 0xcc, 0xb4, 0xf8, 0x68, 0x30, 0x10, 0x17, 0x88, 0x0b, 0xc4, 0x05, 0xe2, 0x02, 0x71, 0x81,
		0xb8, 0x40, 0x5c, 0x4c, 0xb7, 0x48, 0x06, 0x71, 0xb7, 0x65, 0xba, 0xc5, 0x84, 0x9e, 0x04, 0x0f,
		0xe3, 0xe7, 0x2f, 0x98, 0x71, 0xb1, 0x1d, 0x2c, 0xcf, 0x9f, 0x95, 0x63, 0x1c, 0xcf, 0x2f, 0x32,
		0x1a, 0x4c, 0x0f, 0xa6, 0x07, 0xd3, 0x83, 0xe9, 0xc1, 0xf4, 0x60, 0x7a, 0x30, 0x3d, 0x98, 0x1e,
		0x4c, 0xff, 0xb3, 0x7f, 0xb3, 0x04, 0x35, 0xe4, 0xfa, 0x77, 0x44, 0x05, 0xb6, 0xdf, 0x0e, 0xb6,
		0x17, 0xf2, 0x89, 0x75, 0x45, 0xcb, 0x09, 0x38, 0x0b, 0x7d, 0x49, 0x1f, 0xeb, 0x3f, 0xd8, 0x0b,
		0xa2, 0x07, 0xd1, 0x83, 0xe8, 0x41, 0xf4, 0x20, 0x7a, 0x10, 0x3d, 0x88, 0xde, 0xac, 0x6d, 0xa1,
		0x5b, 0x5c, 0x2a, 0xa1, 0x5e, 0x0c, 0xa1, 0x7a, 0xca, 0x9b, 0xa9, 0x94, 0xc7, 0xb7, 0xf2, 0x84,
		0x85, 0x06, 0x74, 0xf1, 0x13, 0x07, 0x28, 0x5f, 0x7d, 0x2b, 0x5d, 0x94, 0x4f, 0xeb, 0xd5, 0xeb,
		0xbb, 0xdb, 0xb3, 0x7a, 0xf5, 0xac, 0x74, 0x73, 0x7d, 0x45, 0xbd, 0xb7, 0xff, 0xc6, 0xba, 0x7d,
		0x1e, 0x1a, 0xb1, 0xef, 0xdb, 0xab, 0x19, 0x3b, 0xd3, 0x7d, 0xf4, 0x86, 0xd2, 0x4d, 0xfd, 0xe2,
		0xfa, 0xba, 0x42, 0x7f, 0xd3, 0xb4, 0xc1, 0x27, 0xb8, 0x40, 0x32, 0x2e, 0xf0, 0xe5, 0xe2, 0xee,
		0xe6, 0xf6, 0xac, 0x0a, 0x3f, 0xd8, 0x75, 0x3f, 0xb8, 0xbe, 0x3a, 0x3f, 0x3b, 0x85, 0x07, 0xec,
		0xae, 0x07, 0x5c, 0x57, 0xcb, 0x5f, 0xcb, 0x57, 0xa5, 0xdb, 0xeb, 0xaa, 0x01, 0x5e, 0x40, 0xda,
		0xc2, 0x1a, 0xc6, 0x77, 0x86, 0x5b, 0x45, 0x51, 0x3d, 0xee, 0xb2, 0x06, 0xef, 0xd2, 0x17, 0x8d,
		0x47, 0x66, 0x42, 0x2b, 0x5e, 0xc7, 0x3c, 0x68, 0xc5, 0x1b, 0x74, 0x44, 0x68, 0xc5, 0x1b, 0x8d,
		0x1c, 0x68, 0xc5, 0x09, 0x1b, 0x0c, 0xad, 0x78, 0x8b, 0xc7, 0x07, 0x06, 0x69, 0xc5, 0xa1, 0x0a,
		0x84, 0xec, 0x98, 0x20, 0x13, 0x1f, 0xc1, 0x03, 0x57, 0xb8, 0x6b, 0xfc, 0x59, 0x05, 0xcc, 0xe9,
		0xcb, 0x50, 0xb1, 0x46, 0x97, 0xb8, 0x2f, 0x06, 0xbc, 0xcd, 0x03, 0x2e, 0x9b, 0x38, 0x81, 0x71,
		0x83, 0x81, 0x5d, 0x3d, 0xff, 0x52, 0xc8, 0x1e, 0x66, 0x8e, 0xad, 0x93, 0xaf, 0x15, 0xeb, 0xb2,
		0x72, 0x71, 0xe3, 0x9c, 0xb0, 0x90, 0xb7, 0xac, 0x33, 0xf5, 0xc0, 0x03, 0xc9, 0x95, 0xf5, 0xad,
		0x72, 0x65, 0xc2, 0x91, 0x51, 0x86, 0x20, 0xd3, 0x22, 0x74, 0x9a, 0xfa, 0xf5, 0x27, 0x33, 0x6c,
		0x37, 0x8d, 0xa2, 0x16, 0xd2, 0xd4, 0x2f, 0x39, 0x3e, 0x34, 0xaf, 0x2d, 0xb5, 0xae, 0x06, 0xcd,
		0xcb, 0x54, 0x6e, 0x19, 0x89, 0x49, 0x19, 0x43, 0x44, 0xaf, 0x0c, 0x54, 0xaf, 0xb5, 0xcc, 0x83,
		0xea, 0xb5, 0x41, 0x4f, 0x84, 0xea, 0x95, 0x10, 0xba, 0x41, 0xf5, 0x4a, 0x9c, 0xd3, 0xa0, 0x7a,
		0x6d, 0x9b, 0xe6, 0x00, 0xd5, 0x6b, 0xe3, 0x59, 0x1c, 0xaa, 0xd7, 0x4a, 0x77, 0x0d, 0xaa, 0x57,
		0x12, 0x0f, 0xa8, 0x5e, 0x40, 0xa6, 0x5f, 0x47, 0x27, 0xa8, 0x5e, 0x3a, 0x68, 0x0a, 0xaa, 0xd7,
		0x2e, 0x5b, 0x07, 0xd5, 0xcb, 0x58, 0x6e, 0xb1, 0xbb, 0x2c, 0x54, 0xce, 0xa3, 0xdf, 0x12, 0x6d,
		0xc1, 0x5b, 0x26, 0x88, 0x5f, 0xb3, 0xe6, 0x42, 0x03, 0x5b, 0xc7, 0x3c, 0x68, 0x60, 0x1b, 0x74,
		0x48, 0x68, 0x60, 0x09, 0x81, 0x1c, 0x34, 0xb0, 0xc4, 0xa9, 0x0d, 0x1a, 0xd8, 0xb6, 0x29, 0x10,
		0xe6, 0x68, 0x60, 0x4a, 0x3c, 0x72, 0x25, 0x9a, 0xdf, 0xc3, 0x7c, 0xd6, 0x00, 0x21, 0xec, 0x88,
		0xb0, 0x89, 0x77, 0x52, 0xa8, 0x70, 0x78, 0x4b, 0x25, 0x93, 0x7e, 0xc8, 0x9b, 0xbe, 0x6c, 0x85,
		0x94, 0x6f, 0x69, 0x95, 0xc9, 0x0e, 0x54, 0xa7, 0x0d, 0xdc, 0xc8, 0x4b, 0x21, 0xcd, 0x91, 0x68,
		0xa2, 0x05, 0xd6, 0x74, 0x99, 0x73, 0xce, 0xde, 0xf3, 0x80, 0x35, 0x95, 0xf0, 0xe5, 0xa9, 0xe8,
		0x8c, 0xc2, 0xcb, 0x14, 0xc3, 0xaf, 0x78, 0x87, 0x29, 0xf1, 0x34, 0xbc, 0xd7, 0x6d, 0xd6, 0x0d,
		0x39, 0x56, 0x59, 0x6e, 0x22, 0xd4, 0xd8, 0xb3, 0x79, 0xa1, 0xe6, 0x1d, 0x65, 0xb3, 0xf9, 0x42,
		0x36, 0x7b, 0x50, 0x38, 0x2c, 0x1c, 0x14, 0x73, 0x39, 0x2f, 0x4f, 0x79, 0xb3, 0x0b, 0x44, 0x1f,
		0xf8, 0xda, 0x20, 0xeb, 0xa0, 0x79, 0x1a, 0xdb, 0xbb, 0xdb, 0x8f, 0xfd, 0xae, 0x12, 0x66, 0x9c,
		0xcc, 0x39, 0x35, 0x15, 0x5a, 0xe7, 0x3a, 0xe6, 0x41, 0xeb, 0xdc, 0xa0, 0x33, 0x42, 0xeb, 0xdc,
		0x68, 0xe4, 0x40, 0xeb, 0x4c, 0xd8, 0x60, 0x68, 0x9d, 0x5b, 0x3c, 0x3e, 0xc3, 0xd1, 0x9c, 0x09,
		0xa4, 0x71, 0x1c, 0xcd, 0x69, 0x30, 0xd6, 0xf6, 0x38, 0x0f, 0x1c, 0xd1, 0xa3, 0x0f, 0xb5, 0x13,
		0x43, 0x81, 0xb4, 0x40, 0x5a, 0x20, 0x2d, 0x90, 0x16, 0x48, 0x0b, 0xa4, 0x05, 0xd2, 0x9a, 0xb5,
		0xc9, 0x77, 0xcf, 0x61, 0xad, 0x56, 0xc0, 0xc3, 0xd0, 0x04, 0xaa, 0x2d, 0x12, 0xb6, 0x71, 0xdc,
		0xe6, 0xa8, 0x86, 0x6f, 0xcc, 0x33, 0x9f, 0xb2, 0x06, 0xf8, 0xe6, 0x9c, 0x8f, 0x1e, 0x19, 0x60,
		0x6b, 0x85, 0x29, 0xc5, 0x03, 0x69, 0xc4, 0x36, 0xe9, 0x91, 0xc1, 0x7b, 0xf7, 0x07, 0x4e, 0xb1,
		0xf6, 0x76, 0xef, 0x39, 0xc5, 0xda, 0xe8, 0xa9, 0x17, 0x7d, 0x79, 0xcd, 0x0c, 0xde, 0x32, 0xf7,
		0x07, 0x4e, 0x76, 0x7c, 0x35, 0x93, 0xbb, 0x3f, 0x70, 0x72, 0xb5, 0xfd, 0xbd, 0xbf, 0xff, 0xfe,
		0xbc, 0xea, 0x7b, 0xf6, 0x5f, 0x0f, 0x07, 0xf4, 0xd7, 0x36, 0xd4, 0x4c, 0x70, 0xaf, 0xeb, 0x9b,
		0xf2, 0x5f, 0xc6, 0xf9, 0xd8, 0x3f, 0x7b, 0x69, 0x79, 0xd9, 0xfe, 0x9f, 0x06, 0xf8, 0x19, 0xed,
		0x7a, 0xf2, 0x27, 0xa4, 0xd9, 0x8d, 0xa5, 0xd9, 0x3c, 0xd2, 0x2c, 0xd2, 0xec, 0x28, 0xcd, 0x46,
		0xbd, 0x19, 0x73, 0xda, 0x25, 0xe7, 0xbc, 0xf6, 0xea, 0x7d, 0xca, 0x0e, 0x8e, 0xf7, 0x5f, 0x0b,
		0x83, 0x8f, 0x17, 0xdf, 0x16, 0xbd, 0xcc, 0xfb, 0x54, 0x18, 0x1c, 0x2f, 0xf9, 0x49, 0x7e, 0x70,
		0xfc, 0x8b, 0xbf, 0x23, 0x37, 0xd8, 0x9b, 0x7b, 0xe9, 0xf0, 0x7a, 0x66, 0xd9, 0x1b, 0xb2, 0x4b,
		0xde, 0x70, 0xb8, 0xec, 0x0d, 0x87, 0x4b, 0xde, 0xb0, 0xd4, 0xa4, 0xcc, 0x92, 0x37, 0xe4, 0x06,
		0x6f, 0x73, 0xaf, 0xdf, 0x5b, 0xfc, 0xd2, 0xfc, 0x60, 0xff, 0x6d, 0xd9, 0xcf, 0x0a, 0x83, 0xb7,
		0xe3, 0xfd, 0x7d, 0x80, 0xc7, 0xce, 0x83, 0x07, 0xc2, 0x2e, 0xfd, 0xb0, 0x03, 0x88, 0x6d, 0xa5,
		0x2e, 0x68, 0x61, 0x62, 0x9f, 0xc9, 0x28, 0x3d, 0x2a, 0x2c, 0xf6, 0x98, 0x7a, 0x70, 0x44, 0xcb,
		0x90, 0x32, 0xe8, 0xc4, 0x5a, 0xd4, 0x42, 0xd7, 0x31, 0x0f, 0xb5, 0xd0, 0x0d, 0xfa, 0x23, 0x6a,
		0xa1, 0x1b, 0x8d, 0x1c, 0xd4, 0x42, 0x13, 0x36, 0x18, 0xb5, 0xd0, 0x2d, 0x96, 0xc4, 0x0c, 0xaa,
		0x85, 0xf6, 0x85, 0x54, 0x87, 0x19, 0x03, 0xea, 0xa0, 0x05, 0xac, 0x0a, 0xfe, 0xcd, 0x07, 0x56,
		0x05, 0x6f, 0xd6, 0x58, 0xac, 0x0a, 0x4e, 0xab, 0xaf, 0xc2, 0xaa, 0xe0, 0x04, 0x42, 0xcd, 0xc4,
		0x55, 0xc1, 0xd9, 0x4c, 0x31, 0x5b, 0xcc, 0x17, 0x32, 0x45, 0xac, 0x05, 0x46, 0xcc, 0x99, 0x00,
		0xa8, 0xf4, 0xad, 0x83, 0x64, 0x68, 0x6c, 0x9f, 0x6e, 0x87, 0x91, 0x9c, 0x30, 0xa9, 0x64, 0x3b,
		0x6d, 0xf6, 0x28, 0xba, 0x2f, 0xf4, 0xb5, 0xc3, 0xc5, 0x66, 0x43, 0x44, 0x5c, 0xc7, 0x3c, 0x88,
		0x88, 0x1b, 0x74, 0x4c, 0x88, 0x88, 0x1b, 0x8d, 0x1c, 0x88, 0x88, 0x09, 0x1b, 0x0c, 0x11, 0x71,
		0x8b, 0x47, 0x6b, 0x26, 0x2d, 0xa8, 0x68, 0x71, 0xa9, 0x84, 0x7a, 0x09, 0x78, 0xdb, 0x84, 0x15,
		0x15, 0x84, 0x07, 0x8f, 0x76, 0x79, 0x7c, 0x2b, 0x4f, 0x58, 0x68, 0x40, 0x17, 0x3f, 0x71, 0x80,
		0xd2, 0x79, 0xb9, 0x7e, 0x33, 0xfc, 0xef, 0xf6, 0x7f, 0x2b, 0x67, 0xd4, 0xbb, 0xf9, 0x48, 0x4c,
		0x08, 0x8d, 0x98, 0x2a, 0x65, 0x88, 0x3c, 0x33, 0x71, 0x83, 0x72, 0xe5, 0x5b, 0xb6, 0x7e, 0x7e,
		0x71, 0xfd, 0xff, 0x6e, 0x2a, 0x67, 0x5f, 0x6c, 0xc8, 0x74, 0xbb, 0xe9, 0x00, 0x17, 0xa5, 0x93,
		0xb3, 0x8b, 0xb3, 0xd3, 0xfa, 0xdd, 0x55, 0xf9, 0x4b, 0xe9, 0xe6, 0x16, 0x7e, 0xb0, 0xa3, 0x7e,
		0x80, 0xf6, 0xdf, 0xe5, 0xf6, 0xcf, 0xa3, 0x1f, 0x80, 0x1f, 0x44, 0x7e, 0x80, 0xf6, 0xdf, 0xd9,
		0xf6, 0xbf, 0xc8, 0x7c, 0xab, 0x5c, 0xd5, 0xcf, 0xcc, 0x38, 0x40, 0x0b, 0xad, 0x9f, 0x48, 0xeb,
		0x7f, 0xab, 0x5c, 0xdc, 0xa0, 0xf5, 0x77, 0xb0, 0xf5, 0x0f, 0x87, 0xad, 0x1f, 0x91, 0xe0, 0xe5,
		0xdd, 0xc5, 0x2d, 0x72, 0x00, 0xfc, 0x00, 0x24, 0x00, 0x2f, 0xc8, 0xa3, 0x37, 0x80, 0x1f, 0x60,
		0x5c, 0xb0, 0xe3, 0x5e, 0x50, 0xbe, 0xfa, 0xbf, 0x37, 0xb7, 0xa5, 0xdb, 0x33, 0x34, 0xfe, 0x0e,
		0x37, 0x7e, 0xfd, 0xa6, 0x72, 0x0e, 0x07, 0xd8, 0x65, 0x07, 0x80, 0x30, 0xb0, 0x93, 0x0e, 0x70,
		0x53, 0xbd, 0x3d, 0xab, 0x57, 0xae, 0x2f, 0xca, 0x5f, 0xfe, 0x37, 0x1a, 0x18, 0xc0, 0x07, 0x76,
		0xde, 0x07, 0xf2, 0xf0, 0x81, 0xdd, 0xf3, 0x81, 0x6f, 0x95, 0x2b, 0xb3, 0x26, 0x0c, 0x90, 0xb6,
		0xb0, 0x86, 0x79, 0x7f, 0x86, 0x5b, 0x45, 0x78, 0x8d, 0x41, 0xe0, 0xf7, 0x15, 0x77, 0x5a, 0x22,
		0x54, 0x42, 0x76, 0xfa, 0x22, 0x7c, 0xe0, 0x81, 0x31, 0x0b, 0x0d, 0x16, 0xd9, 0x8e, 0xd5, 0x06,
		0xeb, 0x98, 0x87, 0xd5, 0x06, 0x1b, 0xf4, 0x4e, 0xac, 0x36, 0xd8, 0x68, 0xe4, 0x60, 0xb5, 0x41,
		0xc2, 0x06, 0x63, 0xb5, 0xc1, 0x16, 0x8f, 0x22, 0x0c, 0x5a, 0x6d, 0x60, 0x4e, 0x3a, 0xb7, 0x70,
		0x8e, 0xc3, 0x4e, 0x0d, 0x6e, 0xa7, 0xe0, 0xa9, 0x02, 0x21, 0x3b, 0xd8, 0x5a, 0x7a, 0xc3, 0x70,
		0x67, 0xfc, 0x09, 0x0e, 0xa3, 0xcd, 0x62, 0xef, 0x3d, 0x27, 0x37, 0xfe, 0x3e, 0x3b, 0x78, 0xcb,
		0x4f, 0x37, 0xcc, 0x7f, 0x3d, 0x1c, 0xbc, 0xe5, 0x73, 0x33, 0xdf, 0x67, 0x86, 0xdf, 0x0f, 0x2f,
		0x64, 0xc6, 0x3b, 0xea, 0xe7, 0x73, 0xb9, 0xc3, 0xd1, 0x9e, 0xfa, 0xc7, 0x8b, 0x7e, 0xf9, 0x51,
		0xf4, 0xcb, 0x0f, 0xc7, 0xdf, 0x17, 0x07, 0x6f, 0xd9, 0xfb, 0x03, 0x6f, 0xfc, 0xdd, 0xd1, 0xe0,
		0x2d, 0x9b, 0xb9, 0x3f, 0x70, 0x8e, 0xc6, 0xdf, 0x17, 0x86, 0xdf, 0x17, 0xef, 0x0f, 0xe2, 0x97,
		0xe7, 0xa3, 0x0b, 0xd9, 0x99, 0x97, 0xe4, 0x46, 0x57, 0x8a, 0xd1, 0x27, 0xc6, 0x06, 0x8f, 0x36,
		0xe1, 0xb8, 0x3f, 0x70, 0xf2, 0x53, 0xab, 0xc7, 0x1b, 0x73, 0x4c, 0x3f, 0x2d, 0x13, 0x5f, 0x9b,
		0xf9, 0xcc, 0xf8, 0xd2, 0xe8, 0x37, 0x62, 0x03, 0xe8, 0xcd, 0x84, 0xc5, 0xb6, 0x9c, 0x3c, 0x81,
		0xe8, 0x78, 0x17, 0x1d, 0xd8, 0xa8, 0x79, 0x4b, 0x59, 0x1b, 0x40, 0x03, 0xa0, 0xb1, 0x70, 0x24,
		0xd5, 0x4f, 0x0e, 0x0b, 0x3a, 0x4e, 0x32, 0x37, 0x80, 0x3a, 0x40, 0x1d, 0x86, 0xbb, 0x30, 0xd0,
		0x00, 0x68, 0x00, 0x34, 0x00, 0x1a, 0x10, 0xd7, 0x3a, 0x0c, 0x1b, 0x70, 0x81, 0x3a, 0x40, 0x1d,
		0x29, 0x6a, 0x1d, 0x88, 0x0e, 0x00, 0xcd, 0x06, 0x81, 0x06, 0x3b, 0xcc, 0x1a, 0x7e, 0xbf, 0x28,
		0xce, 0xfe, 0x7a, 0x62, 0x5d, 0xd1, 0x1a, 0x4d, 0xa0, 0xa2, 0x3f, 0xdd, 0x6b, 0xd6, 0x58, 0xcc,
		0xef, 0x5a, 0xc7, 0x3c, 0xcc, 0xef, 0xda, 0xa0, 0x3b, 0x62, 0x7e, 0xd7, 0x46, 0x23, 0x07, 0xf3,
		0xbb, 0x12, 0x36, 0x18, 0xf3, 0xbb, 0xb6, 0x58, 0x58, 0x32, 0x68, 0x7e, 0x57, 0xc3, 0xf7, 0xbb,
		0x9c, 0x49, 0x13, 0xe6, 0x74, 0x79, 0x40, 0x5b, 0x03, 0x2d, 0x22, 0x16, 0xa2, 0x76, 0x49, 0x4a,
		0x5f, 0x31, 0x25, 0x7c, 0x9a, 0x87, 0x5f, 0xd9, 0x61, 0xf3, 0x81, 0x3f, 0xb2, 0x1e, 0x53, 0x0f,
		0xc3, 0xf0, 0x74, 0xfd, 0x1e, 0x97, 0xcd, 0x08, 0x14, 0x1d, 0xc9, 0xd5, 0x0f, 0x3f, 0xf8, 0xee,
		0x08, 0x19, 0x2a, 0x26, 0x9b, 0xdc, 0xfd, 0x78, 0x21, 0x9c, 0xbb, 0xe2, 0xf6, 0x02, 0x5f, 0xf9,
		0x4d, 0xbf, 0x1b, 0xc6, 0xcf, 0xdc, 0x46, 0xa7, 0xe7, 0x06, 0xa2, 0xe1, 0xb2, 0xb6, 0x70, 0x42,
		0xd6, 0x16, 0x61, 0xfc, 0xcc, 0xed, 0x66, 0x9e, 0x7a, 0xd2, 0xe1, 0x4f, 0x3d, 0xe9, 0x76, 0x47,
		0x49, 0xc9, 0x8d, 0x00, 0x3f, 0x74, 0x17, 0x4c, 0x03, 0x75, 0xd5, 0x4b, 0x8f, 0x3b, 0x6d, 0xbf,
		0x1f, 0x38, 0x5c, 0x3d, 0xf0, 0x40, 0x72, 0xe5, 0x84, 0xbc, 0x33, 0x4c, 0x6a, 0x33, 0x3f, 0x8a,
		0xde, 0xe8, 0x0e, 0xff, 0x9c, 0x30, 0xfa, 0xdf, 0x0d, 0x15, 0x53, 0x9c, 0x56, 0x9e, 0xa3, 0x13,
		0x30, 0x84, 0x82, 0xc5, 0xee, 0xcb, 0xef, 0xd2, 0xff, 0x21, 0x1d, 0xa6, 0x54, 0x20, 0x1a, 0x43,
		0x2f, 0x20, 0x17, 0x30, 0xd3, 0x83, 0x15, 0xe7, 0x6d, 0x25, 0xd6, 0xed, 0x4c, 0x92, 0x18, 0x31,
		0xb3, 0xa8, 0x8e, 0x41, 0x29, 0x8f, 0x3d, 0xcd, 0x18, 0x73, 0x52, 0x1f, 0x6b, 0x1a, 0x33, 0xc6,
		0x34, 0x66, 0x6c, 0x69, 0xcc, 0x98, 0x12, 0x80, 0xfa, 0xb3, 0x56, 0x3c, 0x15, 0x34, 0x17, 0xfb,
		0xce, 0x27, 0x59, 0xfa, 0x22, 0xf5, 0xbc, 0xc9, 0xb4, 0xa5, 0x6a, 0x0f, 0x52, 0xf5, 0xd6, 0xe1,
		0x82, 0x59, 0xd8, 0x60, 0x0a, 0x3e, 0x18, 0x87, 0x11, 0xc6, 0xe1, 0x84, 0x71, 0x58, 0x41, 0x13,
		0x2f, 0x88, 0x62, 0x06, 0x79, 0xdc, 0x88, 0x0d, 0x1c, 0xe6, 0x6e, 0x47, 0x51, 0x17, 0xd4, 0xdf,
		0xf5, 0xf0, 0x53, 0x93, 0x89, 0x87, 0x36, 0xed, 0x0a, 0xb9, 0x31, 0xf8, 0x61, 0x12, 0x86, 0x98,
		0x89, 0x23, 0xa6, 0x61, 0x89, 0xb1, 0x78, 0x62, 0x2c, 0xa6, 0x18, 0x8b, 0x2b, 0xb4, 0xb1, 0x85,
		0x38, 0xbe, 0xc4, 0xad, 0x7e, 0x6b, 0x02, 0x20, 0xbc, 0xeb, 0x77, 0xbb, 0x9c, 0xb5, 0x69, 0x9f,
		0xe1, 0x3a, 0xa7, 0x4e, 0x14, 0xcc, 0x58, 0xcb, 0x11, 0x55, 0x4e, 0x3f, 0x7f, 0x1e, 0x95, 0x1a,
		0xdd, 0x29, 0x8c, 0x61, 0x4a, 0xf1, 0xb6, 0x85, 0xbe, 0x3d, 0xaa, 0x26, 0x1b, 0x33, 0x30, 0x18,
		0x99, 0x6b, 0xc6, 0xa0, 0xc0, 0xc3, 0xa0, 0x00, 0x83, 0x02, 0x0c, 0x0a, 0x30, 0x28, 0xc0, 0xa0,
		0x00, 0x54, 0x60, 0xe6, 0xa0, 0x80, 0xba, 0xb6, 0x19, 0x1b, 0x1a, 0x31, 0x6a, 0x97, 0x4b, 0x73,
		0xba, 0xb0, 0x77, 0x52, 0xe7, 0xd0, 0x72, 0x43, 0x3a, 0x02, 0x33, 0x14, 0x4f, 0xe3, 0x20, 0xc7,
		0x44, 0xd8, 0x31, 0x1b, 0x7a, 0x4c, 0x85, 0x1f, 0xe3, 0x21, 0xc8, 0x78, 0x18, 0x32, 0x1e, 0x8a,
		0xcc, 0x80, 0x23, 0x43, 0x20, 0x29, 0xf6, 0x06, 0x63, 0x14, 0xd4, 0xb9, 0x7e, 0xbb, 0x2f, 0xa4,
		0xf2, 0xf2, 0x26, 0xf5, 0xd9, 0x63, 0x0a, 0xc9, 0x1b, 0x64, 0x72, 0x95, 0xc9, 0x0e, 0x37, 0x66,
		0x17, 0x90, 0xc9, 0xc3, 0xac, 0x9c, 0x18, 0xdd, 0xe8, 0x4b, 0x21, 0x8d, 0x4b, 0xe6, 0xb1, 0xf1,
		0xdf, 0x58, 0xb7, 0xcf, 0xcd, 0xc1, 0xd5, 0x39, 0xfb, 0xcf, 0x03, 0xd6, 0x54, 0xc2, 0x97, 0xa7,
		0xa2, 0x23, 0x54, 0x68, 0xf0, 0x1f, 0x72, 0xc5, 0x3b, 0x4c, 0x89, 0xa7, 0x61, 0x5b, 0xb4, 0x59,
		0x37, 0xe4, 0xc6, 0xfd, 0x15, 0x83, 0x4f, 0x06, 0x86, 0x2e, 0x7b, 0x36, 0x3f, 0x74, 0xf3, 0xb9,
		0xdc, 0x61, 0x0e, 0xe1, 0x8b, 0xf0, 0xdd, 0x01, 0x36, 0x37, 0xcf, 0xda, 0x1a, 0xc6, 0x3c, 0x1b,
		0x0c, 0x33, 0xfe, 0xac, 0x02, 0xe6, 0xf4, 0x65, 0xa8, 0x58, 0xa3, 0x6b, 0xd8, 0xe8, 0x27, 0xe0,
		0x6d, 0x1e, 0x70, 0xd9, 0x04, 0x94, 0xa7, 0x38, 0xd4, 0xac, 0x9e, 0x7f, 0xb1, 0xb2, 0x99, 0x82,
		0x67, 0x39, 0x56, 0xc9, 0x3a, 0xf1, 0x83, 0x16, 0x0f, 0xac, 0xaf, 0x4c, 0xf1, 0x1f, 0xec, 0xc5,
		0xaa, 0x8c, 0x57, 0xd8, 0x5b, 0x59, 0x6b, 0xef, 0xe4, 0x6b, 0xc5, 0xc9, 0xee, 0xdb, 0x06, 0x32,
		0x8c, 0xa1, 0x72, 0xe2, 0x74, 0x68, 0x3d, 0x95, 0x15, 0xa7, 0x11, 0x62, 0x28, 0x05, 0x98, 0xae,
		0x30, 0xc6, 0x7f, 0xc8, 0xac, 0xd2, 0xb8, 0x62, 0x08, 0x81, 0x7c, 0x60, 0xad, 0x49, 0xe4, 0x83,
		0x93, 0xd5, 0x37, 0xd0, 0x5f, 0x98, 0xb3, 0xe6, 0x67, 0x8e, 0x10, 0x4c, 0x59, 0xfb, 0x33, 0x4d,
		0x98, 0xa8, 0x88, 0x27, 0x6a, 0x30, 0x2a, 0xe2, 0x40, 0xd8, 0x95, 0xd1, 0x15, 0x15, 0x71, 0xed,
		0x9c, 0x8a, 0x8a, 0xf8, 0x0e, 0x13, 0x88, 0x65, 0x7e, 0x45, 0xfc, 0xc8, 0xc0, 0x82, 0x78, 0x0e,
		0x05, 0xf1, 0x84, 0x1f, 0x28, 0x88, 0xa7, 0x6b, 0x3c, 0x0a, 0xe2, 0x54, 0xba, 0x46, 0x14, 0xc4,
		0x35, 0x84, 0xee, 0x36, 0x14, 0xc4, 0x33, 0x39, 0x94, 0xc3, 0x11, 0xbc, 0xbb, 0x00, 0xe6, 0xe6,
		0x59, 0x8b, 0x72, 0xf8, 0x26, 0xc3, 0x0c, 0xe5, 0x70, 0x20, 0xf9, 0x4a, 0xe3, 0x4c, 0x94, 0xc3,
		0xc9, 0x0f, 0xac, 0x51, 0x0e, 0xa7, 0xf7, 0x87, 0xa0, 0x1c, 0x0e, 0x6b, 0x77, 0x84, 0x7c, 0x50,
		0x0e, 0xdf, 0x40, 0x7f, 0x11, 0xd5, 0x94, 0x9f, 0xc6, 0xc3, 0x51, 0x13, 0xeb, 0xe1, 0x23, 0xdb,
		0x51, 0x10, 0x4f, 0xc2, 0x5c, 0x14, 0xc4, 0x53, 0xf4, 0x66, 0x14, 0xc4, 0x35, 0xc1, 0x2b, 0x0a,
		0xe2, 0xda, 0x49, 0x15, 0x05, 0xf1, 0x1d, 0x66, 0x10, 0xcb, 0xec, 0x82, 0x78, 0x43, 0x48, 0x16,
		0xbc, 0x18, 0x58, 0x11, 0x2f, 0x1a, 0x64, 0xf2, 0x05, 0x97, 0x9d, 0x68, 0xf3, 0x4d, 0xe8, 0x6f,
		0x09, 0xdf, 0xe9, 0xad, 0x28, 0x89, 0x7b, 0xa8, 0xaa, 0x69, 0xee, 0x1c, 0x51, 0x12, 0xd7, 0x10,
		0xba, 0x58, 0x23, 0x8e, 0xf0, 0x45, 0xf8, 0x5a, 0x90, 0x86, 0x13, 0x7b, 0xa0, 0x28, 0xbe, 0xc9,
		0x30, 0x43, 0x51, 0x1c, 0x50, 0xbe, 0xd2, 0x58, 0x13, 0x45, 0x71, 0xf2, 0x63, 0x6b, 0x14, 0xc5,
		0xe9, 0xfd, 0x21, 0x28, 0x8a, 0xc3, 0xda, 0x1d, 0x21, 0x1f, 0x14, 0xc5, 0x37, 0xc3, 0x65, 0x5c,
		0xb6, 0x78, 0xcb, 0xbc, 0x92, 0x78, 0x6c, 0x39, 0x0a, 0xe2, 0x49, 0x98, 0x8b, 0x82, 0x78, 0x8a,
		0xbe, 0x8c, 0x82, 0xb8, 0x26, 0x70, 0x45, 0x41, 0x5c, 0x3b, 0xa5, 0xa2, 0x20, 0xbe, 0xc3, 0xfc,
		0x61, 0x19, 0x5e, 0x10, 0xf7, 0xfd, 0x2e, 0x67, 0xd2, 0xc0, 0x8a, 0xb8, 0xe7, 0xc1, 0x85, 0x37,
		0x8b, 0xd1, 0x90, 0x37, 0x53, 0x7f, 0x40, 0xde, 0x04, 0x1d, 0xa6, 0x41, 0x89, 0x90, 0x37, 0x29,
		0x82, 0x23, 0xe4, 0x4d, 0x58, 0xbb, 0xce, 0x03, 0xf2, 0xe6, 0xce, 0xb0, 0x99, 0xed, 0xf7, 0x94,
		0xf0, 0x25, 0xeb, 0x9a, 0x27, 0x6f, 0xc6, 0x96, 0x43, 0xde, 0x4c, 0xc2, 0x5c, 0xc8, 0x9b, 0x69,
		0xfa, 0x32, 0xe4, 0x4d, 0x3d, 0xe0, 0x0a, 0x79, 0x53, 0x3b, 0xa5, 0x42, 0xde, 0xdc, 0x61, 0xfe,
		0xb0, 0x20, 0x6f, 0xea, 0xc1, 0x10, 0xc8, 0x9b, 0x1b, 0xbd, 0xab, 0x90, 0x37, 0x75, 0x3c, 0x20,
		0x6f, 0x82, 0x0e, 0xd3, 0xa0, 0x44, 0xc8, 0x9b, 0x14, 0xc1, 0x11, 0xf2, 0x26, 0xac, 0x5d, 0xe7,
		0x01, 0x79, 0x73, 0x67, 0xd8, 0xcc, 0xee, 0xb1, 0x40, 0x09, 0x13, 0xd5, 0xcd, 0x89, 0xe1, 0x10,
		0x37, 0x93, 0x30, 0x17, 0xe2, 0x66, 0x8a, 0xae, 0x0c, 0x71, 0x53, 0x13, 0xb6, 0x42, 0xdc, 0xd4,
		0xce, 0xa8, 0x10, 0x37, 0x77, 0x98, 0x3e, 0x2c, 0x88, 0x9b, 0x7a, 0x30, 0x04, 0xe2, 0xe6, 0x46,
		0xef, 0x2a, 0xc4, 0x4d, 0x1d, 0x0f, 0x88, 0x9b, 0xa0, 0xc3, 0x34, 0x28, 0x11, 0xe2, 0x26, 0x45,
		0x70, 0x84, 0xb8, 0x09, 0x6b, 0xd7, 0x79, 0x40, 0xdc, 0xdc, 0x19, 0x36, 0xb3, 0x55, 0xc0, 0x64,
		0x28, 0xc6, 0x7b, 0x73, 0x19, 0xa6, 0x6f, 0xce, 0xd8, 0x0e, 0x89, 0x33, 0x09, 0x73, 0x21, 0x71,
		0xa6, 0xe8, 0xcd, 0x90, 0x38, 0x35, 0xc1, 0x2b, 0x24, 0x4e, 0xed, 0xa4, 0x0a, 0x89, 0x73, 0x87,
		0x19, 0xc4, 0x82, 0xc4, 0xa9, 0x07, 0x43, 0x20, 0x71, 0x6e, 0xf4, 0xae, 0x42, 0xe2, 0xd4, 0xf1,
		0x80, 0xc4, 0x09, 0x3a, 0x4c, 0x83, 0x12, 0x21, 0x71, 0x52, 0x04, 0x47, 0x48, 0x9c, 0xb0, 0x76,
		0x9d, 0x07, 0x24, 0xce, 0x5d, 0xb0, 0x90, 0x38, 0x39, 0xda, 0x25, 0x29, 0x7d, 0xc5, 0x94, 0xf0,
		0xcd, 0x38, 0x22, 0xc7, 0x0e, 0x9b, 0x0f, 0xfc, 0x91, 0xf5, 0x58, 0x74, 0x72, 0x92, 0xed, 0xfa,
		0x3d, 0x2e, 0x9b, 0x91, 0x44, 0xe8, 0x48, 0xae, 0x7e, 0xf8, 0xc1, 0x77, 0x47, 0x0c, 0xe9, 0x57,
		0x36, 0xb9, 0xfb, 0xf1, 0x42, 0x38, 0x77, 0xc5, 0xed, 0x8d, 0xfb, 0xe7, 0x30, 0x7e, 0xe6, 0x36,
		0x3a, 0x3d, 0x37, 0x10, 0x0d, 0x97, 0xb5, 0x85, 0x13, 0xb2, 0xb6, 0x08, 0xe3, 0x67, 0x6e, 0x37,
		0xf3, 0xd4, 0x93, 0x0e, 0x7f, 0xea, 0x49, 0xb7, 0x3b, 0x92, 0x0b, 0xdc, 0xc0, 0xef, 0x2b, 0x1e,
		0x8e, 0xbe, 0x38, 0x2d, 0x11, 0x2a, 0x21, 0x3b, 0x7d, 0x11, 0x3e, 0xf0, 0xc0, 0x55, 0x2f, 0x3d,
		0xee, 0xb4, 0xfd, 0x7e, 0xe0, 0x70, 0xf5, 0xc0, 0x03, 0xc9, 0x95, 0x13, 0xf2, 0xce, 0x30, 0x6b,
		0xcc, 0xfc, 0x28, 0x7a, 0xa3, 0x3b, 0xfc, 0x73, 0xc2, 0xe8, 0x7f, 0xb7, 0x2f, 0xbf, 0x4b, 0xff,
		0x87, 0x74, 0x98, 0x52, 0x81, 0x68, 0x44, 0xbf, 0x7c, 0xee, 0x92, 0x1b, 0x2a, 0xa6, 0x38, 0xed,
		0x4c, 0x42, 0x37, 0x2a, 0x69, 0x5a, 0x46, 0xb4, 0x9f, 0x18, 0xe2, 0x67, 0x7c, 0x2e, 0xed, 0xd0,
		0x6d, 0x89, 0xa2, 0xa7, 0x7d, 0x21, 0x42, 0x55, 0x52, 0x2a, 0x20, 0xdd, 0x8b, 0xd9, 0x97, 0x42,
		0x9e, 0x75, 0xf9, 0xb0, 0x0f, 0x20, 0x7e, 0x94, 0x8e, 0x7d, 0xc9, 0x9e, 0x67, 0x2c, 0xf5, 0x8e,
		0xb2, 0xd9, 0x7c, 0x21, 0x9b, 0x3d, 0x28, 0x1c, 0x16, 0x0e, 0x8a, 0xb9, 0x9c, 0x97, 0xf7, 0x08,
		0x1f, 0x68, 0x64, 0x5f, 0x0f, 0x21, 0x9c, 0xb7, 0x4e, 0x86, 0xae, 0x2b, 0xfb, 0xdd, 0xae, 0x09,
		0xa6, 0xde, 0x85, 0x3c, 0x20, 0x7d, 0x36, 0x11, 0xd5, 0x1e, 0xca, 0x10, 0x82, 0x01, 0xb9, 0xf4,
		0x15, 0x65, 0xe1, 0xc2, 0x0e, 0x55, 0xd0, 0x6f, 0x2a, 0x39, 0x16, 0xc6, 0xae, 0x46, 0x37, 0xbc,
		0x3c, 0xbe, 0xdf, 0xf5, 0xc9, 0x48, 0xbe, 0x7e, 0xd2, 0xe9, 0xd5, 0xab, 0xa2, 0x51, 0x2f, 0xb5,
		0xc5, 0x0d, 0x6b, 0x8b, 0xfa, 0x45, 0xe6, 0x5b, 0x4f, 0x9e, 0x3d, 0xf5, 0x64, 0xfd, 0xc2, 0x6f,
		0x0e, 0x7f, 0x50, 0x1d, 0xde, 0x98, 0xd3, 0xd9, 0x1b, 0x5a, 0xbf, 0x7d, 0xe9, 0xf1, 0x73, 0xbf,
		0x1f, 0x44, 0x3f, 0xaa, 0x57, 0x98, 0x7a, 0xa8, 0xdf, 0x8d, 0x6e, 0x4d, 0x29, 0xbe, 0x33, 0x7f,
		0x80, 0x95, 0xcc, 0xb3, 0x88, 0x58, 0x9f, 0x48, 0xbd, 0x2f, 0xdc, 0xc1, 0x3e, 0x90, 0x56, 0x5c,
		0xd3, 0x89, 0x1e, 0x1a, 0x96, 0x10, 0x89, 0xdf, 0xc9, 0x28, 0xab, 0xc7, 0x79, 0xe0, 0x88, 0x9e,
		0x15, 0x7d, 0x1d, 0x3a, 0x94, 0x23, 0x5a, 0x56, 0x18, 0x15, 0x30, 0x9c, 0x05, 0x4e, 0x3a, 0xf9,
		0x11, 0x6b, 0xb5, 0x02, 0x1e, 0x86, 0x4e, 0x9b, 0x3d, 0x8a, 0x2e, 0x95, 0x63, 0xbb, 0x69, 0x8e,
		0xc8, 0xe8, 0x8e, 0xc0, 0x8c, 0x1a, 0x71, 0x11, 0x1e, 0x61, 0x11, 0x1e, 0x51, 0x51, 0xe9, 0x6d,
		0x88, 0x52, 0xc2, 0xb6, 0xd3, 0x01, 0xa1, 0xc1, 0x4f, 0xba, 0x83, 0x1d, 0x1a, 0x0c, 0xa4, 0x9f,
		0x38, 0xf4, 0x5a, 0xa0, 0xb9, 0xf7, 0xa1, 0xd6, 0xeb, 0x6c, 0x71, 0x6f, 0xa3, 0x37, 0xde, 0xf4,
		0x79, 0xb9, 0x46, 0x0f, 0xb7, 0x47, 0x25, 0x39, 0xdd, 0x8e, 0x1d, 0xcf, 0xeb, 0x1a, 0x99, 0xa3,
		0x39, 0xe2, 0x27, 0x73, 0x3c, 0x35, 0x9b, 0x41, 0x65, 0x09, 0x09, 0xa5, 0xa5, 0x21, 0x34, 0x97,
		0x7c, 0x50, 0x9b, 0xac, 0x47, 0x76, 0x89, 0x06, 0xd9, 0x99, 0x74, 0x64, 0x97, 0x54, 0xec, 0x36,
		0x7b, 0x9d, 0x0a, 0x1a, 0x32, 0x8c, 0xcd, 0x43, 0x41, 0x27, 0xba, 0xe3, 0x13, 0x86, 0x43, 0x41,
		0x25, 0xae, 0x69, 0xad, 0xce, 0x24, 0xb7, 0xfa, 0x92, 0xe2, 0xea, 0x4a, 0xda, 0xab, 0x27, 0xa9,
		0xce, 0x7f, 0x27, 0xbf, 0xfa, 0x91, 0xfc, 0x64, 0x75, 0xf2, 0xab, 0x17, 0x51, 0xe2, 0x99, 0x6d,
		0x2d, 0x72, 0xab, 0x0b, 0x09, 0xa6, 0xbf, 0x77, 0xa3, 0xc6, 0x23, 0x42, 0x36, 0x5d, 0x70, 0xd9,
		0x89, 0x74, 0x22, 0x5a, 0x0b, 0xd3, 0x08, 0x56, 0xf8, 0x2f, 0x05, 0xdd, 0x69, 0x58, 0xf6, 0x37,
		0xd6, 0xed, 0x0f, 0x5d, 0x3e, 0x43, 0x74, 0xe6, 0xa5, 0x7d, 0x1e, 0xb0, 0xa6, 0x12, 0xbe, 0x3c,
		0x15, 0x1d, 0x41, 0x79, 0x8a, 0xa8, 0x7d, 0xc5, 0x3b, 0x6c, 0xbc, 0x63, 0x0b, 0xcd, 0x19, 0x8b,
		0x04, 0x67, 0x2b, 0xda, 0x97, 0xec, 0x19, 0xb1, 0x81, 0xd8, 0x00, 0x98, 0x11, 0xb5, 0xa6, 0x46,
		0x88, 0x38, 0x2a, 0x4c, 0x29, 0x1e, 0x48, 0x72, 0xc8, 0x61, 0xdf, 0x1f, 0x38, 0x45, 0xe6, 0xb4,
		0x4b, 0xce, 0x79, 0xed, 0xff, 0xd8, 0x68, 0xba, 0x45, 0x4d, 0x77, 0x7d, 0x53, 0xfe, 0x8b, 0x6c,
		0xfb, 0xfd, 0x33, 0xdb, 0x80, 0x7f, 0x12, 0x6a, 0x41, 0x4c, 0x12, 0xa0, 0x02, 0x2e, 0xb6, 0x1f,
		0x88, 0x8e, 0x90, 0x4c, 0x09, 0xd9, 0x19, 0xd5, 0x95, 0x03, 0x47, 0xf4, 0xe8, 0xe9, 0xb6, 0x8b,
		0xcd, 0x84, 0x92, 0xbb, 0xc8, 0x1c, 0x28, 0xb9, 0xab, 0x38, 0x16, 0x94, 0xdc, 0x55, 0x3c, 0x1d,
		0x4a, 0xee, 0x6f, 0x1a, 0x08, 0x25, 0xd7, 0xa0, 0x21, 0x3d, 0x61, 0x25, 0x57, 0xf4, 0x1c, 0x72,
		0x11, 0x18, 0xeb, 0xb9, 0x45, 0x42, 0x36, 0x8d, 0x9b, 0x10, 0x6a, 0xee, 0x2f, 0x3b, 0xd6, 0x53,
		0xd6, 0x21, 0xbb, 0x49, 0x29, 0xc5, 0x92, 0x01, 0xf9, 0x81, 0x7c, 0x6c, 0xe0, 0xde, 0x70, 0x40,
		0x58, 0x7b, 0xbb, 0xf7, 0x9c, 0x62, 0x6d, 0xf4, 0xd4, 0x8b, 0xbe, 0xbc, 0x66, 0x06, 0x6f, 0x99,
		0xfb, 0x03, 0x27, 0x3b, 0xbe, 0x9a, 0xc9, 0xdd, 0x1f, 0x38, 0xb9, 0xda, 0xfe, 0xde, 0xdf, 0x7f,
		0x7f, 0x5e, 0xf5, 0x3d, 0xfb, 0xaf, 0x87, 0x03, 0x37, 0x7e, 0x53, 0x66, 0xfc, 0xd3, 0xc3, 0xfb,
		0x03, 0x27, 0x53, 0x23, 0xb8, 0x25, 0x56, 0x8d, 0xa2, 0x1f, 0x51, 0x56, 0x15, 0xa6, 0xea, 0xc2,
		0x9e, 0x76, 0x77, 0xda, 0xff, 0x93, 0xa0, 0x43, 0x61, 0xd5, 0xb2, 0xa9, 0x79, 0x2f, 0x8f, 0xbc,
		0xb7, 0xa5, 0x79, 0x6f, 0x6f, 0x46, 0x09, 0x7d, 0xf5, 0x3e, 0x65, 0x07, 0xc7, 0xfb, 0xaf, 0x85,
		0xc1, 0xc7, 0x8b, 0x6f, 0x8b, 0x5e, 0xe6, 0x7d, 0x2a, 0x0c, 0x8e, 0x97, 0xfc, 0x24, 0x3f, 0x38,
		0xfe, 0xc5, 0xdf, 0x91, 0x1b, 0xec, 0xcd, 0xbd, 0x74, 0x78, 0x3d, 0xb3, 0xec, 0x0d, 0xd9, 0x25,
		0x6f, 0x38, 0x5c, 0xf6, 0x86, 0xc3, 0x25, 0x6f, 0x58, 0x6a, 0x52, 0x66, 0xc9, 0x1b, 0x72, 0x83,
		0xb7, 0xb9, 0xd7, 0xef, 0x2d, 0x7e, 0x69, 0x7e, 0xb0, 0xff, 0xb6, 0xec, 0x67, 0x85, 0xc1, 0xdb,
		0xf1, 0xfe, 0xbe, 0xbb, 0xe7, 0x0d, 0x7b, 0xf5, 0xa3, 0x51, 0x37, 0xef, 0xd5, 0xe6, 0x7a, 0xff,
		0xe8, 0x7f, 0x70, 0xc1, 0xf6, 0x71, 0x01, 0xa2, 0x8d, 0x6c, 0xb4, 0x81, 0x9a, 0x8c, 0x10, 0xc1,
		0x2c, 0x94, 0xca, 0x28, 0x71, 0x6c, 0x5c, 0x83, 0xf2, 0x03, 0x47, 0xf4, 0x9c, 0xee, 0x64, 0x9e,
		0x20, 0xd1, 0x4a, 0xd9, 0x3b, 0x2b, 0x51, 0x28, 0x5b, 0x64, 0x0e, 0x0a, 0x65, 0xab, 0xf8, 0x15,
		0x0a, 0x65, 0xab, 0x78, 0x3a, 0x0a, 0x65, 0xbf, 0x69, 0x20, 0x0a, 0x65, 0x06, 0xe9, 0x3b, 0x84,
		0x0b, 0x65, 0x7d, 0x21, 0xd5, 0x61, 0x86, 0x60, 0x95, 0xac, 0x40, 0xc8, 0xa4, 0x2a, 0x93, 0x1d,
		0x54, 0xc9, 0x7e, 0xe1, 0x46, 0x19, 0xb1, 0xe6, 0x01, 0xd3, 0xba, 0x7f, 0xb7, 0xef, 0xc0, 0x92,
		0x87, 0x35, 0x42, 0xc3, 0x84, 0x25, 0x0f, 0xd9, 0x4c, 0x31, 0x5b, 0xcc, 0x17, 0x32, 0xc5, 0x1c,
		0x62, 0x64, 0xdb, 0x63, 0x04, 0x92, 0xd2, 0xc2, 0x07, 0x24, 0x25, 0x0a, 0x16, 0x60, 0x8b, 0xb6,
		0xf7, 0xf6, 0x6c, 0xe5, 0x16, 0x6d, 0x04, 0x0e, 0xef, 0xd1, 0xb8, 0x45, 0xdb, 0x1f, 0x3b, 0x14,
		0x57, 0x93, 0x6d, 0x9d, 0x79, 0x28, 0xac, 0x85, 0x6b, 0x15, 0x2c, 0x42, 0xba, 0x2c, 0x8d, 0xfd,
		0x9a, 0xe9, 0xec, 0xcf, 0x4c, 0x7a, 0x3f, 0x66, 0x42, 0xfb, 0x2f, 0x13, 0xda, 0x6f, 0x59, 0x57,
		0x98, 0x13, 0x3a, 0x75, 0x99, 0xd0, 0x29, 0xca, 0x84, 0x36, 0x39, 0xac, 0x9e, 0x7f, 0x29, 0x64,
		0x0f, 0x33, 0xc7, 0xd6, 0xc9, 0xd7, 0x8a, 0x75, 0x59, 0xb9, 0xb8, 0x71, 0x4e, 0x58, 0xc8, 0x5b,
		0xd6, 0xd9, 0x38, 0x57, 0x5b, 0xdf, 0x2a, 0x57, 0xd8, 0xfe, 0x70, 0x61, 0xfe, 0xa2, 0x7a, 0xf6,
		0xb0, 0x19, 0x3b, 0x20, 0xfe, 0x92, 0xe3, 0xed, 0xfa, 0xa0, 0xe7, 0x8f, 0xdd, 0x1a, 0xf4, 0xea,
		0xca, 0x52, 0x44, 0x06, 0x77, 0x5b, 0x39, 0xa8, 0xb3, 0xb5, 0xee, 0x3c, 0x9d, 0xce, 0x56, 0xfe,
		0x7a, 0xfa, 0xa9, 0xf4, 0x7b, 0x87, 0x74, 0x3f, 0x31, 0xe5, 0xde, 0x40, 0x77, 0x2f, 0xb0, 0x15,
		0xd1, 0x9f, 0x6e, 0x24, 0xa4, 0xe7, 0x8f, 0x29, 0xfa, 0xa2, 0x1d, 0xdd, 0x5d, 0x5f, 0xf2, 0xe9,
		0xcd, 0x65, 0x7d, 0xe5, 0x0f, 0x9b, 0xa0, 0xe9, 0x3f, 0xf1, 0xe0, 0x25, 0x75, 0xef, 0x8c, 0x07,
		0x0b, 0xff, 0x69, 0x59, 0xca, 0x11, 0xab, 0x67, 0x17, 0x7d, 0x6d, 0xf3, 0xe0, 0x74, 0xce, 0x77,
		0xa3, 0x31, 0xaf, 0x4d, 0xf7, 0x30, 0x90, 0xcc, 0x3c, 0x35, 0x32, 0x63, 0x3c, 0x32, 0xf3, 0xce,
		0xb6, 0x9b, 0x4d, 0x74, 0xed, 0x52, 0x3f, 0xed, 0xf2, 0x47, 0x30, 0xaf, 0x2d, 0xf0, 0xe6, 0x52,
		0x90, 0xce, 0xc1, 0x85, 0xe6, 0xe3, 0x5b, 0xb4, 0x4f, 0xc4, 0xa6, 0x30, 0xf1, 0x9a, 0xd6, 0x44,
		0x6b, 0x2a, 0xfa, 0x24, 0xb9, 0x89, 0xd4, 0xe4, 0xc4, 0x48, 0x72, 0x13, 0xa5, 0x77, 0xab, 0xee,
		0xab, 0xfb, 0xb8, 0x15, 0x12, 0xc7, 0xac, 0x10, 0xda, 0x5f, 0x9e, 0xc8, 0x1a, 0x23, 0x9c, 0x44,
		0x46, 0x3e, 0xc5, 0x51, 0x4b, 0x75, 0x64, 0x53, 0x1e, 0xd9, 0xd4, 0x47, 0x36, 0x05, 0xea, 0x4d,
		0x85, 0x9a, 0x53, 0x62, 0xdc, 0x2a, 0x64, 0xd6, 0x04, 0xc5, 0xfd, 0x4e, 0x97, 0xb3, 0x76, 0xc0,
		0xdb, 0x14, 0x3a, 0x9d, 0xc9, 0x88, 0x8b, 0xc0, 0x2a, 0x20, 0xbb, 0x32, 0x96, 0xe8, 0x3f, 0x7f,
		0x1e, 0xcd, 0x58, 0x74, 0x87, 0x69, 0x7c, 0xa7, 0x5d, 0x97, 0xd0, 0x34, 0x9f, 0xd8, 0x26, 0x3a,
		0xd3, 0x7d, 0x26, 0x0f, 0x82, 0xab, 0xfd, 0x0c, 0x99, 0xfe, 0x43, 0x95, 0x3d, 0x16, 0x31, 0x08,
		0xb5, 0xe9, 0x40, 0xe4, 0x71, 0x64, 0x21, 0x96, 0x98, 0x31, 0x3d, 0x88, 0x06, 0xb8, 0x10, 0xc9,
		0x02, 0xe8, 0xe6, 0xd0, 0xcd, 0xa1, 0x9b, 0x43, 0x37, 0xb7, 0xfd, 0x56, 0xd4, 0x76, 0x75, 0x89,
		0x92, 0xc6, 0x02, 0x4b, 0x3c, 0xe5, 0x44, 0xb1, 0x0e, 0x21, 0x01, 0x77, 0xd6, 0x2a, 0x28, 0xb9,
		0x50, 0x72, 0xff, 0xc3, 0x5f, 0xa0, 0xe4, 0xfe, 0x22, 0x5e, 0x40, 0xc9, 0x5d, 0x99, 0x25, 0xa0,
		0xe4, 0x12, 0x19, 0x08, 0x41, 0xc9, 0xfd, 0x85, 0x34, 0x45, 0x54, 0xc9, 0x9d, 0xcd, 0xe7, 0x90,
		0x74, 0x21, 0xe9, 0x42, 0xeb, 0x80, 0xd6, 0x01, 0xad, 0x03, 0x5a, 0xc7, 0x6e, 0x66, 0x01, 0x74,
		0x73, 0xe8, 0xe6, 0xd0, 0xcd, 0xa1, 0x9b, 0xdb, 0x7e, 0x2b, 0x20, 0xe9, 0xa6, 0x1f, 0x35, 0x3d,
		0xa6, 0x1e, 0x42, 0x3a, 0x5a, 0xee, 0xc8, 0x1c, 0x1a, 0x22, 0xae, 0x07, 0x11, 0x77, 0x3c, 0x42,
		0x87, 0x88, 0x6b, 0x16, 0x58, 0x40, 0xc4, 0xfd, 0x2d, 0x7a, 0x80, 0x88, 0x4b, 0x64, 0xe8, 0xa3,
		0x7d, 0xa5, 0xca, 0xbb, 0x34, 0x49, 0xef, 0xdc, 0x9c, 0xc8, 0x2a, 0x5a, 0xe7, 0xe4, 0x78, 0x38,
		0x27, 0x87, 0x7c, 0x12, 0xa5, 0x9d, 0x4c, 0x4d, 0x1a, 0xad, 0xe3, 0x9c, 0x9c, 0xad, 0x4a, 0xb6,
		0xc4, 0x06, 0xe4, 0x44, 0x7a, 0x2e, 0x2a, 0x49, 0x78, 0x9a, 0x8c, 0x79, 0xb4, 0x3d, 0x31, 0xbd,
		0x9e, 0x21, 0xce, 0xcb, 0x63, 0x03, 0x89, 0x85, 0x1d, 0xad, 0xa3, 0xec, 0xc8, 0xa6, 0x6a, 0xca,
		0x29, 0xdb, 0x8c, 0xd4, 0x4d, 0x3d, 0x85, 0x1b, 0x93, 0xca, 0x8d, 0x49, 0xe9, 0xc6, 0xa4, 0x76,
		0x5a, 0x29, 0x9e, 0x58, 0xaa, 0x8f, 0x5b, 0x91, 0xdc, 0xd1, 0x78, 0x73, 0xfd, 0x1e, 0x9d, 0xc9,
		0x54, 0x4b, 0x47, 0xc2, 0x05, 0x8a, 0xc7, 0xb1, 0x7f, 0x9c, 0x6c, 0x35, 0x41, 0x15, 0x1c, 0x3c,
		0x44, 0x3d, 0x30, 0x47, 0x54, 0xd9, 0x63, 0xea, 0xc1, 0x11, 0x2d, 0xe2, 0xec, 0x3b, 0xb1, 0x12,
		0x00, 0x0c, 0x00, 0x06, 0x00, 0x03, 0x80, 0x01, 0xc0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x98, 0x2a,
		0x00, 0x4f, 0x78, 0x05, 0x14, 0x4c, 0x9e, 0x82, 0xc3, 0x28, 0xa3, 0x3a, 0xac, 0xd5, 0x0a, 0x78,
		0x18, 0x3a, 0x6d, 0xf6, 0x28, 0xba, 0x2f, 0x74, 0x71, 0x78, 0xb1, 0xb9, 0xe0, 0x62, 0x70, 0x31,
		0xb8, 0x18, 0x5c, 0x0c, 0x2e, 0x06, 0x17, 0x83, 0x8b, 0xc1, 0xc5, 0x04, 0xb9, 0x78, 0x31, 0xb8,
		0x00, 0x90, 0x4d, 0x01, 0xe4, 0x05, 0x67, 0x46, 0x91, 0xa7, 0xe4, 0x45, 0x36, 0x03, 0x95, 0x81,
		0xca, 0x40, 0x65, 0xa0, 0x32, 0x50, 0x19, 0xa8, 0x0c, 0x54, 0x06, 0x2a, 0xd3, 0x45, 0xe5, 0x45,
		0xf4, 0x02, 0x5e, 0xa6, 0xcf, 0xcb, 0xc3, 0x36, 0x24, 0x8c, 0xc6, 0x91, 0x79, 0x34, 0x29, 0xd8,
		0x03, 0x05, 0x83, 0x82, 0x41, 0xc1, 0xa0, 0x60, 0x50, 0x30, 0x32, 0xeb, 0xe2, 0x56, 0xa4, 0xb6,
		0x78, 0x28, 0x36, 0x8c, 0xb5, 0x9e, 0x78, 0xa0, 0x44, 0xc8, 0x5b, 0x8e, 0xf2, 0x9d, 0x1e, 0xe7,
		0x01, 0xdd, 0xce, 0x65, 0xd2, 0x45, 0x2f, 0xb0, 0x99, 0x68, 0xf0, 0xd2, 0x94, 0xc9, 0xc8, 0x83,
		0x82, 0x09, 0xc0, 0x60, 0x16, 0x38, 0x98, 0x02, 0x10, 0xc6, 0x81, 0x84, 0x71, 0x40, 0x61, 0x1c,
		0x58, 0xd0, 0x04, 0x0c, 0xa2, 0xa0, 0x11, 0xb7, 0x2e, 0x59, 0xd9, 0x6d, 0xae, 0xdf, 0x14, 0xbd,
		0x49, 0x75, 0x95, 0x72, 0xbf, 0x39, 0x19, 0xea, 0x17, 0x09, 0xdb, 0x38, 0x6e, 0xf3, 0x7b, 0xd2,
		0xfd, 0x0e, 0xed, 0xbc, 0xf3, 0xc1, 0x33, 0x9f, 0xb2, 0x06, 0xf8, 0xe6, 0x9c, 0x8f, 0x1e, 0x19,
		0x60, 0x6b, 0x85, 0x29, 0xc5, 0x03, 0x49, 0xde, 0x5d, 0x63, 0x83, 0xf7, 0xee, 0x0f, 0x9c, 0x62,
		0xed, 0xed, 0xde, 0x73, 0x8a, 0xb5, 0xd1, 0x53, 0x2f, 0xfa, 0xf2, 0x9a, 0x19, 0xbc, 0x65, 0xee,
		0x0f, 0x9c, 0xec, 0xf8, 0x6a, 0x26, 0x77, 0x7f, 0xe0, 0xe4, 0x6a, 0xfb, 0x7b, 0x7f, 0xff, 0xfd,
		0x79, 0xd5, 0xf7, 0xec, 0xbf, 0x1e, 0x0e, 0x6c, 0xf2, 0xb7, 0xa3, 0x66, 0x82, 0x7b, 0x5d, 0xdf,
		0x94, 0xff, 0x32, 0xce, 0xc7, 0xfe, 0xd9, 0x4b, 0xcb, 0xcb, 0xf6, 0xff, 0x34, 0xc0, 0xcf, 0x48,
		0x5b, 0x38, 0xf8, 0x84, 0x34, 0xbb, 0xb1, 0x34, 0x9b, 0x47, 0x9a, 0x45, 0x9a, 0x1d, 0xa5, 0xd9,
		0xa8, 0x37, 0x63, 0x4e, 0xbb, 0xe4, 0x9c, 0xd7, 0x5e, 0xbd, 0x4f, 0xd9, 0xc1, 0xf1, 0xfe, 0x6b,
		0x61, 0xf0, 0xf1, 0xe2, 0xdb, 0xa2, 0x97, 0x79, 0x9f, 0x0a, 0x83, 0xe3, 0x25, 0x3f, 0xc9, 0x0f,
		0x8e, 0x7f, 0xf1, 0x77, 0xe4, 0x06, 0x7b, 0x73, 0x2f, 0x1d, 0x5e, 0xcf, 0x2c, 0x7b, 0x43, 0x76,
		0xc9, 0x1b, 0x0e, 0x97, 0xbd, 0xe1, 0x70, 0xc9, 0x1b, 0x96, 0x9a, 0x94, 0x59, 0xf2, 0x86, 0xdc,
		0xe0, 0x6d, 0xee, 0xf5, 0x7b, 0x8b, 0x5f, 0x9a, 0x1f, 0xec, 0xbf, 0x2d, 0xfb, 0x59, 0x61, 0xf0,
		0x76, 0xbc, 0xbf, 0x0f, 0xf0, 0xd8, 0x79, 0xf0, 0x40, 0xd8, 0xa5, 0x1f, 0x76, 0x00, 0xb1, 0xad,
		0xd4, 0x05, 0xe9, 0xde, 0x37, 0xaa, 0x8a, 0xe5, 0x85, 0x08, 0x55, 0x49, 0xa9, 0x80, 0xb6, 0x6a,
		0x79, 0x29, 0xe4, 0x59, 0x97, 0x3f, 0x72, 0xa9, 0x42, 0xba, 0x75, 0xb3, 0x91, 0xa5, 0xec, 0x79,
		0xc6, 0x52, 0xef, 0x28, 0x9b, 0xcd, 0x17, 0xb2, 0xd9, 0x83, 0xc2, 0x61, 0xe1, 0xa0, 0x98, 0xcb,
		0x79, 0x79, 0x2f, 0x47, 0xd8, 0xf8, 0xeb, 0xa0, 0xc5, 0x03, 0xde, 0x3a, 0x79, 0xb1, 0x8f, 0x2d,
		0xd9, 0xef, 0x76, 0x4d, 0x30, 0xf5, 0x2e, 0x8c, 0x8a, 0xe7, 0x6d, 0xd6, 0x0d, 0xf9, 0x1f, 0xe8,
		0x29, 0x0d, 0xed, 0x8b, 0x6c, 0xa6, 0x54, 0xe0, 0x08, 0xd9, 0xe2, 0xcf, 0x06, 0xcc, 0x84, 0x98,
		0xda, 0x8a, 0x19, 0x10, 0xeb, 0x98, 0x87, 0x19, 0x10, 0x1b, 0xf4, 0x46, 0xcc, 0x80, 0xd8, 0x68,
		0xe4, 0x60, 0x06, 0x44, 0xc2, 0x06, 0x63, 0x06, 0xc4, 0x36, 0x8f, 0x27, 0xcc, 0x99, 0x01, 0x41,
		0x77, 0x01, 0xd2, 0xc7, 0x34, 0x4e, 0x71, 0x21, 0xd2, 0x34, 0x55, 0x4e, 0x17, 0x24, 0xfd, 0xe7,
		0xbf, 0x08, 0x9c, 0x42, 0xae, 0xc2, 0xf8, 0xd9, 0x78, 0x11, 0xd3, 0x08, 0xa6, 0x80, 0xef, 0xc6,
		0xe2, 0x7b, 0x83, 0x35, 0xbf, 0xf7, 0x7b, 0xf4, 0xd1, 0x7d, 0x6c, 0x27, 0xb0, 0x1d, 0xd8, 0x0e,
		0x6c, 0x07, 0xb6, 0x03, 0xdb, 0x81, 0xed, 0xc0, 0x76, 0xa3, 0xb0, 0xbd, 0xe1, 0xfb, 0x5d, 0xce,
		0xa4, 0x09, 0xd8, 0xee, 0x01, 0x68, 0xcd, 0x05, 0x5a, 0x1e, 0x2a, 0x52, 0xe7, 0x6e, 0x2e, 0x0f,
		0x88, 0x89, 0xa5, 0x80, 0x5a, 0x40, 0x2d, 0xa0, 0x16, 0x50, 0x0b, 0xa8, 0x05, 0xd4, 0x02, 0x6a,
		0x01, 0xb5, 0x80, 0x5a, 0x04, 0xc5, 0xfb, 0x36, 0x6c, 0xfa, 0x8f, 0x8f, 0x7d, 0x29, 0xd4, 0x8b,
		0x29, 0x33, 0x2d, 0x3e, 0x1a, 0x0c, 0xc4, 0x05, 0xe2, 0x02, 0x71, 0x81, 0xb8, 0x40, 0x5c, 0x20,
		0x2e, 0x10, 0x17, 0xd3, 0x2d, 0x92, 0x41, 0xdc, 0x6d, 0x99, 0x6e, 0x31, 0xa1, 0x27, 0xc1, 0xc3,
		0xf8, 0xf9, 0x0b, 0x66, 0x5c, 0x6c, 0x07, 0xcb, 0xf3, 0x67, 0xe5, 0x18, 0xc7, 0xf3, 0x8b, 0x8c,
		0x06, 0xd3, 0x83, 0xe9, 0xc1, 0xf4, 0x60, 0x7a, 0x30, 0x3d, 0x98, 0x1e, 0x4c, 0x0f, 0xa6, 0x07,
		0xd3, 0xff, 0xec, 0xdf, 0x2c, 0x41, 0x0d, 0xb9, 0xfe, 0x1d, 0x51, 0x81, 0xed, 0xb7, 0x83, 0xed,
		0x85, 0x7c, 0x62, 0x5d, 0xd1, 0x72, 0x02, 0xce, 0x42, 0x5f, 0xd2, 0xc7, 0xfa, 0x0f, 0xf6, 0x82,
		0xe8, 0x41, 0xf4, 0x20, 0x7a, 0x10, 0x3d, 0x88, 0x1e, 0x44, 0x0f, 0xa2, 0x37, 0x6b, 0x5b, 0xe8,
		0x16, 0x97, 0x4a, 0xa8, 0x17, 0x43, 0xa8, 0x9e, 0xf2, 0x66, 0x2a, 0xe5, 0xf1, 0xad, 0x3c, 0x61,
		0xa1, 0x01, 0x5d, 0xfc, 0xc4, 0x01, 0xca, 0x57, 0xdf, 0x4a, 0x17, 0xe5, 0xd3, 0x7a, 0xf5, 0xfa,
		0xee, 0xf6, 0xac, 0x5e, 0x3d, 0x2b, 0xdd, 0x5c, 0x5f, 0x51, 0xef, 0xed, 0xbf, 0xb1, 0x6e, 0x9f,
		0x87, 0x46, 0xec, 0xfb, 0xf6, 0x6a, 0xc6, 0xce, 0x74, 0x1f, 0xbd, 0xa1, 0x74, 0x53, 0xbf, 0xb8,
		0xbe, 0xae, 0xd0, 0xdf, 0x34, 0x6d, 0xf0, 0x09, 0x2e, 0x90, 0x8c, 0x0b, 0x7c, 0xb9, 0xb8, 0xbb,
		0xb9, 0x3d, 0xab, 0xc2, 0x0f, 0x76, 0xdd, 0x0f, 0xae, 0xaf, 0xce, 0xcf, 0x4e, 0xe1, 0x01, 0xbb,
		0xeb, 0x01, 0xd7, 0xd5, 0xf2, 0xd7, 0xf2, 0x55, 0xe9, 0xf6, 0xba, 0x6a, 0x80, 0x17, 0x90, 0xb6,
		0xb0, 0x86, 0xf1, 0x9d, 0xe1, 0x56, 0x51, 0x54, 0x8f, 0xbb, 0xac, 0xc1, 0xbb, 0xf4, 0x45, 0xe3,
		0x91, 0x99, 0xd0, 0x8a, 0xd7, 0x31, 0x0f, 0x5a, 0xf1, 0x06, 0x1d, 0x11, 0x5a, 0xf1, 0x46, 0x23,
		0x07, 0x5a, 0x71, 0xc2, 0x06, 0x43, 0x2b, 0xde, 0xe2, 0xf1, 0x81, 0x41, 0x5a, 0x71, 0xa8, 0x02,
		0x21, 0x3b, 0x26, 0xc8, 0xc4, 0x47, 0xf0, 0xc0, 0x15, 0xee, 0x1a, 0x7f, 0x56, 0x01, 0x73, 0xfa,
		0x32, 0x54, 0xac, 0xd1, 0x25, 0xee, 0x8b, 0x01, 0x6f, 0xf3, 0x80, 0xcb, 0x26, 0x4e, 0x60, 0xdc,
		0x60, 0x60, 0x57, 0xcf, 0xbf, 0x14, 0xb2, 0x87, 0x99, 0x63, 0xeb, 0xe4, 0x6b, 0xc5, 0xba, 0xac,
		0x5c, 0xdc, 0x38, 0xff, 0x3f, 0x7b, 0xef, 0xde, 0x9b, 0x38, 0xd2, 0x84, 0x8f, 0xfe, 0x3f, 0x9f,
		0xc2, 0xb2, 0x56, 0xda, 0xf0, 0xd3, 0x78, 0xb8, 0x43, 0x88, 0xf4, 0xea, 0x28, 0x17, 0x32, 0x07,
		0xbd, 0x24, 0xe1, 0x04, 0x26, 0xef, 0xae, 0x32, 0x2c, 0x72, 0xa0, 0x21, 0xfd, 0x5b, 0x62, 0x23,
		0xbb, 0xc9, 0x4c, 0x14, 0xf8, 0xee, 0x47, 0x18, 0x30, 0x24, 0xc0, 0x4c, 0x12, 0xec, 0xee, 0x6a,
		0x78, 0xd0, 0x6a, 0x87, 0x00, 0xc6, 0x85, 0x5d, 0x97, 0xa7, 0x9e, 0xaa, 0xae, 0x3e, 0xb1, 0x7d,
		0xd6, 0x31, 0xca, 0xe2, 0x9e, 0x79, 0x0e, 0x13, 0xc6, 0x4d, 0xed, 0x52, 0x87, 0x2d, 0xa3, 0x34,
		0x81, 0x4c, 0xeb, 0xa0, 0xd3, 0x42, 0xaf, 0x3f, 0xeb, 0x21, 0xbb, 0x6e, 0x28, 0x6a, 0x2d, 0x9a,
		0x7a, 0x93, 0xe2, 0x83, 0xf3, 0xda, 0x51, 0xe9, 0x9a, 0xe0, 0xbc, 0x74, 0xc5, 0x2d, 0x53, 0x32,
		0x29, 0xa3, 0x09, 0xe9, 0x95, 0x01, 0xeb, 0xf5, 0x21, 0xf1, 0xc0, 0x7a, 0x45, 0xa8, 0x89, 0x60,
		0xbd, 0x62, 0x82, 0x6e, 0x60, 0xbd, 0x62, 0xc7, 0x69, 0x60, 0xbd, 0x76, 0x8d, 0x73, 0x00, 0xeb,
		0x15, 0x79, 0x14, 0x07, 0xeb, 0xf5, 0xae, 0xab, 0x06, 0xd6, 0x2b, 0x8e, 0x07, 0x58, 0x2f, 0x40,
		0xa6, 0xb7, 0x43, 0x27, 0xb0, 0x5e, 0x2a, 0xd0, 0x14, 0x58, 0xaf, 0x7d, 0x96, 0x0e, 0xac, 0x97,
		0xb6, 0xb8, 0xc5, 0xec, 0xdb, 0xbe, 0xb0, 0x1e, 0xdc, 0x0e, 0xef, 0x72, 0xd6, 0xd1, 0x81, 0xfc,
		0x5a, 0x16, 0x17, 0x1c, 0xd8, 0x47, 0xc4, 0x03, 0x07, 0x16, 0xa1, 0x42, 0x82, 0x03, 0x8b, 0x09,
		0xc8, 0x81, 0x03, 0x8b, 0x1d, 0xb5, 0x81, 0x03, 0xdb, 0x35, 0x06, 0x42, 0x1f, 0x0e, 0x4c, 0xf0,
		0x07, 0x26, 0x78, 0xfb, 0x5f, 0xbf, 0x90, 0xd3, 0x80, 0x08, 0x3b, 0x24, 0x2c, 0xe2, 0x37, 0x87,
		0x0b, 0x7f, 0x72, 0x49, 0x1d, 0xdb, 0x71, 0x7d, 0xd6, 0x76, 0x9d, 0x8e, 0x4f, 0xf9, 0x92, 0x5e,
		0xdb, 0x4e, 0x0f, 0xac, 0x53, 0x04, 0x17, 0xf2, 0x82, 0x3b, 0xfa, 0x50, 0x34, 0xc1, 0x02, 0x6b,
		0xba, 0x98, 0x73, 0x45, 0xde, 0x73, 0xcf, 0x6e, 0x0b, 0xee, 0x3a, 0x67, 0xbc, 0x37, 0x35, 0x2f,
		0x5d, 0x04, 0xbf, 0x64, 0x3d, 0x5b, 0xf0, 0xc7, 0xc9, 0xb5, 0xee, 0xda, 0x7d, 0x9f, 0x61, 0x95,
		0x65, 0x14, 0xa6, 0x66, 0xff, 0xd4, 0xcf, 0xd4, 0xd2, 0x87, 0xb9, 0x5c, 0xa1, 0x98, 0xcb, 0xa5,
		0x8a, 0xd9, 0x62, 0xaa, 0x94, 0xcf, 0xa7, 0x0b, 0x94, 0x87, 0x5d, 0xc0, 0xfa, 0x80, 0xaf, 0x35,
		0x92, 0x0e, 0x9c, 0xa7, 0xb6, 0xde, 0xdd, 0x7c, 0x18, 0xf6, 0x05, 0xd7, 0x63, 0x67, 0xce, 0x85,
		0xa8, 0xe0, 0x3a, 0x3f, 0x22, 0x1e, 0xb8, 0xce, 0x08, 0x95, 0x11, 0x5c, 0x67, 0xa4, 0x96, 0x03,
		0xae, 0x33, 0x66, 0x81, 0xc1, 0x75, 0xee, 0x70, 0x7e, 0x86, 0xad, 0x39, 0x63, 0x08, 0xe3, 0xd8,
		0x9a, 0x53, 0x63, 0x58, 0x3b, 0x60, 0xcc, 0xb3, 0xf8, 0x80, 0x3e, 0xa8, 0x9d, 0x0b, 0x0a, 0x48,
		0x0b, 0x48, 0x0b, 0x48, 0x0b, 0x48, 0x0b, 0x48, 0x0b, 0x48, 0x0b, 0x48, 0xab, 0xd7, 0x90, 0xef,
		0x81, 0x65, 0x77, 0x3a, 0x1e, 0xf3, 0x7d, 0x1d, 0x50, 0x6d, 0x89, 0xb0, 0x8c, 0xb3, 0x7b, 0x8e,
		0x6a, 0x78, 0x64, 0x9a, 0xf9, 0x98, 0xd3, 0x40, 0x37, 0x57, 0x74, 0xf4, 0x50, 0x03, 0x59, 0x6b,
		0xb6, 0x10, 0xcc, 0x73, 0xb4, 0x18, 0x93, 0x1e, 0x08, 0x7c, 0x70, 0x9b, 0xb2, 0x4a, 0xcd, 0xd1,
		0x6d, 0xda, 0x2a, 0x35, 0xa7, 0x4f, 0xd3, 0xc1, 0x3f, 0xcf, 0x99, 0xf1, 0x28, 0x73, 0x9b, 0xb2,
		0x72, 0xb3, 0x57, 0x33, 0xf9, 0xdb, 0x94, 0x95, 0x6f, 0x26, 0x0e, 0xbe, 0x7f, 0xff, 0xf2, 0xde,
		0x63, 0x12, 0xcf, 0xd9, 0x31, 0xfd, 0xb5, 0x0d, 0x4d, 0x1d, 0xd4, 0xeb, 0xaa, 0x5e, 0xf9, 0x4b,
		0x3b, 0x1d, 0xfb, 0xe7, 0x40, 0x96, 0x96, 0x25, 0xfe, 0xd0, 0x40, 0xcf, 0x68, 0xd7, 0x93, 0x3f,
		0x23, 0xcc, 0x46, 0x16, 0x66, 0x0b, 0x08, 0xb3, 0x08, 0xb3, 0xd3, 0x30, 0x1b, 0x78, 0x33, 0xdb,
		0xea, 0x1e, 0x5b, 0xe7, 0xcd, 0xe7, 0xf4, 0xe7, 0xdc, 0xf8, 0x28, 0xf1, 0x5c, 0x1c, 0xbf, 0x7e,
		0x71, 0xb4, 0xee, 0x63, 0xe9, 0xcf, 0xc5, 0xf1, 0xd1, 0x86, 0x77, 0x0a, 0xe3, 0xa3, 0x37, 0x7e,
		0x47, 0x7e, 0x7c, 0xb0, 0xf2, 0xd1, 0xc9, 0xeb, 0x99, 0x4d, 0x07, 0xe4, 0x36, 0x1c, 0x90, 0xdd,
		0x74, 0x40, 0x76, 0xc3, 0x01, 0x1b, 0x45, 0xca, 0x6c, 0x38, 0x20, 0x3f, 0x1e, 0xad, 0x7c, 0xfe,
		0x60, 0xfd, 0x47, 0x0b, 0xe3, 0xc4, 0x68, 0xd3, 0x7b, 0xc5, 0xf1, 0xe8, 0x28, 0x91, 0x00, 0xf0,
		0xd8, 0x7b, 0xe0, 0x01, 0xb3, 0x93, 0x6f, 0x76, 0x00, 0x62, 0x3b, 0xc9, 0x0b, 0x1a, 0x68, 0xec,
		0xd3, 0x19, 0x4a, 0x4f, 0x0b, 0x8b, 0x03, 0x5b, 0xdc, 0x5b, 0xbc, 0xa3, 0x49, 0x19, 0x74, 0x2e,
		0x2d, 0x6a, 0xa1, 0x1f, 0x11, 0x0f, 0xb5, 0xd0, 0x08, 0xf5, 0x11, 0xb5, 0xd0, 0x48, 0x2d, 0x07,
		0xb5, 0xd0, 0x98, 0x05, 0x46, 0x2d, 0x74, 0x87, 0x29, 0x31, 0x8d, 0x6a, 0xa1, 0x43, 0xee, 0x88,
		0x6c, 0x46, 0x83, 0x3a, 0x68, 0x11, 0xab, 0x82, 0xb7, 0x7c, 0x60, 0x55, 0x70, 0xb4, 0xc2, 0x62,
		0x55, 0xb0, 0x2c, 0x5f, 0x85, 0x55, 0xc1, 0x31, 0x98, 0x9a, 0x8e, 0xab, 0x82, 0x73, 0x99, 0x52,
		0xae, 0x54, 0x28, 0x66, 0x4a, 0x58, 0x0b, 0x0c, 0x9b, 0xd3, 0x01, 0xa0, 0xd2, 0x97, 0x0e, 0x94,
		0xa1, 0xb6, 0x3e, 0xdd, 0xf4, 0x03, 0x3a, 0x61, 0x5e, 0xc9, 0xb6, 0xba, 0xf6, 0x03, 0xef, 0x3f,
		0xd1, 0xe7, 0x0e, 0xd7, 0x8b, 0x0d, 0x12, 0xf1, 0x23, 0xe2, 0x81, 0x44, 0x8c, 0x50, 0x31, 0x41,
		0x22, 0x46, 0x6a, 0x39, 0x20, 0x11, 0x63, 0x16, 0x18, 0x24, 0xe2, 0x0e, 0x67, 0x6b, 0x3a, 0x2d,
		0xa8, 0xe8, 0x30, 0x47, 0x70, 0xf1, 0xe4, 0xb1, 0xae, 0x0e, 0x2b, 0x2a, 0x08, 0x27, 0x8f, 0x66,
		0x65, 0x76, 0x29, 0x4f, 0x6c, 0x5f, 0x03, 0x17, 0x3f, 0x57, 0x80, 0xe3, 0xf3, 0x4a, 0xab, 0x3e,
		0xf9, 0x5f, 0xe3, 0xef, 0x5a, 0x99, 0xba, 0x9b, 0x0f, 0xc8, 0x04, 0x5f, 0x8b, 0x56, 0x29, 0x4d,
		0xe8, 0x99, 0xb9, 0x1a, 0x54, 0x6a, 0x37, 0xb9, 0xd6, 0x79, 0xf5, 0xea, 0x7f, 0xf5, 0x5a, 0xf9,
		0xd4, 0x04, 0x4d, 0xb7, 0x9f, 0x0a, 0x50, 0x3d, 0x3e, 0x29, 0x57, 0xcb, 0x67, 0xad, 0x6f, 0x97,
		0x95, 0xd3, 0xe3, 0x7a, 0x03, 0x7a, 0xb0, 0xa7, 0x7a, 0x80, 0xfb, 0xbf, 0xcf, 0xf7, 0xbf, 0x00,
		0x3f, 0x00, 0x3d, 0x08, 0xf4, 0x00, 0xf7, 0x7f, 0x6f, 0xef, 0x7f, 0x35, 0x73, 0x53, 0xbb, 0x6c,
		0x95, 0xf5, 0xd8, 0x40, 0x0b, 0x77, 0x3f, 0x96, 0xbb, 0x7f, 0x53, 0xab, 0xd6, 0x71, 0xf7, 0xf7,
		0xf0, 0xee, 0x67, 0x27, 0x77, 0x3f, 0x40, 0x82, 0x17, 0xdf, 0xaa, 0x0d, 0xc4, 0x00, 0xe8, 0x01,
		0x90, 0x00, 0xb4, 0xa0, 0x00, 0x6f, 0x00, 0x3d, 0x40, 0x5e, 0xb0, 0xe7, 0x5a, 0x50, 0xb9, 0xfc,
		0x6f, 0xbd, 0x71, 0xdc, 0x28, 0xe3, 0xe6, 0xef, 0xf1, 0xcd, 0x6f, 0xd5, 0x6b, 0xe7, 0x50, 0x80,
		0x7d, 0x56, 0x00, 0x10, 0x03, 0x7b, 0xa9, 0x00, 0xf5, 0xeb, 0x46, 0xb9, 0x55, 0xbb, 0xaa, 0x56,
		0x4e, 0xff, 0x0e, 0x12, 0x03, 0xe8, 0xc0, 0xde, 0xeb, 0x40, 0x01, 0x3a, 0xb0, 0x7f, 0x3a, 0x70,
		0x53, 0xbb, 0xd4, 0xab, 0x61, 0x80, 0xb4, 0x84, 0x4d, 0xf4, 0xfd, 0x69, 0x2e, 0x15, 0xe1, 0x35,
		0x06, 0x9e, 0x3b, 0x14, 0xcc, 0xea, 0x70, 0x5f, 0x70, 0xa7, 0x37, 0xe4, 0xfe, 0x3d, 0xf3, 0xb4,
		0x59, 0x68, 0xb0, 0x4e, 0x76, 0xac, 0x36, 0xf8, 0x88, 0x78, 0x58, 0x6d, 0x10, 0xa1, 0x76, 0x62,
		0xb5, 0x41, 0xa4, 0x96, 0x83, 0xd5, 0x06, 0x31, 0x0b, 0x8c, 0xd5, 0x06, 0x3b, 0x9c, 0x45, 0x68,
		0xb4, 0xda, 0x40, 0x9f, 0x70, 0x6e, 0x60, 0x1f, 0x87, 0xbd, 0x4a, 0x6e, 0x17, 0xc0, 0x53, 0x78,
		0xdc, 0xe9, 0x61, 0xb4, 0x74, 0xc4, 0xe0, 0x4e, 0xfb, 0x1d, 0x1c, 0xa6, 0xc3, 0x62, 0x6f, 0xd3,
		0x56, 0x7e, 0xf6, 0x77, 0x6e, 0x3c, 0x2a, 0x2c, 0x06, 0xe6, 0x3f, 0x67, 0xc7, 0xa3, 0x42, 0x7e,
		0xe9, 0xef, 0xcc, 0xe4, 0xef, 0xc9, 0x0b, 0x99, 0xd9, 0x44, 0xfd, 0x42, 0x3e, 0x9f, 0x9d, 0xce,
		0xd4, 0x3f, 0x5a, 0xf7, 0xe5, 0x87, 0xc1, 0x97, 0x67, 0x67, 0x7f, 0x97, 0xc6, 0xa3, 0xdc, 0x6d,
		0x2a, 0x3d, 0xfb, 0xeb, 0x70, 0x3c, 0xca, 0x65, 0x6e, 0x53, 0xd6, 0xe1, 0xec, 0xef, 0xe2, 0xe4,
		0xef, 0xd2, 0x6d, 0x2a, 0xfc, 0x78, 0x21, 0x78, 0x21, 0xb7, 0xf4, 0x91, 0xfc, 0xf4, 0x95, 0x52,
		0x70, 0xc6, 0x50, 0xe0, 0xe9, 0x10, 0x8e, 0xdb, 0x94, 0x55, 0x58, 0x48, 0x3d, 0x1b, 0xcc, 0xb1,
		0x38, 0x5b, 0x26, 0x7c, 0x6d, 0xe9, 0x9c, 0xe1, 0x4b, 0xd3, 0x6f, 0xc4, 0x00, 0xe8, 0x68, 0xcc,
		0x62, 0x57, 0x76, 0x9e, 0x80, 0x75, 0xbc, 0xb0, 0x0e, 0x0c, 0x6a, 0xde, 0x51, 0xac, 0x0d, 0x40,
		0x03, 0x40, 0x63, 0x60, 0x4b, 0xaa, 0x5f, 0x6c, 0x16, 0x74, 0x14, 0x67, 0x6c, 0x00, 0xea, 0x00,
		0xea, 0xd0, 0x5c, 0x85, 0x01, 0x0d, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0d, 0x88, 0x73, 0x1d, 0x9a,
		0x25, 0x5c, 0x40, 0x1d, 0x40, 0x1d, 0x12, 0xb9, 0x0e, 0x58, 0x07, 0x00, 0x4d, 0x84, 0x80, 0x06,
		0x13, 0x66, 0x35, 0xbf, 0x5e, 0x14, 0xbb, 0xbf, 0x1e, 0xed, 0x3e, 0xef, 0x4c, 0x1b, 0xa8, 0xe8,
		0xb7, 0x7b, 0x2d, 0x0b, 0x8b, 0xfe, 0xae, 0x8f, 0x88, 0x87, 0xfe, 0xae, 0x08, 0xd5, 0x11, 0xfd,
		0x5d, 0x91, 0x5a, 0x0e, 0xfa, 0xbb, 0x62, 0x16, 0x18, 0xfd, 0x5d, 0x3b, 0x4c, 0x2c, 0x69, 0xd4,
		0xdf, 0x75, 0xe7, 0xba, 0x7d, 0x66, 0x3b, 0x3a, 0xf4, 0x74, 0xa5, 0x01, 0x6d, 0x35, 0x94, 0x88,
		0x98, 0x89, 0x9a, 0xc7, 0x8e, 0xe3, 0x0a, 0x5b, 0x70, 0x97, 0xe6, 0xe6, 0x57, 0xa6, 0xdf, 0xbe,
		0x67, 0x0f, 0xf6, 0xc0, 0x16, 0xf7, 0x13, 0xf3, 0x4c, 0xba, 0x03, 0xe6, 0xb4, 0x03, 0xa0, 0x68,
		0x39, 0x4c, 0xfc, 0x70, 0xbd, 0x7f, 0x2d, 0xee, 0xf8, 0xc2, 0x76, 0xda, 0x2c, 0xf9, 0xfa, 0x05,
		0x7f, 0xe5, 0x95, 0xe4, 0xc0, 0x73, 0x85, 0xdb, 0x76, 0xfb, 0x7e, 0xf8, 0x2c, 0x79, 0xd7, 0x1b,
		0x24, 0x3d, 0x7e, 0x97, 0xb4, 0xbb, 0xdc, 0xf2, 0xed, 0x2e, 0xf7, 0xc3, 0x67, 0xc9, 0x7e, 0xe6,
		0x71, 0xe0, 0x58, 0xec, 0x71, 0xe0, 0x24, 0xfb, 0xd3, 0xa0, 0x94, 0x0c, 0x00, 0xbe, 0x9f, 0x5c,
		0xd3, 0x06, 0x9a, 0x14, 0x4f, 0x03, 0x66, 0xb9, 0x0e, 0xb3, 0x98, 0xb8, 0x67, 0x9e, 0xc3, 0x84,
		0x65, 0x0f, 0x85, 0x3b, 0xf9, 0x50, 0xdb, 0x7d, 0x64, 0xde, 0xd3, 0xe2, 0x03, 0xc1, 0xd1, 0xc9,
		0xc9, 0x6f, 0xf2, 0x83, 0xff, 0x27, 0x7d, 0x61, 0x0b, 0x46, 0x2b, 0xd8, 0xd1, 0xb1, 0x1a, 0x42,
		0x16, 0x63, 0x0e, 0x9d, 0x7f, 0x1d, 0xf7, 0x87, 0x63, 0xd9, 0x42, 0x78, 0xfc, 0x6e, 0xa2, 0x0a,
		0xe4, 0xac, 0x66, 0xb1, 0xbb, 0xe2, 0xaa, 0xac, 0xc4, 0x7c, 0xcf, 0x3c, 0x92, 0x11, 0x13, 0x8b,
		0x6a, 0x22, 0x4a, 0x39, 0x01, 0xd5, 0x23, 0xf1, 0xa4, 0x9e, 0x70, 0x6a, 0x93, 0x68, 0x6a, 0x93,
		0x60, 0x6a, 0x93, 0x58, 0x02, 0xa5, 0xfe, 0xea, 0x2e, 0x9e, 0x71, 0x9a, 0x2b, 0x7e, 0x57, 0x83,
		0x2c, 0x7d, 0xa6, 0x7a, 0x55, 0x64, 0xda, 0x7c, 0x75, 0x1a, 0x7c, 0xf5, 0xce, 0xc1, 0x05, 0xbd,
		0x60, 0x83, 0x2e, 0xf0, 0x41, 0x3b, 0x18, 0xa1, 0x1d, 0x9c, 0xd0, 0x0e, 0x56, 0xd0, 0x84, 0x17,
		0x44, 0x61, 0x06, 0x79, 0xb8, 0x11, 0x0a, 0x38, 0x89, 0xdd, 0x96, 0xa0, 0xce, 0xaa, 0xbf, 0xf0,
		0xf0, 0x0b, 0x91, 0x89, 0x9b, 0x36, 0xed, 0x32, 0xb9, 0x36, 0xf0, 0x43, 0x27, 0x18, 0xa2, 0x27,
		0x1c, 0xd1, 0x0d, 0x96, 0x68, 0x0b, 0x4f, 0xb4, 0x85, 0x29, 0xda, 0xc2, 0x15, 0xda, 0xb0, 0x85,
		0x38, 0x7c, 0x09, 0xef, 0x7a, 0x43, 0x07, 0x80, 0xf0, 0xc2, 0xef, 0xf6, 0x99, 0xdd, 0xa5, 0xbd,
		0x91, 0xeb, 0x0a, 0x3b, 0x51, 0xd4, 0x63, 0x41, 0x47, 0x50, 0x3e, 0xfd, 0xf2, 0x65, 0x5a, 0x6a,
		0x4c, 0x2e, 0xc0, 0x18, 0xfa, 0x8a, 0x77, 0xcd, 0xf4, 0xcd, 0x69, 0x35, 0x59, 0x9b, 0xc4, 0x60,
		0x2a, 0xae, 0x1e, 0x49, 0x41, 0x1a, 0x49, 0x01, 0x92, 0x02, 0x24, 0x05, 0x48, 0x0a, 0x90, 0x14,
		0x00, 0x15, 0xe8, 0x99, 0x14, 0x50, 0xe7, 0x36, 0x43, 0x41, 0x03, 0x8c, 0xda, 0x67, 0x8e, 0x3e,
		0x2e, 0xec, 0x05, 0xd5, 0x39, 0x91, 0x5c, 0x13, 0x47, 0xa0, 0x07, 0xe3, 0xa9, 0x1d, 0xc8, 0xd1,
		0x11, 0xec, 0xe8, 0x0d, 0x7a, 0x74, 0x05, 0x3f, 0xda, 0x83, 0x20, 0xed, 0xc1, 0x90, 0xf6, 0xa0,
		0x48, 0x0f, 0x70, 0xa4, 0x09, 0x48, 0x0a, 0xb5, 0x41, 0x1b, 0x06, 0x75, 0xc5, 0x6f, 0x0f, 0xb9,
		0x23, 0xd2, 0x05, 0x9d, 0x7c, 0xf6, 0x0c, 0x85, 0x14, 0x34, 0x12, 0xf9, 0xda, 0x76, 0x7a, 0x4c,
		0x9b, 0x51, 0x20, 0xf3, 0x87, 0x5e, 0x31, 0x31, 0xb8, 0xd0, 0x17, 0xdc, 0xd1, 0x2e, 0x98, 0x87,
		0xc2, 0xdf, 0xd8, 0xfd, 0x21, 0xd3, 0x07, 0xae, 0xae, 0xc8, 0x7f, 0xee, 0xd9, 0x6d, 0xc1, 0x5d,
		0xe7, 0x8c, 0xf7, 0xb8, 0xf0, 0x35, 0xfe, 0x21, 0x97, 0xac, 0x67, 0x0b, 0xfe, 0x38, 0xb9, 0x17,
		0x5d, 0xbb, 0xef, 0x33, 0xed, 0x7e, 0xc5, 0xf8, 0xb3, 0x86, 0xa6, 0x6b, 0xff, 0xd4, 0xdf, 0x74,
		0x0b, 0xf9, 0x7c, 0x36, 0x0f, 0xf3, 0x85, 0xf9, 0xee, 0x01, 0x36, 0xd7, 0x4f, 0xda, 0x26, 0x72,
		0x9e, 0x08, 0xcd, 0x8c, 0xfd, 0x14, 0x9e, 0x6d, 0x0d, 0x1d, 0x5f, 0xd8, 0x77, 0x7d, 0xcd, 0xb2,
		0x1f, 0x8f, 0x75, 0x99, 0xc7, 0x9c, 0x36, 0x40, 0xb9, 0xc4, 0x54, 0xf3, 0xfa, 0xfc, 0xd4, 0xc8,
		0x65, 0x8a, 0x69, 0xc3, 0x32, 0x8e, 0x8d, 0x13, 0xd7, 0xeb, 0x30, 0xcf, 0xf8, 0x6a, 0x0b, 0xf6,
		0xc3, 0x7e, 0x32, 0x6a, 0xb3, 0x65, 0xf6, 0x46, 0xce, 0x38, 0x38, 0xf9, 0x5a, 0xb3, 0x72, 0x09,
		0x53, 0x43, 0x0c, 0xa3, 0x29, 0x9d, 0xb8, 0x48, 0xad, 0x17, 0xb4, 0xe2, 0xc2, 0x42, 0x34, 0x45,
		0x01, 0xba, 0x33, 0x8c, 0xe1, 0x0f, 0x59, 0x66, 0x1a, 0xdf, 0x69, 0x42, 0x40, 0x3e, 0x90, 0x56,
		0x27, 0xe4, 0x83, 0xed, 0xd5, 0x23, 0xf0, 0x17, 0xfa, 0xac, 0xf9, 0x59, 0x41, 0x08, 0xba, 0xac,
		0xfd, 0x59, 0x04, 0x4c, 0x54, 0xc4, 0x63, 0x15, 0x18, 0x15, 0x71, 0x40, 0xd8, 0x77, 0x43, 0x57,
		0x54, 0xc4, 0x95, 0xe3, 0x54, 0x54, 0xc4, 0xf7, 0x18, 0x81, 0x18, 0xfa, 0x57, 0xc4, 0x0f, 0x35,
		0x2c, 0x88, 0xe7, 0x51, 0x10, 0x8f, 0xf9, 0x81, 0x82, 0xb8, 0x5c, 0xe1, 0x51, 0x10, 0xa7, 0xe2,
		0x1a, 0x51, 0x10, 0x57, 0x60, 0xba, 0xbb, 0x50, 0x10, 0xcf, 0xe4, 0x51, 0x0e, 0x87, 0xf1, 0xee,
		0x03, 0x30, 0xd7, 0x4f, 0x5a, 0x94, 0xc3, 0xa3, 0x34, 0x33, 0x94, 0xc3, 0x01, 0xc9, 0xdf, 0x95,
		0x67, 0xa2, 0x1c, 0x4e, 0x3e, 0xb1, 0x46, 0x39, 0x9c, 0xde, 0x0f, 0x41, 0x39, 0x1c, 0xd2, 0xee,
		0x09, 0xf2, 0x41, 0x39, 0x3c, 0x02, 0x7f, 0x11, 0xd4, 0x94, 0x1f, 0x67, 0xe9, 0xa8, 0x8e, 0xf5,
		0xf0, 0xa9, 0xec, 0x28, 0x88, 0xc7, 0x21, 0x2e, 0x0a, 0xe2, 0x12, 0xb5, 0x19, 0x05, 0x71, 0x45,
		0xe0, 0x15, 0x05, 0x71, 0xe5, 0x48, 0x15, 0x05, 0xf1, 0x3d, 0xc6, 0x20, 0x86, 0xde, 0x05, 0xf1,
		0x3b, 0xee, 0xd8, 0xde, 0x93, 0x86, 0x15, 0xf1, 0x92, 0x46, 0x22, 0x57, 0x99, 0xd3, 0x0b, 0x86,
		0x6f, 0x82, 0x7f, 0x8b, 0xf9, 0x4a, 0xef, 0x44, 0x49, 0x3c, 0x8d, 0xaa, 0x9a, 0x62, 0xe7, 0x88,
		0x92, 0xb8, 0x02, 0xd3, 0xc5, 0x1a, 0x71, 0x98, 0x2f, 0xcc, 0xd7, 0x00, 0x35, 0x1c, 0xdb, 0x03,
		0x45, 0xf1, 0x28, 0xcd, 0x0c, 0x45, 0x71, 0x80, 0xf2, 0x77, 0xe5, 0x9a, 0x28, 0x8a, 0x93, 0xcf,
		0xad, 0x51, 0x14, 0xa7, 0xf7, 0x43, 0x50, 0x14, 0x87, 0xb4, 0x7b, 0x82, 0x7c, 0x50, 0x14, 0x8f,
		0x06, 0x97, 0x31, 0xa7, 0xc3, 0x3a, 0xfa, 0x95, 0xc4, 0x43, 0xc9, 0x51, 0x10, 0x8f, 0x43, 0x5c,
		0x14, 0xc4, 0x25, 0xea, 0x32, 0x0a, 0xe2, 0x8a, 0x80, 0x2b, 0x0a, 0xe2, 0xca, 0x51, 0x2a, 0x0a,
		0xe2, 0x7b, 0x8c, 0x3f, 0x0c, 0xcd, 0x0b, 0xe2, 0xae, 0xdb, 0x67, 0xb6, 0xa3, 0x61, 0x45, 0x3c,
		0x9d, 0x86, 0x0a, 0x47, 0x0b, 0xa3, 0x41, 0x6f, 0x4a, 0x7f, 0x80, 0xde, 0x04, 0x3a, 0x94, 0x81,
		0x12, 0x41, 0x6f, 0x52, 0x04, 0x8e, 0xa0, 0x37, 0x21, 0xed, 0x47, 0x1e, 0xa0, 0x37, 0xf7, 0x06,
		0x9b, 0x99, 0xee, 0x40, 0x70, 0xd7, 0xb1, 0xfb, 0xfa, 0xd1, 0x9b, 0xa1, 0xe4, 0xa0, 0x37, 0xe3,
		0x10, 0x17, 0xf4, 0xa6, 0x4c, 0x5d, 0x06, 0xbd, 0xa9, 0x06, 0xb8, 0x82, 0xde, 0x54, 0x8e, 0x52,
		0x41, 0x6f, 0xee, 0x31, 0xfe, 0x30, 0x40, 0x6f, 0xaa, 0x81, 0x21, 0xa0, 0x37, 0x23, 0xbd, 0xaa,
		0xa0, 0x37, 0x55, 0x3c, 0x40, 0x6f, 0x02, 0x1d, 0xca, 0x40, 0x89, 0xa0, 0x37, 0x29, 0x02, 0x47,
		0xd0, 0x9b, 0x90, 0xf6, 0x23, 0x0f, 0xd0, 0x9b, 0x7b, 0x83, 0xcd, 0xcc, 0x81, 0xed, 0x09, 0xae,
		0x23, 0xbb, 0x39, 0x17, 0x1c, 0xe4, 0x66, 0x1c, 0xe2, 0x82, 0xdc, 0x94, 0xa8, 0xca, 0x20, 0x37,
		0x15, 0xc1, 0x56, 0x90, 0x9b, 0xca, 0x31, 0x2a, 0xc8, 0xcd, 0x3d, 0x46, 0x1f, 0x06, 0xc8, 0x4d,
		0x35, 0x30, 0x04, 0xe4, 0x66, 0xa4, 0x57, 0x15, 0xe4, 0xa6, 0x8a, 0x07, 0xc8, 0x4d, 0xa0, 0x43,
		0x19, 0x28, 0x11, 0xe4, 0x26, 0x45, 0xe0, 0x08, 0x72, 0x13, 0xd2, 0x7e, 0xe4, 0x01, 0x72, 0x73,
		0x6f, 0xb0, 0x99, 0x29, 0x3c, 0xdb, 0xf1, 0xf9, 0x6c, 0x36, 0x97, 0x66, 0xfc, 0xe6, 0x92, 0xec,
		0xa0, 0x38, 0xe3, 0x10, 0x17, 0x14, 0xa7, 0x44, 0x6d, 0x06, 0xc5, 0xa9, 0x08, 0xbc, 0x82, 0xe2,
		0x54, 0x8e, 0x54, 0x41, 0x71, 0xee, 0x31, 0x06, 0x31, 0x40, 0x71, 0xaa, 0x81, 0x21, 0xa0, 0x38,
		0x23, 0xbd, 0xaa, 0xa0, 0x38, 0x55, 0x3c, 0x40, 0x71, 0x02, 0x1d, 0xca, 0x40, 0x89, 0xa0, 0x38,
		0x29, 0x02, 0x47, 0x50, 0x9c, 0x90, 0xf6, 0x23, 0x0f, 0x50, 0x9c, 0xfb, 0x20, 0x21, 0x71, 0xe4,
		0x68, 0x1e, 0x3b, 0x8e, 0x2b, 0x6c, 0xc1, 0x5d, 0x3d, 0xb6, 0xc8, 0x31, 0xfd, 0xf6, 0x3d, 0x7b,
		0xb0, 0x07, 0x76, 0xb0, 0x73, 0x92, 0x99, 0x74, 0x07, 0xcc, 0x69, 0x07, 0x14, 0xa1, 0xe5, 0x30,
		0xf1, 0xc3, 0xf5, 0xfe, 0xb5, 0xf8, 0x04, 0xfd, 0x3a, 0x6d, 0x96, 0x7c, 0xfd, 0x82, 0xbf, 0xf2,
		0x4a, 0x72, 0x30, 0xf3, 0xcf, 0x7e, 0xf8, 0x2c, 0x79, 0xd7, 0x1b, 0x24, 0x3d, 0x7e, 0x97, 0xb4,
		0xbb, 0xdc, 0xf2, 0xed, 0x2e, 0xf7, 0xc3, 0x67, 0xc9, 0x7e, 0xe6, 0x71, 0xe0, 0x58, 0xec, 0x71,
		0xe0, 0x24, 0xfb, 0x53, 0xba, 0x20, 0xe9, 0xb9, 0x43, 0xc1, 0xfc, 0xe9, 0x3f, 0x56, 0x87, 0xfb,
		0x82, 0x3b, 0xbd, 0x21, 0xf7, 0xef, 0x99, 0x97, 0x14, 0x4f, 0x03, 0x66, 0xb9, 0x0e, 0xb3, 0x98,
		0xb8, 0x67, 0x9e, 0xc3, 0x84, 0x65, 0x0f, 0x85, 0x3b, 0xf9, 0x50, 0xdb, 0x7d, 0x64, 0xde, 0xd3,
		0xe2, 0x03, 0xc1, 0xd1, 0xc9, 0xc9, 0x6f, 0xf2, 0x83, 0xff, 0x27, 0x87, 0xce, 0xbf, 0x8e, 0xfb,
		0xc3, 0xb1, 0x6c, 0x21, 0x3c, 0x7e, 0x17, 0x9c, 0x61, 0xe5, 0xa5, 0xa4, 0x2f, 0x6c, 0xc1, 0x68,
		0x87, 0x13, 0xba, 0xa6, 0x49, 0x53, 0x32, 0xa2, 0xce, 0x62, 0x82, 0x41, 0xc3, 0xcd, 0x69, 0x27,
		0x5a, 0x4b, 0x14, 0x7f, 0x9a, 0x55, 0xee, 0x8b, 0x63, 0x21, 0x3c, 0xd2, 0xae, 0xcc, 0xbc, 0xe0,
		0x4e, 0xb9, 0xcf, 0x26, 0xf0, 0x91, 0xf8, 0x7e, 0x3a, 0xe6, 0x85, 0xfd, 0x73, 0x49, 0xd2, 0xf4,
		0x61, 0x2e, 0x57, 0x28, 0xe6, 0x72, 0xa9, 0x62, 0xb6, 0x98, 0x2a, 0xe5, 0xf3, 0xe9, 0x42, 0x9a,
		0xf0, 0xae, 0x46, 0xe6, 0xd5, 0x04, 0x89, 0xb3, 0xce, 0xc9, 0x44, 0x75, 0x9d, 0x61, 0xbf, 0xaf,
		0x83, 0xa8, 0xdf, 0x7c, 0xe6, 0x91, 0xde, 0xa0, 0x88, 0xaa, 0x87, 0xd2, 0x04, 0xc6, 0x00, 0xbe,
		0xcc, 0x5f, 0x22, 0x4c, 0x61, 0x98, 0xbe, 0xf0, 0x86, 0x6d, 0xe1, 0xcc, 0x28, 0xb2, 0xcb, 0xe9,
		0x55, 0xaf, 0xcc, 0x2e, 0x7a, 0x6b, 0x9e, 0xd3, 0xb7, 0x4e, 0x7a, 0x83, 0xd6, 0x35, 0xbf, 0x6b,
		0x1d, 0x77, 0x79, 0xdd, 0xee, 0xf2, 0x56, 0x35, 0x73, 0x33, 0x70, 0xca, 0x8f, 0x03, 0xa7, 0x55,
		0x75, 0xdb, 0x93, 0x37, 0xae, 0x27, 0x17, 0xe6, 0x6c, 0xf9, 0xaa, 0xb6, 0x1a, 0x4f, 0x03, 0x76,
		0xe5, 0xb0, 0xe0, 0x9d, 0x56, 0xcd, 0x16, 0xf7, 0xad, 0x6f, 0xd3, 0x2b, 0x73, 0x1c, 0x5e, 0x98,
		0x4f, 0xc0, 0x4b, 0xfa, 0x49, 0x44, 0xcc, 0x2f, 0x52, 0xf7, 0x87, 0xfb, 0xea, 0x07, 0x69, 0x19,
		0x37, 0x1d, 0x13, 0xa2, 0x21, 0x09, 0x11, 0x23, 0x9e, 0xa7, 0x5b, 0x03, 0xc6, 0x3c, 0x8b, 0x0f,
		0x8c, 0xe0, 0xdf, 0x89, 0x42, 0x59, 0xbc, 0x63, 0xf8, 0x41, 0x39, 0xc3, 0x5a, 0xa3, 0xa9, 0xf3,
		0xb7, 0xec, 0x4e, 0xc7, 0x63, 0xbe, 0x6f, 0x75, 0xed, 0x07, 0xde, 0xa7, 0xb2, 0x89, 0x37, 0xcd,
		0xd4, 0x8c, 0x6e, 0x2a, 0xa6, 0x55, 0xea, 0x45, 0x38, 0xd5, 0x22, 0x9c, 0x5a, 0x51, 0xf1, 0x36,
		0x44, 0xa1, 0xc2, 0x5e, 0x40, 0x04, 0x42, 0x59, 0x90, 0xd4, 0xac, 0x87, 0x06, 0x0e, 0x52, 0x8f,
		0x3a, 0xd4, 0x4a, 0xa0, 0xd8, 0x03, 0x51, 0xf3, 0x3c, 0xbb, 0xee, 0x71, 0xd4, 0x1a, 0x9d, 0x3a,
		0x55, 0x57, 0xa8, 0xe6, 0xe6, 0xb4, 0x48, 0xa7, 0x5a, 0xbb, 0xc3, 0x76, 0xaf, 0xa9, 0x38, 0x8a,
		0xcd, 0x7e, 0xde, 0xfa, 0xa9, 0x58, 0x0c, 0x2a, 0x2b, 0x4b, 0x28, 0xad, 0x18, 0xa1, 0xb9, 0x12,
		0x84, 0x5a, 0x0f, 0x1f, 0xd9, 0x95, 0x1b, 0x64, 0x1b, 0xec, 0xc8, 0xae, 0xb4, 0xd8, 0x6f, 0x00,
		0x76, 0xc6, 0x69, 0xf0, 0x31, 0x26, 0xf3, 0x39, 0x1d, 0xeb, 0x0e, 0x37, 0x1e, 0xf6, 0x39, 0x15,
		0xbb, 0xa6, 0xb5, 0x68, 0x93, 0xdc, 0xa2, 0x4c, 0x8a, 0x8b, 0x2e, 0x69, 0x2f, 0xaa, 0xa4, 0xda,
		0x16, 0x4f, 0x7e, 0x51, 0x24, 0xf9, 0x1e, 0x76, 0xf2, 0x8b, 0x1a, 0x51, 0xeb, 0x59, 0xbe, 0x5b,
		0xe4, 0x16, 0x1d, 0x12, 0x0c, 0x7f, 0x2f, 0xb2, 0xc6, 0x43, 0x42, 0x32, 0x55, 0x99, 0xd3, 0x0b,
		0xc8, 0x22, 0x5a, 0xeb, 0xd5, 0x08, 0xd6, 0xfb, 0x2f, 0x38, 0xdd, 0xc6, 0x2c, 0xf3, 0xc6, 0xee,
		0x0f, 0x27, 0x2a, 0x9f, 0x21, 0xda, 0x8b, 0x69, 0x9e, 0x7b, 0x76, 0x5b, 0x70, 0xd7, 0x39, 0xe3,
		0x3d, 0x4e, 0xb9, 0x69, 0xd4, 0xbc, 0x64, 0x3d, 0x7b, 0x36, 0xc8, 0x85, 0x66, 0x0f, 0x23, 0xc1,
		0xfe, 0x45, 0xf3, 0xc2, 0xfe, 0x09, 0xdb, 0x80, 0x6d, 0x00, 0x98, 0x11, 0x95, 0xa6, 0x49, 0x08,
		0x71, 0xd4, 0x6c, 0x21, 0x98, 0xe7, 0x90, 0x83, 0x1c, 0xe6, 0x6d, 0xca, 0x2a, 0xd9, 0x56, 0xf7,
		0xd8, 0x3a, 0x6f, 0xfe, 0x1f, 0x13, 0xb7, 0x6e, 0xdd, 0xad, 0xbb, 0xaa, 0x57, 0xfe, 0x22, 0x7b,
		0xff, 0xfe, 0x59, 0xbe, 0x81, 0x7f, 0x10, 0xba, 0x83, 0xe8, 0x14, 0xa0, 0x02, 0x5c, 0xcc, 0xb0,
		0xd8, 0x2c, 0xec, 0x1e, 0x41, 0xba, 0x76, 0x59, 0x3a, 0xf0, 0xb6, 0xeb, 0xc4, 0x01, 0x6f, 0xfb,
		0x0e, 0x7d, 0x02, 0x6f, 0xfb, 0x2e, 0x4d, 0x07, 0x6f, 0xbb, 0xa5, 0x80, 0xe0, 0x6d, 0x35, 0x4a,
		0xe0, 0x29, 0xf3, 0xb6, 0xf4, 0xe2, 0xe0, 0x72, 0x2c, 0x2c, 0x12, 0x12, 0xe9, 0xda, 0x76, 0x7a,
		0x0c, 0xf4, 0xed, 0xef, 0x2f, 0x94, 0x16, 0xf4, 0x2d, 0x18, 0xaa, 0x6d, 0x3d, 0x08, 0xd8, 0xdb,
		0x0f, 0x98, 0x86, 0x0e, 0xec, 0x6d, 0x2e, 0x53, 0xca, 0x95, 0x0a, 0xc5, 0x4c, 0x29, 0x0f, 0x1b,
		0xd9, 0x75, 0x1b, 0x01, 0x8b, 0xbb, 0xf6, 0x01, 0x22, 0x89, 0x82, 0x04, 0x58, 0x72, 0xf2, 0x52,
		0x9e, 0xdd, 0x5d, 0x72, 0x42, 0x60, 0x3c, 0x99, 0xc2, 0x25, 0x27, 0x9f, 0xf6, 0xc8, 0xb8, 0xe6,
		0xeb, 0xd5, 0x99, 0xcf, 0x0d, 0x02, 0xc9, 0x27, 0x8d, 0xa5, 0xe6, 0x74, 0x96, 0x96, 0x93, 0x5e,
		0x4a, 0x4e, 0x68, 0xe9, 0x38, 0xa1, 0xa5, 0xe2, 0xaa, 0x0c, 0x99, 0xd0, 0xf8, 0x78, 0x42, 0xe3,
		0xe0, 0x09, 0x2d, 0xcb, 0xba, 0x3e, 0x3f, 0x2d, 0xe6, 0xb2, 0x99, 0x23, 0xe3, 0xe4, 0x6b, 0xcd,
		0xb8, 0xa8, 0x55, 0xeb, 0xd6, 0x89, 0xed, 0xb3, 0x8e, 0x51, 0x9e, 0xb9, 0x5d, 0xe3, 0xa6, 0x76,
		0x89, 0x05, 0x5b, 0x6b, 0x23, 0x14, 0xd5, 0x21, 0xea, 0x7a, 0xac, 0xd9, 0x7a, 0x93, 0xe2, 0xed,
		0x7b, 0x6e, 0xf3, 0x69, 0xbf, 0x72, 0x5b, 0x55, 0x51, 0x8a, 0x48, 0x0e, 0xb7, 0xbb, 0xb9, 0x9b,
		0xa9, 0x74, 0xc1, 0xbc, 0x94, 0x29, 0x24, 0x6a, 0x7c, 0x95, 0x7c, 0x0f, 0x21, 0xf7, 0x8c, 0x92,
		0x3d, 0x82, 0x6a, 0x4f, 0xb0, 0x43, 0x1e, 0x40, 0xae, 0x3d, 0xc8, 0xd3, 0x4a, 0x89, 0x1a, 0x69,
		0x06, 0xd7, 0x58, 0xdc, 0x7b, 0x8c, 0x59, 0xdc, 0x69, 0xf7, 0x87, 0x3e, 0x7f, 0x64, 0xd6, 0xc3,
		0xb0, 0x2f, 0x78, 0xdb, 0xf6, 0x85, 0xa5, 0xb4, 0x7b, 0x6e, 0xb1, 0x61, 0xed, 0x3b, 0x84, 0x94,
		0x6c, 0xcd, 0x6a, 0xe6, 0x82, 0x28, 0x6b, 0x8a, 0x53, 0xd9, 0xfc, 0x46, 0xa3, 0xc9, 0x4d, 0x75,
		0x9a, 0x48, 0xa6, 0x69, 0x8d, 0x4c, 0x0e, 0x48, 0xa6, 0x09, 0x6d, 0xb7, 0x71, 0x8b, 0xaa, 0xb9,
		0x1b, 0xcb, 0xde, 0x7f, 0x8a, 0xf4, 0x95, 0x99, 0xde, 0x9a, 0x78, 0xa4, 0x32, 0xf7, 0x50, 0x3c,
		0x94, 0x4a, 0x79, 0x67, 0x36, 0x85, 0x4e, 0x6c, 0x5a, 0x9d, 0xd7, 0x54, 0x38, 0x4c, 0x72, 0x9d,
		0xd5, 0xe4, 0x08, 0x4b, 0x72, 0x9d, 0xd3, 0xfb, 0x55, 0xfd, 0x55, 0x3d, 0x44, 0x8a, 0xd6, 0xb2,
		0x24, 0x8a, 0x6d, 0xd8, 0x44, 0x96, 0x21, 0x61, 0xe2, 0x22, 0xf9, 0xa0, 0x47, 0x2d, 0xf8, 0x91,
		0x0d, 0x82, 0x64, 0x83, 0x21, 0xd9, 0xa0, 0xa8, 0x36, 0x38, 0x2a, 0x0e, 0x92, 0xe1, 0x5d, 0x21,
		0xb3, 0x6c, 0x28, 0xf4, 0x3b, 0x7d, 0x66, 0x77, 0x3d, 0xd6, 0xa5, 0xe0, 0x74, 0xe6, 0x39, 0x18,
		0x81, 0x25, 0x42, 0x66, 0x6d, 0x46, 0xea, 0x7f, 0xf9, 0x32, 0xed, 0x64, 0x4c, 0xbe, 0x88, 0xe7,
		0x7b, 0xad, 0xc3, 0x84, 0xba, 0x84, 0x42, 0x99, 0xe8, 0x74, 0x0b, 0xcd, 0x1f, 0x04, 0x57, 0x06,
		0x6a, 0xd2, 0x3d, 0x44, 0x15, 0x84, 0xac, 0x03, 0x23, 0xd4, 0xba, 0x89, 0xc8, 0xe3, 0x92, 0xb5,
		0xf8, 0x44, 0x8f, 0xee, 0x22, 0x1a, 0x08, 0x86, 0x48, 0x14, 0x80, 0x9b, 0x83, 0x9b, 0x83, 0x9b,
		0x83, 0x9b, 0xdb, 0x7d, 0x29, 0x9a, 0xd8, 0x36, 0x47, 0xba, 0xd5, 0xb8, 0x1e, 0xef, 0x71, 0xc7,
		0x16, 0xdc, 0xe9, 0x4d, 0xcb, 0x82, 0x9e, 0xc5, 0x07, 0x74, 0xb8, 0xdd, 0xf5, 0xe2, 0x81, 0xe4,
		0x05, 0xc9, 0xfb, 0x3b, 0xc5, 0x01, 0xc9, 0xfb, 0x36, 0xc0, 0x01, 0x92, 0xf7, 0xdd, 0xe8, 0x02,
		0x24, 0x2f, 0x91, 0xd4, 0x08, 0x24, 0xef, 0x1b, 0xc2, 0x14, 0x4d, 0x92, 0x77, 0x7d, 0x60, 0x07,
		0xdb, 0x0b, 0xb6, 0x17, 0x34, 0x08, 0x68, 0x10, 0xd0, 0x20, 0xa0, 0x41, 0x40, 0x83, 0x80, 0x06,
		0x91, 0x4e, 0x83, 0xb8, 0x13, 0x18, 0x62, 0xf5, 0xe7, 0xbb, 0x0d, 0x11, 0x63, 0x41, 0x5e, 0x48,
		0x07, 0x12, 0x04, 0x24, 0x08, 0x48, 0x10, 0x90, 0x20, 0x20, 0x41, 0x40, 0x82, 0x80, 0x04, 0xd1,
		0x9a, 0x04, 0x79, 0x11, 0xd7, 0xc1, 0x81, 0x80, 0x03, 0x01, 0x07, 0x02, 0x0e, 0x04, 0x1c, 0x08,
		0x38, 0x10, 0x70, 0x20, 0xe0, 0x40, 0xa4, 0x59, 0xcd, 0xc0, 0x16, 0xf7, 0x3e, 0x1d, 0xd2, 0x63,
		0x2a, 0x0e, 0x0d, 0x96, 0x23, 0x0d, 0x96, 0x03, 0x2c, 0x07, 0x58, 0x0e, 0xb0, 0x1c, 0x60, 0x39,
		0x54, 0xdd, 0x15, 0xd5, 0x8b, 0xdf, 0x5f, 0x84, 0x49, 0x7a, 0x7b, 0x72, 0x06, 0x52, 0xd1, 0xda,
		0x8b, 0x33, 0x8d, 0xbd, 0x38, 0xc9, 0x07, 0x51, 0xda, 0xc1, 0x54, 0xa7, 0x6c, 0x1d, 0x7b, 0x71,
		0xee, 0x54, 0xb0, 0x25, 0x96, 0x90, 0x13, 0xf1, 0x5c, 0x54, 0x82, 0xf0, 0x22, 0x18, 0x33, 0x1a,
		0x0b, 0x16, 0x36, 0xc7, 0x65, 0x46, 0x61, 0xc9, 0xc2, 0xa6, 0x10, 0x4d, 0x6c, 0xef, 0x37, 0x72,
		0xa1, 0x9a, 0x72, 0xc8, 0xd6, 0x23, 0x74, 0x53, 0x0f, 0xe1, 0xda, 0x84, 0x72, 0x6d, 0x42, 0xba,
		0x36, 0xa1, 0x9d, 0x56, 0x88, 0x27, 0x16, 0xea, 0xc3, 0xbb, 0x48, 0x6e, 0xfb, 0xed, 0x15, 0xbf,
		0x47, 0xa7, 0xdb, 0x60, 0x63, 0x26, 0x5c, 0x24, 0x28, 0xdb, 0x4a, 0x37, 0xc2, 0x1c, 0xaa, 0x60,
		0x5b, 0x53, 0xea, 0x86, 0x39, 0x45, 0x95, 0x03, 0x5b, 0xdc, 0x5b, 0xbc, 0x43, 0x1c, 0xfb, 0xce,
		0xa5, 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06,
		0x00, 0xa6, 0x0a, 0x80, 0xe7, 0x78, 0x05, 0x28, 0x98, 0x3c, 0x0a, 0xf6, 0x83, 0x88, 0x6a, 0xd9,
		0x9d, 0x8e, 0xc7, 0x7c, 0xdf, 0xea, 0xda, 0x0f, 0xbc, 0xff, 0x44, 0x17, 0x0e, 0xaf, 0x17, 0x17,
		0xb8, 0x18, 0xb8, 0x18, 0xb8, 0x18, 0xb8, 0x18, 0xb8, 0x18, 0xb8, 0x18, 0xb8, 0x18, 0xb8, 0x98,
		0x20, 0x2e, 0x5e, 0x0f, 0x5c, 0x00, 0x90, 0x75, 0x01, 0xc8, 0x6b, 0xb6, 0xa9, 0x25, 0x8f, 0x92,
		0xd7, 0xc9, 0x0c, 0xa8, 0x0c, 0xa8, 0x0c, 0xa8, 0x0c, 0xa8, 0x0c, 0xa8, 0x0c, 0xa8, 0x0c, 0xa8,
		0x0c, 0xa8, 0x4c, 0x17, 0x2a, 0xaf, 0x43, 0x2f, 0xc0, 0xcb, 0xf4, 0xf1, 0xf2, 0xe4, 0x1e, 0x12,
		0x86, 0xc6, 0x81, 0x78, 0x34, 0x51, 0x70, 0x1a, 0x28, 0x18, 0x28, 0x18, 0x28, 0x18, 0x28, 0x18,
		0x28, 0x18, 0x91, 0x75, 0xfd, 0x5d, 0xa4, 0xb6, 0x78, 0x28, 0x14, 0xcc, 0xee, 0x3c, 0x32, 0x4f,
		0x70, 0x9f, 0x75, 0x2c, 0xe1, 0x5a, 0x03, 0xc6, 0x3c, 0xba, 0xce, 0x65, 0xee, 0xa2, 0xd7, 0xc8,
		0x4c, 0xd4, 0x78, 0x69, 0xd2, 0x64, 0xe4, 0x81, 0x82, 0x0e, 0x80, 0x41, 0x2f, 0xe0, 0xa0, 0x0b,
		0x80, 0xd0, 0x0e, 0x48, 0x68, 0x07, 0x28, 0xb4, 0x03, 0x16, 0x34, 0x01, 0x06, 0x51, 0xa0, 0x11,
		0xde, 0x5d, 0xb2, 0xb4, 0xdb, 0x8a, 0xdf, 0xe4, 0x83, 0x79, 0x75, 0x95, 0xb2, 0xdf, 0x9c, 0xa7,
		0xfa, 0x25, 0xc2, 0x32, 0xce, 0xee, 0xf9, 0x2d, 0x69, 0xbf, 0x43, 0x3b, 0xee, 0xbc, 0xd2, 0xcc,
		0xc7, 0x9c, 0x06, 0xba, 0xb9, 0xa2, 0xa3, 0x87, 0x1a, 0xc8, 0x5a, 0xb3, 0x85, 0x60, 0x9e, 0x43,
		0x5e, 0x5d, 0x43, 0x81, 0x0f, 0x6e, 0x53, 0x56, 0xa9, 0x39, 0xba, 0x4d, 0x5b, 0xa5, 0xe6, 0xf4,
		0x69, 0x3a, 0xf8, 0xe7, 0x39, 0x33, 0x1e, 0x65, 0x6e, 0x53, 0x56, 0x6e, 0xf6, 0x6a, 0x26, 0x7f,
		0x9b, 0xb2, 0xf2, 0xcd, 0xc4, 0xc1, 0xf7, 0xef, 0x5f, 0xde, 0x7b, 0x4c, 0xe2, 0x39, 0x3b, 0x36,
		0xc9, 0x5f, 0x8e, 0xa6, 0x0e, 0xea, 0x75, 0x55, 0xaf, 0xfc, 0xa5, 0x9d, 0x8e, 0xfd, 0x73, 0x20,
		0x4b, 0xcb, 0x12, 0x7f, 0x68, 0xa0, 0x67, 0xa4, 0x25, 0x1c, 0x7f, 0x46, 0x98, 0x8d, 0x2c, 0xcc,
		0x16, 0x10, 0x66, 0x11, 0x66, 0xa7, 0x61, 0x36, 0xf0, 0x66, 0xb6, 0xd5, 0x3d, 0xb6, 0xce, 0x9b,
		0xcf, 0xe9, 0xcf, 0xb9, 0xf1, 0x51, 0xe2, 0xb9, 0x38, 0x7e, 0xfd, 0xe2, 0x68, 0xdd, 0xc7, 0xd2,
		0x9f, 0x8b, 0xe3, 0xa3, 0x0d, 0xef, 0x14, 0xc6, 0x47, 0x6f, 0xfc, 0x8e, 0xfc, 0xf8, 0x60, 0xe5,
		0xa3, 0x93, 0xd7, 0x33, 0x9b, 0x0e, 0xc8, 0x6d, 0x38, 0x20, 0xbb, 0xe9, 0x80, 0xec, 0x86, 0x03,
		0x36, 0x8a, 0x94, 0xd9, 0x70, 0x40, 0x7e, 0x3c, 0x5a, 0xf9, 0xfc, 0xc1, 0xfa, 0x8f, 0x16, 0xc6,
		0x89, 0xd1, 0xa6, 0xf7, 0x8a, 0xe3, 0xd1, 0x51, 0x22, 0x01, 0xe0, 0xb1, 0xf7, 0xc0, 0x03, 0x66,
		0x27, 0xdf, 0xec, 0x00, 0xc4, 0x76, 0x92, 0x17, 0xa4, 0x7b, 0xdd, 0xa8, 0x32, 0x96, 0x55, 0xee,
		0x8b, 0x63, 0x21, 0x3c, 0xda, 0xac, 0xe5, 0x05, 0x77, 0xca, 0x7d, 0xf6, 0xc0, 0x1c, 0xe1, 0xd3,
		0xad, 0x9b, 0x4d, 0x25, 0xb5, 0x7f, 0x2e, 0x49, 0x9a, 0x3e, 0xcc, 0xe5, 0x0a, 0xc5, 0x5c, 0x2e,
		0x55, 0xcc, 0x16, 0x53, 0xa5, 0x7c, 0x3e, 0x5d, 0x48, 0xe7, 0x09, 0x0b, 0x7f, 0xe5, 0x75, 0x98,
		0xc7, 0x3a, 0x27, 0x4f, 0xe6, 0x91, 0xe1, 0x0c, 0xfb, 0x7d, 0x1d, 0x44, 0xfd, 0xe6, 0x07, 0xc5,
		0xf3, 0xae, 0xdd, 0xf7, 0xd9, 0x27, 0x78, 0x4a, 0x4d, 0x7d, 0x91, 0x69, 0x0b, 0xe1, 0x59, 0xdc,
		0xe9, 0xb0, 0x9f, 0x1a, 0x74, 0x42, 0x2c, 0x64, 0x45, 0x07, 0xc4, 0x47, 0xc4, 0x43, 0x07, 0x44,
		0x84, 0xda, 0x88, 0x0e, 0x88, 0x48, 0x2d, 0x07, 0x1d, 0x10, 0x31, 0x0b, 0x8c, 0x0e, 0x88, 0x5d,
		0xce, 0x27, 0xf4, 0xe9, 0x80, 0xa0, 0xbb, 0x00, 0xe9, 0x75, 0x18, 0xa7, 0xb8, 0x10, 0x69, 0x11,
		0x2a, 0x17, 0x0b, 0x92, 0x7e, 0xfb, 0x5f, 0x00, 0x9c, 0x7c, 0x26, 0xfc, 0xf0, 0xd9, 0x6c, 0x11,
		0xd3, 0x14, 0x4c, 0x01, 0xbe, 0x6b, 0x0b, 0xdf, 0xef, 0xec, 0xf6, 0xbf, 0xc3, 0x01, 0x7d, 0xe8,
		0x3e, 0x93, 0x13, 0xb0, 0x1d, 0xb0, 0x1d, 0xb0, 0x1d, 0xb0, 0x1d, 0xb0, 0x1d, 0xb0, 0x1d, 0xb0,
		0x5d, 0x2b, 0xd8, 0x7e, 0xe7, 0xba, 0x7d, 0x66, 0x3b, 0x3a, 0xc0, 0xf6, 0x34, 0x00, 0xad, 0xbe,
		0x80, 0x96, 0xf9, 0x82, 0xd4, 0xbe, 0x9b, 0x9b, 0x0d, 0x62, 0x2e, 0x29, 0x40, 0x2d, 0x40, 0x2d,
		0x40, 0x2d, 0x40, 0x2d, 0x40, 0x2d, 0x40, 0x2d, 0x40, 0x2d, 0x40, 0x2d, 0x40, 0x2d, 0x8c, 0xe2,
		0xe5, 0x3d, 0x6c, 0xbb, 0x0f, 0x0f, 0x43, 0x87, 0x8b, 0x27, 0x5d, 0x3a, 0x2d, 0x5e, 0x0b, 0x0c,
		0x88, 0x0b, 0x88, 0x0b, 0x88, 0x0b, 0x88, 0x0b, 0x88, 0x0b, 0x88, 0x0b, 0x88, 0x8b, 0x76, 0x8b,
		0x78, 0x20, 0xee, 0xae, 0xb4, 0x5b, 0xcc, 0xd1, 0x13, 0x67, 0x7e, 0xf8, 0xfc, 0x09, 0x1d, 0x17,
		0xbb, 0x81, 0xe5, 0xd9, 0x4f, 0x61, 0x69, 0x87, 0xe7, 0xd7, 0x09, 0x0d, 0x4c, 0x0f, 0x4c, 0x0f,
		0x4c, 0x0f, 0x4c, 0x0f, 0x4c, 0x0f, 0x4c, 0x0f, 0x4c, 0x0f, 0x4c, 0x0f, 0x4c, 0xff, 0xab, 0xff,
		0x96, 0x11, 0xd4, 0x04, 0xd7, 0xbf, 0x40, 0x54, 0xc0, 0xf6, 0xbb, 0x81, 0xed, 0xb9, 0xf3, 0x68,
		0xf7, 0x79, 0xc7, 0xf2, 0x98, 0xed, 0xbb, 0x0e, 0x7d, 0x58, 0xff, 0x4a, 0x5e, 0x20, 0x7a, 0x20,
		0x7a, 0x20, 0x7a, 0x20, 0x7a, 0x20, 0x7a, 0x20, 0x7a, 0x20, 0x7a, 0xbd, 0xc6, 0x42, 0x77, 0x98,
		0x23, 0xb8, 0x78, 0xd2, 0x04, 0xd5, 0x53, 0x1e, 0xa6, 0x52, 0x99, 0x5d, 0xca, 0x13, 0xdb, 0xd7,
		0xc0, 0xc5, 0xcf, 0x15, 0xa0, 0x72, 0x79, 0x73, 0x5c, 0xad, 0x9c, 0xb5, 0xae, 0xaf, 0xbe, 0x35,
		0xca, 0xad, 0xeb, 0xf2, 0x71, 0xfd, 0xea, 0x92, 0xba, 0xb7, 0xbf, 0xb1, 0xfb, 0x43, 0xe6, 0x6b,
		0x31, 0xf7, 0xed, 0x59, 0x8f, 0xc9, 0x74, 0xaf, 0xb5, 0xe1, 0xb8, 0xde, 0xaa, 0x5e, 0x5d, 0xd5,
		0xe8, 0x0f, 0x4d, 0x1b, 0x7f, 0x86, 0x0a, 0xc4, 0xa3, 0x02, 0xa7, 0xd5, 0x6f, 0xf5, 0x46, 0xf9,
		0x1a, 0x7a, 0xb0, 0xef, 0x7a, 0x70, 0x75, 0x79, 0x5e, 0x3e, 0x83, 0x06, 0xec, 0xaf, 0x06, 0x5c,
		0x5d, 0x57, 0xbe, 0x56, 0x2e, 0x8f, 0x1b, 0x57, 0xd7, 0x1a, 0x68, 0x01, 0x69, 0x09, 0x9b, 0xc8,
		0xef, 0x34, 0x97, 0x8a, 0x22, 0x7b, 0xdc, 0xb7, 0xef, 0x58, 0x9f, 0x3e, 0x69, 0x3c, 0x15, 0x13,
		0x5c, 0xf1, 0x47, 0xc4, 0x03, 0x57, 0x1c, 0xa1, 0x22, 0x82, 0x2b, 0x8e, 0xd4, 0x72, 0xc0, 0x15,
		0xc7, 0x2c, 0x30, 0xb8, 0xe2, 0x1d, 0xce, 0x0f, 0x34, 0xe2, 0x8a, 0x7d, 0xe1, 0x71, 0xa7, 0xa7,
		0x03, 0x4d, 0x7c, 0x08, 0x0d, 0x7c, 0xc7, 0x55, 0x63, 0x3f, 0x85, 0x67, 0x5b, 0x43, 0xc7, 0x17,
		0xf6, 0x5d, 0x9f, 0xb8, 0x2e, 0x7a, 0xac, 0xcb, 0x3c, 0xe6, 0xb4, 0xb1, 0x03, 0x63, 0x84, 0x86,
		0x7d, 0x7d, 0x7e, 0x5a, 0xcc, 0x65, 0x33, 0x47, 0xc6, 0xc9, 0xd7, 0x9a, 0x71, 0x51, 0xab, 0xd6,
		0xad, 0x13, 0xdb, 0x67, 0x1d, 0xa3, 0x2c, 0xee, 0x99, 0xe7, 0x30, 0x61, 0xdc, 0xd4, 0x2e, 0x75,
		0xd8, 0x32, 0x4a, 0x13, 0xc8, 0xb4, 0x0e, 0x3a, 0x2d, 0xf4, 0xfa, 0xb3, 0x1e, 0xb2, 0xeb, 0x86,
		0xa2, 0xd6, 0xa2, 0xa9, 0x37, 0x29, 0x3e, 0x38, 0xaf, 0x1d, 0x95, 0xae, 0x09, 0xce, 0x4b, 0x57,
		0xdc, 0x32, 0x25, 0x93, 0x32, 0x9a, 0x90, 0x5e, 0x19, 0xb0, 0x5e, 0x1f, 0x12, 0x0f, 0xac, 0x57,
		0x84, 0x9a, 0x08, 0xd6, 0x2b, 0x26, 0xe8, 0x06, 0xd6, 0x2b, 0x76, 0x9c, 0x06, 0xd6, 0x6b, 0xd7,
		0x38, 0x07, 0xb0, 0x5e, 0x91, 0x47, 0x71, 0xb0, 0x5e, 0xef, 0xba, 0x6a, 0x60, 0xbd, 0xe2, 0x78,
		0x80, 0xf5, 0x02, 0x64, 0x7a, 0x3b, 0x74, 0x02, 0xeb, 0xa5, 0x02, 0x4d, 0x81, 0xf5, 0xda, 0x67,
		0xe9, 0xc0, 0x7a, 0x69, 0x8b, 0x5b, 0xcc, 0xbe, 0xed, 0x0b, 0xeb, 0xc1, 0xed, 0xf0, 0x2e, 0x67,
		0x1d, 0x1d, 0xc8, 0xaf, 0x65, 0x71, 0xc1, 0x81, 0x7d, 0x44, 0x3c, 0x70, 0x60, 0x11, 0x2a, 0x24,
		0x38, 0xb0, 0x98, 0x80, 0x1c, 0x38, 0xb0, 0xd8, 0x51, 0x1b, 0x38, 0xb0, 0x5d, 0x63, 0x20, 0xf4,
		0xe1, 0xc0, 0x04, 0x7f, 0x60, 0x82, 0xb7, 0xff, 0xf5, 0x0b, 0x39, 0x0d, 0x88, 0xb0, 0x43, 0xc2,
		0x22, 0x7e, 0x73, 0xb8, 0xf0, 0x27, 0x97, 0xd4, 0xb1, 0x1d, 0xd7, 0x67, 0x6d, 0xd7, 0xe9, 0xf8,
		0x94, 0x2f, 0xe9, 0xb5, 0xed, 0xf4, 0xc0, 0x3a, 0x45, 0x70, 0x21, 0x2f, 0xb8, 0xa3, 0x0f, 0x45,
		0x13, 0x2c, 0xb0, 0xa6, 0x8b, 0x39, 0x57, 0xe4, 0x3d, 0xf7, 0xec, 0xb6, 0xe0, 0xae, 0x73, 0xc6,
		0x7b, 0x53, 0xf3, 0xd2, 0x45, 0xf0, 0x4b, 0xd6, 0xb3, 0x05, 0x7f, 0x9c, 0x5c, 0xeb, 0xae, 0xdd,
		0xf7, 0x19, 0x56, 0x59, 0x46, 0x61, 0x6a, 0xf6, 0x4f, 0xfd, 0x4c, 0x2d, 0x7d, 0x98, 0xcb, 0x15,
		0x8a, 0xb9, 0x5c, 0xaa, 0x98, 0x2d, 0xa6, 0x4a, 0xf9, 0x7c, 0xba, 0x40, 0x79, 0xd8, 0x05, 0xac,
		0x0f, 0xf8, 0x5a, 0x23, 0xe9, 0xc0, 0x79, 0x6a, 0xeb, 0xdd, 0xcd, 0x87, 0x61, 0x5f, 0x70, 0x3d,
		0x76, 0xe6, 0x5c, 0x88, 0x0a, 0xae, 0xf3, 0x23, 0xe2, 0x81, 0xeb, 0x8c, 0x50, 0x19, 0xc1, 0x75,
		0x46, 0x6a, 0x39, 0xe0, 0x3a, 0x63, 0x16, 0x18, 0x5c, 0xe7, 0x0e, 0xe7, 0x67, 0xd8, 0x9a, 0x33,
		0x86, 0x30, 0x8e, 0xad, 0x39, 0x35, 0x86, 0xb5, 0x03, 0xc6, 0x3c, 0x8b, 0x0f, 0xe8, 0x83, 0xda,
		0xb9, 0xa0, 0x80, 0xb4, 0x80, 0xb4, 0x80, 0xb4, 0x80, 0xb4, 0x80, 0xb4, 0x80, 0xb4, 0x80, 0xb4,
		0x7a, 0x0d, 0xf9, 0x1e, 0x58, 0x76, 0xa7, 0xe3, 0x31, 0xdf, 0xd7, 0x01, 0xd5, 0x96, 0x08, 0xcb,
		0x38, 0xbb, 0xe7, 0xa8, 0x86, 0x47, 0xa6, 0x99, 0x8f, 0x39, 0x0d, 0x74, 0x73, 0x45, 0x47, 0x0f,
		0x35, 0x90, 0xb5, 0x66, 0x0b, 0xc1, 0x3c, 0x47, 0x8b, 0x31, 0xe9, 0x81, 0xc0, 0x07, 0xb7, 0x29,
		0xab, 0xd4, 0x1c, 0xdd, 0xa6, 0xad, 0x52, 0x73, 0xfa, 0x34, 0x1d, 0xfc, 0xf3, 0x9c, 0x19, 0x8f,
		0x32, 0xb7, 0x29, 0x2b, 0x37, 0x7b, 0x35, 0x93, 0xbf, 0x4d, 0x59, 0xf9, 0x66, 0xe2, 0xe0, 0xfb,
		0xf7, 0x2f, 0xef, 0x3d, 0x26, 0xf1, 0x9c, 0x1d, 0xd3, 0x5f, 0xdb, 0xd0, 0xd4, 0x41, 0xbd, 0xae,
		0xea, 0x95, 0xbf, 0xb4, 0xd3, 0xb1, 0x7f, 0x0e, 0x64, 0x69, 0x59, 0xe2, 0x0f, 0x0d, 0xf4, 0x8c,
		0x76, 0x3d, 0xf9, 0x33, 0xc2, 0x6c, 0x64, 0x61, 0xb6, 0x80, 0x30, 0x8b, 0x30, 0x3b, 0x0d, 0xb3,
		0x81, 0x37, 0xb3, 0xad, 0xee, 0xb1, 0x75, 0xde, 0x7c, 0x4e, 0x7f, 0xce, 0x8d, 0x8f, 0x12, 0xcf,
		0xc5, 0xf1, 0xeb, 0x17, 0x47, 0xeb, 0x3e, 0x96, 0xfe, 0x5c, 0x1c, 0x1f, 0x6d, 0x78, 0xa7, 0x30,
		0x3e, 0x7a, 0xe3, 0x77, 0xe4, 0xc7, 0x07, 0x2b, 0x1f, 0x9d, 0xbc, 0x9e, 0xd9, 0x74, 0x40, 0x6e,
		0xc3, 0x01, 0xd9, 0x4d, 0x07, 0x64, 0x37, 0x1c, 0xb0, 0x51, 0xa4, 0xcc, 0x86, 0x03, 0xf2, 0xe3,
		0xd1, 0xca, 0xe7, 0x0f, 0xd6, 0x7f, 0xb4, 0x30, 0x4e, 0x8c, 0x36, 0xbd, 0x57, 0x1c, 0x8f, 0x8e,
		0x12, 0x09, 0x00, 0x8f, 0xbd, 0x07, 0x1e, 0x30, 0x3b, 0xf9, 0x66, 0x07, 0x20, 0xb6, 0x93, 0xbc,
		0xa0, 0x81, 0xc6, 0x3e, 0x9d, 0xa1, 0xf4, 0xb4, 0xb0, 0x38, 0xb0, 0xc5, 0xbd, 0xc5, 0x3b, 0x9a,
		0x94, 0x41, 0xe7, 0xd2, 0xa2, 0x16, 0xfa, 0x11, 0xf1, 0x50, 0x0b, 0x8d, 0x50, 0x1f, 0x51, 0x0b,
		0x8d, 0xd4, 0x72, 0x50, 0x0b, 0x8d, 0x59, 0x60, 0xd4, 0x42, 0x77, 0x98, 0x12, 0xd3, 0xa8, 0x16,
		0x3a, 0xe4, 0x8e, 0xc8, 0x66, 0x34, 0xa8, 0x83, 0x16, 0xb1, 0x2a, 0x78, 0xcb, 0x07, 0x56, 0x05,
		0x47, 0x2b, 0x2c, 0x56, 0x05, 0xcb, 0xf2, 0x55, 0x58, 0x15, 0x1c, 0x83, 0xa9, 0xe9, 0xb8, 0x2a,
		0x38, 0x97, 0x29, 0xe5, 0x4a, 0x85, 0x62, 0xa6, 0x84, 0xb5, 0xc0, 0xb0, 0x39, 0x1d, 0x00, 0x2a,
		0x7d, 0xe9, 0x40, 0x19, 0x6a, 0xeb, 0xd3, 0x4d, 0x3f, 0xa0, 0x13, 0xe6, 0x95, 0x6c, 0xab, 0x6b,
		0x3f, 0xf0, 0xfe, 0x13, 0x7d, 0xee, 0x70, 0xbd, 0xd8, 0x20, 0x11, 0x3f, 0x22, 0x1e, 0x48, 0xc4,
		0x08, 0x15, 0x13, 0x24, 0x62, 0xa4, 0x96, 0x03, 0x12, 0x31, 0x66, 0x81, 0x41, 0x22, 0xee, 0x70,
		0xb6, 0xa6, 0xd3, 0x82, 0x8a, 0x0e, 0x73, 0x04, 0x17, 0x4f, 0x1e, 0xeb, 0xea, 0xb0, 0xa2, 0x82,
		0x70, 0xf2, 0x68, 0x56, 0x66, 0x97, 0xf2, 0xc4, 0xf6, 0x35, 0x70, 0xf1, 0x73, 0x05, 0x38, 0x3e,
		0xaf, 0xb4, 0xea, 0x93, 0xff, 0x35, 0xfe, 0xae, 0x95, 0xa9, 0xbb, 0xf9, 0x80, 0x4c, 0xf0, 0xb5,
		0x68, 0x95, 0xd2, 0x84, 0x9e, 0x99, 0xab, 0x41, 0xa5, 0x76, 0x93, 0x6b, 0x9d, 0x57, 0xaf, 0xfe,
		0x57, 0xaf, 0x95, 0x4f, 0x4d, 0xd0, 0x74, 0xfb, 0xa9, 0x00, 0xd5, 0xe3, 0x93, 0x72, 0xb5, 0x7c,
		0xd6, 0xfa, 0x76, 0x59, 0x39, 0x3d, 0xae, 0x37, 0xa0, 0x07, 0x7b, 0xaa, 0x07, 0xb8, 0xff, 0xfb,
		0x7c, 0xff, 0x0b, 0xf0, 0x03, 0xd0, 0x83, 0x40, 0x0f, 0x70, 0xff, 0xf7, 0xf6, 0xfe, 0x57, 0x33,
		0x37, 0xb5, 0xcb, 0x56, 0x59, 0x8f, 0x0d, 0xb4, 0x70, 0xf7, 0x63, 0xb9, 0xfb, 0x37, 0xb5, 0x6a,
		0x1d, 0x77, 0x7f, 0x0f, 0xef, 0x7e, 0x76, 0x72, 0xf7, 0x03, 0x24, 0x78, 0xf1, 0xad, 0xda, 0x40,
		0x0c, 0x80, 0x1e, 0x00, 0x09, 0x40, 0x0b, 0x0a, 0xf0, 0x06, 0xd0, 0x03, 0xe4, 0x05, 0x7b, 0xae,
		0x05, 0x95, 0xcb, 0xff, 0xd6, 0x1b, 0xc7, 0x8d, 0x32, 0x6e, 0xfe, 0x1e, 0xdf, 0xfc, 0x56, 0xbd,
		0x76, 0x0e, 0x05, 0xd8, 0x67, 0x05, 0x00, 0x31, 0xb0, 0x97, 0x0a, 0x50, 0xbf, 0x6e, 0x94, 0x5b,
		0xb5, 0xab, 0x6a, 0xe5, 0xf4, 0xef, 0x20, 0x31, 0x80, 0x0e, 0xec, 0xbd, 0x0e, 0x14, 0xa0, 0x03,
		0xfb, 0xa7, 0x03, 0x37, 0xb5, 0x4b, 0xbd, 0x1a, 0x06, 0x48, 0x4b, 0xd8, 0x44, 0xdf, 0x9f, 0xe6,
		0x52, 0x11, 0x5e, 0x63, 0xe0, 0xb9, 0x43, 0xc1, 0xac, 0x0e, 0xf7, 0x05, 0x77, 0x7a, 0x43, 0xee,
		0xdf, 0x33, 0x4f, 0x9b, 0x85, 0x06, 0xeb, 0x64, 0xc7, 0x6a, 0x83, 0x8f, 0x88, 0x87, 0xd5, 0x06,
		0x11, 0x6a, 0x27, 0x56, 0x1b, 0x44, 0x6a, 0x39, 0x58, 0x6d, 0x10, 0xb3, 0xc0, 0x58, 0x6d, 0xb0,
		0xc3, 0x59, 0x84, 0x46, 0xab, 0x0d, 0xf4, 0x09, 0xe7, 0x06, 0xf6, 0x71, 0xd8, 0xab, 0xe4, 0x76,
		0x01, 0x3c, 0x85, 0xc7, 0x9d, 0x1e, 0x46, 0x4b, 0x47, 0x0c, 0xee, 0xb4, 0xdf, 0xc1, 0x61, 0x3a,
		0x2c, 0xf6, 0x36, 0x6d, 0xe5, 0x67, 0x7f, 0xe7, 0xc6, 0xa3, 0xc2, 0x62, 0x60, 0xfe, 0x73, 0x76,
		0x3c, 0x2a, 0xe4, 0x97, 0xfe, 0xce, 0x4c, 0xfe, 0x9e, 0xbc, 0x90, 0x99, 0x4d, 0xd4, 0x2f, 0xe4,
		0xf3, 0xd9, 0xe9, 0x4c, 0xfd, 0xa3, 0x75, 0x5f, 0x7e, 0x18, 0x7c, 0x79, 0x76, 0xf6, 0x77, 0x69,
		0x3c, 0xca, 0xdd, 0xa6, 0xd2, 0xb3, 0xbf, 0x0e, 0xc7, 0xa3, 0x5c, 0xe6, 0x36, 0x65, 0x1d, 0xce,
		0xfe, 0x2e, 0x4e, 0xfe, 0x2e, 0xdd, 0xa6, 0xc2, 0x8f, 0x17, 0x82, 0x17, 0x72, 0x4b, 0x1f, 0xc9,
		0x4f, 0x5f, 0x29, 0x05, 0x67, 0x0c, 0x05, 0x9e, 0x0e, 0xe1, 0xb8, 0x4d, 0x59, 0x85, 0x85, 0xd4,
		0xb3, 0xc1, 0x1c, 0x8b, 0xb3, 0x65, 0xc2, 0xd7, 0x96, 0xce, 0x19, 0xbe, 0x34, 0xfd, 0x46, 0x0c,
		0x80, 0x8e, 0xc6, 0x2c, 0x76, 0x65, 0xe7, 0x09, 0x58, 0xc7, 0x0b, 0xeb, 0xc0, 0xa0, 0xe6, 0x1d,
		0xc5, 0xda, 0x00, 0x34, 0x00, 0x34, 0x06, 0xb6, 0xa4, 0xfa, 0xc5, 0x66, 0x41, 0x47, 0x71, 0xc6,
		0x06, 0xa0, 0x0e, 0xa0, 0x0e, 0xcd, 0x55, 0x18, 0xd0, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xd0, 0x80,
		0x38, 0xd7, 0xa1, 0x59, 0xc2, 0x05, 0xd4, 0x01, 0xd4, 0x21, 0x91, 0xeb, 0x80, 0x75, 0x00, 0xd0,
		0x44, 0x08, 0x68, 0x30, 0x61, 0x56, 0xf3, 0xeb, 0x45, 0xb1, 0xfb, 0xeb, 0xd1, 0xee, 0xf3, 0xce,
		0xb4, 0x81, 0x8a, 0x7e, 0xbb, 0xd7, 0xb2, 0xb0, 0xe8, 0xef, 0xfa, 0x88, 0x78, 0xe8, 0xef, 0x8a,
		0x50, 0x1d, 0xd1, 0xdf, 0x15, 0xa9, 0xe5, 0xa0, 0xbf, 0x2b, 0x66, 0x81, 0xd1, 0xdf, 0xb5, 0xc3,
		0xc4, 0x92, 0x46, 0xfd, 0x5d, 0x77, 0xae, 0xdb, 0x67, 0xb6, 0xa3, 0x43, 0x4f, 0x57, 0x1a, 0xd0,
		0x56, 0x43, 0x89, 0x88, 0x99, 0xa8, 0x79, 0xec, 0x38, 0xae, 0xb0, 0x05, 0x77, 0x69, 0x6e, 0x7e,
		0x65, 0xfa, 0xed, 0x7b, 0xf6, 0x60, 0x0f, 0x6c, 0x71, 0x3f, 0x31, 0xcf, 0xa4, 0x3b, 0x60, 0x4e,
		0x3b, 0x00, 0x8a, 0x96, 0xc3, 0xc4, 0x0f, 0xd7, 0xfb, 0xd7, 0xe2, 0x8e, 0x2f, 0x6c, 0xa7, 0xcd,
		0x92, 0xaf, 0x5f, 0xf0, 0x57, 0x5e, 0x49, 0x0e, 0x3c, 0x57, 0xb8, 0x6d, 0xb7, 0xef, 0x87, 0xcf,
		0x92, 0x77, 0xbd, 0x41, 0xd2, 0xe3, 0x77, 0x49, 0xbb, 0xcb, 0x2d, 0xdf, 0xee, 0x72, 0x3f, 0x7c,
		0x96, 0xec, 0x67, 0x1e, 0x07, 0x8e, 0xc5, 0x1e, 0x07, 0x4e, 0xb2, 0x3f, 0x0d, 0x4a, 0xc9, 0x00,
		0xe0, 0xfb, 0xc9, 0x35, 0x6d, 0xa0, 0x49, 0xf1, 0x34, 0x60, 0x96, 0xb8, 0xf7, 0x18, 0xb3, 0xb8,
		0xd3, 0xee, 0x0f, 0x7d, 0xfe, 0xc8, 0xac, 0x87, 0x61, 0x5f, 0xf0, 0xb6, 0xed, 0x0b, 0x8b, 0x89,
		0x7b, 0xe6, 0x39, 0x4c, 0x58, 0xc2, 0xee, 0x2d, 0x7f, 0x36, 0xf8, 0xaa, 0xe4, 0xe4, 0x07, 0xfa,
		0xc1, 0xff, 0x93, 0xbe, 0xb0, 0x05, 0xa3, 0x15, 0xf9, 0xe8, 0x98, 0x10, 0x21, 0xf3, 0x31, 0x87,
		0xce, 0xbf, 0x8e, 0xfb, 0xc3, 0xb1, 0x6c, 0x21, 0x3c, 0x7e, 0x37, 0xd1, 0x0b, 0x72, 0x26, 0xb4,
		0xd8, 0x6a, 0x71, 0x55, 0x56, 0x62, 0x8e, 0x68, 0x1e, 0xd6, 0x88, 0x89, 0x45, 0x35, 0x2b, 0xa5,
		0x9c, 0x8d, 0xea, 0x91, 0x85, 0x52, 0xcf, 0x3e, 0xb5, 0xc9, 0x3a, 0xb5, 0xc9, 0x36, 0xb5, 0xc9,
		0x32, 0x01, 0x59, 0x7f, 0x75, 0x17, 0xcf, 0x38, 0xcd, 0xe5, 0xbf, 0xab, 0x41, 0x96, 0x3e, 0x6d,
		0xbd, 0x2a, 0x32, 0x6d, 0xf2, 0x3a, 0x0d, 0xf2, 0x7a, 0xe7, 0xe0, 0x82, 0x5e, 0xb0, 0x41, 0x17,
		0xf8, 0xa0, 0x1d, 0x8c, 0xd0, 0x0e, 0x4e, 0x68, 0x07, 0x2b, 0x68, 0xc2, 0x0b, 0xa2, 0x30, 0x83,
		0x3c, 0xdc, 0x08, 0x05, 0x9c, 0xc4, 0x6e, 0x4b, 0x50, 0xa7, 0xd8, 0x5f, 0x78, 0xf8, 0x85, 0xc8,
		0xc4, 0x4d, 0x9b, 0x76, 0xcd, 0x5c, 0x1b, 0xf8, 0xa1, 0x13, 0x0c, 0xd1, 0x13, 0x8e, 0xe8, 0x06,
		0x4b, 0xb4, 0x85, 0x27, 0xda, 0xc2, 0x14, 0x6d, 0xe1, 0x0a, 0x6d, 0xd8, 0x42, 0x1c, 0xbe, 0x84,
		0x77, 0xbd, 0xa1, 0x03, 0x40, 0x78, 0xe1, 0x77, 0xfb, 0xcc, 0xee, 0xd2, 0xde, 0xd5, 0x75, 0x85,
		0x9d, 0x28, 0xea, 0xb1, 0xba, 0x23, 0xa8, 0xa5, 0x7e, 0xf9, 0x32, 0x2d, 0x35, 0x26, 0x17, 0x60,
		0x0c, 0x4d, 0xc6, 0xbb, 0x66, 0xfa, 0xe6, 0xb4, 0x9a, 0xac, 0x4d, 0x62, 0x30, 0x15, 0x57, 0x8f,
		0xa4, 0x20, 0x8d, 0xa4, 0x00, 0x49, 0x01, 0x92, 0x02, 0x24, 0x05, 0x48, 0x0a, 0x80, 0x0a, 0xf4,
		0x4c, 0x0a, 0xa8, 0x73, 0x9b, 0xa1, 0xa0, 0x01, 0x46, 0xed, 0x33, 0x47, 0x1f, 0x17, 0xf6, 0x82,
		0xea, 0x9c, 0x48, 0xae, 0x89, 0x23, 0xd0, 0x83, 0xf1, 0xd4, 0x0e, 0xe4, 0xe8, 0x08, 0x76, 0xf4,
		0x06, 0x3d, 0xba, 0x82, 0x1f, 0xed, 0x41, 0x90, 0xf6, 0x60, 0x48, 0x7b, 0x50, 0xa4, 0x07, 0x38,
		0xd2, 0x04, 0x24, 0x85, 0xda, 0xa0, 0x0d, 0x83, 0xba, 0xe2, 0xb7, 0x87, 0xdc, 0x11, 0xe9, 0x82,
		0x4e, 0x3e, 0x7b, 0x86, 0x42, 0x0a, 0x1a, 0x89, 0x7c, 0x6d, 0x3b, 0x3d, 0xa6, 0xcd, 0x5c, 0x90,
		0xf9, 0x43, 0xaf, 0x98, 0x18, 0x5c, 0xe8, 0x0b, 0xee, 0x68, 0x17, 0xcc, 0x43, 0xe1, 0x6f, 0xec,
		0xfe, 0x90, 0xe9, 0x03, 0x57, 0x57, 0xe4, 0x3f, 0xf7, 0xec, 0xb6, 0xe0, 0xae, 0x73, 0xc6, 0x7b,
		0x5c, 0xf8, 0x1a, 0xff, 0x90, 0x4b, 0xd6, 0xb3, 0x05, 0x7f, 0x9c, 0xdc, 0x8b, 0xae, 0xdd, 0xf7,
		0x99, 0x76, 0xbf, 0x62, 0xfc, 0x59, 0x43, 0xd3, 0xb5, 0x7f, 0xea, 0x6f, 0xba, 0x85, 0x7c, 0x3e,
		0x9b, 0x87, 0xf9, 0xc2, 0x7c, 0xf7, 0x00, 0x9b, 0xeb, 0x27, 0x6d, 0x13, 0x39, 0x4f, 0x84, 0x66,
		0xc6, 0x7e, 0x0a, 0xcf, 0xb6, 0x86, 0x8e, 0x2f, 0xec, 0xbb, 0xbe, 0x66, 0xd9, 0x8f, 0xc7, 0xba,
		0xcc, 0x63, 0x4e, 0x1b, 0xa0, 0x5c, 0x62, 0xaa, 0x79, 0x7d, 0x7e, 0x6a, 0xe4, 0x32, 0xc5, 0xb4,
		0x61, 0x19, 0xc7, 0xc6, 0x89, 0xeb, 0x75, 0x98, 0x67, 0x7c, 0xb5, 0x05, 0xfb, 0x61, 0x3f, 0x19,
		0xb5, 0xd9, 0x9a, 0x7b, 0x23, 0x67, 0x1c, 0x9c, 0x7c, 0xad, 0x59, 0xb9, 0x84, 0xa9, 0x21, 0x86,
		0xd1, 0x94, 0x4e, 0x5c, 0xa4, 0xd6, 0x0b, 0x5a, 0x71, 0x61, 0x21, 0x9a, 0xa2, 0x00, 0xdd, 0x19,
		0xc6, 0xf0, 0x87, 0x2c, 0x33, 0x8d, 0xef, 0x34, 0x21, 0x20, 0x1f, 0x48, 0xab, 0x13, 0xf2, 0xc1,
		0x5e, 0xeb, 0x11, 0xf8, 0x0b, 0x7d, 0xd6, 0xfc, 0xac, 0x20, 0x04, 0x5d, 0xd6, 0xfe, 0x2c, 0x02,
		0x26, 0x2a, 0xe2, 0xb1, 0x0a, 0x8c, 0x8a, 0x38, 0x20, 0xec, 0xbb, 0xa1, 0x2b, 0x2a, 0xe2, 0xca,
		0x71, 0x2a, 0x2a, 0xe2, 0x7b, 0x8c, 0x40, 0x0c, 0xfd, 0x2b, 0xe2, 0x87, 0x1a, 0x16, 0xc4, 0xf3,
		0x28, 0x88, 0xc7, 0xfc, 0x40, 0x41, 0x5c, 0xae, 0xf0, 0x28, 0x88, 0x53, 0x71, 0x8d, 0x28, 0x88,
		0x2b, 0x30, 0xdd, 0x5d, 0x28, 0x88, 0x67, 0xf2, 0x28, 0x87, 0xc3, 0x78, 0xf7, 0x01, 0x98, 0xeb,
		0x27, 0x2d, 0xca, 0xe1, 0x51, 0x9a, 0x19, 0xca, 0xe1, 0x80, 0xe4, 0xef, 0xca, 0x33, 0x51, 0x0e,
		0x27, 0x9f, 0x58, 0xa3, 0x1c, 0x4e, 0xef, 0x87, 0xa0, 0x1c, 0x0e, 0x69, 0xf7, 0x04, 0xf9, 0xa0,
		0x1c, 0x1e, 0x81, 0xbf, 0x08, 0x6a, 0xca, 0x8f, 0xb3, 0x74, 0x54, 0xc7, 0x7a, 0xf8, 0x54, 0x76,
		0x14, 0xc4, 0xe3, 0x10, 0x17, 0x05, 0x71, 0x89, 0xda, 0x8c, 0x82, 0xb8, 0x22, 0xf0, 0x8a, 0x82,
		0xb8, 0x72, 0xa4, 0x8a, 0x82, 0xf8, 0x1e, 0x63, 0x10, 0x43, 0xef, 0x82, 0xf8, 0x1d, 0x77, 0x6c,
		0xef, 0x49, 0xc3, 0x8a, 0x78, 0x49, 0x23, 0x91, 0xab, 0xcc, 0xe9, 0x05, 0xc3, 0x37, 0xc1, 0xbf,
		0xc5, 0x7c, 0xa5, 0x77, 0xa2, 0x24, 0x9e, 0x46, 0x55, 0x4d, 0xb1, 0x73, 0x44, 0x49, 0x5c, 0x81,
		0xe9, 0x62, 0x8d, 0x38, 0xcc, 0x17, 0xe6, 0x6b, 0x80, 0x1a, 0x8e, 0xed, 0x81, 0xa2, 0x78, 0x94,
		0x66, 0x86, 0xa2, 0x38, 0x40, 0xf9, 0xbb, 0x72, 0x4d, 0x14, 0xc5, 0xc9, 0xe7, 0xd6, 0x28, 0x8a,
		0xd3, 0xfb, 0x21, 0x28, 0x8a, 0x43, 0xda, 0x3d, 0x41, 0x3e, 0x28, 0x8a, 0x47, 0x83, 0xcb, 0x98,
		0xd3, 0x61, 0x1d, 0xfd, 0x4a, 0xe2, 0xa1, 0xe4, 0x28, 0x88, 0xc7, 0x21, 0x2e, 0x0a, 0xe2, 0x12,
		0x75, 0x19, 0x05, 0x71, 0x45, 0xc0, 0x15, 0x05, 0x71, 0xe5, 0x28, 0x15, 0x05, 0xf1, 0x3d, 0xc6,
		0x1f, 0x86, 0xe6, 0x05, 0x71, 0xd7, 0xed, 0x33, 0xdb, 0xd1, 0xb0, 0x22, 0x9e, 0x4e, 0x43, 0x85,
		0xa3, 0x85, 0xd1, 0xa0, 0x37, 0xa5, 0x3f, 0x40, 0x6f, 0x02, 0x1d, 0xca, 0x40, 0x89, 0xa0, 0x37,
		0x29, 0x02, 0x47, 0xd0, 0x9b, 0x90, 0xf6, 0x23, 0x0f, 0xd0, 0x9b, 0x7b, 0x83, 0xcd, 0x4c, 0x77,
		0x20, 0xb8, 0xeb, 0xd8, 0x7d, 0xfd, 0xe8, 0xcd, 0x50, 0x72, 0xd0, 0x9b, 0x71, 0x88, 0x0b, 0x7a,
		0x53, 0xa6, 0x2e, 0x83, 0xde, 0x54, 0x03, 0x5c, 0x41, 0x6f, 0x2a, 0x47, 0xa9, 0xa0, 0x37, 0xf7,
		0x18, 0x7f, 0x18, 0xa0, 0x37, 0xd5, 0xc0, 0x10, 0xd0, 0x9b, 0x91, 0x5e, 0x55, 0xd0, 0x9b, 0x2a,
		0x1e, 0xa0, 0x37, 0x81, 0x0e, 0x65, 0xa0, 0x44, 0xd0, 0x9b, 0x14, 0x81, 0x23, 0xe8, 0x4d, 0x48,
		0xfb, 0x91, 0x07, 0xe8, 0xcd, 0xbd, 0xc1, 0x66, 0xe6, 0xc0, 0xf6, 0x04, 0xd7, 0x91, 0xdd, 0x9c,
		0x0b, 0x0e, 0x72, 0x33, 0x0e, 0x71, 0x41, 0x6e, 0x4a, 0x54, 0x65, 0x90, 0x9b, 0x8a, 0x60, 0x2b,
		0xc8, 0x4d, 0xe5, 0x18, 0x15, 0xe4, 0xe6, 0x1e, 0xa3, 0x0f, 0x03, 0xe4, 0xa6, 0x1a, 0x18, 0x02,
		0x72, 0x33, 0xd2, 0xab, 0x0a, 0x72, 0x53, 0xc5, 0x03, 0xe4, 0x26, 0xd0, 0xa1, 0x0c, 0x94, 0x08,
		0x72, 0x93, 0x22, 0x70, 0x04, 0xb9, 0x09, 0x69, 0x3f, 0xf2, 0x00, 0xb9, 0xb9, 0x37, 0xd8, 0xcc,
		0x14, 0x9e, 0xed, 0xf8, 0x7c, 0x36, 0x9b, 0x4b, 0x33, 0x7e, 0x73, 0x49, 0x76, 0x50, 0x9c, 0x71,
		0x88, 0x0b, 0x8a, 0x53, 0xa2, 0x36, 0x83, 0xe2, 0x54, 0x04, 0x5e, 0x41, 0x71, 0x2a, 0x47, 0xaa,
		0xa0, 0x38, 0xf7, 0x18, 0x83, 0x18, 0xa0, 0x38, 0xd5, 0xc0, 0x10, 0x50, 0x9c, 0x91, 0x5e, 0x55,
		0x50, 0x9c, 0x2a, 0x1e, 0xa0, 0x38, 0x81, 0x0e, 0x65, 0xa0, 0x44, 0x50, 0x9c, 0x14, 0x81, 0x23,
		0x28, 0x4e, 0x48, 0xfb, 0x91, 0x07, 0x28, 0xce, 0x7d, 0x90, 0x90, 0x38, 0x72, 0x34, 0x8f, 0x1d,
		0xc7, 0x15, 0xb6, 0xe0, 0xae, 0x1e, 0x5b, 0xe4, 0x98, 0x7e, 0xfb, 0x9e, 0x3d, 0xd8, 0x03, 0x3b,
		0xd8, 0x39, 0xc9, 0x4c, 0xba, 0x03, 0xe6, 0xb4, 0x03, 0x8a, 0xd0, 0x72, 0x98, 0xf8, 0xe1, 0x7a,
		0xff, 0x5a, 0x7c, 0x82, 0x7e, 0x9d, 0x36, 0x4b, 0xbe, 0x7e, 0xc1, 0x5f, 0x79, 0x25, 0x39, 0x98,
		0xf9, 0x67, 0x3f, 0x7c, 0x96, 0xbc, 0xeb, 0x0d, 0x92, 0x1e, 0xbf, 0x4b, 0xda, 0x5d, 0x6e, 0xf9,
		0x76, 0x97, 0xfb, 0xe1, 0xb3, 0x64, 0x3f, 0xf3, 0x38, 0x70, 0x2c, 0xf6, 0x38, 0x70, 0x92, 0xfd,
		0x29, 0x5d, 0x90, 0xf4, 0xdc, 0xa1, 0x60, 0xfe, 0xf4, 0x1f, 0xab, 0xc3, 0x7d, 0xc1, 0x9d, 0xde,
		0x90, 0xfb, 0xf7, 0xcc, 0x4b, 0x8a, 0xa7, 0x01, 0xb3, 0xc4, 0xbd, 0xc7, 0x98, 0xc5, 0x9d, 0x76,
		0x7f, 0xe8, 0xf3, 0x47, 0x66, 0x3d, 0x0c, 0xfb, 0x82, 0xb7, 0x6d, 0x5f, 0x58, 0x4c, 0xdc, 0x33,
		0xcf, 0x61, 0xc2, 0x12, 0x76, 0x6f, 0xf9, 0xb3, 0xc1, 0x57, 0x25, 0x27, 0x3f, 0xd0, 0x0f, 0xfe,
		0x9f, 0x1c, 0x3a, 0xff, 0x3a, 0xee, 0x0f, 0xc7, 0xb2, 0x85, 0xf0, 0xf8, 0x5d, 0x70, 0xba, 0x95,
		0x97, 0x92, 0xbe, 0xb0, 0x05, 0xa3, 0x1d, 0x5b, 0xe8, 0xda, 0x29, 0x4d, 0xc9, 0x88, 0x7a, 0x8e,
		0x09, 0x20, 0x0d, 0x77, 0xaa, 0x9d, 0xe8, 0x2d, 0x51, 0x30, 0x6a, 0x56, 0xb9, 0x2f, 0x8e, 0x85,
		0xf0, 0x48, 0xfb, 0x35, 0xf3, 0x82, 0x3b, 0xe5, 0x3e, 0x9b, 0x60, 0x49, 0xe2, 0x9b, 0xeb, 0x98,
		0x17, 0xf6, 0xcf, 0x25, 0x49, 0xd3, 0x87, 0xb9, 0x5c, 0xa1, 0x98, 0xcb, 0xa5, 0x8a, 0xd9, 0x62,
		0xaa, 0x94, 0xcf, 0xa7, 0x0b, 0x69, 0xc2, 0x5b, 0x1c, 0x99, 0x57, 0x13, 0x58, 0xce, 0x3a, 0x27,
		0x13, 0xd5, 0x75, 0x86, 0xfd, 0xbe, 0x0e, 0xa2, 0x7e, 0xf3, 0x99, 0x47, 0x7a, 0xb7, 0x22, 0xaa,
		0x1e, 0x4a, 0x13, 0x4c, 0x03, 0x2c, 0xb3, 0x16, 0xcb, 0x10, 0x26, 0x37, 0x4c, 0x5f, 0x78, 0xc3,
		0xb6, 0x70, 0x66, 0xe4, 0xd9, 0xe5, 0xf4, 0x16, 0x54, 0x66, 0x77, 0xa0, 0x35, 0xcf, 0xf6, 0x5b,
		0x27, 0xbd, 0x41, 0xeb, 0x9a, 0xdf, 0xb5, 0x8e, 0xbb, 0xbc, 0x6e, 0x77, 0x79, 0xab, 0x9a, 0xb9,
		0x19, 0x38, 0xe5, 0xc7, 0x81, 0xd3, 0xaa, 0xba, 0xed, 0xc9, 0x1b, 0xd7, 0x93, 0x0b, 0x73, 0xb6,
		0x7c, 0x89, 0x5b, 0x8d, 0xa7, 0x01, 0x6b, 0x4c, 0xae, 0x5a, 0xf0, 0x5e, 0xab, 0x66, 0x8b, 0xfb,
		0xd6, 0xb7, 0xe9, 0xb5, 0x39, 0x0e, 0x2f, 0xcd, 0x27, 0xc0, 0x27, 0xfd, 0x24, 0x22, 0xe6, 0x26,
		0xa9, 0xbb, 0x47, 0xb8, 0x45, 0xc1, 0x7c, 0x5a, 0x96, 0x4e, 0xc7, 0x9e, 0x68, 0x48, 0x42, 0xc4,
		0xa2, 0xe7, 0xa9, 0xd8, 0x80, 0x31, 0xcf, 0xe2, 0x03, 0x23, 0xf8, 0x77, 0xa2, 0x50, 0x16, 0xef,
		0x18, 0x7e, 0x50, 0xf7, 0xb0, 0xd6, 0xa8, 0xed, 0xfc, 0x2d, 0xbb, 0xd3, 0xf1, 0x98, 0xef, 0x5b,
		0x5d, 0xfb, 0x81, 0xf7, 0xa9, 0xec, 0xf6, 0x4d, 0x33, 0x6d, 0xa3, 0x9b, 0xa6, 0x69, 0x95, 0x96,
		0x11, 0x4e, 0xc3, 0x08, 0xa7, 0x5d, 0x54, 0xbc, 0x0d, 0x51, 0xdc, 0xb0, 0x7f, 0x78, 0x81, 0x50,
		0x86, 0x24, 0x39, 0x23, 0xa2, 0x01, 0x8b, 0xd4, 0x83, 0x10, 0xb5, 0x12, 0x28, 0x76, 0x48, 0xd4,
		0x1c, 0xd1, 0x5e, 0x39, 0x20, 0xb5, 0x16, 0xa8, 0x4e, 0xef, 0x15, 0xea, 0xbc, 0x39, 0x2d, 0xee,
		0xa9, 0x56, 0xf5, 0xb0, 0x67, 0x6c, 0x2a, 0x8e, 0x62, 0x1f, 0x30, 0xef, 0x1f, 0x55, 0x2c, 0x06,
		0x95, 0xe5, 0x29, 0x94, 0x96, 0x9d, 0xd0, 0x5c, 0x4e, 0x42, 0xad, 0x11, 0x90, 0xec, 0xf2, 0x0f,
		0xb2, 0x5d, 0x7a, 0x64, 0x97, 0x6b, 0xec, 0x37, 0x1a, 0x3b, 0xe3, 0x34, 0xb8, 0x1a, 0x73, 0x19,
		0xbd, 0xd0, 0x31, 0xf3, 0x70, 0x1b, 0xe3, 0x65, 0xe9, 0xa8, 0xf0, 0x87, 0xa4, 0xd6, 0x82, 0x92,
		0x5b, 0xeb, 0x49, 0x71, 0x2d, 0x27, 0xed, 0xb5, 0x9a, 0x54, 0xbb, 0xed, 0xc9, 0xaf, 0xb5, 0x24,
		0xdf, 0x1a, 0x4f, 0x7e, 0xad, 0x24, 0x2a, 0x43, 0xcb, 0x77, 0x8b, 0xdc, 0x5a, 0x46, 0xca, 0x71,
		0x70, 0x39, 0x16, 0x16, 0x09, 0x89, 0x74, 0x6d, 0x3b, 0x3d, 0x7a, 0xab, 0xe1, 0x08, 0x76, 0x0c,
		0x5c, 0x70, 0xba, 0x9d, 0x5e, 0xe6, 0x8d, 0xdd, 0x1f, 0x32, 0xba, 0xbd, 0x9d, 0xe6, 0xb9, 0x67,
		0xb7, 0x05, 0x77, 0x9d, 0x33, 0xde, 0xe3, 0x94, 0x9b, 0x50, 0xcd, 0x4b, 0xd6, 0xb3, 0x67, 0x53,
		0x62, 0x68, 0xf6, 0x44, 0x12, 0xec, 0x87, 0x34, 0x2f, 0xec, 0x9f, 0xf4, 0x4d, 0x23, 0x97, 0x29,
		0xe5, 0x4a, 0x85, 0x62, 0xa6, 0x94, 0x87, 0x8d, 0xec, 0xba, 0x8d, 0xa0, 0xb1, 0x69, 0xed, 0xa3,
		0x89, 0xca, 0x26, 0x15, 0x1f, 0x6a, 0xba, 0x1e, 0xef, 0x71, 0xc7, 0x16, 0xdc, 0xe9, 0x4d, 0x4b,
		0x5f, 0x9e, 0xc5, 0x07, 0xf4, 0x18, 0xa5, 0xf5, 0x62, 0x82, 0x5a, 0x5a, 0x27, 0x0e, 0xa8, 0xa5,
		0xf7, 0x28, 0x16, 0xa8, 0xa5, 0xf7, 0x68, 0x3a, 0xa8, 0xa5, 0x2d, 0x05, 0x04, 0xb5, 0xa4, 0x51,
		0x76, 0x41, 0x98, 0x5a, 0xe2, 0x03, 0x8b, 0x9c, 0x05, 0x86, 0x8d, 0x0a, 0x25, 0x42, 0x32, 0xcd,
		0x6e, 0x21, 0x78, 0xa5, 0x37, 0x2b, 0xd6, 0x63, 0xce, 0x22, 0x3b, 0xa3, 0x31, 0x54, 0xb1, 0x43,
		0x82, 0xb2, 0xd5, 0x6c, 0x21, 0x98, 0xe7, 0x90, 0x9d, 0xe9, 0x65, 0x1e, 0xdc, 0xa6, 0xac, 0x52,
		0x73, 0x74, 0x9b, 0xb6, 0x4a, 0xcd, 0xe9, 0xd3, 0x74, 0xf0, 0xcf, 0x73, 0x66, 0x3c, 0xca, 0xdc,
		0xa6, 0xac, 0xdc, 0xec, 0xd5, 0x4c, 0xfe, 0x36, 0x65, 0xe5, 0x9b, 0x89, 0x83, 0xef, 0xdf, 0xbf,
		0xbc, 0xf7, 0x98, 0xc4, 0x73, 0x76, 0x9c, 0x0c, 0x0f, 0xca, 0xcc, 0xde, 0xcd, 0xde, 0xa6, 0xac,
		0x4c, 0x93, 0xe0, 0x44, 0xa0, 0x26, 0x45, 0x3d, 0xba, 0xaa, 0x57, 0xfe, 0x22, 0xaf, 0x4c, 0xff,
		0x1c, 0x28, 0x57, 0xa7, 0xc4, 0x1f, 0x04, 0x15, 0x0a, 0xeb, 0x31, 0x75, 0x8d, 0x7b, 0x05, 0xc4,
		0xbd, 0x1d, 0x8d, 0x7b, 0x81, 0x03, 0xb1, 0xad, 0xee, 0xb1, 0x75, 0xde, 0x7c, 0x4e, 0x7f, 0xce,
		0x8d, 0x8f, 0x12, 0xcf, 0xc5, 0xf1, 0xeb, 0x17, 0x47, 0xeb, 0x3e, 0x96, 0xfe, 0x5c, 0x1c, 0x1f,
		0x6d, 0x78, 0xa7, 0x30, 0x3e, 0x7a, 0xe3, 0x77, 0xe4, 0xc7, 0x07, 0x2b, 0x1f, 0x9d, 0xbc, 0x9e,
		0xd9, 0x74, 0x40, 0x6e, 0xc3, 0x01, 0xd9, 0x4d, 0x07, 0x64, 0x37, 0x1c, 0xb0, 0x51, 0xa4, 0xcc,
		0x86, 0x03, 0xf2, 0xe3, 0xd1, 0xca, 0xe7, 0x0f, 0xd6, 0x7f, 0xb4, 0x30, 0x4e, 0x8c, 0x36, 0xbd,
		0x57, 0x1c, 0x8f, 0x8e, 0x12, 0x89, 0xe4, 0x41, 0x7a, 0xe2, 0xd5, 0x0f, 0xa7, 0x6e, 0x3e, 0xdd,
		0x5c, 0xf1, 0xfe, 0xc1, 0xff, 0x81, 0x0b, 0x76, 0x0f, 0x17, 0xc0, 0xda, 0xc8, 0x5a, 0x1b, 0x50,
		0x93, 0x16, 0x24, 0x18, 0x9d, 0xeb, 0x42, 0x85, 0x8e, 0x23, 0x3c, 0xf2, 0x9b, 0xf0, 0x48, 0x6f,
		0xc2, 0xa0, 0xfb, 0xfa, 0xfc, 0xb4, 0x98, 0xcb, 0x66, 0x8e, 0x8c, 0x93, 0xaf, 0x35, 0xe3, 0xa2,
		0x56, 0xad, 0x5b, 0x27, 0xb6, 0xcf, 0x3a, 0x46, 0x79, 0xd6, 0x38, 0x67, 0xdc, 0xd4, 0x2e, 0x29,
		0xa2, 0x71, 0xe2, 0x83, 0xb6, 0x75, 0x1a, 0xa4, 0xad, 0xcd, 0xa0, 0xec, 0xd7, 0x83, 0xb0, 0x7f,
		0xaf, 0xb8, 0x68, 0x48, 0x41, 0x94, 0xd5, 0xea, 0x7a, 0x50, 0x6a, 0x48, 0x71, 0x3d, 0x8b, 0x0f,
		0xac, 0x3e, 0x73, 0x7a, 0xc1, 0x52, 0x73, 0xa2, 0xfd, 0x28, 0x2f, 0xa4, 0x44, 0x3b, 0xca, 0x3a,
		0x71, 0xd0, 0x8e, 0xf2, 0x1e, 0xbd, 0x42, 0x3b, 0xca, 0xc7, 0x60, 0x0e, 0xda, 0x51, 0xb6, 0xc6,
		0x34, 0x68, 0x47, 0xa1, 0x9e, 0xff, 0xd2, 0x6d, 0x47, 0x19, 0x72, 0x47, 0x64, 0x33, 0x58, 0xe3,
		0xf4, 0x4b, 0x91, 0xb0, 0xc6, 0xe9, 0x8d, 0x17, 0x0a, 0x6b, 0x9c, 0xb6, 0x90, 0x0f, 0xeb, 0x37,
		0x76, 0xcc, 0xed, 0xbf, 0x34, 0x0d, 0xac, 0x71, 0x82, 0x8d, 0x80, 0xc4, 0x21, 0x2f, 0x0d, 0x28,
		0x25, 0x0a, 0x12, 0x60, 0x7a, 0xe3, 0x4b, 0x79, 0xf6, 0x64, 0x7a, 0x23, 0x81, 0x1d, 0xc2, 0x14,
		0x4e, 0x6f, 0xfc, 0xb4, 0x47, 0x96, 0x36, 0x1f, 0x0b, 0xbf, 0xac, 0x0f, 0xc6, 0xda, 0xc5, 0x82,
		0x06, 0x21, 0xca, 0x96, 0xc6, 0xe0, 0x77, 0x3a, 0x83, 0xde, 0x49, 0x0f, 0x76, 0x27, 0x34, 0xc8,
		0x9d, 0xd0, 0xe0, 0x76, 0x55, 0xf6, 0x4e, 0xa8, 0x05, 0x84, 0x50, 0xcb, 0x07, 0xa1, 0x41, 0xa8,
		0x9a, 0xb4, 0x74, 0x50, 0x1e, 0x91, 0x4a, 0xad, 0x65, 0x43, 0x8f, 0x29, 0xa9, 0x7a, 0xb4, 0x64,
		0x8c, 0xf7, 0x14, 0x95, 0x36, 0xf7, 0x2a, 0x4a, 0x11, 0xc9, 0xfb, 0xf6, 0x24, 0xdf, 0x33, 0x95,
		0xce, 0xab, 0x97, 0xb4, 0x27, 0x88, 0x1a, 0xd7, 0x25, 0xdf, 0x61, 0xc8, 0x3d, 0xa3, 0x64, 0x07,
		0xa1, 0xda, 0x31, 0xec, 0xa6, 0x43, 0x90, 0x6b, 0x1a, 0xf2, 0x14, 0x54, 0xa2, 0x72, 0x9a, 0xd3,
		0xcb, 0xfd, 0xc3, 0xb5, 0x1e, 0xec, 0xb6, 0xc5, 0x07, 0x96, 0xdd, 0x79, 0x64, 0x9e, 0xe0, 0x3e,
		0x9b, 0xc1, 0x2b, 0xb9, 0xba, 0x1a, 0x66, 0x13, 0xbf, 0x16, 0x4b, 0xb2, 0xf1, 0xaa, 0xd9, 0x87,
		0x43, 0x59, 0x03, 0x9d, 0xca, 0x46, 0x39, 0x1a, 0x0d, 0x71, 0xaa, 0x93, 0x44, 0x32, 0x0d, 0x6e,
		0x64, 0x32, 0x40, 0x32, 0x0d, 0x6b, 0xbb, 0x0d, 0x53, 0x54, 0xed, 0x73, 0xb1, 0xf0, 0xf7, 0x53,
		0x60, 0xaf, 0xcc, 0xf0, 0x56, 0xe2, 0x8f, 0xca, 0x44, 0x43, 0xf1, 0x06, 0x50, 0xca, 0x3b, 0xb8,
		0x29, 0x74, 0x6c, 0xd3, 0xea, 0xd0, 0xa6, 0xc2, 0x5e, 0x92, 0xeb, 0xc0, 0x26, 0x47, 0x55, 0x92,
		0xeb, 0xb0, 0xde, 0xaf, 0xf2, 0xb0, 0xea, 0x0d, 0x9b, 0x68, 0x6d, 0xd4, 0x44, 0x71, 0x63, 0x0a,
		0x22, 0xcb, 0x95, 0xb0, 0xbb, 0x21, 0xf9, 0xa0, 0x47, 0x2d, 0xf8, 0x91, 0x0d, 0x82, 0x64, 0x83,
		0x21, 0xd9, 0xa0, 0xa8, 0x36, 0x38, 0x2a, 0x0e, 0x92, 0xe1, 0x5d, 0x21, 0xb3, 0xbc, 0x28, 0xf4,
		0x3b, 0x7d, 0x66, 0x77, 0x3d, 0xd6, 0xa5, 0xe0, 0x74, 0xe6, 0x39, 0x18, 0x81, 0x05, 0x45, 0x66,
		0x6d, 0xc6, 0xdf, 0x7f, 0xf9, 0x32, 0x6d, 0x75, 0x4c, 0xaa, 0x63, 0xc3, 0xa9, 0xe9, 0x30, 0xc1,
		0x11, 0x31, 0x04, 0x47, 0xc3, 0x10, 0x5c, 0x41, 0xa8, 0xd9, 0x28, 0x18, 0x1d, 0xd6, 0x44, 0x53,
		0x1d, 0xfd, 0xa2, 0xd7, 0xb2, 0x68, 0xbd, 0x46, 0xbd, 0x60, 0xc1, 0x34, 0xdc, 0x1c, 0xdc, 0x1c,
		0xdc, 0x1c, 0xdc, 0xdc, 0x5e, 0x48, 0xd1, 0xdc, 0xd7, 0x45, 0x4e, 0x0a, 0x6b, 0x2f, 0x74, 0xc6,
		0x52, 0x2d, 0xef, 0x06, 0x43, 0x62, 0x06, 0x15, 0xc8, 0xdc, 0xd7, 0x99, 0x3a, 0xc8, 0x5c, 0xbd,
		0x00, 0x06, 0xc8, 0xdc, 0xad, 0x50, 0x04, 0xc8, 0x5c, 0x22, 0x29, 0x10, 0xc8, 0xdc, 0x37, 0x84,
		0x29, 0x9a, 0x64, 0xee, 0x22, 0x98, 0x83, 0xc9, 0x05, 0x93, 0x0b, 0x8a, 0x03, 0x14, 0x07, 0x28,
		0x0e, 0x50, 0x1c, 0xa0, 0x38, 0x40, 0x71, 0xc8, 0xa4, 0x38, 0x06, 0x34, 0x32, 0x57, 0x72, 0x1b,
		0xde, 0x82, 0xe2, 0x00, 0xc5, 0x01, 0x8a, 0x03, 0x14, 0x07, 0x28, 0x0e, 0x50, 0x1c, 0xa0, 0x38,
		0x3e, 0x4e, 0x71, 0xcc, 0x3c, 0x0f, 0x28, 0x0e, 0x50, 0x1c, 0xa0, 0x38, 0x40, 0x71, 0x80, 0xe2,
		0x00, 0xc5, 0x01, 0x8a, 0x03, 0x14, 0x87, 0x34, 0xab, 0x79, 0xb0, 0xdb, 0x96, 0xdd, 0xe9, 0x78,
		0xcc, 0xf7, 0xe9, 0x90, 0x1c, 0xcb, 0x42, 0x81, 0xe6, 0x00, 0xcd, 0x01, 0x9a, 0x03, 0x34, 0x07,
		0x68, 0x0e, 0xd0, 0x1c, 0xa0, 0x39, 0xb4, 0xa4, 0x39, 0x96, 0xc3, 0x39, 0x88, 0x0e, 0x10, 0x1d,
		0x20, 0x3a, 0x40, 0x74, 0x80, 0xe8, 0x00, 0xd1, 0xb1, 0x9f, 0x51, 0x00, 0x6e, 0x0e, 0x6e, 0x0e,
		0x6e, 0x0e, 0x6e, 0x6e, 0xf7, 0xa5, 0x00, 0x9f, 0x2b, 0xdf, 0x6a, 0x26, 0xb9, 0x16, 0xb5, 0x65,
		0x79, 0x4b, 0x32, 0x81, 0xcd, 0x05, 0x9b, 0xfb, 0x1b, 0x6d, 0x01, 0x9b, 0xfb, 0x46, 0x68, 0x01,
		0x36, 0xf7, 0xdd, 0x38, 0x02, 0x6c, 0x2e, 0x91, 0x24, 0x08, 0x6c, 0xee, 0x1b, 0xc2, 0x14, 0x5d,
		0x36, 0x17, 0x0b, 0xf3, 0x40, 0xe6, 0x82, 0xe5, 0x00, 0xcb, 0x01, 0x96, 0x03, 0x2c, 0x87, 0x62,
		0x29, 0x40, 0xe6, 0xc2, 0xcd, 0xc1, 0xcd, 0xc1, 0xcd, 0xed, 0xb8, 0x9b, 0x03, 0x99, 0xbb, 0x7f,
		0x01, 0xc6, 0x1c, 0xd8, 0xe2, 0x9e, 0x50, 0x5b, 0xee, 0x54, 0x1c, 0x1a, 0x14, 0x6e, 0x1a, 0x14,
		0xee, 0x2c, 0x3f, 0x07, 0x85, 0xab, 0x17, 0xb0, 0x00, 0x85, 0xbb, 0x15, 0x7a, 0x00, 0x85, 0x4b,
		0x24, 0xf5, 0x51, 0xbe, 0xa9, 0xd4, 0x8b, 0x30, 0x49, 0xc7, 0xbc, 0x97, 0xa3, 0x25, 0x15, 0xcb,
		0xa6, 0x11, 0x34, 0xc9, 0x05, 0x4f, 0x8a, 0x41, 0x94, 0x76, 0x30, 0xd5, 0x29, 0x5b, 0x27, 0x15,
		0x5c, 0xf5, 0x4c, 0xd5, 0x29, 0x05, 0x5b, 0x62, 0x09, 0x39, 0x11, 0xcf, 0x45, 0x25, 0x08, 0x2f,
		0x82, 0x31, 0x63, 0x9e, 0xc5, 0x07, 0xf4, 0x3c, 0x43, 0x18, 0x97, 0x67, 0x02, 0x12, 0x33, 0x3b,
		0x1a, 0xad, 0x49, 0xe4, 0x43, 0x35, 0xe5, 0x90, 0xad, 0x47, 0xe8, 0xa6, 0x1e, 0xc2, 0xb5, 0x09,
		0xe5, 0xda, 0x84, 0x74, 0x6d, 0x42, 0x3b, 0xad, 0x10, 0x4f, 0x2c, 0xd4, 0x87, 0x77, 0x91, 0x4c,
		0xeb, 0xd4, 0x46, 0xbf, 0x47, 0xa7, 0x95, 0x6a, 0x63, 0x26, 0x5c, 0x24, 0x28, 0xdb, 0x4a, 0xab,
		0xd5, 0x1c, 0xaa, 0x7c, 0x82, 0x71, 0x12, 0x37, 0xcc, 0x29, 0xaa, 0x1c, 0xd8, 0xe2, 0xde, 0xe2,
		0x1d, 0xe2, 0xd8, 0x77, 0x2e, 0x25, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30,
		0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x55, 0x00, 0x3c, 0xc7, 0x2b, 0x40, 0xc1, 0xe4, 0x51, 0xb0,
		0x1f, 0x44, 0xd4, 0xf9, 0xb0, 0x1f, 0xab, 0x6b, 0x3f, 0xf0, 0xfe, 0x13, 0x5d, 0x38, 0xbc, 0x5e,
		0x5c, 0xe0, 0x62, 0xe0, 0x62, 0xe0, 0x62, 0xe0, 0x62, 0xe0, 0x62, 0xe0, 0x62, 0xe0, 0x62, 0xe0,
		0x62, 0x82, 0xb8, 0x78, 0x3d, 0x70, 0x01, 0x40, 0xd6, 0x05, 0x20, 0x7b, 0xee, 0x50, 0x30, 0xab,
		0xc3, 0x7d, 0xc1, 0x9d, 0xde, 0x90, 0xfb, 0xf7, 0xcc, 0x23, 0x8f, 0x92, 0xd7, 0xc9, 0x0c, 0xa8,
		0x0c, 0xa8, 0x0c, 0xa8, 0x0c, 0xa8, 0x0c, 0xa8, 0x0c, 0xa8, 0x0c, 0xa8, 0x0c, 0xa8, 0x4c, 0x17,
		0x2a, 0xaf, 0x43, 0x2f, 0xc0, 0xcb, 0xf4, 0xf1, 0xf2, 0xe4, 0x1e, 0x12, 0x86, 0xc6, 0x81, 0x78,
		0x34, 0x51, 0x70, 0x1a, 0x28, 0x18, 0x28, 0x18, 0x28, 0x18, 0x28, 0x18, 0x28, 0x18, 0x91, 0x75,
		0xfd, 0x5d, 0xa4, 0xb6, 0x78, 0x28, 0x14, 0xcc, 0xee, 0x3c, 0x32, 0x4f, 0x70, 0x9f, 0x75, 0x2c,
		0xe1, 0x5a, 0x03, 0xc6, 0x3c, 0xba, 0xce, 0x65, 0xee, 0xa2, 0xd7, 0xc8, 0x4c, 0xd4, 0x78, 0x69,
		0xd2, 0x64, 0xe4, 0x81, 0x82, 0x0e, 0x80, 0x41, 0x2f, 0xe0, 0xa0, 0x0b, 0x80, 0xd0, 0x0e, 0x48,
		0x68, 0x07, 0x28, 0xb4, 0x03, 0x16, 0x34, 0x01, 0x06, 0x51, 0xa0, 0x11, 0xde, 0x5d, 0xb2, 0xb4,
		0xdb, 0x8a, 0xdf, 0xe4, 0x03, 0x22, 0x3b, 0xd0, 0xbe, 0x29, 0xd5, 0x2f, 0x11, 0x96, 0x71, 0x76,
		0xcf, 0x6f, 0x49, 0xfb, 0x1d, 0xda, 0x71, 0xe7, 0x95, 0x66, 0x3e, 0xe6, 0x34, 0xd0, 0xcd, 0x15,
		0x1d, 0x3d, 0xd4, 0x40, 0xd6, 0x9a, 0x2d, 0x04, 0xf3, 0x1c, 0xf2, 0xea, 0x1a, 0x0a, 0x7c, 0x70,
		0x9b, 0xb2, 0x4a, 0xcd, 0xd1, 0x6d, 0xda, 0x2a, 0x35, 0xa7, 0x4f, 0xd3, 0xc1, 0x3f, 0xcf, 0x99,
		0xf1, 0x28, 0x73, 0x9b, 0xb2, 0x72, 0xb3, 0x57, 0x33, 0xf9, 0xdb, 0x94, 0x95, 0x6f, 0x26, 0x0e,
		0xbe, 0x7f, 0xff, 0xf2, 0xde, 0x63, 0x12, 0xcf, 0xd9, 0xb1, 0x49, 0xfe, 0x72, 0x34, 0x75, 0x50,
		0xaf, 0xab, 0x7a, 0xe5, 0x2f, 0xed, 0x74, 0xec, 0x9f, 0x03, 0x59, 0x5a, 0x96, 0xf8, 0x43, 0x03,
		0x3d, 0x23, 0x2d, 0xe1, 0xf8, 0x33, 0xc2, 0x6c, 0x64, 0x61, 0xb6, 0x80, 0x30, 0x8b, 0x30, 0x3b,
		0x0d, 0xb3, 0x81, 0x37, 0xb3, 0xad, 0xee, 0xb1, 0x75, 0xde, 0x7c, 0x4e, 0x7f, 0xce, 0x8d, 0x8f,
		0x12, 0xcf, 0xc5, 0xf1, 0xeb, 0x17, 0x47, 0xeb, 0x3e, 0x96, 0xfe, 0x5c, 0x1c, 0x1f, 0x6d, 0x78,
		0xa7, 0x30, 0x3e, 0x7a, 0xe3, 0x77, 0xe4, 0xc7, 0x07, 0x2b, 0x1f, 0x9d, 0xbc, 0x9e, 0xd9, 0x74,
		0x40, 0x6e, 0xc3, 0x01, 0xd9, 0x4d, 0x07, 0x64, 0x37, 0x1c, 0xb0, 0x51, 0xa4, 0xcc, 0x86, 0x03,
		0xf2, 0xe3, 0xd1, 0xca, 0xe7, 0x0f, 0xd6, 0x7f, 0xb4, 0x30, 0x4e, 0x8c, 0x36, 0xbd, 0x57, 0x1c,
		0x8f, 0x8e, 0x12, 0x09, 0x00, 0x8f, 0xbd, 0x07, 0x1e, 0x30, 0x3b, 0xf9, 0x66, 0x07, 0x20, 0xb6,
		0x93, 0xbc, 0x20, 0xdd, 0xeb, 0x46, 0x95, 0xb1, 0xac, 0x72, 0x5f, 0x1c, 0x0b, 0xe1, 0xd1, 0x66,
		0x2d, 0x2f, 0xb8, 0x53, 0xee, 0xb3, 0x07, 0xe6, 0x08, 0x9f, 0x6e, 0xdd, 0x6c, 0x2a, 0xa9, 0xfd,
		0x73, 0x49, 0xd2, 0xf4, 0x61, 0x2e, 0x57, 0x28, 0xe6, 0x72, 0xa9, 0x62, 0xb6, 0x98, 0x2a, 0xe5,
		0xf3, 0xe9, 0x42, 0x3a, 0x4f, 0x58, 0xf8, 0x2b, 0xaf, 0xc3, 0x3c, 0xd6, 0x39, 0x79, 0x32, 0x8f,
		0x0c, 0x67, 0xd8, 0xef, 0xeb, 0x20, 0xea, 0x37, 0x3f, 0x28, 0x9e, 0x77, 0xed, 0xbe, 0xcf, 0x3e,
		0xc1, 0x53, 0x6a, 0xea, 0x8b, 0x4c, 0x5b, 0x08, 0xcf, 0xe2, 0x4e, 0x87, 0xfd, 0xd4, 0xa0, 0x13,
		0x62, 0x21, 0x2b, 0x3a, 0x20, 0x3e, 0x22, 0x1e, 0x3a, 0x20, 0x22, 0xd4, 0x46, 0x74, 0x40, 0x44,
		0x6a, 0x39, 0xe8, 0x80, 0x88, 0x59, 0x60, 0x74, 0x40, 0xec, 0x72, 0x3e, 0xa1, 0x4f, 0x07, 0x04,
		0xdd, 0x05, 0x48, 0xaf, 0xc3, 0x38, 0xc5, 0x85, 0x48, 0x8b, 0x50, 0xb9, 0x58, 0x90, 0xf4, 0xdb,
		0xff, 0x02, 0xe0, 0xe4, 0x33, 0xe1, 0x87, 0xcf, 0x66, 0x8b, 0x98, 0xa6, 0x60, 0x0a, 0xf0, 0x5d,
		0x5b, 0xf8, 0x7e, 0x67, 0xb7, 0xff, 0x1d, 0x0e, 0xe8, 0x43, 0xf7, 0x99, 0x9c, 0x80, 0xed, 0x80,
		0xed, 0x80, 0xed, 0x80, 0xed, 0x80, 0xed, 0x80, 0xed, 0x80, 0xed, 0x5a, 0xc1, 0xf6, 0x3b, 0xd7,
		0xed, 0x33, 0xdb, 0xd1, 0x01, 0xb6, 0xa7, 0x01, 0x68, 0xf5, 0x05, 0xb4, 0xcc, 0x17, 0xa4, 0xf6,
		0xdd, 0xdc, 0x6c, 0x10, 0x73, 0x49, 0x01, 0x6a, 0x01, 0x6a, 0x01, 0x6a, 0x01, 0x6a, 0x01, 0x6a,
		0x01, 0x6a, 0x01, 0x6a, 0x01, 0x6a, 0x01, 0x6a, 0x61, 0x14, 0x2f, 0xef, 0x61, 0xdb, 0x7d, 0x78,
		0x18, 0x3a, 0x5c, 0x3c, 0xe9, 0xd2, 0x69, 0xf1, 0x5a, 0x60, 0x40, 0x5c, 0x40, 0x5c, 0x40, 0x5c,
		0x40, 0x5c, 0x40, 0x5c, 0x40, 0x5c, 0x40, 0x5c, 0xb4, 0x5b, 0xc4, 0x03, 0x71, 0x77, 0xa5, 0xdd,
		0x62, 0x8e, 0x9e, 0x38, 0xf3, 0xc3, 0xe7, 0x4f, 0xe8, 0xb8, 0xd8, 0x0d, 0x2c, 0xcf, 0x7c, 0x4e,
		0x1f, 0xbf, 0x4f, 0x84, 0x04, 0x66, 0x07, 0x66, 0x07, 0x66, 0x07, 0x66, 0x07, 0x66, 0x07, 0x66,
		0x07, 0x66, 0xd7, 0x0a, 0xb3, 0xd3, 0x0d, 0xdf, 0x86, 0x26, 0x23, 0x41, 0xcc, 0x2a, 0x73, 0x7a,
		0x01, 0x62, 0xc7, 0x7c, 0xb8, 0x2d, 0xaf, 0xe4, 0x05, 0x77, 0xc8, 0xc7, 0xc6, 0x50, 0xd8, 0x1b,
		0xbb, 0x3f, 0x9c, 0x98, 0x50, 0x26, 0xf5, 0x59, 0x0f, 0x81, 0xcf, 0x3d, 0xbb, 0x2d, 0xb8, 0xeb,
		0x9c, 0xf1, 0x1e, 0xa7, 0xbe, 0xc8, 0xfa, 0xa5, 0xaf, 0x62, 0x3d, 0x5b, 0xf0, 0x47, 0x46, 0x7a,
		0x0d, 0xb0, 0x06, 0x61, 0xe9, 0xa5, 0xad, 0xd9, 0x3f, 0x61, 0x6b, 0xb0, 0x35, 0xfd, 0x6d, 0x0d,
		0x33, 0x54, 0x3e, 0xf4, 0x68, 0xd2, 0x66, 0x40, 0xb5, 0x18, 0xf3, 0x64, 0x2e, 0x4d, 0x1f, 0xfa,
		0x3f, 0x26, 0x6e, 0xf5, 0x47, 0x6e, 0xb5, 0x4e, 0x63, 0xbd, 0xcc, 0x7f, 0x96, 0x6f, 0x38, 0xe1,
		0x01, 0x53, 0x4d, 0xb0, 0xfe, 0xba, 0x02, 0x35, 0x93, 0xfd, 0x14, 0x96, 0x76, 0x5d, 0x3c, 0xeb,
		0x84, 0x46, 0x55, 0xe0, 0x23, 0xe2, 0xa1, 0x2a, 0x10, 0xa1, 0x5a, 0xa2, 0x2a, 0x10, 0xa9, 0xe5,
		0xa0, 0x2a, 0x10, 0xb3, 0xc0, 0xa8, 0x0a, 0xec, 0x30, 0xfd, 0x82, 0x4e, 0x9e, 0x18, 0xc2, 0xf8,
		0xce, 0x74, 0xf2, 0x2c, 0x23, 0x28, 0xce, 0xfc, 0x17, 0x7f, 0xa3, 0xa3, 0x67, 0x47, 0xb0, 0x3d,
		0x77, 0x1e, 0xed, 0x3e, 0xef, 0x58, 0x1e, 0xb3, 0x7d, 0xd7, 0xa1, 0x0f, 0xeb, 0x5f, 0xc9, 0x0b,
		0x44, 0x0f, 0x44, 0x0f, 0x44, 0x0f, 0x44, 0x0f, 0x44, 0x0f, 0x44, 0x0f, 0x44, 0xaf, 0xd7, 0x66,
		0x90, 0x1d, 0xe6, 0x08, 0x2e, 0x9e, 0x34, 0x41, 0xf5, 0x94, 0x47, 0xa8, 0x57, 0x66, 0x97, 0xf2,
		0xc4, 0xf6, 0x35, 0x70, 0xf1, 0x73, 0x05, 0xa8, 0x5c, 0xde, 0x1c, 0x57, 0x2b, 0x67, 0xad, 0xeb,
		0xab, 0x6f, 0x8d, 0x72, 0xeb, 0xba, 0x7c, 0x5c, 0xbf, 0xba, 0xa4, 0xee, 0xed, 0x83, 0xb2, 0xbf,
		0xaf, 0xc5, 0x6e, 0x2f, 0x9a, 0x34, 0x52, 0xbc, 0xd6, 0x86, 0xe3, 0x7a, 0xab, 0x7a, 0x75, 0x55,
		0x33, 0xd1, 0x52, 0xb3, 0xb7, 0x2a, 0x70, 0x5a, 0xfd, 0x56, 0x6f, 0x94, 0xaf, 0xa1, 0x07, 0xfb,
		0xae, 0x07, 0x57, 0x97, 0xe7, 0xe5, 0x33, 0x68, 0xc0, 0xfe, 0x6a, 0xc0, 0xd5, 0x75, 0xe5, 0x6b,
		0xe5, 0xf2, 0xb8, 0x71, 0x75, 0x6d, 0xa2, 0xed, 0x6b, 0xab, 0x47, 0x13, 0xf9, 0x9d, 0xe6, 0x52,
		0x51, 0x64, 0x8f, 0xfb, 0xf6, 0x1d, 0xeb, 0xd3, 0x27, 0x8d, 0xa7, 0x62, 0x82, 0x2b, 0xfe, 0x88,
		0x78, 0xe0, 0x8a, 0x23, 0x54, 0x44, 0x70, 0xc5, 0x91, 0x5a, 0x0e, 0xb8, 0xe2, 0x98, 0x05, 0x06,
		0x57, 0xbc, 0xc3, 0xf9, 0x81, 0x46, 0x5c, 0xb1, 0x2f, 0x3c, 0xee, 0xf4, 0xb4, 0x58, 0x16, 0x0a,
		0x0d, 0x7c, 0xc7, 0x55, 0x63, 0x3f, 0x85, 0x67, 0x5b, 0x43, 0xc7, 0x17, 0xf6, 0x5d, 0x9f, 0xb8,
		0x2e, 0x7a, 0xac, 0xcb, 0x3c, 0xe6, 0x04, 0x81, 0x11, 0xeb, 0x6a, 0x23, 0x32, 0xec, 0xeb, 0xf3,
		0xd3, 0x62, 0x2e, 0x9b, 0x39, 0x32, 0x4e, 0xbe, 0xd6, 0x8c, 0x8b, 0x5a, 0xb5, 0x6e, 0x9d, 0xd8,
		0x3e, 0xeb, 0x18, 0x65, 0x71, 0xcf, 0x3c, 0x87, 0x09, 0xe3, 0xa6, 0x46, 0xbd, 0x26, 0xa0, 0x13,
		0x64, 0x5a, 0x07, 0x9d, 0x16, 0x7a, 0xad, 0xc9, 0x82, 0x40, 0xdd, 0x50, 0xd4, 0x5a, 0x34, 0xf5,
		0x26, 0xc5, 0x07, 0xe7, 0xb5, 0xa3, 0xd2, 0x61, 0x35, 0x94, 0xb6, 0xb8, 0x65, 0x4a, 0x26, 0x65,
		0x34, 0x21, 0xbd, 0x32, 0x60, 0xbd, 0x3e, 0x24, 0x1e, 0x58, 0xaf, 0x08, 0x35, 0x11, 0xac, 0x57,
		0x4c, 0xd0, 0x0d, 0xac, 0x57, 0xec, 0x38, 0x0d, 0xac, 0xd7, 0xae, 0x71, 0x0e, 0x60, 0xbd, 0x22,
		0x8f, 0xe2, 0x60, 0xbd, 0xde, 0x75, 0xd5, 0xc0, 0x7a, 0xc5, 0xf1, 0x00, 0xeb, 0x05, 0xc8, 0xf4,
		0x76, 0xe8, 0x04, 0xd6, 0x4b, 0x05, 0x9a, 0x02, 0xeb, 0xb5, 0xcf, 0xd2, 0x81, 0xf5, 0xd2, 0x16,
		0xb7, 0x98, 0x7d, 0xdb, 0x17, 0xd6, 0x83, 0xdb, 0xe1, 0x5d, 0xce, 0x3a, 0x3a, 0x90, 0x5f, 0xcb,
		0xe2, 0x82, 0x03, 0xfb, 0x88, 0x78, 0xe0, 0xc0, 0x22, 0x54, 0x48, 0x70, 0x60, 0x31, 0x01, 0x39,
		0x70, 0x60, 0xb1, 0xa3, 0x36, 0x70, 0x60, 0xbb, 0xc6, 0x40, 0xe8, 0xc3, 0x81, 0x09, 0xfe, 0xc0,
		0x04, 0x6f, 0xff, 0xeb, 0x17, 0x72, 0x1a, 0x10, 0x61, 0x94, 0x37, 0x05, 0xf8, 0xe6, 0x4c, 0xe7,
		0x3e, 0x9b, 0x8e, 0xed, 0xb8, 0x3e, 0x6b, 0xbb, 0x4e, 0xc7, 0xa7, 0x7c, 0x49, 0xaf, 0x6d, 0xa7,
		0x07, 0xd6, 0x29, 0x82, 0x0b, 0xa9, 0xe5, 0x1e, 0x06, 0x18, 0xab, 0x1e, 0xb7, 0x83, 0xc5, 0x16,
		0x06, 0x31, 0x98, 0x9a, 0x8e, 0x5b, 0x18, 0xa4, 0x0f, 0x73, 0xb9, 0x42, 0x31, 0x97, 0x4b, 0x15,
		0xb3, 0xc5, 0x54, 0x29, 0x9f, 0x4f, 0x17, 0x28, 0x0f, 0xbb, 0x80, 0xf5, 0x01, 0x5f, 0x6b, 0x24,
		0x1d, 0x38, 0x4f, 0x6d, 0xbd, 0xbb, 0xf9, 0x30, 0xec, 0x0b, 0x3e, 0x98, 0x4e, 0xcc, 0x24, 0xce,
		0x77, 0x2e, 0x44, 0x05, 0xd7, 0xf9, 0x11, 0xf1, 0xc0, 0x75, 0x46, 0xa8, 0x8c, 0xe0, 0x3a, 0x23,
		0xb5, 0x1c, 0x70, 0x9d, 0x31, 0x0b, 0x0c, 0xae, 0x73, 0x87, 0xf3, 0x33, 0x8d, 0xb8, 0xce, 0x3b,
		0xd7, 0xed, 0x33, 0xdb, 0xd1, 0xa1, 0xe1, 0x2f, 0x0d, 0x58, 0xab, 0x2d, 0xac, 0x1d, 0x30, 0xe6,
		0x59, 0x7c, 0x40, 0x1f, 0xd4, 0xce, 0x05, 0x05, 0xa4, 0x05, 0xa4, 0x05, 0xa4, 0x05, 0xa4, 0x05,
		0xa4, 0x05, 0xa4, 0x05, 0xa4, 0xd5, 0x6b, 0xc8, 0xf7, 0xc0, 0xb2, 0x3b, 0x1d, 0x8f, 0xf9, 0xbe,
		0x0e, 0xa8, 0xb6, 0x44, 0x58, 0xc6, 0xd9, 0x3d, 0x47, 0x35, 0x3c, 0x32, 0xcd, 0x7c, 0xcc, 0x69,
		0xa0, 0x9b, 0x2b, 0x3a, 0x7a, 0xa8, 0x81, 0xac, 0xba, 0xec, 0x9e, 0x1b, 0x0a, 0x7c, 0x70, 0x9b,
		0xb2, 0x4a, 0xcd, 0xd1, 0x6d, 0xda, 0x2a, 0x35, 0xa7, 0x4f, 0xd3, 0xc1, 0x3f, 0xcf, 0x99, 0xf1,
		0x28, 0x73, 0x9b, 0xb2, 0x72, 0xb3, 0x57, 0x33, 0xf9, 0xdb, 0x94, 0x95, 0x6f, 0x26, 0x0e, 0xbe,
		0x7f, 0xff, 0xf2, 0xde, 0x63, 0x12, 0xcf, 0xd9, 0x31, 0xfd, 0xb5, 0x0d, 0x4d, 0x1d, 0xd4, 0x4b,
		0xa7, 0x1d, 0x9a, 0x43, 0xa9, 0xff, 0x39, 0x90, 0xa5, 0x65, 0x89, 0x3f, 0x34, 0xd0, 0x33, 0xda,
		0xf5, 0xe4, 0xcf, 0x08, 0xb3, 0x91, 0x85, 0xd9, 0x02, 0xc2, 0x2c, 0xc2, 0xec, 0x34, 0xcc, 0x1e,
		0x2c, 0xed, 0x56, 0xff, 0x9c, 0xfe, 0x9c, 0x1b, 0x1f, 0x25, 0x9e, 0x8b, 0xe3, 0xd7, 0x2f, 0x8e,
		0xd6, 0x7d, 0x2c, 0xfd, 0xb9, 0x38, 0x3e, 0xda, 0xf0, 0x4e, 0x61, 0x7c, 0xf4, 0xc6, 0xef, 0xc8,
		0x8f, 0x0f, 0x56, 0x3e, 0x3a, 0x79, 0x3d, 0xb3, 0xe9, 0x80, 0xdc, 0x86, 0x03, 0xb2, 0x9b, 0x0e,
		0xc8, 0x6e, 0x38, 0x60, 0xa3, 0x48, 0x99, 0x0d, 0x07, 0xe4, 0xc7, 0xa3, 0x95, 0xcf, 0x1f, 0xac,
		0xff, 0x68, 0x61, 0x9c, 0x18, 0x6d, 0x7a, 0xaf, 0x38, 0x1e, 0x1d, 0x25, 0x12, 0x00, 0x1e, 0x7b,
		0x0f, 0x3c, 0x60, 0x76, 0xf2, 0xcd, 0x0e, 0x40, 0x6c, 0x27, 0x79, 0x41, 0x03, 0x8d, 0x7d, 0x3a,
		0x43, 0xe9, 0x69, 0x61, 0x71, 0x60, 0x8b, 0x7b, 0x8b, 0x77, 0x34, 0x29, 0x83, 0xce, 0xa5, 0x45,
		0x2d, 0xf4, 0x23, 0xe2, 0xa1, 0x16, 0x1a, 0xa1, 0x3e, 0xa2, 0x16, 0x1a, 0xa9, 0xe5, 0xa0, 0x16,
		0x1a, 0xb3, 0xc0, 0xa8, 0x85, 0xee, 0x30, 0x25, 0xa6, 0x51, 0x2d, 0x74, 0xc8, 0x1d, 0x91, 0xcd,
		0x68, 0x50, 0x07, 0x2d, 0x62, 0x55, 0xf0, 0x96, 0x0f, 0xac, 0x0a, 0x8e, 0x56, 0x58, 0xac, 0x0a,
		0x96, 0xe5, 0xab, 0xb0, 0x2a, 0x38, 0x06, 0x53, 0xd3, 0x71, 0x55, 0x70, 0x2e, 0x53, 0xca, 0x95,
		0x0a, 0xc5, 0x4c, 0x09, 0x6b, 0x81, 0x61, 0x73, 0x3a, 0x00, 0x54, 0xfa, 0xd2, 0x81, 0x32, 0xd4,
		0xd6, 0xa7, 0x9b, 0x7e, 0x40, 0x27, 0xcc, 0x2b, 0xd9, 0x56, 0xd7, 0x7e, 0xe0, 0xfd, 0x27, 0xfa,
		0xdc, 0xe1, 0x7a, 0xb1, 0x41, 0x22, 0x7e, 0x44, 0x3c, 0x90, 0x88, 0x11, 0x2a, 0x26, 0x48, 0xc4,
		0x48, 0x2d, 0x07, 0x24, 0x62, 0xcc, 0x02, 0x83, 0x44, 0xdc, 0xe1, 0x6c, 0x4d, 0xa7, 0x05, 0x15,
		0x1d, 0xe6, 0x08, 0x2e, 0x9e, 0x3c, 0xd6, 0xd5, 0x61, 0x45, 0x05, 0xe1, 0xe4, 0xd1, 0xac, 0xcc,
		0x2e, 0xe5, 0x89, 0xed, 0x6b, 0xe0, 0xe2, 0xe7, 0x0a, 0x70, 0x7c, 0x5e, 0x69, 0xd5, 0x27, 0xff,
		0x6b, 0xfc, 0x5d, 0x2b, 0x53, 0x77, 0xf3, 0x01, 0x99, 0xe0, 0x6b, 0xd1, 0x2a, 0xa5, 0x09, 0x3d,
		0x33, 0x57, 0x83, 0x4a, 0xed, 0x26, 0xd7, 0x3a, 0xaf, 0x5e, 0xfd, 0xaf, 0x5e, 0x2b, 0x9f, 0x9a,
		0xa0, 0xe9, 0xf6, 0x53, 0x01, 0xaa, 0xc7, 0x27, 0xe5, 0x6a, 0xf9, 0xac, 0xf5, 0xed, 0xb2, 0x72,
		0x7a, 0x5c, 0x6f, 0x40, 0x0f, 0xf6, 0x54, 0x0f, 0x70, 0xff, 0xf7, 0xf9, 0xfe, 0x17, 0xe0, 0x07,
		0xa0, 0x07, 0x81, 0x1e, 0xe0, 0xfe, 0xef, 0xed, 0xfd, 0xaf, 0x66, 0x6e, 0x6a, 0x97, 0xad, 0xb2,
		0x1e, 0x1b, 0x68, 0xe1, 0xee, 0xc7, 0x72, 0xf7, 0x6f, 0x6a, 0xd5, 0x3a, 0xee, 0xfe, 0x1e, 0xde,
		0xfd, 0xec, 0xe4, 0xee, 0x07, 0x48, 0xf0, 0xe2, 0x5b, 0xb5, 0x81, 0x18, 0x00, 0x3d, 0x00, 0x12,
		0x80, 0x16, 0x14, 0xe0, 0x0d, 0xa0, 0x07, 0xc8, 0x0b, 0xf6, 0x5c, 0x0b, 0x2a, 0x97, 0xff, 0xad,
		0x37, 0x8e, 0x1b, 0x65, 0xdc, 0xfc, 0x3d, 0xbe, 0xf9, 0xad, 0x7a, 0xed, 0x1c, 0x0a, 0xb0, 0xcf,
		0x0a, 0x00, 0x62, 0x60, 0x2f, 0x15, 0xa0, 0x7e, 0xdd, 0x28, 0xb7, 0x6a, 0x57, 0xd5, 0xca, 0xe9,
		0xdf, 0x41, 0x62, 0x00, 0x1d, 0xd8, 0x7b, 0x1d, 0x28, 0x40, 0x07, 0xf6, 0x4f, 0x07, 0x6e, 0x6a,
		0x97, 0x7a, 0x35, 0x0c, 0x90, 0x96, 0xb0, 0x89, 0xbe, 0x3f, 0xcd, 0xa5, 0x22, 0xbc, 0xc6, 0xc0,
		0x73, 0x87, 0x82, 0x59, 0x1d, 0xee, 0x0b, 0xee, 0xf4, 0x86, 0xdc, 0xbf, 0x67, 0x9e, 0x36, 0x0b,
		0x0d, 0xd6, 0xc9, 0x8e, 0xd5, 0x06, 0x1f, 0x11, 0x0f, 0xab, 0x0d, 0x22, 0xd4, 0x4e, 0xac, 0x36,
		0x88, 0xd4, 0x72, 0xb0, 0xda, 0x20, 0x66, 0x81, 0xb1, 0xda, 0x60, 0x87, 0xb3, 0x08, 0x8d, 0x56,
		0x1b, 0xe8, 0x13, 0xce, 0x0d, 0xec, 0xe3, 0xb0, 0x57, 0xc9, 0xed, 0x02, 0x78, 0x0a, 0x8f, 0x3b,
		0x3d, 0x8c, 0x96, 0x8e, 0x18, 0xdc, 0x69, 0xbf, 0x83, 0xc3, 0x74, 0x58, 0xec, 0x6d, 0xda, 0xca,
		0xcf, 0xfe, 0xce, 0x8d, 0x47, 0x85, 0xc5, 0xc0, 0xfc, 0xe7, 0xec, 0x78, 0x54, 0xc8, 0x2f, 0xfd,
		0x9d, 0x99, 0xfc, 0x3d, 0x79, 0x21, 0x33, 0x9b, 0xa8, 0x5f, 0xc8, 0xe7, 0xb3, 0xd3, 0x99, 0xfa,
		0x47, 0xeb, 0xbe, 0xfc, 0x30, 0xf8, 0xf2, 0xec, 0xec, 0xef, 0xd2, 0x78, 0x94, 0xbb, 0x4d, 0xa5,
		0x67, 0x7f, 0x1d, 0x8e, 0x47, 0xb9, 0xcc, 0x6d, 0xca, 0x3a, 0x9c, 0xfd, 0x5d, 0x9c, 0xfc, 0x5d,
		0xba, 0x4d, 0x85, 0x1f, 0x2f, 0x04, 0x2f, 0xe4, 0x96, 0x3e, 0x92, 0x9f, 0xbe, 0x52, 0x0a, 0xce,
		0x18, 0x0a, 0x3c, 0x1d, 0xc2, 0x71, 0x9b, 0xb2, 0x0a, 0x0b, 0xa9, 0x67, 0x83, 0x39, 0x16, 0x67,
		0xcb, 0x84, 0xaf, 0x2d, 0x9d, 0x33, 0x7c, 0x69, 0xfa, 0x8d, 0x18, 0x00, 0x1d, 0x8d, 0x59, 0xec,
		0xca, 0xce, 0x13, 0xb0, 0x8e, 0x17, 0xd6, 0x81, 0x41, 0xcd, 0x3b, 0x8a, 0xb5, 0x01, 0x68, 0x00,
		0x68, 0x0c, 0x6c, 0x49, 0xf5, 0x8b, 0xcd, 0x82, 0x8e, 0xe2, 0x8c, 0x0d, 0x40, 0x1d, 0x40, 0x1d,
		0x9a, 0xab, 0x30, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0x71, 0xae, 0x43, 0xb3, 0x84,
		0x0b, 0xa8, 0x03, 0xa8, 0x43, 0x22, 0xd7, 0x01, 0xeb, 0x00, 0xa0, 0x89, 0x10, 0xd0, 0x60, 0xc2,
		0xac, 0xe6, 0xd7, 0x8b, 0x62, 0xf7, 0xd7, 0xa3, 0xdd, 0xe7, 0x9d, 0x69, 0x03, 0x15, 0xfd, 0x76,
		0xaf, 0x65, 0x61, 0xd1, 0xdf, 0xf5, 0x11, 0xf1, 0xd0, 0xdf, 0x15, 0xa1, 0x3a, 0xa2, 0xbf, 0x2b,
		0x52, 0xcb, 0x41, 0x7f, 0x57, 0xcc, 0x02, 0xa3, 0xbf, 0x6b, 0x87, 0x89, 0x25, 0x8d, 0xfa, 0xbb,
		0xee, 0x5c, 0xb7, 0xcf, 0x6c, 0x47, 0x87, 0x9e, 0xae, 0x34, 0xa0, 0xad, 0x86, 0x12, 0x11, 0x33,
		0x51, 0xf3, 0xd8, 0x71, 0x5c, 0x61, 0x0b, 0xee, 0xd2, 0xdc, 0xfc, 0xca, 0xf4, 0xdb, 0xf7, 0xec,
		0xc1, 0x1e, 0xd8, 0xe2, 0x7e, 0x62, 0x9e, 0x49, 0x77, 0xc0, 0x9c, 0x76, 0x00, 0x14, 0x2d, 0x87,
		0x89, 0x1f, 0xae, 0xf7, 0xaf, 0xc5, 0x1d, 0x5f, 0xd8, 0x4e, 0x9b, 0x25, 0x5f, 0xbf, 0xe0, 0xaf,
		0xbc, 0x92, 0x1c, 0x78, 0xae, 0x70, 0xdb, 0x6e, 0xdf, 0x0f, 0x9f, 0x25, 0xef, 0x7a, 0x83, 0xa4,
		0xc7, 0xef, 0x92, 0x76, 0x97, 0x5b, 0xbe, 0xdd, 0xe5, 0x7e, 0xf8, 0x2c, 0xd9, 0xcf, 0x3c, 0x0e,
		0x1c, 0x8b, 0x3d, 0x0e, 0x9c, 0x64, 0x7f, 0x1a, 0x94, 0x92, 0x01, 0xc0, 0xf7, 0x93, 0x6b, 0xda,
		0x40, 0x93, 0xe2, 0x69, 0xc0, 0x2c, 0xf1, 0xc3, 0xb5, 0x1e, 0xec, 0xb6, 0xc5, 0x07, 0x96, 0xdd,
		0x79, 0x64, 0x9e, 0xe0, 0x3e, 0x9b, 0xc4, 0xb5, 0xc5, 0xbb, 0xc1, 0xa1, 0xc9, 0xc9, 0x0f, 0xf2,
		0x83, 0xff, 0x27, 0x7d, 0x61, 0x0b, 0x46, 0x2b, 0xd2, 0xd1, 0x31, 0x19, 0x42, 0xe6, 0x62, 0x0e,
		0x9d, 0x7f, 0x1d, 0xf7, 0x87, 0x63, 0xd9, 0x42, 0x78, 0xfc, 0x6e, 0xa2, 0x07, 0xe4, 0x4c, 0x66,
		0xb1, 0xb5, 0xe2, 0xaa, 0xac, 0xc4, 0x1c, 0xcf, 0x3c, 0x8c, 0x11, 0x13, 0x8b, 0x6a, 0x16, 0x4a,
		0x39, 0xfb, 0xd4, 0x23, 0xeb, 0xa4, 0x9e, 0x6d, 0x6a, 0x93, 0x65, 0x6a, 0x93, 0x5d, 0x6a, 0x93,
		0x55, 0x02, 0xa2, 0xfe, 0xea, 0x2e, 0x9e, 0x71, 0x9a, 0xcb, 0x7d, 0x57, 0x83, 0x2c, 0x7d, 0x9a,
		0x7a, 0x55, 0x64, 0xda, 0x64, 0x75, 0x1a, 0x64, 0xf5, 0xce, 0xc1, 0x05, 0xbd, 0x60, 0x83, 0x2e,
		0xf0, 0x41, 0x3b, 0x18, 0xa1, 0x1d, 0x9c, 0xd0, 0x0e, 0x56, 0xd0, 0x84, 0x17, 0x44, 0x61, 0x06,
		0x79, 0xb8, 0x11, 0x0a, 0x38, 0x89, 0xdd, 0x96, 0xa0, 0x4e, 0xa9, 0xbf, 0xf0, 0xf0, 0x0b, 0x91,
		0x89, 0x9b, 0x36, 0xed, 0x1a, 0xb9, 0x36, 0xf0, 0x43, 0x27, 0x18, 0xa2, 0x27, 0x1c, 0xd1, 0x0d,
		0x96, 0x68, 0x0b, 0x4f, 0xb4, 0x85, 0x29, 0xda, 0xc2, 0x15, 0xda, 0xb0, 0x85, 0x38, 0x7c, 0x09,
		0xef, 0x7a, 0x43, 0x07, 0x80, 0xf0, 0xc2, 0xef, 0xf6, 0x99, 0xdd, 0xa5, 0xbd, 0x8b, 0xeb, 0x0a,
		0x3b, 0x51, 0xd4, 0x63, 0x35, 0x47, 0x50, 0x3b, 0xfd, 0xf2, 0x65, 0x5a, 0x6a, 0x4c, 0x2e, 0xc0,
		0x18, 0x9a, 0x8a, 0x77, 0xcd, 0xf4, 0xcd, 0x69, 0x35, 0x59, 0x9b, 0xc4, 0x60, 0x2a, 0xae, 0x1e,
		0x49, 0x41, 0x1a, 0x49, 0x01, 0x92, 0x02, 0x24, 0x05, 0x48, 0x0a, 0x90, 0x14, 0x00, 0x15, 0xe8,
		0x99, 0x14, 0x50, 0xe7, 0x36, 0x43, 0x41, 0x03, 0x8c, 0xda, 0x67, 0x8e, 0x3e, 0x2e, 0xec, 0x05,
		0xd5, 0x39, 0x91, 0x5c, 0x13, 0x47, 0xa0, 0x07, 0xe3, 0xa9, 0x1d, 0xc8, 0xd1, 0x11, 0xec, 0xe8,
		0x0d, 0x7a, 0x74, 0x05, 0x3f, 0xda, 0x83, 0x20, 0xed, 0xc1, 0x90, 0xf6, 0xa0, 0x48, 0x0f, 0x70,
		0xa4, 0x09, 0x48, 0x0a, 0xb5, 0x41, 0x1b, 0x06, 0x75, 0xc5, 0x6f, 0x0f, 0xb9, 0x23, 0xd2, 0x05,
		0x9d, 0x7c, 0xf6, 0x0c, 0x85, 0x14, 0x34, 0x12, 0xf9, 0xda, 0x76, 0x7a, 0x4c, 0x9b, 0x39, 0x20,
		0xf3, 0x87, 0x5e, 0x31, 0x31, 0xb8, 0xd0, 0x17, 0xdc, 0xd1, 0x2e, 0x98, 0x87, 0xc2, 0xdf, 0xd8,
		0xfd, 0x21, 0xd3, 0x07, 0xae, 0xae, 0xc8, 0x7f, 0xee, 0xd9, 0x6d, 0xc1, 0x5d, 0xe7, 0x8c, 0xf7,
		0xb8, 0xf0, 0x35, 0xfe, 0x21, 0x97, 0xac, 0x67, 0x0b, 0xfe, 0x38, 0xb9, 0x17, 0x5d, 0xbb, 0xef,
		0x33, 0xed, 0x7e, 0xc5, 0xf8, 0xb3, 0x86, 0xa6, 0x6b, 0xff, 0xd4, 0xdf, 0x74, 0x0b, 0xf9, 0x7c,
		0x36, 0x0f, 0xf3, 0x85, 0xf9, 0xee, 0x01, 0x36, 0xd7, 0x4f, 0xda, 0x26, 0x72, 0x9e, 0x08, 0xcd,
		0x8c, 0xfd, 0x14, 0x9e, 0x6d, 0x0d, 0x1d, 0x5f, 0xd8, 0x77, 0x7d, 0xcd, 0xb2, 0x1f, 0x8f, 0x75,
		0x99, 0xc7, 0x9c, 0x36, 0x40, 0xb9, 0xc4, 0x54, 0xf3, 0xfa, 0xfc, 0xd4, 0xc8, 0x65, 0x8a, 0x69,
		0xc3, 0x32, 0x8e, 0x8d, 0x13, 0xd7, 0xeb, 0x30, 0xcf, 0xf8, 0x6a, 0x0b, 0xf6, 0xc3, 0x7e, 0x32,
		0x6a, 0xb3, 0x35, 0xf6, 0x46, 0xce, 0x38, 0x38, 0xf9, 0x5a, 0xb3, 0x72, 0x09, 0x53, 0x43, 0x0c,
		0xa3, 0x29, 0x9d, 0xb8, 0x48, 0xad, 0x17, 0xb4, 0xe2, 0xc2, 0x42, 0x34, 0x45, 0x01, 0xba, 0x33,
		0x8c, 0xe1, 0x0f, 0x59, 0x66, 0x1a, 0xdf, 0x69, 0x42, 0x40, 0x3e, 0x90, 0x56, 0x27, 0xe4, 0x83,
		0xbd, 0xd5, 0x23, 0xf0, 0x17, 0xfa, 0xac, 0xf9, 0x59, 0x41, 0x08, 0xba, 0xac, 0xfd, 0x59, 0x04,
		0x4c, 0x54, 0xc4, 0x63, 0x15, 0x18, 0x15, 0x71, 0x40, 0xd8, 0x77, 0x43, 0x57, 0x54, 0xc4, 0x95,
		0xe3, 0x54, 0x54, 0xc4, 0xf7, 0x18, 0x81, 0x18, 0xfa, 0x57, 0xc4, 0x0f, 0x35, 0x2c, 0x88, 0xe7,
		0x51, 0x10, 0x8f, 0xf9, 0x81, 0x82, 0xb8, 0x5c, 0xe1, 0x51, 0x10, 0xa7, 0xe2, 0x1a, 0x51, 0x10,
		0x57, 0x60, 0xba, 0xbb, 0x50, 0x10, 0xcf, 0xe4, 0x51, 0x0e, 0x87, 0xf1, 0xee, 0x03, 0x30, 0xd7,
		0x4f, 0x5a, 0x94, 0xc3, 0xa3, 0x34, 0x33, 0x94, 0xc3, 0x01, 0xc9, 0xdf, 0x95, 0x67, 0xa2, 0x1c,
		0x4e, 0x3e, 0xb1, 0x46, 0x39, 0x9c, 0xde, 0x0f, 0x41, 0x39, 0x1c, 0xd2, 0xee, 0x09, 0xf2, 0x41,
		0x39, 0x3c, 0x02, 0x7f, 0x11, 0xd4, 0x94, 0x1f, 0x67, 0xe9, 0xa8, 0x8e, 0xf5, 0xf0, 0xa9, 0xec,
		0x28, 0x88, 0xc7, 0x21, 0x2e, 0x0a, 0xe2, 0x12, 0xb5, 0x19, 0x05, 0x71, 0x45, 0xe0, 0x15, 0x05,
		0x71, 0xe5, 0x48, 0x15, 0x05, 0xf1, 0x3d, 0xc6, 0x20, 0x86, 0xde, 0x05, 0xf1, 0x3b, 0xee, 0xd8,
		0xde, 0x93, 0x86, 0x15, 0xf1, 0x92, 0x46, 0x22, 0x57, 0x99, 0xd3, 0x0b, 0x86, 0x6f, 0x82, 0x7f,
		0x8b, 0xf9, 0x4a, 0xef, 0x44, 0x49, 0x3c, 0x8d, 0xaa, 0x9a, 0x62, 0xe7, 0x88, 0x92, 0xb8, 0x02,
		0xd3, 0xc5, 0x1a, 0x71, 0x98, 0x2f, 0xcc, 0xd7, 0x00, 0x35, 0x1c, 0xdb, 0x03, 0x45, 0xf1, 0x28,
		0xcd, 0x0c, 0x45, 0x71, 0x80, 0xf2, 0x77, 0xe5, 0x9a, 0x28, 0x8a, 0x93, 0xcf, 0xad, 0x51, 0x14,
		0xa7, 0xf7, 0x43, 0x50, 0x14, 0x87, 0xb4, 0x7b, 0x82, 0x7c, 0x50, 0x14, 0x8f, 0x06, 0x97, 0x31,
		0xa7, 0xc3, 0x3a, 0xfa, 0x95, 0xc4, 0x43, 0xc9, 0x51, 0x10, 0x8f, 0x43, 0x5c, 0x14, 0xc4, 0x25,
		0xea, 0x32, 0x0a, 0xe2, 0x8a, 0x80, 0x2b, 0x0a, 0xe2, 0xca, 0x51, 0x2a, 0x0a, 0xe2, 0x7b, 0x8c,
		0x3f, 0x0c, 0xcd, 0x0b, 0xe2, 0xae, 0xdb, 0x67, 0xb6, 0xa3, 0x61, 0x45, 0x3c, 0x9d, 0x86, 0x0a,
		0x47, 0x0b, 0xa3, 0x41, 0x6f, 0x4a, 0x7f, 0x80, 0xde, 0x04, 0x3a, 0x94, 0x81, 0x12, 0x41, 0x6f,
		0x52, 0x04, 0x8e, 0xa0, 0x37, 0x21, 0xed, 0x47, 0x1e, 0xa0, 0x37, 0xf7, 0x06, 0x9b, 0x99, 0xee,
		0x40, 0x70, 0xd7, 0xb1, 0xfb, 0xfa, 0xd1, 0x9b, 0xa1, 0xe4, 0xa0, 0x37, 0xe3, 0x10, 0x17, 0xf4,
		0xa6, 0x4c, 0x5d, 0x06, 0xbd, 0xa9, 0x06, 0xb8, 0x82, 0xde, 0x54, 0x8e, 0x52, 0x41, 0x6f, 0xee,
		0x31, 0xfe, 0x30, 0x40, 0x6f, 0xaa, 0x81, 0x21, 0xa0, 0x37, 0x23, 0xbd, 0xaa, 0xa0, 0x37, 0x55,
		0x3c, 0x40, 0x6f, 0x02, 0x1d, 0xca, 0x40, 0x89, 0xa0, 0x37, 0x29, 0x02, 0x47, 0xd0, 0x9b, 0x90,
		0xf6, 0x23, 0x0f, 0xd0, 0x9b, 0x7b, 0x83, 0xcd, 0xcc, 0x81, 0xed, 0x09, 0xae, 0x23, 0xbb, 0x39,
		0x17, 0x1c, 0xe4, 0x66, 0x1c, 0xe2, 0x82, 0xdc, 0x94, 0xa8, 0xca, 0x20, 0x37, 0x15, 0xc1, 0x56,
		0x90, 0x9b, 0xca, 0x31, 0x2a, 0xc8, 0xcd, 0x3d, 0x46, 0x1f, 0x06, 0xc8, 0x4d, 0x35, 0x30, 0x04,
		0xe4, 0x66, 0xa4, 0x57, 0x15, 0xe4, 0xa6, 0x8a, 0x07, 0xc8, 0x4d, 0xa0, 0x43, 0x19, 0x28, 0x11,
		0xe4, 0x26, 0x45, 0xe0, 0x08, 0x72, 0x13, 0xd2, 0x7e, 0xe4, 0x01, 0x72, 0x73, 0x6f, 0xb0, 0x99,
		0x29, 0x3c, 0xdb, 0xf1, 0xf9, 0x6c, 0x36, 0x97, 0x66, 0xfc, 0xe6, 0x92, 0xec, 0xa0, 0x38, 0xe3,
		0x10, 0x17, 0x14, 0xa7, 0x44, 0x6d, 0x06, 0xc5, 0xa9, 0x08, 0xbc, 0x82, 0xe2, 0x54, 0x8e, 0x54,
		0x41, 0x71, 0xee, 0x31, 0x06, 0x31, 0x40, 0x71, 0xaa, 0x81, 0x21, 0xa0, 0x38, 0x23, 0xbd, 0xaa,
		0xa0, 0x38, 0x55, 0x3c, 0x40, 0x71, 0x02, 0x1d, 0xca, 0x40, 0x89, 0xa0, 0x38, 0x29, 0x02, 0x47,
		0x50, 0x9c, 0x90, 0xf6, 0x23, 0x0f, 0x50, 0x9c, 0xfb, 0x20, 0x21, 0x71, 0xe4, 0x68, 0x1e, 0x3b,
		0x8e, 0x2b, 0x6c, 0xc1, 0x5d, 0x3d, 0xb6, 0xc8, 0x31, 0xfd, 0xf6, 0x3d, 0x7b, 0xb0, 0x07, 0x76,
		0xb0, 0x73, 0x92, 0x99, 0x74, 0x07, 0xcc, 0x69, 0x07, 0x14, 0xa1, 0xe5, 0x30, 0xf1, 0xc3, 0xf5,
		0xfe, 0xb5, 0xf8, 0x04, 0xfd, 0x3a, 0x6d, 0x96, 0x7c, 0xfd, 0x82, 0xbf, 0xf2, 0x4a, 0x72, 0x30,
		0xf3, 0xcf, 0x7e, 0xf8, 0x2c, 0x79, 0xd7, 0x1b, 0x24, 0x3d, 0x7e, 0x97, 0xb4, 0xbb, 0xdc, 0xf2,
		0xed, 0x2e, 0xf7, 0xc3, 0x67, 0xc9, 0x7e, 0xe6, 0x71, 0xe0, 0x58, 0xec, 0x71, 0xe0, 0x24, 0xfb,
		0x53, 0xba, 0x20, 0xe9, 0xb9, 0x43, 0xc1, 0xfc, 0xe9, 0x3f, 0x56, 0x87, 0xfb, 0x82, 0x3b, 0xbd,
		0x21, 0xf7, 0xef, 0x99, 0x97, 0x14, 0x4f, 0x03, 0x66, 0x89, 0x1f, 0xae, 0xf5, 0x60, 0xb7, 0x2d,
		0x3e, 0xb0, 0xec, 0xce, 0x23, 0xf3, 0x04, 0xf7, 0xd9, 0x24, 0x70, 0x2c, 0xde, 0x0d, 0x0e, 0x4d,
		0x4e, 0x7e, 0x90, 0x1f, 0xfc, 0x3f, 0x39, 0x74, 0xfe, 0x75, 0xdc, 0x1f, 0x8e, 0x65, 0x0b, 0xe1,
		0xf1, 0xbb, 0xe0, 0xeb, 0x57, 0x5e, 0x4a, 0xfa, 0xc2, 0x16, 0x8c, 0x76, 0x2c, 0xa1, 0x6b, 0x97,
		0x34, 0x25, 0x23, 0xea, 0x29, 0x26, 0x00, 0x34, 0xdc, 0x99, 0x76, 0xa2, 0xb5, 0x44, 0xc1, 0xa7,
		0x59, 0xe5, 0xbe, 0x38, 0x16, 0xc2, 0x23, 0xed, 0xc7, 0xcc, 0x0b, 0xee, 0x94, 0xfb, 0x81, 0x0b,
		0x20, 0xbe, 0x99, 0x8e, 0x79, 0x61, 0xff, 0x5c, 0x92, 0x34, 0x7d, 0x98, 0xcb, 0x15, 0x8a, 0xb9,
		0x5c, 0xaa, 0x98, 0x2d, 0xa6, 0x4a, 0xf9, 0x7c, 0xba, 0x90, 0x26, 0xbc, 0xa5, 0x91, 0x79, 0x35,
		0x81, 0xe1, 0xac, 0x73, 0x32, 0x51, 0x5d, 0x67, 0xd8, 0xef, 0xeb, 0x20, 0xea, 0x37, 0x9f, 0x79,
		0xa4, 0x77, 0x27, 0xa2, 0xea, 0xa1, 0x34, 0xc1, 0x30, 0xc0, 0x2e, 0xc1, 0x4b, 0x84, 0xc9, 0x0b,
		0xd3, 0x17, 0xde, 0xb0, 0x2d, 0x9c, 0x19, 0x39, 0x76, 0x39, 0xbd, 0xe4, 0x95, 0xd9, 0x15, 0x6f,
		0xcd, 0xb3, 0xf9, 0xd6, 0x49, 0x6f, 0xd0, 0xba, 0xe6, 0x77, 0xad, 0xe3, 0x2e, 0xaf, 0xdb, 0x5d,
		0xde, 0xaa, 0x66, 0x6e, 0x06, 0x4e, 0xf9, 0x71, 0xe0, 0xb4, 0xaa, 0x6e, 0x7b, 0xf2, 0xc6, 0xf5,
		0xe4, 0xc2, 0x9c, 0x2d, 0x5f, 0xd2, 0x56, 0xe3, 0x69, 0xc0, 0x1a, 0x3f, 0xdc, 0xe0, 0x9d, 0x56,
		0xcd, 0x16, 0xf7, 0xad, 0x6f, 0xd3, 0x2b, 0x73, 0x1c, 0x5e, 0x98, 0x4f, 0x00, 0x4b, 0xfa, 0x49,
		0x44, 0xcc, 0x29, 0x52, 0x77, 0x86, 0x7b, 0xe9, 0x04, 0x69, 0x59, 0x36, 0x1d, 0xfb, 0xa1, 0x21,
		0x09, 0x11, 0x0b, 0x9e, 0x27, 0x5a, 0x03, 0xc6, 0x3c, 0x8b, 0x0f, 0x8c, 0xe0, 0xdf, 0x89, 0x42,
		0x59, 0xbc, 0x63, 0xf8, 0x41, 0x15, 0xc3, 0x5a, 0xa3, 0xa6, 0xf3, 0xb7, 0xec, 0x4e, 0xc7, 0x63,
		0xbe, 0x6f, 0x75, 0xed, 0x07, 0xde, 0xa7, 0xb2, 0x77, 0x37, 0xcd, 0xa4, 0x8c, 0x6e, 0x12, 0xa6,
		0x55, 0xd2, 0x45, 0x38, 0xc9, 0x22, 0x9c, 0x54, 0x51, 0xf1, 0x36, 0x44, 0x71, 0xc2, 0xee, 0xe3,
		0x03, 0x42, 0xf9, 0x8f, 0xd4, 0x7c, 0x87, 0x06, 0x08, 0x52, 0x0f, 0x39, 0xd4, 0x4a, 0xa0, 0xd8,
		0xfd, 0x50, 0x73, 0x3b, 0x3b, 0xed, 0x6e, 0xd4, 0x5a, 0x9c, 0x3a, 0x3d, 0x57, 0xa8, 0xe3, 0xe6,
		0xb4, 0x30, 0xa7, 0x5a, 0xb5, 0xc3, 0xfe, 0xae, 0xa9, 0x38, 0x8a, 0x6d, 0x7e, 0xde, 0xeb, 0xa9,
		0x58, 0x0c, 0x2a, 0x4b, 0x49, 0x28, 0x2d, 0x11, 0xa1, 0xb9, 0xf4, 0x83, 0x5a, 0xd3, 0x1e, 0xd9,
		0xa5, 0x1a, 0x64, 0x3b, 0xea, 0xc8, 0x2e, 0xad, 0xd8, 0x6f, 0xf4, 0x75, 0xc6, 0x69, 0x30, 0x31,
		0x26, 0x13, 0xf7, 0xcc, 0x73, 0x98, 0xb0, 0x84, 0xdd, 0xa3, 0x63, 0xe6, 0xe1, 0x96, 0xc3, 0xcb,
		0xd2, 0x51, 0x61, 0x07, 0x49, 0xad, 0xdb, 0x24, 0xb7, 0x2e, 0x93, 0xe2, 0xba, 0x4b, 0xda, 0xeb,
		0x2a, 0xa9, 0x76, 0xc6, 0x93, 0x5f, 0x17, 0x49, 0xbe, 0x8d, 0x9d, 0xfc, 0xba, 0x46, 0xd4, 0x7d,
		0x96, 0xef, 0x16, 0xb9, 0x75, 0x87, 0x94, 0xe3, 0xe0, 0x72, 0x2c, 0x2c, 0x12, 0x12, 0xe9, 0xda,
		0x76, 0x7a, 0xf4, 0x56, 0xae, 0x11, 0xac, 0xff, 0x5f, 0x70, 0xba, 0x5d, 0x5a, 0xe6, 0x8d, 0xdd,
		0x1f, 0x32, 0xba, 0x7d, 0x99, 0xe6, 0xb9, 0x67, 0xb7, 0x05, 0x77, 0x9d, 0x33, 0xde, 0xe3, 0x94,
		0x1b, 0x48, 0xcd, 0x4b, 0xd6, 0xb3, 0x67, 0x13, 0x5d, 0x68, 0xf6, 0x33, 0x12, 0xec, 0x65, 0x34,
		0x2f, 0xec, 0x9f, 0xf4, 0x4d, 0x23, 0x97, 0x29, 0xe5, 0x4a, 0x85, 0x62, 0xa6, 0x94, 0x87, 0x8d,
		0xec, 0xba, 0x8d, 0xa0, 0x6d, 0x69, 0xed, 0xa3, 0x89, 0x4a, 0x26, 0x15, 0x1f, 0x6a, 0xf2, 0x81,
		0xd5, 0x67, 0x4e, 0x2f, 0x28, 0xdf, 0x11, 0x63, 0x91, 0x16, 0xa2, 0x81, 0x42, 0x5a, 0x27, 0x0e,
		0x28, 0xa4, 0x77, 0x28, 0x13, 0x28, 0xa4, 0x77, 0x69, 0x3a, 0x28, 0xa4, 0x2d, 0x05, 0x04, 0x85,
		0xa4, 0x51, 0x16, 0x41, 0x98, 0x42, 0x1a, 0x72, 0x47, 0x64, 0x33, 0x20, 0x8f, 0x7e, 0x29, 0x12,
		0xc8, 0xa3, 0xb7, 0x66, 0xc8, 0x20, 0x8f, 0x90, 0x18, 0xc3, 0xed, 0xaf, 0x35, 0x0d, 0x90, 0x47,
		0xb0, 0x11, 0xd0, 0x35, 0xe4, 0xa5, 0x01, 0x79, 0x44, 0xc6, 0x87, 0x9a, 0x7c, 0x60, 0x0d, 0x68,
		0xe5, 0xfc, 0xcb, 0xe4, 0x11, 0xad, 0x4e, 0x43, 0x90, 0x47, 0xbf, 0x16, 0x08, 0xe4, 0xd1, 0x7b,
		0xa5, 0x03, 0x79, 0xf4, 0x41, 0x01, 0x41, 0x1e, 0xed, 0x04, 0x1a, 0x00, 0x79, 0xa4, 0x5b, 0x10,
		0x5c, 0x0e, 0x84, 0xe9, 0x12, 0x21, 0x99, 0x66, 0xb7, 0x10, 0xfc, 0xd1, 0x9b, 0x15, 0xeb, 0x31,
		0x67, 0x91, 0xdd, 0x74, 0x23, 0x54, 0xb1, 0x43, 0x82, 0xb2, 0xd5, 0x6c, 0x21, 0x98, 0xe7, 0x90,
		0x1d, 0xd2, 0x6e, 0x1e, 0xdc, 0xa6, 0xac, 0x52, 0x73, 0x74, 0x9b, 0xb6, 0x4a, 0xcd, 0xe9, 0xd3,
		0x74, 0xf0, 0xcf, 0x73, 0x66, 0x3c, 0xca, 0xdc, 0xa6, 0xac, 0xdc, 0xec, 0xd5, 0x4c, 0xfe, 0x36,
		0x65, 0xe5, 0x9b, 0x89, 0x83, 0xef, 0xdf, 0xbf, 0xbc, 0xf7, 0x98, 0xc4, 0x73, 0x76, 0x9c, 0x0c,
		0x0f, 0xca, 0xcc, 0xde, 0xcd, 0xde, 0xa6, 0xac, 0x4c, 0x93, 0xe0, 0x88, 0xe7, 0x26, 0x45, 0x3d,
		0xba, 0xaa, 0x57, 0xfe, 0x22, 0xaf, 0x4c, 0xff, 0x1c, 0x28, 0x57, 0xa7, 0xc4, 0x1f, 0x04, 0x15,
		0x0a, 0x23, 0xb8, 0x74, 0x8d, 0x7b, 0x05, 0xc4, 0xbd, 0x1d, 0x8d, 0x7b, 0x81, 0x03, 0xb1, 0xad,
		0xee, 0xb1, 0x75, 0xde, 0x7c, 0x4e, 0x7f, 0xce, 0x8d, 0x8f, 0x12, 0xcf, 0xc5, 0xf1, 0xeb, 0x17,
		0x47, 0xeb, 0x3e, 0x96, 0xfe, 0x5c, 0x1c, 0x1f, 0x6d, 0x78, 0xa7, 0x30, 0x3e, 0x7a, 0xe3, 0x77,
		0xe4, 0xc7, 0x07, 0x2b, 0x1f, 0x9d, 0xbc, 0x9e, 0xd9, 0x74, 0x40, 0x6e, 0xc3, 0x01, 0xd9, 0x4d,
		0x07, 0x64, 0x37, 0x1c, 0xb0, 0x51, 0xa4, 0xcc, 0x86, 0x03, 0xf2, 0xe3, 0xd1, 0xca, 0xe7, 0x0f,
		0xd6, 0x7f, 0xb4, 0x30, 0x4e, 0x8c, 0x36, 0xbd, 0x57, 0x1c, 0x8f, 0x8e, 0x12, 0x89, 0xe4, 0x41,
		0x7a, 0xe2, 0xd5, 0x0f, 0xa7, 0x6e, 0x3e, 0xdd, 0x5c, 0xf1, 0xfe, 0xc1, 0xff, 0x81, 0x0b, 0x76,
		0x0f, 0x17, 0xc0, 0xda, 0xc8, 0x5a, 0x1b, 0x50, 0x93, 0x16, 0x24, 0x98, 0x81, 0x92, 0x18, 0x25,
		0x1c, 0x6b, 0x3e, 0xd8, 0xed, 0xf9, 0x28, 0x49, 0x7a, 0x45, 0xb1, 0x65, 0xe1, 0x50, 0x16, 0x5b,
		0x27, 0x0e, 0xca, 0x62, 0xef, 0x50, 0x27, 0x94, 0xc5, 0xde, 0xa5, 0xe9, 0x28, 0x8b, 0x6d, 0x29,
		0x20, 0xca, 0x62, 0x1a, 0xb1, 0x39, 0x84, 0xcb, 0x62, 0xf4, 0xc2, 0x20, 0x55, 0xf6, 0x86, 0x2c,
		0x6b, 0x63, 0x2e, 0xe7, 0x37, 0xaf, 0xd3, 0xa6, 0xcc, 0x38, 0xf1, 0x9c, 0x1f, 0xd3, 0xf1, 0x0b,
		0x4d, 0x4a, 0x37, 0x94, 0x32, 0x3d, 0x60, 0xfe, 0xf3, 0xfb, 0xdb, 0x4a, 0x28, 0x2f, 0x45, 0xde,
		0x45, 0x2b, 0xef, 0xa2, 0xba, 0x90, 0x75, 0x49, 0x36, 0x64, 0x5d, 0xc8, 0xba, 0x90, 0x75, 0x21,
		0xeb, 0x42, 0xd6, 0x85, 0xac, 0x6b, 0xcf, 0xb2, 0x2e, 0xac, 0x64, 0x7d, 0x83, 0x48, 0x58, 0xc9,
		0xfa, 0xc6, 0x0b, 0x85, 0x95, 0xac, 0x5b, 0xc8, 0x87, 0x55, 0x7a, 0x3b, 0xe6, 0xf6, 0x5f, 0x9a,
		0x06, 0x56, 0xb2, 0xc2, 0x46, 0x28, 0xd9, 0x08, 0xca, 0xf6, 0x6b, 0x1f, 0xa0, 0x8f, 0x28, 0x48,
		0x80, 0x0d, 0x9d, 0x5e, 0xca, 0xb3, 0xa3, 0x1b, 0x3a, 0x4d, 0x37, 0xf2, 0xd9, 0xd7, 0x0d, 0x9d,
		0x3e, 0xed, 0x91, 0x65, 0xcd, 0xf7, 0x81, 0x5d, 0x1e, 0xbe, 0x6d, 0x2c, 0x95, 0xfc, 0x8c, 0x05,
		0x1d, 0x6b, 0x84, 0x0b, 0xe4, 0x0c, 0xd5, 0xc3, 0x06, 0x69, 0xec, 0xf4, 0x4a, 0x67, 0x67, 0x57,
		0xd2, 0x3b, 0xb9, 0x12, 0xda, 0xb9, 0x95, 0xd0, 0x4e, 0xad, 0xaa, 0xec, 0x9d, 0xfd, 0x14, 0x9e,
		0x6d, 0x0d, 0x27, 0x21, 0xe7, 0xae, 0xaf, 0x96, 0xfc, 0x32, 0x3d, 0xd6, 0x65, 0x1e, 0x73, 0xda,
		0xea, 0x39, 0x1c, 0x42, 0x7b, 0xa3, 0x5d, 0x9f, 0x9f, 0x16, 0x73, 0xd9, 0xcc, 0x91, 0x71, 0xf2,
		0xb5, 0x66, 0x5c, 0xd4, 0xaa, 0x75, 0xeb, 0xc4, 0xf6, 0x59, 0xc7, 0x28, 0xcf, 0x3c, 0xb4, 0x71,
		0x53, 0xbb, 0xc4, 0xae, 0x69, 0x6b, 0x03, 0xd9, 0xbc, 0x76, 0xb1, 0xd0, 0x2b, 0x6c, 0x9c, 0xf6,
		0x1b, 0x3c, 0xbd, 0x54, 0xae, 0x78, 0x93, 0xe2, 0xed, 0x7b, 0xfe, 0xf3, 0x69, 0xbf, 0xf2, 0x5f,
		0x55, 0x51, 0x8a, 0x48, 0x9e, 0xb7, 0xa3, 0xf9, 0x9d, 0xa9, 0x74, 0xcb, 0x5a, 0x29, 0x9b, 0x80,
		0xab, 0x71, 0x54, 0xf2, 0xdd, 0x83, 0xdc, 0x33, 0x4a, 0x76, 0x07, 0xaa, 0xdd, 0xc0, 0xae, 0x98,
		0xbf, 0x5c, 0x63, 0x90, 0xa7, 0x92, 0x72, 0xce, 0x24, 0x49, 0xe9, 0xe7, 0x4c, 0xcc, 0x9a, 0xbb,
		0x2b, 0xc9, 0x5f, 0xab, 0x61, 0x55, 0xd4, 0xb1, 0x28, 0xa4, 0x58, 0x13, 0x85, 0x2c, 0x89, 0x42,
		0x56, 0x44, 0x96, 0x6d, 0x29, 0x0a, 0x24, 0xfa, 0x04, 0x10, 0x89, 0x90, 0x30, 0x46, 0x08, 0x28,
		0x27, 0xd0, 0xc5, 0x1f, 0x76, 0xe2, 0x3d, 0x43, 0xcc, 0x46, 0x27, 0xdb, 0xd8, 0x68, 0x1a, 0x59,
		0xbc, 0xaa, 0x18, 0x9f, 0x82, 0xc4, 0xa8, 0x1c, 0xe6, 0xb4, 0xac, 0x18, 0xb7, 0x4e, 0x84, 0x4c,
		0xea, 0xf4, 0x74, 0x31, 0x2b, 0xfb, 0x7c, 0x1d, 0x5a, 0xcc, 0xa7, 0x09, 0x9b, 0xfe, 0x33, 0x31,
		0x9f, 0x48, 0x62, 0x33, 0xbf, 0x9a, 0x26, 0x7d, 0xd9, 0xc4, 0xb5, 0xb2, 0xa6, 0x7a, 0x65, 0xac,
		0xb3, 0xb2, 0x26, 0x78, 0x84, 0x4d, 0x8d, 0xc3, 0xa6, 0x84, 0x9e, 0x93, 0x18, 0xa3, 0xe6, 0x27,
		0x8d, 0x34, 0x4e, 0x96, 0xa6, 0x11, 0xd3, 0x30, 0x33, 0x56, 0x64, 0x13, 0x49, 0x4a, 0x13, 0x8f,
		0xfa, 0x47, 0xaf, 0x9c, 0x31, 0x28, 0xa6, 0xe9, 0x30, 0xde, 0xbb, 0xbf, 0x73, 0xbd, 0xf8, 0x26,
		0x01, 0x85, 0x78, 0x63, 0x71, 0xaa, 0x98, 0x0c, 0x2c, 0x5e, 0x50, 0x18, 0x3b, 0x18, 0x94, 0x01,
		0x02, 0xe5, 0x82, 0x3f, 0x59, 0xa0, 0x4f, 0x3a, 0xd8, 0x93, 0x0e, 0xf2, 0xa4, 0x83, 0x3b, 0xbd,
		0x42, 0xeb, 0x19, 0x8f, 0x97, 0x3d, 0x0f, 0x7d, 0x97, 0xbc, 0x34, 0x3a, 0x3c, 0xe3, 0x8e, 0x65,
		0xd2, 0x29, 0x64, 0xd2, 0xc8, 0xa4, 0x91, 0x49, 0xef, 0x60, 0x26, 0x1d, 0xb7, 0x13, 0x0e, 0x4f,
		0x64, 0x77, 0xfe, 0x6f, 0x70, 0x4f, 0xb8, 0x63, 0x0d, 0x5c, 0x5f, 0xc8, 0xb3, 0x84, 0xb9, 0xbd,
		0xbf, 0x16, 0x40, 0x56, 0xa9, 0x5a, 0x8a, 0xab, 0x96, 0xee, 0xb2, 0x55, 0xb8, 0x6e, 0xb5, 0x2e,
		0x5c, 0x95, 0x2b, 0x57, 0xee, 0xd2, 0x95, 0xbb, 0x76, 0xe5, 0x2e, 0x5e, 0x8e, 0xab, 0x97, 0xe4,
		0xf2, 0x65, 0x53, 0x5b, 0x54, 0xa9, 0xae, 0x90, 0xd9, 0x08, 0x9f, 0x25, 0xd5, 0x84, 0x88, 0x68,
		0x58, 0xb1, 0xcb, 0xd9, 0x8f, 0x68, 0x1d, 0x77, 0xfe, 0xef, 0x35, 0xbf, 0xab, 0x38, 0xb5, 0xc9,
		0x2f, 0xd8, 0x95, 0x22, 0xff, 0x67, 0xb9, 0x00, 0xc5, 0x63, 0x6a, 0xf1, 0x89, 0xc7, 0x00, 0x4f,
		0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4f, 0xd6, 0xc1, 0x13, 0x8f, 0x69, 0x8e,
		0x4e, 0x3c, 0x06, 0x70, 0xf2, 0x7e, 0x70, 0xe2, 0x0e, 0x85, 0x62, 0xfa, 0x24, 0x94, 0x00, 0x00,
		0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0xe5, 0x15, 0x40, 0x91, 0x1c, 0x23,
		0x62, 0x81, 0x28, 0x57, 0x43, 0x01, 0x06, 0x65, 0x0b, 0x90, 0xa2, 0x92, 0x42, 0x99, 0x0b, 0x00,
		0x88, 0x02, 0x88, 0x02, 0x88, 0x02, 0x88, 0x02, 0x88, 0x02, 0x88, 0xb2, 0x0e, 0xa2, 0xe8, 0x4d,
		0xa2, 0x4c, 0x10, 0x0a, 0x58, 0x94, 0xf7, 0xdc, 0x81, 0xb9, 0x16, 0x48, 0xdf, 0x48, 0x75, 0xa5,
		0x41, 0x50, 0xf2, 0x36, 0x71, 0x92, 0xf7, 0xe5, 0x01, 0x44, 0x01, 0x44, 0x01, 0x44, 0x01, 0x44,
		0x79, 0xcb, 0xd5, 0x94, 0xbe, 0xaf, 0x4c, 0x68, 0xb7, 0x7d, 0x66, 0x77, 0x3d, 0xd6, 0x95, 0x69,
		0xb4, 0xf3, 0x4c, 0x51, 0xe2, 0xce, 0x30, 0x66, 0x6d, 0x86, 0xc2, 0xbe, 0x7c, 0x99, 0xae, 0x1b,
		0x4c, 0xae, 0xc4, 0x20, 0x20, 0x88, 0x77, 0x60, 0x38, 0x19, 0xcb, 0xf2, 0x57, 0x54, 0x55, 0xc6,
		0xf2, 0x7c, 0xd0, 0x19, 0xc0, 0x0a, 0xc0, 0x0a, 0xc0, 0x0a, 0x84, 0xb1, 0x82, 0xac, 0xc5, 0x0a,
		0xea, 0x13, 0x46, 0x2a, 0x89, 0xa3, 0xa2, 0x04, 0x52, 0x59, 0x70, 0x50, 0x19, 0x24, 0x68, 0x04,
		0x0b, 0xd5, 0x41, 0x83, 0x4c, 0xf0, 0x20, 0x13, 0x44, 0xc8, 0x04, 0x13, 0xb9, 0x41, 0x45, 0x72,
		0x70, 0x51, 0x97, 0x90, 0xae, 0xd8, 0x7d, 0x30, 0x93, 0x56, 0x85, 0x97, 0x7f, 0x01, 0xff, 0x4b,
		0x0a, 0xce, 0x3d, 0xbb, 0xf6, 0x6a, 0x36, 0xb8, 0x50, 0x38, 0x3b, 0x7d, 0x71, 0xe7, 0x1f, 0x73,
		0x0a, 0xef, 0xfd, 0x8a, 0x0e, 0x1c, 0x2a, 0x94, 0xa1, 0x66, 0x0b, 0xc1, 0x3c, 0x47, 0xf9, 0x7e,
		0x27, 0xe6, 0xc1, 0x6d, 0xca, 0x2a, 0x35, 0x47, 0xb7, 0x69, 0xab, 0xd4, 0x9c, 0x3e, 0x4d, 0x07,
		0xff, 0x3c, 0x67, 0xc6, 0xa3, 0xcc, 0x6d, 0xca, 0xca, 0xcd, 0x5e, 0xcd, 0xe4, 0x6f, 0x53, 0x56,
		0xbe, 0x99, 0x38, 0xf8, 0xfe, 0xfd, 0xcb, 0x7b, 0x8f, 0x49, 0x3c, 0x67, 0xc7, 0xea, 0x36, 0x8c,
		0x68, 0xaa, 0xbc, 0xcd, 0x57, 0xf5, 0xca, 0x5f, 0x64, 0xee, 0xf5, 0x3f, 0x07, 0xb2, 0xee, 0x76,
		0xe2, 0x0f, 0x13, 0x1b, 0x64, 0xec, 0x8f, 0x5b, 0x2f, 0xc0, 0xad, 0x53, 0x73, 0xeb, 0x81, 0xd5,
		0xda, 0x56, 0xf7, 0xd8, 0x3a, 0x6f, 0x3e, 0xa7, 0x3f, 0xe7, 0xc6, 0x47, 0x89, 0xe7, 0xe2, 0xf8,
		0xf5, 0x8b, 0xa3, 0x75, 0x1f, 0x4b, 0x7f, 0x2e, 0x8e, 0x8f, 0x36, 0xbc, 0x53, 0x18, 0x1f, 0xbd,
		0xf1, 0x3b, 0xf2, 0xe3, 0x83, 0x95, 0x8f, 0x4e, 0x5e, 0xcf, 0x6c, 0x3a, 0x20, 0xb7, 0xe1, 0x80,
		0xec, 0xa6, 0x03, 0xb2, 0x1b, 0x0e, 0xd8, 0x28, 0x52, 0x66, 0xc3, 0x01, 0xf9, 0xf1, 0x68, 0xe5,
		0xf3, 0x07, 0xeb, 0x3f, 0x5a, 0x18, 0x27, 0x46, 0x9b, 0xde, 0x2b, 0x8e, 0x47, 0x47, 0x89, 0x04,
		0x02, 0x1d, 0x99, 0x40, 0x07, 0xf5, 0x97, 0xaf, 0xfe, 0xfb, 0x17, 0xf8, 0x3f, 0xed, 0xf6, 0xef,
		0xc4, 0x2e, 0x2e, 0x1f, 0xe4, 0xb3, 0xd0, 0x9d, 0xf8, 0xaa, 0x3b, 0x51, 0xe2, 0x66, 0xd2, 0xd8,
		0x99, 0xe1, 0x37, 0x58, 0x79, 0xba, 0xc5, 0x90, 0xe4, 0xba, 0x8b, 0xdc, 0x7d, 0x85, 0xe4, 0xef,
		0x27, 0x44, 0x62, 0x1f, 0x21, 0x05, 0xfb, 0x07, 0x29, 0xd8, 0x37, 0x08, 0x33, 0xd8, 0x25, 0x79,
		0x6d, 0x53, 0x4a, 0xdf, 0x51, 0x44, 0xbd, 0xe3, 0x98, 0x1a, 0x2f, 0xc1, 0x46, 0xf6, 0x6d, 0x6a,
		0xfc, 0x62, 0x48, 0xb8, 0x2e, 0x43, 0xd9, 0x3f, 0x11, 0xd6, 0x22, 0x19, 0xfb, 0xce, 0x9b, 0x3f,
		0xee, 0x59, 0x7c, 0x2c, 0x84, 0x84, 0x51, 0xe8, 0x5f, 0xbe, 0x84, 0x9a, 0x68, 0x4d, 0xdc, 0xa2,
		0xf1, 0x1f, 0xe3, 0x4f, 0xb7, 0x6d, 0xdd, 0xf5, 0x06, 0xe2, 0xa8, 0x9a, 0xb9, 0xa9, 0x5d, 0xb6,
		0xca, 0x37, 0xb5, 0xcb, 0x3f, 0x77, 0x6c, 0x4e, 0x7a, 0x70, 0xd7, 0x76, 0x79, 0x4a, 0xfa, 0x5b,
		0x6f, 0xab, 0x96, 0x7b, 0x7a, 0x9d, 0x31, 0xbf, 0xed, 0xf1, 0x81, 0x14, 0xc8, 0x14, 0x1a, 0x4a,
		0xc5, 0x69, 0xf7, 0x87, 0x1d, 0x66, 0x88, 0x7b, 0xee, 0x1b, 0x6d, 0xd7, 0x11, 0x36, 0x77, 0x98,
		0x67, 0x74, 0x5d, 0xcf, 0x08, 0x3c, 0xb8, 0x31, 0xf1, 0xe0, 0xc6, 0x74, 0x9b, 0x43, 0xf1, 0x34,
		0x60, 0xb1, 0x67, 0x38, 0x12, 0xfb, 0x8a, 0x96, 0x4d, 0xa7, 0xb3, 0x74, 0xf1, 0x25, 0x00, 0x36,
		0x15, 0x4d, 0x43, 0x2f, 0x2c, 0xe9, 0xfd, 0xf7, 0x1d, 0xc8, 0x30, 0xd6, 0x6f, 0x6d, 0x92, 0xc6,
		0x1c, 0x31, 0x23, 0x56, 0x22, 0x48, 0x35, 0x06, 0xcb, 0xdf, 0x3a, 0x35, 0x8b, 0xd6, 0xee, 0xa2,
		0xd3, 0xdb, 0x08, 0x35, 0x2c, 0xa6, 0x65, 0x33, 0xb1, 0x2e, 0x8f, 0x89, 0x69, 0x19, 0x4c, 0x6c,
		0x1b, 0x12, 0xc5, 0xd9, 0xb1, 0x2c, 0xa7, 0x23, 0x39, 0x6e, 0x64, 0x20, 0xad, 0xa3, 0x58, 0x5a,
		0xf0, 0x97, 0xd6, 0x11, 0x4c, 0x3b, 0x5f, 0x8e, 0x6b, 0x59, 0x88, 0xf9, 0x22, 0x15, 0x89, 0x7f,
		0xaf, 0xb5, 0x97, 0xa7, 0x8b, 0x77, 0xbf, 0xb5, 0x54, 0xdc, 0xfb, 0xad, 0xa5, 0xb0, 0xdf, 0x1a,
		0x5d, 0x1e, 0x01, 0xfb, 0xad, 0x51, 0x4e, 0x3d, 0x62, 0xb2, 0x9c, 0xd8, 0x17, 0x36, 0x2c, 0xfa,
		0x1d, 0x3b, 0xcc, 0x11, 0x5c, 0x3c, 0xc5, 0xbb, 0xba, 0x3e, 0x44, 0x68, 0x31, 0x96, 0x0c, 0xcd,
		0xca, 0xec, 0xa7, 0x9c, 0xd8, 0xbe, 0xc4, 0xed, 0xd8, 0x8f, 0xcf, 0x2b, 0xad, 0xfa, 0xe4, 0x7f,
		0x8d, 0xbf, 0x6b, 0xe5, 0xb8, 0xcd, 0xf4, 0xc6, 0xee, 0x0f, 0x99, 0x2f, 0xa5, 0x25, 0x4d, 0xf2,
		0xb2, 0xf9, 0x4a, 0xed, 0x26, 0xd7, 0x3a, 0xaf, 0x5e, 0xfd, 0xaf, 0x5e, 0x2b, 0x9f, 0x9a, 0xbb,
		0x30, 0x80, 0x40, 0xc5, 0x05, 0xac, 0x1e, 0x9f, 0x94, 0xab, 0xe5, 0xb3, 0xd6, 0xb7, 0xcb, 0xca,
		0xe9, 0x71, 0xbd, 0x81, 0xeb, 0xf8, 0xc1, 0xeb, 0x88, 0xeb, 0xb7, 0xcd, 0xf5, 0x2b, 0x40, 0x0f,
		0x23, 0xba, 0x8e, 0xb8, 0x7e, 0x1f, 0xbe, 0x7e, 0x8b, 0x12, 0x14, 0xae, 0xde, 0x47, 0xaf, 0xde,
		0x4d, 0xad, 0x5a, 0xc7, 0xd5, 0xfb, 0xc0, 0xd5, 0xcb, 0x4e, 0xae, 0x5e, 0x10, 0x49, 0x2e, 0xbe,
		0x55, 0x1b, 0xb0, 0xe1, 0xed, 0xaf, 0x23, 0x3c, 0xe1, 0xf6, 0x57, 0xb1, 0x00, 0x6d, 0x8c, 0xe8,
		0x3a, 0x42, 0x1b, 0x3f, 0x7e, 0x15, 0x2b, 0x97, 0xff, 0xad, 0x37, 0x8e, 0x1b, 0x65, 0x5c, 0xbc,
		0x2d, 0x2e, 0x5e, 0xab, 0x5e, 0x3b, 0xc7, 0x05, 0xdc, 0xe6, 0x02, 0x02, 0x18, 0x7e, 0xe8, 0x02,
		0xd6, 0xaf, 0x1b, 0xe5, 0x56, 0xed, 0xaa, 0x5a, 0x39, 0xfd, 0x3b, 0x08, 0xcc, 0xb8, 0x86, 0x5b,
		0x5f, 0xc3, 0x02, 0xae, 0xe1, 0xfb, 0xaf, 0xe1, 0x4d, 0xed, 0x52, 0x2e, 0x61, 0x18, 0xeb, 0x19,
		0x9a, 0x7b, 0xdf, 0x72, 0x35, 0x46, 0xcb, 0x95, 0xa2, 0x96, 0xab, 0x18, 0x16, 0x32, 0x46, 0xd8,
		0xd9, 0xf4, 0x89, 0x90, 0x3a, 0xcc, 0x17, 0x1a, 0xc6, 0x51, 0xfc, 0x8f, 0x67, 0x35, 0x61, 0x7c,
		0xab, 0x06, 0xa5, 0xae, 0x0e, 0x8c, 0x71, 0x15, 0x60, 0x8c, 0xab, 0xfd, 0xa2, 0xd2, 0xba, 0x98,
		0x9c, 0x8f, 0x4a, 0xa7, 0x63, 0x46, 0xda, 0xb0, 0xf8, 0x91, 0xa6, 0xce, 0x68, 0x1c, 0xde, 0xf6,
		0xee, 0x69, 0xbb, 0x6f, 0xd8, 0x52, 0xc5, 0xa2, 0x56, 0x2d, 0x05, 0x2a, 0xb5, 0xdd, 0x7d, 0xfc,
		0xf8, 0xd5, 0xdf, 0xe2, 0xca, 0x9b, 0xb6, 0x10, 0x9e, 0xe5, 0x33, 0xb1, 0xfd, 0x8c, 0xe2, 0x45,
		0x3f, 0x5a, 0xf8, 0x95, 0x5b, 0x6a, 0x44, 0x34, 0xad, 0xb4, 0x91, 0xf5, 0x96, 0x45, 0xd9, 0x43,
		0x16, 0x4f, 0xaf, 0x58, 0xd4, 0x3d, 0x61, 0xb1, 0xf5, 0x7e, 0xc5, 0xd6, 0xe3, 0x15, 0x5b, 0x2f,
		0x97, 0x5a, 0xdf, 0x18, 0x55, 0xab, 0x6a, 0x68, 0x9b, 0xd1, 0xa9, 0xc8, 0x6b, 0xab, 0x8f, 0x4a,
		0x43, 0xa2, 0xed, 0xa3, 0x8f, 0xbc, 0xc1, 0x34, 0x8e, 0x86, 0xd2, 0x78, 0x1b, 0x48, 0xe3, 0x6a,
		0x18, 0x8d, 0xbd, 0x41, 0x34, 0xf6, 0x86, 0xd0, 0xd8, 0x1b, 0x40, 0x69, 0x65, 0x8e, 0x51, 0xf7,
		0xbd, 0x9b, 0x76, 0xaf, 0xe7, 0xb1, 0x9e, 0x2d, 0x5c, 0x2f, 0xbe, 0xb5, 0x3a, 0x4b, 0xe7, 0xd0,
		0x6c, 0xc1, 0x4e, 0x0a, 0x0b, 0x76, 0xe4, 0x38, 0x22, 0x69, 0x0e, 0x49, 0x9a, 0x63, 0x92, 0xe6,
		0xa0, 0xf4, 0x60, 0x3e, 0x63, 0x5b, 0xb0, 0x13, 0xef, 0xf6, 0x5c, 0x52, 0xb6, 0xe3, 0x8a, 0x79,
		0xfb, 0xad, 0xd8, 0xd6, 0x1f, 0xca, 0x70, 0x6b, 0x72, 0xdd, 0x9b, 0x2c, 0x37, 0x27, 0xdd, 0xdd,
		0x49, 0x77, 0x7b, 0xd2, 0xdd, 0x5f, 0x3c, 0x6e, 0x30, 0x26, 0x77, 0x18, 0xbb, 0x5b, 0x5c, 0xe0,
		0x3b, 0x49, 0xbb, 0x58, 0x2d, 0xc0, 0x9e, 0x9c, 0xa1, 0x89, 0x72, 0x36, 0xa7, 0x92, 0xb6, 0x19,
		0x95, 0xcc, 0xcd, 0xa7, 0xd4, 0x6c, 0x36, 0x25, 0x7b, 0x73, 0x29, 0x65, 0x9b, 0x49, 0x29, 0xdb,
		0x3c, 0x4a, 0xd9, 0x66, 0x51, 0x7a, 0x4f, 0x7d, 0x95, 0xb6, 0xf9, 0x93, 0xaa, 0x2d, 0x7f, 0x64,
		0xee, 0x01, 0x21, 0x7d, 0xaf, 0x87, 0x1d, 0xda, 0xaa, 0xa7, 0x29, 0xe3, 0xf6, 0xa8, 0xd8, 0x91,
		0x60, 0xc7, 0xb6, 0xd8, 0x69, 0xea, 0x3a, 0x35, 0x2b, 0xc6, 0x7c, 0xc9, 0x96, 0x89, 0x30, 0x01,
		0x2e, 0x01, 0x2e, 0x01, 0x2e, 0x01, 0x2e, 0x01, 0x2e, 0xd7, 0x7a, 0x47, 0xcb, 0x19, 0x3e, 0xdc,
		0x31, 0x4f, 0x22, 0xb2, 0x2c, 0x4a, 0x38, 0xd5, 0xb5, 0xed, 0xf4, 0xe4, 0x6d, 0x14, 0x2a, 0x71,
		0x6b, 0x92, 0x0b, 0xee, 0xc8, 0xdf, 0x63, 0x3c, 0x18, 0x00, 0xa2, 0x60, 0x8f, 0xed, 0x73, 0xcf,
		0x6e, 0x0b, 0xee, 0x3a, 0x67, 0xbc, 0xc7, 0x65, 0x6d, 0x40, 0xf1, 0xd2, 0x4c, 0x58, 0xcf, 0x16,
		0xfc, 0x91, 0x49, 0xd9, 0x8f, 0x41, 0xa2, 0xa7, 0x79, 0xa9, 0x52, 0xf6, 0x4f, 0x75, 0x2a, 0x95,
		0xcb, 0x94, 0x72, 0xa5, 0x42, 0x31, 0x53, 0xca, 0x43, 0xb7, 0x64, 0xe9, 0xd6, 0x8e, 0x6c, 0x1f,
		0x84, 0xcc, 0x6a, 0x5d, 0x66, 0x95, 0x93, 0x99, 0x5a, 0xe5, 0x90, 0x5b, 0x21, 0xb7, 0x42, 0x6e,
		0x85, 0xdc, 0x0a, 0xb9, 0x15, 0x72, 0x2b, 0xe4, 0x56, 0xc8, 0xad, 0x90, 0x5b, 0x21, 0xb7, 0x42,
		0x6e, 0x85, 0xdc, 0x4a, 0x6d, 0xac, 0x97, 0xb0, 0x3f, 0xda, 0xca, 0x39, 0x3d, 0xd6, 0x65, 0x1e,
		0x73, 0xda, 0x3b, 0x19, 0x19, 0xe7, 0x90, 0xe6, 0xfa, 0xfc, 0xd4, 0x28, 0x14, 0x4b, 0x59, 0xc3,
		0x32, 0x4e, 0xbe, 0xd6, 0x8c, 0xfa, 0x70, 0x30, 0x70, 0x3d, 0x11, 0xec, 0x19, 0x74, 0xee, 0x0e,
		0x3d, 0xcb, 0x6d, 0x0b, 0x26, 0x8c, 0xe3, 0xba, 0x71, 0x19, 0x00, 0x1f, 0xa3, 0x3e, 0xb0, 0xdb,
		0xcc, 0x94, 0xe8, 0x6f, 0x25, 0x67, 0x1f, 0xeb, 0xb2, 0x90, 0x85, 0x22, 0x48, 0x76, 0x7a, 0xaa,
		0x12, 0x92, 0xb5, 0x89, 0xc9, 0xc7, 0x34, 0x05, 0x7e, 0x9a, 0x96, 0x9f, 0x46, 0xdf, 0xad, 0xb1,
		0x9b, 0xbb, 0xb5, 0xce, 0x17, 0x6e, 0x87, 0xcf, 0x92, 0x8b, 0x65, 0x57, 0x71, 0x6e, 0x32, 0x8f,
		0x11, 0x3e, 0xbb, 0xa8, 0x31, 0x14, 0x76, 0x4d, 0x13, 0xc2, 0xab, 0x33, 0xd1, 0x3a, 0x5e, 0x08,
		0xb5, 0x07, 0xdb, 0xa6, 0xd9, 0xbe, 0x35, 0xbb, 0xf7, 0x71, 0x2d, 0xc6, 0x9c, 0x9d, 0x00, 0x2b,
		0x31, 0xb1, 0x12, 0xf3, 0xad, 0x00, 0x18, 0x2b, 0x31, 0x77, 0x28, 0x80, 0xc5, 0xb7, 0x75, 0x9a,
		0x6f, 0xf9, 0xac, 0x37, 0xbb, 0xc0, 0x71, 0xef, 0x9b, 0xb6, 0x38, 0x97, 0xe6, 0x6b, 0x32, 0xb1,
		0x69, 0x1a, 0x31, 0x26, 0x00, 0x6b, 0x32, 0xf7, 0x3c, 0x37, 0x8c, 0x7d, 0x4d, 0x26, 0x77, 0x3a,
		0xec, 0xa7, 0xbc, 0xa6, 0x8e, 0xe9, 0xe9, 0xd0, 0xd6, 0x41, 0xcd, 0x7d, 0xaa, 0x71, 0xa3, 0xb2,
		0xdd, 0xa9, 0x32, 0xb7, 0xaa, 0xcc, 0xbd, 0x2a, 0x73, 0xb3, 0xf1, 0x93, 0x7c, 0xc6, 0x4e, 0xb6,
		0x75, 0xf4, 0x99, 0xdd, 0x8d, 0x77, 0xdf, 0xca, 0x15, 0x54, 0x59, 0x94, 0xb3, 0x14, 0x33, 0xe0,
		0x90, 0xbe, 0x7c, 0x99, 0xf2, 0x7f, 0xc9, 0x69, 0x20, 0x40, 0x8f, 0xe5, 0x1a, 0x66, 0x2a, 0xce,
		0x19, 0x32, 0x2b, 0xfa, 0x16, 0xe7, 0x2c, 0x19, 0x49, 0xf9, 0xcb, 0x6a, 0x40, 0xce, 0x20, 0x20,
		0x23, 0x20, 0x23, 0x20, 0xef, 0x60, 0x40, 0x8e, 0x3b, 0x1f, 0x92, 0x9c, 0x17, 0x29, 0xc9, 0x8f,
		0x24, 0xe7, 0x49, 0xd2, 0xf3, 0x25, 0x15, 0x6e, 0x5a, 0xad, 0xbb, 0x56, 0xe5, 0xb6, 0x95, 0xbb,
		0x6f, 0xe5, 0x6e, 0x5c, 0xb9, 0x3b, 0x97, 0xe3, 0xd6, 0x25, 0xb9, 0x77, 0xf9, 0x79, 0xd7, 0x8a,
		0xdd, 0x0e, 0xb9, 0x23, 0xb2, 0x19, 0x99, 0x36, 0x2b, 0xaf, 0xb7, 0x3e, 0x3c, 0xa5, 0xdc, 0x1e,
		0xfb, 0xf9, 0x43, 0xae, 0x4f, 0x32, 0x54, 0xf5, 0xdc, 0x87, 0x27, 0x57, 0xd4, 0x7b, 0x1f, 0x9e,
		0x5f, 0x75, 0x9f, 0xf4, 0xc2, 0xb6, 0x54, 0xf5, 0x4b, 0x4b, 0x76, 0x5b, 0x2f, 0x55, 0x4f, 0x41,
		0x6f, 0xfe, 0x8a, 0xea, 0xa9, 0xea, 0xd1, 0x87, 0x0e, 0x2a, 0x0a, 0xd0, 0xf2, 0xcf, 0xd6, 0xdc,
		0x91, 0x5e, 0x57, 0x09, 0x3e, 0xc2, 0x7c, 0x60, 0xc1, 0x82, 0x3d, 0xe9, 0x59, 0xe5, 0xec, 0xbc,
		0x48, 0x2b, 0x91, 0x56, 0x22, 0xad, 0x44, 0x5a, 0x89, 0xb4, 0x52, 0xba, 0xdd, 0xca, 0x5c, 0xad,
		0x8d, 0xcc, 0x12, 0x99, 0x25, 0x50, 0x3d, 0x32, 0x4b, 0x64, 0x96, 0xc8, 0x2c, 0x91, 0x59, 0x52,
		0xc1, 0x1e, 0xb1, 0xec, 0x85, 0xfd, 0x96, 0x30, 0x15, 0xcf, 0x5e, 0xd9, 0x6f, 0xf1, 0x52, 0xd2,
		0xf6, 0xd2, 0xfe, 0xad, 0x30, 0xf1, 0xed, 0xb5, 0xfd, 0xf6, 0x53, 0x47, 0xbe, 0x17, 0xf7, 0x7e,
		0x70, 0x26, 0x42, 0x26, 0x66, 0x0f, 0xf1, 0x7a, 0x70, 0x56, 0xf0, 0x25, 0xe0, 0x4b, 0xc0, 0x97,
		0x80, 0x2f, 0x01, 0x5f, 0xa2, 0x82, 0x2f, 0x19, 0xd8, 0xe2, 0x7e, 0xbe, 0xb0, 0xce, 0x92, 0xe8,
		0x8f, 0x97, 0x7d, 0x72, 0x3a, 0x27, 0xf1, 0x9c, 0x65, 0x67, 0xf8, 0x20, 0xdf, 0x67, 0x34, 0xdc,
		0xba, 0xf0, 0xb8, 0xd3, 0x53, 0x92, 0x52, 0x9a, 0xa9, 0xc9, 0xcd, 0x3e, 0xae, 0xb7, 0xea, 0xe5,
		0xff, 0xcf, 0x54, 0x90, 0x4a, 0xa7, 0xc3, 0xd3, 0x37, 0x54, 0x9c, 0x3e, 0x33, 0x3b, 0xfd, 0xe9,
		0xd5, 0xe5, 0x79, 0xf9, 0x6c, 0x72, 0x11, 0xbe, 0x95, 0x2f, 0x4f, 0xcb, 0x2a, 0x44, 0xc9, 0xbe,
		0x16, 0xa5, 0x61, 0x7e, 0xda, 0x61, 0x22, 0xc5, 0x6c, 0xb8, 0x95, 0x18, 0xd7, 0x06, 0xff, 0x3a,
		0x46, 0xad, 0xde, 0xf0, 0xd8, 0x5b, 0xd6, 0x7f, 0x2b, 0x48, 0xc3, 0x3c, 0x32, 0xb2, 0x6a, 0x64,
		0x98, 0xd8, 0xbe, 0x12, 0xfa, 0x66, 0x6e, 0xf9, 0x47, 0x46, 0x7a, 0x47, 0x29, 0x94, 0x5d, 0x19,
		0x44, 0xa5, 0x77, 0xd3, 0xba, 0xa4, 0x01, 0x4f, 0xe1, 0xf9, 0x94, 0x8e, 0xed, 0x99, 0x02, 0xb7,
		0xe4, 0x62, 0x28, 0x42, 0x9c, 0x03, 0x9f, 0xe2, 0xd7, 0x0f, 0xbd, 0x96, 0x8b, 0xff, 0x97, 0x3d,
		0xc5, 0xbd, 0x8a, 0x40, 0x0e, 0x91, 0x29, 0x8f, 0xb8, 0x54, 0x4a, 0x54, 0x4a, 0x24, 0x26, 0x25,
		0x12, 0x91, 0x18, 0x94, 0x17, 0xa5, 0xff, 0x34, 0x63, 0x5d, 0x6c, 0xfa, 0xb1, 0x31, 0x68, 0x7e,
		0x7d, 0x26, 0x1b, 0xc6, 0xf8, 0x45, 0x91, 0xf8, 0xff, 0x0c, 0x5c, 0x4f, 0xf4, 0x3d, 0x13, 0xf1,
		0x4f, 0xe3, 0x72, 0xdb, 0x16, 0xfb, 0x29, 0x8e, 0x04, 0x9b, 0x78, 0x50, 0xe1, 0x3d, 0x59, 0xb6,
		0x70, 0x1f, 0x78, 0x5b, 0xce, 0x78, 0xae, 0xc0, 0x83, 0x49, 0x98, 0xcf, 0x45, 0x7d, 0x2a, 0x57,
		0xc4, 0x9b, 0xf5, 0xca, 0x18, 0x70, 0x2d, 0x61, 0xa0, 0xb5, 0x84, 0x59, 0x53, 0xd7, 0xe7, 0xa7,
		0x46, 0x2e, 0x53, 0x4c, 0x1b, 0x96, 0x71, 0x6c, 0x9c, 0xb8, 0x93, 0x00, 0x6b, 0x7c, 0xb5, 0x05,
		0xfb, 0x61, 0x3f, 0x19, 0x73, 0xe7, 0x69, 0xe4, 0x8c, 0x83, 0x93, 0xaf, 0x35, 0x2b, 0x97, 0xf8,
		0xee, 0x7c, 0x68, 0x6c, 0xf1, 0xf4, 0xb0, 0x7c, 0xaa, 0x90, 0x9f, 0x9c, 0x66, 0x28, 0x5c, 0xc7,
		0x7d, 0x70, 0x87, 0xbe, 0x51, 0x7f, 0xf2, 0x05, 0x7b, 0x30, 0x4e, 0x5d, 0xa7, 0xcb, 0x3a, 0xcc,
		0x0b, 0xe2, 0xa2, 0x1f, 0x7c, 0xd7, 0xc9, 0xd7, 0xda, 0x8e, 0xcd, 0xbe, 0x92, 0x35, 0xf5, 0x5a,
		0xed, 0xf8, 0x2b, 0xc2, 0xea, 0xa4, 0x5b, 0x7e, 0x15, 0xf9, 0xb7, 0x36, 0x31, 0x08, 0x58, 0x2d,
		0x22, 0xde, 0x8f, 0x81, 0xbb, 0xb9, 0xd8, 0x27, 0xee, 0xe6, 0x30, 0x72, 0x17, 0x23, 0x77, 0xdf,
		0x17, 0x7d, 0x31, 0x72, 0x77, 0x87, 0x92, 0xcd, 0x18, 0x47, 0xee, 0xe6, 0x64, 0xce, 0xdc, 0xcd,
		0x61, 0xe8, 0xae, 0x32, 0x17, 0x27, 0xd7, 0xd5, 0xa9, 0x4c, 0x3c, 0x30, 0x74, 0x97, 0x32, 0xca,
		0xc7, 0xd0, 0xdd, 0x37, 0x59, 0x27, 0x86, 0xee, 0xd2, 0x74, 0x9f, 0x6a, 0xdc, 0xa8, 0x6c, 0x77,
		0xaa, 0xcc, 0xad, 0x2a, 0x73, 0xaf, 0xca, 0xdc, 0x6c, 0xbc, 0xee, 0x36, 0x66, 0xb7, 0x1b, 0x5e,
		0x35, 0x0c, 0xdd, 0x8d, 0xca, 0x85, 0x61, 0xe8, 0xee, 0x5b, 0xf9, 0x2d, 0x0c, 0xdd, 0xdd, 0x3a,
		0x20, 0x63, 0xe8, 0x2e, 0x02, 0x32, 0x02, 0xf2, 0x2e, 0x06, 0x64, 0x0c, 0xdd, 0xd5, 0x2e, 0x4f,
		0x92, 0x9e, 0x2f, 0xa9, 0x70, 0xd3, 0x6a, 0xdd, 0xb5, 0x2a, 0xb7, 0xad, 0xdc, 0x7d, 0x2b, 0x77,
		0xe3, 0xca, 0xdd, 0xb9, 0x1c, 0xb7, 0x2e, 0xc9, 0xbd, 0xcb, 0xcf, 0xbb, 0x56, 0xec, 0x16, 0x43,
		0x77, 0x63, 0x7b, 0x60, 0x34, 0x92, 0xdc, 0xf3, 0x63, 0x2c, 0x8d, 0x64, 0xb7, 0xf5, 0x52, 0xf5,
		0x30, 0x1a, 0x09, 0x3a, 0x28, 0x3d, 0x40, 0xcb, 0x3f, 0x1b, 0x86, 0xee, 0xbe, 0x5d, 0x09, 0x31,
		0x74, 0x17, 0x69, 0x25, 0xd2, 0x4a, 0xa4, 0x95, 0x48, 0x2b, 0xf7, 0x2d, 0xad, 0xc4, 0xd0, 0x5d,
		0x64, 0x96, 0xc8, 0x2c, 0x91, 0x59, 0x22, 0xb3, 0x84, 0x0e, 0x22, 0xb3, 0x24, 0x95, 0x59, 0x62,
		0xe8, 0x6e, 0x5c, 0x5e, 0x0a, 0x43, 0x77, 0x31, 0x74, 0x77, 0xeb, 0xeb, 0x87, 0xa1, 0xbb, 0xe0,
		0x4b, 0xc0, 0x97, 0x80, 0x2f, 0x01, 0x5f, 0xb2, 0x67, 0x7c, 0x09, 0x86, 0xee, 0xca, 0xb9, 0xc7,
		0x18, 0xba, 0x8b, 0xa1, 0xbb, 0x18, 0xba, 0x2b, 0x33, 0x46, 0x61, 0xe8, 0xee, 0x0b, 0x19, 0x30,
		0x74, 0x57, 0x77, 0x38, 0x82, 0xa6, 0xf5, 0x5f, 0xab, 0xd9, 0x5e, 0x0d, 0xdd, 0xcd, 0xcd, 0xa7,
		0x46, 0xe6, 0x30, 0x76, 0x57, 0xba, 0xce, 0x61, 0xec, 0xee, 0x47, 0xce, 0x84, 0xb1, 0xbb, 0x9a,
		0x68, 0xf7, 0x7e, 0x8c, 0xdd, 0x5d, 0xf5, 0xa0, 0x24, 0x07, 0xef, 0xe6, 0x30, 0x79, 0x37, 0xca,
		0xec, 0x1f, 0x93, 0x77, 0xdf, 0x78, 0x66, 0x4c, 0xde, 0x5d, 0xf7, 0xc0, 0xe4, 0x5d, 0x79, 0xca,
		0x6f, 0xbc, 0x9e, 0xbc, 0xfb, 0xee, 0xd1, 0xa7, 0x18, 0x8a, 0x1b, 0x85, 0xed, 0x2b, 0x18, 0x8a,
		0xfb, 0xfe, 0x3b, 0x8d, 0x79, 0xb5, 0x98, 0x57, 0xab, 0x18, 0x4a, 0xee, 0xc3, 0xc0, 0xda, 0x78,
		0x16, 0xec, 0xc7, 0xba, 0x30, 0x3f, 0xa6, 0xca, 0x3f, 0x46, 0xd5, 0x2a, 0x8b, 0x8d, 0x18, 0x55,
		0xbb, 0xa3, 0xd9, 0x59, 0x6c, 0x95, 0x70, 0x09, 0x83, 0xbf, 0xe2, 0x1c, 0xf4, 0x25, 0x65, 0xb0,
		0x17, 0xcd, 0x80, 0x13, 0xcf, 0xa0, 0xae, 0x58, 0x07, 0x73, 0xc5, 0x3e, 0x1b, 0x3d, 0x83, 0x80,
		0x83, 0x80, 0x83, 0x80, 0x13, 0xc1, 0x55, 0x88, 0x6f, 0x36, 0x3a, 0xef, 0x0d, 0x24, 0x0c, 0x45,
		0xe7, 0xb1, 0x75, 0x5c, 0xc6, 0xdc, 0x2f, 0x8b, 0x69, 0xe8, 0x5a, 0x30, 0x4e, 0x98, 0x86, 0x4e,
		0x99, 0x43, 0x8a, 0xc9, 0x72, 0x62, 0xef, 0x47, 0x7d, 0x31, 0x06, 0xaa, 0x90, 0x8b, 0xd3, 0x66,
		0x66, 0x5e, 0xec, 0x30, 0xc6, 0x53, 0xc8, 0x59, 0x8c, 0x2b, 0xa1, 0xa1, 0x45, 0xe6, 0x62, 0x5b,
		0xd9, 0x8b, 0x6b, 0x95, 0x2d, 0x64, 0x94, 0xbf, 0x70, 0x51, 0xc6, 0x72, 0x21, 0x99, 0x8b, 0x63,
		0x43, 0x55, 0x51, 0xb7, 0xba, 0x6d, 0x9f, 0xb4, 0x47, 0xd3, 0xfe, 0xb1, 0xa6, 0x56, 0x21, 0x56,
		0x42, 0xd9, 0x37, 0x3c, 0x57, 0xfc, 0xe5, 0x5f, 0x89, 0x31, 0x6a, 0xb9, 0x1c, 0x5c, 0xcc, 0xa6,
		0xd3, 0x86, 0x65, 0x34, 0xee, 0x99, 0x71, 0xdc, 0x6e, 0x0f, 0x1f, 0x86, 0x7d, 0x5b, 0xb0, 0x8e,
		0x51, 0xf9, 0x5a, 0x33, 0x2e, 0x98, 0xf0, 0x78, 0xdb, 0x38, 0x16, 0xc2, 0xe3, 0x77, 0x43, 0xc1,
		0x24, 0xec, 0x92, 0x2a, 0x1b, 0xa6, 0xaf, 0x83, 0xeb, 0xb2, 0x0a, 0xc4, 0xca, 0x90, 0xfb, 0x5a,
		0x04, 0xff, 0x51, 0x5d, 0x80, 0x2f, 0x95, 0xeb, 0x4b, 0x3f, 0x69, 0xe0, 0x9d, 0xcd, 0x69, 0x53,
		0x95, 0x65, 0xf7, 0x7a, 0xde, 0x24, 0xf4, 0x32, 0x09, 0x24, 0xce, 0xeb, 0x33, 0x82, 0xd0, 0x01,
		0xa1, 0x03, 0x42, 0x07, 0x84, 0x8e, 0x86, 0x84, 0xce, 0x9d, 0xeb, 0xf6, 0x99, 0xed, 0x48, 0x60,
		0x74, 0xd2, 0xe9, 0x3d, 0x0e, 0x52, 0xed, 0xfe, 0xd0, 0x17, 0xcc, 0xb3, 0xfa, 0xdc, 0x97, 0xb0,
		0xf5, 0xea, 0x8b, 0xb3, 0x21, 0x38, 0x21, 0x38, 0x21, 0x38, 0x21, 0x38, 0x69, 0x18, 0x9c, 0xf8,
		0xe0, 0x31, 0x67, 0xd9, 0x9d, 0x8e, 0xc7, 0x7c, 0x5f, 0x46, 0x84, 0x8a, 0xb3, 0xe8, 0x50, 0xb3,
		0x85, 0x60, 0x9e, 0x13, 0x3b, 0xa5, 0x63, 0x1e, 0xdc, 0xa6, 0xac, 0x52, 0x73, 0x74, 0x9b, 0xb6,
		0x4a, 0xcd, 0xe9, 0xd3, 0x74, 0xf0, 0xcf, 0x73, 0x66, 0x3c, 0xca, 0xdc, 0xa6, 0xac, 0xdc, 0xec,
		0xd5, 0x4c, 0xfe, 0x36, 0x65, 0xe5, 0x9b, 0x89, 0x83, 0xef, 0xdf, 0xbf, 0xbc, 0xf7, 0x98, 0xc4,
		0x73, 0x76, 0x1c, 0x9f, 0x39, 0x34, 0xe3, 0xbc, 0x0d, 0x57, 0xf5, 0xca, 0x5f, 0xd2, 0xee, 0xc5,
		0x3f, 0x07, 0xb2, 0xee, 0x46, 0xe2, 0x0f, 0x13, 0x4c, 0xad, 0x81, 0x55, 0xb8, 0x11, 0x9f, 0x1c,
		0xab, 0x70, 0xdf, 0xf1, 0x0b, 0x50, 0x23, 0xd8, 0x32, 0xde, 0x5f, 0x9f, 0x9f, 0x1a, 0xb9, 0x5c,
		0xbe, 0x30, 0x5b, 0x48, 0x74, 0xed, 0x0e, 0x05, 0x33, 0xae, 0x59, 0xb7, 0xcf, 0x82, 0x5a, 0xde,
		0x91, 0x71, 0xec, 0x18, 0xc7, 0xfd, 0x89, 0xeb, 0x0e, 0x4a, 0x6c, 0x86, 0x70, 0x8d, 0xf3, 0x61,
		0xbf, 0xff, 0xdd, 0xb9, 0x60, 0xfe, 0xbd, 0x51, 0x71, 0x82, 0x77, 0xfa, 0xc1, 0xb1, 0x07, 0x95,
		0x93, 0xaf, 0xb5, 0x04, 0xaa, 0x07, 0x7a, 0x23, 0xf1, 0xb5, 0x88, 0x3c, 0x7a, 0x2d, 0x41, 0x5d,
		0x41, 0x6e, 0xe4, 0xd7, 0x82, 0xb2, 0x89, 0x77, 0xa7, 0x53, 0x29, 0x3b, 0x9b, 0x82, 0xa4, 0x01,
		0x49, 0x03, 0x92, 0x06, 0x24, 0x4d, 0xac, 0x76, 0x83, 0x96, 0x50, 0x4a, 0x50, 0x1a, 0x2d, 0xa1,
		0xb1, 0xe8, 0x3a, 0x5a, 0x42, 0x23, 0x52, 0x15, 0xb4, 0x84, 0xa2, 0x25, 0x14, 0xe9, 0xc6, 0x1a,
		0x25, 0xe9, 0xbb, 0x6d, 0xbb, 0x6f, 0x4d, 0xb0, 0x5a, 0xfc, 0x39, 0xc7, 0xd2, 0xb9, 0x90, 0x78,
		0x20, 0xf1, 0x40, 0xe2, 0x81, 0xc4, 0x43, 0xd3, 0xc4, 0x23, 0x9b, 0x91, 0x90, 0x78, 0x14, 0x91,
		0x78, 0x20, 0xf1, 0x40, 0xe2, 0xa1, 0x77, 0xe2, 0x21, 0x7b, 0x63, 0x46, 0xa4, 0x1b, 0x48, 0x37,
		0x08, 0xa7, 0x1b, 0x0f, 0xac, 0x13, 0x7f, 0x9e, 0x31, 0x39, 0x09, 0x12, 0x0c, 0x24, 0x18, 0x48,
		0x30, 0x90, 0x60, 0x20, 0xc1, 0x40, 0x82, 0x81, 0x04, 0x03, 0x60, 0x11, 0x09, 0x06, 0x74, 0x06,
		0x09, 0xc6, 0xee, 0x27, 0x18, 0x0e, 0xfb, 0x29, 0xac, 0x7b, 0x57, 0xc2, 0x4c, 0xbd, 0xf0, 0x4c,
		0x48, 0x35, 0x90, 0x6a, 0x20, 0xd5, 0x40, 0xaa, 0xa1, 0x61, 0xaa, 0xc1, 0x07, 0x32, 0xd7, 0xb9,
		0x95, 0x62, 0x3c, 0xc7, 0xec, 0x9a, 0xed, 0xcc, 0x9a, 0x04, 0x49, 0x6b, 0x10, 0x57, 0xee, 0xd1,
		0xa1, 0x84, 0x73, 0xc9, 0x5a, 0x07, 0x17, 0x9e, 0x50, 0xff, 0xb5, 0x89, 0x21, 0xb4, 0x93, 0x71,
		0x7b, 0x64, 0xae, 0x55, 0x0c, 0xcf, 0xba, 0x1b, 0x6b, 0x16, 0xe3, 0x85, 0xe0, 0x92, 0x92, 0x59,
		0xb9, 0x6e, 0xae, 0x00, 0x37, 0x17, 0x95, 0x9b, 0x0b, 0xac, 0xc1, 0xb6, 0xba, 0xc7, 0xd6, 0x79,
		0xf3, 0x39, 0xfd, 0x39, 0x37, 0x3e, 0x4a, 0x3c, 0x17, 0xc7, 0xaf, 0x5f, 0x1c, 0xad, 0xfb, 0x58,
		0xfa, 0x73, 0x71, 0x7c, 0xb4, 0xe1, 0x9d, 0xc2, 0xf8, 0xe8, 0x8d, 0xdf, 0x91, 0x1f, 0x1f, 0xac,
		0x7c, 0x74, 0xf2, 0x7a, 0x66, 0xd3, 0x01, 0xb9, 0x0d, 0x07, 0x64, 0x37, 0x1d, 0x90, 0xdd, 0x70,
		0xc0, 0x46, 0x91, 0x32, 0x1b, 0x0e, 0xc8, 0x8f, 0x47, 0x2b, 0x9f, 0x3f, 0x58, 0xff, 0xd1, 0xc2,
		0x38, 0x31, 0xda, 0xf4, 0x5e, 0x71, 0x3c, 0x3a, 0x4a, 0x24, 0xe0, 0xf8, 0xb7, 0x76, 0xfc, 0x50,
		0x5b, 0xf9, 0x6a, 0xab, 0x7f, 0x20, 0x04, 0x87, 0x16, 0x03, 0x87, 0xe6, 0x7a, 0xbc, 0x17, 0x63,
		0xd5, 0x63, 0xc1, 0xda, 0x4c, 0xcf, 0x03, 0xfe, 0x0c, 0xfc, 0x19, 0xf8, 0x33, 0xf0, 0x67, 0x1a,
		0xf2, 0x67, 0x77, 0xbd, 0x81, 0x35, 0xf5, 0x62, 0x56, 0xb0, 0xcb, 0xa7, 0x98, 0x9c, 0x59, 0x02,
		0x93, 0x96, 0x8b, 0xf1, 0x1c, 0x65, 0x67, 0xf8, 0x10, 0xbf, 0x8d, 0x36, 0xdc, 0xba, 0xf0, 0xb8,
		0xd3, 0x93, 0x52, 0x30, 0x35, 0x53, 0x93, 0x9b, 0x55, 0x91, 0x33, 0xd6, 0x3b, 0x3d, 0x39, 0x57,
		0x59, 0xce, 0xb9, 0x32, 0xc1, 0xef, 0xba, 0x3c, 0xbd, 0xba, 0xa8, 0x55, 0xcb, 0x8d, 0xb2, 0xa9,
		0x33, 0xeb, 0x60, 0x36, 0xdc, 0x8a, 0x23, 0xe4, 0xe8, 0xc3, 0xe4, 0xf6, 0x44, 0xbe, 0xef, 0xde,
		0xda, 0x33, 0x55, 0x82, 0x33, 0xa5, 0x64, 0x9c, 0x69, 0xa1, 0x06, 0x47, 0x46, 0x46, 0x53, 0xd8,
		0x3d, 0xde, 0x7b, 0xd8, 0x6d, 0x0b, 0xd7, 0xb3, 0x78, 0x47, 0x16, 0xfa, 0x9e, 0x9f, 0x0e, 0x20,
		0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x5c, 0x43, 0x10, 0x8e, 0x71, 0xad, 0x1f, 0x38, 0x11, 0xc6,
		0xb5, 0xfe, 0xf2, 0x36, 0x60, 0x5c, 0xeb, 0xfb, 0xef, 0x07, 0x86, 0x66, 0x6e, 0x38, 0x17, 0x86,
		0x66, 0x62, 0x68, 0x26, 0x86, 0x66, 0x62, 0x68, 0xa6, 0x81, 0x8a, 0x15, 0xf9, 0x8d, 0xde, 0x8f,
		0x1d, 0xc7, 0x15, 0xf6, 0x44, 0x37, 0xe3, 0xd9, 0xef, 0xdd, 0x6f, 0xdf, 0xb3, 0x07, 0x7b, 0x60,
		0x8b, 0xfb, 0x89, 0x79, 0x24, 0xdd, 0x01, 0x73, 0xda, 0x41, 0x12, 0x6b, 0x39, 0x4c, 0xfc, 0x70,
		0xbd, 0x7f, 0x2d, 0x3e, 0x89, 0x49, 0x4e, 0x9b, 0x25, 0x5f, 0xbf, 0xe0, 0xaf, 0xbc, 0x92, 0x1c,
		0x78, 0xae, 0x70, 0xdb, 0x6e, 0xdf, 0x0f, 0x9f, 0x25, 0xef, 0x7a, 0x83, 0xa4, 0xc7, 0xef, 0x92,
		0x01, 0x1f, 0xed, 0x33, 0xe1, 0x87, 0xcf, 0x92, 0xbe, 0xb0, 0x05, 0x8b, 0xd6, 0x80, 0xa2, 0xbb,
		0x99, 0x11, 0xde, 0x48, 0x53, 0x0c, 0x1d, 0x87, 0xf5, 0x2d, 0xe6, 0xb4, 0xed, 0x81, 0x3f, 0xec,
		0xc7, 0x73, 0x3b, 0xc3, 0x48, 0xb8, 0xf6, 0x6c, 0x11, 0xab, 0xe5, 0x3c, 0xf7, 0x88, 0xf8, 0x6b,
		0x43, 0xfe, 0x24, 0x13, 0xf1, 0x17, 0xc7, 0xc8, 0x9b, 0xc8, 0xe1, 0x4b, 0xe2, 0x86, 0x0a, 0xd2,
		0xf8, 0x11, 0x69, 0x38, 0x40, 0x1a, 0x1f, 0x42, 0x3b, 0x80, 0x9c, 0xf1, 0x78, 0xb6, 0x80, 0x98,
		0xb9, 0x19, 0x3f, 0x7e, 0x62, 0x78, 0x7e, 0xa2, 0x78, 0x29, 0xe1, 0x34, 0x28, 0x61, 0xc5, 0x2e,
		0x4e, 0x76, 0x56, 0x04, 0x4a, 0x58, 0x93, 0x6c, 0x22, 0x2e, 0xce, 0x25, 0x2e, 0xd7, 0xf8, 0xca,
		0x45, 0xc6, 0xaf, 0xc8, 0x2f, 0x3d, 0x65, 0xdc, 0x5a, 0x1c, 0xaf, 0xc3, 0x94, 0xe6, 0x38, 0x65,
		0x3a, 0x50, 0x35, 0x8e, 0x94, 0x02, 0xcd, 0x24, 0xc5, 0xb1, 0xd2, 0xe2, 0x98, 0x64, 0x38, 0x5a,
		0x49, 0xe4, 0x50, 0xcc, 0x96, 0x17, 0xb7, 0x03, 0x5e, 0xb0, 0x1c, 0x22, 0xce, 0x1d, 0xd1, 0x37,
		0x5a, 0xf9, 0xf4, 0xb4, 0x92, 0x54, 0x50, 0x8e, 0x5b, 0x8e, 0x3d, 0x55, 0xa7, 0xe0, 0xa6, 0xd5,
		0xba, 0x6b, 0x55, 0x6e, 0x5b, 0xb9, 0xfb, 0x56, 0xee, 0xc6, 0x95, 0xbb, 0x73, 0x39, 0x6e, 0x5d,
		0x92, 0x7b, 0x97, 0xee, 0xe6, 0x17, 0xb8, 0x3b, 0xee, 0x5e, 0x8f, 0x5f, 0xa3, 0xf0, 0x78, 0x9b,
		0xae, 0x7f, 0xe5, 0xfc, 0x53, 0x92, 0x4f, 0x2b, 0x0b, 0xa3, 0x53, 0x08, 0x06, 0x34, 0x82, 0x82,
		0xea, 0xe0, 0x40, 0x26, 0x48, 0x90, 0x09, 0x16, 0x64, 0x82, 0x86, 0xdc, 0xe0, 0x21, 0x39, 0x88,
		0x84, 0x57, 0xb9, 0xa1, 0xc2, 0xb7, 0xbf, 0xb0, 0x7b, 0xde, 0x61, 0x8e, 0xe0, 0xe2, 0x29, 0xbe,
		0x7d, 0x43, 0xde, 0x84, 0xf3, 0xf3, 0x0a, 0xce, 0x5d, 0x99, 0xfd, 0xf4, 0x13, 0xdb, 0x57, 0xe8,
		0x7a, 0xe6, 0x37, 0xa2, 0xf1, 0xed, 0xf2, 0xb2, 0x5c, 0x6d, 0x95, 0x2f, 0x4f, 0x8f, 0x6b, 0xf5,
		0x6f, 0xd5, 0xe3, 0x46, 0xe5, 0xea, 0xb2, 0xd5, 0xf8, 0xbb, 0x56, 0x56, 0xe5, 0x8a, 0x82, 0x19,
		0x88, 0xbe, 0xb4, 0xa5, 0xea, 0xeb, 0x1e, 0xcf, 0xca, 0xce, 0xfc, 0xe2, 0xd6, 0xd4, 0xaf, 0x1b,
		0xe5, 0x56, 0xed, 0xaa, 0x5a, 0x39, 0xfd, 0xbb, 0x35, 0xbd, 0x4d, 0xa6, 0x32, 0xc1, 0xc6, 0x4a,
		0xce, 0xdc, 0xdc, 0x75, 0xbf, 0x8f, 0x64, 0xe8, 0x63, 0x28, 0x21, 0xde, 0x86, 0x9e, 0x8d, 0xe7,
		0x55, 0xd9, 0xe8, 0xb3, 0xae, 0x23, 0x65, 0xf6, 0xa2, 0x3f, 0xfb, 0x37, 0x8e, 0x66, 0x20, 0x75,
		0x0a, 0x25, 0x63, 0xba, 0xaf, 0x3f, 0xbc, 0x13, 0xfd, 0x47, 0x5f, 0x01, 0xab, 0x39, 0x3b, 0xf1,
		0x8e, 0xf3, 0x9a, 0x29, 0xf0, 0x9a, 0xbb, 0x95, 0xba, 0x82, 0xd7, 0x04, 0xaf, 0x19, 0xe9, 0xd5,
		0x94, 0xce, 0x6b, 0x4e, 0x3d, 0xaf, 0x3a, 0x66, 0x73, 0x76, 0x7e, 0x35, 0xdc, 0x66, 0x1a, 0xdc,
		0xe6, 0x8e, 0x07, 0x06, 0xd5, 0x01, 0x82, 0x4c, 0xa0, 0x20, 0x13, 0x30, 0xc8, 0x04, 0x0e, 0x45,
		0x39, 0xae, 0x64, 0xcb, 0x97, 0x1d, 0x50, 0xc2, 0x13, 0x7b, 0xec, 0xc1, 0x15, 0xcc, 0x62, 0x4e,
		0x67, 0xe0, 0x72, 0x47, 0xf8, 0xea, 0xb9, 0xbd, 0x15, 0x89, 0x14, 0x29, 0xbe, 0x9a, 0xe0, 0xa3,
		0x3c, 0x08, 0x51, 0x08, 0x46, 0xb4, 0x82, 0x12, 0x95, 0xe0, 0x44, 0x2e, 0x48, 0x91, 0x0b, 0x56,
		0xe4, 0x82, 0x96, 0x9a, 0xe0, 0xa5, 0x28, 0x88, 0x29, 0x0f, 0x66, 0x9b, 0x82, 0x9a, 0x7a, 0x8b,
		0xdd, 0x10, 0xdb, 0x54, 0xdb, 0xad, 0xda, 0x10, 0x47, 0x26, 0xd4, 0x51, 0x0a, 0x79, 0x34, 0x43,
		0x1f, 0xb5, 0x10, 0x48, 0x36, 0x14, 0x92, 0x0d, 0x89, 0x64, 0x43, 0xa3, 0xda, 0x10, 0xa9, 0x38,
		0x54, 0x92, 0x09, 0x99, 0xa1, 0x20, 0x64, 0x62, 0xe6, 0x8a, 0x23, 0x24, 0x12, 0x34, 0x5f, 0x07,
		0xcf, 0x14, 0x11, 0x71, 0xa8, 0x04, 0x51, 0x8a, 0xc1, 0x94, 0x76, 0x50, 0xa5, 0x1a, 0x5c, 0xc9,
		0x07, 0x59, 0xf2, 0xc1, 0x96, 0x7c, 0xd0, 0xa5, 0x11, 0x7c, 0x89, 0x04, 0xe1, 0xf0, 0x6e, 0x29,
		0x6b, 0x34, 0xfd, 0xad, 0xdf, 0xea, 0x33, 0xbb, 0xab, 0xa6, 0xf9, 0xf4, 0xb7, 0x39, 0x64, 0x91,
		0x90, 0x4c, 0xb5, 0x59, 0xaf, 0xd3, 0x97, 0x2f, 0xd3, 0xe6, 0xa2, 0x64, 0x88, 0x1d, 0x3e, 0xc1,
		0xda, 0x88, 0x58, 0x9a, 0xe4, 0x95, 0x99, 0x6f, 0x36, 0x31, 0x99, 0x2b, 0x37, 0x35, 0x21, 0x68,
		0x56, 0x31, 0x66, 0x06, 0x18, 0x13, 0x18, 0x13, 0x18, 0x13, 0x18, 0x13, 0x18, 0x53, 0x73, 0xc2,
		0x27, 0x14, 0xc8, 0xf6, 0xe9, 0x39, 0x85, 0xb9, 0x2b, 0xb5, 0x7d, 0x6a, 0xde, 0x80, 0x16, 0xf9,
		0xb3, 0x1a, 0xa0, 0xa9, 0x09, 0x46, 0x30, 0x50, 0xeb, 0x11, 0xb0, 0xa9, 0x07, 0x6e, 0x6d, 0x02,
		0xb8, 0x36, 0x81, 0x5c, 0x9b, 0x80, 0x4e, 0x2b, 0xb0, 0x13, 0x0b, 0xf0, 0xe1, 0x5d, 0x24, 0x47,
		0x26, 0xad, 0x89, 0xae, 0x96, 0x33, 0x7c, 0xb8, 0x63, 0x1e, 0x45, 0xb7, 0x37, 0x0b, 0xb4, 0x45,
		0x82, 0xa2, 0x5d, 0xdb, 0x4e, 0x8f, 0x29, 0x5d, 0xf2, 0xfb, 0xab, 0x07, 0xcd, 0x30, 0x11, 0x5c,
		0xb8, 0x0b, 0xee, 0x90, 0x8d, 0x63, 0xa1, 0x90, 0xc1, 0x8a, 0x6e, 0x7a, 0x48, 0x6a, 0x45, 0xce,
		0x73, 0xcf, 0x0e, 0x36, 0x30, 0x38, 0xe3, 0x3d, 0x1e, 0xb4, 0xef, 0x52, 0x17, 0xf8, 0x92, 0xf5,
		0x82, 0x1d, 0x16, 0xcc, 0x23, 0xa3, 0x6b, 0xf7, 0x7d, 0x46, 0x56, 0xda, 0xf1, 0x67, 0xc2, 0x26,
		0x64, 0xff, 0xd4, 0xc7, 0x84, 0x72, 0x99, 0x52, 0xae, 0x54, 0x28, 0x66, 0x4a, 0x79, 0xd8, 0xd2,
		0xbe, 0xda, 0xd2, 0x27, 0x48, 0xf5, 0x96, 0x47, 0xf3, 0x13, 0xae, 0x0f, 0x71, 0x5f, 0x4c, 0xaf,
		0x45, 0x6a, 0x05, 0xd1, 0x13, 0x6b, 0x95, 0x7a, 0x0d, 0xe6, 0xc1, 0x9a, 0xbd, 0x51, 0x30, 0xb0,
		0x66, 0xdb, 0x4a, 0x09, 0xd6, 0x2c, 0x22, 0x41, 0xc1, 0x9a, 0xed, 0x34, 0xf6, 0x00, 0x6b, 0xf6,
		0x5e, 0xbf, 0xc7, 0x07, 0x12, 0x76, 0xfa, 0xdd, 0x36, 0xd2, 0xa6, 0x4b, 0x04, 0x65, 0x9b, 0xdd,
		0x5b, 0xd0, 0x66, 0x1f, 0xd6, 0x3c, 0x29, 0xbb, 0x4c, 0x47, 0xa6, 0x83, 0x87, 0x84, 0x65, 0x94,
		0xb5, 0xb3, 0xf2, 0xd6, 0x82, 0xea, 0xbf, 0x4b, 0xf6, 0xd6, 0xa9, 0x31, 0x65, 0x35, 0x92, 0xb9,
		0x4b, 0xf7, 0xd6, 0xd2, 0xee, 0xc6, 0x2e, 0xdf, 0xbb, 0x45, 0xb5, 0x10, 0x05, 0x62, 0x7a, 0x85,
		0xc5, 0x02, 0xc2, 0xe2, 0xbe, 0x85, 0xc5, 0xc0, 0x2b, 0xd9, 0x56, 0xf7, 0xd8, 0x3a, 0x6f, 0x3e,
		0xa7, 0x3f, 0xe7, 0xc6, 0x47, 0x89, 0xe7, 0xe2, 0xf8, 0xf5, 0x8b, 0xa3, 0x75, 0x1f, 0x4b, 0x7f,
		0x2e, 0x8e, 0x8f, 0x36, 0xbc, 0x53, 0x18, 0x1f, 0xbd, 0xf1, 0x3b, 0xf2, 0xe3, 0x83, 0x95, 0x8f,
		0x4e, 0x5e, 0xcf, 0x6c, 0x3a, 0x20, 0xb7, 0xe1, 0x80, 0xec, 0xa6, 0x03, 0xb2, 0x1b, 0x0e, 0xd8,
		0x28, 0x52, 0x66, 0xc3, 0x01, 0xf9, 0xf1, 0x68, 0xe5, 0xf3, 0x07, 0xeb, 0x3f, 0x5a, 0x18, 0x27,
		0x46, 0x9b, 0xde, 0x2b, 0x8e, 0x47, 0x47, 0x89, 0x04, 0x80, 0xc2, 0xde, 0x00, 0x05, 0x98, 0x97,
		0x7c, 0xf3, 0x02, 0x70, 0xd2, 0x9a, 0x4f, 0x33, 0x50, 0xcb, 0x23, 0x2e, 0x09, 0x95, 0x85, 0x00,
		0x8a, 0xa6, 0xc2, 0xff, 0x56, 0x2e, 0xf2, 0x53, 0xe3, 0xa7, 0xb3, 0xc8, 0x67, 0xff, 0x26, 0x5f,
		0x4f, 0x0d, 0x7c, 0xfd, 0x82, 0xcc, 0x29, 0xf3, 0xf4, 0x0d, 0x60, 0xbf, 0x87, 0xad, 0xfc, 0x97,
		0x3d, 0x11, 0xaa, 0x92, 0x9b, 0x55, 0xee, 0x8b, 0x63, 0x21, 0x88, 0x0c, 0x80, 0xb9, 0xe0, 0x4e,
		0xb9, 0xcf, 0x1e, 0x98, 0x43, 0xa5, 0x01, 0xca, 0xbc, 0xb0, 0x7f, 0x2e, 0x49, 0x94, 0x3e, 0xcc,
		0xe5, 0x0a, 0xc5, 0x5c, 0x2e, 0x55, 0xcc, 0x16, 0x53, 0xa5, 0x7c, 0x3e, 0x5d, 0x48, 0x13, 0x68,
		0x2b, 0x33, 0xaf, 0xbc, 0x0e, 0xf3, 0x58, 0xe7, 0x64, 0xa2, 0x59, 0xce, 0xb0, 0xdf, 0xa7, 0x24,
		0xd2, 0x37, 0x9f, 0x79, 0x24, 0x3a, 0xc4, 0x54, 0x1b, 0x3e, 0xb1, 0x58, 0xbb, 0x6b, 0x31, 0xd6,
		0x24, 0x31, 0x55, 0xc0, 0x1b, 0xb6, 0x85, 0x33, 0xe3, 0x04, 0x2f, 0xa7, 0xd7, 0xa8, 0x32, 0xbb,
		0x44, 0xad, 0xda, 0xec, 0xc2, 0xb4, 0x4e, 0x7a, 0x83, 0xd6, 0x35, 0xbf, 0x6b, 0x4d, 0xfc, 0x6e,
		0x9d, 0x89, 0x56, 0x23, 0xf8, 0xc1, 0xe5, 0xe5, 0x8b, 0x31, 0x7b, 0xad, 0x55, 0x0f, 0x7e, 0x7c,
		0xeb, 0x3a, 0xf8, 0xad, 0x65, 0x12, 0x83, 0x24, 0xc6, 0x18, 0x64, 0x2a, 0x45, 0x99, 0xd8, 0x4f,
		0xe1, 0xd9, 0xd6, 0x70, 0xa2, 0x3d, 0x77, 0x7d, 0xb5, 0xfd, 0x08, 0xe6, 0x8f, 0x7b, 0xa6, 0x9e,
		0x31, 0x22, 0x34, 0x17, 0x33, 0x9c, 0xed, 0x22, 0x9e, 0x06, 0xcc, 0xf8, 0x8f, 0xf1, 0xa7, 0xdb,
		0xb6, 0xee, 0x7a, 0x03, 0x4f, 0x1c, 0xcd, 0x36, 0x07, 0xbc, 0x2e, 0x5f, 0x5c, 0x35, 0xca, 0xad,
		0xf2, 0xe5, 0x59, 0xed, 0xaa, 0x72, 0xd9, 0xf8, 0x13, 0xe3, 0x33, 0xd7, 0x22, 0xe1, 0x79, 0xfb,
		0x59, 0xa0, 0x5f, 0x18, 0x9e, 0xf9, 0x1b, 0x00, 0xb1, 0xd4, 0x5c, 0xf6, 0x7e, 0x05, 0xc4, 0xd8,
		0x1f, 0xc3, 0x30, 0xcf, 0x98, 0xdf, 0xf6, 0xf8, 0x80, 0x14, 0xe1, 0x11, 0x3a, 0x95, 0x2b, 0xa7,
		0xff, 0x64, 0xd8, 0xfd, 0xbe, 0xfb, 0xc3, 0x10, 0xf7, 0xcc, 0x98, 0xe2, 0x1b, 0x63, 0x8e, 0x6f,
		0x0c, 0xe1, 0x1a, 0x77, 0xcc, 0xf0, 0x07, 0xac, 0xcd, 0xbb, 0x9c, 0x75, 0x8c, 0x89, 0xcd, 0x4c,
		0x3e, 0xf8, 0xdd, 0xf1, 0x87, 0x77, 0x8d, 0xea, 0x8d, 0xc1, 0xfd, 0xa5, 0x77, 0x85, 0x6b, 0x74,
		0x82, 0x1f, 0x7b, 0xb7, 0xf2, 0x4d, 0xfe, 0x17, 0x2a, 0xa6, 0x46, 0xb0, 0x41, 0x76, 0xd9, 0x2b,
		0x75, 0x96, 0xb4, 0x85, 0xd0, 0x12, 0x00, 0xca, 0xdd, 0xb0, 0x2f, 0x9c, 0x94, 0x44, 0x85, 0x06,
		0xb5, 0x46, 0x81, 0x5a, 0x53, 0x76, 0xf6, 0xe6, 0x5e, 0x65, 0x06, 0x44, 0x98, 0x04, 0xdd, 0x19,
		0x04, 0x35, 0x4e, 0x43, 0xbe, 0x91, 0x28, 0x50, 0x53, 0xd3, 0x67, 0xbd, 0x49, 0x14, 0xb0, 0xfa,
		0xdc, 0xa7, 0xb0, 0xad, 0xd3, 0x4b, 0x71, 0xb0, 0xa7, 0x93, 0x12, 0x01, 0xb0, 0xa7, 0x13, 0x51,
		0xfc, 0x8b, 0x3d, 0x9d, 0xde, 0x05, 0x6b, 0xb1, 0xa7, 0x93, 0xf4, 0xb4, 0x5d, 0xf5, 0x9e, 0x4e,
		0xcb, 0xf1, 0x83, 0xce, 0x86, 0x4e, 0x2f, 0xa4, 0xc2, 0x6e, 0x4e, 0xd8, 0xcd, 0x49, 0x87, 0xa0,
		0x47, 0x95, 0xfc, 0xc1, 0x6e, 0x4e, 0xda, 0x07, 0x45, 0x22, 0x2c, 0x08, 0x76, 0x73, 0x9a, 0x0a,
		0x32, 0xcf, 0xec, 0x2d, 0xde, 0xa1, 0x47, 0xb6, 0x2f, 0x0b, 0x87, 0x3d, 0x9d, 0x28, 0x87, 0x52,
		0x8a, 0x21, 0x95, 0x76, 0x68, 0xa5, 0x1a, 0x62, 0xc9, 0x87, 0x5a, 0xf2, 0x21, 0x97, 0x7c, 0xe8,
		0xa5, 0x11, 0x82, 0x89, 0x84, 0xe2, 0xf0, 0x6e, 0x61, 0x4f, 0xa7, 0x0f, 0x64, 0x92, 0xa4, 0xf7,
		0x74, 0x5a, 0x86, 0x0f, 0xa8, 0x3d, 0x52, 0x31, 0xb6, 0x39, 0x23, 0xe2, 0x13, 0xdc, 0xd9, 0x69,
		0x2e, 0x19, 0x36, 0x77, 0x02, 0xd8, 0x04, 0xd8, 0x04, 0xd8, 0x04, 0xd8, 0x04, 0xd8, 0xdc, 0x69,
		0xfe, 0xe7, 0x75, 0x50, 0xa6, 0x3b, 0xb1, 0x76, 0x2e, 0x20, 0xcd, 0x81, 0xb5, 0x69, 0x0c, 0xac,
		0xd5, 0x36, 0x64, 0xeb, 0x11, 0xba, 0xa9, 0x87, 0x70, 0x6d, 0x42, 0xb9, 0x36, 0x21, 0x5d, 0x9b,
		0xd0, 0x4e, 0x2b, 0xc4, 0x13, 0x0b, 0xf5, 0x64, 0x43, 0x7e, 0x28, 0x18, 0x77, 0x3a, 0x8c, 0xee,
		0x5e, 0x21, 0x4b, 0xc5, 0xa0, 0x89, 0x98, 0x44, 0x4d, 0x94, 0xe6, 0xdc, 0x7a, 0xf2, 0x70, 0x40,
		0x07, 0x58, 0xa0, 0x17, 0x3c, 0xd0, 0x05, 0x26, 0x68, 0x07, 0x17, 0xb4, 0x83, 0x0d, 0xda, 0xc1,
		0x07, 0x9a, 0x30, 0x82, 0x28, 0x9c, 0x08, 0xef, 0x2e, 0xd9, 0x39, 0xf8, 0x2b, 0x7e, 0x93, 0x5e,
		0x19, 0x6b, 0x63, 0x36, 0x5f, 0xa4, 0x3d, 0x79, 0xf5, 0x75, 0x99, 0x6b, 0x02, 0x8c, 0x30, 0x72,
		0x4f, 0x57, 0x33, 0x36, 0xa7, 0x83, 0xc7, 0xc8, 0x03, 0xf0, 0xa9, 0x98, 0xb4, 0x01, 0x78, 0x9a,
		0x3a, 0x00, 0xcf, 0x00, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0xef, 0x08, 0x00,
		0xa7, 0xca, 0xeb, 0x85, 0x02, 0xd2, 0xe6, 0xf7, 0x56, 0xbc, 0x3b, 0x65, 0x9e, 0xef, 0x35, 0xdc,
		0xa0, 0xbe, 0xfb, 0x2f, 0x75, 0xde, 0x4f, 0x27, 0xf8, 0xa1, 0x27, 0x0c, 0xd1, 0x0d, 0x8e, 0x68,
		0x0b, 0x4b, 0xb4, 0x85, 0x27, 0xda, 0xc2, 0x14, 0xda, 0x70, 0x85, 0x38, 0x6c, 0x09, 0xef, 0x3a,
		0x79, 0xfe, 0x70, 0xc5, 0xef, 0x0e, 0xb9, 0x23, 0x0a, 0x39, 0x1d, 0x7c, 0xee, 0x0c, 0x25, 0x1c,
		0x6a, 0x20, 0xea, 0xb5, 0xed, 0xf4, 0x18, 0xf9, 0xfd, 0x66, 0xe6, 0x0f, 0x3d, 0x62, 0x98, 0x31,
		0x9b, 0x96, 0xae, 0x4d, 0xd0, 0x0d, 0x85, 0xbe, 0xb1, 0xfb, 0x43, 0x46, 0x1f, 0x36, 0xae, 0xc8,
		0x7d, 0xee, 0xd9, 0x6d, 0xc1, 0x5d, 0xe7, 0x8c, 0xf7, 0x38, 0x95, 0xe9, 0xf4, 0xef, 0xf3, 0x71,
		0xac, 0x67, 0x0b, 0xfe, 0xc8, 0x48, 0x0c, 0x63, 0xdf, 0xa1, 0x30, 0xf7, 0xd2, 0x24, 0xed, 0x9f,
		0xfa, 0x9a, 0x24, 0xcd, 0xdd, 0x0d, 0x60, 0xa5, 0x7a, 0x58, 0xe9, 0x27, 0x48, 0x19, 0xc5, 0xa3,
		0xf9, 0x09, 0xd7, 0x6f, 0xc7, 0xa2, 0x84, 0xd9, 0x77, 0xdb, 0x76, 0xdf, 0xe2, 0x8e, 0x60, 0x5e,
		0xd7, 0xa6, 0x35, 0x10, 0xe3, 0xb7, 0x29, 0xd1, 0x1a, 0xd9, 0x41, 0xa0, 0x46, 0x21, 0x26, 0x08,
		0xd4, 0x18, 0xb5, 0x16, 0x04, 0x6a, 0xac, 0x16, 0x06, 0x02, 0x55, 0xb2, 0xe0, 0x20, 0x50, 0xf7,
		0x30, 0xb3, 0xd4, 0x94, 0x40, 0xcd, 0x66, 0x34, 0x22, 0x50, 0x8b, 0x20, 0x50, 0x23, 0x7e, 0x80,
		0x40, 0x8d, 0x57, 0x68, 0x10, 0xa8, 0xaa, 0x7c, 0x1c, 0x08, 0x54, 0x09, 0x26, 0xa9, 0x33, 0x81,
		0x9a, 0xcb, 0x94, 0x72, 0xa5, 0x42, 0x31, 0x53, 0x02, 0x6d, 0x0a, 0xdb, 0xdc, 0x05, 0x80, 0xac,
		0x8f, 0x94, 0x4d, 0x24, 0x1a, 0x5b, 0x98, 0x0f, 0xa1, 0xbd, 0x46, 0xdf, 0x2c, 0xb3, 0xc7, 0xba,
		0xcc, 0x63, 0x4e, 0x1b, 0xc8, 0x38, 0xc6, 0x7c, 0xae, 0xe3, 0xd9, 0x5d, 0x61, 0x71, 0x26, 0xba,
		0xd6, 0xa0, 0xcd, 0xac, 0xf9, 0x8e, 0x03, 0x9e, 0x3b, 0x14, 0xdc, 0xe9, 0x99, 0x1a, 0x01, 0x0b,
		0xcd, 0x38, 0xb6, 0x45, 0x9e, 0xba, 0xe0, 0xda, 0x16, 0x1a, 0xaf, 0x59, 0x74, 0xd6, 0x95, 0x76,
		0x0b, 0x7f, 0xc0, 0x32, 0xfd, 0xf6, 0x1b, 0x93, 0x00, 0xf2, 0xd8, 0x37, 0xe4, 0xa1, 0x01, 0x83,
		0x44, 0x62, 0xff, 0xee, 0x1d, 0x0e, 0x93, 0x5f, 0xbe, 0x84, 0x1b, 0x31, 0x57, 0x6a, 0x37, 0xb9,
		0x56, 0xf5, 0xea, 0xf4, 0xb8, 0xda, 0xaa, 0x5c, 0x36, 0xce, 0x5b, 0x95, 0xb3, 0x3f, 0x0d, 0xd7,
		0x33, 0x66, 0x9f, 0xf8, 0xcf, 0xe4, 0xfd, 0xc2, 0xab, 0xf7, 0x11, 0x46, 0xa5, 0x86, 0x51, 0x42,
		0x9b, 0x8d, 0xef, 0x67, 0x04, 0xdd, 0xd2, 0x5a, 0xc0, 0xbb, 0xc5, 0x70, 0x7f, 0x28, 0xee, 0x8c,
		0xfe, 0x6e, 0x37, 0x7c, 0x6c, 0x04, 0xdd, 0x2a, 0x46, 0xd8, 0xad, 0x62, 0xf0, 0x0e, 0x73, 0x04,
		0xef, 0x72, 0xe6, 0x19, 0x6d, 0xdb, 0x31, 0x5c, 0xa7, 0xff, 0xb4, 0x69, 0xd3, 0xe9, 0x40, 0x25,
		0xdd, 0x6e, 0xb0, 0x55, 0xf5, 0x0c, 0xd4, 0x19, 0xdc, 0x37, 0x6c, 0xc7, 0xa8, 0xd4, 0x1e, 0x73,
		0x86, 0xdd, 0xe9, 0x78, 0xcc, 0xf7, 0x8d, 0x1f, 0x5c, 0xdc, 0xaf, 0x9c, 0xa6, 0x72, 0xf6, 0xf9,
		0xbb, 0xe3, 0x7a, 0x93, 0x4f, 0x16, 0x7e, 0xf7, 0xc9, 0x2f, 0xba, 0xf9, 0x1e, 0x4d, 0x5d, 0xbe,
		0xa1, 0xc5, 0x6e, 0xee, 0x7b, 0x13, 0x01, 0x56, 0xa2, 0x80, 0x26, 0xc6, 0xaa, 0xd5, 0x45, 0x1e,
		0x23, 0xfb, 0xdc, 0xb7, 0xec, 0x13, 0xed, 0xc2, 0xbb, 0x86, 0xcd, 0xe6, 0x2d, 0xb7, 0x83, 0xc7,
		0x9c, 0x35, 0x73, 0x4f, 0xda, 0xb5, 0x0b, 0x2f, 0xcb, 0x8e, 0x76, 0xe1, 0x28, 0xc4, 0x44, 0xbb,
		0x70, 0x8c, 0x5a, 0x8b, 0x76, 0x61, 0x49, 0x20, 0x1c, 0xed, 0xc2, 0xd2, 0x71, 0x36, 0xda, 0x85,
		0xf7, 0x84, 0xcf, 0xd1, 0xb0, 0x5d, 0x58, 0x23, 0x9c, 0xb0, 0x8c, 0x15, 0xd2, 0x3a, 0x8c, 0x5d,
		0xa8, 0xd9, 0x42, 0x30, 0x4f, 0x9f, 0xb2, 0x8f, 0x79, 0x70, 0x9b, 0xb2, 0x4a, 0xcd, 0xd1, 0x6d,
		0xda, 0x2a, 0x35, 0xa7, 0x4f, 0xd3, 0xc1, 0x3f, 0xcf, 0x99, 0xf1, 0x28, 0x73, 0x9b, 0xb2, 0x72,
		0xb3, 0x57, 0x33, 0xf9, 0xdb, 0x94, 0x95, 0x6f, 0x26, 0x0e, 0xbe, 0x7f, 0xff, 0xf2, 0xde, 0x63,
		0x12, 0xcf, 0xd9, 0xb1, 0x89, 0x92, 0x62, 0x14, 0xea, 0x75, 0x55, 0xaf, 0xfc, 0xa5, 0x9d, 0x8e,
		0xfd, 0x73, 0x20, 0x4b, 0xcb, 0x12, 0x7f, 0x98, 0x20, 0x0f, 0x76, 0x3a, 0xdc, 0xea, 0xd8, 0x34,
		0x87, 0x46, 0x80, 0x78, 0x01, 0xcd, 0xfa, 0xd2, 0xe6, 0x75, 0xf9, 0xe2, 0xaa, 0x51, 0x6e, 0x1d,
		0x9f, 0x9d, 0x5d, 0xa3, 0xd8, 0x2f, 0x37, 0xe1, 0x44, 0xb1, 0x5f, 0x71, 0xfa, 0xf9, 0x06, 0x8b,
		0x40, 0x41, 0x3f, 0x86, 0x7b, 0xb0, 0x53, 0x05, 0xfd, 0x17, 0x45, 0xbd, 0x5f, 0xd7, 0x06, 0x97,
		0xca, 0x81, 0xdf, 0x9d, 0xc5, 0xdb, 0x77, 0x4f, 0xc1, 0x9b, 0xd3, 0xaf, 0xb3, 0x9d, 0x8e, 0xe1,
		0xb1, 0x07, 0x57, 0xb0, 0xe9, 0x37, 0x2f, 0x2a, 0x7e, 0xb3, 0x73, 0x30, 0x1f, 0x55, 0x7a, 0x35,
		0xfe, 0x1a, 0x55, 0x7a, 0x5a, 0xee, 0x5b, 0xa5, 0x05, 0xa2, 0xf4, 0xbe, 0xc7, 0x92, 0xa2, 0xf4,
		0xbe, 0xab, 0xd7, 0x4f, 0x8b, 0xd2, 0x7b, 0x41, 0xe3, 0xd2, 0x7b, 0x01, 0xa5, 0xf7, 0x48, 0xc5,
		0x44, 0xe9, 0x3d, 0x46, 0xad, 0x45, 0xe9, 0x5d, 0x12, 0xb2, 0x46, 0xe9, 0x5d, 0x3a, 0x78, 0x46,
		0xe9, 0x7d, 0x4f, 0x98, 0x17, 0x3d, 0x4b, 0xef, 0x05, 0x94, 0xde, 0x63, 0x8a, 0xc3, 0xda, 0x95,
		0xde, 0x83, 0x0a, 0xa7, 0x6d, 0x75, 0x8f, 0xad, 0xf3, 0xe6, 0x73, 0xfa, 0x73, 0x6e, 0x7c, 0x94,
		0x78, 0x2e, 0x8e, 0x5f, 0xbf, 0x38, 0x5a, 0xf7, 0xb1, 0xf4, 0xe7, 0xe2, 0xf8, 0x68, 0xc3, 0x3b,
		0x85, 0xf1, 0xd1, 0x1b, 0xbf, 0x23, 0x3f, 0x3e, 0x58, 0xf9, 0xe8, 0xe4, 0xf5, 0xcc, 0xa6, 0x03,
		0x72, 0x1b, 0x0e, 0xc8, 0x6e, 0x3a, 0x20, 0xbb, 0xe1, 0x80, 0x8d, 0x22, 0x65, 0x36, 0x1c, 0x90,
		0x1f, 0x8f, 0x56, 0x3e, 0x7f, 0xb0, 0xfe, 0xa3, 0x85, 0x71, 0x62, 0xb4, 0xe9, 0xbd, 0xe2, 0x78,
		0x74, 0x94, 0x48, 0xa0, 0x19, 0x21, 0x12, 0x83, 0xd3, 0xb9, 0x19, 0x01, 0x66, 0x27, 0xdf, 0xec,
		0xd0, 0x9c, 0xb1, 0xe3, 0x80, 0x0c, 0xcd, 0x19, 0x31, 0x3f, 0xb4, 0x6f, 0xce, 0x28, 0xa0, 0x39,
		0x43, 0x35, 0x25, 0x81, 0xe6, 0x0c, 0xc5, 0x04, 0xc5, 0x1b, 0x2c, 0x02, 0xcd, 0x19, 0x31, 0xdc,
		0x83, 0x5d, 0x6b, 0xce, 0x28, 0x6c, 0x2e, 0x0d, 0xf3, 0xee, 0x9a, 0xd2, 0xf0, 0x77, 0x87, 0xfb,
		0xc6, 0x9b, 0x4a, 0xc3, 0x05, 0x34, 0x67, 0xd0, 0xf1, 0xd7, 0x68, 0xce, 0xa0, 0xe5, 0xbe, 0x55,
		0x5a, 0x20, 0x9a, 0x33, 0xf6, 0x58, 0x52, 0x34, 0x67, 0xec, 0xea, 0xf5, 0xa3, 0xdc, 0x9c, 0xf1,
		0x30, 0xe8, 0xfb, 0xd6, 0x9d, 0xab, 0x51, 0x4b, 0x46, 0x28, 0x31, 0x1a, 0x31, 0xa2, 0x10, 0x13,
		0x8d, 0x18, 0x31, 0xea, 0x2a, 0x1a, 0x31, 0x24, 0xa1, 0x68, 0x34, 0x62, 0x48, 0x07, 0xca, 0x68,
		0xc4, 0xd8, 0x13, 0x96, 0x45, 0xc3, 0x46, 0x8c, 0x3b, 0xd7, 0xed, 0x33, 0xdb, 0xd1, 0xa9, 0x07,
		0x23, 0x0d, 0x15, 0xdd, 0xe2, 0x2a, 0xa2, 0x34, 0x15, 0xf3, 0x43, 0xef, 0xd2, 0xd4, 0x45, 0xad,
		0x5a, 0x6f, 0xd5, 0x31, 0x16, 0x5c, 0x36, 0x2c, 0x43, 0x31, 0x4a, 0x31, 0x48, 0x5b, 0x6b, 0x03,
		0x28, 0x3f, 0xc5, 0x70, 0xd5, 0x77, 0xa2, 0xfc, 0xd4, 0xb8, 0x67, 0xc6, 0x44, 0x4f, 0x8c, 0x13,
		0xb7, 0x6e, 0xdc, 0x71, 0xf1, 0xc6, 0x55, 0x89, 0xb3, 0xd9, 0xc1, 0xd3, 0x61, 0xc1, 0xc1, 0xf1,
		0x7d, 0xfb, 0x8e, 0xf5, 0x51, 0x52, 0x52, 0xe3, 0x75, 0x51, 0x52, 0xa2, 0xe5, 0x84, 0xa3, 0xb6,
		0x2a, 0x94, 0x89, 0xf6, 0x58, 0x52, 0x94, 0x89, 0x76, 0xf5, 0xfa, 0x91, 0x2f, 0x13, 0x89, 0xb6,
		0x66, 0x55, 0x22, 0xd1, 0x46, 0x91, 0x28, 0x12, 0x31, 0x51, 0x24, 0x8a, 0x51, 0x55, 0x51, 0x24,
		0x92, 0x84, 0x8b, 0x51, 0x24, 0x92, 0x0e, 0x7d, 0x51, 0x24, 0xda, 0x13, 0x2e, 0x44, 0xc3, 0x22,
		0xd1, 0x90, 0x3b, 0xe2, 0x50, 0xa3, 0x12, 0x51, 0x5e, 0x03, 0x51, 0xaf, 0x6d, 0xa7, 0x87, 0xcd,
		0xc3, 0x63, 0xb8, 0xb0, 0x17, 0x5c, 0x43, 0x5a, 0xf1, 0xc6, 0xee, 0x0f, 0x19, 0x7d, 0xd4, 0xb8,
		0x22, 0xf7, 0xb9, 0x67, 0xb7, 0x05, 0x77, 0x9d, 0x33, 0xde, 0xe3, 0xc2, 0xd7, 0xf0, 0x07, 0x5c,
		0xb2, 0x9e, 0x2d, 0xf8, 0xe3, 0xe4, 0xda, 0x77, 0xed, 0xbe, 0xcf, 0xc0, 0xf8, 0xc7, 0x61, 0x92,
		0xf6, 0x4f, 0x7d, 0x4d, 0xb2, 0x08, 0x93, 0x84, 0x49, 0xee, 0x00, 0x2c, 0xd6, 0x47, 0x4a, 0xac,
		0x3d, 0xdf, 0xc6, 0x7c, 0xd0, 0xe0, 0x03, 0x2c, 0xfc, 0x3a, 0x81, 0x43, 0x83, 0x8f, 0xa2, 0x7c,
		0x14, 0x0d, 0x3e, 0x4a, 0x7f, 0x00, 0x1a, 0x7c, 0x54, 0x5c, 0xf5, 0xdd, 0x6a, 0xf0, 0x69, 0x9c,
		0x1a, 0x77, 0x5c, 0xf8, 0x6f, 0x6f, 0x45, 0xe0, 0x0f, 0x68, 0xf0, 0xa1, 0xe2, 0x75, 0xd1, 0xe0,
		0x43, 0xcb, 0x09, 0x47, 0x6d, 0x55, 0x68, 0xf0, 0x41, 0x26, 0x8b, 0x4c, 0x76, 0xe7, 0xae, 0x1f,
		0xfd, 0x06, 0x1f, 0xd1, 0xd7, 0xad, 0xc3, 0x47, 0xf4, 0xd1, 0xe2, 0x13, 0x89, 0x98, 0x68, 0xf1,
		0x89, 0x51, 0x57, 0xd1, 0xe2, 0x23, 0x09, 0x19, 0xa3, 0xc5, 0x47, 0x3a, 0xf8, 0x45, 0x8b, 0xcf,
		0x9e, 0xb0, 0x21, 0x68, 0xf1, 0x89, 0x1d, 0x24, 0xa0, 0xc5, 0x27, 0xea, 0x07, 0x5a, 0x7c, 0xe2,
		0x15, 0x1a, 0x2d, 0x3e, 0xaa, 0x5c, 0x1c, 0x5a, 0x7c, 0x24, 0x98, 0xa4, 0xce, 0x2d, 0x3e, 0x99,
		0x7c, 0x1e, 0x46, 0x09, 0xa3, 0xdc, 0x01, 0x60, 0xac, 0x8f, 0x94, 0x68, 0xf2, 0xd9, 0xc6, 0x7c,
		0xd0, 0xe4, 0x03, 0x34, 0xfc, 0x3a, 0x85, 0x43, 0x93, 0x8f, 0xa2, 0x8c, 0x14, 0x4d, 0x3e, 0x4a,
		0x7f, 0x00, 0x9a, 0x7c, 0x54, 0x5c, 0xf5, 0x1d, 0x6b, 0xf2, 0x69, 0x54, 0x5f, 0xb6, 0x22, 0x30,
		0xb1, 0xd2, 0x84, 0x60, 0xcc, 0x86, 0x8c, 0x7c, 0x77, 0xd0, 0xda, 0x43, 0xc0, 0xd7, 0xa2, 0xb5,
		0x87, 0x96, 0xeb, 0x8d, 0xc6, 0x96, 0xd0, 0xd0, 0x83, 0xac, 0x15, 0x59, 0xeb, 0xce, 0x5d, 0x3f,
		0xca, 0x0d, 0x3d, 0xd3, 0xcd, 0x66, 0x2c, 0x3e, 0x78, 0xcc, 0x85, 0x5b, 0x52, 0x6b, 0xd3, 0xdb,
		0xb3, 0x4e, 0x78, 0xb4, 0xf9, 0x44, 0x21, 0x26, 0xda, 0x7c, 0x62, 0x54, 0x5b, 0xb4, 0xf9, 0x48,
		0x42, 0xc9, 0x68, 0xf3, 0x91, 0x0e, 0x84, 0xd1, 0xe6, 0xb3, 0x27, 0x7c, 0x88, 0x86, 0x6d, 0x3e,
		0x1a, 0xe1, 0x84, 0x65, 0xac, 0x90, 0x3e, 0xd4, 0x40, 0xd6, 0x9a, 0x2d, 0x04, 0xf3, 0xf4, 0x29,
		0x71, 0x98, 0xc1, 0x0e, 0xf8, 0xcd, 0xd1, 0x6d, 0xda, 0x2a, 0x35, 0xa7, 0x4f, 0xd3, 0xc1, 0x3f,
		0xcf, 0x99, 0xf1, 0x28, 0x73, 0x9b, 0xb2, 0x72, 0xb3, 0x57, 0x33, 0xf9, 0xdb, 0x94, 0x95, 0x6f,
		0x26, 0x0e, 0xbe, 0x7f, 0xff, 0xf2, 0xde, 0x63, 0x12, 0xcf, 0xd9, 0xb1, 0x06, 0xbb, 0xdd, 0xeb,
		0xa0, 0x5e, 0x57, 0xf5, 0xca, 0x5f, 0xda, 0xe9, 0xd8, 0x3f, 0x07, 0xb2, 0xb4, 0x2c, 0xf1, 0x87,
		0x09, 0xfa, 0x60, 0xa7, 0xc3, 0x2d, 0x8a, 0xde, 0x31, 0x3f, 0xf4, 0x2e, 0x7a, 0x57, 0x6a, 0x37,
		0xb9, 0xd6, 0xe5, 0xd5, 0xd9, 0x74, 0xef, 0xf8, 0x72, 0xbd, 0xfe, 0xa7, 0xe1, 0x7a, 0xc6, 0xec,
		0x03, 0xff, 0xf9, 0xf3, 0xcb, 0x97, 0x64, 0xf0, 0x89, 0xd9, 0x9b, 0xad, 0xca, 0xe5, 0x59, 0xf9,
		0xaf, 0x3f, 0x97, 0x3f, 0x11, 0xbc, 0x3d, 0xdd, 0x84, 0xbe, 0x72, 0xd9, 0x38, 0x6f, 0x55, 0xce,
		0x5e, 0x7e, 0xc3, 0xd2, 0xfb, 0x2f, 0x36, 0xa9, 0x47, 0x8d, 0x5d, 0x66, 0x46, 0x8b, 0x1a, 0xbb,
		0xe2, 0xfc, 0x96, 0x82, 0xc9, 0xa1, 0xa4, 0x1f, 0xc3, 0x4d, 0xde, 0x89, 0x92, 0xfe, 0xb1, 0x63,
		0x54, 0x6a, 0x8f, 0xb9, 0xb5, 0x1b, 0xd2, 0xdb, 0xbe, 0xef, 0xb6, 0xb9, 0x2d, 0x58, 0xc7, 0xf8,
		0xc1, 0xc5, 0xfd, 0x8b, 0x82, 0x24, 0x73, 0x84, 0xf7, 0xf4, 0xdd, 0x09, 0x0b, 0x95, 0x81, 0x8a,
		0xbb, 0xdd, 0xe0, 0x79, 0xbd, 0x72, 0x16, 0xcc, 0x1e, 0x30, 0x1c, 0xb7, 0x13, 0x6e, 0x43, 0xff,
		0x79, 0xa2, 0xa8, 0xb6, 0xf3, 0x62, 0xfb, 0xfb, 0xef, 0x4e, 0xf0, 0xbd, 0xb6, 0x63, 0x70, 0xa7,
		0xc3, 0x7e, 0xa2, 0x35, 0x40, 0x4d, 0x88, 0x40, 0x6b, 0x00, 0xad, 0x88, 0x41, 0xcb, 0x26, 0xd1,
		0x62, 0xb0, 0xc7, 0x92, 0xa2, 0xc5, 0x60, 0x57, 0xaf, 0x9f, 0x1e, 0x2d, 0x06, 0x05, 0x9d, 0x5b,
		0x0c, 0x0a, 0x68, 0x31, 0x88, 0x54, 0x4c, 0xb4, 0x18, 0xc4, 0xa8, 0xb6, 0x68, 0x31, 0x90, 0x84,
		0xb6, 0xd1, 0x62, 0x20, 0x1d, 0x50, 0xa3, 0xc5, 0x60, 0x4f, 0xf8, 0x19, 0x3d, 0x5b, 0x0c, 0x0a,
		0x68, 0x31, 0x88, 0x29, 0x0e, 0x6b, 0xd7, 0x62, 0x10, 0x54, 0x72, 0x6d, 0xab, 0x7b, 0x6c, 0x9d,
		0x37, 0x9f, 0xd3, 0x9f, 0x73, 0xe3, 0xa3, 0xc4, 0x73, 0x71, 0xfc, 0xfa, 0xc5, 0xd1, 0xba, 0x8f,
		0xa5, 0x3f, 0x17, 0xc7, 0x47, 0x1b, 0xde, 0x29, 0x8c, 0x8f, 0xde, 0xf8, 0x1d, 0xf9, 0xf1, 0xc1,
		0xca, 0x47, 0x27, 0xaf, 0x67, 0x36, 0x1d, 0x90, 0xdb, 0x70, 0x40, 0x76, 0xd3, 0x01, 0xd9, 0x0d,
		0x07, 0x6c, 0x14, 0x29, 0xb3, 0xe1, 0x80, 0xfc, 0x78, 0xb4, 0xf2, 0xf9, 0x83, 0xf5, 0x1f, 0x2d,
		0x8c, 0x13, 0xa3, 0x4d, 0xef, 0x15, 0xc7, 0xa3, 0xa3, 0x44, 0x02, 0x4d, 0x17, 0x91, 0x18, 0x9c,
		0xce, 0x4d, 0x17, 0x30, 0x3b, 0xf9, 0x66, 0x87, 0x26, 0x94, 0x1d, 0x07, 0x64, 0x68, 0x42, 0x89,
		0xf9, 0xa1, 0x7d, 0x13, 0x4a, 0xe1, 0x17, 0x15, 0xf1, 0xe0, 0xed, 0x5f, 0x96, 0xc3, 0x0b, 0xbf,
		0x29, 0x87, 0x17, 0xd0, 0x81, 0xa2, 0x9a, 0xf0, 0x40, 0x07, 0x8a, 0x62, 0xfa, 0x43, 0xb9, 0xbd,
		0xa1, 0xfd, 0x24, 0x86, 0x3b, 0xbc, 0x43, 0xed, 0x27, 0x85, 0xb5, 0xa5, 0xee, 0xa5, 0xfd, 0x2d,
		0x82, 0x8a, 0x34, 0x7a, 0x4f, 0x76, 0x20, 0x30, 0x18, 0xe8, 0x3d, 0x21, 0x1d, 0x2b, 0x08, 0x19,
		0x24, 0x1a, 0x4f, 0xf6, 0x58, 0x52, 0x34, 0x9e, 0xec, 0xea, 0xf5, 0xa3, 0xdc, 0x78, 0xe2, 0xf3,
		0x8e, 0x3e, 0x8d, 0x26, 0x13, 0x61, 0xd1, 0x58, 0x12, 0x85, 0x98, 0x68, 0x2c, 0x89, 0x51, 0x4d,
		0xd1, 0x58, 0x22, 0x09, 0x4a, 0xa3, 0xb1, 0x44, 0x3a, 0x5a, 0x46, 0x63, 0xc9, 0x9e, 0x30, 0x2f,
		0x1a, 0x36, 0x96, 0xf8, 0x9e, 0xe5, 0xf3, 0x8e, 0x35, 0xc9, 0xc5, 0x74, 0xea, 0x2b, 0x29, 0x69,
		0x20, 0xeb, 0x4c, 0x19, 0x50, 0x20, 0x8a, 0x49, 0x75, 0x83, 0x1d, 0x18, 0x83, 0x09, 0x97, 0x3a,
		0x95, 0x6a, 0x34, 0xd2, 0x60, 0x3d, 0x35, 0x59, 0x3f, 0x8d, 0x5e, 0xd1, 0xec, 0x21, 0x77, 0x44,
		0x36, 0xa3, 0x23, 0xd3, 0x39, 0xd3, 0xee, 0xa2, 0x86, 0xa2, 0xeb, 0xb5, 0xb1, 0x98, 0xfe, 0xda,
		0x1e, 0x5e, 0x78, 0x1d, 0x37, 0x1e, 0x5b, 0xf9, 0x11, 0xf3, 0x5d, 0x8f, 0xd2, 0x85, 0xcf, 0x7a,
		0xff, 0x10, 0xdd, 0x37, 0x41, 0x5a, 0x75, 0xaa, 0xba, 0x6e, 0x8a, 0xa4, 0x59, 0xf2, 0xf3, 0x6b,
		0x1b, 0xd7, 0x70, 0x27, 0xb3, 0xcd, 0x36, 0x9e, 0xca, 0x1d, 0xe6, 0x8b, 0x79, 0x18, 0x3a, 0x0c,
		0x3d, 0x1e, 0x43, 0xff, 0x04, 0xa9, 0x65, 0x3c, 0x9a, 0x9f, 0xe0, 0xfe, 0x01, 0x48, 0x57, 0xd3,
		0x2f, 0xe6, 0x0c, 0x1f, 0x98, 0x67, 0xeb, 0xda, 0x6d, 0x32, 0x67, 0x18, 0x72, 0x1a, 0xca, 0x5e,
		0x76, 0x86, 0x0f, 0xda, 0x02, 0x05, 0xb3, 0xe1, 0xd6, 0x85, 0xc7, 0x9d, 0x9e, 0xd6, 0x50, 0xc7,
		0x4c, 0x4d, 0x6c, 0x20, 0x98, 0x11, 0x56, 0xfe, 0xab, 0x56, 0xad, 0x9c, 0x56, 0x1a, 0xad, 0xcb,
		0x6f, 0xd5, 0xaa, 0xa9, 0x31, 0xfc, 0x4c, 0x4f, 0x7e, 0xd2, 0xf5, 0xd5, 0xb7, 0x46, 0xf9, 0xba,
		0x75, 0x5c, 0x2d, 0x5f, 0x37, 0x74, 0xfe, 0x31, 0x99, 0xd9, 0xfd, 0x29, 0xec, 0xce, 0xfd, 0xc9,
		0x06, 0x3f, 0xe9, 0x62, 0x47, 0x7e, 0x4d, 0x71, 0xf2, 0x6b, 0xca, 0x97, 0x8d, 0xeb, 0xab, 0xda,
		0xdf, 0xad, 0xea, 0xf1, 0x49, 0xb9, 0xda, 0xaa, 0x5c, 0x9e, 0x55, 0x4e, 0x8f, 0x1b, 0x57, 0xd7,
		0x3a, 0xff, 0xae, 0xc3, 0xc9, 0xef, 0xba, 0xbc, 0x9a, 0xfe, 0x24, 0xf3, 0x13, 0x72, 0x68, 0x99,
		0x91, 0xa5, 0x12, 0xd4, 0x92, 0x35, 0x0e, 0x2b, 0x9b, 0x0c, 0x42, 0x4b, 0xb6, 0x38, 0xfc, 0x55,
		0x2f, 0x9d, 0xd6, 0x91, 0x91, 0xd5, 0xf9, 0xb7, 0xac, 0xc6, 0x7c, 0xad, 0x59, 0x81, 0x75, 0x41,
		0xf2, 0xc8, 0xc8, 0x68, 0xfc, 0x83, 0x42, 0xe7, 0x7b, 0x64, 0x1c, 0x6a, 0xfc, 0x33, 0x5e, 0x20,
		0xb1, 0x23, 0x23, 0x0d, 0xbe, 0x03, 0x12, 0x6b, 0x2c, 0xad, 0x1e, 0x3c, 0x92, 0x26, 0xd0, 0x47,
		0xc3, 0x46, 0x14, 0xcd, 0x86, 0xf3, 0x84, 0xf2, 0x6b, 0x34, 0xa4, 0x27, 0x94, 0x59, 0xb7, 0xb1,
		0x21, 0xa1, 0xe0, 0x98, 0x1e, 0x82, 0xa1, 0x3d, 0xbf, 0x0d, 0x24, 0x3a, 0x19, 0xa2, 0x8e, 0x43,
		0x7c, 0x42, 0xe9, 0x31, 0xcc, 0x07, 0xc3, 0x7c, 0x76, 0x06, 0xd8, 0x61, 0x11, 0xe4, 0x8e, 0x5e,
		0x3f, 0xca, 0x8b, 0x20, 0x85, 0x0e, 0x4b, 0x1d, 0x42, 0x88, 0xae, 0xc1, 0xfa, 0x06, 0x2c, 0x83,
		0x8c, 0x1a, 0xa1, 0x60, 0x19, 0x64, 0xcc, 0x52, 0x63, 0x19, 0xa4, 0x24, 0xc1, 0xb1, 0x0c, 0x12,
		0x98, 0x40, 0x1f, 0x2a, 0x4f, 0xc3, 0x65, 0x90, 0x7a, 0xb5, 0x7c, 0xe9, 0xd4, 0xe2, 0xa5, 0x57,
		0x4b, 0x97, 0x9e, 0x2d, 0x5c, 0xd3, 0xfe, 0xa6, 0x8b, 0x5a, 0xb5, 0xde, 0xaa, 0x57, 0xce, 0x74,
		0xa2, 0xa0, 0x17, 0xbd, 0x4c, 0x9a, 0x09, 0x9e, 0x0d, 0x9b, 0xe4, 0x96, 0xe7, 0x24, 0xea, 0xf4,
		0x0b, 0x72, 0xe1, 0xa5, 0xd7, 0xf5, 0x17, 0xe4, 0xc3, 0x7b, 0xf0, 0x62, 0xda, 0xa4, 0x4e, 0x3f,
		0xa1, 0xf0, 0xea, 0x27, 0x2c, 0x0d, 0xc4, 0xd4, 0xe9, 0x67, 0x14, 0x43, 0x5d, 0xd2, 0xf6, 0x4e,
		0x1c, 0xbe, 0xfa, 0x09, 0xcb, 0x77, 0x02, 0xf5, 0xdd, 0x48, 0x23, 0xac, 0x6e, 0xad, 0x6c, 0xeb,
		0x7c, 0xcc, 0x91, 0xa1, 0xd1, 0xfa, 0xaf, 0x4d, 0x1e, 0xe6, 0xc8, 0x28, 0xe8, 0xf6, 0x23, 0x5e,
		0xc4, 0x2a, 0xad, 0xda, 0xed, 0xd6, 0xf9, 0x47, 0xad, 0x7a, 0x1f, 0x37, 0x79, 0x47, 0xad, 0x7a,
		0xd1, 0xd6, 0x20, 0x9e, 0x23, 0x23, 0xa7, 0x9b, 0xfc, 0xf5, 0x40, 0x77, 0x34, 0xea, 0x64, 0x5c,
		0x24, 0x27, 0xba, 0xb4, 0xfb, 0x8d, 0xc1, 0x51, 0xed, 0xa8, 0x74, 0x34, 0x25, 0x23, 0x0a, 0xdf,
		0xcc, 0x63, 0xc7, 0x71, 0x85, 0x4d, 0x7e, 0x7e, 0xbc, 0xe9, 0xb7, 0xef, 0xd9, 0x83, 0x3d, 0xb0,
		0xc5, 0xfd, 0x04, 0xc8, 0x27, 0xdd, 0x01, 0x73, 0xda, 0x41, 0xa5, 0xca, 0x72, 0x98, 0xf8, 0xe1,
		0x7a, 0xff, 0x5a, 0xdc, 0xf1, 0x85, 0xed, 0xb4, 0x59, 0xf2, 0xf5, 0x0b, 0xfe, 0xca, 0x2b, 0xc9,
		0x81, 0xe7, 0x0a, 0xb7, 0xed, 0xf6, 0xfd, 0xf0, 0x59, 0xf2, 0xae, 0x37, 0x48, 0x7a, 0xfc, 0x2e,
		0x69, 0x0b, 0xe1, 0x59, 0x3e, 0x13, 0x7e, 0xf8, 0x2c, 0x29, 0x86, 0x8e, 0xc3, 0xfa, 0x16, 0x73,
		0xda, 0xf6, 0xc0, 0x1f, 0xf6, 0x83, 0xab, 0x35, 0x7b, 0xd1, 0x9f, 0xfd, 0x9b, 0xf4, 0x87, 0x77,
		0xa2, 0xff, 0xe8, 0xcf, 0xfe, 0x4d, 0xce, 0x86, 0x62, 0x5b, 0x7d, 0xee, 0x0b, 0xff, 0xc5, 0x5f,
		0xf3, 0x3f, 0xc2, 0x57, 0x93, 0xbe, 0xb0, 0x05, 0xa3, 0x99, 0x84, 0xd0, 0xb3, 0x25, 0x5a, 0x12,
		0x11, 0xb3, 0x6a, 0xf3, 0xbf, 0xec, 0x29, 0xe8, 0x58, 0x75, 0x3a, 0x8c, 0x5a, 0xf1, 0xcb, 0xac,
		0x72, 0x5f, 0x1c, 0x0b, 0xe1, 0x91, 0xf4, 0x33, 0xe6, 0x05, 0x77, 0xca, 0x7d, 0x16, 0x18, 0x26,
		0xcd, 0xda, 0xb7, 0x79, 0x61, 0xff, 0x5c, 0x92, 0x30, 0x7d, 0x98, 0xcb, 0x15, 0x8a, 0xb9, 0x5c,
		0xaa, 0x98, 0x2d, 0xa6, 0x4a, 0xf9, 0x7c, 0xba, 0x90, 0x26, 0x98, 0xb1, 0x9a, 0x57, 0x5e, 0x87,
		0x79, 0xac, 0x73, 0x32, 0x51, 0x4b, 0x67, 0xd8, 0xef, 0x53, 0x16, 0xf1, 0x9b, 0xcf, 0x3c, 0x92,
		0xc3, 0x45, 0xa8, 0x79, 0x19, 0xe2, 0x98, 0x61, 0x87, 0xb1, 0x02, 0x41, 0xc6, 0xd5, 0xf4, 0x85,
		0x37, 0x6c, 0x0b, 0x67, 0x56, 0x69, 0xbd, 0x9c, 0x5e, 0xbe, 0xca, 0xec, 0xea, 0xb5, 0x6a, 0xb3,
		0x6b, 0xd6, 0x3a, 0xe9, 0x0d, 0x5a, 0xd7, 0xfc, 0xae, 0x35, 0x09, 0x01, 0x75, 0x26, 0x5a, 0x8d,
		0xe0, 0x5a, 0x94, 0x97, 0xaf, 0xd3, 0xec, 0xb5, 0x56, 0x3d, 0xb8, 0x2e, 0xad, 0xfa, 0xf4, 0x37,
		0x4f, 0xe2, 0xc6, 0xfc, 0x39, 0x2d, 0x94, 0x44, 0x07, 0x8b, 0xd0, 0x90, 0x84, 0x88, 0x9f, 0xa2,
		0xea, 0x9f, 0x76, 0xd0, 0x2f, 0xd1, 0xb0, 0x47, 0xf5, 0xda, 0x4f, 0x40, 0xf3, 0xcd, 0x69, 0x1a,
		0x49, 0x45, 0xe1, 0x17, 0x13, 0xc8, 0x03, 0xb1, 0x88, 0x78, 0x86, 0x79, 0x63, 0x0d, 0x11, 0x71,
		0xc2, 0x5e, 0x5b, 0x22, 0x54, 0x2f, 0xc5, 0x9e, 0x5a, 0xda, 0xbd, 0xb3, 0x54, 0x7b, 0x64, 0xc9,
		0xf7, 0xc2, 0x92, 0xef, 0x79, 0x25, 0xdf, 0xdb, 0x0a, 0xcc, 0xb7, 0x7c, 0xb7, 0xce, 0x38, 0x2d,
		0x62, 0xc9, 0x9c, 0xe3, 0x34, 0x8b, 0xe0, 0x6e, 0x62, 0x8b, 0xa5, 0xed, 0x4b, 0x42, 0x52, 0xa3,
		0x32, 0x49, 0x2e, 0x97, 0x21, 0xbb, 0x3c, 0x86, 0xf2, 0x72, 0x18, 0x3d, 0x96, 0xbf, 0x50, 0x5f,
		0xee, 0xa2, 0xcd, 0xf2, 0x16, 0x6d, 0x96, 0xb3, 0x68, 0xb3, 0x7c, 0x05, 0x45, 0xaf, 0x5f, 0xdd,
		0x45, 0xb2, 0xcb, 0x51, 0x5e, 0x6c, 0xf8, 0x52, 0xc8, 0x51, 0xf4, 0x79, 0xb3, 0x28, 0x4b, 0xb0,
		0xc3, 0x8b, 0xf8, 0x86, 0x2d, 0x84, 0x5b, 0x25, 0x74, 0xd8, 0x70, 0x25, 0xdc, 0x6c, 0x81, 0xfa,
		0x2a, 0x63, 0xdd, 0xb6, 0x51, 0xd0, 0x67, 0x9b, 0x04, 0xca, 0xd3, 0x0f, 0x74, 0xd8, 0xcf, 0x64,
		0xb1, 0x5f, 0x89, 0x16, 0xad, 0x00, 0xb0, 0xaa, 0x3d, 0x84, 0x8a, 0x74, 0xa5, 0x6a, 0xa2, 0x92,
		0x4c, 0xdd, 0x2b, 0x9b, 0x3f, 0x18, 0xef, 0xdd, 0x0b, 0xba, 0xec, 0xd9, 0x4c, 0x3e, 0x10, 0x67,
		0x6f, 0x11, 0x0b, 0xc4, 0xd9, 0x16, 0x9a, 0x06, 0xe2, 0x6c, 0x2b, 0x8b, 0x00, 0x71, 0x16, 0xb1,
		0xa0, 0x20, 0xce, 0x76, 0x20, 0xe3, 0xd1, 0x84, 0x38, 0x23, 0xb9, 0x53, 0x32, 0xe1, 0x9d, 0x90,
		0x41, 0x9c, 0x7d, 0x38, 0xeb, 0x07, 0x71, 0x86, 0x14, 0x1f, 0xc4, 0xd9, 0x56, 0x26, 0xa4, 0x13,
		0x71, 0x96, 0xcb, 0x94, 0x72, 0xa5, 0x42, 0x31, 0x53, 0x02, 0x5d, 0xb6, 0xb7, 0xb6, 0x04, 0xba,
		0xec, 0x4d, 0x0f, 0xd0, 0x65, 0x94, 0x25, 0xc1, 0xc2, 0x8b, 0x5f, 0xcb, 0xb5, 0x43, 0x0b, 0x2f,
		0xe8, 0xac, 0x15, 0x27, 0xb0, 0xea, 0xe2, 0xd3, 0x1e, 0x1b, 0xdd, 0x62, 0xad, 0x37, 0x95, 0x16,
		0x4e, 0x5a, 0x2b, 0xbc, 0xe9, 0xad, 0xe8, 0xd6, 0x62, 0x05, 0x37, 0xc1, 0x15, 0xdb, 0x04, 0x57,
		0x68, 0xab, 0xb6, 0x7d, 0x62, 0x81, 0x76, 0x77, 0x02, 0xac, 0x49, 0x62, 0x21, 0x5f, 0xfc, 0x0b,
		0xaa, 0xd5, 0x42, 0x08, 0x75, 0x81, 0x5b, 0xcd, 0x99, 0x15, 0xb9, 0x0b, 0x93, 0xfd, 0x14, 0x9e,
		0x6d, 0x0d, 0x27, 0xaa, 0x73, 0xd7, 0x57, 0x4b, 0xf5, 0x9b, 0x3f, 0xee, 0x99, 0xfa, 0x8d, 0xc4,
		0x08, 0xb8, 0xca, 0x79, 0x69, 0xe3, 0xcb, 0x97, 0x29, 0x98, 0x4f, 0x8a, 0xa7, 0x01, 0x33, 0xfe,
		0x63, 0xfc, 0xe9, 0xb6, 0xad, 0xbb, 0xde, 0xc0, 0x13, 0x47, 0xf5, 0xeb, 0x46, 0xb9, 0x55, 0x2f,
		0x7f, 0xbd, 0x28, 0x5f, 0x36, 0x5a, 0xd5, 0x4a, 0xbd, 0xf1, 0x27, 0x05, 0xaf, 0x44, 0xac, 0xc8,
		0xbb, 0x5c, 0xd4, 0x0d, 0x54, 0x8b, 0x48, 0x0a, 0x4c, 0xb5, 0x84, 0xfb, 0xa2, 0x64, 0xfb, 0x2e,
		0xdd, 0xc3, 0xe2, 0x7a, 0xc3, 0x30, 0xcf, 0x98, 0xdf, 0xf6, 0xf8, 0x80, 0x14, 0xb5, 0x11, 0xba,
		0x92, 0x2b, 0xa7, 0xff, 0x64, 0xd8, 0xfd, 0xbe, 0xfb, 0xc3, 0x10, 0xf7, 0xcc, 0x98, 0xe1, 0x19,
		0x23, 0x40, 0x37, 0x86, 0x70, 0x8d, 0x3b, 0x66, 0xf8, 0x03, 0xd6, 0xe6, 0x5d, 0xce, 0x3a, 0xc6,
		0xc4, 0x58, 0xa6, 0x1f, 0x1b, 0xde, 0x59, 0x8d, 0xea, 0xcd, 0x77, 0x87, 0xfb, 0x86, 0xdb, 0x0d,
		0x5e, 0xf2, 0x58, 0x9f, 0x3d, 0xda, 0x8e, 0x30, 0x26, 0x7a, 0xf1, 0x85, 0x8a, 0x49, 0x11, 0x6c,
		0x2f, 0x59, 0xf6, 0x3e, 0x9d, 0x25, 0xd5, 0x20, 0xd4, 0x3c, 0x47, 0xb9, 0x97, 0xe4, 0x85, 0x33,
		0x8a, 0x4b, 0x7b, 0x41, 0x92, 0x51, 0x20, 0xc9, 0x94, 0x9d, 0xbd, 0xb9, 0x57, 0x48, 0x9f, 0x08,
		0x21, 0xa0, 0x35, 0x11, 0xa0, 0xc6, 0x63, 0xc8, 0xb7, 0x10, 0x05, 0x3a, 0xaa, 0x78, 0x38, 0x11,
		0x89, 0x61, 0x44, 0x8a, 0x87, 0x0f, 0x29, 0x1f, 0x36, 0x44, 0xa1, 0xd1, 0x9a, 0x56, 0x43, 0x35,
		0x15, 0x64, 0x4b, 0xae, 0x41, 0x9a, 0x1c, 0x78, 0x25, 0xd7, 0xf0, 0xbc, 0x5f, 0x3c, 0xa6, 0xea,
		0xe1, 0x3e, 0xe6, 0x1d, 0x77, 0x3a, 0xdc, 0xe9, 0x59, 0x3e, 0x81, 0x61, 0x3e, 0xa1, 0x0f, 0x5b,
		0x16, 0x4a, 0x75, 0x2d, 0x9a, 0xc4, 0x9a, 0x23, 0x32, 0x6b, 0x8c, 0x28, 0xad, 0x29, 0xa2, 0xb9,
		0x86, 0x88, 0x32, 0x9d, 0x4c, 0x6a, 0x8d, 0x90, 0x1e, 0x84, 0x32, 0xa5, 0x35, 0x40, 0xfb, 0xdd,
		0x15, 0x44, 0x66, 0x4d, 0xcf, 0x22, 0xe7, 0xf2, 0x26, 0x11, 0xca, 0x12, 0x13, 0xc1, 0x08, 0x38,
		0x9e, 0x79, 0x16, 0x56, 0x22, 0x20, 0xcb, 0xec, 0x66, 0xd1, 0x58, 0xa8, 0x43, 0x70, 0xe4, 0xeb,
		0xc3, 0xa0, 0xef, 0x5b, 0x7d, 0xfb, 0x8e, 0xf5, 0x29, 0x31, 0xeb, 0x84, 0x34, 0x88, 0xa6, 0x26,
		0xd1, 0xd3, 0xa8, 0x15, 0xcd, 0xc2, 0xc2, 0xc2, 0x0f, 0x88, 0x86, 0x85, 0x85, 0x1f, 0xbc, 0x70,
		0x5a, 0x2d, 0x2c, 0x4c, 0x17, 0xb0, 0x1a, 0x2a, 0x62, 0xa7, 0x83, 0x95, 0x85, 0x11, 0xd8, 0x90,
		0x56, 0x23, 0xb9, 0x52, 0xb9, 0xc3, 0x7c, 0x11, 0xcb, 0x0a, 0xf7, 0xd6, 0x90, 0xb0, 0xac, 0xf0,
		0x4d, 0x8f, 0x26, 0xe6, 0x73, 0x68, 0x09, 0x9f, 0x99, 0x33, 0x7c, 0x60, 0x9e, 0x4d, 0xac, 0xe7,
		0x69, 0x25, 0x43, 0x23, 0xb8, 0xf1, 0xb7, 0x59, 0x76, 0x86, 0x0f, 0x74, 0x47, 0x25, 0x35, 0xdc,
		0xba, 0xf0, 0xb8, 0xd3, 0xa3, 0xbd, 0x19, 0x70, 0x6a, 0xa2, 0x83, 0x95, 0xda, 0x4d, 0xae, 0x55,
		0xfe, 0xab, 0x56, 0xad, 0x9c, 0x56, 0x1a, 0xad, 0xcb, 0x6f, 0xd5, 0xaa, 0x49, 0x18, 0xbe, 0xa4,
		0x27, 0x22, 0x5f, 0x5f, 0x7d, 0x6b, 0x94, 0xaf, 0x5b, 0xc7, 0xd5, 0xf2, 0x75, 0x83, 0xb2, 0xb0,
		0x99, 0xd9, 0xf5, 0x2d, 0xe8, 0x73, 0x7d, 0xb3, 0x81, 0xc8, 0x17, 0x9a, 0x48, 0x5b, 0x9c, 0x48,
		0x5b, 0xbe, 0x6c, 0x5c, 0x5f, 0xd5, 0xfe, 0x6e, 0x55, 0x8f, 0x4f, 0xca, 0xd5, 0x56, 0xe5, 0xf2,
		0xac, 0x72, 0x7a, 0xdc, 0xb8, 0xba, 0xa6, 0x2c, 0xf7, 0x61, 0xb0, 0x22, 0xe9, 0x6a, 0x2a, 0xb2,
		0x89, 0x8d, 0xd6, 0xdf, 0xe5, 0x59, 0x2b, 0x8e, 0xa0, 0xed, 0x56, 0x37, 0x29, 0x24, 0x49, 0x36,
		0x2a, 0x94, 0xfa, 0xa5, 0xd1, 0x1f, 0x19, 0x59, 0xca, 0xb2, 0xae, 0xc6, 0x2c, 0xd2, 0x59, 0xd7,
		0xba, 0x20, 0x40, 0x66, 0xb7, 0xba, 0xf5, 0x08, 0x75, 0xee, 0x9c, 0x48, 0x6e, 0x6a, 0x10, 0x8a,
		0xf9, 0x02, 0x09, 0x1c, 0x19, 0x69, 0xe4, 0x8b, 0x1a, 0x4a, 0x44, 0x47, 0x9a, 0x26, 0xc6, 0xd0,
		0x50, 0xcc, 0x9b, 0x17, 0xfb, 0xac, 0x0d, 0x1e, 0x0b, 0x96, 0xdd, 0xe9, 0x78, 0xcc, 0xf7, 0x29,
		0x96, 0x32, 0x09, 0xb9, 0x4a, 0xb3, 0x66, 0x0b, 0xc1, 0x3c, 0x87, 0x5c, 0x9d, 0xc9, 0x3c, 0x38,
		0xb8, 0x4d, 0x59, 0x25, 0xdb, 0xea, 0x1e, 0x5b, 0xe7, 0xcd, 0xe7, 0xf4, 0xe7, 0xdc, 0xf8, 0x28,
		0xf1, 0x5c, 0x1c, 0xbf, 0x7e, 0x71, 0xb4, 0xee, 0x63, 0xe9, 0xcf, 0xc5, 0xf1, 0xd1, 0x86, 0x77,
		0x0a, 0xe3, 0xa3, 0x37, 0x7e, 0x47, 0x7e, 0x7c, 0xb0, 0xf2, 0xd1, 0xc9, 0xeb, 0x99, 0x4d, 0x07,
		0xe4, 0x36, 0x1c, 0x90, 0xdd, 0x74, 0x40, 0x76, 0xc3, 0x01, 0x1b, 0x45, 0xca, 0x6c, 0x38, 0x20,
		0x3f, 0x1e, 0xad, 0x7c, 0xfe, 0x60, 0xfd, 0x47, 0x0b, 0xe3, 0xc4, 0x68, 0xd3, 0x7b, 0xc5, 0xf1,
		0xe8, 0x28, 0x91, 0xa0, 0x93, 0x69, 0x34, 0x29, 0x19, 0xca, 0x55, 0xbd, 0xf2, 0x17, 0x59, 0x6b,
		0xf9, 0x07, 0xe6, 0xa2, 0xca, 0x5c, 0xfe, 0x30, 0x01, 0x4c, 0x88, 0x01, 0xb5, 0xe6, 0x5e, 0x37,
		0x25, 0x12, 0x9a, 0x43, 0x12, 0xca, 0x44, 0x62, 0x1e, 0x09, 0x61, 0xc8, 0xfa, 0xe5, 0xcb, 0x86,
		0xe9, 0x10, 0x27, 0x95, 0xcb, 0xb3, 0xca, 0xe5, 0xd7, 0x56, 0xbd, 0x72, 0xf6, 0x27, 0x76, 0x62,
		0x7f, 0x03, 0xc6, 0x26, 0x39, 0xa8, 0x24, 0x14, 0x4f, 0xab, 0x7d, 0xd8, 0xdf, 0xa6, 0x94, 0xd8,
		0x4c, 0x69, 0xcd, 0x65, 0xa4, 0x38, 0xc1, 0x64, 0xc5, 0xe9, 0xbc, 0x9a, 0x05, 0x31, 0x5b, 0xe1,
		0x64, 0xd4, 0x2b, 0x67, 0x6f, 0x9b, 0x04, 0xb1, 0x78, 0x7b, 0xfa, 0xf1, 0xc9, 0xfb, 0x94, 0x67,
		0x9b, 0x50, 0x77, 0x5e, 0x86, 0x16, 0xb3, 0x4e, 0xb4, 0xf1, 0x65, 0xc6, 0x6f, 0x66, 0x9f, 0xc4,
		0xa8, 0xef, 0x20, 0x4e, 0x09, 0x4b, 0xb2, 0xf7, 0xf9, 0xc9, 0xa7, 0x3d, 0x8c, 0xd0, 0x66, 0xdb,
		0xed, 0xbb, 0x9e, 0x4f, 0x67, 0x3d, 0xf1, 0x4c, 0x1e, 0x2c, 0x25, 0xc6, 0x52, 0xe2, 0xdf, 0x68,
		0x0a, 0x96, 0x12, 0xbf, 0x11, 0x2f, 0x61, 0x29, 0xf1, 0xbb, 0x21, 0x11, 0x96, 0x12, 0x13, 0xc9,
		0x1e, 0x09, 0x2e, 0x25, 0x26, 0xb3, 0x6a, 0x8f, 0xd0, 0x2a, 0x3d, 0x62, 0xab, 0xf2, 0x08, 0x31,
		0x99, 0x14, 0x57, 0xdd, 0x51, 0xdd, 0xbe, 0x8f, 0xfc, 0x5a, 0x20, 0xba, 0x6b, 0x7f, 0x28, 0x91,
		0x7c, 0x14, 0x17, 0xc9, 0x91, 0xdf, 0x6e, 0x0f, 0xba, 0x0f, 0xfa, 0x44, 0x6f, 0xfa, 0x04, 0xfb,
		0x3e, 0xbd, 0x0c, 0xfb, 0xd8, 0xf7, 0xe9, 0xfd, 0x42, 0x62, 0xdf, 0x27, 0x0d, 0x2c, 0x0d, 0x8d,
		0x14, 0xfa, 0xa4, 0x1f, 0xbf, 0x6a, 0xa4, 0x68, 0x7c, 0xbb, 0xbc, 0x2c, 0x57, 0x5b, 0xa7, 0x57,
		0xd5, 0xab, 0x6b, 0x34, 0x51, 0xbc, 0x25, 0xdf, 0x46, 0x13, 0xc5, 0x56, 0x02, 0xfe, 0xae, 0x89,
		0xe2, 0xa5, 0x42, 0x22, 0xb7, 0x5a, 0x73, 0x09, 0x75, 0x6b, 0xa0, 0xe8, 0x73, 0x5f, 0x18, 0x6e,
		0xd7, 0x68, 0xbb, 0x7d, 0x77, 0xe8, 0xbd, 0x65, 0x2b, 0x8d, 0xf9, 0x7b, 0x7e, 0x78, 0x8c, 0xed,
		0xfb, 0x6e, 0x9b, 0xdb, 0x62, 0xf2, 0x71, 0x2e, 0xee, 0x83, 0x8f, 0x4f, 0x27, 0xe9, 0x1b, 0x2f,
		0xc6, 0xec, 0x7f, 0x77, 0x6c, 0x21, 0x3c, 0x7e, 0x37, 0x14, 0x68, 0xad, 0xf8, 0xa0, 0x5b, 0x43,
		0x6b, 0x45, 0xb4, 0x5e, 0x8e, 0x82, 0x25, 0xa0, 0xe9, 0x02, 0xac, 0x01, 0x5d, 0xd6, 0x60, 0x2f,
		0x9b, 0x2e, 0x06, 0x1e, 0xeb, 0x32, 0x8f, 0x39, 0x14, 0xb6, 0x5d, 0x98, 0x07, 0xed, 0x25, 0x99,
		0x14, 0xe7, 0x97, 0x67, 0xac, 0x6b, 0x0f, 0xfb, 0x82, 0x44, 0x3a, 0x67, 0xa6, 0x53, 0x29, 0xb5,
		0x1e, 0xb4, 0x89, 0x56, 0x18, 0xb4, 0xc2, 0xfc, 0xc6, 0x76, 0xd1, 0x0a, 0xf3, 0x46, 0x7c, 0x8b,
		0x56, 0x98, 0x77, 0x43, 0x58, 0xb4, 0xc2, 0x10, 0xe1, 0x01, 0xd0, 0x0a, 0xf3, 0xfb, 0x28, 0x85,
		0x56, 0x98, 0xd7, 0x0f, 0xb4, 0xc2, 0xfc, 0x5a, 0x28, 0xb4, 0xc2, 0x7c, 0xd4, 0x07, 0xa0, 0x15,
		0xe6, 0x0d, 0x2a, 0x8f, 0x56, 0x18, 0xe8, 0xfe, 0xde, 0x00, 0x24, 0x3a, 0x52, 0x60, 0xd2, 0x01,
		0x0a, 0xf4, 0x7a, 0x80, 0xa2, 0xdf, 0x4e, 0x3a, 0xa8, 0x5d, 0x97, 0xcf, 0xcb, 0xd7, 0xe5, 0xcb,
		0xd3, 0x32, 0x6a, 0xf4, 0xef, 0x4b, 0xf6, 0x51, 0xa3, 0xdf, 0x32, 0xf5, 0x7f, 0x93, 0x4e, 0x02,
		0xf7, 0xad, 0xb9, 0x8a, 0x3a, 0xce, 0x39, 0x58, 0x14, 0x00, 0xde, 0x55, 0x9b, 0x7c, 0x75, 0x28,
		0x8a, 0xf5, 0xd2, 0xfc, 0x1b, 0x8a, 0xf5, 0xd1, 0xba, 0x3b, 0x3a, 0xf6, 0x80, 0x92, 0x3d, 0xb2,
		0x1b, 0xba, 0xd9, 0xcd, 0x5e, 0x96, 0xec, 0x05, 0x05, 0xf2, 0x3d, 0x0c, 0xdd, 0x04, 0xf6, 0xb1,
		0x45, 0x61, 0xf8, 0x95, 0x20, 0x28, 0x0c, 0x6b, 0x86, 0xab, 0x50, 0x18, 0xde, 0x0a, 0x2e, 0xa1,
		0x30, 0x4c, 0x24, 0xf3, 0x24, 0x58, 0x18, 0xe6, 0x1d, 0xe6, 0x08, 0x2e, 0x9e, 0x3c, 0xd6, 0xa5,
		0xb4, 0xdd, 0x3a, 0x85, 0x25, 0x6e, 0x95, 0xd9, 0xa5, 0x39, 0xb1, 0x7d, 0x42, 0xae, 0x70, 0x7e,
		0xe3, 0x66, 0x4b, 0x30, 0xca, 0x97, 0xa7, 0xc7, 0xb5, 0xfa, 0xb7, 0xea, 0x71, 0xa3, 0x72, 0x75,
		0xd9, 0xaa, 0x7f, 0x3b, 0x69, 0x54, 0x6f, 0x5a, 0x8d, 0xbf, 0x6b, 0x65, 0x2a, 0x1e, 0x32, 0xa8,
		0x61, 0xf9, 0xa4, 0x06, 0x8e, 0x13, 0x65, 0x79, 0x5e, 0x4f, 0x26, 0x05, 0x61, 0xa7, 0xd9, 0xbd,
		0x5b, 0x90, 0xad, 0xb8, 0x75, 0x9a, 0xdd, 0xba, 0x7a, 0xf9, 0xeb, 0x45, 0xf9, 0xb2, 0xd1, 0xaa,
		0x56, 0xea, 0x0d, 0xdc, 0x3c, 0x7d, 0x6e, 0xde, 0xf2, 0x42, 0x44, 0xdc, 0x37, 0xed, 0xee, 0xdb,
		0x75, 0xf9, 0xe2, 0xaa, 0x51, 0x6e, 0x95, 0x2f, 0xcf, 0x6a, 0x57, 0x95, 0x4b, 0x4a, 0x96, 0x47,
		0x42, 0x92, 0xe6, 0xbe, 0xa7, 0x6b, 0x9f, 0xf6, 0xeb, 0xcc, 0x8a, 0xfc, 0x86, 0x79, 0xec, 0x38,
		0xae, 0xb0, 0x95, 0xd7, 0x40, 0x4d, 0xbf, 0x7d, 0xcf, 0x1e, 0xec, 0x81, 0x2d, 0xee, 0x27, 0x3e,
		0x22, 0xe9, 0x0e, 0x98, 0xd3, 0x0e, 0x48, 0x43, 0xcb, 0x61, 0xe2, 0x87, 0xeb, 0xfd, 0x6b, 0x71,
		0xc7, 0x17, 0xb6, 0xd3, 0x66, 0xc9, 0xd7, 0x2f, 0xf8, 0x2b, 0xaf, 0x24, 0x07, 0x9e, 0x2b, 0xdc,
		0xb6, 0xdb, 0xf7, 0xc3, 0x67, 0xc9, 0xbb, 0xde, 0x20, 0xe9, 0xf1, 0xbb, 0xa4, 0x2d, 0x84, 0x67,
		0xf9, 0x4c, 0xf8, 0xe1, 0xb3, 0xe4, 0xb4, 0xd4, 0x63, 0xbd, 0x28, 0xf5, 0xcc, 0x5e, 0xf4, 0x67,
		0xff, 0x26, 0xfd, 0xe1, 0x9d, 0xe8, 0x3f, 0xfa, 0xb3, 0x7f, 0x93, 0xbe, 0xb0, 0x05, 0x53, 0xe3,
		0xb3, 0xe4, 0xeb, 0xa7, 0x02, 0xdd, 0x54, 0x4b, 0xe5, 0x53, 0xa0, 0xf0, 0x15, 0x53, 0xf7, 0xca,
		0x29, 0x7b, 0x0a, 0x54, 0x3d, 0x2d, 0x8a, 0x9e, 0x0a, 0x35, 0x4f, 0x8e, 0x92, 0x27, 0x47, 0xc5,
		0x93, 0xa3, 0xe0, 0xf7, 0x0b, 0xd3, 0x28, 0xa7, 0xda, 0x43, 0xbf, 0xd1, 0x67, 0x76, 0x57, 0x2d,
		0xbd, 0x1e, 0xd2, 0xea, 0x0a, 0x57, 0x5d, 0x99, 0xb5, 0x19, 0xac, 0xfb, 0xf2, 0x65, 0x0a, 0x9c,
		0x82, 0x8e, 0xc5, 0xbd, 0x41, 0x4f, 0x9f, 0x76, 0xd8, 0xe6, 0x26, 0xb1, 0x40, 0x11, 0x50, 0x52,
		0x3b, 0x4c, 0x52, 0xfd, 0xf0, 0x48, 0x92, 0xc3, 0x22, 0x09, 0x0c, 0x87, 0x24, 0x30, 0x0c, 0x52,
		0xb6, 0x11, 0x2a, 0x4e, 0xe2, 0x35, 0x4b, 0xde, 0x15, 0x44, 0x63, 0xd3, 0x17, 0xde, 0xb0, 0x2d,
		0x9c, 0x19, 0x2c, 0xb8, 0x9c, 0xfe, 0xe4, 0xca, 0xec, 0x17, 0xb7, 0x6a, 0xb3, 0xdf, 0xd9, 0x3a,
		0xe9, 0x0d, 0x5a, 0xd7, 0xfc, 0xae, 0x35, 0x71, 0x6b, 0x75, 0x26, 0x5a, 0x8d, 0x40, 0xfe, 0xf2,
		0xf2, 0x6f, 0x9b, 0xbd, 0xd6, 0xaa, 0x4f, 0x7f, 0xcb, 0xa7, 0xdd, 0x0c, 0x65, 0x72, 0xce, 0x24,
		0xc9, 0x4e, 0x55, 0xd9, 0xa7, 0x2e, 0x76, 0x29, 0x47, 0x89, 0xe3, 0x57, 0x29, 0x09, 0xea, 0x24,
		0x97, 0x17, 0x53, 0xc1, 0x83, 0x49, 0xe6, 0xbd, 0xa4, 0xf3, 0x5c, 0x2a, 0x78, 0x2d, 0xb5, 0x3c,
		0x96, 0x2a, 0xde, 0x4a, 0x39, 0x4f, 0xa5, 0x9c, 0x97, 0x52, 0xce, 0x43, 0xed, 0x56, 0x18, 0x97,
		0xce, 0x2b, 0x29, 0xe4, 0x91, 0x54, 0xf0, 0x46, 0x2a, 0x79, 0x22, 0x09, 0xe8, 0xe0, 0x93, 0xc6,
		0x36, 0x20, 0x91, 0xe7, 0x91, 0xcb, 0xeb, 0xc8, 0xe7, 0x71, 0x48, 0xf0, 0x36, 0x0a, 0x78, 0x1a,
		0x05, 0xbc, 0x4c, 0xdc, 0x46, 0x21, 0x39, 0xaf, 0xa3, 0x9e, 0xcf, 0x49, 0x08, 0x4f, 0xd1, 0x13,
		0x29, 0xf1, 0x86, 0x97, 0xf8, 0x9c, 0x7e, 0x3c, 0xdf, 0x1c, 0x93, 0xc5, 0xc8, 0xb2, 0x14, 0xb2,
		0x16, 0x12, 0x8f, 0x96, 0x45, 0xaf, 0x03, 0xd1, 0x7e, 0x63, 0xc4, 0xda, 0x24, 0x63, 0x66, 0x92,
		0xb9, 0x3c, 0xf5, 0x3b, 0x9e, 0x75, 0x2b, 0x31, 0xaa, 0xff, 0x3c, 0x5f, 0xb8, 0x3e, 0x3f, 0xcd,
		0xe7, 0xd3, 0x99, 0xcf, 0x46, 0xc7, 0xb3, 0xbb, 0xc2, 0xe2, 0x4c, 0x74, 0x2d, 0xde, 0xf1, 0xac,
		0x17, 0x2a, 0x1a, 0xa3, 0xbb, 0x96, 0x95, 0xf2, 0x2f, 0xa7, 0xf8, 0xb2, 0x46, 0xa3, 0x4b, 0xcf,
		0xea, 0x5f, 0x64, 0xf1, 0x6f, 0xbb, 0xb3, 0xba, 0x45, 0x9d, 0xc8, 0xbf, 0xb5, 0x49, 0xda, 0x8f,
		0xc5, 0x1c, 0x0d, 0xc9, 0x45, 0xc1, 0x18, 0x2c, 0x32, 0x42, 0x20, 0x18, 0xad, 0xb5, 0x44, 0xa7,
		0xcb, 0xd1, 0x7c, 0x53, 0x44, 0xba, 0x3b, 0x27, 0x00, 0xb8, 0xd3, 0x61, 0x51, 0xf1, 0xa8, 0xf1,
		0x64, 0xfa, 0xf1, 0x65, 0xf4, 0x52, 0x33, 0xf7, 0x18, 0x33, 0xf4, 0x18, 0x33, 0xf1, 0xa8, 0xb4,
		0x2d, 0x26, 0x0f, 0xa9, 0xd2, 0x33, 0x46, 0xe8, 0x04, 0x3f, 0xe8, 0xfc, 0xa2, 0x71, 0x74, 0xdb,
		0xbb, 0xa5, 0xed, 0xbe, 0x61, 0x4b, 0x15, 0x8b, 0x5a, 0xb5, 0x14, 0xa8, 0xd4, 0x76, 0xf7, 0xf1,
		0xe3, 0x57, 0x7f, 0x8b, 0x2b, 0x6f, 0xb6, 0xdd, 0x87, 0x87, 0xa1, 0xc3, 0x05, 0x0f, 0x06, 0x02,
		0x6c, 0x77, 0xd9, 0xc3, 0x34, 0x67, 0xf9, 0x4b, 0xb7, 0xd4, 0x8a, 0x79, 0xb9, 0x63, 0xcb, 0xaf,
		0x89, 0xaa, 0x9a, 0x1c, 0x65, 0x95, 0x38, 0x9e, 0xea, 0x6f, 0xd4, 0x29, 0x5e, 0x6c, 0xd5, 0xda,
		0xd8, 0xf2, 0xb5, 0xd8, 0xaa, 0xab, 0x6a, 0xfd, 0xe3, 0x19, 0x8f, 0x06, 0x8f, 0x85, 0xd6, 0xf9,
		0x14, 0x9d, 0x8e, 0xbc, 0x36, 0xfc, 0xa7, 0xa8, 0x74, 0x24, 0x1a, 0xf3, 0x8f, 0xdc, 0x0d, 0xc4,
		0xe1, 0x0e, 0xe2, 0x75, 0x0b, 0x71, 0x33, 0x40, 0xb1, 0x37, 0x75, 0xc4, 0x4e, 0xef, 0xc4, 0xde,
		0x94, 0x41, 0x2b, 0x6f, 0x8c, 0xca, 0x9d, 0x84, 0x5f, 0x38, 0xcd, 0x40, 0x23, 0xd7, 0xab, 0x70,
		0x2a, 0x56, 0x84, 0x09, 0xee, 0x6b, 0xf7, 0x12, 0x71, 0x75, 0x39, 0xb6, 0xde, 0xb5, 0x38, 0x7b,
		0xd4, 0xe4, 0xf4, 0xa2, 0xc5, 0x4d, 0x40, 0x4b, 0xeb, 0x2d, 0x93, 0xc6, 0x36, 0x4b, 0xeb, 0x15,
		0xa3, 0x5d, 0x62, 0x8a, 0xad, 0xc7, 0x4b, 0x42, 0x2f, 0x57, 0x9c, 0x3d, 0x5b, 0xab, 0xbd, 0x59,
		0x53, 0x47, 0x49, 0x95, 0x3b, 0x8d, 0x94, 0x6c, 0xb1, 0x05, 0x8b, 0x2f, 0xe0, 0x4c, 0xbf, 0x3e,
		0x9e, 0x80, 0x93, 0x8e, 0x2b, 0xe0, 0x64, 0x10, 0x70, 0x10, 0x70, 0x10, 0x70, 0x08, 0xe2, 0xe3,
		0x18, 0xd3, 0x6f, 0x69, 0xe9, 0xb8, 0x24, 0xfc, 0x1c, 0x3b, 0x8e, 0x96, 0xe1, 0xde, 0xe4, 0xba,
		0x39, 0x59, 0xee, 0x4e, 0xba, 0xdb, 0x93, 0xee, 0xfe, 0xa4, 0xbb, 0xc1, 0x78, 0xdc, 0x61, 0x4c,
		0x6e, 0x31, 0x7e, 0x3c, 0xbe, 0x62, 0x37, 0x43, 0x27, 0xde, 0x3d, 0x7a, 0x42, 0x4c, 0x56, 0x8a,
		0xf1, 0x1c, 0xb3, 0xcb, 0x15, 0xef, 0xc0, 0x65, 0x09, 0x9d, 0xce, 0xf3, 0x9b, 0x72, 0xd7, 0x1b,
		0x58, 0x3f, 0x58, 0xbf, 0x6f, 0xfd, 0xeb, 0xb8, 0x3f, 0x1c, 0x2b, 0x0c, 0x34, 0x96, 0xa4, 0x15,
		0x89, 0x32, 0xa7, 0x92, 0xab, 0x99, 0x3a, 0x1e, 0x5e, 0xea, 0x93, 0xaf, 0xb5, 0xd6, 0xff, 0xca,
		0xd5, 0x6a, 0xeb, 0xbf, 0x97, 0x57, 0xff, 0xbb, 0x6c, 0xd5, 0x1b, 0x67, 0xad, 0xd3, 0xab, 0x8b,
		0x8b, 0x6f, 0x97, 0x95, 0xc6, 0xdf, 0xb2, 0xd6, 0x7e, 0x2a, 0x98, 0x18, 0x2e, 0x79, 0x4d, 0xe2,
		0xfc, 0x6a, 0x7f, 0xbd, 0x3e, 0x3e, 0x2d, 0x9f, 0x7f, 0xab, 0xb6, 0xea, 0xff, 0xef, 0xb7, 0xc6,
		0xd9, 0xd5, 0xff, 0x2e, 0x25, 0x2e, 0xca, 0xfb, 0xbc, 0xeb, 0x17, 0xf7, 0xf2, 0xaa, 0x56, 0x2e,
		0x5f, 0xe3, 0x8a, 0x46, 0x79, 0x45, 0x5b, 0xc7, 0x67, 0x37, 0xe5, 0xeb, 0x46, 0xa5, 0x5e, 0xc6,
		0x75, 0x8d, 0xf4, 0xba, 0x96, 0xff, 0xaa, 0x5d, 0x5d, 0x37, 0x70, 0x51, 0x63, 0xb8, 0xa8, 0xad,
		0xfa, 0xb7, 0x93, 0xd3, 0xab, 0xcb, 0xf3, 0xf2, 0xd9, 0xae, 0x2d, 0x79, 0x6e, 0x62, 0xb9, 0x2a,
		0x21, 0x84, 0xea, 0x8b, 0x8e, 0x42, 0x68, 0x5a, 0x92, 0x70, 0x2e, 0x29, 0x79, 0x85, 0x7c, 0xb7,
		0xb1, 0x48, 0xfe, 0xb8, 0x23, 0xb2, 0x19, 0x05, 0xeb, 0xeb, 0x65, 0x2e, 0xaf, 0xbf, 0xb6, 0x9d,
		0x1e, 0x93, 0xbe, 0x1d, 0x8f, 0x9a, 0xd9, 0x7c, 0xea, 0x66, 0x47, 0x07, 0x39, 0x8c, 0xc2, 0xb9,
		0xc9, 0xe7, 0x9e, 0xdd, 0x16, 0xdc, 0x75, 0xce, 0x78, 0x8f, 0xab, 0x9a, 0x4d, 0x38, 0xb5, 0x2d,
		0xd6, 0xb3, 0x05, 0x7f, 0x64, 0x4a, 0x46, 0xf0, 0x19, 0x8a, 0xe6, 0x96, 0x5f, 0xd8, 0x3f, 0xd5,
		0xab, 0x5e, 0x2e, 0x53, 0xca, 0x95, 0x0a, 0xc5, 0x4c, 0x29, 0x0f, 0x1d, 0x54, 0xad, 0x83, 0x3b,
		0x3a, 0xa0, 0xaf, 0xb9, 0x4b, 0x93, 0x7d, 0x14, 0x00, 0x0e, 0x5f, 0x78, 0xdc, 0xe9, 0xa9, 0x18,
		0xe8, 0x73, 0x28, 0x77, 0xa0, 0x8f, 0x60, 0x9e, 0x23, 0x1d, 0x73, 0x98, 0x07, 0x85, 0x7c, 0x3e,
		0x7b, 0x9b, 0xb2, 0xf2, 0xcd, 0x51, 0x21, 0x9f, 0xbf, 0x4d, 0x59, 0x99, 0xe6, 0x6d, 0xca, 0x2a,
		0x4d, 0xfe, 0xba, 0x4d, 0x59, 0xb9, 0xe9, 0x1f, 0xcf, 0x99, 0xf1, 0xa8, 0xb0, 0xf4, 0x67, 0x76,
		0x3c, 0xba, 0x4d, 0x5b, 0xf9, 0xd9, 0x5f, 0xb9, 0xe0, 0xaf, 0xd2, 0xec, 0xaf, 0xf4, 0xe7, 0xc9,
		0xbb, 0x93, 0xa7, 0x89, 0xa3, 0x38, 0xbf, 0x5c, 0x5e, 0xa2, 0xda, 0x94, 0xa9, 0x07, 0x57, 0xf5,
		0xca, 0x5f, 0xca, 0x94, 0xe1, 0x1f, 0x6d, 0xb5, 0xe1, 0x0f, 0x73, 0xd7, 0x1c, 0xfa, 0x27, 0xbd,
		0x7f, 0x47, 0x7c, 0xf2, 0x37, 0xb5, 0x2a, 0xcb, 0x4a, 0x99, 0xd1, 0x25, 0x6f, 0x36, 0x97, 0xd2,
		0x99, 0x5c, 0x12, 0x67, 0x71, 0x49, 0x9c, 0xc1, 0x15, 0xc3, 0x6c, 0x9a, 0x18, 0xba, 0xf6, 0xe2,
		0x59, 0x4c, 0xb0, 0x82, 0xf6, 0xe2, 0x58, 0x54, 0xf0, 0x1a, 0xd8, 0xa1, 0x39, 0xea, 0x0d, 0x37,
		0x02, 0xcd, 0x51, 0x5b, 0x9d, 0x10, 0xcd, 0x51, 0xa4, 0xa2, 0xb0, 0xc4, 0xe6, 0x28, 0xee, 0x88,
		0x42, 0x4e, 0x42, 0x77, 0x54, 0x8c, 0xd9, 0xa9, 0x24, 0xfe, 0x5b, 0xce, 0xcc, 0x52, 0x79, 0xfd,
		0x41, 0x92, 0xf9, 0x6c, 0x65, 0xdc, 0xa1, 0x7c, 0xae, 0x70, 0x2c, 0x67, 0xd8, 0xac, 0x7c, 0x55,
		0x51, 0xb7, 0x17, 0xd1, 0x3e, 0x69, 0x0f, 0x12, 0xdd, 0x78, 0xd3, 0x0d, 0x8c, 0x90, 0x93, 0x31,
		0xd5, 0x66, 0x69, 0x86, 0x4b, 0xf8, 0xfc, 0x29, 0x8e, 0xfd, 0x95, 0x31, 0x98, 0x4d, 0x31, 0xbd,
		0x83, 0xc1, 0x6c, 0x0a, 0xe9, 0x19, 0x0c, 0x66, 0xfb, 0x95, 0xbf, 0x51, 0x38, 0x9b, 0xed, 0x34,
		0x94, 0x01, 0xd3, 0xd9, 0x74, 0x9e, 0xce, 0xb6, 0x3c, 0x8b, 0x4c, 0xc3, 0xf9, 0x6c, 0xec, 0xa7,
		0xb0, 0x62, 0x99, 0xd1, 0xf6, 0xfa, 0x8b, 0x31, 0xa7, 0x4d, 0x2e, 0x49, 0x89, 0x39, 0x6d, 0x98,
		0xd3, 0xf6, 0x76, 0xd3, 0x8f, 0x61, 0x56, 0xdb, 0xcb, 0xaf, 0xc7, 0xbc, 0x36, 0x5a, 0xee, 0x21,
		0x2e, 0x37, 0x11, 0xbb, 0xbb, 0x88, 0xdd, 0x6d, 0xc4, 0xee, 0x3e, 0x68, 0xa6, 0x93, 0x98, 0xd7,
		0x86, 0x79, 0x6d, 0xf2, 0xdc, 0x4e, 0xdc, 0xee, 0x47, 0x9a, 0x1b, 0x92, 0xe6, 0x8e, 0xa4, 0xb9,
		0x25, 0x3d, 0x78, 0x50, 0xcc, 0x6b, 0xdb, 0xe4, 0x12, 0x30, 0xaf, 0x0d, 0xf3, 0xda, 0x30, 0xaf,
		0x0d, 0x01, 0x07, 0x01, 0x27, 0xd2, 0xab, 0x10, 0xdb, 0xbc, 0xb6, 0x78, 0xd2, 0x70, 0xa9, 0x69,
		0xb9, 0x24, 0x1c, 0x1d, 0x3b, 0x9e, 0x96, 0xe1, 0xe6, 0xe4, 0xba, 0x3b, 0x59, 0x6e, 0x4f, 0xba,
		0xfb, 0x93, 0xee, 0x06, 0xa5, 0xbb, 0xc3, 0x78, 0xdc, 0x62, 0x4c, 0xee, 0x31, 0x7e, 0x5c, 0xbe,
		0x62, 0x37, 0x77, 0xbd, 0x81, 0xf5, 0xc2, 0x99, 0x59, 0x1e, 0x6b, 0x3f, 0xc6, 0x3d, 0x85, 0x01,
		0xd3, 0xdc, 0x22, 0xb9, 0x55, 0x98, 0x95, 0x41, 0xfe, 0xee, 0xad, 0x49, 0x80, 0xb0, 0x74, 0x35,
		0xc6, 0x13, 0xc7, 0xbb, 0x58, 0x31, 0x1c, 0x0d, 0x30, 0x3d, 0xc3, 0xfc, 0xcf, 0xdb, 0x94, 0x75,
		0x38, 0x3b, 0xcd, 0xec, 0xa5, 0xdb, 0x94, 0x95, 0x5e, 0x9c, 0x6b, 0xfa, 0xe2, 0x6d, 0xca, 0x2a,
		0x2c, 0x4e, 0x18, 0xbc, 0x16, 0x7c, 0x4d, 0x78, 0xd6, 0xc9, 0x4b, 0x8b, 0xaf, 0x7a, 0xce, 0x07,
		0xaf, 0xdc, 0xa6, 0xac, 0xec, 0xec, 0x85, 0xc2, 0xe4, 0x85, 0xa5, 0x0f, 0x14, 0xc7, 0xa3, 0xdc,
		0xd2, 0x89, 0x0e, 0x03, 0xb9, 0xe7, 0x1f, 0x2e, 0xbd, 0xfa, 0x15, 0x87, 0x58, 0x23, 0x1b, 0xdf,
		0xd9, 0xff, 0x81, 0xda, 0xfd, 0x4e, 0xed, 0x76, 0x6f, 0x31, 0x2e, 0xa6, 0x2b, 0x20, 0x44, 0x7d,
		0x28, 0x44, 0x1d, 0x4c, 0x6d, 0x76, 0x61, 0x27, 0xa3, 0x74, 0xf0, 0xcf, 0xf4, 0x79, 0x66, 0xe1,
		0x21, 0x46, 0x99, 0x7c, 0x60, 0xaa, 0x89, 0xef, 0xdf, 0xbf, 0x24, 0x9e, 0xb3, 0xe3, 0xf7, 0x1f,
		0x88, 0x69, 0x0b, 0xda, 0x45, 0x92, 0x5d, 0xd1, 0x0e, 0x38, 0x7c, 0x38, 0x7c, 0x38, 0xfc, 0xc0,
		0xe1, 0xef, 0x02, 0x7e, 0x43, 0x24, 0xd1, 0x2e, 0x92, 0x40, 0xed, 0x10, 0xa2, 0x10, 0xa2, 0x10,
		0xa2, 0xde, 0x70, 0x62, 0xcf, 0x1d, 0x0a, 0xf6, 0xfd, 0xbb, 0x25, 0x6c, 0xaf, 0xc7, 0xc4, 0x11,
		0xe8, 0x0c, 0xb0, 0x68, 0x0a, 0x22, 0x16, 0xb4, 0x10, 0xa4, 0x1a, 0x02, 0x18, 0x02, 0x58, 0x04,
		0x01, 0x0c, 0x1c, 0x1b, 0xe2, 0xcc, 0x9b, 0xe3, 0x0c, 0x28, 0x37, 0x84, 0x03, 0x84, 0x83, 0x5d,
		0x0e, 0x07, 0xa0, 0x42, 0x10, 0x67, 0xd4, 0xc7, 0x19, 0x68, 0x21, 0x02, 0x18, 0x02, 0x18, 0x02,
		0xd8, 0x3b, 0x02, 0x98, 0xeb, 0xf1, 0x1e, 0x77, 0x40, 0x85, 0x80, 0x90, 0x53, 0x19, 0xc0, 0xa0,
		0x85, 0x20, 0xe4, 0x10, 0xc0, 0x10, 0xc0, 0xb6, 0x08, 0x60, 0x20, 0xe4, 0x10, 0x67, 0xde, 0x1c,
		0x67, 0x40, 0xc8, 0x21, 0x1c, 0x20, 0x1c, 0xec, 0x72, 0x38, 0x00, 0x15, 0x82, 0x38, 0xa3, 0x3e,
		0xce, 0x40, 0x0b, 0x11, 0xc0, 0x10, 0xc0, 0x10, 0xc0, 0xde, 0x70, 0xe2, 0xb6, 0xdb, 0x77, 0xbd,
		0xa3, 0xc0, 0x3c, 0x9f, 0x33, 0x63, 0x70, 0x66, 0x88, 0x31, 0x1b, 0x62, 0xcc, 0x2e, 0x2a, 0x0a,
		0xc2, 0x00, 0xc2, 0x00, 0xc2, 0xc0, 0xe4, 0xc4, 0x7d, 0xee, 0xfc, 0x6b, 0xdd, 0xd9, 0x4e, 0xe7,
		0x07, 0xef, 0x88, 0x7b, 0x30, 0xe2, 0xbf, 0x75, 0x1d, 0x07, 0xff, 0x8e, 0xfe, 0x3b, 0xba, 0x18,
		0x7d, 0x4d, 0xfc, 0x3f, 0x88, 0x36, 0x31, 0x44, 0x1b, 0x89, 0xfa, 0xf8, 0xc7, 0x8e, 0xe9, 0x23,
		0xb6, 0x07, 0x27, 0xf6, 0x3b, 0x62, 0x0e, 0xca, 0x32, 0x47, 0x35, 0x71, 0xc7, 0xf6, 0x9e, 0x24,
		0x8e, 0x66, 0x92, 0x31, 0x99, 0xa9, 0xca, 0x9c, 0x5e, 0x30, 0x15, 0x77, 0xe7, 0x66, 0x33, 0xc9,
		0xdc, 0x11, 0x34, 0x3c, 0xe9, 0x7c, 0xbb, 0x47, 0x89, 0xb0, 0xc9, 0x50, 0xb9, 0xc7, 0xe3, 0xc2,
		0x48, 0x64, 0xef, 0xf5, 0x28, 0x19, 0xf4, 0x1b, 0xb2, 0x77, 0x0e, 0x85, 0x4a, 0xa9, 0x53, 0x29,
		0x04, 0x76, 0xa5, 0xf2, 0x37, 0xb5, 0x1a, 0xeb, 0x19, 0xcb, 0xc6, 0x90, 0xeb, 0xa2, 0x59, 0x3c,
		0x1b, 0x45, 0xae, 0x73, 0x72, 0xd2, 0x36, 0x8e, 0x5c, 0x39, 0x79, 0x7c, 0x1b, 0x49, 0x6e, 0x3e,
		0x55, 0xe4, 0x1b, 0x4b, 0xca, 0xd2, 0x3c, 0xf6, 0x53, 0x78, 0xb6, 0x35, 0x74, 0x7c, 0x61, 0xdf,
		0xf5, 0x63, 0x1e, 0x2d, 0xeb, 0xb1, 0x2e, 0xf3, 0x98, 0xd3, 0xde, 0xa9, 0xe1, 0xab, 0xd7, 0xe7,
		0xa7, 0x46, 0x2e, 0x5b, 0x48, 0x19, 0x96, 0x71, 0xf2, 0xb5, 0x66, 0x94, 0x7f, 0x0a, 0xe6, 0x74,
		0x58, 0xc7, 0x38, 0x5d, 0x6c, 0xce, 0x67, 0x4c, 0x4c, 0x9b, 0xdf, 0x0d, 0x85, 0x94, 0x99, 0xac,
		0x92, 0x46, 0x51, 0x2f, 0x12, 0x8d, 0xc5, 0x48, 0xea, 0xc5, 0x0d, 0x96, 0xb4, 0x3b, 0xb8, 0xec,
		0xe9, 0xd4, 0xe1, 0x89, 0x97, 0xa7, 0x54, 0xbf, 0x4f, 0x03, 0xb0, 0x81, 0xb9, 0xdc, 0x88, 0xfd,
		0x49, 0x03, 0x4f, 0x1c, 0xd3, 0x66, 0x5e, 0x2b, 0xbe, 0x2a, 0x8e, 0x4d, 0xbd, 0x5e, 0x13, 0x0e,
		0xd8, 0x94, 0xe0, 0x0d, 0x37, 0x02, 0x9b, 0x12, 0x68, 0xe5, 0xf6, 0xb1, 0x29, 0xc1, 0x2f, 0xaf,
		0x8e, 0xbc, 0x4d, 0x09, 0x86, 0xdc, 0x11, 0x85, 0x9c, 0x84, 0xfd, 0x07, 0x62, 0x24, 0x4a, 0xcc,
		0x6b, 0xdb, 0xe9, 0xed, 0x04, 0x04, 0x96, 0xc9, 0x8e, 0x86, 0x14, 0x96, 0x24, 0x06, 0x49, 0x19,
		0x75, 0x25, 0x9f, 0xb2, 0x92, 0xc0, 0x7e, 0x4a, 0x65, 0x3d, 0x43, 0x55, 0x91, 0xcb, 0x3b, 0xec,
		0xab, 0xf6, 0x20, 0xdd, 0x88, 0x37, 0xdd, 0x20, 0xbd, 0x6d, 0xdb, 0xb1, 0xe3, 0xb8, 0xc2, 0x9e,
		0x68, 0x7a, 0x3c, 0xbb, 0xb7, 0xf9, 0xed, 0x7b, 0xf6, 0x60, 0x0f, 0x66, 0x9b, 0x6e, 0x26, 0xdd,
		0x01, 0x73, 0xda, 0x41, 0x22, 0x60, 0x39, 0x4c, 0xfc, 0x70, 0xbd, 0x7f, 0x2d, 0xee, 0xf8, 0xc2,
		0x76, 0xda, 0x2c, 0xf9, 0xfa, 0x05, 0x7f, 0xe5, 0x95, 0xe4, 0xc0, 0x73, 0x85, 0xdb, 0x76, 0xfb,
		0x7e, 0xf8, 0x2c, 0x79, 0xd7, 0x1b, 0x24, 0x3d, 0x7e, 0x97, 0x5c, 0xde, 0x3f, 0x87, 0x33, 0xff,
		0xc5, 0xdf, 0x4f, 0xd3, 0xad, 0x3e, 0xc9, 0x6e, 0xf2, 0x49, 0x6a, 0xa3, 0xeb, 0xff, 0xb2, 0xa7,
		0xa8, 0x53, 0xcd, 0x78, 0xe8, 0xf1, 0xf8, 0xe8, 0x70, 0xa9, 0xf4, 0x77, 0x8c, 0x74, 0x77, 0x8c,
		0xf4, 0x76, 0x54, 0xda, 0x16, 0x93, 0xff, 0x21, 0xe2, 0x77, 0xcc, 0x48, 0xb7, 0xef, 0xf5, 0x86,
		0x6d, 0xe1, 0xcc, 0x12, 0xa9, 0xcb, 0xa9, 0x88, 0x95, 0x99, 0x84, 0xad, 0xda, 0x4c, 0xae, 0xd6,
		0x49, 0x6f, 0xd0, 0xba, 0xe6, 0x77, 0xad, 0xf2, 0x4f, 0x71, 0x1a, 0x8a, 0xf1, 0x89, 0x86, 0x9b,
		0xda, 0xee, 0x1b, 0xb6, 0x54, 0xb9, 0xa8, 0x55, 0x4d, 0x99, 0x8a, 0x6d, 0x77, 0x37, 0x3f, 0x7e,
		0x0f, 0x3e, 0x76, 0xe4, 0x07, 0xef, 0x5a, 0x54, 0x77, 0x4b, 0xda, 0x5d, 0xda, 0xc2, 0xd4, 0xdf,
		0x69, 0xda, 0x1f, 0xbb, 0xff, 0xef, 0xbf, 0x7b, 0xef, 0x3b, 0xe2, 0x9d, 0xf7, 0x39, 0x8a, 0xba,
		0xa5, 0xf9, 0xe3, 0x9e, 0x7d, 0xbc, 0x33, 0x77, 0x0b, 0x9d, 0x9a, 0xb3, 0x59, 0x5f, 0x92, 0x53,
		0x55, 0x4a, 0xf2, 0x0e, 0x73, 0x04, 0xef, 0x72, 0xe6, 0x19, 0xff, 0x31, 0xfe, 0x74, 0xdb, 0xd6,
		0xc0, 0xed, 0x07, 0x7b, 0x38, 0xfa, 0x47, 0x27, 0x5f, 0x6b, 0x7f, 0x6e, 0xa3, 0x1b, 0x11, 0x71,
		0xc0, 0xcb, 0x1c, 0x6f, 0x70, 0xd9, 0xb6, 0x74, 0xa6, 0x51, 0x33, 0xb8, 0x2f, 0x18, 0xda, 0x37,
		0x5f, 0xd7, 0x4f, 0x0a, 0x62, 0x89, 0x79, 0xc6, 0xfc, 0xb6, 0xc7, 0x07, 0x91, 0x04, 0x92, 0x50,
		0x95, 0x2a, 0x4e, 0xbb, 0x3f, 0xec, 0xb0, 0xa0, 0x00, 0x39, 0xb0, 0x3d, 0xfb, 0x81, 0x09, 0xe6,
		0xf9, 0x86, 0xeb, 0xf4, 0x9f, 0x8c, 0xc9, 0xfd, 0x32, 0xc4, 0x3d, 0x33, 0xe6, 0x3e, 0xe7, 0xbb,
		0xc3, 0x7d, 0xc3, 0xed, 0x1a, 0x93, 0x2b, 0x31, 0x39, 0x62, 0xdb, 0x9b, 0x19, 0x61, 0x9d, 0x61,
		0x59, 0xcf, 0x3a, 0x4b, 0x17, 0x6a, 0x7b, 0x20, 0x14, 0x4b, 0xd1, 0xe0, 0x85, 0xda, 0x6d, 0x77,
		0x0f, 0xf4, 0x8a, 0xca, 0x9f, 0xe2, 0xa5, 0x5b, 0xde, 0x1b, 0x0d, 0xb6, 0x8c, 0xf6, 0x52, 0xa2,
		0xfc, 0x07, 0x74, 0xf8, 0x1d, 0x91, 0xfd, 0x7d, 0xfa, 0xf3, 0xf6, 0xfb, 0xf7, 0x8e, 0x3b, 0x61,
		0xb6, 0xe7, 0x25, 0xda, 0xf7, 0xdd, 0x81, 0xd0, 0x89, 0xcd, 0x8e, 0x7f, 0xe7, 0xbd, 0x9f, 0xaf,
		0x32, 0x7b, 0xe7, 0x61, 0x1f, 0xad, 0x27, 0x6f, 0x53, 0x27, 0x5e, 0xae, 0xff, 0x3a, 0x4c, 0x4c,
		0x14, 0xe6, 0x23, 0x5a, 0xb1, 0xa5, 0xbf, 0x8d, 0xac, 0x5e, 0x1b, 0x99, 0x4b, 0x7d, 0x5d, 0x5f,
		0x9d, 0x5f, 0x1b, 0x62, 0x98, 0xf3, 0x8c, 0x7f, 0x8c, 0x81, 0x32, 0x3b, 0xac, 0x6b, 0x0f, 0xfb,
		0xc2, 0x7a, 0x60, 0xc2, 0xe3, 0xed, 0x8f, 0xdf, 0xb8, 0xb9, 0xfa, 0xbc, 0xfa, 0xbe, 0x0f, 0x5e,
		0xf4, 0xed, 0x1a, 0x36, 0xb6, 0x6e, 0xc8, 0x88, 0xa2, 0xe1, 0x22, 0x1a, 0x83, 0x8a, 0x13, 0x2c,
		0x47, 0xd2, 0x10, 0x11, 0x2f, 0x5c, 0xde, 0xc6, 0xe0, 0xd4, 0x24, 0xf7, 0x5b, 0x37, 0x1c, 0xbc,
		0x68, 0x28, 0xc8, 0x66, 0xb6, 0xd1, 0x99, 0x99, 0x15, 0x15, 0xb7, 0xf8, 0x8a, 0x68, 0x1a, 0x02,
		0x22, 0x00, 0xdf, 0x51, 0x16, 0xf4, 0xa3, 0x2e, 0xd8, 0xc7, 0x56, 0x52, 0x8d, 0xbe, 0x64, 0x1a,
		0x01, 0xb9, 0x1d, 0x69, 0xc1, 0x3c, 0xbc, 0x15, 0xe1, 0x32, 0xdd, 0xfc, 0xfe, 0xdd, 0x13, 0x45,
		0xf9, 0x55, 0x53, 0x4b, 0xd6, 0xf3, 0xa9, 0xe7, 0x0a, 0xcb, 0x6d, 0x5b, 0x6d, 0xf7, 0x61, 0xe0,
		0x31, 0xdf, 0x67, 0x1d, 0xab, 0xcf, 0xec, 0xee, 0xe4, 0x4b, 0x65, 0x25, 0x8c, 0x1f, 0xb8, 0x04,
		0x26, 0x73, 0xec, 0xbb, 0x3e, 0xeb, 0x6c, 0x0f, 0xb0, 0xe6, 0x5f, 0x04, 0x64, 0x05, 0x64, 0x05,
		0x64, 0xf5, 0x21, 0xbd, 0xb9, 0x73, 0xdd, 0x3e, 0xb3, 0x9d, 0x08, 0xa0, 0x55, 0x3a, 0x0d, 0x1f,
		0x2a, 0xcf, 0x87, 0x2e, 0x38, 0xf3, 0xed, 0xdd, 0xe8, 0xd2, 0x77, 0xc1, 0x93, 0xc2, 0x93, 0xc2,
		0x93, 0x6e, 0x61, 0x45, 0xe2, 0xc9, 0x63, 0xdd, 0x28, 0xbc, 0xe9, 0x16, 0xd8, 0xdf, 0xac, 0xcc,
		0x44, 0x39, 0xb1, 0x7d, 0x16, 0x61, 0xf1, 0xea, 0xb2, 0xde, 0x38, 0xae, 0x56, 0x5b, 0xb5, 0xeb,
		0xab, 0xc6, 0xd5, 0xe9, 0x55, 0xb5, 0xd5, 0xf8, 0xbb, 0x56, 0xde, 0x56, 0x1d, 0x83, 0x9c, 0xc7,
		0x8f, 0xa4, 0xcd, 0x3e, 0xa2, 0x2c, 0x6c, 0xfe, 0x73, 0xb7, 0xae, 0xf6, 0x44, 0x94, 0x63, 0x46,
		0xfc, 0xb3, 0xce, 0x2a, 0xd7, 0xe5, 0xd3, 0x46, 0xf5, 0xef, 0xd6, 0xe9, 0xd5, 0xe5, 0x65, 0xf9,
		0xb4, 0x51, 0x3e, 0xdb, 0xc5, 0x5f, 0xf9, 0xf5, 0xba, 0x72, 0x52, 0xd9, 0xc5, 0x1f, 0x56, 0xf9,
		0x7a, 0xb1, 0x93, 0x6a, 0x59, 0xa9, 0x57, 0xea, 0xbb, 0xf8, 0xbb, 0xaa, 0x57, 0xa7, 0xc7, 0xd5,
		0x9d, 0xfd, 0x61, 0xad, 0xe3, 0xaf, 0x5f, 0xaf, 0xcb, 0x5f, 0x8f, 0x1b, 0xe5, 0x5d, 0xfc, 0x89,
		0x57, 0xf5, 0xda, 0xf9, 0xae, 0xfe, 0xae, 0xec, 0x2e, 0xfe, 0xb0, 0xda, 0x69, 0x79, 0x27, 0x9d,
		0x63, 0xad, 0x72, 0xb1, 0x8b, 0x3f, 0xab, 0xde, 0x38, 0x6e, 0x54, 0x4e, 0x4d, 0xc5, 0xa4, 0x71,
		0x73, 0xcf, 0x5a, 0x65, 0x35, 0x25, 0x3c, 0x66, 0xdd, 0x35, 0x5b, 0x52, 0x1d, 0xc1, 0xb7, 0x7c,
		0xf0, 0x06, 0x9c, 0x4d, 0xcb, 0xf9, 0x5b, 0xe5, 0x2a, 0xe6, 0x59, 0xf9, 0xfc, 0xf8, 0x5b, 0xb5,
		0xf1, 0x31, 0xa5, 0x6f, 0x82, 0x9e, 0x01, 0x3d, 0x03, 0x7a, 0xe6, 0x43, 0x7a, 0xb3, 0xf5, 0x5c,
		0xf5, 0xc5, 0x9c, 0x74, 0xb8, 0x7d, 0x83, 0xe0, 0x52, 0x03, 0xf2, 0xcd, 0xa5, 0xb3, 0xbe, 0x49,
		0x02, 0x1d, 0xa0, 0x5b, 0x14, 0x0f, 0xb6, 0x2f, 0x1a, 0x7c, 0x30, 0x1a, 0xa1, 0x13, 0x14, 0x9d,
		0xa0, 0xef, 0x75, 0x09, 0x1f, 0x8e, 0x1e, 0xe1, 0x7d, 0x9f, 0xb8, 0xc8, 0x8f, 0x11, 0xfa, 0x61,
		0xb8, 0xf8, 0x40, 0xcb, 0x99, 0x59, 0x9b, 0x79, 0xa1, 0x2f, 0x6b, 0xd6, 0xc8, 0x90, 0x70, 0x20,
		0xbd, 0x87, 0xc1, 0x16, 0xae, 0x63, 0x72, 0xf4, 0x7e, 0xb4, 0x8f, 0x7f, 0xe0, 0xa7, 0xee, 0x87,
		0xc7, 0x08, 0x2e, 0xcc, 0xae, 0x34, 0x8e, 0xf7, 0xfa, 0xee, 0x9d, 0xdd, 0xdf, 0x3e, 0x3b, 0x9d,
		0x7d, 0xcf, 0x76, 0x59, 0x5e, 0x7a, 0x47, 0xb2, 0xbc, 0x0f, 0x9a, 0x0e, 0x52, 0xbc, 0x8f, 0x99,
		0x96, 0x9a, 0xfc, 0xee, 0xa3, 0x26, 0xb7, 0x40, 0xed, 0xfe, 0x43, 0x74, 0x15, 0xee, 0xc9, 0x97,
		0x6d, 0x79, 0x2f, 0xb6, 0x33, 0xc2, 0xc8, 0x8c, 0x31, 0x4a, 0xa3, 0x8c, 0xc1, 0x38, 0xa3, 0x36,
		0xd2, 0xd8, 0x8c, 0x35, 0x36, 0xa3, 0x8d, 0xc7, 0x78, 0xb7, 0x33, 0xe2, 0x2d, 0x8d, 0x39, 0x32,
		0xa3, 0x0e, 0xbf, 0xe8, 0xc1, 0x1e, 0x0c, 0xb8, 0xd3, 0xf3, 0xa3, 0xd3, 0x8f, 0xb9, 0x0a, 0x87,
		0xdf, 0x1c, 0xd5, 0x38, 0xa5, 0x48, 0xcc, 0x3e, 0x72, 0xf3, 0x8f, 0xc3, 0x0d, 0xfc, 0xff, 0xec,
		0xfd, 0xfd, 0x53, 0xdb, 0x4a, 0xd6, 0x2d, 0x8e, 0xff, 0x9e, 0xbf, 0xc2, 0xa5, 0x7a, 0x9e, 0xba,
		0x30, 0x13, 0xe1, 0x17, 0xfc, 0x02, 0xdc, 0xba, 0x75, 0x8a, 0x04, 0x72, 0xc6, 0xdf, 0x03, 0x81,
		0x2f, 0x90, 0xdc, 0x39, 0x95, 0x78, 0x5c, 0xc2, 0x6e, 0x1b, 0xcd, 0x11, 0x92, 0xaf, 0x24, 0x67,
		0xe0, 0x49, 0xf8, 0xdf, 0x3f, 0x65, 0x59, 0x16, 0x36, 0xb6, 0x13, 0x6c, 0xf7, 0xde, 0xdd, 0x2d,
		0x2f, 0x6a, 0xea, 0x0c, 0x21, 0x41, 0xdd, 0x96, 0xb6, 0xd6, 0x5e, 0x6b, 0xf7, 0x7e, 0x21, 0x84,
		0x03, 0x2a, 0x58, 0x20, 0x87, 0x07, 0x72, 0x98, 0xa0, 0x85, 0x0b, 0x39, 0xb0, 0x21, 0x09, 0x3e,
		0xa4, 0xc3, 0xc8, 0x4b, 0x38, 0x91, 0x6f, 0x56, 0x2f, 0x50, 0x45, 0xb6, 0x51, 0xc9, 0x05, 0x17,
		0x32, 0x90, 0xa1, 0x04, 0x1b, 0x06, 0xd0, 0xa1, 0x06, 0x1f, 0x36, 0x10, 0x62, 0x03, 0x23, 0x1e,
		0x50, 0x92, 0x0b, 0x4e, 0x92, 0x41, 0x8a, 0x0c, 0xac, 0xb2, 0x0b, 0xaf, 0xd9, 0xad, 0x61, 0xe5,
		0x17, 0x6a, 0xad, 0xae, 0x0e, 0x8a, 0x21, 0x8c, 0x1c, 0xca, 0x38, 0x20, 0x8d, 0x11, 0xda, 0xb8,
		0x20, 0x8e, 0x1d, 0xea, 0xd8, 0x21, 0x8f, 0x17, 0xfa, 0x68, 0x20, 0x90, 0x08, 0x0a, 0xc9, 0x21,
		0xf1, 0x39, 0xf6, 0xc3, 0x64, 0xc5, 0x59, 0x78, 0x68, 0xbc, 0x1e, 0xb1, 0x45, 0xd1, 0x0e, 0x68,
		0x61, 0x83, 0x4c, 0x4e, 0xe8, 0x54, 0x00, 0xa1, 0xdc, 0x50, 0xaa, 0x0c, 0x52, 0x95, 0x41, 0xab,
		0x1a, 0x88, 0xa5, 0x85, 0x5a, 0x62, 0xc8, 0xcd, 0x6e, 0x19, 0xf9, 0xa8, 0x97, 0xb9, 0x37, 0xce,
		0x1d, 0x7c, 0xab, 0xda, 0x4e, 0xb7, 0x1b, 0x8a, 0x28, 0x62, 0x9c, 0x9b, 0x5d, 0x66, 0x18, 0x95,
		0x6b, 0x5d, 0x3a, 0x71, 0x2c, 0x42, 0x9f, 0x6d, 0x72, 0xb6, 0xb5, 0xb3, 0x33, 0x9e, 0xc6, 0xff,
		0x3c, 0x01, 0xff, 0x47, 0x39, 0xf9, 0xbf, 0xf1, 0xf7, 0x95, 0xe7, 0xd9, 0xff, 0x3f, 0x2a, 0xb5,
		0x64, 0x08, 0xff, 0xee, 0xd7, 0xaf, 0x7b, 0xbb, 0xdf, 0xf7, 0x9f, 0x56, 0xff, 0xc5, 0x9d, 0xff,
		0xfe, 0xf2, 0xf5, 0xeb, 0xe0, 0xfb, 0xc7, 0xa7, 0xd1, 0x7f, 0xcf, 0x9e, 0x5a, 0x7f, 0xdf, 0xfd,
		0xcd, 0xc2, 0x1c, 0xfa, 0x9f, 0x03, 0x12, 0xed, 0x34, 0x85, 0xb9, 0xf5, 0xa4, 0xa7, 0xee, 0xa9,
		0x07, 0x41, 0xc2, 0x47, 0x64, 0x45, 0xd1, 0xbd, 0x1d, 0x3a, 0x7e, 0x5f, 0x44, 0x8c, 0xd4, 0xf0,
		0x79, 0x4d, 0xd0, 0x43, 0xd0, 0x43, 0xd0, 0x43, 0xd0, 0x43, 0xd0, 0x43, 0x29, 0x79, 0x94, 0x6b,
		0x33, 0xc3, 0x06, 0x0f, 0x33, 0x4c, 0xb3, 0xc5, 0x3b, 0xb6, 0xd3, 0xf1, 0x8e, 0x9c, 0x8e, 0x37,
		0xf5, 0xad, 0x1d, 0x89, 0x38, 0x7a, 0xf1, 0xe7, 0xc9, 0x1f, 0xd3, 0xb4, 0xce, 0xf4, 0x4f, 0x49,
		0x59, 0x12, 0x38, 0xd1, 0x96, 0x73, 0x22, 0xa3, 0xa2, 0x7b, 0x4c, 0x0f, 0x9c, 0xbe, 0x2c, 0x63,
		0xe4, 0x30, 0x8a, 0xe3, 0xcc, 0xcb, 0x62, 0x14, 0xdd, 0x17, 0x27, 0xa9, 0x21, 0x93, 0x6f, 0xd6,
		0xaa, 0xdb, 0x50, 0xf7, 0xcc, 0x29, 0xe6, 0x5e, 0x13, 0x07, 0x5a, 0x79, 0x02, 0xac, 0x98, 0x7c,
		0xad, 0x15, 0x43, 0xc6, 0x19, 0x94, 0x99, 0x0c, 0x18, 0x33, 0xaf, 0x55, 0x31, 0x5c, 0x0e, 0x66,
		0xbb, 0xa0, 0xf2, 0x28, 0x05, 0xe5, 0x6d, 0x76, 0x7f, 0xc9, 0x58, 0x51, 0x7a, 0xef, 0x97, 0x2c,
		0x63, 0x78, 0x02, 0x46, 0x05, 0xce, 0x0f, 0xce, 0x0f, 0xce, 0x4f, 0x0b, 0xe7, 0x87, 0x04, 0x0c,
		0x0d, 0x75, 0x02, 0x9b, 0x5e, 0xe0, 0x84, 0x4e, 0x05, 0x10, 0xca, 0x0d, 0xa5, 0xca, 0x20, 0x55,
		0x19, 0xb4, 0xaa, 0x81, 0x58, 0xfa, 0x38, 0x5b, 0x01, 0x09, 0x18, 0x12, 0x09, 0x25, 0x12, 0x30,
		0x90, 0x80, 0xc1, 0xf7, 0xee, 0x22, 0x6f, 0x00, 0xac, 0x06, 0xac, 0x06, 0xac, 0x06, 0xac, 0x66,
		0x3b, 0x58, 0x0d, 0xf2, 0x06, 0x54, 0xe7, 0x0d, 0x20, 0x96, 0x52, 0xd8, 0xae, 0xe3, 0xee, 0x71,
		0x18, 0xda, 0x94, 0x70, 0xbf, 0xd6, 0x45, 0xa1, 0x7f, 0x88, 0x47, 0xb2, 0xb0, 0x95, 0x75, 0xe6,
		0x46, 0xf1, 0x71, 0x1c, 0x13, 0x95, 0x9d, 0x9e, 0xbb, 0xfe, 0xa9, 0x27, 0x46, 0xfe, 0x31, 0xa2,
		0x21, 0x73, 0xd6, 0xb9, 0xf3, 0x30, 0xb5, 0x42, 0xf9, 0xa0, 0x5a, 0xad, 0x37, 0xaa, 0xd5, 0x52,
		0x63, 0xbf, 0x51, 0x3a, 0xac, 0xd5, 0xca, 0xf5, 0x72, 0x8d, 0x60, 0xd1, 0x8b, 0xb0, 0x2b, 0x42,
		0xd1, 0x7d, 0x37, 0x7a, 0x2e, 0xfe, 0xd0, 0xf3, 0x28, 0x97, 0xf8, 0x14, 0x25, 0xfd, 0x35, 0xe5,
		0x0c, 0xc6, 0xa4, 0x34, 0x53, 0x62, 0x6c, 0x53, 0x8f, 0x69, 0x16, 0xc9, 0xa1, 0xe0, 0xab, 0x66,
		0xfe, 0x37, 0xfb, 0xf7, 0x83, 0xf6, 0xef, 0xc9, 0xd6, 0xda, 0xd7, 0xd1, 0x7d, 0xfb, 0x3c, 0xdd,
		0xd1, 0x1b, 0x3d, 0x51, 0x50, 0xaf, 0x0e, 0x20, 0x44, 0x86, 0xa9, 0xce, 0x20, 0xe5, 0x3c, 0xf6,
		0x27, 0xc3, 0xfb, 0x43, 0x49, 0x7e, 0xac, 0xec, 0x8f, 0x53, 0x46, 0xe3, 0xb3, 0xf5, 0xe0, 0xc3,
		0x52, 0x34, 0x1e, 0xd9, 0xcc, 0x49, 0x17, 0x9c, 0x76, 0xb1, 0x49, 0xa7, 0xca, 0xd5, 0x6d, 0xc1,
		0xd2, 0x79, 0x32, 0xa9, 0x1f, 0x8b, 0xb0, 0xe7, 0x74, 0x36, 0x08, 0xa3, 0x3e, 0x1f, 0x6a, 0x3c,
		0x5f, 0x0b, 0x4d, 0x51, 0xd1, 0x14, 0x55, 0x59, 0x78, 0xcf, 0xb0, 0xa6, 0xa8, 0xd9, 0x6b, 0x23,
		0xaf, 0x35, 0xea, 0xf3, 0x25, 0xd1, 0x20, 0x95, 0xe1, 0x45, 0x95, 0xfd, 0xc2, 0x92, 0xbd, 0xb8,
		0x64, 0x2f, 0x30, 0xcd, 0x8b, 0xac, 0x07, 0x01, 0x96, 0xd6, 0x20, 0x55, 0x72, 0x73, 0x30, 0x9a,
		0x66, 0x60, 0x68, 0x8e, 0x8a, 0xe6, 0xa8, 0x05, 0x34, 0x47, 0x95, 0x1b, 0x1a, 0x91, 0xde, 0x1c,
		0x55, 0xf8, 0xce, 0xad, 0x27, 0xba, 0x74, 0xcd, 0x51, 0x27, 0x0b, 0xc8, 0x6e, 0xbc, 0x28, 0x61,
		0x2a, 0xdf, 0xd2, 0x8b, 0x27, 0xb1, 0x5b, 0xb9, 0xb1, 0xba, 0x16, 0x4d, 0x73, 0xd8, 0x12, 0x9a,
		0xc3, 0xa2, 0x39, 0xac, 0x4e, 0x60, 0xcc, 0x03, 0xca, 0x72, 0xc1, 0x59, 0x32, 0x48, 0x67, 0xb7,
		0x80, 0x2c, 0x6f, 0x22, 0xb3, 0xf8, 0xdb, 0x20, 0xf0, 0x84, 0xe3, 0x53, 0x58, 0xfc, 0x84, 0xbd,
		0x95, 0xb7, 0xfa, 0x0c, 0x8b, 0xad, 0xdf, 0x80, 0xc4, 0xb3, 0x1c, 0x89, 0x9c, 0xb3, 0xe7, 0x7a,
		0xb1, 0x08, 0xed, 0x31, 0x24, 0x11, 0x24, 0x48, 0x66, 0x86, 0xfc, 0x72, 0x21, 0x78, 0x4b, 0x78,
		0x4b, 0x78, 0x4b, 0x78, 0x4b, 0xa9, 0x16, 0xbf, 0xf1, 0x2c, 0xe0, 0x5f, 0x3a, 0xcb, 0x03, 0x38,
		0xcb, 0xed, 0x75, 0x96, 0x59, 0xac, 0xdc, 0x76, 0x09, 0xf5, 0xf4, 0xcc, 0x2a, 0x70, 0x93, 0x70,
		0x93, 0x70, 0x93, 0x70, 0x93, 0xa6, 0x20, 0x0c, 0x9c, 0x25, 0x9c, 0xe5, 0xf8, 0xe3, 0xff, 0xbf,
		0xa1, 0x08, 0x1f, 0xed, 0xc4, 0xd4, 0xbe, 0x6d, 0x30, 0x43, 0xf7, 0x97, 0xc6, 0xfc, 0x62, 0x1d,
		0x38, 0x4c, 0x38, 0x4c, 0x38, 0x4c, 0x38, 0x4c, 0xb9, 0x0e, 0xb3, 0x7f, 0x3f, 0xc8, 0x20, 0xc6,
		0x8e, 0x47, 0xeb, 0xd1, 0xb9, 0xcd, 0x3a, 0xc1, 0xa5, 0x3f, 0xf9, 0x6e, 0x52, 0x8d, 0x61, 0x45,
		0xa2, 0x13, 0xf8, 0x5d, 0x8a, 0xa2, 0x64, 0xeb, 0xca, 0xf1, 0xfb, 0x82, 0xac, 0x94, 0x9f, 0xb0,
		0x34, 0xeb, 0xdc, 0xa5, 0xef, 0x6d, 0x6b, 0x7d, 0x76, 0xbc, 0xa1, 0xa0, 0x6b, 0xd4, 0x95, 0xad,
		0xf3, 0x21, 0x74, 0x3a, 0x23, 0x4e, 0x73, 0xe2, 0xf6, 0x5d, 0xaa, 0x12, 0x9f, 0xd9, 0x77, 0x44,
		0xf4, 0x9d, 0xd8, 0xfd, 0x26, 0x48, 0x2a, 0x62, 0x08, 0x61, 0x63, 0xd6, 0x04, 0x9c, 0x07, 0x46,
		0x13, 0x28, 0x55, 0xaa, 0xb0, 0x02, 0x2d, 0x5c, 0x11, 0xdd, 0x55, 0x5b, 0xd0, 0x3e, 0xdb, 0xab,
		0x7d, 0xbe, 0x89, 0x30, 0xa2, 0xb8, 0xb7, 0x19, 0x21, 0x99, 0x2c, 0x00, 0xb5, 0x03, 0xb5, 0x03,
		0xb5, 0x03, 0xb5, 0x23, 0x5f, 0xed, 0xd0, 0x20, 0xcc, 0x34, 0xca, 0xd4, 0xa0, 0x41, 0xa0, 0x41,
		0xa0, 0x41, 0xd4, 0x68, 0x90, 0x7d, 0x98, 0x00, 0x04, 0x08, 0x04, 0x88, 0x56, 0x02, 0x04, 0x2d,
		0x1a, 0xa4, 0xd5, 0x6e, 0x3f, 0xd7, 0x17, 0x3f, 0x7f, 0x2b, 0x75, 0xde, 0x8f, 0x84, 0x56, 0x0d,
		0x6f, 0x65, 0x94, 0x89, 0x0d, 0x47, 0x9f, 0x2e, 0xa2, 0x28, 0x14, 0x4b, 0xaf, 0x8c, 0x52, 0x31,
		0x0d, 0x15, 0x24, 0x4a, 0xc5, 0xd4, 0x28, 0xc4, 0x9c, 0x97, 0x8a, 0xfd, 0xbf, 0xa1, 0x08, 0x5d,
		0xca, 0x24, 0xf0, 0xc9, 0x02, 0x34, 0x61, 0xab, 0x32, 0xc2, 0x56, 0x08, 0x5b, 0x21, 0x6c, 0xa5,
		0x27, 0xe1, 0xa7, 0x9a, 0x59, 0x62, 0x85, 0xa2, 0x23, 0xdc, 0x6f, 0x04, 0x05, 0xae, 0x73, 0xaf,
		0x54, 0xb6, 0x92, 0xe1, 0xa3, 0x9c, 0x30, 0xc7, 0x50, 0x07, 0x98, 0x63, 0x87, 0x3b, 0x76, 0xd8,
		0xe3, 0x85, 0x3f, 0xe2, 0xf8, 0x8c, 0xb1, 0xa3, 0x9c, 0x48, 0x67, 0xdc, 0xcd, 0xbd, 0x97, 0x94,
		0xb3, 0xee, 0x98, 0x80, 0x72, 0x1e, 0x30, 0x2b, 0x18, 0x79, 0x60, 0x00, 0x90, 0x2a, 0x03, 0x54,
		0x65, 0xc0, 0xaa, 0x06, 0x60, 0x69, 0x81, 0x96, 0x18, 0x70, 0xd9, 0x80, 0x37, 0x5b, 0xe8, 0x5b,
		0x99, 0xcf, 0xf2, 0xb3, 0xf4, 0x90, 0x32, 0x97, 0xc9, 0xf3, 0x4c, 0x9f, 0x61, 0xe3, 0xb0, 0x2a,
		0xa1, 0x59, 0x21, 0x44, 0xab, 0x82, 0x6a, 0xe5, 0x90, 0xad, 0x1c, 0xba, 0xd5, 0x42, 0x38, 0x0f,
		0x94, 0x33, 0x41, 0x7a, 0x76, 0x2b, 0xd9, 0xa6, 0xd9, 0xcc, 0xbd, 0xb1, 0x43, 0xd7, 0x8f, 0xf7,
		0x2b, 0x9c, 0x2f, 0x6c, 0x8a, 0xbf, 0x0d, 0xc6, 0x25, 0x69, 0x73, 0x6c, 0x96, 0x7d, 0xf1, 0x02,
		0x52, 0x81, 0x2b, 0x27, 0x67, 0xe9, 0xe2, 0x93, 0x44, 0x8d, 0xd2, 0x5b, 0x35, 0xeb, 0x73, 0x27,
		0x70, 0x2c, 0x7f, 0xb7, 0xb8, 0x12, 0x3b, 0x14, 0xc3, 0xd6, 0xac, 0xe9, 0x39, 0x0f, 0xea, 0x4d,
		0xaf, 0x5a, 0x39, 0xac, 0x1e, 0xd6, 0x1b, 0x95, 0xc3, 0x1a, 0x6c, 0x50, 0xb5, 0x0d, 0xbe, 0xc9,
		0xe7, 0x6a, 0xad, 0x37, 0xf9, 0xf8, 0x3c, 0x0c, 0x18, 0x61, 0x7d, 0xab, 0x28, 0x10, 0x92, 0x15,
		0x08, 0x49, 0x08, 0x49, 0x08, 0x49, 0x08, 0x49, 0x08, 0x49, 0x08, 0x49, 0x08, 0x49, 0x08, 0x49,
		0x90, 0x78, 0x08, 0x49, 0x08, 0x49, 0x08, 0x49, 0x08, 0x49, 0x73, 0x85, 0xe4, 0xbe, 0x02, 0x21,
		0xb9, 0x0f, 0x21, 0x09, 0x21, 0x09, 0x21, 0x09, 0x21, 0x09, 0x21, 0x09, 0x21, 0x09, 0x21, 0x09,
		0x21, 0x09, 0x12, 0x0f, 0x21, 0x09, 0x21, 0x09, 0x21, 0x09, 0x21, 0x69, 0xe0, 0x0a, 0xd4, 0xd9,
		0xb9, 0xc4, 0xed, 0x21, 0xe6, 0xd6, 0x53, 0xda, 0x95, 0x60, 0x5c, 0x69, 0x5f, 0x4c, 0x8b, 0x63,
		0x8b, 0x93, 0x32, 0xb3, 0xe2, 0xb8, 0x96, 0xe2, 0x8d, 0x99, 0x56, 0x62, 0x56, 0x19, 0x0e, 0x93,
		0xbd, 0x69, 0x69, 0x67, 0x94, 0x35, 0x74, 0x51, 0x1c, 0x0e, 0x3b, 0xb1, 0x9f, 0x8a, 0x91, 0x8f,
		0xe3, 0x0f, 0xd0, 0x4c, 0xf7, 0xdf, 0xbe, 0x4c, 0x77, 0xdd, 0x6e, 0xf6, 0xef, 0x07, 0xed, 0xe6,
		0x64, 0xab, 0xed, 0xf7, 0xe9, 0x56, 0xdb, 0xff, 0xff, 0xf1, 0x56, 0xdb, 0x57, 0x93, 0xad, 0x1a,
		0xd2, 0x7b, 0x87, 0xc0, 0x4c, 0xad, 0x68, 0x2c, 0xc5, 0x89, 0x6b, 0x5c, 0x93, 0x55, 0x50, 0xdf,
		0xaa, 0x2a, 0xf2, 0x86, 0xfa, 0x56, 0x03, 0x23, 0x67, 0xa8, 0x6f, 0x5d, 0x7e, 0x6b, 0x50, 0xdf,
		0xaa, 0x1d, 0x50, 0xce, 0x03, 0x26, 0xea, 0x5b, 0x4d, 0x00, 0x52, 0x65, 0x80, 0xaa, 0x0c, 0x58,
		0xd5, 0x00, 0x6c, 0x3e, 0x14, 0x34, 0xea, 0x5b, 0x65, 0x42, 0x31, 0x4e, 0x93, 0x8d, 0x86, 0x68,
		0x55, 0x50, 0xad, 0x1c, 0xb2, 0x95, 0x43, 0xb7, 0x5a, 0x08, 0xe7, 0x81, 0x72, 0x26, 0x48, 0xcf,
		0x6e, 0x25, 0x4e, 0x93, 0x49, 0x97, 0xc4, 0x69, 0x32, 0xc7, 0xe2, 0x38, 0x4d, 0x9e, 0xbc, 0x5b,
		0x38, 0x4d, 0x56, 0x64, 0x7a, 0x38, 0x4d, 0xd6, 0xc7, 0x06, 0x71, 0x9a, 0xac, 0xf5, 0xe7, 0x41,
		0x7d, 0x2b, 0x84, 0x24, 0x84, 0x24, 0x84, 0x24, 0x84, 0x24, 0x84, 0x24, 0x84, 0x24, 0x84, 0x24,
		0x84, 0x24, 0x48, 0x3c, 0x84, 0x24, 0x84, 0x24, 0x84, 0x24, 0x84, 0xa4, 0x7e, 0x42, 0x12, 0xf5,
		0xad, 0x10, 0x92, 0x10, 0x92, 0x10, 0x92, 0x10, 0x92, 0x10, 0x92, 0x10, 0x92, 0x10, 0x92, 0x10,
		0x92, 0x10, 0x92, 0x10, 0x92, 0xb0, 0x41, 0x08, 0x49, 0xd4, 0xb7, 0x6a, 0x81, 0x40, 0x5b, 0x5d,
		0xdf, 0x1a, 0x09, 0x3f, 0x46, 0x6d, 0x2b, 0x9b, 0xcd, 0x6d, 0x65, 0x6d, 0x2b, 0x61, 0x19, 0x63,
		0x41, 0x62, 0x5d, 0xeb, 0xf5, 0x68, 0x9b, 0xa6, 0xd4, 0xb4, 0x6a, 0x3d, 0x5e, 0x96, 0xd8, 0xc8,
		0x75, 0x32, 0x6e, 0x8a, 0x91, 0xce, 0x72, 0xec, 0x59, 0xae, 0x29, 0xcb, 0x33, 0x38, 0x89, 0xc6,
		0x66, 0x85, 0x62, 0x10, 0x84, 0x31, 0xe1, 0x8c, 0xf4, 0xc9, 0x02, 0x98, 0x91, 0x8e, 0x19, 0xe9,
		0x3f, 0x79, 0x9c, 0x98, 0x91, 0x9e, 0x3f, 0x27, 0x46, 0x36, 0x23, 0x9d, 0xb6, 0x48, 0x9a, 0xa5,
		0x38, 0x9a, 0xad, 0x7b, 0x44, 0x05, 0xdd, 0x23, 0x34, 0x00, 0x38, 0x76, 0xa0, 0x63, 0x07, 0x3c,
		0x5e, 0xe0, 0x33, 0x53, 0xba, 0x92, 0x77, 0x8f, 0x60, 0x28, 0x5e, 0xe6, 0x2b, 0x5a, 0x66, 0x4a,
		0x0d, 0x60, 0x4b, 0x09, 0x40, 0xdf, 0x08, 0xb3, 0xa1, 0x54, 0x19, 0xa4, 0xaa, 0x81, 0x56, 0xfa,
		0xb8, 0x63, 0x81, 0x21, 0x32, 0xcd, 0x76, 0x94, 0xcf, 0x7f, 0x84, 0xcf, 0x78, 0x74, 0xcf, 0x7c,
		0x64, 0xcf, 0x98, 0x78, 0xa1, 0xe2, 0x88, 0x5e, 0xd5, 0xd1, 0xbc, 0xf2, 0xe3, 0x50, 0x75, 0xc7,
		0xa0, 0x8c, 0x47, 0xf0, 0x4a, 0x8e, 0xde, 0x95, 0x1f, 0xb9, 0x6f, 0xb3, 0x6d, 0xe5, 0xe4, 0x08,
		0xba, 0x65, 0xea, 0xf1, 0x25, 0x61, 0x58, 0x80, 0xa1, 0x88, 0x97, 0xaf, 0x78, 0x17, 0x82, 0x0a,
		0x82, 0x0a, 0x82, 0x0a, 0x82, 0x0a, 0x82, 0x0a, 0x82, 0x0a, 0x82, 0x0a, 0xa4, 0x17, 0x82, 0x0a,
		0x82, 0x0a, 0x82, 0x0a, 0x82, 0x8a, 0x55, 0x50, 0xed, 0x33, 0x0a, 0xaa, 0x7d, 0x08, 0x2a, 0x08,
		0x2a, 0x08, 0x2a, 0x08, 0x2a, 0x08, 0x2a, 0x08, 0x2a, 0x08, 0x2a, 0x08, 0x2a, 0x08, 0x2a, 0x08,
		0x2a, 0x08, 0x2a, 0x08, 0x2a, 0x6e, 0x41, 0x85, 0x02, 0xbb, 0x05, 0xeb, 0xe8, 0x50, 0x83, 0x94,
		0x56, 0xa7, 0x50, 0xd6, 0x6f, 0xa2, 0x74, 0x2d, 0xb7, 0x66, 0xa3, 0x61, 0xe9, 0xda, 0x55, 0xba,
		0x33, 0x5d, 0x4b, 0xd7, 0xde, 0x68, 0x64, 0xb2, 0x54, 0xa6, 0xaa, 0x83, 0x89, 0x4a, 0x34, 0xcd,
		0x0d, 0x4d, 0x52, 0x8e, 0x29, 0x6e, 0x6e, 0x38, 0x12, 0x8c, 0xc6, 0xca, 0xee, 0xb3, 0xed, 0x76,
		0xa5, 0x99, 0x4c, 0xa6, 0xcb, 0x67, 0xae, 0x2e, 0xc9, 0xc4, 0xe5, 0x46, 0x28, 0xa5, 0x47, 0x22,
		0x29, 0x22, 0x8e, 0x84, 0x91, 0x45, 0xaa, 0x08, 0x22, 0x79, 0xa4, 0x90, 0x3c, 0x22, 0x48, 0x1b,
		0xf9, 0xd3, 0xcb, 0x6d, 0x48, 0x8f, 0xd8, 0x65, 0x16, 0xeb, 0x09, 0xa7, 0x17, 0x8a, 0x9e, 0x4c,
		0x8b, 0x9d, 0xd4, 0x19, 0x4a, 0x8c, 0xc1, 0x59, 0x97, 0xa9, 0x67, 0xdb, 0xdb, 0x2b, 0x8e, 0xfd,
		0x5a, 0x71, 0x06, 0xba, 0x72, 0x09, 0xf8, 0xa3, 0xc7, 0x42, 0x88, 0xf8, 0xf2, 0x9e, 0xba, 0xe4,
		0xca, 0x52, 0xf3, 0x20, 0xbf, 0x07, 0xc0, 0x57, 0x01, 0xf8, 0xbd, 0xbc, 0xc2, 0xbd, 0xec, 0xaa,
		0x4d, 0xab, 0x33, 0x79, 0xa3, 0x88, 0x5a, 0x6e, 0xa4, 0xd7, 0x47, 0xc7, 0x0d, 0x96, 0x8e, 0x1b,
		0x3d, 0xf4, 0xdb, 0x50, 0x08, 0x43, 0x1c, 0x70, 0x64, 0x46, 0xdc, 0x8d, 0xac, 0xdb, 0x46, 0x46,
		0x52, 0xe8, 0x3b, 0x6e, 0x3c, 0x2f, 0x45, 0xdb, 0x75, 0xa3, 0x44, 0xdd, 0x75, 0xa3, 0x94, 0x93,
		0xae, 0x1b, 0x3d, 0xf4, 0xdc, 0xd0, 0x18, 0xf4, 0x38, 0xc1, 0x8f, 0x06, 0x04, 0x89, 0xc0, 0x90,
		0x4e, 0xaa, 0x33, 0x4a, 0x77, 0x0e, 0x29, 0xbf, 0x54, 0xda, 0x17, 0x13, 0x33, 0x3a, 0x9a, 0x8a,
		0x31, 0xbf, 0xf8, 0x41, 0xfa, 0xe7, 0x24, 0x2a, 0x8c, 0xe3, 0xcd, 0x05, 0xeb, 0x3c, 0xf6, 0x83,
		0xd8, 0x0e, 0x3a, 0x76, 0x27, 0xb8, 0x1f, 0x84, 0x22, 0x8a, 0x44, 0xd7, 0x1e, 0xd9, 0xc8, 0x68,
		0xd1, 0x27, 0x53, 0x0e, 0x1a, 0x29, 0xce, 0xb7, 0x86, 0xb7, 0x8c, 0x84, 0x62, 0x66, 0x35, 0x70,
		0x0a, 0x70, 0x0a, 0x70, 0x0a, 0x70, 0x0a, 0x70, 0x0a, 0x4d, 0x39, 0xc5, 0x97, 0x67, 0x4e, 0xf1,
		0x7f, 0x3a, 0xc3, 0x30, 0x14, 0x7e, 0xbc, 0xb3, 0x5b, 0xdc, 0xdb, 0x7b, 0x3e, 0x5e, 0x68, 0xa5,
		0xbf, 0x32, 0x8d, 0xeb, 0xd1, 0x82, 0x9f, 0x65, 0x57, 0xee, 0x8a, 0x07, 0xd0, 0x93, 0xbc, 0xd2,
		0x13, 0xad, 0xe3, 0x31, 0xa7, 0x0f, 0x49, 0x92, 0xa9, 0xfc, 0x7c, 0x74, 0xfa, 0x90, 0x60, 0xd0,
		0xb1, 0xc5, 0x43, 0x7c, 0x14, 0x0b, 0x4f, 0xdc, 0x8b, 0x38, 0x7c, 0xb4, 0x03, 0xdf, 0xee, 0xdc,
		0x25, 0x09, 0xf6, 0x2c, 0x61, 0xc2, 0x24, 0x3b, 0x96, 0x21, 0x4e, 0xa8, 0x7b, 0x88, 0xb0, 0x85,
		0xd4, 0xbc, 0xd7, 0xe6, 0x3d, 0xcd, 0x9c, 0xa4, 0xa6, 0xa7, 0xd2, 0xdb, 0xd0, 0xbf, 0x9d, 0xa6,
		0x15, 0x32, 0x69, 0x0b, 0x64, 0xf2, 0x93, 0xa4, 0x0a, 0x4e, 0x92, 0xd8, 0x04, 0x11, 0x4e, 0x92,
		0xf2, 0xc7, 0x5c, 0x70, 0x92, 0x84, 0xa8, 0x0f, 0xa2, 0x3e, 0x88, 0xfa, 0x20, 0xea, 0x83, 0xa8,
		0x0f, 0x43, 0xd4, 0x87, 0xfe, 0x24, 0x09, 0x07, 0x23, 0xf3, 0xc4, 0x1e, 0x07, 0x23, 0x70, 0x91,
		0x70, 0x91, 0x70, 0x91, 0x70, 0x91, 0x06, 0xb8, 0x48, 0xa3, 0x0e, 0x46, 0x50, 0xef, 0x2c, 0x97,
		0x17, 0xe8, 0x12, 0x54, 0x25, 0xa8, 0x91, 0x47, 0x61, 0xb1, 0x99, 0xb6, 0xa0, 0xbe, 0xba, 0x38,
		0xfb, 0xee, 0x4a, 0xf4, 0xf2, 0x54, 0x70, 0x76, 0x2f, 0xee, 0x6f, 0x45, 0x18, 0xdd, 0xb9, 0x03,
		0xbb, 0x1f, 0x06, 0xc3, 0x41, 0x24, 0xbf, 0xe8, 0x6c, 0x7e, 0x09, 0x14, 0x9e, 0x49, 0xe1, 0xef,
		0xa8, 0x35, 0xe6, 0x61, 0xe4, 0xdb, 0x54, 0x6b, 0x2c, 0xbd, 0xf8, 0x2c, 0x79, 0xe5, 0xe9, 0x0e,
		0x0c, 0xc7, 0x97, 0xc7, 0x81, 0x21, 0x86, 0x3d, 0xab, 0x0f, 0x11, 0x60, 0xd8, 0x33, 0xa3, 0x0c,
		0x22, 0x3b, 0x34, 0xa4, 0x01, 0x2c, 0x16, 0xe0, 0x7a, 0x09, 0x60, 0x88, 0x84, 0x2a, 0x05, 0x36,
		0x2e, 0x80, 0x63, 0x07, 0x3a, 0x76, 0xc0, 0xe3, 0x05, 0x3e, 0xba, 0xc8, 0x52, 0x01, 0xd1, 0xd0,
		0xd5, 0x18, 0x18, 0x47, 0x34, 0x74, 0x6f, 0x6f, 0x1c, 0x6a, 0x2a, 0x8e, 0x21, 0x79, 0x9b, 0x8f,
		0x04, 0x49, 0x92, 0xfb, 0xe6, 0xec, 0x87, 0x22, 0xc9, 0x8f, 0x98, 0xbb, 0x93, 0x73, 0x78, 0xb8,
		0x3e, 0xb8, 0x3e, 0xb8, 0x3e, 0xcd, 0xb4, 0x00, 0x93, 0x26, 0x60, 0xd5, 0x06, 0x4c, 0x1a, 0x81,
		0x4d, 0x2b, 0x70, 0x02, 0xa7, 0x02, 0x00, 0xe5, 0x06, 0x52, 0x65, 0x80, 0xaa, 0x0c, 0x58, 0xd5,
		0x00, 0x2c, 0x2d, 0xd0, 0x12, 0x03, 0x2e, 0x9f, 0xe6, 0x98, 0x7b, 0xe3, 0xdc, 0xc1, 0xb7, 0xaa,
		0xed, 0x74, 0xbb, 0xa1, 0x88, 0x22, 0xc6, 0x89, 0x32, 0xe5, 0x03, 0x86, 0xb5, 0x2e, 0x9d, 0x38,
		0x16, 0xa1, 0xcf, 0x36, 0x54, 0xc6, 0xda, 0xd9, 0xf9, 0x52, 0xb2, 0x0f, 0x5b, 0x3f, 0xbe, 0x94,
		0xed, 0xc3, 0xd6, 0xf8, 0xdb, 0x72, 0xf2, 0x7f, 0xe3, 0xef, 0x2b, 0x5f, 0x4a, 0x76, 0x75, 0xf2,
		0x7d, 0xed, 0x4b, 0xc9, 0xae, 0xb5, 0x76, 0xbf, 0x7e, 0xdd, 0xdb, 0xfd, 0xbe, 0xff, 0xb4, 0xfa,
		0x2f, 0xee, 0xfc, 0xf7, 0x97, 0xaf, 0x5f, 0x07, 0xdf, 0x3f, 0x3e, 0x8d, 0xfe, 0x7b, 0xf6, 0xd4,
		0xfa, 0xfb, 0xee, 0x6f, 0x16, 0x06, 0x38, 0xf0, 0xbf, 0xb7, 0xd6, 0xb8, 0x97, 0xbc, 0x08, 0xf9,
		0xe8, 0x4c, 0xb6, 0x22, 0x18, 0x0d, 0x18, 0x0d, 0x18, 0x0d, 0x18, 0x0d, 0x18, 0x0d, 0x18, 0x0d,
		0x18, 0x0d, 0x18, 0x8d, 0xa4, 0x87, 0x1e, 0x31, 0xc5, 0x18, 0xb3, 0xf8, 0xf5, 0x78, 0x3d, 0xb0,
		0x19, 0xb0, 0x19, 0xb0, 0x19, 0xb0, 0x19, 0xb0, 0x19, 0xb0, 0x19, 0xb0, 0x99, 0xed, 0x62, 0x33,
		0x68, 0xf1, 0xb6, 0x88, 0x87, 0xa9, 0xab, 0x16, 0x99, 0xab, 0x31, 0x18, 0x27, 0x73, 0x60, 0xce,
		0xa6, 0x54, 0xc2, 0x41, 0x96, 0x70, 0x7d, 0xe6, 0x46, 0xf1, 0x71, 0x1c, 0x13, 0x65, 0x74, 0x9e,
		0xbb, 0xfe, 0xa9, 0x27, 0x46, 0xd4, 0x81, 0x68, 0x0a, 0xb3, 0x75, 0xee, 0x3c, 0x4c, 0xad, 0x50,
		0x3e, 0xa8, 0x56, 0xeb, 0x8d, 0x6a, 0xb5, 0xd4, 0xd8, 0x6f, 0x94, 0x0e, 0x6b, 0xb5, 0x72, 0xbd,
		0x4c, 0x30, 0x7b, 0xda, 0xba, 0x08, 0xbb, 0x22, 0x14, 0xdd, 0x77, 0xa3, 0xc7, 0xe2, 0x0f, 0x3d,
		0x8f, 0x72, 0x89, 0x4f, 0x51, 0x12, 0x30, 0x96, 0x3f, 0x46, 0x1a, 0xd5, 0x91, 0x9b, 0x62, 0x9c,
		0x3e, 0x43, 0x61, 0x7f, 0x97, 0x9f, 0x3f, 0x87, 0x82, 0x4d, 0x73, 0xcd, 0x33, 0x4f, 0x65, 0x92,
		0x72, 0x33, 0x23, 0x49, 0x32, 0x21, 0xc9, 0xca, 0x21, 0x2b, 0x28, 0x87, 0x34, 0x29, 0x70, 0x83,
		0x72, 0x48, 0x9d, 0xcb, 0x21, 0x85, 0xef, 0xdc, 0x7a, 0xa2, 0x4b, 0x57, 0x10, 0x39, 0x59, 0x40,
		0x76, 0xb9, 0x95, 0xe8, 0x39, 0x43, 0x2f, 0x26, 0x89, 0x7d, 0x58, 0x09, 0xad, 0xb4, 0xb4, 0x6e,
		0x65, 0x4c, 0x13, 0x8d, 0x37, 0x7f, 0x1a, 0x21, 0x4a, 0x42, 0xd5, 0x82, 0x31, 0x0f, 0x28, 0x9b,
		0x11, 0xa1, 0x20, 0x8b, 0x76, 0x67, 0x16, 0x7f, 0x1b, 0x04, 0x9e, 0x70, 0x7c, 0x0a, 0x8b, 0x9f,
		0xb0, 0xb7, 0xf2, 0x16, 0x34, 0x11, 0xef, 0xb9, 0x5e, 0x2c, 0x42, 0x7b, 0xfc, 0xe6, 0x89, 0x88,
		0xce, 0x19, 0xbe, 0x5c, 0x08, 0x4e, 0x01, 0x4e, 0x01, 0x4e, 0x01, 0x4e, 0x41, 0xb2, 0x88, 0x0f,
		0x5d, 0xbf, 0x4f, 0xe9, 0x13, 0x0e, 0xb6, 0xc0, 0x27, 0x3c, 0xf7, 0xfb, 0x72, 0x09, 0xd5, 0xd1,
		0xcc, 0x2a, 0xf0, 0x06, 0xf0, 0x06, 0xf0, 0x06, 0xf0, 0x06, 0xa6, 0x20, 0xcc, 0xd6, 0xf9, 0x84,
		0xff, 0x37, 0x14, 0xe1, 0xa3, 0x2d, 0x1e, 0x06, 0x6e, 0x48, 0xa9, 0x12, 0x66, 0x97, 0x81, 0x57,
		0x80, 0x57, 0x80, 0x57, 0x80, 0x57, 0x90, 0x6a, 0xf1, 0xb1, 0x7b, 0x2f, 0x62, 0xb7, 0xf3, 0x57,
		0x54, 0xaf, 0x12, 0x3a, 0x05, 0x82, 0x24, 0x48, 0xeb, 0x93, 0xef, 0x26, 0x49, 0x2d, 0x96, 0xef,
		0xf8, 0x41, 0x24, 0x3a, 0x81, 0xdf, 0xa5, 0x48, 0xec, 0xb4, 0xae, 0x92, 0x71, 0x8f, 0x54, 0xa9,
		0x95, 0x84, 0x59, 0x6f, 0xe7, 0xae, 0x4f, 0x5f, 0x7a, 0xf0, 0xd9, 0xf1, 0x86, 0x82, 0x21, 0x49,
		0xff, 0x43, 0xe8, 0x74, 0x62, 0x37, 0xf0, 0x4f, 0xdc, 0xbe, 0x4b, 0x95, 0x2d, 0x35, 0xfb, 0x82,
		0x88, 0xbe, 0x13, 0xbb, 0xdf, 0x04, 0x49, 0x72, 0x11, 0x21, 0x66, 0xcc, 0x9a, 0x80, 0xf3, 0xc0,
		0x67, 0x02, 0x3c, 0xd9, 0x65, 0xdb, 0x62, 0x15, 0x86, 0xa4, 0x86, 0xb6, 0xb6, 0x86, 0xed, 0x27,
		0xfa, 0xe9, 0x9b, 0xe3, 0x51, 0xd3, 0xfd, 0x6c, 0x1d, 0xf0, 0x7d, 0xf0, 0x7d, 0xf0, 0x7d, 0xf0,
		0x7d, 0xb9, 0x51, 0xa0, 0xfe, 0xfd, 0x20, 0x83, 0x18, 0x3b, 0x1e, 0xad, 0x47, 0x47, 0xfb, 0xeb,
		0x94, 0xb4, 0x1f, 0x94, 0x5f, 0x31, 0xe5, 0x2f, 0x83, 0xdc, 0x6d, 0x3d, 0xe5, 0x2f, 0x55, 0xaa,
		0xb0, 0x02, 0x50, 0x7c, 0xe3, 0x29, 0xfe, 0x37, 0x11, 0x46, 0x14, 0xa5, 0x39, 0x99, 0xdf, 0x9d,
		0x2c, 0x00, 0x52, 0x0f, 0x52, 0x0f, 0x52, 0x0f, 0x52, 0x2f, 0x9f, 0xd4, 0xd3, 0x20, 0xcc, 0x34,
		0xca, 0xd4, 0x40, 0xb5, 0x41, 0xb5, 0x41, 0xb5, 0xd5, 0x50, 0xed, 0x7d, 0x98, 0x00, 0x78, 0xb6,
		0x1a, 0x9e, 0x8d, 0x02, 0x65, 0xda, 0x02, 0x65, 0x89, 0xbd, 0x40, 0xf4, 0x29, 0x4a, 0x76, 0x3b,
		0x36, 0xc3, 0x08, 0xd7, 0xa5, 0x2b, 0x61, 0x92, 0xab, 0x86, 0x3a, 0x0a, 0xa5, 0xcb, 0x6a, 0x74,
		0x52, 0xce, 0x4b, 0x97, 0x53, 0x10, 0x90, 0x8c, 0x31, 0xcb, 0xb0, 0x46, 0x2a, 0xc0, 0x10, 0x01,
		0x0d, 0x02, 0x39, 0x08, 0xe4, 0x20, 0x90, 0x63, 0xcc, 0x64, 0xd7, 0xce, 0xe4, 0x2d, 0x25, 0x9e,
		0x6f, 0x97, 0xae, 0x63, 0xf8, 0x80, 0x3b, 0xcc, 0x76, 0xd5, 0x01, 0xe2, 0xd8, 0xa1, 0x8e, 0x1d,
		0xf2, 0x78, 0xa1, 0x8f, 0x38, 0x5a, 0x61, 0xea, 0x80, 0x3b, 0xb4, 0x50, 0xd7, 0x18, 0x32, 0x39,
		0xa1, 0x53, 0x01, 0x84, 0x72, 0x43, 0xa9, 0x32, 0x48, 0x55, 0x06, 0xad, 0x6a, 0x20, 0x96, 0x16,
		0x6a, 0x89, 0x21, 0x37, 0xbb, 0x65, 0x68, 0xa1, 0x2e, 0x15, 0xc1, 0xd0, 0x42, 0x5d, 0xf2, 0x57,
		0xcb, 0xe8, 0xb7, 0x8b, 0xa9, 0x35, 0x79, 0xb6, 0xde, 0x63, 0x3f, 0x88, 0xed, 0xa0, 0x63, 0x77,
		0x82, 0xfb, 0xc1, 0xe8, 0xfd, 0x12, 0x5d, 0xdb, 0x13, 0x4e, 0x6f, 0xb4, 0xf8, 0x13, 0x26, 0xeb,
		0xcc, 0xd3, 0xc2, 0xa9, 0x58, 0x1c, 0x23, 0x39, 0x9c, 0x5e, 0x15, 0x14, 0x11, 0x14, 0x11, 0x14,
		0x11, 0x14, 0x11, 0x14, 0x11, 0x14, 0x11, 0x14, 0x11, 0x14, 0x11, 0x14, 0x51, 0x97, 0x2b, 0x63,
		0x5c, 0xd1, 0x46, 0xa9, 0x48, 0x8b, 0xf2, 0x69, 0x8a, 0x33, 0x87, 0xdf, 0xc5, 0xf4, 0x20, 0xc9,
		0x94, 0xf1, 0x45, 0x24, 0x83, 0x48, 0x64, 0xce, 0x5d, 0xf8, 0xa9, 0xe2, 0x10, 0xa6, 0x1f, 0xd8,
		0x55, 0x70, 0x60, 0xa7, 0x91, 0x84, 0xc0, 0x81, 0xdd, 0x36, 0xfb, 0x30, 0x1c, 0xd8, 0x21, 0x1a,
		0x83, 0x68, 0x0c, 0xa2, 0x31, 0x88, 0xc6, 0x20, 0x1a, 0x83, 0x68, 0x0c, 0xa2, 0x31, 0x7c, 0xd1,
		0x18, 0x9c, 0x33, 0xad, 0xa4, 0xfa, 0x70, 0xce, 0x04, 0x66, 0x03, 0x66, 0x03, 0x66, 0x03, 0x66,
		0x03, 0x66, 0x03, 0x66, 0xb3, 0xa5, 0xcc, 0x06, 0xc7, 0x23, 0x8b, 0x38, 0x99, 0xf6, 0xc7, 0x23,
		0x12, 0x0b, 0xba, 0xe9, 0x4d, 0x82, 0xea, 0x74, 0x84, 0x9c, 0x36, 0x73, 0xd2, 0x65, 0x62, 0x9a,
		0x8c, 0xe2, 0x26, 0x3d, 0x69, 0x30, 0xce, 0x4a, 0xb6, 0xd9, 0xa1, 0x91, 0xd3, 0xda, 0xec, 0x8d,
		0xf1, 0x84, 0xd3, 0x0b, 0x45, 0x8f, 0xf2, 0x8d, 0x99, 0x30, 0xd8, 0x06, 0xe1, 0x1a, 0x97, 0xa9,
		0x4f, 0xde, 0xdb, 0x4b, 0x33, 0x04, 0x66, 0xfc, 0xa2, 0x31, 0x0e, 0x51, 0xeb, 0x22, 0xe4, 0x3f,
		0xc4, 0x23, 0xb1, 0xcf, 0xb3, 0xce, 0xdc, 0x28, 0x3e, 0x8e, 0x63, 0xa2, 0x62, 0xe7, 0x73, 0xd7,
		0x3f, 0xf5, 0xc4, 0x08, 0x72, 0x88, 0xba, 0x4c, 0x59, 0xe7, 0xce, 0xc3, 0xd4, 0x0a, 0x3c, 0x63,
		0x29, 0xac, 0x8b, 0xb0, 0x2b, 0x42, 0xd1, 0x7d, 0x37, 0x7a, 0x3a, 0xfe, 0xd0, 0xf3, 0x28, 0x97,
		0xf8, 0x14, 0x89, 0x90, 0xa4, 0x6d, 0x96, 0x6c, 0x63, 0x25, 0x96, 0x04, 0xfa, 0x4b, 0x01, 0x8b,
		0x84, 0x5c, 0x87, 0xc3, 0x4e, 0xec, 0xa7, 0xae, 0xe3, 0xe3, 0xf8, 0x53, 0x34, 0xd3, 0x0f, 0xd1,
		0xbe, 0x4c, 0xb7, 0xde, 0x6e, 0xf6, 0xef, 0x07, 0xed, 0xe6, 0x64, 0xbf, 0xed, 0xeb, 0x64, 0x5b,
		0xbf, 0x8f, 0x77, 0x85, 0x4e, 0x63, 0xea, 0x8c, 0x57, 0x47, 0xa3, 0xd5, 0xa6, 0xf9, 0xd8, 0x1b,
		0x85, 0x0f, 0x7e, 0xe2, 0x5a, 0x25, 0x0e, 0xca, 0x94, 0xeb, 0x4a, 0xe5, 0xbb, 0x4e, 0x16, 0x57,
		0x49, 0xe0, 0x1a, 0x09, 0x5c, 0xe1, 0xa6, 0xc6, 0x23, 0x19, 0x2d, 0x14, 0xa2, 0x84, 0x25, 0xa5,
		0x03, 0xe0, 0x1a, 0x3e, 0x6a, 0x33, 0x14, 0x5a, 0x1f, 0x3b, 0xd6, 0xfb, 0xcd, 0x35, 0x0d, 0x46,
		0x96, 0xa1, 0xb0, 0x1b, 0xc8, 0x7a, 0x4f, 0x67, 0xf5, 0x7b, 0xbb, 0xda, 0x6f, 0xac, 0xf8, 0x14,
		0x2c, 0xf1, 0x10, 0x87, 0x8e, 0x3d, 0x1c, 0x7d, 0xec, 0x5b, 0x6f, 0x3d, 0x75, 0x6f, 0xfd, 0xe7,
		0x4e, 0xac, 0x7f, 0x3a, 0xb3, 0xc1, 0x13, 0x9f, 0x44, 0x0b, 0x32, 0x75, 0xed, 0x76, 0x85, 0x1f,
		0xbb, 0x3d, 0x57, 0x84, 0x85, 0xff, 0x53, 0xf8, 0x5f, 0x41, 0xc7, 0x1e, 0x04, 0xe3, 0x99, 0x3e,
		0xd1, 0x51, 0xf3, 0xf7, 0xf3, 0xcb, 0xff, 0xb5, 0xc1, 0x9b, 0x2c, 0x2b, 0xc2, 0x36, 0x1d, 0x41,
		0x4b, 0xee, 0xdb, 0x86, 0x30, 0x2b, 0x3b, 0x3e, 0x36, 0x13, 0xff, 0x7a, 0xfd, 0x8d, 0x7d, 0xa3,
		0xc0, 0xcd, 0x58, 0x27, 0x22, 0xea, 0x84, 0xee, 0x40, 0x8a, 0x8f, 0xc9, 0x8c, 0xa9, 0xe9, 0x77,
		0xbc, 0x61, 0x57, 0x14, 0x46, 0x9f, 0xab, 0x30, 0xfe, 0xf8, 0xc3, 0x30, 0x81, 0xa7, 0xc2, 0xe8,
		0x79, 0x15, 0xe2, 0x3b, 0x51, 0x98, 0x40, 0x42, 0xc1, 0x8d, 0x0a, 0x41, 0xaf, 0x30, 0xba, 0x11,
		0x5f, 0xfd, 0xd1, 0x2f, 0x6c, 0xfa, 0x34, 0x25, 0x86, 0x71, 0xa7, 0x0d, 0xad, 0x3b, 0x75, 0xa3,
		0x24, 0x38, 0x33, 0x8a, 0x98, 0xec, 0x8c, 0xdd, 0x6d, 0xf6, 0x0c, 0xcc, 0xf2, 0x9a, 0x2b, 0xff,
		0x56, 0x8b, 0xd4, 0x1f, 0x6c, 0xe8, 0x8d, 0x79, 0xbc, 0xf0, 0x1a, 0x46, 0xbc, 0x0a, 0x03, 0x5b,
		0xcd, 0x82, 0x5e, 0xff, 0x04, 0x57, 0x78, 0x16, 0x96, 0x1b, 0xb9, 0xab, 0xb7, 0x6e, 0x7d, 0x4e,
		0x07, 0x19, 0xfd, 0xf6, 0x8a, 0x4f, 0x7e, 0xbd, 0xea, 0xa7, 0xb5, 0x4f, 0xea, 0x36, 0x39, 0x81,
		0x9b, 0x39, 0x59, 0x5b, 0xfd, 0xa3, 0xca, 0x80, 0x5a, 0x69, 0x27, 0x61, 0xd2, 0xd0, 0x74, 0xee,
		0xe4, 0x6a, 0x74, 0x63, 0x34, 0x63, 0x9b, 0xeb, 0x56, 0xdb, 0x58, 0x7d, 0x2f, 0xb8, 0xdd, 0x60,
		0xd4, 0x6c, 0x66, 0x30, 0xe9, 0x75, 0xd6, 0xbc, 0xc3, 0x9b, 0x15, 0x08, 0x6e, 0x7c, 0xa8, 0x2d,
		0xe3, 0xd0, 0x5a, 0xc2, 0xab, 0x43, 0x49, 0x89, 0xa5, 0x1c, 0x2a, 0xd3, 0x92, 0xe2, 0xb5, 0x5f,
		0x2d, 0x35, 0xf2, 0x7a, 0xd3, 0x02, 0x37, 0xcb, 0xe9, 0xb9, 0x76, 0xe4, 0xf4, 0x5c, 0x79, 0x14,
		0x3b, 0xbb, 0xe2, 0xa6, 0xf1, 0x49, 0x29, 0xf5, 0xba, 0xd2, 0x72, 0x4d, 0x64, 0xe6, 0x94, 0x48,
		0x7c, 0x4d, 0x29, 0xc4, 0x45, 0x81, 0x32, 0x17, 0x84, 0x2c, 0xe7, 0x43, 0xee, 0x6b, 0xbc, 0xb9,
		0x62, 0x90, 0x11, 0x66, 0x95, 0x55, 0xbf, 0x6a, 0x8d, 0x1b, 0x67, 0xc8, 0x9d, 0x46, 0xe2, 0xf4,
		0x30, 0x77, 0x44, 0x27, 0x08, 0xa0, 0x82, 0x02, 0x72, 0x48, 0x20, 0x87, 0x06, 0x5a, 0x88, 0x90,
		0x03, 0x15, 0x92, 0x20, 0x43, 0x3a, 0x74, 0xcc, 0x30, 0x85, 0x54, 0x60, 0x13, 0x8d, 0x1c, 0xc9,
		0x56, 0xc0, 0xd8, 0x58, 0x96, 0x69, 0x23, 0x72, 0x61, 0x87, 0x1a, 0x7e, 0xd8, 0x60, 0x88, 0x0d,
		0x8e, 0x78, 0x60, 0x49, 0x2e, 0x3c, 0x49, 0x86, 0xa9, 0xec, 0x16, 0xd0, 0x8f, 0x8d, 0xa5, 0xcb,
		0x3a, 0xa5, 0xcc, 0x36, 0x5d, 0x90, 0x65, 0x9a, 0xc1, 0xe4, 0x16, 0x4c, 0x2a, 0x27, 0x9a, 0x15,
		0x43, 0x3b, 0x23, 0x06, 0xe3, 0xad, 0xe0, 0x70, 0xe0, 0x70, 0xb6, 0x75, 0xbc, 0x15, 0x19, 0x4f,
		0xe6, 0xe2, 0xcb, 0xc4, 0xbc, 0x99, 0x1c, 0xce, 0x38, 0x60, 0x8d, 0x11, 0xde, 0xb8, 0x60, 0x8e,
		0x1d, 0xee, 0xd8, 0x61, 0x8f, 0x17, 0xfe, 0x68, 0x60, 0x90, 0x08, 0x0e, 0xe9, 0x79, 0xf8, 0xdc,
		0x1b, 0x33, 0xce, 0x3a, 0x8a, 0x1f, 0x99, 0x2a, 0xc1, 0x6a, 0x84, 0x6b, 0x34, 0xd3, 0x8f, 0xf2,
		0xce, 0x89, 0x18, 0x7b, 0x01, 0x1e, 0x7f, 0x68, 0xb6, 0x6f, 0xfe, 0xbc, 0x3c, 0xa5, 0x7e, 0x3d,
		0x93, 0x99, 0xfc, 0x11, 0x4b, 0x83, 0x06, 0xa6, 0x36, 0x2f, 0x59, 0x36, 0xd8, 0xe5, 0xe7, 0x2a,
		0x43, 0xb7, 0x93, 0xb7, 0x39, 0xbc, 0x6f, 0x75, 0xd3, 0xbb, 0xc4, 0xb4, 0x00, 0xf8, 0x05, 0xce,
		0x3e, 0x16, 0xec, 0xfd, 0xdc, 0xcd, 0xe8, 0x1d, 0x21, 0x7c, 0xe7, 0xd6, 0x13, 0x5d, 0x7a, 0xb1,
		0x30, 0x59, 0x08, 0x5a, 0x01, 0x5a, 0x01, 0x5a, 0x01, 0x5a, 0xc1, 0x28, 0xad, 0x70, 0x1b, 0x04,
		0x9e, 0x70, 0x7c, 0x0e, 0x9d, 0x50, 0x86, 0xf7, 0x86, 0xf7, 0x7e, 0xed, 0x6d, 0xb9, 0x77, 0x1e,
		0x6c, 0xd1, 0xb9, 0x1f, 0xd8, 0x03, 0x27, 0xbe, 0x8b, 0xe8, 0x9d, 0xf8, 0x8b, 0xf5, 0xe0, 0xcb,
		0xe1, 0xcb, 0xe1, 0xcb, 0xe1, 0xcb, 0x8d, 0xf2, 0xe5, 0x43, 0xd7, 0x8f, 0x0f, 0x18, 0x3c, 0x39,
		0x65, 0xc0, 0xef, 0xca, 0xf1, 0xfb, 0x82, 0x3c, 0x22, 0xc6, 0xd0, 0x61, 0xf6, 0xdc, 0xf5, 0xf9,
		0xba, 0x2b, 0x27, 0x81, 0x44, 0xfa, 0xa6, 0xd8, 0xd9, 0x7a, 0x1f, 0x42, 0xa7, 0x33, 0xa2, 0x46,
		0x27, 0x6e, 0xdf, 0xa5, 0x6a, 0xbf, 0xb4, 0xd8, 0xd4, 0x45, 0xdf, 0x89, 0xdd, 0x6f, 0x82, 0xa4,
		0x6b, 0x11, 0x23, 0x2a, 0xcc, 0x9a, 0x8a, 0xf3, 0xc0, 0x6f, 0x2a, 0x95, 0x5a, 0x0d, 0xc6, 0x62,
		0x84, 0x63, 0xa2, 0xbf, 0x7a, 0x0b, 0xca, 0x0c, 0xca, 0xec, 0xd5, 0xca, 0x4c, 0xc4, 0xa1, 0xdb,
		0x61, 0x50, 0x64, 0xe3, 0x75, 0xa8, 0xe6, 0x97, 0x89, 0x9e, 0x33, 0xf4, 0x62, 0x52, 0xa6, 0x61,
		0x95, 0x4b, 0x34, 0x24, 0xb8, 0x05, 0x79, 0x0a, 0x79, 0x0a, 0x79, 0x0a, 0x79, 0x6a, 0x9c, 0x3c,
		0xdd, 0xaf, 0x30, 0xe8, 0xd3, 0x06, 0xf4, 0x29, 0xf4, 0x29, 0xf4, 0xa9, 0xd9, 0xfa, 0xb4, 0x5a,
		0x39, 0xac, 0x1e, 0xd6, 0x1b, 0x95, 0x43, 0xc8, 0x54, 0xc8, 0x54, 0xc8, 0x54, 0xc8, 0xd4, 0x15,
		0x6f, 0x4b, 0xc4, 0x57, 0x2d, 0x10, 0xa1, 0x5c, 0x00, 0xba, 0x0c, 0xba, 0x0c, 0xba, 0xcc, 0x4c,
		0x5d, 0x86, 0x72, 0x81, 0x0d, 0x6f, 0xe0, 0x35, 0xea, 0x05, 0x36, 0xbd, 0x85, 0xe7, 0x9f, 0xce,
		0x6e, 0x9a, 0xef, 0x8f, 0xaf, 0x6f, 0x50, 0x34, 0xb0, 0xfa, 0xcd, 0xfb, 0xf4, 0x91, 0xeb, 0xd6,
		0xa1, 0x6e, 0x00, 0xc2, 0x41, 0x2b, 0xe1, 0x80, 0xa9, 0x45, 0xa4, 0x3d, 0x83, 0x23, 0x37, 0x2a,
		0x8e, 0x5b, 0x7f, 0x16, 0x27, 0xcd, 0x07, 0x8b, 0x4e, 0x2f, 0x6d, 0x97, 0xb1, 0x0d, 0x5d, 0x32,
		0xee, 0x87, 0x5e, 0xec, 0xda, 0x71, 0x30, 0x08, 0xbc, 0xa0, 0xff, 0x48, 0xd7, 0x2d, 0xe3, 0xc5,
		0x3a, 0xe8, 0x9a, 0x81, 0xae, 0x19, 0xea, 0x75, 0x21, 0xba, 0x66, 0x30, 0x3a, 0x0b, 0xb2, 0xae,
		0x19, 0x44, 0x8d, 0x7e, 0xe6, 0x5e, 0x28, 0x92, 0x86, 0x3f, 0xc4, 0x10, 0x86, 0x10, 0x18, 0x42,
		0x60, 0x08, 0x81, 0xe9, 0x2a, 0x84, 0xa8, 0x20, 0x31, 0x5b, 0x80, 0xfc, 0x88, 0x60, 0xee, 0xd5,
		0x24, 0x3e, 0x29, 0x78, 0x09, 0x97, 0xc4, 0x47, 0x98, 0xe4, 0xb0, 0xc9, 0x09, 0x9f, 0x0a, 0x60,
		0x94, 0x1b, 0x4e, 0x95, 0xc1, 0xaa, 0x32, 0x78, 0x55, 0x03, 0xb3, 0x3c, 0xf1, 0x32, 0xe2, 0x40,
		0x26, 0xfd, 0x09, 0xc4, 0xdc, 0x1b, 0xc7, 0x73, 0x12, 0x31, 0xc7, 0x29, 0x19, 0x32, 0x4c, 0x78,
		0x4f, 0x26, 0xe6, 0x6e, 0x2c, 0xd3, 0x01, 0x45, 0xb6, 0x2e, 0xe3, 0x41, 0xc5, 0xe4, 0xeb, 0x3b,
		0xdb, 0x4a, 0x05, 0xfe, 0x46, 0x47, 0x4c, 0xaf, 0xbc, 0x1e, 0xf7, 0xb3, 0xce, 0x78, 0x3f, 0x59,
		0x56, 0x6a, 0xc1, 0xd1, 0xfc, 0xdc, 0x37, 0xf3, 0x1c, 0x78, 0x64, 0xeb, 0xb1, 0x1f, 0x7c, 0xd0,
		0x3f, 0x26, 0xc2, 0x47, 0xc4, 0x90, 0x49, 0x35, 0x87, 0x02, 0x11, 0x74, 0x12, 0x74, 0x12, 0x74,
		0x12, 0x74, 0x12, 0x74, 0x12, 0x74, 0x12, 0x23, 0xfb, 0xbc, 0x86, 0x50, 0xa2, 0xba, 0xb5, 0x8c,
		0x19, 0x5e, 0xdb, 0xa3, 0x96, 0xd8, 0x32, 0xbf, 0x20, 0x98, 0x20, 0x98, 0xf2, 0x25, 0x98, 0x90,
		0x12, 0xb8, 0x48, 0xea, 0xa9, 0xca, 0x28, 0x9b, 0xcd, 0x7f, 0x22, 0x49, 0x30, 0xa3, 0x7b, 0xf2,
		0x24, 0xe5, 0x4b, 0xb1, 0x13, 0x73, 0x94, 0x2e, 0x25, 0xcb, 0x18, 0x9e, 0xb3, 0x51, 0x41, 0xce,
		0x86, 0x46, 0xe2, 0x19, 0x39, 0x1b, 0xdb, 0xec, 0xa9, 0x90, 0xb3, 0xb1, 0x29, 0x5c, 0x22, 0x16,
		0xa9, 0x35, 0x8c, 0x72, 0xc3, 0xa9, 0x32, 0x58, 0x55, 0x06, 0xaf, 0x6a, 0x60, 0x36, 0x1f, 0xca,
		0x10, 0xb1, 0x48, 0x89, 0x6b, 0x21, 0x67, 0x23, 0x9f, 0x51, 0x33, 0xe4, 0x6c, 0x48, 0xbf, 0x9f,
		0xc8, 0xd9, 0xd0, 0xcd, 0xd1, 0x18, 0x99, 0x6a, 0x40, 0x3d, 0xb3, 0x69, 0xce, 0x74, 0x69, 0x67,
		0x37, 0x81, 0xda, 0x83, 0xda, 0x83, 0xda, 0x83, 0xda, 0x1b, 0x4a, 0xed, 0xe9, 0x67, 0x43, 0xcd,
		0xd1, 0xfa, 0x32, 0x9c, 0xe2, 0xdc, 0xbd, 0x41, 0xfe, 0x1d, 0x1c, 0x23, 0x1c, 0x23, 0x1c, 0x23,
		0x1c, 0xa3, 0x2e, 0x8e, 0x11, 0x31, 0x2f, 0xa2, 0x1b, 0x8b, 0xfc, 0x3b, 0xb2, 0x5b, 0x8b, 0xfc,
		0x3b, 0x82, 0x9b, 0x8a, 0xfc, 0x3b, 0x3d, 0x3d, 0x0e, 0x0e, 0xe3, 0x0b, 0xdb, 0x98, 0x36, 0x36,
		0xce, 0x66, 0x42, 0xef, 0x3a, 0xfd, 0x4d, 0x47, 0x17, 0x93, 0xb1, 0x48, 0x52, 0xf7, 0xc2, 0x61,
		0x27, 0x4e, 0x05, 0xbb, 0xf5, 0x71, 0xbc, 0xd7, 0x66, 0xba, 0xd5, 0xf6, 0x65, 0xba, 0xc1, 0x76,
		0x33, 0x72, 0xa3, 0xf6, 0xef, 0xc9, 0x06, 0xdb, 0xc7, 0xbd, 0xf6, 0xf9, 0x68, 0x5f, 0x37, 0x93,
		0x6d, 0x6d, 0x41, 0x6b, 0x3d, 0xba, 0xb0, 0x06, 0x79, 0x18, 0x83, 0x28, 0x6c, 0x81, 0x86, 0x7a,
		0x6a, 0xc2, 0x0e, 0x68, 0xa8, 0x97, 0x47, 0x0f, 0x46, 0x16, 0x16, 0xc8, 0x2c, 0xde, 0x13, 0x4e,
		0x8f, 0x26, 0x04, 0x90, 0x49, 0x7e, 0x82, 0x51, 0x56, 0xd6, 0x65, 0xea, 0x74, 0xf7, 0xf6, 0xd2,
		0x3c, 0xfb, 0xe2, 0x33, 0x4e, 0x6e, 0x83, 0xdf, 0x21, 0xc9, 0xac, 0x27, 0xcd, 0xa8, 0x27, 0x6f,
		0xe0, 0x5a, 0x81, 0xbf, 0x81, 0xbf, 0x81, 0xbf, 0xd9, 0xe8, 0x16, 0x90, 0x35, 0x70, 0xe5, 0x1b,
		0x64, 0x84, 0x39, 0x46, 0xca, 0x60, 0x8d, 0x11, 0xde, 0xb8, 0x60, 0x8e, 0x1d, 0xee, 0xd8, 0x61,
		0x8f, 0x17, 0xfe, 0xe8, 0x42, 0x51, 0x05, 0xcc, 0x31, 0x5a, 0x9d, 0x8b, 0xe5, 0x6f, 0x8e, 0x11,
		0xc6, 0x18, 0x6d, 0x7a, 0x07, 0x79, 0x32, 0xcb, 0xf3, 0x37, 0xc1, 0x88, 0x27, 0x83, 0x1c, 0xe3,
		0x8b, 0x68, 0xaf, 0x4a, 0x51, 0x07, 0x4f, 0x9d, 0x11, 0xce, 0x94, 0x09, 0x0e, 0xea, 0x0b, 0xea,
		0x0b, 0xea, 0x0b, 0xea, 0x4b, 0xf4, 0xc6, 0xd0, 0x67, 0x6a, 0x13, 0x67, 0x68, 0x9b, 0xe1, 0x8c,
		0xee, 0x9d, 0x07, 0x5b, 0x74, 0xee, 0x07, 0xf6, 0xc0, 0x89, 0xef, 0x22, 0x7a, 0x9f, 0xf4, 0x62,
		0x3d, 0xb8, 0x26, 0xb8, 0x26, 0xb8, 0x26, 0xb8, 0x26, 0xa3, 0x5c, 0xd3, 0xd0, 0xf5, 0xe3, 0x03,
		0x06, 0xc7, 0x44, 0x19, 0x8e, 0xb9, 0x72, 0xfc, 0xbe, 0x20, 0x8f, 0x57, 0x30, 0x24, 0xb0, 0x9f,
		0xbb, 0x3e, 0x5f, 0x52, 0x77, 0x12, 0xe6, 0xa1, 0xaf, 0xb9, 0xc9, 0xd6, 0xfb, 0x10, 0x3a, 0x9d,
		0xd8, 0x0d, 0xfc, 0x13, 0xb7, 0xef, 0xc6, 0x11, 0xe3, 0xc2, 0x1f, 0x45, 0xdf, 0x89, 0xdd, 0x6f,
		0xa3, 0xcf, 0xda, 0x73, 0xbc, 0x48, 0xe4, 0x21, 0x00, 0x64, 0x9d, 0x3b, 0x0f, 0xfc, 0xa6, 0x52,
		0xa9, 0xd5, 0x60, 0x2c, 0x46, 0x38, 0x26, 0xfa, 0xab, 0xb7, 0xb6, 0x59, 0x68, 0x88, 0x38, 0x74,
		0x3b, 0x0c, 0x02, 0x63, 0xbc, 0x0e, 0x55, 0x2f, 0x38, 0xd1, 0x73, 0x86, 0x5e, 0x4c, 0xea, 0x38,
		0xad, 0x72, 0x89, 0x86, 0xd3, 0xb5, 0xa0, 0xb6, 0xa0, 0xb6, 0xa0, 0xb6, 0xa0, 0xb6, 0x8c, 0x53,
		0x5b, 0xfb, 0x15, 0x06, 0xb9, 0xd5, 0x80, 0xdc, 0x82, 0xdc, 0x82, 0xdc, 0x32, 0x5b, 0x6e, 0x55,
		0x2b, 0x87, 0xd5, 0xc3, 0x7a, 0xa3, 0x72, 0x08, 0xd5, 0x05, 0xd5, 0x05, 0xd5, 0x15, 0xf1, 0x65,
		0xda, 0x46, 0x48, 0xb5, 0x85, 0xcc, 0x80, 0xcc, 0x80, 0xcc, 0x30, 0x53, 0x66, 0x20, 0xd5, 0x76,
		0xc3, 0x1b, 0x78, 0x8d, 0x5c, 0xdb, 0x4d, 0x6f, 0x21, 0x63, 0x43, 0x9b, 0xfc, 0x25, 0xdc, 0xb2,
		0x35, 0xae, 0x41, 0xce, 0x2d, 0x31, 0x0f, 0x46, 0x17, 0x11, 0x15, 0x5d, 0x44, 0x08, 0x3a, 0xcd,
		0x48, 0xac, 0x96, 0x7e, 0xa3, 0x91, 0x2d, 0x8c, 0x28, 0xe9, 0x74, 0x6d, 0x61, 0x41, 0xb6, 0xf4,
		0xb1, 0xce, 0xdc, 0x28, 0x3e, 0x8e, 0x63, 0xb9, 0xd5, 0x97, 0xd6, 0xb9, 0xeb, 0x9f, 0x7a, 0x62,
		0xc4, 0x34, 0x25, 0xc7, 0x29, 0xac, 0x73, 0xe7, 0x61, 0xea, 0xca, 0xe5, 0x83, 0x6a, 0xb5, 0xde,
		0xa8, 0x56, 0x4b, 0x8d, 0xfd, 0x46, 0xe9, 0xb0, 0x56, 0x2b, 0xd7, 0x65, 0xd2, 0x1d, 0xeb, 0x22,
		0xec, 0x8a, 0x50, 0x74, 0xdf, 0x8d, 0x9e, 0x81, 0x3f, 0xf4, 0x3c, 0x8a, 0x4b, 0x7f, 0x8a, 0x44,
		0x28, 0x35, 0xb0, 0x22, 0xcb, 0xf4, 0x88, 0xe0, 0x47, 0x19, 0xec, 0x58, 0x52, 0xdb, 0x20, 0xac,
		0xd1, 0xa5, 0x48, 0x0e, 0xe2, 0x6d, 0x8e, 0x4f, 0x9b, 0x5d, 0x61, 0x43, 0xf3, 0x92, 0x6d, 0x56,
		0x6a, 0xcc, 0x69, 0xb3, 0x47, 0xb9, 0xfe, 0x03, 0xd8, 0xe0, 0xe6, 0x5b, 0x9d, 0x49, 0xd4, 0x69,
		0xb3, 0x9b, 0x9e, 0xb1, 0xe0, 0xf4, 0x7a, 0x1b, 0x9a, 0x83, 0x9c, 0xe6, 0x1c, 0xd2, 0x42, 0x6a,
		0x32, 0x43, 0x67, 0x04, 0x21, 0x32, 0xd9, 0xa1, 0x30, 0xb2, 0x90, 0x17, 0x59, 0x68, 0x8b, 0x26,
		0x84, 0xa5, 0x16, 0x12, 0x65, 0x35, 0xbf, 0xb0, 0x9c, 0x61, 0x7c, 0x27, 0xfc, 0xd8, 0xed, 0x24,
		0xf8, 0x6a, 0x77, 0xee, 0x44, 0xe7, 0x2f, 0x79, 0xb6, 0x92, 0x35, 0xba, 0x58, 0xb4, 0x8a, 0xa4,
		0xa7, 0x4b, 0x91, 0xf5, 0x64, 0x8d, 0xac, 0x4f, 0x8e, 0xf3, 0x6d, 0xc9, 0xa2, 0xf5, 0x52, 0x0f,
		0x18, 0xa4, 0x1f, 0x28, 0x50, 0x1c, 0x20, 0x10, 0x1e, 0x18, 0x50, 0x1d, 0x10, 0x90, 0x1f, 0x08,
		0x90, 0x1f, 0x00, 0xd0, 0x06, 0xfc, 0xf5, 0x92, 0xca, 0xd2, 0x03, 0xf8, 0x84, 0x05, 0x82, 0x92,
		0x0b, 0x02, 0x75, 0x97, 0x7c, 0x8f, 0xfd, 0x20, 0xb6, 0x83, 0x8e, 0xdd, 0x09, 0xee, 0x07, 0xa1,
		0x88, 0x22, 0xd1, 0xb5, 0x3d, 0xe1, 0xf4, 0x46, 0x8b, 0x3c, 0xe9, 0x22, 0x8a, 0x24, 0x90, 0xb3,
		0x4e, 0xe4, 0x0f, 0xec, 0x71, 0x29, 0xbc, 0x1d, 0xf8, 0xf6, 0xa0, 0x32, 0xb0, 0x3d, 0xd7, 0xff,
		0x2b, 0x92, 0xef, 0x82, 0x97, 0xae, 0x04, 0x37, 0x0c, 0x37, 0x0c, 0x37, 0x0c, 0x37, 0x0c, 0x37,
		0x0c, 0x37, 0xbc, 0xad, 0x6e, 0xb8, 0xe7, 0x44, 0xb1, 0xdd, 0xf3, 0x82, 0xa0, 0xeb, 0xfa, 0x7d,
		0xf9, 0xbe, 0x77, 0xf6, 0xf2, 0x70, 0xb8, 0x70, 0xb8, 0x70, 0xb8, 0x70, 0xb8, 0x70, 0xb8, 0x70,
		0xb8, 0xdb, 0xea, 0x70, 0xef, 0x84, 0xe7, 0x05, 0xf6, 0xc0, 0xe9, 0xd2, 0x38, 0xdc, 0xd9, 0xcb,
		0xeb, 0xec, 0x70, 0xaf, 0x6f, 0xae, 0x9a, 0xef, 0x6f, 0xe0, 0x72, 0xe1, 0x72, 0xe1, 0x72, 0xe1,
		0x72, 0x37, 0xc6, 0x3a, 0x3b, 0x1e, 0xad, 0x43, 0xe0, 0x7d, 0xab, 0x12, 0xaf, 0x79, 0xea, 0x0f,
		0xef, 0xe5, 0xbf, 0x0e, 0x37, 0xc1, 0x75, 0x1c, 0xca, 0xf4, 0x26, 0x33, 0x57, 0x2f, 0x25, 0x59,
		0xe4, 0x63, 0xb0, 0x26, 0x28, 0x85, 0x2a, 0x8f, 0x2e, 0x7f, 0x76, 0x71, 0x71, 0x4d, 0x91, 0xa0,
		0x6e, 0x55, 0x92, 0x6e, 0xd3, 0x27, 0xc7, 0x97, 0x37, 0xcd, 0xcf, 0x24, 0x0b, 0xec, 0x8f, 0x16,
		0x38, 0x69, 0x5e, 0x1f, 0xbf, 0x3b, 0x3b, 0xb5, 0xf4, 0x9e, 0x52, 0x14, 0x34, 0x13, 0xbc, 0x21,
		0x30, 0x91, 0xec, 0x06, 0x4b, 0x9f, 0xef, 0x32, 0xa6, 0x1f, 0xe9, 0xed, 0x3d, 0x2a, 0xec, 0x13,
		0x5c, 0x7d, 0x6c, 0x7b, 0xd2, 0x47, 0xde, 0x4c, 0x73, 0x9c, 0xa3, 0x42, 0x09, 0x09, 0xbc, 0x90,
		0x16, 0xd4, 0xd2, 0xc2, 0x75, 0xbb, 0x76, 0xec, 0x7d, 0x93, 0x2f, 0x2a, 0x26, 0x17, 0xd6, 0x59,
		0x4e, 0x24, 0x39, 0xc1, 0x50, 0x13, 0x50, 0x13, 0x50, 0x13, 0x50, 0x13, 0xeb, 0x58, 0xec, 0xd6,
		0x04, 0xf0, 0xc4, 0x43, 0x1c, 0x3a, 0xf6, 0xd0, 0x8f, 0x62, 0xe7, 0xd6, 0x93, 0x7c, 0x33, 0x43,
		0xd1, 0x13, 0xa1, 0xf0, 0x3b, 0xf2, 0x9b, 0xea, 0x10, 0xce, 0xf7, 0xbb, 0xfa, 0xf0, 0xbe, 0x7e,
		0x50, 0xa9, 0x1c, 0x15, 0x9a, 0xd7, 0x76, 0xf3, 0xba, 0x90, 0xcc, 0x47, 0xb6, 0x27, 0x05, 0x0a,
		0x7b, 0x85, 0x9b, 0xb3, 0xcf, 0x85, 0x86, 0xe1, 0xc3, 0xff, 0x9e, 0x9f, 0x4b, 0x9e, 0xe6, 0xff,
		0xbd, 0xea, 0xc1, 0xe9, 0x5e, 0x08, 0x29, 0xed, 0x6a, 0x2d, 0x70, 0xf9, 0x1c, 0x71, 0xf9, 0xd4,
		0x8a, 0x09, 0xc8, 0xfc, 0xe4, 0xca, 0x3a, 0xb3, 0xf9, 0x12, 0x98, 0x3c, 0x98, 0x3c, 0x98, 0x3c,
		0x98, 0xfc, 0x3a, 0x16, 0x1b, 0x8d, 0xa3, 0xe1, 0x04, 0x44, 0xfe, 0x60, 0x6b, 0x88, 0x7c, 0x14,
		0x3b, 0xf1, 0x30, 0x32, 0x89, 0xc5, 0x77, 0xc5, 0x20, 0x14, 0x1d, 0x27, 0x26, 0x99, 0xac, 0xc6,
		0xc9, 0xd5, 0xd3, 0x5b, 0x9f, 0x27, 0xa2, 0x3e, 0xf5, 0x6c, 0x40, 0xc7, 0x41, 0xc7, 0xcd, 0xa5,
		0xe3, 0xb6, 0xdb, 0xa5, 0x63, 0xe4, 0xa3, 0x8b, 0x83, 0xb0, 0x82, 0xb0, 0x82, 0xb0, 0x6e, 0x19,
		0x61, 0x1d, 0xba, 0x7e, 0x5c, 0xae, 0x13, 0x10, 0xd6, 0xba, 0xc4, 0x4b, 0xd2, 0xf4, 0x4a, 0x27,
		0x20, 0x84, 0x94, 0xbd, 0xd0, 0xa9, 0x7b, 0x9f, 0xb3, 0xf5, 0xad, 0xa6, 0xef, 0x53, 0x4d, 0xd1,
		0x37, 0x99, 0xb2, 0x77, 0x79, 0xf6, 0x68, 0xeb, 0xb5, 0xda, 0x7e, 0x0d, 0x8f, 0x17, 0xb4, 0x5b,
		0x73, 0x89, 0x9e, 0xbf, 0xb3, 0x36, 0x1c, 0xb2, 0x69, 0xa8, 0xdd, 0x7f, 0xfe, 0xc4, 0x80, 0x2b,
		0x90, 0xf3, 0xe6, 0xc9, 0x79, 0x4f, 0x7c, 0x13, 0x9e, 0xdd, 0x71, 0x06, 0xce, 0xad, 0xeb, 0xb9,
		0xf1, 0xa3, 0x7c, 0x4d, 0x3f, 0xb7, 0x82, 0xce, 0xa7, 0x6d, 0x67, 0xa7, 0x9f, 0x4f, 0xcf, 0xda,
		0xe5, 0x76, 0x05, 0xa7, 0x6e, 0x08, 0x62, 0x20, 0x88, 0x81, 0x20, 0xc6, 0xfa, 0x88, 0x87, 0x2a,
		0x1c, 0xc2, 0x2a, 0x9c, 0x14, 0xa7, 0xe9, 0xca, 0x70, 0x92, 0xeb, 0x57, 0xc8, 0x0a, 0x71, 0x24,
		0xfb, 0x19, 0xa2, 0x48, 0x03, 0x65, 0xa5, 0xcc, 0xe4, 0x09, 0x92, 0x08, 0xff, 0xa9, 0xfb, 0x4b,
		0x53, 0x88, 0x33, 0xb1, 0x8f, 0xa3, 0x42, 0x19, 0xf5, 0x2c, 0x60, 0xe9, 0xd4, 0x2c, 0xfd, 0xde,
		0x79, 0xb0, 0x45, 0xe7, 0x7e, 0x60, 0x0f, 0x9c, 0xf8, 0x8e, 0xa0, 0x31, 0xdc, 0x8b, 0xeb, 0x83,
		0xb5, 0x82, 0xb5, 0x82, 0xb5, 0x6e, 0x19, 0x6b, 0x1d, 0xba, 0x7e, 0x7c, 0x40, 0x40, 0x58, 0x6b,
		0x38, 0x79, 0x93, 0x7c, 0x71, 0x9c, 0xbc, 0x29, 0xe2, 0xc3, 0x05, 0xb6, 0x93, 0xb7, 0x4a, 0x0d,
		0xe7, 0x6e, 0x7c, 0x5c, 0xb9, 0x80, 0xf8, 0x38, 0x98, 0xf7, 0x52, 0xe6, 0xed, 0xde, 0x0f, 0xef,
		0x6d, 0x27, 0x14, 0x8e, 0xed, 0x74, 0xbb, 0xc9, 0x47, 0xa5, 0x61, 0xe0, 0x8b, 0xd6, 0xd1, 0x39,
		0x56, 0xbe, 0x8f, 0x18, 0x39, 0xd4, 0x06, 0xd4, 0x06, 0xd4, 0x06, 0xd4, 0x06, 0xd4, 0x06, 0x08,
		0x29, 0xd4, 0x06, 0xd4, 0x06, 0xd4, 0x06, 0xd4, 0xc6, 0x26, 0x1f, 0xd3, 0x17, 0xb1, 0x7c, 0x69,
		0x31, 0xba, 0x28, 0x38, 0x36, 0x38, 0x36, 0x38, 0xf6, 0x96, 0x71, 0x6c, 0x79, 0x2f, 0x7e, 0x61,
		0xa6, 0xf4, 0x5b, 0xe2, 0x35, 0x2f, 0x9d, 0x38, 0x16, 0xa1, 0x2f, 0x9d, 0x64, 0x5b, 0x5f, 0x1c,
		0xbb, 0x77, 0x6c, 0x7f, 0x28, 0xd9, 0x87, 0xad, 0xef, 0x95, 0xa7, 0x9d, 0xaf, 0x5f, 0xf7, 0xa6,
		0x7f, 0x52, 0x7d, 0xda, 0xfd, 0xbe, 0xff, 0xf6, 0xf0, 0xe9, 0xc5, 0x8f, 0x2b, 0x4f, 0xf2, 0x8c,
		0xac, 0x25, 0xf3, 0x2e, 0x5d, 0x5c, 0x37, 0xff, 0x49, 0x76, 0xab, 0xfe, 0xb5, 0xe6, 0xbd, 0xfa,
		0x2f, 0x2b, 0xa7, 0x24, 0x06, 0xc3, 0xed, 0x7f, 0xb2, 0xd8, 0x56, 0x0f, 0xb7, 0x47, 0x11, 0xcb,
		0x0b, 0x17, 0xd3, 0xf4, 0x47, 0x98, 0x94, 0x10, 0x7e, 0xc7, 0x2b, 0x5c, 0x84, 0x7d, 0xc7, 0x77,
		0xff, 0x27, 0xf9, 0x63, 0xa1, 0x17, 0x84, 0x85, 0xeb, 0xd8, 0xf1, 0xbb, 0x4e, 0xd8, 0x4d, 0x7f,
		0xf6, 0xb6, 0xd0, 0xf4, 0x7b, 0x41, 0x78, 0x9f, 0xfc, 0xe1, 0xab, 0x1f, 0x8b, 0xce, 0x9d, 0x1f,
		0x78, 0x41, 0xff, 0xb1, 0x60, 0x17, 0x2e, 0x06, 0xc2, 0x2f, 0x5c, 0x3f, 0x46, 0xb1, 0xb8, 0x8f,
		0x0a, 0xc9, 0x65, 0x3b, 0x81, 0xef, 0x8b, 0x44, 0x3d, 0xda, 0xe9, 0xa8, 0xfc, 0x42, 0x24, 0xc2,
		0x6f, 0x6e, 0x47, 0x7c, 0xf5, 0x4f, 0x44, 0xcf, 0xf5, 0xdd, 0x64, 0x1d, 0xbb, 0xd0, 0xbc, 0xbe,
		0x28, 0x16, 0x9a, 0xa7, 0xef, 0x0b, 0x07, 0xfb, 0xd5, 0x83, 0xa3, 0x4a, 0xa9, 0x54, 0xd9, 0x43,
		0xfd, 0x8c, 0x5a, 0x02, 0xb7, 0x90, 0xc8, 0x69, 0x6b, 0x2c, 0x08, 0x16, 0x20, 0x58, 0x60, 0x5e,
		0xb0, 0x60, 0x10, 0xb8, 0x34, 0x4d, 0xae, 0x27, 0x17, 0x46, 0x93, 0x6b, 0x04, 0x47, 0x10, 0x1c,
		0x41, 0x70, 0x24, 0x97, 0xc1, 0x11, 0x34, 0xb9, 0xde, 0x56, 0xcd, 0x72, 0xf5, 0xe1, 0x7d, 0xbd,
		0xb2, 0x5f, 0x39, 0x2a, 0x5c, 0x0e, 0xc3, 0xbe, 0x28, 0x5c, 0x84, 0x6e, 0xdf, 0xf5, 0x9d, 0x38,
		0x08, 0x0b, 0xcd, 0xae, 0xf0, 0x63, 0xb7, 0xe7, 0x76, 0xc6, 0xa4, 0xf4, 0xe6, 0xec, 0x73, 0x42,
		0x4c, 0x93, 0x72, 0xef, 0x71, 0x13, 0xe5, 0xf2, 0x3e, 0xa4, 0x85, 0x8e, 0xd2, 0x62, 0xd3, 0x67,
		0x0a, 0x05, 0x00, 0x05, 0x60, 0x9e, 0x02, 0xf8, 0x8f, 0x70, 0xfb, 0x77, 0xb1, 0xe8, 0x26, 0xb5,
		0x3b, 0xf2, 0x75, 0xc0, 0xec, 0xe5, 0xa1, 0x06, 0xa0, 0x06, 0xa0, 0x06, 0xa0, 0x06, 0xa0, 0x06,
		0x4c, 0x56, 0x03, 0xdb, 0xec, 0x71, 0xdf, 0x28, 0x7c, 0x00, 0xb2, 0x6f, 0xbc, 0x15, 0x75, 0xee,
		0xc4, 0xbd, 0x33, 0x70, 0xe2, 0xbb, 0x91, 0xfd, 0x16, 0x83, 0x81, 0xf0, 0x3b, 0x89, 0x8f, 0xb0,
		0xfd, 0x71, 0xfc, 0xdb, 0x9e, 0x34, 0xd3, 0x2d, 0xbe, 0xfc, 0x41, 0x34, 0xf7, 0x93, 0xe2, 0x20,
		0x0c, 0xe2, 0xa0, 0x13, 0x78, 0x51, 0xf6, 0x5d, 0x71, 0x04, 0x24, 0xc5, 0xbe, 0x17, 0xdc, 0x3a,
		0x5e, 0x71, 0x7c, 0xe5, 0xcd, 0x60, 0x65, 0xfd, 0xdb, 0xbf, 0xc1, 0xad, 0xb7, 0xfa, 0xa1, 0xd3,
		0x11, 0xbd, 0xa1, 0x67, 0x87, 0x22, 0x8a, 0x9d, 0x70, 0xf3, 0xf4, 0xaa, 0x0c, 0x32, 0xe6, 0xae,
		0xbc, 0xa1, 0x81, 0x4c, 0xf0, 0x62, 0xc3, 0xcb, 0xc8, 0x22, 0x0a, 0x32, 0x09, 0x02, 0x01, 0x31,
		0x90, 0x4d, 0x08, 0xc8, 0x88, 0x00, 0x19, 0x01, 0xa0, 0x71, 0xfc, 0x6a, 0x41, 0xf2, 0xc4, 0x95,
		0x93, 0x74, 0x61, 0x75, 0x26, 0x6f, 0x81, 0x64, 0x49, 0x94, 0x5e, 0x57, 0xae, 0x46, 0x28, 0x43,
		0x23, 0x40, 0x23, 0x40, 0x23, 0x48, 0x8a, 0x2f, 0xb8, 0x92, 0xf3, 0xb6, 0x84, 0xef, 0xdc, 0x7a,
		0xa2, 0x2b, 0xdf, 0xac, 0x26, 0x6f, 0xc2, 0x64, 0x01, 0xc9, 0xcf, 0x9c, 0x22, 0xd0, 0x42, 0x11,
		0x70, 0x91, 0x1c, 0x78, 0x21, 0x0a, 0xc0, 0x90, 0x81, 0x2c, 0x25, 0xd8, 0x32, 0x80, 0x2e, 0x35,
		0xf8, 0xb2, 0x81, 0x30, 0x1b, 0x18, 0xf3, 0x80, 0xb2, 0x5c, 0x70, 0x96, 0x0c, 0xd2, 0x74, 0x01,
		0x1d, 0x86, 0xc0, 0x0e, 0x51, 0x80, 0x87, 0xea, 0x16, 0x13, 0x05, 0x7c, 0xf8, 0x02, 0x3f, 0xf2,
		0x2d, 0x59, 0xe2, 0x2d, 0xb6, 0xee, 0x84, 0x37, 0x10, 0xa1, 0x1d, 0xf8, 0xde, 0x23, 0x1d, 0x43,
		0x98, 0x5e, 0x04, 0x5e, 0x12, 0x5e, 0x12, 0x5e, 0x12, 0x5e, 0x12, 0x5e, 0x52, 0xe6, 0x2e, 0x09,
		0x93, 0xa4, 0xb2, 0x35, 0xe8, 0x92, 0xa5, 0x26, 0x5f, 0x34, 0xa0, 0x52, 0x78, 0x91, 0x3c, 0x55,
		0xa8, 0xed, 0x97, 0xea, 0x47, 0x85, 0xab, 0x71, 0xd8, 0xbb, 0x70, 0xed, 0xf6, 0x7d, 0xc7, 0x73,
		0xfd, 0xfe, 0x73, 0x5e, 0xcd, 0xff, 0x2e, 0x24, 0xff, 0xac, 0xb1, 0xf0, 0x9f, 0x7d, 0xf5, 0xb3,
		0x7f, 0x47, 0x04, 0x4e, 0x1c, 0x48, 0xbb, 0x08, 0x71, 0xa9, 0x53, 0xab, 0xd8, 0xc1, 0x77, 0x21,
		0x08, 0xcb, 0xb5, 0x00, 0xb2, 0x7d, 0x3f, 0xbd, 0x31, 0xe3, 0xaa, 0x2d, 0xa8, 0x87, 0xed, 0x55,
		0x0f, 0xae, 0x1f, 0x8b, 0xb0, 0xe7, 0x74, 0x84, 0x1d, 0xbb, 0xf7, 0xc2, 0x16, 0x0f, 0x03, 0x37,
		0x4c, 0xee, 0x76, 0x44, 0x27, 0x26, 0x7e, 0xb2, 0x26, 0xb4, 0x05, 0xb4, 0x05, 0xb4, 0x05, 0xb4,
		0x85, 0x6c, 0xbc, 0xa9, 0x57, 0x09, 0x95, 0x45, 0x95, 0xe0, 0xd2, 0x34, 0x9d, 0xdf, 0x18, 0x68,
		0x3a, 0x65, 0x27, 0xb8, 0x6c, 0x91, 0x49, 0xdb, 0xb0, 0xc3, 0x4a, 0x65, 0x7f, 0xbf, 0x51, 0x29,
		0xed, 0xd7, 0x0f, 0x6a, 0xd5, 0x46, 0xa3, 0x76, 0x50, 0x3a, 0x20, 0xe6, 0xa1, 0x5c, 0xed, 0xc4,
		0x9e, 0x8d, 0xf8, 0xb9, 0xad, 0xd8, 0x08, 0x87, 0xe8, 0xd8, 0x2a, 0xa1, 0x12, 0xa2, 0x6c, 0x21,
		0xf7, 0x0a, 0x9b, 0x68, 0xe4, 0xd8, 0x26, 0x68, 0x5a, 0xcd, 0x41, 0xc2, 0x20, 0xb4, 0x83, 0xd0,
		0x0e, 0x42, 0x3b, 0x08, 0xed, 0x00, 0x17, 0x11, 0xda, 0xc9, 0x45, 0x68, 0x27, 0xe4, 0x8a, 0xe7,
		0x84, 0x08, 0xe2, 0x20, 0x88, 0x83, 0x20, 0x0e, 0x82, 0x38, 0x72, 0x2d, 0x7e, 0xe8, 0xfa, 0x71,
		0xb9, 0x4e, 0x18, 0xc5, 0xa9, 0x23, 0x8a, 0xa3, 0x28, 0x8a, 0x53, 0x82, 0x3e, 0xdf, 0xf6, 0xa0,
		0x4d, 0xbd, 0x56, 0xdb, 0xaf, 0xc1, 0x0c, 0x20, 0x47, 0x10, 0xa6, 0x41, 0x98, 0x06, 0x61, 0x1a,
		0x84, 0x69, 0x80, 0x8b, 0x08, 0xd3, 0x6c, 0x47, 0x98, 0xc6, 0x0f, 0x7c, 0x7b, 0xe0, 0x39, 0xbe,
		0x2f, 0xba, 0xc4, 0x49, 0xfc, 0x73, 0x2b, 0x21, 0x50, 0x83, 0x40, 0x0d, 0x02, 0x35, 0x08, 0xd4,
		0x48, 0xb5, 0x78, 0x64, 0xf2, 0x43, 0x47, 0xac, 0xa0, 0x23, 0x1a, 0xbf, 0x60, 0x91, 0xd0, 0x07,
		0xa6, 0xea, 0x83, 0x5f, 0x3e, 0x59, 0xd3, 0x78, 0xff, 0x5b, 0x08, 0x76, 0xbc, 0x90, 0x10, 0xec,
		0x10, 0xec, 0x10, 0xec, 0xdb, 0x2c, 0xd8, 0xd3, 0x6e, 0x7b, 0x49, 0xb2, 0x03, 0x9d, 0x58, 0x9f,
		0x59, 0xc5, 0xa4, 0xc6, 0x3c, 0xfb, 0x25, 0x74, 0xe5, 0x41, 0x94, 0x02, 0x51, 0x0a, 0x44, 0x29,
		0x74, 0x8e, 0x52, 0x20, 0x9d, 0x84, 0x53, 0x88, 0x20, 0x9d, 0x64, 0x23, 0x9b, 0x45, 0x3a, 0xc9,
		0x8a, 0x26, 0x80, 0x74, 0x12, 0xa8, 0x30, 0xd5, 0x3e, 0x0c, 0x61, 0x60, 0x44, 0xa7, 0x10, 0x9d,
		0x42, 0x74, 0x0a, 0xb8, 0x88, 0xe8, 0x14, 0xcb, 0x95, 0x74, 0x1f, 0xd0, 0xc2, 0x3a, 0x2f, 0xe4,
		0xe5, 0x6c, 0x0c, 0x29, 0x03, 0x44, 0xe4, 0x3d, 0x2f, 0x19, 0xb3, 0xd7, 0xa2, 0xd8, 0x89, 0x85,
		0xfc, 0x01, 0x03, 0xe3, 0xcb, 0x6a, 0x3e, 0x5f, 0xa0, 0x82, 0xf9, 0x02, 0x26, 0x05, 0xd1, 0x30,
		0x5f, 0x00, 0xf3, 0x05, 0x30, 0x5f, 0x00, 0x27, 0x19, 0x38, 0xc9, 0x50, 0x08, 0xc2, 0xec, 0x5a,
		0x0f, 0x27, 0x19, 0xc8, 0xb7, 0xa4, 0xd5, 0x4d, 0x68, 0xa3, 0x0f, 0x67, 0x00, 0x67, 0x00, 0x67,
		0x00, 0x67, 0x80, 0xe4, 0xfb, 0x54, 0xcb, 0xe0, 0xd4, 0xe5, 0x75, 0x96, 0x82, 0x53, 0x97, 0xe5,
		0x88, 0x8b, 0x53, 0x17, 0x9c, 0xba, 0xac, 0xae, 0xee, 0xd1, 0x2d, 0x9e, 0x04, 0xa8, 0xd0, 0x2d,
		0x1e, 0x14, 0x1a, 0x14, 0x1a, 0x14, 0x9a, 0x8b, 0x42, 0xa3, 0x5b, 0x3c, 0x23, 0x1b, 0x45, 0xb7,
		0x78, 0xc9, 0x46, 0x8c, 0x6e, 0xf1, 0x9b, 0xda, 0x04, 0xba, 0xc5, 0x83, 0xa9, 0x23, 0x82, 0x81,
		0x08, 0x06, 0x22, 0x18, 0x88, 0x60, 0x00, 0x17, 0xf3, 0x1d, 0xc1, 0x40, 0x53, 0x74, 0xc4, 0x2a,
		0x10, 0xab, 0x40, 0xac, 0xc2, 0xd4, 0x58, 0x05, 0xaa, 0x58, 0x73, 0x1b, 0xac, 0x40, 0x15, 0xeb,
		0xd6, 0xc7, 0x26, 0x50, 0xc5, 0x0a, 0xd6, 0x8d, 0x68, 0x04, 0xa2, 0x11, 0x88, 0x46, 0x20, 0x1a,
		0x01, 0x5c, 0xcc, 0x63, 0x34, 0x02, 0xbd, 0xbf, 0x11, 0x8f, 0x40, 0x3c, 0x02, 0xf1, 0x88, 0xbc,
		0xc4, 0x23, 0x90, 0x7e, 0x0c, 0xba, 0xbc, 0x02, 0x5d, 0x46, 0xef, 0xef, 0xbc, 0xd2, 0x60, 0xf4,
		0xfe, 0x86, 0x2e, 0xc5, 0x0b, 0x09, 0x5d, 0x0a, 0x5d, 0x6a, 0xa4, 0x2e, 0x45, 0x8b, 0xeb, 0x9f,
		0x5e, 0x1c, 0x2d, 0xae, 0x21, 0xc6, 0x21, 0xc6, 0x21, 0xc6, 0xf5, 0x16, 0xe3, 0x48, 0x0e, 0xe0,
		0xe4, 0xdb, 0x48, 0x0e, 0xd8, 0xc8, 0x66, 0x91, 0x1c, 0xb0, 0xa2, 0x09, 0x20, 0x39, 0x00, 0x62,
		0x43, 0xb5, 0x0f, 0x43, 0xb4, 0x13, 0x41, 0x18, 0x04, 0x61, 0x10, 0x84, 0x41, 0x10, 0x46, 0xee,
		0x95, 0xd0, 0xc9, 0xf9, 0x67, 0x9d, 0x9c, 0xc7, 0x0d, 0x8a, 0x75, 0x69, 0xe4, 0xfc, 0x46, 0xe1,
		0x83, 0x96, 0xfd, 0x80, 0xd5, 0x3e, 0x58, 0x4b, 0x4a, 0x4f, 0xec, 0x70, 0xd8, 0x89, 0xfd, 0xd4,
		0xed, 0x7e, 0x1c, 0xef, 0xa8, 0x99, 0x6e, 0xa8, 0x7d, 0x99, 0x6e, 0xa3, 0xdd, 0x8c, 0xdc, 0xa8,
		0xfd, 0x7b, 0xb2, 0x8d, 0xf6, 0xef, 0xe9, 0x36, 0x52, 0xc0, 0xdd, 0xcc, 0xb0, 0xd6, 0x37, 0x87,
		0x0d, 0x4c, 0xc1, 0x72, 0xfb, 0x03, 0x3b, 0xba, 0x0b, 0xc2, 0xb8, 0x33, 0x8c, 0x37, 0xef, 0xc4,
		0xf2, 0x5c, 0xc2, 0x34, 0x73, 0xd9, 0x0d, 0x4d, 0x55, 0x4e, 0x27, 0x70, 0x69, 0x31, 0x48, 0x99,
		0x31, 0x47, 0x82, 0x18, 0xa3, 0x6c, 0x22, 0x46, 0x16, 0x43, 0x24, 0x63, 0x55, 0x34, 0x31, 0x42,
		0xb5, 0x70, 0x2d, 0xab, 0x73, 0xb7, 0xe5, 0xf4, 0x5c, 0xf9, 0x8d, 0xff, 0x47, 0x17, 0xd5, 0xbc,
		0xed, 0x7f, 0x09, 0x6d, 0xff, 0x89, 0x54, 0x18, 0xda, 0xfe, 0xeb, 0x4e, 0xe6, 0xa5, 0xb7, 0xfd,
		0x77, 0x7a, 0xae, 0x9d, 0x32, 0x25, 0xa2, 0x03, 0xde, 0x6c, 0x05, 0x9c, 0x6f, 0xe2, 0x7c, 0x53,
		0x1d, 0x0c, 0xb1, 0x47, 0x80, 0x70, 0xbe, 0xc9, 0x71, 0xbe, 0xe9, 0x09, 0xa7, 0x17, 0x8a, 0x1e,
		0x65, 0xb2, 0x31, 0x41, 0x2f, 0x28, 0xeb, 0x32, 0x55, 0xd7, 0x7b, 0x7b, 0xe9, 0x4c, 0xaa, 0x62,
		0x06, 0x93, 0x5b, 0x90, 0x59, 0xd4, 0x99, 0x60, 0x2c, 0x91, 0xcb, 0x49, 0xaf, 0x4f, 0xe3, 0x70,
		0xca, 0x70, 0x38, 0x70, 0x38, 0x70, 0x38, 0x7a, 0x3a, 0x1c, 0xd9, 0xfc, 0x98, 0x9e, 0x27, 0x73,
		0xf1, 0x65, 0x62, 0xde, 0x4c, 0x0e, 0x67, 0x1c, 0xb0, 0xc6, 0x08, 0x6f, 0x5c, 0x30, 0xc7, 0x0e,
		0x77, 0xec, 0xb0, 0xc7, 0x0b, 0x7f, 0x34, 0x30, 0x48, 0x04, 0x87, 0xf4, 0x3c, 0x7c, 0xee, 0x8d,
		0x71, 0xbb, 0xc2, 0x8f, 0xdd, 0xf8, 0x91, 0x86, 0x93, 0xcf, 0x71, 0x31, 0xc2, 0xe4, 0x27, 0xab,
		0x99, 0x7e, 0x94, 0x77, 0x4e, 0xc4, 0xf0, 0x7e, 0x4e, 0x6e, 0xe0, 0xf1, 0x87, 0x66, 0xfb, 0xe6,
		0xcf, 0xcb, 0x53, 0xea, 0xd7, 0x33, 0x49, 0x21, 0x8b, 0xc8, 0xf2, 0x69, 0xa6, 0xbf, 0xbe, 0x93,
		0xaf, 0x30, 0x73, 0x07, 0x9b, 0x97, 0x9f, 0xab, 0x16, 0xf9, 0x92, 0x4f, 0x6f, 0x73, 0x78, 0xdf,
		0xea, 0x0c, 0xf7, 0x8d, 0x74, 0x85, 0x16, 0x00, 0xbf, 0xc0, 0x30, 0x5f, 0x3d, 0x5b, 0x87, 0x6d,
		0xce, 0x3a, 0xdd, 0x63, 0x20, 0x78, 0x04, 0x96, 0x7f, 0x67, 0xc7, 0x94, 0x2e, 0xf7, 0xb9, 0xa3,
		0x47, 0xba, 0x10, 0xb4, 0x02, 0xb4, 0x02, 0xb4, 0x02, 0xb4, 0x02, 0xb4, 0xc2, 0x36, 0x69, 0x85,
		0xcb, 0xe3, 0x9b, 0x7f, 0xb4, 0xaf, 0x4f, 0x6f, 0x3e, 0x5d, 0xb6, 0x2f, 0xaf, 0x2e, 0x6e, 0x2e,
		0xde, 0x5f, 0x9c, 0x41, 0x36, 0x48, 0xb8, 0x99, 0x67, 0x27, 0x97, 0x10, 0x10, 0x1b, 0xdd, 0xc1,
		0xab, 0xeb, 0xcf, 0xb8, 0x85, 0x9b, 0xdd, 0xc2, 0xeb, 0x2b, 0x88, 0xb1, 0x7c, 0x78, 0xd4, 0x33,
		0x37, 0x8a, 0x8f, 0xe3, 0x38, 0xa4, 0xf5, 0xaa, 0xe7, 0xae, 0x7f, 0xea, 0x89, 0x11, 0xa9, 0x21,
		0x2e, 0xd2, 0xb3, 0xce, 0x9d, 0x87, 0xa9, 0x95, 0xca, 0x07, 0xd5, 0x6a, 0xbd, 0x51, 0xad, 0x96,
		0x1a, 0xfb, 0x8d, 0xd2, 0x61, 0xad, 0x56, 0xae, 0x93, 0x7a, 0xda, 0x8b, 0xb0, 0x2b, 0x42, 0xd1,
		0x7d, 0xf7, 0x68, 0x1d, 0x15, 0xfc, 0xa1, 0xe7, 0x71, 0x2c, 0xf5, 0x29, 0x4a, 0x86, 0x44, 0xd0,
		0x55, 0x23, 0x22, 0x0c, 0xa0, 0x3e, 0x0c, 0xa0, 0xf5, 0xb9, 0x26, 0xf1, 0x83, 0xe4, 0xad, 0xf9,
		0x98, 0x29, 0x29, 0x28, 0x3a, 0x3d, 0x37, 0xcd, 0x81, 0xd9, 0x86, 0xd4, 0x97, 0x71, 0xdd, 0x12,
		0x59, 0xe6, 0xcb, 0xf8, 0xf2, 0x86, 0x25, 0xbe, 0x54, 0x90, 0xf8, 0xc2, 0x18, 0xe5, 0x41, 0xe2,
		0x4b, 0x1e, 0x1d, 0x04, 0x12, 0x5f, 0x5e, 0x0b, 0x63, 0x08, 0x66, 0x2b, 0x85, 0x37, 0x2e, 0x98,
		0x63, 0x87, 0x3b, 0x76, 0xd8, 0xe3, 0x85, 0x3f, 0x33, 0xa5, 0x37, 0x82, 0xd9, 0x6b, 0xac, 0x81,
		0xc4, 0x17, 0x49, 0x5f, 0x48, 0x7c, 0x31, 0xe5, 0xbe, 0x21, 0xf1, 0x85, 0x1b, 0xf0, 0x91, 0xc7,
		0x81, 0x3c, 0x0e, 0x50, 0x5f, 0x50, 0x5f, 0x50, 0x5f, 0x50, 0xdf, 0x6d, 0xa7, 0xbe, 0xc8, 0xe3,
		0xa0, 0xb9, 0x99, 0xc8, 0xe3, 0xd8, 0xf4, 0x0e, 0x22, 0x8f, 0x63, 0xe3, 0x5b, 0x88, 0x3c, 0x8e,
		0xbc, 0x78, 0x54, 0xe4, 0x71, 0x48, 0x5c, 0x3c, 0x9f, 0x79, 0x1c, 0x48, 0x4b, 0x90, 0x7a, 0x7d,
		0xc5, 0x69, 0x09, 0x12, 0x9b, 0x8c, 0xca, 0x7f, 0x9e, 0x7a, 0x35, 0xa6, 0xfa, 0x43, 0x3c, 0x12,
		0x9c, 0xe1, 0xd1, 0x40, 0x2e, 0x1d, 0xc4, 0xb2, 0x42, 0x2a, 0x21, 0x84, 0x12, 0x42, 0x26, 0xda,
		0x1a, 0xff, 0x0c, 0x72, 0x2c, 0xa9, 0xa9, 0x46, 0x2b, 0xb7, 0xc1, 0x3d, 0xee, 0xb9, 0xe8, 0xa9,
		0x6c, 0x7c, 0x4f, 0xe5, 0xd9, 0x96, 0xbd, 0x26, 0xb6, 0x32, 0xf6, 0x63, 0x11, 0xda, 0x9e, 0xf8,
		0x26, 0x3c, 0x7b, 0x10, 0x06, 0x03, 0xa7, 0x9f, 0x3c, 0x0a, 0x7b, 0x10, 0x78, 0x6e, 0xc7, 0x15,
		0x32, 0xbb, 0x1b, 0xff, 0x6a, 0x25, 0x34, 0x3c, 0xfe, 0xe5, 0x3d, 0x44, 0xc3, 0x63, 0x34, 0x3c,
		0xfe, 0xd9, 0x47, 0x92, 0xd6, 0xf0, 0x38, 0x79, 0x4d, 0xcb, 0x76, 0x1c, 0x8c, 0x5f, 0xd8, 0x8a,
		0xfc, 0xee, 0xc7, 0x73, 0x2b, 0xa0, 0x15, 0xb2, 0x46, 0xf0, 0x40, 0x05, 0x13, 0xe4, 0x70, 0x41,
		0x0e, 0x1b, 0xb4, 0xf0, 0xa1, 0xa7, 0xe2, 0x94, 0xde, 0x0a, 0x19, 0x5d, 0x29, 0x09, 0x21, 0x86,
		0x12, 0x6a, 0x18, 0x20, 0x87, 0x1a, 0x7a, 0xd8, 0x20, 0x88, 0x0d, 0x8a, 0x78, 0x20, 0xc9, 0x8c,
		0x30, 0x29, 0x59, 0x72, 0x7e, 0x77, 0x3c, 0xe0, 0xda, 0x76, 0xef, 0x07, 0x41, 0x18, 0x8f, 0x55,
		0xcb, 0x23, 0x7d, 0xb6, 0xd2, 0xe2, 0x65, 0x89, 0xec, 0x87, 0x72, 0x88, 0x77, 0xb6, 0xc8, 0xd5,
		0xe9, 0xff, 0xef, 0xf4, 0xfd, 0x4d, 0xfb, 0xea, 0xe2, 0xd3, 0xcd, 0x29, 0xcd, 0x71, 0x5d, 0x0b,
		0xa9, 0x5d, 0xdc, 0xfe, 0x60, 0x91, 0x5f, 0x08, 0x07, 0x81, 0x87, 0xd4, 0x2e, 0x8d, 0xfd, 0xc5,
		0x32, 0xbf, 0x91, 0x3c, 0x38, 0x1c, 0x44, 0x17, 0x78, 0x53, 0xbb, 0x26, 0x48, 0x3f, 0x86, 0x78,
		0xca, 0x1c, 0xd5, 0x19, 0x32, 0x5b, 0x25, 0x5c, 0xe3, 0xd4, 0x1f, 0xde, 0xd3, 0xbf, 0x9f, 0x37,
		0xc1, 0x75, 0x1c, 0xba, 0x7e, 0x9f, 0x7c, 0xa5, 0x64, 0xb5, 0x52, 0x52, 0x40, 0xf1, 0xfe, 0xfd,
		0xe9, 0xe5, 0xc4, 0x87, 0xd1, 0x67, 0xd4, 0x58, 0xe5, 0x64, 0xa4, 0x29, 0xb9, 0xe3, 0x24, 0x7e,
		0x99, 0xa6, 0x9e, 0x58, 0x33, 0x01, 0x1b, 0x86, 0xc7, 0x35, 0xf3, 0xa4, 0xc8, 0x07, 0x6a, 0xcf,
		0x13, 0x9c, 0xa3, 0x42, 0x99, 0xf6, 0x51, 0x01, 0xa7, 0x0b, 0x68, 0xbf, 0xa1, 0xfa, 0x11, 0x58,
		0xcc, 0xaa, 0x88, 0x45, 0x0d, 0x81, 0xee, 0x83, 0xee, 0x83, 0xee, 0x83, 0xee, 0xd3, 0xbc, 0x31,
		0x74, 0xd3, 0xb4, 0xe6, 0x28, 0x7e, 0x83, 0x70, 0x8d, 0xcb, 0x2c, 0xcf, 0x62, 0x6c, 0x48, 0x47,
		0x61, 0x30, 0x8c, 0x5d, 0xbf, 0x9f, 0x62, 0x73, 0xf6, 0xe3, 0x54, 0xd5, 0x74, 0x45, 0xcf, 0xf5,
		0xdd, 0x91, 0x9b, 0x8e, 0x96, 0xff, 0x55, 0xf6, 0x37, 0xf2, 0x87, 0x74, 0x51, 0xdb, 0x0f, 0xf2,
		0x96, 0x25, 0x2e, 0x3e, 0x9d, 0x74, 0xc7, 0x54, 0x1e, 0x34, 0x8c, 0x44, 0x48, 0x8d, 0xf7, 0x4c,
		0x8e, 0xec, 0xa5, 0x33, 0x0b, 0xc6, 0x77, 0xd3, 0xbe, 0x7d, 0xe4, 0x50, 0xac, 0xdc, 0x4e, 0x6d,
		0xce, 0xb1, 0x25, 0x4f, 0xd2, 0x54, 0xe9, 0xc5, 0x98, 0xa1, 0x3f, 0x7a, 0x34, 0x50, 0x7a, 0x39,
		0x55, 0x7a, 0xa8, 0x68, 0x60, 0x4b, 0x04, 0xfd, 0x45, 0x76, 0x63, 0xf1, 0x65, 0xbe, 0x13, 0x1a,
		0x31, 0xca, 0xf2, 0xd9, 0x68, 0xc4, 0x88, 0x5c, 0x0f, 0x5d, 0x44, 0x3d, 0x72, 0x3d, 0x18, 0x1d,
		0x08, 0x72, 0x3d, 0x36, 0xb9, 0x79, 0xc8, 0xf5, 0x78, 0x05, 0xfe, 0x23, 0xf8, 0xfb, 0x3a, 0xbf,
		0x80, 0xe0, 0xaf, 0x21, 0x3a, 0x19, 0xc1, 0xdf, 0xe5, 0xb7, 0x06, 0xb9, 0x1e, 0x1b, 0xac, 0x81,
		0x5c, 0x0f, 0x49, 0x8b, 0x22, 0xd7, 0x63, 0x6d, 0x68, 0x43, 0xae, 0x87, 0x5e, 0x38, 0x8d, 0xd4,
		0x85, 0x79, 0xe8, 0x47, 0xea, 0x02, 0xd8, 0x2b, 0xd8, 0x2b, 0xd8, 0xab, 0xc1, 0xec, 0x15, 0xa9,
		0x0b, 0x48, 0x5d, 0x58, 0x77, 0x15, 0xa4, 0x2e, 0x50, 0xbd, 0x95, 0x48, 0x5d, 0x30, 0xd4, 0xa9,
		0x15, 0x90, 0xba, 0xb0, 0xe2, 0x4b, 0x45, 0x9e, 0xba, 0x80, 0x93, 0x78, 0xa9, 0xd7, 0xd7, 0xfc,
		0x24, 0x1e, 0xbd, 0x07, 0x55, 0x5b, 0x8a, 0xe6, 0x16, 0xa2, 0xb8, 0x55, 0x5c, 0x73, 0xb4, 0xdf,
		0xb3, 0xd1, 0x4e, 0x2e, 0x9f, 0x77, 0x7b, 0x99, 0x6e, 0xb6, 0x9d, 0xfc, 0x45, 0xf9, 0x26, 0x38,
		0x1b, 0x6f, 0x55, 0x97, 0x9e, 0x72, 0x6f, 0x25, 0x35, 0x21, 0xaa, 0x64, 0x8f, 0xa1, 0x4c, 0xd4,
		0x84, 0x68, 0x7a, 0x05, 0x34, 0x21, 0x92, 0x11, 0x4f, 0x41, 0x13, 0x22, 0x26, 0x2a, 0x89, 0x26,
		0x44, 0x1b, 0x5c, 0x10, 0x4d, 0x88, 0x08, 0x21, 0x86, 0x12, 0x6a, 0x18, 0x20, 0x87, 0x4b, 0xf1,
		0x22, 0x31, 0x2d, 0x8f, 0x7a, 0x0a, 0x89, 0x69, 0x9b, 0xdc, 0x3c, 0x24, 0xa6, 0xbd, 0x02, 0xff,
		0x71, 0xb4, 0xf7, 0x3a, 0xbf, 0x80, 0xa3, 0x3d, 0xcd, 0xfd, 0xc5, 0x32, 0xbf, 0x81, 0xa3, 0xbd,
		0xe7, 0x5b, 0x83, 0xc4, 0xb4, 0x0d, 0xd6, 0x40, 0x62, 0x9a, 0xa4, 0x45, 0x91, 0x98, 0xb6, 0x36,
		0xb4, 0x21, 0x31, 0x6d, 0x2b, 0x70, 0x1a, 0xa5, 0xa9, 0x2a, 0x1f, 0x01, 0x32, 0xf9, 0x40, 0xf7,
		0x41, 0xf7, 0x41, 0xf7, 0x41, 0xf7, 0x5f, 0xfd, 0xc6, 0x20, 0x93, 0x0f, 0x99, 0x7c, 0xeb, 0xae,
		0x82, 0x4c, 0x3e, 0xaa, 0xb7, 0x12, 0x99, 0x7c, 0x86, 0x3a, 0xb5, 0x02, 0x32, 0xf9, 0x56, 0x7c,
		0xa9, 0xd0, 0x84, 0x28, 0xff, 0x4a, 0x0f, 0xa9, 0x8f, 0x7a, 0x25, 0xb6, 0x4d, 0xe5, 0x3b, 0xa1,
		0x09, 0x91, 0x2c, 0x9f, 0x8d, 0x26, 0x44, 0xc8, 0xf5, 0xd0, 0x45, 0xd4, 0x23, 0xd7, 0x83, 0xd1,
		0x81, 0x20, 0xd7, 0x63, 0x93, 0x9b, 0x87, 0x5c, 0x8f, 0x57, 0xe0, 0x3f, 0x82, 0xbf, 0xaf, 0xf3,
		0x0b, 0x08, 0xfe, 0x1a, 0xa2, 0x93, 0x11, 0xfc, 0x5d, 0x7e, 0x6b, 0x90, 0xeb, 0xb1, 0xc1, 0x1a,
		0xc8, 0xf5, 0x90, 0xb4, 0x28, 0x72, 0x3d, 0xd6, 0x86, 0x36, 0xe4, 0x7a, 0xe8, 0x85, 0xd3, 0x48,
		0x5d, 0x98, 0x87, 0x7e, 0xa4, 0x2e, 0x80, 0xbd, 0x82, 0xbd, 0x82, 0xbd, 0x1a, 0xcc, 0x5e, 0x91,
		0xba, 0x80, 0xd4, 0x85, 0x75, 0x57, 0x41, 0xea, 0x02, 0xd5, 0x5b, 0x89, 0xd4, 0x05, 0x43, 0x9d,
		0x5a, 0x01, 0xa9, 0x0b, 0x2b, 0xbe, 0x54, 0x68, 0x42, 0x84, 0x93, 0x78, 0x89, 0x27, 0xf1, 0x68,
		0x42, 0xa4, 0xda, 0x52, 0x34, 0xb7, 0x10, 0xfd, 0x9b, 0x10, 0x55, 0xd2, 0x26, 0x44, 0x65, 0x6d,
		0x9a, 0x10, 0xbd, 0x51, 0x68, 0xae, 0xb2, 0xcd, 0x54, 0x2f, 0xf3, 0x94, 0x60, 0x8d, 0xd2, 0xad,
		0x70, 0x33, 0xb3, 0x5b, 0xdf, 0x58, 0x36, 0x30, 0x14, 0xcb, 0x8b, 0x06, 0xf6, 0xad, 0xbb, 0x79,
		0x6c, 0xfa, 0x59, 0x17, 0xa7, 0x17, 0xdc, 0xd0, 0x78, 0xe5, 0xa4, 0x1e, 0x49, 0x0b, 0xd2, 0xc9,
		0x0c, 0xc6, 0x11, 0xa4, 0x12, 0xc9, 0xd6, 0x24, 0x64, 0x41, 0x34, 0x32, 0x5d, 0x41, 0x93, 0x0a,
		0xa4, 0x16, 0xc0, 0x65, 0xa5, 0xf6, 0x58, 0x4e, 0x1c, 0x3b, 0x9d, 0xbb, 0x91, 0x76, 0x74, 0x63,
		0xf9, 0x4d, 0xec, 0x66, 0xae, 0x8e, 0x06, 0x76, 0x1a, 0xc1, 0x02, 0x75, 0xc8, 0x02, 0x0d, 0xec,
		0x4c, 0x92, 0x2d, 0x68, 0x60, 0x57, 0x40, 0x03, 0x3b, 0x2e, 0xc8, 0xe1, 0x8a, 0x96, 0x22, 0xa9,
		0x39, 0x8f, 0xb1, 0x38, 0xb2, 0xa4, 0x66, 0xb7, 0xef, 0x07, 0xa1, 0x90, 0xca, 0x83, 0x96, 0xbe,
		0x54, 0x53, 0x6b, 0x99, 0x9c, 0xbe, 0xdc, 0x73, 0xbc, 0x48, 0x20, 0x6f, 0x99, 0x01, 0xea, 0x39,
		0x20, 0x9f, 0x11, 0xfa, 0xb9, 0x5c, 0x00, 0xbb, 0x2b, 0x60, 0x77, 0x09, 0xbc, 0xae, 0x81, 0xc6,
		0x45, 0x10, 0xb9, 0x8a, 0xec, 0xd6, 0xf0, 0x65, 0x7e, 0xdc, 0x06, 0x81, 0x27, 0x1c, 0x9f, 0x23,
		0xf3, 0xa3, 0x8c, 0xa2, 0xe4, 0x05, 0xeb, 0xa0, 0xfd, 0xd4, 0xc2, 0xdb, 0x12, 0x0d, 0x07, 0xc9,
		0xed, 0xe0, 0x61, 0x37, 0x33, 0xab, 0x81, 0xdf, 0x80, 0xdf, 0x80, 0xdf, 0x80, 0xdf, 0x80, 0xdf,
		0x80, 0xdf, 0x80, 0xdf, 0x80, 0xdf, 0x20, 0xd5, 0x8b, 0x2f, 0x53, 0x22, 0x3d, 0x70, 0x2f, 0x4e,
		0x1f, 0xc3, 0xa1, 0xaf, 0x8a, 0x34, 0x9a, 0x8b, 0xbe, 0x2a, 0x38, 0x82, 0xd0, 0x84, 0x97, 0xe1,
		0x08, 0x82, 0xd1, 0x47, 0xe0, 0x08, 0x02, 0x12, 0x1d, 0x12, 0x1d, 0x12, 0x1d, 0x12, 0x1d, 0x12,
		0x1d, 0x12, 0xdd, 0x00, 0xc5, 0x89, 0x88, 0x3a, 0xdc, 0x35, 0xdc, 0x35, 0xdc, 0x35, 0xdc, 0x35,
		0xdc, 0x35, 0xdc, 0xb5, 0xf6, 0xee, 0x1a, 0x01, 0x62, 0xa5, 0x01, 0x62, 0x94, 0xfb, 0xaa, 0x36,
		0x06, 0xf5, 0x46, 0xa0, 0xb8, 0xa2, 0xf7, 0x2c, 0x1a, 0xbc, 0x73, 0xe3, 0xf6, 0x71, 0xba, 0xa3,
		0x77, 0x6e, 0xac, 0x4d, 0xdd, 0xae, 0x84, 0x8a, 0xbc, 0xe0, 0x9b, 0x08, 0xbd, 0xc0, 0x21, 0xaa,
		0xb9, 0x9a, 0xb9, 0x3a, 0x6a, 0xae, 0x34, 0xe4, 0xb4, 0xa8, 0xb9, 0x52, 0xc3, 0x49, 0x51, 0x73,
		0xb5, 0xd1, 0x8b, 0x80, 0x9a, 0x2b, 0x1c, 0x78, 0x6a, 0x23, 0x9b, 0x71, 0xe0, 0xc9, 0xa8, 0x79,
		0xc8, 0x0e, 0x3c, 0x9d, 0xee, 0x37, 0x11, 0xc6, 0x6e, 0x24, 0xec, 0x3b, 0xb7, 0x7f, 0x67, 0xdf,
		0x8b, 0x38, 0x74, 0x3b, 0xf4, 0xe1, 0xd4, 0xc5, 0xcb, 0x22, 0xae, 0xba, 0xf0, 0x0b, 0x71, 0x55,
		0x76, 0x47, 0xc0, 0xe8, 0x10, 0xb8, 0x1c, 0x03, 0xbb, 0x83, 0x60, 0x77, 0x14, 0xbc, 0x0e, 0x83,
		0x2e, 0xfc, 0x56, 0x40, 0x5c, 0x75, 0x35, 0xe6, 0x8a, 0x4c, 0xe5, 0x45, 0xeb, 0xa0, 0x12, 0x6b,
		0x71, 0x30, 0x4c, 0xc4, 0x4c, 0x47, 0xc6, 0xe9, 0x42, 0x60, 0x35, 0x60, 0x35, 0x60, 0x35, 0x60,
		0x35, 0x60, 0x35, 0x60, 0x35, 0x60, 0x35, 0x60, 0x35, 0x94, 0xac, 0xc6, 0x0e, 0x7c, 0xfb, 0x36,
		0x08, 0xf8, 0xd8, 0x4d, 0xb6, 0x20, 0x58, 0x0e, 0x58, 0x0e, 0x58, 0x0e, 0x58, 0x0e, 0x58, 0x0e,
		0x58, 0x0e, 0x58, 0x0e, 0x58, 0x0e, 0x92, 0x08, 0xf9, 0xf3, 0xc7, 0xa6, 0x13, 0x8f, 0xb6, 0xa8,
		0xca, 0x3c, 0x14, 0x23, 0x32, 0x1a, 0x87, 0x6e, 0xbf, 0x2f, 0xc2, 0x88, 0x2e, 0xfd, 0xe2, 0xc5,
		0x3a, 0x48, 0xc3, 0x40, 0x1a, 0x86, 0x7a, 0xa6, 0x86, 0x34, 0x0c, 0x46, 0xaf, 0x41, 0x96, 0x86,
		0x31, 0x03, 0x2d, 0xf4, 0xe2, 0x7d, 0x76, 0x39, 0x5a, 0x89, 0x5a, 0x86, 0x44, 0x85, 0x44, 0x85,
		0x44, 0xdd, 0x0e, 0x89, 0x4a, 0x05, 0x90, 0xd9, 0x02, 0x44, 0x29, 0xb6, 0x4b, 0x5f, 0x4c, 0x92,
		0x94, 0x5b, 0x66, 0xa8, 0x64, 0x83, 0x4c, 0x4e, 0xe8, 0x54, 0x00, 0xa1, 0xdc, 0x50, 0xaa, 0x0c,
		0x52, 0x95, 0x41, 0xab, 0x1a, 0x88, 0xa5, 0x85, 0x5a, 0x62, 0xc8, 0x65, 0x83, 0xde, 0x6c, 0xa1,
		0xae, 0xf0, 0x9c, 0x47, 0x3e, 0xe3, 0x9f, 0xbc, 0xdf, 0xe3, 0x65, 0x99, 0xec, 0x8f, 0xf6, 0x78,
		0x45, 0x19, 0x30, 0xab, 0x00, 0x68, 0x85, 0x40, 0xad, 0x0a, 0xb0, 0x95, 0x03, 0xb7, 0x72, 0x00,
		0x57, 0x0b, 0xe4, 0x3c, 0x80, 0xce, 0x04, 0xec, 0xd9, 0xad, 0x24, 0x3f, 0xfe, 0x59, 0xfa, 0xc6,
		0x0e, 0x5d, 0x3f, 0x2e, 0xd7, 0x39, 0x5f, 0xd8, 0x14, 0x7f, 0xeb, 0x8c, 0x4b, 0x5e, 0x39, 0x7e,
		0x5f, 0x90, 0xe6, 0x19, 0x2c, 0xfa, 0xe2, 0x05, 0xa4, 0xe4, 0x83, 0x9e, 0xbb, 0x3e, 0x3b, 0x12,
		0x66, 0x8b, 0x7f, 0x76, 0xbc, 0xa1, 0xe0, 0x73, 0x74, 0x73, 0xeb, 0x7f, 0x08, 0x9d, 0x4e, 0xec,
		0x06, 0xfe, 0x89, 0xdb, 0x77, 0xe3, 0x48, 0xe1, 0x46, 0x3e, 0x8a, 0xbe, 0x13, 0xbb, 0xdf, 0x46,
		0xf7, 0x22, 0x49, 0x3f, 0x61, 0xdf, 0xc5, 0xd3, 0x5b, 0x05, 0xa6, 0xe7, 0x3c, 0xa8, 0x37, 0xbd,
		0x7a, 0xad, 0xb6, 0x5f, 0x83, 0xf9, 0xa9, 0x36, 0xbf, 0x37, 0xf9, 0x5c, 0xad, 0x95, 0x2b, 0xce,
		0xc1, 0x94, 0xef, 0x30, 0xb7, 0x2e, 0x7b, 0xfe, 0x03, 0xbf, 0xc1, 0x30, 0x3c, 0x42, 0xa6, 0x63,
		0xa5, 0xa5, 0xbc, 0x91, 0xe3, 0x98, 0x09, 0xd2, 0x1d, 0xd2, 0x1d, 0xd2, 0x1d, 0xd2, 0x1d, 0xd2,
		0x7d, 0xe1, 0x1b, 0xeb, 0x76, 0x85, 0x1f, 0xbb, 0xf1, 0x63, 0x28, 0x7a, 0x0a, 0xf4, 0x7b, 0x99,
		0x91, 0x67, 0x5b, 0xcd, 0xf4, 0xa3, 0xbe, 0x73, 0x22, 0x05, 0x78, 0x31, 0xb9, 0xe1, 0x17, 0x9f,
		0x4f, 0xaf, 0xce, 0x2e, 0x8e, 0x4f, 0xda, 0x57, 0xa7, 0xd7, 0xa7, 0x37, 0xed, 0x9b, 0xab, 0xe6,
		0xef, 0xbf, 0x9f, 0x5e, 0xb5, 0x6f, 0xfe, 0xbc, 0x3c, 0xe5, 0x46, 0x90, 0x44, 0xf0, 0x44, 0xec,
		0x21, 0x0d, 0x35, 0x61, 0x8d, 0x99, 0x87, 0xf0, 0x7f, 0x8f, 0x9b, 0x37, 0xed, 0x0f, 0x17, 0x57,
		0xed, 0x77, 0xbf, 0x5f, 0x5a, 0xdb, 0xa0, 0xac, 0x75, 0xb9, 0xdf, 0xd7, 0x7f, 0x5e, 0xdf, 0x9c,
		0x9e, 0x5b, 0x39, 0x57, 0x93, 0x2d, 0xb8, 0x41, 0xa8, 0x49, 0xcd, 0xd4, 0xa4, 0xd1, 0x67, 0xd7,
		0xcc, 0x86, 0xa1, 0x41, 0x76, 0xfe, 0x6c, 0x2e, 0xf9, 0xec, 0x1f, 0x49, 0x52, 0xf7, 0xf9, 0x0c,
		0x86, 0xd0, 0x58, 0x98, 0x03, 0x1a, 0x4a, 0x02, 0x19, 0x4c, 0x01, 0x0c, 0x24, 0x83, 0x99, 0x19,
		0xa0, 0x40, 0x32, 0x18, 0x92, 0xc1, 0x34, 0x0a, 0x38, 0x64, 0x6f, 0xdc, 0x88, 0x50, 0xf1, 0x04,
		0x19, 0xb2, 0xe0, 0x42, 0x83, 0x61, 0xad, 0xcb, 0x94, 0x23, 0xec, 0xed, 0xa5, 0x5e, 0x79, 0xd6,
		0x55, 0xc3, 0x47, 0x2f, 0x20, 0x57, 0x24, 0x43, 0x5f, 0x97, 0x1a, 0x1e, 0xc5, 0x10, 0xd8, 0xa5,
		0x26, 0xc7, 0xe5, 0x93, 0x2b, 0xf0, 0xc9, 0xf0, 0xc9, 0xf0, 0xc9, 0xb9, 0xf2, 0xc9, 0x48, 0xd0,
		0x36, 0x4e, 0x24, 0xb1, 0x8b, 0x25, 0x15, 0x00, 0xad, 0x10, 0xa8, 0x55, 0x01, 0xb6, 0x72, 0xe0,
		0x56, 0x0e, 0xe0, 0x6a, 0x81, 0x9c, 0x07, 0xd0, 0x99, 0x80, 0x9d, 0x5f, 0x74, 0xcd, 0xbd, 0xb1,
		0x48, 0xd0, 0x26, 0xfb, 0x42, 0x82, 0x36, 0xef, 0xfa, 0xc8, 0x90, 0x65, 0x86, 0xad, 0x59, 0xd3,
		0x43, 0x82, 0x36, 0xcc, 0x8f, 0xd3, 0x37, 0xf3, 0xaf, 0xd6, 0x42, 0xfe, 0xf0, 0xab, 0x8d, 0x10,
		0xf9, 0xc3, 0x50, 0x96, 0x50, 0x96, 0x50, 0x96, 0x50, 0x96, 0xdb, 0xaa, 0x2c, 0x91, 0x3f, 0xcc,
		0x7c, 0xc3, 0x91, 0x3f, 0x5c, 0x40, 0xfe, 0x30, 0xf2, 0x87, 0x73, 0x2d, 0x76, 0x72, 0x97, 0x3f,
		0x8c, 0x93, 0xbf, 0x9f, 0x33, 0x21, 0xa4, 0xb7, 0x4e, 0xa7, 0xb7, 0x8e, 0x33, 0x36, 0x4c, 0xcd,
		0x9c, 0x31, 0xaa, 0x1f, 0xe3, 0x1f, 0xe2, 0x91, 0xad, 0xdf, 0xeb, 0x99, 0x1b, 0xc5, 0xc7, 0x71,
		0x4c, 0xdc, 0x00, 0xf2, 0xdc, 0xf5, 0x4f, 0x3d, 0x31, 0xd2, 0x15, 0xc4, 0xd1, 0x39, 0xeb, 0xdc,
		0x79, 0x98, 0x5a, 0xa9, 0x7c, 0x50, 0xad, 0xd6, 0x1b, 0xd5, 0x6a, 0xa9, 0xb1, 0xdf, 0x28, 0x1d,
		0xd6, 0x6a, 0xe5, 0x3a, 0x25, 0x39, 0xb5, 0x2e, 0xc2, 0xae, 0x08, 0x45, 0xf7, 0xdd, 0xe8, 0xf1,
		0xf9, 0x43, 0xcf, 0xe3, 0x58, 0xea, 0x53, 0x94, 0x04, 0x79, 0xe8, 0xc2, 0x8d, 0xa6, 0x4f, 0x65,
		0xd0, 0x1b, 0x57, 0x2d, 0xd2, 0x9c, 0xbe, 0x70, 0xd8, 0x89, 0xfd, 0x94, 0xae, 0x7d, 0x1c, 0x7f,
		0x94, 0x66, 0xfa, 0x49, 0xda, 0x97, 0xe9, 0xfe, 0xdb, 0xcd, 0xc8, 0x8d, 0xda, 0xbf, 0x27, 0xfb,
		0x6f, 0x9f, 0x45, 0x83, 0x77, 0x6e, 0xdc, 0xbe, 0x48, 0xb7, 0x3f, 0xfa, 0xfe, 0x6a, 0xb4, 0xdd,
		0x1b, 0xca, 0xcc, 0x49, 0x8c, 0xb1, 0xc8, 0xb7, 0xc5, 0x6f, 0xc3, 0x38, 0x0b, 0x9a, 0xfc, 0x59,
		0xd2, 0x7c, 0x59, 0xf2, 0xe1, 0x15, 0x15, 0x0c, 0xaf, 0x98, 0x5e, 0x02, 0xc3, 0x2b, 0x56, 0x06,
		0x4a, 0x0c, 0xaf, 0x20, 0x1b, 0x5e, 0xe1, 0x74, 0xbf, 0x89, 0x30, 0x76, 0x23, 0x61, 0xdf, 0xb9,
		0xfd, 0x3b, 0xfb, 0x5e, 0xc4, 0xa1, 0xdb, 0xa1, 0x1f, 0x62, 0xb1, 0x78, 0x59, 0xcc, 0xa1, 0x5c,
		0x1c, 0x72, 0xc2, 0x1c, 0x4a, 0x6e, 0x47, 0xc0, 0xe8, 0x10, 0xb8, 0x1c, 0x03, 0xbb, 0x83, 0x60,
		0x77, 0x14, 0xbc, 0x0e, 0xc3, 0xcc, 0xa0, 0x12, 0xe6, 0x50, 0xaa, 0xd4, 0xa3, 0x74, 0xc3, 0xa3,
		0xd9, 0x86, 0x46, 0xc3, 0x49, 0xc3, 0x49, 0xc3, 0x49, 0xc3, 0x49, 0xc3, 0x49, 0xc3, 0x49, 0xc3,
		0x49, 0xaf, 0xe6, 0xa4, 0xed, 0xc0, 0xb7, 0x6f, 0x83, 0x80, 0xcf, 0x59, 0x67, 0x0b, 0xc2, 0x69,
		0xc3, 0x69, 0xc3, 0x69, 0xc3, 0x69, 0xc3, 0x69, 0xc3, 0x69, 0xe7, 0xd2, 0x69, 0xe3, 0xa4, 0x57,
		0xe9, 0x49, 0x2f, 0x41, 0x5a, 0x98, 0xc4, 0x03, 0xde, 0x37, 0x1a, 0x19, 0x05, 0x95, 0x31, 0xa8,
		0x37, 0x02, 0x4b, 0xea, 0x39, 0xba, 0x84, 0x9c, 0x15, 0x39, 0xf6, 0xb8, 0xb9, 0xf5, 0x6c, 0x76,
		0x85, 0x0d, 0xed, 0x4e, 0xb6, 0xbd, 0x29, 0xb1, 0x33, 0x09, 0xa6, 0xb5, 0xbe, 0x49, 0x6d, 0x66,
		0x46, 0xeb, 0x3f, 0xfc, 0x0d, 0x1e, 0xbc, 0x75, 0x3f, 0xf0, 0xa2, 0x8d, 0x1f, 0x77, 0x46, 0x38,
		0x92, 0xab, 0x6d, 0x68, 0x86, 0x72, 0xb2, 0x4c, 0xa4, 0x49, 0x1f, 0x99, 0x12, 0x87, 0x40, 0xca,
		0xc8, 0x96, 0x2c, 0x64, 0xd2, 0x84, 0x4c, 0x82, 0xd0, 0x48, 0x0d, 0xb5, 0x50, 0x2c, 0x2b, 0x8b,
		0xc3, 0x72, 0xfb, 0x03, 0xdb, 0xeb, 0x0e, 0xec, 0xe8, 0xd1, 0x97, 0x97, 0xac, 0xf1, 0x5c, 0x37,
		0x38, 0x7d, 0x75, 0x49, 0x4f, 0x53, 0x6e, 0x92, 0x99, 0xf4, 0x08, 0x08, 0x45, 0xc4, 0x83, 0x30,
		0xc2, 0x41, 0x15, 0xd1, 0x20, 0x8f, 0x60, 0x90, 0x47, 0x2c, 0x68, 0x23, 0x14, 0x7a, 0x29, 0x09,
		0xd9, 0x49, 0x61, 0x56, 0x67, 0xf2, 0x56, 0x11, 0xa5, 0xaf, 0xa6, 0xd7, 0x37, 0x2c, 0x7f, 0xb5,
		0x84, 0xfc, 0x55, 0x06, 0xe8, 0x61, 0x83, 0x20, 0xf6, 0xe0, 0x29, 0xf2, 0x57, 0x09, 0xf3, 0x57,
		0x85, 0xef, 0xdc, 0x7a, 0xa2, 0x4b, 0x7f, 0xa2, 0x36, 0x59, 0xc8, 0xe4, 0x93, 0xb4, 0x91, 0x8d,
		0xe3, 0x20, 0x8d, 0x01, 0xe3, 0x39, 0xb0, 0x9e, 0x11, 0xf3, 0xb9, 0xb0, 0x9f, 0xdd, 0x07, 0xb0,
		0xfb, 0x02, 0x5e, 0x9f, 0x40, 0xe3, 0x1b, 0x88, 0x7c, 0x44, 0x76, 0x6b, 0x70, 0x90, 0xa6, 0xfc,
		0x11, 0x88, 0x87, 0x38, 0x74, 0xec, 0xa1, 0x1f, 0xc5, 0x23, 0xa7, 0x47, 0xfb, 0x30, 0x42, 0xd1,
		0x13, 0xa1, 0xf0, 0x3b, 0xf4, 0xed, 0x61, 0x19, 0xe7, 0x25, 0x5c, 0x7d, 0x78, 0x5f, 0xab, 0x56,
		0xf7, 0x8f, 0x0a, 0x67, 0x27, 0x97, 0x85, 0xe6, 0xef, 0x97, 0x85, 0xeb, 0x47, 0xbf, 0x73, 0x17,
		0x06, 0xbe, 0xfb, 0x3f, 0x49, 0x28, 0x7e, 0x2f, 0xe7, 0x93, 0x14, 0x9e, 0x1f, 0xea, 0x36, 0x0d,
		0x53, 0xf8, 0xf5, 0x53, 0x37, 0xbd, 0xd9, 0x0a, 0xd9, 0xd5, 0x5b, 0x68, 0x5a, 0xb0, 0x60, 0x1d,
		0xf6, 0xe1, 0x97, 0x66, 0xa4, 0x53, 0x0e, 0x82, 0x28, 0xb6, 0x23, 0x11, 0x45, 0x6e, 0xe0, 0xdb,
		0xc3, 0x81, 0x4d, 0x3b, 0x34, 0x23, 0x03, 0xf5, 0xc5, 0xcb, 0x42, 0xf9, 0x40, 0xf9, 0x40, 0xf9,
		0x40, 0xf9, 0x18, 0xa5, 0x7c, 0xc8, 0x87, 0x4e, 0x30, 0x0c, 0x99, 0x60, 0x1a, 0x2a, 0xc1, 0xa0,
		0x1a, 0x38, 0x87, 0x46, 0x70, 0x0f, 0x89, 0x50, 0xd6, 0x95, 0x9f, 0xbf, 0x0b, 0x3f, 0x47, 0x57,
		0x77, 0xce, 0x21, 0x0f, 0x2a, 0x86, 0x3a, 0x6c, 0x93, 0xb9, 0x40, 0xaa, 0x41, 0xaa, 0x69, 0x25,
		0xd5, 0x90, 0x44, 0xcf, 0x95, 0xd7, 0x7a, 0x3f, 0xf0, 0xa2, 0xe2, 0x74, 0x9e, 0x55, 0x3a, 0xa1,
		0x18, 0x3d, 0xd2, 0x36, 0xa6, 0xb6, 0xe8, 0x91, 0x86, 0x1c, 0x13, 0x5d, 0x54, 0x36, 0x72, 0x4c,
		0x18, 0x1d, 0x04, 0x72, 0x4c, 0x7e, 0x75, 0x83, 0x90, 0x63, 0xf2, 0x13, 0x6c, 0x47, 0xa4, 0x55,
		0x29, 0xe6, 0x73, 0x61, 0x3f, 0xbb, 0x0f, 0x60, 0xf7, 0x05, 0xbc, 0x3e, 0x81, 0x56, 0x6f, 0x22,
		0xc7, 0x64, 0x05, 0x72, 0x8a, 0x1c, 0x93, 0x65, 0x6b, 0x21, 0xc7, 0xc4, 0x70, 0xb4, 0x5e, 0x84,
		0xda, 0xc8, 0x31, 0x41, 0x8e, 0xc9, 0x6a, 0x04, 0x12, 0x29, 0x13, 0x48, 0x99, 0x00, 0x91, 0x07,
		0x91, 0x07, 0x91, 0x07, 0x91, 0x5f, 0xf9, 0x8d, 0x41, 0xca, 0x84, 0x4e, 0x24, 0x18, 0x29, 0x13,
		0x24, 0xb6, 0x8e, 0x94, 0x09, 0x49, 0xa6, 0x82, 0x94, 0x09, 0x28, 0x0f, 0x03, 0x95, 0x07, 0x32,
		0x00, 0xd4, 0x65, 0x00, 0xa0, 0x87, 0x9e, 0x6a, 0x4b, 0x50, 0x6c, 0x01, 0x8a, 0x1b, 0xe8, 0x9d,
		0x0f, 0xbc, 0xa8, 0xdd, 0xec, 0x0f, 0xce, 0xba, 0x83, 0xeb, 0xd1, 0x6e, 0xd0, 0x3d, 0xcf, 0xf4,
		0xee, 0x79, 0x12, 0xfa, 0xb6, 0x6d, 0x62, 0x4c, 0x26, 0x36, 0xce, 0xf3, 0xa3, 0x50, 0x5e, 0xdf,
		0xbc, 0xd1, 0xc5, 0xd0, 0x36, 0x8f, 0x31, 0x16, 0x85, 0xb6, 0x79, 0x68, 0x9b, 0xf7, 0x93, 0x0b,
		0x49, 0xee, 0x6f, 0x45, 0xd3, 0xd7, 0x0a, 0xad, 0xf2, 0xd0, 0x2a, 0xaf, 0x80, 0x56, 0x79, 0x72,
		0x05, 0x83, 0xf4, 0x56, 0x79, 0x54, 0x39, 0x81, 0xc4, 0xb9, 0x80, 0xa4, 0x39, 0x80, 0x14, 0x93,
		0x5a, 0x5a, 0x34, 0x89, 0xdc, 0x25, 0x34, 0x0b, 0x44, 0x22, 0xb7, 0x4e, 0x60, 0xcc, 0x03, 0xca,
		0x66, 0xc4, 0xf9, 0xc8, 0xce, 0xf4, 0x18, 0x92, 0xf2, 0x88, 0x92, 0xf1, 0x4c, 0x0b, 0xa5, 0xb2,
		0x55, 0xc3, 0x21, 0xc2, 0xa9, 0x71, 0xfc, 0xc9, 0x8f, 0x42, 0xa9, 0x75, 0x6d, 0x12, 0x82, 0x89,
		0x52, 0xa2, 0x61, 0x32, 0xeb, 0xd7, 0x48, 0xea, 0xd6, 0xc8, 0x34, 0x64, 0x05, 0x1a, 0x12, 0x1a,
		0x12, 0x1a, 0x12, 0x1a, 0x12, 0x1a, 0x12, 0x1a, 0x12, 0x1a, 0x12, 0x1a, 0x12, 0x1a, 0xd2, 0x1c,
		0x0d, 0x09, 0xa9, 0xa4, 0xb7, 0x54, 0x92, 0x98, 0x00, 0x84, 0xb4, 0x0b, 0xb5, 0xcf, 0x52, 0x51,
		0xd6, 0xc5, 0xc7, 0x28, 0x34, 0x31, 0xe9, 0x22, 0xab, 0xe4, 0xb3, 0x6f, 0x1d, 0xbf, 0xfb, 0x1f,
		0xb7, 0x9b, 0x3c, 0x26, 0x49, 0x49, 0x18, 0x8b, 0x2e, 0x8e, 0xa4, 0x0c, 0x46, 0x42, 0x87, 0xa4,
		0x0c, 0x24, 0x65, 0xfc, 0xe4, 0x42, 0x48, 0xca, 0x40, 0x40, 0x0d, 0x01, 0x35, 0x04, 0xd4, 0x24,
		0x5c, 0x90, 0x82, 0x47, 0x30, 0xf2, 0x0a, 0x04, 0x9a, 0x10, 0x68, 0x42, 0xa0, 0x09, 0x81, 0xa6,
		0x17, 0x16, 0x3f, 0x74, 0xfd, 0x78, 0xbf, 0x42, 0x18, 0x67, 0x6a, 0x10, 0x5c, 0x9a, 0xb6, 0xd0,
		0x98, 0xb0, 0xdc, 0x9b, 0xa3, 0xb0, 0x98, 0xab, 0xa0, 0x98, 0xbd, 0x32, 0x94, 0xaf, 0x22, 0x94,
		0xb0, 0x70, 0x98, 0xa5, 0x60, 0x38, 0x33, 0x81, 0x6a, 0xe5, 0xb0, 0x7a, 0x58, 0x6f, 0x54, 0x0e,
		0x6b, 0xb0, 0x05, 0x2d, 0x1c, 0x04, 0xdd, 0x55, 0x5b, 0x48, 0x09, 0x43, 0x4a, 0x98, 0x76, 0x0f,
		0x88, 0x37, 0x36, 0xbe, 0x40, 0x35, 0x21, 0x45, 0xec, 0xb5, 0x4c, 0x10, 0x29, 0x62, 0x88, 0x68,
		0x21, 0xa2, 0x85, 0x88, 0x16, 0x22, 0x5a, 0x88, 0x68, 0x21, 0xa2, 0x85, 0x88, 0x16, 0x22, 0x5a,
		0x88, 0x68, 0x21, 0xa2, 0x85, 0x88, 0x16, 0x22, 0x5a, 0x88, 0x68, 0xe5, 0x21, 0xa2, 0x85, 0xc0,
		0x8d, 0x59, 0x81, 0x1b, 0x24, 0xac, 0x52, 0x3d, 0x63, 0xe5, 0xcf, 0x56, 0x51, 0x02, 0xeb, 0xd5,
		0x64, 0x27, 0xef, 0xb2, 0x8d, 0x18, 0x98, 0xcf, 0x1a, 0x89, 0xfe, 0x48, 0x43, 0xd8, 0x61, 0x30,
		0x8c, 0x5d, 0xbf, 0x2f, 0x2f, 0x97, 0xf5, 0xe5, 0x85, 0x91, 0xc7, 0xfa, 0x1a, 0x75, 0x2d, 0x27,
		0x1d, 0x1b, 0x59, 0xac, 0x2f, 0xb4, 0xf1, 0xa6, 0xb9, 0xe6, 0x05, 0xe4, 0xb0, 0xfe, 0xca, 0x78,
		0x91, 0xc3, 0xaa, 0x1b, 0x0c, 0x50, 0x87, 0xd6, 0xf2, 0x17, 0xef, 0x97, 0x01, 0x13, 0x7a, 0xf2,
		0x7a, 0x14, 0x84, 0xcf, 0x02, 0x0b, 0xa2, 0xfa, 0x84, 0x80, 0x43, 0x0d, 0x3c, 0x6c, 0x00, 0xc4,
		0x06, 0x44, 0x1c, 0x80, 0x44, 0x13, 0x5a, 0x41, 0x31, 0xf4, 0x02, 0xd6, 0x82, 0x86, 0x5a, 0xa6,
		0x65, 0x4f, 0xc9, 0x6c, 0x67, 0x1f, 0xf6, 0x6f, 0xe9, 0xdc, 0x62, 0x72, 0x75, 0xf8, 0x44, 0xf8,
		0x44, 0xf8, 0x44, 0xf8, 0x44, 0x69, 0xd6, 0x3e, 0xc2, 0xe7, 0x50, 0xf4, 0x28, 0x7d, 0x22, 0xc5,
		0x39, 0xf7, 0x65, 0x1a, 0x73, 0xde, 0xdb, 0x2b, 0xce, 0xff, 0xef, 0x45, 0x00, 0xb2, 0x38, 0x42,
		0xce, 0x28, 0xf9, 0x6f, 0x9a, 0xc5, 0x59, 0xf4, 0x82, 0x8e, 0xe3, 0xd9, 0x6e, 0xd7, 0x82, 0xbb,
		0xde, 0x66, 0x77, 0xed, 0x91, 0xba, 0x6b, 0x0f, 0xee, 0x1a, 0xee, 0x1a, 0xee, 0x1a, 0xee, 0x1a,
		0xee, 0x7a, 0x45, 0x77, 0xed, 0x25, 0xee, 0xda, 0x83, 0xbb, 0x36, 0xde, 0x5d, 0x23, 0xc5, 0x45,
		0x76, 0x1a, 0xc4, 0xcb, 0xb7, 0x25, 0x7f, 0x75, 0x49, 0x3d, 0x4f, 0x3c, 0xd8, 0x8e, 0xd7, 0x0f,
		0x42, 0x37, 0xbe, 0xbb, 0xb7, 0x6f, 0x5d, 0xbf, 0xeb, 0xfa, 0xfd, 0x48, 0xfe, 0xc1, 0xe5, 0xb2,
		0x85, 0x70, 0x92, 0xa9, 0x1d, 0x2b, 0xc3, 0x49, 0xa6, 0x0a, 0xd6, 0x95, 0xf3, 0x93, 0xcc, 0xc5,
		0xef, 0x3f, 0x9d, 0x24, 0x5c, 0xb2, 0x1e, 0x8d, 0x48, 0x2c, 0x43, 0x24, 0x42, 0x24, 0x42, 0x24,
		0xea, 0x27, 0x13, 0x64, 0xc3, 0x58, 0x76, 0x61, 0xc9, 0xf9, 0x5d, 0x4b, 0x5f, 0x26, 0xa9, 0xf9,
		0x5e, 0x4c, 0xf0, 0x45, 0x0e, 0x63, 0x1c, 0x70, 0xc6, 0x06, 0x6b, 0x5c, 0xf0, 0xc6, 0x0e, 0x73,
		0xec, 0x70, 0xc7, 0x09, 0x7b, 0x34, 0xf0, 0x47, 0x04, 0x83, 0xe4, 0x70, 0x98, 0x2d, 0xe0, 0x74,
		0xbf, 0x89, 0x30, 0x76, 0x23, 0x82, 0x94, 0xb5, 0xa5, 0x2f, 0xe6, 0xd4, 0x9a, 0xc4, 0x76, 0x45,
		0x39, 0xe6, 0x64, 0x9e, 0x30, 0xcb, 0x1f, 0x7b, 0xf2, 0xf2, 0xab, 0x45, 0x7c, 0xbf, 0x68, 0x8e,
		0x50, 0xd8, 0xdd, 0x0c, 0xa7, 0xbb, 0x61, 0x77, 0x3b, 0xdc, 0xee, 0x47, 0x99, 0x1b, 0x52, 0xe6,
		0x8e, 0x54, 0xb8, 0x25, 0x5a, 0xf7, 0x44, 0xec, 0xa6, 0xb2, 0x1b, 0x46, 0x76, 0xc4, 0xb3, 0xf4,
		0x6d, 0xa3, 0xcb, 0x5a, 0x5c, 0xca, 0xbd, 0xcb, 0x46, 0x3f, 0x22, 0xe2, 0x73, 0x98, 0xb9, 0xf5,
		0xd8, 0xce, 0x65, 0xf8, 0xde, 0x24, 0xca, 0x32, 0xff, 0x2c, 0x0a, 0x66, 0xbb, 0x8c, 0x8c, 0x6c,
		0x66, 0x55, 0x70, 0x0c, 0x70, 0x0c, 0x70, 0x0c, 0x70, 0x0c, 0x70, 0x8c, 0xa9, 0x5e, 0x47, 0x07,
		0x8c, 0x0c, 0xa3, 0xc6, 0xb0, 0x14, 0x6d, 0x2b, 0xa4, 0x97, 0x5f, 0x3c, 0xe8, 0x51, 0xe0, 0x6a,
		0x95, 0x34, 0xb7, 0xe8, 0xa4, 0x6f, 0x4e, 0xb9, 0x72, 0xf0, 0x96, 0x77, 0x65, 0xee, 0x06, 0x3a,
		0xf3, 0x2f, 0x09, 0x57, 0x43, 0x1d, 0x66, 0x9c, 0x99, 0x35, 0x2a, 0xe7, 0x41, 0x9d, 0x51, 0x55,
		0x6a, 0x35, 0x18, 0x15, 0x97, 0x51, 0xbd, 0xc9, 0xc7, 0x2a, 0x2d, 0x68, 0x54, 0x68, 0x54, 0xaa,
		0xdb, 0xe5, 0x46, 0x6e, 0x64, 0x7b, 0xe2, 0x9b, 0xf0, 0xf8, 0x14, 0xea, 0xd4, 0x9a, 0x79, 0x3a,
		0x33, 0x38, 0x3b, 0xfd, 0x7c, 0x7a, 0xd6, 0x2e, 0xb7, 0x2b, 0x38, 0x37, 0x80, 0xa6, 0x87, 0xa6,
		0x87, 0xa6, 0x87, 0xa6, 0xe7, 0x79, 0xdb, 0x12, 0x57, 0x62, 0xc7, 0xa3, 0x75, 0x19, 0x8f, 0x0e,
		0xaa, 0x0c, 0x6b, 0x9d, 0xfa, 0xc3, 0x7b, 0xbe, 0x97, 0xfb, 0x26, 0xb8, 0x8e, 0x43, 0x8a, 0xbc,
		0xd0, 0x9f, 0xae, 0x5a, 0x1a, 0x3d, 0xc2, 0xd4, 0x77, 0x5a, 0x8c, 0x3a, 0xb0, 0xfc, 0xbc, 0x6e,
		0x85, 0x73, 0xdd, 0xca, 0xd4, 0xe7, 0xa5, 0xe6, 0x0a, 0xcc, 0xfa, 0xda, 0xba, 0x09, 0x9a, 0x09,
		0x52, 0x32, 0x9a, 0xcf, 0xc4, 0x72, 0x58, 0x85, 0xed, 0xd4, 0xf3, 0x93, 0x36, 0x61, 0x65, 0x85,
		0x75, 0x47, 0xab, 0x96, 0x73, 0xa2, 0x6e, 0x9f, 0xa0, 0x6e, 0xa1, 0x6e, 0xa9, 0x6e, 0xd7, 0xc0,
		0x09, 0x63, 0xb7, 0xe3, 0x0e, 0x64, 0x8e, 0x7f, 0xfa, 0x25, 0x1d, 0x99, 0x5e, 0x14, 0x39, 0x71,
		0xd0, 0xb6, 0xd0, 0xb6, 0xd0, 0xb6, 0xd0, 0xb6, 0xd0, 0xb6, 0x6b, 0xbd, 0x6d, 0xc8, 0x89, 0x03,
		0x23, 0x63, 0x67, 0x64, 0x46, 0x95, 0x55, 0x30, 0x3d, 0x70, 0xb5, 0xbd, 0x0f, 0x96, 0x14, 0xf0,
		0x2f, 0xf9, 0xb9, 0xd4, 0x56, 0x09, 0xf4, 0xd6, 0x41, 0x60, 0x19, 0x3c, 0xb9, 0x97, 0x9c, 0x39,
		0x97, 0xc4, 0xdc, 0x15, 0xe5, 0x82, 0x3a, 0x72, 0x53, 0x94, 0x0b, 0x6e, 0xaf, 0x5f, 0x23, 0xe7,
		0x9a, 0x0c, 0xad, 0xb6, 0xe6, 0xb8, 0x65, 0x83, 0x70, 0x8d, 0xa9, 0xd6, 0x5b, 0x69, 0x37, 0xad,
		0x19, 0x58, 0xde, 0x62, 0x67, 0x28, 0x77, 0xfe, 0xf9, 0x52, 0x3b, 0x92, 0x39, 0x0f, 0x7d, 0xa9,
		0x05, 0x51, 0xbb, 0xbf, 0x0a, 0xdc, 0x1f, 0xdc, 0x1f, 0xdc, 0x9f, 0x72, 0xf7, 0x87, 0x6a, 0xf9,
		0xcd, 0x6e, 0x1f, 0x4e, 0x06, 0x34, 0x52, 0x57, 0x6c, 0x2a, 0x8b, 0xd3, 0xdd, 0xb0, 0xbb, 0x1d,
		0x6e, 0xf7, 0xa3, 0xcc, 0x0d, 0x29, 0x73, 0x47, 0x2a, 0xdc, 0x12, 0xad, 0x7b, 0x22, 0x76, 0x53,
		0x7c, 0x6a, 0x6d, 0xee, 0x6d, 0xcb, 0xdf, 0xc9, 0x00, 0x8a, 0xbc, 0x5f, 0xfd, 0xf0, 0x51, 0xe4,
		0x0d, 0xd7, 0x08, 0xd7, 0x08, 0xd7, 0x08, 0xd7, 0xb8, 0xe8, 0x6d, 0x43, 0x91, 0xf7, 0xa6, 0x5f,
		0x28, 0xf2, 0xa6, 0x5a, 0x19, 0x45, 0xde, 0x2c, 0x46, 0x85, 0x22, 0xef, 0x2d, 0x31, 0x2a, 0x14,
		0x79, 0xe7, 0x56, 0x5a, 0xa1, 0x36, 0x59, 0xda, 0x62, 0xa8, 0x4d, 0x86, 0x14, 0x85, 0x14, 0x85,
		0x14, 0x85, 0x14, 0x45, 0x6d, 0xb2, 0xa4, 0xb5, 0x50, 0x9b, 0x4c, 0xb7, 0x2e, 0x6a, 0x93, 0x29,
		0x2c, 0x08, 0xb5, 0xc9, 0x0c, 0xeb, 0xa2, 0x36, 0x39, 0xdf, 0xa2, 0x0c, 0x25, 0xb5, 0x12, 0x17,
		0x43, 0xe2, 0x0c, 0x24, 0x19, 0x24, 0x19, 0x24, 0x19, 0x24, 0x19, 0x12, 0x67, 0xb4, 0x24, 0x12,
		0xa8, 0x04, 0x5d, 0xb0, 0x8e, 0x49, 0x95, 0xa0, 0xe3, 0x9a, 0x0c, 0x53, 0x6a, 0x5f, 0xb4, 0x1e,
		0x67, 0xf9, 0x87, 0x78, 0x24, 0x4e, 0xbd, 0xb2, 0xce, 0xdc, 0x28, 0x3e, 0x8e, 0x63, 0xa2, 0xb1,
		0x99, 0xe7, 0xae, 0x7f, 0xea, 0x89, 0x91, 0x35, 0x11, 0x1d, 0x11, 0x5a, 0xe7, 0xce, 0xc3, 0xd4,
		0x0a, 0xe5, 0x83, 0x6a, 0xb5, 0xde, 0xa8, 0x56, 0x4b, 0x8d, 0xfd, 0x46, 0xe9, 0xb0, 0x56, 0x2b,
		0xd7, 0xcb, 0x04, 0x07, 0xa3, 0xd6, 0x45, 0xd8, 0x15, 0xa1, 0xe8, 0xbe, 0x1b, 0x3d, 0x1d, 0x7f,
		0xe8, 0x79, 0x94, 0x4b, 0x7c, 0x8a, 0x44, 0x48, 0x72, 0xc6, 0x29, 0xdb, 0x58, 0x89, 0xb1, 0xd0,
		0x24, 0x0c, 0xb4, 0x48, 0x2a, 0xea, 0xc2, 0x61, 0x27, 0xf6, 0x53, 0x46, 0xf1, 0x71, 0xfc, 0x79,
		0x9a, 0xe9, 0xc7, 0x69, 0x5f, 0xa6, 0x1f, 0xa2, 0xdd, 0x8c, 0xdc, 0xa8, 0xfd, 0x7b, 0xf2, 0x21,
		0xda, 0xd7, 0xe3, 0x0f, 0x71, 0x35, 0xfe, 0x0c, 0xed, 0x0f, 0x9e, 0x78, 0x38, 0x9e, 0x6c, 0xf5,
		0x5d, 0xba, 0xd3, 0x37, 0x7a, 0xa2, 0xa9, 0x5e, 0xd3, 0xd1, 0x89, 0x4c, 0x5b, 0x4b, 0x93, 0x96,
		0x63, 0x11, 0x9b, 0x3f, 0x3f, 0x09, 0xcf, 0x4e, 0x72, 0x15, 0x2a, 0x49, 0xd5, 0xa9, 0xe4, 0x2a,
		0x53, 0xe9, 0x55, 0xa5, 0x14, 0xd1, 0x09, 0xb2, 0x28, 0x04, 0x55, 0xb4, 0x81, 0x3c, 0xaa, 0x40,
		0x1e, 0x3d, 0xa0, 0x8c, 0x12, 0xe8, 0x85, 0xd5, 0xb2, 0xab, 0x38, 0x2d, 0xe1, 0x3b, 0xb7, 0x1e,
		0x41, 0xc9, 0x66, 0xf6, 0x16, 0x4c, 0x16, 0x90, 0x2d, 0x1e, 0x48, 0xc2, 0xa4, 0x64, 0x61, 0x51,
		0xca, 0x30, 0x28, 0x79, 0xd8, 0x93, 0x3a, 0xcc, 0xc9, 0x16, 0xd6, 0x64, 0x0b, 0x63, 0x72, 0x84,
		0x2d, 0xf5, 0x16, 0xf7, 0x64, 0x61, 0x48, 0x86, 0xb0, 0x23, 0x51, 0x98, 0x51, 0xa2, 0x7e, 0x90,
		0x48, 0x2a, 0xa2, 0xb0, 0x7f, 0x4b, 0x87, 0xfe, 0xc9, 0xd5, 0x01, 0xfd, 0x80, 0x7e, 0x40, 0x3f,
		0xa0, 0x5f, 0x9a, 0xb5, 0xd3, 0x35, 0xd8, 0xa2, 0x6c, 0xac, 0x35, 0xdd, 0x50, 0x6b, 0xfe, 0x7f,
		0x2f, 0x03, 0x18, 0x23, 0xe4, 0x8c, 0x92, 0xff, 0x4e, 0xba, 0x6f, 0x79, 0x41, 0xc7, 0xf1, 0xa4,
		0x77, 0xde, 0xd2, 0xd5, 0x2b, 0x79, 0xa4, 0x5e, 0xc9, 0x83, 0x57, 0x82, 0x57, 0x82, 0x57, 0x82,
		0x57, 0x82, 0x57, 0x5a, 0xd1, 0x2b, 0x79, 0x89, 0x57, 0xf2, 0xcc, 0xf1, 0x4a, 0x38, 0x6b, 0xa1,
		0x3e, 0x6b, 0x91, 0x98, 0x13, 0x21, 0xe1, 0x64, 0xe5, 0x8d, 0xc2, 0xe7, 0x2c, 0xfb, 0xf9, 0x2a,
		0x7d, 0xae, 0x96, 0x94, 0x33, 0xaa, 0x0d, 0xcf, 0x75, 0x37, 0x33, 0xab, 0xf5, 0x8d, 0x61, 0x03,
		0x43, 0x90, 0x74, 0x30, 0x27, 0xf5, 0x40, 0x4e, 0xd2, 0x41, 0x9c, 0xb4, 0x03, 0x38, 0x99, 0xf4,
		0x73, 0x9a, 0x6e, 0x8e, 0xcc, 0x59, 0x86, 0xdd, 0x4a, 0x26, 0x98, 0x64, 0x84, 0x92, 0x8c, 0x40,
		0xbe, 0x24, 0x8c, 0xc9, 0x8d, 0x35, 0x1c, 0x9c, 0x65, 0x1d, 0x9e, 0x59, 0xce, 0x30, 0xbe, 0x13,
		0x7e, 0xec, 0x76, 0x12, 0xa4, 0xb7, 0x3b, 0x77, 0xa2, 0xf3, 0x97, 0xfc, 0x83, 0xf8, 0x85, 0xab,
		0xc8, 0x3a, 0x47, 0x24, 0xa8, 0xca, 0xb0, 0x46, 0xd6, 0x27, 0x87, 0x06, 0xb4, 0xe4, 0xa6, 0x1f,
		0x94, 0x64, 0xa7, 0x1f, 0x94, 0xcc, 0x48, 0x3f, 0x90, 0x84, 0x86, 0xd4, 0xb2, 0x3b, 0x7f, 0x09,
		0x08, 0x72, 0xd0, 0x52, 0x4f, 0x09, 0x23, 0x5d, 0x48, 0x13, 0x9e, 0xe8, 0x49, 0x3e, 0xc9, 0xd3,
		0x23, 0xef, 0xab, 0x13, 0xf9, 0x03, 0x7b, 0x9c, 0x56, 0x61, 0x07, 0xbe, 0x3d, 0xa8, 0x0c, 0x6c,
		0xcf, 0xf5, 0xff, 0x8a, 0xe4, 0x7b, 0xa0, 0xa5, 0x2b, 0xc1, 0x0b, 0xc1, 0x0b, 0xc1, 0x0b, 0xc1,
		0x0b, 0xc1, 0x0b, 0x6d, 0xad, 0x17, 0xea, 0x39, 0x51, 0x6c, 0xf7, 0xbc, 0x20, 0xe8, 0xca, 0xec,
		0x22, 0xf2, 0xdc, 0x90, 0x79, 0xe6, 0xf2, 0xf0, 0x37, 0xf0, 0x37, 0xf0, 0x37, 0xf0, 0x37, 0xf0,
		0x37, 0x5b, 0xeb, 0x6f, 0xee, 0x84, 0xe7, 0x05, 0xf6, 0xc0, 0xe9, 0xd2, 0xf8, 0x9b, 0xd9, 0xcb,
		0xeb, 0xec, 0x6f, 0xae, 0x6f, 0xae, 0x9a, 0xef, 0x6f, 0xe0, 0x71, 0xe0, 0x71, 0xe0, 0x71, 0xe0,
		0x71, 0x36, 0xc6, 0x3a, 0xd9, 0xbd, 0x14, 0x29, 0x7a, 0x26, 0xd2, 0xf4, 0x46, 0xa4, 0xed, 0x81,
		0x38, 0xee, 0x75, 0x98, 0x82, 0x35, 0x41, 0xda, 0xce, 0xb8, 0xa5, 0xe1, 0xc5, 0xc5, 0xf5, 0x29,
		0xc5, 0xd5, 0x93, 0xc6, 0x85, 0xc7, 0x27, 0xc7, 0x97, 0x37, 0xcd, 0xcf, 0x24, 0x0b, 0xec, 0x8f,
		0x16, 0x38, 0x69, 0x5e, 0x1f, 0xbf, 0x3b, 0x3b, 0xb5, 0xf4, 0x4e, 0x1c, 0x23, 0xeb, 0x73, 0xf8,
		0x7c, 0x83, 0x49, 0x1a, 0x0b, 0x66, 0xb7, 0xf7, 0xa8, 0xb0, 0x4f, 0x70, 0xf5, 0xb1, 0xed, 0x91,
		0x4c, 0x90, 0x9d, 0xbc, 0x36, 0x47, 0x85, 0x52, 0xbe, 0xb3, 0xca, 0xb4, 0x60, 0xd6, 0xae, 0xdb,
		0xb5, 0x63, 0xef, 0x9b, 0x7c, 0x4e, 0x3d, 0xb9, 0xb0, 0xce, 0x6c, 0x5a, 0x62, 0xc7, 0x40, 0x90,
		0x69, 0x90, 0x69, 0x90, 0x69, 0x84, 0x6f, 0x74, 0x0b, 0xdf, 0x48, 0xba, 0x85, 0xe2, 0x21, 0x0e,
		0x1d, 0x7b, 0xe8, 0x47, 0xb1, 0x73, 0xeb, 0x49, 0xbe, 0x99, 0xa1, 0xe8, 0x89, 0x50, 0xf8, 0x1d,
		0xf9, 0x03, 0xb9, 0x08, 0xf3, 0xfd, 0xaf, 0x3e, 0xbc, 0xaf, 0x1f, 0x54, 0x2a, 0x47, 0x85, 0xe6,
		0xb5, 0xdd, 0xbc, 0x2e, 0x9c, 0x0f, 0xbd, 0xd8, 0xb5, 0x27, 0xb9, 0xad, 0x7b, 0x85, 0x9b, 0xb3,
		0xcf, 0x85, 0x86, 0xe1, 0xc5, 0x2f, 0xcf, 0xcf, 0x25, 0x4f, 0xf5, 0x2f, 0xaf, 0x7a, 0x70, 0xba,
		0x97, 0xc7, 0x48, 0xbb, 0x5a, 0x2b, 0x4f, 0x54, 0x36, 0x7d, 0x88, 0x04, 0x5c, 0x76, 0x72, 0x65,
		0x9d, 0xc9, 0x6c, 0x09, 0x44, 0x16, 0x44, 0x16, 0x44, 0x16, 0x44, 0x76, 0x1d, 0x8b, 0x8d, 0xc6,
		0xb1, 0x50, 0x02, 0x1e, 0x7b, 0xb0, 0x35, 0x3c, 0x36, 0x8a, 0x9d, 0x78, 0x18, 0x99, 0x44, 0x62,
		0xbb, 0x62, 0x10, 0x8a, 0x8e, 0x13, 0x8b, 0xae, 0xe1, 0x54, 0x35, 0xbd, 0xf5, 0x79, 0xe2, 0xa9,
		0x53, 0xcf, 0x06, 0x6c, 0xd4, 0x60, 0x36, 0x6a, 0xbb, 0x5d, 0x3a, 0x42, 0x2a, 0xaf, 0x6b, 0x36,
		0xf8, 0x1a, 0xf8, 0x1a, 0xf8, 0x9a, 0x31, 0x7c, 0x6d, 0xe8, 0xfa, 0x71, 0xb9, 0x4e, 0xc0, 0xd7,
		0xea, 0x12, 0x2f, 0x49, 0x33, 0x65, 0x9f, 0xa6, 0x97, 0x3f, 0x1d, 0x4d, 0x99, 0x0c, 0x32, 0x27,
		0x9a, 0xb5, 0xc4, 0x36, 0xae, 0x9c, 0x7e, 0x2c, 0xf9, 0x13, 0xcd, 0x10, 0x05, 0xfa, 0x47, 0x5b,
		0xaf, 0xd5, 0xf6, 0x6b, 0x78, 0xbc, 0xdb, 0xcd, 0x3a, 0x71, 0xd2, 0x42, 0x23, 0x52, 0x7f, 0x1a,
		0xb0, 0xc7, 0x11, 0x8b, 0x86, 0xd2, 0xf5, 0xe7, 0x4f, 0x0c, 0xb8, 0x62, 0xa0, 0x9a, 0x1d, 0x4f,
		0xde, 0xee, 0x38, 0x03, 0xe7, 0xd6, 0xf5, 0xdc, 0xf8, 0x51, 0xbe, 0xa4, 0x9d, 0x5b, 0x41, 0xe7,
		0xb3, 0x16, 0xc9, 0x53, 0x9d, 0x71, 0xe6, 0x02, 0x0d, 0x0f, 0x0d, 0xbf, 0x6d, 0x1a, 0x7e, 0x8c,
		0x78, 0xc8, 0xc0, 0x27, 0xcc, 0xc0, 0x9f, 0xcc, 0x8c, 0x27, 0x4b, 0xc1, 0x4f, 0xa7, 0xb4, 0x53,
		0x25, 0xe1, 0x4b, 0xf6, 0x33, 0x44, 0x42, 0x9b, 0x32, 0x4b, 0x9e, 0x74, 0xea, 0x3f, 0xf5, 0x74,
		0x7f, 0xb2, 0x29, 0xfe, 0xc8, 0x65, 0x5f, 0x74, 0xb7, 0xef, 0x9d, 0x07, 0x5b, 0x74, 0xee, 0x07,
		0xf6, 0xc0, 0x89, 0xef, 0x08, 0x3a, 0xe2, 0xbc, 0xb8, 0x3e, 0x48, 0x1b, 0x48, 0x1b, 0x48, 0xdb,
		0x96, 0x91, 0xb6, 0xa1, 0xeb, 0xc7, 0x07, 0x04, 0x7c, 0xad, 0x86, 0x73, 0x17, 0xc9, 0x17, 0xc7,
		0xb9, 0x8b, 0x22, 0x3a, 0x58, 0x60, 0x3b, 0x77, 0xa9, 0xd4, 0x70, 0xea, 0xc2, 0x47, 0x15, 0x0b,
		0x88, 0x8e, 0x2e, 0x27, 0x9e, 0xee, 0xfd, 0xf0, 0xde, 0x76, 0x42, 0xe1, 0xd8, 0x4e, 0xb7, 0x1b,
		0x8a, 0x28, 0x12, 0x34, 0x04, 0x74, 0xd1, 0x3a, 0x3a, 0x47, 0x4a, 0xf7, 0x11, 0x21, 0x05, 0xd9,
		0x06, 0xd9, 0x06, 0xd9, 0x06, 0xd9, 0x06, 0xd9, 0x06, 0x1f, 0x03, 0xd9, 0x06, 0xd9, 0x06, 0xd9,
		0xde, 0xe8, 0x21, 0xfa, 0x22, 0x96, 0xcf, 0xac, 0x47, 0x17, 0x05, 0xc5, 0x04, 0xc5, 0x04, 0xc5,
		0xdc, 0x32, 0x8a, 0x29, 0xef, 0xc5, 0x2f, 0xcc, 0x54, 0x3d, 0x4a, 0xbc, 0xe6, 0xa5, 0x13, 0xc7,
		0x22, 0xf4, 0xa5, 0x73, 0x4c, 0xeb, 0x8b, 0x63, 0xf7, 0x8e, 0xed, 0x0f, 0x25, 0xfb, 0xb0, 0xf5,
		0xbd, 0xf2, 0xb4, 0xf3, 0xf5, 0xeb, 0xde, 0xf4, 0x4f, 0xaa, 0x4f, 0xbb, 0xdf, 0xf7, 0xdf, 0x1e,
		0x3e, 0xbd, 0xf8, 0x71, 0xe5, 0x49, 0x9e, 0x91, 0xb5, 0x64, 0xde, 0xa5, 0x8b, 0xeb, 0xe6, 0x3f,
		0xc9, 0x6e, 0xd5, 0xbf, 0xd6, 0xbc, 0x57, 0xff, 0x65, 0xe5, 0x34, 0x4d, 0xf9, 0xcc, 0x8d, 0xe2,
		0xe3, 0x38, 0x0e, 0xe5, 0xbe, 0x95, 0xe7, 0xae, 0x7f, 0xea, 0x89, 0x11, 0xa8, 0x49, 0xa6, 0x81,
		0x23, 0x8a, 0x3c, 0x75, 0xe5, 0xf2, 0x41, 0xb5, 0x5a, 0x6f, 0x54, 0xab, 0xa5, 0xc6, 0x7e, 0xa3,
		0x74, 0x58, 0xab, 0x95, 0xeb, 0x65, 0x99, 0x9a, 0xf0, 0x22, 0xec, 0x8a, 0x50, 0x74, 0xdf, 0x3d,
		0x5a, 0x47, 0x05, 0x7f, 0xe8, 0x79, 0x14, 0x97, 0xfe, 0x14, 0x89, 0x50, 0x2a, 0x8f, 0x45, 0x02,
		0xbb, 0x6c, 0xb5, 0x91, 0xba, 0x98, 0xa6, 0x3f, 0xc2, 0xa4, 0x64, 0x8e, 0x9b, 0xe3, 0x15, 0x2e,
		0xc2, 0xbe, 0xe3, 0xbb, 0xff, 0x93, 0xfc, 0xb1, 0xd0, 0x0b, 0xc2, 0xc2, 0x75, 0xec, 0xf8, 0x5d,
		0x27, 0xec, 0xa6, 0x3f, 0x7b, 0x5b, 0x68, 0xfa, 0xbd, 0x20, 0xbc, 0x4f, 0xfe, 0xf0, 0xd5, 0x8f,
		0x45, 0xe7, 0xce, 0x0f, 0xbc, 0xa0, 0xff, 0x58, 0xb0, 0x0b, 0x17, 0x03, 0xe1, 0x17, 0xae, 0x1f,
		0xa3, 0x58, 0xdc, 0x47, 0x85, 0xe4, 0xb2, 0x9d, 0xc0, 0xf7, 0x45, 0x22, 0x9e, 0xec, 0x74, 0xbe,
		0x66, 0x21, 0x12, 0xe1, 0x37, 0xb7, 0x23, 0xbe, 0xfa, 0x27, 0xa2, 0xe7, 0xfa, 0x6e, 0xb2, 0x8e,
		0x5d, 0x68, 0x5e, 0x5f, 0x14, 0x0b, 0xcd, 0xd3, 0xf7, 0x85, 0x83, 0xfd, 0xea, 0xc1, 0x51, 0xa5,
		0x54, 0xaa, 0xec, 0x21, 0x77, 0x5e, 0x2d, 0x81, 0x5b, 0x48, 0xe4, 0xb4, 0x35, 0x16, 0x68, 0x65,
		0x03, 0xb5, 0xf2, 0x20, 0x70, 0x69, 0xba, 0x7b, 0x4e, 0x2e, 0x8c, 0xee, 0x9e, 0x88, 0x0d, 0x20,
		0x36, 0x80, 0xd8, 0x40, 0x2e, 0x63, 0x03, 0xe8, 0xee, 0xb9, 0xad, 0x94, 0xfd, 0xea, 0xc3, 0xfb,
		0x7a, 0x65, 0xbf, 0x72, 0x54, 0xb8, 0x1c, 0x86, 0x7d, 0x51, 0xb8, 0x08, 0xdd, 0xbe, 0xeb, 0x3b,
		0x71, 0x10, 0x16, 0x9a, 0x5d, 0xe1, 0xc7, 0x6e, 0x2f, 0x9d, 0xcb, 0x9c, 0xb4, 0x8b, 0x1c, 0xf1,
		0xb2, 0xa4, 0xd2, 0x71, 0xdc, 0x3d, 0xb2, 0xbc, 0x0f, 0x66, 0xad, 0x23, 0xb3, 0xde, 0xf4, 0x99,
		0x82, 0x00, 0x1b, 0x48, 0x80, 0xff, 0x23, 0xdc, 0xfe, 0x5d, 0x2c, 0xba, 0x49, 0xde, 0xbe, 0x7c,
		0x1a, 0x3c, 0x7b, 0x79, 0x90, 0x61, 0x90, 0x61, 0x90, 0x61, 0x90, 0x61, 0x90, 0x61, 0x25, 0x64,
		0xf8, 0x8d, 0xda, 0x2b, 0x6c, 0xf8, 0x08, 0xad, 0x63, 0xdf, 0x0f, 0xe2, 0x84, 0x81, 0x48, 0x79,
		0x80, 0x56, 0xd4, 0xb9, 0x13, 0xf7, 0xce, 0xc0, 0x89, 0xef, 0x46, 0x8f, 0xaf, 0x18, 0x0c, 0x84,
		0xdf, 0x49, 0x20, 0xd2, 0xf6, 0xc7, 0xc1, 0x3f, 0x7b, 0xd2, 0x45, 0xb0, 0xf8, 0xf2, 0x07, 0xd1,
		0xdc, 0x4f, 0x8a, 0x83, 0x30, 0x88, 0x83, 0x4e, 0xe0, 0x45, 0xd9, 0x77, 0xc5, 0xd1, 0x7b, 0x54,
		0xec, 0x7b, 0xc1, 0xad, 0xe3, 0x15, 0xa3, 0xd8, 0x89, 0x37, 0x74, 0x2f, 0xeb, 0xdf, 0xfd, 0x0d,
		0xee, 0xbc, 0x15, 0xbb, 0xf7, 0x22, 0xdc, 0x3c, 0x55, 0x3b, 0x7b, 0x4d, 0xd2, 0xeb, 0x6d, 0x68,
		0x0b, 0x93, 0x37, 0x63, 0xc3, 0xcb, 0xc8, 0x72, 0x89, 0x32, 0x5d, 0x21, 0x81, 0x0b, 0x94, 0xed,
		0xfa, 0xc8, 0x5c, 0x1e, 0x99, 0xab, 0xa3, 0x71, 0x71, 0x6a, 0xf1, 0xf0, 0xc4, 0x95, 0x73, 0xb8,
		0x6c, 0x75, 0x26, 0x6f, 0x81, 0x64, 0xf2, 0x9f, 0x5e, 0x57, 0x2e, 0x1b, 0x2e, 0x83, 0x0d, 0x83,
		0x0d, 0x83, 0x0d, 0x4b, 0x52, 0xd2, 0xae, 0xe4, 0xfc, 0x14, 0x2f, 0x1a, 0xd8, 0x9e, 0xdb, 0x13,
		0x23, 0x2f, 0x6f, 0xbb, 0x7e, 0x2c, 0xc2, 0x6f, 0x8e, 0x27, 0xdf, 0xc8, 0xb2, 0x0e, 0x31, 0x0b,
		0x97, 0x93, 0x6c, 0x0f, 0x14, 0xe1, 0x86, 0xec, 0xe2, 0xe5, 0x4a, 0xa9, 0x24, 0x37, 0x72, 0xd6,
		0x92, 0xfc, 0xf1, 0xe5, 0x46, 0x21, 0xc8, 0xf0, 0x97, 0x12, 0x87, 0x19, 0xf0, 0x98, 0x1a, 0x97,
		0xd9, 0xf0, 0x99, 0x0d, 0xa7, 0x79, 0xf0, 0x5a, 0x2e, 0x6e, 0x4b, 0xc6, 0x6f, 0xba, 0xa8, 0xc6,
		0x9c, 0xc5, 0x4b, 0xef, 0xa7, 0xfd, 0x12, 0x5f, 0xea, 0x04, 0x97, 0xa6, 0x29, 0x3d, 0x9b, 0x7c,
		0xd1, 0xbc, 0xa0, 0x05, 0xea, 0x52, 0xb4, 0x6c, 0x11, 0xe2, 0x92, 0xb4, 0x6c, 0x1d, 0xae, 0xea,
		0xa5, 0x67, 0x9b, 0xa5, 0xae, 0x62, 0x22, 0x7a, 0x8d, 0x67, 0x4d, 0x80, 0xb0, 0x64, 0x6d, 0xce,
		0x04, 0x08, 0xfb, 0x73, 0x6f, 0x83, 0x19, 0xbc, 0x31, 0xe3, 0xaa, 0x2d, 0xad, 0x7d, 0x98, 0xe4,
		0xf0, 0xee, 0xdc, 0xf5, 0x1f, 0xfb, 0x41, 0x6c, 0x07, 0x1d, 0xbb, 0x13, 0xdc, 0x0f, 0x92, 0xbe,
		0x10, 0x5d, 0xdb, 0x13, 0x4e, 0x6f, 0xb4, 0x98, 0xae, 0x07, 0xcd, 0x12, 0x6f, 0x71, 0x22, 0x95,
		0x42, 0xd1, 0x0b, 0x45, 0x74, 0xc7, 0x24, 0xcc, 0xe6, 0x56, 0x83, 0x30, 0x81, 0x30, 0x81, 0x30,
		0x81, 0x30, 0x81, 0x30, 0x81, 0x30, 0x81, 0x30, 0x81, 0x30, 0x81, 0x30, 0x81, 0x30, 0x81, 0x30,
		0x31, 0x52, 0x98, 0x68, 0x75, 0x8a, 0x45, 0xf4, 0x80, 0x78, 0x13, 0x84, 0xc6, 0x79, 0x31, 0xc5,
		0xf4, 0xcc, 0x3c, 0x4f, 0x93, 0x71, 0xa2, 0x81, 0xdd, 0x17, 0xbe, 0x08, 0xe5, 0x3e, 0xa1, 0x19,
		0xa9, 0x39, 0x75, 0x7d, 0x64, 0x1b, 0x68, 0x28, 0x22, 0x91, 0x6d, 0xa0, 0x46, 0x24, 0xe6, 0x3c,
		0xdb, 0x40, 0x72, 0xe2, 0xd2, 0xdc, 0x8b, 0x20, 0x35, 0x81, 0x89, 0x08, 0x5a, 0x10, 0xb7, 0x42,
		0xdc, 0x0a, 0x71, 0x2b, 0xd9, 0x9c, 0x5f, 0x36, 0x54, 0xcd, 0xb0, 0xa1, 0x9e, 0x1b, 0x46, 0xb1,
		0xfd, 0x1f, 0xc7, 0x8d, 0xe9, 0x22, 0xf1, 0x0b, 0x69, 0xd2, 0xa2, 0x85, 0x89, 0x6c, 0x88, 0x26,
		0x38, 0x4f, 0x0e, 0x76, 0x1c, 0xa0, 0xc7, 0x08, 0x7e, 0x5c, 0x20, 0xc8, 0x0e, 0x86, 0xec, 0xa0,
		0xc8, 0x0b, 0x8e, 0xc4, 0x01, 0x1c, 0xa2, 0x77, 0x86, 0x2c, 0xd8, 0x3f, 0xf7, 0xc6, 0x0c, 0x5d,
		0x3f, 0xae, 0x57, 0x29, 0x5f, 0x98, 0x14, 0xbf, 0x0e, 0x08, 0x97, 0xa0, 0x3d, 0x04, 0x98, 0x7c,
		0xd1, 0xbe, 0xf0, 0x05, 0xae, 0x43, 0x81, 0x6c, 0x31, 0xa6, 0xc3, 0x81, 0x6c, 0x3d, 0xee, 0xe8,
		0xf0, 0xb3, 0xad, 0x73, 0x45, 0x89, 0x89, 0x61, 0x61, 0xd6, 0x54, 0x18, 0x0e, 0x0f, 0xe6, 0x4c,
		0x85, 0xb6, 0x99, 0x21, 0xac, 0x87, 0xd0, 0x55, 0xd1, 0x5f, 0xbd, 0x65, 0x94, 0x8b, 0x25, 0x3e,
		0x8b, 0xc8, 0xd6, 0x61, 0x3b, 0x93, 0xa0, 0x7b, 0xc0, 0x14, 0x73, 0x04, 0x46, 0x22, 0xea, 0xde,
		0x79, 0x50, 0xa1, 0xdd, 0xe6, 0x97, 0x85, 0x72, 0x83, 0x72, 0x83, 0x72, 0x83, 0x72, 0x83, 0x72,
		0x83, 0x72, 0x83, 0x72, 0x83, 0x72, 0x83, 0x72, 0x83, 0xf5, 0x40, 0xb9, 0x41, 0xb9, 0x41, 0xb9,
		0x2d, 0x51, 0x6e, 0x91, 0xe8, 0x04, 0x7e, 0x57, 0x85, 0x78, 0x5b, 0xb8, 0x32, 0xf4, 0x1b, 0xf4,
		0x1b, 0xf4, 0x1b, 0xf4, 0x1b, 0xf4, 0x1b, 0xf4, 0x1b, 0xf4, 0x1b, 0xf4, 0x1b, 0xf4, 0x1b, 0xac,
		0x07, 0xfa, 0x0d, 0xfa, 0xcd, 0x7c, 0xfd, 0xb6, 0xd5, 0xe5, 0x5c, 0x2a, 0xaa, 0x86, 0x66, 0x6b,
		0x60, 0xa4, 0x16, 0x11, 0xc9, 0x7f, 0xa8, 0x32, 0xbb, 0x5a, 0x8c, 0xdb, 0x2a, 0x93, 0x15, 0x00,
		0x8c, 0x2f, 0x6f, 0x58, 0xfe, 0x7f, 0x05, 0xf9, 0xff, 0x8c, 0x02, 0x1c, 0xf9, 0xff, 0x79, 0x74,
		0x12, 0x64, 0xf9, 0xff, 0x4e, 0xd7, 0x19, 0x8c, 0xd8, 0xa1, 0x9d, 0x20, 0x37, 0x7d, 0xf4, 0xf1,
		0xc5, 0x7a, 0x88, 0x39, 0x72, 0x43, 0x1c, 0x23, 0xd4, 0x71, 0x41, 0x1e, 0x3b, 0xf4, 0xb1, 0x43,
		0x20, 0x2f, 0x14, 0xd2, 0x4a, 0x2d, 0xf3, 0x63, 0x8e, 0xb3, 0x18, 0x66, 0xc7, 0xa3, 0x85, 0xe9,
		0x03, 0x90, 0xe5, 0x2a, 0xe1, 0x1a, 0xa7, 0xfe, 0xf0, 0x9e, 0xfe, 0xfd, 0xbc, 0x09, 0xae, 0xe3,
		0xd0, 0xf5, 0xfb, 0x2c, 0x81, 0x1f, 0xab, 0x34, 0x7a, 0x56, 0x67, 0xcd, 0x8f, 0xa7, 0xc7, 0x57,
		0x16, 0x43, 0x40, 0xab, 0x3c, 0x5a, 0xee, 0xf4, 0x9f, 0x97, 0x17, 0x1f, 0x4f, 0x3f, 0xde, 0x34,
		0x8f, 0xcf, 0x2c, 0xda, 0x30, 0xc8, 0x5b, 0xea, 0x47, 0xd5, 0x4c, 0x50, 0x86, 0xe1, 0x39, 0x4d,
		0xdf, 0x33, 0xe9, 0x32, 0x64, 0xe1, 0x8a, 0xa9, 0x51, 0x1c, 0x15, 0x4a, 0x86, 0x86, 0xaa, 0xb6,
		0xfd, 0xe4, 0x1c, 0x15, 0xab, 0xe0, 0xb0, 0xe0, 0xb0, 0xe0, 0xb0, 0xe0, 0xb0, 0xeb, 0xbe, 0x31,
		0x38, 0x37, 0x7f, 0xf5, 0x17, 0xce, 0xcd, 0x37, 0x5b, 0x0f, 0xe7, 0xe6, 0x52, 0x4d, 0x05, 0xe7,
		0xe6, 0x38, 0x37, 0xd7, 0xea, 0xea, 0x2d, 0x14, 0x60, 0xa2, 0x00, 0x13, 0x42, 0x04, 0x42, 0x04,
		0x42, 0x04, 0x42, 0x04, 0x42, 0x04, 0x42, 0x04, 0x42, 0x04, 0x42, 0x04, 0x42, 0x04, 0x42, 0x04,
		0x42, 0x84, 0x57, 0x88, 0xa0, 0x9e, 0x10, 0x72, 0x04, 0x72, 0x04, 0x72, 0x04, 0x72, 0x04, 0x72,
		0x04, 0x72, 0x04, 0x72, 0x04, 0x72, 0x04, 0x72, 0x04, 0x72, 0x04, 0x72, 0x84, 0xf5, 0x8a, 0x28,
		0x8f, 0x5b, 0xb9, 0x3c, 0x6e, 0x5c, 0xd5, 0x85, 0xd1, 0x6a, 0xea, 0xac, 0x41, 0x03, 0x2b, 0xb0,
		0xa4, 0x56, 0x21, 0x86, 0xc3, 0x4e, 0xec, 0xa7, 0x94, 0xf6, 0xe3, 0x78, 0x7b, 0xcd, 0x74, 0x77,
		0xed, 0xcb, 0x74, 0x4f, 0xed, 0x66, 0xe4, 0x46, 0xed, 0xdf, 0x93, 0x3d, 0xb5, 0x6f, 0x92, 0x3d,
		0xb5, 0xcf, 0xa2, 0xc1, 0xef, 0xcf, 0x5b, 0xca, 0xd1, 0xd4, 0xb7, 0x68, 0xd0, 0x93, 0x3f, 0xea,
		0x6d, 0x74, 0x51, 0xcc, 0x77, 0xd3, 0x30, 0x4a, 0x81, 0xf9, 0x6e, 0x6a, 0xa2, 0x0c, 0x98, 0xef,
		0xb6, 0xd1, 0x8b, 0x80, 0xf9, 0x6e, 0xa8, 0xef, 0x56, 0x0e, 0x41, 0x6c, 0x50, 0xc4, 0x03, 0x49,
		0x66, 0xa8, 0x1c, 0xb2, 0xfa, 0xee, 0x68, 0xd0, 0x4b, 0x8b, 0x56, 0xf8, 0x4e, 0x84, 0x16, 0xac,
		0x89, 0xb3, 0x20, 0x6e, 0xa8, 0x63, 0x84, 0x3c, 0x2e, 0xe8, 0x63, 0x87, 0x40, 0x76, 0x28, 0xe4,
		0x85, 0x44, 0xda, 0x10, 0x18, 0xce, 0x82, 0x5e, 0x8d, 0x5f, 0x38, 0x0b, 0x7a, 0xc5, 0x07, 0xc1,
		0x59, 0x10, 0x89, 0xad, 0xe3, 0x2c, 0x48, 0x92, 0xa9, 0xe0, 0x2c, 0x08, 0x67, 0x41, 0x4b, 0xbf,
		0xd0, 0x5b, 0x72, 0xd1, 0x3a, 0x98, 0x0d, 0xb0, 0x54, 0xb3, 0xdd, 0x05, 0x5e, 0x97, 0x59, 0xb2,
		0xcd, 0x2e, 0x49, 0x64, 0x5a, 0x27, 0xa2, 0xe7, 0x0c, 0xbd, 0x98, 0x94, 0x90, 0x58, 0xb5, 0x52,
		0xa9, 0x44, 0x43, 0x97, 0x5b, 0x10, 0xb2, 0x10, 0xb2, 0x10, 0xb2, 0x10, 0xb2, 0x10, 0xb2, 0x10,
		0xb2, 0x10, 0xb2, 0x10, 0xb2, 0x10, 0xb2, 0xb0, 0x1e, 0x08, 0x59, 0x08, 0x59, 0x08, 0xd9, 0x25,
		0x42, 0x36, 0x2d, 0x0d, 0xe3, 0x95, 0xb2, 0x2f, 0x17, 0x85, 0x6a, 0x83, 0x6a, 0x83, 0x6a, 0x83,
		0x6a, 0x83, 0x6a, 0x83, 0x6a, 0x83, 0x6a, 0x83, 0x6a, 0x83, 0x6a, 0x83, 0xf5, 0x40, 0xb5, 0x41,
		0xb5, 0x61, 0xb4, 0x1d, 0xe5, 0x03, 0xcd, 0x65, 0xed, 0x5e, 0x34, 0xe8, 0x61, 0x9e, 0x9d, 0x34,
		0xad, 0x8e, 0x79, 0x76, 0xa8, 0x77, 0xd0, 0x44, 0x6d, 0xa3, 0xde, 0x81, 0xd1, 0x33, 0x60, 0x9e,
		0xdd, 0x3a, 0x90, 0x86, 0x40, 0xa3, 0x52, 0xa8, 0xe3, 0x82, 0x3c, 0x76, 0xe8, 0x63, 0x87, 0x40,
		0x5e, 0x28, 0xa4, 0xd5, 0x57, 0x98, 0x67, 0xb7, 0x26, 0x3f, 0xc3, 0x3c, 0xbb, 0xd5, 0x56, 0xc3,
		0x3c, 0xbb, 0x8d, 0x1e, 0x15, 0xe6, 0xd9, 0xe9, 0x1b, 0x9f, 0xda, 0xf6, 0x43, 0x72, 0x54, 0xe8,
		0x82, 0xb9, 0x82, 0xb9, 0x82, 0xb9, 0x82, 0xb9, 0xae, 0xf6, 0xc6, 0xe0, 0x88, 0xfc, 0xd5, 0x5f,
		0x38, 0x22, 0xdf, 0x6c, 0x3d, 0x1c, 0x91, 0x4b, 0x35, 0x15, 0x1c, 0x91, 0xe3, 0x88, 0x5c, 0xab,
		0xab, 0xb7, 0x50, 0x70, 0x8a, 0x82, 0xd3, 0x75, 0x17, 0x41, 0xc1, 0x29, 0x74, 0x19, 0x74, 0x19,
		0x74, 0x19, 0x74, 0x19, 0x74, 0x19, 0x74, 0x19, 0x74, 0x19, 0x74, 0x19, 0x74, 0x19, 0x74, 0x19,
		0x74, 0x99, 0x04, 0x5d, 0x86, 0xfa, 0x49, 0x88, 0x10, 0x88, 0x10, 0x88, 0x10, 0x88, 0x10, 0x88,
		0x10, 0x88, 0x10, 0x88, 0x10, 0x88, 0x10, 0x88, 0x10, 0x88, 0x10, 0x88, 0x10, 0x86, 0x2b, 0xa2,
		0x1c, 0xf0, 0x75, 0xe5, 0x80, 0x98, 0xdf, 0xa7, 0xda, 0x04, 0x54, 0x3d, 0x7a, 0x3d, 0x86, 0xf6,
		0x5d, 0x0f, 0x7a, 0xb9, 0x1a, 0xd5, 0x27, 0xb5, 0xe6, 0x94, 0xa4, 0xd6, 0x94, 0x6c, 0x5c, 0x5f,
		0x05, 0xe3, 0xfa, 0x4c, 0x8a, 0x34, 0x60, 0x5c, 0x9f, 0xce, 0xe3, 0xfa, 0xbc, 0x68, 0x60, 0x7b,
		0x6e, 0x4f, 0x8c, 0xf0, 0x9a, 0x2e, 0x80, 0x9a, 0xbd, 0x17, 0x8b, 0x97, 0x93, 0x5d, 0x38, 0x4b,
		0x98, 0xce, 0x62, 0x95, 0x2b, 0xb2, 0xd3, 0x58, 0x5a, 0x34, 0xb5, 0xfd, 0x25, 0xcc, 0x32, 0x44,
		0x6d, 0xbf, 0x4e, 0x38, 0xcd, 0x83, 0xd7, 0x66, 0xc8, 0x3c, 0xb2, 0x08, 0xef, 0x4c, 0x64, 0xb7,
		0x5c, 0xa7, 0x30, 0xf8, 0x14, 0x5f, 0xea, 0x04, 0x97, 0xa6, 0x8d, 0xe4, 0x12, 0xc6, 0xd3, 0x39,
		0x22, 0xb7, 0x5c, 0x11, 0x5b, 0xf6, 0x58, 0x1b, 0x5f, 0x8c, 0x8d, 0x30, 0x32, 0xcb, 0x12, 0x91,
		0xcd, 0x4c, 0xa0, 0x5e, 0xab, 0xed, 0xd7, 0x60, 0x06, 0x5a, 0xf8, 0x06, 0xba, 0xab, 0xb6, 0xb6,
		0xa0, 0x7b, 0xd6, 0x48, 0x11, 0x84, 0xa2, 0x17, 0x8a, 0xe8, 0x8e, 0x49, 0x7f, 0xcc, 0xad, 0x06,
		0xfe, 0x0d, 0xfe, 0x0d, 0xfe, 0x0d, 0xfe, 0x0d, 0xfe, 0x0d, 0xfe, 0x0d, 0xfe, 0x0d, 0xfe, 0x0d,
		0xfe, 0x0d, 0xfe, 0xad, 0x37, 0xff, 0xc6, 0x79, 0x35, 0xd5, 0x79, 0xb5, 0xbc, 0x34, 0x05, 0x09,
		0x07, 0xc5, 0x6f, 0x14, 0x3e, 0x5e, 0xd9, 0x8f, 0x55, 0xc5, 0xe3, 0xb4, 0xa4, 0x9c, 0xb4, 0xaf,
		0x99, 0x72, 0xb0, 0x99, 0x15, 0xad, 0xff, 0xec, 0x37, 0x78, 0xee, 0x56, 0x1c, 0x3a, 0x7e, 0x34,
		0x08, 0xc2, 0xcd, 0xbb, 0xc0, 0x65, 0x3c, 0xf8, 0xf9, 0x92, 0x1b, 0xda, 0xa3, 0x9c, 0x74, 0x02,
		0x69, 0x32, 0x5a, 0xa6, 0x6c, 0x26, 0x90, 0xc9, 0xb2, 0x65, 0x31, 0x99, 0x0c, 0x26, 0x93, 0xbd,
		0x34, 0x32, 0x57, 0x2d, 0x26, 0xcb, 0x3a, 0xfe, 0xb7, 0x3a, 0x93, 0xb7, 0x40, 0x72, 0x02, 0x51,
		0x7a, 0x5d, 0xcd, 0x33, 0x88, 0x4a, 0xc8, 0x20, 0x32, 0x29, 0x42, 0x86, 0x0c, 0x22, 0xdd, 0x33,
		0x88, 0xee, 0xe3, 0xa1, 0x1d, 0xb9, 0xff, 0x23, 0x68, 0x03, 0xf7, 0xd9, 0x2a, 0x08, 0xd8, 0x23,
		0x60, 0xaf, 0x0e, 0x8e, 0xd8, 0x60, 0x89, 0x07, 0x9e, 0x68, 0xc2, 0x27, 0x08, 0xd8, 0xcf, 0xe1,
		0x0b, 0x02, 0xf6, 0x53, 0x1b, 0x47, 0xc0, 0x7e, 0x23, 0x9b, 0x45, 0xc0, 0x7e, 0x45, 0x13, 0x40,
		0xc0, 0x5e, 0x1f, 0xdf, 0x40, 0x77, 0xd5, 0xd6, 0x56, 0xd7, 0xf6, 0xb1, 0xcd, 0x6a, 0xc4, 0x49,
		0xc6, 0x6a, 0xd7, 0xe5, 0x0d, 0x7d, 0x4f, 0x02, 0xae, 0x52, 0x47, 0x30, 0xa2, 0xec, 0x4d, 0x75,
		0xd0, 0x0a, 0x65, 0x6f, 0x08, 0x5a, 0x21, 0x68, 0x85, 0xa0, 0x15, 0x82, 0x56, 0x08, 0x5a, 0x21,
		0x68, 0x85, 0xa0, 0x15, 0x82, 0x56, 0x08, 0x5a, 0x21, 0x5a, 0x81, 0xa0, 0x15, 0xcc, 0x00, 0x41,
		0x2b, 0xc4, 0x66, 0x4c, 0x8b, 0xcd, 0x20, 0xd1, 0x94, 0xea, 0xc9, 0x2a, 0x7a, 0xa2, 0xaa, 0x72,
		0x4d, 0xb3, 0xf5, 0x55, 0xa5, 0x9b, 0xbe, 0x61, 0xb4, 0x19, 0x59, 0xb6, 0xc2, 0x6a, 0x23, 0x1b,
		0x58, 0xc6, 0x1a, 0x16, 0xb1, 0x9e, 0x1d, 0xac, 0xfe, 0x14, 0xd7, 0x78, 0x82, 0x56, 0x52, 0x71,
		0xdb, 0x73, 0x3a, 0x22, 0x5a, 0xfb, 0xe9, 0x65, 0xca, 0x67, 0xea, 0x5a, 0x6b, 0xda, 0xd2, 0x66,
		0x81, 0xda, 0x8d, 0x23, 0x25, 0x32, 0x22, 0x22, 0x12, 0x23, 0x1f, 0xb2, 0x22, 0x1c, 0xd2, 0x23,
		0x19, 0xd2, 0x23, 0x16, 0x72, 0x23, 0x13, 0xbc, 0xf8, 0xb7, 0x69, 0x20, 0xf4, 0xf9, 0xb5, 0x91,
		0x97, 0xe1, 0xff, 0x7c, 0x49, 0x64, 0xf8, 0x33, 0x86, 0x28, 0x91, 0xe1, 0x8f, 0x0c, 0xff, 0x9f,
		0x5c, 0xc8, 0xe9, 0xb9, 0x76, 0xe4, 0xf4, 0x5c, 0xf9, 0xa7, 0xa5, 0xd9, 0x95, 0x91, 0xe5, 0xaf,
		0x11, 0x1c, 0x50, 0xc1, 0x02, 0x39, 0x3c, 0x90, 0xc3, 0x04, 0x2d, 0x5c, 0xe8, 0x19, 0x2d, 0x91,
		0x7e, 0x60, 0x3a, 0x4e, 0x23, 0xa2, 0x39, 0x26, 0x75, 0x7a, 0x44, 0x87, 0xa3, 0x65, 0x1c, 0x8e,
		0xe2, 0x70, 0x54, 0x27, 0x08, 0xe2, 0x81, 0x22, 0xb9, 0x90, 0x24, 0x19, 0x9a, 0xc8, 0x20, 0x6a,
		0x86, 0xf9, 0xa4, 0x11, 0x13, 0xe2, 0x31, 0x70, 0xd9, 0x4a, 0x98, 0xfd, 0xc6, 0x0d, 0x6b, 0x8c,
		0xf0, 0xc6, 0x05, 0x73, 0xec, 0x70, 0xc7, 0x0e, 0x7b, 0xbc, 0xf0, 0x47, 0x03, 0x83, 0x44, 0x70,
		0x98, 0xdd, 0x1a, 0xbe, 0xd9, 0x6f, 0x9e, 0x70, 0x7a, 0xa1, 0xe8, 0x31, 0x0c, 0x7f, 0x2b, 0x37,
		0x08, 0xd7, 0xb8, 0x4c, 0x83, 0xf8, 0x7b, 0x7b, 0x69, 0xc2, 0x73, 0x31, 0x83, 0xe5, 0x2d, 0x1e,
		0x8b, 0x2a, 0xb9, 0xc0, 0x7f, 0xa9, 0x11, 0x49, 0x2d, 0xf8, 0x67, 0xe2, 0xf1, 0x70, 0x80, 0x70,
		0x80, 0x70, 0x80, 0xba, 0x3a, 0x40, 0x2a, 0x5d, 0xc0, 0xa7, 0x0f, 0xb8, 0x75, 0x02, 0x93, 0x5e,
		0x60, 0x83, 0x4d, 0x4e, 0xf8, 0x54, 0x00, 0xa3, 0xdc, 0x70, 0xaa, 0x0c, 0x56, 0x95, 0xc1, 0xab,
		0x1a, 0x98, 0xa5, 0x85, 0x5b, 0x62, 0xd8, 0xe5, 0xd3, 0x1f, 0x73, 0x6f, 0x9c, 0xdb, 0x15, 0x7e,
		0xec, 0xc6, 0x8f, 0xb4, 0x5a, 0x64, 0x8e, 0x53, 0x32, 0x4c, 0xae, 0xb5, 0x9a, 0xe9, 0x47, 0x7b,
		0xe7, 0x44, 0x8c, 0xef, 0xf9, 0xe4, 0xc6, 0x1e, 0x7f, 0x68, 0xb6, 0x6f, 0xfe, 0xbc, 0x3c, 0xe5,
		0x7a, 0xcd, 0x93, 0xb4, 0xe5, 0x88, 0x7c, 0x10, 0xf7, 0xf4, 0xd7, 0x77, 0xb6, 0x95, 0x66, 0xee,
		0x6c, 0xf3, 0xf2, 0x73, 0xd5, 0x62, 0x5b, 0xfa, 0xe9, 0xed, 0x16, 0xdc, 0xcf, 0x3a, 0xe3, 0xfd,
		0x64, 0x59, 0xa9, 0x05, 0x47, 0xf3, 0x73, 0xdf, 0x4c, 0xdb, 0x0d, 0x61, 0x6e, 0x3d, 0xb6, 0xee,
		0x08, 0x7c, 0x8f, 0x89, 0xb2, 0xd0, 0x45, 0xf8, 0xce, 0xad, 0x27, 0xba, 0x7c, 0x22, 0x69, 0xb2,
		0x20, 0x34, 0x12, 0x34, 0x12, 0x34, 0x12, 0x34, 0x12, 0x34, 0xd2, 0xd4, 0x1b, 0x77, 0x1b, 0x04,
		0x9e, 0x70, 0x7c, 0x4e, 0x7d, 0x54, 0x06, 0xbb, 0x00, 0xbb, 0xa0, 0xba, 0x5d, 0x11, 0x7f, 0x10,
		0x36, 0x42, 0x14, 0x16, 0x0c, 0x03, 0x0c, 0x03, 0x0c, 0x03, 0x0c, 0x63, 0xd1, 0x1b, 0x87, 0x28,
		0x2c, 0xd1, 0x8d, 0xbd, 0x46, 0x18, 0x96, 0xea, 0xd6, 0x9e, 0x7f, 0x3a, 0xbb, 0x69, 0xbe, 0x3f,
		0xbe, 0xbe, 0x41, 0x2c, 0x56, 0xde, 0x4d, 0xfd, 0xf4, 0x91, 0xfb, 0x96, 0x22, 0x1c, 0x0b, 0xc1,
		0x94, 0x0b, 0xc1, 0x64, 0x54, 0x9e, 0x0d, 0xd3, 0x03, 0x67, 0x6a, 0xb5, 0xf0, 0xdc, 0x0e, 0xe0,
		0xf9, 0xdb, 0xe2, 0xa4, 0x52, 0xb1, 0xe8, 0xf4, 0xa4, 0x36, 0xc3, 0xa5, 0x7f, 0xf0, 0x14, 0x29,
		0xa1, 0x11, 0x5f, 0x61, 0x44, 0x84, 0xca, 0x08, 0xe5, 0x9a, 0x1a, 0x89, 0xa1, 0x06, 0x6a, 0x66,
		0x24, 0x86, 0x2a, 0xd4, 0xc4, 0xf9, 0xaf, 0x8c, 0x88, 0x50, 0x1a, 0x21, 0xbb, 0x89, 0xfc, 0x72,
		0x1f, 0x28, 0xb1, 0xa9, 0xfc, 0x52, 0xf3, 0xa1, 0xf6, 0x7f, 0x15, 0xf8, 0x3f, 0xf8, 0x3f, 0xf8,
		0x3f, 0x2d, 0xfc, 0x1f, 0x0a, 0x23, 0x34, 0x95, 0x0b, 0x6c, 0xb2, 0x81, 0x13, 0x3e, 0x15, 0xc0,
		0x28, 0x37, 0x9c, 0x2a, 0x83, 0x55, 0x65, 0xf0, 0xaa, 0x06, 0x66, 0xe9, 0x23, 0x6f, 0x05, 0x1c,
		0xc9, 0xc9, 0xe3, 0x94, 0x28, 0x8c, 0x90, 0xbd, 0x2e, 0x0a, 0x23, 0x8c, 0x7c, 0xe5, 0xf5, 0xb8,
		0x9f, 0x28, 0x8c, 0xd0, 0xcd, 0xd1, 0x20, 0x9f, 0xff, 0x35, 0xa6, 0x8b, 0x7c, 0x7e, 0x50, 0x7b,
		0x50, 0x7b, 0x50, 0x7b, 0x50, 0xfb, 0x05, 0x6f, 0x5c, 0xfe, 0xf2, 0xf9, 0x91, 0x86, 0xfe, 0xba,
		0x27, 0x8f, 0x34, 0x74, 0x38, 0x46, 0x38, 0x46, 0x38, 0x46, 0x38, 0xc6, 0x85, 0x6f, 0x1c, 0x62,
		0x5e, 0x44, 0x37, 0x16, 0x69, 0xe8, 0x64, 0xb7, 0x16, 0x69, 0xe8, 0x04, 0x37, 0x15, 0x69, 0xe8,
		0x7a, 0x7a, 0x1c, 0x1c, 0xc6, 0x17, 0xb6, 0x30, 0x7b, 0x5a, 0xe2, 0xb8, 0x4a, 0xfa, 0xe7, 0xae,
		0x77, 0xdf, 0xfb, 0x3f, 0xc4, 0xe3, 0x74, 0xea, 0x43, 0x81, 0x4a, 0x10, 0x5a, 0x67, 0x6e, 0x14,
		0x1f, 0xc7, 0x31, 0x51, 0x97, 0xfd, 0x73, 0xd7, 0x3f, 0xf5, 0xc4, 0x88, 0x4f, 0x13, 0x0d, 0x0d,
		0xb6, 0xce, 0x9d, 0x87, 0xa9, 0x15, 0xca, 0x07, 0xd5, 0x6a, 0xbd, 0x51, 0xad, 0x96, 0x1a, 0xfb,
		0x8d, 0xd2, 0x61, 0xad, 0x56, 0xae, 0x53, 0x90, 0x36, 0xeb, 0x22, 0xec, 0x8a, 0x50, 0x74, 0xdf,
		0x8d, 0x9e, 0x91, 0x3f, 0xf4, 0x3c, 0xca, 0x25, 0x3e, 0x45, 0x22, 0x24, 0x99, 0x82, 0x2c, 0xdb,
		0x64, 0x89, 0xc1, 0x4e, 0x13, 0x90, 0xb3, 0x48, 0x72, 0x4d, 0x5f, 0x3f, 0xbf, 0xb3, 0x39, 0xd9,
		0x54, 0xfb, 0xb8, 0x67, 0x61, 0x26, 0xb4, 0x3a, 0xbb, 0xd4, 0xc1, 0x1e, 0xb5, 0x19, 0x0d, 0x2d,
		0x61, 0x50, 0xa1, 0x33, 0x8c, 0xef, 0x46, 0xd2, 0xb7, 0x23, 0xf7, 0x51, 0x3d, 0x67, 0x11, 0xce,
		0x5e, 0x1f, 0x63, 0xe9, 0x36, 0xbe, 0xa3, 0x18, 0x4b, 0xf7, 0xbc, 0x00, 0xc6, 0xd2, 0x69, 0x3c,
		0x96, 0x8e, 0x68, 0xcc, 0x05, 0xed, 0x78, 0x0b, 0x8c, 0xa7, 0x63, 0x81, 0x1c, 0x6a, 0xe8, 0x61,
		0x83, 0x20, 0x36, 0x28, 0xe2, 0x81, 0x24, 0x33, 0x64, 0x3a, 0xdd, 0x78, 0xba, 0x61, 0x7c, 0x67,
		0xdf, 0x07, 0x5d, 0x8e, 0xf9, 0x74, 0xd9, 0x52, 0x28, 0xc3, 0xe6, 0x06, 0x36, 0x46, 0x80, 0xe3,
		0x02, 0x3a, 0x76, 0xc0, 0x63, 0x07, 0x3e, 0x5e, 0x00, 0xa4, 0x01, 0x42, 0x22, 0x40, 0xcc, 0x6e,
		0x0d, 0x5f, 0x19, 0x36, 0xcf, 0x59, 0x30, 0xc7, 0x19, 0x30, 0xef, 0xd9, 0xef, 0x73, 0x9d, 0xc3,
		0xa7, 0x9b, 0x7f, 0xb4, 0xcf, 0x2f, 0x4e, 0xa8, 0xcf, 0x7c, 0x39, 0xcf, 0x7a, 0x99, 0x8f, 0xcd,
		0xcf, 0x4f, 0x6a, 0x0c, 0x49, 0x22, 0x6f, 0xf3, 0x76, 0xdb, 0x6e, 0x4e, 0xff, 0x79, 0x63, 0x7a,
		0x72, 0x4d, 0x0b, 0x80, 0x5f, 0xe0, 0x3c, 0xea, 0x64, 0xef, 0x08, 0x66, 0x46, 0xbb, 0x8a, 0x84,
		0xc4, 0x0f, 0x9c, 0x28, 0x4a, 0x29, 0x17, 0x87, 0x66, 0xc8, 0x96, 0x83, 0x6e, 0x80, 0x6e, 0x80,
		0x6e, 0x80, 0x6e, 0x30, 0x4a, 0x37, 0x84, 0xc1, 0x30, 0x76, 0xfd, 0x3e, 0x35, 0x8a, 0xcd, 0x88,
		0x87, 0x03, 0xb8, 0x74, 0xb8, 0xf4, 0x95, 0x5c, 0x7a, 0x4c, 0xf9, 0x3e, 0xcc, 0xba, 0xf3, 0x64,
		0x29, 0xb8, 0x72, 0xb8, 0x72, 0xb8, 0x72, 0xb8, 0x72, 0xa3, 0x5c, 0x39, 0x42, 0x80, 0x1b, 0xde,
		0xc0, 0x24, 0x04, 0xc8, 0x50, 0xf6, 0x91, 0xe3, 0x10, 0xe0, 0x1f, 0xa7, 0x7f, 0xbe, 0xff, 0xc7,
		0x71, 0xf3, 0x23, 0xe2, 0x80, 0xab, 0xdf, 0xbb, 0xeb, 0xe6, 0xf9, 0xe5, 0xd9, 0x69, 0xfb, 0x8f,
		0xd3, 0x3f, 0x11, 0x0d, 0xcc, 0x07, 0xf6, 0x43, 0x3a, 0x28, 0x95, 0x0e, 0xd4, 0x6d, 0x5c, 0x98,
		0xda, 0xb7, 0x58, 0x27, 0xa2, 0xe7, 0x0c, 0xbd, 0x98, 0xd4, 0x5f, 0x58, 0x49, 0x66, 0x3d, 0x0d,
		0xf0, 0xb4, 0x20, 0xa7, 0x20, 0xa7, 0x20, 0xa7, 0x20, 0xa7, 0x8c, 0x92, 0x53, 0xf4, 0x6d, 0x67,
		0x88, 0xdb, 0xcd, 0x80, 0xd5, 0xe4, 0x92, 0xd5, 0xfc, 0x25, 0x1e, 0x3b, 0x77, 0x8e, 0xeb, 0xd3,
		0xd3, 0x9a, 0x6c, 0x25, 0xf8, 0x6f, 0xf8, 0x6f, 0xf8, 0x6f, 0xf8, 0x6f, 0xa3, 0xfc, 0xf7, 0x04,
		0xbd, 0xec, 0x1c, 0x4d, 0xa7, 0x29, 0x06, 0x1d, 0x7b, 0xf2, 0xb9, 0x8e, 0x26, 0xdf, 0x44, 0x0b,
		0x7f, 0x3a, 0xf3, 0xc3, 0x74, 0xa4, 0xcd, 0xf4, 0x8f, 0x08, 0x27, 0xdb, 0x80, 0x77, 0x28, 0xe7,
		0x1d, 0x28, 0x91, 0x57, 0x54, 0x92, 0x3c, 0x53, 0x5e, 0x4b, 0x32, 0x48, 0x51, 0x62, 0x81, 0xba,
		0xc4, 0x92, 0x55, 0x9a, 0x41, 0x51, 0xa4, 0x03, 0xa2, 0xc8, 0x4b, 0x0b, 0x2b, 0x28, 0x2d, 0x64,
		0xe4, 0x97, 0x28, 0x2d, 0xcc, 0xa3, 0xaf, 0x40, 0x69, 0x21, 0x84, 0x34, 0x84, 0x34, 0x84, 0x34,
		0x84, 0xb4, 0x32, 0x21, 0x8d, 0xbc, 0xa2, 0x0d, 0x6f, 0x20, 0x4a, 0x0b, 0x37, 0xbe, 0x85, 0x28,
		0x2d, 0x5c, 0xeb, 0xb6, 0xa1, 0xb4, 0x50, 0x01, 0xe0, 0xa3, 0x52, 0x6e, 0x09, 0x05, 0x46, 0xa5,
		0x1c, 0x68, 0x30, 0x68, 0x30, 0x68, 0xb0, 0x99, 0x34, 0x38, 0x47, 0x95, 0x72, 0x28, 0xfc, 0x5a,
		0xe0, 0x9d, 0x50, 0xf8, 0x05, 0xcf, 0x04, 0xcf, 0x04, 0xcf, 0x84, 0x00, 0xcd, 0x76, 0x06, 0x68,
		0x50, 0xf8, 0xb5, 0xc9, 0x2d, 0x44, 0xe1, 0xd7, 0xfa, 0xf7, 0x0e, 0x85, 0x5f, 0x88, 0xd5, 0xfc,
		0xcc, 0x4e, 0x50, 0xc7, 0xb4, 0xc2, 0x22, 0xa8, 0x63, 0x82, 0x3a, 0x80, 0x3a, 0x80, 0x3a, 0x80,
		0x3a, 0xc8, 0x4d, 0x1d, 0x13, 0xca, 0x72, 0x0a, 0x28, 0xcb, 0x81, 0x3b, 0x82, 0x3b, 0x82, 0x3b,
		0x42, 0x59, 0xce, 0xaa, 0x3e, 0x09, 0x65, 0x39, 0x74, 0x6e, 0x14, 0x55, 0x26, 0x5a, 0x54, 0x99,
		0x10, 0x0c, 0x9c, 0xc5, 0x14, 0x44, 0x43, 0x8d, 0xc1, 0x92, 0x5a, 0xd3, 0xb3, 0xd6, 0x40, 0xce,
		0xd9, 0xfd, 0xe4, 0x68, 0x36, 0xe3, 0x6d, 0xaf, 0x2b, 0x7f, 0x20, 0xe3, 0xe8, 0xa2, 0x98, 0xc2,
		0xa8, 0x21, 0x11, 0xc7, 0x14, 0x46, 0x35, 0x44, 0x1a, 0x53, 0x18, 0x37, 0x7a, 0x11, 0x30, 0x85,
		0x11, 0xa5, 0x92, 0xda, 0x68, 0x7d, 0x94, 0x4a, 0x32, 0x0a, 0x1e, 0xb2, 0x52, 0xc9, 0xdb, 0x5e,
		0xd7, 0x8e, 0xbd, 0x6f, 0xf4, 0x91, 0xcd, 0xc9, 0x42, 0x08, 0x6c, 0x72, 0x83, 0x1a, 0x23, 0xb8,
		0x71, 0x81, 0x1c, 0x3b, 0xd8, 0xb1, 0x83, 0x1e, 0x2f, 0xf8, 0xd1, 0xc5, 0x91, 0x0a, 0x38, 0x67,
		0x5b, 0x8d, 0x85, 0x99, 0xd5, 0x2f, 0x50, 0x3c, 0xc4, 0xa1, 0x63, 0x0f, 0xfd, 0x28, 0x76, 0x6e,
		0x3d, 0xe2, 0x87, 0x11, 0x8a, 0x9e, 0x08, 0x85, 0x9f, 0xc0, 0x0a, 0x6d, 0x8e, 0x1d, 0x7d, 0x8e,
		0x58, 0x66, 0x59, 0x57, 0x1f, 0xde, 0xd7, 0x2b, 0xe5, 0xfd, 0xbd, 0xc2, 0xcd, 0xd9, 0xe7, 0x42,
		0xb9, 0x7a, 0x60, 0xd1, 0x67, 0xc0, 0x71, 0x81, 0xf3, 0x22, 0x90, 0x7e, 0x7e, 0x86, 0x6f, 0x79,
		0xd6, 0xe6, 0xc6, 0xeb, 0x85, 0xb8, 0x3d, 0xf7, 0x90, 0x0d, 0x4f, 0x05, 0x24, 0x4e, 0xd3, 0xe4,
		0x7d, 0xfd, 0x6a, 0x07, 0x07, 0xa5, 0xa3, 0xc2, 0x3b, 0xb7, 0xeb, 0x86, 0xa2, 0x13, 0xbb, 0x81,
		0xef, 0x78, 0x85, 0x0f, 0x41, 0xf8, 0x1f, 0x27, 0xec, 0xba, 0x7e, 0xbf, 0x70, 0x22, 0xe2, 0xf1,
		0x8f, 0x0b, 0x3b, 0xef, 0x3e, 0x9c, 0xec, 0xee, 0xe1, 0x05, 0xcd, 0xe7, 0x0b, 0xba, 0xaa, 0x19,
		0x98, 0xfe, 0x0a, 0x93, 0x5d, 0xbd, 0x85, 0xc6, 0x83, 0x0b, 0xd6, 0x41, 0xe3, 0x41, 0xe2, 0x08,
		0x49, 0x8e, 0x8f, 0x84, 0x6f, 0x7b, 0x5d, 0x74, 0x1b, 0x94, 0xe5, 0xf1, 0xd1, 0x6d, 0x10, 0x21,
		0x74, 0x5d, 0xa2, 0x4a, 0x08, 0xa1, 0x33, 0x3a, 0x08, 0x84, 0xd0, 0x5f, 0x07, 0x62, 0x08, 0xa1,
		0x2b, 0x05, 0x37, 0x6e, 0x11, 0x88, 0x10, 0xba, 0x09, 0xc2, 0x0a, 0x21, 0xf4, 0x15, 0x58, 0x18,
		0x42, 0xe8, 0xcb, 0xd6, 0x42, 0x08, 0x1d, 0x11, 0x3a, 0x63, 0x23, 0x74, 0x08, 0xa1, 0xeb, 0xfa,
		0xfa, 0x21, 0x84, 0x8e, 0x17, 0x14, 0x21, 0x74, 0x79, 0x5f, 0x2d, 0x44, 0x84, 0x65, 0x58, 0x67,
		0xbe, 0x23, 0xc2, 0xa8, 0x0c, 0x52, 0x6d, 0x09, 0x8a, 0x2d, 0x40, 0x7d, 0x39, 0xd0, 0xbb, 0x5e,
		0x37, 0x4f, 0x35, 0x40, 0x1d, 0x37, 0xec, 0x0c, 0xdd, 0xd8, 0xee, 0x04, 0xc3, 0xd1, 0x47, 0x8c,
		0xe4, 0x17, 0x04, 0xcd, 0xad, 0x80, 0xea, 0x20, 0x0d, 0x43, 0x71, 0xa8, 0x0e, 0x52, 0x13, 0x4a,
		0xcb, 0x79, 0x75, 0x10, 0x0e, 0x36, 0xe7, 0x01, 0x06, 0x07, 0x9b, 0x9c, 0xaa, 0x15, 0x07, 0x9b,
		0x79, 0xd4, 0x39, 0x74, 0x63, 0xd4, 0xba, 0xff, 0xb6, 0x3b, 0x77, 0x8e, 0xdf, 0x17, 0x11, 0x43,
		0x9f, 0xee, 0xa9, 0xc5, 0x70, 0xc0, 0xc9, 0x0d, 0x6e, 0x8c, 0x20, 0xc7, 0x1d, 0xa2, 0xc3, 0x01,
		0xa7, 0x09, 0x61, 0x2f, 0xf3, 0x0f, 0x38, 0x53, 0x4d, 0xb7, 0x5f, 0x61, 0x38, 0xe2, 0xa4, 0x6c,
		0x7c, 0x74, 0x35, 0xc2, 0xe0, 0x3c, 0x9c, 0x0f, 0x9e, 0xbb, 0x3e, 0x5f, 0xfc, 0x3f, 0xe9, 0xfe,
		0x4d, 0x87, 0xfd, 0x73, 0xeb, 0x7d, 0x08, 0x9d, 0x24, 0x96, 0x7e, 0xe2, 0xf6, 0xdd, 0x38, 0x62,
		0x5c, 0xf8, 0xa3, 0xe8, 0x3b, 0xb1, 0xfb, 0x6d, 0xf4, 0x59, 0x93, 0x76, 0xbc, 0x79, 0xe8, 0x09,
		0x6e, 0x9d, 0x3b, 0x0f, 0xfc, 0xa6, 0x52, 0xad, 0x1c, 0x56, 0x0f, 0xeb, 0x8d, 0xca, 0x61, 0x0d,
		0x36, 0x63, 0x84, 0x8f, 0xa2, 0xbf, 0x7a, 0x6b, 0x9b, 0x67, 0x02, 0x75, 0xff, 0x6d, 0xfb, 0xc3,
		0xfb, 0x5b, 0x11, 0xf2, 0x88, 0x8d, 0x74, 0x2d, 0x68, 0x0d, 0x68, 0x0d, 0x68, 0x0d, 0x68, 0x0d,
		0xa3, 0xb4, 0xc6, 0xd0, 0xf5, 0x63, 0x08, 0x0d, 0x08, 0x0d, 0x90, 0x46, 0x08, 0x0d, 0x08, 0x0d,
		0x08, 0x0d, 0x08, 0x8d, 0x55, 0x84, 0xc6, 0x30, 0xbe, 0xb3, 0x7b, 0x8e, 0xeb, 0x45, 0x4c, 0xd3,
		0x47, 0xc7, 0x6b, 0x41, 0x68, 0x40, 0x68, 0x40, 0x68, 0x40, 0x68, 0x18, 0x25, 0x34, 0x70, 0xa8,
		0x01, 0xad, 0x01, 0xad, 0x01, 0xad, 0x01, 0xad, 0x01, 0xad, 0x01, 0xad, 0xb1, 0xa6, 0xd6, 0x88,
		0x1f, 0x07, 0x82, 0x55, 0x70, 0x4c, 0x2d, 0x08, 0xd5, 0x01, 0xd5, 0x01, 0xd5, 0x01, 0xd5, 0x01,
		0xd5, 0x01, 0xd5, 0x01, 0xd5, 0x01, 0xd5, 0x01, 0xd5, 0x01, 0x9b, 0x81, 0xea, 0xc8, 0xb9, 0xea,
		0x70, 0xbb, 0x76, 0xcf, 0x15, 0x5e, 0xd7, 0xf6, 0x84, 0x6f, 0xdf, 0xbb, 0xd1, 0xbd, 0x13, 0x77,
		0xee, 0x38, 0x8a, 0x38, 0x96, 0x2d, 0x0c, 0x15, 0x02, 0x15, 0x02, 0x15, 0x02, 0x15, 0x02, 0x15,
		0x02, 0x15, 0x02, 0x15, 0x02, 0x15, 0x02, 0x15, 0x02, 0x9b, 0x81, 0x0a, 0xc9, 0xbb, 0x0a, 0xf1,
		0xdd, 0x98, 0xeb, 0xd8, 0x63, 0x6a, 0x2d, 0x68, 0x0d, 0x68, 0x0d, 0x68, 0x0d, 0x68, 0x0d, 0x68,
		0x0d, 0x68, 0x0d, 0x68, 0x0d, 0x68, 0x0d, 0x68, 0x0d, 0xd8, 0x0c, 0xb4, 0x46, 0xce, 0xb5, 0x86,
		0xe7, 0xf8, 0x76, 0xd7, 0x8d, 0xf8, 0xda, 0x55, 0xbd, 0x5c, 0x10, 0xaa, 0x03, 0xaa, 0x03, 0xaa,
		0x03, 0xaa, 0x03, 0xaa, 0x03, 0xaa, 0x03, 0xaa, 0x03, 0xaa, 0x03, 0xaa, 0x03, 0x36, 0x03, 0xd5,
		0x91, 0x73, 0xd5, 0x71, 0xef, 0x3c, 0xd8, 0x4e, 0x28, 0x1c, 0xdb, 0xe9, 0x76, 0x43, 0x11, 0x45,
		0xac, 0xb9, 0x56, 0x3f, 0x5b, 0x1c, 0x6a, 0x04, 0x6a, 0x04, 0x6a, 0x04, 0x6a, 0x04, 0x6a, 0x04,
		0x6a, 0x04, 0x6a, 0x04, 0x6a, 0x04, 0x6a, 0x04, 0x36, 0x03, 0x35, 0x92, 0x73, 0x35, 0x12, 0x8a,
		0x7f, 0x8b, 0x4e, 0x2c, 0xba, 0xb6, 0xd3, 0xfd, 0x37, 0xbd, 0xfc, 0x98, 0x59, 0x0d, 0x7a, 0x03,
		0x7a, 0x03, 0x7a, 0x03, 0x7a, 0x03, 0x7a, 0x03, 0x7a, 0x03, 0x7a, 0x03, 0x7a, 0x03, 0x7a, 0x03,
		0x36, 0x03, 0xbd, 0xa1, 0x93, 0xde, 0xc0, 0xa4, 0x76, 0x35, 0x73, 0xba, 0x5f, 0x4e, 0x7c, 0xc6,
		0xd8, 0x76, 0xe5, 0x66, 0xa1, 0x93, 0x39, 0xa8, 0x9f, 0xe1, 0xfe, 0x7e, 0xbc, 0xa3, 0xf7, 0x93,
		0x0d, 0xe5, 0x69, 0x9e, 0xfb, 0x44, 0xdf, 0xcb, 0x9e, 0xe2, 0x3e, 0xbe, 0x2e, 0x66, 0xb7, 0x6b,
		0x18, 0xb4, 0xc0, 0xec, 0x76, 0x35, 0x41, 0x87, 0x9c, 0xcf, 0x6e, 0x9f, 0xe0, 0x76, 0x4c, 0x11,
		0x9d, 0x78, 0x06, 0x96, 0xe9, 0x55, 0x68, 0x26, 0xb9, 0x97, 0xa8, 0x26, 0xb9, 0x97, 0x30, 0xc9,
		0x9d, 0x01, 0x86, 0xd8, 0xe0, 0x88, 0x0d, 0x96, 0x78, 0xe0, 0xc9, 0x0c, 0x1d, 0x44, 0x16, 0xfb,
		0xe4, 0x40, 0x98, 0x19, 0x32, 0x53, 0x25, 0xb8, 0xf6, 0xa9, 0x3f, 0xbc, 0xa7, 0x7b, 0xa1, 0x6e,
		0x82, 0xeb, 0x38, 0x74, 0xfd, 0x3e, 0x6d, 0xec, 0xb9, 0x34, 0x7a, 0x08, 0x97, 0x17, 0xcd, 0x8f,
		0x37, 0xed, 0x9b, 0x8b, 0x76, 0xf2, 0x0d, 0x65, 0xf4, 0xb9, 0x3c, 0x5a, 0xee, 0xdd, 0xd5, 0xc5,
		0xf1, 0xc9, 0xfb, 0xe3, 0xeb, 0x1b, 0xcb, 0xac, 0x83, 0x80, 0xa0, 0x99, 0x80, 0x01, 0xe1, 0xd3,
		0x78, 0xbe, 0x33, 0xd2, 0xf8, 0xf7, 0x62, 0x5f, 0x36, 0xfb, 0xc0, 0x8f, 0x0a, 0x25, 0x84, 0x8d,
		0x0c, 0x08, 0x1b, 0x3d, 0xf6, 0x83, 0xd8, 0x0e, 0x3a, 0x76, 0x27, 0xb8, 0x1f, 0x84, 0x22, 0x8a,
		0x44, 0xd7, 0xf6, 0x84, 0xd3, 0x1b, 0x2d, 0xf6, 0xa4, 0x6b, 0x00, 0x47, 0xa2, 0x92, 0x12, 0xbe,
		0x73, 0xeb, 0x89, 0x2e, 0x1d, 0xdd, 0x9d, 0x2c, 0x20, 0xd9, 0x2c, 0x4e, 0x44, 0xcf, 0x19, 0x7a,
		0x31, 0xc9, 0x89, 0x98, 0x95, 0x84, 0xc3, 0xe5, 0x02, 0x69, 0x0b, 0x4c, 0x1f, 0x4c, 0x1f, 0x4c,
		0x1f, 0x4c, 0x5f, 0xaa, 0xc5, 0xdf, 0x06, 0x81, 0x27, 0x1c, 0x9f, 0x92, 0xe4, 0x97, 0xc1, 0x0e,
		0xb6, 0x97, 0x1d, 0xdc, 0x09, 0xcf, 0x0b, 0xec, 0x81, 0xd3, 0xed, 0x52, 0x88, 0xa6, 0xcc, 0x8c,
		0x67, 0x97, 0x81, 0xa7, 0x84, 0xa7, 0x84, 0xa7, 0x84, 0xa7, 0xa4, 0x83, 0x18, 0x44, 0xc6, 0x54,
		0x46, 0xc6, 0xae, 0x6f, 0xae, 0x9a, 0xef, 0xe9, 0x23, 0x62, 0x67, 0x17, 0x17, 0xd7, 0xa7, 0x94,
		0xab, 0x54, 0x46, 0xab, 0x1c, 0x9f, 0x1c, 0x5f, 0xde, 0x34, 0x3f, 0x93, 0x2e, 0xb4, 0x3f, 0x5a,
		0xe8, 0xa4, 0x79, 0x7d, 0xfc, 0xee, 0xec, 0x14, 0xe1, 0xbd, 0x97, 0xe8, 0x39, 0x79, 0x00, 0x47,
		0x85, 0x0a, 0xe1, 0x33, 0x98, 0xdc, 0xfe, 0xa3, 0xc2, 0x3e, 0xe1, 0x2a, 0x63, 0x9b, 0xa5, 0x8d,
		0x53, 0xa6, 0xaf, 0x1f, 0xe2, 0x93, 0x50, 0x20, 0x06, 0x28, 0x90, 0x2c, 0xab, 0xca, 0x76, 0x09,
		0x83, 0x94, 0x33, 0xab, 0x40, 0x7f, 0x40, 0x7f, 0x40, 0x7f, 0x40, 0x7f, 0x98, 0x82, 0x30, 0x33,
		0xca, 0xe3, 0x00, 0xce, 0x72, 0x7b, 0x9d, 0xe5, 0xc0, 0x89, 0xa2, 0x71, 0x41, 0x07, 0x91, 0x9f,
		0x9c, 0x2c, 0x80, 0xc3, 0x3c, 0x50, 0x04, 0x50, 0x04, 0x50, 0x04, 0x50, 0x04, 0x89, 0x16, 0x8f,
		0xc3, 0x3c, 0xb0, 0x03, 0x9a, 0x2b, 0xa1, 0x56, 0x6b, 0x79, 0xad, 0xd6, 0xd8, 0x47, 0xe6, 0xa8,
		0x20, 0x6a, 0x9c, 0x70, 0x65, 0xdf, 0xf6, 0xba, 0xf2, 0x8b, 0xa2, 0xa6, 0xae, 0x8d, 0xc2, 0x28,
		0x19, 0x14, 0x47, 0xde, 0x9d, 0x2c, 0xa0, 0x2e, 0x6a, 0x05, 0x06, 0x33, 0xba, 0xef, 0x28, 0x8b,
		0x7a, 0xdd, 0x05, 0x25, 0x57, 0x58, 0xce, 0xbd, 0x06, 0x52, 0x2b, 0x2d, 0x89, 0x80, 0x25, 0x37,
		0x9a, 0x4a, 0x2e, 0xe0, 0x40, 0x52, 0x69, 0x09, 0x48, 0x66, 0x28, 0x2a, 0xd9, 0x40, 0xf5, 0x82,
		0x01, 0x75, 0xe9, 0xdb, 0xe3, 0xd1, 0xe4, 0xb6, 0x13, 0x87, 0x85, 0xc8, 0xa1, 0x8c, 0x03, 0xd2,
		0xf8, 0xa0, 0x8d, 0x0b, 0xe2, 0xd8, 0xa1, 0x8e, 0x1d, 0xf2, 0x58, 0xa1, 0x8f, 0x06, 0x02, 0x89,
		0xa0, 0x90, 0x3e, 0xc8, 0xc4, 0x18, 0x6c, 0x22, 0x0e, 0x3a, 0x51, 0x3f, 0x02, 0xe2, 0x20, 0x14,
		0x7f, 0x30, 0x8a, 0xee, 0x4d, 0x40, 0xbf, 0x29, 0x45, 0x41, 0xab, 0xe7, 0x30, 0x8c, 0xd4, 0xf8,
		0x95, 0xfc, 0xe7, 0xfa, 0x24, 0xb5, 0xf3, 0x91, 0x13, 0x13, 0x1e, 0x6d, 0x8e, 0x2f, 0x6f, 0x98,
		0x08, 0xad, 0x40, 0x84, 0x42, 0x84, 0x42, 0x84, 0x42, 0x84, 0x42, 0x84, 0x42, 0x84, 0x42, 0x84,
		0x42, 0x84, 0x42, 0x84, 0xf2, 0x8a, 0x50, 0x68, 0xaa, 0x1c, 0x6a, 0x2a, 0x74, 0xef, 0x55, 0x6d,
		0x10, 0x7a, 0x18, 0x82, 0xfa, 0xbe, 0xbd, 0xa7, 0xc9, 0x5e, 0xde, 0xc9, 0xf2, 0x4d, 0x7a, 0x24,
		0xa8, 0xf4, 0x43, 0xa7, 0x23, 0x7a, 0x43, 0xcf, 0x0e, 0x45, 0x14, 0x3b, 0x61, 0x2c, 0x3f, 0x4d,
		0x65, 0x6e, 0x05, 0x24, 0xab, 0xc8, 0xe0, 0xb6, 0xe8, 0xe2, 0xcb, 0x44, 0x56, 0xd1, 0xc5, 0x77,
		0x83, 0x0b, 0x22, 0x5d, 0x85, 0x41, 0x5e, 0xa3, 0x04, 0x60, 0xcb, 0x43, 0x85, 0xdb, 0x58, 0x02,
		0x40, 0x16, 0x2b, 0x7c, 0x2e, 0x0e, 0x8c, 0xdd, 0x7b, 0x61, 0x8b, 0x87, 0x81, 0x1b, 0x26, 0xa4,
		0x9a, 0x61, 0xc2, 0xfc, 0x4f, 0xd6, 0x46, 0x44, 0x51, 0x87, 0x88, 0x22, 0x06, 0x3e, 0x1a, 0x1a,
		0x52, 0xc4, 0xc0, 0x47, 0x15, 0x31, 0x45, 0xd7, 0x8f, 0xeb, 0x55, 0x86, 0x88, 0x62, 0x15, 0xc3,
		0x1e, 0x7f, 0xfd, 0x41, 0x94, 0x0c, 0x7b, 0x3c, 0xac, 0x54, 0xf6, 0xf7, 0x1b, 0x95, 0xd2, 0x7e,
		0xfd, 0xa0, 0x56, 0x6d, 0x34, 0x6a, 0x07, 0xa5, 0x83, 0x2d, 0x1a, 0xe5, 0x37, 0xc2, 0x39, 0x4c,
		0x7f, 0x94, 0x67, 0x3b, 0x0d, 0x8c, 0x81, 0x34, 0xc2, 0x73, 0xd1, 0x5f, 0xbd, 0x65, 0x94, 0xc7,
		0x15, 0x0f, 0x71, 0xe8, 0xd8, 0x43, 0x3f, 0x8a, 0x9d, 0x5b, 0x8f, 0xd8, 0xf7, 0x86, 0xa2, 0x27,
		0x42, 0xe1, 0x77, 0x72, 0xe1, 0xb3, 0x26, 0x44, 0xe2, 0xea, 0xc3, 0xfb, 0x42, 0x6d, 0xbf, 0x54,
		0x3f, 0x2a, 0x5c, 0x8d, 0xa3, 0xc8, 0x85, 0x6b, 0xb7, 0xef, 0x3b, 0x9e, 0xeb, 0xf7, 0x0b, 0xbd,
		0x20, 0x2c, 0x34, 0xaf, 0xed, 0xe6, 0xf5, 0xff, 0x2e, 0x24, 0xff, 0xac, 0xb1, 0xf0, 0x9f, 0x7d,
		0xf5, 0xb3, 0x7f, 0x67, 0x31, 0x00, 0x26, 0x13, 0x91, 0x5f, 0x44, 0xe8, 0x9f, 0x0d, 0x80, 0x09,
		0xb4, 0xb8, 0xb9, 0xfd, 0x42, 0x8e, 0x2f, 0xd7, 0x42, 0x80, 0xbb, 0xb9, 0xc0, 0x5d, 0xe4, 0x8f,
		0xab, 0x7c, 0x04, 0x2f, 0xc2, 0x59, 0x21, 0x77, 0xfc, 0x2c, 0x44, 0xd0, 0x0c, 0x41, 0x33, 0x04,
		0xcd, 0x10, 0x34, 0x33, 0x2b, 0x68, 0x36, 0x74, 0xfd, 0xb8, 0x5c, 0x67, 0x88, 0x9a, 0xd5, 0x11,
		0x35, 0xd3, 0x34, 0x6a, 0x56, 0x42, 0x9c, 0x03, 0x41, 0xb2, 0xd7, 0x99, 0x4a, 0xbd, 0x56, 0xdb,
		0xaf, 0xc1, 0x5c, 0x20, 0xcf, 0x10, 0x16, 0x43, 0x58, 0x0c, 0x61, 0x31, 0x84, 0xc5, 0x10, 0x16,
		0x03, 0xee, 0x22, 0x2c, 0xa6, 0xe7, 0x15, 0x51, 0x02, 0xf4, 0xea, 0xca, 0x8f, 0x97, 0x65, 0x03,
		0x68, 0xae, 0x20, 0x8b, 0x34, 0xa0, 0xb9, 0x02, 0x52, 0xa6, 0x57, 0xe0, 0x4d, 0x48, 0x99, 0xce,
		0x8b, 0xb7, 0x40, 0xca, 0xb4, 0x4c, 0xa8, 0xc3, 0xe9, 0x8f, 0x52, 0x08, 0xe4, 0x96, 0x94, 0x38,
		0xfd, 0x31, 0x41, 0x8b, 0x21, 0x65, 0xfa, 0xb5, 0xf0, 0x85, 0x94, 0xe9, 0x57, 0x7c, 0x10, 0xa4,
		0x4c, 0x23, 0x65, 0x7a, 0x6d, 0xdb, 0x41, 0xca, 0x34, 0xb7, 0xed, 0xe0, 0x6c, 0xe8, 0x67, 0x5f,
		0x38, 0x1b, 0x5a, 0xb6, 0x16, 0xce, 0x86, 0x70, 0x36, 0x84, 0xb3, 0x21, 0x9c, 0x0d, 0x19, 0x85,
		0xbb, 0xc8, 0x00, 0xfe, 0x75, 0x38, 0x08, 0x19, 0xc0, 0x88, 0x01, 0x21, 0x06, 0x84, 0x18, 0x90,
		0x61, 0x31, 0x20, 0x64, 0x00, 0x6f, 0x7d, 0x10, 0x08, 0x19, 0xc0, 0x88, 0xf9, 0xbc, 0xd2, 0x54,
		0x90, 0x01, 0x0c, 0xb5, 0x81, 0x28, 0x0f, 0xa2, 0x3c, 0x88, 0xf2, 0x20, 0xca, 0x83, 0x28, 0x0f,
		0xa2, 0x3c, 0x9c, 0x57, 0x44, 0x42, 0xeb, 0xfa, 0x09, 0xad, 0xe8, 0x6c, 0xaf, 0xda, 0x2c, 0x74,
		0x32, 0x07, 0xf5, 0xfd, 0xed, 0x7f, 0x4f, 0x77, 0x94, 0xe2, 0x7f, 0x9e, 0xba, 0xdc, 0x3f, 0x47,
		0x85, 0xdd, 0xae, 0xfc, 0x0e, 0xf7, 0x33, 0x57, 0x97, 0xdb, 0xdd, 0xbe, 0x84, 0xee, 0xf6, 0x3a,
		0xb3, 0x4e, 0x74, 0xb7, 0x37, 0xc9, 0x8b, 0x48, 0x0f, 0xe0, 0x66, 0x16, 0xeb, 0x09, 0xa7, 0x17,
		0x8a, 0x9e, 0x4c, 0x8b, 0x9d, 0x14, 0x54, 0x48, 0xcc, 0xdf, 0xb1, 0x2e, 0x53, 0x47, 0xb7, 0xb7,
		0x97, 0x56, 0xd3, 0x14, 0x67, 0xa0, 0x2b, 0x97, 0x80, 0x3f, 0x7a, 0x2c, 0x84, 0x88, 0x2f, 0xef,
		0xa9, 0x6f, 0xfd, 0x40, 0x93, 0x1e, 0x00, 0x5f, 0x05, 0xe0, 0xf7, 0x30, 0xcc, 0xe4, 0x95, 0x17,
		0xc4, 0x30, 0x13, 0x42, 0x78, 0xa1, 0x84, 0x19, 0x72, 0xb8, 0xe1, 0x8a, 0x6e, 0x6e, 0x41, 0x5d,
		0x5e, 0x0f, 0x55, 0x79, 0x92, 0x2e, 0x9c, 0x91, 0x14, 0xc6, 0xac, 0x2b, 0xe4, 0x5b, 0xb1, 0x83,
		0x1a, 0x1b, 0xb8, 0x71, 0x81, 0x1c, 0x3b, 0xd8, 0xb1, 0x83, 0x1e, 0x27, 0xf8, 0xd1, 0x80, 0x20,
		0x11, 0x18, 0xd2, 0x49, 0x75, 0x46, 0xe9, 0xce, 0x21, 0xe5, 0x97, 0x4a, 0xfb, 0x62, 0x62, 0x46,
		0x47, 0x53, 0x21, 0xe7, 0x17, 0x3f, 0x48, 0xff, 0x9c, 0x04, 0x87, 0xd1, 0xb4, 0x66, 0xc1, 0x3a,
		0xe8, 0xe5, 0xbc, 0xf0, 0xb6, 0x44, 0xc3, 0x5b, 0x46, 0x42, 0x31, 0xb3, 0x1a, 0x38, 0x05, 0x38,
		0x05, 0x38, 0x05, 0x38, 0x05, 0x38, 0x85, 0xa6, 0x9c, 0xe2, 0xcb, 0x33, 0xa7, 0xf8, 0x3f, 0x9d,
		0x61, 0x18, 0x0a, 0x3f, 0xde, 0xd9, 0x2d, 0xee, 0xed, 0x3d, 0x1f, 0x2f, 0xb4, 0xd2, 0x5f, 0x99,
		0xc6, 0xf5, 0x68, 0xc1, 0xcf, 0xb2, 0x2b, 0x77, 0xc5, 0x03, 0xe8, 0x49, 0x5e, 0xe9, 0x89, 0xd6,
		0xf1, 0x98, 0xd3, 0x87, 0x24, 0xb1, 0x59, 0x7e, 0x86, 0x28, 0x7d, 0x48, 0x30, 0xe8, 0xd8, 0xe2,
		0x21, 0x3e, 0x8a, 0x85, 0x27, 0xee, 0x45, 0x1c, 0x3e, 0xda, 0x81, 0x6f, 0x77, 0xee, 0x92, 0x3a,
		0x0c, 0x96, 0x30, 0x61, 0x92, 0x99, 0xcd, 0x10, 0x27, 0xd4, 0x3d, 0x44, 0xd8, 0x42, 0x56, 0xdc,
		0x6b, 0xd3, 0xa0, 0x66, 0x4e, 0x52, 0xd1, 0xe3, 0x51, 0x9a, 0x7e, 0x42, 0x8f, 0x47, 0x9c, 0x24,
		0x69, 0x21, 0x84, 0x70, 0x92, 0xc4, 0xc6, 0x5c, 0x70, 0x92, 0x84, 0xa8, 0x0f, 0xa2, 0x3e, 0x88,
		0xfa, 0x20, 0xea, 0x83, 0xa8, 0x0f, 0x43, 0xd4, 0x87, 0xfe, 0x24, 0x09, 0x07, 0x23, 0xf3, 0xc4,
		0x1e, 0x07, 0x23, 0x70, 0x91, 0x70, 0x91, 0x70, 0x91, 0x70, 0x91, 0x06, 0xb8, 0x48, 0xa3, 0x0e,
		0x46, 0x50, 0x6a, 0x2c, 0x97, 0x17, 0xe8, 0x12, 0x54, 0x45, 0x9d, 0xb1, 0x6a, 0x9b, 0xd0, 0xc6,
		0x16, 0xd4, 0x17, 0x19, 0x67, 0xdf, 0x5d, 0x89, 0x5e, 0x9e, 0x0a, 0xce, 0x3c, 0xf1, 0x4d, 0x78,
		0x91, 0xfc, 0x4a, 0xb3, 0xf4, 0xba, 0x28, 0x31, 0x93, 0xc2, 0xd4, 0x51, 0x55, 0xcc, 0xc3, 0xbd,
		0xb7, 0xa9, 0xaa, 0x58, 0x7a, 0x99, 0x59, 0xf2, 0xca, 0xd3, 0x1d, 0x0d, 0x8e, 0x2f, 0x8f, 0x22,
		0x33, 0x8c, 0x7f, 0x53, 0x1f, 0x0c, 0xc0, 0xf8, 0x37, 0x46, 0xc1, 0x43, 0x76, 0x3c, 0xe8, 0x74,
		0xff, 0xed, 0x74, 0x84, 0xdf, 0x71, 0x05, 0xc3, 0xbc, 0xb7, 0xe9, 0xc5, 0x68, 0xe3, 0x9f, 0x65,
		0xea, 0xf8, 0x67, 0x05, 0xcd, 0xbd, 0x35, 0x00, 0x3b, 0x76, 0xd0, 0x63, 0x07, 0x3f, 0x5e, 0x10,
		0xa4, 0x8b, 0x27, 0x15, 0x08, 0x63, 0xa0, 0x54, 0xe0, 0x38, 0x07, 0x92, 0x8f, 0xf4, 0x86, 0xfc,
		0x12, 0x2a, 0x1f, 0xa9, 0x0d, 0x99, 0x16, 0x30, 0xc9, 0xd9, 0xa0, 0x0a, 0x00, 0x55, 0x00, 0xa4,
		0xdc, 0x80, 0xaa, 0x0c, 0x58, 0x95, 0x01, 0xac, 0x1a, 0xa0, 0xa5, 0x05, 0x5c, 0x62, 0xe0, 0x65,
		0x03, 0xe0, 0x6c, 0x21, 0x9a, 0xcc, 0xdb, 0x5f, 0xbe, 0xdf, 0x14, 0x19, 0xb9, 0x8a, 0x01, 0x99,
		0x1d, 0x98, 0x55, 0x00, 0xb4, 0x42, 0xa0, 0x56, 0x05, 0xd8, 0xca, 0x81, 0x5b, 0x39, 0x80, 0xab,
		0x05, 0x72, 0x1e, 0x40, 0x67, 0x02, 0x76, 0x76, 0x80, 0x9f, 0x67, 0xdc, 0x36, 0x2f, 0xe4, 0x2f,
		0xe7, 0xe1, 0x36, 0xa7, 0x13, 0x78, 0xe9, 0x0c, 0x4a, 0xcc, 0xcb, 0x72, 0x3b, 0x05, 0x95, 0xce,
		0x41, 0x03, 0x27, 0xa1, 0xda, 0x59, 0x68, 0xe3, 0x34, 0xb4, 0x71, 0x1e, 0x7a, 0x38, 0x11, 0x5e,
		0x67, 0xc2, 0xec, 0x54, 0xb2, 0x5b, 0x4c, 0x9e, 0xc2, 0xf6, 0xcb, 0x37, 0x7e, 0xf4, 0x54, 0xed,
		0xe7, 0x64, 0x0b, 0xa7, 0xfb, 0x6f, 0x25, 0x68, 0x3f, 0x43, 0xff, 0xab, 0x0a, 0xd6, 0x3e, 0xf5,
		0x87, 0xf7, 0xea, 0xc0, 0xe7, 0x26, 0xb8, 0x8e, 0x43, 0xd7, 0xef, 0x2b, 0xdb, 0x41, 0xb2, 0x8b,
		0xd2, 0xc8, 0x20, 0x3e, 0x5d, 0x2a, 0x02, 0xbe, 0x64, 0x0b, 0xe5, 0xd1, 0x16, 0x4e, 0x2e, 0xfe,
		0xef, 0x47, 0x95, 0x9b, 0xa8, 0x8c, 0x36, 0xd1, 0xfc, 0xd8, 0xbc, 0x51, 0xb9, 0x89, 0xfd, 0xd1,
		0x26, 0x3e, 0x1c, 0x37, 0xcf, 0x4e, 0x4f, 0x2c, 0x25, 0xbb, 0x78, 0x7a, 0xab, 0xea, 0x5d, 0x68,
		0x26, 0x3e, 0x47, 0xe1, 0x8b, 0x90, 0x18, 0x20, 0x5b, 0x1c, 0x62, 0xe1, 0x16, 0xd2, 0x27, 0x7f,
		0x54, 0xd8, 0x57, 0xb8, 0x89, 0xe4, 0x1d, 0x20, 0x3b, 0xf0, 0x7b, 0xd5, 0x16, 0x3e, 0x5d, 0x8e,
		0xa8, 0xb8, 0x9a, 0x17, 0x00, 0x64, 0x47, 0xea, 0xa3, 0x64, 0x1c, 0x9a, 0xb7, 0x74, 0x0f, 0x7c,
		0xc3, 0xf4, 0x96, 0x7d, 0x29, 0x84, 0xb5, 0xa9, 0xe1, 0x7b, 0xb5, 0xfd, 0xd2, 0xfe, 0x51, 0xe1,
		0xe6, 0xec, 0x73, 0xa1, 0x52, 0x2d, 0xed, 0xa9, 0xf4, 0x73, 0x8a, 0x75, 0xdf, 0x22, 0xfd, 0xc7,
		0x3d, 0x70, 0x4f, 0x7b, 0x29, 0xb8, 0x50, 0x12, 0xce, 0x5b, 0x91, 0xb2, 0xbd, 0x3d, 0x6d, 0x89,
		0x7f, 0x68, 0xbd, 0xc9, 0xe7, 0xe7, 0x63, 0xf4, 0x44, 0x53, 0x51, 0xcd, 0x58, 0x85, 0xf8, 0x5e,
		0x10, 0x5d, 0x4d, 0xf6, 0x81, 0xe0, 0x2a, 0xe9, 0xc2, 0x08, 0xae, 0x22, 0xb8, 0x8a, 0xe0, 0xea,
		0x76, 0xe9, 0x0d, 0xf5, 0xc1, 0xd5, 0xa4, 0x66, 0x41, 0x05, 0xbe, 0x17, 0x10, 0x4e, 0xd5, 0x24,
		0x9c, 0x7a, 0x76, 0xfa, 0xf9, 0xf4, 0xac, 0x5d, 0x56, 0x1e, 0x53, 0x1d, 0xef, 0xa3, 0xa2, 0x3c,
		0xac, 0x9a, 0xde, 0x8f, 0x76, 0x05, 0x41, 0x4d, 0xe6, 0x2d, 0x4c, 0x2c, 0x91, 0x9d, 0x7c, 0x2d,
		0xda, 0x45, 0xbb, 0xa2, 0x38, 0xae, 0x38, 0x79, 0x1f, 0x8e, 0x0a, 0x65, 0x04, 0x17, 0x21, 0x1e,
		0x5f, 0x2b, 0x1e, 0x43, 0xe1, 0xd8, 0x4e, 0xb7, 0x1b, 0x8a, 0x28, 0x52, 0x28, 0x1d, 0xa7, 0x77,
		0x01, 0xe1, 0x08, 0xe1, 0x08, 0xe1, 0x08, 0xe1, 0x08, 0xe1, 0x98, 0x23, 0xe1, 0xa8, 0x10, 0xe1,
		0x67, 0xa4, 0xe3, 0x81, 0x82, 0xb5, 0x2f, 0x9d, 0x38, 0x16, 0xa1, 0xaf, 0xec, 0x80, 0xce, 0xfa,
		0x52, 0xb2, 0x0f, 0x8f, 0xed, 0x0f, 0x8e, 0xdd, 0x6b, 0x7d, 0xaf, 0x3c, 0xed, 0x7c, 0xfd, 0xba,
		0x37, 0xfd, 0x93, 0xea, 0xd3, 0xee, 0xf7, 0xd2, 0xdb, 0xfd, 0x27, 0xfe, 0x97, 0xae, 0xa5, 0xe2,
		0x61, 0x5c, 0x5c, 0x37, 0xff, 0xa9, 0xfc, 0x89, 0xfc, 0xeb, 0x75, 0x8f, 0xe4, 0xbf, 0xac, 0xbc,
		0x9f, 0xc8, 0x30, 0x03, 0xe1, 0x99, 0x1b, 0xc5, 0xc7, 0x71, 0x1c, 0xaa, 0x01, 0xc3, 0x73, 0xd7,
		0x3f, 0xf5, 0xc4, 0xc8, 0xd7, 0x45, 0x6a, 0x44, 0xab, 0x75, 0xee, 0x3c, 0x4c, 0xed, 0xa0, 0x7c,
		0x50, 0xad, 0xd6, 0x1b, 0xd5, 0x6a, 0xa9, 0xb1, 0xdf, 0x28, 0x1d, 0xd6, 0x6a, 0xe5, 0x7a, 0xb9,
		0xa6, 0x60, 0x53, 0x17, 0x61, 0x57, 0x84, 0xa2, 0xfb, 0xee, 0xd1, 0x3a, 0x2a, 0xf8, 0x43, 0xcf,
		0x53, 0xb9, 0x85, 0x4f, 0x91, 0x08, 0x27, 0x03, 0x54, 0x20, 0x2f, 0x37, 0xbe, 0xaf, 0x5d, 0x37,
		0xb2, 0xa3, 0xc7, 0x28, 0x16, 0xf7, 0xb6, 0xdb, 0x55, 0xa7, 0x2f, 0x67, 0xb7, 0x01, 0x81, 0x09,
		0x81, 0x09, 0x81, 0x09, 0x81, 0x09, 0x81, 0x99, 0x23, 0x81, 0xa9, 0x0a, 0xde, 0xa1, 0x2e, 0x67,
		0x85, 0xcb, 0x9c, 0x92, 0x99, 0xfb, 0x01, 0x74, 0xa6, 0x22, 0x9d, 0xf9, 0x9a, 0x87, 0x93, 0x7f,
		0xc5, 0x99, 0x4b, 0x9e, 0xed, 0x05, 0x1d, 0xc7, 0xb3, 0xc5, 0x43, 0x2c, 0xfc, 0xae, 0xe8, 0xda,
		0x1d, 0x37, 0xec, 0x0c, 0xdd, 0x58, 0x29, 0xe7, 0x5e, 0xbe, 0x25, 0xf0, 0x6f, 0xf0, 0x6f, 0xf0,
		0x6f, 0xf0, 0x6f, 0xf0, 0xef, 0x1c, 0xf1, 0x6f, 0xf5, 0x40, 0x3f, 0x0d, 0xf6, 0x0d, 0x05, 0x4b,
		0x5f, 0x25, 0xf3, 0x9d, 0xb7, 0xb0, 0x0a, 0xeb, 0xdc, 0xf5, 0xd5, 0x57, 0x3b, 0x7d, 0x76, 0xbc,
		0xa1, 0x50, 0x9b, 0x0a, 0x96, 0xec, 0xe3, 0x43, 0xe8, 0x74, 0x62, 0x37, 0xf0, 0x4f, 0xdc, 0xbe,
		0xab, 0x2a, 0xcc, 0x3f, 0xfb, 0x82, 0x8a, 0xbe, 0x13, 0xbb, 0xdf, 0x84, 0x92, 0xa8, 0xb6, 0x42,
		0x4c, 0x9c, 0x35, 0x51, 0xe7, 0x41, 0x1f, 0x13, 0xad, 0x56, 0x0e, 0xab, 0x87, 0xf5, 0x46, 0xe5,
		0xb0, 0x06, 0x5b, 0xd5, 0xd5, 0x56, 0x51, 0x7f, 0x07, 0xed, 0xfd, 0x4a, 0xa3, 0xbd, 0x1f, 0x7a,
		0xb1, 0x6b, 0xc7, 0xc1, 0x20, 0xf0, 0x82, 0xfe, 0xa3, 0x3a, 0xc1, 0xfd, 0x62, 0x1f, 0x50, 0xd9,
		0x50, 0xd9, 0x50, 0xd9, 0x50, 0xd9, 0x50, 0xd9, 0x39, 0x52, 0xd9, 0xb7, 0x41, 0xe0, 0x09, 0xc7,
		0x57, 0x79, 0xc6, 0x55, 0x46, 0x4b, 0x17, 0xe2, 0x3d, 0xa0, 0xa5, 0x4b, 0xda, 0x8c, 0xa3, 0x5c,
		0x39, 0xdc, 0x1b, 0x37, 0xe3, 0xa8, 0x1c, 0xa2, 0xa5, 0x0b, 0x5a, 0xba, 0xac, 0xee, 0x08, 0xe7,
		0xad, 0x08, 0x92, 0x12, 0x92, 0x52, 0x7b, 0x49, 0xe9, 0x0b, 0xb7, 0x7f, 0x77, 0x1b, 0x84, 0x59,
		0x30, 0x5d, 0x6d, 0x67, 0x97, 0xc5, 0xdb, 0x81, 0xc0, 0x84, 0xc0, 0x84, 0xc0, 0x84, 0xc0, 0x84,
		0xc0, 0xcc, 0x91, 0xc0, 0x44, 0x83, 0x17, 0x34, 0x78, 0x41, 0x83, 0x97, 0xc9, 0x3e, 0xd0, 0xe0,
		0x05, 0x0d, 0x5e, 0xd0, 0xe0, 0x45, 0x99, 0x94, 0x44, 0x83, 0x17, 0x89, 0x52, 0x52, 0xab, 0xe4,
		0xe0, 0x9f, 0xee, 0x0a, 0xc2, 0x12, 0xc2, 0x12, 0xc2, 0x12, 0xc2, 0x12, 0xc2, 0x32, 0x47, 0xc2,
		0x12, 0xf9, 0xc1, 0xc8, 0x0f, 0x56, 0xf8, 0x85, 0xfc, 0xe0, 0xa5, 0x2f, 0x28, 0xf2, 0x83, 0x91,
		0x1f, 0x0c, 0x5b, 0xd5, 0x5d, 0x0b, 0x17, 0x70, 0x98, 0x6b, 0xba, 0x02, 0x77, 0x07, 0xdf, 0xaa,
		0xea, 0x7b, 0xad, 0x2e, 0xde, 0x0e, 0x34, 0x37, 0x34, 0x37, 0x34, 0x37, 0x34, 0x37, 0x34, 0x77,
		0x8e, 0x34, 0xb7, 0x42, 0x84, 0x2f, 0x6c, 0x7d, 0x5b, 0x9c, 0x9d, 0x2f, 0x25, 0xfb, 0xb0, 0xf5,
		0xe3, 0x4b, 0xd9, 0x3e, 0x6c, 0x8d, 0xbf, 0x2d, 0x27, 0xff, 0xf7, 0xbd, 0xf2, 0xf4, 0xa3, 0xf2,
		0xa5, 0x64, 0x57, 0xd3, 0x9f, 0x56, 0x6a, 0x5f, 0x4a, 0x76, 0xad, 0xb5, 0xbb, 0xf3, 0xf5, 0xeb,
		0xde, 0xaa, 0xbf, 0xb3, 0xfb, 0x1d, 0x6d, 0x5b, 0x39, 0x77, 0xf1, 0xaf, 0x1d, 0xae, 0xa7, 0xba,
		0x8b, 0x46, 0x3c, 0xc6, 0x93, 0xfd, 0xba, 0x5e, 0x64, 0xbf, 0x0e, 0xb2, 0x0f, 0xb2, 0x0f, 0xb2,
		0x0f, 0xb2, 0x0f, 0xb2, 0x9f, 0x53, 0xb2, 0x5f, 0x07, 0xd9, 0x57, 0x45, 0xf6, 0x13, 0x8e, 0xe7,
		0xd8, 0xbd, 0x63, 0xfb, 0x43, 0xeb, 0x7b, 0xf9, 0x6d, 0xf5, 0xe9, 0x68, 0xf7, 0x7b, 0xe3, 0xe9,
		0xe5, 0x0f, 0x7f, 0x2c, 0xfa, 0x67, 0xe5, 0xb7, 0x8d, 0xa7, 0xa3, 0x25, 0x7f, 0x53, 0x7f, 0x3a,
		0x7a, 0xe5, 0x35, 0x6a, 0x4f, 0x3b, 0x73, 0xff, 0x74, 0xf4, 0xf3, 0xca, 0xb2, 0x5f, 0xa8, 0x2e,
		0xf9, 0x85, 0xfd, 0x65, 0xbf, 0xb0, 0xbf, 0xe4, 0x17, 0x96, 0x6e, 0xa9, 0xb2, 0xe4, 0x17, 0x6a,
		0x4f, 0x3f, 0xe6, 0xfe, 0xfd, 0xce, 0xe2, 0x7f, 0x5a, 0x7f, 0xda, 0xfd, 0xb1, 0xec, 0xef, 0x1a,
		0x4f, 0x3f, 0x8e, 0x76, 0x77, 0x21, 0x7f, 0xd8, 0xe5, 0x0f, 0xcc, 0x9c, 0xdf, 0xcc, 0x21, 0x07,
		0xcd, 0x96, 0x83, 0x91, 0x3f, 0x70, 0x34, 0x90, 0x81, 0xc9, 0x36, 0x20, 0xff, 0x20, 0xff, 0x20,
		0xff, 0x20, 0xff, 0x20, 0xff, 0x72, 0x24, 0xff, 0x14, 0x20, 0xbb, 0x72, 0xd9, 0x77, 0x26, 0xfc,
		0x7e, 0x7c, 0x87, 0x94, 0x4a, 0x45, 0x9b, 0x40, 0x4a, 0xe5, 0xb2, 0x77, 0x12, 0x29, 0x95, 0x9a,
		0xa5, 0x54, 0x56, 0x60, 0xa3, 0xda, 0xda, 0x28, 0x52, 0x29, 0x21, 0xa7, 0x5f, 0x2b, 0xa7, 0xbd,
		0x81, 0xd2, 0xaa, 0xc5, 0x64, 0x79, 0xc8, 0x67, 0xc8, 0x67, 0xc8, 0x67, 0xc8, 0x67, 0xc8, 0xe7,
		0x1c, 0xc9, 0x67, 0xe1, 0x0f, 0xef, 0x45, 0xe8, 0x8c, 0x28, 0x1a, 0x1a, 0xdf, 0xb0, 0x3e, 0x7a,
		0x7d, 0x1a, 0xdf, 0x34, 0x2f, 0x3f, 0x57, 0x95, 0x77, 0xbd, 0x69, 0x5e, 0x7e, 0xae, 0xa3, 0xd1,
		0x0c, 0xf3, 0x16, 0x92, 0x27, 0xaf, 0xb6, 0xcb, 0x4c, 0xf2, 0xdc, 0xd1, 0xda, 0x25, 0x1f, 0xfe,
		0xec, 0xcc, 0x8d, 0xe2, 0xe3, 0x38, 0x0e, 0xd5, 0xf8, 0xb4, 0x73, 0xd7, 0x9f, 0x1a, 0xf2, 0xaf,
		0xc0, 0xa8, 0xad, 0x73, 0xe7, 0x61, 0x6a, 0x07, 0xe5, 0x83, 0x6a, 0xb5, 0xde, 0xa8, 0x56, 0x4b,
		0x8d, 0xfd, 0x46, 0xe9, 0xb0, 0x56, 0x2b, 0xd7, 0xcb, 0x35, 0x95, 0x33, 0xfe, 0xad, 0xa3, 0x82,
		0x3f, 0xf4, 0x3c, 0x95, 0x5b, 0xf8, 0x14, 0x89, 0x50, 0x49, 0xe4, 0x25, 0x9f, 0x71, 0x81, 0x41,
		0xe8, 0x06, 0xa1, 0x1b, 0x2b, 0x1c, 0xbe, 0x92, 0xed, 0x00, 0xd1, 0x01, 0x44, 0x07, 0x10, 0x1d,
		0x40, 0x74, 0x00, 0x6c, 0x2a, 0x47, 0xd1, 0x81, 0xa1, 0xeb, 0xc7, 0x07, 0x0a, 0xe3, 0x02, 0x35,
		0xb4, 0x2b, 0x62, 0xa5, 0xcf, 0x38, 0x5b, 0x9f, 0xec, 0x03, 0xe7, 0x96, 0x9a, 0x85, 0x4b, 0x0a,
		0xda, 0x9d, 0xad, 0x97, 0x2b, 0x0d, 0x18, 0xa9, 0xae, 0x46, 0x8a, 0xc3, 0x75, 0x88, 0xe8, 0x57,
		0x1a, 0x6d, 0x28, 0xa2, 0xd8, 0x09, 0x63, 0x3b, 0x8a, 0x9d, 0x78, 0xa8, 0xb0, 0x66, 0xf9, 0xc5,
		0x3e, 0x20, 0xa8, 0x21, 0xa8, 0x21, 0xa8, 0x21, 0xa8, 0x21, 0xa8, 0x73, 0x24, 0xa8, 0xb7, 0x6f,
		0x8e, 0x69, 0xbe, 0x29, 0xc3, 0x70, 0x30, 0x08, 0xc2, 0x58, 0x03, 0xce, 0x90, 0x6e, 0x04, 0xa4,
		0x01, 0xa4, 0x01, 0xa4, 0x01, 0xa4, 0x01, 0xa4, 0x01, 0xa4, 0x01, 0xa4, 0x41, 0x5f, 0xd2, 0xa0,
		0xb6, 0x3b, 0xda, 0xdc, 0x4e, 0x40, 0x1b, 0x40, 0x1b, 0x40, 0x1b, 0x40, 0x1b, 0x40, 0x1b, 0x40,
		0x1b, 0x40, 0x1b, 0xf4, 0xa2, 0x0d, 0xd1, 0x63, 0x14, 0x8b, 0x7b, 0xa5, 0x53, 0x0b, 0x9f, 0xb7,
		0x00, 0xa2, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xa2, 0x90, 0x23, 0xa2, 0xa0, 0x0a, 0xde,
		0x0b, 0x5b, 0xdf, 0x3e, 0xf5, 0x4b, 0xc9, 0x3e, 0x3c, 0xb6, 0x3f, 0x38, 0x76, 0xaf, 0xf5, 0xbd,
		0xfa, 0xf4, 0xf5, 0xeb, 0xde, 0x2f, 0x7e, 0x80, 0xa6, 0x9f, 0x7c, 0xbb, 0xf8, 0xd7, 0xaa, 0x0f,
		0x07, 0xad, 0x2a, 0x8d, 0xe4, 0xd7, 0x71, 0x30, 0x08, 0xbc, 0xa0, 0xaf, 0xb0, 0x86, 0x26, 0xdb,
		0x01, 0xd8, 0x35, 0xd8, 0x35, 0xd8, 0x35, 0xd8, 0x35, 0xd8, 0x75, 0x8e, 0xd8, 0xb5, 0xdb, 0x15,
		0x7e, 0xec, 0xc6, 0x8f, 0xa1, 0xe8, 0xa9, 0xe4, 0xd7, 0x2a, 0x4a, 0x69, 0x9a, 0xe9, 0x47, 0x7f,
		0xe7, 0x44, 0x0a, 0x71, 0x67, 0xf2, 0x20, 0x8e, 0x3f, 0x34, 0xdb, 0xd7, 0xa3, 0xff, 0xdc, 0xfc,
		0x79, 0x79, 0xaa, 0x0a, 0x7b, 0x92, 0xe2, 0x81, 0x48, 0x19, 0xab, 0x2d, 0x28, 0x2d, 0x31, 0x9a,
		0x79, 0x1c, 0xcd, 0xcb, 0xcf, 0xd5, 0xf6, 0xf9, 0xa7, 0xb3, 0x9b, 0xe6, 0xfb, 0xe3, 0xeb, 0x1b,
		0x6b, 0x1b, 0xeb, 0x59, 0x74, 0x7a, 0x12, 0x9f, 0x3e, 0xe2, 0x39, 0xa8, 0x7f, 0x0e, 0x75, 0xbc,
		0x11, 0xda, 0x3c, 0x09, 0xf5, 0x6f, 0x84, 0x92, 0x95, 0x5b, 0x60, 0xa0, 0x52, 0x6d, 0x0a, 0x3d,
		0x71, 0xd0, 0x13, 0xe7, 0xa7, 0x5b, 0x40, 0x4f, 0x1c, 0xa9, 0xf7, 0x75, 0x38, 0xb0, 0x63, 0xf7,
		0x5e, 0x44, 0xb1, 0x73, 0x3f, 0x50, 0x17, 0xd3, 0x9b, 0xd9, 0x05, 0xe2, 0x7a, 0xa4, 0x0b, 0x23,
		0xae, 0x87, 0xb8, 0x1e, 0xe2, 0x7a, 0xdb, 0xc5, 0xaa, 0xd4, 0xc7, 0xf5, 0x46, 0xf0, 0x1e, 0xbb,
		0x9d, 0xbf, 0xa2, 0x7a, 0x55, 0x61, 0x5c, 0x4f, 0xc5, 0xb1, 0xf9, 0x27, 0x7f, 0xdc, 0x6d, 0xc2,
		0xf2, 0x1d, 0x3f, 0x88, 0x44, 0x27, 0xf0, 0xbb, 0x4a, 0x80, 0x0f, 0x9d, 0x7a, 0x54, 0x6a, 0x65,
		0x74, 0xea, 0x59, 0x06, 0x10, 0xe8, 0xd4, 0xa3, 0x5b, 0xa7, 0x1e, 0x2d, 0x44, 0x27, 0xac, 0x56,
		0x43, 0xde, 0xa2, 0x6e, 0xd5, 0xdc, 0xe6, 0xee, 0xbc, 0xc9, 0x11, 0xb6, 0x59, 0xc7, 0xbe, 0x1f,
		0xc4, 0xe3, 0xf1, 0x08, 0x9c, 0x70, 0x66, 0x45, 0x9d, 0x3b, 0x71, 0xef, 0x0c, 0x9c, 0x64, 0xcc,
		0x9f, 0x55, 0x0c, 0x06, 0xc2, 0xef, 0x24, 0xfa, 0xda, 0xf6, 0x45, 0xfc, 0x9f, 0x20, 0xfc, 0xcb,
		0x76, 0xfd, 0x28, 0x76, 0xfc, 0x8e, 0x28, 0xbe, 0xfc, 0x41, 0x34, 0xf7, 0x93, 0xe2, 0x20, 0x0c,
		0xe2, 0xa0, 0x13, 0x78, 0x51, 0xf6, 0x5d, 0x71, 0x24, 0x4a, 0x8a, 0xae, 0x1f, 0x8b, 0xb0, 0xe7,
		0x8c, 0x7e, 0x27, 0xfb, 0xb6, 0xe8, 0x89, 0x6f, 0xc2, 0x8b, 0xc6, 0xff, 0x57, 0x74, 0xba, 0xff,
		0x76, 0x3a, 0xc2, 0xef, 0xb8, 0x22, 0xca, 0xbe, 0x7f, 0x2c, 0x46, 0xb1, 0x13, 0x0b, 0x1e, 0x49,
		0x43, 0x6f, 0x4e, 0x0c, 0xa6, 0xa4, 0xa0, 0x88, 0x43, 0x59, 0x76, 0x2f, 0x73, 0xf8, 0x89, 0x3d,
		0xec, 0xa4, 0x22, 0xdc, 0xa4, 0x30, 0xcc, 0xa4, 0x2a, 0xbc, 0xa4, 0x3c, 0xac, 0xa4, 0x3c, 0x9c,
		0xa4, 0x36, 0x8c, 0x94, 0x2f, 0x37, 0xce, 0x1e, 0x2e, 0xca, 0xde, 0x58, 0x4f, 0x38, 0x3d, 0xde,
		0xd4, 0xaf, 0x2c, 0xe5, 0x8b, 0xb1, 0x3d, 0xa9, 0x75, 0x99, 0x32, 0x95, 0xbd, 0xbd, 0x31, 0x39,
		0x28, 0x3e, 0xbb, 0x9d, 0xbc, 0xd0, 0x84, 0x37, 0x06, 0xbf, 0x08, 0x23, 0x34, 0xe5, 0x24, 0x03,
		0xbc, 0xa7, 0xde, 0xfc, 0xa7, 0xdc, 0x5a, 0x9c, 0x6a, 0x2b, 0x38, 0xc5, 0x56, 0x70, 0x6a, 0x4d,
		0xfd, 0x66, 0x30, 0x2b, 0x3c, 0xbd, 0x95, 0x9d, 0xc5, 0xa1, 0x85, 0xe2, 0x70, 0xd8, 0x89, 0xfd,
		0xd4, 0x3f, 0x7e, 0x1c, 0x7f, 0xa2, 0x66, 0xfa, 0x81, 0xda, 0x97, 0xe9, 0xc7, 0x68, 0x37, 0x23,
		0x37, 0x6a, 0x37, 0x27, 0x7b, 0x6f, 0x9f, 0x8d, 0x36, 0xdd, 0x3e, 0xce, 0x36, 0xfa, 0xc6, 0x4c,
		0xac, 0xa7, 0xb9, 0x32, 0xd1, 0x3b, 0xc2, 0xf5, 0x6e, 0xe8, 0xf8, 0x4e, 0xd0, 0x18, 0x98, 0xfc,
		0xc7, 0x4f, 0xf0, 0xe8, 0x2d, 0xa7, 0xe7, 0xda, 0x91, 0xd3, 0x73, 0xc9, 0x1e, 0x7a, 0xc6, 0x8e,
		0xb3, 0x95, 0x88, 0x0c, 0x78, 0x42, 0x85, 0x89, 0x2e, 0x4f, 0x1d, 0x7b, 0xe0, 0x88, 0x35, 0x30,
		0xc6, 0x16, 0xb8, 0x62, 0x09, 0xec, 0xb1, 0x03, 0xf6, 0x58, 0x01, 0x6f, 0x6c, 0xc0, 0x2c, 0xa7,
		0x75, 0xe2, 0xd2, 0xaa, 0x0e, 0xcb, 0xe9, 0xd1, 0x5b, 0xf0, 0x33, 0x40, 0x52, 0x9b, 0x2e, 0x2d,
		0x44, 0xb2, 0x41, 0x25, 0x27, 0x64, 0x2a, 0x80, 0x4e, 0x6e, 0x08, 0x55, 0x06, 0xa5, 0xca, 0x20,
		0x55, 0x0d, 0xb4, 0xe6, 0x23, 0xba, 0x44, 0x0d, 0xb9, 0x33, 0xcc, 0x34, 0x55, 0x8e, 0xcc, 0xc7,
		0x68, 0xd9, 0xca, 0x38, 0x45, 0x33, 0x0d, 0xa6, 0x15, 0xc2, 0xb5, 0x2a, 0xd8, 0x56, 0x0e, 0xdf,
		0xca, 0x61, 0x5c, 0x2d, 0x9c, 0xf3, 0xc0, 0x3a, 0x13, 0xbc, 0x67, 0xb7, 0x12, 0xa7, 0x68, 0xd4,
		0xa0, 0xf8, 0x7c, 0x8a, 0x36, 0x8e, 0x7f, 0x15, 0x33, 0xb7, 0x83, 0x64, 0x9b, 0x57, 0xdf, 0xc5,
		0xce, 0xc4, 0x97, 0x31, 0x53, 0x84, 0x74, 0x5d, 0x5e, 0x82, 0x50, 0x06, 0x41, 0x00, 0x41, 0x00,
		0x41, 0x00, 0x41, 0xd0, 0x81, 0x20, 0x70, 0xe9, 0x40, 0x75, 0x7a, 0x50, 0xb5, 0x2e, 0x54, 0xa4,
		0x0f, 0x95, 0xb9, 0x01, 0x95, 0xee, 0x40, 0x03, 0xb7, 0xa0, 0xda, 0x3d, 0x68, 0xe3, 0x26, 0xb4,
		0x71, 0x17, 0x7a, 0xb8, 0x0d, 0x5e, 0xf7, 0xc1, 0xec, 0x46, 0xd4, 0xe9, 0xcd, 0xb9, 0x37, 0x1e,
		0xcd, 0xfb, 0x34, 0x6a, 0xde, 0x87, 0xbe, 0x7d, 0x0a, 0xbf, 0x66, 0xba, 0xc5, 0xa1, 0x37, 0x99,
		0xd2, 0xfb, 0x5f, 0x47, 0x4f, 0x32, 0x38, 0xd6, 0x8d, 0xb8, 0x8b, 0x9a, 0xaa, 0xc6, 0x6c, 0xfd,
		0xc7, 0x7e, 0x10, 0xdb, 0x41, 0xc7, 0xee, 0x04, 0xf7, 0xc9, 0x00, 0x42, 0xd1, 0xb5, 0x3d, 0x31,
		0x4e, 0xab, 0x78, 0x42, 0x0b, 0xac, 0x8d, 0x6f, 0xaf, 0xf0, 0x9d, 0x5b, 0x4f, 0x28, 0x1c, 0x18,
		0x35, 0xd9, 0x00, 0x34, 0x31, 0x34, 0x31, 0x34, 0x31, 0x34, 0x31, 0x5c, 0x77, 0x8e, 0x34, 0xf1,
		0xf6, 0xcd, 0x95, 0x04, 0x3b, 0x03, 0x3b, 0x93, 0x77, 0x7b, 0xef, 0x45, 0x1c, 0xba, 0x1d, 0x75,
		0xe4, 0x2c, 0x5d, 0x9f, 0xd9, 0xa8, 0x4f, 0x44, 0xcf, 0x19, 0x7a, 0xb1, 0x92, 0x08, 0x8a, 0x55,
		0x2e, 0xf1, 0xba, 0xa1, 0x16, 0x88, 0x2f, 0x88, 0x2f, 0x88, 0x2f, 0x88, 0x2f, 0x88, 0x6f, 0x8e,
		0x88, 0xef, 0xd0, 0xf5, 0xe3, 0xfd, 0x8a, 0x42, 0xde, 0xdb, 0x40, 0x93, 0x55, 0xbe, 0x0f, 0x8e,
		0x26, 0xab, 0x53, 0xfb, 0x40, 0xbb, 0x4a, 0x4d, 0x60, 0x70, 0xd6, 0x44, 0x75, 0x6a, 0xb2, 0x5a,
		0xad, 0x1c, 0x56, 0x0f, 0xeb, 0x8d, 0xca, 0x21, 0x5a, 0xab, 0x6a, 0x6b, 0xab, 0x68, 0xad, 0x9a,
		0x03, 0x22, 0x84, 0xf0, 0x10, 0xbb, 0x61, 0x71, 0x86, 0x87, 0x22, 0xf5, 0x39, 0xad, 0x11, 0x92,
		0x5a, 0x11, 0xc7, 0x40, 0x1c, 0x03, 0x71, 0x0c, 0xc4, 0x31, 0xf2, 0x18, 0xc7, 0x40, 0x52, 0xab,
		0x26, 0x49, 0xad, 0x98, 0x46, 0xad, 0x4d, 0x56, 0x25, 0xc6, 0xee, 0x6a, 0xf0, 0x10, 0x30, 0x71,
		0x17, 0x1e, 0x16, 0x02, 0xd9, 0x48, 0x81, 0x8c, 0xa1, 0x2f, 0x32, 0xa4, 0xbf, 0x2e, 0x6d, 0x50,
		0xd3, 0xae, 0x9c, 0x45, 0xa7, 0x97, 0xf6, 0xa1, 0x40, 0xfb, 0x09, 0x9d, 0x03, 0x38, 0xca, 0x02,
		0x37, 0xe8, 0x52, 0x95, 0xab, 0xc0, 0x0c, 0x9a, 0x50, 0xa0, 0x09, 0x85, 0xf9, 0xde, 0x1b, 0x5d,
		0xaa, 0xa8, 0x41, 0x71, 0xae, 0x4b, 0x55, 0x84, 0x36, 0x55, 0x6b, 0xf0, 0x04, 0xd1, 0x1f, 0xbd,
		0xf1, 0x76, 0x18, 0x0c, 0x63, 0xd7, 0x57, 0xd0, 0xaf, 0xea, 0xe5, 0x06, 0xd0, 0xb8, 0x2a, 0x0f,
		0x9c, 0x21, 0x0a, 0xc1, 0x18, 0xb6, 0x90, 0x31, 0x44, 0x21, 0xf8, 0xc2, 0x7a, 0x37, 0x92, 0xbf,
		0x69, 0xd5, 0x64, 0x88, 0x8d, 0x1d, 0xb9, 0xdd, 0x48, 0x61, 0xeb, 0xaa, 0xd9, 0x7d, 0xa8, 0x39,
		0xeb, 0x2f, 0xe3, 0xac, 0x3f, 0xbf, 0xee, 0x41, 0xb5, 0x9b, 0xd0, 0xc6, 0x5d, 0x68, 0xe3, 0x36,
		0x74, 0x70, 0x1f, 0xbc, 0x6e, 0x84, 0xd9, 0x9d, 0x28, 0x73, 0x2b, 0x8b, 0xdd, 0x8b, 0xfa, 0x43,
		0xee, 0xd9, 0xed, 0x28, 0xb2, 0x76, 0x35, 0xce, 0x46, 0xb9, 0xd3, 0xd1, 0xc1, 0xf9, 0x68, 0xe3,
		0x84, 0x74, 0x71, 0x46, 0xda, 0x39, 0x25, 0xed, 0x9c, 0x93, 0x4e, 0x4e, 0x4a, 0x8d, 0xb3, 0x52,
		0xe4, 0xb4, 0x94, 0x3b, 0xaf, 0x6c, 0x03, 0xcc, 0x3d, 0xdc, 0x7f, 0x09, 0x5a, 0xac, 0xbd, 0xdd,
		0x35, 0x75, 0x63, 0xda, 0xb8, 0x33, 0x9d, 0xdc, 0x9a, 0x76, 0xee, 0x4d, 0x37, 0x37, 0xa7, 0xad,
		0xbb, 0xd3, 0xd6, 0xed, 0xe9, 0xe8, 0xfe, 0xd4, 0xba, 0x41, 0xc5, 0xee, 0x50, 0x1b, 0xb7, 0x98,
		0x6d, 0xa4, 0x1f, 0x06, 0xc3, 0x81, 0x3e, 0xaf, 0xf6, 0x04, 0xfb, 0xc6, 0xdb, 0xd2, 0xe4, 0xed,
		0x51, 0xd9, 0x71, 0x66, 0xe9, 0xa6, 0x92, 0x02, 0x50, 0x4b, 0x8b, 0xfd, 0xb4, 0x34, 0x79, 0x4e,
		0x6a, 0x8a, 0xbe, 0xb4, 0x27, 0x37, 0x3a, 0x92, 0x1c, 0x6d, 0xc9, 0x8e, 0xae, 0xa4, 0x47, 0x7b,
		0xf2, 0xa3, 0x3d, 0x09, 0xd2, 0x99, 0x0c, 0xe9, 0x41, 0x8a, 0x34, 0x21, 0x47, 0xd9, 0x83, 0x52,
		0x56, 0xe0, 0xf6, 0x4b, 0xb4, 0x52, 0xd7, 0xb9, 0xf2, 0x97, 0x8a, 0xbe, 0x0c, 0x13, 0x9a, 0x7e,
		0xd7, 0xd5, 0x56, 0x70, 0x2c, 0xdd, 0x97, 0x36, 0x95, 0x1d, 0xfa, 0x22, 0x91, 0x06, 0x26, 0x64,
		0xf9, 0xc2, 0xed, 0xdf, 0xdd, 0x06, 0xa1, 0x7e, 0x02, 0x29, 0xdb, 0x19, 0xb8, 0x37, 0xb8, 0x37,
		0xb8, 0x37, 0xb8, 0x37, 0xb8, 0x37, 0xb8, 0xf7, 0x56, 0x70, 0x6f, 0x77, 0x60, 0x3b, 0xdd, 0xee,
		0x88, 0x34, 0xe9, 0x48, 0xbf, 0x0f, 0x35, 0xda, 0x53, 0xfa, 0x0c, 0xbf, 0x68, 0x05, 0x01, 0x7a,
		0x41, 0xfa, 0x0b, 0xcb, 0xfa, 0x56, 0xd5, 0xd0, 0xb6, 0xe6, 0x6c, 0xec, 0x40, 0xc3, 0xbd, 0x5d,
		0x3a, 0x71, 0x2c, 0x42, 0x5f, 0x3b, 0x73, 0xcb, 0x36, 0xb8, 0xb3, 0xf3, 0xa5, 0x64, 0x1f, 0xb6,
		0x7e, 0x7c, 0x29, 0xdb, 0x87, 0xad, 0xf1, 0xb7, 0xe5, 0xe4, 0xff, 0xc6, 0xdf, 0x57, 0xbe, 0x94,
		0xec, 0xea, 0xe4, 0xfb, 0xda, 0x97, 0x92, 0x5d, 0x6b, 0xed, 0x7e, 0xfd, 0xba, 0xb7, 0xfb, 0x7d,
		0xff, 0x69, 0xf5, 0x5f, 0xdc, 0xf9, 0xef, 0x2f, 0x5f, 0xbf, 0x0e, 0xbe, 0x7f, 0x7c, 0x1a, 0xfd,
		0xf7, 0xec, 0xa9, 0xf5, 0xf7, 0xdd, 0xdf, 0x2c, 0xed, 0xee, 0x4a, 0x4b, 0xab, 0x1d, 0x3d, 0xbd,
		0x05, 0x4a, 0xbd, 0x1a, 0xa5, 0xea, 0x40, 0xa9, 0xdc, 0xa2, 0xd4, 0xd1, 0x8f, 0x11, 0x96, 0x38,
		0x76, 0xef, 0xd8, 0xfe, 0xd0, 0xfa, 0x5e, 0x7a, 0x5b, 0x7d, 0xda, 0x3d, 0xda, 0xdd, 0x79, 0xf9,
		0xb3, 0xa3, 0xdd, 0xef, 0xa5, 0xb7, 0xb5, 0xa7, 0x9d, 0x9d, 0x05, 0x7f, 0xf3, 0xdb, 0xa2, 0x6b,
		0xec, 0xfe, 0xd8, 0xd9, 0xd9, 0x49, 0xf1, 0x69, 0x06, 0xb3, 0xbe, 0x94, 0xca, 0xad, 0xdf, 0x92,
		0x6f, 0xc7, 0xff, 0xcd, 0x50, 0xef, 0x55, 0xff, 0x78, 0x77, 0x21, 0xd6, 0xbd, 0xd5, 0xd6, 0x05,
		0xfc, 0xeb, 0xa8, 0xf5, 0xf7, 0xa3, 0xdd, 0xef, 0xf5, 0xa7, 0xc9, 0xf7, 0xc9, 0x7f, 0x77, 0x7f,
		0xec, 0xec, 0xfd, 0xed, 0xeb, 0xd7, 0xbd, 0xbd, 0xbf, 0xed, 0x8e, 0x6f, 0x54, 0xfa, 0xef, 0xfe,
		0x36, 0xfe, 0xdb, 0xdf, 0x8e, 0x8e, 0xe6, 0x7e, 0xb4, 0xbb, 0xf3, 0xdf, 0x7b, 0x80, 0x75, 0x43,
		0x44, 0x95, 0x3e, 0xf7, 0x05, 0x71, 0xf1, 0x9f, 0xef, 0x0b, 0x71, 0x71, 0x13, 0x4c, 0xc8, 0x1a,
		0x84, 0x41, 0x2c, 0x92, 0xde, 0xe8, 0xb6, 0xf0, 0xdc, 0xbe, 0x7b, 0xeb, 0x09, 0xfd, 0x42, 0xe4,
		0x8b, 0x36, 0x89, 0x8c, 0xa2, 0xe5, 0x9b, 0x8a, 0xc3, 0x21, 0x12, 0x8a, 0x16, 0x51, 0x59, 0x1c,
		0x6a, 0x2c, 0xa3, 0xd3, 0x38, 0xd4, 0x78, 0xfd, 0xc6, 0x70, 0xa8, 0xb1, 0xe6, 0x06, 0x71, 0xa8,
		0x61, 0x3a, 0xff, 0xc6, 0xa1, 0xc6, 0xaf, 0xd0, 0x0a, 0x09, 0x45, 0x10, 0x4e, 0x10, 0x4e, 0xf9,
		0x17, 0x4e, 0x91, 0xdb, 0xb5, 0x15, 0xd6, 0xd2, 0x2f, 0xc5, 0x9f, 0x74, 0x5f, 0xe0, 0xdd, 0xe0,
		0xdd, 0xe0, 0xdd, 0xe0, 0xdd, 0xe0, 0xdd, 0xe0, 0xdd, 0x5b, 0xc1, 0xbb, 0x87, 0xfe, 0x88, 0xc9,
		0x21, 0x8f, 0xe8, 0x35, 0x8f, 0x0f, 0x79, 0x44, 0xaf, 0x25, 0x53, 0xa1, 0x3d, 0xe2, 0x53, 0xf1,
		0xe8, 0xb6, 0x69, 0x7c, 0x40, 0x7f, 0xa8, 0xe1, 0xde, 0xb4, 0x34, 0x35, 0x7d, 0x4d, 0x6e, 0xce,
		0xf4, 0xee, 0x07, 0x5e, 0x64, 0x7b, 0xce, 0xad, 0xf0, 0x34, 0x3d, 0x84, 0xd7, 0xdd, 0x02, 0xcd,
		0xb0, 0x44, 0xfd, 0x2d, 0x72, 0xde, 0xd3, 0xaa, 0x9a, 0x79, 0xbf, 0xae, 0x75, 0x36, 0x0c, 0xd8,
		0xaa, 0xda, 0x99, 0xfa, 0xf9, 0xb3, 0xd6, 0xec, 0xc6, 0xea, 0x30, 0xb3, 0x7f, 0xe5, 0x4d, 0x4f,
		0x06, 0xa8, 0x97, 0xeb, 0x6f, 0xcd, 0xda, 0xb8, 0x6e, 0x83, 0xd6, 0x57, 0x07, 0x39, 0x5d, 0x06,
		0xb3, 0x1b, 0xaa, 0x10, 0x5f, 0xf7, 0x4e, 0x3a, 0x0f, 0x06, 0xbf, 0x93, 0xa5, 0xea, 0x41, 0xad,
		0x51, 0xc3, 0x8b, 0x89, 0x17, 0xf3, 0x75, 0x2f, 0xe6, 0x1b, 0xec, 0x52, 0xc6, 0x57, 0xeb, 0x0d,
		0xe0, 0x77, 0x1b, 0xe4, 0x85, 0xf0, 0x87, 0xf7, 0x22, 0x1c, 0x1f, 0xcc, 0x9a, 0xa3, 0x31, 0xca,
		0x55, 0x03, 0xf6, 0x7a, 0xea, 0x0f, 0xef, 0x8d, 0x71, 0xbc, 0xd6, 0x4d, 0x70, 0x1d, 0x87, 0x9c,
		0x53, 0x90, 0xa4, 0xec, 0xba, 0x34, 0xb2, 0xe1, 0xe6, 0xe5, 0xe7, 0x6a, 0xfb, 0xf4, 0x9f, 0x97,
		0x67, 0xcd, 0xf7, 0xcd, 0x9b, 0xf6, 0xc7, 0x4f, 0x67, 0x67, 0x96, 0x41, 0xf4, 0xac, 0x3c, 0xfa,
		0x08, 0x57, 0x17, 0x9f, 0x6e, 0x4e, 0xaf, 0xda, 0xc7, 0x67, 0xa7, 0x57, 0x37, 0x26, 0x6d, 0xbe,
		0x92, 0xde, 0xff, 0xba, 0xb9, 0xf7, 0x7f, 0x3f, 0xf9, 0x08, 0xe7, 0x86, 0xee, 0xbe, 0x31, 0xda,
		0xfd, 0xe9, 0xc7, 0x9b, 0xab, 0x8b, 0xcb, 0x3f, 0xdb, 0x67, 0xc7, 0xef, 0x4e, 0xcf, 0xda, 0xcd,
		0x8f, 0x27, 0xcd, 0xf7, 0xc7, 0x37, 0x17, 0x57, 0x26, 0x7d, 0x8e, 0x83, 0xd1, 0xe7, 0xf8, 0x78,
		0x31, 0xfe, 0x08, 0xd6, 0x1b, 0x68, 0x40, 0x99, 0xc8, 0xde, 0x4c, 0xce, 0x7a, 0x0d, 0x82, 0xf5,
		0x65, 0x06, 0x6d, 0x44, 0x74, 0x31, 0xfb, 0x14, 0xb3, 0xa0, 0x72, 0x54, 0xd8, 0x37, 0x69, 0xef,
		0xf3, 0x3e, 0xd5, 0x28, 0x15, 0xbb, 0xc8, 0x29, 0x1d, 0x15, 0x2a, 0x06, 0x7d, 0x80, 0x0c, 0x0c,
		0x8f, 0x0a, 0x07, 0x06, 0x6d, 0x7b, 0x86, 0xc9, 0x1c, 0x15, 0xca, 0xd0, 0xe3, 0x5b, 0xb0, 0x43,
		0x7d, 0x77, 0xa7, 0x67, 0x1c, 0x43, 0x53, 0xea, 0x60, 0xc0, 0x41, 0xbd, 0xe6, 0x5d, 0x1c, 0xe6,
		0x02, 0x15, 0x1a, 0x43, 0xb7, 0xf6, 0x5d, 0x1d, 0xb2, 0x8d, 0xce, 0x76, 0x6b, 0x28, 0x8f, 0xfb,
		0x38, 0x34, 0x9e, 0x5e, 0xfe, 0xf0, 0xc7, 0xa2, 0x7f, 0x56, 0x7e, 0xdb, 0x78, 0x3a, 0x5a, 0xf2,
		0x37, 0xf5, 0xa7, 0xa3, 0x57, 0x5e, 0xa3, 0xf6, 0xb4, 0x33, 0xf7, 0x4f, 0x47, 0x3f, 0xaf, 0x2c,
		0xfb, 0x85, 0xea, 0x92, 0x5f, 0xd8, 0x5f, 0xf6, 0x0b, 0xfb, 0x4b, 0x7e, 0x61, 0xe9, 0x96, 0x2a,
		0x4b, 0x7e, 0xa1, 0xf6, 0xf4, 0x63, 0xee, 0xdf, 0xef, 0x2c, 0xfe, 0xa7, 0xf5, 0xa7, 0xdd, 0x1f,
		0xcb, 0xfe, 0xae, 0xf1, 0xf4, 0xe3, 0x68, 0x77, 0x57, 0x5f, 0x25, 0xd6, 0xd2, 0xf9, 0xc5, 0xba,
		0xb8, 0x6e, 0xfe, 0xd3, 0x98, 0xb7, 0xeb, 0x5f, 0x78, 0xbd, 0x54, 0xbd, 0x5e, 0xff, 0x65, 0x81,
		0x38, 0x19, 0x4e, 0x34, 0xd1, 0x0e, 0xcc, 0x28, 0x42, 0x69, 0xc8, 0xc1, 0x97, 0xce, 0x07, 0x5d,
		0x7a, 0x1f, 0x6c, 0x99, 0x71, 0x90, 0x35, 0x3e, 0xb8, 0x3a, 0xf9, 0xf3, 0xe3, 0xf1, 0x79, 0xf3,
		0xbd, 0x05, 0x8d, 0xba, 0xd2, 0xf3, 0xd5, 0x3d, 0x9c, 0x9d, 0x3d, 0xd7, 0xa3, 0x42, 0x09, 0x5e,
		0xd4, 0xc0, 0x1d, 0xa1, 0xfb, 0x9a, 0x96, 0x50, 0x80, 0x26, 0x02, 0xe6, 0x1a, 0xf4, 0x76, 0x8f,
		0xad, 0xd4, 0xcc, 0x70, 0xad, 0xa8, 0x73, 0x27, 0xee, 0x9d, 0x81, 0x13, 0xdf, 0x8d, 0x68, 0x48,
		0x31, 0x18, 0x08, 0x7f, 0x3c, 0x5f, 0xd9, 0xf6, 0x45, 0xfc, 0x9f, 0x20, 0xfc, 0xcb, 0x76, 0xfd,
		0x28, 0x76, 0xfc, 0x8e, 0x28, 0xbe, 0xfc, 0x41, 0x34, 0xf7, 0x93, 0xe2, 0x20, 0x0c, 0xe2, 0xa0,
		0x13, 0x78, 0x51, 0xf6, 0x5d, 0xd1, 0x8d, 0xdc, 0xa8, 0xe8, 0xfa, 0xb1, 0x08, 0x7b, 0xce, 0xe8,
		0x77, 0xb2, 0x6f, 0x8b, 0x9e, 0xf8, 0x26, 0xbc, 0x68, 0xfc, 0x7f, 0x45, 0xa7, 0xe7, 0xda, 0x91,
		0xd3, 0x73, 0x8b, 0x4e, 0xaf, 0x18, 0x89, 0xfe, 0xbd, 0xf0, 0x63, 0x3b, 0x0c, 0x86, 0xb1, 0xeb,
		0xf7, 0x8b, 0x4e, 0xf7, 0xdf, 0x4e, 0x47, 0xf8, 0x9d, 0x47, 0x3b, 0x72, 0xbb, 0xd1, 0xec, 0x1f,
		0x8b, 0xe9, 0x34, 0xe8, 0x37, 0xdb, 0x69, 0xd2, 0x0a, 0xcd, 0x59, 0x9f, 0xd1, 0x3e, 0xba, 0x8d,
		0xf4, 0xd1, 0xa4, 0xfb, 0x06, 0x66, 0x83, 0xff, 0xcc, 0x56, 0x30, 0x1b, 0x7c, 0x99, 0xf1, 0x62,
		0x36, 0xf8, 0xaa, 0x3e, 0x1d, 0xb3, 0xc1, 0xf5, 0x22, 0x59, 0xda, 0x74, 0xcb, 0xc8, 0xd0, 0x66,
		0x24, 0x02, 0x42, 0xd1, 0xd3, 0x01, 0x6f, 0x26, 0xf1, 0x44, 0x0d, 0xf2, 0xe7, 0xac, 0xcb, 0x94,
		0x77, 0xee, 0xed, 0xa5, 0x3c, 0xae, 0x98, 0xb9, 0x70, 0x10, 0x3a, 0x7e, 0x2d, 0xa0, 0x47, 0x6b,
		0x35, 0xbd, 0x5a, 0xaa, 0x81, 0xcc, 0x81, 0xcc, 0x81, 0xcc, 0x81, 0xcc, 0x81, 0xcc, 0x81, 0xcc,
		0x81, 0xcc, 0xad, 0x46, 0xe6, 0x52, 0x07, 0x0e, 0x2a, 0xc7, 0x4f, 0xe5, 0x62, 0x27, 0x16, 0x1a,
		0x31, 0xb9, 0x64, 0x3b, 0x7a, 0x10, 0xb9, 0xb2, 0x2e, 0x44, 0xae, 0x02, 0x22, 0x07, 0x22, 0x07,
		0x22, 0x07, 0x22, 0xb7, 0x25, 0x44, 0xee, 0xc4, 0x0d, 0xf5, 0x00, 0x1b, 0xc7, 0xf3, 0x82, 0x8e,
		0x13, 0x8b, 0xae, 0xdd, 0x7d, 0xf4, 0x9d, 0x7b, 0xb7, 0x63, 0x8f, 0xfe, 0xec, 0xe9, 0xd7, 0x53,
		0x7e, 0xd9, 0x46, 0xd1, 0x64, 0x5e, 0xe7, 0x08, 0x89, 0x8e, 0x0e, 0x56, 0x5b, 0x47, 0xab, 0xab,
		0xc3, 0xd5, 0xde, 0xf1, 0x6a, 0xef, 0x80, 0x75, 0x76, 0xc4, 0x7a, 0x38, 0x64, 0x4d, 0x1c, 0xb3,
		0x7e, 0x91, 0x96, 0x79, 0xfd, 0xa8, 0x65, 0x3f, 0x70, 0xb4, 0x9a, 0x7f, 0xed, 0x97, 0xc6, 0xd5,
		0x1f, 0x5a, 0xf7, 0xfb, 0x46, 0xa7, 0xf9, 0xfc, 0x58, 0xdc, 0x9c, 0xe5, 0x69, 0xdf, 0xcf, 0xdb,
		0x80, 0x3e, 0xde, 0x86, 0xf4, 0xef, 0x36, 0xa0, 0x0d, 0xa4, 0x49, 0xfd, 0xba, 0x8d, 0xeb, 0xd3,
		0x6d, 0x6c, 0x1b, 0x60, 0xf3, 0xda, 0xff, 0x1a, 0xd0, 0x8b, 0xcd, 0xa8, 0x3e, 0xdc, 0x66, 0xf6,
		0xdf, 0xc6, 0x0b, 0xb7, 0x65, 0x1a, 0xda, 0xbc, 0xdd, 0xa1, 0x1f, 0x55, 0xbe, 0xe8, 0xbc, 0x19,
		0xfd, 0xb3, 0x4d, 0xe8, 0x9b, 0x6d, 0x46, 0xbf, 0x6c, 0xb3, 0xfa, 0x64, 0x1b, 0xdc, 0x1f, 0xdb,
		0xc8, 0xbe, 0xd8, 0x06, 0xf7, 0xc3, 0x36, 0xb3, 0x0f, 0xb6, 0xe9, 0xfd, 0xaf, 0x4d, 0xea, 0x7b,
		0xad, 0xb9, 0xc6, 0x32, 0xa8, 0xcf, 0xb5, 0xd9, 0xfd, 0xad, 0x4d, 0xec, 0x6b, 0x6d, 0x6c, 0x3f,
		0x6b, 0x63, 0xfb, 0x58, 0x1b, 0xd6, 0xbf, 0xda, 0xac, 0xbe, 0xd5, 0xfa, 0xea, 0xdb, 0x27, 0x34,
		0x3c, 0x32, 0x30, 0x0e, 0x80, 0xb6, 0x81, 0xaf, 0xd5, 0xfb, 0x9a, 0xf7, 0x9f, 0xd6, 0xb9, 0xef,
		0xb4, 0xf6, 0xfd, 0xa6, 0xd1, 0x67, 0x1a, 0x7d, 0xa6, 0x9f, 0x01, 0x5a, 0xc7, 0x17, 0xc8, 0x84,
		0xbe, 0xd2, 0xe8, 0x27, 0x8d, 0x7e, 0xd2, 0xfa, 0x12, 0x1d, 0x74, 0x76, 0xd4, 0xec, 0x7e, 0x68,
		0x40, 0x3d, 0xad, 0x7e, 0x18, 0x0c, 0x07, 0xfa, 0x15, 0x82, 0x8c, 0xb7, 0xa5, 0x49, 0x9a, 0xf0,
		0x89, 0xe8, 0x39, 0x43, 0x2f, 0xd6, 0xca, 0xed, 0x58, 0xc9, 0x59, 0xb9, 0x1e, 0x98, 0xd7, 0x42,
		0x79, 0xce, 0xa2, 0xed, 0xa0, 0x3c, 0x67, 0x85, 0x17, 0x1e, 0xe5, 0x39, 0xaf, 0x35, 0x72, 0x94,
		0xe7, 0x6c, 0xb8, 0x41, 0x94, 0xe7, 0x98, 0x11, 0x12, 0xd3, 0xb8, 0x3c, 0xe7, 0x36, 0x08, 0x3c,
		0xe1, 0xf8, 0x3a, 0x96, 0xe6, 0x94, 0x41, 0xae, 0xb5, 0x21, 0xd7, 0xda, 0x34, 0x0c, 0x9e, 0x33,
		0x60, 0x4d, 0x1a, 0x07, 0x83, 0xba, 0x81, 0xba, 0x81, 0xba, 0x81, 0xba, 0x81, 0xba, 0x81, 0xba,
		0x31, 0xa1, 0x95, 0x3b, 0xd0, 0xf0, 0x0c, 0x13, 0x85, 0xd5, 0xaf, 0xfd, 0xd2, 0xfb, 0x7c, 0xbc,
		0x8a, 0xf3, 0xf1, 0x35, 0xf9, 0x8d, 0x19, 0xe7, 0xe3, 0xad, 0x1f, 0x5f, 0xca, 0xf6, 0x61, 0x6b,
		0xfc, 0x6d, 0x39, 0xf9, 0xbf, 0xf1, 0xf7, 0x95, 0x2f, 0x25, 0xbb, 0x3a, 0xf9, 0xbe, 0xf6, 0xa5,
		0x64, 0xd7, 0x5a, 0xbb, 0x5f, 0xbf, 0xee, 0xed, 0x7e, 0xdf, 0x7f, 0x5a, 0xfd, 0x17, 0x77, 0xfe,
		0xfb, 0xcb, 0xd7, 0xaf, 0x83, 0xef, 0x1f, 0x9f, 0x46, 0xff, 0x3d, 0x7b, 0x6a, 0xfd, 0x7d, 0xf7,
		0x37, 0x1c, 0x6e, 0x19, 0xe1, 0xf7, 0xcc, 0x40, 0x29, 0x64, 0xf1, 0xe4, 0x17, 0xa5, 0x8e, 0x66,
		0x8e, 0xd4, 0x4b, 0x6f, 0xab, 0x4f, 0xbb, 0x47, 0xbb, 0x3b, 0x2f, 0x7f, 0x76, 0xb4, 0xfb, 0xbd,
		0xf4, 0xb6, 0xf6, 0xb4, 0xb3, 0xb3, 0xe0, 0x6f, 0x7e, 0x5b, 0x74, 0x8d, 0xdd, 0x1f, 0x3b, 0x3b,
		0x3b, 0x29, 0x3e, 0xcd, 0x60, 0xd6, 0x97, 0x52, 0xb9, 0xf5, 0x5b, 0xf2, 0xed, 0xf8, 0xbf, 0x19,
		0xea, 0xbd, 0xea, 0x1f, 0xef, 0x2e, 0xc4, 0xba, 0xb7, 0xda, 0xba, 0x80, 0x7f, 0x1d, 0xb5, 0xfe,
		0x7e, 0xb4, 0xfb, 0xbd, 0xfe, 0x34, 0xf9, 0x3e, 0xf9, 0xef, 0xee, 0x8f, 0x9d, 0xbd, 0xbf, 0x7d,
		0xfd, 0xba, 0xb7, 0xf7, 0xb7, 0xdd, 0xf1, 0x8d, 0x4a, 0xff, 0xdd, 0xdf, 0xc6, 0x7f, 0xfb, 0xdb,
		0xd1, 0xd1, 0xdc, 0x8f, 0x76, 0x77, 0xfe, 0x7b, 0x0f, 0xb0, 0x6e, 0x88, 0xa8, 0x2a, 0x20, 0x67,
		0x41, 0x27, 0x47, 0x6b, 0x0d, 0xc2, 0x20, 0x16, 0x49, 0xb1, 0xbb, 0x2d, 0x3c, 0xb7, 0xef, 0xde,
		0x7a, 0x42, 0xbf, 0x08, 0xeb, 0xa2, 0x4d, 0x22, 0x9f, 0x61, 0xf9, 0xa6, 0xe2, 0x70, 0x88, 0x74,
		0x86, 0x45, 0x4c, 0x08, 0x31, 0xf1, 0x65, 0x6c, 0x0c, 0x31, 0xf1, 0xd7, 0x6f, 0x0c, 0x31, 0xf1,
		0x35, 0x37, 0x88, 0x98, 0xb8, 0xe9, 0xf4, 0x0d, 0x31, 0xf1, 0x5f, 0xa1, 0x15, 0xd2, 0x19, 0xc0,
		0xbb, 0x5f, 0xf1, 0x4c, 0x34, 0x19, 0x97, 0x37, 0x67, 0xbe, 0x5a, 0x8c, 0xcd, 0x03, 0x6d, 0x03,
		0x6d, 0x03, 0x6d, 0x03, 0x6d, 0x03, 0x6d, 0x03, 0x6d, 0x63, 0x42, 0xab, 0xa1, 0xaf, 0x57, 0xeb,
		0x35, 0x64, 0x31, 0xbc, 0xf6, 0x4b, 0xe3, 0xf3, 0x41, 0x3d, 0x27, 0x0f, 0xe8, 0x6c, 0x62, 0x7a,
		0x9b, 0x9a, 0xbe, 0x26, 0x37, 0x67, 0x7a, 0x5a, 0x4f, 0x26, 0x30, 0xc1, 0x02, 0xcd, 0xb0, 0x44,
		0xfd, 0x2d, 0x72, 0xde, 0xd3, 0xea, 0x3e, 0xb9, 0xe0, 0xa5, 0x75, 0x9a, 0xd0, 0x4b, 0xcd, 0x8c,
		0x49, 0x06, 0xe6, 0x58, 0x6b, 0x76, 0x63, 0x4d, 0x9a, 0x6c, 0x90, 0x6d, 0xda, 0xb4, 0x09, 0x07,
		0xd9, 0xc6, 0x4d, 0x6d, 0xbc, 0xfe, 0x0c, 0x72, 0xa6, 0x35, 0x60, 0xd7, 0x4c, 0x21, 0xbe, 0xee,
		0x9d, 0x34, 0x68, 0x02, 0xc2, 0xfc, 0x3b, 0x69, 0xd2, 0x24, 0x04, 0xbc, 0x98, 0xea, 0x5f, 0xcc,
		0x37, 0xd8, 0xa5, 0x8c, 0xaf, 0x16, 0x9a, 0x22, 0x6f, 0x85, 0xbc, 0x30, 0x63, 0x92, 0xc2, 0x9c,
		0x02, 0xae, 0x1a, 0xb0, 0x57, 0x23, 0x26, 0x2b, 0x3c, 0xeb, 0x76, 0x93, 0x26, 0x2c, 0x64, 0xbb,
		0x36, 0x77, 0xd2, 0x42, 0xf6, 0x11, 0x4c, 0x9c, 0xb8, 0x90, 0x6d, 0xde, 0xdc, 0xc9, 0x0b, 0xd9,
		0x47, 0x30, 0x72, 0x02, 0x43, 0xb6, 0x7b, 0xc3, 0x27, 0x31, 0x64, 0x9f, 0xc3, 0xa0, 0x89, 0x0c,
		0x86, 0x69, 0x40, 0x83, 0x26, 0x34, 0x3c, 0xbb, 0x4e, 0x93, 0x27, 0x35, 0x64, 0x9f, 0xc2, 0xc0,
		0x89, 0x0d, 0xcf, 0x7b, 0x37, 0x74, 0x72, 0xc3, 0xf4, 0x07, 0x30, 0x72, 0x82, 0xc3, 0x33, 0x43,
		0x37, 0x6a, 0x92, 0x43, 0xb6, 0x6d, 0xa3, 0x26, 0x3a, 0x98, 0xa3, 0xc7, 0x31, 0xf9, 0x31, 0x4f,
		0x71, 0x0c, 0x4c, 0x7e, 0x5c, 0x37, 0x5e, 0xa1, 0x79, 0x0d, 0xf9, 0x5c, 0xa0, 0x42, 0x63, 0xe8,
		0xd6, 0xbe, 0xa6, 0x3c, 0xdb, 0x28, 0x5a, 0xdb, 0x63, 0x42, 0xc4, 0x1c, 0xb0, 0xeb, 0xfc, 0x62,
		0x99, 0x30, 0x31, 0x22, 0xdb, 0x2d, 0x26, 0x47, 0x60, 0x72, 0x84, 0x31, 0xc4, 0x09, 0x5d, 0x2b,
		0x4c, 0x22, 0x96, 0x1a, 0x27, 0x1b, 0xeb, 0x7d, 0xf0, 0xa5, 0xf3, 0x41, 0x97, 0xde, 0x07, 0x5b,
		0x66, 0x1c, 0x64, 0x8d, 0x0f, 0xae, 0x4e, 0xfe, 0xfc, 0x78, 0x7c, 0xde, 0x7c, 0x6f, 0x41, 0xa3,
		0xae, 0xf4, 0x7c, 0x75, 0x0f, 0x67, 0x67, 0xcf, 0xf5, 0xa8, 0x50, 0x82, 0x17, 0x35, 0x70, 0x47,
		0xe8, 0xfd, 0xa4, 0xdb, 0xfd, 0x50, 0xbb, 0x03, 0xc5, 0x50, 0x68, 0x1d, 0xfb, 0x7e, 0x10, 0x8f,
		0xa9, 0x8a, 0x0e, 0xb8, 0x67, 0x45, 0x9d, 0x3b, 0x71, 0xef, 0x0c, 0x9c, 0xf8, 0x6e, 0xe4, 0xc5,
		0x8a, 0xc1, 0x40, 0xf8, 0x9d, 0xa4, 0xd6, 0xdb, 0xf6, 0x45, 0xfc, 0x9f, 0x20, 0xfc, 0xcb, 0x76,
		0xfd, 0x28, 0x76, 0xfc, 0x8e, 0x28, 0xbe, 0xfc, 0x41, 0x34, 0xf7, 0x93, 0xe2, 0x20, 0x0c, 0xe2,
		0xa0, 0x13, 0x78, 0x51, 0xf6, 0x5d, 0xd1, 0x8d, 0xdc, 0xa8, 0xe8, 0xfa, 0xb1, 0x08, 0x7b, 0xce,
		0xe8, 0x77, 0xb2, 0x6f, 0x8b, 0x9e, 0xf8, 0x26, 0xbc, 0x68, 0xfc, 0x7f, 0x45, 0xa7, 0xe7, 0xda,
		0x91, 0xd3, 0x73, 0x8b, 0x4e, 0xaf, 0x18, 0x89, 0xfe, 0xbd, 0xf0, 0x63, 0x3b, 0x0c, 0x86, 0xb1,
		0xeb, 0xf7, 0x8b, 0x4e, 0xf7, 0xdf, 0x4e, 0x47, 0xf8, 0x9d, 0x47, 0x3b, 0x72, 0xbb, 0xd1, 0xec,
		0x1f, 0x8b, 0x51, 0xec, 0xc4, 0x8a, 0x5b, 0x3e, 0xa9, 0xb3, 0x68, 0x35, 0x2b, 0x2b, 0x7a, 0x87,
		0xac, 0x3f, 0xc4, 0xe3, 0xf4, 0xd4, 0x89, 0x82, 0xd2, 0x8e, 0x0d, 0xd6, 0x99, 0x1b, 0xc5, 0xc7,
		0x71, 0xac, 0x76, 0x2c, 0x87, 0x75, 0xee, 0xfa, 0xa7, 0x9e, 0x18, 0xbd, 0x2e, 0x8a, 0x73, 0x93,
		0xad, 0x73, 0xe7, 0x61, 0x6a, 0x27, 0xe5, 0x83, 0x6a, 0xb5, 0xde, 0xa8, 0x56, 0x4b, 0x8d, 0xfd,
		0x46, 0xe9, 0xb0, 0x56, 0x2b, 0xd7, 0xcb, 0x0a, 0x33, 0xbf, 0xad, 0x8b, 0xb0, 0x2b, 0x42, 0xd1,
		0x7d, 0x37, 0x32, 0x20, 0x7f, 0xe8, 0x79, 0x3a, 0x6c, 0xe5, 0x53, 0x24, 0x42, 0xa5, 0x49, 0xd9,
		0xaa, 0xde, 0x63, 0x4d, 0x7c, 0xa0, 0xf1, 0xbe, 0x4f, 0x61, 0xb0, 0xc3, 0x8a, 0xe2, 0x70, 0xd8,
		0x89, 0xfd, 0x34, 0x02, 0xf3, 0x71, 0x7c, 0x33, 0x9a, 0xe9, 0xbd, 0x68, 0x5f, 0xa6, 0x77, 0xa0,
		0xdd, 0x8c, 0xdc, 0xa8, 0xdd, 0x9c, 0x7c, 0xec, 0xf6, 0xd9, 0xe8, 0xf3, 0xb6, 0x8f, 0x7b, 0xed,
		0xeb, 0xf1, 0xc7, 0xbc, 0x1a, 0x7f, 0xca, 0xf6, 0xf1, 0xe4, 0x63, 0x5d, 0xbb, 0x5d, 0x35, 0xbe,
		0x9c, 0xdf, 0x93, 0xf2, 0xae, 0xc8, 0xfc, 0xae, 0xab, 0x7e, 0xc7, 0x0d, 0x7c, 0xb7, 0x79, 0xed,
		0x9e, 0xcf, 0xfa, 0x18, 0x2d, 0xcf, 0xea, 0x79, 0xe2, 0xc1, 0x76, 0xbc, 0x7e, 0x60, 0x8f, 0xfb,
		0x09, 0x8d, 0x6f, 0x2c, 0xb7, 0x01, 0x66, 0x81, 0xe9, 0xc5, 0xdb, 0x61, 0x7e, 0x13, 0x27, 0xe1,
		0x67, 0xe6, 0x65, 0x55, 0x75, 0x0c, 0x53, 0xd9, 0x19, 0x4c, 0x79, 0x07, 0x30, 0xd5, 0x9d, 0xbe,
		0xb4, 0xe9, 0xe8, 0xa5, 0x4d, 0xe7, 0x2e, 0x1d, 0x3a, 0x74, 0xe5, 0x9b, 0x69, 0x9c, 0xb8, 0x6a,
		0x24, 0xf8, 0x42, 0x74, 0x57, 0xf7, 0xe6, 0xfd, 0xcc, 0xe7, 0xa8, 0x7a, 0x09, 0xd5, 0xb8, 0x1e,
		0xe5, 0x2e, 0x48, 0x07, 0x57, 0xa4, 0x8d, 0x4b, 0xd2, 0xc5, 0x35, 0x69, 0xe7, 0xa2, 0xb4, 0x73,
		0x55, 0x3a, 0xb9, 0x2c, 0x75, 0xb2, 0x5c, 0x65, 0x60, 0x4c, 0x95, 0x2b, 0xcb, 0x36, 0xd0, 0x99,
		0x20, 0xa6, 0xe2, 0x77, 0x74, 0x02, 0x5a, 0xe9, 0x7e, 0x14, 0xbf, 0x0f, 0x6a, 0xdd, 0x98, 0x36,
		0xee, 0x4c, 0x27, 0xb7, 0xa6, 0x9d, 0x7b, 0xd3, 0xcd, 0xcd, 0x69, 0xeb, 0xee, 0xb4, 0x75, 0x7b,
		0x3a, 0xba, 0x3f, 0xb5, 0x6e, 0x50, 0xb1, 0x3b, 0xd4, 0xc6, 0x2d, 0x2e, 0x50, 0x7c, 0x3a, 0x0e,
		0x30, 0x98, 0xd9, 0x1d, 0xc6, 0x18, 0xe8, 0xec, 0x42, 0x75, 0x74, 0xa5, 0xda, 0xba, 0x54, 0x5d,
		0x5d, 0xab, 0xf6, 0x2e, 0x56, 0x7b, 0x57, 0xab, 0xb3, 0xcb, 0xd5, 0xc3, 0xf5, 0x6a, 0xe2, 0x82,
		0xb3, 0x07, 0xa5, 0xf1, 0x18, 0x03, 0xd7, 0x8f, 0x0f, 0x34, 0x1c, 0x63, 0xa0, 0x51, 0xbf, 0x4b,
		0x4d, 0x7b, 0x25, 0x6b, 0x58, 0x59, 0xa4, 0x73, 0xef, 0xe3, 0xe7, 0x7e, 0xaa, 0x15, 0x4d, 0x2b,
		0xd2, 0x8d, 0xe9, 0x99, 0xaa, 0x7f, 0x6f, 0x54, 0x0d, 0x2b, 0x77, 0xb4, 0x6e, 0x42, 0x9c, 0xbd,
		0x1c, 0x95, 0x5a, 0x0d, 0x2f, 0x47, 0xde, 0x5f, 0x0e, 0x54, 0x1a, 0x2d, 0xfc, 0x6a, 0x81, 0xb2,
		0x4e, 0x6b, 0x0b, 0xbd, 0x2a, 0x6e, 0xb2, 0x7d, 0x3d, 0xf6, 0x83, 0xd8, 0x0e, 0x3a, 0x76, 0x27,
		0xb8, 0x1f, 0x84, 0x22, 0x8a, 0x44, 0xd7, 0xf6, 0x84, 0xd3, 0x1b, 0x6d, 0xf2, 0x09, 0xa5, 0x62,
		0xba, 0x98, 0xd0, 0x44, 0xd1, 0x6b, 0x17, 0xed, 0xd3, 0x2b, 0x98, 0x8f, 0x38, 0xdf, 0xcf, 0x37,
		0x84, 0x38, 0xdf, 0x0a, 0x1b, 0x43, 0x9c, 0x6f, 0xcd, 0x0d, 0x22, 0xce, 0x67, 0x3a, 0x7d, 0x43,
		0x9c, 0xef, 0x57, 0x68, 0xe5, 0x0e, 0x6c, 0xed, 0x5e, 0x3e, 0x8c, 0x2c, 0x7d, 0xed, 0x97, 0xc6,
		0x5d, 0x84, 0xdc, 0xc1, 0xb7, 0xaa, 0xad, 0x25, 0xae, 0x17, 0x34, 0xef, 0x42, 0xa9, 0x7d, 0xf7,
		0xc9, 0xb4, 0xeb, 0x64, 0xeb, 0xc7, 0x97, 0xb2, 0x7d, 0xd8, 0x1a, 0x7f, 0x5b, 0x4e, 0xfe, 0x6f,
		0xfc, 0x7d, 0xe5, 0x4b, 0xc9, 0xae, 0x4e, 0xbe, 0xaf, 0x7d, 0x29, 0xd9, 0xb5, 0xd6, 0xee, 0xd7,
		0xaf, 0x7b, 0xbb, 0xdf, 0xf7, 0x9f, 0x56, 0xff, 0xc5, 0x62, 0xba, 0xd8, 0xee, 0x8f, 0x9d, 0x2f,
		0x65, 0xbb, 0xd2, 0x9a, 0xfc, 0x61, 0xff, 0x4b, 0xc9, 0xae, 0xb4, 0x74, 0xec, 0xc3, 0x88, 0xbe,
		0x67, 0xc6, 0x22, 0x56, 0x1d, 0x88, 0x95, 0x57, 0xc4, 0x3a, 0x9a, 0x69, 0x4e, 0x59, 0x7a, 0x5b,
		0x7d, 0xda, 0x3d, 0xda, 0xdd, 0x79, 0xf9, 0xb3, 0xa3, 0xdd, 0xef, 0xa5, 0xb7, 0xb5, 0xa7, 0x9d,
		0x9d, 0x05, 0x7f, 0xf3, 0xdb, 0xa2, 0x6b, 0xec, 0xfe, 0xd8, 0xd9, 0xd9, 0x49, 0xb1, 0x6a, 0x06,
		0xbf, 0xbe, 0x94, 0xca, 0xad, 0xdf, 0x92, 0x6f, 0xc7, 0xff, 0xcd, 0x10, 0xf0, 0x55, 0xff, 0x78,
		0x77, 0x77, 0x67, 0x1a, 0xf8, 0x46, 0xff, 0xff, 0xbd, 0xf2, 0xb4, 0xfb, 0x63, 0x67, 0x04, 0x97,
		0xe5, 0x0c, 0x04, 0xcb, 0xa3, 0x8b, 0x1c, 0x8c, 0xfe, 0xb9, 0xa6, 0x1d, 0x9f, 0x47, 0xae, 0xe2,
		0x5f, 0x47, 0xad, 0xbf, 0x1f, 0xed, 0x7e, 0xaf, 0x3f, 0x4d, 0xbe, 0x4f, 0xfe, 0xbb, 0xfb, 0x63,
		0x67, 0xef, 0x6f, 0x5f, 0xbf, 0xee, 0xed, 0xfd, 0x6d, 0x77, 0x7c, 0x13, 0xd3, 0x7f, 0xf7, 0xb7,
		0xf1, 0xdf, 0xfe, 0x76, 0x74, 0x34, 0xf7, 0xa3, 0xdd, 0x9d, 0xe2, 0xde, 0xdf, 0x01, 0xf8, 0x46,
		0x28, 0xaf, 0x02, 0x02, 0xe7, 0x2f, 0xc5, 0x3a, 0x02, 0xe7, 0xa6, 0x1a, 0xb4, 0x0e, 0x81, 0xf3,
		0xb4, 0x3b, 0x93, 0x76, 0x81, 0x73, 0xa5, 0x5d, 0xa3, 0x96, 0x91, 0x24, 0x04, 0xce, 0x97, 0x11,
		0x35, 0x04, 0xce, 0x5f, 0xbf, 0x31, 0x04, 0xce, 0xd7, 0xdc, 0x20, 0x02, 0xe7, 0xa6, 0xd3, 0x37,
		0x04, 0xce, 0x7f, 0xe9, 0xf7, 0x42, 0x7b, 0xe4, 0xfa, 0xe2, 0xd1, 0x06, 0x11, 0x3a, 0x7f, 0xcd,
		0x43, 0x44, 0xe8, 0xfc, 0x95, 0xa6, 0x75, 0x3f, 0xf0, 0x22, 0xdb, 0x73, 0x6e, 0x85, 0xa7, 0x73,
		0x1c, 0xea, 0x50, 0xc3, 0xbd, 0x69, 0x69, 0x69, 0xfa, 0x5a, 0xdc, 0x9c, 0xe5, 0x0d, 0x5d, 0x3f,
		0xde, 0xaf, 0x18, 0x30, 0x3d, 0x4c, 0xe3, 0x61, 0xa7, 0x9a, 0x96, 0x05, 0x98, 0x63, 0x8d, 0xd9,
		0x8d, 0xd4, 0xb9, 0x6c, 0x60, 0x6e, 0xb3, 0x59, 0x19, 0x41, 0xdd, 0x90, 0xe1, 0xc7, 0xa6, 0x24,
		0x4e, 0xcf, 0x83, 0x95, 0xee, 0x89, 0xd4, 0x9a, 0x92, 0xe9, 0x9f, 0xbf, 0x6b, 0x1a, 0x57, 0x21,
		0x2c, 0x7f, 0xd7, 0x4a, 0xd5, 0x83, 0x5a, 0xa3, 0x86, 0x17, 0x0e, 0x2f, 0x9c, 0x86, 0x1a, 0xda,
		0xbc, 0xdd, 0x61, 0x24, 0x70, 0xbe, 0xe8, 0xbc, 0xde, 0x93, 0xdc, 0xe6, 0x14, 0x65, 0x55, 0xe3,
		0x3d, 0x6a, 0x3d, 0xd9, 0xed, 0x59, 0xff, 0x9a, 0x30, 0xe1, 0x2d, 0xdb, 0x6d, 0x32, 0xe9, 0xad,
		0x79, 0xf9, 0xb9, 0xda, 0x3e, 0xfd, 0xe7, 0xe5, 0x59, 0xf3, 0x7d, 0xf3, 0xa6, 0xfd, 0xf1, 0xd3,
		0xd9, 0x99, 0x65, 0x00, 0x5d, 0x2a, 0x8f, 0xb6, 0x3e, 0x33, 0xd0, 0xdf, 0x80, 0x4d, 0x57, 0xd2,
		0xfb, 0x5d, 0x37, 0xef, 0x7e, 0xef, 0x27, 0x5b, 0x3f, 0x37, 0x6c, 0xd7, 0x8d, 0xd1, 0xae, 0x4f,
		0x3f, 0xde, 0x5c, 0x5d, 0x5c, 0xfe, 0xd9, 0x3e, 0x3b, 0x7e, 0x77, 0x7a, 0xd6, 0x6e, 0x7e, 0x3c,
		0x69, 0xbe, 0x3f, 0xbe, 0xb9, 0xb8, 0x32, 0x61, 0xff, 0x07, 0xc9, 0x30, 0x8a, 0x8b, 0xf1, 0xd6,
		0xad, 0x37, 0xd0, 0x58, 0x9b, 0x20, 0xb3, 0xee, 0xb3, 0x19, 0x9f, 0x5d, 0xdd, 0x12, 0x83, 0xd5,
		0x3a, 0xea, 0x96, 0xed, 0x7e, 0x16, 0x24, 0x8e, 0x0a, 0xfb, 0x26, 0xec, 0x79, 0xde, 0x07, 0x1a,
		0xa1, 0x0e, 0x17, 0x39, 0x93, 0xa3, 0x42, 0xc5, 0x80, 0x8d, 0x67, 0xa0, 0x76, 0x54, 0x38, 0x30,
		0x60, 0xbb, 0x33, 0x4c, 0xe3, 0xa8, 0x50, 0x86, 0xbe, 0xcd, 0xd1, 0xce, 0x30, 0xb9, 0xdd, 0x28,
		0xd7, 0xae, 0x7b, 0x05, 0x83, 0xd3, 0xed, 0x86, 0x22, 0x8a, 0x50, 0xc2, 0xb0, 0xda, 0xde, 0x0c,
		0x29, 0xba, 0x9a, 0x14, 0x1f, 0x94, 0xc7, 0xc5, 0x0a, 0x8d, 0xa7, 0x97, 0x3f, 0xfc, 0xb1, 0xe8,
		0x9f, 0x95, 0xdf, 0x36, 0x9e, 0x8e, 0x96, 0xfc, 0x4d, 0xfd, 0xe9, 0xe8, 0x95, 0xd7, 0xa8, 0x3d,
		0xed, 0xcc, 0xfd, 0xd3, 0xd1, 0xcf, 0x2b, 0xcb, 0x7e, 0xa1, 0xba, 0xe4, 0x17, 0xf6, 0x97, 0xfd,
		0xc2, 0xfe, 0x92, 0x5f, 0x58, 0xba, 0xa5, 0xca, 0x92, 0x5f, 0xa8, 0x3d, 0xfd, 0x98, 0xfb, 0xf7,
		0x3b, 0x8b, 0xff, 0x69, 0xfd, 0x69, 0xf7, 0xc7, 0xb2, 0xbf, 0x6b, 0x3c, 0xfd, 0x38, 0xd2, 0xb2,
		0xc4, 0x4c, 0xc7, 0x17, 0xe8, 0xe2, 0xba, 0xf9, 0x4f, 0xed, 0xdf, 0xa2, 0x7f, 0xe1, 0x35, 0x52,
		0xf5, 0x1a, 0xfd, 0x17, 0x2a, 0x77, 0x4c, 0x21, 0x82, 0xa8, 0xdc, 0x99, 0xc6, 0x0c, 0x54, 0xee,
		0x18, 0x6b, 0xd0, 0xdb, 0xdd, 0xe9, 0x5f, 0x33, 0xc3, 0x35, 0x62, 0x8a, 0xec, 0xc2, 0x21, 0xa3,
		0x0b, 0x7f, 0x5a, 0x4c, 0xc7, 0xe9, 0xbc, 0xd9, 0x4e, 0x03, 0x57, 0x68, 0xdc, 0x7a, 0x4d, 0x8e,
		0xd0, 0x71, 0x62, 0x84, 0x26, 0x85, 0x70, 0x18, 0xb2, 0xf4, 0x33, 0x7b, 0xc1, 0x90, 0xa5, 0x65,
		0xc6, 0x8b, 0x21, 0x4b, 0xab, 0x7a, 0x7a, 0x0c, 0x59, 0xd2, 0x8b, 0x7a, 0x69, 0x53, 0xb8, 0x96,
		0xa1, 0xcd, 0x48, 0x1a, 0x84, 0xa2, 0xa7, 0x03, 0xde, 0x4c, 0xe2, 0xc0, 0x1a, 0x9c, 0x27, 0x5b,
		0x97, 0x29, 0x1b, 0xdd, 0xdb, 0x4b, 0xf9, 0x5c, 0x71, 0xc6, 0x8d, 0x83, 0xdc, 0xb1, 0x3f, 0x11,
		0x4d, 0x5a, 0x04, 0xeb, 0xd5, 0x1a, 0x18, 0x84, 0x0e, 0x84, 0x0e, 0x84, 0x0e, 0x84, 0x0e, 0x84,
		0x0e, 0x84, 0x0e, 0x84, 0x6e, 0x35, 0x42, 0x97, 0x42, 0x0e, 0xa8, 0x1c, 0xfb, 0xb3, 0x88, 0x62,
		0x27, 0x16, 0xfa, 0x30, 0xb9, 0xf1, 0x76, 0x30, 0xfe, 0x7c, 0x86, 0xc8, 0x55, 0x40, 0xe4, 0x40,
		0xe4, 0x40, 0xe4, 0x40, 0xe4, 0xb6, 0x84, 0xc8, 0x61, 0xfc, 0xf9, 0xab, 0x20, 0x10, 0xe3, 0xcf,
		0x8d, 0x89, 0x85, 0xe8, 0xe8, 0x4a, 0xb5, 0x75, 0xa9, 0xba, 0xba, 0x56, 0xed, 0x5d, 0xac, 0xf6,
		0xae, 0x56, 0x67, 0x97, 0xab, 0x87, 0xeb, 0xd5, 0xc4, 0x05, 0xeb, 0x17, 0x53, 0x99, 0x43, 0x2b,
		0x8c, 0x3f, 0xff, 0xf5, 0x96, 0x30, 0xfe, 0xfc, 0x95, 0x37, 0x0a, 0xe3, 0xcf, 0x37, 0xda, 0x21,
		0x26, 0x3c, 0xe7, 0x0c, 0xf7, 0x67, 0x5f, 0x0e, 0x8c, 0x3f, 0xc7, 0xcb, 0x01, 0x6a, 0xa6, 0xef,
		0x6e, 0x5a, 0x28, 0x25, 0xd0, 0x05, 0x3c, 0x31, 0x3d, 0x7b, 0x15, 0xae, 0x8c, 0x30, 0xd1, 0x92,
		0x0d, 0x21, 0x4c, 0xb4, 0xc2, 0xc6, 0x10, 0x26, 0x5a, 0x73, 0x83, 0x08, 0x13, 0x99, 0xee, 0xfd,
		0x11, 0x26, 0xfa, 0x15, 0x5a, 0x61, 0x7a, 0xf6, 0x6a, 0x8f, 0x10, 0xa1, 0xa2, 0x57, 0x1b, 0x16,
		0xa6, 0x67, 0xaf, 0xcb, 0x6e, 0x30, 0x3d, 0x1b, 0xd3, 0xb3, 0x73, 0xe6, 0x02, 0xcd, 0x40, 0x2c,
		0x4c, 0xcf, 0xce, 0x2d, 0x62, 0x61, 0x7a, 0xb6, 0x2a, 0x57, 0x81, 0xe9, 0xd9, 0x5b, 0xa8, 0xbc,
		0x0a, 0x88, 0xbb, 0xea, 0xe4, 0x82, 0x31, 0x7c, 0x79, 0x15, 0x1f, 0x8b, 0xb8, 0xeb, 0x32, 0x3f,
		0x8f, 0xb8, 0xeb, 0xeb, 0x37, 0x86, 0xb8, 0xeb, 0x9a, 0x1b, 0x44, 0xdc, 0xd5, 0x74, 0xef, 0x8f,
		0xb8, 0xeb, 0x2f, 0xfd, 0x1e, 0x86, 0x2f, 0xaf, 0xf8, 0x10, 0x11, 0x79, 0x7d, 0xa5, 0x69, 0x61,
		0xf8, 0x72, 0xae, 0x2c, 0x4d, 0x5f, 0x8b, 0x9b, 0xb3, 0x3c, 0x0c, 0x5f, 0x96, 0xb0, 0x45, 0x0c,
		0x5f, 0x96, 0x74, 0x23, 0x31, 0x7c, 0x99, 0x72, 0xc3, 0x98, 0x05, 0xbb, 0x65, 0x64, 0xfa, 0xe7,
		0xef, 0x1a, 0x86, 0x2f, 0xe3, 0x85, 0xcb, 0xcd, 0x0b, 0x87, 0xe1, 0x54, 0x6b, 0x7d, 0x61, 0xf8,
		0x72, 0xbe, 0xe8, 0x3c, 0x86, 0x2f, 0x4b, 0xdb, 0x23, 0x86, 0x2f, 0xcb, 0xdf, 0x2d, 0x86, 0x2f,
		0xf3, 0x6e, 0x1a, 0xc3, 0x97, 0x99, 0x77, 0x8d, 0xe1, 0xcb, 0xd0, 0x58, 0x19, 0x32, 0x63, 0xf8,
		0x32, 0xcb, 0xee, 0x31, 0x7c, 0x99, 0x77, 0xe3, 0x18, 0xbe, 0xcc, 0xb0, 0x5d, 0x0c, 0x5f, 0xce,
		0xf1, 0xce, 0x30, 0x7c, 0xd9, 0x28, 0xd7, 0x8e, 0xe1, 0xcb, 0x1b, 0x0b, 0x7d, 0x64, 0xc0, 0xaf,
		0xb1, 0x41, 0x4c, 0x8d, 0xc5, 0xf0, 0xe5, 0x0c, 0xa0, 0x31, 0x7c, 0x79, 0xcd, 0x5d, 0x62, 0xf8,
		0x32, 0x86, 0x2f, 0x6b, 0x4b, 0x74, 0x50, 0xf8, 0xa1, 0xd9, 0xfd, 0xc0, 0xec, 0x5e, 0xcc, 0xee,
		0x25, 0x9b, 0xdd, 0x3b, 0x1e, 0x05, 0xb1, 0xad, 0x23, 0x41, 0xde, 0x6c, 0xd1, 0x1b, 0x65, 0xfd,
		0x21, 0x1e, 0x9f, 0xab, 0x35, 0x0a, 0x1a, 0xf4, 0x35, 0xb7, 0xce, 0xdc, 0x28, 0x3e, 0x8e, 0x63,
		0xb5, 0x7d, 0xe8, 0xad, 0x73, 0xd7, 0x3f, 0xf5, 0xc4, 0xe8, 0x05, 0x52, 0x9c, 0x0f, 0x63, 0x9d,
		0x3b, 0x0f, 0x53, 0x3b, 0x29, 0x1f, 0x54, 0xab, 0xf5, 0x46, 0xb5, 0x5a, 0x6a, 0xec, 0x37, 0x4a,
		0x87, 0xb5, 0x5a, 0xb9, 0x5e, 0x56, 0x98, 0x65, 0x64, 0x5d, 0x84, 0x5d, 0x11, 0x8a, 0xee, 0xbb,
		0x91, 0x11, 0xf9, 0x43, 0xcf, 0xd3, 0x61, 0x2b, 0x9f, 0x22, 0x11, 0x2a, 0x4d, 0x08, 0x52, 0xf5,
		0x2e, 0x6b, 0xe2, 0x15, 0x73, 0xe6, 0x0d, 0x2d, 0xa5, 0x23, 0xa2, 0xc2, 0x61, 0x27, 0xf6, 0xd3,
		0x20, 0xda, 0xc7, 0xf1, 0xad, 0x69, 0xa6, 0x77, 0xa6, 0x7d, 0x99, 0xde, 0x8f, 0x76, 0x33, 0x72,
		0xa3, 0x76, 0x73, 0x72, 0x13, 0xda, 0x67, 0xa3, 0x4f, 0xdf, 0x3e, 0xee, 0xb5, 0xaf, 0xc7, 0x1f,
		0xfa, 0x6a, 0xfc, 0x99, 0xdb, 0x1f, 0x3c, 0xf1, 0x70, 0xec, 0xf5, 0x83, 0x71, 0xa9, 0xe5, 0xb5,
		0xaa, 0x01, 0xae, 0xfc, 0x0e, 0x96, 0x77, 0x45, 0xe6, 0xd7, 0x5f, 0xf5, 0x6b, 0x6f, 0xee, 0xeb,
		0xce, 0x6b, 0xfe, 0x7c, 0x46, 0xc8, 0x68, 0x80, 0xd6, 0xf4, 0xed, 0xe4, 0xb6, 0xbe, 0x17, 0x1d,
		0x56, 0xc7, 0x9b, 0x60, 0x7e, 0xf9, 0xd4, 0x0c, 0xac, 0x53, 0x56, 0xbe, 0xaf, 0xb2, 0x4c, 0x5f,
		0x79, 0x39, 0xbe, 0xea, 0xb2, 0x7b, 0x6d, 0xca, 0xeb, 0xb5, 0x29, 0xa3, 0xd7, 0xa1, 0x5c, 0x3e,
		0xdf, 0xe4, 0x42, 0xd5, 0x40, 0xb8, 0x29, 0x4c, 0x57, 0xf7, 0xbe, 0xcd, 0xfb, 0x17, 0x55, 0x2f,
		0x9c, 0xda, 0xb9, 0xa8, 0xca, 0xbb, 0xc5, 0xe8, 0xd0, 0x1d, 0x46, 0x9b, 0x6e, 0x30, 0xba, 0x74,
		0x7f, 0xd1, 0xae, 0xdb, 0x8b, 0x76, 0xdd, 0x5d, 0x74, 0xea, 0xe6, 0xb2, 0x5d, 0x61, 0x6d, 0xd5,
		0x73, 0x4c, 0xad, 0xce, 0x04, 0x31, 0x35, 0x99, 0xee, 0x9d, 0xee, 0x07, 0xe3, 0xbd, 0x75, 0x6a,
		0x7e, 0x86, 0xf1, 0xde, 0x06, 0xb8, 0x39, 0x6d, 0xdd, 0x9d, 0xb6, 0x6e, 0x4f, 0x47, 0xf7, 0xa7,
		0xd6, 0x0d, 0x2a, 0x76, 0x87, 0xda, 0xb8, 0xc5, 0x6c, 0x23, 0x49, 0x0f, 0x29, 0x3b, 0x18, 0xc4,
		0x6e, 0xe0, 0x47, 0xfa, 0xb5, 0x0e, 0x9d, 0xdd, 0x1e, 0x3a, 0x88, 0xea, 0xec, 0x44, 0x75, 0x74,
		0xa6, 0xda, 0x3a, 0x55, 0x5d, 0x9d, 0xab, 0xf6, 0x4e, 0x56, 0x7b, 0x67, 0xab, 0xb3, 0xd3, 0xd5,
		0xc3, 0xf9, 0x6a, 0xe2, 0x84, 0xb3, 0x07, 0xa5, 0x6f, 0x07, 0x51, 0x3d, 0xbb, 0x73, 0xe8, 0xd8,
		0x8d, 0x43, 0xcf, 0xee, 0x1b, 0x7a, 0x77, 0xdb, 0x18, 0x77, 0xd7, 0xf8, 0x78, 0xd1, 0xbe, 0xfc,
		0xc7, 0xa5, 0x8e, 0xb5, 0x60, 0x49, 0x07, 0x8d, 0xd9, 0xd2, 0x61, 0x54, 0x1d, 0xfe, 0xd4, 0xd8,
		0x74, 0x6d, 0x20, 0x60, 0xbd, 0x2c, 0x00, 0x2f, 0x6b, 0x68, 0x6e, 0xe9, 0x8b, 0x70, 0x54, 0x28,
		0xa1, 0xe4, 0x03, 0xac, 0xe1, 0xd7, 0xf4, 0x4e, 0xaf, 0xd2, 0x87, 0x6c, 0x5f, 0x8f, 0xfd, 0x20,
		0xb6, 0x83, 0x8e, 0xdd, 0x09, 0xee, 0x07, 0xa1, 0x88, 0x22, 0xd1, 0xb5, 0x3d, 0xe1, 0xf4, 0x46,
		0x9b, 0x7c, 0x42, 0xcd, 0x8e, 0x2e, 0x26, 0x84, 0x21, 0xd9, 0x08, 0xb5, 0x20, 0xd4, 0x82, 0x50,
		0x0b, 0x42, 0x2d, 0x08, 0xb5, 0x20, 0xd4, 0xa2, 0x01, 0x5a, 0x61, 0x48, 0xf6, 0x6a, 0x8f, 0x10,
		0xa3, 0x5a, 0x5e, 0x6d, 0x58, 0x18, 0x92, 0xbd, 0x2e, 0xbb, 0xc1, 0x90, 0x6c, 0x0c, 0xc9, 0xce,
		0x99, 0x0b, 0x34, 0x03, 0xb1, 0x30, 0x24, 0x3b, 0xb7, 0x88, 0x85, 0x21, 0xd9, 0xaa, 0x5c, 0x05,
		0x86, 0x64, 0x6f, 0xa1, 0xf2, 0xd2, 0xe7, 0xbe, 0x20, 0x70, 0xfe, 0xf3, 0x7d, 0x21, 0x70, 0x6e,
		0x82, 0x09, 0x61, 0xca, 0xf9, 0x2a, 0x24, 0x09, 0x81, 0xf3, 0x65, 0x44, 0x0d, 0x81, 0xf3, 0xd7,
		0x6f, 0x0c, 0x81, 0xf3, 0x35, 0x37, 0x88, 0xc0, 0xb9, 0xe9, 0xf4, 0x0d, 0x81, 0xf3, 0x5f, 0xfa,
		0x3d, 0x4c, 0x39, 0x5f, 0xf1, 0x21, 0x22, 0x74, 0xfe, 0x4a, 0xd3, 0xc2, 0x94, 0xf3, 0x5c, 0x59,
		0x9a, 0xbe, 0x16, 0x37, 0x67, 0x79, 0x98, 0x72, 0x2e, 0x61, 0x8b, 0x98, 0x72, 0x2e, 0xe9, 0x46,
		0x62, 0xca, 0x39, 0xe5, 0x86, 0x31, 0x74, 0x79, 0xcb, 0xc8, 0xf4, 0xcf, 0xdf, 0x35, 0x4c, 0x39,
		0xc7, 0x0b, 0x97, 0x9b, 0x17, 0x0e, 0x53, 0xe0, 0xd6, 0xfa, 0xc2, 0x94, 0xf3, 0x7c, 0xd1, 0x79,
		0x4c, 0x39, 0x97, 0xb6, 0x47, 0x4c, 0x39, 0x97, 0xbf, 0x5b, 0x4c, 0x39, 0xe7, 0xdd, 0x34, 0xa6,
		0x9c, 0x33, 0xef, 0x1a, 0x53, 0xce, 0xa1, 0xb1, 0x32, 0x64, 0xc6, 0x94, 0x73, 0x96, 0xdd, 0x63,
		0xca, 0x39, 0xef, 0xc6, 0x31, 0xe5, 0x9c, 0x61, 0xbb, 0x98, 0x72, 0x9e, 0xe3, 0x9d, 0x61, 0xca,
		0xb9, 0x51, 0xae, 0x1d, 0x53, 0xce, 0x37, 0x16, 0xfa, 0x28, 0x61, 0x58, 0x63, 0x83, 0x18, 0xcf,
		0x8c, 0x29, 0xe7, 0x19, 0x40, 0x63, 0xca, 0xf9, 0x9a, 0xbb, 0xc4, 0x94, 0x73, 0x4c, 0x39, 0xd7,
		0x96, 0xe8, 0xa0, 0x72, 0x47, 0x47, 0xe2, 0x87, 0xca, 0x1d, 0x73, 0x0d, 0x1a, 0x63, 0xea, 0x31,
		0xa6, 0x7e, 0xb5, 0x49, 0x9d, 0xd3, 0xe3, 0x78, 0xa7, 0x46, 0xd2, 0xa7, 0xf3, 0x4b, 0xb6, 0x75,
		0x26, 0xbd, 0xc2, 0x69, 0x53, 0x9a, 0x74, 0x8c, 0xd3, 0xab, 0x53, 0x9c, 0x26, 0x85, 0x6e, 0x98,
		0x64, 0xf3, 0x33, 0x4b, 0xc1, 0x24, 0x9b, 0x65, 0xc6, 0x8b, 0x49, 0x36, 0xab, 0x7a, 0x72, 0x4c,
		0xb2, 0xd1, 0x8b, 0x5a, 0x69, 0x53, 0x98, 0xf6, 0x3c, 0x33, 0x46, 0x38, 0xbd, 0x50, 0xf4, 0x74,
		0xc0, 0x9b, 0x49, 0x9c, 0x57, 0x83, 0xf3, 0x62, 0xeb, 0x32, 0x65, 0x9b, 0x7b, 0x7b, 0x29, 0x87,
		0x4b, 0x59, 0x1d, 0xa8, 0x9c, 0x02, 0xfe, 0x1f, 0x3b, 0xb1, 0xd0, 0x87, 0xc9, 0x8d, 0xb7, 0x83,
		0x91, 0x84, 0x33, 0x44, 0xae, 0x02, 0x22, 0x07, 0x22, 0x07, 0x22, 0x07, 0x22, 0xb7, 0x25, 0x44,
		0x0e, 0x23, 0x09, 0x5f, 0x49, 0x2f, 0x31, 0x92, 0xd0, 0x98, 0x68, 0x88, 0x8e, 0xce, 0x54, 0x5b,
		0xa7, 0xaa, 0xab, 0x73, 0xd5, 0xde, 0xc9, 0x6a, 0xef, 0x6c, 0x75, 0x76, 0xba, 0x7a, 0x38, 0x5f,
		0x4d, 0x9c, 0xb0, 0x7e, 0x51, 0x95, 0x39, 0xb4, 0xc2, 0x48, 0xc2, 0x57, 0xef, 0x09, 0x23, 0x09,
		0x57, 0xdf, 0x1d, 0x46, 0x12, 0xe6, 0x01, 0xbf, 0xa6, 0x8c, 0x0d, 0x23, 0x09, 0x37, 0x01, 0x5d,
		0x8c, 0x24, 0x34, 0x82, 0x35, 0xa0, 0x31, 0x2f, 0x26, 0xda, 0x41, 0xa9, 0x43, 0xa9, 0x43, 0xa9,
		0x43, 0xa9, 0x43, 0xa9, 0x43, 0xa9, 0x6b, 0x81, 0x56, 0x98, 0x68, 0xb7, 0xda, 0x23, 0x44, 0x5b,
		0xde, 0x57, 0x1b, 0x16, 0x26, 0xda, 0xad, 0xcb, 0x6e, 0x30, 0xd1, 0x0e, 0x13, 0xed, 0x72, 0x1a,
		0xec, 0xc1, 0x44, 0x3b, 0x20, 0x96, 0x12, 0xc4, 0xc2, 0x44, 0x3b, 0x55, 0xae, 0x02, 0x13, 0xed,
		0xb6, 0x50, 0x79, 0xe9, 0x73, 0x5f, 0x10, 0x77, 0xc5, 0x40, 0xb4, 0x15, 0x7d, 0x2c, 0xe2, 0xae,
		0xcb, 0xfc, 0x3c, 0xe2, 0xae, 0xaf, 0xdf, 0x18, 0xe2, 0xae, 0x6b, 0x6e, 0x10, 0x71, 0x57, 0xd3,
		0xbd, 0x3f, 0xe2, 0xae, 0xbf, 0xf4, 0x7b, 0x18, 0x88, 0xb6, 0xe2, 0x43, 0x44, 0xe4, 0xf5, 0x95,
		0xa6, 0x85, 0x81, 0x68, 0xb9, 0xb2, 0x34, 0x7d, 0x2d, 0x6e, 0xce, 0xf2, 0x30, 0x10, 0x4d, 0xc2,
		0x16, 0x31, 0x10, 0x4d, 0xd2, 0x8d, 0xc4, 0x40, 0x34, 0xca, 0x0d, 0x63, 0x3e, 0xd3, 0x96, 0x91,
		0xe9, 0x9f, 0xbf, 0x6b, 0x18, 0x88, 0x86, 0x17, 0x2e, 0x37, 0x2f, 0x1c, 0x1a, 0xc6, 0xaf, 0xf5,
		0x85, 0x81, 0x68, 0xf9, 0xa2, 0xf3, 0x18, 0x88, 0x26, 0x6d, 0x8f, 0x18, 0x88, 0x26, 0x7f, 0xb7,
		0x18, 0x88, 0xc6, 0xbb, 0x69, 0x0c, 0x44, 0x63, 0xde, 0x35, 0x06, 0xa2, 0x41, 0x63, 0x65, 0xc8,
		0x8c, 0x81, 0x68, 0x2c, 0xbb, 0xc7, 0x40, 0x34, 0xde, 0x8d, 0x63, 0x20, 0x1a, 0xc3, 0x76, 0x31,
		0x10, 0x2d, 0xc7, 0x3b, 0xc3, 0x40, 0x34, 0xa3, 0x5c, 0x3b, 0x06, 0xa2, 0x6d, 0x2c, 0xf4, 0x91,
		0x01, 0xbf, 0xc6, 0x06, 0x31, 0xc9, 0x09, 0x03, 0xd1, 0x32, 0x80, 0xc6, 0x40, 0xb4, 0x35, 0x77,
		0x89, 0x81, 0x68, 0x18, 0x88, 0xa6, 0x2d, 0xd1, 0x41, 0xe1, 0x87, 0x66, 0xf7, 0x03, 0xf3, 0xb4,
		0x30, 0x4f, 0x4b, 0xca, 0x3c, 0xad, 0x71, 0xef, 0xfd, 0x6d, 0x9d, 0xc1, 0xf0, 0x66, 0x8b, 0xde,
		0x1e, 0xeb, 0x0f, 0xf1, 0xa8, 0xbc, 0x32, 0xc3, 0x3a, 0x73, 0xa3, 0xf8, 0x38, 0x8e, 0xd5, 0xf6,
		0xfa, 0xb6, 0xce, 0x5d, 0xff, 0xd4, 0x13, 0xa3, 0xf7, 0x43, 0x71, 0xba, 0x8b, 0x75, 0xee, 0x3c,
		0x4c, 0xed, 0xa4, 0x7c, 0x50, 0xad, 0xd6, 0x1b, 0xd5, 0x6a, 0xa9, 0xb1, 0xdf, 0x28, 0x1d, 0xd6,
		0x6a, 0xe5, 0x7a, 0x59, 0x61, 0x12, 0x91, 0x75, 0x11, 0x76, 0x45, 0x28, 0xba, 0xef, 0x46, 0x76,
		0xe3, 0x0f, 0x3d, 0x4f, 0x87, 0xad, 0x7c, 0x8a, 0x44, 0xa8, 0x34, 0xdf, 0x47, 0xd5, 0xeb, 0xab,
		0x89, 0xd3, 0x33, 0xd8, 0xd9, 0x59, 0x4a, 0x47, 0xee, 0x84, 0xc3, 0x4e, 0xec, 0xa7, 0xf1, 0xb0,
		0x8f, 0xe3, 0xdb, 0xd0, 0x4c, 0xef, 0x42, 0xfb, 0x32, 0xfd, 0xec, 0xed, 0x66, 0xe4, 0x46, 0xed,
		0xe6, 0xe4, 0x03, 0xb7, 0xcf, 0x46, 0x9f, 0xb4, 0x7d, 0xdc, 0x6b, 0x5f, 0x8f, 0x3f, 0xe0, 0xd5,
		0xf8, 0xf3, 0xb5, 0xc7, 0xd5, 0x92, 0xd7, 0x6e, 0x57, 0x8d, 0xe7, 0xe6, 0xf7, 0x9b, 0xbc, 0x2b,
		0x32, 0xbf, 0xe2, 0xaa, 0x5f, 0x6d, 0xd3, 0x5e, 0x69, 0x5e, 0xa3, 0xe7, 0x33, 0x3d, 0x9e, 0x95,
		0x98, 0x8c, 0x5b, 0x95, 0x51, 0x9b, 0x60, 0xcc, 0x8c, 0x8e, 0x48, 0xae, 0xe3, 0xe1, 0x79, 0xf3,
		0xe8, 0xdf, 0x03, 0x86, 0x77, 0x80, 0x79, 0xc8, 0x9e, 0x92, 0x61, 0x7a, 0xcc, 0x43, 0xf3, 0xd8,
		0x87, 0xe3, 0xa9, 0xe8, 0x4a, 0x31, 0xdd, 0x75, 0x62, 0x84, 0x34, 0x9c, 0x58, 0xa1, 0xa8, 0xaf,
		0x84, 0xf2, 0xbe, 0x11, 0xca, 0xfb, 0x42, 0xbc, 0xec, 0xfb, 0x90, 0x3c, 0x78, 0xf0, 0x8e, 0xb5,
		0x6e, 0x25, 0xf7, 0x20, 0x39, 0x6b, 0xe4, 0xe8, 0x53, 0xff, 0xca, 0xfc, 0xde, 0x4c, 0xa0, 0x22,
		0xdb, 0x01, 0xb3, 0xd5, 0xaa, 0x69, 0x6a, 0xa4, 0xac, 0x79, 0x91, 0xca, 0x26, 0x45, 0x0a, 0xdd,
		0x82, 0x6a, 0xf7, 0xa0, 0x8d, 0x9b, 0xd0, 0xc6, 0x5d, 0xe8, 0xe1, 0x36, 0xb6, 0x23, 0x36, 0xa3,
		0xac, 0xd1, 0xcf, 0x73, 0xf2, 0x5c, 0x57, 0xf8, 0xb1, 0x1b, 0x3f, 0xaa, 0x19, 0x2a, 0x9f, 0x71,
		0x7c, 0x05, 0x07, 0x11, 0x56, 0x33, 0xfd, 0xe8, 0xef, 0x9c, 0x48, 0x21, 0xee, 0x4c, 0x1e, 0xc4,
		0xf1, 0x87, 0x66, 0xfb, 0xe6, 0xcf, 0xcb, 0x53, 0x55, 0xb0, 0x93, 0x54, 0x97, 0x47, 0x4a, 0x53,
		0x98, 0x34, 0x99, 0x18, 0xdf, 0xbc, 0xfc, 0x5c, 0xb5, 0xb6, 0x71, 0x74, 0xbf, 0x3e, 0xf7, 0xbf,
		0x6e, 0x6d, 0xd9, 0xb1, 0x7d, 0x2b, 0xef, 0x8e, 0xf5, 0x4d, 0x0e, 0xdf, 0x1f, 0x4b, 0xf8, 0xce,
		0xad, 0x27, 0xba, 0xea, 0xb4, 0xd9, 0x64, 0x03, 0x90, 0x66, 0x90, 0x66, 0x90, 0x66, 0x90, 0x66,
		0x90, 0x66, 0x39, 0x92, 0x66, 0xb7, 0x41, 0xe0, 0x09, 0xc7, 0x57, 0x29, 0xcb, 0xca, 0x20, 0x09,
		0x1b, 0xdf, 0xcb, 0x7b, 0x11, 0x87, 0x6e, 0x47, 0x1d, 0x47, 0x48, 0xd7, 0x67, 0x7e, 0x7d, 0x4e,
		0x44, 0xcf, 0x19, 0x7a, 0xb1, 0x12, 0x3d, 0x69, 0x95, 0x4b, 0xbc, 0x68, 0xd8, 0x02, 0xff, 0x02,
		0xff, 0x02, 0xff, 0x02, 0xff, 0x02, 0xff, 0xca, 0x11, 0xff, 0x52, 0xd6, 0x16, 0x5a, 0x61, 0xbb,
		0x67, 0xc5, 0x6d, 0x9c, 0xd5, 0x56, 0x6d, 0x28, 0xaf, 0xf7, 0xca, 0x5a, 0xbc, 0x2a, 0xee, 0x82,
		0xa3, 0x5d, 0xd3, 0x56, 0x7d, 0x9a, 0xb1, 0x3e, 0xa9, 0x2d, 0xe7, 0xd1, 0xc7, 0x44, 0xab, 0x95,
		0xc3, 0xea, 0x61, 0xbd, 0x51, 0x39, 0xac, 0xc1, 0x56, 0x75, 0xb5, 0xd5, 0x2d, 0xa9, 0xdf, 0x68,
		0x21, 0x4a, 0xb1, 0xb1, 0xd1, 0x46, 0xea, 0x13, 0xcd, 0x22, 0x64, 0x9a, 0x41, 0x4e, 0x43, 0x4e,
		0x43, 0x4e, 0x43, 0x4e, 0xe7, 0x51, 0x4e, 0x23, 0xd3, 0x4c, 0x93, 0x4c, 0xb3, 0x6b, 0xa4, 0x9a,
		0xe9, 0x92, 0xea, 0x74, 0xfe, 0xe9, 0xec, 0xa6, 0xf9, 0xfe, 0xf8, 0xfa, 0x06, 0xf9, 0x66, 0xea,
		0x1e, 0xc2, 0xa7, 0x8f, 0xaa, 0x1f, 0x01, 0x52, 0xce, 0xcc, 0xd6, 0x69, 0x28, 0xad, 0x96, 0xa1,
		0x40, 0x75, 0x2c, 0xad, 0xe6, 0x6b, 0x60, 0xc5, 0x50, 0x97, 0xfc, 0xc6, 0x60, 0xf3, 0x9c, 0x34,
		0x98, 0x9a, 0xc4, 0x08, 0x0a, 0x5c, 0xd1, 0x02, 0xde, 0xa6, 0x52, 0xfc, 0xcd, 0xa3, 0xb4, 0x68,
		0x12, 0xa5, 0xa0, 0x19, 0x94, 0x82, 0xa6, 0x4f, 0xd4, 0xaf, 0x08, 0x33, 0x72, 0xeb, 0x88, 0xd8,
		0x16, 0x4b, 0xef, 0x85, 0x4d, 0x9a, 0x5e, 0xd0, 0x7a, 0x13, 0x3a, 0x8c, 0xa7, 0xb9, 0x32, 0xd1,
		0x2b, 0xc1, 0xf5, 0x2a, 0x68, 0xf7, 0x0a, 0xd0, 0x58, 0x97, 0xfc, 0x67, 0x4f, 0xf0, 0xdc, 0xad,
		0xce, 0x24, 0x9e, 0x4e, 0xf3, 0xbc, 0x33, 0xbd, 0x98, 0xae, 0x43, 0x64, 0xb9, 0xb4, 0x5d, 0x4f,
		0xc8, 0x0f, 0x1d, 0x38, 0x0e, 0x17, 0x18, 0x0f, 0x11, 0xb8, 0x0e, 0x0b, 0xd8, 0x0f, 0x05, 0xd8,
		0x83, 0xff, 0xbc, 0x41, 0x7e, 0xb3, 0xbc, 0x15, 0x75, 0x57, 0x11, 0xb6, 0x42, 0x35, 0xe6, 0xc2,
		0x34, 0xd6, 0x2c, 0x73, 0x2b, 0x11, 0x08, 0xb4, 0xf4, 0xad, 0x45, 0x2d, 0xa2, 0x59, 0x4e, 0xba,
		0xd9, 0x4e, 0xb6, 0x39, 0x4f, 0xb2, 0x15, 0x9c, 0x5c, 0x73, 0x9f, 0x54, 0x2b, 0x3b, 0x99, 0x56,
		0x76, 0x12, 0xad, 0xe6, 0xe4, 0xd9, 0xec, 0x40, 0x1c, 0xdb, 0x49, 0xb2, 0x82, 0x42, 0x38, 0xa6,
		0xc2, 0xb7, 0xbc, 0x05, 0x82, 0x1e, 0xfb, 0x41, 0x6c, 0x07, 0x1d, 0xbb, 0x13, 0xdc, 0x0f, 0x42,
		0x11, 0x45, 0xa2, 0x6b, 0x7b, 0xc2, 0xe9, 0x8d, 0x16, 0x7f, 0x32, 0x35, 0xdc, 0x41, 0xa8, 0x29,
		0x12, 0xc9, 0x6e, 0xfb, 0xc3, 0xfb, 0x5b, 0x11, 0xf2, 0x51, 0xb2, 0x99, 0x55, 0xc1, 0x33, 0xc0,
		0x33, 0xc0, 0x33, 0xc0, 0x33, 0xc0, 0x33, 0xd4, 0x20, 0xe4, 0x34, 0x4a, 0x72, 0x9c, 0xaf, 0xf1,
		0x96, 0x75, 0x31, 0x66, 0x0d, 0xa8, 0x28, 0xdb, 0xca, 0x6a, 0x60, 0xca, 0xcc, 0x49, 0x9c, 0xaa,
		0x4b, 0x5d, 0xd4, 0x95, 0xb6, 0x70, 0x96, 0x42, 0xa8, 0x28, 0xb3, 0xca, 0x4c, 0xaa, 0x02, 0x93,
		0xe2, 0x32, 0xa9, 0x9c, 0xa4, 0xf5, 0xb4, 0x20, 0x55, 0x21, 0x55, 0xa9, 0x6e, 0xd7, 0xc0, 0x89,
		0xa2, 0xf1, 0xcb, 0xc9, 0xa4, 0x52, 0x27, 0x0b, 0xe2, 0xe0, 0x60, 0x35, 0x10, 0x80, 0xa0, 0x87,
		0xa0, 0x87, 0xa0, 0x87, 0xa0, 0x87, 0xa0, 0xc7, 0xc1, 0x01, 0xd8, 0x58, 0x5e, 0xd9, 0x58, 0xe8,
		0x06, 0xa1, 0x1b, 0x3f, 0x32, 0xd2, 0xb1, 0xc9, 0x8a, 0xe0, 0x17, 0xe0, 0x17, 0xe0, 0x17, 0xe0,
		0x17, 0xe0, 0x17, 0x2f, 0x3a, 0xc4, 0x1d, 0xe0, 0xa4, 0x60, 0x83, 0xaf, 0x6d, 0x39, 0x29, 0x28,
		0x21, 0xac, 0xcb, 0xf4, 0xb5, 0x35, 0x27, 0x05, 0xe5, 0x4a, 0x03, 0x46, 0xc5, 0x65, 0x54, 0x38,
		0x2b, 0x80, 0x3a, 0xcd, 0x85, 0x3a, 0x45, 0x15, 0xdf, 0x82, 0x75, 0x74, 0xa9, 0xe2, 0x4b, 0x2b,
		0xcb, 0xb6, 0xb8, 0x86, 0xef, 0x4e, 0x78, 0x5e, 0x60, 0x3b, 0xc3, 0xf8, 0x4e, 0xf8, 0xb1, 0xdb,
		0xa1, 0x7d, 0xf6, 0x19, 0x8f, 0x5f, 0xb8, 0x2a, 0xea, 0xfb, 0x54, 0x45, 0x36, 0x50, 0xdf, 0x67,
		0x60, 0xe4, 0x02, 0xf5, 0x7d, 0xcb, 0x6f, 0x0d, 0x79, 0x7d, 0x1f, 0x71, 0xe9, 0xf3, 0xdc, 0x8b,
		0x49, 0x5a, 0x02, 0xcd, 0x04, 0x95, 0x6c, 0x90, 0xc9, 0x09, 0x9d, 0x0a, 0x20, 0x94, 0x1b, 0x4a,
		0x95, 0x41, 0xaa, 0x32, 0x68, 0x55, 0x03, 0xb1, 0x3c, 0xaa, 0x94, 0x5a, 0x33, 0x52, 0x43, 0x6f,
		0xb6, 0xd0, 0x88, 0x3d, 0xda, 0xf7, 0x41, 0x97, 0xf1, 0x05, 0x98, 0xbc, 0xe3, 0xcf, 0x4b, 0x33,
		0xd9, 0x21, 0x6f, 0xc3, 0x6c, 0xf6, 0x46, 0xd9, 0x2a, 0x1a, 0x64, 0x2b, 0x6c, 0x8c, 0xad, 0xaa,
		0x21, 0xb6, 0xf2, 0x46, 0xd8, 0xca, 0x1b, 0x60, 0xab, 0x6d, 0x7c, 0x9d, 0xaf, 0xb6, 0x95, 0xec,
		0x0d, 0xae, 0x15, 0x37, 0xb6, 0x56, 0xd1, 0xd0, 0x5a, 0x6d, 0x23, 0xeb, 0xec, 0x86, 0x1f, 0x7f,
		0xba, 0xf9, 0x47, 0xfb, 0xfc, 0xe2, 0x84, 0xbb, 0x81, 0xb5, 0xca, 0xc6, 0xd5, 0x8a, 0x7b, 0x86,
		0x9f, 0x9f, 0xd4, 0x14, 0x74, 0xe4, 0x7f, 0xbb, 0x6d, 0xb7, 0xf9, 0xe6, 0xf4, 0x9f, 0x37, 0x79,
		0x9f, 0x7c, 0xd0, 0x82, 0x83, 0x5b, 0x8f, 0x2b, 0x28, 0xea, 0xcb, 0xac, 0xec, 0x14, 0x8c, 0xef,
		0x31, 0x32, 0x3c, 0xc2, 0xb1, 0x48, 0x1b, 0x38, 0x51, 0x94, 0x52, 0x5e, 0x15, 0x1a, 0x31, 0x5b,
		0x1e, 0x3a, 0x11, 0x3a, 0x11, 0x3a, 0x11, 0x3a, 0x11, 0x3a, 0x91, 0xf1, 0x8d, 0x0d, 0x83, 0x61,
		0xec, 0xfa, 0x7d, 0x6e, 0x14, 0x9e, 0x11, 0x8b, 0x07, 0xa0, 0x44, 0xa0, 0x44, 0x5a, 0x51, 0xa2,
		0x98, 0xf3, 0x7d, 0x9c, 0xa5, 0x43, 0xc9, 0xd2, 0xa0, 0x42, 0xa0, 0x42, 0xa0, 0x42, 0xa0, 0x42,
		0xa0, 0x42, 0x8c, 0x6f, 0x2c, 0x42, 0xe6, 0xcc, 0x37, 0x3c, 0x09, 0x99, 0x2b, 0x98, 0xf9, 0xb8,
		0xc5, 0x21, 0xf3, 0x3f, 0x4e, 0xff, 0x7c, 0xff, 0x8f, 0xe3, 0xe6, 0x47, 0xc4, 0xcd, 0xe9, 0xef,
		0xf5, 0x75, 0xf3, 0xfc, 0xf2, 0xec, 0xb4, 0xfd, 0xc7, 0xe9, 0x9f, 0x88, 0x9e, 0xc3, 0xd7, 0x41,
		0x2a, 0xe6, 0x4e, 0x2a, 0x72, 0x0d, 0xb0, 0x98, 0x43, 0x16, 0x9e, 0x41, 0x16, 0xd9, 0xb2, 0x9c,
		0x7d, 0xa9, 0xb2, 0x45, 0x19, 0xfa, 0x53, 0x65, 0xf0, 0x05, 0xb9, 0x0d, 0xb9, 0x0d, 0xb9, 0x0d,
		0xb9, 0x0d, 0xb9, 0xcd, 0xf8, 0xc6, 0xf2, 0xf5, 0xc1, 0x9a, 0x93, 0xda, 0x65, 0xb0, 0x48, 0xb0,
		0x48, 0x5d, 0x58, 0xe4, 0x5f, 0xe2, 0xb1, 0x73, 0xe7, 0x30, 0xf6, 0x01, 0xc9, 0xde, 0xc0, 0x6c,
		0x65, 0xf0, 0x1f, 0xf0, 0x1f, 0xf0, 0x1f, 0xf0, 0x1f, 0xf0, 0x1f, 0x05, 0xe8, 0x6b, 0x2b, 0x3a,
		0x6f, 0x60, 0x6c, 0xd4, 0x63, 0x5d, 0x66, 0x5d, 0x2c, 0x3a, 0xf6, 0xe4, 0x73, 0x1f, 0x4d, 0xbe,
		0x89, 0x16, 0xfe, 0x74, 0xe6, 0x87, 0xe3, 0xd2, 0xde, 0x99, 0x1f, 0x25, 0xa3, 0xce, 0xc1, 0xe3,
		0xc0, 0xe3, 0xd4, 0xaf, 0x90, 0xb7, 0x16, 0x43, 0xba, 0x74, 0x9e, 0x59, 0xd4, 0x01, 0x85, 0xb4,
		0x1d, 0x0d, 0xbd, 0xb9, 0x50, 0x36, 0xe2, 0x8d, 0x62, 0x27, 0x66, 0x1c, 0x8a, 0x30, 0x5e, 0x2e,
		0x67, 0xdd, 0x16, 0x2a, 0xe8, 0xb6, 0x60, 0x90, 0x24, 0x40, 0xb7, 0x05, 0x74, 0x5b, 0xf8, 0xf5,
		0x2d, 0x43, 0xb7, 0x05, 0xc4, 0x72, 0x10, 0xcb, 0x41, 0x2c, 0x07, 0xb1, 0x1c, 0xc4, 0x72, 0x88,
		0xde, 0x58, 0xa4, 0x8e, 0x32, 0xdf, 0x70, 0x74, 0x5b, 0x60, 0xbf, 0xe5, 0xe8, 0xb6, 0xc0, 0x72,
		0x9b, 0xd1, 0x6d, 0xc1, 0x40, 0x07, 0x87, 0x66, 0x00, 0x92, 0x24, 0x0c, 0x9a, 0x01, 0x40, 0xc6,
		0x40, 0xc6, 0x40, 0xc6, 0x40, 0xc6, 0xa0, 0x19, 0x00, 0x3c, 0xf6, 0xab, 0x3c, 0x36, 0x6a, 0xd5,
		0xe1, 0xa9, 0xe1, 0xa9, 0xe1, 0xa9, 0xe1, 0xa9, 0xb7, 0xc8, 0x53, 0x23, 0xe0, 0xc8, 0x7c, 0xc3,
		0x51, 0xab, 0xce, 0x7e, 0xcb, 0x51, 0xab, 0xce, 0x77, 0xaf, 0x51, 0xab, 0x6e, 0xac, 0xaf, 0x43,
		0x29, 0xf5, 0x26, 0x86, 0x8f, 0x52, 0x6a, 0xb9, 0x6f, 0x17, 0xd4, 0x20, 0xd4, 0x20, 0xd4, 0x20,
		0xd4, 0x20, 0xd4, 0x20, 0xe3, 0x1b, 0x9b, 0xff, 0x52, 0x6a, 0x54, 0xfa, 0x6e, 0x64, 0x20, 0xa8,
		0xf4, 0x85, 0x7b, 0x86, 0x7b, 0x86, 0x7b, 0x86, 0x7b, 0x46, 0xa5, 0x2f, 0x31, 0x32, 0x1a, 0x5d,
		0xe9, 0x8b, 0x4a, 0x9a, 0x9f, 0xa3, 0x11, 0x0a, 0x51, 0x9f, 0x0b, 0x51, 0xc7, 0xf5, 0x8f, 0xa6,
		0xd6, 0xa1, 0x1a, 0x35, 0xaa, 0x9c, 0xc9, 0xee, 0xb4, 0xb6, 0x37, 0x8b, 0xb4, 0x72, 0x38, 0x1c,
		0x76, 0x62, 0x3f, 0x75, 0x57, 0x1f, 0xc7, 0x1f, 0xa4, 0x99, 0x7e, 0x8e, 0xf6, 0x65, 0xba, 0xfb,
		0x76, 0x33, 0x72, 0xa3, 0x76, 0x73, 0xb2, 0xe5, 0xf6, 0xd9, 0x68, 0xaf, 0xed, 0x7f, 0x8c, 0xf6,
		0x7a, 0x3c, 0xbb, 0xd5, 0x37, 0x66, 0x98, 0x2c, 0x81, 0xb9, 0x5a, 0xc9, 0x03, 0xb4, 0xfd, 0xe1,
		0xfd, 0xad, 0xa0, 0xab, 0x3a, 0xcc, 0x98, 0xc5, 0xcc, 0x6a, 0x44, 0x2f, 0x1f, 0xad, 0x96, 0x23,
		0xd7, 0x6e, 0x1c, 0x5a, 0x8d, 0x51, 0x9b, 0x71, 0x69, 0x31, 0x76, 0xed, 0xc5, 0xae, 0xb5, 0x78,
		0xb5, 0x95, 0x59, 0x0e, 0x97, 0x5c, 0x2b, 0x4d, 0x21, 0x98, 0xd3, 0xa3, 0x95, 0x45, 0x1c, 0x32,
		0x28, 0x93, 0x3d, 0x7b, 0x7b, 0x69, 0x83, 0x92, 0xe2, 0x0c, 0x34, 0x6f, 0xb1, 0x43, 0x1c, 0x38,
		0x9d, 0xbf, 0x44, 0x6c, 0x77, 0x82, 0xe1, 0x88, 0x38, 0x44, 0xf4, 0x3e, 0xf1, 0xe5, 0x82, 0xb4,
		0x6e, 0xb1, 0x0c, 0xb7, 0x08, 0xb7, 0x08, 0xb7, 0xb8, 0x1d, 0x6e, 0x91, 0xba, 0x93, 0x88, 0xd5,
		0x89, 0xfc, 0x01, 0x5f, 0x07, 0xa7, 0x64, 0xb5, 0x9c, 0x35, 0x70, 0x2a, 0xa1, 0x81, 0x93, 0x01,
		0x30, 0xaa, 0x0c, 0x4e, 0x95, 0xc1, 0xaa, 0x1a, 0x78, 0xa5, 0x85, 0x59, 0x62, 0xb8, 0x65, 0x83,
		0xdd, 0xa9, 0x38, 0x18, 0x47, 0x07, 0xbd, 0xb9, 0xf7, 0x9b, 0xa3, 0x93, 0x1e, 0x33, 0x20, 0xcf,
		0x03, 0x73, 0x05, 0x47, 0xf3, 0x39, 0x00, 0x6c, 0xe5, 0xc0, 0xad, 0x1c, 0xc0, 0xd5, 0x02, 0x39,
		0x0f, 0xa0, 0x33, 0x01, 0x3b, 0x3b, 0xc0, 0x67, 0x0b, 0x76, 0xc3, 0x60, 0x30, 0x60, 0x4c, 0x37,
		0x9f, 0x43, 0x8a, 0xc9, 0x06, 0x98, 0x6d, 0x96, 0x37, 0x2f, 0x8b, 0x9d, 0x9d, 0xeb, 0xe0, 0x0c,
		0x34, 0x70, 0x0a, 0xaa, 0x9d, 0x83, 0x36, 0x4e, 0x42, 0x1b, 0x67, 0xa1, 0x87, 0xd3, 0xe0, 0x75,
		0x1e, 0xcc, 0x4e, 0x24, 0xbb, 0xc5, 0xec, 0x79, 0x5e, 0xf3, 0x71, 0x95, 0x71, 0xe8, 0x79, 0xbf,
		0xa2, 0xe2, 0x9d, 0x4f, 0x21, 0xbe, 0xa1, 0x60, 0xe9, 0x2b, 0xc7, 0xef, 0x0b, 0x25, 0x95, 0xaa,
		0x05, 0x65, 0x15, 0x94, 0xc9, 0x07, 0x3f, 0x77, 0x7d, 0x65, 0x20, 0x9b, 0x6d, 0x22, 0x29, 0x14,
		0xe6, 0xf7, 0xb1, 0x73, 0xfb, 0xf8, 0x10, 0x3a, 0x9d, 0xd8, 0x0d, 0xfc, 0x13, 0xb7, 0xef, 0xc6,
		0x91, 0x06, 0x1b, 0xfa, 0x28, 0xfa, 0x4e, 0xec, 0x7e, 0x1b, 0xdd, 0x9b, 0xa4, 0x12, 0x4e, 0xd9,
		0x6e, 0x9e, 0xde, 0x2a, 0x34, 0x51, 0xe7, 0x41, 0x1f, 0x13, 0xad, 0x56, 0x0e, 0xab, 0x87, 0xf5,
		0x46, 0xe5, 0xb0, 0x06, 0x5b, 0xd5, 0xd5, 0x56, 0xdf, 0x6c, 0xc7, 0xaa, 0xad, 0x37, 0xf9, 0xfc,
		0x7c, 0x8c, 0x58, 0x63, 0x0d, 0xc2, 0xa0, 0x93, 0xcc, 0x0d, 0x52, 0xa7, 0xa7, 0x9f, 0xb7, 0x00,
		0x45, 0x0d, 0x45, 0x0d, 0x45, 0x0d, 0x45, 0x0d, 0x45, 0x0d, 0x45, 0x0d, 0x45, 0x0d, 0x45, 0x0d,
		0x45, 0x0d, 0x45, 0x0d, 0x45, 0x0d, 0x5b, 0x85, 0xa2, 0x86, 0xa2, 0x36, 0x46, 0x51, 0x87, 0xa2,
		0x23, 0xdc, 0x6f, 0x2a, 0x05, 0x75, 0xb6, 0x03, 0xe8, 0x69, 0xe8, 0x69, 0xe8, 0x69, 0xe8, 0x69,
		0xe8, 0x69, 0xe8, 0x69, 0xe8, 0x69, 0xe8, 0x69, 0xe8, 0x69, 0xe8, 0x69, 0xe8, 0x69, 0xd8, 0x2a,
		0xf4, 0x34, 0xf4, 0xb4, 0x41, 0x7a, 0x3a, 0x0e, 0x1d, 0x3f, 0xba, 0x77, 0x63, 0x95, 0x8a, 0x3a,
		0xdb, 0x03, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35,
		0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x6c, 0x15, 0x9a, 0x1a, 0x9a, 0xda, 0x18, 0x4d,
		0x1d, 0x8d, 0x09, 0xad, 0x22, 0x35, 0x9d, 0xac, 0x0e, 0x1d, 0x0d, 0x1d, 0x0d, 0x1d, 0x0d, 0x1d,
		0x0d, 0x1d, 0x0d, 0x1d, 0x0d, 0x1d, 0x0d, 0x1d, 0x0d, 0x1d, 0x0d, 0x1d, 0x0d, 0x1d, 0x0d, 0x5b,
		0x85, 0x8e, 0x86, 0x8e, 0x36, 0x60, 0x25, 0xae, 0xf6, 0x6a, 0xcc, 0x63, 0x9b, 0x9e, 0x23, 0x04,
		0x9a, 0x8c, 0xd3, 0x79, 0xd1, 0x11, 0xbe, 0xd8, 0x89, 0xfc, 0x01, 0xc7, 0xf8, 0x26, 0x3e, 0x6b,
		0xc2, 0x58, 0xb1, 0xbc, 0xd8, 0x25, 0x47, 0x93, 0xe7, 0x4d, 0xc6, 0x3d, 0x5d, 0x26, 0x7b, 0x7e,
		0x9f, 0x6e, 0xb9, 0xfd, 0x7e, 0xb4, 0x65, 0x53, 0x67, 0xa0, 0x11, 0x8e, 0x23, 0x10, 0xd1, 0x1d,
		0x5f, 0x1f, 0xf7, 0xd1, 0x62, 0x68, 0xe3, 0xbe, 0xd2, 0x42, 0x68, 0xe3, 0x2e, 0xd7, 0x3c, 0xd0,
		0xc6, 0x1d, 0x6d, 0xdc, 0x7f, 0x75, 0xcb, 0xd0, 0xc6, 0xdd, 0x38, 0x40, 0x9e, 0x07, 0x66, 0xb4,
		0x71, 0xcf, 0x03, 0x60, 0x2b, 0x07, 0x6e, 0xe5, 0x00, 0xae, 0x16, 0xc8, 0xf3, 0x19, 0x67, 0x40,
		0x1b, 0x77, 0xae, 0xb7, 0x16, 0x89, 0x08, 0x5b, 0xe0, 0x14, 0x54, 0x3b, 0x07, 0x6d, 0x9c, 0x84,
		0x36, 0xce, 0x42, 0x0f, 0xa7, 0xc1, 0xeb, 0x3c, 0x98, 0x9d, 0x48, 0x76, 0x8b, 0x91, 0x88, 0x80,
		0x44, 0x04, 0xe6, 0x0f, 0x8e, 0x44, 0x84, 0xa9, 0x7d, 0xe0, 0x70, 0x57, 0x13, 0x24, 0x9c, 0x35,
		0x51, 0x24, 0x22, 0xc0, 0x56, 0xb5, 0xe5, 0x08, 0xea, 0x56, 0x45, 0x42, 0xff, 0xe6, 0x46, 0x8b,
		0x36, 0xee, 0x50, 0xd4, 0x50, 0xd4, 0x50, 0xd4, 0x50, 0xd4, 0x50, 0xd4, 0x50, 0xd4, 0x50, 0xd4,
		0x50, 0xd4, 0x50, 0x29, 0x50, 0xd4, 0x50, 0xd4, 0xb0, 0x55, 0x28, 0x6a, 0x28, 0xea, 0x75, 0x8c,
		0x16, 0x6d, 0xdc, 0xa1, 0xa7, 0xa1, 0xa7, 0xa1, 0xa7, 0xa1, 0xa7, 0xa1, 0xa7, 0xa1, 0xa7, 0xa1,
		0xa7, 0xa1, 0xa7, 0xa1, 0x51, 0xa0, 0xa7, 0xa1, 0xa7, 0x61, 0xab, 0xd0, 0xd3, 0xd0, 0xd3, 0xeb,
		0xe8, 0x69, 0xb4, 0x71, 0x87, 0xa6, 0x86, 0xa6, 0x86, 0xa6, 0x86, 0xa6, 0x86, 0xa6, 0x86, 0xa6,
		0x86, 0xa6, 0x86, 0xa6, 0x86, 0x4e, 0x81, 0xa6, 0x86, 0xa6, 0x86, 0xad, 0x42, 0x53, 0x43, 0x53,
		0xaf, 0x63, 0xb4, 0x68, 0xe3, 0x0e, 0x1d, 0x0d, 0x1d, 0x0d, 0x1d, 0x0d, 0x1d, 0x0d, 0x1d, 0x0d,
		0x1d, 0x0d, 0x1d, 0x0d, 0x1d, 0x0d, 0x6d, 0x02, 0x1d, 0x0d, 0x1d, 0x0d, 0x5b, 0x85, 0x8e, 0x36,
		0x5e, 0x47, 0xa3, 0x8d, 0xbb, 0x8c, 0x08, 0x81, 0xa6, 0xed, 0xb2, 0x45, 0x74, 0x87, 0x2e, 0xee,
		0xda, 0x98, 0x29, 0xba, 0xb8, 0x3f, 0x9b, 0xa5, 0x61, 0x4d, 0xdc, 0x4f, 0xa3, 0x3b, 0xf4, 0x70,
		0x9f, 0xbf, 0xc3, 0xae, 0xcb, 0xd8, 0xc3, 0x7d, 0xb4, 0x18, 0x7a, 0xb8, 0xaf, 0xb4, 0x10, 0x7a,
		0xb8, 0xcb, 0x35, 0x0f, 0xf4, 0x70, 0x47, 0x0f, 0xf7, 0x5f, 0xdd, 0x32, 0xf4, 0x70, 0x37, 0x0e,
		0x90, 0xe7, 0x81, 0x19, 0x3d, 0xdc, 0xf3, 0x00, 0xd8, 0xca, 0x81, 0x5b, 0x39, 0x80, 0xab, 0x05,
		0xf2, 0x7c, 0x06, 0x19, 0xd0, 0xc3, 0x9d, 0xeb, 0xad, 0x45, 0x16, 0xc2, 0x16, 0x38, 0x05, 0xd5,
		0xce, 0x41, 0x1b, 0x27, 0xa1, 0x8d, 0xb3, 0xd0, 0xc3, 0x69, 0xf0, 0x3a, 0x0f, 0x66, 0x27, 0x92,
		0xdd, 0x62, 0x64, 0x21, 0x20, 0x0b, 0x81, 0xf9, 0x83, 0x23, 0x0b, 0x61, 0x6a, 0x1f, 0x38, 0xd9,
		0xd5, 0x04, 0x09, 0x67, 0x4d, 0x14, 0x59, 0x08, 0xb0, 0x55, 0x6d, 0x39, 0x82, 0xba, 0x55, 0x91,
		0xcd, 0xbf, 0xb9, 0xd1, 0xa2, 0x87, 0x3b, 0x14, 0x35, 0x14, 0x35, 0x14, 0x35, 0x14, 0x35, 0x14,
		0x35, 0x14, 0x35, 0x14, 0x35, 0x14, 0x35, 0x54, 0x0a, 0x14, 0x35, 0x14, 0x35, 0x6c, 0x15, 0x8a,
		0x1a, 0x8a, 0x7a, 0x1d, 0xa3, 0x45, 0x0f, 0x77, 0xe8, 0x69, 0xe8, 0x69, 0xe8, 0x69, 0xe8, 0x69,
		0xe8, 0x69, 0xe8, 0x69, 0xe8, 0x69, 0xe8, 0x69, 0x68, 0x14, 0xe8, 0x69, 0xe8, 0x69, 0xd8, 0x2a,
		0xf4, 0x34, 0xf4, 0xf4, 0x3a, 0x7a, 0x1a, 0x3d, 0xdc, 0xa1, 0xa9, 0xa1, 0xa9, 0xa1, 0xa9, 0xa1,
		0xa9, 0xa1, 0xa9, 0xa1, 0xa9, 0xa1, 0xa9, 0xa1, 0xa9, 0xa1, 0x53, 0xa0, 0xa9, 0xa1, 0xa9, 0x61,
		0xab, 0xd0, 0xd4, 0xd0, 0xd4, 0xeb, 0x18, 0x2d, 0x7a, 0xb8, 0x43, 0x47, 0x43, 0x47, 0x43, 0x47,
		0x43, 0x47, 0x43, 0x47, 0x43, 0x47, 0x43, 0x47, 0x43, 0x47, 0x43, 0x9b, 0x40, 0x47, 0x43, 0x47,
		0xc3, 0x56, 0xa1, 0xa3, 0x8d, 0xd7, 0xd1, 0xe8, 0xe1, 0x2e, 0x23, 0x42, 0xa0, 0x69, 0xb3, 0x6c,
		0xd7, 0x45, 0x0f, 0x77, 0x7d, 0xcc, 0x14, 0x3d, 0xdc, 0x9f, 0xcd, 0xd2, 0xb0, 0x1e, 0xee, 0x4d,
		0x17, 0x3d, 0xdc, 0x17, 0xdc, 0x61, 0x37, 0xe2, 0xec, 0xe1, 0x1e, 0xa1, 0x87, 0xfb, 0x8a, 0x0b,
		0xa1, 0x87, 0xbb, 0x5c, 0xf3, 0x40, 0x0f, 0x77, 0xf4, 0x70, 0xff, 0xd5, 0x2d, 0x43, 0x0f, 0x77,
		0xe3, 0x00, 0x79, 0x1e, 0x98, 0xd1, 0xc3, 0x3d, 0x0f, 0x80, 0xad, 0x1c, 0xb8, 0x95, 0x03, 0xb8,
		0x5a, 0x20, 0xcf, 0x67, 0x90, 0x01, 0x3d, 0xdc, 0xb9, 0xde, 0x5a, 0x64, 0x21, 0x6c, 0x81, 0x53,
		0x50, 0xed, 0x1c, 0xb4, 0x71, 0x12, 0xda, 0x38, 0x0b, 0x3d, 0x9c, 0x06, 0xaf, 0xf3, 0x60, 0x76,
		0x22, 0xd9, 0x2d, 0x46, 0x16, 0xc2, 0xff, 0xc7, 0xde, 0x1f, 0x35, 0xb5, 0x8d, 0x6c, 0xdf, 0x03,
		0xe8, 0x7b, 0x3e, 0x85, 0x4a, 0x75, 0xaa, 0x66, 0x52, 0x15, 0x61, 0x6c, 0x0c, 0x04, 0x6e, 0x9d,
		0x07, 0x81, 0x45, 0xa2, 0x13, 0x63, 0xbb, 0x6c, 0xc1, 0xc9, 0xfc, 0x06, 0x8e, 0x4a, 0xd8, 0x6d,
		0xa3, 0xff, 0x88, 0xb6, 0xaf, 0x24, 0x93, 0x70, 0x67, 0xf2, 0xdd, 0x6f, 0x49, 0xb6, 0x85, 0x8d,
		0x21, 0x04, 0x90, 0x5a, 0xbd, 0xdb, 0x8b, 0x87, 0x09, 0xe3, 0x10, 0xd4, 0x92, 0x56, 0xef, 0xbd,
		0xd6, 0xee, 0xdd, 0xab, 0xd1, 0x85, 0x20, 0xf8, 0xc6, 0xd1, 0x85, 0xb0, 0x34, 0x0e, 0xac, 0xec,
		0x4a, 0x12, 0x09, 0x57, 0x21, 0x8a, 0x2e, 0x04, 0x60, 0x55, 0x5a, 0x8e, 0x50, 0xde, 0x55, 0xd1,
		0xcd, 0xff, 0x76, 0xd0, 0xc2, 0xc3, 0x1d, 0x8a, 0x1a, 0x8a, 0x1a, 0x8a, 0x1a, 0x8a, 0x1a, 0x8a,
		0x1a, 0x8a, 0x1a, 0x8a, 0x1a, 0x8a, 0x1a, 0x2a, 0x05, 0x8a, 0x1a, 0x8a, 0x1a, 0x58, 0x85, 0xa2,
		0x86, 0xa2, 0x7e, 0x0d, 0x68, 0xe1, 0xe1, 0x0e, 0x3d, 0x0d, 0x3d, 0x0d, 0x3d, 0x0d, 0x3d, 0x0d,
		0x3d, 0x0d, 0x3d, 0x0d, 0x3d, 0x0d, 0x3d, 0x0d, 0x8d, 0x02, 0x3d, 0x0d, 0x3d, 0x0d, 0xac, 0x42,
		0x4f, 0x43, 0x4f, 0xbf, 0x46, 0x4f, 0xc3, 0xc3, 0x1d, 0x9a, 0x1a, 0x9a, 0x1a, 0x9a, 0x1a, 0x9a,
		0x1a, 0x9a, 0x1a, 0x9a, 0x1a, 0x9a, 0x1a, 0x9a, 0x1a, 0x3a, 0x05, 0x9a, 0x1a, 0x9a, 0x1a, 0x58,
		0x85, 0xa6, 0x86, 0xa6, 0x7e, 0x0d, 0x68, 0xe1, 0xe1, 0x0e, 0x1d, 0x0d, 0x1d, 0x0d, 0x1d, 0x0d,
		0x1d, 0x0d, 0x1d, 0x0d, 0x1d, 0x0d, 0x1d, 0x0d, 0x1d, 0x0d, 0x6d, 0x02, 0x1d, 0x0d, 0x1d, 0x0d,
		0xac, 0x42, 0x47, 0x93, 0xd7, 0xd1, 0xf0, 0x70, 0xcf, 0xa3, 0x42, 0x20, 0xab, 0x59, 0x76, 0x04,
		0x0f, 0x77, 0x79, 0x60, 0x0a, 0x0f, 0xf7, 0x7b, 0x58, 0x52, 0xf3, 0x70, 0x8f, 0xe0, 0xe1, 0xfe,
		0xc8, 0x13, 0x0e, 0xa2, 0x89, 0x38, 0x0f, 0xf7, 0xe4, 0x62, 0xf0, 0x70, 0x7f, 0xd1, 0x85, 0xe0,
		0xe1, 0x9e, 0x2f, 0x3c, 0xe0, 0xe1, 0x0e, 0x0f, 0xf7, 0xe7, 0x1e, 0x19, 0x3c, 0xdc, 0xc9, 0x05,
		0xe4, 0xf5, 0xc0, 0x0c, 0x0f, 0x77, 0x15, 0x02, 0x76, 0xe9, 0x81, 0xbb, 0xf4, 0x00, 0x5e, 0x6e,
		0x20, 0x57, 0xb3, 0xc8, 0x00, 0x0f, 0x77, 0x51, 0xb3, 0x16, 0x5d, 0x08, 0x1b, 0x90, 0x14, 0xca,
		0x4e, 0x0e, 0xd2, 0x24, 0x09, 0x69, 0x92, 0x85, 0x1c, 0x49, 0x43, 0x6c, 0xf2, 0x10, 0x9c, 0x44,
		0xb2, 0x47, 0x8c, 0x2e, 0x04, 0x74, 0x21, 0x08, 0xbe, 0x71, 0x74, 0x21, 0x2c, 0x8d, 0x03, 0x2b,
		0xbb, 0x92, 0x44, 0xc2, 0x55, 0x88, 0xa2, 0x0b, 0x01, 0x58, 0x95, 0x96, 0x23, 0x94, 0x77, 0x55,
		0x74, 0xf3, 0xbf, 0x1d, 0xb4, 0xf0, 0x70, 0x87, 0xa2, 0x86, 0xa2, 0x86, 0xa2, 0x86, 0xa2, 0x86,
		0xa2, 0x86, 0xa2, 0x86, 0xa2, 0x86, 0xa2, 0x86, 0x4a, 0x81, 0xa2, 0x86, 0xa2, 0x06, 0x56, 0xa1,
		0xa8, 0xa1, 0xa8, 0x5f, 0x03, 0x5a, 0x78, 0xb8, 0x43, 0x4f, 0x43, 0x4f, 0x43, 0x4f, 0x43, 0x4f,
		0x43, 0x4f, 0x43, 0x4f, 0x43, 0x4f, 0x43, 0x4f, 0x43, 0xa3, 0x40, 0x4f, 0x43, 0x4f, 0x03, 0xab,
		0xd0, 0xd3, 0xd0, 0xd3, 0xaf, 0xd1, 0xd3, 0xf0, 0x70, 0x87, 0xa6, 0x86, 0xa6, 0x86, 0xa6, 0x86,
		0xa6, 0x86, 0xa6, 0x86, 0xa6, 0x86, 0xa6, 0x86, 0xa6, 0x86, 0x4e, 0x81, 0xa6, 0x86, 0xa6, 0x06,
		0x56, 0xa1, 0xa9, 0xa1, 0xa9, 0x5f, 0x03, 0x5a, 0x78, 0xb8, 0x43, 0x47, 0x43, 0x47, 0x43, 0x47,
		0x43, 0x47, 0x43, 0x47, 0x43, 0x47, 0x43, 0x47, 0x43, 0x47, 0x43, 0x9b, 0x40, 0x47, 0x43, 0x47,
		0x03, 0xab, 0xd0, 0xd1, 0xe4, 0x75, 0x34, 0x3c, 0xdc, 0xf3, 0xa8, 0x10, 0x48, 0x6a, 0x96, 0x1d,
		0x44, 0x13, 0x78, 0xb8, 0x4b, 0x03, 0x53, 0x78, 0xb8, 0xdf, 0xc3, 0x92, 0x98, 0x87, 0x7b, 0x33,
		0x9a, 0xc0, 0xc3, 0x7d, 0xfd, 0x09, 0x4f, 0x22, 0x2e, 0xd0, 0xc4, 0x3d, 0xbd, 0x1a, 0x5c, 0xdc,
		0x5f, 0x74, 0x21, 0xb8, 0xb8, 0xe7, 0x0b, 0x0f, 0xb8, 0xb8, 0xc3, 0xc5, 0xfd, 0xb9, 0x47, 0x06,
		0x17, 0x77, 0x72, 0x01, 0x79, 0x3d, 0x30, 0xc3, 0xc5, 0x5d, 0x85, 0x80, 0x5d, 0x7a, 0xe0, 0x2e,
		0x3d, 0x80, 0x97, 0x1b, 0xc8, 0xd5, 0x2c, 0x33, 0xc0, 0xc5, 0x5d, 0xd4, 0xac, 0x45, 0x1f, 0xc2,
		0x06, 0x24, 0x85, 0xb2, 0x93, 0x83, 0x34, 0x49, 0x42, 0x9a, 0x64, 0x21, 0x47, 0xd2, 0x10, 0x9b,
		0x3c, 0x04, 0x27, 0x91, 0xec, 0x11, 0xa3, 0x0f, 0x01, 0x7d, 0x08, 0x82, 0x6f, 0x1c, 0x7d, 0x08,
		0x4b, 0xe3, 0xc0, 0xda, 0xae, 0x24, 0x91, 0x70, 0x15, 0xa2, 0xe8, 0x43, 0x00, 0x56, 0xa5, 0xe5,
		0x08, 0xe5, 0x5d, 0x15, 0xfd, 0xfc, 0x6f, 0x07, 0x2d, 0x5c, 0xdc, 0xa1, 0xa8, 0xa1, 0xa8, 0xa1,
		0xa8, 0xa1, 0xa8, 0xa1, 0xa8, 0xa1, 0xa8, 0xa1, 0xa8, 0xa1, 0xa8, 0xa1, 0x52, 0xa0, 0xa8, 0xa1,
		0xa8, 0x81, 0x55, 0x28, 0x6a, 0x28, 0xea, 0xd7, 0x80, 0x16, 0x2e, 0xee, 0xd0, 0xd3, 0xd0, 0xd3,
		0xd0, 0xd3, 0xd0, 0xd3, 0xd0, 0xd3, 0xd0, 0xd3, 0xd0, 0xd3, 0xd0, 0xd3, 0xd0, 0x28, 0xd0, 0xd3,
		0xd0, 0xd3, 0xc0, 0x2a, 0xf4, 0x34, 0xf4, 0xf4, 0x6b, 0xf4, 0x34, 0x5c, 0xdc, 0xa1, 0xa9, 0xa1,
		0xa9, 0xa1, 0xa9, 0xa1, 0xa9, 0xa1, 0xa9, 0xa1, 0xa9, 0xa1, 0xa9, 0xa1, 0xa9, 0xa1, 0x53, 0xa0,
		0xa9, 0xa1, 0xa9, 0x81, 0x55, 0x68, 0x6a, 0x68, 0xea, 0xd7, 0x80, 0x16, 0x2e, 0xee, 0xd0, 0xd1,
		0xd0, 0xd1, 0xd0, 0xd1, 0xd0, 0xd1, 0xd0, 0xd1, 0xd0, 0xd1, 0xd0, 0xd1, 0xd0, 0xd1, 0xd0, 0x26,
		0xd0, 0xd1, 0xd0, 0xd1, 0xc0, 0x2a, 0x74, 0x34, 0x79, 0x1d, 0x0d, 0x17, 0xf7, 0x3c, 0x2a, 0x04,
		0x92, 0xda, 0x65, 0x4f, 0x22, 0x0e, 0x1b, 0x77, 0x79, 0x70, 0x0a, 0x1b, 0xf7, 0x25, 0x5c, 0x12,
		0xf3, 0x71, 0xef, 0x24, 0x43, 0x86, 0x91, 0xfb, 0xda, 0x23, 0x9e, 0xf2, 0xbf, 0xf8, 0xf8, 0x1b,
		0x17, 0xe7, 0xe5, 0xbe, 0xb8, 0x20, 0xec, 0xdc, 0x5f, 0x74, 0x21, 0xd8, 0xb9, 0xe7, 0x0b, 0x0f,
		0xd8, 0xb9, 0xc3, 0xce, 0xfd, 0xb9, 0x47, 0x06, 0x3b, 0x77, 0x72, 0x01, 0x79, 0x3d, 0x30, 0xc3,
		0xce, 0x5d, 0x85, 0x80, 0x5d, 0x7a, 0xe0, 0x2e, 0x3d, 0x80, 0x97, 0x1b, 0xc8, 0xd5, 0xac, 0x37,
		0xc0, 0xce, 0x5d, 0xd4, 0xac, 0x45, 0x43, 0xc2, 0x06, 0x24, 0x85, 0xb2, 0x93, 0x83, 0x34, 0x49,
		0x42, 0x9a, 0x64, 0x21, 0x47, 0xd2, 0x10, 0x9b, 0x3c, 0x04, 0x27, 0x91, 0xec, 0x11, 0xa3, 0x21,
		0x01, 0x0d, 0x09, 0x82, 0x6f, 0x1c, 0x0d, 0x09, 0x4b, 0xe3, 0xc0, 0x22, 0xaf, 0x24, 0x91, 0x70,
		0x15, 0xa2, 0x68, 0x48, 0x00, 0x56, 0xa5, 0xe5, 0x08, 0xe5, 0x5d, 0x15, 0x8d, 0xfd, 0x6f, 0x07,
		0x2d, 0xec, 0xdc, 0xa1, 0xa8, 0xa1, 0xa8, 0xa1, 0xa8, 0xa1, 0xa8, 0xa1, 0xa8, 0xa1, 0xa8, 0xa1,
		0xa8, 0xa1, 0xa8, 0xa1, 0x52, 0xa0, 0xa8, 0xa1, 0xa8, 0x81, 0x55, 0x28, 0x6a, 0x28, 0xea, 0xd7,
		0x80, 0x16, 0x76, 0xee, 0xd0, 0xd3, 0xd0, 0xd3, 0xd0, 0xd3, 0xd0, 0xd3, 0xd0, 0xd3, 0xd0, 0xd3,
		0xd0, 0xd3, 0xd0, 0xd3, 0xd0, 0x28, 0xd0, 0xd3, 0xd0, 0xd3, 0xc0, 0x2a, 0xf4, 0x34, 0xf4, 0xf4,
		0x6b, 0xf4, 0x34, 0xec, 0xdc, 0xa1, 0xa9, 0xa1, 0xa9, 0xa1, 0xa9, 0xa1, 0xa9, 0xa1, 0xa9, 0xa1,
		0xa9, 0xa1, 0xa9, 0xa1, 0xa9, 0xa1, 0x53, 0xa0, 0xa9, 0xa1, 0xa9, 0x81, 0x55, 0x68, 0x6a, 0x68,
		0xea, 0xd7, 0x80, 0x16, 0x76, 0xee, 0xd0, 0xd1, 0xd0, 0xd1, 0xd0, 0xd1, 0xd0, 0xd1, 0xd0, 0xd1,
		0xd0, 0xd1, 0xd0, 0xd1, 0xd0, 0xd1, 0xd0, 0x26, 0xd0, 0xd1, 0xd0, 0xd1, 0xc0, 0x2a, 0x74, 0x34,
		0x79, 0x1d, 0x0d, 0x3b, 0xf7, 0x3c, 0x2a, 0x04, 0x92, 0xda, 0x66, 0xcf, 0xad, 0x8f, 0xe1, 0xe8,
		0x2e, 0x0d, 0x54, 0xe1, 0xe8, 0xbe, 0x0a, 0x4d, 0x62, 0xa6, 0xee, 0x67, 0xf3, 0x51, 0x53, 0xf5,
		0x75, 0x7f, 0x47, 0x68, 0xca, 0x88, 0x9a, 0x2a, 0xb2, 0x4e, 0x91, 0x02, 0xa7, 0x46, 0x8e, 0x53,
		0xa2, 0x98, 0xa9, 0x90, 0x3f, 0x50, 0x0b, 0x00, 0x69, 0xc1, 0x2e, 0xda, 0x42, 0x5c, 0xb3, 0x0b,
		0x76, 0xc9, 0x2e, 0xdc, 0x15, 0x5b, 0x44, 0xe9, 0x5e, 0x60, 0x89, 0x5e, 0x54, 0x29, 0x5e, 0x78,
		0xc9, 0x5d, 0x78, 0x69, 0x5d, 0x6c, 0x09, 0x9d, 0x56, 0x62, 0x2d, 0xda, 0x85, 0x5a, 0x67, 0xdc,
		0xbb, 0x0a, 0x04, 0x6c, 0xea, 0xcd, 0x66, 0xe6, 0xe2, 0x82, 0x45, 0x9f, 0xcf, 0xc0, 0x86, 0xde,
		0x34, 0x88, 0x85, 0xd4, 0xae, 0xf5, 0xb4, 0xb0, 0x53, 0x2c, 0xd3, 0xbc, 0x14, 0x73, 0x26, 0xce,
		0x36, 0xce, 0xc4, 0x91, 0x39, 0xe9, 0x88, 0x4e, 0x3e, 0xa5, 0x25, 0xa1, 0xd2, 0x92, 0x51, 0x39,
		0x49, 0x49, 0x8d, 0x82, 0x89, 0xb0, 0x75, 0xda, 0x6c, 0xc6, 0x5d, 0x8d, 0xc7, 0x01, 0xf3, 0x84,
		0x94, 0x26, 0x16, 0xec, 0xbb, 0x8a, 0x83, 0xe2, 0xd6, 0x9e, 0x4d, 0x2a, 0x8a, 0x0d, 0x3e, 0xbd,
		0xb9, 0x62, 0xa1, 0x38, 0x26, 0xb1, 0x72, 0x55, 0xa4, 0x47, 0xa4, 0x47, 0xa4, 0x47, 0xa4, 0x47,
		0xa4, 0xc7, 0x72, 0x22, 0xe4, 0x72, 0x94, 0x14, 0xd0, 0x03, 0x20, 0xb8, 0x33, 0x49, 0xe0, 0x02,
		0x65, 0x19, 0x9d, 0x47, 0x59, 0x1b, 0x47, 0x55, 0x70, 0x67, 0x5f, 0xd9, 0xdd, 0x1a, 0xe5, 0x75,
		0x67, 0x88, 0xec, 0x8a, 0x2f, 0xa3, 0x53, 0x28, 0x83, 0x54, 0x0d, 0x90, 0x12, 0x05, 0x29, 0x45,
		0xba, 0x06, 0x2e, 0xa1, 0xb0, 0xd6, 0x40, 0x35, 0xf1, 0xa2, 0x68, 0x86, 0x29, 0x41, 0xe2, 0x6a,
		0x71, 0x41, 0x94, 0x69, 0x5f, 0x86, 0x5d, 0xe8, 0x50, 0xe8, 0x50, 0xe8, 0x50, 0xe8, 0x50, 0xe8,
		0x50, 0x94, 0x69, 0xa5, 0x23, 0x11, 0xa1, 0x3f, 0x0e, 0xfd, 0xf8, 0x4e, 0x20, 0x8b, 0x58, 0x5c,
		0x11, 0x69, 0x11, 0x69, 0x11, 0x69, 0x11, 0x69, 0x11, 0x69, 0x71, 0x69, 0xc6, 0x4d, 0x7d, 0x1e,
		0x7f, 0x44, 0x5d, 0xf6, 0x0d, 0x5f, 0x9b, 0x52, 0x97, 0xdd, 0x46, 0x11, 0x4d, 0xd0, 0xd7, 0xc6,
		0xd4, 0x65, 0xab, 0xb5, 0x7d, 0x80, 0x4a, 0x14, 0xa8, 0x50, 0x99, 0x2d, 0x57, 0x54, 0x61, 0x33,
		0xcd, 0x23, 0xd7, 0x91, 0x65, 0x33, 0x4d, 0x81, 0x5b, 0x1e, 0x69, 0x6c, 0x4e, 0x89, 0xfd, 0x1b,
		0x16, 0x46, 0xc5, 0xef, 0x4e, 0x99, 0x5f, 0x87, 0xf8, 0xf6, 0x94, 0x6d, 0x6c, 0x4f, 0x91, 0x48,
		0x63, 0x63, 0x7b, 0xca, 0x26, 0xa7, 0xaa, 0xc2, 0xb7, 0xa7, 0xf4, 0x17, 0xb3, 0x5e, 0x50, 0xc1,
		0x72, 0x7e, 0x3d, 0x31, 0xe5, 0xca, 0x2a, 0xca, 0x95, 0x32, 0x87, 0x50, 0xd1, 0xa1, 0xb4, 0xb4,
		0x90, 0x5a, 0x5a, 0x68, 0x2d, 0x27, 0xc4, 0x8a, 0xd1, 0x4b, 0x45, 0x97, 0x2b, 0x8b, 0x0e, 0xbd,
		0xd9, 0x85, 0xae, 0x59, 0x10, 0x8c, 0x8d, 0x94, 0xbb, 0xdf, 0x7a, 0x81, 0xb8, 0x59, 0xb0, 0x98,
		0xe8, 0x0f, 0xae, 0x2f, 0x08, 0x91, 0x62, 0x7d, 0x55, 0x85, 0xfb, 0xa9, 0x96, 0xe1, 0xa3, 0x5a,
		0xa2, 0x7f, 0x6a, 0x59, 0xbe, 0xa9, 0xa5, 0xfb, 0xa5, 0x96, 0xee, 0x93, 0x5a, 0xae, 0x3f, 0xaa,
		0x5a, 0x9e, 0x59, 0xc2, 0x7d, 0x50, 0x57, 0x56, 0xaa, 0x84, 0x9a, 0x9f, 0x96, 0x60, 0x7a, 0x5a,
		0x92, 0xd9, 0x69, 0x09, 0xae, 0xb6, 0x65, 0x9a, 0x9b, 0x96, 0x6d, 0x6a, 0x2a, 0x8d, 0x41, 0x64,
		0xf9, 0xc6, 0x90, 0x25, 0x98, 0x97, 0x96, 0x6a, 0x5a, 0x2a, 0x8d, 0x59, 0x29, 0x30, 0x28, 0x38,
		0x41, 0x8b, 0xbf, 0xda, 0x25, 0xcc, 0x3a, 0x73, 0xb8, 0xee, 0xdd, 0x68, 0x1c, 0x1b, 0xe3, 0xbe,
		0xd1, 0x1f, 0xdf, 0x4c, 0x42, 0x16, 0x45, 0x6c, 0x60, 0x04, 0xcc, 0x1b, 0x26, 0x83, 0x50, 0x65,
		0x49, 0x55, 0xc0, 0x2b, 0x9c, 0x2b, 0xe8, 0x9b, 0x69, 0x10, 0xfb, 0x93, 0xc0, 0x67, 0x61, 0x59,
		0x1a, 0x7e, 0x69, 0x04, 0x50, 0xf1, 0x50, 0xf1, 0x50, 0xf1, 0x50, 0xf1, 0x50, 0xf1, 0x82, 0x55,
		0xfc, 0xc7, 0x12, 0x44, 0xfc, 0x2e, 0x44, 0x3c, 0x44, 0x3c, 0x04, 0x14, 0x44, 0x7c, 0x9e, 0xd0,
		0xab, 0xed, 0x42, 0xbd, 0x43, 0xbd, 0x43, 0xbd, 0x43, 0xbd, 0x97, 0xa9, 0xde, 0x71, 0xc0, 0xc5,
		0x0b, 0xae, 0x27, 0x4b, 0xc3, 0xf1, 0xac, 0x0f, 0xb6, 0x32, 0xef, 0xf5, 0xc2, 0x46, 0xe1, 0xf5,
		0x17, 0x55, 0xa8, 0x5b, 0xfe, 0x9a, 0x2e, 0x29, 0xd2, 0x35, 0xff, 0xa1, 0x16, 0x11, 0xd6, 0x73,
		0x57, 0x43, 0xcf, 0x1d, 0xa1, 0x52, 0x0f, 0x7a, 0xee, 0xd0, 0x73, 0xf7, 0xfc, 0x23, 0x43, 0xcf,
		0x9d, 0x88, 0x10, 0x8d, 0x6a, 0x3d, 0xe9, 0xd0, 0x5d, 0x56, 0x08, 0x2f, 0x3d, 0x94, 0x97, 0x1e,
		0xd2, 0xcb, 0x0d, 0xed, 0x62, 0x65, 0x3a, 0x7a, 0xee, 0x0a, 0x8b, 0xbf, 0xe8, 0xb9, 0x2b, 0xe0,
		0x46, 0x51, 0xae, 0x47, 0xc5, 0x14, 0x3d, 0x77, 0xe8, 0xb9, 0x43, 0xd5, 0xbe, 0xb0, 0xaf, 0x4b,
		0xb4, 0x84, 0xbd, 0x50, 0x60, 0xa2, 0x25, 0x0c, 0x22, 0x13, 0x22, 0x13, 0x22, 0x13, 0x22, 0x73,
		0x93, 0x45, 0x26, 0x5a, 0xc2, 0xa0, 0x31, 0xa1, 0x31, 0xa1, 0x31, 0xc9, 0x6b, 0x4c, 0xb4, 0x84,
		0x41, 0x5c, 0x42, 0x5c, 0x96, 0x79, 0x05, 0x74, 0x2c, 0x15, 0xda, 0xb1, 0x54, 0xa0, 0x53, 0x62,
		0xf1, 0xf8, 0x80, 0x09, 0xa7, 0xfc, 0x08, 0xd3, 0x0b, 0x6d, 0x2a, 0x0b, 0xa7, 0xfd, 0x98, 0xcf,
		0x85, 0x47, 0x6b, 0x36, 0x74, 0x7b, 0x3e, 0x72, 0xb7, 0x33, 0x1f, 0xaf, 0x6b, 0x47, 0x7e, 0xe4,
		0xda, 0x8b, 0x41, 0xba, 0xcd, 0x64, 0x74, 0xae, 0x33, 0x1b, 0x1d, 0x15, 0x8f, 0xd0, 0x77, 0x12,
		0x23, 0x5c, 0xff, 0xc2, 0xee, 0x0a, 0x3e, 0x1b, 0x54, 0x6f, 0xfa, 0x51, 0x6c, 0xc6, 0x71, 0x31,
		0x55, 0xc5, 0x44, 0xe6, 0x58, 0x01, 0xbb, 0x61, 0xbc, 0x28, 0xa6, 0x95, 0xb0, 0xd9, 0xa5, 0x2b,
		0x54, 0x3f, 0xd6, 0xeb, 0x7b, 0xfb, 0xf5, 0xfa, 0xf6, 0xfe, 0xce, 0xfe, 0xf6, 0xc1, 0xee, 0x6e,
		0x75, 0xaf, 0x5a, 0x00, 0xcf, 0xd4, 0xdb, 0xe1, 0x80, 0x85, 0x6c, 0x70, 0x94, 0xbc, 0x1d, 0x3e,
		0x0d, 0x82, 0x22, 0x2f, 0x71, 0x16, 0xa5, 0x25, 0xdf, 0xfc, 0x29, 0x62, 0xde, 0x60, 0x2d, 0x38,
		0x0c, 0xcb, 0x12, 0x7e, 0x0b, 0x88, 0xbb, 0x6f, 0x89, 0xb7, 0xf9, 0x06, 0xda, 0xfc, 0xc2, 0x61,
		0x3e, 0xbf, 0x29, 0x27, 0x8c, 0x16, 0x85, 0xcd, 0xf2, 0x31, 0x99, 0xcf, 0xeb, 0x7f, 0xfb, 0xcb,
		0xca, 0xe1, 0x45, 0xe9, 0x37, 0x93, 0x20, 0x3f, 0x67, 0xed, 0xac, 0x6c, 0x9a, 0xfe, 0xd6, 0x9c,
		0x60, 0x94, 0x6f, 0x63, 0x7a, 0xee, 0x0b, 0x4e, 0x45, 0x2c, 0x28, 0x15, 0xb8, 0x60, 0x54, 0xd4,
		0x82, 0x50, 0xe1, 0x0b, 0x3e, 0x85, 0x2f, 0xe8, 0x14, 0xbb, 0x60, 0x23, 0x57, 0x68, 0xce, 0xbb,
		0x51, 0x5b, 0xf7, 0x47, 0x13, 0x23, 0x18, 0x4c, 0x8c, 0xe8, 0x8e, 0xf7, 0xf3, 0xc7, 0xd6, 0x62,
		0x3a, 0xac, 0x5c, 0x25, 0x6f, 0xda, 0x5f, 0xc8, 0xfe, 0x97, 0xc2, 0xd6, 0xb7, 0x8b, 0x5c, 0xc7,
		0x16, 0xb0, 0x5e, 0x5d, 0xf4, 0xba, 0xb4, 0xb0, 0xf5, 0x67, 0x61, 0xeb, 0xcc, 0x62, 0xd6, 0x93,
		0xe5, 0x96, 0xe6, 0x45, 0xed, 0x2f, 0x29, 0xda, 0x46, 0x5f, 0x8c, 0x7d, 0x3e, 0x4e, 0x18, 0x91,
		0x22, 0xb4, 0x89, 0x0a, 0x71, 0xc2, 0x43, 0x9d, 0xf0, 0x90, 0x27, 0x36, 0xf4, 0x15, 0x13, 0x02,
		0x0b, 0x0a, 0x85, 0x85, 0x87, 0xc4, 0xec, 0x02, 0x8c, 0x7b, 0x57, 0x01, 0x1b, 0x88, 0xdb, 0xed,
		0xbc, 0xb8, 0x60, 0xd1, 0x7b, 0x15, 0xd9, 0xd0, 0x9b, 0x06, 0xb1, 0x90, 0xbe, 0x17, 0x3d, 0x99,
		0x23, 0xc5, 0xae, 0x4b, 0x5d, 0xe2, 0x04, 0x69, 0xd9, 0x72, 0x4d, 0x09, 0x39, 0x47, 0x74, 0xee,
		0x29, 0x2d, 0x07, 0x95, 0x96, 0x8b, 0xca, 0xc9, 0x49, 0xc5, 0xe6, 0xa6, 0x82, 0x73, 0x54, 0xf6,
		0xc8, 0xc4, 0x9f, 0x20, 0x7d, 0x35, 0x1e, 0x07, 0xcc, 0xe3, 0x02, 0xcf, 0x90, 0xae, 0x56, 0x49,
		0xbf, 0x22, 0xf6, 0x3d, 0x0e, 0x3d, 0x63, 0xca, 0xa3, 0x38, 0x49, 0xc2, 0x62, 0x5e, 0x56, 0xc8,
		0x86, 0x2c, 0x64, 0xbc, 0xaf, 0xe4, 0xb1, 0xd8, 0x0b, 0x24, 0x76, 0x4f, 0x8e, 0x77, 0xeb, 0xf5,
		0x9d, 0x43, 0xad, 0xd9, 0xe8, 0x68, 0xf6, 0xa7, 0x8e, 0xd6, 0xbb, 0xe3, 0xfd, 0xeb, 0x70, 0xcc,
		0xfd, 0xff, 0x5f, 0xba, 0x44, 0xb2, 0xb5, 0x61, 0x9b, 0x02, 0xee, 0x5f, 0xfa, 0x26, 0xef, 0x0b,
		0x78, 0x1e, 0x15, 0x38, 0x83, 0xf9, 0xa5, 0x44, 0x18, 0x0d, 0x7c, 0x2f, 0xb8, 0x5e, 0x69, 0x1e,
		0x74, 0x34, 0x8d, 0xbf, 0x26, 0xe3, 0x28, 0x36, 0x22, 0x16, 0x45, 0xfe, 0x98, 0x1b, 0xd3, 0x89,
		0x31, 0x60, 0x81, 0x77, 0x27, 0x4e, 0x1a, 0x3f, 0x7e, 0x79, 0x28, 0x3f, 0x28, 0x3f, 0x28, 0x3f,
		0x28, 0x3f, 0x28, 0xbf, 0x07, 0x1b, 0xf7, 0xaa, 0x7b, 0x02, 0x85, 0xdf, 0x9e, 0x80, 0x4b, 0x89,
		0xdd, 0xa9, 0x27, 0x50, 0x25, 0x95, 0xb1, 0x33, 0xaf, 0xac, 0x1d, 0x79, 0xa5, 0x6f, 0x86, 0x2a,
		0x6f, 0x13, 0x94, 0xc0, 0x9d, 0x77, 0xa5, 0xec, 0xb8, 0xcb, 0x20, 0xb5, 0xb7, 0xbb, 0xbb, 0xb3,
		0x0b, 0x58, 0x41, 0xba, 0x42, 0xba, 0x42, 0xba, 0x96, 0xfd, 0x9b, 0xb1, 0x05, 0xec, 0xd5, 0xfd,
		0xde, 0x37, 0x93, 0x20, 0xaa, 0x2c, 0x77, 0x1d, 0x16, 0x6a, 0x8a, 0x5e, 0xc0, 0x4e, 0xab, 0x42,
		0xf6, 0x4d, 0x14, 0x69, 0x7e, 0x2e, 0xc4, 0xf4, 0x5c, 0x58, 0xa7, 0x54, 0x0d, 0x9d, 0x52, 0x12,
		0xd5, 0x2c, 0xd0, 0x29, 0xb5, 0xc9, 0xe9, 0x0a, 0x9d, 0x52, 0xaf, 0x7d, 0x70, 0xe8, 0x94, 0x7a,
		0x45, 0x6e, 0x41, 0xbd, 0x5c, 0xea, 0x9c, 0x23, 0x3a, 0xf7, 0x94, 0x96, 0x83, 0x4a, 0xcb, 0x45,
		0xe5, 0xe4, 0x24, 0x31, 0x6a, 0x1d, 0x9d, 0x52, 0x39, 0x90, 0x6f, 0x74, 0x4a, 0xbd, 0xf4, 0x9a,
		0xe8, 0x94, 0x42, 0xa7, 0x94, 0xb8, 0x31, 0xa0, 0x53, 0xaa, 0x8c, 0xd4, 0x22, 0xee, 0x2a, 0x97,
		0x68, 0xf0, 0x59, 0x83, 0x1c, 0x1a, 0x7c, 0x20, 0x58, 0x20, 0x58, 0x20, 0x58, 0x20, 0x58, 0x64,
		0x17, 0x2c, 0x68, 0xf0, 0xa1, 0x44, 0xee, 0xd1, 0xe0, 0x23, 0x72, 0x00, 0x68, 0xf0, 0x29, 0x1a,
		0x52, 0x68, 0xf0, 0x41, 0x83, 0xcf, 0x06, 0x29, 0x2e, 0xf4, 0xa5, 0x3c, 0x72, 0x1d, 0xa9, 0xfa,
		0x52, 0x0a, 0xb4, 0xbe, 0xde, 0x34, 0x03, 0x60, 0x85, 0x3d, 0x55, 0xd7, 0x70, 0x23, 0x8f, 0xb1,
		0xea, 0xe9, 0x24, 0x88, 0x5c, 0x7b, 0x34, 0x69, 0x0e, 0x26, 0xbd, 0x64, 0x60, 0xb0, 0x58, 0x2d,
		0x0f, 0xaa, 0x65, 0x43, 0x34, 0x4f, 0xbf, 0xcb, 0xd7, 0xa3, 0x51, 0x25, 0x9b, 0xd7, 0x7c, 0x9b,
		0xf6, 0x0a, 0x69, 0xd2, 0x2b, 0xcc, 0xe8, 0xb5, 0x06, 0xa3, 0x57, 0x4a, 0xf5, 0x40, 0x18, 0xbd,
		0xca, 0x6c, 0xf4, 0xda, 0xf7, 0xc3, 0xfe, 0xd4, 0x8f, 0x8d, 0xb8, 0x88, 0x82, 0xdf, 0xbd, 0x4f,
		0xe2, 0xf2, 0x55, 0x8a, 0x31, 0x7a, 0xdd, 0x86, 0xd1, 0x2b, 0x8c, 0x5e, 0x65, 0x0a, 0x4b, 0x62,
		0xc2, 0x13, 0x0d, 0x09, 0x56, 0xd8, 0x72, 0x82, 0x88, 0x08, 0xb3, 0x42, 0x66, 0xea, 0x05, 0xfc,
		0x6e, 0x8b, 0x4f, 0x6f, 0x8a, 0x9b, 0x50, 0xce, 0xb8, 0x17, 0x87, 0x3e, 0x1f, 0x15, 0x5b, 0x3c,
		0xd9, 0x4e, 0x5e, 0x42, 0xa7, 0x6d, 0xb7, 0x1c, 0xd7, 0x69, 0xbb, 0xe9, 0x37, 0x45, 0xee, 0x30,
		0xa8, 0x26, 0x97, 0x3b, 0xea, 0xb6, 0xcd, 0xc6, 0xb1, 0xd9, 0x73, 0x74, 0x52, 0xf5, 0x2c, 0x67,
		0x6c, 0xa7, 0xc1, 0xa0, 0xc0, 0xb7, 0x71, 0xff, 0x64, 0x0a, 0xdb, 0x14, 0x33, 0xcb, 0x65, 0xab,
		0x2f, 0xfc, 0x50, 0xdb, 0xde, 0xcc, 0x8a, 0xd5, 0x3b, 0x09, 0x31, 0x57, 0xd8, 0xfe, 0x85, 0x82,
		0xf7, 0x2b, 0x14, 0xba, 0x3f, 0x41, 0x4f, 0x17, 0x3a, 0xf2, 0x8d, 0x17, 0x97, 0x20, 0xb4, 0x20,
		0xb4, 0x20, 0xb4, 0x20, 0xb4, 0xb9, 0x22, 0xbe, 0xb8, 0x06, 0xfe, 0x82, 0x1a, 0xf6, 0xe5, 0x4c,
		0x82, 0xd7, 0x2c, 0x08, 0xc6, 0xc6, 0xc4, 0x1b, 0x0c, 0x8a, 0xa0, 0xc0, 0xd9, 0xdb, 0x5a, 0xbd,
		0x0c, 0x12, 0x02, 0x12, 0x02, 0x12, 0x02, 0x12, 0x42, 0x71, 0x21, 0x06, 0x75, 0x8e, 0x32, 0xeb,
		0x1c, 0x3d, 0xa7, 0x6b, 0x1f, 0x17, 0x5f, 0xdf, 0x68, 0xb6, 0xdb, 0x3d, 0xab, 0xc8, 0xab, 0xd4,
		0x92, 0xab, 0x98, 0x0d, 0xb3, 0xe3, 0xd8, 0xe7, 0x85, 0x5e, 0x68, 0x27, 0xb9, 0x50, 0xc3, 0xee,
		0x99, 0x47, 0x4d, 0x0b, 0xc5, 0x9a, 0x87, 0xd1, 0x73, 0xf1, 0x02, 0x0a, 0xf3, 0x17, 0x99, 0xc9,
		0xea, 0xf9, 0xe3, 0x3f, 0xd4, 0x76, 0x0a, 0xbc, 0xca, 0x0c, 0xb3, 0xc5, 0x56, 0x9d, 0xe6, 0xd3,
		0x0f, 0xd5, 0x26, 0x99, 0x88, 0x76, 0xd6, 0xf1, 0x61, 0xf8, 0x05, 0x96, 0x9c, 0x56, 0xae, 0x02,
		0x9a, 0x0d, 0x9a, 0x0d, 0x9a, 0x0d, 0x9a, 0x4d, 0x25, 0xc2, 0xac, 0x10, 0xec, 0x8f, 0x1b, 0x90,
		0x13, 0x26, 0x5e, 0x14, 0xcd, 0xf6, 0x17, 0x14, 0x94, 0x0e, 0x16, 0x17, 0xc0, 0x0a, 0x04, 0x32,
		0x21, 0x32, 0x21, 0x32, 0x21, 0x32, 0x61, 0x8e, 0x88, 0xdf, 0xe4, 0x15, 0x08, 0xec, 0x0a, 0x28,
		0x76, 0x57, 0x40, 0x8e, 0xdb, 0x9b, 0xe4, 0x68, 0xc8, 0x8f, 0xfd, 0x1b, 0x16, 0x46, 0xf9, 0x77,
		0xe4, 0xcf, 0x7f, 0xaf, 0xe4, 0x2d, 0xf9, 0xdb, 0x68, 0xc9, 0xa7, 0x94, 0xb0, 0xd1, 0x92, 0x2f,
		0x75, 0x4b, 0xfe, 0x62, 0x56, 0x15, 0xd5, 0x8c, 0x3f, 0xfb, 0xfd, 0xc5, 0x68, 0x86, 0x2a, 0x34,
		0x03, 0x34, 0x03, 0x34, 0x83, 0x9c, 0x9a, 0xa1, 0x28, 0xcb, 0x6c, 0xbd, 0x1f, 0xf1, 0x89, 0x91,
		0xb2, 0xbb, 0x5b, 0x2f, 0x28, 0xfe, 0x2c, 0x81, 0xd5, 0xcb, 0x15, 0x7b, 0xa6, 0xc0, 0x76, 0xd1,
		0x67, 0x0a, 0x6c, 0xe3, 0x4c, 0x01, 0x09, 0x02, 0x9e, 0xf0, 0xc0, 0x27, 0x3c, 0x00, 0x8a, 0x0d,
		0x84, 0xc5, 0x04, 0xc4, 0x82, 0x02, 0x63, 0xf1, 0x45, 0x95, 0xb5, 0x19, 0x53, 0xb8, 0xdd, 0x99,
		0x00, 0x9b, 0x33, 0x41, 0xf6, 0x66, 0x02, 0x4c, 0xe8, 0x44, 0xda, 0x99, 0x89, 0xb6, 0x31, 0x2b,
		0xcd, 0x67, 0x4a, 0xbc, 0xbf, 0x94, 0x00, 0xbb, 0x32, 0xa1, 0x36, 0x65, 0x65, 0xd8, 0x93, 0x6d,
		0x12, 0x5c, 0x88, 0xda, 0x77, 0x5d, 0xc2, 0xbe, 0xeb, 0x91, 0xeb, 0x08, 0x3f, 0x3f, 0x90, 0xc6,
		0xf1, 0x6e, 0x41, 0x34, 0x31, 0x26, 0x5e, 0xdf, 0xe7, 0x23, 0x81, 0x02, 0xed, 0xb1, 0x8b, 0x42,
		0xa6, 0x41, 0xa6, 0x41, 0xa6, 0x41, 0xa6, 0x91, 0x93, 0x69, 0x7b, 0x75, 0x01, 0x32, 0xed, 0x23,
		0x64, 0x1a, 0x64, 0x1a, 0x64, 0x1a, 0x6d, 0x99, 0x56, 0xfd, 0x58, 0xaf, 0xef, 0xed, 0xd7, 0xeb,
		0xdb, 0xfb, 0x3b, 0xfb, 0xdb, 0x07, 0xbb, 0xbb, 0xd5, 0xbd, 0x2a, 0x54, 0x1b, 0x54, 0x1b, 0x54,
		0x9b, 0xda, 0xaa, 0x0d, 0xee, 0xc7, 0xe5, 0x34, 0x91, 0xcd, 0x7a, 0xa3, 0x0a, 0x39, 0xc2, 0x5d,
		0xce, 0x7e, 0xfa, 0x62, 0x8e, 0x6a, 0x2f, 0xf4, 0x88, 0xf6, 0xc2, 0xfb, 0x42, 0x6a, 0xe8, 0x0b,
		0x11, 0xa8, 0xbf, 0xd1, 0x17, 0xa2, 0x62, 0x8e, 0x40, 0x5f, 0xc8, 0xcb, 0x03, 0x1a, 0x0a, 0x8e,
		0xa5, 0x06, 0x3a, 0x51, 0x01, 0x4f, 0x78, 0xe0, 0x13, 0x1e, 0x00, 0xc5, 0x06, 0xc2, 0x62, 0x75,
		0x16, 0xfa, 0x42, 0x7e, 0x39, 0x7e, 0xa1, 0x2f, 0xe4, 0x57, 0xaa, 0x48, 0x28, 0x38, 0x2a, 0x51,
		0x32, 0x42, 0x5f, 0x08, 0xe0, 0x52, 0x76, 0x6e, 0x2a, 0xfe, 0xb7, 0x5f, 0xa2, 0xcd, 0x01, 0x6d,
		0x0e, 0x50, 0x1d, 0x50, 0x1d, 0x50, 0x1d, 0x50, 0x1d, 0x2f, 0x56, 0x1d, 0x68, 0x73, 0x80, 0xea,
		0x00, 0x8d, 0x84, 0xea, 0x78, 0x1e, 0x2a, 0x68, 0x73, 0x80, 0x08, 0xa1, 0x2f, 0x42, 0xb0, 0x6a,
		0x5f, 0xea, 0xaa, 0x7d, 0x01, 0x07, 0x5c, 0xc3, 0xff, 0x87, 0x18, 0x08, 0xca, 0x3f, 0x17, 0xd8,
		0x99, 0x8d, 0x43, 0x21, 0x23, 0xa2, 0x6f, 0xcc, 0x1f, 0x5d, 0xc7, 0x6c, 0x60, 0xb0, 0xfe, 0xcd,
		0x24, 0x7f, 0x3f, 0xa2, 0xd5, 0x5f, 0x0f, 0x5b, 0x22, 0x09, 0x8b, 0x15, 0xb0, 0x25, 0x2a, 0xa7,
		0xd8, 0x00, 0x5b, 0xa2, 0x37, 0x4d, 0x04, 0xd8, 0x12, 0xa1, 0xfd, 0xac, 0xf4, 0x10, 0x24, 0x2c,
		0x14, 0x89, 0x09, 0x49, 0x34, 0xc4, 0x4e, 0x61, 0xed, 0x67, 0xc1, 0xd8, 0x1b, 0x18, 0x57, 0x5e,
		0xe0, 0xf1, 0x74, 0x8d, 0x66, 0xc6, 0x5d, 0x04, 0x2c, 0x0b, 0x3d, 0x7a, 0xd9, 0x82, 0xf0, 0x53,
		0xa4, 0x57, 0x75, 0x76, 0x11, 0x6f, 0x1a, 0x8f, 0x8b, 0xa9, 0xca, 0x5f, 0x62, 0xbd, 0x4c, 0x74,
		0x1e, 0x10, 0x98, 0x0f, 0x44, 0xe5, 0x05, 0xe1, 0xf9, 0x41, 0x78, 0x9e, 0x10, 0x9b, 0x2f, 0x8a,
		0x2d, 0x13, 0x2a, 0xb0, 0x5e, 0xc6, 0xfd, 0x31, 0x17, 0xb0, 0x5c, 0x56, 0x3d, 0x28, 0xf0, 0x1a,
		0xf3, 0xc7, 0x45, 0x7e, 0xb9, 0x6c, 0x79, 0x11, 0x73, 0xa7, 0xa6, 0x0b, 0x58, 0x75, 0x99, 0xbf,
		0x9d, 0x7d, 0x01, 0x97, 0x12, 0xb3, 0xa8, 0x29, 0xee, 0x6d, 0x65, 0x37, 0x26, 0x72, 0x91, 0x33,
		0xbb, 0x68, 0xb6, 0x82, 0xf5, 0x41, 0xec, 0x75, 0xcb, 0x5a, 0xb6, 0xba, 0x9f, 0x23, 0xa2, 0x97,
		0xaf, 0x0a, 0x8e, 0xf5, 0x8f, 0x43, 0x4a, 0xe0, 0x62, 0xe8, 0x1a, 0xa4, 0xea, 0xb5, 0x83, 0xfa,
		0xc1, 0xde, 0x7e, 0xed, 0x60, 0x17, 0xd8, 0x12, 0x85, 0xad, 0x77, 0x6a, 0x5c, 0xe5, 0xf2, 0x1d,
		0xe1, 0x19, 0x28, 0x30, 0xc1, 0x33, 0x3e, 0xbd, 0x61, 0xe1, 0x6c, 0x21, 0x4c, 0x5c, 0x96, 0x2f,
		0xe2, 0x28, 0xdc, 0xb5, 0x6b, 0x15, 0x7a, 0x34, 0xee, 0x3a, 0xf3, 0x13, 0x71, 0x54, 0xee, 0xda,
		0x55, 0xd3, 0xa3, 0x73, 0xd3, 0x4a, 0x82, 0xc0, 0x9c, 0x90, 0x1e, 0xa4, 0xcb, 0xc7, 0x9c, 0xe9,
		0xef, 0x14, 0x4a, 0x77, 0x02, 0x8e, 0xa5, 0x7d, 0xbc, 0x06, 0x24, 0x34, 0xbb, 0xcc, 0xde, 0xdb,
		0xa1, 0x56, 0x55, 0x24, 0xce, 0xa3, 0xa5, 0x47, 0x44, 0x15, 0x00, 0xce, 0x25, 0x25, 0xfd, 0x46,
		0xf4, 0x40, 0xfd, 0x72, 0xfb, 0xcb, 0x4a, 0x17, 0x05, 0x0c, 0x4c, 0xf2, 0x22, 0x88, 0x30, 0x30,
		0xc1, 0x0a, 0xf2, 0xb3, 0xaf, 0x13, 0x2b, 0xc8, 0xea, 0xa5, 0x0a, 0xac, 0x20, 0xbf, 0xe5, 0xe1,
		0x61, 0x05, 0xf9, 0x27, 0x71, 0x1f, 0x2b, 0xc8, 0xa5, 0xe6, 0x03, 0x51, 0x79, 0x41, 0x78, 0x7e,
		0x10, 0x9e, 0x27, 0xc4, 0xe6, 0x8b, 0x62, 0x55, 0x29, 0x56, 0x90, 0x7f, 0x99, 0xb6, 0x62, 0x05,
		0xf9, 0x05, 0x2f, 0x05, 0x2b, 0xc8, 0xf2, 0xbf, 0xad, 0xec, 0xc6, 0xb0, 0x82, 0x2c, 0x72, 0x00,
		0x58, 0x41, 0x2e, 0x1a, 0x52, 0x58, 0x41, 0xc6, 0x0a, 0xf2, 0x6b, 0x35, 0x10, 0x56, 0x90, 0x7f,
		0x29, 0xc1, 0x63, 0x05, 0x39, 0x2f, 0xe6, 0x87, 0x15, 0x64, 0xda, 0xe9, 0x0e, 0x2b, 0xc8, 0x14,
		0xe3, 0x3c, 0x56, 0x90, 0x8b, 0x1d, 0x2f, 0x16, 0x44, 0xa5, 0x58, 0x10, 0x85, 0x37, 0x44, 0xd9,
		0x98, 0x90, 0x06, 0x0b, 0xe5, 0x5b, 0x44, 0xfc, 0x77, 0x3e, 0x1c, 0x2b, 0x19, 0x8d, 0x2c, 0x46,
		0x11, 0xef, 0x4a, 0xc4, 0x9e, 0xfe, 0x85, 0xdd, 0x25, 0x0f, 0x30, 0x7b, 0x63, 0x86, 0x3f, 0x78,
		0xe3, 0x6b, 0xd2, 0x9b, 0x7e, 0x14, 0x9b, 0x71, 0x9c, 0xcf, 0x2a, 0x9e, 0x7e, 0xea, 0x73, 0x2b,
		0x60, 0x37, 0x8c, 0xe7, 0xa5, 0x66, 0xf5, 0x53, 0xef, 0xfb, 0xd2, 0x6f, 0x2c, 0xc6, 0x00, 0x4b,
		0x6f, 0x87, 0x03, 0x16, 0xb2, 0xc1, 0x51, 0xf2, 0x74, 0xf9, 0x34, 0x08, 0xf2, 0xfc, 0x95, 0x67,
		0x11, 0x0b, 0x73, 0x91, 0xd7, 0x6f, 0x05, 0x4f, 0xce, 0x01, 0xab, 0xc4, 0x40, 0x95, 0x43, 0x68,
		0x7a, 0x5d, 0x48, 0x7a, 0x5b, 0x14, 0x7a, 0x7d, 0xec, 0x78, 0xdd, 0xbf, 0x7c, 0x25, 0x60, 0xf2,
		0x02, 0x8a, 0x70, 0x80, 0xbc, 0xee, 0xed, 0xbc, 0xfc, 0xd9, 0xbe, 0xe2, 0xb9, 0xea, 0x01, 0xbb,
		0x65, 0x41, 0xf4, 0xea, 0xe7, 0x79, 0xdf, 0x9f, 0x30, 0xfb, 0x3d, 0xaf, 0x7c, 0xb3, 0x6f, 0xeb,
		0xa8, 0x7a, 0xf3, 0xca, 0x79, 0x1e, 0x2b, 0xe3, 0x39, 0xae, 0x7c, 0xe7, 0xb5, 0xb2, 0x9d, 0xfb,
		0xca, 0x75, 0xee, 0x2b, 0xd3, 0xf9, 0xae, 0x3c, 0x8b, 0x8d, 0x46, 0x6f, 0xed, 0x30, 0x9a, 0x4d,
		0x99, 0xb7, 0xbf, 0xe4, 0x95, 0x19, 0xf8, 0xd6, 0x17, 0x9c, 0x4f, 0x6b, 0x63, 0x6e, 0xad, 0x2c,
		0x79, 0xb6, 0xac, 0x14, 0xd0, 0x9a, 0x92, 0x77, 0x0b, 0x4a, 0x61, 0xad, 0x26, 0x85, 0xb5, 0x94,
		0x14, 0xd3, 0x3a, 0x52, 0xae, 0x98, 0xc9, 0xab, 0x75, 0x50, 0xf7, 0xa6, 0xf1, 0x35, 0xe3, 0xb1,
		0xdf, 0xcf, 0x57, 0x8d, 0x67, 0x40, 0x7e, 0xf0, 0xfb, 0x61, 0xbd, 0x27, 0x51, 0x68, 0x28, 0x2a,
		0x44, 0x14, 0x1e, 0x2a, 0x0a, 0x0f, 0x19, 0xc5, 0x86, 0x0e, 0x39, 0x6b, 0x72, 0xb0, 0xde, 0xd3,
		0x60, 0xbd, 0x27, 0x2a, 0xe4, 0x14, 0x1d, 0x7a, 0x84, 0x85, 0x20, 0x61, 0xa1, 0x48, 0x4c, 0x48,
		0xca, 0x37, 0x34, 0xe5, 0x1c, 0xa2, 0x0a, 0x0b, 0x55, 0x2b, 0x6c, 0xc8, 0xb8, 0x19, 0x0f, 0x58,
		0xf1, 0x9b, 0x25, 0xee, 0x2f, 0x85, 0x9d, 0x00, 0xa2, 0x03, 0x9b, 0xc0, 0x00, 0x27, 0x2a, 0xd0,
		0x09, 0x0f, 0x78, 0xc2, 0x03, 0x9f, 0xd8, 0x00, 0x58, 0x4c, 0x20, 0x2c, 0x28, 0x20, 0x66, 0x8f,
		0x46, 0xdc, 0x4e, 0x00, 0x7f, 0x90, 0xa8, 0xba, 0xf8, 0x2e, 0x64, 0x43, 0x11, 0xfb, 0x01, 0x0a,
		0x6c, 0x2e, 0xd5, 0xed, 0xf9, 0xad, 0x1c, 0x79, 0x91, 0x80, 0xf9, 0xb9, 0x78, 0x80, 0xe6, 0x99,
		0xf3, 0xd9, 0x3d, 0x6d, 0x37, 0xac, 0xa2, 0xe7, 0x67, 0xda, 0xa8, 0x1b, 0x09, 0x69, 0xa5, 0x17,
		0xd4, 0xc6, 0xb7, 0x78, 0x84, 0xa7, 0x8d, 0x5d, 0x5d, 0x85, 0xf3, 0x90, 0x04, 0x3f, 0x36, 0xc7,
		0xfa, 0xea, 0xe8, 0xc4, 0x9b, 0xbe, 0x2e, 0x11, 0xf0, 0x35, 0xd8, 0x86, 0x94, 0xfd, 0x0a, 0x66,
		0x24, 0x7e, 0xe2, 0x45, 0xd1, 0x9c, 0x72, 0x89, 0xd0, 0x0c, 0xd9, 0xe5, 0xa0, 0x1b, 0xa0, 0x1b,
		0xa0, 0x1b, 0xa0, 0x1b, 0x48, 0xe9, 0x86, 0x70, 0x3c, 0x8d, 0x7d, 0x3e, 0x2a, 0x3a, 0x8a, 0xad,
		0x88, 0x87, 0x8f, 0x48, 0xe9, 0x48, 0xe9, 0x2f, 0x4a, 0xe9, 0x71, 0x91, 0xf3, 0x61, 0x35, 0x9d,
		0xa7, 0x97, 0x42, 0x2a, 0x47, 0x2a, 0x47, 0x2a, 0x47, 0x2a, 0x27, 0x95, 0xca, 0x51, 0x02, 0x7c,
		0xe3, 0x03, 0x4c, 0x4b, 0x80, 0xce, 0x1f, 0x1d, 0x94, 0x00, 0x5f, 0xfd, 0x08, 0xbf, 0x58, 0x7f,
		0x1c, 0x7f, 0x36, 0xed, 0x16, 0xea, 0x80, 0x2f, 0x7f, 0x76, 0x3d, 0xfb, 0xb4, 0xd3, 0xb4, 0xdc,
		0x2f, 0xd6, 0x1f, 0xa8, 0x06, 0xaa, 0x11, 0xfb, 0x21, 0x1d, 0x4a, 0x95, 0x0e, 0x03, 0x3f, 0xf2,
		0xae, 0x02, 0x66, 0xf4, 0x23, 0x3e, 0x29, 0x5e, 0x3d, 0xac, 0x5c, 0x8d, 0xb2, 0xc9, 0x62, 0xba,
		0xbb, 0x0b, 0x2e, 0x8b, 0x10, 0x56, 0x10, 0x56, 0x10, 0x56, 0x10, 0x56, 0x9a, 0x7e, 0x35, 0x1e,
		0x07, 0xcc, 0x13, 0xe2, 0xb3, 0x58, 0x05, 0xbf, 0x01, 0xbf, 0x79, 0x29, 0xbf, 0x09, 0x22, 0x81,
		0xf4, 0x26, 0xb9, 0x18, 0xd8, 0x0d, 0xd8, 0x0d, 0xd8, 0x0d, 0xd8, 0x0d, 0xd8, 0x0d, 0xd8, 0x0d,
		0xd8, 0x0d, 0xd8, 0x4d, 0xa1, 0xec, 0x66, 0x22, 0xb4, 0x7a, 0x33, 0x41, 0xf5, 0x06, 0xfc, 0x06,
		0xfc, 0x06, 0xfc, 0x06, 0xfc, 0x06, 0xfc, 0x06, 0xfc, 0x06, 0xfc, 0xa6, 0x30, 0x7e, 0xc3, 0x78,
		0x42, 0x38, 0x04, 0x74, 0xa9, 0x2f, 0x2e, 0x04, 0x56, 0x03, 0x56, 0x03, 0x56, 0x03, 0x56, 0x03,
		0x56, 0x03, 0x56, 0x03, 0x56, 0x03, 0x56, 0x53, 0x08, 0xab, 0xf9, 0x8b, 0xdd, 0xf5, 0xaf, 0xbd,
		0x02, 0xcf, 0xd4, 0xca, 0x66, 0x40, 0x76, 0x25, 0xe4, 0x6f, 0xe4, 0x6f, 0xe4, 0x6f, 0xe4, 0x6f,
		0x52, 0xf9, 0x7b, 0x11, 0xbd, 0x0c, 0x41, 0xdd, 0xfa, 0x05, 0x9e, 0x11, 0xa9, 0x77, 0x32, 0x57,
		0xec, 0xbe, 0xb1, 0xb8, 0xaf, 0xc3, 0xc5, 0x37, 0xd1, 0xa3, 0x9f, 0xae, 0x7c, 0x38, 0x33, 0x8e,
		0x5b, 0xf9, 0x28, 0xf5, 0x32, 0x07, 0xef, 0x50, 0x94, 0x77, 0xe0, 0x7c, 0x9c, 0xc2, 0x9d, 0xe4,
		0x67, 0xde, 0xea, 0xb3, 0x3f, 0x2a, 0xab, 0xa6, 0xaf, 0x95, 0xb9, 0x51, 0xa3, 0xac, 0x27, 0xe3,
		0xe4, 0x7a, 0x56, 0x8b, 0x17, 0xb3, 0xe2, 0x1c, 0x2f, 0x67, 0xbf, 0x9e, 0x98, 0xe1, 0x65, 0x0d,
		0x86, 0x97, 0x02, 0x79, 0x25, 0x0c, 0x2f, 0x55, 0xcc, 0x11, 0x30, 0xbc, 0x84, 0x80, 0x86, 0x80,
		0x86, 0x80, 0x86, 0x80, 0x2e, 0x4d, 0x40, 0x63, 0xb7, 0xfb, 0x1b, 0x1f, 0x20, 0x0c, 0x2f, 0xdf,
		0xfc, 0x08, 0x61, 0x78, 0xf9, 0xaa, 0xc7, 0x06, 0xc3, 0xcb, 0x12, 0x02, 0x3e, 0xfc, 0x1b, 0x9f,
		0xa0, 0xc0, 0xf0, 0x6f, 0x04, 0x0d, 0x06, 0x0d, 0x06, 0x0d, 0xa6, 0x49, 0x83, 0x15, 0xf2, 0x6f,
		0x84, 0x1d, 0xe1, 0x23, 0xd9, 0x09, 0x76, 0x84, 0xc8, 0x4c, 0xc8, 0x4c, 0xc8, 0x4c, 0x28, 0xd0,
		0x6c, 0x66, 0x81, 0x06, 0x76, 0x84, 0x6f, 0x79, 0x84, 0xb0, 0x23, 0x7c, 0xfd, 0xb3, 0x83, 0x1d,
		0x21, 0x6a, 0x35, 0x3f, 0xc3, 0x09, 0xdc, 0xf5, 0x5e, 0x75, 0x11, 0xec, 0x64, 0x82, 0x4e, 0x80,
		0x4e, 0x80, 0x4e, 0x80, 0x4e, 0x50, 0x66, 0x27, 0x13, 0xcc, 0xe2, 0x9e, 0xca, 0xd6, 0x30, 0x8b,
		0x43, 0xb2, 0x46, 0xb2, 0x46, 0xb2, 0x46, 0xb2, 0x46, 0xb2, 0x46, 0xb2, 0x7e, 0x79, 0xb2, 0x86,
		0xf7, 0x19, 0xd2, 0x35, 0xd2, 0x35, 0xd2, 0x35, 0xd2, 0x35, 0xd2, 0x35, 0xd2, 0xb5, 0xb4, 0xe9,
		0x1a, 0x56, 0x5e, 0x48, 0xd2, 0x48, 0xd2, 0x48, 0xd2, 0x48, 0xd2, 0x48, 0xd2, 0x48, 0xd2, 0x92,
		0x26, 0x69, 0x38, 0x53, 0x21, 0x1d, 0x21, 0x1d, 0x21, 0x1d, 0x21, 0x1d, 0xfd, 0x5a, 0xf4, 0x82,
		0x33, 0x95, 0x68, 0x67, 0x2a, 0x18, 0x2d, 0xe5, 0xfa, 0xfb, 0xcb, 0x37, 0x5a, 0x9a, 0xf9, 0x03,
		0xc9, 0xea, 0xb3, 0xf4, 0x4e, 0x22, 0x50, 0x14, 0x05, 0x86, 0xf2, 0x41, 0xa0, 0xe7, 0x6a, 0x67,
		0x15, 0x4e, 0xfb, 0x31, 0x9f, 0x07, 0xea, 0xd6, 0x6c, 0x74, 0xf6, 0x7c, 0x70, 0x6e, 0x67, 0x3e,
		0x24, 0xd7, 0x8e, 0xfc, 0xc8, 0x6d, 0x26, 0x63, 0x71, 0xcd, 0xd5, 0xb1, 0xbc, 0x93, 0x03, 0x38,
		0x39, 0x80, 0x46, 0xef, 0x2f, 0x58, 0x6a, 0x3e, 0x60, 0xc9, 0xd2, 0xdf, 0xfc, 0xf7, 0xe6, 0x04,
		0xeb, 0x7c, 0xcd, 0xbc, 0x72, 0xa7, 0xe6, 0x45, 0x50, 0xf1, 0x02, 0xa9, 0x77, 0x51, 0x54, 0xbb,
		0x70, 0x6a, 0x5d, 0x38, 0x95, 0x2e, 0x96, 0x3a, 0xcb, 0x95, 0x2a, 0xf2, 0x36, 0xdf, 0xd2, 0x57,
		0x03, 0xb6, 0xd1, 0xbf, 0x66, 0xfd, 0xbf, 0x8a, 0x33, 0x0d, 0x7c, 0xf4, 0x6a, 0x79, 0xfb, 0x93,
		0x15, 0x58, 0xc8, 0xd7, 0x13, 0xf4, 0xe6, 0x4b, 0x6a, 0x2e, 0x8b, 0xb1, 0x50, 0xdc, 0x2e, 0xca,
		0x42, 0x71, 0x1b, 0x16, 0x8a, 0x02, 0x0b, 0x20, 0xb0, 0x50, 0x54, 0x51, 0xfd, 0x15, 0x56, 0xd0,
		0x10, 0x50, 0x57, 0x2f, 0xa8, 0x9e, 0x4e, 0x4d, 0x60, 0x0b, 0xb3, 0xa2, 0x96, 0xd3, 0x5c, 0xb8,
		0xa8, 0x55, 0xff, 0x82, 0x57, 0xfb, 0x8b, 0x25, 0x07, 0x05, 0xac, 0xee, 0x83, 0x1d, 0x80, 0x1d,
		0x80, 0x1d, 0x80, 0x1d, 0x80, 0x1d, 0xe4, 0x3a, 0x4a, 0xf6, 0x3d, 0x0e, 0x3d, 0x63, 0xca, 0xa3,
		0x38, 0xc9, 0x32, 0x05, 0x95, 0xe0, 0x63, 0x2f, 0x9e, 0x16, 0xe7, 0x2c, 0x21, 0x60, 0x35, 0x6c,
		0xc0, 0x26, 0x21, 0xeb, 0x7b, 0x31, 0x1b, 0x28, 0xb6, 0x84, 0x3c, 0x7f, 0x35, 0x2a, 0x2f, 0x21,
		0x2f, 0xbd, 0xbb, 0x8d, 0x77, 0x80, 0xb8, 0x84, 0x52, 0xd9, 0x5c, 0xa5, 0x92, 0xae, 0x4b, 0x19,
		0x7c, 0x7a, 0x73, 0xc5, 0xc2, 0xe2, 0xe4, 0xca, 0xca, 0x55, 0xc0, 0xd9, 0xc1, 0xd9, 0xc1, 0xd9,
		0xc1, 0xd9, 0xa9, 0x44, 0x98, 0xe5, 0x28, 0x53, 0x80, 0x95, 0x9c, 0xde, 0xf5, 0xf8, 0x88, 0x51,
		0x24, 0xc2, 0xa7, 0x3e, 0x2f, 0x9e, 0x97, 0xa6, 0x0e, 0x74, 0xf9, 0x1f, 0x7a, 0xb5, 0x76, 0x9d,
		0x93, 0xd0, 0xeb, 0x27, 0x2c, 0xa3, 0xe1, 0x8f, 0xfc, 0x38, 0x2a, 0xae, 0xc5, 0xf5, 0x1e, 0xb9,
		0x6c, 0xe4, 0xc5, 0xfe, 0x6d, 0x72, 0x6f, 0x69, 0x65, 0xac, 0x38, 0x1e, 0x5a, 0xa0, 0x3a, 0x39,
		0xf5, 0xbe, 0x8b, 0x83, 0x40, 0x0d, 0x10, 0x80, 0x14, 0x81, 0x14, 0x51, 0x55, 0x8a, 0xdc, 0xb0,
		0x38, 0xf4, 0xfb, 0x46, 0x14, 0xdf, 0x05, 0x05, 0x1e, 0xcc, 0xb8, 0x72, 0x15, 0x48, 0x11, 0x48,
		0x11, 0x48, 0x11, 0x48, 0x11, 0x2a, 0x11, 0x66, 0x39, 0xca, 0x54, 0xeb, 0x05, 0xfc, 0x6e, 0x8b,
		0x4f, 0x6f, 0x8a, 0x9b, 0x50, 0xce, 0xb8, 0x17, 0x87, 0x3e, 0x1f, 0x15, 0xbb, 0x5b, 0x65, 0x3b,
		0xed, 0x80, 0x36, 0xbb, 0xdd, 0xf6, 0x7f, 0xdd, 0x53, 0xcb, 0xe9, 0xda, 0xc7, 0x45, 0xd6, 0xe7,
		0xab, 0xc9, 0xd5, 0xfe, 0x6b, 0x37, 0xac, 0xc5, 0xb5, 0x68, 0xed, 0x1d, 0x1a, 0xdb, 0x69, 0x34,
		0x28, 0x72, 0xb9, 0x64, 0xe5, 0x4d, 0x14, 0x4a, 0xaa, 0x57, 0xde, 0xc3, 0xa1, 0x56, 0xc5, 0x5e,
		0x1c, 0xb0, 0xde, 0x42, 0x58, 0x2f, 0xf6, 0xc7, 0x14, 0xb3, 0x3f, 0x26, 0xcf, 0xe3, 0xe7, 0xe5,
		0xd8, 0x8b, 0x32, 0x0a, 0xbd, 0x3e, 0x1b, 0x4e, 0x03, 0x23, 0x64, 0x51, 0xec, 0x85, 0x71, 0xfe,
		0xbb, 0x52, 0xd6, 0xae, 0x80, 0xfd, 0x29, 0x12, 0x8a, 0x16, 0xec, 0x4f, 0x29, 0x47, 0x94, 0x28,
		0xbe, 0x3f, 0x25, 0xe7, 0xad, 0x6e, 0x6b, 0x13, 0x21, 0xd7, 0x2d, 0x6f, 0x05, 0x85, 0x16, 0xd4,
		0x49, 0x50, 0x27, 0x41, 0x9d, 0x24, 0x6f, 0xda, 0x9f, 0x77, 0xa8, 0xca, 0x7e, 0x31, 0x1c, 0xf1,
		0x5e, 0x70, 0x11, 0x38, 0xe2, 0x89, 0x0a, 0xf2, 0x22, 0x82, 0xbd, 0xc0, 0xa0, 0x2f, 0x2a, 0xf8,
		0x0b, 0x4f, 0x02, 0xc2, 0x93, 0x81, 0xd8, 0xa4, 0x50, 0x5c, 0x95, 0x49, 0x83, 0x23, 0xde, 0xcb,
		0xd8, 0x69, 0x95, 0xd4, 0x2b, 0x28, 0xb8, 0x4c, 0x27, 0xbe, 0x5c, 0x57, 0xdc, 0x4c, 0x28, 0xc2,
		0x42, 0x70, 0x5e, 0x7c, 0x31, 0x62, 0xff, 0x46, 0xc0, 0xf9, 0xcf, 0x2b, 0x57, 0xa3, 0xcc, 0x6f,
		0x76, 0xb6, 0x41, 0x6e, 0x40, 0x6e, 0x40, 0x6e, 0x40, 0x6e, 0x40, 0x6e, 0x34, 0x7d, 0xea, 0xf3,
		0xb8, 0xba, 0x27, 0x80, 0xdb, 0xec, 0x15, 0x78, 0x89, 0x62, 0xdb, 0x99, 0x17, 0x5f, 0xc5, 0x9f,
		0x78, 0x2c, 0xa4, 0xbd, 0x39, 0xbb, 0xd8, 0xa2, 0xc7, 0x75, 0xfb, 0x83, 0x98, 0xeb, 0x89, 0xee,
		0x75, 0xbd, 0xc7, 0xba, 0xa8, 0x9e, 0xd7, 0x82, 0xc3, 0xc2, 0x2a, 0x54, 0x04, 0xb4, 0x41, 0xaf,
		0x41, 0x65, 0x6f, 0x77, 0x77, 0x67, 0x17, 0x70, 0x21, 0x91, 0x9b, 0x8a, 0xff, 0xed, 0x97, 0xa4,
		0x72, 0xaa, 0x80, 0x1d, 0xe6, 0x4b, 0xd2, 0x6c, 0xc8, 0x42, 0xc6, 0xfb, 0x4a, 0x24, 0xa5, 0x05,
		0x55, 0xe8, 0x9e, 0x1c, 0x6b, 0xbb, 0x3b, 0xdb, 0x7b, 0x87, 0x5a, 0x77, 0xa6, 0x05, 0xb5, 0x9e,
		0x3f, 0xe2, 0x5e, 0xe0, 0xf3, 0x91, 0x36, 0x1c, 0x87, 0x9a, 0xdd, 0x33, 0xec, 0xde, 0xff, 0x47,
		0x4b, 0x7f, 0x6c, 0xff, 0xd1, 0x1f, 0xbb, 0xe0, 0xd9, 0xcf, 0xe9, 0x02, 0x42, 0xa4, 0x20, 0xaa,
		0xfe, 0x18, 0x65, 0xbf, 0x07, 0x80, 0xa0, 0xa0, 0x25, 0x9a, 0xbd, 0x3f, 0xca, 0xe2, 0xf3, 0x45,
		0x08, 0xe2, 0xae, 0x12, 0x71, 0x17, 0x55, 0xc2, 0x92, 0x7e, 0x23, 0x1c, 0xd2, 0x9f, 0x6d, 0xfe,
		0x7b, 0xd8, 0xc8, 0x96, 0x6b, 0x37, 0x60, 0xfe, 0x6f, 0xf5, 0x47, 0xae, 0xee, 0xdd, 0x5e, 0x5c,
		0xe0, 0x9e, 0xa7, 0xd9, 0xaf, 0x27, 0xd6, 0xc4, 0x53, 0x43, 0x13, 0x8f, 0x40, 0xfe, 0x84, 0x26,
		0x1e, 0x15, 0xb3, 0x04, 0x9a, 0x78, 0x9e, 0x7b, 0x40, 0x68, 0xe2, 0xf9, 0x59, 0x70, 0xc7, 0x3a,
		0x57, 0xa9, 0x41, 0x5f, 0xb4, 0x78, 0xc6, 0x3a, 0x17, 0x05, 0xd5, 0x89, 0x26, 0x9e, 0x17, 0xb0,
		0xd3, 0x2a, 0x7a, 0x52, 0xd0, 0x93, 0xf2, 0xb2, 0x8b, 0xa0, 0x27, 0x05, 0xb9, 0x1a, 0xb9, 0x1a,
		0xb9, 0x1a, 0xb9, 0x1a, 0x3d, 0x29, 0x2f, 0xfa, 0x42, 0x4f, 0xca, 0xdb, 0xae, 0x87, 0x9e, 0x94,
		0x5c, 0xa1, 0x82, 0x9e, 0x14, 0x65, 0xe0, 0x82, 0xb5, 0x51, 0x01, 0x39, 0x15, 0x3d, 0x29, 0x6f,
		0xa4, 0x0a, 0xe8, 0x49, 0xf9, 0x75, 0xca, 0x8e, 0x9e, 0x14, 0xf4, 0xa4, 0x50, 0x8b, 0xbb, 0x68,
		0xb1, 0xc8, 0xf5, 0xf7, 0xcb, 0xd0, 0x62, 0x81, 0x63, 0xe8, 0xcb, 0x86, 0x83, 0x0c, 0x30, 0x28,
		0xf7, 0x20, 0xfa, 0x4f, 0xf3, 0xd1, 0xcc, 0x63, 0xbd, 0x4a, 0xee, 0x5f, 0x85, 0x9c, 0xae, 0x52,
		0xe4, 0x99, 0x07, 0x39, 0x17, 0x93, 0xe1, 0xfa, 0x05, 0xd7, 0xaf, 0x5f, 0xa0, 0x85, 0x8a, 0xbb,
		0x7e, 0xe5, 0x5e, 0xac, 0x5d, 0x8a, 0x00, 0xde, 0x30, 0x64, 0xc3, 0x3c, 0x11, 0xbb, 0x58, 0x38,
		0xdd, 0xcf, 0xf1, 0x77, 0x76, 0xe6, 0xc9, 0x6d, 0x6b, 0x6b, 0xde, 0xd3, 0x59, 0x59, 0x09, 0x5d,
		0x2a, 0x05, 0x7c, 0x9f, 0xff, 0x65, 0xa4, 0xa4, 0xca, 0x18, 0x78, 0xb1, 0x77, 0xe5, 0x45, 0xac,
		0x80, 0xb8, 0xff, 0xc8, 0x45, 0x24, 0x37, 0x7d, 0xac, 0x21, 0xfc, 0x23, 0xfc, 0x6f, 0x68, 0xf8,
		0xcf, 0xdd, 0xf4, 0x31, 0x88, 0x26, 0x05, 0x1e, 0xd5, 0x17, 0x4d, 0x60, 0xf7, 0x88, 0x4e, 0xf1,
		0x12, 0x83, 0x8f, 0xf0, 0x92, 0x25, 0x3a, 0xc5, 0x0b, 0xec, 0x14, 0x0f, 0xa2, 0x89, 0xe1, 0x0b,
		0x68, 0x14, 0x9f, 0x5f, 0x07, 0x3d, 0x56, 0xa2, 0x43, 0x9a, 0xc0, 0xd0, 0x26, 0x2a, 0xc4, 0x09,
		0x0f, 0x75, 0xc2, 0x43, 0x9e, 0xd8, 0xd0, 0x57, 0x4c, 0x08, 0x2c, 0x28, 0x14, 0x16, 0x27, 0xdb,
		0x05, 0xca, 0x78, 0x11, 0xb2, 0xfe, 0x67, 0x32, 0x3f, 0x55, 0xa7, 0x95, 0x79, 0x4c, 0xde, 0xe0,
		0x16, 0xec, 0x62, 0x36, 0x76, 0xae, 0x01, 0xa8, 0x88, 0x0d, 0x9e, 0x05, 0xd3, 0x77, 0xe4, 0x3e,
		0xe4, 0x3e, 0xe4, 0x3e, 0x59, 0x73, 0x5f, 0x51, 0x72, 0x20, 0xbb, 0x40, 0xff, 0x9a, 0xf5, 0xff,
		0x8a, 0x0a, 0x3c, 0x6c, 0x6e, 0x6d, 0x6a, 0x66, 0x57, 0x2c, 0x18, 0x55, 0xc5, 0x4a, 0x05, 0x61,
		0x61, 0x53, 0x64, 0xf8, 0x2c, 0x21, 0x8c, 0x8a, 0x0e, 0xa7, 0xa5, 0x85, 0xd5, 0xd2, 0xc2, 0x6b,
		0x39, 0x61, 0xb6, 0xd8, 0x70, 0x5b, 0x70, 0xd8, 0x15, 0x27, 0x3d, 0xd6, 0x66, 0x5c, 0xe1, 0xdb,
		0x3c, 0x1e, 0xc6, 0xc7, 0x3d, 0x01, 0x97, 0x12, 0xb3, 0xed, 0x63, 0xf1, 0x25, 0x26, 0x80, 0x68,
		0xa2, 0xb7, 0x81, 0x64, 0x17, 0x15, 0xbc, 0x1d, 0x24, 0xbb, 0x6e, 0x59, 0x7d, 0xfe, 0xf7, 0x73,
		0x44, 0x74, 0xbf, 0xbf, 0xa0, 0x30, 0xb3, 0x0a, 0x29, 0x81, 0xdb, 0x45, 0xd6, 0x20, 0x25, 0x70,
		0xdb, 0x08, 0x60, 0x55, 0x70, 0x6e, 0x14, 0x77, 0x95, 0x4b, 0xa2, 0xed, 0xd9, 0x05, 0x4e, 0x6b,
		0x7d, 0x18, 0x78, 0xa3, 0x48, 0x9c, 0xa8, 0x9a, 0x5d, 0x0e, 0x8a, 0x0a, 0x8a, 0x0a, 0x8a, 0x0a,
		0x8a, 0x0a, 0x8a, 0x6a, 0xc5, 0xb9, 0x6c, 0x7a, 0xc3, 0xc2, 0xd9, 0x86, 0x01, 0x71, 0xb2, 0xaa,
		0x5a, 0x17, 0x70, 0x2d, 0x8b, 0x0b, 0x28, 0xdc, 0xdd, 0xbf, 0xba, 0x71, 0x2f, 0x0e, 0x7d, 0x3e,
		0x12, 0x4a, 0x4f, 0xf5, 0xed, 0xe4, 0x1d, 0x76, 0xcc, 0xae, 0x63, 0x3b, 0x76, 0xbb, 0xe5, 0x76,
		0xad, 0x8e, 0x69, 0x77, 0x75, 0x81, 0x84, 0xbc, 0x9a, 0x0c, 0xc0, 0x74, 0x1c, 0xf3, 0xf8, 0xb3,
		0xd5, 0x70, 0xad, 0x6e, 0xb7, 0x2d, 0xf4, 0xf2, 0xb5, 0xd5, 0xcb, 0x7f, 0xed, 0x58, 0xad, 0x9e,
		0x25, 0x72, 0x00, 0x3b, 0x2b, 0x03, 0x68, 0x58, 0x4d, 0xf3, 0x0f, 0x91, 0x97, 0xaf, 0x3f, 0xb8,
		0xfc, 0x89, 0x79, 0xd6, 0x74, 0x44, 0x0e, 0x60, 0x37, 0x19, 0x40, 0xfb, 0xdc, 0xea, 0x36, 0xdb,
		0x66, 0x43, 0x7f, 0xa7, 0x90, 0xde, 0xd4, 0x9d, 0xb1, 0xcd, 0x63, 0xb1, 0xd3, 0x79, 0xed, 0x4d,
		0x1e, 0x6a, 0xf5, 0x0f, 0xa5, 0x5c, 0x3e, 0xc1, 0xf1, 0xa1, 0xb6, 0x53, 0xc6, 0xc5, 0x67, 0x41,
		0xa4, 0xb0, 0xa5, 0xdc, 0x67, 0x2e, 0x3e, 0x0f, 0x21, 0xb9, 0x3b, 0xfb, 0xfe, 0xf4, 0xf2, 0xd9,
		0x04, 0x3a, 0xd4, 0x04, 0x16, 0x18, 0xd6, 0x13, 0xc7, 0xa1, 0xb6, 0xad, 0x88, 0xea, 0xa6, 0xcd,
		0x03, 0x9b, 0x7e, 0x14, 0x9b, 0x71, 0x1c, 0x8a, 0xe1, 0x82, 0xa7, 0x3e, 0xb7, 0x02, 0x96, 0x50,
		0x75, 0x41, 0x05, 0x26, 0xfd, 0xd4, 0xfb, 0xbe, 0x74, 0xc5, 0xea, 0xc7, 0x7a, 0x7d, 0x6f, 0xbf,
		0x5e, 0xdf, 0xde, 0xdf, 0xd9, 0xdf, 0x3e, 0xd8, 0xdd, 0xad, 0xee, 0x55, 0x05, 0xcc, 0x02, 0xbd,
		0x1d, 0x0e, 0x58, 0xc8, 0x06, 0x47, 0x77, 0xfa, 0xa1, 0xc6, 0xa7, 0x41, 0x20, 0xf2, 0x92, 0x67,
		0x51, 0xba, 0xd5, 0xb2, 0xf8, 0x8a, 0x1a, 0xcd, 0xfa, 0x90, 0x3f, 0x30, 0x02, 0xc6, 0x47, 0x69,
		0xa3, 0x96, 0xa0, 0x1a, 0xd1, 0xfd, 0x25, 0x51, 0x27, 0x42, 0x9d, 0x08, 0x75, 0x22, 0xd4, 0x89,
		0x50, 0x27, 0x7a, 0xb0, 0xf2, 0xfe, 0x51, 0x60, 0x85, 0x68, 0x17, 0x0b, 0xef, 0x6f, 0x22, 0x74,
		0x58, 0x78, 0x17, 0x36, 0x00, 0x2c, 0xbc, 0x17, 0x0d, 0xa9, 0xda, 0x2e, 0x96, 0xdd, 0x85, 0x81,
		0x0a, 0xcb, 0xee, 0xea, 0xca, 0xaa, 0xc8, 0x88, 0x45, 0x30, 0x87, 0x7b, 0x51, 0x35, 0xbf, 0x20,
		0x24, 0x15, 0x24, 0x15, 0x24, 0x15, 0x24, 0x15, 0x24, 0x55, 0xb1, 0xc6, 0x68, 0x50, 0x56, 0x2a,
		0x2b, 0xab, 0x2a, 0x48, 0x30, 0x94, 0x55, 0xce, 0xca, 0x0a, 0x90, 0x82, 0xae, 0x82, 0xae, 0x7a,
		0x23, 0xa8, 0x0a, 0x76, 0x8f, 0x59, 0x67, 0x0e, 0x45, 0xba, 0xc8, 0x40, 0x55, 0x41, 0x55, 0x41,
		0x55, 0x41, 0x55, 0x51, 0x55, 0x55, 0x22, 0x62, 0xe3, 0x72, 0x7c, 0xac, 0x7e, 0x14, 0x70, 0xad,
		0x8e, 0x17, 0xc7, 0x2c, 0xe4, 0xc2, 0x24, 0x95, 0xfe, 0xe7, 0xb6, 0x71, 0x60, 0x1a, 0x27, 0x9e,
		0x31, 0xbc, 0xfc, 0xbb, 0xfe, 0xe3, 0xe2, 0x62, 0xeb, 0xd7, 0x3e, 0xb8, 0x4c, 0xff, 0x63, 0xdc,
		0x7f, 0x5b, 0xfc, 0x04, 0xb9, 0x14, 0xf1, 0xf8, 0xdb, 0x3d, 0xfb, 0xab, 0xf0, 0x77, 0xf0, 0xbf,
		0xbc, 0x5e, 0xc2, 0xbf, 0x74, 0xd0, 0xc2, 0x12, 0x68, 0xe1, 0x8d, 0xf7, 0xdd, 0xbf, 0x99, 0xde,
		0x18, 0x5e, 0xc8, 0x3c, 0xc3, 0x1b, 0x0c, 0x42, 0x16, 0x45, 0x4c, 0xe0, 0xb6, 0xb7, 0x27, 0xae,
		0x0f, 0xda, 0x08, 0xda, 0x08, 0xda, 0x08, 0xda, 0x08, 0xda, 0x88, 0xfe, 0xa6, 0x1c, 0xbf, 0xd0,
		0xdf, 0x54, 0xcc, 0x75, 0x51, 0x85, 0x17, 0x02, 0x29, 0xf4, 0x37, 0x6d, 0x08, 0xa8, 0x50, 0x87,
		0x57, 0x56, 0x70, 0x4d, 0x06, 0x53, 0xe1, 0xfb, 0x46, 0x96, 0xae, 0x09, 0x61, 0x05, 0x61, 0x05,
		0x61, 0x05, 0x61, 0x05, 0x61, 0x05, 0xcb, 0x46, 0x28, 0x2b, 0x28, 0x2b, 0x28, 0x2b, 0x58, 0x36,
		0x42, 0x5b, 0x41, 0x5b, 0x29, 0xa3, 0xad, 0xc4, 0x6e, 0x1e, 0xc9, 0xae, 0x08, 0x5d, 0x05, 0x5d,
		0x05, 0x5d, 0x05, 0x5d, 0x05, 0x5d, 0x05, 0xe3, 0xc6, 0x02, 0x5e, 0x5d, 0x79, 0xc6, 0x8d, 0x4d,
		0xeb, 0xdc, 0x6a, 0xba, 0x55, 0xe1, 0x7e, 0x8d, 0xb3, 0xeb, 0xd6, 0x60, 0xd7, 0xf7, 0xc6, 0x4b,
		0x2e, 0xde, 0x9f, 0x50, 0x8a, 0x9f, 0xbd, 0xbd, 0x43, 0xad, 0x0a, 0xb3, 0x36, 0x65, 0xf9, 0x76,
		0xc8, 0x6e, 0x3c, 0x9f, 0xfb, 0x7c, 0x64, 0x04, 0xfe, 0x90, 0xc5, 0xfe, 0x8d, 0x40, 0xe6, 0xfd,
		0xc8, 0xb5, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xb1, 0xb6, 0x91, 0xe7,
		0x17, 0xd6, 0x36, 0x8a, 0xb9, 0x2e, 0xd6, 0x36, 0x84, 0x40, 0x0a, 0x6b, 0x1b, 0x58, 0xdb, 0xa0,
		0x75, 0x15, 0xac, 0x6d, 0xac, 0x83, 0x2a, 0x62, 0xff, 0xdf, 0x29, 0xe3, 0x7d, 0xb6, 0x30, 0x63,
		0x11, 0x26, 0xb4, 0x1e, 0x5e, 0x18, 0x2a, 0x0b, 0x2a, 0x0b, 0x2a, 0x0b, 0x2a, 0x0b, 0x2a, 0xeb,
		0x81, 0xca, 0xda, 0xa9, 0x09, 0x54, 0x59, 0xfb, 0x50, 0x59, 0x50, 0x59, 0xa0, 0xc3, 0x50, 0x59,
		0xc9, 0x63, 0xad, 0xd7, 0x0e, 0xea, 0x07, 0x7b, 0xfb, 0xb5, 0x03, 0x48, 0x2d, 0x48, 0x2d, 0x48,
		0xad, 0xb7, 0x82, 0xea, 0x96, 0x85, 0x91, 0x3f, 0xe6, 0xe2, 0x24, 0xd6, 0xe2, 0x82, 0x05, 0xd3,
		0xa2, 0x06, 0x1b, 0x7a, 0xd3, 0x20, 0x16, 0x92, 0xd1, 0xf5, 0x6a, 0xb1, 0x24, 0xf5, 0x12, 0x32,
		0x14, 0x32, 0x14, 0x32, 0x14, 0x32, 0x14, 0x32, 0x14, 0x0e, 0x11, 0x50, 0xa1, 0x50, 0xa1, 0x50,
		0xa1, 0x70, 0x88, 0x80, 0xfc, 0x84, 0xfc, 0x54, 0x46, 0x7e, 0xd6, 0x84, 0xeb, 0xcf, 0x1a, 0x04,
		0x28, 0x04, 0x28, 0x04, 0x28, 0x04, 0x28, 0x04, 0x28, 0x04, 0x28, 0x04, 0x28, 0x04, 0x28, 0x04,
		0x28, 0x04, 0x28, 0x04, 0x28, 0x40, 0x05, 0x01, 0x2a, 0x9f, 0x00, 0x7d, 0x47, 0x28, 0x54, 0xe8,
		0x26, 0xe7, 0xe3, 0x78, 0xb6, 0x0f, 0xbc, 0xc8, 0xe8, 0xa0, 0x47, 0xfd, 0x6b, 0x76, 0xe3, 0x4d,
		0xbc, 0xd4, 0x5c, 0x51, 0xaf, 0x8c, 0x27, 0x8c, 0xf7, 0x53, 0x81, 0x63, 0x70, 0x16, 0x7f, 0x1b,
		0x87, 0x7f, 0x19, 0x3e, 0x8f, 0x62, 0x8f, 0xf7, 0x59, 0xe5, 0xe1, 0x07, 0xd1, 0xda, 0x27, 0x95,
		0x49, 0x38, 0x8e, 0xc7, 0xfd, 0x71, 0x10, 0x65, 0xdf, 0x55, 0x12, 0xd6, 0x59, 0x49, 0x0f, 0x45,
		0x9c, 0xff, 0x51, 0x09, 0x7c, 0xfe, 0x97, 0x11, 0xc5, 0x5e, 0xcc, 0x8c, 0x81, 0x17, 0x7b, 0x57,
		0x5e, 0xc4, 0x2a, 0x41, 0x34, 0xa9, 0xa4, 0x1f, 0x15, 0x43, 0x50, 0xf3, 0x7f, 0xf7, 0x05, 0xbc,
		0x77, 0x3d, 0x0e, 0x6e, 0x8b, 0x3b, 0x47, 0x20, 0x23, 0x9c, 0xe9, 0x55, 0x0a, 0x42, 0xed, 0xc2,
		0x4f, 0xa0, 0xa0, 0x5f, 0x5f, 0xb4, 0xf4, 0x16, 0x21, 0xb9, 0x05, 0x4a, 0x6d, 0x51, 0x12, 0x5b,
		0xb8, 0xb4, 0x16, 0x2e, 0xa9, 0xc5, 0x4a, 0x69, 0x5a, 0x99, 0xaa, 0xe1, 0x17, 0xbb, 0xb5, 0x22,
		0x09, 0x58, 0xe2, 0x0a, 0xbb, 0xc9, 0xc5, 0xc4, 0xd4, 0x29, 0xab, 0xa8, 0x53, 0xca, 0x1c, 0x3c,
		0x45, 0x07, 0xd1, 0xd2, 0x82, 0x69, 0x69, 0x41, 0xb5, 0x9c, 0xe0, 0x2a, 0x46, 0x28, 0x15, 0x5d,
		0xa7, 0x2c, 0x3a, 0xe8, 0x66, 0x17, 0x5a, 0x3e, 0x65, 0x4a, 0xdc, 0x1c, 0x58, 0x4c, 0xf3, 0x95,
		0xab, 0x0b, 0x42, 0xa3, 0x98, 0xf0, 0x2c, 0x3c, 0x4c, 0x97, 0x11, 0xae, 0x4b, 0x0c, 0xdb, 0x65,
		0x85, 0xef, 0xd2, 0xc3, 0x78, 0xe9, 0xe1, 0xbc, 0xdc, 0xb0, 0x2e, 0xae, 0x0e, 0xa6, 0x09, 0x74,
		0x41, 0x13, 0x15, 0xee, 0xef, 0xcb, 0x42, 0x69, 0x2d, 0x46, 0xf8, 0xa4, 0xc9, 0x76, 0x50, 0xa7,
		0x97, 0x17, 0x8c, 0x57, 0xb1, 0x81, 0xbf, 0xb4, 0x04, 0x50, 0x66, 0x22, 0x90, 0x20, 0x21, 0x94,
		0x9d, 0x18, 0xa4, 0x49, 0x10, 0xd2, 0x24, 0x0a, 0x39, 0x12, 0x86, 0xd8, 0xc4, 0x21, 0x38, 0x81,
		0x94, 0x96, 0x48, 0xee, 0x75, 0x84, 0x60, 0x09, 0xf1, 0xb4, 0xa4, 0x10, 0xaa, 0x26, 0x9e, 0x4a,
		0x32, 0xdb, 0x25, 0x5d, 0xbe, 0xac, 0x64, 0x23, 0x43, 0xd2, 0x91, 0x28, 0xf9, 0xc8, 0x92, 0x84,
		0xa4, 0x4b, 0x46, 0xd2, 0x25, 0x25, 0xb9, 0x92, 0x53, 0x39, 0x49, 0xaa, 0xa4, 0x64, 0x95, 0x3d,
		0x7a, 0x61, 0x4d, 0x79, 0xcf, 0x27, 0x0f, 0xf1, 0xf5, 0xa8, 0x9f, 0x4a, 0x95, 0x8f, 0x25, 0x8e,
		0xa1, 0xe3, 0xc5, 0x31, 0x0b, 0xb9, 0xb0, 0x36, 0xbf, 0x27, 0x07, 0xf2, 0xe7, 0xb6, 0x71, 0x60,
		0x1a, 0x27, 0x9e, 0x31, 0xbc, 0xfc, 0xbb, 0xf6, 0xe3, 0xf7, 0x8b, 0x8b, 0xad, 0xe5, 0x4f, 0xea,
		0x3f, 0xde, 0xff, 0xbd, 0xfd, 0x61, 0xe7, 0x47, 0x79, 0x93, 0xf5, 0xb2, 0xcc, 0x97, 0xd4, 0xee,
		0xd9, 0x5f, 0xa5, 0x79, 0x53, 0xff, 0xfb, 0xb5, 0x57, 0xf5, 0xaf, 0x12, 0xdf, 0xd5, 0x46, 0x05,
		0xd6, 0xa6, 0x1f, 0xc5, 0x66, 0x1c, 0x87, 0xe5, 0x06, 0xd7, 0x53, 0x9f, 0x5b, 0x01, 0x4b, 0x72,
		0x6b, 0x54, 0x1e, 0x31, 0xd5, 0xe6, 0xbd, 0x98, 0x4b, 0x23, 0xa9, 0x7e, 0xac, 0xd7, 0xf7, 0xf6,
		0xeb, 0xf5, 0xed, 0xfd, 0x9d, 0xfd, 0xed, 0x83, 0xdd, 0xdd, 0xea, 0x5e, 0x75, 0xb7, 0xc4, 0xc1,
		0xb5, 0xc3, 0x01, 0x0b, 0xd9, 0xe0, 0xe8, 0x4e, 0x3f, 0xd4, 0xf8, 0x34, 0x08, 0x64, 0x18, 0xca,
		0x59, 0x94, 0xfa, 0x2a, 0x8a, 0x6d, 0xa4, 0x94, 0x61, 0xe6, 0xb0, 0xef, 0x71, 0xe8, 0x19, 0x53,
		0x1e, 0xc5, 0xde, 0x55, 0x50, 0x32, 0x39, 0x09, 0xd9, 0x90, 0x85, 0x8c, 0xf7, 0x59, 0xe9, 0x01,
		0xbe, 0x5c, 0x11, 0xb3, 0xc2, 0xd4, 0xec, 0x5e, 0x5b, 0xab, 0x6e, 0xef, 0x7e, 0x3c, 0xd0, 0x6c,
		0x1e, 0xb3, 0xf0, 0x86, 0x0d, 0x7c, 0x2f, 0x66, 0x5a, 0xef, 0x2e, 0x8a, 0xd9, 0x8d, 0x16, 0x8f,
		0x1f, 0xfb, 0xf8, 0x82, 0xdb, 0x3c, 0x79, 0xad, 0x5a, 0x63, 0x7c, 0xe3, 0xf9, 0x5c, 0xeb, 0x8e,
		0xa7, 0x31, 0xf3, 0xf9, 0x48, 0xb3, 0xbe, 0xf7, 0xaf, 0x3d, 0x3e, 0x62, 0x5a, 0x67, 0xde, 0xd5,
		0xa8, 0x0d, 0xc7, 0xa1, 0x36, 0x8d, 0x98, 0xe6, 0xf3, 0x0b, 0x7e, 0x3c, 0xe6, 0xff, 0x6f, 0xca,
		0xd3, 0xae, 0x66, 0xed, 0x9b, 0x1f, 0x5f, 0x6b, 0xf1, 0xf5, 0x83, 0x9f, 0xec, 0x84, 0xe3, 0x5b,
		0x7f, 0x90, 0xfc, 0xa6, 0xf8, 0x9a, 0xa5, 0xff, 0x80, 0xb3, 0xf4, 0xe7, 0x03, 0x16, 0x45, 0xc6,
		0xcd, 0x78, 0xc0, 0xb4, 0xd6, 0xac, 0x95, 0x52, 0xeb, 0xb1, 0xf0, 0xd6, 0xef, 0x33, 0xed, 0xf7,
		0xe4, 0x06, 0x3e, 0xd6, 0xf7, 0x77, 0xb4, 0xf7, 0xe9, 0xb0, 0x58, 0xc8, 0xd3, 0x6e, 0x50, 0x2f,
		0xd0, 0x7a, 0xb1, 0xc7, 0x07, 0x5e, 0x38, 0x98, 0xdd, 0xdf, 0xa1, 0x56, 0xdb, 0xde, 0xae, 0x7d,
		0xd0, 0x7a, 0xac, 0x3f, 0xe6, 0x03, 0xcd, 0x1a, 0xf8, 0xc9, 0x8f, 0x7d, 0xb8, 0xe0, 0xc9, 0xc7,
		0x5b, 0x9a, 0xd3, 0x3c, 0xd7, 0xaa, 0x5b, 0x25, 0xab, 0x39, 0x99, 0xa4, 0xee, 0x63, 0x92, 0xf7,
		0x7e, 0x06, 0x7d, 0x90, 0x63, 0x6c, 0xb2, 0xa9, 0xdf, 0x47, 0x55, 0x30, 0xa6, 0xd8, 0xca, 0x14,
		0x2b, 0xfd, 0x05, 0xfd, 0x78, 0xb7, 0x99, 0x57, 0x2f, 0x89, 0xb3, 0x63, 0x65, 0x22, 0xdf, 0xc8,
		0x22, 0x66, 0xc3, 0xc3, 0x93, 0xd7, 0x97, 0x68, 0x23, 0x44, 0x1c, 0xdc, 0x46, 0xc9, 0x7f, 0x2a,
		0xcb, 0xe5, 0xa6, 0x22, 0xb7, 0x47, 0x94, 0x8f, 0x38, 0xb5, 0xda, 0x35, 0x4a, 0x54, 0x07, 0xfa,
		0xb7, 0x6b, 0x26, 0xbe, 0xd2, 0x53, 0x62, 0x07, 0xc1, 0xd6, 0xd6, 0x6c, 0x66, 0x54, 0xe2, 0xbb,
		0x09, 0xd3, 0xfe, 0xad, 0xfd, 0x36, 0x2f, 0xce, 0x1b, 0x41, 0x34, 0xb8, 0x4a, 0x4f, 0x1a, 0x8e,
		0x0e, 0xcd, 0xae, 0x65, 0xba, 0x66, 0xa3, 0xd1, 0xb5, 0x7a, 0x3d, 0xab, 0xf7, 0xdb, 0x86, 0x77,
		0x1b, 0xa4, 0x08, 0x41, 0xaf, 0xc1, 0x3d, 0x91, 0x7d, 0x0d, 0x84, 0xde, 0x6d, 0x40, 0xa5, 0x43,
		0x6f, 0xb0, 0xa8, 0x1f, 0xfa, 0x93, 0xd2, 0x92, 0xf2, 0xaa, 0xa2, 0xe7, 0xfd, 0x60, 0x3a, 0x60,
		0x5a, 0x92, 0x14, 0xb5, 0x79, 0x52, 0xd4, 0x26, 0x5e, 0xe8, 0xdd, 0xb0, 0x98, 0x85, 0x91, 0x36,
		0xe6, 0xc1, 0x9d, 0x96, 0x60, 0x3b, 0x15, 0x07, 0x09, 0x29, 0x4f, 0xde, 0xdc, 0x05, 0xf7, 0xa3,
		0x72, 0x45, 0xb0, 0x0c, 0xc2, 0x77, 0x79, 0xfa, 0x0f, 0x96, 0x5e, 0x6a, 0x89, 0x35, 0x44, 0x99,
		0x24, 0xee, 0xaa, 0xac, 0x7d, 0x33, 0xce, 0xa0, 0x47, 0x48, 0x5f, 0xed, 0x52, 0x29, 0x2e, 0x5a,
		0x92, 0xae, 0x92, 0x5e, 0x4f, 0x89, 0xdc, 0x83, 0x10, 0xc5, 0xe1, 0xb4, 0x1f, 0xf3, 0x79, 0x22,
		0x9b, 0xd7, 0xa1, 0xec, 0xf9, 0xbd, 0xb9, 0x8b, 0x3a, 0x96, 0x6b, 0x47, 0x7e, 0xe4, 0x36, 0x93,
		0x5b, 0x71, 0x9b, 0xd1, 0xc4, 0x75, 0x82, 0x5b, 0xd7, 0x0c, 0x99, 0x67, 0xce, 0x07, 0xac, 0xca,
		0xb1, 0xd0, 0x02, 0xf6, 0xec, 0x79, 0xd3, 0xf8, 0x9a, 0xf1, 0xd8, 0xef, 0x8b, 0x05, 0xfe, 0x7d,
		0x9f, 0xc8, 0xea, 0xf5, 0xb1, 0x73, 0x29, 0x97, 0x0b, 0x62, 0xe7, 0x92, 0x68, 0xae, 0x88, 0x9d,
		0x4b, 0xd8, 0xb9, 0xf4, 0x46, 0x09, 0x89, 0x9d, 0x4b, 0xaa, 0x05, 0xfe, 0xd2, 0x12, 0x40, 0x99,
		0x89, 0x40, 0x82, 0x84, 0x20, 0x4b, 0x41, 0x01, 0x3b, 0x97, 0xe4, 0x4a, 0x18, 0x25, 0xe9, 0xf1,
		0x8d, 0xd9, 0xb9, 0xb4, 0xc2, 0xe5, 0x8d, 0xbf, 0xd8, 0x9d, 0x04, 0x9b, 0x98, 0xd6, 0xc7, 0x84,
		0xfd, 0x4c, 0xa5, 0x0c, 0x00, 0xfb, 0x99, 0x64, 0x4a, 0x4d, 0xd2, 0xa5, 0x28, 0xe9, 0x52, 0x95,
		0x5c, 0x29, 0xab, 0x9c, 0xd4, 0x55, 0x52, 0x0a, 0xcb, 0x1e, 0xbd, 0x3c, 0xfb, 0x99, 0xa2, 0x38,
		0xf4, 0xf9, 0x48, 0x8a, 0x9d, 0x4c, 0x9b, 0xb2, 0x68, 0x52, 0x82, 0x5e, 0xe8, 0x87, 0x77, 0x93,
		0x78, 0x9c, 0x2e, 0x64, 0x97, 0x4f, 0x5d, 0x96, 0x07, 0x03, 0xce, 0x02, 0xce, 0x02, 0xce, 0x02,
		0xce, 0x02, 0xce, 0x02, 0xce, 0xf2, 0xcb, 0x11, 0x83, 0xf1, 0xe9, 0x0d, 0x0b, 0xbd, 0xb2, 0xfb,
		0x57, 0x16, 0xc4, 0xa5, 0x5e, 0xe2, 0x18, 0x2c, 0x3e, 0xbd, 0x29, 0x3f, 0x6e, 0x39, 0xe3, 0xde,
		0x8c, 0x46, 0xca, 0xb0, 0xb5, 0x47, 0xdf, 0x4e, 0x30, 0xf2, 0xf9, 0xd4, 0x3c, 0x76, 0x4f, 0x1b,
		0xbb, 0x32, 0xec, 0x7b, 0xaa, 0x26, 0x03, 0x3a, 0x6e, 0x5a, 0x66, 0xd7, 0xb1, 0xbe, 0x3a, 0xe5,
		0x6e, 0x13, 0xf9, 0xf1, 0xa1, 0x6c, 0xa8, 0xd8, 0x69, 0xf4, 0x96, 0x00, 0x27, 0xf7, 0x6f, 0x44,
		0xf8, 0xc2, 0xc9, 0xe3, 0xc9, 0x76, 0x01, 0xd9, 0x43, 0x6d, 0x7b, 0x43, 0x37, 0xf2, 0xfc, 0x40,
		0xe3, 0x1c, 0xfd, 0x39, 0x8f, 0x8d, 0x3c, 0x8f, 0x35, 0x9e, 0xad, 0xd4, 0xeb, 0xb1, 0x95, 0x87,
		0x0c, 0xaa, 0x4b, 0xdd, 0xca, 0x53, 0xde, 0xc6, 0xfe, 0x12, 0xd7, 0xd5, 0x95, 0xd9, 0x55, 0xfc,
		0xba, 0x4d, 0xc5, 0xe9, 0xa7, 0x5b, 0x17, 0x3c, 0x6d, 0x25, 0xdf, 0xde, 0xda, 0xf0, 0xf6, 0x82,
		0xb2, 0x37, 0xe6, 0xcb, 0xd9, 0x61, 0x80, 0x29, 0xb2, 0x32, 0x45, 0xb0, 0xf1, 0x21, 0xa7, 0x2f,
		0x81, 0x46, 0x65, 0xd8, 0xa6, 0xfa, 0xd8, 0x1e, 0xc3, 0x33, 0xe7, 0xb3, 0xd5, 0x72, 0xec, 0x63,
		0xd3, 0xb1, 0xdb, 0x2d, 0x6c, 0x53, 0xc5, 0x36, 0xd5, 0x97, 0x6f, 0x53, 0x7d, 0x00, 0x21, 0x6c,
		0x53, 0x15, 0x3d, 0xd1, 0xdb, 0x3c, 0xb8, 0xd3, 0xfc, 0xf9, 0x1e, 0xc2, 0x24, 0x5b, 0xae, 0x6a,
		0xbf, 0x74, 0x8f, 0xe0, 0xca, 0xee, 0x41, 0x3f, 0xba, 0xe0, 0xe9, 0x1b, 0x2d, 0x87, 0xee, 0x69,
		0xd8, 0xa2, 0x2a, 0x7b, 0x14, 0x58, 0x8b, 0x04, 0x6f, 0xc3, 0x18, 0xaa, 0x6c, 0xb4, 0x59, 0x1a,
		0xb6, 0xa7, 0x6e, 0x44, 0x95, 0x90, 0xc8, 0x06, 0xd5, 0xd5, 0x31, 0x63, 0x8f, 0xea, 0x4b, 0x2a,
		0x8b, 0x8c, 0x0f, 0xd8, 0xc0, 0xf0, 0x27, 0xb7, 0x75, 0x23, 0x64, 0x5e, 0xff, 0xda, 0xbb, 0xf2,
		0x03, 0x3f, 0xbe, 0x13, 0xbf, 0x5f, 0xf5, 0x27, 0x63, 0xc1, 0xde, 0xd5, 0x5c, 0x2e, 0x88, 0xbd,
		0xab, 0xa2, 0x49, 0x24, 0xf6, 0xae, 0x62, 0xef, 0xea, 0x1b, 0x75, 0xa5, 0xe8, 0xbd, 0xab, 0x33,
		0xc8, 0xb2, 0xa8, 0xbc, 0xed, 0xab, 0xd9, 0x08, 0xb0, 0x83, 0x55, 0xb5, 0x74, 0x20, 0x41, 0x5a,
		0x90, 0xa5, 0xde, 0x80, 0x1d, 0xac, 0x72, 0xa5, 0x8d, 0x92, 0x24, 0xfb, 0xa6, 0xec, 0x60, 0x9d,
		0x94, 0xdb, 0xef, 0xff, 0x20, 0xb9, 0x94, 0xbc, 0xeb, 0xa3, 0x8a, 0x5d, 0x1f, 0xd8, 0xf5, 0x81,
		0x5d, 0x1f, 0xf2, 0xa7, 0x24, 0xb9, 0x52, 0x53, 0x39, 0x29, 0xaa, 0xa4, 0x54, 0x55, 0x7a, 0xca,
		0x92, 0x25, 0x75, 0xc9, 0x95, 0xc2, 0x1e, 0xa6, 0xb2, 0xed, 0x92, 0x87, 0x51, 0x76, 0x4a, 0x93,
		0x29, 0xb5, 0x49, 0x98, 0xe2, 0x64, 0x4b, 0x75, 0xd2, 0xa6, 0x3c, 0x69, 0x53, 0x9f, 0x9c, 0x29,
		0xb0, 0xdc, 0x54, 0x58, 0x72, 0x4a, 0xcc, 0x5e, 0x49, 0xe9, 0x1b, 0x22, 0xd7, 0x22, 0x4e, 0xc0,
		0xbc, 0x61, 0xc8, 0x86, 0x32, 0x44, 0x9c, 0x85, 0xd6, 0xda, 0x97, 0x60, 0x2c, 0x9d, 0xf9, 0x1a,
		0x6f, 0xd6, 0x3e, 0x35, 0x8f, 0x39, 0x9b, 0xba, 0xc9, 0xaa, 0x44, 0xcd, 0x55, 0x8e, 0x37, 0xe3,
		0x93, 0x13, 0xa6, 0x0c, 0xaf, 0x46, 0xc9, 0xca, 0x12, 0xe0, 0x72, 0xe0, 0x72, 0xe0, 0x72, 0xe0,
		0x72, 0x9b, 0xcd, 0xe5, 0xca, 0x2e, 0x73, 0x64, 0x03, 0xb9, 0x61, 0x71, 0xe8, 0xf7, 0xe5, 0x99,
		0xdd, 0x8b, 0x00, 0x38, 0x1f, 0x97, 0x24, 0x33, 0x48, 0x8e, 0xf2, 0x87, 0x74, 0xa9, 0x53, 0xc6,
		0x14, 0x2a, 0x71, 0x2a, 0x95, 0x35, 0xa5, 0x4a, 0x9f, 0x5a, 0xa5, 0x4f, 0xb1, 0x72, 0xa7, 0x5a,
		0x39, 0x52, 0xae, 0x24, 0xa9, 0x57, 0xbe, 0x72, 0xca, 0x5a, 0xc4, 0xfa, 0xe6, 0x0f, 0x98, 0x21,
		0x55, 0x02, 0x5c, 0x4e, 0x82, 0xfb, 0x12, 0x0d, 0xa9, 0xeb, 0xf1, 0x91, 0x78, 0xaf, 0x82, 0xe7,
		0xbe, 0xe4, 0x8a, 0xea, 0xe9, 0x83, 0x3a, 0xf5, 0xb9, 0x74, 0xe9, 0x26, 0x1b, 0xdc, 0xb9, 0x17,
		0x4c, 0x99, 0x1c, 0xa6, 0x48, 0x8f, 0x8e, 0xef, 0x24, 0xf4, 0xd2, 0xfd, 0xe5, 0x0d, 0x7f, 0xe4,
		0xc7, 0x91, 0x3c, 0xb4, 0x6b, 0x3d, 0x80, 0xb0, 0x91, 0x17, 0xfb, 0xb7, 0xc9, 0xb3, 0x1c, 0x7a,
		0x41, 0xc4, 0xa4, 0x1b, 0xe5, 0x8f, 0x0f, 0x12, 0x4e, 0x0d, 0xef, 0x3b, 0x81, 0xa9, 0xb1, 0xb7,
		0xbf, 0xbf, 0x5f, 0xab, 0xee, 0x62, 0x86, 0xa8, 0x3e, 0x43, 0xde, 0x61, 0x34, 0x8f, 0x7d, 0x5d,
		0xbe, 0xc3, 0xf3, 0x90, 0x24, 0x82, 0xca, 0xd2, 0x22, 0xb3, 0xc6, 0x9b, 0xe5, 0x2a, 0x07, 0xa3,
		0x66, 0xf4, 0xf3, 0x01, 0xa1, 0x66, 0xf4, 0xa2, 0xa1, 0xa1, 0x66, 0xf4, 0xca, 0x01, 0xa2, 0x66,
		0x44, 0x9f, 0x01, 0xa0, 0x66, 0xf4, 0x5c, 0xc4, 0x4a, 0xb7, 0x51, 0x4b, 0x37, 0x01, 0xef, 0x0f,
		0x5b, 0x91, 0x68, 0x4c, 0x1d, 0x2f, 0x8e, 0x59, 0xc8, 0xa5, 0x2b, 0x1b, 0xe9, 0xbf, 0xff, 0xb9,
		0x6d, 0x1c, 0x5c, 0xfe, 0xf3, 0x67, 0xd5, 0x38, 0xb8, 0x9c, 0x7d, 0x5b, 0x4d, 0xff, 0xf8, 0xbb,
		0xf6, 0xe3, 0x9f, 0xda, 0x9f, 0xdb, 0x46, 0x7d, 0xfe, 0x69, 0x6d, 0xf7, 0xcf, 0x6d, 0x63, 0xf7,
		0xf2, 0xfd, 0xef, 0x17, 0x17, 0x5b, 0x2f, 0xfd, 0x37, 0xef, 0xff, 0xde, 0xf9, 0x51, 0xc9, 0xfe,
		0x51, 0x6d, 0xfe, 0xb7, 0x3b, 0x7f, 0x6e, 0x1b, 0xb5, 0xcb, 0xf7, 0xf2, 0x84, 0x9d, 0x4b, 0x99,
		0xf0, 0xd2, 0xee, 0xd9, 0x5f, 0xa5, 0x05, 0xcd, 0xff, 0x7e, 0x2f, 0x1d, 0x36, 0xef, 0xff, 0xa5,
		0x43, 0x27, 0x42, 0x27, 0xae, 0x41, 0x33, 0x32, 0xae, 0xfc, 0x58, 0x3e, 0x99, 0x38, 0x1b, 0x16,
		0x54, 0x22, 0x54, 0x22, 0x54, 0x22, 0x54, 0x22, 0x54, 0x22, 0x54, 0xe2, 0xc6, 0xa8, 0xc4, 0xab,
		0xf1, 0x38, 0x60, 0x1e, 0x97, 0x51, 0x21, 0x56, 0x41, 0xdc, 0xa4, 0x21, 0x6e, 0xd3, 0x89, 0x31,
		0x18, 0x7f, 0xe3, 0xf2, 0x51, 0xb7, 0xc5, 0xc0, 0x40, 0xde, 0x40, 0xde, 0x40, 0xde, 0x40, 0xde,
		0x40, 0xde, 0x40, 0xde, 0x40, 0xde, 0x40, 0xde, 0xa4, 0x21, 0x6f, 0x1b, 0xbd, 0xa9, 0xa9, 0xe4,
		0x73, 0xf8, 0xd6, 0xc6, 0x23, 0xa3, 0xe3, 0xf6, 0xd3, 0xbe, 0xc7, 0x95, 0x85, 0x13, 0xe6, 0xfc,
		0x9b, 0x32, 0xce, 0xec, 0x93, 0x07, 0xcf, 0xa5, 0x6e, 0x1a, 0x9f, 0x5e, 0x25, 0xef, 0x4b, 0xa2,
		0x6d, 0xe3, 0xf3, 0x01, 0x61, 0xe3, 0x38, 0x36, 0x8e, 0x93, 0x91, 0x35, 0xd8, 0x38, 0x4e, 0x5d,
		0xbe, 0x60, 0xe3, 0xb8, 0x7c, 0x1c, 0x4b, 0x9a, 0x8d, 0xe3, 0xb3, 0x9c, 0x24, 0xe1, 0xea, 0xee,
		0x6c, 0x5c, 0x72, 0x55, 0x08, 0xab, 0xa8, 0x10, 0x4a, 0x9f, 0x42, 0x25, 0x4e, 0xa5, 0xb2, 0xa6,
		0x54, 0xe9, 0x53, 0xab, 0xf4, 0x29, 0x56, 0xee, 0x54, 0x2b, 0x4f, 0x61, 0x45, 0x93, 0xa8, 0x42,
		0x28, 0x4b, 0x0a, 0xce, 0x06, 0x34, 0x0c, 0xbc, 0x51, 0x24, 0x5f, 0x50, 0x58, 0xc4, 0xd1, 0xd9,
		0xf0, 0x24, 0x9b, 0x6f, 0x72, 0x25, 0x66, 0x69, 0x13, 0xb4, 0xcc, 0x89, 0x9a, 0x40, 0xc2, 0x96,
		0x3d, 0x71, 0x93, 0x49, 0xe0, 0x64, 0x12, 0x39, 0x8d, 0x84, 0x2e, 0x57, 0x62, 0x97, 0x2c, 0xc1,
		0x4b, 0x9b, 0xe8, 0xef, 0xb5, 0xb7, 0x14, 0xae, 0xa6, 0xcf, 0x4b, 0x71, 0x09, 0xdc, 0x4e, 0x89,
		0x11, 0x00, 0xe9, 0x89, 0x00, 0x05, 0x42, 0x40, 0x88, 0x18, 0x50, 0x21, 0x08, 0xe4, 0x88, 0x02,
		0x39, 0xc2, 0x40, 0x8b, 0x38, 0xc8, 0x49, 0x20, 0x24, 0x25, 0x12, 0xd2, 0x13, 0x0a, 0xc9, 0x2b,
		0x09, 0xa4, 0x2a, 0x0b, 0x4f, 0x11, 0x8d, 0x6d, 0xc9, 0x87, 0x29, 0x3b, 0xe1, 0xa0, 0x44, 0x3c,
		0x08, 0x12, 0x10, 0x6a, 0x44, 0x84, 0x2c, 0x21, 0x21, 0x4b, 0x4c, 0x68, 0x12, 0x14, 0xb9, 0x89,
		0x8a, 0xe4, 0x84, 0x25, 0x7b, 0xe5, 0xd2, 0x35, 0x45, 0x3f, 0x1b, 0x71, 0x19, 0x9f, 0xde, 0xb0,
		0x70, 0xd6, 0x8c, 0x4a, 0x20, 0xea, 0x2e, 0xaa, 0x11, 0x75, 0x02, 0x63, 0xb5, 0xf8, 0xf4, 0x86,
		0x4e, 0x7e, 0x70, 0xc6, 0xbd, 0x38, 0xf4, 0xf9, 0x88, 0xcc, 0x88, 0xd3, 0x51, 0x6f, 0x27, 0x18,
		0xb6, 0xbe, 0x3a, 0x56, 0xb7, 0x65, 0x36, 0xdd, 0x93, 0xa6, 0xf9, 0x89, 0x48, 0x5a, 0x4b, 0x47,
		0x5f, 0x4d, 0x46, 0xdf, 0xb5, 0xcc, 0xc6, 0xb9, 0xd5, 0x75, 0xec, 0x9e, 0x75, 0x6a, 0xb5, 0x1c,
		0x72, 0x37, 0x51, 0x4b, 0x6e, 0xa2, 0xd5, 0x6e, 0x58, 0xb3, 0x91, 0x93, 0x18, 0xf8, 0x8f, 0x0f,
		0x54, 0x26, 0xa5, 0xcd, 0x63, 0x5a, 0x33, 0x72, 0x75, 0x32, 0x4a, 0x2f, 0x93, 0x56, 0x93, 0x62,
		0x86, 0xe2, 0x43, 0xad, 0x46, 0x68, 0xdc, 0x8f, 0x86, 0x90, 0x43, 0xad, 0x4a, 0x63, 0x2e, 0x82,
		0x13, 0x2b, 0xcd, 0x89, 0x9b, 0x7e, 0x14, 0x9b, 0x71, 0x1c, 0xd2, 0xe0, 0xc5, 0xa7, 0x3e, 0xb7,
		0x02, 0x96, 0xc8, 0xb6, 0x88, 0x46, 0xf0, 0xd2, 0x4f, 0xbd, 0xef, 0x4b, 0x23, 0xae, 0x7e, 0xac,
		0xd7, 0xf7, 0xf6, 0xeb, 0xf5, 0xed, 0xfd, 0x9d, 0xfd, 0xed, 0x83, 0xdd, 0xdd, 0xea, 0x9e, 0xac,
		0x66, 0xe8, 0x2b, 0x37, 0xd1, 0x0e, 0x07, 0x2c, 0x64, 0x83, 0xa3, 0x3b, 0xfd, 0x50, 0xe3, 0xd3,
		0x20, 0xa0, 0x34, 0xe4, 0xb3, 0x88, 0x85, 0xd2, 0xfa, 0xa4, 0x53, 0x8a, 0x14, 0xec, 0x7b, 0x1c,
		0x7a, 0xc6, 0x94, 0x47, 0xb1, 0x77, 0x15, 0x10, 0xd1, 0xd1, 0x21, 0x1b, 0xb2, 0x90, 0xf1, 0xbe,
		0x7c, 0xa7, 0xab, 0x3c, 0xf5, 0x45, 0x88, 0x4b, 0x2e, 0x8a, 0x14, 0xdd, 0x93, 0xe3, 0xfd, 0xfd,
		0x83, 0xfa, 0xa1, 0x66, 0xf7, 0x0c, 0xbb, 0xa7, 0xcd, 0x2a, 0xdb, 0x5a, 0x92, 0x54, 0xfc, 0xab,
		0x69, 0xcc, 0x22, 0x6d, 0x38, 0x0e, 0x35, 0x6b, 0xbe, 0x63, 0x54, 0xb3, 0x3b, 0xb7, 0x75, 0xcd,
		0xe3, 0x83, 0x0b, 0x6e, 0x77, 0x6e, 0xf7, 0xb4, 0xee, 0xd2, 0xde, 0xd1, 0x2d, 0x2d, 0x9a, 0x5e,
		0x19, 0x4e, 0xf3, 0x5c, 0xab, 0x6f, 0x51, 0xd2, 0x58, 0xc4, 0x8a, 0xcd, 0xf7, 0xe5, 0x9a, 0xfb,
		0xa2, 0xf3, 0xfd, 0x44, 0xf9, 0x40, 0xeb, 0x1e, 0xa8, 0xd6, 0x9f, 0xb3, 0x1b, 0x58, 0xae, 0x43,
		0x17, 0x33, 0x93, 0xc8, 0x3c, 0x8f, 0x1f, 0x50, 0x44, 0xb9, 0x7c, 0x5d, 0xbe, 0xc3, 0xf3, 0x53,
		0x8c, 0x81, 0xe9, 0x31, 0x85, 0xb5, 0x8b, 0x8c, 0x12, 0xa4, 0xa3, 0x45, 0x47, 0x43, 0x1e, 0xc3,
		0x44, 0x47, 0x43, 0x81, 0x38, 0x45, 0x47, 0x83, 0x08, 0x72, 0x89, 0x8e, 0x06, 0xe1, 0x4c, 0x12,
		0x1d, 0x0d, 0x1b, 0x51, 0x93, 0xa1, 0xd7, 0xd1, 0xe0, 0x0f, 0x18, 0x8f, 0xfd, 0xf8, 0x2e, 0x64,
		0x43, 0x4a, 0x1d, 0x0d, 0x14, 0xaa, 0xb4, 0xf6, 0xfc, 0xd1, 0x1e, 0x79, 0x11, 0xa1, 0x3c, 0xb1,
		0x00, 0x86, 0xdd, 0xb3, 0x7b, 0x6e, 0xef, 0xec, 0xc8, 0x69, 0x9e, 0xbb, 0xce, 0x1f, 0x1d, 0x8b,
		0x4a, 0xba, 0x48, 0xcf, 0x36, 0x8d, 0xc8, 0xd4, 0x17, 0x35, 0x52, 0x35, 0xc6, 0x55, 0x84, 0x74,
		0xdc, 0xae, 0x65, 0x1e, 0x7f, 0x36, 0x8f, 0xec, 0xa6, 0xed, 0xfc, 0xe1, 0xda, 0x9d, 0xf3, 0xba,
		0xdb, 0x6d, 0x9f, 0x39, 0x56, 0xd7, 0xb5, 0x1b, 0x84, 0xca, 0x1c, 0x1f, 0x80, 0x14, 0xe1, 0x48,
		0xd9, 0x03, 0x52, 0x80, 0x94, 0xe7, 0x91, 0xd2, 0xe9, 0x5a, 0x27, 0xf6, 0xd7, 0xb4, 0x45, 0xa3,
		0x07, 0x9c, 0x00, 0x27, 0xcf, 0xe0, 0xa4, 0x87, 0x68, 0x02, 0x94, 0x3c, 0x8d, 0x92, 0x19, 0x9d,
		0xed, 0x51, 0xe2, 0xb3, 0x94, 0x79, 0x2d, 0x4d, 0xf4, 0x28, 0xcb, 0x73, 0x09, 0xc6, 0x1d, 0x75,
		0x11, 0xb4, 0x07, 0x04, 0x01, 0x41, 0x9b, 0xc6, 0x8b, 0x81, 0x1f, 0xf0, 0x65, 0xa0, 0x87, 0x3e,
		0x7a, 0x1c, 0x2a, 0x3b, 0x97, 0x00, 0x1b, 0xc9, 0x60, 0xb3, 0x57, 0x27, 0x08, 0x1c, 0x52, 0x23,
		0xbe, 0x44, 0xfd, 0x03, 0xf5, 0x0f, 0x15, 0xe2, 0x36, 0xe0, 0x81, 0xf8, 0x0c, 0x80, 0x94, 0x0b,
		0x90, 0xde, 0x2a, 0x40, 0xcc, 0xc6, 0x7f, 0xdc, 0xa6, 0xd9, 0x42, 0x99, 0x1d, 0x30, 0x79, 0x0e,
		0x26, 0x80, 0x08, 0x20, 0xf2, 0x53, 0x88, 0x9c, 0xda, 0x2d, 0xf7, 0x53, 0xb7, 0x7d, 0xd6, 0x01,
		0x4c, 0x00, 0x93, 0x27, 0x61, 0x72, 0x6e, 0xda, 0x4d, 0xf3, 0xa8, 0x69, 0xb9, 0x47, 0x66, 0xab,
		0xf1, 0x5f, 0xbb, 0xe1, 0x7c, 0x06, 0x5c, 0x00, 0x97, 0xa7, 0xe0, 0x92, 0x81, 0xc4, 0x3d, 0x6e,
		0xb7, 0x7a, 0x4e, 0xd7, 0xb4, 0x5b, 0x0e, 0xda, 0x46, 0x00, 0x98, 0x27, 0x01, 0x63, 0x7d, 0x75,
		0xac, 0x56, 0xc3, 0x6a, 0x20, 0x1f, 0x01, 0x2f, 0xbf, 0x82, 0x97, 0x74, 0xe9, 0xdf, 0x6e, 0x39,
		0x56, 0xf7, 0xc4, 0x3c, 0xb6, 0x5c, 0xb3, 0xd1, 0xe8, 0x5a, 0x3d, 0x44, 0x18, 0x20, 0xe6, 0xe7,
		0x88, 0x69, 0x59, 0xf6, 0xa7, 0xcf, 0x47, 0xed, 0x2e, 0x00, 0x03, 0xc0, 0xfc, 0x02, 0x60, 0xf6,
		0x10, 0x62, 0x80, 0x98, 0x17, 0x22, 0x06, 0x21, 0x06, 0x80, 0xf9, 0x55, 0xc0, 0x34, 0xed, 0xd6,
		0x17, 0xd7, 0x74, 0x9c, 0xae, 0x7d, 0x74, 0xe6, 0x58, 0x80, 0x0a, 0xa0, 0xf2, 0x73, 0xa8, 0x34,
		0xac, 0xa6, 0xf9, 0x07, 0x50, 0x02, 0x94, 0x3c, 0x8f, 0x12, 0xf7, 0xdc, 0xec, 0xda, 0xa6, 0x63,
		0xb7, 0x5b, 0xc0, 0x0b, 0xf0, 0xf2, 0x53, 0xbc, 0x60, 0x81, 0x08, 0x10, 0x79, 0x06, 0x22, 0xcd,
		0x36, 0x88, 0x2c, 0x40, 0xf2, 0x0c, 0x48, 0x3a, 0xdd, 0xb6, 0x63, 0x1d, 0x27, 0x29, 0x67, 0xb6,
		0xaf, 0x0b, 0x78, 0x01, 0x5e, 0x9e, 0xc0, 0xcb, 0xa9, 0xf9, 0x75, 0x86, 0x19, 0xac, 0x26, 0x02,
		0x2d, 0xbf, 0x84, 0x96, 0xae, 0xd5, 0xb3, 0xba, 0xe7, 0x58, 0x81, 0x06, 0x66, 0x7e, 0x11, 0x33,
		0x76, 0xeb, 0x3e, 0xca, 0x40, 0x37, 0x03, 0x2d, 0x3f, 0x45, 0x4b, 0xd7, 0xea, 0xd9, 0x8d, 0x33,
		0xb3, 0x89, 0xd8, 0x02, 0xb4, 0x3c, 0x8f, 0x16, 0xb8, 0x17, 0x00, 0x3d, 0x6f, 0x47, 0x11, 0xc9,
		0x1e, 0x6e, 0x82, 0x41, 0x47, 0x61, 0xf8, 0x00, 0x3a, 0x80, 0xce, 0xab, 0xa0, 0x43, 0xb0, 0xc7,
		0x0e, 0xf0, 0x91, 0x06, 0x3e, 0x94, 0x7b, 0xc1, 0x01, 0x23, 0x59, 0x60, 0x44, 0xbc, 0x47, 0x1c,
		0x40, 0x92, 0x05, 0x48, 0xb4, 0x7b, 0xc7, 0x81, 0x23, 0x59, 0x70, 0x44, 0xbd, 0xa7, 0x1c, 0x48,
		0x92, 0x0a, 0x49, 0x74, 0x1b, 0x41, 0x01, 0x24, 0x89, 0x80, 0xb4, 0x87, 0x90, 0x04, 0x24, 0xe5,
		0x84, 0x24, 0x84, 0x24, 0x00, 0xe9, 0xad, 0x40, 0x22, 0xdb, 0xb3, 0x0e, 0x08, 0x49, 0x05, 0x21,
		0x62, 0x6b, 0xf2, 0x40, 0x8f, 0x7c, 0xe8, 0xa1, 0xd8, 0xe3, 0x0e, 0x1c, 0x49, 0x85, 0x23, 0x2c,
		0xa0, 0x01, 0x3a, 0xaf, 0x84, 0x0e, 0xad, 0x9e, 0x78, 0x80, 0x47, 0x2a, 0xf0, 0x90, 0xed, 0x95,
		0x07, 0x8e, 0x64, 0xc1, 0x11, 0xe5, 0x1e, 0x7a, 0xa0, 0x48, 0x26, 0x14, 0xd1, 0xee, 0xad, 0x07,
		0x96, 0xa4, 0xc1, 0x12, 0xe1, 0x9e, 0x7b, 0xa0, 0x48, 0x16, 0x14, 0x51, 0xee, 0xc5, 0x07, 0x8a,
		0x64, 0x41, 0x91, 0x63, 0xb9, 0x0d, 0xeb, 0xc4, 0x3c, 0x6b, 0x3a, 0xee, 0xa9, 0xe5, 0x74, 0xed,
		0x63, 0x80, 0x08, 0x20, 0x7a, 0x29, 0x88, 0xce, 0x5a, 0x59, 0x6b, 0x9a, 0xd5, 0x70, 0x9b, 0x3d,
		0xb4, 0x15, 0x01, 0x44, 0xaf, 0x00, 0xd1, 0x8c, 0x5f, 0x5b, 0x0d, 0x64, 0x34, 0xe0, 0xe8, 0x0d,
		0x38, 0x72, 0xec, 0xa6, 0xfd, 0x7f, 0xc4, 0x51, 0x84, 0x13, 0x9c, 0x36, 0x7d, 0x76, 0x2a, 0xb2,
		0x07, 0x94, 0x30, 0xbf, 0x04, 0x58, 0xc0, 0x23, 0x01, 0x16, 0xf0, 0x45, 0xe0, 0x05, 0xbc, 0x10,
		0x68, 0x51, 0x1c, 0x2d, 0xf3, 0xc3, 0xed, 0x8f, 0xcd, 0x4e, 0xe6, 0x5e, 0xd1, 0x75, 0xcd, 0xe6,
		0xa7, 0x76, 0xd7, 0x76, 0x3e, 0x9f, 0x02, 0x29, 0x40, 0xca, 0x4f, 0x91, 0x72, 0xff, 0x7f, 0x80,
		0x0a, 0xa0, 0xf2, 0x13, 0xa8, 0xc0, 0x12, 0x07, 0xf8, 0xd9, 0xd8, 0xe4, 0x44, 0x30, 0xf2, 0xa8,
		0x8c, 0x20, 0x8a, 0x49, 0x2b, 0x83, 0x10, 0x2a, 0xa4, 0x1b, 0xfc, 0x5c, 0xe5, 0x7f, 0x9e, 0x72,
		0x3f, 0x47, 0x79, 0x47, 0x27, 0xe7, 0xc8, 0x24, 0x4d, 0x58, 0xba, 0xc9, 0xf9, 0x38, 0xf6, 0x62,
		0x7f, 0xcc, 0xf5, 0x43, 0x89, 0x53, 0x94, 0x1e, 0xf5, 0xaf, 0xd9, 0x8d, 0x37, 0xf1, 0xe2, 0xeb,
		0x24, 0x19, 0x55, 0xc6, 0x13, 0xc6, 0xfb, 0x63, 0x3e, 0xf4, 0x47, 0x06, 0x67, 0xf1, 0xb7, 0x71,
		0xf8, 0x97, 0xe1, 0xf3, 0x28, 0xf6, 0x78, 0x9f, 0x55, 0x1e, 0x7e, 0x10, 0xad, 0x7d, 0x52, 0x99,
		0x84, 0xe3, 0x78, 0xdc, 0x1f, 0x07, 0x51, 0xf6, 0x5d, 0xc5, 0x8f, 0xfc, 0xa8, 0x12, 0xb0, 0x5b,
		0x16, 0xcc, 0xff, 0xa8, 0x04, 0x3e, 0xff, 0xcb, 0x88, 0x62, 0x2f, 0x66, 0xc6, 0xc0, 0x8b, 0xbd,
		0x2b, 0x2f, 0x62, 0x95, 0x20, 0x9a, 0x54, 0xe2, 0xe0, 0x36, 0x4a, 0xfe, 0x53, 0x61, 0xdf, 0x63,
		0xc6, 0x07, 0x6c, 0x60, 0xf8, 0x93, 0xdb, 0xba, 0x11, 0x32, 0xaf, 0x7f, 0xed, 0x5d, 0xf9, 0x81,
		0x1f, 0xdf, 0x55, 0x26, 0x21, 0x1b, 0xfa, 0xdf, 0x59, 0x34, 0xff, 0xa6, 0x12, 0x4d, 0xaf, 0xd2,
		0x7f, 0x36, 0xfb, 0xb3, 0x32, 0x0c, 0xbc, 0x51, 0x54, 0x49, 0x7f, 0xb7, 0x9c, 0x89, 0x53, 0xbe,
		0x49, 0x24, 0xd7, 0x88, 0x24, 0x9b, 0xce, 0x3a, 0xfb, 0x1e, 0x87, 0x9e, 0x31, 0x4d, 0xf0, 0x7d,
		0x15, 0x30, 0x29, 0xa7, 0xb2, 0xfe, 0xed, 0x9a, 0x71, 0x69, 0xb5, 0x9f, 0xc4, 0xa1, 0x6f, 0xc1,
		0xc0, 0xb7, 0xb6, 0x66, 0x11, 0xa3, 0x12, 0xdf, 0x4d, 0x98, 0xf6, 0x6f, 0xed, 0xb7, 0x71, 0xdf,
		0x48, 0xa2, 0x96, 0x11, 0x44, 0x83, 0x2b, 0x23, 0xf9, 0x30, 0x3a, 0xb4, 0x3b, 0xab, 0x25, 0xeb,
		0x4e, 0xd7, 0x3a, 0xb1, 0xbf, 0xba, 0x27, 0x4d, 0xf3, 0x53, 0xef, 0x37, 0x89, 0xcb, 0x05, 0x7a,
		0x6f, 0x3c, 0x0d, 0xfb, 0x4c, 0xea, 0x1c, 0x94, 0x8e, 0xf3, 0x0b, 0xbb, 0xfb, 0x36, 0x0e, 0x07,
		0xc9, 0xfb, 0x48, 0xf1, 0x2c, 0xb7, 0x0e, 0xd5, 0x3f, 0x7b, 0x91, 0x19, 0x8e, 0xa6, 0x37, 0x8c,
		0xc7, 0xfa, 0xa1, 0x16, 0x87, 0x53, 0x26, 0xf9, 0x80, 0x97, 0x46, 0x9b, 0x03, 0xe0, 0xdf, 0xa1,
		0x7e, 0xf1, 0xf2, 0x57, 0xd0, 0x60, 0x51, 0x3f, 0xf4, 0x27, 0xd2, 0x73, 0xc2, 0x95, 0xe0, 0xd8,
		0xe6, 0xc1, 0x9d, 0xe6, 0xf3, 0x7e, 0x30, 0x1d, 0x30, 0x2d, 0xbe, 0x66, 0x5a, 0x4a, 0xb1, 0xb4,
		0xfe, 0x98, 0xc7, 0x9e, 0xcf, 0x59, 0xa8, 0x25, 0xb3, 0x35, 0xfd, 0x8b, 0x68, 0x7a, 0x65, 0x38,
		0xcd, 0x73, 0xcd, 0x8f, 0xb4, 0x04, 0x42, 0x17, 0xbc, 0xbe, 0x25, 0xfb, 0x2c, 0x26, 0x12, 0x1c,
		0x1f, 0x06, 0xc8, 0xc1, 0x12, 0x90, 0xe4, 0xaf, 0xd7, 0x91, 0x8b, 0x95, 0x6b, 0xf1, 0xf2, 0x6d,
		0x73, 0x00, 0xe5, 0x06, 0x95, 0xca, 0x0d, 0xd2, 0x8d, 0xea, 0x12, 0xfa, 0x8d, 0x6e, 0x19, 0x46,
		0xc5, 0xf2, 0x8b, 0x84, 0x29, 0x49, 0x8f, 0xe2, 0x70, 0xda, 0x8f, 0xf9, 0x9c, 0xd3, 0xb4, 0x66,
		0xcf, 0xcd, 0x9e, 0x3f, 0x36, 0xb7, 0x33, 0x7f, 0x58, 0xae, 0x1d, 0xf9, 0x91, 0xdb, 0x4c, 0x9e,
		0x92, 0xdb, 0x8c, 0x26, 0xae, 0x13, 0xdc, 0xba, 0xd6, 0xfc, 0x61, 0xd8, 0x93, 0xdb, 0x7a, 0x77,
		0xe9, 0x51, 0xb8, 0x9d, 0xf4, 0x09, 0xb8, 0xbd, 0xf4, 0xce, 0xdd, 0x93, 0xf4, 0xce, 0xdf, 0x21,
		0x54, 0x49, 0x1e, 0x14, 0xf4, 0x14, 0xd3, 0x51, 0xca, 0xfb, 0x8c, 0x70, 0x3c, 0x8d, 0x59, 0x68,
		0xf8, 0x03, 0xe9, 0x62, 0x43, 0x46, 0xbf, 0x1f, 0x1f, 0xae, 0x64, 0x41, 0xf6, 0x8b, 0xcf, 0x93,
		0x47, 0x58, 0x95, 0x6c, 0x58, 0xc7, 0x69, 0x20, 0xd5, 0x0f, 0xb5, 0x6d, 0xc9, 0x06, 0x36, 0x0b,
		0x1d, 0x72, 0x26, 0xa4, 0x05, 0xf0, 0xe6, 0x25, 0x01, 0x19, 0x83, 0xb9, 0xe4, 0xaa, 0x6d, 0x59,
		0xa9, 0xcd, 0xd2, 0xa4, 0xa4, 0x22, 0x8d, 0x8c, 0x30, 0x5b, 0x11, 0x63, 0x0b, 0x60, 0x62, 0x21,
		0x85, 0x14, 0x11, 0x6f, 0xf8, 0xa1, 0xa4, 0x0c, 0x3c, 0x5d, 0x2c, 0x94, 0x36, 0x98, 0x2c, 0xe2,
		0xf1, 0x6c, 0x98, 0x92, 0xce, 0x4f, 0x39, 0x09, 0x80, 0xf4, 0x44, 0x80, 0x02, 0x21, 0x20, 0x44,
		0x0c, 0xa8, 0x10, 0x04, 0x72, 0x44, 0x81, 0x1c, 0x61, 0xa0, 0x45, 0x1c, 0xe4, 0x24, 0x10, 0x92,
		0x12, 0x09, 0xe9, 0x09, 0x45, 0x36, 0x40, 0x79, 0xab, 0x0b, 0x4f, 0xc6, 0x76, 0x59, 0x2b, 0x0c,
		0x4f, 0x11, 0x8e, 0x6d, 0xc9, 0x87, 0x29, 0x3b, 0xf1, 0xa0, 0x44, 0x40, 0x08, 0x12, 0x11, 0x6a,
		0x84, 0x84, 0x2c, 0x31, 0x21, 0x4b, 0x50, 0x68, 0x12, 0x15, 0xb9, 0x09, 0x8b, 0xe4, 0xc4, 0x25,
		0x7b, 0xe5, 0xce, 0xdd, 0x84, 0xd1, 0x8a, 0xb8, 0xe9, 0x62, 0x84, 0x37, 0x18, 0x84, 0x2c, 0x22,
		0x11, 0x76, 0x17, 0x65, 0x89, 0x8f, 0x04, 0xc6, 0xda, 0xf1, 0xe2, 0x98, 0x85, 0x9c, 0xcc, 0x1e,
		0x4e, 0xfd, 0xf7, 0x3f, 0xb7, 0x8d, 0x83, 0xcb, 0x7f, 0xfe, 0xac, 0x1a, 0x07, 0x97, 0xb3, 0x6f,
		0xab, 0xe9, 0x1f, 0x7f, 0xd7, 0x7e, 0xfc, 0x53, 0xfb, 0x73, 0xdb, 0xa8, 0xcf, 0x3f, 0xad, 0xed,
		0xfe, 0xb9, 0x6d, 0xec, 0x5e, 0xbe, 0xff, 0xfd, 0xe2, 0x62, 0xeb, 0xa5, 0xff, 0xe6, 0xfd, 0xdf,
		0x3b, 0x3f, 0xe4, 0x0f, 0x83, 0x97, 0x14, 0xe0, 0xd5, 0xee, 0xd9, 0x5f, 0xc9, 0x61, 0xec, 0x7f,
		0xbf, 0x8b, 0x42, 0xd9, 0xfb, 0x7f, 0x11, 0xc0, 0x19, 0xd2, 0xed, 0x1b, 0xb0, 0x44, 0x60, 0x27,
		0xc7, 0x7a, 0x09, 0x81, 0x0d, 0x59, 0xc8, 0x78, 0x2a, 0x1d, 0x68, 0x4c, 0x59, 0x3a, 0x9b, 0xb1,
		0xef, 0x37, 0x60, 0x9f, 0x1c, 0xef, 0xef, 0x1f, 0xd4, 0x0f, 0x35, 0xbb, 0x67, 0xd8, 0x3d, 0x6d,
		0x26, 0x85, 0x35, 0x33, 0x8e, 0x43, 0xff, 0x6a, 0x1a, 0xb3, 0x48, 0x1b, 0x8e, 0x43, 0x6d, 0xd1,
		0x06, 0xa4, 0xd9, 0x9d, 0xdb, 0xfa, 0x05, 0xf7, 0x78, 0xfa, 0xdd, 0x9e, 0xb6, 0xdc, 0x12, 0xb4,
		0x95, 0xb5, 0x7f, 0x56, 0xab, 0x84, 0x1c, 0x24, 0xa8, 0xa9, 0xd3, 0xc7, 0x54, 0xea, 0xfd, 0x44,
		0x21, 0xe6, 0xdc, 0x41, 0x55, 0xb0, 0x3e, 0x2a, 0x5c, 0x8b, 0x99, 0x49, 0xd8, 0xa0, 0xbf, 0x61,
		0xa3, 0xbc, 0x44, 0xc7, 0xbc, 0x6a, 0x0c, 0x4c, 0x8f, 0x29, 0x14, 0x3b, 0x32, 0x4a, 0x90, 0x8e,
		0x16, 0x4b, 0x20, 0x79, 0x0c, 0x13, 0x4b, 0x20, 0x05, 0xe2, 0x14, 0x4b, 0x20, 0x22, 0xc8, 0x25,
		0x96, 0x40, 0x84, 0x33, 0x49, 0x2c, 0x81, 0x6c, 0x44, 0x4d, 0x86, 0xe0, 0x12, 0xc8, 0x80, 0xf1,
		0xd8, 0x8f, 0xef, 0x42, 0x36, 0xa4, 0xb4, 0x02, 0xb2, 0x4b, 0x60, 0xac, 0xf6, 0xfc, 0xd1, 0x1e,
		0x79, 0x11, 0xa1, 0x3c, 0x71, 0xef, 0x69, 0x6d, 0xf7, 0xe6, 0x1e, 0xa2, 0x94, 0x2c, 0x44, 0x29,
		0x5a, 0x87, 0x52, 0x75, 0x3d, 0x7f, 0xe0, 0xa8, 0x61, 0x77, 0xce, 0xeb, 0xee, 0xdc, 0xfd, 0x91,
		0xd2, 0x21, 0xee, 0x30, 0x27, 0x2e, 0x01, 0x29, 0x7b, 0x40, 0x0a, 0x90, 0xf2, 0x3c, 0x52, 0x96,
		0x5d, 0x7a, 0x80, 0x13, 0xe0, 0xe4, 0x19, 0x9c, 0xf4, 0x10, 0x4d, 0x80, 0x92, 0xa7, 0x51, 0x02,
		0x4b, 0x7c, 0xa0, 0x67, 0x73, 0x79, 0x2e, 0xc1, 0xb8, 0xa3, 0x2e, 0x82, 0xf6, 0x80, 0x20, 0x20,
		0x68, 0xd3, 0x78, 0x31, 0xf0, 0x03, 0xbe, 0x0c, 0xf4, 0xd0, 0x47, 0x8f, 0x63, 0x7e, 0x02, 0x6c,
		0x00, 0x9b, 0x57, 0xc0, 0x66, 0xaf, 0x8e, 0xf3, 0x7f, 0x8a, 0xfd, 0xc2, 0x09, 0xe9, 0xa8, 0x7f,
		0x28, 0x11, 0xb7, 0x01, 0x0f, 0xc4, 0x67, 0x00, 0xa4, 0x5c, 0x80, 0x3c, 0x38, 0xd7, 0xda, 0x6c,
		0xfc, 0xc7, 0x6d, 0x9a, 0x2d, 0x94, 0xd9, 0x01, 0x93, 0xe7, 0x60, 0x02, 0x88, 0x00, 0x22, 0x3f,
		0x85, 0xc8, 0xa9, 0xdd, 0x72, 0x3f, 0x75, 0xdb, 0x67, 0x1d, 0xc0, 0x04, 0x30, 0x79, 0x12, 0x26,
		0xe7, 0xa6, 0xdd, 0x34, 0x8f, 0x9a, 0x96, 0x7b, 0x64, 0xb6, 0x1a, 0xff, 0xb5, 0x1b, 0xce, 0x67,
		0xc0, 0x05, 0x70, 0x79, 0x0a, 0x2e, 0x19, 0x48, 0xdc, 0xe3, 0x76, 0xab, 0xe7, 0x74, 0x4d, 0xbb,
		0xe5, 0xa0, 0x6d, 0x04, 0x80, 0x79, 0x12, 0x30, 0xd6, 0x57, 0xc7, 0x6a, 0x35, 0xac, 0x06, 0xf2,
		0x11, 0xf0, 0xf2, 0x2b, 0x78, 0x49, 0x97, 0xfe, 0xed, 0x96, 0x63, 0x75, 0x4f, 0xcc, 0x63, 0xcb,
		0x35, 0x1b, 0x8d, 0xae, 0xd5, 0x43, 0x84, 0x01, 0x62, 0x7e, 0x8e, 0x98, 0x96, 0x65, 0x7f, 0xfa,
		0x7c, 0xd4, 0xee, 0x02, 0x30, 0x00, 0xcc, 0x2f, 0x00, 0x66, 0x0f, 0x21, 0x06, 0x88, 0x79, 0x21,
		0x62, 0x10, 0x62, 0x00, 0x98, 0x5f, 0x05, 0x4c, 0xd3, 0x6e, 0x7d, 0x71, 0x4d, 0xc7, 0xe9, 0xda,
		0x47, 0x67, 0x8e, 0x05, 0xa8, 0x00, 0x2a, 0x3f, 0x87, 0x4a, 0xc3, 0x6a, 0x9a, 0x7f, 0x00, 0x25,
		0x40, 0xc9, 0xf3, 0x28, 0x71, 0xcf, 0xcd, 0xae, 0x6d, 0x3a, 0x76, 0xbb, 0x05, 0xbc, 0x00, 0x2f,
		0x3f, 0xc5, 0x0b, 0x16, 0x88, 0x00, 0x91, 0x67, 0x20, 0xd2, 0x6c, 0x83, 0xc8, 0x02, 0x24, 0xcf,
		0x80, 0xa4, 0xd3, 0x6d, 0x3b, 0xd6, 0x71, 0x92, 0x72, 0x66, 0xfb, 0xba, 0x80, 0x17, 0xe0, 0xe5,
		0x09, 0xbc, 0x9c, 0x9a, 0x5f, 0x67, 0x98, 0xc1, 0x6a, 0x22, 0xd0, 0xf2, 0x4b, 0x68, 0xe9, 0x5a,
		0x3d, 0xab, 0x7b, 0x8e, 0x15, 0x68, 0x60, 0xe6, 0x17, 0x31, 0x63, 0xb7, 0xee, 0xa3, 0x0c, 0x74,
		0x33, 0xd0, 0xf2, 0x53, 0xb4, 0x74, 0xad, 0x9e, 0xdd, 0x38, 0x33, 0x9b, 0x88, 0x2d, 0x40, 0xcb,
		0xf3, 0x68, 0x81, 0x7b, 0x01, 0xd0, 0xf3, 0x76, 0x14, 0x91, 0xec, 0xe1, 0x26, 0x18, 0x74, 0x14,
		0x86, 0x0f, 0xa0, 0x03, 0xe8, 0xbc, 0x0a, 0x3a, 0x04, 0x7b, 0xec, 0x00, 0x1f, 0x69, 0xe0, 0x43,
		0xb9, 0x17, 0x1c, 0x30, 0x92, 0x05, 0x46, 0xc4, 0x7b, 0xc4, 0x01, 0x24, 0x59, 0x80, 0x44, 0xbb,
		0x77, 0x1c, 0x38, 0x92, 0x05, 0x47, 0xd4, 0x7b, 0xca, 0x81, 0x24, 0xa9, 0x90, 0x44, 0xb7, 0x11,
		0x14, 0x40, 0x92, 0x08, 0x48, 0x7b, 0x08, 0x49, 0x40, 0x52, 0x4e, 0x48, 0x42, 0x48, 0x02, 0x90,
		0xde, 0x0a, 0x24, 0xb2, 0x3d, 0xeb, 0x80, 0x90, 0x54, 0x10, 0x22, 0xb6, 0x26, 0x0f, 0xf4, 0xc8,
		0x87, 0x1e, 0x8a, 0x3d, 0xee, 0xc0, 0x91, 0x54, 0x38, 0xc2, 0x02, 0x1a, 0xa0, 0xf3, 0x4a, 0xe8,
		0xd0, 0xea, 0x89, 0x07, 0x78, 0xa4, 0x02, 0x0f, 0xd9, 0x5e, 0x79, 0xe0, 0x48, 0x16, 0x1c, 0x51,
		0xee, 0xa1, 0x07, 0x8a, 0x64, 0x42, 0x11, 0xed, 0xde, 0x7a, 0x60, 0x49, 0x1a, 0x2c, 0x11, 0xee,
		0xb9, 0x07, 0x8a, 0x64, 0x41, 0x11, 0xe5, 0x5e, 0x7c, 0xa0, 0x48, 0x16, 0x14, 0x39, 0x96, 0xdb,
		0xb0, 0x4e, 0xcc, 0xb3, 0xa6, 0xe3, 0x9e, 0x5a, 0x4e, 0xd7, 0x3e, 0x06, 0x88, 0x00, 0xa2, 0x97,
		0x82, 0xe8, 0xac, 0x95, 0xb5, 0xa6, 0x59, 0x0d, 0xb7, 0xd9, 0x43, 0x5b, 0x11, 0x40, 0xf4, 0x0a,
		0x10, 0xcd, 0xf8, 0xb5, 0xd5, 0x40, 0x46, 0x03, 0x8e, 0xde, 0x80, 0x23, 0xc7, 0x6e, 0xda, 0xff,
		0x47, 0x1c, 0x45, 0x38, 0xc1, 0x69, 0xd3, 0x67, 0xa7, 0x22, 0x7b, 0x40, 0x09, 0xf3, 0x4b, 0x80,
		0x05, 0x3c, 0x12, 0x60, 0x01, 0x5f, 0x04, 0x5e, 0xc0, 0x0b, 0x81, 0x16, 0xc5, 0xd1, 0x32, 0x3f,
		0xdc, 0xfe, 0xd8, 0xec, 0x64, 0xee, 0x15, 0x5d, 0xd7, 0x6c, 0x7e, 0x6a, 0x77, 0x6d, 0xe7, 0xf3,
		0x29, 0x90, 0x02, 0xa4, 0xfc, 0x14, 0x29, 0xf7, 0xff, 0x07, 0xa8, 0x00, 0x2a, 0x3f, 0x81, 0x0a,
		0x2c, 0x71, 0x80, 0x9f, 0x8d, 0x4d, 0x4e, 0x04, 0x23, 0x8f, 0xca, 0x08, 0xa2, 0x98, 0xb4, 0x32,
		0x08, 0xa1, 0x42, 0xba, 0xc1, 0xcf, 0x55, 0xfe, 0xe7, 0x29, 0xf7, 0x73, 0x94, 0x77, 0x74, 0x72,
		0x8e, 0x4c, 0xd2, 0x84, 0xa5, 0x9b, 0x9c, 0x8f, 0x63, 0x2f, 0xf6, 0xc7, 0x5c, 0x3f, 0x94, 0x38,
		0x45, 0xe9, 0x51, 0xff, 0x9a, 0xdd, 0x78, 0x13, 0x2f, 0xbe, 0x4e, 0x92, 0x51, 0x65, 0x3c, 0x61,
		0xbc, 0x3f, 0xe6, 0x43, 0x7f, 0x64, 0x70, 0x16, 0x7f, 0x1b, 0x87, 0x7f, 0x19, 0x3e, 0x8f, 0x62,
		0x8f, 0xf7, 0x59, 0xe5, 0xe1, 0x07, 0xd1, 0xda, 0x27, 0x95, 0x49, 0x38, 0x8e, 0xc7, 0xfd, 0x71,
		0x10, 0x65, 0xdf, 0x55, 0xfc, 0xc8, 0x8f, 0x2a, 0x01, 0xbb, 0x65, 0xc1, 0xfc, 0x8f, 0x4a, 0xe0,
		0xf3, 0xbf, 0x8c, 0x28, 0xf6, 0x62, 0x66, 0x0c, 0xbc, 0xd8, 0xbb, 0xf2, 0x22, 0x56, 0x09, 0xa2,
		0x49, 0x25, 0x0e, 0x6e, 0xa3, 0xe4, 0x3f, 0x15, 0xf6, 0x3d, 0x66, 0x7c, 0xc0, 0x06, 0x86, 0x3f,
		0xb9, 0xad, 0x1b, 0x21, 0xf3, 0xfa, 0xd7, 0xde, 0x95, 0x1f, 0xf8, 0xf1, 0x5d, 0x65, 0x12, 0xb2,
		0xa1, 0xff, 0x9d, 0x45, 0xf3, 0x6f, 0x2a, 0xd1, 0xf4, 0x2a, 0xfd, 0x67, 0xb3, 0x3f, 0x2b, 0xe9,
		0x3f, 0x88, 0xc6, 0xd3, 0xb0, 0xcf, 0x8c, 0x70, 0x3c, 0x8d, 0x59, 0x68, 0xf8, 0x83, 0x4a, 0x7a,
		0x2d, 0x39, 0x13, 0xa9, 0x7c, 0x93, 0x4a, 0xae, 0x11, 0x49, 0x36, 0xbd, 0x75, 0xf6, 0x3d, 0x0e,
		0x3d, 0x63, 0x9a, 0xe0, 0xfd, 0x2a, 0x60, 0x52, 0x4e, 0x6d, 0xfd, 0xdb, 0x35, 0xe3, 0xd2, 0x6a,
		0x41, 0x89, 0x43, 0xe1, 0x82, 0x91, 0x6f, 0x6d, 0xcd, 0x22, 0x46, 0x25, 0xbe, 0x9b, 0x30, 0xed,
		0xdf, 0xda, 0x6f, 0xe3, 0xbe, 0x91, 0x44, 0x31, 0x23, 0x88, 0x06, 0x57, 0x46, 0xf2, 0x61, 0x74,
		0x68, 0x77, 0x1e, 0xf1, 0x4b, 0x99, 0x53, 0x79, 0xbb, 0xf1, 0x9b, 0xc4, 0x05, 0x04, 0xbd, 0x97,
		0x86, 0x47, 0xa9, 0xb3, 0x52, 0x3a, 0xce, 0x2f, 0xec, 0xee, 0xdb, 0x38, 0x1c, 0x24, 0x6f, 0x24,
		0x45, 0xb4, 0xdc, 0xca, 0x54, 0xff, 0xec, 0x45, 0x66, 0x38, 0x9a, 0xde, 0x30, 0x1e, 0xeb, 0x87,
		0x5a, 0x1c, 0x4e, 0x99, 0xe4, 0x03, 0x5e, 0x1a, 0x6d, 0x2e, 0x90, 0x7f, 0x87, 0x9a, 0xc6, 0xcb,
		0x5f, 0x42, 0x83, 0x45, 0xfd, 0xd0, 0x9f, 0x48, 0xcf, 0x13, 0x57, 0x02, 0x64, 0x9b, 0x07, 0x77,
		0x9a, 0xcf, 0xfb, 0xc1, 0x74, 0xc0, 0xb4, 0xf8, 0x9a, 0x69, 0x76, 0xe7, 0xb6, 0xae, 0xcd, 0xe2,
		0x8a, 0xd6, 0x4d, 0x69, 0x97, 0x66, 0x37, 0xb4, 0xfe, 0x98, 0xc7, 0x9e, 0xcf, 0x59, 0xa8, 0x25,
		0xf3, 0xf7, 0x82, 0x27, 0x3f, 0x19, 0x4d, 0xaf, 0x0c, 0xa7, 0x79, 0xae, 0xf9, 0x91, 0x96, 0x42,
		0xad, 0x5a, 0xdd, 0x92, 0x7d, 0x62, 0x13, 0x89, 0x97, 0x0f, 0x63, 0xe6, 0x60, 0x09, 0x59, 0xf2,
		0x17, 0xf5, 0xc8, 0x85, 0xcf, 0xb5, 0x10, 0x9a, 0xf3, 0xa4, 0x40, 0x91, 0x42, 0xa5, 0x22, 0x85,
		0x74, 0xa3, 0xba, 0x84, 0xca, 0xa3, 0x5b, 0xbc, 0xd9, 0x84, 0xa2, 0x8d, 0x84, 0x39, 0x4b, 0x8f,
		0xe2, 0x70, 0xda, 0x8f, 0xf9, 0x9c, 0x05, 0xb5, 0x66, 0xcf, 0xd1, 0x9e, 0x3f, 0x46, 0xb7, 0x33,
		0x7f, 0x78, 0xae, 0x1d, 0xf9, 0x91, 0xdb, 0x4c, 0x9e, 0x9a, 0xdb, 0x8c, 0x26, 0xae, 0x13, 0xdc,
		0xba, 0xd6, 0xfc, 0xe1, 0xd8, 0x93, 0xdb, 0x7a, 0x77, 0xe9, 0xd1, 0xb8, 0x9d, 0xf4, 0x89, 0xb8,
		0xbd, 0xf4, 0x49, 0xb8, 0xc9, 0x5f, 0xcf, 0x32, 0xc6, 0x2c, 0x61, 0xd8, 0x03, 0xb9, 0xf2, 0x80,
		0x3c, 0x71, 0x4c, 0xa2, 0x88, 0xa1, 0xfb, 0x93, 0xdb, 0xbd, 0x75, 0xfc, 0xca, 0x16, 0x38, 0x32,
		0xf6, 0xfe, 0xf8, 0x70, 0x25, 0x8b, 0xc0, 0x5f, 0x7c, 0x9e, 0x3c, 0xc2, 0xaa, 0x64, 0xc3, 0x3a,
		0x4e, 0xa3, 0xac, 0x7e, 0xa8, 0x6d, 0x4b, 0x36, 0xb0, 0x59, 0x1c, 0x91, 0x33, 0x5b, 0x2d, 0x80,
		0x37, 0xaf, 0x29, 0xc8, 0x18, 0xd9, 0x25, 0xd7, 0x78, 0xcb, 0xba, 0x6e, 0x96, 0x43, 0x25, 0x95,
		0x74, 0x64, 0x64, 0xdc, 0x8a, 0x74, 0x5b, 0x00, 0x13, 0x6b, 0x31, 0xa4, 0x58, 0x7a, 0xc3, 0x0f,
		0x25, 0xa5, 0xe7, 0xe9, 0x7a, 0xa3, 0xb4, 0xc1, 0x64, 0x11, 0x8f, 0x67, 0xc3, 0x94, 0x74, 0x7e,
		0xca, 0x49, 0x00, 0xa4, 0x27, 0x02, 0x14, 0x08, 0x01, 0x21, 0x62, 0x40, 0x85, 0x20, 0x90, 0x23,
		0x0a, 0xe4, 0x08, 0x03, 0x2d, 0xe2, 0x20, 0x27, 0x81, 0x90, 0x94, 0x48, 0x48, 0x4f, 0x28, 0xb2,
		0x01, 0xca, 0x5b, 0x5d, 0x78, 0x32, 0xb6, 0xcb, 0x5c, 0xd0, 0x7b, 0x8c, 0x70, 0x6c, 0x4b, 0x3e,
		0x4c, 0xd9, 0x89, 0x07, 0x25, 0x02, 0x42, 0x90, 0x88, 0x50, 0x23, 0x24, 0x64, 0x89, 0x09, 0x59,
		0x82, 0x42, 0x93, 0xa8, 0xc8, 0x4d, 0x58, 0x24, 0x27, 0x2e, 0xd9, 0x2b, 0x77, 0xee, 0x26, 0x8c,
		0x56, 0xc4, 0x4d, 0x17, 0x23, 0xbc, 0xc1, 0x20, 0x64, 0x11, 0x89, 0xb0, 0xbb, 0x28, 0x4b, 0x7c,
		0x24, 0x30, 0xd6, 0x8e, 0x17, 0xc7, 0x2c, 0xe4, 0x64, 0xb6, 0x85, 0xea, 0xbf, 0xff, 0xfe, 0xe7,
		0xb6, 0x71, 0xe0, 0x19, 0x43, 0xd3, 0x38, 0xb9, 0xfc, 0xbb, 0xfa, 0xa1, 0xfe, 0xe3, 0xf0, 0xfd,
		0xdf, 0xfb, 0x3f, 0x1e, 0x7e, 0xf8, 0xcf, 0x63, 0x3f, 0x56, 0xfd, 0xb0, 0xff, 0xe3, 0xf0, 0x89,
		0xbf, 0xd9, 0xfb, 0x71, 0xf8, 0x8b, 0xbf, 0x63, 0xf7, 0xc7, 0xef, 0x6b, 0x3f, 0x9a, 0x7c, 0x5e,
		0x7b, 0xea, 0x1f, 0xd4, 0x9f, 0xf8, 0x07, 0x3b, 0x4f, 0xfd, 0x83, 0x9d, 0x27, 0xfe, 0xc1, 0x93,
		0x43, 0xaa, 0x3d, 0xf1, 0x0f, 0x76, 0x7f, 0xfc, 0xb3, 0xf6, 0xf3, 0xbf, 0x3f, 0xfe, 0xa3, 0x7b,
		0x3f, 0xde, 0xff, 0xf3, 0xd4, 0xdf, 0xed, 0xff, 0xf8, 0xe7, 0xf0, 0xfd, 0x7b, 0xf9, 0x13, 0xc3,
		0x25, 0x85, 0x09, 0xd7, 0xee, 0xd9, 0x5f, 0xc9, 0xcd, 0xba, 0xff, 0x61, 0xda, 0x95, 0x35, 0xed,
		0xfe, 0x45, 0x60, 0xde, 0x81, 0x90, 0xbd, 0x61, 0x6e, 0x11, 0xd8, 0x2e, 0xb4, 0x5e, 0x64, 0x62,
		0x43, 0x16, 0x32, 0x9e, 0x8a, 0x4b, 0x1a, 0x21, 0x8c, 0x8e, 0x03, 0xc0, 0xfd, 0xae, 0xff, 0x93,
		0xe3, 0xfd, 0xfd, 0x83, 0xfa, 0xa1, 0x66, 0xf7, 0x0c, 0xbb, 0xa7, 0xcd, 0x8a, 0x25, 0x9a, 0x19,
		0xc7, 0xa1, 0x7f, 0x35, 0x8d, 0x59, 0xa4, 0x0d, 0xc7, 0xa1, 0xb6, 0xe8, 0x1a, 0x4b, 0x5b, 0x89,
		0x2f, 0xb8, 0xc7, 0xd3, 0xef, 0xf6, 0xb4, 0xe5, 0x0e, 0xb2, 0xad, 0xac, 0x7b, 0xb8, 0x5a, 0xdb,
		0x22, 0xe4, 0x5b, 0x42, 0xad, 0x80, 0xf1, 0x58, 0x21, 0xe3, 0x7e, 0xa6, 0x10, 0xf3, 0x8b, 0xa1,
		0x5a, 0xd3, 0x78, 0xb4, 0xb6, 0x51, 0xd0, 0x54, 0x82, 0x2f, 0xc4, 0x86, 0x8d, 0xf2, 0x12, 0x5b,
		0x2e, 0x54, 0xe3, 0x60, 0x7a, 0x4c, 0xa1, 0x20, 0x96, 0x91, 0x82, 0x74, 0xb4, 0x58, 0x26, 0xcb,
		0x63, 0x98, 0x58, 0x26, 0x2b, 0x10, 0xa7, 0x58, 0x26, 0x13, 0xc1, 0x2e, 0xb1, 0x4c, 0x26, 0x9c,
		0x4a, 0x62, 0x99, 0x6c, 0x23, 0xaa, 0x32, 0x04, 0x97, 0xc9, 0x06, 0x8c, 0xc7, 0x7e, 0x7c, 0x17,
		0xb2, 0x21, 0xa5, 0x55, 0xb2, 0x5d, 0x02, 0x63, 0xb5, 0xe7, 0x8f, 0xf6, 0xc8, 0x8b, 0x08, 0xe5,
		0x89, 0x7b, 0x2b, 0x75, 0xbb, 0x37, 0xb7, 0xae, 0xa5, 0xe4, 0x5c, 0x4b, 0xd1, 0xb1, 0x96, 0xaa,
		0xd9, 0xfe, 0x4f, 0x6d, 0x5b, 0xe0, 0x89, 0x0d, 0xa4, 0xfc, 0x04, 0x29, 0x7b, 0x40, 0x0a, 0x90,
		0xf2, 0x3c, 0x52, 0x3a, 0x5d, 0xeb, 0xc4, 0xfe, 0xea, 0x9e, 0x34, 0xcd, 0x4f, 0x3d, 0xe0, 0x04,
		0x38, 0x79, 0x06, 0x27, 0x3d, 0x44, 0x13, 0xa0, 0xe4, 0x69, 0x94, 0xe0, 0x24, 0x06, 0xa0, 0x67,
		0x73, 0x79, 0x2e, 0xc1, 0xb8, 0xa3, 0x2e, 0x82, 0xf6, 0x80, 0x20, 0x20, 0x68, 0xd3, 0x78, 0x31,
		0xf0, 0x03, 0xbe, 0x0c, 0xf4, 0xd0, 0x47, 0x8f, 0x63, 0x7e, 0x02, 0x6c, 0x00, 0x9b, 0x57, 0xc0,
		0x66, 0xaf, 0x8e, 0x63, 0xa7, 0x8a, 0xfd, 0xc2, 0xc1, 0xfc, 0xa8, 0x7f, 0x28, 0x11, 0xb7, 0x01,
		0x0f, 0xc4, 0x67, 0x00, 0xa4, 0x5c, 0x80, 0x3c, 0x38, 0x4e, 0xdd, 0x6c, 0xfc, 0xc7, 0x6d, 0x9a,
		0x2d, 0x94, 0xd9, 0x01, 0x93, 0xe7, 0x60, 0x02, 0x88, 0x00, 0x22, 0x3f, 0x85, 0xc8, 0xa9, 0xdd,
		0x72, 0x3f, 0x75, 0xdb, 0x67, 0x1d, 0xc0, 0x04, 0x30, 0x79, 0x12, 0x26, 0xe7, 0xa6, 0xdd, 0x34,
		0x8f, 0x9a, 0x96, 0x7b, 0x64, 0xb6, 0x1a, 0xff, 0xb5, 0x1b, 0xce, 0x67, 0xc0, 0x05, 0x70, 0x79,
		0x0a, 0x2e, 0x19, 0x48, 0xdc, 0xe3, 0x76, 0xab, 0xe7, 0x74, 0x4d, 0xbb, 0xe5, 0xa0, 0x6d, 0x04,
		0x80, 0x79, 0x12, 0x30, 0xd6, 0x57, 0xc7, 0x6a, 0x35, 0xac, 0x06, 0xf2, 0x11, 0xf0, 0xf2, 0x2b,
		0x78, 0x49, 0x97, 0xfe, 0xed, 0x96, 0x63, 0x75, 0x4f, 0xcc, 0x63, 0xcb, 0x35, 0x1b, 0x8d, 0xae,
		0xd5, 0x43, 0x84, 0x01, 0x62, 0x7e, 0x8e, 0x98, 0x96, 0x65, 0x7f, 0xfa, 0x7c, 0xd4, 0xee, 0x02,
		0x30, 0x00, 0xcc, 0x2f, 0x00, 0x66, 0x0f, 0x21, 0x06, 0x88, 0x79, 0x21, 0x62, 0x10, 0x62, 0x00,
		0x98, 0x5f, 0x05, 0x4c, 0xd3, 0x6e, 0x7d, 0x71, 0x4d, 0xc7, 0xe9, 0xda, 0x47, 0x67, 0x8e, 0x05,
		0xa8, 0x00, 0x2a, 0x3f, 0x87, 0x4a, 0xc3, 0x6a, 0x9a, 0x7f, 0x00, 0x25, 0x40, 0xc9, 0xf3, 0x28,
		0x71, 0xcf, 0xcd, 0xae, 0x6d, 0x3a, 0x76, 0xbb, 0x05, 0xbc, 0x00, 0x2f, 0x3f, 0xc5, 0x0b, 0x16,
		0x88, 0x00, 0x91, 0x67, 0x20, 0xd2, 0x6c, 0x83, 0xc8, 0x02, 0x24, 0xcf, 0x80, 0xa4, 0xd3, 0x6d,
		0x3b, 0xd6, 0x71, 0x92, 0x72, 0x66, 0xfb, 0xba, 0x80, 0x17, 0xe0, 0xe5, 0x09, 0xbc, 0x9c, 0x9a,
		0x5f, 0x67, 0x98, 0xc1, 0x6a, 0x22, 0xd0, 0xf2, 0x4b, 0x68, 0xe9, 0x5a, 0x3d, 0xab, 0x7b, 0x8e,
		0x15, 0x68, 0x60, 0xe6, 0x17, 0x31, 0x63, 0xb7, 0xee, 0xa3, 0x0c, 0x74, 0x33, 0xd0, 0xf2, 0x53,
		0xb4, 0x74, 0xad, 0x9e, 0xdd, 0x38, 0x33, 0x9b, 0x88, 0x2d, 0x40, 0xcb, 0xf3, 0x68, 0x81, 0x7b,
		0x01, 0xd0, 0xf3, 0x76, 0x14, 0x91, 0xec, 0xe1, 0x26, 0x18, 0x74, 0x14, 0x86, 0x0f, 0xa0, 0x03,
		0xe8, 0xbc, 0x0a, 0x3a, 0x04, 0x7b, 0xec, 0x00, 0x1f, 0x69, 0xe0, 0x43, 0xb9, 0x17, 0x1c, 0x30,
		0x92, 0x05, 0x46, 0xc4, 0x7b, 0xc4, 0x01, 0x24, 0x59, 0x80, 0x44, 0xbb, 0x77, 0x1c, 0x38, 0x92,
		0x05, 0x47, 0xd4, 0x7b, 0xca, 0x81, 0x24, 0xa9, 0x90, 0x44, 0xb7, 0x11, 0x14, 0x40, 0x92, 0x08,
		0x48, 0x7b, 0x08, 0x49, 0x40, 0x52, 0x4e, 0x48, 0x42, 0x48, 0x02, 0x90, 0xde, 0x0a, 0x24, 0xb2,
		0x3d, 0xeb, 0x80, 0x90, 0x54, 0x10, 0x22, 0xb6, 0x26, 0x0f, 0xf4, 0xc8, 0x87, 0x1e, 0x8a, 0x3d,
		0xee, 0xc0, 0x91, 0x54, 0x38, 0xc2, 0x02, 0x1a, 0xa0, 0xf3, 0x4a, 0xe8, 0xd0, 0xea, 0x89, 0x07,
		0x78, 0xa4, 0x02, 0x0f, 0xd9, 0x5e, 0x79, 0xe0, 0x48, 0x16, 0x1c, 0x51, 0xee, 0xa1, 0x07, 0x8a,
		0x64, 0x42, 0x11, 0xed, 0xde, 0x7a, 0x60, 0x49, 0x1a, 0x2c, 0x11, 0xee, 0xb9, 0x07, 0x8a, 0x64,
		0x41, 0x11, 0xe5, 0x5e, 0x7c, 0xa0, 0x48, 0x16, 0x14, 0x39, 0x96, 0xdb, 0xb0, 0x4e, 0xcc, 0xb3,
		0xa6, 0xe3, 0x9e, 0x5a, 0x4e, 0xd7, 0x3e, 0x06, 0x88, 0x00, 0xa2, 0x97, 0x82, 0xe8, 0xac, 0x95,
		0xb5, 0xa6, 0x59, 0x0d, 0xb7, 0xd9, 0x43, 0x5b, 0x11, 0x40, 0xf4, 0x0a, 0x10, 0xcd, 0xf8, 0xb5,
		0xd5, 0x40, 0x46, 0x03, 0x8e, 0xde, 0x80, 0x23, 0xc7, 0x6e, 0xda, 0xff, 0x47, 0x1c, 0x45, 0x38,
		0xc1, 0x69, 0xd3, 0x67, 0xa7, 0x22, 0x7b, 0x40, 0x09, 0xf3, 0x4b, 0x80, 0x05, 0x3c, 0x12, 0x60,
		0x01, 0x5f, 0x04, 0x5e, 0xc0, 0x0b, 0x81, 0x16, 0xc5, 0xd1, 0x32, 0x3f, 0xdc, 0xfe, 0xd8, 0xec,
		0x64, 0xee, 0x15, 0x5d, 0xd7, 0x6c, 0x7e, 0x6a, 0x77, 0x6d, 0xe7, 0xf3, 0x29, 0x90, 0x02, 0xa4,
		0xfc, 0x14, 0x29, 0xf7, 0xff, 0x07, 0xa8, 0x00, 0x2a, 0x3f, 0x81, 0x0a, 0x2c, 0x71, 0x80, 0x9f,
		0x8d, 0x4d, 0x4e, 0x04, 0x23, 0x8f, 0xca, 0x08, 0xa2, 0x98, 0xb4, 0x32, 0x08, 0xa1, 0x42, 0xba,
		0xc1, 0xcf, 0x55, 0xfe, 0xe7, 0x29, 0xf7, 0x73, 0x94, 0x77, 0x74, 0x72, 0x8e, 0x4c, 0xd2, 0x84,
		0xa5, 0x9b, 0x9c, 0x8f, 0x63, 0x2f, 0xf6, 0xc7, 0x5c, 0x3f, 0x94, 0x38, 0x45, 0xe9, 0x51, 0xff,
		0x9a, 0xdd, 0x78, 0x13, 0x2f, 0xbe, 0x4e, 0x92, 0x51, 0x65, 0x3c, 0x61, 0xbc, 0x3f, 0xe6, 0x43,
		0x7f, 0x64, 0x70, 0x16, 0x7f, 0x1b, 0x87, 0x7f, 0x19, 0x3e, 0x8f, 0x62, 0x8f, 0xf7, 0x59, 0xe5,
		0xe1, 0x07, 0xd1, 0xda, 0x27, 0x95, 0x49, 0x38, 0x8e, 0xc7, 0xfd, 0x71, 0x10, 0x65, 0xdf, 0x55,
		0xfc, 0xc8, 0x8f, 0x2a, 0x01, 0xbb, 0x65, 0xc1, 0xfc, 0x8f, 0x4a, 0xe0, 0xf3, 0xbf, 0x8c, 0x28,
		0xf6, 0x62, 0x66, 0x0c, 0xbc, 0xd8, 0xbb, 0xf2, 0x22, 0x56, 0x09, 0xa2, 0x49, 0x25, 0x0e, 0x6e,
		0xa3, 0xe4, 0x3f, 0x15, 0xf6, 0x3d, 0x66, 0x7c, 0xc0, 0x06, 0x86, 0x3f, 0xb9, 0xad, 0x1b, 0x21,
		0xf3, 0xfa, 0xd7, 0xde, 0x95, 0x1f, 0xf8, 0xf1, 0x5d, 0x65, 0x12, 0xb2, 0xa1, 0xff, 0x9d, 0x45,
		0xf3, 0x6f, 0x2a, 0xd1, 0xf4, 0x2a, 0xfd, 0x67, 0xb3, 0x3f, 0x2b, 0xfe, 0xe4, 0x76, 0xcf, 0x88,
		0xc6, 0xd3, 0xb0, 0xcf, 0x8c, 0x70, 0x3c, 0x8d, 0x59, 0x68, 0xf8, 0x83, 0x4a, 0x7a, 0x2d, 0x39,
		0x13, 0xa9, 0x7c, 0x93, 0x4a, 0xae, 0x11, 0x49, 0x36, 0xbd, 0x75, 0xf6, 0x3d, 0x0e, 0x3d, 0x63,
		0x9a, 0xe0, 0xfd, 0x2a, 0x60, 0x52, 0x4e, 0x6d, 0xfd, 0xdb, 0x35, 0xe3, 0xd2, 0x6a, 0x41, 0x89,
		0x43, 0xe1, 0x82, 0x91, 0x6f, 0x6d, 0xcd, 0x22, 0x46, 0x25, 0xbe, 0x9b, 0x30, 0xed, 0xdf, 0xda,
		0x6f, 0xe3, 0xbe, 0x91, 0x44, 0x31, 0x23, 0x88, 0x06, 0x57, 0x46, 0xf2, 0x61, 0x74, 0x68, 0x77,
		0x1e, 0x31, 0x27, 0x98, 0x53, 0x79, 0xbb, 0xf1, 0x9b, 0xc4, 0x05, 0x04, 0xbd, 0x97, 0x86, 0x47,
		0xa9, 0xb3, 0x52, 0x3a, 0xce, 0x2f, 0xec, 0xee, 0xdb, 0x38, 0x1c, 0x24, 0x6f, 0x24, 0x45, 0xb4,
		0xdc, 0xca, 0x54, 0xff, 0xec, 0x45, 0x66, 0x38, 0x9a, 0xde, 0x30, 0x1e, 0xeb, 0x87, 0x5a, 0x1c,
		0x4e, 0x99, 0xe4, 0x03, 0x5e, 0x1a, 0x6d, 0x2e, 0x90, 0x7f, 0x87, 0x9a, 0xc6, 0xcb, 0x5f, 0x42,
		0x83, 0x45, 0xfd, 0xd0, 0x9f, 0x48, 0xcf, 0x13, 0x57, 0x02, 0x64, 0x9b, 0x07, 0x77, 0x9a, 0xcf,
		0xfb, 0xc1, 0x74, 0xc0, 0xb4, 0xf8, 0x9a, 0x69, 0x76, 0xe7, 0x76, 0x4f, 0x9b, 0xc5, 0x15, 0xad,
		0x9b, 0xd2, 0x2e, 0xcd, 0x6e, 0x68, 0xfd, 0x31, 0x8f, 0x3d, 0x9f, 0xb3, 0x50, 0x4b, 0xe6, 0xef,
		0x05, 0x4f, 0x7e, 0x32, 0x9a, 0x5e, 0x19, 0x4e, 0xf3, 0x5c, 0xf3, 0x23, 0x2d, 0x85, 0x5a, 0xb5,
		0xb6, 0x25, 0xfb, 0xc4, 0x26, 0x12, 0x2f, 0x1f, 0xc6, 0xcc, 0xc1, 0x12, 0xb2, 0xe4, 0x2f, 0xea,
		0x91, 0x0b, 0x9f, 0x6b, 0x21, 0x34, 0xe7, 0x49, 0x81, 0x22, 0x85, 0x4a, 0x45, 0x0a, 0xe9, 0x46,
		0x75, 0x09, 0x95, 0x47, 0xb7, 0x78, 0xb3, 0x09, 0x45, 0x1b, 0x09, 0x73, 0x96, 0x1e, 0xc5, 0xe1,
		0xb4, 0x1f, 0xf3, 0x39, 0x0b, 0x6a, 0xcd, 0x9e, 0xa3, 0x3d, 0x7f, 0x8c, 0x6e, 0x67, 0xfe, 0xf0,
		0x5c, 0x3b, 0xf2, 0x23, 0xb7, 0x99, 0x3c, 0x35, 0xb7, 0x19, 0x4d, 0x5c, 0x27, 0xb8, 0x75, 0xad,
		0xf9, 0xc3, 0xb1, 0x27, 0xb7, 0xf5, 0xee, 0xd2, 0xa3, 0x71, 0x3b, 0xe9, 0x13, 0x71, 0x7b, 0xe9,
		0x93, 0x70, 0xed, 0xc9, 0xed, 0xde, 0x2c, 0x63, 0xcc, 0x12, 0x86, 0x3d, 0x90, 0x2b, 0x0f, 0xc8,
		0x13, 0xc7, 0x24, 0x8a, 0x18, 0xfa, 0x0c, 0xd5, 0x46, 0xe4, 0x0f, 0x22, 0xe9, 0xc2, 0x45, 0xc6,
		0xd9, 0x97, 0x07, 0x29, 0x59, 0xb4, 0xfd, 0xe2, 0xf3, 0x84, 0xb1, 0x56, 0x25, 0x1b, 0xd6, 0x71,
		0x1a, 0x51, 0xf5, 0x43, 0x6d, 0x5b, 0xb2, 0x81, 0xcd, 0x62, 0x86, 0x9c, 0x99, 0x69, 0x01, 0xb7,
		0x79, 0xfd, 0x40, 0xc6, 0x28, 0x2e, 0xb9, 0x9e, 0x5b, 0xd6, 0x70, 0xb3, 0x49, 0x2b, 0xa9, 0x7c,
		0x23, 0x23, 0xd9, 0x56, 0x64, 0xda, 0x02, 0x98, 0x58, 0x77, 0x21, 0xc5, 0xc8, 0x1b, 0x7e, 0x28,
		0x67, 0xc0, 0xbb, 0xcf, 0xab, 0xf2, 0x46, 0x94, 0x75, 0x0e, 0x20, 0x6b, 0x48, 0x91, 0x93, 0x0a,
		0x48, 0x4f, 0x09, 0x28, 0x50, 0x03, 0x42, 0x14, 0x81, 0x0a, 0x55, 0x20, 0x47, 0x19, 0xc8, 0x51,
		0x07, 0x5a, 0x14, 0x42, 0x4e, 0x2a, 0x21, 0x29, 0xa5, 0x90, 0x9e, 0x5a, 0x64, 0x03, 0x9c, 0xb5,
		0x2f, 0x91, 0x59, 0x1d, 0x9c, 0x0d, 0x57, 0xf2, 0xf9, 0x2c, 0x37, 0xd1, 0x20, 0x43, 0x38, 0x28,
		0x11, 0x0f, 0x82, 0x04, 0x84, 0x1a, 0x11, 0x21, 0x4b, 0x48, 0xc8, 0x12, 0x13, 0x9a, 0x04, 0x45,
		0x6e, 0xa2, 0x22, 0x39, 0x61, 0x21, 0x43, 0x5c, 0xb2, 0x81, 0x7a, 0xc1, 0x68, 0x1c, 0xfa, 0xf1,
		0xf5, 0x0d, 0x9d, 0x00, 0xb6, 0xc8, 0x11, 0xf7, 0x43, 0x27, 0x12, 0x07, 0xe6, 0xc4, 0x66, 0x9b,
		0xc8, 0x70, 0xa9, 0x10, 0x1c, 0x8a, 0x44, 0x87, 0x30, 0xe1, 0xa1, 0x4a, 0x7c, 0xc8, 0x13, 0x20,
		0xf2, 0x44, 0x88, 0x36, 0x21, 0xa2, 0x41, 0x8c, 0x88, 0x10, 0xa4, 0x0c, 0x0a, 0xce, 0xdd, 0x84,
		0xd1, 0x8c, 0xd8, 0x53, 0x9f, 0xc7, 0x1f, 0x29, 0xc5, 0xeb, 0x39, 0xfd, 0xd8, 0x25, 0x34, 0xe4,
		0xae, 0xc7, 0x47, 0x8c, 0x9c, 0x77, 0x06, 0x3d, 0xd7, 0x03, 0xfd, 0xd4, 0xe7, 0xe4, 0x12, 0x79,
		0x36, 0xf8, 0xd4, 0x62, 0x85, 0x0e, 0x4f, 0x5d, 0x1b, 0xff, 0x49, 0xe8, 0xf5, 0x63, 0x7f, 0xcc,
		0x1b, 0xfe, 0xc8, 0x8f, 0x23, 0xc2, 0x37, 0xd2, 0x62, 0x23, 0x2f, 0xf6, 0x6f, 0x93, 0x77, 0x31,
		0xf4, 0x82, 0x88, 0xc1, 0x62, 0x45, 0xc4, 0xd4, 0xf5, 0xbe, 0xd3, 0x9f, 0xba, 0xb5, 0xdd, 0x5d,
		0x4c, 0x5e, 0x4c, 0xde, 0x0d, 0x20, 0xe6, 0xf4, 0x46, 0x4b, 0xc3, 0x86, 0x47, 0xfe, 0xe7, 0x49,
		0x20, 0xb9, 0xe8, 0xc3, 0xc0, 0x1b, 0x45, 0xf4, 0x4a, 0xc1, 0xb3, 0x61, 0xa3, 0x0c, 0x5c, 0xc4,
		0x70, 0x51, 0x06, 0x16, 0x08, 0x64, 0x94, 0x81, 0xc5, 0x4d, 0x43, 0x94, 0x81, 0x4b, 0xbe, 0x01,
		0x94, 0x81, 0xc1, 0x39, 0xe6, 0x50, 0xa0, 0x5b, 0x06, 0x66, 0x7c, 0x7a, 0xc3, 0x42, 0x8f, 0x88,
		0x97, 0xc3, 0x43, 0x12, 0x52, 0xad, 0x13, 0x1a, 0xb3, 0xc5, 0xa7, 0x37, 0xf4, 0xf2, 0x8c, 0x33,
		0xee, 0xc5, 0xa1, 0xcf, 0x47, 0x24, 0x8b, 0x34, 0xfa, 0x76, 0xea, 0x83, 0x6b, 0x99, 0x8d, 0x73,
		0xab, 0xeb, 0xd8, 0x3d, 0xeb, 0xd4, 0x6a, 0x39, 0x3a, 0xc1, 0x2a, 0x59, 0x35, 0xdd, 0x16, 0xde,
		0x6e, 0x58, 0x14, 0x07, 0x5f, 0x9b, 0x0d, 0xde, 0xed, 0x7c, 0xee, 0x50, 0x1c, 0xfe, 0x4e, 0x32,
		0x7c, 0xeb, 0x6b, 0xa7, 0x69, 0x1f, 0xdb, 0x8e, 0xdb, 0x3a, 0x6b, 0x36, 0x29, 0xde, 0x45, 0x3d,
		0xb9, 0x8b, 0x73, 0xb3, 0x79, 0x46, 0x12, 0x42, 0xbb, 0xc9, 0xe8, 0x9b, 0xed, 0x63, 0xb3, 0x49,
		0xcb, 0xb5, 0x9a, 0x58, 0x45, 0x5e, 0x77, 0xc6, 0x76, 0x4a, 0x68, 0x09, 0x86, 0xfa, 0xd5, 0x19,
		0x7a, 0xa8, 0xed, 0x10, 0x84, 0xf9, 0x0c, 0xe1, 0xa4, 0x16, 0xb9, 0xef, 0x19, 0x65, 0x92, 0x9d,
		0xa4, 0xdf, 0xf7, 0xf0, 0xc4, 0xd0, 0xd3, 0xdc, 0x74, 0xa8, 0xd5, 0x08, 0x0e, 0xfe, 0x21, 0xbb,
		0x21, 0xb9, 0x84, 0x33, 0xcf, 0x4c, 0x87, 0x5a, 0x1d, 0xab, 0x20, 0xd0, 0xfb, 0xf2, 0xc7, 0x69,
		0x3f, 0x8a, 0xcd, 0x38, 0x0e, 0x69, 0x69, 0xfe, 0x53, 0x9f, 0x5b, 0x01, 0xbb, 0x61, 0x9c, 0xda,
		0x42, 0xaf, 0x7e, 0xea, 0x7d, 0x5f, 0x1a, 0x79, 0xf5, 0x63, 0xbd, 0xbe, 0xb7, 0x5f, 0xaf, 0x6f,
		0xef, 0xef, 0xec, 0x6f, 0x1f, 0xec, 0xee, 0x56, 0xf7, 0xaa, 0x94, 0xba, 0xc2, 0xda, 0xe1, 0x80,
		0x85, 0x6c, 0x70, 0x74, 0xa7, 0x1f, 0x6a, 0x7c, 0x1a, 0x04, 0x14, 0x87, 0x7e, 0x16, 0xb1, 0x90,
		0xd4, 0x4a, 0x3b, 0xd6, 0x57, 0xf3, 0x78, 0xff, 0xb7, 0xf3, 0x7e, 0x17, 0x62, 0xeb, 0xab, 0xb3,
		0x61, 0x63, 0x7d, 0xb5, 0x88, 0xe1, 0x62, 0x7d, 0x55, 0x20, 0x90, 0xb1, 0xbe, 0x2a, 0x6e, 0x1a,
		0x62, 0x7d, 0xb5, 0xe4, 0x1b, 0xc0, 0xfa, 0x2a, 0x38, 0xc7, 0x1c, 0x0a, 0xb4, 0xb7, 0xd9, 0xec,
		0xd4, 0x08, 0x2e, 0xad, 0xee, 0x63, 0x9f, 0x4d, 0xc1, 0x5f, 0xd8, 0x67, 0x23, 0x76, 0xf0, 0xd8,
		0x67, 0x23, 0x4b, 0x6c, 0xc4, 0x3e, 0x9b, 0x12, 0xa6, 0xae, 0x0a, 0xfb, 0x6c, 0xea, 0xb5, 0x83,
		0xfa, 0xc1, 0xde, 0x7e, 0xed, 0x00, 0xdb, 0x6d, 0x30, 0x87, 0x37, 0x81, 0xa0, 0xd3, 0x1b, 0x2d,
		0xb6, 0xdb, 0x6c, 0xc2, 0x08, 0x65, 0x37, 0xb0, 0x22, 0x72, 0x46, 0x72, 0x36, 0x5e, 0xb5, 0x8e,
		0xdd, 0x59, 0x3a, 0x11, 0x64, 0xe9, 0x7b, 0x99, 0x0f, 0x4b, 0x96, 0x7f, 0xd6, 0xc9, 0x7c, 0xd4,
		0x24, 0x8d, 0x65, 0x21, 0x52, 0xcb, 0x41, 0x44, 0x96, 0x81, 0x60, 0x23, 0x5b, 0x24, 0x50, 0x61,
		0x23, 0x5b, 0xdc, 0xf4, 0x82, 0x8d, 0xac, 0x68, 0x4a, 0x06, 0x1b, 0xd9, 0x4d, 0x63, 0xe1, 0x64,
		0x96, 0x6d, 0xb2, 0x88, 0x1b, 0x30, 0x6f, 0x18, 0xb2, 0x21, 0x85, 0x88, 0xbb, 0xd8, 0x02, 0x47,
		0x60, 0xa1, 0x46, 0xef, 0xcc, 0x85, 0x4d, 0x76, 0x18, 0xfc, 0x8c, 0x82, 0x41, 0x0a, 0x28, 0x34,
		0x32, 0x59, 0x0f, 0xe1, 0xf8, 0xc2, 0xee, 0x64, 0x27, 0xfd, 0x34, 0xfa, 0x89, 0xe9, 0xf4, 0x0f,
		0x93, 0xee, 0x17, 0x26, 0xd4, 0x1f, 0x4c, 0xa8, 0x1f, 0x58, 0xd6, 0xe8, 0x44, 0xa4, 0x50, 0xb9,
		0x11, 0x05, 0x4a, 0x99, 0xcf, 0x8b, 0x2b, 0xfc, 0x80, 0xf0, 0xd9, 0xff, 0xf5, 0xfc, 0x81, 0x9c,
		0xac, 0xec, 0x07, 0x4e, 0x55, 0xa5, 0x14, 0xdf, 0x74, 0xf6, 0x3d, 0x0e, 0x3d, 0x63, 0x9a, 0x00,
		0xf4, 0x2a, 0x90, 0x53, 0x04, 0xea, 0x21, 0x1b, 0xb2, 0x90, 0xf1, 0xbe, 0xbc, 0xad, 0x63, 0x04,
		0xce, 0xda, 0x1c, 0x84, 0xde, 0x30, 0x36, 0x7c, 0x16, 0x0f, 0xd3, 0x92, 0x8e, 0x11, 0xb1, 0x51,
		0xc2, 0xbb, 0x8c, 0x70, 0x3c, 0x8d, 0x7d, 0x3e, 0x32, 0xd2, 0x20, 0x1d, 0xf9, 0x63, 0x1e, 0x6d,
		0x69, 0xd1, 0xf4, 0xca, 0x70, 0x9a, 0xe7, 0xda, 0xce, 0xa1, 0xe6, 0x34, 0xcf, 0x2f, 0x78, 0x75,
		0x67, 0xf7, 0x83, 0x56, 0x9b, 0xfd, 0x67, 0x2f, 0xf9, 0xcf, 0xfe, 0x16, 0xce, 0xec, 0xcc, 0x45,
		0xf1, 0x2c, 0x6a, 0x9b, 0xf7, 0x10, 0xc7, 0xb1, 0x9d, 0x39, 0x13, 0xb7, 0xa5, 0x72, 0x66, 0xde,
		0x73, 0x00, 0x95, 0x07, 0xe2, 0xa3, 0xba, 0x94, 0x0f, 0xbc, 0xfa, 0xb7, 0x6b, 0xc6, 0x91, 0xe8,
		0x5e, 0x9f, 0xe8, 0xb2, 0xda, 0x65, 0x7c, 0x37, 0x61, 0xda, 0xbf, 0xb5, 0xdf, 0xe6, 0x8b, 0x18,
		0x46, 0x10, 0x0d, 0xae, 0x8c, 0xe4, 0xc3, 0xe8, 0xd0, 0xee, 0xb8, 0x5d, 0xcb, 0x3c, 0xfe, 0x6c,
		0x1e, 0xd9, 0x4d, 0xdb, 0xf9, 0xc3, 0xed, 0x74, 0xad, 0x13, 0xfb, 0xab, 0xdb, 0xb3, 0x1b, 0xbf,
		0x21, 0xb1, 0xe5, 0x9a, 0xd8, 0x52, 0x34, 0x23, 0xa7, 0x15, 0x97, 0xd3, 0xde, 0x0a, 0x77, 0x34,
		0xd2, 0xbc, 0xe2, 0x05, 0x34, 0x58, 0xd4, 0x0f, 0xfd, 0x09, 0x89, 0xbe, 0xb5, 0x2c, 0x30, 0xb6,
		0x79, 0x70, 0xa7, 0xf9, 0xbc, 0x1f, 0x4c, 0x07, 0x4c, 0x8b, 0xaf, 0x99, 0x36, 0x2b, 0x25, 0x68,
		0x3d, 0xbb, 0xa1, 0xf5, 0xc7, 0x3c, 0xf6, 0x7c, 0xce, 0x42, 0x2d, 0x99, 0xb0, 0x17, 0x3c, 0xf9,
		0xeb, 0x05, 0x03, 0xf2, 0x23, 0x2d, 0xc5, 0xd6, 0xce, 0x96, 0xec, 0x13, 0x99, 0x50, 0x73, 0xc3,
		0x72, 0x8c, 0x1c, 0x2c, 0xa1, 0x89, 0xc0, 0x22, 0x21, 0xc5, 0xce, 0x86, 0x95, 0x90, 0x99, 0xc3,
		0x44, 0xc0, 0x8a, 0x28, 0x74, 0x49, 0x91, 0xba, 0x04, 0x35, 0xcb, 0x9f, 0xcd, 0x65, 0xb9, 0xd7,
		0x62, 0xd4, 0x5d, 0x83, 0x91, 0x2b, 0xec, 0xc9, 0x33, 0x6d, 0x25, 0x9a, 0x20, 0xfa, 0xac, 0x79,
		0x5f, 0xb6, 0x79, 0x91, 0x91, 0xd0, 0xd9, 0xf0, 0x24, 0x0b, 0x28, 0x8b, 0x16, 0x2d, 0xc9, 0x86,
		0x25, 0x6b, 0xcf, 0xb6, 0xcc, 0x3d, 0xda, 0x04, 0x7a, 0xb2, 0x65, 0x97, 0x29, 0x64, 0x7a, 0xae,
		0xc9, 0x28, 0x11, 0x1a, 0x3d, 0xd5, 0x58, 0x28, 0xff, 0x69, 0xc9, 0xc7, 0x97, 0xb3, 0xeb, 0x4f,
		0x8f, 0x65, 0x6e, 0xde, 0xce, 0xc2, 0x71, 0x3a, 0x4a, 0x59, 0x3b, 0x4f, 0xa5, 0xde, 0xc2, 0x25,
		0xfd, 0xd6, 0x2d, 0x0a, 0x5b, 0xb6, 0x08, 0x6d, 0xd5, 0xa2, 0xb8, 0xca, 0x43, 0x62, 0x6b, 0x16,
		0xed, 0x75, 0x1e, 0xe9, 0xb7, 0x62, 0x61, 0xb7, 0xc3, 0x4b, 0x5e, 0xad, 0xf4, 0x5b, 0xae, 0xb2,
		0x88, 0xe9, 0x0f, 0x18, 0x8f, 0xfd, 0xf8, 0x4e, 0xee, 0xed, 0x56, 0x99, 0x86, 0x97, 0x79, 0xc7,
		0x80, 0x3d, 0x7f, 0x94, 0x47, 0x5e, 0x44, 0x68, 0x1b, 0xbe, 0xdd, 0xb3, 0x7b, 0x6e, 0xef, 0xec,
		0xc8, 0x69, 0x9e, 0xbb, 0xce, 0x1f, 0x1d, 0xd9, 0xcf, 0x25, 0x9a, 0x99, 0x50, 0x45, 0x24, 0x6c,
		0x06, 0x89, 0xf9, 0x73, 0x3f, 0xec, 0x23, 0xb0, 0x3b, 0xe7, 0x75, 0xb7, 0xdb, 0x3e, 0x73, 0xac,
		0xae, 0x6b, 0x37, 0x74, 0x58, 0xb7, 0x03, 0x11, 0x9d, 0xf3, 0x3d, 0x20, 0x02, 0x88, 0x58, 0xeb,
		0x35, 0x3a, 0x69, 0x9a, 0x9f, 0x7a, 0xc0, 0x03, 0xf0, 0x70, 0xdf, 0x7b, 0x06, 0x34, 0x00, 0x0d,
		0x33, 0x5a, 0xd9, 0xa3, 0xc0, 0x2b, 0x29, 0xf2, 0x4b, 0x5a, 0x28, 0x51, 0x8e, 0x6f, 0x12, 0x8a,
		0x23, 0xea, 0x21, 0x65, 0x0f, 0x48, 0x01, 0x52, 0x54, 0xe3, 0xa7, 0xc0, 0x09, 0x78, 0x2b, 0x50,
		0x22, 0x2f, 0x4a, 0x1c, 0xf3, 0x13, 0xe0, 0x01, 0x78, 0xfc, 0x04, 0x1e, 0x7b, 0x75, 0x1c, 0x8e,
		0x95, 0xef, 0xd7, 0x25, 0xea, 0x08, 0x1b, 0x5f, 0x47, 0x20, 0x11, 0x77, 0x01, 0x03, 0xc4, 0x57,
		0x00, 0xa1, 0x18, 0x20, 0xf4, 0x56, 0x81, 0x60, 0x36, 0xfe, 0xe3, 0x36, 0xcd, 0x16, 0xca, 0xcc,
		0x80, 0xc3, 0x02, 0x0e, 0x80, 0x02, 0xa0, 0x90, 0x42, 0xe1, 0xd4, 0x6e, 0xb9, 0x9f, 0xba, 0xed,
		0xb3, 0x0e, 0xe0, 0x00, 0x38, 0x98, 0xe7, 0xa6, 0xdd, 0x34, 0x8f, 0x9a, 0x96, 0x7b, 0x64, 0xb6,
		0x1a, 0xff, 0xb5, 0x1b, 0xce, 0x67, 0xc0, 0x02, 0xb0, 0xc8, 0xc0, 0xe0, 0x1e, 0xb7, 0x5b, 0x3d,
		0xa7, 0x6b, 0xda, 0x2d, 0x07, 0xed, 0x0b, 0x00, 0x86, 0x6b, 0x7d, 0x75, 0xac, 0x56, 0xc3, 0x6a,
		0x20, 0x8f, 0x00, 0x17, 0x6b, 0x4b, 0xd3, 0x76, 0xcb, 0xb1, 0xba, 0x27, 0xe6, 0xb1, 0xe5, 0x9a,
		0x8d, 0x46, 0xd7, 0xea, 0x21, 0x62, 0x00, 0x19, 0x33, 0x64, 0xb4, 0x2c, 0xfb, 0xd3, 0xe7, 0xa3,
		0x76, 0x17, 0xc0, 0x00, 0x30, 0x56, 0x7a, 0x14, 0x10, 0x32, 0x80, 0x8c, 0xc7, 0x91, 0x81, 0x90,
		0x01, 0x60, 0x3c, 0x04, 0x46, 0xd3, 0x6e, 0x7d, 0x71, 0x4d, 0xc7, 0xe9, 0xda, 0x47, 0x67, 0x8e,
		0x05, 0x48, 0x00, 0x12, 0x33, 0x48, 0x34, 0xac, 0xa6, 0xf9, 0x07, 0xd0, 0x00, 0x34, 0xdc, 0xa3,
		0xc1, 0x3d, 0x37, 0xbb, 0xb6, 0xe9, 0xd8, 0xed, 0x16, 0x70, 0x01, 0x5c, 0xa4, 0xb8, 0xc0, 0x02,
		0x08, 0xa0, 0x30, 0x87, 0x42, 0xb3, 0x0d, 0x42, 0x09, 0x30, 0xcc, 0xc1, 0xd0, 0xe9, 0xb6, 0x1d,
		0xeb, 0x38, 0x49, 0x15, 0xb3, 0x7d, 0x38, 0xc0, 0xc5, 0xc6, 0xe3, 0xe2, 0xd4, 0xfc, 0x3a, 0xc3,
		0x06, 0x56, 0xc5, 0x80, 0x8a, 0x15, 0x54, 0x74, 0xad, 0x9e, 0xd5, 0x3d, 0xc7, 0x8a, 0x29, 0xb0,
		0xf1, 0x00, 0x1b, 0x76, 0xeb, 0x3e, 0x6a, 0x40, 0x8f, 0x02, 0x15, 0x29, 0x2a, 0xba, 0x56, 0xcf,
		0x6e, 0x9c, 0x99, 0x4d, 0xc4, 0x0a, 0xa0, 0x02, 0xbb, 0xbe, 0x81, 0x92, 0xd7, 0xa0, 0x85, 0x54,
		0x2f, 0x2f, 0xa1, 0x20, 0xa2, 0x20, 0x4c, 0x00, 0x11, 0x40, 0x44, 0x95, 0xde, 0x5f, 0xc0, 0xa4,
		0x34, 0x98, 0x50, 0xec, 0x09, 0x06, 0x5c, 0xca, 0x82, 0x0b, 0xd1, 0x5e, 0x61, 0x00, 0xa6, 0x2c,
		0xc0, 0xd0, 0xec, 0x21, 0x06, 0x5e, 0xca, 0xc2, 0x0b, 0xd5, 0xde, 0x62, 0x20, 0xa6, 0x54, 0xc4,
		0xd0, 0x6b, 0x20, 0x04, 0x60, 0x4a, 0x04, 0xcc, 0x1e, 0x42, 0x0c, 0x10, 0xf3, 0x42, 0xc4, 0x20,
		0xc4, 0x00, 0x30, 0xbf, 0x0a, 0x18, 0x72, 0xbd, 0xcb, 0x80, 0x4a, 0xa9, 0x50, 0x21, 0xb2, 0x86,
		0x0c, 0x94, 0x94, 0x8f, 0x12, 0x4a, 0xbd, 0xce, 0xc0, 0x4b, 0xa9, 0x78, 0xc1, 0x02, 0x11, 0x20,
		0xa2, 0x44, 0x6f, 0x34, 0x40, 0x52, 0x2a, 0x48, 0xc8, 0xf5, 0x4c, 0x03, 0x2f, 0x65, 0xe1, 0x85,
		0x62, 0x2f, 0x35, 0xd0, 0x52, 0x26, 0x5a, 0x68, 0xf6, 0x58, 0x03, 0x33, 0xa5, 0x61, 0x86, 0x60,
		0xef, 0x35, 0xd0, 0x52, 0x16, 0x5a, 0x28, 0xf6, 0x64, 0x03, 0x2d, 0x65, 0xa1, 0xc5, 0xb1, 0xdc,
		0x86, 0x75, 0x62, 0x9e, 0x35, 0x1d, 0xf7, 0xd4, 0x72, 0xba, 0xf6, 0x31, 0xc0, 0x02, 0xb0, 0x3c,
		0x05, 0x96, 0xb3, 0x56, 0xd6, 0x02, 0x65, 0x35, 0xdc, 0x66, 0x0f, 0x6d, 0x2d, 0x00, 0xcb, 0x4f,
		0xc0, 0x32, 0xe3, 0xb9, 0x56, 0x03, 0x99, 0x08, 0x78, 0xf9, 0x05, 0xbc, 0x38, 0x76, 0xd3, 0xfe,
		0x3f, 0xa2, 0x68, 0xc1, 0x49, 0x2a, 0x9b, 0x32, 0xeb, 0x88, 0xef, 0xcd, 0x23, 0xc8, 0xf7, 0x00,
		0x0a, 0xf0, 0x3a, 0x80, 0x02, 0xfc, 0x0d, 0xb8, 0x00, 0x4f, 0x03, 0x2a, 0x24, 0x41, 0xc5, 0xfc,
		0xf0, 0xe5, 0x63, 0xb3, 0x93, 0xed, 0xfa, 0xef, 0xba, 0x66, 0xf3, 0x53, 0xbb, 0x6b, 0x3b, 0x9f,
		0x4f, 0x81, 0x08, 0x20, 0x22, 0x45, 0xc4, 0xfd, 0xff, 0x01, 0x12, 0x80, 0x04, 0xac, 0x41, 0x80,
		0x13, 0x95, 0x93, 0x0a, 0xa1, 0x48, 0xa2, 0x22, 0x52, 0x28, 0x25, 0x9b, 0x0c, 0x2a, 0xa8, 0x1c,
		0x6e, 0xc0, 0x73, 0x94, 0xf7, 0xf9, 0xc9, 0xf9, 0xdc, 0xe4, 0x1b, 0x95, 0x5c, 0x23, 0x92, 0x2c,
		0xc1, 0xe8, 0x26, 0xe7, 0xe3, 0xd8, 0x8b, 0xfd, 0x31, 0xd7, 0x0f, 0x25, 0x4c, 0x29, 0x7a, 0xd4,
		0xbf, 0x66, 0x37, 0xde, 0xc4, 0x8b, 0xaf, 0x93, 0xe4, 0x51, 0x19, 0x4f, 0x18, 0xef, 0x8f, 0xf9,
		0xd0, 0x1f, 0x19, 0x9c, 0xc5, 0xdf, 0xc6, 0xe1, 0x5f, 0x86, 0xcf, 0xa3, 0xd8, 0xe3, 0x7d, 0x56,
		0x79, 0xf8, 0x41, 0xb4, 0xf6, 0x49, 0x65, 0x12, 0x8e, 0xe3, 0x71, 0x7f, 0x1c, 0x44, 0xd9, 0x77,
		0x15, 0x3f, 0xf2, 0xa3, 0x4a, 0xc0, 0x6e, 0x59, 0x30, 0xff, 0xa3, 0x12, 0xf8, 0xfc, 0x2f, 0x23,
		0x8a, 0xbd, 0x98, 0x19, 0x03, 0x2f, 0xf6, 0xae, 0xbc, 0x88, 0x55, 0x82, 0x68, 0x52, 0x89, 0x83,
		0xdb, 0x28, 0xf9, 0x4f, 0x85, 0x7d, 0x8f, 0x19, 0x1f, 0xb0, 0x81, 0xe1, 0x4f, 0x6e, 0xeb, 0x46,
		0xc8, 0xbc, 0xfe, 0xb5, 0x77, 0xe5, 0x07, 0x7e, 0x7c, 0x57, 0x99, 0x84, 0x6c, 0xe8, 0x7f, 0x67,
		0xd1, 0xfc, 0x9b, 0x4a, 0x34, 0xbd, 0x4a, 0xff, 0xd9, 0xec, 0xcf, 0x4a, 0xfa, 0x5b, 0xe5, 0x4a,
		0x71, 0xf2, 0x4c, 0x0f, 0x89, 0xa6, 0x86, 0x1e, 0x7b, 0x23, 0xe9, 0xe6, 0x43, 0x46, 0xa1, 0x92,
		0xc1, 0x49, 0x16, 0x46, 0xbe, 0xf8, 0x7c, 0xa0, 0x1f, 0x6a, 0x55, 0xc9, 0x86, 0x75, 0x9c, 0x86,
		0x0a, 0xfd, 0x50, 0xdb, 0x96, 0x6c, 0x60, 0x9d, 0x34, 0x3c, 0xc8, 0x19, 0x72, 0x17, 0x30, 0x1b,
		0xf7, 0x8d, 0x24, 0x38, 0x4a, 0x28, 0xf6, 0xf5, 0xde, 0x78, 0x1a, 0xf6, 0x99, 0x94, 0x8f, 0x6f,
		0x36, 0x1d, 0xd8, 0xdd, 0xb7, 0x71, 0x98, 0xcc, 0x08, 0x7d, 0x96, 0x08, 0x24, 0xad, 0x98, 0xe8,
		0x9f, 0xbd, 0xc8, 0x0c, 0x47, 0xd3, 0x1b, 0xc6, 0x63, 0xfd, 0x50, 0x8b, 0xc3, 0x29, 0x93, 0x74,
		0xa0, 0x4b, 0xa3, 0xcc, 0x80, 0x09, 0xaa, 0x49, 0x8a, 0x6a, 0x36, 0xfc, 0x50, 0x52, 0x8e, 0x99,
		0xb2, 0x32, 0x69, 0x83, 0xc9, 0x22, 0x1e, 0xcf, 0x86, 0x29, 0xe9, 0xfc, 0x94, 0x93, 0x00, 0x48,
		0x4f, 0x04, 0x28, 0x10, 0x02, 0x42, 0xc4, 0x80, 0x0a, 0x41, 0x20, 0x47, 0x14, 0xc8, 0x11, 0x06,
		0x5a, 0xc4, 0x41, 0x4e, 0x02, 0x21, 0x29, 0x91, 0x90, 0x9e, 0x50, 0x2c, 0x57, 0x11, 0x76, 0x6a,
		0xf2, 0x07, 0xa1, 0xa5, 0xba, 0xc2, 0x4e, 0x4d, 0xf6, 0x00, 0x34, 0x27, 0x1a, 0xdb, 0x92, 0x0f,
		0x53, 0x76, 0xc2, 0x41, 0x89, 0x78, 0x10, 0x24, 0x20, 0xd4, 0x88, 0x08, 0x59, 0x42, 0x42, 0x96,
		0x98, 0xd0, 0x24, 0x28, 0x72, 0x13, 0x15, 0xc9, 0x09, 0x4b, 0xf6, 0xca, 0x9d, 0xbb, 0x09, 0xa3,
		0x15, 0x71, 0xa7, 0x3e, 0x8f, 0xa5, 0xe7, 0x06, 0xcb, 0xfc, 0x60, 0x9f, 0xc0, 0x50, 0xbb, 0x1e,
		0x1f, 0x31, 0x32, 0xdd, 0x69, 0x74, 0xfa, 0x8d, 0xf4, 0x53, 0x9f, 0x93, 0xc9, 0xb8, 0xd9, 0xa0,
		0xd3, 0x66, 0x45, 0xf9, 0x09, 0xe3, 0xda, 0xb8, 0x4f, 0x42, 0xaf, 0x1f, 0xfb, 0x63, 0xde, 0xf0,
		0x47, 0x7e, 0x1c, 0x11, 0xbc, 0x81, 0x16, 0x1b, 0x79, 0xb1, 0x7f, 0x9b, 0x3c, 0xfb, 0xa1, 0x17,
		0x44, 0x0c, 0xcd, 0x8a, 0x45, 0x4c, 0x49, 0xef, 0x3b, 0xdd, 0x29, 0x59, 0xaf, 0x1d, 0xd4, 0x0f,
		0xf6, 0xf6, 0x6b, 0x07, 0xbb, 0x98, 0x9b, 0x98, 0x9b, 0x0a, 0x10, 0x64, 0x3a, 0xa3, 0xbc, 0x84,
		0xd0, 0x78, 0xc3, 0xf4, 0x69, 0xfa, 0x51, 0x6c, 0xc6, 0x71, 0x48, 0x43, 0x6c, 0x9c, 0xfa, 0xdc,
		0x0a, 0x58, 0xa2, 0x85, 0x89, 0x84, 0xaa, 0x24, 0xab, 0x2d, 0x8d, 0xb8, 0xfa, 0xb1, 0x5e, 0xdf,
		0xdb, 0xaf, 0xd7, 0xb7, 0xf7, 0x77, 0xf6, 0xb7, 0x0f, 0x76, 0x77, 0xab, 0x7b, 0x55, 0x02, 0x09,
		0x43, 0x6f, 0x87, 0x03, 0x16, 0xb2, 0xc1, 0xd1, 0x9d, 0x7e, 0xa8, 0xf1, 0x69, 0x10, 0x50, 0x1a,
		0xf2, 0x59, 0xc4, 0x42, 0x12, 0xb9, 0x41, 0xf6, 0x48, 0xc1, 0xbe, 0xc7, 0xa1, 0x67, 0x4c, 0x79,
		0x14, 0x7b, 0x57, 0x01, 0x91, 0xe2, 0x44, 0xc8, 0x86, 0x2c, 0x64, 0xbc, 0x0f, 0x0d, 0x5d, 0x04,
		0xf3, 0x5a, 0xec, 0xd7, 0x39, 0x39, 0xde, 0xad, 0xee, 0x6c, 0x1f, 0x6a, 0xa6, 0xd6, 0x19, 0x07,
		0x7e, 0xff, 0x4e, 0x3b, 0x1e, 0xf3, 0x38, 0x1c, 0x07, 0xda, 0x29, 0xeb, 0x5f, 0x7b, 0xdc, 0x8f,
		0x6e, 0x34, 0x9f, 0x6b, 0x76, 0xcf, 0xb0, 0x7b, 0xda, 0x59, 0xe4, 0xf3, 0xd1, 0x05, 0x37, 0x07,
		0x37, 0x3e, 0xf7, 0xa3, 0x38, 0x4c, 0xb9, 0x9b, 0xe6, 0x78, 0xa3, 0x68, 0x4b, 0x8b, 0xa6, 0x57,
		0x86, 0xd3, 0x3c, 0xd7, 0xaa, 0x5b, 0x3a, 0x21, 0xdd, 0x42, 0xac, 0x7e, 0x9f, 0x8d, 0x7b, 0xa9,
		0x8e, 0x7f, 0x3f, 0x4d, 0x88, 0x91, 0x7f, 0xaa, 0x25, 0xfd, 0xec, 0x06, 0x96, 0x4b, 0xfb, 0x45,
		0xcc, 0x23, 0xa8, 0x21, 0xa8, 0x21, 0x3c, 0x3f, 0xb2, 0x23, 0x93, 0xb5, 0xaf, 0x46, 0xf2, 0x3d,
		0x61, 0xd9, 0x38, 0xd5, 0xda, 0x1b, 0x16, 0x7b, 0x23, 0x19, 0xf7, 0x87, 0xc9, 0x3b, 0x85, 0xd0,
		0x6d, 0x4f, 0x5c, 0xd0, 0xe9, 0xdf, 0xae, 0x19, 0x97, 0x56, 0xbb, 0x11, 0x68, 0xc4, 0xde, 0xda,
		0x9a, 0x45, 0x8c, 0x4a, 0x7c, 0x37, 0x61, 0xda, 0xbf, 0xb5, 0xdf, 0xe6, 0xfd, 0x23, 0x46, 0x10,
		0x0d, 0xae, 0x8c, 0xe4, 0xc3, 0xe8, 0xd0, 0xee, 0x3c, 0xb0, 0x91, 0x34, 0x3f, 0xfd, 0x86, 0xce,
		0xed, 0x5c, 0x05, 0x56, 0x0a, 0x63, 0xf4, 0x6d, 0x17, 0xa7, 0x9d, 0x5e, 0x8d, 0x73, 0x79, 0x09,
		0xa9, 0xc4, 0x33, 0xb0, 0xc1, 0xa2, 0x7e, 0xe8, 0x4f, 0xa4, 0xe7, 0x7f, 0x2b, 0xa1, 0xb0, 0xcd,
		0x83, 0x3b, 0xcd, 0xe7, 0xfd, 0x60, 0x3a, 0x60, 0x5a, 0x7c, 0xcd, 0xb4, 0xd8, 0x1b, 0x69, 0xfd,
		0x31, 0x8f, 0x3d, 0x9f, 0xb3, 0x50, 0x4b, 0xa6, 0x68, 0xfa, 0xf1, 0x42, 0x3d, 0xfb, 0x91, 0x96,
		0xe0, 0xe6, 0x82, 0x4b, 0x5f, 0x8e, 0xa2, 0x54, 0x82, 0x5a, 0x8e, 0x8a, 0x83, 0x25, 0x18, 0x11,
		0x58, 0x52, 0xa0, 0x58, 0x6c, 0x5a, 0x09, 0x92, 0x6f, 0x99, 0x01, 0x28, 0x2b, 0xa8, 0x54, 0x56,
		0x78, 0x87, 0xb2, 0x15, 0x25, 0xa5, 0x06, 0x0b, 0x1e, 0xc1, 0x65, 0x16, 0x19, 0x1d, 0x2d, 0xa2,
		0x38, 0x9c, 0xf6, 0x63, 0x3e, 0x67, 0x33, 0xad, 0xd9, 0x53, 0xb3, 0xe7, 0x0f, 0xcd, 0xed, 0xcc,
		0x1f, 0x95, 0x6b, 0x47, 0x7e, 0xe4, 0x36, 0x93, 0x67, 0xe4, 0x36, 0xa3, 0x89, 0xeb, 0x04, 0xb7,
		0xae, 0x35, 0x7f, 0x14, 0xf6, 0xe4, 0xb6, 0xde, 0x5d, 0x7a, 0x10, 0xee, 0x6c, 0x67, 0x8f, 0xdb,
		0x4b, 0xef, 0xdb, 0x75, 0xbc, 0x11, 0x8c, 0x87, 0xa4, 0x0f, 0x08, 0x7a, 0xec, 0x8d, 0xf6, 0xea,
		0x52, 0x5b, 0x0f, 0xed, 0xd5, 0x61, 0x3e, 0xf4, 0x4b, 0xc3, 0x82, 0xf9, 0xd0, 0x1b, 0x80, 0x06,
		0xf3, 0xa1, 0x3c, 0x34, 0x18, 0xcc, 0x87, 0x72, 0x97, 0x59, 0x30, 0x1f, 0x22, 0x49, 0xb2, 0x61,
		0x3e, 0xf4, 0xb6, 0x78, 0x0c, 0xf3, 0x21, 0xf5, 0x88, 0x00, 0x05, 0x42, 0x40, 0x88, 0x18, 0x50,
		0x21, 0x08, 0xe4, 0x88, 0x02, 0x39, 0xc2, 0x40, 0x8b, 0x38, 0xc8, 0x49, 0x20, 0x24, 0x25, 0x12,
		0xd2, 0x13, 0x0a, 0xc9, 0x2b, 0x09, 0xa4, 0x2a, 0x0b, 0x4f, 0x11, 0x0d, 0x98, 0x0f, 0x6d, 0x0e,
		0xf1, 0x20, 0x48, 0x40, 0xa8, 0x11, 0x11, 0xb2, 0x84, 0x84, 0x2c, 0x31, 0xa1, 0x49, 0x50, 0xe4,
		0x26, 0x2a, 0x92, 0x13, 0x96, 0xec, 0x95, 0xd3, 0x34, 0x1f, 0x92, 0x9e, 0x1b, 0x2c, 0xf3, 0x83,
		0x8f, 0x30, 0x1f, 0xca, 0xf9, 0x0b, 0xe6, 0x43, 0xc5, 0x0e, 0x1a, 0xe6, 0x43, 0x65, 0xc5, 0x38,
		0x98, 0x0f, 0x09, 0x98, 0x92, 0x94, 0xcd, 0x87, 0x68, 0xba, 0x4a, 0x60, 0x96, 0x82, 0x2a, 0x2b,
		0x34, 0x4a, 0xd8, 0x10, 0xbd, 0x65, 0xfa, 0xc0, 0x86, 0xa8, 0xf0, 0xfc, 0x06, 0x1b, 0xa2, 0x32,
		0x87, 0x0c, 0x1b, 0xa2, 0x9c, 0x9e, 0x28, 0x6c, 0x88, 0xa0, 0xa6, 0x57, 0x99, 0x57, 0x51, 0x36,
		0x44, 0x35, 0xd8, 0x10, 0x09, 0x18, 0x37, 0x6c, 0x88, 0x24, 0xb8, 0x81, 0x42, 0x6d, 0x88, 0x6a,
		0xb0, 0x21, 0x82, 0x1a, 0xc2, 0xf3, 0x23, 0x3c, 0x32, 0xd8, 0x10, 0xbd, 0x6d, 0x9c, 0xca, 0xed,
		0x8f, 0xdb, 0xab, 0xc3, 0x88, 0x88, 0xee, 0x88, 0x60, 0x44, 0xf4, 0xf2, 0x31, 0xc2, 0x88, 0xe8,
		0x6d, 0xea, 0xec, 0x95, 0x06, 0x2d, 0x7b, 0x75, 0x58, 0x11, 0xe5, 0x2b, 0xb2, 0x60, 0x45, 0x54,
		0xb0, 0x7e, 0x7a, 0x03, 0xd2, 0x61, 0x46, 0xf4, 0x8a, 0x67, 0xaf, 0x8c, 0x19, 0xd1, 0x5e, 0xfd,
		0x97, 0xcc, 0x58, 0x6a, 0xb0, 0x23, 0x2a, 0x26, 0x32, 0xc2, 0x8e, 0x48, 0x6c, 0xa0, 0x7c, 0xdb,
		0x1c, 0x40, 0x81, 0x41, 0xa5, 0x02, 0x03, 0x0c, 0x89, 0x48, 0x29, 0x36, 0x18, 0x12, 0x09, 0x2f,
		0xb8, 0x6c, 0xaa, 0x25, 0xd1, 0x5e, 0x1d, 0xa6, 0x44, 0xd2, 0x07, 0x05, 0x3d, 0x96, 0x71, 0xcb,
		0xc0, 0xfd, 0xce, 0xc1, 0x64, 0x74, 0x72, 0x5a, 0x12, 0x6d, 0xc3, 0x92, 0xe8, 0xd7, 0x06, 0x06,
		0x4b, 0x22, 0x95, 0x35, 0x19, 0x2c, 0x89, 0x0a, 0x95, 0x5a, 0xb0, 0x24, 0x22, 0x49, 0xb3, 0xa5,
		0xdd, 0x88, 0x97, 0x45, 0xbc, 0x80, 0x79, 0xc3, 0x90, 0x0d, 0x65, 0x8c, 0x78, 0x0b, 0xcb, 0x1f,
		0x09, 0xcf, 0xf9, 0xd7, 0x3b, 0x73, 0x65, 0xb2, 0x52, 0x2b, 0x06, 0xcf, 0x95, 0x79, 0x24, 0x92,
		0xc4, 0x86, 0x24, 0x51, 0x4a, 0x46, 0x69, 0xe5, 0x6c, 0xde, 0x97, 0xb7, 0x49, 0x9f, 0x54, 0x33,
		0xbe, 0xc4, 0x4d, 0xf7, 0x12, 0x37, 0xd7, 0xcb, 0x12, 0x2c, 0x24, 0xad, 0xd3, 0xa9, 0x55, 0x9f,
		0x93, 0x88, 0xfc, 0x14, 0x5e, 0x91, 0x93, 0x83, 0xa3, 0x94, 0xcf, 0x08, 0xca, 0x1d, 0x41, 0xc9,
		0xe1, 0x45, 0xb6, 0xb0, 0xa2, 0x48, 0x38, 0x29, 0x77, 0x6e, 0x95, 0x87, 0xe8, 0x12, 0xd1, 0xac,
		0x4f, 0xf9, 0x80, 0x0d, 0x7d, 0xce, 0x06, 0xc6, 0xe2, 0x25, 0x94, 0x0d, 0xe8, 0x7b, 0x4f, 0x9b,
		0xb5, 0xa1, 0x95, 0x3c, 0xeb, 0xe5, 0xf0, 0xd0, 0x95, 0xa6, 0x42, 0x2d, 0x53, 0x45, 0x5a, 0xc2,
		0x0a, 0xb4, 0x6c, 0x15, 0x67, 0x69, 0x2b, 0xcc, 0xd2, 0x56, 0x94, 0xe5, 0xac, 0x20, 0x6f, 0x36,
		0xf3, 0x92, 0xc5, 0x53, 0x76, 0x2d, 0x3b, 0xc9, 0x33, 0xcf, 0x9f, 0xca, 0x9f, 0xb2, 0x4c, 0x77,
		0xb9, 0xac, 0xe8, 0xa5, 0x5b, 0xf0, 0x95, 0x71, 0xa1, 0x57, 0xe2, 0x05, 0x5e, 0x59, 0x17, 0x76,
		0xa5, 0x5f, 0xd0, 0x95, 0x7e, 0x21, 0x57, 0xee, 0x05, 0x5c, 0x2c, 0xca, 0xc8, 0x98, 0x96, 0xef,
		0x2b, 0x22, 0x52, 0x9e, 0x19, 0x23, 0xf5, 0x59, 0x31, 0x38, 0x24, 0x8e, 0x7e, 0xa2, 0x26, 0x90,
		0xb0, 0x65, 0x4f, 0xdc, 0x64, 0x12, 0x38, 0x99, 0x44, 0x4e, 0x23, 0xa1, 0xcb, 0x95, 0xd8, 0x25,
		0x4b, 0xf0, 0xd2, 0x26, 0xfa, 0x6c, 0x60, 0x01, 0xe3, 0xa3, 0x74, 0xf9, 0x43, 0xf2, 0x53, 0xe2,
		0xe6, 0xe3, 0x94, 0xfb, 0x98, 0xb8, 0x6d, 0x1c, 0x13, 0xa7, 0x1c, 0x25, 0x20, 0x44, 0x0d, 0xa8,
		0x50, 0x04, 0x72, 0x54, 0x81, 0x1c, 0x65, 0xa0, 0x45, 0x1d, 0xe4, 0xa4, 0x10, 0x92, 0x52, 0x89,
		0xec, 0xd5, 0x4a, 0x7f, 0xda, 0xca, 0xca, 0x29, 0x2b, 0x1f, 0x65, 0x8e, 0x97, 0xf3, 0xf4, 0x2d,
		0xb1, 0x97, 0x31, 0x91, 0x43, 0x55, 0x68, 0x78, 0x70, 0xd3, 0x39, 0xb6, 0x8c, 0xd8, 0xe1, 0x29,
		0x64, 0x8f, 0x63, 0xa0, 0x77, 0x0c, 0xc3, 0x0f, 0x1a, 0xe6, 0xf1, 0xf4, 0xa6, 0x5a, 0x6d, 0x77,
		0x17, 0x93, 0x0d, 0x93, 0x8d, 0x00, 0x31, 0x95, 0x7f, 0x74, 0x97, 0x30, 0x8d, 0xa1, 0x1a, 0xcc,
		0xe5, 0x74, 0x66, 0x58, 0x93, 0x16, 0x12, 0x3a, 0x34, 0x3c, 0x54, 0x15, 0x28, 0x0a, 0xbe, 0x72,
		0x80, 0x28, 0x0a, 0xe6, 0x3a, 0x54, 0x14, 0x05, 0x0b, 0x1a, 0x30, 0x8a, 0x82, 0x9b, 0xc7, 0x6e,
		0x50, 0x14, 0x7c, 0x6b, 0xc4, 0x44, 0x51, 0xf0, 0xed, 0x43, 0x44, 0x51, 0x30, 0xaf, 0x4a, 0x05,
		0x8a, 0x82, 0xa8, 0x53, 0x28, 0x50, 0xa7, 0x40, 0x51, 0xb0, 0x98, 0xa9, 0x86, 0xa2, 0x20, 0x26,
		0x1b, 0x0d, 0x62, 0x2a, 0xff, 0xe8, 0x50, 0x14, 0x24, 0x1b, 0xcc, 0xf5, 0xdb, 0x79, 0x3c, 0x94,
		0xbc, 0x2a, 0x38, 0x1b, 0x26, 0xca, 0x82, 0xaf, 0x19, 0x1e, 0xca, 0x82, 0x39, 0x02, 0x11, 0x65,
		0xc1, 0xfc, 0xa6, 0x0d, 0xca, 0x82, 0x05, 0x0f, 0x18, 0x65, 0x41, 0x55, 0x05, 0x18, 0xa1, 0xb2,
		0xe0, 0x95, 0xcf, 0xbd, 0xf0, 0x8e, 0x40, 0x5d, 0xf0, 0x00, 0x34, 0x96, 0xe0, 0x88, 0x70, 0x20,
		0xca, 0xcb, 0xc6, 0x47, 0xdc, 0x21, 0x6d, 0xcd, 0x0b, 0x6b, 0xed, 0x13, 0x19, 0xcf, 0xa3, 0xc5,
		0x51, 0x21, 0x8f, 0x41, 0x11, 0x47, 0x85, 0xa8, 0xa1, 0x34, 0xb1, 0x31, 0x5d, 0x4d, 0x45, 0x89,
		0x8d, 0xe9, 0x9b, 0xa6, 0x1c, 0xb1, 0x31, 0x9d, 0x3e, 0x01, 0xc5, 0x51, 0x21, 0x6f, 0x4f, 0xb0,
		0x38, 0x2a, 0x84, 0x3c, 0xcf, 0x85, 0x2b, 0xd5, 0x6a, 0xa2, 0xc4, 0x51, 0x21, 0xbf, 0x32, 0x2a,
		0x1c, 0x15, 0x92, 0xcb, 0x60, 0x71, 0x54, 0x08, 0xe1, 0x60, 0x81, 0xa3, 0x42, 0x4a, 0xaa, 0x5c,
		0x6d, 0xc6, 0xf1, 0x21, 0x67, 0x8b, 0xbb, 0xc6, 0x39, 0x22, 0xf2, 0x8c, 0x00, 0xe7, 0x88, 0xa8,
		0x1d, 0x6b, 0x36, 0xf6, 0x44, 0x91, 0x77, 0x1b, 0x34, 0x9b, 0x16, 0x34, 0xbf, 0xd4, 0x5a, 0x98,
		0x1c, 0xc4, 0x5e, 0x1e, 0x22, 0x2f, 0x35, 0x71, 0x97, 0x88, 0xa8, 0x4b, 0x44, 0xcc, 0xcb, 0x9a,
		0xbe, 0x92, 0x24, 0x41, 0xe2, 0xc9, 0xaf, 0x44, 0x16, 0x5d, 0x1c, 0x6b, 0x2e, 0x27, 0x7f, 0x8b,
		0xcf, 0x9e, 0x62, 0xaf, 0x28, 0x78, 0xa2, 0x97, 0x3d, 0xc1, 0xa9, 0x4e, 0x6c, 0xb1, 0xe0, 0x17,
		0x07, 0x41, 0x31, 0x57, 0x12, 0x04, 0x72, 0x9d, 0x7d, 0x8f, 0x43, 0xcf, 0x98, 0x26, 0xe8, 0xb8,
		0x0a, 0xc4, 0xae, 0x40, 0xe9, 0x21, 0x1b, 0xb2, 0x90, 0xf1, 0xbe, 0xf8, 0xad, 0xb3, 0x25, 0xcc,
		0xe2, 0xc5, 0x32, 0x5a, 0xf7, 0xe4, 0x78, 0x77, 0x67, 0x7b, 0xf7, 0x50, 0xb3, 0x7b, 0x86, 0xdd,
		0xd3, 0xd2, 0x0c, 0x12, 0xf9, 0x63, 0x1e, 0x69, 0xc3, 0x71, 0xa8, 0x39, 0xa1, 0x37, 0x1c, 0xfa,
		0x7d, 0xcd, 0xe2, 0x23, 0x9f, 0x33, 0x16, 0xfa, 0x7c, 0xb4, 0xa5, 0x39, 0xcd, 0xf3, 0x0b, 0x5e,
		0xdd, 0xd9, 0x2d, 0x21, 0x47, 0x96, 0xdd, 0x4c, 0xb0, 0xdc, 0x2c, 0x70, 0x0f, 0x97, 0x92, 0x98,
		0x9e, 0x2c, 0xfd, 0x00, 0x2b, 0xeb, 0xfd, 0x6f, 0xc1, 0x93, 0xea, 0x44, 0x41, 0xd8, 0xd5, 0x2e,
		0xc5, 0x01, 0x41, 0xff, 0x76, 0xcd, 0xf8, 0x26, 0x05, 0xcc, 0x95, 0x85, 0x73, 0xed, 0xdf, 0xda,
		0x6f, 0xf3, 0x0e, 0x17, 0x23, 0x88, 0x06, 0x57, 0x46, 0xf2, 0x61, 0x74, 0x68, 0x7d, 0x75, 0xac,
		0x56, 0xc3, 0x6a, 0xb8, 0x76, 0xe7, 0xbc, 0xee, 0x76, 0x2d, 0xf3, 0xf8, 0xb3, 0x79, 0x64, 0x37,
		0x6d, 0xe7, 0x8f, 0xdf, 0x36, 0x3c, 0x68, 0xa6, 0x68, 0x41, 0xbc, 0xbc, 0x8f, 0x97, 0x6f, 0x85,
		0xd3, 0xbb, 0x0d, 0xa8, 0x6b, 0xe8, 0x0d, 0x16, 0xf5, 0x43, 0x7f, 0x52, 0x6a, 0x51, 0x23, 0x0b,
		0x00, 0x6d, 0x1e, 0xdc, 0x69, 0x3e, 0xef, 0x07, 0xd3, 0x01, 0xd3, 0xe2, 0x6b, 0xa6, 0x2d, 0xc4,
		0x87, 0x66, 0x77, 0x6e, 0xeb, 0xda, 0xb2, 0xf8, 0xd0, 0xfa, 0x63, 0x1e, 0x7b, 0x3e, 0x67, 0xe1,
		0x05, 0x4f, 0x90, 0x9f, 0xfe, 0xb8, 0xd3, 0x3c, 0xd7, 0xd2, 0x97, 0xed, 0x47, 0x5a, 0x75, 0x67,
		0x77, 0xab, 0xac, 0xe9, 0x20, 0x41, 0x5f, 0xe6, 0x72, 0x64, 0x18, 0x2c, 0xbd, 0xe3, 0x12, 0x8b,
		0x2f, 0x32, 0x35, 0x59, 0xae, 0x04, 0x8a, 0xdc, 0x61, 0x87, 0x62, 0x10, 0x6d, 0x8e, 0xa7, 0x94,
		0xee, 0x2f, 0xa9, 0xa8, 0x45, 0xac, 0x98, 0x25, 0x30, 0x30, 0x16, 0x50, 0x85, 0x16, 0x13, 0x71,
		0x8a, 0x9f, 0x81, 0x02, 0xe6, 0x84, 0x7e, 0x8f, 0x81, 0x68, 0x15, 0x01, 0xa2, 0x66, 0x47, 0x46,
		0x77, 0x9e, 0x1c, 0x89, 0xa0, 0xc8, 0x20, 0xf6, 0x18, 0x4d, 0xe1, 0xbb, 0x90, 0xca, 0xd8, 0x5d,
		0x54, 0xe2, 0xae, 0xa1, 0xb2, 0x58, 0x67, 0xe9, 0xbb, 0x7c, 0x4a, 0x27, 0x96, 0xe5, 0xee, 0xca,
		0x51, 0x6b, 0x95, 0x42, 0xf4, 0xb1, 0x8d, 0x3a, 0x67, 0xfe, 0xe8, 0xfa, 0x6a, 0x1c, 0x46, 0xe2,
		0x27, 0xce, 0x22, 0x56, 0xdc, 0x0f, 0x41, 0x30, 0x6e, 0xcb, 0x39, 0x47, 0xb9, 0xb4, 0xed, 0xa8,
		0x65, 0x6e, 0x37, 0x95, 0x60, 0x3b, 0xa9, 0x4c, 0xc5, 0xca, 0x72, 0x5b, 0xe0, 0xa4, 0x2c, 0x57,
		0x96, 0xb6, 0x9d, 0x53, 0xed, 0x9e, 0x8e, 0xb2, 0xce, 0x01, 0xce, 0xa2, 0x7a, 0xf9, 0x65, 0xd5,
		0x6c, 0x24, 0x65, 0xb5, 0xbd, 0x96, 0x7a, 0x5c, 0x7f, 0xe9, 0xee, 0x07, 0x32, 0xb8, 0x1c, 0x48,
		0xe4, 0x66, 0x20, 0x8b, 0x6b, 0x81, 0x74, 0xee, 0x04, 0xd2, 0xb9, 0x10, 0xc8, 0xe5, 0x36, 0xb0,
		0x59, 0x5b, 0x05, 0xca, 0x3e, 0xbe, 0x5e, 0xcf, 0x6a, 0xb1, 0xe5, 0x4f, 0xd4, 0x45, 0xec, 0xba,
		0x1f, 0x52, 0xc9, 0xf3, 0xa2, 0xdc, 0x84, 0x26, 0x4d, 0x62, 0x93, 0x29, 0xc1, 0x49, 0x98, 0xe8,
		0x64, 0x4b, 0x78, 0xd2, 0x26, 0x3e, 0x69, 0x13, 0xa0, 0x9c, 0x89, 0xb0, 0xdc, 0x84, 0x58, 0x72,
		0x62, 0x94, 0x26, 0x41, 0xae, 0x25, 0x4a, 0x79, 0xe6, 0xf7, 0xc3, 0x7c, 0x29, 0xcb, 0xf4, 0x96,
		0x23, 0x6d, 0x4a, 0x97, 0x3e, 0x65, 0x4c, 0xa3, 0x12, 0xa7, 0x53, 0x59, 0xd3, 0xaa, 0xf4, 0xe9,
		0x55, 0xfa, 0x34, 0x2b, 0x77, 0xba, 0x95, 0x23, 0xed, 0x4a, 0x92, 0x7e, 0xa5, 0x4b, 0xc3, 0xf7,
		0xe9, 0x78, 0x20, 0xaf, 0x65, 0xad, 0x3f, 0x80, 0x61, 0x2d, 0xc9, 0xd4, 0x2c, 0x73, 0x8a, 0x26,
		0x90, 0xaa, 0x65, 0x4f, 0xd9, 0x64, 0x52, 0x37, 0x99, 0x14, 0x4e, 0x23, 0x95, 0xcb, 0x95, 0xd2,
		0x25, 0x4b, 0xed, 0xd9, 0x2b, 0x84, 0x61, 0x6d, 0x0e, 0x9a, 0x97, 0x84, 0x61, 0xad, 0x3f, 0x80,
		0x5d, 0xad, 0xf4, 0x73, 0x52, 0x9f, 0x9d, 0x9f, 0x21, 0x2d, 0xc9, 0x9d, 0x0d, 0x4f, 0x4e, 0x9e,
		0x5b, 0x05, 0xcf, 0x05, 0xcf, 0x05, 0xcf, 0x05, 0xcf, 0x05, 0xcf, 0x45, 0x4e, 0x7d, 0xf8, 0x0a,
		0x65, 0x2b, 0x65, 0x65, 0x03, 0x93, 0xb0, 0xa4, 0xb5, 0x16, 0x8c, 0xa5, 0x2b, 0x6d, 0x3d, 0x4c,
		0xfd, 0x38, 0xfd, 0x57, 0x3d, 0x2a, 0x40, 0x88, 0x12, 0x50, 0xa1, 0x06, 0xe4, 0x28, 0x02, 0x39,
		0xaa, 0x40, 0x8b, 0x32, 0xc8, 0x49, 0x1d, 0x24, 0xa5, 0x10, 0xd9, 0xab, 0xa5, 0x73, 0xfa, 0xef,
		0xd4, 0xe7, 0xf1, 0x5e, 0x9d, 0xc0, 0xe9, 0xbf, 0x1f, 0x25, 0x1e, 0x62, 0xd7, 0xe3, 0x23, 0xf1,
		0xd6, 0x86, 0x2f, 0xfd, 0x92, 0x3b, 0xe1, 0x68, 0x73, 0x57, 0x70, 0xe9, 0x33, 0x63, 0x36, 0xd8,
		0x73, 0x2f, 0x98, 0x32, 0x79, 0x89, 0xdb, 0xda, 0x78, 0x4f, 0x42, 0xaf, 0x1f, 0xfb, 0x63, 0xde,
		0xf0, 0x47, 0xbe, 0x6c, 0xc7, 0x27, 0xfd, 0x3c, 0x56, 0xb1, 0x91, 0x17, 0xfb, 0xb7, 0x4c, 0xaa,
		0xd3, 0x80, 0x08, 0xa6, 0xa5, 0xd5, 0xa9, 0xe6, 0x7d, 0xa7, 0x37, 0xd5, 0xe4, 0x3e, 0x56, 0x0b,
		0xb3, 0x0f, 0x54, 0x95, 0xf0, 0xe8, 0x2e, 0xdf, 0xe1, 0x79, 0x11, 0x8d, 0xee, 0xfa, 0x0d, 0x8b,
		0x43, 0xbf, 0x2f, 0x7f, 0x99, 0x70, 0x3e, 0x4e, 0x94, 0x0a, 0x5f, 0x33, 0x3c, 0x94, 0x0a, 0x73,
		0x44, 0x22, 0x4a, 0x85, 0xf9, 0x4d, 0x1b, 0x94, 0x0a, 0x0b, 0x1e, 0x30, 0x4a, 0x85, 0xaa, 0x6a,
		0x32, 0x42, 0xa5, 0xc2, 0x6f, 0xfe, 0x80, 0x19, 0x52, 0x27, 0xf0, 0xe5, 0x24, 0xbe, 0x8f, 0x7a,
		0xe1, 0x1b, 0xbf, 0x50, 0x2f, 0x2c, 0xa8, 0x88, 0x81, 0x8a, 0x05, 0x2a, 0x16, 0x14, 0x72, 0xd3,
		0xea, 0x54, 0x23, 0x59, 0x2f, 0xdc, 0xdb, 0xdf, 0xdf, 0xaf, 0xa1, 0x46, 0x88, 0x19, 0x47, 0x82,
		0xa3, 0xca, 0x3f, 0x3a, 0xd4, 0x08, 0x29, 0x8e, 0x48, 0xb6, 0x4e, 0x4b, 0xc9, 0x4e, 0x93, 0x5f,
		0x1b, 0x9f, 0xdc, 0x47, 0x17, 0xac, 0x9a, 0xc5, 0x57, 0x32, 0xf7, 0xe0, 0xec, 0xbb, 0xca, 0xfd,
		0x60, 0xb2, 0x41, 0xcc, 0x76, 0x65, 0x60, 0x77, 0x8f, 0xec, 0xf3, 0x43, 0x8f, 0xa6, 0x57, 0xc9,
		0x3b, 0x97, 0x78, 0x7f, 0xcf, 0x7c, 0x80, 0xd8, 0xe1, 0xf3, 0x2b, 0xc3, 0xc2, 0x0e, 0x9f, 0x37,
		0x40, 0x0d, 0x3b, 0x7c, 0x5e, 0x3f, 0x1d, 0xb0, 0xc3, 0x27, 0x6f, 0xd2, 0x82, 0x1d, 0x3e, 0xd4,
		0x79, 0xa7, 0xb4, 0x3b, 0x7c, 0x66, 0x39, 0x55, 0xfe, 0xe5, 0xfb, 0xf9, 0x38, 0xe5, 0x5e, 0xbe,
		0xaf, 0x62, 0xf9, 0x5e, 0x39, 0x4a, 0x40, 0x88, 0x1a, 0x50, 0xa1, 0x08, 0xe4, 0xa8, 0x02, 0x39,
		0xca, 0x40, 0x8b, 0x3a, 0xc8, 0x49, 0x21, 0x24, 0xa5, 0x12, 0xd2, 0x53, 0x8a, 0x6c, 0x80, 0xde,
		0xe0, 0xff, 0x79, 0x7d, 0xc6, 0xfb, 0x77, 0x46, 0xe4, 0x0f, 0x22, 0xf9, 0xa3, 0xd1, 0x22, 0xc0,
		0x3f, 0x18, 0xb7, 0xe4, 0x33, 0x5c, 0x6e, 0xea, 0x41, 0x86, 0x82, 0x50, 0xa2, 0x22, 0x04, 0x29,
		0x09, 0x35, 0x6a, 0x42, 0x96, 0xa2, 0x90, 0xa5, 0x2a, 0x34, 0x29, 0x8b, 0xdc, 0xd4, 0x45, 0x72,
		0x0a, 0x43, 0x86, 0xca, 0x3c, 0x4e, 0x69, 0xe8, 0x04, 0xb1, 0x47, 0x99, 0x0d, 0x95, 0x40, 0x46,
		0x83, 0xe0, 0x90, 0x23, 0x3a, 0x14, 0x09, 0x0f, 0x61, 0xe2, 0x43, 0x95, 0x00, 0x91, 0x27, 0x42,
		0xe4, 0x09, 0x11, 0x6d, 0x62, 0x44, 0x83, 0x20, 0x11, 0x21, 0x4a, 0xe4, 0x08, 0x53, 0x36, 0x60,
		0x39, 0x9d, 0x63, 0x7f, 0x39, 0xcf, 0xc8, 0xe8, 0x2c, 0xab, 0x18, 0x71, 0x22, 0x4b, 0xa0, 0x28,
		0x13, 0x29, 0x05, 0x08, 0x15, 0x75, 0x62, 0xa5, 0x0c, 0xc1, 0x52, 0x86, 0x68, 0xa9, 0x41, 0xb8,
		0x68, 0x11, 0x2f, 0x62, 0x04, 0x8c, 0x2c, 0x11, 0xcb, 0x06, 0x3e, 0x0c, 0xbc, 0x51, 0x44, 0x37,
		0x58, 0x2e, 0xf2, 0xd5, 0xec, 0x36, 0x88, 0xc6, 0x17, 0xb9, 0x4d, 0x3f, 0x94, 0x25, 0x6a, 0x2a,
		0x10, 0x36, 0x85, 0x88, 0x9b, 0x2a, 0x04, 0x4e, 0x39, 0x22, 0xa7, 0x1c, 0xa1, 0x53, 0x8b, 0xd8,
		0xd1, 0x24, 0x78, 0x44, 0x89, 0x5e, 0x06, 0x1d, 0xe9, 0x4d, 0x53, 0x7e, 0x39, 0x63, 0x30, 0x3e,
		0xbd, 0x61, 0xe1, 0x6c, 0x2f, 0x24, 0xe1, 0xac, 0xb1, 0xa8, 0x72, 0xd5, 0x09, 0xdf, 0x83, 0xc5,
		0xa7, 0x37, 0xf4, 0xf3, 0x9e, 0x33, 0xee, 0xc5, 0xa1, 0xcf, 0x47, 0xe4, 0xef, 0x24, 0xbd, 0x9b,
		0xed, 0x64, 0x8e, 0x98, 0x8d, 0x46, 0xd7, 0xea, 0xf5, 0xdc, 0x13, 0xf3, 0xd4, 0x6e, 0xfe, 0x41,
		0x3c, 0x8f, 0xa7, 0xb7, 0x55, 0x4d, 0x6e, 0xeb, 0xc8, 0x3c, 0xfe, 0x72, 0xd6, 0x51, 0xe1, 0x76,
		0x6a, 0xc9, 0xed, 0x9c, 0x9b, 0xcd, 0x33, 0x4b, 0x85, 0xbb, 0xd9, 0x49, 0xee, 0xa6, 0xd9, 0x3e,
		0x36, 0x9b, 0x2a, 0xdc, 0x4d, 0x3d, 0xb9, 0x9b, 0x9e, 0xe5, 0xe8, 0xa4, 0x6f, 0xe5, 0xc7, 0x07,
		0xea, 0x51, 0xd9, 0x4e, 0x89, 0xae, 0x02, 0x21, 0xf9, 0x41, 0x34, 0x26, 0x5b, 0x78, 0x58, 0xb9,
		0xa9, 0x79, 0x2c, 0x26, 0xb7, 0x4e, 0xf7, 0xe8, 0xcd, 0xcc, 0x62, 0xd7, 0xa1, 0xb6, 0xa3, 0xc0,
		0xbd, 0x24, 0x91, 0xeb, 0x50, 0xab, 0x2b, 0x70, 0x27, 0xb3, 0xfc, 0x78, 0xa8, 0xd5, 0x68, 0x07,
		0x62, 0x28, 0x74, 0x24, 0xbe, 0x5f, 0x89, 0x41, 0x7e, 0x14, 0x9b, 0x71, 0x1c, 0xd2, 0x56, 0xe9,
		0xa7, 0x3e, 0xb7, 0x02, 0x76, 0xc3, 0x38, 0x25, 0x37, 0xb6, 0xc7, 0xef, 0xc4, 0xfb, 0xbe, 0x74,
		0x27, 0x74, 0xcf, 0xd1, 0x78, 0xf4, 0xe6, 0xda, 0xe1, 0x80, 0x85, 0x6c, 0x70, 0x74, 0xa7, 0x1f,
		0x6a, 0x7c, 0x1a, 0x04, 0x2a, 0xdc, 0xca, 0x59, 0xc4, 0x42, 0x32, 0x76, 0x7a, 0x6a, 0xc4, 0x5b,
		0x82, 0xb1, 0x56, 0xbf, 0x9d, 0x3b, 0x5d, 0x12, 0x5f, 0x41, 0x9e, 0xdd, 0x06, 0x56, 0x90, 0xcb,
		0x18, 0x3e, 0x56, 0x90, 0x25, 0x9a, 0x08, 0x58, 0x41, 0x96, 0x67, 0x5a, 0x63, 0x05, 0x59, 0xf2,
		0x1b, 0xc2, 0x0a, 0x32, 0x38, 0xd3, 0x2b, 0xa1, 0xa3, 0xce, 0x0a, 0xf2, 0xd4, 0xe7, 0xf1, 0x4e,
		0x4d, 0x81, 0xc5, 0xe3, 0x7d, 0xc2, 0xb7, 0x40, 0xe3, 0x44, 0x8f, 0xe7, 0xbe, 0x14, 0x58, 0x9d,
		0xa0, 0x74, 0x22, 0xc8, 0xb3, 0x37, 0x43, 0xec, 0x84, 0xe1, 0x67, 0xef, 0x87, 0xea, 0xf9, 0x06,
		0xcf, 0xc7, 0x62, 0x6a, 0xe7, 0x1f, 0x28, 0x9a, 0xd6, 0x57, 0x43, 0x81, 0xf7, 0x5d, 0xbd, 0x50,
		0x50, 0xaf, 0x1d, 0xd4, 0x0f, 0xf6, 0xf6, 0x6b, 0x07, 0xbb, 0x88, 0x09, 0x88, 0x09, 0x10, 0x28,
		0x1b, 0x30, 0xfa, 0x4b, 0x94, 0xff, 0x91, 0xf3, 0x9e, 0x08, 0x32, 0xdf, 0x98, 0x3f, 0xba, 0x8e,
		0xe9, 0xd7, 0xff, 0xe7, 0xf7, 0x81, 0x05, 0x80, 0x32, 0x86, 0x8f, 0x05, 0x00, 0x89, 0x66, 0x02,
		0x16, 0x00, 0xe4, 0x99, 0xd6, 0x58, 0x00, 0x90, 0xfc, 0x86, 0xb0, 0x00, 0x00, 0xd6, 0xf4, 0x4a,
		0xe8, 0xa8, 0xb5, 0x00, 0xf0, 0x51, 0x81, 0xfa, 0xff, 0x2e, 0xea, 0xff, 0x25, 0x7f, 0xa1, 0xfe,
		0x2f, 0xd7, 0xcd, 0xa0, 0xfe, 0x4f, 0x25, 0x14, 0xa3, 0xfe, 0x2f, 0x61, 0x28, 0x50, 0xb1, 0xfe,
		0x5f, 0xdb, 0x45, 0xe1, 0x1f, 0xc1, 0x00, 0xc2, 0x64, 0x13, 0x46, 0x8f, 0xc2, 0x3f, 0x46, 0x4c,
		0x3e, 0x35, 0xcb, 0x7e, 0xd8, 0xfb, 0xb3, 0xe3, 0x57, 0xf1, 0x30, 0xf8, 0xd9, 0x11, 0xde, 0xf3,
		0x3f, 0x2b, 0xab, 0x47, 0x6d, 0xad, 0xfe, 0xaf, 0x8c, 0x07, 0xc7, 0xab, 0x33, 0x9f, 0x09, 0xcd,
		0x65, 0xa2, 0x3b, 0x8d, 0x48, 0xef, 0x30, 0x22, 0xba, 0xb0, 0x08, 0xf3, 0xf0, 0x32, 0x81, 0x0e,
		0xf3, 0xf0, 0xf2, 0xa6, 0x2b, 0xcc, 0xc3, 0x65, 0x23, 0x9f, 0x30, 0x0f, 0x07, 0xa7, 0xf9, 0x39,
		0x44, 0xc8, 0x2e, 0x04, 0x66, 0x11, 0x3f, 0x60, 0xde, 0x30, 0x64, 0x43, 0x8a, 0x11, 0x7f, 0xe1,
		0x1b, 0x49, 0x70, 0xef, 0x8f, 0xde, 0x99, 0x4b, 0xc2, 0xad, 0xad, 0x99, 0x48, 0xaa, 0xcc, 0x28,
		0x26, 0xa4, 0xd2, 0x06, 0x8f, 0x94, 0xca, 0xd1, 0x55, 0x5f, 0xd8, 0x1d, 0x35, 0x51, 0x44, 0xd3,
		0x52, 0x88, 0xae, 0x85, 0x90, 0x52, 0x96, 0x41, 0x84, 0x2d, 0x82, 0x08, 0x5b, 0x02, 0x51, 0x89,
		0x86, 0x44, 0x4b, 0xd4, 0x1b, 0x5e, 0x9a, 0xa6, 0x74, 0xde, 0x6c, 0x14, 0x87, 0xd3, 0x7e, 0xcc,
		0xe7, 0x84, 0xbd, 0x35, 0x7b, 0xf4, 0xf6, 0xfc, 0xa6, 0xdd, 0xce, 0xfc, 0x79, 0xbb, 0x76, 0xe4,
		0x47, 0x6e, 0x33, 0x79, 0xd0, 0x6e, 0x33, 0x9a, 0xb8, 0x4e, 0x70, 0xeb, 0x5a, 0xf3, 0xe7, 0x69,
		0x47, 0xdd, 0xa5, 0xa7, 0xe9, 0xb6, 0xe6, 0xcf, 0xd0, 0xcd, 0x7e, 0x49, 0x2f, 0x7d, 0x62, 0xae,
		0xb9, 0x78, 0x44, 0x3d, 0x7f, 0x40, 0x83, 0x8b, 0xfe, 0xc0, 0xb9, 0xf2, 0x2a, 0x47, 0x59, 0x9d,
		0x7d, 0x8f, 0x43, 0xcf, 0x98, 0x26, 0x38, 0xbd, 0x0a, 0x68, 0x48, 0x6d, 0x3d, 0x64, 0x43, 0x16,
		0x32, 0xde, 0xa7, 0xd3, 0xd3, 0x49, 0xf0, 0xdc, 0xf0, 0x41, 0xe8, 0x0d, 0x63, 0xc3, 0x67, 0xf1,
		0x30, 0x2d, 0xcc, 0x19, 0x11, 0x1b, 0x25, 0x6c, 0xd3, 0x08, 0xc7, 0xd3, 0xd8, 0xe7, 0x23, 0x23,
		0x4d, 0x25, 0x91, 0x3f, 0xe6, 0xd1, 0x96, 0x16, 0x4d, 0xaf, 0x0c, 0xa7, 0x79, 0xae, 0xed, 0x54,
		0x0f, 0x2f, 0x78, 0xf2, 0x4d, 0xad, 0xf6, 0x41, 0xab, 0xcd, 0xfe, 0xb3, 0xf3, 0x41, 0xab, 0xd6,
		0xab, 0x5b, 0x1a, 0x0e, 0x20, 0x17, 0x22, 0x1c, 0x17, 0x25, 0xee, 0xfb, 0x39, 0x82, 0x33, 0xc8,
		0x05, 0xf3, 0xd5, 0xa5, 0xaa, 0x76, 0xee, 0x93, 0x08, 0x15, 0xa1, 0x0d, 0x1b, 0xe5, 0xa5, 0xfc,
		0xe8, 0xd7, 0xbf, 0x5d, 0x33, 0x8e, 0x54, 0x5c, 0x5c, 0x2a, 0xce, 0x6a, 0xd8, 0xf1, 0xdd, 0x84,
		0x69, 0xff, 0xd6, 0x34, 0xed, 0xb7, 0xf9, 0x72, 0x99, 0x11, 0x44, 0x83, 0x2b, 0x23, 0xf9, 0x38,
		0x3a, 0xb4, 0x7b, 0x6e, 0xd7, 0x32, 0x8f, 0x3f, 0x9b, 0x47, 0x76, 0xd3, 0x76, 0xfe, 0x70, 0xcd,
		0xc6, 0x7f, 0xdc, 0x9e, 0xdd, 0xf8, 0x0d, 0x89, 0x57, 0x68, 0xe2, 0x4d, 0x27, 0x03, 0x72, 0x6e,
		0x79, 0x39, 0xf7, 0x8d, 0xb3, 0x05, 0xed, 0x69, 0x05, 0xbc, 0x9f, 0x06, 0x8b, 0xfa, 0xa1, 0x3f,
		0x21, 0xd9, 0x67, 0x9a, 0x85, 0xe1, 0x36, 0x0f, 0xee, 0x34, 0x9f, 0xf7, 0x83, 0xe9, 0x80, 0x69,
		0xf1, 0x35, 0xd3, 0xb2, 0x82, 0x97, 0xd6, 0xb3, 0x1b, 0x91, 0xd6, 0x1f, 0xf3, 0xd8, 0xf3, 0x39,
		0x0b, 0xb5, 0x24, 0x06, 0x24, 0x3f, 0x71, 0xc1, 0x17, 0xa4, 0x2e, 0xc5, 0xa2, 0x1f, 0x69, 0x3b,
		0x55, 0x6a, 0xb1, 0x81, 0x70, 0xdb, 0xcf, 0x72, 0x58, 0x1e, 0x2c, 0x21, 0x90, 0xe0, 0x72, 0xb6,
		0x0a, 0x3d, 0x3f, 0x2b, 0x51, 0x3a, 0xa7, 0xc9, 0x84, 0xf5, 0x7c, 0xa8, 0x37, 0x99, 0xd5, 0x1b,
		0x6a, 0xd3, 0x6f, 0x89, 0x17, 0xb4, 0x56, 0xfe, 0x36, 0x6e, 0xc5, 0x4f, 0xee, 0xe8, 0x2b, 0x6f,
		0x74, 0x90, 0x78, 0xde, 0xe9, 0xde, 0xe0, 0xc6, 0xe7, 0xc6, 0x28, 0x1c, 0x4f, 0x27, 0xd2, 0x4f,
		0xba, 0x8c, 0x99, 0x2f, 0x0f, 0x5a, 0xf2, 0x98, 0xb6, 0xe8, 0xa9, 0x94, 0x7c, 0x98, 0x54, 0x36,
		0x89, 0x50, 0xda, 0x14, 0x42, 0x70, 0x13, 0x08, 0x35, 0xf5, 0x47, 0x76, 0x93, 0x07, 0x59, 0x81,
		0x47, 0x73, 0x13, 0x07, 0x7a, 0x46, 0xde, 0xf2, 0xca, 0x1b, 0x7e, 0x48, 0x84, 0x90, 0xa7, 0xdb,
		0xa3, 0xc9, 0x04, 0xaf, 0x45, 0x7e, 0x98, 0x0d, 0x9b, 0x4a, 0xb3, 0x3a, 0x09, 0x42, 0x43, 0x8e,
		0xd8, 0x50, 0x24, 0x38, 0x84, 0x89, 0x0e, 0x55, 0xc2, 0x43, 0x9e, 0xf8, 0x90, 0x27, 0x40, 0xb4,
		0x89, 0x10, 0x0d, 0x42, 0x44, 0x84, 0x18, 0x91, 0x23, 0x48, 0xd9, 0x80, 0x29, 0x55, 0x7d, 0x9e,
		0xcc, 0x36, 0x74, 0xaa, 0x40, 0x4f, 0x91, 0x28, 0x58, 0x89, 0x80, 0x54, 0x29, 0x4c, 0xae, 0xa8,
		0x93, 0x2c, 0x65, 0xc8, 0x96, 0x32, 0xa4, 0x4b, 0x0d, 0xf2, 0x45, 0x8b, 0x84, 0x11, 0x23, 0x63,
		0x19, 0x44, 0xe8, 0x5b, 0x89, 0x90, 0x3d, 0x4c, 0x98, 0xf0, 0x21, 0xc2, 0xc4, 0x0f, 0x0f, 0x20,
		0x7c, 0x82, 0x86, 0x0a, 0x87, 0x05, 0xa8, 0x72, 0x48, 0x80, 0x72, 0x7e, 0xe0, 0xea, 0xf8, 0x80,
		0x13, 0x3e, 0x0c, 0x40, 0x89, 0x43, 0x00, 0x94, 0x3b, 0xfc, 0x17, 0x73, 0x1d, 0x02, 0x61, 0xc3,
		0x47, 0x7d, 0x09, 0x21, 0x56, 0xe0, 0x74, 0x24, 0x69, 0x15, 0xb6, 0x4c, 0x4b, 0x69, 0x5a, 0x86,
		0x2d, 0x67, 0x5d, 0x65, 0xac, 0xc3, 0xb2, 0x9b, 0xa2, 0x6b, 0x21, 0xb6, 0x7e, 0x0b, 0xe4, 0xac,
		0xc4, 0xa8, 0x46, 0x22, 0x82, 0xe6, 0x37, 0x6b, 0xf7, 0x40, 0xcf, 0x0c, 0x47, 0xa1, 0x1a, 0xc5,
		0xa2, 0x32, 0xd7, 0x3d, 0x39, 0xde, 0xdd, 0xd9, 0xde, 0x3d, 0xd4, 0xec, 0x9e, 0x61, 0xf7, 0x34,
		0x2b, 0xb3, 0xf5, 0xd0, 0x86, 0xe3, 0x50, 0x73, 0x42, 0x6f, 0x38, 0xf4, 0xfb, 0x9a, 0xc5, 0x47,
		0x3e, 0x67, 0x2c, 0xf4, 0xf9, 0x68, 0xeb, 0x7e, 0x37, 0xdb, 0xce, 0xa1, 0x36, 0x77, 0xfb, 0xa8,
		0xed, 0x7c, 0xa8, 0xd6, 0xab, 0x1f, 0x16, 0x9e, 0x1f, 0x5b, 0x38, 0x66, 0xba, 0xfc, 0xfb, 0x50,
		0xc0, 0x52, 0x67, 0xed, 0x9e, 0x94, 0x3e, 0x69, 0xba, 0xa0, 0xa9, 0x08, 0xcd, 0x88, 0x51, 0xab,
		0xa4, 0x19, 0xd1, 0x99, 0xb6, 0x89, 0xcc, 0x17, 0x66, 0xba, 0x12, 0x6f, 0xad, 0xcd, 0xba, 0xd7,
		0x28, 0x1d, 0xeb, 0x06, 0x7f, 0x58, 0xa5, 0x03, 0x07, 0x49, 0x7f, 0x58, 0xf8, 0xd1, 0x15, 0xab,
		0x76, 0x1f, 0x3a, 0x6c, 0xfd, 0x9a, 0xbf, 0xd6, 0xa9, 0xdd, 0x72, 0x3f, 0x75, 0xdb, 0x67, 0x1d,
		0x38, 0xd2, 0x89, 0xd5, 0xad, 0x70, 0xa4, 0x2b, 0x59, 0x92, 0xbe, 0x79, 0xbe, 0xc0, 0x93, 0xae,
		0x80, 0x37, 0xa4, 0xaa, 0x27, 0xdd, 0x8d, 0xcf, 0xfd, 0x28, 0x0e, 0xd3, 0x15, 0x6f, 0x2d, 0xe5,
		0x93, 0x0f, 0xcc, 0xb4, 0x2e, 0x78, 0xf2, 0x83, 0x8b, 0x9a, 0x87, 0x1f, 0xcd, 0xfc, 0xb4, 0x76,
		0x60, 0x4c, 0x57, 0x4a, 0x74, 0x86, 0x31, 0x9d, 0x5c, 0xc1, 0x3a, 0xcf, 0x19, 0x85, 0x92, 0xd0,
		0x26, 0x97, 0x84, 0xe0, 0x4e, 0xa7, 0xb4, 0x32, 0x86, 0x3b, 0x9d, 0xc4, 0x25, 0x34, 0x0a, 0xde,
		0x4a, 0x22, 0x8f, 0x9d, 0xba, 0xf1, 0xf9, 0xa7, 0xf4, 0xb9, 0xc0, 0xb2, 0x4f, 0xb5, 0x60, 0xa4,
		0x7b, 0xb7, 0x9e, 0x1f, 0x78, 0x57, 0x01, 0x33, 0xae, 0x3c, 0x3e, 0xf8, 0xe6, 0x0f, 0xd2, 0x19,
		0x4e, 0xc5, 0xba, 0xef, 0x91, 0xc1, 0xc3, 0xc2, 0x2f, 0x8f, 0x61, 0xc2, 0xc2, 0xaf, 0x40, 0xd8,
		0xc2, 0xc2, 0x4f, 0x84, 0x36, 0x86, 0x85, 0x9f, 0x70, 0xf9, 0x0b, 0x0b, 0xbf, 0x8d, 0x10, 0x2f,
		0xb0, 0xf0, 0x2b, 0x36, 0x3f, 0xc0, 0xc2, 0x0f, 0xc4, 0x86, 0x22, 0xc1, 0x21, 0x4c, 0x74, 0xa8,
		0x12, 0x1e, 0xf2, 0xc4, 0x87, 0x3c, 0x01, 0xa2, 0x4d, 0x84, 0x68, 0x10, 0x22, 0x22, 0xc4, 0x88,
		0x1c, 0x41, 0xca, 0x06, 0x4c, 0xa7, 0xf6, 0xf3, 0x64, 0xae, 0xa1, 0x52, 0x01, 0x7a, 0x8a, 0x40,
		0xc1, 0xbe, 0x0f, 0x84, 0x4a, 0x61, 0x62, 0x45, 0x9d, 0x60, 0x29, 0x43, 0xb4, 0x94, 0x21, 0x5c,
		0x6a, 0x10, 0x2f, 0x5a, 0x04, 0x8c, 0x18, 0x11, 0xcb, 0x20, 0x42, 0xdf, 0xbe, 0xcf, 0x67, 0x8c,
		0x0d, 0x83, 0xb1, 0x47, 0xdb, 0xc3, 0xef, 0x80, 0xe0, 0xd0, 0x9b, 0x8c, 0x8f, 0x52, 0x62, 0x8c,
		0x0d, 0xf2, 0x82, 0x9f, 0xbc, 0x52, 0x26, 0x7e, 0x75, 0x18, 0x7b, 0x49, 0x16, 0x59, 0x61, 0xe2,
		0x27, 0xc1, 0x14, 0x57, 0xca, 0xc4, 0x0f, 0x53, 0x1c, 0x53, 0x1c, 0xea, 0x80, 0xf0, 0xa8, 0xe1,
		0xc3, 0xb0, 0xf1, 0x29, 0x4a, 0x8f, 0x29, 0x6a, 0xc5, 0x4c, 0x27, 0xa6, 0xa3, 0x47, 0x05, 0x5c,
		0xc4, 0xb0, 0x51, 0x01, 0x2f, 0x11, 0xe7, 0xa8, 0x80, 0x97, 0x37, 0x5d, 0x51, 0x01, 0x97, 0xec,
		0x46, 0x50, 0x01, 0x07, 0xa3, 0x79, 0x06, 0x22, 0x0a, 0x54, 0xc0, 0x07, 0x8c, 0xc7, 0x7e, 0x7c,
		0x17, 0xb2, 0x21, 0xe1, 0x0a, 0x38, 0x49, 0x7f, 0x64, 0x7b, 0xfe, 0xe8, 0x8f, 0xbc, 0x88, 0x70,
		0xde, 0x5a, 0x00, 0xc9, 0xee, 0xd9, 0x3d, 0xb7, 0x77, 0x76, 0xe4, 0x34, 0xcf, 0x5d, 0xe7, 0x8f,
		0x8e, 0x45, 0x35, 0x7d, 0xa5, 0x65, 0xa7, 0x88, 0xec, 0xc2, 0x84, 0x46, 0x7a, 0x71, 0x62, 0x15,
		0x51, 0x9d, 0x55, 0xff, 0x15, 0xbb, 0x73, 0x5e, 0x77, 0xbb, 0xed, 0x33, 0xc7, 0xea, 0xba, 0x76,
		0x43, 0x47, 0x65, 0x19, 0xc8, 0xca, 0x0f, 0x59, 0x7b, 0x40, 0x16, 0x90, 0x95, 0x3f, 0xb2, 0x3a,
		0x5d, 0xeb, 0xc4, 0xfe, 0xea, 0x9e, 0x34, 0xcd, 0x4f, 0x3d, 0xe0, 0x0a, 0xb8, 0xca, 0x19, 0x57,
		0x3d, 0x44, 0x2b, 0xa0, 0x2a, 0x3f, 0x54, 0xcd, 0xe8, 0x7b, 0x8f, 0x32, 0x7f, 0x57, 0x89, 0xc7,
		0xab, 0x81, 0xb6, 0x8d, 0xe1, 0xf5, 0x0a, 0xc4, 0xb5, 0xcd, 0x41, 0xdc, 0x1e, 0x10, 0x07, 0xc4,
		0x41, 0x07, 0x00, 0x6f, 0x1a, 0xf4, 0x01, 0xd0, 0x06, 0xb4, 0xbd, 0x09, 0x6d, 0x8e, 0xf9, 0x09,
		0x30, 0x03, 0xcc, 0x04, 0xc0, 0x6c, 0xaf, 0xae, 0x00, 0xd0, 0x48, 0xdf, 0xc1, 0x25, 0xea, 0x4d,
		0x98, 0xd8, 0xc8, 0x1b, 0x80, 0x13, 0xf2, 0x03, 0x00, 0xa5, 0x1a, 0xa0, 0xd6, 0x4e, 0x7c, 0xf9,
		0x8f, 0xdb, 0x34, 0x5b, 0x58, 0x66, 0x01, 0xac, 0xf2, 0x86, 0x15, 0x20, 0x05, 0x48, 0xe5, 0x0a,
		0xa9, 0xec, 0x6c, 0x2a, 0xc0, 0x0a, 0xb0, 0xca, 0x0d, 0x56, 0xe7, 0xa6, 0xdd, 0x34, 0x8f, 0x9a,
		0x96, 0x7b, 0x64, 0xb6, 0x1a, 0xff, 0xb5, 0x1b, 0xce, 0x67, 0xc0, 0x0b, 0xf0, 0xca, 0x0b, 0x5e,
		0x19, 0xa8, 0xdc, 0xe3, 0x76, 0xab, 0xe7, 0x74, 0x4d, 0xbb, 0xe5, 0xa0, 0x4d, 0x0a, 0x00, 0xcb,
		0x0d, 0x60, 0xd6, 0x57, 0xc7, 0x6a, 0x35, 0xac, 0x06, 0xf2, 0x23, 0xf0, 0x55, 0x04, 0xbe, 0xd2,
		0xd6, 0x15, 0xbb, 0xe5, 0x58, 0xdd, 0x13, 0xf3, 0xd8, 0x72, 0xcd, 0x46, 0xa3, 0x6b, 0xf5, 0x10,
		0xc1, 0x80, 0xb0, 0x7c, 0x11, 0xd6, 0xb2, 0xec, 0x4f, 0x9f, 0x8f, 0xda, 0x5d, 0x00, 0x0c, 0x00,
		0x2b, 0x00, 0x60, 0x7b, 0x08, 0x61, 0x40, 0x58, 0xc1, 0x08, 0x43, 0x08, 0x03, 0xc0, 0x8a, 0x02,
		0x58, 0xd3, 0x6e, 0x7d, 0x71, 0x4d, 0xc7, 0xe9, 0xda, 0x47, 0x67, 0x8e, 0x05, 0x68, 0x01, 0x5a,
		0xf9, 0x42, 0xab, 0x61, 0x35, 0xcd, 0x3f, 0x80, 0x2a, 0xa0, 0x2a, 0x7f, 0x54, 0xb9, 0xe7, 0x66,
		0xd7, 0x36, 0x1d, 0xbb, 0xdd, 0x02, 0xbe, 0x80, 0xaf, 0x5c, 0xf1, 0x85, 0x05, 0x46, 0x40, 0x2a,
		0x67, 0x48, 0x35, 0xdb, 0x20, 0xee, 0x00, 0x55, 0xce, 0xa0, 0xea, 0x74, 0xdb, 0x8e, 0x75, 0x9c,
		0xa4, 0xc0, 0xd9, 0xbe, 0x53, 0xe0, 0x0b, 0xf8, 0xca, 0x09, 0x5f, 0xa7, 0xe6, 0xd7, 0x19, 0xc6,
		0xb0, 0x7a, 0x0d, 0x74, 0x15, 0x82, 0xae, 0xae, 0xd5, 0xb3, 0xba, 0xe7, 0xe8, 0x90, 0x00, 0xc6,
		0x0a, 0xc2, 0x98, 0xdd, 0xba, 0x8f, 0x62, 0xa8, 0x43, 0x00, 0x5d, 0xb9, 0xa2, 0xab, 0x6b, 0xf5,
		0xec, 0xc6, 0x99, 0xd9, 0x44, 0xec, 0x02, 0xba, 0xf2, 0x47, 0x17, 0xdc, 0x64, 0x80, 0x36, 0xf1,
		0xa8, 0x53, 0x62, 0xcf, 0x86, 0x02, 0x41, 0x6d, 0x83, 0xe0, 0x06, 0xa8, 0x01, 0x6a, 0x42, 0xa0,
		0xa6, 0x40, 0x0f, 0x2b, 0xe0, 0x46, 0x06, 0x6e, 0x2a, 0xed, 0xfd, 0x00, 0xec, 0xa8, 0xc0, 0x4e,
		0xb1, 0x3d, 0x21, 0x00, 0x1e, 0x15, 0xe0, 0xa9, 0xb5, 0x57, 0x04, 0xb8, 0xa3, 0x82, 0x3b, 0xd5,
		0xf6, 0x90, 0x00, 0x79, 0xa4, 0x90, 0xa7, 0x4e, 0x63, 0x36, 0x80, 0x47, 0x08, 0x78, 0x7b, 0x08,
		0x79, 0x40, 0x5e, 0x49, 0xc8, 0x43, 0xc8, 0x03, 0xf0, 0x44, 0x03, 0x4f, 0x99, 0x3d, 0x2a, 0x80,
		0x1c, 0x29, 0xc8, 0x11, 0xef, 0x19, 0x01, 0xda, 0xe8, 0xa1, 0x4d, 0x85, 0x3d, 0x2d, 0xc0, 0x1d,
		0x29, 0xdc, 0x61, 0x01, 0x16, 0x50, 0x13, 0x04, 0x35, 0xda, 0x7b, 0x60, 0x00, 0x36, 0x52, 0x60,
		0x53, 0x66, 0x6f, 0x0c, 0x70, 0x47, 0x05, 0x77, 0x2a, 0xed, 0x99, 0x01, 0xea, 0x28, 0xa1, 0x4e,
		0xad, 0xbd, 0x34, 0xc0, 0x1e, 0x19, 0xec, 0x29, 0xb4, 0xc7, 0x06, 0xa8, 0xa3, 0x82, 0x3a, 0x95,
		0xf6, 0xde, 0x00, 0x75, 0x54, 0x50, 0xe7, 0x58, 0x6e, 0xc3, 0x3a, 0x31, 0xcf, 0x9a, 0x8e, 0x7b,
		0x6a, 0x39, 0x5d, 0xfb, 0x18, 0xa0, 0x03, 0xe8, 0x8a, 0x06, 0xdd, 0x59, 0x2b, 0x6b, 0xe5, 0xb4,
		0x1a, 0x6e, 0xb3, 0x87, 0xb6, 0x3a, 0x80, 0x4e, 0x00, 0xe8, 0x66, 0x7a, 0xc2, 0x6a, 0x20, 0xc3,
		0x02, 0x77, 0x02, 0x71, 0xe7, 0xd8, 0x4d, 0xfb, 0xff, 0x14, 0x43, 0x1d, 0x4e, 0xac, 0xc4, 0x6c,
		0xdf, 0xa4, 0x59, 0xbe, 0x09, 0xfc, 0x19, 0xe0, 0x02, 0x4f, 0x06, 0xb8, 0x36, 0x08, 0x5c, 0x2a,
		0xf1, 0x61, 0xe0, 0x0b, 0xbc, 0x17, 0xe8, 0x52, 0x17, 0x5d, 0xdd, 0xf6, 0x99, 0x63, 0x75, 0xdd,
		0x63, 0xb3, 0x93, 0xb9, 0x09, 0x75, 0x5d, 0xb3, 0xf9, 0xa9, 0xdd, 0xb5, 0x9d, 0xcf, 0xa7, 0x40,
		0x16, 0x90, 0x95, 0x2b, 0xb2, 0xee, 0xff, 0x0f, 0xd0, 0x02, 0xb4, 0x72, 0x84, 0x16, 0x2c, 0xd0,
		0x80, 0x37, 0x24, 0xcb, 0xcd, 0x8d, 0x6c, 0x9b, 0x84, 0x38, 0x15, 0x92, 0x68, 0x06, 0x39, 0x54,
		0xbc, 0xf1, 0xdc, 0x15, 0x7e, 0xde, 0xb4, 0x9e, 0x33, 0x9d, 0xd1, 0xd2, 0x18, 0x29, 0x91, 0x84,
		0xaa, 0x9b, 0x9c, 0x8f, 0x63, 0x2f, 0xf6, 0xc7, 0x5c, 0x3f, 0x24, 0x94, 0x42, 0xf5, 0xa8, 0x7f,
		0xcd, 0x6e, 0xbc, 0x89, 0x17, 0x5f, 0x27, 0xc9, 0xb2, 0x32, 0x9e, 0x30, 0xde, 0x1f, 0xf3, 0xa1,
		0x3f, 0x32, 0x38, 0x8b, 0xbf, 0x8d, 0xc3, 0xbf, 0x0c, 0x9f, 0x47, 0xb1, 0xc7, 0xfb, 0xac, 0xf2,
		0xf0, 0x83, 0x68, 0xed, 0x93, 0xca, 0x24, 0x1c, 0xc7, 0xe3, 0xfe, 0x38, 0x88, 0xb2, 0xef, 0x2a,
		0x7e, 0xe4, 0x47, 0x95, 0x80, 0xdd, 0xb2, 0x60, 0xfe, 0x47, 0x25, 0xf0, 0xf9, 0x5f, 0x46, 0x14,
		0x7b, 0x31, 0x33, 0x06, 0x5e, 0xec, 0x5d, 0x79, 0x11, 0xab, 0x04, 0xd1, 0xa4, 0x12, 0x07, 0xb7,
		0x51, 0xf2, 0x9f, 0x0a, 0xfb, 0x1e, 0x33, 0x3e, 0x60, 0x03, 0xc3, 0x8f, 0x8c, 0x90, 0x79, 0xfd,
		0x6b, 0xef, 0xca, 0x0f, 0xfc, 0xf8, 0xae, 0xc2, 0x99, 0x3f, 0xba, 0xbe, 0x1a, 0x87, 0x51, 0xf6,
		0x5d, 0xe5, 0x7e, 0x30, 0xd9, 0x20, 0xa2, 0xe9, 0x55, 0xfa, 0xab, 0x66, 0x7f, 0x56, 0xbc, 0x5b,
		0xcf, 0x0f, 0xbc, 0xab, 0x80, 0x19, 0x57, 0x1e, 0x1f, 0x7c, 0xf3, 0x07, 0xf1, 0x75, 0x25, 0xbd,
		0x3a, 0x8d, 0xd4, 0x2f, 0xff, 0x34, 0x95, 0x7b, 0x84, 0x92, 0x07, 0x10, 0x9d, 0x7d, 0x8f, 0x43,
		0xcf, 0x98, 0x26, 0xe0, 0xbd, 0x0a, 0x18, 0x89, 0xe0, 0xa1, 0x87, 0x6c, 0xc8, 0x42, 0xc6, 0xfb,
		0x8c, 0x8c, 0xc4, 0x26, 0x14, 0x91, 0x33, 0xe1, 0x72, 0x72, 0xbc, 0xff, 0xb1, 0xba, 0x7d, 0xa8,
		0xd9, 0x3d, 0xc3, 0xee, 0x69, 0x4e, 0xe8, 0x0d, 0x87, 0x7e, 0x5f, 0xb3, 0xf8, 0xc8, 0xe7, 0x8c,
		0x85, 0x3e, 0x1f, 0x69, 0xbf, 0x3b, 0xd6, 0x7b, 0xed, 0x94, 0xc5, 0xa1, 0xdf, 0xbf, 0xe0, 0x56,
		0x12, 0x35, 0x23, 0x7f, 0xcc, 0xa3, 0x2d, 0x2d, 0x9a, 0x5e, 0x19, 0x4e, 0xf3, 0x5c, 0xdb, 0xf9,
		0x78, 0xa8, 0x25, 0x7f, 0xd6, 0x6a, 0x1f, 0xb4, 0xda, 0xce, 0x07, 0xad, 0x5a, 0xaf, 0x7e, 0xd0,
		0x6a, 0xe9, 0xff, 0xd5, 0x76, 0xb6, 0x08, 0x95, 0x79, 0xf4, 0xde, 0x78, 0x1a, 0xf6, 0x19, 0xa9,
		0xdc, 0x9a, 0x8e, 0xfb, 0x0b, 0xbb, 0xfb, 0x36, 0x0e, 0x07, 0xc9, 0x0b, 0xbd, 0x9f, 0x35, 0xb4,
		0x8a, 0x04, 0xfa, 0x67, 0x2f, 0x32, 0xc3, 0xd1, 0xf4, 0x86, 0xf1, 0x58, 0x3f, 0xd4, 0xe2, 0x70,
		0xca, 0x88, 0xdd, 0xc0, 0xd2, 0xe8, 0x45, 0x4c, 0x2b, 0x48, 0x80, 0x0d, 0x1b, 0xe5, 0xa5, 0xfc,
		0xf3, 0x41, 0xff, 0x76, 0xcd, 0x38, 0xd2, 0x75, 0x71, 0xe9, 0x7a, 0x6b, 0x6b, 0xa6, 0x2a, 0x2a,
		0xf1, 0xdd, 0x84, 0x69, 0xff, 0xd6, 0x7e, 0x1b, 0xf7, 0x8d, 0x44, 0xfb, 0x18, 0x41, 0x34, 0xb8,
		0x32, 0x92, 0x0f, 0xa3, 0xc3, 0x5f, 0xf0, 0x2d, 0xff, 0x0d, 0x49, 0x59, 0x68, 0x52, 0x4e, 0xa7,
		0x05, 0xf2, 0x71, 0x79, 0xf9, 0x38, 0xb7, 0x79, 0x43, 0x27, 0xeb, 0x12, 0x9a, 0xe1, 0x0d, 0x16,
		0xf5, 0x43, 0x7f, 0x42, 0xae, 0xae, 0xb5, 0x12, 0x9a, 0xdb, 0x3c, 0xb8, 0xd3, 0x7c, 0xde, 0x0f,
		0xa6, 0x03, 0xa6, 0xc5, 0xd7, 0x4c, 0xcb, 0x4a, 0x42, 0x5a, 0x5a, 0x12, 0x1a, 0xf8, 0xf1, 0xb5,
		0xd6, 0x1f, 0xf3, 0xd8, 0xf3, 0x39, 0x0b, 0xb5, 0x24, 0x24, 0x24, 0x3f, 0x76, 0xc1, 0x17, 0x7c,
		0xcf, 0x8f, 0xb4, 0x14, 0x9d, 0x3b, 0x1f, 0xb7, 0xa8, 0xc5, 0x0a, 0xa2, 0x21, 0xfa, 0x61, 0x98,
		0x1e, 0x2c, 0xe1, 0x90, 0xde, 0x12, 0x2b, 0xf9, 0x88, 0xbd, 0x16, 0xb5, 0x73, 0x9d, 0x52, 0x58,
		0xe0, 0x81, 0xba, 0x93, 0x59, 0xdd, 0xa1, 0xbe, 0xfd, 0x96, 0xa8, 0x41, 0x6b, 0x61, 0x6c, 0x33,
		0x17, 0xc4, 0x08, 0xe4, 0x54, 0x3d, 0x8a, 0xc3, 0x69, 0x3f, 0xe6, 0x73, 0x4e, 0xd7, 0x9a, 0x3d,
		0x69, 0x7b, 0x7e, 0x8f, 0x6e, 0x67, 0xfe, 0x78, 0x5d, 0x3b, 0xf2, 0x23, 0xb7, 0x99, 0x3c, 0x57,
		0xb7, 0x19, 0x4d, 0x5c, 0x27, 0xb8, 0x75, 0xad, 0xf9, 0xe3, 0xb3, 0xa3, 0xee, 0xd2, 0xc3, 0x73,
		0x5b, 0xf3, 0x47, 0xe6, 0x66, 0xbf, 0xa4, 0x97, 0x3e, 0x20, 0xd7, 0x5c, 0x3c, 0xa0, 0xa3, 0xec,
		0xf9, 0xbc, 0x43, 0x08, 0x55, 0x2c, 0x38, 0xe9, 0x19, 0xf8, 0x8d, 0xfe, 0x98, 0x47, 0x71, 0xe8,
		0xf9, 0x3c, 0x8e, 0xa4, 0x8f, 0x51, 0x99, 0xa8, 0x79, 0x7c, 0xf8, 0x92, 0x27, 0x83, 0x2f, 0x3e,
		0x4f, 0xe8, 0x7c, 0x55, 0xf2, 0x61, 0x1e, 0xa7, 0x01, 0x5f, 0x3f, 0xd4, 0xb6, 0x25, 0x1f, 0x68,
		0x27, 0x64, 0x43, 0xff, 0x3b, 0x8d, 0xc4, 0xba, 0x00, 0xee, 0xbc, 0xbe, 0x43, 0x21, 0xe5, 0x10,
		0x13, 0xcf, 0xcb, 0x82, 0x79, 0x32, 0x43, 0x06, 0x91, 0xee, 0x29, 0xaa, 0xfa, 0x78, 0x45, 0x13,
		0x2f, 0x80, 0x8d, 0x86, 0x1d, 0xa5, 0x05, 0x4d, 0xc3, 0x0f, 0x69, 0x04, 0xdc, 0xc7, 0x18, 0x02,
		0x9d, 0x58, 0xf6, 0x33, 0x9e, 0x43, 0x25, 0xac, 0xd1, 0xa0, 0x3b, 0xe4, 0x68, 0x0f, 0x45, 0xfa,
		0x43, 0x98, 0x06, 0x51, 0xa5, 0x43, 0xe4, 0x69, 0x11, 0x79, 0x7a, 0x44, 0x9b, 0x26, 0xd1, 0xa0,
		0x4b, 0x44, 0x68, 0x13, 0x39, 0xfa, 0x94, 0x0d, 0x98, 0x52, 0x75, 0xe8, 0xc9, 0x6c, 0x43, 0xa7,
		0x46, 0x44, 0x9c, 0x44, 0x91, 0x25, 0x53, 0x94, 0x49, 0x95, 0x02, 0xe4, 0x8a, 0x3a, 0xc9, 0x52,
		0x86, 0x6c, 0x29, 0x43, 0xba, 0xd4, 0x20, 0x5f, 0xb4, 0x48, 0x18, 0x31, 0x32, 0x46, 0x96, 0x94,
		0x3d, 0x42, 0xce, 0xe8, 0x46, 0xcc, 0x75, 0x8e, 0x46, 0x35, 0x64, 0xd2, 0xa4, 0x6a, 0xe4, 0x29,
		0x9b, 0x0a, 0xd4, 0x4d, 0x21, 0x0a, 0xa7, 0x0a, 0x95, 0x53, 0x8e, 0xd2, 0x29, 0x47, 0xed, 0xd4,
		0xa2, 0x78, 0x34, 0xa9, 0x1e, 0x51, 0xca, 0x47, 0x9e, 0xfa, 0x3d, 0x42, 0x01, 0x0d, 0x7f, 0x40,
		0x3f, 0xd8, 0xae, 0xb3, 0xc1, 0xe4, 0xb6, 0x88, 0xc7, 0xa7, 0x39, 0x31, 0xdc, 0x26, 0x7e, 0x1b,
		0xd4, 0x09, 0xa2, 0x4a, 0x44, 0x51, 0x41, 0xc2, 0xa8, 0x1a, 0x71, 0x54, 0x96, 0x40, 0x2a, 0x4b,
		0x24, 0xd5, 0x24, 0x94, 0xb4, 0x89, 0x25, 0x71, 0x82, 0x99, 0x41, 0xca, 0xb9, 0x9b, 0x30, 0xb5,
		0x32, 0x4e, 0xc0, 0xbc, 0x61, 0xc8, 0x86, 0x2a, 0x64, 0x9c, 0x45, 0xe5, 0x6e, 0x5f, 0x81, 0x7b,
		0xe9, 0xcc, 0xf7, 0x6e, 0x65, 0xce, 0x02, 0xab, 0x54, 0xfa, 0x1d, 0x42, 0x18, 0xc2, 0xd7, 0xcb,
		0x10, 0x35, 0xb3, 0x8b, 0x54, 0x46, 0x5a, 0xce, 0x6e, 0x47, 0x0d, 0x49, 0x59, 0x85, 0xa4, 0x84,
		0xa4, 0x84, 0xa4, 0x84, 0xa4, 0x84, 0xa4, 0x84, 0xa4, 0x04, 0x1f, 0xdb, 0x2c, 0x49, 0x49, 0x7d,
		0xed, 0x22, 0xbb, 0x91, 0x7b, 0x23, 0x86, 0x43, 0xd5, 0xce, 0x5f, 0xa1, 0xe4, 0x31, 0xf1, 0x12,
		0xe2, 0xb9, 0xad, 0xc8, 0xed, 0xa8, 0x42, 0x40, 0x55, 0x24, 0xa2, 0x0a, 0x13, 0x52, 0x55, 0x89,
		0xa9, 0xf2, 0x04, 0x55, 0x79, 0xa2, 0xaa, 0x36, 0x61, 0x55, 0x83, 0xb8, 0x2a, 0x42, 0x60, 0x33,
		0xa8, 0x29, 0xb3, 0x36, 0xb2, 0x96, 0xb1, 0x7c, 0xc6, 0xd8, 0x30, 0x18, 0x7b, 0xf1, 0x4e, 0x4d,
		0xa5, 0xac, 0x35, 0x27, 0x81, 0x07, 0x0a, 0xdd, 0x52, 0x93, 0xf1, 0x51, 0x2a, 0x40, 0xfe, 0x54,
		0x2a, 0x8c, 0xab, 0x45, 0x2b, 0xd2, 0x37, 0x75, 0xea, 0x73, 0xe5, 0xf8, 0x52, 0x76, 0x73, 0xe9,
		0xd9, 0xbd, 0xfa, 0xa1, 0x56, 0xff, 0xa0, 0xe6, 0xfd, 0x9d, 0x84, 0x5e, 0x3f, 0xf6, 0xc7, 0xbc,
		0xe1, 0x8f, 0xfc, 0x74, 0x47, 0xf1, 0xb6, 0xa2, 0x37, 0xda, 0x62, 0x23, 0x2f, 0xf6, 0x6f, 0x93,
		0x77, 0x39, 0xf4, 0x82, 0x88, 0x29, 0x77, 0x97, 0x3f, 0x3e, 0x28, 0x18, 0x5a, 0xbc, 0xef, 0x08,
		0x2d, 0x08, 0x2d, 0x08, 0x2d, 0x50, 0x67, 0xb8, 0x9b, 0xf5, 0xaf, 0xcb, 0x77, 0x78, 0x1f, 0x48,
		0xbd, 0xf9, 0x04, 0x31, 0xb5, 0xf6, 0xad, 0xac, 0x09, 0x7f, 0x95, 0xf6, 0xaf, 0x3c, 0x94, 0xfd,
		0x58, 0xfb, 0x91, 0xf4, 0x86, 0xb0, 0xf6, 0x43, 0xea, 0xd6, 0xb0, 0xf6, 0x43, 0xf4, 0x06, 0xb1,
		0xf6, 0x03, 0xfe, 0x07, 0x0e, 0x98, 0x0f, 0xd4, 0xd4, 0x5d, 0xfb, 0x99, 0xfa, 0x5c, 0xcd, 0x65,
		0x9f, 0x7d, 0x85, 0x6e, 0xa9, 0xeb, 0xf1, 0x11, 0xc3, 0xaa, 0x8f, 0xfc, 0x2f, 0x6a, 0x23, 0x56,
		0x7d, 0xb6, 0x51, 0x9a, 0x25, 0x1e, 0xfb, 0xb1, 0xea, 0x43, 0x30, 0xb4, 0x6c, 0xc4, 0xaa, 0x4f,
		0xed, 0xa0, 0x7e, 0xb0, 0xb7, 0x5f, 0x3b, 0xd8, 0x45, 0x8c, 0x41, 0x8c, 0x81, 0x40, 0xc3, 0xdd,
		0xbc, 0xf8, 0x0b, 0xcb, 0x3f, 0xb8, 0x83, 0x8d, 0x67, 0x10, 0xd4, 0x4e, 0xf4, 0x7d, 0xf6, 0x7e,
		0xd4, 0x3f, 0xf1, 0xf7, 0xd1, 0xb3, 0x42, 0x1f, 0xfd, 0xb4, 0xb2, 0xfc, 0x03, 0x4b, 0x1f, 0xcf,
		0x2c, 0x03, 0x60, 0x9d, 0x81, 0x91, 0xab, 0x1e, 0xe6, 0xf4, 0x2f, 0xec, 0x4e, 0x95, 0xf5, 0x6b,
		0xbd, 0xe9, 0x47, 0xb1, 0x19, 0xc7, 0xc4, 0x1d, 0x3e, 0x4f, 0x7d, 0x6e, 0x05, 0xec, 0x86, 0x71,
		0xea, 0xaa, 0x26, 0x11, 0xda, 0x4b, 0x77, 0x52, 0xfd, 0x58, 0xaf, 0xef, 0xed, 0xd7, 0xeb, 0xdb,
		0xfb, 0x3b, 0xfb, 0xdb, 0x07, 0xbb, 0xbb, 0xd5, 0xbd, 0x2a, 0x61, 0x6d, 0xaa, 0xb7, 0xc3, 0x01,
		0x0b, 0xd9, 0xe0, 0x28, 0x99, 0x3e, 0x7c, 0x1a, 0x04, 0x2a, 0xdc, 0xca, 0x59, 0xc4, 0x42, 0xd2,
		0x32, 0x93, 0x6a, 0x14, 0x56, 0x84, 0x64, 0x82, 0x5c, 0x3e, 0x4f, 0x2e, 0x75, 0xd2, 0xce, 0x60,
		0xe1, 0xb4, 0x1f, 0xf3, 0xf9, 0x82, 0x67, 0x6b, 0xf6, 0xbe, 0xec, 0xf9, 0x93, 0x72, 0x3b, 0xf3,
		0x97, 0xe4, 0xda, 0x91, 0x1f, 0xb9, 0xcd, 0xe4, 0xed, 0xb8, 0xcd, 0x68, 0xe2, 0x3a, 0xc1, 0xad,
		0x6b, 0xcd, 0x5f, 0x82, 0x1d, 0x75, 0x97, 0x5e, 0x81, 0xdb, 0x9a, 0x3f, 0x78, 0x37, 0xfb, 0x25,
		0xbd, 0xf4, 0x31, 0xbb, 0x47, 0x8b, 0x07, 0x7a, 0x9c, 0x3d, 0x38, 0xf7, 0xfe, 0x5b, 0x9a, 0xd4,
		0xfc, 0x07, 0x8e, 0x21, 0x42, 0xf0, 0x57, 0x27, 0xe8, 0x23, 0xd8, 0x3f, 0x11, 0xec, 0x69, 0x45,
		0x27, 0x3a, 0x73, 0x9c, 0xd0, 0xfc, 0xd6, 0x6f, 0xc6, 0x03, 0x16, 0x50, 0xec, 0x74, 0xcf, 0xda,
		0x99, 0xb2, 0x3b, 0xa0, 0x79, 0x80, 0xea, 0x36, 0x0e, 0x50, 0x15, 0x33, 0x70, 0x1c, 0xa0, 0x5a,
		0xea, 0x2d, 0xe0, 0x00, 0x55, 0x49, 0x6e, 0x04, 0x07, 0xa8, 0x82, 0xd5, 0x6c, 0x8a, 0x72, 0x21,
		0xdb, 0xc4, 0xad, 0xc0, 0x61, 0x06, 0x94, 0x0f, 0x2f, 0x58, 0x3f, 0xac, 0x20, 0x63, 0x99, 0xd0,
		0x4c, 0x1b, 0xaf, 0x99, 0x68, 0x9e, 0x3b, 0x40, 0xfa, 0x9c, 0x01, 0xa2, 0xe7, 0x0a, 0x40, 0x2d,
		0x41, 0x2d, 0x41, 0x2d, 0x41, 0x2d, 0x41, 0x2d, 0x41, 0x2d, 0xc9, 0x0f, 0x11, 0xaa, 0xbe, 0xfd,
		0x74, 0x8b, 0xd8, 0x6b, 0x29, 0x8b, 0x68, 0x31, 0xfb, 0x21, 0x4d, 0x23, 0xda, 0x0c, 0x46, 0xde,
		0x79, 0x45, 0x05, 0xa7, 0x15, 0x85, 0x9c, 0x55, 0x54, 0x71, 0x52, 0x51, 0xce, 0x39, 0x45, 0x39,
		0xa7, 0x14, 0xb5, 0x9c, 0x51, 0xd0, 0x59, 0x2f, 0x12, 0x3a, 0xe4, 0x9d, 0x4e, 0x56, 0x9c, 0x4d,
		0x3e, 0x52, 0xce, 0x17, 0x73, 0xfa, 0x44, 0xb9, 0xdd, 0x5c, 0x0d, 0xe3, 0x12, 0x05, 0xf6, 0xcf,
		0xa9, 0x64, 0x4c, 0xa2, 0x9a, 0x11, 0x89, 0xb2, 0xa6, 0x00, 0xea, 0x99, 0x00, 0xa8, 0xe0, 0x69,
		0xab, 0x92, 0x91, 0x48, 0x16, 0x0a, 0x6a, 0xbb, 0xbb, 0x08, 0x06, 0x08, 0x06, 0x10, 0x26, 0x1b,
		0x30, 0xfa, 0x4b, 0xec, 0xa3, 0xc1, 0x88, 0xa9, 0xa7, 0x66, 0xec, 0xa3, 0x51, 0x69, 0x1f, 0x0d,
		0x41, 0xeb, 0x0d, 0x42, 0xdd, 0x60, 0xef, 0x10, 0x7f, 0xf2, 0x9b, 0xb7, 0x73, 0xeb, 0x0c, 0x62,
		0x6b, 0x8b, 0x34, 0x5d, 0x32, 0xe8, 0xba, 0x62, 0x28, 0xe5, 0x82, 0x41, 0xd8, 0xf5, 0x82, 0xb0,
		0xcb, 0x05, 0x95, 0x80, 0x48, 0x94, 0x88, 0x81, 0x80, 0x19, 0x24, 0xed, 0x29, 0xca, 0xb5, 0xa3,
		0xa0, 0xc1, 0x51, 0xe5, 0x67, 0x7c, 0x72, 0x8f, 0x50, 0xf2, 0xd0, 0xab, 0xb3, 0xef, 0x71, 0xe8,
		0x19, 0xd3, 0x04, 0xae, 0x57, 0x01, 0x8d, 0xe5, 0x66, 0x3d, 0x64, 0x43, 0x16, 0x32, 0xde, 0xa7,
		0xb3, 0x9c, 0x49, 0x28, 0x97, 0x2d, 0xd6, 0xec, 0xbb, 0x27, 0xc7, 0xf5, 0x6a, 0xad, 0x7e, 0xa8,
		0x2d, 0xc2, 0xa0, 0x96, 0xc6, 0xbc, 0xc8, 0x1f, 0xf3, 0x48, 0x1b, 0x8e, 0x43, 0xad, 0x37, 0x9d,
		0x4c, 0xc6, 0x61, 0xac, 0x8d, 0x87, 0x5a, 0xc3, 0x1f, 0x0e, 0x23, 0x16, 0xde, 0x1a, 0x17, 0xdc,
		0xfb, 0xe6, 0x85, 0x4c, 0x3b, 0xed, 0x34, 0x7b, 0x9a, 0x13, 0x7a, 0xc3, 0xa1, 0xdf, 0xd7, 0x2c,
		0x3e, 0xf2, 0x39, 0x63, 0xa1, 0xcf, 0x47, 0x5b, 0x5a, 0x34, 0xbd, 0x32, 0x9c, 0xe6, 0xb9, 0x56,
		0xab, 0x1d, 0x6a, 0xb3, 0x3f, 0x3f, 0x68, 0xb5, 0x9d, 0x0f, 0x17, 0xbc, 0x5a, 0xaf, 0x7e, 0xd0,
		0x6a, 0xb5, 0xda, 0x87, 0x5a, 0x6d, 0x87, 0x52, 0x0e, 0x21, 0xda, 0x4a, 0xb6, 0xdc, 0x3a, 0x76,
		0x3f, 0x9f, 0x88, 0x15, 0xee, 0xa8, 0x77, 0x8b, 0xad, 0x74, 0x87, 0x95, 0x3a, 0xe1, 0x50, 0x81,
		0xda, 0xb0, 0x51, 0x5e, 0xca, 0x3f, 0x53, 0xf4, 0x6f, 0xd7, 0x8c, 0x23, 0xc5, 0x17, 0x97, 0xe2,
		0xb3, 0x4d, 0xd4, 0xf1, 0xdd, 0x84, 0x69, 0xff, 0xfe, 0x6d, 0xde, 0x9f, 0x6a, 0x04, 0xd1, 0xe0,
		0xca, 0x48, 0x3e, 0x8b, 0x0e, 0xed, 0x9e, 0xdb, 0xb5, 0xcc, 0xe3, 0xcf, 0xe6, 0x91, 0xdd, 0xb4,
		0x9d, 0x3f, 0xdc, 0x23, 0xb3, 0xd5, 0xf8, 0xaf, 0xdd, 0x70, 0x3e, 0xbb, 0xc7, 0xed, 0x56, 0xcf,
		0xe9, 0x9a, 0x76, 0xcb, 0xe9, 0xfd, 0x86, 0x7c, 0x2d, 0x34, 0x5f, 0xa7, 0xf3, 0x02, 0xa9, 0xba,
		0xbc, 0x54, 0x9d, 0xdf, 0xc4, 0x81, 0x0f, 0x40, 0x01, 0xaf, 0xaa, 0xc1, 0xa2, 0x7e, 0xe8, 0x4f,
		0x48, 0x2e, 0xe8, 0x66, 0xc1, 0xb9, 0xcd, 0x83, 0x3b, 0xcd, 0xe7, 0xfd, 0x60, 0x3a, 0x60, 0x5a,
		0x7c, 0xcd, 0xb4, 0xac, 0xd8, 0xa6, 0x2d, 0x95, 0xe0, 0x92, 0xef, 0x63, 0xcf, 0xe7, 0x2c, 0xd4,
		0x92, 0xa8, 0x70, 0xc1, 0x93, 0x9f, 0x5c, 0x50, 0x3e, 0x3f, 0xd2, 0x52, 0x80, 0xd6, 0x6a, 0x5b,
		0xd4, 0xc2, 0x05, 0xe1, 0x0d, 0x3a, 0xcb, 0x91, 0x7a, 0xb0, 0x84, 0x44, 0x82, 0xbb, 0xdd, 0x55,
		0xd8, 0x8d, 0xb3, 0x12, 0xb8, 0x73, 0x9e, 0x54, 0xe8, 0x32, 0x80, 0xc6, 0x93, 0x59, 0xe3, 0xa1,
		0x32, 0xfe, 0x96, 0xb8, 0x41, 0x6b, 0x31, 0x72, 0x53, 0x17, 0x21, 0xe5, 0x0e, 0xc2, 0xf2, 0x06,
		0x09, 0x89, 0xa7, 0x9f, 0x9e, 0xc1, 0xc6, 0x1b, 0xdc, 0xf8, 0xdc, 0x18, 0x85, 0xe3, 0xe9, 0x44,
		0xfa, 0x49, 0x98, 0x31, 0xf7, 0x47, 0x47, 0x2f, 0x79, 0xb0, 0xa3, 0x61, 0xe3, 0x45, 0xc6, 0x07,
		0x82, 0x92, 0xdf, 0x03, 0x41, 0x5f, 0x07, 0x6a, 0xf2, 0x90, 0xac, 0x4f, 0x03, 0x59, 0x05, 0x48,
		0xd3, 0x77, 0x01, 0xad, 0x2c, 0x6f, 0x79, 0xe5, 0x54, 0x6c, 0xb2, 0x88, 0xf9, 0x94, 0x92, 0xf4,
		0x27, 0x25, 0xe6, 0x4b, 0x4a, 0xce, 0xe0, 0x8a, 0xa2, 0xa1, 0x15, 0x61, 0x03, 0x2b, 0x15, 0x56,
		0x2d, 0x49, 0x1a, 0x54, 0xa9, 0xb5, 0x6e, 0x49, 0xce, 0x80, 0x0a, 0xfb, 0xcd, 0x36, 0x91, 0x20,
		0x65, 0x03, 0x26, 0x59, 0x07, 0x7a, 0x32, 0xed, 0x10, 0xac, 0x0b, 0x3d, 0x45, 0xab, 0x70, 0x38,
		0x16, 0x68, 0x96, 0xc2, 0x74, 0x8b, 0x3a, 0xed, 0x52, 0x86, 0x7e, 0x29, 0x43, 0xc3, 0xd4, 0xa0,
		0x63, 0xb4, 0x68, 0x19, 0x31, 0x7a, 0x96, 0x41, 0x84, 0xfe, 0xe1, 0x58, 0x53, 0x9f, 0xc7, 0x3b,
		0x35, 0xc2, 0x67, 0x63, 0x51, 0x3c, 0x1a, 0x8b, 0xb6, 0xc1, 0x27, 0x61, 0x97, 0x5b, 0x15, 0x0c,
		0x3d, 0x55, 0x31, 0xf2, 0x54, 0xce, 0xb3, 0x4f, 0x1d, 0xaf, 0x3e, 0xc2, 0x86, 0x9d, 0x4a, 0x18,
		0x75, 0x66, 0x53, 0xbc, 0x5e, 0x3b, 0xa8, 0x1f, 0xec, 0xed, 0xd7, 0x0e, 0x76, 0x31, 0xd7, 0x31,
		0xd7, 0x21, 0x10, 0x08, 0x8f, 0xfa, 0x12, 0x42, 0xac, 0xc0, 0xe9, 0x48, 0xd2, 0xe8, 0x6c, 0x99,
		0x96, 0xd2, 0x34, 0x3c, 0x5b, 0xce, 0xba, 0xca, 0x18, 0x9f, 0x65, 0x37, 0x45, 0xd7, 0x00, 0x6d,
		0xfd, 0x16, 0xc8, 0x19, 0xa1, 0x51, 0x8d, 0x44, 0x04, 0x5d, 0x7a, 0xd6, 0xee, 0x81, 0x9e, 0x6b,
		0x8f, 0x42, 0x35, 0x8a, 0x25, 0x57, 0x9f, 0xfd, 0x9d, 0xed, 0x8f, 0x87, 0xda, 0xc2, 0xc0, 0x4c,
		0x33, 0x07, 0x37, 0x3e, 0xf7, 0xa3, 0x38, 0x4c, 0x99, 0xa7, 0xf6, 0x29, 0x1c, 0x4f, 0x27, 0x91,
		0xe6, 0xf3, 0xd4, 0x52, 0xe4, 0x82, 0x3f, 0xe2, 0x29, 0xa2, 0xfd, 0x9e, 0xfc, 0x95, 0xe1, 0x58,
		0xef, 0xef, 0xdd, 0x45, 0xaa, 0xf5, 0xd4, 0x5d, 0xe4, 0x82, 0xd7, 0x6a, 0x1f, 0x6a, 0x3b, 0x1f,
		0xaa, 0xf5, 0xea, 0x87, 0xb9, 0xb5, 0xc8, 0x16, 0xce, 0x89, 0x2b, 0xff, 0x3e, 0x14, 0x30, 0xfb,
		0x59, 0xbb, 0x27, 0xa5, 0x8f, 0x8a, 0x2b, 0x63, 0x9e, 0x42, 0x6d, 0x62, 0xd4, 0x2a, 0xa9, 0x4d,
		0x74, 0xb9, 0x6d, 0x22, 0x67, 0x86, 0x89, 0xb0, 0xb4, 0xfb, 0x77, 0x1f, 0x6b, 0x80, 0xa3, 0x74,
		0x5e, 0x03, 0xbc, 0x70, 0x95, 0x8e, 0x20, 0x24, 0xbd, 0x70, 0xe1, 0x91, 0x57, 0xac, 0x60, 0x7e,
		0x60, 0xf5, 0xa5, 0xfd, 0x8a, 0xd7, 0x97, 0xf5, 0xd5, 0xb1, 0x5a, 0x0d, 0xab, 0xe1, 0x9a, 0x8d,
		0x53, 0xbb, 0xe5, 0x7e, 0xea, 0xb6, 0xcf, 0x3a, 0xf0, 0xc8, 0x13, 0x2b, 0x73, 0xe1, 0x91, 0x57,
		0xb2, 0x82, 0xcd, 0x6f, 0xe2, 0xc0, 0x23, 0xaf, 0x80, 0x57, 0xa5, 0xa6, 0x47, 0xde, 0x82, 0x61,
		0x6a, 0x29, 0xc3, 0xd4, 0x52, 0x86, 0x99, 0x7a, 0x78, 0x25, 0x7f, 0x7b, 0xc1, 0x17, 0x55, 0x90,
		0x14, 0x92, 0x7e, 0xa4, 0x55, 0xeb, 0x30, 0xc6, 0x2b, 0x27, 0x3c, 0xc3, 0x18, 0x4f, 0xae, 0x68,
		0x9d, 0xc7, 0x4c, 0x42, 0x75, 0x68, 0x93, 0xab, 0x43, 0x70, 0xc3, 0x53, 0x5a, 0x1b, 0xc3, 0x0d,
		0x8f, 0x42, 0x35, 0x8d, 0x82, 0x77, 0x93, 0xb8, 0x43, 0xb7, 0x16, 0x3f, 0x9f, 0x2e, 0x9d, 0xa5,
		0x0b, 0x66, 0x30, 0x0b, 0x54, 0x2e, 0x3a, 0xe9, 0xfe, 0xe4, 0xb6, 0x6e, 0xf8, 0x3c, 0x66, 0xe1,
		0xd0, 0xeb, 0x33, 0xc3, 0x1b, 0x0c, 0x42, 0x16, 0x45, 0x74, 0xec, 0x02, 0x9f, 0x18, 0x3f, 0x0c,
		0x03, 0xf3, 0x18, 0x26, 0x0c, 0x03, 0x0b, 0x44, 0x2e, 0x0c, 0x03, 0x45, 0x48, 0x65, 0x18, 0x06,
		0x0a, 0x57, 0xc3, 0x30, 0x0c, 0xdc, 0x08, 0x4d, 0x03, 0xc3, 0xc0, 0x62, 0xf3, 0x03, 0x0c, 0x03,
		0x41, 0x6c, 0x28, 0x12, 0x1c, 0xc2, 0x44, 0x87, 0x2a, 0xe1, 0x21, 0x4f, 0x7c, 0xc8, 0x13, 0x20,
		0xda, 0x44, 0x88, 0x06, 0x21, 0x22, 0x42, 0x8c, 0xc8, 0x11, 0xa4, 0x6c, 0xc0, 0x54, 0x8a, 0x3f,
		0x4f, 0x66, 0x1a, 0x1a, 0xd5, 0x9f, 0xa7, 0xc8, 0x13, 0x6c, 0x01, 0x41, 0xa6, 0x14, 0x26, 0x55,
		0xd4, 0xc9, 0x95, 0x32, 0x24, 0x4b, 0x19, 0xb2, 0xa5, 0x06, 0xe9, 0xa2, 0x45, 0xbe, 0x88, 0x91,
		0xb0, 0x0c, 0x22, 0xf4, 0x6d, 0x01, 0xd3, 0x95, 0x2e, 0x9a, 0x0c, 0x67, 0x99, 0xe5, 0x54, 0x3f,
		0x12, 0x1c, 0x7b, 0xc7, 0x8b, 0x63, 0x16, 0x72, 0xb2, 0x7b, 0xef, 0xf5, 0xdf, 0xff, 0xdc, 0x36,
		0x0e, 0x2e, 0xff, 0xf9, 0xb3, 0x6a, 0x1c, 0x5c, 0xce, 0xbe, 0xad, 0xa6, 0x7f, 0xfc, 0x5d, 0xfb,
		0xf1, 0x4f, 0xed, 0xcf, 0x6d, 0xa3, 0x3e, 0xff, 0xb4, 0xb6, 0xfb, 0xe7, 0xb6, 0xb1, 0x7b, 0xf9,
		0xfe, 0xf7, 0x8b, 0x8b, 0xad, 0x97, 0xfe, 0x9b, 0xf7, 0x7f, 0xef, 0xfc, 0xa0, 0x17, 0x76, 0x2f,
		0x29, 0xc2, 0xb1, 0xdd, 0xb3, 0xbf, 0x92, 0xc7, 0xe4, 0xff, 0x7e, 0x17, 0x85, 0xca, 0xf7, 0xff,
		0xd2, 0xb1, 0x5d, 0x18, 0x74, 0x60, 0x09, 0x7b, 0x30, 0xa7, 0x2a, 0xf9, 0x0e, 0x60, 0x4e, 0x25,
		0xf7, 0x2d, 0xc0, 0x9c, 0x4a, 0xd0, 0x13, 0x87, 0x39, 0x95, 0x0c, 0x5f, 0x6a, 0x98, 0x53, 0xed,
		0xee, 0x6c, 0xef, 0x1e, 0x6a, 0x76, 0xcf, 0xb0, 0x7b, 0x33, 0xeb, 0x9b, 0xc8, 0x1f, 0xf3, 0x48,
		0x1b, 0x8e, 0x43, 0xed, 0x11, 0x87, 0x9b, 0xad, 0xfb, 0x8d, 0x28, 0x7b, 0xa9, 0xaf, 0x8d, 0x36,
		0xb3, 0xb5, 0x81, 0xfb, 0x94, 0x5c, 0xba, 0x19, 0xee, 0x53, 0xf2, 0xdf, 0xd0, 0x03, 0xf7, 0xa9,
		0xfc, 0x27, 0x22, 0xec, 0xa5, 0x30, 0x6a, 0x95, 0xf4, 0x22, 0x7a, 0x22, 0x36, 0x91, 0xf5, 0xc2,
		0x5e, 0x4a, 0xda, 0x0d, 0x71, 0x8f, 0x6f, 0xa4, 0x81, 0xc1, 0xd4, 0xe6, 0x8c, 0x10, 0x06, 0x53,
		0xf9, 0x8f, 0x19, 0x06, 0x53, 0xc5, 0x8a, 0xde, 0xd7, 0xf8, 0xe4, 0xd8, 0x9d, 0xf3, 0xba, 0x6b,
		0xb7, 0x1c, 0xab, 0x7b, 0x62, 0x1e, 0x5b, 0xae, 0xd9, 0x68, 0x74, 0xad, 0x5e, 0x0f, 0x16, 0x53,
		0x62, 0xb5, 0x2c, 0x2c, 0xa6, 0x4a, 0x96, 0xa9, 0x79, 0x4e, 0x1d, 0x98, 0x4c, 0x15, 0xf0, 0xb2,
		0xd4, 0x34, 0x99, 0xb2, 0x3b, 0xb7, 0x75, 0x2d, 0xe3, 0x99, 0xda, 0x9c, 0x67, 0xce, 0x2d, 0x72,
		0xfa, 0x63, 0x1e, 0x7b, 0x3e, 0x67, 0xe1, 0x05, 0x5f, 0xb8, 0xe5, 0x64, 0xe6, 0xdb, 0x7e, 0x34,
		0xf3, 0xcb, 0xd9, 0x83, 0xe9, 0x54, 0x29, 0x01, 0x1b, 0xa6, 0x53, 0x72, 0xc5, 0xef, 0x22, 0x66,
		0x16, 0x6a, 0x48, 0x9b, 0x5c, 0x43, 0x82, 0x09, 0x95, 0xd2, 0xfa, 0x19, 0x26, 0x54, 0x34, 0x6a,
		0x6e, 0xb0, 0xa1, 0x5a, 0xb6, 0xa1, 0xb2, 0x27, 0xb7, 0x75, 0x7b, 0xf1, 0x88, 0xcc, 0xf9, 0x13,
		0x82, 0x11, 0x95, 0x6a, 0x11, 0x6a, 0xd6, 0xde, 0xbe, 0x98, 0x3b, 0x44, 0x7d, 0xa8, 0xd6, 0x86,
		0x0f, 0x1b, 0xaa, 0x3c, 0x86, 0x09, 0x1b, 0xaa, 0x02, 0x81, 0x0b, 0x1b, 0x2a, 0x11, 0xe2, 0x19,
		0x36, 0x54, 0xc2, 0xf5, 0x31, 0x6c, 0xa8, 0x36, 0x42, 0xd5, 0xc0, 0x86, 0xaa, 0xd8, 0xfc, 0x00,
		0x1b, 0x2a, 0x10, 0x1b, 0x8a, 0x04, 0x87, 0x30, 0xd1, 0xa1, 0x4a, 0x78, 0xc8, 0x13, 0x1f, 0xf2,
		0x04, 0x88, 0x36, 0x11, 0xa2, 0x41, 0x88, 0x88, 0x10, 0x23, 0x72, 0x04, 0x29, 0x1b, 0x30, 0x6c,
		0xa8, 0x4a, 0x25, 0x4f, 0xb0, 0xa1, 0x02, 0x99, 0x52, 0x98, 0x54, 0x51, 0x27, 0x57, 0xca, 0x90,
		0x2c, 0x65, 0xc8, 0x96, 0x1a, 0xa4, 0x8b, 0x16, 0xf9, 0x22, 0x46, 0xc2, 0x32, 0x88, 0xc0, 0x86,
		0x4a, 0x12, 0x96, 0x03, 0x1b, 0xaa, 0x32, 0x6e, 0x00, 0x36, 0x54, 0x4f, 0x7d, 0xc1, 0x86, 0xaa,
		0xac, 0xbb, 0x80, 0x0d, 0xd5, 0x4f, 0x71, 0x09, 0x3a, 0x50, 0x20, 0xf6, 0x60, 0x43, 0x55, 0xf2,
		0x1d, 0xc0, 0x86, 0x4a, 0xee, 0x5b, 0x80, 0x0d, 0x95, 0xa0, 0x27, 0x0e, 0x1b, 0x2a, 0x19, 0xbe,
		0x36, 0xdc, 0x86, 0xea, 0xe3, 0xb2, 0xfb, 0x8d, 0x56, 0x85, 0x11, 0x95, 0x5c, 0xca, 0x19, 0x46,
		0x54, 0xf2, 0xdf, 0x50, 0x5e, 0x46, 0x54, 0x3f, 0x99, 0x8a, 0xb0, 0xa2, 0xc2, 0xa8, 0x55, 0xd2,
		0x8c, 0xe8, 0x8b, 0xd8, 0x44, 0xe6, 0x0b, 0x2b, 0x2a, 0xb9, 0xb7, 0xc5, 0x3d, 0xdc, 0x4b, 0x03,
		0x27, 0xaa, 0xcd, 0x19, 0x21, 0x9c, 0xa8, 0xf2, 0x1f, 0x33, 0x9c, 0xa8, 0x8a, 0xd5, 0xbd, 0xaf,
		0xb6, 0xd3, 0x69, 0x59, 0xf6, 0xa7, 0xcf, 0x47, 0xed, 0x2e, 0x8c, 0xa8, 0xca, 0xd1, 0xb2, 0x30,
		0xa2, 0x2a, 0x59, 0xa6, 0xe6, 0x38, 0x73, 0xe0, 0x43, 0x55, 0xc0, 0xbb, 0x52, 0xd8, 0x87, 0x6a,
		0x41, 0x32, 0x33, 0xb3, 0x9c, 0xcc, 0x26, 0x47, 0x4b, 0xc2, 0xc2, 0x05, 0x7f, 0xcc, 0x26, 0xe7,
		0xe3, 0x16, 0x1c, 0xa8, 0x4a, 0x89, 0xd4, 0x70, 0xa0, 0x92, 0x2b, 0x70, 0xe7, 0x3b, 0xa7, 0x50,
		0x34, 0xda, 0xe4, 0xa2, 0x11, 0xbc, 0xa7, 0x94, 0x56, 0xcc, 0xf0, 0x9e, 0x22, 0x51, 0x64, 0x83,
		0xf5, 0xd4, 0x43, 0xeb, 0xa9, 0xc5, 0x5f, 0xc2, 0x79, 0x4a, 0xd5, 0xf8, 0xa4, 0xfb, 0x93, 0xdb,
		0xbd, 0x47, 0x5c, 0xd8, 0x28, 0x59, 0x4f, 0xed, 0x91, 0x73, 0x91, 0x83, 0xf7, 0x54, 0xce, 0x03,
		0x85, 0xf7, 0x14, 0x24, 0xf4, 0xe3, 0xb2, 0x19, 0xde, 0x53, 0xc2, 0x95, 0x31, 0xbc, 0xa7, 0x36,
		0x42, 0xd5, 0xc0, 0x7b, 0xaa, 0xd8, 0xfc, 0x00, 0xef, 0x29, 0x10, 0x1b, 0x8a, 0x04, 0x87, 0x30,
		0xd1, 0xa1, 0x4a, 0x78, 0xc8, 0x13, 0x1f, 0xf2, 0x04, 0x88, 0x36, 0x11, 0xa2, 0x41, 0x88, 0x88,
		0x10, 0x23, 0x72, 0x04, 0x29, 0x1b, 0x30, 0xbc, 0xa7, 0x4a, 0x25, 0x4f, 0xf0, 0x9e, 0x02, 0x99,
		0x52, 0x98, 0x54, 0x51, 0x27, 0x57, 0xca, 0x90, 0x2c, 0x65, 0xc8, 0x96, 0x1a, 0xa4, 0x8b, 0x16,
		0xf9, 0x22, 0x46, 0xc2, 0x32, 0x88, 0x28, 0xe1, 0x3d, 0xb5, 0x07, 0xef, 0xa9, 0x92, 0x18, 0x03,
		0x79, 0xef, 0xa9, 0xd4, 0xb2, 0xc7, 0x33, 0x86, 0xa6, 0x71, 0x72, 0xf9, 0x77, 0xf5, 0x43, 0xfd,
		0xc7, 0xe1, 0xfb, 0xbf, 0xf7, 0x7f, 0x3c, 0xfc, 0xf0, 0x9f, 0xc7, 0x7e, 0xac, 0xfa, 0x61, 0xff,
		0xc7, 0xe1, 0x13, 0x7f, 0xb3, 0xf7, 0xe3, 0xf0, 0x17, 0x7f, 0xc7, 0xee, 0x8f, 0xdf, 0xd7, 0x7e,
		0x34, 0xf9, 0xbc, 0xf6, 0xd4, 0x3f, 0xa8, 0x3f, 0xf1, 0x0f, 0x76, 0x9e, 0xfa, 0x07, 0x3b, 0x4f,
		0xfc, 0x83, 0x27, 0x87, 0x54, 0x7b, 0xe2, 0x1f, 0xec, 0xfe, 0xf8, 0x67, 0xed, 0xe7, 0x7f, 0x7f,
		0xfc, 0x47, 0xf7, 0x7e, 0xbc, 0xff, 0xe7, 0xa9, 0xbf, 0xdb, 0xff, 0xf1, 0xcf, 0xe1, 0xfb, 0xf7,
		0x70, 0xe3, 0x12, 0x32, 0x41, 0x55, 0x72, 0xe3, 0xc2, 0x34, 0x15, 0x3f, 0x4d, 0xe1, 0x4e, 0x06,
		0xc2, 0xb8, 0x32, 0x17, 0xe1, 0x4e, 0x56, 0xf2, 0x1d, 0xc0, 0x9d, 0x4c, 0xee, 0x5b, 0x80, 0x3b,
		0x99, 0xa0, 0x27, 0x0e, 0x77, 0x32, 0x19, 0xbe, 0xd4, 0x70, 0x27, 0xdb, 0xab, 0x56, 0x0f, 0x0e,
		0x35, 0xbb, 0x73, 0xbb, 0xf7, 0x98, 0x05, 0x92, 0xe6, 0xf3, 0x99, 0x5d, 0xd2, 0xd6, 0x62, 0x8f,
		0xd2, 0x05, 0xaf, 0xd6, 0x96, 0xcd, 0x90, 0x60, 0x4b, 0x26, 0x59, 0x51, 0x05, 0xb6, 0x64, 0xf2,
		0xdf, 0xd0, 0x03, 0x5b, 0xb2, 0x5c, 0xe7, 0x20, 0xfc, 0xc8, 0x30, 0x6a, 0x95, 0x54, 0x22, 0x7a,
		0x65, 0x36, 0x91, 0xeb, 0xc2, 0x8f, 0x4c, 0xe6, 0xad, 0x92, 0x8f, 0x6c, 0xb0, 0x82, 0x21, 0xd9,
		0xe6, 0x8c, 0x10, 0x86, 0x64, 0xf9, 0x8f, 0x19, 0x86, 0x64, 0xc5, 0x4a, 0xdd, 0x57, 0xda, 0x2a,
		0xed, 0xb9, 0x76, 0xcb, 0xb1, 0xba, 0x27, 0xe6, 0xb1, 0x05, 0x47, 0xb2, 0x72, 0x64, 0x2c, 0x1c,
		0xc9, 0x4a, 0x56, 0xa8, 0x79, 0x4e, 0x1d, 0x58, 0x92, 0x15, 0xf0, 0xb2, 0x94, 0xb5, 0x24, 0xdb,
		0xd3, 0x32, 0x9e, 0x99, 0xf9, 0x27, 0x25, 0xe1, 0x20, 0xf9, 0xfb, 0x7b, 0x73, 0xf6, 0x14, 0x96,
		0x7e, 0xa4, 0x55, 0x6b, 0xb0, 0x22, 0x2b, 0x27, 0x44, 0xc3, 0x8a, 0x4c, 0xae, 0x88, 0x9d, 0xcf,
		0x5c, 0x42, 0x9d, 0x68, 0x93, 0xeb, 0x44, 0xb0, 0x20, 0x53, 0x5a, 0x23, 0xc3, 0x82, 0x8c, 0x46,
		0x5d, 0x0d, 0x1e, 0x64, 0x0f, 0x3c, 0xc8, 0xf6, 0xec, 0xc5, 0x23, 0x82, 0x09, 0x99, 0xaa, 0x11,
		0x6a, 0xb6, 0xb5, 0x61, 0xcd, 0x8e, 0x8f, 0x96, 0x07, 0x19, 0x31, 0x37, 0x41, 0x58, 0x90, 0xe5,
		0x3c, 0x50, 0x58, 0x90, 0x41, 0x3a, 0x3f, 0x2e, 0x97, 0x61, 0x41, 0x26, 0x5c, 0x11, 0xc3, 0x82,
		0x6c, 0x23, 0x54, 0x0d, 0x2c, 0xc8, 0x8a, 0xcd, 0x0f, 0xb0, 0x20, 0x03, 0xb1, 0xa1, 0x48, 0x70,
		0x08, 0x13, 0x1d, 0xaa, 0x84, 0x87, 0x3c, 0xf1, 0x21, 0x4f, 0x80, 0x68, 0x13, 0x21, 0x1a, 0x84,
		0x88, 0x08, 0x31, 0x22, 0x47, 0x90, 0xb2, 0x01, 0xc3, 0x82, 0xac, 0x54, 0xf2, 0x04, 0x0b, 0x32,
		0x90, 0x29, 0x85, 0x49, 0x15, 0x75, 0x72, 0xa5, 0x0c, 0xc9, 0x52, 0x86, 0x6c, 0xa9, 0x41, 0xba,
		0x68, 0x91, 0x2f, 0x62, 0x24, 0x2c, 0x83, 0x08, 0x2c, 0xc8, 0x24, 0x61, 0x39, 0xb0, 0x20, 0x2b,
		0xe3, 0x06, 0xe0, 0x6d, 0x04, 0x0b, 0xb2, 0x5f, 0xfd, 0x82, 0x05, 0x59, 0x59, 0x77, 0x01, 0x0b,
		0x32, 0x58, 0x90, 0xbd, 0x60, 0x9e, 0x82, 0x30, 0x16, 0x38, 0x17, 0x61, 0x41, 0x56, 0xf2, 0x1d,
		0xc0, 0x82, 0x4c, 0xee, 0x5b, 0x80, 0x05, 0x99, 0xa0, 0x27, 0x0e, 0x0b, 0x32, 0x19, 0xbe, 0x36,
		0xd6, 0x82, 0x6c, 0xe7, 0x50, 0xb3, 0x7b, 0x76, 0x0f, 0x3e, 0x64, 0xf2, 0x56, 0x56, 0xe0, 0x43,
		0x26, 0xff, 0x0d, 0xbd, 0xdd, 0x87, 0xec, 0x99, 0x89, 0x08, 0x33, 0x32, 0x8c, 0x5a, 0x25, 0xbd,
		0x88, 0xae, 0x99, 0x4d, 0x64, 0xbd, 0x30, 0x23, 0x93, 0x7b, 0xd3, 0xe4, 0xc3, 0x9d, 0x56, 0xf0,
		0x22, 0xdb, 0x9c, 0x11, 0xc2, 0x8b, 0x2c, 0xff, 0x31, 0xc3, 0x8b, 0xac, 0x58, 0xcd, 0xfb, 0x6a,
		0x43, 0xa5, 0x96, 0x65, 0x7f, 0xfa, 0x7c, 0xd4, 0xee, 0xc2, 0x8a, 0xac, 0x1c, 0x25, 0x0b, 0x2b,
		0xb2, 0x92, 0x45, 0x6a, 0x8e, 0x33, 0x07, 0x4e, 0x64, 0x05, 0xbc, 0x2b, 0x85, 0x9d, 0xc8, 0x16,
		0x24, 0xf3, 0x57, 0xcc, 0x93, 0x76, 0x60, 0x44, 0x56, 0x4e, 0x80, 0x86, 0x11, 0x99, 0x5c, 0xf1,
		0x3a, 0x97, 0xa9, 0x84, 0x12, 0xd1, 0x26, 0x97, 0x88, 0xe0, 0x43, 0xa6, 0xb4, 0x3e, 0x86, 0x0f,
		0x19, 0x89, 0x92, 0x1a, 0x6c, 0xc8, 0x1e, 0xda, 0x90, 0x2d, 0xfe, 0x12, 0x2e, 0x64, 0xaa, 0xc6,
		0x27, 0x3d, 0xf0, 0xb8, 0xe1, 0x0d, 0xfe, 0x9f, 0xd7, 0x67, 0xbc, 0x7f, 0x67, 0x44, 0xfe, 0x80,
		0x90, 0x05, 0xd9, 0x23, 0x63, 0x87, 0xff, 0x58, 0x1e, 0xc3, 0x84, 0xff, 0x58, 0x81, 0xa8, 0x85,
		0xff, 0x98, 0x08, 0x95, 0x0c, 0xff, 0x31, 0xe1, 0x42, 0x18, 0xfe, 0x63, 0x1b, 0xa1, 0x66, 0xc8,
		0xf8, 0x8f, 0xad, 0xd1, 0x03, 0x7a, 0x5e, 0x64, 0xeb, 0xb7, 0x00, 0x5f, 0xb2, 0x4d, 0x26, 0x3c,
		0x14, 0x89, 0x0f, 0x61, 0x02, 0x44, 0x95, 0x08, 0x91, 0x27, 0x44, 0xe4, 0x89, 0x11, 0x6d, 0x82,
		0x44, 0x83, 0x28, 0x11, 0x21, 0x4c, 0xe4, 0x88, 0x53, 0x36, 0x60, 0x5a, 0x06, 0xae, 0x6b, 0x79,
		0x86, 0x92, 0x91, 0x2b, 0x51, 0xe2, 0x44, 0x96, 0x40, 0x51, 0x26, 0x52, 0x0a, 0x10, 0x2a, 0xea,
		0xc4, 0x4a, 0x19, 0x82, 0xa5, 0x0c, 0xd1, 0x52, 0x83, 0x70, 0xd1, 0x22, 0x5e, 0xc4, 0x08, 0x18,
		0x59, 0x22, 0x96, 0x0d, 0x7c, 0x18, 0x78, 0xa3, 0x88, 0x6e, 0xb0, 0x5c, 0xe4, 0xab, 0xd9, 0x6d,
		0x10, 0x8d, 0x2f, 0x34, 0x4d, 0x63, 0xc9, 0x13, 0x35, 0x15, 0x08, 0x9b, 0x42, 0xc4, 0x4d, 0x15,
		0x02, 0xa7, 0x1c, 0x91, 0x53, 0x8e, 0xd0, 0xa9, 0x45, 0xec, 0x68, 0x12, 0x3c, 0xa2, 0x44, 0x2f,
		0x83, 0x0e, 0x59, 0x13, 0xda, 0xb5, 0x8c, 0xc1, 0xf8, 0xf4, 0x86, 0x85, 0x1e, 0xd1, 0xe6, 0xff,
		0x87, 0x24, 0xaa, 0x5a, 0x27, 0x7c, 0x0f, 0x16, 0x9f, 0xde, 0xd0, 0xcf, 0x7b, 0xce, 0xb8, 0x17,
		0x87, 0x3e, 0x1f, 0x91, 0xbf, 0x93, 0xf4, 0x6e, 0xb6, 0x93, 0x39, 0x32, 0xdf, 0xfe, 0xe6, 0x9e,
		0x98, 0xa7, 0x76, 0xf3, 0x0f, 0xe2, 0x79, 0x3c, 0xbd, 0xad, 0x6a, 0x72, 0x5b, 0x47, 0xe6, 0xf1,
		0x97, 0xb3, 0x8e, 0x0a, 0xb7, 0x53, 0x4b, 0x6e, 0xe7, 0xdc, 0x6c, 0x9e, 0x59, 0x2a, 0xdc, 0xcd,
		0x4e, 0x72, 0x37, 0xcd, 0xf6, 0xb1, 0xd9, 0x54, 0xe1, 0x6e, 0xea, 0xc9, 0xdd, 0xf4, 0x2c, 0x47,
		0x27, 0x7d, 0x2b, 0x3f, 0x3e, 0x50, 0x8f, 0xca, 0x76, 0x4a, 0x74, 0x15, 0x08, 0xc9, 0x0f, 0xa2,
		0x31, 0xd9, 0xc2, 0xc3, 0xca, 0x4d, 0xcd, 0x63, 0x31, 0xb9, 0x75, 0xba, 0x47, 0x6f, 0x66, 0x16,
		0xbb, 0x0e, 0xb5, 0x1d, 0x05, 0xee, 0x25, 0x89, 0x5c, 0x87, 0x5a, 0x5d, 0x81, 0x3b, 0x99, 0xe5,
		0xc7, 0x43, 0xad, 0x46, 0x3b, 0x10, 0x43, 0xa1, 0x23, 0xf1, 0xfd, 0x4a, 0x0c, 0xa2, 0xec, 0xfa,
		0x9d, 0xdd, 0x05, 0x79, 0xf7, 0xef, 0xfb, 0x3b, 0x51, 0xd0, 0x05, 0x3c, 0xbb, 0x39, 0xfa, 0x6e,
		0xe0, 0xeb, 0xb7, 0x42, 0xd6, 0x15, 0x9c, 0x6e, 0xbc, 0x25, 0x18, 0x6b, 0xf5, 0x6c, 0xcf, 0x33,
		0xa1, 0xdd, 0x10, 0x6b, 0x37, 0xb1, 0x28, 0x86, 0x2e, 0xdf, 0x0c, 0x56, 0x93, 0xcb, 0x18, 0x3e,
		0x56, 0x93, 0x25, 0x9a, 0x0e, 0x58, 0x4d, 0x96, 0x67, 0x5a, 0x63, 0x35, 0x59, 0xf2, 0x1b, 0xc2,
		0x6a, 0x32, 0xf8, 0xd3, 0x2b, 0xa1, 0xa3, 0xce, 0x6a, 0x72, 0x74, 0x17, 0xc5, 0xec, 0x86, 0x2e,
		0x7d, 0xd2, 0x88, 0x9f, 0x6f, 0x7a, 0x4f, 0x43, 0x88, 0x9f, 0xa0, 0x98, 0xdd, 0xc8, 0x9f, 0xdb,
		0xc6, 0x81, 0x69, 0x9c, 0x78, 0xc6, 0xf0, 0xf2, 0xef, 0xfa, 0x8f, 0x8b, 0x8b, 0xad, 0x67, 0x3e,
		0xa0, 0x1b, 0x73, 0x2f, 0x29, 0xc3, 0x4d, 0x85, 0x53, 0x3b, 0xb3, 0xbb, 0xf9, 0xdf, 0x4b, 0x41,
		0xf7, 0x2f, 0xc2, 0xa8, 0x43, 0x6d, 0x07, 0xdc, 0xe4, 0x89, 0x79, 0x70, 0xeb, 0x05, 0x53, 0x46,
		0xbf, 0xaa, 0x33, 0xbb, 0x0d, 0xd4, 0x73, 0xca, 0x18, 0x3e, 0xea, 0x39, 0x12, 0x4d, 0x04, 0xd4,
		0x73, 0xe4, 0x99, 0xd6, 0xa8, 0xe7, 0x48, 0x7e, 0x43, 0xa8, 0xe7, 0x80, 0x33, 0xbd, 0x12, 0x3a,
		0xea, 0xd4, 0x73, 0xa6, 0x3e, 0x8f, 0x77, 0x6a, 0x0a, 0x14, 0x73, 0xf6, 0x09, 0xdf, 0x42, 0xd7,
		0xe3, 0x23, 0x46, 0x5e, 0x55, 0x2b, 0xd0, 0x79, 0x7a, 0xea, 0x73, 0x25, 0x5a, 0x68, 0xd3, 0x9b,
		0x39, 0x9f, 0x8b, 0x3b, 0x05, 0xba, 0x67, 0xd3, 0xfb, 0x39, 0x09, 0xbd, 0x7e, 0xec, 0x8f, 0x79,
		0xc3, 0x1f, 0xf9, 0xd4, 0xbb, 0xa5, 0x56, 0x63, 0x31, 0x1b, 0x79, 0xb1, 0x7f, 0xcb, 0x48, 0x37,
		0xe3, 0x28, 0x90, 0xd6, 0x57, 0x43, 0x81, 0xf7, 0x5d, 0xbd, 0x50, 0x50, 0xaf, 0x1d, 0xd4, 0x0f,
		0xf6, 0xf6, 0x6b, 0x07, 0xbb, 0x88, 0x09, 0x88, 0x09, 0x10, 0x28, 0x1b, 0x30, 0x7a, 0x94, 0xff,
		0x91, 0xf3, 0x9e, 0x0a, 0x32, 0xdf, 0x98, 0x3f, 0xba, 0x8e, 0xe9, 0xd7, 0xff, 0xe7, 0xf7, 0x81,
		0x05, 0x80, 0x32, 0x86, 0x8f, 0x05, 0x00, 0x89, 0x66, 0x02, 0x16, 0x00, 0xe4, 0x99, 0xd6, 0x58,
		0x00, 0x90, 0xfc, 0x86, 0xb0, 0x00, 0x00, 0xd6, 0xf4, 0x4a, 0xe8, 0xa8, 0xb5, 0x00, 0xf0, 0x51,
		0x81, 0xfa, 0xff, 0x2e, 0xea, 0xff, 0x25, 0x7f, 0xa1, 0xfe, 0x2f, 0xd7, 0xcd, 0xa0, 0xfe, 0x4f,
		0x25, 0x14, 0xa3, 0xfe, 0x2f, 0x61, 0x28, 0x50, 0xb1, 0xfe, 0x5f, 0xdb, 0x45, 0xe1, 0x1f, 0xc1,
		0x00, 0xc2, 0x64, 0x13, 0x46, 0x8f, 0xc2, 0x3f, 0x46, 0x4c, 0x3e, 0x35, 0xeb, 0x26, 0xe7, 0xe3,
		0x78, 0x66, 0x5e, 0x4b, 0xf2, 0xfc, 0x85, 0xa8, 0x7f, 0xcd, 0x6e, 0xbc, 0x89, 0x17, 0x5f, 0x27,
		0x62, 0xbb, 0x32, 0x9e, 0x30, 0xde, 0x4f, 0x0b, 0xe6, 0x06, 0x9f, 0x9d, 0xc4, 0x6f, 0xf8, 0xf3,
		0x53, 0xf4, 0x2b, 0x0f, 0x3f, 0x88, 0xd6, 0x3e, 0xa9, 0x4c, 0xe6, 0xa7, 0xf5, 0x47, 0xd9, 0x77,
		0x15, 0x3f, 0xf2, 0xa3, 0x4a, 0xc0, 0x6e, 0x59, 0x30, 0xff, 0xa3, 0x12, 0xf8, 0xfc, 0x2f, 0x23,
		0x3d, 0xc9, 0xca, 0x18, 0x78, 0xb1, 0x77, 0xe5, 0x45, 0xac, 0x12, 0x44, 0x93, 0x4a, 0x1c, 0xdc,
		0x46, 0xc9, 0x7f, 0x2a, 0x6c, 0x7e, 0xae, 0xbf, 0xe1, 0x47, 0x46, 0xb8, 0x74, 0xb2, 0x7f, 0x65,
		0xe1, 0x8e, 0x11, 0x65, 0xdf, 0x55, 0xee, 0x07, 0x93, 0x0d, 0x22, 0x4a, 0x4f, 0xfb, 0x8f, 0xe6,
		0x7f, 0x56, 0xd6, 0x8f, 0x54, 0x5f, 0xff, 0xa8, 0x32, 0x3b, 0x58, 0xeb, 0x1d, 0xe6, 0xf5, 0x86,
		0xcf, 0x69, 0xa2, 0x3b, 0x8e, 0x48, 0xef, 0x34, 0x22, 0xba, 0xc0, 0x88, 0x03, 0xe2, 0xca, 0x04,
		0x3a, 0x0e, 0x88, 0x2b, 0x6f, 0xba, 0xe2, 0x80, 0x38, 0xd9, 0x48, 0x28, 0x0e, 0x88, 0x03, 0xa7,
		0xf9, 0x39, 0x44, 0xc8, 0x2e, 0x08, 0x66, 0x11, 0x3f, 0x60, 0xde, 0x30, 0x64, 0x43, 0x8a, 0x11,
		0x7f, 0xe1, 0xe7, 0x42, 0x70, 0x0f, 0x90, 0xde, 0x99, 0x4b, 0xc3, 0xad, 0xad, 0x99, 0x48, 0xaa,
		0xcc, 0x28, 0x26, 0xa4, 0xd2, 0x06, 0x8f, 0x94, 0xca, 0xf1, 0xe4, 0x5f, 0xd8, 0x1d, 0x35, 0x51,
		0x44, 0xd3, 0x36, 0x9a, 0xae, 0x4d, 0xb4, 0x52, 0xb6, 0xd0, 0x84, 0x6d, 0xa0, 0x09, 0xdb, 0x3e,
		0x53, 0x89, 0x86, 0x44, 0x4b, 0xd5, 0x28, 0x51, 0xa7, 0x1f, 0x11, 0xe2, 0xbd, 0x7a, 0x14, 0x87,
		0xd3, 0x7e, 0xcc, 0xe7, 0xc4, 0xbd, 0x35, 0x7b, 0x05, 0xf6, 0xfc, 0xe6, 0xdd, 0xce, 0xfc, 0xb9,
		0xbb, 0x76, 0xe4, 0x47, 0x6e, 0x33, 0x79, 0xe0, 0x6e, 0x33, 0x9a, 0xb8, 0x4e, 0x70, 0xeb, 0x5a,
		0xf3, 0xe7, 0x6a, 0x47, 0xdd, 0xa5, 0xa7, 0xea, 0xb6, 0xe6, 0xcf, 0xd2, 0xcd, 0x7e, 0x49, 0x2f,
		0x7d, 0x72, 0x6e, 0xd3, 0xe3, 0xe6, 0xe2, 0x29, 0xf5, 0xfc, 0x01, 0x0d, 0x5a, 0x2a, 0x3f, 0xc9,
		0x93, 0x7b, 0x84, 0x92, 0x07, 0x5c, 0x9d, 0x7d, 0x8f, 0x43, 0xcf, 0x98, 0x26, 0x50, 0xbd, 0x0a,
		0x68, 0xa8, 0x6e, 0x3d, 0x64, 0x43, 0x16, 0x32, 0xde, 0xa7, 0xd3, 0xe6, 0x49, 0x28, 0x83, 0x2d,
		0x4a, 0x18, 0x83, 0xd0, 0x1b, 0xc6, 0x86, 0xcf, 0xe2, 0x61, 0x5a, 0xa3, 0x33, 0x22, 0x36, 0x4a,
		0x88, 0xa7, 0x11, 0x8e, 0xa7, 0xb1, 0xcf, 0x47, 0x46, 0x9a, 0x55, 0x22, 0x7f, 0xcc, 0xa3, 0x2d,
		0x2d, 0x9a, 0x5e, 0x19, 0x4e, 0xf3, 0x5c, 0xdb, 0xa9, 0x1d, 0x5e, 0xf0, 0xe4, 0x9b, 0x5a, 0xed,
		0x83, 0x56, 0x9b, 0xfd, 0x67, 0xe7, 0x83, 0x56, 0xad, 0x57, 0xb7, 0x28, 0xa5, 0x04, 0xa2, 0x45,
		0xef, 0xe5, 0x62, 0xf7, 0xfd, 0x14, 0x21, 0x56, 0xfb, 0xa3, 0x5e, 0xe7, 0x5e, 0xa9, 0x6f, 0xe7,
		0x3d, 0x87, 0x50, 0x1a, 0xda, 0xb0, 0x51, 0x12, 0x70, 0x39, 0xd6, 0xbf, 0x5d, 0x33, 0x8e, 0x44,
		0x5c, 0x5c, 0x22, 0xce, 0x8a, 0xd9, 0xf1, 0xdd, 0x84, 0x69, 0xff, 0xd6, 0x7e, 0x9b, 0xaf, 0x9a,
		0x19, 0x41, 0x34, 0xb8, 0x32, 0x92, 0x0f, 0xa3, 0x43, 0xbb, 0xe7, 0x76, 0x2d, 0xf3, 0xf8, 0xb3,
		0x79, 0x64, 0x37, 0x6d, 0xe7, 0x0f, 0xd7, 0x6c, 0xfc, 0xc7, 0x6d, 0x9a, 0x2d, 0xb7, 0x67, 0x37,
		0x7e, 0x43, 0xe6, 0x15, 0x9a, 0x79, 0xd3, 0xe9, 0x80, 0xa4, 0x5b, 0x5e, 0xd2, 0x7d, 0xf3, 0x7c,
		0x41, 0xaf, 0x5a, 0x01, 0x6f, 0xa8, 0xc1, 0xa2, 0x7e, 0xe8, 0x4f, 0x48, 0x36, 0x9f, 0x66, 0xa1,
		0xb8, 0xcd, 0x83, 0x3b, 0xcd, 0xe7, 0xfd, 0x60, 0x3a, 0x60, 0x5a, 0x7c, 0xcd, 0xb4, 0xa6, 0xd9,
		0xd2, 0xb2, 0xca, 0x97, 0xd6, 0xb3, 0x1b, 0x5a, 0x7f, 0xcc, 0x63, 0xcf, 0xe7, 0x2c, 0xd4, 0x92,
		0x40, 0x70, 0xc1, 0x93, 0x9f, 0x5a, 0x50, 0x3b, 0x3f, 0xd2, 0x52, 0x4c, 0xee, 0xd4, 0xb6, 0xa8,
		0x45, 0x08, 0xc2, 0x7d, 0x40, 0xcb, 0xc1, 0x79, 0xb0, 0x84, 0x42, 0x82, 0xeb, 0xdb, 0x2a, 0x34,
		0x01, 0xad, 0xc4, 0xea, 0x1c, 0x27, 0x14, 0x16, 0xf9, 0xa1, 0xe4, 0x64, 0x56, 0x72, 0xa8, 0x52,
		0xbf, 0x25, 0x66, 0xd0, 0x5a, 0x0e, 0xdc, 0xc8, 0x65, 0x40, 0xb9, 0x23, 0xb0, 0xbc, 0x11, 0x42,
		0xe2, 0xb9, 0xa7, 0xa7, 0xa0, 0xf2, 0xe2, 0x38, 0xf4, 0xaf, 0xa6, 0x31, 0x8b, 0xa4, 0x9f, 0x7c,
		0xf7, 0x0d, 0x98, 0x0f, 0x06, 0x2e, 0x79, 0x7c, 0x5b, 0x34, 0x5d, 0x4a, 0x3e, 0x4c, 0x2a, 0xbb,
		0x48, 0x28, 0xed, 0x1a, 0x21, 0xb8, 0x4b, 0x84, 0x9a, 0x1a, 0x24, 0xbb, 0x0b, 0x84, 0xac, 0xe0,
		0xa3, 0xb9, 0xcb, 0x03, 0x9d, 0x24, 0x6f, 0x79, 0xe5, 0x0d, 0x3f, 0x24, 0x42, 0xce, 0xd3, 0xfd,
		0xd3, 0x64, 0x82, 0x57, 0x76, 0x5a, 0x70, 0x3a, 0x6c, 0x2a, 0xdd, 0xec, 0x24, 0x08, 0x0d, 0x39,
		0x62, 0x43, 0x91, 0xe0, 0x10, 0x26, 0x3a, 0x54, 0x09, 0x0f, 0x79, 0xe2, 0x43, 0x9e, 0x00, 0xd1,
		0x26, 0x42, 0x34, 0x08, 0x11, 0x11, 0x62, 0x44, 0x8e, 0x20, 0x65, 0x03, 0x0e, 0xc6, 0x7d, 0x2f,
		0x30, 0x26, 0xe1, 0x38, 0x66, 0x7d, 0xda, 0x0b, 0xb7, 0x6b, 0x77, 0x02, 0xd7, 0x11, 0xd0, 0x2a,
		0xb5, 0xe8, 0x95, 0x02, 0x34, 0x8b, 0x3a, 0xdd, 0x52, 0x86, 0x76, 0x29, 0x43, 0xbf, 0xd4, 0xa0,
		0x61, 0xb4, 0xe8, 0x18, 0x31, 0x5a, 0x96, 0x41, 0x84, 0xbe, 0xeb, 0x08, 0xe3, 0xd3, 0x1b, 0x16,
		0x7a, 0x54, 0xbb, 0x9b, 0x16, 0x35, 0xa3, 0x3a, 0xc1, 0xb1, 0x5b, 0x7c, 0x7a, 0x43, 0x37, 0x5f,
		0x39, 0xe3, 0x5e, 0x1c, 0xfa, 0x7c, 0x44, 0xfb, 0x14, 0x8e, 0xed, 0x64, 0x0e, 0x34, 0xdb, 0xc7,
		0x66, 0xd3, 0xed, 0x74, 0xdb, 0x8e, 0x75, 0xec, 0xd8, 0xed, 0x16, 0xe5, 0xd3, 0x38, 0xaa, 0xe9,
		0x0d, 0xd9, 0xad, 0x2f, 0xae, 0xf5, 0xf5, 0xb8, 0x79, 0xd6, 0xb0, 0x1a, 0x3a, 0x0e, 0xa6, 0x11,
		0x3a, 0x2d, 0x6c, 0x1e, 0xd3, 0x9e, 0x13, 0xab, 0xe8, 0x21, 0x53, 0x90, 0x7f, 0xfc, 0x5e, 0x1e,
		0x4e, 0xed, 0x43, 0x6d, 0x1b, 0xbe, 0xdc, 0x18, 0x31, 0x79, 0xe6, 0x49, 0xd2, 0x46, 0x29, 0x1b,
		0x3d, 0x59, 0x3b, 0xa5, 0xfb, 0x3b, 0x50, 0xc8, 0x56, 0x29, 0xbb, 0x29, 0xba, 0xf6, 0x4a, 0xeb,
		0xb7, 0x40, 0xce, 0x66, 0x89, 0x6a, 0x24, 0x22, 0xe8, 0x06, 0xb2, 0x76, 0x0f, 0xf4, 0xdc, 0x41,
		0x1e, 0x7e, 0x29, 0x70, 0x12, 0x62, 0xf7, 0xe4, 0x78, 0x77, 0xbb, 0x76, 0x70, 0xa8, 0x35, 0xd8,
		0xd0, 0xe7, 0x7e, 0xec, 0x8f, 0xb9, 0x36, 0x1e, 0x6a, 0x1e, 0xd7, 0xec, 0x9e, 0x61, 0xf7, 0xb4,
		0xa6, 0xcf, 0xff, 0xd2, 0xcc, 0x45, 0x7f, 0xae, 0xd6, 0x9b, 0x5e, 0x19, 0xa9, 0xeb, 0xc1, 0x96,
		0xb6, 0xb0, 0x3e, 0x58, 0xec, 0xf1, 0xa9, 0x1e, 0x6c, 0xe1, 0x04, 0x5e, 0x09, 0x8a, 0x33, 0xf4,
		0xbd, 0x45, 0xd6, 0xee, 0x49, 0xe9, 0x43, 0x78, 0xf3, 0x9d, 0x81, 0x38, 0xca, 0x17, 0xa3, 0xfe,
		0xe9, 0xd7, 0x25, 0xf6, 0x5f, 0x6e, 0xf0, 0x48, 0x61, 0x2b, 0x5a, 0xec, 0xb8, 0x37, 0x60, 0x3f,
		0xe1, 0xea, 0x86, 0x2d, 0x4a, 0x87, 0x5c, 0xc1, 0x22, 0x53, 0xe9, 0xe0, 0x41, 0xd2, 0x22, 0x13,
		0xa6, 0x5c, 0xc5, 0xea, 0xdb, 0xd7, 0x98, 0x0c, 0xa5, 0x6b, 0x31, 0xa6, 0xe3, 0x74, 0xed, 0xa3,
		0x33, 0xc7, 0xea, 0xc1, 0x98, 0x4b, 0xac, 0x6c, 0x85, 0x31, 0x57, 0xc9, 0x8a, 0x34, 0x97, 0x39,
		0x03, 0x73, 0xae, 0x02, 0xde, 0x92, 0x9a, 0xe6, 0x5c, 0x09, 0xa5, 0xd4, 0xee, 0x29, 0xe5, 0x03,
		0x27, 0xa1, 0xe4, 0x47, 0x2e, 0xf8, 0x43, 0x27, 0x21, 0x7a, 0xd5, 0x46, 0x58, 0x73, 0x21, 0x52,
		0x17, 0x11, 0xad, 0x73, 0x9b, 0x4e, 0x28, 0x0c, 0x6d, 0x72, 0x61, 0x08, 0xc6, 0x5c, 0x4a, 0x6b,
		0x63, 0x18, 0x73, 0x49, 0x5e, 0x48, 0xa3, 0x60, 0x27, 0x23, 0xf0, 0x08, 0x1e, 0x9f, 0xff, 0x65,
		0xde, 0x3f, 0x1b, 0x38, 0x96, 0xa9, 0x16, 0x94, 0x66, 0xc6, 0x5f, 0x03, 0x16, 0x78, 0x77, 0xc4,
		0xcc, 0xca, 0x66, 0x63, 0x86, 0x4f, 0x59, 0x1e, 0xc3, 0x84, 0x4f, 0x59, 0x81, 0x68, 0x85, 0x4f,
		0x99, 0x08, 0x39, 0x0c, 0x9f, 0x32, 0xe1, 0x8a, 0x17, 0x3e, 0x65, 0x1b, 0x21, 0x59, 0xe0, 0x53,
		0x56, 0x6c, 0x7e, 0x80, 0x4f, 0x19, 0x88, 0x0d, 0x45, 0x82, 0x43, 0x98, 0xe8, 0x50, 0x25, 0x3c,
		0xe4, 0x89, 0x0f, 0x79, 0x02, 0x44, 0x9b, 0x08, 0xd1, 0x20, 0x44, 0x44, 0x88, 0x11, 0x39, 0x82,
		0x94, 0x0d, 0xd8, 0x33, 0xae, 0xfc, 0x98, 0xee, 0xc2, 0xf5, 0x6c, 0xf8, 0x70, 0x24, 0x03, 0x81,
		0x52, 0x8b, 0x48, 0x29, 0x40, 0xa8, 0xa8, 0x13, 0x2b, 0x65, 0x08, 0x96, 0x32, 0x44, 0x4b, 0x0d,
		0xc2, 0x45, 0x8b, 0x78, 0x11, 0x23, 0x60, 0x19, 0x44, 0xe8, 0x3b, 0x92, 0x5d, 0x8d, 0xc7, 0x01,
		0xf3, 0x48, 0xbb, 0x91, 0x55, 0xd1, 0xbf, 0xb4, 0xe9, 0x93, 0x51, 0xa7, 0xb1, 0x9e, 0xfc, 0xe4,
		0x2c, 0xa4, 0xb0, 0xb4, 0x0c, 0x81, 0x01, 0x81, 0x01, 0x81, 0x01, 0x81, 0x01, 0x81, 0x01, 0x81,
		0x01, 0x81, 0x01, 0x81, 0xf1, 0x8b, 0x11, 0x7f, 0xea, 0xf3, 0x78, 0xa7, 0x46, 0x58, 0x5f, 0xec,
		0x13, 0x1c, 0x7a, 0xd7, 0xe3, 0x23, 0xb8, 0x6b, 0x95, 0xf0, 0xe0, 0x4f, 0x7d, 0x4e, 0xdf, 0x49,
		0xea, 0xdc, 0x0b, 0xa6, 0x8c, 0xa6, 0x53, 0xe4, 0xca, 0x7d, 0x9c, 0x84, 0x5e, 0x7a, 0x96, 0x4c,
		0xc3, 0x1f, 0xf9, 0x54, 0xad, 0x2f, 0x57, 0x63, 0x2a, 0x1b, 0x79, 0xb1, 0x7f, 0xcb, 0x48, 0x3a,
		0x2d, 0x12, 0x4e, 0xc3, 0xab, 0x53, 0xdc, 0xfb, 0xae, 0xce, 0x14, 0xaf, 0xd7, 0x0e, 0xea, 0x07,
		0x7b, 0xfb, 0xb5, 0x83, 0x5d, 0xcc, 0x75, 0xcc, 0x75, 0x08, 0x04, 0xc2, 0xa3, 0x86, 0xbf, 0xdb,
		0x26, 0x8f, 0x14, 0xfe, 0x6e, 0xc5, 0x8e, 0x7b, 0x43, 0xb6, 0xa5, 0xa6, 0x0b, 0x11, 0xb0, 0x76,
		0xdb, 0x9c, 0x11, 0xc2, 0xda, 0x2d, 0xff, 0x31, 0xd3, 0xf3, 0x37, 0x27, 0xd8, 0xfb, 0xdf, 0x3d,
		0x39, 0xde, 0xff, 0x58, 0xdd, 0x3e, 0x9c, 0x9b, 0x25, 0x3b, 0xa1, 0x37, 0x1c, 0xfa, 0x7d, 0xcd,
		0xe2, 0x23, 0x9f, 0x33, 0x16, 0xfa, 0x7c, 0xa4, 0xfd, 0xee, 0x58, 0xef, 0xb5, 0x53, 0x16, 0x87,
		0x7e, 0xff, 0x82, 0xa7, 0x1b, 0xd1, 0x23, 0x7f, 0xcc, 0xa3, 0xad, 0xcc, 0x37, 0x79, 0x67, 0xe7,
		0x30, 0xf3, 0x52, 0xae, 0xed, 0x7c, 0xd0, 0xaa, 0xf5, 0xea, 0x07, 0xad, 0x96, 0xfe, 0x5f, 0x6d,
		0x67, 0x0b, 0xdb, 0x0a, 0x8a, 0x1f, 0xb7, 0x02, 0xa6, 0xe5, 0x6a, 0xed, 0x2c, 0x10, 0x30, 0xad,
		0xc0, 0xfc, 0x37, 0x6c, 0x94, 0x97, 0x1f, 0x60, 0xc7, 0xba, 0xe9, 0xe9, 0xfa, 0xd5, 0xd6, 0x92,
		0x0d, 0xab, 0x69, 0xfe, 0x01, 0x27, 0x56, 0xb1, 0xb9, 0x18, 0x4e, 0xac, 0x25, 0xa7, 0xe1, 0xb7,
		0x4e, 0x17, 0x34, 0x99, 0x16, 0xf0, 0x82, 0x94, 0x30, 0x61, 0xb5, 0x1f, 0x1a, 0x46, 0xa6, 0x25,
		0x9f, 0x25, 0xaf, 0xc8, 0x31, 0x0f, 0xee, 0x32, 0xc3, 0xc8, 0x05, 0xa7, 0xbb, 0xe0, 0x29, 0x10,
		0x17, 0xae, 0x91, 0x3b, 0x3b, 0x30, 0x61, 0x2d, 0x27, 0x32, 0xc3, 0x84, 0x55, 0xae, 0x40, 0x9d,
		0xdb, 0x74, 0xc2, 0xea, 0x0d, 0x34, 0x9c, 0xcc, 0x1a, 0x0e, 0x55, 0xec, 0xb7, 0x44, 0x0c, 0x98,
		0xb0, 0x4a, 0xbb, 0xda, 0x05, 0xff, 0xd5, 0x87, 0xfe, 0xab, 0x8d, 0xf4, 0xb1, 0xc0, 0x7a, 0x55,
		0xb5, 0x50, 0xb4, 0x64, 0x63, 0x6a, 0xdc, 0x7a, 0xa1, 0x4f, 0x23, 0x20, 0x3d, 0x62, 0xc2, 0xba,
		0x34, 0x7a, 0xd8, 0xb1, 0xe6, 0x31, 0x4c, 0xd8, 0xb1, 0x16, 0x88, 0x5b, 0xd8, 0xb1, 0x8a, 0x10,
		0xc6, 0xb0, 0x63, 0x15, 0xae, 0x7d, 0x61, 0xc7, 0xba, 0x11, 0xe2, 0x05, 0x76, 0xac, 0xc5, 0xe6,
		0x07, 0xd8, 0xb1, 0x82, 0xd8, 0x50, 0x24, 0x38, 0x84, 0x89, 0x0e, 0x55, 0xc2, 0x43, 0x9e, 0xf8,
		0x90, 0x27, 0x40, 0xb4, 0x89, 0x10, 0x0d, 0x42, 0x44, 0x84, 0x18, 0x91, 0x23, 0x48, 0xd9, 0x80,
		0xe1, 0x96, 0x54, 0x1a, 0x71, 0x82, 0x5b, 0x12, 0x88, 0x94, 0xc2, 0x84, 0x8a, 0x3a, 0xb1, 0x52,
		0x86, 0x60, 0x29, 0x43, 0xb4, 0xd4, 0x20, 0x5c, 0xb4, 0x88, 0x17, 0x31, 0x02, 0x96, 0x41, 0x04,
		0x6e, 0x49, 0xa5, 0xf3, 0x1b, 0xb8, 0x25, 0x89, 0xfe, 0x82, 0x5b, 0x52, 0xb9, 0x37, 0x01, 0xb7,
		0x24, 0x59, 0x63, 0x2a, 0xdc, 0x92, 0x24, 0x98, 0xe2, 0x70, 0x4b, 0xc2, 0x5c, 0xc7, 0x5c, 0x57,
		0x54, 0x20, 0xd0, 0x1d, 0x35, 0xdc, 0x92, 0x36, 0x79, 0xa4, 0x70, 0x4b, 0x2a, 0x76, 0xdc, 0x9b,
		0xd4, 0x3f, 0x7e, 0xdf, 0x8c, 0x0a, 0xdf, 0xa4, 0xcd, 0x19, 0x21, 0x7c, 0x93, 0xf2, 0x1f, 0x33,
		0x7c, 0x93, 0x8a, 0x64, 0xc8, 0x79, 0xfa, 0x26, 0xed, 0x66, 0x06, 0x2f, 0xb5, 0x9d, 0x0f, 0xd5,
		0x7a, 0xf5, 0x43, 0x2d, 0xf9, 0x16, 0x9e, 0x49, 0x42, 0xc6, 0x0d, 0xcf, 0x24, 0x19, 0x98, 0x59,
		0xde, 0x9e, 0x49, 0x4f, 0x4f, 0x29, 0x70, 0xff, 0x0d, 0x1b, 0x25, 0xfc, 0x92, 0x90, 0xa6, 0xdf,
		0x66, 0x00, 0xe3, 0x9e, 0x9b, 0x5d, 0xdb, 0x74, 0xec, 0x76, 0x0b, 0xce, 0x49, 0x62, 0x33, 0x32,
		0x9c, 0x93, 0x4a, 0x4e, 0xc6, 0xf9, 0x4d, 0x1c, 0x78, 0x28, 0x15, 0xf0, 0xaa, 0x94, 0xf0, 0x50,
		0x6a, 0xf3, 0xe0, 0x4e, 0xf3, 0x1f, 0x77, 0x7e, 0xc9, 0xaa, 0x41, 0x4b, 0x1e, 0x30, 0x49, 0x50,
		0xb8, 0xe0, 0x4b, 0xfe, 0x2f, 0xf7, 0xce, 0x2f, 0xbb, 0x30, 0x52, 0x2a, 0x27, 0x50, 0xff, 0xff,
		0xd9, 0xfb, 0xda, 0xa6, 0xc4, 0xb5, 0xe5, 0xfb, 0xf7, 0xe7, 0x53, 0xa4, 0xa8, 0x5b, 0x35, 0x67,
		0xaa, 0x26, 0x22, 0x8a, 0x38, 0x63, 0xd5, 0x79, 0x11, 0x25, 0xce, 0xe4, 0x0e, 0x02, 0x15, 0xa2,
		0x77, 0xce, 0x3d, 0xfa, 0x4f, 0x45, 0xd8, 0xe0, 0xae, 0x13, 0x77, 0xa8, 0x24, 0xf8, 0xf0, 0xbb,
		0x67, 0xbe, 0xfb, 0xbf, 0x08, 0x10, 0x51, 0x7c, 0x18, 0x15, 0x92, 0xee, 0xb0, 0x78, 0x31, 0x3a,
		0x8c, 0x0e, 0x9d, 0x64, 0xed, 0xee, 0xd5, 0xbd, 0xbb, 0xd7, 0x86, 0x90, 0x12, 0x2d, 0xbf, 0xbd,
		0xdc, 0x35, 0x85, 0xdd, 0x1d, 0x64, 0x78, 0x94, 0x33, 0x3c, 0xd4, 0xb6, 0xdf, 0xe3, 0x36, 0xa0,
		0xa6, 0xc4, 0x60, 0x37, 0x0c, 0xba, 0x4a, 0x8f, 0xea, 0x2a, 0x9d, 0xa4, 0xf7, 0x07, 0x02, 0x4b,
		0x45, 0xf3, 0x4e, 0x13, 0x89, 0x22, 0xd9, 0x63, 0xa6, 0xa9, 0x24, 0x7b, 0x90, 0x51, 0x5a, 0x8a,
		0x99, 0x90, 0x51, 0x5a, 0x21, 0x54, 0x21, 0xa3, 0x94, 0x45, 0x5a, 0x0c, 0x19, 0xa5, 0xcc, 0x33,
		0x5f, 0xc8, 0x28, 0xad, 0x45, 0xd6, 0x02, 0x19, 0xa5, 0xd5, 0xc6, 0x07, 0xc8, 0x28, 0x81, 0xd8,
		0x70, 0x24, 0x38, 0x8c, 0x89, 0x0e, 0x57, 0xc2, 0xc3, 0x9e, 0xf8, 0xb0, 0x27, 0x40, 0xbc, 0x89,
		0x10, 0x0f, 0x42, 0xc4, 0x84, 0x18, 0xb1, 0x23, 0x48, 0xa9, 0xc1, 0x7e, 0xd0, 0xf5, 0x7c, 0xbe,
		0xbb, 0xd8, 0x13, 0xf3, 0x21, 0xa3, 0x04, 0x02, 0x55, 0x2c, 0x22, 0x55, 0x00, 0x42, 0xc5, 0x9d,
		0x58, 0x15, 0x86, 0x60, 0x15, 0x86, 0x68, 0x15, 0x83, 0x70, 0xf1, 0x22, 0x5e, 0xcc, 0x08, 0x58,
		0x0a, 0x11, 0xc8, 0x28, 0xe5, 0xce, 0x6f, 0x20, 0xa3, 0x94, 0xf5, 0x0b, 0x32, 0x4a, 0xf9, 0x5e,
		0x04, 0x64, 0x94, 0xa8, 0xfa, 0x54, 0xc8, 0x28, 0x11, 0x58, 0xe2, 0x90, 0x51, 0xc2, 0x5a, 0xc7,
		0x5a, 0x2f, 0x68, 0x82, 0xc0, 0xd7, 0xea, 0x33, 0x24, 0x62, 0x2b, 0x5c, 0x8e, 0x0c, 0x45, 0x3c,
		0x16, 0xae, 0x81, 0x9f, 0xa8, 0x47, 0x81, 0x32, 0x83, 0x39, 0xd1, 0x8f, 0x9d, 0xed, 0xcd, 0xdd,
		0x99, 0x42, 0xc1, 0x9d, 0x00, 0x81, 0x26, 0x95, 0xd6, 0x19, 0x0d, 0x87, 0x41, 0x18, 0x6b, 0x41,
		0x5f, 0xfb, 0x2a, 0x94, 0x08, 0x3d, 0x5f, 0xfe, 0x9f, 0xe8, 0x9d, 0xaa, 0xa3, 0x91, 0x1f, 0x4b,
		0x7d, 0xd6, 0x04, 0xad, 0x35, 0xbc, 0x73, 0xe1, 0x6b, 0x9d, 0x6b, 0x19, 0x77, 0x2f, 0x12, 0x49,
		0x83, 0xaf, 0x47, 0xed, 0x46, 0xe7, 0xe3, 0x9c, 0x84, 0x41, 0xa2, 0x60, 0x70, 0xaa, 0xee, 0x4b,
		0x18, 0x68, 0xcc, 0x64, 0x41, 0x16, 0xee, 0x21, 0xf3, 0x12, 0xec, 0x5d, 0x65, 0x81, 0xbf, 0x6c,
		0xc8, 0xc2, 0x35, 0x15, 0xa5, 0x2a, 0x9b, 0x5e, 0xd0, 0x03, 0x59, 0x91, 0x7c, 0x17, 0x2d, 0xd8,
		0x1f, 0xac, 0x2e, 0x12, 0xfb, 0xc3, 0x40, 0xff, 0x4a, 0xf8, 0xdd, 0x65, 0x10, 0x0b, 0xbe, 0x5d,
		0x10, 0x53, 0xfb, 0xd1, 0x06, 0x91, 0x85, 0xd9, 0x68, 0x83, 0xc8, 0x11, 0xe9, 0x68, 0x83, 0xa0,
		0xc0, 0xbd, 0xd1, 0x06, 0x41, 0x8e, 0x68, 0xa3, 0x0d, 0x02, 0xac, 0xe6, 0x11, 0x88, 0xa0, 0x0d,
		0x22, 0x77, 0x7e, 0x83, 0x36, 0x88, 0xac, 0x5f, 0x68, 0x83, 0xc8, 0xf7, 0x22, 0xd0, 0x06, 0x41,
		0xd5, 0xa7, 0xa2, 0x0d, 0x82, 0xc0, 0x12, 0x47, 0x1b, 0x04, 0xd6, 0x3a, 0xd6, 0x7a, 0x41, 0x13,
		0x04, 0xbe, 0x56, 0xa3, 0x0d, 0x62, 0x95, 0xcb, 0x11, 0x6d, 0x10, 0xc8, 0x0c, 0x96, 0x92, 0x0f,
		0xa3, 0x0d, 0xe2, 0xed, 0xf7, 0x10, 0x6d, 0x10, 0x74, 0xaf, 0x09, 0x6d, 0x10, 0x68, 0x83, 0x00,
		0xfb, 0x03, 0xfb, 0x2b, 0xd8, 0xfd, 0x85, 0xbc, 0xc6, 0x52, 0x7d, 0x2a, 0xce, 0x12, 0xa5, 0xac,
		0x9e, 0x2c, 0x7b, 0x38, 0x3e, 0x74, 0x7d, 0x2c, 0xc4, 0xf1, 0xa1, 0xcb, 0xb7, 0x19, 0x47, 0x92,
		0xad, 0x36, 0x7b, 0x7e, 0xf3, 0xc9, 0x4a, 0x56, 0x1d, 0xa7, 0x90, 0x65, 0x9b, 0xd9, 0xe2, 0x14,
		0xb2, 0x9c, 0x93, 0xd6, 0x77, 0xad, 0x15, 0xf4, 0x29, 0xaf, 0xe0, 0xe9, 0x14, 0xf8, 0xe0, 0x31,
		0xd9, 0x13, 0x2a, 0x96, 0x7d, 0x29, 0xc2, 0x07, 0xe7, 0x23, 0x8d, 0x7f, 0xe4, 0x54, 0x3d, 0x3c,
		0x1f, 0xa9, 0x8a, 0x13, 0xc7, 0x72, 0x71, 0xca, 0x38, 0x71, 0x8c, 0x96, 0x8f, 0x5e, 0xd2, 0x62,
		0x42, 0xf1, 0x67, 0x9d, 0x8b, 0x3f, 0x38, 0x6a, 0xac, 0xd0, 0x79, 0x30, 0x8e, 0x1a, 0x23, 0x5a,
		0x2c, 0xc3, 0xe9, 0x62, 0x0f, 0x4f, 0x17, 0xb3, 0x7a, 0x38, 0x51, 0xac, 0x70, 0x4e, 0x68, 0x72,
		0x40, 0x97, 0x1f, 0x44, 0x11, 0xb3, 0x33, 0xc5, 0x12, 0x93, 0x71, 0xaa, 0xd8, 0x32, 0xcc, 0xc4,
		0xa9, 0x62, 0x2b, 0x04, 0x2b, 0x4e, 0x15, 0xcb, 0x22, 0xf5, 0xc5, 0xa9, 0x62, 0x99, 0x67, 0xb7,
		0x38, 0x55, 0x6c, 0x2d, 0x12, 0x14, 0x9c, 0x2a, 0xb6, 0xda, 0xf8, 0x80, 0x53, 0xc5, 0x40, 0x6c,
		0x38, 0x12, 0x1c, 0xc6, 0x44, 0x87, 0x2b, 0xe1, 0x61, 0x4f, 0x7c, 0xd8, 0x13, 0x20, 0xde, 0x44,
		0x88, 0x07, 0x21, 0x62, 0x42, 0x8c, 0xd8, 0x11, 0xa4, 0xd4, 0x60, 0x4f, 0x3f, 0x97, 0x31, 0xdf,
		0x2d, 0xea, 0x89, 0xf9, 0x90, 0xd3, 0x02, 0x81, 0x2a, 0x16, 0x91, 0x2a, 0x00, 0xa1, 0xe2, 0x4e,
		0xac, 0x0a, 0x43, 0xb0, 0x0a, 0x43, 0xb4, 0x8a, 0x41, 0xb8, 0x78, 0x11, 0x2f, 0x66, 0x04, 0x2c,
		0x85, 0x08, 0x7f, 0x39, 0xad, 0xf3, 0x20, 0xf0, 0x85, 0xa7, 0x18, 0xeb, 0x69, 0x55, 0x2a, 0xe8,
		0x56, 0x5a, 0xf7, 0xc5, 0xc8, 0x68, 0x4b, 0xf9, 0xc9, 0x95, 0xc8, 0x65, 0x8b, 0x19, 0x89, 0x06,
		0x12, 0x0d, 0x24, 0x1a, 0x48, 0x34, 0x90, 0x68, 0x20, 0xd1, 0x40, 0xa2, 0x81, 0x44, 0xe3, 0x17,
		0x3d, 0x3e, 0x74, 0x7b, 0x73, 0x30, 0x1d, 0xba, 0xbd, 0x39, 0xdd, 0x78, 0xe8, 0xf6, 0x12, 0xba,
		0x0e, 0x68, 0x79, 0x22, 0x0c, 0xaf, 0x60, 0x89, 0x43, 0xb7, 0x17, 0x6b, 0x1d, 0x6b, 0xbd, 0xa0,
		0x09, 0x02, 0x5f, 0xab, 0xa1, 0xdc, 0xb6, 0xce, 0x96, 0x42, 0xb9, 0x6d, 0xb5, 0x76, 0xaf, 0xc9,
		0x30, 0xaa, 0x1f, 0x44, 0x11, 0xb4, 0xdb, 0xd6, 0xc7, 0x42, 0x68, 0xb7, 0x2d, 0xdf, 0x66, 0x7e,
		0xf2, 0xe8, 0x0c, 0x47, 0x00, 0xec, 0xc3, 0x83, 0xdd, 0xcf, 0x95, 0xcd, 0x99, 0x92, 0xb2, 0x13,
		0x7a, 0xfd, 0xbe, 0xec, 0x6a, 0xa6, 0x1a, 0x48, 0x25, 0x44, 0x98, 0x08, 0x23, 0x3b, 0xe6, 0x47,
		0xed, 0x48, 0xc4, 0xa1, 0xec, 0x9e, 0xaa, 0x3b, 0xa9, 0xe5, 0x39, 0xa1, 0xe4, 0x5a, 0xa2, 0x94,
		0xac, 0x25, 0xea, 0xc8, 0xdb, 0x9f, 0xb4, 0x4a, 0xb5, 0xf2, 0x49, 0xe3, 0x28, 0x70, 0x5e, 0x84,
		0xe9, 0x02, 0xae, 0x02, 0xe6, 0xc5, 0x1a, 0x30, 0xc8, 0x60, 0x59, 0x81, 0xf8, 0xaf, 0x99, 0x95,
		0x67, 0x9f, 0xa0, 0xb7, 0xba, 0xee, 0xe1, 0xfa, 0xcd, 0x1a, 0x92, 0x8d, 0x56, 0xa7, 0x03, 0xc5,
		0xd5, 0x6c, 0x43, 0x31, 0x14, 0x57, 0x73, 0x8e, 0xc2, 0xef, 0x5c, 0x2d, 0xe8, 0x34, 0x5d, 0xc1,
		0xf3, 0x29, 0xb0, 0xe6, 0xaa, 0x1f, 0x44, 0xd1, 0x23, 0x02, 0x91, 0x33, 0x42, 0x77, 0xaa, 0x66,
		0x02, 0x91, 0xdb, 0xb5, 0x0d, 0xe8, 0xad, 0xe6, 0xe2, 0x92, 0xa1, 0xb7, 0x4a, 0xcb, 0x43, 0x2f,
		0x61, 0x21, 0x61, 0xbb, 0x06, 0x59, 0x1b, 0xe5, 0xac, 0x0d, 0x75, 0xeb, 0xf7, 0xf8, 0x0a, 0x68,
		0xad, 0x52, 0xdd, 0xde, 0x82, 0xda, 0xea, 0x43, 0xb5, 0xd5, 0xc6, 0xf8, 0xae, 0x40, 0x6f, 0xb5,
		0x68, 0x8e, 0x68, 0x32, 0x59, 0x36, 0x5e, 0x81, 0x22, 0x69, 0x8d, 0x4a, 0x12, 0x47, 0x66, 0xd2,
		0xab, 0x0f, 0xad, 0x87, 0x0a, 0xeb, 0x32, 0xcc, 0x84, 0x0a, 0xeb, 0x0a, 0x71, 0x0b, 0x15, 0xd6,
		0x2c, 0x12, 0x62, 0xa8, 0xb0, 0x66, 0x9e, 0xf3, 0x42, 0x85, 0x75, 0x2d, 0x52, 0x17, 0xa8, 0xb0,
		0xae, 0x36, 0x3e, 0x40, 0x85, 0x15, 0xc4, 0x86, 0x23, 0xc1, 0x61, 0x4c, 0x74, 0xb8, 0x12, 0x1e,
		0xf6, 0xc4, 0x87, 0x3d, 0x01, 0xe2, 0x4d, 0x84, 0x78, 0x10, 0x22, 0x26, 0xc4, 0x88, 0x1d, 0x41,
		0x4a, 0x0d, 0x8e, 0x39, 0x8a, 0x08, 0xa4, 0x61, 0x86, 0x41, 0xdd, 0xe7, 0x29, 0xda, 0x04, 0x69,
		0x24, 0xd0, 0xa8, 0x02, 0xd3, 0x29, 0xee, 0xb4, 0xaa, 0x30, 0xf4, 0xaa, 0x30, 0x34, 0xab, 0x18,
		0x74, 0x8b, 0x17, 0xed, 0x62, 0x46, 0xbf, 0x52, 0x88, 0xf0, 0x97, 0x46, 0x12, 0x6a, 0x74, 0x29,
		0x42, 0x8f, 0x6b, 0x53, 0xd7, 0xac, 0x36, 0x54, 0x65, 0x68, 0xbb, 0xa9, 0x46, 0x97, 0x7c, 0xe3,
		0x95, 0x13, 0x74, 0xe2, 0x50, 0xaa, 0x01, 0x6b, 0x1d, 0x92, 0xd2, 0xe6, 0x78, 0x0d, 0x98, 0x3f,
		0x1c, 0xdb, 0x70, 0x1d, 0xdb, 0x38, 0x3c, 0xb4, 0x0e, 0x4a, 0x8c, 0x65, 0x61, 0x2a, 0xe3, 0xab,
		0x39, 0x6e, 0xb6, 0xed, 0x96, 0x63, 0x1e, 0x38, 0x66, 0x9d, 0xf3, 0xb5, 0x6c, 0x8d, 0xaf, 0xa5,
		0xf3, 0xcd, 0xb0, 0x79, 0x5f, 0xc6, 0x76, 0xd2, 0xa9, 0xd9, 0x34, 0xdd, 0x56, 0xd3, 0xe4, 0x7c,
		0x1d, 0xd5, 0xf1, 0x75, 0xb4, 0x1b, 0xc7, 0x1d, 0xee, 0x17, 0xb2, 0x93, 0xac, 0xf8, 0xe6, 0x37,
		0xa3, 0x79, 0x60, 0xd6, 0x4b, 0x3c, 0x75, 0x61, 0x3e, 0x71, 0x0d, 0x19, 0x96, 0x8a, 0x79, 0xc7,
		0x8b, 0x14, 0x38, 0x7b, 0x1a, 0x63, 0xb5, 0xaa, 0x07, 0x11, 0x8f, 0xb5, 0x50, 0x55, 0xea, 0x5c,
		0xf7, 0xb4, 0x6d, 0xc6, 0x57, 0x91, 0xba, 0xd6, 0x3d, 0xad, 0xca, 0xf8, 0x32, 0xa6, 0x01, 0x7b,
		0x4f, 0xdb, 0x62, 0x7c, 0x11, 0xf3, 0x0c, 0x6a, 0x4f, 0xab, 0x40, 0x3b, 0x0c, 0x16, 0xb3, 0xaf,
		0x54, 0x34, 0x64, 0x14, 0x1b, 0x71, 0x1c, 0xf2, 0xac, 0x56, 0x1c, 0x49, 0x65, 0xfa, 0xe2, 0x52,
		0x28, 0xae, 0xb2, 0x8a, 0xa5, 0x23, 0xef, 0x66, 0xee, 0x0a, 0x2a, 0x9f, 0xab, 0xd5, 0xda, 0x6e,
		0xb5, 0xba, 0xb9, 0xbb, 0xbd, 0xbb, 0xf9, 0x65, 0x67, 0xa7, 0x52, 0xab, 0x30, 0xa4, 0x13, 0xa5,
		0x56, 0xd8, 0x13, 0xa1, 0xe8, 0xed, 0xdf, 0x96, 0xf6, 0x34, 0x35, 0xf2, 0x7d, 0xce, 0x97, 0x70,
		0x1c, 0x89, 0x90, 0xa5, 0xce, 0x25, 0x37, 0x4f, 0xc4, 0x50, 0x4e, 0x6b, 0xe1, 0x1a, 0xf8, 0xc9,
		0x6b, 0x3d, 0x7c, 0x31, 0xce, 0xc1, 0xe6, 0xe4, 0xb7, 0x76, 0xb6, 0x37, 0x77, 0x67, 0x3a, 0x41,
		0x77, 0x32, 0x40, 0x9a, 0x54, 0x5a, 0x67, 0x34, 0x1c, 0x06, 0x61, 0xac, 0x05, 0x7d, 0xed, 0xab,
		0x50, 0x22, 0xf4, 0x7c, 0xf9, 0x7f, 0xa2, 0x77, 0xaa, 0x8e, 0x46, 0x7e, 0x2c, 0xf5, 0xd9, 0xf4,
		0x92, 0xa6, 0x35, 0xbc, 0x73, 0xe1, 0x6b, 0x9d, 0x6b, 0x19, 0x77, 0x2f, 0x12, 0x65, 0xa1, 0xaf,
		0x47, 0xed, 0x46, 0xe7, 0xe3, 0x9d, 0x92, 0xd0, 0xd6, 0xe6, 0xde, 0xa9, 0x9a, 0x4a, 0x09, 0x6d,
		0x6d, 0x7f, 0xaa, 0x54, 0x2b, 0x9f, 0xb6, 0xc6, 0xdf, 0xf2, 0x52, 0xe7, 0x5a, 0x24, 0xea, 0xbc,
		0xb7, 0x4b, 0xd3, 0xeb, 0x28, 0x80, 0x7a, 0xd7, 0xc2, 0x35, 0x15, 0x65, 0x07, 0x35, 0xbd, 0xa0,
		0x07, 0xea, 0x5e, 0x39, 0xaf, 0x5a, 0xa8, 0x58, 0xc3, 0xea, 0x67, 0x5f, 0x50, 0xb1, 0x5e, 0x67,
		0x4b, 0xa1, 0x62, 0xbd, 0x5a, 0xbb, 0xd7, 0x64, 0xcc, 0xff, 0xc1, 0xd4, 0x30, 0x04, 0xad, 0xd7,
		0xc7, 0x42, 0x08, 0x5a, 0x2f, 0xdf, 0x66, 0x88, 0x63, 0xae, 0x36, 0x99, 0x7e, 0xb3, 0xdc, 0xdf,
		0x74, 0xab, 0xc4, 0x6a, 0x35, 0x5d, 0xe7, 0xcf, 0xb6, 0x09, 0x9d, 0xcc, 0x6c, 0x93, 0x5e, 0xe8,
		0x64, 0xe6, 0x9c, 0xcf, 0x2e, 0x6f, 0xe1, 0x40, 0x32, 0x73, 0x05, 0x8f, 0xaa, 0xc0, 0x92, 0x99,
		0x77, 0x0c, 0x73, 0x22, 0xe8, 0x77, 0x5f, 0xf4, 0xef, 0x54, 0xcd, 0xa9, 0xfe, 0x4d, 0x7e, 0x60,
		0x6b, 0x13, 0xd2, 0x99, 0xf9, 0x78, 0x69, 0x48, 0x67, 0xd2, 0x72, 0xda, 0x4b, 0x5c, 0x50, 0xa8,
		0x15, 0xad, 0x73, 0xad, 0x08, 0x12, 0x9a, 0x85, 0xce, 0x94, 0x21, 0xa1, 0xc9, 0xa1, 0xb6, 0x06,
		0x35, 0xcd, 0x87, 0x6a, 0x9a, 0xed, 0xf4, 0x06, 0x25, 0x13, 0x6a, 0xd0, 0xd5, 0x2c, 0x9a, 0x77,
		0x2a, 0x5d, 0x7a, 0x37, 0x7a, 0xb2, 0x16, 0xce, 0x3d, 0xd5, 0xbb, 0x96, 0xbd, 0x64, 0xc5, 0x33,
		0x51, 0xd5, 0x7c, 0xc4, 0x76, 0x68, 0x6a, 0x2e, 0xc3, 0x4c, 0x68, 0x6a, 0xae, 0x10, 0xb5, 0xd0,
		0xd4, 0xcc, 0x22, 0x53, 0x86, 0xa6, 0x66, 0xe6, 0xc9, 0x30, 0x34, 0x35, 0xd7, 0x22, 0x97, 0x81,
		0xa6, 0xe6, 0x6a, 0xe3, 0x03, 0x34, 0x35, 0x41, 0x6c, 0x38, 0x12, 0x1c, 0xc6, 0x44, 0x87, 0x2b,
		0xe1, 0x61, 0x4f, 0x7c, 0xd8, 0x13, 0x20, 0xde, 0x44, 0x88, 0x07, 0x21, 0x62, 0x42, 0x8c, 0xd8,
		0x11, 0xa4, 0xd4, 0x60, 0x3e, 0xa5, 0x9f, 0x27, 0x63, 0x0d, 0x97, 0x0a, 0xd0, 0x53, 0x04, 0x0a,
		0xea, 0x9a, 0x20, 0x54, 0x05, 0x26, 0x56, 0xdc, 0x09, 0x56, 0x61, 0x88, 0x56, 0x61, 0x08, 0x57,
		0x31, 0x88, 0x17, 0x2f, 0x02, 0xc6, 0x8c, 0x88, 0xa5, 0x10, 0xe1, 0xaf, 0xae, 0x29, 0x85, 0x10,
		0x7d, 0x3f, 0xf0, 0xe2, 0xed, 0x2d, 0xc6, 0xea, 0x9a, 0x5f, 0x18, 0x9a, 0xde, 0x10, 0x6a, 0x90,
		0x10, 0x63, 0x8c, 0xe7, 0x67, 0x7c, 0xe7, 0x8f, 0xa4, 0xe2, 0x3f, 0x56, 0x7e, 0xe2, 0xf9, 0x23,
		0xc1, 0x5b, 0x8b, 0x2b, 0xb9, 0x8e, 0xc3, 0xd0, 0x4b, 0xda, 0x40, 0xea, 0x72, 0x20, 0xb9, 0x6a,
		0xe7, 0xdc, 0xf7, 0xac, 0x62, 0xe0, 0xc5, 0xf2, 0x4a, 0xb0, 0x94, 0x6a, 0x61, 0x1c, 0x8c, 0xef,
		0x2f, 0x71, 0xef, 0x06, 0x4b, 0x1c, 0x4b, 0x1c, 0x4b, 0xbc, 0x48, 0xd9, 0x01, 0x5f, 0xab, 0xcf,
		0x90, 0x85, 0xad, 0x70, 0x39, 0x42, 0xaf, 0x0b, 0x09, 0xc1, 0x52, 0x92, 0xe1, 0x89, 0xf2, 0xcf,
		0xce, 0x23, 0xca, 0x3f, 0xfd, 0x20, 0xd4, 0x9c, 0xd0, 0xeb, 0xf7, 0x65, 0x57, 0x33, 0xd5, 0x40,
		0x2a, 0x21, 0x42, 0xa9, 0x06, 0x1b, 0xa7, 0x6a, 0x36, 0x6e, 0xf3, 0x65, 0x4f, 0x83, 0x06, 0x17,
		0xd9, 0x32, 0x01, 0x34, 0xb8, 0xe8, 0x5f, 0xd0, 0xa2, 0x06, 0xd7, 0xb2, 0x57, 0x22, 0x78, 0x1a,
		0xac, 0x2e, 0x12, 0x4f, 0x43, 0x1b, 0xc8, 0x3a, 0xf2, 0x5e, 0xe8, 0x6a, 0x91, 0x9d, 0xfd, 0x5b,
		0x9c, 0x1b, 0x82, 0xaa, 0xd6, 0xfa, 0x58, 0x08, 0x55, 0xad, 0xe5, 0xdb, 0x0c, 0x55, 0xad, 0xd5,
		0xa6, 0xbc, 0x6f, 0x11, 0x07, 0x3a, 0x32, 0x7e, 0x4c, 0x04, 0x82, 0xf6, 0x8d, 0x66, 0xfd, 0x3f,
		0x56, 0xdd, 0xf9, 0x06, 0x4d, 0xad, 0x6c, 0x93, 0x58, 0x68, 0x6a, 0xe5, 0x9c, 0x9f, 0x2e, 0x6b,
		0xd9, 0x40, 0x51, 0x6b, 0x05, 0x0f, 0xaa, 0x98, 0x8a, 0x5a, 0x97, 0xde, 0x8d, 0xbc, 0x1c, 0x5d,
		0x4e, 0x84, 0x80, 0x52, 0x7e, 0xf9, 0xac, 0x04, 0x90, 0x8c, 0x26, 0x2a, 0x40, 0x5f, 0xa0, 0xaa,
		0x95, 0x8f, 0x9f, 0x86, 0xaa, 0x16, 0x2d, 0xb7, 0xbd, 0xe4, 0x45, 0x85, 0x6a, 0xd1, 0x3a, 0x57,
		0x8b, 0xa0, 0xac, 0x55, 0xe8, 0x6c, 0x19, 0xca, 0x5a, 0xf4, 0xab, 0x6b, 0xd0, 0xd5, 0x9a, 0xd7,
		0xd5, 0x3a, 0xf2, 0x6e, 0x1a, 0x52, 0xfd, 0xbd, 0x9f, 0xde, 0x1d, 0xa8, 0x6a, 0x15, 0xcd, 0x33,
		0x25, 0xca, 0x54, 0xa1, 0x88, 0x44, 0x78, 0xe5, 0x9d, 0xfb, 0x82, 0xb5, 0xc0, 0xd6, 0xd3, 0x97,
		0x01, 0xad, 0xad, 0x65, 0x98, 0x09, 0xad, 0xad, 0x15, 0x02, 0x18, 0x5a, 0x5b, 0x59, 0xe4, 0xcf,
		0xd0, 0xda, 0xca, 0x3c, 0x45, 0x86, 0xd6, 0xd6, 0x5a, 0x64, 0x37, 0xd0, 0xda, 0x5a, 0x6d, 0x7c,
		0x80, 0xd6, 0x16, 0x88, 0x0d, 0x47, 0x82, 0xc3, 0x98, 0xe8, 0x70, 0x25, 0x3c, 0xec, 0x89, 0x0f,
		0x7b, 0x02, 0xc4, 0x9b, 0x08, 0xf1, 0x20, 0x44, 0x4c, 0x88, 0x11, 0x3b, 0x82, 0x94, 0x1a, 0x0c,
		0xad, 0xad, 0xdc, 0x09, 0x14, 0xb4, 0xb6, 0x40, 0xa8, 0x0a, 0x4c, 0xac, 0xb8, 0x13, 0xac, 0xc2,
		0x10, 0xad, 0xc2, 0x10, 0xae, 0x62, 0x10, 0x2f, 0x5e, 0x04, 0x8c, 0x19, 0x11, 0x4b, 0x21, 0x02,
		0xad, 0x2d, 0x1a, 0x24, 0x07, 0x5a, 0x5b, 0x99, 0xbf, 0xa0, 0xb5, 0x95, 0xef, 0x45, 0x40, 0x88,
		0x87, 0xaa, 0x67, 0x85, 0xd6, 0x16, 0x81, 0x25, 0x0e, 0xad, 0x2d, 0x2c, 0x71, 0x2c, 0xf1, 0x62,
		0x65, 0x07, 0x7c, 0xad, 0x86, 0xd6, 0xd6, 0x2a, 0x97, 0x23, 0xb4, 0xb6, 0x90, 0x10, 0x2c, 0x25,
		0x19, 0x7e, 0x8b, 0xc2, 0x4f, 0x67, 0x3a, 0x82, 0x53, 0xd9, 0x84, 0xd8, 0x16, 0xe1, 0x3a, 0x01,
		0xc4, 0xb6, 0xe8, 0x5f, 0xd0, 0x7b, 0xc5, 0xb6, 0x7e, 0x61, 0x29, 0x82, 0xa9, 0xc1, 0xea, 0x22,
		0x31, 0x35, 0x34, 0x82, 0xac, 0x23, 0xf3, 0x85, 0xda, 0x16, 0xe9, 0x79, 0xc0, 0x27, 0x87, 0x88,
		0x20, 0xbc, 0xb5, 0x3e, 0x16, 0x42, 0x78, 0x6b, 0xf9, 0x36, 0x43, 0x78, 0x6b, 0xb5, 0xf9, 0xef,
		0x5b, 0x15, 0x84, 0x6c, 0xb3, 0x63, 0xda, 0x27, 0xc6, 0x7e, 0xc3, 0x84, 0xfc, 0x56, 0x5e, 0x69,
		0x2d, 0xe4, 0xb7, 0x72, 0xce, 0x58, 0x97, 0xbb, 0x78, 0x20, 0xc2, 0xb5, 0x82, 0xc7, 0x55, 0x6c,
		0x11, 0xae, 0x3b, 0xda, 0xf9, 0x40, 0x3a, 0xe8, 0x54, 0xdd, 0xd7, 0x0e, 0xd2, 0xe6, 0xa5, 0x83,
		0x12, 0xb4, 0xca, 0x48, 0xab, 0x6c, 0x42, 0x90, 0x2b, 0x1f, 0xcf, 0x0d, 0x41, 0x2e, 0x5a, 0x8e,
		0x7c, 0x85, 0x0b, 0x0c, 0xc5, 0xa5, 0x75, 0x2e, 0x2e, 0x41, 0x9c, 0xab, 0xd0, 0x19, 0x35, 0xc4,
		0xb9, 0x58, 0x15, 0xe3, 0xa0, 0xd3, 0xf5, 0x40, 0xa7, 0xcb, 0x4e, 0xef, 0x14, 0x14, 0xbb, 0x8a,
		0xed, 0xae, 0x4a, 0x97, 0x52, 0xe9, 0xa9, 0x72, 0x5d, 0x4f, 0xf8, 0xde, 0x2d, 0x23, 0x99, 0xae,
		0x45, 0xdb, 0xa1, 0xcd, 0xb5, 0x0c, 0x33, 0xa1, 0xcd, 0xb5, 0x42, 0xd4, 0x42, 0x9b, 0x2b, 0x8b,
		0x54, 0x1a, 0xda, 0x5c, 0x99, 0x67, 0xcb, 0xd0, 0xe6, 0x5a, 0x8b, 0xe4, 0x06, 0xda, 0x5c, 0xab,
		0x8d, 0x0f, 0xd0, 0xe6, 0x02, 0xb1, 0xe1, 0x48, 0x70, 0x18, 0x13, 0x1d, 0xae, 0x84, 0x87, 0x3d,
		0xf1, 0x61, 0x4f, 0x80, 0x78, 0x13, 0x21, 0x1e, 0x84, 0x88, 0x09, 0x31, 0x62, 0x47, 0x90, 0x52,
		0x83, 0x3d, 0xfd, 0x5c, 0xc6, 0x7c, 0xb7, 0xc1, 0x27, 0xe6, 0x43, 0x93, 0x0b, 0x04, 0xaa, 0x58,
		0x44, 0xaa, 0x00, 0x84, 0x8a, 0x3b, 0xb1, 0x2a, 0x0c, 0xc1, 0x2a, 0x0c, 0xd1, 0x2a, 0x06, 0xe1,
		0xe2, 0x45, 0xbc, 0x98, 0x11, 0xb0, 0x14, 0x22, 0xfc, 0x35, 0xb9, 0xce, 0x83, 0xc0, 0x17, 0x9e,
		0x62, 0xac, 0xc7, 0x55, 0xa9, 0xa0, 0xd3, 0x69, 0xdd, 0x17, 0x63, 0x72, 0x9e, 0x12, 0x8f, 0xbd,
		0xe5, 0x27, 0x57, 0xe2, 0xdd, 0x25, 0x20, 0xd1, 0x40, 0xa2, 0x81, 0x44, 0x03, 0x89, 0x06, 0x12,
		0x0d, 0x24, 0x1a, 0xe0, 0x35, 0x48, 0x34, 0x0a, 0x91, 0x68, 0x8c, 0xa4, 0xe2, 0xad, 0xfb, 0xbb,
		0xcb, 0xd0, 0x74, 0xdb, 0x53, 0x03, 0xa8, 0x7c, 0xe5, 0x70, 0xe3, 0x0b, 0x25, 0xfb, 0xbb, 0x09,
		0x4d, 0x50, 0x62, 0x3e, 0x15, 0xb2, 0xbf, 0x04, 0x96, 0x78, 0xa1, 0x64, 0x7f, 0xb7, 0xbe, 0x54,
		0xbf, 0xd4, 0x76, 0xb7, 0xbe, 0xec, 0x60, 0xad, 0x63, 0xad, 0x23, 0x41, 0x60, 0x6c, 0x35, 0x54,
		0xe5, 0xd6, 0x3e, 0x56, 0x25, 0x73, 0x4b, 0xdc, 0xcb, 0xe1, 0xe9, 0x25, 0xa0, 0x1c, 0x9e, 0x85,
		0xd9, 0x28, 0x87, 0xe7, 0x08, 0x76, 0x94, 0xc3, 0xf3, 0x5b, 0xae, 0x28, 0x87, 0x13, 0xbb, 0x10,
		0x94, 0xc3, 0xc1, 0x6d, 0x5e, 0x80, 0x08, 0xca, 0xe1, 0xb9, 0xf3, 0x1b, 0x94, 0xc3, 0xb3, 0x7e,
		0xa1, 0x1c, 0x9e, 0xef, 0x45, 0xa0, 0x1c, 0x4e, 0xd5, 0xa7, 0xa2, 0x1c, 0x4e, 0x60, 0x89, 0xa3,
		0x1c, 0x8e, 0xb5, 0x8e, 0xb5, 0x5e, 0xd0, 0x04, 0x81, 0xaf, 0xd5, 0x28, 0x87, 0xaf, 0xb3, 0xa5,
		0x38, 0x64, 0x65, 0xb5, 0x76, 0xaf, 0x81, 0xae, 0xe3, 0x82, 0x04, 0x1c, 0x4e, 0x56, 0x59, 0x1f,
		0x0b, 0x71, 0xb2, 0xca, 0xf2, 0x6d, 0xe6, 0x77, 0xfc, 0x28, 0x43, 0x69, 0x1c, 0xfb, 0xf0, 0x60,
		0xf7, 0x73, 0x65, 0x73, 0x76, 0xa6, 0xe1, 0x23, 0x87, 0x18, 0x6a, 0xbf, 0x3b, 0xe6, 0x47, 0xed,
		0x48, 0xc4, 0xa1, 0xec, 0x9e, 0xaa, 0xbb, 0x43, 0x0f, 0x37, 0x52, 0x35, 0xf1, 0xed, 0x6a, 0x7a,
		0xb6, 0xa1, 0xb6, 0xb5, 0xfd, 0x49, 0xab, 0x54, 0x2b, 0x9f, 0xb4, 0xad, 0xe4, 0x6f, 0xbc, 0x8e,
		0x1a, 0x2d, 0x82, 0xea, 0x0e, 0xd7, 0xa3, 0x44, 0x8b, 0x25, 0xbc, 0x93, 0xc1, 0xb2, 0x42, 0x06,
		0xb0, 0x66, 0x56, 0x9e, 0x7d, 0xc2, 0x69, 0x68, 0xeb, 0x1e, 0xae, 0xdf, 0x74, 0xa0, 0x93, 0xd5,
		0x4c, 0x0e, 0x75, 0x6a, 0x58, 0xcd, 0xef, 0x6e, 0xdd, 0x6c, 0x18, 0x7f, 0xe2, 0x1c, 0xb4, 0x6c,
		0x63, 0x32, 0xce, 0x41, 0xcb, 0x39, 0x1c, 0x2f, 0x6b, 0xd9, 0xa0, 0x09, 0x75, 0x05, 0x0f, 0xaa,
		0xa0, 0x27, 0xa0, 0x49, 0x55, 0xbe, 0xf4, 0x6e, 0x26, 0xa7, 0x32, 0x25, 0xf5, 0x20, 0x6d, 0xf1,
		0x40, 0xa6, 0x53, 0x35, 0x23, 0x7b, 0x32, 0x9a, 0x1c, 0xca, 0xb4, 0x5d, 0xc5, 0x91, 0x67, 0xf9,
		0x38, 0x69, 0x1c, 0x79, 0x46, 0xcb, 0x67, 0x2f, 0x73, 0x45, 0x61, 0x6f, 0x07, 0x99, 0x1d, 0xe5,
		0xcc, 0x0e, 0xb5, 0xed, 0xf7, 0x38, 0x0d, 0x9c, 0x71, 0x46, 0x7e, 0x2f, 0x0c, 0x07, 0x9b, 0xdd,
		0x3b, 0xd8, 0x4c, 0xaa, 0x23, 0xef, 0xa6, 0x21, 0xd5, 0xdf, 0xf5, 0xe4, 0xe6, 0xe0, 0x34, 0xb3,
		0xa2, 0x39, 0xa6, 0x52, 0x28, 0x22, 0xd9, 0x1b, 0x79, 0xfe, 0xdc, 0xd9, 0x7e, 0x6c, 0x4e, 0x33,
		0x7b, 0xc4, 0x76, 0x9c, 0x66, 0xb6, 0x0c, 0x33, 0x71, 0x9a, 0xd9, 0x0a, 0x51, 0x8b, 0xd3, 0xcc,
		0xb2, 0xc8, 0x92, 0x71, 0x9a, 0x59, 0xe6, 0x89, 0x30, 0x4e, 0x33, 0x5b, 0x8b, 0x34, 0x06, 0xa7,
		0x99, 0xad, 0x36, 0x3e, 0xe0, 0x34, 0x33, 0x10, 0x1b, 0x8e, 0x04, 0x87, 0x31, 0xd1, 0xe1, 0x4a,
		0x78, 0xd8, 0x13, 0x1f, 0xf6, 0x04, 0x88, 0x37, 0x11, 0xe2, 0x41, 0x88, 0x98, 0x10, 0x23, 0x76,
		0x04, 0x29, 0x35, 0x98, 0x4f, 0xe9, 0xe7, 0xc9, 0x58, 0xc3, 0xa5, 0x02, 0xf4, 0x14, 0x81, 0x82,
		0xba, 0x12, 0x08, 0x55, 0x81, 0x89, 0x15, 0x77, 0x82, 0x55, 0x18, 0xa2, 0x55, 0x18, 0xc2, 0x55,
		0x0c, 0xe2, 0xc5, 0x8b, 0x80, 0x31, 0x23, 0x62, 0x29, 0x44, 0xf8, 0xab, 0x2b, 0x49, 0x21, 0x44,
		0xdf, 0x0f, 0x3c, 0xde, 0x12, 0x4b, 0x5f, 0x18, 0x9a, 0xde, 0x10, 0x6a, 0x90, 0x10, 0x63, 0x68,
		0x2c, 0x65, 0x7c, 0xe7, 0x0b, 0xa5, 0xb1, 0x54, 0x85, 0xee, 0x0a, 0x31, 0xcf, 0x0a, 0x8d, 0x25,
		0x02, 0x4b, 0xbc, 0x50, 0x1a, 0x4b, 0x58, 0xe2, 0x58, 0xe2, 0xc8, 0x0e, 0x18, 0x5b, 0x0d, 0x69,
		0xa5, 0x75, 0xb6, 0x14, 0xd2, 0x4a, 0xab, 0xb5, 0xbb, 0xf8, 0xed, 0xe4, 0x8b, 0xfd, 0xa8, 0x90,
		0x56, 0x5a, 0x1f, 0x0b, 0x21, 0xad, 0xb4, 0x7c, 0x9b, 0x21, 0xad, 0xb4, 0x4a, 0x7e, 0xbc, 0x4c,
		0x69, 0xa5, 0x5d, 0x48, 0x2b, 0xe5, 0x6b, 0x37, 0xa4, 0x95, 0x28, 0x70, 0xb3, 0x65, 0x4b, 0x2b,
		0xed, 0x42, 0x5a, 0x09, 0x56, 0xce, 0x65, 0xa8, 0x90, 0x56, 0x5a, 0xfb, 0x70, 0xfd, 0x16, 0x8d,
		0x18, 0xdb, 0xec, 0x58, 0xf5, 0x63, 0xa3, 0xe1, 0xee, 0x1b, 0xcd, 0xfa, 0x7f, 0xac, 0xba, 0xf3,
		0x0d, 0xd2, 0x4a, 0xd9, 0xc6, 0x64, 0x48, 0x2b, 0xe5, 0x1c, 0x8e, 0x97, 0xb5, 0x6c, 0x20, 0xad,
		0xb4, 0x82, 0x07, 0x55, 0x4c, 0x69, 0xa5, 0x50, 0x44, 0x3d, 0x39, 0xf2, 0x7c, 0x2d, 0xad, 0x07,
		0xfd, 0x9a, 0x10, 0xcc, 0x2e, 0xa4, 0x95, 0xf2, 0x71, 0xd2, 0x90, 0x56, 0xa2, 0xe5, 0xb3, 0x97,
		0xb9, 0xa2, 0xb0, 0xb7, 0x83, 0xcc, 0x8e, 0x72, 0x66, 0x87, 0xda, 0xf6, 0x7b, 0x9c, 0x06, 0xa4,
		0x95, 0xc8, 0xef, 0x85, 0x41, 0x5a, 0x69, 0x5e, 0x5a, 0xc9, 0x9e, 0xde, 0x9f, 0xfd, 0xf4, 0xf6,
		0x40, 0x5c, 0xa9, 0x68, 0xae, 0x89, 0x89, 0x02, 0x01, 0x2b, 0xe5, 0x01, 0x48, 0x28, 0x2d, 0xd9,
		0x50, 0x48, 0x28, 0x21, 0x33, 0x7e, 0x3c, 0x1b, 0x86, 0x84, 0x52, 0xe6, 0x09, 0x2f, 0x24, 0x94,
		0xd6, 0x22, 0x5d, 0x61, 0x23, 0xa1, 0x14, 0x73, 0x9a, 0x9c, 0x4b, 0xc3, 0x43, 0x62, 0x35, 0x2f,
		0x01, 0xa5, 0x4d, 0x08, 0x28, 0xad, 0x3d, 0xbd, 0x61, 0x4c, 0x73, 0xb8, 0xd2, 0x1d, 0xf6, 0xb4,
		0x87, 0x3d, 0xfd, 0xe1, 0x4d, 0x83, 0x78, 0xd0, 0x21, 0x26, 0xb4, 0x28, 0x85, 0x02, 0xbb, 0x79,
		0xfd, 0xbb, 0x39, 0xfd, 0x9e, 0x50, 0xb1, 0x8c, 0x6f, 0x43, 0xd1, 0xe7, 0xe4, 0xb5, 0x67, 0x35,
		0x95, 0x1d, 0x46, 0x36, 0x5b, 0xd3, 0x5b, 0xbd, 0xef, 0x45, 0x82, 0x6f, 0xcf, 0x80, 0xd5, 0xb1,
		0x3a, 0x6e, 0xe7, 0x78, 0xdf, 0x69, 0x9c, 0xb8, 0xce, 0x9f, 0x6d, 0x93, 0x5b, 0xd8, 0x49, 0x86,
		0x5f, 0x23, 0x96, 0xf2, 0x08, 0x4c, 0x15, 0x88, 0x52, 0xe4, 0xb4, 0xef, 0xf7, 0x2a, 0x59, 0xed,
		0x93, 0xaa, 0x6b, 0xb7, 0x8e, 0x1d, 0xd3, 0x76, 0xad, 0x3a, 0x43, 0x09, 0x9c, 0x4f, 0x40, 0x50,
		0xee, 0x08, 0xaa, 0x01, 0x41, 0x40, 0xd0, 0xdb, 0x11, 0xd4, 0xb6, 0xcd, 0x43, 0xeb, 0x87, 0x7b,
		0xd8, 0x30, 0xbe, 0x76, 0x80, 0x1f, 0xe0, 0xe7, 0x8d, 0xf8, 0xe9, 0xc0, 0xfb, 0x00, 0x3d, 0xaf,
		0x47, 0xcf, 0x84, 0x46, 0x77, 0x38, 0xf2, 0xe8, 0x22, 0xf0, 0x69, 0xde, 0xa8, 0x2a, 0x3c, 0xbf,
		0x66, 0xec, 0xa7, 0x8a, 0x8f, 0xac, 0x1a, 0x90, 0x05, 0x64, 0x81, 0x8f, 0x03, 0x57, 0xe0, 0xe9,
		0x40, 0xd5, 0xba, 0xa2, 0xca, 0x31, 0xbe, 0x02, 0x4e, 0x80, 0xd3, 0x12, 0xe1, 0x54, 0xab, 0x96,
		0x20, 0xfa, 0x98, 0xe9, 0xeb, 0x0c, 0x75, 0x1b, 0x2c, 0xd8, 0x75, 0xf0, 0xfb, 0x80, 0x0d, 0xfc,
		0x3b, 0x80, 0xc3, 0x03, 0x38, 0x0f, 0x54, 0x3d, 0x8c, 0xfa, 0xbf, 0xdd, 0x86, 0xd1, 0xc4, 0x36,
		0x03, 0xe0, 0xf3, 0x56, 0xf8, 0x00, 0x3a, 0x80, 0xce, 0x9b, 0xa0, 0x73, 0x64, 0x35, 0xdd, 0xaf,
		0x76, 0xeb, 0xb8, 0x0d, 0xf8, 0x00, 0x3e, 0xaf, 0x86, 0xcf, 0x89, 0x61, 0x35, 0x8c, 0xfd, 0x86,
		0x79, 0xa7, 0x47, 0x05, 0x18, 0x01, 0x46, 0xaf, 0x85, 0x51, 0x0a, 0x1e, 0xf7, 0xa0, 0xd5, 0xec,
		0x38, 0xb6, 0x61, 0x35, 0x1d, 0xb4, 0xeb, 0x00, 0x48, 0xaf, 0x06, 0x92, 0xf9, 0xc3, 0x31, 0x9b,
		0x75, 0xb3, 0x8e, 0xb8, 0x06, 0x1c, 0xbd, 0x07, 0x47, 0x49, 0x6b, 0x85, 0xd5, 0x74, 0x4c, 0xfb,
		0xd0, 0x38, 0x30, 0x5d, 0xa3, 0x5e, 0xb7, 0xcd, 0x0e, 0x3c, 0x12, 0x90, 0xf4, 0x36, 0x24, 0x35,
		0x4d, 0xeb, 0xeb, 0xb7, 0xfd, 0x96, 0x0d, 0x20, 0x01, 0x48, 0xef, 0x00, 0x52, 0x0d, 0x2e, 0x09,
		0x48, 0x5a, 0x12, 0x92, 0xe0, 0x92, 0x00, 0xa4, 0xf7, 0x02, 0xa9, 0x61, 0x35, 0xbf, 0xbb, 0x86,
		0xe3, 0xd8, 0xd6, 0xfe, 0xb1, 0x63, 0x02, 0x42, 0x80, 0xd0, 0xdb, 0x20, 0x54, 0x37, 0x1b, 0xc6,
		0x9f, 0x40, 0x0f, 0xd0, 0xf3, 0x76, 0xf4, 0xb8, 0x27, 0x86, 0x6d, 0x19, 0x8e, 0xd5, 0x6a, 0x02,
		0x47, 0xc0, 0xd1, 0x9b, 0x70, 0x84, 0x0d, 0x34, 0x40, 0xe7, 0x8d, 0xd0, 0x69, 0xb4, 0x40, 0xa0,
		0x01, 0x9e, 0x37, 0x82, 0xa7, 0x6d, 0xb7, 0x1c, 0xf3, 0x60, 0x1c, 0xba, 0x26, 0x73, 0x82, 0xc0,
		0x11, 0x70, 0xf4, 0x4a, 0x1c, 0x1d, 0x19, 0x3f, 0x26, 0x58, 0xc2, 0x2e, 0x2c, 0x50, 0xf4, 0x2e,
		0x14, 0xd9, 0x66, 0xc7, 0xb4, 0x4f, 0xb0, 0xa3, 0x0f, 0x2c, 0xbd, 0x13, 0x4b, 0x56, 0xf3, 0xce,
		0x2b, 0x21, 0xbf, 0x07, 0x8a, 0xde, 0x84, 0xa2, 0xc5, 0xd3, 0xee, 0x80, 0x22, 0xa0, 0xe8, 0xb5,
		0x28, 0x82, 0x0a, 0x07, 0x50, 0xb5, 0x3a, 0x74, 0xb1, 0xee, 0xdd, 0x67, 0xec, 0xa4, 0xd6, 0x00,
		0x56, 0x80, 0x14, 0x20, 0xb5, 0x54, 0x48, 0x31, 0xee, 0x89, 0x04, 0xac, 0xc8, 0xc2, 0xaa, 0x08,
		0x33, 0x00, 0x80, 0x17, 0x55, 0x78, 0x15, 0x64, 0x36, 0x00, 0x00, 0xa3, 0x0a, 0xb0, 0x62, 0xcc,
		0x0c, 0x00, 0x5f, 0x54, 0xf1, 0x55, 0x94, 0x59, 0x02, 0x20, 0x8c, 0x34, 0xc2, 0xf8, 0x37, 0xf4,
		0x02, 0x60, 0x84, 0x01, 0x56, 0x83, 0x0b, 0x03, 0xc2, 0x56, 0x8c, 0x30, 0xb8, 0x30, 0x00, 0x6c,
		0x55, 0x00, 0x63, 0x3f, 0xab, 0x00, 0x68, 0x91, 0x86, 0x16, 0xd3, 0x1e, 0x07, 0xa0, 0x8a, 0x3e,
		0xaa, 0x38, 0xcf, 0x36, 0x00, 0x5f, 0xa4, 0xf1, 0x85, 0x0d, 0x46, 0x40, 0x6a, 0xc9, 0x90, 0xe2,
		0x39, 0x0b, 0x01, 0x50, 0x91, 0x06, 0x15, 0xfb, 0x19, 0x09, 0xe0, 0x8b, 0x2a, 0xbe, 0x8a, 0x30,
		0x3b, 0x01, 0x74, 0x51, 0x46, 0x57, 0x31, 0x66, 0x2a, 0x80, 0x31, 0xb2, 0x18, 0x2b, 0xc0, 0xac,
		0x05, 0xd0, 0x45, 0x15, 0x5d, 0x45, 0x98, 0xc1, 0x00, 0xba, 0xa8, 0xa2, 0xcb, 0x31, 0xdd, 0xba,
		0x79, 0x68, 0x1c, 0x37, 0x1c, 0xf7, 0xc8, 0x74, 0x6c, 0xeb, 0x00, 0xe0, 0x02, 0xb8, 0x96, 0x05,
		0xae, 0xe3, 0x66, 0xda, 0x32, 0x68, 0xd6, 0xdd, 0x46, 0x07, 0x6d, 0x5d, 0x00, 0xd7, 0x12, 0xc1,
		0x35, 0xe1, 0xf5, 0x66, 0x1d, 0x91, 0x11, 0xf8, 0x5a, 0x01, 0xbe, 0x1c, 0xab, 0x61, 0xfd, 0xb7,
		0x20, 0xe8, 0xc2, 0xc9, 0x71, 0x58, 0xc5, 0x45, 0x5a, 0xbd, 0x45, 0xe6, 0xb3, 0x00, 0x11, 0x78,
		0x2b, 0x40, 0x04, 0x7e, 0x0a, 0x1c, 0x01, 0x47, 0x05, 0xe1, 0xa1, 0x40, 0x51, 0xd6, 0x28, 0xb2,
		0x5b, 0xc7, 0x8e, 0x69, 0xbb, 0x07, 0x46, 0x3b, 0x55, 0x61, 0xb1, 0x5d, 0xa3, 0xf1, 0xb5, 0x65,
		0x5b, 0xce, 0xb7, 0x23, 0x20, 0x08, 0x08, 0x7a, 0x13, 0x82, 0xee, 0xfe, 0x06, 0x08, 0x01, 0x42,
		0x6f, 0x80, 0x10, 0xa4, 0xa0, 0x80, 0x2b, 0x04, 0xb9, 0xe2, 0x79, 0xaa, 0x75, 0x40, 0x16, 0xe7,
		0xe0, 0x97, 0x42, 0x0b, 0x95, 0x60, 0xdc, 0x67, 0xc6, 0xf7, 0x97, 0xc7, 0x7d, 0xa5, 0x6f, 0x25,
		0x6d, 0x0b, 0x89, 0x07, 0xc0, 0x92, 0xa1, 0x54, 0x10, 0x7b, 0xb1, 0x0c, 0x54, 0x69, 0x8f, 0x41,
		0xc8, 0x2b, 0x45, 0xdd, 0x0b, 0x71, 0xe9, 0x0d, 0xbd, 0xf8, 0x62, 0x1c, 0xdc, 0xca, 0xc1, 0x50,
		0xa8, 0x6e, 0xa0, 0xfa, 0x72, 0xa0, 0x2b, 0x11, 0x5f, 0x07, 0xe1, 0xdf, 0xba, 0x54, 0x51, 0xec,
		0xa9, 0xae, 0x28, 0x3f, 0x7c, 0x23, 0x5a, 0x78, 0xa7, 0x3c, 0x0c, 0x83, 0x38, 0xe8, 0x06, 0x7e,
		0x94, 0x7e, 0x57, 0x96, 0x91, 0x8c, 0xca, 0xbe, 0xb8, 0x12, 0xfe, 0xf4, 0x4b, 0xd9, 0x97, 0xea,
		0x6f, 0x3d, 0x8a, 0xbd, 0x58, 0xe8, 0x3d, 0x2f, 0xf6, 0xce, 0xbd, 0x48, 0x94, 0xfd, 0x68, 0x58,
		0x8e, 0xfd, 0xab, 0x68, 0xfc, 0x47, 0x59, 0xdc, 0xc4, 0x42, 0xf5, 0x44, 0x4f, 0x97, 0x91, 0x1e,
		0x0a, 0xaf, 0x7b, 0xe1, 0x9d, 0x4b, 0x5f, 0xc6, 0xb7, 0x65, 0x25, 0xe4, 0xe0, 0xe2, 0x3c, 0x08,
		0xa3, 0xf4, 0xbb, 0xf2, 0x9d, 0x31, 0xa9, 0x11, 0xd1, 0xe8, 0x3c, 0xf9, 0xaf, 0x26, 0x5f, 0xcb,
		0xc9, 0x27, 0xd1, 0x0e, 0xcb, 0x74, 0x97, 0x1c, 0xe1, 0xe5, 0x56, 0x1a, 0xe3, 0x47, 0xf4, 0xbd,
		0x91, 0x1f, 0xeb, 0x97, 0x22, 0x0e, 0x65, 0x97, 0xfc, 0x8a, 0x4b, 0x49, 0xe4, 0xa2, 0xe9, 0xc4,
		0xdd, 0xda, 0x77, 0xa9, 0x7a, 0xa5, 0x3d, 0xad, 0x42, 0xdc, 0xcc, 0x83, 0xc4, 0x75, 0x95, 0xf6,
		0xb4, 0x4d, 0xe2, 0x86, 0xb6, 0x43, 0xd1, 0x97, 0x37, 0x3c, 0x42, 0xc4, 0x0c, 0xb4, 0x41, 0x57,
		0x1f, 0x3b, 0x73, 0x06, 0xc5, 0x99, 0x52, 0x27, 0x18, 0x85, 0x5d, 0xc1, 0xe2, 0xf6, 0x4e, 0x96,
		0x97, 0xb8, 0xbd, 0x0e, 0xc2, 0xf1, 0x0a, 0x2b, 0x0d, 0x27, 0xc8, 0xe0, 0x91, 0xe7, 0x97, 0xbe,
		0x79, 0x91, 0x11, 0x0e, 0x46, 0x97, 0x42, 0xc5, 0xa5, 0x3d, 0x2d, 0x0e, 0x47, 0x82, 0x89, 0xe1,
		0x73, 0x56, 0xa7, 0xc0, 0x06, 0x35, 0x2f, 0x34, 0x35, 0xaf, 0xcb, 0x90, 0x09, 0x27, 0x4f, 0x18,
		0x2b, 0x1b, 0xe7, 0x35, 0x8b, 0x0f, 0x13, 0xb3, 0x99, 0xac, 0x7f, 0x1e, 0x84, 0x86, 0x1d, 0xb1,
		0xe1, 0x48, 0x70, 0x18, 0x13, 0x1d, 0xae, 0x84, 0x87, 0x3d, 0xf1, 0x61, 0x4f, 0x80, 0x78, 0x13,
		0x21, 0x1e, 0x84, 0x88, 0x09, 0x31, 0x62, 0x47, 0x90, 0x52, 0x83, 0x99, 0x94, 0x7d, 0x9e, 0x0c,
		0x34, 0x2c, 0x6a, 0x3f, 0x4f, 0x51, 0xa7, 0x4d, 0x66, 0x66, 0x73, 0xa3, 0x50, 0x9c, 0xa9, 0x54,
		0x01, 0x28, 0x15, 0x77, 0x6a, 0x55, 0x18, 0x8a, 0x55, 0x18, 0xaa, 0x55, 0x0c, 0xca, 0xc5, 0x8b,
		0x7a, 0x31, 0xa3, 0x60, 0x29, 0x44, 0x9c, 0xdb, 0xa1, 0xe0, 0xed, 0xf1, 0x47, 0x52, 0xc5, 0xdb,
		0x5b, 0x1c, 0x1d, 0xfe, 0x94, 0xdf, 0xec, 0x32, 0x34, 0xdd, 0xf6, 0xd4, 0x40, 0xb0, 0xed, 0x3f,
		0xe5, 0xdb, 0x21, 0x58, 0x3a, 0x92, 0x8a, 0x2d, 0x43, 0x48, 0x2f, 0x22, 0x69, 0x5f, 0xe6, 0x47,
		0x90, 0x17, 0xae, 0xe3, 0x30, 0xf4, 0xba, 0xb1, 0x0c, 0x54, 0x5d, 0x0e, 0x64, 0x1c, 0x15, 0xe0,
		0x82, 0x9a, 0x62, 0xe0, 0xc5, 0xf2, 0x6a, 0xfc, 0x6c, 0xfa, 0x9e, 0x1f, 0x09, 0xb4, 0x2f, 0xe7,
		0xb1, 0xc4, 0xbd, 0x9b, 0xe2, 0x2c, 0xf1, 0xea, 0xd6, 0x97, 0xea, 0x97, 0xda, 0xee, 0xd6, 0x97,
		0x1d, 0xac, 0x75, 0xac, 0x75, 0x24, 0x08, 0x8c, 0xad, 0x3e, 0x43, 0x22, 0xb6, 0xc2, 0xe5, 0x28,
		0x6e, 0xe2, 0xd0, 0xd3, 0x47, 0x2a, 0x8a, 0xbd, 0x73, 0x9f, 0x69, 0x4a, 0x16, 0x8a, 0xbe, 0x08,
		0x85, 0xea, 0x22, 0x33, 0xc8, 0x31, 0x1f, 0xb6, 0x0f, 0x0f, 0x76, 0xb6, 0x37, 0x77, 0xf6, 0x34,
		0xab, 0xa3, 0x5b, 0x1d, 0xcd, 0xbc, 0x89, 0x85, 0x8a, 0x64, 0xa0, 0x22, 0xad, 0x1f, 0x84, 0x9a,
		0x13, 0x7a, 0xfd, 0xbe, 0xec, 0x6a, 0xa6, 0x1a, 0x48, 0x25, 0x44, 0x28, 0xd5, 0x60, 0xe3, 0x54,
		0x45, 0xa3, 0x73, 0xdd, 0x69, 0x9c, 0x68, 0x95, 0xcf, 0x7b, 0xda, 0xf8, 0xeb, 0xd6, 0xd6, 0xa7,
		0xad, 0xed, 0x4f, 0x95, 0x6a, 0xe5, 0xd3, 0xd6, 0xf8, 0xdb, 0xad, 0xed, 0x8d, 0x12, 0x63, 0x42,
		0xc5, 0xbc, 0xb0, 0x7a, 0x57, 0x2f, 0xb8, 0x2b, 0xb0, 0xde, 0xad, 0x34, 0xe6, 0x2c, 0xa4, 0x28,
		0xb5, 0xd6, 0xf4, 0x82, 0xe6, 0x6b, 0xae, 0x2b, 0x5a, 0x8a, 0x60, 0x6a, 0xb0, 0xba, 0x48, 0x4c,
		0x0d, 0x5d, 0x20, 0xeb, 0xc8, 0x7c, 0xb9, 0x4d, 0xb0, 0xa5, 0x76, 0x17, 0x7f, 0x92, 0x6d, 0x61,
		0x6a, 0x88, 0xc3, 0x6c, 0x1b, 0x9f, 0x45, 0x8a, 0xee, 0xfa, 0x35, 0x4b, 0x94, 0x4b, 0xd7, 0x17,
		0x42, 0xb1, 0xc9, 0x89, 0x19, 0x36, 0x52, 0x6f, 0x6c, 0x4c, 0x3c, 0x54, 0x39, 0xbe, 0x1d, 0x0a,
		0xed, 0x0f, 0xed, 0xc3, 0xb4, 0xdb, 0x41, 0xf7, 0xa3, 0xde, 0xb9, 0x3e, 0x7e, 0x33, 0xda, 0x7b,
		0x51, 0xa6, 0xf5, 0x03, 0xfa, 0xb0, 0x33, 0xcd, 0x61, 0x93, 0x45, 0x81, 0x2e, 0xec, 0xfc, 0xd2,
		0xd3, 0x25, 0xad, 0x1a, 0x3e, 0xf4, 0x9d, 0xd1, 0xfa, 0xae, 0x8b, 0xa8, 0x1b, 0xca, 0x21, 0x3b,
		0x76, 0x7c, 0xcf, 0x2d, 0xb7, 0x94, 0x7f, 0xab, 0x49, 0xd5, 0xf5, 0x47, 0x3d, 0xa1, 0xc5, 0x17,
		0x42, 0x9b, 0xb2, 0x4a, 0x2d, 0x9e, 0x96, 0x3e, 0xc4, 0x5d, 0xe9, 0x43, 0x9b, 0x30, 0xcd, 0xd3,
		0x31, 0x97, 0x8e, 0x3d, 0xa9, 0x44, 0xa8, 0x8d, 0x1d, 0x44, 0xf2, 0x6b, 0xb3, 0x9a, 0x48, 0x82,
		0x53, 0x19, 0x69, 0x95, 0xcf, 0xdc, 0xea, 0x91, 0x9c, 0x6b, 0x90, 0xf3, 0x3e, 0xbb, 0x37, 0x07,
		0x4b, 0x86, 0x6d, 0x4b, 0x45, 0xa8, 0x36, 0xde, 0x73, 0xe1, 0xab, 0x5c, 0x61, 0x28, 0x22, 0xad,
		0x73, 0x11, 0x89, 0xbc, 0x95, 0x67, 0xc8, 0xa2, 0xd7, 0xa7, 0xf8, 0xb6, 0x8e, 0x45, 0x37, 0x0e,
		0xfa, 0x27, 0x51, 0x1c, 0x8e, 0xba, 0xb1, 0x9a, 0xf2, 0xbd, 0xe6, 0xe4, 0x3e, 0x5b, 0xd3, 0x2b,
		0x74, 0xdb, 0xd3, 0x9b, 0xeb, 0x5a, 0x91, 0x8c, 0xdc, 0xc6, 0xf8, 0xae, 0xba, 0x8d, 0x68, 0xe8,
		0x3a, 0xfe, 0x95, 0x6b, 0x4e, 0x6f, 0x9e, 0x15, 0xd9, 0x73, 0xb7, 0xce, 0x6d, 0x4e, 0x6f, 0x98,
		0x9b, 0xfe, 0x27, 0x9d, 0xe4, 0xf6, 0xb8, 0x8e, 0xa8, 0x4f, 0xee, 0xce, 0xd1, 0xe4, 0xe6, 0x40,
		0x67, 0xab, 0x68, 0x7e, 0xa9, 0x14, 0x73, 0x98, 0x45, 0xb8, 0x93, 0xd6, 0x1a, 0x5b, 0xcb, 0x43,
		0x4d, 0x6b, 0x13, 0x6a, 0x5a, 0xcb, 0x31, 0x14, 0x6a, 0x5a, 0x48, 0x92, 0x1f, 0x4f, 0x8c, 0xa1,
		0xa6, 0x95, 0x79, 0xee, 0x0b, 0x35, 0xad, 0xb5, 0xc8, 0x54, 0xd8, 0x4c, 0x28, 0xa6, 0x1e, 0xd7,
		0x17, 0x5e, 0x3f, 0x14, 0x7d, 0x0e, 0x1e, 0x77, 0xa6, 0x4e, 0xc5, 0x60, 0x06, 0xb1, 0xd4, 0x9e,
		0x26, 0x7f, 0xf7, 0xb6, 0x2d, 0x90, 0x07, 0x14, 0x2f, 0x0f, 0x18, 0x8d, 0x53, 0xfb, 0x28, 0x0e,
		0x3d, 0xa9, 0x44, 0x4f, 0xf7, 0xa3, 0x21, 0x9f, 0xa4, 0x60, 0xd1, 0x74, 0xe8, 0xed, 0x22, 0x43,
		0x40, 0x86, 0x80, 0x0c, 0x01, 0x19, 0x02, 0x32, 0x04, 0x64, 0x08, 0x2b, 0x79, 0xe4, 0xd0, 0xdb,
		0x5d, 0x6d, 0x7c, 0x80, 0xde, 0x2e, 0x88, 0x0d, 0x47, 0x82, 0xc3, 0x98, 0xe8, 0x70, 0x25, 0x3c,
		0xec, 0x89, 0x0f, 0x7b, 0x02, 0xc4, 0x9b, 0x08, 0xf1, 0x20, 0x44, 0x4c, 0x88, 0x11, 0x3b, 0x82,
		0x94, 0x1a, 0xdc, 0x0d, 0x46, 0x09, 0x70, 0x99, 0xf6, 0xbd, 0x4e, 0xcc, 0x87, 0xda, 0x2e, 0x08,
		0x54, 0xb1, 0x88, 0x54, 0x01, 0x08, 0x15, 0x77, 0x62, 0x55, 0x18, 0x82, 0x55, 0x18, 0xa2, 0x55,
		0x0c, 0xc2, 0xc5, 0x8b, 0x78, 0x31, 0x23, 0x60, 0x29, 0x44, 0x8a, 0xa1, 0xb6, 0x5b, 0xa9, 0x31,
		0x56, 0xdb, 0xad, 0x41, 0x6d, 0x37, 0xe3, 0x17, 0xd4, 0x76, 0xf3, 0xbd, 0x08, 0xa8, 0xed, 0x52,
		0xf5, 0xa9, 0x50, 0xdb, 0x25, 0xb0, 0xc4, 0x8b, 0xa4, 0xb6, 0x5b, 0xdb, 0xd9, 0xd9, 0x86, 0xd0,
		0x2e, 0x96, 0x39, 0x72, 0x03, 0xce, 0x56, 0x43, 0x68, 0x77, 0x95, 0xcb, 0x11, 0x42, 0xbb, 0x48,
		0x0a, 0x96, 0x92, 0x0a, 0x27, 0xea, 0x9e, 0xdb, 0x9b, 0x7b, 0x9a, 0xa1, 0x35, 0xa4, 0xfa, 0x5b,
		0x1f, 0x27, 0xf7, 0x77, 0x83, 0xf4, 0x81, 0x76, 0x10, 0xa8, 0x2b, 0x71, 0x9b, 0x8c, 0xd7, 0x37,
		0x47, 0x97, 0xe7, 0x22, 0xd4, 0x82, 0xfe, 0xa9, 0x7a, 0x44, 0xf5, 0x53, 0x6b, 0x78, 0xe7, 0xc2,
		0xd7, 0x3a, 0xd7, 0x32, 0xee, 0x5e, 0x88, 0x9e, 0xd6, 0xf6, 0xe2, 0x8b, 0x48, 0xeb, 0xc8, 0x81,
		0xf2, 0x7c, 0x5f, 0xf4, 0x4e, 0xd5, 0xb5, 0x8c, 0x2f, 0xb4, 0xff, 0x8a, 0x30, 0xd0, 0x6c, 0x11,
		0x89, 0xf0, 0x4a, 0xf4, 0xb4, 0x7d, 0x4f, 0xf5, 0xae, 0x65, 0x2f, 0xbe, 0xd0, 0xbc, 0x6e, 0x18,
		0x44, 0x91, 0xe6, 0x25, 0x46, 0x6c, 0xcc, 0x0c, 0x38, 0x55, 0x5b, 0xdb, 0x4f, 0x08, 0x88, 0x42,
		0xca, 0x97, 0x40, 0x31, 0x02, 0x52, 0xbe, 0xf4, 0x2f, 0x68, 0x41, 0xca, 0x97, 0xe3, 0x62, 0x07,
		0xdb, 0x84, 0xd5, 0x45, 0x62, 0x9b, 0x50, 0x1b, 0x5b, 0x81, 0xa7, 0x8b, 0x39, 0xee, 0x4b, 0x70,
		0x9a, 0xc4, 0x5f, 0x24, 0x00, 0xe8, 0xb6, 0xc8, 0xd4, 0x70, 0x74, 0x5b, 0x80, 0xb7, 0x2f, 0x87,
		0xaf, 0xa3, 0xdb, 0x82, 0x1c, 0x39, 0x47, 0xb7, 0x05, 0x18, 0xcd, 0x23, 0x10, 0xe1, 0xdf, 0x6d,
		0x21, 0x7b, 0x42, 0xc5, 0x32, 0xbe, 0xe5, 0xa1, 0x26, 0xf0, 0x14, 0xc9, 0xa9, 0x30, 0xdc, 0x92,
		0x2a, 0x59, 0xd3, 0x5b, 0xbf, 0xef, 0x45, 0x8c, 0xe3, 0xd6, 0x0c, 0x48, 0x56, 0xc7, 0xea, 0xb8,
		0x9d, 0xe3, 0x7d, 0xa7, 0x71, 0xe2, 0x3a, 0x7f, 0xb6, 0x4d, 0xae, 0xe1, 0x2b, 0xd9, 0xe8, 0x8c,
		0xd8, 0x56, 0xbd, 0x35, 0xd6, 0x95, 0xef, 0xfb, 0x88, 0x6a, 0xdf, 0x17, 0x06, 0xb7, 0xda, 0x27,
		0x55, 0xd7, 0x6e, 0x1d, 0x3b, 0xa6, 0xed, 0x5a, 0xf5, 0x12, 0x7a, 0x19, 0x80, 0xac, 0xe5, 0x21,
		0xab, 0x06, 0x64, 0x01, 0x59, 0xcb, 0x47, 0x56, 0xdb, 0x36, 0x0f, 0xad, 0x1f, 0xee, 0x61, 0xc3,
		0xf8, 0xda, 0x01, 0xae, 0x80, 0xab, 0x25, 0xe3, 0xaa, 0x03, 0x6f, 0x05, 0x54, 0x2d, 0x0f, 0x55,
		0x13, 0xfa, 0xde, 0xe1, 0xcc, 0xdf, 0x8b, 0xc4, 0xe3, 0x8b, 0x81, 0xb6, 0xb5, 0xe1, 0xf5, 0x05,
		0xf0, 0x6b, 0xeb, 0x83, 0xb8, 0x1a, 0x10, 0x07, 0xc4, 0x21, 0x0f, 0x00, 0xde, 0x34, 0xe4, 0x07,
		0x40, 0x1b, 0xd0, 0xf6, 0x2e, 0xb4, 0x39, 0xc6, 0x57, 0xc0, 0x0c, 0x30, 0xcb, 0x00, 0x66, 0xb5,
		0x6a, 0x01, 0x80, 0xc6, 0xfa, 0x0a, 0xce, 0x50, 0x6f, 0xc2, 0xc2, 0x46, 0xdc, 0x00, 0x9c, 0x10,
		0x1f, 0x00, 0xa8, 0xa2, 0x01, 0xea, 0xc1, 0x51, 0xe4, 0x46, 0xfd, 0xdf, 0x6e, 0xc3, 0x68, 0x62,
		0x9b, 0x05, 0xb0, 0x5a, 0x36, 0xac, 0x00, 0x29, 0x40, 0x6a, 0xa9, 0x90, 0x3a, 0xb2, 0x9a, 0xee,
		0x57, 0xbb, 0x75, 0xdc, 0x06, 0xac, 0x00, 0xab, 0xa5, 0xc1, 0xea, 0xc4, 0xb0, 0x1a, 0xc6, 0x7e,
		0xc3, 0x74, 0xf7, 0x8d, 0x66, 0xfd, 0x3f, 0x56, 0xdd, 0xf9, 0x06, 0x78, 0x01, 0x5e, 0xcb, 0x82,
		0x57, 0x0a, 0x2a, 0xf7, 0xa0, 0xd5, 0xec, 0x38, 0xb6, 0x61, 0x35, 0x1d, 0xb4, 0x49, 0x01, 0x60,
		0x4b, 0x03, 0x98, 0xf9, 0xc3, 0x31, 0x9b, 0x75, 0xb3, 0x8e, 0xf8, 0x08, 0x7c, 0xad, 0x02, 0x5f,
		0x49, 0xeb, 0x8a, 0xd5, 0x74, 0x4c, 0xfb, 0xd0, 0x38, 0x30, 0x5d, 0xa3, 0x5e, 0xb7, 0xcd, 0x0e,
		0x3c, 0x18, 0x10, 0xb6, 0x5c, 0x84, 0x35, 0x4d, 0xeb, 0xeb, 0xb7, 0xfd, 0x96, 0x0d, 0x80, 0x01,
		0x60, 0x2b, 0x00, 0x58, 0x0d, 0x2e, 0x0c, 0x08, 0x5b, 0x31, 0xc2, 0xe0, 0xc2, 0x00, 0xb0, 0x55,
		0x01, 0xac, 0x61, 0x35, 0xbf, 0xbb, 0x86, 0xe3, 0xd8, 0xd6, 0xfe, 0xb1, 0x63, 0x02, 0x5a, 0x80,
		0xd6, 0x72, 0xa1, 0x55, 0x37, 0x1b, 0xc6, 0x9f, 0x40, 0x15, 0x50, 0xb5, 0x7c, 0x54, 0xb9, 0x27,
		0x86, 0x6d, 0x19, 0x8e, 0xd5, 0x6a, 0x02, 0x5f, 0xc0, 0xd7, 0x52, 0xf1, 0x85, 0x0d, 0x46, 0x40,
		0x6a, 0xc9, 0x90, 0x6a, 0xb4, 0x40, 0xdc, 0x01, 0xaa, 0x25, 0x83, 0xaa, 0x6d, 0xb7, 0x1c, 0xf3,
		0x60, 0x1c, 0x02, 0x27, 0x73, 0xa7, 0xc0, 0x17, 0xf0, 0xb5, 0x24, 0x7c, 0x1d, 0x19, 0x3f, 0x26,
		0x18, 0xc3, 0xee, 0x35, 0xd0, 0xb5, 0x12, 0x74, 0xd9, 0x66, 0xc7, 0xb4, 0x4f, 0xd0, 0x21, 0x01,
		0x8c, 0xad, 0x08, 0x63, 0x56, 0xf3, 0xce, 0x8b, 0xa1, 0x0e, 0x01, 0x74, 0x2d, 0x15, 0x5d, 0xb6,
		0xd9, 0xb1, 0xea, 0xc7, 0x46, 0x03, 0xbe, 0x0b, 0xe8, 0x5a, 0x3e, 0xba, 0xa0, 0x26, 0x03, 0xb4,
		0x65, 0x8f, 0xba, 0x42, 0xcc, 0x6c, 0x14, 0xc0, 0xa9, 0xad, 0x11, 0xdc, 0x00, 0x35, 0x40, 0x2d,
		0x13, 0xa8, 0x15, 0xa0, 0x87, 0x15, 0x70, 0x63, 0x03, 0xb7, 0x22, 0xcd, 0x7e, 0x00, 0x76, 0x5c,
		0x60, 0x57, 0xb0, 0x99, 0x10, 0x00, 0x8f, 0x0b, 0xf0, 0x8a, 0x35, 0x2b, 0x02, 0xdc, 0x71, 0xc1,
		0x5d, 0xd1, 0x66, 0x48, 0x80, 0x3c, 0x56, 0xc8, 0x2b, 0x4e, 0x63, 0x36, 0x80, 0xc7, 0x08, 0x78,
		0x35, 0xb8, 0x3c, 0x20, 0x2f, 0x27, 0xe4, 0xc1, 0xe5, 0x01, 0x78, 0x59, 0x03, 0xaf, 0x30, 0x33,
		0x2a, 0x80, 0x1c, 0x2b, 0xc8, 0x31, 0xef, 0x19, 0x01, 0xda, 0xf8, 0xa1, 0xad, 0x08, 0x33, 0x2d,
		0xc0, 0x1d, 0x2b, 0xdc, 0x61, 0x03, 0x16, 0x50, 0xcb, 0x08, 0x6a, 0xbc, 0x67, 0x60, 0x00, 0x36,
		0x56, 0x60, 0x2b, 0xcc, 0x6c, 0x0c, 0x70, 0xc7, 0x05, 0x77, 0x45, 0x9a, 0x99, 0x01, 0xea, 0x38,
		0xa1, 0xae, 0x58, 0xb3, 0x34, 0xc0, 0x1e, 0x1b, 0xec, 0x15, 0x68, 0xc6, 0x06, 0xa8, 0xe3, 0x82,
		0xba, 0x22, 0xcd, 0xde, 0x00, 0x75, 0x5c, 0x50, 0xe7, 0x98, 0x6e, 0xdd, 0x3c, 0x34, 0x8e, 0x1b,
		0x8e, 0x7b, 0x64, 0x3a, 0xb6, 0x75, 0x00, 0xd0, 0x01, 0x74, 0xab, 0x06, 0xdd, 0x71, 0x33, 0x6d,
		0xe5, 0x34, 0xeb, 0x6e, 0xa3, 0x83, 0xb6, 0x3a, 0x80, 0x2e, 0x03, 0xd0, 0x4d, 0xf2, 0x09, 0xb3,
		0x8e, 0x08, 0x0b, 0xdc, 0x65, 0x88, 0x3b, 0xc7, 0x6a, 0x58, 0xff, 0x2d, 0x18, 0xea, 0x70, 0x62,
		0x25, 0x56, 0xfb, 0x3a, 0xad, 0xf2, 0x75, 0xe0, 0xcf, 0x00, 0x17, 0x78, 0x32, 0xc0, 0xb5, 0x46,
		0xe0, 0x2a, 0x12, 0x1f, 0x06, 0xbe, 0xc0, 0x7b, 0x81, 0xae, 0xe2, 0xa2, 0xcb, 0x6e, 0x1d, 0x3b,
		0xa6, 0xed, 0x1e, 0x18, 0xed, 0x54, 0x4d, 0xc8, 0x76, 0x8d, 0xc6, 0xd7, 0x96, 0x6d, 0x39, 0xdf,
		0x8e, 0x80, 0x2c, 0x20, 0x6b, 0xa9, 0xc8, 0xba, 0xfb, 0x1b, 0xa0, 0x05, 0x68, 0x2d, 0x11, 0x5a,
		0x90, 0x40, 0x03, 0xde, 0x10, 0x2c, 0xd7, 0xd7, 0xb3, 0xad, 0x13, 0xe2, 0x8a, 0x10, 0x44, 0x53,
		0xc8, 0xa1, 0xe2, 0x8d, 0xfb, 0x5e, 0xe0, 0xfb, 0xcd, 0xeb, 0x3e, 0xf3, 0xb1, 0x96, 0x87, 0xa5,
		0x4c, 0x02, 0x6a, 0xc9, 0x50, 0x2a, 0x88, 0xbd, 0x58, 0x06, 0xaa, 0xb4, 0xc7, 0x28, 0x84, 0x96,
		0xa2, 0xee, 0x85, 0xb8, 0xf4, 0x86, 0x5e, 0x7c, 0x31, 0x0e, 0x96, 0xe5, 0x60, 0x28, 0x54, 0x37,
		0x50, 0x7d, 0x39, 0xd0, 0x95, 0x88, 0xaf, 0x83, 0xf0, 0x6f, 0x5d, 0xaa, 0x28, 0xf6, 0x54, 0x57,
		0x94, 0x1f, 0xbe, 0x11, 0x2d, 0xbc, 0x53, 0x1e, 0x86, 0x41, 0x1c, 0x74, 0x03, 0x3f, 0x4a, 0xbf,
		0x2b, 0xcb, 0x48, 0x46, 0x65, 0x5f, 0x5c, 0x09, 0x7f, 0xfa, 0xa5, 0xec, 0x4b, 0xf5, 0xb7, 0x1e,
		0xc5, 0x5e, 0x2c, 0xf4, 0x9e, 0x17, 0x7b, 0xe7, 0x5e, 0x24, 0xca, 0x7e, 0x34, 0x2c, 0xc7, 0xfe,
		0x55, 0x34, 0xfe, 0xa3, 0x2c, 0x6e, 0x62, 0xa1, 0x7a, 0xa2, 0xa7, 0xcb, 0x48, 0x0f, 0x85, 0xd7,
		0xbd, 0xf0, 0xce, 0xa5, 0x2f, 0xe3, 0xdb, 0xb2, 0x12, 0x72, 0x70, 0x71, 0x1e, 0x84, 0x51, 0xfa,
		0x5d, 0xf9, 0xce, 0x98, 0xd4, 0x88, 0x68, 0x74, 0x9e, 0xfc, 0x57, 0x93, 0xaf, 0xe5, 0xd1, 0xf8,
		0x82, 0xa2, 0x38, 0xf4, 0xa4, 0x12, 0x3d, 0x7d, 0xfc, 0x41, 0xc9, 0x67, 0xf3, 0x08, 0xfc, 0xf4,
		0x17, 0x29, 0x6d, 0x0b, 0x89, 0xbb, 0x8f, 0x92, 0xb8, 0x89, 0x43, 0x4f, 0x1f, 0x8d, 0xa1, 0x7b,
		0xee, 0x0b, 0x16, 0xae, 0xa3, 0x74, 0x7d, 0x21, 0x14, 0x9b, 0xdc, 0x9a, 0x91, 0x2b, 0x9e, 0x65,
		0x2c, 0x1b, 0x1b, 0x13, 0x0f, 0x55, 0x8e, 0x6f, 0x87, 0x42, 0xfb, 0x43, 0xfb, 0x10, 0x74, 0xf5,
		0xb1, 0x17, 0xd5, 0xfd, 0xa8, 0x77, 0xae, 0x8f, 0xdf, 0x8c, 0xf6, 0x5e, 0xdc, 0x8f, 0xfd, 0xc0,
		0xa8, 0x86, 0x53, 0xea, 0x04, 0xa3, 0xb0, 0x2b, 0x58, 0x05, 0xce, 0xc4, 0xee, 0xef, 0xe2, 0xf6,
		0x3a, 0x08, 0x7b, 0xe3, 0x87, 0x96, 0x2c, 0x0a, 0x5e, 0xc9, 0x7f, 0xe9, 0x9b, 0x17, 0x19, 0xe1,
		0x60, 0x74, 0x29, 0x54, 0x5c, 0xda, 0xd3, 0xe2, 0x70, 0x24, 0x98, 0x5d, 0xc0, 0x9c, 0xf5, 0xcb,
		0x5a, 0x35, 0xbf, 0xa1, 0xd2, 0xb4, 0xfc, 0xe7, 0x54, 0x17, 0x51, 0x37, 0x94, 0x43, 0x76, 0xec,
		0xf8, 0x9e, 0x5b, 0x6e, 0x29, 0xff, 0x56, 0x93, 0xaa, 0xeb, 0x8f, 0x7a, 0x42, 0x8b, 0x2f, 0x84,
		0x76, 0x8f, 0x58, 0x6a, 0x8d, 0x4e, 0x5b, 0xeb, 0x06, 0x2a, 0x1e, 0xff, 0x2d, 0xd4, 0xc6, 0xee,
		0x60, 0xfc, 0x43, 0xa7, 0x2a, 0x1a, 0x9d, 0xeb, 0x4e, 0xe3, 0x44, 0x93, 0x91, 0x96, 0x20, 0x73,
		0x6b, 0x7b, 0x83, 0x9b, 0x9f, 0x60, 0xea, 0x9e, 0x1f, 0xba, 0xe8, 0xde, 0x1c, 0x0a, 0xf9, 0x95,
		0x69, 0xd9, 0x7b, 0xeb, 0x05, 0x8f, 0xbd, 0xc4, 0x05, 0x85, 0x12, 0xd1, 0x3a, 0x97, 0x88, 0xc8,
		0x5b, 0x79, 0x86, 0x1c, 0x79, 0x7d, 0x4a, 0x6b, 0xeb, 0x58, 0x52, 0x63, 0x10, 0x4f, 0x4b, 0x51,
		0x1c, 0x8e, 0xba, 0xb1, 0x9a, 0xb2, 0xb9, 0xe6, 0xe4, 0x3e, 0x5b, 0xd3, 0x2b, 0x74, 0xdb, 0xd3,
		0x9b, 0xeb, 0x5a, 0x91, 0x8c, 0xdc, 0xc6, 0xf8, 0xae, 0xba, 0x8d, 0x68, 0xe8, 0x3a, 0xfe, 0x95,
		0x6b, 0x4e, 0x6f, 0x9e, 0x15, 0xd9, 0x73, 0xb7, 0xce, 0x6d, 0x4e, 0x6f, 0x98, 0x9b, 0xfe, 0x27,
		0x9d, 0xe4, 0xf6, 0xb8, 0xc7, 0xf3, 0xb7, 0xa7, 0x11, 0x0d, 0x69, 0x87, 0x27, 0xba, 0xee, 0x93,
		0xb0, 0x63, 0x2a, 0x8d, 0x54, 0x28, 0x22, 0x11, 0x5e, 0x89, 0x9e, 0x7e, 0xee, 0xa9, 0xde, 0xb5,
		0xec, 0x25, 0xcb, 0x9d, 0xb6, 0x7b, 0x4a, 0x73, 0x99, 0x47, 0xad, 0x27, 0x1e, 0x06, 0xbe, 0x4b,
		0x35, 0xa6, 0xf1, 0x15, 0xe2, 0x66, 0x1e, 0x24, 0xae, 0xbe, 0xb4, 0xa7, 0x6d, 0x12, 0x37, 0xb4,
		0x1d, 0x8a, 0xbe, 0xbc, 0xe1, 0x11, 0x52, 0x67, 0xb8, 0x9d, 0xd6, 0x74, 0x38, 0x84, 0x1b, 0x66,
		0x49, 0xf3, 0x7c, 0xa2, 0x3c, 0x9c, 0x20, 0x83, 0xc9, 0xce, 0x2b, 0xd7, 0xbc, 0xf8, 0x5e, 0x2e,
		0x3c, 0x03, 0x36, 0xb6, 0xfb, 0x0a, 0x9d, 0xca, 0xd4, 0x65, 0xc8, 0x24, 0x87, 0x11, 0xf1, 0x68,
		0xa8, 0x0f, 0x43, 0x19, 0x84, 0x32, 0xbe, 0xe5, 0xe3, 0xc5, 0x66, 0x81, 0xe2, 0x81, 0xfd, 0x4c,
		0x3c, 0x02, 0x0f, 0x8a, 0xc3, 0x8e, 0xea, 0x70, 0xa4, 0x3c, 0x8c, 0xa9, 0x0f, 0x57, 0x0a, 0xc4,
		0x9e, 0x0a, 0xb1, 0xa7, 0x44, 0xbc, 0xa9, 0x11, 0x0f, 0x8a, 0xc4, 0x84, 0x2a, 0xb1, 0xa3, 0x4c,
		0xa9, 0xc1, 0xec, 0x48, 0xd3, 0x42, 0xa8, 0x61, 0x46, 0x9b, 0x1e, 0xd2, 0xa7, 0x4d, 0x66, 0x66,
		0x73, 0xa3, 0x51, 0x9c, 0xe9, 0x54, 0x01, 0x68, 0x15, 0x77, 0x7a, 0x55, 0x18, 0x9a, 0x55, 0x18,
		0xba, 0x55, 0x0c, 0xda, 0xc5, 0x8b, 0x7e, 0x31, 0xa3, 0x61, 0x29, 0x44, 0x9c, 0xdb, 0xa1, 0xe0,
		0xed, 0xf1, 0x7d, 0xe1, 0xf5, 0x43, 0xd1, 0xe7, 0xe8, 0xf1, 0x67, 0xf5, 0xa1, 0x5d, 0x86, 0xb6,
		0xb7, 0xa7, 0xfd, 0x10, 0x69, 0x9f, 0x6e, 0xca, 0x32, 0xd1, 0xbc, 0xb5, 0xee, 0x9e, 0xa5, 0x34,
		0x99, 0xc8, 0x62, 0x9b, 0x30, 0x4d, 0xcc, 0xe7, 0x99, 0x2d, 0x55, 0x90, 0x2d, 0x21, 0x5b, 0x42,
		0xb6, 0x84, 0x6c, 0x09, 0xd9, 0x12, 0xb2, 0x25, 0x70, 0x9a, 0xe5, 0x42, 0x84, 0x5b, 0xf1, 0x3a,
		0x35, 0x9c, 0x4f, 0x4f, 0xe3, 0x8b, 0x31, 0x8b, 0x4b, 0x83, 0xe3, 0x4b, 0x44, 0x6d, 0x93, 0xa9,
		0xf9, 0x5c, 0x09, 0x5b, 0x11, 0x88, 0x5b, 0x81, 0x08, 0x5c, 0x51, 0x88, 0x5c, 0xe1, 0x08, 0x5d,
		0xe1, 0x88, 0x5d, 0xb1, 0x08, 0x1e, 0x4f, 0xa2, 0xc7, 0x94, 0xf0, 0xa5, 0xd0, 0x61, 0x5b, 0x26,
		0x5f, 0x88, 0x18, 0x52, 0x08, 0xd1, 0xf7, 0x03, 0x2f, 0xde, 0xde, 0xe2, 0x1c, 0x35, 0xa6, 0x24,
		0xea, 0x0b, 0xe3, 0x4b, 0x68, 0x08, 0x35, 0x48, 0x08, 0x39, 0x6f, 0x55, 0x5b, 0xfe, 0xfa, 0xa2,
		0xa5, 0x23, 0xa9, 0xd8, 0xf3, 0x8f, 0xf4, 0x62, 0x12, 0xb1, 0xe4, 0xd2, 0x9e, 0x56, 0xfd, 0x54,
		0x8c, 0xeb, 0x39, 0x0c, 0xbd, 0x6e, 0x2c, 0x03, 0x55, 0x97, 0x03, 0x19, 0x47, 0x7c, 0xf3, 0x8e,
		0x45, 0x8f, 0x2c, 0x06, 0x5e, 0x2c, 0xaf, 0xc6, 0xcf, 0xaa, 0xef, 0xf9, 0x91, 0x80, 0x58, 0x32,
		0x05, 0x57, 0xe0, 0xdd, 0xc0, 0x15, 0xc0, 0x15, 0xc0, 0x15, 0xac, 0x63, 0x76, 0xc2, 0xdf, 0x7a,
		0x9e, 0xf2, 0xdb, 0xfc, 0xee, 0x37, 0xc3, 0x50, 0xc7, 0xb7, 0x91, 0x7d, 0x21, 0x87, 0x65, 0xda,
		0xd0, 0xfe, 0x30, 0x79, 0xc5, 0x0e, 0x40, 0x4e, 0x17, 0x80, 0x1d, 0x00, 0x52, 0x97, 0x82, 0x1d,
		0x00, 0xa2, 0x17, 0x84, 0x1d, 0x00, 0xb0, 0x26, 0x30, 0xa7, 0x09, 0x74, 0x8a, 0xb3, 0x03, 0x30,
		0x92, 0x2a, 0xfe, 0x5c, 0x80, 0xda, 0xff, 0x0e, 0xe3, 0x4b, 0xb0, 0x3d, 0x35, 0x10, 0x28, 0xfd,
		0xe7, 0xff, 0x20, 0x0a, 0x59, 0xfa, 0xdf, 0x44, 0xbd, 0x8f, 0xb8, 0x2b, 0x46, 0xe9, 0x9f, 0xa0,
		0x2b, 0x28, 0x62, 0xe9, 0x7f, 0x17, 0xae, 0x00, 0xae, 0x00, 0x69, 0xc9, 0x1a, 0x58, 0x8f, 0xd2,
		0x3f, 0x2c, 0x66, 0x1f, 0x98, 0xb9, 0x9e, 0xbb, 0x98, 0xda, 0xbf, 0x0e, 0x62, 0xf1, 0x8b, 0x5a,
		0xd3, 0xe5, 0xfb, 0xfa, 0x8c, 0x9c, 0x4e, 0x64, 0xe4, 0xb7, 0xac, 0xa1, 0x47, 0xb6, 0xcc, 0x05,
		0xfb, 0x5d, 0xdc, 0x32, 0xdc, 0x52, 0x2c, 0x35, 0x64, 0x14, 0x1b, 0x71, 0xcc, 0x4c, 0x4b, 0xed,
		0x48, 0x2a, 0xd3, 0x17, 0x97, 0x42, 0x71, 0xa3, 0xf0, 0xe3, 0xe4, 0x70, 0xce, 0xf2, 0xca, 0xe7,
		0x6a, 0xb5, 0xb6, 0x5b, 0xad, 0x6e, 0xee, 0x6e, 0xef, 0x6e, 0x7e, 0xd9, 0xd9, 0xa9, 0xd4, 0x2a,
		0x8c, 0xaa, 0x91, 0xa5, 0x56, 0xd8, 0x13, 0xa1, 0xe8, 0xed, 0x8f, 0x91, 0xaf, 0x46, 0xbe, 0xcf,
		0xd1, 0xf4, 0xe3, 0x48, 0x84, 0xac, 0x72, 0x26, 0x9c, 0x7c, 0x0d, 0xe6, 0xb5, 0x72, 0xe6, 0x55,
		0x62, 0x25, 0x12, 0x93, 0xd5, 0x01, 0x3e, 0x9d, 0xf1, 0x3d, 0x6a, 0xb3, 0xd2, 0x27, 0xc2, 0x41,
		0xe1, 0x85, 0xf6, 0xb6, 0x2c, 0x0f, 0x0a, 0x0f, 0x45, 0x5f, 0x84, 0x42, 0x75, 0x05, 0x4e, 0x0b,
		0x5f, 0xfe, 0xcd, 0x9d, 0xed, 0xce, 0xdb, 0x87, 0x07, 0x3b, 0xdb, 0x9b, 0x3b, 0x7b, 0x9a, 0xd5,
		0xd1, 0xad, 0x8e, 0x96, 0xb8, 0xba, 0x48, 0x06, 0x2a, 0xd2, 0xfa, 0x41, 0xa8, 0x39, 0xa1, 0xd7,
		0xef, 0xcb, 0xae, 0x66, 0xaa, 0x81, 0x54, 0x42, 0x84, 0x52, 0x0d, 0x36, 0xb4, 0x68, 0x74, 0xae,
		0x9f, 0x2a, 0xa7, 0x71, 0xa2, 0x55, 0x2a, 0x7b, 0xda, 0xf8, 0xeb, 0xd6, 0xd6, 0xa7, 0xad, 0xed,
		0x4f, 0x95, 0x6a, 0xe5, 0xd3, 0xd6, 0xf8, 0xdb, 0xad, 0x6d, 0xc8, 0xcc, 0x67, 0x92, 0x49, 0xce,
		0xda, 0xbf, 0xee, 0x56, 0x0a, 0x94, 0xe6, 0x33, 0x66, 0xaf, 0x73, 0x1d, 0x5e, 0x2b, 0x5a, 0x4a,
		0x28, 0x14, 0xad, 0x99, 0x95, 0x67, 0x0c, 0x8e, 0x27, 0xbb, 0xbe, 0x10, 0x0a, 0x61, 0x79, 0x75,
		0x61, 0x39, 0x95, 0x39, 0x4d, 0xce, 0xa8, 0xfe, 0x43, 0xfb, 0x30, 0x6d, 0x1f, 0xd5, 0xfd, 0xa8,
		0x77, 0xae, 0x8f, 0xdf, 0x8c, 0xf6, 0xac, 0x8e, 0x6b, 0x9b, 0xc6, 0xc1, 0x37, 0x63, 0xdf, 0x6a,
		0x58, 0xce, 0x9f, 0xee, 0x71, 0xd3, 0x36, 0x3b, 0xa6, 0x7d, 0x62, 0xd6, 0xdd, 0x7d, 0xa3, 0x59,
		0xff, 0x8f, 0x55, 0x77, 0xbe, 0x7d, 0x40, 0x24, 0xce, 0x34, 0x12, 0x27, 0xeb, 0x02, 0x41, 0x38,
		0xbf, 0x20, 0xbc, 0xbc, 0x85, 0x03, 0xa5, 0xde, 0x15, 0x3c, 0xaa, 0xba, 0x88, 0xba, 0xa1, 0x1c,
		0xb2, 0xdc, 0x70, 0x4d, 0x9d, 0x73, 0x4b, 0xf9, 0xb7, 0x9a, 0x54, 0x5d, 0x7f, 0xd4, 0x13, 0x5a,
		0x7c, 0x21, 0xb4, 0xbb, 0x4a, 0x99, 0x96, 0x56, 0xca, 0xb4, 0x6e, 0xa0, 0x62, 0x4f, 0x2a, 0x11,
		0x6a, 0x63, 0xa7, 0x70, 0xaa, 0xc6, 0x3f, 0x38, 0xe6, 0x7b, 0x63, 0x96, 0x97, 0x80, 0x53, 0x46,
		0x5a, 0xa5, 0xb2, 0xc1, 0xcd, 0x5b, 0x30, 0x9e, 0x9e, 0x99, 0x77, 0xd4, 0xbd, 0x39, 0x20, 0x32,
		0x1c, 0xae, 0x2c, 0xc2, 0xa8, 0xcc, 0x3d, 0xbf, 0xbd, 0xdc, 0x35, 0x85, 0x56, 0x00, 0x64, 0x78,
		0x94, 0x33, 0x3c, 0xd4, 0xb2, 0xdf, 0xe3, 0x36, 0x78, 0xed, 0x18, 0xae, 0xe9, 0x4e, 0x21, 0x6d,
		0x1f, 0x4c, 0xd7, 0x47, 0x10, 0x5e, 0x7d, 0xa5, 0x51, 0x2c, 0x7d, 0xf9, 0x7f, 0xf7, 0x9e, 0x32,
		0xf5, 0x15, 0x78, 0x37, 0x86, 0xb8, 0x68, 0x3b, 0x71, 0x3f, 0xc7, 0xe3, 0x84, 0x0d, 0x36, 0xf2,
		0x0c, 0x9c, 0x64, 0x18, 0x18, 0xca, 0x2d, 0x70, 0x4b, 0x0c, 0xd9, 0xca, 0x27, 0xb0, 0xcd, 0xfd,
		0x78, 0xca, 0x21, 0xa0, 0xef, 0xe4, 0x3d, 0x8f, 0x9c, 0xcb, 0x09, 0x16, 0xcc, 0x8e, 0x10, 0x63,
		0x79, 0x74, 0x18, 0xb3, 0x23, 0xc3, 0xd8, 0xe9, 0x4e, 0x71, 0xd4, 0x99, 0x62, 0xac, 0x2b, 0x55,
		0x84, 0xed, 0x4a, 0x96, 0xba, 0x51, 0xc5, 0xda, 0xb0, 0x64, 0xa7, 0x0b, 0x85, 0x79, 0xb0, 0x75,
		0x24, 0x48, 0xa9, 0xc1, 0x7c, 0x8f, 0xf6, 0x62, 0x7f, 0xa4, 0x17, 0x53, 0x21, 0x4f, 0x9c, 0xb9,
		0x0a, 0x62, 0xb5, 0x4e, 0x04, 0xab, 0x30, 0x44, 0xab, 0x30, 0x84, 0xab, 0x18, 0xc4, 0x8b, 0x17,
		0x01, 0x63, 0x46, 0xc4, 0x52, 0x88, 0xb0, 0x15, 0xde, 0x2c, 0xc8, 0x91, 0x5b, 0x8c, 0x8f, 0xda,
		0xe2, 0x7e, 0xc4, 0x16, 0x63, 0xb1, 0xd9, 0x22, 0xe8, 0x6a, 0x16, 0xe5, 0xfc, 0x9c, 0xc2, 0x89,
		0xe7, 0x15, 0x47, 0x34, 0x8f, 0xb1, 0x6e, 0x66, 0x21, 0xf4, 0x32, 0xb1, 0xc4, 0xb1, 0xc4, 0x91,
		0x1d, 0x14, 0xc2, 0xea, 0x33, 0xf4, 0x98, 0xaf, 0x7b, 0x88, 0x2a, 0xc5, 0x1c, 0x73, 0xc5, 0x34,
		0x4f, 0x4c, 0xac, 0x47, 0x05, 0x3c, 0x0b, 0xb3, 0x51, 0x01, 0xcf, 0x11, 0xe7, 0xa8, 0x80, 0xe7,
		0xb7, 0x5c, 0x51, 0x01, 0x27, 0x76, 0x21, 0xa8, 0x80, 0x83, 0xd1, 0xbc, 0x00, 0x91, 0x02, 0x54,
		0xc0, 0x7b, 0x42, 0xc5, 0x32, 0xbe, 0x0d, 0x45, 0x9f, 0x71, 0x05, 0xbc, 0xc2, 0xf0, 0xc4, 0xa9,
		0x92, 0x35, 0xbd, 0xf5, 0xfb, 0x5e, 0x24, 0xf8, 0x9f, 0xfc, 0x6a, 0x75, 0xac, 0x8e, 0xdb, 0x39,
		0xde, 0x77, 0x1a, 0x27, 0xae, 0xf3, 0x67, 0xdb, 0xe4, 0x1a, 0xbe, 0x92, 0xb2, 0x53, 0xc4, 0xfa,
		0x00, 0x30, 0xe6, 0x85, 0xbf, 0x14, 0x51, 0xed, 0xfb, 0xda, 0x23, 0x56, 0xfb, 0xa4, 0xea, 0xda,
		0xad, 0x63, 0xc7, 0xb4, 0x5d, 0xab, 0x5e, 0x42, 0x65, 0x19, 0xc8, 0x5a, 0x1e, 0xb2, 0x6a, 0x40,
		0x16, 0x90, 0xb5, 0x7c, 0x64, 0xb5, 0x6d, 0xf3, 0xd0, 0xfa, 0xe1, 0x1e, 0x36, 0x8c, 0xaf, 0x1d,
		0xe0, 0x0a, 0xb8, 0x5a, 0x32, 0xae, 0x3a, 0xf0, 0x56, 0x40, 0xd5, 0xf2, 0x50, 0x35, 0xa1, 0xef,
		0x1d, 0xce, 0xfc, 0xbd, 0x48, 0x3c, 0xbe, 0x18, 0x68, 0x5b, 0x1b, 0x5e, 0x5f, 0x00, 0xbf, 0xb6,
		0x3e, 0x88, 0xab, 0x01, 0x71, 0x40, 0x1c, 0xf2, 0x00, 0xe0, 0x4d, 0x43, 0x7e, 0x00, 0xb4, 0x01,
		0x6d, 0xef, 0x42, 0x9b, 0x63, 0x7c, 0x05, 0xcc, 0x00, 0xb3, 0x0c, 0x60, 0x56, 0xab, 0x96, 0x70,
		0x0c, 0x7b, 0xae, 0xaf, 0x33, 0xd4, 0x9b, 0xb0, 0xb0, 0x11, 0x37, 0x00, 0x27, 0xc4, 0x07, 0x00,
		0xaa, 0x68, 0x80, 0x7a, 0x70, 0xda, 0x89, 0x51, 0xff, 0xb7, 0xdb, 0x30, 0x9a, 0xd8, 0x66, 0x01,
		0xac, 0x96, 0x0d, 0x2b, 0x40, 0x0a, 0x90, 0x5a, 0x2a, 0xa4, 0x8e, 0xac, 0xa6, 0xfb, 0xd5, 0x6e,
		0x1d, 0xb7, 0x01, 0x2b, 0xc0, 0x6a, 0x69, 0xb0, 0x3a, 0x31, 0xac, 0x86, 0xb1, 0xdf, 0x30, 0xef,
		0x4e, 0xfb, 0x02, 0xbc, 0x00, 0xaf, 0x65, 0xc1, 0x2b, 0x05, 0x95, 0x7b, 0xd0, 0x6a, 0x76, 0x1c,
		0xdb, 0xb0, 0x9a, 0x0e, 0xda, 0xa4, 0x00, 0xb0, 0xa5, 0x01, 0xcc, 0xfc, 0xe1, 0x98, 0xcd, 0xba,
		0x59, 0x47, 0x7c, 0x04, 0xbe, 0x56, 0x81, 0xaf, 0xa4, 0x75, 0xc5, 0x6a, 0x3a, 0xa6, 0x7d, 0x68,
		0x1c, 0x98, 0xae, 0x51, 0xaf, 0xdb, 0x66, 0x07, 0x1e, 0x0c, 0x08, 0x5b, 0x2e, 0xc2, 0x9a, 0xa6,
		0xf5, 0xf5, 0xdb, 0x7e, 0xcb, 0x06, 0xc0, 0x00, 0xb0, 0x15, 0x00, 0xac, 0x06, 0x17, 0x06, 0x84,
		0xad, 0x18, 0x61, 0x70, 0x61, 0x00, 0xd8, 0xaa, 0x00, 0xd6, 0xb0, 0x9a, 0xdf, 0x5d, 0xc3, 0x71,
		0x6c, 0x6b, 0xff, 0xd8, 0x31, 0x01, 0x2d, 0x40, 0x6b, 0xb9, 0xd0, 0xaa, 0x9b, 0x0d, 0xe3, 0x4f,
		0xa0, 0x0a, 0xa8, 0x5a, 0x3e, 0xaa, 0xdc, 0x13, 0xc3, 0xb6, 0x0c, 0xc7, 0x6a, 0x35, 0x81, 0x2f,
		0xe0, 0x6b, 0xa9, 0xf8, 0xc2, 0x06, 0x23, 0x20, 0xb5, 0x64, 0x48, 0x35, 0x5a, 0x20, 0xee, 0x00,
		0xd5, 0x92, 0x41, 0xd5, 0xb6, 0x5b, 0x8e, 0x79, 0x30, 0x0e, 0x81, 0x93, 0xb9, 0x53, 0xe0, 0x0b,
		0xf8, 0x5a, 0x12, 0xbe, 0x8e, 0x8c, 0x1f, 0x13, 0x8c, 0x61, 0xf7, 0x1a, 0xe8, 0x5a, 0x09, 0xba,
		0x6c, 0xb3, 0x63, 0xda, 0x27, 0xe8, 0x90, 0x00, 0xc6, 0x56, 0x84, 0x31, 0xab, 0x79, 0xe7, 0xc5,
		0x50, 0x87, 0x00, 0xba, 0x96, 0x8a, 0x2e, 0xdb, 0xec, 0x58, 0xf5, 0x63, 0xa3, 0x01, 0xdf, 0x05,
		0x74, 0x2d, 0x1f, 0x5d, 0x50, 0x93, 0x01, 0xda, 0xb2, 0x47, 0x5d, 0x21, 0x66, 0x36, 0x0a, 0xe0,
		0xd4, 0xd6, 0x08, 0x6e, 0x80, 0x1a, 0xa0, 0x96, 0x09, 0xd4, 0x0a, 0xd0, 0xc3, 0x0a, 0xb8, 0xb1,
		0x81, 0x5b, 0x91, 0x66, 0x3f, 0x00, 0x3b, 0x2e, 0xb0, 0x2b, 0xd8, 0x4c, 0x08, 0x80, 0xc7, 0x05,
		0x78, 0xc5, 0x9a, 0x15, 0x01, 0xee, 0xb8, 0xe0, 0xae, 0x68, 0x33, 0x24, 0x40, 0x1e, 0x2b, 0xe4,
		0x15, 0xa7, 0x31, 0x1b, 0xc0, 0x63, 0x04, 0xbc, 0x1a, 0x5c, 0x1e, 0x90, 0x97, 0x13, 0xf2, 0xe0,
		0xf2, 0x00, 0xbc, 0xac, 0x81, 0x57, 0x98, 0x19, 0x15, 0x40, 0x8e, 0x15, 0xe4, 0x98, 0xf7, 0x8c,
		0x00, 0x6d, 0xfc, 0xd0, 0x56, 0x84, 0x99, 0x16, 0xe0, 0x8e, 0x15, 0xee, 0xb0, 0x01, 0x0b, 0xa8,
		0x65, 0x04, 0x35, 0xde, 0x33, 0x30, 0x00, 0x1b, 0x2b, 0xb0, 0x15, 0x66, 0x36, 0x06, 0xb8, 0xe3,
		0x82, 0xbb, 0x22, 0xcd, 0xcc, 0x00, 0x75, 0x9c, 0x50, 0x57, 0xac, 0x59, 0x1a, 0x60, 0x8f, 0x0d,
		0xf6, 0x0a, 0x34, 0x63, 0x03, 0xd4, 0x71, 0x41, 0x5d, 0x91, 0x66, 0x6f, 0x80, 0x3a, 0x2e, 0xa8,
		0x73, 0x4c, 0xb7, 0x6e, 0x1e, 0x1a, 0xc7, 0x0d, 0xc7, 0x3d, 0x32, 0x1d, 0xdb, 0x3a, 0x00, 0xe8,
		0x00, 0xba, 0x55, 0x83, 0xee, 0xb8, 0x99, 0xb6, 0x72, 0x9a, 0x75, 0xb7, 0xd1, 0x41, 0x5b, 0x1d,
		0x40, 0x97, 0x01, 0xe8, 0x26, 0xf9, 0x84, 0x59, 0x47, 0x84, 0x05, 0xee, 0x32, 0xc4, 0x9d, 0x63,
		0x35, 0xac, 0xff, 0x16, 0x0c, 0x75, 0x38, 0xb1, 0x12, 0xab, 0x7d, 0x9d, 0x56, 0xf9, 0x3a, 0xf0,
		0x67, 0x80, 0x0b, 0x3c, 0x19, 0xe0, 0x5a, 0x23, 0x70, 0x15, 0x89, 0x0f, 0x03, 0x5f, 0xe0, 0xbd,
		0x40, 0x57, 0x71, 0xd1, 0x65, 0xb7, 0x8e, 0x1d, 0xd3, 0x76, 0x0f, 0x8c, 0x76, 0xaa, 0x26, 0x64,
		0xbb, 0x46, 0xe3, 0x6b, 0xcb, 0xb6, 0x9c, 0x6f, 0x47, 0x40, 0x16, 0x90, 0xb5, 0x54, 0x64, 0xdd,
		0xfd, 0x0d, 0xd0, 0x02, 0xb4, 0x96, 0x08, 0x2d, 0x48, 0xa0, 0x01, 0x6f, 0x08, 0x96, 0xeb, 0xeb,
		0xd9, 0xd6, 0x09, 0x71, 0x45, 0x08, 0xa2, 0x29, 0xe4, 0x50, 0xf1, 0xc6, 0x7d, 0x2f, 0xf0, 0xfd,
		0xe6, 0x75, 0x9f, 0xf9, 0x58, 0xcb, 0xc3, 0x52, 0x26, 0x01, 0xb5, 0x64, 0x28, 0x15, 0xc4, 0x5e,
		0x2c, 0x03, 0x55, 0xda, 0x63, 0x14, 0x42, 0x4b, 0x51, 0xf7, 0x42, 0x5c, 0x7a, 0x43, 0x2f, 0xbe,
		0x18, 0x07, 0xcb, 0x72, 0x30, 0x14, 0xaa, 0x1b, 0xa8, 0xbe, 0x1c, 0xe8, 0x4a, 0xc4, 0xd7, 0x41,
		0xf8, 0xb7, 0x2e, 0x55, 0x14, 0x7b, 0xaa, 0x2b, 0xca, 0x0f, 0xdf, 0x88, 0x16, 0xde, 0x29, 0x0f,
		0xc3, 0x20, 0x0e, 0xba, 0x81, 0x1f, 0xa5, 0xdf, 0x95, 0x65, 0x24, 0xa3, 0xb2, 0x2f, 0xae, 0x84,
		0x3f, 0xfd, 0x52, 0xf6, 0xa5, 0xfa, 0x5b, 0x8f, 0x62, 0x2f, 0x16, 0x7a, 0xcf, 0x8b, 0xbd, 0x73,
		0x2f, 0x12, 0x65, 0x3f, 0x1a, 0x96, 0x63, 0xff, 0x2a, 0x1a, 0xff, 0x51, 0x16, 0x37, 0xb1, 0x50,
		0x3d, 0xd1, 0xd3, 0x65, 0xa4, 0x87, 0xc2, 0xeb, 0x5e, 0x78, 0xe7, 0xd2, 0x97, 0xf1, 0x6d, 0x59,
		0x09, 0x39, 0xb8, 0x38, 0x0f, 0xc2, 0x28, 0xfd, 0xae, 0x7c, 0x67, 0x4c, 0x6a, 0x44, 0x34, 0x3a,
		0x4f, 0xfe, 0xab, 0xc9, 0xd7, 0xf2, 0x28, 0x96, 0xbe, 0xfc, 0x3f, 0xd1, 0xd3, 0xcf, 0x3d, 0xd5,
		0xbb, 0x96, 0xbd, 0xf8, 0xa2, 0x9c, 0x7c, 0x38, 0x8f, 0xc8, 0x4f, 0x7f, 0x95, 0xd2, 0xb6, 0x90,
		0xb8, 0xff, 0x28, 0x89, 0x9b, 0x38, 0xf4, 0xf4, 0xd1, 0x18, 0xbb, 0xe7, 0xbe, 0x60, 0xe1, 0x3b,
		0x4a, 0xa1, 0xe8, 0x8b, 0x50, 0xa8, 0xae, 0x60, 0x93, 0x61, 0x33, 0x72, 0xc8, 0x69, 0xde, 0x72,
		0x78, 0xb0, 0xfb, 0xb9, 0xb2, 0xb9, 0xa7, 0x59, 0x1d, 0xdd, 0xea, 0x68, 0x4e, 0xe8, 0xf5, 0xfb,
		0xb2, 0xab, 0x99, 0x6a, 0x20, 0x95, 0x10, 0xa1, 0x54, 0x03, 0xed, 0x77, 0xc7, 0xfc, 0xa8, 0x1d,
		0x89, 0x38, 0x94, 0xdd, 0x53, 0x65, 0x8e, 0x9d, 0x66, 0x24, 0x03, 0x15, 0x6d, 0x68, 0xd1, 0xe8,
		0x5c, 0x77, 0x1a, 0x27, 0xda, 0xf6, 0x97, 0x3d, 0x6d, 0xfc, 0x75, 0x6b, 0xeb, 0x93, 0xb6, 0xb5,
		0xfd, 0x49, 0xab, 0x54, 0x2b, 0x9f, 0xb4, 0xad, 0xe4, 0x6f, 0x5b, 0xdb, 0x1b, 0x8c, 0xaa, 0x3c,
		0xa5, 0x4e, 0x30, 0x0a, 0xbb, 0x82, 0x55, 0x68, 0x4d, 0xec, 0xfe, 0x2e, 0x6e, 0xaf, 0x83, 0xb0,
		0x37, 0x7e, 0xa0, 0x77, 0xab, 0x86, 0x57, 0x8d, 0xa0, 0xf4, 0xcd, 0x8b, 0x8c, 0x70, 0x30, 0xba,
		0x14, 0x2a, 0x2e, 0xed, 0x69, 0x71, 0x38, 0x12, 0xcc, 0x2e, 0x60, 0xce, 0xfa, 0x2c, 0x96, 0x15,
		0x32, 0x80, 0x35, 0xb3, 0xf2, 0x8c, 0xfe, 0x7a, 0x28, 0x5d, 0x5f, 0x08, 0x85, 0x70, 0xbd, 0xba,
		0x70, 0xbd, 0xb1, 0x31, 0xc9, 0x2a, 0xca, 0xf1, 0xed, 0x50, 0x68, 0x7f, 0x68, 0x1f, 0x82, 0xae,
		0x3e, 0x4e, 0x7d, 0x74, 0x3f, 0xea, 0x9d, 0xeb, 0xe3, 0x37, 0xa3, 0xbd, 0x97, 0xfb, 0x10, 0x3e,
		0x20, 0x26, 0x67, 0x1a, 0x93, 0x93, 0x55, 0x81, 0x70, 0x9c, 0x5f, 0x38, 0x5e, 0xd6, 0xb2, 0xe1,
		0x13, 0x73, 0x19, 0x2d, 0xf0, 0xba, 0x88, 0xba, 0xa1, 0x1c, 0xb2, 0x2b, 0x6a, 0xdd, 0x73, 0xcc,
		0x2d, 0xe5, 0xdf, 0x6a, 0x52, 0x75, 0xfd, 0x51, 0x4f, 0x68, 0xf1, 0x85, 0xd0, 0x66, 0xf5, 0x20,
		0x2d, 0xad, 0x07, 0x69, 0xdd, 0x40, 0xc5, 0x9e, 0x54, 0x22, 0xd4, 0xc6, 0x0e, 0x61, 0xfc, 0x53,
		0xa7, 0x6a, 0x4c, 0xf0, 0x64, 0xa4, 0x25, 0xb8, 0xdc, 0xfe, 0xb2, 0xc1, 0xcd, 0x4b, 0x30, 0x75,
		0xce, 0x0f, 0x1d, 0x74, 0x6f, 0x0e, 0x82, 0xfc, 0xb6, 0x56, 0xd9, 0xfb, 0xea, 0x05, 0x7f, 0xbd,
		0xac, 0xd5, 0x84, 0x3d, 0x1d, 0x64, 0x74, 0x94, 0x33, 0x3a, 0xd4, 0xb4, 0xdf, 0xe3, 0x30, 0x78,
		0xed, 0x85, 0xad, 0xe5, 0x1e, 0x18, 0x83, 0x68, 0x5a, 0x8a, 0xe2, 0x70, 0xd4, 0x8d, 0xd5, 0x94,
		0xc8, 0x35, 0x27, 0x37, 0xda, 0x9a, 0x5e, 0xa2, 0xdb, 0x9e, 0xde, 0x5d, 0xd7, 0x8a, 0x64, 0xe4,
		0x36, 0xc6, 0xb7, 0xd5, 0x6d, 0x44, 0x43, 0xd7, 0xf1, 0xaf, 0x5c, 0x73, 0x7a, 0xf7, 0xac, 0xc8,
		0x9e, 0xbb, 0x77, 0x6e, 0x73, 0x7a, 0xc7, 0xdc, 0xf4, 0x3f, 0xe9, 0x24, 0xf7, 0xc7, 0x3d, 0x9e,
		0xde, 0x9f, 0xfd, 0xf4, 0xf6, 0xfc, 0x06, 0x07, 0x5a, 0x1c, 0xcb, 0x88, 0x3a, 0xcc, 0x31, 0xd1,
		0x1d, 0x23, 0x7b, 0xcc, 0x8a, 0x88, 0xae, 0xc7, 0x52, 0x43, 0x46, 0xb1, 0x11, 0xc7, 0x21, 0x69,
		0x4f, 0x5e, 0x3a, 0x92, 0xca, 0xf4, 0xc5, 0x98, 0xa4, 0x46, 0xa5, 0x3d, 0x6d, 0xf3, 0x13, 0x61,
		0x4b, 0xbd, 0x9b, 0x39, 0x4b, 0x2b, 0x9f, 0xab, 0xd5, 0xda, 0x6e, 0xb5, 0xba, 0xb9, 0xbb, 0xbd,
		0xbb, 0xf9, 0x65, 0x67, 0xa7, 0x52, 0xab, 0xec, 0x10, 0x36, 0xbe, 0x15, 0xf6, 0x44, 0x28, 0x7a,
		0xfb, 0x63, 0xd4, 0xaa, 0x91, 0xef, 0x73, 0x30, 0xf5, 0x38, 0x12, 0x63, 0xf0, 0xf6, 0x3d, 0x3f,
		0x12, 0x70, 0x4e, 0xc5, 0x63, 0x71, 0xc5, 0x67, 0x6f, 0x84, 0xa9, 0x5a, 0x76, 0x14, 0x8d, 0x26,
		0x21, 0xa3, 0x47, 0x77, 0x68, 0x59, 0x44, 0xcc, 0xb7, 0x51, 0xf7, 0x69, 0x05, 0xf6, 0x65, 0xb4,
		0xd6, 0x2f, 0x9d, 0x55, 0x42, 0x68, 0x85, 0x94, 0x46, 0xaa, 0x27, 0xfa, 0x52, 0x89, 0x9e, 0x3e,
		0x7b, 0x68, 0xd4, 0x16, 0x49, 0xba, 0xab, 0xb3, 0x68, 0x2a, 0x31, 0x4f, 0xf3, 0x5d, 0xaa, 0xde,
		0x98, 0xe0, 0x13, 0x33, 0xeb, 0x20, 0xf1, 0x26, 0xf4, 0x72, 0xa4, 0x52, 0x3b, 0x14, 0x7d, 0x79,
		0x43, 0xd3, 0x2b, 0xcf, 0x40, 0x37, 0xdd, 0x9b, 0x26, 0xc8, 0xc7, 0xa8, 0x6f, 0xf7, 0xcd, 0x6f,
		0xe9, 0x0d, 0x27, 0x4f, 0x9a, 0x68, 0xd6, 0xc3, 0x65, 0xc7, 0xee, 0xde, 0xae, 0xdc, 0x0c, 0x98,
		0x60, 0xa3, 0xac, 0xd8, 0x68, 0x5d, 0xd2, 0x2c, 0xab, 0x2d, 0x44, 0x57, 0xba, 0x7e, 0xe5, 0x29,
		0x3e, 0x40, 0xd5, 0xbd, 0xd0, 0xa4, 0x05, 0xe4, 0xe9, 0x01, 0x07, 0x9a, 0xc0, 0x88, 0x2e, 0x70,
		0xa1, 0x0d, 0xec, 0xe8, 0x03, 0x3b, 0x1a, 0xc1, 0x8b, 0x4e, 0xd0, 0xa4, 0x15, 0x44, 0xe9, 0x05,
		0x79, 0x9a, 0x91, 0x1a, 0x38, 0x19, 0xc7, 0x25, 0xef, 0x84, 0x66, 0x7e, 0x7d, 0x62, 0x2e, 0xf1,
		0xf5, 0x4c, 0x9b, 0x68, 0xb0, 0x21, 0x1c, 0x9c, 0x88, 0x07, 0x43, 0x02, 0xc2, 0x8d, 0x88, 0xb0,
		0x25, 0x24, 0x6c, 0x89, 0x09, 0x4f, 0x82, 0x42, 0x9b, 0xa8, 0x10, 0x27, 0x2c, 0x6c, 0x88, 0x4b,
		0x6a, 0xa8, 0x2f, 0xd4, 0x20, 0xd9, 0xb2, 0x63, 0xe2, 0xbd, 0x66, 0x01, 0x62, 0x6a, 0x37, 0x13,
		0x0f, 0x30, 0xa5, 0x34, 0x9b, 0x4c, 0xcc, 0xe5, 0x42, 0x6d, 0x38, 0x52, 0x1c, 0xc6, 0x54, 0x87,
		0x2b, 0xe5, 0x61, 0x4f, 0x7d, 0xd8, 0x53, 0x20, 0xde, 0x54, 0x88, 0x07, 0x25, 0x62, 0x42, 0x8d,
		0x52, 0x28, 0x38, 0xb7, 0x43, 0xc1, 0xd3, 0x63, 0x8f, 0xa4, 0x8a, 0x3f, 0x73, 0xf2, 0xd7, 0x53,
		0xfa, 0xb1, 0xc3, 0xc8, 0x64, 0xdb, 0x53, 0x03, 0xc1, 0x4e, 0x06, 0x9b, 0xe1, 0xc4, 0xf2, 0x91,
		0x54, 0x2c, 0x47, 0xad, 0xb5, 0x54, 0x2d, 0x9d, 0x0f, 0x4f, 0x5d, 0xb0, 0xff, 0x30, 0xf4, 0xba,
		0xb1, 0x0c, 0x54, 0x5d, 0x0e, 0x24, 0xf5, 0xf9, 0x8f, 0xe7, 0x5d, 0xa3, 0x18, 0x78, 0xb1, 0xbc,
		0x12, 0xa4, 0xc7, 0x15, 0x0a, 0x10, 0x35, 0xef, 0x2f, 0x5d, 0xef, 0x86, 0xff, 0xd2, 0xdd, 0xda,
		0xd9, 0xc1, 0xe2, 0xc5, 0xe2, 0x5d, 0x03, 0x62, 0xce, 0xcf, 0xda, 0x33, 0x68, 0x32, 0xac, 0x4b,
		0x70, 0x99, 0x4c, 0xf2, 0xb2, 0x2b, 0x03, 0x13, 0x9e, 0x3f, 0x7e, 0x2a, 0x0b, 0x43, 0x11, 0x78,
		0x45, 0x06, 0xa3, 0x08, 0x9c, 0xa9, 0xe9, 0x28, 0x02, 0xe7, 0x74, 0x01, 0x28, 0x02, 0x83, 0x6d,
		0x14, 0x24, 0x9d, 0x45, 0x11, 0x38, 0x73, 0xfa, 0x81, 0x22, 0xf0, 0xaa, 0x5f, 0x28, 0x02, 0x67,
		0x6b, 0x3c, 0x8a, 0xc0, 0x54, 0x5c, 0x23, 0x8a, 0xc0, 0x39, 0x2c, 0x5d, 0x14, 0x81, 0xb1, 0x78,
		0xb1, 0x78, 0x51, 0x04, 0x5e, 0xd5, 0x0b, 0x45, 0xe0, 0xb5, 0x09, 0x2e, 0xa5, 0xab, 0xa9, 0x3f,
		0x66, 0x56, 0x05, 0x9e, 0x98, 0x8d, 0x32, 0xf0, 0x2a, 0xcc, 0x45, 0x19, 0x38, 0x43, 0x20, 0xa3,
		0x0c, 0x9c, 0xdd, 0x32, 0x44, 0x19, 0x38, 0xe7, 0x0b, 0x40, 0x19, 0x18, 0x9c, 0x63, 0x0a, 0x05,
		0xbe, 0x65, 0xe0, 0x73, 0xa9, 0xbc, 0xf0, 0x96, 0x61, 0x1d, 0xf8, 0x0b, 0x68, 0xfd, 0x1a, 0x58,
		0x88, 0xf3, 0x36, 0x96, 0x6b, 0x6f, 0x01, 0x55, 0x4e, 0x17, 0xf4, 0x28, 0x17, 0xde, 0xe1, 0x70,
		0xe8, 0x3c, 0xe1, 0x73, 0x25, 0x08, 0x8b, 0x28, 0xb1, 0x68, 0xfa, 0xe2, 0xd4, 0xec, 0xc5, 0x24,
		0xbb, 0x87, 0x78, 0x09, 0xb2, 0x78, 0x0d, 0xe2, 0x25, 0xc8, 0xd6, 0x0b, 0x9a, 0xa5, 0x83, 0x94,
		0xaf, 0x45, 0x36, 0x3e, 0xa7, 0x06, 0xe2, 0xf5, 0x43, 0xd1, 0xe7, 0xe0, 0x71, 0x67, 0xea, 0x66,
		0xbb, 0x0c, 0x6c, 0x6d, 0x4f, 0xf3, 0x9c, 0x7b, 0x47, 0x5d, 0x23, 0x0f, 0x28, 0x92, 0x65, 0x38,
		0x5f, 0xee, 0xcd, 0x26, 0xe2, 0x7c, 0xb9, 0x25, 0x5b, 0x8a, 0xf3, 0xe5, 0xb2, 0x35, 0x15, 0xe7,
		0xcb, 0xbd, 0x95, 0x13, 0xe3, 0x7c, 0x39, 0xba, 0xd5, 0xca, 0x35, 0x3f, 0x73, 0xee, 0x78, 0x76,
		0x3b, 0x70, 0xf8, 0x1c, 0x5f, 0x8b, 0x70, 0xf8, 0x1c, 0x1c, 0xdd, 0xc2, 0x31, 0x61, 0x38, 0x86,
		0x8e, 0xb0, 0x25, 0x44, 0x56, 0xec, 0x2c, 0x6f, 0x92, 0x3d, 0x22, 0x61, 0x90, 0x66, 0x96, 0x44,
		0x37, 0x2b, 0x62, 0x95, 0x05, 0x11, 0xce, 0x7a, 0x08, 0x67, 0x39, 0x54, 0x5c, 0x05, 0xd1, 0xa0,
		0x5e, 0xc0, 0x60, 0x4e, 0x28, 0x25, 0xc9, 0x20, 0x05, 0xa1, 0x41, 0x54, 0xf2, 0xa7, 0x05, 0xf9,
		0x5a, 0x90, 0xb3, 0x97, 0xa1, 0xe6, 0x5d, 0x8a, 0xe3, 0x55, 0xf2, 0x5d, 0x5e, 0xf9, 0x81, 0x3a,
		0x47, 0x40, 0x13, 0x39, 0xe6, 0x89, 0xd4, 0x31, 0x4e, 0x44, 0x8e, 0x69, 0x22, 0xd3, 0xc9, 0x44,
		0xa9, 0x53, 0x89, 0x60, 0x27, 0x12, 0xb5, 0x4e, 0x23, 0xb2, 0x9d, 0x44, 0x64, 0x3b, 0x85, 0x68,
		0x76, 0x02, 0xad, 0x37, 0xc9, 0xa2, 0x72, 0xcc, 0x50, 0x29, 0xba, 0x8d, 0x62, 0x71, 0xa9, 0xcb,
		0x1e, 0x9d, 0x05, 0x9e, 0x06, 0xcb, 0xd4, 0x34, 0x2a, 0x25, 0x3a, 0x52, 0x2d, 0xc2, 0xe4, 0x5a,
		0x81, 0x29, 0xb6, 0xfc, 0x12, 0x6e, 0xed, 0xa5, 0xda, 0xc2, 0x4b, 0xbe, 0x55, 0x97, 0x7c, 0x4b,
		0x2e, 0xed, 0xd6, 0x5b, 0x6c, 0xbb, 0xcc, 0x3f, 0x2a, 0x72, 0x2d, 0xb3, 0x64, 0xc3, 0xdf, 0xbd,
		0xdc, 0xf1, 0x33, 0x21, 0x9b, 0xda, 0x5e, 0x1c, 0x8b, 0x50, 0x91, 0x93, 0x1b, 0x2c, 0xfd, 0xb5,
		0xa9, 0x7f, 0x31, 0xf4, 0x43, 0x4f, 0xef, 0x9f, 0xfd, 0xaf, 0xfa, 0xf3, 0xf4, 0x74, 0xe3, 0x85,
		0x37, 0xe8, 0xf8, 0x88, 0x33, 0x4a, 0x8f, 0xb7, 0xd5, 0xb1, 0x7e, 0x90, 0x7d, 0xc6, 0xff, 0xef,
		0xb5, 0x0f, 0xf9, 0x5f, 0x84, 0x9e, 0x32, 0xea, 0xfd, 0x48, 0x45, 0x51, 0xef, 0x5f, 0x72, 0xbd,
		0x9f, 0xc0, 0xcc, 0xf5, 0x9a, 0xd6, 0xfa, 0xc9, 0x94, 0x32, 0xc8, 0x71, 0x38, 0x22, 0xa5, 0x0b,
		0xd4, 0xfc, 0x79, 0x94, 0x28, 0x50, 0xf3, 0xe7, 0x5e, 0x8a, 0x40, 0xcd, 0x9f, 0x1e, 0xd1, 0x22,
		0x53, 0x6a, 0x20, 0x38, 0x7d, 0x4b, 0x69, 0xba, 0x76, 0x71, 0x7a, 0xf6, 0x2e, 0x8c, 0xaf, 0x2b,
		0xad, 0xfb, 0x6d, 0x8d, 0x16, 0xec, 0xac, 0x15, 0x3b, 0x6f, 0xf2, 0x46, 0xa3, 0x03, 0x9b, 0x4e,
		0xc7, 0x35, 0xe9, 0x0e, 0x6b, 0x42, 0x1d, 0xd5, 0x84, 0x3a, 0xa8, 0xf3, 0x5a, 0xc1, 0x44, 0x6a,
		0x1a, 0xdc, 0x6b, 0x19, 0xa5, 0x5c, 0x3b, 0xf7, 0x56, 0xd4, 0xee, 0x9c, 0x4f, 0x0c, 0xcf, 0x3e,
		0x82, 0x66, 0xfb, 0x89, 0x19, 0xaf, 0xf4, 0xbc, 0x57, 0x38, 0xd3, 0x95, 0x9d, 0x2d, 0xf6, 0xb3,
		0x43, 0x60, 0x36, 0x9f, 0x94, 0x11, 0xc6, 0x4b, 0xe2, 0x26, 0x0e, 0x3d, 0x7d, 0x34, 0x06, 0xc7,
		0xb9, 0x9f, 0x6d, 0xca, 0x58, 0x0a, 0x45, 0x5f, 0x84, 0x42, 0x75, 0xb3, 0x3f, 0xbd, 0x2d, 0x87,
		0x45, 0x3c, 0xcb, 0x83, 0xed, 0xc3, 0x83, 0x9d, 0xed, 0xcd, 0x9d, 0x3d, 0xcd, 0xea, 0xe8, 0x56,
		0x47, 0x4b, 0x02, 0x48, 0x24, 0x03, 0x15, 0x69, 0xfd, 0x20, 0xd4, 0x9c, 0xd0, 0xeb, 0xf7, 0x65,
		0x57, 0x33, 0xd5, 0x40, 0x2a, 0x21, 0x42, 0xa9, 0x06, 0x1b, 0x9a, 0xd3, 0x38, 0x39, 0x55, 0x5b,
		0x5b, 0x1b, 0x39, 0x84, 0xc8, 0xbc, 0xab, 0x73, 0xf3, 0xd5, 0xb8, 0x3b, 0xb8, 0xe4, 0xc4, 0xf4,
		0xa8, 0x14, 0xe0, 0xee, 0x15, 0xdc, 0xde, 0x83, 0xa7, 0xa2, 0xf3, 0x84, 0xcc, 0x3e, 0x2d, 0xc3,
		0x1e, 0x86, 0xd2, 0xf5, 0x85, 0x50, 0xeb, 0xe4, 0x30, 0xef, 0xe9, 0xca, 0x69, 0x7f, 0x68, 0x1f,
		0xa6, 0x25, 0x66, 0xdd, 0x8f, 0x7a, 0xe7, 0xfa, 0xf8, 0xcd, 0x68, 0xcf, 0xfc, 0xe1, 0x98, 0xcd,
		0xba, 0x59, 0x77, 0xad, 0x8e, 0x6b, 0x9b, 0xc6, 0xc1, 0x37, 0x63, 0xdf, 0x6a, 0x58, 0xce, 0x9f,
		0x1f, 0xd6, 0xdc, 0x65, 0x26, 0x58, 0x81, 0xb7, 0xbc, 0xf3, 0x96, 0xef, 0x03, 0xd3, 0x6f, 0x6b,
		0x50, 0xd3, 0x28, 0xd5, 0x45, 0xd4, 0x0d, 0xe5, 0x30, 0xd7, 0x82, 0x46, 0xba, 0xf8, 0x5b, 0xca,
		0xbf, 0xd5, 0xa4, 0xea, 0xfa, 0xa3, 0x9e, 0xe8, 0x69, 0xf1, 0x85, 0xd0, 0x66, 0x89, 0x87, 0x66,
		0x75, 0xb4, 0xf9, 0xc4, 0x63, 0x1c, 0xd5, 0xb4, 0x31, 0xde, 0xc7, 0x3f, 0x75, 0xaa, 0xc6, 0x7f,
		0x93, 0x91, 0x96, 0x3c, 0xe6, 0x7c, 0xa8, 0x93, 0x46, 0x64, 0x73, 0x73, 0xde, 0x1f, 0xf4, 0xe6,
		0x9e, 0x6d, 0x8e, 0xf5, 0x16, 0x4a, 0x3b, 0x99, 0xf7, 0xdc, 0xc3, 0xd2, 0xe0, 0x86, 0xba, 0x0f,
		0x6f, 0x3e, 0x57, 0xa8, 0x1c, 0x3f, 0xa7, 0xfa, 0x15, 0xab, 0xba, 0x55, 0x86, 0xee, 0x70, 0xe9,
		0xe5, 0xe6, 0x6c, 0xbc, 0xcd, 0xea, 0x57, 0x5f, 0x06, 0xeb, 0xa1, 0x74, 0x11, 0x44, 0xb3, 0x3b,
		0x9f, 0xcd, 0x4a, 0x48, 0xa9, 0x4c, 0xfa, 0xc9, 0x19, 0xad, 0xfa, 0x6c, 0x47, 0xef, 0x33, 0x6f,
		0xb7, 0xcb, 0xa3, 0xad, 0x2e, 0xc7, 0xf6, 0xb9, 0xbc, 0x98, 0x64, 0xee, 0xed, 0x70, 0xb9, 0x93,
		0xc5, 0x7c, 0xdb, 0xdb, 0x8a, 0xb5, 0xdb, 0x90, 0xf5, 0x28, 0x7a, 0x4e, 0x9a, 0x2c, 0xb9, 0x6a,
		0xb0, 0xe4, 0xa4, 0xb9, 0x92, 0x5b, 0xbf, 0x75, 0x9e, 0xfd, 0xd5, 0x04, 0xfa, 0xa9, 0x29, 0x95,
		0x1b, 0x73, 0xed, 0x97, 0xa6, 0x59, 0x70, 0xcc, 0xad, 0x1f, 0xba, 0xd8, 0x2d, 0x19, 0x79, 0x69,
		0x9a, 0x64, 0x9f, 0x3f, 0x50, 0xc9, 0x27, 0x9e, 0x0a, 0x33, 0x39, 0x35, 0x69, 0xe6, 0x3e, 0xde,
		0x43, 0x61, 0xac, 0x87, 0xd0, 0x38, 0x0f, 0x95, 0x31, 0x1e, 0x72, 0xe3, 0x3b, 0xe4, 0xc6, 0x76,
		0x68, 0x8d, 0xeb, 0xac, 0x57, 0xb7, 0x7f, 0xee, 0x63, 0x39, 0x73, 0x99, 0x49, 0x28, 0xd5, 0x20,
		0x4f, 0x87, 0x91, 0xca, 0x7b, 0xac, 0x15, 0x02, 0x30, 0x67, 0xf1, 0xc0, 0x12, 0xcc, 0x59, 0xbc,
		0xce, 0x94, 0xb5, 0x9d, 0xb3, 0xc8, 0xb1, 0x53, 0x75, 0xc1, 0x96, 0xfc, 0x3a, 0x57, 0x1f, 0xbe,
		0x08, 0x4d, 0x78, 0xda, 0x87, 0x07, 0xb5, 0xad, 0xed, 0xed, 0x59, 0x27, 0xa2, 0x2d, 0x06, 0x32,
		0x8a, 0xc3, 0xdb, 0xbb, 0x96, 0xc4, 0xa4, 0x23, 0xb1, 0x3d, 0x0a, 0x07, 0x22, 0xfa, 0xa4, 0xd9,
		0x87, 0x07, 0xa7, 0x6a, 0x67, 0x7b, 0xb3, 0xb2, 0xa7, 0xd5, 0x6f, 0x95, 0x77, 0x29, 0xbb, 0xda,
		0xb7, 0x69, 0x46, 0xa3, 0x99, 0x37, 0xdd, 0x0b, 0x4f, 0x0d, 0x84, 0x76, 0x24, 0xc6, 0xdf, 0xc8,
		0xe8, 0x32, 0xf9, 0xd5, 0xe4, 0xff, 0xdd, 0x98, 0x6c, 0xb6, 0x57, 0xb6, 0x77, 0x31, 0xbc, 0xfe,
		0x2c, 0xfb, 0xcd, 0xbb, 0x5d, 0x96, 0x3c, 0x11, 0x7e, 0x94, 0x10, 0x67, 0x0e, 0xe2, 0x75, 0x1f,
		0x94, 0xcf, 0xed, 0xd3, 0xcf, 0xd0, 0xa3, 0xc3, 0x9f, 0x1d, 0x60, 0x36, 0xeb, 0x91, 0x1e, 0x97,
		0x59, 0x65, 0x30, 0x0f, 0x79, 0x28, 0xcc, 0x61, 0xb1, 0x63, 0xb7, 0x98, 0x28, 0x78, 0xa4, 0x09,
		0xbc, 0xfe, 0x67, 0xd3, 0x38, 0xb2, 0x0e, 0xdc, 0xa6, 0x71, 0x64, 0x62, 0x8a, 0x00, 0x53, 0x04,
		0xaf, 0x9e, 0x22, 0xb8, 0x0f, 0x20, 0x4c, 0x0e, 0x64, 0xbd, 0xc8, 0xad, 0x49, 0x17, 0x77, 0xd2,
		0xc4, 0xdd, 0x9b, 0x72, 0xf3, 0x59, 0x60, 0x4c, 0x9a, 0xb7, 0x03, 0xe5, 0xdf, 0xa6, 0x1d, 0xdc,
		0xda, 0xa4, 0x81, 0xfb, 0x54, 0x25, 0x4f, 0xb4, 0xb2, 0xbd, 0x8b, 0x89, 0x01, 0x4c, 0x0c, 0xfc,
		0x8a, 0x2b, 0x78, 0x37, 0xcc, 0x90, 0x85, 0xb0, 0xfe, 0x34, 0x4c, 0x0a, 0x14, 0x3d, 0x8b, 0xe2,
		0x31, 0x19, 0x30, 0x2b, 0x3b, 0x61, 0x16, 0xe0, 0xd7, 0xef, 0xf6, 0x0c, 0x30, 0xba, 0xec, 0x45,
		0xd9, 0xcf, 0x03, 0xdc, 0xfb, 0x74, 0xcc, 0x04, 0x2c, 0xe5, 0x03, 0x31, 0x13, 0x90, 0x35, 0x3f,
		0xc4, 0x4c, 0x00, 0x66, 0x02, 0xde, 0x99, 0x35, 0x66, 0x3d, 0x13, 0x30, 0xe7, 0x78, 0xf3, 0x9b,
		0x0c, 0x98, 0x37, 0x02, 0xf3, 0x01, 0x45, 0x0b, 0x0a, 0x04, 0x82, 0x03, 0x95, 0x82, 0x02, 0xe6,
		0x03, 0x68, 0x05, 0x8f, 0x9c, 0x12, 0xf2, 0x75, 0x99, 0x0f, 0xc8, 0x33, 0xb8, 0x10, 0x0a, 0x32,
		0x0f, 0x83, 0x0d, 0xa6, 0x04, 0x30, 0x25, 0x80, 0x29, 0x01, 0x06, 0xc1, 0x89, 0x56, 0x90, 0xca,
		0x27, 0x58, 0xe5, 0x14, 0xb4, 0xd2, 0x5b, 0x4f, 0x67, 0x4a, 0x20, 0xff, 0x43, 0x3b, 0x28, 0x1c,
		0xd6, 0xb1, 0x78, 0x48, 0xc7, 0x7c, 0x60, 0x5d, 0x97, 0x0d, 0x9c, 0x1c, 0x52, 0x97, 0x7c, 0xa6,
		0xf7, 0x17, 0x56, 0x41, 0x1e, 0x53, 0xfc, 0x39, 0x67, 0xeb, 0x20, 0x50, 0x20, 0x50, 0x20, 0x50,
		0x20, 0x50, 0x3c, 0x09, 0x54, 0x5e, 0xd9, 0x3f, 0xa9, 0x2a, 0x00, 0xc1, 0x6a, 0x00, 0x91, 0xaa,
		0x00, 0x99, 0xe0, 0x46, 0x29, 0xc8, 0x11, 0x0c, 0x76, 0xd4, 0x82, 0x1e, 0xd9, 0xe0, 0x47, 0x36,
		0x08, 0xd2, 0x0c, 0x86, 0xf9, 0x06, 0xc5, 0x9c, 0x83, 0x23, 0x9d, 0x2a, 0xc3, 0x82, 0xc7, 0x19,
		0x49, 0x15, 0x57, 0x6a, 0x84, 0x4e, 0x08, 0xad, 0x11, 0x30, 0xc5, 0xf6, 0xd4, 0x20, 0xff, 0x31,
		0xe3, 0xd9, 0x8b, 0x86, 0x03, 0xd6, 0xa6, 0x1a, 0x06, 0x64, 0x22, 0x42, 0x6a, 0xd4, 0x89, 0xe7,
		0x8f, 0x44, 0xfe, 0x84, 0x62, 0xc1, 0xae, 0xc3, 0xd0, 0xeb, 0xc6, 0x32, 0x50, 0x75, 0x39, 0x90,
		0x79, 0x6b, 0x3e, 0x3c, 0xee, 0x03, 0xc4, 0xc0, 0x8b, 0xe5, 0x95, 0xc8, 0x55, 0xda, 0x80, 0xa0,
		0x9b, 0xbe, 0x0f, 0x79, 0xef, 0x86, 0x2e, 0xe4, 0x6b, 0x3b, 0x3b, 0xdb, 0x3b, 0x80, 0x7d, 0x51,
		0x60, 0xff, 0x1b, 0xac, 0xd0, 0x72, 0x9b, 0x12, 0xcf, 0xff, 0xfa, 0x73, 0x74, 0x7b, 0xa5, 0x38,
		0x18, 0x06, 0x7e, 0x30, 0xb8, 0x25, 0x55, 0x3d, 0x99, 0x37, 0x0a, 0xd5, 0x13, 0x54, 0x4f, 0x50,
		0x3d, 0x41, 0xf5, 0x04, 0xd5, 0x13, 0x54, 0x4f, 0x50, 0x3d, 0x41, 0xf5, 0x04, 0xd5, 0x13, 0x54,
		0x4f, 0x90, 0x46, 0xa2, 0x7a, 0x82, 0xea, 0x09, 0x60, 0x8f, 0xea, 0x09, 0x9d, 0xea, 0x49, 0xce,
		0x1c, 0x91, 0x84, 0xd6, 0xf3, 0x7c, 0xc4, 0xa7, 0xa1, 0xf9, 0x3c, 0xef, 0x90, 0xc9, 0x6a, 0x3f,
		0xa7, 0x46, 0xd2, 0xd1, 0x80, 0x5e, 0x34, 0x29, 0x77, 0x2d, 0xe8, 0xfc, 0x3d, 0xcd, 0x7a, 0x35,
		0xb6, 0xe5, 0xac, 0x76, 0x99, 0xda, 0x41, 0x51, 0xaf, 0x65, 0x5e, 0x4f, 0x63, 0xfe, 0x2f, 0x79,
		0xa8, 0x60, 0xe6, 0x87, 0xce, 0x62, 0x8f, 0x75, 0x7e, 0x17, 0xb7, 0x39, 0x0f, 0xcf, 0xe7, 0x1a,
		0xd3, 0xf3, 0x8f, 0xe1, 0x24, 0x63, 0x36, 0x81, 0x18, 0x4d, 0x20, 0x26, 0x43, 0x79, 0x99, 0x6e,
		0x0c, 0x2a, 0xe5, 0x32, 0x3c, 0xf5, 0x56, 0x2d, 0xb1, 0xd9, 0x0f, 0x59, 0x3d, 0x68, 0x47, 0x33,
		0x58, 0x91, 0xb9, 0x6a, 0x47, 0xe7, 0x77, 0x12, 0x4a, 0x8e, 0x6a, 0x2e, 0xf6, 0xe1, 0x41, 0xed,
		0xf3, 0xd6, 0xd6, 0xec, 0x90, 0x88, 0xa3, 0x91, 0x1f, 0x4b, 0x7d, 0xb6, 0x6a, 0x36, 0x12, 0x91,
		0xcf, 0x5c, 0x04, 0x64, 0x29, 0x69, 0xbd, 0xe4, 0x7d, 0xfc, 0x08, 0x4d, 0xb9, 0x97, 0x5f, 0x43,
		0x0e, 0xd4, 0x59, 0x97, 0xf4, 0x3a, 0xfb, 0x04, 0x15, 0xfd, 0x55, 0x39, 0xc1, 0x5f, 0x11, 0x41,
		0xb7, 0x9a, 0x1d, 0xc7, 0x68, 0x1e, 0x98, 0xae, 0x55, 0x87, 0x88, 0x3e, 0x44, 0xf4, 0x5f, 0x2d,
		0xa2, 0x7f, 0x0f, 0x3f, 0xd0, 0xd0, 0xcf, 0x7a, 0x89, 0xcf, 0x8b, 0x9b, 0x5b, 0x1d, 0xab, 0xa3,
		0xcd, 0x22, 0x95, 0x66, 0xf5, 0x84, 0x8a, 0x65, 0x5f, 0x8a, 0x70, 0x51, 0xe4, 0x7c, 0x72, 0xb6,
		0x95, 0x8c, 0xb4, 0xe4, 0xc1, 0x42, 0x49, 0x1f, 0x4a, 0xfa, 0xbf, 0xe4, 0x0f, 0x96, 0x04, 0x36,
		0xd4, 0x79, 0x79, 0x33, 0x36, 0xe8, 0xe9, 0xaf, 0x41, 0x6d, 0x0c, 0x2a, 0xf5, 0xbf, 0xfe, 0x2c,
		0xe5, 0xf0, 0xaa, 0xaa, 0x8b, 0x9b, 0x58, 0x84, 0xca, 0xf3, 0xf5, 0x50, 0x78, 0xdd, 0x0b, 0xef,
		0x5c, 0xfa, 0x32, 0xbe, 0xcd, 0x41, 0xb3, 0xfe, 0x69, 0x5b, 0xa0, 0x60, 0xbf, 0x94, 0x0f, 0x84,
		0x82, 0x7d, 0xd6, 0xbc, 0x0c, 0x0a, 0xf6, 0x50, 0xb0, 0x7f, 0x67, 0xce, 0x96, 0xb5, 0x82, 0xfd,
		0x04, 0xb2, 0x22, 0xca, 0x4f, 0xbe, 0x3e, 0xb5, 0x00, 0xda, 0xf5, 0x45, 0x0b, 0x07, 0x04, 0xc2,
		0x02, 0xc5, 0xfa, 0x1d, 0xb4, 0xeb, 0x35, 0x68, 0xd7, 0x17, 0x32, 0x9c, 0x3c, 0x08, 0x2b, 0xf9,
		0x97, 0x1d, 0xf3, 0x5d, 0x6a, 0x10, 0x5c, 0x85, 0xe0, 0x2a, 0x9d, 0x10, 0x44, 0x2e, 0x14, 0x91,
		0x0b, 0x49, 0xb4, 0x42, 0x53, 0x3e, 0x21, 0x2a, 0xa7, 0x50, 0x95, 0x7b, 0xc8, 0x4a, 0x0d, 0xe8,
		0x89, 0xbe, 0x37, 0xf2, 0x63, 0xfd, 0x52, 0xc4, 0xa1, 0xec, 0xd2, 0x51, 0x0d, 0x79, 0x60, 0x17,
		0x0d, 0xe1, 0x90, 0x0a, 0x84, 0x43, 0xc8, 0x84, 0x3a, 0x82, 0x21, 0x8f, 0x5a, 0xe8, 0x23, 0x1b,
		0x02, 0xc9, 0x86, 0x42, 0x9a, 0x21, 0x31, 0xdf, 0xd0, 0x98, 0x73, 0x88, 0x24, 0x13, 0x2a, 0x53,
		0x43, 0xf2, 0x3d, 0x5c, 0xe3, 0x49, 0xff, 0x97, 0xe7, 0x61, 0x1b, 0x44, 0x03, 0x26, 0xb9, 0xc0,
		0x49, 0x31, 0x80, 0x12, 0x0e, 0xa4, 0x54, 0x03, 0x2a, 0xf9, 0xc0, 0x4a, 0x3e, 0xc0, 0xd2, 0x0e,
		0xb4, 0x34, 0x02, 0x2e, 0x91, 0xc0, 0x4b, 0x2e, 0x00, 0xa7, 0x06, 0xf5, 0x7d, 0x6f, 0x10, 0xd1,
		0x73, 0x0a, 0x33, 0x3f, 0x3a, 0x31, 0x8f, 0xd8, 0x7a, 0xa3, 0x21, 0x81, 0x49, 0x3e, 0x40, 0x53,
		0x0e, 0xd4, 0x0c, 0x02, 0x36, 0xf5, 0xc0, 0xcd, 0x26, 0x80, 0xb3, 0x09, 0xe4, 0x3c, 0x02, 0x3a,
		0xad, 0xc0, 0x4e, 0x2c, 0xc0, 0xa7, 0x8f, 0x90, 0x8c, 0x44, 0xe7, 0x93, 0x1e, 0x4f, 0xa8, 0xd1,
		0xa5, 0x08, 0xbd, 0x9c, 0x47, 0x02, 0x5e, 0xcc, 0x7e, 0xab, 0x04, 0x6d, 0x33, 0xd5, 0xe8, 0x92,
		0xae, 0x3f, 0x76, 0x82, 0x4e, 0x1c, 0x4a, 0x35, 0x20, 0x6b, 0x61, 0x62, 0xe5, 0x66, 0x32, 0x76,
		0xd1, 0x74, 0x4c, 0xbb, 0x69, 0x34, 0x4a, 0x24, 0xed, 0xfc, 0xf9, 0x89, 0xea, 0x03, 0xb6, 0x92,
		0xd8, 0x40, 0xf8, 0xe9, 0xa6, 0x0f, 0x76, 0x4f, 0xdb, 0xa4, 0xf9, 0x6c, 0x11, 0x4f, 0x99, 0x58,
		0x43, 0x49, 0xc5, 0x95, 0xc8, 0x0e, 0xef, 0x93, 0x31, 0x9d, 0xc4, 0x4e, 0x2f, 0xf2, 0x65, 0xe4,
		0xcb, 0xc8, 0x97, 0x91, 0x2f, 0x23, 0x5f, 0x46, 0xbe, 0x5c, 0xa0, 0x7c, 0x59, 0x79, 0x61, 0x18,
		0x5c, 0xeb, 0x24, 0x43, 0xec, 0x7c, 0x98, 0xdd, 0x21, 0x68, 0x1a, 0xad, 0x93, 0x30, 0x1e, 0xbe,
		0x08, 0xe7, 0x51, 0x14, 0x4f, 0xca, 0x58, 0x30, 0x72, 0x76, 0x8c, 0x40, 0xe5, 0x13, 0x6d, 0x3b,
		0xa9, 0x1f, 0x29, 0xb0, 0xe8, 0x7a, 0xa8, 0x1e, 0x31, 0xc0, 0xa4, 0x52, 0xa2, 0x51, 0x3d, 0x79,
		0xe3, 0xc9, 0x25, 0x54, 0xdb, 0xc6, 0x1a, 0x5a, 0xd7, 0x35, 0x84, 0x3a, 0xd9, 0x2f, 0xbd, 0xce,
		0x50, 0x27, 0x23, 0x6c, 0x09, 0x95, 0x46, 0x1b, 0x22, 0x87, 0x15, 0x2c, 0xd8, 0x45, 0x52, 0x1c,
		0xe7, 0x49, 0x61, 0x95, 0xf2, 0x6c, 0xd4, 0x7e, 0xfa, 0x4d, 0xf9, 0xfe, 0x48, 0x49, 0x9e, 0xa7,
		0x1b, 0xd0, 0x83, 0xff, 0x7a, 0xb7, 0x96, 0x13, 0x5b, 0x70, 0xc5, 0x5a, 0x68, 0x14, 0x06, 0x72,
		0xde, 0x21, 0xe9, 0x3e, 0xbc, 0xaa, 0x9a, 0xd3, 0xab, 0xb6, 0xe7, 0x2e, 0xda, 0x9d, 0x14, 0xba,
		0xdd, 0xfa, 0xe4, 0x5a, 0x8f, 0x26, 0x97, 0x8a, 0x33, 0xcf, 0x33, 0x7f, 0xb4, 0x3d, 0xe1, 0x7b,
		0xb7, 0x04, 0xc7, 0x17, 0xe7, 0xac, 0xc2, 0xf0, 0x22, 0x86, 0x17, 0x5f, 0xc0, 0x0b, 0x86, 0x17,
		0x9f, 0x86, 0x2f, 0x86, 0x17, 0x5f, 0x4b, 0x67, 0x30, 0xbc, 0x48, 0x8d, 0x61, 0x62, 0x78, 0xf1,
		0x79, 0xff, 0x87, 0xe1, 0x45, 0xfa, 0x81, 0x93, 0x62, 0x00, 0x25, 0x1c, 0x48, 0xa9, 0x06, 0x54,
		0xf2, 0x81, 0x95, 0x7c, 0x80, 0xa5, 0x1d, 0x68, 0xe9, 0x14, 0x95, 0x34, 0x0c, 0x2f, 0x3e, 0x6d,
		0x10, 0x86, 0x17, 0xdf, 0x1c, 0x98, 0xd1, 0x8c, 0xc9, 0x37, 0x50, 0x33, 0x08, 0xd8, 0xd4, 0x03,
		0x37, 0x9b, 0x00, 0xce, 0x26, 0x90, 0xf3, 0x08, 0xe8, 0xb4, 0x02, 0x3b, 0xb1, 0x00, 0x9f, 0x3e,
		0x42, 0xfa, 0xcd, 0x98, 0xc9, 0x59, 0x5d, 0x93, 0xd2, 0xb0, 0x4e, 0x31, 0xcc, 0x6a, 0x18, 0x61,
		0x7c, 0x17, 0x00, 0x19, 0x8e, 0x30, 0x12, 0x6e, 0x81, 0xab, 0x8c, 0x0d, 0x3d, 0x6e, 0x76, 0x8e,
		0xdb, 0xed, 0x96, 0xed, 0x98, 0x75, 0x8c, 0x5b, 0xbe, 0x0e, 0x8c, 0xac, 0xc6, 0x2d, 0x09, 0xe3,
		0x70, 0x1e, 0x82, 0x7b, 0x5a, 0x05, 0x0d, 0x6f, 0xe0, 0x2a, 0xef, 0xc6, 0x54, 0x43, 0x46, 0xb1,
		0x11, 0xc7, 0x21, 0x4d, 0xbe, 0x72, 0x24, 0x95, 0xe9, 0x8b, 0x31, 0x1d, 0x26, 0xda, 0x2b, 0x5b,
		0x3a, 0xf2, 0x6e, 0xe6, 0x2c, 0xac, 0x7c, 0xae, 0x56, 0x6b, 0xbb, 0xd5, 0xea, 0xe6, 0xee, 0xf6,
		0xee, 0xe6, 0x97, 0x9d, 0x9d, 0x4a, 0xad, 0x42, 0x71, 0x9e, 0xa4, 0x15, 0xf6, 0x44, 0x28, 0x7a,
		0xfb, 0xb7, 0xa5, 0x3d, 0x4d, 0x8d, 0x7c, 0x9f, 0xb2, 0x89, 0xc7, 0x91, 0x08, 0x49, 0x36, 0x1f,
		0x63, 0xc4, 0xfb, 0xb1, 0xe7, 0x86, 0x11, 0xef, 0x77, 0xa4, 0x3a, 0xa8, 0x2a, 0xfe, 0xa2, 0x61,
		0xa8, 0x2a, 0xbe, 0xcb, 0x44, 0x54, 0x15, 0x97, 0x64, 0x28, 0xaa, 0x8a, 0x60, 0xea, 0x99, 0xe5,
		0xd1, 0x18, 0xf1, 0x5e, 0x52, 0x98, 0xc5, 0x88, 0xf7, 0x6b, 0x5f, 0x18, 0xf1, 0x7e, 0x9f, 0x91,
		0x18, 0xf1, 0x5e, 0x95, 0xeb, 0xc1, 0x88, 0xf7, 0x52, 0x6a, 0x18, 0x18, 0xf1, 0xc6, 0x1a, 0xc2,
		0x88, 0x77, 0x41, 0xac, 0xc2, 0x88, 0x37, 0x65, 0x4b, 0x30, 0xe2, 0xfd, 0xbc, 0x5d, 0xec, 0x27,
		0x4f, 0xef, 0xc6, 0xee, 0x30, 0xe0, 0x4d, 0xc7, 0x02, 0x0c, 0x78, 0x17, 0x76, 0x99, 0x15, 0x7d,
		0xbc, 0xdb, 0xf7, 0x6e, 0x31, 0xdc, 0x9d, 0xd7, 0x83, 0x15, 0x61, 0x18, 0x84, 0xe4, 0x86, 0xbb,
		0xef, 0x59, 0x85, 0xe1, 0x6e, 0x0c, 0x77, 0xbf, 0x80, 0x17, 0x0c, 0x77, 0x3f, 0x0d, 0x5f, 0x0c,
		0x77, 0xbf, 0x96, 0xca, 0x60, 0xb8, 0x9b, 0x1a, 0xbb, 0xc4, 0x70, 0xf7, 0xf3, 0xfe, 0x0f, 0xc3,
		0xdd, 0xf4, 0x03, 0x27, 0xc5, 0x00, 0x4a, 0x38, 0x90, 0x52, 0x0d, 0xa8, 0xe4, 0x03, 0x2b, 0xf9,
		0x00, 0x4b, 0x3b, 0xd0, 0xd2, 0x29, 0x28, 0x69, 0x18, 0xee, 0x7e, 0xda, 0x20, 0x0c, 0x77, 0xbf,
		0x39, 0x30, 0xa3, 0x0d, 0x93, 0x6f, 0xa0, 0x66, 0x10, 0xb0, 0xa9, 0x07, 0x6e, 0x36, 0x01, 0x9c,
		0x4d, 0x20, 0xe7, 0x11, 0xd0, 0x69, 0x05, 0x76, 0x62, 0x01, 0x3e, 0x7d, 0x84, 0x18, 0xee, 0x5e,
		0x6a, 0x0e, 0x8c, 0xe1, 0xee, 0x57, 0x03, 0x10, 0xc3, 0xdd, 0xcb, 0x34, 0x14, 0xc3, 0xdd, 0xef,
		0x03, 0x23, 0x86, 0xbb, 0x97, 0x63, 0x26, 0x86, 0xbb, 0xc1, 0x55, 0x96, 0x8d, 0x29, 0x0c, 0x77,
		0xbf, 0xd3, 0x42, 0x0c, 0x77, 0xaf, 0xd6, 0x44, 0x0c, 0x77, 0x73, 0xf2, 0x29, 0x18, 0xee, 0x7e,
		0x4f, 0xaa, 0x83, 0xaa, 0xe2, 0x2f, 0x1a, 0x86, 0xaa, 0xe2, 0xbb, 0x4c, 0x44, 0x55, 0x71, 0x49,
		0x86, 0xa2, 0xaa, 0x08, 0xa6, 0x9e, 0x59, 0x1e, 0x8d, 0xe1, 0xee, 0x25, 0x85, 0x59, 0x0c, 0x77,
		0xbf, 0xf6, 0x85, 0xe1, 0xee, 0xf7, 0x19, 0x89, 0xe1, 0xee, 0x55, 0xb9, 0x1e, 0x0c, 0x77, 0x2f,
		0xa5, 0x86, 0x81, 0xe1, 0x6e, 0xac, 0x21, 0x0c, 0x77, 0x17, 0xc4, 0x2a, 0x0c, 0x77, 0x53, 0xb6,
		0x04, 0xc3, 0xdd, 0xcf, 0xdb, 0xc5, 0x7c, 0xea, 0x74, 0x7e, 0xec, 0x0e, 0xc3, 0xdd, 0x74, 0x2c,
		0xc0, 0x70, 0x77, 0x61, 0x97, 0x59, 0xb1, 0x87, 0xbb, 0xcd, 0xf1, 0x95, 0x62, 0xb8, 0x3b, 0xaf,
		0x07, 0x2b, 0x6e, 0x86, 0x42, 0x45, 0x82, 0xde, 0x78, 0xf7, 0x7d, 0xbb, 0x30, 0xe0, 0x8d, 0x01,
		0xef, 0x17, 0x10, 0x83, 0x01, 0xef, 0xa7, 0xe1, 0x8b, 0x01, 0xef, 0xd7, 0xd2, 0x19, 0x0c, 0x78,
		0x53, 0x63, 0x98, 0x18, 0xf0, 0x7e, 0xde, 0xff, 0x61, 0xc0, 0x9b, 0x7e, 0xe0, 0xa4, 0x18, 0x40,
		0x09, 0x07, 0x52, 0xaa, 0x01, 0x95, 0x7c, 0x60, 0x25, 0x1f, 0x60, 0x69, 0x07, 0x5a, 0x3a, 0x45,
		0x25, 0x0d, 0x03, 0xde, 0x4f, 0x1b, 0x84, 0x01, 0xef, 0x37, 0x07, 0x66, 0xb4, 0x62, 0xf2, 0x0d,
		0xd4, 0x0c, 0x02, 0x36, 0xf5, 0xc0, 0xcd, 0x26, 0x80, 0xb3, 0x09, 0xe4, 0x3c, 0x02, 0x3a, 0xad,
		0xc0, 0x4e, 0x2c, 0xc0, 0xa7, 0x8f, 0x10, 0x03, 0xde, 0x4b, 0xcd, 0x81, 0x31, 0xe0, 0xfd, 0x6a,
		0x00, 0x62, 0xc0, 0x7b, 0x99, 0x86, 0x62, 0xc0, 0xfb, 0x7d, 0x60, 0xc4, 0x80, 0xf7, 0x72, 0xcc,
		0xc4, 0x80, 0x37, 0xb8, 0xca, 0xb2, 0x31, 0x85, 0x01, 0xef, 0x77, 0x5a, 0x88, 0x01, 0xef, 0xd5,
		0x9a, 0x88, 0x01, 0x6f, 0x4e, 0x3e, 0x05, 0x03, 0xde, 0xef, 0x49, 0x75, 0x50, 0x55, 0xfc, 0x45,
		0xc3, 0x50, 0x55, 0x7c, 0x97, 0x89, 0xa8, 0x2a, 0x2e, 0xc9, 0x50, 0x54, 0x15, 0xc1, 0xd4, 0x33,
		0xcb, 0xa3, 0x31, 0xe0, 0xbd, 0xa4, 0x30, 0x8b, 0x01, 0xef, 0xd7, 0xbe, 0x30, 0xe0, 0xfd, 0x3e,
		0x23, 0x31, 0xe0, 0xbd, 0x2a, 0xd7, 0x83, 0x01, 0xef, 0xa5, 0xd4, 0x30, 0x30, 0xe0, 0x8d, 0x35,
		0x84, 0x01, 0xef, 0x82, 0x58, 0x85, 0x01, 0x6f, 0xca, 0x96, 0x60, 0xc0, 0xfb, 0x79, 0xbb, 0xb8,
		0x4f, 0x9e, 0xde, 0x1b, 0xbc, 0xc3, 0x88, 0x37, 0x1d, 0x0b, 0x30, 0xe2, 0x5d, 0xe0, 0x85, 0x56,
		0xf0, 0x21, 0xef, 0xc9, 0xb5, 0x62, 0xcc, 0x3b, 0xaf, 0x47, 0x3b, 0xa4, 0xb1, 0xe1, 0x90, 0x96,
		0xda, 0x48, 0x94, 0xc5, 0x89, 0x6c, 0x5b, 0x61, 0xac, 0xfb, 0x39, 0xa4, 0x60, 0xac, 0xfb, 0x69,
		0xf8, 0x62, 0xac, 0xfb, 0xb5, 0x14, 0x06, 0x63, 0xdd, 0xd4, 0x58, 0x25, 0x99, 0x6d, 0xa1, 0xd4,
		0xe3, 0xf8, 0xc2, 0xeb, 0x87, 0xa2, 0x4f, 0xc1, 0xe3, 0xcc, 0x5a, 0xc8, 0x77, 0x09, 0xd8, 0xd2,
		0x9e, 0x12, 0xed, 0x8d, 0x8d, 0x49, 0x52, 0x38, 0xe5, 0xb1, 0x60, 0x73, 0x79, 0x10, 0x75, 0x0a,
		0x0a, 0x04, 0xa4, 0x94, 0x07, 0x20, 0xd1, 0x03, 0x2e, 0x07, 0x2e, 0x07, 0x2e, 0x07, 0x2e, 0x97,
		0xe3, 0x23, 0x21, 0x23, 0xd1, 0x33, 0xa4, 0xd5, 0x5f, 0x49, 0xab, 0xec, 0x41, 0xac, 0xfc, 0x41,
		0x2e, 0x74, 0x52, 0x0c, 0xa1, 0x84, 0x43, 0x29, 0xd5, 0x90, 0x4a, 0x3e, 0xb4, 0x92, 0x0f, 0xb1,
		0xb4, 0x43, 0x2d, 0x8d, 0x90, 0x4b, 0x24, 0xf4, 0xd2, 0x2b, 0xa7, 0x2c, 0x78, 0xac, 0x64, 0x6b,
		0x8c, 0xdc, 0x02, 0x4c, 0xf3, 0xc6, 0xcf, 0x84, 0x6c, 0x6a, 0x7b, 0x71, 0x2c, 0x42, 0x45, 0xae,
		0x9d, 0xb6, 0xf4, 0xfb, 0x5f, 0x9b, 0xfa, 0x97, 0xb3, 0x7f, 0xfe, 0xaa, 0xe8, 0x5f, 0xce, 0x26,
		0xdf, 0x56, 0x92, 0x2f, 0xff, 0xdb, 0xfa, 0xf9, 0xcf, 0xd6, 0x5f, 0x9b, 0x7a, 0x75, 0xfa, 0xee,
		0xd6, 0xce, 0x5f, 0x9b, 0xfa, 0xce, 0xd9, 0xc7, 0xdf, 0x4f, 0x4f, 0x37, 0x5e, 0xfb, 0x3b, 0x1f,
		0xff, 0xb7, 0xfd, 0xb3, 0x9c, 0xfe, 0xd2, 0xd6, 0xf4, 0x5f, 0xb7, 0xff, 0xda, 0xd4, 0xb7, 0xce,
		0x3e, 0xd2, 0x71, 0x3b, 0x67, 0x94, 0xf0, 0xd2, 0xea, 0x58, 0x3f, 0xc8, 0x82, 0xe6, 0xff, 0xfd,
		0x9e, 0x3b, 0x6c, 0x3e, 0xfe, 0x8b, 0x10, 0x70, 0xd0, 0x4c, 0x43, 0x25, 0x62, 0x96, 0x46, 0x43,
		0xbd, 0x17, 0x5c, 0x2b, 0x7a, 0x89, 0xe2, 0xcc, 0x30, 0x64, 0x8a, 0xc8, 0x14, 0x91, 0x29, 0x22,
		0x53, 0x44, 0xa6, 0x88, 0x4c, 0x71, 0x6d, 0x32, 0xc5, 0xf3, 0x20, 0xf0, 0x85, 0xa7, 0x28, 0x66,
		0x89, 0x15, 0x90, 0x37, 0x02, 0x16, 0xa0, 0x13, 0xfa, 0xbe, 0x3d, 0xcc, 0x3b, 0xa1, 0x09, 0xcc,
		0x18, 0xe4, 0xd8, 0x47, 0xf2, 0xdb, 0x1a, 0xad, 0xa0, 0x31, 0xc3, 0xca, 0x9d, 0x5d, 0xd1, 0xd0,
		0x0c, 0xa3, 0xa3, 0x0d, 0x46, 0x5a, 0x03, 0x8c, 0x90, 0xd6, 0x17, 0x21, 0x4d, 0xaf, 0xbc, 0x96,
		0x2f, 0x91, 0xc0, 0xc7, 0x3c, 0xe0, 0x95, 0x72, 0x6d, 0x1d, 0x5c, 0xd1, 0x8c, 0x4f, 0x3e, 0xf1,
		0x3b, 0xfb, 0xe8, 0x99, 0xed, 0x27, 0x66, 0xbc, 0xd0, 0xf3, 0x5e, 0xe0, 0x5c, 0x17, 0x76, 0xb6,
		0xe0, 0xcf, 0x0e, 0x82, 0xd9, 0x7c, 0x52, 0x46, 0x20, 0x2f, 0x89, 0x9b, 0x38, 0xf4, 0xf4, 0xd1,
		0x18, 0x1d, 0xe7, 0x7e, 0xb6, 0xb5, 0x8f, 0x52, 0x28, 0xfa, 0x22, 0x14, 0xaa, 0x9b, 0xbd, 0x46,
		0x52, 0x0e, 0xab, 0x78, 0x56, 0xc8, 0xb1, 0x0f, 0x0f, 0x2a, 0x95, 0x2f, 0x3b, 0x7b, 0x5a, 0xab,
		0x63, 0x69, 0x56, 0xc7, 0xea, 0x68, 0xfd, 0x20, 0xd4, 0xac, 0xb6, 0xe6, 0xa9, 0x9e, 0x56, 0x1f,
		0x79, 0xbe, 0x66, 0xaa, 0x2b, 0x19, 0x06, 0x2a, 0xe1, 0x9e, 0x1b, 0x9a, 0x66, 0x1f, 0x1e, 0xec,
		0x6c, 0x6f, 0x6e, 0xed, 0x9d, 0xaa, 0x7a, 0x70, 0xe9, 0x49, 0xa5, 0xff, 0x47, 0xf6, 0x84, 0x36,
		0x09, 0x30, 0x5a, 0x5d, 0x46, 0x71, 0x28, 0xcf, 0x47, 0x63, 0xef, 0xa4, 0x5d, 0xcb, 0xf8, 0x42,
		0x73, 0xae, 0x03, 0x3d, 0x09, 0x52, 0x9a, 0xd5, 0xd1, 0xad, 0xce, 0x86, 0xe6, 0x34, 0x4e, 0x4e,
		0x55, 0x65, 0x7b, 0x33, 0x87, 0x08, 0x9b, 0x77, 0x51, 0x7b, 0xbe, 0x78, 0x7d, 0x07, 0xb6, 0x9c,
		0x78, 0x22, 0x95, 0x3a, 0xf5, 0xbd, 0x7a, 0x74, 0x7e, 0x68, 0x2c, 0x3a, 0x49, 0xc9, 0xec, 0xd3,
		0x32, 0x6c, 0xba, 0x28, 0x5d, 0x5f, 0x08, 0xb5, 0x4e, 0xce, 0x3a, 0x9d, 0xeb, 0x8a, 0x6f, 0x87,
		0x42, 0xfb, 0x43, 0xfb, 0x30, 0xdd, 0xbf, 0xd1, 0xfd, 0xa8, 0x77, 0xae, 0x8f, 0xdf, 0x8c, 0xf6,
		0xac, 0xf6, 0x49, 0xd5, 0x35, 0x7f, 0x4c, 0x4e, 0x1b, 0x70, 0x6d, 0xd3, 0x38, 0xf8, 0x66, 0xec,
		0x5b, 0x0d, 0xcb, 0xf9, 0xf3, 0xc3, 0x9a, 0xbb, 0xdc, 0x04, 0x2d, 0xf0, 0xb6, 0x77, 0xde, 0xf6,
		0xbd, 0x70, 0xfa, 0x6d, 0x0d, 0x6a, 0x2a, 0xa5, 0xba, 0x88, 0xba, 0xa1, 0x1c, 0xe6, 0x5a, 0x50,
		0x49, 0x1d, 0x80, 0xa5, 0xba, 0xfe, 0xa8, 0x27, 0x34, 0xab, 0x7d, 0x55, 0xd5, 0x66, 0xf9, 0x8e,
		0x36, 0x9f, 0xef, 0x68, 0x63, 0x94, 0x6b, 0xf1, 0x85, 0x18, 0x87, 0x36, 0x6d, 0xfc, 0x0c, 0x4f,
		0x95, 0x8c, 0xb4, 0x48, 0xc4, 0x5a, 0x1c, 0x68, 0x95, 0xed, 0xcd, 0x8d, 0xbc, 0x96, 0x00, 0x81,
		0x8e, 0x82, 0x79, 0x6f, 0xd0, 0x9b, 0x7b, 0xae, 0x39, 0x16, 0x7b, 0x28, 0xb5, 0x0b, 0xdc, 0x73,
		0x0e, 0x4b, 0x81, 0x1a, 0x0a, 0x4e, 0xbc, 0xb9, 0x5c, 0xa1, 0x6a, 0x0b, 0x39, 0x15, 0xce, 0x98,
		0x15, 0xcc, 0x32, 0x74, 0x86, 0x2b, 0xa8, 0x74, 0x67, 0xe3, 0x71, 0x56, 0xbf, 0x02, 0x33, 0x58,
		0x13, 0x93, 0x69, 0x0f, 0xa9, 0x62, 0x11, 0xf6, 0xbd, 0xae, 0xd0, 0xbd, 0x5e, 0x2f, 0x14, 0x51,
		0x24, 0xb2, 0x3b, 0xae, 0xf9, 0xfe, 0xdc, 0xc9, 0x63, 0x96, 0x64, 0xe4, 0x19, 0xb2, 0x15, 0x26,
		0xc8, 0xbc, 0x37, 0x36, 0x8f, 0xde, 0xd7, 0x1c, 0x7b, 0x5b, 0xf3, 0x62, 0x9a, 0xb9, 0xf7, 0xa6,
		0xe6, 0x4e, 0x26, 0xf3, 0xed, 0x2d, 0x2d, 0xd6, 0x4e, 0x48, 0xd6, 0x83, 0xfa, 0x39, 0x29, 0xd6,
		0xe4, 0xaa, 0x50, 0x93, 0x93, 0x22, 0x4d, 0x6e, 0xc3, 0x11, 0x79, 0x0e, 0x41, 0x10, 0x18, 0x76,
		0xa0, 0x54, 0x8c, 0xcc, 0xb7, 0xbd, 0x8e, 0x64, 0x39, 0x32, 0xb7, 0x61, 0x84, 0x62, 0xf7, 0x8b,
		0xe4, 0xa5, 0xf8, 0x52, 0x9a, 0xd2, 0xf8, 0xfc, 0xab, 0xa6, 0x33, 0x43, 0xf2, 0x6a, 0xa8, 0xcd,
		0x75, 0x32, 0x2f, 0xf7, 0x49, 0x3c, 0x0a, 0x93, 0x77, 0x84, 0x26, 0xed, 0xa8, 0x4c, 0xd6, 0x91,
		0x9b, 0xa4, 0x23, 0x37, 0x39, 0x47, 0x6b, 0x52, 0x6e, 0xbd, 0x86, 0x10, 0x72, 0x9f, 0x7c, 0xbb,
		0x5f, 0x9b, 0xca, 0x37, 0x82, 0x68, 0x44, 0x44, 0x50, 0xc8, 0x88, 0x9e, 0x64, 0x26, 0x72, 0x92,
		0xdf, 0x72, 0x3f, 0xcb, 0xf3, 0x31, 0x53, 0xd2, 0x2a, 0xc9, 0x50, 0x9b, 0x24, 0x4f, 0x09, 0x92,
		0xb3, 0xb5, 0x72, 0xef, 0x18, 0xef, 0x7a, 0x60, 0x09, 0xc6, 0xbb, 0x5e, 0x67, 0xca, 0xda, 0x8e,
		0x77, 0xe5, 0xd8, 0x20, 0xbf, 0x60, 0x4b, 0x7e, 0x0d, 0xf3, 0x0f, 0x5f, 0x84, 0x04, 0xb4, 0xd3,
		0x16, 0xe6, 0xe3, 0x48, 0x68, 0x41, 0x7f, 0xda, 0xc9, 0xac, 0x4f, 0x5b, 0x99, 0xed, 0x60, 0x14,
		0x4b, 0x35, 0xd0, 0xa4, 0xd2, 0x9c, 0x83, 0x76, 0x79, 0xd2, 0xd9, 0x7c, 0xaa, 0x1e, 0x69, 0x6d,
		0x76, 0x1a, 0x27, 0x5a, 0x65, 0x7b, 0x6b, 0x03, 0x4a, 0xdc, 0xcf, 0xa6, 0xae, 0x79, 0xf7, 0xd1,
		0x93, 0xcf, 0x62, 0x1f, 0xcd, 0x66, 0x97, 0x0e, 0xd2, 0x75, 0x57, 0xbb, 0x58, 0x37, 0xde, 0x88,
		0x1a, 0xfd, 0x72, 0xd7, 0x26, 0x66, 0x3a, 0x1f, 0x6f, 0x51, 0x7b, 0xa4, 0x29, 0x28, 0x0f, 0x2d,
		0x12, 0x8c, 0x73, 0xb2, 0x63, 0xab, 0x18, 0x0e, 0x7a, 0x6a, 0x9a, 0xc3, 0x6a, 0x3a, 0xa6, 0x7d,
		0x68, 0x1c, 0x98, 0xae, 0x51, 0xaf, 0xdb, 0x66, 0xa7, 0x63, 0x76, 0x30, 0x1a, 0x84, 0xd1, 0xa0,
		0xb7, 0x8d, 0x06, 0x3d, 0x0a, 0x26, 0x0c, 0x06, 0x65, 0xbd, 0xf8, 0x67, 0xd3, 0x1a, 0xf1, 0xc5,
		0x74, 0x62, 0x23, 0x0d, 0x9c, 0x5a, 0x1a, 0x38, 0x13, 0xb6, 0x1e, 0x28, 0xff, 0x6e, 0x70, 0xe3,
		0x54, 0x8d, 0xdf, 0x92, 0x51, 0x32, 0xbc, 0x91, 0x67, 0xb6, 0x89, 0xe1, 0x20, 0xf2, 0xb9, 0xe4,
		0xa3, 0xc3, 0x41, 0xef, 0x86, 0x1b, 0xb2, 0x17, 0xd6, 0x9f, 0x86, 0x01, 0xa1, 0x75, 0xcb, 0xbe,
		0xf8, 0x8c, 0x07, 0x59, 0x33, 0xe3, 0x8d, 0xd4, 0x76, 0x0c, 0x07, 0xfd, 0xf2, 0xbd, 0xbf, 0x7b,
		0xfe, 0x0b, 0x03, 0x62, 0x39, 0x8e, 0x07, 0xe5, 0x34, 0xac, 0x86, 0x01, 0xa1, 0x15, 0x3e, 0x5d,
		0x0c, 0x08, 0xad, 0x0f, 0xa1, 0xc4, 0x80, 0xd0, 0x12, 0xf3, 0xcf, 0xac, 0x07, 0x84, 0x52, 0x25,
		0xbd, 0xdc, 0x66, 0x84, 0x52, 0x0b, 0x30, 0x26, 0x54, 0xb4, 0x70, 0x40, 0x20, 0x2c, 0x50, 0x29,
		0x46, 0x60, 0x4c, 0x88, 0x56, 0xd8, 0xc8, 0x29, 0x89, 0x5f, 0x97, 0x31, 0xa1, 0x9c, 0x0f, 0x82,
		0xa6, 0x71, 0xf0, 0x73, 0x4e, 0x21, 0x26, 0xf7, 0x50, 0x43, 0x21, 0xe4, 0x10, 0x0a, 0x3d, 0x54,
		0x42, 0x10, 0xb9, 0x50, 0x44, 0x2e, 0x24, 0xd1, 0x0a, 0x4d, 0xf9, 0x84, 0xa8, 0x9c, 0x42, 0x55,
		0xee, 0x21, 0x2b, 0x35, 0xa0, 0x27, 0xfa, 0xde, 0xc8, 0x8f, 0xf5, 0x4b, 0x11, 0x87, 0xb2, 0x9b,
		0xff, 0x6a, 0x9d, 0x39, 0xb0, 0x07, 0x76, 0xe5, 0xbc, 0x42, 0xf2, 0x0d, 0x6d, 0x64, 0x42, 0x1c,
		0xa5, 0x50, 0x47, 0x30, 0xe4, 0x51, 0x0b, 0x7d, 0x64, 0x43, 0x20, 0xd9, 0x50, 0x48, 0x33, 0x24,
		0xe6, 0x1b, 0x1a, 0x73, 0x0e, 0x91, 0x64, 0x42, 0x65, 0x6a, 0x48, 0x3e, 0x2a, 0x43, 0x2f, 0xfa,
		0xbf, 0x3c, 0xd4, 0x87, 0x88, 0x07, 0x4c, 0x72, 0x81, 0x93, 0x62, 0x00, 0x25, 0x1c, 0x48, 0xa9,
		0x06, 0x54, 0xf2, 0x81, 0x95, 0x7c, 0x80, 0xa5, 0x1d, 0x68, 0x69, 0x04, 0x5c, 0x22, 0x81, 0x97,
		0x5c, 0x00, 0x4e, 0x0d, 0xea, 0xfb, 0xde, 0x20, 0xa2, 0xe7, 0x14, 0x66, 0x7e, 0x74, 0x62, 0x1e,
		0xb1, 0xf5, 0x96, 0xaf, 0x92, 0x13, 0x9b, 0x00, 0x4d, 0x39, 0x50, 0x33, 0x08, 0xd8, 0xd4, 0x03,
		0x37, 0x9b, 0x00, 0xce, 0x26, 0x90, 0xf3, 0x08, 0xe8, 0xb4, 0x02, 0x3b, 0xb1, 0x00, 0x9f, 0x3e,
		0xc2, 0xdc, 0x95, 0xab, 0x5e, 0xf4, 0x78, 0x42, 0x8d, 0x2e, 0x45, 0xe8, 0xe5, 0x3c, 0xdc, 0xf0,
		0x62, 0xf6, 0x5b, 0x25, 0x68, 0x9b, 0xa9, 0x46, 0x97, 0x74, 0xfd, 0xb1, 0x13, 0x74, 0xe2, 0x50,
		0xaa, 0x01, 0x59, 0x0b, 0x13, 0x2b, 0x37, 0x93, 0x01, 0x92, 0xe6, 0xe4, 0x44, 0xa9, 0x12, 0x49,
		0x3b, 0x7f, 0x7e, 0xa2, 0xfa, 0x80, 0xad, 0x24, 0x36, 0x10, 0x7e, 0xba, 0xe9, 0x83, 0xdd, 0xd3,
		0x36, 0x69, 0x3e, 0x5b, 0xc4, 0x53, 0x26, 0xd6, 0x10, 0x5a, 0x85, 0x25, 0x22, 0x3b, 0xbc, 0x4f,
		0xc6, 0x74, 0x12, 0x3b, 0xbd, 0xc8, 0x97, 0x91, 0x2f, 0x23, 0x5f, 0x46, 0xbe, 0x8c, 0x7c, 0x19,
		0xf9, 0x72, 0x81, 0xf2, 0x65, 0xe5, 0x85, 0x61, 0x70, 0xad, 0x93, 0x0c, 0xb1, 0xf3, 0x61, 0x76,
		0x87, 0xa0, 0x69, 0xb6, 0xa7, 0x06, 0xf9, 0xcb, 0x43, 0x3e, 0xf5, 0x22, 0x9c, 0x47, 0x1d, 0x49,
		0x45, 0x3a, 0xd1, 0x4b, 0x8c, 0x3c, 0xf1, 0xfc, 0x91, 0xa0, 0xd3, 0xa9, 0xf0, 0xa4, 0x9d, 0x87,
		0xa1, 0xd7, 0x8d, 0x65, 0xa0, 0xea, 0x72, 0x20, 0xf3, 0xd6, 0xfa, 0xfd, 0x35, 0xd7, 0x23, 0x06,
		0x5e, 0x2c, 0xaf, 0x44, 0xae, 0x12, 0xb7, 0x8c, 0x2b, 0x25, 0xda, 0x54, 0x54, 0x99, 0xcf, 0x12,
		0xaa, 0x6d, 0x63, 0x0d, 0xad, 0xeb, 0x1a, 0x42, 0x9d, 0xec, 0x97, 0x5e, 0x67, 0xa8, 0x93, 0x11,
		0xb6, 0x84, 0x4a, 0xa3, 0x4d, 0xce, 0x52, 0xaa, 0x4f, 0xda, 0x45, 0x5b, 0xe4, 0xe7, 0xa1, 0xb0,
		0x4a, 0x79, 0x36, 0x6a, 0x3f, 0xfd, 0xa6, 0x7c, 0x7f, 0xa4, 0x24, 0x0f, 0x0d, 0x56, 0xba, 0xf0,
		0x5f, 0xef, 0xd6, 0x72, 0x62, 0x0b, 0xae, 0x58, 0x0b, 0x8d, 0xc2, 0x40, 0xce, 0x12, 0x64, 0xb8,
		0x1e, 0x9c, 0xd2, 0xef, 0x4e, 0x0a, 0xdd, 0x6e, 0x7d, 0x72, 0xad, 0x47, 0x93, 0x4b, 0x5d, 0x53,
		0x05, 0xf7, 0x1c, 0xd7, 0x6f, 0xa9, 0x27, 0x7c, 0xef, 0x96, 0xe0, 0xf8, 0xe2, 0x9c, 0x55, 0x18,
		0x5e, 0xc4, 0xf0, 0xe2, 0x0b, 0x78, 0xc1, 0xf0, 0xe2, 0xd3, 0xf0, 0xc5, 0xf0, 0xe2, 0x6b, 0xe9,
		0x0c, 0x86, 0x17, 0xa9, 0x31, 0x4c, 0x0c, 0x2f, 0x3e, 0xef, 0xff, 0x30, 0xbc, 0x48, 0x3f, 0x70,
		0x52, 0x0c, 0xa0, 0x84, 0x03, 0x29, 0xd5, 0x80, 0x4a, 0x3e, 0xb0, 0x92, 0x0f, 0xb0, 0xb4, 0x03,
		0x2d, 0x9d, 0xa2, 0x92, 0x86, 0xe1, 0xc5, 0xa7, 0x0d, 0xc2, 0xf0, 0xe2, 0x9b, 0x03, 0x33, 0x9a,
		0x31, 0xf9, 0x06, 0x6a, 0x06, 0x01, 0x9b, 0x7a, 0xe0, 0x66, 0x13, 0xc0, 0xd9, 0x04, 0x72, 0x1e,
		0x01, 0x9d, 0x56, 0x60, 0x27, 0x16, 0xe0, 0xd3, 0x47, 0x48, 0xbf, 0x19, 0x33, 0x39, 0x84, 0x6c,
		0x52, 0x1a, 0xd6, 0x29, 0x86, 0x59, 0x0d, 0x23, 0x8c, 0xef, 0x02, 0x20, 0xc3, 0x11, 0x46, 0xc2,
		0x2d, 0x70, 0x95, 0xb1, 0xa1, 0xc7, 0xcd, 0xce, 0x71, 0xbb, 0xdd, 0xb2, 0x1d, 0xb3, 0x8e, 0x71,
		0xcb, 0xd7, 0x81, 0x91, 0xd5, 0xb8, 0x25, 0x61, 0x1c, 0xce, 0x43, 0x70, 0x4f, 0xab, 0xa0, 0xe1,
		0x0d, 0x5c, 0xe5, 0xdd, 0x98, 0x6a, 0xc8, 0x28, 0x36, 0xe2, 0x38, 0xa4, 0xc9, 0x57, 0x8e, 0xa4,
		0x32, 0x7d, 0x91, 0x1c, 0x93, 0x4f, 0x73, 0x6d, 0x96, 0x8e, 0xbc, 0x9b, 0x39, 0x0b, 0x2b, 0x9f,
		0xab, 0xd5, 0xda, 0x6e, 0xb5, 0xba, 0xb9, 0xbb, 0xbd, 0xbb, 0xf9, 0x65, 0x67, 0xa7, 0x52, 0xab,
		0x50, 0x9c, 0x27, 0x69, 0x85, 0x3d, 0x11, 0x8a, 0xde, 0xfe, 0x6d, 0x69, 0x4f, 0x53, 0x23, 0xdf,
		0xa7, 0x6c, 0xe2, 0x71, 0x24, 0x42, 0x92, 0xcd, 0xc7, 0x18, 0xf1, 0x7e, 0xec, 0xb9, 0x61, 0xc4,
		0xfb, 0x1d, 0xa9, 0x0e, 0xaa, 0x8a, 0xbf, 0x68, 0x18, 0xaa, 0x8a, 0xef, 0x32, 0x11, 0x55, 0xc5,
		0x25, 0x19, 0x8a, 0xaa, 0x22, 0x98, 0x7a, 0x66, 0x79, 0x34, 0x46, 0xbc, 0x97, 0x14, 0x66, 0x31,
		0xe2, 0xfd, 0xda, 0x17, 0x46, 0xbc, 0xdf, 0x67, 0x24, 0x46, 0xbc, 0x57, 0xe5, 0x7a, 0x30, 0xe2,
		0xbd, 0x94, 0x1a, 0x06, 0x46, 0xbc, 0xb1, 0x86, 0x30, 0xe2, 0x5d, 0x10, 0xab, 0x30, 0xe2, 0x4d,
		0xd9, 0x12, 0x8c, 0x78, 0x3f, 0x6f, 0x17, 0xfb, 0xc9, 0xd3, 0xbb, 0xb1, 0x3b, 0x0c, 0x78, 0xd3,
		0xb1, 0x00, 0x03, 0xde, 0x85, 0x5d, 0x66, 0x45, 0x1f, 0xef, 0xf6, 0xbd, 0x5b, 0x0c, 0x77, 0xe7,
		0xf5, 0x60, 0x45, 0x18, 0x06, 0x21, 0xb9, 0xe1, 0xee, 0x7b, 0x56, 0x61, 0xb8, 0x1b, 0xc3, 0xdd,
		0x2f, 0xe0, 0x05, 0xc3, 0xdd, 0x4f, 0xc3, 0x17, 0xc3, 0xdd, 0xaf, 0xa5, 0x32, 0x18, 0xee, 0xa6,
		0xc6, 0x2e, 0x31, 0xdc, 0xfd, 0xbc, 0xff, 0xc3, 0x70, 0x37, 0xfd, 0xc0, 0x49, 0x31, 0x80, 0x12,
		0x0e, 0xa4, 0x54, 0x03, 0x2a, 0xf9, 0xc0, 0x4a, 0x3e, 0xc0, 0xd2, 0x0e, 0xb4, 0x74, 0x0a, 0x4a,
		0x1a, 0x86, 0xbb, 0x9f, 0x36, 0x08, 0xc3, 0xdd, 0x6f, 0x0e, 0xcc, 0x68, 0xc3, 0xe4, 0x1b, 0xa8,
		0x19, 0x04, 0x6c, 0xea, 0x81, 0x9b, 0x4d, 0x00, 0x67, 0x13, 0xc8, 0x79, 0x04, 0x74, 0x5a, 0x81,
		0x9d, 0x58, 0x80, 0x4f, 0x1f, 0x21, 0x86, 0xbb, 0x97, 0x9a, 0x03, 0x63, 0xb8, 0xfb, 0xd5, 0x00,
		0xc4, 0x70, 0xf7, 0x32, 0x0d, 0xc5, 0x70, 0xf7, 0xfb, 0xc0, 0x88, 0xe1, 0xee, 0xe5, 0x98, 0x89,
		0xe1, 0x6e, 0x70, 0x95, 0x65, 0x63, 0x0a, 0xc3, 0xdd, 0xef, 0xb4, 0x10, 0xc3, 0xdd, 0xab, 0x35,
		0x11, 0xc3, 0xdd, 0x9c, 0x7c, 0x0a, 0x86, 0xbb, 0xdf, 0x93, 0xea, 0xa0, 0xaa, 0xf8, 0x8b, 0x86,
		0xa1, 0xaa, 0xf8, 0x2e, 0x13, 0x51, 0x55, 0x5c, 0x92, 0xa1, 0xa8, 0x2a, 0x82, 0xa9, 0x67, 0x96,
		0x47, 0x63, 0xb8, 0x7b, 0x49, 0x61, 0x16, 0xc3, 0xdd, 0xaf, 0x7d, 0x61, 0xb8, 0xfb, 0x7d, 0x46,
		0x62, 0xb8, 0x7b, 0x55, 0xae, 0x07, 0xc3, 0xdd, 0x4b, 0xa9, 0x61, 0x60, 0xb8, 0x1b, 0x6b, 0x08,
		0xc3, 0xdd, 0x05, 0xb1, 0x0a, 0xc3, 0xdd, 0x94, 0x2d, 0xc1, 0x70, 0xf7, 0xf3, 0x76, 0x31, 0x9f,
		0x3a, 0x9d, 0x1f, 0xbb, 0xc3, 0x70, 0x37, 0x1d, 0x0b, 0x30, 0xdc, 0x5d, 0xd8, 0x65, 0x56, 0xec,
		0xe1, 0x6e, 0x73, 0x7c, 0xa5, 0x18, 0xee, 0xce, 0xeb, 0xc1, 0x8a, 0x9b, 0xa1, 0x50, 0x91, 0xa0,
		0x37, 0xde, 0x7d, 0xdf, 0x2e, 0x0c, 0x78, 0x63, 0xc0, 0xfb, 0x05, 0xc4, 0x60, 0xc0, 0xfb, 0x69,
		0xf8, 0x62, 0xc0, 0xfb, 0xb5, 0x74, 0x06, 0x03, 0xde, 0xd4, 0x18, 0x26, 0x06, 0xbc, 0x9f, 0xf7,
		0x7f, 0x18, 0xf0, 0xa6, 0x1f, 0x38, 0x29, 0x06, 0x50, 0xc2, 0x81, 0x94, 0x6a, 0x40, 0x25, 0x1f,
		0x58, 0xc9, 0x07, 0x58, 0xda, 0x81, 0x96, 0x4e, 0x51, 0x49, 0xc3, 0x80, 0xf7, 0xd3, 0x06, 0x61,
		0xc0, 0xfb, 0xcd, 0x81, 0x19, 0xad, 0x98, 0x7c, 0x03, 0x35, 0x83, 0x80, 0x4d, 0x3d, 0x70, 0xb3,
		0x09, 0xe0, 0x6c, 0x02, 0x39, 0x8f, 0x80, 0x4e, 0x2b, 0xb0, 0x13, 0x0b, 0xf0, 0xe9, 0x23, 0xc4,
		0x80, 0xf7, 0x52, 0x73, 0x60, 0x0c, 0x78, 0xbf, 0x1a, 0x80, 0x18, 0xf0, 0x5e, 0xa6, 0xa1, 0x18,
		0xf0, 0x7e, 0x1f, 0x18, 0x31, 0xe0, 0xbd, 0x1c, 0x33, 0x31, 0xe0, 0x0d, 0xae, 0xb2, 0x6c, 0x4c,
		0x61, 0xc0, 0xfb, 0x9d, 0x16, 0x62, 0xc0, 0x7b, 0xb5, 0x26, 0x62, 0xc0, 0x9b, 0x93, 0x4f, 0xc1,
		0x80, 0xf7, 0x7b, 0x52, 0x1d, 0x54, 0x15, 0x7f, 0xd1, 0x30, 0x54, 0x15, 0xdf, 0x65, 0x22, 0xaa,
		0x8a, 0x4b, 0x32, 0x14, 0x55, 0x45, 0x30, 0xf5, 0xcc, 0xf2, 0x68, 0x0c, 0x78, 0x2f, 0x29, 0xcc,
		0x62, 0xc0, 0xfb, 0xb5, 0x2f, 0x0c, 0x78, 0xbf, 0xcf, 0x48, 0x0c, 0x78, 0xaf, 0xca, 0xf5, 0x60,
		0xc0, 0x7b, 0x29, 0x35, 0x0c, 0x0c, 0x78, 0x63, 0x0d, 0x61, 0xc0, 0xbb, 0x20, 0x56, 0x61, 0xc0,
		0x9b, 0xb2, 0x25, 0x18, 0xf0, 0x7e, 0xde, 0x2e, 0xee, 0x93, 0xa7, 0xf7, 0x06, 0xef, 0x30, 0xe2,
		0x4d, 0xc7, 0x02, 0x8c, 0x78, 0x17, 0x78, 0xa1, 0x15, 0x7c, 0xc8, 0x7b, 0x72, 0xad, 0x18, 0xf3,
		0xce, 0xeb, 0xd1, 0x0e, 0x69, 0x6c, 0x38, 0xa4, 0xa5, 0x36, 0x12, 0x65, 0x71, 0x22, 0xdb, 0x56,
		0x18, 0xeb, 0x7e, 0x0e, 0x29, 0x18, 0xeb, 0x7e, 0x1a, 0xbe, 0x18, 0xeb, 0x7e, 0x2d, 0x85, 0xc1,
		0x58, 0x37, 0x35, 0x56, 0x49, 0x66, 0x5b, 0x28, 0xf5, 0x38, 0xbe, 0xf0, 0xfa, 0xa1, 0xe8, 0x53,
		0xf0, 0x38, 0xb3, 0x16, 0xf2, 0x5d, 0x02, 0xb6, 0xb4, 0xa7, 0x44, 0x7b, 0x63, 0x63, 0x92, 0x14,
		0x4e, 0x79, 0x2c, 0xd8, 0x5c, 0x1e, 0x44, 0x9d, 0x82, 0x02, 0x01, 0x29, 0xe5, 0x01, 0x48, 0xf4,
		0x80, 0xcb, 0x81, 0xcb, 0x81, 0xcb, 0x81, 0xcb, 0xe5, 0xf8, 0x48, 0xc8, 0x48, 0xf4, 0x0c, 0x69,
		0xf5, 0x57, 0xd2, 0x2a, 0x7b, 0x10, 0x2b, 0x7f, 0x90, 0x0b, 0x9d, 0x14, 0x43, 0x28, 0xe1, 0x50,
		0x4a, 0x35, 0xa4, 0x92, 0x0f, 0xad, 0xe4, 0x43, 0x2c, 0xed, 0x50, 0x4b, 0x23, 0xe4, 0x12, 0x09,
		0xbd, 0xf4, 0xca, 0x29, 0x0b, 0x1e, 0x2b, 0xd9, 0x1a, 0x23, 0xb7, 0x00, 0xd3, 0xbc, 0xf1, 0x33,
		0x21, 0x9b, 0xda, 0x5e, 0x1c, 0x8b, 0x50, 0x91, 0x6b, 0xa7, 0x2d, 0xfd, 0xfe, 0xd7, 0xa6, 0xfe,
		0xe5, 0xec, 0x9f, 0xbf, 0x2a, 0xfa, 0x97, 0xb3, 0xc9, 0xb7, 0x95, 0xe4, 0xcb, 0xff, 0xb6, 0x7e,
		0xfe, 0xb3, 0xf5, 0xd7, 0xa6, 0x5e, 0x9d, 0xbe, 0xbb, 0xb5, 0xf3, 0xd7, 0xa6, 0xbe, 0x73, 0xf6,
		0xf1, 0xf7, 0xd3, 0xd3, 0x8d, 0xd7, 0xfe, 0xce, 0xc7, 0xff, 0x6d, 0xff, 0x2c, 0xa7, 0xbf, 0xb4,
		0x35, 0xfd, 0xd7, 0xed, 0xbf, 0x36, 0xf5, 0xad, 0xb3, 0x8f, 0x74, 0xdc, 0xce, 0x19, 0x25, 0xbc,
		0xb4, 0x3a, 0xd6, 0x0f, 0xb2, 0xa0, 0xf9, 0x7f, 0xbf, 0xe7, 0x0e, 0x9b, 0x8f, 0xff, 0x22, 0x04,
		0x1c, 0x34, 0xd3, 0x50, 0x89, 0x98, 0xa5, 0xd1, 0x50, 0xef, 0x05, 0xd7, 0x8a, 0x5e, 0xa2, 0x38,
		0x33, 0x0c, 0x99, 0x22, 0x32, 0x45, 0x64, 0x8a, 0xc8, 0x14, 0x91, 0x29, 0x22, 0x53, 0x5c, 0x9b,
		0x4c, 0xf1, 0x3c, 0x08, 0x7c, 0xe1, 0x29, 0x8a, 0x59, 0x62, 0x05, 0xe4, 0x8d, 0x80, 0x05, 0xe8,
		0x84, 0xbe, 0x6f, 0x0f, 0xf3, 0x4e, 0x68, 0x02, 0x33, 0x06, 0x39, 0xf6, 0x91, 0xfc, 0xb6, 0x46,
		0x2b, 0x68, 0xcc, 0xb0, 0x72, 0x67, 0x57, 0x34, 0x34, 0xc3, 0xe8, 0x68, 0x83, 0x91, 0xd6, 0x00,
		0x23, 0xa4, 0xf5, 0x45, 0x48, 0xd3, 0x2b, 0xaf, 0xe5, 0x4b, 0x24, 0xf0, 0x31, 0x0f, 0x78, 0xa5,
		0x5c, 0x5b, 0x07, 0x57, 0x34, 0xe3, 0x93, 0x4f, 0xfc, 0xce, 0x3e, 0x7a, 0x66, 0xfb, 0x89, 0x19,
		0x2f, 0xf4, 0xbc, 0x17, 0x38, 0xd7, 0x85, 0x9d, 0x2d, 0xf8, 0xb3, 0x83, 0x60, 0x36, 0x9f, 0x94,
		0x11, 0xc8, 0x4b, 0xe2, 0x26, 0x0e, 0x3d, 0x7d, 0x34, 0x46, 0xc7, 0xb9, 0x9f, 0x6d, 0xed, 0xa3,
		0x14, 0x8a, 0xbe, 0x08, 0x85, 0xea, 0x66, 0xaf, 0x91, 0x94, 0xc3, 0x2a, 0x9e, 0x15, 0x72, 0xec,
		0xc3, 0x83, 0x4a, 0xe5, 0xcb, 0xce, 0x9e, 0xd6, 0xea, 0x58, 0x9a, 0xd5, 0xb1, 0x3a, 0x5a, 0x3f,
		0x08, 0x35, 0xab, 0xad, 0x79, 0xaa, 0xa7, 0xd5, 0x47, 0x9e, 0xaf, 0x99, 0xea, 0x4a, 0x86, 0x81,
		0x4a, 0xb8, 0xe7, 0x86, 0x66, 0x1f, 0x1e, 0xec, 0x6c, 0x6f, 0x6e, 0xed, 0x9d, 0xaa, 0x7a, 0x70,
		0xe9, 0x49, 0xa5, 0xff, 0x47, 0xf6, 0x84, 0x36, 0x89, 0x2f, 0x5a, 0x5d, 0x46, 0x71, 0x28, 0xcf,
		0x47, 0x63, 0xe7, 0xa4, 0x5d, 0xcb, 0xf8, 0x42, 0x73, 0xae, 0x03, 0x3d, 0x89, 0x51, 0x9a, 0xd5,
		0xd1, 0xad, 0xce, 0x86, 0xe6, 0x34, 0x4e, 0x4e, 0x55, 0x65, 0xeb, 0x73, 0x0e, 0x01, 0x36, 0xef,
		0x9a, 0xf6, 0x7c, 0xed, 0xfa, 0x0e, 0x6b, 0x39, 0xd1, 0x44, 0x2a, 0x65, 0xea, 0x7b, 0xe5, 0xe8,
		0xdc, 0xc0, 0x58, 0x74, 0x8a, 0x92, 0xd9, 0xa7, 0x65, 0xd8, 0x72, 0x51, 0xba, 0xbe, 0x10, 0x6a,
		0x9d, 0x5c, 0x75, 0x3a, 0xd5, 0x15, 0xdf, 0x0e, 0x85, 0xf6, 0x87, 0xf6, 0x61, 0xba, 0x7b, 0xa3,
		0xfb, 0x51, 0xef, 0x5c, 0x1f, 0xbf, 0x19, 0xed, 0x59, 0xed, 0x93, 0xaa, 0x3b, 0x3b, 0x6b, 0xc0,
		0xb5, 0x4d, 0xe3, 0xe0, 0x9b, 0xb1, 0x6f, 0x35, 0x2c, 0xe7, 0xcf, 0x0f, 0x6b, 0xee, 0x71, 0x13,
		0xb4, 0xc0, 0xd9, 0xde, 0x39, 0xdb, 0xf7, 0xc2, 0xe9, 0xb7, 0x35, 0xa8, 0xa8, 0x94, 0xea, 0x22,
		0xea, 0x86, 0x72, 0x98, 0x6b, 0x39, 0x25, 0x75, 0x00, 0x96, 0xea, 0xfa, 0xa3, 0x9e, 0xd0, 0xac,
		0xf6, 0x55, 0x55, 0x9b, 0x65, 0x3b, 0xda, 0x7c, 0xb6, 0x33, 0x8e, 0x68, 0xda, 0x18, 0xe9, 0x5a,
		0x7c, 0x21, 0x26, 0xe1, 0x2d, 0x79, 0xba, 0x32, 0xd2, 0xa2, 0xa1, 0xe8, 0xca, 0xbe, 0x14, 0x3d,
		0xcd, 0x8b, 0xb4, 0xca, 0xd6, 0xe7, 0x8d, 0xbc, 0x16, 0x03, 0x81, 0xce, 0x82, 0x79, 0xbf, 0xd0,
		0x9b, 0x7b, 0xc2, 0x39, 0x16, 0x7d, 0x28, 0xb5, 0x0d, 0xdc, 0x73, 0x13, 0x4b, 0x06, 0x1d, 0x4a,
		0x50, 0xbc, 0xf9, 0x5d, 0xa1, 0xaa, 0x0d, 0x39, 0x95, 0xd2, 0x98, 0x95, 0xd0, 0x32, 0x74, 0x8b,
		0x2b, 0xa8, 0x7d, 0x67, 0xe3, 0x71, 0x56, 0xbf, 0x02, 0x33, 0x58, 0x13, 0x93, 0xf9, 0x8f, 0x28,
		0xf4, 0x33, 0x3c, 0xb2, 0xf9, 0xfe, 0xec, 0xc9, 0xe4, 0xb3, 0x33, 0x5a, 0xfd, 0xd9, 0xca, 0x11,
		0x64, 0xde, 0x11, 0x9b, 0x47, 0xc7, 0x6b, 0x8e, 0x1d, 0xad, 0x79, 0xf1, 0xca, 0xdc, 0x3b, 0x52,
		0x73, 0xa7, 0x8e, 0xf9, 0x76, 0x94, 0x16, 0x6b, 0xff, 0x23, 0xeb, 0xf1, 0xfc, 0x3b, 0xb7, 0x9b,
		0xfd, 0xc2, 0x59, 0xf0, 0xfc, 0x59, 0x2f, 0x9c, 0x7c, 0xf4, 0x68, 0x72, 0x1b, 0x8d, 0xc8, 0x73,
		0x04, 0x82, 0xc0, 0xa8, 0x03, 0xa5, 0x62, 0x64, 0xbe, 0xcd, 0x75, 0x24, 0xcb, 0x91, 0xb9, 0x8d,
		0x22, 0x14, 0xbb, 0x5b, 0x24, 0x2f, 0xbd, 0x97, 0xd2, 0x2c, 0x3d, 0xd5, 0xd5, 0xe8, 0xf2, 0x5c,
		0x84, 0xf9, 0x57, 0x4f, 0x1f, 0x1a, 0x94, 0x57, 0x7b, 0x6d, 0xae, 0x73, 0x7a, 0xb9, 0xcf, 0xe5,
		0x51, 0x98, 0xc3, 0x23, 0x34, 0x77, 0x47, 0x65, 0xce, 0x8e, 0xdc, 0x5c, 0x1d, 0xb9, 0x39, 0x3a,
		0x5a, 0x73, 0x73, 0xeb, 0x35, 0x92, 0x90, 0xfb, 0x1c, 0x1c, 0x21, 0xe1, 0x59, 0x0a, 0x82, 0xb3,
		0x8b, 0x42, 0xb3, 0x0f, 0x83, 0xeb, 0xba, 0x6c, 0xf3, 0xe4, 0x90, 0xc6, 0xe4, 0xab, 0x2c, 0x4b,
		0x42, 0x51, 0x36, 0x67, 0x25, 0x59, 0x90, 0x28, 0x90, 0x28, 0x90, 0x28, 0x90, 0x28, 0x5e, 0x24,
		0x2a, 0x6f, 0xe5, 0xd7, 0x52, 0xdf, 0xf7, 0x32, 0xdc, 0x58, 0x7c, 0xd1, 0x6f, 0x4d, 0xcc, 0xc1,
		0xf1, 0x36, 0x90, 0x44, 0x27, 0x1f, 0xe0, 0xa8, 0x05, 0x3a, 0xb2, 0x01, 0x8f, 0x6c, 0xe0, 0xa3,
		0x19, 0x00, 0xf3, 0x0d, 0x84, 0x39, 0x07, 0x44, 0x3a, 0xd5, 0x85, 0x05, 0x8f, 0x23, 0xd4, 0xe8,
		0x52, 0x84, 0x5e, 0xce, 0x3d, 0xa9, 0x0b, 0xd9, 0x56, 0x95, 0x80, 0x2d, 0xa6, 0x1a, 0x5d, 0xd2,
		0xf1, 0x7f, 0x4e, 0xd0, 0x89, 0x43, 0xa9, 0x06, 0xb4, 0x44, 0x9a, 0x36, 0x93, 0xde, 0xb9, 0xe3,
		0xa3, 0x7d, 0xd3, 0x36, 0xeb, 0x25, 0x28, 0x6a, 0xdd, 0x7b, 0x60, 0x56, 0xe2, 0x7b, 0x29, 0x49,
		0x6a, 0xcd, 0x1e, 0xd4, 0x9e, 0xb6, 0x09, 0xe9, 0x2a, 0xc4, 0x23, 0x1a, 0xda, 0x37, 0xa9, 0x35,
		0x64, 0x34, 0x70, 0xee, 0x2c, 0x22, 0xac, 0x85, 0x93, 0x1a, 0x49, 0x47, 0x13, 0x67, 0xd1, 0xa4,
		0xdc, 0xb5, 0x71, 0xf2, 0x5f, 0xe7, 0x79, 0x1e, 0x0d, 0x47, 0xa5, 0x33, 0x62, 0x81, 0x76, 0xd2,
		0xe8, 0x90, 0x40, 0x6d, 0x04, 0xb5, 0x11, 0xd4, 0x46, 0x50, 0x1b, 0x41, 0x6d, 0x04, 0xb5, 0x91,
		0x47, 0x3c, 0xce, 0x48, 0xaa, 0x78, 0x7b, 0x8b, 0x50, 0x59, 0x84, 0xc2, 0xc1, 0xbf, 0xb6, 0xa7,
		0x06, 0x82, 0xcc, 0xb1, 0x22, 0x84, 0x92, 0xeb, 0x23, 0xa9, 0xe8, 0x69, 0xd8, 0x9f, 0x78, 0xfe,
		0x48, 0xd0, 0x39, 0x1a, 0x21, 0xb5, 0xeb, 0x30, 0xf4, 0xba, 0xb1, 0x0c, 0x54, 0x5d, 0x0e, 0x24,
		0x95, 0x6c, 0xef, 0xbe, 0x0f, 0x10, 0x03, 0x2f, 0x96, 0x57, 0x82, 0x44, 0xf2, 0x42, 0xc8, 0x4d,
		0x3f, 0x4c, 0x8f, 0xe9, 0x42, 0xbe, 0xba, 0xf5, 0xa5, 0xfa, 0xa5, 0xb6, 0xbb, 0xf5, 0x65, 0x07,
		0xd8, 0x2f, 0x0a, 0xf6, 0x51, 0xb4, 0x4c, 0x5e, 0x67, 0x28, 0xa5, 0x64, 0x5f, 0x4a, 0x49, 0x45,
		0x0b, 0xfa, 0x5e, 0x57, 0xe8, 0x5e, 0xaf, 0x17, 0x8a, 0x88, 0x50, 0x8f, 0xc9, 0x13, 0xf6, 0xa1,
		0xb0, 0x82, 0xc2, 0x0a, 0x0a, 0x2b, 0x28, 0xac, 0xa0, 0xb0, 0x82, 0xc2, 0x0a, 0x19, 0x8f, 0x93,
		0xc4, 0x2a, 0x1a, 0x11, 0x4a, 0x23, 0x76, 0xea, 0x2f, 0xb9, 0xd3, 0x7e, 0x33, 0x3b, 0xe5, 0x37,
		0x7f, 0x37, 0x71, 0x46, 0xe1, 0xf1, 0x53, 0x3c, 0xbc, 0x37, 0xc3, 0x43, 0x7b, 0x29, 0x9c, 0xcd,
		0x8b, 0xf4, 0x2a, 0xa7, 0xf4, 0x4a, 0x09, 0x39, 0xb8, 0x38, 0x0f, 0x42, 0xa2, 0xd9, 0xd5, 0x82,
		0x79, 0x48, 0xae, 0x90, 0x5c, 0x21, 0xb9, 0x42, 0x72, 0x85, 0xe4, 0x0a, 0xc9, 0x15, 0x92, 0x2b,
		0x24, 0x57, 0x48, 0xae, 0x90, 0x5c, 0x21, 0xb9, 0x42, 0x72, 0x45, 0x2d, 0xb9, 0x1a, 0x46, 0x8a,
		0x5c, 0x07, 0xf0, 0x9c, 0x4d, 0x48, 0xa3, 0x90, 0x46, 0x21, 0x8d, 0x42, 0x1a, 0x85, 0x34, 0x0a,
		0x69, 0x14, 0x19, 0x8f, 0x33, 0x92, 0x2a, 0xfe, 0x4c, 0x28, 0x7f, 0xda, 0x41, 0xef, 0xef, 0x83,
		0x17, 0x7a, 0x7f, 0x9f, 0x37, 0x0a, 0xbd, 0xbf, 0x6f, 0x75, 0x01, 0xe8, 0xfd, 0xfd, 0x05, 0xc8,
		0x53, 0xee, 0xfd, 0xdd, 0xda, 0x41, 0xd3, 0x6f, 0x61, 0x40, 0x8f, 0xa6, 0x5f, 0x14, 0x4e, 0x72,
		0x5a, 0x14, 0x51, 0xe8, 0x0f, 0xf4, 0xab, 0xa9, 0x53, 0x21, 0x52, 0x38, 0x99, 0xb3, 0x09, 0x85,
		0x13, 0x14, 0x4e, 0x50, 0x38, 0x41, 0xe1, 0x04, 0x85, 0x13, 0x14, 0x4e, 0x48, 0x15, 0x4e, 0x30,
		0x35, 0x8d, 0xca, 0x09, 0x2a, 0x27, 0x48, 0x22, 0x51, 0x39, 0xe1, 0x56, 0x39, 0xc1, 0xd4, 0x34,
		0x0a, 0x28, 0x28, 0xa0, 0x14, 0x90, 0x28, 0x42, 0xea, 0xf1, 0x45, 0xaf, 0x0c, 0xa9, 0xc7, 0xf7,
		0x98, 0x04, 0xa9, 0xc7, 0x7c, 0x4b, 0x95, 0xb7, 0x51, 0x2c, 0x2e, 0x75, 0xd9, 0x23, 0x54, 0xa9,
		0x4c, 0x4d, 0x42, 0xa1, 0x12, 0x85, 0xca, 0x17, 0xc0, 0x82, 0x42, 0xe5, 0xd3, 0xf0, 0x45, 0xa1,
		0xf2, 0x95, 0x86, 0xa1, 0x50, 0x49, 0x8e, 0x7f, 0xd2, 0x2b, 0x54, 0x52, 0x09, 0x4f, 0x1a, 0xa6,
		0x64, 0x5e, 0x30, 0xe8, 0xaf, 0x4d, 0xfd, 0x8b, 0xa1, 0x1f, 0x7a, 0x7a, 0xff, 0xec, 0x7f, 0xd5,
		0x9f, 0xa7, 0xa7, 0x1b, 0x2f, 0xbc, 0x81, 0x69, 0x17, 0xc2, 0xd3, 0x2e, 0xaf, 0x7d, 0x98, 0x98,
		0x59, 0xc1, 0xa9, 0x85, 0xd9, 0x90, 0x06, 0xa5, 0x82, 0x78, 0x72, 0x12, 0x52, 0xae, 0x87, 0x17,
		0x46, 0xdd, 0x0b, 0x71, 0xe9, 0x0d, 0xa7, 0xe7, 0x1e, 0x97, 0x83, 0xa1, 0x50, 0xdd, 0x24, 0x73,
		0xd0, 0x95, 0x88, 0xaf, 0x83, 0xf0, 0x6f, 0x7d, 0xa6, 0x9e, 0x5f, 0x7e, 0xf8, 0x46, 0xb4, 0xf0,
		0x4e, 0x79, 0x18, 0x06, 0x71, 0xd0, 0x0d, 0xfc, 0x28, 0xfd, 0xae, 0x3c, 0xa6, 0x43, 0x65, 0x5f,
		0x5c, 0x09, 0x7f, 0xfa, 0xa5, 0xec, 0x4b, 0xf5, 0xb7, 0x9e, 0x1c, 0xb3, 0xab, 0xf7, 0xbc, 0xd8,
		0x3b, 0xf7, 0x22, 0x51, 0xf6, 0xa3, 0x61, 0x39, 0xf6, 0xaf, 0xa2, 0xf1, 0x1f, 0xe5, 0x64, 0xa8,
		0x34, 0x0a, 0xfd, 0x41, 0x74, 0xf7, 0xed, 0xe4, 0x3c, 0xe6, 0xb5, 0x39, 0x7f, 0xf9, 0xb7, 0x02,
		0xaf, 0x81, 0x71, 0x8a, 0x91, 0xff, 0xb1, 0x0c, 0xf9, 0xd6, 0x28, 0xf3, 0xaf, 0x49, 0x92, 0xac,
		0x41, 0x12, 0xa8, 0x39, 0x12, 0xa8, 0x31, 0x66, 0xbd, 0x1e, 0x73, 0x8e, 0x45, 0x6c, 0x62, 0x50,
		0x29, 0x97, 0x53, 0xf1, 0xc3, 0x51, 0x37, 0x56, 0xd3, 0x2c, 0xb2, 0x39, 0xb9, 0x58, 0x6b, 0x7a,
		0xad, 0x6e, 0x7b, 0x7a, 0x85, 0xae, 0x15, 0xc9, 0xc8, 0x6d, 0x8c, 0x2f, 0xcd, 0x6d, 0x44, 0x43,
		0xd7, 0xf1, 0xaf, 0x5c, 0x6b, 0x78, 0x55, 0xed, 0x8c, 0xad, 0xfe, 0xad, 0x98, 0x91, 0x2b, 0x9b,
		0x4f, 0xca, 0x68, 0x2d, 0x96, 0xc4, 0x4d, 0x1c, 0x7a, 0xfa, 0x68, 0xfc, 0x60, 0xcf, 0xfd, 0x6c,
		0x6b, 0x17, 0xa5, 0x50, 0xf4, 0x45, 0x28, 0x54, 0x37, 0xfb, 0x9e, 0xa1, 0x1c, 0x9c, 0xcd, 0xac,
		0x20, 0x63, 0x1f, 0x1e, 0xec, 0x6c, 0x6f, 0xee, 0xee, 0x69, 0x56, 0x47, 0xb7, 0x3a, 0x9a, 0x79,
		0x13, 0x0b, 0x15, 0xc9, 0x40, 0x45, 0x9a, 0x54, 0x5a, 0x67, 0x34, 0x1c, 0x06, 0x61, 0xac, 0x05,
		0x7d, 0xed, 0xab, 0x50, 0x22, 0xf4, 0x7c, 0xf9, 0x7f, 0xa2, 0x77, 0xaa, 0x8e, 0x46, 0x7e, 0x2c,
		0xf5, 0xd9, 0xaa, 0xd3, 0x1a, 0xde, 0xb9, 0xf0, 0xb5, 0xce, 0xb5, 0x8c, 0xbb, 0x17, 0x52, 0x0d,
		0xb4, 0xdf, 0xbf, 0x1e, 0xb5, 0x1b, 0x9d, 0x8f, 0x1b, 0x9a, 0xd3, 0x38, 0xd1, 0x2a, 0xdb, 0x9f,
		0x37, 0xf2, 0xf0, 0x18, 0x39, 0x17, 0x94, 0xe7, 0x0b, 0xc8, 0x77, 0xc0, 0xca, 0x29, 0xcb, 0xa2,
		0x52, 0x33, 0xbe, 0x57, 0x23, 0xce, 0x06, 0x79, 0x45, 0xcf, 0x59, 0x7e, 0x2b, 0x60, 0x75, 0xad,
		0x74, 0x7d, 0x21, 0xd4, 0x3a, 0x39, 0xe1, 0x8d, 0x8d, 0x49, 0x5e, 0x5f, 0x8e, 0x6f, 0x87, 0x42,
		0xfb, 0x43, 0xfb, 0x30, 0xdd, 0x3f, 0xd1, 0xfd, 0xa8, 0x77, 0xae, 0x8f, 0xdf, 0x8c, 0xf6, 0xac,
		0xf6, 0x49, 0xd5, 0xed, 0xd8, 0x8d, 0xaf, 0x1f, 0xd6, 0xdc, 0x9b, 0x26, 0xe0, 0x80, 0x23, 0xbd,
		0x73, 0xa4, 0xaf, 0x44, 0xcf, 0x6f, 0x6b, 0x50, 0x5b, 0x2c, 0xd5, 0x45, 0xd4, 0x0d, 0xe5, 0x30,
		0xd7, 0xc2, 0x62, 0xba, 0xbc, 0x2d, 0xd5, 0xf5, 0x47, 0x3d, 0xa1, 0xc5, 0x17, 0x42, 0xb3, 0xda,
		0x57, 0x55, 0x6d, 0xfc, 0x20, 0x92, 0x10, 0x15, 0x28, 0xff, 0x56, 0x1b, 0x03, 0x3a, 0xf9, 0xb7,
		0xf1, 0x3b, 0x32, 0xd2, 0xc6, 0x4f, 0xec, 0x54, 0xe5, 0xc4, 0x9b, 0x34, 0x22, 0x9b, 0xf1, 0xf3,
		0x2b, 0xbe, 0x37, 0xf7, 0x30, 0x73, 0xec, 0xf6, 0xa1, 0xb4, 0xf3, 0x7e, 0xcf, 0x01, 0xbc, 0x1d,
		0x5f, 0xa8, 0x23, 0xf3, 0xe6, 0x64, 0x85, 0xca, 0xfd, 0x73, 0xaa, 0xbf, 0x11, 0xaf, 0xbb, 0x65,
		0xb3, 0x46, 0x57, 0x8f, 0xd9, 0x0c, 0x50, 0x34, 0x91, 0x61, 0x8d, 0x85, 0x1e, 0x06, 0xa3, 0x58,
		0x84, 0x59, 0xf6, 0x65, 0xde, 0x57, 0x82, 0xbd, 0x67, 0x42, 0x46, 0xab, 0x67, 0xd6, 0xcc, 0x92,
		0xd1, 0xc7, 0x65, 0xdd, 0x57, 0x99, 0x47, 0xff, 0x64, 0x8e, 0x7d, 0x92, 0x79, 0x51, 0xb0, 0xdc,
		0xfb, 0x1e, 0x73, 0x67, 0x59, 0xf9, 0xf6, 0x31, 0x16, 0xab, 0x9a, 0x5f, 0x97, 0x61, 0xc6, 0xa1,
		0x3c, 0xe9, 0x8e, 0xc8, 0x7c, 0xd1, 0xa4, 0xdd, 0x8d, 0xc9, 0xc7, 0x67, 0xdd, 0x46, 0x90, 0xa9,
		0xe3, 0xcf, 0x2d, 0x00, 0xe4, 0x19, 0x08, 0x08, 0x04, 0x04, 0x8a, 0x95, 0xb8, 0x5c, 0x1b, 0xe3,
		0x69, 0xd6, 0xe2, 0x72, 0x6b, 0x7c, 0x2f, 0x76, 0xab, 0x54, 0xd6, 0x81, 0x24, 0xfd, 0xe0, 0xec,
		0x33, 0x89, 0x27, 0x7d, 0x4e, 0xd6, 0x19, 0xc5, 0x53, 0x81, 0x26, 0xa7, 0x41, 0xaa, 0xdc, 0x27,
		0xb9, 0x28, 0x4c, 0x70, 0x11, 0x9a, 0xdc, 0xa2, 0x32, 0xb1, 0x45, 0x6e, 0x52, 0x8b, 0xdc, 0x84,
		0x16, 0xad, 0xc9, 0xac, 0xf5, 0xea, 0x6f, 0xcf, 0x7d, 0x02, 0x8b, 0xda, 0x11, 0x45, 0x14, 0x86,
		0xae, 0xc8, 0x0c, 0x5b, 0xad, 0xc1, 0x51, 0x44, 0x67, 0x79, 0x3e, 0x66, 0x4a, 0xc3, 0x58, 0x6b,
		0x72, 0xe4, 0xd0, 0xd9, 0x5a, 0xb9, 0x77, 0x12, 0x02, 0x2f, 0x74, 0x84, 0x5d, 0x48, 0x0b, 0xba,
		0x10, 0x12, 0x72, 0x21, 0x24, 0xe0, 0x92, 0xd7, 0xca, 0xc9, 0xb1, 0xd1, 0x7b, 0x31, 0xc9, 0xcf,
		0xad, 0xf1, 0xfb, 0xe1, 0x8b, 0xd0, 0xa4, 0xfe, 0xa4, 0x3d, 0x77, 0xe7, 0x91, 0xf6, 0xdc, 0x7e,
		0x10, 0x6a, 0x4e, 0xe8, 0xf5, 0xfb, 0xb2, 0xab, 0x99, 0x6a, 0x20, 0x95, 0x10, 0xa1, 0x54, 0x83,
		0xa4, 0xe9, 0xf6, 0x54, 0x55, 0xb6, 0xab, 0x1b, 0x10, 0x14, 0x79, 0x36, 0x4d, 0xcd, 0xbb, 0x1f,
		0x9c, 0x7c, 0xc6, 0xfa, 0x68, 0xe6, 0xfa, 0x2e, 0x40, 0xae, 0xbb, 0x10, 0xc9, 0xba, 0xf1, 0x41,
		0xd4, 0xdf, 0x97, 0xbb, 0x0e, 0x31, 0x1a, 0xf9, 0x78, 0x8b, 0xd6, 0x7c, 0xa7, 0x4f, 0x1e, 0xb3,
		0xf9, 0x98, 0x33, 0x64, 0x47, 0x3f, 0x31, 0xdd, 0xf2, 0xd4, 0x7c, 0x82, 0x63, 0xba, 0x76, 0xeb,
		0xd8, 0x31, 0x6d, 0xd7, 0xaa, 0x63, 0xca, 0x05, 0x53, 0x2e, 0x6f, 0x9b, 0x72, 0xb9, 0x8f, 0x22,
		0x4c, 0xbb, 0x64, 0xbd, 0xdc, 0x17, 0xa6, 0x11, 0xe2, 0x29, 0x35, 0x17, 0x77, 0xd4, 0x5c, 0x9b,
		0x04, 0x4d, 0xcd, 0xaa, 0xa7, 0x63, 0x0a, 0xa7, 0xea, 0xb1, 0x39, 0x05, 0x2d, 0xc7, 0x74, 0x12,
		0x63, 0x30, 0xe4, 0x93, 0xc5, 0xe7, 0xc7, 0x60, 0xde, 0x0f, 0x3c, 0x24, 0x2f, 0xac, 0x3f, 0x0d,
		0xf3, 0x31, 0x6b, 0x93, 0x7c, 0x65, 0xd9, 0x9b, 0xff, 0x3e, 0x31, 0x1a, 0x47, 0xd8, 0x89, 0xd1,
		0x56, 0x0f, 0xa3, 0x3d, 0xbf, 0x7e, 0xcf, 0xe5, 0xf0, 0xaa, 0xa6, 0x4b, 0x15, 0x8b, 0xb0, 0xef,
		0x75, 0xc5, 0xac, 0x91, 0x41, 0x44, 0xb9, 0x4c, 0xf8, 0x3c, 0x6e, 0x09, 0x06, 0x7d, 0x96, 0xf2,
		0x81, 0x18, 0xf4, 0xc9, 0x9a, 0x58, 0x62, 0xd0, 0x07, 0x83, 0x3e, 0xef, 0x4c, 0x40, 0x31, 0xe8,
		0x53, 0x34, 0xc7, 0x9f, 0x5b, 0x00, 0xc8, 0x33, 0x10, 0x10, 0x08, 0x08, 0x54, 0xaa, 0x0f, 0x18,
		0xf4, 0xa1, 0x15, 0x30, 0x72, 0xca, 0xd5, 0xd7, 0x65, 0xd0, 0x67, 0xd6, 0x19, 0x9d, 0x7b, 0xf9,
		0x34, 0xdf, 0x16, 0x6d, 0x0c, 0xf9, 0x60, 0xc8, 0x87, 0x50, 0x10, 0x22, 0x17, 0x8c, 0xc8, 0x05,
		0x25, 0x5a, 0xc1, 0x29, 0x9f, 0x20, 0x95, 0x53, 0xb0, 0x4a, 0x6f, 0x3d, 0xa9, 0x21, 0x9f, 0x1a,
		0x86, 0x7c, 0xa6, 0x9e, 0x9c, 0xcc, 0x90, 0x4f, 0x32, 0xc3, 0xe1, 0xe9, 0x7d, 0x43, 0x3f, 0x3c,
		0xfb, 0x5f, 0xe5, 0x53, 0xf5, 0xe7, 0xde, 0xc7, 0xff, 0xed, 0xfe, 0x7c, 0xf8, 0xe6, 0x3f, 0x8f,
		0xfd, 0x58, 0xe5, 0xd3, 0xee, 0xcf, 0xbd, 0x27, 0xfe, 0xa5, 0xf6, 0x73, 0xef, 0x17, 0xff, 0x8f,
		0x9d, 0x9f, 0xbf, 0x2f, 0xfc, 0xe8, 0xf8, 0xfd, 0xad, 0xa7, 0x7e, 0xa1, 0xfa, 0xc4, 0x2f, 0x6c,
		0x3f, 0xf5, 0x0b, 0xdb, 0x4f, 0xfc, 0xc2, 0x93, 0x26, 0x6d, 0x3d, 0xf1, 0x0b, 0x3b, 0x3f, 0xff,
		0x59, 0xf8, 0xf9, 0xdf, 0x1f, 0xff, 0xd1, 0xda, 0xcf, 0x8f, 0xff, 0x3c, 0xf5, 0x6f, 0xbb, 0x3f,
		0xff, 0xd9, 0xfb, 0xf8, 0x11, 0x63, 0x4f, 0x64, 0xc6, 0x9e, 0x00, 0xff, 0xec, 0xe1, 0x8f, 0x31,
		0xb0, 0x8c, 0x30, 0x8e, 0x31, 0xb0, 0x07, 0x96, 0x60, 0x0c, 0xec, 0x75, 0xa6, 0x60, 0x0c, 0x0c,
		0x63, 0x60, 0x73, 0x2f, 0x72, 0x63, 0x60, 0x9f, 0xf7, 0x34, 0x3b, 0x18, 0xc5, 0x52, 0x0d, 0x34,
		0xab, 0x7d, 0x55, 0xd3, 0xae, 0x65, 0x7c, 0x31, 0x99, 0xc3, 0x99, 0x1c, 0xb5, 0xb0, 0xb5, 0xbd,
		0x85, 0xa1, 0xaf, 0xe7, 0xcb, 0x16, 0x18, 0xfa, 0x7a, 0x4b, 0x25, 0xe3, 0x15, 0xf0, 0xc3, 0x88,
		0xd7, 0x7a, 0x71, 0x3d, 0xec, 0xbc, 0x2c, 0x77, 0xd5, 0x61, 0xc4, 0xeb, 0xb1, 0x2e, 0xc3, 0x47,
		0x5b, 0xbd, 0x30, 0xe9, 0xc5, 0x06, 0xdf, 0x98, 0xf4, 0xca, 0x90, 0x2c, 0xfe, 0xe2, 0x8c, 0x4e,
		0xcd, 0xb5, 0x9a, 0x8e, 0x69, 0x1f, 0x1a, 0x07, 0xa6, 0x6b, 0xd4, 0xeb, 0xb6, 0xd9, 0xe9, 0x98,
		0x1d, 0x0c, 0x7c, 0x61, 0xe0, 0xeb, 0x2d, 0x03, 0x5f, 0x4f, 0x80, 0x09, 0x73, 0x5f, 0x59, 0x2f,
		0xfe, 0x07, 0xe3, 0x37, 0x35, 0x2d, 0x0d, 0x9c, 0x5a, 0x1a, 0x38, 0x17, 0x0f, 0xa5, 0x39, 0x55,
		0xf3, 0x43, 0x37, 0x39, 0xe6, 0x91, 0x98, 0xf6, 0x22, 0x9f, 0x25, 0x3e, 0x37, 0xed, 0xf5, 0x76,
		0xb8, 0x21, 0x7b, 0x61, 0xfd, 0x69, 0x98, 0xf1, 0x5a, 0xb7, 0xec, 0x8b, 0xcd, 0xa8, 0x57, 0xcd,
		0x9a, 0x19, 0x6f, 0xa4, 0xb6, 0x63, 0xe4, 0xeb, 0x97, 0xef, 0x7d, 0xf2, 0xfc, 0x43, 0xe1, 0x75,
		0x2f, 0xbc, 0x73, 0xe9, 0xcb, 0xf8, 0x36, 0xa7, 0x59, 0xaf, 0x7b, 0x26, 0x60, 0xc8, 0x6b, 0x29,
		0x1f, 0x88, 0x21, 0xaf, 0xac, 0xf9, 0x24, 0x86, 0xbc, 0x30, 0xe4, 0xf5, 0xce, 0x6c, 0x33, 0xeb,
		0x21, 0xaf, 0x09, 0x64, 0x45, 0x94, 0xdf, 0x9c, 0x57, 0x6a, 0x01, 0x46, 0xbd, 0x8a, 0x16, 0x0e,
		0x08, 0x84, 0x05, 0x2a, 0xa5, 0x07, 0x8c, 0x7a, 0xd1, 0x0a, 0x1b, 0x39, 0xa5, 0xec, 0xeb, 0x32,
		0xea, 0x35, 0xcc, 0x77, 0xc4, 0xe7, 0x41, 0x70, 0xc9, 0x79, 0xd0, 0xab, 0x82, 0x41, 0x2f, 0x0c,
		0x7a, 0x61, 0xd0, 0x8b, 0x7e, 0x48, 0xa2, 0x15, 0x9a, 0xf2, 0x09, 0x51, 0x39, 0x85, 0xaa, 0xdc,
		0x43, 0x16, 0x95, 0xd0, 0x45, 0x2b, 0x84, 0x3d, 0x0c, 0x65, 0x9b, 0x39, 0x9b, 0x91, 0x77, 0x48,
		0xa3, 0x14, 0xda, 0x08, 0x86, 0x38, 0x6a, 0xa1, 0x8e, 0x6c, 0xc8, 0x23, 0x1b, 0xfa, 0x68, 0x86,
		0xc0, 0x7c, 0x43, 0x61, 0xce, 0x21, 0x31, 0x7d, 0x24, 0xb9, 0xcf, 0x40, 0x2f, 0x78, 0x1c, 0x5f,
		0x78, 0xfd, 0x50, 0xf4, 0x29, 0x78, 0x9c, 0x59, 0xae, 0xb5, 0x4b, 0xc0, 0x96, 0xf6, 0x74, 0x8f,
		0x37, 0x6d, 0xaf, 0x9a, 0xfa, 0x9c, 0x35, 0x6d, 0x5e, 0xcf, 0x71, 0xdd, 0xe4, 0x24, 0x62, 0xf6,
		0xe4, 0x82, 0xc9, 0x43, 0xd4, 0x8c, 0x58, 0x59, 0x02, 0x5c, 0x0e, 0x5c, 0x0e, 0x5c, 0x0e, 0x5c,
		0x6e, 0xbd, 0xb9, 0x5c, 0xde, 0x65, 0x8e, 0xd4, 0x90, 0x4b, 0x11, 0x87, 0xb2, 0x4b, 0x67, 0x75,
		0xcf, 0x1c, 0xe0, 0xd4, 0x2e, 0x22, 0x2b, 0x88, 0x46, 0xf9, 0x83, 0x5c, 0xe8, 0xa4, 0x18, 0x42,
		0x09, 0x87, 0x52, 0xaa, 0x21, 0x95, 0x7c, 0x68, 0x25, 0x1f, 0x62, 0x69, 0x87, 0x5a, 0x1a, 0x21,
		0x97, 0x48, 0xe8, 0xa5, 0x57, 0x4e, 0x59, 0xf0, 0x58, 0xd7, 0xb2, 0x27, 0x74, 0x52, 0x01, 0x70,
		0x3e, 0x08, 0xee, 0x12, 0x32, 0xc9, 0xf6, 0xd4, 0x20, 0x7f, 0x2d, 0x91, 0x87, 0x2f, 0x5a, 0x5e,
		0x5d, 0x9b, 0x0a, 0x17, 0x91, 0x0b, 0x37, 0xa9, 0x71, 0x27, 0x9e, 0x3f, 0x12, 0xf9, 0x57, 0x24,
		0x9e, 0xb4, 0xef, 0x30, 0xf4, 0xba, 0xb1, 0x0c, 0x54, 0x5d, 0x0e, 0x64, 0xde, 0xc2, 0x4f, 0xcf,
		0x3b, 0x10, 0x31, 0xf0, 0x62, 0x79, 0x25, 0x72, 0xd5, 0x39, 0x62, 0xe0, 0xfb, 0xef, 0x2f, 0x0d,
		0xef, 0x86, 0xc1, 0xd2, 0xa8, 0xed, 0xee, 0xee, 0x6e, 0xe5, 0x29, 0xea, 0x85, 0x15, 0xb2, 0x46,
		0x1c, 0x8d, 0x9e, 0x35, 0x67, 0xbf, 0xe1, 0x7e, 0x10, 0xf1, 0xa0, 0x54, 0x5a, 0x64, 0x16, 0x78,
		0x33, 0xad, 0x72, 0x30, 0x6a, 0x46, 0xcf, 0x1b, 0x84, 0x9a, 0xd1, 0xab, 0x4c, 0x43, 0xcd, 0xe8,
		0x8d, 0x06, 0xa2, 0x66, 0xc4, 0x9f, 0x01, 0xa0, 0x66, 0xf4, 0x92, 0xc7, 0x4a, 0xc6, 0xa8, 0xc9,
		0x2d, 0x40, 0x0a, 0xa7, 0x14, 0x2c, 0x06, 0x1e, 0x22, 0xba, 0xed, 0x0b, 0x86, 0x41, 0xc6, 0x3d,
		0x2f, 0x19, 0xf7, 0xf2, 0xef, 0x95, 0xad, 0xbf, 0x36, 0xf5, 0xcf, 0x67, 0xff, 0x54, 0xfe, 0xda,
		0xd4, 0x2b, 0x67, 0xe3, 0x9f, 0x3c, 0xfb, 0xe7, 0xaf, 0x8a, 0xfe, 0x65, 0xf6, 0xed, 0xf8, 0xcf,
		0x8f, 0x74, 0xdc, 0xf2, 0x19, 0xa5, 0xf5, 0x44, 0xe9, 0x30, 0x84, 0x05, 0xeb, 0x70, 0x38, 0x02,
		0xf5, 0x55, 0xf5, 0xaf, 0x12, 0xaa, 0x0c, 0xa8, 0x32, 0x2c, 0x2c, 0xdc, 0x48, 0x3f, 0x97, 0x31,
		0xbd, 0x22, 0xc3, 0xc4, 0x2c, 0xd4, 0x18, 0x50, 0x63, 0x40, 0x8d, 0x01, 0x35, 0x06, 0xd4, 0x18,
		0x50, 0x63, 0x58, 0x9b, 0x1a, 0xc3, 0x79, 0x10, 0xf8, 0xc2, 0x53, 0x14, 0xeb, 0x0b, 0x15, 0x10,
		0x37, 0x32, 0xc4, 0x6d, 0x34, 0xd4, 0x7b, 0xc1, 0xb5, 0xa2, 0x47, 0xdd, 0x66, 0x86, 0x81, 0xbc,
		0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc,
		0xdd, 0x3d, 0x93, 0x1b, 0x9a, 0x55, 0xb7, 0x1b, 0x54, 0xdd, 0x40, 0xdc, 0x40, 0xdc, 0x40, 0xdc,
		0x40, 0xdc, 0x40, 0xdc, 0x40, 0xdc, 0x40, 0xdc, 0x68, 0x11, 0xb7, 0xb5, 0xd6, 0x32, 0xc8, 0xf9,
		0x58, 0xd3, 0x05, 0x7b, 0xc8, 0x1e, 0xb4, 0x33, 0x7f, 0xca, 0x49, 0x79, 0xa6, 0x7b, 0x3f, 0xfd,
		0x26, 0x8f, 0xf3, 0x4e, 0xe9, 0xc0, 0x38, 0x57, 0x89, 0xa8, 0xd1, 0xf9, 0xf8, 0x31, 0x11, 0x12,
		0x89, 0x9a, 0x1a, 0x04, 0x99, 0x28, 0xc8, 0x44, 0xb1, 0xc9, 0x66, 0x20, 0x13, 0xc5, 0x3d, 0x6b,
		0x81, 0x4c, 0x14, 0x3d, 0x6a, 0x45, 0x46, 0x26, 0x6a, 0x12, 0x93, 0x08, 0x76, 0xe3, 0x4d, 0xec,
		0xa2, 0x55, 0x18, 0xac, 0xa0, 0x30, 0x48, 0x3e, 0x84, 0x12, 0x0e, 0xa5, 0x54, 0x43, 0x2a, 0xf9,
		0xd0, 0x4a, 0x3e, 0xc4, 0xd2, 0x0e, 0xb5, 0x74, 0xea, 0x29, 0x1a, 0xa1, 0xc2, 0x20, 0x95, 0x10,
		0x9c, 0x1a, 0xd4, 0xf7, 0xbd, 0x41, 0x44, 0xcf, 0x29, 0xcc, 0xfc, 0xe8, 0xc4, 0x3c, 0x62, 0xeb,
		0x8d, 0x56, 0x60, 0x26, 0x1b, 0xa0, 0x29, 0x07, 0x6a, 0x06, 0x01, 0x9b, 0x7a, 0xe0, 0x66, 0x13,
		0xc0, 0xd9, 0x04, 0x72, 0x1e, 0x01, 0x9d, 0x56, 0x60, 0x27, 0x16, 0xe0, 0xc9, 0x06, 0xfa, 0xbb,
		0xdc, 0x9b, 0xc4, 0x19, 0x06, 0x2f, 0xa7, 0xe2, 0x04, 0xce, 0x36, 0x60, 0x46, 0x00, 0xc8, 0x13,
		0x01, 0x0e, 0x84, 0x80, 0x11, 0x31, 0xe0, 0x42, 0x10, 0xd8, 0x11, 0x05, 0x76, 0x84, 0x81, 0x17,
		0x71, 0xa0, 0x49, 0x20, 0x88, 0x12, 0x09, 0xf2, 0x84, 0x82, 0x78, 0x25, 0x81, 0x55, 0x65, 0xe1,
		0x29, 0xa2, 0xb1, 0x49, 0xdc, 0x4c, 0xea, 0x84, 0x83, 0x13, 0xf1, 0x60, 0x48, 0x40, 0xb8, 0x11,
		0x11, 0xb6, 0x84, 0x84, 0x2d, 0x31, 0xe1, 0x49, 0x50, 0x68, 0x13, 0x15, 0xe2, 0x84, 0x25, 0x7d,
		0xe4, 0xe4, 0x7a, 0xa1, 0x5f, 0xf4, 0xb8, 0x42, 0x8d, 0x2e, 0x45, 0x38, 0xe9, 0x41, 0x65, 0xe0,
		0x75, 0x67, 0xd5, 0x88, 0x2a, 0x03, 0x5b, 0x4d, 0x35, 0xba, 0xe4, 0x13, 0x1f, 0x9c, 0xa0, 0x13,
		0x87, 0x52, 0x0d, 0xd8, 0x58, 0x9c, 0x58, 0xbd, 0x39, 0xc6, 0xb0, 0xf9, 0xc3, 0x31, 0xed, 0xa6,
		0xd1, 0x70, 0x0f, 0x1b, 0xc6, 0x57, 0x26, 0x61, 0x2d, 0xb1, 0xbe, 0x32, 0xb6, 0xde, 0x36, 0x8d,
		0xfa, 0x89, 0x69, 0x3b, 0x56, 0xc7, 0x3c, 0x32, 0x9b, 0x0e, 0xbb, 0x8b, 0xd8, 0x1a, 0x5f, 0x44,
		0xb3, 0x55, 0x37, 0x27, 0x96, 0xb3, 0x30, 0xfc, 0xe7, 0x27, 0x2e, 0x8b, 0xd2, 0x52, 0x31, 0xaf,
		0x15, 0x79, 0x7f, 0x31, 0x92, 0x4f, 0x93, 0xee, 0x07, 0xc5, 0x14, 0xc5, 0x7b, 0xda, 0x16, 0x23,
		0xbb, 0x1f, 0x75, 0x21, 0x7b, 0x5a, 0x85, 0xc7, 0x5a, 0x04, 0x27, 0x2e, 0x34, 0x27, 0x6e, 0xc8,
		0x28, 0x36, 0xe2, 0x38, 0xe4, 0xc1, 0x8b, 0x8f, 0xa4, 0x32, 0x7d, 0x31, 0x4e, 0xdb, 0x22, 0x1e,
		0xce, 0xab, 0x74, 0xe4, 0xdd, 0xcc, 0x59, 0x5c, 0xf9, 0x5c, 0xad, 0xd6, 0x76, 0xab, 0xd5, 0xcd,
		0xdd, 0xed, 0xdd, 0xcd, 0x2f, 0x3b, 0x3b, 0x95, 0x1a, 0xd5, 0xa3, 0x8f, 0xee, 0x5d, 0x44, 0x2b,
		0xec, 0x89, 0x50, 0xf4, 0xf6, 0x6f, 0x4b, 0x7b, 0x9a, 0x1a, 0xf9, 0x3e, 0x27, 0x93, 0x8f, 0x23,
		0x11, 0x92, 0x3d, 0x15, 0x89, 0x93, 0xa7, 0x10, 0x37, 0x71, 0xe8, 0xe9, 0x23, 0x15, 0xc5, 0xde,
		0xb9, 0xcf, 0x24, 0x8f, 0x0e, 0x45, 0x5f, 0x84, 0x42, 0x75, 0xe9, 0x9d, 0xa5, 0xf8, 0xd4, 0x8b,
		0x11, 0x97, 0x9c, 0x15, 0x29, 0xec, 0xc3, 0x83, 0xdd, 0xdd, 0x2f, 0xd5, 0x3d, 0xcd, 0xea, 0xe8,
		0x56, 0x47, 0x9b, 0x54, 0xb6, 0xb5, 0x71, 0x50, 0x91, 0xe7, 0xa3, 0x58, 0x44, 0x5a, 0x3f, 0x08,
		0x35, 0xf3, 0x26, 0x16, 0xaa, 0x27, 0x7a, 0x9a, 0xd5, 0xbe, 0xaa, 0x6a, 0x9e, 0xea, 0x9d, 0x2a,
		0xab, 0x7d, 0x55, 0xd3, 0xec, 0xb9, 0xd9, 0xd1, 0x0d, 0x2d, 0x1a, 0x9d, 0xeb, 0x4e, 0xe3, 0x44,
		0xab, 0x6e, 0x70, 0xca, 0xb1, 0x98, 0x15, 0x9b, 0xef, 0xca, 0x35, 0x77, 0x45, 0xe7, 0xbb, 0x85,
		0xf2, 0x89, 0xd7, 0x35, 0x70, 0xad, 0x3f, 0xa7, 0x17, 0x30, 0x5f, 0x87, 0x5e, 0xcd, 0x4a, 0x62,
		0x73, 0x3f, 0x7e, 0x22, 0x23, 0x5a, 0xca, 0xeb, 0xec, 0x37, 0xdc, 0xbf, 0x82, 0x31, 0xb0, 0x52,
		0xcc, 0x61, 0xef, 0x22, 0xa5, 0x04, 0x89, 0xb5, 0xe8, 0x68, 0x58, 0x86, 0x99, 0xe8, 0x68, 0x58,
		0x21, 0x4e, 0xd1, 0xd1, 0x90, 0x05, 0xb9, 0x44, 0x47, 0x43, 0xe6, 0x4c, 0x12, 0x1d, 0x0d, 0x6b,
		0x51, 0x93, 0xe1, 0xd7, 0xd1, 0x20, 0x7b, 0x42, 0xc5, 0x32, 0xbe, 0x0d, 0x45, 0x9f, 0x53, 0x47,
		0x03, 0x87, 0x2a, 0xad, 0x35, 0xbd, 0xb5, 0xfb, 0x5e, 0xc4, 0x28, 0x4e, 0xcc, 0x80, 0x61, 0x75,
		0xac, 0x8e, 0xdb, 0x39, 0xde, 0x77, 0x1a, 0x27, 0xae, 0xf3, 0x67, 0xdb, 0xe4, 0x12, 0x2e, 0x4e,
		0x3c, 0x7f, 0x24, 0x22, 0x36, 0xf5, 0x45, 0x8d, 0x55, 0x8d, 0xf1, 0x3e, 0x42, 0xda, 0xae, 0x6d,
		0x1a, 0x07, 0xdf, 0x8c, 0x7d, 0xab, 0x61, 0x39, 0x7f, 0xba, 0x56, 0xfb, 0xa4, 0xea, 0xda, 0xad,
		0x63, 0xc7, 0xb4, 0x5d, 0xab, 0xce, 0xa8, 0xcc, 0xf1, 0x09, 0x48, 0xc9, 0x1c, 0x29, 0x35, 0x20,
		0x05, 0x48, 0x79, 0x19, 0x29, 0x6d, 0xdb, 0x3c, 0xb4, 0x7e, 0x24, 0x2d, 0x1a, 0x1d, 0xe0, 0x04,
		0x38, 0x79, 0x01, 0x27, 0x1d, 0x78, 0x13, 0xa0, 0xe4, 0x69, 0x94, 0x4c, 0xe8, 0x6c, 0x87, 0x13,
		0x9f, 0xe5, 0xcc, 0x6b, 0x79, 0xa2, 0xa7, 0xb0, 0x3c, 0x97, 0xa1, 0xdf, 0x29, 0x2e, 0x82, 0x6a,
		0x40, 0x10, 0x10, 0xb4, 0x6e, 0xbc, 0x18, 0xf8, 0x01, 0x5f, 0x06, 0x7a, 0xf8, 0xa3, 0xc7, 0xe1,
		0x32, 0xb9, 0x04, 0xd8, 0x10, 0x83, 0x4d, 0xad, 0xca, 0x10, 0x38, 0xac, 0x2c, 0x3e, 0x43, 0xfd,
		0x03, 0xf5, 0x8f, 0x22, 0xf8, 0x6d, 0xc0, 0x03, 0xfe, 0x19, 0x00, 0xc9, 0x17, 0x20, 0x9d, 0xfb,
		0x00, 0x31, 0xea, 0xff, 0x76, 0x1b, 0x46, 0x13, 0x65, 0x76, 0xc0, 0xe4, 0x25, 0x98, 0x00, 0x22,
		0x80, 0xc8, 0xb3, 0x10, 0x39, 0xb2, 0x9a, 0xee, 0x57, 0xbb, 0x75, 0xdc, 0x06, 0x4c, 0x00, 0x93,
		0x27, 0x61, 0x72, 0x62, 0x58, 0x0d, 0x63, 0xbf, 0x61, 0xba, 0xfb, 0x46, 0xb3, 0xfe, 0x1f, 0xab,
		0xee, 0x7c, 0x03, 0x5c, 0x00, 0x97, 0xa7, 0xe0, 0x92, 0x82, 0xc4, 0x3d, 0x68, 0x35, 0x3b, 0x8e,
		0x6d, 0x58, 0x4d, 0x07, 0x6d, 0x23, 0x00, 0xcc, 0x93, 0x80, 0x31, 0x7f, 0x38, 0x66, 0xb3, 0x6e,
		0xd6, 0x11, 0x8f, 0x80, 0x97, 0x5f, 0xc1, 0x4b, 0xb2, 0xf5, 0x6f, 0x35, 0x1d, 0xd3, 0x3e, 0x34,
		0x0e, 0x4c, 0xd7, 0xa8, 0xd7, 0x6d, 0xb3, 0x03, 0x0f, 0x03, 0xc4, 0x3c, 0x8f, 0x98, 0xa6, 0x69,
		0x7d, 0xfd, 0xb6, 0xdf, 0xb2, 0x01, 0x18, 0x00, 0xe6, 0x17, 0x00, 0x53, 0x83, 0x8b, 0x01, 0x62,
		0x5e, 0x89, 0x18, 0xb8, 0x18, 0x00, 0xe6, 0x57, 0x01, 0xd3, 0xb0, 0x9a, 0xdf, 0x5d, 0xc3, 0x71,
		0x6c, 0x6b, 0xff, 0xd8, 0x31, 0x01, 0x15, 0x40, 0xe5, 0x79, 0xa8, 0xd4, 0xcd, 0x86, 0xf1, 0x27,
		0x50, 0x02, 0x94, 0xbc, 0x8c, 0x12, 0xf7, 0xc4, 0xb0, 0x2d, 0xc3, 0xb1, 0x5a, 0x4d, 0xe0, 0x05,
		0x78, 0x79, 0x16, 0x2f, 0xd8, 0x20, 0x02, 0x44, 0x5e, 0x80, 0x48, 0xa3, 0x05, 0x22, 0x0b, 0x90,
		0xbc, 0x00, 0x92, 0xb6, 0xdd, 0x72, 0xcc, 0x83, 0x71, 0xc8, 0x99, 0xcc, 0x75, 0x01, 0x2f, 0xc0,
		0xcb, 0x13, 0x78, 0x39, 0x32, 0x7e, 0x4c, 0x30, 0x83, 0xdd, 0x44, 0xa0, 0xe5, 0x97, 0xd0, 0x62,
		0x9b, 0x1d, 0xd3, 0x3e, 0xc1, 0x0e, 0x34, 0x30, 0xf3, 0x8b, 0x98, 0xb1, 0x9a, 0x77, 0x5e, 0x06,
		0x79, 0x33, 0xd0, 0xf2, 0x2c, 0x5a, 0x6c, 0xb3, 0x63, 0xd5, 0x8f, 0x8d, 0x06, 0x7c, 0x0b, 0xd0,
		0xf2, 0x32, 0x5a, 0xa0, 0x5e, 0x00, 0xf4, 0xbc, 0x1f, 0x45, 0x2c, 0x7b, 0xb8, 0x19, 0x3a, 0x9d,
		0x02, 0xc3, 0x07, 0xd0, 0x01, 0x74, 0xde, 0x04, 0x1d, 0x86, 0x3d, 0x76, 0x80, 0x0f, 0x19, 0xf8,
		0x70, 0xee, 0x05, 0x07, 0x8c, 0xa8, 0xc0, 0x88, 0x79, 0x8f, 0x38, 0x80, 0x44, 0x05, 0x48, 0xbc,
		0x7b, 0xc7, 0x81, 0x23, 0x2a, 0x38, 0xe2, 0xde, 0x53, 0x0e, 0x24, 0x91, 0x42, 0x12, 0xdf, 0x46,
		0x50, 0x00, 0x89, 0x10, 0x90, 0x6a, 0x70, 0x49, 0x40, 0xd2, 0x92, 0x90, 0x04, 0x97, 0x04, 0x20,
		0xbd, 0x17, 0x48, 0x6c, 0x7b, 0xd6, 0x01, 0x21, 0x52, 0x10, 0x62, 0xb6, 0x27, 0x0f, 0xf4, 0xd0,
		0x43, 0x0f, 0xc7, 0x1e, 0x77, 0xe0, 0x88, 0x14, 0x8e, 0xb0, 0x81, 0x06, 0xe8, 0xbc, 0x11, 0x3a,
		0xbc, 0x7a, 0xe2, 0x01, 0x1e, 0x52, 0xe0, 0x61, 0xdb, 0x2b, 0x0f, 0x1c, 0x51, 0xc1, 0x11, 0xe7,
		0x1e, 0x7a, 0xa0, 0x88, 0x12, 0x8a, 0x78, 0xf7, 0xd6, 0x03, 0x4b, 0x64, 0xb0, 0xc4, 0xb8, 0xe7,
		0x1e, 0x28, 0xa2, 0x82, 0x22, 0xce, 0xbd, 0xf8, 0x40, 0x11, 0x15, 0x14, 0x39, 0xa6, 0x5b, 0x37,
		0x0f, 0x8d, 0xe3, 0x86, 0xe3, 0x1e, 0x99, 0x8e, 0x6d, 0x1d, 0x00, 0x44, 0x00, 0xd1, 0x6b, 0x41,
		0x74, 0xdc, 0x4c, 0x5b, 0xd3, 0xcc, 0xba, 0xdb, 0xe8, 0xa0, 0xad, 0x08, 0x20, 0x7a, 0x03, 0x88,
		0x26, 0xfc, 0xda, 0xac, 0x23, 0xa2, 0x01, 0x47, 0xef, 0xc0, 0x91, 0x63, 0x35, 0xac, 0xff, 0x32,
		0x47, 0x11, 0x4e, 0x70, 0x5a, 0xf7, 0xd5, 0x59, 0x90, 0x19, 0x50, 0xc6, 0xfc, 0x12, 0x60, 0x01,
		0x8f, 0x04, 0x58, 0xc0, 0x17, 0x81, 0x17, 0xf0, 0x42, 0xa0, 0xa5, 0xe0, 0x68, 0x99, 0x1e, 0x6e,
		0x7f, 0x60, 0xb4, 0x53, 0xf5, 0x0a, 0xdb, 0x35, 0x1a, 0x5f, 0x5b, 0xb6, 0xe5, 0x7c, 0x3b, 0x02,
		0x52, 0x80, 0x94, 0x67, 0x91, 0x72, 0xf7, 0x37, 0x40, 0x05, 0x50, 0x79, 0x06, 0x2a, 0x90, 0xc4,
		0x01, 0x7e, 0xd6, 0x36, 0x38, 0x31, 0xf4, 0x3c, 0x45, 0x46, 0x10, 0xc7, 0xa0, 0x95, 0x42, 0x08,
		0x15, 0xd2, 0x35, 0xbe, 0xaf, 0xf4, 0xef, 0x27, 0xed, 0xfb, 0x48, 0xd7, 0x3a, 0x9a, 0x96, 0x11,
		0x0d, 0x58, 0x25, 0x43, 0xa9, 0x20, 0xf6, 0x62, 0x19, 0xa8, 0xd2, 0x1e, 0xe1, 0x10, 0x55, 0x8a,
		0xba, 0x17, 0xe2, 0xd2, 0x1b, 0x7a, 0xf1, 0xc5, 0x38, 0x18, 0x95, 0x83, 0xa1, 0x50, 0xdd, 0x40,
		0xf5, 0xe5, 0x40, 0x57, 0x22, 0xbe, 0x0e, 0xc2, 0xbf, 0x75, 0xa9, 0xa2, 0xd8, 0x53, 0x5d, 0x51,
		0x7e, 0xf8, 0x46, 0xb4, 0xf0, 0x4e, 0x79, 0x18, 0x06, 0x71, 0xd0, 0x0d, 0xfc, 0x28, 0xfd, 0xae,
		0x2c, 0x23, 0x19, 0x95, 0x7d, 0x71, 0x25, 0xfc, 0xe9, 0x97, 0xb2, 0x2f, 0xd5, 0xdf, 0x7a, 0x14,
		0x7b, 0xb1, 0xd0, 0x7b, 0x5e, 0xec, 0x9d, 0x7b, 0x91, 0x28, 0xfb, 0xd1, 0xb0, 0x1c, 0xfb, 0x57,
		0xd1, 0xf8, 0x8f, 0xb2, 0x1c, 0x5e, 0xd5, 0xf4, 0x50, 0x78, 0xdd, 0x0b, 0xef, 0x5c, 0xfa, 0x32,
		0xbe, 0x2d, 0x0f, 0x43, 0xd1, 0x97, 0x37, 0x22, 0x9a, 0x7e, 0x53, 0x8e, 0x46, 0xe7, 0xc9, 0x4f,
		0x4f, 0xbe, 0x96, 0xfb, 0xbe, 0x37, 0x88, 0xca, 0xc9, 0x7f, 0x49, 0x33, 0x5e, 0xd2, 0x5b, 0x3b,
		0xb4, 0x2c, 0x22, 0xb6, 0x8a, 0x4b, 0xe2, 0x26, 0x0e, 0x3d, 0x7d, 0x34, 0x86, 0xf5, 0xb9, 0x2f,
		0x48, 0xae, 0xe0, 0xd2, 0xf5, 0x85, 0x50, 0x64, 0x53, 0x3e, 0xc2, 0x1e, 0x6f, 0x46, 0xbc, 0x37,
		0x36, 0x26, 0x1e, 0xa3, 0x1c, 0xdf, 0x0e, 0x85, 0xf6, 0x87, 0xf6, 0x21, 0xe8, 0xea, 0x63, 0x67,
		0xa5, 0xfb, 0x51, 0xef, 0x5c, 0x1f, 0xbf, 0x19, 0xed, 0x59, 0xed, 0xfb, 0x95, 0xea, 0xb6, 0x6d,
		0x1e, 0x5a, 0x3f, 0xdc, 0xc3, 0x86, 0xf1, 0xb5, 0xf3, 0x81, 0x70, 0x95, 0xa0, 0xd4, 0x09, 0x46,
		0x61, 0x57, 0x90, 0x0e, 0x3d, 0x89, 0x9d, 0xdf, 0xc5, 0xed, 0x75, 0x10, 0xf6, 0xc6, 0xcf, 0x23,
		0xc1, 0x33, 0xed, 0xf4, 0xb3, 0xf4, 0xcd, 0x8b, 0x8c, 0x70, 0x30, 0xba, 0x14, 0x2a, 0x2e, 0xed,
		0x69, 0x71, 0x38, 0x12, 0xc4, 0x0d, 0x9e, 0xb3, 0x76, 0x09, 0x80, 0xff, 0x0d, 0x65, 0x8b, 0xd7,
		0x3f, 0x82, 0xba, 0x88, 0xba, 0xa1, 0x1c, 0x92, 0xa7, 0x82, 0xf7, 0x9c, 0x63, 0x4b, 0xf9, 0xb7,
		0x9a, 0x54, 0x5d, 0x7f, 0xd4, 0x13, 0x5a, 0x7c, 0x21, 0xb4, 0x84, 0x62, 0x69, 0xdd, 0x40, 0xc5,
		0x9e, 0x54, 0x22, 0xd4, 0xc6, 0xab, 0x35, 0xf9, 0x87, 0x68, 0x74, 0xae, 0x3b, 0x8d, 0x13, 0x4d,
		0x46, 0xda, 0x18, 0x42, 0xa7, 0xaa, 0xba, 0x41, 0x7d, 0x15, 0x33, 0x71, 0x8e, 0x0f, 0x1d, 0x64,
		0x6f, 0x0e, 0x48, 0xf4, 0xcb, 0x74, 0xec, 0x7c, 0xe5, 0x82, 0xbf, 0x7c, 0xdf, 0x1a, 0x40, 0x95,
		0xa1, 0x48, 0x55, 0x06, 0x72, 0x56, 0x9d, 0x21, 0x7f, 0xe3, 0x5b, 0x7d, 0x29, 0x50, 0xd5, 0x85,
		0x60, 0x24, 0x2a, 0x45, 0x71, 0x38, 0xea, 0xc6, 0x6a, 0x4a, 0x65, 0x9a, 0x93, 0xdb, 0x65, 0x4d,
		0xef, 0x96, 0xdb, 0x9e, 0xde, 0x23, 0xd7, 0x8a, 0x64, 0xe4, 0x36, 0xc6, 0x37, 0xc7, 0x6d, 0x44,
		0x43, 0xd7, 0xf1, 0xaf, 0x5c, 0x6b, 0x78, 0x55, 0xb3, 0xe7, 0x6e, 0x81, 0xdb, 0x4e, 0xae, 0xdc,
		0xed, 0x24, 0x57, 0xec, 0x1e, 0x26, 0x57, 0xfc, 0x1b, 0x3c, 0x13, 0x71, 0x1f, 0x50, 0x92, 0xc3,
		0xab, 0xaa, 0x1e, 0x25, 0x34, 0x4f, 0x0f, 0x83, 0x51, 0x2c, 0x42, 0x5d, 0xf6, 0xc8, 0xb9, 0x82,
		0x94, 0x6d, 0x3f, 0x6e, 0x2e, 0x31, 0x9f, 0xfa, 0x5d, 0xaa, 0xf1, 0x2d, 0xac, 0x10, 0x33, 0xeb,
		0x20, 0xf1, 0x9b, 0xa5, 0x3d, 0x6d, 0x93, 0x98, 0x61, 0x13, 0xd7, 0x41, 0x33, 0xfe, 0xcc, 0x80,
		0x37, 0xad, 0x00, 0x50, 0x74, 0xe2, 0xc4, 0x93, 0xb4, 0xf9, 0xc4, 0x6c, 0x12, 0x1e, 0x89, 0xe6,
		0x64, 0x6c, 0xf2, 0xb0, 0x7b, 0xb9, 0xd7, 0x0c, 0x98, 0xd8, 0x37, 0x61, 0xc5, 0xbb, 0xeb, 0x32,
		0x24, 0x4a, 0xb8, 0x93, 0xbd, 0x41, 0xb2, 0xce, 0x64, 0xe6, 0x8f, 0x27, 0x66, 0x12, 0x5d, 0x9f,
		0x34, 0x09, 0x00, 0x79, 0x22, 0xc0, 0x81, 0x10, 0x30, 0x22, 0x06, 0x5c, 0x08, 0x02, 0x3b, 0xa2,
		0xc0, 0x8e, 0x30, 0xf0, 0x22, 0x0e, 0x34, 0x09, 0x04, 0x51, 0x22, 0x41, 0x9e, 0x50, 0xa4, 0x06,
		0xd2, 0xad, 0x2e, 0x3c, 0xe9, 0xdb, 0xa9, 0x56, 0x18, 0x9e, 0x22, 0x1c, 0x9b, 0xc4, 0xcd, 0xa4,
		0x4e, 0x3c, 0x38, 0x11, 0x10, 0x86, 0x44, 0x84, 0x1b, 0x21, 0x61, 0x4b, 0x4c, 0xd8, 0x12, 0x14,
		0x9e, 0x44, 0x85, 0x36, 0x61, 0x21, 0x4e, 0x5c, 0xd2, 0x47, 0xee, 0xdc, 0x0e, 0x05, 0x2f, 0x8f,
		0x9b, 0x6c, 0x46, 0x78, 0xbd, 0x5e, 0x28, 0x22, 0x16, 0x6e, 0x77, 0x56, 0x96, 0xf8, 0xcc, 0xc0,
		0xd6, 0xb6, 0x17, 0xc7, 0x22, 0x54, 0x6c, 0x26, 0x35, 0x4b, 0xbf, 0xff, 0xb5, 0xa9, 0x7f, 0x39,
		0xfb, 0xe7, 0xaf, 0x8a, 0xfe, 0xe5, 0x6c, 0xf2, 0x6d, 0x25, 0xf9, 0xf2, 0xbf, 0xad, 0x9f, 0xff,
		0x6c, 0xfd, 0xb5, 0xa9, 0x57, 0xa7, 0xef, 0x6e, 0xed, 0xfc, 0xb5, 0xa9, 0xef, 0x9c, 0x7d, 0xfc,
		0xfd, 0xf4, 0x74, 0xe3, 0xb5, 0xbf, 0xf3, 0xf1, 0x7f, 0xdb, 0x3f, 0xe9, 0xbb, 0xc1, 0x33, 0x0e,
		0xf0, 0x6a, 0x75, 0xac, 0x1f, 0xec, 0x30, 0xf6, 0xff, 0x7e, 0xcf, 0x0a, 0x65, 0x1f, 0xff, 0xc5,
		0x00, 0x67, 0x08, 0xb7, 0xef, 0xc0, 0x12, 0x83, 0xc1, 0x8d, 0xc5, 0x12, 0x82, 0xe8, 0x8b, 0x50,
		0xa8, 0x24, 0x75, 0xe0, 0xb1, 0x64, 0xf9, 0x8c, 0x5c, 0xdf, 0x8d, 0x59, 0x1f, 0x1e, 0xec, 0xee,
		0x7e, 0xa9, 0xee, 0x69, 0x56, 0x47, 0xb7, 0x3a, 0xda, 0x24, 0x15, 0xd6, 0x8c, 0x38, 0x0e, 0xe5,
		0xf9, 0x28, 0x16, 0x91, 0xd6, 0x0f, 0x42, 0xcd, 0xbc, 0x89, 0x85, 0xea, 0x89, 0x9e, 0x66, 0xb5,
		0xaf, 0xaa, 0xa7, 0xca, 0x53, 0xc9, 0x77, 0x35, 0x6d, 0xbe, 0x25, 0x68, 0x23, 0xed, 0xf6, 0xac,
		0x54, 0x18, 0xe9, 0x44, 0x70, 0xcb, 0x4e, 0x1f, 0xcb, 0x52, 0xef, 0x16, 0x0a, 0x33, 0x7d, 0x0e,
		0xae, 0x09, 0xeb, 0xa3, 0x89, 0xeb, 0x6a, 0x56, 0x12, 0xc6, 0xf0, 0xd7, 0xcc, 0xca, 0x33, 0x34,
		0xc8, 0x17, 0x8d, 0x81, 0x95, 0x62, 0x0e, 0xc5, 0x8e, 0x94, 0x12, 0x24, 0xd6, 0x62, 0x0b, 0x64,
		0x19, 0x66, 0x62, 0x0b, 0x64, 0x85, 0x38, 0xc5, 0x16, 0x48, 0x16, 0xe4, 0x12, 0x5b, 0x20, 0x99,
		0x33, 0x49, 0x6c, 0x81, 0xac, 0x45, 0x4d, 0x86, 0xe1, 0x16, 0x48, 0x4f, 0xa8, 0x58, 0xc6, 0xb7,
		0xa1, 0xe8, 0x73, 0xda, 0x01, 0xd9, 0x61, 0x60, 0xab, 0x35, 0xbd, 0xb5, 0xfb, 0x5e, 0xc4, 0x28,
		0x4e, 0xdc, 0x29, 0x57, 0x5b, 0x9d, 0xa9, 0x52, 0x28, 0x27, 0xa1, 0x50, 0x8e, 0x02, 0xa1, 0x5c,
		0xb5, 0xcd, 0x1f, 0x08, 0x68, 0x58, 0xed, 0x93, 0xaa, 0x3b, 0xd5, 0x78, 0xe4, 0x74, 0x54, 0x3b,
		0x24, 0x88, 0x73, 0x40, 0x4a, 0x0d, 0x48, 0x01, 0x52, 0x5e, 0x46, 0xca, 0xbc, 0x28, 0x0f, 0x70,
		0x02, 0x9c, 0xbc, 0x80, 0x93, 0x0e, 0xbc, 0x09, 0x50, 0xf2, 0x34, 0x4a, 0x20, 0x7c, 0x0f, 0xf4,
		0xac, 0x2f, 0xcf, 0x65, 0xe8, 0x77, 0x8a, 0x8b, 0xa0, 0x1a, 0x10, 0x04, 0x04, 0xad, 0x1b, 0x2f,
		0x06, 0x7e, 0xc0, 0x97, 0x81, 0x1e, 0xfe, 0xe8, 0x71, 0x8c, 0xaf, 0x80, 0x0d, 0x60, 0xf3, 0x06,
		0xd8, 0xd4, 0xaa, 0x38, 0xe5, 0x67, 0xb5, 0x2f, 0x9c, 0x83, 0x8e, 0xfa, 0x47, 0x21, 0xfc, 0x36,
		0xe0, 0x01, 0xff, 0x0c, 0x80, 0xe4, 0x0b, 0x90, 0x07, 0xa7, 0x57, 0x1b, 0xf5, 0x7f, 0xbb, 0x0d,
		0xa3, 0x89, 0x32, 0x3b, 0x60, 0xf2, 0x12, 0x4c, 0x00, 0x11, 0x40, 0xe4, 0x59, 0x88, 0x1c, 0x59,
		0x4d, 0xf7, 0xab, 0xdd, 0x3a, 0x6e, 0x03, 0x26, 0x80, 0xc9, 0x93, 0x30, 0x39, 0x31, 0xac, 0x86,
		0xb1, 0xdf, 0x30, 0xdd, 0x7d, 0xa3, 0x59, 0xff, 0x8f, 0x55, 0x77, 0xbe, 0x01, 0x2e, 0x80, 0xcb,
		0x53, 0x70, 0x49, 0x41, 0xe2, 0x1e, 0xb4, 0x9a, 0x1d, 0xc7, 0x36, 0xac, 0xa6, 0x83, 0xb6, 0x11,
		0x00, 0xe6, 0x49, 0xc0, 0x98, 0x3f, 0x1c, 0xb3, 0x59, 0x37, 0xeb, 0x88, 0x47, 0xc0, 0xcb, 0xaf,
		0xe0, 0x25, 0xd9, 0xfa, 0xb7, 0x9a, 0x8e, 0x69, 0x1f, 0x1a, 0x07, 0xa6, 0x6b, 0xd4, 0xeb, 0xb6,
		0xd9, 0x81, 0x87, 0x01, 0x62, 0x9e, 0x47, 0x4c, 0xd3, 0xb4, 0xbe, 0x7e, 0xdb, 0x6f, 0xd9, 0x00,
		0x0c, 0x00, 0xf3, 0x0b, 0x80, 0xa9, 0xc1, 0xc5, 0x00, 0x31, 0xaf, 0x44, 0x0c, 0x5c, 0x0c, 0x00,
		0xf3, 0xab, 0x80, 0x69, 0x58, 0xcd, 0xef, 0xae, 0xe1, 0x38, 0xb6, 0xb5, 0x7f, 0xec, 0x98, 0x80,
		0x0a, 0xa0, 0xf2, 0x3c, 0x54, 0xea, 0x66, 0xc3, 0xf8, 0x13, 0x28, 0x01, 0x4a, 0x5e, 0x46, 0x89,
		0x7b, 0x62, 0xd8, 0x96, 0xe1, 0x58, 0xad, 0x26, 0xf0, 0x02, 0xbc, 0x3c, 0x8b, 0x17, 0x6c, 0x10,
		0x01, 0x22, 0x2f, 0x40, 0xa4, 0xd1, 0x02, 0x91, 0x05, 0x48, 0x5e, 0x00, 0x49, 0xdb, 0x6e, 0x39,
		0xe6, 0xc1, 0x38, 0xe4, 0x4c, 0xe6, 0xba, 0x80, 0x17, 0xe0, 0xe5, 0x09, 0xbc, 0x1c, 0x19, 0x3f,
		0x26, 0x98, 0xc1, 0x6e, 0x22, 0xd0, 0xf2, 0x4b, 0x68, 0xb1, 0xcd, 0x8e, 0x69, 0x9f, 0x60, 0x07,
		0x1a, 0x98, 0xf9, 0x45, 0xcc, 0x58, 0xcd, 0x3b, 0x2f, 0x83, 0xbc, 0x19, 0x68, 0x79, 0x16, 0x2d,
		0xb6, 0xd9, 0xb1, 0xea, 0xc7, 0x46, 0x03, 0xbe, 0x05, 0x68, 0x79, 0x19, 0x2d, 0x50, 0x2f, 0x00,
		0x7a, 0xde, 0x8f, 0x22, 0x96, 0x3d, 0xdc, 0x0c, 0x9d, 0x4e, 0x81, 0xe1, 0x03, 0xe8, 0x00, 0x3a,
		0x6f, 0x82, 0x0e, 0xc3, 0x1e, 0x3b, 0xc0, 0x87, 0x0c, 0x7c, 0x38, 0xf7, 0x82, 0x03, 0x46, 0x54,
		0x60, 0xc4, 0xbc, 0x47, 0x1c, 0x40, 0xa2, 0x02, 0x24, 0xde, 0xbd, 0xe3, 0xc0, 0x11, 0x15, 0x1c,
		0x71, 0xef, 0x29, 0x07, 0x92, 0x48, 0x21, 0x89, 0x6f, 0x23, 0x28, 0x80, 0x44, 0x08, 0x48, 0x35,
		0xb8, 0x24, 0x20, 0x69, 0x49, 0x48, 0x82, 0x4b, 0x02, 0x90, 0xde, 0x0b, 0x24, 0xb6, 0x3d, 0xeb,
		0x80, 0x10, 0x29, 0x08, 0x31, 0xdb, 0x93, 0x07, 0x7a, 0xe8, 0xa1, 0x87, 0x63, 0x8f, 0x3b, 0x70,
		0x44, 0x0a, 0x47, 0xd8, 0x40, 0x03, 0x74, 0xde, 0x08, 0x1d, 0x5e, 0x3d, 0xf1, 0x00, 0x0f, 0x29,
		0xf0, 0xb0, 0xed, 0x95, 0x07, 0x8e, 0xa8, 0xe0, 0x88, 0x73, 0x0f, 0x3d, 0x50, 0x44, 0x09, 0x45,
		0xbc, 0x7b, 0xeb, 0x81, 0x25, 0x32, 0x58, 0x62, 0xdc, 0x73, 0x0f, 0x14, 0x51, 0x41, 0x11, 0xe7,
		0x5e, 0x7c, 0xa0, 0x88, 0x0a, 0x8a, 0x1c, 0xd3, 0xad, 0x9b, 0x87, 0xc6, 0x71, 0xc3, 0x71, 0x8f,
		0x4c, 0xc7, 0xb6, 0x0e, 0x00, 0x22, 0x80, 0xe8, 0xb5, 0x20, 0x3a, 0x6e, 0xa6, 0xad, 0x69, 0x66,
		0xdd, 0x6d, 0x74, 0xd0, 0x56, 0x04, 0x10, 0xbd, 0x01, 0x44, 0x13, 0x7e, 0x6d, 0xd6, 0x11, 0xd1,
		0x80, 0xa3, 0x77, 0xe0, 0xc8, 0xb1, 0x1a, 0xd6, 0x7f, 0x99, 0xa3, 0x08, 0x27, 0x38, 0xad, 0xfb,
		0xea, 0x2c, 0xc8, 0x0c, 0x28, 0x63, 0x7e, 0x09, 0xb0, 0x80, 0x47, 0x02, 0x2c, 0xe0, 0x8b, 0xc0,
		0x0b, 0x78, 0x21, 0xd0, 0x52, 0x70, 0xb4, 0x4c, 0x0f, 0xb7, 0x3f, 0x30, 0xda, 0xa9, 0x7a, 0x85,
		0xed, 0x1a, 0x8d, 0xaf, 0x2d, 0xdb, 0x72, 0xbe, 0x1d, 0x01, 0x29, 0x40, 0xca, 0xb3, 0x48, 0xb9,
		0xfb, 0x1b, 0xa0, 0x02, 0xa8, 0x3c, 0x03, 0x15, 0x48, 0xe2, 0x00, 0x3f, 0x6b, 0x1b, 0x9c, 0x18,
		0x7a, 0x9e, 0x22, 0x23, 0x88, 0x63, 0xd0, 0x4a, 0x21, 0x84, 0x0a, 0xe9, 0x1a, 0xdf, 0x57, 0xfa,
		0xf7, 0x93, 0xf6, 0x7d, 0xa4, 0x6b, 0x1d, 0x4d, 0xcb, 0x88, 0x06, 0xac, 0x92, 0xa1, 0x54, 0x10,
		0x7b, 0xb1, 0x0c, 0x54, 0x69, 0x8f, 0x70, 0x88, 0x2a, 0x45, 0xdd, 0x0b, 0x71, 0xe9, 0x0d, 0xbd,
		0xf8, 0x62, 0x1c, 0x8c, 0xca, 0xc1, 0x50, 0xa8, 0x6e, 0xa0, 0xfa, 0x72, 0xa0, 0x2b, 0x11, 0x5f,
		0x07, 0xe1, 0xdf, 0xba, 0x54, 0x51, 0xec, 0xa9, 0xae, 0x28, 0x3f, 0x7c, 0x23, 0x5a, 0x78, 0xa7,
		0x3c, 0x0c, 0x83, 0x38, 0xe8, 0x06, 0x7e, 0x94, 0x7e, 0x57, 0x96, 0x91, 0x8c, 0xca, 0xbe, 0xb8,
		0x12, 0xfe, 0xf4, 0x4b, 0xd9, 0x97, 0xea, 0x6f, 0x3d, 0x8a, 0xbd, 0x58, 0xe8, 0x3d, 0x2f, 0xf6,
		0xce, 0xbd, 0x48, 0x94, 0xfd, 0x68, 0x58, 0x8e, 0xfd, 0xab, 0x68, 0xfc, 0x47, 0x59, 0x0e, 0xaf,
		0x6a, 0x7a, 0x28, 0xbc, 0xee, 0x85, 0x77, 0x2e, 0x7d, 0x19, 0xdf, 0x96, 0x87, 0xa1, 0xe8, 0xcb,
		0x1b, 0x11, 0x4d, 0xbf, 0x29, 0x47, 0xa3, 0xf3, 0xe4, 0xa7, 0x27, 0x5f, 0xc7, 0xbf, 0x50, 0xd5,
		0xa3, 0x60, 0x14, 0x76, 0x85, 0x1e, 0x06, 0xa3, 0x58, 0x84, 0xba, 0xec, 0x95, 0x93, 0x8f, 0xa0,
		0x19, 0x3f, 0xe9, 0xad, 0x25, 0x5a, 0x16, 0x11, 0x5b, 0xd5, 0x25, 0x71, 0x13, 0x87, 0x9e, 0x3e,
		0x1a, 0xc3, 0xfc, 0xdc, 0x17, 0x24, 0x57, 0x74, 0xe9, 0xfa, 0x42, 0x28, 0xb2, 0x29, 0x20, 0x61,
		0x0f, 0x38, 0x23, 0xe2, 0x1b, 0x1b, 0x13, 0x8f, 0x51, 0x8e, 0x6f, 0x87, 0x42, 0xfb, 0x43, 0xfb,
		0x10, 0x74, 0xf5, 0xb1, 0xf3, 0xd2, 0xfd, 0xa8, 0x77, 0xae, 0x8f, 0xdf, 0x8c, 0xf6, 0xac, 0xf6,
		0x23, 0x32, 0x29, 0x53, 0x06, 0x6f, 0xd5, 0x3f, 0x10, 0xae, 0x1b, 0x94, 0x3a, 0x89, 0x7b, 0x24,
		0x1d, 0x8c, 0x12, 0x3b, 0xbf, 0x8b, 0xdb, 0xeb, 0x20, 0xec, 0x8d, 0x9f, 0x48, 0x82, 0x68, 0xda,
		0x09, 0x69, 0xe9, 0x9b, 0x17, 0x19, 0xe1, 0x60, 0x74, 0x29, 0x54, 0x5c, 0xda, 0xd3, 0xe2, 0x70,
		0x24, 0x88, 0x1b, 0x3c, 0x67, 0xed, 0x52, 0x20, 0xff, 0x1b, 0x4a, 0x19, 0xaf, 0x7f, 0x08, 0x75,
		0x11, 0x75, 0x43, 0x39, 0x24, 0x4f, 0x0f, 0xef, 0x39, 0xc8, 0x96, 0xf2, 0x6f, 0x35, 0xa9, 0xba,
		0xfe, 0xa8, 0x27, 0xb4, 0xf8, 0x42, 0x68, 0x56, 0xfb, 0xaa, 0xaa, 0x4d, 0xfc, 0x8a, 0x66, 0x27,
		0xb4, 0x4b, 0xb3, 0xea, 0x5a, 0x37, 0x50, 0xb1, 0x27, 0x95, 0x08, 0xb5, 0xf1, 0xfa, 0x3d, 0x55,
		0xe3, 0x9f, 0x8c, 0x46, 0xe7, 0xba, 0xd3, 0x38, 0xd1, 0x64, 0xa4, 0x25, 0x50, 0xab, 0x54, 0x36,
		0xa8, 0x2f, 0x6c, 0x26, 0xfe, 0xf2, 0xa1, 0xcf, 0xec, 0xcd, 0x21, 0x8b, 0x7e, 0x2d, 0x8f, 0x9d,
		0xfb, 0x5c, 0x70, 0xa1, 0x4b, 0x5e, 0x14, 0xa8, 0x4d, 0x14, 0xa9, 0x36, 0x41, 0xce, 0xaa, 0x33,
		0x64, 0x79, 0x7c, 0x6b, 0x36, 0x05, 0xae, 0xd5, 0x10, 0x0c, 0x55, 0xa5, 0x28, 0x0e, 0x47, 0xdd,
		0x58, 0x4d, 0xc9, 0x4f, 0x73, 0x72, 0xfb, 0xac, 0xe9, 0xdd, 0x73, 0xdb, 0xd3, 0x7b, 0xe6, 0x5a,
		0x91, 0x8c, 0xdc, 0xc6, 0xf8, 0x66, 0xb9, 0x8d, 0x68, 0xe8, 0x3a, 0xfe, 0x95, 0x6b, 0x0d, 0xaf,
		0x6a, 0xf6, 0xdc, 0x2d, 0x71, 0xdb, 0xc9, 0x9d, 0x70, 0x3b, 0xc9, 0x1d, 0x18, 0xff, 0x73, 0x75,
		0x12, 0x20, 0x26, 0xf1, 0xc1, 0xea, 0xd1, 0x72, 0xfb, 0x74, 0xdc, 0x16, 0x21, 0x07, 0x51, 0x4a,
		0x80, 0xbe, 0x80, 0x5b, 0x6a, 0x7e, 0x22, 0x25, 0xeb, 0x8f, 0x9b, 0x4b, 0xcc, 0xe1, 0x7e, 0x97,
		0x6a, 0x7c, 0x0b, 0x2b, 0xc4, 0xcc, 0x3a, 0x48, 0x9c, 0x6a, 0x69, 0x4f, 0xdb, 0x24, 0x66, 0xd8,
		0xc4, 0x8f, 0xd0, 0x0c, 0x4e, 0x33, 0xe0, 0x4d, 0x4b, 0x08, 0x14, 0x3d, 0x3a, 0xf1, 0x94, 0x6e,
		0x3e, 0x8d, 0x9b, 0xc4, 0x4e, 0xa2, 0x19, 0x1c, 0x9b, 0xac, 0xed, 0x5e, 0xa6, 0x36, 0x03, 0x26,
		0xb6, 0x5e, 0x58, 0x91, 0xf2, 0xba, 0x0c, 0x89, 0xb2, 0xf1, 0x64, 0x7b, 0x91, 0xac, 0x33, 0x99,
		0xf9, 0xe3, 0x89, 0x99, 0x44, 0xd7, 0x27, 0x4d, 0x02, 0x40, 0x9e, 0x08, 0x70, 0x20, 0x04, 0x8c,
		0x88, 0x01, 0x17, 0x82, 0xc0, 0x8e, 0x28, 0xb0, 0x23, 0x0c, 0xbc, 0x88, 0x03, 0x4d, 0x02, 0x41,
		0x94, 0x48, 0x90, 0x27, 0x14, 0xa9, 0x81, 0x74, 0xab, 0x0b, 0x4f, 0xfa, 0x76, 0xca, 0x85, 0xbc,
		0xc7, 0x08, 0xc7, 0x26, 0x71, 0x33, 0xa9, 0x13, 0x0f, 0x4e, 0x04, 0x84, 0x21, 0x11, 0xe1, 0x46,
		0x48, 0xd8, 0x12, 0x13, 0xb6, 0x04, 0x85, 0x27, 0x51, 0xa1, 0x4d, 0x58, 0x88, 0x13, 0x97, 0xf4,
		0x91, 0x3b, 0xb7, 0x43, 0xc1, 0xcb, 0xe3, 0x26, 0x9b, 0x11, 0x5e, 0xaf, 0x17, 0x8a, 0x88, 0x85,
		0xdb, 0x9d, 0x95, 0x25, 0x3e, 0x33, 0xb0, 0xb5, 0xed, 0xc5, 0xb1, 0x08, 0x15, 0x9b, 0xe1, 0xcf,
		0xd2, 0xef, 0xbf, 0xff, 0xb5, 0xa9, 0x7f, 0xf1, 0xf4, 0xbe, 0xa1, 0x1f, 0x9e, 0xfd, 0xaf, 0xf2,
		0xa9, 0xfa, 0x73, 0xef, 0xe3, 0xff, 0x76, 0x7f, 0x3e, 0x7c, 0xf3, 0x9f, 0xc7, 0x7e, 0xac, 0xf2,
		0x69, 0xf7, 0xe7, 0xde, 0x13, 0xff, 0x52, 0xfb, 0xb9, 0xf7, 0x8b, 0xff, 0xc7, 0xce, 0xcf, 0xdf,
		0x17, 0x7e, 0x74, 0xfc, 0xfe, 0xd6, 0x53, 0xbf, 0x50, 0x7d, 0xe2, 0x17, 0xb6, 0x9f, 0xfa, 0x85,
		0xed, 0x27, 0x7e, 0xe1, 0x49, 0x93, 0xb6, 0x9e, 0xf8, 0x85, 0x9d, 0x9f, 0xff, 0x2c, 0xfc, 0xfc,
		0xef, 0x8f, 0xff, 0x68, 0xed, 0xe7, 0xc7, 0x7f, 0x9e, 0xfa, 0xb7, 0xdd, 0x9f, 0xff, 0xec, 0x7d,
		0xfc, 0x48, 0x3f, 0x30, 0x9c, 0x71, 0x58, 0x70, 0xad, 0x8e, 0xf5, 0x83, 0xdd, 0xaa, 0xfb, 0x7f,
		0x58, 0x76, 0x79, 0x2d, 0xbb, 0x7f, 0x31, 0x58, 0x77, 0x20, 0x64, 0xef, 0x58, 0x5b, 0x0c, 0xa6,
		0x83, 0x16, 0x8b, 0x4c, 0xa2, 0x2f, 0x42, 0xa1, 0x92, 0xe4, 0x92, 0x87, 0x0b, 0xe3, 0x33, 0xe7,
		0x7f, 0x37, 0xdb, 0x7f, 0x78, 0xb0, 0xbb, 0xfb, 0xa5, 0xba, 0xa7, 0x59, 0x1d, 0xdd, 0xea, 0x68,
		0x93, 0x62, 0x89, 0x66, 0xc4, 0x71, 0x28, 0xcf, 0x47, 0xb1, 0x88, 0xb4, 0x7e, 0x10, 0x6a, 0xe6,
		0x4d, 0x2c, 0x54, 0x4f, 0xf4, 0x92, 0xce, 0xe1, 0x53, 0xe5, 0xa9, 0xe4, 0xbb, 0x9a, 0x36, 0xdf,
		0x41, 0xb6, 0x91, 0x36, 0x0b, 0x57, 0xb6, 0x36, 0x18, 0xa9, 0x93, 0x70, 0x2b, 0x60, 0x3c, 0x56,
		0xc8, 0xb8, 0x5b, 0x29, 0xcc, 0x54, 0x61, 0xb8, 0xd6, 0x34, 0x1e, 0xad, 0x6d, 0xac, 0x68, 0x29,
		0x41, 0xfd, 0x61, 0xcd, 0xac, 0x3c, 0xc3, 0x84, 0x45, 0xd1, 0x38, 0x58, 0x29, 0xe6, 0x50, 0x10,
		0x4b, 0x49, 0x41, 0x62, 0x2d, 0xb6, 0xc9, 0x96, 0x61, 0x26, 0xb6, 0xc9, 0x56, 0x88, 0x53, 0x6c,
		0x93, 0x65, 0xc1, 0x2e, 0xb1, 0x4d, 0x96, 0x39, 0x95, 0xc4, 0x36, 0xd9, 0x5a, 0x54, 0x65, 0x18,
		0x6e, 0x93, 0xf5, 0x84, 0x8a, 0x65, 0x7c, 0x1b, 0x8a, 0x3e, 0xa7, 0x5d, 0xb2, 0x1d, 0x06, 0xb6,
		0x5a, 0xd3, 0x5b, 0xbb, 0xef, 0x45, 0x8c, 0xe2, 0xc4, 0x9d, 0x60, 0xba, 0xd5, 0x99, 0x0a, 0xd4,
		0x72, 0xd2, 0xa7, 0xe5, 0xa8, 0x4b, 0xcb, 0x55, 0x52, 0xff, 0x59, 0x95, 0x16, 0x28, 0x5f, 0x03,
		0x29, 0xcf, 0x20, 0xa5, 0x06, 0xa4, 0x00, 0x29, 0x2f, 0x23, 0xa5, 0x6d, 0x9b, 0x87, 0xd6, 0x0f,
		0xf7, 0xb0, 0x61, 0x7c, 0xed, 0x00, 0x27, 0xc0, 0xc9, 0x0b, 0x38, 0xe9, 0xc0, 0x9b, 0x00, 0x25,
		0x4f, 0xa3, 0x04, 0xe7, 0x2d, 0x00, 0x3d, 0xeb, 0xcb, 0x73, 0x19, 0xfa, 0x9d, 0xe2, 0x22, 0xa8,
		0x06, 0x04, 0x01, 0x41, 0xeb, 0xc6, 0x8b, 0x81, 0x1f, 0xf0, 0x65, 0xa0, 0x87, 0x3f, 0x7a, 0x1c,
		0xe3, 0x2b, 0x60, 0x03, 0xd8, 0xbc, 0x01, 0x36, 0xb5, 0x2a, 0x0e, 0x97, 0x5a, 0xed, 0x0b, 0xc7,
		0xef, 0xa3, 0xfe, 0x51, 0x08, 0xbf, 0x0d, 0x78, 0xc0, 0x3f, 0x03, 0x20, 0xf9, 0x02, 0xe4, 0xc1,
		0xa1, 0xe9, 0x46, 0xfd, 0xdf, 0x6e, 0xc3, 0x68, 0xa2, 0xcc, 0x0e, 0x98, 0xbc, 0x04, 0x13, 0x40,
		0x04, 0x10, 0x79, 0x16, 0x22, 0x47, 0x56, 0xd3, 0xfd, 0x6a, 0xb7, 0x8e, 0xdb, 0x80, 0x09, 0x60,
		0xf2, 0x24, 0x4c, 0x4e, 0x0c, 0xab, 0x61, 0xec, 0x37, 0x4c, 0x77, 0xdf, 0x68, 0xd6, 0xff, 0x63,
		0xd5, 0x9d, 0x6f, 0x80, 0x0b, 0xe0, 0xf2, 0x14, 0x5c, 0x52, 0x90, 0xb8, 0x07, 0xad, 0x66, 0xc7,
		0xb1, 0x0d, 0xab, 0xe9, 0xa0, 0x6d, 0x04, 0x80, 0x79, 0x12, 0x30, 0xe6, 0x0f, 0xc7, 0x6c, 0xd6,
		0xcd, 0x3a, 0xe2, 0x11, 0xf0, 0xf2, 0x2b, 0x78, 0x49, 0xb6, 0xfe, 0xad, 0xa6, 0x63, 0xda, 0x87,
		0xc6, 0x81, 0xe9, 0x1a, 0xf5, 0xba, 0x6d, 0x76, 0xe0, 0x61, 0x80, 0x98, 0xe7, 0x11, 0xd3, 0x34,
		0xad, 0xaf, 0xdf, 0xf6, 0x5b, 0x36, 0x00, 0x03, 0xc0, 0xfc, 0x02, 0x60, 0x6a, 0x70, 0x31, 0x40,
		0xcc, 0x2b, 0x11, 0x03, 0x17, 0x03, 0xc0, 0xfc, 0x2a, 0x60, 0x1a, 0x56, 0xf3, 0xbb, 0x6b, 0x38,
		0x8e, 0x6d, 0xed, 0x1f, 0x3b, 0x26, 0xa0, 0x02, 0xa8, 0x3c, 0x0f, 0x95, 0xba, 0xd9, 0x30, 0xfe,
		0x04, 0x4a, 0x80, 0x92, 0x97, 0x51, 0xe2, 0x9e, 0x18, 0xb6, 0x65, 0x38, 0x56, 0xab, 0x09, 0xbc,
		0x00, 0x2f, 0xcf, 0xe2, 0x05, 0x1b, 0x44, 0x80, 0xc8, 0x0b, 0x10, 0x69, 0xb4, 0x40, 0x64, 0x01,
		0x92, 0x17, 0x40, 0xd2, 0xb6, 0x5b, 0x8e, 0x79, 0x30, 0x0e, 0x39, 0x93, 0xb9, 0x2e, 0xe0, 0x05,
		0x78, 0x79, 0x02, 0x2f, 0x47, 0xc6, 0x8f, 0x09, 0x66, 0xb0, 0x9b, 0x08, 0xb4, 0xfc, 0x12, 0x5a,
		0x6c, 0xb3, 0x63, 0xda, 0x27, 0xd8, 0x81, 0x06, 0x66, 0x7e, 0x11, 0x33, 0x56, 0xf3, 0xce, 0xcb,
		0x20, 0x6f, 0x06, 0x5a, 0x9e, 0x45, 0x8b, 0x6d, 0x76, 0xac, 0xfa, 0xb1, 0xd1, 0x80, 0x6f, 0x01,
		0x5a, 0x5e, 0x46, 0x0b, 0xd4, 0x0b, 0x80, 0x9e, 0xf7, 0xa3, 0x88, 0x65, 0x0f, 0x37, 0x43, 0xa7,
		0x53, 0x60, 0xf8, 0x00, 0x3a, 0x80, 0xce, 0x9b, 0xa0, 0xc3, 0xb0, 0xc7, 0x0e, 0xf0, 0x21, 0x03,
		0x1f, 0xce, 0xbd, 0xe0, 0x80, 0x11, 0x15, 0x18, 0x31, 0xef, 0x11, 0x07, 0x90, 0xa8, 0x00, 0x89,
		0x77, 0xef, 0x38, 0x70, 0x44, 0x05, 0x47, 0xdc, 0x7b, 0xca, 0x81, 0x24, 0x52, 0x48, 0xe2, 0xdb,
		0x08, 0x0a, 0x20, 0x11, 0x02, 0x52, 0x0d, 0x2e, 0x09, 0x48, 0x5a, 0x12, 0x92, 0xe0, 0x92, 0x00,
		0xa4, 0xf7, 0x02, 0x89, 0x6d, 0xcf, 0x3a, 0x20, 0x44, 0x0a, 0x42, 0xcc, 0xf6, 0xe4, 0x81, 0x1e,
		0x7a, 0xe8, 0xe1, 0xd8, 0xe3, 0x0e, 0x1c, 0x91, 0xc2, 0x11, 0x36, 0xd0, 0x00, 0x9d, 0x37, 0x42,
		0x87, 0x57, 0x4f, 0x3c, 0xc0, 0x43, 0x0a, 0x3c, 0x6c, 0x7b, 0xe5, 0x81, 0x23, 0x2a, 0x38, 0xe2,
		0xdc, 0x43, 0x0f, 0x14, 0x51, 0x42, 0x11, 0xef, 0xde, 0x7a, 0x60, 0x89, 0x0c, 0x96, 0x18, 0xf7,
		0xdc, 0x03, 0x45, 0x54, 0x50, 0xc4, 0xb9, 0x17, 0x1f, 0x28, 0xa2, 0x82, 0x22, 0xc7, 0x74, 0xeb,
		0xe6, 0xa1, 0x71, 0xdc, 0x70, 0xdc, 0x23, 0xd3, 0xb1, 0xad, 0x03, 0x80, 0x08, 0x20, 0x7a, 0x2d,
		0x88, 0x8e, 0x9b, 0x69, 0x6b, 0x9a, 0x59, 0x77, 0x1b, 0x1d, 0xb4, 0x15, 0x01, 0x44, 0x6f, 0x00,
		0xd1, 0x84, 0x5f, 0x9b, 0x75, 0x44, 0x34, 0xe0, 0xe8, 0x1d, 0x38, 0x72, 0xac, 0x86, 0xf5, 0x5f,
		0xe6, 0x28, 0xc2, 0x09, 0x4e, 0xeb, 0xbe, 0x3a, 0x0b, 0x32, 0x03, 0xca, 0x98, 0x5f, 0x02, 0x2c,
		0xe0, 0x91, 0x00, 0x0b, 0xf8, 0x22, 0xf0, 0x02, 0x5e, 0x08, 0xb4, 0x14, 0x1c, 0x2d, 0xd3, 0xc3,
		0xed, 0x0f, 0x8c, 0x76, 0xaa, 0x5e, 0x61, 0xbb, 0x46, 0xe3, 0x6b, 0xcb, 0xb6, 0x9c, 0x6f, 0x47,
		0x40, 0x0a, 0x90, 0xf2, 0x2c, 0x52, 0xee, 0xfe, 0x06, 0xa8, 0x00, 0x2a, 0xcf, 0x40, 0x05, 0x92,
		0x38, 0xc0, 0xcf, 0xda, 0x06, 0x27, 0x86, 0x9e, 0xa7, 0xc8, 0x08, 0xe2, 0x18, 0xb4, 0x52, 0x08,
		0xa1, 0x42, 0xba, 0xc6, 0xf7, 0x95, 0xfe, 0xfd, 0xa4, 0x7d, 0x1f, 0xe9, 0x5a, 0x47, 0xd3, 0x32,
		0xa2, 0x01, 0xab, 0x64, 0x28, 0x15, 0xc4, 0x5e, 0x2c, 0x03, 0x55, 0xda, 0x23, 0x1c, 0xa2, 0x4a,
		0x51, 0xf7, 0x42, 0x5c, 0x7a, 0x43, 0x2f, 0xbe, 0x18, 0x07, 0xa3, 0x72, 0x30, 0x14, 0xaa, 0x1b,
		0xa8, 0xbe, 0x1c, 0xe8, 0x4a, 0xc4, 0xd7, 0x41, 0xf8, 0xb7, 0x2e, 0x55, 0x14, 0x7b, 0xaa, 0x2b,
		0xca, 0x0f, 0xdf, 0x88, 0x16, 0xde, 0x29, 0x0f, 0xc3, 0x20, 0x0e, 0xba, 0x81, 0x1f, 0xa5, 0xdf,
		0x95, 0x65, 0x24, 0xa3, 0xb2, 0x2f, 0xae, 0x84, 0x3f, 0xfd, 0x52, 0xf6, 0xa5, 0xfa, 0x5b, 0x8f,
		0x62, 0x2f, 0x16, 0x7a, 0xcf, 0x8b, 0xbd, 0x73, 0x2f, 0x12, 0x65, 0x3f, 0x1a, 0x96, 0x63, 0xff,
		0x2a, 0x1a, 0xff, 0x51, 0x96, 0xc3, 0xab, 0x9a, 0x1e, 0x0a, 0xaf, 0x7b, 0xe1, 0x9d, 0x4b, 0x5f,
		0xc6, 0xb7, 0xe5, 0x61, 0x28, 0xfa, 0xf2, 0x46, 0x44, 0xd3, 0x6f, 0xca, 0xd1, 0xe8, 0x3c, 0xf9,
		0xe9, 0xc9, 0xd7, 0xc9, 0x2f, 0x44, 0xc1, 0x28, 0xec, 0x0a, 0x3d, 0x0c, 0x46, 0xb1, 0x08, 0x75,
		0xd9, 0x2b, 0x27, 0x1f, 0x41, 0x33, 0x7e, 0xd2, 0x5b, 0x4b, 0xb4, 0x2c, 0x22, 0xb6, 0xaa, 0x4b,
		0xe2, 0x26, 0x0e, 0x3d, 0x7d, 0x34, 0x86, 0xf9, 0xb9, 0x2f, 0x48, 0xae, 0xe8, 0xd2, 0xf5, 0x85,
		0x50, 0x64, 0x53, 0x40, 0xc2, 0x1e, 0x70, 0x46, 0xc4, 0x37, 0x36, 0x26, 0x1e, 0xa3, 0x1c, 0xdf,
		0x0e, 0x85, 0xf6, 0x87, 0xf6, 0x21, 0xe8, 0xea, 0x63, 0xe7, 0xa5, 0xfb, 0x51, 0xef, 0x5c, 0x1f,
		0xbf, 0x19, 0xed, 0x59, 0xed, 0x47, 0x34, 0x09, 0xa6, 0x0c, 0xde, 0xaa, 0x7f, 0x20, 0x5c, 0x37,
		0x28, 0x75, 0x12, 0xf7, 0x48, 0x3a, 0x18, 0x25, 0x76, 0x7e, 0x17, 0xb7, 0xd7, 0x41, 0xd8, 0x1b,
		0x3f, 0x91, 0x04, 0xd1, 0xb4, 0x13, 0xd2, 0xd2, 0x37, 0x2f, 0x32, 0xc2, 0xc1, 0xe8, 0x52, 0xa8,
		0xb8, 0xb4, 0xa7, 0xc5, 0xe1, 0x48, 0x10, 0x37, 0x78, 0xce, 0xda, 0xa5, 0x40, 0xfe, 0x37, 0x94,
		0x32, 0x5e, 0xff, 0x10, 0xea, 0x22, 0xea, 0x86, 0x72, 0x48, 0x9e, 0x1e, 0xde, 0x73, 0x90, 0x2d,
		0xe5, 0xdf, 0x6a, 0x52, 0x75, 0xfd, 0x51, 0x4f, 0x68, 0xf1, 0x85, 0xd0, 0xac, 0xf6, 0x55, 0x4d,
		0x9b, 0xf8, 0x15, 0xcd, 0x4e, 0x68, 0x97, 0x66, 0xd5, 0xb5, 0x6e, 0xa0, 0x62, 0x4f, 0x2a, 0x11,
		0x6a, 0xe3, 0xf5, 0x7b, 0xaa, 0xc6, 0x3f, 0x19, 0x8d, 0xce, 0x75, 0xa7, 0x71, 0xa2, 0xc9, 0x48,
		0x4b, 0xa0, 0x56, 0xd9, 0xda, 0xa0, 0xbe, 0xb0, 0x99, 0xf8, 0xcb, 0x87, 0x3e, 0xb3, 0x37, 0x87,
		0x2c, 0xfa, 0xb5, 0x3c, 0x76, 0xee, 0x73, 0xc1, 0x85, 0x2e, 0x79, 0x51, 0xa0, 0x36, 0x51, 0xa4,
		0xda, 0x04, 0x39, 0xab, 0xce, 0x90, 0xe5, 0xf1, 0xad, 0xd9, 0x14, 0xb8, 0x56, 0x43, 0x30, 0x54,
		0x95, 0xa2, 0x38, 0x1c, 0x75, 0x63, 0x35, 0x25, 0x3f, 0xcd, 0xc9, 0xed, 0xb3, 0xa6, 0x77, 0xcf,
		0x6d, 0x4f, 0xef, 0x99, 0x6b, 0x45, 0x32, 0x72, 0x1b, 0xe3, 0x9b, 0xe5, 0x36, 0xa2, 0xa1, 0xeb,
		0xf8, 0x57, 0xae, 0x35, 0xbc, 0xaa, 0xd9, 0x73, 0xb7, 0xc4, 0x6d, 0x27, 0x77, 0xc2, 0xed, 0x24,
		0x77, 0x20, 0xf9, 0xe7, 0x49, 0x80, 0x98, 0xc4, 0x07, 0xab, 0x47, 0xcb, 0xed, 0xd3, 0x71, 0x5b,
		0x84, 0x1c, 0x44, 0x69, 0x82, 0x66, 0x3d, 0x92, 0xbd, 0x88, 0x9c, 0x77, 0x48, 0x29, 0xfa, 0xbc,
		0x91, 0xc4, 0x9c, 0xeb, 0x77, 0xa9, 0xc6, 0x04, 0xb5, 0x42, 0xcc, 0xac, 0x83, 0xc4, 0x81, 0x96,
		0xf6, 0xb4, 0x4d, 0x62, 0x86, 0x4d, 0x7c, 0x06, 0xcd, 0x40, 0x34, 0x83, 0xdb, 0xb4, 0x5c, 0x40,
		0xd1, 0x7b, 0x13, 0x4f, 0xdf, 0xe6, 0x53, 0xb6, 0xc9, 0xa2, 0x25, 0x9a, 0xad, 0xb1, 0xc9, 0xd0,
		0xee, 0x65, 0x65, 0x33, 0x60, 0x62, 0x9b, 0x85, 0x15, 0x01, 0xaf, 0xcb, 0x90, 0xa6, 0xc3, 0xbb,
		0x8b, 0xab, 0x74, 0x3d, 0xca, 0x22, 0x07, 0xa0, 0xea, 0x52, 0x68, 0x52, 0x01, 0xf2, 0x94, 0x80,
		0x03, 0x35, 0x60, 0x44, 0x11, 0xb8, 0x50, 0x05, 0x76, 0x94, 0x81, 0x1d, 0x75, 0xe0, 0x45, 0x21,
		0x68, 0x52, 0x09, 0xa2, 0x94, 0x82, 0x3c, 0xb5, 0x48, 0x0d, 0x9c, 0x74, 0x2b, 0xb1, 0xd9, 0x0c,
		0x9c, 0x98, 0x4b, 0x7c, 0x3d, 0xd3, 0x26, 0x1a, 0x6c, 0x08, 0x07, 0x27, 0xe2, 0xc1, 0x90, 0x80,
		0x70, 0x23, 0x22, 0x6c, 0x09, 0x09, 0x5b, 0x62, 0xc2, 0x93, 0xa0, 0xd0, 0x26, 0x2a, 0xc4, 0x09,
		0x0b, 0x1b, 0xe2, 0x92, 0x1a, 0xea, 0xf9, 0x83, 0x20, 0x94, 0xf1, 0xc5, 0x25, 0x1f, 0x07, 0x36,
		0x8b, 0x11, 0x77, 0xa6, 0x33, 0xf1, 0x03, 0x53, 0x62, 0xb3, 0xc9, 0xc4, 0x5c, 0x2e, 0x04, 0x87,
		0x23, 0xd1, 0x61, 0x4c, 0x78, 0xb8, 0x12, 0x1f, 0xf6, 0x04, 0x88, 0x3d, 0x11, 0xe2, 0x4d, 0x88,
		0x78, 0x10, 0x23, 0x26, 0x04, 0x29, 0x85, 0x82, 0x73, 0x3b, 0x14, 0x3c, 0x3d, 0xf6, 0x48, 0xaa,
		0xf8, 0x33, 0x27, 0x7f, 0x3d, 0xa5, 0x1f, 0x3b, 0x8c, 0x4c, 0xb6, 0x3d, 0x35, 0x10, 0xec, 0x14,
		0x32, 0xf8, 0x69, 0x1b, 0x94, 0x8e, 0xa4, 0x62, 0x17, 0xc8, 0x53, 0xe3, 0x13, 0x21, 0x15, 0x3e,
		0x3c, 0x75, 0xc1, 0xfe, 0xc3, 0xd0, 0xeb, 0xc6, 0x32, 0x50, 0x75, 0x39, 0x90, 0x71, 0xc4, 0xf8,
		0x42, 0x9a, 0x62, 0xe0, 0xc5, 0xf2, 0x6a, 0xfc, 0x2c, 0xfa, 0x9e, 0x1f, 0x09, 0x08, 0xa9, 0x64,
		0xb1, 0x74, 0xbd, 0x1b, 0xfe, 0x4b, 0x77, 0x6b, 0x67, 0x07, 0x8b, 0x17, 0x8b, 0x77, 0x0d, 0x88,
		0x39, 0x3f, 0x6b, 0x79, 0x88, 0xed, 0xd0, 0xbf, 0x9f, 0x0c, 0x82, 0x4b, 0xa9, 0xef, 0x7b, 0x83,
		0x88, 0x5f, 0x29, 0x78, 0x62, 0x36, 0xca, 0xc0, 0xab, 0x30, 0x17, 0x65, 0xe0, 0x0c, 0x81, 0x8c,
		0x32, 0x70, 0x76, 0xcb, 0x10, 0x65, 0xe0, 0x9c, 0x2f, 0x00, 0x65, 0x60, 0x70, 0x8e, 0x29, 0x14,
		0xf8, 0x96, 0x81, 0x85, 0x1a, 0x5d, 0x8a, 0xd0, 0x63, 0x22, 0xdd, 0xf0, 0x90, 0x84, 0x54, 0xaa,
		0x8c, 0x6c, 0x36, 0xd5, 0xe8, 0x92, 0x5f, 0x9c, 0x71, 0x82, 0x4e, 0x1c, 0x4a, 0x35, 0x60, 0x59,
		0xa4, 0x29, 0x6d, 0x26, 0x6a, 0xb7, 0xa6, 0x51, 0x3f, 0x31, 0x6d, 0xc7, 0xea, 0x98, 0x47, 0x66,
		0xd3, 0x29, 0x31, 0xac, 0x92, 0x55, 0x92, 0x71, 0xf0, 0x56, 0xdd, 0xe4, 0x68, 0xfc, 0xd6, 0xc4,
		0x78, 0xb7, 0xfd, 0xad, 0xcd, 0xd1, 0xfc, 0xed, 0xb1, 0xf9, 0xe6, 0x8f, 0x76, 0xc3, 0x3a, 0xb0,
		0x1c, 0xb7, 0x79, 0xdc, 0x68, 0x70, 0xbc, 0x8a, 0xea, 0xf8, 0x2a, 0x4e, 0x8c, 0xc6, 0x31, 0x4b,
		0x08, 0xed, 0x8c, 0xad, 0x6f, 0xb4, 0x0e, 0x8c, 0x06, 0x2f, 0x6d, 0x6a, 0x66, 0x15, 0xf9, 0x92,
		0x13, 0x58, 0x09, 0xa1, 0x65, 0xe8, 0xea, 0xef, 0xaf, 0xd0, 0x3d, 0x6d, 0x9b, 0x21, 0xcc, 0x27,
		0x08, 0x67, 0xb5, 0xc9, 0x7d, 0xc7, 0x28, 0xc7, 0xd1, 0x89, 0xfc, 0xdc, 0xc3, 0x13, 0xa6, 0x27,
		0xb1, 0x69, 0x4f, 0xdb, 0x62, 0x68, 0xfc, 0x43, 0x76, 0xc3, 0x72, 0x0b, 0x67, 0x1a, 0x99, 0xf6,
		0xb4, 0x2a, 0x76, 0x41, 0x90, 0xef, 0xd3, 0xf7, 0xd3, 0x32, 0x8a, 0x8d, 0x38, 0x0e, 0x79, 0xe5,
		0xfc, 0x47, 0x52, 0x99, 0xbe, 0xb8, 0x14, 0x8a, 0xdb, 0x46, 0x6f, 0xe9, 0xc8, 0xbb, 0x99, 0xb3,
		0xbc, 0xf2, 0xb9, 0x5a, 0xad, 0xed, 0x56, 0xab, 0x9b, 0xbb, 0xdb, 0xbb, 0x9b, 0x5f, 0x76, 0x76,
		0x2a, 0xb5, 0x0a, 0xa7, 0xae, 0xb0, 0x56, 0xd8, 0x13, 0xa1, 0xe8, 0xed, 0xdf, 0x96, 0xf6, 0x34,
		0x35, 0xf2, 0x7d, 0x8e, 0xa6, 0x1f, 0x47, 0x22, 0x64, 0xb5, 0xd3, 0x8e, 0xfd, 0xd5, 0x65, 0x3c,
		0xff, 0xab, 0x69, 0xbf, 0x0b, 0xb3, 0xfd, 0xd5, 0x89, 0xd9, 0xd8, 0x5f, 0x5d, 0x85, 0xb9, 0xd8,
		0x5f, 0xcd, 0x10, 0xc8, 0xd8, 0x5f, 0xcd, 0x6e, 0x19, 0x62, 0x7f, 0x35, 0xe7, 0x0b, 0xc0, 0xfe,
		0x2a, 0x38, 0xc7, 0x14, 0x0a, 0xbc, 0xc7, 0x6c, 0xb6, 0xb7, 0x18, 0x6e, 0xad, 0xee, 0x62, 0xce,
		0x66, 0xc5, 0x2f, 0xcc, 0xd9, 0x64, 0x6b, 0x3c, 0xe6, 0x6c, 0xa8, 0xf8, 0x46, 0xcc, 0xd9, 0xe4,
		0xb0, 0x74, 0x8b, 0x30, 0x67, 0x53, 0xdd, 0xfa, 0x52, 0xfd, 0x52, 0xdb, 0xdd, 0xfa, 0x82, 0x71,
		0x1b, 0xac, 0xe1, 0x75, 0x20, 0xe8, 0xfc, 0xac, 0xc5, 0xb8, 0xcd, 0x3a, 0x58, 0x48, 0x5d, 0xc0,
		0x8a, 0xc9, 0x49, 0xc8, 0xa9, 0xbd, 0x85, 0x38, 0x65, 0x67, 0xee, 0x20, 0x90, 0xb9, 0xef, 0x29,
		0x1f, 0x89, 0x4c, 0x7f, 0xb1, 0x51, 0x3e, 0x50, 0x92, 0xc7, 0x6e, 0x10, 0xab, 0x5d, 0x20, 0x26,
		0xbb, 0x3f, 0x50, 0x8f, 0x5d, 0x25, 0x50, 0xa1, 0x1e, 0xbb, 0xba, 0xe5, 0x05, 0xf5, 0xd8, 0xac,
		0x99, 0x18, 0xd4, 0x63, 0xd7, 0x8d, 0x7c, 0xb3, 0xd9, 0xad, 0x49, 0x3d, 0xae, 0x2f, 0xbc, 0x7e,
		0x28, 0xfa, 0x1c, 0x3c, 0xee, 0x6c, 0xf2, 0x8d, 0xc1, 0xfe, 0x4c, 0xa9, 0x3d, 0xcd, 0x67, 0xd2,
		0x23, 0xdf, 0x27, 0x14, 0x0c, 0xa9, 0x40, 0x81, 0x2c, 0xa3, 0x7a, 0xf6, 0xc6, 0x77, 0x71, 0x4b,
		0x9d, 0xf4, 0xf3, 0x68, 0x23, 0xe6, 0xd3, 0x36, 0xcc, 0xba, 0x4d, 0x98, 0x51, 0x5b, 0x30, 0xa3,
		0x36, 0x60, 0xaa, 0xde, 0x89, 0x49, 0x7d, 0xb2, 0xc8, 0x75, 0x49, 0xca, 0xa7, 0xc3, 0xad, 0xec,
		0x18, 0xf0, 0xc9, 0xdf, 0x3a, 0xb2, 0x47, 0x93, 0x84, 0xfd, 0xc4, 0xd9, 0xa9, 0x9c, 0xdc, 0x59,
		0x49, 0xdc, 0xc4, 0xa1, 0xa7, 0x8f, 0xc6, 0xc0, 0x3c, 0xf7, 0x69, 0xe6, 0x7c, 0xa5, 0x50, 0xf4,
		0x45, 0x28, 0x54, 0x97, 0x6e, 0x83, 0x18, 0x83, 0x13, 0x35, 0x7b, 0xa1, 0xd7, 0x8f, 0x75, 0x29,
		0xe2, 0x7e, 0x52, 0xc1, 0xd1, 0x23, 0x31, 0x18, 0xd3, 0x2c, 0x3d, 0x0c, 0x46, 0xb1, 0x54, 0x03,
		0x5d, 0xdc, 0xc4, 0x42, 0x45, 0x32, 0x50, 0xd1, 0x86, 0x16, 0x8d, 0xce, 0x75, 0xa7, 0x71, 0xa2,
		0x6d, 0xef, 0x69, 0x4e, 0xe3, 0xe4, 0x54, 0x55, 0xb6, 0x77, 0x3e, 0x69, 0x5b, 0x93, 0x3f, 0x6a,
		0xe3, 0x3f, 0x76, 0x37, 0x70, 0x32, 0xe7, 0x52, 0x12, 0x9c, 0x59, 0x29, 0xf3, 0x0e, 0xe2, 0x38,
		0x9c, 0x73, 0xc9, 0x3c, 0x6d, 0xae, 0x7a, 0xb9, 0xec, 0x35, 0x80, 0x42, 0x03, 0x73, 0xab, 0xce,
		0xe8, 0x81, 0xb7, 0x74, 0x7d, 0x21, 0x14, 0x02, 0xdd, 0xdb, 0x03, 0x5d, 0x5a, 0xaa, 0x8c, 0x6f,
		0x87, 0x42, 0xfb, 0x43, 0xfb, 0x30, 0xdd, 0xb3, 0xd0, 0xfd, 0xa8, 0x77, 0xae, 0x8f, 0xdf, 0x8c,
		0xf6, 0xac, 0xb6, 0x6b, 0x9b, 0xc6, 0xc1, 0x37, 0x63, 0xdf, 0x6a, 0x58, 0xce, 0x9f, 0x6e, 0xdb,
		0x36, 0x0f, 0xad, 0x1f, 0x6e, 0xc7, 0xaa, 0x7f, 0x40, 0x60, 0x5b, 0x6a, 0x60, 0x4b, 0xd0, 0x8c,
		0x98, 0xb6, 0xba, 0x98, 0xf6, 0x5e, 0xb8, 0xa3, 0x6f, 0xe6, 0x0d, 0x0f, 0xa0, 0x2e, 0xa2, 0x6e,
		0x28, 0x87, 0x2c, 0xba, 0xd3, 0x52, 0xc7, 0xd8, 0x52, 0xfe, 0xad, 0x26, 0x55, 0xd7, 0x1f, 0xf5,
		0x84, 0x16, 0x5f, 0x08, 0x6d, 0x52, 0x4a, 0xd0, 0x3a, 0x56, 0x5d, 0xeb, 0x06, 0x2a, 0xf6, 0xa4,
		0x12, 0xa1, 0x36, 0x5e, 0xb0, 0xa7, 0x6a, 0xfc, 0xcf, 0x33, 0x06, 0x24, 0x23, 0x2d, 0xc1, 0xd6,
		0xf6, 0x06, 0xf5, 0x85, 0xcc, 0xa8, 0x97, 0x61, 0xde, 0x47, 0xf6, 0xe6, 0xd0, 0xc4, 0x60, 0x4f,
		0x90, 0x63, 0x23, 0xc3, 0x3d, 0x97, 0xb9, 0x84, 0x85, 0x80, 0x0d, 0x50, 0xe4, 0x25, 0xab, 0xcc,
		0x4b, 0x50, 0xb3, 0x7c, 0x6e, 0x2d, 0xd3, 0xde, 0x7a, 0x29, 0xdc, 0x96, 0x0b, 0x2d, 0x6f, 0x47,
		0x67, 0xb5, 0x12, 0x5a, 0x17, 0xa5, 0x49, 0x8b, 0x3e, 0xb5, 0xe5, 0x90, 0x72, 0xcf, 0x89, 0x79,
		0xc4, 0xfc, 0xc8, 0xac, 0x11, 0x8b, 0x98, 0x59, 0x54, 0x3b, 0xb3, 0x29, 0x77, 0x62, 0x33, 0xe8,
		0xbc, 0xa6, 0x9e, 0x9d, 0xb0, 0xe9, 0xac, 0x66, 0x93, 0x80, 0xf0, 0xe8, 0x9c, 0xc6, 0xfe, 0xf8,
		0xb3, 0x95, 0x1e, 0x49, 0xb3, 0xb7, 0xaf, 0x14, 0x53, 0x6e, 0xd1, 0x4e, 0xdd, 0x71, 0x62, 0x25,
		0xd5, 0xfe, 0x52, 0xd2, 0x83, 0x5a, 0xe4, 0x07, 0xb4, 0x38, 0x0c, 0x66, 0x31, 0x1a, 0xc8, 0xe2,
		0xb8, 0xb9, 0xc3, 0x62, 0x00, 0x8b, 0xf7, 0xf6, 0x0e, 0xf9, 0x81, 0x2b, 0xcc, 0x34, 0xbc, 0xe6,
		0xd1, 0x92, 0x1f, 0xac, 0x4a, 0x3d, 0xa6, 0xec, 0x09, 0x15, 0xcb, 0xf8, 0x96, 0xf6, 0x50, 0x55,
		0x9a, 0xc3, 0x53, 0x9e, 0x0b, 0xb0, 0xa6, 0xb7, 0x72, 0xdf, 0x8b, 0x18, 0x0d, 0xdb, 0x5b, 0x1d,
		0xab, 0xe3, 0x76, 0x8e, 0xf7, 0x9d, 0xc6, 0x89, 0xeb, 0xfc, 0xd9, 0xa6, 0x7e, 0xe8, 0xd0, 0x44,
		0x61, 0x2a, 0x62, 0xa1, 0x21, 0xc8, 0x4c, 0x7c, 0xfb, 0x61, 0xfb, 0x80, 0xd5, 0x3e, 0xa9, 0xba,
		0x76, 0xeb, 0xd8, 0x31, 0x6d, 0xd7, 0xaa, 0x97, 0xa0, 0xcb, 0x0e, 0x44, 0xb4, 0x4f, 0x6a, 0x40,
		0x04, 0x10, 0xb1, 0xd0, 0x62, 0x74, 0xd8, 0x30, 0xbe, 0x76, 0x80, 0x07, 0xe0, 0xe1, 0xae, 0xe5,
		0x0c, 0x68, 0x00, 0x1a, 0x26, 0xb4, 0xb2, 0xc3, 0x81, 0x57, 0x72, 0xe4, 0x97, 0xbc, 0x50, 0x52,
		0x38, 0xbe, 0xc9, 0xc8, 0x8f, 0x14, 0x0f, 0x29, 0x35, 0x20, 0x05, 0x48, 0x29, 0x1a, 0x3f, 0x05,
		0x4e, 0xc0, 0x5b, 0x81, 0x12, 0xba, 0x28, 0x71, 0x8c, 0xaf, 0x80, 0x07, 0xe0, 0xf1, 0x0c, 0x3c,
		0x6a, 0x55, 0x9c, 0x7c, 0xb5, 0xdc, 0xd7, 0x19, 0xea, 0x08, 0x6b, 0x5f, 0x47, 0x60, 0xe1, 0x77,
		0x01, 0x03, 0xf8, 0x57, 0x00, 0x61, 0x35, 0x40, 0xe8, 0xdc, 0x07, 0x82, 0x51, 0xff, 0xb7, 0xdb,
		0x30, 0x9a, 0x28, 0x33, 0x03, 0x0e, 0x33, 0x38, 0x00, 0x0a, 0x80, 0x42, 0x02, 0x85, 0x23, 0xab,
		0xe9, 0x7e, 0xb5, 0x5b, 0xc7, 0x6d, 0xc0, 0x01, 0x70, 0x30, 0x4e, 0x0c, 0xab, 0x61, 0xec, 0x37,
		0x4c, 0x77, 0xdf, 0x68, 0xd6, 0xff, 0x63, 0xd5, 0x9d, 0x6f, 0x80, 0x05, 0x60, 0x91, 0x82, 0xc1,
		0x3d, 0x68, 0x35, 0x3b, 0x8e, 0x6d, 0x58, 0x4d, 0x07, 0xed, 0x0b, 0x00, 0x86, 0x6b, 0xfe, 0x70,
		0xcc, 0x66, 0xdd, 0xac, 0x23, 0x8e, 0x00, 0x17, 0x0b, 0x5b, 0xd3, 0x56, 0xd3, 0x31, 0xed, 0x43,
		0xe3, 0xc0, 0x74, 0x8d, 0x7a, 0xdd, 0x36, 0x3b, 0xf0, 0x18, 0x40, 0xc6, 0x04, 0x19, 0x4d, 0xd3,
		0xfa, 0xfa, 0x6d, 0xbf, 0x65, 0x03, 0x18, 0x00, 0xc6, 0xbd, 0x1e, 0x05, 0xb8, 0x0c, 0x20, 0xe3,
		0x71, 0x64, 0xc0, 0x65, 0x00, 0x18, 0x0f, 0x81, 0xd1, 0xb0, 0x9a, 0xdf, 0x5d, 0xc3, 0x71, 0x6c,
		0x6b, 0xff, 0xd8, 0x31, 0x01, 0x09, 0x40, 0x62, 0x02, 0x89, 0xba, 0xd9, 0x30, 0xfe, 0x04, 0x1a,
		0x80, 0x86, 0x3b, 0x34, 0xb8, 0x27, 0x86, 0x6d, 0x19, 0x8e, 0xd5, 0x6a, 0x02, 0x17, 0xc0, 0x45,
		0x82, 0x0b, 0x6c, 0x80, 0x00, 0x0a, 0x53, 0x28, 0x34, 0x5a, 0x20, 0x94, 0x00, 0xc3, 0x14, 0x0c,
		0x6d, 0xbb, 0xe5, 0x98, 0x07, 0xe3, 0x50, 0x31, 0x99, 0xc3, 0x01, 0x2e, 0xd6, 0x1e, 0x17, 0x47,
		0xc6, 0x8f, 0x09, 0x36, 0xb0, 0x2b, 0x06, 0x54, 0xdc, 0x43, 0x85, 0x6d, 0x76, 0x4c, 0xfb, 0x04,
		0x3b, 0xa6, 0xc0, 0xc6, 0x03, 0x6c, 0x58, 0xcd, 0x3b, 0xaf, 0x81, 0x7c, 0x14, 0xa8, 0x48, 0x50,
		0x61, 0x9b, 0x1d, 0xab, 0x7e, 0x6c, 0x34, 0xe0, 0x2b, 0x80, 0x0a, 0x4c, 0x7d, 0x03, 0x25, 0x6f,
		0x41, 0x0b, 0xab, 0x5e, 0x5e, 0x46, 0x4e, 0xa4, 0x80, 0x30, 0x01, 0x44, 0x00, 0x91, 0xa2, 0xf4,
		0xfe, 0x02, 0x26, 0xb9, 0xc1, 0x84, 0x63, 0x4f, 0x30, 0xe0, 0x92, 0x17, 0x5c, 0x98, 0xf6, 0x0a,
		0x03, 0x30, 0x79, 0x01, 0x86, 0x67, 0x0f, 0x31, 0xf0, 0x92, 0x17, 0x5e, 0xb8, 0xf6, 0x16, 0x03,
		0x31, 0xb9, 0x22, 0x86, 0x5f, 0x03, 0x21, 0x00, 0x93, 0x23, 0x60, 0x6a, 0x70, 0x31, 0x40, 0xcc,
		0x2b, 0x11, 0x03, 0x17, 0x03, 0xc0, 0xfc, 0x2a, 0x60, 0xd8, 0xf5, 0x2e, 0x03, 0x2a, 0xb9, 0x42,
		0x85, 0xc9, 0x1e, 0x32, 0x50, 0x92, 0x3f, 0x4a, 0x38, 0xf5, 0x3a, 0x03, 0x2f, 0xb9, 0xe2, 0x05,
		0x1b, 0x44, 0x80, 0x48, 0x21, 0x7a, 0xa3, 0x01, 0x92, 0x5c, 0x41, 0xc2, 0xae, 0x67, 0x1a, 0x78,
		0xc9, 0x0b, 0x2f, 0x1c, 0x7b, 0xa9, 0x81, 0x96, 0x3c, 0xd1, 0xc2, 0xb3, 0xc7, 0x1a, 0x98, 0xc9,
		0x0d, 0x33, 0x0c, 0x7b, 0xaf, 0x81, 0x96, 0xbc, 0xd0, 0xc2, 0xb1, 0x27, 0x1b, 0x68, 0xc9, 0x0b,
		0x2d, 0x8e, 0xe9, 0xd6, 0xcd, 0x43, 0xe3, 0xb8, 0xe1, 0xb8, 0x47, 0xa6, 0x63, 0x5b, 0x07, 0x00,
		0x0b, 0xc0, 0xf2, 0x14, 0x58, 0x8e, 0x9b, 0x69, 0x0b, 0x94, 0x59, 0x77, 0x1b, 0x1d, 0xb4, 0xb5,
		0x00, 0x2c, 0xcf, 0x80, 0x65, 0xc2, 0x73, 0xcd, 0x3a, 0x22, 0x11, 0xf0, 0xf2, 0x0b, 0x78, 0x71,
		0xac, 0x86, 0xf5, 0x5f, 0xa6, 0x68, 0xc1, 0x49, 0x2a, 0xeb, 0xb2, 0xea, 0x98, 0xcf, 0xe6, 0x31,
		0xe4, 0x7b, 0x00, 0x05, 0x78, 0x1d, 0x40, 0x01, 0xfe, 0x06, 0x5c, 0x80, 0xa7, 0x01, 0x15, 0x44,
		0x50, 0x31, 0x3d, 0x7c, 0xf9, 0xc0, 0x68, 0xa7, 0x53, 0xff, 0xb6, 0x6b, 0x34, 0xbe, 0xb6, 0x6c,
		0xcb, 0xf9, 0x76, 0x04, 0x44, 0x00, 0x11, 0x09, 0x22, 0xee, 0xfe, 0x06, 0x48, 0x00, 0x12, 0x90,
		0x06, 0x01, 0x4e, 0x8a, 0x1c, 0x54, 0x18, 0x79, 0x92, 0x22, 0x22, 0x85, 0x53, 0xb0, 0x49, 0xa1,
		0x82, 0xca, 0xe1, 0x1a, 0xdc, 0x47, 0xba, 0xf7, 0x8f, 0xe6, 0x7d, 0xa3, 0x67, 0x15, 0x2d, 0x8b,
		0x88, 0x05, 0x98, 0x92, 0xa1, 0x54, 0x10, 0x7b, 0xb1, 0x0c, 0x54, 0x69, 0x8f, 0x60, 0x48, 0x29,
		0x45, 0xdd, 0x0b, 0x71, 0xe9, 0x0d, 0xbd, 0xf8, 0x62, 0x1c, 0x3c, 0xca, 0xc1, 0x50, 0xa8, 0x6e,
		0xa0, 0xfa, 0x72, 0xa0, 0x2b, 0x11, 0x5f, 0x07, 0xe1, 0xdf, 0xba, 0x54, 0x51, 0xec, 0xa9, 0xae,
		0x28, 0x3f, 0x7c, 0x23, 0x5a, 0x78, 0xa7, 0x3c, 0x0c, 0x83, 0x38, 0xe8, 0x06, 0x7e, 0x94, 0x7e,
		0x57, 0x96, 0x91, 0x8c, 0xca, 0xbe, 0xb8, 0x12, 0xfe, 0xf4, 0x4b, 0xd9, 0x97, 0xea, 0x6f, 0x3d,
		0x8a, 0xbd, 0x58, 0xe8, 0x3d, 0x2f, 0xf6, 0xce, 0xbd, 0x48, 0x94, 0xfd, 0x68, 0x58, 0x8e, 0xfd,
		0xab, 0x68, 0xfc, 0x47, 0x59, 0x0e, 0xaf, 0x6a, 0x7a, 0x28, 0xbc, 0xee, 0x85, 0x77, 0x2e, 0x7d,
		0x19, 0xdf, 0x96, 0x87, 0xa1, 0xe8, 0xcb, 0x1b, 0x11, 0x4d, 0xbf, 0x29, 0x47, 0xa3, 0xf3, 0xe4,
		0xa7, 0x27, 0x5f, 0xcb, 0xc9, 0x7f, 0x46, 0x2b, 0xb2, 0xd1, 0x59, 0x15, 0x84, 0x56, 0x44, 0x29,
		0xf6, 0x06, 0xe4, 0x96, 0x41, 0xca, 0x9c, 0xc6, 0xc6, 0x11, 0xf3, 0x1e, 0xdf, 0xa5, 0xea, 0x95,
		0xf6, 0xb4, 0x0a, 0x31, 0xb3, 0x0e, 0x12, 0x0f, 0x51, 0xda, 0xd3, 0x36, 0x89, 0x19, 0xd6, 0x4e,
		0xdc, 0x03, 0x4d, 0x4f, 0x3b, 0x83, 0x59, 0xd0, 0xd5, 0xc7, 0x3e, 0x91, 0x60, 0x8e, 0x5f, 0xea,
		0x04, 0xa3, 0xb0, 0x2b, 0x48, 0xde, 0xbe, 0xc9, 0x72, 0x10, 0xb7, 0xd7, 0x41, 0x38, 0x5e, 0x11,
		0xa5, 0x49, 0x20, 0x20, 0x5a, 0x28, 0x29, 0x7d, 0xf3, 0x22, 0x23, 0x1c, 0x8c, 0x2e, 0x85, 0x8a,
		0x4b, 0x7b, 0x5a, 0x1c, 0x8e, 0x04, 0x51, 0x43, 0xe7, 0xac, 0x4c, 0x81, 0x09, 0x86, 0xc9, 0x8a,
		0x61, 0xd6, 0x65, 0x48, 0x94, 0x5a, 0x26, 0xac, 0x8c, 0xac, 0x33, 0x99, 0xf9, 0xe3, 0x89, 0x99,
		0x44, 0xd7, 0x27, 0x4d, 0x02, 0x40, 0x9e, 0x08, 0x70, 0x20, 0x04, 0x8c, 0x88, 0x01, 0x17, 0x82,
		0xc0, 0x8e, 0x28, 0xb0, 0x23, 0x0c, 0xbc, 0x88, 0x03, 0x4d, 0x02, 0x41, 0x94, 0x48, 0x90, 0x27,
		0x14, 0xf3, 0x55, 0x84, 0xed, 0x2d, 0xfa, 0x4e, 0x68, 0xae, 0xae, 0xb0, 0xbd, 0x45, 0xdd, 0x01,
		0x4d, 0x89, 0xc6, 0x26, 0x71, 0x33, 0xa9, 0x13, 0x0e, 0x4e, 0xc4, 0x83, 0x21, 0x01, 0xe1, 0x46,
		0x44, 0xd8, 0x12, 0x12, 0xb6, 0xc4, 0x84, 0x27, 0x41, 0xa1, 0x4d, 0x54, 0x88, 0x13, 0x96, 0xf4,
		0x91, 0x3b, 0xb7, 0x43, 0xc1, 0xcb, 0xe3, 0x8e, 0xa4, 0x8a, 0xc9, 0x73, 0x83, 0x79, 0x7e, 0xb0,
		0xcb, 0xc0, 0x54, 0xdb, 0x53, 0x03, 0xc1, 0xa6, 0x29, 0x8d, 0x4f, 0x9b, 0x51, 0xe9, 0x48, 0x2a,
		0x36, 0x11, 0x37, 0x35, 0x3a, 0xe9, 0x51, 0xa4, 0x4f, 0x18, 0x17, 0xec, 0x3e, 0x0c, 0xbd, 0x6e,
		0x2c, 0x03, 0x55, 0x97, 0x03, 0x19, 0x47, 0x0c, 0x2f, 0xa0, 0x29, 0x06, 0x5e, 0x2c, 0xaf, 0xc6,
		0xf7, 0xbe, 0xef, 0xf9, 0x91, 0x40, 0x8f, 0xe2, 0x2a, 0x96, 0xa4, 0x77, 0xc3, 0x77, 0x49, 0x56,
		0xb7, 0xbe, 0x54, 0xbf, 0xd4, 0x76, 0xb7, 0xbe, 0xec, 0x60, 0x6d, 0x62, 0x6d, 0x16, 0x80, 0x20,
		0xf3, 0xb1, 0xf2, 0x0c, 0x89, 0xc6, 0x3b, 0x96, 0x4f, 0x43, 0x46, 0xb1, 0x11, 0xc7, 0x21, 0x8f,
		0x64, 0xe3, 0x48, 0x2a, 0xd3, 0x17, 0xe3, 0x5c, 0x98, 0x89, 0xab, 0x1a, 0x47, 0xb5, 0x39, 0x8b,
		0x2b, 0x9f, 0xab, 0xd5, 0xda, 0x6e, 0xb5, 0xba, 0xb9, 0xbb, 0xbd, 0xbb, 0xf9, 0x65, 0x67, 0xa7,
		0x52, 0xab, 0x30, 0x08, 0x18, 0xa5, 0x56, 0xd8, 0x13, 0xa1, 0xe8, 0xed, 0xdf, 0x96, 0xf6, 0x34,
		0x35, 0xf2, 0x7d, 0x4e, 0x26, 0x1f, 0x47, 0x22, 0x64, 0x11, 0x1b, 0xa8, 0x7b, 0x0a, 0x71, 0x13,
		0x87, 0x9e, 0x3e, 0x52, 0x51, 0xec, 0x9d, 0xfb, 0x4c, 0x8a, 0x13, 0xa1, 0xe8, 0x8b, 0x50, 0xa8,
		0x2e, 0x72, 0xe8, 0x55, 0x30, 0xaf, 0xd9, 0x98, 0xce, 0xe1, 0xc1, 0x4e, 0x65, 0x7b, 0x73, 0x4f,
		0x33, 0xb4, 0x76, 0xe0, 0xcb, 0xee, 0xad, 0x76, 0x10, 0xa8, 0x38, 0x0c, 0x7c, 0xed, 0x48, 0x74,
		0x2f, 0x3c, 0x25, 0xa3, 0x4b, 0x4d, 0x2a, 0xcd, 0xea, 0xe8, 0x56, 0x47, 0x3b, 0x8e, 0xa4, 0x1a,
		0x9c, 0x2a, 0xa3, 0x77, 0x29, 0x95, 0x8c, 0xe2, 0x30, 0xe1, 0x6e, 0x9a, 0xe3, 0x0d, 0xa2, 0x0d,
		0x2d, 0x1a, 0x9d, 0xeb, 0x4e, 0xe3, 0x44, 0xab, 0x6c, 0x94, 0x18, 0xe5, 0x2d, 0xcc, 0xea, 0xf7,
		0xa9, 0xdd, 0x73, 0x75, 0xfc, 0xbb, 0x65, 0xc2, 0x8c, 0xfc, 0x73, 0x2d, 0xe9, 0xa7, 0x17, 0x30,
		0x5f, 0xda, 0x5f, 0xc5, 0x3a, 0x42, 0x36, 0x84, 0x6c, 0x08, 0xf7, 0x8f, 0xad, 0x65, 0x54, 0xfb,
		0x6a, 0x88, 0x8f, 0x82, 0xa5, 0x76, 0x16, 0x62, 0x24, 0x2c, 0xf6, 0x06, 0x14, 0xc7, 0xc2, 0xe8,
		0xae, 0x1c, 0x34, 0xd9, 0x33, 0xcf, 0xe3, 0x4a, 0xd7, 0x17, 0x42, 0x91, 0x4d, 0xd9, 0x18, 0xf4,
		0x5f, 0x6f, 0x6c, 0x4c, 0x3c, 0x46, 0x39, 0xbe, 0x1d, 0x0a, 0xed, 0x0f, 0xed, 0xc3, 0xb4, 0x6d,
		0x44, 0xf7, 0xa3, 0xde, 0xb9, 0x3e, 0x7e, 0x33, 0xda, 0xb3, 0xda, 0x0f, 0x44, 0x23, 0x8d, 0xaf,
		0x1f, 0xd0, 0xb0, 0xbd, 0xd4, 0xbc, 0x2a, 0x81, 0x31, 0xda, 0xb5, 0x57, 0x97, 0x32, 0xbd, 0x19,
		0xe7, 0x74, 0x79, 0x28, 0xe1, 0x15, 0x58, 0x17, 0x51, 0x37, 0x94, 0x43, 0xf2, 0xb4, 0xef, 0x9e,
		0x2b, 0x6c, 0x29, 0xff, 0x56, 0x93, 0xaa, 0xeb, 0x8f, 0x7a, 0x42, 0x8b, 0x2f, 0x84, 0x16, 0x7b,
		0x03, 0xad, 0x1b, 0xa8, 0xd8, 0x93, 0x4a, 0x84, 0xda, 0x78, 0x89, 0x26, 0x6f, 0xcf, 0x92, 0x66,
		0x19, 0x69, 0x63, 0xdc, 0x9c, 0x2a, 0xf2, 0x55, 0x28, 0x4e, 0x95, 0xa7, 0x79, 0xaf, 0xd8, 0x9b,
		0x83, 0x11, 0x83, 0x9d, 0x04, 0x8e, 0x35, 0xa6, 0x7b, 0x4e, 0xf2, 0x3d, 0x2b, 0x00, 0xd5, 0x84,
		0x22, 0x55, 0x13, 0x7e, 0x43, 0xb5, 0x8a, 0x53, 0xa6, 0x06, 0xc1, 0x9d, 0x6c, 0xaa, 0x2b, 0x14,
		0xf5, 0x2b, 0xa2, 0x38, 0x1c, 0x75, 0x63, 0x35, 0x25, 0x31, 0xcd, 0xc9, 0xcd, 0xb2, 0xa6, 0xf7,
		0xca, 0x6d, 0x4f, 0xef, 0x90, 0x6b, 0x45, 0x32, 0x72, 0x1b, 0xe3, 0x5b, 0xe3, 0x36, 0xa2, 0xa1,
		0xeb, 0xf8, 0x57, 0xae, 0x35, 0xbc, 0xaa, 0xd9, 0x73, 0x37, 0xc0, 0x9d, 0xcc, 0xef, 0xb8, 0x9d,
		0xe4, 0x7a, 0x5d, 0xc7, 0x1b, 0x40, 0x5e, 0x88, 0xfc, 0xfa, 0x2f, 0xc5, 0xde, 0xa0, 0x56, 0x25,
		0x2d, 0x30, 0x54, 0xab, 0x42, 0x62, 0xe8, 0x97, 0xcc, 0x82, 0xc4, 0xd0, 0x3b, 0x80, 0x06, 0x89,
		0xa1, 0x65, 0xa4, 0x5c, 0x90, 0x18, 0x5a, 0x7a, 0x56, 0x05, 0x89, 0x21, 0x96, 0x9c, 0x1a, 0x12,
		0x43, 0xef, 0xf3, 0xc7, 0x90, 0x18, 0x2a, 0x1e, 0x11, 0xe0, 0x40, 0x08, 0x18, 0x11, 0x03, 0x2e,
		0x04, 0x81, 0x1d, 0x51, 0x60, 0x47, 0x18, 0x78, 0x11, 0x07, 0x9a, 0x04, 0x82, 0x28, 0x91, 0x20,
		0x4f, 0x28, 0x88, 0x57, 0x12, 0x58, 0x55, 0x16, 0x9e, 0x22, 0x1a, 0x90, 0x18, 0x5a, 0x1f, 0xe2,
		0xc1, 0x90, 0x80, 0x70, 0x23, 0x22, 0x6c, 0x09, 0x09, 0x5b, 0x62, 0xc2, 0x93, 0xa0, 0xd0, 0x26,
		0x2a, 0xc4, 0x09, 0x4b, 0xfa, 0xc8, 0x79, 0x4a, 0x0c, 0x91, 0xe7, 0x06, 0xf3, 0xfc, 0xe0, 0x33,
		0x24, 0x86, 0x96, 0xfc, 0x82, 0xc4, 0xd0, 0x6a, 0x8d, 0x86, 0xc4, 0x50, 0x5e, 0x3e, 0x0e, 0x12,
		0x43, 0x19, 0x2c, 0x49, 0xce, 0x12, 0x43, 0x3c, 0xb5, 0x23, 0xb0, 0x4a, 0x41, 0x95, 0x0b, 0x64,
		0x25, 0xc4, 0x86, 0xde, 0xb3, 0x7c, 0x20, 0x36, 0xb4, 0xf2, 0xf8, 0x06, 0xb1, 0xa1, 0x3c, 0x4d,
		0x86, 0xd8, 0xd0, 0x92, 0xee, 0x28, 0xc4, 0x86, 0x90, 0x4d, 0xdf, 0x67, 0x5e, 0xab, 0x12, 0x1b,
		0xda, 0x82, 0xd8, 0x50, 0x06, 0x76, 0x43, 0x6c, 0x88, 0xc0, 0x05, 0xac, 0x54, 0x6c, 0x68, 0x0b,
		0x62, 0x43, 0xc8, 0x86, 0x70, 0xff, 0x18, 0x5b, 0x06, 0xb1, 0xa1, 0xf7, 0xd9, 0x59, 0x94, 0x71,
		0xb8, 0x5a, 0x15, 0x72, 0x43, 0x7c, 0x2d, 0x82, 0xdc, 0xd0, 0xeb, 0x6d, 0x84, 0xdc, 0xd0, 0xfb,
		0x92, 0xb2, 0x37, 0xca, 0xb0, 0xd4, 0xaa, 0x10, 0x1c, 0x5a, 0x6e, 0x6e, 0x05, 0xc1, 0xa1, 0x15,
		0xa7, 0x4d, 0xef, 0x40, 0x3a, 0x24, 0x87, 0xde, 0x70, 0xef, 0x0b, 0x23, 0x39, 0x54, 0xab, 0xfe,
		0x92, 0xe4, 0xca, 0x16, 0x44, 0x87, 0x56, 0xe3, 0x19, 0x21, 0x3a, 0x94, 0xad, 0xa3, 0x7c, 0xdf,
		0x1a, 0x40, 0x5d, 0xa1, 0x48, 0x75, 0x05, 0xc8, 0x0e, 0xb1, 0xca, 0xd8, 0x20, 0x3b, 0x94, 0x55,
		0x9d, 0x65, 0xdd, 0x84, 0x87, 0x6a, 0x55, 0x48, 0x0f, 0x91, 0xf7, 0x01, 0xa5, 0x98, 0xe2, 0x60,
		0xc0, 0xdd, 0x7c, 0xe0, 0xd8, 0x3a, 0x9a, 0xc2, 0x43, 0x9b, 0x10, 0x1e, 0xfa, 0x35, 0xc3, 0x20,
		0x3c, 0x54, 0xe4, 0x14, 0x0c, 0xc2, 0x43, 0x2b, 0xcd, 0xac, 0x20, 0x3c, 0xc4, 0x92, 0x55, 0x93,
		0x1d, 0xb7, 0x4b, 0x3d, 0x9e, 0x2f, 0xbc, 0x7e, 0x28, 0xfa, 0x14, 0x3d, 0xde, 0x4c, 0xd8, 0x87,
		0xe0, 0x99, 0xfd, 0xa5, 0xf6, 0x34, 0x11, 0xb9, 0x57, 0x1a, 0x06, 0xcf, 0xa5, 0x6c, 0x09, 0x11,
		0xdf, 0x30, 0x0e, 0x94, 0xc4, 0x28, 0x2d, 0xcd, 0x16, 0x7d, 0xba, 0xad, 0xf8, 0xac, 0x5a, 0xee,
		0x09, 0xb7, 0xd6, 0x13, 0x6e, 0xa1, 0xa7, 0xe2, 0x2c, 0x88, 0x96, 0xe5, 0x0a, 0x51, 0x8e, 0x23,
		0xc4, 0x79, 0x56, 0x56, 0x80, 0xa3, 0x41, 0x49, 0xf2, 0x27, 0x00, 0xf9, 0x5a, 0x90, 0xb3, 0x37,
		0xa1, 0xe6, 0x45, 0x78, 0x7b, 0x8f, 0x7c, 0x97, 0x54, 0x7e, 0x40, 0xce, 0x11, 0xc4, 0xa5, 0x91,
		0xea, 0x89, 0xbe, 0x54, 0xa2, 0xa7, 0xcf, 0x1e, 0x42, 0xde, 0x38, 0xbe, 0xd3, 0xa7, 0x59, 0x30,
		0x2d, 0xe7, 0xc5, 0x4e, 0x43, 0x0f, 0x97, 0x4c, 0x1d, 0x9a, 0x52, 0xdd, 0x99, 0x60, 0x9d, 0x99,
		0x5a, 0x5d, 0x99, 0x6c, 0x1d, 0x99, 0x6c, 0xdd, 0x98, 0x66, 0x9d, 0x78, 0xbd, 0x09, 0x17, 0x15,
		0x7d, 0xd8, 0x85, 0xe8, 0x44, 0x67, 0x9d, 0x3f, 0x15, 0x3f, 0xa9, 0x2c, 0x77, 0x5a, 0xb2, 0xf2,
		0xe4, 0xb6, 0x75, 0x29, 0x6e, 0xe7, 0x12, 0xde, 0xc6, 0xa5, 0xba, 0x7d, 0x4b, 0x7e, 0xdb, 0x96,
		0xfc, 0x76, 0x2d, 0xed, 0x6d, 0x5a, 0x6c, 0xbd, 0x50, 0x0c, 0xcb, 0x77, 0x85, 0x10, 0x92, 0xe7,
		0xbf, 0x90, 0x3e, 0xf7, 0x05, 0x07, 0xbe, 0xf1, 0x0f, 0xd4, 0x0c, 0x02, 0x36, 0xf5, 0xc0, 0xcd,
		0x26, 0x80, 0xb3, 0x09, 0xe4, 0x3c, 0x02, 0x3a, 0xad, 0xc0, 0x4e, 0x2c, 0xc0, 0x93, 0x0d, 0xf4,
		0xa9, 0x61, 0xbe, 0x50, 0x83, 0x64, 0xd7, 0x83, 0xf8, 0x89, 0x6f, 0x53, 0x3b, 0x69, 0x1f, 0xf9,
		0xf6, 0xff, 0xd9, 0xfb, 0xde, 0xa6, 0xb6, 0x91, 0xe5, 0xeb, 0xf7, 0xfb, 0x29, 0xa6, 0x5c, 0xb7,
		0x2a, 0x9b, 0x2a, 0x0c, 0xd8, 0x18, 0x08, 0x54, 0xed, 0x0b, 0x83, 0x45, 0xa2, 0xbb, 0xc6, 0x50,
		0xb6, 0xe1, 0x66, 0xef, 0xc2, 0x55, 0x09, 0x7b, 0x6c, 0xe6, 0x59, 0x31, 0x76, 0x49, 0x32, 0x81,
		0xdf, 0x6e, 0xbe, 0xfb, 0x53, 0x92, 0x6d, 0x61, 0x30, 0xe4, 0x0f, 0xc8, 0x52, 0xf7, 0xe8, 0xf0,
		0x62, 0x93, 0x78, 0x49, 0xe8, 0x91, 0x4e, 0x77, 0x9f, 0xee, 0x99, 0x3e, 0xb3, 0x89, 0x2b, 0xdf,
		0x8c, 0xa3, 0x04, 0x8c, 0xa8, 0x01, 0x17, 0x8a, 0xc0, 0x8e, 0x2a, 0xb0, 0xa3, 0x0c, 0xbc, 0xa8,
		0x03, 0x4d, 0x0a, 0x41, 0x94, 0x4a, 0x24, 0xaf, 0x96, 0xfc, 0xcd, 0x29, 0x8f, 0x6e, 0x4c, 0xf9,
		0x40, 0x39, 0x5e, 0xce, 0xd2, 0x37, 0x61, 0x5d, 0x62, 0x26, 0x17, 0xa4, 0xf0, 0xd0, 0xd3, 0xe6,
		0x73, 0x05, 0x19, 0xb3, 0x8b, 0x50, 0xd8, 0x5e, 0xad, 0xc0, 0xef, 0x4a, 0x85, 0xaf, 0x3c, 0x84,
		0xe0, 0xf9, 0xb9, 0x5a, 0x75, 0x7b, 0x1b, 0xce, 0x06, 0x67, 0x63, 0x40, 0x4c, 0xe9, 0x5b, 0x77,
		0x09, 0x25, 0x18, 0xae, 0xc1, 0x9c, 0xa6, 0xfe, 0xc2, 0x52, 0x69, 0x41, 0x50, 0x87, 0xe1, 0x69,
		0x55, 0x81, 0xa6, 0xe0, 0x2b, 0x0d, 0x44, 0x53, 0x30, 0x55, 0x53, 0xd1, 0x14, 0x5c, 0x91, 0xc1,
		0x68, 0x0a, 0x16, 0x8f, 0xdd, 0xa0, 0x29, 0xf8, 0xd6, 0x88, 0x89, 0xa6, 0xe0, 0xdb, 0x4d, 0x44,
		0x53, 0x30, 0xad, 0x4e, 0x05, 0x9a, 0x82, 0xe8, 0x53, 0x18, 0xd0, 0xa7, 0x40, 0x53, 0x70, 0x35,
		0xae, 0x86, 0xa6, 0x20, 0x9c, 0x8d, 0x07, 0x31, 0xa5, 0x6f, 0x1d, 0x9a, 0x82, 0x6c, 0x83, 0x79,
		0xe9, 0x76, 0x16, 0x0f, 0x89, 0x77, 0x05, 0xa7, 0x66, 0xa2, 0x2d, 0xf8, 0x1a, 0xf3, 0xd0, 0x16,
		0x4c, 0x11, 0x88, 0x68, 0x0b, 0xa6, 0xe7, 0x36, 0x68, 0x0b, 0xae, 0xd8, 0x60, 0xb4, 0x05, 0x4d,
		0x2d, 0xc0, 0x18, 0xb5, 0x05, 0xaf, 0x94, 0x76, 0xfd, 0x7b, 0x06, 0x7d, 0xc1, 0x3d, 0xd0, 0x58,
		0x86, 0x16, 0xe1, 0x96, 0x93, 0x9f, 0xb3, 0x8f, 0xa7, 0x30, 0xda, 0x92, 0x04, 0xd6, 0xd2, 0x27,
		0x14, 0xef, 0x96, 0xc5, 0x3d, 0x20, 0xcf, 0x21, 0x10, 0xf7, 0x80, 0x98, 0x51, 0x60, 0x62, 0x1e,
		0xdd, 0xcc, 0x42, 0x12, 0xf3, 0xe8, 0x45, 0x2b, 0x18, 0x31, 0x8f, 0xce, 0x9f, 0x77, 0xe2, 0x1e,
		0x90, 0xb7, 0x27, 0x58, 0xdc, 0x03, 0xc2, 0x9e, 0xe7, 0x42, 0x8c, 0xea, 0x71, 0xa2, 0xc4, 0x3d,
		0x20, 0x3f, 0x62, 0x15, 0xee, 0x01, 0x49, 0xc5, 0x58, 0xdc, 0x03, 0xc2, 0x38, 0x58, 0xe0, 0x1e,
		0x90, 0x6c, 0x1b, 0x56, 0x66, 0xdf, 0x0d, 0x72, 0x36, 0x5f, 0x2d, 0x2e, 0x09, 0xa1, 0x63, 0x01,
		0x2e, 0x09, 0x31, 0x32, 0xb4, 0x14, 0xf6, 0xba, 0x90, 0x5f, 0x0a, 0xe4, 0x44, 0x73, 0x32, 0x9f,
		0x6b, 0xc7, 0x8b, 0x06, 0x7d, 0xa7, 0x43, 0xd7, 0x49, 0xd3, 0x73, 0x42, 0x74, 0x9c, 0x10, 0xfd,
		0xce, 0xcb, 0x7d, 0x89, 0xe4, 0x3e, 0x9e, 0x39, 0x2f, 0x47, 0xae, 0x9c, 0x3e, 0x37, 0xce, 0x27,
		0x5d, 0x67, 0x9f, 0x2c, 0xb3, 0xfd, 0x89, 0x19, 0xfb, 0x75, 0xde, 0xfe, 0xcc, 0xcc, 0x8f, 0xb3,
		0xc5, 0x7c, 0x76, 0xc8, 0xcb, 0xe6, 0x27, 0x65, 0x84, 0xed, 0x92, 0xbc, 0x0b, 0x7d, 0xb7, 0x3c,
		0x89, 0x40, 0x71, 0xe5, 0x65, 0xbb, 0x9b, 0x54, 0xf2, 0xe5, 0x40, 0xfa, 0x52, 0xf7, 0xb2, 0x9f,
		0x7e, 0xcd, 0xc1, 0x79, 0xe7, 0x5b, 0x62, 0xed, 0xa3, 0xc3, 0xed, 0xad, 0xcd, 0x0f, 0xfb, 0xa2,
		0x3d, 0x9a, 0x84, 0x4a, 0x0f, 0x85, 0x7d, 0x7a, 0xbb, 0x23, 0xbe, 0xa8, 0xf0, 0x5a, 0xd8, 0x9d,
		0xb2, 0xdd, 0x59, 0x17, 0xdd, 0xe6, 0xb9, 0xa8, 0x6e, 0xed, 0xe4, 0x90, 0x00, 0xf3, 0x3e, 0x06,
		0xb0, 0xb8, 0xcd, 0xff, 0x00, 0x8e, 0x9c, 0xd8, 0x1b, 0x95, 0x9d, 0xfc, 0x47, 0x3b, 0xf5, 0x3f,
		0x8e, 0x1e, 0xd3, 0x73, 0x7f, 0x66, 0x3f, 0xed, 0x32, 0xbb, 0xd7, 0x5e, 0xfa, 0x72, 0x2d, 0x75,
		0x91, 0x82, 0xe1, 0xa3, 0x0d, 0x6e, 0xf1, 0x9b, 0x78, 0x37, 0x3b, 0x89, 0x52, 0xf6, 0x82, 0xfe,
		0x55, 0x39, 0xfa, 0x30, 0xd8, 0xb7, 0x4f, 0xcf, 0x77, 0x9c, 0xb6, 0x55, 0x3f, 0xfc, 0x54, 0x3f,
		0xb0, 0x9b, 0x76, 0xf7, 0x8f, 0x77, 0x05, 0x8f, 0x8c, 0x31, 0x48, 0x10, 0x14, 0x1f, 0x82, 0xe2,
		0x2b, 0x51, 0xf4, 0x4b, 0x01, 0xfa, 0x10, 0xa5, 0x86, 0x0c, 0x7a, 0xbe, 0x1a, 0xe7, 0xda, 0x84,
		0x48, 0xdc, 0xfd, 0x44, 0x7b, 0xf7, 0x42, 0xe9, 0x9e, 0x37, 0xe9, 0x4b, 0x11, 0x5e, 0xcb, 0x69,
		0xf6, 0x5a, 0xac, 0x1e, 0x44, 0x6f, 0xa4, 0x43, 0x57, 0x69, 0xe9, 0x8b, 0x08, 0xe6, 0xd1, 0x37,
		0x5d, 0xe8, 0x28, 0xa5, 0xc5, 0xaf, 0x56, 0x05, 0x51, 0x6a, 0x5b, 0xcf, 0x0b, 0xfc, 0x04, 0x0e,
		0x49, 0x2e, 0xc6, 0x81, 0xfe, 0xc2, 0xab, 0xcd, 0xb1, 0x59, 0x42, 0xe9, 0xc4, 0xe3, 0xa3, 0xb0,
		0x90, 0x16, 0xda, 0xd0, 0xbb, 0xe1, 0xcd, 0xdf, 0x8c, 0xaa, 0xd7, 0x73, 0xea, 0x41, 0xf1, 0xe8,
		0x3d, 0x65, 0x18, 0x06, 0x53, 0xec, 0x11, 0x67, 0x13, 0x60, 0x56, 0xef, 0x70, 0x19, 0xb8, 0x40,
		0x29, 0x7e, 0xe5, 0x81, 0xef, 0x0d, 0x83, 0xcc, 0xe0, 0x9f, 0xb0, 0x97, 0x85, 0x9f, 0x9d, 0x91,
		0xb3, 0x67, 0x7b, 0x29, 0x65, 0xe6, 0xc3, 0x3d, 0x79, 0x0c, 0xed, 0xe4, 0x38, 0x8c, 0x93, 0x17,
		0x7f, 0xcc, 0x7d, 0x78, 0x26, 0x77, 0x8a, 0x98, 0xef, 0xb0, 0x8b, 0x59, 0x1b, 0x06, 0x59, 0x5f,
		0x82, 0xf8, 0x10, 0x76, 0xb3, 0x77, 0x9c, 0xa5, 0xc8, 0x9f, 0xb5, 0xe3, 0xe4, 0x73, 0x2b, 0x71,
		0x6e, 0x53, 0x9e, 0x79, 0x4e, 0x71, 0x12, 0x98, 0xd2, 0xa4, 0xd4, 0x64, 0xcc, 0xf7, 0xcc, 0x19,
		0xc9, 0x36, 0x63, 0x6e, 0x53, 0x92, 0x66, 0x9f, 0xaa, 0xc8, 0xeb, 0x56, 0xdd, 0xd2, 0xbc, 0x1a,
		0x2d, 0xeb, 0xc9, 0xcd, 0x95, 0xf4, 0xf3, 0x6f, 0x8f, 0x3e, 0x35, 0x28, 0xaf, 0x53, 0xa7, 0xb9,
		0x4a, 0x0f, 0xe4, 0x2e, 0x31, 0x40, 0x41, 0x4a, 0x80, 0x90, 0x64, 0x00, 0x15, 0x69, 0x00, 0x72,
		0x12, 0x00, 0xe4, 0x46, 0xfd, 0x69, 0x8d, 0xf4, 0x17, 0xeb, 0xa4, 0x7e, 0xee, 0xa3, 0xf8, 0x84,
		0x46, 0xee, 0x29, 0x8c, 0xd6, 0x2f, 0x8f, 0xd0, 0x3f, 0x4d, 0xae, 0x45, 0xd9, 0xd5, 0xc9, 0xa1,
		0x8c, 0x99, 0xca, 0x72, 0xe5, 0x4e, 0xa7, 0xa6, 0x66, 0xe4, 0x4b, 0xa2, 0x2a, 0x20, 0x51, 0x20,
		0x51, 0x20, 0x51, 0x20, 0x51, 0x20, 0x51, 0x74, 0x3b, 0x01, 0x89, 0x01, 0x03, 0xcf, 0xcd, 0x70,
		0x63, 0xf1, 0xbb, 0x71, 0x6b, 0x6a, 0x4e, 0xce, 0xfe, 0x40, 0x43, 0x88, 0x90, 0x8c, 0xf0, 0x20,
		0x25, 0xa1, 0x41, 0x82, 0xc2, 0x82, 0xd4, 0x84, 0x04, 0xc9, 0x0a, 0x07, 0x92, 0x15, 0x0a, 0xa4,
		0x29, 0x0c, 0x58, 0x6c, 0x11, 0x0d, 0x32, 0x42, 0x7f, 0x49, 0xc4, 0x91, 0x7a, 0x72, 0x23, 0x7d,
		0x37, 0xe7, 0xb3, 0xa7, 0x4b, 0xd5, 0x56, 0x8d, 0x80, 0x2d, 0x96, 0x9e, 0xdc, 0xd0, 0x89, 0x7f,
		0xdd, 0x51, 0x27, 0xf4, 0x95, 0x1e, 0xd2, 0x12, 0x78, 0xda, 0x8c, 0xcf, 0xcc, 0xd5, 0x4b, 0x50,
		0xe3, 0x7a, 0xf4, 0xaa, 0xec, 0x38, 0xea, 0x12, 0x7a, 0x4f, 0xad, 0x7a, 0xc4, 0xb8, 0x20, 0xe4,
		0x84, 0x1c, 0x44, 0x4b, 0xc5, 0x91, 0x9e, 0x7a, 0x23, 0x0b, 0xd5, 0x46, 0x82, 0x6a, 0x8d, 0x04,
		0x55, 0x1a, 0x73, 0x54, 0xb7, 0xca, 0xb1, 0x43, 0x49, 0xe5, 0x34, 0xc4, 0x12, 0xd5, 0xa4, 0x71,
		0x2a, 0x02, 0xfd, 0x10, 0xf4, 0x43, 0xd0, 0x0f, 0x41, 0x3f, 0x04, 0xfd, 0x10, 0xf4, 0x43, 0x9e,
		0x89, 0x38, 0x13, 0xa5, 0xc3, 0xad, 0x2a, 0xa1, 0x56, 0x08, 0x81, 0x6b, 0x0d, 0x4a, 0x6d, 0x57,
		0x0f, 0xb3, 0xd7, 0xf6, 0x79, 0xe9, 0x8b, 0x96, 0xf6, 0x3c, 0xbd, 0xdb, 0xb0, 0xe6, 0xd7, 0xe4,
		0x53, 0xbb, 0xd9, 0x89, 0xfa, 0x65, 0xf8, 0x74, 0x2f, 0xbd, 0xff, 0x4a, 0xeb, 0x52, 0x03, 0xba,
		0x90, 0xaf, 0x55, 0xf7, 0x6a, 0x7b, 0x3b, 0xbb, 0xd5, 0xbd, 0x6d, 0x60, 0xdf, 0x14, 0xec, 0xa3,
		0x69, 0x19, 0x7f, 0x5d, 0xa2, 0x95, 0x92, 0x7d, 0x2b, 0x65, 0x7c, 0xbb, 0x53, 0x56, 0x3a, 0x94,
		0xfe, 0xc0, 0xed, 0xc9, 0xb2, 0xdb, 0xef, 0xfb, 0x32, 0x20, 0x74, 0xae, 0xe4, 0x05, 0xfb, 0xd0,
		0x58, 0x41, 0x63, 0x05, 0x8d, 0x15, 0x34, 0x56, 0xd0, 0x58, 0x41, 0x63, 0x85, 0x4c, 0xc4, 0x89,
		0x73, 0x15, 0x8d, 0x0c, 0xb5, 0x98, 0xa5, 0x2a, 0x1f, 0x08, 0xd8, 0x72, 0xea, 0x86, 0xa1, 0xf4,
		0x35, 0x99, 0x0e, 0x4b, 0xe9, 0xd7, 0x5f, 0xff, 0xdc, 0x2c, 0xef, 0xb9, 0xe5, 0x41, 0xbd, 0x7c,
		0x74, 0xf9, 0x77, 0x65, 0xad, 0xf6, 0x75, 0xff, 0xfd, 0xdf, 0xbb, 0x5f, 0x9f, 0x7e, 0xf8, 0xcf,
		0x73, 0xdf, 0x56, 0x59, 0xdb, 0xfd, 0xba, 0xff, 0xc2, 0xff, 0xd9, 0xf9, 0xba, 0xff, 0x83, 0xff,
		0xc6, 0xf6, 0xd7, 0x5f, 0x97, 0xbe, 0x35, 0xfa, 0xbc, 0xfa, 0xd2, 0x5f, 0xa8, 0xbd, 0xf0, 0x17,
		0xb6, 0x5e, 0xfa, 0x0b, 0x5b, 0x2f, 0xfc, 0x85, 0x17, 0x4d, 0xaa, 0xbe, 0xf0, 0x17, 0xb6, 0xbf,
		0xfe, 0xb3, 0xf4, 0xfd, 0xbf, 0x3e, 0xff, 0xad, 0x3b, 0x5f, 0xdf, 0xff, 0xf3, 0xd2, 0xff, 0xdb,
		0xfd, 0xfa, 0xcf, 0xfe, 0xfb, 0xf7, 0xf9, 0x07, 0xce, 0x4b, 0x0a, 0x0e, 0x71, 0xd2, 0xb1, 0x3f,
		0x93, 0xf3, 0x8a, 0xff, 0xc1, 0x2d, 0xf2, 0x72, 0x8b, 0x7f, 0x95, 0x50, 0x80, 0x17, 0xb5, 0x00,
		0xd7, 0x52, 0x0d, 0xaf, 0xaf, 0x46, 0x3e, 0xd1, 0xfa, 0x7b, 0xc9, 0x3c, 0x94, 0xdf, 0x28, 0xbf,
		0x51, 0x7e, 0xa3, 0xfc, 0x46, 0xf9, 0x8d, 0xf2, 0x1b, 0xe5, 0x37, 0xca, 0x6f, 0x94, 0xdf, 0x28,
		0xbf, 0x51, 0x7e, 0xa3, 0xfc, 0x46, 0xf9, 0x8d, 0xf2, 0x9b, 0x57, 0xf9, 0x3d, 0x0e, 0x34, 0xb9,
		0x29, 0x82, 0x05, 0x9b, 0x50, 0x68, 0xa3, 0xd0, 0x46, 0xa1, 0x8d, 0x42, 0x1b, 0x85, 0x36, 0x0a,
		0x6d, 0x32, 0x11, 0x67, 0xa2, 0x74, 0xf8, 0x81, 0x50, 0x85, 0xbd, 0x8d, 0xf9, 0x81, 0x27, 0x5f,
		0x98, 0x1f, 0xf8, 0xb6, 0x51, 0x98, 0x1f, 0x78, 0x6d, 0x08, 0xc0, 0xfc, 0xc0, 0x0f, 0x40, 0x9e,
		0xf2, 0xfc, 0x40, 0x75, 0x1b, 0x83, 0x03, 0xc6, 0x80, 0x1e, 0x83, 0x03, 0x68, 0x9c, 0xe4, 0xe4,
		0x14, 0x81, 0xef, 0x0d, 0xcb, 0xb7, 0xb3, 0xa0, 0x42, 0xa4, 0x71, 0xb2, 0x60, 0x13, 0x1a, 0x27,
		0x68, 0x9c, 0xa0, 0x71, 0x82, 0xc6, 0x09, 0x1a, 0x27, 0x68, 0x9c, 0x90, 0x6a, 0x9c, 0x40, 0x79,
		0x01, 0x9d, 0x13, 0x74, 0x4e, 0x50, 0x44, 0xa2, 0x73, 0xc2, 0xad, 0x73, 0x02, 0xe5, 0x05, 0x34,
		0x50, 0xd0, 0x40, 0x31, 0x90, 0x28, 0x42, 0x2e, 0xf6, 0xbb, 0x51, 0x19, 0x72, 0xb1, 0x6f, 0x31,
		0x09, 0x72, 0xb1, 0xf9, 0xb6, 0x2a, 0xef, 0x83, 0x50, 0xde, 0x94, 0x55, 0x9f, 0x50, 0xa7, 0x32,
		0x31, 0x09, 0x8d, 0x4a, 0x34, 0x2a, 0xbf, 0x03, 0x16, 0x34, 0x2a, 0x5f, 0x86, 0x2f, 0x1a, 0x95,
		0x3f, 0x69, 0x18, 0x1a, 0x95, 0xe4, 0xf8, 0x27, 0xbd, 0x46, 0x25, 0x95, 0xf4, 0x24, 0x30, 0x47,
		0xf5, 0x1d, 0x83, 0xfe, 0xdc, 0x2c, 0xef, 0xd5, 0xcb, 0x47, 0x6e, 0x79, 0x70, 0xf9, 0x77, 0xed,
		0xeb, 0xc5, 0xc5, 0xfa, 0x77, 0x3e, 0xc0, 0xf4, 0x0f, 0xe1, 0xe9, 0x9f, 0x9f, 0x7d, 0x99, 0x98,
		0x59, 0xc1, 0x6d, 0xa7, 0xd9, 0x90, 0x06, 0xad, 0x47, 0xe1, 0xf4, 0x06, 0xb5, 0x5c, 0x2f, 0x3d,
		0x0d, 0x7a, 0xd7, 0xf2, 0xc6, 0x1d, 0xcf, 0xee, 0x4b, 0xdf, 0x18, 0x8d, 0xa5, 0xee, 0xc5, 0x95,
		0x43, 0x59, 0xcb, 0xf0, 0xcb, 0xc8, 0xff, 0xab, 0x3c, 0xbf, 0x81, 0x63, 0xe3, 0xe9, 0x07, 0xc1,
		0xd2, 0x27, 0x1b, 0x63, 0x7f, 0x14, 0x8e, 0x7a, 0x23, 0x2f, 0x48, 0x7e, 0xb7, 0x11, 0xd1, 0xa1,
		0x0d, 0x4f, 0xde, 0x4a, 0x6f, 0xf6, 0xcb, 0x86, 0xa7, 0xf4, 0x5f, 0xe5, 0xf8, 0x7a, 0xee, 0x72,
		0xdf, 0x0d, 0xdd, 0x2b, 0x37, 0x90, 0x1b, 0x5e, 0x30, 0xde, 0x08, 0xbd, 0xdb, 0x20, 0xfa, 0xcf,
		0x46, 0x3c, 0x76, 0x1c, 0xf8, 0xde, 0x30, 0x78, 0xf8, 0xed, 0xf4, 0x1e, 0xf7, 0xc2, 0xdc, 0xdb,
		0xfe, 0x8b, 0xc1, 0x3e, 0x10, 0x95, 0x18, 0xf9, 0x5f, 0xed, 0x92, 0x6f, 0x8f, 0x32, 0xff, 0x9e,
		0x24, 0xc9, 0x1e, 0x24, 0x81, 0x9e, 0x23, 0x81, 0x1e, 0x63, 0xd6, 0xfe, 0x98, 0x73, 0x2e, 0x62,
		0x93, 0x83, 0x72, 0x28, 0xdd, 0x4a, 0x41, 0xe8, 0x4f, 0x7a, 0xa1, 0x9e, 0x55, 0x91, 0xad, 0xe9,
		0x62, 0xed, 0xd9, 0x5a, 0x9d, 0xd3, 0xd9, 0x0a, 0x1d, 0x3b, 0x50, 0x81, 0xd3, 0x8c, 0x96, 0xe6,
		0x34, 0x83, 0xb1, 0xd3, 0xf5, 0x6e, 0x1d, 0x7b, 0x7c, 0xbb, 0xd3, 0x89, 0xac, 0xfe, 0xc5, 0xcc,
		0xcc, 0x95, 0xcd, 0x4f, 0xca, 0xc8, 0x17, 0x4b, 0xf2, 0x2e, 0xf4, 0xdd, 0xf2, 0x24, 0x7a, 0xb1,
		0x57, 0x5e, 0xb6, 0xbd, 0x8b, 0x92, 0x2f, 0x07, 0xd2, 0x97, 0xba, 0x97, 0xfd, 0x99, 0xa1, 0x1c,
		0x82, 0xcd, 0xbc, 0x21, 0xd3, 0x3e, 0x3a, 0xdc, 0xa9, 0x54, 0xf6, 0xf6, 0x85, 0x7d, 0x7a, 0xbb,
		0x23, 0xba, 0xbe, 0x3b, 0x18, 0xa8, 0x9e, 0xb0, 0xf4, 0x50, 0x69, 0x29, 0x7d, 0xa5, 0x87, 0x42,
		0x69, 0x61, 0x77, 0xca, 0x76, 0x67, 0x5d, 0x74, 0x9b, 0xe7, 0xa2, 0xb2, 0xb5, 0xb7, 0x9e, 0x47,
		0x00, 0xc8, 0xb9, 0x3f, 0xbc, 0xd8, 0x0f, 0x7e, 0xc0, 0x49, 0x4e, 0x45, 0x13, 0x95, 0x16, 0xf0,
		0xa3, 0x96, 0xef, 0xab, 0x80, 0x64, 0x7a, 0x45, 0xf1, 0x8b, 0x81, 0xbd, 0xaf, 0xd2, 0x97, 0x6b,
		0xa9, 0x8b, 0x14, 0x22, 0xd7, 0xd7, 0xa7, 0x55, 0xf7, 0x46, 0x78, 0x3f, 0x96, 0xe2, 0x37, 0xf1,
		0x6e, 0xb6, 0xbb, 0x51, 0xf6, 0x82, 0xfe, 0x55, 0x39, 0xfa, 0x30, 0xd8, 0xb7, 0x4f, 0xcf, 0x77,
		0x9c, 0x4e, 0xbb, 0xf9, 0xf1, 0x5d, 0xc1, 0x83, 0x63, 0x0c, 0x0e, 0xc4, 0xc5, 0x87, 0xb8, 0xf8,
		0x93, 0xe8, 0xf9, 0xa5, 0x00, 0x9d, 0xbf, 0x52, 0x43, 0x06, 0x3d, 0x5f, 0x8d, 0x73, 0x6d, 0xfb,
		0x25, 0xee, 0x6d, 0xeb, 0x9e, 0x37, 0xe9, 0x4b, 0x11, 0x5e, 0xcb, 0x69, 0xee, 0x8a, 0x5e, 0x44,
		0x9c, 0xa2, 0x46, 0xda, 0xbb, 0x17, 0x11, 0xa0, 0xe3, 0xff, 0x17, 0x7d, 0xa2, 0x02, 0x11, 0xbd,
		0xb1, 0x0b, 0x9d, 0x13, 0x0d, 0x12, 0x44, 0xb6, 0xca, 0x17, 0x3d, 0xbe, 0xbf, 0xf0, 0x32, 0x73,
		0x3c, 0x8b, 0x43, 0x69, 0x5f, 0xfc, 0x51, 0x00, 0x78, 0x3d, 0xbe, 0xd0, 0xe5, 0xe5, 0xcd, 0xc9,
		0x8c, 0xaa, 0xcc, 0x73, 0xea, 0x8e, 0x11, 0xef, 0x8a, 0x65, 0xe3, 0xa3, 0xab, 0xc7, 0x6c, 0x06,
		0x28, 0x9a, 0xca, 0xe8, 0x86, 0xb2, 0xec, 0x8f, 0x26, 0xa1, 0xf4, 0xb3, 0x3c, 0x35, 0xf9, 0x58,
		0xc9, 0xf7, 0x91, 0x09, 0x19, 0x79, 0xcf, 0xfc, 0xa8, 0x49, 0x46, 0x3f, 0x2e, 0xeb, 0x53, 0x8f,
		0x79, 0x9c, 0x6e, 0xcc, 0xf1, 0x14, 0x63, 0x5e, 0x14, 0x2c, 0xf7, 0x53, 0x89, 0xb9, 0xb3, 0xac,
		0x7c, 0x4f, 0x19, 0x9a, 0xd5, 0x6b, 0x6f, 0x28, 0x3f, 0xe3, 0x54, 0x1e, 0x9f, 0x5d, 0xc8, 0xdc,
		0x69, 0x92, 0xb3, 0x87, 0xf1, 0x8f, 0xcf, 0x7a, 0x93, 0x3f, 0xd3, 0xc0, 0x9f, 0x5b, 0x02, 0xc8,
		0x33, 0x11, 0x10, 0x48, 0x08, 0x14, 0x3b, 0x71, 0xb9, 0x1e, 0x5b, 0xa7, 0xd9, 0x8b, 0xcb, 0xed,
		0x58, 0xba, 0xd9, 0x07, 0x99, 0xb2, 0x4e, 0x24, 0xc9, 0x0f, 0xce, 0xbe, 0x92, 0x78, 0x31, 0xe6,
		0x64, 0x5d, 0x51, 0xbc, 0x94, 0x68, 0x72, 0x1a, 0x73, 0xca, 0x7d, 0xce, 0x8a, 0xc2, 0x7c, 0x15,
		0xa1, 0xb9, 0x2a, 0x2a, 0xf3, 0x54, 0xe4, 0xe6, 0xa8, 0xc8, 0xcd, 0x4f, 0xd1, 0x9a, 0x9b, 0x2a,
		0xd6, 0xe9, 0xf3, 0xdc, 0xe7, 0xa3, 0xa8, 0x5d, 0x31, 0x45, 0x61, 0x24, 0x8a, 0xcc, 0x28, 0x14,
		0xae, 0x92, 0x2a, 0xe0, 0x55, 0x52, 0x97, 0x79, 0x02, 0x9f, 0xd2, 0xf0, 0x18, 0xae, 0x8c, 0x2a,
		0xe4, 0x95, 0x51, 0x97, 0x85, 0x22, 0x00, 0x24, 0x04, 0x7a, 0xe8, 0x08, 0xf3, 0x90, 0x16, 0xe4,
		0x21, 0x24, 0xc4, 0x43, 0x48, 0x80, 0x27, 0x2f, 0xcf, 0xc9, 0xf1, 0xa0, 0xfe, 0x72, 0x1b, 0x28,
		0xb7, 0x83, 0xfb, 0x4f, 0xbf, 0x08, 0x29, 0x2d, 0xfc, 0xe4, 0x79, 0xec, 0x0b, 0x5d, 0xa9, 0x6d,
		0xae, 0x43, 0x09, 0xe6, 0x9b, 0x1d, 0x8c, 0xbc, 0x4f, 0xfe, 0x93, 0x6f, 0x66, 0x3c, 0xdb, 0xd4,
		0x78, 0x1d, 0x12, 0x8b, 0x2e, 0x1d, 0x53, 0x34, 0x06, 0x88, 0x3d, 0x99, 0x74, 0x1d, 0x10, 0xc3,
		0xac, 0xcf, 0x1f, 0xdb, 0x5b, 0x3c, 0xfd, 0x95, 0x87, 0x9a, 0x02, 0x26, 0x43, 0xd9, 0x11, 0x4e,
		0x4c, 0x3c, 0xbd, 0x34, 0xb3, 0xd2, 0xb5, 0x9c, 0xf6, 0xc9, 0x59, 0xd7, 0x6a, 0x3b, 0x76, 0x03,
		0x93, 0x4f, 0x98, 0x7c, 0x7a, 0xdd, 0xe4, 0xd3, 0x63, 0x14, 0x61, 0x02, 0x2a, 0x6b, 0x77, 0x5f,
		0x9a, 0x50, 0x09, 0x67, 0x1c, 0x5d, 0x2e, 0x70, 0xf4, 0x69, 0xd2, 0x14, 0x76, 0x23, 0x19, 0x5d,
		0xb9, 0xd0, 0xcf, 0xcd, 0xae, 0x88, 0x1c, 0xeb, 0x48, 0x8c, 0x46, 0x91, 0xaf, 0x12, 0xbf, 0x3d,
		0x1a, 0xf5, 0x76, 0xe0, 0xa1, 0x78, 0x61, 0xfd, 0xd3, 0x30, 0x33, 0x55, 0x98, 0xe2, 0x2b, 0xcb,
		0x79, 0x8d, 0xb7, 0xc9, 0x07, 0x75, 0x65, 0x3b, 0x36, 0xda, 0xee, 0x63, 0xdc, 0xeb, 0xc7, 0x9f,
		0xb9, 0x0a, 0xca, 0xae, 0xa7, 0xdc, 0x20, 0x9f, 0x41, 0xaf, 0x85, 0x1f, 0x8e, 0x11, 0xaf, 0x54,
		0x7e, 0x20, 0x46, 0xbc, 0xb2, 0xa6, 0x8f, 0x18, 0xf1, 0xc2, 0x88, 0xd7, 0x1b, 0xcb, 0x4c, 0x8c,
		0x78, 0x99, 0x16, 0xf8, 0x97, 0x13, 0x40, 0x15, 0x23, 0x5e, 0x05, 0xea, 0x31, 0x60, 0xc4, 0x8b,
		0x56, 0xc2, 0xc8, 0xa9, 0x22, 0x2f, 0xca, 0x88, 0x57, 0xe6, 0x25, 0xc4, 0x8b, 0x21, 0x27, 0xe3,
		0x7a, 0xe2, 0xa5, 0x34, 0x83, 0x01, 0x2f, 0x0c, 0x78, 0x61, 0xc0, 0x8b, 0x41, 0x5a, 0xa2, 0x95,
		0x9e, 0xf2, 0x49, 0x53, 0x39, 0xa5, 0xab, 0xe4, 0xd1, 0xd3, 0x19, 0xf0, 0xa2, 0x70, 0xf1, 0x15,
		0xa6, 0xbb, 0x16, 0x0d, 0xe1, 0x73, 0xc1, 0x15, 0x66, 0x92, 0xe6, 0xd6, 0x70, 0xba, 0xc8, 0x0a,
		0xe7, 0x28, 0x4d, 0x28, 0x7c, 0x70, 0x8e, 0xf2, 0x99, 0xad, 0xbc, 0x87, 0xcd, 0x15, 0x9c, 0xa0,
		0x64, 0x03, 0x69, 0xdc, 0xad, 0x91, 0x35, 0xe7, 0x6b, 0x1f, 0x1d, 0x6e, 0x6f, 0x55, 0x2a, 0xfb,
		0xa2, 0xa3, 0x6e, 0xc6, 0x9e, 0x1a, 0x28, 0xd9, 0x17, 0xd6, 0x5d, 0x28, 0x75, 0xa0, 0x46, 0x5a,
		0x8c, 0x06, 0xa2, 0xa9, 0xf4, 0x5f, 0xa2, 0x13, 0x79, 0x90, 0x38, 0x6d, 0x9c, 0x89, 0x5f, 0x9b,
		0x9d, 0xd3, 0xf7, 0x17, 0xba, 0x33, 0x76, 0x7b, 0x52, 0x0c, 0x46, 0xfe, 0x74, 0x28, 0x22, 0x3e,
		0xe3, 0x52, 0xad, 0xe1, 0xd6, 0x0d, 0xdc, 0xba, 0xb1, 0x5c, 0x4f, 0xa6, 0x0c, 0x31, 0x9c, 0x63,
		0xe2, 0x47, 0xd9, 0x71, 0x3a, 0xfd, 0xb9, 0x73, 0xc5, 0x1d, 0xbb, 0xe3, 0xd4, 0x9b, 0x76, 0xbd,
		0x83, 0x93, 0xe9, 0x38, 0x99, 0xfe, 0xaa, 0x93, 0xe9, 0x8f, 0x11, 0x84, 0x53, 0xe9, 0x59, 0xbb,
		0xf9, 0x89, 0xf6, 0xee, 0x85, 0x5a, 0x3c, 0x21, 0xdc, 0xb1, 0x3b, 0x22, 0x2e, 0x3c, 0x84, 0xdd,
		0x10, 0xbd, 0x91, 0x0e, 0x5d, 0xa5, 0xa5, 0xff, 0xe8, 0x06, 0x85, 0x0b, 0x3d, 0x3f, 0x0d, 0x9c,
		0x0f, 0x63, 0x12, 0x38, 0x85, 0x4e, 0x3d, 0x12, 0x2c, 0x45, 0x83, 0x14, 0x80, 0x86, 0x56, 0x0f,
		0x6f, 0xb6, 0x86, 0x53, 0xe7, 0xe6, 0xb7, 0xaa, 0x98, 0x9c, 0x37, 0x0f, 0xea, 0x91, 0xbd, 0x38,
		0x6a, 0xfe, 0x33, 0x8f, 0x5b, 0x05, 0x65, 0x5f, 0xba, 0xbd, 0x6b, 0xf7, 0x4a, 0x79, 0x2a, 0xbc,
		0xcf, 0xe5, 0xb8, 0xf9, 0x23, 0x03, 0x70, 0xe4, 0x3c, 0x95, 0x1f, 0x88, 0x23, 0xe7, 0x59, 0x73,
		0x45, 0x1c, 0x39, 0xc7, 0x91, 0xf3, 0x37, 0xd6, 0x90, 0x59, 0x1f, 0x39, 0xd7, 0x52, 0x0d, 0xaf,
		0xaf, 0x46, 0x7e, 0x90, 0xdf, 0xb1, 0xf3, 0x07, 0x13, 0x70, 0xbb, 0x88, 0x69, 0x09, 0x81, 0x40,
		0x62, 0xa0, 0xd2, 0x58, 0xc0, 0xd1, 0x73, 0x5a, 0x89, 0x23, 0xa7, 0xb2, 0xbc, 0x28, 0x47, 0xcf,
		0xe7, 0x51, 0x3d, 0xff, 0x56, 0x68, 0x62, 0x49, 0xbe, 0x47, 0xcf, 0x2b, 0x38, 0x7a, 0x8e, 0xa3,
		0xe7, 0x38, 0x7a, 0x4e, 0x3f, 0x2d, 0xd1, 0x4a, 0x4f, 0xf9, 0xa4, 0xa9, 0x9c, 0xd2, 0x55, 0xee,
		0x69, 0x2b, 0x31, 0xa0, 0x2f, 0x07, 0xee, 0xc4, 0x0b, 0xcb, 0x37, 0x32, 0xf4, 0x55, 0x2f, 0x7f,
		0x6f, 0x9d, 0x07, 0xb0, 0x27, 0x76, 0xe5, 0xec, 0x21, 0xf9, 0xa6, 0x36, 0x32, 0x29, 0x8e, 0x52,
		0xaa, 0x23, 0x98, 0xf2, 0xa8, 0xa5, 0x3e, 0xb2, 0x29, 0x90, 0x6c, 0x2a, 0xa4, 0x99, 0x12, 0xf3,
		0x4d, 0x8d, 0x39, 0xa7, 0x48, 0x32, 0xa9, 0x32, 0x31, 0x24, 0x1f, 0xf5, 0x8a, 0xef, 0xc6, 0xbf,
		0x3c, 0x54, 0x2d, 0x88, 0x27, 0x4c, 0x72, 0x89, 0x93, 0x62, 0x02, 0x25, 0x9c, 0x48, 0xa9, 0x26,
		0x54, 0xf2, 0x89, 0x95, 0x7c, 0x82, 0xa5, 0x9d, 0x68, 0x69, 0x24, 0x5c, 0x22, 0x89, 0x97, 0x5c,
		0x02, 0x4e, 0x0c, 0x1a, 0x78, 0xee, 0x30, 0xa0, 0x17, 0x14, 0xe6, 0x71, 0x74, 0x6a, 0x1e, 0x31,
		0x7f, 0xcb, 0x57, 0x1f, 0x84, 0x4d, 0x82, 0xa6, 0x9c, 0xa8, 0x19, 0x24, 0x6c, 0xea, 0x89, 0x9b,
		0x4d, 0x02, 0x67, 0x93, 0xc8, 0x79, 0x24, 0x74, 0x5a, 0x89, 0x9d, 0x58, 0x82, 0x4f, 0x5e, 0x61,
		0xee, 0x7a, 0x28, 0xdf, 0x8d, 0x78, 0x52, 0x4f, 0x6e, 0xa4, 0xef, 0xe6, 0x3c, 0xac, 0xf0, 0xdd,
		0xea, 0xb7, 0x46, 0xd0, 0x36, 0x4b, 0x4f, 0x6e, 0xe8, 0xc6, 0xe3, 0xee, 0xa8, 0x13, 0xfa, 0x4a,
		0x0f, 0xc9, 0x5a, 0x18, 0x5b, 0xb9, 0x19, 0x5f, 0x4b, 0xd0, 0xea, 0x5a, 0xed, 0x56, 0xbd, 0x59,
		0x22, 0x69, 0xe7, 0xd7, 0x35, 0xaa, 0x2f, 0xd8, 0x8e, 0x73, 0x03, 0xe1, 0xb7, 0x9b, 0xbc, 0xd8,
		0x7d, 0xb1, 0x49, 0xf3, 0xdd, 0x22, 0x9f, 0x32, 0xb1, 0x86, 0x90, 0x17, 0x96, 0x88, 0xec, 0xf0,
		0xbe, 0x98, 0xd3, 0x49, 0xec, 0xf4, 0xa2, 0x5e, 0x46, 0xbd, 0x8c, 0x7a, 0x19, 0xf5, 0x32, 0xea,
		0x65, 0xd4, 0xcb, 0x06, 0xd5, 0xcb, 0xda, 0xf5, 0xfd, 0xd1, 0x97, 0x32, 0xc9, 0x14, 0xbb, 0x98,
		0x66, 0xb7, 0x09, 0x9a, 0xd6, 0x76, 0xf5, 0x50, 0xe6, 0x2e, 0x6a, 0xf9, 0xd2, 0x17, 0xe1, 0x3a,
		0xea, 0x58, 0x69, 0xd2, 0x85, 0x5e, 0x6c, 0xe4, 0xb9, 0xeb, 0x4d, 0x24, 0x9d, 0x93, 0x0a, 0x2f,
		0xda, 0x79, 0xe4, 0xbb, 0xbd, 0x50, 0x8d, 0x74, 0x43, 0x0d, 0x55, 0x18, 0xd0, 0x23, 0x7e, 0xcb,
		0xa1, 0x47, 0x0e, 0xdd, 0x50, 0xdd, 0x46, 0xcf, 0x76, 0xe0, 0x7a, 0x81, 0x24, 0x6b, 0xed, 0xd7,
		0x35, 0xc2, 0x2e, 0xe4, 0xde, 0xf1, 0x71, 0xa1, 0x9d, 0x2d, 0xf8, 0x50, 0x51, 0x7d, 0x08, 0x7d,
		0xb2, 0x1f, 0xfa, 0xba, 0x44, 0x9f, 0x8c, 0xb0, 0x25, 0x54, 0x0e, 0xda, 0xe4, 0xac, 0x26, 0xfd,
		0xa2, 0x5d, 0x44, 0xa5, 0x7b, 0x16, 0x35, 0x55, 0x36, 0x92, 0x21, 0xfb, 0xe4, 0x77, 0x1b, 0x8f,
		0x47, 0x49, 0xf2, 0xd0, 0xa2, 0xa6, 0x0b, 0xfb, 0x62, 0x1f, 0x29, 0x27, 0xe6, 0x68, 0x66, 0x38,
		0x18, 0x85, 0x01, 0x9c, 0xb7, 0x28, 0x6b, 0xb5, 0x17, 0x56, 0xeb, 0xb4, 0x66, 0x6b, 0x74, 0x1a,
		0xd3, 0x35, 0x1e, 0x4f, 0x97, 0xf8, 0x4b, 0x31, 0x7d, 0x36, 0x47, 0x7f, 0x2d, 0xf5, 0xa5, 0xe7,
		0xde, 0x13, 0x1c, 0x53, 0x5c, 0xb0, 0x0a, 0x43, 0x8a, 0x18, 0x52, 0xfc, 0x0e, 0x5e, 0x30, 0xa4,
		0xf8, 0x32, 0x7c, 0x31, 0xa4, 0xf8, 0xb3, 0xf4, 0x05, 0x43, 0x8a, 0xd4, 0x18, 0x25, 0x86, 0x14,
		0xbf, 0x1d, 0xff, 0x30, 0xa4, 0x48, 0x3f, 0x71, 0x52, 0x4c, 0xa0, 0x84, 0x13, 0x29, 0xd5, 0x84,
		0x4a, 0x3e, 0xb1, 0x92, 0x4f, 0xb0, 0xb4, 0x13, 0x2d, 0x9d, 0x26, 0x92, 0xc0, 0x90, 0xe2, 0xcb,
		0x06, 0x61, 0x48, 0xf1, 0xd5, 0x89, 0x19, 0x87, 0x2e, 0xf9, 0x26, 0x6a, 0x06, 0x09, 0x9b, 0x7a,
		0xe2, 0x66, 0x93, 0xc0, 0xd9, 0x24, 0x72, 0x1e, 0x09, 0x9d, 0x56, 0x62, 0x27, 0x96, 0xe0, 0x93,
		0x57, 0x48, 0xff, 0xd0, 0x65, 0x7c, 0x57, 0xd8, 0xb4, 0x35, 0x5c, 0xa6, 0x98, 0x66, 0x05, 0x46,
		0x15, 0xdf, 0x04, 0x40, 0x86, 0xa3, 0x8a, 0x84, 0x8f, 0xba, 0x55, 0x22, 0x43, 0xcf, 0x5a, 0x9d,
		0xb3, 0xd3, 0xd3, 0x93, 0x76, 0xd7, 0x6a, 0x60, 0xac, 0xf2, 0xe7, 0xc0, 0xc8, 0x6a, 0xac, 0x92,
		0x30, 0x0e, 0x17, 0x21, 0xb8, 0x2f, 0x2a, 0x38, 0xd8, 0x06, 0xae, 0xf2, 0x66, 0x4c, 0x35, 0x55,
		0x10, 0xd6, 0xc3, 0xd0, 0xa7, 0xc9, 0x57, 0x8e, 0x95, 0xb6, 0x3c, 0x19, 0xd1, 0x61, 0xa2, 0x67,
		0x62, 0x4b, 0xc7, 0xee, 0xdd, 0x82, 0x85, 0x95, 0x0f, 0xb5, 0xda, 0xce, 0x6e, 0xad, 0xb6, 0xb9,
		0xbb, 0xb5, 0xbb, 0xb9, 0xb7, 0xbd, 0x5d, 0xd9, 0xa9, 0x50, 0x9c, 0x1b, 0x39, 0xf1, 0xfb, 0xd2,
		0x97, 0xfd, 0x83, 0xfb, 0xd2, 0xbe, 0xd0, 0x13, 0xcf, 0xa3, 0x6c, 0xe2, 0x59, 0x20, 0x7d, 0x92,
		0x87, 0x8c, 0x31, 0xca, 0xfd, 0xdc, 0x7b, 0xc3, 0x28, 0xf7, 0x1b, 0x4a, 0x1d, 0x74, 0x15, 0x7f,
		0xd0, 0x30, 0x74, 0x15, 0xdf, 0x64, 0x22, 0xba, 0x8a, 0x29, 0x19, 0x8a, 0xae, 0x22, 0x98, 0x7a,
		0x66, 0x75, 0x34, 0x46, 0xb9, 0x53, 0x4a, 0xb3, 0x18, 0xe5, 0xfe, 0xd9, 0x2f, 0x8c, 0x72, 0xbf,
		0xcd, 0x48, 0x8c, 0x72, 0xaf, 0x2a, 0xf4, 0x60, 0x94, 0x3b, 0x95, 0x1e, 0x06, 0x46, 0xb9, 0xe1,
		0x43, 0x18, 0xe5, 0x36, 0xc4, 0x2a, 0x8c, 0x72, 0x53, 0xb6, 0x04, 0xa3, 0xdc, 0xdf, 0xb6, 0x8b,
		0xed, 0xa4, 0xe9, 0xc3, 0xb8, 0x1d, 0x06, 0xb9, 0xe9, 0x58, 0x80, 0x41, 0x6e, 0xe3, 0xdc, 0xcb,
		0xd4, 0x31, 0x6e, 0xcf, 0xbd, 0xc7, 0x10, 0x77, 0x5e, 0x2f, 0x54, 0xfa, 0xfe, 0xc8, 0x27, 0x37,
		0xc4, 0xfd, 0xc8, 0x2a, 0x0c, 0x71, 0x63, 0x88, 0xfb, 0x3b, 0x78, 0xc1, 0x10, 0xf7, 0xcb, 0xf0,
		0xc5, 0x10, 0xf7, 0xcf, 0x52, 0x17, 0x0c, 0x71, 0x53, 0x63, 0x93, 0x18, 0xe2, 0xfe, 0x76, 0xfc,
		0xc3, 0x10, 0x37, 0xfd, 0xc4, 0x49, 0x31, 0x81, 0x12, 0x4e, 0xa4, 0x54, 0x13, 0x2a, 0xf9, 0xc4,
		0x4a, 0x3e, 0xc1, 0xd2, 0x4e, 0xb4, 0x74, 0x1a, 0x48, 0x02, 0x43, 0xdc, 0x2f, 0x1b, 0x84, 0x21,
		0xee, 0x57, 0x27, 0x66, 0x1c, 0xb7, 0xe4, 0x9b, 0xa8, 0x19, 0x24, 0x6c, 0xea, 0x89, 0x9b, 0x4d,
		0x02, 0x67, 0x93, 0xc8, 0x79, 0x24, 0x74, 0x5a, 0x89, 0x9d, 0x58, 0x82, 0x4f, 0x5e, 0x21, 0x86,
		0xb8, 0x53, 0xad, 0x81, 0x31, 0xc4, 0xfd, 0xd3, 0x00, 0xc4, 0x10, 0x77, 0x9a, 0x86, 0x62, 0x88,
		0xfb, 0x6d, 0x60, 0xc4, 0x10, 0x77, 0x3a, 0x66, 0x62, 0x88, 0x1b, 0x5c, 0x25, 0x6d, 0x4c, 0x61,
		0x88, 0xfb, 0x8d, 0x16, 0x62, 0x88, 0x7b, 0xb5, 0x26, 0x62, 0x88, 0x9b, 0x53, 0x4c, 0xc1, 0x10,
		0xf7, 0x5b, 0x4a, 0x1d, 0x74, 0x15, 0x7f, 0xd0, 0x30, 0x74, 0x15, 0xdf, 0x64, 0x22, 0xba, 0x8a,
		0x29, 0x19, 0x8a, 0xae, 0x22, 0x98, 0x7a, 0x66, 0x75, 0x34, 0x86, 0xb8, 0x53, 0x4a, 0xb3, 0x18,
		0xe2, 0xfe, 0xd9, 0x2f, 0x0c, 0x71, 0xbf, 0xcd, 0x48, 0x0c, 0x71, 0xaf, 0x2a, 0xf4, 0x60, 0x88,
		0x3b, 0x95, 0x1e, 0x06, 0x86, 0xb8, 0xe1, 0x43, 0x18, 0xe2, 0x36, 0xc4, 0x2a, 0x0c, 0x71, 0x53,
		0xb6, 0x04, 0x43, 0xdc, 0xdf, 0xb6, 0x8b, 0xe9, 0x94, 0xe9, 0xe2, 0xb8, 0x1d, 0x86, 0xb8, 0xe9,
		0x58, 0x80, 0x21, 0x6e, 0xe3, 0xdc, 0xcb, 0xcc, 0x21, 0x6e, 0x2b, 0x5a, 0x21, 0x86, 0xb8, 0xf3,
		0x7a, 0xa1, 0xf2, 0x6e, 0x2c, 0x75, 0x20, 0xe9, 0x8d, 0x71, 0x3f, 0xb6, 0x0b, 0x83, 0xdc, 0x18,
		0xe4, 0xfe, 0x0e, 0x62, 0x30, 0xc8, 0xfd, 0x32, 0x7c, 0x31, 0xc8, 0xfd, 0xb3, 0xf4, 0x05, 0x83,
		0xdc, 0xd4, 0x18, 0x25, 0x06, 0xb9, 0xbf, 0x1d, 0xff, 0x30, 0xc8, 0x4d, 0x3f, 0x71, 0x52, 0x4c,
		0xa0, 0x84, 0x13, 0x29, 0xd5, 0x84, 0x4a, 0x3e, 0xb1, 0x92, 0x4f, 0xb0, 0xb4, 0x13, 0x2d, 0x9d,
		0x26, 0x92, 0xc0, 0x20, 0xf7, 0xcb, 0x06, 0x61, 0x90, 0xfb, 0xd5, 0x89, 0x19, 0x47, 0x2e, 0xf9,
		0x26, 0x6a, 0x06, 0x09, 0x9b, 0x7a, 0xe2, 0x66, 0x93, 0xc0, 0xd9, 0x24, 0x72, 0x1e, 0x09, 0x9d,
		0x56, 0x62, 0x27, 0x96, 0xe0, 0x93, 0x57, 0x88, 0x41, 0xee, 0x54, 0x6b, 0x60, 0x0c, 0x72, 0xff,
		0x34, 0x00, 0x31, 0xc8, 0x9d, 0xa6, 0xa1, 0x18, 0xe4, 0x7e, 0x1b, 0x18, 0x31, 0xc8, 0x9d, 0x8e,
		0x99, 0x18, 0xe4, 0x06, 0x57, 0x49, 0x1b, 0x53, 0x18, 0xe4, 0x7e, 0xa3, 0x85, 0x18, 0xe4, 0x5e,
		0xad, 0x89, 0x18, 0xe4, 0xe6, 0x14, 0x53, 0x30, 0xc8, 0xfd, 0x96, 0x52, 0x07, 0x5d, 0xc5, 0x1f,
		0x34, 0x0c, 0x5d, 0xc5, 0x37, 0x99, 0x88, 0xae, 0x62, 0x4a, 0x86, 0xa2, 0xab, 0x08, 0xa6, 0x9e,
		0x59, 0x1d, 0x8d, 0x41, 0xee, 0x94, 0xd2, 0x2c, 0x06, 0xb9, 0x7f, 0xf6, 0x0b, 0x83, 0xdc, 0x6f,
		0x33, 0x12, 0x83, 0xdc, 0xab, 0x0a, 0x3d, 0x18, 0xe4, 0x4e, 0xa5, 0x87, 0x81, 0x41, 0x6e, 0xf8,
		0x10, 0x06, 0xb9, 0x0d, 0xb1, 0x0a, 0x83, 0xdc, 0x94, 0x2d, 0xc1, 0x20, 0xf7, 0xb7, 0xed, 0xe2,
		0x3a, 0x69, 0xfa, 0x68, 0xe0, 0x0e, 0xa3, 0xdc, 0x74, 0x2c, 0xc0, 0x28, 0xb7, 0x81, 0x0e, 0x66,
		0xe8, 0x30, 0xf7, 0x74, 0x8d, 0x18, 0xe7, 0xce, 0xef, 0x95, 0x52, 0x98, 0x4d, 0x23, 0x35, 0x93,
		0x86, 0xe1, 0xed, 0x27, 0x86, 0x60, 0x78, 0xfb, 0x9b, 0x26, 0x61, 0x78, 0xfb, 0x07, 0x0d, 0xc3,
		0xf0, 0x36, 0x38, 0xe4, 0x8f, 0xbe, 0x12, 0x3a, 0xc3, 0xdb, 0xf7, 0x41, 0x28, 0x6f, 0xca, 0xaa,
		0x4f, 0x70, 0x80, 0x3b, 0x31, 0x8d, 0xd6, 0x10, 0xf7, 0x26, 0x86, 0xb8, 0xc9, 0x27, 0x52, 0xc2,
		0x09, 0x95, 0x6a, 0x62, 0x25, 0x9f, 0x60, 0xc9, 0x27, 0x5a, 0xda, 0x09, 0x97, 0x4e, 0xfb, 0x48,
		0x10, 0xea, 0x9a, 0x92, 0x3b, 0x85, 0x41, 0x36, 0xfd, 0x3d, 0xaa, 0x1d, 0x3f, 0x10, 0xb2, 0xe9,
		0xd4, 0x0d, 0x43, 0xe9, 0x6b, 0x72, 0x87, 0x2d, 0x4a, 0x7f, 0x6e, 0x96, 0xf7, 0xea, 0xe5, 0x23,
		0xb7, 0x3c, 0xb8, 0xfc, 0xbb, 0xf6, 0xf5, 0xe2, 0x62, 0xfd, 0x3b, 0x1f, 0xd0, 0x89, 0x11, 0x97,
		0x94, 0x5e, 0xef, 0x49, 0xc7, 0xfe, 0x4c, 0xf6, 0x1d, 0xff, 0xef, 0x67, 0x5f, 0xf2, 0xbf, 0x08,
		0xbd, 0x65, 0x6c, 0x67, 0xa0, 0x14, 0xc5, 0x76, 0x46, 0x3a, 0xdb, 0x19, 0x04, 0x36, 0x08, 0x0b,
		0xda, 0xe2, 0x27, 0xd3, 0xc1, 0x20, 0x47, 0xdd, 0x88, 0x74, 0x2c, 0xd0, 0xea, 0xe7, 0xd1, 0x99,
		0x40, 0xab, 0x9f, 0x7b, 0x07, 0x02, 0xad, 0x7e, 0x7a, 0xfc, 0x8a, 0x4c, 0x87, 0x21, 0x89, 0x38,
		0x9e, 0x74, 0x07, 0xbe, 0x1c, 0x50, 0x88, 0x38, 0xf3, 0x7e, 0xc2, 0x2e, 0x01, 0x5b, 0x4e, 0x67,
		0x94, 0x73, 0x7d, 0x7d, 0x4a, 0xe6, 0x36, 0x1e, 0xd2, 0x78, 0x51, 0x69, 0xdd, 0x2f, 0x05, 0x72,
		0xd8, 0x28, 0xdb, 0x50, 0x20, 0x6f, 0x34, 0x24, 0x1c, 0xe8, 0x48, 0x35, 0x90, 0x96, 0x64, 0x20,
		0x24, 0xbd, 0x40, 0x48, 0x62, 0x21, 0x2f, 0x0f, 0x26, 0xd2, 0xca, 0x60, 0xda, 0xc2, 0x28, 0xe5,
		0x7a, 0x4e, 0x2f, 0xe5, 0xa3, 0x97, 0xf9, 0xa4, 0xec, 0xec, 0x13, 0x66, 0xb6, 0x3f, 0x31, 0x63,
		0xc7, 0xce, 0xdb, 0xa1, 0x79, 0x39, 0x72, 0xb6, 0x90, 0xcf, 0x0e, 0x78, 0xd9, 0xfc, 0xa4, 0x8c,
		0xa0, 0x5d, 0x92, 0x77, 0xa1, 0xef, 0x96, 0x27, 0x11, 0x26, 0xae, 0xbc, 0x6c, 0x0b, 0xc3, 0x92,
		0x2f, 0x07, 0xd2, 0x97, 0xba, 0x97, 0xfd, 0x60, 0x7a, 0x0e, 0xbe, 0x3b, 0xaf, 0x76, 0xed, 0xce,
		0x89, 0xa8, 0x6c, 0x6e, 0x7f, 0xd8, 0x5b, 0x13, 0xb6, 0x0e, 0xa5, 0x7f, 0x23, 0xfb, 0xca, 0x0d,
		0xa5, 0xe8, 0xc4, 0x3c, 0x5f, 0x84, 0xa3, 0xe7, 0x3e, 0xbe, 0xd0, 0xb6, 0x8e, 0xde, 0x93, 0x68,
		0x8c, 0x6e, 0x5c, 0xa5, 0x45, 0x7b, 0x34, 0x09, 0xa5, 0xd2, 0x43, 0x61, 0xdd, 0xf5, 0xae, 0x5d,
		0x3d, 0x94, 0x62, 0x9e, 0x93, 0xc4, 0x60, 0xe4, 0x8b, 0x49, 0x20, 0x85, 0xd2, 0x17, 0xfa, 0x70,
		0xa4, 0xff, 0xdf, 0x44, 0xc7, 0xe3, 0xa2, 0xe2, 0x8b, 0x0a, 0xaf, 0x45, 0x78, 0xfd, 0xe4, 0x3b,
		0x4f, 0xfd, 0xd1, 0xad, 0xea, 0x47, 0xff, 0x52, 0x78, 0x2d, 0xe3, 0xbf, 0xa0, 0x65, 0xfc, 0xfd,
		0x9e, 0x0c, 0x82, 0xf2, 0xcd, 0xa8, 0x2f, 0xc5, 0x2c, 0xfb, 0x89, 0x8e, 0xf4, 0x6f, 0x55, 0x4f,
		0x8a, 0x5f, 0xa3, 0x15, 0x7c, 0xa8, 0xed, 0x6e, 0xbd, 0x5f, 0x8b, 0xcd, 0x92, 0xbe, 0x8e, 0x43,
		0xa2, 0xeb, 0x89, 0x4e, 0xe8, 0xea, 0xbe, 0xeb, 0xf7, 0xa7, 0x0b, 0xdc, 0x17, 0xd5, 0xcd, 0xcd,
		0xea, 0x9a, 0xe8, 0xc8, 0xde, 0x48, 0xf7, 0x85, 0xd5, 0x57, 0xd1, 0xb7, 0xad, 0x5d, 0xe8, 0xe8,
		0xe3, 0x75, 0xd1, 0x6d, 0x9e, 0x8b, 0xea, 0x7a, 0x0e, 0x59, 0x3e, 0xef, 0xbe, 0xe2, 0x62, 0x1f,
		0xf1, 0xc1, 0x05, 0x72, 0xe2, 0xa8, 0x54, 0x5a, 0x87, 0x8f, 0x5a, 0x85, 0xf0, 0x91, 0xc7, 0x3e,
		0x62, 0x3a, 0x8d, 0xcb, 0xec, 0xa7, 0x65, 0x78, 0x90, 0xa4, 0xf4, 0xe5, 0x5a, 0xea, 0x22, 0x25,
		0xb6, 0xa4, 0x4f, 0x19, 0xde, 0x8f, 0xa5, 0xf8, 0x4d, 0xbc, 0x9b, 0x35, 0xfc, 0xcb, 0x5e, 0xd0,
		0xbf, 0x2a, 0x47, 0x1f, 0x06, 0xfb, 0xb6, 0xdd, 0x71, 0x5a, 0x96, 0xfd, 0xf1, 0xd3, 0xc1, 0x49,
		0xbb, 0xf3, 0xae, 0xe0, 0xb1, 0x3f, 0x06, 0x08, 0xc2, 0xfe, 0x43, 0xd8, 0x7f, 0x05, 0x82, 0x7e,
		0x29, 0x40, 0x2f, 0xa9, 0xd4, 0x90, 0x41, 0xcf, 0x57, 0xe3, 0x5c, 0x1b, 0x49, 0x0f, 0xfc, 0x55,
		0xf7, 0xbc, 0x49, 0x5f, 0x8a, 0x47, 0x2f, 0x42, 0x04, 0x93, 0xab, 0x72, 0x94, 0xac, 0x22, 0x4c,
		0xc7, 0x19, 0x34, 0xfa, 0x43, 0xfc, 0x1a, 0x55, 0x90, 0x0f, 0xcb, 0x13, 0x44, 0x76, 0x90, 0x17,
		0x3d, 0xbe, 0xbf, 0xf0, 0x22, 0x73, 0xec, 0x6e, 0x51, 0xda, 0x2e, 0x7e, 0xcc, 0xfb, 0x5e, 0x85,
		0x2d, 0xb4, 0xd6, 0x78, 0x73, 0x32, 0xa3, 0xfa, 0x29, 0x39, 0xb5, 0x08, 0x39, 0xb4, 0x06, 0x33,
		0x0c, 0x79, 0xa9, 0x35, 0xf0, 0xb3, 0x09, 0x2e, 0xab, 0x77, 0xb6, 0x0c, 0xe0, 0x3f, 0xbd, 0xf5,
		0x67, 0xde, 0xfe, 0x2d, 0xbb, 0x61, 0xe8, 0xab, 0xab, 0x49, 0x86, 0x72, 0x07, 0x8f, 0xaf, 0x1f,
		0x7a, 0xc6, 0x90, 0x8c, 0x42, 0x40, 0xb6, 0x82, 0x06, 0x99, 0x9f, 0x66, 0xcc, 0xe3, 0xd4, 0x62,
		0x8e, 0xa7, 0x13, 0xf3, 0xe2, 0x90, 0xb9, 0x9f, 0x36, 0xcc, 0x9d, 0x26, 0xe6, 0x7b, 0x7a, 0xd0,
		0xac, 0x6d, 0x9e, 0xac, 0x07, 0xfc, 0x4b, 0x0f, 0xdb, 0x80, 0x99, 0x3b, 0x4e, 0xa2, 0x17, 0x9d,
		0x98, 0x90, 0x31, 0x6e, 0xf3, 0x51, 0xb4, 0xc9, 0xed, 0x58, 0x7b, 0x9e, 0xc7, 0xd8, 0x09, 0x1c,
		0x5b, 0xa7, 0xd4, 0x52, 0xcc, 0xf5, 0x58, 0x3a, 0xcd, 0xa6, 0x62, 0x6e, 0xc7, 0xce, 0xcd, 0x3e,
		0x0a, 0x93, 0x97, 0x62, 0x4c, 0x12, 0xd5, 0xf3, 0xef, 0x84, 0xe6, 0x7c, 0x50, 0x2d, 0x67, 0xe1,
		0xb4, 0xdc, 0xa7, 0xa8, 0x28, 0x4c, 0x4f, 0x11, 0x9a, 0x9a, 0xa2, 0x32, 0x2d, 0x45, 0x6e, 0x4a,
		0x8a, 0xdc, 0x74, 0x14, 0xad, 0xa9, 0xa8, 0x62, 0x0d, 0x55, 0xe4, 0x2d, 0x74, 0x56, 0x4a, 0x9a,
		0xae, 0x74, 0xc6, 0x83, 0x1f, 0x4c, 0x82, 0x12, 0x28, 0xc6, 0x83, 0xc9, 0x27, 0x3a, 0x6a, 0x09,
		0x8f, 0x6c, 0xe2, 0x23, 0x9b, 0x00, 0x69, 0x26, 0xc2, 0x7c, 0x13, 0x62, 0xce, 0x89, 0x91, 0x4c,
		0x82, 0x5c, 0x4a, 0x94, 0xf4, 0x84, 0x40, 0x13, 0xcb, 0x68, 0xe9, 0x80, 0x56, 0xa0, 0x03, 0x4a,
		0x3e, 0x8d, 0x12, 0x4e, 0xa7, 0x54, 0xd3, 0x2a, 0xf9, 0xf4, 0x4a, 0x3e, 0xcd, 0xd2, 0x4e, 0xb7,
		0x34, 0xd2, 0x2e, 0x91, 0xf4, 0x4b, 0x2e, 0x0d, 0x3f, 0xa4, 0xe3, 0x3e, 0xdd, 0x4b, 0xd7, 0x49,
		0x69, 0x92, 0x0a, 0x5c, 0xb8, 0x6e, 0x44, 0x8a, 0x66, 0x90, 0xaa, 0xa9, 0xa7, 0x6c, 0x36, 0xa9,
		0x9b, 0x4d, 0x0a, 0xe7, 0x91, 0xca, 0x69, 0xa5, 0x74, 0x62, 0xa9, 0x3d, 0x79, 0x85, 0xf4, 0x2f,
		0x5c, 0xa7, 0x23, 0xcc, 0xf5, 0x62, 0xcd, 0xbb, 0x4b, 0xd0, 0xb6, 0x25, 0xe1, 0xae, 0xbc, 0x15,
		0xbb, 0xe8, 0xfa, 0x25, 0x21, 0x9f, 0x24, 0x72, 0x37, 0xdb, 0x8b, 0xce, 0x48, 0xe1, 0xae, 0xb6,
		0x17, 0xdd, 0x10, 0x3c, 0x17, 0x3c, 0x17, 0x3c, 0x17, 0x3c, 0x17, 0x3c, 0x17, 0x39, 0xf5, 0xe9,
		0x2b, 0xa4, 0xd6, 0xca, 0x4a, 0x0c, 0x23, 0xd8, 0xd2, 0x5a, 0x0a, 0xc6, 0xe4, 0x5a, 0x5b, 0x4f,
		0x53, 0xff, 0x26, 0x51, 0xf3, 0xa8, 0x52, 0x00, 0x0e, 0x54, 0x80, 0x11, 0x25, 0xe0, 0x42, 0x0d,
		0xd8, 0x51, 0x04, 0x76, 0x54, 0x81, 0x17, 0x65, 0xa0, 0x49, 0x1d, 0x88, 0x52, 0x88, 0xe4, 0xd5,
		0x92, 0x6d, 0x99, 0x2d, 0x45, 0xcc, 0x89, 0xd2, 0xe1, 0x4e, 0x8d, 0x72, 0xc0, 0x9c, 0xe5, 0xef,
		0x0f, 0x84, 0x4d, 0x6c, 0xbb, 0x7a, 0x28, 0xc9, 0xdd, 0xb1, 0xf6, 0xf4, 0x8b, 0x76, 0xc2, 0x11,
		0x33, 0xf1, 0x74, 0xf2, 0x99, 0x31, 0x31, 0xf6, 0xdc, 0xf5, 0x26, 0x92, 0x2e, 0x71, 0x5b, 0xb2,
		0xf7, 0xc8, 0x77, 0x63, 0x35, 0xc0, 0x86, 0x1a, 0xaa, 0xbc, 0xc5, 0xe9, 0x7f, 0x2e, 0x56, 0xc9,
		0xa1, 0x1b, 0xaa, 0x5b, 0x99, 0xab, 0x36, 0xbb, 0x01, 0x69, 0xe9, 0xb1, 0xab, 0xb9, 0x77, 0xfc,
		0x5c, 0x8d, 0xd6, 0x25, 0x06, 0xf0, 0x3e, 0x50, 0x55, 0x83, 0xac, 0xbb, 0xfc, 0x05, 0xcf, 0x8b,
		0x69, 0x74, 0x2f, 0xdd, 0xc8, 0xd0, 0x57, 0x3d, 0xfa, 0x6d, 0xc2, 0x99, 0x9d, 0x68, 0x15, 0xbe,
		0xc6, 0x3c, 0xb4, 0x0a, 0x53, 0x44, 0x22, 0x5a, 0x85, 0xe9, 0xb9, 0x0d, 0x5a, 0x85, 0x2b, 0x36,
		0x18, 0xad, 0x42, 0x53, 0x6b, 0x32, 0x46, 0xad, 0xc2, 0x2f, 0xaa, 0x2f, 0xcb, 0xa4, 0x13, 0xf8,
		0x62, 0x12, 0xdf, 0x45, 0xbf, 0xf0, 0x8d, 0x5f, 0xe8, 0x17, 0xae, 0xa8, 0x89, 0x81, 0x8e, 0x05,
		0x3a, 0x16, 0x1c, 0x72, 0xd3, 0x63, 0x57, 0x63, 0xd9, 0x2f, 0xdc, 0xd9, 0xdd, 0xdd, 0xad, 0xa2,
		0x47, 0x08, 0x8f, 0x63, 0xc1, 0x51, 0xe9, 0x5b, 0x87, 0x1e, 0x21, 0x47, 0x8b, 0xa8, 0x9d, 0xb4,
		0x24, 0x72, 0xdf, 0xf0, 0x8b, 0xf6, 0xd1, 0xbc, 0xa3, 0xe0, 0x59, 0xad, 0xf8, 0x67, 0xee, 0x23,
		0xde, 0x78, 0xb0, 0x25, 0xb1, 0x61, 0x3a, 0x94, 0x81, 0xe1, 0x1e, 0xea, 0xee, 0x51, 0x0a, 0x26,
		0x57, 0xd1, 0x2b, 0x27, 0x3c, 0xde, 0x33, 0x33, 0x10, 0x03, 0x3e, 0x3f, 0x62, 0x16, 0x06, 0x7c,
		0xde, 0x00, 0x35, 0x0c, 0xf8, 0xbc, 0xde, 0x1d, 0x30, 0xe0, 0x93, 0x36, 0x67, 0xc1, 0x80, 0x0f,
		0x77, 0xda, 0x49, 0x76, 0xc0, 0x67, 0x9a, 0x53, 0xe9, 0xef, 0xde, 0xcf, 0xec, 0xa4, 0xbd, 0x7b,
		0x5f, 0xc1, 0xee, 0xbd, 0x71, 0x94, 0x80, 0x11, 0x35, 0xe0, 0x42, 0x11, 0xd8, 0x51, 0x05, 0x76,
		0x94, 0x81, 0x17, 0x75, 0xa0, 0x49, 0x21, 0x88, 0x52, 0x09, 0xf2, 0x94, 0x22, 0x31, 0xd0, 0xed,
		0xff, 0x3f, 0xb7, 0x27, 0x75, 0xef, 0xbe, 0x1c, 0xa8, 0x7e, 0x40, 0x3f, 0x1a, 0xcd, 0x03, 0xfc,
		0x13, 0xbb, 0x89, 0x7b, 0x38, 0x6d, 0xea, 0xc1, 0x86, 0x82, 0x70, 0xa2, 0x22, 0x0c, 0x29, 0x09,
		0x37, 0x6a, 0xc2, 0x96, 0xa2, 0xb0, 0xa5, 0x2a, 0x3c, 0x29, 0x0b, 0x6d, 0xea, 0x42, 0x9c, 0xc2,
		0xb0, 0xa1, 0x32, 0xcf, 0x53, 0x1a, 0x3e, 0x41, 0xec, 0x59, 0x66, 0xc3, 0x25, 0x90, 0xf1, 0x20,
		0x38, 0xec, 0x88, 0x0e, 0x47, 0xc2, 0xc3, 0x98, 0xf8, 0x70, 0x25, 0x40, 0xec, 0x89, 0x10, 0x7b,
		0x42, 0xc4, 0x9b, 0x18, 0xf1, 0x20, 0x48, 0x4c, 0x88, 0x12, 0x3b, 0xc2, 0x94, 0x18, 0x4c, 0x53,
		0x38, 0xf6, 0x87, 0xf3, 0x0c, 0x45, 0x61, 0x59, 0xc3, 0x88, 0x13, 0x5b, 0x02, 0xc5, 0x99, 0x48,
		0x19, 0x40, 0xa8, 0xb8, 0x13, 0x2b, 0x63, 0x08, 0x96, 0x31, 0x44, 0xcb, 0x0c, 0xc2, 0xc5, 0x8b,
		0x78, 0x31, 0x23, 0x60, 0x6c, 0x89, 0x58, 0x62, 0xf8, 0xc0, 0x73, 0x87, 0x01, 0xdf, 0x60, 0x39,
		0xcf, 0x57, 0xd3, 0x65, 0x30, 0x8d, 0x2f, 0xb4, 0x35, 0x3f, 0x8c, 0x25, 0x6a, 0x26, 0x10, 0x36,
		0x83, 0x88, 0x9b, 0x29, 0x04, 0xce, 0x38, 0x22, 0x67, 0x1c, 0xa1, 0x33, 0x8b, 0xd8, 0xf1, 0x24,
		0x78, 0x4c, 0x89, 0x5e, 0x02, 0x1d, 0xf2, 0x9a, 0x29, 0x3f, 0x9c, 0x31, 0xa4, 0x9e, 0xdc, 0x48,
		0x7f, 0x3a, 0x0a, 0xc9, 0x38, 0x6b, 0xcc, 0xbb, 0x5c, 0x35, 0xc6, 0x6b, 0xb0, 0xf4, 0xe4, 0x86,
		0x7f, 0xde, 0xeb, 0x8e, 0x3a, 0xa1, 0xaf, 0xf4, 0x90, 0xfd, 0x4a, 0xe2, 0xd5, 0x6c, 0x46, 0x3e,
		0x52, 0x6f, 0x34, 0xda, 0x56, 0xa7, 0xe3, 0x1c, 0xd5, 0x8f, 0xed, 0xe6, 0x1f, 0xcc, 0xf3, 0x78,
		0xbc, 0xac, 0x4a, 0xb4, 0xac, 0x83, 0xfa, 0xe1, 0xef, 0x67, 0xa7, 0x26, 0x2c, 0xa7, 0x1a, 0x2d,
		0xe7, 0xbc, 0xde, 0x3c, 0xb3, 0x4c, 0x58, 0xcd, 0x56, 0xb4, 0x9a, 0xe6, 0xc9, 0x61, 0xbd, 0x69,
		0xc2, 0x6a, 0x6a, 0xd1, 0x6a, 0x3a, 0x56, 0xb7, 0xc4, 0x7a, 0x29, 0x5f, 0xd7, 0xb8, 0x47, 0x65,
		0x3b, 0x26, 0xba, 0x06, 0x84, 0xe4, 0x27, 0xd1, 0x98, 0x6d, 0xe3, 0xe1, 0xd1, 0xa2, 0x66, 0xb1,
		0x98, 0xdd, 0x3e, 0xdd, 0xb3, 0x8b, 0x99, 0xc6, 0xae, 0x7d, 0xb1, 0x65, 0xc0, 0x5a, 0xa2, 0xc8,
		0xb5, 0x2f, 0x6a, 0x06, 0xac, 0x64, 0x9a, 0x1f, 0xf7, 0x45, 0x95, 0x77, 0x20, 0x46, 0x85, 0x8e,
		0xc4, 0xf7, 0x23, 0x31, 0x48, 0x05, 0x61, 0x3d, 0x0c, 0x7d, 0xde, 0x55, 0xfa, 0xb1, 0xd2, 0x96,
		0x27, 0x6f, 0xa4, 0xe6, 0x24, 0xc6, 0xf6, 0xfc, 0x4a, 0xdc, 0xbb, 0x85, 0x95, 0xf0, 0xbd, 0x46,
		0xe3, 0xd9, 0xc5, 0x9d, 0xf8, 0x7d, 0xe9, 0xcb, 0xfe, 0xc1, 0x7d, 0x69, 0x5f, 0xe8, 0x89, 0xe7,
		0x99, 0xb0, 0x94, 0xb3, 0x40, 0xfa, 0x6c, 0xd4, 0xf4, 0xcc, 0x88, 0xb7, 0x0c, 0x63, 0x6d, 0xe9,
		0x76, 0x26, 0x74, 0xc9, 0x7c, 0x07, 0x79, 0xba, 0x0c, 0xec, 0x20, 0xe7, 0x61, 0x3e, 0x76, 0x90,
		0x09, 0x39, 0x02, 0x76, 0x90, 0xe9, 0xb8, 0x35, 0x76, 0x90, 0x89, 0x2f, 0x08, 0x3b, 0xc8, 0xe0,
		0x4c, 0xaf, 0x84, 0x8e, 0x39, 0x3b, 0xc8, 0x13, 0xa5, 0xc3, 0xad, 0xaa, 0x01, 0x9b, 0xc7, 0xbb,
		0x8c, 0x97, 0xc0, 0xe3, 0x42, 0x8f, 0xef, 0x7d, 0x19, 0xb0, 0x3b, 0xc1, 0xe9, 0x42, 0x90, 0xef,
		0x2e, 0x86, 0xd9, 0x05, 0xc3, 0xdf, 0x5d, 0x0f, 0xd7, 0xeb, 0x0d, 0xbe, 0x1f, 0x8b, 0xb9, 0x5d,
		0x7f, 0x60, 0x68, 0x5a, 0x7f, 0x1c, 0x0a, 0xdc, 0x3b, 0xf3, 0x42, 0x41, 0xad, 0xba, 0x57, 0xdb,
		0xdb, 0xd9, 0xad, 0xee, 0x6d, 0x23, 0x26, 0x20, 0x26, 0xa0, 0x40, 0x29, 0x80, 0xf5, 0x97, 0x68,
		0xff, 0x23, 0xe7, 0xbd, 0x10, 0x64, 0xbe, 0x48, 0x35, 0xbc, 0x0e, 0xf9, 0xf7, 0xff, 0x67, 0xeb,
		0xc0, 0x06, 0x40, 0x1e, 0xe6, 0x63, 0x03, 0x80, 0x90, 0x27, 0x60, 0x03, 0x80, 0x8e, 0x5b, 0x63,
		0x03, 0x80, 0xf8, 0x82, 0xb0, 0x01, 0x00, 0xd6, 0xf4, 0x4a, 0xe8, 0x98, 0xb5, 0x01, 0xf0, 0xc1,
		0x80, 0xfe, 0xff, 0x36, 0xfa, 0xff, 0x39, 0x7f, 0xa1, 0xff, 0x4f, 0x6b, 0x31, 0xe8, 0xff, 0x73,
		0x09, 0xc5, 0xe8, 0xff, 0x13, 0x0c, 0x05, 0x26, 0xf6, 0xff, 0xab, 0xdb, 0x68, 0xfc, 0x23, 0x18,
		0xa0, 0x30, 0x29, 0x82, 0xf5, 0x68, 0xfc, 0xc3, 0x62, 0xf6, 0xa9, 0x99, 0xfa, 0x5d, 0xef, 0xdf,
		0xb5, 0xdf, 0xc0, 0xbb, 0xe0, 0xa7, 0x37, 0x78, 0xcf, 0x7e, 0xdd, 0x78, 0x7c, 0xd3, 0xd6, 0xe3,
		0x3f, 0x52, 0xbc, 0x37, 0xde, 0x1c, 0x77, 0x66, 0xe4, 0xca, 0x4c, 0x07, 0x8d, 0x58, 0x0f, 0x18,
		0x31, 0xdd, 0x57, 0x84, 0x76, 0x78, 0x9e, 0x40, 0x87, 0x76, 0x78, 0x7e, 0xee, 0x0a, 0xed, 0x70,
		0x6a, 0xdc, 0x13, 0xda, 0xe1, 0xe0, 0x34, 0xdf, 0x86, 0x08, 0xdb, 0x7d, 0xc0, 0x24, 0xe2, 0x7b,
		0xd2, 0x1d, 0xf8, 0x72, 0xc0, 0x31, 0xe2, 0xcf, 0x65, 0x23, 0x19, 0x8e, 0xfe, 0x94, 0x4e, 0x67,
		0x15, 0xe1, 0xfa, 0xfa, 0xb4, 0x48, 0xda, 0x98, 0x52, 0x4c, 0x94, 0x4a, 0x05, 0xb6, 0x94, 0xcb,
		0xcd, 0x55, 0xbf, 0xcb, 0x7b, 0x6e, 0x45, 0x11, 0x4f, 0x45, 0x21, 0xbe, 0x0a, 0x42, 0x46, 0x29,
		0x06, 0x31, 0x56, 0x08, 0x62, 0xac, 0x08, 0xc4, 0x25, 0x1a, 0x32, 0xed, 0x50, 0x17, 0xbb, 0x33,
		0xcd, 0xe9, 0xb6, 0xd9, 0x20, 0xf4, 0x27, 0xbd, 0x50, 0xcf, 0xf8, 0x7a, 0x6b, 0xfa, 0xe4, 0xed,
		0xd9, 0xa2, 0x9d, 0xd3, 0xd9, 0xe3, 0x76, 0xec, 0x40, 0x05, 0x4e, 0x33, 0x7a, 0xce, 0x4e, 0x33,
		0x18, 0x3b, 0x5d, 0xef, 0x36, 0xfe, 0xa8, 0x35, 0x7b, 0x60, 0xf5, 0xf9, 0xc3, 0x74, 0xe6, 0x9f,
		0x38, 0xc9, 0xbf, 0xd1, 0x89, 0x1f, 0x98, 0x53, 0x9f, 0x3f, 0xa1, 0x8e, 0xea, 0xf3, 0x60, 0xa2,
		0x5f, 0x71, 0xa9, 0xbc, 0xc9, 0x31, 0xb6, 0x24, 0xef, 0x42, 0xdf, 0x2d, 0x4f, 0x22, 0x9c, 0x5e,
		0x79, 0x3c, 0x0a, 0xed, 0x92, 0x2f, 0x07, 0xd2, 0x97, 0xba, 0xc7, 0xe7, 0x40, 0x27, 0xc3, 0x4b,
		0xc3, 0xfb, 0xbe, 0x3b, 0x08, 0xcb, 0x4a, 0x86, 0x83, 0xb8, 0x2d, 0x57, 0x0e, 0xe4, 0x30, 0xe2,
		0x9a, 0x65, 0x7f, 0x34, 0x09, 0x95, 0x1e, 0x96, 0xe5, 0x5d, 0x28, 0x75, 0xa0, 0x46, 0x3a, 0x58,
		0x17, 0xc1, 0xe4, 0xaa, 0xdc, 0x6d, 0x9e, 0x8b, 0xad, 0xca, 0xfe, 0x85, 0x8e, 0x7e, 0x53, 0xad,
		0xae, 0x89, 0xea, 0xf4, 0x3f, 0x5b, 0x6b, 0xa2, 0x52, 0xab, 0xac, 0x0b, 0xdc, 0x3e, 0x9e, 0x49,
		0xd9, 0x38, 0x6f, 0x70, 0x3f, 0xf8, 0x08, 0x2e, 0x20, 0xcf, 0x98, 0xad, 0x2e, 0xf4, 0xb4, 0x53,
		0x77, 0x22, 0xf4, 0x83, 0x0a, 0x66, 0xe5, 0x25, 0x7d, 0xf4, 0x97, 0xbe, 0x5c, 0x4b, 0x8d, 0x54,
		0xbc, 0xba, 0x54, 0x9c, 0x74, 0xb0, 0xc3, 0xfb, 0xb1, 0x14, 0xbf, 0x09, 0x21, 0xde, 0xcd, 0x36,
		0xcb, 0xca, 0x5e, 0xd0, 0xbf, 0x2a, 0x47, 0x1f, 0x07, 0xfb, 0x76, 0xc7, 0x69, 0x5b, 0xf5, 0xc3,
		0x4f, 0xf5, 0x03, 0xbb, 0x69, 0x77, 0xff, 0x70, 0xea, 0x8d, 0x7f, 0x3b, 0x1d, 0xbb, 0xf1, 0x0e,
		0x89, 0x37, 0xd3, 0xc4, 0x1b, 0x3b, 0x03, 0x72, 0x6e, 0x7e, 0x39, 0xf7, 0x8d, 0xde, 0x82, 0xc3,
		0x69, 0x2b, 0x78, 0x3f, 0x0d, 0x19, 0xf4, 0x7c, 0x35, 0x66, 0x79, 0xc8, 0x34, 0x09, 0xc3, 0x27,
		0xda, 0xbb, 0x17, 0x4a, 0xf7, 0xbc, 0x49, 0x5f, 0x8a, 0xf0, 0x5a, 0x8a, 0xa4, 0xdf, 0x25, 0x3a,
		0x76, 0x23, 0x10, 0xbd, 0x91, 0x0e, 0x5d, 0xa5, 0xa5, 0x2f, 0xa2, 0x18, 0x10, 0x7d, 0xc7, 0x85,
		0x9e, 0x93, 0xba, 0x18, 0x8b, 0x2a, 0x10, 0x5b, 0x15, 0x6e, 0xb1, 0x81, 0xf1, 0xa1, 0x9f, 0xc5,
		0xb0, 0xdc, 0x5f, 0x40, 0x20, 0xc3, 0xcd, 0x6c, 0x13, 0x4e, 0xfc, 0x3c, 0x8a, 0xd2, 0x29, 0x39,
		0x13, 0x76, 0xf3, 0x51, 0xbd, 0x51, 0xae, 0xde, 0xd0, 0x9b, 0x7e, 0x4b, 0xbc, 0xe0, 0xb5, 0xef,
		0x57, 0xb4, 0xfd, 0x3e, 0xda, 0xc1, 0x97, 0x6e, 0x70, 0x20, 0xec, 0x76, 0x25, 0xb7, 0x7f, 0xa3,
		0x74, 0x79, 0xe8, 0x8f, 0x26, 0x63, 0xf2, 0x3e, 0x97, 0x10, 0xf3, 0x45, 0xa3, 0x89, 0x87, 0xb4,
		0xf9, 0x81, 0x4a, 0xe2, 0x66, 0x72, 0x99, 0x10, 0xe1, 0x34, 0x11, 0xc2, 0x70, 0x02, 0x84, 0x5b,
		0xf1, 0xc7, 0x76, 0xc2, 0x83, 0x6d, 0x7d, 0xc7, 0x73, 0x82, 0x03, 0x47, 0x46, 0xde, 0xf2, 0xca,
		0x1b, 0xca, 0x67, 0xc2, 0xc7, 0xe3, 0xd9, 0x68, 0x36, 0xc1, 0x6b, 0x9e, 0x1f, 0xa6, 0x66, 0x73,
		0x39, 0xa9, 0xce, 0x82, 0xd0, 0xb0, 0x23, 0x36, 0x1c, 0x09, 0x0e, 0x63, 0xa2, 0xc3, 0x95, 0xf0,
		0xb0, 0x27, 0x3e, 0xec, 0x09, 0x10, 0x6f, 0x22, 0xc4, 0x83, 0x10, 0x31, 0x21, 0x46, 0xec, 0x08,
		0x52, 0x62, 0x30, 0xa7, 0xae, 0xcf, 0x8b, 0xd9, 0x86, 0x4f, 0x17, 0xe8, 0x25, 0x12, 0x05, 0x1d,
		0x11, 0x90, 0x2a, 0x83, 0xc9, 0x15, 0x77, 0x92, 0x65, 0x0c, 0xd9, 0x32, 0x86, 0x74, 0x99, 0x41,
		0xbe, 0x78, 0x91, 0x30, 0x66, 0x64, 0x2c, 0x81, 0x08, 0x7f, 0x1d, 0x11, 0xb6, 0x17, 0x09, 0x33,
		0xbe, 0x40, 0x98, 0xf9, 0xc5, 0x01, 0x8c, 0x6f, 0xcf, 0x30, 0xe1, 0xa2, 0x00, 0x53, 0x2e, 0x08,
		0x30, 0x4e, 0x0b, 0xdc, 0x1c, 0x0d, 0x70, 0xc6, 0x17, 0x01, 0x18, 0x71, 0x01, 0x80, 0x71, 0x17,
		0xff, 0xc2, 0xd7, 0x51, 0x20, 0x14, 0xdc, 0xea, 0x4b, 0x14, 0x62, 0x2b, 0x74, 0x47, 0x96, 0x3a,
		0x61, 0x8b, 0xb4, 0x94, 0xa7, 0x5e, 0xd8, 0x62, 0xd6, 0x35, 0x46, 0x37, 0x2c, 0x59, 0x14, 0x5f,
		0xfd, 0xb0, 0xe5, 0x25, 0xb0, 0xd3, 0x11, 0xe3, 0x1a, 0x89, 0x18, 0x6a, 0xdf, 0x2c, 0xad, 0x81,
		0x9f, 0x16, 0x8e, 0x41, 0x3d, 0x8a, 0x79, 0x67, 0xae, 0x7d, 0x74, 0xb8, 0xbd, 0xb5, 0xb9, 0xbd,
		0x2f, 0xec, 0x4e, 0xd9, 0xee, 0x08, 0x2b, 0x51, 0xf5, 0x10, 0x83, 0x91, 0x2f, 0xba, 0xbe, 0x3b,
		0x18, 0xa8, 0x9e, 0xb0, 0xf4, 0x50, 0x69, 0x29, 0x7d, 0xa5, 0x87, 0xeb, 0x0f, 0xc3, 0x6c, 0x5b,
		0xfb, 0x62, 0x26, 0xf6, 0x51, 0xdd, 0x5a, 0xab, 0xd4, 0x2a, 0x6b, 0x73, 0xc9, 0x8f, 0x75, 0x5c,
		0x31, 0x9d, 0xff, 0x3a, 0x0c, 0x50, 0xd4, 0x59, 0x5a, 0x93, 0xd1, 0xb7, 0x4c, 0xaf, 0xc8, 0x15,
		0x51, 0x33, 0xc2, 0x6a, 0x93, 0x6a, 0x46, 0x9c, 0x4c, 0x2b, 0x22, 0xf3, 0x85, 0x92, 0x2e, 0xdd,
		0xc9, 0xda, 0xe4, 0xf0, 0x1a, 0xa7, 0x2b, 0xdd, 0xa0, 0x0e, 0x6b, 0x74, 0xdc, 0x60, 0xa9, 0x0e,
		0x0b, 0x35, 0xba, 0xd5, 0x16, 0xbb, 0x4f, 0xf5, 0xb5, 0x7e, 0x4c, 0x5d, 0xeb, 0xd8, 0x6e, 0x39,
		0x1f, 0xdb, 0x27, 0x67, 0xa7, 0xd0, 0xa3, 0xcb, 0xb6, 0x6c, 0x85, 0x1e, 0x5d, 0xce, 0x15, 0xe9,
		0x9b, 0xfd, 0x05, 0x8a, 0x74, 0x2b, 0x78, 0x43, 0xa6, 0x2a, 0xd2, 0xdd, 0x28, 0xad, 0x82, 0xd0,
		0x8f, 0x37, 0xbc, 0x45, 0xcc, 0x27, 0x9f, 0x48, 0x69, 0x5d, 0xe8, 0xe8, 0x1b, 0xe7, 0x2d, 0x0f,
		0x15, 0x4c, 0xd5, 0xb4, 0xb6, 0x20, 0x4b, 0x97, 0x4b, 0x74, 0x86, 0x2c, 0x1d, 0xad, 0x60, 0x9d,
		0xa6, 0x47, 0xa1, 0x23, 0x54, 0xe4, 0x8e, 0x10, 0xb4, 0xe9, 0x8c, 0xae, 0x8c, 0xa1, 0x4d, 0x47,
		0xb7, 0x83, 0xc6, 0x41, 0x59, 0x29, 0xc3, 0x2b, 0xa7, 0x6e, 0x94, 0xfe, 0x18, 0x3f, 0x16, 0xe8,
		0xf5, 0x99, 0x16, 0x8a, 0x4a, 0xee, 0xad, 0xab, 0x3c, 0xf7, 0xca, 0x93, 0xe5, 0x2b, 0x57, 0xf7,
		0xbf, 0xa8, 0x7e, 0xec, 0xdf, 0x5c, 0x74, 0xfb, 0x9e, 0x31, 0x1e, 0xfa, 0x7d, 0x69, 0x98, 0x09,
		0xfd, 0xbe, 0x15, 0xc2, 0x16, 0xfa, 0x7d, 0x59, 0x54, 0xc6, 0xd0, 0xef, 0xcb, 0xbc, 0xf8, 0x85,
		0x7e, 0x5f, 0x21, 0x4a, 0x17, 0xe8, 0xf7, 0xad, 0x36, 0x3f, 0x40, 0xbf, 0x0f, 0xc4, 0x86, 0x23,
		0xc1, 0x61, 0x4c, 0x74, 0xb8, 0x12, 0x1e, 0xf6, 0xc4, 0x87, 0x3d, 0x01, 0xe2, 0x4d, 0x84, 0x78,
		0x10, 0x22, 0x26, 0xc4, 0x88, 0x1d, 0x41, 0x4a, 0x0c, 0xe6, 0xd3, 0xfb, 0x79, 0x31, 0xd7, 0x70,
		0xe9, 0x00, 0xbd, 0x44, 0xa0, 0xa0, 0xdd, 0x07, 0x42, 0x65, 0x30, 0xb1, 0xe2, 0x4e, 0xb0, 0x8c,
		0x21, 0x5a, 0xc6, 0x10, 0x2e, 0x33, 0x88, 0x17, 0x2f, 0x02, 0xc6, 0x8c, 0x88, 0x25, 0x10, 0xe1,
		0xaf, 0xdd, 0xa7, 0xa4, 0x94, 0x03, 0x6f, 0xe4, 0xf2, 0x16, 0xf0, 0xdb, 0x63, 0x68, 0x7a, 0x53,
		0xea, 0x61, 0x4c, 0x8c, 0x31, 0x1d, 0x9f, 0xf1, 0x93, 0x37, 0x4a, 0xc1, 0xaf, 0x06, 0x55, 0x2f,
		0x62, 0x91, 0x15, 0x0a, 0x7e, 0x04, 0x5c, 0xdc, 0x28, 0x05, 0x3f, 0xb8, 0x38, 0x5c, 0x1c, 0xd5,
		0x01, 0x63, 0xab, 0x21, 0xc2, 0x50, 0xf8, 0x14, 0x55, 0x0a, 0x39, 0xd6, 0x8a, 0x49, 0x9d, 0x18,
		0x5b, 0x8f, 0x0e, 0x78, 0x16, 0x66, 0xa3, 0x03, 0x9e, 0x23, 0xce, 0xd1, 0x01, 0xcf, 0xcf, 0x5d,
		0xd1, 0x01, 0x27, 0xb6, 0x10, 0x74, 0xc0, 0xc1, 0x68, 0xbe, 0x03, 0x11, 0x03, 0x3a, 0xe0, 0x7d,
		0xa9, 0x43, 0x15, 0xde, 0xfb, 0x72, 0xc0, 0xb8, 0x03, 0xce, 0x52, 0x1c, 0xd9, 0x9e, 0x3d, 0xfa,
		0x03, 0x37, 0x60, 0x9c, 0xb7, 0xe6, 0x40, 0xb2, 0x3b, 0x76, 0xc7, 0xe9, 0x9c, 0x1d, 0x74, 0x9b,
		0xe7, 0x4e, 0xf7, 0x8f, 0x53, 0x8b, 0x6b, 0xfa, 0x8a, 0xdb, 0x4e, 0x01, 0xdb, 0x8d, 0x09, 0xc1,
		0x7a, 0x73, 0xe2, 0x31, 0xa2, 0x4e, 0x1f, 0xab, 0xaf, 0xd8, 0xa7, 0xe7, 0x35, 0xa7, 0x7d, 0x72,
		0xd6, 0xb5, 0xda, 0x8e, 0xdd, 0x28, 0xa1, 0xb3, 0x0c, 0x64, 0xa5, 0x87, 0xac, 0x1d, 0x20, 0x0b,
		0xc8, 0x4a, 0x1f, 0x59, 0xa7, 0x6d, 0xeb, 0xc8, 0xfe, 0xec, 0x1c, 0x35, 0xeb, 0x1f, 0x3b, 0xc0,
		0x15, 0x70, 0x95, 0x32, 0xae, 0x3a, 0x88, 0x56, 0x40, 0x55, 0x7a, 0xa8, 0x9a, 0xd2, 0xf7, 0x0e,
		0x67, 0xfe, 0x6e, 0x12, 0x8f, 0x37, 0x03, 0x6d, 0x85, 0xe1, 0xf5, 0x06, 0xc4, 0xb5, 0xe2, 0x20,
		0x6e, 0x07, 0x88, 0x03, 0xe2, 0x50, 0x07, 0x00, 0x6f, 0x02, 0xf5, 0x01, 0xd0, 0x06, 0xb4, 0xbd,
		0x09, 0x6d, 0xdd, 0xfa, 0x47, 0xc0, 0x0c, 0x30, 0xcb, 0x00, 0x66, 0x3b, 0x35, 0x03, 0x80, 0xc6,
		0x7a, 0x05, 0x97, 0xe8, 0x37, 0xc1, 0xb1, 0x91, 0x37, 0x00, 0x27, 0xe4, 0x07, 0x00, 0xca, 0x34,
		0x40, 0x2d, 0xdd, 0xf7, 0xf2, 0x6f, 0xa7, 0x59, 0x6f, 0x61, 0x9b, 0x05, 0xb0, 0x4a, 0x1b, 0x56,
		0x80, 0x14, 0x20, 0x95, 0x2a, 0xa4, 0x92, 0x9b, 0xa9, 0x00, 0x2b, 0xc0, 0x2a, 0x35, 0x58, 0x9d,
		0xd7, 0xed, 0x66, 0xfd, 0xa0, 0x69, 0x39, 0x07, 0xf5, 0x56, 0xe3, 0x3f, 0x76, 0xa3, 0xfb, 0x09,
		0xf0, 0x02, 0xbc, 0xd2, 0x82, 0x57, 0x02, 0x2a, 0xe7, 0xf0, 0xa4, 0xd5, 0xe9, 0xb6, 0xeb, 0x76,
		0xab, 0x8b, 0x63, 0x52, 0x00, 0x58, 0x6a, 0x00, 0xb3, 0x3e, 0x77, 0xad, 0x56, 0xc3, 0x6a, 0x20,
		0x3f, 0x02, 0x5f, 0xab, 0xc0, 0x57, 0x7c, 0x74, 0xc5, 0x6e, 0x75, 0xad, 0xf6, 0x51, 0xfd, 0xd0,
		0x72, 0xea, 0x8d, 0x46, 0xdb, 0xea, 0x20, 0x82, 0x01, 0x61, 0xe9, 0x22, 0xac, 0x65, 0xd9, 0x1f,
		0x3f, 0x1d, 0x9c, 0xb4, 0x01, 0x30, 0x00, 0x6c, 0x05, 0x00, 0xdb, 0x41, 0x08, 0x03, 0xc2, 0x56,
		0x8c, 0x30, 0x84, 0x30, 0x00, 0x6c, 0x55, 0x00, 0x6b, 0xda, 0xad, 0xdf, 0x9d, 0x7a, 0xb7, 0xdb,
		0xb6, 0x0f, 0xce, 0xba, 0x16, 0xa0, 0x05, 0x68, 0xa5, 0x0b, 0xad, 0x86, 0xd5, 0xac, 0xff, 0x01,
		0x54, 0x01, 0x55, 0xe9, 0xa3, 0xca, 0x39, 0xaf, 0xb7, 0xed, 0x7a, 0xd7, 0x3e, 0x69, 0x01, 0x5f,
		0xc0, 0x57, 0xaa, 0xf8, 0xc2, 0x06, 0x23, 0x20, 0x95, 0x32, 0xa4, 0x9a, 0x27, 0x20, 0xee, 0x00,
		0x55, 0xca, 0xa0, 0x3a, 0x6d, 0x9f, 0x74, 0xad, 0xc3, 0x28, 0x05, 0x4e, 0xe7, 0x4e, 0x81, 0x2f,
		0xe0, 0x2b, 0x25, 0x7c, 0x1d, 0xd7, 0x3f, 0x4f, 0x31, 0x86, 0xdd, 0x6b, 0xa0, 0x6b, 0x25, 0xe8,
		0x6a, 0x5b, 0x1d, 0xab, 0x7d, 0x8e, 0x13, 0x12, 0xc0, 0xd8, 0x8a, 0x30, 0x66, 0xb7, 0x1e, 0xa2,
		0x18, 0xfa, 0x10, 0x40, 0x57, 0xaa, 0xe8, 0x6a, 0x5b, 0x1d, 0xbb, 0x71, 0x56, 0x6f, 0x22, 0x76,
		0x01, 0x5d, 0xe9, 0xa3, 0x0b, 0x6a, 0x32, 0x40, 0x5b, 0xf6, 0xa8, 0x33, 0x62, 0x66, 0xc3, 0x80,
		0xa0, 0x56, 0x20, 0xb8, 0x01, 0x6a, 0x80, 0x5a, 0x26, 0x50, 0x33, 0xe0, 0x0c, 0x2b, 0xe0, 0xc6,
		0x06, 0x6e, 0x26, 0xcd, 0x7e, 0x00, 0x76, 0x5c, 0x60, 0x67, 0xd8, 0x4c, 0x08, 0x80, 0xc7, 0x05,
		0x78, 0x66, 0xcd, 0x8a, 0x00, 0x77, 0x5c, 0x70, 0x67, 0xda, 0x0c, 0x09, 0x90, 0xc7, 0x0a, 0x79,
		0xe6, 0x1c, 0xcc, 0x06, 0xf0, 0x18, 0x01, 0x6f, 0x07, 0x21, 0x0f, 0xc8, 0xcb, 0x09, 0x79, 0x08,
		0x79, 0x00, 0x5e, 0xd6, 0xc0, 0x33, 0x66, 0x46, 0x05, 0x90, 0x63, 0x05, 0x39, 0xe6, 0x67, 0x46,
		0x80, 0x36, 0x7e, 0x68, 0x33, 0x61, 0xa6, 0x05, 0xb8, 0x63, 0x85, 0x3b, 0x6c, 0xc0, 0x02, 0x6a,
		0x19, 0x41, 0x8d, 0xf7, 0x0c, 0x0c, 0xc0, 0xc6, 0x0a, 0x6c, 0xc6, 0xcc, 0xc6, 0x00, 0x77, 0x5c,
		0x70, 0x67, 0xd2, 0xcc, 0x0c, 0x50, 0xc7, 0x09, 0x75, 0x66, 0xcd, 0xd2, 0x00, 0x7b, 0x6c, 0xb0,
		0x67, 0xd0, 0x8c, 0x0d, 0x50, 0xc7, 0x05, 0x75, 0x26, 0xcd, 0xde, 0x00, 0x75, 0x5c, 0x50, 0xd7,
		0xb5, 0x9c, 0x86, 0x75, 0x54, 0x3f, 0x6b, 0x76, 0x9d, 0x63, 0xab, 0xdb, 0xb6, 0x0f, 0x01, 0x3a,
		0x80, 0x6e, 0xd5, 0xa0, 0x3b, 0x6b, 0x25, 0x47, 0x39, 0xad, 0x86, 0xd3, 0xec, 0xe0, 0x58, 0x1d,
		0x40, 0x97, 0x01, 0xe8, 0xa6, 0xf5, 0x84, 0xd5, 0x40, 0x86, 0x05, 0xee, 0x32, 0xc4, 0x5d, 0xd7,
		0x6e, 0xda, 0xff, 0x35, 0x0c, 0x75, 0xb8, 0xb1, 0x12, 0xde, 0x5e, 0x24, 0x2f, 0x2f, 0x02, 0x7f,
		0x06, 0xb8, 0xc0, 0x93, 0x01, 0xae, 0x02, 0x81, 0xcb, 0x24, 0x3e, 0x0c, 0x7c, 0x81, 0xf7, 0x02,
		0x5d, 0xe6, 0xa2, 0xab, 0x7d, 0x72, 0xd6, 0xb5, 0xda, 0xce, 0x61, 0xfd, 0x34, 0x51, 0x13, 0x6a,
		0x3b, 0xf5, 0xe6, 0xc7, 0x93, 0xb6, 0xdd, 0xfd, 0x74, 0x0c, 0x64, 0x01, 0x59, 0xa9, 0x22, 0xeb,
		0xe1, 0x4f, 0x80, 0x16, 0xa0, 0x95, 0x22, 0xb4, 0x20, 0x81, 0x06, 0xbc, 0x21, 0x59, 0x16, 0x37,
		0xb2, 0x15, 0x09, 0x71, 0x26, 0x24, 0xd1, 0x04, 0x72, 0xe8, 0x78, 0xe3, 0xb9, 0x1b, 0xfc, 0xbc,
		0x79, 0x3d, 0x67, 0x3e, 0xd6, 0xf2, 0xb0, 0x94, 0x49, 0x42, 0x2d, 0xd5, 0xb5, 0x1e, 0x85, 0x6e,
		0xa8, 0x46, 0xba, 0xb4, 0xcf, 0x28, 0x85, 0x96, 0x82, 0xde, 0xb5, 0xbc, 0x71, 0xc7, 0x6e, 0x78,
		0x1d, 0x25, 0xcb, 0x8d, 0xd1, 0x58, 0xea, 0xde, 0x48, 0x0f, 0xd4, 0xb0, 0xac, 0x65, 0xf8, 0x65,
		0xe4, 0xff, 0x55, 0x56, 0x3a, 0x08, 0x5d, 0xdd, 0x93, 0x1b, 0x4f, 0x3f, 0x08, 0x96, 0x3e, 0xd9,
		0x18, 0xfb, 0xa3, 0x70, 0xd4, 0x1b, 0x79, 0x41, 0xf2, 0xbb, 0x0d, 0x15, 0xa8, 0x60, 0xc3, 0x93,
		0xb7, 0xd2, 0x9b, 0xfd, 0xb2, 0xe1, 0x29, 0xfd, 0x57, 0x39, 0x08, 0xdd, 0x50, 0x96, 0xfb, 0x6e,
		0xe8, 0x5e, 0xb9, 0x81, 0xdc, 0xf0, 0x82, 0xf1, 0x46, 0xe8, 0xdd, 0x06, 0xd1, 0x7f, 0xe2, 0xbf,
		0x52, 0xd6, 0x52, 0x0d, 0xaf, 0xaf, 0x46, 0x7e, 0xd9, 0x0d, 0x43, 0x5f, 0x5d, 0x4d, 0xc2, 0xc8,
		0x80, 0xe9, 0x47, 0x41, 0xf2, 0xbb, 0x8d, 0x07, 0x5b, 0x12, 0x1b, 0x82, 0xc9, 0x55, 0xfc, 0x2f,
		0x4d, 0x7f, 0xdd, 0x70, 0x6f, 0x5d, 0xe5, 0xb9, 0x57, 0x9e, 0x2c, 0x5f, 0xb9, 0xba, 0xff, 0x45,
		0xf5, 0xc3, 0xeb, 0x8d, 0xf8, 0x87, 0xf3, 0xc8, 0xfc, 0xf4, 0xbd, 0x94, 0xb6, 0x85, 0xc4, 0xe3,
		0x47, 0x49, 0xde, 0x85, 0xbe, 0x5b, 0x9e, 0x44, 0xe0, 0xbd, 0xf2, 0x24, 0x8b, 0xd8, 0x51, 0xf2,
		0xe5, 0x40, 0xfa, 0x52, 0xf7, 0x24, 0x9b, 0x0a, 0x9b, 0x51, 0x40, 0x4e, 0xea, 0x96, 0xa3, 0xc3,
		0xdd, 0x0f, 0x95, 0xcd, 0x7d, 0x61, 0x77, 0xca, 0x76, 0x47, 0x74, 0x7d, 0x77, 0x30, 0x50, 0x3d,
		0x61, 0xe9, 0xa1, 0xd2, 0x52, 0xfa, 0x4a, 0x0f, 0xc5, 0xaf, 0x5d, 0xeb, 0xbd, 0x38, 0x96, 0xa1,
		0xaf, 0x7a, 0x17, 0xda, 0xba, 0x0b, 0xa5, 0x0e, 0xd4, 0x48, 0x07, 0xeb, 0x22, 0x98, 0x5c, 0x95,
		0xbb, 0xcd, 0x73, 0xb1, 0xf5, 0x61, 0x5f, 0x44, 0xbf, 0x56, 0xab, 0x6b, 0xa2, 0xba, 0xb5, 0x26,
		0x2a, 0xb5, 0xca, 0x9a, 0xa8, 0xc6, 0x7f, 0xaa, 0x6e, 0xad, 0x33, 0xea, 0xf2, 0x94, 0x3a, 0xa3,
		0x89, 0xdf, 0x93, 0xac, 0x52, 0x6b, 0x6c, 0xf7, 0xef, 0xf2, 0xfe, 0xcb, 0xc8, 0xef, 0x47, 0x2f,
		0xf4, 0xc1, 0x6b, 0x78, 0xf5, 0x08, 0x4a, 0x9f, 0xdc, 0xa0, 0xee, 0x0f, 0x27, 0x37, 0x52, 0x87,
		0xa5, 0x7d, 0x11, 0xfa, 0x13, 0xc9, 0x6c, 0x01, 0x0b, 0xd6, 0x67, 0xe1, 0x56, 0xa8, 0x00, 0x0a,
		0x66, 0xe5, 0x25, 0x7d, 0x7f, 0x28, 0x7d, 0xb9, 0x96, 0x1a, 0xe9, 0x7a, 0x75, 0xe9, 0x7a, 0x7d,
		0x7d, 0x5a, 0x55, 0x6c, 0x84, 0xf7, 0x63, 0x29, 0x7e, 0x13, 0xef, 0x46, 0xbd, 0x72, 0x5c, 0xc7,
		0x78, 0x41, 0xff, 0xaa, 0x1c, 0x7d, 0x18, 0xec, 0xff, 0x80, 0x6c, 0xf9, 0x3b, 0x24, 0xe5, 0x4c,
		0x93, 0x72, 0xec, 0x16, 0xc8, 0xc7, 0xf9, 0xe5, 0xe3, 0xd4, 0xfc, 0x86, 0x4f, 0xd6, 0x65, 0xe4,
		0xe1, 0x0d, 0x19, 0xf4, 0x7c, 0x35, 0x66, 0xd7, 0xd6, 0x7a, 0x14, 0x9a, 0x4f, 0xb4, 0x77, 0x2f,
		0x94, 0xee, 0x79, 0x93, 0xbe, 0x14, 0xe1, 0xb5, 0x14, 0x49, 0x4b, 0x48, 0xc4, 0x2d, 0xa1, 0xbe,
		0x0a, 0xaf, 0x45, 0x6f, 0xa4, 0x43, 0x57, 0x69, 0xe9, 0x8b, 0x28, 0x24, 0x44, 0xdf, 0x76, 0xa1,
		0xe7, 0x7c, 0x4f, 0x05, 0x22, 0x46, 0xe7, 0xd6, 0x87, 0x75, 0x6e, 0xb1, 0x82, 0x69, 0x88, 0x7e,
		0x1a, 0xa6, 0xfb, 0x0b, 0x38, 0xe4, 0xb7, 0xc3, 0xca, 0x3e, 0x62, 0x2f, 0x45, 0xed, 0x54, 0x5d,
		0x0a, 0xfb, 0x3b, 0xa8, 0xee, 0x28, 0x57, 0x77, 0xe8, 0x6f, 0xbf, 0x25, 0x6a, 0xf0, 0xda, 0x17,
		0x2b, 0xe4, 0x7e, 0x18, 0x83, 0x94, 0x5a, 0x0a, 0x42, 0x7f, 0xd2, 0x0b, 0xf5, 0x8c, 0xd2, 0xb5,
		0xa6, 0x0f, 0xda, 0x9e, 0xad, 0xd1, 0x39, 0x9d, 0x3d, 0x5d, 0xc7, 0x0e, 0x54, 0xe0, 0x34, 0xa3,
		0xc7, 0xea, 0x34, 0x83, 0xb1, 0xd3, 0xf5, 0x6e, 0xe3, 0x8f, 0x5a, 0xb3, 0xe7, 0x53, 0x9f, 0x3f,
		0x3b, 0x67, 0xfe, 0x89, 0x93, 0xfc, 0x1b, 0x9d, 0xf8, 0xf9, 0x38, 0xf5, 0xf9, 0xf3, 0x39, 0x48,
		0x1e, 0xcf, 0x2f, 0x08, 0xa0, 0x86, 0x85, 0xa6, 0x52, 0x82, 0xfd, 0x72, 0x6f, 0xa4, 0x83, 0xd0,
		0x77, 0x95, 0x0e, 0x03, 0xf2, 0x11, 0x2a, 0x29, 0x69, 0x9e, 0x37, 0x9f, 0x78, 0x2a, 0xf8, 0x5d,
		0xe9, 0x88, 0xcc, 0x57, 0x88, 0x9b, 0x79, 0x18, 0x87, 0xfb, 0xd2, 0xbe, 0xd8, 0x24, 0x6e, 0xe8,
		0xa9, 0x2f, 0x07, 0xea, 0x8e, 0x47, 0x5a, 0x9d, 0x03, 0x77, 0xd6, 0xdd, 0xe1, 0x90, 0x71, 0x98,
		0x95, 0xce, 0x8b, 0xe5, 0xf2, 0x78, 0x8a, 0x0c, 0x26, 0x47, 0xa7, 0xb8, 0x56, 0xc7, 0x8f, 0x2a,
		0xe2, 0x39, 0xb0, 0x71, 0x5c, 0xc7, 0xe8, 0x72, 0xa6, 0xa1, 0x7c, 0x1e, 0x01, 0xf7, 0x39, 0x86,
		0xc0, 0x27, 0x96, 0x7d, 0x8b, 0xe7, 0x70, 0x09, 0x6b, 0x3c, 0xe8, 0x0e, 0x3b, 0xda, 0xc3, 0x91,
		0xfe, 0x30, 0xa6, 0x41, 0x5c, 0xe9, 0x10, 0x7b, 0x5a, 0xc4, 0x9e, 0x1e, 0xf1, 0xa6, 0x49, 0x3c,
		0xe8, 0x12, 0x13, 0xda, 0xc4, 0x8e, 0x3e, 0x25, 0x06, 0x73, 0xea, 0x0e, 0xbd, 0x98, 0x6d, 0xf8,
		0xf4, 0x88, 0x98, 0x93, 0x28, 0xb6, 0x64, 0x8a, 0x33, 0xa9, 0x32, 0x80, 0x5c, 0x71, 0x27, 0x59,
		0xc6, 0x90, 0x2d, 0x63, 0x48, 0x97, 0x19, 0xe4, 0x8b, 0x17, 0x09, 0x63, 0x46, 0xc6, 0xd8, 0x92,
		0xb2, 0x67, 0xc8, 0x19, 0xdf, 0x88, 0xb9, 0xcc, 0xd1, 0xb8, 0x86, 0x4c, 0x9e, 0x54, 0x8d, 0x3d,
		0x65, 0x33, 0x81, 0xba, 0x19, 0x44, 0xe1, 0x4c, 0xa1, 0x72, 0xc6, 0x51, 0x3a, 0xe3, 0xa8, 0x9d,
		0x59, 0x14, 0x8f, 0x27, 0xd5, 0x63, 0x4a, 0xf9, 0xd8, 0x53, 0xbf, 0x67, 0x28, 0x60, 0x59, 0xf5,
		0xf9, 0x07, 0xdb, 0x65, 0x36, 0x18, 0x2d, 0x8b, 0x79, 0x7c, 0x9a, 0x11, 0xc3, 0x4d, 0xe6, 0xcb,
		0xe0, 0x4e, 0x10, 0x4d, 0x22, 0x8a, 0x06, 0x12, 0x46, 0xd3, 0x88, 0xa3, 0xb1, 0x04, 0xd2, 0x58,
		0x22, 0x69, 0x26, 0xa1, 0xe4, 0x4d, 0x2c, 0x99, 0x13, 0xcc, 0x04, 0x52, 0xdd, 0xfb, 0xb1, 0x34,
		0x2b, 0xe3, 0x78, 0xd2, 0x1d, 0xf8, 0x72, 0x60, 0x42, 0xc6, 0x99, 0x77, 0xee, 0x76, 0x0d, 0x58,
		0xcb, 0xe9, 0x6c, 0x72, 0x2b, 0xd1, 0x15, 0x78, 0x4c, 0xa5, 0x7f, 0x41, 0x08, 0x43, 0xf8, 0xfa,
		0x39, 0x44, 0x4d, 0xc5, 0x22, 0x8d, 0x29, 0x2d, 0xa7, 0xcb, 0x31, 0xa3, 0xa4, 0xac, 0xa0, 0xa4,
		0x44, 0x49, 0x89, 0x92, 0x12, 0x25, 0x25, 0x4a, 0x4a, 0x94, 0x94, 0xe0, 0x63, 0xc5, 0x2a, 0x29,
		0xb9, 0xef, 0x5d, 0x24, 0x0b, 0x79, 0xd0, 0x61, 0xd8, 0x37, 0xed, 0xf2, 0x15, 0x4e, 0x12, 0x13,
		0x3f, 0x43, 0x3c, 0x37, 0x0d, 0x59, 0x8e, 0x29, 0x04, 0xd4, 0x44, 0x22, 0x6a, 0x30, 0x21, 0x35,
		0x95, 0x98, 0x1a, 0x4f, 0x50, 0x8d, 0x27, 0xaa, 0x66, 0x13, 0x56, 0x33, 0x88, 0xab, 0x21, 0x04,
		0x36, 0x81, 0x9a, 0x31, 0x7b, 0x23, 0x4b, 0x19, 0x4b, 0x49, 0x29, 0x07, 0xde, 0xc8, 0x0d, 0xb7,
		0xaa, 0x26, 0x65, 0xad, 0x19, 0x09, 0xdc, 0x33, 0x68, 0x49, 0x4d, 0xa9, 0x87, 0x71, 0x01, 0xf2,
		0xa7, 0x51, 0x61, 0xdc, 0x2c, 0x5a, 0x11, 0xbf, 0xa9, 0x63, 0xa5, 0x8d, 0xe3, 0x4b, 0xc9, 0xe2,
		0xe2, 0x8b, 0x7b, 0x4b, 0xfb, 0xa2, 0xb6, 0x66, 0xe6, 0xfa, 0x8e, 0x7c, 0xb7, 0x17, 0xaa, 0x91,
		0x6e, 0xa8, 0xa1, 0x8a, 0x27, 0x8a, 0x37, 0x0d, 0x5d, 0x68, 0x4b, 0x0e, 0xdd, 0x50, 0xdd, 0x46,
		0xef, 0x72, 0xe0, 0x7a, 0x81, 0x34, 0x6e, 0x95, 0x5f, 0xd7, 0x0c, 0x0c, 0x2d, 0xee, 0x1d, 0x42,
		0x0b, 0x42, 0x0b, 0x42, 0x0b, 0xaa, 0x33, 0xac, 0x66, 0xf9, 0xeb, 0xf2, 0x17, 0xbc, 0x0f, 0xa4,
		0xde, 0x74, 0x82, 0x98, 0x59, 0x73, 0x2b, 0x4b, 0x85, 0xbf, 0x49, 0xf3, 0x2b, 0x4f, 0xcb, 0x7e,
		0xec, 0xfd, 0x10, 0x5d, 0x10, 0xf6, 0x7e, 0x58, 0x2d, 0x0d, 0x7b, 0x3f, 0x4c, 0x17, 0x88, 0xbd,
		0x1f, 0xf0, 0x3f, 0x70, 0xc0, 0x74, 0xa0, 0x66, 0xee, 0xde, 0xcf, 0x44, 0x69, 0x33, 0xb7, 0x7d,
		0x76, 0x0d, 0x5a, 0x52, 0xdb, 0xd5, 0x43, 0x89, 0x5d, 0x1f, 0xfa, 0x2f, 0xaa, 0x10, 0xbb, 0x3e,
		0x9b, 0x68, 0xcd, 0x32, 0x8f, 0xfd, 0xd8, 0xf5, 0x61, 0x18, 0x5a, 0x0a, 0xb1, 0xeb, 0x53, 0xdd,
		0xab, 0xed, 0xed, 0xec, 0x56, 0xf7, 0xb6, 0x11, 0x63, 0x10, 0x63, 0x50, 0xa0, 0x61, 0x35, 0x3f,
		0xfd, 0x85, 0xed, 0x1f, 0xac, 0xa0, 0xf0, 0x0c, 0x82, 0xdb, 0x7d, 0xbe, 0xdf, 0x5d, 0x8f, 0xf1,
		0xf7, 0xfd, 0x3e, 0x7b, 0x55, 0xe8, 0xb3, 0x9f, 0x6e, 0x2c, 0x7e, 0xc3, 0xc2, 0xc7, 0x53, 0xc5,
		0x00, 0x28, 0x67, 0xc0, 0x72, 0xd3, 0xa3, 0x5c, 0xe9, 0x77, 0x79, 0x6f, 0xca, 0xf6, 0x75, 0xa9,
		0xa9, 0x82, 0xb0, 0x1e, 0x86, 0xcc, 0x05, 0x3e, 0x8f, 0x95, 0xb6, 0x3c, 0x79, 0x23, 0x35, 0xf7,
		0xa2, 0x26, 0xaa, 0xb3, 0x17, 0x56, 0x52, 0xf9, 0x50, 0xab, 0xed, 0xec, 0xd6, 0x6a, 0x9b, 0xbb,
		0x5b, 0xbb, 0x9b, 0x7b, 0xdb, 0xdb, 0x95, 0x9d, 0x0a, 0xe3, 0xd2, 0xb4, 0x74, 0xe2, 0xf7, 0xa5,
		0x2f, 0xfb, 0x07, 0x91, 0xfb, 0xe8, 0x89, 0xe7, 0x99, 0xb0, 0x94, 0xb3, 0x40, 0xfa, 0xac, 0xab,
		0x4c, 0xae, 0x51, 0xd8, 0x10, 0x8e, 0x09, 0x6e, 0xf9, 0x5d, 0x6e, 0x59, 0x62, 0xad, 0x0b, 0xe6,
		0x4f, 0x7a, 0xa1, 0x9e, 0x6d, 0x77, 0xb6, 0xa6, 0xaf, 0xcb, 0x9e, 0x3d, 0x29, 0xe7, 0x74, 0xf6,
		0x8e, 0x1c, 0x3b, 0x50, 0x81, 0xd3, 0x8c, 0x5e, 0x8e, 0xd3, 0x0c, 0xc6, 0x4e, 0xd7, 0xbb, 0x8d,
		0x3f, 0x6a, 0xcd, 0x9e, 0x72, 0x7d, 0xfe, 0x06, 0x9c, 0xf9, 0x27, 0x4e, 0xf2, 0x6f, 0x74, 0xe2,
		0xa7, 0xec, 0x1c, 0xcc, 0x9f, 0xe7, 0x61, 0xf2, 0xdc, 0x9c, 0x87, 0xdf, 0xf2, 0x24, 0xe6, 0x5f,
		0x71, 0x07, 0x11, 0x42, 0xbf, 0x39, 0x21, 0x1f, 0xa1, 0xfe, 0xf9, 0x50, 0xcf, 0x2b, 0x38, 0xf1,
		0x71, 0x71, 0x46, 0xee, 0x5d, 0xba, 0x19, 0xf5, 0xa5, 0xc7, 0xf1, 0x94, 0x7b, 0x72, 0x94, 0x29,
		0x59, 0x01, 0xcf, 0xcb, 0x53, 0x37, 0x71, 0x79, 0x6a, 0x36, 0x86, 0xe3, 0xf2, 0xd4, 0x5c, 0x97,
		0x80, 0xcb, 0x53, 0x89, 0x2c, 0x04, 0x97, 0xa7, 0x82, 0xd5, 0x14, 0xa5, 0x70, 0x61, 0x7b, 0x80,
		0xdb, 0x80, 0x8b, 0x0c, 0x38, 0x5f, 0x5c, 0xb0, 0x7c, 0x51, 0x41, 0xc2, 0x32, 0x51, 0x33, 0x15,
		0xbe, 0x66, 0xe2, 0x79, 0xe7, 0x00, 0xeb, 0x3b, 0x06, 0x98, 0xde, 0x29, 0x80, 0x6a, 0x09, 0xd5,
		0x12, 0xaa, 0x25, 0x54, 0x4b, 0xa8, 0x96, 0x50, 0x2d, 0xd1, 0x87, 0x08, 0x57, 0xcd, 0x7e, 0xbe,
		0x4d, 0xec, 0xa5, 0x94, 0xc5, 0xb4, 0x99, 0xfd, 0x94, 0xa6, 0x31, 0x3d, 0x09, 0xc6, 0x5e, 0x75,
		0xc5, 0x04, 0x95, 0x15, 0x83, 0x54, 0x55, 0x4c, 0x51, 0x51, 0x31, 0x4e, 0x35, 0xc5, 0x38, 0x95,
		0x14, 0xb3, 0x54, 0x51, 0x70, 0xac, 0x3e, 0x4b, 0xe8, 0xb0, 0x57, 0x39, 0x79, 0xa4, 0x6a, 0xf2,
		0x81, 0x73, 0xbe, 0x98, 0xd1, 0x27, 0xce, 0x67, 0xcd, 0xcd, 0x10, 0x2d, 0x31, 0x60, 0x76, 0xce,
		0x24, 0x51, 0x12, 0xd3, 0x44, 0x48, 0x8c, 0x15, 0x04, 0x30, 0x4f, 0x00, 0xc0, 0x04, 0x3d, 0x5b,
		0x93, 0x44, 0x44, 0x92, 0x50, 0x50, 0xdd, 0xde, 0x46, 0x30, 0x40, 0x30, 0x40, 0x61, 0x52, 0x00,
		0xeb, 0x2f, 0x31, 0x46, 0x03, 0x8b, 0xb9, 0xa7, 0x66, 0x8c, 0xd1, 0x18, 0x34, 0x46, 0xc3, 0x50,
		0x76, 0x83, 0xd1, 0x61, 0xb0, 0x5f, 0x10, 0x7e, 0xd2, 0x73, 0xdb, 0x99, 0x6c, 0x06, 0xb3, 0xad,
		0x45, 0x9e, 0x0a, 0x19, 0x7c, 0x15, 0x31, 0x8c, 0x52, 0xc0, 0x60, 0xac, 0x78, 0xc1, 0x58, 0xe1,
		0x82, 0x4b, 0x40, 0x64, 0xca, 0xc3, 0xc0, 0xbf, 0x58, 0x4a, 0x53, 0xe4, 0x2a, 0x45, 0xc1, 0x83,
		0xa1, 0xd2, 0xe7, 0x7b, 0xb4, 0x2d, 0x24, 0x1e, 0x78, 0x4b, 0xf2, 0x2e, 0xf4, 0xdd, 0xf2, 0x24,
		0x82, 0xeb, 0x95, 0xc7, 0x63, 0xaf, 0xb9, 0xe4, 0xcb, 0x81, 0xf4, 0xa5, 0xee, 0xf1, 0xd9, 0xcb,
		0x64, 0x94, 0xc9, 0xe6, 0x1b, 0xf6, 0xed, 0xa3, 0xc3, 0x5a, 0xa5, 0x5a, 0xdb, 0x17, 0xf3, 0x28,
		0x28, 0xac, 0xbb, 0x50, 0xea, 0x40, 0x8d, 0x74, 0x20, 0x06, 0x23, 0x5f, 0x74, 0x26, 0xe3, 0xf1,
		0xc8, 0x0f, 0xc5, 0x68, 0x20, 0x1a, 0x6a, 0x30, 0x08, 0xa4, 0x7f, 0x5b, 0xbe, 0xd0, 0xee, 0x17,
		0xd7, 0x97, 0xe2, 0xf8, 0xb4, 0xd9, 0x11, 0x5d, 0xdf, 0x1d, 0x0c, 0x54, 0x4f, 0x58, 0x7a, 0xa8,
		0xb4, 0x94, 0xbe, 0xd2, 0xc3, 0x75, 0x11, 0x4c, 0xae, 0xca, 0xdd, 0xe6, 0xb9, 0xa8, 0x56, 0xf7,
		0xc5, 0xf4, 0xd7, 0x35, 0x51, 0xdd, 0x5a, 0xbb, 0xd0, 0x95, 0x5a, 0x65, 0x4d, 0x54, 0xab, 0xd5,
		0xb5, 0x6a, 0x75, 0x8b, 0x53, 0x0a, 0x61, 0x7a, 0x8e, 0x6c, 0xf1, 0xdc, 0xd8, 0x83, 0x3f, 0x31,
		0xeb, 0xda, 0x71, 0x3f, 0x2a, 0xf6, 0xe8, 0x68, 0x58, 0xae, 0x0e, 0x87, 0xfe, 0x53, 0xc1, 0xac,
		0xbc, 0xa4, 0xef, 0x29, 0xa5, 0x2f, 0xd7, 0x52, 0x23, 0xc5, 0xaf, 0x2e, 0xc5, 0x27, 0x13, 0xd4,
		0xe1, 0xfd, 0x58, 0x8a, 0xdf, 0xde, 0xcd, 0x0e, 0xa7, 0x96, 0xbd, 0xa0, 0x7f, 0x55, 0x8e, 0x3e,
		0x0b, 0xf6, 0xed, 0x8e, 0xd3, 0xb6, 0xea, 0x87, 0x9f, 0xea, 0x07, 0x76, 0xd3, 0xee, 0xfe, 0xe1,
		0x1c, 0xd4, 0x5b, 0x8d, 0xff, 0xd8, 0x8d, 0xee, 0x27, 0xe7, 0xf0, 0xa4, 0xd5, 0xe9, 0xb6, 0xeb,
		0x76, 0xab, 0xdb, 0x79, 0x87, 0x7c, 0x9d, 0x69, 0xbe, 0x8e, 0xfd, 0x02, 0xa9, 0x3a, 0xbf, 0x54,
		0x9d, 0x9e, 0xe3, 0x40, 0x04, 0x60, 0x05, 0xaf, 0xaa, 0x21, 0x83, 0x9e, 0xaf, 0xc6, 0x2c, 0x77,
		0x73, 0x93, 0xe0, 0x7c, 0xa2, 0xbd, 0x7b, 0xa1, 0x74, 0xcf, 0x9b, 0xf4, 0xa5, 0x08, 0xaf, 0xa5,
		0x48, 0x7a, 0x6d, 0x62, 0xa1, 0x03, 0x17, 0xfd, 0x3e, 0x74, 0x95, 0x96, 0xbe, 0x88, 0xa2, 0xc2,
		0x85, 0x8e, 0xbe, 0x73, 0x4e, 0xf9, 0x54, 0x20, 0x62, 0x80, 0x56, 0xab, 0xeb, 0xdc, 0xc2, 0x05,
		0xe3, 0xe9, 0x9c, 0xc5, 0x48, 0xdd, 0x5f, 0x40, 0x22, 0xc3, 0x51, 0x77, 0x13, 0x46, 0x71, 0x1e,
		0x05, 0xee, 0x94, 0x9d, 0x0a, 0x67, 0x0c, 0x50, 0xe3, 0x51, 0xae, 0xf1, 0xd0, 0x19, 0x7f, 0x4b,
		0xdc, 0xe0, 0xb5, 0x15, 0x59, 0xd0, 0x2d, 0x48, 0xda, 0x31, 0x98, 0x6e, 0x8c, 0x20, 0xec, 0x7d,
		0x25, 0x79, 0x17, 0x4a, 0xdd, 0x97, 0xfd, 0xb2, 0xdb, 0xbf, 0x51, 0xba, 0x3c, 0xf4, 0x47, 0x93,
		0x31, 0x79, 0x1f, 0x4c, 0x88, 0xfb, 0xb3, 0xd6, 0x13, 0x8f, 0x75, 0x3c, 0x24, 0xbc, 0xd8, 0x68,
		0x40, 0x70, 0xd2, 0x7a, 0x60, 0xa8, 0xe9, 0xc0, 0xad, 0x3a, 0x64, 0xab, 0xd1, 0xc0, 0xb6, 0x00,
		0xe4, 0xa9, 0xb9, 0x80, 0x93, 0x2c, 0x6f, 0x79, 0xe5, 0x5c, 0x24, 0xb2, 0x98, 0x69, 0x94, 0xb2,
		0xd4, 0x26, 0x65, 0xa6, 0x49, 0xca, 0x4e, 0xdc, 0x8a, 0xa3, 0x98, 0x15, 0x63, 0xf1, 0x2a, 0x13,
		0x36, 0x2d, 0x59, 0x8a, 0x53, 0x99, 0xb5, 0x6d, 0xc9, 0x4e, 0x7c, 0x0a, 0xc3, 0x66, 0x45, 0x24,
		0x48, 0x89, 0xc1, 0x2c, 0xfb, 0x40, 0x2f, 0xa6, 0x1d, 0x86, 0x7d, 0xa1, 0x97, 0x68, 0x15, 0x2e,
		0xc6, 0x02, 0xcd, 0x32, 0x98, 0x6e, 0x71, 0xa7, 0x5d, 0xc6, 0xd0, 0x2f, 0x63, 0x68, 0x98, 0x19,
		0x74, 0x8c, 0x17, 0x2d, 0x63, 0x46, 0xcf, 0x12, 0x88, 0xf0, 0xbf, 0x18, 0x6b, 0xa2, 0x74, 0xb8,
		0x55, 0x65, 0x7c, 0x2f, 0x16, 0xc7, 0x6b, 0xb1, 0x78, 0x8b, 0x7b, 0x32, 0x56, 0xb8, 0x35, 0x41,
		0xcc, 0xd3, 0x14, 0x11, 0x4f, 0xe3, 0xf4, 0xfa, 0xcc, 0xd1, 0xe9, 0x63, 0x2c, 0xd6, 0x69, 0x84,
		0x48, 0x67, 0xe2, 0xe2, 0xb5, 0xea, 0x5e, 0x6d, 0x6f, 0x67, 0xb7, 0xba, 0xb7, 0x0d, 0x5f, 0x87,
		0xaf, 0xa3, 0x40, 0x60, 0x6c, 0xf5, 0x25, 0x0a, 0xb1, 0x15, 0xba, 0x23, 0x4b, 0x95, 0xb3, 0x45,
		0x5a, 0xca, 0x53, 0xed, 0x6c, 0x31, 0xeb, 0x1a, 0xa3, 0x7a, 0x96, 0x2c, 0x8a, 0xaf, 0xfa, 0xd9,
		0xf2, 0x12, 0xd8, 0xa9, 0xa0, 0x71, 0x8d, 0x44, 0x0c, 0x45, 0x7a, 0x96, 0xd6, 0xc0, 0x4f, 0xb4,
		0xc7, 0xa0, 0x1e, 0xc5, 0x82, 0xa8, 0xcf, 0xee, 0xd6, 0xe6, 0x87, 0xfd, 0xa9, 0xb4, 0x48, 0x5f,
		0xf6, 0x45, 0xbd, 0x7f, 0xa3, 0xb4, 0x0a, 0x42, 0x3f, 0x66, 0x9e, 0xe2, 0xa3, 0x3f, 0x9a, 0x8c,
		0x03, 0xa1, 0x74, 0xac, 0x28, 0x72, 0xa1, 0x9f, 0x91, 0x14, 0x11, 0xbf, 0x46, 0xff, 0xab, 0xdc,
		0xb5, 0xde, 0x3f, 0x88, 0x8b, 0x54, 0x6a, 0xb1, 0xb8, 0xc8, 0x85, 0xae, 0x56, 0xd7, 0xaa, 0x5b,
		0x6b, 0x95, 0x5a, 0x65, 0x6d, 0xa6, 0x2c, 0xb2, 0x8e, 0x3b, 0xe2, 0xf2, 0x5f, 0x87, 0x01, 0x5a,
		0x3f, 0x4b, 0x6b, 0x32, 0xfa, 0x9a, 0xb8, 0x3c, 0xfc, 0x14, 0xd5, 0x26, 0xac, 0x36, 0xa9, 0xda,
		0xc4, 0x29, 0xb7, 0x22, 0x72, 0x66, 0x28, 0x08, 0x53, 0x1d, 0xdf, 0x7d, 0xee, 0xfc, 0x1b, 0xa7,
		0xbb, 0x1a, 0xa0, 0x84, 0x6b, 0x74, 0x00, 0x61, 0xa9, 0x84, 0x0b, 0x85, 0xbc, 0xd5, 0xd6, 0xcb,
		0x4f, 0x84, 0xbe, 0xc4, 0x8f, 0x28, 0x7d, 0x59, 0x9f, 0xbb, 0x56, 0xab, 0x61, 0x35, 0x9c, 0x7a,
		0xe3, 0xd8, 0x6e, 0x39, 0x1f, 0xdb, 0x27, 0x67, 0xa7, 0x50, 0xc8, 0xcb, 0xb6, 0xca, 0x85, 0x42,
		0x5e, 0xce, 0x05, 0x6c, 0x7a, 0x8e, 0x03, 0x85, 0xbc, 0x15, 0xbc, 0x2a, 0x33, 0x15, 0xf2, 0xe6,
		0x0c, 0x53, 0xc4, 0x0c, 0x53, 0xc4, 0x0c, 0x33, 0x56, 0xf0, 0x8a, 0xfe, 0xef, 0x85, 0x9e, 0x37,
		0x41, 0x62, 0x48, 0xaa, 0x40, 0x54, 0x6a, 0x90, 0xc5, 0xcb, 0x27, 0x3c, 0x43, 0x16, 0x8f, 0x56,
		0xb4, 0x4e, 0xc3, 0x93, 0xd0, 0x1c, 0x2a, 0x72, 0x73, 0x08, 0x5a, 0x78, 0x46, 0xd7, 0xc6, 0xd0,
		0xc2, 0x63, 0xd0, 0x4c, 0xe3, 0xa0, 0xdc, 0x94, 0xd9, 0x85, 0x5b, 0xf3, 0x8d, 0xb3, 0x78, 0xdf,
		0x2c, 0xde, 0x2d, 0x83, 0x52, 0xa0, 0x71, 0xb1, 0xa9, 0xa4, 0xc6, 0xb7, 0xb5, 0xb2, 0xd2, 0xa1,
		0xf4, 0x07, 0x6e, 0x4f, 0x96, 0xdd, 0x7e, 0xdf, 0x97, 0x41, 0xc0, 0x47, 0x2b, 0xf0, 0x05, 0xfb,
		0xa1, 0x16, 0x98, 0x86, 0x99, 0x50, 0x0b, 0x5c, 0x21, 0x72, 0xa1, 0x16, 0x98, 0x45, 0xa1, 0x0c,
		0xb5, 0xc0, 0xcc, 0x6b, 0x61, 0xa8, 0x05, 0x16, 0xa2, 0xa2, 0x81, 0x5a, 0xe0, 0x6a, 0xf3, 0x03,
		0xd4, 0x02, 0x41, 0x6c, 0x38, 0x12, 0x1c, 0xc6, 0x44, 0x87, 0x2b, 0xe1, 0x61, 0x4f, 0x7c, 0xd8,
		0x13, 0x20, 0xde, 0x44, 0x88, 0x07, 0x21, 0x62, 0x42, 0x8c, 0xd8, 0x11, 0xa4, 0xc4, 0x60, 0x2e,
		0xcd, 0x9f, 0x17, 0x33, 0x0d, 0x8f, 0xee, 0xcf, 0x4b, 0xe4, 0x09, 0x9a, 0x80, 0x20, 0x53, 0x06,
		0x93, 0x2a, 0xee, 0xe4, 0xca, 0x18, 0x92, 0x65, 0x0c, 0xd9, 0x32, 0x83, 0x74, 0xf1, 0x22, 0x5f,
		0xcc, 0x48, 0x58, 0x02, 0x11, 0xfe, 0x9a, 0x80, 0xf1, 0x4e, 0x17, 0x4f, 0x86, 0xb3, 0xc8, 0x72,
		0x2a, 0x1f, 0x18, 0xda, 0x7e, 0xea, 0x86, 0xa1, 0xf4, 0x35, 0xdb, 0xc1, 0xfb, 0xd2, 0xaf, 0x7f,
		0x6e, 0x96, 0xf7, 0x2e, 0xff, 0xf9, 0xb3, 0x52, 0xde, 0xbb, 0x9c, 0xfe, 0xb6, 0x12, 0xff, 0xf2,
		0x77, 0xf5, 0xeb, 0x3f, 0xd5, 0x3f, 0x37, 0xcb, 0xb5, 0xd9, 0xa7, 0xd5, 0xed, 0x3f, 0x37, 0xcb,
		0xdb, 0x97, 0xef, 0x7f, 0xbd, 0xb8, 0x58, 0xff, 0xd9, 0xbf, 0xf3, 0xfe, 0xef, 0xad, 0xaf, 0xfc,
		0xc2, 0xee, 0x25, 0x47, 0x38, 0x9e, 0x74, 0xec, 0xcf, 0xec, 0x31, 0xf9, 0xbf, 0x5f, 0xb3, 0x42,
		0xe5, 0xfb, 0x7f, 0x95, 0x30, 0x2b, 0x0c, 0x3a, 0xb0, 0x80, 0x3d, 0x28, 0x53, 0xe5, 0xbc, 0x02,
		0x28, 0x53, 0xd1, 0x5e, 0x02, 0x94, 0xa9, 0x32, 0x7a, 0xe2, 0x50, 0xa6, 0xa2, 0xf0, 0x65, 0x86,
		0x32, 0xd5, 0xf6, 0xd6, 0xe6, 0xf6, 0xbe, 0xb0, 0x3b, 0x65, 0xbb, 0x33, 0xd5, 0xbd, 0x09, 0xd4,
		0x48, 0x07, 0x62, 0x30, 0xf2, 0xc5, 0x33, 0xf2, 0x36, 0xeb, 0x0f, 0x63, 0x28, 0x3b, 0xb1, 0xa8,
		0x8d, 0x98, 0x6a, 0xda, 0x40, 0x7a, 0x8a, 0x56, 0xdd, 0x0c, 0xe9, 0x29, 0xfa, 0x0b, 0x7a, 0x22,
		0x3d, 0x95, 0xbe, 0x23, 0x42, 0x5b, 0x0a, 0x56, 0x9b, 0x54, 0x2f, 0xe2, 0x4c, 0x44, 0x11, 0x59,
		0x2f, 0xb4, 0xa5, 0xa8, 0x8e, 0xc3, 0x3d, 0x3f, 0x47, 0x03, 0x75, 0xa9, 0xe2, 0x58, 0x08, 0x75,
		0xa9, 0xf4, 0x6d, 0x86, 0xba, 0xd4, 0x6a, 0x6b, 0xde, 0xd7, 0x88, 0xe4, 0xd8, 0xa7, 0xe7, 0x35,
		0xc7, 0x6e, 0x75, 0xad, 0xf6, 0x51, 0xfd, 0xd0, 0x72, 0xea, 0x8d, 0x46, 0xdb, 0xea, 0x74, 0xa0,
		0x2f, 0x95, 0x6d, 0x29, 0x0b, 0x7d, 0xa9, 0x9c, 0xab, 0xd4, 0x34, 0x5d, 0x07, 0x0a, 0x53, 0x2b,
		0x78, 0x59, 0x66, 0x2a, 0x4c, 0xd9, 0xa7, 0xb7, 0x35, 0x91, 0xf0, 0x4c, 0x31, 0xe3, 0x99, 0x33,
		0x7d, 0x9c, 0xde, 0x48, 0x87, 0xae, 0xd2, 0xd2, 0xbf, 0xd0, 0x73, 0xa9, 0x9c, 0x44, 0x78, 0x5b,
		0x05, 0x53, 0xb1, 0x9c, 0x1d, 0x28, 0x4e, 0xe5, 0x12, 0xb0, 0xa1, 0x38, 0x45, 0x2b, 0x7e, 0xaf,
		0xc2, 0xb3, 0xd0, 0x42, 0x2a, 0x72, 0x0b, 0x09, 0x0a, 0x54, 0x46, 0xd7, 0xcf, 0x50, 0xa0, 0x62,
		0xd1, 0x72, 0x83, 0x06, 0xd5, 0x82, 0x06, 0x95, 0x3d, 0xbe, 0xad, 0xd9, 0xf3, 0x27, 0x54, 0x9f,
		0x3d, 0x20, 0xa8, 0x50, 0x99, 0x16, 0x9f, 0xa6, 0x67, 0xdb, 0x1f, 0xfc, 0x8a, 0xa5, 0x08, 0xd5,
		0x92, 0xf9, 0xd0, 0xa0, 0x4a, 0xc3, 0x4c, 0x68, 0x50, 0xad, 0x10, 0xb8, 0xd0, 0xa0, 0xca, 0xa2,
		0x74, 0x86, 0x06, 0x55, 0xe6, 0xd5, 0x31, 0x34, 0xa8, 0x0a, 0x51, 0xd3, 0x40, 0x83, 0x6a, 0xb5,
		0xf9, 0x01, 0x1a, 0x54, 0x20, 0x36, 0x1c, 0x09, 0x0e, 0x63, 0xa2, 0xc3, 0x95, 0xf0, 0xb0, 0x27,
		0x3e, 0xec, 0x09, 0x10, 0x6f, 0x22, 0xc4, 0x83, 0x10, 0x31, 0x21, 0x46, 0xec, 0x08, 0x52, 0x62,
		0x30, 0x34, 0xa8, 0x72, 0x25, 0x4f, 0xd0, 0xa0, 0x02, 0x99, 0x32, 0x98, 0x54, 0x71, 0x27, 0x57,
		0xc6, 0x90, 0x2c, 0x63, 0xc8, 0x96, 0x19, 0xa4, 0x8b, 0x17, 0xf9, 0x62, 0x46, 0xc2, 0x12, 0x88,
		0x40, 0x83, 0x8a, 0x08, 0xcb, 0x81, 0x06, 0x55, 0x1e, 0x0b, 0x80, 0x06, 0xd5, 0x4b, 0x5f, 0xd0,
		0xa0, 0xca, 0x6b, 0x15, 0xd0, 0xa0, 0xfa, 0x26, 0x2e, 0x41, 0x07, 0x56, 0x88, 0x3d, 0x68, 0x50,
		0xe5, 0xbc, 0x02, 0x68, 0x50, 0xd1, 0x5e, 0x02, 0x34, 0xa8, 0x32, 0x7a, 0xe2, 0xd0, 0xa0, 0xa2,
		0xf0, 0x55, 0x70, 0x0d, 0xaa, 0x0f, 0x8b, 0xd2, 0x37, 0xa2, 0x02, 0x15, 0x2a, 0x5a, 0x95, 0x33,
		0x54, 0xa8, 0xe8, 0x2f, 0x28, 0x2d, 0x15, 0xaa, 0x6f, 0xb8, 0x22, 0x74, 0xa8, 0x60, 0xb5, 0x49,
		0x35, 0x23, 0xce, 0x45, 0x14, 0x91, 0xf9, 0x42, 0x87, 0x8a, 0xf4, 0x50, 0xdc, 0xd3, 0x51, 0x1a,
		0xc8, 0x50, 0x15, 0xc7, 0x42, 0xc8, 0x50, 0xa5, 0x6f, 0x33, 0x64, 0xa8, 0x56, 0x5b, 0xf6, 0xbe,
		0x5a, 0x4b, 0xa7, 0x65, 0xd9, 0x1f, 0x3f, 0x1d, 0x9c, 0xb4, 0xa1, 0x42, 0x95, 0x4f, 0x29, 0x0b,
		0x15, 0xaa, 0x9c, 0xab, 0xd4, 0x14, 0x3d, 0x07, 0x22, 0x54, 0x2b, 0x78, 0x57, 0x06, 0x8b, 0x50,
		0xcd, 0x49, 0x66, 0xa2, 0x94, 0x93, 0x68, 0xe4, 0x88, 0x28, 0x2c, 0x5c, 0xe8, 0xe7, 0x34, 0x72,
		0x3e, 0xac, 0x43, 0x7e, 0x2a, 0x97, 0x48, 0x0d, 0xf9, 0x29, 0x5a, 0x81, 0x3b, 0x5d, 0x9f, 0x42,
		0xcf, 0xa8, 0xc8, 0x3d, 0x23, 0x08, 0x4f, 0x19, 0x5d, 0x31, 0x43, 0x78, 0x8a, 0x43, 0x8f, 0x0d,
		0xba, 0x53, 0x4f, 0x74, 0xa7, 0x92, 0x6f, 0x87, 0xec, 0x94, 0xa1, 0xd1, 0xa9, 0xa4, 0xc6, 0xb7,
		0x3b, 0xcf, 0x28, 0xb0, 0x71, 0xd2, 0x9d, 0xda, 0x61, 0xa7, 0x20, 0x07, 0xe1, 0xa9, 0x94, 0x0d,
		0x85, 0xf0, 0x14, 0x0a, 0xe8, 0xe7, 0x8b, 0x66, 0x08, 0x4f, 0x65, 0x5e, 0x17, 0x43, 0x78, 0xaa,
		0x10, 0x35, 0x0d, 0x84, 0xa7, 0x56, 0x9b, 0x1f, 0x20, 0x3c, 0x05, 0x62, 0xc3, 0x91, 0xe0, 0x30,
		0x26, 0x3a, 0x5c, 0x09, 0x0f, 0x7b, 0xe2, 0xc3, 0x9e, 0x00, 0xf1, 0x26, 0x42, 0x3c, 0x08, 0x11,
		0x13, 0x62, 0xc4, 0x8e, 0x20, 0x25, 0x06, 0x43, 0x78, 0x2a, 0x57, 0xf2, 0x04, 0xe1, 0x29, 0x90,
		0x29, 0x83, 0x49, 0x15, 0x77, 0x72, 0x65, 0x0c, 0xc9, 0x32, 0x86, 0x6c, 0x99, 0x41, 0xba, 0x78,
		0x91, 0x2f, 0x66, 0x24, 0x2c, 0x81, 0x88, 0x11, 0xc2, 0x53, 0x3b, 0x10, 0x9e, 0xca, 0x89, 0x31,
		0xb0, 0x17, 0x9e, 0x8a, 0xf5, 0x7a, 0xdc, 0xf2, 0xa0, 0x5e, 0x3e, 0xba, 0xfc, 0xbb, 0xb2, 0x56,
		0xfb, 0xba, 0xff, 0xfe, 0xef, 0xdd, 0xaf, 0x4f, 0x3f, 0xfc, 0xe7, 0xb9, 0x6f, 0xab, 0xac, 0xed,
		0x7e, 0xdd, 0x7f, 0xe1, 0xff, 0xec, 0x7c, 0xdd, 0xff, 0xc1, 0x7f, 0x63, 0xfb, 0xeb, 0xaf, 0x4b,
		0xdf, 0x1a, 0x7d, 0x5e, 0x7d, 0xe9, 0x2f, 0xd4, 0x5e, 0xf8, 0x0b, 0x5b, 0x2f, 0xfd, 0x85, 0xad,
		0x17, 0xfe, 0xc2, 0x8b, 0x26, 0x55, 0x5f, 0xf8, 0x0b, 0xdb, 0x5f, 0xff, 0x59, 0xfa, 0xfe, 0x5f,
		0x9f, 0xff, 0xd6, 0x9d, 0xaf, 0xef, 0xff, 0x79, 0xe9, 0xff, 0xed, 0x7e, 0xfd, 0x67, 0xff, 0xfd,
		0x7b, 0x48, 0x71, 0x65, 0xe2, 0xa0, 0x26, 0x49, 0x71, 0xc1, 0x4d, 0xb3, 0x77, 0x53, 0x48, 0x93,
		0x81, 0x30, 0x3e, 0xf2, 0x45, 0x48, 0x93, 0xe5, 0xbc, 0x02, 0x48, 0x93, 0xd1, 0x5e, 0x02, 0xa4,
		0xc9, 0x32, 0x7a, 0xe2, 0x90, 0x26, 0xa3, 0xf0, 0x65, 0x86, 0x34, 0xd9, 0x4e, 0xa5, 0xb2, 0xb7,
		0x2f, 0xec, 0xd3, 0xdb, 0x9d, 0xe7, 0xf4, 0x8f, 0x84, 0xd2, 0x53, 0xad, 0xa4, 0xf5, 0xf9, 0x84,
		0xd2, 0x85, 0xae, 0x54, 0x17, 0x95, 0x90, 0xa0, 0x49, 0x46, 0xac, 0xa9, 0x02, 0x4d, 0x32, 0xfa,
		0x0b, 0x7a, 0xa2, 0x49, 0x96, 0xaa, 0x0f, 0x42, 0x8c, 0x0c, 0x56, 0x9b, 0x54, 0x25, 0xe2, 0xac,
		0x4c, 0x11, 0xb9, 0x2e, 0xc4, 0xc8, 0x08, 0x0f, 0x4a, 0x3e, 0x33, 0x5f, 0x05, 0x35, 0xb2, 0xe2,
		0x58, 0x08, 0x35, 0xb2, 0xf4, 0x6d, 0x86, 0x1a, 0xd9, 0x6a, 0x2b, 0xdd, 0x57, 0x6a, 0x2a, 0xed,
		0x38, 0x76, 0xab, 0x6b, 0xb5, 0x8f, 0xea, 0x87, 0x16, 0xe4, 0xc8, 0xf2, 0xa9, 0x62, 0x21, 0x47,
		0x96, 0x73, 0x81, 0x9a, 0xa6, 0xeb, 0x40, 0x8f, 0x6c, 0x05, 0x2f, 0xcb, 0x58, 0x3d, 0xb2, 0x1d,
		0x91, 0xf0, 0xcc, 0x44, 0x3c, 0x29, 0x0a, 0x07, 0xd1, 0xff, 0x7f, 0x10, 0x66, 0x8f, 0x61, 0xa9,
		0x02, 0x51, 0xa9, 0x42, 0x87, 0x2c, 0x9f, 0x10, 0x0d, 0x1d, 0x32, 0x5a, 0x11, 0x3b, 0x1d, 0x5f,
		0x42, 0x9b, 0xa8, 0xc8, 0x6d, 0x22, 0xe8, 0x8f, 0x19, 0x5d, 0x23, 0x43, 0x7f, 0x8c, 0x45, 0x5b,
		0x0d, 0x02, 0x64, 0x8f, 0x05, 0xc8, 0x76, 0xec, 0xf9, 0x13, 0x82, 0x02, 0x99, 0xa9, 0xf1, 0x69,
		0x3a, 0xd7, 0xb0, 0x24, 0xc5, 0xc7, 0x4b, 0x80, 0x8c, 0x99, 0x92, 0x20, 0xf4, 0xc7, 0x52, 0x36,
		0x14, 0xfa, 0x63, 0x28, 0x9c, 0x9f, 0x2f, 0x96, 0xa1, 0x3f, 0x96, 0x79, 0x3d, 0x0c, 0xfd, 0xb1,
		0x42, 0xd4, 0x34, 0xd0, 0x1f, 0x5b, 0x6d, 0x7e, 0x80, 0xfe, 0x18, 0x88, 0x0d, 0x47, 0x82, 0xc3,
		0x98, 0xe8, 0x70, 0x25, 0x3c, 0xec, 0x89, 0x0f, 0x7b, 0x02, 0xc4, 0x9b, 0x08, 0xf1, 0x20, 0x44,
		0x4c, 0x88, 0x11, 0x3b, 0x82, 0x94, 0x18, 0x0c, 0xfd, 0xb1, 0x5c, 0xc9, 0x13, 0xf4, 0xc7, 0x40,
		0xa6, 0x0c, 0x26, 0x55, 0xdc, 0xc9, 0x95, 0x31, 0x24, 0xcb, 0x18, 0xb2, 0x65, 0x06, 0xe9, 0xe2,
		0x45, 0xbe, 0x98, 0x91, 0xb0, 0x04, 0x22, 0xd0, 0x1f, 0x23, 0xc2, 0x72, 0xa0, 0x3f, 0x96, 0xc7,
		0x02, 0x20, 0x6c, 0x04, 0xfd, 0xb1, 0x1f, 0xfd, 0x82, 0xfe, 0x58, 0x5e, 0xab, 0x80, 0xfe, 0x18,
		0xf4, 0xc7, 0x7e, 0xc2, 0x4f, 0x41, 0x18, 0x57, 0xe8, 0x8b, 0xd0, 0x1f, 0xcb, 0x79, 0x05, 0xd0,
		0x1f, 0xa3, 0xbd, 0x04, 0xe8, 0x8f, 0x65, 0xf4, 0xc4, 0xa1, 0x3f, 0x46, 0xe1, 0xab, 0xb0, 0xfa,
		0x63, 0x5b, 0xfb, 0xc2, 0xee, 0xd8, 0x1d, 0x88, 0x90, 0xd1, 0xed, 0xac, 0x40, 0x84, 0x8c, 0xfe,
		0x82, 0xde, 0x2e, 0x42, 0xf6, 0x1d, 0x47, 0x84, 0x12, 0x19, 0xac, 0x36, 0xa9, 0x5e, 0xc4, 0xa9,
		0x99, 0x22, 0xb2, 0x5e, 0x28, 0x91, 0x91, 0x1e, 0x99, 0x7c, 0x3a, 0x68, 0x05, 0x21, 0xb2, 0xe2,
		0x58, 0x08, 0x21, 0xb2, 0xf4, 0x6d, 0x86, 0x10, 0xd9, 0x6a, 0x4b, 0xde, 0x57, 0xab, 0x29, 0xb5,
		0x2c, 0xfb, 0xe3, 0xa7, 0x83, 0x93, 0x36, 0x74, 0xc8, 0xf2, 0x29, 0x64, 0xa1, 0x43, 0x96, 0x73,
		0x8d, 0x9a, 0xa2, 0xe7, 0x40, 0x86, 0x6c, 0x05, 0xef, 0xca, 0x60, 0x19, 0xb2, 0x39, 0xc9, 0xfc,
		0x11, 0xe5, 0xa4, 0x2d, 0xa8, 0x90, 0xe5, 0x13, 0xa0, 0xa1, 0x42, 0x46, 0x2b, 0x5e, 0xa7, 0xe2,
		0x4a, 0xe8, 0x10, 0x15, 0xb9, 0x43, 0x04, 0x11, 0x32, 0xa3, 0xeb, 0x63, 0x88, 0x90, 0x71, 0xe8,
		0xa8, 0x41, 0x83, 0xec, 0x89, 0x06, 0x59, 0xf2, 0xed, 0x90, 0x20, 0x33, 0x34, 0x3a, 0x95, 0x3c,
		0x57, 0x97, 0xdd, 0xfe, 0xff, 0x73, 0x7b, 0x52, 0xf7, 0xee, 0xcb, 0x81, 0xea, 0x33, 0xd2, 0x1f,
		0x7b, 0xc6, 0x76, 0x88, 0x8f, 0xa5, 0x61, 0x26, 0xc4, 0xc7, 0x56, 0x88, 0x5a, 0x88, 0x8f, 0x65,
		0x51, 0x23, 0x43, 0x7c, 0x2c, 0xf3, 0x32, 0x18, 0xe2, 0x63, 0x85, 0xa8, 0x65, 0xd8, 0x88, 0x8f,
		0x2d, 0xd1, 0x03, 0x7e, 0x42, 0x64, 0xcb, 0x4b, 0x80, 0x28, 0x59, 0x91, 0x09, 0x0f, 0x47, 0xe2,
		0xc3, 0x98, 0x00, 0x71, 0x25, 0x42, 0xec, 0x09, 0x11, 0x7b, 0x62, 0xc4, 0x9b, 0x20, 0xf1, 0x20,
		0x4a, 0x4c, 0x08, 0x13, 0x3b, 0xe2, 0x94, 0x18, 0xcc, 0x4b, 0xbd, 0x75, 0x29, 0xcf, 0x70, 0x52,
		0x71, 0x65, 0x4a, 0x9c, 0xd8, 0x12, 0x28, 0xce, 0x44, 0xca, 0x00, 0x42, 0xc5, 0x9d, 0x58, 0x19,
		0x43, 0xb0, 0x8c, 0x21, 0x5a, 0x66, 0x10, 0x2e, 0x5e, 0xc4, 0x8b, 0x19, 0x01, 0x63, 0x4b, 0xc4,
		0x12, 0xc3, 0x07, 0x9e, 0x3b, 0x0c, 0xf8, 0x06, 0xcb, 0x79, 0xbe, 0x9a, 0x2e, 0x83, 0x69, 0x7c,
		0xe1, 0xa9, 0x18, 0xcb, 0x9e, 0xa8, 0x99, 0x40, 0xd8, 0x0c, 0x22, 0x6e, 0xa6, 0x10, 0x38, 0xe3,
		0x88, 0x9c, 0x71, 0x84, 0xce, 0x2c, 0x62, 0xc7, 0x93, 0xe0, 0x31, 0x25, 0x7a, 0x09, 0x74, 0xd8,
		0x2a, 0xd0, 0x2e, 0x65, 0x0c, 0xa9, 0x27, 0x37, 0xd2, 0x77, 0x99, 0x1e, 0xfd, 0x7f, 0x4a, 0xa2,
		0x2a, 0x35, 0xc6, 0x6b, 0xb0, 0xf4, 0xe4, 0x86, 0x7f, 0xde, 0xeb, 0x8e, 0x3a, 0xa1, 0xaf, 0xf4,
		0x90, 0xfd, 0x4a, 0xe2, 0xd5, 0x6c, 0x46, 0x3e, 0x32, 0x1b, 0x7e, 0x73, 0x8e, 0xea, 0xc7, 0x76,
		0xf3, 0x0f, 0xe6, 0x79, 0x3c, 0x5e, 0x56, 0x25, 0x5a, 0xd6, 0x41, 0xfd, 0xf0, 0xf7, 0xb3, 0x53,
		0x13, 0x96, 0x53, 0x8d, 0x96, 0x73, 0x5e, 0x6f, 0x9e, 0x59, 0x26, 0xac, 0x66, 0x2b, 0x5a, 0x4d,
		0xf3, 0xe4, 0xb0, 0xde, 0x34, 0x61, 0x35, 0xb5, 0x68, 0x35, 0x1d, 0xab, 0x5b, 0x62, 0xbd, 0x94,
		0xaf, 0x6b, 0xdc, 0xa3, 0xb2, 0x1d, 0x13, 0x5d, 0x03, 0x42, 0xf2, 0x93, 0x68, 0xcc, 0xb6, 0xf1,
		0xf0, 0x68, 0x51, 0xb3, 0x58, 0xcc, 0x6e, 0x9f, 0xee, 0xd9, 0xc5, 0x4c, 0x63, 0xd7, 0xbe, 0xd8,
		0x32, 0x60, 0x2d, 0x51, 0xe4, 0xda, 0x17, 0x35, 0x03, 0x56, 0x32, 0xcd, 0x8f, 0xfb, 0xa2, 0xca,
		0x3b, 0x10, 0xa3, 0x42, 0x47, 0xe2, 0xfb, 0x91, 0x18, 0xc4, 0x59, 0xf2, 0x3b, 0x59, 0x05, 0x7b,
		0xe9, 0xef, 0x87, 0x95, 0x18, 0x28, 0x01, 0x9e, 0x2c, 0x8e, 0xbf, 0x14, 0xf8, 0xf2, 0x52, 0xd8,
		0x4a, 0x82, 0xf3, 0x8d, 0xb7, 0x0c, 0x63, 0x6d, 0x29, 0x19, 0x79, 0x66, 0x34, 0x0d, 0xb1, 0xb4,
		0x88, 0x79, 0x33, 0x74, 0x71, 0x31, 0xd8, 0x4d, 0xce, 0xc3, 0x7c, 0xec, 0x26, 0x13, 0x72, 0x07,
		0xec, 0x26, 0xd3, 0x71, 0x6b, 0xec, 0x26, 0x13, 0x5f, 0x10, 0x76, 0x93, 0xc1, 0x9f, 0x5e, 0x09,
		0x1d, 0x73, 0x76, 0x93, 0x83, 0xfb, 0x20, 0x94, 0x37, 0x7c, 0xe9, 0x93, 0x60, 0x7e, 0xb9, 0xe9,
		0x03, 0x0d, 0x61, 0x7e, 0x7d, 0x62, 0xb2, 0x90, 0x3f, 0x37, 0xcb, 0x7b, 0xf5, 0xf2, 0x91, 0x5b,
		0x1e, 0x5c, 0xfe, 0x5d, 0xfb, 0x7a, 0x71, 0xb1, 0xfe, 0x9d, 0x0f, 0xf8, 0xc6, 0xdc, 0x4b, 0xce,
		0x70, 0x33, 0xe1, 0xca, 0xce, 0x64, 0x35, 0xff, 0xfb, 0x59, 0xd0, 0xfd, 0x8b, 0x31, 0xea, 0xd0,
		0xdb, 0x01, 0x37, 0x79, 0xc1, 0x0f, 0x6e, 0x5d, 0x6f, 0x22, 0xf9, 0x77, 0x75, 0xa6, 0xcb, 0x40,
		0x3f, 0x27, 0x0f, 0xf3, 0xd1, 0xcf, 0x21, 0xe4, 0x08, 0xe8, 0xe7, 0xd0, 0x71, 0x6b, 0xf4, 0x73,
		0x88, 0x2f, 0x08, 0xfd, 0x1c, 0x70, 0xa6, 0x57, 0x42, 0xc7, 0x9c, 0x7e, 0xce, 0x44, 0xe9, 0x70,
		0xab, 0x6a, 0x40, 0x33, 0x67, 0x97, 0xf1, 0x12, 0xda, 0xae, 0x1e, 0x4a, 0xf6, 0x55, 0xb5, 0x01,
		0x27, 0x4f, 0x8f, 0x95, 0x36, 0xe2, 0x08, 0x6d, 0xbc, 0x98, 0xf3, 0x59, 0x71, 0x67, 0xc0, 0xe9,
		0xd9, 0x78, 0x3d, 0x47, 0xbe, 0xdb, 0x0b, 0xd5, 0x48, 0x37, 0xd4, 0x50, 0x71, 0x3f, 0x2d, 0xf5,
		0x38, 0x16, 0xcb, 0xa1, 0x1b, 0xaa, 0x5b, 0xc9, 0xfa, 0x30, 0x8e, 0x01, 0x69, 0xfd, 0x71, 0x28,
		0x70, 0xef, 0xcc, 0x0b, 0x05, 0xb5, 0xea, 0x5e, 0x6d, 0x6f, 0x67, 0xb7, 0xba, 0xb7, 0x8d, 0x98,
		0x80, 0x98, 0x80, 0x02, 0xa5, 0x00, 0xd6, 0xa3, 0xfd, 0x8f, 0x9c, 0xf7, 0x52, 0x90, 0xf9, 0x22,
		0xd5, 0xf0, 0x3a, 0xe4, 0xdf, 0xff, 0x9f, 0xad, 0x03, 0x1b, 0x00, 0x79, 0x98, 0x8f, 0x0d, 0x00,
		0x42, 0x9e, 0x80, 0x0d, 0x00, 0x3a, 0x6e, 0x8d, 0x0d, 0x00, 0xe2, 0x0b, 0xc2, 0x06, 0x00, 0x58,
		0xd3, 0x2b, 0xa1, 0x63, 0xd6, 0x06, 0xc0, 0x07, 0x03, 0xfa, 0xff, 0xdb, 0xe8, 0xff, 0xe7, 0xfc,
		0x85, 0xfe, 0x3f, 0xad, 0xc5, 0xa0, 0xff, 0xcf, 0x25, 0x14, 0xa3, 0xff, 0x4f, 0x30, 0x14, 0x98,
		0xd8, 0xff, 0xaf, 0x6e, 0xa3, 0xf1, 0x8f, 0x60, 0x80, 0xc2, 0xa4, 0x08, 0xd6, 0xa3, 0xf1, 0x0f,
		0x8b, 0xd9, 0xa7, 0xe6, 0x52, 0x5d, 0xeb, 0x51, 0x38, 0x15, 0xaf, 0x65, 0x79, 0xff, 0x42, 0xd0,
		0xbb, 0x96, 0x37, 0xee, 0xd8, 0x0d, 0xaf, 0xa3, 0x62, 0x7b, 0x63, 0x34, 0x96, 0xba, 0x17, 0x37,
		0xcc, 0xcb, 0x7a, 0x7a, 0x11, 0x7f, 0x59, 0xcd, 0x6e, 0xd1, 0xdf, 0x78, 0xfa, 0x41, 0xb0, 0xf4,
		0xc9, 0xc6, 0x78, 0x76, 0x59, 0x7f, 0x90, 0xfc, 0x6e, 0x43, 0x05, 0x2a, 0xd8, 0xf0, 0xe4, 0xad,
		0xf4, 0x66, 0xbf, 0x6c, 0x78, 0x4a, 0xff, 0x55, 0x8e, 0x6f, 0xb2, 0x2a, 0xf7, 0xdd, 0xd0, 0xbd,
		0x72, 0x03, 0xb9, 0xe1, 0x05, 0xe3, 0x8d, 0xd0, 0xbb, 0x0d, 0xa2, 0xff, 0xc4, 0x7f, 0xa5, 0x9c,
		0x28, 0x61, 0xb8, 0xf3, 0x8b, 0xfd, 0x37, 0xe6, 0x1f, 0x05, 0xc9, 0xef, 0x36, 0x1e, 0x6c, 0x49,
		0x6c, 0x08, 0xe2, 0xcb, 0xfe, 0x83, 0xd9, 0xaf, 0x1b, 0xcb, 0x37, 0xaa, 0x2f, 0x7f, 0xb4, 0x31,
		0xbd, 0x57, 0xeb, 0x17, 0xb8, 0x75, 0xc1, 0x5d, 0x9a, 0xe9, 0xc0, 0x11, 0xeb, 0x41, 0x23, 0xa6,
		0xfb, 0x8b, 0xb8, 0x1f, 0x2e, 0x4f, 0xa0, 0xe3, 0x7e, 0xb8, 0xfc, 0xdc, 0x15, 0xf7, 0xc3, 0x51,
		0xe3, 0xa0, 0xb8, 0x1f, 0x0e, 0x9c, 0xe6, 0xdb, 0x10, 0x61, 0xbb, 0x1f, 0x98, 0x44, 0x7c, 0x4f,
		0xba, 0x03, 0x5f, 0x0e, 0x38, 0x46, 0xfc, 0xb9, 0x9c, 0x0b, 0xc3, 0x11, 0xa0, 0xd2, 0xe9, 0xac,
		0x32, 0x5c, 0x5f, 0x9f, 0x16, 0x49, 0x1b, 0x53, 0x8a, 0x89, 0x52, 0xa9, 0xc0, 0x96, 0x72, 0xb9,
		0x9d, 0xfc, 0x77, 0x79, 0xcf, 0xad, 0x28, 0xe2, 0xa9, 0x1a, 0xcd, 0x57, 0x25, 0xda, 0x28, 0x55,
		0x68, 0xc6, 0x2a, 0xd0, 0x8c, 0x55, 0x9f, 0xb9, 0x44, 0x43, 0xa6, 0x9d, 0x6a, 0x74, 0xa8, 0xa3,
		0x8f, 0x18, 0xd1, 0xde, 0x52, 0x10, 0xfa, 0x93, 0x5e, 0xa8, 0x67, 0xbc, 0xbd, 0x35, 0x7d, 0x03,
		0xf6, 0x6c, 0xf1, 0xce, 0xe9, 0xec, 0xb1, 0x3b, 0x76, 0xa0, 0x02, 0xa7, 0x19, 0x3d, 0x6f, 0xa7,
		0x19, 0x8c, 0x9d, 0xae, 0x77, 0x1b, 0x7f, 0xd4, 0x9a, 0x3d, 0xb8, 0xfa, 0xfc, 0xa1, 0x3a, 0xf3,
		0x4f, 0x9c, 0xe4, 0xdf, 0xe8, 0xc4, 0x0f, 0xce, 0x69, 0xba, 0xba, 0x3e, 0x7f, 0x48, 0x1d, 0xd5,
		0xe7, 0x41, 0x4a, 0xe9, 0x53, 0x3c, 0xda, 0x16, 0x12, 0x0f, 0xb7, 0x25, 0x79, 0x17, 0xfa, 0x6e,
		0x79, 0x12, 0x41, 0xf5, 0xca, 0xe3, 0x51, 0x73, 0x97, 0x7c, 0x39, 0x90, 0xbe, 0xd4, 0x3d, 0x3e,
		0x67, 0x3c, 0x19, 0xe5, 0xaf, 0x79, 0x03, 0xa3, 0xef, 0xbb, 0x83, 0xb0, 0xac, 0x64, 0x38, 0x88,
		0x3b, 0x74, 0xe5, 0x40, 0x0e, 0x23, 0xda, 0x59, 0xf6, 0x47, 0x93, 0x50, 0xe9, 0x61, 0x59, 0xde,
		0x85, 0x52, 0x07, 0x6a, 0xa4, 0x83, 0x75, 0x11, 0x4c, 0xae, 0xca, 0xdd, 0xe6, 0xb9, 0xd8, 0xaa,
		0xee, 0x5f, 0xe8, 0xe8, 0x37, 0xd5, 0xea, 0x9a, 0xa8, 0x4e, 0xff, 0xb3, 0xb5, 0x26, 0x2a, 0xb5,
		0xca, 0x3a, 0xa7, 0x8c, 0xc0, 0xb4, 0xe5, 0xbd, 0xd8, 0xea, 0x7e, 0x70, 0x11, 0x66, 0x9d, 0x3f,
		0xee, 0x5d, 0xee, 0x47, 0xdd, 0xed, 0xb4, 0x7d, 0x08, 0x8d, 0xa1, 0x82, 0x59, 0xc9, 0x40, 0xe2,
		0xb8, 0xf4, 0xe5, 0x5a, 0x6a, 0x24, 0xe2, 0xd5, 0x25, 0xe2, 0xa4, 0x95, 0x1d, 0xde, 0x8f, 0xa5,
		0xf8, 0x4d, 0xbc, 0x9b, 0xed, 0x99, 0x95, 0xbd, 0xa0, 0x7f, 0x55, 0x8e, 0x3e, 0x0c, 0xf6, 0xed,
		0x8e, 0xd3, 0xb6, 0xea, 0x87, 0x9f, 0xea, 0x07, 0x76, 0xd3, 0xee, 0xfe, 0xe1, 0xd4, 0x1b, 0xff,
		0x76, 0x9a, 0xf5, 0x96, 0xd3, 0xb1, 0x1b, 0xef, 0x90, 0x79, 0x33, 0xcd, 0xbc, 0xb1, 0x3b, 0x20,
		0xe9, 0xe6, 0x97, 0x74, 0xdf, 0xec, 0x2f, 0x38, 0xa9, 0xb6, 0x82, 0x37, 0xd4, 0x90, 0x41, 0xcf,
		0x57, 0x63, 0x96, 0x27, 0x4f, 0x93, 0x50, 0x7c, 0xa2, 0xbd, 0x7b, 0xa1, 0x74, 0xcf, 0x9b, 0xf4,
		0xa5, 0x08, 0xaf, 0xa5, 0x68, 0xd6, 0x5b, 0x22, 0x69, 0x7c, 0x89, 0x8e, 0xdd, 0x10, 0xbd, 0x91,
		0x0e, 0x5d, 0xa5, 0xa5, 0x2f, 0xa2, 0x40, 0x70, 0xa1, 0xa3, 0xef, 0x9a, 0x53, 0x3b, 0x15, 0x88,
		0x18, 0x93, 0x5b, 0xd5, 0x75, 0x6e, 0x11, 0x82, 0xf1, 0x29, 0xa0, 0xc5, 0xe0, 0xdc, 0x5f, 0x40,
		0x21, 0xc3, 0xdd, 0x6d, 0x13, 0x8e, 0x00, 0x3d, 0x8a, 0xd5, 0x29, 0x3a, 0x14, 0xb6, 0xf8, 0x51,
		0xc9, 0x51, 0xae, 0xe4, 0xd0, 0xa5, 0x7e, 0x4b, 0xcc, 0xe0, 0xb5, 0x19, 0x58, 0xc4, 0x4d, 0x40,
		0xda, 0x01, 0x98, 0x6e, 0x80, 0x20, 0xec, 0x7a, 0xa5, 0x18, 0x53, 0x09, 0x52, 0x02, 0xf2, 0xbe,
		0xf7, 0x70, 0xfa, 0xf2, 0x89, 0xe1, 0xc4, 0xc3, 0xdb, 0xfc, 0xc4, 0x25, 0x71, 0x33, 0xb9, 0x8c,
		0x90, 0x70, 0x1a, 0x19, 0x61, 0x38, 0x22, 0xc2, 0xad, 0x18, 0x64, 0x3b, 0x02, 0xc2, 0xb6, 0xde,
		0xe3, 0x39, 0xe2, 0x81, 0x83, 0x24, 0x6f, 0x79, 0xe5, 0x0d, 0xe5, 0x33, 0xe1, 0xe6, 0xf1, 0xf0,
		0x34, 0x9b, 0xe0, 0x95, 0xdc, 0x14, 0x1c, 0x9b, 0xcd, 0xe5, 0x28, 0x3b, 0x0b, 0x42, 0xc3, 0x8e,
		0xd8, 0x70, 0x24, 0x38, 0x8c, 0x89, 0x0e, 0x57, 0xc2, 0xc3, 0x9e, 0xf8, 0xb0, 0x27, 0x40, 0xbc,
		0x89, 0x10, 0x0f, 0x42, 0xc4, 0x84, 0x18, 0xb1, 0x23, 0x48, 0x89, 0xc1, 0xde, 0xa8, 0xe7, 0x7a,
		0xe5, 0xb1, 0x3f, 0x0a, 0x65, 0x8f, 0xf7, 0xbe, 0xed, 0xd2, 0x4a, 0x20, 0x39, 0x02, 0x5a, 0x65,
		0x16, 0xbd, 0x32, 0x80, 0x66, 0x71, 0xa7, 0x5b, 0xc6, 0xd0, 0x2e, 0x63, 0xe8, 0x97, 0x19, 0x34,
		0x8c, 0x17, 0x1d, 0x63, 0x46, 0xcb, 0x12, 0x88, 0xf0, 0x97, 0x1c, 0x91, 0x7a, 0x72, 0x23, 0x7d,
		0x97, 0xeb, 0xe1, 0xa6, 0x79, 0xcf, 0xa8, 0xc6, 0xd0, 0x76, 0x4b, 0x4f, 0x6e, 0xf8, 0xe6, 0xab,
		0xee, 0xa8, 0x13, 0xfa, 0x4a, 0x0f, 0x79, 0xdf, 0xc0, 0xb1, 0x19, 0xf9, 0x40, 0xf3, 0xe4, 0xb0,
		0xde, 0x74, 0x4e, 0xdb, 0x27, 0x5d, 0xeb, 0xb0, 0x6b, 0x9f, 0xb4, 0x38, 0xdf, 0xc4, 0x51, 0x89,
		0x17, 0x64, 0xb7, 0x7e, 0x77, 0xac, 0xcf, 0x87, 0xcd, 0xb3, 0x86, 0xd5, 0x28, 0xe1, 0x52, 0x9a,
		0x4c, 0xdd, 0xc2, 0xd6, 0x21, 0x6f, 0x9f, 0x78, 0x8c, 0x1e, 0x36, 0x0d, 0xf9, 0xe7, 0xd7, 0xf2,
		0xd4, 0xb5, 0xf7, 0xc5, 0x26, 0x34, 0xb9, 0x61, 0x31, 0x7b, 0xe6, 0xc9, 0x52, 0x43, 0x29, 0xb1,
		0x9e, 0xad, 0x96, 0xd2, 0xc3, 0x0a, 0x0c, 0xd2, 0x54, 0x4a, 0x16, 0xc5, 0x57, 0x5b, 0x69, 0x79,
		0x09, 0xec, 0x34, 0x96, 0xb8, 0x46, 0x22, 0x86, 0x62, 0x20, 0x4b, 0x6b, 0xe0, 0x27, 0x0e, 0xf2,
		0xf4, 0xcb, 0x80, 0x5b, 0x10, 0xdb, 0x47, 0x87, 0xdb, 0x9b, 0xd5, 0xbd, 0x7d, 0xd1, 0x90, 0x03,
		0xa5, 0x55, 0xa8, 0x46, 0x5a, 0x8c, 0x06, 0xc2, 0xd5, 0xc2, 0xee, 0x94, 0xed, 0x8e, 0x68, 0x2a,
		0xfd, 0x97, 0x48, 0x24, 0x93, 0x44, 0x67, 0x72, 0x55, 0x8e, 0x45, 0x0f, 0xd6, 0xc5, 0x5c, 0xf9,
		0x60, 0x3e, 0xe2, 0x53, 0xd9, 0x5b, 0xc7, 0xed, 0xbb, 0x04, 0x9a, 0x33, 0xfc, 0xa5, 0x45, 0x96,
		0xd6, 0x64, 0xf4, 0x05, 0xbc, 0xe9, 0x7a, 0x20, 0xae, 0xf1, 0x85, 0xd5, 0xdf, 0xfc, 0xba, 0xc4,
		0xf8, 0x65, 0x81, 0x2d, 0x85, 0xa6, 0xe8, 0x6a, 0xed, 0x36, 0x7f, 0x9c, 0xf0, 0xf1, 0xbc, 0x16,
		0xa7, 0x0b, 0xae, 0x20, 0x90, 0x69, 0x74, 0xec, 0x60, 0x29, 0x90, 0x09, 0x49, 0xae, 0xd5, 0x96,
		0xb7, 0xaf, 0x91, 0x18, 0x8a, 0xb7, 0x62, 0xea, 0xdd, 0x6e, 0xdb, 0x3e, 0x38, 0xeb, 0x5a, 0x1d,
		0xc8, 0x72, 0x65, 0x5b, 0xb5, 0x42, 0x96, 0x2b, 0xe7, 0x82, 0x34, 0x15, 0x9f, 0x81, 0x34, 0xd7,
		0x0a, 0xde, 0x92, 0x99, 0xd2, 0x5c, 0x11, 0xa5, 0x14, 0x0f, 0x94, 0xf2, 0x89, 0x8e, 0x50, 0xf4,
		0x2d, 0x17, 0xfa, 0xa9, 0x8e, 0x10, 0xbf, 0x66, 0x23, 0x84, 0xb9, 0x10, 0xa9, 0x57, 0x11, 0xad,
		0x53, 0x73, 0x27, 0xf4, 0x85, 0x8a, 0xdc, 0x17, 0x82, 0x2c, 0x97, 0xd1, 0xb5, 0x31, 0x64, 0xb9,
		0x68, 0xf7, 0xd1, 0x38, 0x88, 0xc9, 0x64, 0x77, 0xfd, 0x8e, 0xd2, 0x7f, 0xd5, 0x1f, 0x1e, 0x0d,
		0xe4, 0xca, 0x4c, 0x0b, 0x49, 0x53, 0xd5, 0xaf, 0xbe, 0xf4, 0xdc, 0x7b, 0x66, 0x4a, 0x65, 0x53,
		0x9b, 0x21, 0x52, 0x96, 0x86, 0x99, 0x10, 0x29, 0x5b, 0x21, 0x5a, 0x21, 0x52, 0x96, 0x45, 0x31,
		0x0c, 0x91, 0xb2, 0xcc, 0xeb, 0x5d, 0x88, 0x94, 0x15, 0xa2, 0x60, 0x81, 0x48, 0xd9, 0x6a, 0xf3,
		0x03, 0x44, 0xca, 0x40, 0x6c, 0x38, 0x12, 0x1c, 0xc6, 0x44, 0x87, 0x2b, 0xe1, 0x61, 0x4f, 0x7c,
		0xd8, 0x13, 0x20, 0xde, 0x44, 0x88, 0x07, 0x21, 0x62, 0x42, 0x8c, 0xd8, 0x11, 0xa4, 0xc4, 0x60,
		0xb7, 0x7c, 0xa5, 0x42, 0xbe, 0xdb, 0xd6, 0x53, 0xf3, 0x21, 0x47, 0x06, 0x02, 0x65, 0x16, 0x91,
		0x32, 0x80, 0x50, 0x71, 0x27, 0x56, 0xc6, 0x10, 0x2c, 0x63, 0x88, 0x96, 0x19, 0x84, 0x8b, 0x17,
		0xf1, 0x62, 0x46, 0xc0, 0x12, 0x88, 0xf0, 0x97, 0x23, 0xbb, 0x1a, 0x8d, 0x3c, 0xe9, 0xb2, 0x96,
		0x22, 0xab, 0xe0, 0xf4, 0x52, 0xd1, 0x9d, 0xb1, 0xc4, 0x63, 0x3f, 0xf9, 0x45, 0x2f, 0xe4, 0xb0,
		0xb5, 0x8c, 0x02, 0x03, 0x05, 0x06, 0x0a, 0x0c, 0x14, 0x18, 0x28, 0x30, 0x50, 0x60, 0xa0, 0xc0,
		0x40, 0x81, 0xf1, 0x83, 0x11, 0x7f, 0xa2, 0x74, 0xb8, 0x55, 0x65, 0x5c, 0x5f, 0xec, 0x32, 0x34,
		0xbd, 0xed, 0xea, 0x21, 0xa4, 0xb5, 0x72, 0x78, 0xf0, 0xc7, 0x4a, 0xf3, 0x97, 0x91, 0x3a, 0x77,
		0xbd, 0x89, 0xe4, 0x29, 0x13, 0xf9, 0x68, 0x1d, 0x47, 0xbe, 0x1b, 0x5f, 0x24, 0xd3, 0x50, 0x43,
		0xc5, 0x55, 0xf7, 0xf2, 0x71, 0x4c, 0x95, 0x43, 0x37, 0x54, 0xb7, 0x92, 0xa5, 0xcc, 0x22, 0xe3,
		0x34, 0xfc, 0xd8, 0xc5, 0xdd, 0x3b, 0x73, 0x5c, 0xbc, 0x56, 0xdd, 0xab, 0xed, 0xed, 0xec, 0x56,
		0xf7, 0xb6, 0xe1, 0xeb, 0xf0, 0x75, 0x14, 0x08, 0x8c, 0xad, 0x86, 0xb8, 0x5b, 0x91, 0x2d, 0x85,
		0xb8, 0xdb, 0x6a, 0xed, 0x2e, 0xc6, 0x50, 0x6a, 0xbc, 0x0f, 0x01, 0x5d, 0xb7, 0xe2, 0x58, 0x08,
		0x5d, 0xb7, 0xf4, 0x6d, 0xe6, 0xa7, 0x6d, 0xce, 0xf0, 0xe8, 0x7f, 0xfb, 0xe8, 0x70, 0xf7, 0x43,
		0x65, 0x73, 0x7f, 0x26, 0x94, 0xdc, 0xf5, 0xdd, 0xc1, 0x40, 0xf5, 0x84, 0xa5, 0x87, 0x4a, 0x4b,
		0xe9, 0x2b, 0x3d, 0x14, 0xbf, 0x76, 0xad, 0xf7, 0xe2, 0x58, 0x86, 0xbe, 0xea, 0x5d, 0x68, 0xeb,
		0x2e, 0x94, 0x3a, 0x50, 0x23, 0x1d, 0xac, 0x27, 0x9a, 0xc9, 0x5b, 0x5b, 0xfb, 0x89, 0x8e, 0x72,
		0x75, 0x6b, 0x4d, 0x54, 0x6a, 0x95, 0x35, 0x51, 0x8d, 0xff, 0x54, 0xdd, 0x5a, 0xc7, 0x54, 0xc1,
		0xea, 0xed, 0x36, 0x40, 0xb0, 0xdc, 0xac, 0xc1, 0x82, 0x0c, 0xdc, 0x0a, 0xc4, 0xbf, 0x60, 0x56,
		0x5e, 0xae, 0x41, 0x8b, 0xb5, 0xe8, 0xe9, 0xfa, 0xd5, 0xba, 0x92, 0x0d, 0xab, 0x59, 0xff, 0x03,
		0x32, 0xac, 0xd9, 0xe6, 0x62, 0xc8, 0xb0, 0xe6, 0x9c, 0x86, 0xdf, 0xea, 0x2e, 0x38, 0x63, 0xba,
		0x82, 0x17, 0x64, 0x84, 0x02, 0xab, 0xfd, 0x54, 0x2d, 0x32, 0x6e, 0xf9, 0x2c, 0x08, 0x45, 0x8e,
		0xb4, 0x77, 0x9f, 0xa8, 0x45, 0xce, 0x39, 0xdd, 0x85, 0x8e, 0x81, 0x38, 0x97, 0x8c, 0xdc, 0xda,
		0x82, 0x02, 0x6b, 0x3e, 0x91, 0x19, 0x0a, 0xac, 0xb4, 0x02, 0x75, 0x6a, 0xee, 0x84, 0xcd, 0x1b,
		0xd4, 0x70, 0x94, 0x6b, 0x38, 0x74, 0xb1, 0xdf, 0x12, 0x31, 0xa0, 0xc0, 0x4a, 0x75, 0xb3, 0x0b,
		0xe2, 0xab, 0x4f, 0xc4, 0x57, 0x1b, 0xf1, 0x53, 0x81, 0xee, 0xaa, 0x69, 0x81, 0x68, 0x41, 0xc3,
		0xb4, 0x7c, 0xeb, 0xfa, 0x8a, 0x47, 0x38, 0x7a, 0x46, 0x81, 0x75, 0xc1, 0x7a, 0x68, 0xb1, 0xa6,
		0x61, 0x26, 0xb4, 0x58, 0x57, 0x88, 0x5b, 0x68, 0xb1, 0x66, 0x51, 0x16, 0x43, 0x8b, 0x35, 0xf3,
		0xca, 0x17, 0x5a, 0xac, 0x85, 0x28, 0x5d, 0xa0, 0xc5, 0xba, 0xda, 0xfc, 0x00, 0x2d, 0x56, 0x10,
		0x1b, 0x8e, 0x04, 0x87, 0x31, 0xd1, 0xe1, 0x4a, 0x78, 0xd8, 0x13, 0x1f, 0xf6, 0x04, 0x88, 0x37,
		0x11, 0xe2, 0x41, 0x88, 0x98, 0x10, 0x23, 0x76, 0x04, 0x29, 0x31, 0x18, 0x52, 0x49, 0xb9, 0x11,
		0x27, 0x48, 0x25, 0x81, 0x48, 0x19, 0x4c, 0xa8, 0xb8, 0x13, 0x2b, 0x63, 0x08, 0x96, 0x31, 0x44,
		0xcb, 0x0c, 0xc2, 0xc5, 0x8b, 0x78, 0x31, 0x23, 0x60, 0x09, 0x44, 0x20, 0x95, 0x94, 0x3b, 0xbf,
		0x81, 0x54, 0x52, 0xd6, 0x5f, 0x90, 0x4a, 0xca, 0x77, 0x11, 0x90, 0x4a, 0xa2, 0x1a, 0x53, 0x21,
		0x95, 0x44, 0xc0, 0xc5, 0x21, 0x95, 0x04, 0x5f, 0x87, 0xaf, 0x1b, 0x5a, 0x20, 0xf0, 0xb5, 0x1a,
		0x52, 0x49, 0x45, 0xb6, 0x14, 0x52, 0x49, 0xab, 0xb5, 0xbb, 0x40, 0xa7, 0xc7, 0x1f, 0xce, 0xa2,
		0x42, 0x34, 0xa9, 0x38, 0x16, 0x42, 0x34, 0x29, 0x7d, 0x9b, 0x21, 0x9a, 0xb4, 0x4a, 0x82, 0x9c,
		0xa6, 0x68, 0xd2, 0x76, 0xa2, 0xee, 0x52, 0xdd, 0x5a, 0xab, 0xd4, 0x2a, 0x6b, 0xd5, 0xe8, 0xb7,
		0x10, 0x4c, 0xca, 0xc4, 0x6e, 0x08, 0x26, 0x51, 0x20, 0x66, 0x69, 0x0b, 0x26, 0xbd, 0xec, 0x52,
		0xa0, 0xfe, 0x05, 0xb3, 0x12, 0x62, 0x49, 0x48, 0xd3, 0x6f, 0x53, 0x7f, 0x71, 0xce, 0xeb, 0x6d,
		0xbb, 0xde, 0xb5, 0x4f, 0x5a, 0x90, 0x4d, 0xca, 0x36, 0x23, 0x43, 0x36, 0x29, 0xe7, 0x64, 0x9c,
		0x9e, 0xe3, 0x40, 0x40, 0x69, 0x05, 0xaf, 0xca, 0x08, 0x01, 0xa5, 0x13, 0xed, 0xdd, 0x0b, 0xf5,
		0xbc, 0xec, 0x4b, 0xd2, 0x0d, 0x5a, 0x10, 0x80, 0x89, 0x82, 0xc2, 0x85, 0x5e, 0x10, 0x7f, 0x79,
		0x90, 0x7d, 0xd9, 0x86, 0x8a, 0x52, 0x3e, 0x81, 0x1a, 0x2a, 0x4a, 0xb4, 0xe2, 0x76, 0xba, 0x3e,
		0x85, 0xcd, 0x1d, 0x54, 0x78, 0x94, 0x2b, 0x3c, 0xf4, 0xb6, 0xdf, 0x12, 0x36, 0x20, 0xa5, 0x44,
		0x7f, 0x33, 0x0c, 0xa2, 0x4a, 0xcf, 0x89, 0x2a, 0x9d, 0x27, 0x8f, 0x07, 0xea, 0x4a, 0xa6, 0xc5,
		0xa6, 0xa9, 0x3e, 0x91, 0xea, 0x33, 0x13, 0x54, 0x52, 0x7d, 0x68, 0x28, 0xa5, 0x62, 0x26, 0x34,
		0x94, 0x56, 0x08, 0x55, 0x68, 0x28, 0x65, 0x51, 0x14, 0x43, 0x43, 0x29, 0xf3, 0xba, 0x17, 0x1a,
		0x4a, 0x85, 0xa8, 0x59, 0xa0, 0xa1, 0xb4, 0xda, 0xfc, 0x00, 0x0d, 0x25, 0x10, 0x1b, 0x8e, 0x04,
		0x87, 0x31, 0xd1, 0xe1, 0x4a, 0x78, 0xd8, 0x13, 0x1f, 0xf6, 0x04, 0x88, 0x37, 0x11, 0xe2, 0x41,
		0x88, 0x98, 0x10, 0x23, 0x76, 0x04, 0x29, 0x31, 0xd8, 0x1b, 0xf5, 0x5c, 0x8f, 0xef, 0x1e, 0xf6,
		0xd4, 0x7c, 0x68, 0x28, 0x81, 0x40, 0x99, 0x45, 0xa4, 0x0c, 0x20, 0x54, 0xdc, 0x89, 0x95, 0x31,
		0x04, 0xcb, 0x18, 0xa2, 0x65, 0x06, 0xe1, 0xe2, 0x45, 0xbc, 0x98, 0x11, 0xb0, 0x04, 0x22, 0xd0,
		0x50, 0xca, 0x9d, 0xdf, 0x40, 0x43, 0x29, 0xeb, 0x2f, 0x68, 0x28, 0xe5, 0xbb, 0x08, 0x68, 0x28,
		0x51, 0x8d, 0xa9, 0xd0, 0x50, 0x22, 0xe0, 0xe2, 0xd0, 0x50, 0x82, 0xaf, 0xc3, 0xd7, 0x0d, 0x2d,
		0x10, 0xf8, 0x5a, 0x7d, 0x89, 0x42, 0x6c, 0x85, 0xee, 0xc8, 0x50, 0xc2, 0x63, 0x69, 0x0d, 0xfc,
		0x24, 0x3d, 0x0c, 0xaa, 0x0c, 0x16, 0x24, 0x3f, 0xb6, 0xb7, 0x36, 0x77, 0xe7, 0xfa, 0x04, 0x0f,
		0xf2, 0x03, 0x42, 0x69, 0xd1, 0x99, 0x8c, 0xc7, 0x23, 0x3f, 0x14, 0xa3, 0x81, 0xf8, 0x28, 0xb5,
		0xf4, 0x5d, 0x4f, 0xfd, 0x9f, 0xec, 0x5f, 0xe8, 0xe3, 0x89, 0x17, 0xaa, 0xf2, 0xfc, 0x0c, 0xb4,
		0x68, 0xba, 0x57, 0xd2, 0x13, 0x9d, 0x2f, 0x2a, 0xec, 0x5d, 0xc7, 0x82, 0x06, 0x1f, 0x8f, 0x4f,
		0x9b, 0x9d, 0xf7, 0x0b, 0x02, 0x06, 0xb1, 0x7e, 0xc1, 0x85, 0x7e, 0x2c, 0x60, 0x20, 0x98, 0x89,
		0x82, 0x2c, 0x3d, 0x43, 0xe6, 0x2d, 0xd8, 0x87, 0xce, 0x02, 0x7f, 0xd1, 0x90, 0xa5, 0x35, 0x99,
		0xd2, 0x95, 0x4d, 0x16, 0xf4, 0x44, 0x54, 0x24, 0x5f, 0xa7, 0x05, 0xfb, 0x83, 0xd5, 0x26, 0xb1,
		0x3f, 0x8c, 0xf3, 0xaf, 0x84, 0xdf, 0xdd, 0x8c, 0x42, 0xc9, 0xf7, 0x14, 0xc4, 0xcc, 0x7e, 0x1c,
		0x83, 0xc8, 0xc2, 0x6c, 0x1c, 0x83, 0xc8, 0x11, 0xe9, 0x38, 0x06, 0x41, 0x81, 0x7b, 0xe3, 0x18,
		0x04, 0x39, 0xa2, 0x8d, 0x63, 0x10, 0x60, 0x35, 0xcf, 0x40, 0x04, 0xc7, 0x20, 0x72, 0xe7, 0x37,
		0x38, 0x06, 0x91, 0xf5, 0x17, 0x8e, 0x41, 0xe4, 0xbb, 0x08, 0x1c, 0x83, 0xa0, 0x1a, 0x53, 0x71,
		0x0c, 0x82, 0x80, 0x8b, 0xe3, 0x18, 0x04, 0x7c, 0x1d, 0xbe, 0x6e, 0x68, 0x81, 0xc0, 0xd7, 0x6a,
		0x1c, 0x83, 0x58, 0xa5, 0x3b, 0xe2, 0x18, 0x04, 0x2a, 0x83, 0x54, 0xea, 0x61, 0x1c, 0x83, 0x78,
		0xfd, 0x33, 0xc4, 0x31, 0x08, 0xba, 0x6b, 0xc2, 0x31, 0x08, 0x1c, 0x83, 0x00, 0xfb, 0x03, 0xfb,
		0x33, 0xec, 0xf9, 0x42, 0x5e, 0x23, 0xd5, 0x98, 0x8a, 0x8b, 0x44, 0x09, 0x6b, 0x27, 0xab, 0x3e,
		0xee, 0x0e, 0x2d, 0x8e, 0x85, 0xb8, 0x3b, 0x34, 0x7d, 0x9b, 0x71, 0x1f, 0xd9, 0x6a, 0x8b, 0xe7,
		0x57, 0x5f, 0xab, 0x64, 0x37, 0x70, 0x05, 0x59, 0xb6, 0x85, 0x2d, 0xae, 0x20, 0xcb, 0xb9, 0x66,
		0x7d, 0x93, 0xaf, 0xe0, 0x98, 0xf2, 0x0a, 0xde, 0x8e, 0xc1, 0xb7, 0x8e, 0xa9, 0xbe, 0xd4, 0xa1,
		0x1a, 0x28, 0xe9, 0x3f, 0xb9, 0x1c, 0x29, 0xfa, 0x96, 0x0b, 0xfd, 0xf4, 0x72, 0xa4, 0x1a, 0xae,
		0x1b, 0xcb, 0x25, 0x28, 0xe3, 0xba, 0x31, 0x5a, 0x31, 0x3a, 0x25, 0x67, 0x42, 0xef, 0xa7, 0xc8,
		0xbd, 0x1f, 0xdc, 0x33, 0x66, 0x74, 0x1d, 0x8c, 0x7b, 0xc6, 0x68, 0xf6, 0xca, 0x70, 0xb5, 0xd8,
		0x93, 0xab, 0xc5, 0xec, 0x3e, 0xae, 0x13, 0x33, 0x2e, 0x04, 0x4d, 0x6f, 0xe7, 0xf2, 0x46, 0x41,
		0xc0, 0xec, 0x42, 0xb1, 0xd8, 0x64, 0x5c, 0x29, 0x96, 0x86, 0x99, 0xb8, 0x52, 0x6c, 0x85, 0x60,
		0xc5, 0x95, 0x62, 0x59, 0x14, 0xbe, 0xb8, 0x52, 0x2c, 0xf3, 0xda, 0x16, 0x57, 0x8a, 0x15, 0xa2,
		0x3c, 0xc1, 0x95, 0x62, 0xab, 0xcd, 0x0f, 0xb8, 0x52, 0x0c, 0xc4, 0x86, 0x23, 0xc1, 0x61, 0x4c,
		0x74, 0xb8, 0x12, 0x1e, 0xf6, 0xc4, 0x87, 0x3d, 0x01, 0xe2, 0x4d, 0x84, 0x78, 0x10, 0x22, 0x26,
		0xc4, 0x88, 0x1d, 0x41, 0x4a, 0x0c, 0x76, 0xcb, 0x57, 0x2a, 0xe4, 0xbb, 0x41, 0x3d, 0x35, 0x1f,
		0x5a, 0x5a, 0x20, 0x50, 0x66, 0x11, 0x29, 0x03, 0x08, 0x15, 0x77, 0x62, 0x65, 0x0c, 0xc1, 0x32,
		0x86, 0x68, 0x99, 0x41, 0xb8, 0x78, 0x11, 0x2f, 0x66, 0x04, 0x2c, 0x81, 0x08, 0x7f, 0x2d, 0xad,
		0xab, 0xd1, 0xc8, 0x93, 0xae, 0x66, 0x2c, 0xa6, 0x55, 0xa9, 0xe0, 0xac, 0x52, 0xd1, 0x9d, 0x91,
		0xd1, 0x96, 0xf2, 0x8b, 0x9e, 0xc8, 0x65, 0x8b, 0x19, 0x85, 0x06, 0x0a, 0x0d, 0x14, 0x1a, 0x28,
		0x34, 0x50, 0x68, 0xa0, 0xd0, 0x40, 0xa1, 0x81, 0x42, 0xe3, 0x07, 0x23, 0x3e, 0x44, 0x7b, 0x73,
		0x30, 0x1d, 0xa2, 0xbd, 0x39, 0x3d, 0x78, 0x88, 0xf6, 0x12, 0x5a, 0x07, 0x84, 0x3c, 0x91, 0x86,
		0x57, 0xe0, 0xe2, 0x10, 0xed, 0x85, 0xaf, 0xc3, 0xd7, 0x0d, 0x2d, 0x10, 0xf8, 0x5a, 0x0d, 0xd9,
		0xb6, 0x22, 0x5b, 0x0a, 0xd9, 0xb6, 0xd5, 0xda, 0x5d, 0x8c, 0x51, 0x54, 0x6f, 0x14, 0x04, 0x10,
		0x6e, 0x2b, 0x8e, 0x85, 0x10, 0x6e, 0x4b, 0xdf, 0x66, 0x7e, 0xd2, 0xe8, 0x0c, 0x27, 0x00, 0xda,
		0x47, 0x87, 0xbb, 0x1f, 0x2a, 0x9b, 0x73, 0x15, 0xe5, 0xae, 0xef, 0x0e, 0x06, 0xaa, 0x27, 0x2c,
		0x3d, 0x54, 0x5a, 0x4a, 0x3f, 0x16, 0x45, 0xee, 0x5a, 0xef, 0xc5, 0xb1, 0x0c, 0x7d, 0xd5, 0xbb,
		0xd0, 0x0f, 0x32, 0xcb, 0x0b, 0x22, 0xc9, 0x3b, 0xb1, 0x4a, 0xb2, 0x88, 0x95, 0x91, 0xb7, 0xd6,
		0x44, 0xa5, 0x56, 0x59, 0x13, 0x1c, 0xc5, 0xcd, 0x4d, 0x18, 0x2e, 0xe0, 0x2a, 0x5e, 0x6e, 0xd6,
		0x7c, 0x41, 0x06, 0x6e, 0x05, 0xde, 0x5f, 0x30, 0x2b, 0x2f, 0xd7, 0x20, 0xb6, 0x5a, 0xf4, 0x74,
		0xfd, 0x6a, 0x01, 0xc9, 0xe6, 0x49, 0xa7, 0x03, 0xb9, 0xd5, 0x6c, 0x53, 0x31, 0xe4, 0x56, 0x73,
		0xce, 0xc2, 0x6f, 0xf4, 0x16, 0x1c, 0x34, 0x5d, 0xc1, 0xfb, 0x31, 0x58, 0x70, 0xd5, 0x1b, 0x05,
		0xc1, 0x33, 0xea, 0x90, 0x73, 0x42, 0x77, 0xa1, 0xe7, 0xea, 0x90, 0x5b, 0x3b, 0xeb, 0x10, 0x5b,
		0xcd, 0x25, 0x24, 0x43, 0x6c, 0x95, 0x56, 0x84, 0x4e, 0xc1, 0x91, 0xb0, 0x5b, 0x83, 0xaa, 0x8d,
		0x72, 0xd5, 0x86, 0xbe, 0xf5, 0x5b, 0x62, 0x05, 0x84, 0x56, 0x89, 0xee, 0x6e, 0x41, 0x6a, 0xf5,
		0x89, 0xd4, 0x6a, 0x33, 0x7a, 0x28, 0x10, 0x5b, 0x35, 0x2d, 0x0c, 0x4d, 0xc7, 0xca, 0x22, 0xff,
		0x93, 0xf1, 0xb9, 0xa8, 0xb8, 0x6c, 0x64, 0xa6, 0xbb, 0xfa, 0xd4, 0x7a, 0x48, 0xb0, 0xa6, 0x61,
		0x26, 0x24, 0x58, 0x57, 0x88, 0x5b, 0x48, 0xb0, 0x66, 0x51, 0x0e, 0x43, 0x82, 0x35, 0xf3, 0x8a,
		0x17, 0x12, 0xac, 0x85, 0x28, 0x5c, 0x20, 0xc1, 0xba, 0xda, 0xfc, 0x00, 0x09, 0x56, 0x10, 0x1b,
		0x8e, 0x04, 0x87, 0x31, 0xd1, 0xe1, 0x4a, 0x78, 0xd8, 0x13, 0x1f, 0xf6, 0x04, 0x88, 0x37, 0x11,
		0xe2, 0x41, 0x88, 0x98, 0x10, 0x23, 0x76, 0x04, 0x29, 0x31, 0x38, 0xe4, 0xa8, 0x20, 0x90, 0xa4,
		0x19, 0x06, 0x7d, 0x9f, 0x97, 0x68, 0x13, 0x74, 0x91, 0x40, 0xa3, 0x0c, 0xa6, 0x53, 0xdc, 0x69,
		0x95, 0x31, 0xf4, 0xca, 0x18, 0x9a, 0x65, 0x06, 0xdd, 0xe2, 0x45, 0xbb, 0x98, 0xd1, 0xaf, 0x04,
		0x22, 0xfc, 0x75, 0x91, 0xa4, 0x9e, 0xdc, 0x48, 0xdf, 0xe5, 0x7a, 0xa4, 0x6b, 0xde, 0x1b, 0xaa,
		0x31, 0xb4, 0xdd, 0xd2, 0x93, 0x1b, 0xbe, 0xf9, 0xaa, 0x3b, 0xea, 0x84, 0xbe, 0xd2, 0x43, 0xd6,
		0x22, 0x24, 0xa5, 0xcd, 0xc8, 0x07, 0xac, 0xcf, 0xdd, 0x76, 0xdd, 0xe9, 0xb6, 0xeb, 0x47, 0x47,
		0xf6, 0x61, 0x89, 0xb1, 0x26, 0x4c, 0x25, 0x5a, 0xcd, 0x59, 0xeb, 0xb4, 0x7d, 0xd2, 0xb5, 0x0e,
		0xbb, 0x56, 0x83, 0xf3, 0x5a, 0xaa, 0xd1, 0x5a, 0x3a, 0x9f, 0xea, 0x6d, 0xde, 0xcb, 0xd8, 0x8a,
		0xcf, 0x69, 0xb6, 0x2c, 0xe7, 0xa4, 0x65, 0x71, 0x5e, 0x47, 0x2d, 0x5a, 0xc7, 0x69, 0xf3, 0xac,
		0xc3, 0x7d, 0x21, 0xdb, 0xb1, 0xc7, 0xb7, 0x3e, 0xd5, 0x5b, 0x87, 0x56, 0xa3, 0xc4, 0x53, 0x14,
		0x66, 0x8d, 0x6b, 0xca, 0xb0, 0x75, 0xc8, 0x3b, 0x5f, 0x24, 0xc0, 0xd9, 0x17, 0x8c, 0xa5, 0xaa,
		0x9e, 0x64, 0x3c, 0xd6, 0x2a, 0x55, 0x49, 0x70, 0xdd, 0x17, 0x5b, 0x8c, 0x57, 0x91, 0x84, 0xd6,
		0x7d, 0x51, 0x63, 0xbc, 0x8c, 0x59, 0xc2, 0xde, 0x17, 0x55, 0xc6, 0x8b, 0x58, 0x64, 0x50, 0xfb,
		0xa2, 0x02, 0xe1, 0x30, 0x58, 0xcc, 0xbe, 0x53, 0xd1, 0x54, 0x41, 0x58, 0x0f, 0x43, 0x9f, 0x67,
		0xb7, 0xe2, 0x58, 0x69, 0xcb, 0x93, 0x37, 0x52, 0x73, 0xd5, 0x54, 0x2c, 0x1d, 0xbb, 0x77, 0x0b,
		0x2b, 0xa8, 0x7c, 0xa8, 0xd5, 0x76, 0x76, 0x6b, 0xb5, 0xcd, 0xdd, 0xad, 0xdd, 0xcd, 0xbd, 0xed,
		0xed, 0xca, 0x4e, 0x85, 0x21, 0x9d, 0x28, 0x9d, 0xf8, 0x7d, 0xe9, 0xcb, 0xfe, 0xc1, 0x7d, 0x69,
		0x5f, 0xe8, 0x89, 0xe7, 0x71, 0x5e, 0xc2, 0x59, 0x20, 0x7d, 0x96, 0x22, 0x97, 0xdc, 0x22, 0x11,
		0x43, 0x31, 0xad, 0xa5, 0x35, 0xf0, 0x13, 0xd7, 0x7a, 0xfa, 0xc5, 0xb8, 0x06, 0x5b, 0x10, 0xdf,
		0xda, 0xde, 0xda, 0xdc, 0x9d, 0xab, 0x04, 0x3d, 0x88, 0x00, 0x09, 0xa5, 0x45, 0x67, 0x32, 0x1e,
		0x8f, 0xfc, 0x50, 0x8c, 0x06, 0xe2, 0xa3, 0xd4, 0xd2, 0x77, 0x3d, 0xf5, 0x7f, 0xb2, 0x7f, 0xa1,
		0x8f, 0x27, 0x5e, 0xa8, 0xca, 0xf3, 0xe1, 0x25, 0x21, 0x9a, 0xee, 0x95, 0xf4, 0x44, 0xe7, 0x8b,
		0x0a, 0x7b, 0xd7, 0xb1, 0xae, 0xd0, 0xc7, 0xe3, 0xd3, 0x66, 0xe7, 0xfd, 0x83, 0x8e, 0x50, 0x75,
		0x73, 0xff, 0x42, 0xcf, 0x84, 0x84, 0xaa, 0x5b, 0x6b, 0x95, 0x5a, 0x65, 0xad, 0x1a, 0xfd, 0x96,
		0x97, 0x36, 0xd7, 0x32, 0x51, 0xe7, 0xbd, 0x5d, 0x9a, 0xac, 0xc3, 0x00, 0xed, 0xae, 0xa5, 0x35,
		0x99, 0xb2, 0x83, 0x9a, 0x2c, 0xe8, 0x89, 0xb6, 0x57, 0xce, 0x5e, 0x0b, 0x09, 0x6b, 0x58, 0xfd,
		0xcd, 0x2f, 0x48, 0x58, 0x17, 0xd9, 0x52, 0x48, 0x58, 0xaf, 0xd6, 0xee, 0x62, 0x0c, 0xf9, 0x3f,
		0x19, 0x1a, 0x86, 0x9a, 0x75, 0x71, 0x2c, 0x84, 0x9a, 0x75, 0xfa, 0x36, 0x43, 0x19, 0x73, 0xb5,
		0xb5, 0xf4, 0xab, 0xb5, 0xfe, 0x66, 0x3b, 0x25, 0xf6, 0x49, 0xcb, 0xe9, 0xfe, 0x71, 0x6a, 0x41,
		0x24, 0x33, 0xdb, 0x9a, 0x17, 0x22, 0x99, 0x39, 0x97, 0xb3, 0xe9, 0x39, 0x0e, 0xf4, 0x32, 0x57,
		0xf0, 0xaa, 0x0c, 0xd6, 0xcb, 0x7c, 0x60, 0x98, 0x53, 0x35, 0xbf, 0xc7, 0x8a, 0x7f, 0x17, 0x7a,
		0x41, 0xf2, 0x6f, 0xfa, 0x0d, 0xd5, 0x4d, 0xe8, 0x66, 0xe6, 0x13, 0xa5, 0xa1, 0x9b, 0x49, 0x2b,
		0x68, 0xa7, 0xe8, 0x50, 0x68, 0x15, 0x15, 0xb9, 0x55, 0x04, 0xfd, 0x4c, 0xa3, 0x2b, 0x65, 0xe8,
		0x67, 0x32, 0x68, 0xad, 0x41, 0x4a, 0xf3, 0x89, 0x94, 0xe6, 0x69, 0xf2, 0x7c, 0xe2, 0xf1, 0x34,
		0x88, 0x6a, 0x9a, 0x16, 0x9b, 0x4a, 0x37, 0xee, 0x5d, 0x39, 0x76, 0x85, 0x2b, 0x57, 0xf7, 0xbf,
		0xa8, 0x7e, 0xec, 0xef, 0x4c, 0x24, 0x35, 0x9f, 0xb1, 0x1d, 0x82, 0x9a, 0x69, 0x98, 0x09, 0x41,
		0xcd, 0x15, 0xa2, 0x16, 0x82, 0x9a, 0x59, 0xd4, 0xc9, 0x10, 0xd4, 0xcc, 0xbc, 0x14, 0x86, 0xa0,
		0x66, 0x21, 0x2a, 0x19, 0x08, 0x6a, 0xae, 0x36, 0x3f, 0x40, 0x50, 0x13, 0xc4, 0x86, 0x23, 0xc1,
		0x61, 0x4c, 0x74, 0xb8, 0x12, 0x1e, 0xf6, 0xc4, 0x87, 0x3d, 0x01, 0xe2, 0x4d, 0x84, 0x78, 0x10,
		0x22, 0x26, 0xc4, 0x88, 0x1d, 0x41, 0x4a, 0x0c, 0xe6, 0xd3, 0xfa, 0x79, 0x31, 0xd7, 0x70, 0xe9,
		0x00, 0xbd, 0x44, 0xa0, 0x20, 0xad, 0x09, 0x42, 0x65, 0x30, 0xb1, 0xe2, 0x4e, 0xb0, 0x8c, 0x21,
		0x5a, 0xc6, 0x10, 0x2e, 0x33, 0x88, 0x17, 0x2f, 0x02, 0xc6, 0x8c, 0x88, 0x25, 0x10, 0xe1, 0x2f,
		0xad, 0xa9, 0xa4, 0x94, 0x03, 0x6f, 0xe4, 0x86, 0x5b, 0x55, 0xc6, 0xd2, 0x9a, 0x7b, 0x0c, 0x4d,
		0x6f, 0x4a, 0x3d, 0x8c, 0x89, 0x31, 0x66, 0xf3, 0x33, 0x7e, 0xf2, 0xc7, 0x4a, 0xf3, 0x9f, 0x29,
		0x3f, 0x77, 0xbd, 0x89, 0xe4, 0x2d, 0xc4, 0x15, 0xaf, 0xe3, 0xc8, 0x77, 0xe3, 0x63, 0x20, 0x0d,
		0x35, 0x54, 0x5c, 0x85, 0x73, 0x1e, 0x47, 0x56, 0x39, 0x74, 0x43, 0x75, 0x2b, 0x59, 0xea, 0xb4,
		0x30, 0x4e, 0xc6, 0x8f, 0x5d, 0xdc, 0xbd, 0x83, 0x8b, 0xc3, 0xc5, 0xe1, 0xe2, 0x26, 0x55, 0x07,
		0x7c, 0xad, 0xbe, 0x44, 0x15, 0xb6, 0x42, 0x77, 0x84, 0x58, 0x17, 0x0a, 0x82, 0x54, 0x8a, 0xe1,
		0xa9, 0xec, 0xcf, 0xf6, 0x33, 0xb2, 0x3f, 0x83, 0x91, 0x2f, 0xba, 0xbe, 0x3b, 0x18, 0xa8, 0x9e,
		0xb0, 0xf4, 0x50, 0x69, 0x29, 0x7d, 0xa5, 0x87, 0xeb, 0x17, 0x7a, 0x3e, 0x6c, 0xb3, 0xb7, 0x2f,
		0x20, 0xc0, 0x45, 0xb6, 0x4d, 0x00, 0x01, 0x2e, 0xfa, 0x0b, 0x5a, 0x16, 0xe0, 0x4a, 0xdb, 0x13,
		0xc1, 0xd3, 0x60, 0xb5, 0x49, 0x3c, 0x0d, 0xc7, 0x40, 0x8a, 0xc8, 0x7b, 0x21, 0xaa, 0x45, 0x75,
		0xf2, 0x6f, 0x79, 0x6c, 0x08, 0x92, 0x5a, 0xc5, 0xb1, 0x10, 0x92, 0x5a, 0xe9, 0xdb, 0x0c, 0x49,
		0xad, 0xd5, 0x56, 0xbc, 0xaf, 0x51, 0x06, 0x3a, 0xae, 0x7f, 0x9e, 0xaa, 0x03, 0x1d, 0xd4, 0x5b,
		0x8d, 0xff, 0xd8, 0x8d, 0xee, 0x27, 0x08, 0x6a, 0x65, 0x5b, 0xc3, 0x42, 0x50, 0x2b, 0xe7, 0xf2,
		0x34, 0x2d, 0xb7, 0x81, 0x9c, 0xd6, 0x0a, 0x5e, 0x94, 0x99, 0x72, 0x5a, 0x37, 0xee, 0x9d, 0xba,
		0x99, 0xdc, 0x4c, 0x55, 0x80, 0x12, 0x7e, 0xf9, 0x4d, 0xfd, 0x1f, 0x15, 0x4c, 0x25, 0x80, 0xf6,
		0x20, 0xa9, 0x95, 0x4f, 0x9c, 0x86, 0xa4, 0x16, 0xad, 0xb0, 0x9d, 0xb2, 0x53, 0xa1, 0x59, 0x54,
		0xe4, 0x66, 0x11, 0x64, 0xb5, 0x8c, 0xae, 0x96, 0x21, 0xab, 0x45, 0xbe, 0xb9, 0x06, 0x51, 0xad,
		0x05, 0x51, 0xad, 0x63, 0xf7, 0xae, 0xa9, 0xf4, 0x5f, 0x07, 0xc9, 0xc3, 0x81, 0xa4, 0x96, 0x69,
		0x71, 0x29, 0x96, 0xa5, 0xf2, 0x65, 0x20, 0xfd, 0x5b, 0xf7, 0xca, 0x93, 0xac, 0xd5, 0xb5, 0x5e,
		0x5e, 0x06, 0x84, 0xb6, 0xd2, 0x30, 0x13, 0x42, 0x5b, 0x2b, 0x04, 0x30, 0x84, 0xb6, 0xb2, 0xa8,
		0x9e, 0x21, 0xb4, 0x95, 0x79, 0x81, 0x0c, 0xa1, 0xad, 0x42, 0xd4, 0x36, 0x10, 0xda, 0x5a, 0x6d,
		0x7e, 0x80, 0xd0, 0x16, 0x88, 0x0d, 0x47, 0x82, 0xc3, 0x98, 0xe8, 0x70, 0x25, 0x3c, 0xec, 0x89,
		0x0f, 0x7b, 0x02, 0xc4, 0x9b, 0x08, 0xf1, 0x20, 0x44, 0x4c, 0x88, 0x11, 0x3b, 0x82, 0x94, 0x18,
		0x0c, 0xa1, 0xad, 0xdc, 0x09, 0x14, 0x84, 0xb6, 0x40, 0xa8, 0x0c, 0x26, 0x56, 0xdc, 0x09, 0x96,
		0x31, 0x44, 0xcb, 0x18, 0xc2, 0x65, 0x06, 0xf1, 0xe2, 0x45, 0xc0, 0x98, 0x11, 0xb1, 0x04, 0x22,
		0x10, 0xda, 0xa2, 0x41, 0x72, 0x20, 0xb4, 0x95, 0xf9, 0x17, 0x84, 0xb6, 0xf2, 0x5d, 0x04, 0x54,
		0x78, 0xa8, 0x46, 0x56, 0x08, 0x6d, 0x11, 0x70, 0x71, 0x08, 0x6d, 0xc1, 0xc5, 0xe1, 0xe2, 0x66,
		0x55, 0x07, 0x7c, 0xad, 0x86, 0xd0, 0xd6, 0x2a, 0xdd, 0x11, 0x42, 0x5b, 0x28, 0x08, 0x52, 0x29,
		0x86, 0x5f, 0x23, 0xef, 0xd3, 0x99, 0x0d, 0xe0, 0x54, 0x36, 0xa1, 0xb4, 0x45, 0xb8, 0x4f, 0x00,
		0xa5, 0x2d, 0xfa, 0x0b, 0x7a, 0xab, 0xd2, 0xd6, 0x0f, 0xb8, 0x22, 0x98, 0x1a, 0xac, 0x36, 0x89,
		0xa9, 0xe1, 0x20, 0x48, 0x11, 0x99, 0x2f, 0xa4, 0xb6, 0x28, 0x4f, 0x03, 0xbe, 0x38, 0x43, 0x04,
		0xd5, 0xad, 0xe2, 0x58, 0x08, 0xd5, 0xad, 0xf4, 0x6d, 0x86, 0xea, 0xd6, 0x6a, 0xcb, 0xdf, 0xd7,
		0xca, 0x07, 0xb5, 0xad, 0x8e, 0xd5, 0x3e, 0xaf, 0x1f, 0x34, 0x2d, 0x68, 0x6f, 0xe5, 0x55, 0xd5,
		0x42, 0x7b, 0x2b, 0xe7, 0x82, 0x35, 0x5d, 0xe7, 0x81, 0x02, 0xd7, 0x0a, 0x5e, 0x97, 0xd9, 0x0a,
		0x5c, 0x0f, 0xb4, 0xf3, 0x89, 0x6e, 0xd0, 0x85, 0x7e, 0x2c, 0x1c, 0x24, 0x16, 0x75, 0x83, 0x62,
		0xb4, 0xaa, 0x40, 0x54, 0x36, 0xa1, 0xc6, 0x95, 0x4f, 0xe4, 0x86, 0x1a, 0x17, 0xad, 0x40, 0xbe,
		0x42, 0x07, 0x43, 0x6f, 0xa9, 0xc8, 0xbd, 0x25, 0x28, 0x73, 0x19, 0x5d, 0x51, 0x43, 0x99, 0x8b,
		0x53, 0x2f, 0x0e, 0x22, 0x5d, 0x8f, 0x45, 0xba, 0xda, 0xc9, 0x83, 0x82, 0x5c, 0x97, 0xd9, 0xc1,
		0xaa, 0x74, 0xa3, 0x74, 0x39, 0x51, 0xad, 0xeb, 0x4b, 0xcf, 0xbd, 0x67, 0xa4, 0xd1, 0xb5, 0x6c,
		0x3b, 0x84, 0xb9, 0xd2, 0x30, 0x13, 0xc2, 0x5c, 0x2b, 0x44, 0x2d, 0x84, 0xb9, 0xb2, 0x28, 0xa4,
		0x21, 0xcc, 0x95, 0x79, 0xad, 0x0c, 0x61, 0xae, 0x42, 0x94, 0x36, 0x10, 0xe6, 0x5a, 0x6d, 0x7e,
		0x80, 0x30, 0x17, 0x88, 0x0d, 0x47, 0x82, 0xc3, 0x98, 0xe8, 0x70, 0x25, 0x3c, 0xec, 0x89, 0x0f,
		0x7b, 0x02, 0xc4, 0x9b, 0x08, 0xf1, 0x20, 0x44, 0x4c, 0x88, 0x11, 0x3b, 0x82, 0x94, 0x18, 0xec,
		0x96, 0xaf, 0x54, 0xc8, 0x77, 0x13, 0x7c, 0x6a, 0x3e, 0x04, 0xb9, 0x40, 0xa0, 0xcc, 0x22, 0x52,
		0x06, 0x10, 0x2a, 0xee, 0xc4, 0xca, 0x18, 0x82, 0x65, 0x0c, 0xd1, 0x32, 0x83, 0x70, 0xf1, 0x22,
		0x5e, 0xcc, 0x08, 0x58, 0x02, 0x11, 0xfe, 0x82, 0x5c, 0x57, 0xa3, 0x91, 0x27, 0x5d, 0xcd, 0x58,
		0x8c, 0xab, 0x52, 0xc1, 0x39, 0xa7, 0xa2, 0x3b, 0x63, 0x7c, 0x99, 0x12, 0x8f, 0xbd, 0xe5, 0x17,
		0x3d, 0xf1, 0x61, 0x09, 0x28, 0x34, 0x50, 0x68, 0xa0, 0xd0, 0x40, 0xa1, 0x81, 0x42, 0x03, 0x85,
		0x06, 0x78, 0x0d, 0x0a, 0x0d, 0x23, 0x0a, 0x8d, 0x89, 0xd2, 0xbc, 0x45, 0x7f, 0x77, 0x19, 0x9a,
		0xde, 0x76, 0xf5, 0x10, 0x12, 0x5f, 0x39, 0x3c, 0x78, 0xa3, 0x34, 0x7f, 0x37, 0x21, 0x08, 0x4a,
		0x2c, 0xa6, 0x42, 0xf3, 0x97, 0x80, 0x8b, 0x1b, 0xa5, 0xf9, 0x5b, 0xdd, 0xab, 0xed, 0xed, 0xec,
		0x56, 0xf7, 0xb6, 0xe1, 0xeb, 0xf0, 0x75, 0x14, 0x08, 0x8c, 0xad, 0x86, 0xa4, 0x5c, 0xe1, 0x73,
		0x55, 0x3c, 0xb7, 0xc4, 0xbd, 0x1d, 0x9e, 0x2c, 0x01, 0xed, 0xf0, 0x2c, 0xcc, 0x46, 0x3b, 0x3c,
		0x47, 0xb0, 0xa3, 0x1d, 0x9e, 0x9f, 0xbb, 0xa2, 0x1d, 0x4e, 0x6c, 0x21, 0x68, 0x87, 0x83, 0xdb,
		0x7c, 0x07, 0x22, 0x68, 0x87, 0xe7, 0xce, 0x6f, 0xd0, 0x0e, 0xcf, 0xfa, 0x0b, 0xed, 0xf0, 0x7c,
		0x17, 0x81, 0x76, 0x38, 0xd5, 0x98, 0x8a, 0x76, 0x38, 0x01, 0x17, 0x47, 0x3b, 0x1c, 0xbe, 0x0e,
		0x5f, 0x37, 0xb4, 0x40, 0xe0, 0x6b, 0x35, 0xda, 0xe1, 0x45, 0xb6, 0x14, 0x37, 0xac, 0xac, 0xd6,
		0x6e, 0xf3, 0x55, 0x1d, 0x97, 0x14, 0xe0, 0x70, 0xad, 0x4a, 0x71, 0x2c, 0xc4, 0xb5, 0x2a, 0xe9,
		0xdb, 0xcc, 0xef, 0xea, 0x51, 0x86, 0xca, 0x38, 0xed, 0xa3, 0xc3, 0xdd, 0x0f, 0x95, 0xcd, 0xf9,
		0x7d, 0x86, 0xcf, 0x5c, 0x60, 0x28, 0x7e, 0xed, 0x5a, 0xef, 0xc5, 0xb1, 0x0c, 0x7d, 0xd5, 0xbb,
		0xd0, 0x0f, 0x17, 0x1e, 0xae, 0x27, 0x52, 0xe2, 0x5b, 0xb5, 0xe4, 0x5e, 0x43, 0x51, 0xdd, 0x5a,
		0x13, 0x95, 0x5a, 0x65, 0x4d, 0x54, 0xe3, 0x3f, 0xf1, 0xba, 0x66, 0xd4, 0x04, 0xd1, 0x1d, 0xae,
		0xd7, 0x88, 0x9a, 0xa5, 0xbb, 0x93, 0x81, 0x5b, 0xa1, 0x00, 0x28, 0x98, 0x95, 0x97, 0x6b, 0xb8,
		0x0a, 0xad, 0xe8, 0xe9, 0xfa, 0x55, 0xb7, 0x39, 0xd9, 0xad, 0xf8, 0x46, 0xa7, 0xa6, 0xdd, 0xfa,
		0xdd, 0x69, 0x58, 0xcd, 0xfa, 0x1f, 0xb8, 0x04, 0x2d, 0xdb, 0x9c, 0x8c, 0x4b, 0xd0, 0x72, 0x4e,
		0xc7, 0x69, 0xb9, 0x0d, 0xce, 0xa0, 0xae, 0xe0, 0x45, 0x19, 0x7a, 0xfd, 0x99, 0xd2, 0x1b, 0x37,
		0xee, 0xdd, 0xf4, 0x4a, 0xa6, 0xb8, 0x1f, 0x24, 0x96, 0x6f, 0x63, 0xba, 0xd0, 0x73, 0xb2, 0xa7,
		0x82, 0xe9, 0x8d, 0x4c, 0x5b, 0x35, 0xdc, 0x77, 0x96, 0x4f, 0x90, 0xc6, 0x7d, 0x67, 0xb4, 0x62,
		0x76, 0x9a, 0x1e, 0x85, 0xad, 0x1d, 0x54, 0x76, 0x94, 0x2b, 0x3b, 0xf4, 0xb6, 0xdf, 0x12, 0x34,
		0x70, 0xc1, 0x19, 0xf5, 0xad, 0x30, 0xdc, 0x6a, 0xb6, 0x78, 0xab, 0x99, 0xd2, 0xc7, 0xee, 0x5d,
		0x53, 0xe9, 0xbf, 0x1a, 0xf1, 0xb3, 0xc1, 0x55, 0x66, 0xa6, 0x85, 0xa5, 0x92, 0x2f, 0x03, 0xd5,
		0x9f, 0xb8, 0xde, 0xc2, 0xbd, 0x7e, 0x6c, 0xae, 0x32, 0x7b, 0xc6, 0x76, 0x5c, 0x65, 0x96, 0x86,
		0x99, 0xb8, 0xca, 0x6c, 0x85, 0xa8, 0xc5, 0x55, 0x66, 0x59, 0xd4, 0xc8, 0xb8, 0xca, 0x2c, 0xf3,
		0x32, 0x18, 0x57, 0x99, 0x15, 0xa2, 0x88, 0xc1, 0x55, 0x66, 0xab, 0xcd, 0x0f, 0xb8, 0xca, 0x0c,
		0xc4, 0x86, 0x23, 0xc1, 0x61, 0x4c, 0x74, 0xb8, 0x12, 0x1e, 0xf6, 0xc4, 0x87, 0x3d, 0x01, 0xe2,
		0x4d, 0x84, 0x78, 0x10, 0x22, 0x26, 0xc4, 0x88, 0x1d, 0x41, 0x4a, 0x0c, 0xe6, 0xd3, 0xfa, 0x79,
		0x31, 0xd7, 0x70, 0xe9, 0x00, 0xbd, 0x44, 0xa0, 0x20, 0xad, 0x04, 0x42, 0x65, 0x30, 0xb1, 0xe2,
		0x4e, 0xb0, 0x8c, 0x21, 0x5a, 0xc6, 0x10, 0x2e, 0x33, 0x88, 0x17, 0x2f, 0x02, 0xc6, 0x8c, 0x88,
		0x25, 0x10, 0xe1, 0x2f, 0xad, 0xa4, 0xa4, 0x94, 0x03, 0x6f, 0xe4, 0xf2, 0xd6, 0x57, 0xda, 0x63,
		0x68, 0x7a, 0x53, 0xea, 0x61, 0x4c, 0x8c, 0x21, 0xb0, 0x94, 0xf1, 0x93, 0x37, 0x4a, 0x60, 0xa9,
		0x06, 0xd1, 0x15, 0x62, 0x91, 0x15, 0x02, 0x4b, 0x04, 0x5c, 0xdc, 0x28, 0x81, 0x25, 0xb8, 0x38,
		0x5c, 0x1c, 0xd5, 0x01, 0x63, 0xab, 0xa1, 0xab, 0x54, 0x64, 0x4b, 0xa1, 0xab, 0xb4, 0x5a, 0xbb,
		0x8d, 0x3f, 0x4c, 0xbe, 0x7c, 0x1c, 0x15, 0xba, 0x4a, 0xc5, 0xb1, 0x10, 0xba, 0x4a, 0xe9, 0xdb,
		0x0c, 0x5d, 0xa5, 0x55, 0xd2, 0xe3, 0x34, 0x75, 0x95, 0x76, 0xa1, 0xab, 0x94, 0xaf, 0xdd, 0xd0,
		0x55, 0xa2, 0x40, 0xcd, 0xd2, 0xd6, 0x55, 0xda, 0x85, 0xae, 0x12, 0xac, 0x5c, 0x28, 0x50, 0xa1,
		0xab, 0x54, 0xf8, 0x74, 0xfd, 0x1a, 0x81, 0x98, 0xb6, 0xd5, 0xb1, 0x1b, 0x67, 0xf5, 0xa6, 0x73,
		0x50, 0x6f, 0x35, 0xfe, 0x63, 0x37, 0xba, 0x9f, 0xa0, 0xab, 0x94, 0x6d, 0x4e, 0x86, 0xae, 0x52,
		0xce, 0xe9, 0x38, 0x2d, 0xb7, 0x81, 0xae, 0xd2, 0x0a, 0x5e, 0x94, 0x99, 0xba, 0x4a, 0xbe, 0x0c,
		0xfa, 0x6a, 0xe2, 0x7a, 0x22, 0xe9, 0x07, 0xfd, 0x98, 0x0a, 0xcc, 0x2e, 0x74, 0x95, 0xf2, 0x09,
		0xd2, 0xd0, 0x55, 0xa2, 0x15, 0xb3, 0xd3, 0xf4, 0x28, 0x6c, 0xed, 0xa0, 0xb2, 0xa3, 0x5c, 0xd9,
		0xa1, 0xb7, 0xfd, 0x96, 0xa0, 0x01, 0x5d, 0x25, 0xea, 0x5b, 0x61, 0xd0, 0x55, 0x5a, 0xd0, 0x55,
		0x6a, 0xcf, 0x1e, 0xcf, 0x41, 0xf2, 0x74, 0xa0, 0xac, 0x64, 0x5a, 0x60, 0x62, 0x22, 0x3f, 0xc0,
		0x4a, 0x76, 0x00, 0xfa, 0x49, 0x29, 0x1b, 0x0a, 0xfd, 0x24, 0xd4, 0xc5, 0xcf, 0xd7, 0xc2, 0xd0,
		0x4f, 0xca, 0xbc, 0xdc, 0x85, 0x7e, 0x52, 0x21, 0x8a, 0x15, 0x36, 0xfa, 0x49, 0x21, 0xa7, 0xb1,
		0xb9, 0x24, 0x3d, 0xc4, 0x56, 0xf3, 0x52, 0x4f, 0xda, 0x84, 0x7a, 0x52, 0xe1, 0xe9, 0x0d, 0x63,
		0x9a, 0xc3, 0x95, 0xee, 0xb0, 0xa7, 0x3d, 0xec, 0xe9, 0x0f, 0x6f, 0x1a, 0xc4, 0x83, 0x0e, 0x31,
		0xa1, 0x45, 0x09, 0x14, 0xd8, 0x0d, 0xeb, 0x3f, 0x0c, 0xe9, 0xf7, 0xa5, 0x0e, 0x55, 0x78, 0xef,
		0xcb, 0x01, 0xa7, 0xa8, 0x3d, 0xef, 0xa9, 0x6c, 0x33, 0xb2, 0xd9, 0x9e, 0x3d, 0xea, 0x03, 0x37,
		0x90, 0x7c, 0x4f, 0x0c, 0xd8, 0x1d, 0xbb, 0xe3, 0x74, 0xce, 0x0e, 0xba, 0xcd, 0x73, 0xa7, 0xfb,
		0xc7, 0xa9, 0xc5, 0x2d, 0xed, 0xc4, 0x93, 0xaf, 0x01, 0x4b, 0x6d, 0x04, 0xa6, 0xf2, 0x43, 0x09,
		0x72, 0x4e, 0x1f, 0x9f, 0x54, 0xb2, 0x4f, 0xcf, 0x6b, 0x4e, 0xfb, 0xe4, 0xac, 0x6b, 0xb5, 0x1d,
		0xbb, 0xc1, 0x50, 0xff, 0x66, 0x0d, 0x08, 0xca, 0x1d, 0x41, 0x3b, 0x40, 0x10, 0x10, 0xf4, 0x7a,
		0x04, 0x9d, 0xb6, 0xad, 0x23, 0xfb, 0xb3, 0x73, 0xd4, 0xac, 0x7f, 0xec, 0x00, 0x3f, 0xc0, 0xcf,
		0x2b, 0xf1, 0xd3, 0x41, 0xf4, 0x01, 0x7a, 0x7e, 0x1e, 0x3d, 0x53, 0x1a, 0xdd, 0xe1, 0xc8, 0xa3,
		0x4d, 0xe0, 0xd3, 0xbc, 0x51, 0x65, 0x3c, 0xbf, 0x66, 0x1c, 0xa7, 0xcc, 0x47, 0xd6, 0x0e, 0x90,
		0x05, 0x64, 0x81, 0x8f, 0x03, 0x57, 0xe0, 0xe9, 0x40, 0x55, 0x51, 0x51, 0xd5, 0xad, 0x7f, 0x04,
		0x9c, 0x00, 0xa7, 0x14, 0xe1, 0xb4, 0x53, 0x2b, 0x41, 0xf1, 0x31, 0xd3, 0xaf, 0x4b, 0xf4, 0x6d,
		0xe0, 0xb0, 0x45, 0x88, 0xfb, 0x80, 0x0d, 0xe2, 0x3b, 0x80, 0xc3, 0x03, 0x38, 0x4f, 0x34, 0x3d,
		0xea, 0x8d, 0x7f, 0x3b, 0xcd, 0x7a, 0x0b, 0xdb, 0x0c, 0x80, 0xcf, 0x6b, 0xe1, 0x03, 0xe8, 0x00,
		0x3a, 0xaf, 0x82, 0xce, 0xb1, 0xdd, 0x72, 0x3e, 0xb6, 0x4f, 0xce, 0x4e, 0x01, 0x1f, 0xc0, 0xe7,
		0xa7, 0xe1, 0x73, 0x5e, 0xb7, 0x9b, 0xf5, 0x83, 0xa6, 0xf5, 0xa0, 0x46, 0x05, 0x18, 0x01, 0x46,
		0x3f, 0x0b, 0xa3, 0x04, 0x3c, 0xce, 0xe1, 0x49, 0xab, 0xd3, 0x6d, 0xd7, 0xed, 0x56, 0x17, 0xc7,
		0x75, 0x00, 0xa4, 0x9f, 0x06, 0x92, 0xf5, 0xb9, 0x6b, 0xb5, 0x1a, 0x56, 0x03, 0x79, 0x0d, 0x38,
		0x7a, 0x0b, 0x8e, 0xe2, 0xa3, 0x15, 0x76, 0xab, 0x6b, 0xb5, 0x8f, 0xea, 0x87, 0x96, 0x53, 0x6f,
		0x34, 0xda, 0x56, 0x07, 0x11, 0x09, 0x48, 0x7a, 0x1d, 0x92, 0x5a, 0x96, 0xfd, 0xf1, 0xd3, 0xc1,
		0x49, 0x1b, 0x40, 0x02, 0x90, 0xde, 0x00, 0xa4, 0x1d, 0x84, 0x24, 0x20, 0x29, 0x25, 0x24, 0x21,
		0x24, 0x01, 0x48, 0x6f, 0x05, 0x52, 0xd3, 0x6e, 0xfd, 0xee, 0xd4, 0xbb, 0xdd, 0xb6, 0x7d, 0x70,
		0xd6, 0xb5, 0x00, 0x21, 0x40, 0xe8, 0x75, 0x10, 0x6a, 0x58, 0xcd, 0xfa, 0x1f, 0x40, 0x0f, 0xd0,
		0xf3, 0x7a, 0xf4, 0x38, 0xe7, 0xf5, 0xb6, 0x5d, 0xef, 0xda, 0x27, 0x2d, 0xe0, 0x08, 0x38, 0x7a,
		0x15, 0x8e, 0xb0, 0x81, 0x06, 0xe8, 0xbc, 0x12, 0x3a, 0xcd, 0x13, 0x10, 0x68, 0x80, 0xe7, 0x95,
		0xe0, 0x39, 0x6d, 0x9f, 0x74, 0xad, 0xc3, 0x28, 0x75, 0x4d, 0xe7, 0x04, 0x81, 0x23, 0xe0, 0xe8,
		0x27, 0x71, 0x74, 0x5c, 0xff, 0x3c, 0xc5, 0x12, 0x76, 0x61, 0x81, 0xa2, 0x37, 0xa1, 0xa8, 0x6d,
		0x75, 0xac, 0xf6, 0x39, 0x76, 0xf4, 0x81, 0xa5, 0x37, 0x62, 0xc9, 0x6e, 0x3d, 0x44, 0x25, 0xd4,
		0xf7, 0x40, 0xd1, 0xab, 0x50, 0xb4, 0x7c, 0xd7, 0x1d, 0x50, 0x04, 0x14, 0xfd, 0x2c, 0x8a, 0xa0,
		0xc2, 0x01, 0x54, 0xad, 0x0e, 0x5d, 0xac, 0xcf, 0xee, 0x33, 0x0e, 0x52, 0x05, 0x80, 0x15, 0x20,
		0x05, 0x48, 0xa5, 0x0a, 0x29, 0xc6, 0x67, 0x22, 0x01, 0x2b, 0xb2, 0xb0, 0x32, 0x61, 0x06, 0x00,
		0xf0, 0xa2, 0x0a, 0x2f, 0x43, 0x66, 0x03, 0x00, 0x30, 0xaa, 0x00, 0x33, 0x63, 0x66, 0x00, 0xf8,
		0xa2, 0x8a, 0x2f, 0x53, 0x66, 0x09, 0x80, 0x30, 0xd2, 0x08, 0xe3, 0x7f, 0xa0, 0x17, 0x00, 0x23,
		0x0c, 0xb0, 0x1d, 0x84, 0x30, 0x20, 0x6c, 0xc5, 0x08, 0x43, 0x08, 0x03, 0xc0, 0x56, 0x05, 0x30,
		0xf6, 0xb3, 0x0a, 0x80, 0x16, 0x69, 0x68, 0x31, 0x3d, 0xe3, 0x00, 0x54, 0xd1, 0x47, 0x15, 0xe7,
		0xd9, 0x06, 0xe0, 0x8b, 0x34, 0xbe, 0xb0, 0xc1, 0x08, 0x48, 0xa5, 0x0c, 0x29, 0x9e, 0xb3, 0x10,
		0x00, 0x15, 0x69, 0x50, 0xb1, 0x9f, 0x91, 0x00, 0xbe, 0xa8, 0xe2, 0xcb, 0x84, 0xd9, 0x09, 0xa0,
		0x8b, 0x32, 0xba, 0xcc, 0x98, 0xa9, 0x00, 0xc6, 0xc8, 0x62, 0xcc, 0x80, 0x59, 0x0b, 0xa0, 0x8b,
		0x2a, 0xba, 0x4c, 0x98, 0xc1, 0x00, 0xba, 0xa8, 0xa2, 0xab, 0x6b, 0x39, 0x0d, 0xeb, 0xa8, 0x7e,
		0xd6, 0xec, 0x3a, 0xc7, 0x56, 0xb7, 0x6d, 0x1f, 0x02, 0x5c, 0x00, 0x57, 0x5a, 0xe0, 0x3a, 0x6b,
		0x25, 0x47, 0x06, 0xad, 0x86, 0xd3, 0xec, 0xe0, 0x58, 0x17, 0xc0, 0x95, 0x22, 0xb8, 0xa6, 0xbc,
		0xde, 0x6a, 0x20, 0x33, 0x02, 0x5f, 0x2b, 0xc0, 0x57, 0xd7, 0x6e, 0xda, 0xff, 0x35, 0x04, 0x5d,
		0xb8, 0x39, 0x0e, 0x5e, 0x6c, 0x92, 0xf7, 0x9a, 0xcc, 0x67, 0x01, 0x22, 0xf0, 0x56, 0x80, 0x08,
		0xfc, 0x14, 0x38, 0x02, 0x8e, 0x0c, 0xe1, 0xa1, 0x40, 0x51, 0xd6, 0x28, 0x6a, 0x9f, 0x9c, 0x75,
		0xad, 0xb6, 0x73, 0x58, 0x3f, 0x4d, 0x54, 0x58, 0xda, 0x4e, 0xbd, 0xf9, 0xf1, 0xa4, 0x6d, 0x77,
		0x3f, 0x1d, 0x03, 0x41, 0x40, 0xd0, 0xab, 0x10, 0xf4, 0xf0, 0x27, 0x40, 0x08, 0x10, 0x7a, 0x05,
		0x84, 0x20, 0x05, 0x05, 0x5c, 0x21, 0xc9, 0x99, 0x17, 0xa9, 0x8a, 0x80, 0x2c, 0xce, 0xc9, 0x2f,
		0x81, 0x16, 0x3a, 0xc1, 0x78, 0xce, 0x8c, 0x9f, 0x2f, 0x8f, 0xe7, 0x4a, 0xdf, 0x4a, 0xda, 0x16,
		0x12, 0x4f, 0x80, 0xa5, 0xba, 0xd6, 0xa3, 0xd0, 0x0d, 0xd5, 0x48, 0x97, 0xf6, 0x19, 0xa4, 0xbc,
		0x52, 0xd0, 0xbb, 0x96, 0x37, 0xee, 0xd8, 0x0d, 0xaf, 0xa3, 0xe4, 0xb6, 0x31, 0x1a, 0x4b, 0xdd,
		0x1b, 0xe9, 0x81, 0x1a, 0x96, 0xb5, 0x0c, 0xbf, 0x8c, 0xfc, 0xbf, 0xca, 0x4a, 0x07, 0xa1, 0xab,
		0x7b, 0x72, 0xe3, 0xe9, 0x07, 0xc1, 0xd2, 0x27, 0x1b, 0x63, 0x7f, 0x14, 0x8e, 0x7a, 0x23, 0x2f,
		0x48, 0x7e, 0xb7, 0xa1, 0x02, 0x15, 0x6c, 0x78, 0xf2, 0x56, 0x7a, 0xb3, 0x5f, 0x36, 0x3c, 0xa5,
		0xff, 0x2a, 0x07, 0xa1, 0x1b, 0xca, 0x72, 0xdf, 0x0d, 0xdd, 0x2b, 0x37, 0x90, 0x1b, 0x5e, 0x30,
		0xde, 0x08, 0xbd, 0xdb, 0x20, 0xfa, 0x4f, 0xfc, 0x57, 0xca, 0x5a, 0xaa, 0xe1, 0xf5, 0xd5, 0xc8,
		0x2f, 0xbb, 0x61, 0xe8, 0xab, 0xab, 0x49, 0x18, 0x19, 0x30, 0xfd, 0x28, 0x48, 0x7e, 0xb7, 0xf1,
		0x60, 0x4b, 0x62, 0x43, 0x30, 0xb9, 0x8a, 0xff, 0xa5, 0xe9, 0xaf, 0x1b, 0xf1, 0x0f, 0xa2, 0x9d,
		0x95, 0xe9, 0x7a, 0x1c, 0x61, 0x6f, 0x2b, 0x45, 0xf0, 0x91, 0x03, 0x77, 0xe2, 0x85, 0xe5, 0x1b,
		0x19, 0xfa, 0xaa, 0x47, 0xde, 0xe1, 0x12, 0x0e, 0xb9, 0x6c, 0x3a, 0xf1, 0xa8, 0xf6, 0xbb, 0xd2,
		0xfd, 0xd2, 0xbe, 0xa8, 0x10, 0x37, 0xf3, 0x30, 0x8e, 0x5c, 0xa5, 0x7d, 0xb1, 0x49, 0xdc, 0xd0,
		0x53, 0x5f, 0x0e, 0xd4, 0x1d, 0x8f, 0x0c, 0x31, 0x07, 0xed, 0xa8, 0x57, 0x8e, 0x02, 0x33, 0x83,
		0xde, 0x4c, 0xa9, 0x33, 0x9a, 0xf8, 0x3d, 0xc9, 0xe2, 0xf1, 0x4e, 0xdd, 0x4b, 0xde, 0x7f, 0x19,
		0xf9, 0x91, 0x87, 0x95, 0xc6, 0x53, 0x64, 0xf0, 0x28, 0xf3, 0x4b, 0x9f, 0xdc, 0xa0, 0xee, 0x0f,
		0x27, 0x37, 0x52, 0x87, 0xa5, 0x7d, 0x11, 0xfa, 0x13, 0xc9, 0xc4, 0xf0, 0x05, 0xab, 0x13, 0x60,
		0x83, 0x99, 0x1b, 0xcd, 0xcc, 0x1b, 0xca, 0x67, 0x42, 0xc9, 0x63, 0xc6, 0xca, 0x26, 0x78, 0xcd,
		0xf3, 0xc3, 0xd4, 0x6c, 0x26, 0xfe, 0xcf, 0x83, 0xd0, 0xb0, 0x23, 0x36, 0x1c, 0x09, 0x0e, 0x63,
		0xa2, 0xc3, 0x95, 0xf0, 0xb0, 0x27, 0x3e, 0xec, 0x09, 0x10, 0x6f, 0x22, 0xc4, 0x83, 0x10, 0x31,
		0x21, 0x46, 0xec, 0x08, 0x52, 0x62, 0x30, 0x93, 0xb6, 0xcf, 0x8b, 0x89, 0x86, 0x45, 0xef, 0xe7,
		0x25, 0xea, 0xb4, 0xc9, 0xcc, 0x6c, 0x6e, 0x14, 0x8a, 0x33, 0x95, 0x32, 0x80, 0x52, 0x71, 0xa7,
		0x56, 0xc6, 0x50, 0x2c, 0x63, 0xa8, 0x96, 0x19, 0x94, 0x8b, 0x17, 0xf5, 0x62, 0x46, 0xc1, 0x12,
		0x88, 0x74, 0xef, 0xc7, 0x92, 0x77, 0xc4, 0x9f, 0x28, 0x1d, 0x6e, 0x55, 0x39, 0x06, 0xfc, 0x19,
		0xbf, 0xd9, 0x65, 0x68, 0x7a, 0xdb, 0xd5, 0x43, 0xc9, 0xf6, 0xf8, 0x29, 0xdf, 0x03, 0x82, 0xa5,
		0x63, 0xa5, 0xd9, 0x32, 0x84, 0x64, 0x11, 0xf1, 0xe9, 0x65, 0x7e, 0x04, 0x79, 0x69, 0x1d, 0x47,
		0xbe, 0xdb, 0x0b, 0xd5, 0x48, 0x37, 0xd4, 0x50, 0x85, 0x81, 0x01, 0x0b, 0x6a, 0xc9, 0xa1, 0x1b,
		0xaa, 0xdb, 0xe8, 0xdd, 0x0c, 0x5c, 0x2f, 0x90, 0x38, 0xbd, 0x9c, 0x87, 0x8b, 0xbb, 0x77, 0xe6,
		0xb8, 0x78, 0xad, 0xba, 0x57, 0xdb, 0xdb, 0xd9, 0xad, 0xee, 0x6d, 0xc3, 0xd7, 0xe1, 0xeb, 0x28,
		0x10, 0x18, 0x5b, 0x7d, 0x89, 0x42, 0x6c, 0x85, 0xee, 0x28, 0xef, 0x42, 0xdf, 0x2d, 0x4f, 0x74,
		0x10, 0xba, 0x57, 0x1e, 0xd3, 0x92, 0xcc, 0x97, 0x03, 0xe9, 0x4b, 0xdd, 0x43, 0x65, 0x90, 0x63,
		0x3d, 0xdc, 0x3e, 0x3a, 0xdc, 0xde, 0xda, 0xdc, 0xde, 0x17, 0x76, 0xa7, 0x6c, 0x77, 0x84, 0x75,
		0x17, 0x4a, 0x1d, 0xa8, 0x91, 0x0e, 0xc4, 0x60, 0xe4, 0x8b, 0xae, 0xef, 0x0e, 0x06, 0xaa, 0x27,
		0x2c, 0x3d, 0x54, 0x5a, 0x4a, 0x5f, 0xe9, 0xe1, 0xfa, 0x85, 0x0e, 0x26, 0x57, 0xe5, 0x6e, 0xf3,
		0x5c, 0x54, 0x3e, 0xec, 0x8b, 0xe8, 0xd7, 0x6a, 0x75, 0xad, 0xba, 0xb5, 0x56, 0xa9, 0x55, 0xd6,
		0xaa, 0xd1, 0x6f, 0xab, 0x5b, 0xeb, 0x25, 0xc6, 0x84, 0x8a, 0x79, 0x63, 0xf5, 0xa1, 0x5f, 0xf0,
		0xd0, 0x60, 0x7d, 0xf0, 0x34, 0xe6, 0x2c, 0xc4, 0x94, 0x5e, 0x6b, 0xb2, 0xa0, 0xc5, 0x9e, 0xeb,
		0x8a, 0x5c, 0x11, 0x4c, 0x0d, 0x56, 0x9b, 0xc4, 0xd4, 0x70, 0x0a, 0xa4, 0x88, 0xcc, 0x97, 0xdb,
		0x00, 0x5b, 0x62, 0xb7, 0xf1, 0x83, 0x6c, 0x4b, 0x43, 0x43, 0x1c, 0x46, 0xdb, 0xf8, 0xf8, 0x28,
		0x0e, 0xd7, 0x17, 0xac, 0x4e, 0x2e, 0x7d, 0xb9, 0x96, 0x9a, 0x4d, 0x49, 0xcc, 0xf0, 0x1c, 0xf5,
		0xfa, 0xfa, 0x34, 0x42, 0x6d, 0x84, 0xf7, 0x63, 0x29, 0x7e, 0x13, 0xef, 0x66, 0x87, 0x1d, 0xca,
		0x5e, 0xd0, 0xbf, 0x2a, 0x47, 0x1f, 0x06, 0xfb, 0xdf, 0x15, 0x69, 0x7d, 0x87, 0x63, 0xd8, 0x99,
		0x96, 0xb0, 0xb1, 0x53, 0xe0, 0x10, 0x76, 0x7e, 0xd5, 0x69, 0x4a, 0x5e, 0xc3, 0x87, 0xbd, 0x33,
		0xf2, 0xef, 0x86, 0x0c, 0x7a, 0xbe, 0x1a, 0xb3, 0x23, 0xc7, 0x8f, 0xc2, 0xf2, 0x89, 0xf6, 0xee,
		0x85, 0xd2, 0x3d, 0x6f, 0xd2, 0x97, 0x22, 0xbc, 0x96, 0x62, 0xc6, 0x2a, 0x45, 0x38, 0xeb, 0x7c,
		0xc8, 0x87, 0xce, 0x87, 0x98, 0x32, 0xcd, 0x8b, 0x88, 0x4a, 0x87, 0xae, 0xd2, 0xd2, 0x17, 0x51,
		0x80, 0x88, 0xff, 0xda, 0xbc, 0x25, 0x12, 0xe3, 0x54, 0x05, 0xa2, 0xf2, 0x81, 0x5b, 0x3b, 0x92,
		0x73, 0x0b, 0x72, 0x31, 0x66, 0xf7, 0x17, 0x60, 0xc9, 0xf0, 0xd4, 0x92, 0x09, 0xcd, 0xc6, 0x47,
		0x21, 0x7c, 0x95, 0x1e, 0x86, 0x1e, 0x52, 0x91, 0x7b, 0x48, 0xe4, 0xad, 0xbc, 0x44, 0x15, 0x5d,
		0x9c, 0xde, 0x5b, 0x01, 0x7b, 0x6e, 0x1c, 0xd4, 0x4f, 0x82, 0xd0, 0x9f, 0xf4, 0x42, 0x3d, 0xa3,
		0x7b, 0xad, 0xe9, 0x63, 0xb6, 0x67, 0x2b, 0x74, 0x4e, 0x67, 0xcf, 0xd6, 0xb1, 0x03, 0x15, 0x38,
		0xcd, 0xe8, 0xa1, 0x3a, 0xcd, 0x60, 0xec, 0x74, 0xbd, 0xdb, 0xf8, 0xa3, 0xd6, 0xec, 0xe9, 0xd4,
		0xe7, 0x4f, 0xce, 0x99, 0x7f, 0xe2, 0x24, 0xff, 0x46, 0x27, 0x7e, 0x3a, 0x4e, 0x57, 0x36, 0xa6,
		0x0f, 0xe7, 0x78, 0xfa, 0x6c, 0x20, 0xb2, 0x65, 0x5a, 0x54, 0x2a, 0x85, 0x1c, 0x06, 0x11, 0x1e,
		0x74, 0xb5, 0x22, 0x6b, 0x79, 0x48, 0x69, 0x6d, 0x42, 0x4a, 0x2b, 0x1d, 0x43, 0x21, 0xa5, 0x85,
		0x12, 0xf9, 0xf9, 0xb2, 0x18, 0x52, 0x5a, 0x99, 0x57, 0xbe, 0x90, 0xd2, 0x2a, 0x44, 0x9d, 0xc2,
		0x66, 0x3c, 0x31, 0x89, 0xb8, 0x9e, 0x74, 0x07, 0xbe, 0x1c, 0x70, 0x88, 0xb8, 0x73, 0x69, 0x2a,
		0x06, 0x03, 0x88, 0xa5, 0xd3, 0x59, 0xe9, 0xf7, 0x68, 0xd3, 0x02, 0x75, 0x80, 0x79, 0x75, 0xc0,
		0x24, 0x2a, 0xec, 0x83, 0xd0, 0x77, 0x95, 0x96, 0xfd, 0xb2, 0x17, 0x8c, 0xf9, 0x14, 0x05, 0xcb,
		0xa6, 0x43, 0x6c, 0x17, 0x15, 0x02, 0x2a, 0x04, 0x54, 0x08, 0xa8, 0x10, 0x50, 0x21, 0xa0, 0x42,
		0x58, 0xc9, 0x2b, 0x87, 0xd8, 0xee, 0x6a, 0xf3, 0x03, 0xc4, 0x76, 0x41, 0x6c, 0x38, 0x12, 0x1c,
		0xc6, 0x44, 0x87, 0x2b, 0xe1, 0x61, 0x4f, 0x7c, 0xd8, 0x13, 0x20, 0xde, 0x44, 0x88, 0x07, 0x21,
		0x62, 0x42, 0x8c, 0xd8, 0x11, 0xa4, 0xc4, 0xe0, 0xde, 0x68, 0x12, 0x03, 0x97, 0xe9, 0xa9, 0xd7,
		0xa9, 0xf9, 0x90, 0xda, 0x05, 0x81, 0x32, 0x8b, 0x48, 0x19, 0x40, 0xa8, 0xb8, 0x13, 0x2b, 0x63,
		0x08, 0x96, 0x31, 0x44, 0xcb, 0x0c, 0xc2, 0xc5, 0x8b, 0x78, 0x31, 0x23, 0x60, 0x09, 0x44, 0xcc,
		0x90, 0xda, 0xad, 0xec, 0x30, 0x96, 0xda, 0xdd, 0x81, 0xd4, 0x6e, 0xc6, 0x5f, 0x90, 0xda, 0xcd,
		0x77, 0x11, 0x90, 0xda, 0xa5, 0x1a, 0x53, 0x21, 0xb5, 0x4b, 0xc0, 0xc5, 0x4d, 0x92, 0xda, 0xdd,
		0xd9, 0xde, 0xde, 0x82, 0xca, 0x2e, 0xdc, 0x1c, 0xb5, 0x01, 0x67, 0xab, 0xa1, 0xb2, 0xbb, 0x4a,
		0x77, 0x84, 0xca, 0x2e, 0x8a, 0x82, 0x54, 0x4a, 0xe1, 0x58, 0xda, 0x73, 0x6b, 0x73, 0x5f, 0xd4,
		0x45, 0x53, 0xe9, 0xbf, 0xca, 0x51, 0x71, 0xff, 0x30, 0x46, 0x3f, 0x12, 0x87, 0x23, 0x7d, 0x2b,
		0xef, 0xe3, 0xe1, 0xfa, 0xd6, 0xe4, 0xe6, 0x4a, 0xfa, 0x62, 0x34, 0xb8, 0xd0, 0xcf, 0x48, 0x7e,
		0x8a, 0xa6, 0x7b, 0x25, 0x3d, 0xd1, 0xf9, 0xa2, 0xc2, 0xde, 0xb5, 0xec, 0x8b, 0x53, 0x37, 0xbc,
		0x0e, 0x44, 0x47, 0x0d, 0xb5, 0xeb, 0x79, 0xb2, 0x7f, 0xa1, 0xbf, 0xa8, 0xf0, 0x5a, 0xfc, 0x57,
		0xfa, 0x23, 0xd1, 0x96, 0x81, 0xf4, 0x6f, 0x65, 0x5f, 0x1c, 0xb8, 0xba, 0xff, 0x45, 0xf5, 0xc3,
		0x6b, 0xe1, 0xf6, 0xfc, 0x51, 0x10, 0x08, 0x37, 0x36, 0x62, 0x7d, 0x6e, 0xc0, 0x85, 0xae, 0x6e,
		0xbd, 0xa0, 0x1e, 0x0a, 0x1d, 0x5f, 0x02, 0xcd, 0x08, 0xe8, 0xf8, 0xd2, 0x5f, 0xd0, 0x92, 0x8e,
		0x2f, 0x47, 0x67, 0x07, 0xdb, 0x84, 0xd5, 0x26, 0xb1, 0x4d, 0x68, 0x8d, 0xad, 0x20, 0xd2, 0x85,
		0x1c, 0xf7, 0x25, 0x38, 0x4d, 0xe2, 0x2f, 0x13, 0x00, 0x9c, 0xb6, 0xc8, 0xd4, 0x70, 0x9c, 0xb6,
		0x00, 0x6f, 0x4f, 0x87, 0xaf, 0xe3, 0xb4, 0x05, 0x39, 0x72, 0x8e, 0xd3, 0x16, 0x60, 0x34, 0xcf,
		0x40, 0x84, 0xff, 0x69, 0x0b, 0xd5, 0x97, 0x3a, 0x54, 0xe1, 0x3d, 0x0f, 0x35, 0x81, 0x97, 0x48,
		0x4e, 0x85, 0xe1, 0x96, 0x54, 0xc9, 0x9e, 0x3d, 0xfa, 0x03, 0x37, 0x60, 0x9c, 0xb7, 0xe6, 0x40,
		0xb2, 0x3b, 0x76, 0xc7, 0xe9, 0x9c, 0x1d, 0x74, 0x9b, 0xe7, 0x4e, 0xf7, 0x8f, 0x53, 0x8b, 0x6b,
		0xfa, 0x8a, 0x37, 0x3a, 0x03, 0xb6, 0x5d, 0x6f, 0xc1, 0xba, 0xf3, 0xfd, 0x18, 0x51, 0xa7, 0x8f,
		0x65, 0xc1, 0xed, 0xd3, 0xf3, 0x9a, 0xd3, 0x3e, 0x39, 0xeb, 0x5a, 0x6d, 0xc7, 0x6e, 0x94, 0x70,
		0x96, 0x01, 0xc8, 0x4a, 0x0f, 0x59, 0x3b, 0x40, 0x16, 0x90, 0x95, 0x3e, 0xb2, 0x4e, 0xdb, 0xd6,
		0x91, 0xfd, 0xd9, 0x39, 0x6a, 0xd6, 0x3f, 0x76, 0x80, 0x2b, 0xe0, 0x2a, 0x65, 0x5c, 0x75, 0x10,
		0xad, 0x80, 0xaa, 0xf4, 0x50, 0x35, 0xa5, 0xef, 0x1d, 0xce, 0xfc, 0xdd, 0x24, 0x1e, 0x6f, 0x06,
		0xda, 0x0a, 0xc3, 0xeb, 0x0d, 0x88, 0x6b, 0xc5, 0x41, 0xdc, 0x0e, 0x10, 0x07, 0xc4, 0xa1, 0x0e,
		0x00, 0xde, 0x04, 0xea, 0x03, 0xa0, 0x0d, 0x68, 0x7b, 0x13, 0xda, 0xba, 0xf5, 0x8f, 0x80, 0x19,
		0x60, 0x96, 0x01, 0xcc, 0x76, 0x6a, 0x06, 0x00, 0x8d, 0xf5, 0x0a, 0x2e, 0xd1, 0x6f, 0x82, 0x63,
		0x23, 0x6f, 0x00, 0x4e, 0xc8, 0x0f, 0x00, 0x94, 0x69, 0x80, 0x7a, 0x72, 0x11, 0x79, 0xbd, 0xf1,
		0x6f, 0xa7, 0x59, 0x6f, 0x61, 0x9b, 0x05, 0xb0, 0x4a, 0x1b, 0x56, 0x80, 0x14, 0x20, 0x95, 0x2a,
		0xa4, 0x8e, 0xed, 0x96, 0xf3, 0xb1, 0x7d, 0x72, 0x76, 0x0a, 0x58, 0x01, 0x56, 0xa9, 0xc1, 0xea,
		0xbc, 0x6e, 0x37, 0xeb, 0x07, 0x4d, 0xcb, 0x39, 0xa8, 0xb7, 0x1a, 0xff, 0xb1, 0x1b, 0xdd, 0x4f,
		0x80, 0x17, 0xe0, 0x95, 0x16, 0xbc, 0x12, 0x50, 0x39, 0x87, 0x27, 0xad, 0x4e, 0xb7, 0x5d, 0xb7,
		0x5b, 0x5d, 0x1c, 0x93, 0x02, 0xc0, 0x52, 0x03, 0x98, 0xf5, 0xb9, 0x6b, 0xb5, 0x1a, 0x56, 0x03,
		0xf9, 0x11, 0xf8, 0x5a, 0x05, 0xbe, 0xe2, 0xa3, 0x2b, 0x76, 0xab, 0x6b, 0xb5, 0x8f, 0xea, 0x87,
		0x96, 0x53, 0x6f, 0x34, 0xda, 0x56, 0x07, 0x11, 0x0c, 0x08, 0x4b, 0x17, 0x61, 0x2d, 0xcb, 0xfe,
		0xf8, 0xe9, 0xe0, 0xa4, 0x0d, 0x80, 0x01, 0x60, 0x2b, 0x00, 0xd8, 0x0e, 0x42, 0x18, 0x10, 0xb6,
		0x62, 0x84, 0x21, 0x84, 0x01, 0x60, 0xab, 0x02, 0x58, 0xd3, 0x6e, 0xfd, 0xee, 0xd4, 0xbb, 0xdd,
		0xb6, 0x7d, 0x70, 0xd6, 0xb5, 0x00, 0x2d, 0x40, 0x2b, 0x5d, 0x68, 0x35, 0xac, 0x66, 0xfd, 0x0f,
		0xa0, 0x0a, 0xa8, 0x4a, 0x1f, 0x55, 0xce, 0x79, 0xbd, 0x6d, 0xd7, 0xbb, 0xf6, 0x49, 0x0b, 0xf8,
		0x02, 0xbe, 0x52, 0xc5, 0x17, 0x36, 0x18, 0x01, 0xa9, 0x94, 0x21, 0xd5, 0x3c, 0x01, 0x71, 0x07,
		0xa8, 0x52, 0x06, 0xd5, 0x69, 0xfb, 0xa4, 0x6b, 0x1d, 0x46, 0x29, 0x70, 0x3a, 0x77, 0x0a, 0x7c,
		0x01, 0x5f, 0x29, 0xe1, 0xeb, 0xb8, 0xfe, 0x79, 0x8a, 0x31, 0xec, 0x5e, 0x03, 0x5d, 0x2b, 0x41,
		0x57, 0xdb, 0xea, 0x58, 0xed, 0x73, 0x9c, 0x90, 0x00, 0xc6, 0x56, 0x84, 0x31, 0xbb, 0xf5, 0x10,
		0xc5, 0xd0, 0x87, 0x00, 0xba, 0x52, 0x45, 0x57, 0xdb, 0xea, 0xd8, 0x8d, 0xb3, 0x7a, 0x13, 0xb1,
		0x0b, 0xe8, 0x4a, 0x1f, 0x5d, 0x50, 0x93, 0x01, 0xda, 0xb2, 0x47, 0x9d, 0x11, 0x33, 0x1b, 0x06,
		0x04, 0xb5, 0x02, 0xc1, 0x0d, 0x50, 0x03, 0xd4, 0x32, 0x81, 0x9a, 0x01, 0x67, 0x58, 0x01, 0x37,
		0x36, 0x70, 0x33, 0x69, 0xf6, 0x03, 0xb0, 0xe3, 0x02, 0x3b, 0xc3, 0x66, 0x42, 0x00, 0x3c, 0x2e,
		0xc0, 0x33, 0x6b, 0x56, 0x04, 0xb8, 0xe3, 0x82, 0x3b, 0xd3, 0x66, 0x48, 0x80, 0x3c, 0x56, 0xc8,
		0x33, 0xe7, 0x60, 0x36, 0x80, 0xc7, 0x08, 0x78, 0x3b, 0x08, 0x79, 0x40, 0x5e, 0x4e, 0xc8, 0x43,
		0xc8, 0x03, 0xf0, 0xb2, 0x06, 0x9e, 0x31, 0x33, 0x2a, 0x80, 0x1c, 0x2b, 0xc8, 0x31, 0x3f, 0x33,
		0x02, 0xb4, 0xf1, 0x43, 0x9b, 0x09, 0x33, 0x2d, 0xc0, 0x1d, 0x2b, 0xdc, 0x61, 0x03, 0x16, 0x50,
		0xcb, 0x08, 0x6a, 0xbc, 0x67, 0x60, 0x00, 0x36, 0x56, 0x60, 0x33, 0x66, 0x36, 0x06, 0xb8, 0xe3,
		0x82, 0x3b, 0x93, 0x66, 0x66, 0x80, 0x3a, 0x4e, 0xa8, 0x33, 0x6b, 0x96, 0x06, 0xd8, 0x63, 0x83,
		0x3d, 0x83, 0x66, 0x6c, 0x80, 0x3a, 0x2e, 0xa8, 0x33, 0x69, 0xf6, 0x06, 0xa8, 0xe3, 0x82, 0xba,
		0xae, 0xe5, 0x34, 0xac, 0xa3, 0xfa, 0x59, 0xb3, 0xeb, 0x1c, 0x5b, 0xdd, 0xb6, 0x7d, 0x08, 0xd0,
		0x01, 0x74, 0xab, 0x06, 0xdd, 0x59, 0x2b, 0x39, 0xca, 0x69, 0x35, 0x9c, 0x66, 0x07, 0xc7, 0xea,
		0x00, 0xba, 0x0c, 0x40, 0x37, 0xad, 0x27, 0xac, 0x06, 0x32, 0x2c, 0x70, 0x97, 0x21, 0xee, 0xba,
		0x76, 0xd3, 0xfe, 0xaf, 0x61, 0xa8, 0xc3, 0x8d, 0x95, 0xf0, 0xf6, 0x22, 0x79, 0x79, 0x11, 0xf8,
		0x33, 0xc0, 0x05, 0x9e, 0x0c, 0x70, 0x15, 0x08, 0x5c, 0x26, 0xf1, 0x61, 0xe0, 0x0b, 0xbc, 0x17,
		0xe8, 0x32, 0x17, 0x5d, 0xed, 0x93, 0xb3, 0xae, 0xd5, 0x76, 0x0e, 0xeb, 0xa7, 0x89, 0x9a, 0x50,
		0xdb, 0xa9, 0x37, 0x3f, 0x9e, 0xb4, 0xed, 0xee, 0xa7, 0x63, 0x20, 0x0b, 0xc8, 0x4a, 0x15, 0x59,
		0x0f, 0x7f, 0x02, 0xb4, 0x00, 0xad, 0x14, 0xa1, 0x05, 0x09, 0x34, 0xe0, 0x0d, 0xc9, 0xb2, 0xb8,
		0x91, 0xad, 0x48, 0x88, 0x33, 0x21, 0x89, 0x26, 0x90, 0x43, 0xc7, 0x1b, 0xcf, 0xdd, 0xe0, 0xe7,
		0xcd, 0xeb, 0x39, 0xf3, 0xb1, 0x96, 0x87, 0xa5, 0x4c, 0x12, 0x6a, 0xa9, 0xae, 0xf5, 0x28, 0x74,
		0x43, 0x35, 0xd2, 0xa5, 0x7d, 0x46, 0x29, 0xb4, 0x14, 0xf4, 0xae, 0xe5, 0x8d, 0x3b, 0x76, 0xc3,
		0xeb, 0x28, 0x59, 0x6e, 0x8c, 0xc6, 0x52, 0xf7, 0x46, 0x7a, 0xa0, 0x86, 0x65, 0x2d, 0xc3, 0x2f,
		0x23, 0xff, 0xaf, 0xb2, 0xd2, 0x41, 0xe8, 0xea, 0x9e, 0xdc, 0x78, 0xfa, 0x41, 0xb0, 0xf4, 0xc9,
		0xc6, 0xd8, 0x1f, 0x85, 0xa3, 0xde, 0xc8, 0x0b, 0x92, 0xdf, 0x6d, 0xa8, 0x40, 0x05, 0x1b, 0x9e,
		0xbc, 0x95, 0xde, 0xec, 0x97, 0x0d, 0x4f, 0xe9, 0xbf, 0xca, 0x41, 0xe8, 0x86, 0xb2, 0xdc, 0x77,
		0x43, 0xf7, 0xca, 0x0d, 0xe4, 0x86, 0x17, 0x8c, 0x37, 0x42, 0xef, 0x36, 0x88, 0xfe, 0x13, 0xff,
		0x95, 0xb2, 0x96, 0x6a, 0x78, 0x7d, 0x35, 0xf2, 0xcb, 0x6e, 0x18, 0xfa, 0xea, 0x6a, 0x12, 0x46,
		0x06, 0x4c, 0x3f, 0x0a, 0x92, 0xdf, 0x6d, 0x3c, 0xd8, 0x92, 0xd8, 0x10, 0x4c, 0xae, 0xe2, 0x7f,
		0x69, 0xfa, 0xeb, 0xc6, 0x24, 0x5a, 0x4f, 0x10, 0xfa, 0xae, 0xd2, 0xb2, 0x5f, 0x8e, 0x7e, 0x4e,
		0xfc, 0xa3, 0x79, 0xe4, 0x7d, 0xfa, 0x3e, 0x4a, 0xdb, 0x42, 0xe2, 0xd1, 0xa3, 0x24, 0xef, 0x42,
		0xdf, 0x2d, 0x4f, 0x22, 0xe8, 0x5e, 0x79, 0x92, 0x45, 0xe4, 0x28, 0x7d, 0xb9, 0x96, 0x9a, 0x4d,
		0x69, 0xcd, 0x28, 0x12, 0xcf, 0x0b, 0x96, 0xf5, 0xf5, 0x69, 0x84, 0xda, 0x08, 0xef, 0xc7, 0x52,
		0xfc, 0x26, 0xde, 0x8d, 0x7a, 0xe5, 0x38, 0x22, 0x7a, 0x41, 0xff, 0xaa, 0x1c, 0x7d, 0x18, 0xec,
		0x7f, 0x77, 0x3b, 0xf6, 0x1d, 0xa3, 0x16, 0x4e, 0xa9, 0x33, 0x9a, 0xf8, 0x3d, 0xc9, 0x2a, 0x6f,
		0xc6, 0x76, 0xff, 0x2e, 0xef, 0xbf, 0x8c, 0xfc, 0x7e, 0xf4, 0xd2, 0x62, 0xa7, 0xe0, 0x55, 0xfb,
		0x97, 0x3e, 0xb9, 0x41, 0xdd, 0x1f, 0x4e, 0x6e, 0xa4, 0x0e, 0x4b, 0xfb, 0x22, 0xf4, 0x27, 0x92,
		0xd9, 0x02, 0x16, 0xac, 0x4f, 0xcb, 0x6b, 0x7e, 0x41, 0xa3, 0x29, 0xfd, 0xf7, 0xd4, 0x90, 0x41,
		0xcf, 0x57, 0x63, 0x76, 0xe4, 0xf8, 0x51, 0x58, 0x3e, 0xd1, 0xde, 0xbd, 0x50, 0xba, 0xe7, 0x4d,
		0xfa, 0x52, 0x84, 0xd7, 0x52, 0x3c, 0x22, 0x96, 0xa2, 0xd9, 0x39, 0x15, 0xbd, 0x91, 0x0e, 0xa3,
		0x3f, 0xf9, 0x22, 0x0a, 0x07, 0xd1, 0x37, 0x5d, 0xe8, 0x60, 0x72, 0x55, 0xee, 0x36, 0xcf, 0x85,
		0x0a, 0x44, 0x8c, 0xcc, 0xea, 0xd6, 0x3a, 0xb7, 0x38, 0xc1, 0x34, 0x3c, 0x3f, 0x0d, 0xd1, 0xfd,
		0x05, 0x14, 0xf2, 0xeb, 0xd2, 0xb2, 0x8f, 0xd6, 0x4b, 0x11, 0x3b, 0x45, 0x87, 0x42, 0x87, 0xa8,
		0xc8, 0x1d, 0x22, 0xf2, 0x56, 0x5e, 0xa2, 0x46, 0x2e, 0x4e, 0x67, 0xad, 0x80, 0x1d, 0x35, 0x06,
		0xe9, 0xb4, 0x14, 0x84, 0xfe, 0xa4, 0x17, 0xea, 0x19, 0x99, 0x6b, 0x4d, 0x1f, 0xb3, 0x3d, 0x5b,
		0xa1, 0x73, 0x3a, 0x7b, 0xb6, 0x8e, 0x1d, 0xa8, 0xc0, 0x69, 0x46, 0x0f, 0xd5, 0x69, 0x06, 0x63,
		0xa7, 0xeb, 0xdd, 0xc6, 0x1f, 0xb5, 0x66, 0x4f, 0xa7, 0x3e, 0x7f, 0x72, 0xce, 0xfc, 0x13, 0x27,
		0xf9, 0x37, 0x3a, 0xf1, 0xd3, 0x71, 0xce, 0x16, 0x9f, 0x4e, 0x33, 0x18, 0xd3, 0x4e, 0x4e, 0x74,
		0x83, 0x27, 0xe1, 0xb0, 0x54, 0x9a, 0x68, 0x5f, 0x06, 0xd2, 0xbf, 0x95, 0xfd, 0xf2, 0x95, 0xab,
		0xfb, 0x5f, 0x54, 0x3f, 0x76, 0x76, 0xda, 0xc1, 0x29, 0xa9, 0x64, 0x9e, 0xb5, 0x9e, 0x78, 0x12,
		0xf8, 0x5d, 0xe9, 0x88, 0xc4, 0x57, 0x88, 0x9b, 0x79, 0x18, 0x07, 0xfa, 0xd2, 0xbe, 0xd8, 0x24,
		0x6e, 0xe8, 0xa9, 0x2f, 0x07, 0xea, 0x8e, 0x47, 0x42, 0x9d, 0xe3, 0x76, 0xd6, 0xd1, 0xe1, 0x90,
		0x6d, 0x98, 0x95, 0xcc, 0x8b, 0x65, 0xf2, 0x78, 0x8a, 0x0c, 0x26, 0xdb, 0xae, 0x5c, 0xab, 0xe2,
		0x47, 0x95, 0xf0, 0x1c, 0xd8, 0xd8, 0xec, 0x33, 0xba, 0x90, 0x69, 0x28, 0x9f, 0x49, 0x05, 0x23,
		0xc3, 0xc9, 0xb8, 0x3c, 0xf6, 0xd5, 0xc8, 0x57, 0xe1, 0x3d, 0x9f, 0x28, 0x36, 0x4f, 0x14, 0x4f,
		0xec, 0x67, 0x12, 0x11, 0x78, 0x50, 0x1c, 0x76, 0x54, 0x87, 0x23, 0xe5, 0x61, 0x4c, 0x7d, 0xb8,
		0x52, 0x20, 0xf6, 0x54, 0x88, 0x3d, 0x25, 0xe2, 0x4d, 0x8d, 0x78, 0x50, 0x24, 0x26, 0x54, 0x89,
		0x1d, 0x65, 0x4a, 0x0c, 0x66, 0x47, 0x9a, 0x96, 0x52, 0x0d, 0x33, 0xda, 0xf4, 0x94, 0x3e, 0x6d,
		0x32, 0x33, 0x9b, 0x1b, 0x8d, 0xe2, 0x4c, 0xa7, 0x0c, 0xa0, 0x55, 0xdc, 0xe9, 0x95, 0x31, 0x34,
		0xcb, 0x18, 0xba, 0x65, 0x06, 0xed, 0xe2, 0x45, 0xbf, 0x98, 0xd1, 0xb0, 0x04, 0x22, 0xdd, 0xfb,
		0xb1, 0xe4, 0x1d, 0xf1, 0x3d, 0xe9, 0x0e, 0x7c, 0x39, 0xe0, 0x18, 0xf1, 0xe7, 0xfd, 0xa1, 0x5d,
		0x86, 0xb6, 0x9f, 0xce, 0x4e, 0x43, 0x24, 0xa7, 0x74, 0x13, 0x96, 0x89, 0xa3, 0x5b, 0x45, 0x8f,
		0x2c, 0xa5, 0xe9, 0x3c, 0x16, 0xdb, 0x82, 0x69, 0x6a, 0x3e, 0xcf, 0x6a, 0xa9, 0x82, 0x6a, 0x09,
		0xd5, 0x12, 0xaa, 0x25, 0x54, 0x4b, 0xa8, 0x96, 0x50, 0x2d, 0x81, 0xd3, 0xa4, 0x0b, 0x11, 0x6e,
		0xcd, 0xeb, 0xc4, 0x70, 0x3e, 0x67, 0x1a, 0xbf, 0x9b, 0xb3, 0xb8, 0x1c, 0x70, 0xfc, 0x1e, 0x51,
		0xdb, 0x64, 0x6a, 0x3e, 0x57, 0xc2, 0x66, 0x02, 0x71, 0x33, 0x88, 0xc0, 0x99, 0x42, 0xe4, 0x8c,
		0x23, 0x74, 0xc6, 0x11, 0x3b, 0xb3, 0x08, 0x1e, 0x4f, 0xa2, 0xc7, 0x94, 0xf0, 0x25, 0xd0, 0x61,
		0xdb, 0x26, 0x5f, 0xca, 0x18, 0x4a, 0x4a, 0x39, 0xf0, 0x46, 0x6e, 0xb8, 0x55, 0xe5, 0x9c, 0x35,
		0x66, 0x24, 0x6a, 0x8f, 0xf1, 0x12, 0x9a, 0x52, 0x0f, 0x63, 0x42, 0xce, 0x5b, 0xd2, 0x96, 0xbf,
		0xb8, 0x68, 0xe9, 0x58, 0x69, 0xf6, 0xfc, 0x23, 0x59, 0x4c, 0xac, 0x94, 0x5c, 0xda, 0x17, 0xb5,
		0x35, 0x33, 0xd6, 0x73, 0xe4, 0xbb, 0xbd, 0x50, 0x8d, 0x74, 0x43, 0x0d, 0x55, 0x18, 0xf0, 0xad,
		0x3b, 0x96, 0x23, 0xb2, 0x1c, 0xba, 0xa1, 0xba, 0x8d, 0xde, 0xd5, 0xc0, 0xf5, 0x02, 0x09, 0xa5,
		0x64, 0x0a, 0xa1, 0xc0, 0xbd, 0x43, 0x28, 0x40, 0x28, 0x40, 0x28, 0x28, 0x62, 0x75, 0xc2, 0xdf,
		0x7a, 0x9e, 0xda, 0xdb, 0xfc, 0x9e, 0x37, 0xc3, 0x54, 0xc7, 0xf7, 0x20, 0xfb, 0x52, 0x0d, 0xcb,
		0xf4, 0x40, 0xfb, 0xd3, 0xe2, 0x15, 0x3b, 0x00, 0x39, 0x2d, 0x00, 0x3b, 0x00, 0xa4, 0x96, 0x82,
		0x1d, 0x00, 0xa2, 0x0b, 0xc2, 0x0e, 0x00, 0x58, 0x13, 0x98, 0xd3, 0x14, 0x3a, 0xe6, 0xec, 0x00,
		0x4c, 0x94, 0x0e, 0x3f, 0x18, 0xd0, 0xfb, 0xdf, 0x66, 0xbc, 0x84, 0xb6, 0xab, 0x87, 0x12, 0xad,
		0xff, 0xfc, 0x5f, 0x84, 0x91, 0xad, 0xff, 0x4d, 0xf4, 0xfb, 0x88, 0x87, 0x62, 0xb4, 0xfe, 0x09,
		0x86, 0x02, 0x13, 0x5b, 0xff, 0xbb, 0x08, 0x05, 0x08, 0x05, 0x28, 0x4b, 0x0a, 0x60, 0x3d, 0x5a,
		0xff, 0xb0, 0x98, 0x7d, 0x62, 0xe6, 0x7a, 0xe9, 0x62, 0x62, 0x7f, 0x01, 0xa4, 0xe2, 0x97, 0xa5,
		0xa6, 0x37, 0x1e, 0xcb, 0x33, 0x72, 0xba, 0x8e, 0x91, 0x9f, 0x57, 0x43, 0x8e, 0x2c, 0x4d, 0x7f,
		0xfd, 0x5d, 0xde, 0x33, 0xdc, 0x51, 0x2c, 0x35, 0x55, 0x10, 0xd6, 0xc3, 0x90, 0x99, 0x94, 0xda,
		0xb1, 0xd2, 0x96, 0x27, 0x6f, 0xa4, 0xe6, 0xc6, 0xe0, 0xa3, 0xda, 0x70, 0xc1, 0xf2, 0xca, 0x87,
		0x5a, 0x6d, 0x67, 0xb7, 0x56, 0xdb, 0xdc, 0xdd, 0xda, 0xdd, 0xdc, 0xdb, 0xde, 0xae, 0xec, 0x54,
		0x18, 0x35, 0x23, 0x4b, 0x27, 0x7e, 0x5f, 0xfa, 0xb2, 0x7f, 0x10, 0x21, 0x5f, 0x4f, 0x3c, 0x8f,
		0xa3, 0xe9, 0x67, 0x81, 0xf4, 0x59, 0x95, 0x4c, 0xb8, 0xf5, 0x1a, 0xc4, 0x6b, 0xd5, 0xc4, 0xab,
		0xc4, 0x4a, 0x22, 0x26, 0xa3, 0xdb, 0x7b, 0x3a, 0xd1, 0x23, 0x3a, 0x65, 0x25, 0x4e, 0x84, 0x3b,
		0xc2, 0x8d, 0x8e, 0xb5, 0x2c, 0xef, 0x08, 0xf7, 0xe5, 0x40, 0xfa, 0x52, 0xf7, 0x24, 0x2e, 0x0a,
		0x4f, 0xff, 0xe1, 0xce, 0xb7, 0xe6, 0xdb, 0x47, 0x87, 0xdb, 0x5b, 0x9b, 0xdb, 0xfb, 0xc2, 0xee,
		0x94, 0xed, 0x8e, 0xb0, 0xee, 0x42, 0xa9, 0x03, 0x35, 0xd2, 0x81, 0x18, 0x8c, 0x7c, 0xd1, 0xf5,
		0xdd, 0xc1, 0x40, 0xf5, 0x84, 0xa5, 0x87, 0x4a, 0x4b, 0xe9, 0x2b, 0x3d, 0x5c, 0x17, 0xc1, 0xe4,
		0xaa, 0x7c, 0xa1, 0xbb, 0xcd, 0x73, 0x51, 0xa9, 0xec, 0x8b, 0xe8, 0xd7, 0x6a, 0x75, 0xad, 0xba,
		0xb5, 0x56, 0xa9, 0x55, 0xd6, 0xaa, 0xd1, 0x6f, 0xab, 0x5b, 0xd0, 0x98, 0xcf, 0xa4, 0x8e, 0x9c,
		0x9f, 0xfd, 0x7a, 0xf0, 0x14, 0xc8, 0xcc, 0x67, 0xcc, 0x5d, 0x17, 0x8e, 0x77, 0xad, 0xc8, 0x95,
		0xd0, 0x26, 0x2a, 0x98, 0x95, 0x97, 0x0c, 0xee, 0x26, 0xfb, 0x72, 0x2d, 0x35, 0xd2, 0xf2, 0xea,
		0xd2, 0x72, 0xa2, 0x71, 0x1a, 0x5f, 0x4f, 0xfd, 0x9b, 0x78, 0x37, 0x3b, 0x3b, 0x5a, 0xf6, 0x82,
		0xfe, 0x55, 0x39, 0xfa, 0x30, 0xd8, 0xb7, 0x3b, 0x4e, 0xdb, 0xaa, 0x1f, 0x7e, 0xaa, 0x1f, 0xd8,
		0x4d, 0xbb, 0xfb, 0x87, 0x73, 0xd6, 0x6a, 0x5b, 0x1d, 0xab, 0x7d, 0x6e, 0x35, 0x9c, 0x83, 0x7a,
		0xab, 0xf1, 0x1f, 0xbb, 0xd1, 0xfd, 0xf4, 0x0e, 0x99, 0x38, 0xd3, 0x4c, 0x1c, 0xfb, 0x05, 0x92,
		0x70, 0x7e, 0x49, 0x38, 0x3d, 0xc7, 0x81, 0x4c, 0xef, 0x0a, 0x5e, 0x55, 0x43, 0x06, 0x3d, 0x5f,
		0x8d, 0x59, 0xee, 0xb6, 0x26, 0xc1, 0xf9, 0x44, 0x7b, 0xf7, 0x42, 0xe9, 0x9e, 0x37, 0xe9, 0x4b,
		0x11, 0x5e, 0x4b, 0xf1, 0xd0, 0x28, 0x13, 0x49, 0xa3, 0x4c, 0xf4, 0x46, 0x3a, 0x74, 0x95, 0x96,
		0xbe, 0x88, 0x82, 0xc2, 0x85, 0x8e, 0xbe, 0x31, 0xe2, 0x7b, 0x11, 0xcb, 0x8b, 0xc1, 0xa9, 0x02,
		0x51, 0xa9, 0xac, 0x73, 0x8b, 0x16, 0x8c, 0x47, 0x67, 0x16, 0x03, 0x75, 0x7f, 0x01, 0x88, 0x0c,
		0x27, 0x2b, 0x4d, 0x98, 0x93, 0x79, 0x14, 0xb7, 0xd3, 0xf5, 0x29, 0x1c, 0x04, 0x40, 0x85, 0x47,
		0xb9, 0xc2, 0x43, 0x2f, 0xfb, 0x2d, 0x61, 0x83, 0xd7, 0x7e, 0x61, 0x31, 0xf7, 0x09, 0x69, 0x87,
		0x60, 0xba, 0x21, 0x82, 0xb0, 0xf3, 0x95, 0x26, 0xa1, 0xf2, 0xd4, 0xff, 0x3d, 0x7a, 0xcb, 0xd4,
		0x1d, 0xf0, 0x61, 0x04, 0x71, 0xd9, 0x76, 0xe2, 0x61, 0x8e, 0xc7, 0xed, 0x1a, 0x6c, 0xa4, 0x19,
		0x38, 0x49, 0x30, 0x30, 0x94, 0x5a, 0xe0, 0x56, 0x17, 0xb2, 0x95, 0x4e, 0x60, 0x5b, 0xfa, 0xf1,
		0x94, 0x42, 0xc0, 0xb1, 0x93, 0xb7, 0xbc, 0x72, 0x2e, 0xb7, 0x57, 0x30, 0xbb, 0x3e, 0x8c, 0xe5,
		0xb5, 0x61, 0xcc, 0xae, 0x0b, 0x63, 0xa7, 0x39, 0xc5, 0x51, 0x63, 0x8a, 0xb1, 0xa6, 0x94, 0x09,
		0xbb, 0x95, 0x2c, 0x35, 0xa3, 0xcc, 0xda, 0xaf, 0x64, 0xa7, 0x09, 0x85, 0x61, 0xb0, 0x22, 0x12,
		0xa4, 0xc4, 0x60, 0xbe, 0xd7, 0x7a, 0xb1, 0xbf, 0xce, 0x8b, 0xa9, 0x88, 0x27, 0xee, 0x5b, 0x05,
		0xb1, 0x2a, 0x12, 0xc1, 0x32, 0x86, 0x68, 0x19, 0x43, 0xb8, 0xcc, 0x20, 0x5e, 0xbc, 0x08, 0x18,
		0x33, 0x22, 0x96, 0x40, 0x84, 0xad, 0xe8, 0xa6, 0x21, 0xd7, 0x6d, 0x31, 0xbe, 0x66, 0x8b, 0xfb,
		0xf5, 0x5a, 0x8c, 0x85, 0x66, 0x4d, 0xd0, 0xd4, 0x34, 0xe5, 0xee, 0x1c, 0xe3, 0x84, 0xf3, 0xcc,
		0x11, 0xcc, 0x63, 0xac, 0x99, 0x69, 0x84, 0x56, 0x26, 0x5c, 0x1c, 0x2e, 0x8e, 0xea, 0xc0, 0x08,
		0xab, 0x2f, 0x71, 0xc4, 0xbc, 0xe8, 0x29, 0xaa, 0x14, 0x72, 0xac, 0x15, 0x93, 0x3a, 0x31, 0xb6,
		0x1e, 0x1d, 0xf0, 0x2c, 0xcc, 0x46, 0x07, 0x3c, 0x47, 0x9c, 0xa3, 0x03, 0x9e, 0x9f, 0xbb, 0xa2,
		0x03, 0x4e, 0x6c, 0x21, 0xe8, 0x80, 0x83, 0xd1, 0x7c, 0x07, 0x22, 0x06, 0x74, 0xc0, 0xfb, 0x52,
		0x87, 0x2a, 0xbc, 0xf7, 0xe5, 0x80, 0x71, 0x07, 0xbc, 0xc2, 0xf0, 0xb6, 0xa9, 0x92, 0x3d, 0x7b,
		0xf4, 0x07, 0x6e, 0x20, 0xf9, 0xdf, 0xfa, 0x6a, 0x77, 0xec, 0x8e, 0xd3, 0x39, 0x3b, 0xe8, 0x36,
		0xcf, 0x9d, 0xee, 0x1f, 0xa7, 0x16, 0xd7, 0xf4, 0x15, 0xb7, 0x9d, 0x02, 0xd6, 0x97, 0x7f, 0x31,
		0x6f, 0xfc, 0x25, 0x88, 0x3a, 0x7d, 0x2c, 0x3d, 0x62, 0x9f, 0x9e, 0xd7, 0x9c, 0xf6, 0xc9, 0x59,
		0xd7, 0x6a, 0x3b, 0x76, 0xa3, 0x84, 0xce, 0x32, 0x90, 0x95, 0x1e, 0xb2, 0x76, 0x80, 0x2c, 0x20,
		0x2b, 0x7d, 0x64, 0x9d, 0xb6, 0xad, 0x23, 0xfb, 0xb3, 0x73, 0xd4, 0xac, 0x7f, 0xec, 0x00, 0x57,
		0xc0, 0x55, 0xca, 0xb8, 0xea, 0x20, 0x5a, 0x01, 0x55, 0xe9, 0xa1, 0x6a, 0x4a, 0xdf, 0x3b, 0x9c,
		0xf9, 0xbb, 0x49, 0x3c, 0xde, 0x0c, 0xb4, 0x15, 0x86, 0xd7, 0x1b, 0x10, 0xd7, 0x8a, 0x83, 0xb8,
		0x1d, 0x20, 0x0e, 0x88, 0x43, 0x1d, 0x00, 0xbc, 0x09, 0xd4, 0x07, 0x40, 0x1b, 0xd0, 0xf6, 0x26,
		0xb4, 0x75, 0xeb, 0x1f, 0x01, 0x33, 0xc0, 0x2c, 0x03, 0x98, 0xed, 0xd4, 0x4a, 0xb8, 0x82, 0x3d,
		0xd7, 0xaf, 0x4b, 0xf4, 0x9b, 0xe0, 0xd8, 0xc8, 0x1b, 0x80, 0x13, 0xf2, 0x03, 0x00, 0x65, 0x1a,
		0xa0, 0x9e, 0x5c, 0x76, 0x52, 0x6f, 0xfc, 0xdb, 0x69, 0xd6, 0x5b, 0xd8, 0x66, 0x01, 0xac, 0xd2,
		0x86, 0x15, 0x20, 0x05, 0x48, 0xa5, 0x0a, 0xa9, 0x63, 0xbb, 0xe5, 0x7c, 0x6c, 0x9f, 0x9c, 0x9d,
		0x02, 0x56, 0x80, 0x55, 0x6a, 0xb0, 0x3a, 0xaf, 0xdb, 0xcd, 0xfa, 0x41, 0xd3, 0x7a, 0xb8, 0xec,
		0x0b, 0xf0, 0x02, 0xbc, 0xd2, 0x82, 0x57, 0x02, 0x2a, 0xe7, 0xf0, 0xa4, 0xd5, 0xe9, 0xb6, 0xeb,
		0x76, 0xab, 0x8b, 0x63, 0x52, 0x00, 0x58, 0x6a, 0x00, 0xb3, 0x3e, 0x77, 0xad, 0x56, 0xc3, 0x6a,
		0x20, 0x3f, 0x02, 0x5f, 0xab, 0xc0, 0x57, 0x7c, 0x74, 0xc5, 0x6e, 0x75, 0xad, 0xf6, 0x51, 0xfd,
		0xd0, 0x72, 0xea, 0x8d, 0x46, 0xdb, 0xea, 0x20, 0x82, 0x01, 0x61, 0xe9, 0x22, 0xac, 0x65, 0xd9,
		0x1f, 0x3f, 0x1d, 0x9c, 0xb4, 0x01, 0x30, 0x00, 0x6c, 0x05, 0x00, 0xdb, 0x41, 0x08, 0x03, 0xc2,
		0x56, 0x8c, 0x30, 0x84, 0x30, 0x00, 0x6c, 0x55, 0x00, 0x6b, 0xda, 0xad, 0xdf, 0x9d, 0x7a, 0xb7,
		0xdb, 0xb6, 0x0f, 0xce, 0xba, 0x16, 0xa0, 0x05, 0x68, 0xa5, 0x0b, 0xad, 0x86, 0xd5, 0xac, 0xff,
		0x01, 0x54, 0x01, 0x55, 0xe9, 0xa3, 0xca, 0x39, 0xaf, 0xb7, 0xed, 0x7a, 0xd7, 0x3e, 0x69, 0x01,
		0x5f, 0xc0, 0x57, 0xaa, 0xf8, 0xc2, 0x06, 0x23, 0x20, 0x95, 0x32, 0xa4, 0x9a, 0x27, 0x20, 0xee,
		0x00, 0x55, 0xca, 0xa0, 0x3a, 0x6d, 0x9f, 0x74, 0xad, 0xc3, 0x28, 0x05, 0x4e, 0xe7, 0x4e, 0x81,
		0x2f, 0xe0, 0x2b, 0x25, 0x7c, 0x1d, 0xd7, 0x3f, 0x4f, 0x31, 0x86, 0xdd, 0x6b, 0xa0, 0x6b, 0x25,
		0xe8, 0x6a, 0x5b, 0x1d, 0xab, 0x7d, 0x8e, 0x13, 0x12, 0xc0, 0xd8, 0x8a, 0x30, 0x66, 0xb7, 0x1e,
		0xa2, 0x18, 0xfa, 0x10, 0x40, 0x57, 0xaa, 0xe8, 0x6a, 0x5b, 0x1d, 0xbb, 0x71, 0x56, 0x6f, 0x22,
		0x76, 0x01, 0x5d, 0xe9, 0xa3, 0x0b, 0x6a, 0x32, 0x40, 0x5b, 0xf6, 0xa8, 0x33, 0x62, 0x66, 0xc3,
		0x80, 0xa0, 0x56, 0x20, 0xb8, 0x01, 0x6a, 0x80, 0x5a, 0x26, 0x50, 0x33, 0xe0, 0x0c, 0x2b, 0xe0,
		0xc6, 0x06, 0x6e, 0x26, 0xcd, 0x7e, 0x00, 0x76, 0x5c, 0x60, 0x67, 0xd8, 0x4c, 0x08, 0x80, 0xc7,
		0x05, 0x78, 0x66, 0xcd, 0x8a, 0x00, 0x77, 0x5c, 0x70, 0x67, 0xda, 0x0c, 0x09, 0x90, 0xc7, 0x0a,
		0x79, 0xe6, 0x1c, 0xcc, 0x06, 0xf0, 0x18, 0x01, 0x6f, 0x07, 0x21, 0x0f, 0xc8, 0xcb, 0x09, 0x79,
		0x08, 0x79, 0x00, 0x5e, 0xd6, 0xc0, 0x33, 0x66, 0x46, 0x05, 0x90, 0x63, 0x05, 0x39, 0xe6, 0x67,
		0x46, 0x80, 0x36, 0x7e, 0x68, 0x33, 0x61, 0xa6, 0x05, 0xb8, 0x63, 0x85, 0x3b, 0x6c, 0xc0, 0x02,
		0x6a, 0x19, 0x41, 0x8d, 0xf7, 0x0c, 0x0c, 0xc0, 0xc6, 0x0a, 0x6c, 0xc6, 0xcc, 0xc6, 0x00, 0x77,
		0x5c, 0x70, 0x67, 0xd2, 0xcc, 0x0c, 0x50, 0xc7, 0x09, 0x75, 0x66, 0xcd, 0xd2, 0x00, 0x7b, 0x6c,
		0xb0, 0x67, 0xd0, 0x8c, 0x0d, 0x50, 0xc7, 0x05, 0x75, 0x26, 0xcd, 0xde, 0x00, 0x75, 0x5c, 0x50,
		0xd7, 0xb5, 0x9c, 0x86, 0x75, 0x54, 0x3f, 0x6b, 0x76, 0x9d, 0x63, 0xab, 0xdb, 0xb6, 0x0f, 0x01,
		0x3a, 0x80, 0x6e, 0xd5, 0xa0, 0x3b, 0x6b, 0x25, 0x47, 0x39, 0xad, 0x86, 0xd3, 0xec, 0xe0, 0x58,
		0x1d, 0x40, 0x97, 0x01, 0xe8, 0xa6, 0xf5, 0x84, 0xd5, 0x40, 0x86, 0x05, 0xee, 0x32, 0xc4, 0x5d,
		0xd7, 0x6e, 0xda, 0xff, 0x35, 0x0c, 0x75, 0xb8, 0xb1, 0x12, 0xde, 0x5e, 0x24, 0x2f, 0x2f, 0x02,
		0x7f, 0x06, 0xb8, 0xc0, 0x93, 0x01, 0xae, 0x02, 0x81, 0xcb, 0x24, 0x3e, 0x0c, 0x7c, 0x81, 0xf7,
		0x02, 0x5d, 0xe6, 0xa2, 0xab, 0x7d, 0x72, 0xd6, 0xb5, 0xda, 0xce, 0x61, 0xfd, 0x34, 0x51, 0x13,
		0x6a, 0x3b, 0xf5, 0xe6, 0xc7, 0x93, 0xb6, 0xdd, 0xfd, 0x74, 0x0c, 0x64, 0x01, 0x59, 0xa9, 0x22,
		0xeb, 0xe1, 0x4f, 0x80, 0x16, 0xa0, 0x95, 0x22, 0xb4, 0x20, 0x81, 0x06, 0xbc, 0x21, 0x59, 0x16,
		0x37, 0xb2, 0x15, 0x09, 0x71, 0x26, 0x24, 0xd1, 0x04, 0x72, 0xe8, 0x78, 0xe3, 0xb9, 0x1b, 0xfc,
		0xbc, 0x79, 0x3d, 0x67, 0x3e, 0xd6, 0xf2, 0xb0, 0x94, 0x49, 0x42, 0x2d, 0xd5, 0xb5, 0x1e, 0x85,
		0x6e, 0xa8, 0x46, 0xba, 0xb4, 0xcf, 0x28, 0x85, 0x96, 0x82, 0xde, 0xb5, 0xbc, 0x71, 0xc7, 0x6e,
		0x78, 0x1d, 0x25, 0xcb, 0x8d, 0xd1, 0x58, 0xea, 0xde, 0x48, 0x0f, 0xd4, 0xb0, 0xac, 0x65, 0xf8,
		0x65, 0xe4, 0xff, 0x55, 0x56, 0x3a, 0x08, 0x5d, 0xdd, 0x93, 0x1b, 0x4f, 0x3f, 0x08, 0x96, 0x3e,
		0xd9, 0x18, 0xfb, 0xa3, 0x70, 0xd4, 0x1b, 0x79, 0x41, 0xf2, 0xbb, 0x0d, 0x15, 0xa8, 0x60, 0xc3,
		0x93, 0xb7, 0xd2, 0x9b, 0xfd, 0xb2, 0xe1, 0x29, 0xfd, 0x57, 0x39, 0x08, 0xdd, 0x50, 0x96, 0xfb,
		0x6e, 0xe8, 0x5e, 0xb9, 0x81, 0xdc, 0xf0, 0x82, 0xf1, 0x46, 0xe8, 0xdd, 0x06, 0xd1, 0x7f, 0xe2,
		0xbf, 0x52, 0xd6, 0x52, 0x0d, 0xaf, 0xaf, 0x46, 0x7e, 0xd9, 0x0d, 0x43, 0x5f, 0x5d, 0x4d, 0xc2,
		0xc8, 0x80, 0xe9, 0x47, 0x41, 0xf2, 0xbb, 0x8d, 0x07, 0x5b, 0x12, 0x1b, 0x82, 0xc9, 0x55, 0xfc,
		0x2f, 0x4d, 0x7f, 0xdd, 0x98, 0x84, 0xca, 0x53, 0xff, 0x27, 0xfb, 0xe5, 0x2b, 0x57, 0xf7, 0xbf,
		0xa8, 0x7e, 0x78, 0xbd, 0x11, 0xff, 0x6c, 0x1e, 0x89, 0x9f, 0xbe, 0x93, 0xd2, 0xb6, 0x90, 0x78,
		0xf8, 0x28, 0xc9, 0xbb, 0xd0, 0x77, 0xcb, 0x93, 0x08, 0xbb, 0x57, 0x9e, 0x64, 0x11, 0x3a, 0x4a,
		0xbe, 0x1c, 0x48, 0x5f, 0xea, 0x9e, 0x64, 0x53, 0x60, 0x33, 0x8a, 0xc7, 0x49, 0xd9, 0x72, 0x74,
		0xb8, 0xfb, 0xa1, 0xb2, 0xb9, 0x2f, 0xec, 0x4e, 0xd9, 0xee, 0x88, 0xae, 0xef, 0x0e, 0x06, 0xaa,
		0x27, 0x2c, 0x3d, 0x54, 0x5a, 0x4a, 0x5f, 0xe9, 0xa1, 0xf8, 0xb5, 0x6b, 0xbd, 0x17, 0xc7, 0x32,
		0xf4, 0x55, 0xef, 0x42, 0x5b, 0x77, 0xa1, 0xd4, 0x81, 0x1a, 0xe9, 0x60, 0x5d, 0x04, 0x93, 0xab,
		0x72, 0xb7, 0x79, 0x2e, 0xb6, 0xf6, 0xf6, 0x45, 0xf4, 0x6b, 0xb5, 0xba, 0x26, 0xaa, 0x5b, 0x6b,
		0xa2, 0x52, 0xab, 0xac, 0x89, 0x6a, 0xfc, 0xa7, 0xea, 0xd6, 0x3a, 0xa3, 0x26, 0x4f, 0xa9, 0x33,
		0x9a, 0xf8, 0x3d, 0xc9, 0x2a, 0xb3, 0xc6, 0x76, 0xff, 0x2e, 0xef, 0xbf, 0x8c, 0xfc, 0x7e, 0xf4,
		0x42, 0x1f, 0xbc, 0x86, 0x57, 0x8b, 0xa0, 0xf4, 0xc9, 0x0d, 0xea, 0xfe, 0x70, 0x72, 0x23, 0x75,
		0x58, 0xda, 0x17, 0xa1, 0x3f, 0x91, 0xcc, 0x16, 0xb0, 0x60, 0x7d, 0x16, 0x6e, 0x85, 0x02, 0xa0,
		0x60, 0x56, 0x5e, 0xd2, 0xf7, 0x87, 0xd2, 0x97, 0x6b, 0xa9, 0x91, 0xae, 0x57, 0x97, 0xae, 0xd7,
		0xd7, 0xa7, 0x55, 0xc5, 0x46, 0x78, 0x3f, 0x96, 0xe2, 0x37, 0xf1, 0x6e, 0xd4, 0x2b, 0xc7, 0x65,
		0x8c, 0x17, 0xf4, 0xaf, 0xca, 0xd1, 0x87, 0xc1, 0xfe, 0xf7, 0x8f, 0x21, 0xbc, 0x43, 0x4e, 0xce,
		0x34, 0x27, 0xc7, 0x5e, 0x81, 0x74, 0x9c, 0x5f, 0x3a, 0x4e, 0xcb, 0x6d, 0xf8, 0xe4, 0x5c, 0x46,
		0x0e, 0xde, 0x90, 0x41, 0xcf, 0x57, 0x63, 0x76, 0x3d, 0xad, 0x47, 0x81, 0xf9, 0x44, 0x7b, 0xf7,
		0x42, 0xe9, 0x9e, 0x37, 0xe9, 0x4b, 0x11, 0x5e, 0x4b, 0x31, 0xef, 0x07, 0x89, 0xa4, 0x1f, 0x24,
		0x7a, 0x23, 0x1d, 0xba, 0x4a, 0x4b, 0x5f, 0x44, 0x01, 0x21, 0xfa, 0xae, 0x0b, 0x1d, 0x11, 0x3c,
		0x15, 0x88, 0x18, 0x97, 0x5b, 0x7b, 0xeb, 0xdc, 0xa2, 0x04, 0xd3, 0xe0, 0xfc, 0x34, 0x40, 0xf7,
		0x17, 0x20, 0xc8, 0x6f, 0x67, 0x95, 0x7d, 0xac, 0x5e, 0x8a, 0xd7, 0x69, 0x79, 0x13, 0xb6, 0x74,
		0x50, 0xd1, 0x51, 0xae, 0xe8, 0xd0, 0xd3, 0x7e, 0x4b, 0xc0, 0xe0, 0xb5, 0x15, 0x56, 0xc4, 0x2d,
		0x30, 0x06, 0xc9, 0xb4, 0x14, 0x84, 0xfe, 0xa4, 0x17, 0xea, 0x19, 0x8f, 0x6b, 0x4d, 0x9f, 0xb3,
		0x3d, 0x5b, 0xa2, 0x73, 0x3a, 0x7b, 0xb8, 0x8e, 0x1d, 0xa8, 0xc0, 0x69, 0x46, 0x4f, 0xd5, 0x69,
		0x06, 0x63, 0xa7, 0xeb, 0xdd, 0xc6, 0x1f, 0xb5, 0x66, 0x8f, 0xa7, 0x3e, 0x7f, 0x74, 0xce, 0xfc,
		0x13, 0x27, 0xf9, 0x37, 0x3a, 0xf1, 0xe3, 0x71, 0xce, 0x66, 0x8f, 0xe7, 0x20, 0x79, 0x3a, 0xbf,
		0x20, 0x7c, 0x9a, 0x63, 0x19, 0xd1, 0x70, 0x19, 0xd1, 0xdc, 0x08, 0xd8, 0x11, 0x27, 0x22, 0xea,
		0x8e, 0xa5, 0xa6, 0x0a, 0xc2, 0xc8, 0x81, 0x48, 0xc7, 0xf1, 0xd2, 0xb1, 0xd2, 0x96, 0x27, 0x23,
		0x8a, 0x1a, 0x94, 0xf6, 0xc5, 0xe6, 0x1a, 0x61, 0x4b, 0xdd, 0xbb, 0x05, 0x4b, 0x2b, 0x1f, 0x6a,
		0xb5, 0x9d, 0xdd, 0x5a, 0x6d, 0x73, 0x77, 0x6b, 0x77, 0x73, 0x6f, 0x7b, 0xbb, 0xb2, 0x53, 0xd9,
		0x26, 0x6c, 0xfc, 0x89, 0xdf, 0x97, 0xbe, 0xec, 0x1f, 0x44, 0xa8, 0xd5, 0x13, 0xcf, 0xe3, 0x60,
		0xea, 0x59, 0x20, 0x23, 0xf0, 0x0e, 0x5c, 0x2f, 0x90, 0x08, 0x4e, 0xe6, 0x71, 0x38, 0xe3, 0xb9,
		0x1b, 0x61, 0xa2, 0x96, 0x19, 0x41, 0xa3, 0x49, 0xc7, 0xe8, 0x91, 0x1d, 0x5a, 0x16, 0x11, 0x8b,
		0x6c, 0xd4, 0x23, 0x9a, 0xb9, 0x91, 0x8c, 0x96, 0xfb, 0xd2, 0x71, 0x12, 0x42, 0x0e, 0x52, 0x9a,
		0xe8, 0xbe, 0x1c, 0x28, 0x2d, 0xfb, 0xe5, 0xf9, 0x4b, 0xa3, 0xe6, 0x23, 0xc9, 0x86, 0xce, 0xb2,
		0xa9, 0xc4, 0x02, 0xcd, 0xef, 0x4a, 0xf7, 0x23, 0x76, 0x4f, 0xcc, 0xac, 0xc3, 0x38, 0x98, 0xd0,
		0x2b, 0x90, 0x4a, 0xa7, 0xbe, 0x1c, 0xa8, 0x3b, 0x9a, 0x41, 0x79, 0x0e, 0xba, 0xd9, 0xb6, 0x34,
		0x41, 0x36, 0x46, 0x7d, 0xa7, 0x6f, 0x71, 0x37, 0x6f, 0x3c, 0x7d, 0xd3, 0x44, 0x4b, 0x1e, 0x2e,
		0x9b, 0x75, 0x8f, 0x36, 0xe4, 0xe6, 0xc0, 0x04, 0x19, 0x65, 0x45, 0x46, 0x1b, 0x8a, 0x66, 0x4f,
		0x6d, 0x29, 0xbb, 0xd2, 0x8d, 0x2b, 0x2f, 0xf1, 0x01, 0xaa, 0xe1, 0x85, 0x26, 0x2d, 0x20, 0x4f,
		0x0f, 0x38, 0xd0, 0x04, 0x46, 0x74, 0x81, 0x0b, 0x6d, 0x60, 0x47, 0x1f, 0xd8, 0xd1, 0x08, 0x5e,
		0x74, 0x82, 0x26, 0xad, 0x20, 0x4a, 0x2f, 0xc8, 0xd3, 0x8c, 0xc4, 0xc0, 0xe9, 0x24, 0x2e, 0xf9,
		0x20, 0x34, 0x8f, 0xeb, 0x53, 0x73, 0x89, 0xfb, 0x33, 0x6d, 0xa2, 0xc1, 0x86, 0x70, 0x70, 0x22,
		0x1e, 0x0c, 0x09, 0x08, 0x37, 0x22, 0xc2, 0x96, 0x90, 0xb0, 0x25, 0x26, 0x3c, 0x09, 0x0a, 0x6d,
		0xa2, 0x42, 0x9c, 0xb0, 0xb0, 0x21, 0x2e, 0x89, 0xa1, 0x9e, 0xd4, 0xc3, 0x78, 0xc7, 0x8e, 0x49,
		0xf4, 0x9a, 0x27, 0x88, 0x99, 0xdd, 0x4c, 0x22, 0xc0, 0x8c, 0xd2, 0x6c, 0x32, 0x31, 0x97, 0x0b,
		0xb5, 0xe1, 0x48, 0x71, 0x18, 0x53, 0x1d, 0xae, 0x94, 0x87, 0x3d, 0xf5, 0x61, 0x4f, 0x81, 0x78,
		0x53, 0x21, 0x1e, 0x94, 0x88, 0x09, 0x35, 0x4a, 0xa0, 0xd0, 0xbd, 0x1f, 0x4b, 0x9e, 0x11, 0x7b,
		0xa2, 0x74, 0xf8, 0x81, 0x53, 0xbc, 0x9e, 0xd1, 0x8f, 0x6d, 0x46, 0x26, 0xb7, 0x5d, 0x3d, 0x94,
		0xec, 0x04, 0xb0, 0x19, 0x0e, 0x2b, 0x1f, 0x2b, 0xcd, 0x72, 0xca, 0x5a, 0x24, 0x3a, 0xe9, 0x7c,
		0x78, 0xea, 0x92, 0xfd, 0x47, 0xbe, 0xdb, 0x0b, 0xd5, 0x48, 0x37, 0xd4, 0x50, 0x51, 0x1f, 0xfe,
		0xf8, 0x76, 0x68, 0x94, 0x43, 0x37, 0x54, 0xb7, 0x92, 0xf4, 0xac, 0x82, 0x01, 0x59, 0xf3, 0xb1,
		0xeb, 0xba, 0x77, 0xfc, 0x5d, 0xb7, 0xba, 0xbd, 0x0d, 0xe7, 0x85, 0xf3, 0x16, 0x80, 0x98, 0xf3,
		0xb3, 0xf6, 0x12, 0x72, 0x0c, 0x45, 0x49, 0x2e, 0xd3, 0x31, 0x5e, 0x76, 0x6d, 0x60, 0xc2, 0xc3,
		0xc7, 0x2f, 0x55, 0x61, 0x68, 0x02, 0xaf, 0xc8, 0x60, 0x34, 0x81, 0x33, 0x35, 0x1d, 0x4d, 0xe0,
		0x9c, 0x16, 0x80, 0x26, 0x30, 0xd8, 0x86, 0x21, 0xe5, 0x2c, 0x9a, 0xc0, 0x99, 0xd3, 0x0f, 0x34,
		0x81, 0x57, 0xfd, 0x85, 0x26, 0x70, 0xb6, 0xc6, 0xa3, 0x09, 0x4c, 0x25, 0x34, 0xa2, 0x09, 0x9c,
		0x83, 0xeb, 0xa2, 0x09, 0x0c, 0xe7, 0x85, 0xf3, 0xa2, 0x09, 0xbc, 0xaa, 0x2f, 0x34, 0x81, 0x0b,
		0x93, 0x5c, 0x4a, 0xb7, 0xb3, 0x78, 0xcc, 0xac, 0x0b, 0x3c, 0x35, 0x1b, 0x6d, 0xe0, 0x55, 0x98,
		0x8b, 0x36, 0x70, 0x86, 0x40, 0x46, 0x1b, 0x38, 0x3b, 0x37, 0x44, 0x1b, 0x38, 0xe7, 0x05, 0xa0,
		0x0d, 0x0c, 0xce, 0x31, 0x83, 0x02, 0xdf, 0x36, 0xf0, 0x95, 0xd2, 0xae, 0x7f, 0xcf, 0xb0, 0x0f,
		0xbc, 0x07, 0x5a, 0x5f, 0x00, 0x0b, 0x71, 0xd5, 0x46, 0xba, 0xf6, 0x9a, 0x27, 0x72, 0xba, 0x24,
		0x47, 0xb9, 0xf4, 0x09, 0x87, 0xeb, 0xe6, 0x09, 0xdf, 0x29, 0x41, 0x58, 0x43, 0x89, 0xc5, 0x99,
		0x2f, 0x4e, 0x67, 0xbd, 0x98, 0x14, 0xf7, 0xd0, 0x2e, 0x41, 0x11, 0x2f, 0xa0, 0x5d, 0x82, 0x62,
		0xdd, 0xd0, 0x22, 0x1d, 0x9c, 0xbc, 0x10, 0xc5, 0xf8, 0x82, 0x18, 0x88, 0x3b, 0xf0, 0xe5, 0x80,
		0x43, 0xc4, 0x9d, 0x8b, 0x9b, 0xed, 0x32, 0xb0, 0xf5, 0x74, 0x56, 0xe6, 0x3c, 0xba, 0xe4, 0x1a,
		0x75, 0x80, 0x49, 0x96, 0xe1, 0x6e, 0xb9, 0x57, 0x9b, 0x88, 0xbb, 0xe5, 0x52, 0xb6, 0x14, 0x77,
		0xcb, 0x65, 0x6b, 0x2a, 0xee, 0x96, 0x7b, 0x2d, 0x27, 0xc6, 0xdd, 0x72, 0x64, 0x9b, 0x95, 0xc5,
		0xbe, 0x6f, 0xee, 0x6c, 0xfe, 0x34, 0x70, 0xf1, 0x1c, 0x5f, 0x8b, 0x70, 0xf1, 0x1c, 0xc2, 0xdc,
		0xd3, 0x2b, 0xc2, 0x70, 0x05, 0x1d, 0x61, 0x4b, 0x88, 0x38, 0xec, 0xbc, 0x68, 0x52, 0x7d, 0x22,
		0x49, 0x90, 0x66, 0x89, 0x44, 0xb7, 0x24, 0x62, 0x55, 0x02, 0x11, 0x2e, 0x79, 0x08, 0x97, 0x38,
		0x54, 0x42, 0x05, 0xd1, 0x9c, 0x6e, 0x5e, 0x2e, 0x27, 0x54, 0x8f, 0xac, 0xbe, 0xfe, 0xa0, 0x41,
		0x53, 0xf2, 0x27, 0x05, 0xf9, 0x5a, 0x90, 0x73, 0x8c, 0xa1, 0x16, 0x5b, 0x8c, 0x89, 0x29, 0xf9,
		0x7a, 0x57, 0x7e, 0x98, 0xce, 0x11, 0xcf, 0x44, 0xee, 0x77, 0x22, 0x75, 0x7f, 0x13, 0x91, 0xfb,
		0x99, 0xc8, 0x9c, 0x61, 0xa2, 0x74, 0x46, 0x89, 0xe0, 0x19, 0x24, 0x6a, 0x67, 0x8c, 0xc8, 0x9e,
		0x21, 0x22, 0x7b, 0x46, 0x88, 0xe6, 0x19, 0xa0, 0x62, 0x73, 0x2c, 0x2a, 0xf7, 0x0b, 0x95, 0x82,
		0xfb, 0x20, 0x94, 0x37, 0x65, 0xd5, 0xa7, 0xe3, 0xe0, 0x49, 0xb2, 0x4c, 0x4c, 0xa3, 0xd2, 0x9f,
		0x23, 0x75, 0x38, 0x98, 0xdc, 0x21, 0x60, 0x8a, 0x87, 0x7d, 0x09, 0x1f, 0xea, 0xa5, 0x7a, 0x78,
		0x97, 0xfc, 0x21, 0x5d, 0xf2, 0x87, 0x71, 0x69, 0x1f, 0xba, 0xc5, 0x9e, 0xcb, 0xe2, 0xab, 0x22,
		0x77, 0x58, 0x96, 0x6c, 0xfa, 0x7b, 0x54, 0x3b, 0x7e, 0x20, 0x64, 0xd3, 0xa9, 0x1b, 0x86, 0xd2,
		0xd7, 0xe4, 0x74, 0x06, 0x4b, 0x7f, 0x6e, 0x96, 0xf7, 0xea, 0xe5, 0x23, 0xb7, 0x3c, 0xb8, 0xfc,
		0xbb, 0xf6, 0xf5, 0xe2, 0x62, 0xfd, 0x3b, 0x1f, 0xd0, 0x89, 0x11, 0x97, 0x94, 0x5e, 0xef, 0x49,
		0xc7, 0xfe, 0x4c, 0xf6, 0x1d, 0xff, 0xef, 0x67, 0x5f, 0xf2, 0xbf, 0x08, 0xbd, 0x65, 0xb4, 0xfb,
		0x51, 0x8a, 0xa2, 0xdd, 0x9f, 0x6e, 0xbb, 0x9f, 0xc0, 0xb0, 0x75, 0x41, 0x5b, 0xfd, 0x64, 0x3a,
		0x19, 0xe4, 0x28, 0x1c, 0x91, 0xce, 0x05, 0x5a, 0xfe, 0x3c, 0x3a, 0x14, 0x68, 0xf9, 0x73, 0xef,
		0x44, 0xa0, 0xe5, 0x4f, 0x8f, 0x67, 0x91, 0xe9, 0x34, 0x10, 0x1c, 0xbb, 0xa5, 0x34, 0x56, 0xbb,
		0x3c, 0x36, 0xfb, 0x90, 0xc6, 0x8b, 0x4a, 0xeb, 0x7e, 0x29, 0x90, 0xc3, 0xce, 0x8f, 0x61, 0xe7,
		0x4d, 0xde, 0x68, 0x9c, 0xbe, 0xa6, 0x73, 0xda, 0x9a, 0xf4, 0xe9, 0x6a, 0x42, 0xa7, 0xa9, 0x09,
		0x9d, 0x9e, 0xce, 0xcb, 0x83, 0x89, 0xb4, 0x34, 0x98, 0xb7, 0x32, 0x4a, 0xb9, 0x9e, 0xdb, 0x5b,
		0xcd, 0x51, 0xe7, 0x7c, 0x32, 0x78, 0xf6, 0xf9, 0x33, 0xdb, 0x9f, 0x98, 0xb1, 0x9f, 0xe7, 0xed,
		0xdf, 0x3c, 0xfd, 0x3a, 0x5b, 0xe8, 0x67, 0x07, 0xc0, 0x6c, 0x7e, 0x52, 0x46, 0x10, 0x2f, 0xc9,
		0xbb, 0xd0, 0x77, 0xcb, 0x93, 0x08, 0x1b, 0x57, 0x5e, 0xb6, 0xf5, 0x62, 0xc9, 0x97, 0x03, 0xe9,
		0x4b, 0xdd, 0xcb, 0xfe, 0xca, 0xb6, 0x1c, 0x7c, 0x78, 0x5e, 0x04, 0xb7, 0x8f, 0x0e, 0xb7, 0xb7,
		0x2a, 0x95, 0x7d, 0xd1, 0x51, 0x37, 0x63, 0x4f, 0x0d, 0x94, 0xec, 0x0b, 0xeb, 0x2e, 0x94, 0x3a,
		0x50, 0x23, 0x2d, 0x46, 0x03, 0xd1, 0x54, 0xfa, 0x2f, 0xd1, 0x89, 0x3c, 0x4f, 0x9c, 0x36, 0xce,
		0xc4, 0xaf, 0xcd, 0xce, 0xe9, 0xfb, 0x0b, 0xdd, 0x19, 0xbb, 0x3d, 0x29, 0x06, 0x23, 0x5f, 0xd8,
		0x9d, 0xb2, 0xdd, 0x59, 0x17, 0xdd, 0xe6, 0xb9, 0xa8, 0x6e, 0xad, 0x0b, 0x3b, 0x14, 0x2a, 0x10,
		0xaa, 0x2f, 0x75, 0xa8, 0x7a, 0xae, 0x27, 0x94, 0x8e, 0xbe, 0xeb, 0xc6, 0x0d, 0x85, 0x08, 0x47,
		0x22, 0xbc, 0x96, 0x17, 0x5a, 0x46, 0xff, 0x7c, 0x5f, 0xf6, 0x85, 0xdd, 0x11, 0xbe, 0x74, 0x7b,
		0xd7, 0xee, 0x95, 0xf2, 0x54, 0x78, 0x3f, 0xfd, 0x37, 0xaa, 0xeb, 0x39, 0x24, 0xde, 0xbc, 0x5b,
		0x7e, 0x8b, 0x2d, 0xbe, 0x07, 0x18, 0xe6, 0x44, 0x1f, 0xa9, 0x74, 0xf5, 0x1e, 0x75, 0xf1, 0x28,
		0xe2, 0xd4, 0x74, 0x5a, 0x93, 0xd9, 0x4f, 0xcb, 0xf0, 0xbc, 0x45, 0xe9, 0xcb, 0xb5, 0xd4, 0x45,
		0x0a, 0xf0, 0x8f, 0xd4, 0xef, 0xc4, 0x6f, 0xe2, 0xdd, 0xac, 0x1f, 0x5e, 0xf6, 0x82, 0xfe, 0x55,
		0x39, 0xfa, 0x30, 0xd8, 0xb7, 0x3b, 0x4e, 0xcb, 0xb2, 0x3f, 0x7e, 0x3a, 0x38, 0x69, 0x3b, 0xf5,
		0x6e, 0xb7, 0x6d, 0x1f, 0x9c, 0x75, 0xad, 0x77, 0x05, 0x8f, 0xc3, 0x31, 0x50, 0x10, 0x82, 0x1f,
		0x42, 0xf0, 0x1b, 0x90, 0xf4, 0x4b, 0x01, 0x5a, 0x2f, 0xa5, 0x86, 0x0c, 0x7a, 0xbe, 0x1a, 0xe7,
		0xda, 0x77, 0x49, 0xdc, 0xfe, 0x44, 0x7b, 0xf7, 0x42, 0xe9, 0x9e, 0x37, 0xe9, 0xcb, 0x28, 0x9d,
		0x89, 0x79, 0x21, 0x24, 0x92, 0xda, 0x48, 0xf4, 0x46, 0x3a, 0x74, 0x95, 0x96, 0xbe, 0x88, 0xb0,
		0x3e, 0x4d, 0x7a, 0x51, 0x6e, 0x53, 0x81, 0x88, 0x5f, 0x71, 0x75, 0x6b, 0x3d, 0x2f, 0x07, 0x20,
		0xb0, 0x05, 0xbb, 0x18, 0x0b, 0xfa, 0x0b, 0xaf, 0x36, 0xc7, 0xb6, 0x10, 0xa5, 0xfd, 0xd6, 0x47,
		0xa1, 0x21, 0x2d, 0xb4, 0xa1, 0x3d, 0xc5, 0x9b, 0xc7, 0x19, 0xd5, 0x8b, 0xc8, 0xa9, 0xcd, 0xc6,
		0xa9, 0xbd, 0x96, 0x61, 0x30, 0x4c, 0xbb, 0x27, 0x9e, 0x4d, 0xac, 0x59, 0xbd, 0xef, 0x65, 0xe0,
		0x0d, 0x25, 0x2f, 0x18, 0x97, 0xaf, 0x26, 0x83, 0x81, 0xf4, 0xcb, 0x81, 0xfa, 0xbf, 0xec, 0xd2,
		0xf2, 0xc3, 0x51, 0x8d, 0x27, 0x06, 0x64, 0x14, 0x01, 0xb2, 0x95, 0x0a, 0xc8, 0xfc, 0x7c, 0x60,
		0x1e, 0xe7, 0x00, 0x73, 0x3c, 0xef, 0x97, 0x17, 0xa9, 0xcc, 0xfd, 0xfc, 0x5e, 0xee, 0xbc, 0x31,
		0xdf, 0xf3, 0x78, 0x66, 0xed, 0x90, 0x64, 0x3d, 0x3a, 0x9f, 0x93, 0x86, 0x4c, 0xae, 0x9a, 0x31,
		0x39, 0x69, 0xc4, 0xe4, 0x76, 0x40, 0x3c, 0xcf, 0x03, 0xe1, 0x04, 0x0e, 0x80, 0x53, 0xea, 0x3a,
		0xe6, 0x7a, 0xc0, 0x9b, 0x66, 0xdf, 0x31, 0xb7, 0x03, 0xdc, 0x66, 0x9f, 0x22, 0xc9, 0x4b, 0x83,
		0xa5, 0x94, 0x69, 0x09, 0xf1, 0x72, 0x5e, 0xc9, 0xae, 0x8e, 0x78, 0x29, 0xbd, 0xe4, 0x74, 0x9a,
		0x34, 0xf7, 0x39, 0x24, 0x0a, 0xf3, 0x47, 0x84, 0xe6, 0x8e, 0xa8, 0xcc, 0x1b, 0x91, 0x9b, 0x33,
		0x22, 0x37, 0x5f, 0x44, 0x6b, 0xae, 0xa8, 0x58, 0x63, 0x09, 0xb9, 0xcf, 0x0f, 0x25, 0x11, 0x63,
		0xa2, 0x74, 0x58, 0xd9, 0xc9, 0x33, 0x60, 0xcc, 0xf2, 0xc7, 0x4e, 0x8e, 0x26, 0xb4, 0x5d, 0x3d,
		0x94, 0xb9, 0xeb, 0x51, 0x10, 0x98, 0x26, 0x3b, 0x56, 0x74, 0x34, 0xc8, 0x4b, 0xe7, 0xae, 0x37,
		0x91, 0x84, 0x24, 0xd1, 0x8e, 0x7c, 0xb7, 0x17, 0xaa, 0x91, 0x6e, 0xa8, 0xa1, 0xa2, 0x74, 0x5d,
		0x41, 0xa9, 0x25, 0x87, 0x6e, 0xa8, 0x6e, 0x25, 0x19, 0x75, 0x7d, 0x02, 0x82, 0x50, 0xa5, 0x63,
		0xf7, 0x8e, 0x1e, 0x94, 0x77, 0xb6, 0xb7, 0xb7, 0xb6, 0x01, 0x67, 0x6e, 0x70, 0x2e, 0xe8, 0xa8,
		0xe8, 0x65, 0xa1, 0x38, 0x59, 0x8e, 0xa7, 0xf5, 0x97, 0x6c, 0xc9, 0xef, 0xf4, 0x3e, 0x41, 0x52,
		0x32, 0xa7, 0xaa, 0x76, 0xe7, 0x44, 0x54, 0x36, 0xb7, 0x3f, 0xec, 0x09, 0x5b, 0x87, 0xd2, 0xbf,
		0x91, 0x7d, 0xe5, 0x86, 0x52, 0x74, 0xe2, 0xd9, 0x5e, 0x11, 0x8e, 0x9e, 0xfb, 0xf8, 0x42, 0xdb,
		0x3a, 0x7a, 0xad, 0xa2, 0x31, 0xba, 0x71, 0x95, 0x16, 0xed, 0xd1, 0x24, 0x94, 0x4a, 0x0f, 0x85,
		0x75, 0xd7, 0xbb, 0x8e, 0x58, 0x9f, 0x98, 0xef, 0xb5, 0xc7, 0xe7, 0xaa, 0x27, 0x81, 0x14, 0x4a,
		0x5f, 0xe8, 0xc3, 0x91, 0xfe, 0x7f, 0x13, 0x1d, 0x87, 0x47, 0xf1, 0x45, 0x85, 0xd7, 0xf1, 0x31,
		0xa0, 0x47, 0xdf, 0x79, 0xea, 0x8f, 0x6e, 0x55, 0x3f, 0xfa, 0x97, 0xe2, 0xb3, 0x3f, 0x87, 0x23,
		0xad, 0x65, 0xfc, 0xfd, 0x9e, 0x0c, 0x82, 0xf2, 0xcd, 0xa8, 0x2f, 0xc5, 0x6c, 0x57, 0x5f, 0x74,
		0xa4, 0x7f, 0xab, 0x7a, 0x52, 0xfc, 0x1a, 0x2d, 0xe0, 0x43, 0x6d, 0x77, 0x4b, 0xbc, 0x8f, 0xcd,
		0x92, 0xbe, 0x8e, 0x0f, 0x64, 0xb8, 0x9e, 0xe8, 0x84, 0xae, 0xee, 0xbb, 0x7e, 0x7f, 0xba, 0xbe,
		0x7d, 0x51, 0xdd, 0xdc, 0xac, 0xae, 0x89, 0x8e, 0xec, 0x8d, 0x74, 0x5f, 0x58, 0x7d, 0x15, 0x7d,
		0xdb, 0xda, 0x85, 0x8e, 0x3e, 0x9e, 0x9e, 0xfa, 0xae, 0xd4, 0xd6, 0x21, 0x2e, 0xf2, 0xcd, 0xa2,
		0x3f, 0xef, 0xc9, 0x03, 0xf2, 0xf5, 0xff, 0xb3, 0x7d, 0x00, 0xf8, 0xd8, 0x63, 0x1f, 0x03, 0xf7,
		0x28, 0x16, 0xf7, 0xc0, 0xb6, 0x4c, 0xba, 0xa1, 0x05, 0xc3, 0xbd, 0x4b, 0xa7, 0x0f, 0x9f, 0x1c,
		0xff, 0xca, 0x43, 0x64, 0x10, 0x03, 0xbd, 0xec, 0x4a, 0x04, 0x8c, 0x7a, 0x3d, 0x33, 0xa0, 0xd3,
		0xec, 0x9c, 0x3a, 0x07, 0x67, 0x47, 0x47, 0x56, 0xdb, 0xe9, 0xd8, 0xff, 0xc5, 0x90, 0x17, 0x86,
		0xbc, 0x7e, 0x7e, 0xc8, 0x6b, 0x09, 0x43, 0x18, 0xef, 0xca, 0xbc, 0xb0, 0x5f, 0x98, 0xb5, 0x69,
		0x76, 0x4e, 0xc5, 0x34, 0x3b, 0x8a, 0x28, 0x3b, 0x8a, 0xb1, 0xeb, 0xbb, 0x37, 0x32, 0x94, 0x7e,
		0x20, 0x46, 0xda, 0xbb, 0x7f, 0x32, 0x6e, 0x13, 0xbf, 0x57, 0x15, 0xe4, 0x5c, 0x12, 0x63, 0xc0,
		0x8b, 0x7c, 0xc1, 0xfb, 0xb8, 0xc8, 0x4d, 0x0d, 0x6f, 0x28, 0x52, 0x58, 0xff, 0x34, 0x8c, 0x78,
		0x15, 0xa4, 0xc8, 0xe2, 0x31, 0xda, 0xd5, 0x0c, 0xc6, 0x07, 0xb1, 0xcd, 0x9d, 0xc8, 0x64, 0x8c,
		0x74, 0xfd, 0xf0, 0x23, 0xbf, 0x09, 0xcb, 0x6a, 0x7c, 0x5b, 0x2b, 0x2f, 0x0a, 0x9b, 0x64, 0x3f,
		0xd7, 0xf5, 0xac, 0x15, 0x18, 0xee, 0x4a, 0xe5, 0x07, 0x62, 0xb8, 0x2b, 0x6b, 0x12, 0x89, 0xe1,
		0x2e, 0x0c, 0x77, 0xbd, 0xb1, 0xc6, 0xcc, 0x7a, 0xb8, 0x6b, 0x0a, 0x59, 0x19, 0xe4, 0x37, 0xdf,
		0x95, 0x58, 0x80, 0x11, 0x2f, 0xd3, 0xd2, 0x01, 0x81, 0xb4, 0x40, 0xa5, 0xdf, 0x80, 0x11, 0x2f,
		0x5a, 0x69, 0x23, 0xa7, 0x32, 0xbd, 0x28, 0x23, 0x5e, 0xe3, 0x7c, 0x07, 0x7c, 0x9e, 0x24, 0x97,
		0x9c, 0xc7, 0xbc, 0x2a, 0x18, 0xf3, 0xc2, 0x98, 0x17, 0xc6, 0xbc, 0xe8, 0xa7, 0x24, 0x5a, 0xa9,
		0x29, 0x9f, 0x14, 0x95, 0x53, 0xaa, 0xca, 0x3d, 0x65, 0x25, 0x06, 0xdc, 0x84, 0xa4, 0xee, 0x50,
		0x9c, 0x9a, 0x83, 0xfb, 0x13, 0x71, 0x7f, 0x22, 0xf9, 0x04, 0x47, 0x2d, 0xd1, 0x91, 0x4d, 0x78,
		0x64, 0x13, 0x1f, 0xcd, 0x04, 0x98, 0x6f, 0x22, 0xcc, 0x39, 0x21, 0x26, 0xaf, 0x04, 0xf7, 0x27,
		0xfe, 0x40, 0xa5, 0x45, 0xf2, 0xfe, 0xc4, 0x69, 0x0a, 0xc7, 0x95, 0xd8, 0x45, 0xeb, 0x42, 0xd0,
		0xea, 0x46, 0x80, 0xcc, 0x81, 0xcc, 0x81, 0xcc, 0x81, 0xcc, 0x81, 0xcc, 0x81, 0xcc, 0x81, 0xcc,
		0xbd, 0x9a, 0xcc, 0xcd, 0x62, 0x0e, 0xd8, 0x5c, 0xe6, 0xaf, 0x22, 0x1f, 0x1d, 0xda, 0x17, 0x1d,
		0x26, 0x0f, 0x5d, 0xda, 0x17, 0x5d, 0x05, 0x5c, 0x0e, 0x5c, 0x0e, 0x5c, 0x0e, 0x5c, 0x0e, 0x5c,
		0x2e, 0xfb, 0x57, 0x92, 0xf7, 0x8e, 0x55, 0x62, 0xc8, 0x8d, 0x0c, 0x7d, 0xd5, 0xa3, 0xe3, 0xdd,
		0xc9, 0x16, 0xd6, 0xd4, 0x2e, 0x22, 0x1e, 0x44, 0xa3, 0xfd, 0x41, 0x2e, 0x75, 0x52, 0x4c, 0xa1,
		0x84, 0x53, 0x29, 0xd5, 0x94, 0x4a, 0x3e, 0xb5, 0x92, 0x4f, 0xb1, 0xb4, 0x53, 0x2d, 0x8d, 0x94,
		0x4b, 0x24, 0xf5, 0xd2, 0x6b, 0xa7, 0x2c, 0x45, 0xac, 0x2f, 0xaa, 0x2f, 0xcb, 0xa4, 0x12, 0xe0,
		0x62, 0x12, 0xdc, 0x25, 0x64, 0x12, 0x0d, 0x41, 0xe1, 0xa7, 0x5f, 0xb4, 0xa2, 0xba, 0xa0, 0x26,
		0x38, 0xbc, 0x64, 0xdc, 0x5c, 0xb5, 0xb5, 0xb2, 0x46, 0xd3, 0x3e, 0xaa, 0x0a, 0xae, 0xcb, 0x01,
		0x84, 0x9a, 0xa2, 0x2b, 0xd1, 0xd8, 0xff, 0xd8, 0x35, 0xdc, 0x3b, 0x06, 0xae, 0xb1, 0xb3, 0xbb,
		0xbb, 0x5b, 0xad, 0x6c, 0xc3, 0x43, 0x4c, 0xf7, 0x90, 0x5f, 0x60, 0xcd, 0x73, 0x5f, 0x97, 0xbf,
		0xe0, 0x79, 0x10, 0x89, 0xa0, 0x44, 0x4e, 0x3b, 0x2f, 0xd1, 0x66, 0x0a, 0xa7, 0x9e, 0x9f, 0x92,
		0x65, 0x74, 0x8c, 0x5e, 0x30, 0x08, 0x1d, 0xa3, 0x9f, 0x32, 0x0d, 0x1d, 0xa3, 0x57, 0x1a, 0x88,
		0x8e, 0x11, 0xff, 0xfc, 0x8f, 0x8e, 0xd1, 0xf7, 0x22, 0x56, 0xee, 0xb7, 0x4b, 0xbd, 0x94, 0xff,
		0x76, 0xd0, 0x2c, 0xfa, 0xce, 0x17, 0x9a, 0x45, 0xaf, 0xab, 0x88, 0x37, 0x51, 0x0a, 0x9b, 0x5e,
		0x0a, 0xa3, 0x59, 0xf4, 0x3a, 0xd7, 0xa8, 0x6d, 0xee, 0xa1, 0x51, 0x64, 0xbc, 0x77, 0xa0, 0x51,
		0xf4, 0xec, 0x17, 0x1a, 0x45, 0x64, 0xa2, 0x27, 0x95, 0x59, 0xaa, 0x25, 0xba, 0x4c, 0xeb, 0xdc,
		0x20, 0x5a, 0x45, 0xdf, 0x36, 0x08, 0xad, 0xa2, 0x9f, 0x32, 0x0d, 0xad, 0xa2, 0x57, 0x1a, 0x88,
		0x56, 0x11, 0x7f, 0x06, 0x80, 0x56, 0xd1, 0xf7, 0x22, 0x56, 0x2c, 0x9d, 0x4c, 0xce, 0x01, 0x93,
		0xa1, 0x94, 0x0f, 0x84, 0x6c, 0x3a, 0x75, 0xc3, 0x50, 0xfa, 0x9a, 0x5c, 0xcb, 0xa8, 0xf4, 0xeb,
		0x9f, 0x9b, 0xe5, 0xbd, 0xcb, 0x7f, 0xfe, 0xac, 0x94, 0xf7, 0x2e, 0xa7, 0xbf, 0xad, 0xc4, 0xbf,
		0xfc, 0x5d, 0xfd, 0xfa, 0x4f, 0xf5, 0xcf, 0xcd, 0x72, 0x6d, 0xf6, 0x69, 0x75, 0xfb, 0xcf, 0xcd,
		0xf2, 0xf6, 0xe5, 0xfb, 0x5f, 0x2f, 0x2e, 0xd6, 0x7f, 0xf6, 0xef, 0xbc, 0xff, 0x7b, 0xeb, 0xeb,
		0x46, 0xf2, 0x97, 0xaa, 0xb3, 0xff, 0xbb, 0xf5, 0xe7, 0x66, 0xb9, 0x7a, 0xf9, 0x9e, 0x4e, 0xd8,
		0xb9, 0xa4, 0x84, 0x97, 0x93, 0x8e, 0xfd, 0x99, 0x2c, 0x68, 0xfe, 0xf7, 0x6b, 0xee, 0xb0, 0x79,
		0xff, 0xaf, 0x12, 0xea, 0x44, 0xd4, 0x89, 0x4b, 0xd0, 0x0c, 0xca, 0x57, 0x2a, 0xa4, 0x57, 0x26,
		0x4e, 0xcd, 0x42, 0x95, 0x88, 0x2a, 0x11, 0x55, 0x22, 0xaa, 0x44, 0x54, 0x89, 0xa8, 0x12, 0x0b,
		0x53, 0x25, 0x5e, 0x8d, 0x46, 0x9e, 0x74, 0x35, 0xc5, 0x0a, 0xb1, 0x02, 0xe2, 0x46, 0x86, 0xb8,
		0x4d, 0xc6, 0xe5, 0xfe, 0xe8, 0x8b, 0xa6, 0x47, 0xdd, 0xe6, 0x86, 0x81, 0xbc, 0x81, 0xbc, 0x81,
		0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x81, 0xbc, 0x91, 0x21, 0x6f, 0x85, 0x56,
		0xbf, 0xc9, 0xe9, 0x06, 0xdd, 0x17, 0xed, 0xa1, 0x78, 0xb3, 0xee, 0x73, 0xb7, 0x9c, 0x6e, 0xcc,
		0xef, 0xbd, 0x9b, 0xfd, 0x66, 0x2a, 0x2f, 0x08, 0x5d, 0xc1, 0x1c, 0x10, 0x33, 0xb9, 0x8a, 0xde,
		0x14, 0x21, 0x65, 0xc1, 0x99, 0x41, 0xd0, 0x16, 0x84, 0xb6, 0x20, 0x9b, 0x82, 0x06, 0xda, 0x82,
		0xdc, 0x0b, 0x17, 0x68, 0x0b, 0xd2, 0x63, 0x57, 0x64, 0xb4, 0x05, 0xa7, 0x39, 0x89, 0xe0, 0xbe,
		0xee, 0xd4, 0x2e, 0x5a, 0xbd, 0xc1, 0x0a, 0x7a, 0x83, 0xe4, 0x53, 0x28, 0xe1, 0x54, 0x4a, 0x35,
		0xa5, 0x92, 0x4f, 0xad, 0xe4, 0x53, 0x2c, 0xed, 0x54, 0x4b, 0xa7, 0xa5, 0x22, 0x08, 0xf5, 0x06,
		0xa9, 0xa4, 0xe0, 0xc4, 0xa0, 0x81, 0xe7, 0x0e, 0x03, 0x7a, 0x41, 0x61, 0x1e, 0x47, 0xa7, 0xe6,
		0x11, 0xf3, 0x37, 0x5a, 0x89, 0x99, 0x6c, 0x82, 0xa6, 0x9c, 0xa8, 0x19, 0x24, 0x6c, 0xea, 0x89,
		0x9b, 0x4d, 0x02, 0x67, 0x93, 0xc8, 0x79, 0x24, 0x74, 0x5a, 0x89, 0x9d, 0x58, 0x82, 0x27, 0x9b,
		0xe8, 0x1f, 0x6a, 0x6f, 0x12, 0x17, 0xdf, 0x7c, 0xbf, 0x14, 0x27, 0x70, 0x21, 0x0e, 0x33, 0x02,
		0x40, 0x9e, 0x08, 0x70, 0x20, 0x04, 0x8c, 0x88, 0x01, 0x17, 0x82, 0xc0, 0x8e, 0x28, 0xb0, 0x23,
		0x0c, 0xbc, 0x88, 0x03, 0x4d, 0x02, 0x41, 0x94, 0x48, 0x90, 0x27, 0x14, 0xc4, 0x3b, 0x09, 0xac,
		0x3a, 0x0b, 0x2f, 0x11, 0x8d, 0x4d, 0xe2, 0x66, 0x52, 0x27, 0x1c, 0x9c, 0x88, 0x07, 0x43, 0x02,
		0xc2, 0x8d, 0x88, 0xb0, 0x25, 0x24, 0x6c, 0x89, 0x09, 0x4f, 0x82, 0x42, 0x9b, 0xa8, 0x10, 0x27,
		0x2c, 0xc9, 0x2b, 0x27, 0x77, 0x1c, 0xfa, 0xbb, 0x11, 0x57, 0xea, 0xc9, 0x8d, 0xf4, 0xa7, 0xc7,
		0x50, 0x19, 0x44, 0xdd, 0x79, 0x37, 0xa2, 0xc6, 0xc0, 0x56, 0x4b, 0x4f, 0x6e, 0xf8, 0xe4, 0x87,
		0xee, 0xa8, 0x13, 0xfa, 0x4a, 0x0f, 0xd9, 0x58, 0x1c, 0x5b, 0xbd, 0x19, 0x61, 0xd8, 0xfa, 0xdc,
		0xb5, 0xda, 0xad, 0x7a, 0xd3, 0x39, 0x6a, 0xd6, 0x3f, 0x32, 0x49, 0x6b, 0xb1, 0xf5, 0x95, 0xc8,
		0xfa, 0xb6, 0x55, 0x6f, 0x9c, 0x5b, 0xed, 0xae, 0xdd, 0xb1, 0x8e, 0xad, 0x56, 0x97, 0xdd, 0x22,
		0xaa, 0xd1, 0x22, 0x5a, 0x27, 0x0d, 0x6b, 0x6a, 0x39, 0x0b, 0xc3, 0xbf, 0xae, 0x71, 0x71, 0x4a,
		0x5b, 0x87, 0xbc, 0x3c, 0xf2, 0xb1, 0x33, 0x92, 0x2f, 0x93, 0x1e, 0x27, 0xc5, 0x04, 0xc5, 0xfb,
		0xa2, 0xca, 0xc8, 0xee, 0x67, 0x43, 0xc8, 0xbe, 0xa8, 0xf0, 0xf0, 0x45, 0x70, 0x62, 0xa3, 0x39,
		0x71, 0x53, 0x05, 0x61, 0x3d, 0x0c, 0x7d, 0x1e, 0xbc, 0xf8, 0x58, 0x69, 0xcb, 0x93, 0x51, 0xd9,
		0x16, 0xf0, 0x08, 0x5e, 0xa5, 0x63, 0xf7, 0x6e, 0xc1, 0xe2, 0xca, 0x87, 0x5a, 0x6d, 0x67, 0xb7,
		0x56, 0xdb, 0xdc, 0xdd, 0xda, 0xdd, 0xdc, 0xdb, 0xde, 0xae, 0xec, 0x50, 0xbd, 0x2f, 0xef, 0xd1,
		0x22, 0x4e, 0xfc, 0xbe, 0xf4, 0x65, 0xff, 0xe0, 0xbe, 0xb4, 0x2f, 0xf4, 0xc4, 0xf3, 0x38, 0x99,
		0x7c, 0x16, 0x48, 0x9f, 0xac, 0x42, 0x3a, 0xa7, 0x48, 0x21, 0xef, 0x42, 0xdf, 0x2d, 0x4f, 0x74,
		0x10, 0xba, 0x57, 0x1e, 0x93, 0x3a, 0xda, 0x97, 0x03, 0xe9, 0x4b, 0xdd, 0xa3, 0x77, 0xa7, 0xca,
		0x4b, 0x5f, 0x8c, 0xb8, 0xe4, 0xbc, 0x49, 0xd1, 0x3e, 0x3a, 0xdc, 0xdd, 0xdd, 0xab, 0xed, 0x0b,
		0xbb, 0x53, 0xb6, 0x3b, 0x62, 0xda, 0xd9, 0x16, 0x51, 0x52, 0x51, 0x57, 0x93, 0x50, 0x06, 0x62,
		0x30, 0xf2, 0x85, 0x75, 0x17, 0x4a, 0xdd, 0x97, 0x7d, 0x61, 0x9f, 0xde, 0xd6, 0x84, 0xab, 0xfb,
		0x17, 0xda, 0x3e, 0xbd, 0xdd, 0x11, 0xed, 0x85, 0xd9, 0xd1, 0x75, 0x11, 0x4c, 0xae, 0xca, 0xdd,
		0xe6, 0xb9, 0xa8, 0xad, 0x73, 0xaa, 0xb1, 0x98, 0x35, 0x9b, 0x1f, 0xda, 0x35, 0x0f, 0x4d, 0xe7,
		0x07, 0x47, 0x59, 0xe3, 0xb5, 0x06, 0xae, 0xfd, 0xe7, 0x64, 0x01, 0x8b, 0x7d, 0xe8, 0xd5, 0x78,
		0x12, 0x9b, 0xe7, 0xf1, 0x15, 0x15, 0x51, 0x2a, 0x5f, 0x97, 0xbf, 0xe0, 0xf9, 0x19, 0xc6, 0xc0,
		0x4a, 0x21, 0x87, 0xbd, 0x8b, 0x84, 0x12, 0xc4, 0xd6, 0xe2, 0x44, 0x43, 0x1a, 0x66, 0xe2, 0x44,
		0xc3, 0x0a, 0x71, 0x8a, 0x13, 0x0d, 0x59, 0x90, 0x4b, 0x9c, 0x68, 0xc8, 0x9c, 0x49, 0xe2, 0x44,
		0x43, 0x21, 0x7a, 0x32, 0xfc, 0x4e, 0x34, 0xa8, 0xbe, 0xd4, 0xa1, 0x0a, 0xef, 0x7d, 0x39, 0xe0,
		0x74, 0xa2, 0x81, 0x43, 0x97, 0xd6, 0x9e, 0x3d, 0xda, 0x03, 0x37, 0x60, 0x94, 0x27, 0xe6, 0xc0,
		0xb0, 0x3b, 0x76, 0xc7, 0xe9, 0x9c, 0x1d, 0x74, 0x9b, 0xe7, 0x4e, 0xf7, 0x8f, 0x53, 0x8b, 0x4b,
		0xba, 0x88, 0x6f, 0x34, 0x0d, 0xd8, 0xf4, 0x17, 0x05, 0xab, 0x1e, 0xe3, 0x63, 0x84, 0x9c, 0x3a,
		0x6d, 0xab, 0x7e, 0xf8, 0xa9, 0x7e, 0x60, 0x37, 0xed, 0xee, 0x1f, 0x8e, 0x7d, 0x7a, 0x5e, 0x73,
		0xda, 0x27, 0x67, 0x5d, 0xab, 0xed, 0xd8, 0x0d, 0x46, 0x6d, 0x8e, 0x35, 0x20, 0x25, 0x73, 0xa4,
		0xec, 0x00, 0x29, 0x40, 0xca, 0xf7, 0x91, 0x72, 0xda, 0xb6, 0x8e, 0xec, 0xcf, 0xf1, 0x11, 0x8d,
		0x0e, 0x70, 0x02, 0x9c, 0x7c, 0x07, 0x27, 0x1d, 0x44, 0x13, 0xa0, 0xe4, 0x65, 0x94, 0x4c, 0xe9,
		0x6c, 0x87, 0x13, 0x9f, 0xe5, 0xcc, 0x6b, 0x79, 0xa2, 0xc7, 0x58, 0x9e, 0xcb, 0x30, 0xee, 0x98,
		0x8b, 0xa0, 0x1d, 0x20, 0x08, 0x08, 0x2a, 0x1a, 0x2f, 0x06, 0x7e, 0xc0, 0x97, 0x81, 0x1e, 0xfe,
		0xe8, 0xe9, 0x72, 0x99, 0x5c, 0x02, 0x6c, 0x88, 0xc1, 0x66, 0xa7, 0xc6, 0x10, 0x38, 0xac, 0x2c,
		0xbe, 0x44, 0xff, 0x03, 0xfd, 0x0f, 0x13, 0xe2, 0x36, 0xe0, 0x81, 0xf8, 0x0c, 0x80, 0xe4, 0x0b,
		0x90, 0xce, 0x63, 0x80, 0xd4, 0x1b, 0xff, 0x76, 0x9a, 0xf5, 0x16, 0xda, 0xec, 0x80, 0xc9, 0xf7,
		0x60, 0x02, 0x88, 0x00, 0x22, 0xdf, 0x84, 0xc8, 0xb1, 0xdd, 0x72, 0x3e, 0xb6, 0x4f, 0xce, 0x4e,
		0x01, 0x13, 0xc0, 0xe4, 0x45, 0x98, 0x9c, 0xd7, 0xed, 0x66, 0xfd, 0xa0, 0x69, 0x39, 0x07, 0xf5,
		0x56, 0xe3, 0x3f, 0x76, 0xa3, 0xfb, 0x09, 0x70, 0x01, 0x5c, 0x5e, 0x82, 0x4b, 0x02, 0x12, 0xe7,
		0xf0, 0xa4, 0xd5, 0xe9, 0xb6, 0xeb, 0x76, 0xab, 0x8b, 0x63, 0x23, 0x00, 0xcc, 0x8b, 0x80, 0xb1,
		0x3e, 0x77, 0xad, 0x56, 0xc3, 0x6a, 0x20, 0x1f, 0x01, 0x2f, 0x3f, 0x82, 0x97, 0x78, 0xeb, 0xdf,
		0x6e, 0x75, 0xad, 0xf6, 0x51, 0xfd, 0xd0, 0x72, 0xea, 0x8d, 0x46, 0xdb, 0xea, 0x20, 0xc2, 0x00,
		0x31, 0xdf, 0x46, 0x4c, 0xcb, 0xb2, 0x3f, 0x7e, 0x3a, 0x38, 0x69, 0x03, 0x30, 0x00, 0xcc, 0x0f,
		0x00, 0x66, 0x07, 0x21, 0x06, 0x88, 0xf9, 0x49, 0xc4, 0x20, 0xc4, 0x00, 0x30, 0x3f, 0x0a, 0x98,
		0xa6, 0xdd, 0xfa, 0xdd, 0xa9, 0x77, 0xbb, 0x6d, 0xfb, 0xe0, 0xac, 0x6b, 0x01, 0x2a, 0x80, 0xca,
		0xb7, 0xa1, 0xd2, 0xb0, 0x9a, 0xf5, 0x3f, 0x80, 0x12, 0xa0, 0xe4, 0xfb, 0x28, 0x71, 0xce, 0xeb,
		0x6d, 0xbb, 0xde, 0xb5, 0x4f, 0x5a, 0xc0, 0x0b, 0xf0, 0xf2, 0x4d, 0xbc, 0x60, 0x83, 0x08, 0x10,
		0xf9, 0x0e, 0x44, 0x9a, 0x27, 0x20, 0xb2, 0x00, 0xc9, 0x77, 0x40, 0x72, 0xda, 0x3e, 0xe9, 0x5a,
		0x87, 0x51, 0xca, 0x99, 0xce, 0x75, 0x01, 0x2f, 0xc0, 0xcb, 0x0b, 0x78, 0x39, 0xae, 0x7f, 0x9e,
		0x62, 0x06, 0xbb, 0x89, 0x40, 0xcb, 0x0f, 0xa1, 0xa5, 0x6d, 0x75, 0xac, 0xf6, 0x39, 0x76, 0xa0,
		0x81, 0x99, 0x1f, 0xc4, 0x8c, 0xdd, 0x7a, 0x88, 0x32, 0xa8, 0x9b, 0x81, 0x96, 0x6f, 0xa2, 0xa5,
		0x6d, 0x75, 0xec, 0xc6, 0x59, 0xbd, 0x89, 0xd8, 0x02, 0xb4, 0x7c, 0x1f, 0x2d, 0x50, 0x2f, 0x00,
		0x7a, 0xde, 0x8e, 0x22, 0x96, 0x67, 0xb8, 0x19, 0x06, 0x1d, 0x83, 0xe1, 0x03, 0xe8, 0x00, 0x3a,
		0xaf, 0x82, 0x0e, 0xc3, 0x33, 0x76, 0x80, 0x0f, 0x19, 0xf8, 0x70, 0x3e, 0x0b, 0x0e, 0x18, 0x51,
		0x81, 0x11, 0xf3, 0x33, 0xe2, 0x00, 0x12, 0x15, 0x20, 0xf1, 0x3e, 0x3b, 0x0e, 0x1c, 0x51, 0xc1,
		0x11, 0xf7, 0x33, 0xe5, 0x40, 0x12, 0x29, 0x24, 0xf1, 0x3d, 0x08, 0x0a, 0x20, 0x11, 0x02, 0xd2,
		0x0e, 0x42, 0x12, 0x90, 0x94, 0x12, 0x92, 0x10, 0x92, 0x00, 0xa4, 0xb7, 0x02, 0x89, 0xed, 0x99,
		0x75, 0x40, 0x88, 0x14, 0x84, 0x98, 0xed, 0xc9, 0x03, 0x3d, 0xf4, 0xd0, 0xc3, 0xf1, 0x8c, 0x3b,
		0x70, 0x44, 0x0a, 0x47, 0xd8, 0x40, 0x03, 0x74, 0x5e, 0x09, 0x1d, 0x5e, 0x67, 0xe2, 0x01, 0x1e,
		0x52, 0xe0, 0x61, 0x7b, 0x56, 0x1e, 0x38, 0xa2, 0x82, 0x23, 0xce, 0x67, 0xe8, 0x81, 0x22, 0x4a,
		0x28, 0xe2, 0x7d, 0xb6, 0x1e, 0x58, 0x22, 0x83, 0x25, 0xc6, 0x67, 0xee, 0x81, 0x22, 0x2a, 0x28,
		0xe2, 0x7c, 0x16, 0x1f, 0x28, 0xa2, 0x82, 0xa2, 0xae, 0xe5, 0x34, 0xac, 0xa3, 0xfa, 0x59, 0xb3,
		0xeb, 0x1c, 0x5b, 0xdd, 0xb6, 0x7d, 0x08, 0x10, 0x01, 0x44, 0x3f, 0x0b, 0xa2, 0xb3, 0x56, 0x72,
		0x34, 0xcd, 0x6a, 0x38, 0xcd, 0x0e, 0x8e, 0x15, 0x01, 0x44, 0xaf, 0x00, 0xd1, 0x94, 0x5f, 0x5b,
		0x0d, 0x64, 0x34, 0xe0, 0xe8, 0x0d, 0x38, 0xea, 0xda, 0x4d, 0xfb, 0xbf, 0xcc, 0x51, 0x84, 0x1b,
		0x9c, 0x8a, 0xee, 0x9d, 0x86, 0xcc, 0x80, 0x32, 0xe6, 0x97, 0x00, 0x0b, 0x78, 0x24, 0xc0, 0x02,
		0xbe, 0x08, 0xbc, 0x80, 0x17, 0x02, 0x2d, 0x86, 0xa3, 0x65, 0x76, 0xb9, 0xfd, 0x61, 0xfd, 0x34,
		0x51, 0xaf, 0x68, 0x3b, 0xf5, 0xe6, 0xc7, 0x93, 0xb6, 0xdd, 0xfd, 0x74, 0x0c, 0xa4, 0x00, 0x29,
		0xdf, 0x44, 0xca, 0xc3, 0x9f, 0x00, 0x15, 0x40, 0xe5, 0x1b, 0x50, 0x81, 0x24, 0x0e, 0xf0, 0x53,
		0xd8, 0xe4, 0xc4, 0x30, 0xf2, 0x98, 0x8c, 0x20, 0x8e, 0x49, 0x2b, 0x81, 0x10, 0x3a, 0xa4, 0x05,
		0x7e, 0xae, 0xf4, 0x9f, 0x27, 0xed, 0xe7, 0x48, 0xd7, 0x3a, 0x9a, 0x96, 0x11, 0x4d, 0x58, 0xa5,
		0xba, 0xd6, 0xa3, 0xd0, 0x0d, 0xd5, 0x48, 0x97, 0xf6, 0x09, 0xa7, 0xa8, 0x52, 0xd0, 0xbb, 0x96,
		0x37, 0xee, 0xd8, 0x0d, 0xaf, 0xa3, 0x64, 0xb4, 0x31, 0x1a, 0x4b, 0xdd, 0x1b, 0xe9, 0x81, 0x1a,
		0x96, 0xb5, 0x0c, 0xbf, 0x8c, 0xfc, 0xbf, 0xca, 0x4a, 0x07, 0xa1, 0xab, 0x7b, 0x72, 0xe3, 0xe9,
		0x07, 0xc1, 0xd2, 0x27, 0x1b, 0x63, 0x7f, 0x14, 0x8e, 0x7a, 0x23, 0x2f, 0x48, 0x7e, 0xb7, 0xa1,
		0x02, 0x15, 0x6c, 0x78, 0xf2, 0x56, 0x7a, 0xb3, 0x5f, 0x36, 0x3c, 0xa5, 0xff, 0x2a, 0x07, 0xa1,
		0x1b, 0xca, 0x72, 0xdf, 0x0d, 0xdd, 0x2b, 0x37, 0x90, 0x1b, 0x5e, 0x30, 0xde, 0x08, 0xbd, 0xdb,
		0x20, 0xfa, 0xcf, 0xc6, 0x4d, 0x58, 0x56, 0xe3, 0xdb, 0x5a, 0xd9, 0x97, 0x6e, 0xef, 0xda, 0xbd,
		0x52, 0x9e, 0x0a, 0xef, 0x37, 0xc6, 0xff, 0x9f, 0xbd, 0xb3, 0x6b, 0x6a, 0x1b, 0x59, 0xfa, 0xf8,
		0xfd, 0x7e, 0x0a, 0x95, 0xea, 0x54, 0x25, 0xa9, 0x8a, 0x30, 0x36, 0xc6, 0x04, 0x57, 0xed, 0x85,
		0xc0, 0x22, 0xd1, 0x89, 0xb1, 0x5d, 0xb6, 0xe0, 0x64, 0xcf, 0xc2, 0x51, 0x09, 0x7b, 0x6c, 0xf4,
		0xac, 0x18, 0xbb, 0xa4, 0x31, 0x81, 0xda, 0xe5, 0xbb, 0x3f, 0x25, 0xc9, 0x16, 0xe6, 0x9d, 0x80,
		0x5f, 0xba, 0xe5, 0x3f, 0x17, 0x81, 0x18, 0x48, 0x7a, 0xe4, 0x5f, 0x77, 0xff, 0xa7, 0x67, 0xa6,
		0x27, 0x14, 0x7d, 0xff, 0x4a, 0x44, 0x93, 0x2f, 0x0a, 0xd1, 0xf8, 0x2c, 0xf9, 0x85, 0xf4, 0x73,
		0xa1, 0x1f, 0x78, 0x83, 0xa8, 0x90, 0xfc, 0xab, 0x34, 0x53, 0x26, 0x3d, 0xf7, 0xa1, 0x65, 0x11,
		0x31, 0x47, 0xd6, 0xc5, 0x95, 0x0a, 0x3d, 0x63, 0x1c, 0x93, 0x7d, 0x16, 0x08, 0x92, 0x4e, 0xac,
		0xff, 0x3c, 0x17, 0x92, 0xec, 0xac, 0x8f, 0x70, 0xd0, 0x9b, 0x6a, 0xef, 0x8d, 0x8d, 0x34, 0x62,
		0x14, 0xd4, 0xf5, 0x48, 0x68, 0xbf, 0x6b, 0x1f, 0x86, 0x5d, 0x23, 0x8e, 0x57, 0x46, 0x10, 0xf5,
		0xce, 0x8c, 0xf8, 0xc5, 0xa8, 0x6a, 0xb7, 0xee, 0x16, 0xab, 0x5b, 0x6d, 0xeb, 0xc0, 0xfe, 0xe1,
		0x1e, 0xd4, 0xcd, 0xaf, 0x9d, 0x0f, 0x84, 0x0b, 0x05, 0x7a, 0x67, 0x38, 0x0e, 0xbb, 0x82, 0x74,
		0xf6, 0x49, 0xec, 0xfc, 0x2e, 0xae, 0x7f, 0x0e, 0xc3, 0x5e, 0xfc, 0x7e, 0x24, 0x3c, 0xd3, 0x9e,
		0x81, 0xea, 0xdf, 0xbc, 0xc8, 0x0c, 0x07, 0xe3, 0x0b, 0x21, 0x95, 0x5e, 0xd5, 0x54, 0x38, 0x16,
		0xc4, 0x0d, 0x9e, 0xb1, 0x76, 0x0e, 0xc0, 0xff, 0x86, 0xca, 0xc5, 0xaf, 0xbf, 0x05, 0x35, 0x11,
		0x75, 0x43, 0x7f, 0x44, 0x5e, 0x0d, 0xde, 0x09, 0x8e, 0x4d, 0x19, 0x5c, 0x6b, 0xbe, 0xec, 0x06,
		0xe3, 0x9e, 0xd0, 0xd4, 0xb9, 0xd0, 0x12, 0x89, 0xa5, 0x75, 0x87, 0x52, 0x79, 0xbe, 0x14, 0xa1,
		0x16, 0x7b, 0x6b, 0xf2, 0x8d, 0x68, 0x7c, 0x66, 0x38, 0xf5, 0x63, 0xcd, 0x8f, 0xb4, 0x18, 0xa1,
		0x13, 0x59, 0xde, 0xa0, 0xee, 0xc5, 0x4c, 0x82, 0xe3, 0xfd, 0x00, 0xd9, 0x9b, 0x01, 0x89, 0x7e,
		0xa5, 0x8e, 0x5d, 0xac, 0x7c, 0x10, 0x2f, 0xdf, 0xe7, 0x03, 0x28, 0x34, 0xe4, 0xa9, 0xd0, 0x40,
		0xce, 0xaa, 0x53, 0xcc, 0xdf, 0xf8, 0x16, 0x60, 0xf2, 0x55, 0x78, 0x21, 0x98, 0x8c, 0xf4, 0x48,
		0x85, 0xe3, 0xae, 0x92, 0x13, 0x35, 0xd3, 0x48, 0x9f, 0x98, 0x3d, 0x79, 0x60, 0x6e, 0x6b, 0xf2,
		0x98, 0x5c, 0x3b, 0xf2, 0x23, 0xb7, 0x1e, 0x3f, 0x1f, 0xb7, 0x1e, 0x8d, 0x5c, 0x27, 0xb8, 0x74,
		0x0f, 0x95, 0x3d, 0xba, 0x2c, 0xb7, 0x67, 0x1e, 0x82, 0xdb, 0x4a, 0xc6, 0xee, 0x76, 0x92, 0x31,
		0xbb, 0x07, 0xc9, 0x98, 0x7f, 0x43, 0x78, 0x22, 0x1e, 0x08, 0xf4, 0x84, 0xe6, 0x28, 0xd1, 0x7a,
		0x46, 0x38, 0x1c, 0x2b, 0x11, 0x1a, 0x7e, 0x8f, 0x5c, 0x3c, 0xc8, 0x24, 0xf7, 0xe3, 0xe6, 0x12,
		0x0b, 0xac, 0xdf, 0x7d, 0x19, 0x3f, 0xc2, 0x22, 0x31, 0xb3, 0xf6, 0x93, 0xe0, 0xa9, 0x57, 0xb5,
		0x4d, 0x62, 0x86, 0xa5, 0xa1, 0x83, 0x66, 0x12, 0x9a, 0x82, 0x37, 0x29, 0x03, 0x50, 0x0c, 0xe3,
		0xc4, 0x67, 0x6a, 0xb3, 0xb3, 0xb3, 0x34, 0x41, 0x12, 0x9d, 0x98, 0xb1, 0x99, 0x8c, 0xdd, 0x99,
		0x80, 0x4d, 0xc1, 0xc4, 0xe2, 0x09, 0x2b, 0xf1, 0x5d, 0xf3, 0x43, 0xa2, 0xaa, 0x3b, 0x59, 0x20,
		0x24, 0x1b, 0x4c, 0xa6, 0xf1, 0x38, 0x35, 0x93, 0xa8, 0x7f, 0xd2, 0x14, 0x00, 0xe4, 0x85, 0x00,
		0x07, 0x41, 0xc0, 0x48, 0x18, 0x70, 0x11, 0x08, 0xec, 0x84, 0x02, 0x3b, 0xc1, 0xc0, 0x4b, 0x38,
		0xd0, 0x14, 0x10, 0x44, 0x85, 0x04, 0x79, 0x41, 0x91, 0x19, 0x48, 0xb7, 0xba, 0xf0, 0x64, 0x6c,
		0xa7, 0x5a, 0x61, 0x78, 0x4a, 0x70, 0x6c, 0x12, 0x37, 0x93, 0xba, 0xf0, 0xe0, 0x24, 0x40, 0x18,
		0x0a, 0x11, 0x6e, 0x82, 0x84, 0xad, 0x30, 0x61, 0x2b, 0x50, 0x78, 0x0a, 0x15, 0xda, 0x82, 0x85,
		0xb8, 0x70, 0xc9, 0xde, 0x72, 0xe7, 0x7a, 0x24, 0x78, 0x45, 0xdc, 0x64, 0x31, 0xc2, 0xeb, 0xf5,
		0x42, 0x11, 0xb1, 0x08, 0xbb, 0xd3, 0xb2, 0xc4, 0x17, 0x06, 0xb6, 0xb6, 0x3c, 0xa5, 0x44, 0x28,
		0xd9, 0x9c, 0xd8, 0xd4, 0x3f, 0xfe, 0xb9, 0x69, 0xec, 0x9e, 0xfe, 0xf3, 0x67, 0xd1, 0xd8, 0x3d,
		0x4d, 0xbf, 0x2c, 0x26, 0x9f, 0xfe, 0x2e, 0xdd, 0xfc, 0x53, 0xfa, 0x73, 0xd3, 0x28, 0x4f, 0x5e,
		0x2d, 0x6d, 0xff, 0xb9, 0x69, 0x6c, 0x9f, 0x7e, 0xfa, 0x78, 0x72, 0xb2, 0xf1, 0xab, 0xbf, 0xf3,
		0xe9, 0xef, 0xad, 0x1b, 0xfa, 0x61, 0xf0, 0x94, 0x03, 0x5e, 0xcd, 0x8e, 0xfd, 0x83, 0x1d, 0x63,
		0xff, 0xfb, 0xb8, 0x2c, 0xca, 0x3e, 0xfd, 0x8b, 0x01, 0x67, 0x48, 0xb7, 0xef, 0x60, 0x89, 0xc1,
		0xe9, 0x8d, 0x87, 0x25, 0x04, 0xd1, 0x17, 0xa1, 0x90, 0xc9, 0xd4, 0x81, 0x87, 0xcb, 0xf2, 0x39,
		0x7a, 0x7d, 0x7b, 0xdc, 0xfa, 0x60, 0x7f, 0x67, 0x67, 0xb7, 0x5c, 0xd5, 0xec, 0x8e, 0x61, 0x77,
		0xb4, 0x74, 0x2a, 0xac, 0x99, 0x4a, 0x85, 0xfe, 0xd9, 0x58, 0x89, 0x48, 0xeb, 0x0f, 0x43, 0xcd,
		0xba, 0x52, 0x42, 0xf6, 0x44, 0x4f, 0xb3, 0x5b, 0x97, 0xe5, 0x13, 0xe9, 0xc9, 0xe4, 0xab, 0x8a,
		0x36, 0xbb, 0x25, 0x68, 0x23, 0xdb, 0xf2, 0x59, 0x2c, 0x32, 0xea, 0x17, 0xc1, 0x6d, 0x76, 0xfa,
		0xd8, 0x2c, 0xf5, 0xd6, 0x51, 0x98, 0xf5, 0xe9, 0xe0, 0x3a, 0x61, 0x7d, 0x74, 0xe2, 0xba, 0x18,
		0x4f, 0xc2, 0x71, 0xfc, 0x35, 0xb3, 0xf2, 0x14, 0xbb, 0xe4, 0xf3, 0xa6, 0xc0, 0x74, 0xc5, 0xa1,
		0xd8, 0x91, 0x49, 0x82, 0xc4, 0x5a, 0x2c, 0x81, 0xcc, 0xc3, 0x4c, 0x2c, 0x81, 0x2c, 0x90, 0x53,
		0x2c, 0x81, 0x2c, 0x43, 0x5c, 0x62, 0x09, 0x64, 0xe9, 0x4a, 0x12, 0x4b, 0x20, 0x6b, 0x51, 0x93,
		0x61, 0xb8, 0x04, 0xd2, 0x13, 0x52, 0xf9, 0xea, 0x3a, 0x14, 0x7d, 0x4e, 0x2b, 0x20, 0xdb, 0x0c,
		0x6c, 0xb5, 0x27, 0x8f, 0x76, 0xcf, 0x8b, 0x18, 0xe5, 0x89, 0xdb, 0x0e, 0xd6, 0x76, 0x67, 0xd2,
		0x31, 0x94, 0x53, 0xc3, 0x50, 0x8e, 0x8d, 0x42, 0xb9, 0xf6, 0x38, 0xbf, 0xd7, 0x45, 0xc3, 0x6e,
		0x1d, 0x97, 0xdd, 0x49, 0xaf, 0x47, 0x4e, 0x57, 0xb6, 0xa3, 0x15, 0xf1, 0x0a, 0x48, 0xa9, 0x80,
		0x14, 0x90, 0xf2, 0x32, 0x29, 0xb3, 0x9d, 0x79, 0xc0, 0x09, 0x38, 0x79, 0x81, 0x93, 0x0e, 0xa2,
		0x09, 0x28, 0x79, 0x9a, 0x12, 0x34, 0xc0, 0x07, 0x3d, 0xeb, 0xab, 0x73, 0x19, 0xc6, 0x9d, 0xfc,
		0x12, 0x54, 0x01, 0x41, 0x20, 0x68, 0xdd, 0x74, 0x31, 0xf8, 0x81, 0x5e, 0x06, 0x3d, 0xfc, 0xe9,
		0x71, 0xcc, 0xaf, 0xc0, 0x06, 0xd8, 0xbc, 0x01, 0x9b, 0x4a, 0x19, 0xb7, 0xfd, 0x2c, 0xf6, 0x03,
		0xf7, 0xa1, 0xa3, 0xfe, 0x91, 0x8b, 0xb8, 0x0d, 0x3c, 0x10, 0x9f, 0x01, 0xc8, 0x6a, 0x01, 0xb9,
		0x77, 0x8b, 0xb5, 0x59, 0xfb, 0xb7, 0x5b, 0x37, 0x1b, 0x28, 0xb3, 0x03, 0x93, 0x97, 0x30, 0x01,
		0x22, 0x40, 0xe4, 0x59, 0x44, 0x0e, 0xed, 0x86, 0xfb, 0xb5, 0xdd, 0x3c, 0x6a, 0x01, 0x13, 0x60,
		0xf2, 0x24, 0x26, 0xc7, 0xa6, 0x5d, 0x37, 0xf7, 0xea, 0x96, 0xbb, 0x67, 0x36, 0x6a, 0xff, 0xb1,
		0x6b, 0xce, 0x37, 0xe0, 0x02, 0x5c, 0x9e, 0xc2, 0x25, 0x83, 0xc4, 0xdd, 0x6f, 0x36, 0x3a, 0x4e,
		0xdb, 0xb4, 0x1b, 0x0e, 0xb6, 0x8d, 0x00, 0x98, 0x27, 0x81, 0xb1, 0x7e, 0x38, 0x56, 0xa3, 0x66,
		0xd5, 0x90, 0x8f, 0xc0, 0xcb, 0x6b, 0x78, 0x49, 0x96, 0xfe, 0xed, 0x86, 0x63, 0xb5, 0x0f, 0xcc,
		0x7d, 0xcb, 0x35, 0x6b, 0xb5, 0xb6, 0xd5, 0x41, 0x84, 0x01, 0x31, 0xcf, 0x13, 0xd3, 0xb0, 0xec,
		0xaf, 0xdf, 0xf6, 0x9a, 0x6d, 0x00, 0x03, 0x60, 0x5e, 0x01, 0x4c, 0x05, 0x21, 0x06, 0xc4, 0xfc,
		0x22, 0x31, 0x08, 0x31, 0x00, 0xe6, 0xb5, 0xc0, 0xd4, 0xed, 0xc6, 0x77, 0xd7, 0x74, 0x9c, 0xb6,
		0xbd, 0x77, 0xe4, 0x58, 0x40, 0x05, 0xa8, 0x3c, 0x8f, 0x4a, 0xcd, 0xaa, 0x9b, 0x7f, 0x80, 0x12,
		0x50, 0xf2, 0x32, 0x25, 0xee, 0xb1, 0xd9, 0xb6, 0x4d, 0xc7, 0x6e, 0x36, 0xc0, 0x0b, 0x78, 0x79,
		0x96, 0x17, 0x2c, 0x10, 0x01, 0x91, 0x17, 0x10, 0xa9, 0x37, 0x21, 0x64, 0x01, 0xc9, 0x0b, 0x90,
		0xb4, 0xda, 0x4d, 0xc7, 0xda, 0x8f, 0x53, 0x4e, 0x7a, 0xae, 0x0b, 0xbc, 0x80, 0x97, 0x27, 0x78,
		0x39, 0x34, 0x7f, 0xa4, 0xcc, 0x60, 0x35, 0x11, 0xb4, 0xbc, 0x8a, 0x96, 0xb6, 0xd5, 0xb1, 0xda,
		0xc7, 0x58, 0x81, 0x06, 0x33, 0xaf, 0x64, 0xc6, 0x6e, 0xdc, 0x46, 0x19, 0xcc, 0x9b, 0x41, 0xcb,
		0xb3, 0xb4, 0xb4, 0xad, 0x8e, 0x5d, 0x3b, 0x32, 0xeb, 0x88, 0x2d, 0xa0, 0xe5, 0x65, 0x5a, 0xd0,
		0xbd, 0x00, 0xf4, 0xbc, 0x9f, 0x22, 0x96, 0x7b, 0xb8, 0x19, 0x06, 0x9d, 0x1c, 0xe3, 0x03, 0x74,
		0x80, 0xce, 0x9b, 0xd0, 0x61, 0xb8, 0xc7, 0x0e, 0xf8, 0x90, 0xc1, 0x87, 0xf3, 0x5e, 0x70, 0x60,
		0x44, 0x05, 0x23, 0xe6, 0x7b, 0xc4, 0x01, 0x12, 0x15, 0x90, 0x78, 0xef, 0x1d, 0x07, 0x47, 0x54,
		0x38, 0xe2, 0xbe, 0xa7, 0x1c, 0x24, 0x91, 0x22, 0x89, 0xef, 0x46, 0x50, 0x80, 0x44, 0x08, 0xa4,
		0x0a, 0x42, 0x12, 0x48, 0x9a, 0x13, 0x49, 0x08, 0x49, 0x00, 0xe9, 0xbd, 0x20, 0xb1, 0xdd, 0xb3,
		0x0e, 0x84, 0x48, 0x21, 0xc4, 0x6c, 0x4d, 0x1e, 0xf4, 0xd0, 0xa3, 0x87, 0xe3, 0x1e, 0x77, 0x70,
		0x44, 0x8a, 0x23, 0x2c, 0xa0, 0x01, 0x9d, 0x37, 0xa2, 0xc3, 0x6b, 0x4f, 0x3c, 0xe0, 0x21, 0x05,
		0x0f, 0xdb, 0xbd, 0xf2, 0xe0, 0x88, 0x0a, 0x47, 0x9c, 0xf7, 0xd0, 0x83, 0x22, 0x4a, 0x14, 0xf1,
		0xde, 0x5b, 0x0f, 0x96, 0xc8, 0xb0, 0xc4, 0x78, 0xcf, 0x3d, 0x28, 0xa2, 0x42, 0x11, 0xe7, 0xbd,
		0xf8, 0xa0, 0x88, 0x0a, 0x45, 0x8e, 0xe5, 0xd6, 0xac, 0x03, 0xf3, 0xa8, 0xee, 0xb8, 0x87, 0x96,
		0xd3, 0xb6, 0xf7, 0x01, 0x11, 0x20, 0xfa, 0x55, 0x88, 0x8e, 0x1a, 0xd9, 0xd6, 0x34, 0xab, 0xe6,
		0xd6, 0x3b, 0xd8, 0x56, 0x04, 0x88, 0xde, 0x00, 0x51, 0xaa, 0xaf, 0xad, 0x1a, 0x32, 0x1a, 0x38,
		0x7a, 0x07, 0x47, 0x8e, 0x5d, 0xb7, 0xff, 0xcb, 0x9c, 0x22, 0xdc, 0xe0, 0xb4, 0xee, 0xde, 0x99,
		0x93, 0x33, 0xa0, 0x8c, 0xf5, 0x25, 0x60, 0x81, 0x8e, 0x04, 0x2c, 0xd0, 0x8b, 0xe0, 0x05, 0xba,
		0x10, 0xb4, 0xe4, 0x9c, 0x96, 0xc9, 0xe5, 0xf6, 0xfb, 0x66, 0x2b, 0xeb, 0x5e, 0xd1, 0x76, 0xcd,
		0xfa, 0xd7, 0x66, 0xdb, 0x76, 0xbe, 0x1d, 0x82, 0x14, 0x90, 0xf2, 0x2c, 0x29, 0xb7, 0x7f, 0x03,
		0x2a, 0x40, 0xe5, 0x19, 0x54, 0xd0, 0x12, 0x07, 0xfc, 0xac, 0x6d, 0x72, 0x62, 0x18, 0x79, 0xf2,
		0x4c, 0x10, 0xc7, 0xa4, 0x95, 0x21, 0x84, 0x0a, 0xe9, 0x1a, 0x3f, 0x57, 0xfa, 0xcf, 0x93, 0xf6,
		0x73, 0xa4, 0x6b, 0x1d, 0x4d, 0xcb, 0x88, 0x26, 0x2c, 0xdd, 0x94, 0x72, 0xa8, 0x3c, 0xe5, 0x0f,
		0xa5, 0x5e, 0x25, 0x9c, 0xa2, 0xf4, 0xa8, 0x7b, 0x2e, 0x2e, 0xbc, 0x91, 0xa7, 0xce, 0xe3, 0x64,
		0x54, 0x18, 0x8e, 0x84, 0xec, 0x0e, 0x65, 0xdf, 0x1f, 0x18, 0x52, 0xa8, 0x9f, 0xc3, 0xf0, 0x2f,
		0xc3, 0x97, 0x91, 0xf2, 0x64, 0x57, 0x14, 0xee, 0xbf, 0x10, 0x3d, 0x78, 0xa5, 0x30, 0x0a, 0x87,
		0x6a, 0xd8, 0x1d, 0x06, 0x51, 0xf6, 0x55, 0xc1, 0x8f, 0xfc, 0xa8, 0x10, 0x88, 0x4b, 0x11, 0x4c,
		0x3e, 0x15, 0x02, 0x5f, 0xfe, 0x65, 0x44, 0xca, 0x53, 0xc2, 0xe8, 0x79, 0xca, 0x3b, 0xf3, 0x22,
		0x51, 0x08, 0xa2, 0x51, 0x41, 0x05, 0x97, 0x51, 0xfc, 0x47, 0xe1, 0x42, 0x19, 0xfe, 0xe8, 0xb2,
		0x6c, 0x84, 0xc2, 0xeb, 0x9e, 0x7b, 0x67, 0x7e, 0xe0, 0xab, 0xeb, 0xc2, 0x28, 0x14, 0x7d, 0xff,
		0x4a, 0x44, 0x93, 0x2f, 0x0a, 0xd1, 0xf8, 0x2c, 0xf9, 0x85, 0xf4, 0x73, 0x21, 0xf9, 0x85, 0x68,
		0x38, 0x0e, 0xbb, 0xc2, 0x08, 0x87, 0x63, 0x25, 0x42, 0xc3, 0xef, 0x15, 0x92, 0xff, 0x85, 0x66,
		0x0a, 0xa5, 0xe7, 0x4e, 0xb4, 0x2c, 0x22, 0xe6, 0xd8, 0xba, 0xb8, 0x52, 0xa1, 0x67, 0x8c, 0x63,
		0xd2, 0xcf, 0x02, 0x41, 0xd2, 0xa9, 0xf5, 0x9f, 0xe7, 0x42, 0x92, 0x9d, 0x05, 0x12, 0x0e, 0x82,
		0x53, 0x2d, 0xbe, 0xb1, 0x91, 0x46, 0x8c, 0x82, 0xba, 0x1e, 0x09, 0xed, 0x77, 0xed, 0xc3, 0xb0,
		0x6b, 0xc4, 0xf1, 0xcb, 0x08, 0xa2, 0xde, 0x99, 0x11, 0xbf, 0x18, 0x55, 0xed, 0xd6, 0x23, 0x9d,
		0x52, 0x26, 0x22, 0xde, 0xae, 0x7d, 0x20, 0x5c, 0x3a, 0xd0, 0x3b, 0x49, 0x78, 0x24, 0x9d, 0x8f,
		0x12, 0x3b, 0xbf, 0x8b, 0xeb, 0x9f, 0xc3, 0xb0, 0x17, 0xbf, 0x23, 0x09, 0xd1, 0xb4, 0xe7, 0xa4,
		0xfa, 0x37, 0x2f, 0x32, 0xc3, 0xc1, 0xf8, 0x42, 0x48, 0xa5, 0x57, 0x35, 0x15, 0x8e, 0x05, 0x71,
		0x83, 0x67, 0xac, 0x9d, 0x0b, 0xf2, 0xbf, 0xa1, 0x9a, 0xf1, 0xeb, 0x6f, 0x42, 0x4d, 0x44, 0xdd,
		0xd0, 0x1f, 0x91, 0x57, 0x88, 0x77, 0x02, 0x64, 0x53, 0x06, 0xd7, 0x9a, 0x2f, 0xbb, 0xc1, 0xb8,
		0x27, 0x34, 0x75, 0x2e, 0x34, 0xbb, 0x75, 0x59, 0xd6, 0xd2, 0xb8, 0xa2, 0xb5, 0x13, 0xd9, 0xa5,
		0xd9, 0x35, 0xad, 0x3b, 0x94, 0xca, 0xf3, 0xa5, 0x08, 0xb5, 0xd8, 0x7f, 0x4f, 0x64, 0xfc, 0x93,
		0xd1, 0xf8, 0xcc, 0x70, 0xea, 0xc7, 0x9a, 0x1f, 0x69, 0x09, 0x6a, 0xc5, 0xe2, 0x06, 0x75, 0xc7,
		0x66, 0x12, 0x2f, 0xef, 0xc7, 0xcc, 0xde, 0x0c, 0x59, 0xf4, 0xcb, 0x79, 0xec, 0xc2, 0xe7, 0x83,
		0x10, 0x3a, 0x67, 0xa7, 0x40, 0x79, 0x22, 0x4f, 0xe5, 0x09, 0x72, 0x56, 0x9d, 0x62, 0x96, 0xc7,
		0xb7, 0x6c, 0x93, 0xef, 0x72, 0x0d, 0xc1, 0x6c, 0xa5, 0x47, 0x2a, 0x1c, 0x77, 0x95, 0x9c, 0xe8,
		0x9f, 0x46, 0xfa, 0x04, 0xed, 0xc9, 0x03, 0x74, 0x5b, 0x93, 0xc7, 0xe6, 0xda, 0x91, 0x1f, 0xb9,
		0xf5, 0xf8, 0x79, 0xb9, 0xf5, 0x68, 0xe4, 0x3a, 0xc1, 0xa5, 0x7b, 0xa8, 0xec, 0xd1, 0x65, 0xb9,
		0x3d, 0xf3, 0x50, 0xdc, 0x56, 0xf2, 0x2c, 0xdc, 0x4e, 0xf2, 0x0c, 0xdc, 0xf8, 0xdb, 0x69, 0x96,
		0x48, 0x93, 0x84, 0xdd, 0xa3, 0x15, 0xfb, 0xe9, 0xc4, 0x2e, 0x42, 0x51, 0x42, 0xf7, 0x47, 0x97,
		0x95, 0x87, 0xe4, 0x52, 0x0b, 0x16, 0x99, 0x62, 0x7f, 0xdc, 0x5c, 0x62, 0x51, 0xf7, 0xbb, 0x2f,
		0xe3, 0x47, 0x58, 0x24, 0x66, 0xd6, 0x7e, 0x12, 0x59, 0xf5, 0xaa, 0xb6, 0x49, 0xcc, 0xb0, 0x34,
		0x8e, 0xd0, 0xcc, 0x50, 0x53, 0xf0, 0x26, 0x75, 0x04, 0x8a, 0x31, 0x9d, 0xf8, 0xbc, 0x6e, 0x76,
		0x2e, 0x97, 0x66, 0x4f, 0xa2, 0xd3, 0x38, 0x36, 0x53, 0xb7, 0x3b, 0xd3, 0xb5, 0x29, 0x98, 0x58,
		0x7f, 0x61, 0xa5, 0xcc, 0x6b, 0x7e, 0x48, 0x54, 0x92, 0x27, 0x6b, 0x8c, 0x64, 0x83, 0xc9, 0x34,
		0x1e, 0xa7, 0x66, 0x12, 0xf5, 0x4f, 0x9a, 0x02, 0x80, 0xbc, 0x10, 0xe0, 0x20, 0x08, 0x18, 0x09,
		0x03, 0x2e, 0x02, 0x81, 0x9d, 0x50, 0x60, 0x27, 0x18, 0x78, 0x09, 0x07, 0x9a, 0x02, 0x82, 0xa8,
		0x90, 0x20, 0x2f, 0x28, 0x32, 0x03, 0xe9, 0x56, 0x17, 0x9e, 0x8c, 0xed, 0x94, 0x4b, 0x79, 0x8f,
		0x09, 0x8e, 0x4d, 0xe2, 0x66, 0x52, 0x17, 0x1e, 0x9c, 0x04, 0x08, 0x43, 0x21, 0xc2, 0x4d, 0x90,
		0xb0, 0x15, 0x26, 0x6c, 0x05, 0x0a, 0x4f, 0xa1, 0x42, 0x5b, 0xb0, 0x10, 0x17, 0x2e, 0xd9, 0x5b,
		0xee, 0x5c, 0x8f, 0x04, 0xaf, 0x88, 0x9b, 0x2c, 0x46, 0x78, 0xbd, 0x5e, 0x28, 0x22, 0x16, 0x61,
		0x77, 0x5a, 0x96, 0xf8, 0xc2, 0xc0, 0xd6, 0x96, 0xa7, 0x94, 0x08, 0x25, 0x9b, 0x43, 0xa0, 0xfa,
		0xc7, 0x8f, 0x7f, 0x6e, 0x1a, 0xbb, 0x9e, 0xd1, 0x37, 0x8d, 0x83, 0xd3, 0xbf, 0x8b, 0x9f, 0xcb,
		0x37, 0xd5, 0x4f, 0x7f, 0xef, 0xdc, 0xdc, 0x7f, 0xf1, 0x9f, 0xc7, 0x7e, 0xac, 0xf8, 0x79, 0xe7,
		0xa6, 0xfa, 0xc4, 0x77, 0x2a, 0x37, 0xd5, 0x57, 0xfe, 0x1b, 0xdb, 0x37, 0x1f, 0x1f, 0xfc, 0x68,
		0xfc, 0x7a, 0xe9, 0xa9, 0x5f, 0x28, 0x3f, 0xf1, 0x0b, 0x5b, 0x4f, 0xfd, 0xc2, 0xd6, 0x13, 0xbf,
		0xf0, 0xa4, 0x49, 0xa5, 0x27, 0x7e, 0x61, 0xfb, 0xe6, 0x9f, 0x07, 0x3f, 0xff, 0xf1, 0xf1, 0x1f,
		0xad, 0xdc, 0x7c, 0xfa, 0xe7, 0xa9, 0xef, 0xed, 0xdc, 0xfc, 0x53, 0xfd, 0xf4, 0x89, 0x7e, 0x62,
		0x38, 0xe5, 0xe0, 0x70, 0xcd, 0x8e, 0xfd, 0x83, 0x9d, 0xd7, 0xfd, 0x0f, 0x6e, 0xb7, 0x2a, 0xb7,
		0xfb, 0x17, 0x03, 0xbf, 0x83, 0x20, 0x7b, 0x87, 0x6f, 0x31, 0x38, 0x22, 0xf4, 0xb0, 0xc8, 0x24,
		0xfa, 0x22, 0x14, 0x32, 0x99, 0x5c, 0xf2, 0x08, 0x61, 0x7c, 0xce, 0xfb, 0xdf, 0x9e, 0xf1, 0x3f,
		0xd8, 0xdf, 0xd9, 0xd9, 0x2d, 0x57, 0x35, 0xbb, 0x63, 0xd8, 0x1d, 0x2d, 0x2d, 0x96, 0x68, 0xa6,
		0x52, 0xa1, 0x7f, 0x36, 0x56, 0x22, 0xd2, 0xfa, 0xc3, 0x50, 0xb3, 0xae, 0x94, 0x90, 0x3d, 0xd1,
		0x4b, 0xb6, 0x0f, 0x9f, 0x48, 0x4f, 0x26, 0x5f, 0x55, 0xb4, 0xd9, 0x1d, 0x64, 0x1b, 0xd9, 0x8e,
		0xe1, 0x62, 0x69, 0x83, 0x51, 0x97, 0x12, 0x6e, 0x05, 0x8c, 0xc7, 0x0a, 0x19, 0xb7, 0x9e, 0xc2,
		0xac, 0x3b, 0x0c, 0xd7, 0x9a, 0xc6, 0xa3, 0xb5, 0x8d, 0x05, 0xb9, 0x12, 0xba, 0x40, 0xac, 0x99,
		0x95, 0xa7, 0x38, 0x66, 0x91, 0x37, 0x0d, 0xa6, 0x2b, 0x0e, 0x05, 0xb1, 0x4c, 0x14, 0x24, 0xd6,
		0x62, 0x99, 0x6c, 0x1e, 0x66, 0x62, 0x99, 0x6c, 0x81, 0x9c, 0x62, 0x99, 0x6c, 0x19, 0xea, 0x12,
		0xcb, 0x64, 0x4b, 0x97, 0x92, 0x58, 0x26, 0x5b, 0x8b, 0xaa, 0x0c, 0xc3, 0x65, 0xb2, 0x9e, 0x90,
		0xca, 0x57, 0xd7, 0xa1, 0xe8, 0x73, 0x5a, 0x25, 0xdb, 0x66, 0x60, 0xab, 0x3d, 0x79, 0xb4, 0x7b,
		0x5e, 0xc4, 0x28, 0x4f, 0xdc, 0x36, 0x4e, 0xb7, 0x3b, 0x93, 0x46, 0xb5, 0x9c, 0xfa, 0xd4, 0x72,
		0xec, 0x4f, 0xcb, 0xb5, 0xb5, 0xfe, 0xb3, 0xad, 0x5a, 0xd0, 0x01, 0x1b, 0xa4, 0x3c, 0x43, 0x4a,
		0x05, 0xa4, 0x80, 0x94, 0x97, 0x49, 0x69, 0xb5, 0xad, 0x03, 0xfb, 0x87, 0x7b, 0x50, 0x37, 0xbf,
		0x76, 0xc0, 0x09, 0x38, 0x79, 0x81, 0x93, 0x0e, 0xa2, 0x09, 0x28, 0x79, 0x9a, 0x12, 0xdc, 0xbb,
		0x00, 0x7a, 0xd6, 0x57, 0xe7, 0x32, 0x8c, 0x3b, 0xf9, 0x25, 0xa8, 0x02, 0x82, 0x40, 0xd0, 0xba,
		0xe9, 0x62, 0xf0, 0x03, 0xbd, 0x0c, 0x7a, 0xf8, 0xd3, 0xe3, 0x98, 0x5f, 0x81, 0x0d, 0xb0, 0x79,
		0x03, 0x36, 0x95, 0x32, 0x2e, 0x99, 0x5a, 0xec, 0x07, 0xae, 0xe1, 0x47, 0xfd, 0x23, 0x17, 0x71,
		0x1b, 0x78, 0x20, 0x3e, 0x03, 0x90, 0xd5, 0x02, 0x72, 0xef, 0xf2, 0x74, 0xb3, 0xf6, 0x6f, 0xb7,
		0x6e, 0x36, 0x50, 0x66, 0x07, 0x26, 0x2f, 0x61, 0x02, 0x44, 0x80, 0xc8, 0xb3, 0x88, 0x1c, 0xda,
		0x0d, 0xf7, 0x6b, 0xbb, 0x79, 0xd4, 0x02, 0x26, 0xc0, 0xe4, 0x49, 0x4c, 0x8e, 0x4d, 0xbb, 0x6e,
		0xee, 0xd5, 0x2d, 0x77, 0xcf, 0x6c, 0xd4, 0xfe, 0x63, 0xd7, 0x9c, 0x6f, 0xc0, 0x05, 0xb8, 0x3c,
		0x85, 0x4b, 0x06, 0x89, 0xbb, 0xdf, 0x6c, 0x74, 0x9c, 0xb6, 0x69, 0x37, 0x1c, 0x6c, 0x1b, 0x01,
		0x30, 0x4f, 0x02, 0x63, 0xfd, 0x70, 0xac, 0x46, 0xcd, 0xaa, 0x21, 0x1f, 0x81, 0x97, 0xd7, 0xf0,
		0x92, 0x2c, 0xfd, 0xdb, 0x0d, 0xc7, 0x6a, 0x1f, 0x98, 0xfb, 0x96, 0x6b, 0xd6, 0x6a, 0x6d, 0xab,
		0x83, 0x08, 0x03, 0x62, 0x9e, 0x27, 0xa6, 0x61, 0xd9, 0x5f, 0xbf, 0xed, 0x35, 0xdb, 0x00, 0x06,
		0xc0, 0xbc, 0x02, 0x98, 0x0a, 0x42, 0x0c, 0x88, 0xf9, 0x45, 0x62, 0x10, 0x62, 0x00, 0xcc, 0x6b,
		0x81, 0xa9, 0xdb, 0x8d, 0xef, 0xae, 0xe9, 0x38, 0x6d, 0x7b, 0xef, 0xc8, 0xb1, 0x80, 0x0a, 0x50,
		0x79, 0x1e, 0x95, 0x9a, 0x55, 0x37, 0xff, 0x00, 0x25, 0xa0, 0xe4, 0x65, 0x4a, 0xdc, 0x63, 0xb3,
		0x6d, 0x9b, 0x8e, 0xdd, 0x6c, 0x80, 0x17, 0xf0, 0xf2, 0x2c, 0x2f, 0x58, 0x20, 0x02, 0x22, 0x2f,
		0x20, 0x52, 0x6f, 0x42, 0xc8, 0x02, 0x92, 0x17, 0x20, 0x69, 0xb5, 0x9b, 0x8e, 0xb5, 0x1f, 0xa7,
		0x9c, 0xf4, 0x5c, 0x17, 0x78, 0x01, 0x2f, 0x4f, 0xf0, 0x72, 0x68, 0xfe, 0x48, 0x99, 0xc1, 0x6a,
		0x22, 0x68, 0x79, 0x15, 0x2d, 0x6d, 0xab, 0x63, 0xb5, 0x8f, 0xb1, 0x02, 0x0d, 0x66, 0x5e, 0xc9,
		0x8c, 0xdd, 0xb8, 0x8d, 0x32, 0x98, 0x37, 0x83, 0x96, 0x67, 0x69, 0x69, 0x5b, 0x1d, 0xbb, 0x76,
		0x64, 0xd6, 0x11, 0x5b, 0x40, 0xcb, 0xcb, 0xb4, 0xa0, 0x7b, 0x01, 0xe8, 0x79, 0x3f, 0x45, 0x2c,
		0xf7, 0x70, 0x33, 0x0c, 0x3a, 0x39, 0xc6, 0x07, 0xe8, 0x00, 0x9d, 0x37, 0xa1, 0xc3, 0x70, 0x8f,
		0x1d, 0xf0, 0x21, 0x83, 0x0f, 0xe7, 0xbd, 0xe0, 0xc0, 0x88, 0x0a, 0x46, 0xcc, 0xf7, 0x88, 0x03,
		0x24, 0x2a, 0x20, 0xf1, 0xde, 0x3b, 0x0e, 0x8e, 0xa8, 0x70, 0xc4, 0x7d, 0x4f, 0x39, 0x48, 0x22,
		0x45, 0x12, 0xdf, 0x8d, 0xa0, 0x00, 0x89, 0x10, 0x48, 0x15, 0x84, 0x24, 0x90, 0x34, 0x27, 0x92,
		0x10, 0x92, 0x00, 0xd2, 0x7b, 0x41, 0x62, 0xbb, 0x67, 0x1d, 0x08, 0x91, 0x42, 0x88, 0xd9, 0x9a,
		0x3c, 0xe8, 0xa1, 0x47, 0x0f, 0xc7, 0x3d, 0xee, 0xe0, 0x88, 0x14, 0x47, 0x58, 0x40, 0x03, 0x3a,
		0x6f, 0x44, 0x87, 0xd7, 0x9e, 0x78, 0xc0, 0x43, 0x0a, 0x1e, 0xb6, 0x7b, 0xe5, 0xc1, 0x11, 0x15,
		0x8e, 0x38, 0xef, 0xa1, 0x07, 0x45, 0x94, 0x28, 0xe2, 0xbd, 0xb7, 0x1e, 0x2c, 0x91, 0x61, 0x89,
		0xf1, 0x9e, 0x7b, 0x50, 0x44, 0x85, 0x22, 0xce, 0x7b, 0xf1, 0x41, 0x11, 0x15, 0x8a, 0x1c, 0xcb,
		0xad, 0x59, 0x07, 0xe6, 0x51, 0xdd, 0x71, 0x0f, 0x2d, 0xa7, 0x6d, 0xef, 0x03, 0x22, 0x40, 0xf4,
		0xab, 0x10, 0x1d, 0x35, 0xb2, 0xad, 0x69, 0x56, 0xcd, 0xad, 0x77, 0xb0, 0xad, 0x08, 0x10, 0xbd,
		0x01, 0xa2, 0x54, 0x5f, 0x5b, 0x35, 0x64, 0x34, 0x70, 0xf4, 0x0e, 0x8e, 0x1c, 0xbb, 0x6e, 0xff,
		0x97, 0x39, 0x45, 0xb8, 0xc1, 0x69, 0xdd, 0xbd, 0x33, 0x27, 0x67, 0x40, 0x19, 0xeb, 0x4b, 0xc0,
		0x02, 0x1d, 0x09, 0x58, 0xa0, 0x17, 0xc1, 0x0b, 0x74, 0x21, 0x68, 0xc9, 0x39, 0x2d, 0x93, 0xcb,
		0xed, 0xf7, 0xcd, 0x56, 0xd6, 0xbd, 0xa2, 0xed, 0x9a, 0xf5, 0xaf, 0xcd, 0xb6, 0xed, 0x7c, 0x3b,
		0x04, 0x29, 0x20, 0xe5, 0x59, 0x52, 0x6e, 0xff, 0x06, 0x54, 0x80, 0xca, 0x33, 0xa8, 0xa0, 0x25,
		0x0e, 0xf8, 0x59, 0xdb, 0xe4, 0xc4, 0x30, 0xf2, 0xe4, 0x99, 0x20, 0x8e, 0x49, 0x2b, 0x43, 0x08,
		0x15, 0xd2, 0x35, 0x7e, 0xae, 0xf4, 0x9f, 0x27, 0xed, 0xe7, 0x48, 0xd7, 0x3a, 0x9a, 0x96, 0x11,
		0x4d, 0x58, 0xba, 0x29, 0xe5, 0x50, 0x79, 0xca, 0x1f, 0x4a, 0xbd, 0x4a, 0x38, 0x45, 0xe9, 0x51,
		0xf7, 0x5c, 0x5c, 0x78, 0x23, 0x4f, 0x9d, 0xc7, 0xc9, 0xa8, 0x30, 0x1c, 0x09, 0xd9, 0x1d, 0xca,
		0xbe, 0x3f, 0x30, 0xa4, 0x50, 0x3f, 0x87, 0xe1, 0x5f, 0x86, 0x2f, 0x23, 0xe5, 0xc9, 0xae, 0x28,
		0xdc, 0x7f, 0x21, 0x7a, 0xf0, 0x4a, 0x61, 0x14, 0x0e, 0xd5, 0xb0, 0x3b, 0x0c, 0xa2, 0xec, 0xab,
		0x82, 0x1f, 0xf9, 0x51, 0x21, 0x10, 0x97, 0x22, 0x98, 0x7c, 0x2a, 0x04, 0xbe, 0xfc, 0xcb, 0x88,
		0x94, 0xa7, 0x84, 0xd1, 0xf3, 0x94, 0x77, 0xe6, 0x45, 0xa2, 0x10, 0x44, 0xa3, 0x82, 0x0a, 0x2e,
		0xa3, 0xf8, 0x8f, 0xc2, 0x85, 0x32, 0xfc, 0xd1, 0x65, 0xd9, 0x08, 0x85, 0xd7, 0x3d, 0xf7, 0xce,
		0xfc, 0xc0, 0x57, 0xd7, 0x85, 0x51, 0x28, 0xfa, 0xfe, 0x95, 0x88, 0x26, 0x5f, 0x14, 0xa2, 0xf1,
		0x59, 0xf2, 0x0b, 0xe9, 0xe7, 0x82, 0x3f, 0xba, 0xac, 0x18, 0xd1, 0x70, 0x1c, 0x76, 0x85, 0x11,
		0x0e, 0xc7, 0x4a, 0x84, 0x86, 0xdf, 0x2b, 0x24, 0xff, 0x0b, 0xcd, 0x14, 0x4a, 0xcf, 0x9d, 0x68,
		0x59, 0x44, 0xcc, 0xb1, 0x75, 0x71, 0xa5, 0x42, 0xcf, 0x18, 0xc7, 0xa4, 0x9f, 0x05, 0x82, 0xa4,
		0x53, 0xeb, 0x3f, 0xcf, 0x85, 0x24, 0x3b, 0x0b, 0x24, 0x1c, 0x04, 0xa7, 0x5a, 0x7c, 0x63, 0x23,
		0x8d, 0x18, 0x05, 0x75, 0x3d, 0x12, 0xda, 0xef, 0xda, 0x87, 0x61, 0xd7, 0x88, 0xe3, 0x97, 0x11,
		0x44, 0xbd, 0x33, 0x23, 0x7e, 0x31, 0xaa, 0xda, 0xad, 0x47, 0xda, 0x12, 0x4c, 0x44, 0xbc, 0x5d,
		0xfb, 0x40, 0xb8, 0x74, 0xa0, 0x77, 0x92, 0xf0, 0x48, 0x3a, 0x1f, 0x25, 0x76, 0x7e, 0x17, 0xd7,
		0x3f, 0x87, 0x61, 0x2f, 0x7e, 0x47, 0x12, 0xa2, 0x69, 0xcf, 0x49, 0xf5, 0x6f, 0x5e, 0x64, 0x86,
		0x83, 0xf1, 0x85, 0x90, 0x4a, 0xaf, 0x6a, 0x2a, 0x1c, 0x0b, 0xe2, 0x06, 0xcf, 0x58, 0x3b, 0x17,
		0xe4, 0x7f, 0x43, 0x35, 0xe3, 0xd7, 0xdf, 0x84, 0x9a, 0x88, 0xba, 0xa1, 0x3f, 0x22, 0xaf, 0x10,
		0xef, 0x04, 0xc8, 0xa6, 0x0c, 0xae, 0x35, 0x5f, 0x76, 0x83, 0x71, 0x4f, 0x68, 0xea, 0x5c, 0x68,
		0x76, 0xeb, 0xb2, 0xa2, 0xa5, 0x71, 0x45, 0x6b, 0x27, 0xb2, 0x4b, 0xb3, 0x6b, 0x5a, 0x77, 0x28,
		0x95, 0xe7, 0x4b, 0x11, 0x6a, 0xb1, 0xff, 0x9e, 0xc8, 0xf8, 0x27, 0xa3, 0xf1, 0x99, 0xe1, 0xd4,
		0x8f, 0x35, 0x3f, 0xd2, 0x12, 0xd4, 0x8a, 0xa5, 0x0d, 0xea, 0x8e, 0xcd, 0x24, 0x5e, 0xde, 0x8f,
		0x99, 0xbd, 0x19, 0xb2, 0xe8, 0x97, 0xf3, 0xd8, 0x85, 0xcf, 0x07, 0x21, 0x74, 0xce, 0x4e, 0x81,
		0xf2, 0x44, 0x9e, 0xca, 0x13, 0xe4, 0xac, 0x3a, 0xc5, 0x2c, 0x8f, 0x6f, 0xd9, 0x26, 0xdf, 0xe5,
		0x1a, 0x82, 0xd9, 0x4a, 0x8f, 0x54, 0x38, 0xee, 0x2a, 0x39, 0xd1, 0x3f, 0x8d, 0xf4, 0x09, 0xda,
		0x93, 0x07, 0xe8, 0xb6, 0x26, 0x8f, 0xcd, 0xb5, 0x23, 0x3f, 0x72, 0xeb, 0xf1, 0xf3, 0x72, 0xeb,
		0xd1, 0xc8, 0x75, 0x82, 0x4b, 0xf7, 0x50, 0xd9, 0xa3, 0xcb, 0x72, 0x7b, 0xe6, 0xa1, 0xb8, 0xad,
		0xe4, 0x59, 0xb8, 0x9d, 0xe4, 0x19, 0xb8, 0xf6, 0xe8, 0xb2, 0x92, 0x66, 0x89, 0x34, 0x49, 0xd8,
		0x3d, 0x5a, 0xb1, 0x9f, 0x4e, 0xec, 0x22, 0x14, 0x25, 0xf4, 0x94, 0x67, 0x23, 0xf2, 0x7b, 0x11,
		0xb9, 0x10, 0x91, 0xe9, 0xf4, 0x59, 0x23, 0x89, 0x45, 0xd8, 0xef, 0xbe, 0x8c, 0x55, 0x6a, 0x91,
		0x98, 0x59, 0xfb, 0x49, 0x14, 0xd5, 0xab, 0xda, 0x26, 0x31, 0xc3, 0xd2, 0x98, 0x41, 0x33, 0x1b,
		0x4d, 0x71, 0x9b, 0xd4, 0x0c, 0x28, 0xc6, 0x6f, 0xe2, 0x73, 0xb8, 0xd9, 0x79, 0x5b, 0xea, 0xb4,
		0x44, 0xa7, 0x6c, 0x6c, 0xa6, 0x69, 0x77, 0xa6, 0x66, 0x53, 0x30, 0xb1, 0xd6, 0xc2, 0x4a, 0x85,
		0xd7, 0xfc, 0x90, 0x66, 0xc0, 0xbb, 0xcd, 0xab, 0x74, 0x23, 0xca, 0x43, 0x0d, 0x40, 0x35, 0xa4,
		0xd0, 0x94, 0x02, 0xe4, 0x25, 0x01, 0x07, 0x69, 0xc0, 0x48, 0x22, 0x70, 0x91, 0x0a, 0xec, 0x24,
		0x03, 0x3b, 0xe9, 0xc0, 0x4b, 0x42, 0xd0, 0x94, 0x12, 0x44, 0x25, 0x05, 0x79, 0x69, 0x91, 0x19,
		0x98, 0x6e, 0x59, 0x62, 0xb3, 0x22, 0x98, 0x9a, 0x4b, 0xdc, 0x9f, 0x69, 0x0b, 0x0d, 0x36, 0x82,
		0x83, 0x93, 0xf0, 0x60, 0x28, 0x40, 0xb8, 0x09, 0x11, 0xb6, 0x82, 0x84, 0xad, 0x30, 0xe1, 0x29,
		0x50, 0x68, 0x0b, 0x15, 0xe2, 0x82, 0x85, 0x8d, 0x70, 0xc9, 0x0c, 0xf5, 0x82, 0xc1, 0x30, 0xf4,
		0xd5, 0xf9, 0x05, 0x9f, 0x00, 0x36, 0xcd, 0x11, 0xb7, 0xa6, 0x33, 0x89, 0x03, 0x13, 0x61, 0xb3,
		0xc9, 0xc4, 0x5c, 0x2e, 0x02, 0x87, 0xa3, 0xd0, 0x61, 0x2c, 0x78, 0xb8, 0x0a, 0x1f, 0xf6, 0x02,
		0x88, 0xbd, 0x10, 0xe2, 0x2d, 0x88, 0x78, 0x08, 0x23, 0x26, 0x02, 0x29, 0x43, 0xc1, 0xb9, 0x1e,
		0x09, 0x9e, 0x11, 0x7b, 0xec, 0x4b, 0xf5, 0x85, 0x53, 0xbc, 0x9e, 0xc8, 0x8f, 0x6d, 0x46, 0x26,
		0xb7, 0x3d, 0x39, 0x10, 0xec, 0x3a, 0x65, 0xf0, 0xeb, 0x71, 0xa0, 0x1f, 0xfa, 0x92, 0x5d, 0x22,
		0xcf, 0x8c, 0x4f, 0x1a, 0xaa, 0xf0, 0xd1, 0xa9, 0x0f, 0xec, 0x3f, 0x08, 0xbd, 0xae, 0xf2, 0x87,
		0xb2, 0xe6, 0x0f, 0x7c, 0x15, 0x31, 0x1e, 0x48, 0x43, 0x0c, 0x3c, 0xe5, 0x5f, 0xc6, 0xef, 0x45,
		0xdf, 0x0b, 0x22, 0x81, 0x86, 0x2a, 0xcb, 0x70, 0x5d, 0xef, 0x8a, 0xbf, 0xeb, 0x96, 0xb6, 0xb7,
		0xe1, 0xbc, 0x70, 0xde, 0x35, 0x10, 0xe6, 0xfc, 0xac, 0xe5, 0xd1, 0x74, 0x87, 0xfe, 0xf3, 0x64,
		0x90, 0x5c, 0xf4, 0x7e, 0xe0, 0x0d, 0x22, 0x7e, 0xa5, 0xe0, 0xd4, 0x6c, 0x94, 0x81, 0x17, 0x61,
		0x2e, 0xca, 0xc0, 0x4b, 0x04, 0x19, 0x65, 0xe0, 0xe5, 0xb9, 0x21, 0xca, 0xc0, 0x2b, 0x1e, 0x00,
		0xca, 0xc0, 0xd0, 0x1c, 0x13, 0x14, 0xf8, 0x96, 0x81, 0x85, 0x1c, 0x5f, 0x88, 0xd0, 0x63, 0xd2,
		0xbf, 0xe1, 0xbe, 0x08, 0x29, 0x96, 0x19, 0xd9, 0x6c, 0xc9, 0xf1, 0x05, 0xbf, 0x3c, 0xe3, 0x0c,
		0x3b, 0x2a, 0xf4, 0xe5, 0x80, 0x65, 0x91, 0x46, 0xdf, 0x4c, 0xba, 0xde, 0x5a, 0x66, 0xed, 0xd8,
		0x6a, 0x3b, 0x76, 0xc7, 0x3a, 0xb4, 0x1a, 0x8e, 0xce, 0xb0, 0x4a, 0x56, 0x4c, 0x0e, 0x84, 0x37,
		0x6b, 0x16, 0x47, 0xe3, 0x4b, 0xa9, 0xf1, 0x6e, 0xeb, 0x5b, 0x8b, 0xa3, 0xf9, 0x5b, 0xb1, 0xf9,
		0xd6, 0x8f, 0x56, 0xdd, 0xde, 0xb7, 0x1d, 0xb7, 0x71, 0x54, 0xaf, 0x73, 0x1c, 0x45, 0x39, 0x1e,
		0xc5, 0xb1, 0x59, 0x3f, 0x62, 0x89, 0xd0, 0x76, 0x6c, 0x7d, 0xbd, 0xb9, 0x6f, 0xd6, 0x79, 0xf5,
		0xa8, 0x66, 0x56, 0x91, 0xd7, 0x9d, 0xa1, 0x9d, 0x08, 0x5a, 0x86, 0xa1, 0xfe, 0xae, 0x87, 0x56,
		0xb5, 0x2d, 0x86, 0x98, 0xa7, 0x84, 0xb3, 0x5a, 0xe4, 0xbe, 0x55, 0x94, 0x71, 0x76, 0x22, 0x7f,
		0xee, 0xe1, 0x09, 0xd3, 0x93, 0xdc, 0x54, 0xd5, 0x4a, 0x0c, 0x8d, 0xbf, 0xaf, 0x6e, 0x58, 0x2e,
		0xe1, 0x4c, 0x32, 0x53, 0x55, 0x2b, 0x63, 0x15, 0x04, 0xf3, 0x7d, 0xfa, 0x71, 0xda, 0x8f, 0x94,
		0xa9, 0x54, 0xc8, 0x6b, 0xce, 0x7f, 0xe8, 0x4b, 0x2b, 0x10, 0x17, 0x42, 0x72, 0x5b, 0xe8, 0xd5,
		0x0f, 0xbd, 0xab, 0x19, 0xcb, 0x8b, 0x5f, 0xca, 0xe5, 0xca, 0x4e, 0xb9, 0xbc, 0xb9, 0xb3, 0xb5,
		0xb3, 0xb9, 0xbb, 0xbd, 0x5d, 0xac, 0x14, 0x39, 0xed, 0x0a, 0x6b, 0x86, 0x3d, 0x11, 0x8a, 0xde,
		0xde, 0xb5, 0x5e, 0xd5, 0xe4, 0x38, 0x08, 0x38, 0x9a, 0x7e, 0x14, 0x89, 0x90, 0xd5, 0x4a, 0x3b,
		0xd6, 0x57, 0xe7, 0xf1, 0xfe, 0x5f, 0x4e, 0xf6, 0xbb, 0x30, 0x5b, 0x5f, 0x4d, 0xcd, 0xc6, 0xfa,
		0xea, 0x22, 0xcc, 0xc5, 0xfa, 0xea, 0x12, 0x41, 0xc6, 0xfa, 0xea, 0xf2, 0xdc, 0x10, 0xeb, 0xab,
		0x2b, 0x1e, 0x00, 0xd6, 0x57, 0xa1, 0x39, 0x26, 0x28, 0xf0, 0x3e, 0x66, 0xb3, 0x55, 0x62, 0xb8,
		0xb4, 0xba, 0x83, 0x73, 0x36, 0x0b, 0xfe, 0xc0, 0x39, 0x9b, 0xe5, 0x1a, 0x8f, 0x73, 0x36, 0x54,
		0x62, 0x23, 0xce, 0xd9, 0xac, 0xc0, 0x75, 0xf3, 0x70, 0xce, 0xa6, 0x5c, 0xda, 0x2d, 0xef, 0x56,
		0x76, 0x4a, 0xbb, 0x38, 0x6e, 0x03, 0x1f, 0x5e, 0x07, 0x81, 0xce, 0xcf, 0x5a, 0x1c, 0xb7, 0x59,
		0x07, 0x0b, 0xa9, 0x37, 0xb0, 0x62, 0x72, 0x23, 0x72, 0x66, 0x6f, 0x5e, 0xae, 0xda, 0x99, 0xb9,
		0x0b, 0x64, 0xe6, 0x6b, 0xca, 0x57, 0x23, 0xd3, 0xf7, 0x37, 0xca, 0x17, 0x4b, 0xf2, 0x58, 0x10,
		0x62, 0xb5, 0x10, 0xc4, 0x64, 0x01, 0x08, 0x0d, 0x64, 0x17, 0x09, 0x2a, 0x1a, 0xc8, 0x2e, 0xce,
		0xbd, 0xd0, 0x40, 0x76, 0xd9, 0x62, 0x0c, 0x0d, 0x64, 0xd7, 0x4d, 0x7f, 0xb3, 0x59, 0xb0, 0xc9,
		0x22, 0x6e, 0x20, 0xbc, 0x7e, 0x28, 0xfa, 0x1c, 0x22, 0xee, 0xf4, 0xf0, 0x1b, 0x83, 0x25, 0x1a,
		0xbd, 0x35, 0x99, 0xd2, 0x64, 0x57, 0xbf, 0xa7, 0x12, 0x0c, 0x53, 0x81, 0x1c, 0x59, 0x46, 0xf5,
		0xfa, 0x8d, 0xef, 0xe2, 0x9a, 0xba, 0xe8, 0xe7, 0xb1, 0x93, 0x98, 0xcf, 0xce, 0x61, 0xd6, 0x3b,
		0x85, 0x19, 0xed, 0x0c, 0x66, 0xb4, 0x13, 0x98, 0x6a, 0x74, 0x62, 0x52, 0xa2, 0xcc, 0x79, 0x69,
		0x92, 0xf2, 0x1d, 0x71, 0x0b, 0xbc, 0x0e, 0x3c, 0xfd, 0x5b, 0xc7, 0xef, 0xd1, 0x54, 0x62, 0x37,
		0xb8, 0x43, 0x95, 0x53, 0x4c, 0xd3, 0xc5, 0x95, 0x0a, 0x3d, 0x63, 0x1c, 0xa3, 0x79, 0x16, 0xd0,
		0x9c, 0xf8, 0xe9, 0xa1, 0xe8, 0x8b, 0x50, 0xc8, 0x2e, 0xdd, 0x8d, 0x62, 0x0c, 0x6e, 0xd6, 0xec,
		0x85, 0x5e, 0x5f, 0x19, 0xbe, 0x50, 0xfd, 0xa4, 0x8c, 0x63, 0x44, 0x62, 0x10, 0x6b, 0x2d, 0x23,
		0x1c, 0x8e, 0x95, 0x2f, 0x07, 0x86, 0xb8, 0x52, 0x42, 0x46, 0xfe, 0x50, 0x46, 0x1b, 0x5a, 0x34,
		0x3e, 0x33, 0x9c, 0xfa, 0xb1, 0xb6, 0x55, 0xd5, 0x9c, 0xfa, 0xf1, 0x89, 0x2c, 0x6e, 0x6d, 0x7f,
		0xd6, 0x4a, 0xe9, 0x1f, 0x95, 0xf8, 0x8f, 0x9d, 0x0d, 0xdc, 0xd0, 0x39, 0x97, 0x59, 0xce, 0xb4,
		0x9e, 0x79, 0x8b, 0x38, 0x2e, 0xe9, 0x9c, 0xb3, 0x58, 0x9b, 0x29, 0x61, 0xce, 0xdb, 0x07, 0x50,
		0x6d, 0x60, 0x6e, 0xd5, 0x29, 0x3d, 0x78, 0xf5, 0x9f, 0xe7, 0x42, 0x22, 0xd1, 0xbd, 0x3d, 0xd1,
		0x65, 0xf5, 0x4a, 0x75, 0x3d, 0x12, 0xda, 0xef, 0xda, 0x87, 0xc9, 0xc2, 0x85, 0x11, 0x44, 0xbd,
		0x33, 0x23, 0x7e, 0x31, 0xaa, 0xda, 0x2d, 0xb7, 0x6d, 0x99, 0xfb, 0xdf, 0xcc, 0x3d, 0xbb, 0x6e,
		0x3b, 0x7f, 0xb8, 0xad, 0xb6, 0x75, 0x60, 0xff, 0x70, 0x3b, 0x76, 0xed, 0x03, 0x12, 0xdb, 0x5c,
		0x13, 0x5b, 0x42, 0x33, 0x72, 0xda, 0xe2, 0x72, 0xda, 0x7b, 0x71, 0xc7, 0xe6, 0x99, 0x37, 0xbc,
		0x01, 0x35, 0x11, 0x75, 0x43, 0x7f, 0xc4, 0x62, 0x97, 0x5a, 0x16, 0x18, 0x9b, 0x32, 0xb8, 0xd6,
		0x7c, 0xd9, 0x0d, 0xc6, 0x3d, 0xa1, 0xa9, 0x73, 0xa1, 0xa5, 0xa5, 0x04, 0xad, 0x63, 0xd7, 0xb4,
		0xee, 0x50, 0x2a, 0xcf, 0x97, 0x22, 0xd4, 0x62, 0x87, 0x3d, 0x91, 0xf1, 0xb7, 0xa7, 0x0a, 0xc8,
		0x8f, 0xb4, 0x84, 0xad, 0xad, 0x0d, 0xea, 0x8e, 0xcc, 0x68, 0x43, 0xc3, 0x6c, 0x8c, 0xec, 0xcd,
		0xd0, 0xc4, 0x60, 0x61, 0x90, 0xe3, 0x6e, 0x86, 0x3b, 0x21, 0x73, 0x0e, 0x8e, 0x80, 0x55, 0x50,
		0xcc, 0x4b, 0x16, 0x39, 0x2f, 0x41, 0xcd, 0xf2, 0x39, 0x5f, 0xa6, 0xbd, 0xfe, 0x92, 0xc7, 0x75,
		0x17, 0x5a, 0x01, 0x8f, 0x8e, 0xc3, 0x12, 0x72, 0x0d, 0x3d, 0xdd, 0xaa, 0x4f, 0xcd, 0x23, 0x32,
		0xf9, 0x99, 0x9a, 0x47, 0x2c, 0x94, 0x4c, 0x37, 0x64, 0x11, 0x33, 0x8b, 0xea, 0x0e, 0x6d, 0xca,
		0x3b, 0xb2, 0x19, 0xec, 0xc0, 0xa6, 0x3e, 0x41, 0x61, 0xb3, 0xc3, 0x9a, 0xcd, 0x1c, 0x84, 0xc7,
		0x0e, 0x6a, 0x2c, 0x91, 0x3f, 0x5b, 0xec, 0xf1, 0x69, 0xee, 0xf1, 0xd3, 0x15, 0xe5, 0xad, 0xda,
		0x59, 0x38, 0x4e, 0xac, 0xa4, 0xba, 0xcf, 0x94, 0xf4, 0x81, 0x2d, 0xf2, 0x07, 0xb5, 0x38, 0x1c,
		0xd0, 0x62, 0x74, 0x30, 0x8b, 0xe3, 0xfa, 0x0e, 0x8b, 0x83, 0x58, 0xbc, 0x57, 0x78, 0xc8, 0x1f,
		0xbc, 0xc2, 0xd9, 0x86, 0x5f, 0x79, 0x6b, 0xc9, 0x1f, 0xb0, 0xca, 0x22, 0xa6, 0xdf, 0x13, 0x52,
		0xf9, 0xea, 0x9a, 0xf6, 0xe1, 0xaa, 0x6c, 0x0e, 0x4f, 0xf9, 0x7c, 0x80, 0x3d, 0x79, 0x94, 0x7b,
		0x5e, 0xc4, 0xe8, 0xd0, 0xbd, 0xdd, 0xb1, 0x3b, 0x6e, 0xe7, 0x68, 0xcf, 0xa9, 0x1f, 0xbb, 0xce,
		0x1f, 0x2d, 0xea, 0xf7, 0x0f, 0xa5, 0xcd, 0xa6, 0x22, 0x16, 0xed, 0x04, 0x99, 0xf5, 0xe1, 0xbe,
		0xbf, 0x83, 0xc0, 0x6e, 0x1d, 0x97, 0xdd, 0x76, 0xf3, 0xc8, 0xb1, 0xda, 0xae, 0x5d, 0xd3, 0xd1,
		0xa2, 0x1d, 0x44, 0xb4, 0x8e, 0x2b, 0x20, 0x02, 0x44, 0x3c, 0xd8, 0x65, 0x74, 0x50, 0x37, 0xbf,
		0x76, 0xc0, 0x03, 0x78, 0xb8, 0xdd, 0x75, 0x06, 0x1a, 0x40, 0x43, 0x2a, 0x2b, 0x3b, 0x1c, 0x74,
		0x25, 0x47, 0x7d, 0xc9, 0x8b, 0x92, 0xdc, 0xe9, 0x4d, 0x46, 0x71, 0x24, 0x7f, 0xa4, 0x54, 0x40,
		0x0a, 0x48, 0xc9, 0x9b, 0x3e, 0x05, 0x27, 0xd0, 0xad, 0xa0, 0x84, 0x2e, 0x25, 0x8e, 0xf9, 0x15,
		0x78, 0x00, 0x8f, 0x67, 0xf0, 0xa8, 0x94, 0x71, 0x09, 0xd6, 0x7c, 0x3f, 0x4e, 0x51, 0x47, 0x58,
		0xfb, 0x3a, 0x02, 0x8b, 0xb8, 0x0b, 0x0c, 0x10, 0x5f, 0x01, 0xc2, 0x62, 0x40, 0xe8, 0xdc, 0x05,
		0xc1, 0xac, 0xfd, 0xdb, 0xad, 0x9b, 0x0d, 0x94, 0x99, 0x81, 0xc3, 0x14, 0x07, 0xa0, 0x00, 0x14,
		0x12, 0x14, 0x0e, 0xed, 0x86, 0xfb, 0xb5, 0xdd, 0x3c, 0x6a, 0x01, 0x07, 0xe0, 0x60, 0x1e, 0x9b,
		0x76, 0xdd, 0xdc, 0xab, 0x5b, 0xee, 0x9e, 0xd9, 0xa8, 0xfd, 0xc7, 0xae, 0x39, 0xdf, 0x80, 0x05,
		0xb0, 0xc8, 0x60, 0x70, 0xf7, 0x9b, 0x8d, 0x8e, 0xd3, 0x36, 0xed, 0x86, 0x83, 0xed, 0x0b, 0x00,
		0xc3, 0xb5, 0x7e, 0x38, 0x56, 0xa3, 0x66, 0xd5, 0x90, 0x47, 0xc0, 0xc5, 0x83, 0xa5, 0x69, 0xbb,
		0xe1, 0x58, 0xed, 0x03, 0x73, 0xdf, 0x72, 0xcd, 0x5a, 0xad, 0x6d, 0x75, 0x10, 0x31, 0x40, 0x46,
		0x4a, 0x46, 0xc3, 0xb2, 0xbf, 0x7e, 0xdb, 0x6b, 0xb6, 0x01, 0x06, 0xc0, 0xb8, 0xb3, 0x47, 0x01,
		0x21, 0x03, 0x64, 0x3c, 0x4e, 0x06, 0x42, 0x06, 0xc0, 0xb8, 0x0f, 0x46, 0xdd, 0x6e, 0x7c, 0x77,
		0x4d, 0xc7, 0x69, 0xdb, 0x7b, 0x47, 0x8e, 0x05, 0x24, 0x80, 0x44, 0x8a, 0x44, 0xcd, 0xaa, 0x9b,
		0x7f, 0x80, 0x06, 0xd0, 0x70, 0x4b, 0x83, 0x7b, 0x6c, 0xb6, 0x6d, 0xd3, 0xb1, 0x9b, 0x0d, 0x70,
		0x01, 0x2e, 0x12, 0x2e, 0xb0, 0x00, 0x02, 0x14, 0x26, 0x28, 0xd4, 0x9b, 0x10, 0x94, 0x80, 0x61,
		0x02, 0x43, 0xab, 0xdd, 0x74, 0xac, 0xfd, 0x38, 0x55, 0xa4, 0xe7, 0x70, 0xc0, 0xc5, 0xda, 0x73,
		0x71, 0x68, 0xfe, 0x48, 0xd9, 0xc0, 0xaa, 0x18, 0xa8, 0xb8, 0x43, 0x45, 0xdb, 0xea, 0x58, 0xed,
		0x63, 0xac, 0x98, 0x82, 0x8d, 0x7b, 0x6c, 0xd8, 0x8d, 0xdb, 0xa8, 0x81, 0xf9, 0x28, 0xa8, 0x48,
		0xa8, 0x68, 0x5b, 0x1d, 0xbb, 0x76, 0x64, 0xd6, 0x11, 0x2b, 0x40, 0x05, 0x4e, 0x7d, 0x83, 0x92,
		0xb7, 0xd0, 0xc2, 0x6a, 0x2f, 0x2f, 0xa3, 0x20, 0x92, 0x43, 0x4c, 0x80, 0x08, 0x10, 0xc9, 0xcb,
		0xde, 0x5f, 0x60, 0xb2, 0x32, 0x4c, 0x38, 0xee, 0x09, 0x06, 0x2e, 0xab, 0xc2, 0x85, 0xe9, 0x5e,
		0x61, 0x00, 0xb3, 0x2a, 0x60, 0x78, 0xee, 0x21, 0x06, 0x2f, 0xab, 0xe2, 0x85, 0xeb, 0xde, 0x62,
		0x10, 0xb3, 0x52, 0x62, 0xf8, 0x6d, 0x20, 0x04, 0x30, 0x2b, 0x04, 0xa6, 0x82, 0x10, 0x03, 0x62,
		0x7e, 0x91, 0x18, 0x84, 0x18, 0x00, 0xf3, 0x5a, 0x60, 0xd8, 0xed, 0x5d, 0x06, 0x2a, 0x2b, 0x45,
		0x85, 0xc9, 0x1a, 0x32, 0x28, 0x59, 0x3d, 0x25, 0x9c, 0xf6, 0x3a, 0x83, 0x97, 0x95, 0xf2, 0x82,
		0x05, 0x22, 0x20, 0x92, 0x8b, 0xbd, 0xd1, 0x80, 0x64, 0xa5, 0x90, 0xb0, 0xdb, 0x33, 0x0d, 0x5e,
		0x56, 0xc5, 0x0b, 0xc7, 0xbd, 0xd4, 0xa0, 0x65, 0x95, 0xb4, 0xf0, 0xdc, 0x63, 0x0d, 0x66, 0x56,
		0xc6, 0x0c, 0xc3, 0xbd, 0xd7, 0xa0, 0x65, 0x55, 0xb4, 0x70, 0xdc, 0x93, 0x0d, 0x5a, 0x56, 0x45,
		0x8b, 0x63, 0xb9, 0x35, 0xeb, 0xc0, 0x3c, 0xaa, 0x3b, 0xee, 0xa1, 0xe5, 0xb4, 0xed, 0x7d, 0xc0,
		0x02, 0x58, 0x9e, 0x82, 0xe5, 0xa8, 0x91, 0x6d, 0x81, 0xb2, 0x6a, 0x6e, 0xbd, 0x83, 0x6d, 0x2d,
		0x80, 0xe5, 0x19, 0x58, 0x52, 0x9d, 0x6b, 0xd5, 0x90, 0x89, 0xc0, 0xcb, 0x2b, 0x78, 0x71, 0xec,
		0xba, 0xfd, 0x5f, 0xa6, 0xb4, 0xe0, 0x26, 0x95, 0x75, 0xf1, 0x3a, 0xe6, 0x67, 0xf3, 0x18, 0xea,
		0x3d, 0x40, 0x01, 0x5d, 0x07, 0x28, 0xa0, 0xdf, 0xc0, 0x05, 0x74, 0x1a, 0xa8, 0x20, 0x42, 0xc5,
		0xe4, 0xf2, 0xe5, 0x7d, 0xb3, 0x95, 0x9d, 0xfa, 0x6f, 0xbb, 0x66, 0xfd, 0x6b, 0xb3, 0x6d, 0x3b,
		0xdf, 0x0e, 0x41, 0x04, 0x88, 0x48, 0x88, 0xb8, 0xfd, 0x1b, 0x90, 0x00, 0x12, 0x68, 0x0d, 0x02,
		0x4e, 0xf2, 0x9c, 0x54, 0x18, 0x45, 0x92, 0x3c, 0x92, 0xc2, 0x29, 0xd9, 0x64, 0xa8, 0xa0, 0x72,
		0xb8, 0x06, 0xcf, 0x91, 0xee, 0xf3, 0xa3, 0xf9, 0xdc, 0xe8, 0x59, 0x45, 0xcb, 0x22, 0x62, 0x09,
		0x46, 0x37, 0xa5, 0x1c, 0x2a, 0x4f, 0xf9, 0x43, 0xa9, 0x57, 0x09, 0xa6, 0x14, 0x3d, 0xea, 0x9e,
		0x8b, 0x0b, 0x6f, 0xe4, 0xa9, 0xf3, 0x38, 0x79, 0x14, 0x86, 0x23, 0x21, 0xbb, 0x43, 0xd9, 0xf7,
		0x07, 0x86, 0x14, 0xea, 0xe7, 0x30, 0xfc, 0xcb, 0xf0, 0x65, 0xa4, 0x3c, 0xd9, 0x15, 0x85, 0xfb,
		0x2f, 0x44, 0x0f, 0x5e, 0x29, 0x8c, 0xc2, 0xa1, 0x1a, 0x76, 0x87, 0x41, 0x94, 0x7d, 0x55, 0xf0,
		0x23, 0x3f, 0x2a, 0x04, 0xe2, 0x52, 0x04, 0x93, 0x4f, 0x85, 0xc0, 0x97, 0x7f, 0x19, 0x91, 0xf2,
		0x94, 0x30, 0x7a, 0x9e, 0xf2, 0xce, 0xbc, 0x48, 0x14, 0x82, 0x68, 0x54, 0x50, 0xc1, 0x65, 0x14,
		0xff, 0x51, 0xb8, 0x50, 0x86, 0x3f, 0xba, 0x2c, 0x1b, 0xa1, 0xf0, 0xba, 0xe7, 0xde, 0x99, 0x1f,
		0xf8, 0xea, 0xba, 0x30, 0x0a, 0x45, 0xdf, 0xbf, 0x12, 0xd1, 0xe4, 0x8b, 0x42, 0x34, 0x3e, 0x4b,
		0x7e, 0x21, 0xfd, 0x5c, 0x48, 0xfe, 0x3d, 0x5a, 0xc9, 0x8d, 0x8e, 0x63, 0x10, 0x72, 0x0a, 0x5d,
		0x79, 0x03, 0x72, 0x9e, 0x90, 0x89, 0xa7, 0xd8, 0x38, 0x62, 0x01, 0xe4, 0xbb, 0x2f, 0x7b, 0x7a,
		0x55, 0x2b, 0x12, 0x33, 0x6b, 0x3f, 0x09, 0x12, 0x7a, 0x55, 0xdb, 0x24, 0x66, 0x58, 0x2b, 0x09,
		0x0f, 0x34, 0x83, 0xed, 0x14, 0xb3, 0x61, 0xd7, 0x88, 0xc3, 0x22, 0xc1, 0x69, 0xbe, 0xde, 0x19,
		0x8e, 0xc3, 0xae, 0x20, 0xf9, 0xf8, 0x52, 0x77, 0x10, 0xd7, 0x3f, 0x87, 0x61, 0xec, 0x11, 0x7a,
		0x9a, 0x08, 0x88, 0xd6, 0x4a, 0xf4, 0x6f, 0x5e, 0x64, 0x86, 0x83, 0xf1, 0x85, 0x90, 0x4a, 0xaf,
		0x6a, 0x2a, 0x1c, 0x0b, 0xa2, 0x86, 0xce, 0x58, 0x99, 0x81, 0x09, 0x91, 0xc9, 0x4a, 0x64, 0xd6,
		0xfc, 0x90, 0xa8, 0xba, 0x4c, 0x54, 0x19, 0xd9, 0x60, 0x32, 0x8d, 0xc7, 0xa9, 0x99, 0x44, 0xfd,
		0x93, 0xa6, 0x00, 0x20, 0x2f, 0x04, 0x38, 0x08, 0x02, 0x46, 0xc2, 0x80, 0x8b, 0x40, 0x60, 0x27,
		0x14, 0xd8, 0x09, 0x06, 0x5e, 0xc2, 0x81, 0xa6, 0x80, 0x20, 0x2a, 0x24, 0xc8, 0x0b, 0x8a, 0xd9,
		0x2a, 0xc2, 0x56, 0x89, 0x7e, 0x10, 0x9a, 0xa9, 0x2b, 0x6c, 0x95, 0xa8, 0x07, 0xa0, 0x89, 0xd0,
		0xd8, 0x24, 0x6e, 0x26, 0x75, 0xc1, 0xc1, 0x49, 0x78, 0x30, 0x14, 0x20, 0xdc, 0x84, 0x08, 0x5b,
		0x41, 0xc2, 0x56, 0x98, 0xf0, 0x14, 0x28, 0xb4, 0x85, 0x0a, 0x71, 0xc1, 0x92, 0xbd, 0xe5, 0xce,
		0xf5, 0x48, 0xf0, 0x8a, 0xb8, 0x63, 0x5f, 0x2a, 0xf2, 0xda, 0x60, 0x56, 0x1f, 0xec, 0x30, 0x30,
		0xb5, 0xed, 0xc9, 0x81, 0x60, 0xb3, 0x2f, 0x8d, 0xcf, 0x4e, 0x23, 0xfd, 0xd0, 0x97, 0x6c, 0x32,
		0x6e, 0x66, 0x74, 0xb2, 0x4d, 0x91, 0xbe, 0x60, 0x7c, 0x60, 0xf7, 0x41, 0xe8, 0x75, 0x95, 0x3f,
		0x94, 0x35, 0x7f, 0xe0, 0xab, 0x88, 0xe1, 0x00, 0x1a, 0x62, 0xe0, 0x29, 0xff, 0x32, 0x7e, 0xf6,
		0x7d, 0x2f, 0x88, 0x04, 0xb6, 0x29, 0x2e, 0xc2, 0x25, 0xbd, 0x2b, 0xbe, 0x2e, 0x59, 0x2e, 0xed,
		0x96, 0x77, 0x2b, 0x3b, 0xa5, 0xdd, 0x6d, 0xf8, 0x26, 0x7c, 0x33, 0x07, 0x02, 0x99, 0x8f, 0x95,
		0xa7, 0x98, 0x68, 0xbc, 0xc3, 0x7d, 0xea, 0x7e, 0xa4, 0x4c, 0xa5, 0x42, 0x1e, 0x93, 0x8d, 0x43,
		0x5f, 0x5a, 0x81, 0x88, 0xe7, 0xc2, 0x4c, 0x42, 0x55, 0x9c, 0xd5, 0x66, 0x2c, 0x2e, 0x7e, 0x29,
		0x97, 0x2b, 0x3b, 0xe5, 0xf2, 0xe6, 0xce, 0xd6, 0xce, 0xe6, 0xee, 0xf6, 0x76, 0xb1, 0x52, 0x64,
		0x90, 0x30, 0xf4, 0x66, 0xd8, 0x13, 0xa1, 0xe8, 0xed, 0x5d, 0xeb, 0x55, 0x4d, 0x8e, 0x83, 0x80,
		0x93, 0xc9, 0x47, 0x91, 0x08, 0x59, 0xe4, 0x06, 0xea, 0x91, 0x42, 0x5c, 0xa9, 0xd0, 0x33, 0xc6,
		0x32, 0x52, 0xde, 0x59, 0xc0, 0xa4, 0x38, 0x11, 0x8a, 0xbe, 0x08, 0x85, 0xec, 0x62, 0x0e, 0xbd,
		0x08, 0xe5, 0x35, 0x3d, 0xa9, 0x73, 0xb0, 0xbf, 0x5d, 0xdc, 0xda, 0xac, 0x6a, 0xa6, 0xd6, 0x1a,
		0x06, 0x7e, 0xf7, 0x5a, 0xdb, 0x1f, 0x4a, 0x15, 0x0e, 0x03, 0xed, 0x50, 0x74, 0xcf, 0x3d, 0xe9,
		0x47, 0x17, 0x9a, 0x2f, 0x35, 0xbb, 0x63, 0xd8, 0x1d, 0xed, 0x28, 0xf2, 0xe5, 0xe0, 0x44, 0x9a,
		0xbd, 0x0b, 0x5f, 0xfa, 0x91, 0x0a, 0x13, 0xed, 0xa6, 0x39, 0xde, 0x20, 0xda, 0xd0, 0xa2, 0xf1,
		0x99, 0xe1, 0xd4, 0x8f, 0xb5, 0xe2, 0x86, 0xce, 0x68, 0xde, 0xc2, 0xac, 0x7e, 0x9f, 0xd9, 0x3d,
		0x53, 0xc7, 0xbf, 0x75, 0x13, 0x66, 0xe2, 0x9f, 0x6b, 0x49, 0x3f, 0x1b, 0xc0, 0x6c, 0x69, 0x7f,
		0x11, 0x7e, 0x84, 0xd9, 0x10, 0x66, 0x43, 0x78, 0x7e, 0x6c, 0x2d, 0xa3, 0xba, 0xaf, 0x86, 0xf8,
		0x69, 0xb0, 0xcc, 0xce, 0xbc, 0x9c, 0x0a, 0x53, 0xde, 0x80, 0xe2, 0xc9, 0x30, 0xba, 0xce, 0x83,
		0x7d, 0xf6, 0xcc, 0xa7, 0x72, 0xfa, 0xcf, 0x73, 0x21, 0xc9, 0xce, 0xda, 0x18, 0x6c, 0xc1, 0xde,
		0xd8, 0x48, 0x23, 0x46, 0x41, 0x5d, 0x8f, 0x84, 0xf6, 0xbb, 0xf6, 0x61, 0xb2, 0x73, 0xc4, 0x08,
		0xa2, 0xde, 0x99, 0x11, 0xbf, 0x18, 0x55, 0xed, 0xd6, 0xbd, 0xd6, 0x91, 0xe6, 0xd7, 0x0f, 0xd8,
		0xb3, 0x3d, 0xd7, 0xa9, 0x55, 0x82, 0x31, 0x76, 0x6c, 0x2f, 0x6e, 0xd6, 0xf4, 0x66, 0xce, 0xe9,
		0x4a, 0x51, 0xc2, 0x1e, 0x58, 0x13, 0x51, 0x37, 0xf4, 0x47, 0xe4, 0x95, 0xdf, 0x9d, 0x50, 0xd8,
		0x94, 0xc1, 0xb5, 0xe6, 0xcb, 0x6e, 0x30, 0xee, 0x09, 0x4d, 0x9d, 0x0b, 0x4d, 0x79, 0x03, 0xad,
		0x3b, 0x94, 0xca, 0xf3, 0xa5, 0x08, 0xb5, 0xd8, 0x45, 0x93, 0x97, 0xa7, 0xf3, 0x66, 0x3f, 0xd2,
		0x62, 0x6e, 0x4e, 0x24, 0xf9, 0x42, 0x14, 0xa7, 0xe2, 0xd3, 0x6c, 0x54, 0xec, 0xcd, 0x60, 0xc4,
		0x60, 0x31, 0x81, 0x63, 0x99, 0xe9, 0x4e, 0x90, 0x7c, 0x8f, 0x07, 0xa0, 0xa0, 0x90, 0xa7, 0x82,
		0xc2, 0x6f, 0x28, 0x58, 0x71, 0x9a, 0xa9, 0xa1, 0xed, 0xce, 0xd2, 0x0a, 0x2c, 0x14, 0xbb, 0x58,
		0x44, 0x2a, 0x1c, 0x77, 0x95, 0x9c, 0xe8, 0x98, 0x46, 0xfa, 0xbc, 0xec, 0xc9, 0xe3, 0x72, 0x5b,
		0x93, 0x87, 0xe4, 0xda, 0x91, 0x1f, 0xb9, 0xf5, 0xf8, 0xe9, 0xb8, 0xf5, 0x68, 0xe4, 0x3a, 0xc1,
		0xa5, 0x7b, 0xa8, 0xec, 0xd1, 0x65, 0xb9, 0x3d, 0xf3, 0x08, 0xdc, 0xf4, 0x1c, 0x8f, 0xdb, 0x49,
		0x46, 0xec, 0x3a, 0xde, 0x00, 0x6d, 0x86, 0xc8, 0x07, 0x01, 0x5d, 0x79, 0x83, 0x4a, 0x99, 0x74,
		0xa3, 0xa1, 0x4a, 0x19, 0xad, 0x86, 0x5e, 0x65, 0x16, 0x5a, 0x0d, 0xbd, 0x03, 0x34, 0xb4, 0x1a,
		0x9a, 0xc7, 0xbc, 0x0b, 0xad, 0x86, 0xe6, 0x3e, 0xb5, 0x42, 0xab, 0x21, 0x96, 0xc2, 0x1a, 0xad,
		0x86, 0xde, 0x17, 0x8f, 0xd1, 0x6a, 0x28, 0x7f, 0x42, 0x80, 0x83, 0x20, 0x60, 0x24, 0x0c, 0xb8,
		0x08, 0x04, 0x76, 0x42, 0x81, 0x9d, 0x60, 0xe0, 0x25, 0x1c, 0x68, 0x0a, 0x08, 0xa2, 0x42, 0x82,
		0xbc, 0xa0, 0x20, 0x5e, 0x49, 0x60, 0x55, 0x59, 0x78, 0x4a, 0x68, 0xa0, 0xd5, 0xd0, 0xfa, 0x08,
		0x0f, 0x86, 0x02, 0x84, 0x9b, 0x10, 0x61, 0x2b, 0x48, 0xd8, 0x0a, 0x13, 0x9e, 0x02, 0x85, 0xb6,
		0x50, 0x21, 0x2e, 0x58, 0xb2, 0xb7, 0x9c, 0x67, 0xab, 0x21, 0xf2, 0xda, 0x60, 0x56, 0x1f, 0x7c,
		0x41, 0xab, 0xa1, 0x39, 0x7f, 0xa0, 0xd5, 0xd0, 0x62, 0x8d, 0x46, 0xab, 0xa1, 0x55, 0xc5, 0x38,
		0xb4, 0x1a, 0x5a, 0x82, 0x4b, 0x72, 0x6e, 0x35, 0xc4, 0xb3, 0x87, 0x04, 0xbc, 0x14, 0x52, 0x39,
		0x47, 0x56, 0xa2, 0xe9, 0xd0, 0x7b, 0xdc, 0x07, 0x4d, 0x87, 0x16, 0x9e, 0xdf, 0xd0, 0x74, 0x68,
		0x95, 0x26, 0xa3, 0xe9, 0xd0, 0x9c, 0x9e, 0x28, 0x9a, 0x0e, 0x61, 0x36, 0x7d, 0x57, 0x79, 0x2d,
		0xaa, 0xe9, 0x50, 0x09, 0x4d, 0x87, 0x96, 0x60, 0x37, 0x9a, 0x0e, 0x11, 0x18, 0xc0, 0x42, 0x9b,
		0x0e, 0x95, 0xd0, 0x74, 0x08, 0xb3, 0x21, 0x3c, 0x3f, 0xc6, 0x96, 0xa1, 0xe9, 0xd0, 0xfb, 0xec,
		0xcc, 0xd1, 0x99, 0xb8, 0x4a, 0x19, 0x6d, 0x87, 0xf8, 0x5a, 0x84, 0xb6, 0x43, 0xbf, 0x6e, 0x23,
		0xda, 0x0e, 0xbd, 0x6f, 0x5e, 0xf6, 0xc6, 0x76, 0x2c, 0x95, 0x32, 0x1a, 0x0f, 0xcd, 0x77, 0x7a,
		0x85, 0xc6, 0x43, 0x0b, 0x9e, 0x39, 0xbd, 0x83, 0x74, 0xb4, 0x1e, 0x7a, 0xc3, 0xb3, 0xcf, 0x4d,
		0xeb, 0xa1, 0x4a, 0xf9, 0x55, 0xad, 0x57, 0x4a, 0x68, 0x3e, 0xb4, 0x98, 0xc8, 0x88, 0xe6, 0x43,
		0xcb, 0x0d, 0x94, 0xef, 0xf3, 0x01, 0x94, 0x16, 0xf2, 0x54, 0x5a, 0x40, 0xfb, 0x21, 0x56, 0x33,
		0x36, 0xb4, 0x1f, 0x5a, 0x62, 0xa9, 0x65, 0xfd, 0x1a, 0x10, 0x55, 0xca, 0x68, 0x41, 0x44, 0x3e,
		0x10, 0xe8, 0x8a, 0xe2, 0x01, 0x81, 0xdb, 0x73, 0x82, 0xb1, 0x75, 0x34, 0x1b, 0x10, 0x6d, 0xa2,
		0x01, 0xd1, 0xeb, 0x0c, 0x43, 0x03, 0xa2, 0x3c, 0xcf, 0xc3, 0xd0, 0x80, 0x68, 0xa1, 0xd3, 0x2b,
		0x34, 0x20, 0x62, 0x29, 0xad, 0xc9, 0x1e, 0xbb, 0xcb, 0x22, 0x5e, 0x20, 0xbc, 0x7e, 0x28, 0xfa,
		0x14, 0x23, 0xde, 0xb4, 0xc1, 0x0f, 0xc1, 0x3b, 0xfc, 0xf5, 0xd6, 0x64, 0x36, 0x72, 0xa7, 0x3e,
		0x0c, 0x9d, 0x4b, 0xd9, 0x12, 0x22, 0xb1, 0x21, 0x4e, 0x94, 0xc4, 0x24, 0x2d, 0xcd, 0xad, 0xfa,
		0x74, 0xb7, 0xe4, 0xb3, 0xda, 0x7a, 0x4f, 0x78, 0x8b, 0x3d, 0xe1, 0xad, 0xf4, 0x54, 0x82, 0x05,
		0xd1, 0xda, 0x5c, 0x5e, 0x6a, 0x72, 0x84, 0x64, 0xcf, 0x02, 0xab, 0x70, 0x34, 0x74, 0xc9, 0xea,
		0x55, 0xc0, 0x6a, 0x2d, 0x58, 0x71, 0x48, 0xa1, 0x16, 0x4a, 0xd8, 0x87, 0x90, 0xd5, 0x7a, 0xd5,
		0xea, 0x58, 0x5e, 0x21, 0xc7, 0xfa, 0x58, 0xf6, 0x44, 0xdf, 0x97, 0xa2, 0x67, 0x4c, 0xdf, 0x84,
		0x55, 0xa3, 0x7c, 0xdb, 0xaf, 0xe6, 0x81, 0x69, 0x2b, 0xf6, 0x77, 0x1a, 0xfd, 0x71, 0xc9, 0xd4,
		0xa3, 0x29, 0xd5, 0x9f, 0x09, 0xd6, 0x9b, 0xa9, 0xd5, 0x97, 0xc9, 0xd6, 0x93, 0xc9, 0xd6, 0x8f,
		0x69, 0xd6, 0x8b, 0xd7, 0x5b, 0x73, 0x51, 0xe9, 0x17, 0xfb, 0x20, 0x3b, 0xd1, 0xf1, 0xf3, 0xa7,
		0xf2, 0x27, 0x15, 0x77, 0xa7, 0xd5, 0x66, 0x9e, 0xdc, 0xf2, 0x2e, 0xc5, 0x65, 0x5d, 0xc2, 0xcb,
		0xb9, 0x54, 0x97, 0x71, 0xc9, 0x2f, 0xdf, 0x92, 0x5f, 0xb6, 0xa5, 0xbd, 0x5c, 0x8b, 0x25, 0x18,
		0x8a, 0x69, 0xf9, 0xb6, 0x16, 0x42, 0xf2, 0x3e, 0x18, 0xd2, 0xf7, 0xc0, 0xe0, 0x02, 0x38, 0xfe,
		0x89, 0x9a, 0x41, 0xc2, 0xa6, 0x9e, 0xb8, 0xd9, 0x24, 0x70, 0x36, 0x89, 0x9c, 0x47, 0x42, 0xa7,
		0x95, 0xd8, 0x89, 0x25, 0x78, 0xb2, 0x89, 0x3e, 0x33, 0x2c, 0x10, 0x72, 0x90, 0x2c, 0x7c, 0x10,
		0xbf, 0x01, 0x6e, 0x62, 0x27, 0xed, 0x2b, 0xe0, 0x36, 0x71, 0x05, 0x5c, 0xee, 0x24, 0x01, 0x23,
		0x69, 0xc0, 0x45, 0x22, 0xb0, 0x93, 0x0a, 0xec, 0x24, 0x03, 0x2f, 0xe9, 0x40, 0x53, 0x42, 0x10,
		0x95, 0x12, 0xd9, 0x5b, 0x4b, 0xfe, 0x26, 0x95, 0x3b, 0x37, 0xa8, 0x7c, 0xa1, 0x1c, 0x2f, 0x27,
		0xe9, 0x9b, 0x70, 0x9f, 0x62, 0x26, 0x17, 0xa6, 0xf0, 0xe8, 0xaf, 0xcd, 0xe7, 0x4a, 0x32, 0x66,
		0x17, 0xa3, 0xb0, 0xbd, 0x6a, 0x81, 0xdf, 0x15, 0x0b, 0x37, 0x3c, 0x1a, 0xc3, 0xf3, 0x73, 0xb5,
		0xd2, 0xf6, 0x36, 0x9c, 0x0d, 0xce, 0xc6, 0x40, 0x98, 0xd2, 0xb7, 0xee, 0x14, 0x6d, 0x61, 0xb8,
		0x06, 0x73, 0x9a, 0x7d, 0x18, 0x1e, 0x4c, 0x2d, 0x08, 0xf6, 0x63, 0xb8, 0x3f, 0xab, 0x40, 0x51,
		0xf0, 0x8d, 0x06, 0xa2, 0x28, 0x38, 0x57, 0x53, 0x51, 0x14, 0x5c, 0x90, 0xc1, 0x28, 0x0a, 0xae,
		0x9f, 0xba, 0x41, 0x51, 0xf0, 0xbd, 0x11, 0x13, 0x45, 0xc1, 0xf7, 0x9b, 0x88, 0xa2, 0xe0, 0xbc,
		0x2a, 0x15, 0x28, 0x0a, 0xa2, 0x4e, 0x91, 0x83, 0x3a, 0x05, 0x8a, 0x82, 0x8b, 0x71, 0x35, 0x14,
		0x05, 0xe1, 0x6c, 0x3c, 0x84, 0x29, 0x7d, 0xeb, 0x50, 0x14, 0x64, 0x1b, 0xcc, 0xf5, 0xcb, 0x49,
		0x3c, 0x24, 0x5e, 0x15, 0x4c, 0xcd, 0x44, 0x59, 0xf0, 0x2d, 0xe6, 0xa1, 0x2c, 0x38, 0x47, 0x10,
		0x51, 0x16, 0x9c, 0x9f, 0xdb, 0xa0, 0x2c, 0xb8, 0x60, 0x83, 0x51, 0x16, 0xcc, 0xeb, 0x04, 0x8c,
		0x51, 0x59, 0xf0, 0xcc, 0x97, 0x5e, 0x78, 0xcd, 0xa0, 0x2e, 0xb8, 0x0b, 0x19, 0xcb, 0xd0, 0x22,
		0x5c, 0x79, 0xf2, 0x6b, 0xf6, 0xb1, 0xed, 0x8d, 0xf6, 0xa0, 0x0b, 0xd6, 0x83, 0x57, 0x28, 0xde,
		0x35, 0x8b, 0x2b, 0x41, 0x1e, 0x83, 0x10, 0x57, 0x82, 0xe4, 0x63, 0x8e, 0x89, 0x23, 0xe9, 0xf9,
		0x9c, 0x4b, 0xe2, 0x48, 0xfa, 0xba, 0xcd, 0x19, 0x71, 0x24, 0x9d, 0xbf, 0xf4, 0xc4, 0x95, 0x20,
		0xef, 0x4f, 0xb0, 0xb8, 0x12, 0x84, 0xbd, 0xce, 0x45, 0x3f, 0xaa, 0xbb, 0x89, 0x12, 0x57, 0x82,
		0xbc, 0xc6, 0x2a, 0x5c, 0x09, 0x32, 0x17, 0x63, 0x71, 0x25, 0x08, 0xe3, 0x60, 0x81, 0x2b, 0x41,
		0x96, 0x5e, 0xb3, 0xca, 0xfb, 0x35, 0x21, 0x47, 0xd3, 0xf1, 0xe2, 0xbe, 0x10, 0x3a, 0x16, 0xe0,
		0xbe, 0x90, 0xbc, 0xc6, 0x97, 0xb5, 0xbd, 0x39, 0xe4, 0xb7, 0x35, 0xf2, 0xa3, 0xa9, 0xa8, 0x8f,
		0x11, 0xe9, 0x69, 0x2b, 0xad, 0x7f, 0xd1, 0x10, 0xf3, 0x74, 0xc4, 0x3b, 0x69, 0xb1, 0x4e, 0x48,
		0x9c, 0x13, 0x12, 0xe3, 0xab, 0x72, 0x62, 0x22, 0x49, 0x90, 0x6d, 0xf2, 0x5b, 0xa1, 0x72, 0x5e,
		0x84, 0x52, 0x5e, 0x4d, 0xe6, 0x5e, 0x7e, 0xde, 0x5c, 0xee, 0xff, 0xb8, 0x64, 0xe7, 0x5e, 0xb5,
		0x53, 0xf3, 0x73, 0xe6, 0xe5, 0x62, 0xbf, 0x3c, 0xf8, 0x96, 0xf3, 0x3f, 0x2d, 0x09, 0x6f, 0x5d,
		0x5c, 0xa9, 0xd0, 0x33, 0xc6, 0x31, 0x17, 0x67, 0xc1, 0x72, 0xd7, 0x98, 0xf4, 0x50, 0xf4, 0x45,
		0x28, 0x64, 0x77, 0xf9, 0xc7, 0x62, 0x57, 0xe0, 0xbf, 0xd3, 0x85, 0xb2, 0xf6, 0xc1, 0xfe, 0x76,
		0xb1, 0xb4, 0x59, 0xd5, 0x0e, 0x0d, 0xbb, 0x63, 0x77, 0xaa, 0xda, 0xe1, 0x38, 0x50, 0xbe, 0xe6,
		0x0c, 0x47, 0xc3, 0x60, 0x38, 0xb8, 0xd6, 0x3e, 0x1e, 0x3a, 0x9f, 0xb4, 0xf6, 0x70, 0xac, 0x7c,
		0x39, 0xd0, 0x7c, 0x79, 0x22, 0x6d, 0xa9, 0x44, 0x78, 0x21, 0x7a, 0xbe, 0xa7, 0x84, 0xd6, 0xb9,
		0x8e, 0x94, 0xb8, 0xd0, 0xd4, 0x50, 0x7b, 0xe4, 0xe5, 0x48, 0xfb, 0x68, 0x77, 0x0c, 0xbb, 0x13,
		0x7d, 0xda, 0xd0, 0x9c, 0xfa, 0xf1, 0x89, 0x2c, 0x6d, 0x6d, 0x6f, 0xac, 0x20, 0x99, 0xae, 0x7a,
		0x8f, 0xc1, 0xec, 0x1e, 0x82, 0x5b, 0xc6, 0x56, 0x24, 0x06, 0xa9, 0x6c, 0x13, 0xb8, 0xb3, 0x0d,
		0x60, 0xe9, 0x10, 0xe6, 0x5d, 0x8c, 0x2c, 0xed, 0x7f, 0x3b, 0x5d, 0x1e, 0x3d, 0xfa, 0xcf, 0x73,
		0x21, 0xd7, 0x29, 0x34, 0xdf, 0x59, 0x84, 0xd7, 0x7e, 0xd7, 0x3e, 0x4c, 0x76, 0xcb, 0x18, 0x41,
		0xd4, 0x3b, 0x33, 0xe2, 0x17, 0xa3, 0xea, 0xa1, 0xe3, 0xda, 0xad, 0xe3, 0xb2, 0xdb, 0xb6, 0xcc,
		0xfd, 0x6f, 0xe6, 0x9e, 0x5d, 0xb7, 0x9d, 0x3f, 0x3e, 0xac, 0x79, 0x8c, 0x4d, 0x38, 0x41, 0x78,
		0xbd, 0x0d, 0xaf, 0x6f, 0x07, 0xe9, 0xb7, 0x35, 0xa8, 0x91, 0xe8, 0x35, 0x11, 0x75, 0x43, 0x7f,
		0xb4, 0xd2, 0x02, 0x49, 0xe6, 0xf4, 0x4d, 0x19, 0x5c, 0x6b, 0xbe, 0xec, 0x06, 0xe3, 0x9e, 0xd0,
		0xd4, 0xb9, 0xd0, 0x2e, 0xe2, 0x54, 0x68, 0xa8, 0x69, 0x2a, 0xb4, 0x5b, 0x97, 0x65, 0x6d, 0x76,
		0x82, 0x73, 0x12, 0xcf, 0xbb, 0x94, 0xe7, 0x4b, 0x11, 0x6a, 0x31, 0xf9, 0xc9, 0x2f, 0x39, 0xf5,
		0x63, 0xcd, 0x8f, 0xb4, 0xe4, 0xfd, 0x5e, 0x91, 0xea, 0xd2, 0x88, 0xec, 0xee, 0x9c, 0x8d, 0x0c,
		0xbd, 0x99, 0x77, 0x7a, 0x85, 0x45, 0x1d, 0x4a, 0x5b, 0x35, 0xef, 0x04, 0x8a, 0x05, 0xc1, 0x87,
		0x82, 0x13, 0x6f, 0x8d, 0x97, 0xab, 0x0a, 0xc3, 0x8a, 0x0a, 0x67, 0x6c, 0x0a, 0x66, 0x4b, 0x0c,
		0x8c, 0x73, 0xad, 0x6e, 0x2f, 0x27, 0xca, 0x2c, 0xde, 0xeb, 0x96, 0xe0, 0x07, 0x7a, 0xfa, 0xbe,
		0x57, 0xee, 0xbe, 0xef, 0xcb, 0xf2, 0x86, 0x4c, 0xea, 0x3c, 0x6a, 0xc5, 0x92, 0xa2, 0xc0, 0x72,
		0x2f, 0xde, 0x5c, 0xfa, 0xe9, 0xa5, 0x55, 0x9c, 0x4a, 0x5a, 0xe1, 0x69, 0xa3, 0x55, 0xe9, 0xcc,
		0x95, 0x9f, 0x0e, 0x5a, 0xb9, 0x94, 0x5c, 0xed, 0x69, 0x9e, 0x7c, 0xad, 0x7d, 0x2c, 0xfb, 0xa2,
		0x47, 0x3d, 0x5b, 0x1a, 0x5b, 0xba, 0xdf, 0x4c, 0x43, 0x45, 0x66, 0xc1, 0x92, 0xa9, 0x5d, 0xcd,
		0xbd, 0xcb, 0x2b, 0x3b, 0xc4, 0xba, 0xca, 0x43, 0xaa, 0x04, 0x0e, 0xa1, 0x52, 0x2a, 0x4e, 0xae,
		0x76, 0x13, 0x1d, 0xc9, 0xf2, 0xe4, 0xca, 0x0e, 0x81, 0xe6, 0x7b, 0x87, 0xc8, 0xaa, 0xee, 0x0d,
		0x9e, 0x22, 0xbe, 0xf2, 0x52, 0xea, 0x6a, 0x5d, 0x6d, 0xb5, 0x57, 0xfb, 0xaf, 0xbc, 0x5f, 0x02,
		0x85, 0xbe, 0x08, 0x84, 0xfa, 0x1f, 0x50, 0xe9, 0x73, 0x40, 0xae, 0x9f, 0x01, 0xb9, 0xbe, 0x05,
		0xb4, 0xfa, 0x13, 0xac, 0xd7, 0x71, 0x83, 0x55, 0x5f, 0x75, 0x9f, 0x1e, 0x74, 0x58, 0xbd, 0x93,
		0xce, 0x56, 0xc8, 0x7a, 0xab, 0x76, 0x50, 0x1a, 0x0d, 0x81, 0xc8, 0x34, 0x00, 0xa2, 0xd4, 0xf0,
		0x87, 0x60, 0x83, 0x1f, 0x6a, 0x0d, 0x7d, 0xc8, 0x36, 0xf0, 0x21, 0xdb, 0xb0, 0x87, 0x66, 0x83,
		0x9e, 0xf5, 0x3e, 0xc7, 0x4a, 0xa6, 0xe1, 0x0e, 0xc1, 0x06, 0x3b, 0x94, 0x1a, 0xea, 0x3c, 0x6c,
		0xa0, 0x93, 0xa6, 0xf0, 0x75, 0x3d, 0x2c, 0xbb, 0xc2, 0x09, 0xd7, 0x88, 0x46, 0x9a, 0xa6, 0x51,
		0x8d, 0x80, 0x98, 0x83, 0x98, 0x83, 0x98, 0x83, 0x98, 0x83, 0x98, 0x83, 0x98, 0x83, 0x98, 0x7b,
		0xb3, 0x98, 0x1b, 0xad, 0xf0, 0x00, 0xf5, 0x7a, 0xab, 0xb9, 0xb4, 0xe1, 0x3a, 0x19, 0x31, 0x97,
		0x9a, 0x43, 0x43, 0xcb, 0x15, 0xa1, 0xe5, 0xa0, 0xe5, 0xa0, 0xe5, 0xa0, 0xe5, 0xa0, 0xe5, 0x96,
		0xff, 0x96, 0xac, 0x7a, 0xc5, 0x2a, 0x33, 0xe4, 0x42, 0xa8, 0xd0, 0xef, 0xd2, 0xf1, 0xee, 0x6c,
		0x09, 0x2b, 0xb5, 0x8b, 0x4a, 0x93, 0x62, 0x52, 0x97, 0x5b, 0x90, 0xbb, 0xd4, 0x82, 0xe2, 0x65,
		0x16, 0x84, 0x2f, 0xb1, 0xa0, 0x7a, 0x79, 0x05, 0xf9, 0x4b, 0x2b, 0xc8, 0x5f, 0x56, 0x41, 0xfb,
		0x92, 0x0a, 0x34, 0x9e, 0x27, 0x59, 0x4e, 0x79, 0x10, 0xb1, 0x7e, 0xfa, 0x3d, 0x61, 0x90, 0x4a,
		0x80, 0xb3, 0x49, 0x90, 0xd0, 0xfd, 0x13, 0x7a, 0xdb, 0x93, 0x83, 0xe5, 0xb7, 0x5d, 0x7a, 0xe9,
		0x83, 0xe0, 0xfd, 0x26, 0x87, 0xbe, 0xa4, 0x7b, 0x57, 0xd2, 0xf1, 0xe4, 0x8a, 0xef, 0x22, 0xd1,
		0x9b, 0x87, 0x0e, 0x42, 0xaf, 0xab, 0xfc, 0xa1, 0xac, 0xf9, 0x03, 0x9f, 0xda, 0xe5, 0x0b, 0x77,
		0x03, 0x88, 0x18, 0x78, 0xca, 0xbf, 0x14, 0xa4, 0xee, 0x0e, 0x20, 0x18, 0xfb, 0xef, 0xba, 0x86,
		0x77, 0xc5, 0xc0, 0x35, 0x2a, 0x3b, 0x3b, 0x3b, 0x25, 0x4a, 0x17, 0x69, 0xc0, 0x43, 0x72, 0xac,
		0xd1, 0xe8, 0x59, 0x73, 0x8a, 0x7b, 0x19, 0xa8, 0x44, 0x50, 0x22, 0xbb, 0x9d, 0x1f, 0xc8, 0x66,
		0x0a, 0xbb, 0x9e, 0xef, 0x8b, 0x65, 0x54, 0x8c, 0x9e, 0x30, 0x08, 0x15, 0xa3, 0x5f, 0x32, 0x0d,
		0x15, 0xa3, 0x37, 0x1a, 0x88, 0x8a, 0x11, 0xff, 0xfc, 0x8f, 0x8a, 0xd1, 0x4b, 0x11, 0x6b, 0xec,
		0x4b, 0x55, 0xac, 0x10, 0x2c, 0x16, 0x55, 0x50, 0x2c, 0x7a, 0xe1, 0x03, 0xc5, 0xa2, 0xb7, 0xcd,
		0x88, 0x37, 0x31, 0x15, 0xce, 0xfb, 0x54, 0x18, 0xc5, 0xa2, 0xb7, 0xb9, 0x46, 0x79, 0x73, 0x17,
		0x85, 0xa2, 0xdc, 0x7b, 0x07, 0x0a, 0x45, 0x8f, 0x7e, 0xa0, 0x50, 0x44, 0x26, 0x7a, 0x52, 0x39,
		0x4b, 0xf5, 0x40, 0x2e, 0xd3, 0xda, 0x37, 0x88, 0x52, 0xd1, 0xf3, 0x06, 0xa1, 0x54, 0xf4, 0x4b,
		0xa6, 0xa1, 0x54, 0xf4, 0x46, 0x03, 0x51, 0x2a, 0xe2, 0xaf, 0x00, 0x50, 0x2a, 0x7a, 0x29, 0x62,
		0x25, 0xad, 0x93, 0xc9, 0x39, 0x60, 0x76, 0x28, 0xe5, 0x0b, 0x21, 0x9b, 0x5a, 0x9e, 0x52, 0x22,
		0x94, 0xe4, 0x4a, 0x46, 0xfa, 0xc7, 0x8f, 0x7f, 0x6e, 0x1a, 0xbb, 0x9e, 0xd1, 0x37, 0x8d, 0x83,
		0xd3, 0xbf, 0x8b, 0x9f, 0xcb, 0x37, 0xd5, 0x4f, 0x7f, 0xef, 0xdc, 0xdc, 0x7f, 0xf1, 0x9f, 0xc7,
		0x7e, 0xac, 0xf8, 0x79, 0xe7, 0xa6, 0xfa, 0xc4, 0x77, 0x2a, 0x37, 0xd5, 0x57, 0xfe, 0x1b, 0xdb,
		0x37, 0x1f, 0x1f, 0xfc, 0x68, 0xfc, 0x7a, 0xe9, 0xa9, 0x5f, 0x28, 0x3f, 0xf1, 0x0b, 0x5b, 0x4f,
		0xfd, 0xc2, 0xd6, 0x13, 0xbf, 0xf0, 0xa4, 0x49, 0xa5, 0x27, 0x7e, 0x61, 0xfb, 0xe6, 0x9f, 0x07,
		0x3f, 0xff, 0xf1, 0xf1, 0x1f, 0xad, 0xdc, 0x7c, 0xfa, 0xe7, 0xa9, 0xef, 0xed, 0xdc, 0xfc, 0x53,
		0xfd, 0xf4, 0xa9, 0xf0, 0xb1, 0x58, 0xfa, 0x73, 0xd3, 0xf8, 0x72, 0xfa, 0x4f, 0xf1, 0xcf, 0x4d,
		0xa3, 0x78, 0x1a, 0xff, 0xe4, 0xe9, 0x3f, 0x7f, 0x16, 0x8d, 0xdd, 0xe9, 0x97, 0xf1, 0x9f, 0x9f,
		0xe8, 0x84, 0xe5, 0x53, 0x4a, 0xfe, 0xd4, 0xec, 0xd8, 0x3f, 0xc8, 0x3a, 0xd5, 0xff, 0xe0, 0x55,
		0xc4, 0xbd, 0xea, 0x5f, 0x3a, 0xaa, 0x0c, 0xa8, 0x32, 0x3c, 0x70, 0xdc, 0xc8, 0x38, 0xf3, 0x15,
		0xbd, 0x22, 0x43, 0x6a, 0x16, 0x6a, 0x0c, 0xa8, 0x31, 0xa0, 0xc6, 0x80, 0x1a, 0x03, 0x6a, 0x0c,
		0xa8, 0x31, 0xac, 0x4d, 0x8d, 0xe1, 0x6c, 0x38, 0x0c, 0x84, 0x27, 0x29, 0xd6, 0x17, 0x8a, 0x10,
		0x6e, 0x64, 0x84, 0xdb, 0x78, 0x64, 0xf4, 0x86, 0x3f, 0x25, 0x3d, 0xe9, 0x36, 0x35, 0x0c, 0xe2,
		0x0d, 0xe2, 0x0d, 0xe2, 0x0d, 0xe2, 0x0d, 0xe2, 0x0d, 0xe2, 0x0d, 0xe2, 0x0d, 0xe2, 0x0d, 0xe2,
		0xed, 0xf6, 0x3d, 0xb9, 0xa2, 0x59, 0x75, 0xbb, 0x42, 0xd5, 0x0d, 0xc2, 0x0d, 0xc2, 0x0d, 0xc2,
		0x0d, 0xc2, 0x0d, 0xc2, 0x0d, 0xc2, 0x0d, 0xc2, 0x8d, 0x96, 0x70, 0x5b, 0xeb, 0xa6, 0x97, 0xa6,
		0x94, 0x43, 0xe5, 0x29, 0x7f, 0x48, 0xa3, 0xe4, 0xa7, 0x47, 0xdd, 0x73, 0x71, 0xe1, 0x8d, 0x26,
		0xdd, 0xba, 0x0b, 0xc3, 0x91, 0x90, 0xdd, 0x44, 0x22, 0x19, 0x52, 0xa8, 0x9f, 0xc3, 0xf0, 0x2f,
		0xc3, 0x97, 0x91, 0xf2, 0x64, 0x57, 0x14, 0xee, 0xbf, 0x10, 0x3d, 0x78, 0xa5, 0x30, 0x0a, 0x87,
		0x6a, 0xd8, 0x1d, 0x06, 0x51, 0xf6, 0x55, 0x21, 0x8e, 0xe3, 0x85, 0x40, 0x5c, 0x8a, 0x60, 0xf2,
		0xa9, 0x10, 0xf8, 0xf2, 0x2f, 0x23, 0xe9, 0x02, 0x6d, 0xf4, 0x3c, 0xe5, 0x9d, 0x79, 0x91, 0x28,
		0x04, 0xd1, 0xa8, 0xa0, 0x82, 0xcb, 0x28, 0xfe, 0x23, 0xb9, 0xf7, 0x65, 0x74, 0x59, 0x31, 0x42,
		0xe1, 0x75, 0xcf, 0xbd, 0x33, 0x3f, 0xf0, 0xd5, 0x75, 0x61, 0x7a, 0xdd, 0xf5, 0xe4, 0x8b, 0xb4,
		0xab, 0x38, 0xda, 0x89, 0xaf, 0x80, 0x98, 0xf1, 0x59, 0xfc, 0x4e, 0x11, 0x6a, 0x28, 0x3e, 0x31,
		0x08, 0x2d, 0xc5, 0xd1, 0x52, 0x9c, 0xcd, 0x84, 0x06, 0x2d, 0xc5, 0xb9, 0x4f, 0x5c, 0xd0, 0x52,
		0x9c, 0x9e, 0xba, 0x22, 0xd3, 0x52, 0x3c, 0xcd, 0x49, 0x04, 0x37, 0xe4, 0xa5, 0x76, 0xd1, 0xaa,
		0x0d, 0x16, 0x51, 0x1b, 0x24, 0x9f, 0x42, 0x09, 0xa7, 0x52, 0xaa, 0x29, 0x95, 0x7c, 0x6a, 0x25,
		0x9f, 0x62, 0x69, 0xa7, 0x5a, 0x3a, 0x25, 0x15, 0x8d, 0x50, 0x6d, 0x90, 0x4a, 0x0a, 0xce, 0x0c,
		0xea, 0x07, 0xde, 0x20, 0xa2, 0x17, 0x14, 0xa6, 0x71, 0x34, 0x35, 0x8f, 0x98, 0xbf, 0xd1, 0x4a,
		0xcc, 0x64, 0x13, 0x34, 0xe5, 0x44, 0xcd, 0x20, 0x61, 0x53, 0x4f, 0xdc, 0x6c, 0x12, 0x38, 0x9b,
		0x44, 0xce, 0x23, 0xa1, 0xd3, 0x4a, 0xec, 0xc4, 0x12, 0x3c, 0xd9, 0x44, 0x7f, 0x3b, 0xf7, 0x26,
		0x71, 0xdf, 0xe5, 0xcb, 0x53, 0x71, 0x02, 0xf7, 0x60, 0x32, 0x13, 0x00, 0xe4, 0x85, 0x00, 0x07,
		0x41, 0xc0, 0x48, 0x18, 0x70, 0x11, 0x08, 0xec, 0x84, 0x02, 0x3b, 0xc1, 0xc0, 0x4b, 0x38, 0xd0,
		0x14, 0x10, 0x44, 0x85, 0x04, 0x79, 0x41, 0x41, 0xbc, 0x92, 0xc0, 0xaa, 0xb2, 0xf0, 0x94, 0xd0,
		0xd8, 0x24, 0x6e, 0x26, 0x75, 0xc1, 0xc1, 0x49, 0x78, 0x30, 0x14, 0x20, 0xdc, 0x84, 0x08, 0x5b,
		0x41, 0xc2, 0x56, 0x98, 0xf0, 0x14, 0x28, 0xb4, 0x85, 0x0a, 0x71, 0xc1, 0x92, 0xbd, 0xe5, 0xe4,
		0xb6, 0x43, 0xbf, 0x18, 0x71, 0x85, 0x1c, 0x5f, 0x88, 0x30, 0xdd, 0x86, 0xca, 0x20, 0xea, 0x4e,
		0xab, 0x11, 0x65, 0x06, 0xb6, 0x5a, 0x72, 0x7c, 0xc1, 0x27, 0x3f, 0x38, 0xc3, 0x8e, 0x0a, 0x7d,
		0x39, 0x60, 0x63, 0x71, 0x62, 0xf5, 0x66, 0xcc, 0xb0, 0xf5, 0xc3, 0xb1, 0xda, 0x0d, 0xb3, 0xee,
		0x1e, 0xd4, 0xcd, 0xaf, 0x4c, 0xd2, 0x5a, 0x62, 0x7d, 0x31, 0xb6, 0xbe, 0x6d, 0x99, 0xb5, 0x63,
		0xab, 0xed, 0xd8, 0x1d, 0xeb, 0xd0, 0x6a, 0x38, 0xec, 0x06, 0x51, 0x8a, 0x07, 0xd1, 0x68, 0xd6,
		0xac, 0xd4, 0x72, 0x16, 0x86, 0xdf, 0x7c, 0xe6, 0xe2, 0x94, 0xb6, 0x54, 0xbc, 0x3c, 0xf2, 0xae,
		0x33, 0x92, 0x9f, 0x26, 0xdd, 0x4d, 0x8a, 0x19, 0xc5, 0x55, 0xad, 0xc4, 0xc8, 0xee, 0x47, 0x43,
		0x48, 0x55, 0x2b, 0xf2, 0xf0, 0x45, 0x68, 0xe2, 0x5c, 0x6b, 0xe2, 0xba, 0x1f, 0x29, 0x53, 0xa9,
		0x90, 0x87, 0x2e, 0x3e, 0xf4, 0xa5, 0x15, 0x88, 0x78, 0xda, 0x16, 0xf1, 0x08, 0x5e, 0xfa, 0xa1,
		0x77, 0x35, 0x63, 0x71, 0xf1, 0x4b, 0xb9, 0x5c, 0xd9, 0x29, 0x97, 0x37, 0x77, 0xb6, 0x76, 0x36,
		0x77, 0xb7, 0xb7, 0x8b, 0x15, 0xaa, 0xd7, 0x64, 0xdf, 0x19, 0x44, 0x33, 0xec, 0x89, 0x50, 0xf4,
		0xf6, 0xae, 0xf5, 0xaa, 0x26, 0xc7, 0x41, 0xc0, 0xc9, 0xe4, 0xa3, 0x48, 0x84, 0x64, 0x2f, 0x46,
		0xe2, 0x14, 0x29, 0xc4, 0x95, 0x0a, 0x3d, 0x63, 0x2c, 0x23, 0xe5, 0x9d, 0x05, 0x4c, 0xe6, 0xd1,
		0xa1, 0xe8, 0x8b, 0x50, 0xc8, 0x2e, 0xbd, 0xab, 0x14, 0x9f, 0xfa, 0x60, 0xa4, 0x25, 0xa7, 0x45,
		0x8a, 0xf6, 0xc1, 0xfe, 0xce, 0xce, 0x6e, 0xb9, 0xaa, 0xd9, 0x1d, 0xc3, 0xee, 0x68, 0x69, 0x65,
		0x5b, 0x8b, 0x93, 0x8a, 0x7f, 0x36, 0x56, 0x22, 0xd2, 0xfa, 0xc3, 0x50, 0xb3, 0xae, 0x94, 0x90,
		0x3d, 0xd1, 0xd3, 0xec, 0xd6, 0x65, 0x59, 0xf3, 0x64, 0xef, 0x44, 0xda, 0xad, 0xcb, 0x8a, 0xd6,
		0x9e, 0x39, 0x3b, 0xba, 0xa1, 0x45, 0xe3, 0x33, 0xc3, 0xa9, 0x1f, 0x6b, 0xe5, 0x0d, 0x4e, 0x73,
		0x2c, 0x66, 0xc5, 0xe6, 0xdb, 0x72, 0xcd, 0x6d, 0xd1, 0xf9, 0xd6, 0x51, 0x3e, 0xf3, 0x1a, 0x03,
		0xd7, 0xfa, 0x73, 0x36, 0x80, 0xd9, 0x3a, 0xf4, 0x62, 0x3c, 0x89, 0xcd, 0xf3, 0xb8, 0xc1, 0x8c,
		0x68, 0x2e, 0x1f, 0xa7, 0xbf, 0xe1, 0xf9, 0xe5, 0x4c, 0x81, 0xe9, 0x8a, 0xc3, 0xda, 0x45, 0x26,
		0x09, 0x12, 0x6b, 0xb1, 0xa3, 0x61, 0x1e, 0x66, 0x62, 0x47, 0xc3, 0x02, 0x39, 0xc5, 0x8e, 0x86,
		0x65, 0x88, 0x4b, 0xec, 0x68, 0x58, 0xba, 0x92, 0xc4, 0x8e, 0x86, 0xb5, 0xa8, 0xc9, 0xf0, 0xdb,
		0xd1, 0xe0, 0xf7, 0x84, 0x54, 0xbe, 0xba, 0x0e, 0x45, 0x9f, 0xd3, 0x8e, 0x06, 0x0e, 0x55, 0x5a,
		0x7b, 0xf2, 0x68, 0xf7, 0xbc, 0x88, 0x51, 0x9e, 0x98, 0x82, 0x61, 0x77, 0xec, 0x8e, 0xdb, 0x39,
		0xda, 0x73, 0xea, 0xc7, 0xae, 0xf3, 0x47, 0xcb, 0xe2, 0x92, 0x2e, 0x8e, 0xbd, 0x60, 0x2c, 0x22,
		0x36, 0xf5, 0x45, 0x8d, 0x55, 0x8d, 0xf1, 0x2e, 0x21, 0x2d, 0xb7, 0x6d, 0x99, 0xfb, 0xdf, 0xcc,
		0x3d, 0xbb, 0x6e, 0x3b, 0x7f, 0xb8, 0x76, 0xeb, 0xb8, 0xec, 0xb6, 0x9b, 0x47, 0x8e, 0xd5, 0x76,
		0xed, 0x1a, 0xa3, 0x32, 0xc7, 0x67, 0x90, 0xb2, 0x74, 0x52, 0x2a, 0x20, 0x05, 0xa4, 0xbc, 0x4c,
		0x4a, 0xab, 0x6d, 0x1d, 0xd8, 0x3f, 0x92, 0x2d, 0x1a, 0x1d, 0x70, 0x02, 0x4e, 0x5e, 0xe0, 0xa4,
		0x83, 0x68, 0x02, 0x4a, 0x9e, 0xa6, 0x24, 0x95, 0xb3, 0x1d, 0x4e, 0x7a, 0x96, 0xb3, 0xae, 0xe5,
		0x49, 0x4f, 0x6e, 0x75, 0x2e, 0xc3, 0xb8, 0x93, 0x5f, 0x82, 0x2a, 0x20, 0x08, 0x04, 0xad, 0x9b,
		0x2e, 0x06, 0x3f, 0xd0, 0xcb, 0xa0, 0x87, 0x3f, 0x3d, 0x0e, 0x97, 0x93, 0x4b, 0xc0, 0x86, 0x18,
		0x36, 0x95, 0x32, 0x43, 0x70, 0x58, 0x59, 0x7c, 0x8a, 0xfa, 0x07, 0xea, 0x1f, 0x79, 0x88, 0xdb,
		0xc0, 0x03, 0xf1, 0x19, 0x80, 0xac, 0x16, 0x90, 0xce, 0x5d, 0x40, 0xcc, 0xda, 0xbf, 0xdd, 0xba,
		0xd9, 0x40, 0x99, 0x1d, 0x98, 0xbc, 0x84, 0x09, 0x10, 0x01, 0x22, 0xcf, 0x22, 0x72, 0x68, 0x37,
		0xdc, 0xaf, 0xed, 0xe6, 0x51, 0x0b, 0x98, 0x00, 0x93, 0x27, 0x31, 0x39, 0x36, 0xed, 0xba, 0xb9,
		0x57, 0xb7, 0xdc, 0x3d, 0xb3, 0x51, 0xfb, 0x8f, 0x5d, 0x73, 0xbe, 0x01, 0x17, 0xe0, 0xf2, 0x14,
		0x2e, 0x19, 0x24, 0xee, 0x7e, 0xb3, 0xd1, 0x71, 0xda, 0xa6, 0xdd, 0x70, 0xb0, 0x6d, 0x04, 0xc0,
		0x3c, 0x09, 0x8c, 0xf5, 0xc3, 0xb1, 0x1a, 0x35, 0xab, 0x86, 0x7c, 0x04, 0x5e, 0x5e, 0xc3, 0x4b,
		0xb2, 0xf4, 0x6f, 0x37, 0x1c, 0xab, 0x7d, 0x60, 0xee, 0x5b, 0xae, 0x59, 0xab, 0xb5, 0xad, 0x0e,
		0x22, 0x0c, 0x88, 0x79, 0x9e, 0x98, 0x86, 0x65, 0x7f, 0xfd, 0xb6, 0xd7, 0x6c, 0x03, 0x18, 0x00,
		0xf3, 0x0a, 0x60, 0x2a, 0x08, 0x31, 0x20, 0xe6, 0x17, 0x89, 0x41, 0x88, 0x01, 0x30, 0xaf, 0x05,
		0xa6, 0x6e, 0x37, 0xbe, 0xbb, 0xa6, 0xe3, 0xb4, 0xed, 0xbd, 0x23, 0xc7, 0x02, 0x2a, 0x40, 0xe5,
		0x79, 0x54, 0x6a, 0x56, 0xdd, 0xfc, 0x03, 0x94, 0x80, 0x92, 0x97, 0x29, 0x71, 0x8f, 0xcd, 0xb6,
		0x6d, 0x3a, 0x76, 0xb3, 0x01, 0x5e, 0xc0, 0xcb, 0xb3, 0xbc, 0x60, 0x81, 0x08, 0x88, 0xbc, 0x80,
		0x48, 0xbd, 0x09, 0x21, 0x0b, 0x48, 0x5e, 0x80, 0xa4, 0xd5, 0x6e, 0x3a, 0xd6, 0x7e, 0x9c, 0x72,
		0xd2, 0x73, 0x5d, 0xe0, 0x05, 0xbc, 0x3c, 0xc1, 0xcb, 0xa1, 0xf9, 0x23, 0x65, 0x06, 0xab, 0x89,
		0xa0, 0xe5, 0x55, 0xb4, 0xb4, 0xad, 0x8e, 0xd5, 0x3e, 0xc6, 0x0a, 0x34, 0x98, 0x79, 0x25, 0x33,
		0x76, 0xe3, 0x36, 0xca, 0x60, 0xde, 0x0c, 0x5a, 0x9e, 0xa5, 0xa5, 0x6d, 0x75, 0xec, 0xda, 0x91,
		0x59, 0x47, 0x6c, 0x01, 0x2d, 0x2f, 0xd3, 0x82, 0xee, 0x05, 0xa0, 0xe7, 0xfd, 0x14, 0xb1, 0xdc,
		0xc3, 0xcd, 0x30, 0xe8, 0xe4, 0x18, 0x1f, 0xa0, 0x03, 0x74, 0xde, 0x84, 0x0e, 0xc3, 0x3d, 0x76,
		0xc0, 0x87, 0x0c, 0x3e, 0x9c, 0xf7, 0x82, 0x03, 0x23, 0x2a, 0x18, 0x31, 0xdf, 0x23, 0x0e, 0x90,
		0xa8, 0x80, 0xc4, 0x7b, 0xef, 0x38, 0x38, 0xa2, 0xc2, 0x11, 0xf7, 0x3d, 0xe5, 0x20, 0x89, 0x14,
		0x49, 0x7c, 0x37, 0x82, 0x02, 0x24, 0x42, 0x20, 0x55, 0x10, 0x92, 0x40, 0xd2, 0x9c, 0x48, 0x42,
		0x48, 0x02, 0x48, 0xef, 0x05, 0x89, 0xed, 0x9e, 0x75, 0x20, 0x44, 0x0a, 0x21, 0x66, 0x6b, 0xf2,
		0xa0, 0x87, 0x1e, 0x3d, 0x1c, 0xf7, 0xb8, 0x83, 0x23, 0x52, 0x1c, 0x61, 0x01, 0x0d, 0xe8, 0xbc,
		0x11, 0x1d, 0x5e, 0x7b, 0xe2, 0x01, 0x0f, 0x29, 0x78, 0xd8, 0xee, 0x95, 0x07, 0x47, 0x54, 0x38,
		0xe2, 0xbc, 0x87, 0x1e, 0x14, 0x51, 0xa2, 0x88, 0xf7, 0xde, 0x7a, 0xb0, 0x44, 0x86, 0x25, 0xc6,
		0x7b, 0xee, 0x41, 0x11, 0x15, 0x8a, 0x38, 0xef, 0xc5, 0x07, 0x45, 0x54, 0x28, 0x72, 0x2c, 0xb7,
		0x66, 0x1d, 0x98, 0x47, 0x75, 0xc7, 0x3d, 0xb4, 0x9c, 0xb6, 0xbd, 0x0f, 0x88, 0x00, 0xd1, 0xaf,
		0x42, 0x74, 0xd4, 0xc8, 0xb6, 0xa6, 0x59, 0x35, 0xb7, 0xde, 0xc1, 0xb6, 0x22, 0x40, 0xf4, 0x06,
		0x88, 0x52, 0x7d, 0x6d, 0xd5, 0x90, 0xd1, 0xc0, 0xd1, 0x3b, 0x38, 0x72, 0xec, 0xba, 0xfd, 0x5f,
		0xe6, 0x14, 0xe1, 0x06, 0xa7, 0x75, 0xf7, 0xce, 0x9c, 0x9c, 0x01, 0x65, 0xac, 0x2f, 0x01, 0x0b,
		0x74, 0x24, 0x60, 0x81, 0x5e, 0x04, 0x2f, 0xd0, 0x85, 0xa0, 0x25, 0xe7, 0xb4, 0x4c, 0x2e, 0xb7,
		0xdf, 0x37, 0x5b, 0x59, 0xf7, 0x8a, 0xb6, 0x6b, 0xd6, 0xbf, 0x36, 0xdb, 0xb6, 0xf3, 0xed, 0x10,
		0xa4, 0x80, 0x94, 0x67, 0x49, 0xb9, 0xfd, 0x1b, 0x50, 0x01, 0x2a, 0xcf, 0xa0, 0x82, 0x96, 0x38,
		0xe0, 0x67, 0x6d, 0x93, 0x13, 0xc3, 0xc8, 0x93, 0x67, 0x82, 0x38, 0x26, 0xad, 0x0c, 0x21, 0x54,
		0x48, 0xd7, 0xf8, 0xb9, 0xd2, 0x7f, 0x9e, 0xb4, 0x9f, 0x23, 0x5d, 0xeb, 0x68, 0x5a, 0x46, 0x34,
		0x61, 0xe9, 0xa6, 0x94, 0x43, 0xe5, 0x29, 0x7f, 0x28, 0xf5, 0x2a, 0xe1, 0x14, 0xa5, 0x47, 0xdd,
		0x73, 0x71, 0xe1, 0x8d, 0x3c, 0x75, 0x1e, 0x27, 0xa3, 0xc2, 0x70, 0x24, 0x64, 0x77, 0x28, 0xfb,
		0xfe, 0xc0, 0x90, 0x42, 0xfd, 0x1c, 0x86, 0x7f, 0x19, 0xbe, 0x8c, 0x94, 0x27, 0xbb, 0xa2, 0x70,
		0xff, 0x85, 0xe8, 0xc1, 0x2b, 0x85, 0x51, 0x38, 0x54, 0xc3, 0xee, 0x30, 0x88, 0xb2, 0xaf, 0x0a,
		0x7e, 0xe4, 0x47, 0x85, 0x40, 0x5c, 0x8a, 0x60, 0xf2, 0xa9, 0x10, 0xf8, 0xf2, 0x2f, 0x23, 0x52,
		0x9e, 0x12, 0x46, 0xcf, 0x53, 0xde, 0x99, 0x17, 0x89, 0x42, 0x10, 0x8d, 0x0a, 0x2a, 0xb8, 0x8c,
		0xe2, 0x3f, 0x0a, 0x17, 0xca, 0xf0, 0x47, 0x97, 0x15, 0x23, 0x14, 0x5e, 0xf7, 0xdc, 0x3b, 0xf3,
		0x03, 0x5f, 0x5d, 0x17, 0x46, 0xa1, 0xe8, 0xfb, 0x57, 0x22, 0x9a, 0x7c, 0x51, 0x88, 0xc6, 0x67,
		0xc9, 0x2f, 0xa4, 0x9f, 0x0b, 0xfd, 0xc0, 0x1b, 0x44, 0x85, 0xe4, 0x5f, 0xa5, 0x99, 0x32, 0xe9,
		0xb9, 0x0f, 0x2d, 0x8b, 0x88, 0x39, 0xb2, 0x2e, 0xae, 0x54, 0xe8, 0x19, 0xe3, 0x98, 0xec, 0xb3,
		0x40, 0x90, 0x74, 0x62, 0xfd, 0xe7, 0xb9, 0x90, 0x64, 0x67, 0x7d, 0x84, 0x83, 0xde, 0x54, 0x7b,
		0x6f, 0x6c, 0xa4, 0x11, 0xa3, 0xa0, 0xae, 0x47, 0x42, 0xfb, 0x5d, 0xfb, 0x30, 0xec, 0x1a, 0x71,
		0xbc, 0x32, 0x82, 0xa8, 0x77, 0x66, 0xc4, 0x2f, 0x46, 0x55, 0xbb, 0x75, 0xb7, 0x58, 0xdd, 0x6a,
		0x5b, 0x07, 0xf6, 0x0f, 0xf7, 0xa0, 0x6e, 0x7e, 0xed, 0x7c, 0x20, 0x5c, 0x28, 0xd0, 0x3b, 0xc3,
		0x71, 0xd8, 0x15, 0xa4, 0xb3, 0x4f, 0x62, 0xe7, 0x77, 0x71, 0xfd, 0x73, 0x18, 0xf6, 0xe2, 0xf7,
		0x23, 0xe1, 0x99, 0xf6, 0x0c, 0x54, 0xff, 0xe6, 0x45, 0x66, 0x38, 0x18, 0x5f, 0x08, 0xa9, 0xf4,
		0xaa, 0xa6, 0xc2, 0xb1, 0x20, 0x6e, 0xf0, 0x8c, 0xb5, 0x73, 0x00, 0xfe, 0x37, 0x54, 0x2e, 0x7e,
		0xfd, 0x2d, 0xa8, 0x89, 0xa8, 0x1b, 0xfa, 0x23, 0xf2, 0x6a, 0xf0, 0x4e, 0x70, 0x6c, 0xca, 0xe0,
		0x5a, 0xf3, 0x65, 0x37, 0x18, 0xf7, 0x84, 0xa6, 0xce, 0x85, 0x96, 0x48, 0x2c, 0xad, 0x3b, 0x94,
		0xca, 0xf3, 0xa5, 0x08, 0xb5, 0xd8, 0x5b, 0x93, 0x6f, 0x44, 0xe3, 0x33, 0xc3, 0xa9, 0x1f, 0x6b,
		0x7e, 0xa4, 0xc5, 0x08, 0x9d, 0xc8, 0xf2, 0x06, 0x75, 0x2f, 0x66, 0x12, 0x1c, 0xef, 0x07, 0xc8,
		0xde, 0x0c, 0x48, 0xf4, 0x2b, 0x75, 0xec, 0x62, 0xe5, 0x83, 0x78, 0xf9, 0x3e, 0x1f, 0x40, 0xa1,
		0x21, 0x4f, 0x85, 0x06, 0x72, 0x56, 0x9d, 0x62, 0xfe, 0xc6, 0xb7, 0x00, 0x93, 0xaf, 0xc2, 0x0b,
		0xc1, 0x64, 0xa4, 0x47, 0x2a, 0x1c, 0x77, 0x95, 0x9c, 0xa8, 0x99, 0x46, 0xfa, 0xc4, 0xec, 0xc9,
		0x03, 0x73, 0x5b, 0x93, 0xc7, 0xe4, 0xda, 0x91, 0x1f, 0xb9, 0xf5, 0xf8, 0xf9, 0xb8, 0xf5, 0x68,
		0xe4, 0x3a, 0xc1, 0xa5, 0x7b, 0xa8, 0xec, 0xd1, 0x65, 0xa5, 0x3d, 0xf3, 0x10, 0xdc, 0x56, 0x32,
		0x76, 0xb7, 0x93, 0x8c, 0xd9, 0x3d, 0x48, 0xc6, 0xfc, 0x1b, 0xc2, 0x13, 0xf1, 0x40, 0xa0, 0xfb,
		0xa3, 0xcb, 0xb2, 0x11, 0x25, 0x5a, 0xcf, 0x08, 0x87, 0x63, 0x25, 0x42, 0xc3, 0xef, 0x91, 0x8b,
		0x07, 0x99, 0xe4, 0x7e, 0xdc, 0x5c, 0x62, 0x81, 0xf5, 0xbb, 0x2f, 0xe3, 0x47, 0x58, 0x24, 0x66,
		0xd6, 0x7e, 0x12, 0x3c, 0xf5, 0xaa, 0xb6, 0x49, 0xcc, 0xb0, 0x34, 0x74, 0xd0, 0x4c, 0x42, 0x53,
		0xf0, 0x26, 0x65, 0x00, 0x8a, 0x61, 0x9c, 0xf8, 0x4c, 0x6d, 0x76, 0x76, 0x96, 0x26, 0x48, 0xa2,
		0x13, 0x33, 0x36, 0x93, 0xb1, 0x3b, 0x13, 0xb0, 0x29, 0x98, 0x58, 0x3c, 0x61, 0x25, 0xbe, 0x6b,
		0x7e, 0x48, 0x54, 0x75, 0x27, 0x0b, 0x84, 0x64, 0x83, 0xc9, 0x34, 0x1e, 0xa7, 0x66, 0x12, 0xf5,
		0x4f, 0x9a, 0x02, 0x80, 0xbc, 0x10, 0xe0, 0x20, 0x08, 0x18, 0x09, 0x03, 0x2e, 0x02, 0x81, 0x9d,
		0x50, 0x60, 0x27, 0x18, 0x78, 0x09, 0x07, 0x9a, 0x02, 0x82, 0xa8, 0x90, 0x20, 0x2f, 0x28, 0x32,
		0x03, 0xe9, 0x56, 0x17, 0x9e, 0x8c, 0xed, 0x54, 0x2b, 0x0c, 0x4f, 0x09, 0x8e, 0x4d, 0xe2, 0x66,
		0x52, 0x17, 0x1e, 0x9c, 0x04, 0x08, 0x43, 0x21, 0xc2, 0x4d, 0x90, 0xb0, 0x15, 0x26, 0x6c, 0x05,
		0x0a, 0x4f, 0xa1, 0x42, 0x5b, 0xb0, 0x10, 0x17, 0x2e, 0xd9, 0x5b, 0xee, 0x5c, 0x8f, 0x04, 0xaf,
		0x88, 0x9b, 0x2c, 0x46, 0x78, 0xbd, 0x5e, 0x28, 0x22, 0x16, 0x61, 0x77, 0x5a, 0x96, 0xf8, 0xc2,
		0xc0, 0xd6, 0x96, 0xa7, 0x94, 0x08, 0x25, 0x9b, 0x13, 0x9b, 0xfa, 0xc7, 0x3f, 0x37, 0x8d, 0xdd,
		0xd3, 0x7f, 0xfe, 0x2c, 0x1a, 0xbb, 0xa7, 0xe9, 0x97, 0xc5, 0xe4, 0xd3, 0xdf, 0xa5, 0x9b, 0x7f,
		0x4a, 0x7f, 0x6e, 0x1a, 0xe5, 0xc9, 0xab, 0xa5, 0xed, 0x3f, 0x37, 0x8d, 0xed, 0xd3, 0x4f, 0x1f,
		0x4f, 0x4e, 0x36, 0x7e, 0xf5, 0x77, 0x3e, 0xfd, 0xbd, 0x75, 0x43, 0x3f, 0x0c, 0x9e, 0x72, 0xc0,
		0xab, 0xd9, 0xb1, 0x7f, 0xb0, 0x63, 0xec, 0x7f, 0x1f, 0x97, 0x45, 0xd9, 0xa7, 0x7f, 0x31, 0xe0,
		0x0c, 0xe9, 0xf6, 0x1d, 0x2c, 0x31, 0x38, 0xbd, 0xf1, 0xb0, 0x84, 0x20, 0xfa, 0x22, 0x14, 0x32,
		0x99, 0x3a, 0xf0, 0x70, 0x59, 0x3e, 0x47, 0xaf, 0x6f, 0x8f, 0x5b, 0x1f, 0xec, 0xef, 0xec, 0xec,
		0x96, 0xab, 0x9a, 0xdd, 0x31, 0xec, 0x8e, 0x96, 0x4e, 0x85, 0x35, 0x53, 0xa9, 0xd0, 0x3f, 0x1b,
		0x2b, 0x11, 0x69, 0xfd, 0x61, 0xa8, 0x59, 0x57, 0x4a, 0xc8, 0x9e, 0xe8, 0x69, 0x76, 0xeb, 0xb2,
		0x7c, 0x22, 0x3d, 0x99, 0x7c, 0x55, 0xd1, 0x66, 0xb7, 0x04, 0x6d, 0x64, 0x5b, 0x3e, 0x8b, 0x45,
		0x46, 0xfd, 0x22, 0xb8, 0xcd, 0x4e, 0x1f, 0x9b, 0xa5, 0xde, 0x3a, 0x0a, 0xb3, 0x3e, 0x1d, 0x5c,
		0x27, 0xac, 0x8f, 0x4e, 0x5c, 0x17, 0xe3, 0x49, 0x38, 0x8e, 0xbf, 0x66, 0x56, 0x9e, 0x62, 0x97,
		0x7c, 0xde, 0x14, 0x98, 0xae, 0x38, 0x14, 0x3b, 0x32, 0x49, 0x90, 0x58, 0x8b, 0x25, 0x90, 0x79,
		0x98, 0x89, 0x25, 0x90, 0x05, 0x72, 0x8a, 0x25, 0x90, 0x65, 0x88, 0x4b, 0x2c, 0x81, 0x2c, 0x5d,
		0x49, 0x62, 0x09, 0x64, 0x2d, 0x6a, 0x32, 0x0c, 0x97, 0x40, 0x7a, 0x42, 0x2a, 0x5f, 0x5d, 0x87,
		0xa2, 0xcf, 0x69, 0x05, 0x64, 0x9b, 0x81, 0xad, 0xf6, 0xe4, 0xd1, 0xee, 0x79, 0x11, 0xa3, 0x3c,
		0x71, 0xdb, 0xc1, 0xda, 0xee, 0x4c, 0x3a, 0x86, 0x72, 0x6a, 0x18, 0xca, 0xb1, 0x51, 0x28, 0xd7,
		0x1e, 0xe7, 0xf7, 0xba, 0x68, 0xd8, 0xad, 0xe3, 0xb2, 0x3b, 0xe9, 0xf5, 0xc8, 0xe9, 0xca, 0x76,
		0xb4, 0x22, 0x5e, 0x01, 0x29, 0x15, 0x90, 0x02, 0x52, 0x5e, 0x26, 0x65, 0xb6, 0x33, 0x0f, 0x38,
		0x01, 0x27, 0x2f, 0x70, 0xd2, 0x41, 0x34, 0x01, 0x25, 0x4f, 0x53, 0x82, 0x06, 0xf8, 0xa0, 0x67,
		0x7d, 0x75, 0x2e, 0xc3, 0xb8, 0x93, 0x5f, 0x82, 0x2a, 0x20, 0x08, 0x04, 0xad, 0x9b, 0x2e, 0x06,
		0x3f, 0xd0, 0xcb, 0xa0, 0x87, 0x3f, 0x3d, 0x8e, 0xf9, 0x15, 0xd8, 0x00, 0x9b, 0x37, 0x60, 0x53,
		0x29, 0xe3, 0xb6, 0x9f, 0xc5, 0x7e, 0xe0, 0x3e, 0x74, 0xd4, 0x3f, 0x72, 0x11, 0xb7, 0x81, 0x07,
		0xe2, 0x33, 0x00, 0x59, 0x2d, 0x20, 0xf7, 0x6e, 0xb1, 0x36, 0x6b, 0xff, 0x76, 0xeb, 0x66, 0x03,
		0x65, 0x76, 0x60, 0xf2, 0x12, 0x26, 0x40, 0x04, 0x88, 0x3c, 0x8b, 0xc8, 0xa1, 0xdd, 0x70, 0xbf,
		0xb6, 0x9b, 0x47, 0x2d, 0x60, 0x02, 0x4c, 0x9e, 0xc4, 0xe4, 0xd8, 0xb4, 0xeb, 0xe6, 0x5e, 0xdd,
		0x72, 0xf7, 0xcc, 0x46, 0xed, 0x3f, 0x76, 0xcd, 0xf9, 0x06, 0x5c, 0x80, 0xcb, 0x53, 0xb8, 0x64,
		0x90, 0xb8, 0xfb, 0xcd, 0x46, 0xc7, 0x69, 0x9b, 0x76, 0xc3, 0xc1, 0xb6, 0x11, 0x00, 0xf3, 0x24,
		0x30, 0xd6, 0x0f, 0xc7, 0x6a, 0xd4, 0xac, 0x1a, 0xf2, 0x11, 0x78, 0x79, 0x0d, 0x2f, 0xc9, 0xd2,
		0xbf, 0xdd, 0x70, 0xac, 0xf6, 0x81, 0xb9, 0x6f, 0xb9, 0x66, 0xad, 0xd6, 0xb6, 0x3a, 0x88, 0x30,
		0x20, 0xe6, 0x79, 0x62, 0x1a, 0x96, 0xfd, 0xf5, 0xdb, 0x5e, 0xb3, 0x0d, 0x60, 0x00, 0xcc, 0x2b,
		0x80, 0xa9, 0x20, 0xc4, 0x80, 0x98, 0x5f, 0x24, 0x06, 0x21, 0x06, 0xc0, 0xbc, 0x16, 0x98, 0xba,
		0xdd, 0xf8, 0xee, 0x9a, 0x8e, 0xd3, 0xb6, 0xf7, 0x8e, 0x1c, 0x0b, 0xa8, 0x00, 0x95, 0xe7, 0x51,
		0xa9, 0x59, 0x75, 0xf3, 0x0f, 0x50, 0x02, 0x4a, 0x5e, 0xa6, 0xc4, 0x3d, 0x36, 0xdb, 0xb6, 0xe9,
		0xd8, 0xcd, 0x06, 0x78, 0x01, 0x2f, 0xcf, 0xf2, 0x82, 0x05, 0x22, 0x20, 0xf2, 0x02, 0x22, 0xf5,
		0x26, 0x84, 0x2c, 0x20, 0x79, 0x01, 0x92, 0x56, 0xbb, 0xe9, 0x58, 0xfb, 0x71, 0xca, 0x49, 0xcf,
		0x75, 0x81, 0x17, 0xf0, 0xf2, 0x04, 0x2f, 0x87, 0xe6, 0x8f, 0x94, 0x19, 0xac, 0x26, 0x82, 0x96,
		0x57, 0xd1, 0xd2, 0xb6, 0x3a, 0x56, 0xfb, 0x18, 0x2b, 0xd0, 0x60, 0xe6, 0x95, 0xcc, 0xd8, 0x8d,
		0xdb, 0x28, 0x83, 0x79, 0x33, 0x68, 0x79, 0x96, 0x96, 0xb6, 0xd5, 0xb1, 0x6b, 0x47, 0x66, 0x1d,
		0xb1, 0x05, 0xb4, 0xbc, 0x4c, 0x0b, 0xba, 0x17, 0x80, 0x9e, 0xf7, 0x53, 0xc4, 0x72, 0x0f, 0x37,
		0xc3, 0xa0, 0x93, 0x63, 0x7c, 0x80, 0x0e, 0xd0, 0x79, 0x13, 0x3a, 0x0c, 0xf7, 0xd8, 0x01, 0x1f,
		0x32, 0xf8, 0x70, 0xde, 0x0b, 0x0e, 0x8c, 0xa8, 0x60, 0xc4, 0x7c, 0x8f, 0x38, 0x40, 0xa2, 0x02,
		0x12, 0xef, 0xbd, 0xe3, 0xe0, 0x88, 0x0a, 0x47, 0xdc, 0xf7, 0x94, 0x83, 0x24, 0x52, 0x24, 0xf1,
		0xdd, 0x08, 0x0a, 0x90, 0x08, 0x81, 0x54, 0x41, 0x48, 0x02, 0x49, 0x73, 0x22, 0x09, 0x21, 0x09,
		0x20, 0xbd, 0x17, 0x24, 0xb6, 0x7b, 0xd6, 0x81, 0x10, 0x29, 0x84, 0x98, 0xad, 0xc9, 0x83, 0x1e,
		0x7a, 0xf4, 0x70, 0xdc, 0xe3, 0x0e, 0x8e, 0x48, 0x71, 0x84, 0x05, 0x34, 0xa0, 0xf3, 0x46, 0x74,
		0x78, 0xed, 0x89, 0x07, 0x3c, 0xa4, 0xe0, 0x61, 0xbb, 0x57, 0x1e, 0x1c, 0x51, 0xe1, 0x88, 0xf3,
		0x1e, 0x7a, 0x50, 0x44, 0x89, 0x22, 0xde, 0x7b, 0xeb, 0xc1, 0x12, 0x19, 0x96, 0x18, 0xef, 0xb9,
		0x07, 0x45, 0x54, 0x28, 0xe2, 0xbc, 0x17, 0x1f, 0x14, 0x51, 0xa1, 0xc8, 0xb1, 0xdc, 0x9a, 0x75,
		0x60, 0x1e, 0xd5, 0x1d, 0xf7, 0xd0, 0x72, 0xda, 0xf6, 0x3e, 0x20, 0x02, 0x44, 0xbf, 0x0a, 0xd1,
		0x51, 0x23, 0xdb, 0x9a, 0x66, 0xd5, 0xdc, 0x7a, 0x07, 0xdb, 0x8a, 0x00, 0xd1, 0x1b, 0x20, 0x4a,
		0xf5, 0xb5, 0x55, 0x43, 0x46, 0x03, 0x47, 0xef, 0xe0, 0xc8, 0xb1, 0xeb, 0xf6, 0x7f, 0x99, 0x53,
		0x84, 0x1b, 0x9c, 0xd6, 0xdd, 0x3b, 0x73, 0x72, 0x06, 0x94, 0xb1, 0xbe, 0x04, 0x2c, 0xd0, 0x91,
		0x80, 0x05, 0x7a, 0x11, 0xbc, 0x40, 0x17, 0x82, 0x96, 0x9c, 0xd3, 0x32, 0xb9, 0xdc, 0x7e, 0xdf,
		0x6c, 0x65, 0xdd, 0x2b, 0xda, 0xae, 0x59, 0xff, 0xda, 0x6c, 0xdb, 0xce, 0xb7, 0x43, 0x90, 0x02,
		0x52, 0x9e, 0x25, 0xe5, 0xf6, 0x6f, 0x40, 0x05, 0xa8, 0x3c, 0x83, 0x0a, 0x5a, 0xe2, 0x80, 0x9f,
		0xb5, 0x4d, 0x4e, 0x0c, 0x23, 0x4f, 0x9e, 0x09, 0xe2, 0x98, 0xb4, 0x32, 0x84, 0x50, 0x21, 0x5d,
		0xe3, 0xe7, 0x4a, 0xff, 0x79, 0xd2, 0x7e, 0x8e, 0x74, 0xad, 0xa3, 0x69, 0x19, 0xd1, 0x84, 0xa5,
		0x9b, 0x52, 0x0e, 0x95, 0xa7, 0xfc, 0xa1, 0xd4, 0xab, 0x84, 0x53, 0x94, 0x1e, 0x75, 0xcf, 0xc5,
		0x85, 0x37, 0xf2, 0xd4, 0x79, 0x9c, 0x8c, 0x0a, 0xc3, 0x91, 0x90, 0xdd, 0xa1, 0xec, 0xfb, 0x03,
		0x43, 0x0a, 0xf5, 0x73, 0x18, 0xfe, 0x65, 0xf8, 0x32, 0x52, 0x9e, 0xec, 0x8a, 0xc2, 0xfd, 0x17,
		0xa2, 0x07, 0xaf, 0x14, 0x46, 0xe1, 0x50, 0x0d, 0xbb, 0xc3, 0x20, 0xca, 0xbe, 0x2a, 0xf8, 0x91,
		0x1f, 0x15, 0x02, 0x71, 0x29, 0x82, 0xc9, 0xa7, 0x42, 0xe0, 0xcb, 0xbf, 0x8c, 0x48, 0x79, 0x4a,
		0x18, 0x3d, 0x4f, 0x79, 0x67, 0x5e, 0x24, 0x0a, 0x41, 0x34, 0x2a, 0xa8, 0xe0, 0x32, 0x8a, 0xff,
		0x28, 0x5c, 0x28, 0xc3, 0x1f, 0x5d, 0x56, 0x8c, 0x50, 0x78, 0xdd, 0x73, 0xef, 0xcc, 0x0f, 0x7c,
		0x75, 0x5d, 0x18, 0x85, 0xa2, 0xef, 0x5f, 0x89, 0x68, 0xf2, 0x45, 0x21, 0x1a, 0x9f, 0x25, 0xbf,
		0x90, 0x7e, 0x2e, 0xf8, 0xa3, 0xcb, 0xb2, 0x11, 0x0d, 0xc7, 0x61, 0x57, 0x18, 0xe1, 0x70, 0xac,
		0x44, 0x68, 0xf8, 0xbd, 0x42, 0xf2, 0xbf, 0xd0, 0x4c, 0xa1, 0xf4, 0xdc, 0x89, 0x96, 0x45, 0xc4,
		0x1c, 0x5b, 0x17, 0x57, 0x2a, 0xf4, 0x8c, 0x71, 0x4c, 0xfa, 0x59, 0x20, 0x48, 0x3a, 0xb5, 0xfe,
		0xf3, 0x5c, 0x48, 0xb2, 0xb3, 0x40, 0xc2, 0x41, 0x70, 0xaa, 0xc5, 0x37, 0x36, 0xd2, 0x88, 0x51,
		0x50, 0xd7, 0x23, 0xa1, 0xfd, 0xae, 0x7d, 0x18, 0x76, 0x8d, 0x38, 0x7e, 0x19, 0x41, 0xd4, 0x3b,
		0x33, 0xe2, 0x17, 0xa3, 0xaa, 0xdd, 0x7a, 0xa4, 0x53, 0xca, 0x44, 0xc4, 0xdb, 0xb5, 0x0f, 0x84,
		0x4b, 0x07, 0x7a, 0x27, 0x09, 0x8f, 0xa4, 0xf3, 0x51, 0x62, 0xe7, 0x77, 0x71, 0xfd, 0x73, 0x18,
		0xf6, 0xe2, 0x77, 0x24, 0x21, 0x9a, 0xf6, 0x9c, 0x54, 0xff, 0xe6, 0x45, 0x66, 0x38, 0x18, 0x5f,
		0x08, 0xa9, 0xf4, 0xaa, 0xa6, 0xc2, 0xb1, 0x20, 0x6e, 0xf0, 0x8c, 0xb5, 0x73, 0x41, 0xfe, 0x37,
		0x54, 0x33, 0x7e, 0xfd, 0x4d, 0xa8, 0x89, 0xa8, 0x1b, 0xfa, 0x23, 0xf2, 0x0a, 0xf1, 0x4e, 0x80,
		0x6c, 0xca, 0xe0, 0x5a, 0xf3, 0x65, 0x37, 0x18, 0xf7, 0x84, 0xa6, 0xce, 0x85, 0x66, 0xb7, 0x2e,
		0xcb, 0x5a, 0x1a, 0x57, 0xb4, 0x76, 0x22, 0xbb, 0x34, 0xbb, 0xa6, 0x75, 0x87, 0x52, 0x79, 0xbe,
		0x14, 0xa1, 0x16, 0xfb, 0xef, 0x89, 0x8c, 0x7f, 0x32, 0x1a, 0x9f, 0x19, 0x4e, 0xfd, 0x58, 0xf3,
		0x23, 0x2d, 0x41, 0xad, 0x58, 0xdc, 0xa0, 0xee, 0xd8, 0x4c, 0xe2, 0xe5, 0xfd, 0x98, 0xd9, 0x9b,
		0x21, 0x8b, 0x7e, 0x39, 0x8f, 0x5d, 0xf8, 0x7c, 0x10, 0x42, 0xe7, 0xec, 0x14, 0x28, 0x4f, 0xe4,
		0xa9, 0x3c, 0x41, 0xce, 0xaa, 0x53, 0xcc, 0xf2, 0xf8, 0x96, 0x6d, 0xf2, 0x5d, 0xae, 0x21, 0x98,
		0xad, 0xf4, 0x48, 0x85, 0xe3, 0xae, 0x92, 0x13, 0xfd, 0xd3, 0x48, 0x9f, 0xa0, 0x3d, 0x79, 0x80,
		0x6e, 0x6b, 0xf2, 0xd8, 0x5c, 0x3b, 0xf2, 0x23, 0xb7, 0x1e, 0x3f, 0x2f, 0xb7, 0x1e, 0x8d, 0x5c,
		0x27, 0xb8, 0x74, 0x0f, 0x95, 0x3d, 0xba, 0xac, 0xb4, 0x67, 0x1e, 0x8a, 0xdb, 0x4a, 0x9e, 0x85,
		0xdb, 0x49, 0x9e, 0x81, 0x6b, 0x8f, 0x2e, 0xcb, 0x69, 0x96, 0x48, 0x93, 0x84, 0xdd, 0xa3, 0x15,
		0xfb, 0xe9, 0xc4, 0x2e, 0x42, 0x51, 0x42, 0x4f, 0x50, 0x7f, 0x40, 0x2e, 0xb5, 0x60, 0x91, 0x29,
		0xf6, 0xc7, 0xcd, 0x25, 0x16, 0x75, 0xbf, 0xfb, 0x32, 0x7e, 0x84, 0x45, 0x62, 0x66, 0xed, 0x27,
		0x91, 0x55, 0xaf, 0x6a, 0x9b, 0xc4, 0x0c, 0x4b, 0xe3, 0x08, 0xcd, 0x0c, 0x35, 0x05, 0x6f, 0x52,
		0x47, 0xa0, 0x18, 0xd3, 0x89, 0xcf, 0xeb, 0x66, 0xe7, 0x72, 0x69, 0xf6, 0x24, 0x3a, 0x8d, 0x63,
		0x33, 0x75, 0xbb, 0x33, 0x5d, 0x9b, 0x82, 0x89, 0xf5, 0x17, 0x56, 0xca, 0xbc, 0xe6, 0x87, 0x44,
		0x25, 0x79, 0xb2, 0xc6, 0x48, 0x36, 0x98, 0x4c, 0xe3, 0x71, 0x6a, 0x26, 0x51, 0xff, 0xa4, 0x29,
		0x00, 0xc8, 0x0b, 0x01, 0x0e, 0x82, 0x80, 0x91, 0x30, 0xe0, 0x22, 0x10, 0xd8, 0x09, 0x05, 0x76,
		0x82, 0x81, 0x97, 0x70, 0xa0, 0x29, 0x20, 0x88, 0x0a, 0x09, 0xf2, 0x82, 0x22, 0x33, 0x90, 0x6e,
		0x75, 0xe1, 0xc9, 0xd8, 0x4e, 0xb9, 0x94, 0xf7, 0x98, 0xe0, 0xd8, 0x24, 0x6e, 0x26, 0x75, 0xe1,
		0xc1, 0x49, 0x80, 0x30, 0x14, 0x22, 0xdc, 0x04, 0x09, 0x5b, 0x61, 0xc2, 0x56, 0xa0, 0xf0, 0x14,
		0x2a, 0xb4, 0x05, 0x0b, 0x71, 0xe1, 0x92, 0xbd, 0xe5, 0xce, 0xf5, 0x48, 0xf0, 0x8a, 0xb8, 0xc9,
		0x62, 0x84, 0xd7, 0xeb, 0x85, 0x22, 0x62, 0x11, 0x76, 0xa7, 0x65, 0x89, 0x2f, 0x0c, 0x6c, 0x6d,
		0x79, 0x4a, 0x89, 0x50, 0xb2, 0x39, 0x04, 0xaa, 0x7f, 0xfc, 0xf8, 0xe7, 0xa6, 0xb1, 0xeb, 0x19,
		0x7d, 0xd3, 0x38, 0x38, 0xfd, 0xbb, 0xf8, 0xb9, 0x7c, 0x53, 0xfd, 0xf4, 0xf7, 0xce, 0xcd, 0xfd,
		0x17, 0xff, 0x79, 0xec, 0xc7, 0x8a, 0x9f, 0x77, 0x6e, 0xaa, 0x4f, 0x7c, 0xa7, 0x72, 0x53, 0x7d,
		0xe5, 0xbf, 0xb1, 0x7d, 0xf3, 0xf1, 0xc1, 0x8f, 0xc6, 0xaf, 0x97, 0x9e, 0xfa, 0x85, 0xf2, 0x13,
		0xbf, 0xb0, 0xf5, 0xd4, 0x2f, 0x6c, 0x3d, 0xf1, 0x0b, 0x4f, 0x9a, 0x54, 0x7a, 0xe2, 0x17, 0xb6,
		0x6f, 0xfe, 0x79, 0xf0, 0xf3, 0x1f, 0x1f, 0xff, 0xd1, 0xca, 0xcd, 0xa7, 0x7f, 0x9e, 0xfa, 0xde,
		0xce, 0xcd, 0x3f, 0xd5, 0x4f, 0x9f, 0xe8, 0x27, 0x86, 0x53, 0x0e, 0x0e, 0xd7, 0xec, 0xd8, 0x3f,
		0xd8, 0x79, 0xdd, 0xff, 0xe0, 0x76, 0xab, 0x72, 0xbb, 0x7f, 0x31, 0xf0, 0x3b, 0x08, 0xb2, 0x77,
		0xf8, 0x16, 0x83, 0x23, 0x42, 0x0f, 0x8b, 0x4c, 0xa2, 0x2f, 0x42, 0x21, 0x93, 0xc9, 0x25, 0x8f,
		0x10, 0xc6, 0xe7, 0xbc, 0xff, 0xed, 0x19, 0xff, 0x83, 0xfd, 0x9d, 0x9d, 0xdd, 0x72, 0x55, 0xb3,
		0x3b, 0x86, 0xdd, 0xd1, 0xd2, 0x62, 0x89, 0x66, 0x2a, 0x15, 0xfa, 0x67, 0x63, 0x25, 0x22, 0xad,
		0x3f, 0x0c, 0x35, 0xeb, 0x4a, 0x09, 0xd9, 0x13, 0xbd, 0x64, 0xfb, 0xf0, 0x89, 0xf4, 0x64, 0xf2,
		0x55, 0x45, 0x9b, 0xdd, 0x41, 0xb6, 0x91, 0xed, 0x18, 0x2e, 0x96, 0x36, 0x18, 0x75, 0x29, 0xe1,
		0x56, 0xc0, 0x78, 0xac, 0x90, 0x71, 0xeb, 0x29, 0xcc, 0xba, 0xc3, 0x70, 0xad, 0x69, 0x3c, 0x5a,
		0xdb, 0x58, 0x90, 0x2b, 0xa1, 0x0b, 0xc4, 0x9a, 0x59, 0x79, 0x8a, 0x63, 0x16, 0x79, 0xd3, 0x60,
		0xba, 0xe2, 0x50, 0x10, 0xcb, 0x44, 0x41, 0x62, 0x2d, 0x96, 0xc9, 0xe6, 0x61, 0x26, 0x96, 0xc9,
		0x16, 0xc8, 0x29, 0x96, 0xc9, 0x96, 0xa1, 0x2e, 0xb1, 0x4c, 0xb6, 0x74, 0x29, 0x89, 0x65, 0xb2,
		0xb5, 0xa8, 0xca, 0x30, 0x5c, 0x26, 0xeb, 0x09, 0xa9, 0x7c, 0x75, 0x1d, 0x8a, 0x3e, 0xa7, 0x55,
		0xb2, 0x6d, 0x06, 0xb6, 0xda, 0x93, 0x47, 0xbb, 0xe7, 0x45, 0x8c, 0xf2, 0xc4, 0x6d, 0xe3, 0x74,
		0xbb, 0x33, 0x69, 0x54, 0xcb, 0xa9, 0x4f, 0x2d, 0xc7, 0xfe, 0xb4, 0x5c, 0x5b, 0xeb, 0x3f, 0xdb,
		0xaa, 0x05, 0x1d, 0xb0, 0x41, 0xca, 0x33, 0xa4, 0x54, 0x40, 0x0a, 0x48, 0x79, 0x99, 0x94, 0x56,
		0xdb, 0x3a, 0xb0, 0x7f, 0xb8, 0x07, 0x75, 0xf3, 0x6b, 0x07, 0x9c, 0x80, 0x93, 0x17, 0x38, 0xe9,
		0x20, 0x9a, 0x80, 0x92, 0xa7, 0x29, 0xc1, 0xbd, 0x0b, 0xa0, 0x67, 0x7d, 0x75, 0x2e, 0xc3, 0xb8,
		0x93, 0x5f, 0x82, 0x2a, 0x20, 0x08, 0x04, 0xad, 0x9b, 0x2e, 0x06, 0x3f, 0xd0, 0xcb, 0xa0, 0x87,
		0x3f, 0x3d, 0x8e, 0xf9, 0x15, 0xd8, 0x00, 0x9b, 0x37, 0x60, 0x53, 0x29, 0xe3, 0x92, 0xa9, 0xc5,
		0x7e, 0xe0, 0x1a, 0x7e, 0xd4, 0x3f, 0x72, 0x11, 0xb7, 0x81, 0x07, 0xe2, 0x33, 0x00, 0x59, 0x2d,
		0x20, 0xf7, 0x2e, 0x4f, 0x37, 0x6b, 0xff, 0x76, 0xeb, 0x66, 0x03, 0x65, 0x76, 0x60, 0xf2, 0x12,
		0x26, 0x40, 0x04, 0x88, 0x3c, 0x8b, 0xc8, 0xa1, 0xdd, 0x70, 0xbf, 0xb6, 0x9b, 0x47, 0x2d, 0x60,
		0x02, 0x4c, 0x9e, 0xc4, 0xe4, 0xd8, 0xb4, 0xeb, 0xe6, 0x5e, 0xdd, 0x72, 0xf7, 0xcc, 0x46, 0xed,
		0x3f, 0x76, 0xcd, 0xf9, 0x06, 0x5c, 0x80, 0xcb, 0x53, 0xb8, 0x64, 0x90, 0xb8, 0xfb, 0xcd, 0x46,
		0xc7, 0x69, 0x9b, 0x76, 0xc3, 0xc1, 0xb6, 0x11, 0x00, 0xf3, 0x24, 0x30, 0xd6, 0x0f, 0xc7, 0x6a,
		0xd4, 0xac, 0x1a, 0xf2, 0x11, 0x78, 0x79, 0x0d, 0x2f, 0xc9, 0xd2, 0xbf, 0xdd, 0x70, 0xac, 0xf6,
		0x81, 0xb9, 0x6f, 0xb9, 0x66, 0xad, 0xd6, 0xb6, 0x3a, 0x88, 0x30, 0x20, 0xe6, 0x79, 0x62, 0x1a,
		0x96, 0xfd, 0xf5, 0xdb, 0x5e, 0xb3, 0x0d, 0x60, 0x00, 0xcc, 0x2b, 0x80, 0xa9, 0x20, 0xc4, 0x80,
		0x98, 0x5f, 0x24, 0x06, 0x21, 0x06, 0xc0, 0xbc, 0x16, 0x98, 0xba, 0xdd, 0xf8, 0xee, 0x9a, 0x8e,
		0xd3, 0xb6, 0xf7, 0x8e, 0x1c, 0x0b, 0xa8, 0x00, 0x95, 0xe7, 0x51, 0xa9, 0x59, 0x75, 0xf3, 0x0f,
		0x50, 0x02, 0x4a, 0x5e, 0xa6, 0xc4, 0x3d, 0x36, 0xdb, 0xb6, 0xe9, 0xd8, 0xcd, 0x06, 0x78, 0x01,
		0x2f, 0xcf, 0xf2, 0x82, 0x05, 0x22, 0x20, 0xf2, 0x02, 0x22, 0xf5, 0x26, 0x84, 0x2c, 0x20, 0x79,
		0x01, 0x92, 0x56, 0xbb, 0xe9, 0x58, 0xfb, 0x71, 0xca, 0x49, 0xcf, 0x75, 0x81, 0x17, 0xf0, 0xf2,
		0x04, 0x2f, 0x87, 0xe6, 0x8f, 0x94, 0x19, 0xac, 0x26, 0x82, 0x96, 0x57, 0xd1, 0xd2, 0xb6, 0x3a,
		0x56, 0xfb, 0x18, 0x2b, 0xd0, 0x60, 0xe6, 0x95, 0xcc, 0xd8, 0x8d, 0xdb, 0x28, 0x83, 0x79, 0x33,
		0x68, 0x79, 0x96, 0x96, 0xb6, 0xd5, 0xb1, 0x6b, 0x47, 0x66, 0x1d, 0xb1, 0x05, 0xb4, 0xbc, 0x4c,
		0x0b, 0xba, 0x17, 0x80, 0x9e, 0xf7, 0x53, 0xc4, 0x72, 0x0f, 0x37, 0xc3, 0xa0, 0x93, 0x63, 0x7c,
		0x80, 0x0e, 0xd0, 0x79, 0x13, 0x3a, 0x0c, 0xf7, 0xd8, 0x01, 0x1f, 0x32, 0xf8, 0x70, 0xde, 0x0b,
		0x0e, 0x8c, 0xa8, 0x60, 0xc4, 0x7c, 0x8f, 0x38, 0x40, 0xa2, 0x02, 0x12, 0xef, 0xbd, 0xe3, 0xe0,
		0x88, 0x0a, 0x47, 0xdc, 0xf7, 0x94, 0x83, 0x24, 0x52, 0x24, 0xf1, 0xdd, 0x08, 0x0a, 0x90, 0x08,
		0x81, 0x54, 0x41, 0x48, 0x02, 0x49, 0x73, 0x22, 0x09, 0x21, 0x09, 0x20, 0xbd, 0x17, 0x24, 0xb6,
		0x7b, 0xd6, 0x81, 0x10, 0x29, 0x84, 0x98, 0xad, 0xc9, 0x83, 0x1e, 0x7a, 0xf4, 0x70, 0xdc, 0xe3,
		0x0e, 0x8e, 0x48, 0x71, 0x84, 0x05, 0x34, 0xa0, 0xf3, 0x46, 0x74, 0x78, 0xed, 0x89, 0x07, 0x3c,
		0xa4, 0xe0, 0x61, 0xbb, 0x57, 0x1e, 0x1c, 0x51, 0xe1, 0x88, 0xf3, 0x1e, 0x7a, 0x50, 0x44, 0x89,
		0x22, 0xde, 0x7b, 0xeb, 0xc1, 0x12, 0x19, 0x96, 0x18, 0xef, 0xb9, 0x07, 0x45, 0x54, 0x28, 0xe2,
		0xbc, 0x17, 0x1f, 0x14, 0x51, 0xa1, 0xc8, 0xb1, 0xdc, 0x9a, 0x75, 0x60, 0x1e, 0xd5, 0x1d, 0xf7,
		0xd0, 0x72, 0xda, 0xf6, 0x3e, 0x20, 0x02, 0x44, 0xbf, 0x0a, 0xd1, 0x51, 0x23, 0xdb, 0x9a, 0x66,
		0xd5, 0xdc, 0x7a, 0x07, 0xdb, 0x8a, 0x00, 0xd1, 0x1b, 0x20, 0x4a, 0xf5, 0xb5, 0x55, 0x43, 0x46,
		0x03, 0x47, 0xef, 0xe0, 0xc8, 0xb1, 0xeb, 0xf6, 0x7f, 0x99, 0x53, 0x84, 0x1b, 0x9c, 0xd6, 0xdd,
		0x3b, 0x73, 0x72, 0x06, 0x94, 0xb1, 0xbe, 0x04, 0x2c, 0xd0, 0x91, 0x80, 0x05, 0x7a, 0x11, 0xbc,
		0x40, 0x17, 0x82, 0x96, 0x9c, 0xd3, 0x32, 0xb9, 0xdc, 0x7e, 0xdf, 0x6c, 0x65, 0xdd, 0x2b, 0xda,
		0xae, 0x59, 0xff, 0xda, 0x6c, 0xdb, 0xce, 0xb7, 0x43, 0x90, 0x02, 0x52, 0x9e, 0x25, 0xe5, 0xf6,
		0x6f, 0x40, 0x05, 0xa8, 0x3c, 0x83, 0x0a, 0x5a, 0xe2, 0x80, 0x9f, 0xb5, 0x4d, 0x4e, 0x0c, 0x23,
		0x4f, 0x9e, 0x09, 0xe2, 0x98, 0xb4, 0x32, 0x84, 0x50, 0x21, 0x5d, 0xe3, 0xe7, 0x4a, 0xff, 0x79,
		0xd2, 0x7e, 0x8e, 0x74, 0xad, 0xa3, 0x69, 0x19, 0xd1, 0x84, 0xa5, 0x9b, 0x52, 0x0e, 0x95, 0xa7,
		0xfc, 0xa1, 0xd4, 0xab, 0x84, 0x53, 0x94, 0x1e, 0x75, 0xcf, 0xc5, 0x85, 0x37, 0xf2, 0xd4, 0x79,
		0x9c, 0x8c, 0x0a, 0xc3, 0x91, 0x90, 0xdd, 0xa1, 0xec, 0xfb, 0x03, 0x43, 0x0a, 0xf5, 0x73, 0x18,
		0xfe, 0x65, 0xf8, 0x32, 0x52, 0x9e, 0xec, 0x8a, 0xc2, 0xfd, 0x17, 0xa2, 0x07, 0xaf, 0x14, 0x46,
		0xe1, 0x50, 0x0d, 0xbb, 0xc3, 0x20, 0xca, 0xbe, 0x2a, 0xf8, 0x91, 0x1f, 0x15, 0x02, 0x71, 0x29,
		0x82, 0xc9, 0xa7, 0x42, 0xe0, 0xcb, 0xbf, 0x8c, 0x48, 0x79, 0x4a, 0x18, 0x3d, 0x4f, 0x79, 0x67,
		0x5e, 0x24, 0x0a, 0x41, 0x34, 0x2a, 0xa8, 0xe0, 0x32, 0x8a, 0xff, 0x28, 0x5c, 0x28, 0xc3, 0x1f,
		0x5d, 0x56, 0x8c, 0x50, 0x78, 0xdd, 0x73, 0xef, 0xcc, 0x0f, 0x7c, 0x75, 0x5d, 0x18, 0x85, 0xa2,
		0xef, 0x5f, 0x89, 0x68, 0xf2, 0x45, 0x21, 0x1a, 0x9f, 0x25, 0xbf, 0x90, 0x7e, 0x2e, 0x24, 0xbf,
		0x10, 0x0d, 0xc7, 0x61, 0x57, 0x18, 0xe1, 0x70, 0xac, 0x44, 0x68, 0xf8, 0xbd, 0x42, 0xf2, 0xbf,
		0xd0, 0x4c, 0xa1, 0xf4, 0xdc, 0x89, 0x96, 0x45, 0xc4, 0x1c, 0x5b, 0x17, 0x57, 0x2a, 0xf4, 0x8c,
		0x71, 0x4c, 0xfa, 0x59, 0x20, 0x48, 0x3a, 0xb5, 0xfe, 0xf3, 0x5c, 0x48, 0xb2, 0xb3, 0x40, 0xc2,
		0x41, 0x70, 0xaa, 0xc5, 0x37, 0x36, 0xd2, 0x88, 0x51, 0x50, 0xd7, 0x23, 0xa1, 0xfd, 0xae, 0x7d,
		0x18, 0x76, 0x8d, 0x38, 0x7e, 0x19, 0x41, 0xd4, 0x3b, 0x33, 0xe2, 0x17, 0xa3, 0xaa, 0xdd, 0x7a,
		0xa4, 0x2d, 0xc1, 0x44, 0xc4, 0xdb, 0xb5, 0x0f, 0x84, 0x4b, 0x07, 0x7a, 0x27, 0x09, 0x8f, 0xa4,
		0xf3, 0x51, 0x62, 0xe7, 0x77, 0x71, 0xfd, 0x73, 0x18, 0xf6, 0xe2, 0x77, 0x24, 0x21, 0x9a, 0xf6,
		0x9c, 0x54, 0xff, 0xe6, 0x45, 0x66, 0x38, 0x18, 0x5f, 0x08, 0xa9, 0xf4, 0xaa, 0xa6, 0xc2, 0xb1,
		0x20, 0x6e, 0xf0, 0x8c, 0xb5, 0x73, 0x41, 0xfe, 0x37, 0x54, 0x33, 0x7e, 0xfd, 0x4d, 0xa8, 0x89,
		0xa8, 0x1b, 0xfa, 0x23, 0xf2, 0x0a, 0xf1, 0x4e, 0x80, 0x6c, 0xca, 0xe0, 0x5a, 0xf3, 0x65, 0x37,
		0x18, 0xf7, 0x84, 0xa6, 0xce, 0x85, 0x66, 0xb7, 0x2e, 0x2b, 0x5a, 0x1a, 0x57, 0xb4, 0x76, 0x22,
		0xbb, 0x34, 0xbb, 0xa6, 0x75, 0x87, 0x52, 0x79, 0xbe, 0x14, 0xa1, 0x16, 0xfb, 0xef, 0x89, 0x8c,
		0x7f, 0x32, 0x1a, 0x9f, 0x19, 0x4e, 0xfd, 0x58, 0xf3, 0x23, 0x2d, 0x41, 0xad, 0x58, 0xda, 0xa0,
		0xee, 0xd8, 0x4c, 0xe2, 0xe5, 0xfd, 0x98, 0xd9, 0x9b, 0x21, 0x8b, 0x7e, 0x39, 0x8f, 0x5d, 0xf8,
		0x7c, 0x10, 0x42, 0xe7, 0xec, 0x14, 0x28, 0x4f, 0xe4, 0xa9, 0x3c, 0x41, 0xce, 0xaa, 0x53, 0xcc,
		0xf2, 0xf8, 0x96, 0x6d, 0xf2, 0x5d, 0xae, 0x21, 0x98, 0xad, 0xf4, 0x48, 0x85, 0xe3, 0xae, 0x92,
		0x13, 0xfd, 0xd3, 0x48, 0x9f, 0xa0, 0x3d, 0x79, 0x80, 0x6e, 0x6b, 0xf2, 0xd8, 0x5c, 0x3b, 0xf2,
		0x23, 0xb7, 0x1e, 0x3f, 0x2f, 0xb7, 0x1e, 0x8d, 0x5c, 0x27, 0xb8, 0x74, 0x0f, 0x95, 0x3d, 0xba,
		0xac, 0xb4, 0x67, 0x1e, 0x8a, 0xdb, 0x4a, 0x9e, 0x85, 0xdb, 0x49, 0x9e, 0x81, 0x1b, 0x7f, 0x3b,
		0xcd, 0x12, 0x69, 0x92, 0xb0, 0x7b, 0xb4, 0x62, 0x3f, 0x9d, 0xd8, 0x45, 0x28, 0x4a, 0xe8, 0x29,
		0xcf, 0x46, 0xe4, 0xf7, 0x22, 0x72, 0x21, 0x22, 0xd3, 0xe9, 0xb3, 0x46, 0x12, 0x8b, 0xb0, 0xdf,
		0x7d, 0x19, 0xab, 0xd4, 0x22, 0x31, 0xb3, 0xf6, 0x93, 0x28, 0xaa, 0x57, 0xb5, 0x4d, 0x62, 0x86,
		0xa5, 0x31, 0x83, 0x66, 0x36, 0x9a, 0xe2, 0x36, 0xa9, 0x19, 0x50, 0x8c, 0xdf, 0xc4, 0xe7, 0x70,
		0xb3, 0xf3, 0xb6, 0xd4, 0x69, 0x89, 0x4e, 0xd9, 0xd8, 0x4c, 0xd3, 0xee, 0x4c, 0xcd, 0xa6, 0x60,
		0x62, 0xad, 0x85, 0x95, 0x0a, 0xaf, 0xf9, 0x21, 0xcd, 0x80, 0x77, 0x9b, 0x57, 0xe9, 0x46, 0x94,
		0x87, 0x1a, 0x80, 0x6a, 0x48, 0xa1, 0x29, 0x05, 0xc8, 0x4b, 0x02, 0x0e, 0xd2, 0x80, 0x91, 0x44,
		0xe0, 0x22, 0x15, 0xd8, 0x49, 0x06, 0x76, 0xd2, 0x81, 0x97, 0x84, 0xa0, 0x29, 0x25, 0x88, 0x4a,
		0x0a, 0xf2, 0xd2, 0x22, 0x33, 0x30, 0xdd, 0xb2, 0xc4, 0x66, 0x45, 0x30, 0x35, 0x97, 0xb8, 0x3f,
		0xd3, 0x16, 0x1a, 0x6c, 0x04, 0x07, 0x27, 0xe1, 0xc1, 0x50, 0x80, 0x70, 0x13, 0x22, 0x6c, 0x05,
		0x09, 0x5b, 0x61, 0xc2, 0x53, 0xa0, 0xd0, 0x16, 0x2a, 0xc4, 0x05, 0x0b, 0x1b, 0xe1, 0x92, 0x19,
		0xea, 0x05, 0x83, 0x61, 0xe8, 0xab, 0xf3, 0x0b, 0x3e, 0x01, 0x6c, 0x9a, 0x23, 0x6e, 0x4d, 0x67,
		0x12, 0x07, 0x26, 0xc2, 0x66, 0x93, 0x89, 0xb9, 0x5c, 0x04, 0x0e, 0x47, 0xa1, 0xc3, 0x58, 0xf0,
		0x70, 0x15, 0x3e, 0xec, 0x05, 0x10, 0x7b, 0x21, 0xc4, 0x5b, 0x10, 0xf1, 0x10, 0x46, 0x4c, 0x04,
		0x52, 0x86, 0x82, 0x73, 0x3d, 0x12, 0x3c, 0x23, 0xf6, 0xd8, 0x97, 0xea, 0x0b, 0xa7, 0x78, 0x3d,
		0x91, 0x1f, 0xdb, 0x8c, 0x4c, 0x6e, 0x7b, 0x72, 0x20, 0xd8, 0x75, 0xca, 0xe0, 0xd7, 0xe3, 0x40,
		0x3f, 0xf4, 0x25, 0xbb, 0x44, 0x9e, 0x19, 0x9f, 0x34, 0x54, 0xe1, 0xa3, 0x53, 0x1f, 0xd8, 0x7f,
		0x10, 0x7a, 0x5d, 0xe5, 0x0f, 0x65, 0xcd, 0x1f, 0xf8, 0x2a, 0x62, 0x3c, 0x90, 0x86, 0x18, 0x78,
		0xca, 0xbf, 0x8c, 0xdf, 0x8b, 0xbe, 0x17, 0x44, 0x02, 0x0d, 0x55, 0x96, 0xe1, 0xba, 0xde, 0x15,
		0x7f, 0xd7, 0x2d, 0x6d, 0x6f, 0xc3, 0x79, 0xe1, 0xbc, 0x6b, 0x20, 0xcc, 0xf9, 0x59, 0xcb, 0xa3,
		0xe9, 0x0e, 0xfd, 0xe7, 0xc9, 0x20, 0xb9, 0xe8, 0xfd, 0xc0, 0x1b, 0x44, 0xfc, 0x4a, 0xc1, 0xa9,
		0xd9, 0x28, 0x03, 0x2f, 0xc2, 0x5c, 0x94, 0x81, 0x97, 0x08, 0x32, 0xca, 0xc0, 0xcb, 0x73, 0x43,
		0x94, 0x81, 0x57, 0x3c, 0x00, 0x94, 0x81, 0xa1, 0x39, 0x26, 0x28, 0xf0, 0x2d, 0x03, 0x0b, 0x39,
		0xbe, 0x10, 0xa1, 0xc7, 0xa4, 0x7f, 0xc3, 0x7d, 0x11, 0x52, 0x2c, 0x33, 0xb2, 0xd9, 0x92, 0xe3,
		0x0b, 0x7e, 0x79, 0xc6, 0x19, 0x76, 0x54, 0xe8, 0xcb, 0x01, 0xcb, 0x22, 0x8d, 0xbe, 0x99, 0x74,
		0xbd, 0xb5, 0xcc, 0xda, 0xb1, 0xd5, 0x76, 0xec, 0x8e, 0x75, 0x68, 0x35, 0x1c, 0x9d, 0x61, 0x95,
		0xac, 0x98, 0x1c, 0x08, 0x6f, 0xd6, 0x2c, 0x8e, 0xc6, 0x97, 0x52, 0xe3, 0xdd, 0xd6, 0xb7, 0x16,
		0x47, 0xf3, 0xb7, 0x62, 0xf3, 0xad, 0x1f, 0xad, 0xba, 0xbd, 0x6f, 0x3b, 0x6e, 0xe3, 0xa8, 0x5e,
		0xe7, 0x38, 0x8a, 0x72, 0x3c, 0x8a, 0x63, 0xb3, 0x7e, 0xc4, 0x12, 0xa1, 0xed, 0xd8, 0xfa, 0x7a,
		0x73, 0xdf, 0xac, 0xf3, 0xea, 0x51, 0xcd, 0xac, 0x22, 0xaf, 0x3b, 0x43, 0x3b, 0x11, 0xb4, 0x0c,
		0x43, 0xfd, 0x5d, 0x0f, 0xad, 0x6a, 0x5b, 0x0c, 0x31, 0x4f, 0x09, 0x67, 0xb5, 0xc8, 0x7d, 0xab,
		0x28, 0xe3, 0xec, 0x44, 0xfe, 0xdc, 0xc3, 0x13, 0xa6, 0x27, 0xb9, 0xa9, 0xaa, 0x95, 0x18, 0x1a,
		0x7f, 0x5f, 0xdd, 0xb0, 0x5c, 0xc2, 0x99, 0x64, 0xa6, 0xaa, 0x56, 0xc6, 0x2a, 0x08, 0xe6, 0xfb,
		0xf4, 0xe3, 0xb4, 0x1f, 0x29, 0x53, 0xa9, 0x90, 0xd7, 0x9c, 0xff, 0xd0, 0x97, 0x56, 0x20, 0x2e,
		0x84, 0xe4, 0xb6, 0xd0, 0xab, 0x1f, 0x7a, 0x57, 0x33, 0x96, 0x17, 0xbf, 0x94, 0xcb, 0x95, 0x9d,
		0x72, 0x79, 0x73, 0x67, 0x6b, 0x67, 0x73, 0x77, 0x7b, 0xbb, 0x58, 0x29, 0x72, 0xda, 0x15, 0xd6,
		0x0c, 0x7b, 0x22, 0x14, 0xbd, 0xbd, 0x6b, 0xbd, 0xaa, 0xc9, 0x71, 0x10, 0x70, 0x34, 0xfd, 0x28,
		0x12, 0x21, 0xab, 0x95, 0x76, 0xac, 0xaf, 0xce, 0xe3, 0xfd, 0xbf, 0x9c, 0xec, 0x77, 0x61, 0xb6,
		0xbe, 0x9a, 0x9a, 0x8d, 0xf5, 0xd5, 0x45, 0x98, 0x8b, 0xf5, 0xd5, 0x25, 0x82, 0x8c, 0xf5, 0xd5,
		0xe5, 0xb9, 0x21, 0xd6, 0x57, 0x57, 0x3c, 0x00, 0xac, 0xaf, 0x42, 0x73, 0x4c, 0x50, 0xe0, 0x7d,
		0xcc, 0x66, 0xab, 0xc4, 0x70, 0x69, 0x75, 0x07, 0xe7, 0x6c, 0x16, 0xfc, 0x81, 0x73, 0x36, 0xcb,
		0x35, 0x1e, 0xe7, 0x6c, 0xa8, 0xc4, 0x46, 0x9c, 0xb3, 0x59, 0x81, 0xeb, 0xe6, 0xe1, 0x9c, 0x4d,
		0xb9, 0xb4, 0x5b, 0xde, 0xad, 0xec, 0x94, 0x76, 0x71, 0xdc, 0x06, 0x3e, 0xbc, 0x0e, 0x02, 0x9d,
		0x9f, 0xb5, 0x38, 0x6e, 0xb3, 0x0e, 0x16, 0x52, 0x6f, 0x60, 0xc5, 0xe4, 0x46, 0xe4, 0xcc, 0xde,
		0xbc, 0x5c, 0xb5, 0x33, 0x73, 0x17, 0xc8, 0xcc, 0xd7, 0x94, 0xaf, 0x46, 0xa6, 0xef, 0x6f, 0x94,
		0x2f, 0x96, 0xe4, 0xb1, 0x20, 0xc4, 0x6a, 0x21, 0x88, 0xc9, 0x02, 0x10, 0x1a, 0xc8, 0x2e, 0x12,
		0x54, 0x34, 0x90, 0x5d, 0x9c, 0x7b, 0xa1, 0x81, 0xec, 0xb2, 0xc5, 0x18, 0x1a, 0xc8, 0xae, 0x9b,
		0xfe, 0x66, 0xb3, 0x60, 0x93, 0x45, 0xdc, 0x40, 0x78, 0xfd, 0x50, 0xf4, 0x39, 0x44, 0xdc, 0xe9,
		0xe1, 0x37, 0x06, 0x4b, 0x34, 0x7a, 0x6b, 0x32, 0xa5, 0xc9, 0xae, 0x7e, 0x4f, 0x25, 0x18, 0xa6,
		0x02, 0x39, 0xb2, 0x8c, 0xea, 0xf5, 0x1b, 0xdf, 0xc5, 0x35, 0x75, 0xd1, 0xcf, 0x63, 0x27, 0x31,
		0x9f, 0x9d, 0xc3, 0xac, 0x77, 0x0a, 0x33, 0xda, 0x19, 0xcc, 0x68, 0x27, 0x30, 0xd5, 0xe8, 0xc4,
		0xa4, 0x44, 0x99, 0xf3, 0xd2, 0x24, 0xe5, 0x3b, 0xe2, 0x16, 0x78, 0x1d, 0x78, 0xfa, 0xb7, 0x8e,
		0xdf, 0xa3, 0xa9, 0xc4, 0x6e, 0x70, 0x87, 0x2a, 0xa7, 0x98, 0xa6, 0x8b, 0x2b, 0x15, 0x7a, 0xc6,
		0x38, 0x46, 0xf3, 0x2c, 0xa0, 0x39, 0xf1, 0xd3, 0x43, 0xd1, 0x17, 0xa1, 0x90, 0x5d, 0xba, 0x1b,
		0xc5, 0x18, 0xdc, 0xac, 0xd9, 0x0b, 0xbd, 0xbe, 0x32, 0x7c, 0xa1, 0xfa, 0x49, 0x19, 0xc7, 0x88,
		0xc4, 0x20, 0xd6, 0x5a, 0x46, 0x38, 0x1c, 0x2b, 0x5f, 0x0e, 0x0c, 0x71, 0xa5, 0x84, 0x8c, 0xfc,
		0xa1, 0x8c, 0x36, 0xb4, 0x68, 0x7c, 0x66, 0x38, 0xf5, 0x63, 0x6d, 0xab, 0xaa, 0x39, 0xf5, 0xe3,
		0x13, 0x59, 0xdc, 0xda, 0xfe, 0xac, 0x95, 0xd2, 0x3f, 0x2a, 0xf1, 0x1f, 0x3b, 0x1b, 0xb8, 0xa1,
		0x73, 0x2e, 0xb3, 0x9c, 0x69, 0x3d, 0xf3, 0x16, 0x71, 0x5c, 0xd2, 0x39, 0x67, 0xb1, 0x36, 0x53,
		0xc2, 0x9c, 0xb7, 0x0f, 0xa0, 0xda, 0xc0, 0xdc, 0xaa, 0x53, 0x7a, 0xf0, 0xea, 0x3f, 0xcf, 0x85,
		0x44, 0xa2, 0x7b, 0x7b, 0xa2, 0xcb, 0xea, 0x95, 0xea, 0x7a, 0x24, 0xb4, 0xdf, 0xb5, 0x0f, 0x93,
		0x85, 0x0b, 0x23, 0x88, 0x7a, 0x67, 0x46, 0xfc, 0x62, 0x54, 0xb5, 0x5b, 0x6e, 0xdb, 0x32, 0xf7,
		0xbf, 0x99, 0x7b, 0x76, 0xdd, 0x76, 0xfe, 0x70, 0x5b, 0x6d, 0xeb, 0xc0, 0xfe, 0xe1, 0x76, 0xec,
		0xda, 0x07, 0x24, 0xb6, 0xb9, 0x26, 0xb6, 0x84, 0x66, 0xe4, 0xb4, 0xc5, 0xe5, 0xb4, 0xf7, 0xe2,
		0x8e, 0xcd, 0x33, 0x6f, 0x78, 0x03, 0x6a, 0x22, 0xea, 0x86, 0xfe, 0x88, 0xc5, 0x2e, 0xb5, 0x2c,
		0x30, 0x36, 0x65, 0x70, 0xad, 0xf9, 0xb2, 0x1b, 0x8c, 0x7b, 0x42, 0x53, 0xe7, 0x42, 0x4b, 0x4b,
		0x09, 0x5a, 0xc7, 0xae, 0x69, 0xdd, 0xa1, 0x54, 0x9e, 0x2f, 0x45, 0xa8, 0xc5, 0x0e, 0x7b, 0x22,
		0xe3, 0x6f, 0x4f, 0x15, 0x90, 0x1f, 0x69, 0x09, 0x5b, 0x5b, 0x1b, 0xd4, 0x1d, 0x99, 0xd1, 0x86,
		0x86, 0xd9, 0x18, 0xd9, 0x9b, 0xa1, 0x89, 0xc1, 0xc2, 0x20, 0xc7, 0xdd, 0x0c, 0x77, 0x42, 0xe6,
		0x1c, 0x1c, 0x01, 0xab, 0xa0, 0x98, 0x97, 0x2c, 0x72, 0x5e, 0x82, 0x9a, 0xe5, 0x73, 0xbe, 0x4c,
		0x7b, 0xfd, 0x25, 0x8f, 0xeb, 0x2e, 0xb4, 0x02, 0x1e, 0x1d, 0x87, 0x25, 0xe4, 0x1a, 0x7a, 0xba,
		0x55, 0x9f, 0x9a, 0x47, 0x64, 0xf2, 0x33, 0x35, 0x8f, 0x58, 0x28, 0x99, 0x6e, 0xc8, 0x22, 0x66,
		0x16, 0xd5, 0x1d, 0xda, 0x94, 0x77, 0x64, 0x33, 0xd8, 0x81, 0x4d, 0x7d, 0x82, 0xc2, 0x66, 0x87,
		0x35, 0x9b, 0x39, 0x08, 0x8f, 0x1d, 0xd4, 0x58, 0x22, 0x7f, 0xb6, 0xd8, 0xe3, 0xd3, 0xdc, 0xe3,
		0xa7, 0x2b, 0xca, 0x5b, 0xb5, 0xb3, 0x70, 0x9c, 0x58, 0x49, 0x75, 0x9f, 0x29, 0xe9, 0x03, 0x5b,
		0xe4, 0x0f, 0x6a, 0x71, 0x38, 0xa0, 0xc5, 0xe8, 0x60, 0x16, 0xc7, 0xf5, 0x1d, 0x16, 0x07, 0xb1,
		0x78, 0xaf, 0xf0, 0x90, 0x3f, 0x78, 0x85, 0xb3, 0x0d, 0xbf, 0xf2, 0xd6, 0x92, 0x3f, 0x60, 0x95,
		0x45, 0x4c, 0xbf, 0x27, 0xa4, 0xf2, 0xd5, 0x35, 0xed, 0xc3, 0x55, 0xd9, 0x1c, 0x9e, 0xf2, 0xf9,
		0x00, 0x7b, 0xf2, 0x28, 0xf7, 0xbc, 0x88, 0xd1, 0xa1, 0x7b, 0xbb, 0x63, 0x77, 0xdc, 0xce, 0xd1,
		0x9e, 0x53, 0x3f, 0x76, 0x9d, 0x3f, 0x5a, 0xd4, 0xef, 0x1f, 0x4a, 0x9b, 0x4d, 0x45, 0x2c, 0xda,
		0x09, 0x32, 0xeb, 0xc3, 0x7d, 0x7f, 0x07, 0x81, 0xdd, 0x3a, 0x2e, 0xbb, 0xed, 0xe6, 0x91, 0x63,
		0xb5, 0x5d, 0xbb, 0xa6, 0xa3, 0x45, 0x3b, 0x88, 0x68, 0x1d, 0x57, 0x40, 0x04, 0x88, 0x78, 0xb0,
		0xcb, 0xe8, 0xa0, 0x6e, 0x7e, 0xed, 0x80, 0x07, 0xf0, 0x70, 0xbb, 0xeb, 0x0c, 0x34, 0x80, 0x86,
		0x54, 0x56, 0x76, 0x38, 0xe8, 0x4a, 0x8e, 0xfa, 0x92, 0x17, 0x25, 0xb9, 0xd3, 0x9b, 0x8c, 0xe2,
		0x48, 0xfe, 0x48, 0xa9, 0x80, 0x14, 0x90, 0x92, 0x37, 0x7d, 0x0a, 0x4e, 0xa0, 0x5b, 0x41, 0x09,
		0x5d, 0x4a, 0x1c, 0xf3, 0x2b, 0xf0, 0x00, 0x1e, 0xcf, 0xe0, 0x51, 0x29, 0xe3, 0x12, 0xac, 0xf9,
		0x7e, 0x9c, 0xa2, 0x8e, 0xb0, 0xf6, 0x75, 0x04, 0x16, 0x71, 0x17, 0x18, 0x20, 0xbe, 0x02, 0x84,
		0xc5, 0x80, 0xd0, 0xb9, 0x0b, 0x82, 0x59, 0xfb, 0xb7, 0x5b, 0x37, 0x1b, 0x28, 0x33, 0x03, 0x87,
		0x29, 0x0e, 0x40, 0x01, 0x28, 0x24, 0x28, 0x1c, 0xda, 0x0d, 0xf7, 0x6b, 0xbb, 0x79, 0xd4, 0x02,
		0x0e, 0xc0, 0xc1, 0x3c, 0x36, 0xed, 0xba, 0xb9, 0x57, 0xb7, 0xdc, 0x3d, 0xb3, 0x51, 0xfb, 0x8f,
		0x5d, 0x73, 0xbe, 0x01, 0x0b, 0x60, 0x91, 0xc1, 0xe0, 0xee, 0x37, 0x1b, 0x1d, 0xa7, 0x6d, 0xda,
		0x0d, 0x07, 0xdb, 0x17, 0x00, 0x86, 0x6b, 0xfd, 0x70, 0xac, 0x46, 0xcd, 0xaa, 0x21, 0x8f, 0x80,
		0x8b, 0x07, 0x4b, 0xd3, 0x76, 0xc3, 0xb1, 0xda, 0x07, 0xe6, 0xbe, 0xe5, 0x9a, 0xb5, 0x5a, 0xdb,
		0xea, 0x20, 0x62, 0x80, 0x8c, 0x94, 0x8c, 0x86, 0x65, 0x7f, 0xfd, 0xb6, 0xd7, 0x6c, 0x03, 0x0c,
		0x80, 0x71, 0x67, 0x8f, 0x02, 0x42, 0x06, 0xc8, 0x78, 0x9c, 0x0c, 0x84, 0x0c, 0x80, 0x71, 0x1f,
		0x8c, 0xba, 0xdd, 0xf8, 0xee, 0x9a, 0x8e, 0xd3, 0xb6, 0xf7, 0x8e, 0x1c, 0x0b, 0x48, 0x00, 0x89,
		0x14, 0x89, 0x9a, 0x55, 0x37, 0xff, 0x00, 0x0d, 0xa0, 0xe1, 0x96, 0x06, 0xf7, 0xd8, 0x6c, 0xdb,
		0xa6, 0x63, 0x37, 0x1b, 0xe0, 0x02, 0x5c, 0x24, 0x5c, 0x60, 0x01, 0x04, 0x28, 0x4c, 0x50, 0xa8,
		0x37, 0x21, 0x28, 0x01, 0xc3, 0x04, 0x86, 0x56, 0xbb, 0xe9, 0x58, 0xfb, 0x71, 0xaa, 0x48, 0xcf,
		0xe1, 0x80, 0x8b, 0xb5, 0xe7, 0xe2, 0xd0, 0xfc, 0x91, 0xb2, 0x81, 0x55, 0x31, 0x50, 0x71, 0x87,
		0x8a, 0xb6, 0xd5, 0xb1, 0xda, 0xc7, 0x58, 0x31, 0x05, 0x1b, 0xf7, 0xd8, 0xb0, 0x1b, 0xb7, 0x51,
		0x03, 0xf3, 0x51, 0x50, 0x91, 0x50, 0xd1, 0xb6, 0x3a, 0x76, 0xed, 0xc8, 0xac, 0x23, 0x56, 0x80,
		0x0a, 0x9c, 0xfa, 0x06, 0x25, 0x6f, 0xa1, 0x85, 0xd5, 0x5e, 0x5e, 0x46, 0x41, 0x24, 0x87, 0x98,
		0x00, 0x11, 0x20, 0x92, 0x97, 0xbd, 0xbf, 0xc0, 0x64, 0x65, 0x98, 0x70, 0xdc, 0x13, 0x0c, 0x5c,
		0x56, 0x85, 0x0b, 0xd3, 0xbd, 0xc2, 0x00, 0x66, 0x55, 0xc0, 0xf0, 0xdc, 0x43, 0x0c, 0x5e, 0x56,
		0xc5, 0x0b, 0xd7, 0xbd, 0xc5, 0x20, 0x66, 0xa5, 0xc4, 0xf0, 0xdb, 0x40, 0x08, 0x60, 0x56, 0x08,
		0x4c, 0x05, 0x21, 0x06, 0xc4, 0xfc, 0x22, 0x31, 0x08, 0x31, 0x00, 0xe6, 0xb5, 0xc0, 0xb0, 0xdb,
		0xbb, 0x0c, 0x54, 0x56, 0x8a, 0x0a, 0x93, 0x35, 0x64, 0x50, 0xb2, 0x7a, 0x4a, 0x38, 0xed, 0x75,
		0x06, 0x2f, 0x2b, 0xe5, 0x05, 0x0b, 0x44, 0x40, 0x24, 0x17, 0x7b, 0xa3, 0x01, 0xc9, 0x4a, 0x21,
		0x61, 0xb7, 0x67, 0x1a, 0xbc, 0xac, 0x8a, 0x17, 0x8e, 0x7b, 0xa9, 0x41, 0xcb, 0x2a, 0x69, 0xe1,
		0xb9, 0xc7, 0x1a, 0xcc, 0xac, 0x8c, 0x19, 0x86, 0x7b, 0xaf, 0x41, 0xcb, 0xaa, 0x68, 0xe1, 0xb8,
		0x27, 0x1b, 0xb4, 0xac, 0x8a, 0x16, 0xc7, 0x72, 0x6b, 0xd6, 0x81, 0x79, 0x54, 0x77, 0xdc, 0x43,
		0xcb, 0x69, 0xdb, 0xfb, 0x80, 0x05, 0xb0, 0x3c, 0x05, 0xcb, 0x51, 0x23, 0xdb, 0x02, 0x65, 0xd5,
		0xdc, 0x7a, 0x07, 0xdb, 0x5a, 0x00, 0xcb, 0x33, 0xb0, 0xa4, 0x3a, 0xd7, 0xaa, 0x21, 0x13, 0x81,
		0x97, 0x57, 0xf0, 0xe2, 0xd8, 0x75, 0xfb, 0xbf, 0x4c, 0x69, 0xc1, 0x4d, 0x2a, 0xeb, 0xe2, 0x75,
		0xcc, 0xcf, 0xe6, 0x31, 0xd4, 0x7b, 0x80, 0x02, 0xba, 0x0e, 0x50, 0x40, 0xbf, 0x81, 0x0b, 0xe8,
		0x34, 0x50, 0x41, 0x84, 0x8a, 0xc9, 0xe5, 0xcb, 0xfb, 0x66, 0x2b, 0x3b, 0xf5, 0xdf, 0x76, 0xcd,
		0xfa, 0xd7, 0x66, 0xdb, 0x76, 0xbe, 0x1d, 0x82, 0x08, 0x10, 0x91, 0x10, 0x71, 0xfb, 0x37, 0x20,
		0x01, 0x24, 0xd0, 0x1a, 0x04, 0x9c, 0xe4, 0x39, 0xa9, 0x30, 0x8a, 0x24, 0x79, 0x24, 0x85, 0x53,
		0xb2, 0xc9, 0x50, 0x41, 0xe5, 0x70, 0x0d, 0x9e, 0x23, 0xdd, 0xe7, 0x47, 0xf3, 0xb9, 0xd1, 0xb3,
		0x8a, 0x96, 0x45, 0xc4, 0x12, 0x8c, 0x6e, 0x4a, 0x39, 0x54, 0x9e, 0xf2, 0x87, 0x52, 0xaf, 0x12,
		0x4c, 0x29, 0x7a, 0xd4, 0x3d, 0x17, 0x17, 0xde, 0xc8, 0x53, 0xe7, 0x71, 0xf2, 0x28, 0x0c, 0x47,
		0x42, 0x76, 0x87, 0xb2, 0xef, 0x0f, 0x0c, 0x29, 0xd4, 0xcf, 0x61, 0xf8, 0x97, 0xe1, 0xcb, 0x48,
		0x79, 0xb2, 0x2b, 0x0a, 0xf7, 0x5f, 0x88, 0x1e, 0xbc, 0x52, 0x18, 0x85, 0x43, 0x35, 0xec, 0x0e,
		0x83, 0x28, 0xfb, 0xaa, 0xe0, 0x47, 0x7e, 0x54, 0x08, 0xc4, 0xa5, 0x08, 0x26, 0x9f, 0x0a, 0x81,
		0x2f, 0xff, 0x32, 0x22, 0xe5, 0x29, 0x61, 0xf4, 0x3c, 0xe5, 0x9d, 0x79, 0x91, 0x28, 0x04, 0xd1,
		0xa8, 0xa0, 0x82, 0xcb, 0x28, 0xfe, 0xa3, 0x70, 0xa1, 0x0c, 0x7f, 0x74, 0x59, 0x31, 0x42, 0xe1,
		0x75, 0xcf, 0xbd, 0x33, 0x3f, 0xf0, 0xd5, 0x75, 0x61, 0x14, 0x8a, 0xbe, 0x7f, 0x25, 0xa2, 0xc9,
		0x17, 0x85, 0x68, 0x7c, 0x96, 0xfc, 0x42, 0xfa, 0xb9, 0x90, 0xfc, 0x7b, 0xb4, 0x92, 0x1b, 0x1d,
		0xc7, 0x20, 0xe4, 0x14, 0xba, 0xf2, 0x06, 0xe4, 0x3c, 0x21, 0x13, 0x4f, 0xb1, 0x71, 0xc4, 0x02,
		0xc8, 0x77, 0x5f, 0xf6, 0xf4, 0xaa, 0x56, 0x24, 0x66, 0xd6, 0x7e, 0x12, 0x24, 0xf4, 0xaa, 0xb6,
		0x49, 0xcc, 0xb0, 0x56, 0x12, 0x1e, 0x68, 0x06, 0xdb, 0x29, 0x66, 0xc3, 0xae, 0x11, 0x87, 0x45,
		0x82, 0xd3, 0x7c, 0xbd, 0x33, 0x1c, 0x87, 0x5d, 0x41, 0xf2, 0xf1, 0xa5, 0xee, 0x20, 0xae, 0x7f,
		0x0e, 0xc3, 0xd8, 0x23, 0xf4, 0x34, 0x11, 0x10, 0xad, 0x95, 0xe8, 0xdf, 0xbc, 0xc8, 0x0c, 0x07,
		0xe3, 0x0b, 0x21, 0x95, 0x5e, 0xd5, 0x54, 0x38, 0x16, 0x44, 0x0d, 0x9d, 0xb1, 0x32, 0x03, 0x13,
		0x22, 0x93, 0x95, 0xc8, 0xac, 0xf9, 0x21, 0x51, 0x75, 0x99, 0xa8, 0x32, 0xb2, 0xc1, 0x64, 0x1a,
		0x8f, 0x53, 0x33, 0x89, 0xfa, 0x27, 0x4d, 0x01, 0x40, 0x5e, 0x08, 0x70, 0x10, 0x04, 0x8c, 0x84,
		0x01, 0x17, 0x81, 0xc0, 0x4e, 0x28, 0xb0, 0x13, 0x0c, 0xbc, 0x84, 0x03, 0x4d, 0x01, 0x41, 0x54,
		0x48, 0x90, 0x17, 0x14, 0xb3, 0x55, 0x84, 0xad, 0x12, 0xfd, 0x20, 0x34, 0x53, 0x57, 0xd8, 0x2a,
		0x51, 0x0f, 0x40, 0x13, 0xa1, 0xb1, 0x49, 0xdc, 0x4c, 0xea, 0x82, 0x83, 0x93, 0xf0, 0x60, 0x28,
		0x40, 0xb8, 0x09, 0x11, 0xb6, 0x82, 0x84, 0xad, 0x30, 0xe1, 0x29, 0x50, 0x68, 0x0b, 0x15, 0xe2,
		0x82, 0x25, 0x7b, 0xcb, 0x9d, 0xeb, 0x91, 0xe0, 0x15, 0x71, 0xc7, 0xbe, 0x54, 0xe4, 0xb5, 0xc1,
		0xac, 0x3e, 0xd8, 0x61, 0x60, 0x6a, 0xdb, 0x93, 0x03, 0xc1, 0x66, 0x5f, 0x1a, 0x9f, 0x9d, 0x46,
		0xfa, 0xa1, 0x2f, 0xd9, 0x64, 0xdc, 0xcc, 0xe8, 0x64, 0x9b, 0x22, 0x7d, 0xc1, 0xf8, 0xc0, 0xee,
		0x83, 0xd0, 0xeb, 0x2a, 0x7f, 0x28, 0x6b, 0xfe, 0xc0, 0x57, 0x11, 0xc3, 0x01, 0x34, 0xc4, 0xc0,
		0x53, 0xfe, 0x65, 0xfc, 0xec, 0xfb, 0x5e, 0x10, 0x09, 0x6c, 0x53, 0x5c, 0x84, 0x4b, 0x7a, 0x57,
		0x7c, 0x5d, 0xb2, 0x5c, 0xda, 0x2d, 0xef, 0x56, 0x76, 0x4a, 0xbb, 0xdb, 0xf0, 0x4d, 0xf8, 0x66,
		0x0e, 0x04, 0x32, 0x1f, 0x2b, 0x4f, 0x31, 0xd1, 0x78, 0x87, 0xfb, 0xd4, 0xfd, 0x48, 0x99, 0x4a,
		0x85, 0x3c, 0x26, 0x1b, 0x87, 0xbe, 0xb4, 0x02, 0x11, 0xcf, 0x85, 0x99, 0x84, 0xaa, 0x38, 0xab,
		0xcd, 0x58, 0x5c, 0xfc, 0x52, 0x2e, 0x57, 0x76, 0xca, 0xe5, 0xcd, 0x9d, 0xad, 0x9d, 0xcd, 0xdd,
		0xed, 0xed, 0x62, 0xa5, 0xc8, 0x20, 0x61, 0xe8, 0xcd, 0xb0, 0x27, 0x42, 0xd1, 0xdb, 0xbb, 0xd6,
		0xab, 0x9a, 0x1c, 0x07, 0x01, 0x27, 0x93, 0x8f, 0x22, 0x11, 0xb2, 0xc8, 0x0d, 0xd4, 0x23, 0x85,
		0xb8, 0x52, 0xa1, 0x67, 0x8c, 0x65, 0xa4, 0xbc, 0xb3, 0x80, 0x49, 0x71, 0x22, 0x14, 0x7d, 0x11,
		0x0a, 0xd9, 0xc5, 0x1c, 0x7a, 0x11, 0xca, 0x6b, 0x7a, 0x52, 0xe7, 0x60, 0x7f, 0xbb, 0xb8, 0xb5,
		0x59, 0xd5, 0x4c, 0xad, 0x35, 0x0c, 0xfc, 0xee, 0xb5, 0xb6, 0x3f, 0x94, 0x2a, 0x1c, 0x06, 0xda,
		0xa1, 0xe8, 0x9e, 0x7b, 0xd2, 0x8f, 0x2e, 0x34, 0x5f, 0x6a, 0x76, 0xc7, 0xb0, 0x3b, 0xda, 0x51,
		0xe4, 0xcb, 0xc1, 0x89, 0x34, 0x7b, 0x17, 0xbe, 0xf4, 0x23, 0x15, 0x26, 0xda, 0x4d, 0x73, 0xbc,
		0x41, 0xb4, 0xa1, 0x45, 0xe3, 0x33, 0xc3, 0xa9, 0x1f, 0x6b, 0xc5, 0x0d, 0x9d, 0xd1, 0xbc, 0x85,
		0x59, 0xfd, 0x3e, 0xb3, 0x7b, 0xa6, 0x8e, 0x7f, 0xeb, 0x26, 0xcc, 0xc4, 0x3f, 0xd7, 0x92, 0x7e,
		0x36, 0x80, 0xd9, 0xd2, 0xfe, 0x22, 0xfc, 0x08, 0xb3, 0x21, 0xcc, 0x86, 0xf0, 0xfc, 0xd8, 0x5a,
		0x46, 0x75, 0x5f, 0x0d, 0xf1, 0xd3, 0x60, 0x99, 0x9d, 0x79, 0x39, 0x15, 0xa6, 0xbc, 0x01, 0xc5,
		0x93, 0x61, 0x74, 0x9d, 0x07, 0xfb, 0xec, 0x99, 0x4f, 0xe5, 0xf4, 0x9f, 0xe7, 0x42, 0x92, 0x9d,
		0xb5, 0x31, 0xd8, 0x82, 0xbd, 0xb1, 0x91, 0x46, 0x8c, 0x82, 0xba, 0x1e, 0x09, 0xed, 0x77, 0xed,
		0xc3, 0x64, 0xe7, 0x88, 0x11, 0x44, 0xbd, 0x33, 0x23, 0x7e, 0x31, 0xaa, 0xda, 0xad, 0x7b, 0xad,
		0x23, 0xcd, 0xaf, 0x1f, 0xb0, 0x67, 0x7b, 0xae, 0x53, 0xab, 0x04, 0x63, 0xec, 0xd8, 0x5e, 0xdc,
		0xac, 0xe9, 0xcd, 0x9c, 0xd3, 0x95, 0xa2, 0x84, 0x3d, 0xb0, 0x26, 0xa2, 0x6e, 0xe8, 0x8f, 0xc8,
		0x2b, 0xbf, 0x3b, 0xa1, 0xb0, 0x29, 0x83, 0x6b, 0xcd, 0x97, 0xdd, 0x60, 0xdc, 0x13, 0x9a, 0x3a,
		0x17, 0x9a, 0xf2, 0x06, 0x5a, 0x77, 0x28, 0x95, 0xe7, 0x4b, 0x11, 0x6a, 0xb1, 0x8b, 0x26, 0x2f,
		0x4f, 0xe7, 0xcd, 0x7e, 0xa4, 0xc5, 0xdc, 0x9c, 0x48, 0xf2, 0x85, 0x28, 0x4e, 0xc5, 0xa7, 0xd9,
		0xa8, 0xd8, 0x9b, 0xc1, 0x88, 0xc1, 0x62, 0x02, 0xc7, 0x32, 0xd3, 0x9d, 0x20, 0xf9, 0x1e, 0x0f,
		0x40, 0x41, 0x21, 0x4f, 0x05, 0x85, 0xdf, 0x50, 0xb0, 0xe2, 0x34, 0x53, 0x43, 0xdb, 0x9d, 0xa5,
		0x15, 0x58, 0x28, 0x76, 0xb1, 0x88, 0x54, 0x38, 0xee, 0x2a, 0x39, 0xd1, 0x31, 0x8d, 0xf4, 0x79,
		0xd9, 0x93, 0xc7, 0xe5, 0xb6, 0x26, 0x0f, 0xc9, 0xb5, 0x23, 0x3f, 0x72, 0xeb, 0xf1, 0xd3, 0x71,
		0xeb, 0xd1, 0xc8, 0x75, 0x82, 0x4b, 0xf7, 0x50, 0xd9, 0xa3, 0xcb, 0x4a, 0x7b, 0xe6, 0x11, 0xb8,
		0xe9, 0x39, 0x1e, 0xb7, 0x93, 0x8c, 0xd8, 0x75, 0xbc, 0x01, 0xda, 0x0c, 0x91, 0x0f, 0x02, 0xba,
		0xf2, 0x06, 0x95, 0x32, 0xe9, 0x46, 0x43, 0x95, 0x32, 0x5a, 0x0d, 0xbd, 0xca, 0x2c, 0xb4, 0x1a,
		0x7a, 0x07, 0x68, 0x68, 0x35, 0x34, 0x8f, 0x79, 0x17, 0x5a, 0x0d, 0xcd, 0x7d, 0x6a, 0x85, 0x56,
		0x43, 0x2c, 0x85, 0x35, 0x5a, 0x0d, 0xbd, 0x2f, 0x1e, 0xa3, 0xd5, 0x50, 0xfe, 0x84, 0x00, 0x07,
		0x41, 0xc0, 0x48, 0x18, 0x70, 0x11, 0x08, 0xec, 0x84, 0x02, 0x3b, 0xc1, 0xc0, 0x4b, 0x38, 0xd0,
		0x14, 0x10, 0x44, 0x85, 0x04, 0x79, 0x41, 0x41, 0xbc, 0x92, 0xc0, 0xaa, 0xb2, 0xf0, 0x94, 0xd0,
		0x40, 0xab, 0xa1, 0xf5, 0x11, 0x1e, 0x0c, 0x05, 0x08, 0x37, 0x21, 0xc2, 0x56, 0x90, 0xb0, 0x15,
		0x26, 0x3c, 0x05, 0x0a, 0x6d, 0xa1, 0x42, 0x5c, 0xb0, 0x64, 0x6f, 0x39, 0xcf, 0x56, 0x43, 0xe4,
		0xb5, 0xc1, 0xac, 0x3e, 0xf8, 0x82, 0x56, 0x43, 0x73, 0xfe, 0x40, 0xab, 0xa1, 0xc5, 0x1a, 0x8d,
		0x56, 0x43, 0xab, 0x8a, 0x71, 0x68, 0x35, 0xb4, 0x04, 0x97, 0xe4, 0xdc, 0x6a, 0x88, 0x67, 0x0f,
		0x09, 0x78, 0x29, 0xa4, 0x72, 0x8e, 0xac, 0x44, 0xd3, 0xa1, 0xf7, 0xb8, 0x0f, 0x9a, 0x0e, 0x2d,
		0x3c, 0xbf, 0xa1, 0xe9, 0xd0, 0x2a, 0x4d, 0x46, 0xd3, 0xa1, 0x39, 0x3d, 0x51, 0x34, 0x1d, 0xc2,
		0x6c, 0xfa, 0xae, 0xf2, 0x5a, 0x54, 0xd3, 0xa1, 0x12, 0x9a, 0x0e, 0x2d, 0xc1, 0x6e, 0x34, 0x1d,
		0x22, 0x30, 0x80, 0x85, 0x36, 0x1d, 0x2a, 0xa1, 0xe9, 0x10, 0x66, 0x43, 0x78, 0x7e, 0x8c, 0x2d,
		0x43, 0xd3, 0xa1, 0xf7, 0xd9, 0x99, 0xa3, 0x33, 0x71, 0x95, 0x32, 0xda, 0x0e, 0xf1, 0xb5, 0x08,
		0x6d, 0x87, 0x7e, 0xdd, 0x46, 0xb4, 0x1d, 0x7a, 0xdf, 0xbc, 0xec, 0x8d, 0xed, 0x58, 0x2a, 0x65,
		0x34, 0x1e, 0x9a, 0xef, 0xf4, 0x0a, 0x8d, 0x87, 0x16, 0x3c, 0x73, 0x7a, 0x07, 0xe9, 0x68, 0x3d,
		0xf4, 0x86, 0x67, 0x9f, 0x9b, 0xd6, 0x43, 0x95, 0xf2, 0xab, 0x5a, 0xaf, 0x94, 0xd0, 0x7c, 0x68,
		0x31, 0x91, 0x11, 0xcd, 0x87, 0x96, 0x1b, 0x28, 0xdf, 0xe7, 0x03, 0x28, 0x2d, 0xe4, 0xa9, 0xb4,
		0x80, 0xf6, 0x43, 0xac, 0x66, 0x6c, 0x68, 0x3f, 0xb4, 0xc4, 0x52, 0xcb, 0xfa, 0x35, 0x20, 0xaa,
		0x94, 0xd1, 0x82, 0x88, 0x7c, 0x20, 0xd0, 0x15, 0xc5, 0x03, 0x02, 0xb7, 0xe7, 0x04, 0x63, 0xeb,
		0x68, 0x36, 0x20, 0xda, 0x44, 0x03, 0xa2, 0xd7, 0x19, 0x86, 0x06, 0x44, 0x79, 0x9e, 0x87, 0xa1,
		0x01, 0xd1, 0x42, 0xa7, 0x57, 0x68, 0x40, 0xc4, 0x52, 0x5a, 0x93, 0x3d, 0x76, 0x97, 0x45, 0xbc,
		0x40, 0x78, 0xfd, 0x50, 0xf4, 0x29, 0x46, 0xbc, 0x69, 0x83, 0x1f, 0x82, 0x77, 0xf8, 0xeb, 0xad,
		0xc9, 0x6c, 0xe4, 0x4e, 0x7d, 0x18, 0x3a, 0x97, 0xb2, 0x25, 0x44, 0x62, 0x43, 0x9c, 0x28, 0x89,
		0x49, 0x5a, 0x9a, 0x5b, 0xf5, 0xe9, 0x6e, 0xc9, 0x67, 0xb5, 0xf5, 0x9e, 0xf0, 0x16, 0x7b, 0xc2,
		0x5b, 0xe9, 0xa9, 0x04, 0x0b, 0xa2, 0xb5, 0xb9, 0xbc, 0xd4, 0xe4, 0x08, 0xc9, 0x9e, 0x05, 0x56,
		0xe1, 0x68, 0xe8, 0x92, 0xd5, 0xab, 0x80, 0xd5, 0x5a, 0xb0, 0xe2, 0x90, 0x42, 0x2d, 0x94, 0xb0,
		0x0f, 0x21, 0xab, 0xf5, 0xaa, 0xd5, 0xb1, 0xbc, 0x42, 0x8e, 0xf5, 0xb1, 0xec, 0x89, 0xbe, 0x2f,
		0x45, 0xcf, 0x98, 0xbe, 0x09, 0xab, 0x46, 0xf9, 0xb6, 0x5f, 0xcd, 0x03, 0xd3, 0x56, 0xec, 0xef,
		0x34, 0xfa, 0xe3, 0x92, 0xa9, 0x47, 0x53, 0xaa, 0x3f, 0x13, 0xac, 0x37, 0x53, 0xab, 0x2f, 0x93,
		0xad, 0x27, 0x93, 0xad, 0x1f, 0xd3, 0xac, 0x17, 0xaf, 0xb7, 0xe6, 0xa2, 0xd2, 0x2f, 0xf6, 0x41,
		0x76, 0xa2, 0xe3, 0xe7, 0x4f, 0xe5, 0x4f, 0x2a, 0xee, 0x4e, 0xab, 0xcd, 0x3c, 0xb9, 0xe5, 0x5d,
		0x8a, 0xcb, 0xba, 0x84, 0x97, 0x73, 0xa9, 0x2e, 0xe3, 0x92, 0x5f, 0xbe, 0x25, 0xbf, 0x6c, 0x4b,
		0x7b, 0xb9, 0x16, 0x4b, 0x30, 0x14, 0xd3, 0xf2, 0x6d, 0x2d, 0x84, 0xe4, 0x7d, 0x30, 0xa4, 0xef,
		0x81, 0xc1, 0x05, 0x70, 0xfc, 0x13, 0x35, 0x83, 0x84, 0x4d, 0x3d, 0x71, 0xb3, 0x49, 0xe0, 0x6c,
		0x12, 0x39, 0x8f, 0x84, 0x4e, 0x2b, 0xb1, 0x13, 0x4b, 0xf0, 0x64, 0x13, 0x7d, 0x66, 0x58, 0x20,
		0xe4, 0x20, 0x59, 0xf8, 0x20, 0x7e, 0x03, 0xdc, 0xc4, 0x4e, 0xda, 0x57, 0xc0, 0x6d, 0xe2, 0x0a,
		0xb8, 0xdc, 0x49, 0x02, 0x46, 0xd2, 0x80, 0x8b, 0x44, 0x60, 0x27, 0x15, 0xd8, 0x49, 0x06, 0x5e,
		0xd2, 0x81, 0xa6, 0x84, 0x20, 0x2a, 0x25, 0xb2, 0xb7, 0x96, 0xfc, 0x4d, 0x2a, 0x77, 0x6e, 0x50,
		0xf9, 0x42, 0x39, 0x5e, 0x4e, 0xd2, 0x37, 0xe1, 0x3e, 0xc5, 0x4c, 0x2e, 0x4c, 0xe1, 0xd1, 0x5f,
		0x9b, 0xcf, 0x95, 0x64, 0xcc, 0x2e, 0x46, 0x61, 0x7b, 0xd5, 0x02, 0xbf, 0x2b, 0x16, 0x6e, 0x78,
		0x34, 0x86, 0xe7, 0xe7, 0x6a, 0xa5, 0xed, 0x6d, 0x38, 0x1b, 0x9c, 0x8d, 0x81, 0x30, 0xa5, 0x6f,
		0xdd, 0x29, 0xda, 0xc2, 0x70, 0x0d, 0xe6, 0x34, 0xfb, 0x30, 0x3c, 0x98, 0x5a, 0x10, 0xec, 0xc7,
		0x70, 0x7f, 0x56, 0x81, 0xa2, 0xe0, 0x1b, 0x0d, 0x44, 0x51, 0x70, 0xae, 0xa6, 0xa2, 0x28, 0xb8,
		0x20, 0x83, 0x51, 0x14, 0x5c, 0x3f, 0x75, 0x83, 0xa2, 0xe0, 0x7b, 0x23, 0x26, 0x8a, 0x82, 0xef,
		0x37, 0x11, 0x45, 0xc1, 0x79, 0x55, 0x2a, 0x50, 0x14, 0x44, 0x9d, 0x22, 0x07, 0x75, 0x0a, 0x14,
		0x05, 0x17, 0xe3, 0x6a, 0x28, 0x0a, 0xc2, 0xd9, 0x78, 0x08, 0x53, 0xfa, 0xd6, 0xa1, 0x28, 0xc8,
		0x36, 0x98, 0xeb, 0x97, 0x93, 0x78, 0x48, 0xbc, 0x2a, 0x98, 0x9a, 0x89, 0xb2, 0xe0, 0x5b, 0xcc,
		0x43, 0x59, 0x70, 0x8e, 0x20, 0xa2, 0x2c, 0x38, 0x3f, 0xb7, 0x41, 0x59, 0x70, 0xc1, 0x06, 0xa3,
		0x2c, 0x98, 0xd7, 0x09, 0x18, 0xa3, 0xb2, 0xe0, 0x99, 0x2f, 0xbd, 0xf0, 0x9a, 0x41, 0x5d, 0x70,
		0x17, 0x32, 0x96, 0xa1, 0x45, 0xb8, 0xf2, 0xe4, 0xd7, 0xec, 0x63, 0xdb, 0x1b, 0xed, 0x41, 0x17,
		0xac, 0x07, 0xaf, 0x50, 0xbc, 0x6b, 0x16, 0x57, 0x82, 0x3c, 0x06, 0x21, 0xae, 0x04, 0xc9, 0xc7,
		0x1c, 0x13, 0x47, 0xd2, 0xf3, 0x39, 0x97, 0xc4, 0x91, 0xf4, 0x75, 0x9b, 0x33, 0xe2, 0x48, 0x3a,
		0x7f, 0xe9, 0x89, 0x2b, 0x41, 0xde, 0x9f, 0x60, 0x71, 0x25, 0x08, 0x7b, 0x9d, 0x8b, 0x7e, 0x54,
		0x77, 0x13, 0x25, 0xae, 0x04, 0x79, 0x8d, 0x55, 0xb8, 0x12, 0x64, 0x2e, 0xc6, 0xe2, 0x4a, 0x10,
		0xc6, 0xc1, 0x02, 0x57, 0x82, 0x2c, 0xbd, 0x66, 0x95, 0xf7, 0x6b, 0x42, 0x8e, 0xa6, 0xe3, 0xc5,
		0x7d, 0x21, 0x74, 0x2c, 0xc0, 0x7d, 0x21, 0x79, 0x8d, 0x2f, 0x6b, 0x7b, 0x73, 0xc8, 0x6f, 0x6b,
		0xe4, 0x47, 0x53, 0x51, 0x9f, 0x42, 0xa0, 0xc5, 0xa4, 0xf4, 0x56, 0x94, 0x47, 0x68, 0x88, 0x79,
		0x3a, 0xe2, 0x9d, 0xb4, 0x58, 0x27, 0x24, 0xce, 0x09, 0x89, 0xf1, 0x55, 0x39, 0x31, 0x91, 0x24,
		0xc8, 0x36, 0xf9, 0xad, 0x50, 0x39, 0x2f, 0x42, 0x29, 0xaf, 0x26, 0x73, 0x2f, 0x3f, 0x6f, 0x2e,
		0xf7, 0x7f, 0x5c, 0xb2, 0x73, 0xaf, 0xda, 0xa9, 0xf9, 0x39, 0xf3, 0x72, 0xb1, 0x5f, 0x1e, 0x7c,
		0xcb, 0xf9, 0x9f, 0x96, 0x84, 0xb7, 0x2e, 0xae, 0x54, 0xe8, 0x19, 0xe3, 0x98, 0x8b, 0xb3, 0x60,
		0xb9, 0x6b, 0x4c, 0x7a, 0x28, 0xfa, 0x22, 0x14, 0xb2, 0xbb, 0xfc, 0x63, 0xb1, 0x2b, 0xf0, 0xdf,
		0xe9, 0x42, 0x59, 0xfb, 0x60, 0x7f, 0xbb, 0x58, 0xda, 0xac, 0x6a, 0x87, 0x86, 0xdd, 0xb1, 0x3b,
		0x55, 0xed, 0x70, 0x1c, 0x28, 0x5f, 0x73, 0x86, 0xa3, 0x61, 0x30, 0x1c, 0x5c, 0x6b, 0x1f, 0x0f,
		0x9d, 0x4f, 0x5a, 0x7b, 0x38, 0x56, 0xbe, 0x1c, 0x68, 0xbe, 0x3c, 0x91, 0xb6, 0x54, 0x22, 0xbc,
		0x10, 0x3d, 0xdf, 0x53, 0x42, 0xeb, 0x5c, 0x47, 0x4a, 0x5c, 0x68, 0x6a, 0xa8, 0x3d, 0xf2, 0x72,
		0xa4, 0x7d, 0xb4, 0x3b, 0x86, 0xdd, 0x89, 0x3e, 0x6d, 0x68, 0x4e, 0xfd, 0xf8, 0x44, 0x96, 0xb6,
		0x76, 0x36, 0x56, 0x90, 0x4c, 0x57, 0xbd, 0xc7, 0x60, 0x76, 0x0f, 0xc1, 0x2d, 0x63, 0x2b, 0x12,
		0x83, 0x54, 0xb6, 0x09, 0xdc, 0xd9, 0x06, 0xb0, 0x74, 0x08, 0xf3, 0x2e, 0x46, 0x96, 0xf6, 0xbf,
		0x9d, 0x2e, 0x8f, 0x1e, 0xfd, 0xe7, 0xb9, 0x90, 0xeb, 0x14, 0x9a, 0xef, 0x2c, 0xc2, 0x6b, 0xbf,
		0x6b, 0x1f, 0x26, 0xbb, 0x65, 0x8c, 0x20, 0xea, 0x9d, 0x19, 0xf1, 0x8b, 0x51, 0xf5, 0xd0, 0x71,
		0xed, 0xd6, 0x71, 0xc5, 0x6d, 0x5b, 0xe6, 0xfe, 0x37, 0x73, 0xcf, 0xae, 0xdb, 0xce, 0x1f, 0x1f,
		0xd6, 0x3c, 0xc6, 0x26, 0x9c, 0x20, 0xbc, 0xde, 0x86, 0xd7, 0xb7, 0x83, 0xf4, 0xdb, 0x1a, 0xd4,
		0x48, 0xf4, 0x9a, 0x88, 0xba, 0xa1, 0x3f, 0x5a, 0x69, 0x81, 0x24, 0x73, 0xfa, 0xa6, 0x0c, 0xae,
		0x35, 0x5f, 0x76, 0x83, 0x71, 0x4f, 0x68, 0xea, 0x5c, 0x68, 0x17, 0x71, 0x2a, 0x34, 0xd4, 0x34,
		0x15, 0xda, 0xad, 0xcb, 0x8a, 0x36, 0x3b, 0xc1, 0x39, 0x89, 0xe7, 0x5d, 0xca, 0xf3, 0xa5, 0x08,
		0xb5, 0x98, 0xfc, 0xe4, 0x97, 0x9c, 0xfa, 0xb1, 0xe6, 0x47, 0x5a, 0xf2, 0x7e, 0xaf, 0x48, 0x75,
		0x69, 0x44, 0x76, 0x77, 0xce, 0x46, 0x86, 0xde, 0xcc, 0x3b, 0xbd, 0xc2, 0xa2, 0x0e, 0xa5, 0xad,
		0x9a, 0x77, 0x02, 0xc5, 0x82, 0xe0, 0x43, 0xc1, 0x89, 0xb7, 0xc6, 0xcb, 0x55, 0x85, 0x61, 0x45,
		0x85, 0x33, 0x36, 0x05, 0xb3, 0x25, 0x06, 0xc6, 0xb9, 0x56, 0xb7, 0x97, 0x13, 0x65, 0x16, 0xef,
		0x75, 0x4b, 0xf0, 0x03, 0x3d, 0x7e, 0xdf, 0x63, 0xfd, 0x27, 0x85, 0x3f, 0x38, 0x3f, 0x1b, 0x86,
		0x86, 0xa7, 0x54, 0xe8, 0x9f, 0x8d, 0x97, 0x78, 0x7f, 0x67, 0x26, 0x78, 0x9e, 0xb1, 0x65, 0x49,
		0x11, 0x61, 0xb9, 0x97, 0x70, 0x2e, 0xfd, 0x24, 0xd3, 0x2a, 0x4e, 0x28, 0xad, 0xf0, 0xe4, 0xd1,
		0xaa, 0x34, 0xe7, 0xca, 0x4f, 0x0a, 0xad, 0x5c, 0x56, 0xae, 0xf6, 0x64, 0x4f, 0xbe, 0xd6, 0x41,
		0x96, 0x7d, 0xe9, 0xa3, 0x3e, 0x0d, 0xbf, 0xd1, 0xf2, 0x1d, 0x67, 0x1a, 0x2b, 0x6e, 0x4d, 0x58,
		0x32, 0xb7, 0xab, 0xb9, 0x85, 0x79, 0x65, 0x47, 0x5a, 0x57, 0x79, 0x64, 0x95, 0xc0, 0x91, 0x54,
		0x4a, 0xa5, 0xca, 0x95, 0x6e, 0x30, 0xa1, 0x59, 0xac, 0x5c, 0xd9, 0x91, 0xd0, 0x7c, 0xef, 0x17,
		0x59, 0xd5, 0x2d, 0xc2, 0x59, 0x54, 0x5f, 0x7d, 0x69, 0x35, 0xb3, 0x64, 0x55, 0x9b, 0x69, 0x57,
		0x7a, 0xd9, 0xff, 0xca, 0x3b, 0x28, 0x50, 0xe8, 0x94, 0x40, 0xa8, 0x23, 0x02, 0x95, 0xce, 0x07,
		0xe4, 0x3a, 0x1c, 0x90, 0xeb, 0x64, 0x40, 0xab, 0x63, 0xc1, 0x7a, 0x1d, 0x40, 0x58, 0xf5, 0xe5,
		0xf7, 0x7a, 0x56, 0x83, 0x5d, 0xbd, 0xa3, 0x4e, 0x63, 0xd7, 0xad, 0x49, 0x2b, 0xf6, 0x8b, 0xd5,
		0x26, 0x34, 0x32, 0x89, 0x8d, 0x52, 0x82, 0x23, 0x98, 0xe8, 0xa8, 0x25, 0x3c, 0xb2, 0x89, 0x8f,
		0x6c, 0x02, 0xa4, 0x99, 0x08, 0x57, 0x9b, 0x10, 0x57, 0x9c, 0x18, 0xc9, 0x24, 0xc8, 0x07, 0x89,
		0x92, 0x8e, 0x7f, 0xdf, 0xcf, 0x97, 0x54, 0xdc, 0x9b, 0x46, 0xda, 0x24, 0x97, 0x3e, 0x29, 0xa6,
		0x51, 0xc2, 0xe9, 0x94, 0x6a, 0x5a, 0x25, 0x9f, 0x5e, 0xc9, 0xa7, 0x59, 0xda, 0xe9, 0x96, 0x46,
		0xda, 0x25, 0x92, 0x7e, 0xc9, 0xa5, 0xe1, 0xdb, 0x74, 0xdc, 0xa3, 0xdb, 0xf6, 0x76, 0x65, 0x4d,
		0x04, 0x5e, 0x4a, 0xc9, 0x68, 0x7a, 0xcb, 0x37, 0x45, 0x33, 0x48, 0xd5, 0xd4, 0x53, 0x36, 0x9b,
		0xd4, 0xcd, 0x26, 0x85, 0xf3, 0x48, 0xe5, 0xb4, 0x52, 0x3a, 0xb1, 0xd4, 0x9e, 0xbd, 0x85, 0x68,
		0x7a, 0x3b, 0x87, 0x39, 0x2f, 0x8b, 0xa6, 0xb7, 0x7e, 0x0f, 0x2d, 0x6f, 0xc9, 0xfb, 0xa4, 0x9e,
		0xde, 0xc1, 0x41, 0x56, 0xe4, 0xa6, 0xe6, 0xd1, 0xd4, 0xb9, 0x45, 0xe8, 0x5c, 0xe8, 0x5c, 0xe8,
		0x5c, 0xe8, 0x5c, 0xe8, 0x5c, 0xe4, 0xd4, 0xfb, 0x6f, 0x21, 0xb5, 0x52, 0x56, 0x66, 0x18, 0xc1,
		0x92, 0xd6, 0x83, 0x60, 0x4c, 0xae, 0xb4, 0x75, 0x3f, 0xf5, 0xe3, 0xee, 0xe0, 0xfc, 0x49, 0x01,
		0x46, 0x92, 0x80, 0x8b, 0x34, 0x60, 0x27, 0x11, 0xd8, 0x49, 0x05, 0x5e, 0x92, 0x81, 0xa6, 0x74,
		0x20, 0x2a, 0x21, 0xb2, 0xb7, 0x96, 0xcf, 0xdd, 0xc1, 0x63, 0x5f, 0xaa, 0x4a, 0x99, 0xc1, 0xdd,
		0xc1, 0x5f, 0x08, 0x9b, 0xd8, 0xf6, 0xe4, 0x60, 0xf9, 0xcd, 0x13, 0x7f, 0xf5, 0x83, 0x76, 0xc2,
		0xd1, 0x26, 0x5d, 0xc6, 0xc9, 0x67, 0xc6, 0xcc, 0xd8, 0x63, 0x2f, 0x18, 0x0b, 0xba, 0xc2, 0xed,
		0x81, 0xbd, 0x07, 0xa1, 0xd7, 0x55, 0xfe, 0x50, 0xd6, 0xfc, 0x81, 0x4f, 0xed, 0x0a, 0xa6, 0xe7,
		0x63, 0x95, 0x18, 0x78, 0xca, 0xbf, 0x14, 0xa4, 0x6e, 0x14, 0x62, 0x98, 0x96, 0xee, 0xba, 0x9a,
		0x77, 0xc5, 0xcf, 0xd5, 0x68, 0x5f, 0xcd, 0x05, 0xef, 0x83, 0x54, 0x65, 0x6c, 0xdd, 0xe9, 0x6f,
		0x78, 0x5e, 0x4c, 0xa3, 0xbb, 0x7e, 0x21, 0x54, 0xe8, 0x77, 0xe9, 0x97, 0x09, 0x27, 0x76, 0xa2,
		0x54, 0xf8, 0x16, 0xf3, 0x50, 0x2a, 0x9c, 0x23, 0x89, 0x28, 0x15, 0xce, 0xcf, 0x6d, 0x50, 0x2a,
		0x5c, 0xb0, 0xc1, 0x28, 0x15, 0xe6, 0x75, 0x4e, 0xc6, 0xa8, 0x54, 0xf8, 0xd3, 0xef, 0x09, 0x83,
		0x74, 0x02, 0x9f, 0x4d, 0xe2, 0x3b, 0xa8, 0x17, 0xbe, 0xf3, 0x03, 0xf5, 0xc2, 0x05, 0x15, 0x31,
		0x50, 0xb1, 0x40, 0xc5, 0x82, 0x43, 0x6e, 0xba, 0xeb, 0x6a, 0x2c, 0xeb, 0x85, 0x95, 0x9d, 0x9d,
		0x9d, 0x12, 0x6a, 0x84, 0xf0, 0x38, 0x16, 0x1a, 0x95, 0xbe, 0x75, 0xa8, 0x11, 0x72, 0xb4, 0x88,
		0xda, 0x4e, 0x4b, 0x62, 0xb7, 0xd3, 0x3f, 0xb0, 0x8f, 0xea, 0x95, 0x05, 0x8f, 0xb7, 0x8b, 0x2f,
		0x64, 0xfd, 0x83, 0xb3, 0xaf, 0x0a, 0xb7, 0xe6, 0x64, 0x66, 0xa4, 0xe7, 0x32, 0x70, 0xbe, 0x87,
		0xba, 0x87, 0xe8, 0xd1, 0xf8, 0x2c, 0x7e, 0xd7, 0x09, 0x9f, 0xf0, 0x99, 0x18, 0x88, 0x33, 0x3e,
		0xaf, 0x31, 0x0b, 0x67, 0x7c, 0xde, 0x81, 0x1a, 0xce, 0xf8, 0xbc, 0xdd, 0x1d, 0x70, 0xc6, 0x67,
		0xde, 0xb2, 0x05, 0x67, 0x7c, 0xb8, 0x2b, 0x4f, 0xb2, 0x67, 0x7c, 0xd2, 0x9c, 0x4a, 0x7f, 0x01,
		0x7f, 0x62, 0x27, 0xed, 0x05, 0xfc, 0x22, 0x16, 0xf0, 0x73, 0x27, 0x09, 0x18, 0x49, 0x03, 0x2e,
		0x12, 0x81, 0x9d, 0x54, 0x60, 0x27, 0x19, 0x78, 0x49, 0x07, 0x9a, 0x12, 0x82, 0xa8, 0x94, 0x20,
		0x2f, 0x29, 0x32, 0x03, 0xbd, 0xde, 0xff, 0x79, 0x5d, 0x21, 0xbb, 0xd7, 0x46, 0xe4, 0xf7, 0x22,
		0xfa, 0xd1, 0x68, 0x1a, 0xe0, 0xef, 0xd9, 0x4d, 0xdc, 0xc3, 0x69, 0x4b, 0x0f, 0x36, 0x12, 0x84,
		0x93, 0x14, 0x61, 0x28, 0x49, 0xb8, 0x49, 0x13, 0xb6, 0x12, 0x85, 0xad, 0x54, 0xe1, 0x29, 0x59,
		0x68, 0x4b, 0x17, 0xe2, 0x12, 0x86, 0x8d, 0x94, 0x79, 0x5c, 0xd2, 0xf0, 0x09, 0x62, 0x8f, 0x2a,
		0x1b, 0x2e, 0x81, 0x8c, 0x87, 0xc0, 0x61, 0x27, 0x74, 0x38, 0x0a, 0x1e, 0xc6, 0xc2, 0x87, 0xab,
		0x00, 0x62, 0x2f, 0x84, 0xd8, 0x0b, 0x22, 0xde, 0xc2, 0x88, 0x87, 0x40, 0x62, 0x22, 0x94, 0xd8,
		0x09, 0xa6, 0xcc, 0x60, 0x9a, 0xbd, 0x63, 0x5f, 0x9d, 0x67, 0x28, 0xf6, 0x96, 0xcd, 0x99, 0x70,
		0x62, 0x2b, 0xa0, 0x38, 0x0b, 0xa9, 0x1c, 0x08, 0x2a, 0xee, 0xc2, 0x2a, 0x37, 0x02, 0x2b, 0x37,
		0x42, 0x2b, 0x1f, 0x82, 0x8b, 0x97, 0xf0, 0x62, 0x26, 0xc0, 0xd8, 0x0a, 0xb1, 0xcc, 0xf0, 0x7e,
		0xe0, 0x0d, 0x22, 0xbe, 0xc1, 0x72, 0x9a, 0xaf, 0xd2, 0x61, 0x30, 0x8d, 0x2f, 0xb4, 0xdb, 0x7e,
		0xe4, 0x56, 0xa8, 0xe5, 0x41, 0xb0, 0xe5, 0x48, 0xb8, 0xe5, 0x45, 0xc0, 0xe5, 0x4e, 0xc8, 0xe5,
		0x4e, 0xd0, 0xe5, 0x4b, 0xd8, 0xf1, 0x14, 0x78, 0x4c, 0x85, 0x5e, 0x86, 0x0e, 0xf9, 0xb6, 0x29,
		0xaf, 0xce, 0x18, 0x42, 0x8e, 0x2f, 0x44, 0x98, 0x9e, 0x86, 0x64, 0x9c, 0x35, 0xa6, 0x55, 0xae,
		0x32, 0xe3, 0x31, 0x58, 0x72, 0x7c, 0xc1, 0x3f, 0xef, 0x39, 0xc3, 0x8e, 0x0a, 0x7d, 0x39, 0x60,
		0x3f, 0x92, 0x64, 0x34, 0x9b, 0xb1, 0x8f, 0x98, 0xb5, 0x5a, 0xdb, 0xea, 0x74, 0xdc, 0x03, 0xf3,
		0xd0, 0xae, 0xff, 0xc1, 0x3c, 0x8f, 0x27, 0xc3, 0x2a, 0xc6, 0xc3, 0xda, 0x33, 0xf7, 0xbf, 0x1f,
		0xb5, 0xf2, 0x30, 0x9c, 0x52, 0x3c, 0x9c, 0x63, 0xb3, 0x7e, 0x64, 0xe5, 0x61, 0x34, 0x5b, 0xf1,
		0x68, 0xea, 0xcd, 0x7d, 0xb3, 0x9e, 0x87, 0xd1, 0x94, 0xe3, 0xd1, 0x74, 0x2c, 0x47, 0x67, 0x3d,
		0x94, 0x9b, 0xcf, 0xdc, 0xa3, 0xb2, 0x9d, 0x08, 0xdd, 0x1c, 0x84, 0xe4, 0x7b, 0xd1, 0x98, 0x6d,
		0xe1, 0xe1, 0xce, 0xa0, 0x26, 0xb1, 0x98, 0xdd, 0x3a, 0xdd, 0xa3, 0x83, 0x49, 0x63, 0x57, 0x55,
		0xdb, 0xca, 0xc1, 0x58, 0xe2, 0xc8, 0x55, 0xd5, 0xca, 0x39, 0x18, 0x49, 0x9a, 0x1f, 0xab, 0x5a,
		0x89, 0x77, 0x20, 0xc6, 0x0c, 0x1d, 0x89, 0xef, 0x35, 0x31, 0xc8, 0x8f, 0x94, 0xa9, 0x54, 0xc8,
		0x7b, 0x96, 0x7e, 0xe8, 0x4b, 0x2b, 0x10, 0x17, 0x42, 0x72, 0xea, 0xc7, 0xf6, 0xf8, 0x48, 0xbc,
		0xab, 0x99, 0x91, 0xf0, 0xbd, 0x49, 0xe3, 0xd1, 0xc1, 0x35, 0xc3, 0x9e, 0x08, 0x45, 0x6f, 0xef,
		0x5a, 0xaf, 0x6a, 0x72, 0x1c, 0x04, 0x79, 0x18, 0xca, 0x51, 0x24, 0x42, 0x36, 0x0d, 0xf5, 0xf2,
		0x11, 0x6f, 0x19, 0xc6, 0x5a, 0xfd, 0x72, 0xd2, 0xeb, 0x92, 0xf9, 0x0a, 0x72, 0x3a, 0x0c, 0xac,
		0x20, 0xaf, 0xc2, 0x7c, 0xac, 0x20, 0x13, 0x72, 0x04, 0xac, 0x20, 0xd3, 0x71, 0x6b, 0xac, 0x20,
		0x13, 0x1f, 0x10, 0x56, 0x90, 0xa1, 0x99, 0xde, 0x88, 0x4e, 0x7e, 0x56, 0x90, 0xc7, 0xbe, 0x54,
		0x5b, 0xa5, 0x1c, 0x2c, 0x1e, 0xef, 0x30, 0x1e, 0x02, 0x8f, 0x3b, 0x3d, 0x5e, 0xfa, 0xc8, 0xc1,
		0xea, 0x04, 0xa7, 0x3b, 0x41, 0x5e, 0x1c, 0x0c, 0xb3, 0x3b, 0x86, 0x5f, 0x1c, 0x0f, 0xd7, 0x1b,
		0x0e, 0x5e, 0x8e, 0xc5, 0xdc, 0x6e, 0x40, 0xc8, 0x69, 0x5a, 0xbf, 0x1b, 0x0a, 0xbc, 0xab, 0xfc,
		0x85, 0x82, 0x72, 0x69, 0xb7, 0xbc, 0x5b, 0xd9, 0x29, 0xed, 0x6e, 0x23, 0x26, 0x20, 0x26, 0x60,
		0x82, 0xb2, 0x06, 0xd6, 0x9f, 0xa2, 0xfc, 0x8f, 0x9c, 0xf7, 0x44, 0x90, 0xf9, 0x29, 0xfc, 0xc1,
		0xb9, 0xe2, 0x5f, 0xff, 0x9f, 0x8c, 0x03, 0x0b, 0x00, 0xab, 0x30, 0x1f, 0x0b, 0x00, 0x84, 0x3c,
		0x01, 0x0b, 0x00, 0x74, 0xdc, 0x1a, 0x0b, 0x00, 0xc4, 0x07, 0x84, 0x05, 0x00, 0xa8, 0xa6, 0x37,
		0xa2, 0x93, 0xaf, 0x05, 0x80, 0x2f, 0x39, 0xa8, 0xff, 0x6f, 0xa3, 0xfe, 0xbf, 0xe2, 0x0f, 0xd4,
		0xff, 0x69, 0x0d, 0x06, 0xf5, 0x7f, 0x2e, 0xa1, 0x18, 0xf5, 0x7f, 0x82, 0xa1, 0x20, 0x8f, 0xf5,
		0xff, 0xd2, 0x36, 0x0a, 0xff, 0x08, 0x06, 0x98, 0x98, 0xac, 0x83, 0xf5, 0x28, 0xfc, 0xc3, 0x62,
		0xf6, 0xa9, 0x99, 0xfa, 0x75, 0xef, 0x2f, 0xda, 0x9f, 0xcf, 0xeb, 0xe0, 0xd3, 0x4b, 0xbc, 0x27,
		0x9f, 0x0b, 0x77, 0x2f, 0xdb, 0xba, 0xfb, 0x57, 0x8a, 0x57, 0xc7, 0xe7, 0xc7, 0xa3, 0x19, 0x79,
		0x33, 0xd3, 0xb3, 0x46, 0xac, 0xcf, 0x18, 0x31, 0x5d, 0x5a, 0x44, 0xfb, 0xf0, 0x55, 0x82, 0x8e,
		0xf6, 0xe1, 0xab, 0x73, 0x57, 0xb4, 0x0f, 0xa7, 0x26, 0x3f, 0xd1, 0x3e, 0x1c, 0x9a, 0xe6, 0x79,
		0x44, 0xd8, 0x2e, 0x05, 0x66, 0x11, 0x3f, 0x10, 0x5e, 0x3f, 0x14, 0x7d, 0x8e, 0x11, 0x7f, 0xda,
		0x39, 0x92, 0xe1, 0xe9, 0x1f, 0xbd, 0x35, 0x99, 0x14, 0x6e, 0x6c, 0xa4, 0x93, 0xa4, 0x42, 0x2a,
		0x31, 0x31, 0x55, 0x5a, 0x63, 0x4b, 0xb9, 0x5c, 0x5e, 0xf5, 0x5d, 0x5c, 0x73, 0x9b, 0x14, 0xf1,
		0x6c, 0x2a, 0xc4, 0xb7, 0x89, 0x50, 0xae, 0x9a, 0x06, 0x31, 0x6e, 0x12, 0xc4, 0xb8, 0x29, 0x10,
		0x97, 0x68, 0xc8, 0xb4, 0x48, 0xbd, 0xf6, 0xc5, 0x69, 0x4e, 0x77, 0xce, 0x46, 0x2a, 0x1c, 0x77,
		0x95, 0x9c, 0x48, 0xf6, 0x46, 0xfa, 0xf0, 0xed, 0xc9, 0xa0, 0xdd, 0xd6, 0xe4, 0x89, 0xbb, 0x76,
		0xe4, 0x47, 0x6e, 0x3d, 0x7e, 0xd4, 0x6e, 0x3d, 0x1a, 0xb9, 0x4e, 0x70, 0xe9, 0x1e, 0xaa, 0xf8,
		0xc5, 0xc6, 0xe4, 0x91, 0x99, 0xd3, 0xc7, 0xe9, 0x4e, 0x5f, 0x71, 0xb3, 0x7f, 0xa5, 0x93, 0x3c,
		0x32, 0xd7, 0x9c, 0x3e, 0xa3, 0x8e, 0xdf, 0xe3, 0x21, 0x47, 0x6f, 0x70, 0xb9, 0x7c, 0x9e, 0x03,
		0xad, 0x2e, 0xae, 0x54, 0xe8, 0x19, 0xe3, 0x98, 0xd3, 0xb3, 0x80, 0xc7, 0x6c, 0x5b, 0x0f, 0x45,
		0x5f, 0x84, 0x42, 0x76, 0xf9, 0x6c, 0xec, 0x64, 0x78, 0x79, 0x78, 0x2f, 0xf4, 0xfa, 0xca, 0xf0,
		0x85, 0xea, 0xa7, 0x59, 0x23, 0x12, 0x83, 0x58, 0x70, 0x1a, 0xe1, 0x70, 0xac, 0x7c, 0x39, 0x30,
		0xc4, 0x95, 0x12, 0x32, 0xf2, 0x87, 0x32, 0xda, 0xd0, 0xa2, 0xf1, 0x99, 0xe1, 0xd4, 0x8f, 0xb5,
		0xad, 0x62, 0xf5, 0x44, 0xc6, 0x5f, 0x94, 0x4a, 0x9f, 0xb5, 0x52, 0xfa, 0xc7, 0xd6, 0x67, 0xad,
		0x58, 0x2e, 0x6e, 0x68, 0xb8, 0x85, 0x7c, 0x29, 0x73, 0xc7, 0x69, 0x95, 0xfb, 0xd6, 0x47, 0x70,
		0x11, 0xf9, 0x92, 0x25, 0xeb, 0x4c, 0x61, 0x7b, 0xee, 0x4e, 0x84, 0xa2, 0xd0, 0x9a, 0x59, 0x79,
		0x4a, 0x9f, 0x7e, 0xfd, 0xe7, 0xb9, 0x90, 0x48, 0xc5, 0x8b, 0x4b, 0xc5, 0x59, 0x19, 0x5b, 0x5d,
		0x8f, 0x84, 0xf6, 0xbb, 0xa6, 0x69, 0x1f, 0x26, 0x2b, 0x66, 0x46, 0x10, 0xf5, 0xce, 0x8c, 0xf8,
		0xe5, 0xa8, 0x6a, 0x77, 0xdc, 0xb6, 0x65, 0xee, 0x7f, 0x33, 0xf7, 0xec, 0xba, 0xed, 0xfc, 0xe1,
		0x9a, 0xb5, 0x7f, 0xbb, 0x1d, 0xbb, 0xf6, 0x01, 0x89, 0x77, 0xa9, 0x89, 0x37, 0x71, 0x06, 0xe4,
		0xdc, 0xd5, 0xe5, 0xdc, 0x77, 0x7a, 0x0b, 0x76, 0xa8, 0x2d, 0xe0, 0xfd, 0xa9, 0x89, 0xa8, 0x1b,
		0xfa, 0x23, 0x96, 0x9b, 0x4d, 0xb3, 0x30, 0xdc, 0x94, 0xc1, 0xb5, 0xe6, 0xcb, 0x6e, 0x30, 0xee,
		0x09, 0x4d, 0x9d, 0x0b, 0x2d, 0xab, 0x78, 0x69, 0x1d, 0xbb, 0x16, 0x69, 0xdd, 0xa1, 0x54, 0x9e,
		0x2f, 0x45, 0xa8, 0xc5, 0x31, 0x20, 0xfe, 0x89, 0x13, 0x39, 0x15, 0x75, 0x09, 0x8b, 0x7e, 0xa4,
		0x6d, 0x15, 0xb9, 0xc5, 0x06, 0xc6, 0x3b, 0x7f, 0x66, 0xc3, 0x72, 0x6f, 0x86, 0x40, 0x86, 0x2b,
		0xda, 0x79, 0xd8, 0xf6, 0x73, 0x27, 0x4a, 0xcf, 0xc9, 0x99, 0xb0, 0xa4, 0x8f, 0xd9, 0x1b, 0xe5,
		0xd9, 0x1b, 0x6a, 0xd3, 0xef, 0x89, 0x17, 0xbc, 0x16, 0xff, 0xd6, 0x70, 0xd1, 0x8f, 0x76, 0xfc,
		0xa5, 0x1b, 0x1f, 0x08, 0x7b, 0x9e, 0xee, 0xf5, 0x2e, 0x7c, 0x69, 0x0c, 0xc2, 0xe1, 0x78, 0x44,
		0xde, 0xed, 0x32, 0x6d, 0x3e, 0x6b, 0x34, 0xf1, 0xa8, 0x36, 0xdd, 0x58, 0x49, 0xdc, 0x4c, 0x2e,
		0x27, 0x45, 0x38, 0x9d, 0x0c, 0x61, 0x78, 0x12, 0x84, 0xdb, 0xfc, 0x8f, 0xed, 0x49, 0x0f, 0xb6,
		0x53, 0x3c, 0x9e, 0x27, 0x39, 0xb0, 0x6b, 0xe4, 0x3d, 0x6f, 0x79, 0xcd, 0x0f, 0x99, 0x48, 0xf2,
		0xe4, 0x8c, 0x34, 0x9b, 0xe0, 0x35, 0xcd, 0x0f, 0xa9, 0xd9, 0x5c, 0x76, 0xac, 0xb3, 0x10, 0x34,
		0xec, 0x84, 0x0d, 0x47, 0x81, 0xc3, 0x58, 0xe8, 0x70, 0x15, 0x3c, 0xec, 0x85, 0x0f, 0x7b, 0x01,
		0xc4, 0x5b, 0x08, 0xf1, 0x10, 0x44, 0x4c, 0x84, 0x11, 0x3b, 0x81, 0x94, 0x19, 0xcc, 0xa9, 0xea,
		0xf3, 0x64, 0xb6, 0xe1, 0x53, 0x05, 0x7a, 0x4a, 0x44, 0xa1, 0x9f, 0x08, 0x44, 0x55, 0x8e, 0xc5,
		0x15, 0x77, 0x91, 0x95, 0x1b, 0xb1, 0x95, 0x1b, 0xd1, 0x95, 0x0f, 0xf1, 0xc5, 0x4b, 0x84, 0x31,
		0x13, 0x63, 0x19, 0x22, 0xfc, 0xfb, 0x89, 0xb0, 0xbd, 0x53, 0x98, 0xf1, 0x5d, 0xc2, 0xcc, 0xef,
		0x10, 0x60, 0x7c, 0x91, 0x46, 0x1e, 0xee, 0x0c, 0xc8, 0xcb, 0x5d, 0x01, 0xb9, 0x6b, 0x0b, 0x9e,
		0x9f, 0x76, 0xe0, 0x8c, 0xef, 0x04, 0xc8, 0xc5, 0x5d, 0x00, 0xb9, 0xbb, 0x03, 0x18, 0xbe, 0x8e,
		0x09, 0xc2, 0x9a, 0x5b, 0x7d, 0x8a, 0x89, 0xd8, 0x02, 0xdd, 0x91, 0x65, 0xbf, 0xb0, 0x59, 0x59,
		0xca, 0xb3, 0x6f, 0xd8, 0x6c, 0xd6, 0xcd, 0x4d, 0xff, 0xb0, 0x6c, 0x50, 0x7c, 0xfb, 0x88, 0x3d,
		0x1c, 0x02, 0xbb, 0x7e, 0x62, 0x5c, 0x23, 0x11, 0xc3, 0xf6, 0x37, 0x0f, 0xc6, 0xc0, 0xaf, 0x1d,
		0x4e, 0x8e, 0x6a, 0x14, 0xd3, 0xca, 0x5c, 0xfb, 0x60, 0x7f, 0x7b, 0x6b, 0x73, 0xbb, 0xaa, 0xd9,
		0x1d, 0xc3, 0xee, 0x68, 0x56, 0xd6, 0xd8, 0x43, 0xeb, 0x0f, 0x43, 0xcd, 0x09, 0xbd, 0x7e, 0xdf,
		0xef, 0x6a, 0x96, 0x1c, 0xf8, 0x52, 0x88, 0xd0, 0x97, 0x83, 0x8d, 0xdb, 0xf3, 0x6c, 0x5b, 0x55,
		0x6d, 0xd2, 0xef, 0xa3, 0xb4, 0xf5, 0xb9, 0x58, 0x2e, 0x7e, 0x9e, 0x76, 0xfd, 0xd8, 0xc0, 0x6d,
		0xd3, 0xab, 0x1f, 0x47, 0x0e, 0x9a, 0xea, 0x3c, 0x18, 0x53, 0xae, 0x2f, 0x9c, 0x5e, 0x90, 0x2b,
		0x62, 0xce, 0x08, 0xab, 0xf3, 0x34, 0x67, 0xc4, 0xce, 0xb4, 0x75, 0x54, 0xbe, 0xe8, 0xa8, 0x4b,
		0xfa, 0x70, 0x6d, 0xb6, 0x7f, 0x8d, 0xd3, 0xed, 0x6e, 0xe8, 0x11, 0x9b, 0xeb, 0xd0, 0xc1, 0xb2,
		0x47, 0x2c, 0x7a, 0xd2, 0x2d, 0x76, 0xbe, 0x7b, 0xbf, 0xcb, 0xd6, 0xeb, 0x7a, 0x6c, 0x1d, 0xda,
		0x0d, 0xf7, 0x6b, 0xbb, 0x79, 0xd4, 0x42, 0x57, 0xba, 0xe5, 0xce, 0x5c, 0xd1, 0x95, 0x6e, 0xc5,
		0x93, 0xd2, 0x77, 0xfb, 0x0b, 0xfa, 0xd2, 0x2d, 0xe0, 0x1d, 0xca, 0x6b, 0x5f, 0xba, 0x0b, 0x5f,
		0xfa, 0x91, 0x0a, 0x93, 0x35, 0x6f, 0x2d, 0xd1, 0x93, 0xf7, 0x1a, 0x6a, 0x9d, 0xc8, 0xf8, 0x07,
		0xa7, 0x55, 0x0f, 0x3f, 0x4a, 0x7b, 0x6a, 0x6d, 0xa1, 0x39, 0xdd, 0x4a, 0xa2, 0x33, 0x9a, 0xd3,
		0xd1, 0x0a, 0xd6, 0xf3, 0xf4, 0x28, 0x14, 0x85, 0xd6, 0xb9, 0x28, 0x84, 0x0e, 0x75, 0xb9, 0x9e,
		0x19, 0xa3, 0x43, 0x1d, 0xe9, 0x22, 0x1a, 0x87, 0xfe, 0x4a, 0x4b, 0xbd, 0x7d, 0xea, 0xc2, 0x97,
		0x5f, 0x93, 0x07, 0x83, 0xbe, 0x7d, 0x79, 0x8b, 0x47, 0xba, 0x77, 0xe9, 0xf9, 0x81, 0x77, 0x16,
		0x08, 0xe3, 0xcc, 0x93, 0xbd, 0x9f, 0x7e, 0x2f, 0x71, 0x72, 0x2e, 0xfd, 0xfb, 0x1e, 0x31, 0x1e,
		0x7d, 0xfc, 0xe6, 0x61, 0x26, 0xfa, 0xf8, 0x2d, 0x10, 0x5b, 0xf4, 0xf1, 0x5b, 0xc6, 0xf4, 0x18,
		0x7d, 0xfc, 0x96, 0x3e, 0x03, 0x46, 0x1f, 0xbf, 0xb5, 0x98, 0xbf, 0xa0, 0x8f, 0xdf, 0x62, 0xf3,
		0x03, 0xfa, 0xf8, 0x41, 0xd8, 0x70, 0x14, 0x38, 0x8c, 0x85, 0x0e, 0x57, 0xc1, 0xc3, 0x5e, 0xf8,
		0xb0, 0x17, 0x40, 0xbc, 0x85, 0x10, 0x0f, 0x41, 0xc4, 0x44, 0x18, 0xb1, 0x13, 0x48, 0x99, 0xc1,
		0x7c, 0x6a, 0x3f, 0x4f, 0xe6, 0x1a, 0x2e, 0x15, 0xa0, 0xa7, 0x04, 0x14, 0x7a, 0xf8, 0x41, 0x50,
		0xe5, 0x58, 0x58, 0x71, 0x17, 0x58, 0xb9, 0x11, 0x5a, 0xb9, 0x11, 0x5c, 0xf9, 0x10, 0x5e, 0xbc,
		0x04, 0x18, 0x33, 0x21, 0x96, 0x21, 0xc2, 0xbf, 0x87, 0x9f, 0x2f, 0x84, 0xe8, 0x07, 0x43, 0x8f,
		0x77, 0x23, 0xbf, 0x5d, 0x86, 0xa6, 0xd7, 0x85, 0x1c, 0x24, 0xc2, 0x18, 0xa7, 0xe4, 0x97, 0xfc,
		0xe4, 0x73, 0xd5, 0xc9, 0xaf, 0x8c, 0xee, 0x5e, 0xc4, 0x22, 0x2b, 0x3a, 0xf9, 0x11, 0x70, 0xf1,
		0x5c, 0x75, 0xf2, 0x83, 0x8b, 0xc3, 0xc5, 0x31, 0x3b, 0x60, 0x6c, 0x35, 0x9a, 0x31, 0xac, 0x7d,
		0x8a, 0xd2, 0x15, 0xc7, 0xb9, 0x62, 0x36, 0x4f, 0x4c, 0xac, 0x47, 0x05, 0x7c, 0x19, 0x66, 0xa3,
		0x02, 0xbe, 0x42, 0xce, 0x51, 0x01, 0x5f, 0x9d, 0xbb, 0xa2, 0x02, 0x4e, 0x6c, 0x20, 0xa8, 0x80,
		0x43, 0xd1, 0xbc, 0x80, 0x48, 0x0e, 0x2a, 0xe0, 0x3d, 0x21, 0x95, 0xaf, 0xae, 0x43, 0xd1, 0x67,
		0x5c, 0x01, 0x67, 0xd9, 0x24, 0xd9, 0x9e, 0x3c, 0xfa, 0x3d, 0x2f, 0x62, 0x9c, 0xb7, 0xa6, 0x20,
		0xd9, 0x1d, 0xbb, 0xe3, 0x76, 0x8e, 0xf6, 0x9c, 0xfa, 0xb1, 0xeb, 0xfc, 0xd1, 0xb2, 0xb8, 0xa6,
		0xaf, 0xa4, 0xec, 0x14, 0xb1, 0x5d, 0x98, 0xd0, 0x58, 0x2f, 0x4e, 0xdc, 0x25, 0xaa, 0x75, 0xb7,
		0x05, 0x8b, 0xdd, 0x3a, 0x2e, 0xbb, 0xed, 0xe6, 0x91, 0x63, 0xb5, 0x5d, 0xbb, 0xa6, 0xa3, 0xb2,
		0x0c, 0xb2, 0xe6, 0x47, 0x56, 0x05, 0x64, 0x81, 0xac, 0xf9, 0x93, 0xd5, 0x6a, 0x5b, 0x07, 0xf6,
		0x0f, 0xf7, 0xa0, 0x6e, 0x7e, 0xed, 0x80, 0x2b, 0x70, 0x35, 0x67, 0xae, 0x3a, 0x88, 0x56, 0xa0,
		0x6a, 0x7e, 0x54, 0xa5, 0xf2, 0xbd, 0xc3, 0x59, 0xbf, 0xe7, 0x49, 0xc7, 0xe7, 0x83, 0xb6, 0xb5,
		0xd1, 0xf5, 0x39, 0x88, 0x6b, 0xeb, 0x43, 0x5c, 0x05, 0xc4, 0x81, 0x38, 0xcc, 0x03, 0xc0, 0x9b,
		0x86, 0xf9, 0x01, 0x68, 0x03, 0x6d, 0xef, 0xa2, 0xcd, 0x31, 0xbf, 0x02, 0x33, 0x60, 0xb6, 0x04,
		0xcc, 0x2a, 0xe5, 0x1c, 0x80, 0xc6, 0x7a, 0x04, 0xa7, 0xa8, 0x37, 0xc1, 0xb1, 0x91, 0x37, 0x80,
		0x13, 0xf2, 0x03, 0x80, 0xca, 0x1b, 0x50, 0x0f, 0x2e, 0x7d, 0xf9, 0xb7, 0x5b, 0x37, 0x1b, 0x58,
		0x66, 0x01, 0x56, 0xf3, 0xc6, 0x0a, 0x48, 0x01, 0xa9, 0xb9, 0x22, 0x95, 0x5d, 0x4f, 0x05, 0xac,
		0x80, 0xd5, 0xdc, 0xb0, 0x3a, 0x36, 0xed, 0xba, 0xb9, 0x57, 0xb7, 0xdc, 0x3d, 0xb3, 0x51, 0xfb,
		0x8f, 0x5d, 0x73, 0xbe, 0x01, 0x2f, 0xe0, 0x35, 0x2f, 0xbc, 0x32, 0xa8, 0xdc, 0xfd, 0x66, 0xa3,
		0xe3, 0xb4, 0x4d, 0xbb, 0xe1, 0x60, 0x9b, 0x14, 0x00, 0x9b, 0x1b, 0x60, 0xd6, 0x0f, 0xc7, 0x6a,
		0xd4, 0xac, 0x1a, 0xf2, 0x23, 0xf8, 0x5a, 0x04, 0x5f, 0xc9, 0xd6, 0x15, 0xbb, 0xe1, 0x58, 0xed,
		0x03, 0x73, 0xdf, 0x72, 0xcd, 0x5a, 0xad, 0x6d, 0x75, 0x10, 0xc1, 0x40, 0xd8, 0x7c, 0x09, 0x6b,
		0x58, 0xf6, 0xd7, 0x6f, 0x7b, 0xcd, 0x36, 0x00, 0x03, 0x60, 0x0b, 0x00, 0xac, 0x82, 0x10, 0x06,
		0xc2, 0x16, 0x4c, 0x18, 0x42, 0x18, 0x00, 0x5b, 0x14, 0x60, 0x75, 0xbb, 0xf1, 0xdd, 0x35, 0x1d,
		0xa7, 0x6d, 0xef, 0x1d, 0x39, 0x16, 0xd0, 0x02, 0x5a, 0xf3, 0x45, 0xab, 0x66, 0xd5, 0xcd, 0x3f,
		0x40, 0x15, 0xa8, 0x9a, 0x3f, 0x55, 0xee, 0xb1, 0xd9, 0xb6, 0x4d, 0xc7, 0x6e, 0x36, 0xc0, 0x17,
		0xf8, 0x9a, 0x2b, 0x5f, 0x58, 0x60, 0x04, 0x52, 0x73, 0x46, 0xaa, 0xde, 0x84, 0x70, 0x07, 0x54,
		0x73, 0x86, 0xaa, 0xd5, 0x6e, 0x3a, 0xd6, 0x7e, 0x9c, 0x02, 0xd3, 0x73, 0xa7, 0xe0, 0x0b, 0x7c,
		0xcd, 0x89, 0xaf, 0x43, 0xf3, 0x47, 0xca, 0x18, 0x56, 0xaf, 0x41, 0xd7, 0x42, 0xe8, 0x6a, 0x5b,
		0x1d, 0xab, 0x7d, 0x8c, 0x1d, 0x12, 0x60, 0x6c, 0x41, 0x8c, 0xd9, 0x8d, 0xdb, 0x28, 0x86, 0x3a,
		0x04, 0xe8, 0x9a, 0x2b, 0x5d, 0x6d, 0xab, 0x63, 0xd7, 0x8e, 0xcc, 0x3a, 0x62, 0x17, 0xe8, 0x9a,
		0x3f, 0x5d, 0xe8, 0x26, 0x03, 0xda, 0x96, 0x4f, 0x5d, 0x2e, 0xce, 0x6c, 0xe4, 0x20, 0xa8, 0xad,
		0x11, 0x6e, 0x40, 0x0d, 0xa8, 0x2d, 0x05, 0xb5, 0x1c, 0xec, 0x61, 0x05, 0x6e, 0x6c, 0x70, 0xcb,
		0xd3, 0xd9, 0x0f, 0x60, 0xc7, 0x05, 0xbb, 0x9c, 0x9d, 0x09, 0x01, 0x78, 0x5c, 0xc0, 0xcb, 0xd7,
		0x59, 0x11, 0x70, 0xc7, 0x85, 0xbb, 0xbc, 0x9d, 0x21, 0x01, 0x79, 0xac, 0xc8, 0xcb, 0xcf, 0xc6,
		0x6c, 0x80, 0xc7, 0x08, 0xbc, 0x0a, 0x42, 0x1e, 0xc8, 0x5b, 0x11, 0x79, 0x08, 0x79, 0x00, 0x6f,
		0xd9, 0xe0, 0xe5, 0xe6, 0x8c, 0x0a, 0x90, 0x63, 0x85, 0x1c, 0xf3, 0x3d, 0x23, 0xa0, 0x8d, 0x1f,
		0x6d, 0x79, 0x38, 0xd3, 0x02, 0xee, 0x58, 0x71, 0x87, 0x05, 0x58, 0xa0, 0xb6, 0x24, 0xd4, 0x78,
		0x9f, 0x81, 0x01, 0x6c, 0xac, 0x60, 0xcb, 0xcd, 0xd9, 0x18, 0x70, 0xc7, 0x85, 0xbb, 0x3c, 0x9d,
		0x99, 0x01, 0x75, 0x9c, 0xa8, 0xcb, 0xd7, 0x59, 0x1a, 0xb0, 0xc7, 0x86, 0xbd, 0x1c, 0x9d, 0xb1,
		0x01, 0x75, 0x5c, 0xa8, 0xcb, 0xd3, 0xd9, 0x1b, 0x50, 0xc7, 0x85, 0x3a, 0xc7, 0x72, 0x6b, 0xd6,
		0x81, 0x79, 0x54, 0x77, 0xdc, 0x43, 0xcb, 0x69, 0xdb, 0xfb, 0x80, 0x0e, 0xd0, 0x2d, 0x1a, 0xba,
		0xa3, 0x46, 0xb6, 0x95, 0xd3, 0xaa, 0xb9, 0xf5, 0x0e, 0xb6, 0xd5, 0x01, 0xba, 0x25, 0x40, 0x97,
		0xce, 0x27, 0xac, 0x1a, 0x32, 0x2c, 0xb8, 0x5b, 0x22, 0x77, 0x8e, 0x5d, 0xb7, 0xff, 0x9b, 0x33,
		0xea, 0x70, 0x63, 0x25, 0xbc, 0x7d, 0x9d, 0xbc, 0x7c, 0x1d, 0xf4, 0x33, 0xe0, 0x82, 0x4e, 0x06,
		0x5c, 0x6b, 0x04, 0x57, 0x9e, 0xf4, 0x30, 0xf8, 0x82, 0xee, 0x05, 0x5d, 0xf9, 0xa5, 0xab, 0xdd,
		0x3c, 0x72, 0xac, 0xb6, 0xbb, 0x6f, 0xb6, 0xb2, 0x6e, 0x42, 0x6d, 0xd7, 0xac, 0x7f, 0x6d, 0xb6,
		0x6d, 0xe7, 0xdb, 0x21, 0xc8, 0x02, 0x59, 0x73, 0x25, 0xeb, 0xf6, 0x6f, 0x40, 0x0b, 0x68, 0xcd,
		0x11, 0x2d, 0xb4, 0x40, 0x03, 0x6f, 0x48, 0x96, 0xeb, 0x1b, 0xd9, 0xd6, 0x89, 0xb8, 0x3c, 0x24,
		0xd1, 0x0c, 0x39, 0x54, 0xbc, 0xf1, 0xdc, 0x73, 0xfc, 0xbc, 0x79, 0x3d, 0x67, 0x3e, 0xd6, 0xf2,
		0xb0, 0x94, 0x49, 0x42, 0xd5, 0x4d, 0x29, 0x87, 0xca, 0x53, 0xfe, 0x50, 0xea, 0x55, 0x46, 0x29,
		0x54, 0x8f, 0xba, 0xe7, 0xe2, 0xc2, 0x1b, 0x79, 0xea, 0x3c, 0x4e, 0x96, 0x85, 0xe1, 0x48, 0xc8,
		0xee, 0x50, 0xf6, 0xfd, 0x81, 0x21, 0x85, 0xfa, 0x39, 0x0c, 0xff, 0x32, 0x7c, 0x19, 0x29, 0x4f,
		0x76, 0x45, 0xe1, 0xfe, 0x0b, 0xd1, 0x83, 0x57, 0x0a, 0xa3, 0x70, 0xa8, 0x86, 0xdd, 0x61, 0x10,
		0x65, 0x5f, 0x15, 0xfc, 0xc8, 0x8f, 0x0a, 0x81, 0xb8, 0x14, 0xc1, 0xe4, 0x53, 0x21, 0xf0, 0xe5,
		0x5f, 0x46, 0xa4, 0x3c, 0x25, 0x8c, 0x9e, 0xa7, 0xbc, 0x33, 0x2f, 0x12, 0x85, 0x20, 0x1a, 0x15,
		0x54, 0x70, 0x19, 0xc5, 0x7f, 0x14, 0x2e, 0x94, 0x11, 0xff, 0x96, 0x21, 0x85, 0x3f, 0x38, 0x3f,
		0x1b, 0x86, 0x86, 0xa7, 0x54, 0xe8, 0x9f, 0x8d, 0x55, 0x6c, 0x43, 0xfa, 0x52, 0x94, 0x7d, 0x55,
		0xb8, 0x35, 0x27, 0x33, 0x23, 0x1a, 0x9f, 0x25, 0xff, 0x58, 0xfa, 0xb9, 0xe0, 0x5d, 0x7a, 0x7e,
		0xe0, 0x9d, 0x05, 0xc2, 0x38, 0xf3, 0x64, 0xef, 0xa7, 0xdf, 0x53, 0xe7, 0x85, 0xe4, 0xff, 0xe7,
		0x91, 0xfc, 0xe9, 0x3b, 0x2a, 0x6d, 0x0b, 0x89, 0x87, 0x10, 0x5d, 0x5c, 0xa9, 0xd0, 0x33, 0xc6,
		0x31, 0xbc, 0x67, 0x81, 0x60, 0x11, 0x3e, 0xf4, 0x50, 0xf4, 0x45, 0x28, 0x64, 0x57, 0xb0, 0x99,
		0x64, 0x33, 0x8a, 0xc9, 0xd9, 0xd4, 0xe5, 0x60, 0x7f, 0xe7, 0x4b, 0x71, 0xb3, 0xaa, 0xd9, 0x1d,
		0xc3, 0xee, 0x68, 0x4e, 0xe8, 0xf5, 0xfb, 0x7e, 0x57, 0xb3, 0xe4, 0xc0, 0x97, 0x42, 0x84, 0xbe,
		0x1c, 0x68, 0x1f, 0x1d, 0xeb, 0x93, 0x76, 0x28, 0x54, 0xe8, 0x77, 0x4f, 0xa4, 0x75, 0xa5, 0x84,
		0x8c, 0xfc, 0xa1, 0x8c, 0x36, 0xb4, 0x68, 0x7c, 0x66, 0x38, 0xf5, 0x63, 0x6d, 0xeb, 0x4b, 0x55,
		0x8b, 0x3f, 0x97, 0x4a, 0x9f, 0xb5, 0xd2, 0xd6, 0x67, 0xad, 0x58, 0x2e, 0x7e, 0xd6, 0x4a, 0xc9,
		0xdf, 0x4a, 0x5b, 0x1b, 0x8c, 0x0a, 0x3d, 0x7a, 0x67, 0x38, 0x0e, 0xbb, 0x82, 0x55, 0x76, 0x4d,
		0xec, 0xfe, 0x2e, 0xae, 0x7f, 0x0e, 0xc3, 0x5e, 0xfc, 0x86, 0xde, 0x7a, 0x0d, 0xaf, 0x32, 0x81,
		0xfe, 0xcd, 0x8b, 0xcc, 0x70, 0x30, 0xbe, 0x10, 0x52, 0xe9, 0x55, 0x4d, 0x85, 0x63, 0xc1, 0x6c,
		0x00, 0x33, 0xd6, 0x2f, 0xc3, 0xad, 0x30, 0x09, 0x58, 0x33, 0x2b, 0x4f, 0xe9, 0xfb, 0x83, 0xfe,
		0xf3, 0x5c, 0x48, 0xa4, 0xeb, 0xc5, 0xa5, 0xeb, 0x8d, 0x8d, 0x74, 0x56, 0x51, 0x50, 0xd7, 0x23,
		0xa1, 0xfd, 0xae, 0x7d, 0x18, 0x76, 0xd3, 0x79, 0x4c, 0x10, 0xf5, 0xce, 0x8c, 0xf8, 0xc5, 0xa8,
		0xfa, 0x8a, 0xce, 0xe5, 0x1f, 0x90, 0x94, 0x97, 0x9a, 0x94, 0x13, 0xb7, 0x40, 0x3e, 0x5e, 0x5d,
		0x3e, 0x9e, 0x9b, 0xdf, 0xf0, 0xc9, 0xba, 0x8c, 0x3c, 0xbc, 0x26, 0xa2, 0x6e, 0xe8, 0x8f, 0xd8,
		0x55, 0xb6, 0xee, 0x84, 0xe6, 0xa6, 0x0c, 0xae, 0x35, 0x5f, 0x76, 0x83, 0x71, 0x4f, 0x68, 0xea,
		0x5c, 0x68, 0x59, 0x49, 0x48, 0x4b, 0x4a, 0x42, 0x3d, 0x5f, 0x9d, 0x6b, 0xdd, 0xa1, 0x54, 0x9e,
		0x2f, 0x45, 0xa8, 0xc5, 0x21, 0x21, 0xfe, 0xb1, 0x13, 0x39, 0xd5, 0x7b, 0x7e, 0xa4, 0x25, 0x74,
		0x6e, 0x7d, 0xd9, 0xe0, 0x16, 0x2b, 0x98, 0x86, 0xe8, 0xfb, 0x61, 0xba, 0x37, 0xc3, 0x21, 0xbf,
		0x45, 0x56, 0xf6, 0x11, 0xfb, 0x41, 0xd4, 0x9e, 0xab, 0x4b, 0x61, 0x89, 0x07, 0xb3, 0x3b, 0xca,
		0xb3, 0x3b, 0xd4, 0xb7, 0xdf, 0x13, 0x35, 0x78, 0x2d, 0x8d, 0xad, 0xeb, 0x92, 0x18, 0x83, 0xac,
		0xaa, 0x47, 0x2a, 0x1c, 0x77, 0x95, 0x9c, 0xa8, 0xba, 0x46, 0xfa, 0xac, 0xed, 0xc9, 0x18, 0xdd,
		0xd6, 0xe4, 0x01, 0xbb, 0x76, 0xe4, 0x47, 0x6e, 0x3d, 0x7e, 0xb2, 0x6e, 0x3d, 0x1a, 0xb9, 0x4e,
		0x70, 0xe9, 0x1e, 0xaa, 0xf8, 0xc5, 0xc6, 0xe4, 0x09, 0x99, 0xd3, 0xa7, 0xe7, 0x4e, 0x5f, 0x71,
		0xb3, 0x7f, 0xa5, 0x93, 0x3c, 0x21, 0xd7, 0x9c, 0x3e, 0xa1, 0xbd, 0xec, 0x01, 0xfd, 0x86, 0x28,
		0x9a, 0xb3, 0xf8, 0xa4, 0x67, 0xf4, 0x1b, 0xdd, 0xa1, 0x8c, 0x54, 0xe8, 0xf9, 0x52, 0x45, 0xe4,
		0xc3, 0x54, 0x36, 0xaf, 0x79, 0xdc, 0x7c, 0xe2, 0xf9, 0xe0, 0xbb, 0x2f, 0x63, 0x45, 0x5f, 0x24,
		0x6e, 0xe6, 0x7e, 0x12, 0xf3, 0xf5, 0xaa, 0xb6, 0x49, 0xdc, 0xd0, 0x56, 0x28, 0xfa, 0xfe, 0x15,
		0x8f, 0xdc, 0x3a, 0x05, 0x77, 0x52, 0xe2, 0xe1, 0x90, 0x73, 0x98, 0xcd, 0x9f, 0x67, 0xe7, 0xcc,
		0xa3, 0x94, 0x0c, 0x26, 0x5b, 0xa8, 0xb8, 0x4e, 0x91, 0xef, 0x4c, 0x8b, 0xa7, 0x60, 0x63, 0xcf,
		0x4e, 0xae, 0xe7, 0x34, 0x35, 0x3f, 0xe4, 0x11, 0x70, 0x1f, 0x53, 0x08, 0x7c, 0x62, 0xd9, 0x73,
		0x3a, 0x87, 0x4b, 0x58, 0xe3, 0x21, 0x77, 0xd8, 0xc9, 0x1e, 0x8e, 0xf2, 0x87, 0xb1, 0x0c, 0xe2,
		0x2a, 0x87, 0xd8, 0xcb, 0x22, 0xf6, 0xf2, 0x88, 0xb7, 0x4c, 0xe2, 0x21, 0x97, 0x98, 0xc8, 0x26,
		0x76, 0xf2, 0x29, 0x33, 0x98, 0x53, 0x75, 0xe8, 0xc9, 0x6c, 0xc3, 0xa7, 0x46, 0xc4, 0x5c, 0x44,
		0xb1, 0x15, 0x53, 0x9c, 0x45, 0x55, 0x0e, 0xc4, 0x15, 0x77, 0x91, 0x95, 0x1b, 0xb1, 0x95, 0x1b,
		0xd1, 0x95, 0x0f, 0xf1, 0xc5, 0x4b, 0x84, 0x31, 0x13, 0x63, 0x6c, 0x45, 0xd9, 0x23, 0xe2, 0x8c,
		0x6f, 0xc4, 0x7c, 0xa8, 0xd1, 0xb8, 0x86, 0x4c, 0x9e, 0x52, 0x8d, 0xbd, 0x64, 0xcb, 0x83, 0x74,
		0xcb, 0x91, 0x84, 0xcb, 0x8b, 0x94, 0xcb, 0x9d, 0xa4, 0xcb, 0x9d, 0xb4, 0xcb, 0x97, 0xc4, 0xe3,
		0x29, 0xf5, 0x98, 0x4a, 0x3e, 0xf6, 0xd2, 0xef, 0x11, 0x09, 0x68, 0xf8, 0x3d, 0xfe, 0xc1, 0xf6,
		0xa1, 0x1a, 0x8c, 0x87, 0xc5, 0x3c, 0x3e, 0x4d, 0x84, 0xe1, 0x26, 0xf3, 0x61, 0x70, 0x17, 0x88,
		0x79, 0x12, 0x8a, 0x39, 0x14, 0x8c, 0x79, 0x13, 0x8e, 0xb9, 0x15, 0x90, 0xb9, 0x15, 0x92, 0xf9,
		0x14, 0x94, 0xbc, 0x85, 0x25, 0x73, 0x81, 0x99, 0x21, 0xe5, 0x5c, 0x8f, 0x44, 0xbe, 0x32, 0x4e,
		0x20, 0xbc, 0x7e, 0x28, 0xfa, 0x79, 0xc8, 0x38, 0xd3, 0xca, 0xdd, 0x4e, 0x0e, 0xc6, 0xd2, 0x9a,
		0x1c, 0xdf, 0xca, 0x9a, 0x0b, 0xdc, 0x95, 0xd2, 0xbf, 0x21, 0x84, 0x21, 0x7c, 0xfd, 0x1a, 0x51,
		0x69, 0xc7, 0xc8, 0xdc, 0x4c, 0x2d, 0xd3, 0xe1, 0xe4, 0x63, 0x4a, 0x59, 0xc4, 0x94, 0x12, 0x53,
		0x4a, 0x4c, 0x29, 0x31, 0xa5, 0xc4, 0x94, 0x12, 0x53, 0x4a, 0xe8, 0xb1, 0xf5, 0x9a, 0x52, 0x72,
		0x5f, 0xbb, 0xc8, 0x06, 0x72, 0xdb, 0x89, 0xa1, 0x9a, 0xb7, 0x4b, 0x58, 0x38, 0x35, 0x99, 0xf8,
		0x15, 0xe1, 0xb9, 0x99, 0x93, 0xe1, 0xe4, 0x45, 0x80, 0xe6, 0x51, 0x88, 0xe6, 0x58, 0x90, 0xe6,
		0x55, 0x98, 0xe6, 0x5e, 0xa0, 0xe6, 0x5e, 0xa8, 0xe6, 0x5b, 0xb0, 0xe6, 0x43, 0xb8, 0xe6, 0x44,
		0xc0, 0x66, 0xa8, 0xe5, 0x66, 0x6d, 0xe4, 0x41, 0xc6, 0xf2, 0x85, 0x10, 0xfd, 0x60, 0xe8, 0xa9,
		0xad, 0x52, 0x9e, 0xb2, 0xd6, 0x44, 0x04, 0xee, 0xe6, 0x68, 0x48, 0x75, 0x21, 0x07, 0xc9, 0x04,
		0xe4, 0xcf, 0x5c, 0x85, 0xf1, 0x7c, 0xc9, 0x8a, 0xe4, 0x9d, 0x3a, 0xf4, 0x65, 0xee, 0xf4, 0x52,
		0x36, 0xb8, 0xe4, 0x02, 0x5f, 0xbd, 0xaa, 0x95, 0x3f, 0xe7, 0x73, 0x7c, 0x07, 0xa1, 0xd7, 0x55,
		0xfe, 0x50, 0xd6, 0xfc, 0x81, 0x9f, 0x9c, 0x28, 0xde, 0xcc, 0xe9, 0x40, 0x1b, 0x62, 0xe0, 0x29,
		0xff, 0x32, 0x7e, 0x2f, 0xfb, 0x5e, 0x10, 0x89, 0xdc, 0x8d, 0xf2, 0xe6, 0x73, 0x0e, 0x43, 0x8b,
		0x77, 0x85, 0xd0, 0x82, 0xd0, 0x82, 0xd0, 0x82, 0xd9, 0x19, 0x46, 0xf3, 0xf0, 0xe3, 0xf4, 0x37,
		0xbc, 0x1f, 0x48, 0xbd, 0xf3, 0x09, 0x62, 0xf9, 0x3a, 0xb7, 0xf2, 0x60, 0xe2, 0x9f, 0xa7, 0xf3,
		0x2b, 0xf7, 0xa7, 0xfd, 0x58, 0xfb, 0x21, 0x3a, 0x20, 0xac, 0xfd, 0xb0, 0x1a, 0x1a, 0xd6, 0x7e,
		0x98, 0x0e, 0x10, 0x6b, 0x3f, 0xd0, 0x7f, 0xd0, 0x80, 0xf3, 0x41, 0x2d, 0xbf, 0x6b, 0x3f, 0x63,
		0x5f, 0xe6, 0x73, 0xd9, 0x67, 0x27, 0x47, 0x43, 0x6a, 0x7b, 0x72, 0x20, 0xb0, 0xea, 0x43, 0xff,
		0x8d, 0x5a, 0x8b, 0x55, 0x9f, 0x4d, 0x94, 0x66, 0x99, 0xc7, 0x7e, 0xac, 0xfa, 0x30, 0x0c, 0x2d,
		0x6b, 0xb1, 0xea, 0x53, 0xda, 0x2d, 0xef, 0x56, 0x76, 0x4a, 0xbb, 0xdb, 0x88, 0x31, 0x88, 0x31,
		0x98, 0xa0, 0x61, 0x34, 0xbf, 0xfc, 0x81, 0xe5, 0x1f, 0x8c, 0x60, 0xed, 0x15, 0x04, 0xb7, 0x4b,
		0x7d, 0x5f, 0x1c, 0xcf, 0x3a, 0x5c, 0xfa, 0xfb, 0xe8, 0x6d, 0xa1, 0x8f, 0xbe, 0x5a, 0x98, 0xfd,
		0x81, 0x99, 0x97, 0xd3, 0xa6, 0x01, 0x68, 0x9e, 0x01, 0xcb, 0xf3, 0x1e, 0xe8, 0xf4, 0xef, 0xe2,
		0x3a, 0x2f, 0x2b, 0xd8, 0x7a, 0xdd, 0x8f, 0x94, 0xa9, 0x14, 0xf3, 0x1e, 0x9f, 0x87, 0xbe, 0xb4,
		0x02, 0x71, 0x21, 0x24, 0xf7, 0x79, 0x4d, 0x3c, 0xd5, 0x9e, 0x19, 0x49, 0xf1, 0x4b, 0xb9, 0x5c,
		0xd9, 0x29, 0x97, 0x37, 0x77, 0xb6, 0x76, 0x36, 0x77, 0xb7, 0xb7, 0x8b, 0x95, 0x22, 0xe3, 0xd9,
		0xa9, 0xde, 0x0c, 0x7b, 0x22, 0x14, 0xbd, 0xbd, 0xd8, 0x7d, 0xe4, 0x38, 0x08, 0xf2, 0x30, 0x94,
		0xa3, 0x48, 0x84, 0xac, 0x27, 0x9a, 0x5c, 0xa3, 0x70, 0x4e, 0x64, 0x26, 0xe4, 0xe5, 0x6b, 0xe4,
		0xa5, 0xce, 0xba, 0x3b, 0x58, 0x38, 0xee, 0x2a, 0x39, 0x59, 0xf4, 0x6c, 0xa4, 0xef, 0x98, 0x3d,
		0x79, 0x52, 0x6e, 0x6b, 0xf2, 0x36, 0xb9, 0x76, 0xe4, 0x47, 0x6e, 0x3d, 0x7e, 0x7f, 0xdc, 0x7a,
		0x34, 0x72, 0x9d, 0xe0, 0xd2, 0x3d, 0x54, 0xf1, 0x8b, 0x8d, 0xc9, 0x73, 0x36, 0xa7, 0xef, 0x81,
		0x3b, 0x7d, 0xc5, 0xcd, 0xfe, 0x95, 0x4e, 0xf2, 0x9c, 0xdd, 0xbd, 0xe9, 0x13, 0xdd, 0xcf, 0x9e,
		0x9c, 0x7b, 0xfb, 0x25, 0x4f, 0x75, 0x7e, 0x83, 0xbb, 0x88, 0x10, 0xff, 0xf3, 0x13, 0xf7, 0x11,
		0xef, 0x9f, 0x8c, 0xf7, 0xbc, 0xe2, 0x13, 0x1f, 0x2f, 0x67, 0xe4, 0xe1, 0xfa, 0xc5, 0xb0, 0x27,
		0x02, 0x8e, 0x1b, 0xde, 0xb3, 0x5d, 0x4d, 0xd9, 0x08, 0x78, 0xde, 0xa3, 0xba, 0x89, 0x7b, 0x54,
		0x97, 0x63, 0x38, 0xee, 0x51, 0x5d, 0xe9, 0x10, 0x70, 0x8f, 0x2a, 0x91, 0x81, 0xe0, 0x1e, 0x55,
		0xa8, 0x9a, 0x75, 0x99, 0xbb, 0xb0, 0xdd, 0xcb, 0x9d, 0x83, 0x3b, 0x0d, 0x38, 0xdf, 0x61, 0xf0,
		0xf0, 0xce, 0x82, 0x4c, 0x65, 0x62, 0xce, 0xb4, 0xf6, 0x73, 0x26, 0x9e, 0xd7, 0x0f, 0xb0, 0xbe,
		0x6e, 0x80, 0xe9, 0xf5, 0x02, 0x98, 0x2d, 0x61, 0xb6, 0x84, 0xd9, 0x12, 0x66, 0x4b, 0x98, 0x2d,
		0x61, 0xb6, 0x44, 0x1f, 0x11, 0xae, 0xed, 0xfb, 0xf9, 0x16, 0xb1, 0x1f, 0xa4, 0x2c, 0xa6, 0xc5,
		0xec, 0xfb, 0x32, 0x8d, 0xe9, 0x8e, 0x30, 0xf6, 0x0d, 0x58, 0xf2, 0xd0, 0x70, 0x25, 0x47, 0x0d,
		0x56, 0xf2, 0xd2, 0x50, 0x25, 0x77, 0x0d, 0x54, 0x72, 0xd7, 0x30, 0x25, 0x5f, 0x0d, 0x52, 0xb0,
		0xbd, 0x7e, 0x99, 0xe8, 0xb0, 0x6f, 0x78, 0x72, 0xa7, 0xc1, 0xc9, 0x17, 0xce, 0xf9, 0x62, 0x22,
		0x9f, 0x38, 0xef, 0x39, 0xcf, 0x47, 0xff, 0x92, 0x1c, 0x1c, 0xa3, 0xcb, 0x53, 0x7f, 0x92, 0xbc,
		0xf5, 0x23, 0xc9, 0x6d, 0x6f, 0x80, 0xfc, 0xf5, 0x02, 0xc8, 0x43, 0x6b, 0xdb, 0x3c, 0xf5, 0x13,
		0xc9, 0x42, 0x41, 0x69, 0x7b, 0x1b, 0xc1, 0x00, 0xc1, 0x00, 0x13, 0x93, 0x35, 0xb0, 0xfe, 0x14,
		0x27, 0x69, 0x60, 0x31, 0xf7, 0xd4, 0x8c, 0x93, 0x34, 0xf9, 0x3a, 0x49, 0xc3, 0xb0, 0x03, 0x07,
		0xa3, 0xfd, 0x60, 0xbf, 0x21, 0x02, 0xcd, 0xcf, 0x73, 0x27, 0x1d, 0x34, 0x98, 0xad, 0x2e, 0xf2,
		0x6c, 0x96, 0xc1, 0xb7, 0x39, 0x46, 0xae, 0x9a, 0x61, 0x30, 0x6e, 0x7e, 0xc1, 0xb8, 0xd9, 0x05,
		0x97, 0x80, 0xc8, 0x54, 0x8a, 0x41, 0x82, 0xdd, 0x79, 0x55, 0x67, 0xb5, 0x69, 0x7c, 0x95, 0x5d,
		0x29, 0x78, 0xc8, 0x54, 0xfa, 0xa2, 0x8f, 0xb6, 0x85, 0xc4, 0xa3, 0xaf, 0x2e, 0xae, 0x54, 0xe8,
		0x19, 0xe3, 0x18, 0xd7, 0xb3, 0x80, 0xc7, 0x9a, 0xb3, 0x1e, 0x8a, 0xbe, 0x08, 0x85, 0xec, 0xf2,
		0x59, 0xd3, 0x64, 0x94, 0xce, 0xa6, 0x0b, 0xf7, 0xed, 0x83, 0xfd, 0x72, 0xb1, 0x54, 0xae, 0x6a,
		0xd3, 0x38, 0xa8, 0x59, 0x57, 0x4a, 0xc8, 0xc8, 0x1f, 0xca, 0x48, 0xeb, 0x0f, 0x43, 0xad, 0x33,
		0x1e, 0x8d, 0x86, 0xa1, 0xd2, 0x86, 0x7d, 0xad, 0xe6, 0xf7, 0xfb, 0x91, 0x08, 0x2f, 0x8d, 0x13,
		0xe9, 0xfd, 0xf4, 0x42, 0xa1, 0x1d, 0xb6, 0xea, 0x1d, 0xcd, 0x09, 0xbd, 0x7e, 0xdf, 0xef, 0x6a,
		0x96, 0x1c, 0xf8, 0x52, 0x88, 0xd0, 0x97, 0x83, 0x0d, 0x2d, 0x1a, 0x9f, 0x19, 0x4e, 0xfd, 0x58,
		0x2b, 0x95, 0xaa, 0x5a, 0xfa, 0xf9, 0xb3, 0x56, 0xda, 0xfa, 0x7c, 0x22, 0x8b, 0xe5, 0xe2, 0x67,
		0xad, 0x54, 0x2a, 0x7d, 0x2e, 0x95, 0xb6, 0x38, 0x25, 0x11, 0xa6, 0xfb, 0xc9, 0x66, 0xf7, 0x8f,
		0xdd, 0xfa, 0x13, 0xb3, 0xea, 0x1d, 0xf7, 0x2d, 0x63, 0x77, 0xb6, 0x88, 0xad, 0xd4, 0xe1, 0x50,
		0x84, 0x5a, 0x33, 0x2b, 0x4f, 0xe9, 0x7b, 0x8a, 0xfe, 0xf3, 0x5c, 0x48, 0xa4, 0xf8, 0xc5, 0xa5,
		0xf8, 0xec, 0x24, 0xb5, 0xba, 0x1e, 0x09, 0xed, 0xf7, 0x0f, 0x93, 0x4d, 0xaa, 0x46, 0x10, 0xf5,
		0xce, 0x8c, 0xf8, 0xb5, 0xa8, 0x6a, 0x77, 0xdc, 0xb6, 0x65, 0xee, 0x7f, 0x33, 0xf7, 0xec, 0xba,
		0xed, 0xfc, 0xe1, 0xee, 0x99, 0x8d, 0xda, 0x7f, 0xec, 0x9a, 0xf3, 0xcd, 0xdd, 0x6f, 0x36, 0x3a,
		0x4e, 0xdb, 0xb4, 0x1b, 0x4e, 0xe7, 0x03, 0xf2, 0xf5, 0x52, 0xf3, 0x75, 0xe2, 0x17, 0x48, 0xd5,
		0xab, 0x4b, 0xd5, 0xf3, 0x73, 0x1c, 0x34, 0x03, 0x58, 0xc0, 0x5b, 0x55, 0x13, 0x51, 0x37, 0xf4,
		0x47, 0x2c, 0x57, 0x75, 0xb3, 0xe0, 0xdc, 0x94, 0xc1, 0xb5, 0xe6, 0xcb, 0x6e, 0x30, 0xee, 0x09,
		0x4d, 0x9d, 0x0b, 0x2d, 0xab, 0xb6, 0x69, 0x33, 0x35, 0xb8, 0xf8, 0x6b, 0xe5, 0xf9, 0x52, 0x84,
		0x5a, 0x1c, 0x15, 0x4e, 0x64, 0xfc, 0x93, 0x53, 0xc9, 0xe7, 0x47, 0x5a, 0x02, 0x68, 0xa9, 0xb4,
		0xc1, 0x2d, 0x5c, 0x30, 0x3e, 0xa5, 0x33, 0x1b, 0xa9, 0x7b, 0x33, 0x24, 0x32, 0x3c, 0xf2, 0x9e,
		0x87, 0x23, 0x39, 0x77, 0x02, 0xf7, 0x9c, 0x9d, 0x0a, 0x1b, 0x0d, 0x30, 0xc7, 0xa3, 0x3c, 0xc7,
		0x43, 0x65, 0xfc, 0x3d, 0x71, 0x83, 0xd7, 0x7a, 0xe4, 0xfa, 0xae, 0x43, 0xd2, 0x0e, 0xc3, 0x74,
		0xc3, 0x04, 0x61, 0x07, 0xd4, 0xc5, 0x95, 0x12, 0xb2, 0x27, 0x7a, 0x86, 0xd7, 0xbb, 0xf0, 0xa5,
		0x31, 0x08, 0x87, 0xe3, 0x11, 0x79, 0x37, 0xcc, 0xb4, 0xfb, 0xa3, 0xd6, 0x13, 0x0f, 0x77, 0x3c,
		0xba, 0x79, 0xb1, 0x69, 0x07, 0xc1, 0xa9, 0xed, 0x03, 0xc3, 0xf6, 0x0e, 0xdc, 0x26, 0x88, 0x6c,
		0xdb, 0x35, 0xb0, 0x9d, 0x03, 0xf2, 0x6c, 0xbf, 0x80, 0xcd, 0x2c, 0xef, 0x79, 0xcb, 0xb9, 0x74,
		0xcb, 0x62, 0xd6, 0xae, 0x94, 0x65, 0x9b, 0x52, 0x66, 0xed, 0x49, 0xd9, 0xf5, 0xb9, 0xe2, 0xd8,
		0xd7, 0x8a, 0x71, 0x1f, 0xab, 0x3c, 0xac, 0x5b, 0xb2, 0xec, 0x53, 0x95, 0xaf, 0x95, 0x4b, 0x76,
		0x7d, 0xa8, 0x70, 0xe8, 0x6c, 0x1d, 0x05, 0x52, 0x66, 0x30, 0xcb, 0x3a, 0xd0, 0x93, 0x69, 0x87,
		0x61, 0x5d, 0xe8, 0x29, 0x59, 0x85, 0x3b, 0xb2, 0x20, 0xb3, 0x72, 0x2c, 0xb7, 0xb8, 0xcb, 0xae,
		0xdc, 0xc8, 0xaf, 0xdc, 0xc8, 0xb0, 0x7c, 0xc8, 0x31, 0x5e, 0xb2, 0x8c, 0x99, 0x3c, 0xcb, 0x10,
		0xe1, 0x7f, 0x47, 0xd6, 0xd8, 0x97, 0x6a, 0xab, 0xc4, 0xf8, 0x8a, 0x2c, 0x8e, 0x37, 0x64, 0xf1,
		0xee, 0xf3, 0xc9, 0xb8, 0xd9, 0x6d, 0x1e, 0xfa, 0x7a, 0xe6, 0xa5, 0x9f, 0x67, 0xee, 0x5a, 0xf7,
		0xe5, 0xa7, 0x65, 0x1f, 0xe3, 0xbe, 0x9d, 0xb9, 0xe8, 0xd7, 0x99, 0xb9, 0x78, 0xb9, 0xb4, 0x5b,
		0xde, 0xad, 0xec, 0x94, 0x76, 0xb7, 0xe1, 0xeb, 0xf0, 0x75, 0x4c, 0x10, 0x18, 0x5b, 0x7d, 0x8a,
		0x89, 0xd8, 0x02, 0xdd, 0x91, 0x65, 0xb7, 0xb3, 0x59, 0x59, 0xca, 0xb3, 0xeb, 0xd9, 0x6c, 0xd6,
		0xcd, 0x4d, 0xf7, 0xb3, 0x6c, 0x50, 0x7c, 0xbb, 0xa0, 0x3d, 0x1c, 0x02, 0xbb, 0x6e, 0x68, 0x5c,
		0x23, 0x11, 0xc3, 0x3e, 0x3d, 0x0f, 0xc6, 0xc0, 0xaf, 0x6f, 0x4f, 0x8e, 0x6a, 0x14, 0x33, 0x7d,
		0x7d, 0x76, 0xb6, 0x36, 0xbf, 0x54, 0xd3, 0xee, 0x22, 0x3d, 0xd1, 0xd3, 0xcc, 0xde, 0x85, 0x2f,
		0xfd, 0x48, 0x85, 0x89, 0xf2, 0xd4, 0xbe, 0x86, 0xc3, 0xf1, 0x28, 0xd2, 0x7c, 0x99, 0x34, 0x15,
		0x39, 0x91, 0x8f, 0x74, 0x15, 0xd1, 0x3e, 0xc6, 0xdf, 0x32, 0x1c, 0xeb, 0xd3, 0x6d, 0x7f, 0x91,
		0x62, 0x39, 0xe9, 0x2f, 0x72, 0x22, 0x4b, 0xa5, 0xcf, 0xa5, 0xad, 0xcf, 0xc5, 0x72, 0xf1, 0xf3,
		0xa4, 0xb9, 0xc8, 0x06, 0xae, 0x8b, 0x5b, 0xfd, 0x38, 0x72, 0xd0, 0xee, 0xe7, 0xc1, 0x98, 0x72,
		0x7d, 0x63, 0xdc, 0x2a, 0xfc, 0x14, 0xb3, 0x4d, 0x58, 0x9d, 0xa7, 0xd9, 0x26, 0x76, 0xb9, 0xad,
		0xa3, 0x66, 0x46, 0x27, 0x61, 0xc2, 0x27, 0x78, 0x1f, 0xdb, 0x02, 0xc7, 0xe9, 0xda, 0x06, 0xf4,
		0xc3, 0xcd, 0x75, 0x0c, 0x61, 0xd9, 0x0f, 0x17, 0x7d, 0xf2, 0x16, 0x3b, 0x65, 0xbe, 0xd7, 0xee,
		0x4b, 0x7b, 0x4d, 0xbf, 0x2f, 0xeb, 0x87, 0x63, 0x35, 0x6a, 0x56, 0xcd, 0x35, 0x6b, 0x87, 0x76,
		0xc3, 0xfd, 0xda, 0x6e, 0x1e, 0xb5, 0xd0, 0x27, 0x6f, 0xb9, 0x13, 0x5d, 0xf4, 0xc9, 0x5b, 0xf1,
		0x1c, 0x76, 0x7e, 0x8e, 0x83, 0x3e, 0x79, 0x0b, 0x78, 0xab, 0xf2, 0xd9, 0x27, 0x6f, 0xaa, 0x30,
		0xb5, 0x44, 0x61, 0x6a, 0x89, 0xc2, 0x4c, 0xfa, 0x78, 0xc5, 0xdf, 0x3d, 0x91, 0xd3, 0x3a, 0x48,
		0x82, 0xa4, 0x1f, 0x69, 0xc5, 0x32, 0x9a, 0xe3, 0xad, 0x26, 0x3c, 0xa3, 0x39, 0x1e, 0xad, 0x68,
		0x3d, 0x0f, 0x4f, 0x42, 0x7d, 0x68, 0x9d, 0xeb, 0x43, 0xe8, 0x88, 0x97, 0xeb, 0xb9, 0x31, 0x3a,
		0xe2, 0xf1, 0xa8, 0xa7, 0x71, 0xe8, 0xdf, 0xb4, 0xc4, 0xbb, 0xb7, 0xa6, 0x0b, 0x68, 0xc9, 0xfa,
		0x59, 0xb2, 0x6a, 0x86, 0x8e, 0x81, 0xb9, 0x0b, 0x50, 0xba, 0x3f, 0xba, 0x2c, 0x1b, 0xbe, 0x54,
		0x22, 0xec, 0x7b, 0x5d, 0x61, 0x78, 0xbd, 0x5e, 0x28, 0xa2, 0x88, 0x4f, 0xcf, 0xc0, 0x27, 0xec,
		0x47, 0xd7, 0xc0, 0x79, 0x98, 0x89, 0xae, 0x81, 0x0b, 0x24, 0x17, 0x5d, 0x03, 0x97, 0x31, 0x5b,
		0x46, 0xd7, 0xc0, 0xa5, 0x4f, 0x88, 0xd1, 0x35, 0x70, 0x2d, 0xa6, 0x35, 0xe8, 0x1a, 0xb8, 0xd8,
		0xfc, 0x80, 0xae, 0x81, 0x10, 0x36, 0x1c, 0x05, 0x0e, 0x63, 0xa1, 0xc3, 0x55, 0xf0, 0xb0, 0x17,
		0x3e, 0xec, 0x05, 0x10, 0x6f, 0x21, 0xc4, 0x43, 0x10, 0x31, 0x11, 0x46, 0xec, 0x04, 0x52, 0x66,
		0x30, 0x97, 0xe2, 0xcf, 0x93, 0x99, 0x86, 0x47, 0xf5, 0xe7, 0x29, 0xf1, 0x84, 0xde, 0x80, 0x10,
		0x53, 0x39, 0x16, 0x55, 0xdc, 0xc5, 0x55, 0x6e, 0x44, 0x56, 0x6e, 0xc4, 0x56, 0x3e, 0x44, 0x17,
		0x2f, 0xf1, 0xc5, 0x4c, 0x84, 0x65, 0x88, 0xf0, 0xef, 0x0d, 0x98, 0xac, 0x74, 0xf1, 0x54, 0x38,
		0xb3, 0x2a, 0xa7, 0xf8, 0x85, 0xa1, 0xed, 0x2d, 0x4f, 0x29, 0x11, 0x4a, 0xb6, 0x07, 0xf0, 0xf5,
		0x8f, 0x7f, 0x6e, 0x1a, 0xbb, 0xa7, 0xff, 0xfc, 0x59, 0x34, 0x76, 0x4f, 0xd3, 0x2f, 0x8b, 0xc9,
		0xa7, 0xbf, 0x4b, 0x37, 0xff, 0x94, 0xfe, 0xdc, 0x34, 0xca, 0x93, 0x57, 0x4b, 0xdb, 0x7f, 0x6e,
		0x1a, 0xdb, 0xa7, 0x9f, 0x3e, 0x9e, 0x9c, 0x6c, 0xfc, 0xea, 0xef, 0x7c, 0xfa, 0x7b, 0xeb, 0x86,
		0x5f, 0xd8, 0x3d, 0xe5, 0x88, 0x63, 0xb3, 0x63, 0xff, 0x60, 0xcf, 0xe4, 0xff, 0x3e, 0x2e, 0x8b,
		0xca, 0x4f, 0xff, 0xd2, 0x71, 0x66, 0x18, 0x72, 0x60, 0x86, 0x3d, 0x74, 0xa8, 0x5a, 0xf1, 0x08,
		0xd0, 0xa1, 0x8a, 0xf6, 0x10, 0xd0, 0xa1, 0x6a, 0x49, 0x4f, 0x1c, 0x1d, 0xaa, 0x28, 0x7c, 0xe4,
		0xa3, 0x43, 0xd5, 0xf6, 0xd6, 0xe6, 0x76, 0x55, 0xb3, 0x3b, 0x86, 0xdd, 0x49, 0xfb, 0xdf, 0x44,
		0xfe, 0x50, 0x46, 0x5a, 0x7f, 0x18, 0x6a, 0x8f, 0xb4, 0xb9, 0xd9, 0xb8, 0x3d, 0x8b, 0x52, 0x49,
		0x9a, 0xdb, 0x68, 0x69, 0x6f, 0x1b, 0xb4, 0xa0, 0xa2, 0x35, 0x6f, 0x46, 0x0b, 0x2a, 0xfa, 0x03,
		0xba, 0xd7, 0x82, 0x6a, 0xfe, 0x8e, 0x88, 0x1e, 0x53, 0xb0, 0x3a, 0x4f, 0xf3, 0x45, 0xec, 0x89,
		0x58, 0x47, 0xd5, 0x8b, 0x1e, 0x53, 0x84, 0xcf, 0xc4, 0x3d, 0x7e, 0x94, 0x06, 0x5d, 0xa6, 0xd6,
		0xc7, 0x42, 0x74, 0x99, 0x9a, 0xbf, 0xcd, 0xe8, 0x32, 0xb5, 0xd8, 0x69, 0xef, 0x5b, 0x9a, 0xe5,
		0xd8, 0xad, 0xe3, 0xb2, 0x6b, 0x37, 0x1c, 0xab, 0x7d, 0x60, 0xee, 0x5b, 0xae, 0x59, 0xab, 0xb5,
		0xad, 0x4e, 0x07, 0x7d, 0xa6, 0x96, 0x3b, 0x9b, 0x45, 0x9f, 0xa9, 0x15, 0x4f, 0x54, 0xe7, 0xe9,
		0x3a, 0xe8, 0x34, 0xb5, 0x80, 0x37, 0x2b, 0x9f, 0x9d, 0xa6, 0xec, 0xd6, 0x65, 0x59, 0xcb, 0x74,
		0xa6, 0x36, 0xd1, 0x99, 0x93, 0x3e, 0x39, 0xdd, 0xa1, 0x54, 0x9e, 0x2f, 0x45, 0x78, 0x22, 0xa7,
		0x2d, 0x73, 0xb2, 0x1e, 0xdc, 0x7e, 0x94, 0x36, 0xcd, 0xa9, 0xa0, 0xf3, 0xd4, 0x4a, 0x02, 0x36,
		0x3a, 0x4f, 0xd1, 0x8a, 0xdf, 0x8b, 0xf0, 0x2c, 0x54, 0x91, 0xd6, 0xb9, 0x8a, 0x84, 0x4e, 0x54,
		0xb9, 0x9e, 0x3f, 0xa3, 0x13, 0x15, 0x97, 0xaa, 0x1b, 0x7a, 0x51, 0xdd, 0xe9, 0x45, 0x65, 0x8f,
		0x2e, 0xcb, 0xf6, 0xf4, 0x19, 0x99, 0x93, 0x47, 0x84, 0x6e, 0x54, 0x79, 0x0b, 0x52, 0xe9, 0x1e,
		0xf7, 0x5b, 0xcf, 0x62, 0xd9, 0x8c, 0xea, 0x81, 0xf9, 0xe8, 0x45, 0x35, 0x0f, 0x33, 0xd1, 0x8b,
		0x6a, 0x81, 0xe0, 0xa2, 0x17, 0xd5, 0x32, 0xe6, 0xcf, 0xe8, 0x45, 0xb5, 0xf4, 0x29, 0x32, 0x7a,
		0x51, 0xad, 0xc5, 0xc4, 0x06, 0xbd, 0xa8, 0x16, 0x9b, 0x1f, 0xd0, 0x8b, 0x0a, 0xc2, 0x86, 0xa3,
		0xc0, 0x61, 0x2c, 0x74, 0xb8, 0x0a, 0x1e, 0xf6, 0xc2, 0x87, 0xbd, 0x00, 0xe2, 0x2d, 0x84, 0x78,
		0x08, 0x22, 0x26, 0xc2, 0x88, 0x9d, 0x40, 0xca, 0x0c, 0x46, 0x2f, 0xaa, 0x95, 0x8a, 0x27, 0xf4,
		0xa2, 0x82, 0x98, 0xca, 0xb1, 0xa8, 0xe2, 0x2e, 0xae, 0x72, 0x23, 0xb2, 0x72, 0x23, 0xb6, 0xf2,
		0x21, 0xba, 0x78, 0x89, 0x2f, 0x66, 0x22, 0x2c, 0x43, 0x04, 0xbd, 0xa8, 0x88, 0xa8, 0x1c, 0xf4,
		0xa2, 0x5a, 0xc5, 0x00, 0xd0, 0x8b, 0xea, 0xa9, 0x0f, 0xf4, 0xa2, 0x5a, 0xd5, 0x28, 0xd0, 0x8b,
		0xea, 0x59, 0x2e, 0x21, 0x07, 0x16, 0xc8, 0x1e, 0x7a, 0x51, 0xad, 0x78, 0x04, 0xe8, 0x45, 0x45,
		0x7b, 0x08, 0xe8, 0x45, 0xb5, 0xa4, 0x27, 0x8e, 0x5e, 0x54, 0x14, 0x3e, 0xd6, 0xbc, 0x17, 0xd5,
		0x97, 0xd9, 0x16, 0x38, 0x5a, 0x11, 0xdd, 0xa8, 0x68, 0xcd, 0x9c, 0xd1, 0x8d, 0x8a, 0xfe, 0x80,
		0xe6, 0xd5, 0x8d, 0xea, 0x19, 0x57, 0x44, 0x3f, 0x2a, 0x58, 0x9d, 0xa7, 0x39, 0x23, 0xf6, 0x45,
		0xac, 0xa3, 0xf2, 0x45, 0x3f, 0x2a, 0xea, 0x27, 0xe3, 0xee, 0x9f, 0xa6, 0x41, 0x3b, 0xaa, 0xf5,
		0xb1, 0x10, 0xed, 0xa8, 0xe6, 0x6f, 0x33, 0xda, 0x51, 0x2d, 0x76, 0xe6, 0xfb, 0xe6, 0x9e, 0x3a,
		0x0d, 0xcb, 0xfe, 0xfa, 0x6d, 0xaf, 0xd9, 0x46, 0x37, 0xaa, 0xd5, 0xcc, 0x66, 0xd1, 0x8d, 0x6a,
		0xc5, 0x13, 0xd5, 0x39, 0x7a, 0x0e, 0x9a, 0x51, 0x2d, 0xe0, 0xbd, 0xca, 0x71, 0x33, 0xaa, 0xa9,
		0xc8, 0xcc, 0x3a, 0xe6, 0x64, 0xbd, 0x72, 0xb4, 0x38, 0x2c, 0x9c, 0xc8, 0xc7, 0x7a, 0xe5, 0x7c,
		0xd9, 0x40, 0x1b, 0xaa, 0x95, 0x44, 0x6a, 0xb4, 0xa1, 0xa2, 0x15, 0xb8, 0xe7, 0xeb, 0x53, 0x28,
		0x1b, 0xad, 0x73, 0xd9, 0x08, 0x0d, 0xa8, 0x72, 0x3d, 0x63, 0x46, 0x03, 0x2a, 0x26, 0x65, 0x36,
		0xf4, 0x9f, 0x7a, 0xd0, 0x7f, 0x2a, 0xfb, 0x71, 0xb4, 0x9f, 0xca, 0x69, 0x88, 0xd2, 0xfd, 0xd1,
		0x65, 0xe5, 0x91, 0x5e, 0x6c, 0x9c, 0xfa, 0x4f, 0x55, 0xd8, 0xf5, 0x92, 0x43, 0x03, 0xaa, 0x39,
		0x1b, 0x8a, 0x06, 0x54, 0x98, 0x45, 0x3f, 0x3e, 0x73, 0x46, 0x03, 0xaa, 0xa5, 0x4f, 0x8e, 0xd1,
		0x80, 0x6a, 0x2d, 0x26, 0x36, 0x68, 0x40, 0xb5, 0xd8, 0xfc, 0x80, 0x06, 0x54, 0x10, 0x36, 0x1c,
		0x05, 0x0e, 0x63, 0xa1, 0xc3, 0x55, 0xf0, 0xb0, 0x17, 0x3e, 0xec, 0x05, 0x10, 0x6f, 0x21, 0xc4,
		0x43, 0x10, 0x31, 0x11, 0x46, 0xec, 0x04, 0x52, 0x66, 0x30, 0x1a, 0x50, 0xad, 0x54, 0x3c, 0xa1,
		0x01, 0x15, 0xc4, 0x54, 0x8e, 0x45, 0x15, 0x77, 0x71, 0x95, 0x1b, 0x91, 0x95, 0x1b, 0xb1, 0x95,
		0x0f, 0xd1, 0xc5, 0x4b, 0x7c, 0x31, 0x13, 0x61, 0x19, 0x22, 0xb9, 0x68, 0x40, 0x55, 0x41, 0x03,
		0xaa, 0x15, 0x29, 0x06, 0xf6, 0x0d, 0xa8, 0x92, 0xbe, 0x3d, 0x9e, 0xd1, 0x37, 0x8d, 0x83, 0xd3,
		0xbf, 0x8b, 0x9f, 0xcb, 0x37, 0xd5, 0x4f, 0x7f, 0xef, 0xdc, 0xdc, 0x7f, 0xf1, 0x9f, 0xc7, 0x7e,
		0xac, 0xf8, 0x79, 0xe7, 0xa6, 0xfa, 0xc4, 0x77, 0x2a, 0x37, 0xd5, 0x57, 0xfe, 0x1b, 0xdb, 0x37,
		0x1f, 0x1f, 0xfc, 0x68, 0xfc, 0x7a, 0xe9, 0xa9, 0x5f, 0x28, 0x3f, 0xf1, 0x0b, 0x5b, 0x4f, 0xfd,
		0xc2, 0xd6, 0x13, 0xbf, 0xf0, 0xa4, 0x49, 0xa5, 0x27, 0x7e, 0x61, 0xfb, 0xe6, 0x9f, 0x07, 0x3f,
		0xff, 0xf1, 0xf1, 0x1f, 0xad, 0xdc, 0x7c, 0xfa, 0xe7, 0xa9, 0xef, 0xed, 0xdc, 0xfc, 0x53, 0xfd,
		0xf4, 0x09, 0x2d, 0xb9, 0x96, 0xe2, 0xa0, 0x79, 0x6a, 0xc9, 0x05, 0x37, 0x5d, 0xbe, 0x9b, 0xa2,
		0x45, 0x19, 0x04, 0xe3, 0x1d, 0x5f, 0x44, 0x8b, 0xb2, 0x15, 0x8f, 0x00, 0x2d, 0xca, 0x68, 0x0f,
		0x01, 0x2d, 0xca, 0x96, 0xf4, 0xc4, 0xd1, 0xa2, 0x8c, 0xc2, 0x47, 0x3e, 0x5a, 0x94, 0x55, 0x8a,
		0xc5, 0xdd, 0xaa, 0x66, 0xb7, 0x2e, 0x2b, 0x8f, 0xf5, 0x41, 0xd2, 0x7c, 0x99, 0xf6, 0x4c, 0xda,
		0x98, 0x1e, 0x53, 0x3a, 0x91, 0xc5, 0xd2, 0x6c, 0x47, 0x24, 0xf4, 0x26, 0x23, 0x56, 0x54, 0x41,
		0x6f, 0x32, 0xfa, 0x03, 0xba, 0xd7, 0x9b, 0x6c, 0xae, 0x3e, 0x88, 0xa6, 0x64, 0xb0, 0x3a, 0x4f,
		0xb3, 0x44, 0xec, 0x95, 0x59, 0x47, 0xad, 0x8b, 0xa6, 0x64, 0xb4, 0x4f, 0x4b, 0x3e, 0x72, 0xc4,
		0x0a, 0x5d, 0xc9, 0xd6, 0xc7, 0x42, 0x74, 0x25, 0x9b, 0xbf, 0xcd, 0xe8, 0x4a, 0xb6, 0xd8, 0xc9,
		0xee, 0x1b, 0x7b, 0x2b, 0x55, 0x5c, 0xbb, 0xe1, 0x58, 0xed, 0x03, 0x73, 0xdf, 0x42, 0x5b, 0xb2,
		0xd5, 0x4c, 0x64, 0xd1, 0x96, 0x6c, 0xc5, 0x73, 0xd4, 0x79, 0xba, 0x0e, 0xfa, 0x92, 0x2d, 0xe0,
		0xcd, 0xca, 0x6d, 0x5f, 0xb2, 0x8a, 0x96, 0xe9, 0xcc, 0xac, 0x89, 0x52, 0x1c, 0x0e, 0xe2, 0xef,
		0xdf, 0xf6, 0x68, 0x4f, 0xb0, 0xf4, 0x23, 0xad, 0x58, 0x42, 0x3f, 0xb2, 0xd5, 0x84, 0x68, 0xf4,
		0x23, 0xa3, 0x15, 0xb1, 0xe7, 0xe3, 0x4b, 0xa8, 0x14, 0xad, 0x73, 0xa5, 0x08, 0x7d, 0xc8, 0x72,
		0x3d, 0x47, 0x46, 0x1f, 0x32, 0x2e, 0x95, 0x35, 0x34, 0x22, 0xbb, 0xdf, 0x88, 0xac, 0x62, 0x4f,
		0x9f, 0x11, 0x3a, 0x91, 0xe5, 0x35, 0x48, 0xa5, 0xe7, 0x1b, 0x1e, 0x34, 0xe5, 0xe3, 0xd5, 0x88,
		0x8c, 0x59, 0x4f, 0x41, 0xf4, 0x21, 0x9b, 0xb3, 0xa1, 0xe8, 0x43, 0x86, 0xd9, 0xf3, 0xe3, 0x33,
		0x66, 0xf4, 0x21, 0x5b, 0xfa, 0xa4, 0x18, 0x7d, 0xc8, 0xd6, 0x62, 0x62, 0x83, 0x3e, 0x64, 0x8b,
		0xcd, 0x0f, 0xe8, 0x43, 0x06, 0x61, 0xc3, 0x51, 0xe0, 0x30, 0x16, 0x3a, 0x5c, 0x05, 0x0f, 0x7b,
		0xe1, 0xc3, 0x5e, 0x00, 0xf1, 0x16, 0x42, 0x3c, 0x04, 0x11, 0x13, 0x61, 0xc4, 0x4e, 0x20, 0x65,
		0x06, 0xa3, 0x0f, 0xd9, 0x4a, 0xc5, 0x13, 0xfa, 0x90, 0x41, 0x4c, 0xe5, 0x58, 0x54, 0x71, 0x17,
		0x57, 0xb9, 0x11, 0x59, 0xb9, 0x11, 0x5b, 0xf9, 0x10, 0x5d, 0xbc, 0xc4, 0x17, 0x33, 0x11, 0x96,
		0x21, 0x82, 0x3e, 0x64, 0x44, 0x54, 0x0e, 0xfa, 0x90, 0xad, 0x62, 0x00, 0x68, 0x70, 0x84, 0x3e,
		0x64, 0xaf, 0xfd, 0x40, 0x1f, 0xb2, 0x55, 0x8d, 0x02, 0x7d, 0xc8, 0xd0, 0x87, 0xec, 0x17, 0xfc,
		0x14, 0x82, 0x71, 0x81, 0xbe, 0x88, 0x3e, 0x64, 0x2b, 0x1e, 0x01, 0xfa, 0x90, 0xd1, 0x1e, 0x02,
		0xfa, 0x90, 0x2d, 0xe9, 0x89, 0xa3, 0x0f, 0x19, 0x85, 0x8f, 0xb5, 0xed, 0x43, 0xb6, 0x55, 0xd5,
		0xec, 0x8e, 0xdd, 0x41, 0x33, 0x32, 0xba, 0x95, 0x15, 0x34, 0x23, 0xa3, 0x3f, 0xa0, 0xf7, 0x37,
		0x23, 0x7b, 0xc1, 0x11, 0xd1, 0x91, 0x0c, 0x56, 0xe7, 0x69, 0xbe, 0x88, 0x5d, 0x33, 0xeb, 0xa8,
		0x7a, 0xd1, 0x91, 0x8c, 0xfa, 0xb9, 0xc9, 0xfb, 0x67, 0xad, 0xd0, 0x90, 0x6c, 0x7d, 0x2c, 0x44,
		0x43, 0xb2, 0xf9, 0xdb, 0x8c, 0x86, 0x64, 0x8b, 0x9d, 0xf5, 0xbe, 0xb9, 0xab, 0x52, 0xc3, 0xb2,
		0xbf, 0x7e, 0xdb, 0x6b, 0xb6, 0xd1, 0x8f, 0x6c, 0x35, 0x73, 0x59, 0xf4, 0x23, 0x5b, 0xf1, 0x34,
		0x75, 0x8e, 0x9e, 0x83, 0x76, 0x64, 0x0b, 0x78, 0xaf, 0x72, 0xdc, 0x8e, 0x6c, 0x2a, 0x32, 0x5f,
		0xd3, 0x41, 0x69, 0x0b, 0xdd, 0xc8, 0x56, 0x13, 0xa0, 0xd1, 0x8d, 0x8c, 0x56, 0xbc, 0x9e, 0x8b,
		0x2b, 0xa1, 0x48, 0xb4, 0xce, 0x45, 0x22, 0x34, 0x23, 0xcb, 0xf5, 0xfc, 0x18, 0xcd, 0xc8, 0x98,
		0x14, 0xd5, 0xd0, 0x8b, 0xec, 0x41, 0x2f, 0xb2, 0xec, 0xc7, 0xd1, 0x8a, 0x2c, 0xa7, 0x21, 0x4a,
		0x0f, 0x3c, 0x69, 0x78, 0xbd, 0xff, 0xf3, 0xba, 0x42, 0x76, 0xaf, 0x8d, 0xc8, 0xef, 0x31, 0xea,
		0x43, 0xf6, 0x88, 0xed, 0x68, 0x42, 0x36, 0x0f, 0x33, 0xd1, 0x84, 0x6c, 0x81, 0xd4, 0xa2, 0x09,
		0xd9, 0x32, 0x26, 0xca, 0x68, 0x42, 0xb6, 0xf4, 0xb9, 0x30, 0x9a, 0x90, 0xad, 0xc5, 0x84, 0x86,
		0x4d, 0x13, 0xb2, 0x07, 0xf2, 0x80, 0x5f, 0x43, 0xb2, 0x87, 0x43, 0x40, 0x73, 0xb2, 0x75, 0x16,
		0x3c, 0x1c, 0x85, 0x0f, 0x63, 0x01, 0xc4, 0x55, 0x08, 0xb1, 0x17, 0x44, 0xec, 0x85, 0x11, 0x6f,
		0x81, 0xc4, 0x43, 0x28, 0x31, 0x11, 0x4c, 0xec, 0x84, 0x53, 0x66, 0x30, 0xaf, 0x2e, 0xae, 0x0f,
		0xf2, 0x0c, 0xa7, 0x6e, 0xae, 0x4c, 0x85, 0x13, 0x5b, 0x01, 0xc5, 0x59, 0x48, 0xe5, 0x40, 0x50,
		0x71, 0x17, 0x56, 0xb9, 0x11, 0x58, 0xb9, 0x11, 0x5a, 0xf9, 0x10, 0x5c, 0xbc, 0x84, 0x17, 0x33,
		0x01, 0xc6, 0x56, 0x88, 0x65, 0x86, 0xf7, 0x03, 0x6f, 0x10, 0xf1, 0x0d, 0x96, 0xd3, 0x7c, 0x95,
		0x0e, 0x83, 0x69, 0x7c, 0xe1, 0xd9, 0x39, 0x96, 0xbd, 0x50, 0xcb, 0x83, 0x60, 0xcb, 0x91, 0x70,
		0xcb, 0x8b, 0x80, 0xcb, 0x9d, 0x90, 0xcb, 0x9d, 0xa0, 0xcb, 0x97, 0xb0, 0xe3, 0x29, 0xf0, 0x98,
		0x0a, 0xbd, 0x0c, 0x1d, 0xb6, 0x9d, 0x68, 0x1f, 0x64, 0x0c, 0x21, 0xc7, 0x17, 0x22, 0xf4, 0x98,
		0xee, 0xff, 0xbf, 0x2f, 0xa2, 0x8a, 0x65, 0xc6, 0x63, 0xb0, 0xe4, 0xf8, 0x82, 0x7f, 0xde, 0x73,
		0x86, 0x1d, 0x15, 0xfa, 0x72, 0xc0, 0x7e, 0x24, 0xc9, 0x68, 0x36, 0x63, 0x1f, 0x99, 0x9c, 0x80,
		0x73, 0x0f, 0xcc, 0x43, 0xbb, 0xfe, 0x07, 0xf3, 0x3c, 0x9e, 0x0c, 0xab, 0x18, 0x0f, 0x6b, 0xcf,
		0xdc, 0xff, 0x7e, 0xd4, 0xca, 0xc3, 0x70, 0x4a, 0xf1, 0x70, 0x8e, 0xcd, 0xfa, 0x91, 0x95, 0x87,
		0xd1, 0x6c, 0xc5, 0xa3, 0xa9, 0x37, 0xf7, 0xcd, 0x7a, 0x1e, 0x46, 0x53, 0x8e, 0x47, 0xd3, 0xb1,
		0x1c, 0x9d, 0xf5, 0x50, 0x6e, 0x3e, 0x73, 0x8f, 0xca, 0x76, 0x22, 0x74, 0x73, 0x10, 0x92, 0xef,
		0x45, 0x63, 0xb6, 0x85, 0x87, 0x3b, 0x83, 0x9a, 0xc4, 0x62, 0x76, 0xeb, 0x74, 0x8f, 0x0e, 0x26,
		0x8d, 0x5d, 0x55, 0x6d, 0x2b, 0x07, 0x63, 0x89, 0x23, 0x57, 0x55, 0x2b, 0xe7, 0x60, 0x24, 0x69,
		0x7e, 0xac, 0x6a, 0x25, 0xde, 0x81, 0x18, 0x33, 0x74, 0x24, 0xbe, 0xd7, 0xc4, 0x20, 0xce, 0xad,
		0xbf, 0xb3, 0x51, 0xb0, 0x6f, 0x01, 0x7e, 0x3b, 0x92, 0x1c, 0xb6, 0x02, 0xcf, 0x06, 0xc7, 0xbf,
		0x25, 0xf8, 0xc3, 0xa1, 0xb0, 0x6d, 0x0d, 0xce, 0x37, 0xde, 0x32, 0x8c, 0xb5, 0x7a, 0x76, 0xe8,
		0x99, 0xd1, 0x69, 0x88, 0x07, 0x83, 0x98, 0x16, 0x43, 0x67, 0x07, 0x83, 0xd5, 0xe4, 0x55, 0x98,
		0x8f, 0xd5, 0x64, 0x42, 0xee, 0x80, 0xd5, 0x64, 0x3a, 0x6e, 0x8d, 0xd5, 0x64, 0xe2, 0x03, 0xc2,
		0x6a, 0x32, 0xf4, 0xd3, 0x1b, 0xd1, 0xc9, 0xcf, 0x6a, 0x72, 0x74, 0x1d, 0x29, 0x71, 0xc1, 0x57,
		0x3e, 0x69, 0xcc, 0x2f, 0x39, 0xbd, 0x95, 0x21, 0xcc, 0xaf, 0x51, 0xcc, 0x06, 0xf2, 0xe7, 0xa6,
		0xb1, 0x6b, 0x1a, 0x07, 0x9e, 0xd1, 0x3f, 0xfd, 0xbb, 0x7c, 0x73, 0x72, 0xb2, 0xf1, 0xc2, 0x0b,
		0x7c, 0x63, 0xee, 0x29, 0x67, 0xdc, 0xf2, 0x70, 0x75, 0x67, 0x36, 0x9a, 0xff, 0xfd, 0x2a, 0x74,
		0xff, 0x62, 0x4c, 0x1d, 0x6a, 0x3b, 0xd0, 0x26, 0x4f, 0xf8, 0xc1, 0xa5, 0x17, 0x8c, 0x05, 0xff,
		0xaa, 0x4e, 0x3a, 0x0c, 0xd4, 0x73, 0x56, 0x61, 0x3e, 0xea, 0x39, 0x84, 0x1c, 0x01, 0xf5, 0x1c,
		0x3a, 0x6e, 0x8d, 0x7a, 0x0e, 0xf1, 0x01, 0xa1, 0x9e, 0x03, 0xcd, 0xf4, 0x46, 0x74, 0xf2, 0x53,
		0xcf, 0x19, 0xfb, 0x52, 0x6d, 0x95, 0x72, 0x50, 0xcc, 0xd9, 0x61, 0x3c, 0x84, 0xb6, 0x27, 0x07,
		0x82, 0xfd, 0xac, 0x3a, 0x07, 0x3b, 0x4f, 0x0f, 0x7d, 0x99, 0x8b, 0x2d, 0xb4, 0xc9, 0x60, 0x8e,
		0x27, 0x93, 0xbb, 0x1c, 0xec, 0x9e, 0x4d, 0xc6, 0x73, 0x10, 0x7a, 0x5d, 0xe5, 0x0f, 0x65, 0xcd,
		0x1f, 0xf8, 0xdc, 0x77, 0x4b, 0xdd, 0x8d, 0xc5, 0x62, 0xe0, 0x29, 0xff, 0x52, 0xb0, 0xde, 0x8c,
		0x93, 0x83, 0xb4, 0x7e, 0x37, 0x14, 0x78, 0x57, 0xf9, 0x0b, 0x05, 0xe5, 0xd2, 0x6e, 0x79, 0xb7,
		0xb2, 0x53, 0xda, 0xdd, 0x46, 0x4c, 0x40, 0x4c, 0xc0, 0x04, 0x65, 0x0d, 0xac, 0x47, 0xf9, 0x1f,
		0x39, 0xef, 0xa9, 0x20, 0xf3, 0x53, 0xf8, 0x83, 0x73, 0xc5, 0xbf, 0xfe, 0x3f, 0x19, 0x07, 0x16,
		0x00, 0x56, 0x61, 0x3e, 0x16, 0x00, 0x08, 0x79, 0x02, 0x16, 0x00, 0xe8, 0xb8, 0x35, 0x16, 0x00,
		0x88, 0x0f, 0x08, 0x0b, 0x00, 0x50, 0x4d, 0x6f, 0x44, 0x27, 0x5f, 0x0b, 0x00, 0x5f, 0x72, 0x50,
		0xff, 0xdf, 0x46, 0xfd, 0x7f, 0xc5, 0x1f, 0xa8, 0xff, 0xd3, 0x1a, 0x0c, 0xea, 0xff, 0x5c, 0x42,
		0x31, 0xea, 0xff, 0x04, 0x43, 0x41, 0x1e, 0xeb, 0xff, 0xa5, 0x6d, 0x14, 0xfe, 0x11, 0x0c, 0x30,
		0x31, 0x59, 0x07, 0xeb, 0x51, 0xf8, 0x87, 0xc5, 0xec, 0x53, 0xb3, 0x6e, 0x4a, 0x39, 0x54, 0x69,
		0xf3, 0x5a, 0x96, 0xf7, 0x2f, 0x44, 0xdd, 0x73, 0x71, 0xe1, 0x8d, 0x3c, 0x75, 0x1e, 0x4f, 0xb6,
		0x0b, 0xc3, 0x91, 0x90, 0xdd, 0xa4, 0x60, 0x6e, 0xc8, 0xf4, 0x2a, 0x7e, 0xc3, 0x9f, 0xdc, 0xa2,
		0x5f, 0xb8, 0xff, 0x42, 0xf4, 0xe0, 0x95, 0xc2, 0x68, 0x72, 0x5d, 0x7f, 0x94, 0x7d, 0x55, 0xf0,
		0x23, 0x3f, 0x2a, 0x04, 0xe2, 0x52, 0x04, 0x93, 0x4f, 0x85, 0xc0, 0x97, 0x7f, 0x19, 0xc9, 0x4d,
		0x56, 0x46, 0xcf, 0x53, 0xde, 0x99, 0x17, 0x89, 0x42, 0x10, 0x8d, 0x0a, 0x2a, 0xb8, 0x8c, 0xe2,
		0x3f, 0x0a, 0x17, 0x2a, 0xa9, 0x75, 0x19, 0x59, 0x33, 0x0c, 0x6f, 0x7a, 0xb7, 0x7f, 0x61, 0xfa,
		0x52, 0x94, 0x7d, 0x55, 0xb8, 0x35, 0x27, 0x33, 0x23, 0x4a, 0xee, 0xfb, 0x8f, 0x26, 0x9f, 0x0b,
		0x0f, 0x2f, 0x55, 0x7f, 0xf8, 0x52, 0x21, 0xbd, 0x5a, 0xeb, 0x37, 0x78, 0xf6, 0x9a, 0x7b, 0x35,
		0xd3, 0x33, 0x47, 0xac, 0xcf, 0x1a, 0x31, 0x5d, 0x62, 0xc4, 0x15, 0x71, 0xab, 0x04, 0x1d, 0x57,
		0xc4, 0xad, 0xce, 0x5d, 0x71, 0x45, 0x1c, 0x35, 0x19, 0x8a, 0x2b, 0xe2, 0xa0, 0x69, 0x9e, 0x47,
		0x84, 0xed, 0x92, 0x60, 0x16, 0xf1, 0x03, 0xe1, 0xf5, 0x43, 0xd1, 0xe7, 0x18, 0xf1, 0xa7, 0x1d,
		0x5d, 0x18, 0x9e, 0x02, 0xd2, 0x5b, 0x93, 0xc9, 0xe1, 0xc6, 0x46, 0x3a, 0x49, 0x2a, 0xa4, 0x12,
		0x13, 0x53, 0xa5, 0x35, 0xb6, 0x94, 0xcb, 0x05, 0xe5, 0xdf, 0xc5, 0x35, 0xb7, 0x49, 0x11, 0xcf,
		0xc6, 0xd1, 0x7c, 0x1b, 0x45, 0xe7, 0xaa, 0x31, 0x34, 0xe3, 0x46, 0xd0, 0x8c, 0x1b, 0x3f, 0x73,
		0x89, 0x86, 0x4c, 0x8b, 0xd5, 0x28, 0x52, 0x4f, 0x5e, 0x62, 0xa4, 0x7c, 0xf5, 0x48, 0x85, 0xe3,
		0xae, 0x92, 0x13, 0xe9, 0xde, 0x48, 0xdf, 0x04, 0x7b, 0x32, 0x78, 0xb7, 0x35, 0x79, 0xf2, 0xae,
		0x1d, 0xf9, 0x91, 0x5b, 0x8f, 0x1f, 0xb9, 0x5b, 0x8f, 0x46, 0xae, 0x13, 0x5c, 0xba, 0x87, 0x2a,
		0x7e, 0xb1, 0x31, 0x79, 0x74, 0xe6, 0xf4, 0xb1, 0xba, 0xd3, 0x57, 0xdc, 0xec, 0x5f, 0xe9, 0xfc,
		0x3f, 0x7b, 0x6f, 0xd7, 0xd4, 0x38, 0x92, 0x74, 0x8f, 0xdf, 0xef, 0xa7, 0x50, 0x38, 0x7e, 0x11,
		0x33, 0x13, 0x81, 0x01, 0xbf, 0x00, 0x0d, 0x11, 0x7b, 0x21, 0xb0, 0xe8, 0xd6, 0x8e, 0x31, 0x84,
		0x2d, 0xd8, 0xee, 0x5d, 0xfa, 0x51, 0x08, 0xbb, 0x6c, 0xea, 0x3f, 0xa6, 0x4c, 0x48, 0x32, 0x0d,
		0xcf, 0xb3, 0xf3, 0xdd, 0xff, 0x61, 0xd9, 0x16, 0x2f, 0x86, 0x9d, 0x19, 0x90, 0xac, 0x3a, 0xa5,
		0xe3, 0x8b, 0x86, 0xf6, 0xc0, 0x74, 0x96, 0x7c, 0x32, 0xf3, 0x64, 0x56, 0xd5, 0xc9, 0xe4, 0xd1,
		0xf9, 0xed, 0x40, 0xd9, 0xcb, 0xc7, 0xd4, 0x93, 0x03, 0x0c, 0x66, 0xaa, 0x3f, 0xcf, 0xd3, 0xdb,
		0x42, 0xcd, 0x63, 0x6e, 0x45, 0xdc, 0xc7, 0x61, 0x50, 0x9d, 0xce, 0xa0, 0x7a, 0x35, 0xc6, 0x28,
		0xbc, 0x2b, 0xa1, 0x18, 0x8a, 0x50, 0xa8, 0x3e, 0xce, 0x59, 0x4f, 0xa0, 0x24, 0xb6, 0xec, 0x62,
		0x0c, 0xc2, 0x60, 0x18, 0x57, 0xa5, 0x88, 0x87, 0xf3, 0x04, 0x12, 0x89, 0xd1, 0x8c, 0x7b, 0x56,
		0xc3, 0xc9, 0x34, 0x96, 0x6a, 0x54, 0x15, 0xf7, 0xb1, 0x50, 0x91, 0x9c, 0xa8, 0x68, 0xd3, 0x8a,
		0xa6, 0x57, 0x55, 0xaf, 0x7d, 0x61, 0x35, 0xea, 0x07, 0x97, 0x6a, 0xf6, 0x4d, 0xbd, 0xbe, 0x61,
		0xd5, 0xe7, 0x7f, 0x34, 0x36, 0xac, 0x5a, 0xb3, 0xb6, 0x89, 0x94, 0x13, 0x40, 0xfb, 0xde, 0x4f,
		0xfb, 0xdd, 0x8f, 0x2e, 0x02, 0xd6, 0xfe, 0x43, 0x6f, 0x75, 0x3f, 0x6b, 0x71, 0x67, 0xed, 0x43,
		0xec, 0x0e, 0x95, 0xcc, 0x4a, 0x00, 0xa9, 0xe3, 0xca, 0x8f, 0x6b, 0xa1, 0x98, 0x88, 0xf3, 0x4b,
		0xc4, 0x69, 0x3f, 0x3b, 0x7e, 0xb8, 0x15, 0xd6, 0xdf, 0xad, 0x9f, 0x16, 0x1b, 0x67, 0xd5, 0x71,
		0x34, 0xb8, 0xaa, 0xce, 0xde, 0x8c, 0x0e, 0xdc, 0x9e, 0xdf, 0x75, 0xec, 0xa3, 0x2f, 0xf6, 0xa1,
		0xdb, 0x76, 0xbd, 0x6f, 0xbe, 0xdd, 0xfa, 0x87, 0xdf, 0xb6, 0x3b, 0x7e, 0xcf, 0x6d, 0xfd, 0xc4,
		0xcc, 0xbb, 0xd6, 0xcc, 0x9b, 0xb8, 0x03, 0x93, 0x6e, 0x71, 0x49, 0xf7, 0xc3, 0xfe, 0xc2, 0xe3,
		0x6a, 0x39, 0x7c, 0x42, 0x2d, 0x11, 0xf5, 0x43, 0x79, 0x0b, 0x79, 0x02, 0x35, 0x0d, 0xc5, 0xa7,
		0x6a, 0xfc, 0x60, 0x49, 0xd5, 0x1f, 0x4f, 0x07, 0xc2, 0x8a, 0xaf, 0x85, 0xd5, 0xb6, 0x3b, 0x56,
		0xda, 0xfa, 0xb2, 0x7a, 0x6e, 0xcb, 0xea, 0x4f, 0x54, 0x1c, 0x48, 0x25, 0x42, 0x6b, 0x16, 0x08,
		0x2e, 0xd5, 0xec, 0xa7, 0x96, 0xd4, 0x4e, 0x46, 0x56, 0x82, 0xc9, 0x46, 0x7d, 0x13, 0x2d, 0x42,
		0x00, 0x1f, 0x05, 0x7a, 0x1a, 0x9c, 0x07, 0x4f, 0x50, 0x08, 0xb8, 0xc5, 0x6d, 0xc2, 0x39, 0xa0,
		0x67, 0xb1, 0x3a, 0x43, 0x87, 0xe2, 0x3e, 0x3f, 0x2b, 0x39, 0x9d, 0x2b, 0x39, 0x76, 0xa9, 0x3f,
		0x12, 0x33, 0xb0, 0x76, 0x04, 0x4b, 0xba, 0x13, 0xa8, 0x77, 0x0c, 0xd6, 0x37, 0x46, 0x68, 0xec,
		0x7d, 0x95, 0x04, 0x56, 0x29, 0x52, 0x22, 0xed, 0xdd, 0xef, 0xf1, 0x14, 0xe6, 0x0b, 0xc3, 0x35,
		0x8f, 0x70, 0xcb, 0x93, 0x97, 0x9a, 0x9b, 0x89, 0x72, 0x95, 0x04, 0xe9, 0xea, 0x08, 0xe0, 0x55,
		0x11, 0xb4, 0x7a, 0x10, 0xf6, 0x2a, 0x08, 0x6c, 0xc9, 0x87, 0x79, 0xd5, 0x83, 0x67, 0x49, 0x3e,
		0xf2, 0x91, 0xb7, 0x64, 0x08, 0x42, 0xcf, 0x93, 0x4b, 0xd4, 0x30, 0xc1, 0x2b, 0x1d, 0x1a, 0x9c,
		0x98, 0x8d, 0x72, 0xa4, 0x1d, 0x82, 0xd0, 0xc0, 0x11, 0x1b, 0x44, 0x82, 0x03, 0x4c, 0x74, 0x50,
		0x09, 0x0f, 0x3c, 0xf1, 0x81, 0x27, 0x40, 0xd8, 0x44, 0x08, 0x83, 0x10, 0x81, 0x10, 0x23, 0x38,
		0x82, 0x94, 0x1a, 0x3c, 0x9e, 0xf4, 0x83, 0x71, 0xf5, 0x36, 0x9c, 0xc4, 0xa2, 0x8f, 0xbd, 0x75,
		0xbb, 0xb2, 0x12, 0x4a, 0x8f, 0x90, 0x56, 0x99, 0x45, 0xaf, 0x0c, 0xa0, 0x59, 0xe8, 0x74, 0xcb,
		0x18, 0xda, 0x65, 0x0c, 0xfd, 0x32, 0x83, 0x86, 0x61, 0xd1, 0x31, 0x30, 0x5a, 0x96, 0x42, 0x04,
		0x5f, 0x7a, 0x44, 0xa8, 0xe9, 0x8d, 0x08, 0x03, 0xd4, 0xf3, 0x4d, 0xcb, 0x9e, 0x51, 0x13, 0xd0,
		0x76, 0x47, 0x4d, 0x6f, 0x70, 0xf3, 0x95, 0x37, 0xe9, 0xc5, 0xa1, 0x54, 0x23, 0xec, 0x61, 0x1c,
		0xdb, 0x33, 0x1f, 0x68, 0x9f, 0x1e, 0xd9, 0x6d, 0xff, 0xac, 0x7b, 0xea, 0x39, 0x47, 0x9e, 0x7b,
		0xda, 0x41, 0x1e, 0xca, 0x51, 0x4b, 0x16, 0xe4, 0x76, 0x7e, 0xf5, 0x9d, 0xaf, 0x47, 0xed, 0xf3,
		0x96, 0xd3, 0xaa, 0x70, 0x3e, 0xcd, 0x5a, 0xdd, 0xc2, 0x55, 0x31, 0xb6, 0x4f, 0x3c, 0x47, 0x0f,
		0x4c, 0x43, 0xfe, 0xf5, 0xb5, 0xbc, 0x74, 0xed, 0x03, 0x6b, 0x9b, 0xf2, 0xdc, 0xb4, 0x18, 0x9e,
		0x79, 0x42, 0x6a, 0x29, 0xa5, 0xd6, 0xc3, 0x6a, 0x2a, 0x3d, 0xae, 0xc0, 0x20, 0x6d, 0xa5, 0x74,
		0x51, 0xb8, 0x1a, 0x4b, 0xab, 0x4b, 0x80, 0xd3, 0x5a, 0x42, 0x8d, 0x44, 0x80, 0x7a, 0x20, 0x2b,
		0x6b, 0xc0, 0xd3, 0x07, 0x79, 0xf9, 0x32, 0x60, 0x20, 0x62, 0xf7, 0xf8, 0x68, 0x67, 0xbb, 0xbe,
		0x7f, 0x60, 0xb5, 0xc4, 0x50, 0x2a, 0x19, 0xcb, 0x89, 0xb2, 0x26, 0x43, 0x2b, 0x50, 0x96, 0xdb,
		0xab, 0xba, 0x3d, 0xab, 0x2d, 0xd5, 0x6f, 0x56, 0xaa, 0x9a, 0x64, 0xf5, 0xa6, 0x57, 0xd5, 0x44,
		0xf7, 0x60, 0xd3, 0x5a, 0x8a, 0x1f, 0x2c, 0x6f, 0xf9, 0xd4, 0xf6, 0x37, 0x39, 0x88, 0x57, 0x83,
		0xe6, 0x0c, 0xbe, 0xba, 0xc8, 0xca, 0x9a, 0x8c, 0x9e, 0xc5, 0x9b, 0xad, 0x07, 0x72, 0xa2, 0x2f,
		0xad, 0xfe, 0xaf, 0xaf, 0xef, 0xbc, 0x81, 0x59, 0x62, 0x4b, 0xa9, 0x2d, 0x9a, 0xaf, 0xdd, 0xa5,
		0xb8, 0x51, 0xf8, 0xfc, 0xca, 0x16, 0xd2, 0xac, 0x2b, 0xca, 0x64, 0x1a, 0x1d, 0x3e, 0x20, 0x65,
		0x32, 0x29, 0xcc, 0x95, 0x6f, 0x85, 0xfb, 0x1e, 0xa1, 0xa1, 0x64, 0x37, 0xc6, 0xf6, 0xbc, 0xae,
		0x7b, 0x78, 0xee, 0x39, 0x3d, 0x8a, 0x73, 0xad, 0xb7, 0x70, 0xa5, 0x38, 0x57, 0xc1, 0x35, 0x69,
		0x26, 0x3e, 0x43, 0x81, 0xae, 0x1c, 0x3e, 0x25, 0x33, 0x05, 0xba, 0x66, 0x94, 0xd2, 0x7a, 0xa4,
		0x94, 0x2f, 0xd4, 0x84, 0x66, 0x3f, 0x72, 0xa9, 0x5e, 0xaa, 0x09, 0xe1, 0xf5, 0x1b, 0x29, 0xcf,
		0xc5, 0x48, 0x9d, 0x47, 0xb4, 0xce, 0xcc, 0x9d, 0xd8, 0x1a, 0x2a, 0x73, 0x6b, 0x88, 0xe2, 0x5c,
		0x46, 0xd7, 0xc6, 0x14, 0xe7, 0xd2, 0xbe, 0x95, 0x86, 0x20, 0x29, 0xb3, 0xce, 0x49, 0x3c, 0x52,
		0xfd, 0x66, 0x3f, 0x3e, 0x1c, 0xca, 0x96, 0x99, 0x16, 0x97, 0xe6, 0xea, 0x5f, 0x03, 0x31, 0x0e,
		0x1e, 0xc0, 0x14, 0xcb, 0xe6, 0x36, 0x53, 0xac, 0x2c, 0x0b, 0x33, 0x29, 0x56, 0x96, 0x23, 0x5a,
		0x29, 0x56, 0xb6, 0x8e, 0x8a, 0x98, 0x62, 0x65, 0x6b, 0x2f, 0x7a, 0x29, 0x56, 0x56, 0x8a, 0xaa,
		0x85, 0x62, 0x65, 0xf9, 0xe6, 0x07, 0x8a, 0x95, 0x91, 0xd8, 0x20, 0x12, 0x1c, 0x60, 0xa2, 0x83,
		0x4a, 0x78, 0xe0, 0x89, 0x0f, 0x3c, 0x01, 0xc2, 0x26, 0x42, 0x18, 0x84, 0x08, 0x84, 0x18, 0xc1,
		0x11, 0xa4, 0xd4, 0xe0, 0xa0, 0x7a, 0x25, 0x63, 0xdc, 0xbd, 0xeb, 0xb9, 0xf9, 0x94, 0x25, 0x23,
		0x81, 0x32, 0x8b, 0x48, 0x19, 0x40, 0xa8, 0xd0, 0x89, 0x95, 0x31, 0x04, 0xcb, 0x18, 0xa2, 0x65,
		0x06, 0xe1, 0xc2, 0x22, 0x5e, 0x60, 0x04, 0x2c, 0x85, 0x08, 0xbe, 0x2c, 0xd9, 0xd5, 0x64, 0x32,
		0x16, 0x01, 0xb4, 0x24, 0x59, 0x8d, 0x47, 0x98, 0xca, 0xee, 0x8c, 0x15, 0x8c, 0xfd, 0xe4, 0x37,
		0xbd, 0x10, 0x61, 0x6b, 0x99, 0x05, 0x06, 0x0b, 0x0c, 0x16, 0x18, 0x2c, 0x30, 0x58, 0x60, 0xb0,
		0xc0, 0x60, 0x81, 0xc1, 0x02, 0xe3, 0x4f, 0x46, 0xfc, 0xa9, 0x54, 0x71, 0xa3, 0x0e, 0x5c, 0x5f,
		0xec, 0x01, 0x9a, 0xde, 0x0d, 0xd4, 0x88, 0x12, 0x5b, 0x05, 0x3c, 0xf8, 0x13, 0xa9, 0xf0, 0xe5,
		0xa4, 0x2e, 0x82, 0xf1, 0x54, 0x60, 0xca, 0x45, 0x3e, 0x5b, 0xc7, 0x71, 0x18, 0x24, 0x03, 0x65,
		0x5a, 0x72, 0x24, 0x51, 0xf5, 0x2f, 0x9f, 0xc7, 0x54, 0x31, 0x0a, 0x62, 0x79, 0x27, 0x20, 0xe5,
		0x16, 0x81, 0xd3, 0xf0, 0x73, 0x17, 0x0f, 0xee, 0xcd, 0x71, 0xf1, 0x66, 0x7d, 0xbf, 0xb9, 0xbf,
		0xbb, 0x57, 0xdf, 0xdf, 0xa1, 0xaf, 0xd3, 0xd7, 0x59, 0x20, 0x00, 0x5b, 0x4d, 0x91, 0xb7, 0x32,
		0x5b, 0x4a, 0x91, 0xb7, 0x7c, 0xed, 0x2e, 0xcd, 0xcd, 0xd4, 0x64, 0x2b, 0x82, 0xfa, 0x6e, 0xe5,
		0xb1, 0x90, 0xfa, 0x6e, 0xd9, 0xdb, 0x8c, 0x27, 0x73, 0x0e, 0x78, 0xfa, 0xbf, 0x7b, 0x7c, 0xb4,
		0xf7, 0xa9, 0xb6, 0x7d, 0xb0, 0xd0, 0x4c, 0xf6, 0xc2, 0x60, 0x38, 0x94, 0x7d, 0xcb, 0x51, 0x23,
		0xa9, 0x84, 0x08, 0xa5, 0x1a, 0x59, 0x3f, 0x7b, 0xce, 0x2f, 0xd6, 0x89, 0x88, 0x43, 0xd9, 0xbf,
		0x54, 0xce, 0x7d, 0x2c, 0x54, 0x24, 0x27, 0x2a, 0xda, 0x4c, 0xe5, 0x93, 0x1b, 0x8d, 0x83, 0x54,
		0x52, 0xb9, 0xde, 0xd8, 0xb0, 0x6a, 0xcd, 0xda, 0x86, 0x55, 0x4f, 0xfe, 0x56, 0x6f, 0x6c, 0xf2,
		0x62, 0x41, 0xfe, 0x76, 0x1b, 0xa0, 0x5d, 0x6e, 0xd6, 0xdd, 0x82, 0x35, 0xb8, 0x15, 0xb9, 0x7f,
		0xc9, 0xac, 0xfc, 0xbe, 0x41, 0x4d, 0xd6, 0xb2, 0xa7, 0xeb, 0x77, 0xeb, 0x4b, 0xb6, 0x9c, 0xb6,
		0xfd, 0x8d, 0x72, 0xac, 0xeb, 0xcd, 0xc5, 0x94, 0x63, 0x2d, 0x38, 0x0d, 0x7f, 0xd4, 0x5d, 0x78,
		0xcc, 0x34, 0x87, 0x0f, 0xc8, 0x08, 0x25, 0x56, 0xf7, 0xa5, 0x6a, 0x64, 0xd2, 0xf2, 0x79, 0x22,
		0x18, 0x39, 0x51, 0xe3, 0x87, 0x54, 0x35, 0x72, 0xc9, 0xe9, 0x2e, 0x55, 0x02, 0xc4, 0xa5, 0x74,
		0x64, 0xa3, 0x41, 0x25, 0xd6, 0x62, 0x22, 0x33, 0x95, 0x58, 0xf5, 0x0a, 0xd4, 0x99, 0xb9, 0x13,
		0xf7, 0x6f, 0x58, 0xc3, 0xe9, 0x5c, 0xc3, 0xb1, 0x8b, 0xfd, 0x91, 0x88, 0x41, 0x25, 0x56, 0x8d,
		0xf7, 0xbb, 0x28, 0xc2, 0xba, 0x22, 0xc2, 0xda, 0x4a, 0x9e, 0x0b, 0xf5, 0x57, 0x4d, 0x8b, 0x46,
		0x4f, 0xb4, 0x4c, 0xab, 0x77, 0x41, 0x28, 0x31, 0x62, 0xd2, 0x2b, 0x4a, 0xac, 0x4f, 0xac, 0xa7,
		0x26, 0x6b, 0x16, 0x66, 0x52, 0x93, 0x35, 0x47, 0xdc, 0x52, 0x93, 0x75, 0x1d, 0xb5, 0x31, 0x35,
		0x59, 0xd7, 0x5e, 0xfe, 0x52, 0x93, 0xb5, 0x14, 0xf5, 0x0b, 0x35, 0x59, 0xf3, 0xcd, 0x0f, 0xd4,
		0x64, 0x25, 0xb1, 0x41, 0x24, 0x38, 0xc0, 0x44, 0x07, 0x95, 0xf0, 0xc0, 0x13, 0x1f, 0x78, 0x02,
		0x84, 0x4d, 0x84, 0x30, 0x08, 0x11, 0x08, 0x31, 0x82, 0x23, 0x48, 0xa9, 0xc1, 0x94, 0x4c, 0x2a,
		0x8c, 0x38, 0x51, 0x32, 0x89, 0x44, 0xca, 0x60, 0x42, 0x85, 0x4e, 0xac, 0x8c, 0x21, 0x58, 0xc6,
		0x10, 0x2d, 0x33, 0x08, 0x17, 0x16, 0xf1, 0x02, 0x23, 0x60, 0x29, 0x44, 0x28, 0x99, 0x54, 0x38,
		0xbf, 0xa1, 0x64, 0xd2, 0xba, 0x5f, 0x94, 0x4c, 0x2a, 0x76, 0x11, 0x94, 0x4c, 0xd2, 0x35, 0xa6,
		0x52, 0x32, 0x49, 0x03, 0x17, 0xa7, 0x64, 0x12, 0x7d, 0x9d, 0xbe, 0x6e, 0x68, 0x81, 0x80, 0x6b,
		0x35, 0x25, 0x93, 0xca, 0x6c, 0x29, 0x25, 0x93, 0xf2, 0xb5, 0xbb, 0x5c, 0x47, 0xc8, 0x1f, 0x8f,
		0xa3, 0x52, 0x3c, 0xa9, 0x3c, 0x16, 0x52, 0x3c, 0x29, 0x7b, 0x9b, 0x29, 0x9e, 0x94, 0x27, 0x47,
		0xce, 0x52, 0x3c, 0x69, 0x27, 0x55, 0x79, 0xa9, 0x37, 0x36, 0x6a, 0xcd, 0xda, 0x46, 0x7d, 0xf6,
		0x2d, 0x85, 0x93, 0xd6, 0x62, 0x37, 0x85, 0x93, 0x74, 0xe0, 0x66, 0x59, 0x0b, 0x27, 0xbd, 0xed,
		0x52, 0x64, 0xff, 0x25, 0xb3, 0x92, 0xa2, 0x49, 0x4c, 0xd3, 0x1f, 0x53, 0x81, 0xf1, 0x2f, 0xec,
		0xae, 0x6b, 0x7b, 0xee, 0x69, 0x87, 0xf2, 0x49, 0xeb, 0xcd, 0xc8, 0x94, 0x4f, 0x2a, 0x38, 0x19,
		0x67, 0xe7, 0x38, 0x14, 0x52, 0xca, 0xe1, 0xa3, 0x32, 0x42, 0x48, 0xe9, 0x54, 0x8d, 0x1f, 0x2c,
		0xf9, 0xba, 0xfc, 0x4b, 0xda, 0x0d, 0x7a, 0x22, 0x04, 0x33, 0x0b, 0x0a, 0x97, 0xea, 0x89, 0x08,
		0xcc, 0xa3, 0xfc, 0xcb, 0x0e, 0xd5, 0x94, 0x8a, 0x09, 0xd4, 0x54, 0x53, 0xd2, 0x2b, 0x6e, 0x67,
		0xeb, 0x53, 0xdc, 0xdf, 0x61, 0x85, 0xa7, 0x73, 0x85, 0xc7, 0xde, 0xf6, 0x47, 0xc2, 0x06, 0x25,
		0x95, 0x20, 0xf6, 0xc3, 0x28, 0xae, 0xf4, 0xba, 0xb8, 0xd2, 0x45, 0xfa, 0x80, 0xa8, 0xb2, 0x64,
		0x5a, 0x80, 0x9a, 0xeb, 0x14, 0xc9, 0x01, 0x98, 0xb0, 0x92, 0x1c, 0x50, 0x4b, 0x29, 0x13, 0x33,
		0xa9, 0xa5, 0x94, 0x23, 0x54, 0xa9, 0xa5, 0xb4, 0x8e, 0xca, 0x98, 0x5a, 0x4a, 0x6b, 0x2f, 0x7e,
		0xa9, 0xa5, 0x54, 0x8a, 0xc2, 0x85, 0x5a, 0x4a, 0xf9, 0xe6, 0x07, 0x6a, 0x29, 0x91, 0xd8, 0x20,
		0x12, 0x1c, 0x60, 0xa2, 0x83, 0x4a, 0x78, 0xe0, 0x89, 0x0f, 0x3c, 0x01, 0xc2, 0x26, 0x42, 0x18,
		0x84, 0x08, 0x84, 0x18, 0xc1, 0x11, 0xa4, 0xd4, 0xe0, 0xf1, 0xa4, 0x1f, 0x8c, 0x71, 0x37, 0xb2,
		0xe7, 0xe6, 0x53, 0x4b, 0x89, 0x04, 0xca, 0x2c, 0x22, 0x65, 0x00, 0xa1, 0x42, 0x27, 0x56, 0xc6,
		0x10, 0x2c, 0x63, 0x88, 0x96, 0x19, 0x84, 0x0b, 0x8b, 0x78, 0x81, 0x11, 0xb0, 0x14, 0x22, 0xd4,
		0x52, 0x2a, 0x9c, 0xdf, 0x50, 0x4b, 0x69, 0xdd, 0x2f, 0x6a, 0x29, 0x15, 0xbb, 0x08, 0x6a, 0x29,
		0xe9, 0x1a, 0x53, 0xa9, 0xa5, 0xa4, 0x81, 0x8b, 0x53, 0x4b, 0x89, 0xbe, 0x4e, 0x5f, 0x37, 0xb4,
		0x40, 0xc0, 0xb5, 0xfa, 0x3b, 0x0b, 0xb1, 0x1c, 0xdd, 0x11, 0x50, 0xc7, 0x63, 0x65, 0x0d, 0x78,
		0xba, 0x1e, 0x06, 0x55, 0x06, 0x4f, 0x74, 0x3f, 0x76, 0x1a, 0xdb, 0x7b, 0x4b, 0x91, 0x82, 0x47,
		0x0d, 0x02, 0x4b, 0x2a, 0xab, 0x37, 0xbd, 0xbd, 0x9d, 0x84, 0xb1, 0x35, 0x19, 0x5a, 0x9f, 0x85,
		0x12, 0x61, 0x30, 0x96, 0xff, 0x2b, 0x06, 0x97, 0xea, 0x64, 0x3a, 0x8e, 0x65, 0x75, 0x79, 0x0a,
		0xda, 0x6a, 0x07, 0x57, 0x62, 0x6c, 0xf5, 0x7e, 0xc8, 0xb8, 0x7f, 0x9d, 0xa8, 0x1a, 0x7c, 0x3e,
		0x39, 0x6b, 0xf7, 0x7e, 0x79, 0xa2, 0x62, 0x90, 0x88, 0x18, 0x5c, 0xaa, 0xe7, 0x2a, 0x06, 0x16,
		0x98, 0x32, 0xc8, 0xca, 0x33, 0x04, 0x6f, 0xc1, 0x3e, 0x76, 0x16, 0xf0, 0x95, 0x43, 0x56, 0xd6,
		0x64, 0x4a, 0x57, 0x36, 0x5d, 0xd0, 0x0b, 0x65, 0x91, 0x62, 0x9d, 0x96, 0xec, 0x8f, 0x56, 0x9b,
		0xc4, 0xfe, 0x78, 0xa7, 0x3f, 0x17, 0x7e, 0x77, 0x33, 0x89, 0x05, 0xee, 0x29, 0x88, 0x85, 0xfd,
		0x3c, 0x06, 0xb1, 0x0e, 0xb3, 0x79, 0x0c, 0xa2, 0x40, 0xa4, 0xf3, 0x18, 0x84, 0x0e, 0xdc, 0x9b,
		0xc7, 0x20, 0xb4, 0x23, 0xda, 0x3c, 0x06, 0x41, 0x56, 0xf3, 0x0a, 0x44, 0x78, 0x0c, 0xa2, 0x70,
		0x7e, 0xc3, 0x63, 0x10, 0xeb, 0x7e, 0xf1, 0x18, 0x44, 0xb1, 0x8b, 0xe0, 0x31, 0x08, 0x5d, 0x63,
		0x2a, 0x8f, 0x41, 0x68, 0xe0, 0xe2, 0x3c, 0x06, 0x41, 0x5f, 0xa7, 0xaf, 0x1b, 0x5a, 0x20, 0xe0,
		0x5a, 0xcd, 0x63, 0x10, 0x79, 0xba, 0x23, 0x8f, 0x41, 0xb0, 0x32, 0xc8, 0xa4, 0x1e, 0xe6, 0x31,
		0x88, 0xf7, 0x3f, 0x43, 0x1e, 0x83, 0xd0, 0x77, 0x4d, 0x3c, 0x06, 0xc1, 0x63, 0x10, 0x64, 0x7f,
		0x64, 0x7f, 0x86, 0x3d, 0x5f, 0xca, 0x6b, 0x64, 0x1a, 0x53, 0x39, 0x50, 0x54, 0x6f, 0x01, 0x65,
		0x39, 0xe0, 0x0c, 0xd1, 0xf2, 0x58, 0xc8, 0x19, 0xa2, 0xd9, 0xdb, 0xcc, 0xb9, 0x64, 0xf9, 0xd6,
		0xcf, 0xef, 0x1e, 0xaf, 0xe4, 0xb6, 0x38, 0x8a, 0x6c, 0xbd, 0xb5, 0x2d, 0x47, 0x91, 0x15, 0x5c,
		0xb6, 0x7e, 0xc8, 0x57, 0x78, 0x52, 0x39, 0x87, 0x4f, 0xc7, 0xe0, 0xe9, 0x63, 0x72, 0x20, 0x54,
		0x2c, 0x87, 0x52, 0x84, 0x2f, 0x86, 0x24, 0xcd, 0x7e, 0xe4, 0x52, 0xbd, 0x1c, 0x92, 0xd4, 0xe4,
		0xd8, 0xb1, 0x42, 0x82, 0x32, 0xc7, 0x8e, 0xe9, 0x15, 0xa3, 0x33, 0x72, 0x26, 0xb6, 0x7f, 0xca,
		0xdc, 0xfe, 0xe1, 0xbc, 0x31, 0xa3, 0xeb, 0x60, 0xce, 0x1b, 0xd3, 0xb6, 0x5d, 0xc6, 0x11, 0x63,
		0x2b, 0x23, 0xc6, 0xdc, 0x01, 0xc7, 0x8a, 0x19, 0x17, 0x87, 0xe6, 0x53, 0xba, 0xc6, 0x93, 0x28,
		0x02, 0x1b, 0x2c, 0x96, 0x98, 0xcc, 0xd1, 0x62, 0x59, 0x98, 0xc9, 0xd1, 0x62, 0x39, 0x82, 0x95,
		0xa3, 0xc5, 0xd6, 0x51, 0xfd, 0x72, 0xb4, 0xd8, 0xda, 0x0b, 0x5c, 0x8e, 0x16, 0x2b, 0x45, 0x8d,
		0xc2, 0xd1, 0x62, 0xf9, 0xe6, 0x07, 0x8e, 0x16, 0x23, 0xb1, 0x41, 0x24, 0x38, 0xc0, 0x44, 0x07,
		0x95, 0xf0, 0xc0, 0x13, 0x1f, 0x78, 0x02, 0x84, 0x4d, 0x84, 0x30, 0x08, 0x11, 0x08, 0x31, 0x82,
		0x23, 0x48, 0xa9, 0xc1, 0x41, 0xf5, 0x4a, 0xc6, 0xb8, 0xbb, 0xd4, 0x73, 0xf3, 0xa9, 0xa9, 0x45,
		0x02, 0x65, 0x16, 0x91, 0x32, 0x80, 0x50, 0xa1, 0x13, 0x2b, 0x63, 0x08, 0x96, 0x31, 0x44, 0xcb,
		0x0c, 0xc2, 0x85, 0x45, 0xbc, 0xc0, 0x08, 0x58, 0x0a, 0x11, 0x7c, 0x4d, 0xad, 0xab, 0xc9, 0x64,
		0x2c, 0x02, 0x05, 0x2c, 0xaa, 0x55, 0xab, 0xf1, 0xc0, 0x52, 0xd9, 0x9d, 0x11, 0x68, 0x4b, 0xf9,
		0x4d, 0x4f, 0x44, 0xd9, 0x62, 0x66, 0xa1, 0xc1, 0x42, 0x83, 0x85, 0x06, 0x0b, 0x0d, 0x16, 0x1a,
		0x2c, 0x34, 0x58, 0x68, 0xb0, 0xd0, 0xf8, 0x93, 0x11, 0x9f, 0xe2, 0xbd, 0x05, 0x98, 0x4e, 0xf1,
		0xde, 0x82, 0x1e, 0x3c, 0xc5, 0x7b, 0x35, 0x5a, 0x07, 0x05, 0x3d, 0x99, 0x86, 0x73, 0x70, 0x71,
		0x8a, 0xf7, 0xd2, 0xd7, 0xe9, 0xeb, 0x86, 0x16, 0x08, 0xb8, 0x56, 0x53, 0xbe, 0xad, 0xcc, 0x96,
		0x52, 0xbe, 0x2d, 0x5f, 0xbb, 0x4b, 0x73, 0x1f, 0x75, 0x3c, 0x89, 0x22, 0x0a, 0xb8, 0x95, 0xc7,
		0x42, 0x0a, 0xb8, 0x65, 0x6f, 0x33, 0x9e, 0x4a, 0x3a, 0xe0, 0x25, 0x80, 0xee, 0xf1, 0xd1, 0xde,
		0xa7, 0xda, 0xf6, 0x52, 0x50, 0xd9, 0x0b, 0x83, 0xe1, 0x50, 0xf6, 0x2d, 0x47, 0x8d, 0xa4, 0x12,
		0x22, 0x4c, 0xf4, 0x91, 0x3d, 0xe7, 0x17, 0xeb, 0x44, 0xc4, 0xa1, 0xec, 0x5f, 0xaa, 0x47, 0xc5,
		0xe5, 0x27, 0x7a, 0xc9, 0xbb, 0x89, 0x60, 0xb2, 0x95, 0x88, 0x24, 0x37, 0x36, 0xac, 0x5a, 0xb3,
		0xb6, 0x61, 0x21, 0xea, 0x9c, 0x9b, 0x70, 0xbf, 0x00, 0x55, 0xc7, 0xdc, 0xac, 0x2b, 0x06, 0x6b,
		0x70, 0x2b, 0x52, 0xff, 0x92, 0x59, 0xf9, 0x7d, 0x83, 0xa2, 0xab, 0x65, 0x4f, 0xd7, 0xef, 0x16,
		0x92, 0x6c, 0x9f, 0xf6, 0x7a, 0x94, 0x5d, 0x5d, 0x6f, 0x2a, 0xa6, 0xec, 0x6a, 0xc1, 0x59, 0xf8,
		0x83, 0xde, 0xc2, 0xb3, 0xa6, 0x39, 0x7c, 0x3e, 0x06, 0x0b, 0xaf, 0x8e, 0x27, 0x51, 0xf4, 0x8a,
		0x4a, 0xe4, 0x92, 0xd0, 0x5d, 0xaa, 0xa5, 0x4a, 0x64, 0x63, 0x77, 0x93, 0xa2, 0xab, 0x85, 0x84,
		0x64, 0x8a, 0xae, 0xea, 0x15, 0xa1, 0x33, 0x70, 0x24, 0x6e, 0xd8, 0xb0, 0x6a, 0xd3, 0xb9, 0x6a,
		0x63, 0xdf, 0xfa, 0x23, 0xb1, 0x82, 0x82, 0xab, 0xfa, 0x6e, 0x70, 0x51, 0x72, 0x75, 0x45, 0x72,
		0xb5, 0x3d, 0x7b, 0x2c, 0x14, 0x5d, 0x35, 0x2d, 0x16, 0xcd, 0xaf, 0x97, 0xcd, 0x9c, 0x50, 0x24,
		0xe7, 0xa3, 0x92, 0xda, 0x11, 0x4c, 0x7f, 0xf5, 0xa5, 0xf5, 0x94, 0x62, 0xcd, 0xc2, 0x4c, 0x4a,
		0xb1, 0xe6, 0x88, 0x5b, 0x4a, 0xb1, 0xae, 0xa3, 0x26, 0xa6, 0x14, 0xeb, 0xda, 0xcb, 0x5e, 0x4a,
		0xb1, 0x96, 0xa2, 0x7a, 0xa1, 0x14, 0x6b, 0xbe, 0xf9, 0x81, 0x52, 0xac, 0x24, 0x36, 0x88, 0x04,
		0x07, 0x98, 0xe8, 0xa0, 0x12, 0x1e, 0x78, 0xe2, 0x03, 0x4f, 0x80, 0xb0, 0x89, 0x10, 0x06, 0x21,
		0x02, 0x21, 0x46, 0x70, 0x04, 0x29, 0x35, 0x38, 0x46, 0x54, 0x12, 0x48, 0xd3, 0x0c, 0x40, 0xdf,
		0xe7, 0x2d, 0xda, 0x44, 0x7d, 0x24, 0xd2, 0x28, 0x83, 0xe9, 0x14, 0x3a, 0xad, 0x32, 0x86, 0x5e,
		0x19, 0x43, 0xb3, 0xcc, 0xa0, 0x5b, 0x58, 0xb4, 0x0b, 0x8c, 0x7e, 0xa5, 0x10, 0xc1, 0xd7, 0x47,
		0x12, 0x6a, 0x7a, 0x23, 0xc2, 0x00, 0xf5, 0x5c, 0xd7, 0xb2, 0x37, 0xd4, 0x04, 0xb4, 0xdd, 0x51,
		0xd3, 0x1b, 0xdc, 0x7c, 0xe5, 0x4d, 0x7a, 0x71, 0x28, 0xd5, 0x08, 0x5a, 0x8c, 0xa4, 0xb2, 0x3d,
		0xf3, 0x01, 0xe7, 0xab, 0xd7, 0xb5, 0x7d, 0xaf, 0x6b, 0x1f, 0x1f, 0xbb, 0x47, 0x15, 0x60, 0x6d,
		0x98, 0xda, 0x6c, 0x35, 0xe7, 0x9d, 0xb3, 0xee, 0xa9, 0xe7, 0x1c, 0x79, 0x4e, 0x0b, 0x79, 0x2d,
		0xf5, 0xd9, 0x5a, 0x7a, 0x5f, 0xec, 0x2e, 0xf6, 0x32, 0x1a, 0xc9, 0x61, 0xcd, 0x8e, 0xe3, 0x9f,
		0x76, 0x1c, 0xe4, 0x75, 0x34, 0x67, 0xeb, 0x38, 0x6b, 0x9f, 0xf7, 0xd0, 0x17, 0xb2, 0x93, 0x78,
		0x7c, 0xe7, 0x8b, 0xdd, 0x39, 0x72, 0x5a, 0x15, 0x4c, 0x71, 0x98, 0x0d, 0xd4, 0x94, 0xe1, 0xaa,
		0x18, 0x3b, 0x5f, 0xa4, 0xc0, 0x39, 0xb0, 0x80, 0x25, 0xab, 0x5e, 0x64, 0x3c, 0x68, 0xb5, 0xaa,
		0x34, 0xb8, 0x1e, 0x58, 0x0d, 0xe0, 0x55, 0xa4, 0xa1, 0xf5, 0xc0, 0x6a, 0x02, 0x2f, 0x63, 0x91,
		0xb0, 0x0f, 0xac, 0x3a, 0xf0, 0x22, 0x9e, 0x32, 0xa8, 0x03, 0xab, 0x46, 0x01, 0x31, 0x5a, 0x0c,
		0xdf, 0xa9, 0x68, 0xcb, 0x28, 0xb6, 0xe3, 0x38, 0xc4, 0xec, 0x56, 0x9c, 0x48, 0xe5, 0x8c, 0xc5,
		0x8d, 0x50, 0xa8, 0xda, 0x8a, 0x95, 0x93, 0xe0, 0xfe, 0xc9, 0x0a, 0x6a, 0x9f, 0x9a, 0xcd, 0xdd,
		0xbd, 0x66, 0x73, 0x7b, 0xaf, 0xb1, 0xb7, 0xbd, 0xbf, 0xb3, 0x53, 0xdb, 0xad, 0x01, 0xd2, 0x89,
		0xca, 0x69, 0x38, 0x10, 0xa1, 0x18, 0x1c, 0x3e, 0x54, 0x0e, 0x2c, 0x35, 0x1d, 0x8f, 0x91, 0x97,
		0x70, 0x1e, 0x89, 0x10, 0x52, 0xec, 0x12, 0x2d, 0x12, 0x01, 0x2a, 0x6a, 0xad, 0xac, 0x01, 0x4f,
		0x61, 0xeb, 0xe5, 0x0b, 0xb8, 0x06, 0x7b, 0xa2, 0xc0, 0xb5, 0xd3, 0xd8, 0xde, 0x5b, 0x4a, 0x05,
		0x3d, 0x2a, 0x01, 0x59, 0x52, 0x59, 0xbd, 0xe9, 0xed, 0xed, 0x24, 0x8c, 0xad, 0xc9, 0xd0, 0xfa,
		0x2c, 0x94, 0x08, 0x83, 0xb1, 0xfc, 0x5f, 0x31, 0xb8, 0x54, 0x27, 0xd3, 0x71, 0x2c, 0xab, 0xcb,
		0xeb, 0x4b, 0x96, 0xd5, 0x0e, 0xae, 0xc4, 0xd8, 0xea, 0xfd, 0x90, 0x71, 0xff, 0x3a, 0x11, 0x17,
		0xfa, 0x7c, 0x72, 0xd6, 0xee, 0xfd, 0xf2, 0x28, 0x26, 0x54, 0xdf, 0x3e, 0xb8, 0x54, 0x0b, 0x35,
		0xa1, 0x7a, 0x63, 0xa3, 0xd6, 0xac, 0x6d, 0xd4, 0x67, 0xdf, 0x62, 0x09, 0x74, 0xad, 0x12, 0x75,
		0xec, 0xed, 0xd2, 0x74, 0x1d, 0x06, 0x08, 0x78, 0xad, 0xac, 0xc9, 0x94, 0x1d, 0xd4, 0x74, 0x41,
		0x2f, 0x04, 0xbe, 0x0a, 0xf6, 0x5a, 0x4a, 0x59, 0xd3, 0xea, 0xff, 0xfa, 0xa2, 0x94, 0x75, 0x99,
		0x2d, 0xa5, 0x94, 0x75, 0xbe, 0x76, 0x97, 0xe6, 0xa6, 0xff, 0x8b, 0x7b, 0xc3, 0x54, 0xb5, 0x2e,
		0x8f, 0x85, 0x54, 0xb5, 0xce, 0xde, 0x66, 0x2a, 0x64, 0xe6, 0x5b, 0x4e, 0xbf, 0x5b, 0xf3, 0x6f,
		0xb1, 0x59, 0xe2, 0x9e, 0x76, 0x7c, 0xef, 0xdb, 0x99, 0x43, 0xb1, 0xcc, 0xf5, 0x96, 0xbd, 0x14,
		0xcb, 0x2c, 0xb8, 0xa2, 0xcd, 0xce, 0x71, 0xa8, 0x9b, 0x99, 0xc3, 0x47, 0x65, 0xb0, 0x6e, 0xe6,
		0x23, 0xc3, 0x9c, 0xab, 0xfa, 0x3d, 0x57, 0xfe, 0xbb, 0x54, 0x4f, 0xa4, 0xff, 0xe6, 0x3f, 0x50,
		0xdf, 0xa6, 0x7e, 0x66, 0x31, 0x51, 0x9a, 0xfa, 0x99, 0x7a, 0x05, 0xed, 0x0c, 0x1d, 0x8a, 0xdd,
		0xa2, 0x32, 0x77, 0x8b, 0xa8, 0xa3, 0x69, 0x74, 0xa5, 0x4c, 0x1d, 0x4d, 0x8c, 0xee, 0x1a, 0x25,
		0x35, 0x57, 0x24, 0x35, 0xcf, 0xd2, 0x27, 0x94, 0x5c, 0x53, 0xa3, 0xb8, 0xa6, 0x69, 0x01, 0xaa,
		0x72, 0x13, 0xdc, 0x57, 0x13, 0x67, 0xb8, 0x0a, 0xd4, 0xe0, 0x87, 0x1c, 0x24, 0x4e, 0x0f, 0x22,
		0xad, 0xf9, 0x8a, 0xed, 0x14, 0xd6, 0xcc, 0xc2, 0x4c, 0x0a, 0x6b, 0xe6, 0x88, 0x5a, 0x0a, 0x6b,
		0xae, 0xa3, 0x58, 0xa6, 0xb0, 0xe6, 0xda, 0xeb, 0x61, 0x0a, 0x6b, 0x96, 0xa2, 0x9c, 0xa1, 0xb0,
		0x66, 0xbe, 0xf9, 0x81, 0xc2, 0x9a, 0x24, 0x36, 0x88, 0x04, 0x07, 0x98, 0xe8, 0xa0, 0x12, 0x1e,
		0x78, 0xe2, 0x03, 0x4f, 0x80, 0xb0, 0x89, 0x10, 0x06, 0x21, 0x02, 0x21, 0x46, 0x70, 0x04, 0x29,
		0x35, 0x18, 0xa7, 0xf5, 0xf3, 0x66, 0xae, 0x41, 0xe9, 0x00, 0xbd, 0x45, 0xa0, 0x28, 0xb1, 0x49,
		0x42, 0x65, 0x30, 0xb1, 0x42, 0x27, 0x58, 0xc6, 0x10, 0x2d, 0x63, 0x08, 0x97, 0x19, 0xc4, 0x0b,
		0x8b, 0x80, 0x81, 0x11, 0xb1, 0x14, 0x22, 0xf8, 0x12, 0x9b, 0x52, 0x08, 0x31, 0x1c, 0x4f, 0x82,
		0xb8, 0x51, 0x07, 0x96, 0xd8, 0xdc, 0x07, 0x34, 0xbd, 0x2d, 0xd4, 0x28, 0x21, 0xc6, 0xbc, 0xa3,
		0xbf, 0xe6, 0x27, 0x7f, 0x22, 0x15, 0xfe, 0xdd, 0xf2, 0x8b, 0x60, 0x3c, 0x15, 0xd8, 0x82, 0x5c,
		0xc9, 0x3a, 0x8e, 0xc3, 0x20, 0x39, 0x06, 0xd2, 0x92, 0x23, 0x89, 0x2a, 0xa0, 0xf3, 0x3c, 0xb2,
		0x8a, 0x51, 0x10, 0xcb, 0x3b, 0x01, 0xa9, 0xd7, 0x02, 0x9c, 0x8c, 0x9f, 0xbb, 0x78, 0x70, 0x4f,
		0x17, 0xa7, 0x8b, 0xd3, 0xc5, 0x4d, 0xaa, 0x0e, 0x70, 0xad, 0xfe, 0xce, 0x2a, 0x2c, 0x47, 0x77,
		0xa4, 0x68, 0x17, 0x0b, 0x82, 0x4c, 0x8a, 0xe1, 0xb9, 0xfc, 0xcf, 0xce, 0x2b, 0xf2, 0x3f, 0xc3,
		0x49, 0x68, 0x79, 0x61, 0x30, 0x1c, 0xca, 0xbe, 0xe5, 0xa8, 0x91, 0x54, 0x42, 0x84, 0x52, 0x8d,
		0x36, 0x2f, 0xd5, 0xf2, 0xc6, 0xcd, 0xfe, 0x81, 0x45, 0x21, 0x2e, 0x6d, 0xdb, 0x04, 0x14, 0xe2,
		0xd2, 0x7f, 0x41, 0xab, 0x42, 0x5c, 0x59, 0x7b, 0x22, 0x79, 0x1a, 0xad, 0x36, 0x89, 0xa7, 0xf1,
		0x18, 0x48, 0x19, 0x79, 0x2f, 0xc5, 0xb5, 0x34, 0xbe, 0xfe, 0xb7, 0x7a, 0x73, 0x88, 0xd2, 0x5a,
		0xe5, 0xb1, 0x90, 0xd2, 0x5a, 0xd9, 0xdb, 0x4c, 0x69, 0xad, 0x7c, 0x8b, 0xde, 0xf7, 0x28, 0x04,
		0x9d, 0xd8, 0x5f, 0xe7, 0x2a, 0x41, 0x87, 0x76, 0xa7, 0xf5, 0x4f, 0xb7, 0xe5, 0x7d, 0xa1, 0xb0,
		0xd6, 0x7a, 0xcb, 0x58, 0x0a, 0x6b, 0x15, 0x5c, 0xa1, 0x66, 0xe5, 0x36, 0x94, 0xd5, 0xca, 0xe1,
		0x83, 0x32, 0x53, 0x56, 0xeb, 0x26, 0xb8, 0x97, 0x37, 0xd3, 0x9b, 0xb9, 0x1a, 0x50, 0xca, 0x2f,
		0xff, 0xab, 0x0e, 0x90, 0x8c, 0xe6, 0x52, 0x40, 0xfb, 0x94, 0xd6, 0x2a, 0x26, 0x4e, 0x53, 0x5a,
		0x4b, 0xaf, 0xb0, 0x9d, 0xb1, 0x53, 0xb1, 0x5f, 0x54, 0xe6, 0x7e, 0x11, 0xe5, 0xb5, 0x8c, 0xae,
		0x96, 0x29, 0xaf, 0x85, 0xd0, 0x5f, 0xa3, 0xb8, 0xd6, 0x33, 0x71, 0xad, 0x93, 0xe0, 0xbe, 0x2d,
		0xd5, 0x6f, 0x87, 0xe9, 0xe3, 0xa1, 0xb4, 0x96, 0x69, 0xc1, 0x29, 0x91, 0xa7, 0x0a, 0x45, 0x24,
		0xc2, 0xbb, 0xe0, 0x6a, 0x2c, 0xa0, 0x55, 0xb6, 0xde, 0x5e, 0x06, 0x05, 0xb7, 0xb2, 0x30, 0x93,
		0x82, 0x5b, 0x39, 0x02, 0x98, 0x82, 0x5b, 0xeb, 0x28, 0xa1, 0x29, 0xb8, 0xb5, 0xf6, 0x2a, 0x99,
		0x82, 0x5b, 0xa5, 0x28, 0x70, 0x28, 0xb8, 0x95, 0x6f, 0x7e, 0xa0, 0xe0, 0x16, 0x89, 0x0d, 0x22,
		0xc1, 0x01, 0x26, 0x3a, 0xa8, 0x84, 0x07, 0x9e, 0xf8, 0xc0, 0x13, 0x20, 0x6c, 0x22, 0x84, 0x41,
		0x88, 0x40, 0x88, 0x11, 0x1c, 0x41, 0x4a, 0x0d, 0xa6, 0xe0, 0x56, 0xe1, 0x04, 0x8a, 0x82, 0x5b,
		0x24, 0x54, 0x06, 0x13, 0x2b, 0x74, 0x82, 0x65, 0x0c, 0xd1, 0x32, 0x86, 0x70, 0x99, 0x41, 0xbc,
		0xb0, 0x08, 0x18, 0x18, 0x11, 0x4b, 0x21, 0x42, 0xc1, 0x2d, 0x3d, 0x48, 0x0e, 0x05, 0xb7, 0xd6,
		0xfe, 0xa2, 0xe0, 0x56, 0xb1, 0x8b, 0xa0, 0x1a, 0x8f, 0xae, 0x91, 0x95, 0x82, 0x5b, 0x1a, 0xb8,
		0x38, 0x05, 0xb7, 0xe8, 0xe2, 0x74, 0x71, 0xb3, 0xaa, 0x03, 0x5c, 0xab, 0x29, 0xb8, 0x95, 0xa7,
		0x3b, 0x52, 0x70, 0x8b, 0x05, 0x41, 0x26, 0xc5, 0xf0, 0x7b, 0x64, 0x7e, 0x7a, 0x8b, 0x5b, 0x38,
		0xb5, 0x6d, 0x2a, 0x6e, 0x69, 0xdc, 0x27, 0xa0, 0xe2, 0x96, 0xfe, 0x0b, 0xfa, 0xa8, 0xe2, 0xd6,
		0x9f, 0x70, 0x45, 0x32, 0x35, 0x5a, 0x6d, 0x12, 0x53, 0xe3, 0x41, 0x90, 0x32, 0x32, 0x5f, 0x4a,
		0x6e, 0x69, 0x7e, 0x25, 0xf0, 0xcd, 0x6b, 0x44, 0x54, 0xdf, 0x2a, 0x8f, 0x85, 0x54, 0xdf, 0xca,
		0xde, 0x66, 0xaa, 0x6f, 0xe5, 0x5b, 0x01, 0xbf, 0x57, 0x46, 0xa8, 0xeb, 0xf4, 0x9c, 0xee, 0x85,
		0x7d, 0xd8, 0x76, 0xa8, 0xc1, 0x55, 0x54, 0x61, 0x4b, 0x0d, 0xae, 0x82, 0x6b, 0xd6, 0x6c, 0x9d,
		0x87, 0x4a, 0x5c, 0x39, 0x7c, 0x5c, 0x66, 0x2b, 0x71, 0x3d, 0xd2, 0xce, 0x17, 0xfa, 0x41, 0x97,
		0xea, 0xb9, 0x80, 0x90, 0xf5, 0x54, 0x3f, 0x28, 0x41, 0xab, 0x8c, 0xac, 0xda, 0x36, 0x55, 0xb9,
		0x8a, 0x89, 0xdc, 0x54, 0xe5, 0xd2, 0x2b, 0x90, 0xe7, 0xe8, 0x60, 0x6c, 0x2f, 0x95, 0xb9, 0xbd,
		0x44, 0x85, 0x2e, 0xa3, 0x2b, 0x6a, 0x2a, 0x74, 0x81, 0xb5, 0xe3, 0x28, 0xd6, 0xf5, 0x52, 0xac,
		0xab, 0x9b, 0x3e, 0x2a, 0xca, 0x76, 0x99, 0x1d, 0xb1, 0x2a, 0x37, 0x52, 0x55, 0x53, 0xfd, 0xba,
		0x81, 0x18, 0x07, 0x0f, 0x40, 0x5a, 0x5d, 0xab, 0xb6, 0x53, 0xa0, 0x2b, 0x0b, 0x33, 0x29, 0xd0,
		0x95, 0x23, 0x6a, 0x29, 0xd0, 0xb5, 0x8e, 0x6a, 0x9a, 0x02, 0x5d, 0x6b, 0x2f, 0x98, 0x29, 0xd0,
		0x55, 0x8a, 0xfa, 0x86, 0x02, 0x5d, 0xf9, 0xe6, 0x07, 0x0a, 0x74, 0x91, 0xd8, 0x20, 0x12, 0x1c,
		0x60, 0xa2, 0x83, 0x4a, 0x78, 0xe0, 0x89, 0x0f, 0x3c, 0x01, 0xc2, 0x26, 0x42, 0x18, 0x84, 0x08,
		0x84, 0x18, 0xc1, 0x11, 0xa4, 0xd4, 0xe0, 0xa0, 0x7a, 0x25, 0x63, 0xdc, 0x9d, 0xf0, 0xb9, 0xf9,
		0x14, 0xe6, 0x22, 0x81, 0x32, 0x8b, 0x48, 0x19, 0x40, 0xa8, 0xd0, 0x89, 0x95, 0x31, 0x04, 0xcb,
		0x18, 0xa2, 0x65, 0x06, 0xe1, 0xc2, 0x22, 0x5e, 0x60, 0x04, 0x2c, 0x85, 0x08, 0xbe, 0x30, 0xd7,
		0xd5, 0x64, 0x32, 0x16, 0x81, 0x02, 0x16, 0xe5, 0xaa, 0xd5, 0x78, 0xd8, 0xa9, 0xec, 0xce, 0x98,
		0x0c, 0x55, 0xc2, 0xd8, 0x5b, 0x7e, 0xd3, 0x13, 0x1f, 0x97, 0xc0, 0x42, 0x83, 0x85, 0x06, 0x0b,
		0x0d, 0x16, 0x1a, 0x2c, 0x34, 0x58, 0x68, 0x90, 0xd7, 0xb0, 0xd0, 0x30, 0xa2, 0xd0, 0x98, 0x4a,
		0x85, 0x2d, 0xfe, 0xbb, 0x07, 0x68, 0x7a, 0x37, 0x50, 0x23, 0x4a, 0x7d, 0x15, 0xf0, 0xe0, 0x8d,
		0xd2, 0xfe, 0xdd, 0xa6, 0x30, 0xa8, 0x66, 0x31, 0x95, 0xda, 0xbf, 0x1a, 0xb8, 0xb8, 0x51, 0xda,
		0xbf, 0xf5, 0xfd, 0xe6, 0xfe, 0xee, 0x5e, 0x7d, 0x7f, 0x87, 0xbe, 0x4e, 0x5f, 0x67, 0x81, 0x00,
		0x6c, 0x35, 0xa5, 0xe5, 0x4a, 0x9f, 0xab, 0x92, 0x7b, 0x4b, 0xe8, 0xed, 0xf0, 0x74, 0x09, 0x6c,
		0x87, 0xaf, 0xc3, 0x6c, 0xb6, 0xc3, 0x0b, 0x04, 0x3b, 0xdb, 0xe1, 0xc5, 0xb9, 0x2b, 0xdb, 0xe1,
		0x9a, 0x2d, 0x84, 0xed, 0x70, 0x72, 0x9b, 0x3f, 0x80, 0x08, 0xdb, 0xe1, 0x85, 0xf3, 0x1b, 0xb6,
		0xc3, 0xd7, 0xfd, 0x62, 0x3b, 0xbc, 0xd8, 0x45, 0xb0, 0x1d, 0xae, 0x6b, 0x4c, 0x65, 0x3b, 0x5c,
		0x03, 0x17, 0x67, 0x3b, 0x9c, 0xbe, 0x4e, 0x5f, 0x37, 0xb4, 0x40, 0xc0, 0xb5, 0x9a, 0xed, 0xf0,
		0x32, 0x5b, 0xca, 0x49, 0x2b, 0xf9, 0xda, 0x5d, 0x0a, 0x69, 0xc7, 0x15, 0x11, 0x38, 0x8e, 0x57,
		0x29, 0x8f, 0x85, 0x1c, 0xaf, 0x92, 0xbd, 0xcd, 0x78, 0x53, 0x48, 0x01, 0xc5, 0x71, 0xba, 0xc7,
		0x47, 0x7b, 0x9f, 0x6a, 0xdb, 0xcb, 0xd1, 0x86, 0xaf, 0xcc, 0x32, 0xb4, 0x7e, 0xf6, 0x9c, 0x5f,
		0xac, 0x13, 0x11, 0x87, 0xb2, 0x7f, 0xa9, 0x1e, 0x67, 0x1f, 0x6e, 0xa6, 0x92, 0xe2, 0x8d, 0x66,
		0x3a, 0xe2, 0xd0, 0xaa, 0x37, 0x36, 0xac, 0x5a, 0xb3, 0xb6, 0x61, 0xd5, 0x93, 0xbf, 0x61, 0x4d,
		0x1c, 0x35, 0x41, 0x77, 0x07, 0x75, 0xa2, 0xa8, 0x59, 0xd2, 0x3b, 0x6b, 0x70, 0x2b, 0xd6, 0x00,
		0x25, 0xb3, 0xf2, 0xfb, 0x06, 0x47, 0xa2, 0x95, 0x3d, 0x5d, 0xbf, 0x6b, 0xaa, 0x93, 0xdb, 0x49,
		0x26, 0x3b, 0xb5, 0xdd, 0xce, 0xaf, 0x7e, 0xcb, 0x69, 0xdb, 0xdf, 0x38, 0x0c, 0x6d, 0xbd, 0x39,
		0x99, 0xc3, 0xd0, 0x0a, 0x4e, 0xc7, 0x59, 0xb9, 0x0d, 0x8f, 0xa1, 0xe6, 0xf0, 0x41, 0x19, 0x3a,
		0x06, 0x4d, 0xaa, 0xad, 0x9b, 0xe0, 0x7e, 0x3e, 0x9a, 0x29, 0xe9, 0x07, 0x59, 0xab, 0x53, 0x99,
		0x2e, 0xd5, 0x92, 0xec, 0xc9, 0x68, 0x3e, 0x99, 0xa9, 0xd1, 0xe4, 0xdc, 0xb3, 0x62, 0x82, 0x34,
		0xe7, 0x9e, 0xe9, 0x15, 0xb3, 0xb3, 0xf4, 0x28, 0xee, 0xee, 0xb0, 0xb2, 0xd3, 0xb9, 0xb2, 0x63,
		0x6f, 0xfb, 0x23, 0x41, 0x83, 0x83, 0xce, 0x00, 0x76, 0xc3, 0x38, 0xdd, 0xec, 0xf9, 0x74, 0x33,
		0xa9, 0x4e, 0x82, 0xfb, 0xb6, 0x54, 0xbf, 0xb5, 0x92, 0xa7, 0xc3, 0x91, 0x66, 0xa6, 0xc5, 0xa6,
		0x4a, 0x28, 0x22, 0x39, 0x98, 0x06, 0xe3, 0x27, 0x13, 0xfe, 0x60, 0x46, 0x9a, 0xbd, 0x62, 0x3b,
		0x47, 0x9a, 0x65, 0x61, 0x26, 0x47, 0x9a, 0xe5, 0x88, 0x5a, 0x8e, 0x34, 0x5b, 0x47, 0xa1, 0xcc,
		0x91, 0x66, 0x6b, 0xaf, 0x85, 0x39, 0xd2, 0xac, 0x14, 0x95, 0x0c, 0x47, 0x9a, 0xe5, 0x9b, 0x1f,
		0x38, 0xd2, 0x8c, 0xc4, 0x06, 0x91, 0xe0, 0x00, 0x13, 0x1d, 0x54, 0xc2, 0x03, 0x4f, 0x7c, 0xe0,
		0x09, 0x10, 0x36, 0x11, 0xc2, 0x20, 0x44, 0x20, 0xc4, 0x08, 0x8e, 0x20, 0xa5, 0x06, 0xe3, 0xb4,
		0x7e, 0xde, 0xcc, 0x35, 0x28, 0x1d, 0xa0, 0xb7, 0x08, 0x14, 0x25, 0x96, 0x48, 0xa8, 0x0c, 0x26,
		0x56, 0xe8, 0x04, 0xcb, 0x18, 0xa2, 0x65, 0x0c, 0xe1, 0x32, 0x83, 0x78, 0x61, 0x11, 0x30, 0x30,
		0x22, 0x96, 0x42, 0x04, 0x5f, 0x62, 0x49, 0x0a, 0x21, 0x86, 0xe3, 0x49, 0x80, 0xad, 0xb3, 0xb4,
		0x0f, 0x68, 0x7a, 0x5b, 0xa8, 0x51, 0x42, 0x8c, 0x29, 0xb4, 0xb4, 0xe6, 0x27, 0x6f, 0x94, 0xd0,
		0x52, 0x93, 0xe2, 0x2b, 0x9a, 0x45, 0x56, 0x0a, 0x2d, 0x69, 0xe0, 0xe2, 0x46, 0x09, 0x2d, 0xd1,
		0xc5, 0xe9, 0xe2, 0xac, 0x0e, 0x80, 0xad, 0xa6, 0xbe, 0x52, 0x99, 0x2d, 0xa5, 0xbe, 0x52, 0xbe,
		0x76, 0x97, 0xe1, 0x44, 0xf9, 0xea, 0x89, 0x54, 0xea, 0x2b, 0x95, 0xc7, 0x42, 0xea, 0x2b, 0x65,
		0x6f, 0x33, 0xf5, 0x95, 0xf2, 0x64, 0xc8, 0x59, 0xea, 0x2b, 0xed, 0x51, 0x5f, 0xa9, 0x58, 0xbb,
		0xa9, 0xaf, 0xa4, 0x03, 0x3b, 0xcb, 0x5a, 0x5f, 0x69, 0x8f, 0xfa, 0x4a, 0xb4, 0xf2, 0x49, 0x8d,
		0x4a, 0x7d, 0xa5, 0xd2, 0xa7, 0xeb, 0xf7, 0x08, 0xc5, 0x74, 0x9d, 0x9e, 0xdb, 0x3a, 0xb7, 0xdb,
		0xfe, 0xa1, 0xdd, 0x69, 0xfd, 0xd3, 0x6d, 0x79, 0x5f, 0xa8, 0xaf, 0xb4, 0xde, 0x9c, 0x4c, 0x7d,
		0xa5, 0x82, 0xd3, 0x71, 0x56, 0x6e, 0x43, 0x7d, 0xa5, 0x1c, 0x3e, 0x28, 0x33, 0xf5, 0x95, 0x42,
		0x11, 0x0d, 0xe4, 0x34, 0x18, 0x5b, 0x69, 0x3f, 0xe8, 0xcf, 0xa9, 0xc1, 0xec, 0x51, 0x5f, 0xa9,
		0x98, 0x20, 0x4d, 0x7d, 0x25, 0xbd, 0x62, 0x76, 0x96, 0x1e, 0xc5, 0xdd, 0x1d, 0x56, 0x76, 0x3a,
		0x57, 0x76, 0xec, 0x6d, 0x7f, 0x24, 0x68, 0x50, 0x5f, 0x09, 0x60, 0x37, 0x8c, 0xfa, 0x4a, 0xcf,
		0xf4, 0x95, 0xba, 0x8b, 0x07, 0x74, 0x98, 0x3e, 0x1f, 0x2a, 0x2c, 0x99, 0x16, 0x9d, 0x40, 0x64,
		0x08, 0xa0, 0xe4, 0x07, 0xa8, 0xa3, 0x94, 0xb1, 0xa1, 0xd4, 0x51, 0x62, 0x71, 0xfc, 0x7a, 0x41,
		0x4c, 0x1d, 0xa5, 0xb5, 0xd7, 0xbc, 0xd4, 0x51, 0x2a, 0x45, 0xc5, 0x02, 0xa3, 0xa3, 0x14, 0x23,
		0x5d, 0x9f, 0x4b, 0xd3, 0x43, 0x62, 0x35, 0x96, 0x8a, 0xd2, 0x36, 0x55, 0x94, 0x4a, 0x4f, 0x6f,
		0x80, 0x69, 0x0e, 0x2a, 0xdd, 0x81, 0xa7, 0x3d, 0xf0, 0xf4, 0x07, 0x9b, 0x06, 0x61, 0xd0, 0x21,
		0x10, 0x5a, 0x94, 0x42, 0x01, 0xee, 0xd2, 0xfe, 0xe3, 0x65, 0xfd, 0x81, 0x50, 0xb1, 0x8c, 0x1f,
		0x42, 0x31, 0x44, 0x8a, 0xda, 0xcb, 0x9e, 0xca, 0x0e, 0x90, 0xcd, 0xee, 0xe2, 0x51, 0x1f, 0x06,
		0x91, 0xc0, 0x3d, 0x36, 0xe0, 0xf6, 0xdc, 0x9e, 0xdf, 0x3b, 0x3f, 0xf4, 0xda, 0x17, 0xbe, 0xf7,
		0xed, 0xcc, 0x41, 0x4b, 0x3b, 0xc9, 0x0d, 0xd8, 0x08, 0x52, 0x23, 0x01, 0x54, 0x86, 0x28, 0x45,
		0xce, 0xd9, 0xf3, 0xe3, 0x4a, 0xee, 0xd9, 0x45, 0xd3, 0xef, 0x9e, 0x9e, 0x7b, 0x4e, 0xd7, 0x77,
		0x5b, 0x80, 0x3a, 0x38, 0x1b, 0x44, 0x50, 0xe1, 0x08, 0xda, 0x25, 0x82, 0x88, 0xa0, 0xf7, 0x23,
		0xe8, 0xac, 0xeb, 0x1c, 0xbb, 0x5f, 0xfd, 0xe3, 0xb6, 0xfd, 0xb9, 0x47, 0xfc, 0x10, 0x3f, 0xef,
		0xc4, 0x4f, 0x8f, 0xd1, 0x87, 0xe8, 0xf9, 0xeb, 0xe8, 0x99, 0xd3, 0xe8, 0x1e, 0x22, 0x8f, 0x36,
		0x81, 0x4f, 0x63, 0xa3, 0xca, 0x78, 0x7e, 0x0d, 0x1c, 0xa7, 0xcc, 0x47, 0xd6, 0x2e, 0x91, 0x45,
		0x64, 0x91, 0x8f, 0x13, 0x57, 0xe4, 0xe9, 0x44, 0x55, 0x59, 0x51, 0xe5, 0xd9, 0x9f, 0x09, 0x27,
		0xc2, 0x29, 0x43, 0x38, 0xed, 0x36, 0x2b, 0x54, 0x7e, 0x5c, 0xeb, 0xeb, 0x3b, 0xfb, 0x36, 0x74,
		0xd8, 0x32, 0xc4, 0x7d, 0xc2, 0x86, 0xf1, 0x9d, 0xc0, 0xc1, 0x00, 0xce, 0x0b, 0x61, 0x0f, 0xbb,
		0xf5, 0x0f, 0xbf, 0x6d, 0x77, 0xb8, 0xcd, 0x40, 0xf8, 0xbc, 0x17, 0x3e, 0x84, 0x0e, 0xa1, 0xf3,
		0x2e, 0xe8, 0x9c, 0xb8, 0x1d, 0xff, 0x73, 0xf7, 0xf4, 0xfc, 0x8c, 0xf0, 0x21, 0x7c, 0xfe, 0x32,
		0x7c, 0x2e, 0x6c, 0xb7, 0x6d, 0x1f, 0xb6, 0x9d, 0x47, 0x49, 0x2a, 0xc2, 0x88, 0x30, 0xfa, 0xab,
		0x30, 0x4a, 0xc1, 0xe3, 0x1f, 0x9d, 0x76, 0x7a, 0x5e, 0xd7, 0x76, 0x3b, 0x1e, 0x8f, 0xeb, 0x10,
		0x48, 0x7f, 0x19, 0x48, 0xce, 0x57, 0xcf, 0xe9, 0xb4, 0x9c, 0x16, 0xf3, 0x1a, 0x71, 0xf4, 0x11,
		0x1c, 0x25, 0x47, 0x2b, 0xdc, 0x8e, 0xe7, 0x74, 0x8f, 0xed, 0x23, 0xc7, 0xb7, 0x5b, 0xad, 0xae,
		0xd3, 0x63, 0x44, 0x22, 0x92, 0xde, 0x87, 0xa4, 0x8e, 0xe3, 0x7e, 0xfe, 0x72, 0x78, 0xda, 0x25,
		0x90, 0x08, 0xa4, 0x0f, 0x00, 0x69, 0x97, 0x21, 0x89, 0x48, 0xca, 0x08, 0x49, 0x0c, 0x49, 0x04,
		0xd2, 0x47, 0x81, 0xd4, 0x76, 0x3b, 0xbf, 0xfa, 0xb6, 0xe7, 0x75, 0xdd, 0xc3, 0x73, 0xcf, 0x21,
		0x84, 0x08, 0xa1, 0xf7, 0x41, 0xa8, 0xe5, 0xb4, 0xed, 0x6f, 0x44, 0x0f, 0xd1, 0xf3, 0x7e, 0xf4,
		0xf8, 0x17, 0x76, 0xd7, 0xb5, 0x3d, 0xf7, 0xb4, 0x43, 0x1c, 0x11, 0x47, 0xef, 0xc2, 0x11, 0x37,
		0xd0, 0x08, 0x9d, 0x77, 0x42, 0xa7, 0x7d, 0x4a, 0x02, 0x4d, 0xf0, 0xbc, 0x13, 0x3c, 0x67, 0xdd,
		0x53, 0xcf, 0x39, 0x9a, 0xa5, 0xae, 0xf9, 0x3d, 0x41, 0xe2, 0x88, 0x38, 0xfa, 0x8b, 0x38, 0x3a,
		0xb1, 0xbf, 0xce, 0xb1, 0xc4, 0x5d, 0x58, 0xa2, 0xe8, 0x43, 0x28, 0xea, 0x3a, 0x3d, 0xa7, 0x7b,
		0xc1, 0x1d, 0x7d, 0x62, 0xe9, 0x83, 0x58, 0x72, 0x3b, 0x8f, 0x51, 0x89, 0xf5, 0x3d, 0x51, 0xf4,
		0x2e, 0x14, 0xad, 0x0e, 0xbc, 0x23, 0x8a, 0x88, 0xa2, 0xbf, 0x8a, 0x22, 0xaa, 0x70, 0x10, 0x55,
		0xf9, 0xa1, 0x0b, 0xfa, 0xec, 0x3e, 0x70, 0x90, 0x2a, 0x01, 0xac, 0x08, 0x29, 0x42, 0x2a, 0x53,
		0x48, 0x01, 0x9f, 0x89, 0x24, 0xac, 0xb4, 0x85, 0x95, 0x09, 0x77, 0x00, 0x08, 0x2f, 0x5d, 0xe1,
		0x65, 0xc8, 0xdd, 0x00, 0x02, 0x4c, 0x57, 0x80, 0x99, 0x71, 0x67, 0x80, 0xf8, 0xd2, 0x15, 0x5f,
		0xa6, 0xdc, 0x25, 0x20, 0xc2, 0xb4, 0x46, 0x18, 0xfe, 0x81, 0x5e, 0x02, 0x4c, 0x63, 0x80, 0xed,
		0x32, 0x84, 0x11, 0x61, 0x39, 0x23, 0x8c, 0x21, 0x8c, 0x00, 0xcb, 0x0b, 0x60, 0xf0, 0x77, 0x15,
		0x08, 0x2d, 0xad, 0xa1, 0x05, 0x7a, 0xc6, 0x81, 0xa8, 0xd2, 0x1f, 0x55, 0xc8, 0x77, 0x1b, 0x88,
		0x2f, 0xad, 0xf1, 0xc5, 0x0d, 0x46, 0x42, 0x2a, 0x63, 0x48, 0x61, 0xde, 0x85, 0x20, 0xa8, 0xb4,
		0x06, 0x15, 0xfc, 0x1d, 0x09, 0xe2, 0x4b, 0x57, 0x7c, 0x99, 0x70, 0x77, 0x82, 0xe8, 0xd2, 0x19,
		0x5d, 0x66, 0xdc, 0xa9, 0x20, 0xc6, 0xb4, 0xc5, 0x98, 0x01, 0x77, 0x2d, 0x88, 0x2e, 0x5d, 0xd1,
		0x65, 0xc2, 0x1d, 0x0c, 0xa2, 0x4b, 0x57, 0x74, 0x79, 0x8e, 0xdf, 0x72, 0x8e, 0xed, 0xf3, 0xb6,
		0xe7, 0x9f, 0x38, 0x5e, 0xd7, 0x3d, 0x22, 0xb8, 0x08, 0xae, 0xac, 0xc0, 0x75, 0xde, 0x49, 0x8f,
		0x0c, 0x3a, 0x2d, 0xbf, 0xdd, 0xe3, 0xb1, 0x2e, 0x82, 0x2b, 0x43, 0x70, 0xcd, 0x79, 0xbd, 0xd3,
		0x62, 0x66, 0x24, 0xbe, 0x72, 0xc0, 0x97, 0xe7, 0xb6, 0xdd, 0x7f, 0x19, 0x82, 0x2e, 0x4e, 0x8e,
		0xa3, 0x17, 0x9b, 0xe4, 0xbd, 0x26, 0xf3, 0x59, 0x82, 0x88, 0xbc, 0x95, 0x20, 0x22, 0x3f, 0x25,
		0x8e, 0x88, 0x23, 0x43, 0x78, 0x28, 0x51, 0xb4, 0x6e, 0x14, 0x75, 0x4f, 0xcf, 0x3d, 0xa7, 0xeb,
		0x1f, 0xd9, 0x67, 0xa9, 0x0a, 0x4b, 0xd7, 0xb7, 0xdb, 0x9f, 0x4f, 0xbb, 0xae, 0xf7, 0xe5, 0x84,
		0x08, 0x22, 0x82, 0xde, 0x85, 0xa0, 0xc7, 0xbf, 0x11, 0x42, 0x84, 0xd0, 0x3b, 0x20, 0x44, 0x29,
		0x28, 0xe2, 0x8a, 0x49, 0xce, 0xbc, 0x48, 0x55, 0x06, 0x64, 0x21, 0x27, 0xbf, 0x14, 0x5a, 0xec,
		0x04, 0xf3, 0x39, 0x03, 0x3f, 0x5f, 0x8c, 0xe7, 0xaa, 0xbf, 0x95, 0x7a, 0x5b, 0xa8, 0x79, 0x02,
		0xac, 0xd8, 0x4a, 0x4d, 0xe2, 0x20, 0x96, 0x13, 0x55, 0x39, 0x00, 0x48, 0x79, 0x95, 0xa8, 0x7f,
		0x2d, 0x6e, 0x82, 0xdb, 0x20, 0xbe, 0x9e, 0x25, 0xb7, 0xad, 0xc9, 0xad, 0x50, 0xfd, 0x89, 0x1a,
		0xca, 0x51, 0x55, 0x89, 0xf8, 0xc7, 0x24, 0xfc, 0xad, 0x2a, 0x55, 0x14, 0x07, 0xaa, 0x2f, 0xb6,
		0x5e, 0xbe, 0x11, 0xad, 0xbc, 0xb3, 0x75, 0x1b, 0x4e, 0xe2, 0x49, 0x7f, 0x32, 0x8e, 0xd2, 0xef,
		0xb6, 0x64, 0x24, 0xa3, 0xad, 0xb1, 0xb8, 0x13, 0xe3, 0xc5, 0x97, 0xad, 0xb1, 0x54, 0xbf, 0x55,
		0xa3, 0x38, 0x88, 0x45, 0x75, 0x10, 0xc4, 0xc1, 0x55, 0x10, 0x89, 0xad, 0x71, 0x74, 0xbb, 0x15,
		0x8f, 0xef, 0xa2, 0xd9, 0x1f, 0x5b, 0x37, 0x71, 0x75, 0xf6, 0x5b, 0x55, 0x25, 0xe4, 0xe8, 0xfa,
		0x6a, 0x12, 0x56, 0x83, 0x38, 0x0e, 0xe5, 0xd5, 0x34, 0x9e, 0xd9, 0x30, 0x7f, 0x2b, 0x4a, 0xbf,
		0xdb, 0x7a, 0x34, 0x27, 0x35, 0x23, 0x9a, 0x5e, 0x25, 0xff, 0xb3, 0xf9, 0xd7, 0xad, 0xe4, 0xdf,
		0xd2, 0x3b, 0x31, 0xeb, 0xeb, 0x74, 0x1a, 0x3b, 0x5c, 0x65, 0x86, 0x20, 0x31, 0x0c, 0xa6, 0xe3,
		0xb8, 0x7a, 0x23, 0xe2, 0x50, 0xf6, 0xb5, 0xf7, 0xb9, 0x94, 0x46, 0xae, 0x9a, 0xae, 0x79, 0x60,
		0xfb, 0x55, 0xaa, 0x41, 0xe5, 0xc0, 0xaa, 0x69, 0x6e, 0xe6, 0x51, 0x12, 0xbc, 0x2a, 0x07, 0xd6,
		0xb6, 0xe6, 0x86, 0x9e, 0x85, 0x62, 0x28, 0xef, 0x31, 0x92, 0xc4, 0x12, 0xb4, 0x93, 0x7e, 0x12,
		0x98, 0x01, 0xda, 0x33, 0x95, 0xde, 0x64, 0x1a, 0xf6, 0x05, 0xc4, 0xe3, 0x9d, 0xbb, 0x97, 0x78,
		0xf8, 0x31, 0x09, 0x67, 0x1e, 0x56, 0xb9, 0x9d, 0x23, 0x03, 0xa3, 0xd2, 0xaf, 0x7c, 0x09, 0x22,
		0x3b, 0x1c, 0x4d, 0x6f, 0x84, 0x8a, 0x2b, 0x07, 0x56, 0x1c, 0x4e, 0x05, 0x88, 0xe1, 0x4f, 0xac,
		0x4e, 0x81, 0x4d, 0x72, 0x6e, 0x34, 0x39, 0x6f, 0xc9, 0x10, 0x84, 0x95, 0x27, 0x8c, 0x15, 0x26,
		0x78, 0x2d, 0xf3, 0xc3, 0xdc, 0x6c, 0x10, 0xff, 0xc7, 0x20, 0x34, 0x70, 0xc4, 0x06, 0x91, 0xe0,
		0x00, 0x13, 0x1d, 0x54, 0xc2, 0x03, 0x4f, 0x7c, 0xe0, 0x09, 0x10, 0x36, 0x11, 0xc2, 0x20, 0x44,
		0x20, 0xc4, 0x08, 0x8e, 0x20, 0xa5, 0x06, 0x83, 0xb4, 0x7d, 0xde, 0x4c, 0x34, 0x10, 0xbd, 0x9f,
		0xb7, 0xa8, 0xd3, 0x36, 0x98, 0xd9, 0x68, 0x14, 0x0a, 0x99, 0x4a, 0x19, 0x40, 0xa9, 0xd0, 0xa9,
		0x95, 0x31, 0x14, 0xcb, 0x18, 0xaa, 0x65, 0x06, 0xe5, 0xc2, 0xa2, 0x5e, 0x60, 0x14, 0x2c, 0x85,
		0x88, 0xf7, 0x70, 0x2b, 0xb0, 0x23, 0xfe, 0x54, 0xaa, 0xb8, 0x51, 0x47, 0x0c, 0xf8, 0x0b, 0x7e,
		0xb3, 0x07, 0x68, 0x7a, 0x37, 0x50, 0x23, 0x01, 0x7b, 0x02, 0x15, 0xf7, 0x8c, 0x60, 0xe5, 0x44,
		0x2a, 0x58, 0x86, 0x90, 0x2e, 0x22, 0x39, 0xc0, 0x8c, 0x47, 0x90, 0x57, 0xd6, 0x71, 0x1c, 0x06,
		0xfd, 0x58, 0x4e, 0x54, 0x4b, 0x8e, 0x64, 0x1c, 0x19, 0xb0, 0xa0, 0x8e, 0x18, 0x05, 0xb1, 0xbc,
		0x9b, 0x7d, 0x36, 0xc3, 0x60, 0x1c, 0x09, 0x1e, 0x60, 0x2e, 0xc2, 0xc5, 0x83, 0x7b, 0x73, 0x5c,
		0xbc, 0x59, 0xdf, 0x6f, 0xee, 0xef, 0xee, 0xd5, 0xf7, 0x77, 0xe8, 0xeb, 0xf4, 0x75, 0x16, 0x08,
		0xc0, 0x56, 0x7f, 0x67, 0x21, 0x96, 0xa3, 0x3b, 0x8a, 0xfb, 0x38, 0x0c, 0xaa, 0x53, 0x15, 0xc5,
		0xc1, 0xd5, 0x18, 0xb4, 0x24, 0x0b, 0xc5, 0x50, 0x84, 0x42, 0xf5, 0x59, 0x19, 0x14, 0x58, 0x0f,
		0x77, 0x8f, 0x8f, 0x76, 0x1a, 0xdb, 0x3b, 0x07, 0x96, 0xdb, 0xab, 0xba, 0x3d, 0xcb, 0xb9, 0x8f,
		0x85, 0x8a, 0xe4, 0x44, 0x45, 0xd6, 0x70, 0x12, 0x5a, 0x5e, 0x18, 0x0c, 0x87, 0xb2, 0x6f, 0x39,
		0x6a, 0x24, 0x95, 0x10, 0xa1, 0x54, 0xa3, 0xcd, 0x4b, 0x15, 0x4d, 0xaf, 0xaa, 0x5e, 0xfb, 0xc2,
		0xaa, 0x7d, 0x3a, 0xb0, 0x66, 0x5f, 0xeb, 0xf5, 0x8d, 0x7a, 0x63, 0xa3, 0xd6, 0xac, 0x6d, 0xd4,
		0x67, 0xdf, 0xd6, 0x1b, 0x9b, 0x15, 0x60, 0x42, 0x05, 0xde, 0x58, 0x7d, 0xec, 0x17, 0x3c, 0x36,
		0x58, 0x1f, 0x3d, 0x0d, 0x9c, 0x85, 0x98, 0xd2, 0x6b, 0x4d, 0x17, 0xf4, 0xb4, 0xe7, 0x9a, 0x93,
		0x2b, 0x92, 0xa9, 0xd1, 0x6a, 0x93, 0x98, 0x1a, 0x4f, 0x81, 0x94, 0x91, 0xf9, 0xa2, 0xdd, 0x61,
		0x4b, 0xed, 0x2e, 0xc3, 0x5d, 0xb6, 0x95, 0x7b, 0x43, 0x08, 0xb7, 0xdb, 0x70, 0xdc, 0x94, 0xe7,
		0xeb, 0x4b, 0x56, 0x2a, 0x57, 0x7e, 0x5c, 0x0b, 0x05, 0x53, 0x15, 0x03, 0x1e, 0xa5, 0xde, 0xdc,
		0x9c, 0x47, 0xa8, 0xad, 0xf8, 0xe1, 0x56, 0x58, 0x7f, 0xb7, 0x7e, 0x5a, 0x9c, 0x77, 0xa8, 0x8e,
		0xa3, 0xc1, 0x55, 0x75, 0xf6, 0x66, 0x74, 0xf0, 0x87, 0x52, 0xad, 0x3f, 0xf1, 0x24, 0xf6, 0x5a,
		0xab, 0xd8, 0xc4, 0x29, 0x78, 0x0e, 0xbb, 0xb8, 0x02, 0x35, 0x23, 0xaf, 0xc1, 0x21, 0xf0, 0x40,
		0xfe, 0xdd, 0x12, 0x51, 0x3f, 0x94, 0xb7, 0x70, 0xfc, 0xf8, 0x59, 0x58, 0x3e, 0x55, 0xe3, 0x07,
		0x4b, 0xaa, 0xfe, 0x78, 0x3a, 0x10, 0x56, 0x7c, 0x2d, 0xac, 0x05, 0xab, 0xb4, 0xe2, 0x45, 0xf3,
		0x43, 0x3c, 0x36, 0x3f, 0xac, 0x39, 0xd3, 0xbc, 0x9c, 0xb1, 0xe9, 0x38, 0x90, 0x4a, 0x84, 0xd6,
		0x2c, 0x40, 0x24, 0xbf, 0xb6, 0xec, 0x8a, 0x24, 0x38, 0x95, 0x91, 0x55, 0xfb, 0x84, 0xd6, 0x91,
		0x44, 0xee, 0x42, 0x3e, 0x8d, 0xd9, 0x83, 0x27, 0xb0, 0x04, 0x3c, 0xb8, 0x64, 0x42, 0xbf, 0xf1,
		0x59, 0x08, 0xcf, 0xd3, 0xc3, 0xd8, 0x46, 0x2a, 0x73, 0x1b, 0x49, 0x7b, 0x2b, 0xbf, 0xb3, 0x8a,
		0x2e, 0x4f, 0xfb, 0xad, 0x9c, 0x6d, 0x37, 0x04, 0x0d, 0x94, 0x28, 0x0e, 0xa7, 0xfd, 0x58, 0x2d,
		0x18, 0x5f, 0x67, 0xfe, 0xa4, 0xdd, 0xc5, 0x0a, 0xfd, 0xb3, 0xc5, 0xe3, 0xf5, 0xdd, 0x48, 0x46,
		0x7e, 0x7b, 0xf6, 0x5c, 0xfd, 0x76, 0x74, 0xeb, 0x7b, 0xe3, 0x3b, 0xff, 0x24, 0x9e, 0xbd, 0xd9,
		0x59, 0x3c, 0x1f, 0x7b, 0xf9, 0xec, 0xfc, 0xe5, 0x3b, 0x7e, 0xfa, 0x7f, 0xe9, 0x25, 0xcf, 0xc7,
		0xf7, 0x44, 0x6b, 0xfe, 0x78, 0x4e, 0xe6, 0x4f, 0x87, 0x62, 0x5b, 0xa6, 0x85, 0xa6, 0x4a, 0x8c,
		0x70, 0x21, 0xe1, 0x51, 0x5f, 0x6b, 0x66, 0x2d, 0x86, 0xa4, 0xd6, 0x36, 0x25, 0xb5, 0xb2, 0x31,
		0x94, 0x92, 0x5a, 0xac, 0x93, 0x5f, 0xaf, 0x8d, 0x29, 0xa9, 0xb5, 0xf6, 0xf2, 0x97, 0x92, 0x5a,
		0xa5, 0x28, 0x56, 0x60, 0xae, 0x29, 0xa6, 0x11, 0x77, 0x2c, 0x82, 0x61, 0x28, 0x86, 0x08, 0x11,
		0x77, 0x29, 0x51, 0x05, 0x70, 0x11, 0xb1, 0x72, 0xb6, 0xa8, 0xff, 0x9e, 0xed, 0x5c, 0xb0, 0x0e,
		0x30, 0xaf, 0x0e, 0x98, 0xce, 0xaa, 0xfb, 0x28, 0x0e, 0x03, 0xa9, 0xc4, 0xa0, 0x3a, 0x8e, 0x6e,
		0x71, 0x8a, 0x82, 0x55, 0xd3, 0x29, 0xba, 0xcb, 0x0a, 0x81, 0x15, 0x02, 0x2b, 0x04, 0x56, 0x08,
		0xac, 0x10, 0x58, 0x21, 0xe4, 0xf2, 0x91, 0x53, 0x74, 0x37, 0xdf, 0xfc, 0x40, 0xd1, 0x5d, 0x12,
		0x1b, 0x44, 0x82, 0x03, 0x4c, 0x74, 0x50, 0x09, 0x0f, 0x3c, 0xf1, 0x81, 0x27, 0x40, 0xd8, 0x44,
		0x08, 0x83, 0x10, 0x81, 0x10, 0x23, 0x38, 0x82, 0x94, 0x1a, 0xdc, 0x9f, 0x4c, 0x13, 0xe0, 0x82,
		0x1e, 0x7d, 0x9d, 0x9b, 0x4f, 0xc9, 0x5d, 0x12, 0x28, 0xb3, 0x88, 0x94, 0x01, 0x84, 0x0a, 0x9d,
		0x58, 0x19, 0x43, 0xb0, 0x8c, 0x21, 0x5a, 0x66, 0x10, 0x2e, 0x2c, 0xe2, 0x05, 0x46, 0xc0, 0x52,
		0x88, 0x98, 0x21, 0xb9, 0x5b, 0xdb, 0x05, 0x96, 0xdc, 0xdd, 0xa5, 0xe4, 0xee, 0x9a, 0x5f, 0x94,
		0xdc, 0x2d, 0x76, 0x11, 0x94, 0xdc, 0xd5, 0x35, 0xa6, 0x52, 0x72, 0x57, 0x03, 0x17, 0x37, 0x49,
		0x72, 0x77, 0x77, 0x67, 0xa7, 0x41, 0xb5, 0x5d, 0xba, 0x39, 0x6b, 0x03, 0x64, 0xab, 0xa9, 0xb6,
		0x9b, 0xa7, 0x3b, 0x52, 0x6d, 0x97, 0x45, 0x41, 0x26, 0xa5, 0x70, 0x22, 0xf1, 0xd9, 0xd8, 0x3e,
		0xb0, 0x6c, 0xab, 0x2d, 0xd5, 0x6f, 0xd5, 0x59, 0x71, 0xff, 0x78, 0x97, 0x7e, 0x62, 0x1d, 0x4d,
		0xd4, 0x9d, 0x78, 0x48, 0x6e, 0xd8, 0x77, 0xa6, 0x37, 0x57, 0x22, 0xb4, 0x26, 0xc3, 0x4b, 0xf5,
		0x8a, 0xf4, 0xa7, 0xd5, 0x0e, 0xae, 0xc4, 0xd8, 0xea, 0xfd, 0x90, 0x71, 0xff, 0x5a, 0x0c, 0xac,
		0xb3, 0x20, 0xbe, 0x8e, 0xac, 0x9e, 0x1c, 0xa9, 0x60, 0x3c, 0x16, 0x83, 0x4b, 0xf5, 0x43, 0xc6,
		0xd7, 0xd6, 0xbf, 0x44, 0x38, 0xb1, 0xba, 0x22, 0x12, 0xe1, 0x9d, 0x18, 0x58, 0x87, 0x81, 0x1a,
		0xfc, 0x90, 0x83, 0xf8, 0xda, 0x0a, 0xfa, 0xe1, 0x24, 0x8a, 0xac, 0x20, 0x31, 0x62, 0x73, 0x69,
		0xc0, 0xa5, 0xaa, 0x37, 0xde, 0x50, 0x11, 0xa5, 0x9e, 0xaf, 0x06, 0xcd, 0x08, 0xea, 0xf9, 0xea,
		0xbf, 0xa0, 0x15, 0x3d, 0x5f, 0x44, 0x67, 0x27, 0xdb, 0xa4, 0xd5, 0x26, 0xb1, 0x4d, 0x0a, 0x8e,
		0xe5, 0x10, 0xe9, 0x62, 0xc4, 0x7d, 0x09, 0xa4, 0x9b, 0xf8, 0xab, 0x04, 0x80, 0xa7, 0x2d, 0xd6,
		0x6a, 0x38, 0x4f, 0x5b, 0x90, 0xb7, 0x67, 0xc3, 0xd7, 0x79, 0xda, 0x42, 0x3b, 0x72, 0xce, 0xd3,
		0x16, 0x64, 0x34, 0xaf, 0x40, 0x04, 0xff, 0xb4, 0x85, 0x1c, 0x08, 0x15, 0xcb, 0xf8, 0x01, 0x43,
		0x4d, 0xe0, 0x2d, 0x92, 0x53, 0x03, 0xdc, 0x92, 0xaa, 0xb8, 0x8b, 0x47, 0x7f, 0x18, 0x44, 0xc0,
		0x79, 0x6b, 0x09, 0x24, 0xb7, 0xe7, 0xf6, 0xfc, 0xde, 0xf9, 0xa1, 0xd7, 0xbe, 0xf0, 0xbd, 0x6f,
		0x67, 0x0e, 0x6a, 0xfa, 0x4a, 0x36, 0x3a, 0x23, 0xd8, 0xae, 0xb7, 0x05, 0xdd, 0xf9, 0x7e, 0x8e,
		0xa8, 0xb3, 0xe7, 0xda, 0xe0, 0xee, 0xd9, 0x45, 0xd3, 0xef, 0x9e, 0x9e, 0x7b, 0x4e, 0xd7, 0x77,
		0x5b, 0x15, 0x9e, 0x65, 0x20, 0xb2, 0xb2, 0x43, 0xd6, 0x2e, 0x91, 0x45, 0x64, 0x65, 0x8f, 0xac,
		0xb3, 0xae, 0x73, 0xec, 0x7e, 0xf5, 0x8f, 0xdb, 0xf6, 0xe7, 0x1e, 0x71, 0x45, 0x5c, 0x65, 0x8c,
		0xab, 0x1e, 0xa3, 0x15, 0x51, 0x95, 0x1d, 0xaa, 0xe6, 0xf4, 0xbd, 0x87, 0xcc, 0xdf, 0x4d, 0xe2,
		0xf1, 0x66, 0xa0, 0xad, 0x34, 0xbc, 0xde, 0x80, 0xb8, 0x56, 0x1e, 0xc4, 0xed, 0x12, 0x71, 0x44,
		0x1c, 0xeb, 0x00, 0xe2, 0xcd, 0x62, 0x7d, 0x40, 0xb4, 0x11, 0x6d, 0x1f, 0x42, 0x9b, 0x67, 0x7f,
		0x26, 0xcc, 0x08, 0xb3, 0x35, 0xc0, 0x6c, 0xb7, 0x69, 0x00, 0xd0, 0xa0, 0x57, 0xf0, 0x9d, 0xfd,
		0x26, 0x3a, 0x36, 0xf3, 0x06, 0xe1, 0xc4, 0xfc, 0x40, 0x40, 0x99, 0x06, 0xa8, 0x17, 0xd3, 0xc8,
		0xed, 0xd6, 0x3f, 0xfc, 0xb6, 0xdd, 0xe1, 0x36, 0x0b, 0x61, 0x95, 0x35, 0xac, 0x08, 0x29, 0x42,
		0x2a, 0x53, 0x48, 0x9d, 0xb8, 0x1d, 0xff, 0x73, 0xf7, 0xf4, 0xfc, 0x8c, 0xb0, 0x22, 0xac, 0x32,
		0x83, 0xd5, 0x85, 0xed, 0xb6, 0xed, 0xc3, 0xb6, 0xe3, 0x1f, 0xda, 0x9d, 0xd6, 0x3f, 0xdd, 0x96,
		0xf7, 0x85, 0xf0, 0x22, 0xbc, 0xb2, 0x82, 0x57, 0x0a, 0x2a, 0xff, 0xe8, 0xb4, 0xd3, 0xf3, 0xba,
		0xb6, 0xdb, 0xf1, 0x78, 0x4c, 0x8a, 0x00, 0xcb, 0x0c, 0x60, 0xce, 0x57, 0xcf, 0xe9, 0xb4, 0x9c,
		0x16, 0xf3, 0x23, 0xf1, 0x95, 0x07, 0xbe, 0x92, 0xa3, 0x2b, 0x6e, 0xc7, 0x73, 0xba, 0xc7, 0xf6,
		0x91, 0xe3, 0xdb, 0xad, 0x56, 0xd7, 0xe9, 0x31, 0x82, 0x11, 0x61, 0xd9, 0x22, 0xac, 0xe3, 0xb8,
		0x9f, 0xbf, 0x1c, 0x9e, 0x76, 0x09, 0x30, 0x02, 0x2c, 0x07, 0x80, 0xed, 0x32, 0x84, 0x11, 0x61,
		0x39, 0x23, 0x8c, 0x21, 0x8c, 0x00, 0xcb, 0x0b, 0x60, 0x6d, 0xb7, 0xf3, 0xab, 0x6f, 0x7b, 0x5e,
		0xd7, 0x3d, 0x3c, 0xf7, 0x1c, 0x42, 0x8b, 0xd0, 0xca, 0x16, 0x5a, 0x2d, 0xa7, 0x6d, 0x7f, 0x23,
		0xaa, 0x88, 0xaa, 0xec, 0x51, 0xe5, 0x5f, 0xd8, 0x5d, 0xd7, 0xf6, 0xdc, 0xd3, 0x0e, 0xf1, 0x45,
		0x7c, 0x65, 0x8a, 0x2f, 0x6e, 0x30, 0x12, 0x52, 0x19, 0x43, 0xaa, 0x7d, 0x4a, 0xe2, 0x4e, 0x50,
		0x65, 0x0c, 0xaa, 0xb3, 0xee, 0xa9, 0xe7, 0x1c, 0xcd, 0x52, 0xe0, 0xfc, 0xde, 0x29, 0xf1, 0x45,
		0x7c, 0x65, 0x84, 0xaf, 0x13, 0xfb, 0xeb, 0x1c, 0x63, 0xdc, 0xbd, 0x26, 0xba, 0x72, 0x41, 0x57,
		0xd7, 0xe9, 0x39, 0xdd, 0x0b, 0x9e, 0x90, 0x20, 0xc6, 0x72, 0xc2, 0x98, 0xdb, 0x79, 0x8c, 0x62,
		0xec, 0x43, 0x10, 0x5d, 0x99, 0xa2, 0xab, 0xeb, 0xf4, 0xdc, 0xd6, 0xb9, 0xdd, 0x66, 0xec, 0x22,
		0xba, 0xb2, 0x47, 0x17, 0xd5, 0x64, 0x88, 0xb6, 0xf5, 0xa3, 0xce, 0x88, 0x3b, 0x1b, 0x06, 0x04,
		0xb5, 0x12, 0xc1, 0x8d, 0x50, 0x23, 0xd4, 0xd6, 0x02, 0x35, 0x03, 0xce, 0xb0, 0x12, 0x6e, 0x30,
		0x70, 0x33, 0xe9, 0xee, 0x07, 0x61, 0x87, 0x02, 0x3b, 0xc3, 0xee, 0x84, 0x10, 0x78, 0x28, 0xc0,
		0x33, 0xeb, 0xae, 0x08, 0x71, 0x87, 0x82, 0x3b, 0xd3, 0xee, 0x90, 0x10, 0x79, 0x50, 0xc8, 0x33,
		0xe7, 0x60, 0x36, 0x81, 0x07, 0x04, 0xbc, 0x5d, 0x86, 0x3c, 0x22, 0xaf, 0x20, 0xe4, 0x31, 0xe4,
		0x11, 0x78, 0xeb, 0x06, 0x9e, 0x31, 0x77, 0x54, 0x08, 0x39, 0x28, 0xc8, 0x81, 0x9f, 0x19, 0x21,
		0xda, 0xf0, 0xd0, 0x66, 0xc2, 0x9d, 0x16, 0xe2, 0x0e, 0x0a, 0x77, 0xdc, 0x80, 0x25, 0xd4, 0xd6,
		0x04, 0x35, 0xec, 0x3b, 0x30, 0x04, 0x1b, 0x14, 0xd8, 0x8c, 0xb9, 0x1b, 0x43, 0xdc, 0xa1, 0xe0,
		0xce, 0xa4, 0x3b, 0x33, 0x44, 0x1d, 0x12, 0xea, 0xcc, 0xba, 0x4b, 0x43, 0xec, 0xc1, 0x60, 0xcf,
		0xa0, 0x3b, 0x36, 0x44, 0x1d, 0x0a, 0xea, 0x4c, 0xba, 0x7b, 0x43, 0xd4, 0xa1, 0xa0, 0xce, 0x73,
		0xfc, 0x96, 0x73, 0x6c, 0x9f, 0xb7, 0x3d, 0xff, 0xc4, 0xf1, 0xba, 0xee, 0x11, 0x41, 0x47, 0xd0,
		0xe5, 0x0d, 0xba, 0xf3, 0x4e, 0x7a, 0x94, 0xd3, 0x69, 0xf9, 0xed, 0x1e, 0x8f, 0xd5, 0x11, 0x74,
		0x6b, 0x00, 0xdd, 0xbc, 0x9e, 0x70, 0x5a, 0xcc, 0xb0, 0xc4, 0xdd, 0x1a, 0x71, 0xe7, 0xb9, 0x6d,
		0xf7, 0x5f, 0x86, 0xa1, 0x8e, 0x13, 0x2b, 0xe9, 0xed, 0x65, 0xf2, 0xf2, 0x32, 0xf0, 0x67, 0x82,
		0x8b, 0x3c, 0x99, 0xe0, 0x2a, 0x11, 0xb8, 0x4c, 0xe2, 0xc3, 0xc4, 0x17, 0x79, 0x2f, 0xd1, 0x65,
		0x2e, 0xba, 0xba, 0xa7, 0xe7, 0x9e, 0xd3, 0xf5, 0x8f, 0xec, 0xb3, 0x54, 0x4d, 0xa8, 0xeb, 0xdb,
		0xed, 0xcf, 0xa7, 0x5d, 0xd7, 0xfb, 0x72, 0x42, 0x64, 0x11, 0x59, 0x99, 0x22, 0xeb, 0xf1, 0x6f,
		0x84, 0x16, 0xa1, 0x95, 0x21, 0xb4, 0x28, 0x81, 0x46, 0xbc, 0x31, 0x59, 0x96, 0x37, 0xb2, 0x95,
		0x09, 0x71, 0x26, 0x24, 0xd1, 0x14, 0x72, 0xec, 0x78, 0xf3, 0xb9, 0x1b, 0xfc, 0xbc, 0xb1, 0x9e,
		0x33, 0x8e, 0xb5, 0x18, 0x96, 0x82, 0x24, 0xd4, 0x8a, 0xad, 0xd4, 0x24, 0x0e, 0x62, 0x39, 0x51,
		0x95, 0x03, 0xa0, 0x14, 0x5a, 0x89, 0xfa, 0xd7, 0xe2, 0x26, 0xb8, 0x0d, 0xe2, 0xeb, 0x59, 0xb2,
		0xdc, 0x9a, 0xdc, 0x0a, 0xd5, 0x9f, 0xa8, 0xa1, 0x1c, 0x55, 0x95, 0x88, 0x7f, 0x4c, 0xc2, 0xdf,
		0xaa, 0x52, 0x45, 0x71, 0xa0, 0xfa, 0x62, 0xeb, 0xe5, 0x1b, 0xd1, 0xca, 0x3b, 0x5b, 0xb7, 0xe1,
		0x24, 0x9e, 0xf4, 0x27, 0xe3, 0x28, 0xfd, 0x6e, 0x4b, 0x46, 0x32, 0xda, 0x1a, 0x8b, 0x3b, 0x31,
		0x5e, 0x7c, 0xd9, 0x1a, 0x4b, 0xf5, 0x5b, 0x35, 0x8a, 0x83, 0x58, 0x54, 0x07, 0x41, 0x1c, 0x5c,
		0x05, 0x91, 0xd8, 0x1a, 0x47, 0xb7, 0x5b, 0xf1, 0xf8, 0x2e, 0x9a, 0xfd, 0xb1, 0x75, 0x13, 0x57,
		0x67, 0xbf, 0x55, 0x55, 0x42, 0x8e, 0xae, 0xaf, 0x26, 0x61, 0x35, 0x88, 0xe3, 0x50, 0x5e, 0x4d,
		0xe3, 0x99, 0x0d, 0xf3, 0xb7, 0xa2, 0xf4, 0xbb, 0xad, 0x47, 0x73, 0x52, 0x33, 0xa2, 0xe9, 0x55,
		0xf2, 0x3f, 0x9b, 0x7f, 0xdd, 0x9a, 0xce, 0x96, 0x14, 0xc5, 0x61, 0x20, 0x95, 0x18, 0x54, 0x67,
		0xff, 0x54, 0xf2, 0xaf, 0x63, 0xa4, 0x7e, 0xfd, 0xdd, 0x54, 0x6f, 0x0b, 0x35, 0x0f, 0x20, 0x15,
		0x71, 0x1f, 0x87, 0x41, 0x75, 0x3a, 0x83, 0xee, 0xd5, 0x58, 0x40, 0x04, 0x8f, 0xca, 0x8f, 0x6b,
		0xa1, 0x60, 0xaa, 0x6b, 0xa0, 0x60, 0xbc, 0xac, 0x59, 0x36, 0x37, 0xe7, 0x11, 0x6a, 0x2b, 0x7e,
		0xb8, 0x15, 0xd6, 0xdf, 0xad, 0x9f, 0x26, 0xfd, 0x79, 0x44, 0x1c, 0x47, 0x83, 0xab, 0xea, 0xec,
		0xcd, 0xe8, 0xe0, 0x0f, 0x77, 0x64, 0x7f, 0x02, 0xea, 0xe2, 0x54, 0x7a, 0x93, 0x69, 0xd8, 0x17,
		0x50, 0xa9, 0x33, 0xb1, 0xfb, 0x57, 0xf1, 0xf0, 0x63, 0x12, 0x0e, 0x66, 0x1f, 0x5a, 0xe2, 0x14,
		0x58, 0xe5, 0x7f, 0xe5, 0x4b, 0x10, 0xd9, 0xe1, 0x68, 0x7a, 0x23, 0x54, 0x5c, 0x39, 0xb0, 0xe2,
		0x70, 0x2a, 0xc0, 0x16, 0xf0, 0xc4, 0xfa, 0xac, 0xbc, 0xe6, 0x6f, 0xec, 0x35, 0x65, 0xff, 0x39,
		0xb5, 0x44, 0xd4, 0x0f, 0xe5, 0x2d, 0x1c, 0x3f, 0x7e, 0x16, 0x96, 0x4f, 0xd5, 0xf8, 0xc1, 0x92,
		0xaa, 0x3f, 0x9e, 0x0e, 0x84, 0x15, 0x5f, 0x0b, 0xeb, 0x19, 0xb1, 0xb4, 0xda, 0xbd, 0x33, 0xab,
		0x3f, 0x51, 0xf1, 0xec, 0x6f, 0xa1, 0x35, 0x0b, 0x07, 0xb3, 0x1f, 0xba, 0x54, 0xd1, 0xf4, 0xaa,
		0xea, 0xb5, 0x2f, 0x2c, 0x19, 0x59, 0x09, 0x32, 0xeb, 0x8d, 0x4d, 0xb4, 0x38, 0x01, 0x1a, 0x9e,
		0x5f, 0x86, 0xe8, 0xc1, 0x13, 0x14, 0xe2, 0x35, 0x6a, 0xe1, 0xa3, 0xf5, 0x4a, 0xc4, 0xce, 0xd0,
		0xa1, 0xd8, 0x24, 0x2a, 0x73, 0x93, 0x48, 0x7b, 0x2b, 0xbf, 0xb3, 0x46, 0x2e, 0x4f, 0x73, 0xad,
		0x9c, 0x4d, 0x35, 0x80, 0x8c, 0x5a, 0x89, 0xe2, 0x70, 0xda, 0x8f, 0xd5, 0x82, 0xcf, 0x75, 0xe6,
		0x4f, 0xda, 0x5d, 0xac, 0xd0, 0x3f, 0x5b, 0x3c, 0x5e, 0xdf, 0x8d, 0x64, 0xe4, 0xb7, 0x67, 0xcf,
		0xd5, 0x6f, 0x47, 0xb7, 0xbe, 0x37, 0xbe, 0xf3, 0x4f, 0xe2, 0xd9, 0x9b, 0x9d, 0xc5, 0xf3, 0xb1,
		0x97, 0xcf, 0xce, 0x5f, 0xbe, 0xe3, 0xa7, 0xff, 0x97, 0x5e, 0xf2, 0x7c, 0xfc, 0xf3, 0xa7, 0xcf,
		0xa7, 0x1d, 0xdd, 0xea, 0x9d, 0xa1, 0xf4, 0x8d, 0xa0, 0x1a, 0xc7, 0xa6, 0xca, 0x54, 0x85, 0x22,
		0x12, 0xe1, 0x9d, 0x18, 0x54, 0xaf, 0x02, 0x35, 0xf8, 0x21, 0x07, 0x89, 0xc7, 0xeb, 0x1d, 0xa1,
		0xd2, 0x72, 0xe6, 0x55, 0xeb, 0x35, 0xcf, 0x04, 0xbf, 0x4a, 0x35, 0x63, 0xf2, 0x35, 0xcd, 0xcd,
		0x3c, 0x4a, 0xa2, 0x7d, 0xe5, 0xc0, 0xda, 0xd6, 0xdc, 0xd0, 0xb3, 0x50, 0x0c, 0xe5, 0x3d, 0x46,
		0x56, 0x5d, 0xe2, 0x76, 0xd1, 0xd6, 0x41, 0xc8, 0x37, 0x60, 0x75, 0xf3, 0xd3, 0x5a, 0xf9, 0x76,
		0x8e, 0x0c, 0x90, 0xed, 0x57, 0xd4, 0xd2, 0xf8, 0x59, 0x39, 0xbc, 0x04, 0x36, 0x77, 0xfc, 0x8c,
		0xae, 0x66, 0x5a, 0x32, 0x04, 0x29, 0x63, 0x44, 0x3c, 0xbd, 0xad, 0xde, 0x86, 0x72, 0x12, 0xca,
		0xf8, 0x01, 0x27, 0x8a, 0x2d, 0x13, 0xc5, 0x0b, 0xfb, 0x41, 0x22, 0x02, 0x06, 0xc5, 0x81, 0xa3,
		0x3a, 0x88, 0x94, 0x07, 0x98, 0xfa, 0xa0, 0x52, 0x20, 0x78, 0x2a, 0x04, 0x4f, 0x89, 0xb0, 0xa9,
		0x11, 0x06, 0x45, 0x02, 0xa1, 0x4a, 0x70, 0x94, 0x29, 0x35, 0x18, 0x8e, 0x34, 0xad, 0xa4, 0x1a,
		0x30, 0xda, 0xf4, 0x92, 0x3e, 0x6d, 0x83, 0x99, 0x8d, 0x46, 0xa3, 0x90, 0xe9, 0x94, 0x01, 0xb4,
		0x0a, 0x9d, 0x5e, 0x19, 0x43, 0xb3, 0x8c, 0xa1, 0x5b, 0x66, 0xd0, 0x2e, 0x2c, 0xfa, 0x05, 0x46,
		0xc3, 0x52, 0x88, 0x78, 0x0f, 0xb7, 0x02, 0x3b, 0xe2, 0x8f, 0x45, 0x30, 0x0c, 0xc5, 0x10, 0x31,
		0xe2, 0x2f, 0xfb, 0x43, 0x7b, 0x80, 0xb6, 0x9f, 0x2d, 0x8e, 0x44, 0xa4, 0x47, 0x75, 0x53, 0x96,
		0xc9, 0xf3, 0x5b, 0x65, 0x8f, 0x2c, 0x95, 0xf9, 0xa5, 0x2c, 0xd8, 0x82, 0x69, 0x6e, 0x3e, 0x66,
		0xb5, 0x54, 0x63, 0xb5, 0xc4, 0x6a, 0x89, 0xd5, 0x12, 0xab, 0x25, 0x56, 0x4b, 0xac, 0x96, 0xc8,
		0x69, 0xb2, 0x85, 0x08, 0x5a, 0xf3, 0x3a, 0x35, 0x1c, 0xe7, 0x4c, 0xe3, 0x1f, 0xe6, 0x2c, 0x94,
		0x03, 0x8e, 0x7f, 0x44, 0xd4, 0xb6, 0x41, 0xcd, 0x47, 0x25, 0x6c, 0x26, 0x10, 0x37, 0x83, 0x08,
		0x9c, 0x29, 0x44, 0xce, 0x38, 0x42, 0x67, 0x1c, 0xb1, 0x33, 0x8b, 0xe0, 0x61, 0x12, 0x3d, 0x50,
		0xc2, 0x97, 0x42, 0x07, 0xb6, 0x4d, 0xbe, 0x92, 0x31, 0xa4, 0x10, 0x62, 0x38, 0x9e, 0x04, 0x71,
		0xa3, 0x8e, 0x9c, 0x35, 0x16, 0x24, 0x6a, 0x1f, 0x78, 0x09, 0x6d, 0xa1, 0x46, 0x09, 0x21, 0xc7,
		0x96, 0xb6, 0xc5, 0x17, 0x19, 0xad, 0x9c, 0x48, 0x05, 0xcf, 0x3f, 0xd2, 0xc5, 0x24, 0x8a, 0xc9,
		0x95, 0x03, 0xab, 0xb9, 0x61, 0xc6, 0x7a, 0x8e, 0xc3, 0xa0, 0x1f, 0xcb, 0x89, 0x6a, 0xc9, 0x91,
		0x8c, 0x23, 0xdc, 0xba, 0x63, 0x35, 0x22, 0x8b, 0x51, 0x10, 0xcb, 0xbb, 0xd9, 0x67, 0x35, 0x0c,
		0xc6, 0x91, 0xa0, 0x62, 0xb2, 0x0e, 0xa1, 0x20, 0xb8, 0x67, 0x28, 0x60, 0x28, 0x60, 0x28, 0x28,
		0x63, 0x75, 0x82, 0x6f, 0x3d, 0xa6, 0x06, 0x37, 0xde, 0xf3, 0x06, 0x4c, 0x75, 0xb8, 0x07, 0xd9,
		0x57, 0x6a, 0x58, 0xd0, 0x03, 0xed, 0x2f, 0x8b, 0x57, 0xee, 0x00, 0x14, 0xb4, 0x00, 0xee, 0x00,
		0x68, 0xb5, 0x14, 0xee, 0x00, 0x68, 0xba, 0x20, 0xee, 0x00, 0x90, 0x35, 0x91, 0x39, 0xcd, 0xa1,
		0x63, 0xce, 0x0e, 0xc0, 0x54, 0xaa, 0xf8, 0x93, 0x01, 0xbd, 0xff, 0x1d, 0xe0, 0x25, 0x74, 0x03,
		0x35, 0x12, 0x6c, 0xfd, 0x17, 0xff, 0x41, 0x18, 0xd9, 0xfa, 0xdf, 0x66, 0xbf, 0x4f, 0xf3, 0x50,
		0xcc, 0xd6, 0xbf, 0x86, 0xa1, 0xc0, 0xc4, 0xd6, 0xff, 0x1e, 0x43, 0x01, 0x43, 0x01, 0xcb, 0x92,
		0x12, 0x58, 0xcf, 0xd6, 0x3f, 0x2d, 0x86, 0x4f, 0xcc, 0xa8, 0xc3, 0x17, 0x53, 0xfb, 0xcb, 0xa1,
		0x17, 0xbf, 0xaa, 0x36, 0xbd, 0xf5, 0x5c, 0xa1, 0x11, 0x69, 0x2c, 0x23, 0x9e, 0x63, 0x53, 0x91,
		0x2c, 0x4b, 0x97, 0xfd, 0x55, 0x3c, 0x00, 0x6e, 0x2a, 0x56, 0xda, 0x32, 0x8a, 0xed, 0x38, 0x06,
		0x53, 0x53, 0x3b, 0x91, 0xca, 0x19, 0x8b, 0x1b, 0xa1, 0xd0, 0x48, 0xfc, 0xac, 0x3c, 0x7c, 0x62,
		0x79, 0xed, 0x53, 0xb3, 0xb9, 0xbb, 0xd7, 0x6c, 0x6e, 0xef, 0x35, 0xf6, 0xb6, 0xf7, 0x77, 0x76,
		0x6a, 0xbb, 0x35, 0xa0, 0x7e, 0x64, 0xe5, 0x34, 0x1c, 0x88, 0x50, 0x0c, 0x0e, 0x67, 0xc8, 0x57,
		0xd3, 0xf1, 0x18, 0xd1, 0xf4, 0xf3, 0x48, 0x84, 0x50, 0x55, 0x13, 0x07, 0x60, 0x93, 0x7b, 0xad,
		0x81, 0x7b, 0x55, 0xa0, 0x84, 0x62, 0xd6, 0x36, 0xc5, 0xa7, 0x37, 0x7b, 0x48, 0x67, 0x50, 0x22,
		0x45, 0x1c, 0x18, 0x6e, 0x74, 0xc0, 0x85, 0x1c, 0x18, 0x1e, 0x8a, 0xa1, 0x08, 0x85, 0xea, 0x0b,
		0x4e, 0x0d, 0xcf, 0xfe, 0xe1, 0x2e, 0xb7, 0xe8, 0xbb, 0xc7, 0x47, 0x3b, 0x8d, 0xed, 0x9d, 0x03,
		0xcb, 0xed, 0x55, 0xdd, 0x9e, 0xe5, 0xdc, 0xc7, 0x42, 0x45, 0x72, 0xa2, 0x22, 0x6b, 0x38, 0x09,
		0x2d, 0x2f, 0x0c, 0x86, 0x43, 0xd9, 0xb7, 0x1c, 0x35, 0x92, 0x4a, 0x88, 0x50, 0xaa, 0xd1, 0xa6,
		0x15, 0x4d, 0xaf, 0xaa, 0x97, 0xca, 0x6b, 0x5f, 0x58, 0xb5, 0xda, 0x81, 0x35, 0xfb, 0x5a, 0xaf,
		0x6f, 0xd4, 0x1b, 0x1b, 0xb5, 0x66, 0x6d, 0xa3, 0x3e, 0xfb, 0xb6, 0xde, 0xa0, 0xd6, 0xfc, 0x5a,
		0x8a, 0xc9, 0xe5, 0x19, 0xb0, 0x47, 0x4f, 0xa1, 0xdc, 0xfc, 0x9a, 0x09, 0xec, 0x93, 0x63, 0x5e,
		0x39, 0xb9, 0x12, 0x7b, 0x45, 0x25, 0xb3, 0xf2, 0x3b, 0xc0, 0x8c, 0xb2, 0x1f, 0xd7, 0x42, 0x31,
		0x2d, 0xe7, 0x97, 0x96, 0x53, 0xad, 0xd3, 0x64, 0x56, 0xf5, 0xdf, 0xad, 0x9f, 0x16, 0x67, 0x48,
		0xab, 0xe3, 0x68, 0x70, 0x55, 0x9d, 0xbd, 0x19, 0x1d, 0xb8, 0x3d, 0xbf, 0xeb, 0xd8, 0x47, 0x5f,
		0xec, 0x43, 0xb7, 0xed, 0x7a, 0xdf, 0xfc, 0xf3, 0x4e, 0xd7, 0xe9, 0x39, 0xdd, 0x0b, 0xa7, 0xe5,
		0x1f, 0xda, 0x9d, 0xd6, 0x3f, 0xdd, 0x96, 0xf7, 0xe5, 0x27, 0x66, 0xe2, 0xb5, 0x66, 0xe2, 0xc4,
		0x2f, 0x98, 0x84, 0x8b, 0x4b, 0xc2, 0xd9, 0x39, 0x0e, 0xe5, 0x7a, 0x73, 0xf8, 0xa8, 0x5a, 0x22,
		0xea, 0x87, 0xf2, 0x16, 0x72, 0xd7, 0x35, 0x0d, 0xce, 0xa7, 0x6a, 0xfc, 0x60, 0x49, 0xd5, 0x1f,
		0x4f, 0x07, 0xc2, 0x8a, 0xaf, 0x85, 0xf5, 0xd8, 0x2a, 0xb3, 0xd2, 0x56, 0x99, 0xd5, 0x9f, 0xa8,
		0x38, 0x90, 0x4a, 0x84, 0xd6, 0x2c, 0x28, 0x5c, 0xaa, 0xd9, 0x0f, 0xce, 0xf8, 0xde, 0x8c, 0xe5,
		0x25, 0xe0, 0x94, 0x91, 0x55, 0xab, 0x6d, 0xa2, 0x45, 0x0b, 0xe0, 0x2b, 0x34, 0x4f, 0x03, 0xf5,
		0xe0, 0x09, 0x10, 0x01, 0x6f, 0x58, 0x9a, 0x70, 0x5f, 0xe6, 0x59, 0xdc, 0xce, 0xd6, 0xa7, 0x78,
		0x1a, 0x80, 0x15, 0x9e, 0xce, 0x15, 0x1e, 0x7b, 0xd9, 0x1f, 0x09, 0x1b, 0x58, 0x9b, 0x86, 0xa5,
		0xdd, 0x2c, 0xd4, 0x3b, 0x0a, 0xeb, 0x1b, 0x25, 0x34, 0xf6, 0xbf, 0xca, 0x34, 0x96, 0x63, 0xf9,
		0xbf, 0xcf, 0x3e, 0x65, 0xdd, 0x7d, 0xf0, 0xf1, 0x36, 0xe2, 0xaa, 0xed, 0x9a, 0x47, 0x3a, 0x8c,
		0x41, 0x1b, 0x30, 0x2a, 0x0d, 0x48, 0x6a, 0x0c, 0x80, 0xaa, 0x0b, 0x68, 0xa5, 0x21, 0xac, 0x8a,
		0x02, 0x6c, 0xf5, 0x87, 0xa9, 0x8a, 0xc0, 0x93, 0x27, 0x1f, 0xf9, 0xc8, 0x51, 0x06, 0x59, 0x80,
		0x4d, 0x12, 0x83, 0x9c, 0x20, 0x06, 0x36, 0x39, 0x0c, 0x4e, 0x7e, 0x0a, 0x51, 0x6e, 0x0a, 0x58,
		0x5e, 0xca, 0x84, 0x0d, 0x4b, 0x48, 0xf9, 0x28, 0xb3, 0xb6, 0x2c, 0xe1, 0xe4, 0xa1, 0x78, 0x29,
		0xac, 0x8c, 0x04, 0x29, 0x35, 0x18, 0x77, 0xc2, 0x17, 0xfc, 0x64, 0x2f, 0x50, 0x3d, 0x4f, 0x8e,
		0x5e, 0x25, 0xb1, 0x2a, 0x13, 0xc1, 0x32, 0x86, 0x68, 0x19, 0x43, 0xb8, 0xcc, 0x20, 0x5e, 0x58,
		0x04, 0x0c, 0x8c, 0x88, 0xa5, 0x10, 0x81, 0xd5, 0xdf, 0x34, 0x64, 0xf2, 0x16, 0xf0, 0xc4, 0x2d,
		0xf4, 0x49, 0x5b, 0xc0, 0x9a, 0xb3, 0x26, 0xc8, 0x6b, 0x9a, 0x32, 0x46, 0xc7, 0x38, 0x0d, 0x3d,
		0x73, 0xb4, 0xf3, 0x80, 0xe5, 0x33, 0x8d, 0x90, 0xcd, 0xa4, 0x8b, 0xd3, 0xc5, 0x59, 0x1d, 0x18,
		0x61, 0xf5, 0x77, 0x9e, 0x32, 0x2f, 0x7b, 0x8a, 0xaa, 0xc4, 0x88, 0xb5, 0x62, 0x5a, 0x27, 0x26,
		0xd6, 0xb3, 0x03, 0xbe, 0x0e, 0xb3, 0xd9, 0x01, 0x2f, 0x10, 0xe7, 0xec, 0x80, 0x17, 0xe7, 0xae,
		0xec, 0x80, 0x6b, 0xb6, 0x10, 0x76, 0xc0, 0xc9, 0x68, 0xfe, 0x00, 0x22, 0x06, 0x74, 0xc0, 0x07,
		0x42, 0xc5, 0x32, 0x7e, 0x08, 0xc5, 0x10, 0xb8, 0x03, 0x5e, 0x03, 0x1c, 0x3c, 0x55, 0x71, 0x17,
		0x8f, 0xfe, 0x30, 0x88, 0x04, 0xfe, 0x00, 0x58, 0xb7, 0xe7, 0xf6, 0xfc, 0xde, 0xf9, 0xa1, 0xd7,
		0xbe, 0xf0, 0xbd, 0x6f, 0x67, 0x0e, 0x6a, 0xfa, 0x4a, 0xda, 0x4e, 0x11, 0xf4, 0x1c, 0x30, 0xf0,
		0xc6, 0x5f, 0x8a, 0xa8, 0xb3, 0xe7, 0xea, 0x23, 0xee, 0xd9, 0x45, 0xd3, 0xef, 0x9e, 0x9e, 0x7b,
		0x4e, 0xd7, 0x77, 0x5b, 0x15, 0x76, 0x96, 0x89, 0xac, 0xec, 0x90, 0xb5, 0x4b, 0x64, 0x11, 0x59,
		0xd9, 0x23, 0xeb, 0xac, 0xeb, 0x1c, 0xbb, 0x5f, 0xfd, 0xe3, 0xb6, 0xfd, 0xb9, 0x47, 0x5c, 0x11,
		0x57, 0x19, 0xe3, 0xaa, 0xc7, 0x68, 0x45, 0x54, 0x65, 0x87, 0xaa, 0x39, 0x7d, 0xef, 0x21, 0xf3,
		0x77, 0x93, 0x78, 0xbc, 0x19, 0x68, 0x2b, 0x0d, 0xaf, 0x37, 0x20, 0xae, 0x95, 0x07, 0x71, 0xbb,
		0x44, 0x1c, 0x11, 0xc7, 0x3a, 0x80, 0x78, 0xb3, 0x58, 0x1f, 0x10, 0x6d, 0x44, 0xdb, 0x87, 0xd0,
		0xe6, 0xd9, 0x9f, 0x09, 0x33, 0xc2, 0x6c, 0x0d, 0x30, 0xdb, 0x6d, 0x56, 0x38, 0x8d, 0xbd, 0xd0,
		0xd7, 0x77, 0xf6, 0x9b, 0xe8, 0xd8, 0xcc, 0x1b, 0x84, 0x13, 0xf3, 0x03, 0x01, 0x65, 0x1a, 0xa0,
		0x5e, 0xcc, 0x3b, 0xb1, 0x5b, 0xff, 0xf0, 0xdb, 0x76, 0x87, 0xdb, 0x2c, 0x84, 0x55, 0xd6, 0xb0,
		0x22, 0xa4, 0x08, 0xa9, 0x4c, 0x21, 0x75, 0xe2, 0x76, 0xfc, 0xcf, 0xdd, 0xd3, 0xf3, 0x33, 0xc2,
		0x8a, 0xb0, 0xca, 0x0c, 0x56, 0x17, 0xb6, 0xdb, 0xb6, 0x0f, 0xdb, 0xce, 0xe3, 0xbc, 0x2f, 0xc2,
		0x8b, 0xf0, 0xca, 0x0a, 0x5e, 0x29, 0xa8, 0xfc, 0xa3, 0xd3, 0x4e, 0xcf, 0xeb, 0xda, 0x6e, 0xc7,
		0xe3, 0x31, 0x29, 0x02, 0x2c, 0x33, 0x80, 0x39, 0x5f, 0x3d, 0xa7, 0xd3, 0x72, 0x5a, 0xcc, 0x8f,
		0xc4, 0x57, 0x1e, 0xf8, 0x4a, 0x8e, 0xae, 0xb8, 0x1d, 0xcf, 0xe9, 0x1e, 0xdb, 0x47, 0x8e, 0x6f,
		0xb7, 0x5a, 0x5d, 0xa7, 0xc7, 0x08, 0x46, 0x84, 0x65, 0x8b, 0xb0, 0x8e, 0xe3, 0x7e, 0xfe, 0x72,
		0x78, 0xda, 0x25, 0xc0, 0x08, 0xb0, 0x1c, 0x00, 0xb6, 0xcb, 0x10, 0x46, 0x84, 0xe5, 0x8c, 0x30,
		0x86, 0x30, 0x02, 0x2c, 0x2f, 0x80, 0xb5, 0xdd, 0xce, 0xaf, 0xbe, 0xed, 0x79, 0x5d, 0xf7, 0xf0,
		0xdc, 0x73, 0x08, 0x2d, 0x42, 0x2b, 0x5b, 0x68, 0xb5, 0x9c, 0xb6, 0xfd, 0x8d, 0xa8, 0x22, 0xaa,
		0xb2, 0x47, 0x95, 0x7f, 0x61, 0x77, 0x5d, 0xdb, 0x73, 0x4f, 0x3b, 0xc4, 0x17, 0xf1, 0x95, 0x29,
		0xbe, 0xb8, 0xc1, 0x48, 0x48, 0x65, 0x0c, 0xa9, 0xf6, 0x29, 0x89, 0x3b, 0x41, 0x95, 0x31, 0xa8,
		0xce, 0xba, 0xa7, 0x9e, 0x73, 0x34, 0x4b, 0x81, 0xf3, 0x7b, 0xa7, 0xc4, 0x17, 0xf1, 0x95, 0x11,
		0xbe, 0x4e, 0xec, 0xaf, 0x73, 0x8c, 0x71, 0xf7, 0x9a, 0xe8, 0xca, 0x05, 0x5d, 0x5d, 0xa7, 0xe7,
		0x74, 0x2f, 0x78, 0x42, 0x82, 0x18, 0xcb, 0x09, 0x63, 0x6e, 0xe7, 0x31, 0x8a, 0xb1, 0x0f, 0x41,
		0x74, 0x65, 0x8a, 0xae, 0xae, 0xd3, 0x73, 0x5b, 0xe7, 0x76, 0x9b, 0xb1, 0x8b, 0xe8, 0xca, 0x1e,
		0x5d, 0x54, 0x93, 0x21, 0xda, 0xd6, 0x8f, 0x3a, 0x23, 0xee, 0x6c, 0x18, 0x10, 0xd4, 0x4a, 0x04,
		0x37, 0x42, 0x8d, 0x50, 0x5b, 0x0b, 0xd4, 0x0c, 0x38, 0xc3, 0x4a, 0xb8, 0xc1, 0xc0, 0xcd, 0xa4,
		0xbb, 0x1f, 0x84, 0x1d, 0x0a, 0xec, 0x0c, 0xbb, 0x13, 0x42, 0xe0, 0xa1, 0x00, 0xcf, 0xac, 0xbb,
		0x22, 0xc4, 0x1d, 0x0a, 0xee, 0x4c, 0xbb, 0x43, 0x42, 0xe4, 0x41, 0x21, 0xcf, 0x9c, 0x83, 0xd9,
		0x04, 0x1e, 0x10, 0xf0, 0x76, 0x19, 0xf2, 0x88, 0xbc, 0x82, 0x90, 0xc7, 0x90, 0x47, 0xe0, 0xad,
		0x1b, 0x78, 0xc6, 0xdc, 0x51, 0x21, 0xe4, 0xa0, 0x20, 0x07, 0x7e, 0x66, 0x84, 0x68, 0xc3, 0x43,
		0x9b, 0x09, 0x77, 0x5a, 0x88, 0x3b, 0x28, 0xdc, 0x71, 0x03, 0x96, 0x50, 0x5b, 0x13, 0xd4, 0xb0,
		0xef, 0xc0, 0x10, 0x6c, 0x50, 0x60, 0x33, 0xe6, 0x6e, 0x0c, 0x71, 0x87, 0x82, 0x3b, 0x93, 0xee,
		0xcc, 0x10, 0x75, 0x48, 0xa8, 0x33, 0xeb, 0x2e, 0x0d, 0xb1, 0x07, 0x83, 0x3d, 0x83, 0xee, 0xd8,
		0x10, 0x75, 0x28, 0xa8, 0x33, 0xe9, 0xee, 0x0d, 0x51, 0x87, 0x82, 0x3a, 0xcf, 0xf1, 0x5b, 0xce,
		0xb1, 0x7d, 0xde, 0xf6, 0xfc, 0x13, 0xc7, 0xeb, 0xba, 0x47, 0x04, 0x1d, 0x41, 0x97, 0x37, 0xe8,
		0xce, 0x3b, 0xe9, 0x51, 0x4e, 0xa7, 0xe5, 0xb7, 0x7b, 0x3c, 0x56, 0x47, 0xd0, 0xad, 0x01, 0x74,
		0xf3, 0x7a, 0xc2, 0x69, 0x31, 0xc3, 0x12, 0x77, 0x6b, 0xc4, 0x9d, 0xe7, 0xb6, 0xdd, 0x7f, 0x19,
		0x86, 0x3a, 0x4e, 0xac, 0xa4, 0xb7, 0x97, 0xc9, 0xcb, 0xcb, 0xc0, 0x9f, 0x09, 0x2e, 0xf2, 0x64,
		0x82, 0xab, 0x44, 0xe0, 0x32, 0x89, 0x0f, 0x13, 0x5f, 0xe4, 0xbd, 0x44, 0x97, 0xb9, 0xe8, 0xea,
		0x9e, 0x9e, 0x7b, 0x4e, 0xd7, 0x3f, 0xb2, 0xcf, 0x52, 0x35, 0xa1, 0xae, 0x6f, 0xb7, 0x3f, 0x9f,
		0x76, 0x5d, 0xef, 0xcb, 0x09, 0x91, 0x45, 0x64, 0x65, 0x8a, 0xac, 0xc7, 0xbf, 0x11, 0x5a, 0x84,
		0x56, 0x86, 0xd0, 0xa2, 0x04, 0x1a, 0xf1, 0xc6, 0x64, 0x59, 0xde, 0xc8, 0x56, 0x26, 0xc4, 0x99,
		0x90, 0x44, 0x53, 0xc8, 0xb1, 0xe3, 0xcd, 0xe7, 0x6e, 0xf0, 0xf3, 0xc6, 0x7a, 0xce, 0x38, 0xd6,
		0x62, 0x58, 0x0a, 0x92, 0x50, 0x2b, 0xb6, 0x52, 0x93, 0x38, 0x88, 0xe5, 0x44, 0x55, 0x0e, 0x80,
		0x52, 0x68, 0x25, 0xea, 0x5f, 0x8b, 0x9b, 0xe0, 0x36, 0x88, 0xaf, 0x67, 0xc9, 0x72, 0x6b, 0x72,
		0x2b, 0x54, 0x7f, 0xa2, 0x86, 0x72, 0x54, 0x55, 0x22, 0xfe, 0x31, 0x09, 0x7f, 0xab, 0x4a, 0x15,
		0xc5, 0x81, 0xea, 0x8b, 0xad, 0x97, 0x6f, 0x44, 0x2b, 0xef, 0x6c, 0xdd, 0x86, 0x93, 0x78, 0xd2,
		0x9f, 0x8c, 0xa3, 0xf4, 0xbb, 0x2d, 0x19, 0xc9, 0x68, 0x6b, 0x2c, 0xee, 0xc4, 0x78, 0xf1, 0x65,
		0x6b, 0x2c, 0xd5, 0x6f, 0xd5, 0x28, 0x0e, 0x62, 0x51, 0x1d, 0x04, 0x71, 0x70, 0x15, 0x44, 0x62,
		0x6b, 0x1c, 0xdd, 0x6e, 0xc5, 0xe3, 0xbb, 0x68, 0xf6, 0xc7, 0xd6, 0x4d, 0x5c, 0x9d, 0xfd, 0x56,
		0x55, 0x09, 0x39, 0xba, 0xbe, 0x9a, 0x84, 0xd5, 0x20, 0x8e, 0x43, 0x79, 0x35, 0x8d, 0x67, 0x36,
		0xcc, 0xdf, 0x8a, 0xd2, 0xef, 0xb6, 0x1e, 0xcd, 0x49, 0xcd, 0x88, 0xa6, 0x57, 0xc9, 0xff, 0x6c,
		0xfe, 0x75, 0x6b, 0x1a, 0xcb, 0xb1, 0xfc, 0x5f, 0x31, 0xa8, 0x5e, 0x05, 0x6a, 0xf0, 0x43, 0x0e,
		0xe2, 0xeb, 0xad, 0xe4, 0x9f, 0xc7, 0xc8, 0xfd, 0xfa, 0xfb, 0xa9, 0xde, 0x16, 0x6a, 0x1e, 0x41,
		0x2a, 0xe2, 0x3e, 0x0e, 0x83, 0xea, 0x74, 0x86, 0xdd, 0xab, 0xb1, 0x80, 0x88, 0x1e, 0x95, 0x50,
		0x0c, 0x45, 0x28, 0x54, 0x5f, 0xc0, 0xd4, 0xd8, 0x40, 0x21, 0x39, 0xad, 0x5c, 0x8e, 0x8f, 0xf6,
		0x3e, 0xd5, 0xb6, 0x0f, 0x2c, 0xb7, 0x57, 0x75, 0x7b, 0x96, 0x17, 0x06, 0xc3, 0xa1, 0xec, 0x5b,
		0x8e, 0x1a, 0x49, 0x25, 0x44, 0x28, 0xd5, 0xc8, 0xfa, 0xd9, 0x73, 0x7e, 0xb1, 0x4e, 0x44, 0x1c,
		0xca, 0xfe, 0xa5, 0x72, 0xee, 0x63, 0xa1, 0x22, 0x39, 0x51, 0xd1, 0xa6, 0x15, 0x4d, 0xaf, 0xaa,
		0x5e, 0xfb, 0xc2, 0x6a, 0xec, 0x1f, 0x58, 0xb3, 0xaf, 0xf5, 0xfa, 0x86, 0x55, 0x6f, 0x6c, 0x58,
		0xb5, 0x66, 0x6d, 0xc3, 0xaa, 0x27, 0x7f, 0xab, 0x37, 0x36, 0x81, 0xfa, 0x3c, 0x95, 0xde, 0x64,
		0x1a, 0xf6, 0x05, 0x54, 0x72, 0x4d, 0xec, 0xfe, 0x55, 0x3c, 0xfc, 0x98, 0x84, 0x83, 0xd9, 0x07,
		0xfa, 0xe8, 0x35, 0x58, 0x5d, 0x82, 0xca, 0x97, 0x20, 0xb2, 0xc3, 0xd1, 0xf4, 0x46, 0xa8, 0xb8,
		0x72, 0x60, 0xc5, 0xe1, 0x54, 0x80, 0x2d, 0xe0, 0x89, 0xf5, 0xeb, 0x70, 0x2b, 0xd6, 0x00, 0x25,
		0xb3, 0xf2, 0xbb, 0xfe, 0xfe, 0x50, 0xf9, 0x71, 0x2d, 0x14, 0xd3, 0x75, 0x7e, 0xe9, 0x7a, 0x73,
		0x73, 0x5e, 0x55, 0x6c, 0xc5, 0x0f, 0xb7, 0xc2, 0xfa, 0xbb, 0xf5, 0xd3, 0xa4, 0x3f, 0x2f, 0x63,
		0xc6, 0xd1, 0xe0, 0xaa, 0x3a, 0x7b, 0x33, 0x3a, 0xf8, 0xe3, 0x93, 0x08, 0x3f, 0x31, 0x27, 0xaf,
		0x35, 0x27, 0x27, 0x5e, 0xc1, 0x74, 0x5c, 0x5c, 0x3a, 0xce, 0xca, 0x6d, 0x70, 0x72, 0x2e, 0x90,
		0x83, 0xb7, 0x44, 0xd4, 0x0f, 0xe5, 0x2d, 0x5c, 0x5b, 0xeb, 0x59, 0x60, 0x3e, 0x55, 0xe3, 0x07,
		0x4b, 0xaa, 0xfe, 0x78, 0x3a, 0x10, 0x56, 0x7c, 0x2d, 0xac, 0x65, 0x3f, 0xc8, 0x4a, 0xfb, 0x41,
		0x56, 0x7f, 0xa2, 0xe2, 0x40, 0x2a, 0x11, 0x5a, 0xb3, 0x80, 0x30, 0xfb, 0xa9, 0x4b, 0x35, 0x23,
		0x78, 0x32, 0xb2, 0x12, 0x5c, 0x36, 0xf6, 0x37, 0xd1, 0xa2, 0x04, 0x68, 0x70, 0x7e, 0x19, 0xa0,
		0x07, 0x4f, 0x20, 0x88, 0xb7, 0xb9, 0x0a, 0x1f, 0xab, 0x57, 0xe2, 0x75, 0x56, 0xde, 0xc4, 0x5d,
		0x1d, 0x56, 0x74, 0x3a, 0x57, 0x74, 0xec, 0x69, 0x7f, 0x24, 0x60, 0x60, 0xed, 0x86, 0x95, 0x74,
		0x17, 0x0c, 0x20, 0x9f, 0x56, 0xa2, 0x38, 0x9c, 0xf6, 0x63, 0xb5, 0xa0, 0x72, 0x9d, 0xf9, 0xa3,
		0x76, 0x17, 0x4b, 0xf4, 0xcf, 0x16, 0xcf, 0xd7, 0x77, 0x23, 0x19, 0xf9, 0xed, 0xd9, 0x83, 0xf5,
		0xdb, 0xd1, 0xad, 0xef, 0x8d, 0xef, 0xfc, 0x93, 0x78, 0xf6, 0x66, 0x67, 0xf1, 0x80, 0xec, 0xe5,
		0xc3, 0xf3, 0x97, 0xef, 0xf8, 0xe9, 0xff, 0xa5, 0x97, 0x3c, 0x20, 0xff, 0x7c, 0xf1, 0x80, 0x0e,
		0xd3, 0xe7, 0xf3, 0x37, 0xc6, 0x50, 0x73, 0x2c, 0xd3, 0x34, 0x66, 0xce, 0xb8, 0xee, 0x0c, 0xda,
		0x33, 0x62, 0xa4, 0xa9, 0x43, 0x56, 0xda, 0x32, 0x8a, 0x67, 0x0e, 0xa4, 0x75, 0x30, 0xaf, 0x9c,
		0x48, 0xe5, 0x8c, 0xc5, 0x8c, 0xa7, 0x46, 0x95, 0x03, 0x6b, 0x7b, 0x43, 0x63, 0x4b, 0x83, 0xfb,
		0x27, 0x96, 0xd6, 0x3e, 0x35, 0x9b, 0xbb, 0x7b, 0xcd, 0xe6, 0xf6, 0x5e, 0x63, 0x6f, 0x7b, 0x7f,
		0x67, 0xa7, 0xb6, 0x5b, 0xdb, 0xd1, 0xd8, 0xf8, 0xd3, 0x70, 0x20, 0x42, 0x31, 0x38, 0x9c, 0xa1,
		0x56, 0x4d, 0xc7, 0x63, 0x04, 0x53, 0xcf, 0x23, 0x31, 0x03, 0xef, 0x30, 0x18, 0x47, 0x82, 0xc1,
		0xc9, 0x3c, 0x22, 0x57, 0x06, 0x02, 0xa7, 0x31, 0x5b, 0x5b, 0x23, 0x4b, 0xd3, 0x93, 0x93, 0xe9,
		0xc7, 0x78, 0xf4, 0xb2, 0x48, 0xb3, 0xf0, 0xa6, 0x7b, 0x58, 0x33, 0x3a, 0x9c, 0xe9, 0xe5, 0xc1,
		0xfa, 0xf8, 0x89, 0x46, 0x3e, 0x52, 0x99, 0xaa, 0x81, 0x18, 0x4a, 0x25, 0x06, 0xd5, 0xe5, 0x87,
		0xa6, 0x9b, 0x9b, 0xa4, 0xbb, 0x3b, 0xab, 0xa6, 0x6a, 0x16, 0x6b, 0x7e, 0x95, 0x6a, 0x30, 0x63,
		0xf9, 0x9a, 0x99, 0x75, 0x94, 0xc4, 0x13, 0xfd, 0x0a, 0xa5, 0xca, 0x59, 0x28, 0x86, 0xf2, 0x5e,
		0xcf, 0xb8, 0xbc, 0x04, 0xdd, 0x62, 0x8f, 0x5a, 0x43, 0x4a, 0xa6, 0xfb, 0xb6, 0xdf, 0xd3, 0xad,
		0xbd, 0xdb, 0xf9, 0x27, 0xad, 0x69, 0xe9, 0x83, 0xb2, 0x73, 0xf7, 0x6c, 0x77, 0x6e, 0x09, 0x4c,
		0xf2, 0x51, 0x28, 0x3e, 0xda, 0x92, 0x7a, 0xf6, 0xd6, 0x56, 0xb2, 0xab, 0xbe, 0x71, 0xe5, 0x2d,
		0x3e, 0xa0, 0x6b, 0x78, 0xd1, 0x93, 0x16, 0x68, 0x4f, 0x0f, 0x10, 0x68, 0x02, 0x10, 0x5d, 0x40,
		0xa1, 0x0d, 0x70, 0xf4, 0x01, 0x8e, 0x46, 0x60, 0xd1, 0x09, 0x3d, 0x69, 0x85, 0xa6, 0xf4, 0x42,
		0x7b, 0x9a, 0x91, 0x1a, 0x38, 0xbf, 0x96, 0xab, 0x7d, 0x10, 0x5a, 0xc6, 0xf5, 0xb9, 0xb9, 0x9a,
		0xfb, 0xb3, 0xde, 0x44, 0x03, 0x86, 0x70, 0x20, 0x11, 0x0f, 0x40, 0x02, 0x82, 0x46, 0x44, 0x60,
		0x09, 0x09, 0x2c, 0x31, 0xc1, 0x24, 0x28, 0x7a, 0x13, 0x15, 0xcd, 0x09, 0x0b, 0x0c, 0x71, 0x49,
		0x0d, 0x1d, 0x0b, 0x35, 0x4a, 0x36, 0xed, 0x40, 0xa2, 0xd7, 0x32, 0x41, 0x2c, 0xec, 0x06, 0x89,
		0x00, 0x0b, 0x4a, 0xb3, 0x0d, 0x62, 0x2e, 0x0a, 0xb5, 0x41, 0xa4, 0x38, 0xc0, 0x54, 0x07, 0x95,
		0xf2, 0xc0, 0x53, 0x1f, 0x78, 0x0a, 0x84, 0x4d, 0x85, 0x30, 0x28, 0x11, 0x08, 0x35, 0x4a, 0xa1,
		0xe0, 0x3d, 0xdc, 0x0a, 0xcc, 0x88, 0x3d, 0x95, 0x2a, 0xfe, 0x84, 0x14, 0xaf, 0x17, 0xf4, 0x63,
		0x07, 0xc8, 0xe4, 0x6e, 0xa0, 0x46, 0x02, 0x4e, 0x10, 0x1b, 0xf0, 0xe6, 0xf2, 0x89, 0x54, 0x90,
		0x57, 0xae, 0xad, 0x54, 0x37, 0x1d, 0x87, 0xa7, 0xae, 0xd8, 0x7f, 0x1c, 0x06, 0xfd, 0x58, 0x4e,
		0x54, 0x4b, 0x8e, 0xa4, 0xee, 0x97, 0x40, 0xfe, 0x7b, 0x68, 0x14, 0xa3, 0x20, 0x96, 0x77, 0x42,
		0xeb, 0x3b, 0x0b, 0x06, 0x64, 0xcd, 0xe7, 0xae, 0x1b, 0xdc, 0xe3, 0xbb, 0x6e, 0x7d, 0x67, 0x87,
		0xce, 0x4b, 0xe7, 0x2d, 0x01, 0x31, 0xc7, 0xb3, 0xf6, 0x3b, 0xb5, 0x19, 0xca, 0x92, 0x5c, 0xe6,
		0xd7, 0x79, 0xe1, 0xda, 0xc0, 0x1a, 0x5f, 0x42, 0x7e, 0xab, 0x0a, 0x63, 0x13, 0x38, 0x27, 0x83,
		0xd9, 0x04, 0x5e, 0xab, 0xe9, 0x6c, 0x02, 0x17, 0xb4, 0x00, 0x36, 0x81, 0xc9, 0x36, 0x0c, 0x29,
		0x67, 0xd9, 0x04, 0x5e, 0x3b, 0xfd, 0x60, 0x13, 0x38, 0xef, 0x17, 0x9b, 0xc0, 0xeb, 0x35, 0x9e,
		0x4d, 0x60, 0x5d, 0x42, 0x23, 0x9b, 0xc0, 0x05, 0xb8, 0x2e, 0x9b, 0xc0, 0x74, 0x5e, 0x3a, 0x2f,
		0x9b, 0xc0, 0x79, 0xbd, 0xd8, 0x04, 0x2e, 0x4d, 0x72, 0xa9, 0xdc, 0x2d, 0xe2, 0x31, 0x58, 0x17,
		0x78, 0x6e, 0x36, 0xdb, 0xc0, 0x79, 0x98, 0xcb, 0x36, 0xf0, 0x1a, 0x81, 0xcc, 0x36, 0xf0, 0xfa,
		0xdc, 0x90, 0x6d, 0xe0, 0x82, 0x17, 0xc0, 0x36, 0x30, 0x39, 0xc7, 0x02, 0x0a, 0xb8, 0x6d, 0xe0,
		0x2b, 0xa9, 0x82, 0xf0, 0x01, 0xb0, 0x0f, 0xbc, 0x4f, 0x5a, 0x5f, 0x02, 0x0b, 0x39, 0x77, 0x23,
		0x5b, 0x7b, 0x8d, 0xd4, 0x39, 0x5d, 0x51, 0xa4, 0x5c, 0x79, 0x07, 0x61, 0xfc, 0xbc, 0xc6, 0xe3,
		0x25, 0x34, 0x96, 0x51, 0x82, 0x38, 0xf6, 0x85, 0x74, 0xdc, 0x0b, 0xa4, 0xbe, 0xa7, 0x7c, 0x09,
		0xeb, 0x78, 0x8b, 0xf2, 0x25, 0xac, 0xd7, 0x0d, 0xad, 0xd3, 0x49, 0xcb, 0x4b, 0x51, 0x8f, 0x3f,
		0xd1, 0x03, 0x09, 0x86, 0xa1, 0x18, 0x22, 0x44, 0xdc, 0xa5, 0xbe, 0xd9, 0x1e, 0x80, 0xad, 0x67,
		0x8b, 0x4a, 0xe7, 0xd9, 0xd0, 0x6b, 0xd6, 0x01, 0x26, 0x59, 0xc6, 0x31, 0x73, 0xef, 0x36, 0x91,
		0x63, 0xe6, 0x32, 0xb6, 0x94, 0x63, 0xe6, 0xd6, 0x6b, 0x2a, 0xc7, 0xcc, 0xbd, 0x97, 0x13, 0x73,
		0xcc, 0x9c, 0xce, 0xfd, 0xca, 0xb2, 0x8f, 0x9e, 0x3b, 0x5f, 0x3e, 0x0f, 0xce, 0xa0, 0xc3, 0xb5,
		0x88, 0x33, 0xe8, 0x18, 0xeb, 0x56, 0x63, 0x1d, 0xa7, 0xd1, 0xe9, 0x6c, 0x89, 0x26, 0x3e, 0xbb,
		0x2c, 0x9e, 0xe4, 0x40, 0x93, 0x4c, 0xa8, 0x67, 0xa9, 0xa4, 0x6f, 0x69, 0x04, 0x55, 0x0a, 0x69,
		0x5c, 0xfa, 0x68, 0x5c, 0xea, 0xe8, 0x12, 0x2a, 0x34, 0x4d, 0xeb, 0x46, 0xa6, 0x73, 0x8d, 0xea,
		0x92, 0x75, 0xd4, 0x21, 0x7a, 0x70, 0x95, 0xe2, 0x99, 0x41, 0xb1, 0x16, 0x14, 0x1c, 0x68, 0x74,
		0x0b, 0x30, 0x26, 0x05, 0x96, 0x62, 0x1d, 0xac, 0x38, 0x58, 0x17, 0x08, 0xe9, 0xca, 0xec, 0xa3,
		0x1a, 0x14, 0x8e, 0xe4, 0x74, 0xe3, 0x73, 0x6e, 0x4e, 0xc1, 0x2e, 0xae, 0xc7, 0x99, 0x27, 0x6d,
		0xce, 0x34, 0xe9, 0x74, 0x66, 0x49, 0xc3, 0x33, 0x49, 0xba, 0x9d, 0x39, 0xd2, 0xf6, 0x4c, 0x91,
		0xb6, 0x67, 0x86, 0xf4, 0x3c, 0x13, 0x54, 0x6e, 0x9a, 0xa5, 0xcd, 0x99, 0x1d, 0x0d, 0xcf, 0xe4,
		0xe8, 0x74, 0xe6, 0x66, 0xf5, 0x4c, 0xcd, 0x3c, 0x85, 0x93, 0xca, 0x15, 0x50, 0x02, 0xeb, 0x30,
		0xbd, 0x53, 0xab, 0xe9, 0x9c, 0x9a, 0x4c, 0xdf, 0x24, 0x95, 0x23, 0x95, 0x23, 0x95, 0x23, 0x95,
		0x2b, 0x27, 0x95, 0xd3, 0x65, 0x7a, 0xa4, 0x26, 0xbd, 0x0e, 0x2d, 0x7b, 0x1e, 0x9a, 0xf5, 0x3e,
		0xb4, 0x4b, 0x9c, 0x3a, 0x26, 0x50, 0x8d, 0x13, 0xa9, 0xae, 0x09, 0x55, 0xfb, 0xc4, 0xaa, 0x7d,
		0x82, 0xd5, 0x3b, 0xd1, 0xea, 0x91, 0x70, 0x35, 0x49, 0xbc, 0xfa, 0xf5, 0x52, 0x56, 0x22, 0xd6,
		0x54, 0xaa, 0xb8, 0xb6, 0xab, 0x53, 0xc0, 0x5a, 0xe4, 0xbf, 0x5d, 0x8d, 0x4c, 0xd2, 0x53, 0x37,
		0x5a, 0xc3, 0x23, 0x93, 0x3a, 0xeb, 0x3e, 0xeb, 0xae, 0xeb, 0x0c, 0x23, 0xfd, 0xaa, 0xbf, 0xb4,
		0xab, 0x86, 0xb7, 0x3c, 0xb4, 0xd6, 0x55, 0x4e, 0x5d, 0xa3, 0xb9, 0xbd, 0xbf, 0x43, 0xef, 0x30,
		0xdd, 0x3b, 0x78, 0xe2, 0xfb, 0xd5, 0xd7, 0x77, 0x9e, 0x2e, 0xd3, 0x25, 0x7a, 0x56, 0xa2, 0x87,
		0x28, 0x16, 0x37, 0x5a, 0x36, 0x8b, 0x1e, 0x4d, 0x63, 0xc3, 0xe8, 0x35, 0x73, 0xd8, 0x30, 0xfa,
		0x0b, 0x60, 0x62, 0xc3, 0xe8, 0xcf, 0xc3, 0x9c, 0x0d, 0xa3, 0x0f, 0x1a, 0xc8, 0x86, 0x11, 0x4a,
		0xe5, 0xa0, 0x71, 0xc3, 0x48, 0xb7, 0xf4, 0xf7, 0x34, 0x05, 0xd6, 0x3e, 0x69, 0x64, 0xd3, 0x59,
		0x10, 0xc7, 0x22, 0x54, 0xda, 0xb5, 0x8d, 0x2a, 0xff, 0xde, 0xae, 0xee, 0xdb, 0xd5, 0xe3, 0xa0,
		0x3a, 0xfc, 0xfe, 0x7f, 0xcd, 0xdf, 0x2f, 0x2f, 0x37, 0xff, 0xe0, 0x0d, 0x7d, 0x62, 0xc4, 0x77,
		0x9d, 0x3e, 0xde, 0xd3, 0x9e, 0xfb, 0x55, 0xdb, 0xcf, 0xf8, 0x7f, 0xfe, 0xea, 0x87, 0xfc, 0xff,
		0x2a, 0xac, 0xc3, 0x74, 0xab, 0xc3, 0x78, 0xcb, 0x87, 0xb7, 0x7c, 0x32, 0xbc, 0xe5, 0xa3, 0x81,
		0xe6, 0x72, 0x49, 0x8f, 0x85, 0x6a, 0xd3, 0xcc, 0xd0, 0x8e, 0xc5, 0xf1, 0xa6, 0x8f, 0xbe, 0xcd,
		0x0a, 0x1e, 0x0f, 0xc5, 0x6d, 0x4a, 0xf0, 0x78, 0x28, 0xa9, 0x16, 0x5e, 0xb3, 0x81, 0x37, 0x7d,
		0xfe, 0xb0, 0xa5, 0xf0, 0xfc, 0xa6, 0xcf, 0x63, 0x1a, 0x2f, 0x2b, 0xad, 0xfb, 0x5b, 0x89, 0x1c,
		0x76, 0xa9, 0xc2, 0x94, 0x1c, 0x57, 0xb6, 0x8a, 0xa6, 0x70, 0x7a, 0x48, 0x30, 0xe9, 0x23, 0xb9,
		0xa4, 0xb5, 0xc4, 0x92, 0x46, 0x92, 0x4a, 0x1a, 0x49, 0x28, 0x15, 0xe5, 0xc7, 0x9a, 0xf4, 0x36,
		0xf0, 0x7b, 0x1a, 0x95, 0x42, 0x2f, 0x7b, 0xe6, 0xa5, 0x77, 0x54, 0x4c, 0x32, 0x5f, 0x7f, 0x2a,
		0x5d, 0xef, 0xbf, 0xb8, 0x66, 0x67, 0x2f, 0xda, 0xc9, 0x61, 0x9d, 0x7b, 0xbd, 0xe8, 0x5f, 0x1f,
		0x06, 0xd7, 0xf3, 0x2f, 0xad, 0x09, 0xe5, 0x15, 0x71, 0x1f, 0x87, 0x41, 0x75, 0x3a, 0x83, 0xc7,
		0xd5, 0x78, 0xbd, 0xd5, 0x63, 0x25, 0x14, 0x43, 0x11, 0x0a, 0xd5, 0x5f, 0xff, 0x91, 0xfc, 0x02,
		0xdc, 0x78, 0x59, 0x12, 0x77, 0x8f, 0x8f, 0x76, 0x1a, 0xb5, 0xda, 0x81, 0xd5, 0x93, 0x37, 0xb7,
		0x63, 0x39, 0x94, 0x62, 0x60, 0x39, 0xf7, 0xb1, 0x50, 0x91, 0x9c, 0x28, 0x6b, 0x32, 0xb4, 0xda,
		0x52, 0xfd, 0x66, 0xf5, 0x66, 0xce, 0x67, 0x9d, 0xb5, 0xce, 0xad, 0x9f, 0xdb, 0xbd, 0xb3, 0x5f,
		0x2e, 0x55, 0xef, 0x36, 0xe8, 0x0b, 0x6b, 0x38, 0x09, 0x2d, 0xb7, 0x57, 0x75, 0x7b, 0x9b, 0x96,
		0xd7, 0xbe, 0xb0, 0xea, 0xf5, 0xc6, 0xa6, 0xe5, 0xc6, 0x96, 0x8c, 0x2c, 0x39, 0x10, 0x2a, 0x96,
		0xfd, 0x60, 0x6c, 0x49, 0x35, 0xfb, 0xb1, 0x9b, 0x20, 0xb6, 0xe2, 0x89, 0x15, 0x5f, 0x8b, 0x4b,
		0x75, 0xe2, 0x55, 0xdd, 0x5e, 0x67, 0xf1, 0x1b, 0xf5, 0xcd, 0x02, 0x92, 0x6d, 0xd1, 0xfd, 0xbe,
		0xa7, 0xfd, 0xbd, 0x47, 0xd4, 0x15, 0xc4, 0x1a, 0x75, 0x69, 0xe9, 0x3d, 0x6b, 0xe1, 0x69, 0x00,
		0x4b, 0xd3, 0x79, 0xcb, 0xda, 0xfe, 0xb5, 0x35, 0x1e, 0xaf, 0xa8, 0xfc, 0xb8, 0x16, 0xaa, 0x4c,
		0xe1, 0xfb, 0xd9, 0xc0, 0x2b, 0xeb, 0xef, 0xd6, 0x4f, 0x8b, 0xde, 0x77, 0x75, 0x1c, 0x0d, 0xae,
		0xaa, 0xb3, 0x37, 0xa3, 0x83, 0x13, 0xcf, 0x77, 0x7b, 0x7e, 0xc7, 0x71, 0x3f, 0x7f, 0x39, 0x3c,
		0xed, 0xfa, 0xb6, 0xe7, 0x75, 0xdd, 0xc3, 0x73, 0xcf, 0xf9, 0xa9, 0xe4, 0x91, 0x37, 0xc1, 0x0a,
		0x83, 0xee, 0x63, 0xd0, 0xfd, 0x18, 0x98, 0xfe, 0x56, 0x82, 0x36, 0x4b, 0xa5, 0x25, 0xa2, 0x7e,
		0x28, 0x6f, 0x0b, 0xed, 0xb1, 0xa4, 0xce, 0x7f, 0xaa, 0xc6, 0x0f, 0x96, 0x54, 0xfd, 0xf1, 0x74,
		0x20, 0x66, 0x39, 0xcc, 0x3a, 0xf1, 0x2c, 0xb7, 0xe7, 0xf6, 0xac, 0x65, 0xd1, 0x63, 0xa5, 0x75,
		0x90, 0xd5, 0x9f, 0xa8, 0x38, 0x90, 0x4a, 0x84, 0x97, 0x6a, 0x86, 0xfb, 0xe4, 0xc7, 0x67, 0xa9,
		0x4e, 0x46, 0x56, 0xf2, 0x69, 0xcf, 0x92, 0x64, 0x51, 0xce, 0xa0, 0xc1, 0xee, 0xeb, 0xd3, 0xb8,
		0x30, 0x78, 0xf2, 0x19, 0x17, 0xd8, 0x08, 0xd2, 0x69, 0xab, 0xf5, 0x59, 0x98, 0xc8, 0x1c, 0x76,
		0xec, 0x4b, 0x61, 0xf3, 0x3b, 0xa3, 0x3a, 0x10, 0x05, 0xf5, 0xd7, 0xc0, 0xfa, 0x6a, 0x6b, 0x0c,
		0x8c, 0xd9, 0x77, 0xc4, 0xd7, 0x13, 0x70, 0xf2, 0x77, 0xc0, 0x35, 0xb8, 0x44, 0xb2, 0x29, 0x1c,
		0xad, 0xcf, 0x15, 0x9e, 0x69, 0x67, 0x45, 0xeb, 0xca, 0xbf, 0x6b, 0x56, 0x93, 0x5c, 0xfb, 0xb1,
		0xc0, 0x22, 0x8e, 0xff, 0x15, 0x78, 0xcc, 0xaf, 0x28, 0x42, 0x59, 0xf8, 0xb1, 0xbd, 0xc2, 0x39,
		0x63, 0xb1, 0xc7, 0xf0, 0xcc, 0xda, 0x0a, 0x59, 0xb7, 0xba, 0x62, 0xe5, 0x71, 0xab, 0x6c, 0xed,
		0x8e, 0xb3, 0x8c, 0x15, 0x8f, 0x26, 0xac, 0x19, 0xb7, 0xc5, 0xc8, 0x09, 0x17, 0x76, 0x3e, 0xbc,
		0xc8, 0xf3, 0xe0, 0x1a, 0x9c, 0xff, 0xd6, 0xa9, 0x0b, 0x59, 0xe8, 0xf9, 0x6e, 0x3d, 0xfb, 0x90,
		0x85, 0x9d, 0xdf, 0x36, 0xfb, 0xe4, 0x48, 0x51, 0x72, 0xbd, 0x69, 0x54, 0x2f, 0xbe, 0x63, 0x5a,
		0xf0, 0x01, 0xaf, 0x82, 0x55, 0xeb, 0x0b, 0xbf, 0x8e, 0xa4, 0xc3, 0x35, 0x24, 0x8d, 0xae, 0x1f,
		0xe9, 0x72, 0xed, 0x48, 0xbb, 0xeb, 0x46, 0xda, 0x5d, 0x33, 0xd2, 0xeb, 0x7a, 0x51, 0xb9, 0x6e,
		0x27, 0x14, 0xad, 0x32, 0x5f, 0x79, 0x1c, 0x63, 0xa8, 0xcd, 0x3d, 0xdb, 0x47, 0x93, 0x38, 0x86,
		0x85, 0xf7, 0x6c, 0xb5, 0x4f, 0x74, 0xba, 0x25, 0x3c, 0x6d, 0x13, 0x9f, 0xb6, 0x09, 0x50, 0xcf,
		0x44, 0x58, 0x6c, 0x42, 0x2c, 0x38, 0x31, 0x6a, 0x93, 0x20, 0x57, 0x12, 0xa5, 0x7e, 0xe2, 0x9a,
		0x9a, 0x0d, 0x36, 0xd7, 0x24, 0x6d, 0x6a, 0x97, 0x3e, 0x75, 0x4c, 0xa3, 0x1a, 0xa7, 0x53, 0x5d,
		0xd3, 0xaa, 0xf6, 0xe9, 0x55, 0xfb, 0x34, 0xab, 0x77, 0xba, 0xd5, 0x23, 0xed, 0x6a, 0x92, 0x7e,
		0xb5, 0x4b, 0xc3, 0x8f, 0xe9, 0x78, 0xa0, 0x5f, 0x44, 0x48, 0x13, 0xf2, 0x40, 0xb7, 0x50, 0xa0,
		0x97, 0xdc, 0xb5, 0xb6, 0xa9, 0x59, 0xe7, 0x14, 0x0d, 0x90, 0xaa, 0x75, 0x4f, 0xd9, 0x30, 0xa9,
		0x1b, 0x26, 0x85, 0x63, 0xa4, 0x72, 0xbd, 0x52, 0xba, 0x66, 0xa9, 0x3d, 0xfd, 0x08, 0xb5, 0x93,
		0xcf, 0x5e, 0x89, 0x78, 0xfa, 0x28, 0x5c, 0xbd, 0x59, 0xf3, 0xee, 0x69, 0x68, 0xdb, 0x8a, 0x02,
		0x56, 0xd1, 0xd2, 0x57, 0xfa, 0xfa, 0xa5, 0x46, 0x3e, 0xa9, 0xc9, 0x60, 0xfc, 0x37, 0x9d, 0x51,
		0x87, 0x41, 0xf9, 0x6f, 0xba, 0x21, 0x79, 0x2e, 0x79, 0x2e, 0x79, 0x2e, 0x79, 0x2e, 0x79, 0x2e,
		0x73, 0xea, 0xcb, 0x8f, 0x50, 0xb7, 0x56, 0x56, 0x6a, 0x98, 0x86, 0x2d, 0xad, 0x95, 0x60, 0xac,
		0x5d, 0x6b, 0xeb, 0x65, 0xea, 0xd7, 0x75, 0xc2, 0xa5, 0xae, 0x14, 0x00, 0x81, 0x0a, 0x00, 0x51,
		0x02, 0x14, 0x6a, 0x00, 0x47, 0x11, 0xe0, 0xa8, 0x02, 0x16, 0x65, 0xd0, 0x93, 0x3a, 0x68, 0x4a,
		0x21, 0xd2, 0x8f, 0x56, 0xdb, 0x96, 0xd9, 0x4a, 0xc4, 0x9c, 0x4a, 0x15, 0xef, 0x36, 0x75, 0x0e,
		0x98, 0x8b, 0xfc, 0xfd, 0x49, 0x63, 0x13, 0xbb, 0x81, 0x1a, 0x09, 0xed, 0xe6, 0x96, 0xbd, 0x7c,
		0xe9, 0x9d, 0x70, 0xac, 0x85, 0xfe, 0xb8, 0xf6, 0x99, 0x31, 0x35, 0x76, 0x39, 0xe7, 0x7d, 0x7b,
		0x03, 0xc3, 0x5e, 0x94, 0xa1, 0xef, 0xab, 0xb1, 0x4a, 0xf7, 0x21, 0xf0, 0x20, 0x69, 0xe9, 0xb9,
		0xab, 0x05, 0xf7, 0x78, 0xae, 0xa6, 0xd7, 0x1c, 0x00, 0x7a, 0x1f, 0xa9, 0xaa, 0x41, 0xd6, 0x7d,
		0xff, 0x1b, 0x9f, 0x17, 0x68, 0x74, 0xaf, 0xdc, 0x88, 0x38, 0x94, 0x7d, 0xfd, 0xdb, 0x84, 0x0b,
		0x3b, 0xd9, 0x2a, 0x7c, 0x8f, 0x79, 0x6c, 0x15, 0x66, 0x88, 0x44, 0xb6, 0x0a, 0xb3, 0x73, 0x1b,
		0xb6, 0x0a, 0x73, 0x36, 0x98, 0xad, 0x42, 0x53, 0x6b, 0x32, 0xa0, 0x56, 0xe1, 0x0f, 0x39, 0x10,
		0x55, 0xad, 0x13, 0xf8, 0xd3, 0x24, 0xbe, 0xc7, 0x7e, 0xe1, 0x07, 0x5f, 0xec, 0x17, 0xe6, 0xd4,
		0xc4, 0x60, 0xc7, 0x82, 0x1d, 0x0b, 0x84, 0xdc, 0xf4, 0xdc, 0xd5, 0x20, 0xfb, 0x85, 0xbb, 0x7b,
		0x7b, 0x7b, 0x75, 0xf6, 0x08, 0xe9, 0x71, 0x10, 0x1c, 0x55, 0x7f, 0xeb, 0xd8, 0x23, 0x44, 0xb4,
		0x48, 0xb7, 0x93, 0x96, 0x9a, 0x8c, 0xec, 0x7d, 0xd3, 0x3e, 0x6d, 0xa7, 0x12, 0xa8, 0x57, 0xc6,
		0xf6, 0x6e, 0x3d, 0xfe, 0xd3, 0xe9, 0x3f, 0x39, 0xbf, 0x83, 0xc1, 0xbb, 0x3c, 0xba, 0x7b, 0x43,
		0x25, 0x9a, 0x5e, 0xcd, 0x3e, 0x61, 0x8d, 0x6f, 0xf3, 0x2c, 0x0c, 0xe4, 0x7d, 0x9e, 0x3f, 0x63,
		0x16, 0xef, 0xf3, 0x7c, 0x00, 0x6a, 0xbc, 0xcf, 0xf3, 0x7e, 0x77, 0xe0, 0x7d, 0x9e, 0xac, 0x29,
		0x0a, 0xef, 0xf3, 0xa0, 0xb3, 0x4c, 0x6d, 0xef, 0xf3, 0xcc, 0x73, 0xaa, 0xfe, 0x9b, 0xf5, 0x0b,
		0x3b, 0xf5, 0xde, 0xac, 0xaf, 0x71, 0xb3, 0xde, 0x38, 0x4a, 0x00, 0x44, 0x0d, 0x50, 0x28, 0x02,
		0x1c, 0x55, 0x80, 0xa3, 0x0c, 0x58, 0xd4, 0x41, 0x4f, 0x0a, 0xa1, 0x29, 0x95, 0xd0, 0x9e, 0x52,
		0xa4, 0x06, 0x06, 0x83, 0xff, 0x2f, 0xe8, 0x0b, 0xd5, 0x7f, 0xa8, 0x46, 0x72, 0x10, 0xe9, 0x1f,
		0x8d, 0x96, 0x01, 0xfe, 0x85, 0xdd, 0x9a, 0x7b, 0xb8, 0xde, 0xd4, 0x03, 0x86, 0x82, 0x20, 0x51,
		0x11, 0x40, 0x4a, 0x82, 0x46, 0x4d, 0x60, 0x29, 0x0a, 0x2c, 0x55, 0xc1, 0xa4, 0x2c, 0x7a, 0x53,
		0x17, 0xcd, 0x29, 0x0c, 0x0c, 0x95, 0x79, 0x9d, 0xd2, 0xe0, 0x04, 0xb1, 0x57, 0x99, 0x0d, 0x4a,
		0x20, 0xc3, 0x20, 0x38, 0x70, 0x44, 0x07, 0x91, 0xf0, 0x00, 0x13, 0x1f, 0x54, 0x02, 0x04, 0x4f,
		0x84, 0xe0, 0x09, 0x11, 0x36, 0x31, 0xc2, 0x20, 0x48, 0x20, 0x44, 0x09, 0x8e, 0x30, 0xa5, 0x06,
		0xeb, 0xa9, 0x13, 0xfb, 0xa7, 0xf3, 0x8c, 0x8e, 0x3a, 0xb2, 0x86, 0x11, 0x27, 0x58, 0x02, 0x85,
		0x4c, 0xa4, 0x0c, 0x20, 0x54, 0xe8, 0xc4, 0xca, 0x18, 0x82, 0x65, 0x0c, 0xd1, 0x32, 0x83, 0x70,
		0x61, 0x11, 0x2f, 0x30, 0x02, 0x06, 0x4b, 0xc4, 0x52, 0xc3, 0x87, 0xe3, 0x60, 0x14, 0xe1, 0x06,
		0xcb, 0x65, 0xbe, 0x9a, 0x2f, 0x03, 0x34, 0xbe, 0xe8, 0x2d, 0xf1, 0x61, 0x2c, 0x51, 0x33, 0x81,
		0xb0, 0x19, 0x44, 0xdc, 0x4c, 0x21, 0x70, 0xc6, 0x11, 0x39, 0xe3, 0x08, 0x9d, 0x59, 0xc4, 0x0e,
		0x93, 0xe0, 0x81, 0x12, 0xbd, 0x14, 0x3a, 0xda, 0x4b, 0xa4, 0xfc, 0xe9, 0x8c, 0x21, 0xd4, 0xf4,
		0x46, 0x84, 0xf3, 0x9b, 0x8f, 0xc0, 0x59, 0x63, 0xd9, 0xe5, 0x6a, 0x02, 0xaf, 0xc1, 0x51, 0xd3,
		0x1b, 0xfc, 0xbc, 0xe7, 0x4d, 0x7a, 0x71, 0x28, 0xd5, 0x08, 0x7e, 0x25, 0xc9, 0x6a, 0xb6, 0x67,
		0x3e, 0x62, 0xb7, 0x5a, 0x5d, 0xa7, 0xd7, 0xf3, 0x8f, 0xed, 0x13, 0xb7, 0xfd, 0x0d, 0x3c, 0x8f,
		0x27, 0xcb, 0xaa, 0xcd, 0x96, 0x75, 0x68, 0x1f, 0xfd, 0x7a, 0x7e, 0x66, 0xc2, 0x72, 0xea, 0xb3,
		0xe5, 0x5c, 0xd8, 0xed, 0x73, 0xc7, 0x84, 0xd5, 0x34, 0x66, 0xab, 0x69, 0x9f, 0x1e, 0xd9, 0x6d,
		0x13, 0x56, 0xd3, 0x9c, 0xad, 0xa6, 0xe7, 0x78, 0x15, 0xe8, 0xa5, 0xfc, 0xbe, 0x81, 0x1e, 0x95,
		0xdd, 0x84, 0xe8, 0x1a, 0x10, 0x92, 0x5f, 0x44, 0x63, 0xd8, 0xc6, 0xc3, 0xb3, 0x45, 0x2d, 0x62,
		0x31, 0xdc, 0x3e, 0xdd, 0xab, 0x8b, 0x99, 0xc7, 0xae, 0x03, 0xab, 0x61, 0xc0, 0x5a, 0x66, 0x91,
		0xeb, 0xc0, 0x6a, 0x1a, 0xb0, 0x92, 0x79, 0x7e, 0x3c, 0xb0, 0xea, 0xd8, 0x81, 0x98, 0x15, 0x3a,
		0x13, 0xdf, 0x9f, 0x89, 0x41, 0x32, 0x8a, 0xed, 0x38, 0x0e, 0xb1, 0xab, 0xf4, 0x13, 0xa9, 0x9c,
		0xb1, 0xb8, 0x11, 0x0a, 0x49, 0x7b, 0xed, 0xf5, 0x95, 0x04, 0xf7, 0x4f, 0x56, 0x82, 0x3b, 0x35,
		0xe3, 0xd5, 0xc5, 0x9d, 0x86, 0x03, 0x11, 0x8a, 0xc1, 0xe1, 0x43, 0xe5, 0xc0, 0x52, 0xd3, 0xf1,
		0xd8, 0x84, 0xa5, 0x9c, 0x47, 0x22, 0x84, 0x11, 0xcf, 0x33, 0x23, 0xde, 0x02, 0xc6, 0xda, 0xca,
		0xdd, 0x42, 0xd7, 0x12, 0x7c, 0x07, 0x79, 0xbe, 0x0c, 0xee, 0x20, 0x17, 0x61, 0x3e, 0x77, 0x90,
		0x35, 0x72, 0x04, 0xee, 0x20, 0xeb, 0xe3, 0xd6, 0xdc, 0x41, 0xd6, 0x7c, 0x41, 0xdc, 0x41, 0x26,
		0x67, 0x7a, 0x27, 0x74, 0xcc, 0xd9, 0x41, 0x9e, 0x4a, 0x15, 0x37, 0xea, 0x06, 0x6c, 0x1e, 0xef,
		0x01, 0x2f, 0x01, 0x63, 0x7e, 0xc7, 0x1f, 0xbd, 0x0c, 0xd8, 0x9d, 0x40, 0x9a, 0xff, 0xf1, 0x87,
		0x8b, 0x01, 0x9b, 0x27, 0xfc, 0x87, 0xeb, 0x41, 0x9d, 0x66, 0xf0, 0xc7, 0xb1, 0x18, 0x6d, 0xda,
		0x81, 0xa1, 0x69, 0xfd, 0x79, 0x28, 0x08, 0xee, 0xcd, 0x0b, 0x05, 0xcd, 0xfa, 0x7e, 0x73, 0x7f,
		0x77, 0xaf, 0xbe, 0xbf, 0xc3, 0x98, 0xc0, 0x98, 0xc0, 0x02, 0xa5, 0x04, 0xd6, 0x7f, 0x67, 0xfb,
		0x9f, 0x39, 0xef, 0x8d, 0x20, 0xf3, 0x43, 0xc8, 0xd1, 0x75, 0x8c, 0xdf, 0xff, 0x5f, 0xac, 0x83,
		0x1b, 0x00, 0x45, 0x98, 0xcf, 0x0d, 0x00, 0x8d, 0x3c, 0x81, 0x1b, 0x00, 0xfa, 0xb8, 0x35, 0x37,
		0x00, 0x34, 0x5f, 0x10, 0x37, 0x00, 0xc8, 0x9a, 0xde, 0x09, 0x1d, 0xb3, 0x36, 0x00, 0x3e, 0x19,
		0xd0, 0xff, 0xdf, 0x61, 0xff, 0xbf, 0xe0, 0x17, 0xfb, 0xff, 0x7a, 0x2d, 0x86, 0xfd, 0x7f, 0x94,
		0x50, 0xcc, 0xfe, 0xbf, 0x86, 0xa1, 0xc0, 0xc4, 0xfe, 0x7f, 0x7d, 0x87, 0x8d, 0x7f, 0x06, 0x03,
		0x16, 0x26, 0x65, 0xb0, 0x9e, 0x8d, 0x7f, 0x5a, 0x0c, 0x9f, 0x9a, 0x75, 0x1f, 0xed, 0xfe, 0x87,
		0xf6, 0xe3, 0x8f, 0x7e, 0x9f, 0x0f, 0xec, 0x5e, 0x7c, 0xdd, 0x7a, 0x3e, 0x58, 0xeb, 0xf9, 0x5f,
		0x75, 0x1c, 0x13, 0x6f, 0x8e, 0xf7, 0x02, 0x79, 0x2e, 0xe8, 0xbd, 0x22, 0xe8, 0xfb, 0x44, 0xa0,
		0xdb, 0x88, 0x94, 0x0a, 0x2f, 0x12, 0xe8, 0x94, 0x0a, 0x2f, 0xce, 0x5d, 0x29, 0x15, 0xae, 0x1b,
		0xd5, 0xa4, 0x54, 0x38, 0x39, 0xcd, 0x7f, 0x87, 0x08, 0xec, 0xb6, 0x5f, 0x1a, 0xf1, 0xc7, 0x22,
		0x18, 0x86, 0x62, 0x88, 0x18, 0xf1, 0x97, 0x2a, 0x91, 0x80, 0x37, 0x7d, 0x2a, 0x67, 0x8b, 0x02,
		0x70, 0x73, 0x73, 0x5e, 0x24, 0x6d, 0xcd, 0x29, 0x26, 0x4b, 0xa5, 0x12, 0x5b, 0x8a, 0x32, 0xa8,
		0xea, 0x57, 0xf1, 0x80, 0x56, 0x14, 0x61, 0x0a, 0x08, 0xe1, 0x0a, 0x06, 0x19, 0x25, 0x10, 0x04,
		0x2c, 0x08, 0x04, 0x2c, 0x00, 0x84, 0x12, 0x0d, 0x41, 0x1b, 0xd2, 0xa5, 0x6a, 0x44, 0x23, 0xcd,
		0x92, 0x8d, 0xe2, 0x70, 0xda, 0x8f, 0xd5, 0x82, 0x9e, 0x77, 0xe6, 0x0f, 0xda, 0x5d, 0x2c, 0xda,
		0x3f, 0x5b, 0x3c, 0x5d, 0xdf, 0x8d, 0x64, 0xe4, 0xb7, 0x67, 0x8f, 0xd5, 0x6f, 0x47, 0xb7, 0xbe,
		0x37, 0xbe, 0xf3, 0x4f, 0x62, 0x37, 0x52, 0x7e, 0x67, 0xf1, 0xc8, 0xfc, 0xf4, 0x77, 0x7a, 0xc9,
		0x03, 0xf2, 0xed, 0xe5, 0x13, 0xe9, 0xc9, 0x01, 0x06, 0xd1, 0xfc, 0x9d, 0x23, 0xe2, 0x4d, 0x0e,
		0xa1, 0x15, 0x71, 0x1f, 0x87, 0x41, 0x75, 0x3a, 0xc3, 0xe9, 0xd5, 0x18, 0xa3, 0x8e, 0xae, 0x84,
		0x62, 0x28, 0x42, 0xa1, 0xfa, 0x38, 0xc7, 0x33, 0x01, 0x47, 0x80, 0x0f, 0xc2, 0x60, 0x18, 0x57,
		0xa5, 0x88, 0x87, 0x49, 0xd7, 0xad, 0x1a, 0x89, 0xd1, 0x8c, 0x4a, 0x56, 0xc3, 0xc9, 0x34, 0x96,
		0x6a, 0x54, 0x15, 0xf7, 0xb1, 0x50, 0x91, 0x9c, 0xa8, 0x68, 0xd3, 0x8a, 0xa6, 0x57, 0x55, 0xaf,
		0x7d, 0x61, 0x35, 0x6a, 0x07, 0x97, 0x6a, 0xf6, 0x4d, 0xbd, 0xbe, 0x61, 0xd5, 0xe7, 0x7f, 0x34,
		0x36, 0xac, 0x5a, 0xb3, 0xb6, 0x69, 0x71, 0x96, 0xf8, 0x5a, 0xaa, 0xc2, 0x65, 0xff, 0xfa, 0xd1,
		0x47, 0x38, 0x4e, 0x7c, 0xcd, 0x64, 0xf4, 0x49, 0xcb, 0x3a, 0x73, 0x27, 0x62, 0xbb, 0xa7, 0x64,
		0x56, 0x7e, 0xd7, 0x1f, 0xfd, 0x95, 0x1f, 0xd7, 0x42, 0x31, 0x15, 0xe7, 0x97, 0x8a, 0xd3, 0x06,
		0x75, 0xfc, 0x70, 0x2b, 0xac, 0xbf, 0x5b, 0x96, 0xf5, 0xd3, 0x62, 0x2f, 0xac, 0x3a, 0x8e, 0x06,
		0x57, 0xd5, 0xd9, 0xdb, 0xd1, 0x81, 0xdb, 0xf3, 0xbb, 0x8e, 0x7d, 0xf4, 0xc5, 0x3e, 0x74, 0xdb,
		0xae, 0xf7, 0xcd, 0xb7, 0x5b, 0xff, 0xf0, 0x7b, 0x6e, 0xeb, 0x27, 0x26, 0xde, 0xb5, 0x26, 0xde,
		0xc4, 0x19, 0x98, 0x73, 0x8b, 0xcb, 0xb9, 0x1f, 0xf4, 0x16, 0x9e, 0x3d, 0xcb, 0xe1, 0xf3, 0x69,
		0x89, 0xa8, 0x1f, 0xca, 0x5b, 0xc8, 0x23, 0xa3, 0x69, 0x18, 0x3e, 0x55, 0xe3, 0x07, 0x4b, 0xaa,
		0xfe, 0x78, 0x3a, 0x10, 0x56, 0x7c, 0x2d, 0xac, 0xb4, 0xbf, 0x65, 0xf5, 0xdc, 0x56, 0x64, 0xf5,
		0x27, 0x2a, 0x0e, 0xa4, 0x12, 0xa1, 0x35, 0x8b, 0x01, 0xb3, 0x9f, 0xb8, 0x54, 0x4b, 0x52, 0x97,
		0x60, 0x51, 0x46, 0x56, 0xa3, 0x86, 0x16, 0x1b, 0x80, 0xcf, 0xf4, 0x3c, 0x0d, 0xcb, 0x83, 0x27,
		0x08, 0x04, 0xdc, 0xab, 0x36, 0xe1, 0x40, 0xcf, 0xb3, 0x28, 0x9d, 0x91, 0x33, 0x71, 0xb3, 0x9e,
		0xd5, 0x9b, 0xce, 0xd5, 0x1b, 0x7b, 0xd3, 0x1f, 0x89, 0x17, 0x58, 0xdb, 0x7a, 0x86, 0x6f, 0xe7,
		0xe9, 0x1d, 0x6b, 0xf5, 0x8d, 0x05, 0x1a, 0x7b, 0x59, 0x25, 0x18, 0xdc, 0x48, 0x55, 0x1d, 0x85,
		0x93, 0xe9, 0xad, 0xf6, 0x2e, 0x96, 0xf2, 0xf0, 0xa7, 0x46, 0x6b, 0x1e, 0xc1, 0x96, 0xc7, 0x23,
		0x35, 0x37, 0x13, 0xe5, 0xbe, 0x07, 0xd2, 0xfd, 0x0e, 0xc0, 0xfb, 0x1c, 0x68, 0xb5, 0x1e, 0xec,
		0x7d, 0x0d, 0xd8, 0x72, 0x0e, 0xf3, 0x3e, 0x06, 0x4f, 0x88, 0x7c, 0xe4, 0x23, 0x6f, 0xc9, 0x10,
		0x84, 0x7e, 0x27, 0x37, 0x9d, 0x61, 0x82, 0xd7, 0x32, 0x3f, 0xcc, 0xcd, 0x46, 0x39, 0x77, 0x0e,
		0x41, 0x68, 0xe0, 0x88, 0x0d, 0x22, 0xc1, 0x01, 0x26, 0x3a, 0xa8, 0x84, 0x07, 0x9e, 0xf8, 0xc0,
		0x13, 0x20, 0x6c, 0x22, 0x84, 0x41, 0x88, 0x40, 0x88, 0x11, 0x1c, 0x41, 0x4a, 0x0d, 0x46, 0xea,
		0xfa, 0xbc, 0x99, 0x6d, 0x70, 0xba, 0x40, 0x6f, 0x91, 0x28, 0xaa, 0x82, 0x90, 0x54, 0x19, 0x4c,
		0xae, 0xd0, 0x49, 0x96, 0x31, 0x64, 0xcb, 0x18, 0xd2, 0x65, 0x06, 0xf9, 0xc2, 0x22, 0x61, 0x60,
		0x64, 0x2c, 0x85, 0x08, 0xbe, 0x2a, 0x08, 0xec, 0x14, 0x60, 0xe0, 0xe9, 0xbf, 0xe0, 0xaa, 0xff,
		0xc0, 0xa3, 0x2f, 0x4c, 0x50, 0xf9, 0x37, 0x45, 0xdd, 0xdf, 0x38, 0x21, 0x6f, 0x73, 0x04, 0xbc,
		0x81, 0x55, 0xfc, 0x8d, 0x50, 0xef, 0x37, 0x6e, 0x6a, 0x2f, 0x7d, 0x9d, 0x05, 0x42, 0xc9, 0xad,
		0xfe, 0xce, 0x42, 0x2c, 0x47, 0x77, 0x84, 0x54, 0xfd, 0x7a, 0x4a, 0x4b, 0x31, 0xd5, 0xbf, 0x9e,
		0x66, 0x5d, 0x63, 0x54, 0xc0, 0xd2, 0x45, 0xe1, 0xaa, 0x81, 0xad, 0x2e, 0x01, 0x4e, 0x15, 0x0c,
		0x35, 0x12, 0x01, 0x4a, 0xdd, 0xac, 0xac, 0x01, 0x4f, 0xfa, 0xc6, 0xa0, 0x1e, 0xc5, 0xb2, 0x33,
		0xd7, 0x3d, 0x3e, 0xda, 0x69, 0x6c, 0xef, 0x1c, 0x58, 0x6e, 0xaf, 0xea, 0xf6, 0x2c, 0x27, 0x15,
		0xf1, 0xb0, 0x86, 0x93, 0xd0, 0xf2, 0xc2, 0x60, 0x38, 0x94, 0x7d, 0xcb, 0x51, 0x23, 0xa9, 0x84,
		0x08, 0xa5, 0x1a, 0x6d, 0x3e, 0xde, 0x5d, 0x6b, 0x1c, 0x58, 0x0b, 0x6d, 0x8f, 0x7a, 0x63, 0xa3,
		0xd6, 0xac, 0x6d, 0x2c, 0x15, 0x3e, 0x36, 0x39, 0x1f, 0xba, 0xf8, 0x75, 0x18, 0x20, 0xa0, 0xb3,
		0xb2, 0x26, 0xa3, 0x47, 0x44, 0xe7, 0xe4, 0x8a, 0xac, 0x19, 0x69, 0xb5, 0x49, 0x35, 0x23, 0x4f,
		0xa6, 0x95, 0x91, 0xf9, 0x52, 0x17, 0x57, 0x9b, 0x8b, 0xb4, 0xe9, 0x59, 0x35, 0xa4, 0x79, 0x6c,
		0xd4, 0x7e, 0x35, 0x3a, 0x4c, 0x40, 0x6a, 0xbf, 0x52, 0x6b, 0x2e, 0xdf, 0xda, 0xf6, 0xa5, 0x7a,
		0xd6, 0x9f, 0xd3, 0xce, 0x3a, 0x71, 0x3b, 0xfe, 0xe7, 0xee, 0xe9, 0xf9, 0x19, 0xd5, 0xe6, 0xd6,
		0x5b, 0xa5, 0x52, 0x6d, 0xae, 0xe0, 0x02, 0xf4, 0xc3, 0xfe, 0x42, 0xbd, 0xb9, 0x1c, 0x3e, 0x21,
		0x53, 0xf5, 0xe6, 0x6e, 0xa4, 0x92, 0x51, 0x1c, 0x26, 0xfb, 0xdb, 0x56, 0xc2, 0x27, 0x5f, 0x08,
		0x65, 0x5d, 0xaa, 0xd9, 0x0f, 0x2e, 0x3b, 0x1c, 0x32, 0x9a, 0x6b, 0x65, 0x35, 0x28, 0x3a, 0x57,
		0x48, 0x74, 0xa6, 0xe8, 0x9c, 0x5e, 0xc1, 0x3a, 0x4b, 0x8f, 0x62, 0x03, 0xa8, 0xcc, 0x0d, 0x20,
		0x2a, 0xcf, 0x19, 0x5d, 0x19, 0x53, 0x79, 0x4e, 0x9b, 0x86, 0x19, 0x82, 0x6e, 0x52, 0x8e, 0xf3,
		0xa2, 0x6e, 0xa4, 0xfa, 0x9c, 0x3c, 0x06, 0xaa, 0xef, 0x99, 0x16, 0x69, 0x2a, 0xc1, 0x5d, 0x20,
		0xc7, 0xc1, 0xd5, 0x58, 0x54, 0xaf, 0x02, 0x35, 0xf8, 0x21, 0x07, 0x89, 0xfb, 0xa2, 0xa8, 0xf0,
		0xbd, 0x62, 0x3c, 0xd5, 0xf8, 0xb2, 0x30, 0x93, 0x6a, 0x7c, 0x39, 0xc2, 0x96, 0x6a, 0x7c, 0xeb,
		0x28, 0x7c, 0xa9, 0xc6, 0xb7, 0xf6, 0xda, 0x96, 0x6a, 0x7c, 0xa5, 0xa8, 0x4c, 0xa8, 0xc6, 0x97,
		0x6f, 0x7e, 0xa0, 0x1a, 0x1f, 0x89, 0x0d, 0x22, 0xc1, 0x01, 0x26, 0x3a, 0xa8, 0x84, 0x07, 0x9e,
		0xf8, 0xc0, 0x13, 0x20, 0x6c, 0x22, 0x84, 0x41, 0x88, 0x40, 0x88, 0x11, 0x1c, 0x41, 0x4a, 0x0d,
		0xc6, 0xe9, 0xfd, 0xbc, 0x99, 0x6b, 0x50, 0x3a, 0x40, 0x6f, 0x11, 0x28, 0x2a, 0xf1, 0x91, 0x50,
		0x19, 0x4c, 0xac, 0xd0, 0x09, 0x96, 0x31, 0x44, 0xcb, 0x18, 0xc2, 0x65, 0x06, 0xf1, 0xc2, 0x22,
		0x60, 0x60, 0x44, 0x2c, 0x85, 0x08, 0xbe, 0x12, 0x9f, 0x14, 0x42, 0x0c, 0xc7, 0x93, 0x00, 0x5b,
		0x8e, 0x6f, 0x1f, 0xd0, 0xf4, 0xb6, 0x50, 0xa3, 0x84, 0x18, 0xf3, 0xae, 0xfb, 0x9a, 0x9f, 0xbc,
		0x51, 0x7a, 0x7c, 0x4d, 0x6a, 0x74, 0x69, 0x16, 0x59, 0xa9, 0xc7, 0xa7, 0x81, 0x8b, 0x1b, 0xa5,
		0xc7, 0x47, 0x17, 0xa7, 0x8b, 0xb3, 0x3a, 0x00, 0xb6, 0x9a, 0x92, 0x0a, 0xa5, 0x4f, 0x51, 0x95,
		0x18, 0xb1, 0x56, 0x4c, 0xeb, 0xc4, 0xc4, 0x7a, 0x76, 0xc0, 0xd7, 0x61, 0x36, 0x3b, 0xe0, 0x05,
		0xe2, 0x9c, 0x1d, 0xf0, 0xe2, 0xdc, 0x95, 0x1d, 0x70, 0xcd, 0x16, 0xc2, 0x0e, 0x38, 0x19, 0xcd,
		0x1f, 0x40, 0xc4, 0x80, 0x0e, 0xf8, 0x40, 0xa8, 0x58, 0xc6, 0x0f, 0xa1, 0x18, 0x02, 0x77, 0xc0,
		0x21, 0xa5, 0x8e, 0xdd, 0xc5, 0xa3, 0x3f, 0x0c, 0x22, 0xe0, 0xbc, 0xb5, 0x04, 0x92, 0xdb, 0x73,
		0x7b, 0x7e, 0xef, 0xfc, 0xd0, 0x6b, 0x5f, 0xf8, 0xde, 0xb7, 0x33, 0x07, 0x35, 0x7d, 0x25, 0x6d,
		0xa7, 0x08, 0x76, 0x63, 0xc2, 0x82, 0xde, 0x9c, 0x78, 0x8e, 0xa8, 0xb3, 0xe7, 0xe2, 0x2a, 0xee,
		0xd9, 0x45, 0xd3, 0xef, 0x9e, 0x9e, 0x7b, 0x4e, 0xd7, 0x77, 0x5b, 0x15, 0x76, 0x96, 0x89, 0xac,
		0xec, 0x90, 0xb5, 0x4b, 0x64, 0x11, 0x59, 0xd9, 0x23, 0xeb, 0xac, 0xeb, 0x1c, 0xbb, 0x5f, 0xfd,
		0xe3, 0xb6, 0xfd, 0xb9, 0x47, 0x5c, 0x11, 0x57, 0x19, 0xe3, 0xaa, 0xc7, 0x68, 0x45, 0x54, 0x65,
		0x87, 0xaa, 0x39, 0x7d, 0xef, 0x21, 0xf3, 0x77, 0x93, 0x78, 0xbc, 0x19, 0x68, 0x2b, 0x0d, 0xaf,
		0x37, 0x20, 0xae, 0x95, 0x07, 0x71, 0xbb, 0x44, 0x1c, 0x11, 0xc7, 0x3a, 0x80, 0x78, 0xb3, 0x58,
		0x1f, 0x10, 0x6d, 0x44, 0xdb, 0x87, 0xd0, 0xe6, 0xd9, 0x9f, 0x09, 0x33, 0xc2, 0x6c, 0x0d, 0x30,
		0xdb, 0x6d, 0x1a, 0x00, 0x34, 0xe8, 0x15, 0x7c, 0x67, 0xbf, 0x89, 0x8e, 0xcd, 0xbc, 0x41, 0x38,
		0x31, 0x3f, 0x10, 0x50, 0xa6, 0x01, 0x6a, 0x65, 0x9c, 0xcb, 0x3f, 0xfc, 0xb6, 0xdd, 0xe1, 0x36,
		0x0b, 0x61, 0x95, 0x35, 0xac, 0x08, 0x29, 0x42, 0x2a, 0x53, 0x48, 0xa5, 0x83, 0xa7, 0x08, 0x2b,
		0xc2, 0x2a, 0x33, 0x58, 0x5d, 0xd8, 0x6e, 0xdb, 0x3e, 0x6c, 0x3b, 0xfe, 0xa1, 0xdd, 0x69, 0xfd,
		0xd3, 0x6d, 0x79, 0x5f, 0x08, 0x2f, 0xc2, 0x2b, 0x2b, 0x78, 0xa5, 0xa0, 0xf2, 0x8f, 0x4e, 0x3b,
		0x3d, 0xaf, 0x6b, 0xbb, 0x1d, 0x8f, 0xc7, 0xa4, 0x08, 0xb0, 0xcc, 0x00, 0xe6, 0x7c, 0xf5, 0x9c,
		0x4e, 0xcb, 0x69, 0x31, 0x3f, 0x12, 0x5f, 0x79, 0xe0, 0x2b, 0x39, 0xba, 0xe2, 0x76, 0x3c, 0xa7,
		0x7b, 0x6c, 0x1f, 0x39, 0xbe, 0xdd, 0x6a, 0x75, 0x9d, 0x1e, 0x23, 0x18, 0x11, 0x96, 0x2d, 0xc2,
		0x3a, 0x8e, 0xfb, 0xf9, 0xcb, 0xe1, 0x69, 0x97, 0x00, 0x23, 0xc0, 0x72, 0x00, 0xd8, 0x2e, 0x43,
		0x18, 0x11, 0x96, 0x33, 0xc2, 0x18, 0xc2, 0x08, 0xb0, 0xbc, 0x00, 0xd6, 0x76, 0x3b, 0xbf, 0xfa,
		0xb6, 0xe7, 0x75, 0xdd, 0xc3, 0x73, 0xcf, 0x21, 0xb4, 0x08, 0xad, 0x6c, 0xa1, 0xd5, 0x72, 0xda,
		0xf6, 0x37, 0xa2, 0x8a, 0xa8, 0xca, 0x1e, 0x55, 0xfe, 0x85, 0xdd, 0x75, 0x6d, 0xcf, 0x3d, 0xed,
		0x10, 0x5f, 0xc4, 0x57, 0xa6, 0xf8, 0xe2, 0x06, 0x23, 0x21, 0x95, 0x31, 0xa4, 0xda, 0xa7, 0x24,
		0xee, 0x04, 0x55, 0xc6, 0xa0, 0x3a, 0xeb, 0x9e, 0x7a, 0xce, 0xd1, 0x2c, 0x05, 0xce, 0xef, 0x9d,
		0x12, 0x5f, 0xc4, 0x57, 0x46, 0xf8, 0x3a, 0xb1, 0xbf, 0xce, 0x31, 0xc6, 0xdd, 0x6b, 0xa2, 0x2b,
		0x17, 0x74, 0x75, 0x9d, 0x9e, 0xd3, 0xbd, 0xe0, 0x09, 0x09, 0x62, 0x2c, 0x27, 0x8c, 0xb9, 0x9d,
		0xc7, 0x28, 0xc6, 0x3e, 0x04, 0xd1, 0x95, 0x29, 0xba, 0xba, 0x4e, 0xcf, 0x6d, 0x9d, 0xdb, 0x6d,
		0xc6, 0x2e, 0xa2, 0x2b, 0x7b, 0x74, 0x51, 0x4d, 0x86, 0x68, 0x5b, 0x3f, 0xea, 0x8c, 0xb8, 0xb3,
		0x61, 0x40, 0x50, 0x2b, 0x11, 0xdc, 0x08, 0x35, 0x42, 0x6d, 0x2d, 0x50, 0x33, 0xe0, 0x0c, 0x2b,
		0xe1, 0x06, 0x03, 0x37, 0x93, 0xee, 0x7e, 0x10, 0x76, 0x28, 0xb0, 0x33, 0xec, 0x4e, 0x08, 0x81,
		0x87, 0x02, 0x3c, 0xb3, 0xee, 0x8a, 0x10, 0x77, 0x28, 0xb8, 0x33, 0xed, 0x0e, 0x09, 0x91, 0x07,
		0x85, 0x3c, 0x73, 0x0e, 0x66, 0x13, 0x78, 0x40, 0xc0, 0xdb, 0x65, 0xc8, 0x23, 0xf2, 0x0a, 0x42,
		0x1e, 0x43, 0x1e, 0x81, 0xb7, 0x6e, 0xe0, 0x19, 0x73, 0x47, 0x85, 0x90, 0x83, 0x82, 0x1c, 0xf8,
		0x99, 0x11, 0xa2, 0x0d, 0x0f, 0x6d, 0x26, 0xdc, 0x69, 0x21, 0xee, 0xa0, 0x70, 0xc7, 0x0d, 0x58,
		0x42, 0x6d, 0x4d, 0x50, 0xc3, 0xbe, 0x03, 0x43, 0xb0, 0x41, 0x81, 0xcd, 0x98, 0xbb, 0x31, 0xc4,
		0x1d, 0x0a, 0xee, 0x4c, 0xba, 0x33, 0x43, 0xd4, 0x21, 0xa1, 0xce, 0xac, 0xbb, 0x34, 0xc4, 0x1e,
		0x0c, 0xf6, 0x0c, 0xba, 0x63, 0x43, 0xd4, 0xa1, 0xa0, 0xce, 0xa4, 0xbb, 0x37, 0x44, 0x1d, 0x0a,
		0xea, 0x3c, 0xc7, 0x6f, 0x39, 0xc7, 0xf6, 0x79, 0xdb, 0xf3, 0x4f, 0x1c, 0xaf, 0xeb, 0x1e, 0x11,
		0x74, 0x04, 0x5d, 0xde, 0xa0, 0x3b, 0xef, 0xa4, 0x47, 0x39, 0x9d, 0x96, 0xdf, 0xee, 0xf1, 0x58,
		0x1d, 0x41, 0xb7, 0x06, 0xd0, 0xcd, 0xeb, 0x09, 0xa7, 0xc5, 0x0c, 0x4b, 0xdc, 0xad, 0x11, 0x77,
		0x9e, 0xdb, 0x76, 0xff, 0x65, 0x18, 0xea, 0x38, 0xb1, 0x92, 0xde, 0x5e, 0x26, 0x2f, 0x2f, 0x03,
		0x7f, 0x26, 0xb8, 0xc8, 0x93, 0x09, 0xae, 0x12, 0x81, 0xcb, 0x24, 0x3e, 0x4c, 0x7c, 0x91, 0xf7,
		0x12, 0x5d, 0xe6, 0xa2, 0xab, 0x7b, 0x7a, 0xee, 0x39, 0x5d, 0xff, 0xc8, 0x3e, 0x4b, 0xd5, 0x84,
		0xba, 0xbe, 0xdd, 0xfe, 0x7c, 0xda, 0x75, 0xbd, 0x2f, 0x27, 0x44, 0x16, 0x91, 0x95, 0x29, 0xb2,
		0x1e, 0xff, 0x46, 0x68, 0x11, 0x5a, 0x19, 0x42, 0x8b, 0x12, 0x68, 0xc4, 0x1b, 0x93, 0x65, 0x79,
		0x23, 0x5b, 0x99, 0x10, 0x67, 0x42, 0x12, 0x4d, 0x21, 0xc7, 0x8e, 0x37, 0x9f, 0xbb, 0xc1, 0xcf,
		0x1b, 0xeb, 0x39, 0xe3, 0x58, 0x8b, 0x61, 0x29, 0x48, 0x42, 0xad, 0xd8, 0x4a, 0x4d, 0xe2, 0x20,
		0x96, 0x13, 0x55, 0x39, 0x00, 0x4a, 0xa1, 0x95, 0xa8, 0x7f, 0x2d, 0x6e, 0x82, 0xdb, 0x20, 0xbe,
		0x9e, 0x25, 0xcb, 0xad, 0xc9, 0xad, 0x50, 0xfd, 0x89, 0x1a, 0xca, 0x51, 0x55, 0x89, 0xf8, 0xc7,
		0x24, 0xfc, 0xad, 0x2a, 0x55, 0x14, 0x07, 0xaa, 0x2f, 0xb6, 0x5e, 0xbe, 0x11, 0xad, 0xbc, 0xb3,
		0x75, 0x1b, 0x4e, 0xe2, 0x49, 0x7f, 0x32, 0x8e, 0xd2, 0xef, 0xb6, 0x64, 0x24, 0xa3, 0xad, 0xb1,
		0xb8, 0x13, 0xe3, 0xc5, 0x97, 0xad, 0xb1, 0x54, 0xbf, 0x55, 0xa3, 0x38, 0x88, 0x45, 0x75, 0x10,
		0xc4, 0xc1, 0x55, 0x10, 0x89, 0xad, 0x71, 0x74, 0xbb, 0x15, 0x8f, 0xef, 0xa2, 0xd9, 0x1f, 0x5b,
		0x37, 0x71, 0x55, 0x46, 0x6a, 0x4b, 0x09, 0x39, 0xba, 0xbe, 0x9a, 0x84, 0x51, 0xfa, 0xdd, 0xd6,
		0xe3, 0x3f, 0x9d, 0xfe, 0x93, 0xd1, 0xf4, 0x2a, 0xf9, 0xc5, 0xf9, 0xd7, 0xad, 0xe0, 0x2e, 0x90,
		0xe3, 0xe0, 0x6a, 0x2c, 0xaa, 0x57, 0x81, 0x1a, 0xfc, 0x90, 0x83, 0xf8, 0x7a, 0x2b, 0xf9, 0xb7,
		0x30, 0x12, 0xbd, 0xfe, 0x4e, 0xa9, 0xb7, 0x85, 0x9a, 0x87, 0x8b, 0x8a, 0xb8, 0x8f, 0xc3, 0xa0,
		0x3a, 0x9d, 0x81, 0xf7, 0x6a, 0x2c, 0x20, 0x42, 0x45, 0x25, 0x14, 0x43, 0x11, 0x0a, 0xd5, 0x17,
		0x30, 0x05, 0x35, 0x50, 0xfc, 0x4d, 0xcb, 0x94, 0xe3, 0xa3, 0xbd, 0x4f, 0xb5, 0xed, 0x03, 0xcb,
		0xed, 0x55, 0xdd, 0x9e, 0xe5, 0x85, 0xc1, 0x70, 0x28, 0xfb, 0x96, 0xa3, 0x46, 0x52, 0x09, 0x11,
		0x4a, 0x35, 0xb2, 0x7e, 0xf6, 0x9c, 0x5f, 0xac, 0x13, 0x11, 0x87, 0xb2, 0x7f, 0xa9, 0x9c, 0xfb,
		0x58, 0xa8, 0x48, 0x4e, 0x54, 0xb4, 0x69, 0x45, 0xd3, 0xab, 0xaa, 0xd7, 0xbe, 0xb0, 0x1a, 0x9f,
		0x0e, 0xac, 0xd9, 0xd7, 0x7a, 0x7d, 0xc3, 0xaa, 0x37, 0x36, 0xac, 0x5a, 0xb3, 0xb6, 0x61, 0xd5,
		0x93, 0xbf, 0xd5, 0x1b, 0x9b, 0x40, 0x4d, 0x9d, 0x4a, 0x6f, 0x32, 0x0d, 0xfb, 0x02, 0x2a, 0x93,
		0x26, 0x76, 0xff, 0x2a, 0x1e, 0x7e, 0x4c, 0xc2, 0xc1, 0xec, 0x03, 0x7d, 0xf4, 0x1a, 0xac, 0x96,
		0x40, 0xe5, 0x4b, 0x10, 0xd9, 0xe1, 0x68, 0x7a, 0x23, 0x54, 0x5c, 0x39, 0xb0, 0xe2, 0x70, 0x2a,
		0xc0, 0x16, 0xf0, 0xc4, 0xfa, 0x75, 0xb8, 0x15, 0x09, 0x7f, 0xc9, 0xac, 0xfc, 0xae, 0xbf, 0x3f,
		0x54, 0x7e, 0x5c, 0x0b, 0xc5, 0x74, 0x9d, 0x5f, 0xba, 0xde, 0xdc, 0x9c, 0x57, 0x15, 0x5b, 0xf1,
		0xc3, 0xad, 0xb0, 0xfe, 0x6e, 0xfd, 0x34, 0xe9, 0x57, 0x67, 0x95, 0x4e, 0x75, 0x1c, 0x0d, 0xae,
		0xaa, 0xb3, 0x37, 0xa3, 0x83, 0x3f, 0xa1, 0x52, 0xfe, 0x13, 0x93, 0xf2, 0x5a, 0x93, 0x72, 0xe2,
		0x16, 0xcc, 0xc7, 0xc5, 0xe5, 0xe3, 0xcc, 0xfc, 0x06, 0x27, 0xeb, 0x02, 0x79, 0x78, 0x4b, 0x44,
		0xfd, 0x50, 0xde, 0xc2, 0x75, 0xb1, 0x9e, 0x85, 0xe6, 0x53, 0x35, 0x7e, 0xb0, 0xa4, 0xea, 0x8f,
		0xa7, 0x03, 0x61, 0xc5, 0xd7, 0xc2, 0x4a, 0x5b, 0x42, 0x56, 0xd2, 0x12, 0x1a, 0xc8, 0xf8, 0xda,
		0xea, 0x4f, 0x54, 0x1c, 0x48, 0x25, 0x42, 0x6b, 0x16, 0x12, 0x66, 0x3f, 0x76, 0xa9, 0x96, 0x7c,
		0x4f, 0x46, 0x56, 0x82, 0xce, 0xc6, 0xa7, 0x4d, 0xb4, 0x58, 0x01, 0x1a, 0xa2, 0x5f, 0x86, 0xe9,
		0xc1, 0x13, 0x1c, 0xe2, 0x6d, 0xa8, 0xc2, 0x47, 0xec, 0x95, 0xa8, 0x9d, 0xa9, 0x4b, 0x71, 0x3b,
		0x87, 0xd5, 0x9d, 0xce, 0xd5, 0x1d, 0xfb, 0xdb, 0x1f, 0x89, 0x1a, 0x58, 0xdb, 0x60, 0x65, 0xd8,
		0xfe, 0x02, 0xc8, 0xa0, 0x95, 0x28, 0x0e, 0xa7, 0xfd, 0x58, 0x2d, 0x18, 0x5c, 0x67, 0xfe, 0x5c,
		0xdd, 0xc5, 0x1a, 0xfd, 0xb3, 0xc5, 0xc3, 0xf4, 0xdd, 0x48, 0x46, 0x7e, 0x7b, 0xf6, 0x14, 0xfd,
		0x76, 0x74, 0xeb, 0x7b, 0xe3, 0x3b, 0xff, 0x24, 0x76, 0x23, 0xe5, 0x77, 0x16, 0x4f, 0xc8, 0x4f,
		0x7f, 0xa7, 0x97, 0x3c, 0x0f, 0xdf, 0x5e, 0x3e, 0x8f, 0xc3, 0xf4, 0x71, 0xfc, 0x8d, 0xf1, 0xd1,
		0xb0, 0xc8, 0x53, 0x49, 0xb1, 0x5e, 0xed, 0x4f, 0x54, 0x14, 0x87, 0x81, 0x54, 0x71, 0xa4, 0x7d,
		0x00, 0x4a, 0x2b, 0x96, 0xd7, 0xcd, 0xd7, 0x3c, 0xd2, 0xff, 0x2a, 0xd5, 0x8c, 0xab, 0xd7, 0x34,
		0x37, 0xf3, 0x28, 0x89, 0xe6, 0x95, 0x03, 0x6b, 0x5b, 0x73, 0x43, 0xcf, 0x42, 0x31, 0x94, 0xf7,
		0x18, 0x59, 0x73, 0x09, 0xdc, 0x45, 0xf3, 0x06, 0x21, 0xc3, 0x80, 0x55, 0xc6, 0x4f, 0xab, 0xe1,
		0xdb, 0x39, 0x32, 0x40, 0x0e, 0x42, 0xa1, 0x16, 0xbf, 0xcf, 0x0a, 0xde, 0x25, 0xb0, 0x79, 0x1a,
		0xc7, 0xe8, 0x6a, 0xa5, 0x25, 0x43, 0x8c, 0x80, 0xfb, 0x1a, 0x43, 0xc0, 0x89, 0x65, 0xff, 0x8d,
		0xe7, 0xa0, 0x84, 0x35, 0x0c, 0xba, 0x03, 0x47, 0x7b, 0x10, 0xe9, 0x0f, 0x30, 0x0d, 0x42, 0xa5,
		0x43, 0xf0, 0xb4, 0x08, 0x9e, 0x1e, 0x61, 0xd3, 0x24, 0x0c, 0xba, 0x04, 0x42, 0x9b, 0xe0, 0xe8,
		0x53, 0x6a, 0x30, 0x52, 0x77, 0xe8, 0xcd, 0x6c, 0x83, 0xd3, 0x23, 0x02, 0x27, 0x51, 0xb0, 0x64,
		0x0a, 0x99, 0x54, 0x19, 0x40, 0xae, 0xd0, 0x49, 0x96, 0x31, 0x64, 0xcb, 0x18, 0xd2, 0x65, 0x06,
		0xf9, 0xc2, 0x22, 0x61, 0x60, 0x64, 0x0c, 0x96, 0x94, 0xbd, 0x42, 0xce, 0x70, 0x23, 0xe6, 0x2a,
		0x47, 0x43, 0x0d, 0x99, 0x98, 0x54, 0x0d, 0x9e, 0xb2, 0x99, 0x40, 0xdd, 0x0c, 0xa2, 0x70, 0xa6,
		0x50, 0x39, 0xe3, 0x28, 0x9d, 0x71, 0xd4, 0xce, 0x2c, 0x8a, 0x87, 0x49, 0xf5, 0x40, 0x29, 0x1f,
		0x3c, 0xf5, 0x7b, 0x85, 0x02, 0x56, 0xe5, 0x00, 0x3f, 0xd8, 0xae, 0xb2, 0xc1, 0xd9, 0xb2, 0xc0,
		0xe3, 0xd3, 0x82, 0x18, 0x6e, 0x83, 0x2f, 0x03, 0x9d, 0x20, 0x9a, 0x44, 0x14, 0x0d, 0x24, 0x8c,
		0xa6, 0x11, 0x47, 0x63, 0x09, 0xa4, 0xb1, 0x44, 0xd2, 0x4c, 0x42, 0x89, 0x4d, 0x2c, 0xc1, 0x09,
		0x66, 0x0a, 0x29, 0xef, 0xe1, 0x56, 0x98, 0x95, 0x71, 0xc6, 0x22, 0x18, 0x86, 0x62, 0x68, 0x42,
		0xc6, 0x59, 0x76, 0xee, 0xf6, 0x0c, 0x58, 0xcb, 0xd9, 0xe2, 0x62, 0x56, 0x2a, 0x1b, 0xf0, 0x9c,
		0x4a, 0xff, 0x8d, 0x21, 0x8c, 0xe1, 0xeb, 0xaf, 0x21, 0x6a, 0xae, 0x05, 0x69, 0x4c, 0x69, 0x39,
		0x5f, 0x8e, 0x19, 0x25, 0x65, 0x8d, 0x25, 0x25, 0x4b, 0x4a, 0x96, 0x94, 0x2c, 0x29, 0x59, 0x52,
		0xb2, 0xa4, 0x24, 0x1f, 0x2b, 0x57, 0x49, 0x89, 0xbe, 0x77, 0x91, 0x2e, 0xe4, 0x51, 0x77, 0xe1,
		0xc0, 0xb4, 0x51, 0x2a, 0x48, 0x92, 0x12, 0x7f, 0x85, 0x78, 0x6e, 0x1b, 0xb2, 0x1c, 0x53, 0x08,
		0xa8, 0x89, 0x44, 0xd4, 0x60, 0x42, 0x6a, 0x2a, 0x31, 0x35, 0x9e, 0xa0, 0x1a, 0x4f, 0x54, 0xcd,
		0x26, 0xac, 0x66, 0x10, 0x57, 0x43, 0x08, 0x6c, 0x0a, 0x35, 0x63, 0xf6, 0x46, 0x56, 0x32, 0x96,
		0x14, 0x42, 0x0c, 0xc7, 0x93, 0x20, 0x6e, 0xd4, 0x4d, 0xca, 0x5a, 0x0b, 0x12, 0xb8, 0x6f, 0xd0,
		0x92, 0xda, 0x42, 0x8d, 0x92, 0x02, 0xe4, 0xdf, 0x46, 0x85, 0x71, 0xb3, 0x68, 0x45, 0xf2, 0x49,
		0x9d, 0x48, 0x65, 0x1c, 0x5f, 0x4a, 0x17, 0x97, 0x8c, 0xe1, 0xad, 0x1c, 0x58, 0xcd, 0x0d, 0x33,
		0xd7, 0x77, 0x1c, 0x06, 0xfd, 0x58, 0x4e, 0x54, 0x4b, 0x8e, 0x64, 0x72, 0xa3, 0x78, 0xdb, 0xd0,
		0x85, 0x76, 0xc4, 0x28, 0x88, 0xe5, 0xdd, 0xec, 0xb3, 0x1c, 0x06, 0xe3, 0x48, 0x18, 0xb7, 0xca,
		0xdf, 0x37, 0x0c, 0x0c, 0x2d, 0xc1, 0x3d, 0x43, 0x0b, 0x43, 0x0b, 0x43, 0x0b, 0xab, 0x33, 0xae,
		0x66, 0xf5, 0xf5, 0xfd, 0x6f, 0xfc, 0x3c, 0x98, 0x7a, 0xb3, 0x09, 0x62, 0x66, 0xdd, 0x5b, 0x59,
		0x29, 0xfc, 0x4d, 0xba, 0xbf, 0xf2, 0xb2, 0xec, 0xe7, 0xde, 0x8f, 0xa6, 0x0b, 0xe2, 0xde, 0x0f,
		0xd4, 0xd2, 0xb8, 0xf7, 0x03, 0xba, 0x40, 0xee, 0xfd, 0x90, 0xff, 0x91, 0x03, 0x66, 0x03, 0x35,
		0x73, 0xf7, 0x7e, 0xa6, 0x52, 0x99, 0xb9, 0xed, 0xb3, 0x67, 0xd0, 0x92, 0xba, 0x81, 0x1a, 0x09,
		0xee, 0xfa, 0xe8, 0xff, 0x41, 0x95, 0x62, 0xd7, 0x67, 0x9b, 0xad, 0x59, 0xf0, 0xd8, 0xcf, 0x5d,
		0x1f, 0xc0, 0xd0, 0x52, 0x8a, 0x5d, 0x9f, 0xfa, 0x7e, 0x73, 0x7f, 0x77, 0xaf, 0xbe, 0xbf, 0xc3,
		0x18, 0xc3, 0x18, 0xc3, 0x02, 0x8d, 0xab, 0xf9, 0xcb, 0x2f, 0x6e, 0xff, 0x70, 0x05, 0xa5, 0x67,
		0x10, 0x68, 0xe3, 0x7a, 0xff, 0x70, 0x3d, 0xa6, 0x8d, 0xf3, 0x7d, 0x75, 0x32, 0xe8, 0xab, 0xef,
		0x6e, 0x3d, 0xfd, 0x81, 0x27, 0x6f, 0xcf, 0x05, 0x02, 0x28, 0x94, 0x41, 0xcb, 0x4d, 0x0f, 0x6a,
		0x95, 0x5f, 0xc5, 0x83, 0x29, 0xbb, 0xd5, 0x95, 0xb6, 0x8c, 0x62, 0x3b, 0x8e, 0xc1, 0xf5, 0x3c,
		0x4f, 0xa4, 0x72, 0xc6, 0xe2, 0x46, 0x28, 0xf4, 0x1a, 0x66, 0x56, 0x56, 0x3f, 0x59, 0x49, 0xed,
		0x53, 0xb3, 0xb9, 0xbb, 0xd7, 0x6c, 0x6e, 0xef, 0x35, 0xf6, 0xb6, 0xf7, 0x77, 0x76, 0x6a, 0xbb,
		0x35, 0xe0, 0x4a, 0xb4, 0x72, 0x1a, 0x0e, 0x44, 0x28, 0x06, 0x87, 0x33, 0xf7, 0x51, 0xd3, 0xf1,
		0xd8, 0x84, 0xa5, 0x9c, 0x47, 0x22, 0x84, 0x2e, 0x2a, 0x51, 0xa3, 0xb0, 0x21, 0x94, 0x92, 0x54,
		0xf2, 0x25, 0x95, 0xac, 0x40, 0xab, 0x7e, 0x85, 0xd3, 0x7e, 0xac, 0x16, 0x9b, 0x99, 0x9d, 0xf9,
		0xa7, 0xe3, 0x2e, 0x9e, 0x94, 0x7f, 0xb6, 0xf8, 0x48, 0x7c, 0x37, 0x92, 0x91, 0xdf, 0x9e, 0x7d,
		0x16, 0x7e, 0x3b, 0xba, 0xf5, 0xbd, 0xf1, 0x9d, 0x7f, 0x12, 0xbb, 0x91, 0xf2, 0x3b, 0x8b, 0xe7,
		0xec, 0xa7, 0xbf, 0xd3, 0x4b, 0x9e, 0xaa, 0x7f, 0xb8, 0x7c, 0x7e, 0x47, 0xe9, 0x73, 0xf2, 0x1f,
		0xbf, 0xc5, 0xe4, 0xdd, 0xbf, 0x73, 0xa2, 0x10, 0x23, 0xbb, 0x39, 0x11, 0x9d, 0x91, 0x7c, 0x3e,
		0x2b, 0xf2, 0x6f, 0xf4, 0xe8, 0x92, 0x7b, 0x73, 0xe5, 0x66, 0x32, 0x10, 0x63, 0xc4, 0x23, 0xea,
		0xe9, 0x39, 0xa4, 0x74, 0x05, 0x98, 0x93, 0x4f, 0xb7, 0x39, 0xf9, 0x74, 0x3d, 0x86, 0x73, 0xf2,
		0x69, 0xa1, 0x4b, 0xe0, 0xe4, 0x53, 0x4d, 0x16, 0xc2, 0xc9, 0xa7, 0x64, 0x35, 0x65, 0xa9, 0x53,
		0x60, 0x4f, 0x5f, 0x1b, 0x30, 0x85, 0x00, 0x79, 0xea, 0xc0, 0xea, 0x94, 0x81, 0x94, 0x65, 0xb2,
		0x66, 0x2a, 0x7d, 0xcd, 0x84, 0x39, 0x30, 0x00, 0x7a, 0x40, 0x00, 0xe8, 0x40, 0x00, 0x56, 0x4b,
		0xac, 0x96, 0x58, 0x2d, 0xb1, 0x5a, 0x62, 0xb5, 0xc4, 0x6a, 0x49, 0x7f, 0x88, 0xa0, 0x0a, 0xee,
		0xe3, 0x36, 0xb1, 0x57, 0x52, 0x16, 0x68, 0x33, 0xfb, 0x25, 0x4d, 0x03, 0x3d, 0xd7, 0x05, 0x2f,
		0x99, 0x62, 0x82, 0x44, 0x8a, 0x41, 0x92, 0x28, 0xa6, 0x48, 0xa0, 0x18, 0x27, 0x79, 0x62, 0x9c,
		0xc4, 0x89, 0x59, 0x92, 0x26, 0x3c, 0x24, 0xbf, 0x4e, 0xe8, 0xc0, 0x4b, 0x94, 0x3c, 0x93, 0x24,
		0xf9, 0x84, 0x9c, 0x2f, 0x16, 0xf4, 0x09, 0xf9, 0xe4, 0xb8, 0x19, 0x8a, 0x23, 0x06, 0x5c, 0x7c,
		0x33, 0x49, 0x51, 0xc4, 0x34, 0x05, 0x11, 0x63, 0x6f, 0xf3, 0x9b, 0x77, 0x7b, 0xdf, 0x04, 0x31,
		0x5a, 0x93, 0x14, 0x40, 0xd2, 0x50, 0x50, 0xdf, 0xd9, 0x61, 0x30, 0x60, 0x30, 0x60, 0x61, 0x52,
		0x02, 0xeb, 0xbf, 0xf3, 0xd6, 0x0c, 0x2d, 0x46, 0x4f, 0xcd, 0xbc, 0x35, 0x83, 0x7b, 0x6b, 0x06,
		0x50, 0x33, 0x03, 0xe8, 0xec, 0xd7, 0xdf, 0x18, 0x6d, 0xb2, 0xf3, 0xd2, 0x85, 0xe6, 0x05, 0xd8,
		0x4e, 0x22, 0xa6, 0xbc, 0x05, 0xae, 0x9c, 0x85, 0x51, 0xf2, 0x15, 0xc0, 0x72, 0x15, 0xc0, 0xf2,
		0x14, 0x28, 0x01, 0x11, 0x94, 0x76, 0x95, 0x98, 0x6e, 0x55, 0xa0, 0x0e, 0x83, 0xaf, 0x4f, 0x47,
		0x02, 0x83, 0x80, 0xea, 0x4f, 0xe7, 0xf4, 0xb6, 0x50, 0xf3, 0xb8, 0x5a, 0x11, 0xf7, 0x71, 0x18,
		0x54, 0xa7, 0x33, 0xb8, 0x5e, 0x8d, 0x31, 0x76, 0x8e, 0x2b, 0xa1, 0x18, 0x8a, 0x50, 0xa8, 0x3e,
		0xce, 0xce, 0x24, 0x50, 0xa2, 0x5a, 0x6e, 0xbf, 0x77, 0x8f, 0x8f, 0x9a, 0xb5, 0x7a, 0xf3, 0xc0,
		0x5a, 0x46, 0x3d, 0xcb, 0xb9, 0x8f, 0x85, 0x8a, 0xe4, 0x44, 0x45, 0xd6, 0x70, 0x12, 0x5a, 0xbd,
		0xe9, 0xed, 0xed, 0x24, 0x8c, 0xad, 0xc9, 0xd0, 0x6a, 0xc9, 0xe1, 0x30, 0x12, 0xe1, 0x5d, 0xf5,
		0x52, 0x05, 0x3f, 0x82, 0x50, 0x58, 0x27, 0x67, 0xed, 0x9e, 0xe5, 0x85, 0xc1, 0x70, 0x28, 0xfb,
		0x96, 0xa3, 0x46, 0x52, 0x09, 0x11, 0x4a, 0x35, 0xda, 0xb4, 0xa2, 0xe9, 0x55, 0xd5, 0x6b, 0x5f,
		0x58, 0xf5, 0xfa, 0x81, 0x35, 0xff, 0xba, 0x61, 0xd5, 0x1b, 0x1b, 0x97, 0xaa, 0xd6, 0xac, 0x6d,
		0x58, 0xf5, 0x7a, 0x7d, 0xa3, 0x5e, 0x6f, 0x20, 0xa5, 0x0c, 0xd0, 0x53, 0x61, 0x4f, 0x4f, 0x81,
		0x3d, 0xfa, 0x13, 0x58, 0x0f, 0x0e, 0xfd, 0xe0, 0xd7, 0xb3, 0x83, 0x5e, 0x85, 0x3a, 0x1c, 0xdb,
		0x4b, 0x25, 0xb3, 0xf2, 0xbb, 0xfe, 0x9e, 0x52, 0xf9, 0x71, 0x2d, 0x14, 0x53, 0x7c, 0x7e, 0x29,
		0x3e, 0xbd, 0x0f, 0x1d, 0x3f, 0xdc, 0x0a, 0xeb, 0xef, 0x3f, 0x2d, 0x8e, 0x9a, 0x56, 0xc7, 0xd1,
		0xe0, 0xaa, 0x3a, 0x7b, 0x2f, 0x3a, 0x70, 0x7b, 0x7e, 0xd7, 0xb1, 0x8f, 0xbe, 0xd8, 0x87, 0x6e,
		0xdb, 0xf5, 0xbe, 0xf9, 0x87, 0x76, 0xa7, 0xf5, 0x4f, 0xb7, 0xe5, 0x7d, 0xf1, 0x8f, 0x4e, 0x3b,
		0x3d, 0xaf, 0x6b, 0xbb, 0x1d, 0xaf, 0xf7, 0x13, 0xf3, 0xf5, 0x5a, 0xf3, 0x75, 0xe2, 0x17, 0x4c,
		0xd5, 0xc5, 0xa5, 0xea, 0xec, 0x1c, 0x87, 0x57, 0xfa, 0x73, 0xf8, 0xa8, 0x5a, 0x22, 0xea, 0x87,
		0xf2, 0x16, 0x72, 0x6f, 0x36, 0x0d, 0xce, 0xa7, 0x6a, 0xfc, 0x60, 0x49, 0xd5, 0x1f, 0x4f, 0x07,
		0xc2, 0x8a, 0xaf, 0x85, 0x95, 0xf6, 0xd6, 0xac, 0x27, 0x1d, 0xb7, 0xd9, 0xf7, 0x71, 0x20, 0x95,
		0x08, 0xad, 0x59, 0x54, 0xb8, 0x54, 0xb3, 0x9f, 0x5c, 0x52, 0x3e, 0x19, 0x59, 0x09, 0x40, 0xeb,
		0xf5, 0x4d, 0xb4, 0x70, 0x01, 0x7c, 0xd7, 0xe6, 0x69, 0xa4, 0x1e, 0x3c, 0x41, 0x22, 0xe0, 0xc5,
		0x75, 0x13, 0x2e, 0xd6, 0x3c, 0x0b, 0xdc, 0x19, 0x3b, 0x15, 0x8f, 0x10, 0xb0, 0xc6, 0xd3, 0xb9,
		0xc6, 0x63, 0x67, 0xfc, 0x23, 0x71, 0x03, 0x6b, 0xa7, 0xb1, 0x1c, 0x3b, 0x8c, 0x7a, 0x87, 0x5c,
		0x7d, 0x43, 0x82, 0xc6, 0xce, 0x56, 0x11, 0xf7, 0xb1, 0x50, 0x03, 0x31, 0xa8, 0x06, 0x83, 0x1b,
		0xa9, 0xaa, 0xa3, 0x70, 0x32, 0xbd, 0xd5, 0xde, 0xe5, 0x52, 0x9e, 0xfe, 0xaa, 0xf5, 0x9a, 0x87,
		0x36, 0x0c, 0xfd, 0x2d, 0x18, 0x01, 0x07, 0x24, 0xa1, 0x06, 0x40, 0x41, 0x06, 0xb4, 0x62, 0x10,
		0x56, 0x60, 0x01, 0xb6, 0xde, 0xc3, 0x14, 0x4c, 0xe0, 0xc1, 0x95, 0x8f, 0x7c, 0xe4, 0x28, 0xfa,
		0x56, 0x60, 0x02, 0xa3, 0x90, 0xc2, 0xa2, 0x60, 0x82, 0xa2, 0x70, 0xca, 0x54, 0x88, 0x4a, 0x54,
		0xc0, 0xca, 0x53, 0x26, 0xec, 0x51, 0x42, 0x2a, 0x4b, 0x99, 0xb5, 0x4b, 0x09, 0xa7, 0x1c, 0xc5,
		0xab, 0x63, 0x65, 0x24, 0x48, 0xa9, 0xc1, 0x90, 0x7d, 0xa0, 0x37, 0xd3, 0x0e, 0x60, 0x5f, 0xe8,
		0x2d, 0x5a, 0xc5, 0xa9, 0x56, 0xa4, 0x59, 0x06, 0xd3, 0x2d, 0x74, 0xda, 0x65, 0x0c, 0xfd, 0x32,
		0x86, 0x86, 0x99, 0x41, 0xc7, 0xb0, 0x68, 0x19, 0x18, 0x3d, 0x4b, 0x21, 0x82, 0x3f, 0xd5, 0x6a,
		0x2a, 0x55, 0xdc, 0xa8, 0x03, 0x0f, 0xb5, 0x42, 0x9c, 0x69, 0x85, 0xad, 0xcc, 0x09, 0x2c, 0x4f,
		0x6b, 0x82, 0x12, 0xa7, 0x29, 0x0a, 0x9c, 0xc6, 0x89, 0xed, 0x99, 0x23, 0xb2, 0x07, 0xac, 0xb4,
		0x69, 0x84, 0xc2, 0x66, 0xea, 0xe2, 0xcd, 0xfa, 0x7e, 0x73, 0x7f, 0x77, 0xaf, 0xbe, 0xbf, 0x43,
		0x5f, 0xa7, 0xaf, 0xb3, 0x40, 0x00, 0xb6, 0xfa, 0x3b, 0x0b, 0xb1, 0x1c, 0xdd, 0x11, 0x52, 0xb3,
		0xec, 0x29, 0x2d, 0xc5, 0xd4, 0x2e, 0x7b, 0x9a, 0x75, 0x8d, 0xd1, 0x30, 0x4b, 0x17, 0x85, 0xab,
		0x65, 0xb6, 0xba, 0x04, 0x38, 0x4d, 0x33, 0xd4, 0x48, 0x04, 0xa8, 0xc9, 0xb3, 0xb2, 0x06, 0x3c,
		0x8d, 0x1e, 0x83, 0x7a, 0x14, 0x4f, 0x34, 0x7c, 0xf6, 0x1a, 0xdb, 0x9f, 0x0e, 0xe6, 0x4a, 0x22,
		0x03, 0x31, 0xb0, 0xec, 0xc1, 0x8d, 0x54, 0x32, 0x8a, 0xc3, 0x84, 0x79, 0x5a, 0x9f, 0xc3, 0xc9,
		0xf4, 0x36, 0xb2, 0xa4, 0x4a, 0x04, 0x44, 0x2e, 0xd5, 0x2b, 0x0a, 0x22, 0xd6, 0xcf, 0xb3, 0xff,
		0x54, 0xf5, 0x9c, 0x5f, 0x1e, 0xb5, 0x44, 0x6a, 0xcd, 0x44, 0x4b, 0xe4, 0x52, 0xd5, 0xeb, 0x1b,
		0xf5, 0xc6, 0x46, 0xad, 0x59, 0xdb, 0x58, 0x08, 0x89, 0x6c, 0x72, 0xc0, 0x5b, 0xf1, 0xeb, 0x30,
		0x40, 0xda, 0x67, 0x65, 0x4d, 0x46, 0xcf, 0x78, 0x2b, 0xc2, 0x4f, 0x59, 0x6d, 0xd2, 0x6a, 0x93,
		0xaa, 0x4d, 0x9e, 0x72, 0x2b, 0x23, 0x67, 0xa6, 0x1e, 0xb0, 0x26, 0xb7, 0x75, 0x5f, 0x3b, 0xee,
		0x86, 0x34, 0x68, 0x81, 0x3a, 0xb7, 0x46, 0xc7, 0x0b, 0x48, 0x9d, 0x5b, 0xea, 0xdf, 0xe5, 0x5b,
		0x1e, 0xbf, 0x90, 0xf1, 0xb2, 0xfe, 0x8c, 0x8e, 0x97, 0xf3, 0xd5, 0x73, 0x3a, 0x2d, 0xa7, 0xe5,
		0xdb, 0xad, 0x13, 0xb7, 0xe3, 0x7f, 0xee, 0x9e, 0x9e, 0x9f, 0x51, 0xff, 0x6e, 0xbd, 0x45, 0x2d,
		0xf5, 0xef, 0x0a, 0xae, 0x57, 0xb3, 0x73, 0x1c, 0xea, 0xdf, 0xe5, 0xf0, 0x51, 0x99, 0xa9, 0x7f,
		0xb7, 0x64, 0x98, 0x56, 0xc2, 0x30, 0xad, 0x84, 0x61, 0x26, 0xfa, 0x5c, 0xb3, 0xff, 0x7a, 0xa9,
		0x96, 0x3d, 0x8f, 0x04, 0x92, 0x32, 0xb2, 0x6a, 0x4d, 0x8a, 0xde, 0x15, 0x13, 0x9e, 0x29, 0x7a,
		0xa7, 0x57, 0xb4, 0xce, 0xc2, 0x93, 0xd8, 0x0b, 0x2a, 0x73, 0x2f, 0x88, 0x4a, 0x77, 0x46, 0xd7,
		0xc6, 0x54, 0xba, 0xd3, 0xaf, 0x77, 0x86, 0xa0, 0xcb, 0x94, 0xdb, 0xb4, 0xac, 0xe5, 0x36, 0x58,
		0xb2, 0x0b, 0x96, 0xec, 0x7d, 0x51, 0xf7, 0xcf, 0xb8, 0xd0, 0x53, 0x91, 0xb7, 0x77, 0xcd, 0xaa,
		0x54, 0xb1, 0x08, 0x87, 0x41, 0x5f, 0x54, 0x83, 0xc1, 0x20, 0x14, 0x51, 0x84, 0xa3, 0xfc, 0xf7,
		0x86, 0xfd, 0xd4, 0xfe, 0xcb, 0xc2, 0x4c, 0x6a, 0xff, 0xe5, 0x88, 0x5c, 0x6a, 0xff, 0xad, 0xa3,
		0x0e, 0xa6, 0xf6, 0xdf, 0xda, 0x4b, 0x5d, 0x6a, 0xff, 0x95, 0xa2, 0x60, 0xa1, 0xf6, 0x5f, 0xbe,
		0xf9, 0x81, 0xda, 0x7f, 0x24, 0x36, 0x88, 0x04, 0x07, 0x98, 0xe8, 0xa0, 0x12, 0x1e, 0x78, 0xe2,
		0x03, 0x4f, 0x80, 0xb0, 0x89, 0x10, 0x06, 0x21, 0x02, 0x21, 0x46, 0x70, 0x04, 0x29, 0x35, 0x18,
		0xa5, 0xf9, 0xf3, 0x66, 0xa6, 0xc1, 0xe8, 0xfe, 0xbc, 0x45, 0x9e, 0xa8, 0xf0, 0x47, 0x32, 0x65,
		0x30, 0xa9, 0x42, 0x27, 0x57, 0xc6, 0x90, 0x2c, 0x63, 0xc8, 0x96, 0x19, 0xa4, 0x0b, 0x8b, 0x7c,
		0x81, 0x91, 0xb0, 0x14, 0x22, 0xf8, 0x0a, 0x7f, 0xc9, 0x4e, 0x17, 0x26, 0xc3, 0x79, 0xca, 0x72,
		0x6a, 0x9f, 0x00, 0x6d, 0x3f, 0x0b, 0xe2, 0x58, 0x84, 0x0a, 0xf6, 0x1a, 0x7d, 0xe5, 0xe7, 0x7f,
		0x6f, 0x57, 0xf7, 0xbf, 0xff, 0xe7, 0xdf, 0xb5, 0xea, 0xfe, 0xf7, 0xf9, 0xb7, 0xb5, 0xe4, 0xcb,
		0xff, 0xd5, 0x7f, 0xff, 0x4f, 0xfd, 0xdf, 0xdb, 0xd5, 0xe6, 0xe2, 0xdd, 0xfa, 0xce, 0xbf, 0xb7,
		0xab, 0x3b, 0xdf, 0x7f, 0xf9, 0xf9, 0xf2, 0x72, 0xf3, 0xaf, 0xfe, 0xce, 0x2f, 0xff, 0xd7, 0xf8,
		0x1d, 0x2f, 0xec, 0x7e, 0x47, 0x84, 0xe3, 0x69, 0xcf, 0xfd, 0x0a, 0x8f, 0xc9, 0xff, 0xf9, 0x79,
		0x5d, 0xa8, 0xfc, 0xe5, 0xff, 0x55, 0x78, 0xf3, 0x97, 0x74, 0xe0, 0x09, 0xf6, 0xa8, 0x33, 0x55,
		0xf0, 0x0a, 0xa8, 0x33, 0xa5, 0xf7, 0x12, 0xa8, 0x33, 0xb5, 0xa6, 0x27, 0x4e, 0x9d, 0x29, 0x1d,
		0x5e, 0x66, 0xe8, 0x4c, 0xed, 0x34, 0xb6, 0x77, 0x0e, 0x2c, 0xb7, 0x57, 0x75, 0x7b, 0x73, 0x15,
		0x9b, 0x48, 0x4e, 0x54, 0x64, 0x0d, 0x27, 0xa1, 0xf5, 0x8a, 0x58, 0xcd, 0xe6, 0xe3, 0x2d, 0x93,
		0xdd, 0x44, 0xa2, 0xc6, 0x9a, 0x2b, 0xd4, 0x50, 0x48, 0x4a, 0xaf, 0xba, 0x99, 0x42, 0x52, 0xfa,
		0x2f, 0xe8, 0x85, 0x90, 0x54, 0xf6, 0x8e, 0x48, 0xa5, 0x28, 0x5a, 0x6d, 0x52, 0xbd, 0xc8, 0x33,
		0x11, 0x65, 0x64, 0xbd, 0x54, 0x8a, 0xd2, 0xe4, 0xb6, 0xdb, 0xeb, 0xd7, 0x66, 0xa8, 0x15, 0x55,
		0x1e, 0x0b, 0xa9, 0x15, 0x95, 0xbd, 0xcd, 0xd4, 0x8a, 0xca, 0xb7, 0xc4, 0x7d, 0x8f, 0xe4, 0x8d,
		0x7b, 0x76, 0xd1, 0xf4, 0xdd, 0x8e, 0xe7, 0x74, 0x8f, 0xed, 0x23, 0xc7, 0xb7, 0x5b, 0xad, 0xae,
		0xd3, 0xeb, 0x51, 0x2d, 0x6a, 0xbd, 0x95, 0x2b, 0xd5, 0xa2, 0x0a, 0x2e, 0x4a, 0xb3, 0x74, 0x1d,
		0xea, 0x45, 0xe5, 0xf0, 0x61, 0x99, 0xa9, 0x17, 0xe5, 0x9e, 0xdd, 0x35, 0xad, 0x94, 0x67, 0x5a,
		0x0b, 0x9e, 0xb9, 0x50, 0xbb, 0xe9, 0x4f, 0x54, 0x1c, 0x48, 0x25, 0xc2, 0x4b, 0xb5, 0x14, 0xbe,
		0x49, 0x55, 0xb3, 0x65, 0x34, 0x97, 0xbe, 0xd9, 0xa5, 0x7e, 0x54, 0x21, 0x01, 0x9b, 0xfa, 0x51,
		0x7a, 0xc5, 0xef, 0x3c, 0x3c, 0x8b, 0x1d, 0xa3, 0x32, 0x77, 0x8c, 0xa8, 0x27, 0x65, 0x74, 0xfd,
		0x4c, 0x3d, 0x29, 0x1d, 0x3b, 0x6c, 0xa5, 0x56, 0x94, 0x72, 0x6f, 0xef, 0x9a, 0xee, 0xf2, 0x89,
		0xd8, 0x8b, 0x07, 0x42, 0x4d, 0x29, 0xd3, 0xc2, 0xcf, 0xfc, 0xa4, 0xfa, 0xd2, 0x55, 0x40, 0x25,
		0xa5, 0x56, 0xcc, 0xa7, 0xa2, 0x54, 0x16, 0x66, 0x52, 0x51, 0x2a, 0x47, 0xe0, 0x52, 0x51, 0x6a,
		0x1d, 0x95, 0x31, 0x15, 0xa5, 0xd6, 0x5e, 0xfc, 0x52, 0x51, 0xaa, 0x14, 0x25, 0x0b, 0x15, 0xa5,
		0xf2, 0xcd, 0x0f, 0x54, 0x94, 0x22, 0xb1, 0x41, 0x24, 0x38, 0xc0, 0x44, 0x07, 0x95, 0xf0, 0xc0,
		0x13, 0x1f, 0x78, 0x02, 0x84, 0x4d, 0x84, 0x30, 0x08, 0x11, 0x08, 0x31, 0x82, 0x23, 0x48, 0xa9,
		0xc1, 0x54, 0x94, 0x2a, 0x94, 0x3c, 0x51, 0x51, 0x8a, 0x64, 0xca, 0x60, 0x52, 0x85, 0x4e, 0xae,
		0x8c, 0x21, 0x59, 0xc6, 0x90, 0x2d, 0x33, 0x48, 0x17, 0x16, 0xf9, 0x02, 0x23, 0x61, 0x29, 0x44,
		0xa8, 0x28, 0xa5, 0x09, 0xcb, 0xa1, 0xa2, 0x54, 0x11, 0x0b, 0xa0, 0xa2, 0xd4, 0x5b, 0x2f, 0x2a,
		0x4a, 0x15, 0xb5, 0x0a, 0x2a, 0x4a, 0xfd, 0x57, 0x5c, 0x92, 0x0e, 0xe4, 0x88, 0x3d, 0x2a, 0x4a,
		0x15, 0xbc, 0x02, 0x2a, 0x4a, 0xe9, 0xbd, 0x04, 0x2a, 0x4a, 0xad, 0xe9, 0x89, 0x53, 0x51, 0x4a,
		0x87, 0x57, 0xc9, 0x15, 0xa5, 0x3e, 0x3d, 0x15, 0xb2, 0xb1, 0x6a, 0xd4, 0x94, 0xd2, 0xab, 0x72,
		0xa6, 0xa6, 0x94, 0xfe, 0x0b, 0xca, 0x4a, 0x53, 0xea, 0xbf, 0xb8, 0x22, 0x55, 0xa5, 0x68, 0xb5,
		0x49, 0x35, 0x23, 0xcf, 0x45, 0x94, 0x91, 0xf9, 0x52, 0x55, 0x4a, 0xa7, 0x3b, 0x6f, 0x2f, 0x6f,
		0xce, 0x50, 0x54, 0xaa, 0x3c, 0x16, 0x52, 0x54, 0x2a, 0x7b, 0x9b, 0x29, 0x2a, 0x95, 0x6f, 0x95,
		0xfb, 0x6e, 0x65, 0x9c, 0x8e, 0xe3, 0x7e, 0xfe, 0x72, 0x78, 0xda, 0xa5, 0xa6, 0x54, 0x31, 0x95,
		0x2b, 0x35, 0xa5, 0x0a, 0x2e, 0x4a, 0x33, 0xf4, 0x1c, 0x4a, 0x4a, 0xe5, 0xf0, 0x59, 0x19, 0x2c,
		0x29, 0xb5, 0x24, 0x99, 0xa9, 0xee, 0x4d, 0xaa, 0x78, 0x63, 0xcd, 0xc2, 0xc2, 0xa5, 0x7a, 0x4d,
		0xf1, 0xe6, 0xd3, 0x26, 0xc5, 0xa4, 0x0a, 0x89, 0xd4, 0x14, 0x93, 0xd2, 0x2b, 0x70, 0x67, 0xeb,
		0x53, 0x6c, 0x11, 0x95, 0xb9, 0x45, 0x44, 0x19, 0x29, 0xa3, 0x2b, 0x66, 0xca, 0x48, 0x69, 0xd8,
		0x52, 0x2b, 0xbd, 0x8a, 0xd4, 0xf2, 0x3f, 0x52, 0x44, 0xca, 0xd4, 0xe0, 0x53, 0x91, 0xb7, 0x77,
		0xbb, 0xaf, 0xe8, 0xa7, 0x21, 0xa9, 0x48, 0xed, 0xc2, 0xe9, 0xbf, 0x51, 0x46, 0x2a, 0x63, 0x43,
		0x29, 0x23, 0xc5, 0xfa, 0xf8, 0xf5, 0x9a, 0x98, 0x32, 0x52, 0x6b, 0x2f, 0x7b, 0x29, 0x23, 0x55,
		0x8a, 0x92, 0x85, 0x32, 0x52, 0xf9, 0xe6, 0x07, 0xca, 0x48, 0x91, 0xd8, 0x20, 0x12, 0x1c, 0x60,
		0xa2, 0x83, 0x4a, 0x78, 0xe0, 0x89, 0x0f, 0x3c, 0x01, 0xc2, 0x26, 0x42, 0x18, 0x84, 0x08, 0x84,
		0x18, 0xc1, 0x11, 0xa4, 0xd4, 0x60, 0xca, 0x48, 0x15, 0x4a, 0x9e, 0x28, 0x23, 0x45, 0x32, 0x65,
		0x30, 0xa9, 0x42, 0x27, 0x57, 0xc6, 0x90, 0x2c, 0x63, 0xc8, 0x96, 0x19, 0xa4, 0x0b, 0x8b, 0x7c,
		0x81, 0x91, 0xb0, 0x14, 0x22, 0x46, 0xc8, 0x48, 0xed, 0x52, 0x46, 0xaa, 0x20, 0xc6, 0x00, 0x2f,
		0x23, 0x95, 0xa8, 0xef, 0x04, 0xd5, 0xa1, 0x5d, 0x3d, 0xfe, 0xfe, 0x7f, 0xb5, 0x8d, 0xe6, 0xef,
		0x07, 0xbf, 0xfc, 0xdf, 0xde, 0xef, 0x2f, 0xdf, 0xfc, 0xcf, 0x6b, 0x3f, 0x56, 0xdb, 0xd8, 0xfb,
		0xfd, 0xe0, 0x8d, 0xff, 0xb2, 0xfb, 0xfb, 0xc1, 0x9f, 0xfc, 0x7f, 0xec, 0xfc, 0xfe, 0xf3, 0xca,
		0x8f, 0xce, 0xde, 0xaf, 0xbf, 0xf5, 0x0b, 0xcd, 0x37, 0x7e, 0xa1, 0xf1, 0xd6, 0x2f, 0x34, 0xde,
		0xf8, 0x85, 0x37, 0x4d, 0xaa, 0xbf, 0xf1, 0x0b, 0x3b, 0xbf, 0xff, 0x67, 0xe5, 0xe7, 0x7f, 0x7e,
		0xfd, 0x47, 0x77, 0x7f, 0xff, 0xe5, 0x3f, 0x6f, 0xfd, 0xb7, 0xbd, 0xdf, 0xff, 0x73, 0xf0, 0xcb,
		0x2f, 0x14, 0xd6, 0x5a, 0x8b, 0x83, 0x9a, 0x24, 0xac, 0x45, 0x37, 0x5d, 0xbf, 0x9b, 0x52, 0x68,
		0x8c, 0x84, 0xf1, 0x99, 0x2f, 0x52, 0x68, 0xac, 0xe0, 0x15, 0x50, 0x68, 0x4c, 0xef, 0x25, 0x50,
		0x68, 0x6c, 0x4d, 0x4f, 0x9c, 0x42, 0x63, 0x3a, 0xbc, 0xcc, 0x10, 0x1a, 0xdb, 0xad, 0xd5, 0xf6,
		0x0f, 0x2c, 0xf7, 0xec, 0x6e, 0xf7, 0x35, 0x35, 0x23, 0x4b, 0xaa, 0xb9, 0xf2, 0xd1, 0xe6, 0xf2,
		0x02, 0xd2, 0xa5, 0xaa, 0xd5, 0x9f, 0xea, 0x1a, 0x51, 0x61, 0x4c, 0xb3, 0xa6, 0x0a, 0x15, 0xc6,
		0xf4, 0x5f, 0xd0, 0x0b, 0x85, 0xb1, 0x4c, 0x7d, 0x90, 0xd2, 0x62, 0xb4, 0xda, 0xa4, 0x2a, 0x91,
		0x67, 0x65, 0xca, 0xc8, 0x75, 0x29, 0x2d, 0xa6, 0xcf, 0x3d, 0xc8, 0x57, 0xae, 0x53, 0x51, 0x5b,
		0xac, 0x3c, 0x16, 0x52, 0x5b, 0x2c, 0x7b, 0x9b, 0xa9, 0x2d, 0x96, 0x6f, 0x61, 0xfb, 0x4e, 0x85,
		0xa4, 0x5d, 0xdf, 0xed, 0x78, 0x4e, 0xf7, 0xd8, 0x3e, 0x72, 0x28, 0x2e, 0x56, 0x4c, 0xd1, 0x4a,
		0x71, 0xb1, 0x82, 0xeb, 0xd1, 0x2c, 0x5d, 0x87, 0xea, 0x62, 0x39, 0x7c, 0x58, 0xc6, 0xaa, 0x8b,
		0xed, 0x5a, 0x29, 0xcf, 0x4c, 0xa5, 0x90, 0x66, 0xe1, 0x60, 0xf6, 0xdf, 0x1f, 0x55, 0xd5, 0x13,
		0x58, 0xca, 0xc8, 0xaa, 0xd5, 0xa9, 0x2a, 0x56, 0x4c, 0x88, 0xa6, 0xaa, 0x98, 0x5e, 0x11, 0x3b,
		0x1b, 0x5f, 0x62, 0x57, 0xa8, 0xcc, 0x5d, 0x21, 0xaa, 0x89, 0x19, 0x5d, 0x23, 0x53, 0x4d, 0x4c,
		0xc7, 0x2e, 0x5a, 0xd9, 0xe5, 0xc4, 0x76, 0xdd, 0xe5, 0x13, 0xa1, 0x9e, 0x98, 0xa9, 0xe1, 0x67,
		0x7e, 0x4b, 0x61, 0x45, 0x48, 0x0f, 0x4b, 0x4e, 0x0c, 0x4c, 0x07, 0x90, 0x6a, 0x62, 0x19, 0x1b,
		0x4a, 0x35, 0x31, 0xd6, 0xc5, 0xaf, 0xd7, 0xc2, 0x54, 0x13, 0x5b, 0x7b, 0xb9, 0x4b, 0x35, 0xb1,
		0x52, 0x94, 0x2c, 0x54, 0x13, 0xcb, 0x37, 0x3f, 0x50, 0x4d, 0x8c, 0xc4, 0x06, 0x91, 0xe0, 0x00,
		0x13, 0x1d, 0x54, 0xc2, 0x03, 0x4f, 0x7c, 0xe0, 0x09, 0x10, 0x36, 0x11, 0xc2, 0x20, 0x44, 0x20,
		0xc4, 0x08, 0x8e, 0x20, 0xa5, 0x06, 0x53, 0x4d, 0xac, 0x50, 0xf2, 0x44, 0x35, 0x31, 0x92, 0x29,
		0x83, 0x49, 0x15, 0x3a, 0xb9, 0x32, 0x86, 0x64, 0x19, 0x43, 0xb6, 0xcc, 0x20, 0x5d, 0x58, 0xe4,
		0x0b, 0x8c, 0x84, 0xa5, 0x10, 0xa1, 0x9a, 0x98, 0x26, 0x2c, 0x87, 0x6a, 0x62, 0x45, 0x2c, 0x80,
		0x32, 0x45, 0x54, 0x13, 0xfb, 0xb3, 0x2f, 0xaa, 0x89, 0x15, 0xb5, 0x0a, 0xaa, 0x89, 0x51, 0x4d,
		0xec, 0x2f, 0xf8, 0x29, 0x09, 0x63, 0x8e, 0xbe, 0x48, 0x35, 0xb1, 0x82, 0x57, 0x40, 0x35, 0x31,
		0xbd, 0x97, 0x40, 0x35, 0xb1, 0x35, 0x3d, 0x71, 0xaa, 0x89, 0xe9, 0xf0, 0x2a, 0xad, 0x9a, 0x58,
		0xe3, 0xc0, 0x72, 0x7b, 0x6e, 0x8f, 0x92, 0x62, 0xfa, 0x76, 0x56, 0x28, 0x29, 0xa6, 0xff, 0x82,
		0x3e, 0x2e, 0x29, 0xf6, 0x07, 0x8e, 0x48, 0x5d, 0x31, 0x5a, 0x6d, 0x52, 0xbd, 0xc8, 0x53, 0x33,
		0x65, 0x64, 0xbd, 0xd4, 0x15, 0xd3, 0xe9, 0x46, 0xe4, 0xcb, 0x7b, 0x55, 0x94, 0x15, 0x2b, 0x8f,
		0x85, 0x94, 0x15, 0xcb, 0xde, 0x66, 0xca, 0x8a, 0xe5, 0x5b, 0xe1, 0xbe, 0x5b, 0x1b, 0xa9, 0xe3,
		0xb8, 0x9f, 0xbf, 0x1c, 0x9e, 0x76, 0xa9, 0x2a, 0x56, 0x4c, 0xdd, 0x4a, 0x55, 0xb1, 0x82, 0x4b,
		0xd2, 0x0c, 0x3d, 0x87, 0xa2, 0x62, 0x39, 0x7c, 0x56, 0x06, 0x8b, 0x8a, 0x2d, 0x49, 0xe6, 0x9f,
		0xd1, 0x41, 0x6a, 0x50, 0x53, 0xac, 0x98, 0x00, 0x4d, 0x4d, 0x31, 0xbd, 0xe2, 0x75, 0x26, 0xae,
		0xc4, 0x86, 0x50, 0x99, 0x1b, 0x42, 0x94, 0x14, 0x33, 0xba, 0x3e, 0xa6, 0xa4, 0x98, 0x86, 0x0d,
		0xb4, 0xd2, 0x2b, 0x8a, 0x2d, 0xff, 0x23, 0x05, 0xc5, 0x4c, 0x0d, 0x3e, 0x95, 0x71, 0xa0, 0xaa,
		0xc1, 0xe0, 0xff, 0x0b, 0xfa, 0x42, 0xf5, 0x1f, 0xaa, 0x91, 0x1c, 0x00, 0xa9, 0x89, 0xbd, 0x62,
		0x3b, 0xa5, 0xc4, 0xb2, 0x30, 0x93, 0x52, 0x62, 0x39, 0xa2, 0x96, 0x52, 0x62, 0xeb, 0x28, 0x81,
		0x29, 0x25, 0xb6, 0xf6, 0x2a, 0x97, 0x52, 0x62, 0xa5, 0x28, 0x55, 0x60, 0xa4, 0xc4, 0x56, 0xe8,
		0x01, 0x9e, 0xac, 0xd8, 0xea, 0x12, 0x28, 0x31, 0x56, 0x66, 0xc2, 0x83, 0x48, 0x7c, 0x80, 0x09,
		0x10, 0x2a, 0x11, 0x82, 0x27, 0x44, 0xf0, 0xc4, 0x08, 0x9b, 0x20, 0x61, 0x10, 0x25, 0x10, 0xc2,
		0x04, 0x47, 0x9c, 0x52, 0x83, 0xb1, 0xb4, 0x58, 0x57, 0xf2, 0x0c, 0x92, 0x26, 0x2b, 0x28, 0x71,
		0x82, 0x25, 0x50, 0xc8, 0x44, 0xca, 0x00, 0x42, 0x85, 0x4e, 0xac, 0x8c, 0x21, 0x58, 0xc6, 0x10,
		0x2d, 0x33, 0x08, 0x17, 0x16, 0xf1, 0x02, 0x23, 0x60, 0xb0, 0x44, 0x2c, 0x35, 0x7c, 0x38, 0x0e,
		0x46, 0x11, 0x6e, 0xb0, 0x5c, 0xe6, 0xab, 0xf9, 0x32, 0x40, 0xe3, 0x0b, 0xa6, 0xfe, 0x2b, 0x3c,
		0x51, 0x33, 0x81, 0xb0, 0x19, 0x44, 0xdc, 0x4c, 0x21, 0x70, 0xc6, 0x11, 0x39, 0xe3, 0x08, 0x9d,
		0x59, 0xc4, 0x0e, 0x93, 0xe0, 0x81, 0x12, 0xbd, 0x14, 0x3a, 0xb0, 0x7a, 0xb2, 0x2b, 0x19, 0x43,
		0xa8, 0xe9, 0x8d, 0x08, 0x03, 0xd0, 0x93, 0xfd, 0x2f, 0x49, 0x54, 0xad, 0x09, 0xbc, 0x06, 0x47,
		0x4d, 0x6f, 0xf0, 0xf3, 0x9e, 0x37, 0xe9, 0xc5, 0xa1, 0x54, 0x23, 0xf8, 0x95, 0x24, 0xab, 0xd9,
		0x9e, 0xf9, 0xc8, 0xe2, 0x6e, 0x9b, 0x7f, 0x6c, 0x9f, 0xb8, 0xed, 0x6f, 0xe0, 0x79, 0x3c, 0x59,
		0x56, 0x6d, 0xb6, 0xac, 0x43, 0xfb, 0xe8, 0xd7, 0xf3, 0x33, 0x13, 0x96, 0x53, 0x9f, 0x2d, 0xe7,
		0xc2, 0x6e, 0x9f, 0x3b, 0x26, 0xac, 0xa6, 0x31, 0x5b, 0x4d, 0xfb, 0xf4, 0xc8, 0x6e, 0x9b, 0xb0,
		0x9a, 0xe6, 0x6c, 0x35, 0x3d, 0xc7, 0xab, 0x40, 0x2f, 0xe5, 0xf7, 0x0d, 0xf4, 0xa8, 0xec, 0x26,
		0x44, 0xd7, 0x80, 0x90, 0xfc, 0x22, 0x1a, 0xc3, 0x36, 0x1e, 0x9e, 0x2d, 0x6a, 0x11, 0x8b, 0xe1,
		0xf6, 0xe9, 0x5e, 0x5d, 0xcc, 0x3c, 0x76, 0x1d, 0x58, 0x0d, 0x03, 0xd6, 0x32, 0x8b, 0x5c, 0x07,
		0x56, 0xd3, 0x80, 0x95, 0xcc, 0xf3, 0xe3, 0x81, 0x55, 0xc7, 0x0e, 0xc4, 0xac, 0xd0, 0x99, 0xf8,
		0xfe, 0x4c, 0x0c, 0x42, 0x16, 0xf0, 0x4e, 0x57, 0x01, 0x2f, 0xe4, 0xfd, 0xb8, 0x12, 0x03, 0x05,
		0xbd, 0xd3, 0xc5, 0xe1, 0x0b, 0x7b, 0xaf, 0x2e, 0x05, 0x56, 0xe0, 0x1b, 0x37, 0xde, 0x02, 0xc6,
		0xda, 0x4a, 0x7a, 0xc5, 0x19, 0xe8, 0x36, 0xc4, 0xca, 0x22, 0x96, 0xcd, 0xd0, 0xa7, 0x8b, 0xe1,
		0x6e, 0x72, 0x11, 0xe6, 0x73, 0x37, 0x59, 0x23, 0x77, 0xe0, 0x6e, 0xb2, 0x3e, 0x6e, 0xcd, 0xdd,
		0x64, 0xcd, 0x17, 0xc4, 0xdd, 0x64, 0xf2, 0xa7, 0x77, 0x42, 0xc7, 0x9c, 0xdd, 0xe4, 0xe8, 0x21,
		0x8a, 0xc5, 0x0d, 0x2e, 0x7d, 0xb2, 0xc0, 0x47, 0x95, 0x3e, 0xd2, 0x10, 0xf0, 0x61, 0x88, 0xe9,
		0x42, 0xfe, 0xbd, 0x5d, 0xdd, 0xb7, 0xab, 0xc7, 0x41, 0x75, 0xf8, 0xfd, 0xff, 0x9a, 0xbf, 0x5f,
		0x5e, 0x6e, 0xfe, 0xc1, 0x1b, 0xb8, 0x31, 0xf7, 0x3b, 0x32, 0xdc, 0x4c, 0x18, 0xc0, 0x99, 0xae,
		0xe6, 0x7f, 0xfe, 0x2a, 0xe8, 0xfe, 0x1f, 0x30, 0xea, 0xd8, 0xdb, 0x21, 0x37, 0x79, 0xc3, 0x0f,
		0xee, 0x82, 0xf1, 0x54, 0xe0, 0x77, 0x75, 0xe6, 0xcb, 0x60, 0x3f, 0xa7, 0x08, 0xf3, 0xd9, 0xcf,
		0xd1, 0xc8, 0x11, 0xd8, 0xcf, 0xd1, 0xc7, 0xad, 0xd9, 0xcf, 0xd1, 0x7c, 0x41, 0xec, 0xe7, 0x90,
		0x33, 0xbd, 0x13, 0x3a, 0xe6, 0xf4, 0x73, 0xa6, 0x52, 0xc5, 0x8d, 0xba, 0x01, 0xcd, 0x9c, 0x3d,
		0xe0, 0x25, 0x74, 0x03, 0x35, 0x12, 0xf0, 0x55, 0xb5, 0x01, 0x27, 0x4f, 0x4f, 0xa4, 0x32, 0xe2,
		0x08, 0x6d, 0xb2, 0x98, 0x8b, 0x45, 0x71, 0x67, 0xc0, 0xe9, 0xd9, 0x64, 0x3d, 0xc7, 0x61, 0xd0,
		0x8f, 0xe5, 0x44, 0xb5, 0xe4, 0x48, 0xa2, 0x9f, 0x96, 0x7a, 0x1e, 0x8b, 0xc5, 0x28, 0x88, 0xe5,
		0x9d, 0x80, 0x3e, 0x8c, 0x63, 0x40, 0x5a, 0x7f, 0x1e, 0x0a, 0x82, 0x7b, 0xf3, 0x42, 0x41, 0xb3,
		0xbe, 0xdf, 0xdc, 0xdf, 0xdd, 0xab, 0xef, 0xef, 0x30, 0x26, 0x30, 0x26, 0xb0, 0x40, 0x29, 0x81,
		0xf5, 0x6c, 0xff, 0x33, 0xe7, 0xbd, 0x15, 0x64, 0x7e, 0x08, 0x39, 0xba, 0x8e, 0xf1, 0xfb, 0xff,
		0x8b, 0x75, 0x70, 0x03, 0xa0, 0x08, 0xf3, 0xb9, 0x01, 0xa0, 0x91, 0x27, 0x70, 0x03, 0x40, 0x1f,
		0xb7, 0xe6, 0x06, 0x80, 0xe6, 0x0b, 0xe2, 0x06, 0x00, 0x59, 0xd3, 0x3b, 0xa1, 0x63, 0xd6, 0x06,
		0xc0, 0x27, 0x03, 0xfa, 0xff, 0x3b, 0xec, 0xff, 0x17, 0xfc, 0x62, 0xff, 0x5f, 0xaf, 0xc5, 0xb0,
		0xff, 0x8f, 0x12, 0x8a, 0xd9, 0xff, 0xd7, 0x30, 0x14, 0x98, 0xd8, 0xff, 0xaf, 0xef, 0xb0, 0xf1,
		0xcf, 0x60, 0xc0, 0xc2, 0xa4, 0x0c, 0xd6, 0xb3, 0xf1, 0x4f, 0x8b, 0xe1, 0x53, 0x73, 0xc5, 0x56,
		0x6a, 0x12, 0xcf, 0xc5, 0x6b, 0x21, 0xe7, 0x2f, 0x44, 0xfd, 0x6b, 0x71, 0x13, 0xdc, 0x06, 0xf1,
		0xf5, 0xac, 0xd8, 0xde, 0x9a, 0xdc, 0x0a, 0xd5, 0x4f, 0x1a, 0xe6, 0x55, 0x35, 0x1f, 0xbc, 0x5f,
		0x95, 0x8b, 0x29, 0xfa, 0x5b, 0x2f, 0xdf, 0x88, 0x56, 0xde, 0xd9, 0xba, 0x5d, 0x0c, 0xe7, 0x8f,
		0xd2, 0xef, 0xb6, 0x64, 0x24, 0xa3, 0xad, 0xb1, 0xb8, 0x13, 0xe3, 0xc5, 0x97, 0xad, 0xb1, 0x54,
		0xbf, 0x55, 0x93, 0x49, 0x56, 0xd5, 0x41, 0x10, 0x07, 0x57, 0x41, 0x24, 0xb6, 0xc6, 0xd1, 0xed,
		0x56, 0x3c, 0xbe, 0x8b, 0x66, 0x7f, 0x6c, 0xdd, 0xc4, 0x55, 0x19, 0xa9, 0xad, 0xa5, 0x16, 0x46,
		0x94, 0x7e, 0xb7, 0xf5, 0xf8, 0x4f, 0xa7, 0xff, 0x64, 0x94, 0xcc, 0xf6, 0x8f, 0x16, 0x5f, 0xb7,
		0x56, 0x07, 0xa8, 0xaf, 0xbe, 0xb5, 0x35, 0x1f, 0xa3, 0xf5, 0x37, 0x7a, 0x71, 0xc9, 0x3d, 0x18,
		0xf4, 0x7e, 0x11, 0xf4, 0xbd, 0x22, 0xd0, 0xed, 0x44, 0x8e, 0x83, 0x2b, 0x12, 0xe8, 0x1c, 0x07,
		0x57, 0x9c, 0xbb, 0x72, 0x1c, 0x9c, 0x6e, 0x94, 0x93, 0xe3, 0xe0, 0xc8, 0x69, 0xfe, 0x3b, 0x44,
		0x60, 0xb7, 0xff, 0xd2, 0x88, 0x3f, 0x16, 0xc1, 0x30, 0x14, 0x43, 0xc4, 0x88, 0xbf, 0x54, 0x6f,
		0x01, 0xbc, 0xf1, 0x53, 0x39, 0x5b, 0x14, 0x82, 0x9b, 0x9b, 0xf3, 0x22, 0x69, 0x6b, 0x4e, 0x31,
		0x59, 0x2a, 0x95, 0xd8, 0x52, 0x94, 0x61, 0xe4, 0xbf, 0x8a, 0x07, 0xb4, 0xa2, 0x08, 0x53, 0x24,
		0x1a, 0x57, 0x14, 0xda, 0x28, 0x11, 0x68, 0x60, 0xd1, 0x67, 0x60, 0x91, 0x67, 0x94, 0x68, 0x08,
		0xda, 0x98, 0x2e, 0x65, 0x43, 0x1a, 0x88, 0xe5, 0x56, 0xa2, 0x38, 0x9c, 0xf6, 0x63, 0xb5, 0xa0,
		0xe9, 0x9d, 0xf9, 0x03, 0x77, 0x17, 0x8b, 0xf7, 0xcf, 0x16, 0x4f, 0xd9, 0x77, 0x23, 0x19, 0xf9,
		0xed, 0xd9, 0xe3, 0xf5, 0xdb, 0xd1, 0xad, 0xef, 0x8d, 0xef, 0xfc, 0x93, 0xd8, 0x8d, 0x94, 0xdf,
		0x59, 0x3c, 0x3a, 0x3f, 0xfd, 0x9d, 0x5e, 0xf2, 0xa0, 0xfc, 0x76, 0xa0, 0xec, 0xe5, 0x43, 0xe9,
		0xc9, 0x01, 0x06, 0xe7, 0xd4, 0x9f, 0xc1, 0xe9, 0x6d, 0xa1, 0xe6, 0xd1, 0xb4, 0x22, 0xee, 0xe3,
		0x30, 0xa8, 0x4e, 0x67, 0x50, 0xbd, 0x1a, 0x63, 0x94, 0xd4, 0x95, 0x50, 0x0c, 0x45, 0x28, 0x54,
		0x1f, 0xe7, 0xc4, 0x26, 0x50, 0x7a, 0x5a, 0xf6, 0x27, 0x06, 0x61, 0x30, 0x8c, 0xab, 0x52, 0xc4,
		0xc3, 0xa4, 0x01, 0x57, 0x8d, 0xc4, 0x68, 0xc6, 0x2a, 0xab, 0xe1, 0x64, 0x1a, 0x4b, 0x35, 0xaa,
		0x8a, 0xfb, 0x58, 0xa8, 0x48, 0x4e, 0x54, 0xb4, 0x69, 0x45, 0xd3, 0xab, 0xaa, 0xd7, 0xbe, 0xb0,
		0x1a, 0xf5, 0x83, 0x4b, 0x35, 0xfb, 0xa6, 0x5e, 0xdf, 0xb0, 0xea, 0xf3, 0x3f, 0x1a, 0x1b, 0x56,
		0xad, 0x59, 0xdb, 0x44, 0xca, 0x00, 0xa0, 0x1d, 0xed, 0xa7, 0x9d, 0xec, 0x47, 0x17, 0x01, 0x6b,
		0xec, 0xa1, 0x37, 0xb1, 0x9f, 0x35, 0xaf, 0xb3, 0xf6, 0x21, 0xf6, 0x7d, 0x4a, 0x66, 0x25, 0x80,
		0x60, 0x71, 0xe5, 0xc7, 0xb5, 0x50, 0x4c, 0xc4, 0xf9, 0x25, 0xe2, 0xb4, 0x53, 0x1d, 0x3f, 0xdc,
		0x0a, 0xeb, 0xef, 0xd6, 0x4f, 0x8b, 0x2d, 0xb1, 0xea, 0x38, 0x1a, 0x5c, 0x55, 0x67, 0x6f, 0x46,
		0x07, 0x6e, 0xcf, 0xef, 0x3a, 0xf6, 0xd1, 0x17, 0xfb, 0xd0, 0x6d, 0xbb, 0xde, 0x37, 0xdf, 0x6e,
		0xfd, 0xc3, 0x6f, 0xdb, 0x1d, 0xbf, 0xe7, 0xb6, 0x7e, 0x62, 0xe6, 0x5d, 0x6b, 0xe6, 0x4d, 0xdc,
		0x81, 0x49, 0xb7, 0xb8, 0xa4, 0xfb, 0x61, 0x7f, 0xe1, 0x41, 0xb4, 0x1c, 0x3e, 0xa1, 0x96, 0x88,
		0xfa, 0xa1, 0xbc, 0x85, 0x3c, 0x47, 0x9a, 0x86, 0xe2, 0x53, 0x35, 0x7e, 0xb0, 0xa4, 0xea, 0x8f,
		0xa7, 0x03, 0x61, 0xc5, 0xd7, 0xc2, 0x6a, 0xdb, 0x1d, 0x2b, 0x6d, 0x74, 0x59, 0x3d, 0xb7, 0x65,
		0xf5, 0x27, 0x2a, 0x0e, 0xa4, 0x12, 0xa1, 0x35, 0x0b, 0x04, 0x97, 0x6a, 0xf6, 0x53, 0x4b, 0x6a,
		0x27, 0x23, 0x2b, 0xc1, 0x64, 0xa3, 0xbe, 0x89, 0x16, 0x21, 0x80, 0x0f, 0xf9, 0x3c, 0x0d, 0xce,
		0x83, 0x27, 0x28, 0x04, 0xdc, 0xbc, 0x36, 0xe1, 0x84, 0xcf, 0xb3, 0x58, 0x9d, 0xa1, 0x43, 0x71,
		0x07, 0x9f, 0x95, 0x9c, 0xce, 0x95, 0x1c, 0xbb, 0xd4, 0x1f, 0x89, 0x19, 0x58, 0x7b, 0x7d, 0x25,
		0xd8, 0xe3, 0xd3, 0x3b, 0xde, 0xea, 0x1b, 0x0f, 0x34, 0xf6, 0xb4, 0x4a, 0x02, 0xa1, 0x20, 0x8e,
		0x43, 0x79, 0x35, 0x8d, 0x45, 0xa4, 0xbd, 0xab, 0x3d, 0x9e, 0xa5, 0x7c, 0x61, 0xb8, 0xe6, 0xd1,
		0x6c, 0x79, 0x7e, 0x52, 0x73, 0x33, 0x51, 0x2e, 0x84, 0x20, 0x5d, 0x00, 0x01, 0xbc, 0xf0, 0x81,
		0x56, 0xfb, 0xc1, 0x5e, 0xe8, 0x80, 0x2d, 0xef, 0x30, 0x2f, 0x6c, 0xf0, 0xdc, 0xc8, 0x47, 0x3e,
		0xf2, 0x96, 0x0c, 0x41, 0xa8, 0x78, 0x72, 0x15, 0x1a, 0x26, 0x78, 0xa5, 0x63, 0x7e, 0x13, 0xb3,
		0x51, 0x0e, 0xa6, 0x43, 0x10, 0x1a, 0x38, 0x62, 0x83, 0x48, 0x70, 0x80, 0x89, 0x0e, 0x2a, 0xe1,
		0x81, 0x27, 0x3e, 0xf0, 0x04, 0x08, 0x9b, 0x08, 0x61, 0x10, 0x22, 0x10, 0x62, 0x04, 0x47, 0x90,
		0x52, 0x83, 0xc7, 0x93, 0x7e, 0x30, 0xae, 0xde, 0x86, 0x93, 0x58, 0xf4, 0xb1, 0xb7, 0x69, 0x57,
		0x56, 0x42, 0x01, 0x11, 0xd2, 0x2a, 0xb3, 0xe8, 0x95, 0x01, 0x34, 0x0b, 0x9d, 0x6e, 0x19, 0x43,
		0xbb, 0x8c, 0xa1, 0x5f, 0x66, 0xd0, 0x30, 0x2c, 0x3a, 0x06, 0x46, 0xcb, 0x52, 0x88, 0xe0, 0x0b,
		0x88, 0x08, 0x35, 0xbd, 0x11, 0x61, 0x80, 0x7a, 0x96, 0x69, 0xd9, 0x33, 0x6a, 0x02, 0xda, 0xee,
		0xa8, 0xe9, 0x0d, 0x6e, 0xbe, 0xf2, 0x26, 0xbd, 0x38, 0x94, 0x6a, 0x84, 0x3d, 0x3e, 0x63, 0x7b,
		0xe6, 0x03, 0xed, 0xd3, 0x23, 0xbb, 0xed, 0x9f, 0x75, 0x4f, 0x3d, 0xe7, 0xc8, 0x73, 0x4f, 0x3b,
		0xc8, 0x63, 0x34, 0x6a, 0xc9, 0x82, 0xdc, 0xce, 0xaf, 0xbe, 0xf3, 0xf5, 0xa8, 0x7d, 0xde, 0x72,
		0x5a, 0x15, 0x4e, 0x94, 0x59, 0xab, 0x5b, 0xb8, 0x2a, 0xc6, 0xf6, 0x89, 0xe7, 0xe8, 0x81, 0x69,
		0xc8, 0xbf, 0xbe, 0x96, 0x97, 0xae, 0x7d, 0x60, 0x6d, 0x53, 0x50, 0x9b, 0x16, 0xc3, 0x33, 0x4f,
		0x48, 0x45, 0xa4, 0xd4, 0x7a, 0x58, 0x65, 0xa4, 0xc7, 0x15, 0x18, 0xa4, 0x90, 0x94, 0x2e, 0x0a,
		0x57, 0x29, 0x69, 0x75, 0x09, 0x70, 0x8a, 0x49, 0xa8, 0x91, 0x08, 0x50, 0xfb, 0x63, 0x65, 0x0d,
		0x78, 0x5a, 0x20, 0x2f, 0x5f, 0x06, 0x8c, 0x30, 0xec, 0x1e, 0x1f, 0xed, 0x6c, 0xd7, 0xf7, 0x0f,
		0xac, 0x96, 0x18, 0x4a, 0x25, 0x63, 0x39, 0x51, 0xd6, 0x64, 0x68, 0x05, 0xca, 0x72, 0x7b, 0x55,
		0xb7, 0x67, 0xb5, 0xa5, 0xfa, 0xcd, 0xb2, 0x97, 0xe7, 0x73, 0xad, 0xde, 0xf4, 0xaa, 0x9a, 0x68,
		0x1c, 0x6c, 0x5a, 0x4b, 0xa1, 0x83, 0xe5, 0x8d, 0x9e, 0xda, 0xfe, 0x26, 0x47, 0xe7, 0x6a, 0xd0,
		0x9c, 0xc1, 0x57, 0x12, 0x59, 0x59, 0x93, 0xd1, 0xd3, 0x73, 0xb3, 0xf5, 0x40, 0xce, 0xe0, 0xa5,
		0xd5, 0xff, 0xf5, 0xf5, 0x9d, 0xb7, 0x2d, 0x4b, 0x6c, 0x29, 0x15, 0x42, 0xf3, 0xb5, 0xdb, 0xb8,
		0xdb, 0x83, 0xcf, 0xaf, 0x67, 0x21, 0x4d, 0xa7, 0xa2, 0xfc, 0xa5, 0xd1, 0xa1, 0x02, 0x52, 0xfe,
		0x92, 0x82, 0x5b, 0xf9, 0x56, 0xb3, 0xef, 0x11, 0x10, 0x4a, 0x76, 0x5e, 0x6c, 0xcf, 0xeb, 0xba,
		0x87, 0xe7, 0x9e, 0xd3, 0xa3, 0xe8, 0xd6, 0x7a, 0x8b, 0x54, 0x8a, 0x6e, 0x15, 0x5c, 0x7f, 0x66,
		0xe2, 0x33, 0x14, 0xde, 0xca, 0xe1, 0x53, 0x32, 0x53, 0x78, 0x6b, 0x46, 0x29, 0xad, 0x47, 0x4a,
		0xf9, 0x42, 0x25, 0x68, 0xf6, 0x23, 0x97, 0xea, 0xa5, 0x4a, 0x10, 0x5e, 0x6f, 0x91, 0xb2, 0x5b,
		0x8c, 0xd4, 0x79, 0x44, 0xeb, 0xcc, 0xdc, 0x89, 0x6d, 0xa0, 0x32, 0xb7, 0x81, 0x28, 0xba, 0x65,
		0x74, 0x6d, 0x4c, 0xd1, 0x2d, 0xad, 0xda, 0x66, 0x08, 0x52, 0x31, 0xf9, 0xcd, 0xce, 0x91, 0xea,
		0x37, 0xfb, 0xf1, 0x51, 0x50, 0x7c, 0xcc, 0xb4, 0x88, 0x33, 0xd7, 0xf0, 0x1a, 0x88, 0x71, 0xf0,
		0x00, 0xa6, 0x3b, 0x36, 0xb7, 0x99, 0x92, 0x63, 0x59, 0x98, 0x49, 0xc9, 0xb1, 0x1c, 0xd1, 0x4a,
		0xc9, 0xb1, 0x75, 0xd4, 0xba, 0x94, 0x1c, 0x5b, 0x7b, 0x39, 0x4b, 0xc9, 0xb1, 0x52, 0xd4, 0x23,
		0x94, 0x1c, 0xcb, 0x37, 0x3f, 0x50, 0x72, 0x8c, 0xc4, 0x06, 0x91, 0xe0, 0x00, 0x13, 0x1d, 0x54,
		0xc2, 0x03, 0x4f, 0x7c, 0xe0, 0x09, 0x10, 0x36, 0x11, 0xc2, 0x20, 0x44, 0x20, 0xc4, 0x08, 0x8e,
		0x20, 0xa5, 0x06, 0x07, 0xd5, 0x2b, 0x19, 0xe3, 0xee, 0x4a, 0xcf, 0xcd, 0xa7, 0xb8, 0x18, 0x09,
		0x94, 0x59, 0x44, 0xca, 0x00, 0x42, 0x85, 0x4e, 0xac, 0x8c, 0x21, 0x58, 0xc6, 0x10, 0x2d, 0x33,
		0x08, 0x17, 0x16, 0xf1, 0x02, 0x23, 0x60, 0x29, 0x44, 0xf0, 0xc5, 0xc5, 0xae, 0x26, 0x93, 0xb1,
		0x08, 0xa0, 0x85, 0xc5, 0x6a, 0x3c, 0x9c, 0x54, 0x76, 0x67, 0xac, 0x60, 0xec, 0x27, 0xbf, 0xe9,
		0x85, 0x08, 0x5b, 0xcb, 0x2c, 0x30, 0x58, 0x60, 0xb0, 0xc0, 0x60, 0x81, 0xc1, 0x02, 0x83, 0x05,
		0x06, 0x0b, 0x0c, 0x16, 0x18, 0x7f, 0x32, 0xe2, 0x4f, 0xa5, 0x8a, 0x1b, 0x75, 0xe0, 0xfa, 0x62,
		0x0f, 0xd0, 0xf4, 0x6e, 0xa0, 0x46, 0x14, 0xca, 0x2a, 0xe0, 0xc1, 0x9f, 0x48, 0x85, 0x2f, 0x0a,
		0x75, 0x11, 0x8c, 0xa7, 0x02, 0x53, 0xf4, 0xf1, 0xd9, 0x3a, 0x8e, 0xc3, 0x20, 0x19, 0x0b, 0xd3,
		0x92, 0x23, 0x89, 0xaa, 0x62, 0xf9, 0x3c, 0xa6, 0x8a, 0x51, 0x10, 0xcb, 0x3b, 0x01, 0x29, 0x9a,
		0x08, 0x9c, 0x86, 0x9f, 0xbb, 0x78, 0x70, 0x6f, 0x8e, 0x8b, 0x37, 0xeb, 0xfb, 0xcd, 0xfd, 0xdd,
		0xbd, 0xfa, 0xfe, 0x0e, 0x7d, 0x9d, 0xbe, 0xce, 0x02, 0x01, 0xd8, 0x6a, 0x4a, 0xb5, 0x95, 0xd9,
		0x52, 0x4a, 0xb5, 0xe5, 0x6b, 0xb7, 0x91, 0x77, 0x4e, 0x93, 0x6d, 0x07, 0xaa, 0xb4, 0x95, 0xc7,
		0x42, 0xaa, 0xb4, 0x65, 0x6f, 0x33, 0x9e, 0x30, 0x39, 0xe0, 0x49, 0xff, 0xee, 0xf1, 0xd1, 0xde,
		0xa7, 0xda, 0xf6, 0xc1, 0x42, 0xe5, 0xd8, 0x0b, 0x83, 0xe1, 0x50, 0xf6, 0x2d, 0x47, 0x8d, 0xa4,
		0x12, 0x22, 0x94, 0x6a, 0x64, 0xfd, 0xec, 0x39, 0xbf, 0x58, 0x27, 0x22, 0x0e, 0x65, 0xff, 0x52,
		0x39, 0xf7, 0xb1, 0x50, 0x91, 0x9c, 0xa8, 0x68, 0x33, 0x15, 0x3c, 0x6e, 0x34, 0x0e, 0x52, 0x11,
		0xe4, 0x7a, 0x63, 0xc3, 0xaa, 0x35, 0x6b, 0x1b, 0x56, 0x3d, 0xf9, 0x5b, 0xbd, 0xb1, 0xc9, 0x4b,
		0x04, 0xf9, 0xdb, 0x6d, 0x80, 0xda, 0xb8, 0x59, 0xf7, 0x08, 0xd6, 0xe0, 0x56, 0xe4, 0xf9, 0x25,
		0xb3, 0xf2, 0xfb, 0x06, 0x95, 0x55, 0xcb, 0x9e, 0xae, 0xdf, 0xad, 0x12, 0xd9, 0x72, 0xda, 0xf6,
		0x37, 0x8a, 0xaa, 0xae, 0x37, 0x17, 0x53, 0x54, 0xb5, 0xe0, 0x34, 0xfc, 0x51, 0x77, 0xe1, 0x91,
		0xd2, 0x1c, 0x3e, 0x20, 0x23, 0xf4, 0x54, 0xdd, 0x97, 0xda, 0x8f, 0x49, 0xcb, 0xe7, 0x89, 0xec,
		0xe3, 0x44, 0x8d, 0x1f, 0x52, 0xed, 0xc7, 0x25, 0xa7, 0xbb, 0x54, 0x09, 0x10, 0x97, 0x02, 0x90,
		0x8d, 0x06, 0xf5, 0x54, 0x8b, 0x89, 0xcc, 0xd4, 0x53, 0xd5, 0x2b, 0x50, 0x67, 0xe6, 0x4e, 0xdc,
		0xab, 0x61, 0x0d, 0xa7, 0x73, 0x0d, 0xc7, 0x2e, 0xf6, 0x47, 0x22, 0x06, 0xf5, 0x54, 0x35, 0xd9,
		0xdb, 0x2a, 0xbd, 0x94, 0x6a, 0x2b, 0x79, 0x0a, 0x54, 0x51, 0x35, 0x2d, 0xce, 0x3c, 0x51, 0x24,
		0xad, 0xde, 0x05, 0xa1, 0xc4, 0x88, 0x36, 0xaf, 0xe8, 0xa9, 0x3e, 0xb1, 0x9e, 0xca, 0xaa, 0x59,
		0x98, 0x49, 0x65, 0xd5, 0x1c, 0x71, 0x4b, 0x65, 0xd5, 0x75, 0x54, 0xbd, 0x54, 0x56, 0x5d, 0x7b,
		0x61, 0x4b, 0x65, 0xd5, 0x52, 0x54, 0x26, 0x54, 0x56, 0xcd, 0x37, 0x3f, 0x50, 0x59, 0x95, 0xc4,
		0x06, 0x91, 0xe0, 0x00, 0x13, 0x1d, 0x54, 0xc2, 0x03, 0x4f, 0x7c, 0xe0, 0x09, 0x10, 0x36, 0x11,
		0xc2, 0x20, 0x44, 0x20, 0xc4, 0x08, 0x8e, 0x20, 0xa5, 0x06, 0x53, 0xf8, 0xa8, 0x30, 0xe2, 0x44,
		0xe1, 0x23, 0x12, 0x29, 0x83, 0x09, 0x15, 0x3a, 0xb1, 0x32, 0x86, 0x60, 0x19, 0x43, 0xb4, 0xcc,
		0x20, 0x5c, 0x58, 0xc4, 0x0b, 0x8c, 0x80, 0xa5, 0x10, 0xa1, 0xf0, 0x51, 0xe1, 0xfc, 0x86, 0xc2,
		0x47, 0xeb, 0x7e, 0x51, 0xf8, 0xa8, 0xd8, 0x45, 0x50, 0xf8, 0x48, 0xd7, 0x98, 0x4a, 0xe1, 0x23,
		0x0d, 0x5c, 0x9c, 0xc2, 0x47, 0xf4, 0x75, 0xfa, 0xba, 0xa1, 0x05, 0x02, 0xae, 0xd5, 0x14, 0x3e,
		0x2a, 0xb3, 0xa5, 0x14, 0x3e, 0xca, 0xd7, 0x6e, 0x73, 0x0f, 0x87, 0x3f, 0x1e, 0x3d, 0xa5, 0x04,
		0x52, 0x79, 0x2c, 0xa4, 0x04, 0x52, 0xf6, 0x36, 0x53, 0x02, 0x29, 0x4f, 0x3e, 0x9c, 0xa5, 0x04,
		0xd2, 0x4e, 0xaa, 0xd5, 0x52, 0x6f, 0x6c, 0xd4, 0x9a, 0xb5, 0x8d, 0xfa, 0xec, 0x5b, 0xca, 0x1f,
		0xad, 0xc5, 0x6e, 0xca, 0x1f, 0xe9, 0xc0, 0xc3, 0xb2, 0x96, 0x3f, 0x7a, 0xdb, 0xa5, 0xc8, 0xf4,
		0x4b, 0x66, 0x25, 0xa5, 0x8f, 0x98, 0xa6, 0x3f, 0xa6, 0xe5, 0xe2, 0x5f, 0xd8, 0x5d, 0xd7, 0xf6,
		0xdc, 0xd3, 0x0e, 0x45, 0x90, 0xd6, 0x9b, 0x91, 0x29, 0x82, 0x54, 0x70, 0x32, 0xce, 0xce, 0x71,
		0x28, 0x87, 0x94, 0xc3, 0x47, 0x65, 0x84, 0x1c, 0xd2, 0xa9, 0x1a, 0x3f, 0x58, 0xf2, 0x75, 0x11,
		0x97, 0xb4, 0x1b, 0xf4, 0x44, 0xce, 0x65, 0x16, 0x14, 0x2e, 0xd5, 0x13, 0x29, 0x97, 0x47, 0x11,
		0x97, 0x1d, 0x6a, 0x22, 0x15, 0x13, 0xa8, 0xa9, 0x89, 0xa4, 0x57, 0xdc, 0xce, 0xd6, 0xa7, 0xb8,
		0x97, 0xc3, 0x0a, 0x4f, 0xe7, 0x0a, 0x8f, 0xbd, 0xed, 0x8f, 0x84, 0x0d, 0x0a, 0x23, 0x69, 0xb7,
		0xf7, 0x45, 0x89, 0xa4, 0xd9, 0xf3, 0xb8, 0x48, 0x1f, 0x07, 0xb5, 0x92, 0x4c, 0x0b, 0x3d, 0x73,
		0xb5, 0x21, 0x39, 0x00, 0x93, 0x47, 0x92, 0x03, 0x2a, 0x22, 0x65, 0x62, 0x26, 0x15, 0x91, 0x72,
		0x84, 0x2a, 0x15, 0x91, 0xd6, 0x51, 0xf3, 0x52, 0x11, 0x69, 0xed, 0x65, 0x2d, 0x15, 0x91, 0x4a,
		0x51, 0x92, 0x50, 0x11, 0x29, 0xdf, 0xfc, 0x40, 0x45, 0x24, 0x12, 0x1b, 0x44, 0x82, 0x03, 0x4c,
		0x74, 0x50, 0x09, 0x0f, 0x3c, 0xf1, 0x81, 0x27, 0x40, 0xd8, 0x44, 0x08, 0x83, 0x10, 0x81, 0x10,
		0x23, 0x38, 0x82, 0x94, 0x1a, 0x3c, 0x9e, 0xf4, 0x83, 0x31, 0xee, 0x16, 0xf5, 0xdc, 0x7c, 0x2a,
		0x22, 0x91, 0x40, 0x99, 0x45, 0xa4, 0x0c, 0x20, 0x54, 0xe8, 0xc4, 0xca, 0x18, 0x82, 0x65, 0x0c,
		0xd1, 0x32, 0x83, 0x70, 0x61, 0x11, 0x2f, 0x30, 0x02, 0x96, 0x42, 0x84, 0x8a, 0x48, 0x85, 0xf3,
		0x1b, 0x2a, 0x22, 0xad, 0xfb, 0x45, 0x45, 0xa4, 0x62, 0x17, 0x41, 0x45, 0x24, 0x5d, 0x63, 0x2a,
		0x15, 0x91, 0x34, 0x70, 0x71, 0x2a, 0x22, 0xd1, 0xd7, 0xe9, 0xeb, 0x86, 0x16, 0x08, 0xb8, 0x56,
		0x7f, 0x67, 0x21, 0x96, 0xa3, 0x3b, 0x02, 0x2a, 0x74, 0xac, 0xac, 0x01, 0x4f, 0xb1, 0xc3, 0xa0,
		0xca, 0xe0, 0x89, 0xa2, 0xc7, 0x4e, 0x63, 0x7b, 0x6f, 0x29, 0x3f, 0xf0, 0xa8, 0x2e, 0x60, 0x49,
		0x65, 0xf5, 0xa6, 0xb7, 0xb7, 0x93, 0x30, 0xb6, 0x26, 0x43, 0xeb, 0xb3, 0x50, 0x22, 0x0c, 0xc6,
		0xf2, 0x7f, 0xc5, 0xe0, 0x52, 0x9d, 0x4c, 0xc7, 0xb1, 0xac, 0x2e, 0xcf, 0x3c, 0x5b, 0xed, 0xe0,
		0x4a, 0x8c, 0xad, 0xde, 0x0f, 0x19, 0xf7, 0xaf, 0x13, 0xbd, 0x82, 0xcf, 0x27, 0x67, 0xed, 0xde,
		0x2f, 0x4f, 0xf4, 0x09, 0x12, 0x79, 0x82, 0x4b, 0xf5, 0x5c, 0x9f, 0xc0, 0x02, 0xd3, 0xfc, 0x58,
		0x79, 0x86, 0xe0, 0x2d, 0xd8, 0xc7, 0xce, 0x02, 0xbe, 0x26, 0xc8, 0xca, 0x9a, 0x4c, 0xe9, 0xca,
		0xa6, 0x0b, 0x7a, 0xa1, 0x19, 0x52, 0xac, 0xd3, 0x92, 0xfd, 0xd1, 0x6a, 0x93, 0xd8, 0x1f, 0x6f,
		0xeb, 0xe7, 0xc2, 0xef, 0x6e, 0x26, 0xb1, 0xc0, 0x3d, 0x05, 0xb1, 0xb0, 0x9f, 0xc7, 0x20, 0xd6,
		0x61, 0x36, 0x8f, 0x41, 0x14, 0x88, 0x74, 0x1e, 0x83, 0xd0, 0x81, 0x7b, 0xf3, 0x18, 0x84, 0x76,
		0x44, 0x9b, 0xc7, 0x20, 0xc8, 0x6a, 0x5e, 0x81, 0x08, 0x8f, 0x41, 0x14, 0xce, 0x6f, 0x78, 0x0c,
		0x62, 0xdd, 0x2f, 0x1e, 0x83, 0x28, 0x76, 0x11, 0x3c, 0x06, 0xa1, 0x6b, 0x4c, 0xe5, 0x31, 0x08,
		0x0d, 0x5c, 0x9c, 0xc7, 0x20, 0xe8, 0xeb, 0xf4, 0x75, 0x43, 0x0b, 0x04, 0x5c, 0xab, 0x79, 0x0c,
		0x22, 0x4f, 0x77, 0xe4, 0x31, 0x08, 0x56, 0x06, 0x99, 0xd4, 0xc3, 0x3c, 0x06, 0xf1, 0xfe, 0x67,
		0xc8, 0x63, 0x10, 0xfa, 0xae, 0x89, 0xc7, 0x20, 0x78, 0x0c, 0x82, 0xec, 0x8f, 0xec, 0xcf, 0xb0,
		0xe7, 0x4b, 0x79, 0x8d, 0x4c, 0x63, 0x2a, 0xc7, 0x82, 0xea, 0x23, 0x8d, 0x2c, 0x07, 0x9c, 0x04,
		0x5a, 0x1e, 0x0b, 0x39, 0x09, 0x34, 0x7b, 0x9b, 0x39, 0x5d, 0x2c, 0xdf, 0x5a, 0xf9, 0xdd, 0x43,
		0x92, 0xdc, 0x16, 0x07, 0x8a, 0xad, 0xb7, 0x8e, 0xe5, 0x40, 0xb1, 0x82, 0x4b, 0xd4, 0x0f, 0xf9,
		0x0a, 0x4f, 0x25, 0xe7, 0xf0, 0xe9, 0x18, 0x3c, 0x43, 0x4c, 0x0e, 0x84, 0x8a, 0xe5, 0x50, 0x8a,
		0xf0, 0xc5, 0xa8, 0xa3, 0xd9, 0x8f, 0x5c, 0xaa, 0x97, 0xa3, 0x8e, 0x9a, 0x1c, 0x1e, 0x56, 0x48,
		0x50, 0xe6, 0xf0, 0x30, 0xbd, 0x62, 0x74, 0x46, 0xce, 0xc4, 0x56, 0x4f, 0x99, 0x5b, 0x3d, 0x9c,
		0x1a, 0x66, 0x74, 0x1d, 0xcc, 0xa9, 0x61, 0x5a, 0xb4, 0xc6, 0x4a, 0x3f, 0x28, 0xcc, 0x1d, 0x70,
		0x38, 0x98, 0x71, 0x11, 0x66, 0x3e, 0x6b, 0x6b, 0x3c, 0x89, 0x22, 0xb0, 0xf1, 0x60, 0x89, 0xc9,
		0x1c, 0x10, 0x96, 0x85, 0x99, 0x1c, 0x10, 0x96, 0x23, 0x58, 0x39, 0x20, 0x6c, 0x1d, 0x75, 0x2d,
		0x07, 0x84, 0xad, 0xbd, 0x74, 0xe5, 0x80, 0xb0, 0x52, 0x54, 0x1f, 0x1c, 0x10, 0x96, 0x6f, 0x7e,
		0xe0, 0x80, 0x30, 0x12, 0x1b, 0x44, 0x82, 0x03, 0x4c, 0x74, 0x50, 0x09, 0x0f, 0x3c, 0xf1, 0x81,
		0x27, 0x40, 0xd8, 0x44, 0x08, 0x83, 0x10, 0x81, 0x10, 0x23, 0x38, 0x82, 0x94, 0x1a, 0x1c, 0x54,
		0xaf, 0x64, 0x8c, 0xbb, 0xff, 0x3c, 0x37, 0x9f, 0xca, 0x58, 0x24, 0x50, 0x66, 0x11, 0x29, 0x03,
		0x08, 0x15, 0x3a, 0xb1, 0x32, 0x86, 0x60, 0x19, 0x43, 0xb4, 0xcc, 0x20, 0x5c, 0x58, 0xc4, 0x0b,
		0x8c, 0x80, 0xa5, 0x10, 0xc1, 0x57, 0xc6, 0xba, 0x9a, 0x4c, 0xc6, 0x22, 0x50, 0xc0, 0xd2, 0x58,
		0xb5, 0x1a, 0x8f, 0x22, 0x95, 0xdd, 0x19, 0x81, 0xb6, 0x94, 0xdf, 0xf4, 0x44, 0x94, 0x2d, 0x66,
		0x16, 0x1a, 0x2c, 0x34, 0x58, 0x68, 0xb0, 0xd0, 0x60, 0xa1, 0xc1, 0x42, 0x83, 0x85, 0x06, 0x0b,
		0x8d, 0x3f, 0x19, 0xf1, 0x29, 0xc1, 0x5b, 0x80, 0xe9, 0x94, 0xe0, 0x2d, 0xe8, 0xc1, 0x53, 0x82,
		0x57, 0xa3, 0x75, 0x50, 0x96, 0x93, 0x69, 0x38, 0x07, 0x17, 0xa7, 0x04, 0x2f, 0x7d, 0x9d, 0xbe,
		0x6e, 0x68, 0x81, 0x80, 0x6b, 0x35, 0x45, 0xd8, 0xca, 0x6c, 0x29, 0x45, 0xd8, 0xf2, 0xb5, 0xdb,
		0xc8, 0x9b, 0xa6, 0xe3, 0x49, 0x14, 0x51, 0x86, 0xad, 0x3c, 0x16, 0x52, 0x86, 0x2d, 0x7b, 0x9b,
		0xf1, 0x74, 0xcd, 0x01, 0x0f, 0xfc, 0x77, 0x8f, 0x8f, 0xf6, 0x3e, 0xd5, 0xb6, 0x97, 0x12, 0xc8,
		0x5e, 0x18, 0x0c, 0x87, 0xb2, 0x6f, 0x39, 0x6a, 0x24, 0x95, 0x10, 0x61, 0xa2, 0x68, 0xec, 0x39,
		0xbf, 0x58, 0x27, 0x22, 0x0e, 0x65, 0xff, 0x52, 0x3d, 0x6a, 0x24, 0x3f, 0x51, 0x38, 0xde, 0x4d,
		0x24, 0x8e, 0xad, 0x44, 0xd6, 0xb8, 0xb1, 0x61, 0xd5, 0x9a, 0xb5, 0x0d, 0x0b, 0x51, 0x99, 0xdc,
		0x84, 0xbb, 0x04, 0xa8, 0xca, 0xe3, 0x66, 0x5d, 0x27, 0x58, 0x83, 0x5b, 0x91, 0xe6, 0x97, 0xcc,
		0xca, 0xef, 0x1b, 0x94, 0x4e, 0x2d, 0x7b, 0xba, 0x7e, 0xb7, 0x1c, 0x64, 0xfb, 0xb4, 0xd7, 0xa3,
		0x78, 0xea, 0x7a, 0x53, 0x31, 0xc5, 0x53, 0x0b, 0xce, 0xc2, 0x1f, 0xf4, 0x16, 0x9e, 0x2b, 0xcd,
		0xe1, 0xf3, 0x31, 0x58, 0x3e, 0x75, 0x3c, 0x89, 0xa2, 0x57, 0xb4, 0x1e, 0x97, 0x84, 0xee, 0x52,
		0x2d, 0xb5, 0x1e, 0x1b, 0xbb, 0x9b, 0x94, 0x4e, 0x2d, 0x24, 0x24, 0x53, 0x3a, 0x55, 0xaf, 0x08,
		0x9d, 0x81, 0x23, 0x71, 0x73, 0x86, 0x55, 0x9b, 0xce, 0x55, 0x1b, 0xfb, 0xd6, 0x1f, 0x89, 0x15,
		0x94, 0x4d, 0xd5, 0x63, 0x33, 0xab, 0xf4, 0xc2, 0xa9, 0xed, 0xd9, 0x43, 0xa0, 0x74, 0xaa, 0x69,
		0x51, 0x66, 0x7e, 0x49, 0x6c, 0xe6, 0x5e, 0x22, 0x39, 0xe5, 0x94, 0x54, 0x85, 0x60, 0x2a, 0xaa,
		0x2f, 0xad, 0xa7, 0xa0, 0x6a, 0x16, 0x66, 0x52, 0x50, 0x35, 0x47, 0xdc, 0x52, 0x50, 0x75, 0x1d,
		0xd5, 0x2e, 0x05, 0x55, 0xd7, 0x5e, 0xd0, 0x52, 0x50, 0xb5, 0x14, 0x75, 0x09, 0x05, 0x55, 0xf3,
		0xcd, 0x0f, 0x14, 0x54, 0x25, 0xb1, 0x41, 0x24, 0x38, 0xc0, 0x44, 0x07, 0x95, 0xf0, 0xc0, 0x13,
		0x1f, 0x78, 0x02, 0x84, 0x4d, 0x84, 0x30, 0x08, 0x11, 0x08, 0x31, 0x82, 0x23, 0x48, 0xa9, 0xc1,
		0x31, 0xa2, 0x1e, 0x40, 0x9a, 0x66, 0x00, 0xfa, 0x3e, 0x6f, 0xd1, 0x26, 0xaa, 0x1c, 0x91, 0x46,
		0x19, 0x4c, 0xa7, 0xd0, 0x69, 0x95, 0x31, 0xf4, 0xca, 0x18, 0x9a, 0x65, 0x06, 0xdd, 0xc2, 0xa2,
		0x5d, 0x60, 0xf4, 0x2b, 0x85, 0x08, 0xbe, 0xca, 0x91, 0x50, 0xd3, 0x1b, 0x11, 0x06, 0xa8, 0x27,
		0xb6, 0x96, 0xbd, 0xa1, 0x26, 0xa0, 0xed, 0x8e, 0x9a, 0xde, 0xe0, 0xe6, 0x2b, 0x6f, 0xd2, 0x8b,
		0x43, 0xa9, 0x46, 0xd0, 0x92, 0x22, 0x95, 0xed, 0x99, 0x0f, 0x38, 0x5f, 0xbd, 0xae, 0xed, 0x7b,
		0x5d, 0xfb, 0xf8, 0xd8, 0x3d, 0xaa, 0x00, 0x2b, 0xbc, 0xd4, 0x66, 0xab, 0x39, 0xef, 0x9c, 0x75,
		0x4f, 0x3d, 0xe7, 0xc8, 0x73, 0x5a, 0xc8, 0x6b, 0xa9, 0xcf, 0xd6, 0xd2, 0xfb, 0x62, 0x77, 0xb1,
		0x97, 0xd1, 0x48, 0x8e, 0x61, 0x76, 0x1c, 0xff, 0xb4, 0xe3, 0x20, 0xaf, 0xa3, 0x39, 0x5b, 0xc7,
		0x59, 0xfb, 0xbc, 0x87, 0xbe, 0x90, 0x9d, 0xc4, 0xe3, 0x3b, 0x5f, 0xec, 0xce, 0x91, 0xd3, 0xaa,
		0x60, 0x4a, 0xbc, 0x6c, 0xa0, 0xa6, 0x0c, 0x57, 0xc5, 0xd8, 0xf9, 0x22, 0x05, 0xce, 0x81, 0x05,
		0x2c, 0x3c, 0xf5, 0x22, 0xe3, 0x41, 0x6b, 0x4e, 0xa5, 0xc1, 0xf5, 0xc0, 0x6a, 0x00, 0xaf, 0x22,
		0x0d, 0xad, 0x07, 0x56, 0x13, 0x78, 0x19, 0x8b, 0x84, 0x7d, 0x60, 0xd5, 0x81, 0x17, 0xf1, 0x94,
		0x41, 0x1d, 0x58, 0x35, 0xca, 0x80, 0xd1, 0x62, 0xf8, 0x4e, 0x45, 0x5b, 0x46, 0xb1, 0x1d, 0xc7,
		0x21, 0x66, 0xb7, 0xe2, 0x44, 0x2a, 0x67, 0x2c, 0x6e, 0x84, 0x42, 0x55, 0x48, 0xac, 0x9c, 0x04,
		0xf7, 0x4f, 0x56, 0x50, 0xfb, 0xd4, 0x6c, 0xee, 0xee, 0x35, 0x9b, 0xdb, 0x7b, 0x8d, 0xbd, 0xed,
		0xfd, 0x9d, 0x9d, 0xda, 0x6e, 0x0d, 0x90, 0x4e, 0x54, 0x4e, 0xc3, 0x81, 0x08, 0xc5, 0xe0, 0xf0,
		0xa1, 0x72, 0x60, 0xa9, 0xe9, 0x78, 0x8c, 0xbc, 0x84, 0xf3, 0x48, 0x84, 0x90, 0x92, 0x95, 0x68,
		0x91, 0x08, 0x50, 0x2b, 0x6b, 0x65, 0x0d, 0x78, 0xda, 0x59, 0x2f, 0x5f, 0xc0, 0x35, 0xd8, 0x13,
		0x6d, 0xad, 0x9d, 0xc6, 0xf6, 0xde, 0x52, 0x04, 0xe8, 0x51, 0xe3, 0xc7, 0x92, 0xca, 0xea, 0x4d,
		0x6f, 0x6f, 0x27, 0x61, 0x6c, 0x4d, 0x86, 0xd6, 0x67, 0xa1, 0x44, 0x18, 0x8c, 0xe5, 0xff, 0x8a,
		0xc1, 0xa5, 0x3a, 0x99, 0x8e, 0x63, 0x59, 0x5d, 0x5e, 0x56, 0xb2, 0xac, 0x76, 0x70, 0x25, 0xc6,
		0x56, 0xef, 0x87, 0x8c, 0xfb, 0xd7, 0x89, 0x6c, 0xd0, 0xe7, 0x93, 0xb3, 0x76, 0xef, 0x97, 0x47,
		0x99, 0xa0, 0xfa, 0xf6, 0xc1, 0xa5, 0x5a, 0xe8, 0x04, 0xd5, 0x1b, 0x1b, 0xb5, 0x66, 0x6d, 0xa3,
		0x3e, 0xfb, 0x16, 0x4b, 0x7a, 0x6b, 0x95, 0xa8, 0x63, 0x6f, 0x97, 0xa6, 0xeb, 0x30, 0x40, 0x9a,
		0x6b, 0x65, 0x4d, 0xa6, 0xec, 0xa0, 0xa6, 0x0b, 0x7a, 0x21, 0xdd, 0x55, 0xb0, 0xd7, 0x52, 0x90,
		0x9a, 0x56, 0xff, 0xd7, 0x17, 0x05, 0xa9, 0xcb, 0x6c, 0x29, 0x05, 0xa9, 0xf3, 0xb5, 0xdb, 0xc8,
		0x3b, 0xfc, 0x2f, 0xee, 0x08, 0x53, 0x9b, 0xba, 0x3c, 0x16, 0x52, 0x9b, 0x3a, 0x7b, 0x9b, 0xa9,
		0x73, 0x99, 0x6f, 0xe9, 0xfc, 0x6e, 0xe5, 0xbe, 0xc5, 0xc6, 0x88, 0x7b, 0xda, 0xf1, 0xbd, 0x6f,
		0x67, 0x0e, 0x25, 0x2f, 0xd7, 0x5b, 0xe2, 0x52, 0xf2, 0xb2, 0xe0, 0xea, 0x35, 0x3b, 0xc7, 0xa1,
		0xfa, 0x65, 0x0e, 0x1f, 0x95, 0xc1, 0xea, 0x97, 0x8f, 0x0c, 0x73, 0xae, 0xcd, 0xf7, 0x5c, 0xbf,
		0xef, 0x52, 0x3d, 0x11, 0xf0, 0x9b, 0xff, 0x40, 0x7d, 0x9b, 0x2a, 0x98, 0xc5, 0x44, 0x69, 0xaa,
		0x60, 0xea, 0x15, 0xb4, 0x33, 0x74, 0x28, 0x76, 0x86, 0xca, 0xdc, 0x19, 0xa2, 0x1a, 0xa6, 0xd1,
		0x95, 0x32, 0xd5, 0x30, 0xf5, 0xeb, 0xa4, 0x95, 0x5e, 0x18, 0xf3, 0x2c, 0x7d, 0x1e, 0xc9, 0x65,
		0x33, 0x4a, 0x64, 0x9a, 0x16, 0x7a, 0x2a, 0x37, 0xc1, 0x7d, 0x35, 0x81, 0xfe, 0x55, 0xa0, 0x06,
		0x3f, 0xe4, 0x20, 0x71, 0x67, 0x10, 0x81, 0xcc, 0x57, 0x6c, 0xa7, 0x3c, 0x66, 0x16, 0x66, 0x52,
		0x1e, 0x33, 0x47, 0xd4, 0x52, 0x1e, 0x73, 0x1d, 0x65, 0x30, 0xe5, 0x31, 0xd7, 0x5e, 0xe9, 0x52,
		0x1e, 0xb3, 0x14, 0x85, 0x0a, 0xe5, 0x31, 0xf3, 0xcd, 0x0f, 0x94, 0xc7, 0x24, 0xb1, 0x41, 0x24,
		0x38, 0xc0, 0x44, 0x07, 0x95, 0xf0, 0xc0, 0x13, 0x1f, 0x78, 0x02, 0x84, 0x4d, 0x84, 0x30, 0x08,
		0x11, 0x08, 0x31, 0x82, 0x23, 0x48, 0xa9, 0xc1, 0x38, 0xad, 0x9f, 0x37, 0x73, 0x0d, 0x4a, 0x07,
		0xe8, 0x2d, 0x02, 0x45, 0xa1, 0x4c, 0x12, 0x2a, 0x83, 0x89, 0x15, 0x3a, 0xc1, 0x32, 0x86, 0x68,
		0x19, 0x43, 0xb8, 0xcc, 0x20, 0x5e, 0x58, 0x04, 0x0c, 0x8c, 0x88, 0xa5, 0x10, 0xc1, 0x17, 0xca,
		0x94, 0x42, 0x88, 0xe1, 0x78, 0x12, 0xc4, 0x8d, 0x3a, 0xb0, 0x50, 0xe6, 0x3e, 0xa0, 0xe9, 0x6d,
		0xa1, 0x46, 0x09, 0x31, 0xe6, 0x4d, 0xfb, 0x35, 0x3f, 0xf9, 0x13, 0xa9, 0xf0, 0x6f, 0x88, 0x5f,
		0x04, 0xe3, 0xa9, 0xc0, 0x96, 0xd5, 0x4a, 0xd6, 0x71, 0x1c, 0x06, 0xc9, 0x31, 0x90, 0x96, 0x1c,
		0x49, 0x54, 0x19, 0x9c, 0xe7, 0x91, 0x55, 0x8c, 0x82, 0x58, 0xde, 0x09, 0x48, 0xd5, 0x15, 0xe0,
		0x64, 0xfc, 0xdc, 0xc5, 0x83, 0x7b, 0xba, 0x38, 0x5d, 0x9c, 0x2e, 0x6e, 0x52, 0x75, 0x80, 0x6b,
		0xf5, 0x77, 0x56, 0x61, 0x39, 0xba, 0x23, 0xa5, 0xb7, 0x58, 0x10, 0x64, 0x52, 0x0c, 0xcf, 0x45,
		0x7c, 0x76, 0x5e, 0x11, 0xf1, 0x19, 0x4e, 0x42, 0xcb, 0x0b, 0x83, 0xe1, 0x50, 0xf6, 0x2d, 0x47,
		0x8d, 0xa4, 0x12, 0x22, 0x94, 0x6a, 0xb4, 0x79, 0xa9, 0x96, 0x77, 0x69, 0xf6, 0x0f, 0x2c, 0xca,
		0x69, 0x69, 0xdb, 0x26, 0xa0, 0x9c, 0x96, 0xfe, 0x0b, 0x5a, 0x95, 0xd3, 0xca, 0xda, 0x13, 0xc9,
		0xd3, 0x68, 0xb5, 0x49, 0x3c, 0x8d, 0xc7, 0x40, 0xca, 0xc8, 0x7b, 0x29, 0x91, 0xa5, 0xc9, 0xc5,
		0xbe, 0xd5, 0x5b, 0x42, 0x14, 0xc8, 0x2a, 0x8f, 0x85, 0x14, 0xc8, 0xca, 0xde, 0x66, 0x0a, 0x64,
		0xe5, 0x5b, 0xe0, 0xbe, 0x47, 0xe7, 0xe7, 0xc4, 0xfe, 0x3a, 0xd7, 0xfa, 0x39, 0xb4, 0x3b, 0xad,
		0x7f, 0xba, 0x2d, 0xef, 0x0b, 0xe5, 0xb1, 0xd6, 0x5b, 0xb2, 0x52, 0x1e, 0xab, 0xe0, 0x6a, 0x34,
		0x2b, 0xb7, 0xa1, 0x38, 0x56, 0x0e, 0x1f, 0x94, 0x99, 0xe2, 0x58, 0x37, 0xc1, 0xbd, 0xbc, 0x99,
		0xde, 0xcc, 0x35, 0x7d, 0x52, 0x7e, 0xf9, 0x5f, 0xd5, 0x7c, 0x64, 0x34, 0x17, 0xf4, 0xd9, 0xa7,
		0x40, 0x56, 0x31, 0x71, 0x9a, 0x02, 0x59, 0x7a, 0x85, 0xed, 0x8c, 0x9d, 0x8a, 0xbd, 0xa1, 0x32,
		0xf7, 0x86, 0x28, 0x92, 0x65, 0x74, 0xb5, 0x4c, 0x91, 0x2c, 0xdd, 0x7a, 0x69, 0xa5, 0x96, 0xc8,
		0x3a, 0x09, 0xee, 0xdb, 0x52, 0xfd, 0x76, 0x98, 0x3e, 0x0c, 0x0a, 0x64, 0x99, 0x16, 0x76, 0x12,
		0x91, 0xa9, 0x50, 0x44, 0x22, 0xbc, 0x0b, 0xae, 0xc6, 0x02, 0x5a, 0x2b, 0xeb, 0xed, 0x65, 0x50,
		0x36, 0x2b, 0x0b, 0x33, 0x29, 0x9b, 0x95, 0x23, 0x80, 0x29, 0x9b, 0xb5, 0x8e, 0xe2, 0x98, 0xb2,
		0x59, 0x6b, 0xaf, 0x7f, 0x29, 0x9b, 0x55, 0x8a, 0xd2, 0x85, 0xb2, 0x59, 0xf9, 0xe6, 0x07, 0xca,
		0x66, 0x91, 0xd8, 0x20, 0x12, 0x1c, 0x60, 0xa2, 0x83, 0x4a, 0x78, 0xe0, 0x89, 0x0f, 0x3c, 0x01,
		0xc2, 0x26, 0x42, 0x18, 0x84, 0x08, 0x84, 0x18, 0xc1, 0x11, 0xa4, 0xd4, 0x60, 0xca, 0x66, 0x15,
		0x4e, 0xa0, 0x28, 0x9b, 0x45, 0x42, 0x65, 0x30, 0xb1, 0x42, 0x27, 0x58, 0xc6, 0x10, 0x2d, 0x63,
		0x08, 0x97, 0x19, 0xc4, 0x0b, 0x8b, 0x80, 0x81, 0x11, 0xb1, 0x14, 0x22, 0x94, 0xcd, 0xd2, 0x83,
		0xe4, 0x50, 0x36, 0x6b, 0xed, 0x2f, 0xca, 0x66, 0x15, 0xbb, 0x08, 0x6a, 0xea, 0xe8, 0x1a, 0x59,
		0x29, 0x9b, 0xa5, 0x81, 0x8b, 0x53, 0x36, 0x8b, 0x2e, 0x4e, 0x17, 0x37, 0xab, 0x3a, 0xc0, 0xb5,
		0x9a, 0xb2, 0x59, 0x79, 0xba, 0x23, 0x65, 0xb3, 0x58, 0x10, 0x64, 0x52, 0x0c, 0xbf, 0x47, 0xac,
		0xa7, 0xb7, 0xb8, 0x5f, 0x53, 0xdb, 0xa6, 0x6e, 0x96, 0xc6, 0x7d, 0x02, 0xea, 0x66, 0xe9, 0xbf,
		0xa0, 0x8f, 0xea, 0x66, 0xfd, 0x09, 0x57, 0x24, 0x53, 0xa3, 0xd5, 0x26, 0x31, 0x35, 0x1e, 0x04,
		0x29, 0x23, 0xf3, 0xa5, 0x70, 0x96, 0x46, 0x97, 0xfd, 0xde, 0xbc, 0x32, 0x44, 0x0d, 0xad, 0xf2,
		0x58, 0x48, 0x0d, 0xad, 0xec, 0x6d, 0xa6, 0x86, 0x56, 0xbe, 0xd5, 0xee, 0x7b, 0xc5, 0x80, 0xba,
		0x4e, 0xcf, 0xe9, 0x5e, 0xd8, 0x87, 0x6d, 0x87, 0x4a, 0x5a, 0x45, 0x15, 0xb1, 0x54, 0xd2, 0x2a,
		0xb8, 0x3e, 0xcd, 0xd6, 0x79, 0xa8, 0xa7, 0x95, 0xc3, 0xc7, 0x65, 0xb6, 0x9e, 0xd6, 0x23, 0xed,
		0x7c, 0xa1, 0x02, 0x74, 0xa9, 0x9e, 0xcb, 0x00, 0x59, 0x4f, 0x55, 0x80, 0x12, 0xb4, 0xca, 0xc8,
		0xaa, 0x6d, 0x53, 0x5b, 0xab, 0x98, 0xc8, 0x4d, 0x6d, 0x2d, 0xbd, 0x02, 0x79, 0x8e, 0x0e, 0xc6,
		0x56, 0x52, 0x99, 0x5b, 0x49, 0xd4, 0xd9, 0x32, 0xba, 0xa2, 0xa6, 0xce, 0x96, 0xc6, 0xad, 0xb7,
		0xb2, 0x4b, 0x6e, 0x75, 0xd3, 0x07, 0x43, 0xf1, 0x2d, 0xb3, 0x63, 0x51, 0xe5, 0x46, 0xaa, 0x6a,
		0xaa, 0x39, 0x37, 0x10, 0xe3, 0xe0, 0x01, 0x48, 0x71, 0x6b, 0xd5, 0x76, 0xca, 0x6c, 0x65, 0x61,
		0x26, 0x65, 0xb6, 0x72, 0x44, 0x2d, 0x65, 0xb6, 0xd6, 0x51, 0x27, 0x53, 0x66, 0x6b, 0xed, 0xa5,
		0x30, 0x65, 0xb6, 0x4a, 0x51, 0xb9, 0x50, 0x66, 0x2b, 0xdf, 0xfc, 0x40, 0x99, 0x2d, 0x12, 0x1b,
		0x44, 0x82, 0x03, 0x4c, 0x74, 0x50, 0x09, 0x0f, 0x3c, 0xf1, 0x81, 0x27, 0x40, 0xd8, 0x44, 0x08,
		0x83, 0x10, 0x81, 0x10, 0x23, 0x38, 0x82, 0x94, 0x1a, 0x1c, 0x54, 0xaf, 0x64, 0x8c, 0xbb, 0xc7,
		0x3d, 0x37, 0x9f, 0xf2, 0x5a, 0x24, 0x50, 0x66, 0x11, 0x29, 0x03, 0x08, 0x15, 0x3a, 0xb1, 0x32,
		0x86, 0x60, 0x19, 0x43, 0xb4, 0xcc, 0x20, 0x5c, 0x58, 0xc4, 0x0b, 0x8c, 0x80, 0xa5, 0x10, 0xc1,
		0x97, 0xd7, 0xba, 0x9a, 0x4c, 0xc6, 0x22, 0x50, 0xc0, 0xd2, 0x5a, 0xb5, 0x1a, 0x8f, 0x31, 0x95,
		0xdd, 0x19, 0x93, 0xd1, 0x48, 0x18, 0x7b, 0xcb, 0x6f, 0x7a, 0xe2, 0xe3, 0x12, 0x58, 0x68, 0xb0,
		0xd0, 0x60, 0xa1, 0xc1, 0x42, 0x83, 0x85, 0x06, 0x0b, 0x0d, 0xf2, 0x1a, 0x16, 0x1a, 0x46, 0x14,
		0x1a, 0x53, 0xa9, 0xb0, 0x25, 0x7c, 0xf7, 0x00, 0x4d, 0xef, 0x06, 0x6a, 0x44, 0xc1, 0xae, 0x02,
		0x1e, 0xbc, 0x51, 0x0a, 0xbe, 0xdb, 0x94, 0xf7, 0xd4, 0x2c, 0xa6, 0x52, 0xc1, 0x57, 0x03, 0x17,
		0x37, 0x4a, 0xc1, 0xb7, 0xbe, 0xdf, 0xdc, 0xdf, 0xdd, 0xab, 0xef, 0xef, 0xd0, 0xd7, 0xe9, 0xeb,
		0x2c, 0x10, 0x80, 0xad, 0xa6, 0x40, 0x5c, 0xe9, 0x73, 0x55, 0x72, 0x6f, 0x09, 0xbd, 0x1d, 0x9e,
		0x2e, 0x81, 0xed, 0xf0, 0x75, 0x98, 0xcd, 0x76, 0x78, 0x81, 0x60, 0x67, 0x3b, 0xbc, 0x38, 0x77,
		0x65, 0x3b, 0x5c, 0xb3, 0x85, 0xb0, 0x1d, 0x4e, 0x6e, 0xf3, 0x07, 0x10, 0x61, 0x3b, 0xbc, 0x70,
		0x7e, 0xc3, 0x76, 0xf8, 0xba, 0x5f, 0x6c, 0x87, 0x17, 0xbb, 0x08, 0xb6, 0xc3, 0x75, 0x8d, 0xa9,
		0x6c, 0x87, 0x6b, 0xe0, 0xe2, 0x6c, 0x87, 0xd3, 0xd7, 0xe9, 0xeb, 0x86, 0x16, 0x08, 0xb8, 0x56,
		0xb3, 0x1d, 0x5e, 0x66, 0x4b, 0x39, 0x2f, 0x25, 0x5f, 0xbb, 0x8d, 0x13, 0x6d, 0x5c, 0x11, 0x7c,
		0xe3, 0x90, 0x94, 0xf2, 0x58, 0xc8, 0x21, 0x29, 0xd9, 0xdb, 0x8c, 0x37, 0x37, 0x14, 0x50, 0x08,
		0xa7, 0x7b, 0x7c, 0xb4, 0xf7, 0xa9, 0xb6, 0xbd, 0x1c, 0x46, 0xf8, 0xca, 0xf4, 0x41, 0xeb, 0x67,
		0xcf, 0xf9, 0xc5, 0x3a, 0x11, 0x71, 0x28, 0xfb, 0x97, 0xea, 0x71, 0x5a, 0xe1, 0x66, 0x2a, 0x0c,
		0xde, 0x68, 0xa6, 0x43, 0x09, 0xad, 0x7a, 0x63, 0xc3, 0xaa, 0x35, 0x6b, 0x1b, 0x56, 0x3d, 0xf9,
		0x1b, 0xd6, 0x8c, 0x50, 0x13, 0x34, 0x76, 0x50, 0x67, 0x80, 0x9a, 0x25, 0xb3, 0xb3, 0x06, 0xb7,
		0x22, 0xdf, 0x2f, 0x99, 0x95, 0xdf, 0x37, 0x38, 0xd8, 0xac, 0xec, 0xe9, 0xfa, 0x5d, 0xb3, 0x99,
		0xdc, 0x4e, 0x32, 0x9f, 0xa9, 0xed, 0x76, 0x7e, 0xf5, 0x5b, 0x4e, 0xdb, 0xfe, 0xc6, 0x91, 0x66,
		0xeb, 0xcd, 0xc9, 0x1c, 0x69, 0x56, 0x70, 0x3a, 0xce, 0xca, 0x6d, 0x78, 0xe4, 0x34, 0x87, 0x0f,
		0xca, 0xd0, 0x61, 0x66, 0x52, 0x6d, 0xdd, 0x04, 0xf7, 0xf3, 0x01, 0x4b, 0x49, 0x3f, 0xc8, 0x5a,
		0x9d, 0xad, 0x74, 0xa9, 0x96, 0x64, 0x4f, 0x46, 0xf3, 0xf9, 0x4a, 0x8d, 0x26, 0xa7, 0x97, 0x15,
		0x13, 0xa4, 0x39, 0xbd, 0x4c, 0xaf, 0x98, 0x9d, 0xa5, 0x47, 0x71, 0x27, 0x87, 0x95, 0x9d, 0xce,
		0x95, 0x1d, 0x7b, 0xdb, 0x1f, 0x09, 0x1a, 0x1c, 0x57, 0xa6, 0xd9, 0xce, 0x57, 0xb9, 0x67, 0x94,
		0x49, 0x75, 0x12, 0xdc, 0xb7, 0xa5, 0xfa, 0xad, 0x95, 0x3c, 0x0b, 0x0e, 0x26, 0x33, 0x2d, 0xea,
		0x54, 0x42, 0x11, 0xc9, 0xc1, 0x34, 0x18, 0x3f, 0x99, 0xca, 0x07, 0x33, 0x98, 0xec, 0x15, 0xdb,
		0x39, 0x98, 0x2c, 0x0b, 0x33, 0x39, 0x98, 0x2c, 0x47, 0xd4, 0x72, 0x30, 0xd9, 0x3a, 0x4a, 0x60,
		0x0e, 0x26, 0x5b, 0x7b, 0x95, 0xcb, 0xc1, 0x64, 0xa5, 0xa8, 0x51, 0x38, 0x98, 0x2c, 0xdf, 0xfc,
		0xc0, 0xc1, 0x64, 0x24, 0x36, 0x88, 0x04, 0x07, 0x98, 0xe8, 0xa0, 0x12, 0x1e, 0x78, 0xe2, 0x03,
		0x4f, 0x80, 0xb0, 0x89, 0x10, 0x06, 0x21, 0x02, 0x21, 0x46, 0x70, 0x04, 0x29, 0x35, 0x18, 0xa7,
		0xf5, 0xf3, 0x66, 0xae, 0x41, 0xe9, 0x00, 0xbd, 0x45, 0xa0, 0x28, 0x94, 0x44, 0x42, 0x65, 0x30,
		0xb1, 0x42, 0x27, 0x58, 0xc6, 0x10, 0x2d, 0x63, 0x08, 0x97, 0x19, 0xc4, 0x0b, 0x8b, 0x80, 0x81,
		0x11, 0xb1, 0x14, 0x22, 0xf8, 0x42, 0x49, 0x52, 0x08, 0x31, 0x1c, 0x4f, 0x02, 0x6c, 0xb5, 0xa4,
		0x7d, 0x40, 0xd3, 0xdb, 0x42, 0x8d, 0x12, 0x62, 0x4c, 0xb9, 0xa4, 0x35, 0x3f, 0x79, 0xa3, 0xe4,
		0x92, 0x9a, 0x94, 0x50, 0xd1, 0x2c, 0xb2, 0x52, 0x2e, 0x49, 0x03, 0x17, 0x37, 0x4a, 0x2e, 0x89,
		0x2e, 0x4e, 0x17, 0x67, 0x75, 0x00, 0x6c, 0x35, 0x55, 0x92, 0xca, 0x6c, 0x29, 0x55, 0x92, 0xf2,
		0xb5, 0xdb, 0xb4, 0xb3, 0xe2, 0xab, 0xa7, 0x4f, 0xa9, 0x92, 0x54, 0x1e, 0x0b, 0xa9, 0x92, 0x94,
		0xbd, 0xcd, 0x54, 0x49, 0xca, 0x93, 0x0d, 0x67, 0xa9, 0x92, 0xb4, 0x47, 0x95, 0xa4, 0x62, 0xed,
		0xa6, 0x4a, 0x92, 0x0e, 0x4c, 0x2c, 0x6b, 0x95, 0xa4, 0x3d, 0xaa, 0x24, 0xd1, 0xca, 0x27, 0xf5,
		0x28, 0x55, 0x92, 0x4a, 0x9f, 0xae, 0xdf, 0x23, 0xf7, 0xd2, 0x75, 0x7a, 0x6e, 0xeb, 0xdc, 0x6e,
		0xfb, 0x87, 0x76, 0xa7, 0xf5, 0x4f, 0xb7, 0xe5, 0x7d, 0xa1, 0x4a, 0xd2, 0x7a, 0x73, 0x32, 0x55,
		0x92, 0x0a, 0x4e, 0xc7, 0x59, 0xb9, 0x0d, 0x55, 0x92, 0x72, 0xf8, 0xa0, 0xcc, 0x54, 0x49, 0x0a,
		0x45, 0x34, 0x90, 0xd3, 0x60, 0x6c, 0xa5, 0xfd, 0xa0, 0x3f, 0xa7, 0xe9, 0xb2, 0x47, 0x95, 0xa4,
		0x62, 0x82, 0x34, 0x55, 0x92, 0xf4, 0x8a, 0xd9, 0x59, 0x7a, 0x14, 0x77, 0x72, 0x58, 0xd9, 0xe9,
		0x5c, 0xd9, 0xb1, 0xb7, 0xfd, 0x91, 0xa0, 0x41, 0x95, 0x24, 0xcd, 0x76, 0xbe, 0x4a, 0xad, 0x92,
		0xd4, 0x5d, 0x3c, 0x8e, 0xc3, 0xf4, 0x69, 0x50, 0x27, 0xc9, 0xb4, 0xb8, 0x03, 0x22, 0x26, 0x00,
		0x25, 0x22, 0x40, 0x35, 0xa4, 0x8c, 0x0d, 0xa5, 0x1a, 0x12, 0xcb, 0xde, 0xd7, 0x4b, 0x5d, 0xaa,
		0x21, 0xad, 0xbd, 0x9a, 0xa5, 0x1a, 0x52, 0x29, 0x6a, 0x11, 0x18, 0x35, 0xa4, 0x18, 0xe9, 0x12,
		0x5c, 0x9a, 0x1e, 0x12, 0xab, 0xb1, 0xb4, 0x90, 0xb6, 0xa9, 0x85, 0x54, 0x7a, 0x7a, 0x03, 0x4c,
		0x73, 0x50, 0xe9, 0x0e, 0x3c, 0xed, 0x81, 0xa7, 0x3f, 0xd8, 0x34, 0x08, 0x83, 0x0e, 0x81, 0xd0,
		0xa2, 0x14, 0x0a, 0x70, 0x57, 0xef, 0x1f, 0xaf, 0xdc, 0x0f, 0x84, 0x8a, 0x65, 0xfc, 0x10, 0x8a,
		0x21, 0x52, 0xd4, 0x5e, 0xf6, 0x54, 0x76, 0x80, 0x6c, 0x76, 0x17, 0x8f, 0xfa, 0x30, 0x88, 0x04,
		0xee, 0x81, 0x00, 0xb7, 0xe7, 0xf6, 0xfc, 0xde, 0xf9, 0xa1, 0xd7, 0xbe, 0xf0, 0xbd, 0x6f, 0x67,
		0x0e, 0x5a, 0xda, 0x49, 0xee, 0xb1, 0x46, 0x90, 0x4a, 0x07, 0xa0, 0x62, 0x42, 0x29, 0x72, 0xce,
		0x9e, 0x1f, 0x44, 0x72, 0xcf, 0x2e, 0x9a, 0x7e, 0xf7, 0xf4, 0xdc, 0x73, 0xba, 0xbe, 0xdb, 0x02,
		0x54, 0xb3, 0xd9, 0x20, 0x82, 0x0a, 0x47, 0xd0, 0x2e, 0x11, 0x44, 0x04, 0xbd, 0x1f, 0x41, 0x67,
		0x5d, 0xe7, 0xd8, 0xfd, 0xea, 0x1f, 0xb7, 0xed, 0xcf, 0x3d, 0xe2, 0x87, 0xf8, 0x79, 0x27, 0x7e,
		0x7a, 0x8c, 0x3e, 0x44, 0xcf, 0x5f, 0x47, 0xcf, 0x9c, 0x46, 0xf7, 0x10, 0x79, 0xb4, 0x09, 0x7c,
		0x1a, 0x1b, 0x55, 0xc6, 0xf3, 0x6b, 0xe0, 0x38, 0x65, 0x3e, 0xb2, 0x76, 0x89, 0x2c, 0x22, 0x8b,
		0x7c, 0x9c, 0xb8, 0x22, 0x4f, 0x27, 0xaa, 0xca, 0x8a, 0x2a, 0xcf, 0xfe, 0x4c, 0x38, 0x11, 0x4e,
		0x19, 0xc2, 0x69, 0xb7, 0x59, 0xa1, 0x7e, 0xe3, 0x5a, 0x5f, 0xdf, 0xd9, 0xb7, 0xa1, 0xc3, 0x96,
		0x21, 0xee, 0x13, 0x36, 0x8c, 0xef, 0x04, 0x0e, 0x06, 0x70, 0x5e, 0x48, 0x76, 0xd8, 0xad, 0x7f,
		0xf8, 0x6d, 0xbb, 0xc3, 0x6d, 0x06, 0xc2, 0xe7, 0xbd, 0xf0, 0x21, 0x74, 0x08, 0x9d, 0x77, 0x41,
		0xe7, 0xc4, 0xed, 0xf8, 0x9f, 0xbb, 0xa7, 0xe7, 0x67, 0x84, 0x0f, 0xe1, 0xf3, 0x97, 0xe1, 0x73,
		0x61, 0xbb, 0x6d, 0xfb, 0xb0, 0xed, 0x3c, 0x8a, 0x4d, 0x11, 0x46, 0x84, 0xd1, 0x5f, 0x85, 0x51,
		0x0a, 0x1e, 0xff, 0xe8, 0xb4, 0xd3, 0xf3, 0xba, 0xb6, 0xdb, 0xf1, 0x78, 0x5c, 0x87, 0x40, 0xfa,
		0xcb, 0x40, 0x72, 0xbe, 0x7a, 0x4e, 0xa7, 0xe5, 0xb4, 0x98, 0xd7, 0x88, 0xa3, 0x8f, 0xe0, 0x28,
		0x39, 0x5a, 0xe1, 0x76, 0x3c, 0xa7, 0x7b, 0x6c, 0x1f, 0x39, 0xbe, 0xdd, 0x6a, 0x75, 0x9d, 0x1e,
		0x23, 0x12, 0x91, 0xf4, 0x3e, 0x24, 0x75, 0x1c, 0xf7, 0xf3, 0x97, 0xc3, 0xd3, 0x2e, 0x81, 0x44,
		0x20, 0x7d, 0x00, 0x48, 0xbb, 0x0c, 0x49, 0x44, 0x52, 0x46, 0x48, 0x62, 0x48, 0x22, 0x90, 0x3e,
		0x0a, 0xa4, 0xb6, 0xdb, 0xf9, 0xd5, 0xb7, 0x3d, 0xaf, 0xeb, 0x1e, 0x9e, 0x7b, 0x0e, 0x21, 0x44,
		0x08, 0xbd, 0x0f, 0x42, 0x2d, 0xa7, 0x6d, 0x7f, 0x23, 0x7a, 0x88, 0x9e, 0xf7, 0xa3, 0xc7, 0xbf,
		0xb0, 0xbb, 0xae, 0xed, 0xb9, 0xa7, 0x1d, 0xe2, 0x88, 0x38, 0x7a, 0x17, 0x8e, 0xb8, 0x81, 0x46,
		0xe8, 0xbc, 0x13, 0x3a, 0xed, 0x53, 0x12, 0x68, 0x82, 0xe7, 0x9d, 0xe0, 0x39, 0xeb, 0x9e, 0x7a,
		0xce, 0xd1, 0x2c, 0x75, 0xcd, 0xef, 0x09, 0x12, 0x47, 0xc4, 0xd1, 0x5f, 0xc4, 0xd1, 0x89, 0xfd,
		0x75, 0x8e, 0x25, 0xee, 0xc2, 0x12, 0x45, 0x1f, 0x42, 0x51, 0xd7, 0xe9, 0x39, 0xdd, 0x0b, 0xee,
		0xe8, 0x13, 0x4b, 0x1f, 0xc4, 0x92, 0xdb, 0x79, 0x8c, 0x4a, 0xac, 0xef, 0x89, 0xa2, 0x77, 0xa1,
		0x68, 0x75, 0x94, 0x1d, 0x51, 0x44, 0x14, 0xfd, 0x55, 0x14, 0x51, 0x85, 0x83, 0xa8, 0xca, 0x0f,
		0x5d, 0xd0, 0x67, 0xf7, 0x81, 0x83, 0x54, 0x09, 0x60, 0x45, 0x48, 0x11, 0x52, 0x99, 0x42, 0x0a,
		0xf8, 0x4c, 0x24, 0x61, 0xa5, 0x2d, 0xac, 0x4c, 0xb8, 0x03, 0x40, 0x78, 0xe9, 0x0a, 0x2f, 0x43,
		0xee, 0x06, 0x10, 0x60, 0xba, 0x02, 0xcc, 0x8c, 0x3b, 0x03, 0xc4, 0x97, 0xae, 0xf8, 0x32, 0xe5,
		0x2e, 0x01, 0x11, 0xa6, 0x35, 0xc2, 0xf0, 0x0f, 0xf4, 0x12, 0x60, 0x1a, 0x03, 0x6c, 0x97, 0x21,
		0x8c, 0x08, 0xcb, 0x19, 0x61, 0x0c, 0x61, 0x04, 0x58, 0x5e, 0x00, 0x83, 0xbf, 0xab, 0x40, 0x68,
		0x69, 0x0d, 0x2d, 0xd0, 0x33, 0x0e, 0x44, 0x95, 0xfe, 0xa8, 0x42, 0xbe, 0xdb, 0x40, 0x7c, 0x69,
		0x8d, 0x2f, 0x6e, 0x30, 0x12, 0x52, 0x19, 0x43, 0x0a, 0xf3, 0x2e, 0x04, 0x41, 0xa5, 0x35, 0xa8,
		0xe0, 0xef, 0x48, 0x10, 0x5f, 0xba, 0xe2, 0xcb, 0x84, 0xbb, 0x13, 0x44, 0x97, 0xce, 0xe8, 0x32,
		0xe3, 0x4e, 0x05, 0x31, 0xa6, 0x2d, 0xc6, 0x0c, 0xb8, 0x6b, 0x41, 0x74, 0xe9, 0x8a, 0x2e, 0x13,
		0xee, 0x60, 0x10, 0x5d, 0xba, 0xa2, 0xcb, 0x73, 0xfc, 0x96, 0x73, 0x6c, 0x9f, 0xb7, 0x3d, 0xff,
		0xc4, 0xf1, 0xba, 0xee, 0x11, 0xc1, 0x45, 0x70, 0x65, 0x05, 0xae, 0xf3, 0x4e, 0x7a, 0x64, 0xd0,
		0x69, 0xf9, 0xed, 0x1e, 0x8f, 0x75, 0x11, 0x5c, 0x19, 0x82, 0x6b, 0xce, 0xeb, 0x9d, 0x16, 0x33,
		0x23, 0xf1, 0x95, 0x03, 0xbe, 0x3c, 0xb7, 0xed, 0xfe, 0xcb, 0x10, 0x74, 0x71, 0x72, 0x1c, 0xbd,
		0xd8, 0x24, 0xef, 0x35, 0x99, 0xcf, 0x12, 0x44, 0xe4, 0xad, 0x04, 0x11, 0xf9, 0x29, 0x71, 0x44,
		0x1c, 0x19, 0xc2, 0x43, 0x89, 0xa2, 0x75, 0xa3, 0xa8, 0x7b, 0x7a, 0xee, 0x39, 0x5d, 0xff, 0xc8,
		0x3e, 0x4b, 0x55, 0x58, 0xba, 0xbe, 0xdd, 0xfe, 0x7c, 0xda, 0x75, 0xbd, 0x2f, 0x27, 0x44, 0x10,
		0x11, 0xf4, 0x2e, 0x04, 0x3d, 0xfe, 0x8d, 0x10, 0x22, 0x84, 0xde, 0x01, 0x21, 0x4a, 0x41, 0x11,
		0x57, 0x4c, 0x72, 0xe6, 0x45, 0xaa, 0x32, 0x20, 0x0b, 0x39, 0xf9, 0xa5, 0xd0, 0x62, 0x27, 0x98,
		0xcf, 0x19, 0xf8, 0xf9, 0x62, 0x3c, 0x57, 0xfd, 0xad, 0xd4, 0xdb, 0x42, 0xcd, 0x13, 0x60, 0xc5,
		0x56, 0x6a, 0x12, 0x07, 0xb1, 0x9c, 0xa8, 0xca, 0x01, 0x40, 0xca, 0xab, 0x44, 0xfd, 0x6b, 0x71,
		0x13, 0xdc, 0x06, 0xf1, 0xf5, 0x2c, 0xb9, 0x6d, 0x4d, 0x6e, 0x85, 0xea, 0x4f, 0xd4, 0x50, 0x8e,
		0xaa, 0x4a, 0xc4, 0x3f, 0x26, 0xe1, 0x6f, 0x55, 0xa9, 0xa2, 0x38, 0x50, 0x7d, 0xb1, 0xf5, 0xf2,
		0x8d, 0x68, 0xe5, 0x9d, 0xad, 0xdb, 0x70, 0x12, 0x4f, 0xfa, 0x93, 0x71, 0x94, 0x7e, 0xb7, 0x25,
		0x23, 0x19, 0x6d, 0x8d, 0xc5, 0x9d, 0x18, 0x2f, 0xbe, 0x6c, 0x8d, 0xa5, 0xfa, 0xad, 0x1a, 0xc5,
		0x41, 0x2c, 0xaa, 0x83, 0x20, 0x0e, 0xae, 0x82, 0x48, 0x6c, 0x8d, 0xa3, 0xdb, 0xad, 0x78, 0x7c,
		0x17, 0xcd, 0xfe, 0xd8, 0xba, 0x89, 0xab, 0x32, 0x52, 0x5b, 0x4a, 0xc8, 0xd1, 0xf5, 0xd5, 0x24,
		0x8c, 0xd2, 0xef, 0xb6, 0x1e, 0xff, 0xe9, 0xf4, 0x9f, 0x8c, 0xa6, 0x57, 0xc9, 0x2f, 0xce, 0xbf,
		0x6e, 0x25, 0xff, 0x5f, 0xbd, 0x93, 0xb0, 0xbe, 0x0e, 0xa6, 0xb1, 0x73, 0x55, 0x66, 0x68, 0x11,
		0xc3, 0x60, 0x3a, 0x8e, 0xab, 0x37, 0x22, 0x0e, 0x65, 0x5f, 0x7b, 0xff, 0x4a, 0x29, 0xe3, 0xaa,
		0xe9, 0x9a, 0x07, 0xb1, 0x5f, 0xa5, 0x1a, 0x54, 0x0e, 0xac, 0x9a, 0xe6, 0x66, 0x1e, 0x25, 0x81,
		0xaa, 0x72, 0x60, 0x6d, 0x6b, 0x6e, 0xe8, 0x59, 0x28, 0x86, 0xf2, 0x1e, 0x23, 0x21, 0x2c, 0x41,
		0x3b, 0xe9, 0x57, 0x67, 0xa1, 0x1b, 0xa0, 0x15, 0x53, 0xe9, 0x4d, 0xa6, 0x61, 0x5f, 0x40, 0x3c,
		0xde, 0xb9, 0x7b, 0x89, 0x87, 0x1f, 0x93, 0x70, 0xe6, 0x61, 0x95, 0xdb, 0x39, 0x32, 0x30, 0xaa,
		0xfa, 0xca, 0x97, 0x20, 0xb2, 0xc3, 0xd1, 0xf4, 0x46, 0xa8, 0xb8, 0x72, 0x60, 0xc5, 0xe1, 0x54,
		0x80, 0x18, 0xfe, 0xc4, 0xea, 0x14, 0xd8, 0x24, 0xe2, 0x46, 0x13, 0xf1, 0x96, 0x0c, 0x41, 0x18,
		0x78, 0xc2, 0x58, 0x61, 0x82, 0xd7, 0x32, 0x3f, 0xcc, 0xcd, 0x06, 0xf1, 0x7f, 0x0c, 0x42, 0x03,
		0x47, 0x6c, 0x10, 0x09, 0x0e, 0x30, 0xd1, 0x41, 0x25, 0x3c, 0xf0, 0xc4, 0x07, 0x9e, 0x00, 0x61,
		0x13, 0x21, 0x0c, 0x42, 0x04, 0x42, 0x8c, 0xe0, 0x08, 0x52, 0x6a, 0x30, 0x48, 0xdb, 0xe7, 0xcd,
		0x44, 0x03, 0xd1, 0xfb, 0x79, 0x8b, 0x3a, 0x6d, 0x83, 0x99, 0x8d, 0x46, 0xa1, 0x90, 0xa9, 0x94,
		0x01, 0x94, 0x0a, 0x9d, 0x5a, 0x19, 0x43, 0xb1, 0x8c, 0xa1, 0x5a, 0x66, 0x50, 0x2e, 0x2c, 0xea,
		0x05, 0x46, 0xc1, 0x52, 0x88, 0x78, 0x0f, 0xb7, 0x02, 0x3b, 0xe2, 0x4f, 0xa5, 0x8a, 0x1b, 0x75,
		0xc4, 0x80, 0xbf, 0xe0, 0x37, 0x7b, 0x80, 0xa6, 0x77, 0x03, 0x35, 0x12, 0xb0, 0xa7, 0x4d, 0x71,
		0xcf, 0x03, 0x56, 0x4e, 0xa4, 0x82, 0x65, 0x08, 0xe9, 0x22, 0x92, 0xc3, 0xca, 0x78, 0x04, 0x79,
		0x65, 0x1d, 0xc7, 0x61, 0xd0, 0x8f, 0xe5, 0x44, 0xb5, 0xe4, 0x48, 0xc6, 0x91, 0x01, 0x0b, 0xea,
		0x88, 0x51, 0x10, 0xcb, 0xbb, 0xd9, 0x67, 0x33, 0x0c, 0xc6, 0x91, 0xe0, 0x61, 0xe5, 0x22, 0x5c,
		0x3c, 0xb8, 0x37, 0xc7, 0xc5, 0x9b, 0xf5, 0xfd, 0xe6, 0xfe, 0xee, 0x5e, 0x7d, 0x7f, 0x87, 0xbe,
		0x4e, 0x5f, 0x67, 0x81, 0x00, 0x6c, 0xf5, 0x77, 0x16, 0x62, 0x39, 0xba, 0xa3, 0xb8, 0x8f, 0xc3,
		0xa0, 0x3a, 0x55, 0x51, 0x1c, 0x5c, 0x8d, 0x41, 0x4b, 0xb2, 0x50, 0x0c, 0x45, 0x28, 0x54, 0x9f,
		0x95, 0x41, 0x81, 0xf5, 0x70, 0xf7, 0xf8, 0x68, 0xa7, 0xb1, 0xbd, 0x73, 0x60, 0xb9, 0xbd, 0xaa,
		0xdb, 0xb3, 0x9c, 0xfb, 0x58, 0xa8, 0x48, 0x4e, 0x54, 0x64, 0x0d, 0x27, 0xa1, 0xe5, 0x85, 0xc1,
		0x70, 0x28, 0xfb, 0x96, 0xa3, 0x46, 0x52, 0x09, 0x11, 0x4a, 0x35, 0xda, 0xbc, 0x54, 0xd1, 0xf4,
		0xaa, 0xea, 0xb5, 0x2f, 0xac, 0xda, 0xa7, 0x03, 0x6b, 0xf6, 0xb5, 0x5e, 0xdf, 0xa8, 0x37, 0x36,
		0x6a, 0xcd, 0xda, 0x46, 0x7d, 0xf6, 0x6d, 0xbd, 0xb1, 0x59, 0x01, 0x26, 0x54, 0xe0, 0x8d, 0xd5,
		0xc7, 0x7e, 0xc1, 0x63, 0x83, 0xf5, 0xd1, 0xd3, 0xc0, 0x59, 0x88, 0x29, 0xbd, 0xd6, 0x74, 0x41,
		0x4f, 0x7b, 0xae, 0x39, 0xb9, 0x22, 0x99, 0x1a, 0xad, 0x36, 0x89, 0xa9, 0xf1, 0x14, 0x48, 0x19,
		0x99, 0x2f, 0xda, 0x7d, 0xb5, 0xd4, 0x6e, 0xd3, 0xee, 0xad, 0xad, 0xdc, 0x11, 0x42, 0xb8, 0xc9,
		0x86, 0xe3, 0x92, 0x3c, 0x4b, 0x5f, 0xb2, 0xb2, 0xb8, 0xf2, 0xe3, 0x5a, 0x28, 0x98, 0x0a, 0x18,
		0xf0, 0xd8, 0xf4, 0xe6, 0xe6, 0x3c, 0x42, 0x6d, 0xc5, 0x0f, 0xb7, 0xc2, 0xfa, 0xbb, 0xf5, 0xd3,
		0xe2, 0x6c, 0x43, 0x75, 0x1c, 0x0d, 0xae, 0xaa, 0xb3, 0x37, 0xa3, 0x83, 0x3f, 0x94, 0x60, 0xfd,
		0x89, 0xa7, 0xae, 0xd7, 0x5a, 0xb1, 0x26, 0x4e, 0xc1, 0x33, 0xd7, 0xc5, 0x15, 0xa3, 0x19, 0x79,
		0x0d, 0x0e, 0x59, 0x07, 0xf2, 0xef, 0x96, 0x88, 0xfa, 0xa1, 0xbc, 0x85, 0xe3, 0xc2, 0xcf, 0xc2,
		0xf2, 0xa9, 0x1a, 0x3f, 0x58, 0x52, 0xf5, 0xc7, 0xd3, 0x81, 0xb0, 0xe2, 0x6b, 0x61, 0x2d, 0x58,
		0xa5, 0x15, 0x2f, 0x1a, 0x1d, 0xe2, 0xb1, 0xd1, 0x61, 0xcd, 0x99, 0xe6, 0xe5, 0x8c, 0x39, 0xc7,
		0x81, 0x54, 0x22, 0xb4, 0x66, 0x01, 0x22, 0xf9, 0xb5, 0x65, 0x07, 0x24, 0xc1, 0xa9, 0x8c, 0xac,
		0xda, 0x27, 0xb4, 0xee, 0x23, 0x72, 0xc7, 0xf1, 0x69, 0xcc, 0x1e, 0x3c, 0x81, 0x25, 0xe0, 0x21,
		0x25, 0x13, 0x7a, 0x8b, 0xcf, 0x42, 0x78, 0x9e, 0x1e, 0xc6, 0x96, 0x51, 0x99, 0x5b, 0x46, 0xda,
		0x5b, 0xf9, 0x9d, 0x55, 0x74, 0x79, 0x5a, 0x6d, 0xe6, 0xb7, 0xd8, 0x10, 0xb4, 0x4d, 0xa2, 0x38,
		0x9c, 0xf6, 0x63, 0xb5, 0x60, 0x77, 0x9d, 0xf9, 0x53, 0x75, 0x17, 0x2b, 0xf4, 0xcf, 0x16, 0x8f,
		0xd2, 0x77, 0x23, 0x19, 0xf9, 0xed, 0xd9, 0x33, 0xf4, 0xdb, 0xd1, 0xad, 0xef, 0x8d, 0xef, 0xfc,
		0x93, 0xd8, 0x8d, 0x94, 0xdf, 0x59, 0x3c, 0x1f, 0x3f, 0xfd, 0x9d, 0x5e, 0xf2, 0x34, 0x7c, 0x4f,
		0xb4, 0xe6, 0x0f, 0xe3, 0x64, 0xfe, 0x2c, 0x28, 0x99, 0x65, 0x5a, 0xd0, 0xa9, 0xc4, 0x08, 0xd7,
		0x0a, 0x1e, 0x55, 0xb2, 0x66, 0xd6, 0x62, 0x08, 0x63, 0x6d, 0x53, 0x18, 0x2b, 0x1b, 0x43, 0x29,
		0x8c, 0xc5, 0x0a, 0xf8, 0xf5, 0xaa, 0x97, 0xc2, 0x58, 0x6b, 0x2f, 0x6c, 0x29, 0x8c, 0x55, 0x8a,
		0x32, 0x04, 0xe6, 0xb2, 0x61, 0x1a, 0x71, 0xc7, 0x22, 0x18, 0x86, 0x62, 0x88, 0x10, 0x71, 0x97,
		0x42, 0x53, 0x00, 0xd7, 0x09, 0x2b, 0x67, 0x8b, 0xca, 0xee, 0xd9, 0x9e, 0x04, 0xeb, 0x00, 0xf3,
		0xea, 0x80, 0xe9, 0xac, 0x6e, 0x8f, 0xe2, 0x30, 0x90, 0x4a, 0x0c, 0xaa, 0xe3, 0xe8, 0x16, 0xa7,
		0x28, 0x58, 0x35, 0x9d, 0xd2, 0xb9, 0xac, 0x10, 0x58, 0x21, 0xb0, 0x42, 0x60, 0x85, 0xc0, 0x0a,
		0x81, 0x15, 0x42, 0x2e, 0x1f, 0x39, 0xa5, 0x73, 0xf3, 0xcd, 0x0f, 0x94, 0xce, 0x25, 0xb1, 0x41,
		0x24, 0x38, 0xc0, 0x44, 0x07, 0x95, 0xf0, 0xc0, 0x13, 0x1f, 0x78, 0x02, 0x84, 0x4d, 0x84, 0x30,
		0x08, 0x11, 0x08, 0x31, 0x82, 0x23, 0x48, 0xa9, 0xc1, 0xfd, 0xc9, 0x34, 0x01, 0x2e, 0xe8, 0xa1,
		0xd6, 0xb9, 0xf9, 0x14, 0xce, 0x25, 0x81, 0x32, 0x8b, 0x48, 0x19, 0x40, 0xa8, 0xd0, 0x89, 0x95,
		0x31, 0x04, 0xcb, 0x18, 0xa2, 0x65, 0x06, 0xe1, 0xc2, 0x22, 0x5e, 0x60, 0x04, 0x2c, 0x85, 0x88,
		0x19, 0xc2, 0xb9, 0xb5, 0x5d, 0x60, 0xe1, 0xdc, 0x5d, 0x0a, 0xe7, 0xae, 0xf9, 0x45, 0xe1, 0xdc,
		0x62, 0x17, 0x41, 0xe1, 0x5c, 0x5d, 0x63, 0x2a, 0x85, 0x73, 0x35, 0x70, 0x71, 0x93, 0x84, 0x73,
		0x77, 0x77, 0x76, 0x1a, 0xd4, 0xcc, 0xa5, 0x9b, 0xb3, 0x36, 0x40, 0xb6, 0x9a, 0x9a, 0xb9, 0x79,
		0xba, 0x23, 0x35, 0x73, 0x59, 0x14, 0x64, 0x52, 0x0a, 0x27, 0x42, 0x9d, 0x8d, 0xed, 0x03, 0xcb,
		0xb6, 0xda, 0x52, 0xfd, 0x56, 0x9d, 0x15, 0xf7, 0x8f, 0xb7, 0xe4, 0x27, 0xd6, 0xd1, 0x44, 0xdd,
		0x89, 0x87, 0xe4, 0xee, 0x7c, 0x67, 0x7a, 0x73, 0x25, 0x42, 0x6b, 0x32, 0xbc, 0x54, 0xaf, 0x08,
		0x78, 0x5a, 0xed, 0xe0, 0x4a, 0x8c, 0xad, 0xde, 0x0f, 0x19, 0xf7, 0xaf, 0xc5, 0xc0, 0x3a, 0x0b,
		0xe2, 0xeb, 0xc8, 0xea, 0xc9, 0x91, 0x0a, 0xc6, 0x63, 0x31, 0xb8, 0x54, 0x3f, 0x64, 0x7c, 0x6d,
		0xfd, 0x4b, 0x84, 0x13, 0xab, 0x2b, 0x22, 0x11, 0xde, 0x89, 0x81, 0x75, 0x18, 0xa8, 0xc1, 0x0f,
		0x39, 0x88, 0xaf, 0xad, 0xa0, 0x1f, 0x4e, 0xa2, 0xc8, 0x0a, 0x12, 0x23, 0x36, 0x97, 0x06, 0x5c,
		0xaa, 0x7a, 0xe3, 0x0d, 0x2d, 0x50, 0xaa, 0xf2, 0x6a, 0xd0, 0x8c, 0xa0, 0x2a, 0xaf, 0xfe, 0x0b,
		0x5a, 0x51, 0xe5, 0x45, 0x74, 0x76, 0xb2, 0x4d, 0x5a, 0x6d, 0x12, 0xdb, 0xa4, 0x94, 0x58, 0x0e,
		0x91, 0x2e, 0x46, 0xdc, 0x97, 0x40, 0xba, 0x89, 0xbf, 0x4a, 0x00, 0x78, 0xda, 0x62, 0xad, 0x86,
		0xf3, 0xb4, 0x05, 0x79, 0x7b, 0x36, 0x7c, 0x9d, 0xa7, 0x2d, 0xb4, 0x23, 0xe7, 0x3c, 0x6d, 0x41,
		0x46, 0xf3, 0x0a, 0x44, 0xf0, 0x4f, 0x5b, 0xc8, 0x81, 0x50, 0xb1, 0x8c, 0x1f, 0x30, 0xd4, 0x04,
		0xde, 0x22, 0x39, 0x35, 0xc0, 0x2d, 0xa9, 0x8a, 0xbb, 0x78, 0xf4, 0x87, 0x41, 0x04, 0x9c, 0xb7,
		0x96, 0x40, 0x72, 0x7b, 0x6e, 0xcf, 0xef, 0x9d, 0x1f, 0x7a, 0xed, 0x0b, 0xdf, 0xfb, 0x76, 0xe6,
		0xa0, 0xa6, 0xaf, 0x64, 0xa3, 0x33, 0x82, 0xed, 0x7a, 0x5b, 0xd0, 0x9d, 0xef, 0xe7, 0x88, 0x3a,
		0x7b, 0xae, 0xfa, 0xed, 0x9e, 0x5d, 0x34, 0xfd, 0xee, 0xe9, 0xb9, 0xe7, 0x74, 0x7d, 0xb7, 0x55,
		0xe1, 0x59, 0x06, 0x22, 0x2b, 0x3b, 0x64, 0xed, 0x12, 0x59, 0x44, 0x56, 0xf6, 0xc8, 0x3a, 0xeb,
		0x3a, 0xc7, 0xee, 0x57, 0xff, 0xb8, 0x6d, 0x7f, 0xee, 0x11, 0x57, 0xc4, 0x55, 0xc6, 0xb8, 0xea,
		0x31, 0x5a, 0x11, 0x55, 0xd9, 0xa1, 0x6a, 0x4e, 0xdf, 0x7b, 0xc8, 0xfc, 0xdd, 0x24, 0x1e, 0x6f,
		0x06, 0xda, 0x4a, 0xc3, 0xeb, 0x0d, 0x88, 0x6b, 0xe5, 0x41, 0xdc, 0x2e, 0x11, 0x47, 0xc4, 0xb1,
		0x0e, 0x20, 0xde, 0x2c, 0xd6, 0x07, 0x44, 0x1b, 0xd1, 0xf6, 0x21, 0xb4, 0x79, 0xf6, 0x67, 0xc2,
		0x8c, 0x30, 0x5b, 0x03, 0xcc, 0x76, 0x9b, 0x06, 0x00, 0x0d, 0x7a, 0x05, 0xdf, 0xd9, 0x6f, 0xa2,
		0x63, 0x33, 0x6f, 0x10, 0x4e, 0xcc, 0x0f, 0x04, 0x94, 0x69, 0x80, 0x7a, 0x31, 0x67, 0xdc, 0x6e,
		0xfd, 0xc3, 0x6f, 0xdb, 0x1d, 0x6e, 0xb3, 0x10, 0x56, 0x59, 0xc3, 0x8a, 0x90, 0x22, 0xa4, 0x32,
		0x85, 0xd4, 0x89, 0xdb, 0xf1, 0x3f, 0x77, 0x4f, 0xcf, 0xcf, 0x08, 0x2b, 0xc2, 0x2a, 0x33, 0x58,
		0x5d, 0xd8, 0x6e, 0xdb, 0x3e, 0x6c, 0x3b, 0xfe, 0xa1, 0xdd, 0x69, 0xfd, 0xd3, 0x6d, 0x79, 0x5f,
		0x08, 0x2f, 0xc2, 0x2b, 0x2b, 0x78, 0xa5, 0xa0, 0xf2, 0x8f, 0x4e, 0x3b, 0x3d, 0xaf, 0x6b, 0xbb,
		0x1d, 0x8f, 0xc7, 0xa4, 0x08, 0xb0, 0xcc, 0x00, 0xe6, 0x7c, 0xf5, 0x9c, 0x4e, 0xcb, 0x69, 0x31,
		0x3f, 0x12, 0x5f, 0x79, 0xe0, 0x2b, 0x39, 0xba, 0xe2, 0x76, 0x3c, 0xa7, 0x7b, 0x6c, 0x1f, 0x39,
		0xbe, 0xdd, 0x6a, 0x75, 0x9d, 0x1e, 0x23, 0x18, 0x11, 0x96, 0x2d, 0xc2, 0x3a, 0x8e, 0xfb, 0xf9,
		0xcb, 0xe1, 0x69, 0x97, 0x00, 0x23, 0xc0, 0x72, 0x00, 0xd8, 0x2e, 0x43, 0x18, 0x11, 0x96, 0x33,
		0xc2, 0x18, 0xc2, 0x08, 0xb0, 0xbc, 0x00, 0xd6, 0x76, 0x3b, 0xbf, 0xfa, 0xb6, 0xe7, 0x75, 0xdd,
		0xc3, 0x73, 0xcf, 0x21, 0xb4, 0x08, 0xad, 0xff, 0x9f, 0xbd, 0x37, 0x5c, 0x6a, 0x1b, 0xe9, 0xd2,
		0xc7, 0xbf, 0xe7, 0x2a, 0x54, 0xaa, 0xdd, 0x4a, 0xb2, 0x1b, 0x61, 0x6c, 0x0c, 0x04, 0xaa, 0xa6,
		0xb6, 0x1c, 0x30, 0x19, 0xef, 0x18, 0x9b, 0xb2, 0x4d, 0x66, 0x66, 0x03, 0xab, 0x12, 0x76, 0xdb,
		0x68, 0x47, 0xb4, 0xfc, 0x4a, 0x6d, 0x02, 0xef, 0xbc, 0xb9, 0x9e, 0xff, 0x7d, 0xfc, 0xaf, 0xec,
		0x57, 0x92, 0x6d, 0xd9, 0xc6, 0x90, 0x00, 0x96, 0xba, 0x4f, 0x4b, 0x0f, 0x1f, 0x66, 0x08, 0x33,
		0x41, 0xc7, 0xea, 0xd3, 0xe7, 0x3c, 0xcf, 0xd3, 0xa7, 0xcf, 0x49, 0xd7, 0xb5, 0x8e, 0xeb, 0xcd,
		0xda, 0x9f, 0xf0, 0x2a, 0x78, 0x55, 0xfa, 0x5e, 0x65, 0x7f, 0xa9, 0x75, 0x1a, 0xb5, 0x5e, 0xa3,
		0xdd, 0x82, 0x7f, 0xc1, 0xbf, 0x52, 0xf5, 0x2f, 0x1c, 0x30, 0xc2, 0xa5, 0x52, 0x76, 0xa9, 0x66,
		0x1b, 0xc0, 0x1d, 0x4e, 0x95, 0xb2, 0x53, 0x9d, 0x75, 0xda, 0xbd, 0xfa, 0x51, 0x94, 0x02, 0xa7,
		0xf7, 0x4e, 0xe1, 0x5f, 0xf0, 0xaf, 0x94, 0xfc, 0xeb, 0xb4, 0xf6, 0xc7, 0xd4, 0xc7, 0x70, 0x7a,
		0x0d, 0xef, 0xca, 0xc4, 0xbb, 0x3a, 0xf5, 0x6e, 0xbd, 0xf3, 0x05, 0x15, 0x12, 0xf0, 0xb1, 0x8c,
		0x7c, 0xac, 0xd1, 0x5a, 0x44, 0x31, 0xe8, 0x10, 0xf0, 0xae, 0x54, 0xbd, 0xab, 0x53, 0xef, 0x36,
		0x8e, 0xcf, 0x6b, 0x4d, 0xc4, 0x2e, 0x78, 0x57, 0xfa, 0xde, 0x85, 0x6e, 0x32, 0xf0, 0x36, 0xf9,
		0x5e, 0x97, 0x8b, 0x3b, 0x1b, 0x39, 0x08, 0x6a, 0x05, 0x72, 0x37, 0xb8, 0x1a, 0x5c, 0x4d, 0x8a,
		0xab, 0xe5, 0xa0, 0x86, 0x15, 0xee, 0xa6, 0x8d, 0xbb, 0xe5, 0xe9, 0xee, 0x07, 0xdc, 0x4e, 0x17,
		0xb7, 0xcb, 0xd9, 0x9d, 0x10, 0x38, 0x9e, 0x2e, 0x8e, 0x97, 0xaf, 0xbb, 0x22, 0xf0, 0x3b, 0x5d,
		0xfc, 0x2e, 0x6f, 0x77, 0x48, 0xe0, 0x79, 0x5a, 0x79, 0x5e, 0x7e, 0x0a, 0xb3, 0xe1, 0x78, 0x1a,
		0x39, 0xde, 0x1e, 0x42, 0x1e, 0x3c, 0x4f, 0x91, 0xe7, 0x21, 0xe4, 0xc1, 0xf1, 0x64, 0x3b, 0x5e,
		0x6e, 0xee, 0xa8, 0xc0, 0xe5, 0xb4, 0x72, 0x39, 0xcd, 0x6b, 0x46, 0xe0, 0x6d, 0xfa, 0x79, 0x5b,
		0x1e, 0xee, 0xb4, 0xc0, 0xef, 0xb4, 0xf2, 0x3b, 0x1c, 0xc0, 0xc2, 0xd5, 0x24, 0xb9, 0x9a, 0xde,
		0x77, 0x60, 0xe0, 0x6c, 0x5a, 0x39, 0x5b, 0x6e, 0xee, 0xc6, 0xc0, 0xef, 0x74, 0xf1, 0xbb, 0x3c,
		0xdd, 0x99, 0x81, 0xd7, 0xe9, 0xe4, 0x75, 0xf9, 0xba, 0x4b, 0x03, 0xdf, 0xd3, 0xc6, 0xf7, 0x72,
		0x74, 0xc7, 0x06, 0x5e, 0xa7, 0x8b, 0xd7, 0xe5, 0xe9, 0xee, 0x0d, 0xbc, 0x4e, 0x17, 0xaf, 0xeb,
		0xd5, 0xed, 0xe3, 0xfa, 0x49, 0xed, 0xbc, 0xd9, 0xb3, 0x4f, 0xeb, 0xbd, 0x4e, 0xe3, 0x08, 0x4e,
		0x07, 0xa7, 0xcb, 0xda, 0xe9, 0xce, 0x5b, 0x49, 0x29, 0x67, 0xfd, 0xd8, 0x6e, 0x76, 0x51, 0x56,
		0x07, 0xa7, 0x93, 0xe0, 0x74, 0x53, 0x3e, 0x51, 0x3f, 0x46, 0x86, 0x85, 0xdf, 0x49, 0xf4, 0xbb,
		0x5e, 0xa3, 0xd9, 0xf8, 0x9f, 0x9c, 0x79, 0x1d, 0x26, 0x56, 0x62, 0xb7, 0x17, 0x69, 0x97, 0x17,
		0x01, 0x3f, 0xc3, 0xb9, 0x80, 0x93, 0xe1, 0x5c, 0x05, 0x72, 0xae, 0x3c, 0xe1, 0x61, 0xf8, 0x17,
		0x70, 0x2f, 0xbc, 0x2b, 0xbf, 0xde, 0xd5, 0x69, 0x9f, 0xf7, 0xea, 0x1d, 0xfb, 0xa8, 0x76, 0x96,
		0x74, 0x13, 0xea, 0xd8, 0xb5, 0xe6, 0xe7, 0x76, 0xa7, 0xd1, 0xfb, 0xf5, 0x14, 0x9e, 0x05, 0xcf,
		0x4a, 0xd5, 0xb3, 0x16, 0x7f, 0x82, 0x6b, 0xc1, 0xb5, 0x52, 0x74, 0x2d, 0xb4, 0x40, 0x83, 0xbf,
		0x21, 0x59, 0x16, 0x37, 0xb2, 0x15, 0xc9, 0xe3, 0xf2, 0x90, 0x44, 0x13, 0x97, 0x83, 0xe2, 0x8d,
		0xf7, 0x9e, 0xe3, 0xf7, 0xad, 0xd7, 0x7b, 0xd6, 0xc7, 0x5a, 0x3d, 0x2c, 0xd5, 0x24, 0xa1, 0x9a,
		0x35, 0xce, 0x7d, 0xe1, 0x08, 0xd7, 0xe7, 0xe6, 0xa1, 0x46, 0x29, 0xd4, 0x0c, 0xfb, 0xd7, 0xec,
		0xc6, 0x19, 0x3b, 0xe2, 0x3a, 0x4a, 0x96, 0x25, 0x7f, 0xcc, 0x78, 0xdf, 0xe7, 0x43, 0x77, 0x64,
		0x71, 0x26, 0xbe, 0xf9, 0xc1, 0x5f, 0x96, 0xcb, 0x43, 0xe1, 0xf0, 0x3e, 0x2b, 0x3d, 0xfc, 0x41,
		0xb8, 0xf6, 0x93, 0xd2, 0x38, 0xf0, 0x85, 0xdf, 0xf7, 0xbd, 0x30, 0xf9, 0xae, 0xe4, 0x86, 0x6e,
		0x58, 0xf2, 0xd8, 0x2d, 0xf3, 0x66, 0xff, 0x2a, 0x79, 0x2e, 0xff, 0xcb, 0x0a, 0x85, 0x23, 0x98,
		0x35, 0x70, 0x84, 0x73, 0xe5, 0x84, 0xac, 0xe4, 0x85, 0xe3, 0x92, 0xf0, 0x6e, 0xc3, 0xe8, 0x1f,
		0xa5, 0x1b, 0x61, 0xb9, 0x21, 0x2f, 0x71, 0xe6, 0x8e, 0xae, 0xaf, 0xfc, 0x20, 0x4c, 0xbe, 0x2b,
		0x2d, 0x1e, 0x9d, 0x3c, 0x32, 0x9c, 0x5c, 0xc5, 0x7f, 0x71, 0xfa, 0xef, 0xd2, 0x24, 0x32, 0x3f,
		0x14, 0x81, 0xe3, 0x72, 0x36, 0xb0, 0xa2, 0x5f, 0x1b, 0x3f, 0x49, 0x8f, 0x34, 0x4f, 0x7f, 0x4b,
		0xd2, 0xb6, 0x90, 0x78, 0xb0, 0x30, 0xd9, 0x9d, 0x08, 0x1c, 0x6b, 0x12, 0xb9, 0xee, 0x95, 0xc7,
		0xb4, 0x08, 0x14, 0xe6, 0xb7, 0x6b, 0xc6, 0xb5, 0x61, 0xd2, 0x1a, 0x05, 0xde, 0x39, 0x3f, 0xd9,
		0xda, 0x9a, 0x46, 0xa8, 0x92, 0xb8, 0x1f, 0x33, 0xe3, 0x17, 0xe3, 0xad, 0xdf, 0xb7, 0xa2, 0x98,
		0x69, 0x79, 0xe1, 0xe0, 0xca, 0x8a, 0x7e, 0x18, 0x1e, 0xfe, 0xf4, 0xf4, 0xf5, 0xad, 0x46, 0x8a,
		0x8d, 0xd9, 0xf5, 0x27, 0x41, 0x9f, 0x69, 0x95, 0x26, 0x63, 0xbb, 0x7f, 0x63, 0xf7, 0xdf, 0xfc,
		0x60, 0x10, 0x2d, 0x5a, 0xbc, 0x29, 0xf4, 0xa2, 0xfa, 0xe6, 0xaf, 0x4e, 0x58, 0x0b, 0x46, 0x93,
		0x1b, 0xc6, 0x85, 0x79, 0x68, 0x88, 0x60, 0xc2, 0x34, 0xfb, 0x00, 0x4b, 0xd6, 0xa7, 0xb5, 0x6b,
		0xde, 0x40, 0x57, 0x4a, 0x7f, 0x9d, 0x8e, 0x59, 0xd8, 0x0f, 0xdc, 0xb1, 0x76, 0x58, 0x78, 0x25,
		0x2c, 0xb7, 0xb9, 0x77, 0x6f, 0xb8, 0xbc, 0xef, 0x4d, 0x06, 0xcc, 0x10, 0xd7, 0xcc, 0x58, 0x01,
		0x96, 0x46, 0xb3, 0x7b, 0x66, 0xf4, 0x7d, 0x2e, 0xa2, 0x3f, 0x05, 0x46, 0x14, 0x0e, 0xa2, 0xff,
		0xe9, 0x82, 0x87, 0x93, 0x2b, 0xab, 0xd7, 0xfc, 0x62, 0xb8, 0xa1, 0x11, 0x7b, 0x66, 0x65, 0x67,
		0x4b, 0xb7, 0x38, 0xa1, 0x69, 0x78, 0x7e, 0x18, 0xa2, 0x07, 0x4b, 0x5e, 0xa8, 0x9f, 0x28, 0xab,
		0x7d, 0xb4, 0x5e, 0x8b, 0xd8, 0x29, 0x6e, 0x28, 0x08, 0x42, 0x45, 0x16, 0x84, 0xc8, 0x5b, 0x79,
		0x09, 0x8e, 0x5c, 0x1c, 0x21, 0x2d, 0xff, 0x02, 0x9a, 0x06, 0xd9, 0xd3, 0x0c, 0x45, 0x30, 0xe9,
		0x0b, 0x3e, 0xc3, 0x6e, 0xad, 0xe9, 0x5b, 0x6d, 0xcc, 0x3e, 0xa1, 0x7d, 0x36, 0x7b, 0x95, 0x76,
		0x23, 0x74, 0x43, 0xbb, 0x19, 0xbd, 0x43, 0xbb, 0x19, 0x8e, 0xed, 0x9e, 0x77, 0x6b, 0x9f, 0x8a,
		0x46, 0xc8, 0xed, 0xd6, 0xec, 0xfd, 0xd8, 0xc9, 0xdf, 0xe9, 0xc6, 0x6f, 0xc3, 0x3e, 0x5f, 0x7e,
		0x1b, 0xcd, 0x70, 0x4c, 0x3b, 0xf7, 0xd0, 0x8d, 0x8d, 0x84, 0xa3, 0x8e, 0x39, 0xe1, 0x01, 0x0b,
		0x59, 0x70, 0xcb, 0x06, 0xd6, 0x95, 0xc3, 0x07, 0xdf, 0xdc, 0x41, 0xbc, 0x97, 0x69, 0xc7, 0x9e,
		0x84, 0xa8, 0x3c, 0x6a, 0x3d, 0xf1, 0x18, 0xff, 0x9b, 0xcb, 0x23, 0x8c, 0x5e, 0x26, 0x6e, 0xe6,
		0x51, 0x1c, 0xc7, 0xcd, 0x43, 0x63, 0x9b, 0xb8, 0xa1, 0x67, 0x01, 0x1b, 0xba, 0x77, 0x7a, 0xe4,
		0xcb, 0xb9, 0xdf, 0xce, 0x04, 0x1b, 0x1d, 0xb2, 0x8b, 0x66, 0x8c, 0x78, 0x99, 0x05, 0x8f, 0xa7,
		0x9e, 0xa1, 0xc9, 0x21, 0xaa, 0xae, 0xa4, 0x77, 0x85, 0xe8, 0xce, 0x1d, 0x1b, 0x67, 0x79, 0xb9,
		0xe6, 0x29, 0xc7, 0x6e, 0xa0, 0x09, 0x41, 0x61, 0x62, 0x32, 0xb6, 0xc6, 0x81, 0xeb, 0x07, 0xae,
		0xb8, 0xd7, 0x27, 0x8a, 0xcd, 0x13, 0xc5, 0x03, 0xfb, 0x35, 0x89, 0x08, 0x7a, 0x40, 0x1c, 0xed,
		0xa0, 0x8e, 0x8e, 0x90, 0x47, 0x63, 0xe8, 0xa3, 0x2b, 0x04, 0xd2, 0x1e, 0x0a, 0x69, 0x0f, 0x89,
		0xf4, 0x86, 0x46, 0x7a, 0x40, 0x24, 0x4d, 0xa0, 0x92, 0x76, 0x90, 0x29, 0x31, 0x58, 0x3b, 0xd0,
		0xb4, 0x96, 0x6a, 0x34, 0x83, 0x4d, 0x0f, 0xe1, 0xd3, 0xb6, 0x66, 0x66, 0xeb, 0x06, 0xa3, 0x74,
		0x86, 0x53, 0x39, 0x80, 0x55, 0xba, 0xc3, 0xab, 0xdc, 0xc0, 0xac, 0xdc, 0xc0, 0xad, 0x7c, 0xc0,
		0x2e, 0xbd, 0xe0, 0x97, 0x66, 0x30, 0x2c, 0x71, 0x91, 0xde, 0xfd, 0x98, 0xe9, 0x1d, 0xf1, 0x3d,
		0xe6, 0x0c, 0x03, 0x36, 0xd4, 0x31, 0xe2, 0xcf, 0xf5, 0xa1, 0x7d, 0x0d, 0x6d, 0x3f, 0x9b, 0x15,
		0x3b, 0x24, 0x45, 0xb8, 0x09, 0xca, 0x44, 0x65, 0x56, 0xd1, 0x23, 0x8b, 0x39, 0xbd, 0x6e, 0xa5,
		0x2d, 0x61, 0x9a, 0x9a, 0xaf, 0x27, 0x5b, 0x2a, 0x83, 0x2d, 0x81, 0x2d, 0x81, 0x2d, 0x81, 0x2d,
		0x81, 0x2d, 0x81, 0x2d, 0x01, 0xd3, 0xa4, 0xeb, 0x22, 0xba, 0x89, 0xd7, 0x89, 0xe1, 0xfa, 0xd4,
		0x34, 0xfe, 0x34, 0x67, 0xe9, 0x52, 0xe0, 0xf8, 0x33, 0xa0, 0xb6, 0xad, 0xa9, 0xf9, 0xba, 0x02,
		0xb6, 0x3c, 0x00, 0xb7, 0x1c, 0x01, 0xb8, 0xbc, 0x00, 0xb9, 0xdc, 0x01, 0xba, 0xdc, 0x01, 0xbb,
		0x7c, 0x01, 0x3c, 0x3d, 0x81, 0x9e, 0xa6, 0x80, 0x2f, 0x71, 0x1d, 0x6d, 0x65, 0xf2, 0xb5, 0x8c,
		0xe1, 0x32, 0xc6, 0x86, 0x9e, 0xef, 0x88, 0x9d, 0x8a, 0xce, 0x59, 0x63, 0x06, 0xa2, 0x0e, 0x34,
		0xfe, 0x08, 0x4d, 0xc6, 0x47, 0x31, 0x20, 0xd7, 0xbb, 0x41, 0xad, 0xfe, 0xad, 0x42, 0xcd, 0x53,
		0x97, 0x6b, 0x8f, 0x3f, 0x92, 0x0f, 0x13, 0xf7, 0x3d, 0x36, 0x0f, 0x8d, 0xea, 0x87, 0x7c, 0x7c,
		0x9e, 0x93, 0xc0, 0xe9, 0x0b, 0xd7, 0xe7, 0xc7, 0xee, 0xc8, 0x15, 0xa1, 0xbe, 0xbc, 0x63, 0x3d,
		0x22, 0xb3, 0x91, 0x23, 0xdc, 0xdb, 0x68, 0xad, 0x86, 0x8e, 0x17, 0x32, 0xf4, 0x3d, 0xa6, 0x10,
		0x0a, 0x9c, 0x3b, 0x84, 0x02, 0x84, 0x02, 0x84, 0x82, 0x22, 0xb2, 0x13, 0xfd, 0xad, 0xd7, 0xb3,
		0x93, 0xb6, 0x7e, 0xef, 0x5b, 0xc3, 0x54, 0xa7, 0x6f, 0x21, 0xfb, 0x1a, 0x87, 0xd5, 0xb4, 0xa0,
		0xfd, 0x21, 0x79, 0xc5, 0x09, 0x80, 0xa2, 0x0f, 0x80, 0x13, 0x00, 0x52, 0x1f, 0x05, 0x27, 0x00,
		0x44, 0x3f, 0x10, 0x4e, 0x00, 0x80, 0x9a, 0x80, 0x9c, 0xa6, 0xae, 0x93, 0x9f, 0x13, 0x80, 0x89,
		0xcb, 0xc5, 0xc7, 0x1c, 0x68, 0xff, 0xbb, 0x1a, 0x7f, 0x84, 0x8e, 0xc3, 0x47, 0x0c, 0xd2, 0xbf,
		0xfa, 0x85, 0xc8, 0xa5, 0xf4, 0xbf, 0x0d, 0xbd, 0x8f, 0x78, 0x28, 0x86, 0xf4, 0x4f, 0x30, 0x14,
		0xe4, 0x51, 0xfa, 0xdf, 0x47, 0x28, 0x40, 0x28, 0x00, 0x2d, 0x29, 0x80, 0xf5, 0x90, 0xfe, 0x61,
		0xb1, 0xf6, 0x89, 0x59, 0xd7, 0x11, 0x8a, 0x89, 0xfd, 0xf9, 0xeb, 0x04, 0xbf, 0xde, 0x59, 0xba,
		0xb4, 0xda, 0x8d, 0x51, 0xa7, 0xe1, 0x8a, 0xfa, 0x6d, 0x62, 0x74, 0x1f, 0x4b, 0x73, 0x7b, 0xfe,
		0xc6, 0xee, 0x35, 0x3c, 0x40, 0x34, 0x9b, 0x6e, 0x28, 0x6a, 0x42, 0x68, 0xd6, 0x39, 0xed, 0xd4,
		0xe5, 0x75, 0x8f, 0xdd, 0x30, 0xae, 0x1b, 0x60, 0x8f, 0xa8, 0xe0, 0x92, 0xe5, 0xe5, 0x8f, 0xd5,
		0xea, 0xde, 0x7e, 0xb5, 0xba, 0xbd, 0xbf, 0xb3, 0xbf, 0x7d, 0xb0, 0xbb, 0x5b, 0xde, 0x2b, 0x6b,
		0xa4, 0x3d, 0x9a, 0xed, 0x60, 0xc0, 0x02, 0x36, 0xf8, 0x14, 0x79, 0x3e, 0x9f, 0x78, 0x9e, 0x8e,
		0xa6, 0x9f, 0x87, 0x2c, 0xd0, 0x8a, 0x21, 0x61, 0x64, 0x35, 0x70, 0x56, 0xca, 0x38, 0xcb, 0xd4,
		0xaa, 0x01, 0x4c, 0x46, 0xb3, 0x78, 0xba, 0xd1, 0x2b, 0x39, 0xd3, 0xaa, 0xd5, 0x10, 0x06, 0x7a,
		0xe7, 0x3a, 0x94, 0x6a, 0x39, 0xd0, 0x3b, 0x60, 0x43, 0x16, 0x30, 0xde, 0x67, 0x98, 0xea, 0x9d,
		0xfe, 0xcb, 0x9d, 0x1f, 0xb4, 0x77, 0x4e, 0x8e, 0x76, 0x77, 0xb6, 0x77, 0x0f, 0x8d, 0x46, 0xd7,
		0x6a, 0x74, 0x8d, 0xfa, 0x9d, 0x60, 0x3c, 0x74, 0x7d, 0x1e, 0x1a, 0x43, 0x3f, 0x30, 0x7a, 0x81,
		0x33, 0x1c, 0xba, 0x7d, 0xa3, 0xce, 0x47, 0x2e, 0x67, 0x2c, 0x70, 0xf9, 0x68, 0xcb, 0x08, 0x27,
		0x57, 0xd6, 0x05, 0xef, 0x35, 0xbf, 0x18, 0xe5, 0xf2, 0xa1, 0x11, 0xfd, 0xbb, 0x52, 0xf9, 0x50,
		0xd9, 0xf9, 0x50, 0xae, 0x96, 0x3f, 0x54, 0xa2, 0x6f, 0x2b, 0x3b, 0xe8, 0x18, 0x2f, 0x85, 0x26,
		0xce, 0x2b, 0xb9, 0x16, 0x3b, 0x05, 0x4d, 0xe3, 0x25, 0x43, 0xd3, 0xa5, 0x62, 0xad, 0x8c, 0xb6,
		0x12, 0x54, 0xa0, 0x82, 0x59, 0x79, 0xa9, 0xc1, 0xa4, 0xb1, 0x6f, 0xd7, 0x8c, 0x23, 0x2d, 0x67,
		0x97, 0x96, 0x93, 0x8e, 0xa5, 0xf1, 0x2c, 0xe9, 0x5f, 0x8c, 0xb7, 0xb3, 0x4a, 0x50, 0xcb, 0x0b,
		0x07, 0x57, 0x56, 0xf4, 0xc3, 0xf0, 0xb0, 0xd1, 0xb5, 0x3b, 0xf5, 0xda, 0xd1, 0xaf, 0xb5, 0x4f,
		0x8d, 0x66, 0xa3, 0xf7, 0xa7, 0x7d, 0xde, 0xea, 0xd4, 0xbb, 0xf5, 0xce, 0x97, 0xfa, 0xb1, 0xfd,
		0xa9, 0xd6, 0x3a, 0xfe, 0xbd, 0x71, 0xdc, 0xfb, 0xf5, 0x2d, 0x32, 0xb1, 0xd4, 0x4c, 0x1c, 0xef,
		0x0b, 0x24, 0x61, 0x75, 0x49, 0x38, 0xbd, 0x8d, 0x83, 0xa6, 0xbb, 0x19, 0x2c, 0xd5, 0x31, 0x0b,
		0xfb, 0x81, 0x3b, 0xd6, 0xf2, 0xec, 0x34, 0x09, 0xce, 0x6d, 0xee, 0xdd, 0x1b, 0x2e, 0xef, 0x7b,
		0x93, 0x01, 0x33, 0xc4, 0x35, 0x33, 0x16, 0xc2, 0x98, 0x91, 0x08, 0x63, 0x46, 0xdf, 0xe7, 0xc2,
		0x71, 0x39, 0x0b, 0x8c, 0x28, 0x28, 0x5c, 0xf0, 0xe8, 0x7f, 0x8c, 0xf0, 0x5e, 0x84, 0xf2, 0x62,
		0xe7, 0x74, 0x43, 0xa3, 0x5c, 0xde, 0xd2, 0x2d, 0x5a, 0x68, 0x7c, 0x11, 0x66, 0x39, 0x50, 0x0f,
		0x96, 0x1c, 0x51, 0xc3, 0x7b, 0x92, 0x79, 0xb8, 0xf5, 0xb2, 0x12, 0xb7, 0xd3, 0xdd, 0x53, 0x38,
		0xe7, 0x07, 0xc3, 0xa3, 0xcc, 0xf0, 0xa0, 0x65, 0x6f, 0x12, 0x36, 0xf4, 0x3a, 0x0e, 0x2c, 0xc4,
		0x31, 0x20, 0xed, 0x88, 0x4b, 0x37, 0x22, 0x10, 0xde, 0x6b, 0xe6, 0x44, 0xb8, 0x9e, 0xfb, 0xcf,
		0x95, 0x55, 0xa6, 0xbe, 0xdf, 0x16, 0xf7, 0x07, 0xd7, 0x6d, 0x27, 0x1e, 0xd5, 0xf4, 0x18, 0x8d,
		0xa1, 0x4d, 0x5f, 0x05, 0x9d, 0xfa, 0x27, 0x68, 0xd8, 0x27, 0x41, 0x37, 0x1a, 0xa8, 0x6d, 0xdf,
		0x03, 0x6d, 0x99, 0x9e, 0x9e, 0x7d, 0x0c, 0x50, 0x65, 0xb2, 0xc9, 0x92, 0xeb, 0x32, 0x7a, 0x42,
		0xb3, 0xd9, 0x5f, 0x5a, 0xce, 0xfc, 0xd2, 0x6c, 0xd6, 0x97, 0x76, 0x0d, 0xa3, 0x74, 0x6c, 0x10,
		0xa5, 0x71, 0x43, 0xa8, 0x3c, 0x1c, 0x4e, 0x6a, 0xd9, 0xf0, 0x29, 0x5f, 0xc7, 0x93, 0xda, 0x35,
		0x74, 0xc2, 0xd5, 0xae, 0x22, 0x02, 0xa4, 0xc4, 0x60, 0x7d, 0x67, 0x72, 0x69, 0x3f, 0x8b, 0x4b,
		0xd3, 0x0e, 0x9c, 0x18, 0x96, 0x0a, 0x60, 0x55, 0x24, 0x80, 0x95, 0x1b, 0xa0, 0x95, 0x1b, 0xc0,
		0x95, 0x0f, 0xe0, 0xa5, 0x17, 0x00, 0xd3, 0x0c, 0x88, 0x25, 0x2e, 0xa2, 0x6d, 0xc7, 0xcc, 0x9c,
		0xcc, 0xca, 0xd2, 0x78, 0x46, 0x96, 0xee, 0xb3, 0xb1, 0x34, 0xee, 0x12, 0x9b, 0x87, 0x86, 0x98,
		0x79, 0x19, 0x7c, 0x93, 0xbb, 0xae, 0x77, 0xf9, 0xe9, 0x76, 0xa7, 0x71, 0xc3, 0xcb, 0x5c, 0x34,
		0xba, 0xc4, 0x16, 0xc7, 0x16, 0x07, 0x3b, 0xc8, 0x85, 0xd5, 0x97, 0xa8, 0x28, 0x2f, 0x7a, 0x8a,
		0x32, 0x85, 0x8e, 0x5c, 0x31, 0xe1, 0x89, 0xb1, 0xf5, 0x50, 0xc0, 0x65, 0x98, 0x0d, 0x05, 0x5c,
		0xa1, 0x9f, 0x43, 0x01, 0x57, 0xb7, 0x5d, 0xa1, 0x80, 0x13, 0xfb, 0x20, 0x50, 0xc0, 0x81, 0x68,
		0x7e, 0xe2, 0x22, 0x39, 0x50, 0xc0, 0x07, 0x8c, 0x0b, 0x57, 0xdc, 0x07, 0x6c, 0xa8, 0xb1, 0x02,
		0x5e, 0xd6, 0x70, 0x54, 0x94, 0xd9, 0x98, 0xbd, 0xfa, 0x4f, 0x4e, 0xc8, 0xf4, 0x1f, 0xd9, 0xda,
		0xe8, 0x36, 0xba, 0x76, 0xf7, 0xfc, 0x53, 0xaf, 0xf9, 0xc5, 0xee, 0xfd, 0x79, 0x56, 0xd7, 0x35,
		0x7d, 0xc5, 0xb2, 0x53, 0xa8, 0xf5, 0xe4, 0x2e, 0xcd, 0x85, 0xbf, 0xc4, 0xa3, 0xce, 0x56, 0x3b,
		0x8d, 0x34, 0xce, 0xbe, 0x54, 0xed, 0x4e, 0xfb, 0xbc, 0x57, 0xef, 0xd8, 0x8d, 0x63, 0x13, 0xca,
		0x32, 0x3c, 0x2b, 0x3d, 0xcf, 0xda, 0x83, 0x67, 0xc1, 0xb3, 0xd2, 0xf7, 0xac, 0xb3, 0x4e, 0xfd,
		0xa4, 0xf1, 0x87, 0x7d, 0xd2, 0xac, 0x7d, 0xee, 0xc2, 0xaf, 0xe0, 0x57, 0x29, 0xfb, 0x55, 0x17,
		0xd1, 0x0a, 0x5e, 0x95, 0x9e, 0x57, 0x4d, 0xe1, 0x7b, 0x57, 0x67, 0xfc, 0x9e, 0x27, 0x1c, 0x9f,
		0x0f, 0x6f, 0x2b, 0x0c, 0xae, 0xcf, 0x41, 0x5c, 0x2b, 0x8e, 0xc7, 0xed, 0xc1, 0xe3, 0xe0, 0x71,
		0xe0, 0x01, 0xf0, 0x37, 0x03, 0xfc, 0x00, 0xde, 0x06, 0x6f, 0xdb, 0xc8, 0xdb, 0x7a, 0xb5, 0xcf,
		0x70, 0x33, 0xb8, 0x99, 0x04, 0x37, 0xdb, 0xab, 0x9a, 0x98, 0x9f, 0xae, 0xf4, 0xeb, 0x12, 0x7a,
		0x13, 0x36, 0x36, 0xf2, 0x06, 0xdc, 0x09, 0xf9, 0x01, 0x0e, 0x95, 0x37, 0x87, 0x7a, 0x30, 0xdb,
		0xa4, 0x76, 0xfc, 0xdf, 0x76, 0xb3, 0xd6, 0xc2, 0x31, 0x0b, 0xdc, 0x2a, 0x6d, 0xb7, 0x82, 0x4b,
		0xc1, 0xa5, 0x52, 0x75, 0xa9, 0xd3, 0x46, 0xcb, 0xfe, 0xdc, 0x69, 0x9f, 0x9f, 0xc1, 0xad, 0xe0,
		0x56, 0xa9, 0xb9, 0xd5, 0x97, 0x5a, 0xa3, 0x59, 0xfb, 0xd4, 0xac, 0x2f, 0x66, 0x7b, 0xc1, 0xbd,
		0xe0, 0x5e, 0x69, 0xb9, 0x57, 0xe2, 0x54, 0xf6, 0x51, 0xbb, 0xd5, 0xed, 0x75, 0x6a, 0x8d, 0x56,
		0x0f, 0x65, 0x52, 0x70, 0xb0, 0xd4, 0x1c, 0xac, 0xfe, 0x47, 0xaf, 0xde, 0x3a, 0xae, 0x1f, 0x23,
		0x3f, 0xc2, 0xbf, 0xb2, 0xf0, 0xaf, 0xb8, 0x74, 0xa5, 0xd1, 0xea, 0xd5, 0x3b, 0x27, 0xb5, 0xa3,
		0xba, 0x5d, 0x3b, 0x3e, 0xee, 0xd4, 0xbb, 0x88, 0x60, 0xf0, 0xb0, 0x74, 0x3d, 0xac, 0x55, 0x6f,
		0x7c, 0xfe, 0xf5, 0x53, 0xbb, 0x03, 0x07, 0x83, 0x83, 0x65, 0xe0, 0x60, 0x7b, 0x08, 0x61, 0xf0,
		0xb0, 0x8c, 0x3d, 0x0c, 0x21, 0x0c, 0x0e, 0x96, 0x95, 0x83, 0x35, 0x1b, 0xad, 0xdf, 0xec, 0x5a,
		0xaf, 0xd7, 0x69, 0x7c, 0x3a, 0xef, 0xd5, 0xe1, 0x5a, 0x70, 0xad, 0x74, 0x5d, 0xeb, 0xb8, 0xde,
		0xac, 0xfd, 0x09, 0xaf, 0x82, 0x57, 0xa5, 0xef, 0x55, 0xf6, 0x97, 0x5a, 0xa7, 0x51, 0xeb, 0x35,
		0xda, 0x2d, 0xf8, 0x17, 0xfc, 0x2b, 0x55, 0xff, 0xc2, 0x01, 0x23, 0x5c, 0x2a, 0x65, 0x97, 0x6a,
		0xb6, 0x01, 0xdc, 0xe1, 0x54, 0x29, 0x3b, 0xd5, 0x59, 0xa7, 0xdd, 0xab, 0x1f, 0x45, 0x29, 0x70,
		0x7a, 0xef, 0x14, 0xfe, 0x05, 0xff, 0x4a, 0xc9, 0xbf, 0x4e, 0x6b, 0x7f, 0x4c, 0x7d, 0x0c, 0xa7,
		0xd7, 0xf0, 0xae, 0x4c, 0xbc, 0xab, 0x53, 0xef, 0xd6, 0x3b, 0x5f, 0x50, 0x21, 0x01, 0x1f, 0xcb,
		0xc8, 0xc7, 0x1a, 0xad, 0x45, 0x14, 0x83, 0x0e, 0x01, 0xef, 0x4a, 0xd5, 0xbb, 0x3a, 0xf5, 0x6e,
		0xe3, 0xf8, 0xbc, 0xd6, 0x44, 0xec, 0x82, 0x77, 0xa5, 0xef, 0x5d, 0xe8, 0x26, 0x03, 0x6f, 0x93,
		0xef, 0x75, 0xb9, 0xb8, 0xb3, 0x91, 0x83, 0xa0, 0x56, 0x20, 0x77, 0x83, 0xab, 0xc1, 0xd5, 0xa4,
		0xb8, 0x5a, 0x0e, 0x6a, 0x58, 0xe1, 0x6e, 0xda, 0xb8, 0x5b, 0x9e, 0xee, 0x7e, 0xc0, 0xed, 0x74,
		0x71, 0xbb, 0x9c, 0xdd, 0x09, 0x81, 0xe3, 0xe9, 0xe2, 0x78, 0xf9, 0xba, 0x2b, 0x02, 0xbf, 0xd3,
		0xc5, 0xef, 0xf2, 0x76, 0x87, 0x04, 0x9e, 0xa7, 0x95, 0xe7, 0xe5, 0xa7, 0x30, 0x1b, 0x8e, 0xa7,
		0x91, 0xe3, 0xed, 0x21, 0xe4, 0xc1, 0xf3, 0x14, 0x79, 0x1e, 0x42, 0x1e, 0x1c, 0x4f, 0xb6, 0xe3,
		0xe5, 0xe6, 0x8e, 0x0a, 0x5c, 0x4e, 0x2b, 0x97, 0xd3, 0xbc, 0x66, 0x04, 0xde, 0xa6, 0x9f, 0xb7,
		0xe5, 0xe1, 0x4e, 0x0b, 0xfc, 0x4e, 0x2b, 0xbf, 0xc3, 0x01, 0x2c, 0x5c, 0x4d, 0x92, 0xab, 0xe9,
		0x7d, 0x07, 0x06, 0xce, 0xa6, 0x95, 0xb3, 0xe5, 0xe6, 0x6e, 0x0c, 0xfc, 0x4e, 0x17, 0xbf, 0xcb,
		0xd3, 0x9d, 0x19, 0x78, 0x9d, 0x4e, 0x5e, 0x97, 0xaf, 0xbb, 0x34, 0xf0, 0x3d, 0x6d, 0x7c, 0x2f,
		0x47, 0x77, 0x6c, 0xe0, 0x75, 0xba, 0x78, 0x5d, 0x9e, 0xee, 0xde, 0xc0, 0xeb, 0x74, 0xf1, 0xba,
		0x5e, 0xdd, 0x3e, 0xae, 0x9f, 0xd4, 0xce, 0x9b, 0x3d, 0xfb, 0xb4, 0xde, 0xeb, 0x34, 0x8e, 0xe0,
		0x74, 0x70, 0xba, 0xac, 0x9d, 0xee, 0xbc, 0x95, 0x94, 0x72, 0xd6, 0x8f, 0xed, 0x66, 0x17, 0x65,
		0x75, 0x70, 0x3a, 0x09, 0x4e, 0x37, 0xe5, 0x13, 0xf5, 0x63, 0x64, 0x58, 0xf8, 0x9d, 0x44, 0xbf,
		0xeb, 0x35, 0x9a, 0x8d, 0xff, 0xc9, 0x99, 0xd7, 0x61, 0x62, 0x25, 0x76, 0x7b, 0x91, 0x76, 0x79,
		0x11, 0xf0, 0x33, 0x9c, 0x0b, 0x38, 0x19, 0xce, 0x55, 0x20, 0xe7, 0xca, 0x13, 0x1e, 0x86, 0x7f,
		0x01, 0xf7, 0xc2, 0xbb, 0xf2, 0xeb, 0x5d, 0x9d, 0xf6, 0x79, 0xaf, 0xde, 0xb1, 0x8f, 0x6a, 0x67,
		0x49, 0x37, 0xa1, 0x8e, 0x5d, 0x6b, 0x7e, 0x6e, 0x77, 0x1a, 0xbd, 0x5f, 0x4f, 0xe1, 0x59, 0xf0,
		0xac, 0x54, 0x3d, 0x6b, 0xf1, 0x27, 0xb8, 0x16, 0x5c, 0x2b, 0x45, 0xd7, 0x42, 0x0b, 0x34, 0xf8,
		0x1b, 0x92, 0x65, 0x71, 0x23, 0x5b, 0x91, 0x3c, 0x2e, 0x0f, 0x49, 0x34, 0x71, 0x39, 0x28, 0xde,
		0x78, 0xef, 0x39, 0x7e, 0xdf, 0x7a, 0xbd, 0x67, 0x7d, 0xac, 0xd5, 0xc3, 0x52, 0x4d, 0x12, 0xaa,
		0x59, 0xe3, 0xdc, 0x17, 0x8e, 0x70, 0x7d, 0x6e, 0x1e, 0x6a, 0x94, 0x42, 0xcd, 0xb0, 0x7f, 0xcd,
		0x6e, 0x9c, 0xb1, 0x23, 0xae, 0xa3, 0x64, 0x59, 0xf2, 0xc7, 0x8c, 0xf7, 0x7d, 0x3e, 0x74, 0x47,
		0x16, 0x67, 0xe2, 0x9b, 0x1f, 0xfc, 0x65, 0xb9, 0x3c, 0x14, 0x0e, 0xef, 0xb3, 0xd2, 0xc3, 0x1f,
		0x84, 0x6b, 0x3f, 0x29, 0x8d, 0x03, 0x5f, 0xf8, 0x7d, 0xdf, 0x0b, 0x93, 0xef, 0x4a, 0x6e, 0xe8,
		0x86, 0x25, 0x8f, 0xdd, 0x32, 0x6f, 0xf6, 0xaf, 0x92, 0xe7, 0xf2, 0xbf, 0xac, 0x50, 0x38, 0x82,
		0x59, 0x03, 0x47, 0x38, 0x57, 0x4e, 0xc8, 0x4a, 0x5e, 0x38, 0x2e, 0x09, 0xef, 0x36, 0x8c, 0xfe,
		0x51, 0xba, 0x11, 0x96, 0x1b, 0xf2, 0x12, 0x67, 0xee, 0xe8, 0xfa, 0xca, 0x0f, 0xc2, 0xe4, 0xbb,
		0xd2, 0xe2, 0xd1, 0xc9, 0x23, 0xc3, 0xc9, 0x55, 0xfc, 0x17, 0xa7, 0xff, 0x2e, 0x4d, 0x84, 0xeb,
		0xb9, 0xff, 0x64, 0x03, 0xeb, 0xca, 0xe1, 0x83, 0x6f, 0xee, 0x40, 0x5c, 0x97, 0xe2, 0x47, 0xe9,
		0x91, 0xe7, 0xe9, 0xef, 0x49, 0xda, 0x16, 0x12, 0x8f, 0x16, 0x26, 0xbb, 0x13, 0x81, 0x63, 0x4d,
		0x22, 0xdf, 0xbd, 0xf2, 0x98, 0x16, 0x91, 0xc2, 0x0c, 0xd8, 0x90, 0x05, 0x8c, 0xf7, 0x99, 0x36,
		0x7c, 0x5a, 0xa3, 0xf0, 0x9b, 0xb0, 0x94, 0x93, 0xa3, 0xfd, 0x8f, 0xe5, 0xed, 0x43, 0xa3, 0xd1,
		0xb5, 0x1a, 0x5d, 0xa3, 0x17, 0x38, 0xc3, 0xa1, 0xdb, 0x37, 0xea, 0x7c, 0xe4, 0x72, 0xc6, 0x02,
		0x97, 0x8f, 0x8c, 0x77, 0xbd, 0xfa, 0x7b, 0xe3, 0x94, 0x89, 0xc0, 0xed, 0x5f, 0xf0, 0xfa, 0x9d,
		0x60, 0x3c, 0x74, 0x7d, 0x1e, 0x6e, 0x19, 0xe1, 0xe4, 0xca, 0xea, 0x35, 0xbf, 0x18, 0x3b, 0x07,
		0x87, 0x46, 0xf4, 0xef, 0x4a, 0xe5, 0x83, 0x51, 0xd9, 0xf9, 0x60, 0x94, 0xab, 0xe5, 0x0f, 0x46,
		0x25, 0xfe, 0x53, 0x65, 0x67, 0x4b, 0x23, 0x4d, 0xc7, 0xec, 0xfa, 0x93, 0xa0, 0xcf, 0xb4, 0x4a,
		0xa4, 0xb1, 0xdd, 0xbf, 0xb1, 0xfb, 0x6f, 0x7e, 0x30, 0x88, 0x16, 0x74, 0xb1, 0x6b, 0xf4, 0x52,
		0x04, 0xcc, 0x5f, 0x9d, 0xb0, 0x16, 0x8c, 0x26, 0x37, 0x8c, 0x0b, 0xf3, 0xd0, 0x10, 0xc1, 0x84,
		0x69, 0xf6, 0x01, 0x96, 0xac, 0x97, 0xb1, 0xad, 0x80, 0xf7, 0x0b, 0x66, 0xe5, 0x25, 0xfd, 0xfd,
		0x60, 0x7e, 0xbb, 0x66, 0x1c, 0xe9, 0x3a, 0xbb, 0x74, 0xbd, 0xb5, 0x35, 0x65, 0x15, 0x25, 0x71,
		0x3f, 0x66, 0xc6, 0x2f, 0xc6, 0x5b, 0xbf, 0x6f, 0x45, 0x44, 0xc7, 0xf2, 0xc2, 0xc1, 0x95, 0x15,
		0xfd, 0x30, 0x3c, 0xfc, 0x79, 0xd5, 0xc1, 0x5b, 0xe4, 0x64, 0xa9, 0x39, 0x39, 0xde, 0x15, 0x48,
		0xc7, 0xea, 0xd2, 0x71, 0x5a, 0xdb, 0x46, 0x9f, 0x9c, 0xab, 0xd1, 0x06, 0x3f, 0x66, 0x61, 0x3f,
		0x70, 0xc7, 0xda, 0x49, 0x58, 0x2b, 0x81, 0xb9, 0xcd, 0xbd, 0x7b, 0xc3, 0xe5, 0x7d, 0x6f, 0x32,
		0x60, 0x86, 0xb8, 0x66, 0xc6, 0x5c, 0x0f, 0x32, 0x12, 0x3d, 0xc8, 0xe8, 0xfb, 0x5c, 0x38, 0x2e,
		0x67, 0x81, 0x11, 0x05, 0x84, 0xe8, 0xff, 0xba, 0xe0, 0x11, 0xc0, 0x73, 0x43, 0x23, 0xf6, 0xcb,
		0x9d, 0x83, 0x2d, 0xdd, 0xa2, 0x84, 0xa6, 0xc1, 0xf9, 0x61, 0x80, 0x1e, 0x2c, 0xb9, 0xa0, 0x7e,
		0x07, 0xa9, 0xda, 0xc7, 0xea, 0xb5, 0x78, 0x9d, 0xd6, 0x6e, 0xc2, 0x09, 0x0e, 0x18, 0x1d, 0x65,
		0x46, 0x07, 0x4d, 0x7b, 0x93, 0x80, 0xa1, 0xd7, 0xc9, 0x57, 0x01, 0x4e, 0xbc, 0x34, 0xc8, 0x9d,
		0x66, 0x28, 0x82, 0x49, 0x5f, 0xf0, 0x19, 0x6c, 0x6b, 0x4d, 0x5f, 0x6b, 0x63, 0xf6, 0x11, 0xed,
		0xb3, 0xd9, 0xbb, 0xb4, 0x1b, 0xa1, 0x1b, 0xda, 0xcd, 0xe8, 0x25, 0xda, 0xcd, 0x70, 0x6c, 0xf7,
		0xbc, 0x5b, 0xfb, 0x54, 0x34, 0x42, 0x6e, 0xb7, 0x66, 0x2f, 0xc8, 0x4e, 0xfe, 0x4e, 0x37, 0x7e,
		0x1d, 0xf6, 0xf9, 0xec, 0x75, 0x7c, 0x4a, 0xde, 0xc6, 0x1b, 0x44, 0xc7, 0xfc, 0x58, 0x46, 0x34,
		0x1a, 0x46, 0x28, 0x36, 0x72, 0xe4, 0x08, 0xf2, 0x10, 0xdd, 0x7e, 0x66, 0xd3, 0x0d, 0x45, 0x4d,
		0x88, 0x80, 0x74, 0x98, 0x36, 0x4f, 0x5d, 0x5e, 0xf7, 0x58, 0x84, 0x40, 0x43, 0xf3, 0xd0, 0xd8,
		0xfe, 0x40, 0xd8, 0x52, 0xe7, 0x6e, 0xc9, 0xd2, 0xf2, 0xc7, 0x6a, 0x75, 0x6f, 0xbf, 0x5a, 0xdd,
		0xde, 0xdf, 0xd9, 0xdf, 0x3e, 0xd8, 0xdd, 0x2d, 0xef, 0x95, 0x77, 0x09, 0x1b, 0xdf, 0x0e, 0x06,
		0x2c, 0x60, 0x83, 0x4f, 0x91, 0xd7, 0xf2, 0x89, 0xe7, 0xe9, 0x60, 0xea, 0x79, 0xc8, 0x22, 0xe7,
		0x1d, 0x3a, 0x5e, 0xc8, 0x10, 0x9c, 0xf2, 0x07, 0xd1, 0xf2, 0x06, 0xcd, 0x08, 0xe3, 0xb0, 0xcc,
		0xf0, 0x17, 0x4d, 0xb4, 0x45, 0x0f, 0xcb, 0xd0, 0xb2, 0x88, 0x58, 0xe0, 0xa2, 0x1e, 0xb0, 0x72,
		0x13, 0xa8, 0x68, 0xed, 0x56, 0x3a, 0x7b, 0x82, 0xd0, 0x7e, 0x30, 0x27, 0x7c, 0xc0, 0x86, 0x2e,
		0x67, 0x03, 0x6b, 0xbe, 0x68, 0xd4, 0xb6, 0x44, 0x72, 0xfa, 0xb2, 0x6e, 0x2a, 0xb1, 0xb8, 0xf2,
		0x9b, 0xcb, 0x07, 0x11, 0x56, 0x27, 0x66, 0xd6, 0x51, 0x1c, 0x3b, 0xe8, 0xd1, 0x1d, 0xf3, 0x2c,
		0x60, 0x43, 0xf7, 0x8e, 0x66, 0x0c, 0x9e, 0x3b, 0xdd, 0xec, 0x0c, 0x99, 0x20, 0xd8, 0xa2, 0x7e,
		0x2c, 0xb7, 0x7c, 0xf4, 0x36, 0x9e, 0xae, 0x34, 0x51, 0x02, 0xa3, 0xcb, 0xc9, 0xda, 0xca, 0xe9,
		0xd9, 0xdc, 0x31, 0x81, 0x3d, 0xb5, 0xc2, 0x9e, 0xc7, 0x2e, 0x4d, 0x85, 0x6c, 0x2d, 0xbb, 0xd2,
		0x8d, 0x2b, 0x4f, 0xe1, 0x01, 0xaa, 0xe1, 0x85, 0x26, 0x2c, 0x20, 0x0f, 0x0f, 0x74, 0x80, 0x09,
		0x1a, 0xc1, 0x05, 0x5d, 0x60, 0x83, 0x76, 0xf0, 0x41, 0x3b, 0x18, 0xa1, 0x17, 0x9c, 0xa0, 0x09,
		0x2b, 0x88, 0xc2, 0x0b, 0xf2, 0x30, 0x23, 0x31, 0x70, 0x7a, 0x6d, 0x96, 0x7c, 0x10, 0x9a, 0xc7,
		0xf5, 0xa9, 0xb9, 0xc4, 0xf7, 0x33, 0x6d, 0xa0, 0xa1, 0x0d, 0xe0, 0xd0, 0x09, 0x78, 0x68, 0x08,
		0x40, 0x74, 0x03, 0x22, 0xda, 0x02, 0x12, 0x6d, 0x81, 0x89, 0x9e, 0x00, 0x85, 0x36, 0x50, 0x21,
		0x0e, 0x58, 0xb4, 0x01, 0x2e, 0x89, 0xa1, 0x1e, 0xe3, 0xa3, 0xf8, 0x80, 0x4e, 0x93, 0xe8, 0x35,
		0x4f, 0x10, 0x33, 0xbb, 0x35, 0x89, 0x00, 0x33, 0x48, 0xb3, 0xad, 0x89, 0xb9, 0xba, 0x40, 0x1b,
		0x1d, 0x21, 0x8e, 0xc6, 0x50, 0x47, 0x57, 0xc8, 0xa3, 0x3d, 0xf4, 0xd1, 0x1e, 0x02, 0xe9, 0x0d,
		0x85, 0xf4, 0x80, 0x44, 0x9a, 0x40, 0xa3, 0xc4, 0x15, 0x7a, 0xf7, 0x63, 0xa6, 0x67, 0xc4, 0x9e,
		0xb8, 0x5c, 0x7c, 0xd4, 0x29, 0x5e, 0xcf, 0xe0, 0xc7, 0xae, 0x46, 0x26, 0x77, 0x1c, 0x3e, 0x62,
		0xda, 0x35, 0xa7, 0xd6, 0xf0, 0x66, 0xf1, 0xa9, 0xcb, 0xb5, 0xbc, 0x12, 0x6d, 0x24, 0x3d, 0xcc,
		0xf5, 0xc1, 0xa9, 0x6b, 0xf6, 0x9f, 0x04, 0x4e, 0x5f, 0xb8, 0x3e, 0x3f, 0x76, 0x47, 0x2e, 0xf5,
		0xab, 0x1c, 0x3f, 0x0e, 0x8d, 0x6c, 0xe4, 0x08, 0xf7, 0x96, 0x91, 0xbe, 0x79, 0x90, 0x83, 0xac,
		0xb9, 0xba, 0x75, 0x9d, 0x3b, 0xfd, 0xb7, 0x6e, 0x65, 0x77, 0x17, 0x9b, 0x17, 0x9b, 0xb7, 0x00,
		0xc0, 0x5c, 0x3f, 0x6b, 0x2f, 0xd1, 0x3b, 0xa1, 0x28, 0xc9, 0x65, 0x7a, 0x29, 0x57, 0x3b, 0x19,
		0x98, 0xf0, 0x55, 0xe2, 0xa7, 0x58, 0x18, 0x44, 0xe0, 0x8c, 0x0c, 0x86, 0x08, 0x2c, 0xd5, 0x74,
		0x88, 0xc0, 0x8a, 0x3e, 0x00, 0x44, 0x60, 0xa0, 0x8d, 0x9c, 0xd0, 0x59, 0x88, 0xc0, 0xd2, 0xe1,
		0x07, 0x44, 0xe0, 0xac, 0xbf, 0x20, 0x02, 0xcb, 0x35, 0x1e, 0x22, 0x30, 0x95, 0xd0, 0x08, 0x11,
		0x58, 0xc1, 0xd6, 0x85, 0x08, 0x8c, 0xcd, 0x8b, 0xcd, 0x0b, 0x11, 0x38, 0xab, 0x2f, 0x88, 0xc0,
		0x85, 0x49, 0x2e, 0xe6, 0xed, 0x2c, 0x1e, 0x6b, 0xa6, 0x02, 0x4f, 0xcd, 0x86, 0x0c, 0x9c, 0x85,
		0xb9, 0x90, 0x81, 0x25, 0x3a, 0x32, 0x64, 0x60, 0x79, 0xdb, 0x10, 0x32, 0xb0, 0xe2, 0x0f, 0x00,
		0x19, 0x18, 0x98, 0x63, 0xe6, 0x0a, 0xfa, 0xca, 0xc0, 0x57, 0x2e, 0x77, 0x82, 0x7b, 0x0d, 0x75,
		0xe0, 0x03, 0xc0, 0xfa, 0x02, 0x58, 0x88, 0xb9, 0x18, 0xe9, 0xda, 0xab, 0x7d, 0x4f, 0xd3, 0xb5,
		0xee, 0x93, 0x6b, 0x3f, 0xd1, 0x61, 0x14, 0x3c, 0xe1, 0x81, 0x10, 0x84, 0x5b, 0x26, 0x69, 0x51,
		0xe2, 0xa5, 0x53, 0x69, 0x97, 0x26, 0x5c, 0x1e, 0xad, 0x4a, 0xc0, 0xd9, 0x0d, 0xb4, 0x2a, 0x01,
		0x37, 0xcf, 0x29, 0x27, 0x07, 0x04, 0x2f, 0x04, 0xf7, 0x5e, 0xea, 0xfd, 0xe1, 0x0c, 0x03, 0x36,
		0xd4, 0x21, 0xe2, 0xce, 0x7b, 0x99, 0xed, 0x6b, 0x60, 0xeb, 0xd9, 0x8c, 0xd5, 0xac, 0x0c, 0xa0,
		0x06, 0x0f, 0xc8, 0x93, 0x65, 0x18, 0x0c, 0xf7, 0x6a, 0x13, 0x31, 0x18, 0x2e, 0x65, 0x4b, 0x31,
		0x18, 0x4e, 0xae, 0xa9, 0x18, 0x0c, 0xf7, 0x5a, 0x4c, 0x8c, 0xc1, 0x70, 0x54, 0xb4, 0xc9, 0x62,
		0x0d, 0x8b, 0x3b, 0x9f, 0x7f, 0x7a, 0x4c, 0x8d, 0xd3, 0xd7, 0x22, 0x4c, 0x8d, 0x2b, 0x7a, 0x14,
		0xc3, 0xfc, 0x38, 0xca, 0x96, 0x10, 0xd9, 0x9f, 0x73, 0x0a, 0xe4, 0x0e, 0x88, 0xe4, 0x38, 0x9a,
		0x84, 0x87, 0x2e, 0xc1, 0xd1, 0x8a, 0xd0, 0x10, 0x26, 0x30, 0x84, 0x09, 0x0b, 0x95, 0x50, 0x41,
		0x34, 0x85, 0x6b, 0x9f, 0xba, 0x09, 0xb1, 0x8b, 0xf4, 0xd9, 0x04, 0x0d, 0x14, 0xa2, 0x3e, 0xe7,
		0xab, 0xb5, 0x40, 0x71, 0x08, 0xa1, 0x16, 0x3a, 0x74, 0x0d, 0x19, 0x6a, 0x37, 0x93, 0x3a, 0x17,
		0x56, 0xe8, 0xbe, 0x66, 0xb4, 0x2c, 0x03, 0xe5, 0x5e, 0x9b, 0x1c, 0x42, 0x4e, 0xcd, 0x51, 0xbc,
		0x9d, 0x69, 0xd4, 0x1f, 0x91, 0xa9, 0x2f, 0xa2, 0x54, 0x3f, 0x44, 0xb0, 0x3e, 0x88, 0x5a, 0xfd,
		0x0f, 0xd9, 0xfa, 0x1e, 0xb2, 0xf5, 0x3b, 0x34, 0xeb, 0x73, 0x8a, 0x0d, 0xa9, 0xc8, 0xd4, 0xcf,
		0x10, 0xac, 0x8f, 0xa1, 0x54, 0xff, 0xb2, 0x5e, 0xdf, 0x32, 0x4d, 0xe1, 0x80, 0x72, 0x0a, 0xc8,
		0x2d, 0x85, 0xa9, 0x99, 0xa4, 0xa6, 0x62, 0x12, 0x99, 0x7a, 0x09, 0x28, 0x07, 0x28, 0x07, 0x28,
		0x07, 0x28, 0x57, 0x4c, 0x28, 0x47, 0x65, 0x6a, 0x23, 0x11, 0xad, 0x83, 0xa4, 0xe6, 0x41, 0x4c,
		0xfb, 0x20, 0x97, 0x38, 0x29, 0x26, 0x50, 0xc2, 0x89, 0x94, 0x6a, 0x42, 0x25, 0x9f, 0x58, 0xc9,
		0x27, 0x58, 0xda, 0x89, 0x96, 0x46, 0xc2, 0x25, 0x92, 0x78, 0xe9, 0x69, 0x29, 0x6b, 0x11, 0x6b,
		0xe2, 0x72, 0x51, 0xde, 0xa3, 0x14, 0xb0, 0x66, 0xf9, 0x6f, 0x8f, 0x90, 0x49, 0x34, 0xfb, 0x35,
		0x13, 0x2c, 0x72, 0xa4, 0xdc, 0x6f, 0x99, 0x7a, 0x3f, 0x65, 0x6d, 0x5a, 0xae, 0xd2, 0x6f, 0xa9,
		0x4a, 0xf0, 0xc6, 0x05, 0xe9, 0x7e, 0xc6, 0xc9, 0xd6, 0xa8, 0x6e, 0x1f, 0xec, 0x62, 0x77, 0xe4,
		0x7d, 0x77, 0xa0, 0x6e, 0xfb, 0xd1, 0xaf, 0x4b, 0x54, 0x92, 0x51, 0x89, 0x9e, 0x66, 0x78, 0x1f,
		0x0a, 0x76, 0x43, 0x52, 0x2c, 0x5a, 0x98, 0x06, 0xc1, 0xe8, 0x31, 0x73, 0x20, 0x18, 0xbd, 0xc0,
		0x99, 0x20, 0x18, 0x3d, 0xdf, 0xcd, 0x21, 0x18, 0x6d, 0x68, 0x20, 0x04, 0x23, 0x5d, 0x98, 0x03,
		0x61, 0xc1, 0x88, 0x5a, 0xfa, 0x5b, 0x4e, 0x81, 0xe5, 0x8f, 0x84, 0x6c, 0x3a, 0x73, 0x84, 0x60,
		0x01, 0x27, 0x27, 0x1b, 0x99, 0x5f, 0xb7, 0xad, 0x83, 0x9a, 0x75, 0xe2, 0x58, 0xc3, 0xcb, 0xbf,
		0xab, 0xdf, 0x2f, 0x2e, 0xb6, 0x7e, 0xf2, 0x03, 0x3a, 0x31, 0xe2, 0x92, 0xd2, 0xf2, 0xb6, 0xbb,
		0x8d, 0x3f, 0xc8, 0xae, 0xf1, 0xff, 0xbe, 0x74, 0x91, 0xff, 0xcd, 0x04, 0x0f, 0xa3, 0xc6, 0xc3,
		0x70, 0xa3, 0x07, 0x37, 0x7a, 0x5e, 0x79, 0xa3, 0x87, 0x40, 0xaf, 0xe3, 0x82, 0x96, 0x80, 0x92,
		0x11, 0x2e, 0xc8, 0x21, 0x36, 0xdc, 0xea, 0xa1, 0x2b, 0x4c, 0xa0, 0x14, 0x54, 0x5f, 0x01, 0x02,
		0xa5, 0xa0, 0x80, 0x55, 0xfa, 0x09, 0x0b, 0xb8, 0xd5, 0xf3, 0x53, 0xf9, 0x60, 0xf5, 0x56, 0xcf,
		0x22, 0x8d, 0x17, 0x15, 0xd6, 0xbd, 0x29, 0xd0, 0x86, 0x9d, 0xf7, 0x4d, 0x8a, 0x4b, 0x93, 0x0d,
		0xd5, 0x10, 0x8e, 0x46, 0xd3, 0x24, 0x3a, 0x4d, 0x92, 0x48, 0x37, 0x45, 0x22, 0xd4, 0x04, 0x89,
		0x50, 0xd3, 0x23, 0x55, 0xfb, 0x98, 0x88, 0x8e, 0xa1, 0x97, 0x7e, 0x61, 0x2a, 0xbd, 0xc4, 0x99,
		0x4e, 0x87, 0x22, 0x35, 0x69, 0x5a, 0x7e, 0x92, 0x94, 0xfb, 0x44, 0xc9, 0xdb, 0x58, 0xf5, 0xf6,
		0xd5, 0x62, 0xdb, 0xca, 0xf5, 0x74, 0x79, 0xfe, 0x26, 0xe7, 0x49, 0x92, 0x3c, 0xda, 0x64, 0x77,
		0x22, 0x70, 0xac, 0x49, 0xe4, 0x0a, 0x57, 0x9e, 0x5c, 0x0e, 0x68, 0x06, 0x6c, 0xc8, 0x02, 0xc6,
		0xfb, 0xf2, 0x8b, 0xe8, 0x15, 0x6c, 0xd9, 0x39, 0xb1, 0xed, 0x9c, 0x1c, 0xed, 0x96, 0x2b, 0xdb,
		0x87, 0xc6, 0xa9, 0xd5, 0xe8, 0x36, 0xba, 0x87, 0xc6, 0xe9, 0xc4, 0x13, 0xae, 0xd1, 0xf3, 0xc7,
		0xbe, 0xe7, 0x8f, 0xee, 0x8d, 0x77, 0xa7, 0xbd, 0xf7, 0x46, 0xc7, 0x9f, 0x08, 0x97, 0x8f, 0x0c,
		0x97, 0x5f, 0xf0, 0x06, 0x17, 0x2c, 0xb8, 0x61, 0x03, 0xd7, 0x11, 0xcc, 0xe8, 0xc6, 0x90, 0xdf,
		0x10, 0xbe, 0xf1, 0xc8, 0x8f, 0x43, 0xe3, 0x5d, 0xa3, 0x6b, 0x35, 0xba, 0xe1, 0xfb, 0x2d, 0xa3,
		0xd7, 0xfc, 0x72, 0xc1, 0x2b, 0x95, 0xca, 0x96, 0x82, 0xa4, 0xa9, 0x5a, 0xa3, 0x5b, 0xd6, 0xe4,
		0x16, 0x3e, 0xa6, 0x08, 0xe9, 0x51, 0x91, 0xe1, 0x56, 0x64, 0x37, 0xe9, 0x4e, 0x98, 0x77, 0xfc,
		0x21, 0xed, 0x69, 0x12, 0x8b, 0x1d, 0xcc, 0x6f, 0xd7, 0x8c, 0x17, 0x29, 0x34, 0xaf, 0x8c, 0x82,
		0x32, 0x7e, 0x31, 0xde, 0xce, 0xd4, 0x69, 0xcb, 0x0b, 0x07, 0x57, 0x56, 0xf4, 0xc3, 0xf0, 0xf0,
		0xb4, 0x67, 0x37, 0xba, 0xad, 0xb7, 0x05, 0x8f, 0xaa, 0xb1, 0x67, 0x20, 0xa0, 0x2e, 0x02, 0xea,
		0x4b, 0x5c, 0xe7, 0x4d, 0x01, 0x44, 0x0e, 0xf3, 0x98, 0x85, 0xfd, 0xc0, 0x1d, 0x2b, 0x55, 0x38,
		0x92, 0x8d, 0xdd, 0xe6, 0xde, 0xbd, 0xe1, 0xf2, 0xbe, 0x37, 0x19, 0x30, 0x43, 0x5c, 0x33, 0xe3,
		0xb4, 0x67, 0x34, 0xba, 0x2d, 0xa3, 0xef, 0x73, 0xe1, 0xb8, 0x9c, 0x05, 0x46, 0xe4, 0xd0, 0xf1,
		0x7f, 0xe9, 0x35, 0xbf, 0x18, 0x6e, 0x68, 0x44, 0x2b, 0xa6, 0x0c, 0x3f, 0x19, 0x44, 0xce, 0x39,
		0x97, 0x77, 0xfc, 0x60, 0x69, 0x3d, 0x15, 0xca, 0x30, 0x94, 0x0e, 0x35, 0x57, 0x02, 0xc0, 0x46,
		0x2e, 0x06, 0x4d, 0x48, 0x6f, 0x4c, 0x96, 0x2b, 0x45, 0x40, 0x91, 0xb6, 0x45, 0x58, 0xd3, 0x92,
		0x18, 0xf0, 0x36, 0xd5, 0x99, 0xe5, 0x84, 0x92, 0xec, 0xb7, 0x96, 0x04, 0x67, 0x37, 0x6f, 0x22,
		0xce, 0x6b, 0x89, 0x19, 0xe7, 0x95, 0xe6, 0xec, 0x8b, 0xfe, 0x52, 0xab, 0xcf, 0x97, 0xb4, 0xbd,
		0xe5, 0x76, 0x5e, 0x94, 0x5e, 0x56, 0xa7, 0xa2, 0x7c, 0x4e, 0x61, 0x99, 0x9c, 0x2a, 0x98, 0xa8,
		0xbc, 0xec, 0x4d, 0x39, 0x12, 0x54, 0x5b, 0xc6, 0x96, 0xaf, 0x43, 0x08, 0xd9, 0x9d, 0x08, 0xcd,
		0x59, 0xd0, 0x75, 0x59, 0x28, 0x7f, 0xe7, 0xcc, 0x83, 0xc5, 0x92, 0x0d, 0x92, 0x3d, 0x57, 0x4d,
		0xf3, 0x5d, 0x65, 0x15, 0xd6, 0x2a, 0x2b, 0xaa, 0x09, 0x54, 0x50, 0x53, 0xd2, 0x0d, 0x95, 0x56,
		0x48, 0xd3, 0x54, 0x0e, 0x95, 0x55, 0x40, 0xe7, 0xbb, 0x42, 0x43, 0x55, 0x73, 0x5b, 0x53, 0x3a,
		0x9f, 0xf8, 0x59, 0x82, 0xb9, 0x57, 0xb5, 0xdd, 0xd4, 0xf6, 0x78, 0x57, 0x7e, 0xa1, 0x87, 0xc2,
		0x45, 0x1e, 0x42, 0x17, 0x78, 0xa8, 0x5c, 0xdc, 0x21, 0x77, 0x61, 0x87, 0xdc, 0x45, 0x1d, 0x5a,
		0x17, 0x74, 0x8a, 0x55, 0xdf, 0xaf, 0xba, 0x27, 0x3b, 0xe6, 0xce, 0x3d, 0x9d, 0xc8, 0x70, 0x43,
		0x95, 0x4e, 0x62, 0x23, 0x98, 0xe0, 0xa8, 0x25, 0x3a, 0xb2, 0x09, 0x8f, 0x6c, 0xe2, 0xa3, 0x99,
		0x00, 0xd5, 0x26, 0x42, 0xc5, 0x09, 0x31, 0x59, 0x12, 0xdc, 0x50, 0x7d, 0x06, 0xd3, 0xc2, 0xdc,
		0x39, 0x6a, 0x5b, 0x07, 0x73, 0xe7, 0x30, 0x77, 0x0e, 0x50, 0x0e, 0x50, 0x0e, 0x50, 0x0e, 0x50,
		0x0e, 0x50, 0x8e, 0x86, 0xc6, 0x91, 0x18, 0xe2, 0x08, 0x11, 0xb8, 0x57, 0x13, 0xa1, 0xe0, 0x14,
		0xf8, 0xa7, 0x41, 0x70, 0xc9, 0x36, 0x34, 0x14, 0xa7, 0x9c, 0x42, 0x29, 0xa6, 0x52, 0xc2, 0x29,
		0x95, 0x6a, 0x6a, 0x25, 0x9f, 0x62, 0xc9, 0xa7, 0x5a, 0xda, 0x29, 0x97, 0x46, 0xea, 0x25, 0x92,
		0x82, 0xe9, 0xa9, 0x2a, 0x6b, 0x11, 0x8b, 0xf1, 0xc9, 0x0d, 0x0b, 0x1c, 0xc5, 0xf7, 0x4d, 0x9e,
		0xe4, 0x8f, 0x55, 0x42, 0x36, 0xd5, 0xf9, 0xe4, 0x86, 0x5e, 0x1c, 0xed, 0xf9, 0x5d, 0x11, 0xb8,
		0x7c, 0x44, 0x72, 0xbc, 0x95, 0xb9, 0x1d, 0xdf, 0xd9, 0xf9, 0x52, 0xef, 0x34, 0xdb, 0xb5, 0x63,
		0x93, 0xe0, 0x60, 0xb0, 0x72, 0x64, 0x60, 0xad, 0xd7, 0xab, 0x1d, 0xfd, 0x5a, 0x3f, 0x36, 0x69,
		0xcd, 0x66, 0xfa, 0x40, 0xcd, 0xd3, 0x1a, 0x71, 0xb2, 0x21, 0xe8, 0x66, 0xc9, 0x02, 0x2a, 0x97,
		0x9c, 0x1e, 0x35, 0x2f, 0xd9, 0x00, 0x87, 0xc6, 0x36, 0xc6, 0x7f, 0x51, 0xc6, 0x0b, 0x18, 0xff,
		0x85, 0x39, 0xf1, 0x60, 0xe9, 0x60, 0xe9, 0x60, 0xe9, 0x60, 0xe9, 0x60, 0xe9, 0x60, 0xe9, 0x44,
		0x22, 0x16, 0xe6, 0xc4, 0x3f, 0xc3, 0x24, 0xcc, 0x89, 0x7f, 0xe6, 0x8b, 0xc2, 0x9c, 0xf8, 0x0d,
		0xec, 0xc3, 0x24, 0xec, 0x9c, 0xea, 0x1b, 0x06, 0xe6, 0xc4, 0x63, 0x77, 0x40, 0x9a, 0xa1, 0x6e,
		0x0d, 0xe6, 0x13, 0x52, 0xb0, 0x00, 0xf3, 0x09, 0x57, 0xed, 0x21, 0xd9, 0x54, 0x69, 0xa5, 0xef,
		0x4d, 0x69, 0xd1, 0x07, 0xa1, 0x94, 0xfc, 0xac, 0xd8, 0x83, 0x0a, 0x0b, 0x3b, 0xd1, 0x06, 0x73,
		0x6c, 0x30, 0xc7, 0xe6, 0xa7, 0xc6, 0x61, 0x8e, 0x0d, 0xa1, 0xdd, 0x8b, 0x39, 0x36, 0x9b, 0xe4,
		0x39, 0x4d, 0x07, 0xda, 0x44, 0x9f, 0x6b, 0xde, 0x2a, 0xde, 0x9e, 0x7f, 0x83, 0x26, 0xa6, 0x39,
		0xd8, 0xd7, 0x18, 0x6c, 0xf3, 0x92, 0x7d, 0x8c, 0x09, 0x37, 0x1a, 0xb8, 0x36, 0x26, 0xdc, 0x48,
		0x93, 0xae, 0x94, 0x4c, 0xb8, 0x39, 0xc0, 0x80, 0x1b, 0x0c, 0xb8, 0x31, 0xd4, 0x0e, 0xb8, 0x39,
		0xc0, 0x7c, 0x9b, 0xb4, 0xbe, 0x30, 0xdf, 0x26, 0xbb, 0xc0, 0xfc, 0xac, 0x21, 0x25, 0xe7, 0xcd,
		0x5e, 0xc3, 0xee, 0xb5, 0xcf, 0xda, 0xcd, 0xf6, 0xe7, 0x3f, 0x31, 0xe7, 0x06, 0x73, 0x6e, 0x5e,
		0x3e, 0xe7, 0xe6, 0x81, 0x0b, 0x61, 0xde, 0x8d, 0xec, 0x8d, 0xbe, 0x36, 0x8c, 0x64, 0x95, 0xc2,
		0x3c, 0x31, 0x94, 0xe4, 0x82, 0xcf, 0xa6, 0x92, 0x18, 0x95, 0xca, 0x01, 0xe6, 0xde, 0x60, 0xee,
		0xcd, 0x73, 0x02, 0x42, 0x2a, 0xae, 0x06, 0xe9, 0x48, 0x6f, 0xcc, 0x86, 0xf9, 0x37, 0x85, 0x90,
		0xbe, 0x34, 0x99, 0x83, 0xb3, 0x2c, 0x4f, 0x63, 0x1e, 0xce, 0xf3, 0x5f, 0x39, 0xf7, 0xc6, 0x12,
		0xaf, 0xd7, 0x24, 0x60, 0x65, 0xfa, 0x58, 0x4c, 0xbf, 0x49, 0xe5, 0x81, 0x98, 0x7e, 0x23, 0x1b,
		0x20, 0x62, 0xfa, 0x0d, 0xa6, 0xdf, 0x6c, 0x48, 0x1d, 0x65, 0x4f, 0xbf, 0x51, 0xd3, 0x18, 0x50,
		0x69, 0x23, 0x40, 0xcc, 0xbc, 0x51, 0xb0, 0xd0, 0x98, 0x79, 0x83, 0x99, 0x37, 0x34, 0x12, 0x86,
		0x22, 0x06, 0x5e, 0x94, 0x99, 0x37, 0x72, 0x99, 0x03, 0x09, 0x26, 0xf1, 0x54, 0x82, 0xd9, 0xc6,
		0xb4, 0x1b, 0x4c, 0xbb, 0xc1, 0xb4, 0x1b, 0xfa, 0x09, 0x89, 0x56, 0x62, 0x52, 0x93, 0xa0, 0x14,
		0x25, 0xaa, 0xe4, 0xd5, 0x2b, 0xbf, 0xd8, 0x4e, 0xac, 0xdd, 0x1c, 0x85, 0xf6, 0x72, 0x34, 0xda,
		0xc9, 0xd1, 0x6a, 0x1f, 0x37, 0x6d, 0x17, 0xd7, 0x38, 0xfb, 0x52, 0xa5, 0xd0, 0x94, 0xbc, 0x3c,
		0x33, 0x66, 0xcf, 0x2c, 0xf6, 0x44, 0x10, 0x32, 0x6d, 0xdf, 0xa6, 0x9e, 0x41, 0xe2, 0x4e, 0xf1,
		0xd4, 0x2f, 0x0e, 0x8d, 0x32, 0xee, 0xce, 0x15, 0x20, 0x7f, 0xe2, 0xde, 0xda, 0x03, 0x4b, 0x70,
		0x6f, 0xed, 0x65, 0xa6, 0x14, 0xf6, 0xde, 0x9a, 0xc2, 0x4b, 0x01, 0x6b, 0xb6, 0xa8, 0xbb, 0x24,
		0xf0, 0xf0, 0x8b, 0xd0, 0x10, 0x98, 0xce, 0xc9, 0x51, 0xb9, 0x7c, 0xb0, 0x7b, 0x68, 0x9c, 0x87,
		0xcc, 0xf0, 0x87, 0x46, 0xbb, 0xdb, 0x30, 0xe2, 0xb2, 0x6b, 0x63, 0xe8, 0x07, 0x4b, 0x95, 0xdb,
		0x46, 0xef, 0xe8, 0xac, 0xd4, 0x38, 0x33, 0x1c, 0x3e, 0xb8, 0xe0, 0xc7, 0x13, 0xc7, 0x33, 0xea,
		0xfc, 0xd6, 0x0d, 0x7c, 0x1e, 0x47, 0x81, 0xb8, 0x42, 0xdb, 0x28, 0x57, 0x0e, 0xb6, 0x0c, 0x8c,
		0x93, 0xf9, 0xa1, 0x38, 0xa0, 0xfa, 0x1a, 0x01, 0x79, 0x9d, 0xe0, 0x51, 0xbd, 0x20, 0x7d, 0x2f,
		0x2d, 0x7a, 0xff, 0x0e, 0x65, 0x4f, 0xbf, 0x44, 0x11, 0xa2, 0xfe, 0xf9, 0x1d, 0xf7, 0x57, 0x1f,
		0x29, 0xe2, 0x8b, 0x8f, 0x45, 0x54, 0xb4, 0x54, 0xc1, 0x8d, 0x55, 0xed, 0xc0, 0x29, 0xee, 0x44,
		0x3d, 0x72, 0xa1, 0xa5, 0xd5, 0x3c, 0x6b, 0x1c, 0xe3, 0x2a, 0x14, 0xae, 0x42, 0xbd, 0xf8, 0x2a,
		0xd4, 0xcc, 0x73, 0x70, 0x03, 0x4a, 0xf6, 0xb6, 0x6e, 0xcc, 0x6e, 0xa4, 0xc4, 0x0b, 0x60, 0x84,
		0x63, 0xd6, 0x77, 0x87, 0x6e, 0x3f, 0x06, 0x06, 0x86, 0xcf, 0xbd, 0xfb, 0x95, 0xdb, 0x28, 0xd3,
		0x9b, 0x28, 0x6e, 0x78, 0xc1, 0xe7, 0x38, 0x1c, 0x97, 0x9f, 0x70, 0xf9, 0xe9, 0x19, 0x21, 0x60,
		0x53, 0x2f, 0x03, 0xe5, 0xd0, 0xfa, 0x69, 0xb8, 0xf7, 0x94, 0x6b, 0xca, 0xa4, 0xc7, 0x75, 0xa7,
		0x56, 0x6c, 0x2a, 0xae, 0x39, 0x3d, 0xfb, 0x55, 0x8f, 0x27, 0xc1, 0x88, 0x59, 0xbe, 0x2b, 0xff,
		0xa6, 0x53, 0xf2, 0x64, 0x5c, 0x76, 0x4a, 0xe5, 0x81, 0xb8, 0xec, 0x24, 0x1b, 0x10, 0xe2, 0xb2,
		0x13, 0x2e, 0x3b, 0x6d, 0xc8, 0x12, 0x71, 0xd9, 0x29, 0x6f, 0x81, 0x5f, 0x59, 0x02, 0x50, 0x99,
		0x08, 0x08, 0x24, 0x04, 0x2a, 0xaa, 0x01, 0x2e, 0x3b, 0xd1, 0x4a, 0x18, 0x8a, 0x68, 0x77, 0x51,
		0x2e, 0x3b, 0x05, 0xac, 0xcf, 0xdc, 0x5b, 0x36, 0xb0, 0xc2, 0xb8, 0x1d, 0xa0, 0x45, 0xe1, 0xe6,
		0xd3, 0x23, 0x36, 0xe1, 0x1a, 0x94, 0x12, 0x03, 0x70, 0x0d, 0x8a, 0x52, 0x6a, 0x22, 0x97, 0xa2,
		0xc8, 0xa5, 0x2a, 0x5a, 0x29, 0x4b, 0x4d, 0xea, 0x52, 0x94, 0xc2, 0x92, 0x57, 0x4f, 0xe7, 0x1a,
		0x94, 0xea, 0xf4, 0xb1, 0xc2, 0x5e, 0x3e, 0x2a, 0xb4, 0xe1, 0xcc, 0x11, 0x82, 0x05, 0x5c, 0x79,
		0x45, 0xae, 0xf9, 0x75, 0xdb, 0x3a, 0xa8, 0x59, 0x27, 0x8e, 0x35, 0xbc, 0xfc, 0xbb, 0xfa, 0xfd,
		0xe2, 0x62, 0xeb, 0x27, 0x3f, 0x50, 0xb7, 0x67, 0x2f, 0x55, 0x2e, 0x57, 0xbb, 0xdb, 0xf8, 0x83,
		0xcc, 0x9a, 0xfd, 0xef, 0x4b, 0x17, 0xed, 0xdf, 0x4c, 0x94, 0x3d, 0xe6, 0x2f, 0xb6, 0x9b, 0x61,
		0x0c, 0x7e, 0x28, 0xf1, 0x84, 0x35, 0x8b, 0xc0, 0x12, 0xc0, 0x12, 0xc0, 0x12, 0xc0, 0x12, 0xc0,
		0x12, 0xc0, 0x12, 0xc0, 0x12, 0xc0, 0x12, 0xc0, 0x12, 0xc0, 0x12, 0xc0, 0x12, 0xe4, 0xb2, 0x84,
		0x79, 0x34, 0xb5, 0xfa, 0xfe, 0x44, 0x61, 0x47, 0x8b, 0xf5, 0xf0, 0x3e, 0x33, 0x08, 0x1c, 0x01,
		0x1c, 0x01, 0x1c, 0x01, 0x1c, 0x01, 0x1c, 0x01, 0x1c, 0xe1, 0xd9, 0x11, 0x63, 0xe2, 0x72, 0xf1,
		0x91, 0x00, 0x3f, 0x50, 0xd9, 0xf1, 0xa5, 0xe3, 0xf0, 0x11, 0x9a, 0x7a, 0x4c, 0x3b, 0x04, 0xd1,
		0x69, 0x7a, 0xf1, 0xc5, 0xf1, 0x26, 0x8c, 0x46, 0xb7, 0xae, 0xd8, 0x9e, 0x93, 0xc0, 0xe9, 0x0b,
		0xd7, 0xe7, 0xc7, 0xee, 0xc8, 0x55, 0xdd, 0x41, 0x69, 0x75, 0x2b, 0xb3, 0x91, 0x23, 0xdc, 0x5b,
		0xa6, 0xb4, 0x41, 0x10, 0x81, 0xa8, 0xba, 0xea, 0xca, 0xce, 0x1d, 0x3d, 0x57, 0xae, 0xec, 0xee,
		0xc2, 0x99, 0x75, 0x73, 0x66, 0xf4, 0x59, 0xc9, 0xb7, 0x94, 0x80, 0x3e, 0x2b, 0x59, 0x8a, 0x26,
		0x04, 0x2f, 0x0d, 0xce, 0xaf, 0x77, 0xa1, 0xd5, 0x8a, 0x36, 0xfe, 0xac, 0xb4, 0xd5, 0x8a, 0xba,
		0xbe, 0x7f, 0x0a, 0xaf, 0x49, 0x74, 0x4e, 0x8e, 0xf6, 0x2a, 0x3b, 0x95, 0x43, 0xe3, 0x2c, 0xda,
		0x2d, 0x46, 0x3b, 0x70, 0x47, 0x2e, 0x77, 0x84, 0x1f, 0x18, 0x8d, 0x01, 0xe3, 0x62, 0x71, 0x7f,
		0xbe, 0xd7, 0xfc, 0x12, 0x37, 0x51, 0x8b, 0xdb, 0xa9, 0x6d, 0xcd, 0x2e, 0xcd, 0xef, 0x6c, 0x61,
		0xda, 0x3f, 0xa6, 0xfd, 0x1b, 0x8f, 0xb4, 0xe1, 0xdb, 0xcc, 0xa9, 0xd0, 0x12, 0x21, 0x2d, 0x74,
		0x87, 0xf1, 0xfd, 0x99, 0x85, 0xce, 0xe7, 0x34, 0x1c, 0x3a, 0x3b, 0xef, 0x7c, 0xae, 0xdb, 0xed,
		0x06, 0xba, 0x55, 0xa1, 0x5b, 0xd5, 0x8b, 0xbb, 0x55, 0x2d, 0x9c, 0x07, 0x0d, 0xab, 0x64, 0x6f,
		0xee, 0xb5, 0x39, 0xea, 0x31, 0x9b, 0x30, 0xfc, 0x45, 0x2a, 0x73, 0xe3, 0x54, 0x26, 0x96, 0x52,
		0xd9, 0x05, 0x7f, 0xac, 0xbf, 0x90, 0x22, 0x94, 0x64, 0xa0, 0x7f, 0x15, 0xf5, 0x80, 0x60, 0xfc,
		0x74, 0x78, 0xff, 0x66, 0x4e, 0x07, 0x65, 0x47, 0x6f, 0xec, 0x86, 0x76, 0x56, 0x39, 0x57, 0xa6,
		0xf4, 0xe8, 0x68, 0x15, 0x93, 0xb8, 0xb6, 0x8b, 0x9e, 0x56, 0x2f, 0x90, 0x92, 0xfc, 0x89, 0x60,
		0x81, 0xd5, 0x77, 0xc6, 0xce, 0x95, 0xeb, 0xb9, 0xc2, 0x65, 0xa1, 0xfc, 0xf6, 0x56, 0x8f, 0x19,
		0x81, 0x4e, 0x57, 0xa9, 0x3c, 0x10, 0x9d, 0xae, 0x64, 0x43, 0x47, 0x74, 0xba, 0x42, 0xa7, 0xab,
		0x0d, 0xe9, 0xa5, 0xec, 0x4e, 0x57, 0x49, 0xe0, 0xbd, 0x57, 0xd7, 0xee, 0x6a, 0xc9, 0x06, 0xf4,
		0xbc, 0xca, 0x5b, 0x4a, 0x20, 0x90, 0x1a, 0xa8, 0x28, 0x0d, 0xe8, 0x79, 0x45, 0x2b, 0x75, 0x28,
		0xe2, 0xe6, 0x45, 0xe9, 0x79, 0x35, 0xe7, 0xa3, 0x16, 0x9f, 0xdc, 0x5c, 0xb1, 0x40, 0xbd, 0x5c,
		0xfa, 0xd0, 0x20, 0xdc, 0x51, 0x51, 0x62, 0x00, 0xee, 0xa8, 0x50, 0x4a, 0x4a, 0xe4, 0x92, 0x13,
		0xb9, 0x24, 0x45, 0x2b, 0x59, 0xa9, 0x49, 0x5a, 0x8a, 0x92, 0x57, 0xf2, 0xea, 0xe9, 0xdc, 0x51,
		0xf1, 0x98, 0x33, 0x0c, 0xd8, 0x90, 0xc2, 0x2d, 0xf6, 0x7d, 0xb5, 0xb7, 0xd8, 0xaf, 0x57, 0x8e,
		0x88, 0x1f, 0x26, 0x57, 0x5c, 0xfe, 0xcd, 0xec, 0xdd, 0xab, 0xe9, 0x4e, 0xbd, 0xb6, 0x13, 0x54,
		0x74, 0xa9, 0x56, 0xcc, 0xdc, 0x01, 0xa2, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xa2, 0xf4, 0x04, 0x51,
		0xaa, 0x94, 0x80, 0xc4, 0x80, 0xa1, 0xe7, 0x8c, 0x42, 0xf5, 0x9b, 0x74, 0x1e, 0xb7, 0xa6, 0xe6,
		0x28, 0xde, 0x0f, 0x6a, 0xd5, 0x00, 0x32, 0x09, 0x8d, 0x52, 0x62, 0x23, 0x98, 0xe0, 0xa8, 0x25,
		0x3a, 0xb2, 0x09, 0x8f, 0x6c, 0xe2, 0xa3, 0x99, 0x00, 0xd5, 0x26, 0x42, 0xc5, 0x09, 0x91, 0x8e,
		0xba, 0xb0, 0x16, 0x71, 0x18, 0x9f, 0xdc, 0xb0, 0xc0, 0x51, 0x5c, 0x84, 0xba, 0xc6, 0xb6, 0xaa,
		0x04, 0x6c, 0xa9, 0xf3, 0xc9, 0x0d, 0x9d, 0xf8, 0xd7, 0xf3, 0xbb, 0x22, 0x70, 0xf9, 0x88, 0x8c,
		0x45, 0xb1, 0x55, 0xdb, 0x91, 0x0f, 0x9d, 0x34, 0xdb, 0xed, 0x63, 0x22, 0xe1, 0x38, 0xb6, 0xaa,
		0x1c, 0x59, 0x75, 0xdc, 0xfe, 0xbd, 0x65, 0x92, 0xb0, 0xe9, 0xfb, 0x07, 0x2a, 0x2e, 0xd4, 0x50,
		0xd8, 0xc1, 0xed, 0x71, 0xa6, 0x10, 0x2d, 0x92, 0x32, 0x75, 0xe5, 0x51, 0x93, 0xa6, 0xde, 0x7c,
		0x68, 0x6c, 0xd3, 0xf0, 0x1d, 0x64, 0x6c, 0xa5, 0xde, 0xd0, 0x74, 0x43, 0x51, 0x13, 0x22, 0xa0,
		0x91, 0xb5, 0x4f, 0x5d, 0x5e, 0xf7, 0x58, 0x04, 0xea, 0x88, 0x74, 0x2f, 0x31, 0x4f, 0x9d, 0xbb,
		0x25, 0x8b, 0xca, 0x1f, 0xab, 0xd5, 0xbd, 0xfd, 0x6a, 0x75, 0x7b, 0x7f, 0x67, 0x7f, 0xfb, 0x60,
		0x77, 0xb7, 0xbc, 0x57, 0x26, 0xd0, 0xfb, 0xc5, 0x6c, 0x07, 0x03, 0x16, 0xb0, 0xc1, 0xa7, 0x7b,
		0xf3, 0xd0, 0xe0, 0x13, 0xcf, 0xa3, 0x64, 0xd2, 0x79, 0x18, 0x57, 0x2c, 0xa8, 0x6f, 0xfb, 0xa2,
		0x6e, 0x9f, 0x2b, 0xdc, 0xe3, 0x64, 0x6a, 0x47, 0xd6, 0x80, 0x39, 0x8d, 0x1a, 0x92, 0x87, 0xc0,
		0x1c, 0xea, 0xd1, 0xcc, 0x10, 0xa8, 0x47, 0x3f, 0x34, 0x09, 0xea, 0xd1, 0x33, 0x0d, 0x83, 0x7a,
		0x04, 0x2c, 0xfa, 0x6c, 0xfe, 0x46, 0x4e, 0x3d, 0x9a, 0xb8, 0x5c, 0xec, 0x54, 0x08, 0x09, 0x47,
		0xfb, 0x04, 0x4c, 0xa1, 0xd1, 0x58, 0x75, 0xfe, 0x45, 0x88, 0xec, 0x53, 0x6a, 0xb4, 0x9a, 0x18,
		0x45, 0xac, 0xe1, 0xea, 0x42, 0x86, 0x20, 0xda, 0xab, 0x72, 0x11, 0x03, 0xa8, 0xf5, 0xac, 0x24,
		0x12, 0xa6, 0x1f, 0xd2, 0x63, 0xba, 0x2e, 0x5f, 0xad, 0x1c, 0x54, 0x0f, 0xf6, 0xf6, 0x2b, 0x07,
		0xbb, 0xf0, 0xfd, 0xbc, 0xf8, 0x3e, 0x44, 0xcb, 0xf8, 0xeb, 0x12, 0x52, 0x8a, 0xf4, 0x4d, 0x31,
		0xbb, 0x61, 0xaf, 0x70, 0x92, 0xe4, 0x1a, 0x3e, 0x5d, 0x98, 0x04, 0xf9, 0x04, 0xf2, 0x09, 0xe4,
		0x13, 0xc8, 0x27, 0x90, 0x4f, 0x20, 0x9f, 0x90, 0x89, 0x38, 0xee, 0xf8, 0xb6, 0x6a, 0x39, 0x83,
		0x41, 0xc0, 0xc2, 0x90, 0x52, 0xf5, 0xcd, 0x47, 0x02, 0xb6, 0x50, 0x99, 0x84, 0x98, 0x18, 0xf4,
		0xee, 0xeb, 0xb6, 0x75, 0x70, 0xf9, 0xaf, 0xaf, 0x65, 0xeb, 0xe0, 0x72, 0xfa, 0x6d, 0x39, 0xfe,
		0xd7, 0xdf, 0x95, 0xef, 0xff, 0xaa, 0x7c, 0xdd, 0xb6, 0xaa, 0xb3, 0x9f, 0x56, 0x76, 0xbf, 0x6e,
		0x5b, 0xbb, 0x97, 0xef, 0xdf, 0x5d, 0x5c, 0x6c, 0xbd, 0xf4, 0xef, 0xbc, 0xff, 0x7b, 0xe7, 0xbb,
		0xfa, 0x30, 0x71, 0x49, 0x61, 0xf9, 0x29, 0x4d, 0xc3, 0x4c, 0xac, 0xfa, 0xdf, 0x77, 0xb2, 0xbc,
		0xe0, 0xfd, 0xbf, 0x99, 0x20, 0x51, 0x85, 0x7a, 0xb2, 0xaa, 0xcb, 0x1a, 0x8a, 0x87, 0x65, 0x24,
		0x76, 0x50, 0x6c, 0x4d, 0xf8, 0x48, 0xd3, 0xb8, 0xd2, 0xa2, 0x89, 0x90, 0x8a, 0x51, 0x1a, 0xea,
		0x7c, 0x54, 0xc9, 0x05, 0xd4, 0xc9, 0x55, 0xb4, 0x16, 0x04, 0xae, 0xa0, 0xce, 0x0c, 0xc1, 0x25,
		0xd4, 0xa2, 0xca, 0x05, 0xb8, 0x84, 0x4a, 0x5f, 0x16, 0xc0, 0x25, 0x54, 0xe0, 0x9a, 0xe4, 0xd5,
		0x2b, 0xbf, 0x84, 0x3a, 0xcd, 0x19, 0x74, 0xc4, 0xf0, 0x99, 0x3d, 0x34, 0x94, 0xf0, 0x32, 0x94,
		0x70, 0x32, 0xa9, 0x8d, 0x60, 0x8a, 0xa3, 0x96, 0xea, 0xc8, 0xa6, 0x3c, 0xb2, 0xa9, 0x8f, 0x66,
		0x0a, 0x54, 0x2f, 0x2e, 0x18, 0x04, 0x94, 0x70, 0xd5, 0xa9, 0x71, 0x91, 0x22, 0xd9, 0x28, 0x72,
		0x0d, 0x2b, 0xe2, 0xd9, 0x2e, 0x1f, 0x59, 0x8e, 0x37, 0xf2, 0x03, 0x57, 0x5c, 0xdf, 0x84, 0x74,
		0x76, 0x7c, 0x92, 0x3e, 0x9f, 0xb6, 0x95, 0xc8, 0x4e, 0xa3, 0x91, 0x5a, 0xc9, 0xa5, 0x58, 0x8a,
		0xa9, 0x96, 0x70, 0xca, 0xa5, 0x9a, 0x7a, 0xc9, 0xa7, 0x60, 0xf2, 0xa9, 0x98, 0x76, 0x4a, 0xa6,
		0x91, 0x9a, 0x89, 0xa4, 0x68, 0x72, 0xa9, 0x7a, 0x91, 0xb2, 0x95, 0xf6, 0x04, 0xfc, 0x79, 0x96,
		0x56, 0xd8, 0x2b, 0x50, 0x93, 0xc4, 0x4c, 0x36, 0x41, 0x53, 0x4e, 0xd4, 0x1a, 0x24, 0x6c, 0xea,
		0x89, 0x5b, 0x9b, 0x04, 0xae, 0x4d, 0x22, 0xd7, 0x23, 0xa1, 0xd3, 0x4a, 0xec, 0xc4, 0x12, 0x3c,
		0xd9, 0x44, 0x9f, 0x18, 0x96, 0xf0, 0x5c, 0xba, 0x01, 0x65, 0x1e, 0x93, 0x17, 0xa6, 0x12, 0xdd,
		0xa7, 0x34, 0xca, 0xc0, 0xb5, 0x03, 0x04, 0x3a, 0x00, 0x03, 0x8d, 0x00, 0x82, 0x2e, 0x40, 0x41,
		0x3b, 0xc0, 0xa0, 0x1d, 0x70, 0xd0, 0x0b, 0x40, 0xd0, 0x04, 0x12, 0x44, 0x01, 0x45, 0xb2, 0xb4,
		0x64, 0xca, 0xde, 0x7f, 0x1a, 0x31, 0x69, 0xf5, 0xa2, 0xfc, 0x29, 0x9b, 0xaf, 0x12, 0xb6, 0x91,
		0x54, 0xef, 0xca, 0xa7, 0x5d, 0x93, 0x62, 0x4f, 0xcb, 0x27, 0xad, 0x8d, 0x7b, 0x5d, 0x76, 0xcf,
		0x4e, 0x88, 0x27, 0x1f, 0x23, 0xe9, 0x80, 0xd9, 0xed, 0x75, 0x1a, 0x47, 0x3d, 0x3b, 0x32, 0x99,
		0xb4, 0xc5, 0xdf, 0x3f, 0x50, 0x77, 0x53, 0x6a, 0x7d, 0x33, 0x9f, 0x46, 0x74, 0x67, 0x27, 0x74,
		0xe1, 0xfb, 0xaa, 0xa5, 0x0b, 0xe7, 0x3c, 0x34, 0xca, 0xb4, 0xfd, 0x13, 0x48, 0x28, 0x17, 0x48,
		0x88, 0x54, 0x2f, 0xcf, 0x27, 0xad, 0x24, 0xd7, 0xe3, 0xf3, 0x69, 0x4b, 0x35, 0xe8, 0xfd, 0xf9,
		0xa4, 0xf1, 0xf4, 0x7a, 0x82, 0xfe, 0xdc, 0x54, 0x32, 0xbd, 0x42, 0xf5, 0x89, 0x47, 0x10, 0x9d,
		0x7f, 0x48, 0xfb, 0x69, 0xdc, 0xfd, 0x7a, 0xd2, 0x3e, 0x1d, 0xef, 0x84, 0x4d, 0x6f, 0x0a, 0xcd,
		0xfe, 0x5d, 0x7a, 0xba, 0x6a, 0x4c, 0xe5, 0xed, 0x31, 0xfa, 0xbb, 0x05, 0x55, 0x20, 0xcb, 0xfb,
		0x80, 0xdd, 0x89, 0xc0, 0xb1, 0x26, 0x91, 0x23, 0x5f, 0x79, 0xb4, 0xd4, 0x1c, 0x33, 0x60, 0x43,
		0x16, 0x30, 0xde, 0xa7, 0xd3, 0xf2, 0x70, 0xfe, 0x45, 0xb8, 0x7a, 0x60, 0x10, 0x38, 0x43, 0x61,
		0xb9, 0x4c, 0x0c, 0x63, 0xad, 0xd5, 0x7a, 0x18, 0x26, 0xd8, 0x9d, 0x60, 0x3c, 0x74, 0x7d, 0x1e,
		0x6e, 0x5d, 0xf0, 0x5e, 0xf3, 0x8b, 0x51, 0xa9, 0x56, 0x3e, 0x18, 0xe1, 0xe4, 0xca, 0x8a, 0xfe,
		0x50, 0x3e, 0x40, 0xd9, 0xc1, 0xcb, 0xed, 0x5b, 0x3a, 0x45, 0x58, 0xf8, 0x2c, 0x2a, 0x0f, 0x36,
		0x44, 0x10, 0x4b, 0x07, 0x07, 0x1b, 0x3b, 0x35, 0xd0, 0xa3, 0x26, 0xd6, 0x5c, 0x12, 0x2a, 0x53,
		0xfe, 0x76, 0xcd, 0x38, 0x52, 0xcf, 0xf3, 0x53, 0x4f, 0x32, 0x48, 0x5b, 0xdc, 0x8f, 0x99, 0xf1,
		0x8b, 0xf1, 0x76, 0x76, 0xde, 0x67, 0x79, 0xe1, 0xe0, 0xca, 0x8a, 0x7e, 0x18, 0x1e, 0x76, 0xda,
		0xe7, 0xbd, 0x7a, 0xc7, 0x3e, 0xaa, 0x9d, 0xd5, 0x3e, 0x35, 0x9a, 0x8d, 0xde, 0x9f, 0x76, 0xb7,
		0x63, 0xd7, 0x9a, 0x9f, 0xdb, 0x9d, 0x46, 0xef, 0xd7, 0xd3, 0xb7, 0xc8, 0x3e, 0x1b, 0x65, 0x9f,
		0xd8, 0x63, 0x91, 0x78, 0xd2, 0x4b, 0x3c, 0x69, 0xb8, 0x34, 0xbd, 0xdc, 0x43, 0x70, 0x93, 0x1d,
		0xb3, 0xb0, 0x1f, 0xb8, 0x63, 0xb2, 0x82, 0xc1, 0x4a, 0xa0, 0x6b, 0x73, 0xef, 0xde, 0x70, 0x79,
		0xdf, 0x9b, 0x0c, 0x98, 0x31, 0xc3, 0x22, 0xc6, 0x0c, 0x8b, 0x18, 0x09, 0x0f, 0x37, 0xa2, 0xdd,
		0x68, 0x88, 0x6b, 0x76, 0xc1, 0xe7, 0x48, 0xc4, 0x0d, 0x8d, 0xd8, 0x91, 0xca, 0x07, 0x5b, 0x54,
		0xb7, 0xa9, 0x06, 0x95, 0x3b, 0xcb, 0x11, 0x6f, 0xb0, 0xe4, 0x37, 0x84, 0x85, 0x56, 0x9d, 0xca,
		0x76, 0x56, 0x02, 0x60, 0x2a, 0xae, 0x0e, 0x45, 0x19, 0x9c, 0x60, 0x13, 0x4e, 0x00, 0xc5, 0x6e,
		0x79, 0x77, 0xd2, 0x54, 0xd6, 0x73, 0xad, 0xa8, 0x53, 0xba, 0x3c, 0x1b, 0x8a, 0x60, 0xd2, 0x17,
		0x7c, 0x06, 0x45, 0x5a, 0xd3, 0x17, 0xd7, 0x98, 0xbd, 0x37, 0xfb, 0x6c, 0xf6, 0xb6, 0xec, 0x46,
		0xe8, 0x86, 0x76, 0x33, 0x7a, 0x4d, 0x76, 0x33, 0x1c, 0xdb, 0x3d, 0xef, 0xd6, 0x3e, 0x4a, 0x3e,
		0xb9, 0xdd, 0x8d, 0x3f, 0xb1, 0xdd, 0x9d, 0x7e, 0xe2, 0xce, 0xf4, 0x03, 0xd7, 0x16, 0x9f, 0x17,
		0xcd, 0xfe, 0xa9, 0xec, 0xf9, 0xb5, 0xee, 0x00, 0x0b, 0xff, 0xa5, 0xdf, 0xc9, 0x60, 0xc9, 0x56,
		0x74, 0x32, 0x78, 0xcc, 0x1c, 0x74, 0x32, 0x78, 0x81, 0x77, 0xa1, 0x93, 0xc1, 0x6b, 0x18, 0x12,
		0x3a, 0x19, 0x6c, 0x4c, 0x82, 0xd0, 0xc9, 0x80, 0x34, 0x22, 0xa6, 0xd7, 0xc9, 0x20, 0x18, 0x5d,
		0x59, 0x73, 0x65, 0xc2, 0x0f, 0x42, 0xc2, 0x4d, 0x0d, 0x1e, 0x5a, 0x8a, 0xfe, 0x06, 0x3a, 0xa6,
		0x6d, 0xca, 0xe9, 0x5b, 0x83, 0x34, 0x4e, 0x3d, 0x9d, 0x6b, 0x93, 0xd6, 0xb5, 0x49, 0xef, 0x7a,
		0xa4, 0x79, 0x5a, 0xe9, 0x9e, 0x58, 0xda, 0x27, 0x9b, 0xfe, 0x9f, 0x82, 0x01, 0xf4, 0xcf, 0xb5,
		0x1e, 0x1a, 0x4c, 0xbb, 0xd7, 0x41, 0x19, 0xbd, 0x0e, 0x72, 0x07, 0x12, 0x34, 0x02, 0x0b, 0xba,
		0x80, 0x06, 0xed, 0xc0, 0x83, 0x76, 0x20, 0x42, 0x2f, 0x30, 0x41, 0x13, 0x54, 0x10, 0x05, 0x17,
		0xe4, 0x41, 0x46, 0x62, 0x60, 0xe0, 0xf0, 0x91, 0x06, 0x41, 0x28, 0x99, 0x9f, 0x1b, 0x9b, 0x4b,
		0x7c, 0x3f, 0xd3, 0x6e, 0xaa, 0xa4, 0x0d, 0xe0, 0xd0, 0x09, 0x78, 0x68, 0x08, 0x40, 0x74, 0x03,
		0x22, 0xda, 0x02, 0x12, 0x6d, 0x81, 0x89, 0x9e, 0x00, 0x85, 0x36, 0x50, 0x21, 0x0e, 0x58, 0x92,
		0x25, 0x27, 0xdf, 0xa4, 0x69, 0x2d, 0xe2, 0x7a, 0xcc, 0x19, 0x06, 0x6c, 0xa8, 0x43, 0xc4, 0x9d,
		0x2b, 0x11, 0xfb, 0x1a, 0xd8, 0x7a, 0x36, 0xab, 0xcc, 0x4a, 0x4a, 0xda, 0xa7, 0x10, 0x0c, 0xfd,
		0x51, 0xf2, 0xb6, 0xed, 0x89, 0x36, 0x52, 0x7f, 0x72, 0xbf, 0x53, 0x6c, 0xac, 0xfe, 0xe4, 0x4e,
		0x07, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x1e, 0xd0, 0x8d, 0x0a, 0x50,
		0xd7, 0x30, 0x13, 0x43, 0x3d, 0xe7, 0x8a, 0x79, 0xfa, 0x04, 0xaf, 0x84, 0xb8, 0xc4, 0x66, 0x6b,
		0xb2, 0xff, 0xf5, 0xd0, 0x36, 0xb5, 0x03, 0x36, 0x3a, 0x02, 0x1c, 0x8d, 0x81, 0x8e, 0xae, 0x80,
		0x47, 0x7b, 0xe0, 0xa3, 0x3d, 0x00, 0xd2, 0x1b, 0x08, 0xe9, 0x01, 0x88, 0x34, 0x01, 0x46, 0x89,
		0x2b, 0x68, 0xa3, 0x95, 0xae, 0x45, 0xec, 0x9b, 0xb1, 0x17, 0x5a, 0x3a, 0xe1, 0x8f, 0x15, 0x51,
		0xe5, 0x40, 0x23, 0x9b, 0x67, 0x3e, 0xf2, 0x55, 0xab, 0x20, 0xa7, 0x57, 0x52, 0x5c, 0xf1, 0xec,
		0x89, 0xcb, 0xc5, 0x4e, 0x45, 0xb3, 0xac, 0xb8, 0xec, 0xdd, 0xfb, 0x1a, 0x9a, 0xde, 0x99, 0x15,
		0x93, 0x7c, 0xd5, 0xce, 0x74, 0x3d, 0xbd, 0x3d, 0x79, 0xf1, 0xa7, 0x2e, 0xd7, 0x0e, 0xc3, 0xae,
		0x7d, 0x88, 0x2f, 0x8e, 0x37, 0x89, 0xbc, 0xa7, 0xbc, 0xf7, 0x41, 0xef, 0x0f, 0x72, 0x12, 0x38,
		0x7d, 0xe1, 0xfa, 0xfc, 0xd8, 0x1d, 0xb9, 0xd4, 0x7b, 0xa6, 0x3f, 0x2f, 0xa8, 0xb2, 0x91, 0x23,
		0xdc, 0x5b, 0x46, 0xba, 0xd5, 0x77, 0x8e, 0x10, 0xe5, 0xe3, 0x7b, 0xdc, 0xb9, 0xcb, 0xd1, 0x1e,
		0xdf, 0xae, 0x7e, 0xdc, 0xdd, 0xdf, 0xc5, 0x46, 0xc7, 0x46, 0x2f, 0x30, 0xc1, 0xd5, 0xdf, 0xea,
		0xcb, 0x37, 0x08, 0xff, 0x00, 0xa4, 0xeb, 0xf4, 0x4b, 0x8f, 0xc9, 0x79, 0x3f, 0x55, 0x18, 0xaa,
		0x1a, 0xda, 0xae, 0xc5, 0xa4, 0xbd, 0xa7, 0x75, 0x12, 0x9d, 0x26, 0xf0, 0x3d, 0xf9, 0x29, 0xe2,
		0xc9, 0x7c, 0x8d, 0xb3, 0x2f, 0x55, 0xbb, 0xfe, 0xc7, 0x59, 0xb3, 0x71, 0xd4, 0xe8, 0xd9, 0xad,
		0xf3, 0x66, 0xd3, 0xd4, 0x18, 0x7e, 0xc6, 0x03, 0xfc, 0x66, 0x3d, 0x6b, 0x6b, 0xcd, 0x7a, 0xa7,
		0xa7, 0xf3, 0x87, 0xa9, 0xcc, 0xd6, 0x67, 0x2f, 0x3f, 0xeb, 0xb3, 0x13, 0x7f, 0xa4, 0xd3, 0x9c,
		0x7c, 0x9a, 0xfd, 0xe8, 0xd3, 0xd4, 0x5b, 0xbd, 0x4e, 0xfb, 0xec, 0x4f, 0xbb, 0x59, 0xfb, 0x54,
		0x6f, 0xda, 0x8d, 0xd6, 0x71, 0xe3, 0xa8, 0xd6, 0x6b, 0x77, 0x74, 0xfe, 0x5c, 0x1f, 0xe3, 0xe6,
		0x7b, 0xed, 0xe9, 0x47, 0x32, 0xdf, 0x80, 0x43, 0xcb, 0xcc, 0x2c, 0xba, 0x0c, 0xcd, 0x7c, 0x3a,
		0xb5, 0x3f, 0xb1, 0x21, 0xb4, 0x54, 0x8b, 0x93, 0x4f, 0xb5, 0x1a, 0xb4, 0x0e, 0x8d, 0x1d, 0x9d,
		0x3f, 0xcb, 0x7a, 0xce, 0xd7, 0x5a, 0x15, 0x78, 0x2c, 0x49, 0x1e, 0x1a, 0x15, 0x8d, 0x3f, 0x50,
		0x12, 0x7c, 0x0f, 0x8d, 0x8f, 0x1a, 0x7f, 0x8c, 0x15, 0x24, 0x46, 0x7d, 0x5e, 0x6d, 0x7e, 0xf4,
		0x0e, 0xbd, 0x2c, 0xd6, 0xc7, 0x5a, 0x3d, 0x74, 0x24, 0xfa, 0xef, 0x53, 0x03, 0x70, 0xa6, 0x49,
		0xcb, 0x81, 0x45, 0xc2, 0xd0, 0xa8, 0xf5, 0x40, 0x62, 0x34, 0xca, 0x74, 0xb3, 0x35, 0x18, 0x65,
		0xba, 0x52, 0x4d, 0x47, 0x99, 0xae, 0xa2, 0x0f, 0x80, 0x32, 0x5d, 0xe0, 0x8d, 0x1c, 0x60, 0x0e,
		0x43, 0xef, 0x32, 0x5d, 0xed, 0x8a, 0x19, 0x35, 0x2c, 0x62, 0xd4, 0xb4, 0x78, 0x51, 0xc3, 0x33,
		0x62, 0x9d, 0x8b, 0x15, 0x93, 0x02, 0x26, 0x4d, 0x35, 0xbd, 0xdc, 0x94, 0x2c, 0xe9, 0x5f, 0xaa,
		0xa4, 0xe1, 0x39, 0x8a, 0xd6, 0x35, 0x88, 0xc9, 0xd6, 0xad, 0x56, 0x0e, 0xaa, 0x07, 0x7b, 0xfb,
		0x95, 0x83, 0x5d, 0xec, 0x61, 0xec, 0xe1, 0x02, 0x00, 0x74, 0xfd, 0xac, 0x85, 0x1c, 0x5c, 0x04,
		0x0b, 0xa9, 0x37, 0xbe, 0x20, 0x3a, 0x32, 0xf3, 0x49, 0x7b, 0xf3, 0x37, 0x4a, 0x73, 0xf9, 0xff,
		0x7c, 0x30, 0x72, 0xe8, 0xe1, 0x0f, 0xa6, 0xdd, 0xe9, 0xd0, 0x97, 0x2e, 0x4f, 0x96, 0x51, 0xed,
		0xea, 0xfd, 0x1b, 0xbb, 0xa7, 0x7e, 0x22, 0x64, 0x36, 0xdd, 0x50, 0xd4, 0x84, 0x20, 0xde, 0x7e,
		0xfc, 0xd4, 0xe5, 0x75, 0x8f, 0x45, 0x7b, 0x9e, 0x38, 0x8e, 0x8d, 0xa8, 0xcf, 0x92, 0xa5, 0xe5,
		0x8f, 0xd5, 0xea, 0xde, 0x7e, 0xb5, 0xba, 0xbd, 0xbf, 0xb3, 0xbf, 0x7d, 0xb0, 0xbb, 0x5b, 0xde,
		0x2b, 0x13, 0x66, 0x13, 0x66, 0x3b, 0x18, 0xb0, 0x80, 0x0d, 0x3e, 0x45, 0x6e, 0xcb, 0x27, 0x9e,
		0xa7, 0x83, 0xa9, 0xe7, 0x21, 0x0b, 0x48, 0x13, 0x03, 0xaa, 0xd1, 0x49, 0x13, 0xd8, 0x52, 0x6c,
		0xb8, 0x62, 0x92, 0x6e, 0x04, 0x9b, 0xd5, 0xa8, 0xf0, 0xe5, 0xff, 0x1e, 0x8c, 0xae, 0x8e, 0x17,
		0xaf, 0xe3, 0x0d, 0x50, 0x91, 0x7e, 0x16, 0x51, 0x1b, 0xe9, 0x46, 0x3c, 0xf2, 0x15, 0x2b, 0xe2,
		0xd1, 0xda, 0xd2, 0x74, 0x36, 0x0e, 0xa1, 0x4d, 0x43, 0xb4, 0xe5, 0x37, 0xe9, 0x16, 0xdf, 0x98,
		0x2d, 0xfc, 0x42, 0xc3, 0x30, 0x5b, 0x78, 0x23, 0x13, 0x31, 0x5b, 0x38, 0x25, 0x43, 0x31, 0x5b,
		0x18, 0x40, 0x54, 0xd6, 0x12, 0x92, 0x9d, 0x2d, 0x3c, 0xf4, 0x9c, 0x51, 0x48, 0x7f, 0xa2, 0xf0,
		0xd4, 0x4c, 0xda, 0x73, 0x84, 0xb7, 0x31, 0x47, 0x38, 0x77, 0x80, 0x40, 0x23, 0x60, 0xa0, 0x0b,
		0x40, 0xd0, 0x0e, 0x28, 0x68, 0x07, 0x18, 0xf4, 0x02, 0x0e, 0x34, 0x01, 0x04, 0x51, 0x20, 0x91,
		0x2c, 0x2d, 0xf9, 0xda, 0x75, 0xcd, 0x3a, 0x3f, 0xe9, 0xd0, 0xe1, 0x49, 0x8f, 0x4e, 0x4e, 0x7a,
		0x75, 0x6c, 0x5a, 0xea, 0xcc, 0x74, 0x7a, 0xd6, 0xec, 0xea, 0x30, 0x93, 0xab, 0x9c, 0xf4, 0x2a,
		0xd2, 0xc5, 0xe2, 0x45, 0x77, 0xa5, 0x6e, 0xc7, 0x44, 0x05, 0xda, 0x46, 0x7b, 0x4b, 0x97, 0x9e,
		0x35, 0x4b, 0x7b, 0x4a, 0x8b, 0x7a, 0xe4, 0xa5, 0x1d, 0x45, 0x7e, 0x3c, 0xe3, 0xc2, 0xde, 0x6e,
		0xc7, 0x3c, 0x34, 0x2a, 0xa8, 0x71, 0x03, 0xe2, 0xcc, 0xdc, 0xdf, 0x50, 0x3f, 0x96, 0xb2, 0xa5,
		0xa8, 0x1f, 0x93, 0x6b, 0x2a, 0xfd, 0xfa, 0x31, 0x88, 0xfa, 0x3a, 0x45, 0x46, 0x54, 0x97, 0x28,
		0xad, 0x2e, 0xa1, 0x57, 0xdd, 0x4f, 0xa8, 0xa4, 0xe4, 0x0d, 0xf6, 0xeb, 0x62, 0x1f, 0xb0, 0x3b,
		0x11, 0x38, 0xd6, 0x24, 0x72, 0xe4, 0x2b, 0x8f, 0x96, 0x6a, 0x66, 0x06, 0x6c, 0xc8, 0x02, 0xc6,
		0xfb, 0xf4, 0x1a, 0x0d, 0x10, 0xae, 0xce, 0x18, 0x04, 0xce, 0x50, 0x58, 0x2e, 0x13, 0xc3, 0x58,
		0xd3, 0xb6, 0x1e, 0x86, 0x09, 0x76, 0x27, 0x18, 0x0f, 0x5d, 0x9f, 0x87, 0x5b, 0x46, 0xaf, 0xf9,
		0xe5, 0x82, 0x57, 0xaa, 0x95, 0x0f, 0x46, 0x38, 0xb9, 0xb2, 0x7a, 0xcd, 0x2f, 0x46, 0x65, 0x0b,
		0x65, 0x1d, 0x2f, 0xb7, 0x6f, 0xe9, 0xb4, 0x66, 0xe1, 0xb3, 0xa8, 0xec, 0xd8, 0x10, 0x41, 0x2c,
		0x1d, 0xd0, 0x6c, 0xec, 0xd4, 0x40, 0x8f, 0x9a, 0x58, 0x73, 0x49, 0xa8, 0xe0, 0xf3, 0xdb, 0x35,
		0xe3, 0x48, 0x3d, 0xcf, 0x4f, 0x3d, 0x5b, 0x5b, 0x53, 0xe4, 0x59, 0x12, 0xf7, 0x63, 0x66, 0xfc,
		0x62, 0xbc, 0x9d, 0x9d, 0xab, 0x5a, 0x5e, 0x38, 0xb8, 0xb2, 0xa2, 0x1f, 0x86, 0x87, 0xb3, 0x56,
		0xbc, 0x47, 0xb5, 0xb3, 0xda, 0xa7, 0x46, 0xb3, 0xd1, 0xfb, 0xd3, 0xee, 0x2e, 0xff, 0xe9, 0x2d,
		0xd2, 0xcf, 0x46, 0xe9, 0x27, 0x76, 0x59, 0x64, 0x9e, 0xf4, 0x32, 0x4f, 0x2a, 0x3e, 0x4d, 0x2f,
		0xfb, 0x10, 0xdc, 0x65, 0xf3, 0xfb, 0x4d, 0x94, 0xaf, 0xe2, 0x25, 0xa1, 0xae, 0xcd, 0xbd, 0x7b,
		0xc3, 0xe5, 0x7d, 0x6f, 0x32, 0x60, 0x86, 0xb8, 0x66, 0x46, 0xb7, 0x63, 0x2c, 0x08, 0x78, 0x82,
		0x3c, 0xa2, 0xed, 0x78, 0xc1, 0xa3, 0xff, 0x3e, 0xff, 0x49, 0xec, 0x46, 0x6e, 0x48, 0x13, 0x68,
		0x1b, 0x9a, 0x94, 0x48, 0x2d, 0x47, 0xbc, 0xc1, 0x92, 0xdb, 0x10, 0x56, 0x5a, 0x75, 0xaa, 0x8f,
		0x5a, 0x09, 0x80, 0x69, 0x78, 0x3a, 0x14, 0x65, 0x70, 0x82, 0x4d, 0x38, 0x01, 0x14, 0xbb, 0xe5,
		0xcd, 0x49, 0x53, 0x59, 0xcf, 0xb5, 0xa2, 0x6e, 0x92, 0xba, 0x86, 0x98, 0xfd, 0x85, 0x73, 0x1a,
		0x11, 0x5b, 0x7d, 0x04, 0x22, 0xb0, 0xe7, 0x89, 0x5d, 0x3b, 0x25, 0x79, 0xdd, 0x94, 0xd8, 0x35,
		0x53, 0x72, 0xb7, 0x4a, 0x28, 0xde, 0x22, 0x21, 0x7c, 0x6b, 0x84, 0x2a, 0x05, 0x22, 0x7f, 0x2b,
		0x84, 0x3c, 0xcb, 0xa1, 0x7d, 0xeb, 0x03, 0x27, 0xd3, 0x2b, 0x7a, 0x10, 0xb1, 0x6b, 0xa1, 0xa6,
		0xa0, 0x78, 0xad, 0x24, 0x09, 0xa3, 0xb1, 0x75, 0x34, 0xbb, 0x3f, 0x6c, 0xa3, 0xfb, 0x83, 0xb6,
		0x69, 0x5a, 0x83, 0x74, 0x4d, 0x3d, 0x6d, 0x6b, 0x93, 0xbe, 0xb5, 0x49, 0xe3, 0x7a, 0xa4, 0x73,
		0x5a, 0x69, 0x9d, 0x58, 0x7a, 0x4f, 0x96, 0x90, 0xec, 0x65, 0xcd, 0x24, 0xe2, 0xb9, 0x03, 0xc6,
		0x85, 0x2b, 0xee, 0x03, 0x36, 0xa4, 0x18, 0xf5, 0xe6, 0xdc, 0x97, 0x60, 0x49, 0xbc, 0xd9, 0x98,
		0xbd, 0xba, 0x4f, 0x4e, 0xc8, 0xe8, 0x1f, 0xea, 0x35, 0xba, 0x8d, 0xae, 0xdd, 0x3d, 0xff, 0xd4,
		0x6b, 0x7e, 0xb1, 0x7b, 0x7f, 0x9e, 0xd5, 0xa9, 0x86, 0xe7, 0x78, 0x36, 0x47, 0x48, 0x7a, 0xfa,
		0x12, 0xf1, 0x6b, 0xb8, 0xc9, 0x8a, 0x9f, 0xd9, 0x9d, 0x7a, 0xed, 0xe8, 0xd7, 0xf9, 0xb9, 0x7d,
		0x7c, 0x2f, 0x6f, 0x76, 0x9c, 0xdf, 0x38, 0x26, 0xdc, 0x0f, 0xe0, 0x03, 0x56, 0x3e, 0xf5, 0x95,
		0xdf, 0xc3, 0xca, 0x17, 0x71, 0xe5, 0xcf, 0x3a, 0xf5, 0x93, 0xc6, 0x1f, 0xf6, 0x49, 0xb3, 0xf6,
		0xb9, 0x8b, 0x75, 0x2f, 0xdc, 0xba, 0x77, 0xb1, 0xdb, 0x8b, 0xb4, 0xea, 0x53, 0x78, 0xd7, 0xa5,
		0x8c, 0xef, 0x74, 0xc2, 0x79, 0x7a, 0x78, 0x43, 0x6e, 0x70, 0x9f, 0x06, 0x71, 0x21, 0x3f, 0x1e,
		0xb1, 0x07, 0x8f, 0x80, 0x47, 0xe8, 0x86, 0x13, 0xe1, 0x0f, 0xc0, 0x8f, 0xf0, 0x06, 0xf9, 0xde,
		0xd0, 0xab, 0x7d, 0x86, 0x1b, 0xc0, 0x0d, 0x7a, 0xb5, 0xcf, 0x7b, 0x55, 0x13, 0xa3, 0x4e, 0x37,
		0xfa, 0xba, 0x04, 0x1f, 0x2f, 0x0c, 0x1f, 0x27, 0x1d, 0x37, 0xb1, 0xdc, 0x05, 0x8b, 0x8f, 0x58,
		0xf0, 0x8d, 0x17, 0xbc, 0xbb, 0xba, 0xe0, 0xb5, 0xe3, 0xff, 0xb6, 0x9b, 0xb5, 0x16, 0x64, 0xd6,
		0xe2, 0x2d, 0x3b, 0x96, 0xbc, 0x60, 0x4b, 0x7e, 0xda, 0x68, 0xd9, 0x9f, 0x3b, 0xed, 0xf3, 0x33,
		0x2c, 0x7b, 0x81, 0x96, 0xfd, 0x4b, 0xad, 0xd1, 0xac, 0x7d, 0x6a, 0xd6, 0xed, 0x4f, 0xb5, 0xd6,
		0xf1, 0xef, 0x8d, 0xe3, 0xde, 0xaf, 0x58, 0xfe, 0xe2, 0x2c, 0x7f, 0xb2, 0xe8, 0xf6, 0x51, 0xbb,
		0xd5, 0xed, 0x75, 0x6a, 0x8d, 0x56, 0x0f, 0xc7, 0xe8, 0x05, 0x72, 0x80, 0xfa, 0x1f, 0xbd, 0x7a,
		0xeb, 0xb8, 0x7e, 0x8c, 0xf8, 0x5f, 0xcc, 0xf5, 0x8f, 0x8f, 0x4e, 0x1b, 0xad, 0x5e, 0xbd, 0x73,
		0x52, 0x3b, 0xaa, 0xdb, 0xb5, 0xe3, 0xe3, 0x4e, 0xbd, 0x8b, 0x08, 0x50, 0x34, 0x0f, 0x68, 0xd5,
		0x1b, 0x9f, 0x7f, 0xfd, 0xd4, 0xee, 0xc0, 0x01, 0x0a, 0xe9, 0x00, 0x7b, 0x08, 0x01, 0x85, 0xf7,
		0x00, 0x84, 0x80, 0xe2, 0x3a, 0x40, 0xb3, 0xd1, 0xfa, 0xcd, 0xae, 0xf5, 0x7a, 0x9d, 0xc6, 0xa7,
		0xf3, 0x5e, 0x1d, 0x4b, 0x5f, 0xb4, 0xa5, 0x3f, 0xae, 0x37, 0x6b, 0x7f, 0x62, 0xd5, 0x8b, 0xb8,
		0xea, 0xf6, 0x97, 0x5a, 0xa7, 0x51, 0xeb, 0x35, 0xda, 0x2d, 0xac, 0x7f, 0xc1, 0xd6, 0x1f, 0x02,
		0x7f, 0xe1, 0x96, 0xbc, 0xd9, 0x06, 0xb0, 0x2b, 0xdc, 0xa2, 0x9f, 0x75, 0xda, 0xbd, 0xfa, 0x51,
		0x14, 0xe2, 0xa7, 0xf7, 0x26, 0xb0, 0xfe, 0x85, 0x59, 0xff, 0xd3, 0xda, 0x1f, 0x53, 0x1f, 0xc0,
		0xe9, 0x4e, 0x41, 0x57, 0xbf, 0x53, 0xef, 0xd6, 0x3b, 0x5f, 0x70, 0xc2, 0x57, 0x58, 0x1f, 0x68,
		0xb4, 0x16, 0x51, 0x00, 0x3c, 0xaf, 0x60, 0xab, 0xdf, 0xa9, 0x77, 0x1b, 0xc7, 0xe7, 0xb5, 0x26,
		0xf6, 0x7e, 0x11, 0x57, 0x1f, 0xb7, 0x65, 0x0b, 0xe8, 0x0d, 0x3f, 0xf5, 0x0a, 0x2d, 0x6a, 0x3a,
		0x35, 0x08, 0x0a, 0x39, 0x72, 0x07, 0xb8, 0x02, 0x5c, 0x41, 0x97, 0x1a, 0x50, 0xb8, 0x83, 0x34,
		0x77, 0xd0, 0xa9, 0x36, 0x14, 0x6e, 0x21, 0xcb, 0x2d, 0x34, 0xab, 0x19, 0x85, 0x63, 0xc8, 0x72,
		0x0c, 0xbd, 0x6a, 0x49, 0xe1, 0x17, 0xb2, 0xfc, 0x42, 0xb7, 0x1a, 0x53, 0x78, 0x86, 0x54, 0xcf,
		0xd0, 0xa7, 0xf0, 0x0c, 0x8e, 0x21, 0xd1, 0x31, 0xf6, 0x10, 0x32, 0xe0, 0x19, 0xda, 0xd7, 0xaa,
		0xc2, 0x31, 0x64, 0x39, 0x86, 0x36, 0x35, 0xac, 0x70, 0x09, 0xa9, 0x2e, 0x41, 0xfc, 0xcc, 0x13,
		0xde, 0x20, 0xdf, 0x1b, 0x74, 0xa8, 0x79, 0x85, 0x5f, 0x48, 0xf5, 0x0b, 0x1c, 0x80, 0xc0, 0x15,
		0xb4, 0xa8, 0x91, 0x85, 0x33, 0x48, 0x75, 0x06, 0x6d, 0x6a, 0x67, 0xe1, 0x17, 0xb2, 0xfc, 0x42,
		0xa7, 0x9a, 0x5a, 0x78, 0x85, 0x4c, 0xaf, 0xd0, 0xab, 0xd6, 0x16, 0xbe, 0x21, 0xcd, 0x37, 0x34,
		0xaa, 0xc1, 0x85, 0x57, 0xc8, 0xf2, 0x0a, 0x9d, 0x6a, 0x73, 0xe1, 0x15, 0xb2, 0xbc, 0xa2, 0x57,
		0xb7, 0x8f, 0xeb, 0x27, 0xb5, 0xf3, 0x66, 0xcf, 0x3e, 0xad, 0xf7, 0x3a, 0x8d, 0x23, 0x38, 0x05,
		0x9c, 0xe2, 0xbc, 0x95, 0x94, 0xda, 0xd4, 0x8f, 0xed, 0x66, 0x17, 0x65, 0x15, 0x70, 0x0a, 0xfb,
		0xbc, 0x35, 0xc5, 0x9b, 0xf5, 0x63, 0x64, 0x10, 0xf8, 0xc5, 0x92, 0x5f, 0xf4, 0x1a, 0xcd, 0xc6,
		0xff, 0x68, 0xe6, 0x15, 0x98, 0x68, 0x90, 0xb7, 0xdd, 0xa4, 0xe9, 0x9d, 0x29, 0x8d, 0xf0, 0x17,
		0x16, 0xbf, 0xc0, 0x38, 0x0b, 0x8b, 0x5f, 0x6c, 0x3c, 0x85, 0xf5, 0x2f, 0x32, 0x6e, 0xc2, 0xea,
		0x6f, 0xba, 0xfa, 0xb3, 0xe1, 0xa0, 0x47, 0xb5, 0xb3, 0xe4, 0xb6, 0x74, 0xc7, 0xae, 0x35, 0x3f,
		0xb7, 0x3b, 0x8d, 0xde, 0xaf, 0xa7, 0x58, 0xf9, 0x82, 0xad, 0xfc, 0xe2, 0x4f, 0x58, 0xfa, 0x42,
		0x2d, 0x3d, 0x5a, 0x24, 0x40, 0x42, 0xd1, 0x36, 0x19, 0x68, 0x10, 0x19, 0xf2, 0xe4, 0x11, 0x3a,
		0x24, 0x89, 0xc4, 0x25, 0xa0, 0xa8, 0xe5, 0xe8, 0xbd, 0xd1, 0x7b, 0x5f, 0xb4, 0xde, 0x13, 0x1d,
		0x6b, 0x68, 0x58, 0x42, 0x24, 0x21, 0x98, 0x35, 0xce, 0x7d, 0xe1, 0x08, 0xd7, 0xe7, 0xe6, 0x21,
		0xa1, 0x14, 0x60, 0x86, 0xfd, 0x6b, 0x76, 0xe3, 0x8c, 0x1d, 0x71, 0x1d, 0x05, 0xfb, 0x92, 0x3f,
		0x66, 0xbc, 0xef, 0xf3, 0xa1, 0x3b, 0xb2, 0x38, 0x13, 0xdf, 0xfc, 0xe0, 0x2f, 0xcb, 0xe5, 0xa1,
		0x70, 0x78, 0x9f, 0x95, 0x1e, 0xfe, 0x20, 0x5c, 0xfb, 0x49, 0x69, 0x1c, 0xf8, 0xc2, 0xef, 0xfb,
		0x5e, 0x98, 0x7c, 0x57, 0x72, 0x43, 0x37, 0x2c, 0x79, 0xec, 0x96, 0x79, 0xb3, 0x7f, 0x95, 0x3c,
		0x97, 0xff, 0x65, 0x85, 0xc2, 0x11, 0xcc, 0x1a, 0x38, 0xc2, 0xb9, 0x72, 0x42, 0x56, 0xf2, 0xc2,
		0x71, 0x49, 0x78, 0xb7, 0x61, 0xf4, 0x8f, 0x52, 0xe0, 0x4f, 0x04, 0x0b, 0xac, 0xbe, 0x33, 0x76,
		0xae, 0x5c, 0xcf, 0x15, 0x2e, 0x0b, 0x4b, 0xc9, 0x1f, 0xee, 0x4b, 0xe1, 0xe4, 0x2a, 0xfe, 0x5f,
		0xa7, 0xff, 0x2e, 0xc5, 0xbf, 0x89, 0x46, 0x1a, 0x52, 0xef, 0xf2, 0x04, 0xdc, 0xdd, 0x14, 0xf7,
		0x63, 0x46, 0xc6, 0xc9, 0x13, 0x1c, 0x13, 0x5b, 0x45, 0x24, 0x18, 0xfc, 0xe6, 0xf2, 0x81, 0x79,
		0x68, 0x6c, 0x13, 0x31, 0xe7, 0x28, 0xde, 0xf0, 0x84, 0x0c, 0x3a, 0x0b, 0xd8, 0xd0, 0xbd, 0xa3,
		0x15, 0x28, 0xe7, 0x7e, 0xe4, 0xf7, 0xad, 0x28, 0xa4, 0x11, 0xa2, 0xc8, 0x66, 0xd7, 0x9f, 0x04,
		0x7d, 0x46, 0xea, 0x75, 0x4d, 0xdd, 0x9c, 0xdd, 0x7f, 0xf3, 0x83, 0xc8, 0xd3, 0xcd, 0xf1, 0x74,
		0x45, 0x69, 0xb1, 0x33, 0xf3, 0x57, 0x27, 0xac, 0x05, 0xa3, 0xc9, 0x0d, 0xe3, 0xc2, 0x3c, 0x34,
		0x44, 0x30, 0x61, 0xc4, 0x0c, 0x5c, 0xb2, 0x2e, 0x71, 0x3c, 0x00, 0x3c, 0x92, 0x00, 0xaf, 0x47,
		0x29, 0xeb, 0xad, 0x44, 0x2c, 0x8f, 0x39, 0xc3, 0x80, 0x0d, 0x29, 0x45, 0xac, 0x59, 0x02, 0x2c,
		0xef, 0x13, 0xb2, 0xe9, 0x6c, 0x86, 0x81, 0xb7, 0xb6, 0xa6, 0x90, 0xb2, 0x14, 0x23, 0x06, 0xe0,
		0x4a, 0x02, 0x16, 0x28, 0xde, 0xe3, 0x51, 0x22, 0x23, 0x02, 0x21, 0xcd, 0xa6, 0x1b, 0x8a, 0x9a,
		0x10, 0x01, 0x89, 0x50, 0x63, 0x9e, 0xba, 0xbc, 0xee, 0xb1, 0x28, 0x43, 0x85, 0x34, 0xe0, 0xa3,
		0x79, 0xea, 0xdc, 0x2d, 0x59, 0x54, 0xfe, 0x58, 0xad, 0xee, 0xed, 0x57, 0xab, 0xdb, 0xfb, 0x3b,
		0xfb, 0xdb, 0x07, 0xbb, 0xbb, 0xe5, 0xbd, 0xf2, 0x2e, 0x01, 0x23, 0xdb, 0xc1, 0x80, 0x05, 0x6c,
		0xf0, 0x29, 0xf2, 0x2a, 0x3e, 0xf1, 0x3c, 0x4a, 0x26, 0x9d, 0x87, 0x2c, 0x72, 0xae, 0xa1, 0xe3,
		0x85, 0xac, 0xd0, 0x9b, 0x9e, 0x98, 0x62, 0xa3, 0xbf, 0x52, 0x43, 0x00, 0x80, 0x98, 0xa1, 0x08,
		0x26, 0x7d, 0xc1, 0x67, 0xc8, 0xa8, 0x35, 0x7d, 0x2b, 0x8d, 0xd9, 0x4b, 0xb1, 0xcf, 0x66, 0xaf,
		0xc2, 0x6e, 0x84, 0x6e, 0x68, 0x37, 0xa3, 0x77, 0x60, 0x37, 0xc3, 0xb1, 0xdd, 0xf3, 0x6e, 0xed,
		0xa3, 0xe4, 0x63, 0xd9, 0xdd, 0xe9, 0xc7, 0x79, 0x53, 0xcc, 0x84, 0xac, 0xe6, 0xc9, 0x8a, 0xa2,
		0x01, 0x95, 0x28, 0xa0, 0xf1, 0xee, 0x57, 0xb3, 0x4f, 0xe4, 0x7b, 0xa9, 0x02, 0x0f, 0x35, 0x27,
		0x7c, 0xc0, 0x86, 0x2e, 0x67, 0x03, 0x6b, 0xfe, 0xb2, 0x55, 0x39, 0x69, 0xc2, 0x36, 0xd7, 0x4d,
		0x52, 0xb4, 0x73, 0xe7, 0x1c, 0x53, 0xd1, 0xe3, 0x55, 0x8b, 0xaa, 0x14, 0x44, 0x54, 0x42, 0xa2,
		0x29, 0x15, 0x91, 0x94, 0x9c, 0x28, 0x4a, 0x4e, 0x04, 0xa5, 0x25, 0x7a, 0x16, 0x0b, 0xed, 0x1c,
		0xbb, 0x6a, 0x85, 0x85, 0xb5, 0xec, 0xa1, 0x7e, 0xbf, 0x3e, 0x95, 0xd7, 0x54, 0x6f, 0x5b, 0xb5,
		0xe9, 0x8d, 0x4c, 0x9a, 0xa3, 0x94, 0xee, 0x08, 0xa6, 0x3d, 0x6a, 0xe9, 0x8f, 0x6c, 0x1a, 0x24,
		0x9b, 0x0e, 0x69, 0xa6, 0x45, 0xf5, 0x32, 0x84, 0x41, 0x40, 0x22, 0x54, 0x9d, 0x2e, 0x97, 0x64,
		0x2d, 0x47, 0x10, 0xac, 0xb9, 0x99, 0x9a, 0x45, 0xab, 0xe8, 0xa6, 0x8c, 0xa2, 0x1b, 0xf2, 0x09,
		0x94, 0x70, 0x22, 0xa5, 0x9a, 0x50, 0xc9, 0x27, 0x56, 0xf2, 0x09, 0x96, 0x76, 0xa2, 0xa5, 0x91,
		0x70, 0x89, 0x24, 0x5e, 0x72, 0x09, 0x38, 0x31, 0xc8, 0x63, 0x7c, 0x14, 0x4b, 0xf4, 0xc4, 0xa2,
		0xc2, 0xa2, 0x16, 0x28, 0xb6, 0x8f, 0xd8, 0x8e, 0xa3, 0x55, 0x0f, 0x4b, 0x36, 0x45, 0x53, 0x4e,
		0xd5, 0x1a, 0xa4, 0x6c, 0xea, 0xa9, 0x5b, 0x9b, 0x14, 0xae, 0x4d, 0x2a, 0xd7, 0x23, 0xa5, 0xd3,
		0x4a, 0xed, 0xc4, 0x52, 0x7c, 0xb2, 0x84, 0xe4, 0xea, 0x6b, 0xd7, 0x22, 0xde, 0xc4, 0xe5, 0xe2,
		0x23, 0xc5, 0x78, 0x37, 0x4b, 0xaf, 0xbb, 0x04, 0x4d, 0xeb, 0x38, 0x7c, 0xc4, 0xc8, 0x5e, 0xe4,
		0xa7, 0x7b, 0x55, 0xdb, 0x3c, 0x75, 0x39, 0xd9, 0x04, 0x96, 0x18, 0x19, 0xf7, 0x69, 0xa0, 0x87,
		0x9f, 0xd6, 0xec, 0x3c, 0x09, 0x9c, 0xbe, 0x70, 0x7d, 0x7e, 0xec, 0x8e, 0x5c, 0x2a, 0x95, 0xac,
		0x3f, 0x0e, 0x39, 0x6c, 0xe4, 0x08, 0xf7, 0x96, 0x91, 0x28, 0xd4, 0xd4, 0x28, 0x8b, 0xac, 0x6e,
		0x21, 0xe7, 0x4e, 0x9f, 0x2d, 0x54, 0xd9, 0xdd, 0xc5, 0x26, 0x2a, 0xea, 0x26, 0x7a, 0x03, 0xab,
		0x9e, 0xf3, 0x75, 0x89, 0x4e, 0x0c, 0xd4, 0x83, 0x30, 0xad, 0xcb, 0xe1, 0x6b, 0x10, 0x9e, 0xd0,
		0x25, 0xf1, 0x87, 0xe8, 0x1d, 0xe2, 0xd8, 0x33, 0x0d, 0x83, 0x38, 0xb6, 0x91, 0x89, 0x10, 0xc7,
		0x52, 0x32, 0x14, 0xe2, 0x58, 0x7e, 0xd1, 0x06, 0xc4, 0xb1, 0x97, 0x46, 0x3c, 0x88, 0x63, 0x2f,
		0x37, 0x0d, 0xe2, 0xd8, 0x6b, 0x99, 0x3d, 0xc4, 0x31, 0xf0, 0x7a, 0x88, 0x63, 0x1b, 0x6d, 0x21,
		0x88, 0x63, 0xd8, 0x44, 0x10, 0xc7, 0xf2, 0x63, 0x15, 0xc4, 0x31, 0xf2, 0x41, 0xd8, 0xbc, 0x9d,
		0xc5, 0x33, 0xa2, 0xea, 0xd8, 0xd4, 0x3c, 0xc8, 0x63, 0xcf, 0x31, 0x0b, 0xf2, 0xd8, 0x06, 0x8e,
		0x06, 0x79, 0xec, 0xf5, 0xdb, 0x01, 0xf2, 0x58, 0xca, 0x86, 0x42, 0x1e, 0xd3, 0x9d, 0xd8, 0x68,
		0x20, 0x8f, 0x5d, 0xb9, 0xdc, 0x09, 0xee, 0x09, 0xeb, 0x63, 0x07, 0x80, 0x8f, 0x84, 0x2d, 0x41,
		0x97, 0xfb, 0x1f, 0xdb, 0xa5, 0x61, 0xf7, 0xa4, 0xb5, 0x3e, 0x3a, 0x6b, 0x3f, 0x41, 0xe7, 0x7b,
		0x62, 0x5b, 0x00, 0x9d, 0xef, 0x35, 0x63, 0x6b, 0xb8, 0x84, 0xab, 0x37, 0x2b, 0xc3, 0x25, 0xdc,
		0xbc, 0xb2, 0x2f, 0x5c, 0xc2, 0xd5, 0x07, 0xf4, 0xa1, 0xf3, 0xfd, 0xcb, 0x13, 0x20, 0x3a, 0xdf,
		0x6b, 0x83, 0x2b, 0xd1, 0xf9, 0x1e, 0x9d, 0xef, 0xd7, 0xad, 0x41, 0xe7, 0xfb, 0x57, 0x19, 0x89,
		0xce, 0xf7, 0x1a, 0x6c, 0x7a, 0x74, 0xbe, 0x97, 0xa0, 0xde, 0xe4, 0xa6, 0x1b, 0xfe, 0xf9, 0xfc,
		0x83, 0xa1, 0x2d, 0x7e, 0x61, 0x42, 0x05, 0xda, 0xe2, 0xa7, 0x18, 0x1a, 0x0a, 0xd3, 0x20, 0xff,
		0x4d, 0x8e, 0x77, 0xc6, 0x1c, 0x29, 0xcf, 0x7d, 0xc9, 0xe2, 0x93, 0x9b, 0x2b, 0x16, 0x48, 0x8e,
		0xf2, 0x6a, 0x41, 0xb2, 0x7a, 0x50, 0x4c, 0x12, 0x04, 0x13, 0x00, 0xbd, 0x04, 0x40, 0xae, 0xec,
		0xfd, 0xc8, 0xee, 0x44, 0xe0, 0x58, 0x93, 0x68, 0x3b, 0x5e, 0x79, 0x6a, 0xf4, 0x29, 0x33, 0x60,
		0x43, 0x16, 0x30, 0xde, 0x57, 0x77, 0x89, 0x83, 0xc0, 0xec, 0x87, 0xce, 0xc9, 0x51, 0xf5, 0x60,
		0xbf, 0x7c, 0x68, 0x34, 0xb8, 0x60, 0xc1, 0x0d, 0x1b, 0xb8, 0x8e, 0x60, 0x46, 0xf7, 0x3e, 0x14,
		0xec, 0xc6, 0x10, 0xfe, 0x63, 0x3f, 0xbe, 0xe0, 0xef, 0x1a, 0x5d, 0xab, 0xd1, 0x7d, 0x6f, 0xd4,
		0xef, 0x04, 0xe3, 0xa1, 0xeb, 0xf3, 0xd0, 0x18, 0xfa, 0x81, 0x51, 0x1b, 0xdc, 0xb2, 0x40, 0xb8,
		0xa1, 0xcb, 0x47, 0x46, 0x27, 0x4e, 0xb3, 0x46, 0x83, 0x0f, 0xfd, 0xe0, 0x26, 0x86, 0x22, 0x5b,
		0x17, 0xbc, 0xd7, 0xfc, 0x62, 0x54, 0xaa, 0x95, 0x2d, 0x4c, 0x9a, 0x58, 0x39, 0x84, 0x58, 0x38,
		0x22, 0x86, 0x4d, 0x3c, 0x00, 0xb2, 0x4b, 0xe7, 0x0c, 0x6a, 0x3c, 0xb5, 0x68, 0x8c, 0x45, 0xfa,
		0x53, 0x2f, 0x73, 0x9d, 0xe7, 0x14, 0x33, 0x31, 0x0d, 0x19, 0x98, 0x82, 0x18, 0x98, 0x8a, 0xd2,
		0x22, 0x37, 0x52, 0xc8, 0xdb, 0xa7, 0x72, 0x9e, 0x24, 0x69, 0x5f, 0xaa, 0xc4, 0x9d, 0xe6, 0xb7,
		0x6b, 0xc6, 0xa5, 0x43, 0x4d, 0x05, 0x31, 0x67, 0x0e, 0x2d, 0x57, 0x0e, 0x2c, 0x8d, 0x5f, 0x8c,
		0xb7, 0xb3, 0x4a, 0x01, 0xcb, 0x0b, 0x07, 0x57, 0x56, 0xf4, 0xc3, 0xf0, 0xb0, 0xd3, 0x3e, 0xef,
		0xd5, 0x3b, 0xf6, 0x51, 0xed, 0xac, 0xf6, 0xa9, 0xd1, 0x6c, 0xf4, 0xfe, 0x7c, 0xab, 0x62, 0xff,
		0x2b, 0xc6, 0x84, 0xcb, 0x58, 0x30, 0x76, 0x12, 0x45, 0xb2, 0x21, 0x15, 0xf8, 0xb7, 0x02, 0xfb,
		0x5e, 0xe9, 0x45, 0x85, 0x18, 0x30, 0x79, 0xcc, 0xc2, 0x7e, 0xe0, 0x8e, 0x95, 0x0a, 0xbd, 0xc9,
		0x76, 0x6f, 0x73, 0xef, 0xde, 0x70, 0x79, 0xdf, 0x9b, 0x0c, 0x98, 0x21, 0xae, 0x99, 0x31, 0xcd,
		0xf3, 0xc6, 0x22, 0xb5, 0x1b, 0x11, 0xaa, 0x8e, 0x1c, 0x3c, 0xfe, 0xcf, 0xd1, 0x1f, 0xdc, 0xf0,
		0x82, 0xc7, 0xeb, 0xaa, 0x90, 0x15, 0x52, 0x60, 0x84, 0xcb, 0x11, 0x60, 0xb0, 0xb4, 0xa8, 0x0a,
		0x79, 0x32, 0x25, 0x2e, 0xb8, 0x12, 0x10, 0x36, 0xf7, 0x33, 0x28, 0xfa, 0x5a, 0x3f, 0xed, 0x32,
		0x57, 0x88, 0x54, 0x11, 0x43, 0xd4, 0x85, 0x19, 0xca, 0xd9, 0xac, 0xd9, 0x3b, 0xaf, 0x04, 0x77,
		0x92, 0x3c, 0x67, 0x4c, 0xc9, 0x1c, 0x31, 0xc9, 0x73, 0xc2, 0x16, 0x57, 0x10, 0x2a, 0x92, 0x1e,
		0xa8, 0xe0, 0x8a, 0x81, 0xc2, 0x2b, 0x04, 0xaa, 0xb0, 0x97, 0xf2, 0x2b, 0x00, 0xca, 0xe1, 0x95,
		0xda, 0x12, 0xfe, 0x7c, 0x89, 0x4a, 0xb2, 0xe7, 0x5c, 0xa9, 0xb9, 0xc9, 0xa6, 0xf2, 0xc6, 0x9a,
		0xa2, 0x9b, 0x69, 0xca, 0x6e, 0xa0, 0xa9, 0xbc, 0x69, 0x46, 0xe0, 0x46, 0x19, 0x25, 0x41, 0x4e,
		0xe9, 0x0d, 0x31, 0x9a, 0x92, 0x9c, 0xb2, 0x1b, 0x5f, 0xf9, 0xae, 0x51, 0x53, 0x76, 0x53, 0x2b,
		0xd9, 0xf1, 0xee, 0x80, 0x71, 0xe1, 0x8a, 0x7b, 0x35, 0xb7, 0xb2, 0x12, 0x6c, 0xaf, 0xa2, 0x0a,
		0xac, 0x31, 0xfb, 0xe8, 0x9f, 0x9c, 0x90, 0xa9, 0xd7, 0x52, 0x1b, 0xdd, 0x46, 0xd7, 0xee, 0x35,
		0xbf, 0xd8, 0xbd, 0x3f, 0xcf, 0xea, 0xaa, 0x62, 0x4f, 0xdc, 0xbf, 0x31, 0x54, 0xda, 0xe1, 0x56,
		0x71, 0x8d, 0xce, 0x7c, 0x39, 0x6a, 0x9d, 0x7a, 0xcd, 0xae, 0x1d, 0x1f, 0x77, 0xea, 0xdd, 0x6e,
		0xbd, 0xab, 0xb0, 0x26, 0xe4, 0x43, 0xe1, 0x57, 0xe2, 0xbc, 0xf7, 0x6b, 0xbd, 0xd5, 0x6b, 0x1c,
		0xd5, 0x7a, 0x8d, 0x76, 0x0b, 0x2b, 0xa1, 0x6e, 0x25, 0x8e, 0xff, 0x6c, 0xd5, 0x4e, 0x1b, 0x47,
		0x76, 0xab, 0x76, 0x5a, 0xc7, 0x3a, 0xa8, 0x5b, 0x87, 0xfa, 0x1f, 0xbd, 0x7a, 0xeb, 0xb8, 0x7e,
		0x6c, 0x37, 0xce, 0xbe, 0x54, 0xed, 0x4e, 0xbd, 0x76, 0xf4, 0xeb, 0xec, 0x10, 0x14, 0xab, 0x42,
		0x61, 0x55, 0xba, 0x58, 0x13, 0x22, 0x6b, 0xd2, 0x68, 0x74, 0xed, 0x56, 0xbd, 0xf1, 0xf9, 0xd7,
		0x4f, 0xed, 0x0e, 0x92, 0xb8, 0xca, 0x85, 0x68, 0x75, 0x7b, 0xb5, 0xd6, 0x51, 0xdd, 0x6e, 0x1c,
		0x63, 0x19, 0x14, 0x2e, 0x43, 0x94, 0x30, 0xa2, 0x40, 0xd5, 0x69, 0xd5, 0x9a, 0x88, 0x52, 0x94,
		0x56, 0xa5, 0xd1, 0xea, 0xd5, 0x3b, 0x27, 0xb5, 0xa3, 0x3a, 0x58, 0x07, 0xad, 0x35, 0xc1, 0x4e,
		0x21, 0xb6, 0x2a, 0xdd, 0x4e, 0xf3, 0x33, 0x16, 0x41, 0xf1, 0x22, 0xf4, 0xea, 0xf6, 0xac, 0x04,
		0x13, 0x19, 0x5d, 0xf1, 0x62, 0xec, 0x21, 0x77, 0x10, 0x5c, 0x13, 0xa4, 0x0c, 0x42, 0x8b, 0x81,
		0x94, 0x41, 0x60, 0x11, 0x90, 0x32, 0x88, 0x2c, 0x46, 0xb7, 0xd1, 0xb5, 0x6b, 0xcd, 0x46, 0xad,
		0x8b, 0x85, 0x50, 0xbc, 0x10, 0x89, 0x38, 0x65, 0xd7, 0x7a, 0xbd, 0x4e, 0xe3, 0xd3, 0x79, 0x0f,
		0xc2, 0xba, 0xc2, 0x05, 0x69, 0x76, 0xcf, 0xec, 0x4f, 0xe7, 0x27, 0x27, 0xf5, 0x8e, 0xdd, 0x6d,
		0xfc, 0x0f, 0x96, 0x42, 0xe1, 0x52, 0x9c, 0xf6, 0x70, 0xba, 0x41, 0x6f, 0x3d, 0x00, 0x6b, 0x29,
		0xad, 0x47, 0x17, 0xa7, 0xe1, 0xaa, 0x57, 0x00, 0x09, 0x9c, 0xd6, 0x9a, 0x9c, 0x37, 0x7b, 0x0d,
		0xbb, 0xd7, 0x3e, 0x6b, 0x37, 0xdb, 0x9f, 0x11, 0x9f, 0x14, 0xae, 0x44, 0xab, 0x79, 0x06, 0x72,
		0xa1, 0x72, 0x01, 0xce, 0xce, 0x3b, 0x9f, 0xeb, 0x76, 0xbb, 0x81, 0x35, 0x50, 0xb7, 0x06, 0x6b,
		0x4d, 0x0a, 0x8a, 0xd6, 0x5b, 0xea, 0x12, 0x37, 0xa0, 0xb5, 0x7a, 0x12, 0x6e, 0x40, 0xcb, 0xbf,
		0x01, 0x2d, 0x71, 0x68, 0x5c, 0x3e, 0xee, 0x3c, 0x4b, 0xbd, 0x0a, 0xa7, 0xe2, 0x0a, 0x9c, 0xe4,
		0xab, 0x6f, 0xd2, 0xaf, 0xbc, 0xe1, 0xc6, 0xb3, 0x9c, 0xe7, 0xe2, 0xc6, 0x33, 0x6e, 0x3c, 0xa7,
		0xf6, 0x2a, 0xa5, 0x5f, 0x55, 0x53, 0x38, 0x34, 0x4c, 0xc5, 0x50, 0x30, 0x95, 0x43, 0xbf, 0x24,
		0xe0, 0x82, 0x37, 0x1a, 0xef, 0x01, 0x89, 0x43, 0xb7, 0xe4, 0xce, 0x0b, 0x90, 0x3f, 0x1f, 0x80,
		0xc4, 0x3c, 0x00, 0x05, 0xfd, 0xff, 0x15, 0xf4, 0xfb, 0xcf, 0x7a, 0x53, 0x48, 0xe6, 0x70, 0x14,
		0xb9, 0x9b, 0x29, 0xa5, 0xc3, 0xd3, 0x2b, 0x1b, 0x15, 0x67, 0x9b, 0x3a, 0xb2, 0x0b, 0xe8, 0xd9,
		0xfc, 0xe6, 0x8c, 0x76, 0x83, 0xac, 0x5d, 0x40, 0xcd, 0xfb, 0xb3, 0x71, 0xae, 0xf4, 0x97, 0x3e,
		0x83, 0x65, 0x37, 0x17, 0xf3, 0xa2, 0xe2, 0x37, 0x91, 0xd5, 0xb2, 0x27, 0xf8, 0xf7, 0xc1, 0xf3,
		0x32, 0x72, 0xe4, 0x6c, 0xbb, 0xac, 0x65, 0xae, 0x31, 0xc8, 0xd0, 0x14, 0x24, 0x6a, 0x08, 0xb2,
		0x34, 0x03, 0xe9, 0x1a, 0x81, 0x74, 0x4d, 0x40, 0xae, 0x06, 0xa0, 0x57, 0xf2, 0xca, 0xba, 0x8b,
		0xd9, 0x6a, 0xe8, 0xca, 0xde, 0x99, 0x1f, 0x8d, 0x98, 0x59, 0x3b, 0xb4, 0x9c, 0xf6, 0x94, 0xd2,
		0x44, 0x5a, 0x99, 0xe2, 0xac, 0x02, 0x51, 0x56, 0xb6, 0x18, 0xab, 0x4c, 0x84, 0x55, 0x26, 0xbe,
		0xaa, 0x11, 0x5d, 0xf5, 0x16, 0x98, 0x64, 0xb5, 0x93, 0x44, 0xbf, 0x60, 0x7d, 0x03, 0xb3, 0x8a,
		0x00, 0xad, 0x30, 0x50, 0xab, 0x0a, 0xd8, 0xca, 0x03, 0xb7, 0xf2, 0x00, 0xae, 0x36, 0x90, 0xcb,
		0x09, 0xe8, 0x92, 0x02, 0xbb, 0xf4, 0x00, 0x9f, 0x3c, 0xd0, 0x63, 0x7c, 0x14, 0x6b, 0x45, 0x8a,
		0x3a, 0x06, 0xcf, 0x9e, 0x8f, 0x9e, 0xc1, 0x79, 0x4b, 0x05, 0x04, 0x52, 0x82, 0xea, 0xd4, 0x40,
		0x26, 0x45, 0x90, 0x49, 0x15, 0x34, 0x52, 0x86, 0xdc, 0xd4, 0x21, 0x39, 0x85, 0x24, 0xaf, 0x58,
		0x7d, 0xcf, 0xe0, 0x89, 0xcb, 0xc5, 0x47, 0x85, 0xdd, 0x82, 0x55, 0x34, 0x0b, 0xee, 0x38, 0x7c,
		0x54, 0xc8, 0xa9, 0xe1, 0xa7, 0x2e, 0x57, 0x3f, 0x39, 0x3b, 0xee, 0x4b, 0x2c, 0x3f, 0xbf, 0xae,
		0xd9, 0x71, 0x12, 0x38, 0x7d, 0xe1, 0xfa, 0xfc, 0xd8, 0x1d, 0xb9, 0xb2, 0x4a, 0x26, 0x7e, 0xbc,
		0x25, 0xd9, 0xc8, 0x11, 0xee, 0x2d, 0x93, 0x52, 0x51, 0x40, 0x28, 0x0a, 0xae, 0xba, 0xa8, 0x73,
		0x47, 0xc7, 0x45, 0x2b, 0xbb, 0xbb, 0x70, 0x52, 0xaa, 0x4e, 0x8a, 0x01, 0xeb, 0x5a, 0x7f, 0x3e,
		0x89, 0x41, 0x06, 0x03, 0x77, 0x40, 0x9e, 0x41, 0x9e, 0x41, 0x9e, 0x41, 0x9e, 0x41, 0x9e, 0x41,
		0x9e, 0x41, 0x9e, 0x41, 0x9e, 0xc1, 0x4b, 0x40, 0x9e, 0x41, 0x9e, 0x41, 0x9e, 0x41, 0x9e, 0x41,
		0x9e, 0x7f, 0xe6, 0xb4, 0xb7, 0xb3, 0xfd, 0xac, 0x88, 0x3d, 0x4f, 0x1f, 0x0f, 0xfa, 0x0c, 0xfa,
		0x0c, 0xfa, 0x0c, 0xfa, 0x0c, 0xfa, 0x9c, 0x23, 0xfa, 0x7c, 0xe5, 0x72, 0x27, 0xb8, 0x57, 0xc8,
		0x9f, 0x0f, 0xd0, 0x60, 0x8a, 0xbe, 0xc3, 0xa2, 0xc1, 0xd4, 0xb8, 0xb4, 0x7a, 0x6d, 0x70, 0xf5,
		0x8f, 0x68, 0x3a, 0xf5, 0xd2, 0x85, 0x45, 0xd3, 0x29, 0xcd, 0x71, 0x2b, 0xca, 0xe6, 0x8b, 0x81,
		0x4b, 0x51, 0x36, 0x9f, 0xa3, 0x34, 0x8e, 0xa6, 0x53, 0x59, 0x07, 0x45, 0x34, 0x9d, 0x22, 0xba,
		0x07, 0xd0, 0x74, 0x2a, 0xc5, 0x27, 0xa2, 0xe9, 0x14, 0x9a, 0x4e, 0xe5, 0x99, 0xcf, 0xd1, 0x6d,
		0x44, 0x75, 0x3e, 0x37, 0x13, 0x1d, 0xa9, 0xe4, 0x6c, 0x95, 0x22, 0x76, 0xa4, 0x7a, 0xd0, 0x21,
		0x49, 0x97, 0xde, 0x54, 0x6f, 0x08, 0xbb, 0xd3, 0x1c, 0x7e, 0x78, 0xe1, 0xd8, 0x72, 0x07, 0x29,
		0xc7, 0x97, 0x6c, 0x01, 0x47, 0xf6, 0x00, 0x43, 0x09, 0xa0, 0x90, 0x00, 0x20, 0x24, 0x00, 0x86,
		0xb4, 0xdd, 0x34, 0xe3, 0x68, 0x47, 0x28, 0xca, 0x65, 0x90, 0xe3, 0x5f, 0x97, 0xd3, 0xd3, 0x8d,
		0xaf, 0xe9, 0x45, 0xc1, 0x74, 0x7e, 0x53, 0x4a, 0x0e, 0x9a, 0x95, 0x63, 0x12, 0x71, 0xc8, 0x74,
		0x7c, 0x60, 0xf3, 0x15, 0x4b, 0x61, 0xb5, 0xcc, 0xc0, 0x9f, 0x08, 0x66, 0x8d, 0x03, 0x36, 0x64,
		0x01, 0xe3, 0x29, 0x6a, 0xa6, 0x89, 0x98, 0xb4, 0xf6, 0x84, 0x94, 0x7c, 0x2c, 0xdd, 0x4e, 0x37,
		0xa9, 0x4b, 0xf2, 0x59, 0x48, 0xee, 0x19, 0x4a, 0xea, 0x59, 0x49, 0xe6, 0x99, 0x4b, 0xe2, 0x99,
		0x4b, 0xde, 0xd9, 0x4a, 0xda, 0xb4, 0xe2, 0x76, 0xda, 0x9d, 0x5a, 0xcc, 0xfe, 0x7c, 0x57, 0xa5,
		0xec, 0x55, 0xf3, 0x8d, 0x30, 0xfb, 0xfd, 0x69, 0xc3, 0xff, 0x4c, 0x9a, 0x68, 0x65, 0x76, 0xea,
		0x97, 0xe5, 0xe9, 0x9e, 0x84, 0x53, 0xbc, 0xac, 0x4f, 0xeb, 0xa4, 0x9d, 0xca, 0x49, 0x3b, 0x7d,
		0x93, 0x73, 0xca, 0x46, 0x9b, 0xa2, 0x67, 0xd5, 0x54, 0xca, 0x64, 0x77, 0x82, 0x05, 0xdc, 0xf1,
		0xac, 0xcc, 0xa0, 0xd1, 0x93, 0x7b, 0xec, 0xe9, 0x47, 0x67, 0xdb, 0xf7, 0x7a, 0x1b, 0x7d, 0xaf,
		0x55, 0x06, 0x40, 0x59, 0x81, 0x50, 0x7a, 0x40, 0x94, 0x1e, 0x18, 0xe5, 0x06, 0xc8, 0x6c, 0x02,
		0x65, 0x46, 0x01, 0x33, 0x79, 0x35, 0x99, 0x97, 0x15, 0xac, 0xdc, 0xf6, 0xdc, 0xa9, 0x64, 0xb9,
		0x61, 0x66, 0xf1, 0x2b, 0xc3, 0xa2, 0x01, 0x49, 0xd7, 0x37, 0xe5, 0x9c, 0x3c, 0xcb, 0xab, 0xe1,
		0x93, 0x7c, 0xed, 0x52, 0xd9, 0xcd, 0x35, 0xf9, 0x37, 0xd4, 0xbe, 0xcb, 0x29, 0x19, 0x90, 0xef,
		0x2a, 0xd5, 0xca, 0x41, 0xf5, 0x60, 0x6f, 0xbf, 0x72, 0xb0, 0x0b, 0x9f, 0xd1, 0x22, 0x41, 0x65,
		0xff, 0xdb, 0x2f, 0x71, 0xf6, 0xfc, 0xc8, 0x73, 0xee, 0x47, 0xbe, 0xb0, 0xfc, 0xbe, 0xd5, 0xf7,
		0x6f, 0xc6, 0x01, 0x0b, 0x43, 0x36, 0xb0, 0x3c, 0xe6, 0x0c, 0xa3, 0x87, 0x7e, 0x2f, 0xf0, 0x64,
		0x22, 0x97, 0x2b, 0xe3, 0x6d, 0x4f, 0x3f, 0x1a, 0xbc, 0x0d, 0xbc, 0x0d, 0xbc, 0x0d, 0xbc, 0x0d,
		0xbc, 0x0d, 0xbc, 0x0d, 0xbc, 0x0d, 0xbc, 0x0d, 0xbc, 0x0d, 0x3e, 0x03, 0xde, 0x06, 0xde, 0xa6,
		0x2b, 0x6f, 0x43, 0x39, 0xa4, 0xdc, 0xea, 0xb3, 0x87, 0x84, 0xb2, 0x34, 0x2b, 0x78, 0xa0, 0x5a,
		0x85, 0x98, 0x62, 0x41, 0x52, 0x36, 0xd3, 0xda, 0x32, 0x9d, 0xca, 0x96, 0x79, 0xe1, 0x48, 0x05,
		0x85, 0x23, 0x12, 0x79, 0x37, 0x0a, 0x47, 0xf2, 0x98, 0x25, 0x50, 0x38, 0x92, 0x5e, 0xa0, 0x83,
		0x00, 0xa9, 0x34, 0x00, 0xca, 0x0a, 0x84, 0xd2, 0x03, 0xa2, 0xf4, 0xc0, 0x28, 0x37, 0x40, 0x66,
		0xcb, 0xc0, 0x20, 0x40, 0x3e, 0x3b, 0x7e, 0x41, 0x80, 0x7c, 0x8e, 0xaa, 0x04, 0x01, 0x32, 0x17,
		0x62, 0x12, 0x04, 0x48, 0xf8, 0x0c, 0x89, 0x04, 0x95, 0xfd, 0x6f, 0xbf, 0x44, 0x1d, 0x04, 0xea,
		0x20, 0x40, 0x43, 0x40, 0x43, 0x40, 0x43, 0x40, 0x43, 0x40, 0x43, 0x40, 0x43, 0x40, 0x43, 0x40,
		0x43, 0x40, 0x43, 0x40, 0x43, 0x40, 0x43, 0xb2, 0xff, 0x8d, 0x38, 0xd6, 0x7f, 0xf9, 0xb1, 0x7e,
		0x06, 0x2d, 0xe9, 0xd1, 0x5b, 0x48, 0x3b, 0x37, 0x30, 0x53, 0x2d, 0x9f, 0x78, 0x69, 0x77, 0xab,
		0x4e, 0x64, 0xcd, 0xd9, 0xc2, 0x98, 0x1c, 0x75, 0x39, 0x4a, 0xb7, 0x96, 0x24, 0x93, 0x1a, 0x92,
		0xcc, 0xfa, 0x19, 0x55, 0xd0, 0xcf, 0x48, 0x27, 0xed, 0x01, 0xfd, 0x8c, 0x28, 0xf7, 0x33, 0x72,
		0x26, 0xe2, 0x9a, 0x71, 0xe1, 0xf6, 0xe3, 0x04, 0x64, 0xf5, 0xaf, 0x59, 0xff, 0xaf, 0xec, 0x6a,
		0xd4, 0x1e, 0x7d, 0x5a, 0xda, 0xe5, 0x30, 0x6c, 0xe8, 0x4c, 0x3c, 0x91, 0x89, 0x42, 0x60, 0x46,
		0xde, 0x9b, 0x2e, 0xaa, 0xb9, 0xcc, 0xa6, 0x62, 0x6f, 0x1b, 0xad, 0x9e, 0x50, 0xb1, 0x47, 0x29,
		0x4a, 0xcb, 0x89, 0xd6, 0x7a, 0x10, 0xc0, 0xcc, 0x14, 0xdf, 0xc5, 0x60, 0x3d, 0xdf, 0xf7, 0x98,
		0xc3, 0xb3, 0xf0, 0xf8, 0x39, 0xac, 0x2b, 0x17, 0xa0, 0x64, 0x9b, 0x71, 0xe7, 0xca, 0x63, 0x83,
		0xec, 0x12, 0xe2, 0xfc, 0x01, 0x3a, 0xe5, 0xc0, 0x58, 0x22, 0x43, 0x12, 0x44, 0x12, 0x44, 0x12,
		0x44, 0x12, 0x44, 0x12, 0xcc, 0x7d, 0x12, 0x8c, 0xa5, 0x3d, 0x8b, 0x4f, 0x6e, 0xae, 0x58, 0x90,
		0x5d, 0x26, 0x5c, 0x79, 0x0a, 0xd2, 0x01, 0xd2, 0x01, 0xd2, 0x01, 0xd2, 0x81, 0x2e, 0x11, 0x66,
		0x39, 0xca, 0x64, 0x31, 0x2c, 0x26, 0xdb, 0x9a, 0x97, 0x0c, 0x2b, 0x8f, 0x64, 0xd4, 0xb8, 0x24,
		0x05, 0x0b, 0xe5, 0x8c, 0x6b, 0xd8, 0x64, 0xd7, 0x27, 0xc8, 0xab, 0x4b, 0xc8, 0xb0, 0x86, 0x45,
		0x4a, 0xed, 0x4a, 0xe2, 0x02, 0x15, 0xb8, 0x00, 0x89, 0xec, 0x90, 0xdd, 0x6f, 0xbd, 0x2c, 0x00,
		0xe2, 0xbe, 0x61, 0x22, 0x70, 0xfb, 0x56, 0x28, 0xee, 0xbd, 0x0c, 0x1b, 0x06, 0xac, 0x3c, 0x05,
		0x88, 0x1b, 0x88, 0x1b, 0x88, 0x1b, 0x88, 0x5b, 0x97, 0x08, 0xb3, 0xa2, 0xc2, 0x54, 0x33, 0xf8,
		0xdd, 0x75, 0x3e, 0xb9, 0xc9, 0x6e, 0x43, 0xf5, 0xfc, 0xae, 0x08, 0x5c, 0x3e, 0xca, 0xb6, 0xee,
		0x7f, 0x3b, 0xae, 0x94, 0xaa, 0x75, 0x3a, 0xed, 0xdf, 0xed, 0xd3, 0x7a, 0xaf, 0xd3, 0x38, 0xca,
		0xb2, 0xf6, 0xbf, 0x1c, 0x3d, 0xed, 0xf7, 0xc6, 0x71, 0x7d, 0xfe, 0x2c, 0xbd, 0x6e, 0x61, 0xf8,
		0x8d, 0x38, 0x1a, 0x64, 0x79, 0x0d, 0x63, 0x65, 0x25, 0x32, 0xc5, 0x8e, 0x2b, 0xeb, 0x70, 0x68,
		0x94, 0x8b, 0x59, 0xb7, 0x8b, 0x82, 0xd1, 0x17, 0xfd, 0x5e, 0x05, 0x05, 0xa3, 0x29, 0x96, 0x09,
		0x13, 0x29, 0xcc, 0xbc, 0x0f, 0x05, 0xbb, 0xb1, 0xa6, 0x5a, 0x53, 0xdf, 0x9f, 0x70, 0xc1, 0x82,
		0x30, 0x83, 0x42, 0xcd, 0x47, 0x1f, 0x83, 0x41, 0x94, 0x04, 0x41, 0x3a, 0x0a, 0x37, 0xd5, 0x80,
		0xf0, 0x9c, 0x17, 0x6e, 0xa2, 0x9b, 0xe0, 0x7a, 0x80, 0x41, 0x37, 0x41, 0xa8, 0x02, 0x50, 0x05,
		0x68, 0x05, 0xaa, 0xe4, 0x17, 0x3b, 0x13, 0x71, 0x6d, 0x0d, 0x1d, 0xd7, 0x0b, 0xb3, 0xef, 0xdb,
		0xb1, 0xf4, 0x2c, 0x34, 0xea, 0x90, 0x1d, 0xda, 0x24, 0x86, 0x38, 0x59, 0xa1, 0x4e, 0x7a, 0xc8,
		0x93, 0x1e, 0xfa, 0xe4, 0x86, 0xc0, 0xec, 0x14, 0x04, 0x23, 0x17, 0x8d, 0x3a, 0x66, 0x8c, 0x0e,
		0xbd, 0x3a, 0x9e, 0xf5, 0x85, 0x5e, 0x1d, 0x9b, 0x3d, 0x0f, 0xbd, 0x3a, 0x52, 0x75, 0x15, 0xf4,
		0xea, 0xc8, 0x97, 0xcf, 0xa0, 0x57, 0x47, 0xa6, 0xf6, 0x66, 0xd1, 0x32, 0x30, 0xc6, 0xff, 0xe2,
		0x7e, 0xcc, 0xa4, 0x12, 0x8e, 0xa5, 0x07, 0x82, 0x75, 0x80, 0x75, 0x80, 0x75, 0x80, 0x75, 0x80,
		0x75, 0x80, 0x75, 0x80, 0x75, 0x80, 0x75, 0x80, 0x75, 0xc0, 0x67, 0xc0, 0x3a, 0x72, 0xce, 0x3a,
		0xfa, 0x7e, 0x10, 0x4c, 0xc6, 0x82, 0x0d, 0x2c, 0x2f, 0x1c, 0x4b, 0x20, 0x1d, 0x0f, 0x9e, 0x07,
		0xce, 0x01, 0xce, 0x01, 0xce, 0x01, 0xce, 0x01, 0xce, 0x01, 0xce, 0x01, 0xce, 0x01, 0xce, 0x01,
		0xce, 0x01, 0x9f, 0x01, 0xe7, 0xc8, 0x39, 0xe7, 0x18, 0x38, 0xc2, 0xb9, 0x72, 0x42, 0x66, 0xf9,
		0xb7, 0x2c, 0xf0, 0x7c, 0x67, 0x20, 0x81, 0x77, 0x3c, 0xf2, 0x4c, 0x70, 0x0f, 0x70, 0x0f, 0x70,
		0x0f, 0x70, 0x0f, 0x70, 0x0f, 0x70, 0x0f, 0x70, 0x0f, 0x70, 0x0f, 0x70, 0x0f, 0xf8, 0x0c, 0xb8,
		0x47, 0xce, 0xb9, 0x07, 0xbb, 0xeb, 0x33, 0x36, 0xb0, 0x6e, 0x9c, 0x3b, 0x2b, 0x64, 0xff, 0xb0,
		0xf8, 0xe4, 0x46, 0x02, 0xf9, 0x78, 0xec, 0xa1, 0x60, 0x1f, 0x60, 0x1f, 0x60, 0x1f, 0x60, 0x1f,
		0x60, 0x1f, 0x60, 0x1f, 0x60, 0x1f, 0x60, 0x1f, 0x60, 0x1f, 0xf0, 0x19, 0xb0, 0x8f, 0x9c, 0xb3,
		0x0f, 0x77, 0x60, 0x79, 0x8c, 0x5b, 0x37, 0x6e, 0x78, 0xe3, 0x88, 0xfe, 0x75, 0xf6, 0xcc, 0xe3,
		0xe1, 0x03, 0xc1, 0x3a, 0xc0, 0x3a, 0xc0, 0x3a, 0xc0, 0x3a, 0xc0, 0x3a, 0xc0, 0x3a, 0xc0, 0x3a,
		0xc0, 0x3a, 0xc0, 0x3a, 0xe0, 0x33, 0x60, 0x1d, 0x39, 0x67, 0x1d, 0x5e, 0x38, 0xb6, 0x58, 0x10,
		0xf8, 0x81, 0x84, 0xa3, 0x8e, 0xa5, 0x67, 0x81, 0x6b, 0x80, 0x6b, 0x80, 0x6b, 0x80, 0x6b, 0x80,
		0x6b, 0x80, 0x6b, 0x80, 0x6b, 0x80, 0x6b, 0x80, 0x6b, 0xc0, 0x67, 0xc0, 0x35, 0x72, 0xce, 0x35,
		0x6e, 0x1c, 0x3e, 0x71, 0x3c, 0xcb, 0x19, 0x0c, 0x02, 0x16, 0x86, 0xd6, 0x20, 0xf0, 0xc7, 0xd6,
		0x30, 0xf0, 0x6f, 0x2c, 0x27, 0x60, 0x8e, 0x04, 0xfe, 0xf1, 0x93, 0xe7, 0x83, 0x93, 0x80, 0x93,
		0x80, 0x93, 0x80, 0x93, 0x80, 0x93, 0x80, 0x93, 0x80, 0x93, 0x80, 0x93, 0x80, 0x93, 0xc0, 0x67,
		0xc0, 0x49, 0x72, 0xcf, 0x49, 0xee, 0x62, 0xf8, 0x9f, 0xb0, 0x82, 0x79, 0x39, 0x14, 0x93, 0x42,
		0x48, 0x9e, 0x7e, 0x38, 0xd8, 0x08, 0xd8, 0x08, 0xd8, 0x08, 0xd8, 0x08, 0xd8, 0x08, 0xd8, 0x08,
		0xd8, 0x08, 0xd8, 0x08, 0xd8, 0x08, 0x7c, 0x06, 0x6c, 0x24, 0xe7, 0x6c, 0xc4, 0xff, 0xc6, 0x2d,
		0x2f, 0x1c, 0x5b, 0xe3, 0x49, 0x30, 0x92, 0x41, 0x40, 0x1e, 0x3c, 0x0f, 0x9c, 0x03, 0x9c, 0x03,
		0x9c, 0x03, 0x9c, 0x03, 0x9c, 0x03, 0x9c, 0x03, 0x9c, 0x03, 0x9c, 0x03, 0x9c, 0x03, 0x3e, 0x03,
		0xce, 0x91, 0x73, 0xce, 0x31, 0x76, 0x02, 0x61, 0xf5, 0xaf, 0xa3, 0xec, 0x23, 0x81, 0x71, 0xac,
		0x3c, 0x0d, 0x7c, 0x03, 0x7c, 0x03, 0x7c, 0x03, 0x7c, 0x03, 0x7c, 0x03, 0x7c, 0x03, 0x7c, 0x03,
		0x7c, 0x03, 0x7c, 0x03, 0x3e, 0x03, 0xbe, 0x91, 0x73, 0xbe, 0x31, 0xeb, 0x72, 0x6b, 0x85, 0x7f,
		0xb9, 0x32, 0x86, 0x0a, 0xae, 0x3e, 0x0e, 0x8c, 0x03, 0x8c, 0x03, 0x8c, 0x03, 0x8c, 0x03, 0x8c,
		0x03, 0x8c, 0x03, 0x8c, 0x03, 0x8c, 0x03, 0x8c, 0x03, 0x3e, 0x03, 0xc6, 0x91, 0x77, 0xc6, 0x31,
		0x1e, 0x5a, 0xc1, 0x84, 0xcb, 0x20, 0x1b, 0xf3, 0x27, 0x81, 0x67, 0x80, 0x67, 0x80, 0x67, 0x80,
		0x67, 0x80, 0x67, 0x80, 0x67, 0x80, 0x67, 0x80, 0x67, 0x80, 0x67, 0xc0, 0x67, 0xc0, 0x33, 0x72,
		0xce, 0x33, 0x84, 0x2f, 0x1c, 0xcf, 0xf2, 0x42, 0x19, 0xc7, 0x1a, 0x4b, 0xcf, 0x02, 0xd7, 0x00,
		0xd7, 0x00, 0xd7, 0x00, 0xd7, 0x00, 0xd7, 0x00, 0xd7, 0x00, 0xd7, 0x00, 0xd7, 0x00, 0xd7, 0x80,
		0xcf, 0x80, 0x6b, 0x50, 0xe2, 0x1a, 0x6f, 0x08, 0xef, 0x70, 0xb3, 0xc6, 0xb9, 0x2f, 0x9c, 0xc8,
		0xd3, 0x33, 0xd9, 0xd4, 0x66, 0xd8, 0xbf, 0x66, 0x37, 0xce, 0xd8, 0x11, 0xd7, 0x51, 0xde, 0x2f,
		0xf9, 0x63, 0xc6, 0xfb, 0x31, 0xf6, 0xb7, 0x38, 0x13, 0xdf, 0xfc, 0xe0, 0x2f, 0xcb, 0xe5, 0xa1,
		0x70, 0x78, 0x9f, 0x95, 0x1e, 0xfe, 0x20, 0x5c, 0xfb, 0x49, 0x69, 0x1c, 0xf8, 0xc2, 0xef, 0xfb,
		0x5e, 0x98, 0x7c, 0x57, 0x8a, 0x00, 0x5c, 0xc9, 0x63, 0xb7, 0xcc, 0x9b, 0xfd, 0xab, 0x14, 0xde,
		0x87, 0x82, 0xdd, 0x58, 0xf1, 0x1f, 0xac, 0x19, 0xd2, 0x08, 0x4b, 0xa1, 0x70, 0x04, 0x4b, 0x17,
		0xe9, 0xa5, 0xb7, 0xb2, 0xe9, 0xfc, 0xa6, 0x94, 0x7c, 0x23, 0x2b, 0x9f, 0x20, 0xe3, 0x0b, 0x29,
		0x82, 0x4e, 0x33, 0x14, 0xc1, 0xa4, 0x2f, 0xf8, 0x0c, 0xd7, 0xb6, 0xa6, 0x46, 0x36, 0x66, 0x36,
		0xda, 0x67, 0x33, 0xcb, 0xec, 0x46, 0xe8, 0x86, 0x76, 0x33, 0xb2, 0xc2, 0xee, 0xc6, 0x26, 0xc5,
		0xdf, 0x1f, 0xcd, 0x0d, 0x7a, 0x43, 0xc3, 0x89, 0x52, 0x70, 0x20, 0x53, 0x04, 0xce, 0x70, 0xe8,
		0xf6, 0x2d, 0xc6, 0x47, 0x2e, 0x67, 0x2c, 0x70, 0xf9, 0x28, 0x35, 0x2f, 0x5a, 0xe8, 0x1f, 0x8f,
		0x3c, 0x24, 0x25, 0xe7, 0x9f, 0xb1, 0x86, 0x72, 0x4a, 0xbf, 0x2e, 0x6d, 0xa1, 0x23, 0x0b, 0x61,
		0x23, 0x43, 0x21, 0x23, 0x2b, 0xe1, 0x22, 0x73, 0xa1, 0x22, 0x73, 0x61, 0x22, 0x5b, 0x21, 0x82,
		0x56, 0x42, 0x39, 0x76, 0x83, 0x74, 0x1d, 0xb6, 0x3f, 0xdf, 0x55, 0x29, 0x7b, 0xd5, 0x42, 0x9f,
		0x88, 0x7f, 0x7f, 0xca, 0x2b, 0x9e, 0x6e, 0x68, 0xc9, 0x2c, 0xc4, 0x64, 0x19, 0x6a, 0x24, 0x84,
		0x9c, 0xac, 0x43, 0x8f, 0xb4, 0x10, 0x24, 0x2d, 0x14, 0xc9, 0x09, 0x49, 0x7a, 0xf0, 0xa1, 0xb4,
		0x43, 0x55, 0xf2, 0x8b, 0x19, 0x77, 0xae, 0x3c, 0x36, 0xc8, 0xfe, 0x6c, 0x68, 0xfe, 0xa0, 0x8c,
		0x7c, 0xe4, 0x98, 0x0d, 0x9d, 0x89, 0x27, 0x32, 0x15, 0x3d, 0xcd, 0x58, 0xf9, 0xc8, 0x46, 0x96,
		0xbf, 0xc4, 0x81, 0x99, 0xec, 0x60, 0x2f, 0x31, 0xe8, 0xcb, 0x0a, 0xfe, 0xd2, 0x93, 0x80, 0xf4,
		0x64, 0x20, 0x37, 0x29, 0x64, 0x2b, 0x17, 0xea, 0x7f, 0x60, 0x76, 0xe5, 0xfb, 0x1e, 0x73, 0xb8,
		0x84, 0xe3, 0xb2, 0x72, 0x59, 0xab, 0x25, 0xc8, 0x58, 0xbf, 0x4c, 0x9e, 0x73, 0x3f, 0xf2, 0x85,
		0xe5, 0xf7, 0xad, 0xbe, 0x7f, 0x33, 0x0e, 0x58, 0x18, 0xb2, 0x81, 0xe5, 0x31, 0x67, 0x18, 0x3d,
		0xf4, 0x7b, 0x81, 0x8b, 0x5e, 0xdc, 0xf1, 0x6d, 0xd5, 0x0a, 0xfc, 0x89, 0x60, 0x81, 0xe5, 0x4a,
		0x00, 0x37, 0x0f, 0x9e, 0x87, 0x5c, 0x8e, 0x5c, 0x8e, 0x5c, 0x8e, 0x5c, 0xae, 0x55, 0x2e, 0x8f,
		0x63, 0xd8, 0x6c, 0xe6, 0x8b, 0x8c, 0x84, 0xfe, 0x31, 0xc3, 0x67, 0x9c, 0x39, 0x42, 0xb0, 0x80,
		0x67, 0x5e, 0x02, 0x63, 0xbe, 0xfb, 0xba, 0x6d, 0x1d, 0x5c, 0xfe, 0xeb, 0x6b, 0xd9, 0x3a, 0xb8,
		0x9c, 0x7e, 0x5b, 0x8e, 0xff, 0xf5, 0x77, 0xe5, 0xfb, 0xbf, 0x2a, 0x5f, 0xb7, 0xad, 0xea, 0xec,
		0xa7, 0x95, 0xdd, 0xaf, 0xdb, 0xd6, 0xee, 0xe5, 0xfb, 0x77, 0x17, 0x17, 0x5b, 0x2f, 0xfd, 0x3b,
		0xef, 0xff, 0xde, 0xf9, 0x9e, 0xdd, 0x76, 0xb8, 0xcc, 0x72, 0x19, 0xda, 0xdd, 0xc6, 0x1f, 0xd2,
		0xd6, 0xe2, 0x7f, 0xdf, 0xc9, 0x5a, 0x8d, 0xf7, 0xff, 0x66, 0xea, 0x56, 0x3f, 0x00, 0x9c, 0x9b,
		0x53, 0x9c, 0xbb, 0x27, 0x19, 0xe7, 0xee, 0x01, 0xe7, 0x02, 0xe7, 0x02, 0xe7, 0x02, 0xe7, 0x6a,
		0x8c, 0x73, 0xf7, 0x80, 0x73, 0x5f, 0x8a, 0x73, 0x63, 0x98, 0xe4, 0x58, 0xc3, 0x9a, 0x75, 0x72,
		0xf9, 0x77, 0xf9, 0x43, 0xf5, 0xfb, 0xe1, 0xfb, 0xbf, 0xf7, 0xbf, 0x3f, 0xfc, 0xe1, 0xbf, 0x1e,
		0xfb, 0xdf, 0xca, 0x1f, 0xf6, 0xbf, 0x1f, 0x3e, 0xf1, 0x5f, 0xf6, 0xbe, 0x1f, 0x3e, 0xf3, 0x77,
		0xec, 0x7e, 0x7f, 0xb7, 0xf6, 0xbf, 0x46, 0x3f, 0xaf, 0x3c, 0xf5, 0x17, 0xaa, 0x4f, 0xfc, 0x85,
		0x9d, 0xa7, 0xfe, 0xc2, 0xce, 0x13, 0x7f, 0xe1, 0x49, 0x93, 0x2a, 0x4f, 0xfc, 0x85, 0xdd, 0xef,
		0xff, 0x5a, 0xfb, 0xff, 0xdf, 0x3d, 0xfe, 0xbf, 0xee, 0x7d, 0x7f, 0xff, 0xaf, 0xa7, 0xfe, 0xdb,
		0xfe, 0xf7, 0x7f, 0x1d, 0xbe, 0x7f, 0x0f, 0xe4, 0xff, 0x6c, 0xe4, 0x0f, 0xf7, 0x94, 0xef, 0x9e,
		0x60, 0x42, 0x60, 0x42, 0x6a, 0x7f, 0x23, 0x4a, 0xcf, 0x7f, 0x5a, 0x6e, 0xfc, 0x48, 0x5d, 0x6a,
		0x69, 0x56, 0x4b, 0x46, 0xb5, 0xf2, 0x3c, 0xd5, 0x5a, 0x68, 0x47, 0xb0, 0xec, 0x8a, 0xf2, 0xa6,
		0xbf, 0x5e, 0xb3, 0x9a, 0xbc, 0x0a, 0x6a, 0xf2, 0x24, 0x52, 0x5c, 0xd4, 0xe4, 0xe5, 0x31, 0x51,
		0xa0, 0x26, 0xef, 0x67, 0x2f, 0x08, 0x35, 0x79, 0xd0, 0x37, 0xa1, 0x6f, 0x42, 0xdf, 0x84, 0xbe,
		0x89, 0x9a, 0x3c, 0xa5, 0x84, 0x13, 0x25, 0x66, 0x48, 0x4d, 0x48, 0x4d, 0x48, 0x4d, 0x48, 0x4d,
		0x4a, 0x53, 0x13, 0x4a, 0xcc, 0x5e, 0xf1, 0x20, 0x94, 0x98, 0xfd, 0x70, 0x19, 0x50, 0x62, 0xf6,
		0xf2, 0xf5, 0x40, 0xc5, 0x14, 0x2a, 0xa6, 0x00, 0xdb, 0x00, 0xdb, 0x00, 0xdb, 0x00, 0xdb, 0x9e,
		0x1b, 0xc3, 0x00, 0xdb, 0x5e, 0x08, 0xdb, 0x50, 0x92, 0x82, 0x8a, 0x29, 0xea, 0x40, 0x16, 0xee,
		0x89, 0x8a, 0x29, 0x15, 0xc0, 0x1e, 0x05, 0x40, 0xea, 0x0b, 0x80, 0xd0, 0x79, 0x52, 0xb5, 0x47,
		0x10, 0xf1, 0x04, 0xb5, 0x7d, 0x27, 0x7b, 0x53, 0x83, 0xea, 0x4b, 0xf6, 0x50, 0x69, 0x3b, 0xf9,
		0x46, 0xa1, 0xef, 0x45, 0xdc, 0x2e, 0x7a, 0x85, 0xd3, 0x16, 0xa1, 0x7c, 0x72, 0x73, 0xc5, 0x82,
		0x0d, 0x17, 0xca, 0x6c, 0xba, 0xa1, 0xa8, 0x09, 0x91, 0x4e, 0xd5, 0x8a, 0x79, 0xea, 0xf2, 0xba,
		0xc7, 0x22, 0x72, 0x96, 0x52, 0x1f, 0x6a, 0xf3, 0xd4, 0xb9, 0x5b, 0xfa, 0x8d, 0xe5, 0x8f, 0xd5,
		0xea, 0xde, 0x7e, 0xb5, 0xba, 0xbd, 0xbf, 0xb3, 0xbf, 0x7d, 0xb0, 0xbb, 0x5b, 0xde, 0x2b, 0xa7,
		0xd0, 0x65, 0xdb, 0x6c, 0x07, 0x03, 0x16, 0xb0, 0xc1, 0xa7, 0xe8, 0xed, 0xf2, 0x89, 0xe7, 0xa5,
		0xf9, 0x2b, 0xcf, 0x43, 0x16, 0xa4, 0xd2, 0x20, 0x7b, 0x53, 0xe7, 0x49, 0x39, 0x60, 0x29, 0x08,
		0x54, 0x29, 0x04, 0xa5, 0x97, 0x07, 0xa3, 0xcd, 0x22, 0xcf, 0xeb, 0xe3, 0xc5, 0xeb, 0xfe, 0xe6,
		0x2b, 0x9d, 0x24, 0x2d, 0xe7, 0x90, 0xea, 0x14, 0xaf, 0x5b, 0x99, 0x97, 0xbf, 0xd7, 0x97, 0xfd,
		0x8d, 0x17, 0xae, 0x80, 0xc9, 0xee, 0x44, 0xe0, 0x58, 0x93, 0xe8, 0x23, 0x5f, 0x79, 0xaf, 0x13,
		0x6f, 0xcc, 0x6f, 0xd7, 0xec, 0xf5, 0xfc, 0x70, 0x83, 0xd5, 0x9e, 0x8b, 0x41, 0x5b, 0xb3, 0xca,
		0xf1, 0x92, 0x3b, 0x60, 0x5c, 0xb8, 0x43, 0x97, 0x05, 0xc6, 0x2f, 0xc6, 0x5b, 0xbf, 0x6f, 0x8d,
		0x7d, 0xcf, 0x12, 0xf7, 0x63, 0x16, 0x1e, 0x36, 0xba, 0x8d, 0xee, 0xdb, 0x0d, 0x76, 0x70, 0x5a,
		0x02, 0xea, 0xb2, 0x40, 0x1a, 0xbf, 0xb7, 0x0d, 0xc3, 0x6a, 0xda, 0xf2, 0xe7, 0x8a, 0xbc, 0xf9,
		0xfc, 0x17, 0xfb, 0x46, 0x41, 0x5a, 0x31, 0x8f, 0x59, 0xd8, 0x0f, 0xdc, 0x71, 0x2a, 0x39, 0x25,
		0x71, 0xa6, 0x06, 0xef, 0x7b, 0x93, 0x01, 0x33, 0x1a, 0x5d, 0xab, 0xd1, 0x35, 0xa6, 0x9f, 0x7f,
		0x12, 0xc4, 0xb1, 0xc9, 0x88, 0x16, 0xcc, 0x10, 0xd7, 0xcc, 0x98, 0xc7, 0x03, 0xc3, 0x0d, 0x0d,
		0x7f, 0x68, 0x44, 0x6f, 0xe2, 0x82, 0xc7, 0x7f, 0x63, 0xd3, 0xf5, 0x4c, 0x51, 0xa7, 0x5f, 0x76,
		0xb5, 0xc1, 0xd2, 0xab, 0x4a, 0x21, 0x8d, 0x65, 0x21, 0xba, 0xaf, 0x78, 0xde, 0xa6, 0xab, 0xa0,
		0x57, 0xd6, 0x7c, 0x93, 0xad, 0xaa, 0xf2, 0xd2, 0x9c, 0xb0, 0x61, 0x36, 0x96, 0x93, 0x85, 0x5f,
		0xe1, 0xc6, 0x2f, 0x41, 0x5f, 0x2f, 0xf3, 0xa0, 0xe7, 0xaf, 0xe0, 0x0b, 0xd6, 0xc2, 0xf4, 0xfc,
		0xbe, 0xe3, 0x59, 0xce, 0x68, 0x14, 0xb0, 0x91, 0x23, 0xd8, 0xcb, 0xa7, 0x25, 0x26, 0x41, 0x6d,
		0xed, 0x37, 0xbd, 0xd0, 0x23, 0x5e, 0x77, 0xf7, 0xe7, 0xd5, 0x87, 0xb4, 0x9b, 0x1c, 0xbe, 0x2e,
		0x1f, 0xaa, 0x7a, 0x7e, 0xdf, 0x0a, 0xc4, 0x6b, 0x3c, 0x65, 0xc3, 0x30, 0x9c, 0xda, 0x31, 0x68,
		0x6a, 0x91, 0xf6, 0xe1, 0xb1, 0xe5, 0xec, 0xd5, 0x10, 0x43, 0xa3, 0xaf, 0xbd, 0xbf, 0x62, 0x26,
		0xae, 0xfd, 0xfa, 0x25, 0x9b, 0xfb, 0xcd, 0xe2, 0x57, 0xbd, 0xf2, 0x4d, 0x6f, 0x76, 0x51, 0x6e,
		0xe3, 0xca, 0x86, 0x34, 0x2a, 0x17, 0x52, 0xd9, 0x44, 0x59, 0x42, 0xe7, 0x54, 0x6a, 0x0b, 0xb2,
		0x05, 0xcf, 0x1b, 0x6c, 0x32, 0x35, 0x24, 0x7c, 0xd3, 0xcb, 0x63, 0x69, 0xcd, 0x9a, 0x48, 0x77,
		0xb6, 0x44, 0x4a, 0xf7, 0x56, 0x53, 0x2b, 0x38, 0x4a, 0xb3, 0xb0, 0x28, 0xd5, 0x6d, 0x9a, 0x05,
		0x05, 0x31, 0xb2, 0x2c, 0x09, 0xca, 0xac, 0xf4, 0x27, 0xed, 0x6d, 0xbc, 0x39, 0xaf, 0x48, 0x43,
		0x80, 0x4d, 0xeb, 0x6e, 0xe8, 0x0a, 0x97, 0x4c, 0x7d, 0x5e, 0x55, 0xba, 0x44, 0xd5, 0x48, 0xbf,
		0x12, 0x51, 0xbb, 0x39, 0x55, 0xa9, 0x05, 0x86, 0xac, 0x02, 0x44, 0xe6, 0x81, 0x22, 0xf3, 0x80,
		0x91, 0x75, 0xe0, 0x48, 0x27, 0x80, 0xa4, 0x14, 0x48, 0x92, 0x0f, 0x9b, 0x7a, 0xb5, 0xdf, 0x52,
		0xff, 0x8a, 0xb4, 0x0f, 0x81, 0x93, 0x3a, 0xbe, 0x42, 0x1c, 0xe2, 0x67, 0xde, 0x90, 0x87, 0xc6,
		0x00, 0xc5, 0x81, 0x1b, 0xf6, 0x9d, 0x60, 0x90, 0x41, 0x12, 0x9a, 0xfd, 0xe2, 0xb4, 0x86, 0xba,
		0x65, 0xd0, 0x74, 0x20, 0xcd, 0x26, 0x03, 0x97, 0x48, 0xb4, 0x48, 0xb4, 0x48, 0xb4, 0x05, 0x4c,
		0xb4, 0xe9, 0x5f, 0xcc, 0x4f, 0xf9, 0x22, 0x3e, 0x32, 0x2d, 0x89, 0x4c, 0x7b, 0xc3, 0x44, 0xe0,
		0xf6, 0xd3, 0x4f, 0xb4, 0xb3, 0xdf, 0x8b, 0xfc, 0x83, 0xfc, 0x83, 0xfc, 0x53, 0xc0, 0xfc, 0x33,
		0x71, 0xb9, 0xd8, 0xa9, 0x64, 0x90, 0x7e, 0xf6, 0x53, 0xfc, 0x95, 0x1d, 0x87, 0x8f, 0x58, 0xea,
		0xf7, 0x5f, 0x32, 0xa8, 0xe2, 0x3f, 0x75, 0xb3, 0x6b, 0xf4, 0x6a, 0x7e, 0x71, 0xbc, 0x09, 0xcb,
		0xf0, 0xbe, 0xed, 0x49, 0xe0, 0xf4, 0xa3, 0xfc, 0x7c, 0xec, 0x8e, 0xdc, 0xb4, 0xca, 0x77, 0x1f,
		0xf7, 0x3d, 0x36, 0x72, 0x84, 0x7b, 0xcb, 0x52, 0xa9, 0x8a, 0xcd, 0x70, 0xdb, 0xad, 0x2e, 0xad,
		0x73, 0x97, 0xfd, 0xd2, 0x56, 0x2b, 0x07, 0xd5, 0x83, 0xbd, 0xfd, 0xca, 0xc1, 0x2e, 0xd6, 0x58,
		0x4a, 0x80, 0x4e, 0xff, 0xb7, 0x5d, 0x02, 0x75, 0xe7, 0x07, 0x75, 0x47, 0xd8, 0x88, 0x05, 0x8c,
		0xa7, 0x79, 0x18, 0x37, 0xcf, 0xbc, 0x4b, 0xbf, 0x1b, 0xe8, 0x1b, 0xe8, 0x1b, 0xe8, 0x1b, 0xe8,
		0x1b, 0xe8, 0x1b, 0xe8, 0x1b, 0xe8, 0x1b, 0xe8, 0x1b, 0xe8, 0x1b, 0xe8, 0x1b, 0xe8, 0x7b, 0x8e,
		0x8d, 0x32, 0x41, 0xde, 0xe9, 0xd5, 0xc0, 0x01, 0x75, 0x03, 0x75, 0x03, 0x75, 0xeb, 0x84, 0xba,
		0xdd, 0xb1, 0x95, 0xba, 0x03, 0x24, 0xa7, 0xae, 0x07, 0x29, 0xfe, 0xce, 0xd9, 0x2b, 0x20, 0x0f,
		0xbc, 0x57, 0x5a, 0xf9, 0x66, 0xd6, 0x74, 0x30, 0xcb, 0x56, 0x70, 0x99, 0xb7, 0x80, 0x93, 0xd6,
		0xb1, 0xb7, 0x94, 0xfc, 0xa5, 0xca, 0xec, 0xbf, 0xee, 0x7c, 0xdd, 0xb6, 0x2a, 0x97, 0x19, 0x74,
		0x40, 0xbb, 0xcc, 0x62, 0x1d, 0x64, 0x74, 0x3c, 0x93, 0xd8, 0xb2, 0xf7, 0xc9, 0xe5, 0xc8, 0xa2,
		0xe5, 0xd7, 0x25, 0xe5, 0x16, 0x5a, 0xd9, 0xc6, 0x9d, 0x3d, 0xc4, 0x9d, 0x27, 0xe2, 0x0e, 0x7a,
		0xfa, 0x29, 0xea, 0xe9, 0x57, 0x7a, 0x57, 0x8e, 0xa2, 0xc2, 0xc7, 0x69, 0x98, 0x28, 0x5f, 0xae,
		0x45, 0x8f, 0xf8, 0x9f, 0x88, 0xcb, 0xeb, 0x71, 0x19, 0xde, 0x4a, 0xd6, 0x5b, 0xe9, 0x67, 0x2d,
		0x68, 0x49, 0xd0, 0x92, 0xd6, 0x3f, 0x66, 0xc8, 0x84, 0x25, 0x9c, 0x51, 0xfa, 0x62, 0xd2, 0xfc,
		0x17, 0x43, 0x4d, 0x82, 0x9a, 0x04, 0x35, 0xa9, 0x80, 0x6a, 0x92, 0x70, 0x46, 0x71, 0x23, 0x2e,
		0x88, 0x49, 0xe9, 0xbe, 0xd7, 0xd4, 0xcf, 0xc6, 0x1f, 0xbe, 0xdd, 0xfd, 0x0c, 0x7e, 0x75, 0x36,
		0x67, 0xe5, 0xd9, 0xbd, 0xed, 0xc4, 0xf0, 0x2c, 0xcf, 0xce, 0x93, 0x87, 0x64, 0x7c, 0x86, 0x9e,
		0x3c, 0x47, 0xd6, 0x39, 0xeb, 0xc2, 0x67, 0xb3, 0x3e, 0x6f, 0xcd, 0x48, 0x93, 0x59, 0x75, 0x01,
		0xe7, 0x4e, 0x9e, 0x0b, 0x64, 0x7d, 0xd6, 0x5e, 0x04, 0x5f, 0xd0, 0xa4, 0xb1, 0x7f, 0x51, 0x55,
		0xc9, 0x6b, 0x76, 0x67, 0xa5, 0x7e, 0x8f, 0x3e, 0x27, 0xa2, 0xe4, 0xb2, 0x0e, 0xf1, 0x50, 0xde,
		0xa8, 0x7c, 0x7f, 0xff, 0x1f, 0xef, 0xff, 0x0b, 0x3a, 0x03, 0x74, 0x06, 0xd9, 0x3a, 0x03, 0xda,
		0xb3, 0xbf, 0xa4, 0x07, 0xe8, 0xc3, 0x96, 0x96, 0xa5, 0xe4, 0xdb, 0x59, 0xd3, 0x62, 0x65, 0x3d,
		0x60, 0x37, 0xe8, 0x94, 0x97, 0x52, 0xcd, 0x51, 0xba, 0xb5, 0x46, 0x29, 0xa9, 0x42, 0xe8, 0xa0,
		0x46, 0x4e, 0xed, 0x41, 0x07, 0x35, 0x35, 0x2a, 0xce, 0xa2, 0x2f, 0x2f, 0x73, 0x86, 0x01, 0x1b,
		0xa6, 0xe1, 0x73, 0x73, 0x44, 0x96, 0x82, 0xae, 0x10, 0x21, 0xb0, 0x38, 0x6c, 0x6f, 0x25, 0x0d,
		0xe0, 0x67, 0x6e, 0xa7, 0x61, 0x48, 0x9d, 0xce, 0x94, 0x4a, 0x2d, 0xa2, 0x4e, 0x7f, 0x1d, 0xb1,
		0x96, 0x94, 0x15, 0x04, 0x54, 0x04, 0x54, 0x0d, 0x03, 0x2a, 0x5a, 0x52, 0xe2, 0x9c, 0x2d, 0x9d,
		0x5f, 0x8e, 0x73, 0x36, 0xc9, 0x81, 0x23, 0x5d, 0x21, 0x02, 0x2d, 0x29, 0x09, 0xe8, 0x0f, 0xe8,
		0xc8, 0xb8, 0xd9, 0x2f, 0x45, 0x47, 0x46, 0xe4, 0x19, 0xe4, 0x19, 0xe4, 0x99, 0x8d, 0xbc, 0x96,
		0x7e, 0x47, 0x46, 0x34, 0x24, 0x44, 0xf8, 0x45, 0xf8, 0x45, 0xf8, 0xcd, 0x65, 0xf8, 0x45, 0x4b,
		0x94, 0x34, 0x9d, 0x12, 0x2d, 0x51, 0x9e, 0xe5, 0x7b, 0x68, 0x89, 0xf2, 0xc4, 0xd2, 0xa2, 0x25,
		0x8a, 0xe4, 0x00, 0x9d, 0xfe, 0x6f, 0xbb, 0x44, 0x3f, 0xbe, 0x67, 0x25, 0x1e, 0xf4, 0xe3, 0x03,
		0xf8, 0x04, 0xf8, 0x04, 0xf8, 0x04, 0xf8, 0x04, 0xf8, 0x04, 0xf8, 0x04, 0xf8, 0x04, 0xf8, 0x04,
		0xf8, 0x5c, 0x03, 0x9f, 0x68, 0x47, 0x07, 0xd0, 0x09, 0xd0, 0x09, 0xd0, 0x99, 0xa6, 0xd7, 0xa2,
		0x1d, 0x5d, 0xda, 0xd9, 0x16, 0xed, 0xe8, 0x7e, 0xfa, 0x00, 0xb4, 0xa3, 0x7b, 0xde, 0x3a, 0xa0,
		0x1d, 0x9d, 0x6a, 0xf0, 0x97, 0x11, 0x8d, 0x41, 0x3b, 0x3a, 0x35, 0x71, 0x07, 0x0d, 0xbe, 0xd0,
		0x8e, 0x4e, 0xb3, 0xb8, 0x0c, 0x6f, 0x45, 0x3b, 0x3a, 0x48, 0x29, 0x69, 0x4a, 0x29, 0xe8, 0xc6,
		0x06, 0x31, 0x05, 0x62, 0x0a, 0xc4, 0x14, 0x74, 0x63, 0x43, 0x37, 0x36, 0x74, 0x63, 0x5b, 0x37,
		0x1c, 0xdd, 0xd8, 0x36, 0xf2, 0x59, 0x74, 0x63, 0x7b, 0xa1, 0x0b, 0xa0, 0x1b, 0x1b, 0x21, 0xa0,
		0x9f, 0xed, 0x6f, 0x45, 0x37, 0x36, 0x68, 0x72, 0x0f, 0x35, 0x39, 0x74, 0x63, 0x23, 0x48, 0xb3,
		0xd1, 0x8c, 0x2c, 0xa5, 0x66, 0x64, 0xd3, 0x86, 0x31, 0xaa, 0x1a, 0xe7, 0xbc, 0x91, 0xb8, 0x7c,
		0x11, 0x0d, 0xde, 0x98, 0x02, 0x9b, 0x4d, 0x37, 0x14, 0x35, 0x21, 0x36, 0x6b, 0x0c, 0x12, 0x41,
		0xd8, 0xba, 0xc7, 0x22, 0x46, 0xbb, 0x61, 0x9a, 0x8f, 0x90, 0xd0, 0xd2, 0x6f, 0x2a, 0x7f, 0xac,
		0x56, 0xf7, 0xf6, 0xab, 0xd5, 0xed, 0xfd, 0x9d, 0xfd, 0xed, 0x83, 0xdd, 0xdd, 0xf2, 0x5e, 0x79,
		0x03, 0xd0, 0x62, 0xb6, 0x83, 0x01, 0x0b, 0xd8, 0xe0, 0x53, 0xf4, 0xde, 0xf8, 0xc4, 0xf3, 0xd2,
		0xf8, 0x55, 0xe7, 0x21, 0x0b, 0x36, 0xc2, 0x1b, 0xaf, 0x5d, 0xfe, 0x94, 0x76, 0xad, 0xca, 0xdd,
		0x6a, 0x6e, 0xd4, 0x68, 0x2a, 0x98, 0xf4, 0x05, 0x9f, 0x25, 0xfc, 0xd6, 0xd4, 0x8e, 0xc6, 0xcc,
		0x0c, 0xfb, 0x6c, 0xf6, 0x70, 0xbb, 0x96, 0x3c, 0xeb, 0x8d, 0x9c, 0x1d, 0xfd, 0xb2, 0xbf, 0xf1,
		0xc2, 0xc5, 0x37, 0xd9, 0x9d, 0x08, 0x1c, 0x6b, 0x12, 0x7d, 0xcc, 0x2b, 0xef, 0x75, 0xaa, 0x8a,
		0xf9, 0xed, 0x9a, 0xbd, 0x1e, 0x5f, 0x6c, 0xe0, 0x68, 0x73, 0x70, 0x96, 0x74, 0x39, 0x73, 0x07,
		0x8c, 0x0b, 0x77, 0xe8, 0xb2, 0xc0, 0xf8, 0xc5, 0x78, 0xeb, 0xf7, 0xad, 0xb1, 0xef, 0xc5, 0x7a,
		0x4e, 0x78, 0xd8, 0x6c, 0x1f, 0xd5, 0x9a, 0x76, 0xed, 0xf3, 0xe7, 0x4e, 0xfd, 0x73, 0xad, 0x57,
		0x7f, 0xbb, 0x89, 0xa7, 0xa4, 0x24, 0x43, 0x2e, 0xcb, 0x8e, 0xf1, 0x2b, 0xdc, 0x30, 0xeb, 0xa6,
		0x2d, 0x32, 0xae, 0x88, 0x8a, 0xaf, 0x7a, 0xc7, 0x4a, 0x1a, 0xc6, 0x1d, 0xa7, 0xd8, 0x4b, 0x2a,
		0x71, 0xb1, 0x06, 0xef, 0x7b, 0x93, 0x01, 0x33, 0x92, 0x48, 0x63, 0x04, 0xfe, 0x44, 0x30, 0x63,
		0xec, 0x04, 0xce, 0x0d, 0x13, 0x2c, 0x08, 0x0d, 0x9f, 0x7b, 0xf7, 0x46, 0xb4, 0x8e, 0x86, 0xb8,
		0x66, 0x17, 0x7c, 0x1e, 0xad, 0x0c, 0x37, 0x34, 0x42, 0x26, 0x0c, 0xe1, 0x1b, 0x69, 0x84, 0x29,
		0x23, 0x65, 0x1d, 0x7c, 0xd9, 0x09, 0xd3, 0x6d, 0x94, 0x95, 0x89, 0xe8, 0xbd, 0xe2, 0x93, 0x29,
		0x2f, 0x8a, 0x5e, 0x18, 0xef, 0x4d, 0xb6, 0xd4, 0xe4, 0xa5, 0x79, 0x64, 0x43, 0xf0, 0x20, 0x1f,
		0x34, 0xbc, 0x6c, 0xb9, 0x9f, 0xff, 0xba, 0x5f, 0xf0, 0xe2, 0xcc, 0x19, 0xd8, 0x78, 0xd9, 0xeb,
		0x4a, 0x62, 0x52, 0xfc, 0xb7, 0x5f, 0xb8, 0x4c, 0xaf, 0x3b, 0x92, 0x7c, 0xf5, 0xd1, 0xe3, 0x26,
		0x47, 0x8c, 0xcb, 0x47, 0x89, 0x9c, 0x89, 0x68, 0x6d, 0x5f, 0x11, 0x95, 0x36, 0x8d, 0x95, 0xa9,
		0x9d, 0x0d, 0xa6, 0x16, 0x0e, 0x1f, 0x9e, 0xf5, 0xcd, 0xdf, 0x0d, 0x31, 0x60, 0xf9, 0xea, 0x43,
		0xba, 0x14, 0x9a, 0xeb, 0x6e, 0xd2, 0x4c, 0xf7, 0x91, 0xe6, 0xb9, 0xf1, 0x46, 0x23, 0x10, 0x2e,
		0xfc, 0x70, 0x3c, 0xbc, 0xad, 0xbc, 0x3e, 0x60, 0xcc, 0xfe, 0xfe, 0xeb, 0x42, 0x46, 0x59, 0xb3,
		0x90, 0xf1, 0xaa, 0x0f, 0x5b, 0x8c, 0x88, 0x31, 0x7b, 0x35, 0xc4, 0x02, 0xc6, 0x6b, 0x9b, 0xc9,
		0x9a, 0x4e, 0xc0, 0x9c, 0xf0, 0xf5, 0xcb, 0x35, 0xf7, 0x99, 0xe9, 0xaf, 0x79, 0xad, 0x74, 0xb6,
		0x51, 0x47, 0xe8, 0x8d, 0x4b, 0x7b, 0xd2, 0x28, 0xe5, 0x49, 0x65, 0xf3, 0x64, 0xc9, 0x91, 0xd3,
		0x19, 0x86, 0x90, 0x29, 0x4b, 0xde, 0x60, 0x73, 0xa9, 0x91, 0x7c, 0x37, 0xed, 0xe0, 0x1c, 0xef,
		0x9a, 0xf4, 0x68, 0x76, 0xfc, 0xdb, 0x88, 0x35, 0x67, 0x27, 0x3a, 0xed, 0x62, 0xe3, 0x2d, 0x9a,
		0x85, 0x9a, 0x60, 0xe4, 0xa2, 0x39, 0xfb, 0xa6, 0x5b, 0x78, 0x73, 0x4d, 0xc0, 0xa0, 0xd4, 0x9c,
		0xbd, 0x3f, 0xdf, 0x09, 0x29, 0x57, 0xdb, 0xce, 0x7e, 0x6f, 0xba, 0xc5, 0xb6, 0xe5, 0x82, 0x16,
		0xdb, 0xa6, 0x16, 0x0e, 0xb2, 0x0a, 0x0b, 0x99, 0x87, 0x87, 0xcc, 0xc3, 0x44, 0xd6, 0xe1, 0x22,
		0x9d, 0xb0, 0x91, 0x52, 0xf8, 0x48, 0x3d, 0x8c, 0x24, 0xbf, 0x70, 0x71, 0x80, 0x90, 0xbe, 0x6f,
		0x25, 0x77, 0xe8, 0x16, 0xcf, 0x48, 0x79, 0xed, 0xd3, 0xad, 0xe9, 0xcf, 0x2c, 0xdc, 0x64, 0x19,
		0x76, 0xa4, 0x84, 0x9f, 0xac, 0xc3, 0x90, 0xb4, 0x70, 0x24, 0x2d, 0x2c, 0xc9, 0x0a, 0x4f, 0xe9,
		0x86, 0xa9, 0x94, 0xc3, 0xd5, 0xe6, 0xf2, 0xe3, 0x8b, 0xd4, 0x34, 0x2b, 0x22, 0x2c, 0x56, 0x66,
		0xd1, 0xc6, 0xc8, 0xe8, 0xfe, 0xc0, 0xc3, 0xb7, 0xa4, 0x5d, 0x85, 0x7b, 0xe6, 0xf7, 0x0a, 0x1e,
		0xbe, 0xfd, 0xfd, 0x0c, 0x1f, 0x91, 0xed, 0x3d, 0x83, 0xec, 0x57, 0x23, 0xf9, 0x20, 0x32, 0xee,
		0x1d, 0x24, 0x0f, 0x93, 0x74, 0xff, 0x20, 0x79, 0x9e, 0xec, 0xda, 0xf3, 0x85, 0xaf, 0xcb, 0xaa,
		0x41, 0xcf, 0x28, 0x14, 0x3f, 0xee, 0x2a, 0x12, 0xee, 0x27, 0xac, 0xb9, 0x8a, 0xac, 0x7b, 0x0a,
		0x45, 0xf4, 0x99, 0x37, 0x7a, 0xfe, 0xf6, 0xcb, 0x37, 0x1a, 0xed, 0x20, 0x09, 0x09, 0x75, 0xe0,
		0x0b, 0xc1, 0x06, 0xd6, 0x3f, 0x26, 0xce, 0x40, 0x42, 0x56, 0xcd, 0xe2, 0xc2, 0xc3, 0x82, 0xf9,
		0x64, 0x7c, 0xf1, 0x21, 0x79, 0xd0, 0x93, 0xed, 0x77, 0x66, 0x0d, 0x74, 0x1e, 0x69, 0xa6, 0x73,
		0x71, 0xb1, 0xf5, 0xfe, 0xef, 0x9d, 0xef, 0x2f, 0xff, 0x8b, 0xa6, 0x6e, 0x3b, 0xa1, 0x58, 0x37,
		0x90, 0xb2, 0x9a, 0x7f, 0x9f, 0xfc, 0xfe, 0xcc, 0xe7, 0xe0, 0xa7, 0xbf, 0x70, 0xb4, 0xe4, 0xac,
		0x8c, 0x16, 0x28, 0xfb, 0xfa, 0xb5, 0x29, 0x8d, 0x2f, 0xc5, 0xa7, 0xd4, 0xf1, 0x3f, 0x53, 0x19,
		0x93, 0x9f, 0xde, 0x22, 0xa5, 0xd1, 0xd8, 0x23, 0x03, 0x69, 0x30, 0x3b, 0x49, 0xb0, 0xe8, 0xed,
		0x3d, 0x70, 0xe2, 0x90, 0x3c, 0x00, 0x27, 0x0e, 0x86, 0x16, 0xed, 0x3d, 0xd2, 0x1b, 0xd7, 0xbf,
		0x86, 0x64, 0xd3, 0x6c, 0xd1, 0xbf, 0x5e, 0x81, 0xb8, 0x14, 0xbc, 0xf2, 0x14, 0xee, 0xb9, 0x60,
		0xc1, 0xd0, 0xe9, 0xb3, 0x30, 0x83, 0x70, 0xbf, 0xf8, 0xdd, 0x38, 0x60, 0x46, 0xb8, 0x47, 0xb8,
		0x27, 0x1b, 0xee, 0xd3, 0x3f, 0x60, 0x9e, 0x6f, 0xfd, 0x0c, 0xcf, 0x97, 0x93, 0x47, 0x64, 0x73,
		0xbc, 0x5c, 0xc6, 0xf1, 0x32, 0x8e, 0x97, 0x69, 0x05, 0x25, 0x59, 0xc1, 0x29, 0x1b, 0xe5, 0x28,
		0x6d, 0x9d, 0x27, 0xed, 0xa0, 0x95, 0xfc, 0xe2, 0x94, 0x8b, 0xed, 0x9e, 0xdc, 0x54, 0xa9, 0x16,
		0xdf, 0x49, 0x0a, 0x63, 0x99, 0x87, 0x33, 0x19, 0x61, 0x4d, 0x6a, 0x78, 0x93, 0x15, 0xe6, 0xa4,
		0x87, 0x3b, 0xe9, 0x61, 0x4f, 0x76, 0xf8, 0xcb, 0x26, 0x0c, 0x66, 0x14, 0x0e, 0x33, 0x0f, 0x8b,
		0xc9, 0x03, 0x9c, 0x89, 0xb8, 0x8e, 0xa8, 0x70, 0x3f, 0x96, 0x70, 0xa7, 0xbd, 0x3a, 0x33, 0x77,
		0xea, 0xe4, 0x76, 0xc2, 0x23, 0x0f, 0xcf, 0xd8, 0xdb, 0xb2, 0x29, 0x37, 0x94, 0x1e, 0x50, 0x65,
		0x06, 0x56, 0x25, 0x01, 0x56, 0x76, 0xa0, 0x55, 0x16, 0x70, 0x95, 0x05, 0x5e, 0x55, 0x01, 0x38,
		0xdb, 0x40, 0x9c, 0x71, 0x40, 0x4e, 0x5e, 0x5a, 0x4f, 0x46, 0xa0, 0x5c, 0xd9, 0x75, 0x99, 0x75,
		0x4b, 0x7c, 0x12, 0x6c, 0x7e, 0xd4, 0x7a, 0x85, 0x32, 0x3e, 0x39, 0x5e, 0x7b, 0x9e, 0xb4, 0x93,
		0x64, 0x79, 0x1b, 0x29, 0xcb, 0x86, 0xba, 0xd7, 0xee, 0x80, 0xcd, 0x8f, 0x72, 0xe5, 0x21, 0x8e,
		0x95, 0xa7, 0x02, 0x6a, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x6a, 0x3c, 0xd8, 0x75, 0x57,
		0xbe, 0xef, 0x31, 0x87, 0xcb, 0xc4, 0x1a, 0x65, 0xad, 0x97, 0x28, 0x85, 0xa6, 0x8f, 0x2f, 0x7e,
		0x66, 0xc0, 0x86, 0x2c, 0x60, 0xbc, 0x9f, 0xfd, 0x4d, 0x87, 0xf9, 0x97, 0x9c, 0xb0, 0xb8, 0xe2,
		0x89, 0x9d, 0x93, 0xa3, 0xbd, 0x8f, 0x7b, 0xdb, 0x86, 0x65, 0xfc, 0xea, 0x0e, 0x5c, 0x3e, 0x32,
		0x7a, 0x81, 0xc3, 0x43, 0x57, 0x58, 0x6d, 0xee, 0xdd, 0x1b, 0xb3, 0x9e, 0xa2, 0xa1, 0xe1, 0x72,
		0xa3, 0xdd, 0x3d, 0x39, 0x91, 0x14, 0x3f, 0x55, 0x24, 0x8b, 0xc7, 0x92, 0xc6, 0xc2, 0x03, 0x3e,
		0xc8, 0xb5, 0x41, 0x55, 0xfe, 0x78, 0x34, 0x8f, 0xbc, 0xd0, 0x45, 0xa4, 0x19, 0xfa, 0xfd, 0x4d,
		0x3e, 0x9e, 0x72, 0x09, 0x16, 0x08, 0x16, 0x98, 0xd5, 0xeb, 0x72, 0x07, 0xf2, 0xb8, 0x9f, 0x3b,
		0x00, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x5b, 0x8b, 0x8d, 0xf3, 0xfa, 0x2b,
		0x2b, 0xf3, 0x28, 0x69, 0x40, 0x62, 0x06, 0xb8, 0x90, 0x02, 0x2e, 0x6e, 0x98, 0x08, 0xdc, 0xbe,
		0x3c, 0x80, 0x31, 0x7b, 0x1e, 0x40, 0x06, 0x40, 0x06, 0x40, 0x06, 0x40, 0x06, 0x40, 0xc6, 0xc3,
		0x5d, 0x17, 0x8e, 0x87, 0x96, 0x94, 0x20, 0xb9, 0x1c, 0x28, 0xf7, 0x24, 0x3c, 0x4a, 0x4e, 0xc7,
		0x99, 0xf9, 0x97, 0x44, 0x1d, 0x56, 0x66, 0x07, 0x9a, 0xe4, 0xa1, 0x92, 0x3b, 0xd1, 0x24, 0xcf,
		0x55, 0xd5, 0x5d, 0x64, 0xb1, 0x51, 0x64, 0x77, 0x19, 0x91, 0x14, 0x6b, 0x56, 0x5d, 0x4a, 0x62,
		0xa7, 0x9a, 0x35, 0x97, 0xda, 0xdb, 0xdd, 0xdd, 0xd9, 0x85, 0x5b, 0xc9, 0x72, 0x2b, 0x48, 0xe0,
		0x60, 0xa9, 0x60, 0xa9, 0x3f, 0x61, 0xa9, 0x13, 0x4f, 0xb8, 0xd3, 0xbe, 0x87, 0xce, 0xe0, 0xff,
		0x9c, 0x3e, 0xe3, 0xfd, 0x7b, 0x6b, 0x1c, 0xb8, 0x37, 0x4e, 0x70, 0x2f, 0x91, 0xbb, 0xfe, 0xc8,
		0x8a, 0x8c, 0x1d, 0xf4, 0x98, 0x0d, 0x9d, 0x89, 0x27, 0xa4, 0xe0, 0x27, 0x33, 0xa2, 0x25, 0xd9,
		0x52, 0x83, 0x4b, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00, 0xf0, 0x60, 0xd7,
		0xa1, 0xae, 0x0c, 0xd0, 0x2d, 0x4f, 0xd0, 0x6d, 0xde, 0x66, 0x4c, 0xee, 0xad, 0xb9, 0x95, 0xa7,
		0x02, 0x6b, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x6b, 0x3c, 0xd8, 0x75, 0xd3, 0x0e, 0x5f,
		0xe2, 0x3e, 0xdd, 0xf6, 0x64, 0x3f, 0xc5, 0x1b, 0x12, 0xc4, 0x45, 0xb3, 0x31, 0xfb, 0x68, 0x9f,
		0x9c, 0x50, 0xe2, 0x4e, 0x9f, 0xbf, 0xd8, 0x76, 0xf7, 0xec, 0xc4, 0x6e, 0xd5, 0x7b, 0xbf, 0xb7,
		0x3b, 0xbf, 0xd9, 0xbd, 0x3f, 0xcf, 0xea, 0xb2, 0x76, 0x7c, 0xac, 0xe1, 0x86, 0xd2, 0x4e, 0x59,
		0x0c, 0xa9, 0x27, 0x2d, 0x2b, 0xaf, 0xf8, 0x53, 0xa7, 0x5d, 0x3b, 0x3e, 0xaa, 0x75, 0x7b, 0xf3,
		0xf7, 0x6c, 0xe6, 0xf1, 0x24, 0x40, 0xd1, 0xcb, 0x6d, 0xb5, 0x5b, 0x36, 0x5e, 0x70, 0x86, 0x2f,
		0xf8, 0xac, 0xdd, 0x68, 0xf5, 0xec, 0x5e, 0xdb, 0x9e, 0x7e, 0x23, 0xff, 0x0d, 0x4b, 0x79, 0xd2,
		0x25, 0x32, 0x3e, 0xa8, 0xab, 0xbe, 0xd4, 0x75, 0xec, 0x84, 0xe1, 0xf4, 0x48, 0x50, 0x12, 0x6b,
		0x9d, 0x3f, 0x10, 0x84, 0x15, 0x84, 0x15, 0x84, 0x15, 0x84, 0x15, 0x84, 0xf5, 0xc1, 0xae, 0x83,
		0x38, 0x0e, 0x84, 0x91, 0x2b, 0x84, 0x11, 0xb8, 0x7e, 0xe0, 0x0a, 0x89, 0x35, 0x0c, 0xc9, 0x13,
		0x81, 0x31, 0x80, 0x31, 0x80, 0x31, 0x80, 0x31, 0x80, 0x31, 0x1e, 0xec, 0xba, 0x89, 0xcb, 0xc5,
		0x47, 0x89, 0x08, 0x63, 0x17, 0xb5, 0xf7, 0xaf, 0xff, 0x60, 0xa8, 0xbd, 0x97, 0x69, 0x00, 0x6a,
		0xef, 0xb3, 0x76, 0xa9, 0xca, 0x2e, 0x2a, 0xef, 0xa5, 0x39, 0x15, 0x2a, 0xef, 0xc1, 0x50, 0x73,
		0xc1, 0x50, 0xb5, 0x6a, 0xd7, 0x2e, 0x69, 0xc1, 0x55, 0x0c, 0xc7, 0x5c, 0xcc, 0xff, 0x5a, 0x7c,
		0x9b, 0xea, 0xc4, 0xcc, 0xec, 0x57, 0x3e, 0x83, 0x55, 0x37, 0x19, 0x77, 0xae, 0x3c, 0x66, 0x5d,
		0x0d, 0x07, 0xd9, 0x8f, 0x18, 0x59, 0x7a, 0x16, 0xc6, 0x8c, 0xa8, 0x52, 0x32, 0x96, 0x15, 0x8c,
		0xec, 0x56, 0xc2, 0xc0, 0x8c, 0x91, 0x0c, 0xe5, 0x89, 0x68, 0xdd, 0x90, 0xb1, 0x0c, 0x29, 0x03,
		0x46, 0x32, 0x9e, 0xbf, 0xb4, 0xb6, 0x2d, 0x33, 0x9d, 0xc3, 0x24, 0x29, 0x50, 0x4a, 0x0b, 0x98,
		0x32, 0x03, 0xa7, 0xfc, 0x00, 0x2a, 0x3b, 0x90, 0x2a, 0x0b, 0xa8, 0xca, 0x02, 0xab, 0x92, 0x00,
		0x2b, 0x87, 0x7d, 0x66, 0xcd, 0x0d, 0xb3, 0x0e, 0xbc, 0x0f, 0x10, 0xea, 0x40, 0x7e, 0xa1, 0xf0,
		0xfc, 0xc1, 0x92, 0x5c, 0x50, 0xce, 0xa9, 0x9c, 0xf4, 0xd0, 0xac, 0x22, 0x44, 0xab, 0x0b, 0xd5,
		0xaa, 0x42, 0xb6, 0xf2, 0xd0, 0xad, 0x3c, 0x84, 0x2b, 0x0d, 0xe5, 0x72, 0x42, 0xba, 0xa4, 0xd0,
		0x9e, 0xbc, 0x49, 0x69, 0xe7, 0x7b, 0x6b, 0xfb, 0x55, 0x5e, 0x2d, 0xd1, 0x1a, 0x22, 0x2e, 0xe7,
		0x6a, 0x09, 0x25, 0x2b, 0xb8, 0xc9, 0x73, 0x95, 0x29, 0xb9, 0xf2, 0x76, 0x22, 0xca, 0xdb, 0x5f,
		0xf2, 0x3c, 0x2a, 0x8a, 0xef, 0x42, 0x83, 0xcc, 0x54, 0xfc, 0xcd, 0xde, 0x49, 0xb2, 0x2c, 0x7d,
		0x0b, 0x85, 0x23, 0x24, 0x96, 0xd6, 0x4f, 0x1f, 0x97, 0x33, 0xc5, 0xa3, 0x02, 0xc5, 0x03, 0x8a,
		0x07, 0x14, 0x0f, 0x28, 0x1e, 0x50, 0x3c, 0xa0, 0x78, 0x40, 0xf1, 0x80, 0xe2, 0x01, 0xc5, 0x03,
		0x8a, 0x47, 0x91, 0x15, 0x0f, 0xa0, 0x0b, 0x10, 0xf2, 0x1f, 0x13, 0xf2, 0x29, 0x0f, 0x44, 0xa1,
		0x5f, 0xf6, 0x5e, 0x57, 0xb8, 0x42, 0xbf, 0xcc, 0x4b, 0xcf, 0x66, 0xba, 0x49, 0x30, 0xe9, 0x0b,
		0x3e, 0x6f, 0xd4, 0x32, 0x35, 0xbf, 0x31, 0xb3, 0xde, 0x3e, 0x9b, 0xd9, 0x6c, 0xb7, 0x63, 0x9b,
		0xed, 0x5a, 0xc0, 0x1c, 0xbb, 0x31, 0x37, 0xd1, 0xae, 0xc7, 0x26, 0x7e, 0xca, 0x2a, 0x79, 0xeb,
		0x51, 0x8e, 0xe8, 0x4a, 0x28, 0x43, 0x74, 0xb3, 0x2e, 0x3f, 0xdc, 0x46, 0xf9, 0xe1, 0xb3, 0x08,
		0x4a, 0xe6, 0x17, 0x28, 0x51, 0x81, 0x98, 0x15, 0xc7, 0xc8, 0xfa, 0x82, 0xa4, 0x5e, 0xd9, 0x34,
		0x73, 0xda, 0x90, 0xec, 0x1a, 0x8f, 0x39, 0xc3, 0x6c, 0x3b, 0x02, 0x26, 0xb4, 0x60, 0x3f, 0xc3,
		0x67, 0x9c, 0xcd, 0x00, 0xc1, 0xd6, 0xd6, 0xec, 0x14, 0xa6, 0xe4, 0x16, 0x3b, 0xed, 0x25, 0xe3,
		0x2b, 0xa3, 0xc5, 0xcd, 0x3e, 0x03, 0xae, 0x3c, 0x0e, 0xb5, 0xf8, 0x14, 0x92, 0xa1, 0x3b, 0x44,
		0x22, 0xd4, 0x30, 0x11, 0xba, 0x43, 0x24, 0xc1, 0xe9, 0x8b, 0x41, 0x25, 0x3e, 0xc1, 0x30, 0x29,
		0x2d, 0x5c, 0xca, 0x0c, 0x9b, 0xd2, 0xc3, 0xa7, 0xec, 0x30, 0xaa, 0x2c, 0x9c, 0x2a, 0x0b, 0xab,
		0x2a, 0xc2, 0x6b, 0xb6, 0x61, 0x36, 0xe3, 0x70, 0x2b, 0x2d, 0xec, 0xae, 0x63, 0x54, 0xf9, 0xe7,
		0xd2, 0x8b, 0x47, 0xe3, 0x64, 0x5a, 0xb7, 0x20, 0xad, 0x2c, 0x58, 0xab, 0x0a, 0xda, 0xca, 0x83,
		0xb7, 0xf2, 0x20, 0xae, 0x32, 0x98, 0xcb, 0x09, 0xea, 0x92, 0x82, 0xbb, 0x3c, 0x81, 0x49, 0xa1,
		0xe0, 0xa4, 0x42, 0x80, 0x7a, 0x52, 0x90, 0x2a, 0xc5, 0x6e, 0x7a, 0xb8, 0x74, 0x86, 0xf4, 0xe0,
		0x07, 0xb3, 0x3f, 0xc7, 0x67, 0x3c, 0xb8, 0x29, 0x90, 0xc2, 0x73, 0x8b, 0x70, 0x53, 0x40, 0x02,
		0x33, 0x09, 0x27, 0x57, 0x0a, 0x01, 0xda, 0xca, 0xd3, 0x81, 0xd1, 0x80, 0xd1, 0x80, 0xd1, 0x80,
		0xd1, 0x80, 0xd1, 0x80, 0xd1, 0x94, 0x60, 0xb4, 0xaf, 0x0b, 0x8c, 0xf6, 0x4b, 0x7f, 0x12, 0x04,
		0x8c, 0x8b, 0x77, 0xef, 0x4b, 0x5b, 0x5b, 0x8b, 0x7a, 0xa0, 0xcb, 0xd9, 0x5f, 0x59, 0xce, 0x5b,
		0xe1, 0x23, 0x3f, 0x4b, 0x7e, 0xf3, 0x80, 0xdd, 0x01, 0xee, 0x01, 0xee, 0x11, 0x78, 0x42, 0xd6,
		0x7a, 0x62, 0xfd, 0x4e, 0xc8, 0x99, 0x51, 0x27, 0x5f, 0x42, 0xf7, 0xfb, 0x16, 0xbb, 0x13, 0x87,
		0x82, 0x79, 0xec, 0x86, 0x89, 0xe0, 0xde, 0xf2, 0xb9, 0xd5, 0xbf, 0x8e, 0xdb, 0x2f, 0x2b, 0x91,
		0xd5, 0xe3, 0x96, 0xaa, 0x0a, 0x74, 0x75, 0xdd, 0x25, 0xf5, 0x4b, 0x94, 0x62, 0x67, 0x52, 0x24,
		0xbb, 0x52, 0x16, 0x82, 0xeb, 0xd1, 0x4f, 0xaf, 0x17, 0xae, 0x47, 0x6f, 0xcc, 0xa2, 0x2b, 0x38,
		0x86, 0xd6, 0x86, 0x2d, 0xe3, 0x18, 0x1a, 0xc7, 0xd0, 0x3f, 0x7b, 0x61, 0x38, 0x86, 0xce, 0x2e,
		0x28, 0x43, 0xe2, 0xd4, 0x38, 0x58, 0xab, 0x0a, 0xda, 0xca, 0x83, 0xb7, 0xf2, 0x20, 0xae, 0x32,
		0x98, 0xcb, 0x53, 0x1b, 0x0c, 0x48, 0x9c, 0xd9, 0x22, 0x62, 0x1c, 0x43, 0x1b, 0x38, 0x25, 0x4d,
		0x87, 0xc8, 0xe1, 0x94, 0x14, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x42, 0x39,
		0x84, 0xd0, 0xfa, 0x94, 0x14, 0x6a, 0xcc, 0x8f, 0xc3, 0x15, 0x4e, 0x30, 0xd8, 0x10, 0xfd, 0x64,
		0xa4, 0x39, 0x5e, 0xe1, 0xfa, 0xc9, 0xc8, 0xb8, 0x41, 0x6d, 0x6c, 0xdc, 0x52, 0x26, 0xf9, 0xae,
		0xc3, 0x86, 0x45, 0xbe, 0x5e, 0xef, 0x85, 0x8e, 0x35, 0x74, 0x3d, 0xc1, 0x82, 0xec, 0xef, 0xd6,
		0x2f, 0x3d, 0x0b, 0x17, 0xeb, 0x55, 0x51, 0x36, 0x74, 0x99, 0xd1, 0x92, 0x76, 0xa1, 0xcb, 0xcc,
		0x8f, 0x5e, 0x0e, 0x2e, 0xd8, 0x13, 0x0c, 0x97, 0xd2, 0x95, 0x2f, 0x55, 0x95, 0x0d, 0x99, 0x87,
		0x51, 0x55, 0x2a, 0x17, 0xaa, 0x1b, 0xb2, 0x0e, 0xb3, 0xf9, 0xe0, 0xd4, 0xd2, 0x2a, 0x1c, 0x1c,
		0xcf, 0x93, 0x7f, 0x36, 0x11, 0x3d, 0x14, 0x47, 0x12, 0xba, 0x05, 0x68, 0xa5, 0x81, 0x5a, 0x55,
		0xc0, 0x56, 0x1e, 0xb8, 0x95, 0x07, 0x70, 0xd5, 0x81, 0x5c, 0x4e, 0x40, 0x97, 0x14, 0xd8, 0x93,
		0x97, 0x89, 0xe6, 0xef, 0xda, 0x2f, 0x21, 0x6e, 0x35, 0x01, 0xbc, 0x51, 0x70, 0x0c, 0x32, 0x3a,
		0xf5, 0x42, 0x8d, 0xc4, 0x7d, 0x8e, 0xa7, 0x17, 0x0b, 0xf7, 0x39, 0x36, 0x06, 0xd7, 0x15, 0xa8,
		0x1e, 0x50, 0x3d, 0xa0, 0x7a, 0x40, 0xf5, 0x80, 0xea, 0x01, 0xd5, 0x03, 0xaa, 0x07, 0x54, 0x0f,
		0xa8, 0x1e, 0x50, 0x3d, 0x8a, 0xae, 0x7a, 0x00, 0x5b, 0x80, 0x94, 0xff, 0x98, 0x94, 0xa3, 0x44,
		0x51, 0x96, 0xd7, 0x15, 0xae, 0x44, 0x31, 0xf3, 0x42, 0x34, 0x63, 0xe3, 0xfa, 0xc4, 0x66, 0xe8,
		0x9c, 0x4c, 0x2d, 0x2c, 0x70, 0x71, 0xe2, 0xcd, 0xd8, 0x0b, 0xb3, 0x2f, 0x4b, 0x8c, 0x9f, 0x82,
		0x82, 0x44, 0x55, 0xd4, 0x05, 0x05, 0x89, 0x5a, 0x52, 0x0f, 0x14, 0x24, 0xaa, 0xd4, 0x86, 0x50,
		0x90, 0xa8, 0x83, 0x02, 0x04, 0x69, 0x3e, 0x2f, 0x0a, 0x0f, 0xa4, 0x79, 0xad, 0xe8, 0xb3, 0x34,
		0x69, 0x5e, 0x04, 0xce, 0x70, 0xe8, 0xf6, 0x2d, 0xc6, 0x47, 0x2e, 0x67, 0x2c, 0x70, 0xf9, 0xc8,
		0xba, 0x61, 0x22, 0x70, 0xfb, 0xf2, 0x15, 0xfb, 0x1f, 0xd8, 0x02, 0x21, 0x5f, 0xb7, 0x70, 0xae,
		0x34, 0xac, 0xab, 0x0a, 0xef, 0xca, 0xc3, 0xbc, 0xf2, 0x70, 0xaf, 0x3a, 0xec, 0xcb, 0x09, 0xff,
		0x92, 0xd2, 0x40, 0xf2, 0x32, 0xd5, 0x09, 0xf9, 0x13, 0x97, 0x8b, 0x9d, 0x8a, 0x02, 0x1d, 0x5f,
		0x66, 0x5f, 0x85, 0x4e, 0xdc, 0x27, 0x5a, 0x46, 0x63, 0xec, 0xe5, 0x2f, 0xb9, 0x21, 0x29, 0xfe,
		0xa0, 0xa7, 0x2e, 0x97, 0x1e, 0x0b, 0x93, 0x87, 0x7f, 0x71, 0xbc, 0x09, 0x93, 0x97, 0xec, 0xd6,
		0x9e, 0x7f, 0x12, 0x38, 0x7d, 0xe1, 0xfa, 0xfc, 0xd8, 0x1d, 0xb9, 0x71, 0x1f, 0x74, 0x55, 0x86,
		0xb4, 0xd8, 0xc8, 0x11, 0xee, 0x2d, 0x9b, 0xb7, 0x09, 0x97, 0x6e, 0xc5, 0xf7, 0x0f, 0x0a, 0x5c,
		0xcf, 0xb9, 0x53, 0xef, 0x7a, 0xd5, 0xca, 0x41, 0xf5, 0x60, 0x6f, 0xbf, 0x72, 0xb0, 0x0b, 0x1f,
		0x54, 0xed, 0x83, 0x6f, 0xf2, 0xf9, 0xb4, 0xcb, 0x5c, 0x01, 0x0f, 0x76, 0x27, 0x02, 0xc7, 0x9a,
		0xf0, 0x50, 0x38, 0x57, 0x9e, 0x64, 0x08, 0x12, 0xb0, 0x21, 0x0b, 0x18, 0xef, 0x17, 0x22, 0x33,
		0xcf, 0xf1, 0x56, 0xe7, 0xe4, 0x68, 0x67, 0x6f, 0x67, 0xfb, 0x83, 0xf1, 0xff, 0xff, 0x7f, 0x95,
		0xad, 0xdd, 0xad, 0x5d, 0x53, 0x41, 0xa8, 0x56, 0x44, 0x9a, 0x1e, 0x23, 0x4f, 0x0b, 0x1f, 0x50,
		0x14, 0x27, 0x55, 0xf3, 0xa8, 0x47, 0xf9, 0xd4, 0x9a, 0x93, 0x20, 0x7a, 0x23, 0x7a, 0x3f, 0xe6,
		0x33, 0xb8, 0x32, 0xa5, 0xe7, 0x13, 0x50, 0x9d, 0x95, 0x4d, 0xdd, 0xcc, 0xcd, 0xd8, 0x0b, 0x71,
		0x59, 0xea, 0xc9, 0x65, 0x72, 0x47, 0x63, 0xcb, 0x1b, 0x8c, 0xad, 0xf0, 0x9e, 0xf7, 0xe5, 0x9d,
		0xcc, 0xae, 0x3c, 0x15, 0xe7, 0xb3, 0x2f, 0x7a, 0x10, 0xce, 0x67, 0xb3, 0xc3, 0x9e, 0x38, 0x9f,
		0x45, 0x02, 0x7d, 0xea, 0xa5, 0x49, 0x3b, 0x9f, 0x95, 0x54, 0x26, 0xb3, 0xb6, 0xc9, 0xa5, 0x94,
		0xcb, 0x48, 0x0e, 0xcb, 0xd2, 0xc3, 0xb3, 0x8a, 0x30, 0xad, 0x34, 0x5c, 0xab, 0x96, 0x10, 0x70,
		0xee, 0x8a, 0x73, 0x57, 0x1d, 0xc3, 0x7c, 0xf2, 0x40, 0xc6, 0x9d, 0x2b, 0x8f, 0x0d, 0xe4, 0x6f,
		0x9c, 0x79, 0xb4, 0x98, 0x1b, 0x20, 0xd9, 0x6b, 0xe5, 0x16, 0xde, 0x28, 0x4b, 0x04, 0x2a, 0x13,
		0x02, 0x89, 0xc4, 0xa0, 0x3a, 0x41, 0x90, 0x49, 0x14, 0x64, 0x12, 0x06, 0x95, 0xc4, 0x21, 0x37,
		0x81, 0x48, 0x4e, 0x24, 0xc9, 0x4b, 0x96, 0x5e, 0xc8, 0xb3, 0xb6, 0xeb, 0xe5, 0xdf, 0xcc, 0x5d,
		0x43, 0xf9, 0xe5, 0x5c, 0x2f, 0xb1, 0x22, 0xd1, 0x3d, 0x79, 0xbe, 0x72, 0xf1, 0x5d, 0xfe, 0x4e,
		0x96, 0xb8, 0xc4, 0xe6, 0xd8, 0x0f, 0x85, 0x15, 0xb2, 0x30, 0x74, 0x7d, 0x6e, 0x4d, 0xc6, 0xd6,
		0x80, 0x79, 0xce, 0xbd, 0x3a, 0xbc, 0xf6, 0xb8, 0x39, 0x40, 0x6f, 0x40, 0x6f, 0x40, 0x6f, 0x40,
		0x6f, 0x40, 0x6f, 0x39, 0x43, 0x6f, 0xd2, 0xcb, 0xb1, 0x1f, 0xc6, 0xf8, 0x7d, 0x05, 0x8f, 0x56,
		0x53, 0x9e, 0x3d, 0xff, 0x52, 0x13, 0xe2, 0x0c, 0xd5, 0xe5, 0xda, 0x89, 0x11, 0x8a, 0xcb, 0xb6,
		0x13, 0x3b, 0xa8, 0x94, 0xce, 0x2e, 0xf6, 0xa4, 0xea, 0x12, 0x5a, 0x45, 0x61, 0x70, 0xd5, 0x45,
		0x15, 0x96, 0x75, 0xaf, 0xb9, 0xa8, 0xea, 0xf2, 0x6e, 0xf8, 0x2a, 0x31, 0x80, 0xa0, 0xee, 0xa9,
		0x97, 0xd0, 0x38, 0xa0, 0x71, 0xe8, 0xf7, 0xa4, 0xbc, 0x57, 0xa6, 0x92, 0x2a, 0x44, 0x5c, 0x2e,
		0x7c, 0x93, 0x52, 0x95, 0x28, 0xcf, 0x97, 0x24, 0xf8, 0x91, 0xa4, 0xd6, 0xee, 0x6b, 0x14, 0x4c,
		0x46, 0x8b, 0xf7, 0x87, 0xac, 0x4b, 0x7a, 0x61, 0x4c, 0x05, 0x85, 0x31, 0xd9, 0x3c, 0x1c, 0x85,
		0x31, 0x28, 0x8c, 0xc9, 0x41, 0xfe, 0x46, 0x61, 0x8c, 0xac, 0x7d, 0x8b, 0xa3, 0x95, 0x42, 0x24,
		0x06, 0xd5, 0x09, 0x82, 0x4c, 0xa2, 0x20, 0x93, 0x30, 0xa8, 0x24, 0x0e, 0x35, 0x1a, 0x06, 0x0a,
		0x63, 0xe4, 0x07, 0x79, 0xd9, 0x85, 0x31, 0xa8, 0xcf, 0xc8, 0xde, 0xab, 0x50, 0x9f, 0x01, 0x10,
		0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x51, 0x08, 0x10, 0x81, 0xfa, 0x0c, 0xe9, 0x5f, 0xa8, 0xcf,
		0x40, 0x7d, 0xc6, 0xe3, 0x7b, 0x12, 0xf5, 0x19, 0xa8, 0xcf, 0x80, 0xaf, 0x52, 0x06, 0x08, 0xea,
		0x9e, 0x7a, 0x09, 0xaa, 0xbd, 0xb1, 0xd3, 0x86, 0xf7, 0xbc, 0x7f, 0x1d, 0xf8, 0xdc, 0xfd, 0xa7,
		0x4a, 0x61, 0x7e, 0xc5, 0x0a, 0x10, 0x6b, 0x10, 0x6b, 0x10, 0x6b, 0x10, 0x6b, 0x10, 0xeb, 0x9c,
		0x11, 0x6b, 0xa8, 0xf3, 0x9a, 0x3f, 0x09, 0x95, 0x85, 0xaa, 0x2a, 0x0b, 0x25, 0xcc, 0xa1, 0x95,
		0xe7, 0x4a, 0xe8, 0xbb, 0x99, 0x0b, 0xa7, 0x34, 0xa5, 0xd4, 0x87, 0x6e, 0x30, 0xbe, 0xf6, 0x74,
		0xec, 0x85, 0x76, 0x63, 0x34, 0x6e, 0x0e, 0xc6, 0xdd, 0xc8, 0x5e, 0x74, 0x0b, 0x7d, 0xe4, 0xfd,
		0xca, 0xa8, 0xbf, 0x95, 0x5a, 0x77, 0x2b, 0xbd, 0x3f, 0x68, 0x05, 0xfd, 0x41, 0xb5, 0x22, 0x64,
		0xe8, 0x0f, 0x8a, 0xfe, 0xa0, 0xcf, 0x79, 0x69, 0x98, 0xdf, 0x88, 0xf9, 0x8d, 0xf9, 0xd0, 0xdf,
		0x70, 0x5d, 0x02, 0xd7, 0x25, 0x70, 0x5d, 0x42, 0x37, 0xfd, 0x0c, 0xf3, 0x1b, 0xb3, 0xff, 0xc2,
		0xfc, 0x46, 0xb9, 0xcf, 0xc7, 0xec, 0x3c, 0xc9, 0x61, 0x6b, 0xd5, 0xf5, 0x30, 0xbf, 0x11, 0x3e,
		0x28, 0x3d, 0x41, 0xcb, 0x7f, 0x1a, 0xe6, 0x37, 0xa6, 0xf5, 0x6c, 0xcc, 0x6f, 0xc4, 0xfc, 0x46,
		0xcc, 0x6f, 0x7c, 0x8c, 0x4f, 0x61, 0x7e, 0xa3, 0xe6, 0xd1, 0x1b, 0xea, 0xe7, 0x8f, 0x7d, 0xbd,
		0xc8, 0xc7, 0x9c, 0x12, 0x8e, 0xdb, 0x33, 0x3c, 0x2f, 0x7c, 0xa3, 0x91, 0xbf, 0xc9, 0xf2, 0x33,
		0x52, 0xfe, 0x65, 0x66, 0x7a, 0xa2, 0xbb, 0xe1, 0x89, 0x79, 0x36, 0x6e, 0x9f, 0xbe, 0x53, 0x66,
		0xe0, 0x90, 0x26, 0x67, 0xee, 0xe8, 0xfa, 0xca, 0x0f, 0xc2, 0xcc, 0x7c, 0x31, 0x01, 0x99, 0x8b,
		0x47, 0x65, 0xb4, 0xb1, 0xb2, 0x3d, 0x06, 0xcf, 0xfc, 0xdc, 0x44, 0xc6, 0x39, 0x89, 0xd4, 0x73,
		0x11, 0x59, 0x90, 0x5e, 0xfa, 0xb9, 0x87, 0x74, 0x7c, 0x2e, 0xfb, 0x5c, 0x43, 0xaf, 0x84, 0x9a,
		0xf5, 0xb1, 0x75, 0x12, 0xb9, 0xe4, 0x95, 0x0d, 0x25, 0x4f, 0xc4, 0x64, 0x61, 0x6a, 0x21, 0x54,
		0x49, 0x28, 0x55, 0xa5, 0x92, 0xa0, 0x72, 0x08, 0x95, 0x43, 0x14, 0x42, 0x70, 0xf2, 0x20, 0x4c,
		0x16, 0xd6, 0x38, 0x3c, 0xab, 0x08, 0xd3, 0x4a, 0xc3, 0xb5, 0xaa, 0xb0, 0xad, 0x3c, 0x7c, 0x2b,
		0x0f, 0xe3, 0xaa, 0xc3, 0xb9, 0x9c, 0xb0, 0x2e, 0x29, 0xbc, 0x4b, 0x0f, 0xf3, 0xc9, 0x03, 0x25,
		0x17, 0x85, 0xae, 0x05, 0x0b, 0xa9, 0x85, 0xa0, 0x0f, 0xc3, 0x3f, 0x2e, 0x68, 0xe7, 0x3c, 0x2d,
		0xa8, 0x4e, 0x0f, 0x64, 0xd2, 0x04, 0x99, 0x74, 0x41, 0x25, 0x6d, 0xc8, 0x4d, 0x1f, 0x92, 0xd3,
		0x48, 0xf2, 0x92, 0xd5, 0x5f, 0xd0, 0x8e, 0xd6, 0xd5, 0x52, 0x12, 0xe4, 0x97, 0x03, 0xfd, 0x1e,
		0xda, 0x9f, 0xc9, 0xfb, 0xe0, 0x68, 0x7f, 0xb6, 0x64, 0x07, 0x5a, 0x4a, 0x11, 0x89, 0x85, 0xab,
		0x2e, 0x4a, 0xa9, 0xfd, 0xd9, 0xde, 0xee, 0xee, 0x0e, 0x3a, 0x9f, 0x91, 0x75, 0x53, 0x74, 0x3e,
		0xcb, 0x01, 0x10, 0xc2, 0x64, 0x3a, 0xe9, 0x8e, 0x25, 0xb3, 0xe5, 0x5c, 0xe0, 0x4f, 0x04, 0x0b,
		0x2c, 0x57, 0x61, 0xbf, 0xb9, 0x85, 0x09, 0xd0, 0x32, 0xa0, 0x65, 0x40, 0xcb, 0x80, 0x96, 0x01,
		0x2d, 0x23, 0x67, 0x5a, 0xc6, 0xc0, 0x17, 0x82, 0x0d, 0xac, 0x7f, 0x4c, 0x9c, 0x81, 0xca, 0x86,
		0x73, 0x1f, 0x15, 0x3c, 0xfb, 0xcc, 0x11, 0x82, 0x05, 0x5c, 0x99, 0x9c, 0x61, 0xbe, 0x7b, 0xf7,
		0x75, 0xdb, 0x3a, 0xb8, 0xfc, 0xd7, 0xd7, 0xb2, 0x75, 0x70, 0x39, 0xfd, 0xb6, 0x1c, 0xff, 0x6b,
		0xfa, 0x7d, 0xe5, 0xeb, 0xb6, 0x55, 0x9d, 0x7f, 0xbf, 0xfb, 0x75, 0xdb, 0xda, 0xbd, 0x7c, 0x7f,
		0x71, 0xb1, 0xf5, 0xfe, 0xef, 0x9d, 0xef, 0x2f, 0xff, 0x8b, 0x26, 0xc0, 0x37, 0xc0, 0xb7, 0xe6,
		0xe0, 0x1b, 0xcd, 0x1b, 0x53, 0x78, 0x2e, 0x95, 0x02, 0xff, 0xa4, 0xb0, 0x3b, 0xf9, 0x0e, 0x73,
		0xa1, 0x35, 0xe0, 0x88, 0xca, 0xb8, 0x21, 0x1a, 0x1e, 0xe5, 0x8c, 0xfb, 0xa1, 0xbc, 0x09, 0xe5,
		0x4d, 0x79, 0x48, 0xe4, 0xea, 0x1a, 0x1e, 0x45, 0x80, 0x2f, 0x60, 0x43, 0x05, 0x1d, 0x8f, 0xca,
		0x32, 0x5b, 0x1e, 0x9d, 0xcd, 0xb0, 0xca, 0xd6, 0xd6, 0x0c, 0x21, 0x94, 0x16, 0xb9, 0x07, 0x58,
		0xe1, 0xf9, 0xc0, 0x4f, 0x4a, 0x0f, 0xdb, 0x35, 0x27, 0x95, 0xd1, 0xcb, 0x76, 0xcd, 0x3d, 0x65,
		0x63, 0x84, 0x0a, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0xc2, 0x13, 0x2f, 0x53, 0x7a, 0x09,
		0xb4, 0x33, 0xf8, 0x3f, 0xa7, 0xcf, 0x78, 0xff, 0xde, 0x92, 0x1b, 0xf6, 0xd7, 0xa2, 0xc6, 0x43,
		0x43, 0x70, 0x90, 0x98, 0xb7, 0x04, 0x41, 0x22, 0x51, 0xa8, 0x4e, 0x18, 0x64, 0x12, 0x07, 0x99,
		0x04, 0x42, 0x25, 0x91, 0xc8, 0x4d, 0x28, 0x92, 0x13, 0x8b, 0x3a, 0x12, 0xba, 0xb6, 0xeb, 0xdd,
		0x01, 0xe3, 0xc2, 0x15, 0xf7, 0x72, 0x09, 0xe9, 0x1a, 0xf2, 0x57, 0x50, 0x74, 0x68, 0x36, 0x66,
		0x1f, 0xfd, 0x93, 0x13, 0x2a, 0x8c, 0x3c, 0xf3, 0x85, 0x68, 0x77, 0xcf, 0x4e, 0xec, 0x56, 0xbd,
		0xf1, 0xf9, 0xd7, 0x4f, 0xed, 0x8e, 0xdd, 0xed, 0xd5, 0x7a, 0x75, 0x55, 0x31, 0x28, 0xae, 0x06,
		0x0d, 0x95, 0x1d, 0xb0, 0x1a, 0x4a, 0x6b, 0xc6, 0x57, 0x16, 0xa5, 0xd6, 0xeb, 0xd5, 0x4f, 0xcf,
		0x7a, 0x66, 0x11, 0x2b, 0x93, 0x89, 0x2c, 0xc1, 0x71, 0xfb, 0xf7, 0x16, 0xde, 0xbf, 0xba, 0xf7,
		0x5f, 0xff, 0xe3, 0xe8, 0xd7, 0x5a, 0xeb, 0x73, 0x1d, 0x6b, 0xa0, 0x72, 0x0d, 0xba, 0xbd, 0x5a,
		0x07, 0x61, 0x48, 0xe1, 0x12, 0x9c, 0x9c, 0x37, 0x9b, 0x78, 0xff, 0xea, 0xde, 0x7f, 0xa3, 0xd5,
		0x80, 0xff, 0x2b, 0x7c, 0xff, 0xcd, 0x76, 0xed, 0xb8, 0xd1, 0xfa, 0x8c, 0x25, 0x50, 0xb7, 0x04,
		0xbd, 0xdf, 0xdb, 0xf6, 0xef, 0xb5, 0x3f, 0xcd, 0x82, 0xdd, 0x3f, 0xba, 0x44, 0xeb, 0x69, 0xfd,
		0xb6, 0x90, 0x79, 0xe5, 0xf4, 0xff, 0x9a, 0x8c, 0xad, 0x01, 0x0b, 0xdd, 0x11, 0x77, 0x04, 0x1b,
		0x58, 0xd3, 0xd3, 0x5f, 0x75, 0x92, 0xf6, 0x93, 0x16, 0x41, 0xdb, 0xce, 0xf4, 0xc1, 0xd0, 0xb6,
		0xa1, 0x6d, 0x4f, 0x0d, 0x81, 0xb6, 0xad, 0x34, 0xcf, 0xe0, 0x92, 0x8c, 0xa1, 0x22, 0xd0, 0xe3,
		0x92, 0x0c, 0x2e, 0xc9, 0x00, 0x21, 0xae, 0x7b, 0xc8, 0x80, 0x39, 0x03, 0x4b, 0xb8, 0x37, 0x0a,
		0xab, 0x1c, 0x16, 0x26, 0x00, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0xe6, 0x0c,
		0x03, 0x46, 0xd1, 0x5d, 0xb8, 0xfd, 0xbf, 0xc2, 0xbd, 0xaa, 0x42, 0x0c, 0xa8, 0x02, 0x02, 0x9e,
		0xf3, 0x69, 0xfb, 0x24, 0x93, 0x3b, 0xdc, 0x0f, 0x59, 0xdf, 0xe7, 0x83, 0xd0, 0x44, 0xf3, 0x39,
		0x79, 0x1f, 0x1c, 0xcd, 0xe7, 0x96, 0xec, 0x40, 0x57, 0x2f, 0x22, 0x31, 0x79, 0xd5, 0x45, 0x29,
		0x35, 0x9f, 0x2b, 0x7f, 0xac, 0x56, 0xf7, 0xf6, 0xab, 0xd5, 0xed, 0xfd, 0x9d, 0xfd, 0xed, 0x83,
		0xdd, 0xdd, 0xf2, 0x5e, 0x19, 0xbd, 0xe8, 0xc8, 0x7a, 0x2d, 0x7a, 0xd1, 0x81, 0xe9, 0x3f, 0x9b,
		0xe9, 0x93, 0x39, 0x04, 0xc2, 0xe9, 0x0f, 0x98, 0x3f, 0x98, 0x3f, 0x98, 0x3f, 0x98, 0x7f, 0xee,
		0x99, 0x3f, 0x4e, 0x7f, 0x70, 0xfa, 0x03, 0x4c, 0x48, 0x15, 0x13, 0x7a, 0x4e, 0x28, 0x2c, 0x16,
		0x0a, 0xe7, 0xca, 0x73, 0xc3, 0x6b, 0xa6, 0xfa, 0x24, 0xe8, 0x71, 0x73, 0x80, 0x0d, 0x81, 0x0d,
		0x81, 0x0d, 0x81, 0x0d, 0x81, 0x0d, 0x73, 0x86, 0x0d, 0x71, 0x2a, 0x84, 0x53, 0x21, 0x35, 0x5f,
		0x38, 0x15, 0x5a, 0xb6, 0x03, 0xfa, 0x3a, 0x91, 0x98, 0xbc, 0xea, 0xa2, 0x38, 0x15, 0x82, 0xd7,
		0x6a, 0x80, 0x5b, 0xd4, 0x3d, 0x15, 0x0a, 0xc0, 0xe6, 0x4e, 0x8b, 0x71, 0xbf, 0xe0, 0xf8, 0xe0,
		0xf8, 0xe0, 0xf8, 0xe0, 0xf8, 0xe0, 0xf8, 0x99, 0xec, 0x7a, 0x8c, 0xfb, 0x05, 0xb7, 0x06, 0xb7,
		0x06, 0x4b, 0x01, 0xb7, 0x7e, 0xca, 0x45, 0x31, 0xee, 0x17, 0x64, 0x1a, 0x64, 0x3a, 0x0f, 0x64,
		0xda, 0x1f, 0x47, 0x7b, 0xc8, 0xf1, 0xac, 0xbe, 0x33, 0x76, 0xae, 0x5c, 0xcf, 0x15, 0x6e, 0xdc,
		0xc1, 0x51, 0x11, 0xb7, 0x7e, 0xdc, 0x1c, 0x50, 0x6d, 0x50, 0x6d, 0x50, 0x6d, 0x50, 0x6d, 0x50,
		0xed, 0x9c, 0x51, 0xed, 0x6b, 0x76, 0x67, 0x85, 0x22, 0x70, 0xf9, 0x08, 0x95, 0x96, 0x92, 0x0d,
		0x88, 0xeb, 0x25, 0x1d, 0x6b, 0x58, 0xb3, 0x4e, 0x2e, 0xff, 0xae, 0x7c, 0x7f, 0x77, 0xb8, 0xfa,
		0xe7, 0xf7, 0xff, 0xf1, 0xfe, 0xbf, 0x50, 0x20, 0xa9, 0x23, 0xa2, 0x1b, 0x07, 0xae, 0x1f, 0xb8,
		0xe2, 0x5e, 0x1d, 0x88, 0x4b, 0x2c, 0x00, 0x6e, 0x03, 0x6e, 0x03, 0x6e, 0x03, 0x6e, 0x03, 0x6e,
		0xcb, 0x19, 0x6e, 0x9b, 0xb8, 0x5c, 0x7c, 0x54, 0x08, 0xd9, 0x76, 0x71, 0x38, 0x22, 0xef, 0x83,
		0xe3, 0x70, 0x64, 0xc9, 0x0e, 0xa8, 0xce, 0x44, 0xa2, 0xe0, 0xaa, 0x8b, 0x52, 0x3a, 0x1c, 0xa9,
		0xec, 0xe2, 0x68, 0x84, 0xac, 0x93, 0xe2, 0x68, 0x04, 0x44, 0xfa, 0x99, 0x4e, 0x1b, 0x30, 0x11,
		0x38, 0x3c, 0xbc, 0x71, 0xc3, 0xd0, 0xf5, 0xb9, 0xf5, 0x8f, 0x09, 0x9b, 0x30, 0xcb, 0x63, 0x7c,
		0x14, 0x8f, 0xa7, 0x56, 0xc4, 0xad, 0x7f, 0x64, 0x14, 0xe8, 0x36, 0xe8, 0x36, 0xe8, 0x36, 0xe8,
		0x36, 0xe8, 0x76, 0x0e, 0xe9, 0xf6, 0x4e, 0x45, 0x21, 0xdf, 0xde, 0x07, 0xdf, 0x06, 0xdf, 0x06,
		0x95, 0x01, 0xdf, 0xa6, 0xc8, 0xb7, 0xab, 0x95, 0x83, 0xea, 0xc1, 0xde, 0x7e, 0xe5, 0x00, 0xb4,
		0x1b, 0xb4, 0x1b, 0xb4, 0x5b, 0x7b, 0xda, 0x1d, 0xb7, 0x57, 0xb4, 0xdc, 0x81, 0x42, 0x92, 0x9d,
		0x98, 0x00, 0x4a, 0x0d, 0x4a, 0x0d, 0x4a, 0x0d, 0x4a, 0x0d, 0x4a, 0x9d, 0x33, 0x4a, 0x8d, 0x26,
		0x8f, 0x68, 0xf2, 0x08, 0x0c, 0x48, 0x15, 0x03, 0x86, 0xc2, 0x11, 0xcc, 0xea, 0x5f, 0x3b, 0x7c,
		0xa4, 0xf2, 0x36, 0xca, 0xaa, 0x19, 0xc0, 0x82, 0xc0, 0x82, 0xc0, 0x82, 0xc0, 0x82, 0xc0, 0x82,
		0x39, 0xc3, 0x82, 0x38, 0x5e, 0x91, 0xfe, 0x85, 0xe3, 0x15, 0x1c, 0xaf, 0x3c, 0xbe, 0x27, 0x71,
		0xbc, 0x82, 0xe3, 0x15, 0xf8, 0x2a, 0x65, 0x80, 0xa0, 0xee, 0xa9, 0xb9, 0xa5, 0xd6, 0x6f, 0x72,
		0x14, 0xd1, 0xcc, 0x1a, 0xe7, 0xbe, 0x70, 0xa2, 0x9d, 0x2a, 0x35, 0x88, 0x99, 0x61, 0xff, 0x9a,
		0xdd, 0x38, 0x63, 0x27, 0x2e, 0xcf, 0x34, 0x4b, 0xfe, 0x98, 0xf1, 0x7e, 0x4c, 0x66, 0x2d, 0xce,
		0xc4, 0x37, 0x3f, 0xf8, 0xcb, 0x72, 0x79, 0x28, 0x1c, 0xde, 0x67, 0xa5, 0x87, 0x3f, 0x08, 0xd7,
		0x7e, 0x52, 0x1a, 0x07, 0xbe, 0xf0, 0xfb, 0xbe, 0x17, 0x26, 0xdf, 0x95, 0xa6, 0xf8, 0xbf, 0xe4,
		0x04, 0xcc, 0x09, 0xe3, 0x7f, 0x96, 0x5c, 0x2e, 0x58, 0x30, 0x74, 0xa2, 0x5f, 0x90, 0x7c, 0x5b,
		0xe2, 0xcc, 0x1d, 0x5d, 0x5f, 0xf9, 0x41, 0x98, 0x7c, 0x57, 0x8a, 0x85, 0x04, 0x39, 0xc4, 0x21,
		0x7b, 0x5f, 0xca, 0xf6, 0x09, 0x19, 0x7b, 0x69, 0xc4, 0x72, 0x65, 0x1e, 0xf1, 0x99, 0x4d, 0x37,
		0x14, 0x35, 0x21, 0xe4, 0x8c, 0xae, 0x8b, 0xc0, 0x6d, 0xdd, 0x63, 0x11, 0x67, 0x95, 0x94, 0x20,
		0x23, 0xac, 0xb2, 0xf4, 0x44, 0x35, 0x4d, 0x97, 0xcd, 0x76, 0x30, 0x60, 0x01, 0x1b, 0x7c, 0x8a,
		0x96, 0x96, 0x4f, 0x3c, 0x4f, 0xe6, 0x23, 0xcf, 0xc3, 0x78, 0x2e, 0x61, 0xf6, 0x08, 0x20, 0xeb,
		0x9d, 0x21, 0x39, 0x6e, 0x13, 0x8e, 0xd7, 0x12, 0xa4, 0x00, 0x33, 0x14, 0xc1, 0xa4, 0x2f, 0xf8,
		0x4c, 0x82, 0x68, 0x4d, 0x3f, 0x4e, 0x63, 0xf6, 0x69, 0xec, 0xb3, 0xd9, 0x67, 0xb0, 0xdb, 0xf1,
		0x67, 0xb0, 0x6b, 0x01, 0x73, 0xec, 0xc6, 0xdc, 0x64, 0xbb, 0x35, 0x37, 0xf4, 0x8d, 0x9e, 0x81,
		0x3e, 0x9b, 0xdf, 0x9c, 0xd1, 0x06, 0x91, 0xb5, 0x31, 0xe8, 0x6d, 0x88, 0x6c, 0xdc, 0x2b, 0xfd,
		0xc5, 0xcf, 0x60, 0xe1, 0xa7, 0x67, 0x3f, 0x99, 0xad, 0xf7, 0xea, 0x11, 0x53, 0x46, 0xf1, 0x26,
		0x39, 0x65, 0xce, 0xe8, 0xd7, 0x27, 0x47, 0x45, 0x95, 0x8c, 0x1e, 0x20, 0xe1, 0x48, 0x48, 0xea,
		0xd1, 0x8f, 0xac, 0x23, 0x1e, 0xe9, 0x47, 0x39, 0xd2, 0x8f, 0x6c, 0x64, 0x1f, 0xcd, 0xe8, 0x95,
		0xb0, 0x8e, 0xdd, 0x6c, 0xe9, 0x86, 0xe9, 0x4c, 0xc4, 0x35, 0xe3, 0xc2, 0xed, 0xc7, 0x59, 0xd1,
		0x12, 0x32, 0x8e, 0x70, 0x92, 0x9d, 0xfa, 0xd8, 0xc3, 0xb3, 0x26, 0x8d, 0x52, 0xce, 0xe2, 0xa5,
		0x9d, 0xbd, 0xcb, 0x3c, 0x6b, 0x57, 0x72, 0xb6, 0x2e, 0xfb, 0x2c, 0x5d, 0xd9, 0xd9, 0xb9, 0xb2,
		0xb3, 0x72, 0x55, 0x67, 0xe3, 0x7a, 0x8b, 0x4f, 0xd2, 0xce, 0xba, 0x97, 0xf0, 0xa5, 0xa4, 0xee,
		0x8a, 0x8b, 0x92, 0x46, 0x5d, 0x39, 0x69, 0x86, 0xb8, 0xef, 0xda, 0x1d, 0xb0, 0x39, 0x89, 0x93,
		0x97, 0x28, 0x57, 0x9e, 0x8a, 0x0c, 0x89, 0x0c, 0x89, 0x0c, 0x89, 0x0c, 0x89, 0x0c, 0xf9, 0x60,
		0xd7, 0x5d, 0xf9, 0xbe, 0xc7, 0x1c, 0x2e, 0x33, 0x45, 0x96, 0xb5, 0x5e, 0x22, 0x76, 0x27, 0x02,
		0xc7, 0x9a, 0xf0, 0x78, 0xe8, 0xbd, 0xa4, 0xc5, 0x0a, 0xd8, 0x90, 0x05, 0x8c, 0xf7, 0xe5, 0x55,
		0xac, 0x49, 0x3c, 0xb8, 0x9e, 0x7b, 0x62, 0xe7, 0xe4, 0x68, 0xef, 0xe3, 0xde, 0xb6, 0x61, 0x19,
		0xbf, 0xba, 0x03, 0x97, 0x8f, 0x8c, 0x5e, 0xe0, 0xf0, 0xd0, 0x15, 0x56, 0x9b, 0x7b, 0xf7, 0xc6,
		0xec, 0x88, 0x20, 0x34, 0x5c, 0x6e, 0xb4, 0xbb, 0x27, 0x27, 0x12, 0xeb, 0x15, 0x55, 0x95, 0x26,
		0x2f, 0x27, 0x8d, 0x85, 0x07, 0x48, 0xae, 0x4f, 0x55, 0x5d, 0x8d, 0xbc, 0x92, 0x47, 0x5e, 0xe8,
		0x22, 0x79, 0xab, 0x60, 0xc9, 0xfc, 0x29, 0x97, 0x20, 0x2f, 0x6b, 0xfe, 0x27, 0xe1, 0x26, 0x76,
		0x12, 0x02, 0xb3, 0xaf, 0xc7, 0x00, 0x51, 0x01, 0x51, 0x01, 0x51, 0x01, 0x51, 0xd1, 0x8f, 0xa8,
		0x24, 0x07, 0xf4, 0x72, 0x1a, 0x53, 0x40, 0xd0, 0xfb, 0xc1, 0xbb, 0x91, 0x34, 0x83, 0x5c, 0xee,
		0xcc, 0x71, 0xe4, 0x46, 0xe4, 0x46, 0xe4, 0x46, 0xe4, 0x46, 0x0d, 0x73, 0xa3, 0xdc, 0x99, 0xdd,
		0x12, 0x67, 0x74, 0x4b, 0xbe, 0xa7, 0x29, 0x51, 0xf5, 0x52, 0x71, 0x0f, 0x53, 0xd5, 0xbd, 0x4b,
		0xe5, 0x77, 0xd7, 0xd4, 0xdd, 0x55, 0x93, 0xd9, 0x36, 0x44, 0xc5, 0xbd, 0x49, 0x95, 0x33, 0xb1,
		0x8b, 0xec, 0x56, 0x10, 0x1c, 0xf3, 0x4b, 0xae, 0x26, 0x9e, 0x70, 0x2d, 0x27, 0x60, 0x8e, 0xe5,
		0x0c, 0xfe, 0xcf, 0xe9, 0x33, 0xde, 0xbf, 0xb7, 0xc6, 0x81, 0x7b, 0xe3, 0x04, 0xf7, 0x12, 0x29,
		0xd7, 0x8f, 0xac, 0xc8, 0x18, 0x40, 0x1d, 0xb3, 0xa1, 0x33, 0xf1, 0x84, 0x94, 0xb4, 0x6f, 0x46,
		0x68, 0x3a, 0x5b, 0x44, 0x7b, 0x09, 0xde, 0x0a, 0xde, 0x0a, 0xde, 0x0a, 0xde, 0x0a, 0xde, 0xfa,
		0x60, 0xd7, 0xe5, 0xaf, 0xf8, 0x44, 0x4b, 0xc4, 0x31, 0xbf, 0x3c, 0x27, 0xf7, 0x22, 0xc3, 0xca,
		0x53, 0x91, 0x22, 0x91, 0x22, 0x91, 0x22, 0x91, 0x22, 0x91, 0x22, 0x1f, 0xec, 0x3a, 0x77, 0xc0,
		0xb8, 0x70, 0xc5, 0x7d, 0xc0, 0x86, 0x32, 0xd3, 0xa4, 0x8c, 0xb6, 0x15, 0x8d, 0xd9, 0x47, 0xfb,
		0xe4, 0x84, 0x12, 0x77, 0xfa, 0xfc, 0xc5, 0xb6, 0xbb, 0x67, 0x27, 0x76, 0xab, 0xde, 0xfb, 0xbd,
		0xdd, 0xf9, 0xcd, 0xee, 0xfd, 0x79, 0x56, 0x97, 0xb5, 0xe3, 0x63, 0xc5, 0x2c, 0x94, 0xda, 0x7b,
		0x50, 0x51, 0x03, 0xe1, 0x4f, 0x9d, 0x76, 0xed, 0xf8, 0xa8, 0xd6, 0xed, 0xcd, 0xdf, 0xb3, 0x99,
		0x47, 0xdd, 0x55, 0xd1, 0xcb, 0x6d, 0xb5, 0x5b, 0x36, 0x5e, 0x70, 0x86, 0x2f, 0xf8, 0xac, 0xdd,
		0x68, 0xf5, 0xec, 0x5e, 0xdb, 0x9e, 0x7e, 0x23, 0xff, 0x0d, 0x4b, 0x79, 0xd2, 0xa5, 0xee, 0x19,
		0x5f, 0x4b, 0xc6, 0x35, 0x76, 0xc2, 0x70, 0x7a, 0x6e, 0x20, 0x89, 0x6c, 0xcd, 0x1f, 0x08, 0x9e,
		0x05, 0x9e, 0x05, 0x9e, 0x05, 0x9e, 0x05, 0x9e, 0xf5, 0x60, 0xd7, 0x41, 0x8a, 0xa4, 0x91, 0x18,
		0x03, 0xd7, 0x0f, 0x5c, 0x21, 0xf1, 0xa0, 0x33, 0x79, 0x22, 0x52, 0x23, 0x52, 0x23, 0x52, 0x23,
		0x52, 0x23, 0x52, 0xe3, 0x83, 0x5d, 0x37, 0x71, 0xb9, 0xf8, 0x28, 0x31, 0x31, 0xee, 0xa2, 0xae,
		0xf4, 0xf5, 0x1f, 0x0c, 0x75, 0xa5, 0x52, 0xb5, 0x22, 0xd4, 0x95, 0x66, 0xec, 0x52, 0x95, 0x5d,
		0x54, 0x95, 0x4a, 0x73, 0x2a, 0x54, 0x95, 0xaa, 0x25, 0x56, 0xe8, 0x0b, 0xfd, 0xc8, 0x73, 0xa8,
		0xf4, 0x85, 0xce, 0x70, 0x8a, 0x85, 0x1e, 0x3d, 0xa1, 0x85, 0x7b, 0xc3, 0x82, 0x30, 0xfb, 0xa6,
		0xd0, 0xb3, 0xe7, 0x68, 0xde, 0x15, 0x7a, 0x1b, 0x5d, 0xa1, 0x49, 0xf1, 0x6c, 0x74, 0x85, 0x2e,
		0x76, 0xba, 0xca, 0xbc, 0x2b, 0x74, 0x7f, 0xbe, 0xf3, 0x25, 0x09, 0x97, 0xb3, 0xe7, 0xc9, 0x91,
		0x2d, 0xcb, 0x90, 0x2d, 0x69, 0x87, 0x51, 0xd9, 0xe1, 0x54, 0x59, 0x58, 0x55, 0x16, 0x5e, 0x55,
		0x85, 0x59, 0x39, 0xbc, 0x29, 0x6b, 0xd9, 0x32, 0xeb, 0xf0, 0x9b, 0x3c, 0x68, 0xc0, 0x9c, 0x81,
		0x15, 0xa3, 0xf6, 0x5b, 0xc7, 0x93, 0x5f, 0x56, 0xb8, 0xfa, 0x78, 0x49, 0x1e, 0x29, 0x77, 0x58,
		0xbe, 0xf4, 0x21, 0xf9, 0x2a, 0x86, 0xe3, 0x2b, 0x1d, 0x8a, 0x4f, 0xa1, 0xe3, 0xa4, 0x92, 0x21,
		0xf8, 0xb4, 0xda, 0x4d, 0x2a, 0x18, 0x7a, 0x9f, 0xaf, 0x59, 0xa8, 0xd2, 0x87, 0xdb, 0xab, 0x1b,
		0x6a, 0xaf, 0x60, 0x98, 0xbd, 0xa2, 0x21, 0xf6, 0xf2, 0x07, 0x73, 0x2b, 0x1d, 0x5a, 0xaf, 0x7a,
		0x58, 0x3d, 0x99, 0xc1, 0xdf, 0xea, 0x07, 0x7e, 0x2b, 0x18, 0x4a, 0xaf, 0x74, 0x18, 0x3d, 0x99,
		0x21, 0xf4, 0xf0, 0x41, 0xc9, 0x09, 0x5a, 0xfe, 0xd3, 0x2e, 0x73, 0x05, 0x3c, 0x14, 0x34, 0xe9,
		0x4f, 0x9e, 0x2d, 0xbf, 0x59, 0xbf, 0xc2, 0xcc, 0xbc, 0xd4, 0xbc, 0xbf, 0xb2, 0x53, 0xf9, 0x68,
		0x2a, 0x88, 0xd0, 0x8a, 0xb8, 0xd2, 0x63, 0x9c, 0x49, 0x55, 0x97, 0x7e, 0x32, 0xf4, 0xe9, 0x51,
		0x1a, 0x35, 0xf7, 0x0d, 0xc4, 0x6a, 0xc4, 0xea, 0xc7, 0x5c, 0x45, 0xee, 0xe0, 0xf5, 0xe4, 0xb9,
		0xf7, 0x23, 0x5f, 0x58, 0x7e, 0xdf, 0xea, 0xfb, 0x37, 0xe3, 0x80, 0x85, 0x21, 0x1b, 0x58, 0x1e,
		0x73, 0x86, 0x91, 0x11, 0x79, 0x29, 0x84, 0x91, 0xb0, 0x84, 0xe6, 0x35, 0xf3, 0x3c, 0x5f, 0xa1,
		0xe0, 0xfa, 0xe0, 0xf9, 0x50, 0x5c, 0x53, 0x79, 0x20, 0x14, 0x57, 0xf9, 0xe8, 0x01, 0x8a, 0x2b,
		0x14, 0xd7, 0x4d, 0x5f, 0x26, 0x14, 0xd7, 0x4c, 0x1f, 0x09, 0xc5, 0x55, 0xc6, 0xc3, 0xa1, 0xb8,
		0xce, 0xf7, 0x16, 0x14, 0x57, 0x45, 0xae, 0x07, 0xc5, 0x95, 0x8e, 0x0f, 0x82, 0xc5, 0x83, 0xc5,
		0x83, 0xc5, 0x67, 0xfb, 0x1a, 0x03, 0x26, 0x02, 0x87, 0x87, 0x37, 0x6e, 0x18, 0xba, 0x3e, 0x57,
		0x48, 0xe7, 0x9f, 0x32, 0x04, 0xbc, 0x1e, 0xbc, 0x1e, 0xbc, 0x1e, 0xbc, 0x1e, 0xbc, 0x1e, 0xbc,
		0x1e, 0xbc, 0x1e, 0xbc, 0x1e, 0x9c, 0x0a, 0xbc, 0x1e, 0xbc, 0x1e, 0xbc, 0x1e, 0xbc, 0x1e, 0xbc,
		0x5e, 0x57, 0x5e, 0xaf, 0xf5, 0x85, 0x2e, 0xc9, 0x8e, 0x41, 0xa6, 0x0d, 0xc4, 0xb4, 0x3b, 0x41,
		0x69, 0x76, 0xfb, 0x16, 0x2d, 0x1c, 0xd7, 0x17, 0x2a, 0xee, 0x93, 0x21, 0xed, 0x1a, 0xf4, 0xf4,
		0x71, 0x39, 0xbb, 0x05, 0x5d, 0xc1, 0x2d, 0x68, 0xad, 0x64, 0x1f, 0xdc, 0x82, 0xc6, 0x2d, 0xe8,
		0xe7, 0xbc, 0x34, 0xdc, 0x82, 0xce, 0x3e, 0x48, 0x43, 0xbb, 0xd7, 0x3c, 0x78, 0xab, 0x0a, 0xe2,
		0xca, 0x83, 0xb9, 0xf2, 0xa0, 0xae, 0x3a, 0xb8, 0xcb, 0x25, 0xeb, 0xd0, 0xee, 0x33, 0x8b, 0xc1,
		0xd0, 0xee, 0x33, 0xf8, 0xa0, 0xd0, 0xee, 0xa1, 0x9b, 0x42, 0xbb, 0x87, 0x76, 0x0f, 0xed, 0x3e,
		0xb3, 0x2f, 0xdc, 0x82, 0x4e, 0xeb, 0xd9, 0xb8, 0x05, 0x2d, 0xd7, 0x04, 0xdc, 0x82, 0xa6, 0x43,
		0x9f, 0x1e, 0xa5, 0x51, 0xb8, 0x05, 0xad, 0x67, 0xac, 0xc6, 0x25, 0xdd, 0x14, 0x02, 0x23, 0x2e,
		0xe9, 0x66, 0xf1, 0x40, 0x08, 0x82, 0xf2, 0x93, 0x1b, 0x04, 0x41, 0x08, 0x82, 0x9b, 0xbe, 0x4c,
		0x08, 0x82, 0x99, 0x3e, 0x12, 0x82, 0xa0, 0x4c, 0x55, 0x06, 0x82, 0x20, 0x04, 0x41, 0x45, 0xae,
		0x07, 0x41, 0x90, 0x8e, 0x0f, 0x82, 0x64, 0x16, 0x9e, 0x64, 0xe2, 0x0e, 0x29, 0x68, 0x27, 0x68,
		0x27, 0x68, 0x27, 0x68, 0x27, 0x68, 0x27, 0x68, 0x27, 0x68, 0x27, 0x68, 0x27, 0x68, 0x27, 0x68,
		0x27, 0x7c, 0x10, 0xb4, 0xb3, 0xb8, 0xb4, 0x13, 0x57, 0x1c, 0x5f, 0xf0, 0x3c, 0x62, 0x57, 0x1c,
		0x33, 0x1c, 0x78, 0x9d, 0xbd, 0x7f, 0x60, 0x96, 0x3a, 0x7d, 0x0f, 0x33, 0x33, 0xbd, 0x85, 0x1a,
		0x4c, 0xfa, 0x82, 0xcf, 0x08, 0x48, 0x6b, 0x6a, 0x7a, 0x63, 0x66, 0xb9, 0x7d, 0x36, 0xb3, 0xd7,
		0x6e, 0xc7, 0xf6, 0xda, 0xb5, 0x80, 0x39, 0x76, 0x63, 0x6e, 0x9e, 0xdd, 0x9b, 0x9a, 0xa7, 0xcb,
		0xac, 0xf7, 0x37, 0x84, 0x5d, 0xdc, 0xfc, 0x8d, 0xdd, 0x47, 0x2b, 0xe0, 0x0e, 0x52, 0x5e, 0x6d,
		0xb3, 0xe9, 0x86, 0xa2, 0x26, 0x44, 0x36, 0x17, 0xea, 0x22, 0x92, 0x53, 0xf7, 0xd8, 0x0d, 0xe3,
		0x59, 0x01, 0xac, 0x08, 0xcb, 0x2e, 0x3d, 0xa1, 0xfc, 0xb1, 0x5a, 0xdd, 0xdb, 0xaf, 0x56, 0xb7,
		0xf7, 0x77, 0xf6, 0xb7, 0x0f, 0x76, 0x77, 0xcb, 0x7b, 0xe5, 0x0c, 0xe0, 0xa5, 0xd9, 0x0e, 0x06,
		0x2c, 0x60, 0x83, 0x4f, 0xd1, 0x9a, 0xf0, 0x89, 0xe7, 0x65, 0xf9, 0x88, 0xf3, 0x90, 0x05, 0x99,
		0x20, 0xc3, 0xb4, 0x5d, 0x34, 0xe3, 0xe8, 0x4b, 0x25, 0xea, 0x66, 0x10, 0x6e, 0x37, 0x0a, 0xb3,
		0xe9, 0xc6, 0xd7, 0xf4, 0xa2, 0x60, 0x3a, 0xbf, 0x29, 0x25, 0x27, 0xcd, 0xca, 0x39, 0xd5, 0x3a,
		0x65, 0x3a, 0x4b, 0xbf, 0xf9, 0x42, 0xa5, 0xb0, 0x48, 0xa6, 0x17, 0x0e, 0xae, 0x52, 0x5b, 0x9a,
		0x44, 0x32, 0x8d, 0x7f, 0x6b, 0x4a, 0x2e, 0x94, 0x6e, 0xf7, 0x8a, 0xd4, 0xbb, 0x54, 0x64, 0x71,
		0xa0, 0x94, 0xe9, 0x81, 0x51, 0x56, 0x07, 0x42, 0x99, 0x1f, 0xf8, 0x64, 0x7e, 0xa0, 0x93, 0xf5,
		0x81, 0x0d, 0xad, 0xd0, 0x9c, 0x76, 0x37, 0x07, 0xd3, 0x0b, 0x1d, 0x4b, 0xdc, 0x8f, 0x59, 0x98,
		0xbe, 0x6b, 0x2d, 0xe2, 0xca, 0xfc, 0x11, 0x69, 0xe3, 0xfc, 0x4c, 0x5a, 0xe4, 0x64, 0x76, 0xba,
		0x9d, 0xe5, 0x29, 0xb6, 0x94, 0xd3, 0xea, 0xac, 0x4f, 0xa5, 0xa5, 0x9d, 0x3e, 0x4b, 0x3b, 0x65,
		0x96, 0x75, 0x9a, 0x4c, 0x9b, 0x8f, 0x67, 0xd5, 0x82, 0x26, 0x89, 0x2c, 0xd9, 0x79, 0xe4, 0xc3,
		0x18, 0x96, 0x95, 0x43, 0x66, 0xdb, 0xed, 0x2b, 0xf3, 0x82, 0x1d, 0x19, 0x05, 0x3a, 0x52, 0x0b,
		0x72, 0x64, 0x15, 0xe0, 0x48, 0x2f, 0xb8, 0x91, 0x5e, 0x60, 0x23, 0xbb, 0xa0, 0x46, 0x2f, 0x15,
		0x3e, 0xeb, 0xee, 0x5c, 0x51, 0xe0, 0x0a, 0xe5, 0x75, 0x46, 0x8c, 0x9f, 0x96, 0xb3, 0xc6, 0x88,
		0xdb, 0x68, 0x8c, 0xa8, 0x45, 0x28, 0x55, 0x16, 0x52, 0x95, 0x85, 0x56, 0x55, 0x21, 0x36, 0xdb,
		0x50, 0x9b, 0x71, 0xc8, 0x95, 0x16, 0x7a, 0x97, 0x43, 0xb0, 0xfc, 0x82, 0xf4, 0xe8, 0xa1, 0x72,
		0x8b, 0xcf, 0xcb, 0x28, 0x3e, 0xd7, 0x3b, 0x50, 0xab, 0x0a, 0xd8, 0xca, 0x03, 0xb7, 0xf2, 0x00,
		0xae, 0x3a, 0x90, 0xcb, 0x09, 0xe8, 0x92, 0x02, 0xbb, 0xf4, 0x00, 0x9f, 0x3c, 0xd0, 0x09, 0x2d,
		0x76, 0x27, 0x58, 0xc0, 0x1d, 0xcf, 0x92, 0x19, 0xf4, 0xd7, 0xa2, 0xc6, 0x43, 0x43, 0x24, 0x7b,
		0xb1, 0xdc, 0x84, 0xa0, 0x2c, 0x31, 0xa8, 0x4c, 0x10, 0x24, 0x12, 0x85, 0xea, 0x84, 0x41, 0x26,
		0x71, 0x90, 0x49, 0x20, 0x54, 0x12, 0x89, 0xdc, 0x84, 0x22, 0x39, 0xb1, 0x28, 0x4b, 0x30, 0xc9,
		0x83, 0xe5, 0xcc, 0xbb, 0xf8, 0x69, 0xcc, 0x91, 0x31, 0x07, 0x83, 0x58, 0x92, 0x51, 0x9e, 0x6c,
		0x28, 0x24, 0x1d, 0x52, 0xc9, 0x87, 0x4a, 0x12, 0x22, 0x97, 0x8c, 0xc8, 0x25, 0x25, 0x6a, 0xc9,
		0x49, 0x4d, 0x92, 0x52, 0x94, 0xac, 0x94, 0x27, 0xad, 0xc4, 0x80, 0x84, 0x99, 0x04, 0xfe, 0x44,
		0x30, 0x4b, 0x38, 0x23, 0xf5, 0x7b, 0x76, 0x1e, 0xc8, 0x1e, 0xb1, 0x4d, 0xf1, 0x5e, 0x91, 0xdb,
		0xd9, 0x81, 0x6c, 0xba, 0xa3, 0x94, 0xf6, 0x48, 0xa6, 0x3f, 0x6a, 0x69, 0x90, 0x6c, 0x3a, 0x24,
		0x9b, 0x16, 0xa9, 0xa6, 0x47, 0xb5, 0x69, 0x52, 0x71, 0xba, 0x4c, 0x16, 0x45, 0x7a, 0x27, 0x8b,
		0x9f, 0x46, 0x1d, 0xe9, 0x1d, 0x2e, 0x7e, 0x96, 0xa3, 0xf6, 0x09, 0x98, 0xa2, 0xa6, 0x23, 0xc6,
		0x53, 0x5f, 0x34, 0x42, 0xb0, 0xa1, 0xba, 0x83, 0xc6, 0x93, 0x46, 0x29, 0xee, 0xac, 0xf1, 0xa4,
		0x5d, 0x54, 0xba, 0x1d, 0x3c, 0x1d, 0x03, 0x54, 0x77, 0x41, 0x20, 0x1a, 0xa6, 0x57, 0x5d, 0xde,
		0xb9, 0xa3, 0xeb, 0xf2, 0xaa, 0x3b, 0x7a, 0xc0, 0xf7, 0x73, 0x06, 0x90, 0xe8, 0x58, 0x71, 0xf9,
		0xa6, 0x98, 0x9f, 0x5f, 0x61, 0xec, 0x33, 0x87, 0x7e, 0xf0, 0xcd, 0x09, 0x06, 0x2e, 0x1f, 0x59,
		0xce, 0x60, 0x10, 0xb0, 0x30, 0xa4, 0x23, 0xaa, 0x3c, 0x62, 0x1b, 0x44, 0x15, 0x88, 0x2a, 0x10,
		0x55, 0x20, 0xaa, 0x40, 0x54, 0x81, 0xa8, 0x42, 0x2a, 0xea, 0xb8, 0xe3, 0xdb, 0xea, 0x3c, 0x4b,
		0x59, 0xdc, 0xb7, 0xfe, 0xe9, 0x73, 0x46, 0x48, 0x62, 0x29, 0x7f, 0x24, 0x60, 0xcb, 0x99, 0x23,
		0x04, 0x0b, 0x38, 0x19, 0x95, 0xc5, 0x7c, 0xf7, 0xee, 0xeb, 0xb6, 0x75, 0x70, 0xf9, 0xaf, 0xaf,
		0x65, 0xeb, 0xe0, 0x72, 0xfa, 0x6d, 0x39, 0xfe, 0xd7, 0xf4, 0xfb, 0xca, 0xd7, 0x6d, 0xab, 0x3a,
		0xff, 0x7e, 0xf7, 0xeb, 0xb6, 0xb5, 0x7b, 0xf9, 0xfe, 0xe2, 0x62, 0xeb, 0xfd, 0xdf, 0x3b, 0xdf,
		0x5f, 0xfe, 0x17, 0xdf, 0xfd, 0xfb, 0xd7, 0x8b, 0x8b, 0xf1, 0xdf, 0xad, 0xef, 0xd1, 0x3f, 0x9b,
		0xdf, 0x2f, 0xff, 0xf3, 0xfd, 0x7f, 0x51, 0x89, 0xbd, 0x91, 0xa1, 0x17, 0x17, 0x5b, 0x97, 0xff,
		0x61, 0x82, 0x02, 0x14, 0x90, 0x02, 0xdc, 0x38, 0xe1, 0x5f, 0x74, 0x40, 0x7f, 0x6c, 0x0d, 0x60,
		0x3e, 0x60, 0x3e, 0x60, 0x3e, 0x60, 0x3e, 0x60, 0x3e, 0x60, 0x3e, 0xb9, 0xb3, 0xd3, 0x8f, 0x84,
		0x70, 0xfd, 0x2e, 0x8e, 0x4e, 0x1f, 0x7c, 0xe1, 0xe8, 0xf4, 0xc7, 0x46, 0xe1, 0xe8, 0xf4, 0xb5,
		0x21, 0x00, 0x47, 0xa7, 0xcf, 0x70, 0x79, 0xca, 0x47, 0xa7, 0x3b, 0x15, 0xf8, 0x7c, 0x5e, 0x7c,
		0x1e, 0x47, 0xa6, 0xd0, 0x4b, 0x54, 0xe9, 0x25, 0x4c, 0x04, 0x6e, 0x9f, 0x90, 0x62, 0x32, 0xb5,
		0x07, 0x9a, 0x09, 0x34, 0x13, 0x68, 0x26, 0xd0, 0x4c, 0xa0, 0x99, 0x40, 0x33, 0xa1, 0x15, 0x75,
		0xc2, 0xf1, 0xd0, 0x22, 0x91, 0xa4, 0x96, 0x13, 0xd5, 0x1e, 0x94, 0x13, 0x28, 0x27, 0x50, 0x4e,
		0xa0, 0x9c, 0x40, 0x39, 0xf9, 0xb9, 0xcb, 0xef, 0xed, 0xee, 0xee, 0xa0, 0xde, 0x1c, 0xe2, 0x09,
		0xc4, 0x13, 0x88, 0x27, 0x69, 0x88, 0x27, 0xd9, 0x36, 0x5f, 0x7f, 0xa5, 0x82, 0x92, 0x65, 0x9f,
		0x76, 0xc8, 0x28, 0x90, 0x51, 0x20, 0xa3, 0x40, 0x46, 0x81, 0x8c, 0x02, 0x19, 0xe5, 0x95, 0x51,
		0x87, 0xf1, 0xc9, 0x0d, 0x0b, 0xa6, 0xd3, 0xf5, 0x08, 0x15, 0x96, 0x57, 0x09, 0xd8, 0x52, 0xe7,
		0x93, 0x1b, 0x3a, 0x11, 0xb0, 0xe7, 0x77, 0x45, 0xe0, 0xf2, 0x11, 0x29, 0x3a, 0x67, 0x6e, 0x47,
		0x3e, 0xd4, 0xfb, 0xf3, 0xac, 0x6e, 0x97, 0x4d, 0x42, 0xb4, 0xb7, 0x9c, 0x98, 0x45, 0x20, 0xe4,
		0x11, 0xd2, 0x04, 0xcc, 0x9e, 0xdf, 0x88, 0x53, 0x02, 0x21, 0x17, 0x9a, 0x79, 0x0f, 0x29, 0xa6,
		0x3d, 0xf7, 0x9d, 0x43, 0xa3, 0x0c, 0x56, 0x4b, 0x21, 0x6f, 0xa3, 0x1b, 0x9f, 0x1c, 0xd0, 0x28,
		0x67, 0x0a, 0xff, 0x4f, 0xed, 0x50, 0x30, 0x9a, 0xd7, 0x0b, 0x07, 0x57, 0xa5, 0x64, 0x36, 0x64,
		0xf2, 0x5d, 0xf4, 0x4d, 0xfc, 0xa7, 0xd2, 0x83, 0x2e, 0xe6, 0xa5, 0x69, 0xbb, 0xd9, 0x37, 0xc5,
		0x70, 0x4a, 0x05, 0x0e, 0x69, 0xc6, 0x0b, 0x61, 0xf9, 0x43, 0x2b, 0x64, 0xc1, 0xad, 0xdb, 0x27,
		0xd0, 0x61, 0x78, 0xcd, 0x22, 0x34, 0x1b, 0x2e, 0xaa, 0x7c, 0x83, 0x66, 0xc3, 0x3a, 0xc8, 0x34,
		0x68, 0x36, 0x0c, 0x78, 0xb3, 0xf4, 0xf2, 0x95, 0x37, 0x1b, 0x8e, 0x12, 0x08, 0x85, 0x8c, 0xf6,
		0x68, 0x66, 0x53, 0x9f, 0xd8, 0x88, 0x24, 0x38, 0x32, 0x89, 0x8e, 0x52, 0xc2, 0x23, 0x99, 0xf8,
		0xa8, 0x25, 0x40, 0xb2, 0x89, 0x90, 0x6c, 0x42, 0xa4, 0x9a, 0x18, 0x89, 0xe8, 0x1e, 0x8a, 0xe3,
		0x8e, 0xea, 0x84, 0xb9, 0x10, 0x04, 0x94, 0x8e, 0x98, 0x79, 0x32, 0x06, 0xaa, 0x1c, 0x39, 0x43,
		0x34, 0x69, 0x92, 0x4b, 0x9e, 0x14, 0x93, 0x28, 0xe9, 0x64, 0x4a, 0x35, 0xa9, 0x92, 0x4f, 0xae,
		0xe4, 0x93, 0x2c, 0xf5, 0x64, 0x4b, 0x23, 0xe9, 0x12, 0x49, 0xbe, 0xe4, 0x92, 0x70, 0x62, 0x10,
		0xc1, 0x91, 0x39, 0x4f, 0x06, 0x56, 0x72, 0x23, 0x74, 0x9e, 0x4a, 0xdb, 0xd4, 0xea, 0x8c, 0xa9,
		0xa5, 0x6f, 0xca, 0x69, 0x5c, 0x8b, 0x74, 0x4e, 0x3d, 0xad, 0x6b, 0x93, 0xde, 0xb5, 0x49, 0xf3,
		0xba, 0xa4, 0x7b, 0x5a, 0x69, 0x9f, 0x58, 0xfa, 0x4f, 0x16, 0x91, 0x4c, 0xed, 0xe0, 0x93, 0x51,
		0x8f, 0xcc, 0x08, 0xa0, 0xa7, 0x72, 0xec, 0x3e, 0x41, 0xd3, 0x68, 0xdd, 0xd6, 0x7c, 0xf8, 0x45,
		0x33, 0x45, 0x18, 0x54, 0x6f, 0x73, 0xae, 0x19, 0x49, 0xf4, 0x76, 0xe7, 0x9a, 0x9d, 0xd4, 0xaf,
		0xbd, 0xad, 0xc7, 0x1c, 0xaa, 0xd7, 0xe0, 0x88, 0xa7, 0x91, 0xd5, 0x2d, 0xe4, 0xdc, 0xe9, 0xb3,
		0x85, 0xa8, 0x8e, 0x28, 0xc2, 0x5e, 0x2a, 0x28, 0x40, 0xa4, 0x6b, 0xd5, 0xe5, 0x1b, 0xbc, 0x1f,
		0xe2, 0xb1, 0x98, 0xe2, 0x88, 0xa4, 0x27, 0x81, 0x3d, 0xb9, 0x91, 0x49, 0x4f, 0x01, 0x7c, 0x88,
		0x68, 0xcf, 0x34, 0x0c, 0x22, 0xda, 0x86, 0x46, 0x42, 0x44, 0x4b, 0xc9, 0x50, 0x88, 0x68, 0x79,
		0x46, 0x23, 0x10, 0xd1, 0x5e, 0x1a, 0xf5, 0x88, 0x8e, 0x7c, 0x7a, 0x2a, 0xe3, 0x52, 0x18, 0x01,
		0xb5, 0x9e, 0xdd, 0x88, 0x8d, 0x84, 0x5a, 0x33, 0x10, 0x23, 0xa2, 0x1e, 0x7d, 0x2d, 0x84, 0x46,
		0x46, 0x81, 0x52, 0xe9, 0x47, 0xa9, 0x88, 0xb4, 0x50, 0x7e, 0x32, 0xb4, 0x93, 0xe9, 0x56, 0x09,
		0xea, 0x04, 0xea, 0x04, 0xea, 0x04, 0xea, 0x04, 0xea, 0x04, 0xea, 0x94, 0x23, 0xea, 0x44, 0xab,
		0x25, 0xf4, 0x53, 0x89, 0x76, 0x0f, 0x45, 0x08, 0x2f, 0xfc, 0x42, 0x11, 0xc2, 0x66, 0x46, 0xa2,
		0x08, 0x21, 0xab, 0xc0, 0x83, 0x22, 0x84, 0x14, 0xb6, 0x90, 0x4e, 0x45, 0x08, 0x04, 0x5b, 0x56,
		0x63, 0x1b, 0x15, 0x14, 0x20, 0xd2, 0xb5, 0x0a, 0x62, 0x19, 0xf9, 0x30, 0x6c, 0x0a, 0x9f, 0x70,
		0xc1, 0x41, 0x64, 0x1c, 0x64, 0xb2, 0xe7, 0x98, 0x05, 0x99, 0x6c, 0x13, 0xc2, 0x08, 0x99, 0x6c,
		0x83, 0x0d, 0x01, 0x99, 0x2c, 0x65, 0x43, 0x21, 0x93, 0xe9, 0x4f, 0x6d, 0x34, 0xb9, 0xa6, 0xf3,
		0x91, 0xb0, 0x40, 0xb6, 0x0b, 0x81, 0xec, 0x85, 0x5f, 0x10, 0xc8, 0xd2, 0x61, 0xf7, 0x10, 0xc8,
		0x0a, 0xcb, 0xec, 0x21, 0x90, 0xa5, 0xb3, 0x85, 0x2a, 0xbb, 0x90, 0xc7, 0x0a, 0xbb, 0x89, 0x20,
		0x8f, 0x3d, 0xeb, 0x0b, 0xf2, 0x18, 0x65, 0x4b, 0xa8, 0xb4, 0xfd, 0x21, 0xd2, 0x8b, 0x7f, 0xcd,
		0x2e, 0x1d, 0x7a, 0xf3, 0x3f, 0x6c, 0xd4, 0x5e, 0x7a, 0xd0, 0xdf, 0x56, 0x65, 0xf3, 0x7e, 0x7a,
		0x5e, 0x4f, 0xc0, 0xe3, 0x49, 0xc9, 0xd1, 0x04, 0x65, 0x68, 0x62, 0xf2, 0x33, 0x9a, 0x3b, 0xbe,
		0xc4, 0x8d, 0xd0, 0xdc, 0xf1, 0x25, 0x8e, 0x8e, 0xe6, 0x8e, 0x9b, 0x02, 0x07, 0x34, 0x77, 0xd4,
		0x07, 0xe5, 0x91, 0x93, 0x8b, 0x93, 0xa8, 0xe5, 0x31, 0x67, 0x18, 0xb0, 0x21, 0xa5, 0x98, 0x35,
		0xbf, 0x73, 0x46, 0xa8, 0x8f, 0x93, 0x79, 0x36, 0x03, 0xc2, 0x5b, 0x5b, 0x53, 0x50, 0x59, 0x8a,
		0x40, 0x03, 0x80, 0x25, 0x01, 0x0b, 0x54, 0x37, 0x4f, 0xff, 0x8d, 0xdd, 0xd3, 0x00, 0x91, 0x66,
		0xd3, 0x0d, 0x45, 0x4d, 0x08, 0x22, 0xbd, 0xdc, 0x4f, 0x5d, 0x5e, 0xf7, 0x58, 0x94, 0xa1, 0x88,
		0xa8, 0x6f, 0xe6, 0xa9, 0x73, 0xb7, 0x64, 0x51, 0xf9, 0x63, 0xb5, 0xba, 0xb7, 0x5f, 0xad, 0x6e,
		0xef, 0xef, 0xec, 0x6f, 0x1f, 0xec, 0xee, 0x96, 0xf7, 0xca, 0x04, 0x34, 0x4d, 0xb3, 0x1d, 0x0c,
		0x58, 0xc0, 0x06, 0x9f, 0x22, 0xa7, 0xe2, 0x13, 0xcf, 0xa3, 0x64, 0xd2, 0x79, 0xc8, 0x02, 0x12,
		0xf2, 0xa4, 0xea, 0x3d, 0x4f, 0x4c, 0xb4, 0xc9, 0x85, 0x58, 0x43, 0x61, 0xbe, 0x4c, 0x28, 0x82,
		0x49, 0x5f, 0xf0, 0x19, 0x34, 0x6a, 0x4d, 0x5f, 0x4c, 0x63, 0xf6, 0x5e, 0xec, 0xb3, 0xd9, 0xdb,
		0xb0, 0xdb, 0xf1, 0xdb, 0xb0, 0x6b, 0x01, 0x73, 0xec, 0x66, 0x38, 0xb8, 0xb2, 0x9b, 0xa1, 0x13,
		0x21, 0xbc, 0xe8, 0xdf, 0x76, 0x2d, 0xac, 0xcf, 0x3e, 0x76, 0xf4, 0xa7, 0xe8, 0xc7, 0xed, 0x61,
		0x77, 0xf6, 0x11, 0x31, 0x5d, 0x35, 0xff, 0x41, 0x02, 0xd3, 0x55, 0x37, 0x08, 0x0a, 0x85, 0x19,
		0xb4, 0xfa, 0x26, 0xc7, 0x3b, 0xc1, 0x64, 0x77, 0x22, 0x70, 0xac, 0x49, 0xe4, 0x3a, 0x57, 0x9e,
		0x1a, 0xde, 0x6b, 0x7e, 0xbb, 0x66, 0xea, 0x3a, 0x83, 0x10, 0x18, 0x58, 0xba, 0xb5, 0x55, 0x5a,
		0x70, 0xd5, 0xfb, 0x31, 0x33, 0x7e, 0x31, 0xde, 0xce, 0x64, 0xa2, 0xe9, 0xee, 0x3c, 0xac, 0x75,
		0xed, 0xfa, 0x1f, 0xbd, 0x7a, 0xa7, 0x55, 0x6b, 0xda, 0xcd, 0x6e, 0xed, 0x2d, 0x26, 0x9b, 0xae,
		0xc8, 0x92, 0xb1, 0x03, 0x61, 0xae, 0xe9, 0x83, 0xdc, 0xb6, 0x24, 0x3a, 0xbe, 0xc2, 0xc3, 0xde,
		0x14, 0x90, 0x30, 0x98, 0xc7, 0x2c, 0xec, 0x07, 0xee, 0x98, 0x04, 0x5b, 0x48, 0xc2, 0x43, 0x83,
		0xf7, 0xbd, 0xc9, 0x80, 0x19, 0xe2, 0x9a, 0x19, 0xb5, 0xae, 0x31, 0x4f, 0xca, 0x46, 0xb3, 0x5b,
		0x33, 0xae, 0x5d, 0x16, 0x38, 0x41, 0xff, 0xfa, 0xde, 0x08, 0x7d, 0x8f, 0x79, 0xf7, 0x46, 0xb4,
		0x15, 0x2e, 0xb8, 0xb8, 0x76, 0x44, 0xfc, 0xdf, 0xe3, 0xc5, 0x76, 0x43, 0xe3, 0x8a, 0xb9, 0x7c,
		0x64, 0x0c, 0xe2, 0x8f, 0x77, 0xc5, 0x06, 0xaa, 0x37, 0x0b, 0xa1, 0xa3, 0x8e, 0xe5, 0x38, 0x32,
		0x58, 0x5a, 0x7e, 0x02, 0x14, 0x87, 0xe2, 0xb9, 0xc6, 0x4a, 0x58, 0xc9, 0xc2, 0x33, 0xc1, 0xbb,
		0x72, 0xfd, 0xd4, 0xcb, 0x5c, 0xa3, 0x69, 0xc5, 0x7c, 0x52, 0x07, 0x1e, 0xa9, 0x20, 0xb0, 0xa6,
		0xaf, 0x15, 0xc9, 0x8d, 0x52, 0xf2, 0x76, 0xa9, 0xc4, 0xfd, 0x62, 0x7a, 0x2e, 0xff, 0xcb, 0x8a,
		0x21, 0xa9, 0xe5, 0x0e, 0xa4, 0x6f, 0x97, 0xc5, 0xa1, 0xea, 0x8a, 0x19, 0x92, 0xe3, 0x85, 0x9a,
		0x1a, 0x22, 0x65, 0xb5, 0x42, 0x2a, 0x6b, 0x82, 0x48, 0xd4, 0xfe, 0xa8, 0x06, 0xbe, 0x64, 0x6a,
		0x79, 0xc8, 0x60, 0x5b, 0x2a, 0xb5, 0x39, 0xf9, 0x56, 0x19, 0x95, 0xd5, 0xd4, 0x10, 0xa8, 0x9d,
		0x51, 0x59, 0x23, 0xb3, 0x5e, 0x0b, 0xb3, 0x9a, 0xee, 0x00, 0x63, 0x36, 0x7e, 0xc3, 0x73, 0xd4,
		0x1c, 0x41, 0x5b, 0x65, 0x20, 0x66, 0xd9, 0x08, 0x35, 0x10, 0xa6, 0x0c, 0x08, 0x03, 0x08, 0x03,
		0x08, 0x03, 0x08, 0x93, 0x57, 0x08, 0xa3, 0x6a, 0xe6, 0xbb, 0x39, 0xbd, 0x18, 0xa5, 0x6c, 0xbb,
		0xcd, 0x63, 0xce, 0xd4, 0x0c, 0x45, 0x1e, 0xae, 0x26, 0xc9, 0x28, 0x4f, 0x36, 0x14, 0x92, 0x0e,
		0xa9, 0xe4, 0x43, 0x25, 0x09, 0x91, 0x4b, 0x46, 0xe4, 0x92, 0x12, 0xb5, 0xe4, 0xa4, 0x26, 0x49,
		0x29, 0x4a, 0x56, 0xca, 0x93, 0x56, 0x62, 0x80, 0x23, 0x84, 0xd3, 0xbf, 0x66, 0x03, 0x2b, 0xf0,
		0x27, 0x82, 0x05, 0x74, 0x0e, 0xd5, 0x1f, 0x1a, 0xa6, 0xfa, 0x66, 0x02, 0x89, 0xcb, 0xa4, 0x64,
		0x2e, 0x91, 0x52, 0xba, 0x3c, 0x4a, 0xf2, 0xd2, 0x28, 0xb5, 0xcb, 0xa2, 0x64, 0x2f, 0x89, 0x92,
		0xbd, 0x1c, 0x4a, 0xf5, 0x52, 0x68, 0xb1, 0x6f, 0x88, 0x91, 0xb9, 0xfc, 0x99, 0x44, 0x9d, 0x81,
		0x2f, 0x04, 0x1b, 0x58, 0xff, 0x98, 0x38, 0x03, 0x0a, 0x71, 0x87, 0xd0, 0x90, 0x41, 0x72, 0x43,
		0x05, 0xa5, 0x0e, 0x11, 0x54, 0x1f, 0x29, 0x2e, 0x0b, 0x1d, 0x29, 0x70, 0x83, 0xf3, 0x27, 0x16,
		0xe1, 0x06, 0xe7, 0x66, 0x26, 0xd1, 0xb9, 0xc1, 0x59, 0xc8, 0x52, 0xf0, 0xf9, 0x91, 0xda, 0x8d,
		0x13, 0xfe, 0x45, 0x87, 0xb6, 0xae, 0x58, 0x05, 0xce, 0x0a, 0xce, 0x0a, 0xce, 0x0a, 0xce, 0x0a,
		0xce, 0x0a, 0xce, 0x4a, 0x2a, 0xea, 0x50, 0xe9, 0x67, 0x4f, 0xa8, 0x7f, 0x3d, 0xb1, 0x7e, 0xf5,
		0x84, 0xba, 0x5b, 0x51, 0xec, 0x47, 0x4f, 0xb5, 0xff, 0x3c, 0xf9, 0x56, 0xd9, 0x74, 0x5b, 0x63,
		0x53, 0x9a, 0xf4, 0x45, 0xb1, 0x7f, 0x7c, 0xe2, 0xf2, 0x3b, 0x15, 0xf8, 0x7c, 0x5e, 0x7c, 0x1e,
		0x5d, 0xef, 0xe2, 0xaf, 0x4b, 0x5c, 0x2a, 0xcd, 0x7f, 0xa4, 0x45, 0x33, 0x9f, 0x1f, 0x5c, 0xc2,
		0x5c, 0x2a, 0x10, 0x57, 0xd9, 0x69, 0x1d, 0xdd, 0x7b, 0xd2, 0x75, 0x35, 0x74, 0xef, 0xd1, 0xa1,
		0x7b, 0x4f, 0xab, 0xde, 0xfb, 0xbd, 0xdd, 0xf9, 0x0d, 0x9d, 0x7b, 0xe6, 0xac, 0x1c, 0x9d, 0x7b,
		0x7e, 0x9c, 0xc8, 0x5e, 0xd4, 0xb9, 0x67, 0xc5, 0xbb, 0xd0, 0xb5, 0x87, 0x62, 0xd7, 0x9e, 0x59,
		0xf6, 0x45, 0xc7, 0x9e, 0xd4, 0xe3, 0x07, 0x3a, 0xf6, 0xbc, 0x2c, 0x9c, 0xa4, 0xed, 0x95, 0x20,
		0x56, 0xb9, 0x7e, 0x2a, 0xba, 0xf5, 0x14, 0x98, 0x28, 0xea, 0xda, 0xa9, 0x67, 0xf6, 0xb7, 0xd0,
		0xa6, 0x27, 0x95, 0x15, 0xe1, 0x61, 0xe8, 0xac, 0x36, 0x70, 0x52, 0x77, 0xcb, 0x7d, 0xcd, 0x14,
		0xdc, 0x75, 0xcf, 0xf4, 0xc1, 0xb8, 0xeb, 0x8e, 0xbb, 0xee, 0xb4, 0x80, 0x2d, 0xee, 0xba, 0x4b,
		0x21, 0xd4, 0xb8, 0xeb, 0x8e, 0xbb, 0xee, 0xb8, 0xeb, 0x8e, 0xbb, 0xee, 0x24, 0x93, 0x11, 0x59,
		0xb5, 0x05, 0x77, 0xdd, 0x8d, 0x22, 0xdf, 0x75, 0x4f, 0x98, 0x49, 0x7c, 0xa5, 0xdc, 0x12, 0xce,
		0x88, 0x8e, 0x1a, 0xfd, 0x88, 0x6d, 0xb8, 0x3d, 0x80, 0xdb, 0x03, 0x1a, 0xa4, 0x3f, 0x6a, 0x69,
		0x90, 0x6c, 0x3a, 0x24, 0x9b, 0x16, 0xa9, 0xa6, 0x47, 0xb5, 0x69, 0x52, 0x71, 0xba, 0x4c, 0x16,
		0x85, 0xe6, 0xed, 0x81, 0x9d, 0x0a, 0xa1, 0xeb, 0x03, 0xfb, 0xb8, 0x3e, 0xf0, 0xe0, 0x0b, 0xd7,
		0x07, 0x7e, 0x6c, 0x14, 0xae, 0x0f, 0xbc, 0x36, 0x06, 0xe0, 0xfa, 0xc0, 0x33, 0x5c, 0x9e, 0xf2,
		0xf5, 0x81, 0x6a, 0xe5, 0xa0, 0x7a, 0xb0, 0xb7, 0x5f, 0x39, 0xd8, 0x85, 0xef, 0xe7, 0xc5, 0xf7,
		0x71, 0x8d, 0x20, 0xfe, 0xba, 0x44, 0x1b, 0x06, 0xe9, 0x9b, 0x62, 0xe8, 0x07, 0xdf, 0x9c, 0x60,
		0xe0, 0xf2, 0x91, 0xe5, 0x0c, 0x06, 0x01, 0x0b, 0x43, 0x3a, 0xa2, 0xca, 0x23, 0xb6, 0x41, 0x54,
		0x81, 0xa8, 0x02, 0x51, 0x05, 0xa2, 0x0a, 0x44, 0x15, 0x88, 0x2a, 0xa4, 0xa2, 0x8e, 0x3b, 0xbe,
		0xad, 0xce, 0xb3, 0x94, 0xc5, 0x7d, 0xeb, 0x9f, 0x3e, 0x67, 0xe8, 0x27, 0xf8, 0x20, 0x5b, 0x14,
		0xb9, 0x9f, 0xe0, 0xbb, 0x7f, 0xff, 0x7a, 0x71, 0x31, 0xfe, 0xbb, 0xf5, 0x3d, 0xfa, 0x67, 0xf3,
		0xfb, 0xe5, 0x7f, 0xbe, 0xff, 0x2f, 0x2a, 0xb1, 0x37, 0x32, 0xf4, 0xe2, 0x62, 0xeb, 0xf2, 0x3f,
		0x4c, 0x50, 0x80, 0x02, 0x52, 0x00, 0x5a, 0x1d, 0xd8, 0xd0, 0x79, 0x0d, 0x30, 0x1f, 0x30, 0x1f,
		0x30, 0x1f, 0x30, 0x1f, 0x30, 0x1f, 0x9d, 0xd7, 0x7e, 0x96, 0xa2, 0xd0, 0x79, 0xed, 0xe1, 0x17,
		0x8e, 0x4e, 0x7f, 0x6c, 0x14, 0x8e, 0x4e, 0x5f, 0x1b, 0x02, 0x70, 0x74, 0xfa, 0x0c, 0x97, 0x47,
		0xe7, 0x35, 0xf8, 0x7c, 0xee, 0x71, 0x11, 0x1d, 0x2b, 0xa0, 0x97, 0x28, 0xd0, 0x4b, 0x98, 0x08,
		0xdc, 0x3e, 0x21, 0xc5, 0x64, 0x6a, 0x0f, 0x34, 0x13, 0x68, 0x26, 0xd0, 0x4c, 0xa0, 0x99, 0x40,
		0x33, 0x81, 0x66, 0x42, 0x2b, 0xea, 0x84, 0xe3, 0xa1, 0x45, 0x22, 0x49, 0x2d, 0x27, 0xaa, 0x3d,
		0x28, 0x27, 0x50, 0x4e, 0xa0, 0x9c, 0x40, 0x39, 0x81, 0x72, 0xf2, 0x73, 0x97, 0xdf, 0xdb, 0xdd,
		0xdd, 0x41, 0xbd, 0x39, 0xc4, 0x13, 0x88, 0x27, 0x10, 0x4f, 0xd2, 0x10, 0x4f, 0xe2, 0xa6, 0x78,
		0xd4, 0x14, 0x94, 0xa9, 0x51, 0x90, 0x51, 0x20, 0xa3, 0x40, 0x46, 0x81, 0x8c, 0x02, 0x19, 0x05,
		0x32, 0x0a, 0xa9, 0xa8, 0xc3, 0xf8, 0xe4, 0x86, 0x05, 0x0e, 0x95, 0x56, 0xdc, 0xf3, 0xc2, 0xf2,
		0x2a, 0x01, 0x5b, 0xea, 0x7c, 0x72, 0x43, 0x27, 0x02, 0xf6, 0xfc, 0xae, 0x08, 0x5c, 0x3e, 0x22,
		0x45, 0xe7, 0xcc, 0xed, 0xc8, 0x87, 0x7a, 0x7f, 0x9e, 0xd5, 0xed, 0xb2, 0x49, 0x88, 0xf6, 0x96,
		0x13, 0xb3, 0x08, 0x84, 0x3c, 0x42, 0x9a, 0x80, 0xd9, 0xf3, 0x1b, 0x71, 0x4a, 0x20, 0xe4, 0x42,
		0x33, 0xef, 0x21, 0xc5, 0xb4, 0xe7, 0xbe, 0x73, 0x68, 0x94, 0xc1, 0x6a, 0x29, 0xe4, 0xed, 0x42,
		0xb2, 0xda, 0x71, 0xe0, 0x8f, 0x9d, 0x91, 0xca, 0xde, 0xaa, 0x6b, 0x70, 0x61, 0x61, 0x12, 0x18,
		0x2d, 0x18, 0x2d, 0x18, 0x2d, 0x18, 0x2d, 0x18, 0x2d, 0x18, 0x2d, 0xa9, 0xa8, 0x73, 0xe5, 0xfb,
		0x1e, 0x73, 0x48, 0xb1, 0xd9, 0x72, 0xa1, 0x5d, 0x84, 0xc0, 0xb8, 0xcb, 0x35, 0x9b, 0x02, 0x36,
		0x64, 0x01, 0xe3, 0x7d, 0xd4, 0x49, 0xfc, 0x60, 0x27, 0x75, 0x4e, 0x8e, 0x76, 0xca, 0xdb, 0xe5,
		0x0f, 0x46, 0x97, 0xc5, 0x67, 0xa2, 0x46, 0x65, 0x6b, 0x87, 0x12, 0xcb, 0x27, 0x96, 0xd2, 0x1f,
		0x4b, 0xed, 0x0b, 0x3f, 0x23, 0x76, 0x8c, 0x4c, 0x35, 0xcb, 0x3f, 0x9a, 0xed, 0x1f, 0x75, 0x44,
		0x1c, 0x7c, 0x13, 0xb3, 0x02, 0xf3, 0xda, 0x0b, 0x90, 0xd5, 0x31, 0xaf, 0xfd, 0x47, 0x63, 0xf8,
		0x1e, 0x8e, 0x3a, 0x2b, 0xd8, 0xd4, 0x76, 0x05, 0xb3, 0xbe, 0xe2, 0xa5, 0xb0, 0xfc, 0xa1, 0x15,
		0xb2, 0xe0, 0xd6, 0xed, 0x13, 0x18, 0x43, 0xb4, 0x66, 0x11, 0x26, 0x12, 0x29, 0x31, 0x00, 0x13,
		0x89, 0x68, 0xc2, 0x65, 0x4c, 0x24, 0x7a, 0x11, 0xf6, 0xc5, 0x44, 0x22, 0xc9, 0x2f, 0x5f, 0xf9,
		0x44, 0xa2, 0x28, 0x81, 0x50, 0xc8, 0x68, 0x8f, 0x66, 0x36, 0xf5, 0x89, 0x8d, 0x48, 0x82, 0x23,
		0x93, 0xe8, 0x28, 0x25, 0x3c, 0x92, 0x89, 0x8f, 0xaa, 0x5e, 0x84, 0x23, 0x20, 0xdd, 0x13, 0x23,
		0x0d, 0xed, 0x45, 0xb5, 0xbe, 0xaf, 0x3a, 0x61, 0x2e, 0x24, 0x01, 0x41, 0xa1, 0x56, 0x62, 0x2d,
		0x06, 0xaa, 0x9c, 0x4b, 0x4b, 0x34, 0x69, 0x92, 0x4b, 0x9e, 0x14, 0x93, 0x28, 0xe9, 0x64, 0x4a,
		0x35, 0xa9, 0x92, 0x4f, 0xae, 0xe4, 0x93, 0x2c, 0xf5, 0x64, 0x4b, 0x23, 0xe9, 0x12, 0x49, 0xbe,
		0xe4, 0x92, 0x70, 0x62, 0x10, 0xc1, 0xb9, 0xba, 0x4f, 0x06, 0x56, 0x72, 0x73, 0x76, 0x9f, 0x4a,
		0xdb, 0xd4, 0x2e, 0x23, 0x53, 0x4b, 0xdf, 0x94, 0xd3, 0xb8, 0x16, 0xe9, 0x9c, 0x7a, 0x5a, 0xd7,
		0x26, 0xbd, 0x6b, 0x93, 0xe6, 0x75, 0x49, 0xf7, 0xb4, 0xd2, 0x3e, 0xb1, 0xf4, 0x9f, 0x2c, 0x22,
		0x99, 0x72, 0xcc, 0x27, 0xa3, 0x1e, 0x99, 0x39, 0xc1, 0x4f, 0xe5, 0xd8, 0x7d, 0x82, 0xa6, 0xd1,
		0x6a, 0xe9, 0xf4, 0xf0, 0x8b, 0x66, 0x8a, 0x30, 0xa8, 0xb6, 0x7c, 0x5a, 0x33, 0x92, 0x68, 0x0b,
		0xa8, 0x35, 0x3b, 0xa9, 0xf7, 0xc6, 0x59, 0x8f, 0x39, 0x54, 0x7b, 0xe5, 0x10, 0x4f, 0x23, 0xab,
		0x5b, 0xc8, 0xb9, 0xd3, 0x67, 0x0b, 0x51, 0x9d, 0x63, 0x8c, 0xbd, 0x54, 0x50, 0x80, 0x48, 0xd7,
		0xaa, 0xcb, 0x37, 0x78, 0x3f, 0xc4, 0x63, 0x31, 0xc5, 0x39, 0xca, 0x4f, 0x02, 0x7b, 0x72, 0x73,
		0x95, 0x9f, 0x02, 0xf8, 0x10, 0xd1, 0x9e, 0x69, 0x18, 0x44, 0xb4, 0x0d, 0x8d, 0x84, 0x88, 0x96,
		0x92, 0xa1, 0x10, 0xd1, 0xf2, 0x8c, 0x46, 0x20, 0xa2, 0xbd, 0x34, 0xea, 0x11, 0x9d, 0x0b, 0xfd,
		0x54, 0xc6, 0xa5, 0x30, 0x27, 0x7a, 0x3d, 0xbb, 0x11, 0x9b, 0x1b, 0xbd, 0x66, 0x20, 0xe6, 0x48,
		0x3f, 0xfa, 0x5a, 0x08, 0xcd, 0x95, 0x06, 0xa5, 0xd2, 0x8f, 0x52, 0x11, 0x99, 0xb3, 0xf4, 0x64,
		0x68, 0x27, 0x33, 0xd2, 0x02, 0xd4, 0x09, 0xd4, 0x09, 0xd4, 0x09, 0xd4, 0x09, 0xd4, 0x09, 0xd4,
		0x29, 0x47, 0xd4, 0x89, 0xd6, 0xdc, 0xa8, 0xa7, 0x12, 0xed, 0x1e, 0x8a, 0x10, 0x5e, 0xf8, 0x85,
		0x22, 0x84, 0xcd, 0x8c, 0x44, 0x11, 0x42, 0x56, 0x81, 0x07, 0x45, 0x08, 0x29, 0x6c, 0x21, 0x9d,
		0x8a, 0x10, 0x08, 0xce, 0xb5, 0xc2, 0x36, 0x2a, 0x28, 0x40, 0xa4, 0x6b, 0x15, 0xc4, 0x32, 0xf2,
		0x61, 0xd8, 0x14, 0x3e, 0xe1, 0x82, 0x83, 0xc8, 0x38, 0xc8, 0x64, 0xcf, 0x31, 0x0b, 0x32, 0xd9,
		0x26, 0x84, 0x11, 0x32, 0xd9, 0x06, 0x1b, 0x02, 0x32, 0x59, 0xca, 0x86, 0x42, 0x26, 0xd3, 0x9f,
		0xda, 0x68, 0x72, 0x4d, 0xe7, 0x23, 0x61, 0x81, 0x6c, 0x17, 0x02, 0xd9, 0x0b, 0xbf, 0x20, 0x90,
		0xa5, 0xc3, 0xee, 0x21, 0x90, 0x15, 0x96, 0xd9, 0x43, 0x20, 0x4b, 0x67, 0x0b, 0x55, 0x76, 0x21,
		0x8f, 0x15, 0x76, 0x13, 0x41, 0x1e, 0x7b, 0xd6, 0x17, 0xe4, 0x31, 0xca, 0x96, 0x50, 0x69, 0xfb,
		0x43, 0xa4, 0x1b, 0xff, 0x9a, 0x5d, 0x7a, 0x74, 0xe7, 0x7f, 0xd8, 0xaa, 0xbd, 0xf4, 0xa0, 0xc3,
		0xad, 0xca, 0xf6, 0xfd, 0xf4, 0xfc, 0x9e, 0x80, 0xcf, 0x93, 0x12, 0xa4, 0x09, 0x0a, 0xd1, 0xc4,
		0x04, 0x68, 0xb4, 0x77, 0x7c, 0x89, 0x1b, 0xa1, 0xbd, 0xe3, 0x4b, 0x1c, 0x1d, 0xed, 0x1d, 0x37,
		0x85, 0x0e, 0x68, 0xef, 0xa8, 0x0f, 0xce, 0x23, 0x27, 0x18, 0x27, 0x51, 0xcb, 0x63, 0xce, 0x30,
		0x60, 0x43, 0x4a, 0x31, 0x6b, 0x7e, 0xeb, 0x8c, 0x50, 0x27, 0x27, 0xf3, 0x6c, 0x06, 0x85, 0xb7,
		0xb6, 0xa6, 0xa0, 0xb2, 0x14, 0x81, 0x06, 0x00, 0x4b, 0x02, 0x16, 0xa8, 0x6e, 0x9f, 0xfe, 0x1b,
		0xbb, 0xa7, 0x01, 0x22, 0xcd, 0xa6, 0x1b, 0x8a, 0x9a, 0x10, 0x44, 0xba, 0xb9, 0x9f, 0xba, 0xbc,
		0xee, 0xb1, 0x28, 0x43, 0x11, 0xd1, 0xdf, 0xcc, 0x53, 0xe7, 0x6e, 0xc9, 0xa2, 0xf2, 0xc7, 0x6a,
		0x75, 0x6f, 0xbf, 0x5a, 0xdd, 0xde, 0xdf, 0xd9, 0xdf, 0x3e, 0xd8, 0xdd, 0x2d, 0xef, 0x95, 0x09,
		0xa8, 0x9a, 0x66, 0x3b, 0x18, 0xb0, 0x80, 0x0d, 0x3e, 0x45, 0x4e, 0xc5, 0x27, 0x9e, 0x47, 0xc9,
		0xa4, 0xf3, 0x90, 0x05, 0x24, 0x04, 0x4a, 0xd5, 0x7b, 0x9e, 0x98, 0x6c, 0x93, 0x13, 0xb9, 0x86,
		0xc2, 0x8c, 0x99, 0x50, 0x04, 0x93, 0xbe, 0xe0, 0x33, 0x70, 0xd4, 0x9a, 0xbe, 0x9a, 0xc6, 0xec,
		0xcd, 0xd8, 0x67, 0xb3, 0xf7, 0x61, 0xb7, 0xe3, 0xf7, 0x61, 0xd7, 0x02, 0xe6, 0xd8, 0xcd, 0x70,
		0x70, 0x65, 0x37, 0x43, 0x27, 0xc2, 0x78, 0xd1, 0xbf, 0xed, 0x56, 0x18, 0x3a, 0xf5, 0xd9, 0x07,
		0x8f, 0xfe, 0x1c, 0xfd, 0x87, 0xf6, 0xb0, 0x3b, 0xfb, 0x90, 0x98, 0xb2, 0x9a, 0xff, 0x40, 0x81,
		0x29, 0xab, 0x1b, 0x05, 0x86, 0xc2, 0x0c, 0x5c, 0x7d, 0x93, 0xe3, 0xbd, 0x60, 0xb2, 0x3b, 0x11,
		0x38, 0xd6, 0x24, 0x72, 0x9e, 0x2b, 0x4f, 0x0d, 0xfb, 0x35, 0xbf, 0x5d, 0x33, 0x75, 0x1d, 0x42,
		0x08, 0x0c, 0x2e, 0xdd, 0xda, 0x2a, 0x2d, 0x18, 0xeb, 0xfd, 0x98, 0x19, 0xbf, 0x18, 0x6f, 0x67,
		0x62, 0xd1, 0x74, 0x7f, 0x1e, 0xb6, 0xba, 0xdd, 0x9a, 0x5d, 0xeb, 0xda, 0xf5, 0x3f, 0x7a, 0xf5,
		0x4e, 0xab, 0xd6, 0xb4, 0x9b, 0xdd, 0xda, 0x5b, 0x8c, 0x39, 0x5d, 0x51, 0x28, 0x63, 0x2f, 0xc2,
		0x90, 0xd3, 0x07, 0x29, 0x6e, 0x49, 0x7f, 0x7c, 0xad, 0x9b, 0xbd, 0x29, 0x20, 0x81, 0x30, 0x8f,
		0x59, 0xd8, 0x0f, 0xdc, 0x31, 0x09, 0xf6, 0x90, 0x04, 0x8a, 0x06, 0xef, 0x7b, 0x93, 0x01, 0x33,
		0xc4, 0x35, 0x33, 0xa2, 0xb5, 0x32, 0xe6, 0x00, 0xd6, 0x68, 0x76, 0x6b, 0xc6, 0xb5, 0xcb, 0x02,
		0x27, 0xe8, 0x5f, 0xdf, 0x1b, 0xa1, 0xef, 0x31, 0xef, 0xfe, 0x82, 0x47, 0x5b, 0xc2, 0x10, 0xd7,
		0x8e, 0x88, 0xff, 0x7b, 0xbc, 0xe6, 0x6e, 0x68, 0x5c, 0x31, 0x97, 0x8f, 0x8c, 0x41, 0xfc, 0x01,
		0xaf, 0xd8, 0x40, 0xf5, 0x9e, 0x21, 0x74, 0xf8, 0xb1, 0x1c, 0x4e, 0x06, 0x4b, 0x0e, 0x40, 0x80,
		0xf2, 0x50, 0x3c, 0xe9, 0x58, 0x89, 0x2e, 0xd9, 0xf8, 0x26, 0x78, 0x58, 0xae, 0x9f, 0x7a, 0x99,
		0x6b, 0x6c, 0xad, 0x98, 0x5f, 0xea, 0xc1, 0x2b, 0x15, 0x04, 0xd7, 0x2c, 0xf4, 0x23, 0xb9, 0x91,
		0x4a, 0xde, 0x4e, 0x95, 0xb8, 0x67, 0x4c, 0x7f, 0xec, 0xfc, 0x63, 0xc2, 0x62, 0xa7, 0x90, 0xbd,
		0x5f, 0x16, 0xf5, 0x21, 0x0b, 0x1b, 0x24, 0x47, 0x0b, 0x35, 0x43, 0x63, 0x95, 0x55, 0x0f, 0xa9,
		0xac, 0x12, 0x22, 0x51, 0x0d, 0xa4, 0x1a, 0xf8, 0x92, 0xa9, 0xee, 0x21, 0x83, 0x6d, 0xa9, 0x54,
		0xeb, 0xe4, 0x5b, 0x71, 0x54, 0x35, 0x44, 0x35, 0x1e, 0x40, 0xca, 0x07, 0x6c, 0x60, 0x79, 0x2e,
		0xff, 0x4b, 0xdd, 0xb6, 0x5b, 0x9e, 0x87, 0xba, 0x30, 0x47, 0x91, 0xc7, 0xab, 0x9d, 0x54, 0xae,
		0xbc, 0x74, 0x95, 0x42, 0xa9, 0x2a, 0xa9, 0xd2, 0x54, 0x8a, 0xc2, 0x2e, 0x89, 0xd2, 0x53, 0xda,
		0xd2, 0x2e, 0x81, 0xd2, 0xd2, 0x62, 0x1d, 0x1d, 0xab, 0x9e, 0x04, 0x6e, 0x4e, 0x2f, 0xcd, 0x90,
		0x51, 0xa6, 0xa7, 0xe6, 0xa8, 0x2e, 0xf2, 0x53, 0x9a, 0xcc, 0xc8, 0x24, 0x35, 0x4a, 0xc9, 0x8d,
		0x64, 0x92, 0xa3, 0x96, 0xec, 0xc8, 0x26, 0x3d, 0xb2, 0xc9, 0x8f, 0x6a, 0x12, 0x54, 0x9b, 0x0c,
		0x15, 0x27, 0x45, 0x32, 0xc9, 0x31, 0x31, 0x24, 0x62, 0x56, 0xd6, 0xc0, 0x11, 0x0e, 0xbd, 0xeb,
		0x8c, 0x0b, 0xd3, 0x70, 0xa9, 0x91, 0x72, 0x12, 0xa5, 0x98, 0x4c, 0x49, 0x27, 0x55, 0xaa, 0xc9,
		0x95, 0x7c, 0x92, 0x25, 0x9f, 0x6c, 0xa9, 0x27, 0x5d, 0x1a, 0xc9, 0x97, 0x48, 0x12, 0x4e, 0x16,
		0x8b, 0xee, 0xa5, 0xc6, 0x09, 0xa7, 0x51, 0x5b, 0xb3, 0xc6, 0x1f, 0x0f, 0x08, 0xd9, 0x34, 0x5b,
		0x3e, 0x5a, 0xdd, 0xee, 0x08, 0xb7, 0x54, 0x1c, 0xf8, 0x42, 0xb0, 0x81, 0xf5, 0x8f, 0x89, 0x33,
		0xc0, 0xac, 0xc6, 0x17, 0x22, 0x1c, 0xcc, 0x6a, 0x5c, 0xfc, 0x45, 0xcc, 0x3d, 0xd4, 0x22, 0xbd,
		0x69, 0x10, 0x91, 0x26, 0x2e, 0x17, 0x3b, 0x15, 0xc2, 0xc1, 0x68, 0x1f, 0x5d, 0x5e, 0xb5, 0xf7,
		0xb6, 0xe4, 0xc5, 0xa1, 0xcb, 0x6b, 0x8a, 0x76, 0xa2, 0x41, 0x65, 0x41, 0xd2, 0xc7, 0xea, 0x16,
		0xd2, 0xa9, 0xcb, 0x6b, 0xb5, 0x72, 0x50, 0x3d, 0xd8, 0xdb, 0xaf, 0x1c, 0xa0, 0xd9, 0x6b, 0x61,
		0xf7, 0x12, 0x9a, 0xbd, 0xea, 0x08, 0xa0, 0xdf, 0xe0, 0xbd, 0xd0, 0x7a, 0x1f, 0x14, 0x5a, 0x6f,
		0xc6, 0xc7, 0x42, 0xee, 0x80, 0xe8, 0x79, 0x95, 0x3b, 0xc0, 0x69, 0xd5, 0xa3, 0xe6, 0xe0, 0xb4,
		0xea, 0x05, 0xae, 0x84, 0xd3, 0xaa, 0x97, 0x38, 0x3a, 0x4e, 0xab, 0x36, 0x34, 0x10, 0xa7, 0x55,
		0xfa, 0xf0, 0x31, 0xc2, 0xa7, 0x55, 0x34, 0x0f, 0x16, 0x28, 0x1e, 0x28, 0x90, 0x3d, 0x48, 0x28,
		0xe8, 0x01, 0x02, 0xf0, 0x3d, 0x31, 0x7c, 0x2f, 0x28, 0x05, 0xb9, 0x55, 0x84, 0x1f, 0x9b, 0x06,
		0x8c, 0x0f, 0x8c, 0x0f, 0x8c, 0x0f, 0x8c, 0x0f, 0x8c, 0x0f, 0x8c, 0x5f, 0x28, 0x8c, 0xef, 0x0e,
		0x18, 0x17, 0xae, 0xb8, 0x27, 0xda, 0x6a, 0x9f, 0xd0, 0x11, 0x8f, 0xd9, 0x98, 0xbd, 0xaa, 0x4f,
		0x4e, 0xc8, 0xe8, 0x4e, 0xaf, 0x6f, 0x77, 0xcf, 0x4e, 0xbe, 0x54, 0xec, 0x4e, 0xfb, 0xbc, 0x57,
		0xef, 0xd8, 0xcd, 0x46, 0xeb, 0x37, 0xbb, 0xf7, 0xe7, 0x59, 0x9d, 0x5a, 0x7c, 0x8d, 0x0f, 0xf3,
		0x42, 0x92, 0xe5, 0x0e, 0x44, 0x47, 0x9e, 0xcf, 0x17, 0xf8, 0xac, 0xdd, 0x68, 0xf5, 0xec, 0x5e,
		0xdb, 0x9e, 0x7e, 0x13, 0xad, 0x30, 0xc1, 0x31, 0xdd, 0x1f, 0xb0, 0xac, 0x2f, 0x5b, 0xd6, 0x6e,
		0xef, 0xfc, 0x93, 0xdd, 0xaa, 0xf7, 0x7e, 0x6f, 0x77, 0x7e, 0xc3, 0xa2, 0xe6, 0x64, 0x51, 0x7b,
		0x9d, 0x5a, 0xab, 0xdb, 0xe8, 0x61, 0x5d, 0x73, 0xb6, 0xae, 0x5f, 0x1a, 0x9d, 0xde, 0x79, 0xad,
		0x49, 0x75, 0x3d, 0x49, 0x59, 0x74, 0x09, 0x4e, 0x42, 0xcc, 0x8a, 0xef, 0x98, 0x91, 0x82, 0x19,
		0x29, 0x3f, 0x6c, 0x59, 0xb9, 0x68, 0x09, 0x58, 0x5a, 0xe9, 0xd9, 0x44, 0x61, 0x70, 0xed, 0xf7,
		0x42, 0x36, 0xe7, 0x16, 0xde, 0x6d, 0x48, 0xa7, 0xf7, 0x49, 0x6c, 0x0d, 0x5a, 0x9f, 0xa0, 0xf5,
		0xc9, 0x4f, 0xfc, 0x04, 0xad, 0x4f, 0x7e, 0xe4, 0xc0, 0x68, 0x7d, 0xf2, 0xd2, 0xd4, 0x8d, 0xd6,
		0x27, 0xf4, 0xf0, 0x14, 0x99, 0xd6, 0x27, 0xc2, 0xbb, 0x25, 0x38, 0xc3, 0xdd, 0xbb, 0x25, 0x76,
		0xb8, 0x5c, 0xc6, 0xe1, 0x32, 0xf9, 0x04, 0x4a, 0x3a, 0x91, 0x52, 0x4d, 0xa8, 0xe4, 0x13, 0x2b,
		0xf9, 0x04, 0x4b, 0x3d, 0xd1, 0x12, 0x13, 0x72, 0x88, 0xc4, 0x2d, 0x2a, 0x09, 0x38, 0x31, 0xc8,
		0x19, 0xfc, 0x9f, 0xd3, 0x67, 0xbc, 0x7f, 0x6f, 0x85, 0x84, 0xee, 0x75, 0xac, 0xc5, 0xd4, 0x55,
		0x33, 0x89, 0xed, 0x40, 0x5a, 0xc9, 0x9a, 0x6c, 0xd2, 0xa6, 0x9c, 0xbc, 0xb5, 0x48, 0xe2, 0xd4,
		0x93, 0xb9, 0x36, 0x49, 0x5d, 0x9b, 0xe4, 0xae, 0x4b, 0x92, 0xa7, 0x95, 0xec, 0x89, 0x25, 0x7d,
		0xb2, 0xc9, 0x3f, 0x31, 0x8c, 0x46, 0xb7, 0xee, 0x9f, 0xc6, 0x64, 0x0a, 0x5d, 0xbc, 0x35, 0x03,
		0x01, 0xe4, 0xc1, 0x80, 0x0e, 0xa0, 0x40, 0x2b, 0x70, 0xa0, 0x0b, 0x48, 0xd0, 0x0e, 0x2c, 0x68,
		0x07, 0x1a, 0x74, 0x03, 0x0f, 0x34, 0x41, 0x04, 0x51, 0x30, 0x41, 0x1e, 0x54, 0x24, 0x06, 0x5e,
		0x39, 0xfd, 0xbf, 0x26, 0x63, 0xfa, 0x71, 0x68, 0x1e, 0xdc, 0x67, 0xf6, 0x12, 0xdf, 0xd3, 0xc7,
		0x6c, 0xe8, 0x4c, 0x3c, 0x41, 0xb6, 0x07, 0xdd, 0x8a, 0xb1, 0x71, 0x83, 0x22, 0x93, 0xb4, 0x9d,
		0x97, 0xc4, 0xd7, 0x9b, 0xd6, 0x6d, 0x43, 0x6d, 0x61, 0xa6, 0x4e, 0x70, 0x53, 0x4b, 0xd8, 0xa9,
		0x1b, 0xfc, 0xd4, 0x16, 0x86, 0x6a, 0x0b, 0x47, 0x75, 0x85, 0xa5, 0xb4, 0xe1, 0x29, 0x71, 0x98,
		0x9a, 0x2c, 0x3a, 0xb9, 0xdb, 0x95, 0x3f, 0xc7, 0x83, 0xbe, 0xef, 0x31, 0x87, 0xeb, 0x10, 0x73,
		0xe7, 0x1a, 0x54, 0xf9, 0x0d, 0x36, 0x50, 0xce, 0x36, 0x8f, 0x39, 0x0a, 0x7c, 0x9d, 0x58, 0xd4,
		0xd4, 0x5c, 0x90, 0x28, 0x90, 0x28, 0x90, 0x28, 0x90, 0x28, 0x90, 0x28, 0x90, 0x28, 0x90, 0x28,
		0x90, 0x28, 0x90, 0x28, 0x90, 0x28, 0x90, 0x28, 0x90, 0x28, 0x55, 0x6b, 0x7b, 0x33, 0xf1, 0x84,
		0x6b, 0x09, 0x7f, 0xec, 0x7b, 0xfe, 0xe8, 0xde, 0x9a, 0x36, 0x54, 0x1a, 0xba, 0x2c, 0xd0, 0x87,
		0x58, 0x3d, 0xfd, 0x11, 0x00, 0xbe, 0x01, 0xbe, 0x01, 0xbe, 0x01, 0xbe, 0x01, 0xbe, 0x01, 0xbe,
		0x01, 0xbe, 0x01, 0xbe, 0x57, 0x46, 0x3c, 0x7e, 0xd4, 0x08, 0x7a, 0xef, 0x6a, 0x60, 0x2a, 0xed,
		0x09, 0x90, 0x0f, 0xbf, 0xf4, 0xc8, 0x60, 0x86, 0x2e, 0x13, 0x22, 0xd7, 0x8c, 0xd6, 0x64, 0x62,
		0xe4, 0x9a, 0xdd, 0xba, 0x4d, 0xbd, 0x5b, 0x0f, 0x71, 0xba, 0x4c, 0xc1, 0xd3, 0x2c, 0xcb, 0xad,
		0x6e, 0x49, 0xe7, 0x4e, 0xdf, 0x2d, 0x59, 0xd9, 0xdd, 0xc5, 0xa6, 0xc4, 0xa6, 0xcc, 0x01, 0x30,
		0xd6, 0xc7, 0xca, 0x4b, 0x48, 0xa7, 0x79, 0x4b, 0x0a, 0x66, 0xe8, 0x0e, 0x68, 0x4d, 0x86, 0xf9,
		0x29, 0xed, 0x49, 0x2c, 0x86, 0x30, 0x9a, 0x86, 0x99, 0x10, 0x46, 0x33, 0xf4, 0x55, 0x08, 0xa3,
		0x59, 0x6e, 0x30, 0x08, 0xa3, 0x92, 0x0d, 0x87, 0x30, 0x5a, 0x3c, 0xca, 0xa8, 0xa1, 0x30, 0x1a,
		0x06, 0x96, 0x26, 0x20, 0x61, 0x19, 0x28, 0x94, 0xab, 0x1a, 0xd8, 0x5a, 0xe7, 0x93, 0x1b, 0x7d,
		0x32, 0x44, 0xcf, 0xef, 0x8a, 0xc0, 0xe5, 0x23, 0xad, 0x64, 0x0e, 0x73, 0x3b, 0xf2, 0xe1, 0x66,
		0xed, 0x53, 0xbd, 0x69, 0x6a, 0xa4, 0x26, 0x95, 0xe3, 0x09, 0x2a, 0x8d, 0x63, 0x53, 0x0f, 0xb2,
		0xfd, 0x41, 0x17, 0x0f, 0x6e, 0xc4, 0xe9, 0x56, 0x23, 0xf7, 0x9d, 0x7a, 0xae, 0x56, 0xf2, 0x56,
		0xec, 0xb7, 0x87, 0x46, 0x19, 0x3a, 0x51, 0x11, 0xf0, 0x16, 0x74, 0xa2, 0x57, 0xec, 0x90, 0x08,
		0x50, 0xdd, 0xce, 0xb4, 0x77, 0x8d, 0x84, 0xa2, 0xa9, 0xc9, 0x50, 0x8a, 0xd2, 0x30, 0x13, 0x4a,
		0x51, 0x86, 0xce, 0x0a, 0xa5, 0x28, 0xcb, 0x0d, 0x06, 0xa5, 0x48, 0xb2, 0xe1, 0x50, 0x8a, 0x8a,
		0x47, 0x5a, 0x34, 0x2d, 0xa1, 0xdb, 0xa9, 0x68, 0x24, 0x12, 0xed, 0xa3, 0x86, 0x2e, 0xe5, 0x2f,
		0xd4, 0xd0, 0x65, 0x6b, 0x34, 0x6a, 0xe8, 0x54, 0xc5, 0x38, 0xd4, 0xd0, 0x49, 0xd8, 0x92, 0x3a,
		0xd7, 0xd0, 0x55, 0x2b, 0x07, 0xd5, 0x83, 0xbd, 0xfd, 0xca, 0x01, 0x4a, 0xe9, 0xb0, 0x37, 0xf3,
		0x00, 0x90, 0xf5, 0xb1, 0x12, 0xa5, 0x74, 0xb9, 0xcb, 0x0d, 0xe6, 0x37, 0xe6, 0x8e, 0xae, 0x85,
		0x3e, 0xfa, 0xe8, 0xcc, 0x5e, 0x88, 0xa3, 0x69, 0x98, 0x09, 0x71, 0x34, 0x43, 0x4f, 0x85, 0x38,
		0x9a, 0xe5, 0x06, 0x83, 0x38, 0x2a, 0xd9, 0x70, 0x88, 0xa3, 0xc5, 0x63, 0x8d, 0xb8, 0x5f, 0x9c,
		0x39, 0x44, 0xc0, 0xfd, 0xe2, 0xb4, 0xbf, 0xa0, 0x8d, 0x66, 0x6b, 0x34, 0xb4, 0x51, 0x55, 0x21,
		0x0e, 0xda, 0xa8, 0x84, 0x2d, 0x89, 0xfb, 0xc5, 0xd8, 0x94, 0x85, 0xd8, 0x94, 0x10, 0x45, 0x53,
		0xf9, 0x82, 0x28, 0x9a, 0x27, 0xcb, 0xa8, 0x4e, 0x56, 0xab, 0x71, 0xee, 0x0b, 0x27, 0x8a, 0x94,
		0xb4, 0x07, 0xac, 0x85, 0xfd, 0x6b, 0x76, 0xe3, 0x8c, 0x1d, 0x71, 0x1d, 0x91, 0xb1, 0x92, 0x3f,
		0x66, 0xbc, 0x1f, 0x8b, 0x8c, 0x16, 0x67, 0xe2, 0x9b, 0x1f, 0xfc, 0x65, 0xb9, 0x3c, 0x14, 0x0e,
		0xef, 0xb3, 0xd2, 0xc3, 0x1f, 0x84, 0x6b, 0x3f, 0x29, 0x8d, 0x03, 0x5f, 0xf8, 0x7d, 0xdf, 0x0b,
		0x93, 0xef, 0x4a, 0x53, 0xdd, 0xa1, 0xe4, 0x04, 0xcc, 0x09, 0xe3, 0x7f, 0x96, 0xbc, 0x70, 0x70,
		0x55, 0xf2, 0x42, 0x27, 0xbe, 0x3a, 0x15, 0x26, 0xdf, 0x45, 0xdf, 0xc4, 0x7f, 0x2a, 0xf9, 0x63,
		0xe7, 0x1f, 0x13, 0x66, 0x45, 0xdf, 0xb2, 0x3b, 0xc1, 0xf8, 0x80, 0x0d, 0x2c, 0xcf, 0xe5, 0x7f,
		0x95, 0x84, 0x77, 0x1b, 0x46, 0xff, 0x28, 0xad, 0x4c, 0x74, 0x2f, 0x4d, 0x47, 0xbb, 0xbe, 0xc1,
		0xa6, 0xd1, 0xcf, 0x22, 0x6a, 0x53, 0x96, 0xd9, 0x9d, 0x08, 0x1c, 0x6b, 0x12, 0xf9, 0xf3, 0x95,
		0x47, 0x53, 0x49, 0x31, 0xbf, 0x5d, 0x33, 0x4e, 0x96, 0xdc, 0x6b, 0x30, 0x80, 0x77, 0x6b, 0x6b,
		0x1a, 0x31, 0x4a, 0x51, 0xd4, 0x31, 0x7e, 0x31, 0xde, 0xce, 0xd4, 0xd1, 0x69, 0x3c, 0x3a, 0xac,
		0x1d, 0xff, 0x77, 0xed, 0xa8, 0xde, 0x3a, 0xfa, 0xd3, 0xee, 0x36, 0x8e, 0xdf, 0x62, 0x48, 0xef,
		0xe6, 0x76, 0x2e, 0x69, 0xff, 0xb1, 0xef, 0x62, 0x44, 0x6f, 0xca, 0x58, 0x63, 0x49, 0xe9, 0x7f,
		0x99, 0x73, 0xe3, 0x04, 0xfe, 0x15, 0xaf, 0xfb, 0x98, 0x85, 0xfd, 0xc0, 0x1d, 0x93, 0xc7, 0x76,
		0x2b, 0x41, 0xaf, 0xc1, 0xfb, 0xde, 0x64, 0xc0, 0x0c, 0x71, 0xcd, 0x8c, 0xda, 0x1c, 0x3d, 0x19,
		0xdd, 0xc6, 0xb1, 0x31, 0x76, 0x02, 0xe7, 0x86, 0x09, 0x16, 0x84, 0x86, 0xcf, 0xbd, 0x7b, 0x23,
		0xda, 0xa2, 0xf1, 0xff, 0x16, 0x7b, 0x90, 0x3f, 0xbc, 0xe0, 0xd1, 0x1f, 0xc2, 0xc9, 0x95, 0xd5,
		0x6b, 0x7e, 0x31, 0xdc, 0xd0, 0x70, 0xf9, 0xc0, 0xed, 0x3b, 0x82, 0x0d, 0x0c, 0x27, 0x34, 0xc2,
		0x49, 0xff, 0x9a, 0xfa, 0x86, 0xd6, 0xe8, 0xac, 0x74, 0x39, 0x56, 0x0e, 0x96, 0xfc, 0x4c, 0x83,
		0x43, 0x07, 0x1d, 0x0f, 0x4a, 0x57, 0x42, 0x67, 0xa6, 0x5b, 0x04, 0xa2, 0x43, 0x9e, 0x44, 0x87,
		0x37, 0x10, 0xb5, 0x74, 0x62, 0x75, 0xc4, 0xc5, 0x98, 0x3c, 0x88, 0x30, 0x04, 0x33, 0x94, 0x19,
		0x8a, 0x60, 0xd2, 0x17, 0x7c, 0x86, 0x80, 0x5a, 0xd3, 0xf7, 0xd4, 0x98, 0xbd, 0x26, 0xfb, 0x6c,
		0xf6, 0x72, 0xec, 0x76, 0xfc, 0x72, 0xec, 0x5a, 0xc0, 0x1c, 0xbb, 0x19, 0x0e, 0xae, 0xec, 0x66,
		0xe8, 0xf4, 0xee, 0xc7, 0x2c, 0xfa, 0xb7, 0xdd, 0x8e, 0x5f, 0x43, 0xf4, 0x5d, 0x7d, 0xf6, 0x16,
		0x9a, 0x2e, 0xff, 0xcb, 0xee, 0x79, 0xb7, 0x76, 0x92, 0x23, 0xba, 0xee, 0x80, 0x56, 0x7c, 0xa7,
		0x13, 0x9f, 0x08, 0x45, 0x02, 0x73, 0x2a, 0x13, 0x52, 0x0b, 0x00, 0x8b, 0x46, 0x02, 0xb1, 0x79,
		0xc4, 0x22, 0xe7, 0xbc, 0x6b, 0x14, 0x31, 0xb3, 0xa8, 0xd6, 0xc1, 0x52, 0xae, 0x7b, 0xd5, 0xa2,
		0xce, 0x95, 0x3a, 0x57, 0xd3, 0xa6, 0x8e, 0x55, 0x1b, 0x3a, 0xa6, 0x4b, 0x9d, 0x2a, 0xce, 0x4d,
		0x7e, 0xa8, 0x89, 0xb9, 0x34, 0xa7, 0xe0, 0x99, 0xa4, 0xbb, 0x4e, 0x27, 0x21, 0x99, 0x70, 0x13,
		0x49, 0xe2, 0x57, 0x63, 0xc8, 0x5f, 0x89, 0xd1, 0xe1, 0x2a, 0x8c, 0x56, 0x57, 0x60, 0x74, 0x3c,
		0xf6, 0xd2, 0xe2, 0xca, 0x8b, 0xde, 0x07, 0x5f, 0x1a, 0x5c, 0x71, 0x41, 0x05, 0xd5, 0x4b, 0x16,
		0x97, 0xfc, 0x55, 0x96, 0x24, 0x6a, 0x4e, 0xc7, 0xe8, 0x8a, 0xfb, 0x80, 0x0d, 0x29, 0xc7, 0xcd,
		0x39, 0x97, 0x27, 0x5c, 0x72, 0x6c, 0x36, 0x66, 0xaf, 0xf2, 0x93, 0x13, 0x6a, 0xd4, 0x03, 0xb2,
		0xdd, 0x3d, 0x3b, 0xf9, 0x52, 0xb1, 0xeb, 0x7f, 0xf4, 0xea, 0xad, 0xe3, 0xfa, 0xb1, 0xdd, 0x6c,
		0xb4, 0x7e, 0xb3, 0xbb, 0xe7, 0x9f, 0x7a, 0xcd, 0x2f, 0x76, 0xef, 0xcf, 0xb3, 0x3a, 0xf5, 0xc0,
		0x1f, 0x97, 0xa3, 0x87, 0x5a, 0x5c, 0x18, 0xd2, 0xe4, 0xba, 0xeb, 0xdc, 0x33, 0x56, 0xea, 0x2d,
		0x70, 0xf9, 0x72, 0xb3, 0xaf, 0x4b, 0x64, 0x76, 0xcd, 0xad, 0x82, 0x88, 0xf2, 0x43, 0x38, 0x8b,
		0x63, 0xca, 0x0c, 0x8e, 0x29, 0x09, 0x56, 0x87, 0xe3, 0x7c, 0xee, 0x31, 0xf7, 0x9a, 0xf0, 0xbf,
		0xb8, 0xff, 0x8d, 0x5b, 0xc2, 0xbb, 0xa5, 0x7b, 0x4a, 0xb7, 0x6c, 0x24, 0xce, 0xea, 0x9e, 0x63,
		0x16, 0xce, 0xea, 0x36, 0x70, 0x37, 0x9c, 0xd5, 0x6d, 0xb2, 0x21, 0x70, 0x56, 0x97, 0x36, 0x42,
		0xc1, 0x59, 0x9d, 0xfe, 0x30, 0x93, 0xec, 0x59, 0x1d, 0xcd, 0x02, 0x9d, 0xb5, 0x98, 0x4c, 0xb1,
		0x50, 0x87, 0x38, 0x08, 0x20, 0x0f, 0x06, 0x74, 0x00, 0x05, 0x5a, 0x81, 0x03, 0x5d, 0x40, 0x82,
		0x76, 0x60, 0x41, 0x3b, 0xd0, 0xa0, 0x1b, 0x78, 0xa0, 0x09, 0x22, 0x88, 0x82, 0x09, 0xf2, 0xa0,
		0x22, 0x31, 0xd0, 0x63, 0x7c, 0x14, 0x0b, 0x57, 0x9a, 0x9c, 0x29, 0xcd, 0xec, 0x45, 0xdf, 0xdc,
		0x22, 0xc0, 0x0e, 0x9d, 0xe0, 0x87, 0x96, 0x30, 0x44, 0x37, 0x38, 0xa2, 0x2d, 0x2c, 0xd1, 0x16,
		0x9e, 0xe8, 0x0a, 0x53, 0x68, 0xc3, 0x15, 0xe2, 0xb0, 0x25, 0x59, 0x74, 0x3d, 0xfb, 0xe6, 0x96,
		0xf7, 0x34, 0x6a, 0x9c, 0xbb, 0x87, 0xc6, 0xb9, 0x29, 0x7f, 0xa1, 0x71, 0x6e, 0xb6, 0x46, 0xa3,
		0x71, 0xae, 0xaa, 0x18, 0x87, 0xc6, 0xb9, 0x12, 0xb6, 0xa4, 0xce, 0x8d, 0x73, 0xf7, 0x76, 0x77,
		0x77, 0xd0, 0x3a, 0x17, 0xdb, 0x32, 0x0f, 0xd8, 0x58, 0x1f, 0x2b, 0xd1, 0x3a, 0x37, 0x77, 0x69,
		0x81, 0xf6, 0x05, 0xc9, 0x35, 0xd6, 0x43, 0xf8, 0xa2, 0xe4, 0x43, 0xbe, 0x03, 0x4d, 0x34, 0x25,
		0x43, 0xa1, 0x89, 0x66, 0x6c, 0x34, 0x34, 0x51, 0x49, 0x86, 0x43, 0x13, 0x05, 0x22, 0xd0, 0x86,
		0x2c, 0x42, 0x13, 0xcd, 0x1e, 0x23, 0x40, 0x13, 0x4d, 0xfb, 0x0b, 0x9a, 0x68, 0xb6, 0x46, 0x43,
		0x13, 0x55, 0x15, 0xe3, 0xa0, 0x89, 0x4a, 0xd8, 0x92, 0xd0, 0x44, 0xb1, 0x2d, 0x0b, 0xb2, 0x2d,
		0xa1, 0x89, 0xa6, 0xf2, 0x05, 0x4d, 0x34, 0x77, 0x69, 0xc1, 0xbc, 0x9d, 0x45, 0x54, 0x4d, 0x44,
		0xd1, 0xa9, 0xb9, 0x50, 0x45, 0xd3, 0x30, 0x13, 0xaa, 0x68, 0x86, 0x8e, 0x0a, 0x55, 0x34, 0xcb,
		0x0d, 0x06, 0x55, 0x54, 0xb2, 0xe1, 0x50, 0x45, 0x8b, 0x47, 0x17, 0x35, 0x54, 0x45, 0xaf, 0x5c,
		0xee, 0x04, 0xf7, 0x1a, 0xa9, 0xa2, 0x07, 0x80, 0xd4, 0x39, 0xb2, 0x0c, 0x13, 0x7a, 0x37, 0xb3,
		0x53, 0xcf, 0xae, 0x4b, 0x4b, 0x7d, 0x72, 0x30, 0x9f, 0x57, 0x5f, 0x8b, 0xd0, 0x22, 0xad, 0x60,
		0x9b, 0xb5, 0x80, 0x73, 0x9c, 0xce, 0xa7, 0x9f, 0xbe, 0xe7, 0xdd, 0xa2, 0x4b, 0x1c, 0x65, 0x4b,
		0x88, 0xc4, 0x22, 0xb3, 0xe9, 0x86, 0xa2, 0x26, 0x04, 0xad, 0xfb, 0xee, 0xe6, 0xa9, 0xcb, 0xeb,
		0x1e, 0x8b, 0xe8, 0x28, 0xb1, 0x63, 0x14, 0xf3, 0xd4, 0xb9, 0x5b, 0xb2, 0xac, 0xfc, 0xb1, 0x5a,
		0xdd, 0xdb, 0xaf, 0x56, 0xb7, 0xf7, 0x77, 0xf6, 0xb7, 0x0f, 0x76, 0x77, 0xcb, 0x7b, 0x94, 0x1a,
		0x52, 0x9b, 0xed, 0x60, 0xc0, 0x02, 0x36, 0xf8, 0x74, 0x6f, 0x1e, 0x1a, 0x7c, 0xe2, 0x79, 0x14,
		0x4d, 0x3b, 0x0f, 0x59, 0x40, 0xea, 0xbc, 0x89, 0xca, 0xce, 0x24, 0x8a, 0x0e, 0xf4, 0x44, 0x05,
		0x26, 0xa9, 0xd1, 0x7d, 0x59, 0x22, 0x00, 0x1a, 0x69, 0x5f, 0x7d, 0x92, 0x55, 0x6b, 0x81, 0xe2,
		0x20, 0x42, 0x2d, 0x78, 0xe8, 0x17, 0x34, 0xd4, 0x6e, 0x23, 0x75, 0xce, 0xab, 0xe6, 0xc9, 0x8a,
		0xb6, 0x8b, 0xc9, 0xee, 0x44, 0xe0, 0x58, 0x93, 0xc8, 0xaf, 0xae, 0x3c, 0xb5, 0x4a, 0xb8, 0x19,
		0xb0, 0x21, 0x0b, 0x18, 0xef, 0xab, 0x2f, 0x4f, 0x25, 0x10, 0x2f, 0xe6, 0x72, 0x7f, 0xe7, 0xe4,
		0x68, 0x7f, 0xef, 0x63, 0xd5, 0xb0, 0x8c, 0x76, 0xf7, 0xec, 0xe4, 0xb6, 0x62, 0x4c, 0x4f, 0x8a,
		0x4b, 0x51, 0xb6, 0x33, 0x22, 0xde, 0xe2, 0x5e, 0x4d, 0x04, 0x33, 0x6a, 0x83, 0x5b, 0x16, 0x08,
		0x37, 0x8c, 0x81, 0x39, 0x81, 0x5c, 0x4f, 0xed, 0xbc, 0x75, 0xf9, 0x3c, 0x75, 0xe1, 0x67, 0x44,
		0x80, 0x2e, 0xd5, 0x23, 0xd3, 0x95, 0x23, 0xd1, 0x57, 0x39, 0x62, 0xd1, 0x41, 0x90, 0xb2, 0xa7,
		0x5f, 0x16, 0x2a, 0x8b, 0x11, 0x01, 0x7b, 0x5a, 0x81, 0x3c, 0x85, 0xc1, 0x2f, 0x43, 0x02, 0xa8,
		0x26, 0xe2, 0xc8, 0xdf, 0xe7, 0x0a, 0x76, 0x9a, 0x99, 0xb8, 0xcf, 0x58, 0x6d, 0xb1, 0x5a, 0x82,
		0x8d, 0x1e, 0x1a, 0xa4, 0x28, 0xfa, 0xa8, 0x6d, 0xd2, 0xad, 0xbc, 0xc6, 0x91, 0x42, 0xed, 0x22,
		0xa9, 0x9a, 0x44, 0x2a, 0xd8, 0x97, 0x5c, 0x0d, 0x21, 0x39, 0xa0, 0x4b, 0xad, 0xe6, 0xaf, 0x58,
		0xda, 0x83, 0xea, 0x26, 0xd3, 0x44, 0x26, 0x54, 0x90, 0x9a, 0x44, 0x41, 0x64, 0xe2, 0x04, 0x99,
		0xc2, 0x7d, 0x4a, 0x85, 0xf9, 0x24, 0x0b, 0xef, 0x29, 0x0b, 0x3d, 0xa4, 0x0a, 0xe7, 0xf5, 0x50,
		0x79, 0x08, 0x15, 0xbe, 0x17, 0xfb, 0xfc, 0x8a, 0xca, 0x04, 0x06, 0xd3, 0x19, 0x0c, 0x02, 0x16,
		0x86, 0xd6, 0xd0, 0xb9, 0x71, 0xbd, 0x7b, 0x3a, 0xfb, 0x7c, 0x1e, 0x0c, 0x1f, 0xd8, 0x47, 0x64,
		0x4f, 0xd1, 0xba, 0x1f, 0x47, 0xee, 0x1e, 0x1c, 0xc5, 0xfb, 0x6e, 0xa4, 0xef, 0xb5, 0x51, 0xbd,
		0xbf, 0x46, 0xfe, 0x9e, 0x1a, 0xf9, 0xfb, 0x68, 0xd4, 0xef, 0x9d, 0xa1, 0x5a, 0x74, 0x79, 0xb1,
		0xc8, 0xdd, 0x17, 0x5b, 0x88, 0xa1, 0x7c, 0x72, 0xc3, 0x82, 0xe9, 0x21, 0x08, 0xa1, 0xb8, 0x35,
		0xe7, 0x93, 0x55, 0x42, 0x36, 0xd5, 0xf9, 0xe4, 0x86, 0x5e, 0x24, 0xed, 0xf9, 0x5d, 0x11, 0xb8,
		0x7c, 0x44, 0xf3, 0x2a, 0xc4, 0x76, 0xe4, 0x63, 0x8d, 0xb3, 0x2f, 0x55, 0xfb, 0xbc, 0xd5, 0x38,
		0xaa, 0x75, 0x7b, 0x26, 0x6e, 0xb6, 0xfc, 0x70, 0x31, 0x1b, 0x71, 0x44, 0x27, 0xb8, 0x92, 0x2b,
		0x8b, 0x78, 0x68, 0x6c, 0xe3, 0x96, 0x04, 0xe5, 0xbc, 0xf7, 0x06, 0x3b, 0xcb, 0x30, 0x1d, 0x21,
		0x9c, 0xfe, 0x35, 0x1b, 0x10, 0x64, 0x9f, 0x73, 0xcb, 0x88, 0xe0, 0x93, 0x63, 0x36, 0x74, 0x26,
		0x9e, 0x20, 0xd5, 0xe0, 0xd1, 0x8c, 0xaf, 0x36, 0xd0, 0xc8, 0x17, 0x97, 0xd0, 0x07, 0xa0, 0x0f,
		0x40, 0x1f, 0x80, 0x3e, 0x00, 0x7d, 0x00, 0xfa, 0x40, 0xa1, 0xf4, 0x81, 0x2b, 0xdf, 0xf7, 0x98,
		0x43, 0x52, 0x1b, 0x28, 0x03, 0x6a, 0x93, 0x81, 0xda, 0xdc, 0x1f, 0x30, 0x7a, 0x30, 0x3b, 0xb6,
		0x0a, 0x10, 0x1b, 0x10, 0x1b, 0x10, 0x1b, 0x10, 0x1b, 0x10, 0x1b, 0x10, 0x1b, 0x10, 0x1b, 0x10,
		0x1b, 0x10, 0x1b, 0x10, 0x5b, 0x47, 0x88, 0x3d, 0xa6, 0x95, 0x78, 0x13, 0xf7, 0xa5, 0x55, 0x2e,
		0x09, 0xf8, 0x06, 0xf8, 0x06, 0xf8, 0x06, 0xf8, 0x06, 0xf8, 0x06, 0xf8, 0x26, 0x27, 0x6a, 0xb9,
		0xe3, 0xdb, 0xaa, 0x35, 0x2f, 0x27, 0xe6, 0xbe, 0xf5, 0x4f, 0x9f, 0x33, 0x8a, 0x58, 0xee, 0x23,
		0x21, 0x9b, 0xce, 0x1c, 0x21, 0x58, 0xc0, 0xc9, 0x0d, 0x14, 0x34, 0xdf, 0xbd, 0xfb, 0xba, 0x6d,
		0x1d, 0x5c, 0xfe, 0xeb, 0x6b, 0xd9, 0x3a, 0xb8, 0x9c, 0x7e, 0x5b, 0x8e, 0xff, 0x35, 0xfd, 0xbe,
		0xf2, 0x75, 0xdb, 0xaa, 0xce, 0xbf, 0xdf, 0xfd, 0xba, 0x6d, 0xed, 0x5e, 0xbe, 0xbf, 0xb8, 0xd8,
		0x7a, 0xff, 0xf7, 0xce, 0xf7, 0x97, 0xff, 0xc5, 0x77, 0xff, 0xfe, 0xf5, 0xe2, 0x62, 0xfc, 0x77,
		0xeb, 0x7b, 0xf4, 0xcf, 0xe6, 0xf7, 0xcb, 0xff, 0x7c, 0xff, 0x5f, 0xd4, 0x62, 0x78, 0x64, 0xf0,
		0xc5, 0xc5, 0xd6, 0xe5, 0x7f, 0xd0, 0x09, 0x8b, 0x97, 0xa0, 0x24, 0xc4, 0x28, 0x89, 0xe5, 0x31,
		0x3e, 0x8a, 0x7b, 0x57, 0x90, 0x64, 0x26, 0x73, 0xf3, 0x40, 0x50, 0x40, 0x50, 0x40, 0x50, 0x40,
		0x50, 0x40, 0x50, 0x40, 0x50, 0x0a, 0x45, 0x50, 0x26, 0x2e, 0x17, 0x1f, 0x09, 0x32, 0x12, 0x4a,
		0x1d, 0xbf, 0x69, 0xce, 0x37, 0x27, 0x78, 0x0d, 0x80, 0xf2, 0xbc, 0x72, 0xea, 0x73, 0xc9, 0xb5,
		0x19, 0x74, 0x4c, 0x7f, 0xa0, 0x31, 0xc1, 0x79, 0x52, 0xa4, 0xe7, 0x86, 0x27, 0x5b, 0x63, 0xa7,
		0x82, 0xbd, 0x91, 0xf7, 0xbd, 0x81, 0xab, 0x59, 0x8f, 0x7e, 0x41, 0x39, 0x22, 0x13, 0x3b, 0xcd,
		0xc0, 0x9f, 0x08, 0x16, 0xb7, 0x1c, 0xa5, 0x27, 0x1b, 0x2d, 0xd9, 0x06, 0xcd, 0xe8, 0x31, 0x73,
		0xa0, 0x19, 0xbd, 0xc0, 0x9b, 0xa0, 0x19, 0xbd, 0xc4, 0xd1, 0xa1, 0x19, 0x6d, 0x68, 0x20, 0x34,
		0x23, 0x7d, 0xd8, 0x03, 0xda, 0x82, 0xbc, 0x32, 0x11, 0xa2, 0x2d, 0xc8, 0xcf, 0x5d, 0x8b, 0x7e,
		0x5b, 0x90, 0xf3, 0x56, 0xf7, 0xac, 0x7e, 0xd4, 0x38, 0x69, 0xd4, 0x8f, 0x29, 0x0e, 0x1c, 0x2d,
		0xc7, 0xad, 0x4b, 0x5a, 0xbd, 0x4e, 0xcd, 0xae, 0x75, 0xea, 0x35, 0x8a, 0x26, 0xee, 0xcc, 0x4c,
		0xac, 0x77, 0xc8, 0x9a, 0xb8, 0x1b, 0x99, 0x58, 0xeb, 0xda, 0xf5, 0x3f, 0x7a, 0xf5, 0x4e, 0xab,
		0xd6, 0xa4, 0x68, 0xe3, 0x7e, 0x3c, 0x4e, 0xa0, 0xdb, 0xad, 0x2d, 0xac, 0x44, 0x97, 0x9a, 0x1f,
		0xc6, 0x16, 0xb2, 0x5d, 0x6a, 0x96, 0x3d, 0x8d, 0xd4, 0x09, 0x43, 0x62, 0xe1, 0xd2, 0x76, 0x3d,
		0x34, 0x76, 0x68, 0x1a, 0x38, 0x0f, 0x79, 0xca, 0x1b, 0x3a, 0x3f, 0x8e, 0x51, 0x56, 0x76, 0xea,
		0xa1, 0xb1, 0x4f, 0xd0, 0xc6, 0xe5, 0xdc, 0x86, 0x66, 0x49, 0xc4, 0xd9, 0x00, 0x7a, 0x16, 0xab,
		0x8d, 0xd9, 0x98, 0xb9, 0xf9, 0xaa, 0x71, 0x4c, 0x53, 0x85, 0xa4, 0x34, 0xed, 0xff, 0x5f, 0xd4,
		0xb1, 0x9b, 0x0a, 0xe7, 0xb5, 0xc4, 0xe3, 0x4e, 0xc9, 0x8c, 0x81, 0x88, 0xad, 0xc1, 0x14, 0x08,
		0x4c, 0x81, 0xf8, 0x89, 0x9f, 0x60, 0x0a, 0xc4, 0x8f, 0x1c, 0x18, 0x53, 0x20, 0x5e, 0x9a, 0xbc,
		0x31, 0x05, 0x82, 0x1e, 0xa2, 0x22, 0x33, 0x05, 0x42, 0x78, 0xb7, 0xf4, 0xce, 0x77, 0x23, 0xa3,
		0x68, 0x1d, 0xec, 0x96, 0x71, 0xb0, 0x4b, 0x3e, 0x81, 0x92, 0x4e, 0xa4, 0x54, 0x13, 0x2a, 0xf9,
		0xc4, 0x4a, 0x3e, 0xc1, 0x52, 0x4f, 0xb4, 0xc4, 0xa4, 0x1c, 0x2a, 0xcd, 0xde, 0x88, 0x24, 0xe0,
		0xc4, 0xa0, 0x07, 0xa2, 0x81, 0x15, 0xfc, 0x3f, 0xf6, 0xde, 0xb6, 0xa9, 0x6d, 0x64, 0x79, 0x1f,
		0x7e, 0x9f, 0x4f, 0xa1, 0x52, 0xd5, 0xa9, 0x24, 0xe7, 0xac, 0xb0, 0x0d, 0x36, 0x04, 0xaa, 0xb6,
		0x4e, 0x99, 0xe0, 0xe4, 0xb8, 0xd6, 0xd8, 0xfc, 0x6c, 0x93, 0xdd, 0x2d, 0xf0, 0xad, 0x12, 0xd6,
		0x00, 0xfa, 0x47, 0x8c, 0x7c, 0xa4, 0x31, 0x81, 0xb3, 0x9b, 0xef, 0x7e, 0x97, 0x64, 0x5b, 0xd8,
		0x3c, 0x24, 0x21, 0xe8, 0xa1, 0x7b, 0x7c, 0xf9, 0x45, 0x70, 0x48, 0xc0, 0x3d, 0xa3, 0x9e, 0xee,
		0xab, 0xaf, 0xe9, 0x87, 0x79, 0xbe, 0x3b, 0x31, 0x33, 0xf1, 0xc4, 0x88, 0xde, 0xb9, 0xb8, 0xc4,
		0x4e, 0x24, 0x2d, 0xe7, 0x4d, 0xd6, 0x89, 0x53, 0x76, 0xe6, 0x2c, 0x9c, 0x3a, 0x75, 0xe7, 0xce,
		0xc6, 0xc9, 0xb3, 0x71, 0xf6, 0x5c, 0x9c, 0x3e, 0x2d, 0xe7, 0x4f, 0x0c, 0x04, 0x90, 0x05, 0x03,
		0xa9, 0x60, 0x34, 0x06, 0x19, 0x7f, 0xd7, 0x26, 0x53, 0x18, 0x70, 0xcc, 0x0c, 0x04, 0x90, 0x07,
		0x03, 0x1c, 0x40, 0x01, 0x2b, 0x70, 0xc0, 0x05, 0x24, 0xb0, 0x03, 0x0b, 0xec, 0x40, 0x03, 0x37,
		0xf0, 0x40, 0x13, 0x44, 0x10, 0x05, 0x13, 0xe4, 0x41, 0x45, 0x2a, 0x20, 0xd1, 0x01, 0xd0, 0xdf,
		0x35, 0xf2, 0x24, 0x07, 0x43, 0x7f, 0x0f, 0x7e, 0x54, 0x89, 0x8b, 0x49, 0x1d, 0x86, 0x70, 0x82,
		0x23, 0x2c, 0x61, 0x09, 0x37, 0x78, 0xc2, 0x16, 0xa6, 0xb0, 0x85, 0x2b, 0x5c, 0x61, 0x0b, 0x6d,
		0xf8, 0x42, 0x1c, 0xc6, 0xa4, 0x0f, 0x9d, 0x5c, 0x25, 0xdc, 0x77, 0xad, 0x2e, 0xcd, 0x0a, 0xb9,
		0xef, 0xf2, 0x14, 0x75, 0x06, 0xb2, 0x92, 0xac, 0xa8, 0x7b, 0x5a, 0x75, 0x29, 0x57, 0xda, 0x3d,
		0x29, 0x35, 0xf1, 0xc1, 0xdc, 0x4c, 0xed, 0xd8, 0x92, 0x52, 0x50, 0x2d, 0x91, 0x7a, 0x52, 0x64,
		0xd2, 0x03, 0xbe, 0x79, 0x7a, 0x5d, 0x06, 0xb8, 0xe0, 0x15, 0x4e, 0xfa, 0xf3, 0x8f, 0x8a, 0x27,
		0x95, 0x08, 0x2d, 0x27, 0x14, 0x0e, 0x1f, 0x5e, 0x63, 0x49, 0x66, 0xe2, 0x58, 0x90, 0xe2, 0xa4,
		0xc4, 0x27, 0x85, 0x25, 0x34, 0x41, 0xf1, 0xa9, 0xd7, 0x08, 0x1c, 0x56, 0x16, 0x62, 0x82, 0xc3,
		0xca, 0xd1, 0x3a, 0x81, 0xc3, 0xca, 0xf3, 0x80, 0x81, 0xc3, 0x2a, 0x58, 0x70, 0x70, 0x58, 0xeb,
		0x17, 0xfb, 0x31, 0xe4, 0xb0, 0xe8, 0x4d, 0x9e, 0xfc, 0x1e, 0x48, 0x20, 0x32, 0x91, 0x12, 0xe1,
		0x54, 0x96, 0xcf, 0x76, 0xc2, 0x03, 0xb0, 0xd0, 0x9c, 0x78, 0x09, 0x58, 0x0d, 0x58, 0x0d, 0x58,
		0x0d, 0x58, 0x0d, 0x58, 0x0d, 0x54, 0x00, 0x58, 0x4d, 0xc2, 0xea, 0x26, 0x13, 0x41, 0xd9, 0x98,
		0x04, 0x8a, 0x03, 0x42, 0x9f, 0x76, 0xc2, 0x44, 0x07, 0x87, 0x3e, 0x29, 0x70, 0x91, 0x03, 0x45,
		0x2b, 0xf3, 0x0f, 0x7b, 0xfb, 0xf7, 0x9b, 0x93, 0x9a, 0xb5, 0x39, 0x5a, 0xfc, 0x65, 0xeb, 0xa4,
		0x6a, 0x6d, 0x8e, 0xde, 0xbe, 0xa5, 0x6f, 0x29, 0x47, 0x88, 0xee, 0x34, 0x8d, 0xee, 0xa8, 0x0d,
		0x09, 0xfd, 0xc1, 0x20, 0x8f, 0xd6, 0xf0, 0x50, 0xc4, 0x7a, 0x88, 0xf5, 0x10, 0xeb, 0x21, 0xd6,
		0x43, 0xac, 0x07, 0x8c, 0x80, 0x58, 0x8f, 0x84, 0xd5, 0xa5, 0x36, 0x5c, 0xf5, 0x7b, 0x10, 0xa1,
		0xc1, 0x40, 0x54, 0x9a, 0xc3, 0x58, 0x9f, 0x7a, 0x31, 0x4a, 0xf1, 0xa4, 0x3c, 0xbc, 0xf5, 0x49,
		0xa1, 0x89, 0x0f, 0x75, 0x7d, 0x52, 0x6e, 0x2e, 0x03, 0x2d, 0x9f, 0x36, 0x71, 0xd4, 0x07, 0x5d,
		0x32, 0xf5, 0x72, 0xab, 0x47, 0xd2, 0xb9, 0xe1, 0x7b, 0x24, 0xa9, 0x0e, 0x93, 0xc5, 0x99, 0x04,
		0x2e, 0xd6, 0x54, 0x4a, 0x30, 0xa4, 0xda, 0xf9, 0x04, 0x33, 0xe9, 0x6e, 0x68, 0x45, 0xde, 0xff,
		0x04, 0x1f, 0x7a, 0x74, 0x49, 0x66, 0x70, 0xa3, 0x59, 0x88, 0x09, 0x6e, 0x34, 0x47, 0x6d, 0x05,
		0x37, 0x9a, 0xe7, 0x01, 0x03, 0x37, 0x5a, 0xb0, 0xe0, 0xe0, 0x46, 0xd7, 0x2f, 0x6a, 0x64, 0xca,
		0x8d, 0xd6, 0xb6, 0x19, 0x91, 0xa3, 0xdb, 0x20, 0x47, 0x33, 0x7e, 0x81, 0x1c, 0xcd, 0x57, 0x68,
		0x90, 0xa3, 0x65, 0xd9, 0x38, 0x90, 0xa3, 0x05, 0x1c, 0x49, 0xce, 0xe4, 0xe8, 0x76, 0xa3, 0xb1,
		0xd5, 0xc0, 0xb1, 0xc4, 0xb1, 0xd4, 0x00, 0x1b, 0xf3, 0x91, 0x12, 0xfc, 0xa8, 0x4e, 0x92, 0x51,
		0xed, 0xbe, 0x4b, 0x6c, 0x64, 0xf1, 0x93, 0x72, 0x32, 0x1b, 0x65, 0xac, 0xfc, 0xeb, 0x28, 0xfe,
		0xa3, 0xf2, 0xe8, 0xfc, 0x1f, 0x0a, 0x93, 0x8e, 0xf9, 0x1c, 0x1f, 0xcc, 0xe4, 0xf8, 0xd6, 0xc1,
		0x10, 0x37, 0x2a, 0x74, 0xac, 0x69, 0xac, 0xd9, 0x67, 0x3e, 0x4d, 0x5a, 0xc5, 0xfc, 0x72, 0x29,
		0xe8, 0x16, 0xba, 0x30, 0x18, 0xd7, 0xb0, 0xb1, 0x31, 0xb3, 0x18, 0x95, 0xd8, 0xfe, 0x18, 0xbf,
		0x1a, 0xaf, 0xe7, 0x54, 0xe9, 0xcc, 0x32, 0xed, 0xb5, 0xfe, 0x18, 0xb6, 0xba, 0x07, 0xad, 0x03,
		0xfb, 0xa8, 0xdf, 0xfa, 0xd0, 0xfe, 0xc3, 0xee, 0x37, 0xbb, 0x1f, 0x5b, 0xaf, 0x31, 0xda, 0xe1,
		0xe5, 0x72, 0x2e, 0x5d, 0x08, 0x24, 0x3a, 0x8c, 0xc1, 0x0e, 0x19, 0xa3, 0x8f, 0x25, 0xfa, 0xff,
		0xe7, 0x94, 0x1c, 0xd7, 0xf4, 0x3f, 0xb1, 0xed, 0x07, 0x22, 0x1a, 0x87, 0xde, 0x84, 0x3c, 0xea,
		0x5b, 0x31, 0x82, 0x6d, 0x39, 0xf6, 0xa7, 0xae, 0x30, 0xd4, 0xa5, 0x30, 0x66, 0x60, 0xca, 0x48,
		0xc0, 0x94, 0x11, 0x4d, 0xcf, 0xac, 0x61, 0xe7, 0x93, 0x11, 0x9f, 0xd0, 0xe4, 0x5f, 0x13, 0x05,
		0x0a, 0xce, 0xe3, 0xf7, 0xa7, 0x72, 0xf1, 0xaf, 0x5e, 0x64, 0x44, 0x13, 0x31, 0xf6, 0xce, 0x3d,
		0xe1, 0x1a, 0x4e, 0x64, 0x44, 0xd3, 0x31, 0xf9, 0x62, 0x28, 0x46, 0xf7, 0xa7, 0xcb, 0xa6, 0xd2,
		0x5d, 0x52, 0x2f, 0x06, 0xf7, 0x10, 0x1c, 0x2f, 0x4f, 0x57, 0x2c, 0x67, 0x1e, 0x27, 0x03, 0xe4,
		0x83, 0x4e, 0xe4, 0xc3, 0x2b, 0x90, 0x5b, 0x9c, 0x62, 0x3a, 0xe2, 0xa4, 0x8c, 0x5e, 0x64, 0x0c,
		0xc5, 0xf9, 0xb8, 0x91, 0x0a, 0xa7, 0x63, 0x25, 0xe7, 0xc8, 0xa7, 0x3b, 0xdb, 0xb1, 0xf6, 0x7c,
		0xc3, 0xec, 0xa3, 0xf9, 0x36, 0xd9, 0xbd, 0x64, 0x9b, 0xec, 0x66, 0x28, 0x1c, 0xbb, 0x13, 0xb9,
		0x67, 0x76, 0x27, 0x72, 0x86, 0xb7, 0x13, 0x11, 0x7f, 0xb5, 0x7b, 0xc9, 0x86, 0xc4, 0xef, 0x5a,
		0xf3, 0x65, 0xcf, 0xf2, 0xdd, 0xec, 0xa1, 0x7f, 0x7d, 0xef, 0x5b, 0xb3, 0x9b, 0xf8, 0x57, 0x30,
		0x59, 0xc4, 0x8d, 0xc3, 0xa2, 0x94, 0x3f, 0xf2, 0x5c, 0xba, 0x13, 0xcf, 0x97, 0x64, 0xc4, 0x98,
		0xf3, 0x1f, 0x11, 0x0b, 0x63, 0xce, 0x5f, 0xa0, 0x6d, 0x18, 0x73, 0x9e, 0x4d, 0xcc, 0x86, 0x31,
		0xe7, 0x99, 0x87, 0x65, 0x18, 0x73, 0xce, 0x14, 0x7e, 0x63, 0xcc, 0xf9, 0xcb, 0x6c, 0x32, 0xc6,
		0x9c, 0xeb, 0x07, 0x06, 0x38, 0x80, 0x02, 0x56, 0xe0, 0x80, 0x0b, 0x48, 0x60, 0x07, 0x16, 0xd8,
		0x81, 0x06, 0x6e, 0xe0, 0x81, 0x26, 0x88, 0x20, 0x0a, 0x26, 0xc8, 0x83, 0x8a, 0x54, 0x40, 0xc7,
		0xbf, 0x08, 0x42, 0x4f, 0x5d, 0x5e, 0x31, 0x9a, 0x70, 0x9e, 0x8a, 0x8c, 0xca, 0xdd, 0x75, 0x00,
		0x1f, 0x9c, 0x40, 0x08, 0x4b, 0x30, 0xc2, 0x0d, 0x94, 0xb0, 0x05, 0x27, 0x6c, 0x41, 0x0a, 0x57,
		0xb0, 0x42, 0x1b, 0xb4, 0x10, 0x07, 0x2f, 0xe9, 0x43, 0x47, 0x57, 0xc3, 0xbc, 0x21, 0x02, 0xba,
		0x1a, 0x66, 0xfd, 0x42, 0xe1, 0x6e, 0xbe, 0x42, 0xa3, 0x70, 0xb7, 0x2c, 0x13, 0x87, 0xc2, 0xdd,
		0x02, 0x8e, 0x24, 0xe7, 0xc2, 0xdd, 0xcd, 0x06, 0xca, 0x76, 0x71, 0x28, 0x75, 0x00, 0xc6, 0x7c,
		0xa4, 0x44, 0xd9, 0xae, 0x76, 0x4e, 0xc1, 0x14, 0x37, 0x13, 0xdf, 0x1b, 0x7b, 0xca, 0x92, 0x53,
		0xdf, 0xe7, 0x43, 0x8f, 0xae, 0x8a, 0x4d, 0x3c, 0xb4, 0x3c, 0x10, 0xe7, 0xce, 0xd4, 0x57, 0x2c,
		0xc2, 0x0a, 0x33, 0x31, 0xed, 0xb4, 0xc9, 0x8e, 0x11, 0x28, 0xf1, 0x2c, 0xc4, 0x04, 0x25, 0x9e,
		0xa3, 0x81, 0x02, 0x25, 0x9e, 0xe7, 0x01, 0x03, 0x25, 0x5e, 0xb0, 0xe0, 0xa0, 0xc4, 0xd7, 0x8f,
		0x2c, 0x60, 0x48, 0x89, 0x9f, 0x05, 0x81, 0x2f, 0x1c, 0xc9, 0x69, 0xa0, 0x6b, 0x0d, 0x41, 0x95,
		0x76, 0x41, 0xd5, 0x95, 0x33, 0x99, 0x78, 0xf2, 0xc2, 0x8a, 0x44, 0x78, 0x2d, 0x42, 0x3e, 0x51,
		0xd5, 0x3d, 0xb9, 0x11, 0x56, 0x21, 0xac, 0x42, 0x58, 0x85, 0xb0, 0x0a, 0x61, 0x15, 0xc2, 0x2a,
		0x84, 0x55, 0x08, 0xab, 0x10, 0x56, 0x21, 0xac, 0x42, 0x58, 0x85, 0xb0, 0xaa, 0xb4, 0xb0, 0x6a,
		0xea, 0x2b, 0xcf, 0x52, 0xc1, 0x24, 0xf0, 0x83, 0x8b, 0x5b, 0xcb, 0x73, 0x85, 0x54, 0xde, 0xb9,
		0xc7, 0x2a, 0xc2, 0x7a, 0x72, 0x09, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xdf,
		0x00, 0xdf, 0x00, 0xdf, 0x00, 0xdf, 0x48, 0xf3, 0xcf, 0x51, 0x54, 0xa4, 0xf9, 0xe7, 0xb4, 0xb1,
		0x48, 0xf3, 0x2f, 0x50, 0x6e, 0x64, 0x14, 0xc3, 0xcb, 0xfd, 0xc0, 0x91, 0x44, 0x9a, 0x3f, 0x0e,
		0xe5, 0x5a, 0x1c, 0x4a, 0xa4, 0xf9, 0x67, 0xf2, 0x42, 0x9a, 0xbf, 0x76, 0x4e, 0xc1, 0x94, 0x81,
		0x35, 0xb9, 0x9c, 0xf0, 0xe1, 0x49, 0xe7, 0xf2, 0x22, 0x03, 0x25, 0x3b, 0x61, 0x91, 0x81, 0x92,
		0x55, 0x84, 0x0b, 0x12, 0x3c, 0x23, 0x41, 0x41, 0x82, 0xe7, 0x2c, 0x34, 0x48, 0xf0, 0x82, 0x04,
		0x07, 0x09, 0x0e, 0x14, 0xc8, 0x86, 0x1e, 0x40, 0x06, 0x4a, 0x01, 0x20, 0x01, 0x19, 0x28, 0x1a,
		0x86, 0x51, 0x91, 0xe7, 0x5a, 0xd1, 0x38, 0x60, 0x70, 0x7a, 0xee, 0x3a, 0x56, 0xa7, 0x22, 0x03,
		0x5c, 0x03, 0x5c, 0x03, 0x5c, 0x03, 0x5c, 0x03, 0x5c, 0x03, 0x5c, 0x03, 0x5c, 0x03, 0x5c, 0xdf,
		0x35, 0x53, 0x91, 0xd3, 0x2b, 0x11, 0x3a, 0x5c, 0x86, 0x9a, 0x2e, 0x00, 0x76, 0x9d, 0x81, 0xac,
		0x2d, 0x39, 0xbd, 0xe2, 0xe3, 0x21, 0x86, 0xc1, 0x40, 0x85, 0x9e, 0xbc, 0x60, 0x75, 0x5f, 0x6c,
		0x56, 0x63, 0x1d, 0xee, 0xf4, 0xde, 0x37, 0x3b, 0x26, 0xa3, 0x6b, 0xf9, 0x5a, 0x2c, 0xf5, 0xc7,
		0x4e, 0x6f, 0xbf, 0xd9, 0x31, 0x79, 0x5c, 0x5c, 0xfe, 0xc2, 0x45, 0x89, 0xdb, 0x89, 0xc7, 0x65,
		0xa4, 0xc1, 0x73, 0x35, 0x20, 0x3b, 0xba, 0xe7, 0x51, 0xa1, 0x67, 0x27, 0x6e, 0xcf, 0xa8, 0xe2,
		0xda, 0x7d, 0x1d, 0x50, 0x17, 0xf8, 0xa2, 0x9f, 0x38, 0x23, 0x91, 0xe7, 0x5a, 0xd7, 0xf3, 0x54,
		0x26, 0x46, 0x7c, 0xd1, 0x4c, 0x64, 0xf0, 0x45, 0x59, 0x88, 0x09, 0xbe, 0x28, 0x47, 0x65, 0x05,
		0x5f, 0x94, 0xe7, 0x01, 0x03, 0x5f, 0x54, 0xb0, 0xe0, 0xe0, 0x8b, 0xd6, 0x2f, 0x6e, 0x61, 0x5a,
		0x91, 0xb4, 0xb5, 0xc9, 0x88, 0x2a, 0xda, 0x41, 0x49, 0x52, 0xc6, 0x2f, 0x94, 0x24, 0xe5, 0x2b,
		0x34, 0x4a, 0x92, 0xca, 0xb2, 0x71, 0x28, 0x49, 0x2a, 0xe0, 0x48, 0x72, 0x2e, 0x49, 0xaa, 0x6f,
		0xee, 0xd6, 0x77, 0xb7, 0x77, 0x36, 0x77, 0x51, 0x99, 0x84, 0xb3, 0xa9, 0x03, 0x40, 0xe6, 0x23,
		0x25, 0x2a, 0x93, 0xb4, 0xf3, 0x0d, 0x77, 0x7c, 0xa3, 0xa5, 0x6e, 0x27, 0x1c, 0x79, 0xd2, 0x99,
		0xdc, 0x20, 0x4b, 0xb3, 0x10, 0x13, 0x64, 0x69, 0x8e, 0x1a, 0x0b, 0xb2, 0x34, 0xcf, 0x03, 0x06,
		0xb2, 0xb4, 0x60, 0xc1, 0x41, 0x96, 0xae, 0x5f, 0x14, 0x89, 0xe4, 0xba, 0x82, 0x80, 0x02, 0x92,
		0xeb, 0xb2, 0x57, 0x5d, 0xbe, 0xc9, 0x75, 0xcd, 0xfd, 0x41, 0xaf, 0x73, 0x3c, 0x6c, 0xb1, 0xcb,
		0xaf, 0x6b, 0x77, 0x0f, 0x5a, 0x7f, 0x20, 0xbd, 0x2e, 0x5b, 0x35, 0x66, 0x97, 0x5e, 0x97, 0xaa,
		0x2f, 0x2b, 0xca, 0x6b, 0xae, 0xbc, 0x7b, 0x46, 0x0d, 0xec, 0xd1, 0x3a, 0x20, 0xaf, 0x57, 0x90,
		0x4c, 0x03, 0x7b, 0x69, 0x36, 0xa5, 0x0c, 0xd4, 0x0c, 0xee, 0x51, 0x36, 0x92, 0x66, 0x34, 0xbe,
		0x14, 0x57, 0xce, 0xc4, 0x51, 0x97, 0xb1, 0xa3, 0xac, 0x04, 0x13, 0x21, 0xc7, 0x09, 0xfb, 0x62,
		0x49, 0xa1, 0xbe, 0x04, 0xe1, 0x67, 0xcb, 0x93, 0x91, 0x72, 0xe4, 0x58, 0x54, 0xee, 0x7f, 0x23,
		0x7a, 0xf0, 0x9d, 0xca, 0x24, 0x0c, 0x54, 0x30, 0x0e, 0xfc, 0x28, 0x7d, 0x57, 0x99, 0x05, 0x64,
		0x15, 0x27, 0x14, 0x4e, 0x94, 0xfc, 0x59, 0xf1, 0x23, 0xf7, 0xac, 0xe2, 0x47, 0x4e, 0xc2, 0x98,
		0x45, 0xe9, 0xbb, 0xf8, 0x4d, 0xf2, 0xb7, 0x4a, 0x30, 0x71, 0xfe, 0x3b, 0x15, 0x56, 0xfc, 0x56,
		0xdc, 0x28, 0x21, 0x5d, 0xe1, 0x5a, 0xb3, 0x68, 0xba, 0xa2, 0xfc, 0xeb, 0x28, 0xfe, 0xa3, 0x32,
		0xfb, 0xbb, 0x15, 0x79, 0x6e, 0x25, 0x52, 0x8e, 0x22, 0xda, 0xd1, 0x86, 0xde, 0x99, 0xa1, 0x25,
		0x11, 0xb1, 0xd3, 0x6b, 0x8a, 0x1b, 0x15, 0x3a, 0xd6, 0x34, 0x56, 0xe7, 0x33, 0x9f, 0x66, 0x84,
		0x69, 0x7e, 0xb9, 0x14, 0x92, 0x6c, 0x82, 0x08, 0x61, 0x4b, 0xb7, 0x88, 0xc4, 0x37, 0x36, 0x66,
		0x16, 0xa3, 0x12, 0x1b, 0x1d, 0xe3, 0x57, 0xe3, 0xf5, 0x9c, 0x35, 0x9a, 0x99, 0xa3, 0xbd, 0xa3,
		0x7e, 0xeb, 0x43, 0xfb, 0x0f, 0x7b, 0xd0, 0x3e, 0x78, 0x4d, 0x38, 0xce, 0xe1, 0x42, 0x8c, 0x2e,
		0x13, 0xa2, 0x89, 0xe2, 0x12, 0x27, 0x96, 0xb8, 0xd1, 0xa0, 0x2b, 0xf4, 0xe7, 0x33, 0x34, 0x1b,
		0x77, 0x94, 0x3f, 0xb1, 0xd7, 0x07, 0x22, 0x1a, 0x87, 0xde, 0x84, 0x3c, 0xa8, 0x5b, 0x31, 0x77,
		0x6d, 0x39, 0xf6, 0xa7, 0xae, 0x30, 0x26, 0x4e, 0xe8, 0x5c, 0x09, 0x25, 0xc2, 0xc8, 0x08, 0x85,
		0xef, 0x28, 0x4f, 0x5e, 0x18, 0x2a, 0x30, 0xd4, 0xa5, 0x30, 0x66, 0xb7, 0x58, 0xc6, 0xa0, 0x7d,
		0x60, 0xc4, 0x67, 0x34, 0xf9, 0x5e, 0xac, 0x32, 0xa7, 0x32, 0x38, 0x4f, 0xfe, 0x12, 0x4d, 0xcf,
		0xac, 0x61, 0xe7, 0x93, 0xe1, 0x45, 0x86, 0x27, 0x5d, 0x6f, 0xec, 0x28, 0xe1, 0x1a, 0x4e, 0x64,
		0x44, 0xd3, 0xf1, 0x25, 0xf5, 0x13, 0xcd, 0xe8, 0x06, 0x69, 0xd9, 0x58, 0xba, 0x4b, 0xba, 0xc6,
		0x80, 0x83, 0xe5, 0x78, 0x7d, 0xb4, 0x62, 0x3b, 0x73, 0x3f, 0x26, 0x60, 0x1d, 0x74, 0x62, 0x1d,
		0xc8, 0x49, 0x35, 0x42, 0x5c, 0xc7, 0x97, 0x8d, 0xd1, 0x80, 0x85, 0x21, 0xe8, 0xa4, 0xcc, 0x48,
		0x85, 0xd3, 0xb1, 0x92, 0x73, 0x20, 0xd4, 0x9d, 0x6d, 0x53, 0x7b, 0xbe, 0x4b, 0xf6, 0xd1, 0x7c,
		0x6f, 0xec, 0x5e, 0xb2, 0x37, 0x76, 0x33, 0x14, 0x8e, 0xdd, 0x89, 0xdc, 0x33, 0xbb, 0x13, 0x39,
		0xc3, 0xdb, 0x89, 0x88, 0xbf, 0xda, 0xbd, 0x64, 0x17, 0xe2, 0x77, 0xad, 0xf9, 0x26, 0xcc, 0xdc,
		0x80, 0x3d, 0xf4, 0xaf, 0xed, 0xd9, 0xdb, 0x81, 0xe7, 0xd2, 0xb2, 0xee, 0x74, 0xac, 0x13, 0x21,
		0x3b, 0x90, 0x64, 0xea, 0xf9, 0xce, 0x99, 0xf0, 0xad, 0xb3, 0xd8, 0x3b, 0x13, 0xbc, 0x81, 0x5d,
		0x49, 0x2a, 0x5c, 0x15, 0x95, 0x98, 0x3d, 0x5d, 0xa4, 0x07, 0x10, 0x13, 0x8b, 0x6a, 0xde, 0x20,
		0xe5, 0x3c, 0x41, 0x16, 0x79, 0x81, 0xd4, 0xa3, 0x38, 0x36, 0x79, 0x7f, 0x6c, 0x02, 0x35, 0x2e,
		0x79, 0x7d, 0xb8, 0x4f, 0xf9, 0x26, 0x63, 0xe6, 0x85, 0x44, 0x01, 0x77, 0x72, 0x67, 0x48, 0xd6,
		0x9c, 0xa4, 0x40, 0x20, 0x11, 0x93, 0xe8, 0x09, 0xa5, 0x09, 0x02, 0xc8, 0x83, 0x01, 0x0e, 0xa0,
		0x80, 0x15, 0x38, 0xe0, 0x02, 0x12, 0xd8, 0x81, 0x05, 0x76, 0xa0, 0x81, 0x1b, 0x78, 0xa0, 0x09,
		0x22, 0x88, 0x82, 0x09, 0xf2, 0xa0, 0x22, 0x15, 0xf0, 0xca, 0x0b, 0xc3, 0x80, 0x45, 0x8e, 0x77,
		0x6a, 0xdf, 0xef, 0x44, 0xc6, 0xac, 0xb5, 0xec, 0x84, 0xc5, 0xac, 0xb5, 0xac, 0x40, 0x26, 0x2a,
		0x56, 0xd7, 0x07, 0x74, 0xb2, 0x04, 0x9f, 0xdc, 0x40, 0x28, 0x5b, 0x30, 0xca, 0x16, 0x94, 0x72,
		0x05, 0xa7, 0xb4, 0x41, 0x2a, 0x71, 0xb0, 0x9a, 0x3e, 0x74, 0xcc, 0x5a, 0xcb, 0x1f, 0x24, 0x60,
		0xd6, 0x9a, 0x7e, 0x87, 0xc7, 0xbc, 0x9a, 0xfa, 0xca, 0xb3, 0x54, 0x30, 0x09, 0xfc, 0xe0, 0xe2,
		0xd6, 0xf2, 0x5c, 0x21, 0x95, 0x77, 0xee, 0x89, 0x90, 0x51, 0x70, 0xf5, 0xe4, 0x12, 0x00, 0xbe,
		0x01, 0xbe, 0x01, 0xbe, 0x01, 0xbe, 0x01, 0xbe, 0x01, 0xbe, 0x01, 0xbe, 0x01, 0xbe, 0x57, 0x7a,
		0x6b, 0xbf, 0x63, 0x04, 0xbd, 0x1b, 0x68, 0xad, 0x9d, 0xf1, 0x0b, 0xad, 0xb5, 0xf3, 0x15, 0x1a,
		0xad, 0xb5, 0xcb, 0x32, 0x71, 0x68, 0xad, 0x5d, 0xc0, 0x91, 0xe4, 0xdc, 0x5a, 0x7b, 0xb3, 0x81,
		0x9e, 0xda, 0x38, 0x94, 0x3a, 0x00, 0x63, 0x3e, 0x52, 0xa2, 0xa7, 0xb6, 0x76, 0x4e, 0xc1, 0xfc,
		0x22, 0xbc, 0x8b, 0x4b, 0xc5, 0x87, 0x27, 0x9d, 0xcb, 0x0b, 0x52, 0x34, 0x0b, 0x31, 0x41, 0x8a,
		0xe6, 0xa8, 0xa9, 0x20, 0x45, 0xf3, 0x3c, 0x60, 0x20, 0x45, 0x0b, 0x16, 0x1c, 0xa4, 0xe8, 0xfa,
		0x85, 0x8b, 0x20, 0x45, 0x73, 0x87, 0x08, 0x20, 0x45, 0xb3, 0x7e, 0x81, 0x14, 0xcd, 0x57, 0x68,
		0x90, 0xa2, 0x65, 0x99, 0x38, 0x90, 0xa2, 0x05, 0x1c, 0x49, 0x90, 0xa2, 0x38, 0x94, 0x6b, 0x71,
		0x28, 0x41, 0x8a, 0x66, 0xf2, 0x02, 0x29, 0xaa, 0x93, 0x64, 0x68, 0x15, 0xff, 0x32, 0x39, 0xb9,
		0x36, 0x29, 0x7b, 0xd0, 0x4d, 0x09, 0x1d, 0xe3, 0x99, 0x1f, 0x1b, 0x33, 0x7e, 0xb6, 0xf4, 0xbb,
		0x77, 0x24, 0x52, 0xa2, 0x79, 0xc7, 0xcf, 0x88, 0x87, 0xe6, 0x1d, 0x19, 0xea, 0x21, 0x9a, 0x77,
		0x64, 0x79, 0x70, 0xd0, 0xbc, 0x23, 0x6f, 0x3c, 0x84, 0xe6, 0x1d, 0xfa, 0x82, 0x5d, 0xf2, 0xcd,
		0x3b, 0x94, 0x7f, 0xcd, 0x27, 0x63, 0x22, 0x16, 0x96, 0x47, 0xba, 0x44, 0x0d, 0xe9, 0x12, 0x6b,
		0x03, 0x3c, 0x58, 0x02, 0x10, 0x6e, 0x40, 0x84, 0x2d, 0x20, 0x61, 0x0b, 0x4c, 0xb8, 0x02, 0x14,
		0xda, 0x40, 0x85, 0x38, 0x60, 0x61, 0x03, 0x5c, 0x52, 0x41, 0x45, 0x18, 0x58, 0x57, 0x42, 0x85,
		0xde, 0x98, 0x8f, 0x0d, 0x4b, 0xa7, 0xa4, 0xdf, 0xc9, 0xce, 0xc4, 0x16, 0xf0, 0x80, 0x37, 0xec,
		0x60, 0x0e, 0x47, 0xb8, 0xc3, 0x1a, 0xf6, 0x70, 0x85, 0x3f, 0xec, 0x61, 0x10, 0x7b, 0x38, 0xc4,
		0x1d, 0x16, 0xf1, 0x80, 0x47, 0x4c, 0x60, 0x12, 0x3b, 0xb8, 0x94, 0x0a, 0x4c, 0xbb, 0x23, 0xfc,
		0x77, 0x7d, 0x0d, 0xe5, 0x4e, 0xf1, 0x9a, 0x80, 0x27, 0xb6, 0x20, 0x8a, 0x33, 0x98, 0xd2, 0x02,
		0x54, 0x71, 0x07, 0x57, 0xda, 0x80, 0x2c, 0x6d, 0xc0, 0x96, 0x2e, 0xa0, 0x8b, 0x17, 0xf8, 0x62,
		0x06, 0xc2, 0xd8, 0x82, 0xb1, 0x54, 0x70, 0x66, 0x3c, 0xd6, 0x93, 0x4e, 0x8b, 0x15, 0xa7, 0xf5,
		0x14, 0x4c, 0xab, 0x32, 0x15, 0x9f, 0x2b, 0x5c, 0xd3, 0x01, 0xb6, 0x69, 0x05, 0xdf, 0x74, 0x81,
		0x71, 0xda, 0xc1, 0x39, 0xed, 0x60, 0x9d, 0x6e, 0xf0, 0x8e, 0x27, 0xcc, 0x63, 0x0a, 0xf7, 0x52,
		0xe5, 0x61, 0x53, 0xe1, 0xfd, 0x5d, 0xaf, 0x31, 0xf5, 0xa4, 0xda, 0x62, 0xed, 0x32, 0xe6, 0x18,
		0x6a, 0x87, 0xf1, 0x12, 0x78, 0x95, 0x8a, 0x3f, 0xf5, 0xe2, 0xed, 0xb2, 0x0d, 0xae, 0xa5, 0xe5,
		0x4f, 0x2e, 0x86, 0x69, 0xc9, 0xf9, 0x93, 0xeb, 0xe1, 0x5e, 0xf5, 0xfa, 0xb4, 0x2d, 0xe6, 0x5a,
		0x0d, 0xab, 0x99, 0x5b, 0x5f, 0x35, 0x05, 0xce, 0x8d, 0x7e, 0xa6, 0xa0, 0xbe, 0xb9, 0x5b, 0xdf,
		0xdd, 0xde, 0xd9, 0xdc, 0x6d, 0xc0, 0x26, 0xc0, 0x26, 0x20, 0x40, 0x59, 0x03, 0xe9, 0x47, 0xaf,
		0xb0, 0xdf, 0x90, 0x98, 0xb9, 0x87, 0xe6, 0x52, 0xc9, 0xff, 0xa4, 0xfc, 0xfa, 0x54, 0xf8, 0xa7,
		0xff, 0x74, 0x97, 0x51, 0x4c, 0xb9, 0xea, 0x9f, 0xff, 0x71, 0x45, 0xf6, 0x5c, 0x96, 0x07, 0x51,
		0xdc, 0xa8, 0xd0, 0xb1, 0xa6, 0xf1, 0x49, 0x3a, 0xf3, 0x79, 0x71, 0x78, 0xe6, 0x97, 0x4b, 0x21,
		0xd9, 0xb1, 0x44, 0x8c, 0x13, 0xa2, 0x36, 0x36, 0x66, 0x96, 0xad, 0x12, 0xdb, 0x4d, 0xe3, 0x57,
		0xe3, 0xf5, 0xfc, 0x9e, 0x60, 0x66, 0x51, 0xf7, 0x5a, 0xfd, 0x9e, 0x7d, 0xd8, 0x1a, 0xf6, 0xdb,
		0xef, 0x5f, 0x23, 0x63, 0xaa, 0x78, 0xf9, 0x97, 0xae, 0xd8, 0x92, 0x83, 0x81, 0x7c, 0xa9, 0x92,
		0x21, 0xda, 0xd2, 0x85, 0xda, 0x33, 0x4e, 0x0e, 0x3f, 0xa0, 0xcf, 0xf0, 0xac, 0x1f, 0x88, 0x68,
		0x1c, 0x7a, 0x13, 0xb6, 0xf8, 0x79, 0xc5, 0x2c, 0xb7, 0xe5, 0xd8, 0x9f, 0xba, 0xc2, 0x50, 0x97,
		0xc2, 0x68, 0xf5, 0x7b, 0xc6, 0x61, 0x02, 0x42, 0x8d, 0x68, 0x7a, 0x66, 0x0d, 0x3b, 0x9f, 0x8c,
		0x89, 0x13, 0x3a, 0x57, 0x42, 0x89, 0x30, 0x32, 0x02, 0xe9, 0xdf, 0x1a, 0xb1, 0x71, 0x38, 0x95,
		0xf1, 0x7f, 0x4e, 0x94, 0xd1, 0x8b, 0x8c, 0x18, 0xc9, 0x8e, 0x1d, 0x25, 0x5c, 0xc3, 0x89, 0x8c,
		0x68, 0x3a, 0xbe, 0xe4, 0x6a, 0x3b, 0x34, 0xc8, 0x96, 0x58, 0x36, 0xe3, 0xee, 0x92, 0x96, 0x32,
		0xbe, 0xcd, 0xd3, 0x29, 0x55, 0x62, 0xc5, 0xaa, 0xe7, 0x70, 0xf0, 0x40, 0x4e, 0x41, 0x62, 0xc6,
		0xd2, 0x8e, 0x10, 0x9b, 0x67, 0x69, 0x6b, 0x78, 0x92, 0x7c, 0x7a, 0x93, 0x7b, 0x9c, 0x2a, 0xac,
		0x23, 0x15, 0x4e, 0xc7, 0x4a, 0xce, 0x71, 0x62, 0x77, 0xb6, 0xb3, 0xed, 0xf9, 0xc6, 0xda, 0x47,
		0xf3, 0xed, 0xb4, 0x7b, 0xc9, 0x76, 0xda, 0xcd, 0x50, 0x38, 0x76, 0x27, 0x72, 0xcf, 0xec, 0x4e,
		0xe4, 0x0c, 0x6f, 0x27, 0x22, 0xfe, 0x6a, 0xf7, 0x92, 0x8d, 0x8b, 0xdf, 0xb5, 0xe6, 0xfb, 0x36,
		0x4b, 0x12, 0xb6, 0x87, 0xfe, 0xb5, 0x3d, 0xf0, 0xdc, 0x4e, 0xbc, 0x61, 0xfb, 0xb3, 0xfd, 0x4a,
		0xbe, 0xd7, 0x0a, 0x83, 0x99, 0x23, 0x34, 0xd1, 0x1b, 0x7a, 0x5d, 0xcc, 0x55, 0xd2, 0x4e, 0x63,
		0x7e, 0xe0, 0x19, 0x36, 0x02, 0x49, 0x24, 0x47, 0x1b, 0x90, 0x3c, 0xc4, 0x45, 0x1b, 0x90, 0x02,
		0x75, 0x19, 0x6d, 0x40, 0xca, 0x09, 0xd4, 0xd1, 0x06, 0xa4, 0xf4, 0x58, 0x1c, 0x6d, 0x40, 0xd6,
		0x3c, 0x58, 0xe2, 0xd7, 0x06, 0x44, 0x5c, 0xc4, 0xca, 0x1b, 0x31, 0xee, 0x04, 0xb2, 0x58, 0x01,
		0x9a, 0x81, 0x00, 0x4a, 0xe9, 0x05, 0xa9, 0xb4, 0x80, 0x56, 0xdc, 0x21, 0x96, 0x36, 0x50, 0x4b,
		0x1b, 0xc8, 0xa5, 0x0b, 0xf4, 0xe2, 0x05, 0xc1, 0x98, 0x41, 0x31, 0xb6, 0x90, 0xec, 0x3e, 0x34,
		0xe3, 0x9f, 0x1a, 0xb0, 0x58, 0x08, 0xef, 0x76, 0x20, 0x35, 0xb4, 0x03, 0x01, 0x70, 0x5b, 0x67,
		0x00, 0xa7, 0x0b, 0x90, 0xd3, 0x0e, 0xd0, 0x69, 0x07, 0xec, 0x74, 0x03, 0x78, 0x3c, 0x81, 0x1e,
		0x53, 0xc0, 0xc7, 0x1e, 0xf8, 0xa5, 0x0b, 0xf0, 0x26, 0xd7, 0x75, 0x8b, 0x3b, 0x0a, 0x7c, 0xe0,
		0x02, 0x57, 0x56, 0xc5, 0xdc, 0x3e, 0xf1, 0x86, 0x86, 0xda, 0x40, 0x44, 0x9d, 0xa0, 0xa2, 0x96,
		0x90, 0x51, 0x37, 0xe8, 0xa8, 0x2d, 0x84, 0xd4, 0x16, 0x4a, 0xea, 0x0a, 0x29, 0x79, 0x43, 0x4b,
		0xe6, 0x10, 0x53, 0x1b, 0xa8, 0x99, 0x2e, 0x84, 0xe7, 0x54, 0x88, 0xef, 0xfa, 0x50, 0x8e, 0xd3,
		0x22, 0x34, 0x07, 0x9d, 0xda, 0x81, 0x4f, 0x1d, 0x41, 0xa8, 0xd6, 0x60, 0x54, 0x57, 0x50, 0xaa,
		0x3d, 0x38, 0xd5, 0x1e, 0xa4, 0xea, 0x0e, 0x56, 0xf5, 0x00, 0xad, 0x9a, 0x80, 0x57, 0xed, 0x40,
		0x6c, 0xba, 0x20, 0xc7, 0x75, 0x43, 0x11, 0x45, 0xfa, 0x19, 0xf6, 0x85, 0x37, 0x5e, 0x2c, 0x50,
		0x33, 0xab, 0xc7, 0x7b, 0xfe, 0xc6, 0xda, 0x00, 0x5d, 0x9d, 0x01, 0xef, 0x5a, 0x00, 0x5f, 0xdd,
		0x01, 0xf0, 0xda, 0x00, 0xe1, 0xb5, 0x01, 0xc4, 0xeb, 0x02, 0x8c, 0xf5, 0x02, 0xc8, 0x9a, 0x01,
		0xe5, 0x54, 0x09, 0xd9, 0xcf, 0x1b, 0xf9, 0xae, 0xd7, 0x4b, 0xee, 0xea, 0xe7, 0x28, 0xd3, 0x92,
		0x81, 0xf5, 0xbf, 0x40, 0x0a, 0x1d, 0x1d, 0xe0, 0x82, 0x52, 0x7d, 0xa7, 0xe1, 0xda, 0x8e, 0x1c,
		0xa5, 0x44, 0x28, 0xd9, 0x0f, 0x32, 0x79, 0x72, 0x81, 0x6f, 0xde, 0x9c, 0x54, 0xad, 0xdd, 0xd1,
		0xdf, 0x27, 0x35, 0x6b, 0x77, 0x34, 0x7b, 0x5b, 0x4b, 0xbe, 0xcc, 0xde, 0x6f, 0x9e, 0x54, 0xad,
		0xfa, 0xe2, 0x7d, 0xe3, 0xa4, 0x6a, 0x35, 0x46, 0x6f, 0x4f, 0x4f, 0x37, 0xde, 0xfe, 0xb5, 0xf5,
		0xf5, 0xf9, 0x3f, 0xf8, 0xe6, 0x1f, 0x27, 0xa7, 0xa7, 0x93, 0xbf, 0xba, 0x5f, 0xe3, 0x3f, 0x3b,
		0x5f, 0x47, 0xff, 0x7a, 0xfb, 0x6f, 0x5d, 0xb1, 0x44, 0xbc, 0xf0, 0xd3, 0xd3, 0x8d, 0xd1, 0x3f,
		0xf5, 0x73, 0xab, 0xa3, 0x57, 0x00, 0x09, 0x58, 0x09, 0x60, 0xce, 0x77, 0x30, 0x36, 0xef, 0xee,
		0xee, 0x4f, 0xae, 0x4b, 0xd3, 0xc6, 0x50, 0xf1, 0x82, 0x2a, 0x8b, 0x62, 0xe8, 0xc5, 0x9b, 0xca,
		0x72, 0xb6, 0x25, 0xc7, 0x8e, 0xf0, 0xfa, 0x9a, 0x0a, 0x64, 0xec, 0x94, 0x69, 0x04, 0x18, 0x77,
		0x9c, 0x7f, 0x72, 0x4d, 0x2c, 0x3b, 0xd1, 0x3f, 0xf5, 0xd2, 0x30, 0x79, 0xe2, 0x3b, 0xfd, 0xb7,
		0xdb, 0x47, 0x9f, 0xea, 0xf6, 0xa0, 0xf5, 0xf1, 0xb0, 0xd5, 0x1d, 0xbe, 0x46, 0x7e, 0x05, 0x03,
		0xd6, 0x40, 0x8b, 0x5e, 0xf7, 0x4f, 0x2e, 0x6f, 0xad, 0xb2, 0x2b, 0x9e, 0x75, 0x36, 0xf5, 0x09,
		0xb8, 0x34, 0xb2, 0x32, 0x3a, 0x74, 0xd3, 0xff, 0xae, 0x0b, 0x59, 0x6e, 0xf6, 0xdd, 0x3e, 0xba,
		0xae, 0x1b, 0x73, 0x68, 0x7f, 0xd7, 0xdb, 0xdb, 0x58, 0x6a, 0xed, 0x7d, 0x2a, 0x75, 0x69, 0xaa,
		0xbf, 0x6e, 0xbe, 0xc5, 0xd0, 0xb2, 0x09, 0xff, 0xda, 0xba, 0x1a, 0xe3, 0x5b, 0x4d, 0xfb, 0x7f,
		0xee, 0x1c, 0x83, 0xc2, 0xc4, 0x4a, 0xb0, 0x8a, 0x27, 0x5f, 0x23, 0xb0, 0x2b, 0x65, 0x9a, 0x3a,
		0xbd, 0xa8, 0xe3, 0xf5, 0xa5, 0x8c, 0x75, 0xa8, 0x39, 0x2e, 0x6b, 0xfe, 0xc0, 0x91, 0xa3, 0x2e,
		0xed, 0xc1, 0x6c, 0x1f, 0xed, 0xf6, 0xe4, 0xba, 0x3e, 0x7f, 0x6f, 0x62, 0xe6, 0x36, 0x8c, 0xea,
		0xb3, 0x75, 0x58, 0x87, 0xba, 0x4c, 0xad, 0xea, 0x31, 0xd1, 0xfc, 0x83, 0xd8, 0x42, 0xd0, 0xfc,
		0x03, 0x5c, 0x4d, 0x59, 0xfc, 0x0c, 0x9a, 0x7f, 0xb0, 0xa3, 0x60, 0xd0, 0xfc, 0x03, 0xb8, 0x2c,
		0x13, 0xa5, 0xd2, 0xa6, 0xf9, 0x87, 0x1f, 0x04, 0x91, 0x86, 0xcd, 0x3f, 0x66, 0xcb, 0xd2, 0xa5,
		0x48, 0x57, 0x9c, 0x3b, 0x53, 0x5f, 0x69, 0x95, 0xcd, 0x6d, 0x9e, 0x3b, 0x7e, 0xa4, 0x49, 0x5e,
		0xda, 0x48, 0xaf, 0x26, 0x33, 0x55, 0x34, 0x99, 0x41, 0xb0, 0x83, 0xa0, 0x07, 0xc1, 0xcf, 0xda,
		0x05, 0x41, 0xda, 0x07, 0x43, 0xba, 0x07, 0x45, 0x7a, 0x04, 0x47, 0x9a, 0x04, 0x49, 0xa9, 0xb2,
		0x69, 0x57, 0x33, 0x9b, 0x7a, 0xad, 0xb3, 0x20, 0xf0, 0x85, 0xa3, 0x53, 0x7a, 0x4e, 0xca, 0x70,
		0xd7, 0x90, 0xd4, 0x00, 0x23, 0x90, 0x91, 0x4e, 0x29, 0x9d, 0x0c, 0x40, 0x7a, 0xf8, 0x93, 0x55,
		0x21, 0xf4, 0x43, 0xe8, 0x87, 0xd0, 0x0f, 0xa1, 0x1f, 0x42, 0x3f, 0x84, 0x7e, 0x08, 0xfd, 0x80,
		0xf8, 0x80, 0xfa, 0xd6, 0x24, 0xf4, 0xf3, 0x5c, 0x21, 0x95, 0xa7, 0x6e, 0x43, 0x71, 0xae, 0x63,
		0xf8, 0xd7, 0xd0, 0x68, 0x4d, 0xed, 0xf9, 0xa3, 0xda, 0x77, 0x22, 0xa1, 0x6f, 0x99, 0x58, 0x6f,
		0x70, 0xf4, 0xe1, 0xd3, 0xa6, 0xdd, 0xfa, 0x63, 0x78, 0xd4, 0x6f, 0x7d, 0x68, 0xff, 0x61, 0xef,
		0xb7, 0xbb, 0x07, 0xed, 0xee, 0x47, 0xbb, 0xd5, 0xef, 0xd9, 0x47, 0xcd, 0xe1, 0x7f, 0x16, 0xb5,
		0x8c, 0xf6, 0xf0, 0xcf, 0xa3, 0x96, 0x6e, 0x6e, 0xfb, 0x93, 0xe3, 0x4f, 0x45, 0xa4, 0x65, 0xc3,
		0x2b, 0x4d, 0x1b, 0x74, 0xa6, 0xe5, 0x8d, 0x4b, 0x65, 0xb6, 0x1a, 0x76, 0x73, 0xfc, 0x05, 0xfa,
		0xc8, 0x4b, 0x1f, 0x8f, 0xbb, 0xdd, 0xe3, 0xc3, 0xfd, 0x56, 0xbf, 0x75, 0x60, 0xb7, 0xbb, 0xc3,
		0x56, 0xff, 0x43, 0xf3, 0x7d, 0x4b, 0x63, 0xfd, 0xd4, 0x6a, 0x45, 0x23, 0x84, 0x31, 0x58, 0x05,
		0x56, 0xa0, 0x8b, 0xf7, 0x41, 0x4d, 0x21, 0xe7, 0x9a, 0x42, 0x0d, 0x3a, 0xcf, 0xa1, 0xf0, 0xad,
		0x8c, 0x53, 0x32, 0x95, 0x72, 0x7a, 0x75, 0x26, 0x42, 0xe1, 0x5a, 0x97, 0xc1, 0x44, 0x9f, 0x0a,
		0xb8, 0x7b, 0xeb, 0x42, 0x29, 0x1c, 0x85, 0x65, 0xa0, 0x14, 0x8e, 0xf0, 0x89, 0x41, 0x29, 0x1c,
		0x65, 0x03, 0x80, 0x52, 0x38, 0x6e, 0x70, 0x1a, 0xa5, 0x70, 0x40, 0x6a, 0x59, 0x2b, 0x15, 0xe6,
		0x60, 0xd3, 0xf6, 0xa1, 0x98, 0x83, 0x0d, 0xf0, 0x09, 0x10, 0x0a, 0x30, 0xba, 0x16, 0xa0, 0x54,
		0x7b, 0x70, 0xaa, 0x3d, 0x48, 0xd5, 0x1d, 0xac, 0xea, 0x01, 0x5a, 0x35, 0x01, 0xaf, 0xda, 0x81,
		0xd8, 0x74, 0x41, 0x9e, 0x54, 0x22, 0x3c, 0x77, 0xc6, 0xc2, 0xf2, 0x5c, 0x7d, 0x73, 0x9e, 0x56,
		0x56, 0x89, 0x89, 0xd8, 0x80, 0xbc, 0x80, 0xbe, 0x80, 0xc0, 0x80, 0xc2, 0xeb, 0x09, 0x89, 0xd7,
		0x06, 0x1a, 0xaf, 0x0b, 0x44, 0xd6, 0x0b, 0x2a, 0x6b, 0x06, 0x99, 0x53, 0x25, 0xd4, 0x7f, 0x22,
		0xf6, 0xd4, 0x93, 0x6a, 0x6b, 0x53, 0xe3, 0x19, 0xd8, 0x3b, 0x1a, 0x2e, 0xad, 0xef, 0xc8, 0x0b,
		0xa1, 0xed, 0x00, 0x6c, 0x3d, 0x21, 0x4a, 0xf2, 0xe0, 0x0e, 0x3d, 0xa9, 0x2d, 0x06, 0x4b, 0x17,
		0x99, 0x94, 0xab, 0xe8, 0x17, 0x04, 0x3d, 0x58, 0xe7, 0x87, 0xd0, 0x19, 0x2b, 0x2f, 0x90, 0x07,
		0xde, 0x85, 0xa7, 0xa2, 0x35, 0x58, 0x70, 0x57, 0x5c, 0x38, 0xca, 0xbb, 0x8e, 0x9f, 0x6d, 0xd2,
		0xe1, 0x50, 0xdb, 0xd5, 0x7e, 0xfd, 0x45, 0x63, 0x13, 0xe4, 0xdc, 0xac, 0x8f, 0x09, 0xaa, 0x6f,
		0xee, 0xd6, 0x77, 0xb7, 0x77, 0x36, 0x77, 0x1b, 0xb0, 0x45, 0xb0, 0x45, 0x08, 0x10, 0xb1, 0xaa,
		0xdc, 0x5e, 0x23, 0x0c, 0xb0, 0x83, 0x2f, 0xcf, 0xd9, 0xe8, 0x85, 0xc1, 0x54, 0x89, 0x50, 0xeb,
		0x5b, 0xaf, 0xbb, 0x25, 0xe2, 0xca, 0x8b, 0xc3, 0xb2, 0x70, 0xe5, 0xc5, 0xf8, 0xb0, 0xe1, 0xca,
		0x8b, 0xb3, 0x41, 0xc1, 0x95, 0x97, 0x66, 0x0b, 0xc5, 0x95, 0x17, 0xf0, 0x65, 0xe9, 0x4a, 0xa8,
		0xff, 0x95, 0x57, 0x32, 0x0f, 0xd6, 0x71, 0xdd, 0x50, 0x44, 0x91, 0x25, 0x03, 0xeb, 0x7f, 0x81,
		0x14, 0x1a, 0x5f, 0x80, 0xd5, 0xde, 0x69, 0xb8, 0xb6, 0x23, 0x47, 0x29, 0x11, 0x4a, 0x6d, 0xef,
		0xc0, 0xcc, 0x37, 0x6f, 0x4e, 0xaa, 0xd6, 0xee, 0xe8, 0xef, 0x93, 0x9a, 0xb5, 0x3b, 0x9a, 0xbd,
		0xad, 0x25, 0x5f, 0x66, 0xef, 0x37, 0x4f, 0xaa, 0x56, 0x7d, 0xf1, 0xbe, 0x71, 0x52, 0xb5, 0x1a,
		0xa3, 0xb7, 0xa7, 0xa7, 0x1b, 0x6f, 0xff, 0xda, 0xfa, 0xfa, 0xfc, 0x1f, 0x7c, 0xf3, 0x8f, 0x93,
		0xd3, 0xd3, 0xc9, 0x5f, 0xdd, 0xaf, 0xf1, 0x9f, 0x9d, 0xaf, 0xa3, 0x7f, 0xbd, 0xfd, 0xb7, 0xae,
		0x58, 0x22, 0x5e, 0xf8, 0xe9, 0xe9, 0xc6, 0xe8, 0x9f, 0x26, 0x08, 0x28, 0x80, 0x04, 0xac, 0x64,
		0xdd, 0x60, 0x8e, 0x6e, 0x5d, 0x77, 0xd2, 0x75, 0xad, 0x55, 0xf7, 0x9d, 0xd5, 0x66, 0x23, 0x3a,
		0x34, 0xe3, 0xd1, 0xc7, 0x58, 0xa0, 0x60, 0xbd, 0x4c, 0x33, 0x20, 0x6e, 0x54, 0xe8, 0x58, 0xd3,
		0xf8, 0x1c, 0x9f, 0xf9, 0x7a, 0xc4, 0x71, 0xe6, 0x97, 0x4b, 0xa1, 0x0f, 0xd0, 0xd7, 0xb0, 0x76,
		0x78, 0x63, 0x63, 0x66, 0x81, 0x2b, 0xb1, 0xf5, 0x37, 0x7e, 0x35, 0x5e, 0xcf, 0xb9, 0xab, 0x99,
		0x5f, 0xd8, 0xfb, 0x56, 0xcf, 0xd1, 0xd7, 0x28, 0x37, 0x66, 0xc0, 0x23, 0xdc, 0x11, 0xcd, 0xc9,
		0x51, 0x44, 0xb1, 0x31, 0x33, 0xc8, 0xbb, 0x44, 0x2b, 0xbf, 0xe8, 0xac, 0x22, 0x27, 0x80, 0xe0,
		0xd3, 0x3d, 0x10, 0xd1, 0x38, 0xf4, 0x26, 0xda, 0x45, 0x34, 0x2b, 0x2e, 0xa6, 0x2d, 0xc7, 0xfe,
		0xd4, 0x15, 0x86, 0xba, 0x14, 0xc6, 0x1d, 0xf8, 0x37, 0xe6, 0xf1, 0x80, 0x11, 0x48, 0xff, 0xd6,
		0x88, 0x6d, 0x53, 0xfc, 0x1f, 0x4e, 0x65, 0xa2, 0xdb, 0x5e, 0x64, 0xc4, 0x01, 0xc5, 0xd8, 0x51,
		0xc2, 0x35, 0x9c, 0xc8, 0x88, 0xa6, 0xe3, 0x4b, 0xdd, 0x4c, 0x97, 0xc6, 0x57, 0x9c, 0xcb, 0x5e,
		0xc7, 0x5d, 0x52, 0x71, 0x0d, 0xb9, 0xec, 0x75, 0xb8, 0xdf, 0x5c, 0x71, 0x42, 0x59, 0x9d, 0x66,
		0x10, 0x9e, 0x58, 0x09, 0x56, 0xf1, 0xe4, 0x6b, 0x04, 0x26, 0xa6, 0x4c, 0x83, 0x87, 0xf6, 0xee,
		0xba, 0x10, 0xcc, 0x3a, 0x34, 0xe8, 0x8d, 0x54, 0x38, 0x1d, 0x2b, 0x39, 0xc7, 0xd3, 0xdd, 0xd9,
		0xf3, 0x68, 0xcf, 0x1f, 0x87, 0x7d, 0x34, 0x7f, 0x08, 0x76, 0x2f, 0x79, 0x08, 0x76, 0x33, 0x14,
		0x8e, 0xdd, 0x89, 0xdc, 0x33, 0xbb, 0x13, 0x39, 0xc3, 0xdb, 0x89, 0x88, 0xbf, 0xda, 0xbd, 0x64,
		0xbb, 0xe3, 0x77, 0xad, 0xf9, 0x6e, 0xcf, 0x92, 0x24, 0xed, 0xa1, 0x7f, 0x6d, 0x0f, 0x3c, 0xb7,
		0x13, 0x6f, 0xf3, 0xfe, 0x6c, 0x97, 0x93, 0xef, 0xb5, 0xc2, 0xe0, 0xc8, 0x51, 0x97, 0xf6, 0x60,
		0xb6, 0xad, 0xf6, 0x71, 0xba, 0xad, 0xff, 0x09, 0x26, 0xe8, 0x9e, 0x0f, 0xc9, 0xb5, 0x77, 0x07,
		0x66, 0xc7, 0x8b, 0x54, 0x53, 0x29, 0xde, 0x1d, 0xb8, 0xcc, 0x43, 0x4f, 0xb6, 0x7c, 0x91, 0xd8,
		0x48, 0xde, 0xa9, 0xde, 0xe6, 0xa1, 0x73, 0xb3, 0xb4, 0x92, 0xda, 0xbb, 0x7a, 0x7d, 0x7b, 0xa7,
		0x5e, 0xaf, 0xee, 0x6c, 0xed, 0x54, 0x77, 0x1b, 0x8d, 0xda, 0x36, 0xe7, 0xe1, 0x90, 0x66, 0x2f,
		0x74, 0x63, 0xe3, 0xba, 0x7f, 0x6b, 0xee, 0x19, 0x72, 0xea, 0xfb, 0x3a, 0x2c, 0xe5, 0x38, 0x12,
		0x21, 0xeb, 0x22, 0x3f, 0xae, 0x96, 0x4b, 0x13, 0x00, 0xbb, 0x56, 0xc0, 0x95, 0x31, 0x52, 0x25,
		0x81, 0x50, 0x79, 0x62, 0x52, 0x7e, 0x88, 0x8e, 0x97, 0xc4, 0xcc, 0x2c, 0x38, 0x77, 0xcb, 0xbd,
		0x16, 0x16, 0x9b, 0x97, 0xa5, 0xe1, 0x73, 0x5e, 0x79, 0x48, 0xca, 0xc4, 0xa2, 0x70, 0x4e, 0x27,
		0xe3, 0x99, 0x36, 0xc6, 0xd0, 0x5a, 0xff, 0x60, 0x1a, 0xd8, 0x62, 0x52, 0x3f, 0xc7, 0x94, 0x2f,
		0xee, 0x17, 0xed, 0x9a, 0xa4, 0x70, 0x69, 0x73, 0x53, 0xfe, 0x9c, 0x94, 0xac, 0xbb, 0x73, 0xf3,
		0x0a, 0xcc, 0x47, 0xfe, 0x4f, 0x46, 0x87, 0x74, 0xaa, 0x47, 0xd3, 0xa6, 0x5a, 0xfd, 0x9e, 0x11,
		0x87, 0xba, 0x46, 0x34, 0x3d, 0xb3, 0x86, 0x9d, 0x4f, 0xc6, 0xc4, 0x09, 0x9d, 0x2b, 0xa1, 0x44,
		0x18, 0xe9, 0x9e, 0x3f, 0xa5, 0x43, 0x9e, 0x94, 0x7e, 0xf9, 0x50, 0x5a, 0xe5, 0x3d, 0x3d, 0x99,
		0xdf, 0x94, 0xc9, 0xb1, 0x03, 0x2b, 0x05, 0x89, 0x19, 0x4b, 0x3b, 0x42, 0x4c, 0x9e, 0xa5, 0xa5,
		0xe1, 0xc9, 0xee, 0xe9, 0xcc, 0xea, 0x31, 0xf2, 0xc2, 0xa5, 0x5e, 0xb3, 0xf0, 0x70, 0x64, 0xf4,
		0x0d, 0x2b, 0x03, 0x53, 0x65, 0x3e, 0x38, 0x36, 0x6c, 0xac, 0xd5, 0xdd, 0x74, 0xe1, 0x07, 0x4b,
		0x60, 0xe2, 0x22, 0x78, 0x4d, 0x12, 0x66, 0xd7, 0x43, 0x92, 0x63, 0x6f, 0x48, 0xd6, 0x3d, 0x1f,
		0xb9, 0x06, 0xf0, 0xec, 0x7b, 0x34, 0xb2, 0x8f, 0xd1, 0xb9, 0xf7, 0x54, 0xc4, 0x75, 0x66, 0x96,
		0xca, 0xc0, 0x6d, 0x12, 0xae, 0x39, 0xeb, 0x6c, 0xc3, 0xce, 0xec, 0xa5, 0x00, 0x2a, 0x11, 0x9f,
		0x99, 0xc5, 0xe0, 0x05, 0x9e, 0xd8, 0x82, 0x28, 0xce, 0x60, 0x4a, 0x0b, 0x50, 0xc5, 0x1d, 0x5c,
		0x69, 0x03, 0xb2, 0xb4, 0x01, 0x5b, 0xba, 0x80, 0x2e, 0x5e, 0xe0, 0x8b, 0x19, 0x08, 0x63, 0x0b,
		0xc6, 0xee, 0x40, 0x99, 0xe7, 0x26, 0x34, 0x32, 0xff, 0xfc, 0x80, 0x74, 0x25, 0x4c, 0xed, 0x0c,
		0xef, 0x99, 0x2a, 0xec, 0x67, 0xa7, 0xe8, 0x30, 0x23, 0x45, 0xab, 0x59, 0x28, 0xba, 0x34, 0x04,
		0xd2, 0x6e, 0xb6, 0x89, 0x76, 0x3d, 0x7e, 0x74, 0x9b, 0x55, 0x82, 0xa2, 0xf8, 0x22, 0x95, 0x87,
		0xfd, 0x8c, 0x91, 0x3b, 0x04, 0x15, 0x5a, 0xcc, 0x41, 0xd4, 0x32, 0x90, 0xaa, 0xd5, 0x19, 0xaf,
		0xa1, 0x25, 0xa7, 0x57, 0xfc, 0x3d, 0xdf, 0x30, 0x18, 0xa8, 0x90, 0xd3, 0x6d, 0xf9, 0x37, 0x57,
		0x53, 0x8d, 0xcf, 0x48, 0xa7, 0xb9, 0xdf, 0xea, 0xe8, 0xd0, 0x43, 0xa7, 0x16, 0xaf, 0x66, 0xd0,
		0x3e, 0x30, 0xd1, 0x58, 0xab, 0xd4, 0x13, 0xd2, 0x4e, 0x60, 0x87, 0x06, 0xc7, 0x63, 0x76, 0x32,
		0xb4, 0x98, 0x9d, 0x99, 0x9c, 0x8b, 0x3d, 0xa3, 0x86, 0xa6, 0x4e, 0x90, 0x5c, 0x63, 0xa9, 0x39,
		0x96, 0x34, 0xc5, 0x00, 0xf5, 0xda, 0xf1, 0xa7, 0x9a, 0x10, 0x96, 0xb3, 0xa5, 0x80, 0xb1, 0x2c,
		0x43, 0x7c, 0x30, 0x96, 0x84, 0x0e, 0x03, 0x18, 0x4b, 0x4a, 0x07, 0x1b, 0x8c, 0x25, 0xf1, 0x05,
		0x81, 0xb1, 0x04, 0x7e, 0xfa, 0xf9, 0xa0, 0x53, 0x1b, 0xc6, 0x72, 0xea, 0x49, 0xb5, 0xb5, 0xa9,
		0x01, 0x59, 0xb9, 0xc3, 0x78, 0x09, 0x7d, 0x47, 0x5e, 0x08, 0xf6, 0x33, 0xcd, 0x34, 0x60, 0x60,
		0x0e, 0x3d, 0x7d, 0xa6, 0xe6, 0x98, 0x9f, 0xe6, 0x41, 0x5e, 0x55, 0x93, 0x59, 0xad, 0x1f, 0x42,
		0x67, 0xac, 0xbc, 0x40, 0x1e, 0x78, 0x17, 0x1e, 0xf7, 0xc6, 0xc3, 0xab, 0xb6, 0x58, 0x5c, 0x38,
		0xca, 0xbb, 0x16, 0xac, 0xfb, 0xda, 0x6a, 0xe0, 0xd6, 0x57, 0x4d, 0x81, 0x73, 0xa3, 0x9f, 0x29,
		0xa8, 0x6f, 0xee, 0xd6, 0x77, 0xb7, 0x77, 0x36, 0x77, 0x1b, 0xb0, 0x09, 0xb0, 0x09, 0x08, 0x50,
		0xd6, 0x40, 0xfa, 0x11, 0xae, 0x02, 0x20, 0x31, 0x77, 0x0f, 0x8d, 0x1e, 0xc6, 0xf4, 0xba, 0x9d,
		0x3c, 0xfc, 0x27, 0x86, 0x83, 0xf7, 0xd1, 0xc9, 0x78, 0x2d, 0xed, 0x0a, 0x3a, 0x19, 0x17, 0xfd,
		0xd2, 0xb7, 0x93, 0xf1, 0xa0, 0x7d, 0x60, 0x27, 0x99, 0x3b, 0xf6, 0x7e, 0xbb, 0x7b, 0xd0, 0xee,
		0x7e, 0x44, 0x4b, 0xe3, 0x12, 0xe4, 0x47, 0x4b, 0x63, 0x62, 0x80, 0xed, 0xc7, 0x5b, 0x1a, 0x3f,
		0x72, 0x80, 0x90, 0x08, 0x54, 0xc0, 0x23, 0xd2, 0xb6, 0xb7, 0xf1, 0xa0, 0x7d, 0x50, 0x49, 0x7a,
		0xce, 0x19, 0xf3, 0xa6, 0x73, 0x4f, 0x75, 0x5b, 0x3d, 0x95, 0x8b, 0x76, 0xab, 0x06, 0x9a, 0x1c,
		0xd3, 0x36, 0xea, 0x68, 0x72, 0x4c, 0xdb, 0xc6, 0xe7, 0x77, 0xfe, 0xc0, 0x5f, 0x41, 0x62, 0xc6,
		0xd2, 0xa2, 0xdb, 0x71, 0xa6, 0x26, 0x07, 0xdd, 0x8e, 0xc9, 0xf2, 0x7f, 0x68, 0x7b, 0xfc, 0x9d,
		0xb6, 0xc7, 0xf7, 0xbe, 0x87, 0xf6, 0xc7, 0x6b, 0x63, 0xbb, 0x98, 0x75, 0xee, 0x63, 0xd9, 0xb1,
		0x0f, 0x6d, 0x8e, 0x73, 0x16, 0x18, 0x6d, 0x8e, 0x11, 0xc2, 0x3f, 0x37, 0x6c, 0x47, 0x9b, 0xe3,
		0xd2, 0x23, 0x73, 0xb4, 0x39, 0x5e, 0xf3, 0x98, 0x89, 0x5d, 0x9b, 0x63, 0x96, 0xdd, 0xf4, 0x52,
		0x57, 0xc3, 0xb0, 0xf9, 0x0b, 0xd3, 0x3a, 0x54, 0x34, 0x39, 0x06, 0xa4, 0x5a, 0x2f, 0x68, 0xa5,
		0x0d, 0xc4, 0xd2, 0x06, 0x6a, 0xe9, 0x02, 0xb9, 0x78, 0x41, 0x2f, 0x66, 0x10, 0x2c, 0x55, 0x12,
		0xb6, 0x75, 0xa3, 0xa9, 0xd5, 0xf7, 0x5c, 0x21, 0x95, 0xa7, 0x6e, 0x43, 0x71, 0xce, 0xd1, 0xee,
		0x2f, 0x38, 0x22, 0x86, 0xf5, 0x2f, 0x66, 0x7b, 0xbe, 0xf5, 0xfb, 0x4e, 0xa4, 0x41, 0xef, 0x96,
		0xde, 0xe0, 0xe8, 0xc3, 0xa7, 0x4d, 0xbb, 0xf5, 0xc7, 0xb0, 0xd5, 0x3d, 0x68, 0x1d, 0xd8, 0x47,
		0xfd, 0xd6, 0x87, 0xf6, 0x1f, 0xf6, 0x83, 0x64, 0x20, 0x7b, 0x70, 0xbc, 0x3f, 0xec, 0x7c, 0xb2,
		0x87, 0x7f, 0x1e, 0xb5, 0xb8, 0x3a, 0xb9, 0xa4, 0xfc, 0x2a, 0x62, 0x5d, 0xe0, 0xcb, 0xbc, 0x1f,
		0xc7, 0x42, 0xeb, 0x5a, 0xfd, 0x9e, 0x7d, 0xd8, 0x1a, 0xf6, 0xdb, 0xef, 0x19, 0xb7, 0x7a, 0xf8,
		0x05, 0x5a, 0x54, 0xbe, 0x16, 0x1d, 0x35, 0x87, 0xff, 0x81, 0x0e, 0x41, 0x87, 0x7e, 0x56, 0x87,
		0x62, 0x47, 0x77, 0x78, 0xd4, 0x19, 0xac, 0x7a, 0x3b, 0x34, 0xa0, 0x29, 0xf6, 0x35, 0x42, 0x80,
		0x06, 0x69, 0x19, 0x49, 0x8a, 0x3c, 0xad, 0x7c, 0xe5, 0xd6, 0x31, 0x4f, 0x8b, 0x4f, 0x55, 0x26,
		0x83, 0x5c, 0xa3, 0x57, 0xb0, 0x0e, 0x3f, 0x7f, 0xba, 0x3a, 0x5e, 0xa4, 0x9a, 0x4a, 0xf1, 0xb8,
		0x8e, 0x34, 0x0f, 0x3d, 0xd9, 0xf2, 0xc5, 0x95, 0x90, 0x5c, 0x1a, 0x8b, 0x98, 0x87, 0xce, 0xcd,
		0x92, 0xc4, 0xb5, 0x77, 0xf5, 0xfa, 0xf6, 0x4e, 0xbd, 0x5e, 0xdd, 0xd9, 0xda, 0xa9, 0xee, 0x36,
		0x1a, 0xb5, 0x6d, 0x0e, 0xb4, 0x97, 0xd9, 0x0b, 0x5d, 0x11, 0x0a, 0x77, 0xff, 0xd6, 0xdc, 0x33,
		0xe4, 0xd4, 0xf7, 0x39, 0x89, 0x7c, 0x1c, 0x89, 0x90, 0x45, 0xc7, 0x16, 0xea, 0x96, 0x82, 0x19,
		0x7e, 0xd0, 0x10, 0x37, 0x98, 0x2c, 0xb2, 0x6a, 0x8b, 0xcf, 0xe2, 0xa6, 0x8d, 0xa4, 0xe8, 0xe2,
		0x13, 0x9a, 0x92, 0x11, 0xb5, 0x83, 0x5c, 0xec, 0x9f, 0x66, 0x76, 0x8f, 0xe6, 0xd9, 0xa6, 0x77,
		0x72, 0x68, 0x49, 0x44, 0xec, 0x0c, 0x73, 0xe8, 0x2d, 0x43, 0xbb, 0x87, 0x0c, 0x61, 0x7b, 0xa7,
		0x63, 0x4f, 0x18, 0x2e, 0xc9, 0x70, 0xcc, 0x7a, 0xbc, 0xb0, 0x4b, 0x6d, 0xd3, 0xb5, 0x67, 0x0b,
		0xe1, 0x58, 0x97, 0x55, 0x0f, 0x96, 0x07, 0xbd, 0x56, 0x96, 0xba, 0x39, 0x84, 0xc2, 0x77, 0x94,
		0x27, 0x2f, 0x0c, 0x15, 0xdc, 0x6b, 0x01, 0x71, 0xb6, 0xda, 0x02, 0xe2, 0x54, 0x06, 0xd2, 0xbf,
		0x35, 0xd8, 0xf7, 0x5d, 0xe1, 0x94, 0x41, 0xcc, 0xb7, 0x8f, 0x0a, 0xcb, 0xf4, 0xe0, 0x47, 0xfb,
		0xa2, 0xe4, 0x7b, 0x56, 0xc0, 0x49, 0xe8, 0xc4, 0x49, 0x90, 0x93, 0x6a, 0x84, 0x78, 0x8f, 0x2f,
		0x57, 0xa3, 0x0f, 0x47, 0x43, 0xd0, 0x61, 0x15, 0x4e, 0x41, 0xd3, 0x32, 0xf5, 0x74, 0x4c, 0x15,
		0x21, 0xa3, 0x40, 0xb4, 0xd9, 0x07, 0xe9, 0xa6, 0x1e, 0x44, 0x9b, 0x77, 0x90, 0xad, 0x30, 0xa5,
		0x5c, 0x41, 0xca, 0xa2, 0x42, 0x94, 0x7a, 0xfc, 0xc6, 0xa6, 0xc2, 0x93, 0x4d, 0x88, 0xc6, 0xa5,
		0x42, 0x13, 0x97, 0x2b, 0xdf, 0x24, 0xcc, 0x88, 0x36, 0xb3, 0xa0, 0xdd, 0xb4, 0x82, 0x43, 0x73,
		0x0a, 0xe2, 0x4d, 0x28, 0xc8, 0x37, 0x9b, 0xe0, 0xd0, 0x54, 0x82, 0x55, 0xf3, 0x08, 0x8e, 0xf7,
		0x62, 0x2c, 0x9a, 0x41, 0xf0, 0xbe, 0x19, 0x63, 0xd0, 0xdc, 0x01, 0xb9, 0x56, 0xcf, 0x79, 0xb8,
		0xe4, 0x9b, 0x32, 0x30, 0x6b, 0xbe, 0xc0, 0xa1, 0xc9, 0x02, 0xaf, 0x66, 0x0a, 0xdf, 0x6d, 0x9a,
		0xc0, 0xa6, 0x45, 0x02, 0xa7, 0x56, 0x08, 0xcc, 0x7a, 0xf5, 0xde, 0x57, 0x8a, 0x7e, 0xb3, 0xfb,
		0xb1, 0x65, 0xa2, 0x7b, 0xf3, 0xda, 0x29, 0xc2, 0x5d, 0x27, 0x15, 0x3c, 0xfd, 0xf5, 0x7b, 0xfa,
		0x0f, 0x32, 0xb3, 0x4c, 0x14, 0x55, 0xbe, 0xe8, 0x35, 0x02, 0xcc, 0x67, 0x2e, 0x15, 0x18, 0xd5,
		0x6f, 0xc6, 0xb6, 0x48, 0x5f, 0xc8, 0x27, 0x7d, 0x81, 0x5e, 0xdd, 0x3d, 0xae, 0xeb, 0x1f, 0x53,
		0xb0, 0xa9, 0xfc, 0x2c, 0x83, 0x2f, 0xd2, 0x52, 0xfe, 0x35, 0xdd, 0x4b, 0xfb, 0x65, 0x21, 0x71,
		0x75, 0xff, 0x23, 0x62, 0xe1, 0xea, 0xfe, 0x05, 0xea, 0x86, 0xab, 0xfb, 0x97, 0x1c, 0x08, 0x5c,
		0xdd, 0x67, 0x8d, 0x51, 0x70, 0x75, 0xcf, 0x1f, 0x68, 0x92, 0xbd, 0xba, 0xa7, 0x3d, 0x9c, 0x8b,
		0xc5, 0x30, 0x2e, 0xe2, 0xc3, 0xb7, 0x70, 0x79, 0xbf, 0x2e, 0xe0, 0x80, 0x0b, 0x48, 0x60, 0x07,
		0x16, 0xd8, 0x81, 0x06, 0x6e, 0xe0, 0x81, 0x26, 0x88, 0x20, 0x0a, 0x26, 0xc8, 0x83, 0x8a, 0x54,
		0x40, 0x5f, 0xc8, 0x8b, 0x84, 0xba, 0x62, 0x72, 0xc5, 0x3c, 0x97, 0x97, 0xf8, 0x99, 0xe6, 0x31,
		0xb0, 0x8a, 0xcd, 0x80, 0x2a, 0x4e, 0x03, 0xa9, 0x58, 0x0e, 0xa0, 0xe2, 0x36, 0x70, 0x8a, 0xed,
		0x80, 0x29, 0xb6, 0x03, 0xa5, 0xb8, 0x0e, 0x90, 0x42, 0x47, 0xdc, 0x97, 0x3c, 0x74, 0x36, 0x03,
		0xa1, 0xee, 0x2e, 0x22, 0x3c, 0xa9, 0x6a, 0xdb, 0x1c, 0x4c, 0xee, 0x1c, 0x23, 0x6c, 0x33, 0x10,
		0xb5, 0xef, 0xc8, 0x0b, 0xc1, 0x66, 0x3e, 0x10, 0xa3, 0x7e, 0xee, 0x87, 0x9e, 0xe4, 0x37, 0x49,
		0x36, 0xc9, 0x91, 0x64, 0x38, 0xd5, 0xf4, 0x43, 0xe8, 0x8c, 0x95, 0x17, 0xc8, 0x03, 0xef, 0xc2,
		0xe3, 0xd2, 0x33, 0x7b, 0xd5, 0xc6, 0x89, 0x0b, 0x47, 0x79, 0xd7, 0x82, 0x45, 0x0b, 0x67, 0x46,
		0x6e, 0x6e, 0xf5, 0x48, 0x3a, 0x37, 0x7c, 0x8f, 0xe4, 0x76, 0xa3, 0xb1, 0xd5, 0xc0, 0xb1, 0xc4,
		0xb1, 0xd4, 0x00, 0x1b, 0xf3, 0x91, 0x72, 0x84, 0xfe, 0x56, 0xba, 0xb9, 0x05, 0x1e, 0x43, 0xfe,
		0x39, 0x0d, 0xf5, 0x07, 0x27, 0x9a, 0xb1, 0xa0, 0xe0, 0x44, 0x73, 0x16, 0x1a, 0x9c, 0x68, 0x41,
		0x82, 0x83, 0x13, 0x05, 0x22, 0x60, 0x13, 0x2c, 0x82, 0x13, 0xcd, 0x1f, 0x23, 0x80, 0x13, 0xcd,
		0xfa, 0x05, 0x4e, 0x34, 0x5f, 0xa1, 0xc1, 0x89, 0x96, 0x65, 0xe3, 0xc0, 0x89, 0x16, 0x70, 0x24,
		0xc1, 0x89, 0xe2, 0x58, 0xae, 0xc9, 0xb1, 0x04, 0x27, 0x9a, 0xc9, 0x0b, 0x9c, 0xa8, 0x76, 0x6e,
		0xc1, 0xbc, 0x9e, 0x5b, 0x54, 0x26, 0xa4, 0xe8, 0x4c, 0x5c, 0xb0, 0xa2, 0x59, 0x88, 0x09, 0x56,
		0x34, 0x47, 0x45, 0x05, 0x2b, 0x9a, 0xe7, 0x01, 0x03, 0x2b, 0x5a, 0xb0, 0xe0, 0x60, 0x45, 0xd7,
		0x2f, 0x5c, 0x64, 0xc8, 0x8a, 0x9e, 0x79, 0xd2, 0x09, 0x6f, 0x19, 0xb1, 0xa2, 0xbb, 0x80, 0xd4,
		0x1a, 0x49, 0x86, 0xd1, 0xde, 0x2f, 0x93, 0x93, 0x6b, 0xdf, 0xa5, 0xa5, 0x4e, 0x39, 0x14, 0x7b,
		0x30, 0xd1, 0x3d, 0x34, 0xe8, 0x5e, 0xc1, 0xf8, 0xd8, 0xea, 0x70, 0x5c, 0xd7, 0x72, 0xbe, 0xdb,
		0xf1, 0x6c, 0xfd, 0x43, 0xff, 0x1a, 0xbd, 0xe2, 0x28, 0x4b, 0x42, 0xc4, 0x1e, 0x99, 0x1d, 0x2f,
		0x52, 0x4d, 0xa5, 0x68, 0x55, 0xbd, 0x9b, 0x87, 0x9e, 0x6c, 0xf9, 0x22, 0x0e, 0x4a, 0x89, 0x5d,
		0xa6, 0x98, 0x87, 0xce, 0xcd, 0x92, 0x64, 0xb5, 0x77, 0xf5, 0xfa, 0xf6, 0x4e, 0xbd, 0x5e, 0xdd,
		0xd9, 0xda, 0xa9, 0xee, 0x36, 0x1a, 0xb5, 0x6d, 0x4a, 0x5d, 0xea, 0xcd, 0x5e, 0xe8, 0x8a, 0x50,
		0xb8, 0xfb, 0xb7, 0xe6, 0x9e, 0x21, 0xa7, 0xbe, 0x4f, 0x51, 0xb4, 0xe3, 0x48, 0x84, 0xa4, 0x6e,
		0x9d, 0xa8, 0x9c, 0x4c, 0xa2, 0x08, 0x81, 0x2b, 0x32, 0x30, 0x49, 0x4d, 0xf4, 0xcc, 0x17, 0x05,
		0xd0, 0x70, 0xfd, 0xe5, 0x3b, 0xda, 0x72, 0x25, 0x28, 0xd9, 0x90, 0x50, 0x33, 0x20, 0x1c, 0x0d,
		0x47, 0xb9, 0x07, 0xa9, 0x3c, 0xf5, 0x2d, 0xe7, 0x93, 0x4b, 0x3a, 0x30, 0xa6, 0xb8, 0x51, 0xa1,
		0x63, 0x4d, 0x63, 0xcd, 0x3a, 0xf3, 0xcb, 0x65, 0xc5, 0xcd, 0x50, 0x9c, 0x8b, 0x50, 0xc8, 0x71,
		0xf9, 0xa9, 0xaa, 0x04, 0x2c, 0xc6, 0x82, 0xfa, 0xef, 0x7f, 0x78, 0xbf, 0xb3, 0xfd, 0xae, 0x6e,
		0x58, 0x46, 0x6f, 0x70, 0xf4, 0xe1, 0x7a, 0xd3, 0x98, 0xb9, 0xba, 0x4a, 0xc7, 0x93, 0x9f, 0x8d,
		0x38, 0x7a, 0xf1, 0xce, 0xa6, 0x4a, 0x18, 0x4d, 0xf7, 0x5a, 0x84, 0xca, 0x8b, 0x12, 0x78, 0x4e,
		0xc0, 0xdf, 0x53, 0xbb, 0x7b, 0x5d, 0xbe, 0x5b, 0xbd, 0xd3, 0x33, 0x22, 0x70, 0x97, 0xea, 0xf5,
		0xe9, 0xca, 0xf5, 0xe8, 0x4f, 0x29, 0xe2, 0xba, 0xc3, 0xa0, 0xd2, 0x3e, 0x7d, 0x54, 0x9e, 0x06,
		0x99, 0x5f, 0x2e, 0x85, 0x84, 0x09, 0xbf, 0x33, 0xe1, 0x1b, 0x1b, 0xb3, 0xdb, 0x93, 0x4a, 0x8c,
		0xbf, 0x8c, 0x5f, 0x8d, 0xd7, 0xf3, 0x4c, 0x83, 0x19, 0x32, 0xdb, 0x7b, 0x7c, 0x12, 0xdd, 0x6b,
		0x18, 0xf1, 0x6f, 0x1a, 0xf1, 0x44, 0xc9, 0x60, 0xbf, 0x7f, 0xdc, 0x7e, 0xff, 0xa4, 0x16, 0xbe,
		0x02, 0x27, 0x65, 0x98, 0x07, 0x22, 0x1a, 0x87, 0xde, 0x84, 0x14, 0x21, 0x95, 0x9a, 0x97, 0xb6,
		0x1c, 0xfb, 0x53, 0x57, 0x18, 0xea, 0x52, 0x18, 0xf7, 0x02, 0x39, 0x63, 0x1c, 0x48, 0xe5, 0x78,
		0x52, 0x84, 0x46, 0x7c, 0x5e, 0x92, 0xff, 0x32, 0x0b, 0xfb, 0x8c, 0xce, 0xa0, 0x79, 0x2a, 0x13,
		0x55, 0xf0, 0x22, 0x23, 0x9a, 0x88, 0xb1, 0x77, 0xee, 0x09, 0xd7, 0x50, 0x81, 0x71, 0x26, 0x0c,
		0x47, 0xa6, 0xbf, 0xc9, 0x98, 0xff, 0xa6, 0xce, 0xa0, 0x49, 0xe5, 0xb8, 0x11, 0x4c, 0xeb, 0x5b,
		0xb6, 0x4c, 0xee, 0x92, 0xb2, 0x10, 0x22, 0xde, 0x28, 0xe7, 0xe8, 0xad, 0x18, 0xaa, 0xe2, 0xf4,
		0x19, 0x54, 0xe1, 0x7a, 0x63, 0xe4, 0xb5, 0x62, 0x7a, 0x88, 0x50, 0xa2, 0xcc, 0xa8, 0xd0, 0x12,
		0x2d, 0x78, 0xae, 0x57, 0x25, 0xe5, 0xd8, 0xbe, 0xe2, 0xcf, 0x7a, 0x09, 0xa7, 0xcd, 0xbc, 0x08,
		0x9d, 0x71, 0xa2, 0x4c, 0xa5, 0x1d, 0xb4, 0x14, 0x1b, 0xde, 0x89, 0x52, 0x92, 0xd5, 0x29, 0x77,
		0x98, 0x4d, 0xe9, 0xb5, 0x40, 0x14, 0x6a, 0x7c, 0x48, 0xd5, 0xee, 0x50, 0x01, 0xef, 0xe4, 0x6a,
		0x6d, 0xc8, 0xe1, 0x73, 0x6a, 0xb5, 0x31, 0xeb, 0x75, 0x2f, 0x57, 0xf6, 0x30, 0x16, 0x33, 0xb9,
		0x02, 0x2e, 0xfd, 0x94, 0xa6, 0x4d, 0x03, 0x63, 0x69, 0x4a, 0x3e, 0x0f, 0x34, 0xe6, 0xb2, 0x91,
		0x29, 0x6f, 0xa5, 0x54, 0xbe, 0x4a, 0xb2, 0x3c, 0x95, 0x32, 0x7b, 0x4e, 0xaa, 0xbc, 0x94, 0x07,
		0x7f, 0x4e, 0xa8, 0x3c, 0x74, 0xbd, 0x73, 0xbb, 0xa8, 0xcc, 0x29, 0x33, 0x29, 0x4d, 0x39, 0x5f,
		0xf6, 0x94, 0x54, 0x8e, 0x35, 0xad, 0x41, 0xa6, 0xe4, 0xfa, 0x42, 0x50, 0xec, 0xff, 0x40, 0xba,
		0xcf, 0x03, 0xd5, 0x7e, 0x0e, 0xe4, 0xfb, 0x36, 0x90, 0xef, 0xcf, 0x40, 0xbd, 0x0f, 0x03, 0xea,
		0xa6, 0x28, 0x3a, 0xe0, 0x54, 0x20, 0x9a, 0x53, 0xc7, 0x49, 0x4f, 0x1b, 0x27, 0x3a, 0x65, 0x9c,
		0x6c, 0xf3, 0x26, 0xca, 0xcd, 0x9a, 0x58, 0x34, 0x67, 0xa2, 0xde, 0x8c, 0x89, 0x4d, 0xf3, 0x25,
		0x36, 0xcd, 0x96, 0xb8, 0x34, 0x57, 0x42, 0xb3, 0x06, 0x4e, 0xce, 0x3e, 0x15, 0xcc, 0x9b, 0x58,
		0x9e, 0x54, 0x22, 0x3c, 0x77, 0xc6, 0xc2, 0x72, 0x5c, 0x37, 0x14, 0x51, 0x44, 0xd7, 0xba, 0x2c,
		0x4c, 0xf4, 0xa3, 0x52, 0x13, 0x3d, 0xbf, 0xb4, 0xfb, 0x3d, 0x92, 0xef, 0xf3, 0xc8, 0xa1, 0xbf,
		0x23, 0xab, 0xbe, 0x8e, 0x5c, 0xfa, 0x39, 0xb2, 0xeb, 0xe3, 0xc8, 0xae, 0x7f, 0x23, 0xb7, 0xbe,
		0x8d, 0x68, 0xeb, 0xf6, 0x9c, 0x87, 0x4b, 0xbe, 0x3f, 0xe3, 0x92, 0x37, 0xbf, 0xae, 0x2f, 0xbc,
		0xb8, 0x25, 0x03, 0xeb, 0x7f, 0x81, 0xa4, 0xdc, 0xc5, 0x39, 0x0d, 0xfa, 0xdf, 0x11, 0x96, 0xf1,
		0xc8, 0x51, 0x4a, 0x84, 0x92, 0xfc, 0xb8, 0x1a, 0xf3, 0xcd, 0x9b, 0x93, 0xaa, 0xb5, 0x3b, 0xfa,
		0xfb, 0xa4, 0x66, 0xed, 0x8e, 0x66, 0x6f, 0x6b, 0xc9, 0x97, 0xd9, 0xfb, 0xcd, 0x93, 0xaa, 0x55,
		0x5f, 0xbc, 0x6f, 0x9c, 0x54, 0xad, 0xc6, 0xe8, 0xed, 0xe9, 0xe9, 0xc6, 0xdb, 0xbf, 0xb6, 0xbe,
		0x3e, 0xff, 0x07, 0xdf, 0xfc, 0xe3, 0xe4, 0xf4, 0x74, 0xf2, 0x57, 0xf7, 0x6b, 0xfc, 0x67, 0xe7,
		0xeb, 0xe8, 0x5f, 0x6f, 0xff, 0x4d, 0xdd, 0xa7, 0xc4, 0x0b, 0x38, 0x3d, 0xdd, 0x18, 0xfd, 0x93,
		0xae, 0x59, 0x1e, 0xc1, 0x2c, 0x3f, 0xe3, 0x81, 0x12, 0x6a, 0x15, 0xf0, 0x5d, 0x59, 0x49, 0x94,
		0xa0, 0x7e, 0xef, 0xc5, 0xa8, 0x01, 0xf1, 0xc6, 0xc6, 0x13, 0x65, 0x83, 0x1f, 0xfb, 0xcd, 0xf7,
		0x2d, 0xbb, 0x7d, 0x64, 0xb7, 0xbb, 0xc3, 0x56, 0xff, 0x43, 0xfc, 0x97, 0xe6, 0xc1, 0x41, 0xbf,
		0x35, 0x18, 0xbc, 0x46, 0x87, 0xf8, 0x5c, 0x23, 0x0b, 0x42, 0x05, 0xb0, 0xda, 0xc5, 0x17, 0x8f,
		0xc6, 0x19, 0x3f, 0x75, 0x06, 0xe8, 0xb7, 0x92, 0x67, 0x70, 0x4a, 0x29, 0x96, 0xdf, 0xfe, 0xb0,
		0xe9, 0x5c, 0x2e, 0x67, 0x4c, 0xa9, 0x3f, 0x63, 0x1e, 0x34, 0xdc, 0x95, 0x31, 0x46, 0xd3, 0x33,
		0x6b, 0xd8, 0xf9, 0x64, 0x24, 0x2a, 0xb6, 0xa8, 0x5f, 0x8c, 0x0c, 0x75, 0xe9, 0xa8, 0x53, 0xe9,
		0x29, 0xc3, 0x8b, 0x0c, 0x6f, 0xf6, 0x9b, 0x5c, 0x2e, 0xa7, 0x9e, 0x99, 0x71, 0x35, 0x58, 0xd4,
		0xf1, 0x6a, 0x6b, 0x6b, 0x8d, 0x6f, 0xd5, 0x01, 0x67, 0x74, 0x70, 0x30, 0x30, 0x6d, 0x0d, 0x24,
		0xfc, 0x8a, 0x78, 0x93, 0xf9, 0x7e, 0x11, 0xc4, 0x24, 0xe6, 0x44, 0x84, 0x5e, 0xe0, 0xd2, 0xbf,
		0x60, 0x9c, 0xcb, 0x89, 0x2b, 0xc5, 0x9f, 0x11, 0x0f, 0x57, 0x8a, 0x19, 0x6a, 0x22, 0xae, 0x14,
		0xf3, 0xc1, 0xa5, 0xb8, 0x52, 0xcc, 0x1d, 0x7a, 0xe2, 0x4a, 0x51, 0x2f, 0x36, 0x81, 0xd1, 0x95,
		0xe2, 0xd4, 0x93, 0x6a, 0x6b, 0x93, 0xc1, 0x25, 0xe2, 0x0e, 0x61, 0x11, 0xfb, 0x8e, 0xbc, 0x10,
		0xe0, 0xff, 0x5f, 0xbe, 0x91, 0x87, 0x1e, 0x23, 0xc6, 0x6d, 0x31, 0x45, 0x9f, 0xc9, 0x00, 0x7a,
		0xb6, 0x93, 0xf3, 0xf9, 0x4d, 0xcc, 0xe7, 0x40, 0x72, 0x1f, 0x3a, 0x37, 0xfc, 0x8e, 0x5a, 0x7d,
		0x73, 0xb7, 0xbe, 0xbb, 0xbd, 0xb3, 0xb9, 0xdb, 0xc0, 0x99, 0xc3, 0x99, 0x63, 0x00, 0x50, 0xe9,
		0x4b, 0x87, 0xa4, 0x94, 0xe7, 0x1c, 0x0b, 0x4e, 0x49, 0x29, 0x74, 0xe6, 0x5b, 0x68, 0x80, 0x4c,
		0x97, 0xe6, 0x63, 0x6c, 0x6d, 0x6f, 0x6e, 0x21, 0xd9, 0x24, 0x87, 0x40, 0x8f, 0xee, 0xc8, 0x8c,
		0xef, 0xca, 0xae, 0x45, 0xc6, 0xc9, 0x42, 0xb7, 0xe1, 0xeb, 0x75, 0xf5, 0xf5, 0xbf, 0x20, 0x85,
		0x72, 0x5d, 0x1c, 0xd5, 0x77, 0xd2, 0xc7, 0x8e, 0x5a, 0xfd, 0x76, 0xef, 0x00, 0x49, 0x93, 0xf9,
		0xfa, 0x31, 0x24, 0x4d, 0x16, 0xec, 0xc2, 0x7e, 0x50, 0xeb, 0xc1, 0x20, 0x65, 0xb0, 0xef, 0xda,
		0xa4, 0x49, 0xce, 0x72, 0x18, 0x16, 0xc9, 0x5c, 0xe3, 0xa4, 0x69, 0xfd, 0x13, 0x09, 0x5f, 0x49,
		0x76, 0x97, 0x1b, 0xff, 0x1f, 0xe1, 0x9e, 0xca, 0xd9, 0xb4, 0x87, 0xe0, 0xdc, 0x50, 0x97, 0x5e,
		0x94, 0xfc, 0x07, 0xe4, 0x4a, 0x16, 0x62, 0x57, 0x91, 0x2b, 0x59, 0xae, 0x99, 0xcd, 0xeb, 0xf4,
		0x20, 0x61, 0x12, 0xf1, 0x51, 0x99, 0xf1, 0x11, 0x12, 0x26, 0xb9, 0xa2, 0x13, 0x33, 0x14, 0x4e,
		0x44, 0x18, 0x88, 0xa4, 0xc0, 0x63, 0x2e, 0x27, 0x12, 0x26, 0x7f, 0x46, 0x3c, 0x24, 0x4c, 0x66,
		0xa8, 0x89, 0x48, 0x98, 0xcc, 0x07, 0x9c, 0x22, 0x61, 0x32, 0x77, 0xfc, 0x89, 0x84, 0x49, 0xbd,
		0x78, 0x05, 0x46, 0x09, 0x93, 0x42, 0x4e, 0xaf, 0x44, 0xe8, 0x10, 0x0f, 0x3d, 0xd3, 0xd6, 0x2b,
		0x75, 0xc2, 0x32, 0xb6, 0xe4, 0xf4, 0x8a, 0xbe, 0x65, 0x1f, 0x06, 0x03, 0x15, 0x7a, 0xf2, 0x82,
		0x05, 0x59, 0x62, 0x56, 0x63, 0x1d, 0x3d, 0xee, 0xfe, 0xd6, 0xed, 0xfd, 0xde, 0xe5, 0x40, 0xee,
		0xd7, 0x62, 0x79, 0x07, 0xbd, 0x0f, 0xc3, 0xdf, 0x9b, 0xfd, 0x96, 0xdd, 0x6f, 0x0d, 0x86, 0xcd,
		0xfe, 0x90, 0x83, 0xe0, 0x9b, 0xf7, 0x04, 0xef, 0xf4, 0x9a, 0x07, 0xf6, 0xf1, 0xd1, 0xc7, 0x7e,
		0xf3, 0xa0, 0xc5, 0x41, 0xfe, 0xad, 0x58, 0xfe, 0xf7, 0xbd, 0xee, 0xb0, 0xdf, 0xeb, 0xd8, 0x47,
		0xfd, 0xde, 0xfb, 0xd6, 0x60, 0xd0, 0xeb, 0xdb, 0x83, 0xdf, 0xdb, 0xc3, 0xf7, 0xff, 0xa1, 0x4d,
		0xc4, 0x10, 0x27, 0xc7, 0xcd, 0x61, 0xd0, 0x4e, 0x60, 0x0a, 0x03, 0x73, 0xf1, 0xa4, 0x02, 0xec,
		0x19, 0x5b, 0x1c, 0xae, 0x06, 0x9f, 0x38, 0x7f, 0x7b, 0xc6, 0x26, 0x2f, 0xe9, 0x67, 0x66, 0x8f,
		0x5c, 0x7f, 0xf4, 0x47, 0xc5, 0x5e, 0x78, 0x97, 0x3d, 0xa3, 0x0a, 0x9e, 0x11, 0xb1, 0x41, 0xee,
		0xfa, 0x86, 0x9c, 0xcb, 0x3c, 0x5e, 0xc8, 0xb9, 0xcc, 0xc5, 0xa4, 0x23, 0xe7, 0xb2, 0x30, 0xd9,
		0x91, 0x73, 0x09, 0x9f, 0x45, 0x5f, 0x3a, 0xe4, 0x5c, 0xae, 0x8f, 0xa3, 0xfa, 0x4e, 0xf6, 0xd9,
		0x1c, 0xe6, 0xdb, 0xfd, 0x56, 0x73, 0xd0, 0xeb, 0x22, 0xf7, 0x32, 0x5f, 0x7f, 0x86, 0xdc, 0xcb,
		0x82, 0x5d, 0xd9, 0x33, 0xb5, 0x1f, 0x39, 0x98, 0x19, 0xec, 0xbf, 0x36, 0x39, 0x98, 0xa1, 0x88,
		0x94, 0x13, 0x2a, 0x63, 0x96, 0x1e, 0xf1, 0x03, 0xed, 0xf6, 0xbc, 0xe8, 0x54, 0xa2, 0x49, 0x65,
		0xd1, 0x46, 0x15, 0x89, 0x97, 0xe5, 0xda, 0xd8, 0x4c, 0x8f, 0x0c, 0xb2, 0x2d, 0x11, 0x19, 0x95,
		0x19, 0x19, 0x21, 0xdb, 0x92, 0x2b, 0x0e, 0x31, 0x15, 0xe5, 0x7c, 0x8d, 0xbb, 0xe1, 0xf4, 0x74,
		0x2b, 0x32, 0x90, 0x69, 0xf9, 0x42, 0x01, 0x91, 0x69, 0xb9, 0x9e, 0xc8, 0x14, 0x99, 0x96, 0x85,
		0x02, 0x4e, 0x64, 0x5a, 0xea, 0xc5, 0x1e, 0x70, 0x9a, 0x76, 0xe7, 0x0a, 0xa9, 0x3c, 0x75, 0x1b,
		0x8a, 0x73, 0x0e, 0x99, 0x96, 0x84, 0x5b, 0x92, 0x99, 0xed, 0xf9, 0x56, 0xee, 0x3b, 0x11, 0x03,
		0x0b, 0xbf, 0x50, 0x80, 0x19, 0x6f, 0xd8, 0x19, 0x34, 0xed, 0x61, 0xe7, 0x93, 0x3d, 0xfc, 0xf3,
		0xa8, 0x35, 0xa0, 0x6e, 0xeb, 0x93, 0x46, 0x75, 0x11, 0xf9, 0x3b, 0x15, 0x83, 0xc5, 0xbd, 0xca,
		0x23, 0xca, 0xf0, 0xd8, 0xd4, 0x23, 0x30, 0xc9, 0xeb, 0xaa, 0x0d, 0xb3, 0x76, 0x0e, 0x78, 0xfe,
		0xeb, 0xfa, 0xfc, 0x57, 0xaf, 0x94, 0x90, 0x43, 0xf1, 0xb2, 0xd7, 0x08, 0x08, 0x9f, 0xb9, 0x54,
		0xb4, 0x24, 0x22, 0x66, 0xf5, 0xcc, 0xa6, 0x94, 0x81, 0x72, 0xc8, 0x5e, 0x95, 0x9a, 0xd1, 0xf8,
		0x52, 0x5c, 0x39, 0x13, 0x47, 0x5d, 0xc6, 0x16, 0xae, 0x12, 0x4c, 0x84, 0x1c, 0x27, 0x2c, 0x9c,
		0x25, 0x85, 0xfa, 0x12, 0x84, 0x9f, 0x2d, 0x4f, 0x46, 0xca, 0x91, 0x63, 0x51, 0xb9, 0xff, 0x8d,
		0xe8, 0xc1, 0x77, 0x2a, 0x93, 0x30, 0x50, 0xc1, 0x38, 0xf0, 0xa3, 0xf4, 0x5d, 0x65, 0x16, 0xc8,
		0x57, 0x9c, 0x50, 0x38, 0x51, 0xf2, 0x67, 0xc5, 0x8f, 0xdc, 0xb3, 0x8a, 0x1f, 0x39, 0xb3, 0x8b,
		0xfa, 0xf4, 0x5d, 0xfc, 0x26, 0xf9, 0x5b, 0x25, 0x98, 0x38, 0xff, 0x9d, 0x0a, 0x2b, 0x7e, 0x7b,
		0x11, 0x3a, 0xe3, 0xd9, 0x3b, 0xe5, 0x5f, 0x47, 0xf1, 0x1f, 0x95, 0x48, 0x39, 0x8a, 0x58, 0xd3,
		0x0e, 0x3a, 0x47, 0x80, 0x90, 0xfa, 0x9b, 0x53, 0xf9, 0x59, 0x06, 0x5f, 0xa4, 0xa5, 0xfc, 0x6b,
		0x72, 0xba, 0x7f, 0x37, 0x8a, 0x62, 0x49, 0x48, 0x62, 0xa6, 0x63, 0x11, 0xe3, 0x13, 0x13, 0x8b,
		0x2a, 0x49, 0x4f, 0x99, 0x9c, 0x67, 0x41, 0xca, 0x53, 0x27, 0xe3, 0xd9, 0x90, 0xf0, 0x6c, 0xc8,
		0x77, 0x2e, 0xa4, 0x3b, 0x20, 0xe6, 0xb7, 0x1e, 0xe2, 0x81, 0x17, 0x12, 0xc5, 0x96, 0x09, 0x52,
		0x23, 0x7f, 0x61, 0x3f, 0x13, 0x93, 0xf6, 0x8d, 0x7d, 0x0d, 0x37, 0xf6, 0xda, 0x81, 0x02, 0x56,
		0xe0, 0x80, 0x0b, 0x48, 0x60, 0x07, 0x16, 0xd8, 0x81, 0x06, 0x6e, 0xe0, 0x81, 0x26, 0x88, 0x20,
		0x0a, 0x26, 0xc8, 0x83, 0x8a, 0x54, 0x40, 0x5f, 0xc8, 0x8b, 0x84, 0xb4, 0x62, 0x72, 0xaf, 0x3c,
		0x97, 0x97, 0xf8, 0x99, 0xa6, 0x9d, 0x20, 0xc8, 0x06, 0x76, 0x70, 0x82, 0x1f, 0x2c, 0x61, 0x08,
		0x37, 0x38, 0xc2, 0x16, 0x96, 0xb0, 0x85, 0x27, 0x5c, 0x61, 0x0a, 0x6d, 0xb8, 0x42, 0x1c, 0xb6,
		0xa4, 0x0f, 0x9d, 0x7c, 0xc2, 0xe1, 0x03, 0xab, 0x3b, 0xf5, 0xa4, 0xaa, 0x6d, 0x73, 0x30, 0xb9,
		0x73, 0x8c, 0xb0, 0xcd, 0x40, 0x54, 0x1e, 0x33, 0xb2, 0x17, 0x2f, 0x46, 0xd5, 0x99, 0x9c, 0x66,
		0x66, 0xa7, 0x42, 0x33, 0x9b, 0x9d, 0x9d, 0xca, 0xcd, 0x75, 0x9e, 0xef, 0x9d, 0x8d, 0xe3, 0x36,
		0xd7, 0x97, 0x89, 0x9b, 0x5b, 0x3d, 0x92, 0x8c, 0x66, 0x6b, 0x3f, 0x38, 0x92, 0xdb, 0x8d, 0xc6,
		0x56, 0x03, 0xc7, 0x12, 0xc7, 0x52, 0x03, 0x6c, 0xcc, 0x47, 0xca, 0x11, 0x8a, 0xc8, 0x75, 0x73,
		0x0b, 0xb4, 0x8b, 0xa4, 0x1f, 0x44, 0x3d, 0x0c, 0xc6, 0xd7, 0x81, 0x13, 0xcd, 0x58, 0x50, 0x70,
		0xa2, 0x39, 0x0b, 0x0d, 0x4e, 0xb4, 0x20, 0xc1, 0xc1, 0x89, 0x02, 0x11, 0xb0, 0x09, 0x16, 0xc1,
		0x89, 0xe6, 0x8f, 0x11, 0xc0, 0x89, 0x66, 0xfd, 0x02, 0x27, 0x9a, 0xaf, 0xd0, 0xe0, 0x44, 0xcb,
		0xb2, 0x71, 0xe0, 0x44, 0x0b, 0x38, 0x92, 0xe0, 0x44, 0x71, 0x2c, 0xd7, 0xe4, 0x58, 0x82, 0x13,
		0xcd, 0xe4, 0x05, 0x4e, 0x54, 0x3b, 0xb7, 0x60, 0x5e, 0xcf, 0x2d, 0x2a, 0x13, 0x52, 0x74, 0x26,
		0x2e, 0x58, 0xd1, 0x2c, 0xc4, 0x04, 0x2b, 0x9a, 0xa3, 0xa2, 0x82, 0x15, 0xcd, 0xf3, 0x80, 0x81,
		0x15, 0x2d, 0x58, 0x70, 0xb0, 0xa2, 0xeb, 0x17, 0x2e, 0x32, 0x64, 0x45, 0xcf, 0x3c, 0xe9, 0x84,
		0xb7, 0x8c, 0x58, 0xd1, 0x5d, 0x40, 0x6a, 0x8d, 0x24, 0xa3, 0x5a, 0xb1, 0x46, 0xbc, 0xd3, 0x52,
		0x2a, 0x27, 0xbf, 0x8e, 0x4b, 0x4b, 0x3d, 0x72, 0x28, 0x76, 0x5f, 0xa2, 0x7b, 0x5c, 0xd0, 0xb7,
		0x82, 0xf1, 0x81, 0xe5, 0x7d, 0x50, 0x29, 0xf6, 0x17, 0x8a, 0x54, 0x38, 0x1d, 0x2b, 0x39, 0x87,
		0x31, 0xdd, 0xd9, 0x0e, 0xb5, 0xe7, 0x1b, 0x64, 0x1f, 0xcd, 0xb7, 0xc5, 0xee, 0x25, 0xdb, 0x62,
		0x37, 0x43, 0xe1, 0xd8, 0x9d, 0xc8, 0x3d, 0xb3, 0x3b, 0x91, 0x13, 0xa3, 0xb4, 0xf8, 0xab, 0xdd,
		0x4b, 0x36, 0x20, 0x7e, 0xf7, 0x31, 0x5e, 0x7f, 0xfc, 0x66, 0xe8, 0x5f, 0xdb, 0xc7, 0xb3, 0x95,
		0x0f, 0xfd, 0x6b, 0x74, 0x86, 0xa3, 0x2c, 0x09, 0x11, 0x1b, 0x64, 0x76, 0xbc, 0x48, 0x35, 0x95,
		0xa2, 0x55, 0xe3, 0x6e, 0x1e, 0x7a, 0xb2, 0xe5, 0x8b, 0x38, 0x04, 0x25, 0x76, 0x75, 0x62, 0x1e,
		0x3a, 0x37, 0x4b, 0x92, 0xd5, 0xde, 0xd5, 0xeb, 0xdb, 0x3b, 0xf5, 0x7a, 0x75, 0x67, 0x6b, 0xa7,
		0xba, 0xdb, 0x68, 0xd4, 0xb6, 0x29, 0x35, 0xa2, 0x37, 0x7b, 0xa1, 0x2b, 0x42, 0xe1, 0xee, 0xdf,
		0x9a, 0x7b, 0x86, 0x9c, 0xfa, 0x3e, 0x45, 0xd1, 0x8e, 0x23, 0x11, 0x92, 0xba, 0x63, 0xa2, 0x72,
		0x32, 0x89, 0xa2, 0x02, 0x7e, 0x68, 0x80, 0x10, 0x02, 0xc8, 0xd1, 0xf3, 0xd3, 0x70, 0xf7, 0xe5,
		0x3b, 0xd7, 0x72, 0x25, 0x28, 0xd9, 0x78, 0x50, 0x33, 0x1a, 0xbc, 0x8c, 0x45, 0xb9, 0x47, 0xa8,
		0x3c, 0xc5, 0x2d, 0xe7, 0x93, 0x4b, 0x3a, 0x2a, 0xa6, 0xb8, 0x51, 0xa1, 0x63, 0x4d, 0x63, 0x9d,
		0x3a, 0xf3, 0xcb, 0x65, 0xbc, 0x67, 0x53, 0xd2, 0xcb, 0xce, 0x40, 0x25, 0x60, 0x26, 0x96, 0x46,
		0xf8, 0x27, 0xbc, 0xda, 0x37, 0x47, 0x99, 0x77, 0x06, 0x4d, 0x0a, 0xd3, 0xfb, 0xa9, 0xdd, 0xa3,
		0x12, 0x9d, 0xbe, 0x4f, 0xf6, 0x16, 0xf4, 0xfe, 0xf4, 0xfc, 0x1f, 0x54, 0xbc, 0x57, 0x88, 0x4f,
		0x68, 0x0e, 0xbe, 0x7f, 0x74, 0xb0, 0x7d, 0xea, 0xe0, 0x8d, 0x71, 0x20, 0x95, 0xe3, 0x49, 0x11,
		0xde, 0x8d, 0xea, 0x9e, 0x01, 0x01, 0xa3, 0x33, 0x68, 0x1a, 0x5e, 0x94, 0xce, 0xea, 0x76, 0x4f,
		0xa5, 0x0a, 0x8c, 0x33, 0x61, 0x04, 0xe7, 0x86, 0xba, 0x74, 0x54, 0x32, 0xc9, 0x7b, 0x83, 0xca,
		0x69, 0x22, 0x98, 0xbc, 0x41, 0x7f, 0x42, 0x3d, 0xe9, 0x4c, 0x8c, 0x27, 0x27, 0xcc, 0x67, 0xa7,
		0xbb, 0x08, 0x0d, 0x29, 0x84, 0x86, 0xa5, 0x7d, 0xfa, 0x68, 0xad, 0xf0, 0x3d, 0x91, 0x10, 0x98,
		0x4d, 0xe8, 0x5b, 0xa2, 0x9d, 0xce, 0x89, 0x0e, 0x2b, 0xc7, 0xde, 0x15, 0x7f, 0xbe, 0x4b, 0x38,
		0x61, 0x66, 0x18, 0x4c, 0x95, 0x08, 0x2d, 0x4f, 0x9e, 0x07, 0xe1, 0x55, 0xb9, 0xa7, 0x2c, 0x05,
		0x7c, 0x8f, 0xc8, 0x54, 0x92, 0xed, 0x29, 0x77, 0x48, 0x41, 0xe9, 0x39, 0xde, 0x14, 0x72, 0xb7,
		0x49, 0xe5, 0x64, 0x53, 0x81, 0xeb, 0xe4, 0x72, 0xa8, 0xc9, 0x21, 0x72, 0x6a, 0x39, 0xcf, 0xeb,
		0xc5, 0xc9, 0x96, 0xdd, 0x64, 0xdf, 0x4c, 0xe8, 0xff, 0xd2, 0x4f, 0x69, 0xda, 0x0c, 0x2a, 0x96,
		0xa6, 0xe4, 0xf3, 0x40, 0x63, 0xde, 0x0e, 0x99, 0xb2, 0x25, 0x4a, 0x65, 0x49, 0x24, 0xcb, 0x8e,
		0x28, 0xd3, 0xe1, 0xa4, 0xca, 0x86, 0x78, 0x10, 0xe2, 0x84, 0xca, 0x7e, 0xd6, 0xfb, 0x46, 0x9f,
		0xca, 0xfc, 0x19, 0x93, 0xd2, 0xf4, 0xda, 0x65, 0x4f, 0x49, 0xe5, 0x58, 0xd3, 0x1a, 0x50, 0x47,
		0xae, 0xde, 0x97, 0x62, 0x5d, 0x2f, 0xe9, 0xfa, 0x5d, 0xaa, 0x75, 0xba, 0xe4, 0xeb, 0x71, 0xc9,
		0xd7, 0xdd, 0x52, 0xaf, 0xaf, 0x45, 0x86, 0x3c, 0x45, 0x07, 0x9c, 0x0a, 0xb4, 0xc4, 0x73, 0x3a,
		0xbe, 0x35, 0x76, 0x26, 0xce, 0x99, 0xe7, 0x7b, 0xca, 0x13, 0x11, 0xdd, 0xe9, 0xf2, 0xdf, 0x90,
		0x19, 0xc3, 0xe6, 0x39, 0xba, 0x73, 0xca, 0x6e, 0x9d, 0x85, 0x7b, 0xa7, 0xee, 0xe6, 0xd9, 0xb8,
		0x7b, 0x36, 0x6e, 0x9f, 0x8b, 0xfb, 0xa7, 0x05, 0x03, 0x88, 0xc1, 0x01, 0xb2, 0xb0, 0x20, 0x15,
		0x0c, 0xc3, 0xe6, 0x75, 0x05, 0x01, 0xe4, 0xc1, 0x00, 0x07, 0x50, 0xc0, 0x0a, 0x1c, 0x70, 0x01,
		0x09, 0xec, 0xc0, 0x02, 0x3b, 0xd0, 0xc0, 0x0d, 0x3c, 0xd0, 0x04, 0x11, 0x44, 0xc1, 0x04, 0x79,
		0x50, 0x91, 0x0a, 0x28, 0x6e, 0x26, 0x22, 0xf4, 0x62, 0xfd, 0x73, 0x7c, 0x4b, 0x31, 0x6a, 0x25,
		0x7a, 0x5f, 0x70, 0xe2, 0xa7, 0xfc, 0x40, 0x9c, 0x3b, 0x53, 0x5f, 0xb1, 0x98, 0x4e, 0x60, 0x26,
		0xb5, 0xfb, 0xb4, 0xdb, 0x03, 0x8e, 0xd0, 0x44, 0x76, 0x1d, 0x80, 0x27, 0x27, 0x00, 0xca, 0x12,
		0x88, 0x72, 0x03, 0xa4, 0x6c, 0x81, 0x29, 0x5b, 0x80, 0xca, 0x15, 0xa8, 0xd2, 0x06, 0xac, 0xc4,
		0x81, 0x6b, 0xfa, 0xd0, 0x19, 0x36, 0x91, 0x0d, 0x02, 0x5f, 0x38, 0x92, 0x51, 0x17, 0xd9, 0x5a,
		0x0d, 0x2a, 0xfa, 0xa2, 0x10, 0x86, 0x4c, 0xff, 0x87, 0x1f, 0x96, 0x39, 0x14, 0xe7, 0x22, 0x14,
		0x72, 0x8c, 0x71, 0x65, 0x39, 0x5a, 0x82, 0xfe, 0x87, 0xf7, 0xf5, 0xdd, 0x9d, 0x2d, 0x93, 0xd1,
		0x58, 0x27, 0x66, 0x28, 0xec, 0x31, 0x34, 0x76, 0xa7, 0xda, 0xcc, 0x06, 0x24, 0x71, 0x05, 0x66,
		0x8f, 0x02, 0xb4, 0x85, 0xee, 0x63, 0xca, 0xd3, 0x9a, 0x49, 0x89, 0x29, 0x4f, 0xda, 0xa1, 0x1c,
		0x33, 0x29, 0xed, 0x3e, 0x9f, 0xfa, 0x56, 0x28, 0x22, 0xe5, 0x84, 0x6a, 0x96, 0x6f, 0xe5, 0x33,
		0x62, 0x6b, 0x9f, 0x5c, 0x01, 0x68, 0xdb, 0xec, 0x84, 0x05, 0x6d, 0x9b, 0x55, 0x44, 0x06, 0xda,
		0x36, 0x23, 0x41, 0x41, 0xdb, 0x22, 0x60, 0x78, 0x2a, 0x50, 0x00, 0x6d, 0x5b, 0x78, 0x54, 0x00,
		0xda, 0x56, 0x7f, 0xb4, 0x68, 0x80, 0xb6, 0x2d, 0x06, 0x24, 0x50, 0xa7, 0x6d, 0x11, 0x6a, 0x65,
		0x11, 0x6a, 0x5d, 0x0a, 0x7f, 0x22, 0x42, 0xc6, 0x91, 0xd6, 0x7c, 0x01, 0x08, 0xb4, 0x10, 0x68,
		0x21, 0xd0, 0x42, 0xa0, 0x85, 0x40, 0x0b, 0x81, 0x16, 0x02, 0x2d, 0x04, 0x5a, 0x08, 0xb4, 0x10,
		0x68, 0x21, 0xd0, 0x42, 0xa0, 0x55, 0xd6, 0xb3, 0x9d, 0x04, 0x9e, 0x54, 0x96, 0x0a, 0xac, 0xd9,
		0x9b, 0xe0, 0x5a, 0x84, 0x96, 0xef, 0x48, 0x3e, 0x81, 0xd6, 0x53, 0x0b, 0x40, 0xa0, 0x85, 0x40,
		0x0b, 0x81, 0x16, 0x02, 0x2d, 0x04, 0x5a, 0x08, 0xb4, 0x10, 0x68, 0x21, 0xd0, 0x42, 0xa0, 0x85,
		0x40, 0x0b, 0x81, 0xd6, 0x3a, 0xa8, 0x28, 0x0a, 0x11, 0x8a, 0x78, 0xf1, 0x2c, 0x44, 0x68, 0x6c,
		0x55, 0x77, 0x51, 0x88, 0x50, 0x28, 0x1a, 0x43, 0x21, 0x02, 0x05, 0x80, 0xb6, 0xd0, 0x7d, 0x14,
		0x22, 0xac, 0x99, 0x94, 0x28, 0x44, 0xd0, 0x0e, 0xe5, 0x98, 0x91, 0x9a, 0x9e, 0x59, 0xb3, 0xe9,
		0x5c, 0x7c, 0x88, 0xda, 0x65, 0xa1, 0x41, 0xce, 0x66, 0x27, 0x2c, 0xc8, 0xd9, 0xac, 0xe2, 0x2e,
		0x90, 0xb3, 0x19, 0x09, 0x0a, 0x72, 0x16, 0x61, 0xc1, 0x53, 0xe1, 0x00, 0xc8, 0xd9, 0xc2, 0xb1,
		0x3f, 0xc8, 0x59, 0xfd, 0x31, 0xa1, 0x01, 0x72, 0xb6, 0x18, 0x90, 0x00, 0x72, 0xf6, 0x45, 0xbb,
		0x08, 0x72, 0xb6, 0x88, 0x17, 0x4f, 0x72, 0x76, 0x7b, 0xf7, 0xdd, 0x0e, 0xc8, 0xd9, 0x42, 0xd1,
		0x18, 0xc8, 0x59, 0x0a, 0x00, 0x6d, 0xa1, 0xfb, 0x20, 0x67, 0xd7, 0x4c, 0x4a, 0x90, 0xb3, 0xda,
		0xa1, 0x1c, 0x53, 0x85, 0xce, 0xf9, 0xb9, 0x37, 0xb6, 0x84, 0xbc, 0xf0, 0xa4, 0x10, 0xa1, 0x27,
		0x2f, 0xf8, 0x90, 0xb4, 0x8f, 0x09, 0x0f, 0xb2, 0x36, 0x3b, 0x61, 0x41, 0xd6, 0x66, 0x15, 0x87,
		0x81, 0xac, 0xcd, 0x48, 0x50, 0x90, 0xb5, 0x08, 0x13, 0x9e, 0x0a, 0x0f, 0x40, 0xd6, 0x16, 0x1e,
		0x0b, 0x80, 0xac, 0xd5, 0x1f, 0x23, 0x1a, 0x20, 0x6b, 0x8b, 0x01, 0x09, 0x28, 0x59, 0xd4, 0x4a,
		0x32, 0xaa, 0xe3, 0xa5, 0x9a, 0x52, 0x06, 0x2a, 0x19, 0xc2, 0x4c, 0x7b, 0xca, 0x54, 0x34, 0xbe,
		0x14, 0x57, 0xce, 0xc4, 0x51, 0x97, 0xf1, 0x71, 0xae, 0x04, 0x13, 0x21, 0xc7, 0x09, 0x4c, 0xb5,
		0xa4, 0x50, 0x5f, 0x82, 0xf0, 0xb3, 0xe5, 0xc9, 0x48, 0x39, 0x72, 0x2c, 0x2a, 0xf7, 0xbf, 0x11,
		0x3d, 0xf8, 0x4e, 0x65, 0x12, 0x06, 0x2a, 0x18, 0x07, 0x7e, 0x94, 0xbe, 0xab, 0xcc, 0x3c, 0x57,
		0xc5, 0x09, 0x85, 0x13, 0x25, 0x7f, 0x56, 0xfc, 0xc8, 0x3d, 0xab, 0xf8, 0x91, 0x63, 0xa9, 0xdb,
		0x89, 0x88, 0xd2, 0x77, 0xf1, 0x9b, 0xe4, 0x6f, 0x95, 0x60, 0xe2, 0xfc, 0x77, 0x2a, 0xac, 0xf8,
		0xed, 0x2c, 0x39, 0xc8, 0x5a, 0x9a, 0x69, 0x5d, 0x51, 0xfe, 0x75, 0x14, 0xff, 0x51, 0x79, 0x7a,
		0xd0, 0x75, 0x65, 0x36, 0xf1, 0xf2, 0x15, 0x8e, 0x11, 0x3f, 0x89, 0xa8, 0x0d, 0x9f, 0x65, 0x70,
		0x3b, 0x65, 0x7e, 0xb9, 0x14, 0x92, 0x2c, 0xd9, 0xc1, 0x60, 0x2e, 0xe9, 0xc6, 0xc6, 0xcc, 0x62,
		0x54, 0x62, 0x3b, 0x64, 0xfc, 0x6a, 0xbc, 0x9e, 0x23, 0xee, 0x99, 0x85, 0xda, 0xeb, 0xb7, 0xed,
		0x76, 0xf7, 0x43, 0xaf, 0x7f, 0xd8, 0x1c, 0xb6, 0x7b, 0xdd, 0x66, 0xc7, 0x7e, 0xdf, 0x3c, 0x6a,
		0xee, 0xb7, 0x3b, 0xed, 0x61, 0xbb, 0x35, 0x78, 0x8d, 0x59, 0xa6, 0x99, 0xc6, 0x97, 0x89, 0x2e,
		0x63, 0x92, 0x69, 0x7e, 0xd1, 0xe4, 0xcb, 0x94, 0x1d, 0xfc, 0xff, 0x4f, 0x6c, 0xff, 0x81, 0x88,
		0xc6, 0xa1, 0x37, 0x21, 0x8f, 0x06, 0x57, 0x8c, 0x62, 0x5b, 0x8e, 0xfd, 0xa9, 0x2b, 0x0c, 0x75,
		0x29, 0x8c, 0x15, 0xa8, 0x65, 0x2c, 0x43, 0x2d, 0x23, 0x9a, 0x88, 0xb1, 0x77, 0xee, 0x8d, 0x93,
		0x7f, 0x34, 0xe2, 0xd3, 0x7b, 0x2a, 0xe3, 0x1f, 0x19, 0x76, 0x3e, 0x19, 0xc1, 0x79, 0xf2, 0xd3,
		0xfd, 0xb6, 0xd1, 0x19, 0x34, 0x0d, 0x2f, 0xfd, 0xcf, 0xc2, 0x35, 0x54, 0x60, 0x9c, 0x89, 0xd9,
		0x7f, 0xf0, 0x22, 0x23, 0x56, 0x3d, 0xea, 0x87, 0x9e, 0x11, 0x67, 0xb7, 0x6c, 0x4f, 0xdd, 0x25,
		0xdd, 0x63, 0x10, 0xa5, 0x73, 0x24, 0xec, 0x56, 0xcc, 0x6b, 0xe1, 0xc7, 0x06, 0x74, 0x86, 0x4e,
		0x74, 0x06, 0x39, 0xa9, 0x46, 0x88, 0x0e, 0xf9, 0xd2, 0x3c, 0x7a, 0xd2, 0x3b, 0x04, 0xfd, 0x98,
		0x19, 0xa9, 0x70, 0x3a, 0x56, 0x72, 0x8e, 0x9d, 0xba, 0xb3, 0x9d, 0x6b, 0xcf, 0x37, 0xce, 0x3e,
		0x9a, 0x6f, 0x97, 0xdd, 0x4b, 0xb6, 0xcb, 0x6e, 0x86, 0xc2, 0xb1, 0x3b, 0x91, 0x7b, 0x66, 0x77,
		0x22, 0x67, 0x78, 0x3b, 0x11, 0xf1, 0x57, 0xbb, 0x97, 0x6c, 0x4c, 0xfc, 0xae, 0x9f, 0xec, 0x4b,
		0xfb, 0x6e, 0x07, 0xec, 0xa1, 0x7f, 0x6d, 0xb7, 0x97, 0x77, 0xe4, 0xfd, 0xf2, 0x86, 0xbc, 0x82,
		0x0d, 0x23, 0x6e, 0x2d, 0x4c, 0x19, 0xb8, 0xc2, 0x72, 0xdc, 0x2b, 0x4f, 0x7a, 0x91, 0x0a, 0x1d,
		0xe5, 0x5d, 0x0b, 0x4b, 0x39, 0x17, 0x11, 0x39, 0xbb, 0x91, 0x06, 0x00, 0x4f, 0x4a, 0x4c, 0xcc,
		0x06, 0x2f, 0x2e, 0x76, 0x88, 0x89, 0x45, 0x35, 0xdb, 0x83, 0x72, 0x76, 0x07, 0x8b, 0x6c, 0x0e,
		0xea, 0x91, 0x20, 0x9b, 0x6c, 0x0d, 0x36, 0xc1, 0x1e, 0x97, 0x6c, 0x0c, 0xdc, 0xe4, 0x7c, 0x93,
		0x85, 0xf3, 0x42, 0xa2, 0x20, 0x3d, 0xb9, 0xad, 0x24, 0x6b, 0x4e, 0xee, 0xba, 0x35, 0xc4, 0x62,
		0x12, 0x3d, 0xa1, 0x34, 0x41, 0x00, 0x79, 0x30, 0xc0, 0x01, 0x14, 0xb0, 0x02, 0x07, 0x5c, 0x40,
		0x02, 0x3b, 0xb0, 0xc0, 0x0e, 0x34, 0x70, 0x03, 0x0f, 0x34, 0x41, 0x04, 0x51, 0x30, 0x41, 0x1e,
		0x54, 0xa4, 0x02, 0x72, 0xa0, 0x1c, 0x9e, 0xb4, 0xf4, 0xf4, 0xd9, 0x87, 0xa7, 0x80, 0x08, 0x6a,
		0x51, 0xd6, 0x07, 0x98, 0xb0, 0x04, 0x28, 0xdc, 0x80, 0x0a, 0x5b, 0xc0, 0xc2, 0x16, 0xb8, 0x70,
		0x05, 0x30, 0xb4, 0x81, 0x0c, 0x71, 0x40, 0x93, 0x3e, 0x74, 0x7e, 0xb5, 0x28, 0x53, 0x4f, 0xaa,
		0xad, 0x4d, 0x46, 0xa5, 0x28, 0x3b, 0x0c, 0x44, 0xed, 0x3b, 0xf2, 0x02, 0x4d, 0x6e, 0x72, 0xd8,
		0xd8, 0x43, 0x4f, 0xf2, 0x6b, 0x13, 0xf3, 0xc9, 0xf1, 0xa7, 0x82, 0x3e, 0x68, 0x7c, 0x20, 0xf7,
		0x87, 0xd0, 0x19, 0x2b, 0x2f, 0x90, 0x07, 0xde, 0x85, 0xa7, 0x22, 0x86, 0x0b, 0xe8, 0x8a, 0x8b,
		0x24, 0x04, 0x32, 0xf7, 0x8c, 0xa4, 0x5f, 0x00, 0x9f, 0xb6, 0x30, 0x8c, 0x9a, 0x37, 0x1d, 0x3a,
		0x37, 0x7c, 0x8f, 0x64, 0x7d, 0x73, 0xb7, 0xbe, 0xbb, 0xbd, 0xb3, 0xb9, 0xdb, 0xc0, 0xd9, 0xc4,
		0xd9, 0xd4, 0x00, 0x20, 0xf3, 0x91, 0x72, 0x84, 0x40, 0xe3, 0x05, 0xc7, 0xa7, 0xe3, 0x45, 0xaa,
		0xa9, 0x54, 0xc8, 0x23, 0xd8, 0x38, 0xf4, 0x64, 0xcb, 0x17, 0x71, 0x34, 0xcc, 0xc4, 0x54, 0xc5,
		0x5e, 0x6d, 0x49, 0xe2, 0xda, 0xbb, 0x7a, 0x7d, 0x7b, 0xa7, 0x5e, 0xaf, 0xee, 0x6c, 0xed, 0x54,
		0x77, 0x1b, 0x8d, 0xda, 0x76, 0x8d, 0x81, 0xc3, 0x30, 0x7b, 0xa1, 0x2b, 0x42, 0xe1, 0xee, 0xdf,
		0x9a, 0x7b, 0x86, 0x9c, 0xfa, 0x3e, 0x27, 0x91, 0x8f, 0xa3, 0x64, 0x26, 0x03, 0x7d, 0xdf, 0x80,
		0x46, 0xb1, 0xd9, 0xcb, 0x8c, 0x46, 0xb1, 0x79, 0x22, 0xaf, 0xbb, 0x46, 0xb1, 0x3b, 0x3b, 0x3b,
		0x68, 0x14, 0x5b, 0x80, 0xdc, 0x68, 0x14, 0x4b, 0x60, 0x01, 0xf7, 0x1a, 0xc5, 0x26, 0xba, 0x8f,
		0xa8, 0x03, 0x51, 0x07, 0xf6, 0x8f, 0xad, 0x64, 0xe8, 0x63, 0xf4, 0x32, 0x39, 0x19, 0x17, 0xba,
		0x3d, 0x55, 0x67, 0x83, 0x2e, 0x46, 0x7c, 0x25, 0x42, 0x17, 0xa3, 0xe7, 0xcb, 0x88, 0x2e, 0x46,
		0x2f, 0x8b, 0x82, 0xbe, 0xdf, 0xd8, 0xa5, 0xdb, 0x3b, 0x68, 0xd9, 0xcd, 0x83, 0xc3, 0x76, 0xd7,
		0x1e, 0x36, 0x3f, 0xa2, 0x73, 0x51, 0xb6, 0xf1, 0x10, 0x3a, 0x17, 0xe5, 0x1c, 0xea, 0x3c, 0x5f,
		0xc1, 0xd1, 0xad, 0xe8, 0x27, 0xb6, 0x9c, 0x7d, 0xb7, 0xa2, 0x18, 0x50, 0x19, 0xab, 0x80, 0xca,
		0x88, 0x01, 0x15, 0x7a, 0x15, 0x11, 0xb7, 0xa0, 0xe8, 0x55, 0x54, 0xac, 0x41, 0x2d, 0xf8, 0xd0,
		0x80, 0xb0, 0xd0, 0x89, 0xb0, 0x40, 0xa7, 0x22, 0x56, 0x11, 0x20, 0x3a, 0x15, 0x15, 0x4e, 0xe0,
		0xac, 0x6b, 0x9f, 0xa2, 0x6e, 0xe0, 0x8a, 0xe6, 0xca, 0x76, 0x0c, 0xe3, 0xdd, 0x40, 0x93, 0x22,
		0xea, 0x86, 0xc2, 0x8c, 0xc4, 0x45, 0x8c, 0x0d, 0xac, 0x58, 0xdb, 0x3d, 0x79, 0x61, 0x39, 0xfe,
		0x45, 0x10, 0x7a, 0xea, 0xf2, 0x8a, 0x6e, 0x97, 0xa2, 0xa7, 0x45, 0x46, 0x9b, 0xa2, 0x1f, 0x11,
		0x0b, 0x6d, 0x8a, 0x5e, 0xa0, 0x7c, 0x68, 0x53, 0x94, 0x4d, 0xe0, 0x87, 0x36, 0x45, 0x99, 0xc7,
		0x76, 0x68, 0x53, 0xc4, 0x14, 0xa8, 0xa3, 0x4d, 0xd1, 0x0b, 0x01, 0x01, 0xda, 0x14, 0x69, 0x07,
		0x06, 0x38, 0x80, 0x02, 0x56, 0xe0, 0x80, 0x0b, 0x48, 0x60, 0x07, 0x16, 0xd8, 0x81, 0x06, 0x6e,
		0xe0, 0x81, 0x26, 0x88, 0x20, 0x0a, 0x26, 0xc8, 0x83, 0x8a, 0x3b, 0x70, 0x31, 0x9d, 0x4c, 0x82,
		0x50, 0x09, 0xf7, 0x2e, 0x80, 0x67, 0xd4, 0xa7, 0xe8, 0x51, 0xe9, 0xd1, 0xa8, 0x68, 0x1d, 0x20,
		0x09, 0x27, 0x68, 0xc2, 0x12, 0xa2, 0x70, 0x83, 0x2a, 0x6c, 0x21, 0x0b, 0x5b, 0xe8, 0xc2, 0x15,
		0xc2, 0xd0, 0x86, 0x32, 0xc4, 0x21, 0x4d, 0xfa, 0xd0, 0xf9, 0x35, 0x2a, 0xf2, 0x5c, 0x21, 0x95,
		0xa7, 0x6e, 0x43, 0x71, 0xce, 0x69, 0x70, 0x36, 0x87, 0x3a, 0xe1, 0xf6, 0x7c, 0x6b, 0xf7, 0x9d,
		0x88, 0x91, 0xa7, 0x58, 0x28, 0xc6, 0xa0, 0x6f, 0x37, 0x3b, 0x1f, 0x7b, 0xfd, 0xf6, 0xf0, 0x3f,
		0x87, 0x5c, 0x9c, 0x45, 0xd2, 0x7f, 0x24, 0x62, 0x53, 0xdd, 0x6a, 0xb0, 0xaa, 0x70, 0x5d, 0xd5,
		0x8e, 0xa3, 0x0f, 0x26, 0xfa, 0xfe, 0x40, 0x1d, 0x16, 0xea, 0x30, 0xec, 0xb7, 0xdf, 0x0f, 0x6d,
		0x5e, 0x5a, 0xc1, 0x42, 0xd2, 0x11, 0x10, 0xa3, 0xd6, 0x88, 0x11, 0x1d, 0x67, 0x72, 0x96, 0x18,
		0x1d, 0x67, 0xca, 0x15, 0x99, 0x4f, 0xc7, 0x19, 0x5c, 0x2f, 0xe8, 0x60, 0x59, 0x51, 0x25, 0x9e,
		0x7f, 0x92, 0xf1, 0x93, 0x79, 0x8e, 0x28, 0x13, 0xe7, 0x2b, 0x11, 0xca, 0xc4, 0x9f, 0x2f, 0x23,
		0xca, 0xc4, 0x5f, 0x16, 0x37, 0x7e, 0xbf, 0x8a, 0x76, 0x99, 0x86, 0x42, 0x91, 0x78, 0x06, 0x72,
		0xa2, 0x48, 0x3c, 0x67, 0xf8, 0xf1, 0xac, 0x22, 0xf1, 0x55, 0xf5, 0x46, 0x89, 0xf8, 0x4f, 0x6c,
		0x38, 0xfb, 0x12, 0xf1, 0x39, 0x9a, 0x32, 0xe6, 0x68, 0xca, 0x48, 0xd1, 0x54, 0x5a, 0xee, 0x6a,
		0x4c, 0x9c, 0xd0, 0xb9, 0x12, 0x4a, 0x84, 0x11, 0x2a, 0xc5, 0xc9, 0x99, 0x51, 0x54, 0x8a, 0x17,
		0x6b, 0x55, 0xcb, 0x39, 0x3b, 0xe0, 0x2e, 0x74, 0xe2, 0x2e, 0x50, 0x30, 0xce, 0x2a, 0x16, 0x44,
		0xc1, 0x78, 0xf1, 0x5c, 0xce, 0xba, 0x56, 0x8c, 0x0f, 0x66, 0x1b, 0xd2, 0x9f, 0xed, 0x47, 0x33,
		0xdd, 0x0e, 0x94, 0x8c, 0x53, 0x37, 0x15, 0x0f, 0xea, 0xaf, 0x23, 0xcf, 0xb5, 0x7c, 0xe7, 0x4c,
		0xf8, 0x56, 0x38, 0x1f, 0x1d, 0xc6, 0xa4, 0x70, 0xfc, 0xbe, 0xe0, 0x28, 0x1f, 0xff, 0x11, 0xb1,
		0x50, 0x3e, 0xfe, 0x02, 0x15, 0x44, 0xf9, 0x78, 0x36, 0xd1, 0x20, 0xca, 0xc7, 0x33, 0x0f, 0xf8,
		0x50, 0x3e, 0xce, 0x14, 0xb6, 0x93, 0x2d, 0x1f, 0x8f, 0xd1, 0x2f, 0xfd, 0xea, 0xf1, 0x44, 0x4a,
		0x14, 0x8f, 0xeb, 0x04, 0x05, 0x38, 0x40, 0x02, 0x56, 0xd0, 0x80, 0x0b, 0x44, 0x60, 0x07, 0x15,
		0xd8, 0x41, 0x06, 0x6e, 0xd0, 0x81, 0x26, 0x84, 0x20, 0x0a, 0x25, 0xc8, 0x43, 0x8a, 0x65, 0x68,
		0xc1, 0xe7, 0x1a, 0x32, 0x16, 0x96, 0x47, 0x69, 0x78, 0x0d, 0xa5, 0xe1, 0x6b, 0x03, 0x3c, 0x58,
		0x02, 0x10, 0x6e, 0x40, 0x84, 0x2d, 0x20, 0x61, 0x0b, 0x4c, 0xb8, 0x02, 0x14, 0xda, 0x40, 0x85,
		0x38, 0x60, 0x61, 0x03, 0x5c, 0x52, 0x41, 0xd3, 0xbb, 0x07, 0x7e, 0x35, 0xcb, 0x77, 0xa2, 0x33,
		0xb1, 0x04, 0x3c, 0xc0, 0x0d, 0x3b, 0x90, 0xc3, 0x11, 0xec, 0xb0, 0x06, 0x3d, 0x5c, 0xc1, 0x0f,
		0x7b, 0x10, 0xc4, 0x1e, 0x0c, 0x71, 0x07, 0x45, 0x3c, 0xc0, 0x11, 0x13, 0x90, 0xc4, 0x0e, 0x2c,
		0xdd, 0x81, 0x26, 0xd2, 0xfd, 0x88, 0xbf, 0x0f, 0x9c, 0x08, 0xf7, 0x29, 0xd6, 0x04, 0x3c, 0xb1,
		0x05, 0x51, 0x9c, 0xc1, 0x94, 0x16, 0xa0, 0x8a, 0x3b, 0xb8, 0xd2, 0x06, 0x64, 0x69, 0x03, 0xb6,
		0x74, 0x01, 0x5d, 0xbc, 0xc0, 0x17, 0x33, 0x10, 0xc6, 0x16, 0x8c, 0xa5, 0x82, 0x0b, 0xa9, 0xc2,
		0xdb, 0x24, 0x2b, 0x9e, 0xaf, 0xcd, 0x5c, 0x38, 0xae, 0xa5, 0xb5, 0x30, 0xb5, 0x35, 0x3c, 0x7a,
		0x3c, 0x6b, 0x07, 0xdb, 0x74, 0x80, 0x6f, 0x5a, 0xc1, 0x38, 0x5d, 0xe0, 0x9c, 0x76, 0xb0, 0x4e,
		0x3b, 0x78, 0xa7, 0x1b, 0xcc, 0xe3, 0x09, 0xf7, 0x98, 0xc2, 0xbe, 0x54, 0x79, 0x86, 0x9c, 0xf1,
		0xd3, 0x8a, 0xd7, 0x88, 0xc2, 0xa4, 0xb0, 0x8a, 0x31, 0x88, 0x5a, 0x06, 0x52, 0xb5, 0x3a, 0xe3,
		0x35, 0xb4, 0xe4, 0xf4, 0x8a, 0xbf, 0xe7, 0x1b, 0x06, 0x03, 0x15, 0x7a, 0xf2, 0x82, 0xfd, 0x4a,
		0x92, 0xd5, 0x54, 0xe3, 0x33, 0xd2, 0x69, 0xee, 0xb7, 0x3a, 0xcc, 0x1d, 0x78, 0xb2, 0x9a, 0x5a,
		0xd2, 0x97, 0xb8, 0x7d, 0x60, 0xb2, 0x5e, 0xca, 0xd7, 0x5f, 0xb8, 0x9f, 0x90, 0x76, 0x02, 0x3b,
		0x34, 0x38, 0x1e, 0xb3, 0x93, 0xc1, 0x36, 0xfe, 0x5b, 0x0d, 0x3d, 0xda, 0x07, 0xb1, 0x07, 0xe1,
		0x7d, 0x34, 0x80, 0x5f, 0x21, 0xb5, 0x6e, 0xc6, 0xd3, 0x3c, 0xf7, 0xc2, 0x48, 0x59, 0xd7, 0x8e,
		0x3f, 0xd5, 0x80, 0xb4, 0x5c, 0x5e, 0x0c, 0x58, 0xcb, 0x32, 0xc4, 0x07, 0x6b, 0x49, 0xe8, 0x38,
		0x80, 0xb5, 0xa4, 0x74, 0xb0, 0xc1, 0x5a, 0x12, 0x5f, 0x10, 0x58, 0x4b, 0x60, 0xa8, 0x9f, 0x0f,
		0x3c, 0xb5, 0x61, 0x2d, 0xa7, 0x9e, 0x54, 0x5b, 0x9b, 0x1a, 0x10, 0x96, 0x3b, 0x8c, 0x97, 0xd0,
		0x9f, 0xf7, 0x0f, 0x3b, 0x61, 0x6d, 0x52, 0x35, 0x60, 0x61, 0x0e, 0x3d, 0xa9, 0x05, 0x9d, 0x64,
		0xa4, 0xf3, 0x0a, 0xf5, 0xa0, 0x94, 0x92, 0xf5, 0x7c, 0x08, 0x9d, 0xb1, 0xf2, 0x02, 0x79, 0xe0,
		0x5d, 0x78, 0x5c, 0x26, 0x44, 0xfd, 0x98, 0x2d, 0x16, 0x17, 0x8e, 0xf2, 0xae, 0x05, 0x8b, 0x41,
		0x46, 0x1a, 0xbb, 0xf5, 0x55, 0x53, 0xe0, 0xdc, 0xe8, 0x67, 0x0a, 0xea, 0x9b, 0xbb, 0xf5, 0xdd,
		0xed, 0x9d, 0xcd, 0xdd, 0x06, 0x6c, 0x02, 0x6c, 0x02, 0x02, 0x94, 0x35, 0x90, 0x7e, 0x84, 0xeb,
		0x00, 0x48, 0xcc, 0xdd, 0x43, 0x73, 0x19, 0xbb, 0xf7, 0xa4, 0xfc, 0x1a, 0xb5, 0x70, 0xbf, 0xd7,
		0x3d, 0x7a, 0xe9, 0x3f, 0x2e, 0xfe, 0x81, 0xf2, 0x9c, 0x3e, 0xfe, 0xc7, 0x17, 0xb5, 0xc0, 0x30,
		0x2c, 0x6b, 0x66, 0x50, 0x38, 0xf5, 0xa8, 0x28, 0x7e, 0x88, 0xc4, 0xc0, 0x73, 0x3b, 0xf1, 0x2e,
		0x25, 0x2c, 0xe2, 0xec, 0xdf, 0xe7, 0xdf, 0xe1, 0x61, 0x82, 0xe9, 0x1b, 0x34, 0x06, 0xc6, 0x8c,
		0x59, 0x8f, 0x00, 0x96, 0xbd, 0x01, 0xd0, 0x50, 0x29, 0x67, 0x81, 0xd1, 0x50, 0xa9, 0x60, 0xe1,
		0xd1, 0x50, 0xa9, 0xa4, 0x05, 0xa0, 0xa1, 0x12, 0x30, 0x87, 0x3e, 0x41, 0x14, 0xbb, 0x86, 0x4a,
		0x49, 0xa0, 0x61, 0x45, 0xde, 0xff, 0x18, 0x77, 0x55, 0x5a, 0x5a, 0x03, 0xcf, 0xd6, 0x4a, 0x55,
		0xb4, 0x56, 0x02, 0xac, 0xd2, 0x19, 0x5e, 0x71, 0x87, 0x59, 0xda, 0xc0, 0x2d, 0x6d, 0x60, 0x97,
		0x2e, 0xf0, 0x8b, 0x17, 0x0c, 0x63, 0x06, 0xc7, 0x52, 0x25, 0x61, 0x9b, 0xa5, 0xca, 0x3f, 0x3b,
		0x95, 0x71, 0x56, 0x2a, 0xf3, 0x6c, 0x54, 0xc6, 0x39, 0xd9, 0x3a, 0x64, 0x9f, 0xea, 0x92, 0x75,
		0xaa, 0x5d, 0x66, 0x99, 0x3e, 0x19, 0x65, 0x8c, 0xb3, 0x4b, 0xb5, 0xc8, 0x2a, 0x4d, 0x8f, 0x78,
		0x6d, 0x7b, 0x67, 0x67, 0x67, 0xb3, 0xb6, 0x8d, 0x93, 0x8e, 0x93, 0x8e, 0xf0, 0x80, 0xb1, 0xd4,
		0x23, 0xa4, 0x6a, 0xad, 0xbb, 0xa7, 0x32, 0x59, 0x36, 0xb2, 0xbd, 0x1b, 0x35, 0xc9, 0xaf, 0xeb,
		0x1a, 0x68, 0xf0, 0x82, 0x05, 0x07, 0x0d, 0x5e, 0xf2, 0x22, 0x40, 0x83, 0x13, 0x59, 0x08, 0x68,
		0x70, 0x20, 0x9a, 0xb5, 0x89, 0xbf, 0x75, 0xa0, 0xc1, 0xa5, 0x17, 0x48, 0xc6, 0x2c, 0x78, 0x6d,
		0x97, 0xa1, 0xec, 0x73, 0xb5, 0x01, 0x0b, 0x5e, 0x92, 0xd2, 0x7b, 0xae, 0x90, 0xca, 0x53, 0xb7,
		0xa1, 0x38, 0xd7, 0xa1, 0x9f, 0x32, 0xe3, 0x8a, 0x6b, 0xb3, 0x3d, 0x7f, 0x14, 0xfb, 0x4e, 0xa4,
		0x41, 0x6f, 0xae, 0x85, 0x82, 0xf5, 0x06, 0x47, 0x1f, 0xec, 0x7e, 0xdb, 0x1e, 0xf4, 0xed, 0x41,
		0xfb, 0xc0, 0x4e, 0x3a, 0xb0, 0xda, 0xc3, 0xce, 0x27, 0x7b, 0xf8, 0xe7, 0x51, 0x6b, 0xc0, 0xbd,
		0x61, 0x57, 0x42, 0xd2, 0x46, 0xec, 0x9b, 0xca, 0x18, 0x5a, 0x34, 0x96, 0x59, 0xd1, 0xbb, 0xfb,
		0xfa, 0x66, 0xa2, 0xb6, 0xbf, 0xd4, 0xd7, 0x08, 0xfc, 0x38, 0xe2, 0x87, 0xb5, 0x80, 0x54, 0x42,
		0x4e, 0xaf, 0x44, 0x38, 0xab, 0x76, 0xc5, 0x88, 0x8a, 0x52, 0xd7, 0x80, 0x11, 0x15, 0xf4, 0x56,
		0x93, 0x8c, 0xa8, 0x38, 0xee, 0xfe, 0xd6, 0xed, 0xfd, 0xde, 0xc5, 0x60, 0x87, 0x72, 0xf5, 0x4a,
		0x9b, 0xc1, 0x0e, 0x0b, 0x7d, 0xda, 0x33, 0xaa, 0xe8, 0x80, 0x04, 0xc9, 0x35, 0x96, 0x1a, 0x59,
		0x04, 0xeb, 0x2c, 0x29, 0x1a, 0xbe, 0xe4, 0x2b, 0xf7, 0x5a, 0x34, 0x7c, 0xe1, 0xd3, 0x37, 0x0a,
		0x4d, 0x4b, 0xb2, 0x50, 0xea, 0xa9, 0xfc, 0x2c, 0x83, 0x2f, 0xd2, 0x52, 0xfe, 0x35, 0xbf, 0xd6,
		0x25, 0xcb, 0xc2, 0xa3, 0x81, 0x49, 0x1e, 0xe2, 0xa2, 0x81, 0x49, 0x81, 0xea, 0x8c, 0x06, 0x26,
		0x45, 0x1e, 0x44, 0x34, 0x30, 0x29, 0x1b, 0x07, 0xa2, 0x81, 0x09, 0x30, 0xc8, 0x42, 0x19, 0xd8,
		0x35, 0x30, 0xe1, 0xd5, 0xed, 0xed, 0x81, 0xaf, 0xe1, 0xd4, 0xf5, 0x8d, 0x29, 0x78, 0x62, 0x0b,
		0xa2, 0x38, 0x83, 0x29, 0x2d, 0x40, 0x15, 0x77, 0x70, 0xa5, 0x0d, 0xc8, 0xd2, 0x06, 0x6c, 0xe9,
		0x02, 0xba, 0x78, 0x81, 0x2f, 0x66, 0x20, 0x8c, 0x2d, 0x18, 0x4b, 0x05, 0xf7, 0x85, 0xbc, 0x48,
		0xe8, 0x59, 0xe6, 0x83, 0x95, 0xe7, 0xeb, 0xc0, 0x4c, 0x65, 0xc0, 0xb5, 0xf5, 0x82, 0x6d, 0x5a,
		0xc1, 0x37, 0x5d, 0x60, 0x9c, 0x76, 0x70, 0x4e, 0x3b, 0x58, 0xa7, 0x1b, 0xbc, 0xe3, 0x09, 0xf3,
		0x98, 0xc2, 0xbd, 0x54, 0x79, 0xf4, 0x9a, 0xa9, 0x5c, 0xdb, 0xd6, 0x20, 0xc3, 0x76, 0x1b, 0x33,
		0x95, 0x4b, 0x7e, 0x61, 0xa6, 0x32, 0xad, 0xc5, 0x60, 0xa6, 0x32, 0x17, 0x5b, 0x8c, 0x99, 0xca,
		0x04, 0x4d, 0x81, 0x8e, 0x33, 0x95, 0xb7, 0x1b, 0x8d, 0x2d, 0x8c, 0x53, 0x86, 0x39, 0x40, 0x6c,
		0xb2, 0x0e, 0xd2, 0x63, 0x9c, 0x32, 0xdc, 0xdd, 0x53, 0x46, 0x46, 0x71, 0x8e, 0x60, 0x39, 0xb7,
		0xd2, 0xbb, 0x1f, 0xb7, 0x82, 0xfb, 0x2f, 0x69, 0x01, 0xe0, 0xfe, 0x89, 0x2d, 0x06, 0xdc, 0x3f,
		0xd1, 0x05, 0x81, 0xfb, 0x07, 0x62, 0x02, 0x6a, 0x5a, 0x28, 0x0f, 0xb8, 0x7f, 0x72, 0x18, 0x0a,
		0xdc, 0x7f, 0xd9, 0x2f, 0x70, 0xff, 0xb4, 0x16, 0x03, 0xee, 0x9f, 0x8b, 0x2d, 0x06, 0xf7, 0x4f,
		0xd0, 0x14, 0x80, 0xfb, 0x87, 0x39, 0x80, 0x39, 0x58, 0xdf, 0xd8, 0x84, 0xbf, 0xf4, 0xe0, 0xfe,
		0xe1, 0xee, 0x9e, 0x32, 0x32, 0xd7, 0x73, 0x8f, 0xc0, 0x9c, 0xfc, 0x9f, 0x2d, 0x03, 0xec, 0x7f,
		0x19, 0xe2, 0x83, 0xfd, 0x27, 0x74, 0x10, 0xc0, 0xfe, 0x53, 0x3a, 0xd8, 0x60, 0xff, 0x89, 0x2f,
		0x08, 0xec, 0x3f, 0x70, 0xd3, 0x4f, 0x2b, 0x8f, 0x3e, 0xec, 0xff, 0x99, 0x27, 0x9d, 0xf0, 0x56,
		0x03, 0xf6, 0x7f, 0x17, 0xa1, 0x0e, 0x24, 0xe6, 0x6e, 0x60, 0xb8, 0xf6, 0xfa, 0x4c, 0xe5, 0x5f,
		0x87, 0x9e, 0x9f, 0x4b, 0x5d, 0x14, 0x39, 0xf5, 0xff, 0xe4, 0x77, 0x80, 0xd1, 0x31, 0x0c, 0xa6,
		0x65, 0xed, 0x4c, 0x0a, 0xa7, 0x5e, 0x96, 0x91, 0x0a, 0xa7, 0x63, 0x25, 0xe7, 0x50, 0xb2, 0x3b,
		0xdb, 0xeb, 0xf6, 0x7c, 0xab, 0xed, 0xa3, 0xf9, 0x06, 0xdb, 0xbd, 0x64, 0x83, 0xed, 0x66, 0x28,
		0x1c, 0xbb, 0x13, 0xb9, 0x67, 0x76, 0x27, 0x72, 0x62, 0x04, 0x1d, 0x7f, 0xb5, 0x7b, 0xc9, 0x56,
		0xc6, 0xef, 0xfa, 0xc9, 0x4e, 0xb6, 0xef, 0x36, 0xd2, 0x1e, 0xfa, 0xd7, 0xf6, 0x60, 0xb6, 0x87,
		0xfd, 0xd9, 0x16, 0x0e, 0x3c, 0xb7, 0x13, 0x6f, 0x60, 0x92, 0x2f, 0x91, 0xfc, 0xfb, 0xf1, 0x6c,
		0xeb, 0x86, 0xfe, 0x35, 0xda, 0x30, 0xaf, 0x83, 0x84, 0xc4, 0xcd, 0xad, 0xd9, 0xf1, 0x22, 0xd5,
		0x54, 0x8a, 0x47, 0x43, 0x20, 0xf3, 0xd0, 0x93, 0x2d, 0x5f, 0xc4, 0x07, 0x8c, 0xc9, 0xfd, 0xa9,
		0x79, 0xe8, 0xdc, 0x2c, 0x49, 0x5c, 0x7b, 0x57, 0xaf, 0x6f, 0xef, 0xd4, 0xeb, 0xd5, 0x9d, 0xad,
		0x9d, 0xea, 0x6e, 0xa3, 0x51, 0xdb, 0xe6, 0x30, 0xb6, 0xd2, 0xec, 0x85, 0xae, 0x08, 0x85, 0xbb,
		0x7f, 0x6b, 0xee, 0x19, 0x72, 0xea, 0xfb, 0x9c, 0x44, 0x3e, 0x8e, 0x44, 0xc8, 0xe2, 0x62, 0x9a,
		0xba, 0xa5, 0x60, 0x06, 0xc8, 0xd6, 0x01, 0x88, 0x31, 0x00, 0x5f, 0x14, 0x40, 0x17, 0x6d, 0xa4,
		0x45, 0x17, 0xbf, 0xd0, 0x94, 0x8c, 0xa8, 0x9d, 0xe4, 0x62, 0x1f, 0x75, 0xb7, 0x8b, 0x34, 0x0f,
		0x3b, 0xbd, 0xa3, 0x44, 0x4b, 0x22, 0x62, 0x87, 0xda, 0x14, 0x37, 0x2a, 0x74, 0xac, 0x69, 0xac,
		0xe5, 0x67, 0x3e, 0xcd, 0xbb, 0x33, 0xf3, 0xcb, 0xa5, 0x90, 0x64, 0x6b, 0x30, 0x08, 0x1b, 0xc0,
		0xc5, 0x5d, 0xe2, 0xc6, 0xc6, 0x8c, 0x0f, 0xaf, 0xc4, 0xb6, 0xc8, 0xf8, 0xd5, 0x78, 0x3d, 0xbf,
		0x57, 0x9f, 0x59, 0xa9, 0xbd, 0xfb, 0x83, 0xeb, 0xfb, 0xcd, 0xee, 0xc7, 0xd6, 0x6b, 0xc2, 0x90,
		0x8b, 0x4b, 0x36, 0xca, 0x72, 0xb6, 0x49, 0xa2, 0xc3, 0xc4, 0x03, 0x1f, 0x6e, 0xb9, 0x24, 0x2b,
		0xb9, 0x22, 0x3f, 0xa7, 0xe4, 0xaf, 0x10, 0x24, 0x3f, 0x7f, 0xdb, 0x0f, 0x44, 0x34, 0x0e, 0xbd,
		0x09, 0x8b, 0x08, 0x39, 0x35, 0x82, 0x6d, 0x39, 0xf6, 0xa7, 0xae, 0x30, 0xd4, 0xa5, 0x30, 0xe6,
		0xf0, 0xca, 0x98, 0xc3, 0x2b, 0x63, 0xd0, 0x3e, 0xa8, 0x24, 0x91, 0x94, 0x91, 0xc0, 0x2b, 0x63,
		0xd8, 0xf9, 0x64, 0x44, 0x13, 0x31, 0xf6, 0xce, 0xbd, 0xb1, 0x91, 0x68, 0x95, 0x11, 0x9f, 0xdf,
		0x53, 0x19, 0xff, 0x70, 0xfc, 0x8f, 0xc1, 0x79, 0xf2, 0x7b, 0xfa, 0x6d, 0xa3, 0x33, 0x68, 0x1a,
		0x5e, 0xb4, 0xf8, 0xdf, 0xc2, 0x35, 0x54, 0x60, 0x9c, 0x89, 0xd9, 0x7f, 0xf0, 0x22, 0x83, 0x41,
		0x0b, 0x0c, 0x4e, 0xb9, 0x7d, 0xcb, 0x16, 0xd5, 0x5d, 0xd2, 0x42, 0x06, 0xf4, 0x00, 0xc7, 0x44,
		0xbd, 0x15, 0x03, 0x5b, 0xe2, 0x01, 0x02, 0xad, 0xa1, 0x13, 0xad, 0x41, 0x4e, 0xaa, 0x11, 0x22,
		0x44, 0xbe, 0x74, 0x8f, 0xc6, 0x34, 0x0f, 0x41, 0xb7, 0x56, 0x36, 0xcb, 0x4d, 0xcb, 0x15, 0xd0,
		0x31, 0x65, 0x84, 0x8c, 0x06, 0xd1, 0x89, 0x82, 0xa4, 0x27, 0x06, 0x12, 0x9d, 0x08, 0x48, 0xb6,
		0x90, 0x8c, 0x72, 0x81, 0x18, 0x8b, 0xc2, 0x2f, 0xea, 0x41, 0x1f, 0x9b, 0x42, 0x2d, 0x36, 0x71,
		0x1d, 0x97, 0xc2, 0x2a, 0x5c, 0xd7, 0x7c, 0x93, 0x7a, 0x23, 0x3a, 0xd1, 0x8e, 0x76, 0xc7, 0x5a,
		0x0e, 0x1d, 0x69, 0x89, 0xd7, 0x9c, 0x93, 0xaf, 0x29, 0xe7, 0x50, 0x33, 0xce, 0xaa, 0x26, 0x9c,
		0xe3, 0x2d, 0x1b, 0x8b, 0x9a, 0x6e, 0xde, 0xf7, 0x6c, 0x0c, 0x6a, 0xb2, 0x91, 0xce, 0xf5, 0x9c,
		0x87, 0x4b, 0xbe, 0x66, 0xfa, 0xae, 0x23, 0xaa, 0xa4, 0x7d, 0xd7, 0x93, 0x46, 0xf1, 0xbb, 0x84,
		0x65, 0x9c, 0x3f, 0x6e, 0xda, 0x0d, 0x4d, 0x19, 0xdc, 0x44, 0x2e, 0x94, 0xd2, 0x73, 0x85, 0x54,
		0x9e, 0xba, 0x0d, 0xc5, 0x39, 0x87, 0x6b, 0xc8, 0x85, 0x8a, 0x72, 0xa8, 0xc6, 0x68, 0xcf, 0xb7,
		0x76, 0xdf, 0x89, 0xf8, 0x74, 0x75, 0x48, 0x15, 0xa3, 0xdf, 0xb6, 0x3b, 0x83, 0xa6, 0x3d, 0xec,
		0x7c, 0xb2, 0x87, 0x7f, 0x1e, 0xb5, 0x06, 0x4c, 0x0a, 0x08, 0x67, 0x1d, 0x29, 0x23, 0x56, 0x3d,
		0x8f, 0x79, 0x15, 0xe4, 0x2f, 0x6b, 0xc8, 0x87, 0xe3, 0xee, 0xfb, 0x61, 0xbb, 0xd7, 0x6d, 0x76,
		0xec, 0xf7, 0xcd, 0xa3, 0xe6, 0x7e, 0xbb, 0xd3, 0x1e, 0xb6, 0x5b, 0x03, 0x3e, 0x95, 0xeb, 0x8c,
		0x1a, 0x39, 0xf0, 0xd5, 0x92, 0x76, 0xf7, 0x43, 0xaf, 0x7f, 0xd8, 0x84, 0xa2, 0x40, 0x51, 0xbe,
		0xad, 0x28, 0xdd, 0xde, 0x41, 0xcb, 0x6e, 0x1e, 0x1c, 0xb6, 0xbb, 0xf6, 0xb0, 0xf9, 0x11, 0xca,
		0x01, 0xe5, 0x58, 0x52, 0x8e, 0x41, 0xdf, 0x6e, 0x76, 0x3e, 0xf6, 0xfa, 0xed, 0xe1, 0x7f, 0x0e,
		0xa1, 0x1a, 0x50, 0x8d, 0x55, 0xd5, 0xb8, 0x97, 0x1a, 0x6d, 0xa2, 0x1b, 0x4d, 0xa6, 0xaf, 0x11,
		0xda, 0x4b, 0xe8, 0x6c, 0x06, 0x18, 0x11, 0x16, 0x42, 0x4e, 0xaf, 0x44, 0xe8, 0x70, 0xc9, 0x9b,
		0x5e, 0x10, 0x16, 0x75, 0x06, 0xb2, 0xb6, 0xe4, 0xf4, 0x8a, 0x0f, 0x51, 0x31, 0x0c, 0x06, 0x2a,
		0xf4, 0xe4, 0x05, 0xaf, 0xb6, 0x53, 0xd5, 0x58, 0x87, 0x8f, 0xbb, 0xbf, 0x75, 0x7b, 0xbf, 0x77,
		0x4d, 0x34, 0x22, 0xcb, 0x54, 0x1f, 0xda, 0xc9, 0x15, 0x0f, 0x23, 0x65, 0x58, 0xe8, 0xc1, 0x9e,
		0x51, 0x45, 0x93, 0xa9, 0x75, 0x40, 0x01, 0xaf, 0x80, 0xef, 0x78, 0xef, 0x17, 0xd2, 0xbb, 0xbe,
		0x65, 0xcf, 0x50, 0x6b, 0x91, 0x5f, 0xad, 0x05, 0xbd, 0x8e, 0xb0, 0x28, 0x1f, 0x78, 0x4c, 0xc7,
		0x96, 0x7b, 0x6e, 0x92, 0x2d, 0x22, 0xa0, 0xdb, 0x18, 0x14, 0xa5, 0x04, 0xcf, 0x14, 0x0c, 0xa5,
		0x04, 0x2f, 0x14, 0x12, 0xa5, 0x04, 0x19, 0x09, 0x8a, 0x52, 0x02, 0x60, 0xcd, 0xe2, 0x1e, 0x22,
		0xd9, 0x52, 0x02, 0x9a, 0xf5, 0x83, 0x0f, 0x6c, 0x32, 0xc5, 0x3a, 0x42, 0xe2, 0x20, 0x80, 0x3c,
		0x18, 0xe0, 0x00, 0x0a, 0x58, 0x81, 0x03, 0x2e, 0x20, 0x81, 0x1d, 0x58, 0x60, 0x07, 0x1a, 0xb8,
		0x81, 0x07, 0x9a, 0x20, 0x82, 0x28, 0x98, 0x20, 0x0f, 0x2a, 0x52, 0x01, 0x7d, 0x21, 0x2f, 0x12,
		0xf6, 0x8a, 0x49, 0xdb, 0xb2, 0xb9, 0xbc, 0xc4, 0xcf, 0x34, 0x8f, 0x79, 0xb9, 0x6c, 0xe6, 0xe2,
		0x72, 0x9a, 0x7f, 0xcb, 0x72, 0xce, 0x2d, 0xb7, 0x79, 0xb6, 0x6c, 0xe7, 0xd6, 0xb2, 0x9d, 0x4f,
		0xcb, 0x75, 0x0e, 0x2d, 0xb2, 0xb8, 0x5e, 0xf2, 0xd0, 0xd9, 0xcc, 0x8f, 0xbd, 0xbb, 0x88, 0xf0,
		0xa4, 0xaa, 0x6d, 0x33, 0x4a, 0xe4, 0xda, 0x66, 0x20, 0xea, 0xac, 0xd5, 0x18, 0x97, 0x0a, 0x28,
		0x46, 0xf9, 0x3a, 0x87, 0x1e, 0xbf, 0xf9, 0xa9, 0xb3, 0x82, 0x38, 0x1e, 0x53, 0xb8, 0x56, 0xe4,
		0xfe, 0x10, 0x3a, 0x63, 0xe5, 0x05, 0xf2, 0xc0, 0xbb, 0xf0, 0xb8, 0x8c, 0x11, 0x5b, 0xb5, 0x71,
		0xe2, 0xc2, 0x51, 0xde, 0xb5, 0x60, 0x31, 0xd5, 0x8a, 0x91, 0x9b, 0x5b, 0x3d, 0x92, 0xce, 0x0d,
		0xdf, 0x23, 0xb9, 0xdd, 0x68, 0x6c, 0x35, 0x70, 0x2c, 0x71, 0x2c, 0x35, 0xc0, 0xc6, 0x7c, 0xa4,
		0x1c, 0x21, 0x47, 0x54, 0x37, 0xb7, 0x40, 0xbb, 0x7f, 0xdb, 0x83, 0xa8, 0x87, 0xc3, 0x58, 0x05,
		0x70, 0xa2, 0xd9, 0x0a, 0x0a, 0x4e, 0x34, 0x67, 0xa1, 0xc1, 0x89, 0x16, 0x24, 0x38, 0x38, 0x51,
		0x20, 0x02, 0x36, 0xc1, 0x22, 0x38, 0xd1, 0xfc, 0x31, 0x02, 0x38, 0xd1, 0xac, 0x5f, 0xe0, 0x44,
		0xf3, 0x15, 0x1a, 0x9c, 0x68, 0x59, 0x36, 0x0e, 0x9c, 0x68, 0x01, 0x47, 0x12, 0x9c, 0x28, 0x8e,
		0xe5, 0x9a, 0x1c, 0x4b, 0x70, 0xa2, 0x99, 0xbc, 0xc0, 0x89, 0x6a, 0xe7, 0x16, 0xcc, 0xeb, 0xb9,
		0x45, 0x65, 0x42, 0x8a, 0xce, 0xc4, 0x05, 0x2b, 0x9a, 0x85, 0x98, 0x60, 0x45, 0x73, 0x54, 0x54,
		0xb0, 0xa2, 0x79, 0x1e, 0x30, 0xb0, 0xa2, 0x05, 0x0b, 0x0e, 0x56, 0x74, 0xfd, 0xc2, 0x45, 0x86,
		0xac, 0xe8, 0x99, 0x27, 0x9d, 0xf0, 0x96, 0x11, 0x2b, 0xba, 0x0b, 0x48, 0xad, 0x91, 0x64, 0x54,
		0x2b, 0xd6, 0x88, 0xb7, 0x5c, 0x4a, 0xe5, 0x64, 0xdc, 0x7a, 0x69, 0xa9, 0x59, 0x0e, 0xc5, 0x36,
		0x4c, 0x74, 0xcf, 0x0d, 0x1a, 0x58, 0x30, 0x3e, 0xb9, 0x9a, 0x9c, 0xd8, 0x75, 0x1d, 0x42, 0x7f,
		0x3c, 0xdb, 0x82, 0xa1, 0x7f, 0x8d, 0xa6, 0x71, 0x94, 0x25, 0x21, 0x62, 0x95, 0xcc, 0x8e, 0x17,
		0xa9, 0xa6, 0x52, 0xb4, 0xca, 0xdf, 0xcd, 0x43, 0x4f, 0xb6, 0x7c, 0x11, 0x47, 0xa7, 0xc4, 0x6e,
		0x55, 0xcc, 0x43, 0xe7, 0x66, 0x49, 0xb2, 0xda, 0xbb, 0x7a, 0x7d, 0x7b, 0xa7, 0x5e, 0xaf, 0xee,
		0x6c, 0xed, 0x54, 0x77, 0x1b, 0x8d, 0xda, 0x36, 0xa5, 0x09, 0x65, 0x66, 0x2f, 0x74, 0x45, 0x28,
		0xdc, 0xfd, 0x5b, 0x73, 0xcf, 0x90, 0x53, 0xdf, 0xa7, 0x28, 0xda, 0x71, 0x24, 0x42, 0x52, 0xd7,
		0x4f, 0x54, 0x4e, 0x26, 0x51, 0x9c, 0xc0, 0x18, 0x1f, 0x10, 0xc2, 0x04, 0x45, 0x60, 0x01, 0x1a,
		0x00, 0xa0, 0x7c, 0x77, 0x5b, 0xae, 0x04, 0x25, 0x9b, 0x13, 0x6a, 0x66, 0x84, 0xa9, 0xf9, 0x28,
		0xf7, 0x2c, 0x95, 0xa7, 0xc1, 0xe5, 0x7c, 0x72, 0x49, 0x67, 0xc6, 0x14, 0x37, 0x2a, 0x74, 0xac,
		0x69, 0xac, 0x5c, 0x67, 0x7e, 0xb9, 0x3c, 0xb9, 0xf9, 0xe5, 0x52, 0xc8, 0xd2, 0xf3, 0x56, 0x09,
		0xd8, 0x8b, 0xc5, 0x3d, 0xc0, 0xc6, 0xc6, 0x8c, 0x84, 0xab, 0xc4, 0x47, 0xd7, 0xf8, 0xd5, 0x78,
		0x3d, 0xbf, 0xb3, 0x9a, 0x1d, 0xea, 0xbd, 0x7e, 0xef, 0x78, 0xd8, 0xea, 0x2f, 0x8f, 0x9c, 0xb4,
		0x3b, 0x83, 0xe6, 0x6b, 0x02, 0x2e, 0x9f, 0xda, 0x55, 0xec, 0xf2, 0x55, 0x6b, 0xa2, 0x64, 0x44,
		0xf0, 0x2e, 0xd5, 0x8b, 0xd4, 0x95, 0x8b, 0xd2, 0x9f, 0xd4, 0xc2, 0x57, 0x08, 0x6a, 0x0c, 0xf3,
		0x40, 0x44, 0xe3, 0xd0, 0x9b, 0x90, 0x8a, 0x68, 0x52, 0xf3, 0xd2, 0x96, 0x63, 0x7f, 0xea, 0x0a,
		0x43, 0x5d, 0x0a, 0xe3, 0x21, 0x06, 0x30, 0xc6, 0x81, 0x54, 0x8e, 0x27, 0x45, 0x68, 0xc4, 0x47,
		0x26, 0xf9, 0x5f, 0x33, 0xd0, 0x60, 0x74, 0x06, 0xcd, 0x53, 0x99, 0x68, 0x83, 0x17, 0x19, 0xd1,
		0x44, 0x8c, 0xbd, 0x73, 0x4f, 0xb8, 0x86, 0x0a, 0x8c, 0x33, 0x61, 0x38, 0xd2, 0xe8, 0xb7, 0xe3,
		0xff, 0x42, 0xe5, 0x90, 0x11, 0x4c, 0x0b, 0x59, 0xb6, 0x47, 0xee, 0x92, 0x8a, 0x10, 0x0a, 0xd6,
		0x28, 0xe7, 0x78, 0xac, 0x98, 0xa7, 0xbc, 0xb5, 0x18, 0x11, 0x25, 0x85, 0x88, 0xb2, 0xb4, 0x4f,
		0x1f, 0xad, 0x55, 0x34, 0x40, 0x24, 0x72, 0xe6, 0x17, 0x31, 0x97, 0x68, 0xba, 0xf3, 0xe6, 0xd5,
		0xca, 0xb1, 0x80, 0xc5, 0x9f, 0xf8, 0x12, 0xce, 0x5c, 0xc9, 0x03, 0x14, 0x48, 0x0c, 0x48, 0x28,
		0x79, 0x00, 0x42, 0xe9, 0xf9, 0xe3, 0x14, 0xf2, 0xc2, 0x49, 0xe5, 0x7b, 0x53, 0x01, 0xec, 0xe4,
		0xf2, 0xb3, 0xc9, 0x61, 0x72, 0x6a, 0xf9, 0xd4, 0xeb, 0xc5, 0xdc, 0x96, 0xdd, 0xc0, 0xdf, 0x8c,
		0xc6, 0x01, 0x81, 0xcc, 0xea, 0x3b, 0x27, 0x96, 0x88, 0x53, 0xf2, 0x89, 0xa0, 0x51, 0x34, 0x45,
		0xa6, 0x28, 0x8a, 0x52, 0xd1, 0x13, 0xc9, 0xa2, 0x26, 0xca, 0x4c, 0x39, 0xa9, 0xa2, 0x24, 0x1e,
		0x5c, 0x39, 0xa1, 0xa2, 0xa2, 0xf5, 0x4e, 0x01, 0x20, 0x53, 0xf4, 0x93, 0x5a, 0x1d, 0x21, 0xa7,
		0x57, 0x22, 0x74, 0x88, 0xf0, 0xbc, 0x69, 0xd4, 0x55, 0x27, 0x20, 0x4b, 0x4b, 0x4e, 0xaf, 0xe8,
		0x58, 0xc0, 0x61, 0x30, 0x50, 0xa1, 0x27, 0x2f, 0x68, 0xdd, 0x18, 0x54, 0x63, 0x1d, 0xea, 0xb4,
		0xbb, 0xbf, 0x51, 0xba, 0x24, 0xa8, 0xc5, 0x42, 0x35, 0xfb, 0xad, 0x26, 0x25, 0xa1, 0x36, 0x13,
		0xa1, 0x06, 0x26, 0x32, 0x2b, 0x57, 0x94, 0xba, 0x9d, 0x78, 0x28, 0x42, 0x1a, 0x9d, 0xe8, 0x0d,
		0xa9, 0xc1, 0x97, 0xb1, 0xd6, 0xec, 0x19, 0x9b, 0x84, 0x04, 0x4a, 0x0e, 0xfc, 0x9e, 0x51, 0xc5,
		0x25, 0x14, 0x05, 0x4c, 0xf3, 0x6a, 0x0d, 0xad, 0x08, 0x8d, 0x76, 0xd3, 0x94, 0xda, 0x49, 0x23,
		0xc6, 0x47, 0x8c, 0x8f, 0x18, 0x1f, 0x31, 0x3e, 0x62, 0x7c, 0xc4, 0xf8, 0xf7, 0xac, 0x8e, 0xe7,
		0x0a, 0xa9, 0x3c, 0x75, 0x1b, 0x8a, 0x73, 0x4a, 0x31, 0x3e, 0x81, 0xfa, 0x3c, 0xb3, 0x3d, 0xdf,
		0x9a, 0x7d, 0x27, 0x12, 0xf4, 0x52, 0x21, 0x7b, 0x83, 0xa3, 0x0f, 0x76, 0xef, 0xa8, 0xf9, 0x7f,
		0xc7, 0x2d, 0xbb, 0x33, 0x68, 0xda, 0xc3, 0x3f, 0x8f, 0x5a, 0x54, 0x8c, 0x62, 0xd2, 0x2d, 0x34,
		0x22, 0xd5, 0xcf, 0x99, 0x56, 0x09, 0x7f, 0xfa, 0x14, 0x3f, 0xf6, 0x9b, 0xef, 0x93, 0xe7, 0x47,
		0xa7, 0x0e, 0x9c, 0x50, 0x27, 0x06, 0xa2, 0x0f, 0x2d, 0x3e, 0x7a, 0x9f, 0x36, 0xed, 0xd6, 0x1f,
		0xc3, 0x56, 0xf7, 0xa0, 0x75, 0x60, 0x27, 0x21, 0x2f, 0x9e, 0x1f, 0xdb, 0xe7, 0x77, 0xd4, 0x6f,
		0x7d, 0x68, 0xff, 0x81, 0x27, 0xc8, 0xe7, 0x09, 0x3e, 0xac, 0xe0, 0xc0, 0xd3, 0xe3, 0xf3, 0xf4,
		0x86, 0xfd, 0xe6, 0x87, 0x0f, 0xed, 0xf7, 0x76, 0xab, 0xfb, 0xb1, 0xdd, 0x6d, 0xb5, 0xfa, 0xed,
		0xee, 0x47, 0x13, 0x8d, 0x47, 0x56, 0x5e, 0x23, 0x10, 0x97, 0x6b, 0xf5, 0xc9, 0xc8, 0x9e, 0x27,
		0x9d, 0x3d, 0x5f, 0x62, 0x63, 0xb9, 0xf5, 0xc8, 0x2a, 0x57, 0xa1, 0x73, 0x7e, 0xee, 0x8d, 0x2d,
		0x21, 0x2f, 0x3c, 0x29, 0x44, 0xa9, 0x97, 0xd9, 0x77, 0xcc, 0xfd, 0x23, 0x42, 0x21, 0xe3, 0xbc,
		0x14, 0x01, 0x90, 0x71, 0x7e, 0x4f, 0x18, 0x64, 0x9c, 0x3f, 0x21, 0x10, 0x32, 0xce, 0x81, 0x6f,
		0xee, 0x36, 0xbf, 0xf4, 0x8c, 0xf3, 0xa4, 0x2d, 0x0d, 0x9d, 0xbb, 0xe8, 0x58, 0x1a, 0x1a, 0x77,
		0xd1, 0x35, 0xdc, 0x45, 0x93, 0x71, 0x6d, 0x24, 0x5d, 0x1c, 0x35, 0x57, 0x47, 0xd6, 0xe5, 0x91,
		0x75, 0x7d, 0x54, 0x5d, 0x20, 0x11, 0x8a, 0xa3, 0x64, 0xbb, 0x53, 0xb6, 0x6b, 0x5c, 0x76, 0x91,
		0xf4, 0xae, 0x57, 0xe9, 0x34, 0xa2, 0x24, 0xe2, 0x30, 0xc9, 0x39, 0x4e, 0x8a, 0x0e, 0x94, 0xb4,
		0x23, 0xa5, 0xea, 0x50, 0xc9, 0x3b, 0x56, 0xf2, 0x0e, 0x96, 0xba, 0xa3, 0xa5, 0xe1, 0x70, 0x89,
		0x38, 0x5e, 0x72, 0x0e, 0x38, 0x15, 0xc8, 0xf7, 0xe4, 0x67, 0x7a, 0x56, 0x61, 0x61, 0x4a, 0x13,
		0xe9, 0x88, 0x9d, 0x37, 0x5a, 0xae, 0x99, 0xac, 0x8b, 0xa6, 0xec, 0xaa, 0x59, 0xb8, 0x6c, 0xea,
		0xae, 0x9b, 0x8d, 0x0b, 0x67, 0xe3, 0xca, 0xb9, 0xb8, 0x74, 0x5a, 0xae, 0x9d, 0x98, 0x8b, 0x27,
		0xeb, 0xea, 0x53, 0xc1, 0xa2, 0xe9, 0x99, 0x45, 0x82, 0xa2, 0xfe, 0xae, 0x59, 0x4e, 0x25, 0x25,
		0x7a, 0x4e, 0x69, 0x42, 0x01, 0xf2, 0x90, 0x80, 0x03, 0x34, 0x60, 0x05, 0x11, 0xb8, 0x40, 0x05,
		0x76, 0x90, 0x81, 0x1d, 0x74, 0xe0, 0x06, 0x21, 0x68, 0x42, 0x09, 0xa2, 0x90, 0x82, 0x3c, 0xb4,
		0xb8, 0x0f, 0x31, 0xe8, 0x1b, 0xa2, 0x7b, 0x48, 0x83, 0xba, 0x19, 0xa2, 0x0d, 0x38, 0xd8, 0x00,
		0x0f, 0x4e, 0x00, 0x84, 0x25, 0x10, 0xe1, 0x06, 0x48, 0xd8, 0x02, 0x13, 0xb6, 0x00, 0x85, 0x2b,
		0x50, 0xa1, 0x0d, 0x58, 0x88, 0x03, 0x17, 0x36, 0x00, 0x26, 0x15, 0xd4, 0x71, 0xaf, 0x3c, 0xe9,
		0x45, 0x2a, 0x74, 0x94, 0x77, 0x2d, 0xac, 0x8b, 0x30, 0x98, 0x4e, 0x22, 0x3e, 0xe6, 0x6c, 0xe1,
		0x33, 0x1e, 0x5f, 0x06, 0x13, 0x0b, 0xc1, 0x03, 0xf4, 0xb0, 0x03, 0x3f, 0x1c, 0x41, 0x10, 0x6b,
		0x30, 0xc4, 0x15, 0x14, 0xb1, 0x07, 0x47, 0xec, 0x41, 0x12, 0x77, 0xb0, 0xc4, 0x03, 0x34, 0x31,
		0x01, 0x4f, 0xec, 0x40, 0xd4, 0x2a, 0x98, 0x9a, 0x81, 0x0f, 0x7e, 0xc6, 0x6f, 0x05, 0x4a, 0xcd,
		0x17, 0xc1, 0xcc, 0x7a, 0xf0, 0x02, 0x52, 0x6c, 0x01, 0x15, 0x67, 0x60, 0xa5, 0x05, 0xc0, 0xe2,
		0x0e, 0xb4, 0xb4, 0x01, 0x5c, 0xda, 0x00, 0x2f, 0x5d, 0x00, 0x18, 0x2f, 0x20, 0xc6, 0x0c, 0x90,
		0xb1, 0x05, 0x66, 0xa9, 0xe0, 0x67, 0x9e, 0xb2, 0x3c, 0xe9, 0x8a, 0x1b, 0xbe, 0x26, 0x73, 0xe1,
		0xb7, 0xee, 0x96, 0xc2, 0xd4, 0xd2, 0xd0, 0x68, 0xdf, 0xbc, 0x76, 0xa0, 0x4d, 0x07, 0xf0, 0xa6,
		0x15, 0x88, 0xd3, 0x05, 0xcc, 0x69, 0x07, 0xea, 0xb4, 0x03, 0x77, 0xba, 0x81, 0x3c, 0x9e, 0x60,
		0x8f, 0x29, 0xe8, 0x4b, 0x95, 0x87, 0x4c, 0xbb, 0xef, 0x17, 0x7b, 0x0d, 0x5f, 0x38, 0xe7, 0x34,
		0x5a, 0x84, 0xbf, 0x14, 0x44, 0xd5, 0x76, 0x18, 0xaf, 0xe1, 0x68, 0xde, 0x20, 0x6f, 0x63, 0x63,
		0xd6, 0x92, 0xae, 0x72, 0x07, 0x6d, 0x5f, 0xc1, 0x1c, 0xc1, 0x14, 0x3d, 0xae, 0x35, 0xe5, 0x8e,
		0x6c, 0xcf, 0xcc, 0x06, 0x95, 0x39, 0xf2, 0x3d, 0x33, 0xeb, 0x83, 0x10, 0x0e, 0x21, 0x1c, 0x42,
		0x38, 0x84, 0x70, 0x08, 0xe1, 0x10, 0xc2, 0x21, 0x84, 0xa3, 0xaf, 0x3c, 0x5c, 0xf9, 0xfb, 0x74,
		0x01, 0xfc, 0x79, 0xfc, 0x07, 0xfe, 0x8f, 0x3b, 0x9f, 0x7f, 0x1f, 0x14, 0x56, 0x99, 0x2f, 0x83,
		0x3b, 0x38, 0xd4, 0x09, 0x24, 0x6a, 0x09, 0x16, 0x75, 0x03, 0x8d, 0xda, 0x82, 0x47, 0x6d, 0x41,
		0xa4, 0xae, 0x60, 0x92, 0x37, 0xa8, 0x64, 0x0e, 0x2e, 0x53, 0xa5, 0x62, 0x7f, 0x4f, 0xf0, 0xc0,
		0xeb, 0x4c, 0x3d, 0xa9, 0xde, 0xe9, 0xe0, 0x71, 0xe6, 0x10, 0xad, 0xa1, 0xc1, 0x52, 0xfa, 0x8e,
		0xbc, 0x10, 0xa4, 0x86, 0x72, 0xbe, 0xe4, 0xa5, 0x07, 0x02, 0x48, 0x1e, 0xcc, 0xa1, 0x27, 0xb5,
		0x81, 0x34, 0xe9, 0xa2, 0x92, 0x19, 0xb0, 0xfc, 0x63, 0x82, 0x07, 0xeb, 0xfa, 0x10, 0x3a, 0x63,
		0xe5, 0x05, 0xf2, 0xc0, 0xbb, 0xf0, 0x54, 0xa4, 0xe1, 0x02, 0xbb, 0xe2, 0x22, 0xa9, 0x0c, 0x35,
		0xf7, 0x8c, 0x73, 0xc7, 0x8f, 0x84, 0x36, 0xab, 0xfb, 0xfa, 0x8b, 0x46, 0x26, 0xc3, 0xb9, 0xd1,
		0xd7, 0x64, 0x6c, 0xd5, 0x60, 0x33, 0x60, 0x33, 0x10, 0x17, 0x61, 0x15, 0xe9, 0x6b, 0xf4, 0x0a,
		0xfb, 0x0f, 0x9f, 0xf9, 0x3c, 0xa3, 0x14, 0x09, 0xa5, 0xcf, 0x9d, 0x47, 0xbc, 0x18, 0xe6, 0x2c,
		0xc7, 0x81, 0x38, 0x77, 0xa6, 0xbe, 0xd2, 0x22, 0x02, 0x35, 0x13, 0x37, 0xc7, 0x9b, 0xf7, 0x1b,
		0xe1, 0xf6, 0x8c, 0xc2, 0x32, 0x70, 0x7b, 0x46, 0xd8, 0xec, 0xe2, 0xf6, 0x8c, 0xb2, 0x01, 0xc0,
		0xed, 0x19, 0xb3, 0x85, 0xe1, 0xf6, 0x0c, 0x18, 0x3f, 0x73, 0xa5, 0xd2, 0xef, 0xf6, 0xec, 0x2c,
		0x08, 0x7c, 0xe1, 0x48, 0x8d, 0xee, 0xcf, 0x6a, 0x35, 0x04, 0xf0, 0x90, 0x5c, 0x77, 0x93, 0x64,
		0x36, 0xa5, 0x0c, 0x94, 0xa3, 0xbc, 0x80, 0xf7, 0x85, 0x9e, 0x19, 0x8d, 0x2f, 0xc5, 0x95, 0x33,
		0x99, 0x57, 0x9b, 0x55, 0x82, 0x89, 0x90, 0xe3, 0x24, 0x4c, 0xb1, 0xa4, 0x50, 0x5f, 0x82, 0xf0,
		0xb3, 0xe5, 0xc9, 0x48, 0x39, 0x72, 0x2c, 0x2a, 0xf7, 0xbf, 0x11, 0x3d, 0xf8, 0x4e, 0x65, 0x12,
		0x06, 0x2a, 0x18, 0x07, 0x7e, 0x94, 0xbe, 0xab, 0xcc, 0x3c, 0x7f, 0xc5, 0x09, 0x85, 0x13, 0x25,
		0x7f, 0x56, 0xfc, 0xc8, 0x3d, 0xab, 0xf8, 0x91, 0x63, 0xa9, 0xdb, 0x89, 0x88, 0xd2, 0x77, 0xf1,
		0x9b, 0xe4, 0x6f, 0x95, 0x60, 0xe2, 0xfc, 0x77, 0x2a, 0xac, 0xf8, 0xad, 0x0a, 0x9d, 0xf3, 0x73,
		0x6f, 0x6c, 0x09, 0x79, 0xe1, 0x49, 0x21, 0x42, 0x4f, 0x5e, 0x54, 0x94, 0x7f, 0x1d, 0xc5, 0x7f,
		0x54, 0x7c, 0x4f, 0x7e, 0xae, 0x2c, 0xa6, 0xc5, 0x2c, 0xde, 0x54, 0x1e, 0xed, 0x7a, 0x5a, 0x59,
		0x6a, 0xe0, 0x35, 0x2b, 0xa8, 0x43, 0x19, 0x1d, 0x24, 0x66, 0x6f, 0x8e, 0xe2, 0xc0, 0x88, 0x73,
		0x9e, 0xb4, 0xd9, 0xf1, 0x22, 0xd5, 0x54, 0x8a, 0x69, 0xe7, 0x9c, 0x43, 0x4f, 0xb6, 0x7c, 0x11,
		0x87, 0x39, 0x4c, 0xaf, 0xfa, 0xcc, 0x43, 0xe7, 0x66, 0x69, 0x05, 0xb5, 0x77, 0xf5, 0xfa, 0xf6,
		0x4e, 0xbd, 0x5e, 0xdd, 0xd9, 0xda, 0xa9, 0xee, 0x36, 0x1a, 0xb5, 0xed, 0x1a, 0xc3, 0x74, 0x28,
		0xb3, 0x17, 0xba, 0x22, 0x14, 0xee, 0x7e, 0x7c, 0x34, 0xe4, 0xd4, 0xf7, 0x39, 0x2f, 0xe1, 0x38,
		0x12, 0x21, 0xcb, 0xbb, 0x56, 0x6e, 0x96, 0x94, 0x39, 0xa0, 0x5b, 0x47, 0x20, 0x67, 0xb2, 0xac,
		0xd0, 0x0f, 0xa7, 0x63, 0x25, 0xe7, 0xe1, 0x7f, 0x77, 0xb6, 0xef, 0xed, 0xf9, 0xb6, 0xdb, 0x47,
		0xf3, 0xcd, 0xb6, 0x7b, 0xc9, 0x66, 0xdb, 0xcd, 0x50, 0x38, 0x76, 0x27, 0x72, 0xcf, 0xec, 0x4e,
		0xe4, 0x0c, 0x6f, 0x27, 0x22, 0xfe, 0x6a, 0xf7, 0x92, 0x6d, 0x8d, 0xdf, 0x0d, 0x67, 0xbb, 0xda,
		0xba, 0xdb, 0x54, 0x7b, 0xe8, 0x5f, 0xdb, 0x1d, 0x4f, 0x7e, 0xb6, 0x07, 0xd3, 0xb3, 0xf8, 0x7d,
		0x33, 0xde, 0xaf, 0x8f, 0xc9, 0x76, 0xbd, 0x02, 0x6e, 0x5c, 0x5f, 0x49, 0xb9, 0xf4, 0xb7, 0x66,
		0x6a, 0x87, 0xd7, 0xc5, 0xfe, 0xf2, 0x30, 0x22, 0xf4, 0x8f, 0x24, 0x83, 0xe3, 0xc8, 0xac, 0x9b,
		0x0c, 0xcb, 0xee, 0x31, 0x18, 0x73, 0x93, 0xb3, 0xc0, 0x18, 0x73, 0x53, 0xb0, 0xf0, 0x18, 0x73,
		0x53, 0xd2, 0x02, 0x30, 0xe6, 0x06, 0x98, 0x43, 0x9f, 0x30, 0x80, 0xdd, 0x98, 0x9b, 0x18, 0x43,
		0x5b, 0x9e, 0xcb, 0x77, 0xc4, 0xcd, 0x62, 0x01, 0x3c, 0xc7, 0xdb, 0x54, 0x31, 0xde, 0x06, 0x80,
		0x4a, 0x67, 0x60, 0xc5, 0x1d, 0x60, 0x69, 0x03, 0xb4, 0xb4, 0x01, 0x5c, 0xba, 0x00, 0x2f, 0x5e,
		0x00, 0x8c, 0x19, 0x10, 0x4b, 0x95, 0x84, 0x6d, 0xee, 0x65, 0x6a, 0xf5, 0xdd, 0x40, 0x29, 0xe1,
		0x5a, 0xff, 0x9d, 0x3a, 0x2e, 0x47, 0xbb, 0xbf, 0x60, 0x8a, 0xde, 0x31, 0x94, 0xfd, 0xc8, 0x51,
		0x4a, 0x84, 0x92, 0x6d, 0x41, 0x98, 0xf9, 0xe6, 0xcd, 0x49, 0xd5, 0xda, 0x1d, 0xfd, 0x7d, 0x52,
		0xb3, 0x76, 0x47, 0xb3, 0xb7, 0xb5, 0xe4, 0xcb, 0xec, 0xfd, 0xe6, 0x49, 0xd5, 0xaa, 0x2f, 0xde,
		0x37, 0x4e, 0xaa, 0x56, 0x63, 0xf4, 0xf6, 0xf4, 0x74, 0xe3, 0xed, 0x5f, 0x5b, 0x5f, 0x9f, 0xff,
		0x83, 0xfc, 0x2c, 0xef, 0x08, 0x96, 0x37, 0x47, 0xdd, 0x13, 0x37, 0x2a, 0x74, 0xac, 0xa9, 0x8c,
		0x94, 0x73, 0xe6, 0x33, 0xb5, 0xc1, 0x5f, 0x2e, 0x05, 0xdf, 0xd3, 0xaf, 0x41, 0x23, 0xf1, 0x8d,
		0x8d, 0x8a, 0xba, 0x9d, 0x08, 0xe3, 0x57, 0xe3, 0xf5, 0xb0, 0x65, 0x77, 0xda, 0xdd, 0xdf, 0xec,
		0xf6, 0xc1, 0x6b, 0x74, 0x15, 0x27, 0x15, 0x0e, 0x25, 0x87, 0x04, 0x3d, 0xc5, 0xe9, 0x06, 0x47,
		0x4f, 0x9c, 0x22, 0xf4, 0x7c, 0x28, 0xe1, 0xb9, 0x1c, 0x88, 0x68, 0x1c, 0x7a, 0x13, 0xf6, 0x15,
		0x18, 0x2b, 0x66, 0xba, 0x2d, 0xc7, 0xfe, 0xd4, 0x15, 0x86, 0xba, 0x14, 0x86, 0xef, 0xc9, 0xcf,
		0x46, 0xfb, 0xc0, 0x38, 0xf7, 0x84, 0xef, 0x1a, 0x81, 0xf4, 0x6f, 0x8d, 0xd8, 0x40, 0x24, 0xff,
		0x16, 0x4d, 0xcf, 0xac, 0x61, 0xe7, 0x93, 0x91, 0x68, 0xe3, 0x17, 0x27, 0x32, 0x1c, 0x63, 0xd8,
		0x3a, 0x95, 0x9d, 0xf8, 0x47, 0x3c, 0x57, 0x48, 0xe5, 0x9d, 0x7b, 0x22, 0xe4, 0x6e, 0x4b, 0x34,
		0xaa, 0x62, 0x5e, 0x36, 0xf3, 0xee, 0x92, 0xe6, 0x6a, 0x50, 0xf7, 0xa7, 0x63, 0x09, 0xf3, 0x8a,
		0xd5, 0xcf, 0xf8, 0x50, 0xa2, 0x3c, 0x12, 0x92, 0x6b, 0x2c, 0xf5, 0x08, 0x59, 0xc6, 0xeb, 0x8e,
		0xd5, 0x66, 0x57, 0xc9, 0x8a, 0x23, 0x61, 0xbc, 0x7a, 0x1b, 0x9e, 0x2c, 0x01, 0xf7, 0xe1, 0x45,
		0x88, 0x8d, 0xfb, 0xf0, 0x12, 0x95, 0x1d, 0xf7, 0xe1, 0x34, 0x22, 0x03, 0xdc, 0x87, 0x93, 0x03,
		0xff, 0xb8, 0x0f, 0x07, 0xbe, 0x79, 0x54, 0x49, 0xf8, 0xdf, 0x87, 0x0b, 0x39, 0xbd, 0x12, 0xa1,
		0xc3, 0x94, 0x87, 0x48, 0xef, 0xc3, 0xeb, 0x0c, 0x65, 0x6f, 0xc9, 0xe9, 0x15, 0x5f, 0x8f, 0x35,
		0x0c, 0x06, 0x2a, 0xf4, 0xe4, 0x05, 0xef, 0xce, 0x37, 0xd5, 0xf8, 0x0c, 0x1c, 0xf5, 0xda, 0xdd,
		0xa1, 0x3d, 0xec, 0xd9, 0xc9, 0x1b, 0xce, 0xf7, 0x61, 0xb5, 0x78, 0x39, 0x87, 0xc7, 0x9d, 0x61,
		0xdb, 0x6e, 0xbe, 0x7f, 0xdf, 0x1a, 0x0c, 0x38, 0x2f, 0x66, 0x33, 0x5e, 0xcc, 0x71, 0xf7, 0xb7,
		0x6e, 0xef, 0xf7, 0xae, 0x89, 0xbe, 0x56, 0x85, 0x9e, 0xed, 0xb6, 0xe4, 0xdd, 0x4c, 0x7b, 0xf5,
		0x10, 0xb0, 0x1d, 0xc4, 0x3e, 0x0b, 0x2e, 0x57, 0xcd, 0x13, 0xeb, 0xce, 0xc1, 0xe9, 0x79, 0xde,
		0x33, 0x36, 0xc1, 0xc5, 0x42, 0x62, 0xf6, 0x11, 0x00, 0xf2, 0xb2, 0x4a, 0x7e, 0xe9, 0x99, 0x97,
		0x35, 0xfc, 0xf3, 0xa8, 0x85, 0xcc, 0x2c, 0x0a, 0x01, 0x26, 0x32, 0xb3, 0x48, 0x2f, 0xe8, 0x3b,
		0x99, 0x59, 0xb3, 0x73, 0x84, 0xdc, 0xac, 0x12, 0x9e, 0xcc, 0x5a, 0xe4, 0x66, 0x25, 0xb7, 0x83,
		0xcf, 0x49, 0x04, 0x49, 0x72, 0x47, 0x18, 0x5e, 0x29, 0xea, 0x6a, 0xe0, 0x0d, 0xe4, 0x65, 0xb1,
		0xb6, 0xf9, 0x19, 0x1e, 0x48, 0xe4, 0x64, 0x41, 0x72, 0x8d, 0xa5, 0x46, 0x4e, 0xd6, 0xda, 0x63,
		0x34, 0xd3, 0x0f, 0xc6, 0x8e, 0x6f, 0x79, 0x13, 0xcb, 0x71, 0xdd, 0x50, 0x44, 0x11, 0xe3, 0xd4,
		0xac, 0xfb, 0x2b, 0x41, 0x86, 0x56, 0x11, 0x62, 0x23, 0x43, 0xab, 0x44, 0x9d, 0x47, 0x86, 0x16,
		0x8d, 0x18, 0x01, 0x19, 0x5a, 0xe4, 0xc2, 0x00, 0x64, 0x68, 0x01, 0xed, 0x3c, 0xaa, 0x24, 0xfc,
		0x33, 0xb4, 0xbc, 0xc9, 0x75, 0x7d, 0x81, 0x72, 0x2c, 0x19, 0x58, 0xff, 0x0b, 0xa4, 0x40, 0xeb,
		0x92, 0x82, 0xd1, 0x03, 0x5a, 0x97, 0xfc, 0xf8, 0x0f, 0xbe, 0xf9, 0xc7, 0xc9, 0xe9, 0xe9, 0xe4,
		0xaf, 0xee, 0xd7, 0xf8, 0xcf, 0xce, 0xd7, 0xd1, 0xbf, 0xde, 0xfe, 0x9b, 0xab, 0xaf, 0x8c, 0x17,
		0x76, 0x7a, 0xba, 0x31, 0xfa, 0x27, 0xda, 0xb1, 0xc0, 0xad, 0x2c, 0x2b, 0x06, 0x46, 0x56, 0x95,
		0xbc, 0x02, 0x8c, 0xac, 0xa2, 0xbd, 0x04, 0x8c, 0xac, 0x2a, 0x68, 0xc7, 0x91, 0x80, 0x54, 0xf2,
		0x4b, 0xaf, 0x04, 0xa4, 0x79, 0x20, 0x3d, 0x9b, 0x26, 0xb3, 0xb7, 0x48, 0xa3, 0xe8, 0xf4, 0xde,
		0x37, 0x3b, 0x76, 0xfb, 0x08, 0x29, 0x49, 0x14, 0x02, 0x29, 0xa4, 0x24, 0x91, 0x5e, 0xd0, 0x13,
		0x29, 0x49, 0xdf, 0x3b, 0x59, 0x48, 0x52, 0x2a, 0xe1, 0x59, 0xe9, 0x9f, 0xa4, 0x14, 0x8c, 0x1d,
		0xdf, 0x68, 0x1f, 0x19, 0x73, 0x06, 0xe9, 0x87, 0x52, 0x23, 0x4e, 0xa5, 0xf3, 0xe0, 0x07, 0x91,
		0xaf, 0x44, 0xd2, 0x03, 0x20, 0x5f, 0x89, 0x97, 0x43, 0xc8, 0xe7, 0x6c, 0x22, 0x75, 0x09, 0x92,
		0x6b, 0x2c, 0x35, 0x52, 0x97, 0xd6, 0x1e, 0xb9, 0x99, 0x57, 0xce, 0x8d, 0x77, 0x35, 0xbd, 0xb2,
		0xce, 0x1c, 0xe9, 0x7e, 0xf1, 0xdc, 0x64, 0xc2, 0x2a, 0xd3, 0xdc, 0xa5, 0x87, 0x4b, 0x41, 0xf2,
		0x52, 0x11, 0x62, 0x23, 0x79, 0xa9, 0x44, 0xa5, 0x47, 0xf2, 0x12, 0x8d, 0x80, 0x01, 0xc9, 0x4b,
		0xe4, 0x62, 0x02, 0x24, 0x2f, 0x01, 0xef, 0x3c, 0xaa, 0x24, 0x1a, 0x24, 0x2f, 0x09, 0x21, 0xce,
		0xfd, 0xc0, 0x51, 0x5b, 0x9b, 0x8c, 0x73, 0x96, 0x76, 0x19, 0x8a, 0xde, 0x11, 0xf2, 0x22, 0x01,
		0xc9, 0xb8, 0x55, 0x2b, 0x78, 0xe7, 0x0f, 0x3d, 0x0d, 0xb8, 0xe4, 0x4f, 0x8e, 0x3f, 0x8d, 0x4f,
		0x70, 0x9d, 0x39, 0xed, 0xfb, 0x21, 0x74, 0xc6, 0xca, 0x0b, 0xe4, 0x81, 0x77, 0xe1, 0x71, 0xcd,
		0x76, 0x59, 0xb5, 0xac, 0xe2, 0xc2, 0x51, 0xde, 0xb5, 0x60, 0x99, 0x5c, 0xc1, 0xd8, 0x19, 0xaf,
		0x1e, 0x71, 0xe7, 0x06, 0x47, 0x1c, 0x47, 0x1c, 0x47, 0x5c, 0xa7, 0xe8, 0x80, 0xaf, 0xd4, 0xc8,
		0xf5, 0xcd, 0xf3, 0x38, 0x22, 0xc3, 0x0e, 0xb1, 0xc0, 0x4b, 0xe3, 0xe0, 0xef, 0xe6, 0x01, 0x1d,
		0x36, 0xff, 0x68, 0x1f, 0x1e, 0x1f, 0xda, 0xfb, 0xcd, 0xee, 0xc1, 0xef, 0xed, 0x83, 0xe1, 0x7f,
		0x90, 0x6a, 0x47, 0x21, 0xfe, 0x47, 0xaa, 0x1d, 0xe9, 0x05, 0x3d, 0x2b, 0xd5, 0xee, 0x91, 0x23,
		0x86, 0xe0, 0xa9, 0x84, 0x87, 0xa6, 0x7d, 0xce, 0x9d, 0x0a, 0x9d, 0xf3, 0x73, 0x6f, 0x6c, 0x08,
		0x79, 0xe1, 0x49, 0x21, 0x42, 0x4f, 0x5e, 0x18, 0x57, 0x42, 0x85, 0xde, 0xf8, 0x1b, 0xb9, 0x3d,
		0xa7, 0xd2, 0x8b, 0x92, 0x6f, 0xce, 0x6f, 0x87, 0x0d, 0xae, 0xb7, 0xc3, 0xba, 0x3a, 0x03, 0x03,
		0x99, 0x77, 0xac, 0xfd, 0x43, 0x9e, 0x27, 0x14, 0xf9, 0x77, 0x90, 0x1c, 0xfc, 0x02, 0xf6, 0x57,
		0x5f, 0x14, 0x97, 0x26, 0xad, 0x85, 0x22, 0x12, 0xe1, 0xb5, 0x73, 0xe6, 0x0b, 0x9d, 0x52, 0xf1,
		0x1e, 0x5d, 0x15, 0xb2, 0xf2, 0x8a, 0x10, 0x1b, 0x59, 0x79, 0x25, 0xea, 0x3f, 0xb2, 0xf2, 0x68,
		0x04, 0x13, 0xc8, 0xca, 0x23, 0x17, 0x2f, 0x20, 0x2b, 0x0f, 0x28, 0xe8, 0x51, 0x25, 0x41, 0x56,
		0x1e, 0x0d, 0xa0, 0x83, 0xac, 0xbc, 0xc2, 0x5f, 0xc8, 0xca, 0x2b, 0x77, 0x11, 0x48, 0xd9, 0xa1,
		0x6a, 0x59, 0x91, 0x95, 0x47, 0xe0, 0x88, 0x23, 0x2b, 0x0f, 0x47, 0x1c, 0x47, 0x5c, 0xaf, 0xe8,
		0x80, 0xaf, 0xd4, 0xc8, 0xca, 0xcb, 0xf3, 0x38, 0x22, 0x2b, 0x0f, 0xb1, 0xc0, 0x4b, 0xe3, 0xe0,
		0x1f, 0x4a, 0x19, 0x3a, 0x3e, 0x3c, 0x3e, 0xb4, 0xfb, 0xad, 0x41, 0xab, 0xff, 0xa9, 0xb9, 0xdf,
		0x69, 0x21, 0x43, 0x8f, 0x16, 0x17, 0x80, 0x0c, 0x3d, 0xd2, 0x0b, 0x7a, 0x76, 0x86, 0xde, 0x37,
		0x8e, 0x1b, 0x82, 0xaa, 0x12, 0x1e, 0xa0, 0xf6, 0xd9, 0x7a, 0x8b, 0x6c, 0x9e, 0xbb, 0x2b, 0xe0,
		0xbb, 0xc4, 0x9e, 0xc7, 0x3a, 0x72, 0x9d, 0xca, 0x95, 0x96, 0x5c, 0xf7, 0x72, 0x82, 0x1e, 0xfb,
		0x2d, 0x48, 0xe0, 0x23, 0xe9, 0x2f, 0x90, 0xc0, 0xc7, 0xcb, 0x7d, 0x14, 0x7c, 0x68, 0x91, 0xd3,
		0x07, 0xc9, 0xc1, 0x4e, 0x60, 0x7f, 0xf5, 0xc5, 0x7a, 0xe6, 0x2c, 0xe5, 0x99, 0x71, 0xf6, 0xde,
		0x4c, 0x7e, 0xe4, 0xe9, 0x15, 0x21, 0x36, 0xf2, 0xf4, 0x4a, 0xd4, 0x74, 0xe4, 0xe9, 0xd1, 0x88,
		0x19, 0x90, 0xa7, 0x47, 0x2e, 0x2c, 0x40, 0x9e, 0x1e, 0x90, 0xcd, 0xa3, 0x4a, 0xc2, 0x3f, 0x4f,
		0x6f, 0xea, 0x49, 0xde, 0x29, 0x7a, 0x3b, 0x0c, 0x45, 0xef, 0x3b, 0xf2, 0x42, 0xe0, 0x56, 0xae,
		0xf8, 0x8d, 0xd7, 0x2a, 0x43, 0xaf, 0x8a, 0xf4, 0x1d, 0x62, 0x36, 0x15, 0x19, 0x7a, 0x04, 0x8e,
		0xb8, 0x56, 0x19, 0x7a, 0x9b, 0xbb, 0xf5, 0xdd, 0xed, 0x9d, 0xcd, 0xdd, 0x06, 0xce, 0x3a, 0xce,
		0x3a, 0x02, 0x04, 0xc6, 0x52, 0x23, 0x55, 0x2f, 0xcf, 0xe3, 0x88, 0x54, 0x3d, 0x04, 0x05, 0x2f,
		0x0d, 0x85, 0xbf, 0x9f, 0x3b, 0xd4, 0x1a, 0xf6, 0xdb, 0xef, 0x91, 0x93, 0x47, 0x21, 0xf8, 0x47,
		0x4e, 0x1e, 0xe9, 0x05, 0x3d, 0x2f, 0x27, 0x6f, 0x7e, 0xae, 0x10, 0x2f, 0x95, 0xf0, 0xa4, 0xd0,
		0x2a, 0xef, 0xc9, 0x46, 0x5c, 0x8e, 0x31, 0x6c, 0x19, 0x2c, 0x2f, 0x80, 0x75, 0xb5, 0xfb, 0x06,
		0xf2, 0xeb, 0x58, 0xbb, 0x82, 0xec, 0xcf, 0x25, 0x52, 0xe8, 0x20, 0x39, 0x58, 0x03, 0xec, 0xaf,
		0xbe, 0x88, 0xcd, 0x0c, 0xc5, 0x55, 0xa0, 0x84, 0xe5, 0x4d, 0xac, 0xc5, 0x2c, 0x6e, 0xb6, 0xd9,
		0x74, 0x0f, 0x97, 0x82, 0xc4, 0xba, 0x22, 0xc4, 0x46, 0x62, 0x5d, 0x89, 0x4a, 0x8f, 0xc4, 0x3a,
		0x1a, 0xc1, 0x02, 0x12, 0xeb, 0xc8, 0xc5, 0x03, 0x48, 0xac, 0x03, 0xde, 0x79, 0x54, 0x49, 0x34,
		0x68, 0x80, 0x37, 0xb9, 0xae, 0x2f, 0x50, 0x8e, 0x25, 0x03, 0xeb, 0x7f, 0x81, 0x14, 0x8c, 0xd3,
		0xec, 0x6a, 0xef, 0x18, 0xca, 0x7e, 0xe4, 0x28, 0x25, 0x42, 0xbe, 0x97, 0x6a, 0xe6, 0x9b, 0x37,
		0x27, 0x55, 0x6b, 0x77, 0xf4, 0xf7, 0x49, 0xcd, 0xda, 0x1d, 0xcd, 0xde, 0xd6, 0x92, 0x2f, 0xb3,
		0xf7, 0x9b, 0x27, 0x55, 0xab, 0xbe, 0x78, 0xdf, 0x38, 0xa9, 0x5a, 0x8d, 0xd1, 0xdb, 0xd3, 0xd3,
		0x8d, 0xb7, 0x7f, 0x6d, 0x7d, 0x7d, 0xfe, 0x0f, 0xbe, 0xf9, 0xc7, 0xc9, 0xe9, 0xe9, 0xe4, 0xaf,
		0xee, 0xd7, 0xf8, 0xcf, 0xce, 0xd7, 0xd1, 0xbf, 0xde, 0xfe, 0x9b, 0xab, 0xaf, 0x8c, 0x17, 0x76,
		0x7a, 0xba, 0x31, 0xfa, 0xa7, 0x89, 0x80, 0x1f, 0x6e, 0x65, 0x49, 0x31, 0x3a, 0x5e, 0xa4, 0x9a,
		0x4a, 0x85, 0x3c, 0x5d, 0xcb, 0xa1, 0x27, 0x5b, 0xbe, 0x88, 0xb1, 0x13, 0xd3, 0x0c, 0x2a, 0xf3,
		0xd0, 0xb9, 0x59, 0x5a, 0x41, 0xed, 0x5d, 0xbd, 0xbe, 0xbd, 0x53, 0xaf, 0x57, 0x77, 0xb6, 0x76,
		0xaa, 0xbb, 0x8d, 0x46, 0x6d, 0xbb, 0xc6, 0x30, 0xcf, 0xcd, 0xec, 0x85, 0xae, 0x08, 0x85, 0xbb,
		0x7f, 0x6b, 0xee, 0x19, 0x72, 0xea, 0xfb, 0x9c, 0x97, 0x70, 0x1c, 0x89, 0x90, 0x65, 0x4a, 0x1b,
		0x12, 0x96, 0x8a, 0x5f, 0x03, 0x12, 0x96, 0xca, 0x0d, 0x31, 0xbe, 0x9b, 0x58, 0xd1, 0x6f, 0x1d,
		0xf6, 0x86, 0x2d, 0xbb, 0x7d, 0x84, 0x9c, 0x25, 0x0a, 0x91, 0x14, 0x72, 0x96, 0x48, 0x2f, 0xe8,
		0x59, 0x39, 0x4b, 0x4b, 0x47, 0x0b, 0x69, 0x4b, 0x25, 0x3c, 0x2c, 0xed, 0xd3, 0x96, 0x66, 0x57,
		0x65, 0x46, 0xfb, 0xc8, 0x98, 0x93, 0x48, 0x8f, 0xf5, 0x1c, 0x5a, 0xc9, 0x8d, 0x30, 0xbe, 0x38,
		0xd1, 0xa9, 0x74, 0x1e, 0xfe, 0x24, 0x92, 0x97, 0x48, 0x3a, 0x01, 0x24, 0x2f, 0xf1, 0xf2, 0x09,
		0x79, 0x9d, 0x4e, 0xa4, 0x30, 0x41, 0x72, 0x8d, 0xa5, 0x46, 0x0a, 0xd3, 0xda, 0xa3, 0x37, 0x53,
		0x71, 0xbc, 0xce, 0x4b, 0x61, 0x59, 0x22, 0x3d, 0x12, 0x95, 0x8a, 0x10, 0x1b, 0x89, 0x4a, 0x25,
		0xea, 0x39, 0x12, 0x95, 0x68, 0x04, 0x06, 0x48, 0x54, 0x22, 0x87, 0xfd, 0x91, 0xa8, 0x04, 0x54,
		0xf3, 0xa8, 0x92, 0x68, 0xd0, 0x01, 0x4c, 0xf2, 0x24, 0x20, 0xd2, 0xcc, 0x24, 0x8e, 0x43, 0x3a,
		0xe7, 0x6a, 0x83, 0xab, 0xb3, 0x92, 0x94, 0xde, 0x73, 0x85, 0x54, 0x9e, 0xba, 0x0d, 0xc5, 0x39,
		0xe7, 0xab, 0xb1, 0xc5, 0x11, 0x60, 0xdc, 0x1e, 0xc8, 0x6c, 0xcf, 0x1f, 0xc5, 0xbe, 0x13, 0x09,
		0x7d, 0xa8, 0xfc, 0xde, 0xe0, 0xe8, 0x83, 0xbd, 0xb8, 0x2c, 0x1a, 0x76, 0x3e, 0xd9, 0xc3, 0x3f,
		0x8f, 0x5a, 0xdc, 0x89, 0xf8, 0xa4, 0x2d, 0x55, 0xc4, 0xd6, 0x6e, 0xe9, 0x61, 0xc3, 0x1e, 0x55,
		0xb7, 0x85, 0xa6, 0x35, 0x0f, 0x0e, 0xdb, 0x5d, 0xfb, 0x63, 0xbf, 0x77, 0x7c, 0x64, 0xb2, 0x5f,
		0xe1, 0xd7, 0x5f, 0xa0, 0x66, 0x34, 0xd5, 0xac, 0x7d, 0x00, 0xed, 0x82, 0x76, 0xe5, 0xa5, 0x5d,
		0x9d, 0xde, 0xfb, 0x66, 0xc7, 0x6e, 0xc3, 0x82, 0x41, 0xc7, 0x72, 0xd3, 0xb1, 0xc3, 0xe6, 0x1f,
		0xed, 0xc3, 0xe3, 0xc3, 0xbb, 0xd9, 0x7f, 0x50, 0x36, 0x28, 0x5b, 0xde, 0xca, 0xf6, 0xd8, 0xcc,
		0x49, 0xe8, 0x1d, 0xf4, 0x2e, 0x37, 0xbd, 0x4b, 0x1a, 0xab, 0x41, 0xc3, 0xa0, 0x61, 0x79, 0x69,
		0x58, 0x9a, 0x06, 0x0b, 0x25, 0x83, 0x92, 0xe5, 0xa5, 0x64, 0x09, 0x75, 0x06, 0xfd, 0x82, 0x7e,
		0xe5, 0xa4, 0x5f, 0xc7, 0xdd, 0x19, 0x30, 0x6b, 0x1d, 0x68, 0x05, 0xcb, 0x58, 0xaf, 0x60, 0x84,
		0xbc, 0x52, 0x58, 0x27, 0x9d, 0x2d, 0x52, 0x6a, 0x85, 0x84, 0x9c, 0x5e, 0x89, 0xd0, 0x61, 0x5e,
		0x06, 0x90, 0x5e, 0x45, 0xd6, 0x19, 0xaf, 0xa1, 0x25, 0xa7, 0x57, 0xfc, 0xaf, 0x20, 0x87, 0xc1,
		0x40, 0x85, 0x9e, 0xbc, 0xd0, 0xa3, 0x60, 0xa6, 0x1a, 0x9f, 0x91, 0xe3, 0xee, 0x6f, 0xdd, 0xde,
		0xef, 0x5d, 0xe6, 0xa5, 0x12, 0xbf, 0x70, 0xd7, 0xab, 0x76, 0x92, 0x0c, 0xa7, 0x81, 0x52, 0x2d,
		0xf4, 0x69, 0xcf, 0xa8, 0xa2, 0xfa, 0x06, 0x92, 0x6b, 0x2c, 0x35, 0xaa, 0x6f, 0xd6, 0xde, 0x98,
		0x9b, 0x53, 0xf9, 0x59, 0x06, 0x5f, 0xa4, 0xc5, 0xbb, 0x0a, 0x67, 0x65, 0x15, 0xa8, 0xc6, 0x29,
		0x42, 0x6c, 0x54, 0xe3, 0x94, 0xa8, 0xef, 0xa8, 0xc6, 0x29, 0xf3, 0xc0, 0xa2, 0x1a, 0x87, 0xd8,
		0x42, 0x50, 0x8d, 0x03, 0x94, 0xf3, 0xfd, 0x10, 0x55, 0x8b, 0x79, 0xfc, 0xb5, 0x6d, 0xc6, 0xe5,
		0x38, 0xdb, 0x98, 0xc7, 0x5f, 0xf0, 0x0b, 0xf3, 0xf8, 0xcb, 0x5d, 0x04, 0xe6, 0xf1, 0x53, 0xb5,
		0xa9, 0x98, 0xc7, 0x4f, 0xe0, 0x88, 0xeb, 0x34, 0x8f, 0x7f, 0xbb, 0xd1, 0xd8, 0xc2, 0x28, 0x7e,
		0x1c, 0x73, 0xc4, 0x06, 0x9c, 0xa5, 0x46, 0x8f, 0xfd, 0x3c, 0x8f, 0x23, 0x3a, 0x5b, 0x23, 0x1e,
		0x78, 0x69, 0x14, 0xbc, 0xd4, 0x7e, 0x77, 0x7e, 0x55, 0x8b, 0x0e, 0xd6, 0x14, 0x42, 0x7c, 0x74,
		0xb0, 0x26, 0xbd, 0xa0, 0x27, 0x3a, 0x58, 0xa7, 0x47, 0x08, 0x01, 0x50, 0x09, 0x0f, 0x45, 0xfb,
		0x4e, 0xd5, 0xf3, 0x8b, 0xd9, 0x59, 0x97, 0xdb, 0x6f, 0xb5, 0xc1, 0xfd, 0xe2, 0x44, 0x86, 0x0c,
		0xd4, 0xe9, 0xe2, 0xff, 0x07, 0xc9, 0xbf, 0xfa, 0xc1, 0xd8, 0xf1, 0x8d, 0xe8, 0x36, 0x52, 0xe2,
		0x0a, 0x9d, 0xaa, 0x49, 0x1a, 0x7b, 0x74, 0xaa, 0xe6, 0x65, 0xfb, 0xf3, 0x3a, 0x9d, 0xc8, 0x95,
		0x83, 0xe4, 0xe0, 0x05, 0xb0, 0xbf, 0xfa, 0xa2, 0xb7, 0x34, 0xcb, 0xec, 0x7a, 0xce, 0xf8, 0x32,
		0x4f, 0x96, 0x9b, 0x2d, 0x03, 0xd9, 0x72, 0x45, 0x88, 0x8d, 0x6c, 0xb9, 0x12, 0x15, 0x1e, 0xd9,
		0x72, 0x34, 0x42, 0x05, 0x64, 0xcb, 0x91, 0x8b, 0x06, 0x90, 0x2d, 0x07, 0x9c, 0xf3, 0xa8, 0x92,
		0xf0, 0xcf, 0x96, 0x3b, 0xf3, 0xa4, 0x13, 0xde, 0x32, 0xce, 0x96, 0xdb, 0x85, 0x82, 0xe7, 0xb8,
		0xc9, 0xb8, 0x8a, 0x2c, 0xf9, 0x85, 0xab, 0x48, 0x40, 0xcd, 0xdc, 0x21, 0x27, 0xae, 0x22, 0x89,
		0x03, 0x50, 0x5c, 0x45, 0x12, 0x79, 0x28, 0x6b, 0x73, 0x15, 0x99, 0xd0, 0x5e, 0xb8, 0x8b, 0xc4,
		0x5d, 0x24, 0x0c, 0x7f, 0xd9, 0xc6, 0x3f, 0xb7, 0xe3, 0x89, 0xcb, 0x48, 0x48, 0xae, 0xb1, 0xd4,
		0xb8, 0x8c, 0x5c, 0x67, 0x49, 0x99, 0xa0, 0x4c, 0xb3, 0x29, 0x65, 0xa0, 0x1c, 0x76, 0x80, 0xd2,
		0x8c, 0xc6, 0x97, 0xe2, 0xca, 0x99, 0x38, 0xea, 0x32, 0xf6, 0x51, 0x95, 0x60, 0x22, 0xe4, 0x38,
		0xb9, 0xbe, 0xb3, 0xa4, 0x50, 0x5f, 0x82, 0xf0, 0xb3, 0xe5, 0xc9, 0x48, 0x39, 0x72, 0x2c, 0x2a,
		0xf7, 0xbf, 0x11, 0x3d, 0xf8, 0x4e, 0x65, 0x12, 0x06, 0x2a, 0x18, 0x07, 0x7e, 0x94, 0xbe, 0xab,
		0xcc, 0x18, 0xf7, 0x8a, 0x13, 0x0a, 0x27, 0x4a, 0xfe, 0xac, 0xf8, 0x91, 0x7b, 0x56, 0xf1, 0x23,
		0x27, 0x69, 0x60, 0x12, 0xa5, 0xef, 0xe2, 0x37, 0xc9, 0xdf, 0x2a, 0xc1, 0xc4, 0xf9, 0xef, 0x54,
		0x58, 0xf1, 0x5b, 0x15, 0x3a, 0xe7, 0xe7, 0xde, 0xd8, 0x12, 0xf2, 0xc2, 0x93, 0x42, 0x84, 0x9e,
		0xbc, 0xa8, 0x28, 0xff, 0x3a, 0x8a, 0xff, 0xa8, 0xf8, 0x9e, 0xfc, 0x5c, 0x89, 0x1d, 0x65, 0xf2,
		0x9d, 0xf9, 0x9b, 0x4a, 0xa4, 0x1c, 0x25, 0x78, 0x38, 0x45, 0xfa, 0x47, 0x90, 0xc1, 0xf1, 0x4b,
		0xaf, 0xf8, 0xa3, 0xe9, 0x99, 0xf2, 0xaf, 0xd9, 0x1c, 0xbf, 0x07, 0x29, 0x0a, 0x73, 0xf9, 0x99,
		0x18, 0xbc, 0x45, 0x9b, 0x4b, 0x26, 0xe2, 0x72, 0xcb, 0x49, 0xe0, 0x98, 0x8b, 0xc0, 0x3a, 0x07,
		0x81, 0x2b, 0x4d, 0xc0, 0x3e, 0xe7, 0x80, 0x7d, 0xe4, 0xcf, 0x3d, 0xc7, 0x00, 0x81, 0x40, 0x96,
		0xca, 0x70, 0xe0, 0x85, 0xcc, 0x22, 0x80, 0x04, 0x2f, 0xb3, 0x4d, 0xf0, 0x9c, 0x89, 0xcf, 0x33,
		0xb1, 0xb3, 0x86, 0xc4, 0x4e, 0x80, 0x29, 0x9d, 0x41, 0x15, 0x77, 0x70, 0xa5, 0x0d, 0xc8, 0xd2,
		0x06, 0x6c, 0xe9, 0x02, 0xba, 0x78, 0x81, 0x2f, 0x66, 0x20, 0x8c, 0x2d, 0x18, 0x4b, 0x05, 0xf7,
		0x85, 0xbc, 0x48, 0x28, 0x59, 0xa6, 0xf6, 0x72, 0xe1, 0xb4, 0xe6, 0xeb, 0x60, 0x6a, 0x63, 0x78,
		0xd6, 0xdf, 0xb0, 0x87, 0x6b, 0x3a, 0xc0, 0x36, 0xad, 0xe0, 0x9b, 0x2e, 0x30, 0x4e, 0x3b, 0x38,
		0xa7, 0x1d, 0xac, 0xd3, 0x0d, 0xde, 0xf1, 0x84, 0x79, 0x4c, 0xe1, 0x5e, 0xaa, 0x3c, 0x6c, 0xeb,
		0x79, 0x1e, 0x78, 0x0d, 0xb6, 0x5d, 0xb0, 0xef, 0x63, 0xa8, 0x6d, 0xc6, 0x4b, 0xe0, 0xdd, 0x15,
		0x7b, 0xf1, 0xd2, 0x20, 0xfb, 0x55, 0x87, 0x2e, 0xd9, 0xe9, 0x62, 0x34, 0xe9, 0x96, 0x9d, 0xae,
		0x47, 0xb7, 0x76, 0xba, 0x77, 0xb6, 0x58, 0x97, 0xb6, 0xba, 0xcc, 0xdd, 0xfa, 0xaa, 0x29, 0xd0,
		0xa0, 0x9b, 0xf6, 0x03, 0x53, 0xa0, 0x41, 0x57, 0x6d, 0x98, 0x03, 0xc4, 0x26, 0x90, 0xfe, 0x87,
		0x5e, 0x23, 0x14, 0x10, 0xc0, 0xdd, 0x3d, 0x61, 0x64, 0x14, 0xe7, 0x08, 0x36, 0x8d, 0x5e, 0x19,
		0x4e, 0xa8, 0xbc, 0x1f, 0xb7, 0x82, 0xfb, 0x2f, 0x69, 0x01, 0xe0, 0xfe, 0x89, 0x2d, 0x06, 0xdc,
		0x3f, 0xd1, 0x05, 0x81, 0xfb, 0x07, 0x62, 0x02, 0x6a, 0x5a, 0x28, 0x0f, 0xb8, 0x7f, 0x72, 0x18,
		0x0a, 0xdc, 0x7f, 0xd9, 0x2f, 0x70, 0xff, 0xb4, 0x16, 0x03, 0xee, 0x9f, 0x8b, 0x2d, 0x06, 0xf7,
		0x4f, 0xd0, 0x14, 0x80, 0xfb, 0x87, 0x39, 0x80, 0x39, 0x58, 0xdf, 0xd8, 0x84, 0xbf, 0xf4, 0xe0,
		0xfe, 0xe1, 0xee, 0x9e, 0x32, 0x32, 0x3c, 0x27, 0x6e, 0x3c, 0x08, 0x5f, 0x39, 0x4e, 0xdc, 0xb8,
		0x1f, 0xb9, 0x82, 0xfd, 0x2f, 0x69, 0x01, 0x60, 0xff, 0x89, 0x2d, 0x06, 0xec, 0x3f, 0xd1, 0x05,
		0x81, 0xfd, 0x07, 0x66, 0x02, 0x6e, 0x5a, 0x28, 0x8f, 0x3e, 0xec, 0x3f, 0xdb, 0x89, 0x1e, 0xf7,
		0x31, 0xd4, 0x2e, 0x42, 0x1d, 0x48, 0xcc, 0xdd, 0xc0, 0x70, 0xed, 0xef, 0x99, 0xca, 0xaf, 0x5f,
		0x9f, 0xcf, 0xd5, 0xb6, 0x89, 0x9c, 0xda, 0x7e, 0xf2, 0x3b, 0xb1, 0x68, 0x11, 0x06, 0x5b, 0xa2,
		0xbf, 0x0d, 0xe1, 0xd4, 0xad, 0x32, 0x52, 0xe1, 0x74, 0xac, 0xe4, 0x1c, 0x2c, 0x76, 0x67, 0x9b,
		0xdb, 0x9e, 0xef, 0xad, 0x7d, 0x34, 0xdf, 0x51, 0xbb, 0x97, 0xec, 0xa8, 0xdd, 0x0c, 0x85, 0x63,
		0x77, 0x22, 0xf7, 0xcc, 0xee, 0x44, 0x4e, 0x8c, 0x91, 0xe3, 0xaf, 0x76, 0x2f, 0xd9, 0xbb, 0xf8,
		0xdd, 0x70, 0xb6, 0x75, 0xad, 0xbb, 0x9d, 0xb3, 0x87, 0xfe, 0xb5, 0xdd, 0xf1, 0xe4, 0x67, 0x7b,
		0x30, 0x3d, 0x8b, 0xdf, 0x1f, 0xcf, 0xb6, 0x6a, 0x30, 0xdb, 0x29, 0xb4, 0x57, 0x5e, 0x17, 0x8b,
		0x65, 0x4e, 0x65, 0x28, 0x22, 0x11, 0x5e, 0x0b, 0xd7, 0x3a, 0x73, 0xa4, 0xfb, 0xc5, 0x73, 0xd5,
		0x65, 0xc4, 0xb1, 0xcb, 0xf2, 0x63, 0xcb, 0x40, 0xb3, 0xe5, 0x3c, 0xc4, 0x45, 0xb3, 0xe5, 0x02,
		0x15, 0x1b, 0xcd, 0x96, 0x8b, 0x3c, 0x88, 0x68, 0xb6, 0x5c, 0x36, 0x78, 0x46, 0xb3, 0x65, 0xe0,
		0x92, 0x85, 0x32, 0xb0, 0x6b, 0xb6, 0xfc, 0x18, 0x0a, 0xe1, 0xdb, 0x7b, 0xf9, 0xd1, 0xd5, 0xa0,
		0x15, 0x33, 0x20, 0x96, 0x5e, 0x50, 0x4b, 0x0b, 0xc8, 0xc5, 0x1d, 0x7a, 0x69, 0x03, 0xc1, 0xb4,
		0x81, 0x62, 0xba, 0x40, 0x32, 0x5e, 0xd0, 0x8c, 0x19, 0x44, 0x63, 0x0b, 0xd5, 0x52, 0xc1, 0x27,
		0xa1, 0x17, 0x84, 0x9e, 0xba, 0xe5, 0x9f, 0x91, 0x99, 0xae, 0x04, 0x49, 0x99, 0x80, 0x6c, 0xeb,
		0x05, 0xdd, 0xb4, 0x82, 0x70, 0xba, 0x40, 0x39, 0xed, 0x20, 0x9d, 0x76, 0xd0, 0x4e, 0x37, 0x88,
		0xc7, 0x13, 0xea, 0x31, 0x85, 0x7c, 0xa9, 0xf2, 0xe8, 0x93, 0x94, 0xe9, 0x0b, 0xe7, 0x3c, 0x14,
		0xe7, 0x1a, 0x64, 0x65, 0xd6, 0x76, 0x18, 0xaf, 0xe1, 0x68, 0x9e, 0x82, 0xb2, 0xb1, 0x31, 0x4b,
		0xfb, 0xaa, 0xa4, 0xc8, 0x16, 0xb9, 0xa6, 0xb0, 0x44, 0x4f, 0x28, 0x0d, 0xcf, 0x39, 0x87, 0x0f,
		0x4c, 0x10, 0xc7, 0x79, 0x87, 0x0f, 0x8c, 0x0f, 0x22, 0x38, 0x44, 0x70, 0x88, 0xe0, 0x10, 0xc1,
		0x21, 0x82, 0x43, 0x04, 0x87, 0x08, 0x8e, 0xbe, 0xf2, 0x70, 0x25, 0xef, 0xd3, 0x05, 0xb0, 0x27,
		0xf1, 0x1f, 0xb8, 0x3f, 0xe6, 0x64, 0xfe, 0x7d, 0x48, 0xc8, 0xbc, 0x43, 0x10, 0x7b, 0x68, 0xa8,
		0x13, 0x44, 0xd4, 0x12, 0x2a, 0xea, 0x06, 0x19, 0xb5, 0x85, 0x8e, 0xda, 0x42, 0x48, 0x5d, 0xa1,
		0x24, 0x6f, 0x48, 0xc9, 0x1c, 0x5a, 0xa6, 0x4a, 0xc5, 0xfe, 0x92, 0xe0, 0x81, 0xd7, 0x99, 0x7a,
		0x52, 0xbd, 0xd3, 0xc1, 0xe3, 0xcc, 0x21, 0x9a, 0x06, 0xdd, 0x29, 0x35, 0x69, 0xe7, 0xbc, 0x78,
		0xe9, 0x81, 0x00, 0x0c, 0xdd, 0xda, 0x3b, 0xa7, 0x8b, 0xd2, 0xac, 0xcd, 0x73, 0xba, 0x2e, 0x5d,
		0xfb, 0xbb, 0xde, 0x99, 0x70, 0xdd, 0xfa, 0xbc, 0x6a, 0x82, 0x12, 0x56, 0x4d, 0x86, 0x46, 0x6d,
		0xa0, 0x1f, 0x98, 0x8c, 0x1d, 0x98, 0x0c, 0x98, 0x0c, 0x84, 0x45, 0x58, 0x45, 0xfa, 0x1a, 0xa1,
		0x55, 0x37, 0x5c, 0xe6, 0x33, 0x8d, 0x92, 0x16, 0xe5, 0xa6, 0x4f, 0x07, 0xd8, 0xfc, 0xcb, 0x4f,
		0x9f, 0x8a, 0xb5, 0x71, 0x1d, 0x42, 0x64, 0x21, 0xb8, 0x0e, 0x21, 0xbe, 0x28, 0x5c, 0x87, 0x30,
		0x59, 0x18, 0xae, 0x43, 0x80, 0xd8, 0x80, 0xda, 0x7e, 0x54, 0xa9, 0xf4, 0xbb, 0x0e, 0xf1, 0x84,
		0x10, 0xe7, 0x7e, 0xe0, 0xa8, 0xad, 0x4d, 0x8d, 0x2e, 0x45, 0x76, 0x35, 0x58, 0x4a, 0x47, 0xc8,
		0x8b, 0x24, 0x2e, 0xc0, 0xad, 0x08, 0xb1, 0x27, 0xa3, 0xf5, 0xad, 0x48, 0x1d, 0x14, 0x27, 0x33,
		0x4b, 0x8e, 0x5b, 0x11, 0x06, 0x26, 0x43, 0xe7, 0x5b, 0x11, 0x98, 0x0c, 0x98, 0x0c, 0x44, 0x47,
		0x58, 0xc5, 0xdd, 0x0b, 0xb7, 0x22, 0x90, 0x5c, 0x7b, 0x47, 0xcf, 0x7d, 0xfa, 0x4c, 0xba, 0x0e,
		0x1d, 0x27, 0x48, 0x3c, 0xd2, 0x56, 0xfe, 0xd1, 0xef, 0x72, 0x9c, 0x50, 0xc3, 0xf7, 0xb4, 0xa3,
		0x99, 0x5f, 0x9e, 0xe7, 0xf8, 0x37, 0x71, 0xcb, 0xb8, 0x06, 0xcd, 0xec, 0x78, 0x91, 0x6a, 0x2a,
		0xc5, 0xb4, 0x21, 0xe1, 0xa1, 0x27, 0x5b, 0xbe, 0xb8, 0x12, 0x92, 0x6b, 0xc4, 0x10, 0xc7, 0xa8,
		0x4b, 0x2b, 0xa8, 0xbd, 0xab, 0xd7, 0xb7, 0x77, 0xea, 0xf5, 0xea, 0xce, 0xd6, 0x4e, 0x75, 0xb7,
		0xd1, 0xa8, 0x6d, 0xd7, 0x18, 0xa6, 0x9a, 0x9b, 0xbd, 0xd0, 0x15, 0xa1, 0x70, 0xf7, 0xe3, 0x93,
		0x21, 0xa7, 0xbe, 0xcf, 0x79, 0x09, 0xc7, 0x91, 0x08, 0x59, 0x86, 0x6c, 0x18, 0x2b, 0x08, 0x40,
		0x57, 0x14, 0xa0, 0x33, 0x59, 0x36, 0x41, 0x2a, 0x7c, 0x6c, 0xd8, 0x62, 0xe3, 0xf6, 0xd3, 0x7d,
		0xc3, 0x90, 0xc6, 0x35, 0x96, 0x14, 0x43, 0x1a, 0x61, 0x91, 0x33, 0xb0, 0xc8, 0x98, 0x40, 0xb8,
		0x0e, 0x12, 0x12, 0x37, 0x16, 0xbc, 0x02, 0x49, 0x7e, 0x81, 0xa3, 0x16, 0x81, 0x22, 0xc3, 0xc0,
		0x90, 0x61, 0x20, 0x48, 0xdd, 0x52, 0x30, 0x83, 0x13, 0xfa, 0xc1, 0x08, 0x06, 0xd1, 0x5a, 0xe1,
		0xd1, 0x19, 0x6d, 0x10, 0x45, 0x17, 0x9a, 0xd0, 0x94, 0x8c, 0xa8, 0x09, 0xe4, 0x62, 0xfa, 0xf4,
		0x31, 0x79, 0x34, 0x8f, 0x35, 0xbd, 0x43, 0x43, 0x4b, 0x22, 0x62, 0xc7, 0xd7, 0x14, 0x37, 0x2a,
		0x74, 0xac, 0x69, 0xac, 0xcf, 0x67, 0x3e, 0xcd, 0x5a, 0x04, 0xf3, 0xcb, 0xa5, 0x90, 0x64, 0xf3,
		0xd6, 0x09, 0x9b, 0xba, 0x45, 0x4d, 0x46, 0x3a, 0x40, 0x21, 0xb6, 0x3a, 0xc6, 0xaf, 0xc6, 0xeb,
		0x79, 0xfd, 0xd2, 0xcc, 0x1e, 0xed, 0x0d, 0x5b, 0x76, 0xbf, 0x77, 0x3c, 0x6c, 0xf5, 0xed, 0x4e,
		0xbb, 0xfb, 0xdb, 0x6b, 0xc2, 0x10, 0x8a, 0x4b, 0x19, 0xe0, 0x72, 0x79, 0x5f, 0xa2, 0xbc, 0xc4,
		0xc3, 0x16, 0x6e, 0x45, 0x7b, 0x2b, 0xc5, 0x78, 0xcf, 0xd4, 0xee, 0x57, 0x88, 0x6d, 0x9f, 0xbf,
		0xdf, 0x07, 0x22, 0x1a, 0x87, 0xde, 0x84, 0x45, 0x60, 0x9b, 0x9a, 0xbd, 0xb6, 0x1c, 0xfb, 0x53,
		0x57, 0x18, 0xea, 0x52, 0x18, 0x31, 0x72, 0x32, 0xc6, 0x81, 0x54, 0x8e, 0x27, 0x45, 0x68, 0x04,
		0xd2, 0xbf, 0x35, 0xe2, 0x93, 0x99, 0xfc, 0x63, 0xa2, 0x38, 0xc1, 0x79, 0xfc, 0xfe, 0x54, 0x0e,
		0x3b, 0x9f, 0x0c, 0x37, 0x59, 0xee, 0x99, 0x88, 0x0c, 0xc7, 0x98, 0x03, 0x32, 0x63, 0x09, 0x90,
		0x25, 0xbf, 0x8d, 0xfa, 0x99, 0x66, 0x54, 0x31, 0xbd, 0x6c, 0x2e, 0xdd, 0x25, 0x4d, 0x63, 0x10,
		0xcb, 0x73, 0x2c, 0x77, 0x5e, 0xb1, 0x9e, 0x39, 0x1f, 0x12, 0x50, 0x0f, 0x3a, 0x51, 0x0f, 0xe4,
		0xa4, 0x1a, 0x21, 0xb6, 0xe3, 0x4b, 0xc9, 0xb0, 0xa7, 0x62, 0x08, 0x3a, 0xa8, 0xe2, 0xc8, 0x65,
		0x5a, 0xa6, 0x9d, 0x8e, 0x69, 0x22, 0x64, 0x04, 0x4c, 0x19, 0xb8, 0xc2, 0x72, 0x94, 0x0a, 0xbd,
		0xb3, 0x29, 0xc1, 0xa9, 0x78, 0x29, 0x52, 0xbf, 0x27, 0x27, 0x31, 0x33, 0x4a, 0x73, 0x9c, 0x1d,
		0xd9, 0xe6, 0x5b, 0x94, 0x9b, 0x69, 0xb1, 0x68, 0x8e, 0x45, 0x3d, 0x74, 0x63, 0xd3, 0xbc, 0x8a,
		0x4d, 0x74, 0xc6, 0xa5, 0xb9, 0x14, 0xae, 0x52, 0xbe, 0x49, 0x92, 0x11, 0x1d, 0x9f, 0x66, 0xa6,
		0x37, 0x86, 0x64, 0x2d, 0x4a, 0x3a, 0xf6, 0x76, 0x21, 0x29, 0xd1, 0x73, 0x4a, 0x7b, 0xb2, 0x2d,
		0xf9, 0x7e, 0x9c, 0x1c, 0xfa, 0x6c, 0xb2, 0xea, 0x9f, 0xc9, 0xf1, 0x42, 0x8c, 0x45, 0xbf, 0x4b,
		0xde, 0x57, 0x62, 0x0c, 0xfa, 0x53, 0x22, 0xb9, 0x4a, 0x07, 0x68, 0x71, 0x1f, 0x62, 0xf0, 0xb9,
		0x1c, 0xe4, 0x91, 0x2f, 0xca, 0x64, 0x94, 0x3e, 0x9b, 0x46, 0xe0, 0x9c, 0x1a, 0x7d, 0xb3, 0x6c,
		0xe4, 0xcd, 0xad, 0x51, 0x37, 0xdb, 0x46, 0xdc, 0x6c, 0x1b, 0x6d, 0x73, 0x6d, 0xa4, 0x8d, 0x12,
		0x3a, 0x9d, 0x01, 0xcc, 0x1d, 0x90, 0x49, 0xda, 0x37, 0xb1, 0x31, 0x5f, 0x29, 0x9c, 0x49, 0xc4,
		0x66, 0x62, 0x01, 0x78, 0x80, 0x1a, 0x76, 0xe0, 0x86, 0x23, 0xc8, 0x61, 0x0d, 0x76, 0xb8, 0x82,
		0x1e, 0xf6, 0xe0, 0x87, 0x3d, 0x08, 0xe2, 0x0e, 0x86, 0x78, 0x80, 0x22, 0x26, 0xe0, 0x88, 0x1d,
		0x48, 0x4a, 0x05, 0xf6, 0x83, 0xb1, 0xe3, 0x5b, 0xde, 0xe4, 0xba, 0x6e, 0x39, 0xae, 0x1b, 0x8a,
		0x28, 0x12, 0x11, 0x3f, 0x2b, 0xb8, 0x70, 0x3d, 0x8f, 0xae, 0x86, 0x5b, 0xcb, 0x46, 0x96, 0x83,
		0xe5, 0xd8, 0x0e, 0x92, 0xe3, 0x3c, 0x38, 0x4e, 0x8b, 0x41, 0x71, 0xdc, 0x07, 0xc3, 0x69, 0x33,
		0x08, 0x4e, 0x9b, 0xc1, 0x6f, 0xba, 0x0c, 0x7a, 0x43, 0x6b, 0xe4, 0x3c, 0x95, 0x84, 0xed, 0xe0,
		0xb6, 0xbb, 0x41, 0x6d, 0x31, 0xce, 0x61, 0x6b, 0x72, 0x52, 0x0e, 0xe9, 0x1d, 0x43, 0xd9, 0x8f,
		0x1c, 0xa5, 0x44, 0x28, 0xd9, 0x8e, 0x62, 0x33, 0xdf, 0xbc, 0x39, 0xa9, 0x5a, 0xbb, 0xa3, 0xbf,
		0x4f, 0x6a, 0xd6, 0xee, 0x68, 0xf6, 0xb6, 0x96, 0x7c, 0x99, 0xbd, 0xdf, 0x3c, 0xa9, 0x5a, 0xf5,
		0xc5, 0xfb, 0xc6, 0x49, 0xd5, 0x6a, 0x8c, 0xde, 0x9e, 0x9e, 0x6e, 0xbc, 0xfd, 0x6b, 0xeb, 0xeb,
		0xf3, 0x7f, 0xb0, 0x32, 0xff, 0xb0, 0xb7, 0x7f, 0xbf, 0x39, 0xa9, 0x59, 0x9b, 0xa3, 0xc5, 0x5f,
		0xb6, 0x4e, 0xaa, 0xd6, 0xe6, 0xe8, 0xed, 0x5b, 0x7e, 0x96, 0x79, 0x04, 0xcb, 0x9c, 0xa3, 0x6e,
		0xa2, 0xeb, 0x7b, 0xc9, 0x2b, 0x40, 0xd7, 0x77, 0xda, 0x4b, 0x40, 0xd7, 0xf7, 0x82, 0x76, 0x9c,
		0x41, 0x6b, 0x9d, 0xef, 0xae, 0x81, 0x74, 0xeb, 0x9d, 0xef, 0xbd, 0x18, 0x8f, 0x50, 0x5a, 0x6a,
		0xdd, 0xf3, 0x78, 0x5b, 0x93, 0x6e, 0xef, 0xa0, 0x65, 0xb7, 0x8f, 0x3e, 0xd5, 0xed, 0x4e, 0xef,
		0x7d, 0xb3, 0x63, 0x37, 0x0f, 0x0e, 0xfa, 0xad, 0xc1, 0xe0, 0x35, 0xe3, 0xa1, 0xcb, 0xba, 0x0c,
		0xf9, 0x67, 0xd6, 0xfd, 0x67, 0x6d, 0x98, 0x9d, 0x47, 0x19, 0x9e, 0xe7, 0x1f, 0x30, 0xbe, 0xc3,
		0xfc, 0x18, 0x9b, 0x06, 0x4e, 0x0d, 0x88, 0x7e, 0xd8, 0xb8, 0xaf, 0xf4, 0x5e, 0x09, 0xc6, 0x8e,
		0x6f, 0xb4, 0x8f, 0xae, 0xeb, 0x46, 0x7a, 0xf9, 0xf4, 0x68, 0xf3, 0x15, 0x23, 0x9a, 0x9e, 0x59,
		0xc3, 0xce, 0xa7, 0x53, 0xe9, 0x49, 0xd7, 0x1b, 0x3b, 0x4a, 0x44, 0x86, 0xba, 0x74, 0x94, 0xa1,
		0x2e, 0xbd, 0xc8, 0xf0, 0xa2, 0xe4, 0xff, 0x2c, 0x9a, 0xb8, 0xb8, 0x86, 0xeb, 0x28, 0x87, 0xbb,
		0x01, 0xd2, 0xc4, 0x2f, 0x18, 0xac, 0x5b, 0x1d, 0xad, 0x9d, 0x9b, 0x30, 0xbe, 0xd9, 0x2a, 0x29,
		0xcf, 0xe3, 0x8a, 0x61, 0xb7, 0x90, 0x5c, 0x63, 0xa9, 0x47, 0x98, 0x0c, 0xb5, 0xee, 0xf8, 0xee,
		0x2e, 0xd7, 0x66, 0x5b, 0xab, 0xcc, 0xa1, 0x6d, 0x64, 0x0e, 0x15, 0x2c, 0x36, 0x32, 0x87, 0x4a,
		0xd4, 0x7b, 0x64, 0x0e, 0xd1, 0x88, 0x24, 0x90, 0x39, 0x44, 0x2e, 0x58, 0x40, 0xe6, 0x10, 0x50,
		0xcf, 0xa3, 0x4a, 0xa2, 0x45, 0xe6, 0xd0, 0x36, 0x32, 0x87, 0xca, 0x01, 0x0d, 0xfc, 0x33, 0x87,
		0xf6, 0xfe, 0x3e, 0xa9, 0x5a, 0xbb, 0x8e, 0x75, 0xde, 0xb4, 0x3e, 0x8c, 0xfe, 0xaa, 0xfe, 0x52,
		0xff, 0xfa, 0x76, 0xef, 0xed, 0x9b, 0xfb, 0xdf, 0xdb, 0x7b, 0xfb, 0x57, 0xf5, 0x97, 0xc6, 0xd7,
		0x37, 0x6f, 0x1e, 0xf9, 0x97, 0x7f, 0x3f, 0xf6, 0x3b, 0xde, 0xfe, 0xfd, 0xe6, 0xcd, 0x9b, 0x79,
		0xce, 0xd0, 0x4a, 0x1e, 0xd1, 0x49, 0xb5, 0x36, 0xfa, 0x77, 0xf2, 0x76, 0xf6, 0x67, 0x9a, 0x89,
		0xf4, 0x43, 0xff, 0xf9, 0xed, 0xdb, 0x37, 0xcb, 0x09, 0x48, 0xf1, 0xd7, 0xbf, 0x36, 0xbf, 0xbe,
		0xfd, 0xfb, 0x4d, 0xed, 0xa4, 0x6a, 0xd5, 0xd2, 0x64, 0xa4, 0x5a, 0xfc, 0x4b, 0xde, 0xc5, 0xff,
		0x9d, 0xab, 0x13, 0x7e, 0xf3, 0xe6, 0xe4, 0xff, 0xdb, 0x1b, 0xfd, 0x6b, 0xef, 0xed, 0x5f, 0xdb,
		0x5f, 0x17, 0xef, 0x93, 0x3f, 0xdf, 0xfe, 0xfd, 0x66, 0xe3, 0x9f, 0xa7, 0xa7, 0x1b, 0x1b, 0xff,
		0x7c, 0x3b, 0xdb, 0xe4, 0xf9, 0xff, 0xfb, 0xe7, 0xec, 0x5f, 0xff, 0xbd, 0xb7, 0xf7, 0xe0, 0x5b,
		0x6f, 0xdf, 0x54, 0x36, 0xfe, 0x85, 0xc4, 0x2c, 0x38, 0xbe, 0x15, 0x0d, 0x43, 0x62, 0x56, 0xc9,
		0x2b, 0x40, 0x62, 0x16, 0xed, 0x25, 0x20, 0x31, 0xab, 0xa0, 0x1d, 0x47, 0x62, 0x56, 0xc9, 0x2f,
		0xed, 0x13, 0xb3, 0x66, 0x29, 0x23, 0xed, 0xa3, 0x4f, 0xdb, 0x48, 0xcc, 0xa2, 0x14, 0xfa, 0x21,
		0x31, 0x8b, 0xf4, 0x82, 0x7e, 0x3c, 0x31, 0xeb, 0xb1, 0x03, 0x86, 0xc4, 0xac, 0x12, 0x1e, 0xd9,
		0xfa, 0x24, 0x66, 0x6d, 0x3f, 0x2f, 0xd3, 0xe3, 0x1c, 0x99, 0x59, 0x6c, 0x9d, 0x03, 0x32, 0xb3,
		0x78, 0xf9, 0x8a, 0xe2, 0xce, 0x2b, 0x52, 0xb3, 0x20, 0xb9, 0xc6, 0x52, 0x23, 0x35, 0x6b, 0xed,
		0x11, 0x9e, 0xa9, 0x38, 0x5e, 0x50, 0xa6, 0xd0, 0x2d, 0x91, 0x1e, 0xa9, 0x57, 0x45, 0x88, 0x8d,
		0xd4, 0xab, 0x12, 0xf5, 0x1c, 0xa9, 0x57, 0x34, 0x42, 0x05, 0xa4, 0x5e, 0x91, 0x8b, 0x06, 0x90,
		0x7a, 0x05, 0x54, 0xf3, 0xa8, 0x92, 0xf0, 0x4f, 0xbd, 0x9a, 0x4a, 0x9e, 0x94, 0x44, 0x9a, 0x74,
		0xb5, 0xcb, 0x50, 0xf6, 0xb9, 0xda, 0xe0, 0xaa, 0xad, 0x24, 0xa5, 0xf7, 0x5c, 0x21, 0x95, 0xa7,
		0x6e, 0x43, 0x71, 0xce, 0xf9, 0x12, 0x6d, 0x71, 0x04, 0x1a, 0x8c, 0xd7, 0xd0, 0x9e, 0x3f, 0x8a,
		0x7d, 0x27, 0x12, 0xfa, 0xd0, 0xfd, 0xc3, 0x96, 0x9d, 0x5c, 0x2a, 0x35, 0x87, 0xc3, 0x7e, 0x7b,
		0xff, 0x78, 0xd8, 0xb2, 0x87, 0x9d, 0x4f, 0xf6, 0xf0, 0xcf, 0xa3, 0x16, 0x77, 0x7e, 0xfe, 0x93,
		0xe3, 0x4f, 0x93, 0xc2, 0xaa, 0x13, 0xf6, 0x84, 0x2f, 0xff, 0x1b, 0x86, 0x15, 0x9d, 0x7b, 0xa2,
		0xbd, 0x84, 0xc9, 0x7e, 0x95, 0x5f, 0x7f, 0x81, 0xaa, 0xd1, 0x54, 0xb5, 0x6d, 0xed, 0x54, 0x8d,
		0xf5, 0x0a, 0x46, 0xb8, 0x8d, 0x81, 0x61, 0x5a, 0x0b, 0x00, 0x2f, 0xe4, 0xf4, 0x4a, 0x84, 0x0e,
		0xf3, 0xeb, 0xf4, 0x14, 0xc0, 0xd7, 0x19, 0xaf, 0xa1, 0x25, 0xa7, 0x57, 0xfc, 0x81, 0xfb, 0x30,
		0x18, 0xa8, 0xd0, 0x93, 0x17, 0x7a, 0x24, 0x9e, 0x54, 0xe3, 0x33, 0x72, 0xdc, 0xfd, 0xad, 0xdb,
		0xfb, 0xbd, 0xcb, 0x3c, 0xc1, 0xe0, 0x17, 0xee, 0x7a, 0xd5, 0x4e, 0x28, 0x64, 0x0d, 0x94, 0x6a,
		0xa1, 0x4f, 0x7b, 0x46, 0x15, 0x39, 0x2b, 0x90, 0x5c, 0x63, 0xa9, 0x91, 0xb3, 0xb2, 0xce, 0x92,
		0x72, 0x99, 0xed, 0xd6, 0x94, 0x32, 0x50, 0x0e, 0xbb, 0x34, 0x69, 0x33, 0x1a, 0x5f, 0x8a, 0x2b,
		0x67, 0xe2, 0xa8, 0xcb, 0x18, 0xa5, 0x54, 0x82, 0x89, 0x90, 0xe3, 0x24, 0xef, 0xc3, 0x92, 0x42,
		0x7d, 0x09, 0xc2, 0xcf, 0x96, 0x27, 0x23, 0xe5, 0xc8, 0xb1, 0xa8, 0xdc, 0xff, 0x46, 0xf4, 0xe0,
		0x3b, 0x95, 0x49, 0x18, 0xa8, 0x60, 0x1c, 0xf8, 0x51, 0xfa, 0xae, 0x32, 0xbb, 0xaa, 0xad, 0x38,
		0xa1, 0x70, 0xa2, 0xe4, 0xcf, 0x8a, 0x1f, 0xb9, 0x67, 0x15, 0x3f, 0x72, 0x66, 0xf9, 0xfe, 0xe9,
		0xbb, 0xf8, 0x4d, 0xf2, 0xb7, 0x4a, 0x30, 0x71, 0xfe, 0x3b, 0x15, 0x56, 0xfc, 0x56, 0x85, 0xce,
		0xf9, 0xb9, 0x37, 0xb6, 0x84, 0xbc, 0xf0, 0xa4, 0x10, 0x31, 0x28, 0xac, 0x28, 0xff, 0x3a, 0x8a,
		0xff, 0xa8, 0xc8, 0xc0, 0x15, 0x96, 0xa3, 0x54, 0xe8, 0x9d, 0x4d, 0x95, 0xa8, 0xcc, 0x47, 0xfe,
		0x47, 0x8b, 0x37, 0x95, 0xd9, 0xd0, 0xdc, 0x57, 0x38, 0x8c, 0x6b, 0x72, 0x10, 0xcd, 0xa9, 0xfc,
		0x2c, 0x83, 0x2f, 0xd2, 0x8a, 0xa6, 0x67, 0xca, 0xbf, 0xe6, 0x37, 0xe5, 0xf9, 0x9e, 0xfc, 0x18,
		0xf7, 0x9c, 0x87, 0xb8, 0x18, 0xf7, 0x5c, 0xa0, 0x46, 0x63, 0xdc, 0x73, 0x91, 0x07, 0x11, 0xe3,
		0x9e, 0xcb, 0x46, 0x81, 0x18, 0xf7, 0x0c, 0x24, 0xb2, 0x50, 0x06, 0x76, 0xe3, 0x9e, 0x67, 0x78,
		0x99, 0x6d, 0x69, 0xc0, 0x4c, 0x7c, 0x9e, 0xb5, 0x01, 0x35, 0xd4, 0x06, 0x00, 0x4c, 0xe9, 0x0c,
		0xaa, 0xb8, 0x83, 0x2b, 0x6d, 0x40, 0x96, 0x36, 0x60, 0x4b, 0x17, 0xd0, 0xc5, 0x0b, 0x7c, 0x31,
		0x03, 0x61, 0x6c, 0xc1, 0x58, 0x2a, 0xb8, 0x2f, 0xe4, 0x45, 0x42, 0xce, 0x32, 0xb5, 0x97, 0x69,
		0x0f, 0xfd, 0xd9, 0x3a, 0x98, 0xda, 0x18, 0x9e, 0x25, 0x9c, 0xec, 0xe1, 0x9a, 0x0e, 0xb0, 0x4d,
		0x2b, 0xf8, 0xa6, 0x0b, 0x8c, 0xd3, 0x0e, 0xce, 0x69, 0x07, 0xeb, 0x74, 0x83, 0x77, 0x3c, 0x61,
		0x1e, 0x53, 0xb8, 0x97, 0x2a, 0x0f, 0xdb, 0x92, 0xd0, 0x07, 0x5e, 0x63, 0xea, 0x49, 0x55, 0xdb,
		0xd6, 0x20, 0xbf, 0x76, 0x9b, 0xf1, 0x12, 0xfa, 0x8e, 0xbc, 0x10, 0xec, 0xcb, 0xad, 0x34, 0x48,
		0x7f, 0x3c, 0xf4, 0xa4, 0x16, 0x79, 0x9c, 0x46, 0x5a, 0xc5, 0xc7, 0x17, 0x9c, 0x3f, 0x58, 0xcf,
		0x87, 0xd0, 0x19, 0x2b, 0x2f, 0x90, 0x07, 0xde, 0x85, 0xc7, 0xb5, 0x9d, 0xfa, 0xe3, 0xb6, 0x58,
		0x5c, 0x38, 0xca, 0xbb, 0x16, 0x2c, 0xbb, 0x78, 0x6b, 0xe4, 0xd6, 0x57, 0x4d, 0x81, 0x73, 0xa3,
		0x9f, 0x29, 0xd8, 0x6e, 0x34, 0xb6, 0x1a, 0x30, 0x07, 0x30, 0x07, 0x88, 0x4d, 0xd6, 0x40, 0xfa,
		0x11, 0x4a, 0x09, 0xe0, 0xee, 0x9e, 0x30, 0x32, 0x8a, 0x73, 0x04, 0xcb, 0xb9, 0x6d, 0xe3, 0xfd,
		0xb8, 0x15, 0xdc, 0x7f, 0x49, 0x0b, 0x00, 0xf7, 0x4f, 0x6c, 0x31, 0xe0, 0xfe, 0x89, 0x2e, 0x08,
		0xdc, 0x3f, 0x10, 0x13, 0x50, 0xd3, 0x42, 0x79, 0xc0, 0xfd, 0x93, 0xc3, 0x50, 0xe0, 0xfe, 0xcb,
		0x7e, 0x81, 0xfb, 0xa7, 0xb5, 0x18, 0x70, 0xff, 0x5c, 0x6c, 0x31, 0xb8, 0x7f, 0x82, 0xa6, 0x00,
		0xdc, 0x3f, 0xcc, 0x01, 0xcc, 0xc1, 0xfa, 0xc6, 0x26, 0xfc, 0xa5, 0x07, 0xf7, 0x0f, 0x77, 0xf7,
		0x94, 0x91, 0xb9, 0x9e, 0x7b, 0x04, 0xe6, 0xe4, 0xff, 0x6c, 0x19, 0x60, 0xff, 0xcb, 0x10, 0x1f,
		0xec, 0x3f, 0xa1, 0x83, 0x00, 0xf6, 0x9f, 0xd2, 0xc1, 0x06, 0xfb, 0x4f, 0x7c, 0x41, 0x60, 0xff,
		0x81, 0x9b, 0x7e, 0x5a, 0x79, 0xf4, 0x61, 0xff, 0xcf, 0x3c, 0xe9, 0x84, 0xb7, 0x1a, 0xb0, 0xff,
		0xbb, 0x08, 0x75, 0x20, 0x31, 0x77, 0x03, 0xc3, 0xb5, 0xd3, 0x67, 0x2a, 0xbf, 0xce, 0x1d, 0x3f,
		0x57, 0x1b, 0x28, 0x72, 0x6a, 0x00, 0xca, 0xef, 0xec, 0xa2, 0x59, 0x18, 0xac, 0xca, 0x3a, 0x59,
		0x13, 0x4e, 0x1d, 0x2c, 0x23, 0x15, 0x4e, 0xc7, 0x4a, 0x2e, 0x06, 0x44, 0xcd, 0xb6, 0xb9, 0x3d,
		0xdf, 0x65, 0xfb, 0x68, 0xbe, 0xb7, 0x76, 0x2f, 0xd9, 0x5b, 0xbb, 0x19, 0x0a, 0xc7, 0xee, 0x44,
		0xee, 0x99, 0xdd, 0x89, 0x9c, 0x18, 0x37, 0xc7, 0x5f, 0xed, 0x5e, 0xb2, 0x8b, 0xf1, 0xbb, 0xe1,
		0x6c, 0x13, 0x5b, 0x77, 0x7b, 0x68, 0x0f, 0xfd, 0x6b, 0xbb, 0x1b, 0xb8, 0xa2, 0xb9, 0xd8, 0x3d,
		0x7b, 0x30, 0x3d, 0x8b, 0xbf, 0x79, 0x3c, 0xdb, 0xb3, 0xc1, 0x6c, 0xcb, 0xd0, 0x7b, 0x79, 0x0d,
		0x24, 0x24, 0x6e, 0x62, 0xcd, 0x8e, 0x17, 0xa9, 0x58, 0x4f, 0x59, 0x18, 0x56, 0xf3, 0xd0, 0x93,
		0x2d, 0x5f, 0x5c, 0x09, 0xc9, 0xe5, 0xba, 0xd4, 0x3c, 0x74, 0x6e, 0x96, 0x24, 0xae, 0xbd, 0xab,
		0xd7, 0xb7, 0x77, 0xea, 0xf5, 0xea, 0xce, 0xd6, 0x4e, 0x75, 0xb7, 0xd1, 0xa8, 0x6d, 0x73, 0x98,
		0x88, 0x6a, 0xf6, 0x42, 0x57, 0x84, 0xc2, 0xdd, 0xbf, 0x35, 0xf7, 0x0c, 0x39, 0xf5, 0x7d, 0x4e,
		0x22, 0x1f, 0x47, 0x22, 0x64, 0x71, 0x0f, 0x4d, 0xdd, 0x52, 0x30, 0x03, 0x61, 0x3a, 0x83, 0x2f,
		0x06, 0x68, 0xab, 0x3c, 0x94, 0x45, 0x1b, 0x57, 0xd1, 0x45, 0x2b, 0x34, 0x25, 0x23, 0x6a, 0x15,
		0xb9, 0x58, 0x43, 0x1d, 0xad, 0x20, 0xcd, 0x03, 0x4e, 0xef, 0xf8, 0xd0, 0x92, 0x88, 0xd8, 0x41,
		0x36, 0xc5, 0x8d, 0x0a, 0x1d, 0x6b, 0x1a, 0x6b, 0xf6, 0x99, 0x4f, 0xf3, 0x32, 0xcc, 0xfc, 0x72,
		0x29, 0x24, 0xd9, 0xa2, 0x0a, 0xc2, 0x46, 0x6f, 0x71, 0x39, 0xb8, 0xb1, 0x31, 0x63, 0xb9, 0x2b,
		0xb1, 0xfd, 0x31, 0x7e, 0x35, 0x5e, 0xcf, 0x2f, 0xca, 0x67, 0x96, 0x69, 0x6f, 0xd8, 0xb2, 0x93,
		0xf1, 0xe0, 0xcd, 0xe1, 0xb0, 0xdf, 0xde, 0x3f, 0x1e, 0xb6, 0x5e, 0x13, 0x06, 0x56, 0x5c, 0x52,
		0x4b, 0x96, 0x53, 0x47, 0x12, 0xfd, 0x25, 0x1e, 0xd6, 0x70, 0x4b, 0x0c, 0x59, 0x49, 0xfc, 0x78,
		0xbe, 0x82, 0xbf, 0x42, 0xf8, 0xfb, 0xfc, 0x2d, 0x3f, 0x10, 0xd1, 0x38, 0xf4, 0x26, 0x2c, 0x62,
		0xdf, 0xd4, 0xf8, 0xb5, 0xe5, 0xd8, 0x9f, 0xba, 0xc2, 0x50, 0x97, 0xc2, 0x58, 0x45, 0x52, 0xc6,
		0x38, 0x90, 0xca, 0xf1, 0xa4, 0x08, 0x8d, 0x40, 0xfa, 0xb7, 0x46, 0x7c, 0x4c, 0x93, 0xff, 0x96,
		0x68, 0x51, 0x70, 0x7e, 0x2a, 0xe3, 0xbf, 0x0c, 0x3b, 0x9f, 0x0c, 0x37, 0x59, 0xf8, 0x99, 0x88,
		0x0c, 0x27, 0xf9, 0x1d, 0x46, 0xfa, 0x3b, 0xa8, 0x1f, 0x6b, 0x46, 0x89, 0x78, 0xcb, 0x16, 0xd3,
		0x5d, 0xd2, 0x34, 0x06, 0x41, 0x3e, 0xc7, 0xac, 0xba, 0x15, 0x03, 0x9a, 0xf3, 0x21, 0x01, 0x15,
		0xa1, 0x13, 0x15, 0x41, 0x4e, 0xaa, 0x11, 0x22, 0x3c, 0xbe, 0x14, 0x8d, 0x46, 0xd4, 0x0c, 0x41,
		0x57, 0x55, 0x02, 0xff, 0x4c, 0xcb, 0xda, 0xd3, 0xb1, 0x56, 0x84, 0xec, 0x82, 0x19, 0x06, 0x53,
		0x25, 0x42, 0xcb, 0x71, 0xdd, 0x50, 0x44, 0x11, 0x39, 0xbb, 0x90, 0x82, 0xf7, 0x7b, 0x72, 0x12,
		0xb3, 0xac, 0x34, 0xe7, 0xf2, 0x91, 0x2d, 0xe7, 0xa2, 0x5c, 0xa6, 0xc5, 0xa2, 0xfc, 0x8a, 0x7a,
		0x34, 0xc7, 0xa6, 0x5c, 0x8a, 0x4d, 0xc0, 0xc6, 0xa5, 0xbc, 0x09, 0x77, 0x2c, 0xdf, 0xe4, 0xcd,
		0x88, 0xce, 0x95, 0x23, 0x3e, 0xcc, 0x97, 0xc5, 0xd0, 0x5e, 0xe2, 0xc3, 0x79, 0xc9, 0xd7, 0x76,
		0x73, 0xa8, 0xdd, 0x66, 0x55, 0x9b, 0xcd, 0xf1, 0x82, 0x8c, 0x45, 0x6d, 0x35, 0xef, 0x2b, 0x32,
		0x06, 0xb5, 0xd1, 0xc8, 0xbc, 0xd2, 0x01, 0x54, 0xa4, 0x02, 0x52, 0x25, 0x17, 0x9e, 0xb4, 0xee,
		0x34, 0x59, 0x86, 0xa7, 0x00, 0x07, 0xf1, 0xac, 0x7f, 0x36, 0x4d, 0x65, 0x38, 0x35, 0x8f, 0x61,
		0xd9, 0x24, 0x86, 0x5b, 0x33, 0x18, 0xb6, 0x4d, 0x5f, 0xd8, 0x36, 0x77, 0xe1, 0xda, 0xc4, 0x05,
		0x25, 0x77, 0x2f, 0x79, 0xe8, 0x6c, 0x9a, 0xaf, 0xa4, 0x56, 0xd7, 0x9b, 0x5c, 0xd7, 0x17, 0x77,
		0x11, 0x96, 0x0c, 0xac, 0xff, 0x05, 0x92, 0x43, 0xcb, 0xba, 0x94, 0xa2, 0x78, 0xc7, 0x40, 0xd6,
		0x23, 0x47, 0x29, 0x11, 0x4a, 0x36, 0x3d, 0xd4, 0xcd, 0x37, 0x6f, 0x4e, 0xaa, 0xd6, 0xee, 0xe8,
		0xef, 0x93, 0x9a, 0xb5, 0x3b, 0x9a, 0xbd, 0xad, 0x25, 0x5f, 0x66, 0xef, 0x37, 0x4f, 0xaa, 0x56,
		0x7d, 0xf1, 0xbe, 0x71, 0x52, 0xb5, 0x1a, 0xa3, 0xb7, 0xa7, 0xa7, 0x1b, 0x6f, 0xff, 0xda, 0xfa,
		0xfa, 0xfc, 0x1f, 0x7c, 0xf3, 0x8f, 0x93, 0xd3, 0xd3, 0xc9, 0x5f, 0xdd, 0xaf, 0xf1, 0x9f, 0x9d,
		0xaf, 0xa3, 0x7f, 0xbd, 0xfd, 0x37, 0x17, 0xdf, 0x14, 0x2f, 0xe4, 0xf4, 0x74, 0x63, 0xf4, 0x4f,
		0xfa, 0x66, 0x7d, 0x84, 0x74, 0x25, 0xc4, 0xef, 0xf9, 0x63, 0x1e, 0x54, 0x4e, 0xe5, 0x9e, 0x9e,
		0xb3, 0x9a, 0x3e, 0x40, 0xb9, 0xd5, 0x0f, 0xca, 0xa6, 0x58, 0x9d, 0x62, 0x94, 0x4d, 0xbd, 0xf4,
		0xa5, 0x45, 0xd9, 0x54, 0xbf, 0x77, 0x3c, 0x6c, 0xf5, 0xed, 0xe6, 0xc1, 0x41, 0xbf, 0x35, 0x18,
		0xa0, 0x6c, 0x2a, 0x5b, 0xf2, 0x05, 0x65, 0x53, 0x39, 0x53, 0x2d, 0xcf, 0x57, 0x70, 0x94, 0x4d,
		0xfd, 0xc4, 0x96, 0xb3, 0x2f, 0x9b, 0x9a, 0xc1, 0x28, 0x63, 0x0e, 0xa3, 0xbe, 0x59, 0x11, 0x72,
		0x2a, 0x83, 0x73, 0x63, 0x51, 0x11, 0xe2, 0x45, 0x46, 0x7f, 0xf6, 0xa3, 0x4d, 0x1e, 0x57, 0x2b,
		0xa8, 0x96, 0x82, 0xcd, 0xfc, 0x01, 0xbb, 0x99, 0xcf, 0xd9, 0x00, 0xeb, 0xa0, 0x13, 0xeb, 0x80,
		0x22, 0x29, 0x56, 0xf1, 0x1c, 0x8a, 0xa4, 0x8a, 0x62, 0x61, 0xd6, 0xb6, 0x48, 0x6a, 0x66, 0xee,
		0x49, 0x5a, 0x7b, 0x14, 0x49, 0x3d, 0xae, 0x15, 0x14, 0xb3, 0xa3, 0x49, 0x67, 0x45, 0xa3, 0x24,
		0xea, 0x99, 0x82, 0xa1, 0x24, 0x4a, 0xef, 0x90, 0x0d, 0x25, 0x51, 0xb9, 0x46, 0x62, 0x28, 0x89,
		0x62, 0x8a, 0xb7, 0xc9, 0x96, 0x44, 0x29, 0xca, 0x59, 0x49, 0xa9, 0x49, 0x4e, 0xa4, 0xa4, 0x5d,
		0x10, 0x55, 0x45, 0x41, 0x94, 0x76, 0x90, 0x80, 0x15, 0x34, 0xe0, 0x02, 0x11, 0xd8, 0x41, 0x05,
		0x76, 0x90, 0x81, 0x1b, 0x74, 0xa0, 0x09, 0x21, 0x88, 0x42, 0x89, 0xf4, 0xe1, 0x92, 0xcf, 0x27,
		0xbe, 0xcb, 0x23, 0x76, 0x85, 0x54, 0x9e, 0xba, 0x0d, 0xc5, 0x39, 0x65, 0xbb, 0xb9, 0x88, 0xe5,
		0x09, 0x8f, 0xe6, 0x30, 0xdb, 0xf3, 0xad, 0xdc, 0x77, 0x22, 0xc1, 0xe7, 0x72, 0xb5, 0x37, 0x38,
		0xfa, 0x60, 0x0f, 0x5b, 0x76, 0x67, 0xd0, 0xb4, 0x87, 0x9d, 0x4f, 0xf6, 0xf0, 0xcf, 0xa3, 0x16,
		0x75, 0x63, 0xff, 0xc9, 0xf1, 0xa7, 0x22, 0x62, 0x91, 0x97, 0xcd, 0xa4, 0xce, 0x68, 0xa1, 0x0d,
		0xb1, 0x22, 0xb4, 0xbb, 0xbf, 0x31, 0xa8, 0x77, 0xf9, 0x05, 0x8f, 0x3e, 0x97, 0x47, 0x6f, 0x77,
		0x7a, 0xef, 0x9b, 0x1d, 0x28, 0xc0, 0x5a, 0x2a, 0xc0, 0x6a, 0x6b, 0x6a, 0x28, 0xc1, 0x5a, 0x2a,
		0x41, 0xef, 0x68, 0xd8, 0x7e, 0xdf, 0xec, 0xcc, 0x94, 0xe1, 0xa8, 0xdf, 0x3b, 0x6a, 0xf5, 0x87,
		0x7f, 0x42, 0x17, 0xd6, 0x52, 0x17, 0x56, 0x93, 0x2e, 0xa1, 0x04, 0xeb, 0xac, 0x04, 0xed, 0xa3,
		0x4f, 0xdb, 0x8c, 0x34, 0x81, 0xb4, 0x84, 0x23, 0x10, 0x3d, 0xcc, 0xa5, 0xc2, 0x9d, 0xda, 0xb7,
		0xac, 0x07, 0x72, 0xd8, 0xf2, 0xcb, 0x61, 0x23, 0x58, 0x3a, 0x88, 0xa4, 0xad, 0xc7, 0x94, 0x6c,
		0x31, 0x8f, 0x5d, 0xf9, 0xd7, 0x74, 0x53, 0xb7, 0x96, 0x85, 0x44, 0x02, 0xd7, 0x8f, 0x88, 0x85,
		0x04, 0xae, 0x17, 0xa8, 0x1b, 0x12, 0xb8, 0x5e, 0x72, 0x20, 0x90, 0xc0, 0x95, 0x35, 0x4e, 0x41,
		0x02, 0x17, 0x7f, 0xb0, 0x89, 0x9e, 0xd6, 0x2f, 0xb3, 0xc9, 0xe8, 0x69, 0xad, 0x1f, 0x18, 0xe0,
		0x00, 0x0a, 0x58, 0x81, 0x03, 0x2e, 0x20, 0x81, 0x1d, 0x58, 0x60, 0x07, 0x1a, 0xb8, 0x81, 0x07,
		0x9a, 0x20, 0x82, 0x28, 0x98, 0x20, 0x0f, 0x2a, 0x52, 0x01, 0x7d, 0x21, 0x2f, 0x12, 0xfa, 0x8a,
		0x49, 0xa2, 0xd1, 0x5c, 0x5e, 0x74, 0xb4, 0x5e, 0x07, 0xd8, 0xc1, 0x09, 0x7e, 0xb0, 0x84, 0x21,
		0xdc, 0xe0, 0x08, 0x5b, 0x58, 0xc2, 0x16, 0x9e, 0x70, 0x85, 0x29, 0xb4, 0xe1, 0x0a, 0x71, 0xd8,
		0x92, 0x3e, 0x74, 0x7e, 0x1d, 0xad, 0xa7, 0x9e, 0x54, 0xb5, 0x6d, 0x46, 0x3d, 0xac, 0xb7, 0x19,
		0x88, 0xda, 0x77, 0xe4, 0x85, 0x60, 0xd3, 0xc0, 0x9a, 0x87, 0x0b, 0x4b, 0x36, 0xf6, 0xd0, 0x93,
		0x6c, 0x7c, 0x6e, 0x2a, 0x74, 0x92, 0x37, 0x4f, 0x1f, 0x34, 0x3e, 0x90, 0xfb, 0x43, 0xe8, 0x8c,
		0x95, 0x17, 0xc8, 0x03, 0xef, 0xc2, 0x53, 0x11, 0xc3, 0x05, 0x74, 0xc5, 0x85, 0xa3, 0xbc, 0xeb,
		0x78, 0xef, 0xcf, 0x1d, 0x3f, 0x12, 0x6c, 0xa4, 0xff, 0xfa, 0x0b, 0xa3, 0x23, 0xe9, 0xdc, 0xf0,
		0x3d, 0x92, 0xdb, 0x8d, 0xc6, 0x56, 0x03, 0xc7, 0x12, 0xc7, 0x52, 0x03, 0x6c, 0xcc, 0x47, 0x4a,
		0x8c, 0x57, 0xd0, 0xce, 0x2d, 0xd0, 0xee, 0x9a, 0xf1, 0x20, 0xea, 0x21, 0xdc, 0x3d, 0xe3, 0x7e,
		0xbc, 0x03, 0x4e, 0x34, 0x23, 0x41, 0xc1, 0x89, 0xe6, 0x2c, 0x34, 0x38, 0xd1, 0x82, 0x04, 0x07,
		0x27, 0x0a, 0x44, 0xc0, 0x26, 0x58, 0x04, 0x27, 0x9a, 0x3f, 0x46, 0x00, 0x27, 0x9a, 0xf5, 0x0b,
		0x9c, 0x68, 0xbe, 0x42, 0x83, 0x13, 0x2d, 0xcb, 0xc6, 0x81, 0x13, 0x2d, 0xe0, 0x48, 0x82, 0x13,
		0xc5, 0xb1, 0x5c, 0x93, 0x63, 0x09, 0x4e, 0x34, 0x93, 0x17, 0x38, 0x51, 0xed, 0xdc, 0x82, 0x79,
		0x3d, 0xb7, 0xa8, 0x4c, 0x48, 0xd1, 0x99, 0xb8, 0x60, 0x45, 0xb3, 0x10, 0x13, 0xac, 0x68, 0x8e,
		0x8a, 0x0a, 0x56, 0x34, 0xcf, 0x03, 0x06, 0x56, 0xb4, 0x60, 0xc1, 0xc1, 0x8a, 0xae, 0x5f, 0xb8,
		0xc8, 0x90, 0x15, 0x3d, 0xf3, 0xa4, 0x13, 0xde, 0x32, 0x62, 0x45, 0x77, 0x01, 0xa9, 0x35, 0x92,
		0x8c, 0x6a, 0xc5, 0x1a, 0xf1, 0x9e, 0x4b, 0xa9, 0x9c, 0x9c, 0x7b, 0x2f, 0x2d, 0x75, 0xcb, 0xa1,
		0xd8, 0x87, 0x89, 0xee, 0xc1, 0x41, 0x07, 0x0b, 0xc6, 0x47, 0x57, 0x97, 0x23, 0xbb, 0xb6, 0xf3,
		0x3e, 0x8f, 0x67, 0x7b, 0x30, 0xf4, 0xaf, 0xd1, 0x37, 0x8e, 0xb2, 0x24, 0x44, 0xec, 0x92, 0xd9,
		0xf1, 0x22, 0xd5, 0x54, 0x8a, 0x56, 0x05, 0xbc, 0x79, 0xe8, 0xc9, 0x96, 0x2f, 0xe2, 0x00, 0x95,
		0xd8, 0xc5, 0x8a, 0x79, 0xe8, 0xdc, 0x2c, 0x49, 0x56, 0x7b, 0x57, 0xaf, 0x6f, 0xef, 0xd4, 0xeb,
		0xd5, 0x9d, 0xad, 0x9d, 0xea, 0x6e, 0xa3, 0x51, 0xdb, 0xa6, 0x34, 0xb7, 0xc4, 0xec, 0x85, 0xae,
		0x08, 0x85, 0xbb, 0x7f, 0x6b, 0xee, 0x19, 0x72, 0xea, 0xfb, 0x14, 0x45, 0x3b, 0x8e, 0x44, 0x48,
		0xea, 0x06, 0x8a, 0xca, 0xc9, 0x24, 0x8a, 0x14, 0x38, 0x23, 0x04, 0x93, 0xd4, 0x9c, 0xe7, 0xfc,
		0xd1, 0x00, 0x0d, 0x08, 0x50, 0xbe, 0xc3, 0x2d, 0x57, 0x82, 0x92, 0x0d, 0x0a, 0x35, 0x43, 0xc2,
		0xd5, 0x80, 0x94, 0x7b, 0x98, 0xca, 0x53, 0xe1, 0x72, 0x3e, 0xb9, 0xa4, 0x43, 0x63, 0x8a, 0x1b,
		0x15, 0x3a, 0xd6, 0x34, 0xd6, 0xae, 0x33, 0xbf, 0x5c, 0xb6, 0xdc, 0xfc, 0x72, 0x29, 0x64, 0xe9,
		0xd9, 0xab, 0x04, 0x0c, 0xc6, 0xe2, 0x36, 0x60, 0x63, 0x63, 0xc6, 0xc4, 0x55, 0xe2, 0xb3, 0x6b,
		0xfc, 0x6a, 0xbc, 0x9e, 0xdf, 0x5c, 0xcd, 0x4e, 0xf5, 0xde, 0xb0, 0xdf, 0xfc, 0xf0, 0xa1, 0xfd,
		0xde, 0x6e, 0x75, 0x3f, 0xb6, 0xbb, 0xad, 0x56, 0xbf, 0xdd, 0xfd, 0xf8, 0x9a, 0x80, 0xc7, 0xa7,
		0x76, 0x1b, 0xbb, 0x7c, 0xdb, 0x9a, 0x68, 0x18, 0x11, 0xbc, 0x4b, 0xf5, 0x2e, 0x75, 0xe5, 0xae,
		0xf4, 0x67, 0x54, 0xf0, 0x15, 0x22, 0x1a, 0xc3, 0x3c, 0x10, 0xd1, 0x38, 0xf4, 0x26, 0xa4, 0xc2,
		0x99, 0xd4, 0xb0, 0xb4, 0xe5, 0xd8, 0x9f, 0xba, 0xc2, 0x50, 0x97, 0xc2, 0x78, 0xc4, 0xfd, 0x1b,
		0x9e, 0x3c, 0x0f, 0xc2, 0xab, 0x04, 0x42, 0x19, 0xf1, 0x91, 0x39, 0x95, 0xf1, 0xff, 0x9c, 0xa1,
		0x6f, 0xa3, 0x33, 0x68, 0x1a, 0x67, 0x22, 0xfe, 0x6f, 0x6e, 0xb2, 0xc6, 0x33, 0xe1, 0x1a, 0x5e,
		0x64, 0x38, 0xc6, 0x1c, 0x93, 0x1b, 0x4b, 0xa0, 0xfc, 0x54, 0x76, 0x06, 0x4d, 0x2a, 0x07, 0x8e,
		0x60, 0x96, 0xc8, 0xb2, 0x6d, 0x72, 0x97, 0x34, 0x86, 0x50, 0xdc, 0x46, 0x39, 0xe5, 0x63, 0xc5,
		0x54, 0x15, 0xac, 0xd4, 0x08, 0x35, 0x29, 0x84, 0x9a, 0xa5, 0x7d, 0xfa, 0x68, 0xad, 0xa2, 0x04,
		0x22, 0x21, 0x35, 0xc3, 0x50, 0xba, 0x44, 0x53, 0x9e, 0x3b, 0xe5, 0x56, 0x8e, 0x0d, 0x2c, 0xfe,
		0xcc, 0x97, 0x70, 0xea, 0x48, 0x4c, 0x58, 0x22, 0x34, 0x49, 0xa9, 0xe4, 0x61, 0x09, 0xa5, 0xe7,
		0x9a, 0x53, 0xc8, 0x21, 0x27, 0x95, 0x1b, 0x4e, 0x05, 0xcd, 0x93, 0xcb, 0xe5, 0x26, 0x07, 0xd8,
		0xa9, 0xe5, 0x5e, 0xaf, 0x17, 0xbf, 0x5b, 0x76, 0xb3, 0x7f, 0x22, 0x93, 0x82, 0x48, 0x4d, 0x04,
		0x22, 0x32, 0xf9, 0x87, 0x4c, 0x01, 0x15, 0xa5, 0x02, 0x29, 0x92, 0x05, 0x50, 0x94, 0x29, 0x75,
		0x52, 0x05, 0x4c, 0x3c, 0x48, 0x75, 0x42, 0x05, 0x48, 0xeb, 0x9d, 0x29, 0x40, 0x65, 0x12, 0x0e,
		0xb5, 0x89, 0x37, 0x34, 0x27, 0xdb, 0x10, 0xab, 0x4b, 0x26, 0x57, 0x7f, 0x4c, 0xb1, 0xce, 0x98,
		0x74, 0x3d, 0x31, 0xd5, 0xba, 0x61, 0xf2, 0xf5, 0xc1, 0xe4, 0xeb, 0x80, 0xa9, 0xd7, 0xfb, 0x22,
		0x27, 0x7f, 0xf9, 0x61, 0x91, 0xab, 0xd3, 0xa5, 0xdb, 0xa5, 0x90, 0x60, 0x37, 0x42, 0xa2, 0x5d,
		0x07, 0x09, 0xd6, 0x9a, 0x51, 0xee, 0x22, 0x48, 0xbd, 0x5b, 0x20, 0x9b, 0xf6, 0x63, 0xf4, 0xdb,
		0x8c, 0x11, 0xac, 0xf2, 0x26, 0xdd, 0xcd, 0x8f, 0x43, 0xd7, 0x3e, 0x1c, 0x0f, 0xcd, 0xb0, 0x19,
		0x3d, 0x69, 0x46, 0xc8, 0x78, 0xa2, 0x62, 0x3e, 0x69, 0x4d, 0x02, 0xa1, 0x38, 0xf1, 0x03, 0x5c,
		0xd1, 0x77, 0x04, 0x02, 0x57, 0xf4, 0x4c, 0xe1, 0xc0, 0x15, 0xfd, 0xa4, 0x80, 0xe0, 0x8a, 0x74,
		0x40, 0x00, 0xe0, 0x8a, 0xbe, 0x67, 0xb5, 0xc0, 0x15, 0xfd, 0x80, 0x48, 0xe0, 0x8a, 0x7e, 0x34,
		0x20, 0x06, 0x57, 0x84, 0x60, 0x18, 0x66, 0xff, 0xd1, 0xa3, 0x01, 0xae, 0x08, 0xc7, 0x03, 0xd8,
		0x8c, 0xb2, 0x34, 0xe0, 0x8a, 0xc8, 0x98, 0x4f, 0x62, 0x13, 0x12, 0x48, 0x4e, 0x42, 0x00, 0x5b,
		0xf4, 0x1d, 0x81, 0xc0, 0x16, 0x3d, 0x53, 0x38, 0xb0, 0x45, 0x3f, 0x29, 0x20, 0xd8, 0x22, 0x1d,
		0x30, 0x00, 0xd8, 0xa2, 0xef, 0x59, 0x2d, 0x72, 0x9d, 0xfe, 0x69, 0x75, 0xf4, 0x47, 0x0f, 0x3d,
		0xf4, 0xd0, 0x5b, 0x96, 0x87, 0x78, 0xe1, 0x3f, 0xb1, 0xe6, 0xf9, 0x68, 0x9e, 0xb7, 0x56, 0xa7,
		0x84, 0xd1, 0xe9, 0xd0, 0xa7, 0x1d, 0x46, 0xd9, 0x8d, 0xe7, 0x4b, 0x68, 0x83, 0xf1, 0x4a, 0xe3,
		0x33, 0x4d, 0xa1, 0x11, 0x66, 0xb9, 0x0d, 0x30, 0x09, 0x34, 0x96, 0xd8, 0xd8, 0xa8, 0x7c, 0xa7,
		0xe1, 0x60, 0x6f, 0x70, 0xf4, 0xe1, 0xd3, 0xa6, 0xdd, 0x69, 0x77, 0x7f, 0xb3, 0x07, 0xef, 0x7b,
		0x47, 0x2d, 0xbb, 0x77, 0xd4, 0xfc, 0xbf, 0xe3, 0x96, 0xdd, 0x19, 0x34, 0x5f, 0x9f, 0xca, 0x20,
		0x34, 0x7e, 0xf8, 0x77, 0x34, 0xfb, 0xad, 0xe6, 0x8b, 0x7f, 0xc7, 0xe0, 0xe1, 0x6f, 0x40, 0x53,
		0x0c, 0x6a, 0x2d, 0x37, 0x69, 0xb7, 0xc4, 0xd0, 0x43, 0xe9, 0x5f, 0xad, 0x61, 0xa4, 0x44, 0xaa,
		0xc9, 0xe7, 0xa3, 0xcd, 0x3d, 0x97, 0xba, 0x1b, 0xce, 0xd0, 0xcf, 0x34, 0x14, 0x49, 0xf3, 0x43,
		0x23, 0x79, 0xc2, 0xc1, 0xb9, 0x21, 0xa4, 0x0a, 0x6f, 0x4f, 0xe5, 0x83, 0xde, 0x87, 0xd2, 0x70,
		0xa4, 0x11, 0xa4, 0x3f, 0x5e, 0xf6, 0x09, 0x26, 0xc4, 0xa7, 0xd2, 0xed, 0xd9, 0x49, 0x92, 0x3c,
		0x7d, 0xb2, 0x47, 0x67, 0x76, 0xba, 0x89, 0x58, 0x5b, 0xeb, 0x4f, 0x1d, 0x69, 0x1d, 0x77, 0x94,
		0xcc, 0x21, 0x10, 0xe7, 0x0e, 0x4a, 0xb0, 0xaa, 0xd9, 0xf2, 0x04, 0xc5, 0x1a, 0xa7, 0xe2, 0x0e,
		0x67, 0x81, 0xc7, 0xc4, 0x0c, 0x83, 0xa9, 0x12, 0x61, 0xa2, 0x0e, 0x45, 0x1f, 0x91, 0x14, 0x55,
		0x2d, 0xc9, 0x50, 0xb0, 0x81, 0x28, 0xa7, 0x59, 0x58, 0x69, 0x39, 0x08, 0x65, 0xe6, 0x1a, 0x90,
		0xc8, 0x29, 0x28, 0x1b, 0xeb, 0x92, 0xc9, 0x11, 0x20, 0x03, 0x67, 0xa9, 0xdc, 0xf9, 0xeb, 0x4d,
		0xc0, 0x96, 0xd5, 0x8c, 0xab, 0xe4, 0x0e, 0x95, 0x24, 0x3a, 0x53, 0xa2, 0xbd, 0x32, 0xda, 0x2b,
		0x93, 0x24, 0x5c, 0xd0, 0x5e, 0x99, 0x8b, 0x73, 0x2a, 0x99, 0x95, 0x58, 0xd7, 0xf6, 0xca, 0xbe,
		0x27, 0x3f, 0x5b, 0xae, 0xa3, 0x1c, 0x3a, 0x04, 0xf4, 0x9d, 0x48, 0x34, 0xda, 0x2c, 0x57, 0xd1,
		0x66, 0x99, 0x8c, 0x93, 0x23, 0xe9, 0xec, 0xa8, 0x39, 0x3d, 0xb2, 0xce, 0x8f, 0xac, 0x13, 0xa4,
		0xea, 0x0c, 0xcb, 0x75, 0x8a, 0x25, 0x3b, 0xc7, 0xf4, 0xa1, 0x90, 0xc9, 0xc2, 0x5e, 0x1a, 0x68,
		0x43, 0xe4, 0xc6, 0x6e, 0x11, 0x77, 0xed, 0x12, 0x90, 0x65, 0xfe, 0x98, 0x68, 0x94, 0xe6, 0x13,
		0x4c, 0xd9, 0x77, 0x03, 0xa5, 0x84, 0x6b, 0xfd, 0x77, 0xea, 0xb8, 0x04, 0xf3, 0xf6, 0x6b, 0xef,
		0x08, 0xc9, 0x74, 0xe4, 0x28, 0x25, 0x42, 0x49, 0xae, 0xd1, 0x83, 0xf9, 0xe6, 0xcd, 0x49, 0xd5,
		0xda, 0x1d, 0xfd, 0x7d, 0x52, 0xb3, 0x76, 0x47, 0xb3, 0xb7, 0xb5, 0xe4, 0xcb, 0xec, 0xfd, 0xe6,
		0x49, 0xd5, 0xaa, 0x2f, 0xde, 0x37, 0x4e, 0xaa, 0x56, 0x63, 0xf4, 0xf6, 0xf4, 0x74, 0xe3, 0xed,
		0x5f, 0x5b, 0x5f, 0x9f, 0xff, 0x83, 0x26, 0xca, 0x71, 0x29, 0xb9, 0x21, 0xc2, 0x96, 0x65, 0xea,
		0x49, 0xb5, 0xb5, 0x49, 0xd0, 0xa8, 0xec, 0xa0, 0x75, 0x0c, 0x1b, 0x6d, 0x4a, 0x37, 0x0a, 0xad,
		0x63, 0x5e, 0x20, 0x1f, 0x7a, 0x63, 0x68, 0x66, 0xee, 0x57, 0x8f, 0x06, 0x87, 0xd6, 0x31, 0xf5,
		0xcd, 0xdd, 0xfa, 0xee, 0xf6, 0xce, 0xe6, 0x2e, 0xfa, 0xc7, 0x68, 0x7f, 0x46, 0xd0, 0x3f, 0x86,
		0x32, 0x60, 0x7d, 0xb5, 0xde, 0xfb, 0xf0, 0x75, 0x2d, 0x93, 0xfa, 0x93, 0xeb, 0x0b, 0xcf, 0x25,
		0x76, 0x9f, 0xe2, 0xb9, 0xb8, 0x4d, 0x31, 0x70, 0x9b, 0xf2, 0x1d, 0x55, 0xc1, 0x6d, 0xca, 0xb7,
		0x14, 0x18, 0xb7, 0x29, 0xcf, 0x14, 0x0c, 0xb7, 0x29, 0xf4, 0xe2, 0x1a, 0x82, 0xb7, 0x29, 0xb4,
		0x88, 0x71, 0x4a, 0x84, 0x38, 0x39, 0x22, 0x7c, 0xcd, 0x08, 0x70, 0xe0, 0xe7, 0xe2, 0x35, 0xec,
		0x4a, 0xa8, 0xd0, 0x1b, 0xd3, 0x81, 0xcf, 0x73, 0x79, 0x80, 0x9e, 0x81, 0x9e, 0x81, 0x9e, 0x81,
		0x9e, 0x81, 0x9e, 0x81, 0x9e, 0x69, 0x59, 0x9d, 0x68, 0x72, 0x6e, 0x91, 0x70, 0x52, 0x06, 0xad,
		0xa1, 0x21, 0xc4, 0x6e, 0x7c, 0x09, 0xe5, 0x0d, 0x50, 0xbc, 0xe1, 0xa5, 0x7a, 0xb3, 0x4b, 0xfe,
		0xb6, 0x8a, 0xee, 0x2d, 0x15, 0xa1, 0x1b, 0x5c, 0x92, 0x37, 0xb7, 0x94, 0x87, 0x7d, 0x40, 0xed,
		0x99, 0x02, 0x24, 0x3a, 0x52, 0x80, 0x3c, 0x29, 0xfe, 0x50, 0xc8, 0xe9, 0xd5, 0x99, 0x08, 0x2d,
		0xdf, 0x93, 0x9f, 0x23, 0x3a, 0x14, 0xca, 0x8a, 0x54, 0x20, 0x52, 0x40, 0xa4, 0x80, 0x48, 0x01,
		0x91, 0x02, 0x22, 0x05, 0x44, 0x0a, 0xad, 0xa2, 0x2e, 0x2a, 0x03, 0x58, 0xc1, 0xa1, 0x80, 0x43,
		0x01, 0x87, 0x82, 0x60, 0x12, 0x1c, 0x0a, 0x38, 0x14, 0x70, 0x28, 0xe0, 0x50, 0xc0, 0xa1, 0x94,
		0xc1, 0xa1, 0xa8, 0x20, 0x9a, 0x5f, 0xab, 0xd1, 0x63, 0x52, 0x96, 0x65, 0x03, 0x9f, 0x02, 0x3e,
		0x05, 0x7c, 0x0a, 0xf8, 0x14, 0xf0, 0x29, 0xe0, 0x53, 0xc0, 0xa7, 0x80, 0x4f, 0x01, 0x9f, 0x02,
		0x3e, 0x05, 0x81, 0x25, 0xf8, 0x14, 0xf0, 0x29, 0x50, 0x7b, 0xf0, 0x29, 0xe0, 0x53, 0x4a, 0xe7,
		0x53, 0x14, 0x05, 0x64, 0x9a, 0xa2, 0xd2, 0x44, 0x1a, 0x70, 0x26, 0xe0, 0x4c, 0xc0, 0x99, 0x80,
		0x33, 0x01, 0x67, 0x02, 0xce, 0x84, 0x94, 0xd5, 0xf1, 0x5c, 0x21, 0x95, 0xa7, 0x6e, 0x43, 0x71,
		0x4e, 0xa9, 0x14, 0x9e, 0x40, 0x20, 0x60, 0xb6, 0xe7, 0x5b, 0xb3, 0xef, 0x44, 0x84, 0x2c, 0xe1,
		0xe2, 0xc1, 0xf5, 0x7b, 0xc7, 0xc3, 0x56, 0xdf, 0xee, 0x0c, 0x9a, 0xf6, 0xf0, 0xcf, 0xa3, 0xd6,
		0x80, 0x8a, 0x41, 0x4c, 0xc2, 0xb9, 0x88, 0x54, 0xdb, 0x4b, 0x62, 0x01, 0xef, 0x23, 0x4f, 0xf0,
		0x68, 0xf3, 0xc8, 0x04, 0x63, 0xc1, 0xf1, 0xc9, 0x0d, 0x86, 0xc7, 0xfb, 0x76, 0xb7, 0x35, 0xfc,
		0xbd, 0xd7, 0xff, 0x0d, 0x8f, 0x90, 0xe5, 0x23, 0x1c, 0xf6, 0x9b, 0xdd, 0x41, 0x7b, 0x88, 0xa7,
		0xc8, 0xfa, 0x29, 0x7e, 0x6a, 0xf7, 0x87, 0xc7, 0xcd, 0x8e, 0xdd, 0x69, 0x77, 0x29, 0x3d, 0x42,
		0x12, 0x92, 0x8c, 0xd6, 0x1d, 0xf6, 0x63, 0xb8, 0x58, 0x31, 0x31, 0x67, 0xb9, 0xa3, 0xc1, 0x53,
		0x39, 0x28, 0x8e, 0x08, 0xbf, 0x9b, 0xc7, 0x5c, 0x99, 0x0d, 0xce, 0x5c, 0x93, 0x61, 0xf8, 0x25,
		0xe8, 0x62, 0x42, 0xb9, 0x46, 0x56, 0x70, 0x6e, 0x45, 0x22, 0xbc, 0xf6, 0xc6, 0x04, 0x66, 0xa5,
		0x3e, 0x90, 0x08, 0x63, 0x53, 0x4b, 0x11, 0x00, 0x63, 0x53, 0xef, 0x09, 0x83, 0xb1, 0xa9, 0x4f,
		0x08, 0x84, 0xb1, 0xa9, 0x40, 0x36, 0x77, 0x9b, 0x5f, 0xfa, 0xd8, 0xd4, 0xd8, 0x81, 0x50, 0xf0,
		0x68, 0x8f, 0x7a, 0xb6, 0xf2, 0x1d, 0x1b, 0x11, 0x07, 0x47, 0xc6, 0xd1, 0x51, 0x72, 0x78, 0x24,
		0x1d, 0x1f, 0x35, 0x07, 0x48, 0xd6, 0x11, 0x92, 0x75, 0x88, 0x54, 0x1d, 0x23, 0x11, 0xca, 0xa3,
		0x64, 0xbb, 0x53, 0xb6, 0xc3, 0xbc, 0xe3, 0x02, 0x92, 0x60, 0x9b, 0xdc, 0xf5, 0xdd, 0x4c, 0x2c,
		0x22, 0x27, 0x88, 0x86, 0xd3, 0x24, 0xe7, 0x3c, 0x29, 0x3a, 0x51, 0xd2, 0xce, 0x94, 0xaa, 0x53,
		0x25, 0xef, 0x5c, 0xc9, 0x3b, 0x59, 0xea, 0xce, 0x96, 0x86, 0xd3, 0x25, 0xe2, 0x7c, 0xc9, 0x39,
		0xe1, 0x54, 0x20, 0x22, 0xad, 0xf6, 0x9f, 0x34, 0xa6, 0x64, 0xba, 0x1a, 0x3f, 0xe6, 0x9e, 0xa9,
		0xd5, 0x1e, 0x50, 0x73, 0xd3, 0x94, 0xdd, 0x35, 0x0b, 0xb7, 0x4d, 0xdd, 0x7d, 0xb3, 0x71, 0xe3,
		0x6c, 0xdc, 0x39, 0x17, 0xb7, 0x4e, 0xcb, 0xbd, 0x13, 0x73, 0xf3, 0xe9, 0x43, 0x24, 0x93, 0x5d,
		0xfc, 0xb4, 0xd5, 0x23, 0x35, 0x3a, 0xe0, 0x29, 0x47, 0xbb, 0x4d, 0x50, 0x34, 0x9a, 0xc3, 0xe4,
		0x17, 0x2f, 0x9a, 0x7e, 0xc2, 0xa0, 0x3e, 0x5c, 0x3e, 0x15, 0x92, 0xf8, 0x90, 0xf9, 0x54, 0x4e,
		0x2e, 0x83, 0xb4, 0xef, 0x0c, 0x0f, 0xf5, 0x81, 0xda, 0x44, 0x7d, 0xc9, 0xea, 0x11, 0x22, 0x3c,
		0x84, 0xfe, 0xc1, 0x11, 0x22, 0x58, 0x46, 0x8e, 0x63, 0xb4, 0xa6, 0x00, 0x91, 0xae, 0x54, 0x23,
		0xcc, 0xf1, 0xa7, 0x6e, 0x86, 0x4d, 0x15, 0x44, 0x74, 0x99, 0xb2, 0x58, 0x38, 0xd0, 0x64, 0x3f,
		0x22, 0x16, 0x68, 0xb2, 0x97, 0x04, 0x8c, 0xa0, 0xc9, 0x5e, 0x70, 0x20, 0x40, 0x93, 0x65, 0x2c,
		0x28, 0x68, 0x32, 0xfe, 0xa1, 0x0d, 0x03, 0x9a, 0x6c, 0xea, 0x49, 0xf5, 0x8e, 0x30, 0x41, 0xd6,
		0x00, 0x41, 0xf6, 0xcc, 0x17, 0x08, 0xb2, 0x6c, 0xa2, 0x7b, 0x10, 0x64, 0x6b, 0x1b, 0xd9, 0x83,
		0x20, 0xcb, 0xe6, 0x08, 0x6d, 0x36, 0x40, 0x8f, 0xad, 0xed, 0x21, 0x02, 0x3d, 0xf6, 0x43, 0x2f,
		0xd0, 0x63, 0x94, 0x25, 0xa1, 0x92, 0x5e, 0x47, 0xa4, 0xdc, 0xfd, 0x81, 0x5c, 0xc4, 0xcb, 0xdf,
		0xef, 0xd7, 0x42, 0x57, 0xee, 0x95, 0x90, 0x95, 0x59, 0x1f, 0x4f, 0x4f, 0xe1, 0x09, 0x28, 0x3b,
		0x29, 0x26, 0x9a, 0x20, 0x03, 0x4d, 0x8c, 0x79, 0x46, 0xfd, 0xc4, 0x73, 0xd4, 0x08, 0xf5, 0x13,
		0xcf, 0x51, 0x74, 0xd4, 0x4f, 0xbc, 0x14, 0x33, 0xa0, 0x7e, 0x82, 0x0f, 0xc0, 0x23, 0xc7, 0x14,
		0xa7, 0x56, 0xcb, 0x17, 0xce, 0x39, 0x8d, 0x96, 0xad, 0xf7, 0x9d, 0x60, 0x6d, 0x87, 0x90, 0x4c,
		0x47, 0x73, 0x0c, 0xbc, 0xb1, 0x31, 0x03, 0x95, 0x95, 0x18, 0x34, 0x00, 0x58, 0x12, 0x90, 0xa0,
		0xec, 0xfa, 0xe4, 0xdf, 0xc4, 0x2d, 0x0d, 0x10, 0x69, 0x76, 0xbc, 0x48, 0x35, 0x95, 0x22, 0x52,
		0x2e, 0x7d, 0xe8, 0xc9, 0x96, 0x2f, 0x62, 0x0f, 0x45, 0x84, 0x78, 0x33, 0x0f, 0x9d, 0x9b, 0x25,
		0x89, 0x6a, 0xef, 0xea, 0xf5, 0xed, 0x9d, 0x7a, 0xbd, 0xba, 0xb3, 0xb5, 0x53, 0xdd, 0x6d, 0x34,
		0x6a, 0xdb, 0x24, 0x7a, 0x45, 0xf7, 0x42, 0x57, 0x84, 0xc2, 0xdd, 0x8f, 0x95, 0x4a, 0x4e, 0x7d,
		0x9f, 0x92, 0x48, 0xc7, 0x91, 0x08, 0x49, 0x30, 0x93, 0x65, 0x9f, 0x79, 0x62, 0x7c, 0x0d, 0x77,
		0x9e, 0x86, 0x42, 0xf7, 0x96, 0x48, 0x85, 0xd3, 0xb1, 0x92, 0x73, 0x54, 0xd4, 0x9d, 0xed, 0x49,
		0x7b, 0xbe, 0x25, 0xf6, 0xd1, 0x7c, 0x23, 0xec, 0x5e, 0xb2, 0x11, 0x76, 0x33, 0x14, 0x8e, 0xdd,
		0x89, 0xdc, 0x33, 0xbb, 0x13, 0x39, 0x31, 0xb8, 0x8b, 0xbf, 0xda, 0xfd, 0x64, 0xc9, 0xf1, 0xbb,
		0xf8, 0x5b, 0xbd, 0xf3, 0xc1, 0x7c, 0x79, 0x68, 0x59, 0xaa, 0xbf, 0x6d, 0x40, 0xcb, 0xd2, 0x9f,
		0xb3, 0x05, 0x6b, 0xd3, 0xbd, 0xf4, 0x95, 0xc6, 0x87, 0xc0, 0x14, 0x37, 0x2a, 0x74, 0xac, 0x69,
		0xac, 0x35, 0x67, 0x7e, 0x39, 0x91, 0xae, 0xf9, 0xe5, 0x52, 0xc8, 0xd2, 0xd2, 0x76, 0x08, 0x74,
		0x01, 0xdd, 0xd8, 0xa8, 0xdc, 0x45, 0xa7, 0xb7, 0x13, 0x61, 0xfc, 0x6a, 0xbc, 0x9e, 0x13, 0x43,
		0xb3, 0x83, 0xb9, 0x77, 0xd7, 0xe4, 0xfc, 0x35, 0x3a, 0x85, 0xae, 0x70, 0x90, 0x89, 0xee, 0xa0,
		0x4f, 0xe8, 0x3d, 0x8f, 0xb6, 0xc4, 0x30, 0x3e, 0x4f, 0xb9, 0xd6, 0x72, 0x58, 0xe0, 0x81, 0x88,
		0xc6, 0xa1, 0x37, 0x21, 0x11, 0x15, 0xa4, 0x46, 0xa1, 0x2d, 0xc7, 0xfe, 0xd4, 0x15, 0x86, 0xba,
		0x14, 0xc6, 0xcc, 0x0b, 0x1b, 0x9d, 0x41, 0xd3, 0xb8, 0xf4, 0x44, 0xe8, 0x84, 0xe3, 0xcb, 0x5b,
		0x23, 0x0a, 0x7c, 0xe1, 0xdf, 0x1a, 0xf1, 0x01, 0x38, 0x95, 0xea, 0xd2, 0x51, 0xc9, 0xbf, 0x27,
		0x8f, 0xd8, 0x8b, 0x8c, 0x33, 0xe1, 0xc9, 0x0b, 0xc3, 0x4d, 0x56, 0x76, 0x26, 0xdc, 0xb2, 0x8f,
		0x08, 0xa1, 0xdb, 0x8c, 0x65, 0xeb, 0xe1, 0x2e, 0x3d, 0x79, 0x02, 0xa1, 0x0c, 0xc5, 0xab, 0x8b,
		0x15, 0x63, 0x92, 0xb1, 0x52, 0x22, 0xbc, 0xd2, 0xfa, 0x53, 0x47, 0x5a, 0x23, 0xe7, 0x92, 0xc3,
		0x46, 0xe2, 0xe1, 0x62, 0x09, 0xe6, 0x34, 0x5b, 0x26, 0xa8, 0x58, 0xe3, 0x54, 0xdc, 0xe1, 0x2c,
		0xf0, 0x98, 0x94, 0xd4, 0x78, 0xb5, 0xd4, 0x06, 0xab, 0x25, 0x35, 0x52, 0x2d, 0x2d, 0xe1, 0xa7,
		0xcc, 0xc4, 0x1e, 0x12, 0x09, 0x3c, 0x65, 0x43, 0x5b, 0x32, 0x09, 0x39, 0x64, 0xd0, 0x2b, 0x95,
		0x04, 0x1b, 0xbd, 0x89, 0xc3, 0xb2, 0x1a, 0x8b, 0x9a, 0x8e, 0x7b, 0x2d, 0x42, 0xe5, 0x45, 0x9e,
		0xbc, 0xb0, 0x66, 0x78, 0xa3, 0xfc, 0xd9, 0x4e, 0x8f, 0xc8, 0x54, 0xee, 0x74, 0xa7, 0x2a, 0xa6,
		0x3b, 0x61, 0xba, 0x93, 0x81, 0xe9, 0x4e, 0x8c, 0xc8, 0x16, 0x4c, 0x77, 0x32, 0x4a, 0xbc, 0x04,
		0x2e, 0x3d, 0xcf, 0x33, 0xb5, 0x1a, 0x6e, 0xa0, 0x94, 0x70, 0xad, 0xff, 0x4e, 0x9d, 0x32, 0x59,
		0xdb, 0x34, 0x8e, 0x79, 0x57, 0xa2, 0x0c, 0x47, 0x8e, 0x52, 0x22, 0x94, 0xa5, 0x97, 0xf4, 0x9b,
		0x6f, 0xde, 0x9c, 0x54, 0xad, 0xdd, 0xd1, 0xdf, 0x27, 0x35, 0x6b, 0x77, 0x34, 0x7b, 0x5b, 0x4b,
		0xbe, 0xcc, 0xde, 0x6f, 0x9e, 0x54, 0xad, 0xfa, 0xe2, 0x7d, 0xe3, 0xa4, 0x6a, 0x35, 0x46, 0x6f,
		0x4f, 0x4f, 0x37, 0xde, 0xfe, 0xb5, 0xf5, 0xf5, 0xf9, 0x3f, 0x58, 0xde, 0x89, 0x1f, 0x61, 0x1e,
		0x69, 0x7e, 0xa8, 0xf5, 0x82, 0xc0, 0x08, 0xd2, 0x58, 0x08, 0xe0, 0x52, 0xe0, 0x52, 0xe0, 0x52,
		0xe0, 0x52, 0xe0, 0x52, 0xe0, 0xd2, 0x67, 0x59, 0x8d, 0xa9, 0x27, 0x55, 0x6d, 0x9b, 0x00, 0x24,
		0x2d, 0xb1, 0x37, 0x3b, 0x91, 0x16, 0x53, 0x34, 0x8a, 0x44, 0xe8, 0xd4, 0x83, 0x13, 0x6b, 0x0d,
		0x45, 0xb6, 0x7b, 0x0d, 0xbd, 0x2e, 0x35, 0x5f, 0x69, 0x54, 0x17, 0xd1, 0x53, 0x65, 0x42, 0x3d,
		0xcc, 0xa1, 0xce, 0xc4, 0xb1, 0x49, 0xf9, 0x9f, 0x0e, 0xe6, 0x20, 0x3f, 0x25, 0x1f, 0x5f, 0x8a,
		0xf1, 0xe7, 0x68, 0x7a, 0x55, 0x3e, 0x7d, 0x90, 0x4a, 0x02, 0x0e, 0x01, 0x1c, 0x02, 0x38, 0x04,
		0x70, 0x08, 0xe0, 0x10, 0xc0, 0x21, 0x80, 0x43, 0x00, 0x87, 0x00, 0x0e, 0x01, 0x41, 0x17, 0x38,
		0x04, 0x70, 0x08, 0x50, 0x67, 0x70, 0x08, 0xe0, 0x10, 0x08, 0x72, 0x08, 0xbe, 0x27, 0x3f, 0x5b,
		0x49, 0x39, 0x84, 0xe5, 0xb9, 0xe5, 0x13, 0x09, 0xab, 0xe2, 0x80, 0x4d, 0x00, 0x9b, 0x00, 0x36,
		0x01, 0x6c, 0x02, 0xd8, 0x04, 0xb0, 0x09, 0xcf, 0xb2, 0x1a, 0xc8, 0x94, 0xbd, 0x33, 0xe6, 0xc8,
		0x94, 0x05, 0x56, 0xd5, 0x03, 0xab, 0x46, 0xe2, 0xbf, 0x53, 0x21, 0xc7, 0xc2, 0x92, 0xd3, 0xab,
		0x33, 0x0a, 0xc5, 0x5d, 0xf7, 0x05, 0x02, 0x5e, 0x05, 0x5e, 0x05, 0x5e, 0x05, 0x5e, 0x05, 0x5e,
		0x05, 0x5e, 0x7d, 0x96, 0xd5, 0xf0, 0xa4, 0xda, 0xda, 0x24, 0x80, 0x54, 0xb7, 0x70, 0xf9, 0x85,
		0xcb, 0xaf, 0x15, 0x61, 0xd2, 0xc1, 0x90, 0xb5, 0xfa, 0x4e, 0xfd, 0xdd, 0xd6, 0x76, 0xfd, 0x1d,
		0xae, 0x0d, 0xbe, 0x73, 0xa6, 0xef, 0xae, 0x0d, 0x62, 0x07, 0x83, 0x4b, 0x30, 0xaa, 0x97, 0x60,
		0xa9, 0x4a, 0xef, 0x40, 0xa5, 0x7f, 0x58, 0xa5, 0x71, 0x13, 0x86, 0x9b, 0x30, 0xdd, 0x3e, 0x11,
		0xfd, 0x01, 0xcb, 0xef, 0x0f, 0x58, 0xc2, 0x58, 0x4f, 0x4d, 0x3b, 0xeb, 0x4d, 0xaf, 0xae, 0x9c,
		0xf0, 0x36, 0xe9, 0xb4, 0x58, 0x5e, 0x7f, 0xbd, 0x25, 0x21, 0xd0, 0x65, 0x2f, 0xd7, 0x0f, 0x46,
		0x97, 0x3d, 0x74, 0xd9, 0x9b, 0x09, 0x82, 0x2e, 0x7b, 0xeb, 0x04, 0x22, 0x4a, 0xeb, 0xb2, 0x57,
		0x4e, 0xeb, 0xd6, 0x87, 0x2e, 0xa6, 0x84, 0x16, 0xae, 0x25, 0x3b, 0x99, 0xd2, 0x9d, 0x0d, 0x05,
		0xa7, 0x43, 0xca, 0xf9, 0x50, 0x71, 0x42, 0xe4, 0x9c, 0x11, 0x39, 0xa7, 0x44, 0xcd, 0x39, 0x95,
		0xcb, 0x25, 0x94, 0x75, 0xe3, 0x52, 0x96, 0xd3, 0x4a, 0x05, 0xb8, 0x12, 0x2a, 0xf4, 0xc6, 0x74,
		0x66, 0xb9, 0xcc, 0xe5, 0x29, 0x7b, 0xde, 0x6d, 0xa9, 0x09, 0x04, 0x64, 0xdc, 0x1a, 0x25, 0xf7,
		0x46, 0xd2, 0xcd, 0x51, 0x73, 0x77, 0x64, 0xdd, 0x1e, 0x59, 0xf7, 0x47, 0xd5, 0x0d, 0x96, 0xeb,
		0x0e, 0x4b, 0x76, 0x8b, 0xe9, 0x43, 0x29, 0x3d, 0x21, 0xe1, 0xa1, 0xd5, 0x89, 0x26, 0xe7, 0x16,
		0x09, 0x27, 0x65, 0xd0, 0xa8, 0xd1, 0x4d, 0x45, 0xa1, 0x91, 0xae, 0xb0, 0x78, 0xd1, 0xb0, 0xc3,
		0x06, 0xb5, 0xf4, 0x85, 0x54, 0x28, 0x62, 0x35, 0xbc, 0xa9, 0x5c, 0x54, 0xaf, 0x7c, 0xef, 0x0c,
		0x01, 0xb5, 0xab, 0x5f, 0x22, 0xb6, 0x7a, 0x55, 0xe5, 0x09, 0xa5, 0x37, 0x3c, 0x50, 0x79, 0x42,
		0xb5, 0xbe, 0x50, 0x7b, 0xe6, 0x00, 0x89, 0x8e, 0x14, 0xa3, 0x75, 0x9d, 0x10, 0x59, 0x22, 0xc9,
		0xb9, 0xb8, 0xfa, 0xbf, 0x72, 0xa2, 0xcf, 0x74, 0x28, 0x94, 0x15, 0xa9, 0x40, 0xa4, 0x80, 0x48,
		0x01, 0x91, 0x02, 0x22, 0x05, 0x44, 0x0a, 0x88, 0x14, 0x52, 0x56, 0x67, 0xea, 0x49, 0xf5, 0x8e,
		0x10, 0x85, 0xd2, 0x00, 0x85, 0x02, 0x0a, 0x05, 0x14, 0x0a, 0x28, 0x14, 0x50, 0x28, 0xdf, 0x57,
		0xf9, 0xad, 0x4d, 0xe8, 0x3c, 0xf8, 0x13, 0xf0, 0x27, 0x3a, 0xf0, 0x27, 0x6b, 0x95, 0x6f, 0x53,
		0x72, 0xa5, 0x49, 0x2a, 0x07, 0xc9, 0x8a, 0x93, 0xbb, 0x1a, 0x85, 0x32, 0xaa, 0x4f, 0xca, 0x53,
		0xc8, 0x32, 0x5a, 0xb7, 0x24, 0x0f, 0xc1, 0x0a, 0xce, 0xad, 0x48, 0x84, 0xd7, 0xde, 0x98, 0x40,
		0xfe, 0xf0, 0x03, 0x89, 0x90, 0x4a, 0x5c, 0x8a, 0x00, 0x48, 0x25, 0xbe, 0x27, 0x0c, 0x52, 0x89,
		0x9f, 0x10, 0x08, 0xa9, 0xc4, 0x80, 0x36, 0x77, 0x9b, 0x5f, 0x7a, 0x2a, 0x71, 0xec, 0x40, 0x28,
		0x78, 0xb4, 0x47, 0x3d, 0x5b, 0xf9, 0x8e, 0x8d, 0x88, 0x83, 0x23, 0xe3, 0xe8, 0x28, 0x39, 0x3c,
		0x92, 0x8e, 0x8f, 0x9a, 0x03, 0x24, 0xeb, 0x08, 0xc9, 0x3a, 0x44, 0xaa, 0x8e, 0x91, 0x06, 0xeb,
		0x52, 0xf6, 0x9d, 0x58, 0xd9, 0x0e, 0xf3, 0x8e, 0x0c, 0x28, 0xb5, 0x80, 0xf4, 0x49, 0x1b, 0x58,
		0x66, 0x41, 0x29, 0x51, 0xa7, 0x49, 0xce, 0x79, 0x52, 0x74, 0xa2, 0xa4, 0x9d, 0x29, 0x55, 0xa7,
		0x4a, 0xde, 0xb9, 0x92, 0x77, 0xb2, 0xd4, 0x9d, 0x2d, 0x0d, 0xa7, 0x4b, 0xc4, 0xf9, 0x92, 0x73,
		0xc2, 0xa9, 0x40, 0x44, 0x0a, 0x62, 0x9f, 0x34, 0xa6, 0x64, 0x6a, 0x8f, 0x1e, 0x73, 0xcf, 0xd4,
		0x6e, 0x5d, 0xa9, 0xb9, 0x69, 0xca, 0xee, 0x9a, 0x85, 0xdb, 0xa6, 0xee, 0xbe, 0xd9, 0xb8, 0x71,
		0x36, 0xee, 0x9c, 0x8b, 0x5b, 0xa7, 0xe5, 0xde, 0x89, 0xb9, 0xf9, 0xf4, 0x21, 0x92, 0xc9, 0x43,
		0x7d, 0xda, 0xea, 0x91, 0x2a, 0xf0, 0x7d, 0xca, 0xd1, 0x6e, 0x13, 0x14, 0x8d, 0x56, 0xf6, 0xea,
		0xfd, 0x17, 0x4d, 0x3f, 0x61, 0x50, 0xcd, 0x6e, 0x7d, 0x20, 0x24, 0xd1, 0x6c, 0xd7, 0x07, 0x72,
		0x52, 0xcf, 0x04, 0x7c, 0x68, 0x78, 0xa8, 0x66, 0x06, 0x12, 0xf7, 0x25, 0xab, 0x47, 0xc8, 0xb9,
		0xe1, 0x73, 0x84, 0x08, 0x16, 0x20, 0xe3, 0x18, 0xad, 0x29, 0x40, 0xa4, 0x2b, 0xd5, 0xe8, 0x15,
		0xf6, 0x87, 0xb8, 0x19, 0x36, 0x55, 0x10, 0xd1, 0x65, 0xca, 0x62, 0xe1, 0x40, 0x93, 0xfd, 0x88,
		0x58, 0xa0, 0xc9, 0x5e, 0x12, 0x30, 0x82, 0x26, 0x7b, 0xc1, 0x81, 0x00, 0x4d, 0x96, 0xb1, 0xa0,
		0xa0, 0xc9, 0xf8, 0x87, 0x36, 0x0c, 0x68, 0x32, 0x2a, 0xe5, 0xdb, 0x4f, 0xb9, 0xd8, 0x06, 0x08,
		0xb2, 0x67, 0xbe, 0x40, 0x90, 0x65, 0x13, 0xdd, 0x83, 0x20, 0x5b, 0xdb, 0xc8, 0x1e, 0x04, 0x59,
		0x36, 0x47, 0x68, 0xb3, 0x01, 0x7a, 0x6c, 0x6d, 0x0f, 0x11, 0xe8, 0xb1, 0x1f, 0x7a, 0x81, 0x1e,
		0xa3, 0x2c, 0x09, 0x95, 0xf4, 0x3a, 0x22, 0xf5, 0xee, 0x0f, 0xe4, 0xa2, 0x5e, 0xff, 0x7e, 0xbf,
		0x18, 0xba, 0x72, 0xaf, 0x86, 0xac, 0xcc, 0x02, 0x79, 0x7a, 0x1a, 0x4f, 0x61, 0xa2, 0x32, 0x25,
		0x2a, 0x9a, 0x20, 0x05, 0x4d, 0x8c, 0x7a, 0x46, 0x01, 0xc5, 0x73, 0xd4, 0x08, 0x05, 0x14, 0xcf,
		0x51, 0x74, 0x14, 0x50, 0xbc, 0x14, 0x34, 0xa0, 0x80, 0x82, 0x0f, 0xc2, 0x23, 0x47, 0x15, 0xa7,
		0x56, 0xcb, 0x17, 0xce, 0x79, 0x28, 0xce, 0x29, 0xd9, 0xac, 0x45, 0x15, 0xe1, 0x0e, 0x21, 0x99,
		0x8e, 0xe6, 0x20, 0x78, 0x63, 0x63, 0x06, 0x2a, 0x2b, 0x31, 0x68, 0x00, 0xb0, 0x24, 0x20, 0x41,
		0xd9, 0x05, 0xca, 0xbf, 0x89, 0x5b, 0x1a, 0x20, 0xd2, 0xec, 0x78, 0x91, 0x6a, 0x2a, 0x45, 0xa4,
		0x5e, 0xfa, 0xd0, 0x93, 0x2d, 0x5f, 0xc4, 0x1e, 0x8a, 0x08, 0xf3, 0x66, 0x1e, 0x3a, 0x37, 0x4b,
		0x12, 0xd5, 0xde, 0xd5, 0xeb, 0xdb, 0x3b, 0xf5, 0x7a, 0x75, 0x67, 0x6b, 0xa7, 0xba, 0xdb, 0x68,
		0xd4, 0xb6, 0x6b, 0x14, 0xba, 0x0b, 0xf7, 0x42, 0x57, 0x84, 0xc2, 0xdd, 0x8f, 0x95, 0x4a, 0x4e,
		0x7d, 0x9f, 0x92, 0x48, 0xc7, 0x91, 0x08, 0x49, 0x50, 0x93, 0x65, 0x9f, 0x79, 0x62, 0x84, 0x0d,
		0x7b, 0xa2, 0x86, 0x42, 0xff, 0x96, 0x48, 0x85, 0xd3, 0xb1, 0x92, 0x73, 0x58, 0xd4, 0x9d, 0x6d,
		0x4a, 0x7b, 0xbe, 0x27, 0xf6, 0xd1, 0x7c, 0x27, 0xec, 0x5e, 0xb2, 0x13, 0x76, 0x33, 0x14, 0x8e,
		0xdd, 0x89, 0xdc, 0x33, 0xbb, 0x13, 0x39, 0x31, 0xba, 0x8b, 0xbf, 0xda, 0x83, 0xd9, 0x9a, 0xe3,
		0xb7, 0xf1, 0xf7, 0x7a, 0xe7, 0x83, 0xf9, 0xfa, 0xd0, 0xb6, 0x54, 0x7f, 0xeb, 0x80, 0xb6, 0xa5,
		0x3f, 0x69, 0x0d, 0xd6, 0xa6, 0x83, 0xe9, 0x2b, 0x8d, 0x4f, 0x81, 0x29, 0x6e, 0x54, 0xe8, 0x58,
		0xd3, 0x58, 0x6d, 0xce, 0xfc, 0x72, 0x82, 0x5d, 0xf3, 0xcb, 0xa5, 0x90, 0xa5, 0xa5, 0xee, 0x10,
		0xe8, 0x04, 0xba, 0xb1, 0x51, 0xb9, 0x0b, 0x50, 0x6f, 0x27, 0xc2, 0xf8, 0xd5, 0x78, 0x3d, 0xe7,
		0x86, 0x66, 0x27, 0x73, 0x6f, 0x70, 0x7c, 0x78, 0xd8, 0xec, 0xff, 0x69, 0xb7, 0x8f, 0xec, 0x6e,
		0x6b, 0xf8, 0x7b, 0xaf, 0xff, 0x9b, 0xdd, 0x19, 0x34, 0x5f, 0x1b, 0x41, 0x68, 0xfc, 0xf8, 0x0f,
		0x37, 0x07, 0xfb, 0xfd, 0xe4, 0xc7, 0xd0, 0x70, 0x74, 0x85, 0xc9, 0x4c, 0xd4, 0x0f, 0xed, 0x46,
		0xef, 0x79, 0xc5, 0x25, 0x9e, 0xb2, 0x70, 0xfd, 0x5c, 0xcb, 0x81, 0x77, 0x07, 0x22, 0x1a, 0x87,
		0xde, 0x84, 0x44, 0x78, 0x92, 0x9a, 0xa6, 0xb6, 0x1c, 0xfb, 0x53, 0x57, 0x18, 0xea, 0x52, 0x18,
		0x73, 0x30, 0x60, 0x74, 0x06, 0x4d, 0xe3, 0xd2, 0x13, 0xa1, 0x13, 0x8e, 0x2f, 0x6f, 0x8d, 0x28,
		0xf0, 0x85, 0x7f, 0x6b, 0xc4, 0x87, 0xe8, 0x54, 0xaa, 0x4b, 0x47, 0x25, 0xff, 0x9e, 0x3c, 0x69,
		0x2f, 0x32, 0xce, 0x84, 0x27, 0x2f, 0x0c, 0x37, 0x59, 0xda, 0x99, 0x70, 0xcb, 0x3e, 0x66, 0x84,
		0xee, 0x55, 0x96, 0x2d, 0x90, 0xbb, 0xf4, 0xe8, 0x09, 0xc4, 0x54, 0x14, 0x2f, 0x51, 0x56, 0x0c,
		0x52, 0xd6, 0x5a, 0x89, 0x38, 0x4f, 0xeb, 0x4f, 0x1d, 0x69, 0x8d, 0xe0, 0x4b, 0x8e, 0x5f, 0xa9,
		0xc7, 0xad, 0x25, 0x18, 0xd4, 0x8c, 0x49, 0xa9, 0x62, 0xcd, 0x53, 0x71, 0xc7, 0xb3, 0x98, 0x4f,
		0x2a, 0xe8, 0x38, 0x2e, 0x2e, 0x94, 0x7c, 0x4f, 0x7e, 0xb6, 0x12, 0xb4, 0x6b, 0x79, 0x45, 0xc1,
		0x9d, 0x72, 0xae, 0x90, 0xca, 0xbb, 0x2a, 0x22, 0x75, 0x25, 0x54, 0xe2, 0xd5, 0x4f, 0x89, 0x57,
		0x3c, 0x45, 0x9d, 0xaa, 0x92, 0x9c, 0x1b, 0x45, 0xa7, 0x56, 0xa0, 0x23, 0xcb, 0xc2, 0x81, 0x15,
		0xe3, 0xb5, 0xf2, 0xf7, 0x21, 0xf9, 0x7e, 0x42, 0xce, 0xe7, 0xa8, 0xe8, 0xf3, 0x43, 0xed, 0xdc,
		0xe4, 0xab, 0x84, 0xf9, 0xa9, 0x46, 0x8e, 0x6a, 0x51, 0x50, 0x47, 0xfc, 0x42, 0x3b, 0xdd, 0x17,
		0xd4, 0xc1, 0xbe, 0xb0, 0xc4, 0xea, 0x22, 0x13, 0xa6, 0x4b, 0x49, 0x84, 0x2e, 0x9a, 0x88, 0x2b,
		0x2d, 0x71, 0xb9, 0x34, 0x2e, 0xad, 0xac, 0x44, 0x63, 0xde, 0xee, 0xb2, 0xa8, 0x8e, 0xe9, 0xc9,
		0xd8, 0xac, 0xe2, 0xb4, 0x7f, 0x79, 0x58, 0x57, 0x51, 0x8a, 0x5f, 0x6c, 0x4d, 0x4c, 0xe1, 0x35,
		0x2f, 0x65, 0xd4, 0xb4, 0x94, 0x5a, 0xb3, 0x52, 0xd6, 0xdd, 0x49, 0xe9, 0x35, 0x27, 0xa5, 0x5f,
		0x87, 0x94, 0x5d, 0x33, 0xa2, 0x17, 0x4f, 0x57, 0x78, 0x4d, 0x47, 0x7a, 0x6a, 0x3d, 0x57, 0x48,
		0xe5, 0xa9, 0xdb, 0x62, 0xeb, 0x36, 0x52, 0x6c, 0x5c, 0x24, 0x27, 0xd6, 0x9e, 0x2f, 0x75, 0xdf,
		0x89, 0x4a, 0xb0, 0x18, 0x8b, 0x0d, 0xef, 0x0d, 0x8e, 0x3e, 0xd8, 0x9d, 0x41, 0xd3, 0x1e, 0xfe,
		0x79, 0xd4, 0x2a, 0xda, 0x6a, 0x24, 0xfd, 0x36, 0xa2, 0x52, 0xd2, 0x9a, 0x4a, 0x1e, 0x76, 0xdd,
		0x1c, 0xd8, 0xad, 0x3f, 0x86, 0xad, 0x7e, 0xb7, 0xd9, 0x89, 0x77, 0xdf, 0x5c, 0x87, 0x99, 0xe3,
		0x25, 0x6f, 0xf9, 0x52, 0xd2, 0x0d, 0xb6, 0xbb, 0x80, 0xed, 0x1e, 0x0c, 0x9a, 0x36, 0xd4, 0xbc,
		0x14, 0x83, 0xfe, 0x69, 0xd3, 0x6e, 0xf6, 0x5b, 0x4d, 0x7b, 0xf0, 0xbe, 0x77, 0xd4, 0xb2, 0x7b,
		0x47, 0xcd, 0xff, 0x3b, 0x6e, 0x61, 0xff, 0x8b, 0xdd, 0xff, 0x01, 0x76, 0xbf, 0xbc, 0xdd, 0xef,
		0xb4, 0xbb, 0xbf, 0x61, 0xff, 0x4b, 0xd8, 0xff, 0x7e, 0xef, 0x78, 0xd8, 0xea, 0x63, 0xb7, 0x8b,
		0xd9, 0xed, 0xfb, 0x59, 0xc1, 0xd8, 0xf3, 0xe2, 0xf6, 0x7c, 0x35, 0x8d, 0xdb, 0xd4, 0xbc, 0xe4,
		0x66, 0xa4, 0x1b, 0x93, 0x02, 0x92, 0xff, 0x9b, 0xda, 0xbe, 0xc6, 0x77, 0xe2, 0x05, 0x74, 0x56,
		0xe3, 0x79, 0x29, 0x5e, 0xc8, 0x7d, 0x4c, 0x91, 0xf7, 0x30, 0x05, 0xdd, 0xbf, 0xe0, 0x4a, 0x3c,
		0xb3, 0x0f, 0xc5, 0x95, 0x78, 0xde, 0x1f, 0x8c, 0x2b, 0xf1, 0x9f, 0xd8, 0xb4, 0xc2, 0xee, 0x4b,
		0x4a, 0xe8, 0x6d, 0x55, 0x64, 0xcf, 0xaa, 0x47, 0x7a, 0x51, 0xc5, 0x3b, 0xcb, 0xd5, 0x17, 0xbf,
		0x62, 0xa4, 0xcb, 0x69, 0xb3, 0xa7, 0xfc, 0xdc, 0x6e, 0x31, 0x29, 0xf8, 0xc5, 0xa5, 0xdc, 0x97,
		0x9a, 0x62, 0x5f, 0x60, 0x4a, 0x7d, 0x81, 0x29, 0xf4, 0x79, 0x29, 0x77, 0x41, 0xe1, 0x0c, 0xa1,
		0x30, 0xc6, 0xcc, 0x35, 0x3b, 0xf6, 0x45, 0x99, 0xef, 0xf9, 0xd8, 0xf3, 0xec, 0xad, 0x6d, 0xb6,
		0xbf, 0x31, 0x63, 0xd5, 0xce, 0x5b, 0xa5, 0xcb, 0x57, 0xe5, 0x6c, 0xd5, 0x24, 0xbb, 0x87, 0x99,
		0xe1, 0x83, 0xcc, 0x29, 0xcf, 0x3c, 0xd7, 0xbc, 0xf2, 0x9c, 0xf2, 0xc8, 0x73, 0x0b, 0x92, 0xf3,
		0x0c, 0x8a, 0x0b, 0x09, 0x82, 0xf3, 0x0e, 0x7a, 0x0b, 0x0b, 0x72, 0x0b, 0x0b, 0x6a, 0x8b, 0x0a,
		0x62, 0x69, 0x3b, 0x88, 0xbc, 0xf2, 0xb4, 0xe7, 0x39, 0x7a, 0xe7, 0x9e, 0xc8, 0x0f, 0xc8, 0xdf,
		0xcb, 0x07, 0x4c, 0x3e, 0x2b, 0xaf, 0xb8, 0x27, 0x57, 0x0e, 0x30, 0x77, 0xee, 0xaf, 0x08, 0xce,
		0xaf, 0x50, 0xae, 0xaf, 0x28, 0x8e, 0xaf, 0x70, 0x6e, 0xaf, 0x70, 0x4e, 0xaf, 0x68, 0x2e, 0x8f,
		0x17, 0xdf, 0x91, 0x3b, 0x67, 0x77, 0x77, 0x6a, 0xa2, 0xc9, 0xb9, 0x15, 0x03, 0x5c, 0x2b, 0x77,
		0x6b, 0xb6, 0x02, 0xd0, 0x76, 0x73, 0xfc, 0x8c, 0xf9, 0xee, 0xe5, 0x9b, 0xb7, 0x5b, 0x20, 0x9f,
		0x3a, 0xf5, 0xa4, 0xda, 0xda, 0x2c, 0x90, 0x4e, 0x2d, 0x82, 0x4d, 0x2d, 0x76, 0xde, 0x6b, 0xb1,
		0x5d, 0x35, 0x8a, 0xcf, 0x98, 0x2f, 0x69, 0xbe, 0x6a, 0xe9, 0xa3, 0x1e, 0xcb, 0x1b, 0xdd, 0xf8,
		0xb5, 0xd8, 0x76, 0x29, 0xe5, 0xa9, 0x54, 0x7d, 0x73, 0xb7, 0xbe, 0xbb, 0xbd, 0xb3, 0xb9, 0xdb,
		0x80, 0x6e, 0x15, 0xa5, 0x5b, 0x9a, 0xa4, 0x19, 0x8d, 0x38, 0x5f, 0x9c, 0x16, 0xe8, 0xe0, 0xdd,
		0x40, 0x29, 0xe1, 0x5a, 0xff, 0x9d, 0x3a, 0x6e, 0x91, 0x97, 0xa6, 0xef, 0x8a, 0xb9, 0x34, 0x55,
		0x22, 0x2c, 0xae, 0x3b, 0xb4, 0xf9, 0xe6, 0xcd, 0x49, 0xd5, 0xda, 0x1d, 0xfd, 0x7d, 0x52, 0xb3,
		0x76, 0x47, 0xb3, 0xb7, 0xb5, 0xe4, 0xcb, 0xec, 0xfd, 0xe6, 0x49, 0xd5, 0xaa, 0x2f, 0xde, 0x37,
		0x4e, 0xaa, 0x56, 0x63, 0xf4, 0xf6, 0xf4, 0x74, 0xe3, 0xed, 0x5f, 0x5b, 0x5f, 0x9f, 0xff, 0x83,
		0x26, 0xf7, 0x13, 0xf4, 0x8a, 0x97, 0xdc, 0xb8, 0x46, 0xc9, 0xf6, 0xac, 0x94, 0x75, 0x8d, 0x92,
		0x43, 0x16, 0x63, 0x86, 0x57, 0x28, 0xaf, 0x08, 0xa9, 0x42, 0x5e, 0x2a, 0x50, 0xd6, 0xa3, 0x37,
		0x33, 0xbd, 0x9f, 0xfa, 0xa9, 0x9b, 0xde, 0x6c, 0xf4, 0xee, 0xe5, 0x5a, 0x92, 0x81, 0x86, 0x98,
		0x57, 0x13, 0x3f, 0xbb, 0xc1, 0xbe, 0x29, 0x1c, 0x49, 0x7e, 0x6b, 0x46, 0xfa, 0x9b, 0xed, 0x85,
		0x5c, 0xe6, 0x8c, 0x75, 0x1e, 0x0c, 0x75, 0xae, 0x8c, 0x74, 0x5e, 0x0c, 0x74, 0xee, 0x8c, 0x73,
		0xee, 0x0c, 0x73, 0xde, 0x8c, 0x32, 0x2d, 0xbf, 0x90, 0xf5, 0x05, 0x9a, 0x39, 0x5e, 0x9c, 0xac,
		0x9c, 0xae, 0xfb, 0xe7, 0xbf, 0x1f, 0xf7, 0xfd, 0xb8, 0xef, 0x2f, 0xd3, 0x0c, 0x15, 0x66, 0x8e,
		0x8a, 0x32, 0x4b, 0x3c, 0x22, 0x99, 0xdc, 0xee, 0xfb, 0x55, 0xe8, 0x9c, 0x9f, 0x7b, 0x63, 0x4b,
		0xc8, 0x0b, 0x4f, 0x0a, 0x11, 0x7a, 0xf2, 0xc2, 0x12, 0xd2, 0x39, 0xf3, 0x85, 0x9b, 0x7f, 0x02,
		0xc0, 0xb7, 0x3e, 0x1c, 0x19, 0x01, 0x45, 0x1b, 0xc0, 0x42, 0x0d, 0x61, 0x51, 0x06, 0xb1, 0x70,
		0xc3, 0x58, 0xb8, 0x81, 0x2c, 0xda, 0x50, 0xe6, 0x4b, 0x7e, 0xf1, 0xcf, 0x08, 0x38, 0x0b, 0x02,
		0x5f, 0x38, 0xb2, 0x88, 0x24, 0x80, 0x1a, 0xf2, 0xf4, 0x1f, 0xf9, 0x9c, 0xdb, 0x8b, 0x40, 0x59,
		0xc1, 0xd8, 0x1a, 0x07, 0x57, 0x93, 0x50, 0x44, 0x91, 0x70, 0x2d, 0x5f, 0x38, 0xe7, 0xf1, 0x87,
		0x7e, 0x05, 0xad, 0x4a, 0xff, 0x41, 0x96, 0xc1, 0xad, 0x5d, 0x4d, 0xfc, 0xa8, 0x32, 0x0f, 0xb1,
		0x90, 0x9a, 0xfe, 0x52, 0x13, 0xc8, 0x32, 0x35, 0x7d, 0x13, 0xa1, 0x2a, 0x42, 0x55, 0x84, 0xaa,
		0x08, 0x55, 0x11, 0xaa, 0x22, 0x54, 0x45, 0xa8, 0x8a, 0x50, 0x15, 0xa1, 0x2a, 0xfd, 0x50, 0x15,
		0x91, 0x97, 0x16, 0x91, 0x17, 0x12, 0x5a, 0xca, 0x56, 0x81, 0xb2, 0x1e, 0x7d, 0xc9, 0x09, 0x2d,
		0x87, 0xb1, 0x08, 0x1a, 0x25, 0xb4, 0x64, 0x1b, 0xd8, 0xe7, 0x12, 0xd0, 0xe7, 0x96, 0xd2, 0xb2,
		0x89, 0x94, 0x16, 0xa4, 0xb4, 0x14, 0x8a, 0x33, 0x35, 0x4f, 0x69, 0xc9, 0xb1, 0x16, 0x3c, 0xff,
		0x1a, 0xf0, 0x9c, 0xc2, 0x67, 0xa4, 0xb6, 0x80, 0x2f, 0x04, 0x5f, 0xc8, 0x22, 0xdc, 0x2d, 0xba,
		0x46, 0x3b, 0xcf, 0xda, 0xec, 0x7c, 0x6b, 0xb2, 0x0b, 0xa0, 0x1a, 0x72, 0xaf, 0xc1, 0x2e, 0xa0,
		0xf6, 0xba, 0xa0, 0x9a, 0xeb, 0x02, 0x0a, 0xe7, 0x8a, 0xac, 0xb1, 0x2e, 0xba, 0xb6, 0xba, 0xb4,
		0xba, 0xd7, 0xe2, 0xeb, 0x5d, 0x0b, 0xa8, 0xa1, 0x2e, 0xb4, 0x76, 0xba, 0xb4, 0x9a, 0xe9, 0x75,
		0xd2, 0x19, 0x54, 0x44, 0xe6, 0x7f, 0x82, 0x0a, 0x70, 0xa8, 0xc5, 0xd4, 0x3c, 0x17, 0x51, 0xeb,
		0x5c, 0x58, 0x8d, 0xb3, 0x26, 0xb5, 0xcd, 0x5c, 0x6a, 0x83, 0x47, 0xe0, 0xf3, 0x7f, 0x24, 0x06,
		0xd4, 0x87, 0xcf, 0xcf, 0xf0, 0x16, 0x87, 0x06, 0x9b, 0x7e, 0xed, 0x85, 0x6a, 0xea, 0xf8, 0x96,
		0xef, 0xc9, 0xcf, 0x39, 0xd4, 0x89, 0xae, 0xfe, 0x7a, 0x14, 0x8c, 0x92, 0xa4, 0xb7, 0xc0, 0xae,
		0x97, 0x45, 0x5f, 0x69, 0xce, 0xae, 0x2f, 0x9f, 0xfe, 0xfc, 0xf8, 0xf5, 0x95, 0x4f, 0x41, 0xf1,
		0x28, 0x18, 0xf6, 0x32, 0x4d, 0x52, 0x61, 0xa6, 0xa9, 0x28, 0x13, 0x95, 0x0f, 0x78, 0x66, 0x93,
		0x91, 0x9b, 0x53, 0xcd, 0xfb, 0x83, 0x43, 0x95, 0x4b, 0xed, 0x7b, 0xce, 0x66, 0x2c, 0x77, 0x73,
		0x56, 0x84, 0x59, 0x2b, 0xd4, 0xbc, 0x15, 0x65, 0xe6, 0x0a, 0x37, 0x77, 0x85, 0x9b, 0xbd, 0xa2,
		0xcd, 0x5f, 0xbe, 0xec, 0x5f, 0x5e, 0x79, 0xb6, 0x79, 0x99, 0xc5, 0xf4, 0x03, 0x42, 0x71, 0x15,
		0x28, 0x61, 0x85, 0xc1, 0x54, 0x89, 0xd0, 0xf2, 0xdc, 0xe2, 0xe6, 0x6b, 0x3e, 0xf8, 0x64, 0xcc,
		0xda, 0xa4, 0x66, 0x52, 0x4b, 0x31, 0xad, 0x45, 0x9b, 0xd8, 0xd2, 0x4c, 0x6d, 0x69, 0x26, 0xb7,
		0x2c, 0xd3, 0x9b, 0xaf, 0x09, 0xce, 0xd9, 0x14, 0xa7, 0x9b, 0x56, 0xfc, 0xac, 0x4d, 0x6f, 0x72,
		0x5d, 0xb7, 0x1c, 0xd7, 0x0d, 0x45, 0x14, 0x59, 0x32, 0xb0, 0xfe, 0x17, 0x48, 0x81, 0x1e, 0xb2,
		0x2f, 0xfc, 0xc0, 0x22, 0xef, 0x59, 0xde, 0xfc, 0xe3, 0xe4, 0xf4, 0x74, 0xf2, 0x57, 0xf7, 0x6b,
		0xfc, 0x67, 0xe7, 0xeb, 0xe8, 0x5f, 0x6f, 0xff, 0x5d, 0x94, 0x6d, 0x89, 0x05, 0x39, 0x3d, 0xdd,
		0x18, 0xfd, 0xd3, 0x44, 0x27, 0xe8, 0x6f, 0xdb, 0xc2, 0x82, 0x07, 0xce, 0x17, 0xde, 0x01, 0x22,
		0x7f, 0xeb, 0xfb, 0x15, 0xad, 0x3e, 0x1e, 0xf9, 0x9c, 0x12, 0x2e, 0xb9, 0x56, 0x2e, 0x6d, 0x56,
		0xfe, 0x96, 0x4b, 0xff, 0x88, 0xfc, 0x9e, 0x7f, 0x0e, 0xcf, 0xbe, 0xb8, 0x88, 0xa7, 0xe8, 0x48,
		0x07, 0xc5, 0xd8, 0x20, 0x89, 0x40, 0x12, 0xad, 0xa1, 0x27, 0x2b, 0xae, 0x18, 0x3b, 0xff, 0xa9,
		0xff, 0x45, 0x4c, 0xfb, 0x5f, 0x9e, 0xf2, 0x3f, 0xf3, 0x87, 0x95, 0x07, 0x26, 0x7a, 0x8d, 0x1d,
		0x64, 0x3e, 0x8d, 0x97, 0x1e, 0xe8, 0x52, 0x1e, 0x0d, 0x98, 0x1e, 0x68, 0x51, 0xde, 0xae, 0x70,
		0x13, 0xae, 0x10, 0xae, 0x10, 0xae, 0x90, 0x8c, 0x2b, 0xcc, 0xfd, 0xbe, 0xc4, 0x71, 0xff, 0x9f,
		0x33, 0x16, 0x72, 0x7c, 0x6b, 0xe5, 0x6b, 0x26, 0x1f, 0x9c, 0xd2, 0xfb, 0x1f, 0x8c, 0xdb, 0x12,
		0x6a, 0x06, 0xb5, 0x14, 0xc3, 0x5a, 0xb4, 0x81, 0x2d, 0xcd, 0xd0, 0x96, 0x66, 0x70, 0xcb, 0x32,
		0xbc, 0xf9, 0xf3, 0x75, 0x86, 0x9e, 0xb7, 0x25, 0x49, 0xfd, 0xac, 0xba, 0xcd, 0x37, 0x4e, 0x79,
		0x80, 0x34, 0x0b, 0xa8, 0x02, 0x33, 0xdb, 0xf3, 0xa5, 0xed, 0x3b, 0x51, 0x81, 0x27, 0x7d, 0xb1,
		0xb1, 0xbd, 0xc1, 0xd1, 0x07, 0xbb, 0xdb, 0x6a, 0x7f, 0xfc, 0xcf, 0x7e, 0xaf, 0x6f, 0x0f, 0x86,
		0xcd, 0x61, 0xab, 0xa8, 0x33, 0x9f, 0xd4, 0xdc, 0x45, 0x85, 0x5d, 0x0e, 0x19, 0x85, 0x4e, 0x13,
		0x5e, 0xd9, 0xe4, 0xe6, 0x70, 0xd8, 0x3a, 0x3c, 0x1a, 0x9a, 0x3a, 0xce, 0xb8, 0x2d, 0x69, 0x4b,
		0x0f, 0x7a, 0xbf, 0x77, 0xb1, 0x9f, 0xd9, 0xed, 0x67, 0xeb, 0x8f, 0xf7, 0xff, 0x69, 0x76, 0x3f,
		0xb6, 0xb0, 0xa7, 0x59, 0xee, 0xe9, 0x60, 0xd8, 0xec, 0xe3, 0xd8, 0x67, 0xb8, 0xa5, 0x1f, 0x8e,
		0x3b, 0x1d, 0xec, 0x67, 0x76, 0xfb, 0xd9, 0xee, 0xb6, 0xa1, 0x9f, 0x19, 0xee, 0x67, 0xa7, 0xd7,
		0x3c, 0x68, 0x77, 0x3f, 0x62, 0x4b, 0xb3, 0xdb, 0xd2, 0xe1, 0xef, 0x3d, 0xfb, 0xf7, 0xe6, 0x9f,
		0xa6, 0x66, 0x43, 0xdc, 0x47, 0x68, 0xb8, 0x50, 0xbc, 0x4a, 0x9b, 0x67, 0xce, 0xf8, 0xf3, 0x74,
		0x62, 0xb9, 0x22, 0xf2, 0x2e, 0xa4, 0xa3, 0x84, 0x3b, 0xbf, 0x1d, 0x2a, 0x8e, 0xf2, 0x7b, 0x52,
		0x02, 0x70, 0x7f, 0xcf, 0xfa, 0x20, 0x70, 0x7f, 0x59, 0x2b, 0x08, 0xb8, 0x3f, 0x70, 0x7f, 0xdf,
		0xdf, 0xb4, 0xe2, 0xb9, 0xbf, 0x62, 0x1a, 0xce, 0xdc, 0x37, 0x94, 0x48, 0x90, 0xa6, 0xdb, 0x88,
		0xa6, 0x18, 0x0c, 0xc5, 0x13, 0xe1, 0xb8, 0xc2, 0x71, 0x2d, 0xe5, 0x5d, 0x15, 0x78, 0x8b, 0x79,
		0xf7, 0x91, 0xc0, 0x30, 0xc0, 0x30, 0xc0, 0x30, 0xc0, 0x30, 0xc0, 0x30, 0xf7, 0x4e, 0x5d, 0x6c,
		0x1d, 0x95, 0x37, 0xfe, 0x1c, 0x6d, 0xd7, 0x0b, 0xc4, 0x30, 0x45, 0x40, 0x98, 0x63, 0x39, 0xeb,
		0x5b, 0x69, 0x4a, 0x47, 0x06, 0x91, 0x18, 0x07, 0xd2, 0x8d, 0x8a, 0x58, 0x62, 0x31, 0x2d, 0x71,
		0x8b, 0xe7, 0xbe, 0x0a, 0x6d, 0x91, 0x9b, 0x7e, 0x68, 0xc1, 0xad, 0x72, 0xd3, 0xcf, 0x2d, 0xab,
		0xfd, 0xe9, 0xdd, 0x01, 0x2d, 0xba, 0x0d, 0x6a, 0x41, 0x36, 0x6e, 0x55, 0xa5, 0x0a, 0x6c, 0xa5,
		0xfb, 0x40, 0xa5, 0x6a, 0xef, 0xea, 0xf5, 0xed, 0x9d, 0x7a, 0xbd, 0xba, 0xb3, 0xb5, 0x53, 0xdd,
		0x6d, 0x34, 0x6a, 0xdb, 0xb5, 0x06, 0xb4, 0xac, 0x28, 0x2d, 0x7b, 0xa5, 0xc7, 0xa7, 0x20, 0xd2,
		0x7b, 0x2c, 0xd2, 0x2b, 0x8d, 0xc4, 0x06, 0x7b, 0x8d, 0xc8, 0x0f, 0x91, 0x1f, 0x22, 0x3f, 0x44,
		0x7e, 0xdf, 0x37, 0x95, 0x60, 0xaf, 0x33, 0xfb, 0x40, 0xb0, 0xd7, 0xba, 0x63, 0x1a, 0xdf, 0x89,
		0x94, 0x25, 0x22, 0xe5, 0x9c, 0xf9, 0x5e, 0x74, 0x29, 0x8a, 0x66, 0xb2, 0x1f, 0xff, 0x78, 0x60,
		0x1b, 0x60, 0x1b, 0x60, 0x1b, 0x60, 0x1b, 0x60, 0x9b, 0x7b, 0xa7, 0x0e, 0xac, 0x76, 0xd6, 0x9f,
		0x0b, 0x56, 0x3b, 0xcb, 0x0f, 0x05, 0xab, 0x0d, 0x56, 0x3b, 0x27, 0x95, 0x02, 0xab, 0x0d, 0x56,
		0x1b, 0x11, 0x60, 0x0e, 0x4a, 0x15, 0x4c, 0x62, 0x9d, 0x76, 0x7c, 0x6b, 0xec, 0x4c, 0x9c, 0x33,
		0xcf, 0xf7, 0x94, 0x27, 0xa2, 0xe2, 0x22, 0xc0, 0xc7, 0x3f, 0x1e, 0x11, 0x20, 0x22, 0x40, 0x44,
		0x80, 0x88, 0x00, 0x11, 0x01, 0xde, 0x3b, 0x75, 0x97, 0xe2, 0xc6, 0x8a, 0x54, 0xe8, 0xc9, 0x0b,
		0x90, 0xdb, 0x2f, 0xfc, 0xc0, 0x84, 0xa2, 0x76, 0xac, 0xf3, 0xa6, 0xf5, 0x61, 0xf4, 0xd7, 0xe6,
		0xd7, 0x37, 0x7b, 0xab, 0x7f, 0x7f, 0xfb, 0xcf, 0xb7, 0xff, 0x06, 0x27, 0x5d, 0x06, 0x22, 0x99,
		0x84, 0x5e, 0x10, 0x7a, 0xea, 0xb6, 0x38, 0x10, 0x92, 0x7e, 0x22, 0x70, 0x07, 0x70, 0x07, 0x70,
		0x07, 0x70, 0x07, 0x70, 0xc7, 0xbd, 0x53, 0x37, 0xf5, 0xa4, 0x7a, 0x57, 0x20, 0xe4, 0x68, 0x80,
		0xfb, 0xfd, 0xf9, 0x85, 0x81, 0xfb, 0x2d, 0x52, 0x00, 0x70, 0xbf, 0x79, 0xab, 0xd4, 0x66, 0x03,
		0x54, 0x6f, 0x61, 0x4a, 0x05, 0xaa, 0x57, 0xdb, 0xc0, 0x0a, 0x63, 0x0a, 0x11, 0x68, 0x21, 0xd0,
		0x42, 0xa0, 0x85, 0x40, 0x8b, 0x6e, 0xa0, 0x85, 0x31, 0x85, 0x39, 0x7c, 0x20, 0xc6, 0x14, 0x02,
		0x5e, 0x15, 0x01, 0xaf, 0x54, 0xe8, 0xc8, 0xe8, 0xca, 0x8b, 0x22, 0x2f, 0x90, 0xd6, 0x7f, 0xa7,
		0x62, 0x2a, 0x2c, 0x5f, 0xc8, 0x8b, 0x64, 0x4e, 0x4e, 0x61, 0x48, 0xeb, 0x69, 0x21, 0x00, 0xba,
		0x00, 0xba, 0x00, 0xba, 0x00, 0xba, 0x00, 0xba, 0xee, 0x9d, 0xba, 0xa9, 0x27, 0xd5, 0xd6, 0x66,
		0x81, 0x30, 0x6b, 0x07, 0xf4, 0xf6, 0xcf, 0x2f, 0x0c, 0xf4, 0x76, 0x91, 0x02, 0x80, 0xde, 0xce,
		0x5b, 0xa5, 0xea, 0x9b, 0xbb, 0xf5, 0xdd, 0xed, 0x9d, 0xcd, 0x5d, 0xb0, 0xdc, 0x85, 0xe9, 0x16,
		0x58, 0x6e, 0x6d, 0xc3, 0xb0, 0x64, 0xb2, 0x9b, 0x35, 0xbe, 0x8c, 0xdd, 0x5f, 0x81, 0x89, 0xcc,
		0xab, 0x1f, 0x8b, 0x50, 0x0b, 0xa1, 0x16, 0x42, 0x2d, 0x84, 0x5a, 0x08, 0xb5, 0x10, 0x6a, 0x21,
		0xd4, 0x42, 0xa8, 0x85, 0x50, 0x0b, 0xa1, 0x16, 0x42, 0x2d, 0x84, 0x5a, 0x25, 0x84, 0x5a, 0xac,
		0x46, 0x8f, 0x37, 0xa5, 0x0c, 0x94, 0x13, 0x9f, 0x94, 0x7c, 0x27, 0x90, 0x47, 0xe3, 0x4b, 0x71,
		0xe5, 0x4c, 0x9c, 0xe4, 0x6a, 0xce, 0xac, 0x04, 0x13, 0x21, 0xc7, 0x49, 0xb0, 0x63, 0x49, 0xa1,
		0xbe, 0x04, 0xe1, 0x67, 0xcb, 0x93, 0x91, 0x72, 0xe4, 0x58, 0x54, 0xee, 0x7f, 0x23, 0x7a, 0xf0,
		0x9d, 0xca, 0x24, 0x0c, 0x54, 0x30, 0x0e, 0xfc, 0x28, 0x7d, 0x57, 0x99, 0xe1, 0xcf, 0x8a, 0x13,
		0x0a, 0x27, 0x4a, 0xfe, 0xac, 0x5c, 0x7b, 0xa1, 0x9a, 0x3a, 0xbe, 0xe5, 0x7b, 0xf2, 0x73, 0xb4,
		0xf2, 0xb7, 0xca, 0x6c, 0x18, 0xf9, 0x2b, 0x1e, 0x8f, 0x3f, 0xdb, 0xdf, 0x98, 0xb1, 0x22, 0xc5,
		0x81, 0x4f, 0x01, 0x09, 0x67, 0x66, 0xc7, 0x8b, 0x54, 0x53, 0xa9, 0x7c, 0x5a, 0x80, 0xc6, 0xb0,
		0xab, 0xe5, 0x8b, 0x38, 0x9a, 0xc9, 0xc9, 0x55, 0xc4, 0x5e, 0x78, 0xe9, 0x13, 0x8a, 0x69, 0xae,
		0x60, 0xf6, 0x42, 0x57, 0x84, 0xc2, 0xdd, 0x8f, 0x9f, 0x90, 0x9c, 0xfa, 0x7e, 0x9e, 0x1f, 0x71,
		0x1c, 0x25, 0xfd, 0x59, 0xb3, 0xf7, 0x75, 0x59, 0x2b, 0x6c, 0xce, 0x16, 0x8f, 0x96, 0xa5, 0xcb,
		0x21, 0xee, 0x33, 0x23, 0x15, 0x4e, 0xc7, 0x4a, 0xce, 0xe3, 0xcb, 0xee, 0x4c, 0xe2, 0xf6, 0x5c,
		0x60, 0xfb, 0x68, 0x2e, 0xa6, 0xdd, 0x4b, 0xc4, 0xb4, 0x9b, 0xa1, 0x70, 0xec, 0x4f, 0x33, 0x91,
		0x3a, 0xb1, 0x44, 0xaf, 0x68, 0xda, 0xc6, 0x6c, 0x7e, 0x53, 0x46, 0xca, 0x9a, 0x97, 0x92, 0x96,
		0xae, 0x9c, 0xd9, 0x3c, 0xfd, 0x97, 0x3f, 0xab, 0x97, 0xfd, 0x86, 0x17, 0x3e, 0xe5, 0x85, 0xcf,
		0x9c, 0xcd, 0xfc, 0x3f, 0xf7, 0x5e, 0xdc, 0x5d, 0x3a, 0x5b, 0xef, 0x98, 0xbd, 0x37, 0x2c, 0xc4,
		0xfb, 0xe5, 0xe0, 0xed, 0x72, 0xf0, 0x6e, 0x2f, 0x55, 0x9d, 0x8c, 0x0d, 0x43, 0x09, 0x06, 0x21,
		0x03, 0x97, 0xf4, 0x13, 0x2e, 0xe8, 0x65, 0x86, 0xe7, 0xe7, 0xcd, 0xc5, 0xcf, 0xfd, 0xe4, 0x4f,
		0x6a, 0x49, 0x56, 0xda, 0x51, 0xac, 0x56, 0xfc, 0xdc, 0xa3, 0x79, 0xfe, 0xc6, 0xfe, 0xc4, 0xa6,
		0x9a, 0x17, 0x7e, 0x70, 0xe6, 0xf8, 0x3f, 0xbd, 0x99, 0x29, 0x0b, 0x3f, 0xff, 0x3d, 0x3f, 0xf9,
		0x58, 0x17, 0xb9, 0xe2, 0x3f, 0xf9, 0xe3, 0x2f, 0xbd, 0x55, 0xcc, 0xe2, 0xb6, 0x30, 0xd3, 0x5b,
		0xc0, 0xac, 0x6e, 0xf7, 0x32, 0xbf, 0xb5, 0xcb, 0xfc, 0x36, 0x2e, 0xeb, 0x5b, 0xb6, 0x62, 0xcd,
		0xd1, 0x81, 0xf7, 0x32, 0x44, 0x62, 0x8e, 0x17, 0x9a, 0xfb, 0xc2, 0xe7, 0xbc, 0x50, 0xbe, 0xf9,
		0xef, 0x7b, 0x29, 0x7c, 0x7b, 0xd1, 0x71, 0xcc, 0xec, 0x58, 0x66, 0x79, 0x3c, 0x73, 0x39, 0xa6,
		0x59, 0x1f, 0xd7, 0xdc, 0x8e, 0x6d, 0x6e, 0xc7, 0x37, 0xaf, 0x63, 0x4c, 0x23, 0x8c, 0x79, 0xe9,
		0xf1, 0x4e, 0x7f, 0xd1, 0xa5, 0xe7, 0x0a, 0x2b, 0x29, 0xa3, 0xf0, 0x94, 0x15, 0x48, 0xff, 0x76,
		0x01, 0x33, 0xb2, 0x4b, 0x27, 0xba, 0x6b, 0xe8, 0xf5, 0xf4, 0x67, 0x65, 0xf4, 0xac, 0xb3, 0xcd,
		0x15, 0xca, 0x3c, 0x27, 0x28, 0x8f, 0xdc, 0x9f, 0x5c, 0x73, 0x7c, 0xf2, 0xca, 0xe5, 0xc9, 0x3d,
		0x67, 0x27, 0xf7, 0xdc, 0x9c, 0xbc, 0x73, 0x70, 0x68, 0x71, 0x62, 0x99, 0xe7, 0xce, 0xa4, 0x5a,
		0x7b, 0x16, 0x04, 0xbe, 0x70, 0x64, 0x96, 0x3a, 0xbb, 0xc0, 0x08, 0x35, 0x52, 0x5b, 0x28, 0x6e,
		0x54, 0xe8, 0x58, 0x53, 0x99, 0x0c, 0x00, 0xc9, 0x78, 0x33, 0x43, 0x71, 0x2e, 0x42, 0x21, 0xc7,
		0xd9, 0xe7, 0xe5, 0xe4, 0x40, 0xd2, 0x2f, 0x9e, 0x7c, 0xff, 0xc3, 0xfb, 0xed, 0x77, 0xdb, 0x55,
		0xc3, 0x32, 0xfe, 0xe3, 0xb9, 0x9e, 0xbc, 0x30, 0x86, 0x73, 0xcf, 0xd0, 0x93, 0xfe, 0xad, 0x31,
		0x27, 0x16, 0x22, 0xc3, 0x93, 0x46, 0x6f, 0x70, 0xf4, 0x21, 0x0f, 0x36, 0x3d, 0xe7, 0x44, 0xc5,
		0x65, 0x23, 0x77, 0xf7, 0x84, 0x72, 0xba, 0x4c, 0x2e, 0x2a, 0x17, 0x71, 0xc5, 0xee, 0x3d, 0xf3,
		0x11, 0x52, 0xbf, 0x9e, 0xcd, 0xec, 0xb7, 0x8d, 0xd6, 0xe2, 0x42, 0xe3, 0xf6, 0x22, 0x50, 0x56,
		0x30, 0xb6, 0xc6, 0xc1, 0xd5, 0x24, 0x14, 0x51, 0x24, 0x5c, 0xcb, 0x17, 0xce, 0x79, 0xfc, 0x21,
		0x5f, 0xa9, 0xdc, 0x35, 0x64, 0x10, 0x41, 0x79, 0x17, 0x13, 0x2b, 0xba, 0x0c, 0x42, 0x35, 0x9e,
		0xaa, 0x1c, 0x40, 0xf1, 0xea, 0xaf, 0x07, 0x0e, 0x06, 0x0e, 0x06, 0x0e, 0x06, 0x0e, 0xd6, 0x17,
		0x07, 0xc3, 0x1b, 0xbd, 0x68, 0x99, 0x7e, 0x70, 0x61, 0x39, 0xee, 0xff, 0x73, 0xc6, 0x42, 0x8e,
		0x6f, 0x33, 0xaf, 0xfc, 0xba, 0x1b, 0x56, 0xf8, 0xe8, 0xc7, 0xc0, 0x3b, 0xc1, 0x3b, 0xc1, 0x3b,
		0xc1, 0x3b, 0xc1, 0x3b, 0xc1, 0x3b, 0x3d, 0x4e, 0x44, 0x65, 0xde, 0x6e, 0xf3, 0xae, 0xd9, 0x53,
		0xc6, 0xe9, 0xcd, 0xf0, 0x42, 0xf0, 0x42, 0xf0, 0x42, 0xac, 0xbc, 0x50, 0x3e, 0xe3, 0xee, 0xf3,
		0x68, 0x07, 0x99, 0x5b, 0xdb, 0x47, 0xa6, 0x63, 0xea, 0x47, 0xb8, 0x8a, 0x79, 0xf1, 0x2b, 0xc7,
		0xab, 0x98, 0xf0, 0x7c, 0xbc, 0xf9, 0x6e, 0xf3, 0x1d, 0xee, 0x58, 0xca, 0xf5, 0x13, 0x8f, 0xfa,
		0x8b, 0xc5, 0xb3, 0xc1, 0xe5, 0x09, 0x02, 0x02, 0x7e, 0x01, 0x41, 0x34, 0xbd, 0xba, 0x72, 0xc2,
		0xdb, 0x59, 0x71, 0xa2, 0x35, 0x0e, 0x22, 0x65, 0x5d, 0x05, 0xae, 0xc8, 0x3e, 0x3c, 0x78, 0xea,
		0x83, 0x32, 0x52, 0x83, 0x03, 0x71, 0xee, 0x4c, 0x7d, 0x95, 0xa9, 0x51, 0x37, 0xfb, 0x1f, 0xde,
		0x6f, 0x6e, 0x6d, 0xbe, 0xb3, 0xdf, 0xf7, 0x0e, 0x8f, 0x9a, 0xc3, 0xf6, 0x7e, 0xa7, 0x95, 0xcd,
		0x29, 0x1f, 0x21, 0x42, 0x42, 0x84, 0x84, 0x08, 0x69, 0x0d, 0x23, 0x24, 0x21, 0xa7, 0x57, 0x22,
		0x9c, 0xb9, 0xab, 0x1c, 0x22, 0xa4, 0x7a, 0x86, 0xbf, 0xb3, 0x25, 0xa7, 0x57, 0xd9, 0x9f, 0x84,
		0x61, 0x30, 0x98, 0x4d, 0x8c, 0xcd, 0xa5, 0xbe, 0xb8, 0x3a, 0x4f, 0x7a, 0xa9, 0x35, 0xde, 0x6d,
		0x2d, 0x5b, 0xed, 0x1c, 0x70, 0x73, 0x6d, 0xfe, 0x51, 0xb9, 0x38, 0x88, 0x8c, 0x15, 0x7a, 0x69,
		0xf7, 0xdb, 0xc9, 0x11, 0xce, 0x61, 0xeb, 0x1f, 0xd9, 0xf5, 0x7c, 0xba, 0x05, 0x3c, 0xb2, 0xe7,
		0x7b, 0x46, 0x0d, 0x95, 0xd3, 0xc0, 0xca, 0xf9, 0xfd, 0x86, 0x75, 0xad, 0x4c, 0x9d, 0x95, 0xe6,
		0x55, 0xe6, 0xa5, 0x41, 0x65, 0x95, 0x89, 0xbe, 0xa0, 0x18, 0xee, 0x22, 0x74, 0xc6, 0xe2, 0x7c,
		0xea, 0x5b, 0xa1, 0x88, 0x94, 0x13, 0xaa, 0xec, 0xca, 0xa5, 0x1e, 0xfc, 0x66, 0x14, 0x4e, 0x15,
		0x8a, 0xd9, 0x51, 0x38, 0x85, 0xc2, 0xa9, 0x6f, 0xfe, 0xa2, 0x8c, 0xea, 0x23, 0x1f, 0x28, 0x71,
		0x26, 0x75, 0x92, 0x19, 0x1f, 0x7b, 0x84, 0xf0, 0x08, 0xe1, 0x11, 0xc2, 0xe7, 0x61, 0x46, 0xd2,
		0x5f, 0x28, 0xa4, 0x73, 0xe6, 0x8b, 0xec, 0xc7, 0x94, 0x2e, 0x51, 0x03, 0xb3, 0x0f, 0xc8, 0xba,
		0x07, 0x5d, 0x2e, 0xdd, 0xd9, 0x73, 0xeb, 0xc6, 0x9e, 0x67, 0xf7, 0xf5, 0x42, 0xba, 0xad, 0x17,
		0x79, 0xa1, 0x96, 0x6b, 0x37, 0xf5, 0x72, 0x6e, 0xd3, 0x72, 0xec, 0x96, 0x4e, 0xbb, 0x57, 0x64,
		0x6e, 0xdd, 0xcf, 0x73, 0xcc, 0x11, 0x7c, 0x80, 0x62, 0x6a, 0x6b, 0xdd, 0xdd, 0x30, 0x77, 0x1a,
		0x24, 0x07, 0x7e, 0x2a, 0x43, 0xe4, 0x75, 0x29, 0xfc, 0x89, 0x08, 0x93, 0xbe, 0x01, 0xf9, 0x79,
		0xc9, 0xe5, 0x0f, 0x81, 0xa7, 0x84, 0xa7, 0x84, 0xa7, 0x84, 0xa7, 0x84, 0xa7, 0x84, 0xa7, 0xcc,
		0xdf, 0x53, 0xa2, 0x07, 0x6e, 0xf6, 0x17, 0x0b, 0xf7, 0x49, 0xf4, 0x4c, 0x6e, 0x1a, 0xb2, 0x7b,
		0x62, 0x99, 0x24, 0x58, 0x25, 0xed, 0xf4, 0xb3, 0x4f, 0xa7, 0x4a, 0x7e, 0x2d, 0x71, 0x12, 0x72,
		0x13, 0x24, 0x24, 0x48, 0xc8, 0x42, 0x11, 0x0c, 0x48, 0xc8, 0x97, 0x9d, 0x06, 0x90, 0x90, 0x08,
		0xad, 0x10, 0x5a, 0x21, 0xb4, 0x42, 0x68, 0x05, 0xae, 0x0d, 0x5c, 0x1b, 0x1c, 0x02, 0x1c, 0x02,
		0x1c, 0x02, 0x1c, 0x02, 0x28, 0x25, 0xc6, 0x94, 0x52, 0x86, 0xf3, 0x0c, 0x91, 0x86, 0x4c, 0xea,
		0xd1, 0x16, 0x3f, 0x2d, 0xe7, 0x63, 0x22, 0x88, 0xfd, 0x71, 0x2e, 0x48, 0x7f, 0x2e, 0x07, 0xc3,
		0xc4, 0x68, 0x4f, 0x2a, 0x11, 0xfe, 0xff, 0xec, 0xfd, 0x6b, 0x73, 0xdb, 0x48, 0xb2, 0x35, 0x0a,
		0x7f, 0xf7, 0xaf, 0x40, 0xf0, 0xdd, 0x27, 0x5a, 0xda, 0xdb, 0x90, 0x44, 0x8a, 0xba, 0x46, 0x4c,
		0x4c, 0xc8, 0x12, 0xe5, 0xe6, 0x19, 0x5d, 0x18, 0x92, 0xec, 0xe9, 0x7e, 0x65, 0x0e, 0x03, 0x22,
		0x8b, 0x12, 0x76, 0x83, 0x00, 0x1f, 0xa0, 0xe8, 0x96, 0x1e, 0x8b, 0xff, 0xfd, 0x04, 0x40, 0x12,
		0xbc, 0xdb, 0x04, 0x90, 0x59, 0x00, 0xc8, 0xe5, 0x98, 0x98, 0x96, 0x69, 0xb1, 0x0a, 0xa8, 0xca,
		0xca, 0x5c, 0xb9, 0x2a, 0x2f, 0xba, 0xe1, 0x0a, 0x43, 0xef, 0xba, 0x4e, 0xd7, 0x78, 0x0e, 0xc4,
		0x42, 0xef, 0x3a, 0x96, 0xd9, 0x34, 0x09, 0x0a, 0x96, 0x8d, 0xcb, 0x67, 0xfe, 0x62, 0x22, 0x84,
		0x4d, 0x2b, 0x05, 0x86, 0x08, 0x9b, 0x46, 0xd8, 0x74, 0x6c, 0xc5, 0xf0, 0xc6, 0x50, 0x5d, 0xf7,
		0xa7, 0xd3, 0x21, 0xc8, 0x3a, 0x93, 0x5e, 0x25, 0xee, 0x37, 0xd2, 0xf2, 0x1a, 0xd7, 0xfc, 0x7e,
		0x83, 0x38, 0x67, 0x63, 0xee, 0x30, 0x90, 0xe6, 0x6e, 0x30, 0xa9, 0x17, 0x90, 0x59, 0x20, 0xb3,
		0x40, 0x66, 0x71, 0x90, 0x59, 0xd4, 0xea, 0x2a, 0x1c, 0xb8, 0x35, 0x28, 0x3e, 0xa3, 0x9b, 0x9d,
		0xae, 0xe3, 0x4a, 0x6a, 0xac, 0xb4, 0xf4, 0x8c, 0x2d, 0x9e, 0x96, 0x49, 0x82, 0x38, 0x0a, 0xec,
		0xcc, 0x4d, 0x72, 0x57, 0xf9, 0x7f, 0x2b, 0xe7, 0x0f, 0x8d, 0xbb, 0xdb, 0x2f, 0x0f, 0x95, 0x02,
		0xcb, 0x34, 0x75, 0xa6, 0xe5, 0xe1, 0xb9, 0xd0, 0x60, 0xb7, 0x05, 0x2a, 0x6c, 0xc2, 0x22, 0xdb,
		0xe0, 0x76, 0x1d, 0x8b, 0x49, 0x52, 0x55, 0x58, 0x08, 0xe5, 0x96, 0x42, 0xb9, 0xc5, 0x58, 0x66,
		0x39, 0x82, 0x8d, 0x63, 0x9b, 0xb1, 0xcf, 0x32, 0x72, 0x9f, 0xe9, 0xcc, 0xb0, 0x5d, 0x8e, 0x2c,
		0xd5, 0xf4, 0x03, 0x15, 0xaf, 0x4b, 0x7f, 0x62, 0xc6, 0xd3, 0xc3, 0x50, 0x4e, 0x68, 0x6e, 0x0e,
		0x96, 0xf2, 0x42, 0xf3, 0x5b, 0xc4, 0x59, 0x6e, 0x68, 0x6e, 0xb6, 0xa0, 0xfc, 0xd0, 0xd9, 0xf9,
		0x79, 0xa5, 0x36, 0xb2, 0x61, 0x1f, 0xf9, 0x27, 0x1d, 0x14, 0x22, 0x62, 0x37, 0x9c, 0xcc, 0x87,
		0x69, 0x62, 0xc7, 0xb8, 0x4a, 0x14, 0xcd, 0xab, 0xb6, 0xc9, 0x9d, 0x62, 0x33, 0xad, 0xcb, 0x01,
		0x0e, 0x75, 0xd9, 0x22, 0x35, 0xda, 0x34, 0x7f, 0x7a, 0x9a, 0x39, 0x9b, 0x21, 0x9c, 0x47, 0x59,
		0x56, 0x03, 0xdf, 0x36, 0x30, 0x6c, 0x41, 0xa1, 0xe5, 0xc9, 0x80, 0xe0, 0x55, 0xe0, 0x10, 0x8d,
		0x66, 0x02, 0xc8, 0xcf, 0x02, 0xc8, 0x67, 0x23, 0x80, 0x00, 0xf3, 0xf3, 0x4a, 0x10, 0x01, 0xe8,
		0xff, 0xfc, 0xd4, 0xf8, 0xf6, 0xc2, 0x15, 0x6d, 0x15, 0xe0, 0xfe, 0x88, 0x71, 0x8e, 0xda, 0x30,
		0x24, 0x64, 0x67, 0x67, 0x77, 0xf2, 0x7f, 0xbe, 0x6e, 0xf6, 0x82, 0xff, 0xdf, 0x35, 0x5b, 0xc2,
		0x96, 0x66, 0xdb, 0x14, 0x6e, 0x01, 0x58, 0x02, 0x58, 0x62, 0xd5, 0x65, 0x51, 0xcc, 0xb0, 0x2a,
		0x61, 0x56, 0x81, 0x2a, 0x22, 0xa1, 0x0a, 0x50, 0x87, 0x39, 0xc5, 0x14, 0xa0, 0x0e, 0x81, 0x28,
		0x12, 0x23, 0x8a, 0xdd, 0xa1, 0x20, 0x9d, 0xba, 0x4e, 0x4f, 0x9a, 0xf6, 0xf3, 0x50, 0x37, 0x87,
		0x1f, 0x0f, 0x19, 0xd2, 0x96, 0x68, 0x9b, 0xb6, 0xe9, 0x9b, 0x69, 0x6f, 0xf9, 0x3f, 0x85, 0xff,
		0x12, 0x84, 0x7f, 0xe6, 0x4a, 0x7e, 0xae, 0x4c, 0x4f, 0x9e, 0x49, 0xe9, 0xf2, 0xca, 0xd0, 0xb5,
		0x69, 0x57, 0x2c, 0xe1, 0x1f, 0x61, 0x8f, 0x97, 0x1f, 0x2b, 0x5c, 0x1b, 0xaf, 0x13, 0x33, 0x15,
		0x8f, 0xcb, 0xe5, 0xc3, 0xa3, 0x72, 0x79, 0xef, 0x68, 0xff, 0x68, 0xef, 0xe4, 0xe0, 0xa0, 0x78,
		0x58, 0x3c, 0x60, 0x9c, 0xfc, 0xd6, 0x6d, 0x09, 0x57, 0xb4, 0x3e, 0xbd, 0xf1, 0x2b, 0xfd, 0xd1,
		0xa9, 0xec, 0x79, 0xc2, 0xe5, 0xd6, 0xf7, 0x8a, 0x0c, 0xd9, 0xac, 0x31, 0x73, 0x06, 0xab, 0xa9,
		0x3f, 0xbd, 0xa9, 0x60, 0xbf, 0x55, 0x1b, 0xb5, 0x39, 0xc3, 0x16, 0xec, 0x64, 0x5e, 0x69, 0x5c,
		0x15, 0x87, 0xea, 0x8b, 0xbf, 0x40, 0x83, 0xad, 0x81, 0xa7, 0x07, 0x4f, 0x6f, 0xd5, 0x65, 0xf1,
		0xdc, 0xa6, 0x22, 0xd6, 0x38, 0x9c, 0x09, 0xfe, 0x5d, 0x16, 0xfc, 0x3b, 0xb0, 0xc6, 0xb9, 0xf5,
		0xf0, 0xc0, 0x1a, 0xc3, 0xc7, 0x23, 0xf0, 0xf1, 0xc0, 0x1a, 0x6f, 0x32, 0x96, 0xd8, 0xe8, 0xc2,
		0x88, 0x8a, 0x33, 0x6a, 0x7f, 0x91, 0x9c, 0xf9, 0xd3, 0x7f, 0x7f, 0x23, 0x2d, 0xd6, 0x47, 0xbf,
		0xfd, 0x94, 0xe5, 0x56, 0xd8, 0x42, 0x18, 0xb8, 0x43, 0x17, 0x50, 0x68, 0x45, 0x31, 0xc8, 0x44,
		0x6e, 0x4a, 0x56, 0x41, 0xe4, 0xa6, 0x17, 0x5a, 0xe1, 0x03, 0x89, 0x9c, 0xe0, 0x70, 0x12, 0x14,
		0x0e, 0xec, 0xcd, 0x6e, 0xa8, 0x2a, 0x37, 0xc0, 0xf0, 0xb0, 0xb1, 0x20, 0xdc, 0xec, 0x07, 0x0c,
		0x0f, 0x0c, 0x0f, 0x0c, 0x0f, 0x0c, 0xcf, 0x3a, 0x19, 0x9e, 0x50, 0x55, 0x6e, 0x82, 0xe1, 0x21,
		0x2d, 0x5b, 0x3e, 0x6f, 0x75, 0x08, 0xcb, 0x97, 0xcf, 0x49, 0x03, 0x97, 0xc9, 0x29, 0xc1, 0xe4,
		0xc0, 0xe4, 0xc0, 0xe4, 0x24, 0x5e, 0x04, 0xe4, 0xe1, 0x27, 0x59, 0x3c, 0xe4, 0xe1, 0xab, 0x77,
		0x3b, 0xd8, 0xdd, 0x0f, 0x15, 0x36, 0x61, 0x91, 0x6d, 0x40, 0x30, 0x6d, 0xc6, 0x2d, 0xc6, 0x32,
		0xcb, 0x81, 0x60, 0x5a, 0x05, 0x2e, 0xcc, 0x52, 0x4d, 0x8f, 0x3c, 0xfc, 0xa8, 0x5b, 0x84, 0x3c,
		0xfc, 0x7c, 0x1c, 0xa6, 0x89, 0x1d, 0x43, 0x1e, 0x7e, 0xa6, 0xb5, 0x29, 0xa3, 0x9e, 0x46, 0x5a,
		0xb9, 0x86, 0xb4, 0xf2, 0xcc, 0x62, 0x56, 0x04, 0x08, 0xe6, 0x16, 0xb5, 0x22, 0x40, 0x30, 0x1d,
		0xdc, 0x8a, 0x00, 0xc1, 0x8d, 0x32, 0x8d, 0xc8, 0x92, 0x06, 0xb1, 0x03, 0x62, 0x07, 0xc4, 0x0e,
		0x0c, 0xe4, 0x86, 0x1a, 0x48, 0x64, 0x49, 0x6b, 0xc8, 0x92, 0x26, 0x9e, 0x1c, 0x59, 0xd2, 0x94,
		0xc6, 0x0c, 0x59, 0xd2, 0xf9, 0x21, 0xd9, 0xd6, 0x22, 0x4b, 0x1a, 0x49, 0xbf, 0x1a, 0x92, 0x7e,
		0x33, 0xeb, 0xae, 0x80, 0xd3, 0xcb, 0xad, 0xc3, 0x02, 0x4e, 0x0f, 0x2e, 0x0b, 0x81, 0xcb, 0xb2,
		0x56, 0x9c, 0x1e, 0x72, 0x58, 0xf3, 0x92, 0xc3, 0x4a, 0xd8, 0x1d, 0x98, 0x7e, 0xf7, 0xb3, 0xd5,
		0xed, 0xed, 0x5f, 0xe2, 0x6d, 0x12, 0x39, 0x69, 0xc4, 0xd7, 0xa2, 0x3c, 0xde, 0x3a, 0x9f, 0x77,
		0xae, 0xd4, 0x1b, 0x9f, 0xf2, 0xbe, 0xed, 0x9e, 0x65, 0x71, 0x0c, 0x3d, 0xf4, 0x41, 0xda, 0x86,
		0xe5, 0x09, 0xb4, 0x26, 0xcf, 0x98, 0xa6, 0x2a, 0x90, 0x26, 0x77, 0xc4, 0x68, 0x7a, 0x5d, 0xf5,
		0x9f, 0xee, 0xcc, 0x15, 0x46, 0x6d, 0xfc, 0x6c, 0xb5, 0xc1, 0xa3, 0xa1, 0xb9, 0x7a, 0xfe, 0x9b,
		0xab, 0xff, 0xaa, 0x4f, 0x77, 0x0e, 0x7b, 0x9c, 0x77, 0xba, 0x16, 0x61, 0x23, 0xf3, 0x60, 0x34,
		0x74, 0x2b, 0x57, 0xea, 0xcd, 0xa3, 0x5b, 0x39, 0xba, 0x95, 0xff, 0x74, 0x20, 0xe2, 0x86, 0xc1,
		0x3c, 0x8d, 0x82, 0xd1, 0x7f, 0x1c, 0xfd, 0xc7, 0x15, 0x91, 0x75, 0xe8, 0x3f, 0x9e, 0x68, 0x40,
		0xe9, 0x1a, 0xed, 0xb6, 0xd9, 0xd4, 0x85, 0xfd, 0x6c, 0xda, 0x42, 0xb8, 0xa6, 0xfd, 0xac, 0x8b,
		0x57, 0x29, 0x6c, 0xcf, 0x74, 0x6c, 0x8f, 0x2f, 0x1d, 0xfa, 0x17, 0xf3, 0xa2, 0x34, 0x07, 0xf2,
		0xa4, 0xd3, 0x54, 0x5b, 0xca, 0xd4, 0x97, 0x2a, 0x35, 0x96, 0x0f, 0xa2, 0x96, 0xbf, 0x34, 0xc7,
		0x93, 0xe3, 0x58, 0xc2, 0xb0, 0x39, 0x4b, 0x73, 0x14, 0x37, 0x9a, 0x0b, 0x57, 0x56, 0x90, 0x73,
		0x5d, 0x49, 0xe7, 0x35, 0xa1, 0xfe, 0x3a, 0x5d, 0xcb, 0x23, 0xad, 0x97, 0x49, 0xc0, 0x96, 0x11,
		0xb8, 0xe7, 0xe6, 0x73, 0x57, 0xb7, 0x5a, 0x5d, 0xdd, 0x7b, 0xb3, 0x9b, 0xf4, 0x4e, 0xd8, 0xd4,
		0xe8, 0x70, 0xc5, 0xe0, 0x8a, 0xc1, 0x15, 0xdb, 0x1c, 0x57, 0x8c, 0x98, 0xd9, 0xe1, 0x65, 0x78,
		0x98, 0xd4, 0x0b, 0x5c, 0x2b, 0xb8, 0x56, 0x70, 0xad, 0xb4, 0x3c, 0x95, 0xa0, 0x12, 0xb6, 0xf1,
		0x64, 0x89, 0x16, 0x7f, 0x00, 0xeb, 0x68, 0x22, 0xc4, 0xaf, 0xaa, 0x56, 0x6c, 0x4a, 0x15, 0x9c,
		0x2a, 0x45, 0xa7, 0x5c, 0xe1, 0x29, 0x57, 0x7c, 0xaa, 0x15, 0x20, 0x8f, 0x22, 0x64, 0x52, 0x88,
		0xfc, 0x9c, 0x93, 0x42, 0xee, 0x89, 0x99, 0x83, 0xe2, 0xde, 0x02, 0x34, 0x8b, 0x49, 0x73, 0x0b,
		0x0a, 0x5d, 0xc7, 0x93, 0xba, 0x27, 0x3c, 0xcf, 0x74, 0x6c, 0xbd, 0xd7, 0xd5, 0x5b, 0xc2, 0x32,
		0x14, 0x24, 0xd1, 0x2f, 0x9e, 0x16, 0xd6, 0x1d, 0xd6, 0x1d, 0xd6, 0x1d, 0xd6, 0x3d, 0x77, 0xd6,
		0xbd, 0x67, 0xda, 0x72, 0xbf, 0xa4, 0xc0, 0xb8, 0x73, 0xe6, 0xa6, 0xdc, 0x19, 0xf6, 0xb3, 0x60,
		0xad, 0xb4, 0xeb, 0xff, 0x51, 0x90, 0x78, 0x7c, 0x6d, 0xda, 0x4a, 0x32, 0x9c, 0x83, 0xc9, 0xbe,
		0x1a, 0x56, 0x4f, 0xa8, 0xa9, 0xe3, 0x17, 0xcc, 0x77, 0xe9, 0x1a, 0x4d, 0x1f, 0x2d, 0x5d, 0x98,
		0xcf, 0x26, 0x77, 0x0a, 0xfe, 0xb4, 0xac, 0x8b, 0x67, 0x43, 0x9a, 0xdf, 0x05, 0x69, 0xcc, 0x7c,
		0x0a, 0x6a, 0x61, 0x5a, 0x54, 0x8c, 0x57, 0xf5, 0xa2, 0x52, 0x2e, 0x9d, 0x94, 0x4f, 0x0e, 0x8f,
		0x4a, 0x27, 0x07, 0x90, 0x99, 0x5c, 0x18, 0x28, 0xfe, 0xd1, 0xeb, 0xf0, 0xd9, 0xd6, 0xd4, 0x67,
		0x43, 0x72, 0xa4, 0xe2, 0xb8, 0x83, 0xc9, 0x7b, 0xf4, 0x0d, 0x6a, 0xda, 0x89, 0x16, 0x36, 0xf3,
		0x0e, 0x39, 0x5a, 0xd8, 0xa8, 0x75, 0xbc, 0x71, 0x7f, 0xb8, 0x9e, 0x66, 0x02, 0xf7, 0x87, 0xab,
		0x29, 0x32, 0x30, 0x8c, 0x29, 0x2b, 0x38, 0x55, 0x8a, 0x4e, 0xb9, 0xc2, 0x53, 0xae, 0xf8, 0x54,
		0x2b, 0x40, 0x5e, 0x17, 0x0b, 0xf7, 0x87, 0x11, 0xd0, 0x58, 0x11, 0xd7, 0x61, 0xb8, 0x0e, 0x83,
		0xb1, 0x82, 0xb1, 0x82, 0xb1, 0x82, 0xb1, 0x8a, 0x75, 0x6a, 0x70, 0x1d, 0xb6, 0xf2, 0x1f, 0x5c,
		0x87, 0x25, 0x9b, 0x0f, 0xd7, 0x61, 0xa4, 0xa2, 0x82, 0xeb, 0xb0, 0xf5, 0x92, 0x19, 0x5c, 0x87,
		0xf1, 0xba, 0x20, 0xb8, 0xdd, 0x49, 0xf3, 0x76, 0x07, 0xe5, 0x2c, 0xd3, 0x96, 0x85, 0xd4, 0x65,
		0x20, 0xf5, 0x42, 0x81, 0xd7, 0x5d, 0xcb, 0x6b, 0x54, 0x9f, 0xbb, 0x57, 0xad, 0xee, 0xbd, 0xff,
		0x3c, 0x6b, 0x94, 0xef, 0x4c, 0x7b, 0xa5, 0xc8, 0x72, 0x95, 0xc8, 0x96, 0xe1, 0x5c, 0x42, 0x86,
		0x33, 0x32, 0x9c, 0x95, 0x92, 0x0b, 0x28, 0x36, 0xc5, 0xc2, 0x45, 0xa0, 0xd8, 0x94, 0x62, 0xf5,
		0xa4, 0x44, 0x4d, 0x71, 0xab, 0x2b, 0x65, 0x6a, 0x4b, 0x99, 0xfa, 0x52, 0xa5, 0xc6, 0xf2, 0xe1,
		0x1a, 0xa1, 0xd8, 0x14, 0x3c, 0x9f, 0x1c, 0x7a, 0x3e, 0x84, 0x0e, 0x2f, 0x0a, 0x90, 0xa7, 0xbe,
		0x9d, 0x05, 0x12, 0x1f, 0x2d, 0xa6, 0xcf, 0x9a, 0xc7, 0x12, 0xe7, 0x34, 0x0e, 0x29, 0xa9, 0x23,
		0x4a, 0x5e, 0xe4, 0xbc, 0x84, 0x22, 0xe7, 0xd9, 0x40, 0x68, 0x28, 0x72, 0x9e, 0x8a, 0xc3, 0x58,
		0x78, 0x31, 0x5b, 0x42, 0x97, 0xae, 0x61, 0x7b, 0xa6, 0xd4, 0x1d, 0xdb, 0x7a, 0x1b, 0x29, 0x60,
		0x8f, 0x9e, 0x8a, 0xfa, 0xc9, 0x5c, 0xb4, 0xfc, 0xd4, 0x1e, 0x2a, 0xf0, 0x81, 0x9f, 0x02, 0x3f,
		0x45, 0x87, 0xea, 0xc9, 0x1d, 0x38, 0x46, 0xc7, 0x8d, 0xd8, 0x61, 0xa3, 0x5a, 0x42, 0xf1, 0x2a,
		0x5d, 0x43, 0xef, 0xf9, 0x58, 0xf1, 0xc9, 0x22, 0x5e, 0x4c, 0x57, 0xb4, 0x85, 0x2b, 0xec, 0x26,
		0x7d, 0x00, 0x0d, 0xa3, 0xcb, 0x7e, 0x77, 0x79, 0x7e, 0x78, 0x7c, 0xb8, 0xa7, 0xe9, 0xda, 0xef,
		0x66, 0xcb, 0xb4, 0x9f, 0xb5, 0x87, 0xa1, 0x65, 0xb8, 0xb5, 0xad, 0x37, 0x6d, 0x88, 0xad, 0x3d,
		0xcd, 0xb4, 0xb5, 0xdb, 0xfb, 0xda, 0x65, 0xce, 0xd9, 0xac, 0xf1, 0x0e, 0xad, 0x13, 0xa1, 0x15,
		0x71, 0x0b, 0xb3, 0xce, 0x7a, 0x91, 0x8d, 0x56, 0x5f, 0xb3, 0x32, 0xcc, 0xde, 0x8b, 0xe3, 0xca,
		0x66, 0x4f, 0x7a, 0x3c, 0x75, 0x98, 0xc7, 0xc3, 0x03, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06,
		0x66, 0x10, 0x06, 0x66, 0x42, 0x19, 0x5b, 0xce, 0xb3, 0x6e, 0xb4, 0xfe, 0xd7, 0x68, 0x0a, 0xbb,
		0xf9, 0xa6, 0x37, 0x5f, 0x0c, 0xfb, 0x59, 0x30, 0x28, 0xe5, 0xc5, 0xd3, 0x40, 0x39, 0x43, 0x39,
		0x43, 0x39, 0x43, 0x39, 0x43, 0x39, 0x2f, 0xf1, 0xc2, 0x9d, 0x9e, 0x14, 0xae, 0x6e, 0xb6, 0xe8,
		0x15, 0xf2, 0x78, 0x68, 0x28, 0x61, 0x28, 0x61, 0x28, 0xe1, 0x0d, 0x54, 0xc2, 0x2d, 0x47, 0x4a,
		0xd1, 0xd2, 0xff, 0x4f, 0xcf, 0x68, 0x71, 0x28, 0xe2, 0x63, 0xc2, 0x31, 0x6b, 0x86, 0x94, 0xc2,
		0xb5, 0xc9, 0xc9, 0xc8, 0xc2, 0xd6, 0xd6, 0xe3, 0x9e, 0x7e, 0x52, 0x7f, 0x7f, 0x2c, 0xea, 0x27,
		0xf5, 0xc1, 0x8f, 0xc5, 0xe0, 0x3f, 0x83, 0x9f, 0x4b, 0x8f, 0x7b, 0x7a, 0x79, 0xf4, 0xf3, 0xc1,
		0xe3, 0x9e, 0x7e, 0x50, 0xdf, 0xfe, 0xf6, 0x6d, 0x67, 0xfb, 0xc7, 0x7e, 0x3f, 0xfa, 0x17, 0x0b,
		0x59, 0x63, 0x83, 0xc0, 0x43, 0x93, 0xfe, 0x19, 0xdb, 0xd6, 0x76, 0xb3, 0x74, 0x5c, 0x3a, 0x06,
		0xc1, 0x9c, 0xae, 0x9d, 0x58, 0x68, 0x2f, 0x46, 0x7b, 0x03, 0xe6, 0x38, 0x87, 0x78, 0xd8, 0xeb,
		0x75, 0x3a, 0x86, 0xfb, 0xa6, 0x07, 0xe0, 0x55, 0x6f, 0x3a, 0x9e, 0xd4, 0x3b, 0x4e, 0x8b, 0x23,
		0xc5, 0x65, 0xc9, 0x44, 0x54, 0xc1, 0xf9, 0xa2, 0x6d, 0xf4, 0x2c, 0x49, 0xaa, 0xd3, 0x0a, 0x77,
		0x97, 0xe7, 0xa5, 0xfd, 0xd2, 0x71, 0xe3, 0xfc, 0xf6, 0xba, 0x76, 0xf6, 0x50, 0xfd, 0x74, 0x55,
		0xa1, 0x11, 0xf2, 0x3a, 0x1c, 0x04, 0x38, 0x08, 0x70, 0x10, 0x36, 0xd0, 0x41, 0x10, 0x76, 0xaf,
		0x23, 0xdc, 0x41, 0x8c, 0x2e, 0x83, 0x83, 0x50, 0x26, 0x1c, 0xb3, 0x62, 0xf7, 0x3a, 0xf4, 0x27,
		0xe1, 0xc1, 0xb9, 0x97, 0xae, 0x69, 0x3f, 0xf3, 0x64, 0x1a, 0xec, 0x0d, 0x2f, 0xbc, 0x8b, 0x07,
		0xc7, 0xfb, 0x93, 0x5a, 0x9b, 0x01, 0x36, 0x16, 0x87, 0x53, 0xb1, 0x18, 0x08, 0x62, 0x81, 0x9e,
		0x58, 0xfd, 0x6a, 0x70, 0x84, 0x19, 0x96, 0x7e, 0xc1, 0xaa, 0xb3, 0x54, 0x91, 0x58, 0xb4, 0xe6,
		0xa7, 0xda, 0x9a, 0xe7, 0x7d, 0x20, 0x31, 0x61, 0x1a, 0xb4, 0xaa, 0x4d, 0x4c, 0x20, 0x48, 0x31,
		0x49, 0x27, 0x39, 0x40, 0x9a, 0x1d, 0xe1, 0x7a, 0x74, 0xd9, 0x01, 0xc3, 0xf1, 0x32, 0x96, 0x1e,
		0xb0, 0x87, 0xf4, 0x80, 0x6c, 0xa0, 0x51, 0xa4, 0x07, 0x44, 0x73, 0x59, 0xa9, 0xd2, 0x03, 0x2c,
		0xcf, 0xd0, 0x9f, 0x85, 0x3d, 0xc2, 0x95, 0xf4, 0x91, 0x06, 0xd3, 0xe3, 0xa3, 0x11, 0x3f, 0x9c,
		0x57, 0x38, 0xaf, 0x99, 0x75, 0x5e, 0xd1, 0x88, 0x5f, 0x43, 0x23, 0x7e, 0x75, 0x6a, 0x87, 0x5b,
		0xfd, 0x28, 0x53, 0x43, 0xca, 0xd4, 0x91, 0x2a, 0xb5, 0x44, 0xef, 0xcd, 0x6a, 0x79, 0x6a, 0xa4,
		0x61, 0xda, 0xa6, 0x34, 0x0d, 0x4b, 0x55, 0xbd, 0xf2, 0xe9, 0xe9, 0x50, 0xa7, 0x5c, 0xb5, 0x92,
		0x53, 0xaa, 0xec, 0x54, 0x29, 0x3d, 0xe5, 0xca, 0x4f, 0xb9, 0x12, 0x54, 0xad, 0x0c, 0x79, 0x94,
		0x22, 0x93, 0x72, 0x0c, 0x17, 0x07, 0x75, 0xca, 0x23, 0x4d, 0x81, 0x3a, 0xe5, 0x71, 0x26, 0x43,
		0x9d, 0x72, 0x36, 0x65, 0x83, 0x3a, 0xe5, 0x90, 0x99, 0x4c, 0x18, 0x28, 0xfe, 0xd1, 0xd1, 0xb6,
		0x77, 0xd1, 0x3c, 0xeb, 0xd0, 0xb6, 0x97, 0x81, 0x33, 0xe8, 0x18, 0xaf, 0x66, 0xa7, 0xd7, 0x51,
		0xe5, 0xa3, 0x4d, 0x4f, 0x07, 0x1f, 0x0d, 0x3e, 0x1a, 0x7c, 0x34, 0xf8, 0x68, 0xf0, 0xd1, 0xe0,
		0xa3, 0xc1, 0x47, 0x83, 0x8f, 0x06, 0x1f, 0x0d, 0x32, 0x03, 0x1f, 0x0d, 0x3e, 0x5a, 0x9e, 0x7d,
		0x34, 0x34, 0xdf, 0x52, 0x17, 0x16, 0x3a, 0x88, 0x86, 0xdc, 0x9d, 0x8e, 0x8e, 0xda, 0x1d, 0x46,
		0x33, 0x64, 0x35, 0x1e, 0x99, 0xb4, 0x37, 0x14, 0x65, 0x2f, 0xa4, 0x39, 0x94, 0x4b, 0xd9, 0x13,
		0x69, 0x16, 0xd8, 0xb2, 0x45, 0x85, 0x94, 0x10, 0x15, 0xa2, 0xd4, 0xf9, 0x46, 0x54, 0xc8, 0x7a,
		0x9a, 0x0a, 0x44, 0x85, 0x44, 0x57, 0x6a, 0x60, 0x1c, 0x53, 0x56, 0x76, 0xaa, 0x94, 0x9e, 0x72,
		0xe5, 0xa7, 0x5c, 0x09, 0xaa, 0x56, 0x86, 0xbc, 0x2e, 0x17, 0x18, 0xc7, 0x95, 0x75, 0x18, 0x18,
		0xc7, 0x55, 0x68, 0x24, 0x30, 0x8e, 0x6b, 0xc1, 0x1e, 0x81, 0x71, 0x84, 0xcc, 0x64, 0xc2, 0x40,
		0xf1, 0x8f, 0x5e, 0x47, 0x90, 0x03, 0x82, 0x1c, 0xe0, 0x72, 0xc0, 0xe5, 0x80, 0xcb, 0x01, 0x97,
		0x03, 0x2e, 0x07, 0x5c, 0x0e, 0xb8, 0x1c, 0x70, 0x39, 0xe0, 0x72, 0xc0, 0xe5, 0x80, 0xcb, 0xc1,
		0xe1, 0x72, 0x04, 0x57, 0xd3, 0xba, 0xe4, 0x34, 0xd6, 0xd3, 0x45, 0x81, 0x06, 0x73, 0xc1, 0xd9,
		0x80, 0xb3, 0x01, 0x67, 0x03, 0xce, 0x46, 0xee, 0x9c, 0x0d, 0x9e, 0xb2, 0x9c, 0xcb, 0x14, 0x19,
		0x65, 0x99, 0xce, 0xb9, 0x39, 0x58, 0xca, 0x76, 0xce, 0x6f, 0x0d, 0x67, 0x19, 0xcf, 0xb9, 0xd9,
		0x82, 0xb2, 0x9e, 0x57, 0xd5, 0x9b, 0xca, 0xd9, 0x5d, 0xe3, 0xd3, 0xd9, 0xf9, 0xbf, 0x6e, 0x2f,
		0x2f, 0x0b, 0x0a, 0x90, 0x6c, 0x50, 0xe2, 0xb3, 0xf2, 0x47, 0xed, 0xf6, 0xa6, 0x72, 0xf3, 0x50,
		0x3d, 0xbb, 0x0a, 0xe7, 0xfe, 0x90, 0x63, 0x8c, 0xce, 0x58, 0x03, 0x74, 0x5e, 0x16, 0x17, 0xac,
		0x1d, 0x79, 0xf0, 0xd5, 0xc2, 0x99, 0x67, 0x84, 0xe5, 0x54, 0xdb, 0xcb, 0x29, 0x8a, 0x45, 0xe4,
		0x29, 0x89, 0x99, 0xdd, 0x84, 0xc8, 0x53, 0x82, 0x32, 0xa5, 0x7c, 0xbb, 0x9a, 0xad, 0x1a, 0x69,
		0x4c, 0xf2, 0x90, 0x09, 0x39, 0x28, 0x90, 0x86, 0xf8, 0xba, 0xbd, 0xa6, 0xb4, 0x87, 0x28, 0x69,
		0xd8, 0x2b, 0xba, 0x3a, 0x7c, 0xbe, 0x46, 0x6d, 0xf8, 0x54, 0x8d, 0xdb, 0xe0, 0xa9, 0x1a, 0x9f,
		0x83, 0xa7, 0x6a, 0x3c, 0x04, 0x4f, 0xd5, 0xb8, 0xf2, 0x8c, 0xcf, 0xe3, 0x87, 0x5a, 0xa3, 0x96,
		0x19, 0x1d, 0xe3, 0x55, 0xef, 0x08, 0xe9, 0x9a, 0x4d, 0xfa, 0x52, 0x9b, 0x13, 0x63, 0xa3, 0xcc,
		0x66, 0x26, 0x9d, 0x61, 0x94, 0xd9, 0x4c, 0xcb, 0x99, 0x45, 0x99, 0xcd, 0x44, 0x87, 0x01, 0x65,
		0x36, 0x91, 0x50, 0x91, 0x21, 0xce, 0x0d, 0x09, 0x15, 0x4a, 0x3d, 0x20, 0xc6, 0x84, 0x8a, 0xa6,
		0xd5, 0x6b, 0x09, 0x15, 0xa9, 0x14, 0x83, 0x89, 0x70, 0xc9, 0xa0, 0x5a, 0xb1, 0x29, 0x55, 0x70,
		0xaa, 0x14, 0x9d, 0x72, 0x85, 0xa7, 0x5c, 0xf1, 0xa9, 0x56, 0x80, 0xcc, 0x94, 0x55, 0xee, 0x2f,
		0x19, 0xcc, 0x96, 0xb0, 0xa5, 0x29, 0xdf, 0x5c, 0xd1, 0x56, 0x71, 0xc9, 0xc0, 0x18, 0x09, 0x51,
		0xa8, 0x0e, 0x5f, 0xe5, 0x93, 0xe1, 0x29, 0x38, 0xa1, 0xa3, 0x05, 0xbc, 0x3e, 0xfb, 0xa3, 0x71,
		0x5d, 0x79, 0xb8, 0xab, 0x9e, 0x37, 0xaa, 0x37, 0xe7, 0x57, 0x5f, 0x2e, 0x2a, 0xdc, 0x47, 0x35,
		0x08, 0x2f, 0xf1, 0xd8, 0x03, 0xb8, 0x34, 0x25, 0x41, 0x5c, 0xbf, 0x58, 0xcb, 0xc6, 0xfd, 0xc3,
		0x97, 0x4f, 0x85, 0x75, 0x08, 0x41, 0x4a, 0x7f, 0x29, 0x1f, 0xfe, 0xac, 0x55, 0x4a, 0x8d, 0xca,
		0x1f, 0x0f, 0x95, 0xbb, 0x9b, 0xb3, 0xab, 0x42, 0xce, 0x63, 0x74, 0xea, 0x30, 0x15, 0xc1, 0x86,
		0x5f, 0x99, 0x9e, 0x3c, 0x93, 0xd2, 0xe5, 0x35, 0x17, 0xd7, 0xa6, 0x5d, 0xb1, 0x84, 0x6f, 0xaf,
		0x99, 0xc3, 0xca, 0x0a, 0xd7, 0xc6, 0xeb, 0xc4, 0x4c, 0xc5, 0xe3, 0x72, 0xf9, 0xf0, 0xa8, 0x5c,
		0xde, 0x3b, 0xda, 0x3f, 0xda, 0x3b, 0x39, 0x38, 0x28, 0x1e, 0xb2, 0x9a, 0x90, 0x5b, 0xb7, 0x25,
		0x5c, 0xd1, 0xfa, 0xf4, 0x56, 0x38, 0xd5, 0xec, 0x9e, 0x65, 0xa9, 0x98, 0xea, 0x8b, 0x27, 0x5c,
		0xd6, 0xb8, 0x39, 0x94, 0xc0, 0x49, 0x5d, 0x01, 0x70, 0x84, 0xd3, 0x79, 0x42, 0xf2, 0xfb, 0xb7,
		0xfe, 0x24, 0xf0, 0x6d, 0xe1, 0xdb, 0xc2, 0xb7, 0x85, 0x6f, 0x9b, 0x3b, 0xdf, 0xf6, 0xc9, 0x71,
		0x2c, 0x61, 0x28, 0x09, 0x9e, 0x2b, 0xe6, 0x6a, 0x0b, 0xc4, 0xab, 0x74, 0x0d, 0xbd, 0x67, 0x7b,
		0xd2, 0x78, 0xb2, 0x98, 0x37, 0xc3, 0x15, 0x6d, 0xe1, 0x0a, 0xbb, 0xb9, 0x16, 0x19, 0x47, 0x23,
		0xc9, 0xba, 0xbb, 0x3c, 0xdf, 0x2f, 0xee, 0x1f, 0x69, 0xba, 0x76, 0x7b, 0x5f, 0xbb, 0xd4, 0xee,
		0x65, 0xef, 0x49, 0xbb, 0x73, 0x7a, 0x52, 0xb8, 0xda, 0x59, 0xeb, 0xbb, 0x70, 0xa5, 0xe9, 0x05,
		0x10, 0x56, 0x45, 0x40, 0xa0, 0x22, 0xb5, 0xbd, 0x48, 0x7d, 0x8f, 0xf7, 0x56, 0x51, 0x9e, 0x89,
		0x6a, 0x4d, 0xbe, 0x50, 0xa3, 0xaf, 0xbc, 0xf9, 0xc8, 0x82, 0x51, 0xea, 0xbb, 0xc3, 0xcf, 0x59,
		0x4b, 0x3f, 0x47, 0x9a, 0x1d, 0xe1, 0xf4, 0xa4, 0x9a, 0x9c, 0x21, 0x7f, 0x22, 0xf8, 0x3b, 0xf0,
		0x77, 0xe0, 0xef, 0xc0, 0xdf, 0xc9, 0x9d, 0xbf, 0xd3, 0x33, 0x6d, 0x79, 0x58, 0x56, 0xe0, 0xee,
		0x1c, 0xa3, 0x3a, 0xc1, 0xaf, 0x5f, 0x04, 0xd5, 0x09, 0x58, 0x64, 0x1d, 0xd5, 0x09, 0x88, 0x44,
		0x45, 0xed, 0xd5, 0xca, 0xa6, 0x4a, 0x0f, 0x3c, 0x34, 0x78, 0x68, 0x6b, 0xef, 0xa1, 0xb9, 0xe6,
		0xf3, 0xb3, 0x70, 0x15, 0x78, 0x68, 0xc3, 0x89, 0xe0, 0xa1, 0xc1, 0x43, 0x83, 0x87, 0x06, 0x0f,
		0x2d, 0x77, 0x1e, 0x1a, 0xa2, 0x2d, 0x13, 0x2e, 0xe0, 0x44, 0x58, 0xdb, 0xc3, 0x5d, 0xf5, 0xf3,
		0xe7, 0xca, 0x1d, 0xa2, 0x2d, 0x09, 0xd6, 0xf2, 0xf6, 0xa6, 0x71, 0xff, 0xe7, 0xfd, 0x43, 0xe5,
		0xba, 0xf1, 0xe9, 0xf6, 0xf6, 0x01, 0xa1, 0x81, 0xeb, 0xa1, 0xd7, 0x10, 0x1a, 0x48, 0x38, 0x39,
		0x42, 0x03, 0xe1, 0x90, 0xa1, 0x46, 0x09, 0xf5, 0x06, 0xa6, 0x53, 0x9b, 0x62, 0x5c, 0xd0, 0x00,
		0x9d, 0xf1, 0xa8, 0xd0, 0x04, 0x3a, 0xe3, 0x21, 0x91, 0x3b, 0x3b, 0x9e, 0x36, 0x12, 0xb9, 0x95,
		0x9a, 0x09, 0x24, 0x72, 0xaf, 0xa6, 0xc8, 0x40, 0x2d, 0xa6, 0xac, 0xe0, 0x54, 0x29, 0x3a, 0xe5,
		0x0a, 0x4f, 0xb9, 0xe2, 0x53, 0xad, 0x00, 0xf3, 0xe9, 0x82, 0x83, 0x5a, 0x8c, 0x31, 0x07, 0x12,
		0xb9, 0xc9, 0xff, 0x20, 0x91, 0x7b, 0x8d, 0x96, 0x12, 0x89, 0xdc, 0xeb, 0x68, 0x2a, 0xc0, 0xd6,
		0x12, 0x4e, 0xbe, 0x9e, 0x6c, 0x2d, 0xf2, 0x92, 0x91, 0x97, 0x0c, 0x57, 0x0d, 0xae, 0x1a, 0x5c,
		0xb5, 0x5c, 0xbb, 0x6a, 0xc8, 0x4b, 0x5e, 0xf2, 0xd4, 0xc8, 0x4b, 0x4e, 0x28, 0x59, 0xc8, 0x4b,
		0x46, 0x5e, 0x32, 0xf2, 0x92, 0x33, 0xe6, 0x8a, 0x22, 0xcd, 0x56, 0x43, 0x9a, 0x2d, 0xe0, 0x3b,
		0xe0, 0x3b, 0xe0, 0x3b, 0xd2, 0x6c, 0xa3, 0xe8, 0x30, 0xa4, 0xd9, 0xae, 0xf0, 0x22, 0x48, 0xb3,
		0x65, 0x91, 0x75, 0xa4, 0xd9, 0x12, 0x89, 0x0a, 0xd2, 0x6c, 0x91, 0x66, 0x0b, 0x87, 0x63, 0x91,
		0xc3, 0x81, 0xac, 0x51, 0x38, 0x1c, 0x70, 0x38, 0xe0, 0x70, 0xc0, 0xe1, 0xf8, 0xc5, 0xa9, 0x41,
		0x68, 0x57, 0xc2, 0x05, 0x44, 0xd6, 0x28, 0xcb, 0x5a, 0x22, 0x6b, 0x74, 0x1d, 0xf5, 0x1a, 0xe2,
		0x90, 0x08, 0x27, 0x47, 0x1c, 0x52, 0x0a, 0x23, 0x22, 0x09, 0x32, 0x62, 0x12, 0x24, 0x9a, 0xb4,
		0xa7, 0x2d, 0x0b, 0xa9, 0xcb, 0x40, 0x56, 0x1a, 0xb4, 0x5f, 0x1b, 0xaf, 0xd7, 0x83, 0x07, 0x5a,
		0xa3, 0xe6, 0xec, 0x5e, 0xb7, 0x4d, 0xdf, 0x95, 0xdd, 0x1f, 0x14, 0xed, 0xd8, 0x33, 0x49, 0x49,
		0xa0, 0x1d, 0x7b, 0x5a, 0x94, 0x02, 0xda, 0xb1, 0x27, 0x3a, 0x0c, 0x68, 0xc7, 0x8e, 0x2c, 0xfe,
		0x0c, 0xa8, 0x21, 0x65, 0xea, 0x48, 0x95, 0x5a, 0xca, 0x87, 0x9f, 0xc3, 0x98, 0xc5, 0x6f, 0x4a,
		0xd3, 0xb0, 0xf4, 0x96, 0xb0, 0x8c, 0x37, 0x15, 0xb9, 0xfc, 0x93, 0xd3, 0xe1, 0xda, 0x47, 0xb5,
		0x92, 0x53, 0xaa, 0xec, 0x54, 0x29, 0x3d, 0xe5, 0xca, 0x4f, 0xb9, 0x12, 0x54, 0xad, 0x0c, 0xf9,
		0xe8, 0x24, 0x6d, 0x6d, 0xe2, 0xcc, 0xf6, 0x4b, 0x0a, 0x6e, 0x7c, 0x8e, 0x10, 0x67, 0xf6, 0xeb,
		0x17, 0x41, 0x9c, 0x19, 0x8b, 0xac, 0x23, 0xce, 0x8c, 0x48, 0x54, 0xca, 0xa5, 0x93, 0xf2, 0xc9,
		0xe1, 0x51, 0xe9, 0x04, 0xd1, 0x65, 0xf9, 0x30, 0x50, 0xfc, 0xa3, 0xa3, 0x89, 0xc3, 0xa2, 0x79,
		0xd0, 0xc4, 0x61, 0xe1, 0xb2, 0x74, 0x8c, 0x57, 0xb3, 0xd3, 0xeb, 0xa8, 0xf2, 0xd1, 0xa6, 0xa7,
		0x83, 0x8f, 0x06, 0x1f, 0x0d, 0x3e, 0x1a, 0x7c, 0x34, 0xf8, 0x68, 0xf0, 0xd1, 0xe0, 0xa3, 0xc1,
		0x47, 0x83, 0x8f, 0x06, 0x99, 0x81, 0x8f, 0x06, 0x1f, 0x0d, 0x7d, 0x1d, 0x78, 0x36, 0x74, 0x4d,
		0x43, 0x1a, 0xbd, 0x6e, 0x1b, 0x0d, 0x1d, 0xa8, 0xa0, 0x2d, 0x1a, 0x3a, 0x20, 0x14, 0x24, 0x3b,
		0x9e, 0x36, 0x42, 0x41, 0x94, 0xda, 0x07, 0x84, 0x82, 0x44, 0x57, 0x6a, 0xa0, 0x19, 0x53, 0x56,
		0x76, 0xaa, 0x94, 0x9e, 0x72, 0xe5, 0xa7, 0x5c, 0x09, 0xaa, 0x56, 0x86, 0xbc, 0x7e, 0x16, 0x68,
		0xc6, 0x95, 0x75, 0x18, 0x68, 0xc6, 0x55, 0xb8, 0x23, 0xd0, 0x8c, 0x6b, 0x41, 0x19, 0x81, 0x66,
		0x84, 0xcc, 0x64, 0xc2, 0x40, 0xf1, 0x8f, 0x5e, 0x47, 0x64, 0x03, 0x22, 0x1b, 0xe0, 0x72, 0xc0,
		0xe5, 0x80, 0xcb, 0x01, 0x97, 0x03, 0x2e, 0x07, 0x5c, 0x0e, 0xb8, 0x1c, 0x70, 0x39, 0xe0, 0x72,
		0xc0, 0xe5, 0x80, 0xcb, 0xc1, 0xd5, 0x4c, 0xc1, 0xd5, 0x25, 0xa7, 0xb1, 0x9e, 0xea, 0xa7, 0x30,
		0x9c, 0x0b, 0xce, 0x06, 0x9c, 0x0d, 0x38, 0x1b, 0x70, 0x36, 0x72, 0xe7, 0x6c, 0x08, 0xbb, 0xd7,
		0x11, 0xee, 0x20, 0x1e, 0x49, 0x41, 0x85, 0xd3, 0x32, 0xe3, 0x1c, 0x15, 0xbb, 0xd7, 0xe1, 0x3f,
		0x99, 0x0f, 0xce, 0xbd, 0x74, 0x4d, 0xfb, 0x59, 0x09, 0xd2, 0x2b, 0xec, 0xf9, 0x7b, 0x74, 0x55,
		0xbd, 0xa9, 0x9c, 0xdd, 0x35, 0x3e, 0x9d, 0x9d, 0xff, 0xeb, 0xf6, 0xf2, 0x52, 0x45, 0x07, 0xb1,
		0xa2, 0x3f, 0x6d, 0xe5, 0x8f, 0xda, 0xed, 0x4d, 0xe5, 0xe6, 0xa1, 0x7a, 0x76, 0x15, 0xce, 0xfd,
		0x21, 0xc7, 0x18, 0xbd, 0xf0, 0xe0, 0x54, 0x6d, 0xa9, 0x66, 0xdf, 0x16, 0xad, 0x1d, 0x79, 0xf0,
		0xd5, 0xc2, 0x99, 0x67, 0x84, 0xe5, 0x54, 0xdb, 0xcb, 0x29, 0x8a, 0x45, 0xb8, 0x29, 0x89, 0x99,
		0x5d, 0xdb, 0x70, 0x53, 0x94, 0xce, 0x4c, 0x5b, 0x08, 0xd2, 0xdb, 0xfc, 0xac, 0xd4, 0xcc, 0xbc,
		0xef, 0xb6, 0x33, 0x53, 0x2d, 0xf3, 0x43, 0x8a, 0x92, 0x46, 0x2d, 0x61, 0xe9, 0x48, 0x56, 0x81,
		0xa2, 0xe0, 0x68, 0x7c, 0x69, 0x4a, 0x26, 0x49, 0xf1, 0xf7, 0x3f, 0xde, 0x37, 0x63, 0x4a, 0x0c,
		0x95, 0xa4, 0x28, 0x96, 0x90, 0x04, 0xa2, 0x11, 0x4b, 0x24, 0xe2, 0xc9, 0x42, 0xf4, 0x9d, 0x8c,
		0xf6, 0x8d, 0x88, 0x7b, 0x4e, 0xd1, 0x55, 0xba, 0xf0, 0xf7, 0x8b, 0xb0, 0x63, 0xdf, 0x23, 0x25,
		0x90, 0xaf, 0x91, 0x83, 0xbc, 0x33, 0xcc, 0x6b, 0xd9, 0x1d, 0xf4, 0x02, 0x69, 0x9b, 0xc2, 0xd5,
		0xfe, 0xa1, 0xfd, 0xe6, 0x34, 0xf5, 0xae, 0x63, 0x05, 0xe4, 0x9f, 0x77, 0x7a, 0x7b, 0x5f, 0xbb,
		0xfc, 0x2d, 0x89, 0x88, 0x10, 0xd1, 0x4a, 0x93, 0xb4, 0x51, 0xb0, 0x6e, 0x09, 0xb5, 0x3a, 0x35,
		0x29, 0x34, 0x45, 0xfa, 0xac, 0xbe, 0xb0, 0x1f, 0x52, 0xb0, 0x6a, 0x85, 0x0b, 0xe1, 0x35, 0x5d,
		0xb3, 0x4b, 0x62, 0xd2, 0x42, 0x61, 0xaa, 0xda, 0x4d, 0xab, 0xd7, 0x12, 0x41, 0x9b, 0xe8, 0xef,
		0x25, 0xad, 0x6b, 0xb8, 0x46, 0x47, 0x48, 0xe1, 0x7a, 0x9a, 0x63, 0x5b, 0x6f, 0x9a, 0xbf, 0x67,
		0x9a, 0x7c, 0x11, 0xda, 0x48, 0x09, 0x7d, 0xb3, 0x4d, 0x4f, 0x73, 0xda, 0x9a, 0xbf, 0x1a, 0xc3,
		0x2f, 0x25, 0xdd, 0x53, 0x42, 0x06, 0x73, 0x52, 0xdc, 0x5a, 0x13, 0xcb, 0x45, 0x60, 0x46, 0x39,
		0xe8, 0xc8, 0x29, 0xe9, 0xa3, 0xd8, 0x89, 0x7c, 0xd9, 0xeb, 0xc8, 0xdf, 0xaa, 0xb3, 0xda, 0x86,
		0x84, 0x38, 0x40, 0x95, 0xfd, 0x8f, 0x21, 0xcc, 0xd1, 0x0c, 0x7e, 0x34, 0x29, 0x5a, 0x7d, 0x17,
		0x23, 0xec, 0x47, 0xa1, 0xdb, 0x14, 0xdd, 0xc8, 0xbb, 0x10, 0x2a, 0xb5, 0xe0, 0xdb, 0x11, 0x77,
		0x3f, 0x5e, 0x36, 0x62, 0xec, 0x0b, 0xab, 0x24, 0x17, 0x51, 0x93, 0x17, 0x4c, 0x31, 0x5e, 0x95,
		0x42, 0xe9, 0x92, 0x5d, 0x07, 0x91, 0xe9, 0xd5, 0xd9, 0xeb, 0x9b, 0x60, 0x61, 0x32, 0x86, 0x3e,
		0xe3, 0x66, 0xd2, 0x15, 0x7c, 0xa5, 0x12, 0x24, 0xc0, 0xf7, 0x06, 0x0a, 0x4a, 0xf7, 0x84, 0xfb,
		0xdd, 0x77, 0xd0, 0x62, 0xef, 0x5f, 0x78, 0x54, 0x96, 0x8d, 0x1c, 0x73, 0x17, 0x92, 0x25, 0xf5,
		0x26, 0xbe, 0xff, 0xa5, 0xb8, 0xdf, 0x25, 0x38, 0x5e, 0x9c, 0x30, 0x9a, 0xe4, 0xf6, 0x95, 0x17,
		0x48, 0xc7, 0x3e, 0x7e, 0xe9, 0x10, 0x00, 0x49, 0x13, 0x5c, 0x97, 0x1d, 0x22, 0x3a, 0x94, 0xbe,
		0x6c, 0x82, 0x84, 0x7b, 0x46, 0x93, 0x81, 0x4f, 0x16, 0xb4, 0x41, 0x19, 0x9c, 0x41, 0x78, 0x88,
		0x39, 0x1c, 0x15, 0x8d, 0x33, 0xa4, 0x82, 0x2d, 0x74, 0x82, 0xf6, 0x90, 0x67, 0x83, 0x27, 0xa6,
		0xca, 0x6e, 0x2f, 0x18, 0x3d, 0xf9, 0x22, 0x6c, 0x69, 0x36, 0x69, 0xaf, 0x35, 0x42, 0x41, 0x9e,
		0x19, 0x1f, 0xed, 0x9e, 0x32, 0xa4, 0x1a, 0xb8, 0x54, 0x04, 0xbb, 0xaa, 0x60, 0x57, 0x19, 0xbc,
		0xaa, 0x83, 0x46, 0x85, 0x10, 0xa9, 0x12, 0x72, 0x95, 0x12, 0x0e, 0x88, 0x56, 0x4f, 0x8c, 0x2a,
		0x86, 0x53, 0xd5, 0x28, 0x50, 0x39, 0xdc, 0xaa, 0x47, 0x99, 0x0a, 0x52, 0xa6, 0x8a, 0xd4, 0xa8,
		0x24, 0x5a, 0xd5, 0x44, 0xac, 0xa2, 0xd8, 0x54, 0xd5, 0x12, 0x34, 0xa4, 0xff, 0x25, 0x14, 0x64,
		0xdb, 0x2e, 0x98, 0x13, 0x51, 0xf0, 0xaa, 0x55, 0x9d, 0x42, 0x95, 0xa7, 0x4a, 0xf5, 0x29, 0x57,
		0x81, 0xca, 0x55, 0xa1, 0x5a, 0x95, 0xc8, 0xa3, 0x1a, 0x99, 0x54, 0x64, 0xb8, 0x34, 0xea, 0x22,
		0xe0, 0x5d, 0xa7, 0x27, 0x4d, 0xfb, 0x59, 0xef, 0x1a, 0x9e, 0x17, 0xc8, 0x9b, 0x82, 0x30, 0xf8,
		0xe3, 0x5c, 0xed, 0x05, 0x41, 0x18, 0xc7, 0xca, 0x73, 0xb9, 0xa2, 0x2d, 0x5c, 0x61, 0x37, 0xd7,
		0x22, 0x77, 0x78, 0x24, 0x62, 0x77, 0x97, 0xe7, 0xc5, 0xfd, 0x52, 0xf1, 0x54, 0x7b, 0x78, 0x11,
		0xda, 0xf5, 0xc5, 0x81, 0x76, 0x2d, 0x3c, 0xcf, 0x78, 0x16, 0xfa, 0x85, 0xf9, 0x2c, 0x3c, 0xa9,
		0x9d, 0x59, 0xcf, 0x8e, 0x6b, 0xca, 0x97, 0xce, 0xce, 0x37, 0xfb, 0xee, 0xf2, 0xfc, 0xa0, 0x5c,
		0xde, 0x3b, 0xd5, 0x6a, 0xe7, 0x95, 0x9a, 0x76, 0xdf, 0x15, 0x4d, 0xb3, 0x4d, 0xcb, 0x42, 0x64,
		0x41, 0xb9, 0x2f, 0x52, 0xf2, 0xe3, 0xad, 0x57, 0x94, 0x50, 0xaa, 0x5a, 0xdf, 0x2f, 0xd4, 0xfb,
		0x54, 0xb2, 0x81, 0x6c, 0xd8, 0x25, 0x7f, 0x50, 0xe7, 0x7b, 0xd1, 0x3c, 0xe8, 0xc5, 0xb4, 0xd8,
		0xd4, 0xd9, 0xac, 0x26, 0x6e, 0x22, 0xed, 0x2e, 0x98, 0x87, 0x49, 0x88, 0x2e, 0x44, 0xdb, 0xe8,
		0x59, 0x92, 0xd5, 0x84, 0x16, 0x82, 0x1c, 0x7c, 0x1e, 0xb5, 0x53, 0x87, 0x23, 0x09, 0x47, 0x12,
		0x8e, 0x24, 0x1c, 0xc9, 0x5c, 0x39, 0x92, 0x4f, 0x8e, 0x63, 0x09, 0x43, 0x49, 0x1a, 0x75, 0x11,
		0x98, 0x06, 0x98, 0x66, 0xd5, 0x65, 0xf9, 0x4b, 0xbc, 0x35, 0x5f, 0x0c, 0xc6, 0x32, 0x56, 0xe1,
		0x09, 0x08, 0x67, 0x82, 0xfd, 0x86, 0xfd, 0x86, 0xfd, 0x86, 0xfd, 0xce, 0x95, 0xfd, 0x1e, 0x69,
		0x2f, 0xdd, 0x15, 0x6d, 0x15, 0x46, 0x9c, 0xb3, 0xfc, 0x62, 0x2d, 0xcc, 0x8b, 0x68, 0xea, 0xa3,
		0xf7, 0x3a, 0x1d, 0xfd, 0xe0, 0x2d, 0xfc, 0x74, 0xea, 0xc3, 0x61, 0x6a, 0xd6, 0xe4, 0x47, 0x41,
		0x3e, 0x03, 0x70, 0xc7, 0x9a, 0xe2, 0x0e, 0x14, 0xb1, 0xe0, 0xcc, 0x25, 0xf2, 0x15, 0xfa, 0xee,
		0xb2, 0xe0, 0xff, 0x65, 0xff, 0xb0, 0x3b, 0x7d, 0xc3, 0x8e, 0xfe, 0x6a, 0x54, 0x8a, 0x1e, 0xfd,
		0xd5, 0x10, 0x7f, 0x95, 0x15, 0xcc, 0x89, 0xf8, 0x2b, 0x85, 0x76, 0x04, 0xf1, 0x57, 0x70, 0xbb,
		0xe1, 0x76, 0xc3, 0xed, 0x86, 0xdb, 0x9d, 0x21, 0xb7, 0x1b, 0xf1, 0x57, 0xbf, 0x7a, 0x6a, 0xc4,
		0x5f, 0x25, 0x14, 0x31, 0xc4, 0x5f, 0xad, 0xa2, 0xe4, 0x11, 0x7f, 0x85, 0xf8, 0x2b, 0x86, 0x3f,
		0x75, 0x84, 0x13, 0x21, 0x9c, 0xe8, 0xd7, 0x93, 0x20, 0x9c, 0x08, 0x7e, 0x11, 0xfc, 0x22, 0xf8,
		0x45, 0xf0, 0x8b, 0xd6, 0x26, 0x9c, 0x08, 0xd1, 0x31, 0x1a, 0xa2, 0x63, 0x60, 0x8e, 0x60, 0x8e,
		0x60, 0x8e, 0x10, 0x1d, 0x13, 0xd5, 0x26, 0x21, 0x3a, 0x86, 0xcf, 0x8c, 0x22, 0xd8, 0x23, 0xf3,
		0xc1, 0x1e, 0xe8, 0x6e, 0x92, 0xb6, 0xc0, 0xe4, 0x43, 0x50, 0x52, 0xe8, 0x84, 0x52, 0x6b, 0x8a,
		0x6e, 0xc3, 0x57, 0xa1, 0xe7, 0xe3, 0x87, 0xbb, 0x0f, 0x9e, 0xad, 0x71, 0x36, 0xfd, 0x6c, 0x59,
		0x69, 0x8d, 0x42, 0x50, 0x8d, 0x90, 0xb8, 0x28, 0x14, 0x4f, 0x31, 0x28, 0xd4, 0x97, 0x43, 0x7d,
		0x39, 0x0d, 0xf5, 0xe5, 0x68, 0xcd, 0x0b, 0x79, 0x7d, 0x39, 0xb3, 0xc5, 0x17, 0xda, 0x68, 0xb6,
		0x98, 0xe2, 0x1a, 0xf7, 0x50, 0x57, 0x0e, 0x71, 0x8d, 0x59, 0x64, 0x09, 0x10, 0xd7, 0xc8, 0xc8,
		0x02, 0x4c, 0x84, 0x4c, 0x07, 0x3d, 0x6f, 0x19, 0x04, 0x9e, 0x27, 0x24, 0x27, 0x6f, 0x4e, 0xa9,
		0xb2, 0x14, 0x92, 0x6c, 0x06, 0xfc, 0x77, 0x9b, 0x42, 0x37, 0x6d, 0x53, 0x9a, 0x86, 0x14, 0x2d,
		0xbd, 0x69, 0x74, 0x8d, 0x27, 0xd3, 0x32, 0xe5, 0x1b, 0x9f, 0xa1, 0x5c, 0x3a, 0x23, 0x75, 0xc8,
		0x31, 0xe3, 0xdd, 0x39, 0xc7, 0x9d, 0x79, 0x1d, 0xf0, 0x01, 0xf0, 0x01, 0xf0, 0x01, 0xf0, 0x81,
		0x54, 0xe2, 0xf9, 0xee, 0xb2, 0x99, 0xee, 0xb0, 0x81, 0x1f, 0x72, 0x87, 0x1f, 0x06, 0xf4, 0xa8,
		0x6e, 0xb4, 0x5a, 0xfe, 0x02, 0xf0, 0x22, 0x87, 0x99, 0xb9, 0x60, 0x33, 0x61, 0x33, 0x61, 0x33,
		0x61, 0x33, 0x49, 0x25, 0xde, 0xec, 0x32, 0xe9, 0x97, 0x29, 0xb3, 0x79, 0xc2, 0x30, 0xf6, 0x70,
		0x6d, 0x78, 0x82, 0x85, 0x15, 0x84, 0x3a, 0x98, 0xdd, 0xef, 0x65, 0xc6, 0xb5, 0x9f, 0xa7, 0x3e,
		0x78, 0x43, 0x1d, 0xa4, 0x70, 0x6d, 0xf6, 0x6c, 0x9e, 0xc2, 0xd6, 0xe3, 0x9e, 0x7e, 0x52, 0x7f,
		0x7f, 0x2c, 0xea, 0x27, 0xf5, 0xc1, 0x8f, 0xc5, 0xe0, 0x3f, 0x3f, 0x4a, 0xfd, 0xf7, 0xd2, 0xe3,
		0x9e, 0x5e, 0x1e, 0x7e, 0x5a, 0x3a, 0x78, 0xdc, 0xd3, 0x0f, 0xea, 0xdb, 0x5b, 0xdf, 0xbe, 0xed,
		0x44, 0xfd, 0xce, 0xf6, 0x8f, 0xfd, 0x3e, 0x5f, 0xe4, 0x4f, 0x9d, 0x73, 0x1b, 0x6e, 0xef, 0xab,
		0x7f, 0x28, 0xdb, 0x8b, 0xff, 0x6c, 0xa9, 0xda, 0x8d, 0xed, 0xff, 0x2a, 0xa0, 0x70, 0xaf, 0x3a,
		0xb5, 0x74, 0x08, 0xb5, 0x14, 0x55, 0x2d, 0x05, 0x52, 0x6d, 0xe8, 0xed, 0x33, 0xfd, 0xb2, 0xfe,
		0xa3, 0xf8, 0xb1, 0xdc, 0x3f, 0xdd, 0xfe, 0x71, 0xd4, 0x9f, 0xfd, 0xf0, 0x7d, 0xd1, 0xaf, 0x15,
		0x3f, 0x1e, 0xf5, 0x4f, 0x97, 0xfc, 0xcb, 0x61, 0xff, 0x74, 0xc5, 0x31, 0x0e, 0xfa, 0x5b, 0x73,
		0xbf, 0xea, 0x7f, 0x5e, 0x5a, 0xf6, 0x85, 0xf2, 0x92, 0x2f, 0xec, 0x2f, 0xfb, 0xc2, 0xfe, 0x92,
		0x2f, 0x2c, 0x7d, 0xa4, 0xd2, 0x92, 0x2f, 0x1c, 0xf4, 0xdf, 0xe7, 0x7e, 0x7f, 0x6b, 0xf1, 0xaf,
		0x1e, 0xf6, 0xb7, 0xdf, 0x97, 0xfd, 0xdb, 0x51, 0xff, 0xfd, 0x74, 0x7b, 0x1b, 0x8a, 0x7a, 0x65,
		0x45, 0x0d, 0xf1, 0x54, 0x2f, 0x9e, 0xf9, 0x33, 0x5c, 0x1f, 0xb2, 0xfd, 0x9c, 0xa0, 0xcc, 0x72,
		0x47, 0x99, 0x49, 0x0e, 0x27, 0x76, 0x8a, 0x28, 0x0b, 0x66, 0x00, 0x3d, 0x06, 0x7a, 0x0c, 0xf4,
		0x18, 0xe8, 0x31, 0x72, 0xed, 0xd2, 0x71, 0x5a, 0x2c, 0x2a, 0x66, 0xca, 0x0d, 0x2a, 0x33, 0x8c,
		0x5d, 0xb1, 0x7b, 0x1d, 0xbe, 0x13, 0xf5, 0xe0, 0xdc, 0x0f, 0xc2, 0x75, 0x58, 0x13, 0x83, 0xf6,
		0xfc, 0x5d, 0xb8, 0x7f, 0x38, 0x7b, 0xa8, 0x5c, 0x55, 0xee, 0xef, 0x39, 0x1d, 0xd2, 0x62, 0x38,
		0xd3, 0xe5, 0x97, 0xab, 0x46, 0xed, 0xec, 0xfe, 0xbe, 0xfa, 0xb5, 0xc2, 0x39, 0x61, 0x69, 0x6a,
		0xc2, 0xb3, 0xf3, 0x07, 0x7f, 0xbe, 0x7c, 0xe5, 0x85, 0x39, 0xd5, 0x40, 0xff, 0x30, 0xee, 0xff,
		0xec, 0xfa, 0x90, 0x97, 0xa8, 0x5c, 0x3c, 0xdb, 0x68, 0xfb, 0xc9, 0x4b, 0x6d, 0xce, 0x4f, 0x17,
		0xc8, 0xf5, 0xa9, 0xb6, 0x87, 0xb4, 0x2e, 0xc0, 0xf9, 0xcc, 0xc3, 0x79, 0xc7, 0x95, 0x8c, 0x50,
		0xde, 0x1f, 0x3d, 0x4f, 0x91, 0x71, 0xe5, 0xe2, 0xf1, 0x09, 0x02, 0xe3, 0xe0, 0xc5, 0xc0, 0x8b,
		0x81, 0x17, 0x93, 0x69, 0x2f, 0xc6, 0x71, 0xa5, 0x6e, 0xf7, 0x3a, 0x4f, 0xc2, 0x65, 0xf4, 0x61,
		0x0e, 0x19, 0x86, 0xbe, 0x33, 0xec, 0xe7, 0x5c, 0xde, 0xf2, 0x5f, 0x9b, 0x36, 0x7f, 0x51, 0x8e,
		0xaf, 0x86, 0xd5, 0x13, 0x7c, 0xb5, 0x52, 0xc2, 0x79, 0x2e, 0x5d, 0xa3, 0xe9, 0x63, 0xaa, 0x0b,
		0xf3, 0xd9, 0x94, 0x9e, 0x82, 0x09, 0x6f, 0xc4, 0xb3, 0x21, 0xcd, 0xef, 0xfe, 0xbb, 0x05, 0xd1,
		0xe7, 0x7c, 0x75, 0x38, 0x18, 0xd1, 0xfd, 0xb5, 0xf1, 0xaa, 0x4e, 0x04, 0x0e, 0x0f, 0x0e, 0xf6,
		0x0f, 0x20, 0x06, 0x99, 0x71, 0x93, 0x34, 0xdc, 0xa5, 0xc0, 0xf9, 0x22, 0x76, 0xbe, 0x26, 0xab,
		0x26, 0x73, 0xb9, 0x60, 0x5c, 0xe5, 0x79, 0xe1, 0x89, 0xc0, 0x13, 0x81, 0x27, 0xb2, 0xf1, 0x9e,
		0x48, 0xcf, 0xb4, 0xe5, 0x31, 0xa3, 0x0f, 0x72, 0x00, 0x1f, 0x04, 0x3e, 0x08, 0x7c, 0x90, 0x74,
		0x7c, 0x90, 0xd2, 0x01, 0x3c, 0x10, 0x78, 0x20, 0xf0, 0x40, 0xd6, 0xd6, 0x03, 0x71, 0x45, 0xc0,
		0x24, 0x5a, 0x4e, 0xd3, 0xb0, 0x74, 0xcb, 0xeb, 0xf2, 0xf9, 0x21, 0x73, 0x33, 0xa1, 0x60, 0x02,
		0xbc, 0x31, 0x78, 0x63, 0xf0, 0xc6, 0xe0, 0x8d, 0x11, 0x4a, 0x3c, 0x0a, 0x26, 0x00, 0x2f, 0x70,
		0xe2, 0x05, 0x2f, 0x50, 0x7b, 0xfc, 0xc5, 0x12, 0x66, 0xe6, 0x81, 0xad, 0x84, 0xad, 0x84, 0xad,
		0x84, 0xad, 0x24, 0x95, 0x78, 0x14, 0x4a, 0x58, 0xf8, 0x07, 0x85, 0x12, 0xa2, 0xe9, 0x66, 0x14,
		0x4a, 0x48, 0xc9, 0xe5, 0x9d, 0xde, 0x06, 0x14, 0x4a, 0x48, 0x99, 0xf9, 0x63, 0x32, 0x04, 0x6a,
		0xd5, 0x12, 0x0a, 0x25, 0x44, 0x56, 0x4b, 0xc8, 0x44, 0x47, 0xa1, 0x84, 0xac, 0x2b, 0x6a, 0x88,
		0x27, 0x0a, 0x25, 0x28, 0xf6, 0x87, 0x34, 0x5c, 0xad, 0x6d, 0x38, 0x55, 0xe6, 0xea, 0x5e, 0xaf,
		0xcb, 0x9b, 0x5f, 0x35, 0x31, 0x07, 0xae, 0xd3, 0x40, 0x11, 0x82, 0x22, 0x04, 0x45, 0x08, 0x8a,
		0x90, 0x50, 0xe2, 0x71, 0x9d, 0x06, 0x8c, 0xc0, 0x33, 0x12, 0x9a, 0x58, 0xc6, 0x6a, 0x62, 0x39,
		0x6c, 0x7b, 0xb8, 0x46, 0x0d, 0x22, 0x19, 0x4b, 0xd0, 0xf3, 0x97, 0x9e, 0x27, 0x86, 0x49, 0x68,
		0x1c, 0x89, 0xc6, 0x91, 0x69, 0xc0, 0x9d, 0x6c, 0xa9, 0x74, 0x72, 0x58, 0x13, 0x4a, 0xac, 0x6f,
		0x5a, 0x69, 0xdb, 0xb0, 0x73, 0xb4, 0x5d, 0x0f, 0xdb, 0xac, 0xef, 0xec, 0x0c, 0xf5, 0xfd, 0xee,
		0x02, 0x05, 0xb6, 0x46, 0x26, 0x60, 0xd0, 0xb3, 0x9b, 0x5c, 0xeb, 0x0f, 0x86, 0xcd, 0x78, 0x87,
		0xe0, 0x12, 0x14, 0x3d, 0x14, 0xfd, 0x86, 0x2a, 0x7a, 0x74, 0x08, 0x06, 0xc5, 0x06, 0x8a, 0x0d,
		0x14, 0xdb, 0x46, 0x53, 0x6c, 0xb9, 0xeb, 0x10, 0x8c, 0x46, 0xb8, 0x68, 0x84, 0xfb, 0x93, 0x3f,
		0xb8, 0x88, 0x82, 0x95, 0x84, 0x95, 0x84, 0x95, 0xa4, 0x95, 0xf8, 0xfc, 0x5d, 0x44, 0xa1, 0xdf,
		0x2b, 0xfa, 0xbd, 0xc2, 0x34, 0xc0, 0x34, 0xc0, 0x34, 0x20, 0x8d, 0xe9, 0xe7, 0x6b, 0x83, 0x34,
		0xa6, 0x55, 0x1d, 0x59, 0xa4, 0x31, 0x21, 0x8d, 0x89, 0x72, 0x36, 0xa4, 0x31, 0x29, 0x33, 0x04,
		0x6a, 0xd5, 0x12, 0xd2, 0x98, 0x22, 0xab, 0x25, 0xe4, 0x89, 0x20, 0x8d, 0x29, 0xeb, 0x8a, 0x1a,
		0xe2, 0x89, 0x34, 0x26, 0xc5, 0xfe, 0x10, 0xfd, 0x73, 0xa2, 0xad, 0x29, 0x58, 0x20, 0xb0, 0x40,
		0x60, 0x81, 0xc0, 0x02, 0x51, 0x6b, 0x17, 0xb4, 0x35, 0x5d, 0xbc, 0xf8, 0x68, 0x6b, 0x9a, 0x6c,
		0x42, 0xb4, 0x35, 0x5d, 0xc5, 0x2e, 0xa0, 0xad, 0x69, 0xb6, 0x50, 0x2b, 0xba, 0x77, 0x26, 0xb6,
		0x29, 0xe8, 0xde, 0x89, 0x68, 0x1e, 0x80, 0x75, 0x80, 0x75, 0x80, 0x75, 0x7a, 0xc5, 0x8a, 0xee,
		0x9d, 0xf3, 0x7f, 0xd0, 0x39, 0x67, 0xb5, 0x79, 0xd0, 0x39, 0x27, 0x96, 0x08, 0xa0, 0x7b, 0x67,
		0x6e, 0xc4, 0x00, 0xcc, 0x78, 0x76, 0x7c, 0x0c, 0x34, 0xa9, 0x04, 0xe0, 0x06, 0xe0, 0x06, 0xe0,
		0xce, 0x31, 0xe0, 0x46, 0x93, 0x4a, 0x40, 0x6d, 0x60, 0xac, 0x35, 0x85, 0xda, 0x68, 0x52, 0x09,
		0xa0, 0xbd, 0x0e, 0x40, 0x1b, 0xbd, 0x18, 0x57, 0x1a, 0x1c, 0x39, 0xbb, 0x70, 0x3a, 0xe0, 0x74,
		0xc0, 0xe9, 0xc8, 0xbc, 0xd3, 0x81, 0x9c, 0x5d, 0x92, 0x77, 0x45, 0xcb, 0x41, 0x98, 0x04, 0x98,
		0x04, 0x98, 0x84, 0x75, 0x30, 0x09, 0xc8, 0xd5, 0x55, 0x4d, 0x46, 0x21, 0x57, 0x37, 0xc1, 0x44,
		0xc8, 0xd5, 0xfd, 0xe9, 0x36, 0x20, 0x57, 0x37, 0x65, 0x1e, 0x87, 0xc9, 0x10, 0xa8, 0x55, 0x4b,
		0xc8, 0xd5, 0x8d, 0xac, 0x96, 0x90, 0x0c, 0x89, 0x5c, 0xdd, 0xac, 0x2b, 0x6a, 0x88, 0x27, 0x72,
		0x75, 0x15, 0xfb, 0x43, 0xda, 0x86, 0x5c, 0x94, 0xa0, 0xb3, 0xde, 0xd2, 0xc1, 0x71, 0x39, 0x02,
		0x26, 0x0c, 0x4c, 0x18, 0x98, 0xb0, 0xcc, 0x33, 0x61, 0x9b, 0x7c, 0x39, 0x82, 0x06, 0x72, 0xe9,
		0x35, 0x90, 0x1b, 0x34, 0xc5, 0x59, 0xa3, 0xe6, 0x41, 0xd2, 0xec, 0x08, 0x97, 0xa1, 0x67, 0xdc,
		0x70, 0xdc, 0x8c, 0xb7, 0x0f, 0x42, 0x9f, 0xb8, 0x5c, 0x19, 0x73, 0xb4, 0x0f, 0xca, 0x72, 0xfb,
		0xa0, 0xe6, 0xe8, 0x54, 0x31, 0xf9, 0x54, 0xc3, 0xf1, 0x79, 0xfc, 0x89, 0x22, 0xfc, 0x09, 0xf8,
		0x13, 0xf0, 0x27, 0xb2, 0xe9, 0x4f, 0x50, 0xab, 0xaa, 0x70, 0xe0, 0x96, 0x30, 0x5a, 0x7a, 0x00,
		0x55, 0xf8, 0x24, 0x72, 0x74, 0xa8, 0x26, 0xe6, 0x62, 0x92, 0x14, 0x4e, 0x6a, 0x28, 0x9c, 0xa4,
		0x58, 0xda, 0xe3, 0xa1, 0x49, 0x99, 0x28, 0x7c, 0x26, 0xc2, 0x88, 0x5d, 0xd1, 0xab, 0x50, 0xf8,
		0x0a, 0x15, 0xbf, 0x2a, 0x03, 0xa0, 0xdc, 0x10, 0x28, 0x37, 0x08, 0x6a, 0x0d, 0x03, 0x8f, 0x81,
		0x60, 0x32, 0x14, 0xfc, 0x04, 0xd4, 0xdc, 0x89, 0xe1, 0x4a, 0x0d, 0x9c, 0x55, 0x5f, 0x8c, 0x39,
		0x4a, 0xcc, 0xa9, 0x82, 0xa3, 0x3f, 0xbc, 0xe7, 0x5d, 0x53, 0x95, 0x3a, 0x18, 0x4e, 0xa6, 0x28,
		0x85, 0x30, 0x9c, 0x4f, 0x75, 0x16, 0xd9, 0x58, 0xd4, 0x55, 0x65, 0x93, 0x31, 0x6b, 0x85, 0x69,
		0x51, 0x51, 0x90, 0x62, 0x38, 0x27, 0x2a, 0xec, 0xa9, 0x86, 0x9b, 0x28, 0x2c, 0x1f, 0xf2, 0x39,
		0x7a, 0xae, 0x42, 0xd9, 0xb8, 0x68, 0xfe, 0xb9, 0x79, 0xde, 0x9e, 0x1d, 0xa9, 0x3b, 0xcd, 0x80,
		0x7a, 0x77, 0x85, 0xe7, 0x89, 0x96, 0x6e, 0x09, 0xa3, 0xed, 0x4f, 0x9a, 0x97, 0x5c, 0x53, 0x86,
		0x2d, 0x28, 0xfc, 0x25, 0x44, 0xd7, 0xb0, 0x06, 0xc7, 0x8a, 0xd9, 0x4d, 0x1d, 0x4f, 0x95, 0x67,
		0x2f, 0x75, 0x1f, 0x4e, 0x2a, 0x9c, 0x54, 0x38, 0xa9, 0x70, 0x52, 0xe1, 0xa4, 0xc2, 0x49, 0x85,
		0x93, 0x0a, 0x27, 0x15, 0x4e, 0x2a, 0x9c, 0x54, 0x38, 0xa9, 0x70, 0x52, 0xe1, 0xa4, 0xb2, 0x39,
		0xa9, 0xae, 0x68, 0x09, 0x2b, 0x38, 0x59, 0x8e, 0x1d, 0x5c, 0x74, 0x3a, 0x3d, 0xa9, 0x9b, 0xb6,
		0x14, 0xee, 0x77, 0xc3, 0xe2, 0x77, 0x5c, 0x7f, 0x3e, 0x3d, 0xfc, 0x36, 0xf8, 0x6d, 0xf0, 0xdb,
		0xe0, 0xb7, 0xe5, 0xce, 0x6f, 0x2b, 0x1e, 0x2a, 0x70, 0xdc, 0x0e, 0xe1, 0xb8, 0xc1, 0x71, 0x83,
		0xe3, 0x96, 0x6f, 0xc7, 0x4d, 0x41, 0xcf, 0x00, 0xb8, 0x6e, 0x70, 0xdd, 0xe0, 0xba, 0xad, 0x9f,
		0xeb, 0x16, 0xa4, 0x35, 0xa5, 0xe0, 0xb3, 0x2d, 0x99, 0x17, 0xce, 0x1a, 0x9c, 0x35, 0x38, 0x6b,
		0x70, 0xd6, 0xe0, 0xac, 0xc1, 0x59, 0x83, 0xb3, 0x06, 0x67, 0x0d, 0xce, 0x1a, 0xc4, 0x05, 0xce,
		0x1a, 0x9c, 0xb5, 0x1c, 0x3a, 0x6b, 0x99, 0xce, 0xab, 0x64, 0xde, 0xc8, 0xac, 0x16, 0xf1, 0x18,
		0xd4, 0xa6, 0xd8, 0x1d, 0xe6, 0x93, 0x6f, 0x42, 0xc5, 0xb3, 0xa0, 0x6a, 0x09, 0x5f, 0xb1, 0xb3,
		0x60, 0xf8, 0x9c, 0xe5, 0xe5, 0x97, 0x90, 0x97, 0xaf, 0xd0, 0x19, 0x47, 0x5e, 0xfe, 0x3a, 0xda,
		0x0f, 0xe4, 0xe5, 0xaf, 0xb6, 0x4c, 0xc8, 0xcb, 0x5f, 0xae, 0xe0, 0xc1, 0xc6, 0xa6, 0xaa, 0xf8,
		0x55, 0x19, 0x00, 0xe5, 0x86, 0x40, 0xb9, 0x41, 0x50, 0x6b, 0x18, 0x78, 0x7d, 0x52, 0xa4, 0x3c,
		0xac, 0xaa, 0xbe, 0x90, 0xf2, 0xb0, 0x0a, 0xc3, 0x06, 0x32, 0x76, 0x2d, 0xd8, 0x35, 0xa4, 0x3c,
		0x40, 0x58, 0xd2, 0x35, 0x4c, 0xfc, 0xa3, 0xd7, 0x91, 0x66, 0x8e, 0x34, 0xf3, 0x55, 0x27, 0x41,
		0x9a, 0x39, 0x7c, 0x2e, 0xf8, 0x5c, 0xf0, 0xb9, 0xe0, 0x73, 0xc1, 0xe7, 0x82, 0xcf, 0x05, 0x9f,
		0x0b, 0x3e, 0x17, 0x7c, 0x2e, 0xf8, 0x5c, 0xf0, 0xb9, 0x22, 0x08, 0x09, 0xb2, 0xa6, 0xe1, 0x86,
		0xc0, 0x0d, 0x81, 0x1b, 0x02, 0x37, 0x84, 0xd2, 0x0d, 0x41, 0x20, 0x3e, 0xfc, 0x10, 0x40, 0x4b,
		0xf8, 0x21, 0xbf, 0x16, 0x15, 0x04, 0xe2, 0xc3, 0x13, 0x81, 0x27, 0x82, 0x24, 0x60, 0xf8, 0x1e,
		0xf0, 0x3d, 0xe0, 0x7b, 0xc0, 0xf7, 0x80, 0xef, 0x01, 0xdf, 0x03, 0xbe, 0x07, 0x7c, 0x0f, 0xf8,
		0x1e, 0xf0, 0x3d, 0xe0, 0x7b, 0xf0, 0x8f, 0x88, 0x9c, 0x56, 0xca, 0x9c, 0x56, 0xc2, 0xfe, 0xf4,
		0xf4, 0xdb, 0x9d, 0xad, 0xfe, 0xd7, 0x4c, 0x82, 0x92, 0x6d, 0x01, 0x29, 0x90, 0x66, 0x15, 0xbb,
		0xbd, 0xa6, 0xb4, 0x87, 0xc8, 0xf7, 0x66, 0xf0, 0xe4, 0xd5, 0xe1, 0x83, 0x37, 0x6a, 0xc3, 0xc7,
		0x6d, 0xd4, 0x9a, 0xa2, 0xdb, 0xa8, 0x19, 0xf2, 0xe5, 0x7c, 0xfc, 0x50, 0xf7, 0xc1, 0x33, 0x35,
		0x1e, 0x06, 0xcf, 0xf4, 0x21, 0x1b, 0xc2, 0x95, 0x6c, 0x84, 0x84, 0x62, 0xe9, 0x3b, 0xa8, 0x81,
		0x73, 0xda, 0x14, 0xc3, 0x1d, 0xd3, 0x8d, 0x56, 0xcb, 0x15, 0x5e, 0xd2, 0x2d, 0x2b, 0x5c, 0x99,
		0x9e, 0x3c, 0x93, 0x92, 0x26, 0x93, 0xd2, 0x87, 0xd4, 0x15, 0x4b, 0xf8, 0x7e, 0x26, 0x11, 0x86,
		0xf0, 0x91, 0xd7, 0xc4, 0x88, 0xc5, 0xe3, 0x72, 0xf9, 0xf0, 0xa8, 0x5c, 0xde, 0x3b, 0xda, 0x3f,
		0xda, 0x3b, 0x39, 0x38, 0x28, 0x1e, 0x16, 0x09, 0x10, 0x52, 0xe1, 0xd6, 0x6d, 0x09, 0x57, 0xb4,
		0x3e, 0xf9, 0x6b, 0x6c, 0xf7, 0x2c, 0x8b, 0x72, 0xc8, 0x2f, 0x5e, 0x90, 0xa6, 0x9a, 0x1c, 0xdc,
		0x24, 0x15, 0x21, 0x62, 0x8d, 0x96, 0x51, 0x4d, 0x46, 0xa0, 0xc2, 0x92, 0xab, 0xae, 0x64, 0x3a,
		0x2b, 0xbe, 0xa6, 0x89, 0xf7, 0xcd, 0x98, 0x82, 0x45, 0x25, 0x50, 0x29, 0x0b, 0x52, 0xbc, 0xbd,
		0x8a, 0xbe, 0xd2, 0xd1, 0xbe, 0x11, 0x71, 0x4f, 0x0a, 0xe2, 0x55, 0xba, 0x86, 0xde, 0xf3, 0x17,
		0xe1, 0xc9, 0x8a, 0xc7, 0x66, 0x15, 0xfe, 0x7e, 0x11, 0x76, 0x6c, 0x5e, 0x27, 0xc1, 0xfe, 0x8f,
		0xd8, 0xb1, 0x9d, 0x61, 0xcd, 0x95, 0x5d, 0xb3, 0x25, 0x6c, 0x69, 0xb6, 0x4d, 0xe1, 0x6a, 0xff,
		0xd0, 0x7e, 0x73, 0x9a, 0x7a, 0xd7, 0xb1, 0x74, 0xf9, 0xd6, 0x15, 0xde, 0x69, 0xed, 0xbc, 0x52,
		0xfb, 0x2d, 0xc1, 0x19, 0xa7, 0x62, 0x94, 0x27, 0x19, 0xe3, 0x60, 0xdd, 0x12, 0x2a, 0x67, 0x6a,
		0x3e, 0x78, 0x8a, 0xef, 0x5d, 0x7d, 0x61, 0x3f, 0xa4, 0x60, 0x9c, 0x0a, 0x17, 0xc2, 0x6b, 0xba,
		0x66, 0x97, 0xc4, 0x32, 0x85, 0xc2, 0x54, 0xb5, 0x9b, 0x56, 0xaf, 0x25, 0x34, 0xff, 0xbd, 0xb4,
		0xc1, 0xeb, 0xf7, 0xdc, 0xe0, 0xe0, 0x6b, 0xfe, 0x7e, 0x69, 0xf2, 0x45, 0x68, 0x23, 0x05, 0xa1,
		0x99, 0x9e, 0xe6, 0xb4, 0x35, 0x7f, 0x21, 0xbe, 0xd9, 0xfe, 0x17, 0x92, 0xee, 0x26, 0xe1, 0xb5,
		0xc5, 0xa4, 0xa0, 0xb5, 0x26, 0x16, 0x8a, 0xc0, 0xcc, 0x71, 0xdc, 0x41, 0x4c, 0xc9, 0x5d, 0xb2,
		0x3d, 0xc8, 0x97, 0x0d, 0xfd, 0xc0, 0xcb, 0xe7, 0x44, 0xb5, 0x07, 0x09, 0x6d, 0xb3, 0x1a, 0x9b,
		0x1c, 0x43, 0x88, 0xa3, 0x60, 0xb3, 0x68, 0x12, 0xb4, 0xfa, 0x0e, 0x46, 0xd8, 0x8b, 0x42, 0xd7,
		0xec, 0x44, 0xde, 0x80, 0x50, 0x87, 0xf9, 0x5f, 0x8e, 0xb8, 0xef, 0xf1, 0xea, 0x62, 0xc5, 0xbe,
		0x97, 0x4e, 0x72, 0xdf, 0x3c, 0x75, 0x8f, 0x1c, 0xf9, 0x4d, 0x29, 0xf4, 0x2c, 0xd9, 0xb5, 0x2f,
		0x99, 0x2a, 0x9d, 0xbb, 0xa6, 0x35, 0x3b, 0x85, 0x8c, 0x21, 0xcd, 0xb8, 0x55, 0x9d, 0x0a, 0xcf,
		0x96, 0xf3, 0x94, 0x20, 0x60, 0x24, 0x14, 0x97, 0xe1, 0x38, 0x31, 0x17, 0x38, 0x59, 0xe1, 0xb8,
		0xc4, 0x01, 0x1c, 0x14, 0x01, 0x1a, 0xc9, 0x0f, 0x0e, 0x27, 0x1a, 0x26, 0x89, 0x9f, 0xe0, 0xc5,
		0xc3, 0x71, 0x0f, 0x56, 0x3a, 0x6e, 0x76, 0xd2, 0x32, 0x6a, 0x85, 0xe6, 0x48, 0x66, 0x89, 0xa0,
		0xf5, 0x70, 0xbc, 0xa4, 0x8c, 0x26, 0x49, 0x05, 0x47, 0xb2, 0x88, 0x2a, 0xca, 0xc8, 0x29, 0xba,
		0x03, 0xca, 0xe1, 0x51, 0x68, 0x9c, 0x01, 0x4f, 0x6c, 0x81, 0x4d, 0xa4, 0x07, 0x38, 0xb9, 0x97,
		0x40, 0x41, 0xc8, 0x52, 0xd5, 0x47, 0x2c, 0x74, 0x8c, 0x57, 0xb3, 0xd3, 0xeb, 0xe8, 0xcf, 0xae,
		0xd3, 0xeb, 0x7a, 0x74, 0x42, 0x32, 0x12, 0xe3, 0x99, 0xf1, 0x89, 0x36, 0x94, 0x36, 0xd4, 0x92,
		0x3c, 0xb4, 0x92, 0x23, 0x94, 0x92, 0x5e, 0x31, 0x70, 0x29, 0x08, 0x76, 0x45, 0xc1, 0xae, 0x30,
		0x58, 0x15, 0x07, 0x8d, 0x02, 0x21, 0x52, 0x24, 0xe1, 0x9b, 0x92, 0x07, 0x32, 0x4e, 0x05, 0x2e,
		0xee, 0x97, 0x28, 0xe5, 0x75, 0x78, 0xfa, 0x8f, 0x08, 0x87, 0xe4, 0x09, 0x4c, 0x64, 0x08, 0x12,
		0xe1, 0x0c, 0x3c, 0xe4, 0x0e, 0x34, 0x54, 0x16, 0x29, 0xc6, 0x1f, 0x19, 0xc6, 0x91, 0x25, 0xc1,
		0x19, 0x28, 0x18, 0x6e, 0x6d, 0xb9, 0x74, 0x52, 0x3e, 0x39, 0x3c, 0x2a, 0x9d, 0x1c, 0x60, 0x8f,
		0x95, 0x28, 0x68, 0xfa, 0xd1, 0xea, 0x1b, 0x11, 0xec, 0xc4, 0xde, 0xa2, 0x23, 0xef, 0x61, 0x3d,
		0xf9, 0x8b, 0xc9, 0x30, 0x3b, 0xbb, 0x03, 0x02, 0x8e, 0xa4, 0x41, 0x46, 0x3f, 0x95, 0x0b, 0x47,
		0x57, 0xd8, 0x2d, 0xf1, 0x7f, 0xbf, 0x3b, 0x3d, 0x4f, 0xef, 0x3a, 0xe6, 0x20, 0xb2, 0x88, 0x88,
		0x1b, 0x99, 0x1f, 0x1a, 0x34, 0x09, 0x68, 0x12, 0xd0, 0x24, 0x59, 0xa0, 0x49, 0x66, 0xcf, 0x26,
		0x3d, 0x51, 0x32, 0x37, 0x03, 0x2d, 0x55, 0x52, 0x04, 0x55, 0x02, 0xaa, 0x04, 0x54, 0x09, 0xc5,
		0x9b, 0x52, 0xf7, 0xa6, 0x29, 0x8c, 0xc2, 0xb1, 0xd9, 0xda, 0x68, 0xd1, 0xc4, 0x7b, 0x2f, 0x53,
		0x2d, 0x7b, 0x5c, 0x8d, 0xb4, 0xf6, 0x72, 0xda, 0x48, 0x8b, 0x54, 0xe5, 0x70, 0xab, 0x1e, 0x65,
		0x2a, 0x48, 0x99, 0x2a, 0x52, 0xa2, 0x92, 0x98, 0x48, 0x02, 0x62, 0x89, 0x67, 0x4b, 0x4f, 0x0f,
		0xe5, 0xdd, 0xf7, 0xc9, 0x5d, 0xd1, 0xe6, 0x10, 0xf8, 0x11, 0x72, 0x39, 0x62, 0x18, 0xbb, 0x36,
		0x74, 0x73, 0x77, 0xc2, 0xf8, 0xd6, 0x91, 0x8e, 0xdc, 0x80, 0xa6, 0x8d, 0x44, 0x97, 0xfa, 0x4b,
		0x65, 0x82, 0xe4, 0x92, 0x9f, 0x19, 0xc8, 0xc2, 0xda, 0xc0, 0xda, 0xc0, 0xda, 0xe4, 0xa4, 0x69,
		0x23, 0x17, 0x40, 0x56, 0x04, 0x94, 0x99, 0x01, 0x33, 0xbb, 0x2a, 0x53, 0xa1, 0xd2, 0xd4, 0xa9,
		0x36, 0x55, 0x2a, 0x4e, 0xb9, 0xaa, 0x53, 0xae, 0xf2, 0x94, 0xaa, 0x3e, 0x1e, 0x15, 0xc8, 0xa4,
		0x0a, 0xf9, 0x01, 0xf8, 0xdc, 0x79, 0x31, 0xbb, 0xdf, 0xcb, 0x3a, 0xaf, 0xfe, 0x9a, 0x82, 0x61,
		0xc7, 0x8c, 0x73, 0xd4, 0x0c, 0x29, 0x85, 0x6b, 0xb3, 0x17, 0x8a, 0x2a, 0x6c, 0x6d, 0x3d, 0xee,
		0xe9, 0x27, 0xf5, 0xf7, 0xc7, 0xa2, 0x7e, 0x52, 0x1f, 0xfc, 0x58, 0x0c, 0xfe, 0x33, 0xf8, 0xb9,
		0xf4, 0xb8, 0xa7, 0x97, 0x47, 0x3f, 0x1f, 0x3c, 0xee, 0xe9, 0x07, 0xf5, 0xed, 0x6f, 0xdf, 0x76,
		0xb6, 0x7f, 0xec, 0xf7, 0xa3, 0x7f, 0x71, 0xeb, 0xff, 0x79, 0xfc, 0xf6, 0xad, 0xfb, 0xe3, 0xa6,
		0xef, 0xff, 0xff, 0x55, 0xbf, 0xfe, 0x3f, 0xdb, 0xff, 0x2c, 0xe4, 0xad, 0xe2, 0x0b, 0x17, 0x74,
		0xe2, 0xad, 0xac, 0x12, 0xce, 0xc3, 0x7e, 0xa7, 0xcc, 0xaf, 0xac, 0x38, 0x02, 0x4f, 0x3a, 0x3d,
		0x4b, 0x9a, 0x4d, 0xc3, 0x93, 0xd4, 0x51, 0xa0, 0x4b, 0x95, 0xd5, 0xdc, 0x8c, 0x00, 0x5c, 0x00,
		0x5c, 0x00, 0x5c, 0x00, 0x5c, 0x39, 0x02, 0x5c, 0x9e, 0x74, 0x4d, 0xfb, 0x59, 0x09, 0xd4, 0x82,
		0x31, 0x5f, 0x53, 0x63, 0x8e, 0x7a, 0x77, 0x8a, 0x02, 0xce, 0xe6, 0x62, 0xab, 0xe6, 0x3e, 0x21,
		0x89, 0x49, 0xe3, 0xdb, 0xe0, 0x3e, 0x69, 0x79, 0x35, 0x43, 0x0a, 0x3e, 0xfa, 0x7f, 0x30, 0x7c,
		0xce, 0xd8, 0xff, 0x12, 0xd8, 0x7f, 0x75, 0x48, 0x0d, 0xec, 0xff, 0x1a, 0x9a, 0x0b, 0xb0, 0xff,
		0x70, 0x46, 0xe1, 0x8c, 0xc2, 0x19, 0x85, 0x33, 0x9a, 0x82, 0x33, 0x0a, 0xf6, 0x3f, 0xc6, 0x44,
		0x60, 0xff, 0xd3, 0xf6, 0x7f, 0x41, 0x66, 0x03, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0xa4,
		0x8c, 0x1f, 0x72, 0x4f, 0x66, 0x83, 0x9b, 0x25, 0x1d, 0x3f, 0x63, 0xdc, 0x2c, 0x9a, 0x8f, 0x44,
		0xb1, 0x17, 0xf4, 0x5c, 0x06, 0x6d, 0xab, 0x87, 0x70, 0x54, 0xf2, 0x96, 0x0f, 0xe3, 0x91, 0x15,
		0xb4, 0x7e, 0x08, 0x27, 0xa3, 0x6f, 0x01, 0x31, 0x3f, 0x34, 0x59, 0x2b, 0x08, 0x6a, 0x79, 0xcb,
		0x6f, 0xb3, 0x9b, 0x28, 0x1a, 0x28, 0x8d, 0xee, 0x36, 0x66, 0xa7, 0xf1, 0x39, 0x78, 0xbe, 0xc6,
		0x5d, 0xf8, 0x34, 0xb5, 0xe0, 0x61, 0x50, 0xff, 0x22, 0xe7, 0xf5, 0x2f, 0xe6, 0x4b, 0x3d, 0xe4,
		0xb0, 0x14, 0x86, 0x17, 0x78, 0x40, 0x9e, 0xfe, 0xbf, 0x8e, 0x69, 0x8b, 0x16, 0x5d, 0x1d, 0x8c,
		0x99, 0x71, 0x33, 0x56, 0x04, 0xa3, 0x84, 0x22, 0x18, 0x19, 0xf0, 0x5e, 0x51, 0x04, 0x63, 0xf5,
		0x37, 0x22, 0x2b, 0x82, 0xe1, 0x11, 0x0b, 0xc7, 0xf4, 0x81, 0x47, 0xc1, 0x8b, 0x0c, 0xd2, 0x5e,
		0x28, 0x78, 0x91, 0x0a, 0x6d, 0x85, 0x82, 0x17, 0xc9, 0xce, 0x01, 0x0a, 0x5e, 0x68, 0x08, 0x42,
		0x4a, 0x5b, 0x05, 0x29, 0x53, 0x45, 0x4a, 0x54, 0x52, 0x3e, 0x78, 0x51, 0x14, 0xbc, 0x58, 0xa6,
		0x0a, 0xc6, 0x05, 0x2f, 0x02, 0x32, 0x75, 0x93, 0xea, 0x5d, 0x20, 0xde, 0x95, 0xdc, 0x8d, 0x85,
		0xa9, 0x81, 0xa9, 0x41, 0xbc, 0x2b, 0xe2, 0x5d, 0xd5, 0xa3, 0x65, 0x76, 0xd4, 0xac, 0x42, 0xa5,
		0xa9, 0x53, 0x6d, 0xaa, 0x54, 0x9c, 0x72, 0x55, 0xa7, 0x5c, 0xe5, 0x29, 0x55, 0x7d, 0x3c, 0x2a,
		0x90, 0x49, 0x15, 0xf2, 0xa3, 0xef, 0xb9, 0xf3, 0x82, 0x78, 0xd7, 0x18, 0x13, 0x21, 0xde, 0x35,
		0xe5, 0xb3, 0xc7, 0x11, 0xef, 0x1a, 0xc4, 0x9c, 0xf2, 0x63, 0x85, 0xc1, 0x34, 0x40, 0x0a, 0x40,
		0x0a, 0x40, 0x0a, 0x40, 0x0a, 0x40, 0x0a, 0x40, 0x0a, 0x40, 0x0a, 0x39, 0x43, 0x0a, 0xbd, 0xae,
		0x27, 0x5d, 0x61, 0x74, 0x74, 0xd3, 0x96, 0xc2, 0x6d, 0x1b, 0x4d, 0xa1, 0x9b, 0x2d, 0x7e, 0xe4,
		0xb0, 0x78, 0x5a, 0x20, 0x09, 0x20, 0x09, 0x20, 0x09, 0x20, 0x89, 0x3c, 0x21, 0x09, 0x7e, 0xfd,
		0xa5, 0x21, 0x53, 0x06, 0x99, 0x32, 0xcb, 0xc3, 0x86, 0xa7, 0x23, 0x63, 0x87, 0x7f, 0x45, 0x72,
		0x4c, 0x24, 0x43, 0x81, 0xe4, 0x18, 0x24, 0xc7, 0x28, 0x93, 0xb7, 0x75, 0x48, 0x8e, 0x59, 0xa8,
		0x74, 0xd2, 0xcd, 0x87, 0x19, 0xe2, 0x4a, 0xa4, 0xc1, 0xe4, 0x3c, 0x0d, 0x66, 0x26, 0xd3, 0x23,
		0x8f, 0x39, 0x30, 0x5e, 0x87, 0x30, 0xf1, 0xc5, 0xeb, 0xa0, 0xe5, 0xab, 0x42, 0xbf, 0x15, 0xd9,
		0x2e, 0xc8, 0x76, 0x59, 0x3e, 0x10, 0x71, 0x97, 0x2c, 0x9e, 0xee, 0x58, 0xc8, 0x76, 0x41, 0xb6,
		0x0b, 0xb2, 0x5d, 0x48, 0x31, 0x3b, 0x79, 0xb6, 0x8b, 0xe7, 0x75, 0x74, 0xd7, 0xb0, 0x9f, 0x05,
		0x63, 0xc2, 0xcb, 0xc4, 0x1c, 0xc8, 0x79, 0x41, 0x20, 0x72, 0x6a, 0x8a, 0x48, 0x99, 0x42, 0x52,
		0xa2, 0x98, 0xf2, 0xc1, 0x70, 0x22, 0xe7, 0x65, 0x99, 0x2a, 0x08, 0x9d, 0xd8, 0xa6, 0x6e, 0x34,
		0xad, 0x53, 0xa3, 0x69, 0x4d, 0xfc, 0xa8, 0x7b, 0x42, 0x7a, 0x33, 0x7f, 0x1f, 0xfd, 0x75, 0xd8,
		0x13, 0x76, 0xf8, 0xb7, 0x80, 0x9a, 0xd8, 0x68, 0x92, 0x5b, 0x59, 0xaf, 0x85, 0x75, 0x25, 0x9e,
		0xd7, 0x82, 0x08, 0xf4, 0x3a, 0xa4, 0x4d, 0x12, 0x08, 0x98, 0x37, 0x02, 0x0e, 0x80, 0x36, 0x39,
		0x8c, 0x25, 0x29, 0x8c, 0xcd, 0xc9, 0x2b, 0xc1, 0xc9, 0x83, 0x93, 0x07, 0x27, 0x0f, 0x4e, 0x1e,
		0x9c, 0x3c, 0x38, 0x79, 0x70, 0xf2, 0xe0, 0xe4, 0xc1, 0xc9, 0x83, 0x2f, 0xb3, 0x31, 0xbe, 0x0c,
		0x61, 0xdc, 0x14, 0x82, 0x08, 0x52, 0xdd, 0xca, 0x02, 0x89, 0x1f, 0x18, 0x39, 0x0a, 0xc5, 0xeb,
		0xe4, 0x32, 0x64, 0x81, 0xc4, 0xe1, 0x25, 0x75, 0x74, 0x51, 0xa4, 0x33, 0x4d, 0xfc, 0x88, 0xb0,
		0x85, 0x0c, 0x68, 0x60, 0xc2, 0xb0, 0x85, 0x9e, 0x2d, 0x85, 0xeb, 0x71, 0x04, 0x2e, 0x0c, 0x47,
		0x46, 0xe8, 0x02, 0x58, 0x2d, 0xb0, 0x5a, 0x9b, 0xc0, 0x6a, 0x3d, 0x39, 0x8e, 0xf4, 0xa4, 0x6b,
		0x74, 0xf5, 0x8e, 0xf0, 0x3c, 0x83, 0x95, 0xdd, 0x5a, 0x30, 0x17, 0x58, 0x2e, 0xb0, 0x5c, 0x60,
		0xb9, 0xc0, 0x72, 0x11, 0xca, 0x7b, 0xcf, 0xb4, 0xe5, 0x7e, 0x89, 0x91, 0xe4, 0xe2, 0xe0, 0xb8,
		0xee, 0x0c, 0xfb, 0x59, 0xb0, 0x65, 0xfd, 0x33, 0xa6, 0x4e, 0x5e, 0x9b, 0x36, 0x7f, 0xf6, 0xef,
		0x57, 0xc3, 0xea, 0x09, 0xbe, 0x9c, 0xec, 0x70, 0x9e, 0x4b, 0xd7, 0x68, 0x4a, 0xd3, 0xb1, 0x2f,
		0xcc, 0x67, 0x93, 0x3a, 0x27, 0x6b, 0xb1, 0xcc, 0x8a, 0x67, 0x43, 0x9a, 0xdf, 0x05, 0x69, 0x6a,
		0x93, 0x82, 0x63, 0x3c, 0x2d, 0x02, 0xc6, 0xab, 0x3a, 0x11, 0x28, 0x97, 0x4e, 0xca, 0x27, 0x87,
		0x47, 0xa5, 0x93, 0x03, 0xc8, 0x42, 0x26, 0x0c, 0x04, 0xdf, 0xa8, 0xf5, 0x4c, 0x1b, 0x32, 0xf1,
		0x2a, 0x5d, 0x43, 0xef, 0xd9, 0x9e, 0x34, 0x9e, 0x2c, 0x26, 0x93, 0xe6, 0x8a, 0xb6, 0x70, 0x85,
		0xdd, 0xcc, 0xa5, 0x65, 0x18, 0xd9, 0xe3, 0xbb, 0xcb, 0xf3, 0xa3, 0xa3, 0xc3, 0xa2, 0xb6, 0xbf,
		0x73, 0xa4, 0x75, 0x8d, 0x67, 0xa1, 0x15, 0x4b, 0x6b, 0x56, 0x91, 0x62, 0xbc, 0x4d, 0xeb, 0x5c,
		0x94, 0x62, 0xd1, 0x3e, 0x42, 0x47, 0x6d, 0x40, 0x71, 0xf5, 0x17, 0x61, 0x59, 0x8e, 0x02, 0x7a,
		0x60, 0x66, 0x1e, 0x50, 0x03, 0xa0, 0x06, 0x40, 0x0d, 0x80, 0x1a, 0x00, 0x35, 0x00, 0x6a, 0x00,
		0xd4, 0x00, 0xa8, 0x01, 0x50, 0x03, 0xa0, 0x06, 0x40, 0x0d, 0xac, 0x25, 0x35, 0x50, 0xde, 0x39,
		0xd9, 0x29, 0x0d, 0x9d, 0xca, 0xbd, 0x63, 0xb0, 0x03, 0x39, 0x66, 0x07, 0x66, 0xb6, 0x12, 0x9a,
		0x6a, 0x03, 0x08, 0x82, 0xff, 0x75, 0x4c, 0x5b, 0xef, 0xba, 0x3d, 0x5b, 0x28, 0x60, 0x09, 0x16,
		0x4d, 0x06, 0xaa, 0x00, 0x54, 0x01, 0xa8, 0x02, 0x50, 0x05, 0xa0, 0x0a, 0x40, 0x15, 0x80, 0x2a,
		0x00, 0x55, 0x00, 0xaa, 0x00, 0x54, 0x01, 0xa8, 0x82, 0x35, 0xa5, 0x0a, 0x0e, 0x06, 0xde, 0x65,
		0xb9, 0x0c, 0x9e, 0x20, 0xd7, 0x3c, 0xc1, 0x78, 0x1f, 0xa1, 0xa3, 0x90, 0x95, 0xbc, 0x8a, 0x18,
		0xad, 0x43, 0x56, 0x72, 0xd0, 0x99, 0x9f, 0x38, 0xcf, 0x4a, 0x8b, 0x97, 0xdd, 0x7a, 0x3e, 0x7a,
		0x8a, 0x35, 0xaa, 0xf5, 0xd4, 0x31, 0x5e, 0xcd, 0x4e, 0xaf, 0xa3, 0x07, 0xcd, 0x2c, 0x19, 0x32,
		0xe4, 0x66, 0xc6, 0xa7, 0xcd, 0x93, 0xdb, 0x43, 0x9e, 0x5c, 0x86, 0x6d, 0x37, 0xf2, 0xe4, 0x72,
		0x64, 0x2b, 0xc8, 0x09, 0x22, 0x3e, 0x62, 0x88, 0x81, 0x10, 0x62, 0x22, 0x82, 0x18, 0x7c, 0x13,
		0x4e, 0xe2, 0x87, 0x9b, 0xf0, 0x51, 0xe6, 0xdc, 0xf3, 0x3b, 0xf5, 0x1c, 0xcd, 0x28, 0x39, 0x09,
		0x1d, 0x65, 0x44, 0xce, 0x3a, 0xed, 0x71, 0x46, 0x9d, 0x8c, 0xfa, 0x1a, 0xc1, 0x4f, 0x5b, 0x98,
		0xcf, 0x2f, 0x4f, 0x8e, 0xab, 0x07, 0x08, 0x9f, 0x1e, 0x7e, 0xce, 0x8c, 0x0f, 0xf8, 0x09, 0xf8,
		0x09, 0xf8, 0xb9, 0x71, 0xf0, 0xf3, 0x98, 0x01, 0x7d, 0x1e, 0x00, 0x7d, 0x02, 0x7d, 0x02, 0x7d,
		0x46, 0xdb, 0xda, 0xd2, 0x01, 0x60, 0x27, 0x60, 0x67, 0x9a, 0x23, 0x6c, 0x74, 0x59, 0xc8, 0xe4,
		0xd5, 0x3d, 0x13, 0xd4, 0x67, 0xfc, 0xa0, 0x70, 0xbb, 0xa8, 0xb6, 0x49, 0xe5, 0xf6, 0x14, 0x12,
		0x15, 0xb0, 0x8c, 0x78, 0x97, 0x11, 0x4f, 0x0a, 0xa2, 0xef, 0x61, 0x8c, 0xfd, 0x1b, 0x37, 0x95,
		0x8f, 0x7f, 0x1d, 0x31, 0xdf, 0xa0, 0x3e, 0xee, 0xd5, 0x43, 0xc2, 0x92, 0x7c, 0x89, 0x7d, 0x3b,
		0x0a, 0x5f, 0x8e, 0xce, 0x77, 0xa3, 0xf2, 0xd5, 0xc8, 0x7d, 0x33, 0x72, 0x5f, 0x8c, 0xd4, 0xf7,
		0x52, 0xab, 0xfb, 0x92, 0x96, 0xbc, 0x1b, 0x1f, 0x1a, 0xba, 0x92, 0xb8, 0xe3, 0x21, 0xd1, 0xcd,
		0x57, 0x1d, 0xc5, 0x82, 0xb2, 0xb8, 0x28, 0x8b, 0xbb, 0x7c, 0x20, 0x74, 0xf3, 0xa5, 0x18, 0x10,
		0x5c, 0x2b, 0xb8, 0x56, 0x35, 0x4e, 0x78, 0x86, 0x4b, 0xe2, 0xba, 0x2d, 0xe1, 0xea, 0xae, 0xd3,
		0x93, 0xc2, 0xe5, 0xac, 0x86, 0x3b, 0x39, 0x0d, 0xf1, 0xf6, 0x5f, 0x88, 0xb6, 0xd1, 0xb3, 0x24,
		0x4b, 0xc4, 0x6f, 0x21, 0x20, 0x8a, 0x68, 0xa3, 0x36, 0xeb, 0x48, 0xe1, 0x43, 0x0a, 0x5f, 0x6a,
		0xea, 0x58, 0x99, 0x5a, 0x56, 0xa2, 0x9e, 0x69, 0xd5, 0x34, 0xb1, 0xba, 0x0e, 0x57, 0x80, 0x3f,
		0x85, 0xef, 0xc9, 0x71, 0x2c, 0x61, 0xd8, 0x9c, 0xed, 0xae, 0x8a, 0xe8, 0x19, 0x9c, 0xb3, 0x9e,
		0xc1, 0x84, 0xe0, 0xf3, 0xc9, 0x73, 0xf5, 0x81, 0x11, 0x67, 0x04, 0x09, 0xe3, 0x39, 0x80, 0x10,
		0x80, 0x10, 0x80, 0x10, 0x80, 0x10, 0x80, 0x10, 0x80, 0x10, 0x80, 0x10, 0x72, 0x81, 0x10, 0x5a,
		0xc2, 0x68, 0xe9, 0xd2, 0xec, 0x70, 0x22, 0x84, 0x89, 0x39, 0x60, 0x21, 0x61, 0x21, 0x61, 0x21,
		0x61, 0x21, 0x09, 0xe5, 0xbd, 0x67, 0xda, 0xb2, 0x78, 0xc8, 0x68, 0x20, 0x0f, 0x51, 0x06, 0x67,
		0xfc, 0xe0, 0x4a, 0xcb, 0xe0, 0x14, 0x51, 0xfa, 0x24, 0x1b, 0xc7, 0x78, 0x5a, 0x04, 0x54, 0x96,
		0xc1, 0x39, 0x3c, 0x38, 0xd8, 0x47, 0x05, 0x9c, 0x6c, 0xd8, 0x06, 0xbe, 0x51, 0xeb, 0x70, 0x41,
		0x36, 0xd8, 0x05, 0x71, 0xf5, 0xae, 0x6b, 0x3a, 0xae, 0x29, 0xdf, 0x18, 0x7d, 0x90, 0x89, 0x49,
		0xe0, 0x84, 0xc0, 0x09, 0x81, 0x13, 0x02, 0x27, 0x84, 0x47, 0xbd, 0xe8, 0xd2, 0x9f, 0x0d, 0x55,
		0x39, 0xd7, 0xcf, 0x1d, 0x41, 0x55, 0xce, 0x8d, 0x77, 0x47, 0x50, 0x95, 0x13, 0x3e, 0x09, 0x7c,
		0x92, 0xf5, 0xf7, 0x49, 0x84, 0x6d, 0x3c, 0x59, 0xa2, 0xc5, 0xe7, 0x8f, 0x8c, 0x26, 0x40, 0xc8,
		0x04, 0x7c, 0x31, 0xf8, 0x62, 0xf0, 0xc5, 0xe0, 0x8b, 0x91, 0xc9, 0x3b, 0x42, 0x26, 0x80, 0x0d,
		0x38, 0xb1, 0xc1, 0xa0, 0x09, 0x70, 0x90, 0x5f, 0xf9, 0xdd, 0xb0, 0xb8, 0x9b, 0x0d, 0x87, 0xf3,
		0xc0, 0x52, 0xc2, 0x52, 0xc2, 0x52, 0xc2, 0x52, 0x12, 0xca, 0x7b, 0xd7, 0xec, 0x84, 0xfa, 0x85,
		0x9b, 0xb6, 0x64, 0x20, 0x4c, 0x0a, 0x5f, 0xec, 0x01, 0x37, 0x52, 0xf0, 0x44, 0xd3, 0xb1, 0x5b,
		0x5e, 0x01, 0xd4, 0xe8, 0x04, 0x2f, 0x86, 0x48, 0x8d, 0x5c, 0xd0, 0x61, 0xeb, 0x42, 0x8d, 0xb2,
		0x55, 0x1a, 0xdb, 0x04, 0x21, 0x00, 0x27, 0x0a, 0xbf, 0x27, 0xeb, 0x7e, 0x4f, 0x58, 0x51, 0x46,
		0x37, 0x19, 0x89, 0xd1, 0xa9, 0x59, 0xe0, 0xf3, 0xc0, 0xe7, 0x81, 0xcf, 0x03, 0x9f, 0x27, 0x1f,
		0xfa, 0x65, 0x52, 0xc7, 0x14, 0x8f, 0x61, 0x2a, 0x37, 0xd7, 0x54, 0x4e, 0x74, 0x00, 0xe7, 0xe7,
		0x09, 0x17, 0x4d, 0x06, 0xc3, 0x09, 0xc3, 0x09, 0xc3, 0x09, 0xc3, 0x49, 0x28, 0xef, 0x20, 0x0b,
		0x7f, 0x3d, 0x07, 0xc8, 0xc2, 0x55, 0x98, 0x22, 0x90, 0x85, 0x19, 0xd1, 0x1a, 0xd3, 0x22, 0x00,
		0xb2, 0x30, 0x27, 0x42, 0x00, 0xb2, 0x10, 0x1e, 0x50, 0xd6, 0x3d, 0x20, 0xa6, 0x2e, 0xb7, 0x73,
		0xa8, 0x84, 0xa5, 0xdb, 0x2d, 0xfc, 0x1e, 0xf8, 0x3d, 0xf0, 0x7b, 0xe0, 0xf7, 0xf0, 0x74, 0xd3,
		0x9d, 0xd5, 0x2e, 0x48, 0xe8, 0x4a, 0xcb, 0x11, 0x41, 0x42, 0xd7, 0xc6, 0x3b, 0x22, 0x48, 0xe8,
		0x82, 0x3f, 0x02, 0x7f, 0x64, 0x03, 0xfc, 0x11, 0xa7, 0x25, 0x18, 0xbd, 0x10, 0x7f, 0x74, 0xf8,
		0x1e, 0xf0, 0x3d, 0xe0, 0x7b, 0xc0, 0xf7, 0x20, 0x94, 0x77, 0xb3, 0x25, 0x6c, 0x69, 0xca, 0x37,
		0x57, 0xb4, 0x39, 0x63, 0x15, 0x38, 0xae, 0x5b, 0xaa, 0xc3, 0x47, 0xff, 0x64, 0x78, 0x8c, 0xc7,
		0x6a, 0xb4, 0x50, 0xb5, 0xea, 0x75, 0xe3, 0xfa, 0xf6, 0xa2, 0xc2, 0x75, 0xaa, 0x02, 0xb8, 0xe8,
		0xb1, 0x39, 0x54, 0xbc, 0x4e, 0xd5, 0xc2, 0x95, 0x6a, 0x5c, 0x54, 0x6e, 0xee, 0x2b, 0x85, 0x3c,
		0x7a, 0x08, 0xaa, 0x57, 0xea, 0xbe, 0x76, 0x76, 0xc7, 0xba, 0x54, 0x2c, 0x23, 0xd7, 0x37, 0x4c,
		0x1b, 0x03, 0x40, 0x33, 0x8d, 0x44, 0xd5, 0x05, 0x8b, 0x69, 0x83, 0xd4, 0x74, 0x0c, 0x1e, 0xb7,
		0xb5, 0x1d, 0xff, 0xb8, 0x3b, 0xec, 0xbb, 0x97, 0x95, 0x36, 0xdd, 0x04, 0xed, 0x2b, 0x07, 0x65,
		0x29, 0xf4, 0xa7, 0x76, 0x8b, 0xbe, 0x4b, 0xe1, 0xc4, 0xd8, 0xe8, 0x54, 0x48, 0xe1, 0x0a, 0xd1,
		0xad, 0xa4, 0x86, 0x4e, 0x85, 0x11, 0x5c, 0x1d, 0x7f, 0xdd, 0xd1, 0xa9, 0x70, 0xb5, 0x01, 0x89,
		0x5b, 0x9e, 0xce, 0x1d, 0x03, 0xd2, 0xd6, 0xa7, 0x4c, 0x8a, 0x65, 0x6d, 0xb8, 0x17, 0x5a, 0x85,
		0x03, 0xee, 0x25, 0x93, 0x0a, 0x29, 0x1f, 0x68, 0x9f, 0x5a, 0x51, 0xcd, 0x20, 0xa0, 0x16, 0x3f,
		0x65, 0xc1, 0x53, 0x01, 0x6c, 0x56, 0x85, 0x31, 0xdd, 0x32, 0xb1, 0xa9, 0x32, 0x15, 0x2a, 0x4d,
		0x9d, 0x6a, 0x53, 0xa5, 0xe2, 0x94, 0xab, 0x3a, 0xe5, 0x2a, 0x4f, 0xa9, 0xea, 0xe3, 0x25, 0x66,
		0x98, 0x98, 0x31, 0x3e, 0x3a, 0x7a, 0xee, 0xbc, 0xf0, 0x55, 0xd8, 0x9a, 0x43, 0x60, 0xc5, 0x5c,
		0x6d, 0x01, 0x33, 0x07, 0xa5, 0x9e, 0x8b, 0xe2, 0x3b, 0x09, 0x9b, 0x4d, 0x26, 0xa6, 0xc7, 0x59,
		0x8d, 0x59, 0x18, 0x52, 0xfa, 0x8a, 0x7e, 0x5b, 0x29, 0x6f, 0xff, 0x3d, 0x69, 0x48, 0xc6, 0xeb,
		0xff, 0xc1, 0xf0, 0x39, 0xf3, 0x41, 0x4b, 0xf0, 0x41, 0xe1, 0x83, 0xc2, 0x07, 0x85, 0x0f, 0x0a,
		0x1f, 0x14, 0x3e, 0x28, 0x7c, 0x50, 0xf8, 0xa0, 0xf0, 0x41, 0xd5, 0xfa, 0xa0, 0x70, 0xa9, 0xd6,
		0xcf, 0xa5, 0x1a, 0x78, 0x02, 0x08, 0x07, 0x49, 0x4f, 0x1e, 0x32, 0x21, 0x07, 0x05, 0x52, 0xdf,
		0xd5, 0xed, 0x35, 0xa5, 0x3d, 0x54, 0x7b, 0x37, 0x83, 0x07, 0xac, 0x0e, 0x9f, 0xaf, 0x51, 0x1b,
		0x3e, 0x55, 0xa3, 0x66, 0x76, 0x1a, 0xd5, 0xd1, 0xa3, 0x34, 0x2a, 0xc1, 0xa3, 0x7c, 0xa2, 0x32,
		0x4c, 0xd9, 0x08, 0x4e, 0x61, 0x29, 0x40, 0xc8, 0x59, 0x18, 0x8c, 0x18, 0x00, 0xe7, 0x2e, 0x40,
		0x85, 0x36, 0x56, 0x1f, 0x01, 0x2a, 0xab, 0x02, 0x52, 0xd2, 0x58, 0xfc, 0x6c, 0x59, 0x0d, 0x72,
		0x80, 0x19, 0xca, 0xab, 0x25, 0x8c, 0x36, 0x6d, 0x9c, 0x7d, 0x08, 0x20, 0x09, 0x33, 0x7c, 0x0b,
		0xb5, 0xa1, 0x61, 0xdb, 0xd9, 0x19, 0xf2, 0xb7, 0xbb, 0x53, 0x8a, 0x6b, 0x2d, 0xd5, 0xbd, 0xbf,
		0x2d, 0x8c, 0xfa, 0x9e, 0x6e, 0xd7, 0x37, 0x3d, 0x22, 0xd1, 0x6c, 0x43, 0xdf, 0xa7, 0xa0, 0xef,
		0xcd, 0x36, 0xe2, 0x11, 0x57, 0x1c, 0x10, 0xf1, 0x88, 0x8c, 0xea, 0x85, 0x53, 0xcd, 0xb0, 0xab,
		0x1b, 0x6e, 0xb5, 0xa3, 0x4c, 0xfd, 0x28, 0x53, 0x43, 0x2a, 0xd4, 0x51, 0x3e, 0xb8, 0x2d, 0xb6,
		0x9b, 0xa0, 0x10, 0xa4, 0xf0, 0xdf, 0x05, 0x8d, 0xa7, 0xc2, 0x6d, 0x90, 0x6a, 0xa5, 0xa6, 0x4c,
		0xb9, 0xa9, 0x52, 0x72, 0xca, 0x95, 0x9d, 0x72, 0xa5, 0xa7, 0x52, 0xf9, 0xf1, 0x28, 0x41, 0x26,
		0x65, 0xc8, 0xe7, 0xaa, 0x2b, 0x74, 0xdd, 0x55, 0xb8, 0xf2, 0x4b, 0x5d, 0xfb, 0xdd, 0x40, 0x8c,
		0x4e, 0x27, 0x38, 0xe6, 0x99, 0x0f, 0x86, 0x7f, 0x0f, 0x38, 0x61, 0xc4, 0x47, 0x2e, 0x98, 0x67,
		0x1d, 0xe2, 0x23, 0x19, 0x90, 0xad, 0xd7, 0x7b, 0x52, 0x08, 0x28, 0xa6, 0x66, 0x03, 0xa6, 0x00,
		0xa6, 0x00, 0xa6, 0x00, 0xa6, 0x00, 0xa6, 0xc8, 0x28, 0xa6, 0x78, 0x1c, 0x63, 0x8a, 0x7f, 0x34,
		0x7b, 0xae, 0x2b, 0x6c, 0xb9, 0xb5, 0xbd, 0xbb, 0xb3, 0x33, 0xbe, 0x5e, 0xa8, 0x0f, 0xbf, 0x32,
		0xa9, 0xd7, 0xbd, 0x05, 0x9f, 0x85, 0x23, 0xb7, 0xc4, 0x2b, 0xe0, 0xc9, 0xba, 0xc2, 0x93, 0x4c,
		0xf3, 0x31, 0x95, 0x57, 0xc9, 0x53, 0xac, 0x89, 0x9f, 0x12, 0x74, 0x9a, 0xba, 0x78, 0x95, 0xa7,
		0x52, 0x58, 0xa2, 0x23, 0xa4, 0xfb, 0xa6, 0x3b, 0xb6, 0xde, 0x7c, 0x09, 0xca, 0xf9, 0x2a, 0xa1,
		0x09, 0x83, 0x5a, 0xa1, 0x0a, 0x78, 0xc2, 0xac, 0x53, 0x84, 0x75, 0x84, 0xbf, 0xad, 0x18, 0xf6,
		0x34, 0x75, 0x91, 0x8a, 0xa4, 0x22, 0x32, 0xf7, 0x09, 0x49, 0x45, 0xb8, 0x48, 0xca, 0x84, 0x1f,
		0x84, 0x8b, 0x24, 0x65, 0xc0, 0x05, 0x17, 0x49, 0x20, 0x7d, 0x40, 0xfa, 0x80, 0xf4, 0x01, 0xe9,
		0x03, 0xd2, 0x47, 0x01, 0xe9, 0xc3, 0x7f, 0x91, 0x84, 0x7b, 0x91, 0x79, 0x60, 0x8f, 0x7b, 0x11,
		0x98, 0x48, 0x98, 0x48, 0x98, 0x48, 0x98, 0xc8, 0x1c, 0x98, 0xc8, 0x5c, 0xdd, 0x8b, 0x20, 0xa5,
		0x98, 0x16, 0x17, 0x64, 0x84, 0x53, 0x45, 0x56, 0x71, 0xda, 0x22, 0x91, 0x15, 0x51, 0x48, 0x3d,
		0xb1, 0x38, 0xfc, 0xe9, 0x4e, 0xb4, 0xd7, 0x29, 0xd9, 0xcc, 0x16, 0xe6, 0xf3, 0xcb, 0x93, 0xe3,
		0x7a, 0xf4, 0x89, 0x66, 0xe3, 0xa1, 0x33, 0x9e, 0x64, 0x56, 0x42, 0x56, 0x71, 0x8e, 0xd0, 0x38,
		0xb2, 0x8a, 0x33, 0x9c, 0x66, 0x36, 0x3a, 0xf3, 0x7c, 0xd7, 0x83, 0xe1, 0x0c, 0x48, 0x35, 0x43,
		0xdb, 0xc1, 0xd4, 0x29, 0x01, 0xb4, 0x1d, 0x54, 0xe7, 0xf5, 0xb0, 0xdd, 0x11, 0x8e, 0x54, 0x8a,
		0x6e, 0xb4, 0x5a, 0xae, 0xf0, 0x3c, 0x7e, 0x2a, 0x74, 0x6e, 0x46, 0xd0, 0xa1, 0xaa, 0x95, 0x9c,
		0x3a, 0x65, 0xa7, 0x4a, 0xe9, 0x29, 0x57, 0x7e, 0xca, 0x95, 0xa0, 0x52, 0x65, 0xc8, 0x47, 0x2e,
		0x69, 0x20, 0x44, 0xa3, 0x61, 0x32, 0x15, 0x84, 0xe8, 0xce, 0xce, 0x80, 0x6e, 0xda, 0x9d, 0xd3,
		0xcd, 0x9b, 0x7c, 0x41, 0xc8, 0x12, 0xea, 0x37, 0x27, 0x4a, 0x1c, 0x21, 0x7f, 0xcc, 0xc0, 0x9e,
		0x8d, 0x45, 0x80, 0x0d, 0x84, 0x0d, 0x84, 0x0d, 0xcc, 0xa4, 0xa3, 0x10, 0x4e, 0xd0, 0xe2, 0x77,
		0x15, 0xe6, 0x8e, 0x66, 0x8b, 0xdb, 0x59, 0x50, 0xe4, 0x34, 0x28, 0x73, 0x1e, 0x54, 0x2a, 0x50,
		0xf5, 0x8a, 0x54, 0xb5, 0x42, 0x4d, 0x4d, 0xb1, 0xa6, 0xa6, 0x60, 0x53, 0x51, 0xb4, 0xbc, 0x0a,
		0x97, 0x59, 0xf1, 0xaa, 0x73, 0x42, 0xe6, 0xce, 0x9b, 0xd9, 0xfd, 0x5e, 0x56, 0xa4, 0x1f, 0xa7,
		0x40, 0xe5, 0xb1, 0x82, 0xb9, 0x6a, 0x86, 0x94, 0xc2, 0xb5, 0x59, 0xf2, 0xfa, 0x16, 0x4e, 0xb8,
		0xb5, 0xf5, 0xb8, 0xa7, 0x9f, 0xd4, 0xdf, 0x1f, 0x8b, 0xfa, 0x49, 0x7d, 0xf0, 0x63, 0x31, 0xf8,
		0xcf, 0xe0, 0xe7, 0xd2, 0xe3, 0x9e, 0x5e, 0x1e, 0xfd, 0x7c, 0xf0, 0xb8, 0xa7, 0x1f, 0xd4, 0xb7,
		0xbf, 0x7d, 0xdb, 0xd9, 0xfe, 0xb1, 0xdf, 0x8f, 0xfe, 0xc5, 0xad, 0xff, 0xe7, 0xf1, 0xdb, 0xb7,
		0xee, 0x8f, 0x9b, 0xbe, 0xff, 0xff, 0x57, 0xfd, 0xfa, 0xff, 0x6c, 0xff, 0x93, 0xff, 0x74, 0xd5,
		0x3f, 0xe4, 0xf3, 0xec, 0x32, 0x9e, 0xdb, 0x42, 0xc7, 0x69, 0x09, 0x75, 0x68, 0x26, 0x98, 0x0d,
		0x38, 0x06, 0x38, 0x06, 0x38, 0x06, 0x38, 0x06, 0x38, 0x66, 0x8c, 0x63, 0x5a, 0xc2, 0x96, 0xa6,
		0x7c, 0xe3, 0x25, 0x56, 0xe7, 0x60, 0xcc, 0x81, 0x82, 0xb9, 0xaa, 0xc3, 0x57, 0xfb, 0x64, 0x78,
		0x0a, 0x8f, 0xf9, 0x68, 0x61, 0x6b, 0xd5, 0xeb, 0xc6, 0xf5, 0xed, 0x45, 0x45, 0xd5, 0x29, 0xff,
		0x6a, 0x58, 0x3d, 0xe1, 0x29, 0xc3, 0x6c, 0x1a, 0x5b, 0x8d, 0x86, 0x95, 0x57, 0xb6, 0x71, 0x51,
		0xb9, 0xb9, 0xaf, 0x14, 0x94, 0x3d, 0x44, 0xff, 0xe3, 0xc6, 0xac, 0xec, 0x7d, 0xed, 0xec, 0x4e,
		0xe9, 0xd2, 0x2a, 0x99, 0xa9, 0x9e, 0x77, 0xeb, 0x93, 0x4b, 0x9c, 0xaf, 0x2c, 0xd8, 0x61, 0x4e,
		0x9c, 0x15, 0x05, 0x3d, 0x00, 0xff, 0x03, 0xff, 0x03, 0xff, 0x03, 0xff, 0xe7, 0x13, 0xff, 0x83,
		0xc7, 0xa4, 0x9b, 0x10, 0x3c, 0xe6, 0x26, 0xe3, 0x1b, 0xe1, 0x49, 0xe3, 0xc9, 0x32, 0xbd, 0x17,
		0xc6, 0x86, 0xd2, 0xcb, 0x31, 0xce, 0xe4, 0xec, 0xc0, 0x39, 0xc0, 0x39, 0xc0, 0x39, 0xc0, 0x39,
		0xc0, 0x39, 0xe1, 0x79, 0x93, 0x66, 0x47, 0x48, 0xb3, 0xf9, 0x97, 0x77, 0x58, 0x56, 0x08, 0x73,
		0x54, 0xa0, 0x9c, 0x2f, 0xb6, 0x19, 0xd4, 0x60, 0x2d, 0xd8, 0x86, 0xed, 0x78, 0xa2, 0xe9, 0xd8,
		0x2d, 0x25, 0x48, 0xee, 0x2e, 0x28, 0x95, 0xaa, 0x0a, 0x5b, 0xa9, 0x63, 0xc4, 0x0a, 0xd7, 0xa6,
		0xad, 0x4c, 0x5b, 0x86, 0x93, 0x06, 0xf4, 0x2d, 0xbf, 0xad, 0x9b, 0x9b, 0xf7, 0xd2, 0x35, 0x9a,
		0xd2, 0x74, 0xec, 0x0b, 0xf3, 0x79, 0x20, 0x46, 0xaa, 0x1f, 0xe0, 0x46, 0x3c, 0x1b, 0xd2, 0xfc,
		0x2e, 0x46, 0x15, 0x71, 0xd7, 0x91, 0xce, 0x2d, 0x5c, 0x1b, 0xaf, 0xe9, 0x89, 0x54, 0xf1, 0xb8,
		0x5c, 0x3e, 0x3c, 0x2a, 0x97, 0xf7, 0x8e, 0xf6, 0x8f, 0xf6, 0x4e, 0x0e, 0x0e, 0x8a, 0x87, 0x2a,
		0xae, 0x5f, 0x20, 0x65, 0x0a, 0xec, 0xb4, 0xba, 0x59, 0xe0, 0xf9, 0xfd, 0xcc, 0xf3, 0x7b, 0xed,
		0x9a, 0xae, 0x48, 0x83, 0xd9, 0x1e, 0xcd, 0x0c, 0x8f, 0x0f, 0x1e, 0x1f, 0x3c, 0x3e, 0x78, 0x7c,
		0xf0, 0xf8, 0xe0, 0xf1, 0xc1, 0xe3, 0x83, 0xc7, 0x07, 0x2c, 0x0e, 0x8f, 0x0f, 0x1e, 0x1f, 0x3c,
		0xbe, 0x4d, 0xf4, 0xf8, 0xd0, 0x09, 0x6d, 0xc1, 0x3c, 0xe9, 0x95, 0x55, 0x0c, 0xab, 0xf2, 0x85,
		0x3f, 0x71, 0x94, 0xd9, 0xe4, 0xdb, 0xfd, 0x6c, 0xd7, 0x28, 0xfa, 0x97, 0x78, 0x53, 0x10, 0xea,
		0x56, 0xb8, 0x32, 0x3d, 0x79, 0x26, 0x25, 0x53, 0x3d, 0xa4, 0x6b, 0xd3, 0xae, 0x58, 0xc2, 0x77,
		0xa8, 0x98, 0x2c, 0x85, 0x6f, 0x8e, 0x27, 0x66, 0x50, 0x63, 0x1f, 0x0b, 0xb7, 0x6e, 0x4b, 0xb8,
		0xa2, 0xf5, 0xc9, 0xdf, 0x21, 0xbb, 0x67, 0x59, 0x9c, 0x53, 0x7c, 0xf1, 0x84, 0xcb, 0x62, 0xea,
		0x50, 0x4a, 0x38, 0xbe, 0xa2, 0x2b, 0xb0, 0x54, 0x48, 0x89, 0x51, 0x4c, 0xf6, 0x66, 0xf4, 0x40,
		0x28, 0x6d, 0x9c, 0x9e, 0x88, 0x66, 0x41, 0x34, 0xd7, 0xa9, 0x92, 0x30, 0x6d, 0xad, 0x20, 0x96,
		0xda, 0x40, 0xa8, 0x20, 0x8c, 0x0a, 0xc2, 0xa8, 0x20, 0x4c, 0xaa, 0x9c, 0xc9, 0x2b, 0x08, 0x3f,
		0x39, 0x3e, 0x86, 0xd2, 0x5d, 0xa7, 0x27, 0x05, 0x63, 0x19, 0xe1, 0xe9, 0x69, 0xa8, 0x2b, 0x95,
		0x8a, 0xb6, 0xd1, 0xb3, 0x24, 0x0b, 0x37, 0x5b, 0x08, 0x30, 0x65, 0x21, 0xd3, 0x3d, 0x7f, 0x79,
		0xee, 0x27, 0x51, 0x4b, 0x59, 0xa9, 0x1a, 0x56, 0xa6, 0x8e, 0x95, 0xa9, 0x65, 0x25, 0xea, 0x39,
		0x1f, 0x3c, 0x05, 0xdb, 0xfd, 0xdf, 0x84, 0x82, 0x75, 0x2c, 0x61, 0xd8, 0x1c, 0x02, 0x3f, 0x42,
		0x71, 0xc5, 0x0d, 0x68, 0xb6, 0xfd, 0xe4, 0xb9, 0xfa, 0xc0, 0x56, 0x31, 0xda, 0xc2, 0xf1, 0x1c,
		0x30, 0x84, 0x30, 0x84, 0x30, 0x84, 0x30, 0x84, 0x30, 0x84, 0x30, 0x84, 0xd9, 0x32, 0x84, 0x4d,
		0xa7, 0x67, 0x4b, 0xe1, 0x7a, 0x7c, 0x66, 0x30, 0x9c, 0x01, 0x9d, 0x65, 0x60, 0x04, 0x60, 0x04,
		0x36, 0xc8, 0x08, 0xb0, 0x75, 0x96, 0x79, 0x72, 0x1c, 0xe9, 0x49, 0xd7, 0xe8, 0xea, 0x1d, 0xe1,
		0x79, 0xc6, 0xb3, 0x50, 0xd0, 0x5b, 0x66, 0xc1, 0x9c, 0xe8, 0x2e, 0xa3, 0x5a, 0xd1, 0xa9, 0x53,
		0x78, 0xaa, 0x14, 0x9f, 0x72, 0x05, 0xa8, 0x5c, 0x11, 0x2a, 0x55, 0x88, 0x3c, 0x8a, 0x91, 0x49,
		0x41, 0xf2, 0xa3, 0xe5, 0xb9, 0xf3, 0xd2, 0x33, 0x6d, 0xb9, 0x5f, 0x52, 0xd0, 0x5c, 0x86, 0xb3,
		0xb7, 0x8c, 0x9a, 0x08, 0x6d, 0x05, 0x41, 0xfc, 0x2a, 0x23, 0xb2, 0x55, 0x47, 0x62, 0xa7, 0x16,
		0x1b, 0xab, 0x3e, 0x26, 0x56, 0x41, 0xc4, 0xb5, 0xd2, 0x48, 0xeb, 0x50, 0x54, 0xca, 0xa5, 0x93,
		0xf2, 0xc9, 0xe1, 0x51, 0xe9, 0xe4, 0x00, 0x32, 0x93, 0x0b, 0x03, 0xc5, 0x3f, 0x7a, 0x3d, 0x57,
		0x86, 0x55, 0xbc, 0x4a, 0xd7, 0xd0, 0x7b, 0x76, 0x50, 0x35, 0x88, 0xd9, 0xc4, 0xba, 0xa2, 0x2d,
		0x5c, 0x61, 0x37, 0xd7, 0xc2, 0x32, 0x8d, 0xf0, 0xc2, 0xdd, 0xe5, 0xf9, 0xd1, 0xd1, 0x61, 0x51,
		0xdb, 0xdf, 0x39, 0xd2, 0xba, 0xc6, 0xb3, 0xd0, 0x8a, 0xa5, 0x35, 0xcf, 0xed, 0x1c, 0x6f, 0xe3,
		0x26, 0xa5, 0x77, 0x2e, 0xda, 0x67, 0xe8, 0x40, 0xb5, 0x3a, 0x30, 0x17, 0xad, 0x0b, 0x5f, 0x84,
		0x65, 0x39, 0x0a, 0x69, 0x97, 0x99, 0xf9, 0x40, 0xb9, 0x80, 0x72, 0x01, 0xe5, 0x02, 0xca, 0x05,
		0x94, 0x0b, 0x28, 0x17, 0x50, 0x2e, 0xa0, 0x5c, 0x40, 0xb9, 0x40, 0x66, 0xe0, 0x6e, 0x80, 0x72,
		0x59, 0x43, 0xca, 0xa5, 0xbc, 0x73, 0xb2, 0x53, 0x1a, 0x3a, 0xe3, 0x7b, 0xc7, 0x60, 0x5d, 0xd6,
		0x98, 0x75, 0x99, 0xd9, 0x6a, 0x68, 0x42, 0x10, 0x2f, 0x73, 0x72, 0xf3, 0xbf, 0x8e, 0x69, 0xeb,
		0x5d, 0xb7, 0x67, 0x0b, 0x85, 0xec, 0xcb, 0xa2, 0x49, 0x41, 0xc1, 0x80, 0x82, 0x01, 0x05, 0x03,
		0x0a, 0x06, 0x14, 0x0c, 0x28, 0x18, 0x50, 0x30, 0xa0, 0x60, 0x40, 0xc1, 0x40, 0x66, 0xe0, 0x78,
		0x80, 0x82, 0x59, 0x4b, 0x0a, 0xe6, 0x60, 0xe0, 0x95, 0x97, 0xcb, 0xe0, 0x5f, 0xd6, 0x9a, 0x7f,
		0x19, 0xef, 0x33, 0x74, 0x60, 0xde, 0xc9, 0x17, 0x14, 0x06, 0x4c, 0xa5, 0xfa, 0x5a, 0x50, 0x51,
		0x6c, 0x97, 0x29, 0xdb, 0x53, 0x8b, 0x5d, 0x14, 0xf0, 0x7c, 0xf4, 0x40, 0x1b, 0x90, 0xcc, 0xdb,
		0x12, 0x46, 0x4b, 0x97, 0x66, 0x87, 0xb3, 0xaa, 0xc5, 0xc4, 0x1c, 0xa8, 0xea, 0x80, 0x84, 0xde,
		0x55, 0xc0, 0x05, 0x12, 0x7a, 0xd7, 0xc4, 0x78, 0xf1, 0x57, 0x75, 0xe8, 0x99, 0xb6, 0x2c, 0x1e,
		0x32, 0x16, 0x75, 0x38, 0x64, 0x18, 0x9a, 0x97, 0x99, 0x63, 0x74, 0xde, 0x54, 0x30, 0x71, 0xe3,
		0x76, 0x0d, 0xcc, 0x44, 0xbb, 0x6a, 0x16, 0x45, 0x1d, 0x7b, 0xc2, 0xd9, 0xdd, 0x4d, 0x05, 0xc3,
		0x16, 0x8a, 0xc0, 0xe1, 0xc1, 0xc1, 0xfe, 0x01, 0xc4, 0x20, 0x53, 0xae, 0x1d, 0xfd, 0xa8, 0xf5,
		0x4d, 0x40, 0xda, 0xae, 0xde, 0x75, 0x4d, 0xc7, 0x35, 0xe5, 0x1b, 0x23, 0xd4, 0x9e, 0x98, 0x04,
		0x58, 0x1b, 0x58, 0x1b, 0x58, 0x1b, 0x58, 0x9b, 0x47, 0xbd, 0xe8, 0xd2, 0x9f, 0x8d, 0x0f, 0x75,
		0x1f, 0x01, 0x75, 0xa7, 0x84, 0xba, 0xf7, 0x00, 0xb7, 0x36, 0x1d, 0x75, 0xab, 0xba, 0xcf, 0x06,
		0xf4, 0x06, 0xf4, 0x56, 0x00, 0xbd, 0x85, 0x6d, 0x3c, 0x59, 0xa2, 0xc5, 0x07, 0xbb, 0x47, 0x13,
		0xa0, 0x68, 0x33, 0x5c, 0x0e, 0xb8, 0x1c, 0x70, 0x39, 0xe0, 0x72, 0x90, 0xc9, 0x3b, 0x8a, 0x36,
		0x93, 0xbc, 0xeb, 0xa0, 0x28, 0x46, 0x70, 0xf5, 0xfe, 0xdd, 0xb0, 0xf8, 0x2c, 0xe1, 0xcc, 0x3c,
		0x30, 0x08, 0x30, 0x08, 0x30, 0x08, 0x30, 0x08, 0x84, 0xf2, 0xde, 0x35, 0x3b, 0xa1, 0x7e, 0xe1,
		0x26, 0xa1, 0x38, 0x9a, 0xdf, 0x7e, 0xb1, 0x07, 0x9e, 0x6e, 0xc1, 0x13, 0x4d, 0xc7, 0x6e, 0xb1,
		0x84, 0x3d, 0x81, 0xe8, 0x5a, 0x85, 0xe5, 0xc0, 0xf5, 0xf2, 0xc6, 0x13, 0x5d, 0xa5, 0x03, 0x30,
		0x5c, 0x60, 0xb8, 0xf2, 0x0f, 0xef, 0xc3, 0x98, 0x5a, 0xdd, 0x64, 0xa4, 0xb9, 0xa6, 0x66, 0x01,
		0xb4, 0x07, 0xb4, 0x07, 0xb4, 0x07, 0xb4, 0xcf, 0x87, 0x7e, 0x99, 0x22, 0x7c, 0x8e, 0x37, 0xc0,
		0x22, 0x4c, 0xd4, 0xe1, 0xe0, 0x67, 0x7d, 0x16, 0x4d, 0x06, 0xfb, 0x00, 0xfb, 0x00, 0xfb, 0x00,
		0xfb, 0x00, 0xea, 0x07, 0xd4, 0x0f, 0xa8, 0x1f, 0x50, 0x3f, 0xa0, 0x7e, 0x40, 0xfd, 0x80, 0xfa,
		0xa1, 0x07, 0xfa, 0x1d, 0xe3, 0xd5, 0xec, 0xf4, 0x3a, 0xfa, 0xb3, 0xeb, 0xf4, 0xba, 0x8c, 0x4d,
		0x79, 0x67, 0xe6, 0x01, 0xbc, 0x07, 0xbc, 0x07, 0xbc, 0x07, 0xbc, 0x27, 0x94, 0x77, 0xb6, 0x9a,
		0x7b, 0xc8, 0x29, 0x48, 0x1b, 0x6f, 0x23, 0xa7, 0x60, 0xe3, 0xf1, 0x36, 0x72, 0x0a, 0x00, 0xbb,
		0xd7, 0x09, 0x76, 0x3b, 0x2d, 0xc1, 0x08, 0xb6, 0xfd, 0xd1, 0x01, 0xb1, 0x01, 0xb1, 0x01, 0xb1,
		0x01, 0xb1, 0x09, 0xe5, 0xdd, 0x6c, 0x09, 0x5b, 0x9a, 0xf2, 0xcd, 0x15, 0x6d, 0xce, 0x0b, 0x56,
		0x0e, 0xf2, 0xbc, 0x3a, 0x7c, 0xf4, 0x4f, 0x86, 0x27, 0xf8, 0xdb, 0x18, 0xd4, 0xaa, 0xd7, 0x8d,
		0xeb, 0xdb, 0x8b, 0x0a, 0xd7, 0xa9, 0x0a, 0x50, 0x91, 0xc7, 0x5a, 0x01, 0x95, 0x19, 0xd7, 0xcd,
		0xae, 0x54, 0xe3, 0xa2, 0x72, 0x73, 0x5f, 0x29, 0xe4, 0x11, 0x08, 0xab, 0x5e, 0xa9, 0xfb, 0xda,
		0xd9, 0x1d, 0xeb, 0x52, 0xb1, 0x8c, 0x5c, 0xcf, 0xba, 0x36, 0xfe, 0x90, 0xad, 0x91, 0x88, 0x04,
		0x96, 0xab, 0xfe, 0x67, 0xda, 0x75, 0x3f, 0x69, 0xc4, 0x3f, 0xf9, 0x56, 0x25, 0x1b, 0x21, 0xe1,
		0x26, 0xfb, 0x30, 0x8e, 0x38, 0xf2, 0xa9, 0x70, 0x65, 0x7a, 0xf2, 0x4c, 0x4a, 0x9a, 0x82, 0x9e,
		0x85, 0x6b, 0xd3, 0xae, 0x58, 0xc2, 0xc7, 0x65, 0x44, 0xae, 0x74, 0xe1, 0xda, 0x78, 0x9d, 0x18,
		0xb1, 0x78, 0x5c, 0x2e, 0x1f, 0x1e, 0x95, 0xcb, 0x7b, 0x47, 0xfb, 0x47, 0x7b, 0x27, 0x07, 0x07,
		0xc5, 0x43, 0x0a, 0xf4, 0x50, 0xb8, 0x75, 0x5b, 0xc2, 0x15, 0xad, 0x4f, 0xfe, 0xea, 0xda, 0x3d,
		0xcb, 0xa2, 0x1c, 0xf2, 0x8b, 0x17, 0x54, 0x4b, 0x4d, 0xee, 0xeb, 0x27, 0x15, 0x1e, 0x62, 0xcd,
		0x90, 0x9e, 0x46, 0x20, 0x40, 0x59, 0xb1, 0x4a, 0xfd, 0x26, 0xd3, 0x41, 0xf1, 0x35, 0x47, 0xbc,
		0x6f, 0xc6, 0x14, 0x17, 0x2a, 0x31, 0x51, 0x2d, 0x1e, 0xf1, 0x36, 0x27, 0xfa, 0xd2, 0x46, 0xfb,
		0x46, 0xc4, 0x4d, 0xa0, 0xe8, 0xac, 0x50, 0xf8, 0xfb, 0x45, 0xd8, 0xb1, 0x5d, 0x85, 0x04, 0x1b,
		0x3e, 0x02, 0xae, 0x3b, 0xbb, 0x83, 0x7d, 0xde, 0x1d, 0xb8, 0x8f, 0x6d, 0x53, 0xb8, 0xda, 0x3f,
		0xb4, 0xdf, 0x7c, 0x27, 0xdd, 0x19, 0x04, 0x62, 0x79, 0xa7, 0xb5, 0xea, 0xf5, 0x6f, 0x09, 0x8e,
		0x31, 0x15, 0x5f, 0x32, 0xc9, 0x8b, 0x04, 0xcb, 0x96, 0x50, 0xc5, 0x52, 0xb3, 0x1f, 0x53, 0x2c,
		0xc7, 0xca, 0xeb, 0xfa, 0x21, 0x05, 0x0b, 0x53, 0xb8, 0x10, 0x5e, 0xd3, 0x35, 0xbb, 0x24, 0xe6,
		0x25, 0x14, 0xa5, 0xaa, 0xdd, 0xb4, 0x7a, 0x2d, 0xa1, 0xd5, 0xaa, 0xd7, 0xda, 0xe0, 0xe5, 0x7b,
		0x6e, 0xa0, 0x9a, 0x34, 0x7f, 0xb7, 0x34, 0xf9, 0x22, 0xb4, 0x91, 0x3a, 0xd0, 0x4c, 0x4f, 0x73,
		0xda, 0x9a, 0xbf, 0x0c, 0xdf, 0xec, 0x5a, 0xf5, 0x3a, 0xe9, 0x56, 0x12, 0x32, 0x72, 0x93, 0x52,
		0xd6, 0x9a, 0x58, 0x26, 0x02, 0x33, 0xc6, 0x41, 0xb7, 0x4d, 0x09, 0x5d, 0x92, 0x1d, 0xc8, 0x97,
		0xb9, 0xfc, 0xc0, 0xeb, 0xe1, 0x46, 0xb5, 0x04, 0x09, 0xcd, 0xb0, 0x12, 0xf3, 0x1b, 0x43, 0x82,
		0x23, 0x00, 0xaf, 0x68, 0xf2, 0xb3, 0xfa, 0xfe, 0x45, 0xd8, 0x89, 0xc2, 0xc0, 0xf7, 0x8c, 0xba,
		0x01, 0xa1, 0xfe, 0x1a, 0x7c, 0x3d, 0xe2, 0xce, 0x8f, 0x68, 0xd1, 0x88, 0x5f, 0x0b, 0x6f, 0x56,
		0x4a, 0x11, 0xbf, 0x98, 0xe0, 0xe6, 0x64, 0xf2, 0x66, 0xc4, 0x16, 0xd2, 0x17, 0x97, 0x38, 0x32,
		0x91, 0x50, 0xd7, 0x92, 0xdd, 0x6e, 0x90, 0xa9, 0xd3, 0xd9, 0xdb, 0x89, 0xd1, 0xda, 0x64, 0x0c,
		0x6d, 0x5e, 0x98, 0xf1, 0xdc, 0xfe, 0x42, 0x6b, 0x50, 0x6a, 0x4c, 0xef, 0x08, 0xe9, 0x9a, 0xcd,
		0xf8, 0x1b, 0x37, 0xee, 0xf9, 0x31, 0x35, 0x5e, 0xcc, 0x45, 0x4f, 0x76, 0x65, 0x99, 0xf8, 0x6a,
		0x92, 0xe2, 0x0a, 0x92, 0xe6, 0x40, 0x71, 0xc2, 0x64, 0x92, 0xeb, 0x43, 0x5e, 0xa0, 0x9c, 0xe4,
		0xc0, 0xa5, 0xe3, 0x73, 0x27, 0xbe, 0xca, 0xa3, 0x8b, 0x8a, 0x23, 0x88, 0x7e, 0x23, 0x8a, 0x72,
		0xa3, 0xa1, 0x23, 0xc9, 0x58, 0x70, 0xea, 0xe8, 0x34, 0xb6, 0xc8, 0x23, 0xfa, 0x08, 0xa3, 0x3e,
		0x0d, 0x8f, 0x4b, 0xbf, 0x15, 0xd4, 0x51, 0x62, 0x79, 0xda, 0x93, 0x94, 0xbc, 0xab, 0xba, 0x2a,
		0x9e, 0x2d, 0x06, 0x8e, 0x4c, 0x5a, 0xb9, 0x95, 0xa8, 0x42, 0x2b, 0x80, 0x08, 0x80, 0xc8, 0xc6,
		0x03, 0x91, 0xe4, 0x95, 0x38, 0x13, 0x56, 0xdc, 0x54, 0xa3, 0x72, 0xc6, 0x5c, 0x6c, 0x72, 0xad,
		0x33, 0x31, 0x16, 0x14, 0x0f, 0x14, 0x0f, 0x14, 0x4f, 0x82, 0x53, 0x94, 0x34, 0x68, 0x91, 0x22,
		0x38, 0x91, 0x36, 0x08, 0x71, 0x7c, 0x29, 0x72, 0x73, 0xff, 0x70, 0x76, 0x75, 0xd5, 0xa8, 0xdd,
		0xdd, 0x3e, 0xdc, 0x9e, 0xdf, 0x5e, 0x35, 0x1e, 0xfe, 0xac, 0x25, 0x8d, 0x3c, 0xa4, 0x8c, 0x30,
		0x24, 0xc2, 0xf8, 0xa3, 0xd7, 0xfd, 0xf4, 0xb9, 0x56, 0xc8, 0x82, 0x07, 0x43, 0xfc, 0x5a, 0x17,
		0xd5, 0xbb, 0xca, 0xf9, 0xc3, 0xd5, 0x9f, 0x8d, 0xf3, 0xdb, 0x9b, 0x9b, 0xca, 0xf9, 0x43, 0xe5,
		0x62, 0x1d, 0xdf, 0xf2, 0xf3, 0x5d, 0xf5, 0x53, 0x75, 0x1d, 0x5f, 0xac, 0xfa, 0xf9, 0x7a, 0x2d,
		0xc5, 0xb2, 0x7a, 0x5f, 0xbd, 0x5f, 0xc7, 0xf7, 0xba, 0xba, 0x3d, 0x3f, 0xbb, 0x5a, 0xdb, 0x17,
		0x6b, 0x9c, 0x7d, 0xfe, 0x7c, 0x57, 0xf9, 0x7c, 0xf6, 0x50, 0x59, 0xc7, 0x57, 0xbc, 0xbd, 0xaf,
		0x5d, 0xae, 0xeb, 0x7b, 0xed, 0xaf, 0xe3, 0x8b, 0xd5, 0xce, 0x2b, 0x6b, 0xa9, 0x1c, 0x13, 0x07,
		0x35, 0x64, 0xf3, 0xb5, 0xee, 0x1f, 0xce, 0x1e, 0xaa, 0xe7, 0x85, 0x94, 0x29, 0xc9, 0x7a, 0xe6,
		0x03, 0x3e, 0xe2, 0xf0, 0x03, 0xc3, 0x40, 0x87, 0x84, 0xcc, 0x40, 0x30, 0x4a, 0x4c, 0xcf, 0x8a,
		0xa2, 0x2d, 0x54, 0xe1, 0xa2, 0x72, 0x79, 0xf6, 0xe5, 0xea, 0x21, 0x9e, 0x8c, 0xd4, 0xc1, 0x66,
		0x80, 0xcd, 0x00, 0x9b, 0x11, 0x4b, 0x6e, 0x3c, 0xe9, 0x9a, 0xf6, 0x33, 0x05, 0x91, 0x71, 0xbc,
		0x16, 0x01, 0xd2, 0x99, 0x0f, 0x8b, 0x8b, 0x91, 0xad, 0xc4, 0x17, 0xba, 0x66, 0x36, 0x75, 0xd7,
		0xe9, 0x49, 0xe1, 0x25, 0x0b, 0x61, 0x1b, 0x0f, 0xa3, 0x38, 0x94, 0x6d, 0x2f, 0x9d, 0x50, 0x36,
		0xcb, 0x69, 0xea, 0x2e, 0x22, 0xd9, 0x16, 0x29, 0xe2, 0xe1, 0xd2, 0xac, 0x4b, 0x20, 0xdb, 0x40,
		0xba, 0x93, 0x03, 0xb4, 0xe1, 0x38, 0xc9, 0x80, 0x4e, 0x71, 0x4d, 0x80, 0x4e, 0xec, 0xe3, 0x03,
		0x9c, 0x13, 0xf7, 0x78, 0xa5, 0x03, 0x73, 0xe2, 0x1e, 0xbb, 0x70, 0x80, 0xe6, 0x48, 0x72, 0x89,
		0xae, 0x46, 0x86, 0xe3, 0x25, 0xcd, 0xb2, 0x4d, 0x74, 0x1c, 0xc9, 0x8e, 0x25, 0xe5, 0xf1, 0x64,
		0x39, 0xa6, 0xd4, 0xc7, 0x95, 0xed, 0xd8, 0xb2, 0x1d, 0x5f, 0xae, 0x63, 0x4c, 0xc3, 0xa8, 0x24,
		0x4d, 0x18, 0x4e, 0x7a, 0xbc, 0xc3, 0x81, 0x5a, 0x84, 0xb9, 0x61, 0x73, 0x92, 0x4c, 0x9b, 0x51,
		0xa5, 0xd1, 0xd7, 0xbe, 0x22, 0xaf, 0x79, 0xc5, 0x51, 0xeb, 0x8a, 0x45, 0x31, 0x70, 0x29, 0x08,
		0x76, 0x45, 0xc1, 0xae, 0x30, 0xb8, 0x15, 0x07, 0x8d, 0x02, 0x21, 0x52, 0x24, 0x74, 0xb4, 0x08,
		0x1f, 0x4d, 0x42, 0x4c, 0x9b, 0x70, 0xad, 0x20, 0x57, 0x75, 0x97, 0xb7, 0x67, 0x47, 0xea, 0x4e,
		0x53, 0x6f, 0x3a, 0x9d, 0xae, 0x2b, 0x3c, 0x4f, 0xb4, 0x74, 0x4b, 0x18, 0x6d, 0x7f, 0x92, 0x7e,
		0x56, 0x2a, 0xaf, 0x10, 0x00, 0x95, 0x2e, 0xad, 0xe2, 0x1c, 0xb7, 0x1a, 0x21, 0x45, 0x29, 0x30,
		0x3f, 0x30, 0x3f, 0x30, 0x3f, 0x79, 0x32, 0x3f, 0x66, 0x57, 0x27, 0x17, 0x80, 0xd0, 0x02, 0x9d,
		0x10, 0x8e, 0x39, 0x5c, 0x02, 0xda, 0x32, 0x82, 0x9c, 0x15, 0x28, 0xbb, 0xdf, 0xcb, 0x3a, 0x5b,
		0xc5, 0xd2, 0xb1, 0x91, 0x67, 0x18, 0xbb, 0x66, 0x48, 0x29, 0x5c, 0x9b, 0xad, 0x68, 0x63, 0x61,
		0xeb, 0x71, 0x4f, 0x3f, 0xa9, 0xbf, 0x3f, 0x16, 0xf5, 0x93, 0xfa, 0xe0, 0xc7, 0x62, 0xf0, 0x9f,
		0x1f, 0xa5, 0xfe, 0x7b, 0xe9, 0x71, 0x4f, 0x2f, 0x0f, 0x3f, 0x2d, 0x1d, 0x3c, 0xee, 0xe9, 0x07,
		0xf5, 0xed, 0xad, 0x6f, 0xdf, 0x76, 0xa2, 0x7e, 0x67, 0xfb, 0xc7, 0x7e, 0x7f, 0x37, 0xfc, 0x52,
		0x69, 0xf8, 0xaf, 0xfb, 0x8f, 0x7b, 0x7a, 0xa9, 0xbe, 0x4d, 0x5f, 0x92, 0xb0, 0xce, 0xb1, 0x0f,
		0xb7, 0xf7, 0xd5, 0x3f, 0xd8, 0x37, 0xe3, 0x3f, 0x5b, 0xa9, 0x6f, 0xc7, 0xf6, 0x7f, 0x15, 0xb2,
		0x5e, 0x9b, 0xfb, 0x63, 0x8e, 0xf4, 0xce, 0x21, 0xf4, 0xce, 0x12, 0xbd, 0x13, 0x08, 0xa0, 0xa1,
		0xb7, 0xcf, 0xf4, 0xcb, 0xfa, 0x8f, 0xe2, 0xc7, 0x72, 0xff, 0x74, 0xfb, 0xc7, 0x51, 0x7f, 0xf6,
		0xc3, 0xf7, 0x45, 0xbf, 0x56, 0xfc, 0x78, 0xd4, 0x3f, 0x5d, 0xf2, 0x2f, 0x87, 0xfd, 0xd3, 0x15,
		0xc7, 0x38, 0xe8, 0x6f, 0xcd, 0xfd, 0xaa, 0xff, 0x79, 0x69, 0xd9, 0x17, 0xca, 0x4b, 0xbe, 0xb0,
		0xbf, 0xec, 0x0b, 0xfb, 0x4b, 0xbe, 0xb0, 0xf4, 0x91, 0x4a, 0x4b, 0xbe, 0x70, 0xd0, 0x7f, 0x9f,
		0xfb, 0xfd, 0xad, 0xc5, 0xbf, 0x7a, 0xd8, 0xdf, 0x7e, 0x5f, 0xf6, 0x6f, 0x47, 0xfd, 0xf7, 0xd3,
		0xed, 0xed, 0xdd, 0xad, 0xa2, 0xaf, 0x15, 0x8e, 0x07, 0x6a, 0xa2, 0x58, 0x9f, 0xd3, 0x1e, 0xc1,
		0xff, 0x43, 0x2f, 0xcf, 0xeb, 0x65, 0x48, 0x6b, 0x66, 0xa5, 0x35, 0xfb, 0x56, 0xeb, 0x43, 0xb6,
		0x9e, 0x0b, 0x5c, 0x52, 0x26, 0xb8, 0x24, 0x4f, 0x48, 0x5d, 0x1a, 0xcf, 0xf4, 0x64, 0xd2, 0x68,
		0x60, 0xb0, 0x49, 0x60, 0x93, 0xc0, 0x26, 0x6d, 0x20, 0x9b, 0x24, 0x8d, 0x67, 0xea, 0x7e, 0xd5,
		0x20, 0x93, 0xd0, 0x31, 0x50, 0xcd, 0x6a, 0x87, 0x0f, 0x8e, 0x8e, 0x81, 0x89, 0x64, 0x16, 0x1d,
		0x03, 0x23, 0x8a, 0x00, 0x3a, 0x06, 0x66, 0xc8, 0xd3, 0xe1, 0x1d, 0x75, 0x53, 0x59, 0xc9, 0x17,
		0xf1, 0xaa, 0x93, 0x47, 0x3a, 0xac, 0x09, 0x29, 0x39, 0xc9, 0x43, 0xcc, 0xd2, 0x1b, 0xa5, 0xfe,
		0xf6, 0x7f, 0x6f, 0xff, 0x13, 0x3c, 0x03, 0x78, 0x06, 0xd5, 0x3c, 0x03, 0x1a, 0xbe, 0x44, 0xcd,
		0x9d, 0x0a, 0x73, 0x8d, 0x86, 0x7f, 0x1b, 0x36, 0x3d, 0x48, 0xad, 0x98, 0x7c, 0x82, 0x2c, 0x06,
		0x5b, 0xbc, 0x4a, 0xfd, 0xc5, 0xe9, 0x7a, 0x74, 0x01, 0xee, 0xe3, 0x21, 0x11, 0xe3, 0xae, 0x94,
		0xfd, 0x41, 0x8c, 0x3b, 0x62, 0xdc, 0x57, 0x3a, 0xec, 0xf4, 0x7c, 0x70, 0x38, 0x32, 0x2d, 0x21,
		0x5c, 0x04, 0x21, 0x4c, 0x34, 0x38, 0x08, 0x61, 0xc5, 0x2a, 0x83, 0x16, 0x31, 0x53, 0xe1, 0x5c,
		0x2a, 0x55, 0x12, 0x0e, 0x48, 0x94, 0x1d, 0xb7, 0xf4, 0x30, 0x90, 0x64, 0xcb, 0x31, 0xab, 0x17,
		0x36, 0x35, 0xc3, 0xa9, 0x6e, 0x94, 0xa8, 0x1d, 0x6e, 0xf5, 0xa3, 0x4c, 0x0d, 0x29, 0x53, 0x47,
		0xaa, 0xd4, 0x12, 0x0f, 0xf1, 0x45, 0xdd, 0x3e, 0x9e, 0x5a, 0x5d, 0x85, 0x03, 0x9b, 0x76, 0x4b,
		0xbc, 0xf2, 0xf7, 0x5c, 0x1f, 0x4c, 0xc3, 0x24, 0x21, 0xb4, 0x97, 0xe6, 0xca, 0x94, 0x99, 0x0a,
		0xa5, 0xa6, 0x54, 0xb9, 0xa9, 0x52, 0x72, 0xca, 0x95, 0x9d, 0x72, 0xa5, 0xa7, 0x5a, 0xf9, 0xf1,
		0x28, 0x41, 0x26, 0x65, 0x18, 0x2e, 0x0e, 0xf9, 0xa5, 0xfe, 0xd2, 0x53, 0xc3, 0xc6, 0xe3, 0xcf,
		0x01, 0xb1, 0xe3, 0x5c, 0xed, 0x00, 0x13, 0x5b, 0x3c, 0x37, 0x0f, 0x3b, 0x7b, 0xcc, 0x7f, 0x10,
		0x18, 0xb6, 0xa0, 0x90, 0xb0, 0xa3, 0xdb, 0xca, 0xe2, 0x9f, 0xa8, 0xd3, 0x1b, 0xcc, 0x37, 0xcc,
		0x37, 0xcc, 0x37, 0xcc, 0x77, 0x8a, 0xe6, 0x9b, 0x2d, 0x96, 0x6c, 0x56, 0x87, 0x1d, 0x31, 0x4e,
		0xc1, 0x1b, 0x5b, 0x36, 0xfa, 0xc3, 0x7b, 0xe4, 0x35, 0x55, 0xb1, 0x66, 0xe1, 0x64, 0x8a, 0x62,
		0xce, 0xc2, 0xf9, 0x54, 0xc7, 0x1b, 0x8d, 0x65, 0x5d, 0x55, 0xdc, 0x11, 0xb3, 0x5a, 0x98, 0x16,
		0x15, 0x05, 0x31, 0x69, 0x73, 0xa2, 0xa2, 0x2a, 0x36, 0x6d, 0x13, 0x65, 0xe6, 0x43, 0x3e, 0x47,
		0xaf, 0xc3, 0x2b, 0x83, 0x57, 0xb6, 0xea, 0xb2, 0x90, 0x5f, 0x2e, 0x2f, 0xc5, 0x35, 0xc4, 0x97,
		0xcd, 0xf0, 0xcc, 0xe0, 0x99, 0xc1, 0x33, 0x83, 0x67, 0xa6, 0xd2, 0x33, 0xb3, 0xe9, 0x2a, 0x41,
		0xfe, 0x4c, 0x85, 0x51, 0xa6, 0x52, 0x2d, 0x5b, 0xae, 0xdc, 0x3b, 0x66, 0x13, 0x05, 0x92, 0x8c,
		0x56, 0xcb, 0xb7, 0xe8, 0x05, 0x05, 0x18, 0x5f, 0xc1, 0x0e, 0xa9, 0xdd, 0x29, 0x75, 0x3b, 0xb6,
		0x60, 0xe7, 0xbe, 0x97, 0x15, 0xee, 0xdd, 0xdc, 0x1e, 0x1e, 0x2b, 0x9c, 0x93, 0x3b, 0x4b, 0x61,
		0xe9, 0xc4, 0xaa, 0x6a, 0x07, 0x15, 0x94, 0xbd, 0x56, 0x5d, 0xe5, 0xb6, 0xa9, 0xa8, 0x24, 0xb2,
		0x74, 0x76, 0x75, 0x95, 0x9f, 0x38, 0x4a, 0x65, 0xa8, 0x75, 0x4f, 0x53, 0x20, 0x7c, 0xd2, 0x53,
		0x9b, 0x87, 0x50, 0x9b, 0xdc, 0x6a, 0x13, 0xb5, 0x7d, 0x52, 0xaa, 0xed, 0x03, 0x43, 0xc2, 0x66,
		0x48, 0x20, 0xce, 0xea, 0xc5, 0x79, 0xfd, 0x0c, 0xeb, 0x87, 0x7c, 0xbf, 0x07, 0x33, 0x30, 0x50,
		0xe8, 0xf9, 0x5a, 0x4e, 0xd3, 0xb0, 0xf4, 0x96, 0x68, 0x9b, 0xb6, 0x68, 0xe9, 0xcc, 0xf4, 0xea,
		0x42, 0x28, 0xa0, 0xe0, 0xce, 0xa9, 0x50, 0x6d, 0x09, 0x5b, 0x9a, 0xf2, 0xed, 0x93, 0xe1, 0x09,
		0x75, 0xd7, 0x6b, 0xd3, 0x3d, 0xb0, 0x2f, 0x2a, 0x97, 0xd5, 0x9b, 0xca, 0x45, 0xe3, 0xa6, 0xf2,
		0xc7, 0x43, 0xe3, 0xf7, 0xdb, 0x9a, 0x22, 0xd8, 0x35, 0xb8, 0xe4, 0xf3, 0x94, 0xda, 0x8b, 0x1f,
		0x6a, 0x2d, 0xd3, 0x68, 0x9d, 0x2f, 0xee, 0x6e, 0x6b, 0xea, 0x34, 0x65, 0xff, 0xe3, 0xba, 0xaf,
		0xe7, 0x40, 0x6e, 0xaf, 0xaa, 0x37, 0xff, 0x52, 0xb8, 0xaa, 0x1f, 0xd6, 0xc3, 0xca, 0xe1, 0xde,
		0x57, 0xc1, 0x59, 0xc1, 0xbd, 0x6f, 0xaa, 0x5b, 0x10, 0xdc, 0x94, 0x09, 0x57, 0xd8, 0x9c, 0xe9,
		0x5d, 0x93, 0x3d, 0x4c, 0x86, 0x73, 0xe1, 0xee, 0x77, 0xb1, 0x7b, 0x88, 0xbb, 0xdf, 0x98, 0x1b,
		0x8f, 0xbb, 0xdf, 0x3c, 0x98, 0x27, 0x44, 0xe5, 0xae, 0xac, 0xc3, 0x10, 0x95, 0xbb, 0xc2, 0x8b,
		0x20, 0x2a, 0x97, 0x45, 0xd6, 0x11, 0x95, 0x4b, 0x24, 0x2a, 0x88, 0xca, 0x85, 0x77, 0x06, 0xef,
		0x0c, 0xde, 0x59, 0xdc, 0x65, 0x71, 0x45, 0xb3, 0xe7, 0x7a, 0x0a, 0x5c, 0xb3, 0xd1, 0x44, 0x4c,
		0x62, 0x74, 0x21, 0xda, 0x46, 0xcf, 0x92, 0xac, 0x90, 0xa3, 0x10, 0xe8, 0x1d, 0x1e, 0x44, 0x5c,
		0x87, 0xbf, 0x0a, 0x7f, 0x15, 0xfe, 0x2a, 0xfc, 0xd5, 0xdc, 0xf9, 0xab, 0x4f, 0x8e, 0x63, 0x09,
		0x43, 0x49, 0xb4, 0x72, 0x11, 0xc8, 0x66, 0x4d, 0x91, 0x4d, 0xa6, 0xab, 0x4c, 0x31, 0x6f, 0x64,
		0x4a, 0x35, 0x89, 0xc3, 0x32, 0xbc, 0xe1, 0x4f, 0x24, 0x65, 0x8a, 0xf9, 0xb6, 0x96, 0x70, 0x5b,
		0x0b, 0xc2, 0x36, 0x9e, 0x2c, 0xa1, 0x3f, 0xb5, 0x5b, 0x7c, 0xa5, 0x09, 0x27, 0xe6, 0x40, 0x79,
		0x42, 0x15, 0xe5, 0x09, 0xe9, 0x57, 0x5a, 0x43, 0x6d, 0x42, 0x02, 0x64, 0xe6, 0xef, 0x0b, 0x0a,
		0x13, 0xd2, 0x0c, 0xcc, 0x54, 0x4f, 0x75, 0xee, 0x38, 0xb1, 0xd4, 0x55, 0x65, 0x56, 0x60, 0x6b,
		0xeb, 0x95, 0xf2, 0x28, 0x36, 0xb8, 0xa4, 0xb9, 0x54, 0x7c, 0xf9, 0xf4, 0x47, 0xb9, 0x14, 0xe2,
		0x0c, 0xa2, 0x6b, 0xf1, 0x4b, 0xf1, 0x34, 0xbc, 0x6b, 0x71, 0xcb, 0x30, 0x2f, 0x81, 0xa7, 0x4c,
		0x65, 0xaa, 0x54, 0x9d, 0xea, 0x55, 0xa8, 0x6a, 0x55, 0x9a, 0x9a, 0x4a, 0x4d, 0x4d, 0xb5, 0xa6,
		0xa2, 0x62, 0x79, 0x55, 0x2d, 0xb3, 0xca, 0x0d, 0x57, 0x8c, 0x9d, 0x0a, 0x9c, 0x3b, 0x6f, 0xfc,
		0x94, 0xe0, 0x1c, 0x92, 0x2c, 0xe6, 0x7a, 0x8b, 0x14, 0x51, 0x85, 0xe1, 0x7c, 0xca, 0x29, 0x43,
		0xfe, 0x93, 0xd4, 0x07, 0x37, 0xbc, 0x60, 0x9e, 0xcc, 0x50, 0x8b, 0x63, 0x32, 0x8c, 0x85, 0x65,
		0xe4, 0x93, 0x02, 0x8e, 0x4b, 0x77, 0x7f, 0x99, 0x14, 0x5c, 0xb9, 0x0f, 0xa6, 0xc9, 0xb9, 0x0b,
		0x5f, 0x82, 0x0b, 0x0f, 0x17, 0x1e, 0x2e, 0x3c, 0x5c, 0x78, 0xb8, 0xf0, 0x70, 0xe1, 0xe1, 0xc2,
		0xc3, 0x85, 0x87, 0x0b, 0x0f, 0x17, 0x1e, 0x9e, 0x27, 0x3c, 0xcf, 0x18, 0x9e, 0xe7, 0xc0, 0x21,
		0x42, 0x4c, 0x54, 0xf6, 0xc5, 0x28, 0x8b, 0xe2, 0x53, 0x60, 0x61, 0x02, 0xdc, 0x5e, 0x53, 0xda,
		0x43, 0xa5, 0x7b, 0x33, 0x78, 0xee, 0xea, 0xf0, 0xb1, 0x1b, 0xb5, 0xe1, 0xc3, 0x36, 0xee, 0x83,
		0xc7, 0x6b, 0xdc, 0x88, 0x57, 0xf9, 0xbb, 0xd3, 0x6d, 0x54, 0x82, 0x67, 0xfa, 0x44, 0x6d, 0x37,
		0xb3, 0x19, 0xaa, 0xc5, 0xd3, 0x8a, 0x91, 0xb5, 0x05, 0x23, 0x13, 0xe2, 0x47, 0xff, 0xd8, 0xb4,
		0x40, 0x3b, 0xfa, 0xc7, 0xae, 0xa7, 0x15, 0x63, 0xc3, 0xd5, 0xe3, 0xd2, 0x59, 0xc2, 0x68, 0xbb,
		0xa2, 0xcd, 0x21, 0xf3, 0x23, 0xdc, 0xcc, 0x90, 0xc7, 0x5d, 0xa8, 0x0d, 0x0d, 0xef, 0xce, 0xce,
		0x90, 0xae, 0xdf, 0x1d, 0xe8, 0xc9, 0x8d, 0xb0, 0x37, 0x52, 0xb8, 0x6d, 0xa3, 0x29, 0x74, 0x7f,
		0xdf, 0x18, 0xed, 0xce, 0xe4, 0x34, 0x08, 0x10, 0x56, 0x61, 0x7f, 0xcc, 0x36, 0x6c, 0x4f, 0x06,
		0x6d, 0x8f, 0xd9, 0x46, 0x78, 0x30, 0xd1, 0xc0, 0x08, 0x0f, 0x4e, 0x51, 0x8d, 0xa9, 0x50, 0x67,
		0xca, 0xd4, 0x9a, 0x2a, 0xf5, 0xa6, 0x5c, 0xcd, 0x29, 0x57, 0x77, 0x2a, 0xd5, 0x1e, 0x1f, 0x1d,
		0xa5, 0xe5, 0xf9, 0x66, 0x31, 0x04, 0x5b, 0xea, 0xee, 0x16, 0xc7, 0x53, 0xe2, 0x76, 0x31, 0x6b,
		0xca, 0x53, 0xb9, 0x12, 0x55, 0xad, 0x4c, 0x53, 0x53, 0xaa, 0xa9, 0x29, 0xd7, 0x34, 0x94, 0x2c,
		0xaf, 0xb2, 0x65, 0x56, 0xba, 0xfc, 0x1c, 0x48, 0x0a, 0x9c, 0x88, 0x4a, 0x8e, 0x64, 0x29, 0x67,
		0xb2, 0x1b, 0x88, 0xdd, 0x69, 0x68, 0x00, 0xbc, 0xd9, 0x0f, 0x86, 0x7f, 0x0f, 0x58, 0x7f, 0x84,
		0x2d, 0x47, 0x98, 0x6f, 0x1d, 0xc3, 0x96, 0x19, 0x91, 0xbb, 0xd7, 0x7b, 0x4a, 0x01, 0xf8, 0x4c,
		0xcd, 0x0a, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x13, 0x7c, 0xf0,
		0x38, 0xc6, 0x3e, 0xff, 0x68, 0xf6, 0x5c, 0x57, 0xd8, 0x72, 0x6b, 0x7b, 0x77, 0x67, 0x67, 0x37,
		0xfc, 0x8d, 0xfa, 0xf0, 0x2b, 0x93, 0x76, 0xc4, 0x5b, 0xf0, 0x59, 0x38, 0x32, 0xf9, 0xbd, 0x14,
		0x60, 0x54, 0xfe, 0x60, 0x54, 0xae, 0xf8, 0xae, 0xca, 0xab, 0xe4, 0xed, 0xb5, 0xa3, 0x8e, 0xaa,
		0x75, 0x9a, 0xba, 0x78, 0x95, 0xa7, 0x52, 0x58, 0xa2, 0x23, 0xa4, 0xfb, 0xa6, 0x3b, 0xb6, 0xde,
		0x7c, 0x09, 0xaa, 0x7f, 0x2b, 0xa5, 0x6f, 0x83, 0xd2, 0x9c, 0x0a, 0xf9, 0xdb, 0xbc, 0x51, 0xb7,
		0x75, 0x84, 0x93, 0xd2, 0xc4, 0x03, 0x4e, 0xdd, 0xdb, 0x23, 0x97, 0x11, 0xb9, 0x8c, 0x11, 0xdc,
		0xc7, 0x12, 0xee, 0x1b, 0x33, 0xe3, 0x26, 0xe2, 0xbe, 0x71, 0x73, 0xf1, 0x17, 0xee, 0x1b, 0xc1,
		0xb9, 0x81, 0x73, 0x03, 0xe7, 0x06, 0xce, 0x0d, 0x9c, 0xdb, 0x06, 0x70, 0x6e, 0xea, 0xee, 0x1b,
		0x71, 0x4d, 0xb6, 0xba, 0x43, 0x83, 0x6b, 0x32, 0x98, 0x6c, 0x98, 0x6c, 0x98, 0x6c, 0x98, 0x6c,
		0x98, 0xec, 0xf5, 0xb8, 0x26, 0x03, 0xbb, 0xa0, 0x81, 0x12, 0x47, 0x91, 0x85, 0xdc, 0x48, 0x52,
		0x46, 0x25, 0x28, 0x3b, 0x75, 0x16, 0xaa, 0xa3, 0xc7, 0xba, 0x13, 0xed, 0x4d, 0x48, 0x7d, 0xe5,
		0xb9, 0xcb, 0x61, 0xbd, 0xc3, 0x61, 0x4f, 0x75, 0x2d, 0xa1, 0xd4, 0x82, 0x52, 0xff, 0x04, 0xa5,
		0x16, 0xd6, 0xd3, 0x96, 0xb1, 0xa5, 0xbc, 0xf2, 0xd4, 0x87, 0x99, 0x3b, 0x53, 0x1c, 0x75, 0x62,
		0x14, 0x11, 0x34, 0xe8, 0xd2, 0x9a, 0x55, 0x12, 0x06, 0x5d, 0x5a, 0x37, 0xdb, 0x55, 0x54, 0xd7,
		0xa5, 0xd5, 0x93, 0xae, 0x69, 0x3f, 0xab, 0x68, 0xd2, 0x7a, 0xbc, 0xc1, 0xc1, 0x50, 0x1d, 0x21,
		0x5d, 0xb3, 0xc9, 0x6f, 0x8c, 0x86, 0xf3, 0xc0, 0x1a, 0xc1, 0x1a, 0xc1, 0x1a, 0xc1, 0x1a, 0xe5,
		0xce, 0x1a, 0xf5, 0x4c, 0x5b, 0xee, 0x97, 0x14, 0x58, 0x23, 0x46, 0x52, 0xbf, 0x70, 0x17, 0x44,
		0xb9, 0x73, 0x86, 0xf1, 0x6b, 0xec, 0xa1, 0xfc, 0xc1, 0x8b, 0x5c, 0x9b, 0xb6, 0xba, 0xeb, 0xc6,
		0xaf, 0x86, 0xd5, 0x13, 0xfc, 0x77, 0xc4, 0xe1, 0x7c, 0x97, 0xae, 0xd1, 0x94, 0xa6, 0x63, 0x5f,
		0x98, 0xcf, 0x66, 0x90, 0x75, 0xa1, 0x6a, 0xe2, 0x1b, 0xf1, 0x6c, 0x48, 0xf3, 0xbb, 0x18, 0x25,
		0x27, 0xf0, 0xdf, 0x31, 0x2a, 0xb8, 0xc0, 0xba, 0x36, 0x5e, 0xd5, 0x8b, 0x4a, 0xb9, 0x74, 0x52,
		0x3e, 0x39, 0x3c, 0x2a, 0x9d, 0x1c, 0x40, 0x66, 0x72, 0x61, 0xa0, 0xf8, 0x47, 0xaf, 0x6f, 0xb0,
		0x93, 0x31, 0xba, 0x35, 0xe1, 0x77, 0x33, 0xc2, 0x99, 0xe0, 0x68, 0xc0, 0xd1, 0x80, 0xa3, 0x01,
		0x47, 0x23, 0x7f, 0x8e, 0x86, 0x6d, 0x3a, 0xb6, 0x0a, 0xd6, 0xeb, 0x84, 0x71, 0x8e, 0xe1, 0x72,
		0xe5, 0xde, 0xcf, 0x08, 0xaf, 0x52, 0xba, 0xba, 0xd1, 0x6a, 0xb9, 0xc2, 0xf3, 0x54, 0xc6, 0x77,
		0x9d, 0x28, 0x98, 0x4b, 0xc9, 0x4e, 0xa9, 0xdb, 0xb1, 0x05, 0x3b, 0xf7, 0xbd, 0xac, 0x70, 0xef,
		0xe6, 0xf6, 0xf0, 0x58, 0xe1, 0x9c, 0x35, 0x43, 0x4a, 0xe1, 0xda, 0xca, 0xb6, 0x33, 0x9c, 0x78,
		0xeb, 0x71, 0x4f, 0x3f, 0xa9, 0xbf, 0x3f, 0x16, 0xf5, 0x93, 0xfa, 0xe0, 0xc7, 0x62, 0xf0, 0x9f,
		0x1f, 0xa5, 0xfe, 0x7b, 0xe9, 0x71, 0x4f, 0x2f, 0x0f, 0x3f, 0x2d, 0x1d, 0x3c, 0xee, 0xe9, 0x07,
		0xf5, 0xed, 0xad, 0x6f, 0xdf, 0x76, 0xa2, 0x7e, 0x67, 0xfb, 0xc7, 0x7e, 0xbf, 0xa0, 0xec, 0xb5,
		0xea, 0x2a, 0xb7, 0xed, 0xf6, 0xbe, 0xfa, 0x47, 0x6a, 0x7b, 0xf7, 0x9f, 0x2d, 0x55, 0xbb, 0xb7,
		0xfd, 0x5f, 0x0a, 0xf7, 0x4f, 0xc9, 0x4c, 0xfd, 0x8f, 0x6b, 0xac, 0x36, 0x0f, 0xa1, 0x36, 0xb9,
		0xd5, 0x66, 0x70, 0x8a, 0x0c, 0xbd, 0x7d, 0xa6, 0x5f, 0xd6, 0x7f, 0x14, 0x3f, 0x96, 0xfb, 0xa7,
		0xdb, 0x3f, 0x8e, 0xfa, 0xb3, 0x1f, 0xbe, 0x2f, 0xfa, 0xb5, 0xe2, 0xc7, 0xa3, 0xfe, 0xe9, 0x92,
		0x7f, 0x39, 0xec, 0x9f, 0xae, 0x38, 0xc6, 0x41, 0x7f, 0x6b, 0xee, 0x57, 0xfd, 0xcf, 0x4b, 0xcb,
		0xbe, 0x50, 0x5e, 0xf2, 0x85, 0xfd, 0x65, 0x5f, 0xd8, 0x5f, 0xf2, 0x85, 0xa5, 0x8f, 0x54, 0x5a,
		0xf2, 0x85, 0x83, 0xfe, 0xfb, 0xdc, 0xef, 0x6f, 0x2d, 0xfe, 0xd5, 0xc3, 0xfe, 0xf6, 0xfb, 0xb2,
		0x7f, 0x3b, 0xea, 0xbf, 0x9f, 0x6e, 0x6f, 0xc3, 0x90, 0xb0, 0x19, 0x12, 0x88, 0xb3, 0x7a, 0x71,
		0x5e, 0x3f, 0xc3, 0xfa, 0x21, 0xdf, 0xef, 0xc1, 0x0c, 0x0c, 0x54, 0xa6, 0x35, 0x39, 0x4d, 0xc3,
		0xd2, 0x5b, 0xa2, 0x6d, 0xda, 0xa2, 0xa5, 0x33, 0xd3, 0xab, 0x0b, 0xa1, 0x80, 0x82, 0x2b, 0x94,
		0x42, 0xb5, 0x25, 0x6c, 0x69, 0xca, 0xb7, 0x4f, 0x86, 0xa7, 0x30, 0x8f, 0x71, 0xb4, 0xc6, 0x57,
		0xb7, 0xe7, 0x67, 0x57, 0x8d, 0x8b, 0xca, 0x65, 0xf5, 0xa6, 0x72, 0xd1, 0xb8, 0xa9, 0xfc, 0xf1,
		0xd0, 0xf8, 0xfd, 0xb6, 0xa6, 0x2a, 0xa9, 0x31, 0xb8, 0xb3, 0xf2, 0x94, 0xda, 0x8b, 0x1f, 0x6a,
		0x2d, 0xd3, 0x68, 0x9d, 0x2f, 0xee, 0x6e, 0x6b, 0xea, 0x34, 0x65, 0xff, 0xe3, 0xba, 0xaf, 0xe7,
		0x40, 0x6e, 0xaf, 0xaa, 0x37, 0xff, 0x52, 0xb8, 0xaa, 0x1f, 0xd6, 0xc3, 0xca, 0xe1, 0x1a, 0x93,
		0xf7, 0x79, 0x39, 0xae, 0x31, 0xbb, 0xae, 0x68, 0x0b, 0x57, 0xd8, 0x4d, 0x05, 0xd5, 0xe3, 0x26,
		0xe6, 0xc2, 0x55, 0xe6, 0x62, 0x6f, 0x07, 0x57, 0x99, 0x31, 0x37, 0x1e, 0x57, 0x99, 0x79, 0xd0,
		0xb6, 0x88, 0x99, 0x5c, 0x59, 0x87, 0x21, 0x66, 0x72, 0x85, 0x17, 0x41, 0xcc, 0x24, 0x8b, 0xac,
		0x23, 0x66, 0x92, 0x48, 0x54, 0x10, 0x33, 0x09, 0x67, 0x03, 0xce, 0x46, 0x28, 0x24, 0xae, 0x68,
		0xf6, 0x5c, 0x4f, 0x81, 0xa7, 0x31, 0x9a, 0x88, 0xab, 0x72, 0xad, 0x68, 0x1b, 0x3d, 0x4b, 0xb2,
		0x5a, 0xd0, 0x42, 0x70, 0x8c, 0x0a, 0xb9, 0x2a, 0x43, 0x0f, 0xf7, 0x0b, 0xee, 0x17, 0xdc, 0x2f,
		0xb8, 0x5f, 0x7c, 0xa7, 0xe6, 0xc9, 0x71, 0x2c, 0x61, 0x28, 0x89, 0x25, 0x2d, 0xa2, 0x78, 0x16,
		0xc5, 0xb9, 0xd9, 0x94, 0xe2, 0x59, 0x0c, 0x05, 0xd7, 0x08, 0xcb, 0x53, 0x7d, 0xc8, 0x90, 0x6c,
		0xf8, 0xd6, 0x82, 0xba, 0x96, 0x4b, 0xe1, 0xca, 0xf4, 0xe4, 0x99, 0x94, 0xb4, 0xd5, 0x6d, 0x0a,
		0xd7, 0xa6, 0x5d, 0xb1, 0x84, 0xaf, 0xf7, 0x89, 0x7d, 0x29, 0xdf, 0x1d, 0x9d, 0x18, 0xb9, 0x78,
		0x5c, 0x2e, 0x1f, 0x1e, 0x95, 0xcb, 0x7b, 0x47, 0xfb, 0x47, 0x7b, 0x27, 0x07, 0x07, 0xc5, 0x43,
		0xca, 0x2b, 0xe2, 0xc2, 0xad, 0xdb, 0x12, 0xae, 0x68, 0x7d, 0xf2, 0x97, 0xdd, 0xee, 0x59, 0x16,
		0xc7, 0xd0, 0x5f, 0x3c, 0xe1, 0x92, 0x3a, 0x7f, 0x54, 0xd2, 0xc6, 0xa4, 0x81, 0x32, 0xa3, 0x79,
		0x0a, 0xa4, 0xa5, 0xe7, 0x62, 0x14, 0xe8, 0xa3, 0x51, 0x7a, 0xc9, 0x55, 0x54, 0xb2, 0x11, 0x12,
		0x8a, 0x1b, 0xb5, 0x98, 0xa5, 0x2d, 0x5e, 0xc9, 0x36, 0x35, 0xfe, 0x56, 0x24, 0xd8, 0x86, 0x91,
		0xeb, 0x91, 0x74, 0xf9, 0xa7, 0xee, 0x2b, 0x13, 0xbb, 0x32, 0x44, 0x4e, 0x31, 0x99, 0xf3, 0x4b,
		0xe9, 0xe4, 0xb2, 0x38, 0xb3, 0xd4, 0x4e, 0x2b, 0x9b, 0x73, 0xca, 0xe6, 0x84, 0x72, 0x39, 0x9b,
		0xe9, 0x2a, 0x48, 0x32, 0x27, 0x91, 0xa1, 0x3c, 0x39, 0x65, 0xf9, 0xf1, 0xb0, 0xbc, 0xf8, 0xce,
		0xce, 0xb0, 0x31, 0xe1, 0xee, 0x50, 0xec, 0x72, 0xa8, 0x52, 0x69, 0x6a, 0xd1, 0x92, 0xd6, 0x9e,
		0x25, 0xaa, 0x35, 0x4b, 0x56, 0x5b, 0x16, 0x0a, 0x15, 0x0a, 0x35, 0x15, 0x85, 0x4a, 0x55, 0xcb,
		0xb5, 0xd0, 0x12, 0x5e, 0xd3, 0x35, 0xbb, 0xa4, 0x2e, 0x52, 0x28, 0xc9, 0x93, 0x83, 0x53, 0xf1,
		0x07, 0xa4, 0xd7, 0x0c, 0xe4, 0xd7, 0x0a, 0x1c, 0xd7, 0x08, 0xac, 0xd7, 0x06, 0x5c, 0xd7, 0x04,
		0xec, 0xd7, 0x02, 0xec, 0xd7, 0x00, 0xdc, 0xb4, 0x7f, 0xb6, 0x78, 0x39, 0x72, 0x1a, 0x9f, 0xaf,
		0xee, 0x29, 0x71, 0x9d, 0x53, 0x02, 0xf2, 0x81, 0xc0, 0x4e, 0x77, 0x69, 0xf5, 0x06, 0xad, 0x1f,
		0x0b, 0xed, 0x0b, 0xed, 0x0b, 0xed, 0x9b, 0x4b, 0xed, 0x6b, 0x76, 0x75, 0x72, 0x01, 0xe0, 0x28,
		0xe8, 0xc2, 0x53, 0xb8, 0x85, 0xb1, 0xc3, 0x47, 0x50, 0x88, 0x85, 0x2d, 0xe0, 0x81, 0xb3, 0x70,
		0x00, 0x7b, 0x81, 0x00, 0x65, 0xf5, 0x53, 0x76, 0xc3, 0x2f, 0x95, 0x86, 0xff, 0xba, 0xff, 0xb8,
		0xa7, 0x97, 0xea, 0x0c, 0xf9, 0xf0, 0x75, 0x8e, 0x7d, 0x50, 0x91, 0xdf, 0xae, 0xb0, 0x20, 0xca,
		0xd2, 0xed, 0xe0, 0x48, 0xe8, 0xae, 0x67, 0x39, 0xf4, 0x81, 0x57, 0xef, 0x1c, 0x42, 0xef, 0x2c,
		0xd1, 0x3b, 0xa8, 0xd8, 0x90, 0x52, 0xc5, 0x86, 0xdd, 0xad, 0xa2, 0xaf, 0x15, 0x8e, 0x07, 0x6a,
		0xa2, 0x58, 0x9f, 0xd3, 0x1e, 0xc1, 0xff, 0x43, 0x2f, 0xcf, 0xeb, 0x65, 0x48, 0x6b, 0x66, 0xa5,
		0x35, 0xfb, 0x56, 0xeb, 0x43, 0xb6, 0x9e, 0x2b, 0x1b, 0x54, 0x8a, 0x27, 0xa4, 0x2e, 0x8d, 0x67,
		0x7a, 0x2e, 0x65, 0x34, 0x30, 0xc8, 0x14, 0x90, 0x29, 0x20, 0x53, 0x36, 0x90, 0x4c, 0x91, 0xc6,
		0xb3, 0x2e, 0xfd, 0xd1, 0xc1, 0xa5, 0x90, 0xae, 0x2b, 0x5b, 0x62, 0x35, 0x63, 0x42, 0x35, 0x73,
		0x22, 0x35, 0x63, 0x3e, 0x85, 0x8a, 0xc4, 0x69, 0x55, 0x09, 0xd3, 0xca, 0x93, 0x5e, 0xd5, 0x25,
		0xbb, 0x32, 0x26, 0x46, 0x2b, 0x49, 0x88, 0x56, 0x9e, 0x08, 0xbd, 0xce, 0xb2, 0x90, 0x93, 0x7c,
		0xa4, 0x4d, 0x25, 0xe5, 0x5e, 0xc4, 0xab, 0xce, 0xd6, 0xdf, 0x73, 0x0d, 0xee, 0x02, 0x46, 0x6e,
		0xf8, 0xac, 0x77, 0x5f, 0xea, 0x6f, 0xff, 0xf7, 0xf6, 0x3f, 0xe1, 0x66, 0x2b, 0x77, 0xb3, 0x91,
		0x2e, 0x91, 0x38, 0x5d, 0x82, 0x20, 0xe9, 0x2f, 0x41, 0x5c, 0xef, 0x07, 0x85, 0x1b, 0x37, 0x4a,
		0xda, 0x4b, 0xe4, 0xfc, 0xd2, 0x64, 0xe9, 0xd1, 0x65, 0xe5, 0xb1, 0x66, 0xe1, 0x11, 0x66, 0xdd,
		0x11, 0x66, 0xd9, 0xc5, 0xdd, 0x7e, 0xa2, 0xf3, 0x9a, 0xce, 0x39, 0x2d, 0x24, 0x8a, 0x80, 0x8f,
		0x90, 0x12, 0x17, 0x4f, 0x15, 0x44, 0x3f, 0xc8, 0xd1, 0xbe, 0x11, 0x71, 0xcf, 0x0b, 0xe2, 0x55,
		0xba, 0x86, 0xde, 0xf3, 0xdf, 0xf1, 0xc9, 0x8a, 0x47, 0xa3, 0x14, 0xfe, 0x7e, 0x11, 0xf1, 0x01,
		0x45, 0x02, 0xf9, 0x1a, 0xa1, 0xb1, 0x30, 0xf7, 0xc2, 0x0c, 0xca, 0x20, 0xb7, 0x4d, 0xe1, 0x6a,
		0xff, 0xd0, 0x7e, 0x73, 0x9a, 0x7a, 0xd7, 0xb1, 0x02, 0x02, 0xc7, 0x3b, 0xbd, 0x7f, 0x38, 0x7b,
		0xa8, 0x9e, 0xff, 0x96, 0x44, 0x3a, 0x88, 0xe8, 0xc6, 0x49, 0x7a, 0x31, 0x58, 0xb9, 0x84, 0xd6,
		0x95, 0x9a, 0x4c, 0x9c, 0x22, 0x0f, 0xa3, 0x2c, 0x6d, 0x2a, 0x49, 0x2b, 0x17, 0x84, 0xf1, 0xec,
		0xa1, 0x40, 0x55, 0xed, 0xa6, 0xd5, 0x6b, 0x09, 0x6d, 0xa0, 0x51, 0xb4, 0x40, 0xbf, 0x68, 0x5d,
		0xc3, 0x35, 0x3a, 0x42, 0x0a, 0xd7, 0xd3, 0x1c, 0xdb, 0x7a, 0xd3, 0xfc, 0xbd, 0xd3, 0xe4, 0x8b,
		0xf8, 0x66, 0x8f, 0xf4, 0x91, 0x66, 0x7a, 0x9a, 0x27, 0xa4, 0x26, 0x1d, 0x2d, 0xb1, 0x2e, 0xd2,
		0x88, 0x09, 0xee, 0x49, 0xa9, 0xa3, 0x0d, 0xd3, 0x67, 0x61, 0xb3, 0xa7, 0x84, 0x90, 0x6c, 0x3b,
		0xf2, 0x05, 0xde, 0x3e, 0xf0, 0x7a, 0x1b, 0x51, 0x2d, 0x45, 0x42, 0x54, 0xa0, 0x18, 0x0d, 0x44,
		0xdb, 0xeb, 0xd5, 0xd7, 0x7a, 0xb5, 0xdf, 0x5c, 0x71, 0x6d, 0xc3, 0xea, 0x18, 0x63, 0xe5, 0x1a,
		0x80, 0x8f, 0x15, 0xbf, 0x1d, 0x0b, 0x61, 0xc7, 0x47, 0xd4, 0xa4, 0x08, 0x3a, 0x01, 0x62, 0x4e,
		0x80, 0x90, 0x57, 0xdd, 0x97, 0x98, 0xb2, 0xce, 0x2e, 0xe3, 0x11, 0xd4, 0xf5, 0x8a, 0x60, 0x76,
		0xb5, 0x73, 0xf2, 0x6b, 0xa9, 0xff, 0xf9, 0x6f, 0xfc, 0x62, 0xdd, 0xa3, 0xae, 0x37, 0xd7, 0x3a,
		0xff, 0x7c, 0x31, 0x96, 0xbf, 0xe2, 0x4f, 0x5e, 0xaf, 0x10, 0xa8, 0x23, 0xdd, 0x32, 0x3b, 0x03,
		0x8a, 0xfa, 0xe7, 0x2f, 0x37, 0x2e, 0x6a, 0x38, 0xf9, 0xad, 0x5f, 0x2c, 0xde, 0x6a, 0x39, 0xb2,
		0x2b, 0xc7, 0x0b, 0x44, 0x89, 0x03, 0x98, 0xbc, 0xdf, 0xb7, 0x4d, 0xdd, 0xda, 0x5f, 0x41, 0x40,
		0xa3, 0xa2, 0x9a, 0xd8, 0xd7, 0xf1, 0xb1, 0x81, 0xc9, 0xec, 0xf5, 0xf9, 0xe0, 0xcd, 0x98, 0x8f,
		0xc0, 0xaa, 0x19, 0x9e, 0x93, 0xa2, 0xb1, 0xfa, 0x1a, 0x2e, 0x90, 0xab, 0x55, 0x57, 0x31, 0x5a,
		0x0a, 0x76, 0xe4, 0xb0, 0x94, 0x38, 0x61, 0x27, 0x71, 0xc4, 0x2e, 0x29, 0xa8, 0x4e, 0x1c, 0x15,
		0x92, 0x18, 0x27, 0xc7, 0x14, 0x4b, 0x1e, 0xe4, 0x12, 0x35, 0x21, 0xb9, 0x60, 0xb4, 0xcd, 0xe8,
		0x6b, 0x3e, 0xda, 0x67, 0xff, 0xcb, 0x11, 0x17, 0x2b, 0x5e, 0xb4, 0x55, 0xec, 0xa8, 0xaa, 0x24,
		0xd1, 0x53, 0x49, 0xc4, 0x99, 0xca, 0x57, 0x24, 0x0b, 0x7a, 0x22, 0x73, 0x07, 0x13, 0x8a, 0xbb,
		0x1a, 0xfa, 0x2c, 0x76, 0xec, 0x11, 0x41, 0x61, 0x93, 0x24, 0x85, 0x4c, 0x16, 0x14, 0x2e, 0xf1,
		0xcf, 0x18, 0x97, 0xd3, 0x14, 0x41, 0x3d, 0x37, 0x47, 0x07, 0x30, 0xa6, 0xaa, 0x18, 0x7e, 0x3f,
		0x9e, 0xb6, 0x28, 0x42, 0x5b, 0x40, 0x5b, 0xf0, 0x69, 0x8b, 0xb8, 0x55, 0x3c, 0x62, 0x19, 0x4f,
		0x02, 0x23, 0x9a, 0xd0, 0x98, 0x26, 0x3e, 0x26, 0x14, 0xc7, 0x85, 0xf2, 0xd8, 0x70, 0x5e, 0x05,
		0xd0, 0x14, 0xa0, 0x63, 0xbd, 0x0c, 0x88, 0x7f, 0xac, 0x12, 0x32, 0xa1, 0x31, 0xa5, 0x26, 0x71,
		0x60, 0xf0, 0x38, 0x09, 0x6f, 0xd8, 0x5f, 0x33, 0x59, 0x05, 0x32, 0x8a, 0x96, 0xa0, 0xb4, 0xad,
		0x3e, 0xc3, 0x17, 0x3c, 0xbb, 0xb8, 0xb8, 0xab, 0xdc, 0xdf, 0x37, 0x2e, 0xcf, 0xae, 0xab, 0x57,
		0x7f, 0x26, 0x95, 0x42, 0xc2, 0x96, 0x9c, 0xc4, 0x29, 0x1d, 0xd5, 0xda, 0xd7, 0x72, 0x21, 0x0b,
		0x59, 0x2b, 0xf4, 0xef, 0x75, 0xb8, 0x8e, 0xef, 0x75, 0x55, 0x6a, 0x54, 0x1e, 0x7e, 0xaf, 0xdc,
		0xdd, 0x54, 0x1e, 0xd6, 0xf1, 0xf5, 0xae, 0x6b, 0x57, 0xf7, 0x69, 0x97, 0x26, 0xab, 0xe7, 0x44,
		0x9b, 0x53, 0x45, 0xa5, 0xbc, 0x3d, 0x3b, 0x52, 0x77, 0x9a, 0x7a, 0xd3, 0xe9, 0x74, 0x5d, 0xe1,
		0x79, 0xa2, 0xa5, 0xfb, 0x3e, 0x98, 0x3f, 0xa8, 0xaa, 0x8b, 0xba, 0x18, 0x4b, 0x50, 0x30, 0x2c,
		0xc3, 0xed, 0xe8, 0xf2, 0xc5, 0x15, 0xde, 0x8b, 0x63, 0xb5, 0x08, 0xe0, 0xe0, 0xcc, 0x80, 0x80,
		0x86, 0x80, 0x86, 0x80, 0x86, 0x91, 0x65, 0x26, 0x71, 0x2e, 0x13, 0x41, 0xce, 0x12, 0x51, 0x6e,
		0x12, 0x41, 0x94, 0x09, 0x65, 0xae, 0x11, 0x75, 0x4e, 0x11, 0x5b, 0xbe, 0x08, 0x7d, 0x5e, 0x08,
		0x45, 0x5a, 0x34, 0x65, 0xce, 0x0f, 0x5b, 0x6e, 0x4f, 0x9e, 0xf6, 0x24, 0xa5, 0xe8, 0xa1, 0x3a,
		0x50, 0x96, 0x3a, 0x94, 0xd5, 0x31, 0x5e, 0xcd, 0x4e, 0xaf, 0x93, 0x1c, 0x5d, 0x8d, 0x06, 0x02,
		0xaa, 0x02, 0xaa, 0x02, 0xaa, 0x02, 0xaa, 0x02, 0xaa, 0x02, 0xaa, 0x02, 0xaa, 0x02, 0xaa, 0xda,
		0x48, 0x54, 0xf5, 0xb7, 0xe1, 0xda, 0xa6, 0xfd, 0xac, 0x3b, 0xb6, 0xf5, 0x96, 0x1c, 0x5a, 0x4d,
		0x8d, 0x16, 0x73, 0x43, 0x28, 0xba, 0x3a, 0x27, 0xe9, 0xda, 0x5c, 0x07, 0x2e, 0x04, 0x2e, 0x04,
		0x2e, 0x8c, 0x2c, 0x33, 0xc9, 0x7b, 0x02, 0x27, 0xec, 0xf9, 0x0b, 0x0b, 0xc0, 0x1c, 0x23, 0x93,
		0xad, 0x34, 0xa3, 0xc9, 0x38, 0xfc, 0xc9, 0xbf, 0x0c, 0x83, 0xe6, 0xb2, 0x10, 0x30, 0x17, 0xaf,
		0x6d, 0x57, 0xa2, 0x36, 0x5d, 0x89, 0xc3, 0xe5, 0x4a, 0x08, 0x97, 0x43, 0xb8, 0xdc, 0xaf, 0x41,
		0x1a, 0xc2, 0xe5, 0x80, 0xd2, 0x80, 0xd2, 0xf2, 0x87, 0xd2, 0x10, 0x2e, 0x17, 0x9d, 0x06, 0x42,
		0xb8, 0x9c, 0xda, 0xf7, 0x42, 0xb8, 0x5c, 0xfe, 0x5e, 0x6f, 0x23, 0xc3, 0xe5, 0x10, 0x5d, 0x06,
		0x24, 0x05, 0x24, 0x85, 0x7b, 0xd0, 0x64, 0x20, 0x0a, 0xf7, 0xa0, 0x0b, 0x51, 0x17, 0xee, 0x41,
		0xe3, 0x6e, 0x05, 0xee, 0x41, 0x37, 0xf9, 0x1e, 0x54, 0x09, 0x28, 0x09, 0x58, 0x58, 0xcb, 0x12,
		0xad, 0x51, 0x4d, 0xa7, 0xc4, 0xa8, 0x64, 0x6e, 0x44, 0xc0, 0x12, 0xc0, 0x12, 0xc0, 0x12, 0xc0,
		0x12, 0xc0, 0x12, 0xc0, 0x12, 0xc0, 0x12, 0xc0, 0x92, 0x55, 0x16, 0x19, 0x31, 0xe2, 0x00, 0x21,
		0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0xa9, 0x80, 0x90, 0xf0,
		0x66, 0x45, 0x17, 0xaf, 0x4d, 0x21, 0x5a, 0x82, 0xe0, 0xce, 0x66, 0xc1, 0x98, 0x80, 0x26, 0x80,
		0x26, 0x80, 0x26, 0x91, 0x65, 0x26, 0xfd, 0x30, 0x65, 0xe4, 0x75, 0x20, 0xaf, 0x03, 0x0a, 0x13,
		0x0a, 0x13, 0x0a, 0x93, 0x4d, 0x61, 0x22, 0x0d, 0x42, 0xc6, 0x69, 0x8a, 0x98, 0x72, 0xaf, 0x95,
		0xd5, 0xc3, 0xba, 0xd1, 0x5f, 0x65, 0xcd, 0xfb, 0xab, 0x2c, 0x93, 0x6a, 0xba, 0x2e, 0x2b, 0x77,
		0xfe, 0xa0, 0x57, 0xc1, 0x98, 0x99, 0xe8, 0xb3, 0x12, 0xa3, 0xdb, 0x5f, 0xb4, 0xee, 0x7e, 0x31,
		0x7a, 0x38, 0x84, 0x05, 0xc8, 0xe5, 0x5b, 0x57, 0x0c, 0x9b, 0xcb, 0xd9, 0xe6, 0xb0, 0xb7, 0xdc,
		0xd5, 0xfe, 0xd7, 0xbb, 0xcb, 0xdf, 0x34, 0xc7, 0xd5, 0x7e, 0xfe, 0x6b, 0xa5, 0xab, 0xfd, 0xdf,
		0x14, 0x37, 0x81, 0x88, 0xd1, 0xbb, 0x8f, 0xb6, 0x05, 0x04, 0xdd, 0xc2, 0xb1, 0xe4, 0xa5, 0x25,
		0xe9, 0xcc, 0x37, 0x0e, 0x68, 0x36, 0xde, 0x84, 0xab, 0xed, 0x6b, 0x5f, 0xef, 0x2e, 0xfd, 0x77,
		0xb9, 0x2a, 0xed, 0x5e, 0xed, 0x6b, 0xe1, 0x91, 0xd6, 0x9a, 0x86, 0xad, 0xbd, 0x18, 0xdf, 0xc5,
		0xb0, 0x27, 0xdc, 0xe0, 0x28, 0x7f, 0xb3, 0x8d, 0x6e, 0xd7, 0x32, 0x45, 0x6b, 0x47, 0x7b, 0x78,
		0x31, 0x3d, 0xcd, 0xf4, 0x34, 0xdb, 0x91, 0x9a, 0xd7, 0xeb, 0x76, 0x1d, 0x57, 0x8a, 0x96, 0xd6,
		0x76, 0x5c, 0x4d, 0xbe, 0x08, 0xad, 0x35, 0x70, 0x16, 0xc2, 0xf1, 0x76, 0xa2, 0x6e, 0x67, 0x02,
		0x94, 0x4a, 0xd7, 0x8f, 0x8f, 0x04, 0x92, 0x4e, 0x09, 0x96, 0xe2, 0x45, 0x4f, 0x17, 0x3d, 0x7c,
		0x48, 0xc6, 0x02, 0x66, 0xbb, 0xb3, 0xd5, 0x54, 0x1b, 0x29, 0x86, 0xe6, 0x56, 0x9e, 0x78, 0xf6,
		0x85, 0x26, 0x88, 0xa6, 0x32, 0xed, 0xe7, 0xd5, 0xfb, 0x5b, 0xcd, 0x7e, 0x31, 0x1f, 0x2d, 0xae,
		0x3c, 0x77, 0x2d, 0xfb, 0x5b, 0x79, 0x6e, 0x66, 0x9a, 0x5b, 0x79, 0xee, 0xf3, 0x93, 0x17, 0xbd,
		0xad, 0xd5, 0xe0, 0x6b, 0xeb, 0xd1, 0xd0, 0x6a, 0x25, 0x21, 0xa3, 0x04, 0x32, 0xd9, 0xe8, 0x66,
		0xb5, 0x8a, 0x10, 0xf2, 0x38, 0x86, 0x91, 0x5b, 0x59, 0xf9, 0xd2, 0x96, 0x20, 0xe1, 0xde, 0xff,
		0xf6, 0x66, 0xb4, 0xa7, 0x89, 0x24, 0xca, 0x54, 0xdc, 0x5f, 0xf6, 0x93, 0xed, 0xa3, 0x88, 0xba,
		0x1a, 0xb6, 0x29, 0x76, 0xa6, 0x7d, 0xcc, 0x6e, 0x4d, 0x73, 0xc2, 0x12, 0xab, 0x6b, 0x53, 0xc2,
		0xe3, 0x91, 0x59, 0xf6, 0x3c, 0xd6, 0xb1, 0x01, 0x75, 0x1e, 0xe7, 0x58, 0xa5, 0xc3, 0x9b, 0xc7,
		0x3d, 0x6e, 0xe1, 0x00, 0x2d, 0x43, 0x1a, 0x5d, 0xcb, 0xb0, 0x45, 0xe0, 0xc6, 0xd3, 0xe5, 0xb5,
		0xcf, 0x8c, 0x9b, 0x70, 0x7f, 0x92, 0x5d, 0x6a, 0x91, 0x1d, 0x4f, 0xca, 0x63, 0x4a, 0x7e, 0x5c,
		0xa9, 0x8f, 0x2d, 0xdb, 0xf1, 0x65, 0x3b, 0xc6, 0x1c, 0xc7, 0x39, 0xd9, 0xb1, 0x4e, 0x78, 0xbc,
		0xc3, 0x17, 0x7a, 0xa0, 0x38, 0x9b, 0x33, 0xd8, 0x51, 0x27, 0x3d, 0xa2, 0x53, 0xd6, 0xb3, 0x4c,
		0x30, 0x56, 0xc5, 0x4e, 0x10, 0x18, 0x3d, 0xbf, 0x80, 0xce, 0xbd, 0x74, 0x57, 0xe1, 0x15, 0x22,
		0x8d, 0xba, 0x17, 0x96, 0x12, 0xf8, 0x48, 0x37, 0x68, 0x91, 0xae, 0xac, 0x84, 0x46, 0x13, 0x86,
		0x38, 0x5c, 0xc1, 0xaa, 0x2d, 0x69, 0x97, 0x2f, 0x78, 0xc9, 0xd8, 0x60, 0x6b, 0xe1, 0x90, 0xc1,
		0x66, 0x9c, 0x6a, 0x7b, 0x34, 0x4b, 0x97, 0x73, 0xad, 0x41, 0x54, 0x29, 0x30, 0x1c, 0x8f, 0xbc,
		0x62, 0x60, 0xf2, 0x65, 0x4a, 0xb0, 0x44, 0x05, 0xb3, 0xfb, 0xfd, 0x50, 0x1f, 0x58, 0xb4, 0x04,
		0x19, 0xa1, 0x73, 0x9a, 0x75, 0x7a, 0x58, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x9f, 0x0c, 0x01, 0x9f,
		0x89, 0xe3, 0x49, 0x09, 0x79, 0x8e, 0x09, 0xc6, 0xaa, 0x19, 0x52, 0x0a, 0xd7, 0x26, 0x29, 0xdf,
		0x15, 0x0c, 0xb8, 0xb5, 0x75, 0xfa, 0xfe, 0xb8, 0xa7, 0x9f, 0x18, 0x7a, 0xfb, 0x4c, 0xbf, 0xac,
		0xff, 0xd8, 0xfb, 0x58, 0xee, 0x6f, 0x9f, 0x6e, 0x6f, 0xcd, 0x7e, 0x76, 0xba, 0xfd, 0x63, 0xef,
		0xe3, 0x41, 0x7f, 0x6b, 0x6b, 0xc1, 0xbf, 0xfc, 0x73, 0xd1, 0x18, 0xdb, 0xef, 0x5b, 0x5b, 0x5b,
		0xa5, 0x83, 0xc7, 0x3d, 0xfd, 0xa0, 0xfe, 0x5e, 0x7a, 0xdc, 0xd3, 0xcb, 0x75, 0xff, 0x77, 0xea,
		0xef, 0x8f, 0x7b, 0xc5, 0xfa, 0x3f, 0x83, 0x1f, 0x07, 0xff, 0xbf, 0xfd, 0xed, 0xdb, 0xce, 0xf6,
		0x8f, 0xfd, 0xfe, 0x6a, 0xbf, 0xbc, 0xbd, 0xbd, 0xb5, 0x3b, 0x78, 0x86, 0xfa, 0xf6, 0xfb, 0xe0,
		0xbf, 0x3f, 0x4a, 0xfd, 0xed, 0xf7, 0xad, 0xe2, 0xe3, 0x9e, 0x5e, 0xac, 0x8f, 0xfe, 0xa1, 0xe8,
		0x0f, 0x72, 0xec, 0xff, 0x3a, 0xd5, 0x81, 0xdc, 0xda, 0x7a, 0xfc, 0xcf, 0x69, 0xfd, 0x7f, 0x4e,
		0xb7, 0x7f, 0x1c, 0xf6, 0x47, 0x3f, 0x07, 0xff, 0xbf, 0xfd, 0xbe, 0xb5, 0xf3, 0xdf, 0xdf, 0xbe,
		0xed, 0xec, 0xfc, 0xf7, 0xf6, 0xe0, 0xa5, 0x87, 0xbf, 0xf7, 0xdf, 0x83, 0x7f, 0xfd, 0xe7, 0xe9,
		0xe9, 0xdc, 0x47, 0xdb, 0x5b, 0xbb, 0x3b, 0xff, 0xb3, 0x9d, 0xfc, 0xe0, 0xd5, 0x53, 0x3d, 0x78,
		0xb1, 0x22, 0x96, 0x96, 0xc3, 0xb2, 0xb8, 0x91, 0x4c, 0xcb, 0x47, 0x24, 0x8c, 0x70, 0x5a, 0x3a,
		0x49, 0xfc, 0xc8, 0xa7, 0x5f, 0x0f, 0x19, 0x39, 0x22, 0x8a, 0x6b, 0xa7, 0x63, 0x44, 0xf2, 0xfc,
		0x72, 0xcc, 0x48, 0x91, 0x3e, 0xbf, 0xfa, 0x43, 0xe8, 0x71, 0x84, 0x91, 0x42, 0x3b, 0xbb, 0xd3,
		0xde, 0xef, 0x30, 0x9a, 0xc5, 0x73, 0xe5, 0xa9, 0xef, 0x95, 0xfc, 0x46, 0xe9, 0xd0, 0x11, 0xc3,
		0x92, 0x45, 0xf0, 0x24, 0x46, 0x04, 0x51, 0x6a, 0x20, 0x65, 0x21, 0x58, 0xf9, 0xf5, 0x86, 0x90,
		0xcd, 0xdd, 0x27, 0xdc, 0xda, 0x24, 0x91, 0x49, 0x2b, 0x0b, 0xeb, 0x99, 0x65, 0x39, 0x7f, 0x6b,
		0xd5, 0xda, 0xf7, 0x43, 0x6d, 0xe4, 0x56, 0x68, 0xd2, 0xd1, 0x9e, 0x84, 0xe6, 0x75, 0x45, 0xd3,
		0x6c, 0x9b, 0xa2, 0xa5, 0x39, 0xb6, 0xf5, 0xa6, 0xf9, 0x52, 0x30, 0x88, 0x8c, 0x19, 0x2d, 0xe5,
		0x37, 0xdb, 0x15, 0x86, 0x65, 0x7a, 0x81, 0x13, 0xa8, 0x39, 0xed, 0xe0, 0x5f, 0xef, 0xef, 0x3e,
		0x7f, 0xd2, 0x4c, 0x2f, 0x18, 0x71, 0x87, 0x5a, 0x6a, 0x98, 0x84, 0x5d, 0x23, 0x0d, 0x74, 0x4a,
		0x5d, 0xf6, 0xe7, 0xe4, 0x9f, 0x77, 0x8f, 0x49, 0x9f, 0xbd, 0xff, 0x21, 0x5b, 0x23, 0xf5, 0x73,
		0x8e, 0xb4, 0xc0, 0xd2, 0xfc, 0xf4, 0x75, 0x2c, 0xa7, 0x69, 0x58, 0xba, 0xd9, 0xa2, 0x23, 0x68,
		0xc2, 0x11, 0xc1, 0xcd, 0x80, 0x9b, 0x01, 0x37, 0x93, 0x21, 0x6e, 0xc6, 0x1b, 0xdc, 0xd1, 0x50,
		0xd2, 0x32, 0x50, 0xed, 0xd9, 0x55, 0xed, 0x9d, 0xae, 0xe5, 0xe9, 0x96, 0xf1, 0x24, 0x2c, 0xfd,
		0xc9, 0x72, 0x9a, 0x7f, 0x11, 0x92, 0xf0, 0xf3, 0x43, 0x43, 0xd9, 0x43, 0xd9, 0x43, 0xd9, 0x67,
		0x48, 0xd9, 0xfb, 0x9a, 0x2b, 0x59, 0x5b, 0x8f, 0x39, 0x6d, 0x7f, 0x44, 0x43, 0xc2, 0xbf, 0x0c,
		0x19, 0x89, 0xc9, 0xff, 0xf9, 0x0a, 0x65, 0xf7, 0xd9, 0x72, 0x9e, 0x0c, 0x6b, 0xd7, 0x15, 0x9e,
		0x70, 0xbf, 0xfb, 0xca, 0x77, 0x42, 0xc1, 0x2c, 0xfc, 0x74, 0x94, 0x30, 0x15, 0x42, 0x4e, 0x70,
		0xba, 0x3f, 0x1b, 0x11, 0x9c, 0x2e, 0xd1, 0x4e, 0x83, 0xd3, 0x9d, 0xa6, 0x10, 0xaf, 0x6b, 0x57,
		0xf7, 0xe0, 0x74, 0x33, 0xc4, 0xe9, 0x0e, 0x36, 0x64, 0xd3, 0x39, 0x5d, 0xf9, 0x22, 0x34, 0x7f,
		0x25, 0xb4, 0xc0, 0x64, 0x68, 0x81, 0xc9, 0x58, 0x4c, 0xfb, 0xb5, 0x1d, 0x37, 0xe0, 0xf4, 0x3c,
		0x4d, 0xbe, 0x18, 0x52, 0x33, 0x5c, 0xf1, 0xcd, 0xee, 0x79, 0xa6, 0xfd, 0x3c, 0x1e, 0x23, 0x5c,
		0x6b, 0x70, 0xba, 0xa9, 0xc8, 0xbe, 0xb6, 0x98, 0xd3, 0xe5, 0xda, 0x63, 0x70, 0xba, 0x3f, 0xfd,
		0x03, 0x4e, 0x97, 0xdb, 0xf1, 0xcf, 0x65, 0xd3, 0x63, 0xda, 0xa4, 0xe8, 0x99, 0xdc, 0xe3, 0xdd,
		0x20, 0x79, 0x34, 0xf8, 0xff, 0x58, 0x5d, 0x7d, 0xe3, 0x2f, 0x6d, 0x9c, 0x92, 0x6b, 0x89, 0x89,
		0x75, 0x2a, 0x42, 0x7d, 0xdd, 0x4a, 0x96, 0x21, 0xe9, 0x4a, 0x39, 0x47, 0x92, 0xd7, 0x62, 0x65,
		0xc9, 0x39, 0x10, 0x0a, 0xee, 0x63, 0x92, 0xf3, 0x20, 0x21, 0x2c, 0xd4, 0x28, 0xb0, 0x78, 0xed,
		0xca, 0xe7, 0xf6, 0x20, 0x4e, 0xdb, 0xf2, 0xb9, 0xd5, 0x4f, 0xaa, 0xba, 0x4a, 0x50, 0x5d, 0x50,
		0x5d, 0x0a, 0x54, 0x17, 0xf2, 0x45, 0x55, 0x22, 0x0b, 0xca, 0x63, 0x4a, 0x7e, 0x5c, 0xb9, 0xdc,
		0x7b, 0xdc, 0xd6, 0x68, 0xc8, 0x17, 0x8d, 0x66, 0x3d, 0x91, 0x2f, 0x9a, 0x60, 0x50, 0xe4, 0x8b,
		0x26, 0x18, 0x72, 0xbd, 0xf2, 0x45, 0x91, 0x46, 0x09, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0xa0, 0x00,
		0x0f, 0x20, 0x8d, 0x12, 0x69, 0x94, 0x0b, 0x16, 0x0a, 0x69, 0x94, 0xd3, 0x2b, 0x82, 0x90, 0x1b,
		0x84, 0xdc, 0xc4, 0x1f, 0x13, 0x69, 0x94, 0x7c, 0xb0, 0x64, 0x11, 0x3c, 0x41, 0x1a, 0xa5, 0x72,
		0x3f, 0x51, 0x43, 0x1a, 0xa5, 0x42, 0x61, 0xd7, 0x90, 0x46, 0x89, 0x34, 0x4a, 0xae, 0x51, 0xea,
		0xc8, 0x2e, 0x44, 0x76, 0x21, 0x28, 0x0b, 0x50, 0x16, 0x19, 0xa5, 0x2c, 0x32, 0x97, 0x5d, 0x88,
		0xa4, 0x3b, 0xe8, 0x40, 0xe8, 0x40, 0xe8, 0x40, 0x85, 0x3a, 0x10, 0x49, 0x77, 0x60, 0x00, 0xc1,
		0x00, 0x82, 0x01, 0x54, 0xc1, 0x00, 0x22, 0xe9, 0x2e, 0x63, 0x0c, 0x20, 0x92, 0xee, 0x90, 0x74,
		0xa7, 0x21, 0xe9, 0x0e, 0x49, 0x77, 0x60, 0x00, 0xc7, 0xc2, 0xe3, 0x99, 0xff, 0x97, 0x30, 0x8c,
		0x39, 0x18, 0x0d, 0x5e, 0x2f, 0xbc, 0x5e, 0x78, 0xbd, 0x19, 0xf2, 0x7a, 0x7b, 0xa6, 0x2d, 0xf7,
		0x4b, 0x84, 0x4e, 0x2f, 0x85, 0xcf, 0x7b, 0x67, 0xd8, 0xcf, 0x22, 0x8b, 0xd8, 0xfe, 0xda, 0x64,
		0xc0, 0x60, 0x5f, 0x0d, 0xab, 0x27, 0x68, 0x5c, 0xd6, 0xa9, 0x71, 0x2f, 0x5d, 0xa3, 0xe9, 0x83,
		0x97, 0x0b, 0xf3, 0xd9, 0xa4, 0xf2, 0x89, 0xa7, 0x65, 0x48, 0x3c, 0x1b, 0xd2, 0xfc, 0x2e, 0x48,
		0x5c, 0x4c, 0x2e, 0xf8, 0x7c, 0x6d, 0xbc, 0xf2, 0x6d, 0x59, 0xb9, 0x74, 0x52, 0x3e, 0x39, 0x3c,
		0x2a, 0x9d, 0x1c, 0x60, 0xef, 0x00, 0xb8, 0x12, 0x03, 0xae, 0x9e, 0x27, 0x08, 0xaf, 0x5b, 0x83,
		0xd1, 0x00, 0xb8, 0x00, 0xb8, 0x00, 0xb8, 0x00, 0xb8, 0x00, 0xb8, 0x00, 0xb8, 0x00, 0xb8, 0x00,
		0xb8, 0xd6, 0x10, 0x70, 0xa1, 0xda, 0xd2, 0xcf, 0xaa, 0x2d, 0x0d, 0x6a, 0x78, 0xa8, 0xaa, 0x55,
		0xc2, 0xda, 0x40, 0xff, 0x5f, 0xe2, 0x2d, 0x41, 0x18, 0x61, 0xb2, 0xeb, 0xe6, 0xe4, 0xd7, 0xcb,
		0x2c, 0xd7, 0xc9, 0x04, 0xd7, 0xc7, 0x04, 0xd7, 0xc5, 0x51, 0x37, 0x32, 0xe1, 0x21, 0x52, 0x76,
		0x78, 0x0a, 0xb1, 0x4a, 0xef, 0xb8, 0xbd, 0xa6, 0xb4, 0x87, 0x68, 0xef, 0x66, 0x30, 0x59, 0x75,
		0x38, 0x57, 0xe3, 0x7e, 0x30, 0xd7, 0xdd, 0x60, 0xaa, 0xc6, 0xbd, 0x3f, 0xc9, 0x07, 0x9e, 0x13,
		0xb6, 0xda, 0x6f, 0xae, 0xb8, 0x75, 0x71, 0xb7, 0x4c, 0xc5, 0x56, 0xad, 0xb6, 0x80, 0xbf, 0x5e,
		0x8e, 0x15, 0x96, 0xa2, 0xe0, 0xb9, 0xd6, 0xd3, 0xea, 0x61, 0x81, 0x13, 0x25, 0x22, 0xfc, 0xaf,
		0xad, 0xb8, 0xd4, 0xd1, 0x0a, 0x27, 0x45, 0xf6, 0xad, 0xe3, 0xf8, 0xd0, 0xb1, 0x7d, 0xe5, 0xb8,
		0x3e, 0x71, 0x62, 0xdf, 0x37, 0xb1, 0x8f, 0x9b, 0xc4, 0x97, 0xa5, 0x3d, 0x7a, 0x51, 0x0b, 0x13,
		0x05, 0xd2, 0x16, 0x7d, 0xc5, 0x27, 0x65, 0x35, 0xea, 0x62, 0xc7, 0xab, 0xf5, 0x15, 0x9b, 0x16,
		0x4a, 0x42, 0x03, 0x25, 0xa6, 0x7d, 0x92, 0xd2, 0x3c, 0x64, 0xb4, 0x0e, 0x19, 0x8d, 0x43, 0x41,
		0xdb, 0xf0, 0x22, 0xbf, 0xb8, 0xb5, 0xb9, 0x0a, 0xcd, 0x91, 0x84, 0x25, 0xac, 0x84, 0x37, 0x1c,
		0x27, 0xe5, 0x52, 0x78, 0xa8, 0xe2, 0xc9, 0xc8, 0x8e, 0xa2, 0x14, 0x5e, 0xe2, 0xe3, 0x16, 0x0e,
		0x80, 0x52, 0x78, 0x29, 0x1d, 0x53, 0xf2, 0xe3, 0x4a, 0x7d, 0x6c, 0xd9, 0x8e, 0x2f, 0xdb, 0x31,
		0xe6, 0x38, 0xce, 0x34, 0xac, 0x1b, 0x4a, 0xe1, 0x45, 0x1e, 0x0b, 0xa5, 0xf0, 0x50, 0x0a, 0x2f,
		0xfa, 0x90, 0xeb, 0x55, 0x0a, 0x0f, 0x0d, 0x1c, 0x18, 0x97, 0x68, 0xaa, 0xfa, 0x17, 0x47, 0xc5,
		0x3f, 0x80, 0x1e, 0x80, 0x1e, 0x80, 0x9e, 0x2c, 0x81, 0x1e, 0xd4, 0xfb, 0x43, 0xbd, 0xbf, 0x05,
		0x0b, 0x85, 0x7a, 0x7f, 0xd3, 0x2b, 0x82, 0x1c, 0x50, 0x54, 0x81, 0x53, 0x69, 0xba, 0x16, 0x9a,
		0x30, 0x54, 0x81, 0x5b, 0x2e, 0xac, 0xa8, 0x02, 0x37, 0x2f, 0xf0, 0xa8, 0x02, 0x87, 0x2a, 0x70,
		0x64, 0xa3, 0xa0, 0xf1, 0x62, 0x86, 0xfd, 0x76, 0x94, 0xbb, 0x83, 0xc7, 0x0e, 0x8f, 0x7d, 0x33,
		0x3c, 0xf6, 0xcc, 0x95, 0xbb, 0x83, 0x6a, 0xe7, 0x54, 0xed, 0xb3, 0xc5, 0xf7, 0xf8, 0xca, 0xfa,
		0x41, 0xd5, 0x43, 0xd5, 0x43, 0xd5, 0x67, 0x49, 0xd5, 0xa3, 0xaa, 0x1f, 0x78, 0xbe, 0x74, 0x79,
		0x3e, 0xd4, 0x7a, 0xcb, 0x18, 0xcf, 0x87, 0x5a, 0x6f, 0x71, 0xea, 0x80, 0x5d, 0xa1, 0xd6, 0x5b,
		0xee, 0x78, 0x3e, 0xae, 0x3d, 0x06, 0xcf, 0x07, 0x9e, 0x2f, 0x55, 0x67, 0x10, 0x29, 0xbf, 0x0b,
		0x52, 0xe1, 0xac, 0x20, 0x6b, 0xd1, 0x7a, 0x1a, 0xc2, 0x41, 0x65, 0x39, 0xbf, 0x31, 0x52, 0x68,
		0x12, 0x93, 0xad, 0x54, 0x24, 0x6b, 0x42, 0x8f, 0x1b, 0xa9, 0x19, 0x4a, 0x3c, 0x69, 0xa4, 0x66,
		0xd0, 0x79, 0xc8, 0x84, 0x9e, 0x31, 0x85, 0x47, 0x3c, 0xe9, 0x09, 0x93, 0xb8, 0xb1, 0x6a, 0x14,
		0xd8, 0xa0, 0xaa, 0x42, 0x62, 0xed, 0x35, 0x18, 0x26, 0xe5, 0xac, 0xb2, 0x12, 0x54, 0x17, 0x54,
		0x97, 0x02, 0xd5, 0x85, 0xac, 0x32, 0x95, 0xc8, 0x82, 0xf2, 0x98, 0x92, 0x1f, 0x57, 0x2e, 0xf7,
		0x1e, 0x1c, 0xbe, 0x86, 0xac, 0xb2, 0x68, 0xd6, 0x13, 0x59, 0x65, 0x09, 0x06, 0x45, 0x56, 0x59,
		0x82, 0x21, 0xd7, 0x2b, 0xab, 0x0c, 0xc9, 0x56, 0xc0, 0x02, 0xc0, 0x02, 0xc0, 0x02, 0xcc, 0x58,
		0x00, 0xc9, 0x56, 0x48, 0xb6, 0x5a, 0xb0, 0x50, 0x48, 0xb6, 0x9a, 0x5e, 0x11, 0x04, 0x61, 0x20,
		0xd9, 0x4a, 0xa5, 0xe9, 0x5a, 0x68, 0xc2, 0x90, 0x6c, 0xb5, 0x5c, 0x58, 0x91, 0x6c, 0x35, 0x2f,
		0xf0, 0x48, 0xb6, 0x42, 0xb2, 0x15, 0xd9, 0x28, 0x75, 0xe4, 0x20, 0x21, 0x07, 0x09, 0x8e, 0x2c,
		0x1c, 0xd9, 0x8c, 0x3a, 0xb2, 0x99, 0xcb, 0x41, 0x42, 0x6a, 0x0e, 0x34, 0x20, 0x34, 0x20, 0x34,
		0xa0, 0x32, 0x0d, 0x88, 0xd4, 0x1c, 0xb0, 0x42, 0xe9, 0xb2, 0x42, 0x48, 0xcd, 0xc9, 0x18, 0x2b,
		0x84, 0xd4, 0x1c, 0xa4, 0xe6, 0x68, 0x48, 0xcd, 0x41, 0x6a, 0xce, 0xda, 0xb1, 0x42, 0xc8, 0x58,
		0xf9, 0x59, 0xc6, 0x0a, 0x9a, 0xd4, 0x8d, 0xbe, 0x8e, 0x26, 0x75, 0xbf, 0x18, 0x02, 0x4d, 0xea,
		0x66, 0x0e, 0x8f, 0x82, 0x26, 0x75, 0x16, 0x9a, 0xd4, 0x25, 0xdd, 0x2a, 0x95, 0x4d, 0xea, 0xa4,
		0xd0, 0xbb, 0x8e, 0x65, 0x36, 0x4d, 0x11, 0xa3, 0x55, 0xdd, 0xe4, 0x97, 0x99, 0x1b, 0xd6, 0x95,
		0x54, 0x35, 0xac, 0x8b, 0x94, 0x63, 0xb3, 0x4e, 0x2d, 0xeb, 0xa2, 0x18, 0xd5, 0x94, 0x9b, 0xd6,
		0x8d, 0xe4, 0xee, 0x2d, 0x7e, 0xe7, 0xba, 0xf1, 0x10, 0x9b, 0xd2, 0xbe, 0x2e, 0x56, 0xf2, 0xd8,
		0x26, 0x34, 0xb0, 0x8b, 0x83, 0x26, 0xb3, 0xda, 0xc2, 0xce, 0xb0, 0x5b, 0x66, 0xcb, 0xf0, 0x85,
		0xdb, 0x90, 0x2f, 0x1e, 0x41, 0x2f, 0xbb, 0x99, 0x01, 0xd1, 0xd4, 0x2e, 0xc1, 0x61, 0xa2, 0x66,
		0x43, 0xf2, 0x98, 0x80, 0x18, 0xd7, 0x75, 0xd3, 0xf2, 0x97, 0x82, 0x38, 0x7d, 0x76, 0xe8, 0x6e,
		0x2b, 0x67, 0xc6, 0xa5, 0xb9, 0xab, 0x2c, 0xae, 0xfd, 0x5d, 0xa5, 0x14, 0xb8, 0xad, 0xa4, 0xe6,
		0x27, 0x13, 0x1f, 0x69, 0x1a, 0xb6, 0x2e, 0xe9, 0x5d, 0x57, 0xd2, 0xa3, 0x1e, 0x0e, 0xd4, 0x32,
		0xbd, 0xa6, 0x6b, 0x76, 0x4c, 0xdb, 0x90, 0x8e, 0x4b, 0x27, 0x24, 0x61, 0xf2, 0xf1, 0xd4, 0xf0,
		0x44, 0xfb, 0x49, 0x13, 0xac, 0x40, 0xae, 0x08, 0x38, 0x14, 0x02, 0xa3, 0x62, 0xe0, 0x52, 0x10,
		0xec, 0x8a, 0x82, 0x5d, 0x61, 0xf0, 0x2a, 0x0e, 0x1a, 0x05, 0x42, 0xa4, 0x48, 0xc2, 0x57, 0x25,
		0x0b, 0x80, 0x98, 0x93, 0x58, 0xba, 0x40, 0x88, 0x39, 0x04, 0x70, 0x44, 0x38, 0xe6, 0x44, 0x60,
		0x44, 0xc0, 0xd7, 0xef, 0x4e, 0xab, 0xae, 0xac, 0xa4, 0xb1, 0x12, 0x00, 0x02, 0xc7, 0x35, 0x9f,
		0x07, 0x6f, 0xa5, 0x1b, 0xad, 0x16, 0x83, 0xd2, 0x9f, 0x9d, 0x00, 0x6a, 0x1f, 0x6a, 0x1f, 0x6a,
		0x1f, 0x6a, 0x3f, 0x17, 0x6a, 0x7f, 0x56, 0x79, 0xad, 0xa9, 0xe2, 0xf7, 0x6c, 0x5e, 0xbd, 0xef,
		0xd9, 0x50, 0xfb, 0x50, 0xfb, 0x50, 0xfb, 0x50, 0xfb, 0xf9, 0x53, 0xfb, 0x9e, 0xbd, 0x4e, 0x5a,
		0xbf, 0xeb, 0x3a, 0xd2, 0x69, 0x3a, 0x96, 0x3e, 0x78, 0x45, 0x7a, 0xb5, 0x3f, 0x3b, 0x01, 0xf4,
		0x3e, 0xf4, 0x3e, 0xf4, 0x3e, 0xf4, 0x7e, 0x2e, 0xf4, 0xfe, 0xac, 0xf2, 0x5a, 0x23, 0xc5, 0x3f,
		0x8a, 0xd4, 0xb2, 0x4c, 0x4f, 0x7a, 0xf4, 0x6a, 0x7f, 0x7a, 0x78, 0x5a, 0xa5, 0x5f, 0x84, 0xd2,
		0x87, 0xd2, 0x87, 0xd2, 0xa7, 0x91, 0x59, 0xaa, 0xbb, 0xc2, 0x85, 0x8a, 0x85, 0x2f, 0x5b, 0x68,
		0x6a, 0x16, 0xe2, 0xdd, 0xa7, 0x55, 0x33, 0x6c, 0xea, 0x86, 0x53, 0xed, 0x28, 0x50, 0x3f, 0xdc,
		0x6a, 0x48, 0x99, 0x3a, 0x52, 0xa6, 0x96, 0xd4, 0xa8, 0x27, 0x5a, 0x35, 0x45, 0xac, 0xae, 0xd8,
		0xd4, 0x56, 0x38, 0x30, 0x41, 0x05, 0x9a, 0x5f, 0x1e, 0xa6, 0xc4, 0x35, 0x69, 0x14, 0xb9, 0xc5,
		0xca, 0x54, 0x98, 0x0a, 0x55, 0xa6, 0x50, 0xa5, 0xa9, 0x52, 0x6d, 0xca, 0x55, 0x9c, 0x72, 0x55,
		0xa7, 0x56, 0xe5, 0xf1, 0xa8, 0x3e, 0x26, 0x15, 0xc8, 0xe7, 0xb6, 0x2b, 0x74, 0xe3, 0x55, 0xb8,
		0xf5, 0xbf, 0x76, 0xf3, 0x93, 0xd6, 0xa6, 0x50, 0x27, 0x47, 0x0c, 0x32, 0x54, 0xb0, 0xc5, 0xab,
		0xd4, 0x5f, 0x9c, 0xae, 0xc7, 0x6f, 0xf8, 0xc6, 0x53, 0xf1, 0xda, 0xbf, 0x22, 0xec, 0x1f, 0xec,
		0x1f, 0xec, 0xdf, 0x66, 0xd8, 0x3f, 0x2e, 0x57, 0x60, 0x4e, 0x41, 0xf2, 0xcb, 0xf1, 0xac, 0x9e,
		0xe4, 0x16, 0x63, 0x5e, 0x75, 0xa9, 0x4c, 0x6d, 0xaa, 0x54, 0x9f, 0x29, 0xa8, 0x51, 0xd5, 0xea,
		0x34, 0x35, 0xb5, 0x9a, 0x9a, 0x7a, 0x4d, 0x47, 0xcd, 0xf2, 0xaa, 0x5b, 0x66, 0xb5, 0xab, 0x4c,
		0xfd, 0x8e, 0x99, 0x19, 0xbb, 0x25, 0x5e, 0xd5, 0x09, 0x7f, 0x48, 0xd6, 0x04, 0xd3, 0x2a, 0x92,
		0x3f, 0x5e, 0xfe, 0x26, 0x35, 0xc5, 0x9c, 0x86, 0x82, 0x4e, 0x51, 0x51, 0xa7, 0xa5, 0xb0, 0x53,
		0x57, 0xdc, 0xa9, 0x2b, 0xf0, 0x74, 0x15, 0xb9, 0x1a, 0x85, 0xae, 0x48, 0xb1, 0xab, 0xe3, 0x97,
		0x52, 0xe4, 0x9b, 0xd2, 0xe0, 0x9f, 0x56, 0xe0, 0xa3, 0x02, 0x93, 0xf3, 0x61, 0x3d, 0x44, 0x55,
		0x81, 0x98, 0x16, 0x4c, 0x5b, 0x0a, 0xb7, 0x6d, 0x34, 0x85, 0xee, 0x8b, 0x4b, 0x0a, 0x10, 0x61,
		0x72, 0x7a, 0xb5, 0x50, 0xa1, 0x08, 0xa8, 0xc0, 0x02, 0x15, 0xcc, 0x36, 0x80, 0xc2, 0x06, 0x02,
		0x05, 0xb3, 0x0d, 0x98, 0x90, 0x6d, 0x3f, 0x30, 0x9c, 0x70, 0x50, 0x38, 0x53, 0xf9, 0x91, 0x19,
		0x37, 0xb1, 0x30, 0x94, 0x3a, 0x13, 0x29, 0x28, 0xfd, 0x79, 0xe5, 0x5f, 0x52, 0x3c, 0x71, 0x0a,
		0x46, 0x20, 0x75, 0x63, 0x90, 0xb6, 0x51, 0xc8, 0x8c, 0x71, 0xc8, 0x8c, 0x91, 0xc8, 0x82, 0xb1,
		0x50, 0x6b, 0x34, 0x14, 0x1b, 0x8f, 0xd4, 0x8c, 0xc8, 0xbc, 0x07, 0x91, 0xde, 0x71, 0x9b, 0xf3,
		0x26, 0xd2, 0x3a, 0x6e, 0x6a, 0x49, 0xc8, 0xd4, 0x3d, 0x8d, 0x2c, 0x19, 0x9d, 0xcc, 0x18, 0x9f,
		0xac, 0x18, 0xa1, 0xcc, 0x19, 0xa3, 0xcc, 0x19, 0xa5, 0x2c, 0x19, 0xa7, 0x74, 0x8c, 0x54, 0x4a,
		0xc6, 0x2a, 0x5c, 0x78, 0xe5, 0x04, 0xe9, 0x52, 0x6d, 0xa1, 0x9e, 0x30, 0x5d, 0xea, 0xa1, 0x1c,
		0xa5, 0xf8, 0x0c, 0xb5, 0xb0, 0x9a, 0xb9, 0x7f, 0x0c, 0x4e, 0x43, 0x83, 0xea, 0xcd, 0x7e, 0x30,
		0xfc, 0x7b, 0x50, 0x0c, 0xfe, 0xc3, 0x66, 0x1c, 0x94, 0x14, 0x0e, 0x49, 0xc1, 0xeb, 0x3d, 0x65,
		0x08, 0x5f, 0x4d, 0x3d, 0x0d, 0x20, 0x16, 0x20, 0x16, 0x20, 0x16, 0x20, 0x16, 0x20, 0x16, 0x20,
		0x16, 0x20, 0x16, 0x03, 0xc4, 0x7a, 0x1c, 0x43, 0xac, 0x7f, 0x34, 0x7b, 0xae, 0x2b, 0x6c, 0xb9,
		0xb5, 0xbd, 0xbb, 0xb3, 0xb3, 0x1b, 0xfe, 0x46, 0x7d, 0xf8, 0x95, 0x49, 0xbb, 0xec, 0x2d, 0xf8,
		0x2c, 0x1c, 0x59, 0xd9, 0xe5, 0x78, 0x06, 0xd0, 0xda, 0x5a, 0xb3, 0x7d, 0x44, 0xbd, 0xda, 0xe2,
		0xe3, 0x52, 0xd6, 0xde, 0x47, 0x13, 0xdd, 0x84, 0xc2, 0x9f, 0xdf, 0x76, 0x67, 0x3a, 0x50, 0xcc,
		0xfc, 0x7d, 0x77, 0xaa, 0x6e, 0xc6, 0xd4, 0xdf, 0x76, 0xc3, 0xe4, 0x99, 0xf0, 0xa7, 0xdd, 0xa9,
		0xc0, 0x83, 0x24, 0x9d, 0xe4, 0xb2, 0x2f, 0x9f, 0xeb, 0x75, 0x59, 0x9a, 0x92, 0xe4, 0xaf, 0x99,
		0xc4, 0xab, 0x8c, 0xd0, 0x88, 0xd4, 0x36, 0xee, 0x41, 0xd4, 0x82, 0x77, 0x6f, 0x9c, 0x8f, 0xde,
		0xd5, 0xb7, 0x97, 0xa3, 0xdf, 0xba, 0x32, 0x3d, 0xd9, 0xb8, 0x11, 0xaf, 0xf2, 0x77, 0xa7, 0xdb,
		0xa8, 0x8e, 0x5e, 0xe8, 0x4e, 0xb4, 0x11, 0xf2, 0x15, 0x65, 0x3f, 0x54, 0xde, 0xfe, 0xa7, 0x72,
		0xeb, 0x9f, 0x5a, 0x88, 0x57, 0x09, 0xd1, 0xe0, 0x6b, 0xe4, 0xe7, 0x23, 0xc8, 0x0b, 0xd1, 0xe0,
		0x74, 0x4b, 0xa9, 0x3c, 0xcc, 0xab, 0xe9, 0xf4, 0x7c, 0x13, 0xe9, 0xa5, 0x17, 0xe9, 0x15, 0x3e,
		0xc1, 0x86, 0x05, 0x7b, 0xed, 0x6d, 0x66, 0xb0, 0x97, 0x62, 0xb3, 0x90, 0xb6, 0x79, 0xc8, 0x8c,
		0x99, 0xc8, 0x8c, 0xb9, 0xc8, 0x86, 0xd9, 0xd8, 0x0c, 0x0a, 0x28, 0xb5, 0x80, 0x2f, 0xa7, 0x27,
		0x75, 0xcb, 0x78, 0x12, 0x96, 0x68, 0xe9, 0x4e, 0x53, 0x0a, 0xe9, 0xa5, 0x7f, 0x33, 0xb9, 0xe0,
		0x99, 0x70, 0x3f, 0x99, 0xca, 0x03, 0x64, 0xec, 0x7e, 0x32, 0x25, 0x93, 0x94, 0x15, 0xd3, 0x94,
		0x39, 0x13, 0x95, 0x39, 0x53, 0x95, 0x2d, 0x93, 0x95, 0x8e, 0xe9, 0x4a, 0xc9, 0x84, 0x85, 0x4b,
		0x9f, 0x9d, 0x3b, 0xca, 0xa1, 0xc3, 0x72, 0x58, 0xce, 0xc0, 0x2d, 0xe5, 0x71, 0x8a, 0x8f, 0x70,
		0x67, 0xd8, 0xcf, 0xfe, 0x82, 0x3c, 0xa6, 0x7a, 0x26, 0xd3, 0xd5, 0x99, 0xc1, 0x42, 0x5c, 0x9b,
		0x76, 0xea, 0xca, 0x3b, 0x7c, 0x98, 0xaf, 0x86, 0xd5, 0x13, 0xe9, 0xd9, 0xf6, 0xb9, 0xe7, 0xb9,
		0x74, 0x8d, 0xa6, 0x34, 0x1d, 0xfb, 0xc2, 0x7c, 0x36, 0x03, 0x14, 0x98, 0x95, 0x07, 0xbb, 0x11,
		0xcf, 0x86, 0x34, 0xbf, 0xfb, 0x6b, 0xd5, 0x36, 0x2c, 0x4f, 0xa4, 0xfe, 0x54, 0xfd, 0x8f, 0x19,
		0x10, 0x65, 0xe3, 0x35, 0x7b, 0xa2, 0x5c, 0x3c, 0x2e, 0x97, 0x0f, 0x8f, 0xca, 0xe5, 0xbd, 0xa3,
		0xfd, 0xa3, 0xbd, 0x93, 0x83, 0x83, 0xe2, 0x61, 0xf1, 0x00, 0xd2, 0x9d, 0x37, 0xe9, 0xfe, 0xb0,
		0x99, 0xb3, 0xd7, 0x11, 0xf9, 0xac, 0x84, 0x65, 0xe8, 0xfe, 0x95, 0x35, 0x8e, 0x21, 0x78, 0x22,
		0x30, 0x0c, 0x60, 0x18, 0xc0, 0x30, 0x80, 0x61, 0x00, 0xc3, 0x00, 0x86, 0x01, 0x0c, 0x03, 0x18,
		0x06, 0x30, 0x0c, 0xf0, 0xc1, 0xc0, 0x30, 0x80, 0x61, 0x80, 0x74, 0x83, 0x61, 0x00, 0xc3, 0x90,
		0x0b, 0x86, 0x21, 0x4b, 0xf1, 0x0b, 0x88, 0x5b, 0x00, 0xab, 0x00, 0x56, 0x01, 0xac, 0x02, 0x58,
		0x05, 0xb0, 0x0a, 0x60, 0x15, 0xc0, 0x2a, 0x80, 0x55, 0x80, 0xdf, 0x05, 0x56, 0x01, 0xac, 0x02,
		0xa4, 0x1b, 0xac, 0x02, 0x58, 0x85, 0x3c, 0xb1, 0x0a, 0xd9, 0x89, 0x57, 0x40, 0x9c, 0x02, 0x18,
		0x05, 0x30, 0x0a, 0x60, 0x14, 0xc0, 0x28, 0x80, 0x51, 0x00, 0xa3, 0x00, 0x46, 0x01, 0x8c, 0x02,
		0x7c, 0x2e, 0x30, 0x0a, 0x60, 0x14, 0x20, 0xdd, 0x60, 0x14, 0xc0, 0x28, 0x64, 0x7d, 0x46, 0x54,
		0x15, 0xcd, 0x59, 0x8d, 0xc5, 0x41, 0x13, 0xda, 0x94, 0xaa, 0x1e, 0x69, 0x9c, 0xc5, 0x16, 0xcf,
		0x47, 0xef, 0xb4, 0xae, 0x45, 0x52, 0x15, 0x56, 0xb3, 0x6b, 0x89, 0xa6, 0xd1, 0xf5, 0x7a, 0x96,
		0x2f, 0x64, 0x2f, 0xc2, 0x68, 0x09, 0x37, 0xbd, 0x0a, 0x5d, 0x0b, 0x9e, 0x25, 0x9d, 0x5a, 0x5d,
		0x7b, 0xa8, 0xd5, 0xa5, 0x6e, 0xd7, 0x9d, 0xa6, 0x6e, 0xb4, 0x25, 0x4a, 0x75, 0xa1, 0x54, 0xd7,
		0x1c, 0xdb, 0xe7, 0xcb, 0x05, 0x60, 0x15, 0xe9, 0x0a, 0xa7, 0x46, 0xea, 0x85, 0xe7, 0x5d, 0xd8,
		0x23, 0x2d, 0x6f, 0x3a, 0xf6, 0x50, 0xcf, 0xeb, 0xd2, 0x7f, 0xac, 0x14, 0x54, 0xc0, 0xa8, 0x38,
		0x63, 0x39, 0x85, 0xb9, 0x2b, 0x76, 0xaf, 0x93, 0x9e, 0xf2, 0x79, 0x70, 0xee, 0xa5, 0x6b, 0xda,
		0xcf, 0xe9, 0x32, 0xbc, 0x7b, 0xbe, 0x44, 0x7c, 0xbe, 0xab, 0xa4, 0x49, 0xec, 0x16, 0xfd, 0x67,
		0xa8, 0xd6, 0xbe, 0xa6, 0xca, 0x2e, 0x97, 0x86, 0x0f, 0x71, 0x98, 0xe6, 0x43, 0xec, 0xfb, 0x0f,
		0x71, 0x5d, 0xbb, 0xba, 0x4f, 0xf3, 0x21, 0xca, 0xfe, 0x43, 0x7c, 0xfd, 0xe3, 0xea, 0xec, 0xa6,
		0xb0, 0x59, 0xd7, 0x2d, 0x4e, 0x35, 0x30, 0x7c, 0x29, 0x9e, 0x46, 0xff, 0x20, 0xa6, 0x4a, 0xa8,
		0x0d, 0x8e, 0xa1, 0xf2, 0x62, 0xb9, 0xb3, 0x8f, 0x70, 0xa8, 0xbe, 0x47, 0xfa, 0xd4, 0x23, 0x04,
		0x47, 0xf0, 0x54, 0xdb, 0x4f, 0xf1, 0x11, 0x06, 0x07, 0xf0, 0x54, 0x2b, 0x83, 0x4c, 0x03, 0x97,
		0xb0, 0xa2, 0xcc, 0x8c, 0x91, 0x5d, 0xfa, 0x5c, 0xc2, 0x82, 0x67, 0x01, 0x97, 0x00, 0x2e, 0x01,
		0x5c, 0x02, 0xb8, 0x04, 0x70, 0x09, 0xe0, 0x12, 0xc0, 0x25, 0x80, 0x4b, 0x00, 0x97, 0x00, 0x2e,
		0x01, 0x5c, 0x02, 0xb8, 0x04, 0x70, 0x09, 0xe0, 0x12, 0xc0, 0x25, 0x64, 0x8c, 0x4b, 0x18, 0xf4,
		0x87, 0x4e, 0x8d, 0x3e, 0x18, 0x4c, 0x0f, 0xc6, 0x00, 0x8c, 0x01, 0x18, 0x03, 0x30, 0x06, 0x60,
		0x0c, 0xd6, 0x86, 0x31, 0xe8, 0x99, 0xb6, 0x4c, 0x25, 0x8f, 0x28, 0xc5, 0xfc, 0xa1, 0x94, 0xf3,
		0x86, 0x52, 0x74, 0x42, 0xb2, 0x90, 0x27, 0x94, 0x95, 0xfc, 0xa0, 0xcc, 0x65, 0x4e, 0x64, 0x27,
		0x63, 0xa2, 0x9f, 0xa6, 0x7f, 0x96, 0x81, 0xfc, 0x9f, 0x0c, 0xe7, 0xfd, 0x40, 0x6a, 0x33, 0xe4,
		0xd8, 0xa6, 0x33, 0x6b, 0x1d, 0xee, 0x74, 0x72, 0x77, 0xba, 0xab, 0x1b, 0xad, 0x96, 0x2b, 0xbc,
		0x14, 0x1b, 0x70, 0x4f, 0x3c, 0x03, 0x1c, 0x6b, 0x38, 0xd6, 0x70, 0xac, 0xe1, 0x58, 0xc3, 0xb1,
		0x5e, 0x1b, 0xc7, 0x3a, 0x35, 0xed, 0x3e, 0xa9, 0xe1, 0x8b, 0x27, 0x29, 0xcc, 0x3d, 0x5c, 0xfb,
		0x8d, 0x73, 0xae, 0xc7, 0x3b, 0xff, 0xbd, 0x9c, 0xe2, 0xde, 0xcf, 0xc9, 0x40, 0x9a, 0x15, 0x5a,
		0x6a, 0x86, 0x94, 0xc2, 0xb5, 0x53, 0xaf, 0xd1, 0x52, 0xd8, 0x7a, 0xdc, 0xd3, 0x4f, 0xea, 0xef,
		0x8f, 0x45, 0xfd, 0xa4, 0x3e, 0xf8, 0xb1, 0x18, 0xfc, 0xe7, 0x47, 0xa9, 0xff, 0x5e, 0x7a, 0xdc,
		0xd3, 0xcb, 0xc3, 0x4f, 0x4b, 0x07, 0x8f, 0x7b, 0xfa, 0x41, 0x7d, 0x7b, 0xeb, 0xdb, 0xb7, 0x9d,
		0xa8, 0xdf, 0xd9, 0xfe, 0xb1, 0xdf, 0x4f, 0xaf, 0x18, 0x53, 0x3d, 0xcd, 0x6d, 0xbe, 0xbd, 0xaf,
		0xfe, 0x91, 0x99, 0xbd, 0xfe, 0xcf, 0x96, 0xaa, 0xdd, 0xde, 0xfe, 0xaf, 0xc2, 0xa6, 0x95, 0x75,
		0xf8, 0xb8, 0xc1, 0x6a, 0xfd, 0x10, 0x6a, 0x3d, 0x6b, 0x6a, 0x3d, 0x38, 0xb5, 0x86, 0xde, 0x3e,
		0xd3, 0x2f, 0xeb, 0x3f, 0x8a, 0x1f, 0xcb, 0xfd, 0xd3, 0xed, 0x1f, 0x47, 0xfd, 0xd9, 0x0f, 0xdf,
		0x17, 0xfd, 0x5a, 0xf1, 0xe3, 0x51, 0xff, 0x74, 0xc9, 0xbf, 0x1c, 0xf6, 0x4f, 0x57, 0x1c, 0xe3,
		0xa0, 0xbf, 0x35, 0xf7, 0xab, 0xfe, 0xe7, 0xa5, 0x65, 0x5f, 0x28, 0x2f, 0xf9, 0xc2, 0xfe, 0xb2,
		0x2f, 0xec, 0x2f, 0xf9, 0xc2, 0xd2, 0x47, 0x2a, 0x2d, 0xf9, 0xc2, 0x41, 0xff, 0x7d, 0xee, 0xf7,
		0xb7, 0x16, 0xff, 0xea, 0x61, 0x7f, 0xfb, 0x7d, 0xd9, 0xbf, 0x1d, 0xf5, 0xdf, 0x4f, 0xb7, 0xb7,
		0x61, 0xe8, 0x32, 0x63, 0xe8, 0x20, 0xfe, 0xea, 0xc5, 0x7f, 0xf3, 0x0c, 0x3f, 0x78, 0xee, 0xfc,
		0x41, 0xa8, 0x42, 0xc7, 0x68, 0xa6, 0x4f, 0x74, 0x4f, 0x3e, 0x04, 0x98, 0x6e, 0x5e, 0xfb, 0x04,
		0xa6, 0x1b, 0x4c, 0x37, 0x98, 0xee, 0x14, 0x2d, 0xd7, 0xe6, 0x31, 0xdd, 0xe9, 0xa9, 0xf7, 0xb4,
		0xfd, 0xe1, 0xd4, 0xfd, 0xe0, 0xc2, 0x24, 0x40, 0x9d, 0xc5, 0xbd, 0xa5, 0xfe, 0xf6, 0x8f, 0x83,
		0x14, 0x08, 0xc9, 0x7a, 0x1a, 0x1b, 0x91, 0x05, 0xbf, 0xac, 0xf0, 0x9f, 0x5f, 0x6f, 0x47, 0x0a,
		0x7e, 0x03, 0x70, 0x74, 0xf2, 0x9d, 0x75, 0x5c, 0xf3, 0xd9, 0xb4, 0xf5, 0xae, 0xeb, 0x48, 0xa7,
		0xe9, 0x58, 0xe9, 0x61, 0xe9, 0xd9, 0x07, 0x01, 0x9e, 0x06, 0x9e, 0x06, 0x9e, 0x06, 0x9e, 0x06,
		0x9e, 0x5e, 0x1b, 0x3c, 0x6d, 0xb6, 0x84, 0x2d, 0x4d, 0xf9, 0xe6, 0x8a, 0x76, 0x9a, 0x78, 0x3a,
		0x85, 0x40, 0xe7, 0x42, 0x75, 0xf8, 0xea, 0x9f, 0x0c, 0x4f, 0xa4, 0xdf, 0xa4, 0xad, 0x7a, 0x73,
		0xff, 0x70, 0x76, 0x75, 0xd5, 0xa8, 0xdd, 0xdd, 0x3e, 0xdc, 0x9e, 0xdf, 0x5e, 0x35, 0x1e, 0xfe,
		0xac, 0xa5, 0x55, 0x4d, 0x61, 0x10, 0x92, 0xee, 0xa5, 0x7a, 0xe7, 0x90, 0x72, 0x50, 0xfe, 0x68,
		0x5b, 0x3e, 0x7d, 0xae, 0x15, 0x36, 0x31, 0x35, 0x22, 0x23, 0xcb, 0x7f, 0x51, 0xbd, 0xab, 0x9c,
		0x3f, 0x5c, 0xfd, 0xd9, 0x38, 0xbf, 0xbd, 0xb9, 0xa9, 0x9c, 0x3f, 0x54, 0x2e, 0xb0, 0x1b, 0xe9,
		0xed, 0xc6, 0xe7, 0xbb, 0xea, 0xa7, 0x2a, 0x36, 0x20, 0x45, 0x23, 0xf1, 0xf9, 0x1a, 0xea, 0x28,
		0xcd, 0xf5, 0xbf, 0xaf, 0xde, 0x63, 0xfd, 0xd3, 0x5b, 0xff, 0xab, 0xdb, 0xf3, 0xb3, 0x2b, 0x6c,
		0x40, 0xca, 0x1b, 0xd0, 0x38, 0xfb, 0xfc, 0xf9, 0xae, 0xf2, 0xf9, 0xec, 0xa1, 0x82, 0xad, 0x48,
		0x6f, 0x2b, 0x6e, 0xef, 0x6b, 0x97, 0x58, 0xff, 0x74, 0xd7, 0x7f, 0x1f, 0x1b, 0x90, 0xde, 0x06,
		0xd4, 0xce, 0x2b, 0x00, 0x43, 0x69, 0xae, 0x7f, 0xf5, 0x1a, 0xcb, 0x9f, 0xde, 0xf2, 0xdf, 0x3f,
		0x9c, 0x3d, 0x54, 0xcf, 0x37, 0xad, 0x1f, 0x77, 0x1d, 0x05, 0xe5, 0xf2, 0x77, 0x82, 0x0a, 0x5d,
		0xa7, 0xab, 0x4b, 0xa7, 0xab, 0x5b, 0xc6, 0x93, 0x48, 0xf1, 0x3e, 0x73, 0xfa, 0x31, 0x14, 0x73,
		0xfd, 0x17, 0xa2, 0x6d, 0xf4, 0x2c, 0x99, 0x0a, 0xa9, 0x5a, 0x08, 0x8a, 0x65, 0xa8, 0xd5, 0x15,
		0x75, 0xdc, 0x16, 0xb3, 0x4e, 0x8c, 0xdb, 0x62, 0xdc, 0x16, 0xe3, 0xb6, 0x38, 0x55, 0x5b, 0xbd,
		0x71, 0xb7, 0xc5, 0x4f, 0x8e, 0x63, 0x09, 0xc3, 0x4e, 0xf3, 0xa6, 0xb8, 0x08, 0x38, 0x96, 0x1c,
		0x8e, 0xb9, 0xce, 0xb3, 0x6b, 0x74, 0x3a, 0xa2, 0xa5, 0xa7, 0x5c, 0xea, 0x77, 0xee, 0x49, 0x00,
		0x1a, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x1a, 0xd6, 0x06, 0x34, 0xa0, 0xea, 0xaf, 0xf2,
		0x3f, 0xa8, 0xfa, 0x8b, 0xaa, 0xbf, 0x8b, 0xcf, 0x24, 0xaa, 0xfe, 0xa2, 0xea, 0x2f, 0xa4, 0x36,
		0x1f, 0x50, 0x21, 0xbd, 0x59, 0x91, 0xc5, 0x45, 0xe0, 0x64, 0xf7, 0xbc, 0x17, 0xd1, 0xd2, 0x3b,
		0x5d, 0xcb, 0x1b, 0x5c, 0x38, 0xe8, 0x9e, 0x34, 0x9a, 0x7f, 0xa5, 0xe8, 0x6b, 0x2f, 0x79, 0x20,
		0xb8, 0xdc, 0x70, 0xb9, 0xe1, 0x72, 0xc3, 0xe5, 0x86, 0xcb, 0xbd, 0x36, 0x2e, 0xf7, 0x58, 0xc7,
		0xa3, 0x1e, 0xf0, 0x66, 0xb8, 0xdd, 0x93, 0x64, 0xcb, 0x7e, 0x29, 0x03, 0x25, 0x23, 0x8f, 0x52,
		0x7c, 0x84, 0x74, 0xc9, 0x97, 0xf4, 0xa5, 0x21, 0x53, 0x64, 0xcc, 0xbc, 0xc7, 0x7b, 0xf8, 0x31,
		0x1b, 0x0f, 0x94, 0x35, 0x3f, 0x37, 0x7b, 0xfe, 0x6e, 0x06, 0xd8, 0x9a, 0x4c, 0xb1, 0x36, 0xf3,
		0xb2, 0xbc, 0x57, 0x3e, 0x3e, 0x38, 0x3a, 0x80, 0x40, 0xe7, 0x4d, 0xa0, 0x3f, 0x6c, 0xe6, 0xec,
		0xa8, 0xe3, 0xad, 0x16, 0x8e, 0x09, 0xbb, 0xd7, 0x11, 0xae, 0xe1, 0x1f, 0xca, 0x2c, 0x94, 0xf1,
		0x2e, 0xa7, 0xf8, 0x0c, 0x15, 0xbb, 0xd7, 0x49, 0x9f, 0x76, 0x7f, 0x70, 0xee, 0xa5, 0x6b, 0xda,
		0xcf, 0x99, 0x30, 0x25, 0x85, 0xbd, 0x20, 0xa9, 0xb4, 0xf6, 0xb5, 0xdc, 0xa8, 0xfc, 0x51, 0xbb,
		0xaa, 0x9e, 0x57, 0x1f, 0x1a, 0x37, 0x5f, 0xae, 0xae, 0x0a, 0x19, 0x30, 0xb7, 0x45, 0xff, 0xd1,
		0xee, 0x6e, 0xbf, 0x3c, 0x54, 0xee, 0x1a, 0x67, 0x57, 0x95, 0xbb, 0x87, 0x2c, 0x3c, 0x54, 0x69,
		0xb8, 0x5e, 0x87, 0xd9, 0x5b, 0xaf, 0xfd, 0xe0, 0xd1, 0xae, 0x33, 0xf6, 0x54, 0x47, 0xfe, 0x53,
		0x55, 0x6e, 0x1e, 0xee, 0x6e, 0x6b, 0x7f, 0x36, 0xae, 0xce, 0x3e, 0x55, 0xae, 0x1a, 0xd5, 0x9b,
		0x8b, 0xea, 0xf9, 0xd9, 0xc3, 0xed, 0x5d, 0x16, 0x9e, 0xef, 0xd8, 0x7f, 0xbe, 0x9b, 0xdb, 0xc1,
		0xa3, 0x15, 0x3e, 0x6c, 0x30, 0xc6, 0x2d, 0x3c, 0x38, 0xd5, 0x80, 0x94, 0xcb, 0x80, 0x5a, 0x5a,
		0x26, 0x30, 0xa9, 0x7a, 0xf5, 0xe1, 0xd3, 0x4d, 0x1f, 0xb2, 0x53, 0x6d, 0x3f, 0x0b, 0xcf, 0x34,
		0xaf, 0xc3, 0x33, 0x81, 0xbe, 0x17, 0x29, 0xcb, 0x53, 0xad, 0x94, 0x81, 0x07, 0x0b, 0x0f, 0x7d,
		0x2a, 0xf1, 0x39, 0xf3, 0x94, 0xd1, 0xa4, 0xa5, 0x3b, 0xd5, 0x8a, 0x1b, 0xea, 0x1f, 0xe0, 0x82,
		0x7b, 0x0d, 0x4c, 0x4b, 0xe1, 0xca, 0xf4, 0xe4, 0x99, 0x94, 0x6e, 0x3a, 0x97, 0x10, 0xd7, 0xa6,
		0x5d, 0xb1, 0x44, 0x47, 0xd8, 0x69, 0x51, 0x10, 0x85, 0x6b, 0xe3, 0x75, 0xe2, 0x09, 0xb2, 0x11,
		0x61, 0x53, 0xb8, 0x75, 0x5b, 0xc2, 0x15, 0xad, 0x4f, 0x6f, 0xe9, 0xd7, 0x9a, 0xeb, 0x79, 0xc2,
		0x4d, 0xeb, 0x1e, 0x34, 0xe5, 0x0b, 0x61, 0x6d, 0xe6, 0x52, 0xd8, 0x19, 0xec, 0x8a, 0xfe, 0xf4,
		0x96, 0xa6, 0x7f, 0x9e, 0x95, 0xcb, 0x61, 0x6d, 0xf6, 0x82, 0x38, 0x90, 0x94, 0x0d, 0xb1, 0x09,
		0xfd, 0x34, 0x95, 0xc2, 0x17, 0x7f, 0xa1, 0x07, 0x5b, 0xbf, 0xae, 0xb1, 0x57, 0x1f, 0xd6, 0x68,
		0x13, 0x0b, 0x67, 0xb6, 0xed, 0xc8, 0x01, 0xaf, 0xa7, 0x52, 0x95, 0x15, 0xbc, 0xe6, 0x8b, 0xe8,
		0x18, 0x5d, 0x43, 0xbe, 0xf8, 0xc7, 0x73, 0xd7, 0xe9, 0x0a, 0xbb, 0x19, 0x44, 0x36, 0xe9, 0xb6,
		0x90, 0x7f, 0x3b, 0xee, 0x5f, 0xba, 0x69, 0x7b, 0xd2, 0xb0, 0x9b, 0x62, 0x77, 0xf6, 0x03, 0x6f,
		0xee, 0x93, 0x5d, 0x4f, 0x3c, 0xfb, 0x27, 0x5d, 0x77, 0x9d, 0x9e, 0x34, 0xed, 0xe7, 0x5d, 0x29,
		0xf4, 0xae, 0x63, 0x99, 0x4d, 0x53, 0x78, 0xe1, 0xcf, 0x6f, 0xbb, 0x4d, 0xc3, 0x6e, 0x99, 0x2d,
		0xc3, 0xff, 0xc0, 0x90, 0x2f, 0xde, 0xcc, 0xdf, 0xc3, 0x41, 0x2c, 0xd3, 0x93, 0xde, 0xd4, 0xdf,
		0x76, 0x6d, 0xf1, 0x2a, 0xf5, 0x17, 0xa7, 0xeb, 0x85, 0x3f, 0xed, 0x7a, 0xd2, 0x90, 0x8a, 0x32,
		0xd1, 0xf9, 0x25, 0x8e, 0x77, 0x06, 0x66, 0x59, 0xf6, 0xcd, 0x60, 0x50, 0x02, 0x58, 0x41, 0xe2,
		0x9d, 0x5a, 0x48, 0xaa, 0x1e, 0x82, 0x66, 0x02, 0x72, 0x4e, 0x41, 0x4c, 0xbb, 0x67, 0x59, 0x2a,
		0xa7, 0x1c, 0x1a, 0x30, 0xfe, 0xeb, 0x3d, 0xee, 0x53, 0xa1, 0x58, 0xb3, 0xe7, 0x5e, 0xa3, 0x2b,
		0xc0, 0xcd, 0x05, 0x4f, 0xba, 0xbd, 0xa6, 0xb4, 0x87, 0xee, 0xcb, 0xcd, 0xe0, 0xa5, 0xab, 0xc3,
		0x77, 0x6e, 0xdc, 0x0f, 0x1e, 0xf0, 0x6e, 0xf0, 0xca, 0x8d, 0x07, 0x51, 0x0b, 0xde, 0xb2, 0x71,
		0x3e, 0x7a, 0xab, 0x9a, 0x21, 0x5f, 0x46, 0xbf, 0xe5, 0x2b, 0xa2, 0xc6, 0x8d, 0x78, 0x95, 0xbf,
		0x3b, 0x5d, 0x5e, 0x33, 0xc4, 0x67, 0x1c, 0x78, 0x46, 0x66, 0x3a, 0x58, 0xaa, 0x0e, 0x54, 0x5e,
		0x0f, 0x12, 0x8f, 0x10, 0xd2, 0x8b, 0x08, 0x83, 0x78, 0x14, 0x3c, 0xb3, 0xc5, 0xd7, 0x2a, 0x32,
		0xa4, 0x3b, 0x82, 0x59, 0x98, 0x84, 0x7b, 0x74, 0xb3, 0xce, 0x34, 0x3c, 0x77, 0xd6, 0x82, 0x8a,
		0xec, 0x84, 0xc9, 0x2c, 0x04, 0xcf, 0x95, 0x82, 0xd1, 0x60, 0xa8, 0x62, 0x97, 0x94, 0xa7, 0x15,
		0x28, 0x67, 0x88, 0x66, 0xd3, 0x04, 0x82, 0x8d, 0x83, 0x41, 0x0b, 0x96, 0xe6, 0xc2, 0x74, 0x99,
		0x2d, 0x99, 0xd9, 0xe2, 0x17, 0xe1, 0x09, 0xed, 0xc8, 0x2d, 0xbc, 0xbc, 0x4a, 0x52, 0x99, 0xb2,
		0x54, 0xa9, 0x34, 0x53, 0x50, 0x9e, 0xaa, 0x95, 0x68, 0x6a, 0xca, 0x34, 0x35, 0xa5, 0x9a, 0x8e,
		0x72, 0x5d, 0x0f, 0xb2, 0x8a, 0x5b, 0xe9, 0x86, 0x13, 0xa9, 0xad, 0x88, 0x35, 0x6e, 0xc4, 0xa5,
		0xb0, 0xfc, 0x95, 0xe2, 0x1c, 0x5c, 0xe5, 0xb9, 0xb7, 0x69, 0xe4, 0xdc, 0xa6, 0xa0, 0xa8, 0xd3,
		0x52, 0xd8, 0xa9, 0x2b, 0xee, 0xd4, 0x15, 0x78, 0xba, 0x8a, 0x5c, 0x8d, 0x42, 0x57, 0xa4, 0xd8,
		0xc3, 0xa5, 0x54, 0x9e, 0x35, 0x1b, 0x9e, 0x58, 0x4b, 0x18, 0x6d, 0xb5, 0xfd, 0x0f, 0x43, 0x44,
		0xac, 0x30, 0x9e, 0xb2, 0x50, 0x1b, 0x32, 0x63, 0x3b, 0x3b, 0x83, 0x4b, 0xb8, 0xdd, 0x81, 0xc9,
		0x59, 0x97, 0xab, 0x38, 0x25, 0x34, 0xb4, 0x21, 0x85, 0x7a, 0x68, 0x30, 0x98, 0x56, 0x2d, 0x34,
		0x28, 0xaa, 0x86, 0x06, 0x25, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x83, 0x14, 0x7d, 0xbf,
		0x94, 0x7c, 0xc0, 0x54, 0x7d, 0xc1, 0x94, 0x7c, 0xc2, 0xd4, 0x7c, 0xc3, 0x34, 0x0d, 0x41, 0x06,
		0x0c, 0x42, 0xda, 0x86, 0x21, 0x33, 0x06, 0x22, 0x33, 0x86, 0x22, 0x1b, 0x06, 0x43, 0xad, 0xe1,
		0x50, 0x6c, 0x40, 0xd2, 0xf3, 0x31, 0xe7, 0x4e, 0x3c, 0x8a, 0x21, 0x2b, 0xff, 0x83, 0x62, 0xc8,
		0x28, 0x86, 0xbc, 0xf8, 0x4c, 0xa2, 0x18, 0x32, 0x8a, 0x21, 0x43, 0x6a, 0xf3, 0x01, 0x15, 0xd2,
		0x9b, 0x15, 0xc5, 0x90, 0x93, 0x0b, 0x6d, 0x50, 0x90, 0x52, 0x36, 0xd3, 0x73, 0xa9, 0x47, 0x0f,
		0xb0, 0x49, 0x4d, 0x1f, 0xf7, 0xd0, 0xf0, 0x11, 0x84, 0x05, 0x08, 0x0b, 0x10, 0x16, 0x20, 0x2c,
		0x40, 0x58, 0x24, 0x21, 0x2c, 0x8e, 0x53, 0xe4, 0x2b, 0x0e, 0xc0, 0x57, 0x80, 0xaf, 0x80, 0xe7,
		0x07, 0xbe, 0x22, 0x8b, 0x7c, 0xc5, 0x11, 0x44, 0x14, 0xe4, 0x04, 0xc8, 0x89, 0xb5, 0x20, 0x27,
		0xa4, 0x95, 0x36, 0x3b, 0x21, 0x2d, 0xd0, 0x13, 0xa0, 0x27, 0x40, 0x4f, 0x80, 0x9e, 0x00, 0x3d,
		0x01, 0x7a, 0x02, 0xf4, 0x04, 0xe8, 0x09, 0xd0, 0x13, 0xa0, 0x27, 0xe0, 0xfb, 0x81, 0x9e, 0x88,
		0x29, 0xa2, 0xa5, 0x03, 0x44, 0x4f, 0x80, 0xa0, 0x00, 0x41, 0x91, 0x77, 0x82, 0xe2, 0xfb, 0xf0,
		0x3c, 0xa7, 0xc4, 0x4e, 0x0c, 0xa6, 0x87, 0xfb, 0x0c, 0xf7, 0x19, 0xee, 0x33, 0xdc, 0x67, 0xb8,
		0xcf, 0x6b, 0xe4, 0x3e, 0x7b, 0xae, 0xee, 0x99, 0x2d, 0x5d, 0xfa, 0x0f, 0x82, 0x4e, 0xd1, 0x1b,
		0xe1, 0x44, 0x67, 0xa2, 0x47, 0x78, 0x16, 0x24, 0x20, 0x1b, 0x92, 0x90, 0xbe, 0x44, 0xcc, 0x49,
		0x46, 0xea, 0x3d, 0xc4, 0x67, 0xa5, 0x23, 0x0b, 0x5d, 0xc7, 0xb2, 0xd1, 0x53, 0x3c, 0x3b, 0xd2,
		0x32, 0x66, 0x3c, 0x32, 0xd4, 0x63, 0x7c, 0x8e, 0x01, 0xc9, 0x4a, 0xaf, 0xf1, 0xcc, 0x12, 0x22,
		0xd9, 0x25, 0x48, 0x52, 0x06, 0x67, 0x3f, 0x97, 0xf9, 0x0c, 0xf5, 0x22, 0x9f, 0x97, 0xf9, 0x2c,
		0xf5, 0x24, 0x87, 0xe0, 0xe7, 0xcc, 0x07, 0xca, 0xee, 0x53, 0xd4, 0x37, 0xb9, 0x3d, 0x6c, 0x86,
		0xe0, 0x61, 0x36, 0x7a, 0x9a, 0xcf, 0x79, 0x10, 0xe5, 0x0c, 0x3c, 0x4b, 0x26, 0x7a, 0x9c, 0x8f,
		0xfd, 0x9a, 0x2c, 0xf5, 0x3a, 0x0f, 0x9f, 0x2a, 0xbb, 0x3d, 0xcf, 0xc3, 0x47, 0xcc, 0x62, 0xef,
		0xf3, 0xf0, 0xe1, 0xb2, 0xdb, 0x03, 0x3d, 0x7c, 0xc4, 0x4c, 0xf6, 0x42, 0x0f, 0x9f, 0x2e, 0xe3,
		0x3d, 0xd1, 0xc3, 0xe7, 0xcc, 0x50, 0x6f, 0xf4, 0x8c, 0x61, 0xf0, 0x0c, 0xf5, 0x4a, 0x1f, 0xab,
		0xfe, 0x2c, 0xf7, 0x4c, 0x0f, 0x9f, 0x32, 0x83, 0xbd, 0xd3, 0xc7, 0xcf, 0x96, 0xd1, 0x1e, 0xea,
		0x93, 0x0f, 0x98, 0xc9, 0x5e, 0xea, 0x63, 0x84, 0x96, 0xa9, 0x9e, 0xea, 0xe1, 0x63, 0x65, 0xaa,
		0xb7, 0x7a, 0x76, 0xfc, 0x99, 0xfe, 0x86, 0xf6, 0x98, 0x4f, 0xc7, 0x8f, 0x4b, 0xc9, 0x74, 0x65,
		0xe0, 0xa2, 0xc7, 0xec, 0x7e, 0x3f, 0xd4, 0x8d, 0x56, 0xcb, 0x15, 0x9e, 0x97, 0x85, 0xab, 0x9e,
		0x14, 0x55, 0x53, 0xa1, 0x66, 0x48, 0x29, 0x5c, 0x3b, 0x75, 0x1e, 0xbf, 0xb0, 0xb5, 0xf5, 0xb8,
		0xa7, 0x9f, 0x18, 0x7a, 0xfb, 0x4c, 0xbf, 0xac, 0xff, 0x28, 0x7e, 0x2c, 0xf7, 0x4f, 0xb7, 0x7f,
		0x1c, 0xf5, 0x67, 0x3f, 0x7c, 0x5f, 0xf4, 0x6b, 0xc5, 0x8f, 0x47, 0xfd, 0xd3, 0x25, 0xff, 0x72,
		0xd8, 0x3f, 0x5d, 0x71, 0x8c, 0x83, 0xfe, 0xd6, 0xdc, 0xaf, 0xfa, 0x9f, 0x97, 0x96, 0x7d, 0xa1,
		0xbc, 0xe4, 0x0b, 0xfb, 0xcb, 0xbe, 0xb0, 0xbf, 0xe4, 0x0b, 0x4b, 0x1f, 0xa9, 0xb4, 0xe4, 0x0b,
		0x07, 0xfd, 0xf7, 0xb9, 0xdf, 0xdf, 0x5a, 0xfc, 0xab, 0x87, 0xfd, 0xed, 0xf7, 0x65, 0xff, 0x76,
		0xd4, 0x7f, 0x3f, 0xdd, 0xde, 0x4e, 0x0f, 0x49, 0xd7, 0xd3, 0x14, 0xfc, 0xdb, 0xfb, 0xea, 0x1f,
		0x99, 0x91, 0xfe, 0xff, 0x40, 0xfc, 0xd3, 0x12, 0xff, 0xff, 0x2a, 0x6c, 0x9a, 0xe1, 0x47, 0xc8,
		0x6b, 0xae, 0x66, 0x42, 0x07, 0xff, 0x2c, 0xb5, 0xa9, 0xf5, 0xcc, 0x96, 0xe7, 0xff, 0x1f, 0xfa,
		0xf6, 0x67, 0x46, 0x82, 0xd1, 0xb7, 0x9f, 0x72, 0x46, 0xf4, 0xed, 0x47, 0xdf, 0xfe, 0x0d, 0xd2,
		0xe3, 0x79, 0xec, 0xd6, 0x7f, 0x6f, 0xb6, 0xd0, 0xa9, 0x5f, 0xc1, 0x51, 0x42, 0xa7, 0xfe, 0xa5,
		0x47, 0x67, 0xa3, 0x9b, 0xf4, 0xb3, 0x76, 0x3d, 0x53, 0xd2, 0xe5, 0x4c, 0x59, 0x9b, 0xfe, 0x12,
		0xda, 0xf4, 0xaf, 0x32, 0x15, 0xda, 0xf4, 0x93, 0xa9, 0x6c, 0xb4, 0xe9, 0x5f, 0xb6, 0x34, 0xec,
		0x6d, 0xfa, 0x9b, 0x4e, 0xcf, 0x96, 0xc2, 0xf5, 0xd4, 0xf5, 0xea, 0x0f, 0x67, 0x44, 0xc3, 0xfe,
		0xac, 0xa9, 0xcf, 0x14, 0xd4, 0xa8, 0x6a, 0x75, 0x9a, 0x9a, 0x5a, 0x4d, 0x4d, 0xbd, 0xa6, 0xa3,
		0x66, 0xd7, 0x83, 0xa5, 0x52, 0xd6, 0xb0, 0xdf, 0xe9, 0xc9, 0x41, 0x1e, 0xa3, 0x68, 0xe9, 0x4e,
		0x53, 0x0a, 0xe9, 0xa9, 0x6f, 0xd1, 0xbb, 0xe0, 0x19, 0xd0, 0xca, 0x3f, 0x6f, 0xaa, 0x3b, 0x45,
		0x15, 0x9e, 0x96, 0x2a, 0x4f, 0x5d, 0xa5, 0xa7, 0xae, 0xda, 0xd3, 0x55, 0xf1, 0x6a, 0x54, 0xbd,
		0x22, 0x95, 0x1f, 0x2e, 0x65, 0x7a, 0xad, 0xfc, 0x87, 0x00, 0x59, 0x69, 0x87, 0xc5, 0x14, 0x3a,
		0x2b, 0xa6, 0x94, 0x8d, 0x9c, 0x42, 0xa1, 0x8a, 0x34, 0xb3, 0x8b, 0xd3, 0x2e, 0xf5, 0x97, 0x99,
		0x9c, 0xc9, 0xf4, 0x73, 0x23, 0x53, 0x88, 0xde, 0x4c, 0x35, 0xc9, 0x37, 0x83, 0x1d, 0x11, 0x21,
		0x8d, 0x8a, 0xad, 0xb5, 0xfa, 0xd9, 0xea, 0xeb, 0x12, 0xde, 0xf1, 0x51, 0xad, 0xd7, 0xd9, 0xfd,
		0x2b, 0x6d, 0x9f, 0x33, 0x78, 0x02, 0x78, 0x9c, 0xf0, 0x38, 0xe1, 0x71, 0xc2, 0xe3, 0x84, 0xc7,
		0x09, 0x8f, 0x13, 0x1e, 0x27, 0x3c, 0x4e, 0x60, 0x7c, 0x78, 0x9c, 0xf0, 0x38, 0xe1, 0x71, 0xc2,
		0xe3, 0x5c, 0x1b, 0x8f, 0x33, 0xcd, 0xfb, 0x4d, 0xdc, 0x6b, 0xc2, 0xcb, 0x84, 0x97, 0x09, 0x2f,
		0x13, 0x5e, 0x26, 0xbc, 0x4c, 0x78, 0x99, 0xf0, 0x32, 0x81, 0xeb, 0xe1, 0x65, 0xc2, 0xcb, 0x84,
		0x97, 0x09, 0x2f, 0x73, 0xdd, 0xbc, 0xcc, 0xf4, 0xee, 0x33, 0x71, 0x8f, 0x09, 0x0f, 0x13, 0x1e,
		0x26, 0x3c, 0x4c, 0x78, 0x98, 0xf0, 0x30, 0xe1, 0x61, 0xc2, 0xc3, 0x04, 0xa6, 0x87, 0x87, 0x09,
		0x0f, 0x13, 0x1e, 0x26, 0x3c, 0x4c, 0x0d, 0x85, 0xd1, 0x7e, 0x0d, 0x44, 0x51, 0x02, 0xea, 0x67,
		0x75, 0x6c, 0xa4, 0x21, 0xc5, 0xae, 0xa2, 0x12, 0x02, 0x1a, 0x47, 0x21, 0xa8, 0xf3, 0xd1, 0xb3,
		0xe7, 0xb5, 0x1a, 0x14, 0x63, 0x49, 0x15, 0xb3, 0xa5, 0xae, 0x0c, 0x05, 0x7b, 0x19, 0x31, 0x45,
		0xdc, 0x0c, 0x0a, 0x50, 0xe4, 0x93, 0x7b, 0x41, 0x01, 0x0a, 0x14, 0xa0, 0xc8, 0x10, 0x97, 0xa2,
		0xbe, 0x71, 0xb2, 0xc2, 0xc6, 0xc8, 0x8a, 0x09, 0x13, 0x85, 0xcc, 0x57, 0x1a, 0x04, 0x49, 0x5a,
		0xc4, 0x48, 0xea, 0x2e, 0x68, 0x7a, 0xae, 0xa7, 0x42, 0x02, 0x24, 0x15, 0xe2, 0x23, 0x14, 0xa9,
		0x72, 0xe9, 0xa4, 0x7c, 0x72, 0x78, 0x54, 0x3a, 0x39, 0x80, 0x6c, 0xad, 0x15, 0xc1, 0xc0, 0x3f,
		0x4b, 0x1d, 0x0e, 0xd5, 0xbc, 0x43, 0x65, 0x7f, 0x37, 0x2c, 0xb3, 0xa5, 0xbb, 0xc2, 0xf0, 0x14,
		0x10, 0x0a, 0x63, 0xe7, 0x6a, 0x7a, 0x5e, 0x38, 0x5a, 0x70, 0xb4, 0xe0, 0x68, 0xc1, 0xd1, 0x82,
		0xa3, 0x35, 0x59, 0x2b, 0xda, 0x95, 0x42, 0x1f, 0x29, 0x4a, 0xcf, 0x52, 0xa3, 0x2b, 0x35, 0xc5,
		0xdd, 0xc6, 0xd5, 0x76, 0x13, 0x4f, 0xa7, 0x5b, 0xf8, 0xa0, 0x1b, 0x78, 0xe5, 0xba, 0xf6, 0xf0,
		0x67, 0xe3, 0x5e, 0x65, 0x97, 0xe8, 0x41, 0x8f, 0xef, 0xff, 0x7f, 0xe5, 0xee, 0xb6, 0xf1, 0xef,
		0x4a, 0xf5, 0xf3, 0xef, 0x2a, 0x5b, 0x7c, 0x0f, 0x5a, 0x78, 0x5f, 0x56, 0xef, 0xee, 0x1f, 0x1a,
		0xf7, 0xd5, 0x8b, 0xc6, 0x97, 0x9b, 0xbb, 0xca, 0xfd, 0xed, 0xd5, 0xd7, 0xb3, 0x4f, 0x57, 0x15,
		0x95, 0x8f, 0x11, 0xb4, 0xe9, 0xbe, 0x7d, 0xf8, 0xbd, 0x72, 0x97, 0xea, 0x63, 0x94, 0xfd, 0xc7,
		0xf8, 0x5a, 0xb9, 0xab, 0x5e, 0x56, 0xcf, 0xcf, 0x1e, 0xaa, 0xb7, 0x37, 0x8d, 0xcb, 0xb3, 0xaa,
		0xa2, 0x86, 0xd7, 0xca, 0xe2, 0x7a, 0x94, 0x37, 0xac, 0x1e, 0x1f, 0x2a, 0xa5, 0xfe, 0xd8, 0x32,
		0xb1, 0x56, 0xda, 0x28, 0x79, 0x99, 0x50, 0x2b, 0xed, 0x77, 0xbd, 0x40, 0xa4, 0x4f, 0xb5, 0xb2,
		0xc2, 0xf9, 0x27, 0x95, 0x9b, 0xaa, 0xae, 0xcb, 0xb9, 0xbf, 0xa1, 0xce, 0xa5, 0xab, 0x1a, 0xe0,
		0x20, 0x75, 0x1e, 0xea, 0x60, 0x3a, 0x38, 0xa6, 0x70, 0x4c, 0xe1, 0x98, 0xc2, 0x31, 0x85, 0x63,
		0x3a, 0x71, 0xe2, 0x9e, 0x1c, 0xc7, 0x12, 0x86, 0x52, 0x4f, 0xb4, 0x98, 0xeb, 0x2d, 0x12, 0xaf,
		0xd2, 0x35, 0xf4, 0x9e, 0xed, 0x49, 0xe3, 0xc9, 0x52, 0xb4, 0x59, 0xae, 0x68, 0x0b, 0x57, 0xd8,
		0xcd, 0xb5, 0xbc, 0xd5, 0x1c, 0x49, 0x62, 0xcb, 0x35, 0xda, 0x52, 0x37, 0x85, 0x6c, 0xeb, 0x5e,
		0xd7, 0xf7, 0xeb, 0xf5, 0x99, 0xf8, 0xb2, 0x61, 0x40, 0xd9, 0xce, 0x86, 0xe5, 0xe8, 0x8c, 0x37,
		0x7f, 0x93, 0xd3, 0x74, 0x56, 0x97, 0x0e, 0xdc, 0xa5, 0x45, 0xfc, 0x83, 0xbb, 0xb4, 0x79, 0xd1,
		0xfb, 0x5b, 0x98, 0xcf, 0x2f, 0x52, 0x9d, 0x87, 0x32, 0x9c, 0x0f, 0x2e, 0x0a, 0x5c, 0x14, 0xb8,
		0x28, 0x70, 0x51, 0xe0, 0xa2, 0x20, 0x48, 0x31, 0xa7, 0x70, 0x1e, 0x41, 0x8a, 0x2a, 0x1f, 0x00,
		0x41, 0x8a, 0xdc, 0x22, 0x85, 0x20, 0x45, 0x04, 0x29, 0x6e, 0x9a, 0x63, 0x95, 0xab, 0xae, 0xc9,
		0x8a, 0x72, 0x28, 0xf3, 0x98, 0x3b, 0xc9, 0x83, 0x65, 0xe9, 0xc5, 0x83, 0x76, 0x44, 0x62, 0x41,
		0xf3, 0xdd, 0x22, 0x96, 0x1c, 0xc2, 0xc2, 0x95, 0xe9, 0xc9, 0x33, 0x29, 0x79, 0xba, 0xce, 0xfa,
		0x40, 0xac, 0x62, 0x09, 0x5f, 0x22, 0x98, 0x8c, 0x87, 0x6f, 0x97, 0x27, 0x66, 0x50, 0x53, 0xbe,
		0xa0, 0x70, 0xeb, 0xb6, 0x84, 0x2b, 0x5a, 0x9f, 0xfc, 0x3d, 0xb1, 0x7b, 0x96, 0xc5, 0x39, 0xc5,
		0x17, 0x4f, 0xb8, 0x2c, 0xd6, 0x8f, 0x5a, 0x44, 0x99, 0x75, 0x60, 0xbe, 0x74, 0x1f, 0x83, 0xa7,
		0x48, 0x9d, 0x18, 0x4e, 0xab, 0x98, 0xe9, 0xd4, 0x27, 0xcd, 0x48, 0x44, 0xd2, 0xcd, 0x25, 0xd5,
		0x99, 0x97, 0x66, 0x1a, 0xe9, 0x48, 0xbe, 0x97, 0x04, 0xfb, 0x58, 0x18, 0xe0, 0x10, 0xaa, 0xed,
		0x1b, 0xc7, 0x53, 0x07, 0xc3, 0x12, 0xc9, 0xd9, 0xe8, 0x62, 0x9a, 0x68, 0xb8, 0x90, 0xfe, 0x26,
		0x0a, 0x20, 0xe4, 0xa0, 0xb9, 0x19, 0xe9, 0x6c, 0x2e, 0xda, 0x9a, 0x9d, 0x9e, 0x66, 0xa7, 0xa1,
		0x79, 0xe9, 0xe6, 0x6c, 0xe9, 0xee, 0x0b, 0x93, 0x16, 0xd6, 0x16, 0x8c, 0xe6, 0x90, 0x8b, 0x20,
		0x96, 0xaa, 0xd1, 0x41, 0x18, 0x8e, 0x4f, 0xed, 0x3b, 0xb0, 0xdc, 0xb8, 0xb1, 0xdd, 0xb0, 0x71,
		0xde, 0xa8, 0x29, 0xb8, 0x41, 0xe3, 0xbe, 0x31, 0x53, 0x76, 0x43, 0xa6, 0xec, 0x46, 0x4c, 0xcd,
		0x0d, 0x58, 0xb6, 0xfd, 0x7b, 0xb6, 0x1b, 0x2d, 0x05, 0x41, 0x76, 0x4c, 0x41, 0x75, 0x84, 0x1e,
		0xc5, 0x47, 0x6a, 0x13, 0xa0, 0x7b, 0xa6, 0xdd, 0x64, 0x37, 0x04, 0xc3, 0x59, 0x60, 0x0e, 0x60,
		0x0e, 0x60, 0x0e, 0x60, 0x0e, 0x48, 0x25, 0x5e, 0x9a, 0x1d, 0x21, 0xcd, 0xe6, 0x5f, 0x1e, 0x4b,
		0xed, 0x6a, 0xc6, 0x1a, 0xd5, 0x85, 0x2f, 0xf6, 0xe0, 0x2a, 0xb2, 0x60, 0x1b, 0xb6, 0xe3, 0x89,
		0xa6, 0x63, 0xb7, 0x38, 0xea, 0x32, 0x32, 0x47, 0x47, 0x30, 0x5e, 0x12, 0xa9, 0x88, 0x7e, 0x50,
		0x15, 0xed, 0xa0, 0xfc, 0x06, 0x5a, 0xdd, 0x8d, 0x33, 0x67, 0xe8, 0xa8, 0x8a, 0x68, 0x85, 0x14,
		0x6b, 0x46, 0xaf, 0xb3, 0x54, 0xe4, 0xe4, 0xba, 0xb4, 0xbe, 0x39, 0x58, 0x5f, 0xba, 0x86, 0xed,
		0x99, 0xbe, 0xb8, 0x79, 0xec, 0x88, 0x7f, 0x72, 0x2e, 0xe0, 0x7e, 0xe0, 0x7e, 0xe0, 0x7e, 0xe0,
		0x7e, 0x52, 0x89, 0xe7, 0xec, 0x58, 0xc3, 0x89, 0xfa, 0x81, 0xc6, 0x81, 0xc6, 0x81, 0xc6, 0x81,
		0xc6, 0x81, 0xc6, 0x37, 0x15, 0x8d, 0xb7, 0x4c, 0xaf, 0xe9, 0x9a, 0x1d, 0xd3, 0x36, 0xa4, 0xe3,
		0xf2, 0x01, 0xf1, 0xe9, 0x69, 0x80, 0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x49, 0x25, 0x9e,
		0x2d, 0x99, 0x90, 0x31, 0x79, 0x10, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x7c, 0x15, 0x11, 0x50, 0x95,
		0xac, 0x07, 0xd8, 0x0d, 0xd8, 0xad, 0x00, 0x76, 0x0b, 0xdb, 0xea, 0xf2, 0xa1, 0xed, 0x60, 0x74,
		0x80, 0x6c, 0x80, 0x6c, 0x80, 0x6c, 0x80, 0x6c, 0x72, 0xcd, 0xa2, 0x4b, 0x7f, 0x1a, 0xc6, 0x88,
		0x47, 0x86, 0xca, 0xc4, 0xbc, 0x05, 0xec, 0xd5, 0x14, 0xac, 0x1f, 0x14, 0xa8, 0xaf, 0x7d, 0xb9,
		0xff, 0xbd, 0x51, 0xad, 0x7d, 0x2d, 0x37, 0x2a, 0x7f, 0xd4, 0xae, 0xaa, 0xe7, 0xd5, 0x87, 0xc6,
		0xcd, 0x97, 0x2b, 0xce, 0x7a, 0xf5, 0x83, 0xfa, 0xf4, 0xa3, 0x79, 0x0f, 0xd5, 0xcd, 0x5b, 0x9a,
		0x7a, 0x5f, 0x85, 0x13, 0x07, 0xd5, 0xe8, 0x6f, 0x6e, 0x67, 0x26, 0xcc, 0x55, 0xee, 0x3c, 0x7f,
		0x95, 0xf7, 0xf9, 0x05, 0x62, 0xad, 0x69, 0xbe, 0x5c, 0x10, 0x58, 0xeb, 0xb9, 0x2f, 0x3d, 0x6f,
		0xac, 0x8e, 0xc1, 0xd2, 0xd3, 0xc6, 0x55, 0x3c, 0x7d, 0xd3, 0x32, 0xff, 0x15, 0xd4, 0x7a, 0x55,
		0x50, 0xdb, 0x95, 0xf3, 0x70, 0xcf, 0xd7, 0x6e, 0x35, 0x5b, 0xee, 0x5c, 0x69, 0xce, 0x30, 0x0d,
		0x96, 0x53, 0x1d, 0x2b, 0xaa, 0x96, 0x97, 0x46, 0x69, 0x56, 0xe5, 0x05, 0xf2, 0x96, 0x95, 0x5e,
		0xfd, 0xf9, 0xe6, 0x82, 0x93, 0xd8, 0x00, 0x4e, 0x62, 0x58, 0x03, 0x81, 0x89, 0x93, 0x08, 0x46,
		0x07, 0x27, 0x01, 0x4e, 0x02, 0x9c, 0x04, 0x38, 0x09, 0x52, 0x89, 0xf7, 0x06, 0xae, 0x37, 0x23,
		0x21, 0x71, 0xbc, 0x01, 0xda, 0xdf, 0x71, 0xcd, 0xe7, 0x41, 0x78, 0x86, 0x6e, 0xb4, 0x5a, 0x8c,
		0xa1, 0x20, 0xb3, 0x13, 0xc1, 0x26, 0xc0, 0x26, 0xc0, 0x26, 0xc0, 0x26, 0x90, 0x4a, 0xbc, 0xd9,
		0xfd, 0x7e, 0x18, 0xa8, 0x17, 0xe1, 0x79, 0xac, 0x96, 0x81, 0x61, 0xec, 0x9a, 0x21, 0xa5, 0x70,
		0x6d, 0x36, 0xd6, 0xa0, 0xb0, 0xb5, 0xf5, 0xb8, 0xa7, 0x9f, 0x18, 0x7a, 0xfb, 0x4c, 0xbf, 0xac,
		0xff, 0x28, 0x7e, 0x2c, 0xf7, 0x4f, 0xb7, 0x7f, 0x1c, 0xf5, 0x67, 0x3f, 0x7c, 0x5f, 0xf4, 0x6b,
		0xc5, 0x8f, 0x47, 0xfd, 0xd3, 0x25, 0xff, 0x72, 0xd8, 0x3f, 0x5d, 0x71, 0x8c, 0x83, 0xfe, 0xd6,
		0xdc, 0xaf, 0xfa, 0x9f, 0x97, 0x96, 0x7d, 0xa1, 0xbc, 0xe4, 0x0b, 0xfb, 0xcb, 0xbe, 0xb0, 0xbf,
		0xe4, 0x0b, 0x4b, 0x1f, 0xa9, 0xb4, 0xe4, 0x0b, 0x07, 0xfd, 0xf7, 0xb9, 0xdf, 0xdf, 0x5a, 0xfc,
		0xab, 0x87, 0xfd, 0xed, 0xf7, 0x65, 0xff, 0x76, 0xd4, 0x7f, 0x3f, 0xdd, 0xde, 0xa6, 0x3f, 0xe8,
		0x75, 0x0e, 0x01, 0xbc, 0xbd, 0xaf, 0xfe, 0xc1, 0x2e, 0x85, 0xff, 0x81, 0x18, 0xa6, 0x25, 0x86,
		0xff, 0x55, 0xc8, 0x3a, 0x41, 0x02, 0xba, 0x37, 0x1d, 0xba, 0xf7, 0x5e, 0x04, 0xc1, 0x4f, 0x5a,
		0x69, 0xa7, 0xac, 0x39, 0x6d, 0x2d, 0x0b, 0x9d, 0xbb, 0x40, 0xff, 0x72, 0xa1, 0xcf, 0xd8, 0x9b,
		0x0d, 0x3a, 0x78, 0xc3, 0x08, 0x01, 0xcf, 0x56, 0xc3, 0x07, 0x78, 0x36, 0xe8, 0x00, 0xd0, 0x01,
		0xa0, 0x03, 0x40, 0x07, 0xd0, 0x4a, 0x3c, 0x72, 0x43, 0x54, 0x82, 0x49, 0xe4, 0x86, 0x24, 0x92,
		0x59, 0xe4, 0x86, 0x44, 0x14, 0x01, 0xe4, 0x86, 0x00, 0x78, 0x83, 0x66, 0x00, 0xcd, 0x00, 0x9a,
		0x01, 0x34, 0x03, 0xb4, 0x5d, 0xce, 0x68, 0x86, 0xee, 0xa4, 0x42, 0x63, 0xa2, 0x18, 0xba, 0x5c,
		0x07, 0x0d, 0xf4, 0x02, 0xe8, 0x05, 0xd0, 0x0b, 0xa0, 0x17, 0x40, 0x2f, 0x80, 0x5e, 0x80, 0x4b,
		0x09, 0x7a, 0x01, 0xb2, 0x00, 0xc0, 0x9d, 0x7d, 0xc0, 0xed, 0x48, 0xa7, 0xe9, 0x58, 0xfa, 0xe0,
		0xe2, 0x8d, 0x13, 0x75, 0x4f, 0x4f, 0x04, 0xe8, 0x0d, 0xe8, 0x0d, 0xe8, 0x0d, 0xe8, 0x4d, 0x2a,
		0xf1, 0xfe, 0xaa, 0xea, 0xa1, 0xa6, 0x41, 0x65, 0x8a, 0xb9, 0x1d, 0x50, 0x52, 0x99, 0xa2, 0x38,
		0x28, 0x4d, 0x71, 0x5e, 0xa9, 0xb1, 0xd6, 0x83, 0x08, 0x66, 0xf9, 0xf4, 0x99, 0x75, 0x92, 0xfd,
		0x60, 0x92, 0xf3, 0xdb, 0x9b, 0xcb, 0xea, 0x67, 0x94, 0x7c, 0x98, 0x99, 0xc2, 0x5f, 0xfb, 0x53,
		0xad, 0xc4, 0x59, 0xf9, 0x60, 0xb8, 0xf2, 0xa7, 0xda, 0x3e, 0x6b, 0x7d, 0x05, 0x5f, 0x54, 0x4f,
		0xb5, 0xe2, 0xde, 0x66, 0x56, 0x53, 0xc8, 0x24, 0x30, 0xfd, 0x6e, 0x58, 0x66, 0x8b, 0x0f, 0x8e,
		0x0e, 0x86, 0x07, 0x08, 0x05, 0x08, 0x05, 0x08, 0x05, 0x08, 0x25, 0x95, 0xf8, 0x4d, 0xee, 0x02,
		0x9b, 0xa9, 0xde, 0xe4, 0x67, 0xb6, 0xed, 0x48, 0x43, 0x9a, 0x0e, 0x2d, 0xad, 0x51, 0xf0, 0x9a,
		0x2f, 0xa2, 0x63, 0x74, 0x0d, 0xf9, 0xe2, 0x6f, 0xf7, 0xae, 0xd3, 0x15, 0x76, 0x33, 0x50, 0xd1,
		0xba, 0x2d, 0xe4, 0xdf, 0x8e, 0xfb, 0x97, 0x6e, 0xda, 0x9e, 0x34, 0xec, 0xa6, 0xd8, 0x9d, 0xfd,
		0xc0, 0x9b, 0xfb, 0x64, 0x77, 0xe6, 0xbe, 0x7b, 0x77, 0x54, 0x67, 0xc5, 0x14, 0x5e, 0xf8, 0xf3,
		0xdb, 0x6e, 0xd3, 0xb0, 0x5b, 0x66, 0xcb, 0xf0, 0x3f, 0x30, 0xe4, 0x8b, 0x37, 0xf3, 0xf7, 0x5d,
		0x4f, 0x1a, 0x54, 0x47, 0x39, 0xf9, 0x1e, 0x26, 0x1b, 0x21, 0xe1, 0xee, 0xfb, 0x5a, 0x7b, 0x01,
		0xdf, 0xa4, 0x4d, 0x07, 0x96, 0x6b, 0x33, 0x79, 0xe7, 0x1a, 0x65, 0x4b, 0x82, 0xc2, 0x95, 0xe9,
		0xc9, 0x33, 0x29, 0x69, 0xd2, 0xe6, 0x0b, 0xd7, 0xa6, 0x5d, 0xb1, 0x84, 0x2f, 0x23, 0x44, 0x2c,
		0x70, 0xe1, 0xda, 0x78, 0x9d, 0x18, 0x91, 0xa7, 0x9b, 0x49, 0xe1, 0xd6, 0x6d, 0x09, 0x57, 0xb4,
		0x3e, 0xf9, 0xbb, 0x61, 0xf7, 0x2c, 0x8b, 0x72, 0xc8, 0x2f, 0x9e, 0x70, 0x49, 0x68, 0xea, 0xa4,
		0xc2, 0x46, 0xac, 0x62, 0x32, 0xa8, 0x5a, 0x08, 0xcc, 0x58, 0xc1, 0x93, 0x6e, 0xaf, 0x29, 0x87,
		0x15, 0x85, 0x0a, 0x37, 0x83, 0xc7, 0xac, 0x0e, 0x9f, 0xb2, 0x71, 0x3f, 0x78, 0xca, 0xbb, 0xc1,
		0x43, 0x36, 0x1e, 0x44, 0x2d, 0x78, 0xae, 0xc6, 0xf9, 0xe8, 0x39, 0x6a, 0xfe, 0x63, 0x7c, 0x48,
		0x47, 0x23, 0xc5, 0xfb, 0x66, 0x4c, 0xb1, 0xa2, 0x12, 0xa7, 0x2c, 0x88, 0x51, 0xbc, 0x0d, 0x8b,
		0xbe, 0xdc, 0x31, 0x96, 0xba, 0xd0, 0x74, 0xac, 0x04, 0xed, 0x6d, 0x26, 0xfa, 0xbc, 0x59, 0xb1,
		0x6d, 0x45, 0x42, 0x5f, 0x31, 0xb1, 0x4f, 0x48, 0xe1, 0xfb, 0x11, 0xfa, 0x78, 0x54, 0xbe, 0x1c,
		0xb9, 0xcf, 0x46, 0xee, 0x9b, 0xd1, 0xfa, 0x60, 0x6a, 0xd5, 0x53, 0x62, 0xdf, 0x29, 0x94, 0x18,
		0x4b, 0x18, 0x6d, 0x57, 0xb4, 0x93, 0x48, 0xcc, 0xc8, 0x17, 0x4a, 0x10, 0x0d, 0x53, 0xa8, 0x0d,
		0x35, 0xe4, 0xce, 0xce, 0x00, 0x41, 0xef, 0x0e, 0x8e, 0x74, 0x86, 0x55, 0x97, 0xb0, 0x5b, 0x5d,
		0xc7, 0x4c, 0xc0, 0xec, 0x4e, 0x14, 0xef, 0x1e, 0x8e, 0x04, 0x05, 0x06, 0x05, 0x06, 0x05, 0xb6,
		0x26, 0x0a, 0x2c, 0x3c, 0xd5, 0x19, 0xd6, 0x61, 0x03, 0xb2, 0x22, 0xb1, 0x02, 0x1b, 0x0c, 0x93,
		0x4c, 0x7b, 0x15, 0x93, 0x6a, 0xaf, 0x12, 0xb4, 0x17, 0xb4, 0x97, 0x22, 0xed, 0x75, 0x61, 0x26,
		0x63, 0x94, 0x86, 0x0d, 0xf0, 0x93, 0xef, 0xf2, 0x74, 0x43, 0xfd, 0xa4, 0x5b, 0x4c, 0x73, 0x6b,
		0x46, 0x76, 0x4b, 0x46, 0x79, 0x2b, 0xc6, 0x70, 0x0b, 0x46, 0x7d, 0xeb, 0xc5, 0x76, 0xcb, 0xc5,
		0x76, 0xab, 0xc5, 0x73, 0x8b, 0x95, 0x2e, 0x69, 0x4d, 0x76, 0x2b, 0xc5, 0x70, 0x0b, 0x45, 0x74,
		0xeb, 0x94, 0x80, 0x83, 0xfb, 0x98, 0x54, 0xe5, 0xe9, 0x9e, 0x49, 0x91, 0x52, 0x36, 0xa3, 0xf8,
		0x86, 0xa3, 0x42, 0xfd, 0x41, 0xfd, 0x41, 0xfd, 0x65, 0x4c, 0xfd, 0x49, 0xb3, 0x23, 0xa4, 0xd9,
		0xfc, 0xcb, 0x3b, 0x2c, 0x13, 0xaa, 0x40, 0x82, 0x02, 0xaf, 0x85, 0x2f, 0xf6, 0x20, 0x9d, 0xa3,
		0x60, 0x1b, 0xb6, 0xe3, 0x89, 0xa6, 0x63, 0xb7, 0x28, 0x8a, 0xd2, 0x12, 0x67, 0x70, 0x11, 0x5e,
		0x97, 0x73, 0x64, 0x68, 0x71, 0x65, 0x64, 0xb1, 0x67, 0xdd, 0xf0, 0x65, 0xd9, 0x50, 0x06, 0xdf,
		0x71, 0x64, 0x54, 0x85, 0x5b, 0xc6, 0x73, 0xdf, 0xbc, 0x2e, 0xbb, 0x98, 0x91, 0x18, 0x8e, 0x7a,
		0x7e, 0xb1, 0x9e, 0x74, 0x0d, 0xdb, 0x33, 0xfd, 0xed, 0xf7, 0xc8, 0x11, 0xdf, 0xe4, 0xd8, 0xc0,
		0x7d, 0xc0, 0x7d, 0xc0, 0x7d, 0x19, 0xc3, 0x7d, 0x4d, 0xa7, 0x67, 0x4b, 0xe1, 0x66, 0x0e, 0xf5,
		0x01, 0x9d, 0x01, 0x9d, 0x01, 0x9d, 0x01, 0x9d, 0x6d, 0x2e, 0x3a, 0x7b, 0xf2, 0x08, 0xf2, 0x79,
		0xc6, 0xf4, 0xa6, 0x97, 0x38, 0x7d, 0x07, 0x08, 0x0c, 0x08, 0x0c, 0x08, 0x8c, 0x1c, 0x81, 0x79,
		0xae, 0xee, 0x99, 0x2d, 0xaa, 0xe4, 0xeb, 0xf0, 0xf2, 0xe1, 0x84, 0x60, 0xac, 0xe1, 0xcb, 0x66,
		0x0e, 0x83, 0x8d, 0x96, 0xae, 0xd3, 0xb5, 0x3c, 0xdd, 0x32, 0x9e, 0x84, 0x45, 0x98, 0x3c, 0x44,
		0xb9, 0x82, 0x3c, 0x2b, 0x49, 0xbf, 0xa2, 0x73, 0x2b, 0x8b, 0x9a, 0x5c, 0x0a, 0x56, 0x9b, 0xd5,
		0xa7, 0x58, 0x0e, 0x58, 0x0f, 0x51, 0x88, 0x29, 0x7d, 0xa7, 0x44, 0x89, 0x93, 0xb2, 0x5c, 0x06,
		0xf6, 0xca, 0xc7, 0x07, 0x47, 0xa8, 0xc8, 0x95, 0xae, 0x5f, 0xc3, 0x3f, 0x6a, 0xa6, 0x0b, 0x7e,
		0x33, 0x9a, 0x2f, 0x61, 0xf7, 0x3a, 0xc2, 0x1d, 0x24, 0x06, 0xa1, 0xa0, 0xcd, 0x24, 0x0e, 0x51,
		0x52, 0xd0, 0x26, 0x28, 0x02, 0x53, 0xad, 0x7d, 0x2d, 0x37, 0x2a, 0x7f, 0xd4, 0xae, 0xaa, 0xe7,
		0xd5, 0x87, 0xc6, 0xcd, 0x97, 0xab, 0x2b, 0xce, 0xc2, 0x33, 0x45, 0x7f, 0xca, 0xbb, 0xdb, 0x2f,
		0x0f, 0x95, 0xbb, 0xc6, 0xd9, 0x55, 0xe5, 0xee, 0x81, 0xb5, 0x94, 0xce, 0xf0, 0xfd, 0x0e, 0xd5,
		0xbd, 0xdf, 0x7e, 0x30, 0xe5, 0xb5, 0xa2, 0xd9, 0x8e, 0xfc, 0xd9, 0x2a, 0x37, 0x0f, 0x77, 0xb7,
		0xb5, 0x3f, 0x1b, 0x57, 0x67, 0x9f, 0x2a, 0x57, 0x8d, 0xea, 0xcd, 0x45, 0xf5, 0xfc, 0xec, 0xe1,
		0xf6, 0x8e, 0x73, 0xde, 0xe3, 0x20, 0xdf, 0xf1, 0x76, 0x30, 0x25, 0xea, 0x07, 0xcd, 0xaa, 0x86,
		0x25, 0x1b, 0xc2, 0x82, 0xa6, 0xc3, 0x59, 0xa7, 0x85, 0xee, 0x54, 0xdb, 0xe7, 0x9c, 0x6b, 0x5e,
		0x67, 0xb0, 0xa2, 0x86, 0x45, 0x87, 0x38, 0x76, 0x8c, 0xfa, 0x6a, 0x16, 0x6a, 0x24, 0xdc, 0x24,
		0xd7, 0x24, 0xcb, 0x5d, 0xa1, 0x49, 0x4d, 0x78, 0xaa, 0x15, 0x51, 0xa8, 0x29, 0x03, 0x38, 0x8a,
		0x48, 0xf5, 0x30, 0x10, 0x29, 0x4c, 0x0d, 0xbf, 0x39, 0x1a, 0x7d, 0xb3, 0x35, 0xf8, 0x46, 0x63,
		0xef, 0x35, 0x68, 0xec, 0x5d, 0xa7, 0x14, 0x34, 0xce, 0x46, 0xde, 0x68, 0xe0, 0xbd, 0x16, 0x0d,
		0xbc, 0xeb, 0xb8, 0xe0, 0x8c, 0x7d, 0x02, 0x92, 0x55, 0x95, 0x98, 0xb3, 0x61, 0x49, 0xaa, 0x4b,
		0xcc, 0x1a, 0x2c, 0x5c, 0x71, 0xae, 0x36, 0x24, 0xae, 0x38, 0x71, 0xc5, 0xb9, 0x82, 0xc4, 0x91,
		0xdd, 0x26, 0x11, 0xde, 0x1e, 0x21, 0xc2, 0x8c, 0x64, 0x5c, 0x44, 0x98, 0xb1, 0x47, 0x98, 0x71,
		0x75, 0x50, 0x41, 0x5c, 0xd9, 0x86, 0xc2, 0xae, 0x20, 0xe2, 0xd7, 0xa3, 0x44, 0x5e, 0xc3, 0x11,
		0x69, 0xc0, 0x57, 0x11, 0xe0, 0x0b, 0xe0, 0x6b, 0x53, 0xc1, 0x57, 0xd2, 0x9a, 0x15, 0xe1, 0x40,
		0xa6, 0x3d, 0x88, 0x8c, 0x12, 0x2d, 0xdd, 0x69, 0x4a, 0x21, 0x3d, 0x3a, 0x41, 0x09, 0x59, 0xc3,
		0xb9, 0x29, 0x88, 0xf6, 0x95, 0xb6, 0x2e, 0x3c, 0x79, 0x3d, 0x78, 0x8e, 0x3a, 0xf0, 0x8c, 0xf5,
		0xdf, 0xb9, 0xea, 0xbe, 0xb3, 0xd7, 0x7b, 0x67, 0xaf, 0xf3, 0xce, 0x5b, 0xdf, 0x3d, 0x5b, 0xc5,
		0xbd, 0xc9, 0xeb, 0xb8, 0xb3, 0xa4, 0x10, 0xcd, 0xaa, 0x00, 0xca, 0x8b, 0x03, 0x9e, 0xf0, 0x40,
		0x86, 0x28, 0x16, 0xce, 0x70, 0x40, 0xee, 0xd6, 0x9c, 0xca, 0x82, 0xbe, 0xf8, 0x83, 0xbd, 0x18,
		0x22, 0x05, 0x58, 0xa3, 0xfc, 0x14, 0xa6, 0x24, 0xad, 0xe3, 0x6e, 0xaf, 0xf7, 0xd5, 0xf3, 0x87,
		0x0c, 0x9c, 0x86, 0x49, 0xc0, 0xd8, 0xfd, 0x8b, 0x19, 0x91, 0x06, 0x13, 0x00, 0x8f, 0x02, 0x8f,
		0x02, 0x8f, 0x02, 0x8f, 0x02, 0x8f, 0x02, 0x8f, 0x02, 0x8f, 0x02, 0x8f, 0x02, 0x8f, 0x02, 0x8f,
		0x4e, 0xe3, 0x51, 0x46, 0x6e, 0x14, 0x9c, 0x28, 0x30, 0x28, 0x30, 0x28, 0x30, 0x28, 0x30, 0x28,
		0x30, 0x28, 0x30, 0x28, 0x30, 0x28, 0x30, 0x28, 0x30, 0xe8, 0x42, 0x0c, 0xca, 0xc6, 0x85, 0x82,
		0x03, 0x05, 0xfe, 0x04, 0xfe, 0x04, 0xfe, 0x04, 0xfe, 0x04, 0xfe, 0x04, 0xfe, 0x04, 0xfe, 0x04,
		0xfe, 0x04, 0xfe, 0x9c, 0xdd, 0x44, 0xa7, 0x27, 0xd9, 0x03, 0x45, 0x17, 0xcc, 0x01, 0x54, 0x0a,
		0x54, 0x0a, 0x54, 0x0a, 0x54, 0x0a, 0x54, 0x0a, 0x54, 0x0a, 0x54, 0x0a, 0x54, 0x0a, 0x54, 0x0a,
		0x54, 0xba, 0x04, 0x95, 0xf2, 0xd0, 0xa3, 0x73, 0x33, 0x00, 0x91, 0x02, 0x91, 0x02, 0x91, 0x02,
		0x91, 0x02, 0x91, 0x02, 0x91, 0x02, 0x91, 0x02, 0x91, 0x02, 0x91, 0x02, 0x91, 0xce, 0x20, 0x52,
		0x4e, 0x7e, 0x14, 0xbc, 0x28, 0x50, 0x28, 0x50, 0x28, 0x50, 0x28, 0x50, 0x28, 0x50, 0x28, 0x50,
		0x28, 0x50, 0x28, 0x50, 0x28, 0x50, 0xe8, 0x62, 0x14, 0xca, 0xc7, 0x87, 0x82, 0x07, 0x05, 0x02,
		0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x5d, 0x33,
		0x04, 0x9a, 0x6a, 0x69, 0xd3, 0x33, 0xdb, 0x76, 0xe4, 0xa0, 0x27, 0x23, 0x49, 0x85, 0x53, 0xaf,
		0xf9, 0x22, 0x3a, 0x46, 0xd7, 0x90, 0x2f, 0xbe, 0x05, 0xdb, 0x75, 0xba, 0xc2, 0x6e, 0x06, 0x28,
		0x51, 0xb7, 0x85, 0xfc, 0xdb, 0x71, 0xff, 0xd2, 0x4d, 0xdb, 0x93, 0x86, 0xdd, 0x14, 0xbb, 0xb3,
		0x1f, 0x78, 0x73, 0x9f, 0xec, 0x7a, 0xe2, 0xd9, 0x47, 0x11, 0xba, 0xeb, 0xf4, 0xa4, 0x69, 0x3f,
		0xef, 0x4a, 0xa1, 0x77, 0x1d, 0xcb, 0x6c, 0x9a, 0xc2, 0x0b, 0x7f, 0x7e, 0xdb, 0xf5, 0xa4, 0x21,
		0xc5, 0x2e, 0x51, 0xc1, 0xe3, 0xc1, 0x5b, 0x48, 0xb7, 0xd7, 0x94, 0xf6, 0xd0, 0x0e, 0xdf, 0x0c,
		0x1e, 0xab, 0x3a, 0x7c, 0xaa, 0xc6, 0xfd, 0xe0, 0xa9, 0xee, 0x06, 0x0f, 0xd5, 0x78, 0x10, 0xb5,
		0xe0, 0x39, 0x1a, 0xe7, 0xa3, 0x27, 0xc8, 0x61, 0x01, 0x6a, 0x61, 0xb7, 0xba, 0x8e, 0x49, 0xd0,
		0x2c, 0x6f, 0xa2, 0xdd, 0xe7, 0x70, 0x44, 0x74, 0xff, 0x50, 0xe8, 0x9b, 0xa0, 0x00, 0x35, 0xba,
		0x7f, 0xac, 0x22, 0x71, 0xfe, 0xaa, 0xe8, 0xa3, 0x23, 0xaa, 0x4b, 0x7f, 0x7c, 0xba, 0x4e, 0x20,
		0x14, 0x5d, 0xfa, 0x69, 0xbb, 0xf3, 0xf3, 0xb4, 0xe7, 0x2b, 0xa3, 0x3d, 0xdf, 0xe3, 0x9e, 0x7e,
		0x52, 0x7f, 0x7f, 0x2c, 0xea, 0x27, 0xf5, 0xc1, 0x8f, 0xc5, 0xe0, 0x3f, 0x3f, 0x4a, 0xfd, 0xf7,
		0xd2, 0xe3, 0x9e, 0x5e, 0x1e, 0x7e, 0x5a, 0x3a, 0x78, 0xdc, 0xd3, 0x0f, 0xea, 0xdb, 0x5b, 0xdf,
		0xbe, 0xed, 0x44, 0xfd, 0xce, 0xf6, 0x8f, 0xfd, 0xfe, 0x06, 0x37, 0xa3, 0x53, 0xb0, 0xba, 0x19,
		0x6c, 0xbe, 0x86, 0xae, 0x9c, 0x99, 0x3e, 0xf6, 0x68, 0x93, 0x88, 0xae, 0x9c, 0xaa, 0x15, 0x21,
		0xc4, 0x0d, 0x5d, 0x39, 0x37, 0xb4, 0x3d, 0xd4, 0x90, 0x89, 0x20, 0xf2, 0xcc, 0x83, 0xd1, 0xe0,
		0x95, 0xc3, 0x2b, 0x87, 0x57, 0x9e, 0x35, 0xaf, 0x5c, 0xba, 0xa6, 0xfd, 0x4c, 0xe9, 0x89, 0x1f,
		0xa7, 0xa5, 0xed, 0x3e, 0x28, 0xdc, 0x11, 0x2a, 0x16, 0x3b, 0x3d, 0xf6, 0x3a, 0xde, 0x51, 0x88,
		0xbe, 0xc8, 0xd1, 0xbe, 0x11, 0x71, 0x3b, 0x7c, 0xad, 0x14, 0x36, 0x7d, 0xd6, 0x62, 0xf2, 0xbf,
		0x85, 0x2b, 0xd3, 0x93, 0x67, 0x52, 0xc6, 0xeb, 0xb8, 0x56, 0xb8, 0x36, 0xed, 0x8a, 0x25, 0xfc,
		0x65, 0x8f, 0x79, 0x69, 0x56, 0xb8, 0x36, 0x5e, 0x27, 0x46, 0xa0, 0xb9, 0xf2, 0x2b, 0xdc, 0xba,
		0x2d, 0xe1, 0x8a, 0xd6, 0x27, 0x7f, 0x7d, 0xec, 0x9e, 0x65, 0x25, 0x19, 0xe2, 0x8b, 0x27, 0xdc,
		0x58, 0xb7, 0x75, 0x51, 0xb7, 0x33, 0xe1, 0xa9, 0x4a, 0xe3, 0x34, 0xc5, 0x50, 0x9d, 0xf1, 0x2e,
		0x7b, 0xa2, 0x1d, 0xd8, 0xd5, 0x8f, 0xdd, 0x6a, 0xbf, 0xb9, 0xe2, 0x4e, 0xc6, 0xdd, 0x41, 0x75,
		0x3b, 0xb7, 0xda, 0x32, 0xfe, 0x7a, 0x51, 0x7e, 0xfe, 0x1b, 0xbf, 0x58, 0xae, 0x82, 0x78, 0x95,
		0xae, 0xa1, 0xf7, 0xfc, 0xe7, 0x7d, 0xb2, 0x56, 0x33, 0xe9, 0x85, 0xbf, 0x5f, 0xc4, 0xea, 0xae,
		0x6e, 0x84, 0xa5, 0x1f, 0x41, 0x81, 0x9d, 0xdd, 0xc1, 0x8a, 0xef, 0xca, 0xb7, 0xae, 0xd0, 0xfe,
		0xa1, 0xfd, 0xe6, 0x34, 0x75, 0xdb, 0x0c, 0x98, 0x7a, 0xef, 0xf4, 0xa2, 0x72, 0x79, 0xf6, 0xe5,
		0xea, 0xa1, 0x51, 0xbd, 0xb9, 0x7f, 0x38, 0xbb, 0x39, 0xaf, 0xfc, 0x16, 0x41, 0xee, 0xe3, 0x62,
		0xd1, 0x49, 0xcc, 0x19, 0xbc, 0x7c, 0x44, 0x6d, 0x92, 0x14, 0x59, 0x4e, 0x21, 0xc8, 0x88, 0xab,
		0xf3, 0x81, 0x41, 0x45, 0x16, 0x2e, 0x84, 0xd7, 0x74, 0xcd, 0x6e, 0x2c, 0xfd, 0x18, 0x6e, 0xf3,
		0x50, 0xbd, 0x68, 0xc3, 0xb3, 0xa1, 0x0d, 0x5e, 0xab, 0xe7, 0x06, 0x87, 0x56, 0x33, 0x3d, 0xcd,
		0xb1, 0xad, 0x37, 0xed, 0xbb, 0x61, 0x99, 0x2d, 0xed, 0x6f, 0x53, 0xbe, 0x68, 0xf2, 0x45, 0x68,
		0x2d, 0xd1, 0x36, 0x7a, 0x96, 0xfc, 0x66, 0x0f, 0x8f, 0x9a, 0x36, 0x3a, 0x6a, 0x3b, 0x51, 0x37,
		0x25, 0x81, 0x5f, 0x32, 0x29, 0x0f, 0xad, 0x89, 0xa5, 0x88, 0xa1, 0x81, 0x29, 0x9c, 0x8e, 0x29,
		0xf1, 0xa0, 0x5e, 0xd5, 0x74, 0x95, 0xfd, 0x87, 0x64, 0x94, 0xc6, 0xaf, 0xb4, 0x5f, 0x44, 0x23,
		0xc1, 0x6b, 0x1c, 0x56, 0x10, 0x9f, 0x48, 0x06, 0xfb, 0xe7, 0x5b, 0xb7, 0x7c, 0x69, 0x7f, 0xb2,
		0x68, 0x85, 0x01, 0x62, 0xff, 0xd5, 0x5a, 0x4d, 0x38, 0x75, 0xc6, 0x2f, 0x49, 0x84, 0x15, 0xdb,
		0x6c, 0x8f, 0xf9, 0x92, 0xd2, 0x2f, 0x7e, 0x31, 0x02, 0x1f, 0x32, 0xc9, 0x77, 0xd8, 0x42, 0xfa,
		0x3b, 0xb3, 0xca, 0x2e, 0x44, 0x54, 0x1d, 0xb1, 0x29, 0x8b, 0xd8, 0xda, 0x61, 0x96, 0x72, 0x18,
		0xbd, 0x1b, 0x33, 0x98, 0x58, 0xb5, 0x59, 0xf4, 0x94, 0xd2, 0x5c, 0x79, 0x15, 0x47, 0x7b, 0x15,
		0x5d, 0xe3, 0x46, 0xa4, 0xec, 0x22, 0x53, 0x73, 0x71, 0x28, 0xb8, 0x78, 0xa2, 0x47, 0x89, 0x64,
		0x62, 0xb1, 0x67, 0xb4, 0x58, 0x26, 0x8a, 0x68, 0xf2, 0xb8, 0x09, 0x91, 0x89, 0xac, 0xf8, 0x84,
		0x55, 0x44, 0x62, 0x6a, 0x05, 0xe4, 0xbf, 0x82, 0xaa, 0x6a, 0x1b, 0x96, 0xf5, 0x64, 0x34, 0xff,
		0x9a, 0x33, 0x50, 0xd1, 0xcf, 0xdd, 0xf2, 0xa1, 0x70, 0x0a, 0x71, 0x0a, 0x53, 0x3a, 0x85, 0xb3,
		0xb2, 0xa8, 0xbb, 0xa2, 0x1d, 0xe7, 0x4c, 0x1e, 0x45, 0xf8, 0x4e, 0x2d, 0xc4, 0x7f, 0xe1, 0xc2,
		0x9d, 0xce, 0xc3, 0xbd, 0x9f, 0xfc, 0xe3, 0xe4, 0xbf, 0x0d, 0x9d, 0xb9, 0xc9, 0xdf, 0xf6, 0x5f,
		0x8d, 0x74, 0x79, 0x63, 0x38, 0xf9, 0xf1, 0x9c, 0xfd, 0xe8, 0x4e, 0xff, 0xbc, 0xf3, 0xbf, 0xb3,
		0xd0, 0xb1, 0xbd, 0xda, 0xff, 0x7a, 0x77, 0xf9, 0x5b, 0x1c, 0x0f, 0x2b, 0xe1, 0xfd, 0x53, 0x42,
		0xdf, 0x9f, 0xd4, 0xd1, 0x9b, 0xe7, 0x02, 0x7e, 0xba, 0x58, 0xdc, 0x14, 0xf9, 0xca, 0xbf, 0x5d,
		0x57, 0x68, 0xf0, 0x22, 0xdd, 0x17, 0xc7, 0xb9, 0x17, 0x86, 0x19, 0x83, 0x19, 0xdb, 0x50, 0x30,
		0xe9, 0x3a, 0x3d, 0x29, 0xf4, 0x96, 0xe9, 0x49, 0xd3, 0x7e, 0xee, 0x99, 0xde, 0x8b, 0x70, 0xa3,
		0x1f, 0xb5, 0x45, 0x83, 0xe0, 0xe4, 0xe1, 0xe4, 0xa5, 0x74, 0xf2, 0xe2, 0x8b, 0xa3, 0x16, 0x33,
		0xec, 0x3f, 0x5e, 0x78, 0x7f, 0x02, 0x48, 0x15, 0x3b, 0xb4, 0x22, 0x49, 0x64, 0x6e, 0xe2, 0x08,
		0xdc, 0xf9, 0x00, 0xfb, 0x41, 0x0c, 0xe1, 0x63, 0x51, 0x3f, 0x18, 0xfe, 0xbd, 0xdc, 0x7f, 0x3f,
		0x1c, 0xc7, 0x75, 0xff, 0xd8, 0xef, 0xbf, 0x1f, 0x1e, 0x4c, 0xfc, 0xbd, 0xe4, 0xff, 0xdd, 0xff,
		0xa0, 0x34, 0x0c, 0xfc, 0x3e, 0x3c, 0x38, 0xd8, 0x1f, 0x84, 0x7e, 0x9f, 0x2e, 0x1a, 0xfc, 0x38,
		0x18, 0x7c, 0x7f, 0xf8, 0xf7, 0x93, 0xfe, 0x7b, 0xf9, 0x71, 0xaf, 0x38, 0xfc, 0xdb, 0x71, 0xff,
		0xbd, 0x5c, 0x7a, 0xdc, 0xd3, 0x8f, 0x87, 0x7f, 0x3f, 0xf2, 0xff, 0x7e, 0xf2, 0xb8, 0x17, 0xfe,
		0xfa, 0x61, 0xf0, 0x41, 0x79, 0xe2, 0x57, 0x0e, 0x06, 0x9f, 0x9c, 0x04, 0x33, 0x86, 0x0f, 0x1c,
		0x7c, 0xe4, 0x3f, 0xf5, 0xe1, 0xf8, 0xa9, 0x07, 0x9f, 0x1d, 0x8d, 0x67, 0x2b, 0x85, 0x9f, 0x4d,
		0xcc, 0x19, 0x7e, 0x34, 0x18, 0x31, 0x46, 0x3c, 0x6c, 0x3d, 0xce, 0x36, 0x52, 0xc4, 0xb7, 0x2e,
		0x0a, 0xe8, 0xc7, 0x6e, 0x4e, 0xed, 0x66, 0x9c, 0x78, 0xd3, 0x3a, 0x67, 0x0c, 0x04, 0x14, 0x0e,
		0x57, 0xce, 0xc9, 0x29, 0xe7, 0x59, 0xc8, 0xb9, 0x56, 0xc8, 0xe3, 0x92, 0xe3, 0xe8, 0x66, 0x12,
		0x2b, 0xe4, 0xcc, 0x00, 0x40, 0x2b, 0xfc, 0x14, 0x2b, 0x60, 0x37, 0x95, 0x2a, 0x9c, 0x4c, 0x72,
		0x7b, 0x81, 0xaf, 0xe6, 0xea, 0x66, 0x2b, 0x26, 0xeb, 0x10, 0x7c, 0x15, 0x5c, 0x03, 0xb8, 0x86,
		0x94, 0xb8, 0x86, 0x96, 0x23, 0xa5, 0x68, 0xe9, 0xff, 0xa7, 0x67, 0xb4, 0x62, 0x51, 0x7d, 0xd1,
		0xee, 0xa8, 0x62, 0x69, 0xe1, 0x0c, 0xa6, 0xb5, 0xd7, 0xa3, 0xbc, 0x76, 0x12, 0x0b, 0x94, 0xd1,
		0xb4, 0x73, 0x95, 0x1a, 0x56, 0x46, 0x91, 0xed, 0x50, 0xae, 0x23, 0xd4, 0xd0, 0x80, 0x5e, 0x85,
		0x5e, 0x5d, 0xf2, 0x34, 0xd7, 0x86, 0xdd, 0x32, 0xa4, 0xe3, 0xbe, 0xfd, 0x3a, 0x18, 0x90, 0x40,
		0x17, 0x9b, 0x2d, 0x61, 0x4b, 0x53, 0xbe, 0xc5, 0x8c, 0x17, 0x88, 0x90, 0x09, 0x53, 0xa8, 0x0e,
		0xa7, 0xfa, 0x64, 0x78, 0x22, 0x7e, 0xb8, 0xf4, 0x4d, 0xe5, 0xe1, 0xdf, 0xb7, 0x77, 0xff, 0x0a,
		0x43, 0xbb, 0x1b, 0x0f, 0x7f, 0xd6, 0x2a, 0x51, 0x45, 0x26, 0x28, 0xe7, 0xe7, 0xc5, 0xc2, 0xe6,
		0x31, 0xaf, 0xcf, 0x47, 0x8f, 0x3f, 0x1b, 0x99, 0x1e, 0xe3, 0x76, 0xfa, 0xa3, 0xea, 0x67, 0xbe,
		0x2a, 0x5d, 0xed, 0xe7, 0xe3, 0x39, 0x6b, 0xa5, 0x5a, 0x3e, 0x1e, 0xf4, 0xeb, 0x7d, 0x35, 0x17,
		0x0f, 0xba, 0xff, 0xf5, 0xee, 0x92, 0x3b, 0x80, 0xa2, 0xae, 0x3c, 0x5a, 0xbe, 0x9f, 0xe7, 0x68,
		0xf9, 0x5f, 0x27, 0x8b, 0xc6, 0x8b, 0x69, 0x0f, 0x82, 0xa2, 0xf4, 0xa6, 0x63, 0xdb, 0x22, 0xa8,
		0x3b, 0xea, 0xad, 0x1e, 0xdf, 0x3e, 0xff, 0x55, 0xe2, 0x58, 0xf7, 0x3d, 0xc4, 0xba, 0xb3, 0xa1,
		0x18, 0x45, 0xb1, 0xee, 0xb3, 0x32, 0x12, 0x03, 0x5e, 0xcf, 0x8e, 0x10, 0x0d, 0x6a, 0x17, 0x01,
		0xb5, 0x01, 0xb5, 0xe3, 0x09, 0x6f, 0xf8, 0x85, 0x61, 0xd5, 0x2f, 0xbd, 0x6d, 0x74, 0x4c, 0xeb,
		0x2d, 0x3e, 0x88, 0x9d, 0x19, 0x27, 0x6a, 0x92, 0x7d, 0xac, 0xca, 0x2b, 0xb1, 0x2b, 0xad, 0x24,
		0xa9, 0xac, 0x92, 0x4c, 0xd0, 0x93, 0x0a, 0x3c, 0x99, 0xe0, 0x93, 0x1d, 0x00, 0xb2, 0x83, 0x10,
		0x0f, 0x6a, 0x45, 0xcd, 0xff, 0x8f, 0x5d, 0xdf, 0x24, 0xdc, 0x77, 0x4b, 0x18, 0xed, 0x68, 0xbe,
		0xe5, 0x9c, 0xde, 0x3e, 0x8a, 0x77, 0x93, 0xf6, 0x32, 0x8c, 0x0c, 0x1e, 0x46, 0x96, 0xcf, 0x1c,
		0x39, 0xae, 0x7c, 0xce, 0x08, 0x5a, 0xbc, 0x39, 0x3a, 0x8f, 0x31, 0x95, 0xc8, 0xf0, 0xfb, 0xf1,
		0x94, 0x47, 0x11, 0xca, 0x03, 0xca, 0x83, 0x57, 0x79, 0x44, 0xb5, 0xae, 0x54, 0x56, 0x96, 0xd6,
		0xda, 0x26, 0xb4, 0xba, 0x89, 0x0f, 0x10, 0xc5, 0x41, 0xa2, 0x3d, 0x50, 0x54, 0x07, 0x8b, 0xfc,
		0x80, 0x91, 0x1f, 0x34, 0xf2, 0x03, 0x17, 0xef, 0xe0, 0x25, 0xe0, 0x7f, 0x34, 0x92, 0x2a, 0x65,
		0x04, 0xd6, 0x9c, 0xc2, 0xaa, 0x2f, 0xb2, 0xee, 0xe1, 0xff, 0x02, 0xef, 0xd0, 0x1b, 0xfc, 0xe7,
		0xb1, 0xeb, 0x3a, 0xd2, 0x69, 0x3a, 0xd6, 0x3f, 0x9a, 0x3d, 0xd7, 0x15, 0xb6, 0xdc, 0xda, 0xf6,
		0x7f, 0xc5, 0x73, 0x9b, 0xfa, 0xe8, 0x5f, 0xea, 0x14, 0xb8, 0x20, 0xe9, 0xc6, 0x50, 0x15, 0x2d,
		0x7b, 0x7b, 0x76, 0xa4, 0xee, 0x34, 0xf5, 0xa6, 0xd3, 0xe9, 0xfa, 0x2f, 0x23, 0x5a, 0xba, 0xbf,
		0x53, 0xfe, 0xa0, 0x7d, 0x55, 0x65, 0xc5, 0x62, 0x18, 0xe6, 0x61, 0xb9, 0x0d, 0xdd, 0xec, 0x74,
		0x1d, 0x57, 0x8e, 0xea, 0x37, 0x25, 0x56, 0xf7, 0x8b, 0x87, 0x8d, 0xb9, 0x45, 0x17, 0x83, 0xc1,
		0x12, 0x95, 0xb4, 0x2d, 0xdc, 0x55, 0xfe, 0xdf, 0xca, 0xf9, 0x43, 0xe3, 0xee, 0xf6, 0xcb, 0x43,
		0x25, 0x9e, 0x84, 0xd5, 0x61, 0xb4, 0x7c, 0xc5, 0xeb, 0x76, 0x1d, 0x0b, 0x16, 0x2b, 0x86, 0xc5,
		0x0a, 0x16, 0x6e, 0xe3, 0xcc, 0xd5, 0x48, 0x13, 0x0c, 0x54, 0x40, 0xd2, 0x1e, 0x17, 0xa1, 0xe9,
		0x2a, 0x27, 0x18, 0xa3, 0x62, 0xf7, 0x3a, 0xc9, 0xe5, 0xef, 0xc1, 0xb9, 0x1f, 0x04, 0xa8, 0x92,
		0xd4, 0x1e, 0xdd, 0xf3, 0xd7, 0xea, 0xec, 0xfc, 0xbc, 0x52, 0x1b, 0xe9, 0x28, 0x82, 0xf2, 0xa3,
		0x45, 0x7f, 0xd0, 0xe4, 0x8a, 0x2f, 0xa1, 0x30, 0x4d, 0xac, 0x58, 0x95, 0xa0, 0xb5, 0xd1, 0xe0,
		0x68, 0x4d, 0xae, 0x14, 0x49, 0x5b, 0xb6, 0xe9, 0x75, 0x3a, 0xd5, 0x8a, 0x28, 0xd9, 0xba, 0x01,
		0xe8, 0xc7, 0xf4, 0x82, 0x0b, 0x8d, 0x8e, 0x90, 0xae, 0x19, 0x00, 0xd3, 0xae, 0xf1, 0x9c, 0x6c,
		0x39, 0xc6, 0x8a, 0x6f, 0xf9, 0xd8, 0x69, 0xe2, 0xa0, 0xa0, 0x60, 0x29, 0x00, 0x10, 0xbc, 0x76,
		0x78, 0xed, 0x2a, 0x61, 0xd0, 0x93, 0xe3, 0x58, 0xc2, 0xb0, 0x29, 0xa0, 0x4f, 0x11, 0x16, 0x42,
		0xa1, 0x85, 0xf0, 0x64, 0xc8, 0x57, 0x10, 0xd8, 0x84, 0xc9, 0xd1, 0xa0, 0x4d, 0xa1, 0x4d, 0xa1,
		0x4d, 0xd7, 0x99, 0x03, 0x1d, 0xf1, 0x9b, 0xe1, 0x91, 0x87, 0xe6, 0x56, 0xa7, 0xb9, 0x89, 0x19,
		0x4d, 0x12, 0x26, 0x13, 0x54, 0x20, 0x14, 0xf7, 0xe6, 0x52, 0x81, 0x19, 0xd3, 0xda, 0xbb, 0xc3,
		0x8d, 0x38, 0x1d, 0x16, 0xbd, 0x1e, 0xb5, 0x82, 0x19, 0x7d, 0x3c, 0x64, 0x2c, 0x5b, 0xa2, 0x6d,
		0xda, 0x66, 0x10, 0x52, 0xbb, 0xfc, 0x9f, 0xc2, 0x7f, 0x59, 0xbd, 0x62, 0x22, 0xd5, 0xfe, 0x24,
		0xea, 0xd4, 0x12, 0x8e, 0x92, 0xb8, 0x63, 0xcb, 0x78, 0x24, 0x86, 0xce, 0x2d, 0xe1, 0xe0, 0x93,
		0x1d, 0x5c, 0x88, 0xfa, 0xb0, 0xf5, 0xbc, 0x48, 0x65, 0x96, 0x38, 0x15, 0xd9, 0xac, 0x32, 0x73,
		0x06, 0x6f, 0xab, 0x3f, 0xbd, 0x51, 0xb0, 0xc1, 0x1c, 0x4d, 0xc5, 0xa6, 0x14, 0x5b, 0xb0, 0x92,
		0x39, 0xec, 0xeb, 0x37, 0xdb, 0xd3, 0xc7, 0x5f, 0x1a, 0x20, 0x35, 0x75, 0x48, 0x6d, 0x32, 0x26,
		0x20, 0x39, 0x50, 0x9b, 0x1a, 0x0d, 0x38, 0x0d, 0x3e, 0x36, 0x7c, 0x6c, 0xf8, 0xd8, 0xd0, 0xdc,
		0xc4, 0xdf, 0xc8, 0x77, 0x17, 0xbb, 0xb9, 0x64, 0xb9, 0xb9, 0x4f, 0x86, 0x62, 0x95, 0x85, 0x18,
		0xf5, 0x44, 0x14, 0x34, 0x05, 0xf5, 0x8c, 0x64, 0x97, 0xd4, 0xcc, 0x1c, 0x92, 0x5d, 0xd4, 0x99,
		0x2d, 0xe2, 0x64, 0x97, 0xa9, 0x03, 0x97, 0x01, 0x35, 0x92, 0x08, 0x65, 0x53, 0xa0, 0x6b, 0xa8,
		0x11, 0xa8, 0x11, 0xa8, 0x91, 0xa8, 0x6a, 0x64, 0xea, 0xc0, 0x65, 0x41, 0x8d, 0xac, 0xd4, 0x76,
		0x6f, 0xb9, 0xfe, 0x58, 0xa1, 0x0d, 0xdf, 0xd2, 0x15, 0x8d, 0xab, 0x38, 0x4a, 0x50, 0x1c, 0x50,
		0x1c, 0x2b, 0x3d, 0x25, 0xf2, 0xe5, 0xc0, 0x63, 0x81, 0xc7, 0x02, 0x8f, 0xa5, 0x9e, 0xc7, 0x52,
		0x9e, 0x2f, 0x87, 0xf4, 0xb2, 0x91, 0xce, 0x47, 0x7a, 0x19, 0x62, 0x4a, 0xf2, 0xaf, 0xe0, 0x91,
		0x5e, 0x86, 0xf4, 0xb2, 0xa5, 0xa3, 0x21, 0xbd, 0x2c, 0xda, 0xd1, 0x42, 0x7a, 0x59, 0x1a, 0x60,
		0x01, 0xd9, 0x58, 0xc0, 0x0b, 0xf0, 0x09, 0xe1, 0x13, 0xb2, 0xa3, 0x86, 0xf4, 0xb3, 0xb1, 0x90,
		0xbc, 0x04, 0xe5, 0x03, 0xe5, 0x03, 0x42, 0x2a, 0xbb, 0x84, 0x14, 0x51, 0x60, 0x15, 0x72, 0x7d,
		0xc0, 0xcb, 0x80, 0x97, 0x81, 0x92, 0x4b, 0x57, 0xc9, 0x21, 0xd7, 0x67, 0x62, 0x14, 0xe4, 0xfa,
		0x24, 0x19, 0x0b, 0xb9, 0x3e, 0xc8, 0xf5, 0x41, 0x6a, 0x0c, 0x3c, 0x38, 0x20, 0x1b, 0x78, 0x70,
		0xf0, 0xe0, 0x92, 0x7f, 0x63, 0xed, 0x33, 0x49, 0x56, 0xe8, 0x16, 0x15, 0x7f, 0x05, 0x69, 0x9b,
		0xb1, 0xfc, 0x4b, 0xbc, 0xcd, 0xda, 0x09, 0x6d, 0x92, 0xf6, 0xd3, 0x62, 0x85, 0xa5, 0xc5, 0x83,
		0xad, 0xf1, 0x61, 0x2a, 0x29, 0x2c, 0x9d, 0x82, 0xa1, 0x76, 0xcf, 0xb2, 0xe2, 0x7c, 0x75, 0x08,
		0x36, 0x82, 0xdb, 0x1e, 0xd2, 0x0d, 0x13, 0xaf, 0xd2, 0x35, 0xf4, 0x9e, 0x2f, 0x8d, 0x4f, 0x56,
		0xc4, 0xf6, 0x93, 0xae, 0x68, 0x0b, 0x57, 0xd8, 0x81, 0xe9, 0x7a, 0x54, 0xd5, 0xd4, 0xff, 0xce,
		0xe9, 0x49, 0xa1, 0xdd, 0x89, 0x96, 0xe9, 0x49, 0xd7, 0x7c, 0xea, 0xf9, 0x27, 0x44, 0x33, 0x6d,
		0xed, 0xb6, 0x2b, 0xec, 0x01, 0x36, 0xd0, 0x6e, 0x06, 0x67, 0x4c, 0xab, 0x0e, 0xcf, 0xd8, 0xe9,
		0x37, 0xfb, 0x45, 0xca, 0xae, 0x77, 0xba, 0xbb, 0xfb, 0x6c, 0xca, 0x97, 0xde, 0xd3, 0x4e, 0xd3,
		0xe9, 0x4c, 0x9c, 0xdb, 0xdd, 0x6e, 0xef, 0xc9, 0x32, 0x9b, 0xbb, 0x4f, 0x96, 0xf3, 0xb4, 0xdb,
		0x31, 0x3c, 0x29, 0xdc, 0xdd, 0x96, 0xd3, 0x1c, 0x9d, 0xd5, 0xc6, 0xe8, 0xac, 0x36, 0xdc, 0xa9,
		0x59, 0x77, 0x3a, 0xad, 0xff, 0x9f, 0x69, 0x4b, 0xe1, 0x8e, 0x8f, 0xaa, 0xee, 0xb4, 0x43, 0x51,
		0xd7, 0x5d, 0xf3, 0xc9, 0x4b, 0x39, 0x74, 0x77, 0xbc, 0x43, 0x59, 0x8a, 0xde, 0xcd, 0xd9, 0x16,
		0x72, 0x9b, 0x2f, 0xea, 0xe6, 0xc9, 0xab, 0xb6, 0x9a, 0x8b, 0x67, 0x06, 0x95, 0x9b, 0xbf, 0x42,
		0xa4, 0xdc, 0x02, 0xb7, 0xd7, 0x94, 0xf6, 0xa8, 0xcb, 0xec, 0x60, 0xb2, 0x91, 0x0c, 0x35, 0x1e,
		0xfc, 0x91, 0xcf, 0xc7, 0x03, 0xa3, 0x11, 0xe5, 0xfc, 0xf2, 0xb3, 0x35, 0xa5, 0x8c, 0xda, 0x89,
		0x12, 0xed, 0x27, 0xd1, 0x7e, 0x72, 0xa1, 0x20, 0xc5, 0xec, 0x39, 0x89, 0x46, 0x93, 0x68, 0x34,
		0x99, 0xcc, 0x60, 0xa2, 0xd1, 0x24, 0x37, 0xbf, 0x86, 0xdc, 0x37, 0x66, 0xde, 0x0c, 0x49, 0xb3,
		0xbf, 0xe2, 0xc1, 0xd0, 0x68, 0x32, 0x81, 0x35, 0x84, 0xf2, 0x80, 0xf2, 0x88, 0xab, 0x3c, 0x90,
		0x38, 0x4b, 0x71, 0x80, 0x28, 0x0e, 0x12, 0xed, 0x81, 0xa2, 0x3a, 0x58, 0xe4, 0x07, 0x8c, 0xfc,
		0xa0, 0x91, 0x1f, 0xb8, 0xf8, 0x17, 0x28, 0x5a, 0x26, 0x6e, 0xb9, 0xcc, 0x96, 0xb0, 0xa5, 0x29,
		0xdf, 0x88, 0x6e, 0xba, 0x92, 0x84, 0x82, 0x54, 0x87, 0x8f, 0xf2, 0xc9, 0xf0, 0x04, 0x5d, 0x34,
		0xc8, 0xd9, 0xc5, 0xc5, 0x5d, 0xe5, 0xfe, 0xbe, 0x71, 0x79, 0x76, 0x5d, 0xbd, 0xfa, 0x33, 0xa9,
		0x1c, 0x7e, 0x35, 0xac, 0x5e, 0x40, 0x93, 0x3c, 0x26, 0x8e, 0xb4, 0x48, 0x1e, 0x59, 0x32, 0xf5,
		0x9e, 0xd5, 0xda, 0xd7, 0x72, 0x21, 0xf1, 0x90, 0xfd, 0x8f, 0x19, 0x7c, 0xaf, 0xc3, 0x75, 0x7c,
		0xaf, 0xab, 0x52, 0xa3, 0xf2, 0xf0, 0x7b, 0xe5, 0xee, 0xa6, 0xf2, 0xb0, 0x8e, 0xaf, 0x77, 0x5d,
		0xbb, 0xba, 0x27, 0x78, 0xaf, 0x44, 0x23, 0xd4, 0xd1, 0x9f, 0x2d, 0x0f, 0x95, 0x81, 0xe9, 0x42,
		0x9f, 0x10, 0xf6, 0x04, 0x40, 0x08, 0x40, 0x98, 0x4c, 0x6e, 0x32, 0x1c, 0xf6, 0x34, 0x3a, 0xde,
		0x5e, 0xf8, 0xd3, 0x88, 0x0a, 0x1a, 0xa0, 0xd8, 0xb6, 0x19, 0x37, 0x5c, 0x15, 0x9a, 0x7b, 0xf3,
		0xe2, 0xb9, 0xa6, 0xe3, 0xe7, 0xb2, 0x40, 0x1f, 0x26, 0x2f, 0xdc, 0x89, 0xa2, 0x9d, 0xa0, 0x10,
		0x71, 0xff, 0xc0, 0x61, 0x98, 0x16, 0xdc, 0x3f, 0xa0, 0x60, 0x27, 0x0a, 0x76, 0x42, 0x69, 0xa8,
		0x50, 0x1a, 0xb8, 0x77, 0x80, 0x9b, 0x09, 0x37, 0x73, 0xad, 0xdc, 0x4c, 0xdc, 0x3b, 0x44, 0x1a,
		0x15, 0xf7, 0x0e, 0x29, 0xbc, 0x17, 0xee, 0x1d, 0xf2, 0xf7, 0x7a, 0x1b, 0x79, 0xef, 0x00, 0x9a,
		0x1e, 0xf8, 0x09, 0xf8, 0x69, 0xa3, 0xf0, 0xd3, 0x66, 0xd2, 0xf4, 0x60, 0xb5, 0x57, 0x65, 0xb5,
		0xf3, 0x97, 0x8f, 0x8c, 0xf4, 0xe3, 0x8c, 0xa6, 0x1f, 0x67, 0x28, 0x09, 0x71, 0x28, 0xdd, 0xc4,
		0xe9, 0x86, 0x48, 0x32, 0x1c, 0x2d, 0x2f, 0x47, 0x66, 0xe1, 0x77, 0xcb, 0xb0, 0x23, 0x24, 0x16,
		0x0e, 0x7e, 0x3d, 0x1f, 0x79, 0x85, 0xfe, 0xb3, 0xae, 0x65, 0x52, 0x61, 0xf0, 0x62, 0x59, 0xc9,
		0x28, 0x0c, 0x1e, 0x26, 0x72, 0x42, 0xe1, 0x8a, 0x7b, 0xa3, 0xe5, 0x20, 0x9f, 0x30, 0xc2, 0xab,
		0x68, 0x6b, 0x95, 0x4c, 0xb8, 0x9a, 0x18, 0xf2, 0xa0, 0x92, 0xc8, 0x99, 0x84, 0x48, 0xfe, 0xe1,
		0x13, 0x69, 0x2a, 0x47, 0x37, 0xfb, 0x37, 0x70, 0xd1, 0x44, 0x5e, 0x8d, 0x9b, 0x13, 0xfb, 0xfa,
		0x6d, 0x88, 0xba, 0x12, 0xd2, 0x45, 0xc1, 0x28, 0xa0, 0x8a, 0x12, 0x1c, 0x1b, 0xf0, 0x44, 0xf1,
		0x8e, 0x55, 0xde, 0x49, 0x22, 0x6f, 0xd0, 0x5c, 0x88, 0x80, 0x23, 0x3a, 0x46, 0x58, 0xa5, 0xa6,
		0xae, 0x1e, 0xa8, 0x34, 0x64, 0xcf, 0x23, 0xa8, 0x04, 0x3a, 0x18, 0x27, 0xcd, 0xd6, 0x37, 0x67,
		0xe7, 0x0f, 0xd5, 0xaf, 0xe8, 0x95, 0x07, 0x9d, 0x0f, 0x9d, 0xaf, 0x48, 0xe7, 0x0b, 0xbb, 0xd7,
		0x11, 0x6e, 0x92, 0xa6, 0x57, 0xda, 0x06, 0xf4, 0xc8, 0x0b, 0xb4, 0x12, 0x55, 0x77, 0xbc, 0xfb,
		0x2f, 0xf7, 0xb5, 0xca, 0xcd, 0x45, 0xe5, 0x62, 0x8d, 0x5a, 0xe3, 0x05, 0x0b, 0x44, 0xd3, 0x14,
		0x6f, 0xbc, 0x3c, 0xb9, 0xeb, 0x88, 0x07, 0xfc, 0x12, 0x07, 0xbf, 0xf8, 0x8a, 0x57, 0x37, 0x5b,
		0xc9, 0x01, 0xcc, 0x68, 0x20, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xa5, 0x87, 0x67, 0xf2, 0x00,
		0x1d, 0x26, 0x18, 0xe2, 0xce, 0xb0, 0x9f, 0x45, 0xe2, 0xb8, 0x45, 0x02, 0x93, 0x76, 0x6d, 0xda,
		0x24, 0xb6, 0x51, 0x0b, 0xc3, 0x31, 0xa3, 0xd3, 0xae, 0x4b, 0xc7, 0xbb, 0x74, 0x8d, 0xa0, 0xb4,
		0xe7, 0x85, 0xf9, 0x6c, 0x26, 0xed, 0xd7, 0x32, 0x2d, 0x0c, 0xe2, 0xd9, 0x90, 0xe6, 0x77, 0x11,
		0xe9, 0x62, 0x98, 0x11, 0xa4, 0x68, 0xc3, 0xab, 0x73, 0xfa, 0xad, 0x28, 0xef, 0x9d, 0x94, 0x37,
		0x6f, 0x37, 0x52, 0x82, 0x53, 0x75, 0xc0, 0x29, 0x0d, 0xf1, 0x48, 0xbf, 0x08, 0x29, 0x08, 0x6e,
		0xf2, 0x83, 0xff, 0xcf, 0x50, 0x8e, 0x6d, 0x47, 0x74, 0x9e, 0x84, 0xeb, 0xc5, 0xbf, 0xa6, 0x1b,
		0x0d, 0x80, 0x7b, 0x3a, 0x46, 0xac, 0x89, 0x7b, 0x3a, 0x4d, 0xe5, 0x3d, 0xdd, 0x40, 0xa6, 0x93,
		0xfb, 0x6b, 0xc3, 0x71, 0x92, 0xb9, 0x6b, 0xc5, 0xa4, 0xee, 0x5a, 0x09, 0xee, 0x1a, 0xdc, 0x35,
		0x45, 0xd0, 0x24, 0xee, 0x91, 0x1b, 0x9b, 0xdc, 0x58, 0x89, 0xdb, 0x4b, 0xe5, 0x2e, 0x4e, 0x22,
		0x37, 0xf1, 0x41, 0x24, 0x3b, 0x90, 0x94, 0x07, 0x73, 0xd1, 0x01, 0x35, 0xdb, 0x14, 0x0c, 0x30,
		0x61, 0xa7, 0x48, 0x96, 0xe3, 0xca, 0x76, 0x6c, 0x97, 0x1d, 0x5f, 0xb3, 0x9d, 0x76, 0xfe, 0x55,
		0x52, 0x22, 0x3d, 0xe9, 0xa1, 0x0e, 0x07, 0x0a, 0xda, 0xd6, 0xb4, 0x0d, 0x4a, 0xf1, 0x08, 0xf3,
		0x67, 0xc3, 0xa1, 0x89, 0x76, 0x31, 0x19, 0x59, 0x4a, 0x06, 0x5c, 0x55, 0x28, 0x01, 0x36, 0x65,
		0xc0, 0xa5, 0x14, 0xd8, 0x95, 0x03, 0xbb, 0x92, 0xe0, 0x54, 0x16, 0x34, 0x4a, 0x83, 0x90, 0xe0,
		0xd2, 0x48, 0x88, 0xdc, 0xa5, 0xd2, 0xfa, 0x64, 0x78, 0x42, 0x0f, 0xcf, 0xbf, 0x9e, 0x2c, 0x0b,
		0x6c, 0xa9, 0xf1, 0x3f, 0x22, 0x1c, 0x73, 0xb2, 0x41, 0xb7, 0xd9, 0x3e, 0x0d, 0x9f, 0xdd, 0x9b,
		0xfd, 0x60, 0xf8, 0xf7, 0xf8, 0x3d, 0xb7, 0xe9, 0x65, 0x22, 0x5d, 0x53, 0x44, 0x44, 0x7d, 0xf1,
		0x33, 0x3c, 0x43, 0x5a, 0x64, 0xf8, 0xdf, 0x38, 0xe9, 0x67, 0x74, 0x0b, 0xdf, 0x47, 0xbb, 0x76,
		0x15, 0xed, 0xda, 0xa3, 0x25, 0xaa, 0x2d, 0x1f, 0x2a, 0x72, 0xe2, 0x1a, 0xd5, 0xce, 0x51, 0xf1,
		0xca, 0x8a, 0x0e, 0x55, 0x12, 0x32, 0xe1, 0xe7, 0x59, 0x70, 0x5f, 0x2d, 0xc3, 0x6e, 0x5c, 0x0f,
		0x26, 0x01, 0x11, 0xae, 0x60, 0x47, 0x51, 0x32, 0x4e, 0x09, 0x93, 0x00, 0x16, 0x9c, 0x18, 0xd6,
		0x23, 0x5b, 0xe5, 0x97, 0xe2, 0x82, 0x6c, 0x15, 0x30, 0xe0, 0xe9, 0x1c, 0xab, 0x74, 0xe0, 0xef,
		0x1a, 0x65, 0xab, 0x20, 0xb9, 0x23, 0xa2, 0xd4, 0x22, 0xb9, 0x03, 0x2a, 0x12, 0x2a, 0x52, 0xa1,
		0x8a, 0x44, 0x72, 0xc7, 0x4f, 0x47, 0x43, 0x72, 0x47, 0x04, 0xb5, 0xbd, 0xf1, 0xc9, 0x1d, 0xc8,
		0x85, 0x80, 0xdd, 0x84, 0xdd, 0xdc, 0x08, 0xbb, 0x89, 0x5c, 0x88, 0xa9, 0x07, 0x41, 0x2e, 0x04,
		0x72, 0x21, 0xd6, 0x6f, 0x37, 0xf2, 0x95, 0x0b, 0x81, 0x1b, 0x93, 0xd5, 0x6e, 0x4c, 0x78, 0x0b,
		0x99, 0x46, 0xb8, 0x2f, 0x89, 0x8b, 0xe4, 0x12, 0x1a, 0xa1, 0xbc, 0xf6, 0xe6, 0xc2, 0x9d, 0x09,
		0x29, 0x02, 0x43, 0x57, 0xae, 0xc5, 0xc2, 0x3a, 0xd7, 0x95, 0x6b, 0x74, 0xca, 0xf2, 0x54, 0xfa,
		0x38, 0x9a, 0x66, 0x40, 0xa9, 0xe3, 0x35, 0x2f, 0x75, 0x3c, 0xb6, 0x7e, 0x74, 0x85, 0x8e, 0xbf,
		0xae, 0xac, 0x75, 0xd6, 0xbb, 0xce, 0xf1, 0xa0, 0xbc, 0x70, 0xdc, 0x32, 0xc7, 0x1f, 0x22, 0xbc,
		0xf0, 0xe8, 0x70, 0xff, 0xe4, 0x42, 0x78, 0xb5, 0x93, 0xbc, 0xfa, 0xc9, 0x4d, 0x74, 0x52, 0x23,
		0x9c, 0xcc, 0x08, 0x27, 0x71, 0xd9, 0xe2, 0xac, 0x28, 0x05, 0xb4, 0xbb, 0xff, 0x93, 0xe3, 0xf4,
		0xf3, 0xe3, 0xb3, 0x58, 0x60, 0xe6, 0xc5, 0x61, 0xfa, 0x93, 0x99, 0x77, 0xff, 0xd5, 0x3b, 0x27,
		0x7a, 0xd7, 0xe9, 0x27, 0x1c, 0x3f, 0xc7, 0xc4, 0x33, 0x14, 0x9c, 0xae, 0x34, 0x9b, 0x86, 0xa5,
		0x1b, 0x9d, 0xae, 0x35, 0xe8, 0xc2, 0x30, 0xfb, 0x18, 0x63, 0x00, 0x37, 0xf7, 0xab, 0x33, 0xef,
		0xb2, 0x38, 0x92, 0x67, 0x29, 0xea, 0xfc, 0x19, 0xaa, 0x9c, 0x44, 0x8d, 0x4e, 0x57, 0xfa, 0x73,
		0x2e, 0xd8, 0xa8, 0x5f, 0x01, 0xc3, 0x95, 0x81, 0xdf, 0xca, 0xc0, 0x6e, 0x16, 0xb8, 0x8d, 0x9e,
		0x2d, 0xe2, 0xae, 0x2f, 0x8b, 0x47, 0x29, 0x84, 0x6b, 0xbb, 0xfc, 0x36, 0x78, 0xdc, 0x78, 0x70,
		0xfc, 0xbb, 0xcb, 0xb4, 0xcd, 0x4f, 0x43, 0xab, 0x7e, 0xe9, 0x0e, 0xac, 0x02, 0xfb, 0x57, 0xdb,
		0xa8, 0xa8, 0x48, 0x3e, 0x32, 0x62, 0x8f, 0x8c, 0xcc, 0x57, 0xde, 0xc8, 0x78, 0x7a, 0xfe, 0x57,
		0x01, 0x47, 0x85, 0xe5, 0xe7, 0xed, 0xd7, 0xfb, 0x9d, 0x93, 0x4a, 0xf8, 0xbf, 0x16, 0x87, 0xb8,
		0x0e, 0x5e, 0xfa, 0xc5, 0xf0, 0x7f, 0x29, 0x2e, 0x34, 0xb8, 0x68, 0xe5, 0x7a, 0xf8, 0x11, 0x0b,
		0x8d, 0xc7, 0x2b, 0x30, 0x9e, 0xf5, 0x9a, 0xf8, 0xab, 0x0b, 0x5c, 0x52, 0x66, 0x21, 0x7b, 0x65,
		0xf1, 0x57, 0x16, 0x48, 0x1e, 0xa7, 0x35, 0x72, 0x65, 0x7c, 0xa3, 0xd3, 0xd5, 0x3b, 0x4e, 0x2b,
		0x41, 0xb0, 0x71, 0x38, 0xc2, 0x66, 0x70, 0x67, 0xd1, 0x85, 0x7b, 0x73, 0xe8, 0xb3, 0xc8, 0xc2,
		0x9f, 0x17, 0x06, 0x2d, 0x59, 0x47, 0xdc, 0x24, 0x9d, 0x70, 0x69, 0x3a, 0xe0, 0x86, 0x2f, 0x72,
		0x5b, 0x7b, 0xa8, 0x9e, 0x9f, 0x5d, 0x35, 0xce, 0xae, 0x6b, 0x57, 0xd5, 0xcb, 0x6a, 0xe5, 0xae,
		0x71, 0x7d, 0x7b, 0x11, 0x37, 0x20, 0x87, 0xa2, 0xf3, 0x2d, 0x51, 0x6d, 0x85, 0xf3, 0xdb, 0x9b,
		0xfb, 0x87, 0xb3, 0x9b, 0x87, 0xc6, 0xe7, 0xb3, 0xea, 0x4d, 0x82, 0x3b, 0xf4, 0x8f, 0x99, 0x79,
		0x91, 0xda, 0xed, 0xbf, 0x2b, 0x77, 0x79, 0x7e, 0x93, 0x8b, 0x3f, 0x6f, 0xce, 0xae, 0xab, 0xe7,
		0x49, 0x77, 0x24, 0x5e, 0x04, 0xeb, 0x9a, 0xdd, 0xe0, 0x91, 0x55, 0x47, 0xe3, 0xb9, 0x7e, 0x13,
		0xb6, 0xf1, 0x64, 0x89, 0x04, 0xd7, 0x6f, 0xa3, 0x01, 0x00, 0x21, 0x00, 0x21, 0xd6, 0x14, 0x42,
		0x3c, 0x39, 0x8e, 0x25, 0xe2, 0x5d, 0xbb, 0x8e, 0xe0, 0x43, 0x11, 0x3a, 0x2a, 0xbe, 0x8e, 0x6a,
		0x9b, 0x4f, 0xc2, 0xd5, 0xe5, 0x5b, 0x57, 0xe8, 0x5d, 0xd7, 0x69, 0x9b, 0x56, 0x02, 0x97, 0x67,
		0xc1, 0x58, 0xd0, 0x5c, 0xd0, 0x5c, 0x70, 0x7e, 0xb2, 0xed, 0xfc, 0x5c, 0x56, 0x3f, 0x55, 0xee,
		0x1a, 0x0f, 0x7f, 0xd6, 0x2a, 0x8d, 0xda, 0xdd, 0xed, 0x65, 0xf5, 0x6a, 0x0d, 0x1c, 0x9f, 0x8b,
		0xfb, 0xcb, 0x3c, 0x3b, 0x09, 0x57, 0x95, 0xb3, 0x5c, 0x3f, 0xff, 0xfd, 0xfd, 0x75, 0xae, 0x9f,
		0xff, 0xe1, 0xdf, 0xe7, 0xf9, 0x7e, 0xfc, 0xbb, 0x7b, 0xf8, 0x96, 0x6b, 0x8d, 0xdb, 0x9e, 0x0d,
		0xd3, 0xd6, 0xdd, 0x61, 0x74, 0x7e, 0x4c, 0xbc, 0x36, 0x31, 0x06, 0x70, 0x1a, 0x70, 0x1a, 0x70,
		0x5a, 0xb6, 0x71, 0xda, 0xe7, 0xb3, 0xea, 0x4d, 0xe3, 0xee, 0xec, 0xe6, 0xf3, 0x1a, 0xe0, 0xb3,
		0xcb, 0xea, 0x1f, 0x95, 0x8b, 0xc6, 0xc4, 0x1b, 0xe5, 0xd8, 0xda, 0xfe, 0x5e, 0xfd, 0xfc, 0xfb,
		0x9a, 0xbc, 0xca, 0xd5, 0xed, 0xbf, 0xd7, 0xe4, 0x4d, 0xae, 0xab, 0x44, 0xe2, 0x05, 0x30, 0x94,
		0x7d, 0x30, 0xd4, 0x31, 0x5e, 0x75, 0x1f, 0xcc, 0x24, 0x68, 0x91, 0x31, 0x1a, 0x01, 0x40, 0x08,
		0x40, 0x68, 0x4d, 0x81, 0x50, 0x4b, 0x34, 0xcd, 0x8e, 0x61, 0x1d, 0x96, 0x93, 0xc0, 0xa0, 0x18,
		0x85, 0xf1, 0xe7, 0x13, 0x32, 0xe3, 0x0c, 0x92, 0x2c, 0x13, 0x39, 0x59, 0x99, 0xd3, 0xe4, 0x49,
		0xf7, 0xa3, 0x34, 0xd7, 0x93, 0x52, 0x69, 0x7f, 0xff, 0xa8, 0xb4, 0xb7, 0x7f, 0x78, 0x7c, 0x50,
		0x3e, 0x3a, 0x3a, 0x38, 0xde, 0x3b, 0x4e, 0x98, 0x2c, 0x4f, 0xb1, 0xb8, 0xd3, 0xe2, 0x32, 0xce,
		0x72, 0xf5, 0x0f, 0x55, 0x1a, 0x18, 0x80, 0x24, 0xc5, 0xf8, 0x27, 0x6b, 0x7e, 0x94, 0xe1, 0x35,
		0x4f, 0x96, 0x59, 0xac, 0xaa, 0xae, 0x48, 0x1d, 0x70, 0x25, 0x19, 0x5c, 0x71, 0x7a, 0xb2, 0xdb,
		0x93, 0x7a, 0xd7, 0xf9, 0x3b, 0x46, 0x17, 0xa3, 0x29, 0xd8, 0x32, 0x35, 0x12, 0xe0, 0x0b, 0xe0,
		0x0b, 0xe0, 0x0b, 0xe0, 0x0b, 0xe0, 0x0b, 0xe0, 0x0b, 0xe0, 0x0b, 0xe0, 0x0b, 0x0b, 0x7c, 0x31,
		0xed, 0xa4, 0x6c, 0xcb, 0x68, 0x04, 0xc0, 0x15, 0xc0, 0x15, 0xc0, 0x15, 0xc0, 0x15, 0xc0, 0x15,
		0xc0, 0x15, 0xc0, 0x15, 0xc0, 0x15, 0x0e, 0xb8, 0x12, 0xab, 0x47, 0x46, 0x92, 0xde, 0x18, 0x80,
		0x29, 0x80, 0x29, 0xb9, 0x81, 0x29, 0xb1, 0x3b, 0x58, 0xc4, 0xec, 0x5c, 0x01, 0xe5, 0x34, 0xf5,
		0x78, 0xd2, 0x70, 0x9f, 0x85, 0x4c, 0xe8, 0x4e, 0x4d, 0x0e, 0x02, 0x55, 0x05, 0x55, 0x05, 0x8f,
		0x0a, 0x1e, 0x15, 0x93, 0x47, 0xb5, 0xb7, 0xbe, 0x58, 0x1e, 0x0e, 0x14, 0x1c, 0x28, 0x60, 0x94,
		0x9f, 0x63, 0x14, 0x5d, 0x9a, 0x96, 0x24, 0x01, 0x2a, 0x83, 0x91, 0x80, 0x56, 0x80, 0x56, 0x80,
		0x56, 0x80, 0x56, 0x98, 0xd0, 0x0a, 0xf8, 0x5f, 0xc0, 0x17, 0xc0, 0x17, 0xc0, 0x17, 0x1f, 0x74,
		0xd0, 0x04, 0xdc, 0x2d, 0x1a, 0x0c, 0x20, 0x06, 0x20, 0x06, 0x20, 0x06, 0x20, 0x06, 0x20, 0x06,
		0x20, 0x06, 0x20, 0x06, 0x20, 0x86, 0x05, 0xc4, 0xc4, 0x51, 0xe5, 0x63, 0xd4, 0xe2, 0x7f, 0x1b,
		0x30, 0x05, 0x30, 0x05, 0x25, 0x1e, 0x7e, 0x06, 0x54, 0xb2, 0x58, 0x87, 0xf8, 0xe1, 0xcf, 0xda,
		0x1a, 0x94, 0x7b, 0xf8, 0x74, 0x76, 0xfe, 0xaf, 0x7f, 0x9f, 0xdd, 0x5d, 0x34, 0xee, 0xce, 0xae,
		0xcf, 0x72, 0x5d, 0x88, 0xb8, 0x72, 0x71, 0x79, 0x96, 0xe7, 0xe7, 0xbf, 0xbc, 0xbd, 0x5b, 0x8f,
		0x8d, 0xf8, 0xfd, 0xcf, 0x4f, 0x77, 0xd5, 0x0b, 0x14, 0x76, 0xc8, 0x1f, 0xec, 0xc9, 0x78, 0xfb,
		0xbb, 0xb9, 0x3e, 0x52, 0xbb, 0xf3, 0x9f, 0x8c, 0x7b, 0x1b, 0x8d, 0x7f, 0x1c, 0x76, 0x73, 0x24,
		0xeb, 0x58, 0xb7, 0x42, 0x5f, 0x9a, 0x48, 0xa1, 0x8d, 0x71, 0x42, 0x1a, 0x23, 0xa2, 0x40, 0xb4,
		0x54, 0x61, 0x44, 0x75, 0x19, 0x6b, 0xa9, 0x12, 0x19, 0xb5, 0x25, 0xe8, 0xbb, 0x1a, 0xa7, 0xdf,
		0xea, 0x82, 0x3e, 0xab, 0x81, 0xe0, 0x2b, 0x3c, 0x9e, 0x83, 0x3e, 0xd0, 0x91, 0xcf, 0xe7, 0xe0,
		0x6b, 0xcc, 0x3d, 0x8f, 0x4a, 0x38, 0xa0, 0x6b, 0x7e, 0x40, 0xa3, 0xf7, 0x3c, 0x6a, 0xca, 0x9e,
		0x61, 0x25, 0x8c, 0x45, 0x9d, 0x1c, 0x24, 0x1e, 0xe3, 0x50, 0x04, 0xe3, 0x00, 0xc6, 0x81, 0x17,
		0x35, 0x47, 0x3d, 0x1a, 0xe3, 0x23, 0xf2, 0xfd, 0x39, 0xb9, 0x93, 0xef, 0x0f, 0x12, 0x73, 0x79,
		0xe3, 0x91, 0x72, 0x89, 0x8f, 0x0a, 0xc5, 0x91, 0x59, 0x74, 0x74, 0xe4, 0x5b, 0x57, 0x78, 0x85,
		0x04, 0xa4, 0x7f, 0xc2, 0x03, 0x44, 0x7e, 0x90, 0xc8, 0x0f, 0xd4, 0xb2, 0x83, 0x35, 0x58, 0x39,
		0xd5, 0x9c, 0x7f, 0x4c, 0xa9, 0x89, 0x4d, 0xf0, 0xcd, 0xc9, 0x4c, 0x92, 0xfb, 0xc8, 0x39, 0x3b,
		0x93, 0xe0, 0x06, 0x86, 0xf4, 0x3a, 0x27, 0xe1, 0x3d, 0x25, 0x0d, 0xaf, 0xa2, 0x51, 0xdd, 0x5b,
		0x4e, 0xb3, 0x8f, 0x1c, 0xf7, 0x97, 0x2c, 0x9b, 0x30, 0x2d, 0x6e, 0x44, 0xf7, 0x99, 0x04, 0x6c,
		0xd9, 0x78, 0x6f, 0x08, 0xee, 0x37, 0x57, 0xd8, 0x9b, 0xa3, 0x1c, 0xed, 0x4d, 0xb2, 0x7b, 0xcf,
		0x64, 0xba, 0x30, 0xf9, 0xb7, 0xeb, 0x8a, 0xee, 0x5d, 0x63, 0x08, 0x5f, 0x61, 0xd0, 0xa3, 0x5d,
		0x26, 0xc7, 0x3a, 0xa3, 0x81, 0x80, 0x77, 0x80, 0x77, 0x80, 0x77, 0x80, 0x77, 0x80, 0x77, 0x80,
		0x77, 0x80, 0x77, 0x80, 0x77, 0x32, 0x87, 0x77, 0xa4, 0x70, 0xbf, 0x1b, 0x16, 0x05, 0xe0, 0x19,
		0x8e, 0x04, 0xc4, 0x03, 0xc4, 0x03, 0xc4, 0x13, 0x59, 0x66, 0x3c, 0x69, 0x48, 0x3d, 0xe1, 0x21,
		0x9a, 0x3c, 0x48, 0x09, 0x6c, 0x6f, 0xe1, 0x8b, 0x3d, 0x50, 0xe5, 0x05, 0xdb, 0xb0, 0x1d, 0x4f,
		0x34, 0x1d, 0xbb, 0x95, 0x48, 0x96, 0xd7, 0x1b, 0xf7, 0xec, 0x71, 0x59, 0xd2, 0xbd, 0xcc, 0x5a,
		0xd2, 0xac, 0xc2, 0x9c, 0xe2, 0x71, 0xb9, 0x7c, 0x78, 0x54, 0x2e, 0xef, 0x1d, 0xed, 0x1f, 0xed,
		0x9d, 0x1c, 0x1c, 0x14, 0x0f, 0xe3, 0xc4, 0x36, 0xe6, 0x7d, 0x77, 0x80, 0x73, 0xe6, 0x16, 0xb9,
		0x93, 0x40, 0xda, 0x26, 0x8b, 0xce, 0x03, 0xdd, 0x00, 0xdd, 0x00, 0xdd, 0x80, 0xcf, 0x01, 0x9f,
		0x03, 0x3e, 0x07, 0x7c, 0x0e, 0x70, 0x4e, 0x06, 0x71, 0x8e, 0x2e, 0xcd, 0x8e, 0x20, 0x01, 0x3b,
		0x83, 0x91, 0x80, 0x78, 0x80, 0x78, 0x80, 0x78, 0x22, 0xcb, 0x8c, 0x7f, 0x76, 0xa4, 0xd9, 0xfc,
		0xcb, 0x23, 0xc1, 0x3c, 0x60, 0x73, 0xc0, 0xe6, 0x80, 0xcd, 0x01, 0x9b, 0x03, 0x94, 0x33, 0x6c,
		0xc4, 0x43, 0x00, 0x70, 0x22, 0x07, 0xea, 0x03, 0xdb, 0x00, 0xdb, 0x00, 0xdb, 0x80, 0xcd, 0x01,
		0x9b, 0x03, 0x36, 0x07, 0x6c, 0x0e, 0x70, 0x8e, 0x0a, 0x9c, 0x43, 0xc5, 0xe6, 0x8c, 0x46, 0x02,
		0xe2, 0x01, 0xe2, 0x01, 0xe2, 0x01, 0x9b, 0x03, 0x36, 0x07, 0x6c, 0x0e, 0xd8, 0x1c, 0xa0, 0x1c,
		0x6a, 0x94, 0x93, 0xe9, 0xa2, 0x4f, 0x0c, 0xb5, 0x8f, 0x82, 0x9a, 0x25, 0xbb, 0xf1, 0x8b, 0x3f,
		0x0c, 0x9e, 0x4b, 0xba, 0xbd, 0xa6, 0xb4, 0x47, 0xb5, 0xf0, 0x06, 0x33, 0x9f, 0x8d, 0xe6, 0x68,
		0x4c, 0xfc, 0x14, 0xcc, 0xf3, 0xd9, 0x9f, 0x26, 0x03, 0xb5, 0x39, 0x27, 0xde, 0x3a, 0x61, 0x7f,
		0x94, 0xb9, 0x91, 0x50, 0x41, 0x83, 0x17, 0x80, 0xa2, 0x82, 0x46, 0x4c, 0x15, 0x84, 0x0a, 0x1a,
		0xf0, 0xe0, 0xe0, 0xc1, 0xe5, 0xd0, 0x83, 0x03, 0x67, 0x9d, 0x3f, 0xef, 0x0d, 0x9c, 0x35, 0x38,
		0x6b, 0x70, 0xd6, 0x29, 0x7a, 0x73, 0xa8, 0xa0, 0x01, 0xbc, 0x03, 0xbc, 0x03, 0xbc, 0x03, 0xbc,
		0x03, 0xbc, 0x03, 0xbc, 0x03, 0xbc, 0x03, 0xbc, 0xb3, 0x00, 0xef, 0xa0, 0x82, 0x06, 0x10, 0x0f,
		0x10, 0x0f, 0x2a, 0x68, 0x4c, 0x0e, 0x81, 0x5b, 0xfa, 0x28, 0xb6, 0x15, 0xb7, 0xf4, 0x99, 0x81,
		0x39, 0xb8, 0xa5, 0x07, 0xce, 0x59, 0xb8, 0xc8, 0xa8, 0xa0, 0x01, 0x74, 0x03, 0x74, 0x03, 0x3e,
		0x07, 0x7c, 0x0e, 0xf8, 0x1c, 0xf0, 0x39, 0xe0, 0x73, 0x50, 0x41, 0x63, 0x05, 0xb0, 0x83, 0x9c,
		0x0b, 0x20, 0x1e, 0x20, 0x9e, 0x98, 0x32, 0x83, 0x9c, 0x0b, 0xb0, 0x39, 0x60, 0x73, 0xc0, 0xe6,
		0x00, 0xe5, 0x30, 0xa0, 0x1c, 0x54, 0xd0, 0x00, 0xb6, 0x01, 0xb6, 0x01, 0x9b, 0x03, 0x36, 0x07,
		0x6c, 0x0e, 0xd8, 0x1c, 0xb0, 0x39, 0xa8, 0xa0, 0xf1, 0x6b, 0xb0, 0x03, 0x36, 0x07, 0x88, 0x07,
		0x88, 0x07, 0x6c, 0x0e, 0xd8, 0x1c, 0xb0, 0x39, 0x60, 0x73, 0x80, 0x72, 0x78, 0x50, 0xce, 0xc6,
		0x57, 0xd0, 0x88, 0x53, 0x01, 0x42, 0x8b, 0x59, 0x46, 0xe3, 0xc1, 0x9f, 0x2a, 0x0b, 0xa5, 0x34,
		0x3a, 0x5d, 0xbd, 0xe3, 0xb4, 0x44, 0x82, 0x12, 0x1a, 0xa3, 0x11, 0xe2, 0x95, 0xce, 0xd8, 0x43,
		0xe9, 0x0c, 0xd5, 0x88, 0x73, 0xd3, 0x4a, 0x67, 0xc4, 0xc6, 0x92, 0xe3, 0x0c, 0x89, 0x96, 0xb0,
		0xa5, 0x29, 0xdf, 0x5c, 0xd1, 0x8e, 0xb3, 0xf1, 0x23, 0xbe, 0x2c, 0x86, 0xd1, 0x2c, 0x54, 0x87,
		0x53, 0x7f, 0x32, 0x3c, 0x02, 0x67, 0xf2, 0xb6, 0xf6, 0x50, 0x3d, 0x3f, 0xbb, 0x6a, 0x9c, 0x5d,
		0xd7, 0xae, 0xaa, 0x97, 0xd5, 0xca, 0x5d, 0xe3, 0xfa, 0xf6, 0xa2, 0x12, 0x57, 0x8e, 0x02, 0x7c,
		0xe0, 0x25, 0x42, 0xa0, 0x09, 0x9d, 0xb0, 0xd1, 0x7b, 0x9d, 0xdf, 0xde, 0xdc, 0x3f, 0x9c, 0xdd,
		0x3c, 0x34, 0x3e, 0x9f, 0x55, 0x6f, 0x12, 0xf8, 0x38, 0x1f, 0x33, 0xf3, 0x22, 0xb5, 0xdb, 0x7f,
		0x57, 0xee, 0xf2, 0xfc, 0x26, 0x17, 0x7f, 0xde, 0x9c, 0x5d, 0x57, 0xcf, 0x93, 0xee, 0xc8, 0x07,
		0x35, 0x98, 0xa9, 0x9f, 0x01, 0x5b, 0xdc, 0x74, 0x3a, 0x5d, 0xc7, 0x16, 0x76, 0x82, 0x7a, 0x56,
		0xe3, 0x21, 0x60, 0x8d, 0x61, 0x8d, 0xd7, 0xd4, 0x1a, 0x5b, 0xc2, 0x68, 0x27, 0xb4, 0xc4, 0x31,
		0x48, 0xfa, 0x42, 0x2d, 0x74, 0x3e, 0x9a, 0x7a, 0xd7, 0x32, 0x64, 0xdb, 0x71, 0x3b, 0xa7, 0xe1,
		0x81, 0xf3, 0x16, 0x7f, 0x3c, 0xf5, 0x69, 0xe0, 0x21, 0x64, 0x40, 0xd1, 0x88, 0x67, 0x57, 0x78,
		0x9e, 0xde, 0x75, 0xdc, 0x04, 0xaa, 0x66, 0x72, 0x10, 0x28, 0x1b, 0x28, 0x1b, 0x28, 0x1b, 0x28,
		0x9b, 0x85, 0xca, 0xc6, 0x36, 0x9e, 0x2c, 0xd1, 0x4a, 0xa0, 0x68, 0x86, 0x03, 0x40, 0xc9, 0x40,
		0xc9, 0xac, 0xa9, 0x92, 0x79, 0x72, 0x1c, 0x4b, 0x18, 0x76, 0x12, 0x25, 0x53, 0xcc, 0xc0, 0x51,
		0x6f, 0x9b, 0x4f, 0xc2, 0x0d, 0xee, 0x19, 0xf5, 0xff, 0x8f, 0xbd, 0x7f, 0x6f, 0x6a, 0x1c, 0x49,
		0xbe, 0xc7, 0xe1, 0xff, 0xfb, 0x55, 0x38, 0x14, 0xfb, 0x89, 0x85, 0x9d, 0x16, 0x18, 0x63, 0xa0,
		0x21, 0x62, 0x63, 0x82, 0x8b, 0xe9, 0xf1, 0x77, 0xb9, 0xf8, 0x01, 0x77, 0xcf, 0x4c, 0xd0, 0x1e,
		0x87, 0xda, 0x2e, 0x40, 0xb1, 0x46, 0xf2, 0x4a, 0x72, 0x0f, 0x3c, 0x8d, 0xdf, 0xfb, 0x2f, 0x74,
		0xf1, 0xfd, 0x26, 0x55, 0x55, 0x96, 0x24, 0xfb, 0x74, 0x6c, 0xec, 0x80, 0xb1, 0xab, 0xe4, 0xaa,
		0xac, 0xcc, 0x93, 0x27, 0xb3, 0x32, 0xbb, 0x8e, 0xfd, 0x68, 0x76, 0x04, 0x68, 0xc5, 0x39, 0x63,
		0x41, 0x01, 0x40, 0x01, 0x80, 0x60, 0xcc, 0x36, 0xc1, 0x78, 0x59, 0x3d, 0xab, 0xdc, 0x35, 0xeb,
		0x7f, 0xd6, 0x2a, 0xcd, 0xda, 0xdd, 0xed, 0x65, 0xf5, 0x6a, 0x0d, 0xc8, 0xc5, 0x8b, 0xfb, 0xcb,
		0x3c, 0x13, 0x71, 0x57, 0x95, 0xd3, 0x5c, 0x3f, 0xff, 0xfd, 0xfd, 0x75, 0xae, 0x9f, 0xbf, 0xfe,
		0xfb, 0x79, 0xbe, 0x1f, 0xff, 0xee, 0x1e, 0xfc, 0x6d, 0x9c, 0x15, 0x0b, 0x62, 0xc8, 0x4e, 0x94,
		0x94, 0xc3, 0x09, 0x7b, 0xc6, 0xc6, 0x00, 0xdc, 0x01, 0xdc, 0x01, 0xdc, 0xc9, 0x36, 0xdc, 0xf9,
		0x7c, 0x5a, 0xbd, 0x69, 0xde, 0x9d, 0xde, 0x7c, 0x5e, 0x03, 0x98, 0x73, 0x59, 0xfd, 0xa3, 0x72,
		0xd1, 0x1c, 0xfb, 0x46, 0x39, 0x36, 0x5a, 0xbf, 0x55, 0x3f, 0xff, 0xb6, 0x26, 0x5f, 0xe5, 0xea,
		0xf6, 0xf7, 0x35, 0xf9, 0x26, 0xd7, 0x55, 0x49, 0xe2, 0xb5, 0x41, 0x98, 0xc2, 0xb4, 0x64, 0xc4,
		0x6a, 0x26, 0x46, 0x01, 0xae, 0x00, 0xae, 0x40, 0xb0, 0x66, 0x11, 0xa6, 0xd8, 0xec, 0x60, 0x8d,
		0x69, 0x75, 0x7b, 0x9e, 0xde, 0xb5, 0xff, 0x66, 0x8e, 0xde, 0xd2, 0xbf, 0x1b, 0x56, 0x5b, 0x44,
		0xe9, 0xcc, 0x8c, 0x85, 0xee, 0x6a, 0x50, 0x3d, 0xe8, 0xae, 0x36, 0x23, 0x33, 0xe8, 0xae, 0x86,
		0xdb, 0x7d, 0xa2, 0x07, 0x0b, 0xf5, 0x0c, 0x50, 0xcf, 0x40, 0xaa, 0xdb, 0x56, 0x40, 0x3d, 0x83,
		0x31, 0x71, 0x43, 0x3d, 0x83, 0x3c, 0xec, 0x0d, 0x6e, 0xfa, 0x11, 0x09, 0x1f, 0xba, 0xab, 0x01,
		0xef, 0x00, 0xef, 0x00, 0xef, 0x00, 0xef, 0x00, 0xef, 0x00, 0xef, 0x00, 0xef, 0x6c, 0x00, 0xde,
		0x41, 0x77, 0x35, 0x20, 0x1e, 0x20, 0x1e, 0x74, 0x57, 0x1b, 0x1f, 0x02, 0x15, 0x9c, 0x92, 0xd8,
		0x56, 0x54, 0x70, 0xca, 0x0c, 0xcc, 0x41, 0x05, 0x27, 0xe0, 0x9c, 0xb9, 0x8b, 0x8c, 0xee, 0x6a,
		0x40, 0x37, 0x40, 0x37, 0xe0, 0x73, 0xc0, 0xe7, 0x80, 0xcf, 0x01, 0x9f, 0x03, 0x3e, 0x07, 0xdd,
		0xd5, 0x62, 0x80, 0x1d, 0xd4, 0xe3, 0x06, 0xe2, 0x01, 0xe2, 0xe1, 0x94, 0x19, 0xd4, 0xe3, 0x06,
		0x9b, 0x03, 0x36, 0x07, 0x6c, 0x0e, 0x50, 0x0e, 0x01, 0xca, 0x41, 0x77, 0x35, 0x60, 0x1b, 0x60,
		0x1b, 0xb0, 0x39, 0x60, 0x73, 0xc0, 0xe6, 0x80, 0xcd, 0x01, 0x9b, 0x83, 0xee, 0x6a, 0xab, 0xc1,
		0x0e, 0xd8, 0x1c, 0x20, 0x1e, 0x20, 0x1e, 0xb0, 0x39, 0x60, 0x73, 0xc0, 0xe6, 0x80, 0xcd, 0x01,
		0xca, 0xa1, 0x41, 0x39, 0x9b, 0xd9, 0x5d, 0x4d, 0xb8, 0x06, 0x44, 0x21, 0x51, 0x7f, 0xb5, 0xaa,
		0x3f, 0x5d, 0xcd, 0x9f, 0xed, 0xfc, 0xcc, 0x9f, 0x2b, 0x63, 0x15, 0x35, 0x3a, 0x12, 0x2b, 0x6a,
		0x74, 0x50, 0x51, 0x43, 0x05, 0x20, 0x45, 0x45, 0x0d, 0x4e, 0x95, 0x84, 0x8a, 0x1a, 0xf0, 0xe8,
		0xe0, 0xd1, 0xe5, 0xd0, 0xa3, 0x03, 0x87, 0x9d, 0x3f, 0x6f, 0x0e, 0x1c, 0x36, 0x38, 0x6c, 0x70,
		0xd8, 0x29, 0x7a, 0x77, 0xa8, 0xa8, 0x01, 0xbc, 0x03, 0xbc, 0x03, 0xbc, 0x03, 0xbc, 0x03, 0xbc,
		0x03, 0xbc, 0x03, 0xbc, 0x03, 0xbc, 0x33, 0x07, 0xef, 0xa0, 0xa2, 0x06, 0x10, 0x0f, 0x10, 0x0f,
		0x2a, 0x6a, 0x8c, 0x0f, 0x81, 0xa8, 0x7d, 0x12, 0xdb, 0x8a, 0xa8, 0x7d, 0x66, 0x60, 0x0e, 0xa2,
		0xf6, 0xc0, 0x39, 0x73, 0x17, 0x19, 0x15, 0x35, 0x80, 0x6e, 0x80, 0x6e, 0xc0, 0xe7, 0x80, 0xcf,
		0x01, 0x9f, 0x03, 0x3e, 0x07, 0x7c, 0x0e, 0x2a, 0x6a, 0xc4, 0x00, 0x3b, 0xb8, 0x83, 0x01, 0xc4,
		0x03, 0xc4, 0xc3, 0x29, 0x33, 0xb8, 0x83, 0x01, 0x36, 0x07, 0x6c, 0x0e, 0xd8, 0x1c, 0xa0, 0x1c,
		0x02, 0x94, 0x83, 0x8a, 0x1a, 0xc0, 0x36, 0xc0, 0x36, 0x60, 0x73, 0xc0, 0xe6, 0x80, 0xcd, 0x01,
		0x9b, 0x03, 0x36, 0x07, 0x15, 0x35, 0x56, 0x83, 0x1d, 0xb0, 0x39, 0x40, 0x3c, 0x40, 0x3c, 0x60,
		0x73, 0xc0, 0xe6, 0x80, 0xcd, 0x01, 0x9b, 0x03, 0x94, 0x43, 0x83, 0x72, 0x50, 0x51, 0xa3, 0xa3,
		0xb2, 0xa2, 0xc6, 0x55, 0x16, 0x2b, 0x6a, 0x78, 0xb6, 0xc7, 0x91, 0x51, 0x3e, 0xb7, 0xa0, 0x46,
		0x38, 0x14, 0xea, 0x69, 0xd0, 0xc2, 0x51, 0xd4, 0xd3, 0xe0, 0x54, 0x48, 0xa8, 0xa7, 0x01, 0x7f,
		0x0e, 0xfe, 0x5c, 0x0e, 0xfd, 0x39, 0x30, 0xd8, 0xf9, 0xf3, 0xe5, 0xc0, 0x60, 0x83, 0xc1, 0x06,
		0x83, 0x9d, 0xa2, 0x6f, 0x87, 0x7a, 0x1a, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0,
		0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0x73, 0xf0, 0x0e, 0xea, 0x69, 0x00, 0xf1, 0x00, 0xf1,
		0xa0, 0x9e, 0xc6, 0xf8, 0x10, 0x88, 0xd9, 0x27, 0xb1, 0xad, 0x88, 0xd9, 0x67, 0x06, 0xe6, 0x20,
		0x66, 0x0f, 0x9c, 0x33, 0x77, 0x91, 0x51, 0x4f, 0x03, 0xe8, 0x06, 0xe8, 0x06, 0x7c, 0x0e, 0xf8,
		0x1c, 0xf0, 0x39, 0xe0, 0x73, 0xc0, 0xe7, 0xa0, 0x9e, 0x46, 0x0c, 0xb0, 0x83, 0x1b, 0x18, 0x40,
		0x3c, 0x40, 0x3c, 0x9c, 0x32, 0x83, 0x1b, 0x18, 0x60, 0x73, 0xc0, 0xe6, 0x80, 0xcd, 0x01, 0xca,
		0x21, 0x40, 0x39, 0xa8, 0xa7, 0x01, 0x6c, 0x03, 0x6c, 0x03, 0x36, 0x07, 0x6c, 0x0e, 0xd8, 0x1c,
		0xb0, 0x39, 0x60, 0x73, 0x50, 0x4f, 0x63, 0x35, 0xd8, 0x01, 0x9b, 0x03, 0xc4, 0x03, 0xc4, 0x03,
		0x36, 0x07, 0x6c, 0x0e, 0xd8, 0x1c, 0xb0, 0x39, 0x40, 0x39, 0x34, 0x28, 0x07, 0xf5, 0x34, 0x78,
		0x4a, 0x40, 0x14, 0x38, 0xcb, 0x69, 0xd4, 0x83, 0xb9, 0x32, 0x50, 0x4e, 0xa3, 0x63, 0xb8, 0xcc,
		0xd1, 0xbf, 0x9b, 0x86, 0xab, 0xb7, 0x7a, 0x8e, 0xc3, 0x38, 0xae, 0xd0, 0x0d, 0x6d, 0xed, 0x9c,
		0xb1, 0x50, 0x50, 0x83, 0x16, 0x8f, 0xa2, 0xa0, 0x06, 0xa7, 0x46, 0x42, 0x41, 0x0d, 0x38, 0x74,
		0x70, 0xe8, 0x72, 0xe8, 0xd0, 0x81, 0xc2, 0xce, 0x9f, 0x33, 0x07, 0x0a, 0x1b, 0x14, 0x36, 0x28,
		0xec, 0x14, 0x9d, 0x3b, 0x14, 0xd4, 0x00, 0xde, 0x01, 0xde, 0x01, 0xde, 0x01, 0xde, 0x01, 0xde,
		0x01, 0xde, 0x01, 0xde, 0x01, 0xde, 0x99, 0x83, 0x77, 0x50, 0x50, 0x03, 0x88, 0x07, 0x88, 0x07,
		0x05, 0x35, 0xc6, 0x87, 0x40, 0xd0, 0x3e, 0x89, 0x6d, 0x45, 0xd0, 0x3e, 0x33, 0x30, 0x07, 0x41,
		0x7b, 0xe0, 0x9c, 0xb9, 0x8b, 0x8c, 0x82, 0x1a, 0x40, 0x37, 0x40, 0x37, 0xe0, 0x73, 0xc0, 0xe7,
		0x80, 0xcf, 0x01, 0x9f, 0x03, 0x3e, 0x07, 0x05, 0x35, 0x62, 0x80, 0x1d, 0x5c, 0xc1, 0x00, 0xe2,
		0x01, 0xe2, 0xe1, 0x94, 0x19, 0x5c, 0xc1, 0x00, 0x9b, 0x03, 0x36, 0x07, 0x6c, 0x0e, 0x50, 0x0e,
		0x01, 0xca, 0x41, 0x41, 0x0d, 0x60, 0x1b, 0x60, 0x1b, 0xb0, 0x39, 0x60, 0x73, 0xc0, 0xe6, 0x80,
		0xcd, 0x01, 0x9b, 0x83, 0x82, 0x1a, 0xab, 0xc1, 0x0e, 0xd8, 0x1c, 0x20, 0x1e, 0x20, 0x1e, 0xb0,
		0x39, 0x60, 0x73, 0xc0, 0xe6, 0x80, 0xcd, 0x01, 0xca, 0xa1, 0x41, 0x39, 0x9b, 0x59, 0x50, 0x43,
		0xb8, 0x06, 0x44, 0x21, 0x51, 0x45, 0x8d, 0x2b, 0x7f, 0xba, 0x33, 0xd3, 0x70, 0xcf, 0xa3, 0xc9,
		0x32, 0x50, 0x52, 0xe3, 0xc5, 0x78, 0xd5, 0x9f, 0x0c, 0x0e, 0x1d, 0x3e, 0x11, 0x71, 0x0c, 0x46,
		0xe0, 0x2b, 0x9f, 0x51, 0x44, 0xf9, 0x0c, 0xd5, 0xa8, 0x73, 0xd3, 0xca, 0x67, 0x70, 0xe3, 0x49,
		0x29, 0xcc, 0x99, 0x08, 0x63, 0x26, 0x85, 0x08, 0x10, 0xc4, 0x8a, 0x02, 0x30, 0x5c, 0x06, 0x36,
		0xa4, 0x63, 0xc2, 0xa4, 0xb3, 0x2c, 0xd2, 0x98, 0x2f, 0x01, 0x30, 0x28, 0x05, 0x04, 0xd2, 0x31,
		0x5c, 0xa4, 0x6b, 0x2e, 0x86, 0xf5, 0xfa, 0x8a, 0xb0, 0x56, 0x23, 0x23, 0x56, 0xdf, 0xee, 0x79,
		0xc3, 0x72, 0x62, 0x62, 0xd6, 0x7f, 0x62, 0x24, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00,
		0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x80, 0x6c, 0xa3, 0x00, 0xd3, 0x12, 0xf5, 0xfd, 0x07, 0x23, 0xc0,
		0xea, 0xc3, 0xea, 0xc3, 0xea, 0xc3, 0xea, 0xc3, 0xea, 0xc3, 0xea, 0xc3, 0xea, 0x67, 0xda, 0xea,
		0x47, 0x81, 0x0a, 0x4e, 0x8b, 0x1f, 0x7c, 0x1a, 0xd6, 0x1e, 0xd6, 0x7e, 0x4d, 0xad, 0xbd, 0xeb,
		0x39, 0xa6, 0xf5, 0x24, 0x62, 0xea, 0x3f, 0x65, 0xe0, 0x8c, 0x0f, 0xa2, 0xa0, 0x0e, 0xf3, 0x7a,
		0x8e, 0xa5, 0x77, 0x6c, 0xd7, 0xe5, 0x3f, 0xf2, 0xf3, 0x06, 0x43, 0xa9, 0x7c, 0x68, 0x00, 0x94,
		0xca, 0x9f, 0x91, 0x19, 0x94, 0xca, 0x47, 0xaa, 0xa6, 0xe8, 0xc1, 0xc2, 0xe5, 0x14, 0x5c, 0x4e,
		0x91, 0xe6, 0x86, 0x4b, 0x75, 0xc7, 0xe9, 0xdd, 0x72, 0x32, 0x57, 0x51, 0xba, 0x9b, 0x2e, 0xc1,
		0x5d, 0x97, 0xea, 0xb6, 0xd3, 0xbb, 0xef, 0x4a, 0xf7, 0x06, 0x69, 0x9b, 0x44, 0xc2, 0x87, 0x52,
		0xf9, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0x1b,
		0x80, 0x77, 0x50, 0x2a, 0x1f, 0x88, 0x07, 0x88, 0x07, 0xa5, 0xf2, 0xc7, 0x87, 0xc0, 0x75, 0xdc,
		0x24, 0xb6, 0x15, 0xd7, 0x71, 0x33, 0x03, 0x73, 0x70, 0x1d, 0x17, 0x38, 0x67, 0xee, 0x22, 0xa3,
		0x54, 0x3e, 0xd0, 0x0d, 0xd0, 0x0d, 0xf8, 0x1c, 0xf0, 0x39, 0xe0, 0x73, 0xc0, 0xe7, 0x80, 0xcf,
		0x41, 0xa9, 0xfc, 0x18, 0x60, 0x07, 0xc5, 0xd5, 0x80, 0x78, 0x80, 0x78, 0x38, 0x65, 0x06, 0xc5,
		0xd5, 0xc0, 0xe6, 0x80, 0xcd, 0x01, 0x9b, 0x03, 0x94, 0x43, 0x80, 0x72, 0x50, 0x2a, 0x1f, 0xd8,
		0x06, 0xd8, 0x06, 0x6c, 0x0e, 0xd8, 0x1c, 0xb0, 0x39, 0x60, 0x73, 0xc0, 0xe6, 0xa0, 0x54, 0xfe,
		0x6a, 0xb0, 0x03, 0x36, 0x07, 0x88, 0x07, 0x88, 0x07, 0x6c, 0x0e, 0xd8, 0x1c, 0xb0, 0x39, 0x60,
		0x73, 0x80, 0x72, 0x68, 0x50, 0xce, 0x66, 0x96, 0xca, 0x17, 0x2f, 0x02, 0x51, 0x48, 0x54, 0x2b,
		0x3f, 0xfa, 0xd3, 0x5d, 0x30, 0xdd, 0x95, 0x3f, 0x5b, 0x16, 0xca, 0x6a, 0x8c, 0x15, 0xba, 0xd5,
		0x5b, 0xfa, 0x77, 0x23, 0xb0, 0x75, 0xbc, 0x65, 0x35, 0xe6, 0x0c, 0x86, 0xb2, 0x1a, 0xb4, 0xa8,
		0x14, 0x65, 0x35, 0x38, 0xf5, 0x12, 0xca, 0x6a, 0xc0, 0xad, 0x83, 0x5b, 0x97, 0x43, 0xb7, 0x0e,
		0x44, 0x76, 0xfe, 0x5c, 0x3a, 0x10, 0xd9, 0x20, 0xb2, 0x41, 0x64, 0xa7, 0xe8, 0xe2, 0xa1, 0xac,
		0x06, 0xf0, 0x0e, 0xf0, 0x0e, 0xf0, 0x0e, 0xf0, 0x0e, 0xf0, 0x0e, 0xf0, 0x0e, 0xf0, 0x0e, 0xf0,
		0xce, 0x1c, 0xbc, 0x83, 0xb2, 0x1a, 0x40, 0x3c, 0x40, 0x3c, 0x28, 0xab, 0x31, 0x3e, 0x04, 0x42,
		0xf7, 0x49, 0x6c, 0x2b, 0x42, 0xf7, 0x99, 0x81, 0x39, 0x08, 0xdd, 0x03, 0xe7, 0xcc, 0x5d, 0x64,
		0x94, 0xd5, 0x00, 0xba, 0x01, 0xba, 0x01, 0x9f, 0x03, 0x3e, 0x07, 0x7c, 0x0e, 0xf8, 0x1c, 0xf0,
		0x39, 0x28, 0xab, 0x11, 0x03, 0xec, 0xe0, 0x22, 0x06, 0x10, 0x0f, 0x10, 0x0f, 0xa7, 0xcc, 0xe0,
		0x22, 0x06, 0xd8, 0x1c, 0xb0, 0x39, 0x60, 0x73, 0x80, 0x72, 0x08, 0x50, 0x0e, 0xca, 0x6a, 0x00,
		0xdb, 0x00, 0xdb, 0x80, 0xcd, 0x01, 0x9b, 0x03, 0x36, 0x07, 0x6c, 0x0e, 0xd8, 0x1c, 0x94, 0xd5,
		0x58, 0x0d, 0x76, 0xc0, 0xe6, 0x00, 0xf1, 0x00, 0xf1, 0x80, 0xcd, 0x01, 0x9b, 0x03, 0x36, 0x07,
		0x6c, 0x0e, 0x50, 0x0e, 0x0d, 0xca, 0xd9, 0xd0, 0xb2, 0x1a, 0xc2, 0x45, 0x20, 0x0a, 0xc9, 0xca,
		0x6a, 0x04, 0xf3, 0xd5, 0xfc, 0xe9, 0xce, 0xcf, 0xfc, 0xc9, 0xb2, 0x56, 0x55, 0xa3, 0x23, 0xb3,
		0xaa, 0x46, 0x07, 0x55, 0x35, 0x54, 0x80, 0x52, 0x54, 0xd5, 0xe0, 0x54, 0x4b, 0xa8, 0xaa, 0x01,
		0xaf, 0x0e, 0x5e, 0x5d, 0x0e, 0xbd, 0x3a, 0xf0, 0xd8, 0xf9, 0xf3, 0xe8, 0xc0, 0x63, 0x83, 0xc7,
		0x06, 0x8f, 0x9d, 0xa2, 0x87, 0x87, 0xaa, 0x1a, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b,
		0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0x73, 0xf0, 0x0e, 0xaa, 0x6a, 0x00, 0xf1, 0x00,
		0xf1, 0xa0, 0xaa, 0xc6, 0xf8, 0x10, 0x88, 0xdc, 0x27, 0xb1, 0xad, 0x88, 0xdc, 0x67, 0x06, 0xe6,
		0x20, 0x72, 0x0f, 0x9c, 0x33, 0x77, 0x91, 0x51, 0x55, 0x03, 0xe8, 0x06, 0xe8, 0x06, 0x7c, 0x0e,
		0xf8, 0x1c, 0xf0, 0x39, 0xe0, 0x73, 0xc0, 0xe7, 0xa0, 0xaa, 0x46, 0x0c, 0xb0, 0x83, 0x7b, 0x18,
		0x40, 0x3c, 0x40, 0x3c, 0x9c, 0x32, 0x83, 0x7b, 0x18, 0x60, 0x73, 0xc0, 0xe6, 0x80, 0xcd, 0x01,
		0xca, 0x21, 0x40, 0x39, 0xa8, 0xaa, 0x01, 0x6c, 0x03, 0x6c, 0x03, 0x36, 0x07, 0x6c, 0x0e, 0xd8,
		0x1c, 0xb0, 0x39, 0x60, 0x73, 0x50, 0x55, 0x63, 0x35, 0xd8, 0x01, 0x9b, 0x03, 0xc4, 0x03, 0xc4,
		0x03, 0x36, 0x07, 0x6c, 0x0e, 0xd8, 0x1c, 0xb0, 0x39, 0x40, 0x39, 0x34, 0x28, 0x07, 0x55, 0x35,
		0xf8, 0x8a, 0x40, 0x14, 0x78, 0xab, 0x6a, 0x5c, 0x65, 0xb2, 0xaa, 0x86, 0x67, 0x7b, 0x1c, 0x49,
		0xe5, 0xf3, 0x8b, 0x6a, 0x84, 0x63, 0xa1, 0xa6, 0x06, 0x2d, 0x24, 0x45, 0x4d, 0x0d, 0x4e, 0xa5,
		0x84, 0x9a, 0x1a, 0xf0, 0xe9, 0xe0, 0xd3, 0xe5, 0xd0, 0xa7, 0x03, 0x8b, 0x9d, 0x3f, 0x7f, 0x0e,
		0x2c, 0x36, 0x58, 0x6c, 0xb0, 0xd8, 0x29, 0xfa, 0x77, 0xa8, 0xa9, 0x01, 0xbc, 0x03, 0xbc, 0x03,
		0xbc, 0x03, 0xbc, 0x03, 0xbc, 0x03, 0xbc, 0x03, 0xbc, 0x03, 0xbc, 0x33, 0x07, 0xef, 0xa0, 0xa6,
		0x06, 0x10, 0x0f, 0x10, 0x0f, 0x6a, 0x6a, 0x8c, 0x0f, 0x81, 0xb8, 0x7d, 0x12, 0xdb, 0x8a, 0xb8,
		0x7d, 0x66, 0x60, 0x0e, 0xe2, 0xf6, 0xc0, 0x39, 0x73, 0x17, 0x19, 0x35, 0x35, 0x80, 0x6e, 0x80,
		0x6e, 0xc0, 0xe7, 0x80, 0xcf, 0x01, 0x9f, 0x03, 0x3e, 0x07, 0x7c, 0x0e, 0x6a, 0x6a, 0xc4, 0x00,
		0x3b, 0xb8, 0x85, 0x01, 0xc4, 0x03, 0xc4, 0xc3, 0x29, 0x33, 0xb8, 0x85, 0x01, 0x36, 0x07, 0x6c,
		0x0e, 0xd8, 0x1c, 0xa0, 0x1c, 0x02, 0x94, 0x83, 0x9a, 0x1a, 0xc0, 0x36, 0xc0, 0x36, 0x60, 0x73,
		0xc0, 0xe6, 0x80, 0xcd, 0x01, 0x9b, 0x03, 0x36, 0x07, 0x35, 0x35, 0x56, 0x83, 0x1d, 0xb0, 0x39,
		0x40, 0x3c, 0x40, 0x3c, 0x60, 0x73, 0xc0, 0xe6, 0x80, 0xcd, 0x01, 0x9b, 0x03, 0x94, 0x43, 0x83,
		0x72, 0x50, 0x53, 0x83, 0xab, 0x06, 0x44, 0x81, 0xb7, 0xa4, 0x46, 0x3d, 0x98, 0x2c, 0x03, 0x25,
		0x35, 0x3c, 0xc3, 0x79, 0x62, 0x9e, 0xfe, 0x64, 0x70, 0xa8, 0xf1, 0x91, 0x99, 0x1d, 0x1b, 0x84,
		0xaf, 0x88, 0x46, 0x11, 0x45, 0x34, 0x54, 0x63, 0xcf, 0x4d, 0x2b, 0xa2, 0xc1, 0x8d, 0x2a, 0xa5,
		0xf0, 0x67, 0x22, 0xbc, 0x99, 0x14, 0x3a, 0x40, 0x10, 0x31, 0x0a, 0x80, 0x71, 0x19, 0x08, 0x51,
		0x16, 0x32, 0x94, 0xce, 0xac, 0xc8, 0xc3, 0x1a, 0x02, 0x08, 0x50, 0x0a, 0xf2, 0xa3, 0xa3, 0xb5,
		0xb2, 0xbc, 0xe8, 0x8a, 0x00, 0x56, 0x23, 0x5b, 0xa6, 0x5e, 0xf7, 0xcc, 0x8e, 0x27, 0xc5, 0xde,
		0x87, 0x23, 0xc1, 0xe8, 0xc3, 0xe8, 0xc3, 0xe8, 0xc3, 0xe8, 0x13, 0x19, 0x7d, 0xe9, 0x41, 0x30,
		0x52, 0x8b, 0x24, 0x14, 0xf4, 0x02, 0x0a, 0x00, 0x0a, 0x50, 0x81, 0x02, 0xc6, 0xa9, 0x0f, 0x61,
		0x20, 0x30, 0x31, 0x18, 0xb0, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0xb0, 0x00,
		0xb0, 0x40, 0xb6, 0xb1, 0x00, 0x8f, 0x46, 0x1c, 0x19, 0x7f, 0xff, 0xd3, 0xb0, 0xf6, 0xb0, 0xf6,
		0x6b, 0x6a, 0xed, 0xcd, 0x36, 0xb3, 0x3c, 0xd3, 0x7b, 0x73, 0xd8, 0xa3, 0x88, 0xbd, 0xe7, 0x88,
		0x96, 0x6b, 0xd5, 0x68, 0xea, 0x33, 0xc3, 0x95, 0x90, 0x45, 0x76, 0x5b, 0xab, 0x57, 0xcf, 0x4f,
		0xaf, 0x9a, 0xa7, 0xd7, 0xb5, 0xab, 0xea, 0x65, 0xb5, 0x72, 0xd7, 0xac, 0xff, 0x59, 0xab, 0xf0,
		0xca, 0x51, 0x60, 0x14, 0x5c, 0xa1, 0xd4, 0x13, 0x41, 0xb3, 0x34, 0xf8, 0x5e, 0x67, 0xa7, 0xe7,
		0xff, 0xf9, 0xfd, 0xf4, 0xee, 0xa2, 0x79, 0x77, 0x7a, 0x7d, 0x7a, 0xa3, 0xa5, 0x61, 0x67, 0x25,
		0x7d, 0x93, 0xca, 0xc5, 0xe5, 0x69, 0x9e, 0x9f, 0xff, 0xf2, 0xf6, 0x6e, 0x3d, 0x36, 0xe2, 0xb7,
		0x3f, 0xcf, 0xee, 0xaa, 0x17, 0xaa, 0x13, 0xe5, 0x1a, 0xd4, 0xba, 0xf3, 0x83, 0xdc, 0x77, 0xc6,
		0xdc, 0x27, 0xde, 0xc4, 0x0f, 0xb2, 0x84, 0x8f, 0x78, 0xfb, 0xba, 0x7a, 0x0d, 0x96, 0xbf, 0x63,
		0xc5, 0xea, 0xf8, 0x16, 0x3d, 0x4c, 0x04, 0x5c, 0x99, 0xd7, 0xab, 0x5d, 0x99, 0xae, 0x77, 0xea,
		0x79, 0xf1, 0x18, 0x1a, 0xdf, 0xcf, 0xaa, 0x74, 0x98, 0x6f, 0x9a, 0x63, 0x26, 0x53, 0xf9, 0x5e,
		0xc2, 0xd8, 0x27, 0xf8, 0x52, 0xbd, 0xb4, 0x5b, 0xa7, 0xcd, 0x1c, 0xd6, 0x3e, 0xf3, 0xbf, 0x95,
		0xd5, 0xeb, 0x74, 0x92, 0x7c, 0xe4, 0x8b, 0x1b, 0xd0, 0x4f, 0xab, 0x21, 0xfb, 0xaa, 0x45, 0x4d,
		0x28, 0x6a, 0x04, 0x22, 0x16, 0xc3, 0x9e, 0xc6, 0x4e, 0x15, 0x5a, 0x2e, 0xa8, 0x8b, 0xc5, 0x6f,
		0xfe, 0x5f, 0x16, 0xac, 0x5d, 0xdc, 0x35, 0x93, 0xb6, 0x56, 0xf3, 0xbf, 0xd5, 0xec, 0x33, 0xcf,
		0x79, 0x5e, 0xcd, 0xed, 0x75, 0x99, 0xf3, 0xc3, 0x74, 0x6d, 0xe7, 0x4d, 0x6f, 0x3d, 0x1b, 0x96,
		0xc5, 0x3a, 0xee, 0xc2, 0xa7, 0x1e, 0x55, 0xe7, 0x9b, 0xf7, 0xa9, 0x05, 0xab, 0xb1, 0xbc, 0x9d,
		0xcf, 0x4a, 0x17, 0x24, 0x8e, 0xab, 0x91, 0xcc, 0xa5, 0x88, 0xeb, 0x3a, 0x24, 0x76, 0x11, 0x12,
		0xbb, 0x02, 0x89, 0x21, 0x7f, 0x32, 0x39, 0x5c, 0xd5, 0xde, 0x66, 0xde, 0x36, 0xae, 0x5e, 0x95,
		0x25, 0x32, 0xb0, 0x6a, 0x7d, 0xe2, 0x75, 0x76, 0x8a, 0xed, 0x95, 0x26, 0xf1, 0x42, 0xf9, 0xbc,
		0xce, 0xa4, 0x5e, 0x26, 0xb7, 0x57, 0xc9, 0xed, 0x45, 0x72, 0x7b, 0x8d, 0x62, 0xb6, 0x36, 0x6e,
		0xe7, 0x24, 0xad, 0x35, 0xd8, 0xcb, 0x98, 0x0b, 0x38, 0xd8, 0xa6, 0xe8, 0x73, 0x31, 0x17, 0x21,
		0x59, 0xcb, 0xb0, 0xc4, 0xb4, 0x07, 0x0f, 0xdd, 0x31, 0x2e, 0x70, 0x1d, 0xd3, 0x62, 0x7a, 0xcb,
		0x7e, 0x49, 0xe0, 0x1a, 0xf2, 0xf2, 0x1b, 0xc2, 0xbc, 0x86, 0x30, 0x9f, 0x31, 0x2d, 0x91, 0xc3,
		0x2f, 0x9f, 0x12, 0x58, 0x4e, 0xda, 0xe4, 0x2b, 0x2c, 0xdd, 0xfc, 0x68, 0xb4, 0x04, 0x28, 0xbc,
		0xd1, 0x10, 0x9b, 0xc1, 0xe3, 0x71, 0x08, 0xf8, 0xe6, 0x10, 0x79, 0xc9, 0x0f, 0x40, 0x5e, 0x98,
		0xbc, 0xef, 0x86, 0xcb, 0xf4, 0xa1, 0xac, 0xeb, 0x82, 0x84, 0x1e, 0x47, 0xec, 0x43, 0xab, 0x0d,
		0xc1, 0x73, 0x4b, 0x37, 0x1f, 0x4f, 0x86, 0xcf, 0xe2, 0x4e, 0xbf, 0x10, 0xfd, 0x1e, 0xb8, 0x08,
		0x99, 0xbe, 0x94, 0xf1, 0xf6, 0x64, 0x7b, 0xba, 0xdd, 0xf2, 0x05, 0xa6, 0xeb, 0x30, 0xd7, 0x65,
		0x6d, 0xbd, 0xc3, 0x8c, 0x47, 0x7f, 0x30, 0x90, 0x13, 0x8b, 0xbd, 0xa1, 0x79, 0x1e, 0xc9, 0xbc,
		0x17, 0x77, 0x23, 0x60, 0x21, 0x8b, 0xb1, 0x88, 0x81, 0x21, 0x93, 0xdb, 0x13, 0x6e, 0x3b, 0x92,
		0xd0, 0x7e, 0x28, 0x07, 0x42, 0xc9, 0xe3, 0x3d, 0xeb, 0x83, 0x83, 0x12, 0xc7, 0x73, 0xe4, 0x1e,
		0xcb, 0xc4, 0xda, 0x7e, 0xb8, 0x6f, 0xbe, 0xfa, 0x49, 0xa6, 0xda, 0x79, 0x54, 0xfa, 0x50, 0x95,
		0xef, 0xec, 0x44, 0x67, 0x74, 0x77, 0x24, 0xfd, 0x0a, 0x4f, 0x6b, 0x48, 0x68, 0x26, 0x3e, 0xa9,
		0xe1, 0xc7, 0x88, 0xdd, 0x95, 0x12, 0xdc, 0x15, 0xb8, 0x2b, 0xb3, 0xe6, 0x45, 0x42, 0xc2, 0xe1,
		0xf8, 0x20, 0x9b, 0xd1, 0xae, 0x1b, 0x2e, 0x4b, 0x0e, 0x5d, 0x16, 0x34, 0xec, 0x46, 0xc1, 0x18,
		0x92, 0x93, 0x24, 0xfd, 0x44, 0x2d, 0x3a, 0x59, 0x28, 0x91, 0x87, 0x12, 0x79, 0x53, 0xff, 0x50,
		0x22, 0x0f, 0x25, 0xf2, 0xc4, 0xf7, 0x06, 0x25, 0xf2, 0x54, 0x7d, 0x1a, 0x0d, 0xbb, 0x81, 0x77,
		0x80, 0x77, 0x80, 0x77, 0x80, 0x77, 0x80, 0x77, 0x80, 0x77, 0x80, 0x77, 0x80, 0x77, 0xd2, 0xc4,
		0x3b, 0x68, 0xd8, 0x0d, 0xc4, 0x03, 0xc4, 0x83, 0x86, 0xdd, 0xe3, 0x43, 0xa0, 0x28, 0x70, 0x12,
		0xdb, 0x8a, 0xa2, 0xc0, 0x99, 0x81, 0x39, 0x28, 0x0a, 0x0c, 0x9c, 0x33, 0x77, 0x91, 0xd1, 0xb0,
		0x1b, 0xe8, 0x06, 0xe8, 0x06, 0x7c, 0x0e, 0xf8, 0x1c, 0xf0, 0x39, 0xe0, 0x73, 0xc0, 0xe7, 0xa0,
		0x61, 0x77, 0x0c, 0xb0, 0x83, 0x16, 0x4f, 0x40, 0x3c, 0x40, 0x3c, 0x9c, 0x32, 0x83, 0x16, 0x4f,
		0x60, 0x73, 0xc0, 0xe6, 0x80, 0xcd, 0x01, 0xca, 0x21, 0x40, 0x39, 0x68, 0xd8, 0x0d, 0x6c, 0x03,
		0x6c, 0x03, 0x36, 0x07, 0x6c, 0x0e, 0xd8, 0x1c, 0xb0, 0x39, 0x60, 0x73, 0xd0, 0xb0, 0x7b, 0x35,
		0xd8, 0x01, 0x9b, 0x03, 0xc4, 0x03, 0xc4, 0x03, 0x36, 0x07, 0x6c, 0x0e, 0xd8, 0x1c, 0xb0, 0x39,
		0x40, 0x39, 0x34, 0x28, 0x67, 0x8d, 0x1b, 0x76, 0xc7, 0x2e, 0x91, 0x14, 0x36, 0xf1, 0xe6, 0x2f,
		0x09, 0x51, 0x88, 0x51, 0x92, 0xf7, 0x7e, 0x34, 0xef, 0x79, 0x38, 0x6d, 0xb3, 0x6a, 0x0d, 0xba,
		0x78, 0x67, 0xa1, 0x81, 0x37, 0xaa, 0x00, 0x26, 0x46, 0xa5, 0x28, 0xa9, 0xb1, 0x04, 0x78, 0xa2,
		0x0a, 0x60, 0x3c, 0x3a, 0x2d, 0xa3, 0x55, 0x00, 0x49, 0x74, 0x4c, 0xc7, 0x70, 0x99, 0xa3, 0x7f,
		0x37, 0x0d, 0x57, 0x6f, 0xf5, 0x1c, 0x87, 0x59, 0x02, 0xbd, 0x83, 0xe7, 0x8c, 0x85, 0x42, 0x3e,
		0xd0, 0x3a, 0x28, 0xe4, 0x33, 0x47, 0x6a, 0x50, 0xc8, 0x07, 0x44, 0x12, 0x88, 0x24, 0x2e, 0x99,
		0x41, 0xe8, 0x2c, 0x7f, 0x24, 0x12, 0x42, 0x67, 0x08, 0x9d, 0x21, 0x74, 0x96, 0x22, 0xa9, 0x84,
		0x42, 0x3e, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b,
		0xc0, 0x3b, 0x73, 0xf0, 0x0e, 0x0a, 0xf9, 0x00, 0xf1, 0x00, 0xf1, 0xa0, 0x90, 0xcf, 0xf8, 0x10,
		0x48, 0x16, 0x4a, 0x62, 0x5b, 0x91, 0x2c, 0x94, 0x19, 0x98, 0x83, 0x64, 0x21, 0xe0, 0x9c, 0xb9,
		0x8b, 0x8c, 0x42, 0x3e, 0x40, 0x37, 0x40, 0x37, 0xe0, 0x73, 0xc0, 0xe7, 0x80, 0xcf, 0x01, 0x9f,
		0x03, 0x3e, 0x07, 0x85, 0x7c, 0x62, 0x80, 0x1d, 0x5c, 0xfd, 0x02, 0xe2, 0x01, 0xe2, 0xe1, 0x94,
		0x19, 0x5c, 0xfd, 0x02, 0x9b, 0x03, 0x36, 0x07, 0x6c, 0x0e, 0x50, 0x0e, 0x01, 0xca, 0x41, 0x21,
		0x1f, 0x60, 0x1b, 0x60, 0x1b, 0xb0, 0x39, 0x60, 0x73, 0xc0, 0xe6, 0x80, 0xcd, 0x01, 0x9b, 0x83,
		0x42, 0x3e, 0xab, 0xc1, 0x0e, 0xd8, 0x1c, 0x20, 0x1e, 0x20, 0x1e, 0xb0, 0x39, 0x60, 0x73, 0xc0,
		0xe6, 0x80, 0xcd, 0x01, 0xca, 0xa1, 0x41, 0x39, 0x28, 0xe4, 0x33, 0x28, 0xe4, 0x23, 0x5c, 0x19,
		0xa2, 0xc0, 0x57, 0xcf, 0xe7, 0xca, 0x9f, 0xf7, 0xcc, 0x34, 0xdc, 0xf3, 0x68, 0xd6, 0x0c, 0x54,
		0xdc, 0xb0, 0x7b, 0x5e, 0xb7, 0xe7, 0xe9, 0x8f, 0x0e, 0xfb, 0x5f, 0x8f, 0x59, 0xad, 0x37, 0xfe,
		0x7a, 0x1b, 0x33, 0x23, 0x6d, 0x46, 0x8d, 0x1f, 0xcf, 0x31, 0x2c, 0xb7, 0xc5, 0xcc, 0x1f, 0x7c,
		0x55, 0xa1, 0xd6, 0xbe, 0xe0, 0xc6, 0xf8, 0xfa, 0xac, 0x5d, 0xa5, 0x9f, 0xa1, 0xb0, 0x07, 0xe8,
		0x5b, 0xa0, 0xca, 0x0f, 0x07, 0xee, 0x1c, 0xe1, 0xcd, 0xeb, 0xdf, 0xfe, 0xff, 0x3c, 0x53, 0x8b,
		0xe1, 0x4b, 0x01, 0xe8, 0x2e, 0x03, 0x4f, 0xca, 0xc2, 0x91, 0xd2, 0x11, 0x8a, 0x3c, 0x64, 0x22,
		0x80, 0x17, 0xa5, 0xe0, 0x44, 0x42, 0x7c, 0x98, 0xe5, 0x55, 0x57, 0x84, 0xc7, 0x1a, 0xd9, 0x31,
		0xfe, 0x61, 0x49, 0x43, 0x51, 0xc3, 0xcf, 0x53, 0x18, 0x11, 0x25, 0xb6, 0xd6, 0xd0, 0xe2, 0xa3,
		0xc4, 0xd6, 0x3c, 0xa9, 0x41, 0x89, 0x2d, 0x50, 0xbc, 0xc2, 0x58, 0x1a, 0x41, 0x6d, 0xfe, 0xcd,
		0x46, 0x50, 0x9b, 0x10, 0x8e, 0xcf, 0x60, 0x46, 0x04, 0xb5, 0x11, 0xd4, 0x46, 0x50, 0x5b, 0x14,
		0xf6, 0xf3, 0xcf, 0x87, 0x12, 0x5b, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b,
		0xc0, 0x3b, 0xc0, 0x3b, 0xc0, 0x3b, 0xf3, 0xf0, 0x0e, 0x4a, 0x6c, 0x01, 0xf1, 0x00, 0xf1, 0xa0,
		0xc4, 0xd6, 0xf8, 0x10, 0x48, 0xe3, 0x4b, 0x62, 0x5b, 0x91, 0xc6, 0x97, 0x19, 0x98, 0x83, 0x34,
		0x3e, 0xe0, 0x9c, 0xb9, 0x8b, 0x8c, 0x12, 0x5b, 0x40, 0x37, 0x40, 0x37, 0xe0, 0x73, 0xc0, 0xe7,
		0x80, 0xcf, 0x01, 0x9f, 0x03, 0x3e, 0x07, 0x25, 0xb6, 0x62, 0x80, 0x1d, 0x5c, 0xca, 0x04, 0xe2,
		0x01, 0xe2, 0xe1, 0x94, 0x19, 0x5c, 0xca, 0x04, 0x9b, 0x03, 0x36, 0x07, 0x6c, 0x0e, 0x50, 0x0e,
		0x01, 0xca, 0x41, 0x89, 0x2d, 0x60, 0x1b, 0x60, 0x1b, 0xb0, 0x39, 0x60, 0x73, 0xc0, 0xe6, 0x80,
		0xcd, 0x01, 0x9b, 0x83, 0x12, 0x5b, 0xab, 0xc1, 0x0e, 0xd8, 0x1c, 0x20, 0x1e, 0x20, 0x1e, 0xb0,
		0x39, 0x60, 0x73, 0xc0, 0xe6, 0x80, 0xcd, 0x01, 0xca, 0xa1, 0x41, 0x39, 0x28, 0xb1, 0x35, 0x28,
		0xb1, 0x25, 0x50, 0x13, 0xa2, 0xc0, 0x57, 0x5c, 0xeb, 0x36, 0x98, 0xb1, 0x16, 0x4c, 0x48, 0x55,
		0x5a, 0xe3, 0x83, 0xc4, 0x7d, 0xe5, 0xdd, 0x4f, 0xa5, 0xfb, 0x18, 0x6f, 0x25, 0x57, 0xaf, 0xcb,
		0xf2, 0x77, 0xac, 0x58, 0x31, 0x1f, 0x27, 0x0e, 0x93, 0xec, 0x1f, 0x8d, 0xd6, 0x2a, 0x1c, 0xaf,
		0x5d, 0x99, 0xae, 0x77, 0xea, 0x79, 0xf1, 0xaa, 0x3d, 0xf8, 0xa6, 0xb7, 0xd2, 0x61, 0x3e, 0xca,
		0x8b, 0xa9, 0x3c, 0x7d, 0x0b, 0x31, 0xf6, 0x09, 0x3e, 0xd5, 0xae, 0xdd, 0x3a, 0x6d, 0xe6, 0xb0,
		0xf6, 0x99, 0xff, 0xd5, 0xac, 0x5e, 0xa7, 0x93, 0xe4, 0x23, 0x5f, 0xdc, 0xa0, 0x5e, 0xcb, 0x6a,
		0xad, 0xbc, 0x6a, 0x65, 0x13, 0xca, 0xa0, 0x22, 0xd9, 0x8b, 0xa1, 0x30, 0x92, 0x2b, 0x88, 0xe5,
		0xa2, 0xbc, 0x58, 0x40, 0xe7, 0xff, 0x65, 0xc1, 0xc2, 0xc6, 0x5d, 0x50, 0x82, 0x85, 0x9c, 0xff,
		0xfd, 0x66, 0x9f, 0x7e, 0xf2, 0x95, 0xa9, 0xef, 0xb1, 0xea, 0xf9, 0xc5, 0x9e, 0x7b, 0xce, 0xbe,
		0xae, 0xd8, 0xc7, 0xc9, 0x2f, 0x35, 0x7a, 0xf4, 0xb1, 0xc7, 0xd6, 0x1c, 0xd6, 0x31, 0xde, 0x74,
		0xe3, 0x89, 0xcd, 0xb9, 0xb9, 0x3c, 0x74, 0x61, 0xc6, 0xdf, 0x34, 0xf5, 0x95, 0xe7, 0x97, 0x20,
		0x5a, 0xe8, 0xb5, 0x2f, 0xf3, 0xc6, 0xc7, 0xbd, 0xec, 0x60, 0xc6, 0x79, 0xdf, 0x78, 0x85, 0xf7,
		0x1c, 0xdb, 0x2b, 0x8e, 0xed, 0xed, 0x4e, 0x7b, 0xb1, 0xe1, 0x93, 0x25, 0x14, 0x8c, 0x45, 0xc5,
		0x73, 0xb4, 0xf6, 0x73, 0xab, 0xbb, 0xf8, 0xcb, 0x0c, 0x49, 0x73, 0xff, 0x5d, 0x0b, 0x1e, 0x6f,
		0x79, 0x0d, 0xa8, 0x95, 0xf4, 0x49, 0x1c, 0x7a, 0x24, 0xce, 0xc6, 0x24, 0xa5, 0x37, 0x12, 0xd3,
		0x17, 0x89, 0xe9, 0x89, 0x98, 0x1b, 0xc7, 0xa7, 0xa9, 0x56, 0x55, 0x43, 0xd2, 0x82, 0xc3, 0xa2,
		0x9b, 0xd6, 0xa3, 0xed, 0xbc, 0x04, 0x1a, 0x21, 0x38, 0xe2, 0x31, 0x2c, 0xc5, 0xa8, 0xe4, 0xd1,
		0xa2, 0x11, 0x56, 0xd9, 0xfb, 0x58, 0x45, 0xc1, 0x62, 0xf3, 0x6a, 0x49, 0xf8, 0xb3, 0x24, 0x82,
		0xc2, 0xcb, 0x87, 0x71, 0xf3, 0x5e, 0xdc, 0xfc, 0x56, 0x42, 0x41, 0x92, 0x83, 0xda, 0xe2, 0x96,
		0xdb, 0xd2, 0x5a, 0x83, 0x7d, 0x8c, 0xb9, 0x7c, 0x83, 0x2d, 0x8a, 0x3e, 0x17, 0x73, 0x09, 0x92,
		0x55, 0x9a, 0x4b, 0x4c, 0xda, 0xf2, 0x90, 0xb4, 0x3c, 0xc2, 0x26, 0x4a, 0xc2, 0x0a, 0x93, 0xae,
		0xc2, 0x24, 0x2b, 0xa7, 0x30, 0xd2, 0x38, 0x61, 0x49, 0x6b, 0xc2, 0x69, 0xcc, 0x32, 0xbe, 0x77,
		0x18, 0x7f, 0xb1, 0xc4, 0xe8, 0xf3, 0x49, 0x4b, 0xd7, 0xb1, 0x47, 0xa3, 0xd7, 0xf1, 0xb8, 0x98,
		0x4a, 0x2d, 0x70, 0x13, 0x92, 0xf9, 0xc4, 0x8d, 0xcd, 0xa8, 0xdd, 0x9c, 0xf4, 0xd0, 0xc9, 0x8a,
		0x80, 0x64, 0xbf, 0x86, 0x63, 0xc2, 0x43, 0xa9, 0x86, 0x01, 0x13, 0xaf, 0xd7, 0xfc, 0xdd, 0xb6,
		0x3b, 0xcc, 0xb0, 0x04, 0x0a, 0x35, 0xef, 0xed, 0x91, 0x7e, 0x45, 0xf6, 0xea, 0x39, 0x86, 0xde,
		0xb3, 0x5c, 0x8f, 0x4b, 0xcd, 0x44, 0x0e, 0xd1, 0x23, 0x73, 0x98, 0xd5, 0x4a, 0xa5, 0xb6, 0xf3,
		0x60, 0xa5, 0xef, 0x2e, 0xcf, 0x0b, 0xfb, 0xc5, 0xf2, 0x61, 0x41, 0x2f, 0x5c, 0xfc, 0x76, 0x5e,
		0x2b, 0xdc, 0xf9, 0x02, 0x55, 0x38, 0xf5, 0x11, 0x61, 0xa1, 0x3a, 0x42, 0x84, 0x85, 0xdb, 0x38,
		0x88, 0x90, 0xf2, 0x2c, 0xce, 0x3b, 0x93, 0xa3, 0x15, 0xcc, 0x72, 0x40, 0x32, 0xe1, 0x12, 0xaf,
		0x5b, 0x45, 0x64, 0xc5, 0xf4, 0xf9, 0xdb, 0x93, 0xed, 0xe9, 0x76, 0x4b, 0x6f, 0xd9, 0x2f, 0x5d,
		0x87, 0xb9, 0x2e, 0x6b, 0xeb, 0x1d, 0x66, 0x3c, 0xfa, 0x83, 0xf5, 0x37, 0x94, 0x6f, 0x1e, 0x23,
		0x55, 0x76, 0xc7, 0x7f, 0xf6, 0x9d, 0xfd, 0xdd, 0x45, 0xce, 0xdf, 0x6e, 0x04, 0xdb, 0x65, 0x31,
		0xcb, 0xb1, 0xb8, 0x42, 0xc3, 0x63, 0xc9, 0xfd, 0x8b, 0xf0, 0x63, 0xc4, 0xee, 0x45, 0x09, 0xee,
		0x05, 0xdc, 0x0b, 0xb8, 0x17, 0x70, 0x2f, 0xe0, 0x5e, 0xc0, 0xbd, 0x80, 0x7b, 0x01, 0xf7, 0x02,
		0xee, 0x45, 0x36, 0xdc, 0x8b, 0x0d, 0x47, 0xe9, 0x19, 0x4a, 0xff, 0x90, 0x97, 0xa4, 0xc0, 0xb5,
		0x14, 0xc9, 0xb3, 0x11, 0x82, 0x93, 0x12, 0x1c, 0x94, 0xe6, 0xc5, 0x73, 0xab, 0xdb, 0x0c, 0x7e,
		0x1c, 0x3b, 0x32, 0x71, 0x4e, 0xcc, 0x92, 0x84, 0x84, 0x25, 0xa1, 0xcb, 0x98, 0xa1, 0x94, 0x64,
		0x21, 0x14, 0xc4, 0xe3, 0x64, 0xeb, 0xdf, 0x6c, 0xc7, 0xe3, 0x42, 0x1f, 0x42, 0x5f, 0x96, 0x57,
		0x11, 0xd3, 0x0f, 0xd1, 0x17, 0xa7, 0x5d, 0x48, 0xf5, 0x45, 0x92, 0xf8, 0x20, 0x8d, 0x64, 0x0e,
		0x7d, 0x11, 0xf1, 0x42, 0x38, 0xf4, 0x02, 0x3e, 0x82, 0x80, 0x6f, 0x90, 0xd0, 0x27, 0xa0, 0x46,
		0x18, 0xc2, 0x04, 0xe8, 0x9a, 0xe0, 0x84, 0x38, 0xfc, 0x25, 0x9f, 0xf5, 0x1e, 0x26, 0xb8, 0xba,
		0xf1, 0x2d, 0xf8, 0xd8, 0x67, 0x60, 0xc5, 0x61, 0xc5, 0xe7, 0x08, 0x53, 0x72, 0xe3, 0x1d, 0x37,
		0xd1, 0x5a, 0x98, 0xfc, 0x86, 0xad, 0x04, 0xf9, 0x3d, 0xf6, 0x01, 0xee, 0x8c, 0xc3, 0x85, 0x9b,
		0x2f, 0xe0, 0xd3, 0x09, 0x08, 0x38, 0x08, 0x68, 0x10, 0xd0, 0x05, 0x95, 0x0d, 0x4a, 0x13, 0x66,
		0x50, 0x8a, 0xd1, 0x01, 0x92, 0x0f, 0x89, 0xf0, 0x61, 0x91, 0x71, 0x68, 0x64, 0x1e, 0x1e, 0x4a,
		0xe6, 0x38, 0x1f, 0xd7, 0xe4, 0x39, 0x0f, 0x97, 0x20, 0x21, 0xcc, 0x29, 0x35, 0xbc, 0x87, 0x6e,
		0x74, 0xf8, 0x4c, 0xa7, 0xd5, 0x33, 0x3d, 0xdd, 0x6c, 0x8b, 0x6f, 0xf5, 0xf0, 0x20, 0x8e, 0xc6,
		0x14, 0xdc, 0x1a, 0xb1, 0xda, 0x15, 0xd2, 0x0e, 0xa7, 0xcc, 0x43, 0x4a, 0x71, 0x58, 0x65, 0x1f,
		0x5a, 0xb2, 0xc3, 0x4b, 0x76, 0x88, 0x89, 0x0e, 0xb3, 0xd8, 0xa1, 0x16, 0x3c, 0xdc, 0xfc, 0xb4,
		0xcd, 0x4a, 0x99, 0x73, 0x3d, 0xc7, 0xb4, 0x9e, 0x64, 0x48, 0xdc, 0xc0, 0x6c, 0x7e, 0x4a, 0x75,
		0x85, 0x24, 0x44, 0x86, 0x67, 0xc6, 0x14, 0x8f, 0x14, 0x4f, 0xff, 0x93, 0x73, 0x28, 0x0b, 0xa9,
		0x44, 0x92, 0xa9, 0x55, 0xcd, 0x3c, 0x95, 0x23, 0x2b, 0xd2, 0xac, 0x4c, 0xfb, 0xcc, 0xd5, 0x42,
		0xaa, 0x22, 0xd1, 0x72, 0x75, 0x96, 0xbc, 0x51, 0x1a, 0xa9, 0x6a, 0x06, 0xc1, 0xc4, 0xd9, 0x99,
		0xf1, 0xa4, 0x25, 0xd2, 0xca, 0x5b, 0x68, 0x81, 0x25, 0xe2, 0xcd, 0xd8, 0x5b, 0xa8, 0x8f, 0xb8,
		0x32, 0xf8, 0x66, 0x51, 0xad, 0x40, 0x46, 0xdf, 0xcc, 0x60, 0x1c, 0x19, 0x7e, 0x33, 0x22, 0x0c,
		0x18, 0x0b, 0x18, 0x0b, 0x18, 0x9b, 0x39, 0x18, 0xcb, 0x9f, 0xb1, 0xb8, 0x10, 0xc7, 0xee, 0x01,
		0xc7, 0x02, 0xc7, 0x02, 0xc7, 0x02, 0xc7, 0x02, 0xc7, 0xe6, 0x09, 0xc7, 0x3a, 0xec, 0xc5, 0xf6,
		0x98, 0x54, 0x16, 0x73, 0x34, 0x24, 0xd0, 0x1f, 0xd0, 0x1f, 0xd0, 0x1f, 0x48, 0x4c, 0x80, 0x3f,
		0x80, 0x3f, 0x80, 0x3f, 0x80, 0x3f, 0x80, 0x3f, 0x02, 0xf0, 0xa7, 0x34, 0x6c, 0x2e, 0x69, 0x41,
		0x79, 0x93, 0x70, 0x47, 0x69, 0xaf, 0xa3, 0x1f, 0xe5, 0x94, 0x1c, 0x10, 0x5f, 0xd6, 0x3e, 0x57,
		0xbd, 0xe3, 0x24, 0x25, 0x0a, 0x96, 0x18, 0xf4, 0xf8, 0x25, 0x0b, 0x16, 0xda, 0x70, 0xd1, 0xfc,
		0x9d, 0x12, 0xf2, 0x77, 0x48, 0xd1, 0x33, 0xf2, 0x77, 0xc6, 0x9f, 0x1d, 0xf9, 0x3b, 0x70, 0x7d,
		0xe1, 0xfa, 0xc2, 0xf5, 0x85, 0xeb, 0x0b, 0xd7, 0x17, 0xae, 0x2f, 0x5c, 0xdf, 0xf5, 0x73, 0x7d,
		0x91, 0xd6, 0x32, 0x02, 0x7b, 0x48, 0x6b, 0x01, 0xba, 0x03, 0xba, 0x03, 0xba, 0x5b, 0x21, 0x73,
		0x48, 0x6b, 0x01, 0xbc, 0x03, 0xbc, 0x03, 0xbc, 0x03, 0xbc, 0x5b, 0x78, 0xf6, 0x91, 0xed, 0x01,
		0x50, 0x04, 0x50, 0x04, 0xca, 0x0b, 0x94, 0x17, 0x30, 0x11, 0x30, 0x11, 0x30, 0x11, 0x30, 0x91,
		0xcb, 0x2c, 0x4f, 0xa7, 0x88, 0x06, 0x4e, 0x0f, 0x0c, 0x7c, 0x04, 0x7c, 0x04, 0x7c, 0x04, 0x7c,
		0x94, 0x5d, 0x2d, 0x48, 0xe0, 0x1e, 0x4e, 0x8d, 0x0b, 0x1d, 0x08, 0x1d, 0x08, 0x1d, 0x08, 0x1d,
		0x48, 0xa7, 0x03, 0x91, 0x0e, 0x2b, 0xa1, 0xb6, 0xbf, 0xf8, 0xaa, 0xf6, 0x33, 0xdd, 0xd5, 0x4d,
		0xc5, 0x7a, 0x6b, 0x5c, 0xf9, 0xc0, 0xcb, 0x1a, 0x0a, 0x54, 0x07, 0x73, 0x72, 0xb5, 0x16, 0xe0,
		0xdf, 0xa1, 0x04, 0xbb, 0xc3, 0x5b, 0x93, 0x50, 0xac, 0x16, 0x21, 0x0a, 0x75, 0xa6, 0x64, 0xc7,
		0x51, 0xa8, 0x33, 0x1e, 0x65, 0x29, 0x96, 0x55, 0x23, 0x27, 0x9b, 0x46, 0x10, 0x3c, 0xa3, 0x50,
		0xa7, 0x2a, 0x50, 0x8c, 0x44, 0x7f, 0xa9, 0x60, 0x57, 0x62, 0x76, 0x88, 0x60, 0x56, 0x48, 0xda,
		0x28, 0x53, 0xfa, 0xed, 0x35, 0x35, 0x97, 0xa4, 0x9e, 0x59, 0xa7, 0xcb, 0x1c, 0xdd, 0x68, 0xb7,
		0xfd, 0x87, 0x16, 0xd7, 0xa2, 0x53, 0xe3, 0x41, 0x9b, 0x42, 0x9b, 0x42, 0x9b, 0x26, 0x96, 0x19,
		0xb3, 0x2b, 0x78, 0x82, 0x26, 0x14, 0xea, 0xb1, 0xc0, 0x18, 0xd1, 0x77, 0x12, 0x8b, 0xdb, 0x4a,
		0x24, 0x53, 0xcc, 0xee, 0x8f, 0xb2, 0x84, 0xb5, 0x99, 0xa5, 0x54, 0x24, 0x8c, 0x55, 0x33, 0x3c,
		0x8f, 0x39, 0x96, 0xb4, 0x30, 0xb7, 0xb6, 0xb5, 0xf5, 0x50, 0xd4, 0x8f, 0x1b, 0xef, 0x0f, 0x7b,
		0xfa, 0x71, 0x23, 0xfc, 0x71, 0x2f, 0xf8, 0x4f, 0xf8, 0x73, 0xe9, 0xa1, 0xa8, 0x97, 0x07, 0x3f,
		0x1f, 0x3c, 0x14, 0xf5, 0x83, 0xc6, 0xf6, 0xb7, 0x6f, 0x3b, 0xdb, 0x3f, 0xf7, 0xfb, 0xc9, 0x3f,
		0xb8, 0xf5, 0x7f, 0x0f, 0xdf, 0xbe, 0x75, 0x7f, 0xde, 0xf4, 0xfd, 0xff, 0xbf, 0xea, 0x37, 0x7e,
		0xd9, 0xfe, 0x55, 0xcb, 0xf7, 0x05, 0x75, 0xb9, 0x52, 0x77, 0xb8, 0x41, 0x52, 0x77, 0xf2, 0xee,
		0xcb, 0x86, 0xa1, 0x3f, 0x9e, 0xea, 0x97, 0x8d, 0x9f, 0xc5, 0x8f, 0xe5, 0xfe, 0xf6, 0xc9, 0xf6,
		0xd6, 0xf4, 0x6b, 0x27, 0xdb, 0x3f, 0x8b, 0x1f, 0x0f, 0xfa, 0x5b, 0x5b, 0x73, 0xfe, 0xf2, 0xeb,
		0xbc, 0x31, 0xb6, 0xdf, 0xb7, 0xb6, 0xb6, 0x22, 0x79, 0x9b, 0x90, 0xc1, 0x87, 0xe2, 0x5e, 0xe3,
		0xd7, 0xe0, 0xc7, 0xf0, 0xff, 0x87, 0x52, 0x1c, 0xeb, 0xcd, 0xdb, 0x73, 0x65, 0xf7, 0xa3, 0xb4,
		0x23, 0xf8, 0xd7, 0x49, 0xe3, 0x97, 0x93, 0xed, 0x9f, 0x87, 0xfd, 0xc1, 0xcf, 0xc1, 0xff, 0x6f,
		0xbf, 0x6f, 0xed, 0xfc, 0xeb, 0xdb, 0xb7, 0x9d, 0x9d, 0x7f, 0x6d, 0x87, 0x5f, 0x2c, 0x7a, 0xdf,
		0xbf, 0xc2, 0xbf, 0xfe, 0x7a, 0x72, 0x32, 0xf3, 0xd2, 0xf6, 0xd6, 0xff, 0xed, 0x64, 0xe1, 0x58,
		0x7d, 0x50, 0x3b, 0x2f, 0xaf, 0x39, 0xbd, 0x32, 0x5d, 0xef, 0xd4, 0xf3, 0x04, 0xaf, 0x22, 0x5f,
		0x9b, 0x56, 0xa5, 0xc3, 0x7c, 0x48, 0xe1, 0x8a, 0xc5, 0xa4, 0xb4, 0x6b, 0xe3, 0x75, 0x6c, 0xa4,
		0xbd, 0x4f, 0xe5, 0xf2, 0xe1, 0x51, 0xb9, 0x5c, 0x3c, 0xda, 0x3f, 0x2a, 0x1e, 0x1f, 0x1c, 0xec,
		0x1d, 0xee, 0x1d, 0x08, 0x0c, 0x7e, 0xeb, 0xb4, 0x99, 0xc3, 0xda, 0x67, 0x6f, 0xda, 0x49, 0xc1,
		0xea, 0x75, 0x3a, 0x32, 0x86, 0xfa, 0xe2, 0x32, 0x7f, 0xf1, 0x82, 0x3b, 0x39, 0xf0, 0xa9, 0xd4,
		0xf9, 0x54, 0x02, 0x21, 0xde, 0x91, 0xc5, 0x69, 0xc3, 0x77, 0x82, 0xef, 0x04, 0xdf, 0x89, 0xe3,
		0xe4, 0x0c, 0x02, 0x39, 0x62, 0x29, 0x11, 0x82, 0xc1, 0x56, 0xa8, 0xce, 0x0d, 0x8a, 0x52, 0xf2,
		0xd4, 0x42, 0xa2, 0x89, 0x10, 0x72, 0x98, 0x1e, 0x7e, 0x93, 0xc3, 0x69, 0x6a, 0x10, 0x19, 0x44,
		0x64, 0x50, 0x89, 0x69, 0x18, 0xee, 0xb9, 0xaf, 0xf9, 0x1c, 0xf6, 0xc8, 0xb3, 0xe5, 0x03, 0x2b,
		0x70, 0xc4, 0xf1, 0xd9, 0x5a, 0xa4, 0x5c, 0x76, 0x76, 0x22, 0x0d, 0xb1, 0x6b, 0xb6, 0x33, 0xa1,
		0x24, 0x86, 0x16, 0xd2, 0x5f, 0x14, 0x7e, 0x7d, 0x31, 0x31, 0xcc, 0x66, 0x24, 0x15, 0x98, 0x8f,
		0xd0, 0x1b, 0x73, 0xf4, 0x86, 0xf9, 0x88, 0xbe, 0x9f, 0x53, 0xc2, 0x82, 0xbe, 0x9f, 0xa2, 0xc7,
		0x06, 0x1e, 0x1c, 0xcf, 0xb1, 0x4a, 0xc7, 0x7d, 0x13, 0xae, 0x18, 0x98, 0xbc, 0xb5, 0x7a, 0x7c,
		0xfb, 0x84, 0xc4, 0x78, 0xfa, 0x43, 0x2a, 0xfb, 0xb0, 0x92, 0x1d, 0x5a, 0xb2, 0xc3, 0x4b, 0x71,
		0x88, 0xc5, 0x0e, 0xb3, 0xe0, 0xa1, 0x96, 0xc7, 0xcd, 0x48, 0x04, 0xe4, 0x32, 0x01, 0xfa, 0x42,
		0xc0, 0xbe, 0x1b, 0x6c, 0xdb, 0xc9, 0x98, 0xaf, 0x3f, 0xf5, 0x42, 0xf4, 0x7b, 0x90, 0x4b, 0x8c,
		0x1a, 0xdc, 0xb4, 0x12, 0x2c, 0x74, 0xf1, 0xaa, 0xf7, 0x9d, 0xc0, 0xb0, 0x4c, 0x8c, 0x0a, 0xdb,
		0x02, 0xdb, 0x02, 0xdb, 0x02, 0xdb, 0x22, 0xcd, 0xb6, 0x3c, 0x8c, 0x6c, 0xcb, 0xbf, 0x5b, 0x3d,
		0xc7, 0x61, 0x96, 0xb7, 0xb5, 0xbd, 0xbb, 0xb3, 0x33, 0xe2, 0x9b, 0x1b, 0xd1, 0x47, 0xc6, 0xf5,
		0x90, 0x3b, 0xe7, 0xb5, 0xe1, 0xc8, 0x6d, 0xf6, 0x0a, 0x33, 0x45, 0x6d, 0xa6, 0x94, 0xfa, 0x5b,
		0x95, 0xd7, 0x20, 0x09, 0x81, 0x3f, 0xe3, 0x47, 0x9e, 0x2b, 0x6d, 0xb7, 0x74, 0xf6, 0xea, 0x9d,
		0x78, 0xac, 0xc3, 0x5e, 0x98, 0xe7, 0xbc, 0xe9, 0xb6, 0xa5, 0xb7, 0x9e, 0x0d, 0xeb, 0x89, 0xc9,
		0x75, 0xaf, 0x83, 0x34, 0x06, 0x89, 0xfe, 0xb5, 0x6a, 0xd7, 0xba, 0xb1, 0x46, 0xd7, 0x20, 0x27,
		0xa8, 0x5f, 0xb4, 0x02, 0x51, 0x4a, 0xe9, 0x95, 0x40, 0xe9, 0x81, 0xd2, 0x03, 0xa5, 0x07, 0xb7,
		0x0b, 0x6e, 0x17, 0xdc, 0x2e, 0xb8, 0x5d, 0xd9, 0xa3, 0xf4, 0xc0, 0x74, 0x41, 0xe5, 0x42, 0xe5,
		0x42, 0xe5, 0x42, 0xe5, 0xe6, 0x91, 0xe9, 0x42, 0x71, 0x24, 0x49, 0xac, 0x00, 0x2a, 0x22, 0xd1,
		0x2f, 0x32, 0x65, 0x19, 0xa4, 0xe1, 0x4f, 0x77, 0xec, 0x31, 0x0b, 0x59, 0x8b, 0x7c, 0x1c, 0x8e,
		0x10, 0x77, 0x23, 0x9c, 0xa5, 0x58, 0x42, 0x82, 0x33, 0x12, 0x9c, 0xc9, 0x98, 0x16, 0xad, 0x65,
		0xf7, 0xfc, 0x43, 0xea, 0xca, 0xc8, 0x56, 0x8c, 0x46, 0x42, 0xbe, 0x22, 0x2e, 0x9d, 0xa5, 0x70,
		0xc0, 0x72, 0x4a, 0x71, 0x7e, 0xb7, 0x6d, 0xcf, 0x61, 0xdd, 0xce, 0x9b, 0xee, 0x86, 0x4b, 0x20,
		0xc9, 0xef, 0x9e, 0x1a, 0x17, 0x9e, 0xb7, 0x8a, 0x43, 0x0b, 0xe7, 0x9b, 0xe8, 0x50, 0xaf, 0xab,
		0xff, 0x1d, 0x19, 0xcd, 0xc3, 0xb2, 0x44, 0x0f, 0x5c, 0x46, 0x45, 0x90, 0xbb, 0x20, 0xf8, 0x9e,
		0xc1, 0x66, 0x2b, 0xd7, 0xa6, 0x25, 0xbf, 0xcf, 0xc9, 0x57, 0xa3, 0xd3, 0x63, 0xe2, 0x5a, 0x69,
		0x66, 0xdc, 0x4b, 0xc7, 0x68, 0xf9, 0x2e, 0xdf, 0x85, 0xf9, 0x64, 0x8a, 0xd6, 0x8e, 0x98, 0x2f,
		0x46, 0xec, 0xc9, 0xf0, 0xcc, 0x1f, 0x4c, 0xa8, 0x44, 0x03, 0xc1, 0x49, 0x99, 0xdc, 0x32, 0xe3,
		0x95, 0x6e, 0xcb, 0xe4, 0xd6, 0xd0, 0x58, 0xb7, 0x5d, 0x44, 0xdb, 0x19, 0x41, 0x5c, 0xf6, 0xbf,
		0x1e, 0x73, 0x3d, 0xdd, 0x61, 0x2d, 0x66, 0xfe, 0x60, 0x6d, 0xd9, 0xe8, 0x6c, 0x6a, 0x74, 0x60,
		0x34, 0x60, 0x34, 0x60, 0x34, 0x60, 0x34, 0x60, 0x34, 0x60, 0x34, 0x60, 0x34, 0x60, 0x34, 0x60,
		0xb4, 0x04, 0x18, 0x8d, 0x82, 0x3d, 0x1b, 0x1b, 0x19, 0xd8, 0x0c, 0xd8, 0x0c, 0xd8, 0x0c, 0xd8,
		0x0c, 0xd8, 0x0c, 0xd8, 0x0c, 0xd8, 0x0c, 0xd8, 0x0c, 0xd8, 0x6c, 0xc5, 0xa6, 0xb4, 0x9f, 0x5b,
		0x5d, 0xdd, 0x68, 0xfd, 0x57, 0x32, 0x30, 0x9b, 0x1c, 0x16, 0xa8, 0x0c, 0xa8, 0x0c, 0xa8, 0x0c,
		0xa8, 0x0c, 0xa8, 0x0c, 0xa8, 0x0c, 0xa8, 0x0c, 0xa8, 0x0c, 0xa8, 0x2c, 0x0e, 0x2a, 0x6b, 0xb3,
		0x56, 0xc7, 0xb4, 0x18, 0x41, 0x58, 0x73, 0xfe, 0xf0, 0x40, 0x69, 0x40, 0x69, 0x40, 0x69, 0x40,
		0x69, 0x40, 0x69, 0x40, 0x69, 0x40, 0x69, 0x40, 0x69, 0x40, 0x69, 0xb1, 0x50, 0x9a, 0xe9, 0xb6,
		0xec, 0x1f, 0xcc, 0x21, 0x83, 0x69, 0x33, 0xe3, 0x03, 0xa7, 0x01, 0xa7, 0x01, 0xa7, 0x01, 0xa7,
		0x01, 0xa7, 0x01, 0xa7, 0x01, 0xa7, 0x01, 0xa7, 0x01, 0xa7, 0xc5, 0xc1, 0x69, 0xa6, 0xf5, 0x68,
		0x3b, 0x2f, 0x54, 0x28, 0x6d, 0x7a, 0x74, 0x60, 0x34, 0x60, 0x34, 0x60, 0x34, 0x60, 0x34, 0x60,
		0x34, 0x60, 0x34, 0x60, 0x34, 0x60, 0x34, 0x60, 0xb4, 0x38, 0x18, 0xcd, 0x22, 0x4a, 0x44, 0xb3,
		0x90, 0x89, 0x06, 0x5c, 0x06, 0x5c, 0x06, 0x5c, 0x06, 0x5c, 0x06, 0x5c, 0x06, 0x5c, 0x06, 0x5c,
		0x06, 0x5c, 0x96, 0x08, 0x97, 0xd9, 0x8f, 0x8f, 0xcc, 0xa1, 0x00, 0x66, 0x63, 0x03, 0x03, 0x99,
		0x01, 0x99, 0x01, 0x99, 0x01, 0x99, 0x01, 0x99, 0x01, 0x99, 0x01, 0x99, 0x01, 0x99, 0x01, 0x99,
		0xc5, 0x41, 0x66, 0x0e, 0xeb, 0x30, 0xc3, 0x25, 0xbb, 0x23, 0x30, 0x33, 0x3c, 0x50, 0x1a, 0x50,
		0x1a, 0x50, 0x1a, 0x50, 0x1a, 0x50, 0x1a, 0x50, 0x1a, 0x50, 0x1a, 0x50, 0x1a, 0x50, 0x5a, 0x3c,
		0x94, 0x46, 0x55, 0xa0, 0x76, 0xfe, 0xf0, 0x40, 0x69, 0x40, 0x69, 0x40, 0x69, 0x40, 0x69, 0x40,
		0x69, 0x40, 0x69, 0x40, 0x69, 0x40, 0x69, 0x40, 0x69, 0x2b, 0x36, 0xc5, 0xb4, 0x7e, 0x18, 0x1d,
		0xb3, 0xad, 0xdb, 0xdd, 0x96, 0xdd, 0x96, 0xda, 0xc5, 0x7e, 0x62, 0x5c, 0xe0, 0x32, 0xe0, 0x32,
		0xe0, 0x32, 0xe0, 0x32, 0xe0, 0x32, 0xe0, 0x32, 0xe0, 0x32, 0xe0, 0x32, 0xe0, 0xb2, 0xd8, 0xb8,
		0xcc, 0xdf, 0x7b, 0x97, 0x02, 0x98, 0x85, 0x03, 0x03, 0x99, 0x01, 0x99, 0x01, 0x99, 0x01, 0x99,
		0x01, 0x99, 0x01, 0x99, 0x01, 0x99, 0x01, 0x99, 0x01, 0x99, 0xad, 0xd8, 0x14, 0xcf, 0xf6, 0x8c,
		0x8e, 0xde, 0x76, 0xec, 0x6e, 0x57, 0x66, 0x3c, 0x73, 0x72, 0x58, 0xa0, 0x32, 0xa0, 0x32, 0xa0,
		0x32, 0xa0, 0x32, 0xa0, 0x32, 0xa0, 0x32, 0xa0, 0x32, 0xa0, 0xb2, 0xcd, 0x40, 0x65, 0x1f, 0x14,
		0xca, 0xbe, 0x76, 0x6a, 0x59, 0xb6, 0x67, 0xf8, 0x92, 0x22, 0x24, 0xee, 0x9a, 0xdb, 0x7a, 0x66,
		0x2f, 0x46, 0xd7, 0xf0, 0x9e, 0x7d, 0x0b, 0xb1, 0x6b, 0x77, 0x99, 0xd5, 0x0a, 0x70, 0x53, 0x68,
		0x44, 0x75, 0xe3, 0x89, 0x59, 0xde, 0xee, 0xf8, 0xcf, 0xed, 0xe7, 0x56, 0x77, 0xd7, 0xf4, 0x0d,
		0xc9, 0xa3, 0xd1, 0x62, 0xee, 0xe8, 0xc7, 0x5d, 0xd7, 0x33, 0x3c, 0xb6, 0x1b, 0x59, 0x19, 0x11,
		0x6e, 0x4e, 0x73, 0x3d, 0xa7, 0xd7, 0xf2, 0xac, 0xc8, 0x6e, 0xdd, 0xf9, 0xb3, 0x9f, 0xfa, 0x93,
		0x37, 0x2f, 0x9e, 0x5b, 0xdd, 0x66, 0x75, 0x30, 0x63, 0xf3, 0x7c, 0x30, 0xd7, 0x07, 0x35, 0x3b,
		0xc6, 0xb1, 0x5b, 0x1a, 0xb3, 0x8c, 0xef, 0x1d, 0x7e, 0x4b, 0x3e, 0xb4, 0xde, 0xd1, 0x38, 0x9c,
		0xf2, 0x22, 0x86, 0xa9, 0x85, 0xb1, 0xb4, 0x0c, 0x0c, 0x2d, 0x13, 0x3b, 0xcb, 0xc2, 0xcc, 0xd2,
		0xb1, 0xb2, 0x74, 0x8c, 0x2c, 0x19, 0x1b, 0xab, 0xd5, 0x72, 0xc2, 0x18, 0x78, 0xbc, 0xe3, 0x70,
		0x87, 0x19, 0x96, 0x88, 0xc8, 0x44, 0x47, 0x68, 0x6f, 0x2f, 0xc3, 0xca, 0xe6, 0x99, 0x75, 0xba,
		0xcc, 0xd1, 0x8d, 0x76, 0xdb, 0x61, 0xae, 0x2b, 0xae, 0x74, 0xa6, 0xc6, 0x83, 0xf2, 0x81, 0xf2,
		0x81, 0xf2, 0x49, 0x2c, 0x33, 0x66, 0x57, 0xf0, 0x04, 0x4d, 0xe8, 0x9f, 0x63, 0x81, 0x31, 0xa2,
		0xef, 0x24, 0xe6, 0x69, 0x4b, 0xa4, 0x24, 0xcc, 0xee, 0x8f, 0xb2, 0x84, 0xb5, 0x99, 0x59, 0x23,
		0x19, 0xb4, 0x44, 0xcd, 0xf0, 0x3c, 0xe6, 0x58, 0xd2, 0x88, 0x09, 0x6d, 0x6b, 0xeb, 0xa1, 0xa8,
		0x1f, 0x37, 0xde, 0x1f, 0xf6, 0xf4, 0xe3, 0x46, 0xf8, 0xe3, 0x5e, 0xf0, 0x9f, 0xf0, 0xe7, 0xd2,
		0x43, 0x51, 0x2f, 0x0f, 0x7e, 0x3e, 0x78, 0x28, 0xea, 0x07, 0x8d, 0xed, 0x6f, 0xdf, 0x76, 0xb6,
		0x7f, 0xee, 0xf7, 0x93, 0x7f, 0x70, 0xeb, 0xff, 0x1e, 0xbe, 0x7d, 0xeb, 0xfe, 0xbc, 0xe9, 0xfb,
		0xff, 0x7f, 0xd5, 0x6f, 0xfc, 0xb2, 0xfd, 0xab, 0x96, 0xb6, 0x6b, 0xf5, 0x31, 0x43, 0x52, 0x77,
		0xb8, 0x41, 0x52, 0x77, 0xf2, 0xee, 0xcb, 0x86, 0xa1, 0x3f, 0x9e, 0xea, 0x97, 0x8d, 0x9f, 0xc5,
		0x8f, 0xe5, 0xfe, 0xf6, 0xc9, 0xf6, 0xd6, 0xf4, 0x6b, 0x27, 0xdb, 0x3f, 0x8b, 0x1f, 0x0f, 0xfa,
		0x5b, 0x5b, 0x73, 0xfe, 0xf2, 0xeb, 0xbc, 0x31, 0xb6, 0xdf, 0xb7, 0xb6, 0xb6, 0x22, 0x79, 0x9b,
		0x90, 0xc1, 0x87, 0xe2, 0x5e, 0xe3, 0xd7, 0xe0, 0xc7, 0xf0, 0xff, 0x87, 0x52, 0x1c, 0xeb, 0xcd,
		0xdb, 0x73, 0x65, 0xf7, 0xa3, 0xb4, 0x23, 0xf8, 0xd7, 0x49, 0xe3, 0x97, 0x93, 0xed, 0x9f, 0x87,
		0xfd, 0xc1, 0xcf, 0xc1, 0xff, 0x6f, 0xbf, 0x6f, 0xed, 0xfc, 0xeb, 0xdb, 0xb7, 0x9d, 0x9d, 0x7f,
		0x6d, 0x87, 0x5f, 0x2c, 0x7a, 0xdf, 0xbf, 0xc2, 0xbf, 0xfe, 0x7a, 0x72, 0x32, 0xf3, 0xd2, 0xf6,
		0xd6, 0xff, 0xed, 0x64, 0xe1, 0x58, 0x7d, 0x50, 0x3b, 0x2f, 0xaf, 0x39, 0xbd, 0x32, 0x5d, 0xef,
		0xd4, 0xf3, 0x1c, 0x31, 0x93, 0x7a, 0x6d, 0x5a, 0x95, 0x0e, 0xf3, 0x21, 0x85, 0x20, 0x39, 0xa6,
		0x5d, 0x1b, 0xaf, 0x63, 0x23, 0xc9, 0xa5, 0xf6, 0xb4, 0x5b, 0xa7, 0xcd, 0x1c, 0xd6, 0x3e, 0x7b,
		0xd3, 0x4e, 0x0a, 0x56, 0xaf, 0xd3, 0x91, 0x31, 0xd4, 0x17, 0x97, 0x39, 0x42, 0xac, 0x9d, 0x1a,
		0x17, 0xc4, 0x6c, 0x8b, 0xbb, 0x1d, 0x66, 0x1b, 0xae, 0x06, 0x5c, 0x0d, 0xb8, 0x1a, 0x1c, 0x27,
		0x67, 0xc0, 0x8d, 0xea, 0x66, 0x5b, 0x86, 0xb3, 0xf1, 0x49, 0x95, 0xa6, 0xf9, 0x40, 0xb8, 0xce,
		0xa2, 0x6c, 0xb9, 0x7c, 0x96, 0x3c, 0x99, 0x60, 0xc6, 0x5f, 0x9c, 0x78, 0xef, 0x8c, 0xb9, 0x7c,
		0xfe, 0xa1, 0x4f, 0xa4, 0x8d, 0xf9, 0x6c, 0x3c, 0xbf, 0x4d, 0x97, 0x6a, 0xc3, 0x05, 0x6c, 0xb6,
		0x80, 0x8d, 0x8e, 0xbb, 0x15, 0x9c, 0x12, 0x2c, 0x53, 0x72, 0x13, 0xa8, 0x93, 0xb8, 0x01, 0x9c,
		0x78, 0xc7, 0x60, 0xb5, 0x50, 0x2f, 0x7f, 0xc7, 0x8a, 0x35, 0x4e, 0xba, 0xb6, 0xe2, 0x6b, 0xba,
		0xfc, 0x6b, 0x2f, 0xfe, 0x32, 0x4b, 0xbe, 0x88, 0x16, 0xaa, 0x95, 0x55, 0xcf, 0x3f, 0xb4, 0x13,
		0xe1, 0xdb, 0x57, 0x2c, 0xcc, 0xc0, 0x08, 0xac, 0x78, 0xdb, 0x10, 0x34, 0x95, 0x56, 0xbc, 0x31,
		0x01, 0x38, 0xe2, 0x01, 0x41, 0x49, 0xc1, 0x0e, 0x37, 0xa8, 0xe1, 0x06, 0x2f, 0x9c, 0x20, 0x45,
		0x4c, 0xbc, 0x2f, 0xcc, 0x78, 0xfa, 0x38, 0x8a, 0x30, 0x8e, 0x0b, 0x71, 0xfc, 0xa5, 0x9c, 0x8c,
		0x52, 0x4e, 0x8c, 0x11, 0x73, 0x69, 0x2e, 0xd8, 0xa3, 0xd1, 0xeb, 0x78, 0x89, 0x88, 0x0f, 0x2d,
		0x50, 0xb4, 0xf1, 0xb4, 0x48, 0x23, 0xae, 0xd1, 0x4b, 0xe4, 0x41, 0x24, 0xf6, 0x18, 0x78, 0x3c,
		0x04, 0x11, 0x8f, 0x80, 0xd7, 0x03, 0x10, 0x46, 0xfc, 0xc2, 0x08, 0x5f, 0x10, 0xd1, 0xcb, 0x85,
		0x42, 0x89, 0x11, 0xba, 0x40, 0xe4, 0x31, 0x61, 0xa4, 0x71, 0x4d, 0xcc, 0x63, 0x0c, 0x5c, 0xbc,
		0xc4, 0x32, 0x7e, 0x48, 0xf0, 0xcd, 0xe2, 0x7e, 0x23, 0xce, 0x6f, 0xa2, 0x2d, 0xb5, 0xd2, 0x4b,
		0x70, 0xd1, 0xfc, 0x2f, 0x3f, 0xfb, 0xd5, 0xe6, 0x7c, 0xad, 0xa0, 0xa0, 0xd4, 0x8f, 0xc3, 0x85,
		0x5f, 0x67, 0xa2, 0xf0, 0xd4, 0x8f, 0xc3, 0x05, 0x8f, 0xb8, 0xc2, 0xe0, 0xaf, 0xd4, 0x75, 0x71,
		0x74, 0x5b, 0x12, 0x5d, 0x16, 0x57, 0x77, 0x25, 0xd6, 0x55, 0x89, 0x75, 0x53, 0x42, 0x5d, 0x94,
		0x4c, 0x1c, 0x57, 0x19, 0x68, 0xad, 0x35, 0x58, 0xf7, 0x98, 0xe0, 0x2e, 0x7a, 0xbf, 0x64, 0x74,
		0x57, 0x04, 0xba, 0x03, 0xba, 0x03, 0xba, 0x03, 0xba, 0x03, 0xba, 0x53, 0x89, 0xee, 0x88, 0x09,
		0xa2, 0xb7, 0x27, 0xdb, 0xd3, 0xed, 0x96, 0xde, 0xb2, 0x5f, 0xba, 0x0e, 0x73, 0x5d, 0xd6, 0xd6,
		0x3b, 0xcc, 0x78, 0xf4, 0x07, 0xe9, 0x6f, 0x10, 0xfc, 0xfc, 0x71, 0xb8, 0x1b, 0x59, 0x4d, 0x02,
		0x6e, 0x66, 0x8c, 0xf9, 0x89, 0x6d, 0xc3, 0xc7, 0x3e, 0x03, 0x3b, 0x0e, 0x3b, 0x3e, 0x47, 0x98,
		0x92, 0x9b, 0xef, 0xa4, 0x54, 0x6e, 0x4c, 0xd1, 0x82, 0xb5, 0xdc, 0x2c, 0x6b, 0x19, 0x57, 0x54,
		0x93, 0xfa, 0x2f, 0x62, 0xfe, 0x8c, 0xa0, 0xf0, 0x72, 0x0b, 0xb1, 0x88, 0x30, 0xcb, 0x10, 0x6a,
		0x51, 0xe1, 0x96, 0x26, 0xe4, 0xd2, 0x84, 0x5d, 0x92, 0xd0, 0x27, 0x13, 0xfe, 0x84, 0x87, 0x80,
		0xfb, 0x30, 0x4c, 0xf9, 0x63, 0xb8, 0x17, 0x84, 0x7c, 0x19, 0xa5, 0x87, 0x4a, 0xf2, 0xe1, 0xe2,
		0x3b, 0x64, 0x9c, 0x87, 0x8d, 0xdf, 0x5f, 0x93, 0xe8, 0xbf, 0x09, 0xfa, 0x73, 0xb2, 0x96, 0x40,
		0xd6, 0x05, 0x50, 0x61, 0xff, 0x4f, 0x5c, 0x12, 0x70, 0xd1, 0x09, 0xda, 0x14, 0xda, 0x74, 0x1d,
		0xb4, 0xa9, 0xa4, 0x8b, 0x15, 0x32, 0x2e, 0x54, 0x48, 0xbb, 0x48, 0x81, 0x0b, 0x14, 0x99, 0xbb,
		0x38, 0x81, 0x8b, 0x0b, 0x1b, 0x76, 0x71, 0x01, 0x18, 0x09, 0x37, 0x31, 0x80, 0x85, 0x80, 0x85,
		0x72, 0x85, 0x85, 0xb2, 0x71, 0x13, 0x03, 0xaa, 0x73, 0x1d, 0xaf, 0x96, 0xfc, 0x38, 0x9c, 0x7f,
		0xb9, 0x24, 0x4e, 0x0c, 0x93, 0x7f, 0x7d, 0x12, 0xac, 0x0d, 0x8f, 0xf1, 0xe1, 0x37, 0x3a, 0x9c,
		0xc6, 0x06, 0x5c, 0x3f, 0xb8, 0x7e, 0x25, 0xc6, 0x61, 0xb8, 0xe7, 0xbe, 0xee, 0x73, 0xd8, 0x23,
		0xcf, 0x96, 0x0f, 0xec, 0xc0, 0x11, 0xc7, 0x67, 0x6b, 0x91, 0x7a, 0xd9, 0xd9, 0x89, 0x34, 0xc4,
		0xae, 0xd9, 0xce, 0x84, 0x92, 0x18, 0xda, 0x48, 0x7f, 0x51, 0xf8, 0xf5, 0xc5, 0xc4, 0x30, 0x9b,
		0x11, 0x26, 0x34, 0x1f, 0xa1, 0x37, 0xe6, 0xe8, 0x0d, 0xf3, 0x71, 0x6d, 0x02, 0x84, 0x9c, 0x51,
		0xf3, 0x19, 0x61, 0xe1, 0x8a, 0x9e, 0x0b, 0x1e, 0x8f, 0xcc, 0xba, 0x71, 0x5c, 0xc7, 0x06, 0x3e,
		0x1c, 0xcf, 0xb1, 0x4a, 0xc7, 0x81, 0xe3, 0x3d, 0x6e, 0xb3, 0x36, 0x49, 0x66, 0xd7, 0xa2, 0xe4,
		0x57, 0x68, 0x09, 0x38, 0x15, 0x69, 0x87, 0x52, 0xe6, 0xe1, 0x94, 0x7e, 0x48, 0x65, 0x1f, 0x56,
		0xb2, 0x43, 0x4b, 0x76, 0x78, 0x29, 0x0e, 0xb1, 0xd8, 0x61, 0x16, 0x3c, 0xd4, 0xf2, 0xd8, 0x19,
		0x89, 0x80, 0x5c, 0x26, 0x40, 0x5f, 0x08, 0xd8, 0x77, 0x83, 0x6d, 0x3b, 0x19, 0xf3, 0xf5, 0xa7,
		0x5e, 0x88, 0x7e, 0x0f, 0x6e, 0x94, 0xa5, 0xba, 0x35, 0x92, 0x08, 0x23, 0x3a, 0xe2, 0x48, 0x5c,
		0x82, 0x45, 0xfa, 0xae, 0xb8, 0xbd, 0xef, 0x04, 0x86, 0x65, 0x62, 0x54, 0xd8, 0x16, 0xd8, 0x16,
		0xd8, 0x16, 0xd8, 0x16, 0x69, 0xb6, 0xe5, 0x61, 0x64, 0x5b, 0xfe, 0xdd, 0xea, 0x39, 0x0e, 0xb3,
		0xbc, 0xad, 0xed, 0xdd, 0x9d, 0x9d, 0x11, 0xdf, 0xdc, 0x88, 0x3e, 0x32, 0xae, 0x87, 0xdc, 0x39,
		0xaf, 0x0d, 0x47, 0x6e, 0xb3, 0x57, 0x98, 0x29, 0x6a, 0x33, 0xa5, 0xd4, 0xdf, 0xaa, 0xbc, 0x06,
		0x69, 0x08, 0xfc, 0x39, 0x36, 0xf2, 0x5c, 0x69, 0xbb, 0xa5, 0xb3, 0x57, 0xef, 0xc4, 0x63, 0x1d,
		0xf6, 0xc2, 0x3c, 0xe7, 0x4d, 0xb7, 0x2d, 0xbd, 0xf5, 0x1c, 0x34, 0x17, 0x92, 0xea, 0x5e, 0x07,
		0x89, 0x0c, 0x12, 0xfd, 0x6b, 0xd5, 0xae, 0x75, 0x23, 0x97, 0x3d, 0x47, 0x16, 0x85, 0xbc, 0x26,
		0xc8, 0x5f, 0xae, 0x00, 0x18, 0xff, 0x6a, 0xf2, 0x64, 0x65, 0xc4, 0x2b, 0xd4, 0xb4, 0x1a, 0xfa,
		0xc5, 0x28, 0xe0, 0x44, 0x4e, 0xea, 0x95, 0x40, 0xea, 0x81, 0xd4, 0x03, 0xa9, 0x07, 0xc7, 0x0b,
		0x8e, 0x17, 0x1c, 0x2f, 0x38, 0x5e, 0xd9, 0x23, 0xf5, 0xc0, 0x75, 0x41, 0xe5, 0x42, 0xe5, 0x42,
		0xe5, 0x42, 0xe5, 0xe6, 0x91, 0xeb, 0x42, 0x2f, 0x52, 0x69, 0xbc, 0x00, 0x47, 0xd5, 0x75, 0x01,
		0x5a, 0x60, 0x83, 0x32, 0x8e, 0x45, 0x72, 0xef, 0x0a, 0x2b, 0x4b, 0x62, 0xfe, 0x38, 0x1c, 0xeb,
		0xf6, 0x3a, 0xfc, 0xe9, 0x8e, 0x3d, 0x66, 0x21, 0x7b, 0xd1, 0xee, 0xfa, 0x9b, 0xe0, 0xf2, 0xe7,
		0x2d, 0x0e, 0x06, 0x40, 0x61, 0x13, 0x4a, 0x00, 0x82, 0x64, 0x67, 0x2e, 0x35, 0x83, 0xbc, 0x45,
		0x5c, 0x3f, 0x5b, 0x07, 0x96, 0x33, 0x57, 0xd7, 0xcf, 0x84, 0x89, 0xce, 0xa8, 0x42, 0xeb, 0xc4,
		0xe5, 0x33, 0x69, 0x2e, 0xf8, 0xbc, 0xc1, 0x05, 0x37, 0x8b, 0xa7, 0x2e, 0xec, 0xc2, 0xc1, 0x12,
		0xd4, 0x8b, 0x5d, 0xf4, 0xaf, 0x01, 0x66, 0x41, 0x85, 0x3a, 0x02, 0xb9, 0x40, 0xa4, 0xae, 0xd6,
		0x95, 0x5f, 0x10, 0xaf, 0xd3, 0x34, 0x83, 0x0c, 0xf6, 0x52, 0x5d, 0x22, 0xf6, 0xea, 0x39, 0x86,
		0xde, 0xb3, 0x5c, 0x4f, 0xa8, 0x0c, 0xdc, 0xc4, 0x98, 0x0e, 0x7b, 0x64, 0x0e, 0xb3, 0x5a, 0x4c,
		0x5a, 0xf7, 0x58, 0x39, 0xa7, 0x72, 0x62, 0x27, 0xab, 0x95, 0xfa, 0x65, 0xe1, 0xee, 0xf2, 0xbc,
		0xb0, 0xbf, 0xbf, 0x77, 0x50, 0xd0, 0x0b, 0x17, 0x6f, 0x96, 0xf1, 0x62, 0xb6, 0x0a, 0xbf, 0xd9,
		0xae, 0x57, 0x08, 0xf5, 0x5e, 0xcf, 0x09, 0xdc, 0xdb, 0x42, 0xcd, 0xb1, 0x3d, 0xbb, 0x65, 0x77,
		0x0a, 0x8f, 0xb6, 0xf3, 0xcd, 0xaa, 0xd6, 0x7e, 0x1c, 0x16, 0xb6, 0x2e, 0x7e, 0x3b, 0xaf, 0xfd,
		0x38, 0xdc, 0x96, 0x74, 0xac, 0x29, 0x74, 0xd0, 0x3c, 0x5d, 0x34, 0xda, 0x99, 0x8f, 0x72, 0xe7,
		0xa0, 0x52, 0x4b, 0x73, 0xd5, 0x93, 0xa4, 0xad, 0x93, 0xf6, 0x80, 0xfd, 0x0f, 0xd9, 0x18, 0xa5,
		0x81, 0x94, 0x36, 0x62, 0x3e, 0xf3, 0xa3, 0x30, 0x22, 0x76, 0xd8, 0x8b, 0xed, 0x91, 0xc0, 0xe1,
		0xd1, 0xc8, 0xc0, 0xc2, 0xc0, 0xc2, 0xc0, 0xc2, 0xc0, 0xc2, 0xc0, 0xc2, 0xc0, 0xc2, 0xc9, 0xb0,
		0x70, 0xf9, 0xb0, 0x7c, 0xcc, 0x0d, 0xa8, 0x0a, 0x41, 0xd0, 0xa4, 0x10, 0x44, 0x4d, 0x0a, 0x77,
		0xa1, 0x35, 0xaa, 0x5e, 0x14, 0x6e, 0x83, 0xe8, 0x02, 0x80, 0x72, 0x9a, 0x40, 0x99, 0x70, 0x5f,
		0x81, 0xa2, 0x81, 0xa2, 0xd5, 0xa1, 0x68, 0x1a, 0x42, 0x59, 0x26, 0x93, 0x0c, 0xb4, 0x09, 0xb4,
		0x09, 0xb4, 0x29, 0x1f, 0x6d, 0xba, 0x9e, 0x63, 0x5a, 0x4f, 0x32, 0xc1, 0xe6, 0x27, 0x80, 0xcd,
		0x54, 0xc1, 0x26, 0x88, 0xd7, 0xdc, 0xe2, 0x49, 0x10, 0xaf, 0x80, 0x8c, 0x79, 0x81, 0x8c, 0x04,
		0x8c, 0xab, 0x34, 0xaa, 0x15, 0x60, 0x11, 0x60, 0x11, 0x60, 0x11, 0x60, 0x11, 0x60, 0x11, 0xcc,
		0x24, 0x98, 0x49, 0x30, 0x93, 0x80, 0x99, 0x1b, 0x54, 0xb2, 0x26, 0x9b, 0xf7, 0x95, 0xa2, 0xcb,
		0x20, 0xa8, 0x60, 0x92, 0x08, 0x1e, 0xac, 0x49, 0x05, 0x13, 0xa4, 0xf7, 0xa7, 0x04, 0xc4, 0x91,
		0xde, 0x8f, 0xf4, 0x7e, 0xf0, 0x06, 0xe0, 0x0d, 0xc0, 0x1b, 0xa4, 0xca, 0x1b, 0x20, 0xa5, 0x69,
		0xed, 0x88, 0x03, 0x44, 0x99, 0x72, 0xcb, 0x0d, 0x20, 0xca, 0x24, 0xd3, 0xfd, 0x47, 0xd6, 0x3b,
		0x20, 0x22, 0x20, 0x22, 0x20, 0x22, 0x20, 0x22, 0x20, 0x22, 0x20, 0x22, 0x62, 0x4b, 0xeb, 0x8f,
		0x1f, 0x11, 0x5b, 0x5a, 0x6f, 0x70, 0x89, 0x64, 0x70, 0x80, 0x30, 0x80, 0xb0, 0x4d, 0x04, 0x61,
		0xc8, 0xef, 0x01, 0x4d, 0x07, 0x9a, 0x0e, 0x34, 0x1d, 0x90, 0x94, 0x1c, 0x24, 0x85, 0x1c, 0x69,
		0x60, 0x28, 0x60, 0x28, 0x60, 0x28, 0x60, 0x28, 0xf0, 0x58, 0xe0, 0xb1, 0xc0, 0x63, 0x01, 0x7d,
		0xa9, 0x44, 0x5f, 0x2e, 0xb3, 0x3c, 0xa2, 0x5c, 0xba, 0xd9, 0xa1, 0x81, 0xc6, 0x80, 0xc6, 0x80,
		0xc6, 0x80, 0xc6, 0x80, 0xc6, 0xc0, 0x68, 0x01, 0x70, 0x81, 0xd1, 0x5a, 0x67, 0x4c, 0x45, 0x40,
		0x6b, 0x4d, 0x8d, 0x0b, 0x34, 0x05, 0x34, 0x05, 0x34, 0x05, 0x34, 0x05, 0x34, 0x05, 0x6e, 0x0b,
		0x50, 0x0b, 0xdc, 0xd6, 0x7a, 0xe2, 0x30, 0x5c, 0x8b, 0x1f, 0x5e, 0x8b, 0x47, 0x03, 0x4f, 0xda,
		0x05, 0xa6, 0x6d, 0xdd, 0x79, 0x1b, 0x4d, 0x92, 0x81, 0xae, 0x9d, 0x7c, 0xd5, 0x0b, 0x84, 0xaa,
		0x16, 0x08, 0x77, 0xec, 0x2c, 0xa1, 0x63, 0x27, 0x3a, 0x76, 0xae, 0x7c, 0x46, 0x81, 0x8e, 0x9d,
		0x3d, 0xff, 0xa4, 0xba, 0x32, 0x7a, 0x76, 0x46, 0x23, 0xa1, 0x6b, 0x27, 0xca, 0x7a, 0xa4, 0xe8,
		0x5f, 0xe7, 0xac, 0xac, 0x47, 0x68, 0x9f, 0x75, 0xa3, 0xfd, 0x83, 0x39, 0xae, 0x67, 0xba, 0x4c,
		0x77, 0xc3, 0xa5, 0x90, 0x44, 0x9e, 0x2d, 0x18, 0x1f, 0x24, 0x1a, 0x48, 0x34, 0x90, 0x68, 0x99,
		0x23, 0xd1, 0x22, 0x23, 0x7a, 0x58, 0x96, 0xc8, 0xa3, 0x7d, 0x92, 0x30, 0xd4, 0x9d, 0x61, 0x3d,
		0x65, 0x92, 0xb4, 0xba, 0x36, 0x2d, 0xf9, 0xd4, 0xcf, 0x57, 0xa3, 0xd3, 0x63, 0xe2, 0x5a, 0x69,
		0x66, 0xdc, 0x4b, 0xc7, 0x68, 0xf9, 0xce, 0xd0, 0x85, 0xf9, 0x64, 0x7a, 0x2e, 0xc1, 0x04, 0x37,
		0xec, 0xc9, 0xf0, 0xcc, 0x1f, 0xfe, 0xb3, 0x07, 0xd7, 0xe1, 0xe5, 0xd1, 0x31, 0x12, 0x09, 0xbb,
		0x6b, 0xe3, 0x95, 0x6e, 0xcb, 0xf6, 0x3e, 0x95, 0xcb, 0x87, 0x47, 0xe5, 0x72, 0xf1, 0x68, 0xff,
		0xa8, 0x78, 0x7c, 0x70, 0xb0, 0x77, 0xb8, 0x77, 0x80, 0x5d, 0x04, 0xa9, 0x26, 0x2a, 0xc5, 0x03,
		0x1c, 0x15, 0xb0, 0x2d, 0xce, 0x8b, 0xee, 0xb0, 0x16, 0x33, 0x7f, 0xb0, 0xb6, 0x74, 0xa0, 0x36,
		0x33, 0x01, 0x90, 0x1a, 0x90, 0x1a, 0x90, 0x1a, 0x90, 0x1a, 0x90, 0x1a, 0x90, 0x1a, 0x90, 0x1a,
		0x90, 0x1a, 0x90, 0x5a, 0x3c, 0xa4, 0xd6, 0x66, 0xad, 0x8e, 0x69, 0x31, 0x3a, 0xa4, 0x36, 0x33,
		0x01, 0x90, 0x1a, 0x90, 0x1a, 0x90, 0x1a, 0x90, 0x1a, 0x90, 0x1a, 0x90, 0x1a, 0x90, 0x1a, 0x90,
		0x1a, 0x90, 0x5a, 0x3c, 0xa4, 0x66, 0x5a, 0x8f, 0xb6, 0xee, 0xb0, 0xff, 0xf5, 0x98, 0xeb, 0xd1,
		0xc1, 0xb5, 0xf9, 0xb3, 0x00, 0xb3, 0x01, 0xb3, 0x01, 0xb3, 0x01, 0xb3, 0x01, 0xb3, 0x01, 0xb3,
		0x01, 0xb3, 0x01, 0xb3, 0x01, 0xb3, 0xc5, 0xc3, 0x6c, 0x0e, 0xfb, 0x6e, 0x5a, 0x6d, 0x3a, 0xb4,
		0x36, 0x3d, 0x3e, 0x70, 0x1a, 0x70, 0x1a, 0x70, 0x1a, 0x70, 0x1a, 0x70, 0x1a, 0x70, 0x1a, 0x70,
		0x1a, 0x70, 0x1a, 0x70, 0x5a, 0x5c, 0x9c, 0xd6, 0x8a, 0x6e, 0xf6, 0x12, 0x5d, 0x2c, 0x98, 0x99,
		0x00, 0x48, 0x0d, 0x48, 0x0d, 0x48, 0x0d, 0x48, 0x0d, 0x48, 0x0d, 0x48, 0x0d, 0x48, 0x0d, 0x48,
		0x0d, 0x48, 0x2d, 0x2e, 0x52, 0xeb, 0x18, 0x6f, 0xfa, 0xa3, 0xed, 0xfc, 0x4d, 0x05, 0xd4, 0x26,
		0xc7, 0x07, 0x4e, 0x03, 0x4e, 0x03, 0x4e, 0x03, 0x4e, 0x03, 0x4e, 0x03, 0x4e, 0x03, 0x4e, 0x03,
		0x4e, 0x03, 0x4e, 0x4b, 0x82, 0xd3, 0x1c, 0xd6, 0xed, 0xbc, 0x51, 0x86, 0x3f, 0xe7, 0x4c, 0x02,
		0xc4, 0x06, 0xc4, 0x06, 0xc4, 0x06, 0xc4, 0x06, 0xc4, 0x06, 0xc4, 0x06, 0xc4, 0x06, 0xc4, 0x06,
		0xc4, 0x16, 0x1b, 0xb1, 0x31, 0xc3, 0x65, 0xa4, 0x68, 0x6d, 0x72, 0x02, 0x20, 0x35, 0x20, 0x35,
		0x20, 0x35, 0x20, 0x35, 0x20, 0x35, 0x20, 0x35, 0x20, 0x35, 0x20, 0x35, 0x20, 0xb5, 0xb8, 0x48,
		0xad, 0xdb, 0x79, 0xa3, 0x0a, 0x7f, 0x0e, 0x87, 0x06, 0x3a, 0x03, 0x3a, 0x03, 0x3a, 0x03, 0x3a,
		0x03, 0x3a, 0x03, 0x3a, 0x03, 0x3a, 0x03, 0x3a, 0x03, 0x3a, 0x8b, 0x8b, 0xce, 0x88, 0x4b, 0x74,
		0xa0, 0x3a, 0x07, 0x90, 0x1a, 0x90, 0x1a, 0x90, 0x1a, 0x90, 0x1a, 0x90, 0x1a, 0x90, 0x1a, 0x90,
		0x1a, 0x90, 0x1a, 0x27, 0x52, 0x73, 0xed, 0x8e, 0xd9, 0x32, 0x09, 0x91, 0xda, 0xcc, 0x04, 0x40,
		0x6a, 0x40, 0x6a, 0x40, 0x6a, 0x40, 0x6a, 0x40, 0x6a, 0x40, 0x6a, 0x40, 0x6a, 0x40, 0x6a, 0x40,
		0x6a, 0x2b, 0x36, 0xc5, 0xb4, 0x7e, 0x18, 0x1d, 0xb3, 0xad, 0xdb, 0xdd, 0x96, 0xdd, 0x66, 0xf2,
		0x00, 0xda, 0xd4, 0xb8, 0xc0, 0x65, 0xc0, 0x65, 0xc0, 0x65, 0xc0, 0x65, 0xc0, 0x65, 0xc0, 0x65,
		0xc0, 0x65, 0xc0, 0x65, 0xc0, 0x65, 0xb1, 0x71, 0x99, 0xbf, 0xf7, 0x2e, 0x05, 0x30, 0x0b, 0x07,
		0x06, 0x32, 0x03, 0x32, 0x03, 0x32, 0x03, 0x32, 0x03, 0x32, 0x03, 0x32, 0x03, 0x32, 0x03, 0x32,
		0x03, 0x32, 0x5b, 0xb1, 0x29, 0x9e, 0xed, 0x19, 0x1d, 0xbd, 0xed, 0xd8, 0xdd, 0xae, 0xcc, 0x88,
		0xe6, 0xe4, 0xb0, 0x40, 0x65, 0x40, 0x65, 0x40, 0x65, 0x40, 0x65, 0x40, 0x65, 0x40, 0x65, 0x40,
		0x65, 0x40, 0x65, 0x9b, 0x81, 0xca, 0x3e, 0x28, 0x94, 0x7d, 0xed, 0xd4, 0xb2, 0x6c, 0xcf, 0xf0,
		0x25, 0x45, 0x48, 0xdc, 0x35, 0xb7, 0xf5, 0xcc, 0x5e, 0x8c, 0xae, 0xe1, 0x3d, 0xfb, 0x16, 0x62,
		0xd7, 0xee, 0x32, 0x2b, 0x6c, 0x45, 0x10, 0x55, 0x4f, 0x33, 0x9e, 0x98, 0xe5, 0xed, 0x8e, 0xff,
		0x1c, 0x26, 0xaf, 0xed, 0x9a, 0xbe, 0x29, 0x79, 0x34, 0x5a, 0xcc, 0x1d, 0xfd, 0xb8, 0xeb, 0x7a,
		0x86, 0xc7, 0x76, 0x23, 0x3b, 0x23, 0xc2, 0xce, 0x69, 0xae, 0xe7, 0xf4, 0x5a, 0x9e, 0x15, 0x59,
		0xae, 0x3b, 0x7f, 0xfe, 0x53, 0x7f, 0xfa, 0xe6, 0x45, 0x30, 0x7d, 0xb3, 0x3a, 0x98, 0xb3, 0x79,
		0x3e, 0x98, 0xed, 0x83, 0x9a, 0x5d, 0xe3, 0xd8, 0x31, 0x8d, 0x59, 0xc6, 0xf7, 0x0e, 0xbf, 0x35,
		0x1f, 0x5a, 0xf0, 0x68, 0x1c, 0x4e, 0x99, 0x11, 0xc3, 0xd5, 0xc2, 0x78, 0x5a, 0x06, 0x8e, 0x96,
		0x89, 0x9f, 0x65, 0xe1, 0x66, 0xe9, 0x78, 0x59, 0x3a, 0x4e, 0x96, 0x8c, 0x8f, 0xd5, 0x6a, 0x3a,
		0x61, 0x1c, 0x3c, 0x94, 0x99, 0xef, 0xb6, 0xdd, 0x61, 0x86, 0x25, 0x22, 0x32, 0xd1, 0x11, 0xda,
		0xdb, 0xcb, 0xb0, 0xb2, 0x79, 0x66, 0x9d, 0x2e, 0x73, 0x74, 0xa3, 0xdd, 0x76, 0x98, 0xeb, 0x8a,
		0x2b, 0x9d, 0xa9, 0xf1, 0xa0, 0x7c, 0xa0, 0x7c, 0xa0, 0x7c, 0x12, 0xcb, 0x8c, 0xd9, 0xfd, 0x71,
		0x28, 0x78, 0x86, 0x26, 0x34, 0x90, 0x80, 0xe3, 0xad, 0xd5, 0x0c, 0xcf, 0x63, 0x8e, 0x25, 0xec,
		0x72, 0x6b, 0x5b, 0x5b, 0x27, 0xef, 0x0f, 0x45, 0xfd, 0xd8, 0xd0, 0x1f, 0x4f, 0xf5, 0xcb, 0xc6,
		0xcf, 0xe2, 0xc7, 0x72, 0x7f, 0xfb, 0x64, 0x7b, 0x6b, 0xfa, 0xb5, 0x93, 0xed, 0x9f, 0xc5, 0x8f,
		0x07, 0xfd, 0xad, 0xad, 0x39, 0x7f, 0xf9, 0x75, 0xde, 0x18, 0xdb, 0xef, 0x5b, 0x5b, 0x5b, 0xa5,
		0x83, 0x87, 0xa2, 0x7e, 0xd0, 0x78, 0x2f, 0x3d, 0x14, 0xf5, 0x72, 0xc3, 0x7f, 0x4f, 0xe3, 0xfd,
		0xa1, 0xb8, 0xd7, 0xf8, 0x35, 0xf8, 0x31, 0xfc, 0xff, 0xed, 0x6f, 0xdf, 0x76, 0xb6, 0x7f, 0xee,
		0xf7, 0xe3, 0xbd, 0x79, 0x7b, 0x7b, 0xeb, 0xff, 0x1e, 0xbe, 0x7d, 0xeb, 0xfe, 0xbc, 0xe9, 0xfb,
		0xff, 0x7f, 0xd5, 0x6f, 0xfc, 0xb2, 0xfd, 0xab, 0xe8, 0x81, 0xd9, 0xda, 0x7a, 0xf8, 0xeb, 0xa4,
		0xf1, 0xcb, 0xc9, 0xf6, 0xcf, 0xc3, 0xfe, 0xe0, 0xe7, 0xe0, 0xff, 0xb7, 0xdf, 0xb7, 0x76, 0xfe,
		0xf5, 0xed, 0xdb, 0xce, 0xce, 0xbf, 0xb6, 0xc3, 0x2f, 0x14, 0xbd, 0xef, 0x5f, 0xe1, 0x5f, 0x7f,
		0x3d, 0x39, 0x99, 0x79, 0x69, 0x7b, 0xeb, 0xff, 0x76, 0xfc, 0x47, 0xfa, 0xa0, 0xd6, 0xfb, 0xe1,
		0x3d, 0x1e, 0x57, 0xa6, 0xeb, 0x9d, 0x7a, 0x9e, 0x23, 0x76, 0x44, 0xae, 0x4d, 0xab, 0xd2, 0x61,
		0xbe, 0x8a, 0x10, 0x74, 0x78, 0x7d, 0xef, 0x7f, 0x6c, 0x24, 0xb9, 0xee, 0xba, 0x76, 0xeb, 0xb4,
		0x99, 0xc3, 0xda, 0x67, 0x6f, 0xda, 0x49, 0xc1, 0xea, 0x75, 0x3a, 0x32, 0x86, 0xfa, 0xe2, 0x32,
		0x47, 0xc8, 0x13, 0x57, 0x03, 0x29, 0xcc, 0xb6, 0x38, 0x8c, 0x30, 0xdb, 0x80, 0x0e, 0x80, 0x0e,
		0x80, 0x0e, 0x1c, 0x27, 0x67, 0xc0, 0x75, 0xe8, 0x66, 0x5b, 0x0a, 0x74, 0x50, 0xa5, 0x69, 0x3e,
		0x10, 0xae, 0xb3, 0x28, 0x03, 0x46, 0xc1, 0x7c, 0x25, 0x13, 0xcd, 0xf8, 0xcb, 0x13, 0xef, 0x9d,
		0x31, 0x17, 0xd0, 0x3f, 0xf6, 0x89, 0xf4, 0x31, 0x9f, 0x95, 0xe7, 0xb7, 0xea, 0x52, 0xad, 0xb8,
		0x80, 0xd5, 0x16, 0xb0, 0xd2, 0x71, 0xb7, 0x82, 0x53, 0x86, 0xe5, 0xca, 0x6e, 0x02, 0x95, 0x12,
		0x9f, 0x96, 0x8d, 0x77, 0x14, 0x56, 0x0b, 0xf6, 0xf2, 0x77, 0xac, 0x58, 0xe7, 0xa4, 0xeb, 0x2b,
		0x63, 0x5d, 0x97, 0x7f, 0xf1, 0xc5, 0x5f, 0x67, 0xc9, 0x57, 0xd1, 0xe2, 0xa6, 0xd1, 0x8e, 0x50,
		0x46, 0xac, 0xf4, 0xd8, 0xa1, 0x41, 0x58, 0xf1, 0xb6, 0xb8, 0x00, 0x2a, 0x09, 0x50, 0xe2, 0x01,
		0x44, 0x49, 0x81, 0x0f, 0x37, 0xc0, 0xe1, 0x06, 0x32, 0x9c, 0x80, 0x45, 0x4c, 0xc8, 0x2f, 0xcc,
		0x78, 0x9a, 0x59, 0x6b, 0x0d, 0xf6, 0x31, 0xe6, 0xf2, 0x8d, 0xf2, 0x06, 0x82, 0xcf, 0xc5, 0x35,
		0x2f, 0xb1, 0x84, 0x8a, 0x1b, 0x9d, 0xf3, 0xa0, 0x71, 0x11, 0xf4, 0xcd, 0x8b, 0xb6, 0x85, 0xd1,
		0xb5, 0x30, 0x9a, 0x16, 0x44, 0xcf, 0x72, 0x41, 0x47, 0x5c, 0x21, 0x1d, 0x7e, 0x20, 0x0c, 0x75,
		0xe9, 0x13, 0xd8, 0x37, 0xf1, 0x1e, 0x4c, 0xc6, 0xcd, 0x74, 0x01, 0x20, 0xad, 0x5d, 0xb0, 0x47,
		0xa3, 0xd7, 0xf1, 0xb8, 0x38, 0x33, 0x2d, 0x40, 0x0e, 0xc9, 0xd0, 0x61, 0x23, 0xe1, 0xf3, 0xf1,
		0x39, 0xc9, 0xdc, 0xce, 0xb1, 0x88, 0x53, 0x2c, 0xc3, 0x19, 0x16, 0x75, 0x82, 0xa5, 0x39, 0xbf,
		0xd2, 0x9c, 0x5e, 0x49, 0xce, 0x2e, 0xad, 0xd3, 0xc5, 0xed, 0xd4, 0x4a, 0x08, 0xc2, 0x71, 0x06,
		0xdf, 0x92, 0x7e, 0x45, 0xf6, 0xea, 0x39, 0x86, 0xde, 0xb3, 0x5c, 0x8f, 0x3b, 0x66, 0xaf, 0x39,
		0xec, 0x91, 0x39, 0xcc, 0x6a, 0xf1, 0x67, 0xb5, 0x49, 0xa0, 0x0d, 0xaa, 0x95, 0xfa, 0x65, 0xe1,
		0xee, 0xf2, 0xbc, 0xb0, 0xbf, 0xbf, 0x77, 0x50, 0xd0, 0x0b, 0x17, 0x6f, 0x96, 0xf1, 0x62, 0xb6,
		0x0a, 0xbf, 0xd9, 0xae, 0x57, 0x08, 0xcf, 0x7d, 0xcf, 0x09, 0xc0, 0x71, 0xa1, 0xe6, 0xd8, 0x9e,
		0xdd, 0xb2, 0x3b, 0x85, 0x47, 0xdb, 0xf9, 0x66, 0x55, 0x6b, 0x3f, 0x0e, 0x0b, 0x5b, 0x17, 0xbf,
		0x9d, 0xd7, 0x7e, 0x1c, 0x6e, 0x67, 0x8c, 0xa8, 0x1a, 0xad, 0x6c, 0x96, 0xb9, 0x2a, 0x49, 0x4b,
		0xaf, 0x9a, 0xe9, 0x4a, 0xfc, 0xa9, 0x46, 0xa6, 0x19, 0x9e, 0xb7, 0x27, 0xdb, 0xd3, 0xed, 0x96,
		0xde, 0xb2, 0x5f, 0xba, 0x0e, 0x73, 0x5d, 0xd6, 0xd6, 0x3b, 0xcc, 0x78, 0xf4, 0x07, 0xeb, 0x53,
		0x31, 0x35, 0x1f, 0x13, 0x23, 0x1c, 0x87, 0xbd, 0xd8, 0x9e, 0x14, 0x78, 0x33, 0x1a, 0x09, 0xd8,
		0x06, 0xd8, 0x06, 0xd8, 0x06, 0xd8, 0x66, 0xfd, 0xb1, 0x4d, 0xf9, 0xb0, 0x7c, 0xcc, 0x6d, 0x60,
		0x0b, 0x01, 0x81, 0x59, 0x08, 0x18, 0xcc, 0xc2, 0x5d, 0xa8, 0x3d, 0xab, 0x17, 0x85, 0xdb, 0x80,
		0x3d, 0x03, 0xf0, 0x11, 0x01, 0x3e, 0x84, 0xfb, 0x02, 0x54, 0x94, 0x3b, 0x54, 0x94, 0xef, 0xa0,
		0x49, 0xc4, 0xa6, 0xef, 0x46, 0x3c, 0xa8, 0xac, 0xc8, 0x46, 0x0c, 0xc2, 0x3b, 0x8c, 0x2a, 0x26,
		0x26, 0x6c, 0xc3, 0x8f, 0x11, 0xf3, 0xb5, 0x25, 0xf0, 0xb5, 0xe0, 0x6b, 0xc1, 0xd7, 0xc2, 0xa7,
		0x81, 0x4f, 0x03, 0x9f, 0x06, 0x3e, 0x0d, 0xf8, 0x5a, 0xf0, 0xb5, 0xeb, 0xe6, 0x99, 0x80, 0xf6,
		0x04, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0xed, 0x09, 0xfc, 0x00, 0xda, 0x33, 0x25,
		0x70, 0xb1, 0x1e, 0xec, 0x61, 0x82, 0x1b, 0x02, 0x6b, 0x93, 0x16, 0x1d, 0xbf, 0x4c, 0xef, 0xca,
		0xcc, 0xf2, 0xdb, 0x68, 0x28, 0x82, 0xf4, 0xea, 0x78, 0x2c, 0x6b, 0x22, 0x76, 0x35, 0x71, 0x6a,
		0x75, 0x09, 0xa9, 0xd5, 0x24, 0x58, 0x4a, 0x51, 0x6a, 0xf5, 0xd0, 0x15, 0x19, 0x1e, 0x81, 0xe4,
		0xac, 0xfd, 0x9c, 0x31, 0xe2, 0x92, 0xb5, 0x1c, 0x8e, 0x4c, 0x12, 0x07, 0xa6, 0x91, 0x2c, 0x94,
		0x50, 0x44, 0xea, 0x37, 0x42, 0x09, 0x02, 0x0e, 0x86, 0x80, 0x63, 0x91, 0xd0, 0xa1, 0x58, 0x1b,
		0x43, 0x1b, 0x03, 0x5c, 0x2c, 0xb1, 0x8d, 0x1f, 0x12, 0x7c, 0xb7, 0xb8, 0xdf, 0x89, 0xfb, 0xbb,
		0x68, 0x4b, 0x2d, 0xf5, 0x52, 0x90, 0x30, 0x7f, 0x01, 0x66, 0xbf, 0xde, 0xe4, 0x2b, 0x53, 0x5f,
		0x74, 0xd5, 0x17, 0x4c, 0xfe, 0xc5, 0xe6, 0x7c, 0xa3, 0x85, 0xdf, 0x64, 0xf2, 0x2b, 0x8c, 0x1e,
		0x74, 0xec, 0x21, 0x35, 0xc7, 0xee, 0x79, 0xa6, 0xf5, 0xa4, 0x77, 0xed, 0x8e, 0xd9, 0x7a, 0x9b,
		0x79, 0xc8, 0xe1, 0xf1, 0x99, 0x7a, 0xdf, 0xd4, 0xd7, 0x9c, 0x8f, 0x50, 0x16, 0x2a, 0xe5, 0x65,
		0xca, 0x77, 0x42, 0xc9, 0x76, 0xed, 0xce, 0xbc, 0x2f, 0xbc, 0x42, 0x97, 0xc6, 0xd6, 0x99, 0xb1,
		0x75, 0xe3, 0x8c, 0x0e, 0xf4, 0x1f, 0x2c, 0xa1, 0x28, 0x2c, 0xb2, 0xff, 0x5a, 0x9b, 0x3d, 0x9a,
		0x16, 0x6b, 0xeb, 0x2e, 0xf3, 0x16, 0x5f, 0xcb, 0x1b, 0xf5, 0x7b, 0x1d, 0x7f, 0xf7, 0x82, 0xa7,
		0x5d, 0x0e, 0x18, 0x57, 0xda, 0xca, 0x38, 0xb6, 0x31, 0xc6, 0x36, 0x25, 0x35, 0x7d, 0x89, 0x4d,
		0x5d, 0x62, 0xd3, 0x16, 0x6f, 0x1b, 0xf9, 0x54, 0xd9, 0x2a, 0x78, 0xa7, 0x7d, 0x7f, 0xea, 0xea,
		0xb1, 0xb6, 0x7a, 0xd6, 0x74, 0x4d, 0x7f, 0x32, 0x1f, 0x57, 0x31, 0xfd, 0xc7, 0x5e, 0x2e, 0x19,
		0xf9, 0xf5, 0x18, 0x06, 0xdf, 0x2d, 0x2b, 0x3e, 0x83, 0xe1, 0xea, 0xbe, 0x11, 0x89, 0x27, 0x58,
		0x33, 0x9b, 0x35, 0xf1, 0xe9, 0xf5, 0xb8, 0x9a, 0x19, 0x5f, 0xf8, 0xd6, 0x0f, 0xa1, 0xc7, 0x16,
		0x4e, 0x1a, 0x8c, 0x9e, 0x38, 0xdd, 0x67, 0x4c, 0xfc, 0xf8, 0x03, 0x78, 0xe3, 0x83, 0xf0, 0xc5,
		0xc6, 0xf6, 0x72, 0x16, 0x1b, 0x4b, 0x2e, 0xe2, 0xb2, 0xc8, 0xf5, 0xec, 0x47, 0xc7, 0x12, 0x1f,
		0x01, 0x3e, 0xaa, 0x3a, 0x69, 0xf0, 0x28, 0xe9, 0xd1, 0x98, 0x77, 0x44, 0xf4, 0x08, 0xe8, 0x0b,
		0x96, 0xd0, 0x9a, 0x19, 0x11, 0x05, 0xb5, 0xc4, 0x0e, 0x95, 0xac, 0xc3, 0x25, 0xfd, 0x90, 0x49,
		0x3f, 0x6c, 0xd2, 0x0f, 0x1d, 0xdf, 0xe1, 0xe3, 0x3c, 0x84, 0xfc, 0x5c, 0xd2, 0x42, 0xb9, 0xe9,
		0x30, 0xe3, 0xd1, 0x61, 0x8f, 0x32, 0xea, 0x69, 0x1d, 0x89, 0x95, 0xe2, 0x0c, 0x68, 0x84, 0x9d,
		0x9d, 0x28, 0xbd, 0x7c, 0x77, 0xe6, 0x90, 0x67, 0xb8, 0x2e, 0x60, 0xc2, 0x8a, 0x22, 0x0b, 0x37,
		0x23, 0x51, 0x85, 0x11, 0x49, 0x58, 0x00, 0xea, 0x0c, 0xea, 0x2c, 0x6d, 0x75, 0xc6, 0x8b, 0x2d,
		0xe6, 0x62, 0x8c, 0x17, 0xf6, 0xf2, 0x9d, 0x39, 0xf2, 0x7a, 0x7a, 0xcd, 0x19, 0x1b, 0x8d, 0xbd,
		0xd4, 0x1c, 0x60, 0xd9, 0x07, 0x99, 0xec, 0x40, 0x93, 0x1d, 0x6c, 0xb2, 0x03, 0x2e, 0x76, 0xd0,
		0x05, 0x0f, 0xbc, 0x3c, 0x1c, 0x33, 0x23, 0x77, 0xae, 0xe7, 0x98, 0xd6, 0x93, 0xc4, 0xce, 0x5e,
		0x9c, 0x65, 0x42, 0x65, 0xad, 0x90, 0x94, 0xd2, 0xd2, 0xc3, 0xd1, 0xa4, 0x95, 0x98, 0x1e, 0x8d,
		0x48, 0x58, 0x6a, 0x7a, 0x38, 0x89, 0xbc, 0x92, 0xd3, 0xb3, 0x43, 0x0a, 0x97, 0x9e, 0x96, 0xb5,
		0xd3, 0x92, 0x5a, 0x19, 0x0d, 0xc7, 0x93, 0x76, 0xc1, 0x55, 0x9e, 0xca, 0x10, 0xe9, 0xd8, 0x29,
		0x8d, 0x46, 0xa0, 0xa2, 0x13, 0x60, 0xde, 0x61, 0xde, 0x61, 0xde, 0x61, 0xde, 0xa1, 0xf4, 0xd3,
		0x74, 0x25, 0x15, 0x34, 0x04, 0x9c, 0x48, 0x27, 0xd9, 0x9d, 0xfa, 0x75, 0x3c, 0xd8, 0xbd, 0x3b,
		0x1d, 0xfd, 0x1e, 0x27, 0xb5, 0x26, 0x7e, 0x49, 0x54, 0x53, 0x21, 0x1d, 0x8e, 0x2b, 0x59, 0x0d,
		0x86, 0x25, 0x07, 0x38, 0x7e, 0x4d, 0x06, 0x32, 0x86, 0xab, 0x04, 0x86, 0x0b, 0x0c, 0x17, 0x18,
		0x2e, 0x30, 0x5c, 0x80, 0xc0, 0x80, 0xc0, 0x80, 0xc0, 0x60, 0xb8, 0xc0, 0x70, 0x81, 0xf8, 0x01,
		0xf1, 0x03, 0xab, 0x07, 0xab, 0x07, 0xab, 0x07, 0x3e, 0x24, 0x03, 0x7c, 0x08, 0x47, 0x1f, 0x39,
		0x01, 0x3a, 0x84, 0x34, 0x71, 0x32, 0xea, 0x33, 0x27, 0x68, 0x6c, 0xc4, 0x60, 0x92, 0x38, 0x2c,
		0x22, 0x81, 0x41, 0x12, 0x60, 0x8f, 0x04, 0x98, 0x93, 0xa1, 0x8e, 0x8b, 0x04, 0x47, 0x49, 0xe3,
		0xe2, 0xfa, 0x26, 0x6e, 0xe5, 0x85, 0x8f, 0x51, 0x0b, 0x9e, 0xa2, 0x79, 0x11, 0x4e, 0x7a, 0xcf,
		0x3c, 0xb7, 0x79, 0xf6, 0xd4, 0x1d, 0xff, 0xf5, 0xd4, 0xad, 0x19, 0xde, 0xf3, 0x3d, 0xf3, 0xb4,
		0x4d, 0x2d, 0x81, 0x21, 0x69, 0xff, 0x54, 0xd6, 0xd6, 0x6d, 0xd9, 0x2f, 0x2f, 0x3d, 0xcb, 0xf4,
		0xde, 0x38, 0x2f, 0xe0, 0x4c, 0x7d, 0x1e, 0x57, 0x70, 0x70, 0x05, 0x47, 0xe8, 0x54, 0x26, 0xbe,
		0x82, 0x33, 0x21, 0x80, 0xfc, 0x97, 0x70, 0x26, 0x87, 0xc1, 0x35, 0x1c, 0x5a, 0xcf, 0x0d, 0xd7,
		0x70, 0x38, 0xc1, 0x07, 0xf7, 0x35, 0x9c, 0x09, 0xf9, 0x96, 0x74, 0x11, 0x67, 0xce, 0x98, 0xb8,
		0x8a, 0x83, 0xc8, 0x5e, 0xca, 0x14, 0x08, 0xae, 0xe2, 0x48, 0xbe, 0x8a, 0x33, 0xe7, 0x98, 0xe3,
		0x32, 0x0e, 0x09, 0x22, 0x80, 0x42, 0x83, 0x42, 0x4b, 0x5b, 0xa1, 0x09, 0xa7, 0x2a, 0x8c, 0xd4,
		0x85, 0xec, 0x44, 0x85, 0x99, 0x91, 0x11, 0xb0, 0x51, 0x73, 0x78, 0x65, 0x1f, 0x62, 0xb2, 0xc3,
		0x4c, 0x76, 0xa8, 0xc9, 0x0e, 0xb7, 0xd8, 0x21, 0x17, 0x3c, 0xec, 0xf2, 0x50, 0xcc, 0x8c, 0xdc,
		0xf5, 0x2c, 0xb1, 0x2a, 0xca, 0x33, 0x96, 0xf4, 0x58, 0xc2, 0x58, 0xd1, 0xd7, 0x7c, 0x90, 0x22,
		0x0a, 0x72, 0x8e, 0x40, 0x61, 0xba, 0x5c, 0x92, 0xeb, 0xb5, 0xf5, 0x91, 0xa2, 0xf3, 0xfc, 0x27,
		0xfe, 0x28, 0x6f, 0x26, 0x89, 0xab, 0x49, 0xb3, 0xaa, 0xf2, 0x57, 0x77, 0x56, 0x34, 0x4d, 0xcb,
		0xdb, 0x2f, 0x49, 0x5c, 0xd5, 0xe9, 0xd5, 0x3d, 0x22, 0x18, 0xfa, 0xce, 0xb0, 0x9e, 0xe4, 0xaf,
		0x32, 0xdd, 0x6a, 0x0f, 0x1f, 0xfc, 0xda, 0xb4, 0xa4, 0xd9, 0x8b, 0x85, 0x93, 0x7c, 0x35, 0x3a,
		0x3d, 0x26, 0x27, 0xe1, 0x67, 0xe9, 0x3c, 0x97, 0x8e, 0xd1, 0xf2, 0x4c, 0xdb, 0xba, 0x30, 0x9f,
		0x4c, 0x59, 0x19, 0x46, 0xcb, 0x65, 0x96, 0x3d, 0x19, 0x9e, 0xf9, 0x83, 0x49, 0x49, 0xe0, 0x21,
		0xb4, 0x20, 0xcb, 0x45, 0xc0, 0x78, 0x55, 0x27, 0x02, 0xe5, 0xd2, 0x71, 0xf9, 0xf8, 0xf0, 0xa8,
		0x74, 0x7c, 0x00, 0x59, 0x48, 0x05, 0x8b, 0xa8, 0x1b, 0xb5, 0xf1, 0x21, 0xc3, 0x27, 0x80, 0xd0,
		0x80, 0x49, 0x4b, 0x86, 0x59, 0x08, 0x0f, 0x3e, 0x11, 0x8c, 0x5d, 0x33, 0x3c, 0x8f, 0x39, 0x16,
		0x99, 0x0d, 0xd3, 0xb6, 0x0e, 0x0f, 0x0e, 0xf6, 0x1f, 0x8a, 0xfa, 0x41, 0xe3, 0xfd, 0xf0, 0xe0,
		0xe0, 0xa1, 0xa8, 0x97, 0x1a, 0x0f, 0x45, 0xfd, 0xd8, 0xff, 0xed, 0xa1, 0xa8, 0x97, 0xc3, 0x5f,
		0x7e, 0x96, 0xfa, 0xef, 0x87, 0x63, 0xbf, 0xee, 0xf7, 0xdf, 0x1f, 0xf6, 0xf4, 0x83, 0xe8, 0xb7,
		0x72, 0xf0, 0xdb, 0x71, 0xf4, 0xdb, 0xde, 0x47, 0xff, 0xaf, 0xfe, 0x8f, 0xdb, 0x27, 0x94, 0x83,
		0x6b, 0xf2, 0x4f, 0x06, 0xc5, 0xfe, 0xdd, 0xde, 0x57, 0xff, 0x20, 0xdf, 0xc4, 0xbf, 0x72, 0xbb,
		0x8b, 0xff, 0xd0, 0xb2, 0xae, 0xe0, 0x3e, 0x64, 0xeb, 0xb9, 0x24, 0x29, 0x5c, 0x22, 0x3f, 0x6c,
		0xe4, 0x83, 0x39, 0xec, 0x89, 0xbd, 0x76, 0xc9, 0x5c, 0xb1, 0x4f, 0x1b, 0xb0, 0x98, 0x7f, 0xb3,
		0x4e, 0x47, 0xff, 0xaf, 0x65, 0xff, 0x6d, 0x29, 0xf0, 0x6d, 0x25, 0x02, 0x3f, 0xad, 0xda, 0x66,
		0x96, 0x67, 0x7a, 0x6f, 0x67, 0x86, 0xcb, 0xa4, 0x63, 0xd8, 0xe1, 0x12, 0x9d, 0x7d, 0xae, 0x35,
		0x7f, 0xaf, 0x5c, 0x5d, 0x35, 0xff, 0x73, 0x73, 0xfb, 0xfb, 0x4d, 0xf3, 0xbe, 0x7e, 0xd1, 0x3c,
		0xbf, 0xbd, 0xbe, 0xfe, 0x72, 0x53, 0xad, 0xff, 0x29, 0xd9, 0xcc, 0x87, 0x38, 0xd9, 0x25, 0x51,
		0xe0, 0x34, 0x08, 0x7f, 0xb8, 0x4a, 0x9f, 0xef, 0x4e, 0xcf, 0x2b, 0x97, 0x5f, 0xae, 0x9a, 0xf7,
		0xbf, 0x7d, 0xa9, 0x5f, 0xdc, 0xfe, 0x7e, 0x23, 0x5f, 0xe1, 0x12, 0x78, 0x41, 0xc4, 0x8b, 0x72,
		0x73, 0x5b, 0xab, 0x54, 0xee, 0xb0, 0x12, 0xfe, 0x4a, 0x34, 0x4f, 0x2f, 0xbe, 0x56, 0xee, 0xea,
		0xd5, 0xfb, 0x0a, 0xd6, 0x23, 0x58, 0x8f, 0xca, 0x1f, 0xb5, 0xdb, 0xbb, 0x3a, 0x16, 0x63, 0x6c,
		0x31, 0x9a, 0xf7, 0x5f, 0xce, 0xce, 0x6f, 0x6f, 0x2e, 0x2b, 0x17, 0x04, 0xcb, 0xf2, 0x21, 0x9b,
		0xe0, 0x4f, 0xce, 0x73, 0x89, 0x8f, 0xd2, 0xc0, 0x45, 0xc3, 0xe5, 0x2c, 0x19, 0x2e, 0x1a, 0x4a,
		0xd9, 0x69, 0x94, 0xd2, 0x5a, 0xfa, 0x75, 0x24, 0xa6, 0x02, 0xce, 0xe8, 0x59, 0x69, 0x29, 0x81,
		0xd3, 0xa8, 0x1e, 0x41, 0xfa, 0xd8, 0xa3, 0x22, 0x48, 0xbf, 0x9e, 0x41, 0xfa, 0x6b, 0xc3, 0x6a,
		0x1b, 0x9e, 0xed, 0xbc, 0xf1, 0x27, 0x96, 0x0d, 0xc7, 0x42, 0x5d, 0x02, 0x18, 0x11, 0x21, 0x23,
		0xf2, 0x62, 0x78, 0xad, 0xf0, 0x36, 0xe3, 0xa0, 0xbb, 0xad, 0x34, 0x1b, 0x32, 0x3b, 0x34, 0x4c,
		0x08, 0x4c, 0x08, 0x4c, 0x48, 0x26, 0xf3, 0xbc, 0x66, 0x0e, 0xab, 0x2c, 0x5a, 0x77, 0x68, 0x06,
		0xca, 0x12, 0xc6, 0xaa, 0x58, 0xbd, 0x17, 0x79, 0xd2, 0x5c, 0xb7, 0xef, 0x43, 0x63, 0x27, 0x93,
		0x10, 0xd6, 0x8a, 0xfe, 0x72, 0x9e, 0xde, 0xc8, 0x24, 0x7c, 0xb5, 0xbd, 0x60, 0xcc, 0xab, 0x2b,
		0x99, 0x63, 0x96, 0x82, 0x56, 0xff, 0x37, 0x5f, 0x2b, 0xb2, 0x98, 0x25, 0x49, 0x6c, 0x92, 0x56,
		0xb7, 0xab, 0x96, 0x27, 0x77, 0x4f, 0xfc, 0xa5, 0x13, 0x06, 0x5b, 0x93, 0x23, 0xde, 0xfc, 0x29,
		0x37, 0x55, 0x64, 0xb0, 0x15, 0x27, 0x85, 0x52, 0x46, 0x68, 0x1e, 0x09, 0xfb, 0x39, 0xd6, 0xcb,
		0x5b, 0xd2, 0x91, 0xf0, 0x2d, 0xc5, 0x68, 0x50, 0xdf, 0x50, 0xa4, 0xaa, 0x88, 0xd9, 0xab, 0xe7,
		0x18, 0x7a, 0xcf, 0x72, 0x3d, 0xe3, 0x7b, 0x47, 0x92, 0x4a, 0x76, 0x3d, 0xc3, 0xeb, 0xb9, 0x59,
		0xce, 0x6f, 0x6d, 0xb3, 0xae, 0xc3, 0x5a, 0x86, 0xc7, 0xda, 0x32, 0x15, 0x92, 0x64, 0xb0, 0x32,
		0x0f, 0xb4, 0x44, 0x4b, 0x2b, 0x39, 0x14, 0x47, 0x05, 0x5e, 0xe6, 0x82, 0x98, 0xb1, 0xb5, 0x07,
		0xb1, 0x0c, 0x4f, 0x51, 0xc5, 0x27, 0xd7, 0xb3, 0x68, 0xd1, 0x64, 0xc5, 0x8b, 0xc9, 0x5f, 0x51,
		0xc8, 0x39, 0x11, 0xb4, 0x47, 0x21, 0x67, 0xc9, 0x36, 0x0c, 0xb7, 0x23, 0x89, 0x55, 0x13, 0x6e,
		0x47, 0x82, 0x35, 0x03, 0x6b, 0x06, 0xd6, 0x4c, 0x50, 0xee, 0x70, 0x3b, 0x92, 0x63, 0xd1, 0x70,
		0x3b, 0x92, 0x60, 0x75, 0x67, 0x45, 0x13, 0xb7, 0x23, 0xe9, 0x57, 0x7b, 0xf8, 0xe0, 0xb8, 0x1d,
		0x29, 0x24, 0xb3, 0xb8, 0x1d, 0x99, 0x50, 0x04, 0x70, 0x3b, 0x32, 0x23, 0xa4, 0x17, 0xfd, 0xa8,
		0xb8, 0x1d, 0x49, 0x64, 0xc0, 0x70, 0x3b, 0x12, 0xb7, 0x23, 0x67, 0xf7, 0x0f, 0xb7, 0x23, 0x71,
		0x3b, 0x52, 0xe6, 0x73, 0xe1, 0x76, 0x24, 0x6e, 0x47, 0xe2, 0x76, 0x24, 0x6e, 0x47, 0xc6, 0x5d,
		0x25, 0xdc, 0x8e, 0x9c, 0xb3, 0x28, 0xb8, 0x1d, 0x89, 0xdb, 0x91, 0x0b, 0xd7, 0x03, 0xb7, 0x23,
		0x71, 0x3b, 0x12, 0x49, 0x2c, 0x91, 0x28, 0xe0, 0x76, 0x24, 0xda, 0x30, 0x2e, 0xfb, 0x1e, 0xb8,
		0x34, 0x28, 0xc4, 0x0e, 0x20, 0x76, 0x8d, 0xd8, 0x75, 0x2a, 0x7a, 0x1d, 0x97, 0x06, 0xb3, 0xaf,
		0x5b, 0x71, 0x97, 0x0e, 0x9a, 0x15, 0x9a, 0x35, 0x6f, 0x9a, 0x15, 0x77, 0xe9, 0x64, 0xc8, 0x06,
		0xee, 0xd2, 0xe1, 0x2e, 0x1d, 0xf7, 0x88, 0xb8, 0x4b, 0x17, 0xe7, 0x4b, 0xe1, 0x2e, 0x5d, 0xf2,
		0x31, 0x71, 0x97, 0x0e, 0x77, 0xe9, 0x16, 0x83, 0x18, 0xdc, 0xa5, 0x23, 0x70, 0xa0, 0x70, 0xc5,
		0x2c, 0xde, 0x15, 0xb3, 0xf5, 0xeb, 0x8d, 0x2f, 0xcc, 0xff, 0xa1, 0x3b, 0xfe, 0xaa, 0x21, 0x36,
		0xbc, 0x3b, 0xfe, 0xb2, 0x03, 0xa5, 0xb0, 0x43, 0xfe, 0xf9, 0x60, 0x5e, 0x34, 0xc9, 0x97, 0xb0,
		0x8d, 0x2a, 0xdb, 0xe4, 0xb3, 0x57, 0x4f, 0x17, 0x6d, 0x95, 0x3f, 0x67, 0x0c, 0xb4, 0xcb, 0x47,
		0xbb, 0x7c, 0xa1, 0xf3, 0x99, 0xb8, 0x5d, 0xfe, 0x8c, 0x10, 0xf2, 0xb7, 0xcc, 0x9f, 0x1d, 0x0a,
		0x6d, 0xf3, 0x69, 0xdd, 0x2b, 0xb4, 0xcd, 0xe7, 0x44, 0x25, 0x02, 0x6d, 0xf3, 0xd1, 0x4d, 0x1a,
		0xf5, 0x12, 0x52, 0xe4, 0x21, 0x36, 0xbd, 0x5e, 0xc2, 0xa4, 0x91, 0x91, 0x5d, 0x33, 0x61, 0xee,
		0xe8, 0x88, 0x90, 0xaa, 0x39, 0xc4, 0x54, 0xa4, 0x23, 0x22, 0xa4, 0x92, 0xe8, 0x40, 0xd4, 0x4d,
		0x48, 0xf2, 0x35, 0x33, 0x5d, 0x37, 0x61, 0x52, 0xd1, 0xa1, 0x6e, 0x42, 0x41, 0xfa, 0x2a, 0xe3,
		0xda, 0xe9, 0xdc, 0x09, 0x68, 0x2f, 0x2c, 0x0e, 0xaf, 0xb3, 0x87, 0x33, 0x0c, 0x7e, 0x7d, 0x28,
		0xea, 0x9f, 0xa2, 0x69, 0xa2, 0x97, 0x1e, 0x8a, 0xfa, 0xde, 0x68, 0xae, 0xf0, 0xc5, 0x87, 0xa2,
		0x7e, 0x38, 0x9a, 0x30, 0x78, 0x2d, 0x18, 0x66, 0x38, 0xab, 0xff, 0xd2, 0x68, 0xa8, 0x9f, 0x07,
		0xc1, 0x2b, 0x0f, 0x45, 0x7d, 0x3f, 0x7a, 0xe1, 0xd0, 0x7f, 0x61, 0xec, 0x0d, 0x47, 0xfd, 0xf7,
		0xf2, 0xd8, 0x44, 0x9f, 0x82, 0xe7, 0x1e, 0xbc, 0xf9, 0x78, 0xea, 0x5b, 0x7c, 0xc2, 0xfd, 0xd6,
		0xd9, 0x59, 0xfe, 0x82, 0xb8, 0xac, 0x12, 0x97, 0xec, 0x5f, 0xa4, 0x45, 0xa5, 0x80, 0x9c, 0xab,
		0xec, 0xad, 0xf0, 0x2c, 0x8c, 0xe4, 0xef, 0x7d, 0x2f, 0xf8, 0x4f, 0xf8, 0x73, 0x69, 0x74, 0xf2,
		0xde, 0x4b, 0x07, 0xc1, 0x11, 0xd8, 0xfe, 0xf6, 0x6d, 0x67, 0xfb, 0xe7, 0x7e, 0x3f, 0xf9, 0x07,
		0x51, 0x39, 0x40, 0x99, 0x66, 0x5d, 0x97, 0x5d, 0x85, 0x02, 0x84, 0x02, 0x24, 0x56, 0x80, 0xeb,
		0x80, 0x13, 0xa0, 0x59, 0x95, 0x69, 0x56, 0x88, 0x0b, 0x54, 0x36, 0x54, 0x76, 0xaa, 0x2a, 0xdb,
		0xb1, 0x7b, 0x1e, 0xfb, 0xf6, 0x4d, 0xf7, 0x0c, 0xe7, 0x89, 0x79, 0x27, 0x70, 0x23, 0xc1, 0x3a,
		0x24, 0xd0, 0xe0, 0x90, 0x1e, 0x90, 0x10, 0x50, 0xe8, 0x99, 0x56, 0xe8, 0xe0, 0x24, 0x36, 0x40,
		0xef, 0x82, 0xa2, 0x80, 0x7a, 0x84, 0x7a, 0xe4, 0x51, 0x8f, 0x70, 0x41, 0xa1, 0x77, 0xf9, 0xf5,
		0x2e, 0xa4, 0x07, 0x0a, 0x1d, 0x0a, 0x3d, 0x13, 0x0a, 0xdd, 0x76, 0xcc, 0x27, 0xd3, 0x82, 0x0b,
		0x0a, 0x02, 0x83, 0x47, 0xa1, 0x43, 0x7a, 0x40, 0x60, 0x40, 0xa1, 0x67, 0x52, 0xa1, 0x83, 0xc0,
		0xd8, 0x00, 0xbd, 0x0b, 0x02, 0x03, 0xea, 0x11, 0xea, 0x91, 0x47, 0x3d, 0xc2, 0x05, 0x85, 0xde,
		0xe5, 0xd7, 0xbb, 0x90, 0x1e, 0x28, 0x74, 0x28, 0xf4, 0x54, 0x15, 0x7a, 0xcb, 0xee, 0xd8, 0xce,
		0x49, 0x20, 0xf6, 0x3f, 0x4b, 0x7d, 0x70, 0x0c, 0x6b, 0xa7, 0x73, 0xd7, 0x71, 0x83, 0xa1, 0x16,
		0xa1, 0x16, 0x69, 0x8f, 0x4d, 0xc7, 0xb4, 0xfe, 0xab, 0x7f, 0x37, 0xac, 0xf6, 0xdf, 0x66, 0xdb,
		0x7b, 0x06, 0x33, 0xb7, 0xf2, 0x48, 0x6e, 0xfd, 0xf7, 0xfd, 0x3f, 0xef, 0xd7, 0xef, 0x9f, 0xb7,
		0x7f, 0x85, 0xf6, 0x1d, 0xd3, 0xbe, 0x0a, 0xe5, 0xe8, 0x1f, 0x6b, 0x26, 0x47, 0x68, 0x3d, 0x99,
		0x8e, 0xd1, 0x21, 0xb8, 0xca, 0xde, 0xb5, 0x5d, 0xf3, 0x55, 0x67, 0x61, 0xcf, 0xc9, 0x0c, 0xb7,
		0x9b, 0x44, 0x33, 0xa8, 0xb1, 0xd1, 0xd0, 0x0c, 0x6a, 0x66, 0x48, 0x79, 0xcd, 0xa0, 0x44, 0xab,
		0x0b, 0xc9, 0xa9, 0x83, 0x3b, 0x1c, 0xef, 0xed, 0xc9, 0xf6, 0x74, 0xbb, 0xa5, 0xb7, 0xec, 0x97,
		0xae, 0xc3, 0x5c, 0x97, 0xb5, 0xf5, 0x0e, 0x33, 0x1e, 0xfd, 0xc1, 0xfb, 0x39, 0xec, 0xcc, 0x32,
		0x53, 0xe2, 0x4e, 0x72, 0xe7, 0xab, 0x05, 0xe3, 0xa3, 0x02, 0xd1, 0xca, 0x95, 0x43, 0x05, 0x22,
		0x54, 0x20, 0x5a, 0xfd, 0xad, 0x36, 0xa0, 0x63, 0x15, 0x0c, 0x00, 0xa5, 0x01, 0x40, 0x6b, 0x2e,
		0xa8, 0x7d, 0xa8, 0x7d, 0xa8, 0x7d, 0xb4, 0xe6, 0x92, 0xe5, 0x69, 0xa3, 0x35, 0x97, 0xf0, 0xb6,
		0xa0, 0x35, 0x57, 0x16, 0x28, 0x1a, 0xb4, 0xe6, 0x8a, 0xe5, 0x3f, 0xa3, 0x35, 0x97, 0xa4, 0xd1,
		0xd1, 0x9a, 0x2b, 0x0e, 0x88, 0x41, 0x6b, 0x2e, 0x78, 0x8a, 0xe8, 0x41, 0x26, 0xa1, 0xd7, 0xce,
		0x6c, 0xb7, 0x9a, 0xd9, 0x97, 0x76, 0xa3, 0xb6, 0x06, 0xaa, 0x9a, 0x91, 0x71, 0x74, 0xdc, 0x90,
		0xcc, 0xe0, 0xd2, 0x30, 0xb7, 0x82, 0xae, 0x3b, 0x1a, 0x3c, 0xa8, 0x73, 0xc9, 0xd1, 0xe0, 0x41,
		0xb2, 0xab, 0x3d, 0x94, 0x1b, 0x5f, 0xf9, 0x3b, 0xec, 0x51, 0x44, 0x68, 0x06, 0xbe, 0xf4, 0x91,
		0xc0, 0x18, 0xb5, 0x48, 0x8f, 0xee, 0xec, 0x44, 0xda, 0x6d, 0x77, 0xc1, 0x51, 0xcf, 0xb0, 0xd2,
		0x0b, 0x5b, 0x44, 0x0a, 0xeb, 0xb8, 0x70, 0x98, 0x94, 0x7b, 0xd6, 0x94, 0xa0, 0xd2, 0xa0, 0xd2,
		0xd0, 0xb3, 0x06, 0x3d, 0x6b, 0x32, 0x71, 0x88, 0xa9, 0xbc, 0x71, 0x84, 0x0e, 0x24, 0xf9, 0xc9,
		0xe8, 0x59, 0x93, 0xe4, 0x6b, 0xa2, 0x67, 0x0d, 0x7a, 0xd6, 0x20, 0x67, 0x7f, 0x7a, 0x02, 0x24,
		0xe9, 0xe3, 0x62, 0x54, 0xfc, 0x59, 0xd0, 0xb3, 0x06, 0xd7, 0xac, 0xa0, 0xb2, 0xd3, 0x56, 0xd9,
		0x28, 0xaf, 0xb2, 0x8e, 0x9a, 0x15, 0xf5, 0x54, 0xa0, 0x00, 0xa1, 0x00, 0x63, 0x29, 0x40, 0x94,
		0xc0, 0x80, 0x66, 0x4d, 0xa0, 0x59, 0x21, 0x2e, 0x50, 0xd9, 0x50, 0xd9, 0xa9, 0xaa, 0x6c, 0x74,
		0x1d, 0x01, 0xeb, 0xc0, 0xaf, 0xc1, 0x21, 0x3d, 0x20, 0x21, 0xa0, 0xd0, 0x33, 0xad, 0xd0, 0xc1,
		0x49, 0x6c, 0x80, 0xde, 0x05, 0x45, 0x01, 0xf5, 0x08, 0xf5, 0xc8, 0xa3, 0x1e, 0xe1, 0x82, 0x42,
		0xef, 0xf2, 0xeb, 0x5d, 0x48, 0x0f, 0x14, 0x3a, 0x14, 0x7a, 0x26, 0x14, 0x3a, 0xba, 0x8e, 0x80,
		0xc0, 0xe0, 0x57, 0xe8, 0x90, 0x1e, 0x10, 0x18, 0x50, 0xe8, 0x99, 0x54, 0xe8, 0x20, 0x30, 0x36,
		0x40, 0xef, 0x82, 0xc0, 0x80, 0x7a, 0x84, 0x7a, 0xe4, 0x51, 0x8f, 0x70, 0x41, 0xa1, 0x77, 0xf9,
		0xf5, 0x2e, 0xa4, 0x07, 0x0a, 0x1d, 0x0a, 0x3d, 0x55, 0x85, 0x8e, 0x9e, 0x35, 0x6b, 0xae, 0x73,
		0xd1, 0xb3, 0x06, 0x6a, 0x11, 0x6a, 0x31, 0xe9, 0x04, 0xe8, 0x59, 0x83, 0x9e, 0x35, 0x32, 0xb4,
		0x2f, 0x7a, 0xd6, 0xa0, 0x67, 0x8d, 0xaa, 0xe7, 0x42, 0xcf, 0x9a, 0xd4, 0x37, 0x14, 0x3d, 0x6b,
		0x96, 0x8e, 0x88, 0x9e, 0x35, 0xc2, 0x92, 0x86, 0x56, 0x2e, 0x9c, 0xc3, 0xa0, 0x30, 0x0f, 0xff,
		0x0e, 0xa0, 0x30, 0x8f, 0x14, 0x0b, 0x81, 0x56, 0x2e, 0xd9, 0xd4, 0x8b, 0xe8, 0x70, 0x02, 0x6d,
		0x08, 0x6d, 0x08, 0x6d, 0x88, 0x0e, 0x27, 0xb2, 0xfc, 0x32, 0x74, 0x38, 0x11, 0xde, 0x16, 0x74,
		0x38, 0xc9, 0x82, 0x43, 0x8f, 0x0e, 0x27, 0xb1, 0xdc, 0x4a, 0x74, 0x38, 0x91, 0x34, 0x3a, 0x3a,
		0x9c, 0xc4, 0x01, 0x31, 0xe8, 0x70, 0x42, 0xe0, 0x40, 0xa1, 0xf1, 0x47, 0xb2, 0xc6, 0x1f, 0x61,
		0x69, 0x78, 0x55, 0x25, 0xf0, 0x3f, 0x10, 0xee, 0x8a, 0xaf, 0x1d, 0xa4, 0xf1, 0x77, 0x62, 0x2c,
		0xb4, 0x38, 0xeb, 0x4c, 0xc2, 0x32, 0x4b, 0x60, 0x95, 0x25, 0xb0, 0xc8, 0x49, 0xb7, 0x55, 0xf0,
		0x90, 0xa5, 0x78, 0xb8, 0x34, 0xae, 0x8e, 0x0f, 0x4e, 0xaf, 0xe5, 0x45, 0x8c, 0xb6, 0x76, 0x17,
		0x3e, 0x52, 0x2d, 0x78, 0xa2, 0xe6, 0x45, 0xf8, 0x00, 0xf7, 0xcc, 0x73, 0x9b, 0x67, 0x4f, 0xdd,
		0xf1, 0x5f, 0x2b, 0xaf, 0xde, 0xf9, 0x60, 0xea, 0x7b, 0xe6, 0x25, 0x3b, 0xd0, 0xf1, 0x8f, 0x65,
		0xbc, 0x77, 0xc6, 0xdc, 0x61, 0xde, 0x9d, 0x55, 0xb6, 0xa3, 0xf1, 0x56, 0x71, 0xf5, 0x9a, 0x2c,
		0x7f, 0xc7, 0x8a, 0xd5, 0x4a, 0xba, 0x4a, 0x34, 0xab, 0x13, 0x43, 0x94, 0x39, 0x45, 0x77, 0xf9,
		0x22, 0x2f, 0x5e, 0xba, 0x25, 0xcb, 0xa6, 0x59, 0xcc, 0x7c, 0x7a, 0xfe, 0x6e, 0x3b, 0xe1, 0xa3,
		0xaf, 0x5a, 0xb5, 0x21, 0x18, 0x9e, 0xfc, 0xd8, 0x8a, 0x6d, 0x89, 0xd7, 0x16, 0x25, 0x36, 0x45,
		0x99, 0x84, 0x82, 0x1c, 0xa7, 0x18, 0x9d, 0x78, 0xfc, 0x62, 0x52, 0x48, 0xce, 0xcd, 0x0f, 0x72,
		0x43, 0xe8, 0x69, 0x7e, 0xcf, 0x89, 0x45, 0xee, 0x89, 0x1d, 0xad, 0xb8, 0x0d, 0x42, 0x26, 0x24,
		0x23, 0xfe, 0x1a, 0xce, 0x93, 0xab, 0xb8, 0xcb, 0x98, 0xac, 0xeb, 0x4e, 0x62, 0x26, 0x9c, 0x87,
		0xf1, 0xe6, 0x10, 0x3b, 0x51, 0x8f, 0x50, 0x98, 0xa6, 0x16, 0xf6, 0xe8, 0xf8, 0xc4, 0x92, 0xc6,
		0x5e, 0x26, 0xed, 0x67, 0xa3, 0xb5, 0x06, 0x52, 0x91, 0x70, 0xd5, 0x07, 0x1b, 0x1d, 0x7d, 0x3e,
		0x29, 0x0e, 0xe7, 0x6a, 0x18, 0xc5, 0x1d, 0xcc, 0x11, 0x09, 0xde, 0x08, 0x88, 0xb4, 0x2c, 0xb2,
		0x43, 0x5a, 0x24, 0x46, 0x1a, 0x79, 0x21, 0x26, 0xf2, 0x6a, 0x7c, 0x3d, 0xde, 0xd6, 0x4e, 0x9a,
		0xd1, 0x6e, 0x3b, 0xcc, 0x75, 0xc5, 0x7b, 0xaa, 0x0d, 0x06, 0x42, 0xa3, 0x48, 0x81, 0xc3, 0x23,
		0x9b, 0x31, 0xcc, 0x5f, 0x4b, 0x35, 0x67, 0x23, 0x5b, 0x44, 0x9a, 0x5d, 0x5d, 0xec, 0xfc, 0x14,
		0x24, 0x75, 0xfe, 0x91, 0xd3, 0xe9, 0x47, 0x62, 0xf4, 0xd6, 0xec, 0xfe, 0x28, 0x4b, 0x58, 0x9b,
		0x99, 0x35, 0x92, 0x70, 0x7f, 0x41, 0xfa, 0x7d, 0x05, 0x6d, 0xd1, 0xc5, 0xf3, 0x9f, 0xa5, 0xfe,
		0xdc, 0x6b, 0xe7, 0x5b, 0xdf, 0xbe, 0xed, 0x24, 0xfd, 0xcc, 0xf6, 0xcf, 0xfd, 0xbe, 0x38, 0xbf,
		0xde, 0x90, 0xb1, 0x7c, 0x14, 0xc9, 0xfa, 0x4b, 0x7a, 0x2b, 0xc8, 0x5e, 0x45, 0x19, 0x17, 0x96,
		0x52, 0x4d, 0x2d, 0x96, 0x7b, 0x4c, 0x0f, 0x37, 0xe7, 0x98, 0x06, 0xd2, 0x62, 0xe8, 0x8f, 0xa7,
		0xfa, 0x65, 0xe3, 0xe7, 0xde, 0xc7, 0x72, 0xff, 0x64, 0xfb, 0xe7, 0x51, 0x7f, 0xfa, 0xc5, 0xf7,
		0x79, 0x6f, 0xdb, 0xfb, 0x78, 0xd4, 0x3f, 0x59, 0xf0, 0x97, 0xc3, 0xfe, 0x49, 0xcc, 0x31, 0x0e,
		0xfa, 0x5b, 0x33, 0x6f, 0xf5, 0x5f, 0x2f, 0x2d, 0xfa, 0x40, 0x79, 0xc1, 0x07, 0xf6, 0x17, 0x7d,
		0x60, 0x7f, 0xc1, 0x07, 0x16, 0x3e, 0x52, 0x69, 0xc1, 0x07, 0x0e, 0xc2, 0x3b, 0x20, 0x13, 0xef,
		0xdf, 0x9a, 0xff, 0xd6, 0xc3, 0xfe, 0xf6, 0xfb, 0xa2, 0xbf, 0x1d, 0xf5, 0xdf, 0x4f, 0xb6, 0xb7,
		0x37, 0x40, 0x71, 0x41, 0xac, 0xd4, 0x8b, 0x55, 0xfa, 0x8a, 0xfc, 0x83, 0xda, 0x79, 0x79, 0x11,
		0xaf, 0x94, 0xbb, 0x28, 0xf2, 0xee, 0xa0, 0x90, 0xde, 0x3d, 0x91, 0x78, 0xe7, 0x44, 0xe2, 0x5d,
		0x93, 0xb4, 0x43, 0xf3, 0x6f, 0x4f, 0xb6, 0xa7, 0xdb, 0x2d, 0xbd, 0x65, 0xbf, 0x74, 0x7d, 0x63,
		0xcf, 0xda, 0x7a, 0x87, 0x19, 0x8f, 0xfe, 0xa0, 0xfd, 0x0c, 0x37, 0x8e, 0x17, 0xba, 0x12, 0x33,
		0x22, 0xae, 0xf9, 0x2f, 0xbe, 0x80, 0xe0, 0x00, 0xc1, 0xb1, 0xc1, 0x04, 0x87, 0xf0, 0x95, 0x14,
		0xc1, 0xab, 0x28, 0x50, 0x9b, 0xc4, 0x04, 0x74, 0x26, 0xb2, 0x52, 0x26, 0x02, 0xd6, 0x13, 0xbf,
		0xed, 0x46, 0xa1, 0x1b, 0xaa, 0x3c, 0x90, 0x04, 0xa1, 0x3f, 0x2e, 0x53, 0x24, 0x62, 0x82, 0x38,
		0x4d, 0x0f, 0x02, 0x50, 0x08, 0x40, 0x29, 0x30, 0x15, 0xc3, 0x1d, 0xf7, 0xf5, 0xa1, 0xc3, 0x1e,
		0x79, 0x76, 0x7c, 0x60, 0x1b, 0x8e, 0x38, 0x3e, 0x5b, 0x8b, 0x54, 0xce, 0xce, 0x4e, 0xa4, 0x23,
		0x76, 0x83, 0x23, 0x96, 0x01, 0x45, 0x11, 0xa6, 0xa2, 0x72, 0x6b, 0x8a, 0xf0, 0xe3, 0x8a, 0x63,
		0xd5, 0x25, 0xa8, 0x0a, 0xa8, 0x8a, 0x15, 0x8f, 0x88, 0x58, 0x35, 0x5c, 0x39, 0xb8, 0x72, 0x88,
		0x55, 0x23, 0x56, 0x1d, 0xd7, 0xe5, 0x45, 0xac, 0x5a, 0xe4, 0x1f, 0x62, 0xd5, 0x88, 0x55, 0x23,
		0x56, 0x8d, 0xa0, 0x22, 0x62, 0xd5, 0x88, 0x55, 0x23, 0x56, 0x8d, 0x58, 0x75, 0xa2, 0x51, 0x10,
		0xab, 0x16, 0x88, 0x55, 0x23, 0xb4, 0x0b, 0x3e, 0x00, 0x7c, 0xc0, 0x9a, 0xf3, 0x01, 0xa9, 0x87,
		0x76, 0x11, 0x09, 0x4d, 0x14, 0x09, 0xe5, 0xa8, 0x70, 0x91, 0xd6, 0x85, 0xf8, 0xa8, 0x82, 0x45,
		0x02, 0xdd, 0xcc, 0x67, 0xf5, 0xf9, 0xad, 0xbc, 0x54, 0xab, 0x2e, 0x60, 0xc5, 0x05, 0xac, 0x76,
		0x2e, 0xaa, 0x13, 0x2c, 0x96, 0x67, 0x2d, 0x51, 0x44, 0x2d, 0xde, 0x8d, 0xfc, 0x9b, 0x68, 0xfc,
		0xd8, 0x95, 0x23, 0xd6, 0xb2, 0xe6, 0xc1, 0xe4, 0xf5, 0x7f, 0x82, 0xb2, 0x04, 0xa1, 0x55, 0x4f,
		0x58, 0x94, 0x60, 0xfc, 0x43, 0x28, 0x49, 0x80, 0x92, 0x04, 0xb3, 0xc2, 0x94, 0xbc, 0x20, 0xc1,
		0xd8, 0x67, 0x51, 0x8e, 0x40, 0x25, 0x44, 0x47, 0x39, 0x02, 0x94, 0x23, 0xa0, 0xf5, 0x4a, 0x91,
		0xe2, 0x91, 0x86, 0x0f, 0xc4, 0x9d, 0xe2, 0xf1, 0x62, 0xb7, 0x25, 0x90, 0x39, 0xc1, 0x28, 0x20,
		0x73, 0x40, 0xe6, 0x80, 0xcc, 0x49, 0x28, 0x31, 0xcc, 0xea, 0xbd, 0x30, 0x27, 0xf4, 0x34, 0x24,
		0x30, 0x3a, 0x02, 0x95, 0xd1, 0xe5, 0x54, 0x44, 0x97, 0x5b, 0x09, 0x3d, 0xac, 0x80, 0x5e, 0xad,
		0x7d, 0x2d, 0xcb, 0x88, 0x1b, 0xef, 0x45, 0x83, 0x1d, 0xca, 0x18, 0x2c, 0xa8, 0x79, 0x7e, 0x5d,
		0xfd, 0xa3, 0x72, 0xa1, 0xa5, 0x5b, 0xbf, 0x5f, 0x5a, 0x89, 0xf3, 0x70, 0x9d, 0xe5, 0xf4, 0xa8,
		0x0a, 0x56, 0x59, 0x4a, 0x99, 0xf4, 0x68, 0x8d, 0x45, 0x6b, 0x99, 0x6f, 0x5a, 0x45, 0x5f, 0x5c,
		0x1b, 0x04, 0x1c, 0x01, 0x1c, 0x01, 0x1c, 0x49, 0x28, 0x31, 0xb8, 0x36, 0x88, 0x6b, 0x83, 0x4b,
		0x3f, 0x2f, 0x85, 0xe8, 0x1e, 0xa3, 0x94, 0xc7, 0x7e, 0xc6, 0x95, 0x41, 0x5c, 0x19, 0x04, 0x49,
		0x44, 0x78, 0xf6, 0x71, 0x65, 0x50, 0xba, 0xa2, 0x08, 0x85, 0x8f, 0xb9, 0xfc, 0xca, 0x62, 0x38,
		0x02, 0x58, 0x65, 0x28, 0x8c, 0x75, 0x61, 0x95, 0xbb, 0x62, 0x4e, 0xcc, 0xd4, 0xe1, 0x10, 0x74,
		0xe5, 0xf6, 0xe0, 0xca, 0xc1, 0x95, 0xcb, 0x8b, 0x2b, 0xc7, 0x7b, 0xe4, 0x86, 0x03, 0x70, 0xc6,
		0x38, 0x17, 0x0a, 0x1e, 0x57, 0xcc, 0x53, 0xf2, 0x51, 0x94, 0x76, 0x24, 0x65, 0x1e, 0x4d, 0x82,
		0x23, 0x2a, 0xfb, 0xa8, 0x92, 0x1d, 0x59, 0xb2, 0xa3, 0x4b, 0x73, 0x84, 0xc5, 0x8e, 0xb2, 0xe0,
		0x91, 0x96, 0x76, 0xb4, 0x87, 0x03, 0x99, 0x5d, 0xbd, 0x2b, 0x4f, 0x7e, 0x0b, 0x53, 0x77, 0x8d,
		0xe5, 0x0a, 0x88, 0x9c, 0x46, 0xdb, 0xd2, 0x15, 0x00, 0x85, 0x22, 0x20, 0x54, 0x08, 0x54, 0x8a,
		0x81, 0x5c, 0x41, 0x90, 0x2b, 0x0a, 0x5a, 0x85, 0x21, 0x47, 0x71, 0x48, 0x52, 0x20, 0xc3, 0xaf,
		0x7a, 0x6d, 0x58, 0x6d, 0xc3, 0xb3, 0x9d, 0x37, 0x79, 0x8d, 0x88, 0xe5, 0xb5, 0x01, 0x27, 0x57,
		0x29, 0x05, 0x49, 0xd5, 0x0c, 0x16, 0x2d, 0xc1, 0x83, 0x54, 0xb9, 0x94, 0x7b, 0x4e, 0x0b, 0x33,
		0xd5, 0x0f, 0x48, 0x4e, 0x6b, 0x41, 0xf2, 0x2d, 0xeb, 0x79, 0x84, 0x8e, 0xd4, 0xfb, 0xb1, 0x33,
		0x13, 0xa8, 0xba, 0xe6, 0xbf, 0x3b, 0xfc, 0x50, 0x29, 0xfa, 0xeb, 0xfe, 0x43, 0x51, 0x2f, 0x35,
		0xb6, 0x35, 0xe9, 0xdf, 0xab, 0x41, 0xb1, 0x0f, 0x14, 0x97, 0x95, 0x67, 0x66, 0x51, 0x57, 0x75,
		0x61, 0xe1, 0x76, 0xc8, 0xb8, 0xc5, 0x3b, 0xb3, 0x21, 0x52, 0x47, 0xec, 0x7f, 0xcc, 0x91, 0xde,
		0x39, 0x84, 0xde, 0x59, 0xa0, 0x77, 0x70, 0x4d, 0x3f, 0xa5, 0x6b, 0xfa, 0xbb, 0x5b, 0x7b, 0xbe,
		0x56, 0xf8, 0x14, 0xaa, 0x89, 0xbd, 0xc6, 0x8c, 0xf6, 0x08, 0xfe, 0x1f, 0x7a, 0x79, 0x56, 0x2f,
		0x43, 0x5a, 0x33, 0x2b, 0xad, 0xd9, 0xb7, 0x5a, 0x1f, 0xb2, 0xf5, 0x5c, 0xb2, 0x5c, 0x2c, 0x49,
		0xf9, 0x24, 0x33, 0xe3, 0x4a, 0xcf, 0x2f, 0x91, 0xbf, 0x21, 0x12, 0x96, 0x50, 0x7b, 0x31, 0xdc,
		0xff, 0x76, 0x98, 0xf5, 0xe4, 0x3d, 0xeb, 0x8e, 0x61, 0x3d, 0x31, 0xf9, 0x44, 0xd5, 0xcc, 0x0c,
		0xe0, 0xab, 0xc0, 0x57, 0x81, 0xaf, 0xca, 0x24, 0x5f, 0x45, 0xc7, 0x2d, 0x09, 0xa7, 0x2b, 0xaa,
		0xf0, 0x3e, 0xc8, 0xbc, 0x8e, 0xc8, 0xdb, 0x68, 0xfc, 0xf2, 0xed, 0xdb, 0xce, 0xb7, 0x6f, 0x3b,
		0xe1, 0xcf, 0xdb, 0xef, 0xec, 0xd5, 0x68, 0x79, 0x12, 0x81, 0x6e, 0x43, 0xe6, 0x52, 0x50, 0x02,
		0xdb, 0x21, 0xd1, 0x30, 0x77, 0x41, 0x24, 0x62, 0x29, 0x60, 0x95, 0xac, 0x60, 0x95, 0x54, 0x03,
		0x7a, 0x92, 0x17, 0x9e, 0x34, 0xb7, 0x76, 0x90, 0x66, 0x16, 0xfd, 0xc0, 0x95, 0x6b, 0x2b, 0x6f,
		0xf5, 0x05, 0x56, 0x5e, 0x62, 0xf4, 0x53, 0x7a, 0x88, 0x42, 0x12, 0x7a, 0x44, 0x9a, 0x43, 0xc6,
		0x50, 0x21, 0xd2, 0x1c, 0xd2, 0x40, 0x7b, 0x12, 0xb2, 0x8e, 0x17, 0xc2, 0xbb, 0x23, 0x39, 0xa5,
		0x83, 0xa7, 0xb2, 0x92, 0x47, 0x7a, 0x24, 0x87, 0x7a, 0x55, 0xba, 0xcf, 0x4e, 0xe5, 0xab, 0x43,
		0xcb, 0x42, 0xcb, 0x42, 0xcb, 0x6e, 0xae, 0x96, 0x9d, 0x51, 0x27, 0x39, 0x54, 0xb6, 0x7c, 0xad,
		0xa6, 0x96, 0xf0, 0x20, 0xc9, 0x5b, 0x4f, 0x2d, 0xdc, 0x35, 0x59, 0x6a, 0xb5, 0x04, 0xb5, 0x0a,
		0xb5, 0x9a, 0x33, 0xb5, 0x8a, 0x1c, 0x5d, 0xf1, 0xe1, 0x10, 0xf3, 0x40, 0xcc, 0x43, 0xa1, 0xc2,
		0x90, 0xc7, 0x26, 0x16, 0x90, 0xa3, 0x8b, 0x1c, 0x5d, 0xd9, 0x0b, 0x8b, 0x1c, 0xdd, 0x45, 0x13,
		0x20, 0x47, 0x37, 0xde, 0x3e, 0x20, 0x47, 0x57, 0x60, 0x43, 0x90, 0xa3, 0x0b, 0xbd, 0x33, 0xad,
		0x77, 0x90, 0xf5, 0x88, 0x1c, 0xdd, 0x9c, 0xe9, 0x65, 0x48, 0x2b, 0x72, 0x74, 0xd3, 0x75, 0x8c,
		0xe4, 0x3d, 0x17, 0x52, 0x54, 0x41, 0xd7, 0x80, 0xae, 0x01, 0x5d, 0x93, 0x25, 0xba, 0x06, 0x29,
		0xaa, 0x48, 0x51, 0x55, 0x81, 0xeb, 0xf2, 0x96, 0xa2, 0x8a, 0x0c, 0xcd, 0x89, 0xf1, 0x54, 0x66,
		0x68, 0x72, 0xb4, 0x0d, 0x94, 0xb7, 0xf8, 0x6a, 0x8b, 0x5e, 0x45, 0x6d, 0x07, 0x87, 0x2c, 0x74,
		0x41, 0x12, 0x74, 0x42, 0x4b, 0x62, 0xd1, 0xa1, 0xc4, 0x5b, 0x12, 0xa7, 0x5c, 0xd0, 0x59, 0xe1,
		0x89, 0xd5, 0x84, 0xf2, 0x41, 0xe2, 0x35, 0x4a, 0x0c, 0xb1, 0xf5, 0x3d, 0xf3, 0xa2, 0x9f, 0x34,
		0x14, 0xa5, 0x56, 0xb4, 0xc9, 0x59, 0xa8, 0x36, 0xcb, 0x97, 0x35, 0x24, 0x94, 0x25, 0x24, 0x5c,
		0x67, 0xb6, 0x84, 0x3a, 0xb3, 0xa9, 0x7a, 0x77, 0xe8, 0x5e, 0xb6, 0x9a, 0xa8, 0x41, 0xf7, 0x32,
		0xd4, 0x98, 0x4d, 0x95, 0x1c, 0x41, 0xf7, 0x32, 0x74, 0x2f, 0x5b, 0x35, 0x18, 0xba, 0x97, 0x2d,
		0x1f, 0x0a, 0xdd, 0xcb, 0x24, 0x6a, 0x16, 0x34, 0xfb, 0x82, 0xf5, 0x86, 0xf5, 0x5e, 0x73, 0xeb,
		0x9d, 0x7a, 0xb3, 0x2f, 0xd0, 0x10, 0xb1, 0x69, 0x08, 0x0e, 0x36, 0xb8, 0x9f, 0x52, 0x5b, 0xf6,
		0x88, 0xcd, 0x4d, 0xa0, 0x97, 0xf9, 0x78, 0x5a, 0x7e, 0x5e, 0x56, 0x2a, 0x0f, 0x2b, 0xc0, 0xbb,
		0x0a, 0xf0, 0xac, 0x71, 0x37, 0x83, 0x53, 0xa6, 0x29, 0x65, 0x59, 0x4b, 0xc4, 0x78, 0x25, 0xe4,
		0x45, 0xe3, 0x1d, 0x91, 0xd5, 0x02, 0xbf, 0xfc, 0x1d, 0x2b, 0x56, 0x3f, 0xe9, 0xaa, 0x4b, 0x5f,
		0xed, 0xe5, 0xab, 0xb0, 0xf8, 0xbb, 0x2d, 0xf9, 0x5e, 0x9a, 0x67, 0x3c, 0x85, 0x63, 0xaf, 0xfa,
		0x46, 0x43, 0xfb, 0x32, 0xfc, 0xc4, 0x8a, 0xd5, 0x8a, 0x47, 0x31, 0xc6, 0x46, 0x5b, 0x49, 0x50,
		0x15, 0x07, 0x7a, 0x4a, 0x8a, 0x92, 0xb8, 0xd1, 0x10, 0x37, 0xea, 0xe1, 0x43, 0x37, 0x62, 0x12,
		0x1f, 0x97, 0xc2, 0x1b, 0x08, 0x45, 0xfc, 0xe5, 0x9b, 0x92, 0xa6, 0xb8, 0x8b, 0x97, 0x8c, 0xb7,
		0x4e, 0x0c, 0xe5, 0x79, 0xa0, 0xbb, 0x00, 0x54, 0xe7, 0x85, 0xe6, 0xc2, 0x50, 0x5c, 0x18, 0x7a,
		0x8b, 0x41, 0x6d, 0xb9, 0xc8, 0x24, 0x29, 0xcf, 0xcc, 0xdb, 0x4c, 0x49, 0xac, 0x79, 0x12, 0x5a,
		0xfb, 0xa5, 0xe3, 0x6d, 0x22, 0xe4, 0x02, 0xd2, 0x06, 0xa4, 0x0d, 0x48, 0x1b, 0x90, 0x36, 0x14,
		0x2b, 0xb0, 0x4e, 0x1d, 0xda, 0x39, 0x8c, 0x9c, 0x8f, 0x5e, 0x7f, 0x18, 0x9d, 0x9e, 0x04, 0xdd,
		0x39, 0x1a, 0x0a, 0x0a, 0x14, 0x0a, 0x14, 0x0a, 0x94, 0xe3, 0xf8, 0x78, 0xfe, 0x68, 0x12, 0x54,
		0xa8, 0x40, 0x69, 0x03, 0x39, 0xa5, 0x0c, 0x24, 0x96, 0x46, 0xea, 0x99, 0x96, 0xb7, 0x5f, 0x92,
		0x58, 0xfe, 0x4b, 0x46, 0xf5, 0xaf, 0xbb, 0xe8, 0x6a, 0x96, 0x9c, 0x2c, 0x7c, 0x89, 0xd7, 0x3b,
		0xae, 0x4d, 0x4b, 0xfe, 0x95, 0xa1, 0xaf, 0x91, 0x81, 0x28, 0x4a, 0xbe, 0xc8, 0x73, 0xe9, 0x18,
		0x2d, 0xdf, 0xf2, 0x5e, 0x98, 0x4f, 0xa6, 0x68, 0x0e, 0xf3, 0x7c, 0x19, 0x62, 0x4f, 0x86, 0x67,
		0xfe, 0x60, 0x42, 0xa9, 0xc2, 0x12, 0xd5, 0xc5, 0xfc, 0x2d, 0x33, 0x5e, 0xe9, 0xb6, 0xac, 0x5c,
		0x3a, 0x2e, 0x1f, 0x1f, 0x1e, 0x95, 0x8e, 0x0f, 0xb0, 0x77, 0x42, 0x06, 0x42, 0xfe, 0x28, 0x8d,
		0x34, 0x33, 0x5c, 0x24, 0x2a, 0xe8, 0x67, 0xf6, 0xaa, 0x4b, 0xbb, 0x4d, 0x26, 0xf3, 0x16, 0x99,
		0xf4, 0xdb, 0x63, 0xda, 0xc4, 0xad, 0xef, 0xe9, 0xcb, 0xde, 0xa5, 0xfe, 0xf6, 0xbf, 0xb6, 0x7f,
		0xd5, 0xd2, 0x96, 0x8b, 0x0f, 0x6a, 0xe7, 0xed, 0xe3, 0x0a, 0xcc, 0xea, 0xc1, 0x71, 0x05, 0x26,
		0xa3, 0x1e, 0xf3, 0xfa, 0xe7, 0x6d, 0x0c, 0x82, 0x9d, 0x83, 0x1f, 0xb8, 0x3a, 0x2c, 0xd0, 0x5c,
		0x1b, 0xe1, 0xa2, 0x6c, 0x45, 0xa8, 0x5a, 0x4e, 0x86, 0x01, 0x11, 0x0c, 0x44, 0x30, 0x14, 0x30,
		0x02, 0x12, 0x2a, 0x5e, 0x8b, 0x54, 0xb8, 0x9e, 0x53, 0xd1, 0x3a, 0x38, 0x62, 0xb8, 0x5f, 0xc6,
		0xa5, 0x2a, 0x70, 0xbf, 0x0c, 0xaa, 0x62, 0xd5, 0x23, 0x22, 0xd8, 0x09, 0xae, 0x9e, 0xe6, 0x18,
		0x49, 0x3f, 0x4e, 0x72, 0x8f, 0x95, 0x98, 0xb3, 0x8a, 0x60, 0x27, 0x62, 0x83, 0xd0, 0x37, 0xd0,
		0x37, 0x9b, 0xa3, 0x6f, 0x10, 0x1b, 0x9c, 0xbf, 0x2e, 0x88, 0x0d, 0x26, 0x24, 0x4b, 0x11, 0x1b,
		0x1c, 0xc9, 0x10, 0x62, 0x83, 0x88, 0x0d, 0xca, 0x31, 0x10, 0xf2, 0x47, 0x41, 0x6c, 0x70, 0x29,
		0x68, 0x46, 0x6c, 0x50, 0xb1, 0x5c, 0x22, 0x36, 0xb8, 0x61, 0xb1, 0x41, 0x84, 0xd2, 0x62, 0x84,
		0xd2, 0x70, 0xf9, 0x59, 0xe2, 0xa9, 0xc3, 0xe5, 0xe7, 0x74, 0xa4, 0x98, 0xe2, 0xda, 0x73, 0xdd,
		0x78, 0xda, 0xec, 0x3b, 0xcf, 0xc3, 0x2b, 0xc6, 0xbc, 0x17, 0x9e, 0x3f, 0x24, 0xf8, 0xaa, 0xda,
		0x69, 0xef, 0xc9, 0x3f, 0x36, 0xac, 0xbd, 0x14, 0xcd, 0xc4, 0xbc, 0x1d, 0xbd, 0x1b, 0xb1, 0x2c,
		0x27, 0x53, 0xdf, 0x6f, 0xf0, 0xf2, 0xf8, 0xf7, 0x5c, 0x75, 0x83, 0xfa, 0x82, 0xb9, 0x2d, 0xc7,
		0xec, 0x46, 0x8b, 0xaf, 0x19, 0xed, 0xb6, 0x5b, 0x38, 0xfb, 0x5c, 0x2b, 0x44, 0x63, 0x14, 0xfc,
		0x31, 0x0a, 0x2d, 0xdb, 0xf2, 0x0c, 0xd3, 0x62, 0x4e, 0xc1, 0xb3, 0x0b, 0xd1, 0xa4, 0x85, 0x70,
		0xd2, 0x6f, 0xd6, 0x8b, 0xdd, 0x66, 0x9d, 0x9c, 0x5c, 0xd4, 0xfe, 0xfe, 0xd4, 0xd5, 0xd7, 0xf5,
		0xae, 0xf6, 0xe0, 0xbb, 0x65, 0xe5, 0xba, 0xb6, 0xff, 0x3c, 0x13, 0x92, 0x98, 0xf8, 0xde, 0xf6,
		0xcc, 0x08, 0x71, 0x2f, 0xeb, 0x4e, 0xca, 0xf4, 0xd9, 0xe7, 0x9a, 0xee, 0xb0, 0x8e, 0xe1, 0x85,
		0xe2, 0x1c, 0x8a, 0xb6, 0xe9, 0xff, 0xd5, 0x2d, 0x3c, 0xda, 0x4e, 0x24, 0xc8, 0x85, 0x17, 0xc3,
		0x6b, 0x3d, 0xfb, 0xa2, 0xde, 0x0e, 0xff, 0xb6, 0x26, 0xd7, 0xc5, 0xe3, 0x8b, 0xbc, 0x28, 0x75,
		0x9d, 0xbd, 0x1b, 0xe3, 0xb1, 0x8f, 0x44, 0x42, 0x44, 0x27, 0x7a, 0xc4, 0x12, 0x1a, 0x95, 0xc6,
		0x22, 0xa3, 0x12, 0xcf, 0x6e, 0x4a, 0xb1, 0x97, 0x4b, 0xb6, 0x32, 0x2e, 0xe6, 0x98, 0xbf, 0x0d,
		0xb3, 0x5f, 0x79, 0x8e, 0x06, 0xd2, 0xc2, 0x27, 0xd2, 0xc7, 0x8e, 0xee, 0xc2, 0xaf, 0x3c, 0x14,
		0xfe, 0x39, 0x9f, 0x59, 0xb0, 0x90, 0xcb, 0x8f, 0xf0, 0xca, 0x23, 0x1b, 0xe7, 0x88, 0x26, 0x08,
		0x2d, 0xc5, 0x3d, 0x7f, 0x89, 0xcf, 0x5b, 0xe2, 0xf3, 0x95, 0x2c, 0xb4, 0x93, 0x0c, 0x11, 0xad,
		0xb2, 0x23, 0xb3, 0xdb, 0x17, 0xbf, 0x7c, 0xcc, 0xec, 0x47, 0x51, 0x47, 0x06, 0x75, 0x64, 0x06,
		0x6f, 0x4c, 0x58, 0x9a, 0x83, 0xaf, 0x24, 0x07, 0xaa, 0xc8, 0x64, 0x14, 0x13, 0xe4, 0xaa, 0x8a,
		0x0c, 0xf2, 0xaf, 0x69, 0xc4, 0x59, 0x54, 0xac, 0xa5, 0x89, 0xb7, 0x34, 0x31, 0x97, 0x23, 0xee,
		0x6a, 0xa8, 0x62, 0xf1, 0xfc, 0x6b, 0xee, 0x80, 0x15, 0x67, 0x56, 0x97, 0x6a, 0x32, 0x5c, 0xda,
		0xc5, 0x9b, 0xb4, 0xc8, 0x6c, 0xd5, 0xfc, 0xe9, 0x2c, 0xd6, 0x9f, 0x7d, 0x29, 0xd1, 0xbd, 0x9a,
		0x18, 0x3e, 0x5e, 0x0c, 0xa0, 0x96, 0x48, 0x7f, 0xf3, 0xe8, 0xed, 0x84, 0xfa, 0x1a, 0x30, 0x63,
		0x13, 0x60, 0x46, 0x62, 0xfd, 0x2a, 0x70, 0xaf, 0x85, 0xe7, 0x3e, 0x8b, 0xd0, 0x3d, 0x16, 0x39,
		0x07, 0x33, 0xd9, 0x7d, 0x15, 0xae, 0x7b, 0x2a, 0xdc, 0x1e, 0x40, 0x09, 0x47, 0x13, 0x1e, 0x00,
		0x3c, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x32, 0xe4, 0x01, 0x00, 0x48, 0x8f, 0x80, 0x74, 0x82, 0xac,
		0x1a, 0x89, 0xe6, 0x7a, 0x90, 0x77, 0xc2, 0x63, 0xb3, 0xc3, 0xcf, 0x82, 0xba, 0x83, 0xe1, 0x56,
		0x65, 0xb8, 0x87, 0x62, 0x27, 0x78, 0x2b, 0x3a, 0x18, 0x02, 0x65, 0xa0, 0x61, 0xc2, 0xd7, 0xe5,
		0x66, 0x74, 0x78, 0xf1, 0xc0, 0x15, 0xbf, 0xb1, 0x38, 0x18, 0x48, 0xec, 0xbe, 0xe2, 0x1e, 0xee,
		0x2b, 0x16, 0x70, 0x5f, 0x31, 0x27, 0xf7, 0x15, 0x79, 0x0f, 0xdd, 0x70, 0x80, 0xef, 0x4f, 0x5d,
		0x5d, 0xf4, 0x00, 0xce, 0x48, 0xdf, 0xf8, 0xa0, 0x82, 0x7b, 0x23, 0x76, 0x28, 0xa5, 0x1d, 0x4e,
		0x99, 0x87, 0x74, 0xde, 0x61, 0x4d, 0x9e, 0x94, 0x45, 0x7d, 0x6e, 0xc9, 0xce, 0x2f, 0xd9, 0x39,
		0x5e, 0x74, 0x9e, 0x13, 0x27, 0x7d, 0xc9, 0x3d, 0xda, 0x82, 0x47, 0x5c, 0xda, 0x51, 0x1f, 0x0e,
		0xc4, 0xd9, 0x89, 0x64, 0xa5, 0x18, 0x73, 0x75, 0x28, 0x21, 0x3e, 0xf8, 0xd2, 0x15, 0x00, 0x85,
		0x22, 0xa0, 0x55, 0x08, 0x54, 0x8a, 0x81, 0x5c, 0x41, 0x90, 0x2b, 0x0a, 0x72, 0x85, 0x21, 0x47,
		0x71, 0x48, 0x52, 0x20, 0xd2, 0x15, 0xc9, 0xc8, 0xb3, 0x65, 0x9e, 0xde, 0xb1, 0x5b, 0x46, 0x47,
		0xf7, 0xf7, 0x5f, 0xbe, 0x80, 0x0d, 0xdd, 0xdf, 0xc9, 0x79, 0x24, 0x0b, 0x81, 0x58, 0xb9, 0x12,
		0x65, 0x8a, 0x87, 0x52, 0x01, 0xa9, 0x51, 0x44, 0xd4, 0x0a, 0x49, 0x99, 0x62, 0x52, 0xa6, 0xa0,
		0x94, 0x29, 0x2a, 0xb9, 0x0a, 0x4b, 0xb2, 0xe2, 0x1a, 0xae, 0x82, 0x70, 0x91, 0x96, 0x95, 0x72,
		0x2f, 0xad, 0x48, 0xc9, 0x22, 0x2d, 0x73, 0x44, 0x30, 0xb4, 0xdc, 0x22, 0x26, 0xd3, 0xff, 0x68,
		0xce, 0x68, 0x81, 0xaa, 0xc8, 0xc9, 0xcc, 0x24, 0x44, 0x45, 0x4f, 0x66, 0xe6, 0xa1, 0x2e, 0xa4,
		0x31, 0x2b, 0xb3, 0x54, 0x85, 0x35, 0x88, 0x8f, 0xf1, 0xa4, 0x08, 0x18, 0xaf, 0xea, 0x44, 0x80,
		0xaa, 0x88, 0xca, 0x26, 0xc9, 0xc2, 0x87, 0x7c, 0x8c, 0xda, 0xc8, 0xb4, 0x21, 0x93, 0x54, 0x96,
		0x7d, 0xe1, 0xf8, 0xd2, 0xcb, 0xb5, 0xd3, 0x6f, 0x9c, 0xcc, 0x4a, 0x4c, 0xbe, 0xbf, 0xf0, 0x12,
		0xdc, 0xb0, 0x26, 0x74, 0x48, 0xfc, 0x09, 0xe0, 0x89, 0xc0, 0x13, 0x81, 0x27, 0x02, 0x4f, 0x84,
		0x40, 0xee, 0xfd, 0x85, 0x8d, 0xd4, 0x8c, 0x68, 0x39, 0xc9, 0x55, 0xfa, 0x46, 0xa4, 0xcc, 0xe4,
		0xaa, 0x15, 0xca, 0x9d, 0x4f, 0x42, 0xee, 0x09, 0x2a, 0xf0, 0x08, 0x15, 0x79, 0x86, 0xf4, 0xbb,
		0xa1, 0xd4, 0x53, 0x54, 0xed, 0x31, 0xa6, 0xe6, 0x2d, 0xa8, 0xf7, 0x1a, 0x14, 0x78, 0x92, 0x4a,
		0x3d, 0xca, 0xd4, 0x3c, 0xcb, 0x4d, 0x94, 0x99, 0x0f, 0xf9, 0x1c, 0xbd, 0xf1, 0x21, 0x47, 0x27,
		0x48, 0x81, 0x41, 0x95, 0x56, 0x5a, 0x74, 0x25, 0x9c, 0xf9, 0x44, 0x38, 0x87, 0xec, 0x52, 0xa4,
		0x0b, 0x27, 0x7a, 0xf8, 0x45, 0x6f, 0x3c, 0x14, 0xf5, 0xe3, 0xc6, 0x2f, 0x1a, 0x9d, 0x88, 0x52,
		0x2e, 0xd4, 0xed, 0x7d, 0xf5, 0x0f, 0x65, 0xab, 0xf5, 0xd7, 0x68, 0xb9, 0xfe, 0xa1, 0xe1, 0x48,
		0x2b, 0x3a, 0xd2, 0xcc, 0xea, 0xbd, 0x30, 0xc7, 0x88, 0x51, 0x57, 0x45, 0xca, 0xb9, 0x2e, 0x13,
		0xce, 0x51, 0xb1, 0x7a, 0x2f, 0xf4, 0x44, 0x74, 0xdd, 0xbe, 0x0f, 0xb5, 0xa0, 0x0a, 0x80, 0xa2,
		0x15, 0xfd, 0x3d, 0xaa, 0x7e, 0xae, 0x69, 0x1f, 0x72, 0x8c, 0xe9, 0xb4, 0xba, 0x5d, 0xe5, 0x48,
		0x9d, 0xe7, 0x9a, 0xca, 0x5f, 0xab, 0x93, 0x42, 0x31, 0xa7, 0x80, 0x03, 0xd4, 0xbc, 0x0c, 0x19,
		0x00, 0x35, 0x4f, 0xb9, 0xc4, 0x01, 0x73, 0x6e, 0xb1, 0x57, 0x4f, 0x7f, 0xb6, 0xbb, 0xb4, 0xfc,
		0xfc, 0x70, 0x16, 0x90, 0xf4, 0x20, 0xe9, 0x97, 0xef, 0x28, 0x48, 0xfa, 0x4c, 0x18, 0x87, 0x7c,
		0x92, 0xf4, 0x03, 0x3d, 0x03, 0x96, 0x3e, 0x05, 0x0f, 0xc4, 0xec, 0xea, 0x46, 0xbb, 0xed, 0xdb,
		0x51, 0x15, 0x0e, 0xc8, 0x31, 0xe1, 0x1c, 0xa4, 0x3b, 0x41, 0xbf, 0x23, 0x73, 0x76, 0xe6, 0x47,
		0x59, 0xc1, 0xde, 0xa8, 0x24, 0x7f, 0x94, 0x93, 0x40, 0xc3, 0x09, 0x83, 0x7e, 0x35, 0x8d, 0xf7,
		0x87, 0x3d, 0xfd, 0x38, 0x64, 0x39, 0xde, 0xf7, 0x82, 0xff, 0xfc, 0x2c, 0xf5, 0xdf, 0x4b, 0x0f,
		0x45, 0xbd, 0x1c, 0xbd, 0x5a, 0x3a, 0x78, 0x28, 0xea, 0x07, 0x8d, 0xed, 0xad, 0x6f, 0xdf, 0x76,
		0x92, 0x7e, 0x66, 0xfb, 0xe7, 0x7e, 0x5f, 0x23, 0xff, 0x3a, 0x0d, 0x15, 0xdb, 0xa3, 0x92, 0x7a,
		0x1a, 0x51, 0x50, 0x5b, 0xaa, 0x76, 0x69, 0xfb, 0x1f, 0x0a, 0xf6, 0x29, 0xcf, 0x9c, 0x81, 0x5a,
		0x35, 0x77, 0x08, 0x35, 0x27, 0x4b, 0xcd, 0x4d, 0xf4, 0xe5, 0xda, 0xfb, 0x58, 0xee, 0x9f, 0x6c,
		0xff, 0x3c, 0xea, 0x4f, 0xbf, 0xf8, 0x3e, 0xef, 0x6d, 0x7b, 0x1f, 0x8f, 0xfa, 0x27, 0x0b, 0xfe,
		0x72, 0xd8, 0x3f, 0x89, 0x39, 0xc6, 0xc1, 0x54, 0x2f, 0x30, 0xff, 0x0f, 0xfe, 0xeb, 0xa5, 0x45,
		0x1f, 0x28, 0x2f, 0xf8, 0xc0, 0xfe, 0xa2, 0x0f, 0xec, 0x2f, 0xf8, 0xc0, 0xc2, 0x47, 0x2a, 0x2d,
		0xf8, 0xc0, 0x41, 0xff, 0x7d, 0xe6, 0xfd, 0x5b, 0xf3, 0xdf, 0x7a, 0xd8, 0xdf, 0x7e, 0x5f, 0xf4,
		0xb7, 0xa3, 0xfe, 0xfb, 0xc9, 0xf6, 0x36, 0x14, 0xbf, 0xb0, 0xe2, 0x87, 0xd8, 0xaa, 0x17, 0xdb,
		0xfc, 0x1b, 0x42, 0xc4, 0xaa, 0x0a, 0x88, 0x55, 0x25, 0x9c, 0x63, 0x6d, 0x63, 0x55, 0xf7, 0x95,
		0xab, 0x4b, 0x15, 0x20, 0x6a, 0xcf, 0x9f, 0xac, 0x56, 0xa9, 0xdc, 0x35, 0x4f, 0x2f, 0x2e, 0xee,
		0x2a, 0xf7, 0xf7, 0x88, 0x90, 0xc5, 0xb5, 0xb0, 0xe3, 0x8b, 0x26, 0xed, 0x92, 0xfe, 0x72, 0xf6,
		0xd7, 0x17, 0x0a, 0x44, 0xe5, 0xa8, 0x47, 0x45, 0x54, 0x6e, 0xc3, 0xa3, 0x72, 0x8e, 0xdd, 0xf3,
		0x98, 0x6e, 0x3b, 0xe6, 0x13, 0x45, 0xeb, 0xf9, 0xf1, 0xc8, 0xdc, 0xc4, 0x4c, 0x88, 0xce, 0x21,
		0x3a, 0xb7, 0x7c, 0x47, 0x11, 0x9d, 0xcb, 0x84, 0x91, 0xc8, 0x67, 0x74, 0x2e, 0xd4, 0x32, 0xba,
		0xe1, 0x79, 0x0e, 0x79, 0x80, 0x8e, 0x00, 0xf3, 0xd3, 0x62, 0x7d, 0x35, 0x18, 0x7f, 0x94, 0x87,
		0x46, 0xe8, 0x13, 0x05, 0x90, 0xbe, 0x42, 0x3b, 0x47, 0x29, 0xf8, 0x1e, 0x37, 0xe7, 0xb7, 0xd7,
		0xb5, 0xab, 0x4a, 0xbd, 0xa2, 0xe5, 0xc9, 0xc3, 0x56, 0xe0, 0x24, 0x04, 0xcb, 0x4f, 0xea, 0x13,
		0x0c, 0x12, 0xf4, 0x28, 0x67, 0x18, 0x6d, 0xef, 0x49, 0xa1, 0x94, 0x13, 0xec, 0xde, 0x07, 0x76,
		0xcf, 0x19, 0x76, 0xcf, 0x54, 0x5d, 0x30, 0xa2, 0x0d, 0x52, 0x50, 0x79, 0x3e, 0x28, 0xe6, 0x3e,
		0xfa, 0x71, 0x37, 0xaa, 0x3d, 0xba, 0x3b, 0x56, 0x87, 0x34, 0x51, 0xaf, 0x27, 0xfa, 0x7d, 0x93,
		0xb0, 0x67, 0x81, 0x0f, 0x65, 0xb8, 0xba, 0xbf, 0xb0, 0x7a, 0xd7, 0x61, 0x5d, 0x66, 0xb5, 0xe5,
		0x17, 0x75, 0x9c, 0x37, 0x09, 0x2a, 0x3c, 0x66, 0xd3, 0x17, 0x43, 0x85, 0xc7, 0xd4, 0x7c, 0xad,
		0x35, 0xaf, 0xf0, 0x28, 0xb9, 0x64, 0xec, 0xcc, 0x71, 0x90, 0x5a, 0x3a, 0x96, 0x48, 0xc1, 0x80,
		0x04, 0x02, 0x09, 0x04, 0x12, 0x88, 0xc6, 0x37, 0x90, 0xad, 0xb0, 0x86, 0x03, 0x1b, 0x2e, 0x5d,
		0xc1, 0x88, 0x51, 0xdf, 0x09, 0x97, 0x2a, 0x96, 0x4c, 0xc4, 0x63, 0x93, 0xab, 0x32, 0x15, 0x2a,
		0x4d, 0xad, 0x6a, 0x53, 0xa5, 0xe2, 0x94, 0xab, 0x3a, 0xe5, 0x2a, 0x4f, 0xb9, 0xea, 0xa3, 0x23,
		0x5c, 0x48, 0x89, 0x3a, 0x2a, 0x5e, 0x7c, 0x8e, 0xfa, 0xd2, 0xad, 0xde, 0xcb, 0x77, 0xe6, 0xa0,
		0xca, 0x51, 0x8c, 0x7f, 0xa8, 0x72, 0x24, 0x36, 0x1f, 0xaa, 0x1c, 0x49, 0x15, 0x15, 0x54, 0x39,
		0x5a, 0x2f, 0x99, 0x41, 0x9a, 0xa9, 0x02, 0xdb, 0x4a, 0x1c, 0x8a, 0x18, 0xce, 0xa3, 0x2c, 0x24,
		0x41, 0xb7, 0xc1, 0x04, 0x5b, 0xa0, 0x39, 0xac, 0xcb, 0x0c, 0x4f, 0x57, 0xe0, 0x99, 0x0d, 0x67,
		0x82, 0x7b, 0x06, 0xf7, 0x0c, 0xee, 0x19, 0xdc, 0xb3, 0x1c, 0xba, 0x67, 0x3d, 0xd3, 0xf2, 0x3e,
		0x29, 0x70, 0xcd, 0x0e, 0xe0, 0x9a, 0x65, 0xd4, 0x35, 0xdb, 0x03, 0xcc, 0x86, 0x6b, 0x16, 0x4f,
		0x54, 0x4a, 0x07, 0xf0, 0xc9, 0xe0, 0x93, 0xc1, 0x27, 0x5b, 0x6f, 0x9f, 0x6c, 0xa3, 0xf3, 0xfc,
		0xb2, 0x91, 0x4e, 0x36, 0x27, 0x2f, 0x4a, 0x6a, 0x8a, 0x99, 0xfc, 0xbd, 0x96, 0x7a, 0x51, 0xc8,
		0x5f, 0x1b, 0xc2, 0xdb, 0x41, 0xc1, 0xf0, 0x39, 0xcb, 0x06, 0x29, 0x21, 0x1b, 0x44, 0xad, 0x2f,
		0x8e, 0x6c, 0x90, 0x35, 0xb5, 0x20, 0xc8, 0x06, 0x59, 0xae, 0xc2, 0x40, 0x37, 0xa6, 0xad, 0xda,
		0x54, 0xa9, 0x38, 0xe5, 0xaa, 0x4e, 0xb9, 0xca, 0x53, 0xae, 0xfa, 0x68, 0xfd, 0x2e, 0x64, 0x83,
		0x24, 0x51, 0x64, 0xc8, 0x06, 0x89, 0xc3, 0x23, 0x21, 0x1b, 0x64, 0x2d, 0x58, 0x24, 0x64, 0x83,
		0x40, 0x66, 0x32, 0x61, 0xa3, 0xe8, 0x47, 0x6f, 0x20, 0xb9, 0x01, 0xc9, 0x0d, 0xf0, 0x36, 0xe0,
		0x6d, 0xc0, 0xdb, 0x80, 0xb7, 0xb1, 0xf4, 0xdc, 0x20, 0xb9, 0x61, 0xd3, 0x3d, 0x0d, 0x24, 0x37,
		0xc0, 0xd3, 0x88, 0x29, 0x2a, 0x48, 0x6e, 0x80, 0x8b, 0x91, 0x3b, 0x17, 0x03, 0xb1, 0xfa, 0x4c,
		0xc6, 0xea, 0xc3, 0x10, 0x33, 0xea, 0x02, 0xa5, 0x27, 0x24, 0xd9, 0x15, 0x0e, 0x4d, 0x6a, 0xa6,
		0x84, 0xd3, 0x6b, 0x79, 0x56, 0x04, 0x77, 0xef, 0xc2, 0x6f, 0x52, 0x0b, 0x1e, 0xb7, 0x19, 0xfe,
		0xe7, 0x62, 0xf8, 0xd0, 0xcd, 0xfb, 0xc1, 0x93, 0x36, 0x4f, 0xc3, 0xa7, 0x6b, 0x9e, 0x3d, 0x75,
		0x07, 0x3f, 0xde, 0x33, 0xef, 0xd4, 0xad, 0x19, 0xde, 0x73, 0x2d, 0x7a, 0xca, 0x35, 0x2b, 0x65,
		0xd4, 0xb2, 0x5f, 0x5e, 0x7a, 0x96, 0xe9, 0xbd, 0xd1, 0x14, 0x31, 0x1a, 0x0d, 0x8f, 0xf2, 0x45,
		0xd9, 0xa4, 0x3b, 0x50, 0xbe, 0x28, 0x35, 0xba, 0x02, 0xe5, 0x8b, 0x84, 0x8e, 0x03, 0xca, 0x17,
		0x21, 0x61, 0x2d, 0x0b, 0x8a, 0x48, 0x99, 0x42, 0x52, 0xa6, 0x98, 0xf2, 0xe1, 0x46, 0x91, 0x25,
		0xac, 0xbd, 0x30, 0xef, 0xd9, 0x6e, 0xd3, 0x87, 0x92, 0xa2, 0x79, 0x10, 0x48, 0x52, 0xad, 0xd8,
		0xd4, 0x2a, 0x38, 0x55, 0x8a, 0x4e, 0xb9, 0xc2, 0x53, 0xae, 0xf8, 0x94, 0x2b, 0x40, 0x5a, 0x46,
		0x2d, 0xff, 0x81, 0x24, 0xf4, 0xf5, 0x4a, 0xba, 0x35, 0xea, 0xfb, 0x7a, 0x55, 0x6f, 0xae, 0xaa,
		0x37, 0x15, 0x65, 0x9d, 0xbd, 0xee, 0x2a, 0x97, 0x95, 0xbb, 0xca, 0xcd, 0x79, 0x05, 0x6d, 0xbd,
		0x62, 0x4e, 0x15, 0x6d, 0x90, 0x92, 0x70, 0xc7, 0xd8, 0xf6, 0x9c, 0x14, 0xf6, 0xd0, 0xd5, 0x4b,
		0x81, 0x36, 0xc6, 0x15, 0xcb, 0x34, 0xb7, 0x40, 0xb3, 0xbb, 0x01, 0x91, 0x4b, 0x8f, 0xe6, 0x07,
		0x13, 0x01, 0xce, 0x03, 0xce, 0x03, 0xce, 0x03, 0xce, 0xe7, 0x10, 0xce, 0xfb, 0x0b, 0x3f, 0x11,
		0xb5, 0xd1, 0x43, 0xa5, 0x46, 0xd5, 0xbc, 0x0b, 0x00, 0x5f, 0x06, 0xc0, 0x3f, 0xbd, 0xb8, 0x50,
		0x88, 0xee, 0xaf, 0x6f, 0xbf, 0x2a, 0x71, 0x26, 0x4a, 0xe1, 0x74, 0xb5, 0xab, 0x53, 0xb8, 0x12,
		0xf1, 0x15, 0xe9, 0xc5, 0x85, 0x32, 0x3f, 0x22, 0x10, 0x04, 0x35, 0x5d, 0x88, 0x07, 0x62, 0x40,
		0xd5, 0x14, 0x0c, 0x2e, 0x0b, 0x5c, 0x96, 0x4c, 0x8c, 0x88, 0x4c, 0x33, 0xde, 0x64, 0xa2, 0x21,
		0x64, 0xd9, 0xa0, 0x7a, 0x30, 0xa6, 0xd5, 0x31, 0x2d, 0xc2, 0x82, 0x30, 0xd1, 0xf8, 0x08, 0xb0,
		0x23, 0xc0, 0x9e, 0x09, 0x07, 0x15, 0x01, 0x76, 0xb5, 0xd6, 0x83, 0x2c, 0xc0, 0x4e, 0x94, 0x19,
		0x34, 0x73, 0xac, 0x48, 0x32, 0x84, 0x88, 0x15, 0x19, 0x18, 0x39, 0x30, 0x72, 0x60, 0xe4, 0xb2,
		0xed, 0x1f, 0x51, 0x29, 0xc6, 0x31, 0x05, 0x19, 0xa2, 0x59, 0x93, 0xb9, 0xf4, 0xd2, 0x3c, 0xd2,
		0x96, 0xa3, 0x49, 0x89, 0xc5, 0x8b, 0x36, 0x98, 0xa1, 0x4c, 0x85, 0xaa, 0x54, 0xa5, 0xe9, 0xa8,
		0x54, 0xd5, 0xaa, 0x35, 0x35, 0x15, 0x9b, 0x9a, 0xaa, 0x4d, 0x4d, 0xe5, 0xd2, 0x93, 0x5e, 0x05,
		0x15, 0xe4, 0x2a, 0x75, 0x70, 0x64, 0xe6, 0xdc, 0xf5, 0x2c, 0xda, 0x6c, 0xa7, 0x19, 0x7c, 0x79,
		0xac, 0x60, 0xae, 0x68, 0x19, 0x1f, 0x94, 0x88, 0xba, 0x1a, 0x15, 0x52, 0x98, 0x89, 0x6c, 0x79,
		0xed, 0xb1, 0xc8, 0x16, 0x71, 0x48, 0x2b, 0xcd, 0xdd, 0x4c, 0x67, 0x57, 0xd5, 0xef, 0xee, 0xec,
		0xd1, 0x34, 0x2d, 0x6f, 0xbf, 0xa4, 0x70, 0x57, 0xa7, 0x77, 0xf7, 0x28, 0x85, 0xa9, 0xd5, 0x14,
		0xc2, 0xc8, 0xce, 0x6e, 0x0f, 0xbf, 0xb8, 0xca, 0xc2, 0x19, 0x0b, 0x1f, 0x42, 0x71, 0xe9, 0xbe,
		0x85, 0xcf, 0x91, 0x56, 0xed, 0x84, 0xc5, 0x67, 0x52, 0x75, 0x4d, 0x85, 0x94, 0x10, 0xc8, 0x72,
		0x11, 0x55, 0x58, 0xb0, 0x63, 0xa5, 0x88, 0xaa, 0x2e, 0x19, 0x08, 0x59, 0xcd, 0x18, 0x16, 0xcf,
		0xce, 0xac, 0x8d, 0x0f, 0x6b, 0xac, 0x01, 0x52, 0x04, 0x40, 0x6e, 0x98, 0x7b, 0x94, 0x1e, 0x00,
		0xda, 0xfb, 0x94, 0xc2, 0xdc, 0x35, 0xc3, 0xf3, 0x98, 0x63, 0xa5, 0x86, 0x81, 0xb4, 0xad, 0xc3,
		0x83, 0x83, 0xfd, 0x87, 0xa2, 0x7e, 0xd0, 0x78, 0x3f, 0x3c, 0x38, 0x78, 0x28, 0xea, 0xa5, 0xc6,
		0x43, 0x51, 0x3f, 0xf6, 0x7f, 0x7b, 0x28, 0xea, 0xe5, 0xf0, 0x97, 0x9f, 0xa5, 0xfe, 0xfb, 0xe1,
		0xd8, 0xaf, 0xfb, 0xfd, 0xf7, 0x87, 0x3d, 0xfd, 0x20, 0xfa, 0xad, 0x1c, 0xfc, 0x76, 0x1c, 0xfd,
		0xb6, 0xf7, 0xd1, 0xff, 0xab, 0xff, 0xe3, 0xf6, 0x09, 0xe5, 0xe0, 0x9a, 0xfa, 0x93, 0x9f, 0x86,
		0x7c, 0xdc, 0xde, 0x57, 0xff, 0x48, 0x5d, 0x48, 0xfe, 0xca, 0xad, 0x94, 0xfc, 0x43, 0x5b, 0x77,
		0x03, 0xf1, 0x61, 0xbd, 0xbe, 0x97, 0x22, 0x83, 0x97, 0x12, 0x8f, 0xf3, 0x37, 0xeb, 0x74, 0xf4,
		0xff, 0x5a, 0xf6, 0xdf, 0x56, 0x06, 0xe8, 0x1c, 0x85, 0x58, 0x5a, 0xab, 0xb6, 0x99, 0xe5, 0x99,
		0xde, 0xdb, 0x99, 0xe1, 0x32, 0xe5, 0x6e, 0xc5, 0x70, 0x0b, 0xce, 0x3e, 0xd7, 0x9a, 0xbf, 0x57,
		0xae, 0xae, 0x9a, 0xff, 0xb9, 0xb9, 0xfd, 0xfd, 0xa6, 0x79, 0x5f, 0xbf, 0x68, 0x9e, 0xdf, 0x5e,
		0x5f, 0x7f, 0xb9, 0xa9, 0xd6, 0xff, 0x54, 0x8c, 0x3c, 0x42, 0xd7, 0xc6, 0x4d, 0x45, 0xa7, 0xa7,
		0xe3, 0xd4, 0x0d, 0x77, 0xe1, 0xf3, 0xdd, 0xe9, 0x79, 0xe5, 0xf2, 0xcb, 0x55, 0xf3, 0xfe, 0xb7,
		0x2f, 0xf5, 0x8b, 0xdb, 0xdf, 0x6f, 0xd4, 0xeb, 0xe8, 0x14, 0x1c, 0xeb, 0x94, 0x17, 0xfd, 0xe6,
		0xb6, 0x56, 0xa9, 0xdc, 0x61, 0xa5, 0x55, 0xac, 0x74, 0xf3, 0xf4, 0xe2, 0x6b, 0xe5, 0xae, 0x5e,
		0xbd, 0xaf, 0x60, 0xbd, 0x95, 0xac, 0x77, 0xe5, 0x8f, 0xda, 0xed, 0x5d, 0x1d, 0x8b, 0xad, 0x70,
		0xb1, 0x9b, 0xf7, 0x5f, 0xce, 0xce, 0x6f, 0x6f, 0x2e, 0x2b, 0x17, 0x29, 0x2c, 0xfb, 0x87, 0xf5,
		0xc4, 0xf3, 0x6a, 0xbe, 0x17, 0xfd, 0x2c, 0x8d, 0x5c, 0x87, 0xe5, 0xaf, 0x4c, 0xd7, 0x3b, 0xf5,
		0x3c, 0x47, 0x4d, 0x68, 0xfe, 0xda, 0xb4, 0x2a, 0x9d, 0xf0, 0xaa, 0x80, 0xa2, 0xeb, 0x4f, 0xd7,
		0xc6, 0xeb, 0xd8, 0x8c, 0x7b, 0x9f, 0xca, 0xe5, 0xc3, 0xa3, 0x72, 0xb9, 0x78, 0xb4, 0x7f, 0x54,
		0x3c, 0x3e, 0x38, 0xd8, 0x3b, 0x54, 0xe1, 0x17, 0x68, 0xb7, 0x4e, 0x9b, 0x39, 0xac, 0x7d, 0xf6,
		0xa6, 0x9d, 0x14, 0xac, 0x5e, 0xa7, 0xa3, 0x72, 0xca, 0x2f, 0x2e, 0x73, 0x94, 0xd0, 0xe5, 0xd4,
		0x92, 0xaa, 0xe8, 0xae, 0xd3, 0x70, 0x3e, 0xe5, 0x77, 0x9e, 0xe8, 0x55, 0x16, 0x2e, 0xb7, 0xcd,
		0x9b, 0x27, 0x8b, 0x77, 0xa3, 0xc2, 0x1b, 0x3d, 0x24, 0x57, 0xa4, 0xe8, 0x84, 0x81, 0xa2, 0x2a,
		0x08, 0x4d, 0x2b, 0xed, 0x19, 0xa4, 0x47, 0xd1, 0x52, 0x7b, 0x86, 0x82, 0xa2, 0xbe, 0x7f, 0x50,
		0xc2, 0xfd, 0x83, 0x98, 0xb3, 0xe1, 0xfe, 0x81, 0x34, 0x25, 0x8d, 0xfb, 0x07, 0x4b, 0x56, 0x07,
		0xf7, 0x0f, 0xe4, 0xa8, 0x4e, 0xdc, 0x3f, 0xc8, 0xba, 0x4a, 0x55, 0xad, 0x5a, 0x53, 0x53, 0xb1,
		0xa9, 0xa9, 0xda, 0xd4, 0x54, 0xae, 0x1a, 0x2a, 0x05, 0xf7, 0x0f, 0x84, 0xf1, 0x25, 0xee, 0x1f,
		0x88, 0x6f, 0x1a, 0xee, 0x1f, 0x28, 0xfb, 0x87, 0xfb, 0x07, 0x6a, 0xa7, 0xc6, 0xfd, 0x83, 0x14,
		0xff, 0xe1, 0xfe, 0xc1, 0xc2, 0x33, 0x89, 0xfb, 0x07, 0xb8, 0x7f, 0x00, 0x59, 0xcd, 0x12, 0x16,
		0xcf, 0xce, 0xac, 0xb8, 0x7f, 0x40, 0x03, 0x80, 0x70, 0xff, 0x20, 0x15, 0xfd, 0x81, 0xfb, 0x07,
		0xf1, 0x4f, 0x3e, 0xee, 0x1f, 0xe0, 0xfe, 0x41, 0xe6, 0x0c, 0x04, 0xee, 0x1f, 0xe4, 0x88, 0xc7,
		0xc1, 0xfd, 0x03, 0xdc, 0x3f, 0x18, 0x77, 0x6d, 0x70, 0xff, 0x00, 0xf7, 0x0f, 0xd4, 0x2c, 0x3a,
		0xee, 0x1f, 0xa8, 0x5b, 0x69, 0xdc, 0x3f, 0x50, 0xbc, 0xde, 0xb8, 0x7f, 0xa0, 0x7c, 0xb1, 0x71,
		0xff, 0x20, 0xaf, 0xdf, 0x0b, 0xf7, 0x0f, 0x96, 0x8b, 0x3a, 0xee, 0x1f, 0xe0, 0xfe, 0x41, 0xd6,
		0x4f, 0x1a, 0xd2, 0xe6, 0xe7, 0xcd, 0x93, 0xe1, 0xb4, 0xf9, 0x30, 0x9b, 0x1b, 0x8d, 0x69, 0x24,
		0xec, 0x32, 0x7b, 0xf5, 0x1c, 0x43, 0xef, 0x59, 0xae, 0x67, 0x7c, 0xef, 0xd0, 0x90, 0x09, 0xda,
		0xdf, 0xcf, 0x8c, 0x8e, 0x6e, 0x55, 0x90, 0xb3, 0xbe, 0xb3, 0x13, 0x5d, 0xd4, 0xd8, 0x7d, 0x61,
		0xde, 0xb3, 0xdd, 0xfe, 0xf7, 0x3f, 0xc3, 0x4e, 0xc1, 0xff, 0x5c, 0xb3, 0x14, 0xf6, 0x60, 0x9f,
		0xd6, 0x39, 0x81, 0x7d, 0xf1, 0x46, 0x7e, 0xc8, 0x21, 0xbe, 0xd2, 0x2e, 0x98, 0xdb, 0x72, 0xcc,
		0xae, 0x92, 0x2b, 0x73, 0xc3, 0xc3, 0x70, 0xda, 0xf2, 0xcc, 0x1f, 0xac, 0x60, 0x5b, 0x9d, 0xb7,
		0x82, 0x2f, 0x30, 0x05, 0xef, 0x99, 0x15, 0x26, 0xb4, 0x74, 0x21, 0x5c, 0xdc, 0x82, 0xe9, 0x16,
		0x94, 0xb4, 0x3c, 0x57, 0x99, 0x92, 0x3c, 0x7e, 0x5c, 0xda, 0x63, 0xcb, 0xaf, 0x00, 0x71, 0xa5,
		0x91, 0x8f, 0x3c, 0x71, 0x7a, 0x78, 0x76, 0x1e, 0x88, 0x90, 0x74, 0xd4, 0x06, 0x9a, 0xde, 0x65,
		0x12, 0xa1, 0x6a, 0x24, 0x37, 0x25, 0x9d, 0x5e, 0xcb, 0xb3, 0x22, 0x35, 0x7c, 0x17, 0x7e, 0xa5,
		0x5a, 0xf0, 0xdc, 0xcd, 0xf0, 0x3f, 0x17, 0xc3, 0xa7, 0x6f, 0xde, 0x0f, 0x1e, 0xb9, 0x79, 0x1a,
		0x3e, 0x66, 0xf3, 0xec, 0xa9, 0x3b, 0xf8, 0xf1, 0x9e, 0x79, 0xe7, 0x83, 0x07, 0x6e, 0x56, 0xc3,
		0x07, 0xde, 0x80, 0x2e, 0x7d, 0x0e, 0x7b, 0x64, 0x0e, 0xb3, 0x5a, 0x84, 0x8d, 0xfa, 0x46, 0x53,
		0xa0, 0x57, 0x1f, 0x7a, 0xf5, 0xc5, 0x05, 0x12, 0xe8, 0xd5, 0xb7, 0x46, 0x0e, 0x35, 0x7a, 0xf5,
		0xa5, 0xa0, 0xc8, 0xc8, 0x15, 0x9a, 0x0a, 0xc5, 0xa6, 0x56, 0xc1, 0xa5, 0x49, 0x34, 0xe0, 0xae,
		0x7c, 0x96, 0xbd, 0x94, 0xbc, 0xdf, 0x95, 0x7f, 0xd3, 0x7d, 0x48, 0xee, 0xb0, 0x47, 0xf5, 0x37,
		0xe6, 0x47, 0x53, 0xe3, 0xde, 0x7c, 0xd6, 0xd4, 0x6a, 0x3a, 0xea, 0x35, 0x0d, 0x92, 0xaa, 0x80,
		0x7b, 0xf3, 0xb8, 0x37, 0x1f, 0x77, 0xd5, 0xd4, 0xdf, 0x9b, 0xef, 0x30, 0xe3, 0x91, 0x5e, 0x45,
		0x4e, 0xa0, 0x4d, 0x05, 0xd7, 0x71, 0xb5, 0xda, 0x90, 0x87, 0x6a, 0xe9, 0x4e, 0xd7, 0xee, 0x9c,
		0x4c, 0xb1, 0x4e, 0x83, 0x97, 0x03, 0x8e, 0x89, 0xb5, 0x7d, 0x4b, 0xe1, 0xee, 0x8e, 0xe4, 0xf4,
		0xc4, 0xff, 0xef, 0xa2, 0xbf, 0x4d, 0xd8, 0x97, 0xc5, 0x7f, 0x59, 0xf8, 0x07, 0x3d, 0xa0, 0x8d,
		0x72, 0x2d, 0xa7, 0x0a, 0x02, 0x95, 0x73, 0x28, 0x37, 0xc3, 0xeb, 0xb9, 0xeb, 0x5c, 0x0e, 0xa1,
		0xcd, 0xba, 0x0e, 0x6b, 0x19, 0x1e, 0x6b, 0xab, 0xcc, 0x99, 0x57, 0x6c, 0x0b, 0xe7, 0xd9, 0xc4,
		0x68, 0x6b, 0x15, 0xa7, 0xa9, 0xa7, 0x65, 0x1b, 0xe7, 0xda, 0xc8, 0xb1, 0xbd, 0x47, 0x52, 0x5e,
		0xc2, 0x7f, 0x0d, 0x94, 0x5a, 0x4d, 0x30, 0xdf, 0x3a, 0x96, 0x5a, 0xfd, 0xa8, 0xd0, 0x91, 0x75,
		0x53, 0xf4, 0x64, 0x51, 0x02, 0x0e, 0xae, 0x2c, 0x5c, 0x59, 0xb8, 0xb2, 0x70, 0x65, 0xe1, 0xca,
		0xc2, 0x95, 0x95, 0xb2, 0xbc, 0xb8, 0x13, 0x81, 0x3b, 0x11, 0x70, 0x14, 0x36, 0xc5, 0x51, 0xc0,
		0xe5, 0x92, 0x79, 0xcc, 0x5a, 0x06, 0x53, 0xf7, 0x86, 0xc9, 0x5b, 0x68, 0xcb, 0x80, 0xb6, 0x0c,
		0x09, 0x1c, 0x4a, 0xb4, 0x65, 0xc8, 0x98, 0xe3, 0x88, 0x54, 0x93, 0x0d, 0xb7, 0x62, 0x48, 0x35,
		0x01, 0x3f, 0x07, 0x7e, 0x0e, 0xfc, 0x1c, 0xf8, 0x39, 0xf0, 0x73, 0xe0, 0xe7, 0xc0, 0xcf, 0x25,
		0x5c, 0x5e, 0xa4, 0x9a, 0x50, 0x9c, 0x45, 0xa4, 0x9a, 0x28, 0x7d, 0x00, 0xa4, 0x9a, 0x20, 0xd5,
		0x24, 0xd5, 0xe7, 0x47, 0x86, 0x04, 0x3c, 0x30, 0x78, 0x60, 0xf0, 0xc0, 0xe0, 0x81, 0xc1, 0x03,
		0x83, 0x07, 0x06, 0x0f, 0x2c, 0xc9, 0xf2, 0x22, 0x43, 0x02, 0x19, 0x12, 0x99, 0xc7, 0xb7, 0x08,
		0xec, 0xcf, 0xe3, 0x31, 0x32, 0x1d, 0xd8, 0x47, 0xe1, 0xc8, 0x3c, 0x91, 0x64, 0x6b, 0x58, 0x38,
		0xf2, 0xae, 0x72, 0x59, 0xb9, 0xab, 0xdc, 0x9c, 0xa3, 0x76, 0x64, 0x0e, 0x9c, 0x8d, 0x15, 0xb5,
		0x23, 0xc7, 0xf6, 0x12, 0xe5, 0x23, 0xe3, 0x1e, 0x89, 0x44, 0x45, 0x04, 0x87, 0x2b, 0x8c, 0x0a,
		0x92, 0x79, 0x75, 0xd6, 0xf9, 0x2b, 0x48, 0x8e, 0x36, 0x1f, 0x00, 0x91, 0x74, 0x54, 0x14, 0x91,
		0xcc, 0x2c, 0x60, 0xcd, 0x51, 0x1d, 0xc9, 0xbb, 0xe1, 0x33, 0x6f, 0x40, 0x29, 0x49, 0x9a, 0xf4,
		0x58, 0xd2, 0xb4, 0x58, 0xf2, 0x12, 0x92, 0x25, 0x94, 0x90, 0x54, 0x8b, 0x2a, 0x50, 0x42, 0x72,
		0x4d, 0x5d, 0x6b, 0xb2, 0x12, 0x92, 0x21, 0xb8, 0xa2, 0x4f, 0xeb, 0x8f, 0xe6, 0xa1, 0xcd, 0xeb,
		0x2f, 0xa2, 0x84, 0x64, 0xca, 0x0a, 0x2e, 0x4d, 0xbe, 0x01, 0x79, 0xfd, 0x59, 0xf6, 0x51, 0x88,
		0x4e, 0x0e, 0x79, 0xf8, 0x72, 0x78, 0x6e, 0x98, 0xd5, 0x7b, 0x61, 0x8e, 0x41, 0xec, 0x99, 0x0f,
		0x31, 0x59, 0x99, 0x70, 0x8e, 0x8a, 0xd5, 0x7b, 0xa1, 0x3f, 0x9a, 0x75, 0xfb, 0xde, 0x73, 0x4c,
		0xeb, 0x49, 0x0d, 0x87, 0x52, 0xf4, 0xf7, 0x48, 0x49, 0x73, 0x91, 0x60, 0xba, 0xbd, 0xc0, 0x53,
		0x52, 0xc4, 0x47, 0x50, 0xa7, 0x00, 0xd8, 0xd5, 0x40, 0xbd, 0x28, 0xd8, 0xa5, 0x68, 0x83, 0xd4,
		0x84, 0x54, 0x47, 0xdb, 0x73, 0x52, 0xd8, 0x03, 0x63, 0x44, 0x3a, 0x2a, 0xc5, 0x8d, 0x53, 0x3b,
		0xa0, 0x41, 0x5d, 0x7a, 0x70, 0x3a, 0x98, 0x08, 0xe8, 0x14, 0xe8, 0x14, 0xe8, 0x14, 0xe8, 0x34,
		0x87, 0xe8, 0xd4, 0x5f, 0xf8, 0x09, 0xc6, 0x58, 0x0f, 0x95, 0x9a, 0xee, 0xf9, 0x8f, 0x00, 0xbc,
		0x9a, 0x4d, 0xbc, 0x7a, 0x7a, 0x71, 0xa1, 0x10, 0xac, 0x5e, 0xdf, 0x7e, 0x55, 0x82, 0x8d, 0x4b,
		0xe1, 0x74, 0xb5, 0xab, 0x53, 0x20, 0xe3, 0xf8, 0x8a, 0xf4, 0xe2, 0x42, 0x19, 0x2c, 0x0e, 0x04,
		0x81, 0xac, 0x0c, 0xc6, 0xd4, 0x64, 0xa1, 0x18, 0x9c, 0x14, 0x4a, 0x40, 0xe0, 0xb4, 0x08, 0x1c,
		0x31, 0xdb, 0x8c, 0xc5, 0x6c, 0x09, 0x52, 0x0b, 0x25, 0xc6, 0x3e, 0x3f, 0x64, 0x48, 0x4c, 0xa8,
		0xc4, 0x23, 0x8b, 0x62, 0xa1, 0x49, 0x0d, 0x3a, 0x53, 0x04, 0xee, 0xe5, 0x88, 0xac, 0xb8, 0x80,
		0x49, 0x10, 0x2e, 0xcd, 0x5f, 0x7a, 0xf6, 0x3a, 0xbe, 0xfc, 0xb2, 0xe4, 0x6b, 0x14, 0x9a, 0x9f,
		0x99, 0x42, 0xd2, 0xa1, 0x90, 0x1b, 0x9e, 0x97, 0xce, 0x13, 0x50, 0xf0, 0x02, 0xb4, 0x3c, 0x00,
		0x95, 0xdf, 0x4f, 0xee, 0xe7, 0x93, 0xfb, 0xf5, 0xe4, 0x7e, 0x7c, 0xb6, 0xcc, 0x8d, 0xec, 0x70,
		0x3a, 0x55, 0x27, 0x46, 0xda, 0x0e, 0x8c, 0x68, 0x21, 0xab, 0x9a, 0x80, 0x44, 0xfe, 0x4f, 0x66,
		0x09, 0x46, 0xe4, 0xff, 0x90, 0x6c, 0x1f, 0xf2, 0x7f, 0x52, 0x56, 0x6c, 0x6a, 0x15, 0x9c, 0x2a,
		0x45, 0xa7, 0x5c, 0xe1, 0x29, 0x57, 0x7c, 0xca, 0x15, 0x20, 0x31, 0xdf, 0x85, 0xfc, 0x9f, 0x64,
		0x98, 0x0c, 0xf1, 0x94, 0x64, 0xb3, 0x21, 0xff, 0x47, 0x60, 0xa3, 0x90, 0xff, 0x93, 0x45, 0x9d,
		0x59, 0x40, 0x49, 0x81, 0x05, 0xf3, 0x28, 0x6f, 0x0a, 0x81, 0x84, 0xa9, 0x02, 0x12, 0xa6, 0x00,
		0xe7, 0x01, 0xe7, 0x01, 0xe7, 0xd7, 0x04, 0xce, 0x23, 0x61, 0x2a, 0x8f, 0x00, 0x1f, 0x09, 0x53,
		0x70, 0x25, 0x06, 0x8a, 0x14, 0x09, 0x53, 0x70, 0x59, 0xe0, 0xb2, 0xa8, 0x74, 0x59, 0x90, 0x61,
		0x96, 0x89, 0x54, 0xa2, 0x89, 0x64, 0x13, 0x92, 0xce, 0x74, 0xd9, 0x2c, 0xb1, 0x61, 0x5a, 0x1d,
		0xd3, 0x22, 0xac, 0xb1, 0x11, 0x8d, 0x8f, 0x20, 0x3b, 0x82, 0xec, 0x99, 0x70, 0x52, 0x11, 0x64,
		0x57, 0x6b, 0x41, 0xc8, 0x82, 0xec, 0x44, 0xd9, 0x41, 0x33, 0xc7, 0x8a, 0x24, 0x4b, 0x88, 0x58,
		0x91, 0x81, 0x95, 0x03, 0x2b, 0x07, 0x56, 0x2e, 0xdb, 0x3e, 0x92, 0xb2, 0xe6, 0x99, 0x26, 0x4b,
		0xa1, 0x6b, 0x8b, 0x3f, 0x29, 0xda, 0xb5, 0x64, 0x4d, 0x95, 0xa6, 0xa3, 0x52, 0x55, 0xab, 0xd6,
		0xd4, 0x54, 0x6c, 0x6a, 0xaa, 0x36, 0x35, 0x95, 0x4b, 0x4f, 0x7c, 0x15, 0xd6, 0xb2, 0x5d, 0x4b,
		0xcf, 0x52, 0x54, 0x8b, 0x78, 0x80, 0x2f, 0x8f, 0x15, 0xcc, 0x15, 0x2d, 0xe3, 0xda, 0x76, 0x56,
		0xf4, 0x4f, 0xd3, 0x04, 0x4d, 0x44, 0x1d, 0xd6, 0x4a, 0x73, 0x37, 0xd3, 0xd9, 0x55, 0xf5, 0xbb,
		0x3b, 0xb3, 0xcb, 0x6e, 0x18, 0x7e, 0xfb, 0xa8, 0xfe, 0x09, 0x06, 0xbb, 0xfb, 0x29, 0x85, 0xb9,
		0x6b, 0x86, 0xe7, 0x31, 0xc7, 0x52, 0xbe, 0xd1, 0xc3, 0x07, 0xd8, 0x3a, 0x3c, 0x38, 0xd8, 0x7f,
		0x28, 0xea, 0x07, 0x8d, 0xf7, 0xc3, 0x83, 0x83, 0x87, 0xa2, 0x5e, 0x6a, 0x3c, 0x14, 0xf5, 0x63,
		0xff, 0xb7, 0x87, 0xa2, 0x5e, 0x0e, 0x7f, 0xf9, 0x59, 0xea, 0xbf, 0x1f, 0x8e, 0xfd, 0xba, 0xdf,
		0x7f, 0x7f, 0xd8, 0xd3, 0x0f, 0xa2, 0xdf, 0xca, 0xc1, 0x6f, 0xc7, 0xd1, 0x6f, 0x7b, 0x1f, 0xfd,
		0xbf, 0xfa, 0x3f, 0x6e, 0x9f, 0x6c, 0x95, 0x4b, 0xc7, 0xe5, 0xe3, 0xc3, 0xa3, 0xd2, 0x71, 0x38,
		0xc3, 0xe0, 0xd7, 0x87, 0xa2, 0xfe, 0x29, 0x9a, 0x26, 0x7a, 0xe9, 0xa1, 0xa8, 0xef, 0x8d, 0xe6,
		0x0a, 0x5f, 0x7c, 0x28, 0xea, 0x87, 0xa3, 0x09, 0x83, 0xd7, 0x82, 0x61, 0x86, 0xb3, 0xfa, 0x2f,
		0x8d, 0x86, 0xfa, 0x79, 0x10, 0xbc, 0xf2, 0x50, 0xd4, 0xf7, 0xa3, 0x17, 0x0e, 0xfd, 0x17, 0xc6,
		0xde, 0x70, 0xd4, 0x7f, 0x2f, 0x8f, 0x4d, 0xf4, 0x29, 0x78, 0xee, 0xc1, 0x9b, 0x8f, 0xa7, 0xbe,
		0xc5, 0xa7, 0xc1, 0xb7, 0xd0, 0x94, 0x6f, 0x4c, 0x23, 0x0d, 0x41, 0xbc, 0xbd, 0xaf, 0xfe, 0x91,
		0xba, 0x34, 0xfe, 0x05, 0x71, 0x5c, 0x25, 0x8e, 0xff, 0x48, 0x41, 0x1e, 0x95, 0xce, 0xd8, 0xff,
		0x08, 0x93, 0x07, 0x93, 0x47, 0x69, 0xf2, 0xb6, 0xc2, 0xb3, 0x3e, 0x3a, 0x5f, 0xef, 0x7b, 0xc1,
		0x7f, 0xc2, 0x9f, 0x4b, 0x23, 0xcd, 0xf2, 0x5e, 0x3a, 0x08, 0x8e, 0xf8, 0xf6, 0xb7, 0x6f, 0x3b,
		0xdb, 0x3f, 0xf7, 0xfb, 0xc9, 0x3f, 0x78, 0x42, 0xa9, 0xd0, 0x60, 0x99, 0x54, 0x5a, 0xa6, 0x75,
		0x91, 0x1a, 0x18, 0x10, 0x18, 0x10, 0x18, 0x10, 0x21, 0x03, 0xb2, 0x0e, 0x38, 0x12, 0x96, 0x69,
		0x6d, 0x2c, 0x13, 0xc4, 0x11, 0x26, 0x0f, 0x26, 0x0f, 0x26, 0x8f, 0xf0, 0x01, 0x1c, 0xbb, 0xe7,
		0xb1, 0x6f, 0xdf, 0x74, 0xcf, 0x70, 0x9e, 0x98, 0x77, 0x02, 0x9a, 0x06, 0xac, 0x61, 0x86, 0x2c,
		0x20, 0xa4, 0x13, 0x24, 0x22, 0x0c, 0x22, 0x0c, 0x62, 0x8a, 0x06, 0x11, 0x9c, 0x22, 0xec, 0x96,
		0xb0, 0xdd, 0x02, 0xc5, 0x08, 0xf3, 0x02, 0xf3, 0x02, 0xf3, 0x32, 0x6b, 0x5e, 0x40, 0xf1, 0xc0,
		0x6e, 0x65, 0xd7, 0x6e, 0x41, 0x3a, 0x61, 0x10, 0x61, 0x10, 0x61, 0x10, 0x15, 0x18, 0x44, 0xdb,
		0x31, 0x9f, 0x4c, 0x0b, 0x14, 0x0f, 0x08, 0xc8, 0x2c, 0x1a, 0x44, 0x48, 0x27, 0x08, 0x48, 0x18,
		0x44, 0x18, 0xc4, 0x14, 0x0c, 0x22, 0x08, 0x48, 0xd8, 0x2d, 0x61, 0xbb, 0x05, 0x02, 0x12, 0xe6,
		0x05, 0xe6, 0x05, 0xe6, 0x65, 0xd6, 0xbc, 0x80, 0xe2, 0x81, 0xdd, 0xca, 0xae, 0xdd, 0x82, 0x74,
		0xc2, 0x20, 0xc2, 0x20, 0xc2, 0x20, 0x12, 0x3e, 0x40, 0xcb, 0xee, 0xd8, 0xce, 0x49, 0x70, 0xac,
		0x7f, 0x96, 0xfa, 0xe0, 0x08, 0x61, 0xb3, 0x12, 0xda, 0xac, 0x75, 0x14, 0x20, 0x98, 0x15, 0x98,
		0x15, 0x98, 0x15, 0x91, 0x07, 0xe8, 0x98, 0xd6, 0x7f, 0xf5, 0xef, 0x86, 0xd5, 0xfe, 0xdb, 0x6c,
		0x7b, 0xcf, 0x88, 0x1c, 0xac, 0x54, 0x39, 0x5b, 0xff, 0x7d, 0xff, 0xcf, 0xfb, 0xf5, 0xfb, 0xe7,
		0xed, 0x5f, 0x61, 0xbd, 0x14, 0x5a, 0x2f, 0x85, 0x72, 0xfa, 0x8f, 0x35, 0x93, 0xd3, 0xf5, 0x37,
		0x92, 0x1f, 0xd6, 0xeb, 0x7b, 0x29, 0x32, 0xfa, 0x29, 0x95, 0x52, 0xfb, 0x9b, 0x75, 0x3a, 0xfa,
		0x7f, 0x2d, 0xfb, 0x6f, 0x2b, 0x03, 0x15, 0xd5, 0x0e, 0x14, 0xce, 0x59, 0x6d, 0x33, 0xcb, 0x33,
		0xbd, 0xb7, 0x33, 0xc3, 0x55, 0x57, 0x0c, 0x73, 0x66, 0x0b, 0xce, 0x3e, 0xd7, 0x9a, 0xbf, 0x57,
		0xae, 0xae, 0x9a, 0xff, 0xb9, 0xb9, 0xfd, 0xfd, 0xa6, 0x79, 0x5f, 0xbf, 0x68, 0x9e, 0xdf, 0x5e,
		0x5f, 0x7f, 0xb9, 0xa9, 0xd6, 0xff, 0x54, 0x8c, 0xbe, 0xb4, 0xaf, 0x46, 0xa7, 0x17, 0x54, 0xa9,
		0x55, 0x6f, 0x55, 0x7e, 0xa6, 0x63, 0xc7, 0x06, 0xbb, 0xf0, 0xf9, 0xee, 0xf4, 0xbc, 0x72, 0xf9,
		0xe5, 0xaa, 0x79, 0xff, 0xdb, 0x97, 0xfa, 0xc5, 0xed, 0xef, 0x37, 0xea, 0x75, 0x74, 0xff, 0xe3,
		0xa6, 0x2d, 0xfa, 0xcd, 0x6d, 0xad, 0x52, 0xb9, 0xc3, 0x4a, 0xab, 0x58, 0xe9, 0xe6, 0xe9, 0xc5,
		0xd7, 0xca, 0x5d, 0xbd, 0x7a, 0x5f, 0xc1, 0x7a, 0x2b, 0x59, 0xef, 0xca, 0x1f, 0xb5, 0xdb, 0xbb,
		0x3a, 0x16, 0x5b, 0xe1, 0x62, 0x37, 0xef, 0xbf, 0x9c, 0x9d, 0xdf, 0xde, 0x5c, 0x56, 0x2e, 0x52,
		0x58, 0xf6, 0x0f, 0xeb, 0x89, 0xe7, 0xd5, 0x7c, 0x2f, 0xfa, 0x59, 0x1a, 0xb9, 0xae, 0x8c, 0x7d,
		0x65, 0xba, 0xde, 0xa9, 0xe7, 0x39, 0x6a, 0xaa, 0x63, 0x5f, 0x9b, 0x56, 0xa5, 0x13, 0x76, 0xec,
		0x52, 0xd4, 0x85, 0xf0, 0xda, 0x78, 0x1d, 0x9b, 0x71, 0xef, 0x53, 0xb9, 0x7c, 0x78, 0x54, 0x2e,
		0x17, 0x8f, 0xf6, 0x8f, 0x8a, 0xc7, 0x07, 0x07, 0x7b, 0x87, 0x2a, 0xfc, 0x02, 0xed, 0xd6, 0x69,
		0x33, 0x87, 0xb5, 0xcf, 0xde, 0xb4, 0x93, 0x82, 0xd5, 0xeb, 0x74, 0x54, 0x4e, 0xf9, 0xc5, 0x65,
		0xfe, 0xe6, 0x3e, 0x1a, 0x1d, 0x97, 0xe5, 0x5a, 0x52, 0x15, 0xb5, 0x1c, 0x1c, 0xce, 0xa7, 0xbc,
		0xf5, 0x20, 0xbd, 0xca, 0x42, 0x8f, 0xc9, 0x79, 0xf3, 0x64, 0xb5, 0x45, 0x61, 0xd8, 0x58, 0x8f,
		0xa4, 0x53, 0x21, 0x9d, 0x40, 0x50, 0x34, 0xe8, 0x0f, 0x16, 0x8e, 0xbe, 0x0f, 0x58, 0x38, 0x4d,
		0xce, 0xdb, 0x80, 0x95, 0xd0, 0x06, 0x2c, 0xe6, 0x6c, 0x68, 0x03, 0x26, 0x4d, 0x51, 0xa3, 0x0d,
		0xd8, 0x92, 0xd5, 0x41, 0x1b, 0x30, 0x39, 0xaa, 0x13, 0x6d, 0xc0, 0xb2, 0xae, 0x52, 0x55, 0xab,
		0xd6, 0xd4, 0x54, 0x6c, 0x6a, 0xaa, 0x36, 0x35, 0x95, 0xab, 0x86, 0x4e, 0x41, 0x1b, 0x30, 0x61,
		0x7c, 0x89, 0x36, 0x60, 0xe2, 0x9b, 0x86, 0x36, 0x60, 0xca, 0xfe, 0x21, 0x0d, 0x51, 0xf1, 0xdc,
		0x68, 0x03, 0x86, 0x5c, 0xf9, 0x99, 0x7f, 0x68, 0x03, 0x06, 0x71, 0x44, 0xe6, 0x3d, 0x4c, 0x1e,
		0x4c, 0x1e, 0x8d, 0xc9, 0x43, 0xc5, 0x0c, 0x58, 0xa6, 0xe4, 0x96, 0x09, 0x25, 0x32, 0x60, 0x40,
		0x60, 0x40, 0x60, 0x40, 0xd0, 0x06, 0x0c, 0x96, 0x29, 0x5b, 0x96, 0x09, 0xe2, 0x08, 0x93, 0x07,
		0x93, 0x07, 0x93, 0x47, 0xf8, 0x00, 0x68, 0xb4, 0x04, 0xd6, 0x30, 0xbb, 0x16, 0x10, 0xd2, 0x09,
		0x12, 0x11, 0x06, 0x11, 0x06, 0x31, 0x45, 0x83, 0x08, 0x4e, 0x11, 0x76, 0x4b, 0xd8, 0x6e, 0x81,
		0x62, 0x84, 0x79, 0x81, 0x79, 0x81, 0x79, 0x41, 0x1b, 0x30, 0xd8, 0xad, 0x3c, 0xd9, 0x2d, 0x48,
		0x27, 0x0c, 0x22, 0x0c, 0x22, 0x0c, 0xa2, 0x02, 0x83, 0x88, 0x46, 0x4b, 0x20, 0x20, 0xb3, 0x6b,
		0x10, 0x21, 0x9d, 0x20, 0x20, 0x61, 0x10, 0x61, 0x10, 0x53, 0x30, 0x88, 0x20, 0x20, 0x61, 0xb7,
		0x84, 0xed, 0x16, 0x08, 0x48, 0x98, 0x17, 0x98, 0x17, 0x98, 0x17, 0xb4, 0x01, 0x83, 0xdd, 0xca,
		0x93, 0xdd, 0x82, 0x74, 0xc2, 0x20, 0xc2, 0x20, 0xc2, 0x20, 0x12, 0x3e, 0x00, 0xda, 0x80, 0xc1,
		0x66, 0x09, 0xd9, 0x2c, 0xb4, 0x01, 0x83, 0x59, 0x81, 0x59, 0x81, 0x59, 0x99, 0x7c, 0x00, 0xb4,
		0x01, 0x43, 0x1b, 0xb0, 0x3c, 0x58, 0x2f, 0xb4, 0x01, 0x43, 0x1b, 0xb0, 0x85, 0x46, 0x12, 0x6d,
		0xc0, 0xb2, 0x6d, 0xec, 0xd1, 0x06, 0x0c, 0x6d, 0xc0, 0xe6, 0x3d, 0x13, 0xda, 0x80, 0xa1, 0x0d,
		0x98, 0xc2, 0x45, 0x47, 0x1b, 0x30, 0x75, 0x2b, 0x8d, 0x36, 0x60, 0x8a, 0xd7, 0x1b, 0x6d, 0xc0,
		0x94, 0x2f, 0x36, 0xda, 0x80, 0xe5, 0xf5, 0x7b, 0xa1, 0x0d, 0xd8, 0x72, 0x51, 0x47, 0x1b, 0x30,
		0xb4, 0x01, 0xcb, 0xfa, 0x49, 0x43, 0xf7, 0xaa, 0x79, 0xf3, 0x64, 0xbc, 0x7b, 0x55, 0xd8, 0x54,
		0x29, 0x2f, 0xcd, 0xab, 0x3e, 0x64, 0x58, 0xb2, 0x34, 0xf6, 0xea, 0x39, 0x86, 0xde, 0xb3, 0x5c,
		0xcf, 0xf8, 0xde, 0xa1, 0x21, 0x14, 0xb4, 0xbf, 0x9f, 0x19, 0x1d, 0xe9, 0xab, 0xa0, 0x75, 0xd4,
		0xce, 0x4e, 0xd4, 0x2f, 0x6d, 0xf7, 0x85, 0x79, 0xcf, 0x76, 0xfb, 0xdf, 0xff, 0xac, 0xde, 0x5c,
		0x55, 0x6f, 0x2a, 0xff, 0x5c, 0xb3, 0x4e, 0x52, 0xc1, 0x3e, 0xad, 0x73, 0x1f, 0xa9, 0xc5, 0x1b,
		0xf9, 0x21, 0x87, 0x18, 0x4b, 0xbb, 0x60, 0x6e, 0xcb, 0x31, 0xbb, 0x4a, 0xba, 0x57, 0x0e, 0x0f,
		0xc3, 0x69, 0xcb, 0x33, 0x7f, 0xb0, 0x82, 0x6d, 0x75, 0xde, 0x0a, 0xbe, 0xc0, 0x14, 0xbc, 0x67,
		0x56, 0xf0, 0x35, 0xf5, 0x50, 0x4b, 0x17, 0xc2, 0xc5, 0x2d, 0x98, 0x6e, 0x21, 0x5c, 0x5e, 0x6a,
		0x99, 0x52, 0xd8, 0x19, 0x68, 0xfc, 0xb8, 0xb4, 0xc7, 0x96, 0x5f, 0x01, 0xea, 0x4a, 0xa3, 0x2d,
		0xd0, 0xc4, 0xe9, 0xe1, 0xd9, 0x79, 0xa0, 0x42, 0xd2, 0x51, 0x1b, 0x99, 0xc6, 0x16, 0xc4, 0x68,
		0x35, 0xe3, 0x28, 0x55, 0x23, 0x69, 0x5a, 0xea, 0xf4, 0x5a, 0x9e, 0x15, 0xa9, 0xe2, 0xbb, 0xf0,
		0x6b, 0xd5, 0x82, 0x67, 0x6f, 0x86, 0xff, 0xb9, 0x18, 0x7e, 0x83, 0xe6, 0xfd, 0xe0, 0xb1, 0x9b,
		0xa7, 0xe1, 0xa3, 0x36, 0xcf, 0x9e, 0xba, 0x83, 0x1f, 0xef, 0x99, 0x57, 0x79, 0xf5, 0xce, 0x07,
		0xcf, 0xdc, 0xac, 0x86, 0xcf, 0xfc, 0x21, 0x9b, 0xf2, 0x2e, 0x51, 0x32, 0x35, 0x87, 0x3d, 0x32,
		0x87, 0x59, 0x04, 0x06, 0x63, 0x68, 0x23, 0x47, 0x53, 0x48, 0x3e, 0x51, 0x34, 0x0d, 0x5f, 0xc9,
		0xba, 0x14, 0x52, 0x76, 0x25, 0x54, 0xd3, 0x85, 0x90, 0x1a, 0x5b, 0x28, 0xeb, 0x32, 0xa8, 0x0c,
		0x3e, 0x28, 0xeb, 0x22, 0x98, 0x6d, 0xbf, 0x9a, 0xaa, 0x41, 0xab, 0xd6, 0x1a, 0x9c, 0x55, 0xe2,
		0xc6, 0xd5, 0xd1, 0x3c, 0x39, 0xef, 0x5c, 0x5d, 0x44, 0xe7, 0xea, 0xec, 0xf2, 0x0d, 0xe8, 0x5c,
		0x9d, 0x65, 0x67, 0x25, 0xaf, 0x9d, 0xab, 0x27, 0x9b, 0x6c, 0xfa, 0xe8, 0xdc, 0x61, 0x8f, 0xea,
		0xf8, 0x91, 0xf9, 0xd3, 0xa3, 0x9b, 0x75, 0xd6, 0xd4, 0x6b, 0x3a, 0x6a, 0x36, 0x0d, 0xce, 0xaa,
		0x80, 0x6e, 0xd6, 0xe8, 0x66, 0x1d, 0x77, 0xd5, 0xd4, 0x77, 0xb3, 0xee, 0x30, 0xe3, 0x91, 0x5e,
		0x45, 0x4e, 0xa0, 0xce, 0x23, 0x05, 0x73, 0xd5, 0x86, 0xb4, 0x54, 0x4b, 0x77, 0xba, 0x76, 0xe7,
		0x64, 0x8a, 0x84, 0x1a, 0xbc, 0x1c, 0x50, 0x4e, 0xac, 0xed, 0x5b, 0x0a, 0x77, 0x77, 0x24, 0xa7,
		0x27, 0xfe, 0x7f, 0x17, 0xfd, 0x6d, 0xc6, 0xc6, 0x2c, 0xff, 0xeb, 0xd2, 0x3f, 0xea, 0x01, 0x9b,
		0x94, 0x6b, 0x99, 0x55, 0x10, 0xc3, 0x9c, 0xc3, 0xc4, 0x19, 0x5e, 0xcf, 0x5d, 0xe7, 0x86, 0xe5,
		0x6d, 0xd6, 0x75, 0x58, 0xcb, 0xf0, 0x58, 0x5b, 0x65, 0x4a, 0xbd, 0x62, 0xbb, 0x38, 0xcf, 0x3e,
		0x46, 0x5b, 0xab, 0x38, 0x8b, 0x3d, 0x2d, 0x3b, 0x39, 0xd7, 0x5e, 0x8e, 0xed, 0x3d, 0x72, 0xf6,
		0x12, 0xfe, 0xcb, 0x77, 0xce, 0x9e, 0xa2, 0x0c, 0xa3, 0xe1, 0x7c, 0x6f, 0x4f, 0xb6, 0xa7, 0xdb,
		0x2d, 0xdf, 0x26, 0x75, 0x1d, 0xe6, 0xba, 0xac, 0xad, 0xfb, 0x80, 0xc0, 0x9f, 0xbc, 0x9f, 0xd7,
		0xe0, 0xe1, 0x47, 0xc5, 0xce, 0xad, 0x9b, 0xb2, 0x77, 0xeb, 0xc2, 0xbd, 0x85, 0x7b, 0x0b, 0xf7,
		0x16, 0xee, 0x2d, 0xdc, 0x5b, 0xb8, 0xb7, 0x70, 0x6f, 0x65, 0x2f, 0x35, 0xae, 0x51, 0xe0, 0x1a,
		0x05, 0x9c, 0x87, 0x4d, 0x71, 0x1e, 0x70, 0x1f, 0x65, 0x1e, 0xdb, 0x96, 0xd1, 0x4c, 0xbf, 0x61,
		0xa2, 0x57, 0x94, 0x57, 0x9e, 0x9b, 0x3b, 0x29, 0x24, 0xb9, 0x89, 0x86, 0xc7, 0xe8, 0xf3, 0x52,
		0xc2, 0x69, 0x72, 0x9e, 0x96, 0x52, 0x42, 0x5a, 0x4a, 0xb6, 0x1c, 0x49, 0xa4, 0xa5, 0x6c, 0xb8,
		0x25, 0x43, 0x5a, 0x0a, 0x78, 0x3b, 0xf0, 0x76, 0xe0, 0xed, 0xc0, 0xdb, 0x81, 0xb7, 0x03, 0x6f,
		0x07, 0xde, 0x4e, 0x8e, 0xc5, 0x47, 0x5a, 0x8a, 0xf4, 0x73, 0x89, 0xb4, 0x14, 0xa5, 0x0f, 0x80,
		0xb4, 0x14, 0xa4, 0xa5, 0xa4, 0xfa, 0xfc, 0xc8, 0xa6, 0x80, 0x57, 0x06, 0xaf, 0x0c, 0x5e, 0x19,
		0xbc, 0x32, 0x78, 0x65, 0xf0, 0xca, 0xe0, 0x95, 0x89, 0x2e, 0x35, 0xb2, 0x29, 0x90, 0x4d, 0x91,
		0x79, 0xcc, 0x8b, 0x24, 0x80, 0x79, 0xdc, 0x46, 0xe6, 0x93, 0x00, 0x50, 0x97, 0x32, 0x4f, 0xe4,
		0xd9, 0x1a, 0xd6, 0xa5, 0xbc, 0xab, 0x5c, 0x56, 0xee, 0x2a, 0x37, 0xe7, 0x28, 0x4d, 0x99, 0x03,
		0xe7, 0x63, 0x45, 0x69, 0xca, 0xb1, 0xbd, 0x44, 0x75, 0xca, 0xb8, 0x47, 0x22, 0x51, 0x8d, 0xc2,
		0xe1, 0x0a, 0xa3, 0x40, 0x65, 0x5e, 0x9d, 0x77, 0xfe, 0x02, 0x95, 0xa3, 0xcd, 0x07, 0x48, 0x24,
		0x1d, 0x15, 0x35, 0x2a, 0x33, 0x0d, 0x5a, 0xf3, 0x55, 0xa6, 0xf2, 0x6e, 0xf8, 0xd8, 0x1b, 0x50,
		0xa9, 0x92, 0x26, 0xa3, 0x96, 0x34, 0x93, 0x96, 0xbc, 0x42, 0x65, 0x09, 0x15, 0x2a, 0xd5, 0x82,
		0x0b, 0x54, 0xa8, 0x5c, 0x53, 0x0f, 0x9b, 0xac, 0x42, 0x65, 0x88, 0xb1, 0xe8, 0x6f, 0x02, 0x44,
		0xf3, 0xd0, 0x5e, 0x05, 0x28, 0xa2, 0x42, 0x65, 0xca, 0x0a, 0x2e, 0x4d, 0xda, 0x01, 0x57, 0x01,
		0xb2, 0xec, 0xaa, 0x10, 0x9d, 0x1c, 0xf2, 0xa8, 0xe6, 0x28, 0xff, 0xc3, 0xea, 0xbd, 0x30, 0xc7,
		0x20, 0x76, 0xd0, 0x87, 0x98, 0xac, 0x4c, 0x38, 0x47, 0xc5, 0xea, 0xbd, 0xd0, 0x1f, 0xcd, 0xba,
		0x7d, 0xef, 0x39, 0xa6, 0xf5, 0xa4, 0x86, 0x4a, 0x29, 0xfa, 0x7b, 0xa4, 0xa4, 0x85, 0x49, 0x30,
		0xdd, 0x5e, 0xe0, 0x2c, 0x29, 0xa2, 0x25, 0xa8, 0x33, 0x03, 0xec, 0x6a, 0xa0, 0x5e, 0x14, 0xec,
		0x52, 0xb4, 0x41, 0x6a, 0xa2, 0xab, 0xa3, 0xed, 0x39, 0x29, 0xec, 0x81, 0x38, 0x22, 0x1d, 0x95,
		0xe2, 0x92, 0xaa, 0x1d, 0xb0, 0xa1, 0x2e, 0x3d, 0x38, 0x1d, 0x4c, 0x04, 0x74, 0x0a, 0x74, 0x0a,
		0x74, 0x0a, 0x74, 0x9a, 0x43, 0x74, 0xea, 0x2f, 0xfc, 0x44, 0xf4, 0x44, 0x0f, 0x95, 0x9a, 0xee,
		0xf9, 0x8f, 0x00, 0xbc, 0x9a, 0x4d, 0xbc, 0x7a, 0x7a, 0x71, 0xa1, 0x10, 0xac, 0x5e, 0xdf, 0x7e,
		0x55, 0x82, 0x8d, 0x4b, 0xe1, 0x74, 0xb5, 0xab, 0x53, 0x20, 0xe3, 0xf8, 0x8a, 0xf4, 0xe2, 0x42,
		0x19, 0x2c, 0x0e, 0x04, 0x81, 0xac, 0x72, 0xc6, 0xd4, 0x64, 0xa1, 0x18, 0x9c, 0x14, 0x4a, 0x40,
		0xe0, 0xb4, 0x08, 0x1c, 0xa1, 0xdb, 0x0c, 0x86, 0x6e, 0x09, 0xb2, 0x0c, 0x25, 0xc6, 0x3f, 0x3f,
		0x64, 0x48, 0x54, 0xa8, 0x44, 0x24, 0xab, 0xa2, 0xa1, 0x49, 0x0d, 0x3e, 0x13, 0xc5, 0xf0, 0xe5,
		0x48, 0xae, 0xb8, 0x9c, 0x49, 0x90, 0x31, 0xc9, 0x11, 0x7a, 0x92, 0xc8, 0xbc, 0xe4, 0x88, 0xbc,
		0xf4, 0x48, 0x3c, 0x05, 0x15, 0x40, 0xeb, 0xfa, 0x53, 0xb9, 0xfa, 0xe4, 0xae, 0x3d, 0xb9, 0x2b,
		0x4f, 0xee, 0xba, 0x67, 0xcb, 0xba, 0xc8, 0x8e, 0xa0, 0x6b, 0xbe, 0x42, 0xef, 0xd8, 0x2d, 0xa3,
		0xa3, 0x77, 0x29, 0x8a, 0x43, 0x8d, 0xf4, 0xcb, 0xe4, 0x3c, 0x34, 0x29, 0x40, 0x45, 0x34, 0xa9,
		0x45, 0x0a, 0x50, 0x46, 0xb9, 0x46, 0xa4, 0x00, 0xd1, 0x72, 0x89, 0x43, 0xb9, 0xef, 0x99, 0x96,
		0xb7, 0x5f, 0xa2, 0x90, 0xf9, 0x48, 0xcb, 0x10, 0xdc, 0xce, 0xd5, 0xee, 0x0c, 0xeb, 0x89, 0xe5,
		0xf1, 0x62, 0xd0, 0xb5, 0xa9, 0xe0, 0xaa, 0xc5, 0x57, 0xa3, 0xd3, 0x63, 0x0a, 0xca, 0x3a, 0x5c,
		0x3a, 0xa1, 0x9f, 0x73, 0x61, 0x3e, 0x99, 0x2a, 0x6e, 0xcf, 0x6a, 0x37, 0xec, 0xc9, 0xf0, 0xcc,
		0x1f, 0x8c, 0xfc, 0xf2, 0x28, 0xe5, 0xad, 0x9b, 0x6b, 0xe3, 0x55, 0x9d, 0x08, 0x94, 0x4b, 0xc7,
		0xe5, 0xe3, 0xc3, 0xa3, 0xd2, 0xf1, 0x01, 0x64, 0x61, 0xcd, 0xa9, 0xc0, 0xc6, 0x26, 0xe4, 0xdb,
		0x33, 0x4f, 0x7f, 0x61, 0x6d, 0x5a, 0xdc, 0xfd, 0x22, 0xbd, 0x70, 0x19, 0x00, 0x37, 0x00, 0x37,
		0x00, 0x37, 0x00, 0xf7, 0x44, 0xd0, 0xfe, 0x85, 0xb5, 0xa9, 0xe2, 0xf4, 0x43, 0x46, 0xf1, 0x98,
		0x60, 0xec, 0x68, 0x85, 0x72, 0x7b, 0x27, 0x9f, 0xcc, 0xe1, 0x51, 0xe0, 0xf8, 0x28, 0x72, 0x80,
		0xe8, 0x77, 0x43, 0xa9, 0x43, 0xa4, 0xda, 0x31, 0x4a, 0x0d, 0x14, 0xab, 0x07, 0xc7, 0x0a, 0x1c,
		0x26, 0xa5, 0x8e, 0x53, 0x6a, 0x0e, 0xd4, 0x26, 0xca, 0x4c, 0x4e, 0x73, 0x43, 0x1a, 0x79, 0xca,
		0x46, 0x54, 0x60, 0x50, 0xdd, 0x30, 0x81, 0x4e, 0x41, 0xba, 0xe1, 0x27, 0xc2, 0x39, 0x6a, 0x86,
		0xe7, 0x31, 0xc7, 0x22, 0xb7, 0xa9, 0xda, 0xc3, 0x2f, 0x7a, 0xe3, 0xa1, 0xa8, 0x1f, 0x37, 0x7e,
		0xa1, 0x4b, 0x93, 0x6b, 0x50, 0x2e, 0xd4, 0xed, 0x7d, 0xf5, 0x0f, 0x65, 0xab, 0xf5, 0xd7, 0x68,
		0xb9, 0xfe, 0xa1, 0xe1, 0x48, 0x2b, 0x3a, 0xd2, 0xb8, 0xf6, 0x96, 0xd4, 0x29, 0x4a, 0xe1, 0xda,
		0xdb, 0xe7, 0x1a, 0xf2, 0x6c, 0x63, 0x4e, 0xe5, 0xaf, 0xd5, 0x49, 0xa1, 0x88, 0x64, 0x54, 0xd2,
		0x51, 0x37, 0x85, 0x81, 0xb6, 0xd8, 0xab, 0xa7, 0x3f, 0xdb, 0x5d, 0x5a, 0x1a, 0x7a, 0x38, 0x0b,
		0xb8, 0x68, 0x70, 0xd1, 0xcb, 0x77, 0x14, 0x5c, 0x74, 0x26, 0x74, 0x60, 0x3e, 0xb9, 0xe8, 0x81,
		0x9e, 0x01, 0x19, 0x9d, 0x02, 0xd0, 0x36, 0xbb, 0xba, 0xd1, 0x6e, 0x3b, 0xcc, 0x75, 0x55, 0xe0,
		0xec, 0x63, 0xc2, 0x39, 0x48, 0x77, 0x82, 0x7e, 0x47, 0xe6, 0xec, 0xcc, 0x8f, 0xb2, 0x82, 0xbd,
		0x51, 0xc9, 0x71, 0x28, 0xe7, 0x3a, 0x86, 0x13, 0x6e, 0x05, 0x1e, 0xfc, 0xfb, 0xc3, 0x9e, 0x7e,
		0x1c, 0x3a, 0xf3, 0xef, 0x7b, 0xc1, 0x7f, 0x7e, 0x96, 0xfa, 0xef, 0xa5, 0x87, 0xa2, 0x5e, 0x8e,
		0x5e, 0x2d, 0x1d, 0x3c, 0x14, 0xf5, 0x83, 0xc6, 0xf6, 0xd6, 0xb7, 0x6f, 0x3b, 0x49, 0x3f, 0xb3,
		0xfd, 0x73, 0xbf, 0x4f, 0xdf, 0x0e, 0xa4, 0xa1, 0x62, 0x7b, 0x54, 0x32, 0x2c, 0x23, 0xa6, 0x65,
		0x4b, 0xd5, 0x2e, 0x6d, 0xff, 0x43, 0xcb, 0x7b, 0x33, 0xad, 0x8f, 0x6b, 0xa4, 0xe6, 0x0e, 0xa1,
		0xe6, 0x64, 0xa9, 0xb9, 0xe0, 0x34, 0x18, 0xfa, 0xe3, 0xa9, 0x7e, 0xd9, 0xf8, 0xb9, 0xf7, 0xb1,
		0xdc, 0x3f, 0xd9, 0xfe, 0x79, 0xd4, 0x9f, 0x7e, 0xf1, 0x7d, 0xde, 0xdb, 0xf6, 0x3e, 0x1e, 0xf5,
		0x4f, 0x16, 0xfc, 0xe5, 0xb0, 0x7f, 0x12, 0x73, 0x8c, 0x83, 0xfe, 0xd6, 0xcc, 0x5b, 0xfd, 0xd7,
		0x4b, 0x8b, 0x3e, 0x50, 0x5e, 0xf0, 0x81, 0xfd, 0x45, 0x1f, 0xd8, 0x5f, 0xf0, 0x81, 0x85, 0x8f,
		0x54, 0x5a, 0xf0, 0x81, 0x83, 0xfe, 0xfb, 0xcc, 0xfb, 0xb7, 0xe6, 0xbf, 0xf5, 0xb0, 0xbf, 0xfd,
		0xbe, 0xe8, 0x6f, 0x47, 0xfd, 0xf7, 0x93, 0xed, 0x6d, 0x28, 0x7e, 0x61, 0xc5, 0x0f, 0xb1, 0x55,
		0x2f, 0xb6, 0xf9, 0x37, 0x84, 0x08, 0xc9, 0x14, 0x10, 0x92, 0x49, 0x38, 0xc7, 0xda, 0x86, 0x64,
		0xee, 0x2b, 0x57, 0x97, 0xca, 0x4a, 0xbb, 0xd4, 0x2a, 0x95, 0xbb, 0xe6, 0xe9, 0xc5, 0xc5, 0x5d,
		0xe5, 0xfe, 0x1e, 0x81, 0xa0, 0xb8, 0x16, 0x76, 0x7c, 0xd1, 0xd4, 0x14, 0x43, 0x09, 0x84, 0x02,
		0xc1, 0x27, 0xea, 0x51, 0x37, 0x25, 0xf8, 0xe4, 0xd8, 0x3d, 0x8f, 0xe9, 0xb6, 0x63, 0x3e, 0x11,
		0x64, 0x4e, 0x4e, 0x04, 0xa0, 0x26, 0x66, 0x42, 0x10, 0x0a, 0x41, 0xa8, 0xe5, 0x3b, 0x8a, 0x20,
		0x54, 0x26, 0x74, 0x61, 0x3e, 0x83, 0x50, 0xa1, 0x96, 0xd1, 0x0d, 0xcf, 0x73, 0xc8, 0xe3, 0x50,
		0x04, 0xd0, 0x96, 0x16, 0xd2, 0xaa, 0x81, 0xb2, 0xa3, 0xac, 0x22, 0x42, 0xe8, 0x1f, 0x20, 0xd7,
		0x0a, 0xed, 0x1c, 0xa5, 0xb0, 0x28, 0xf8, 0xf9, 0xed, 0x75, 0xed, 0xaa, 0x52, 0x27, 0x2a, 0x46,
		0x48, 0x56, 0x3c, 0x94, 0x1c, 0x0b, 0x07, 0xcb, 0x4f, 0x0a, 0x7d, 0x07, 0xe9, 0x56, 0x94, 0x33,
		0x8c, 0xb6, 0x97, 0xaa, 0xc8, 0x60, 0xe6, 0x8b, 0xf5, 0xa1, 0x22, 0x5c, 0x32, 0xf0, 0x9c, 0x8d,
		0x8a, 0x70, 0xf2, 0x4a, 0x03, 0x4a, 0x28, 0xb0, 0xf6, 0x21, 0xc5, 0x0d, 0x97, 0xbd, 0xd1, 0xd9,
		0xd8, 0x60, 0x4d, 0x4a, 0xcd, 0x3a, 0x49, 0x85, 0xfd, 0xc4, 0xe4, 0x8c, 0x5f, 0x3a, 0x04, 0x24,
		0x43, 0x6b, 0x0d, 0x5c, 0x38, 0x31, 0x89, 0x18, 0xa2, 0xcb, 0x68, 0x3c, 0x41, 0x59, 0x95, 0x53,
		0xa2, 0x4f, 0x9a, 0x7f, 0x2a, 0xd3, 0x1f, 0x1d, 0xf7, 0x3f, 0x1d, 0x39, 0xce, 0xa7, 0x6c, 0x67,
		0x93, 0xcc, 0xb9, 0x24, 0x73, 0x26, 0xa7, 0x9d, 0x47, 0x47, 0x8a, 0xe7, 0x98, 0xae, 0xbe, 0x96,
		0x55, 0x4c, 0x4f, 0x8b, 0xb4, 0xab, 0xc3, 0xdc, 0x5e, 0xc7, 0x93, 0x5f, 0x9b, 0x73, 0x72, 0x78,
		0xb9, 0x35, 0x3a, 0x8b, 0xb2, 0x6b, 0x74, 0x16, 0xf3, 0x51, 0xa3, 0xd3, 0x41, 0x81, 0x4e, 0x35,
		0xec, 0x13, 0x8d, 0xe2, 0xc8, 0x26, 0xd2, 0x97, 0x4e, 0x2d, 0xcd, 0x57, 0x01, 0xb2, 0x09, 0x25,
		0x0a, 0x22, 0x89, 0x86, 0x40, 0xa2, 0x25, 0x8e, 0xa2, 0x6e, 0x16, 0xe7, 0xe7, 0x95, 0x5a, 0xbd,
		0x79, 0x77, 0xfb, 0xa5, 0x4e, 0xd1, 0x67, 0x62, 0xd0, 0xc6, 0xe2, 0xff, 0x55, 0xce, 0x09, 0x27,
		0x09, 0x28, 0xa3, 0x9b, 0xca, 0x1f, 0xf5, 0xe6, 0x7d, 0xfd, 0xb4, 0x5e, 0xb9, 0xae, 0xdc, 0xd4,
		0xb5, 0x6c, 0xb3, 0xb2, 0x64, 0x34, 0xd1, 0xe4, 0x86, 0x92, 0xb0, 0x38, 0xd3, 0x2b, 0x2d, 0xbd,
		0x67, 0x74, 0x21, 0x6c, 0x42, 0x31, 0x26, 0x33, 0xb2, 0x7b, 0xc1, 0x65, 0x33, 0x3e, 0x78, 0xc1,
		0x1e, 0x8d, 0x10, 0x52, 0x4d, 0x2f, 0xb1, 0xc4, 0x49, 0x7e, 0x33, 0xdc, 0xd1, 0x3c, 0xbe, 0x01,
		0xdc, 0x08, 0xf6, 0xe8, 0xed, 0xc9, 0xf6, 0x74, 0xbb, 0xa5, 0xb7, 0xec, 0x97, 0xae, 0xc3, 0x5c,
		0x97, 0xb5, 0xf5, 0x0e, 0x33, 0x82, 0x0a, 0xd0, 0x7d, 0xb0, 0x39, 0x6b, 0xc5, 0xe6, 0x44, 0x8c,
		0x41, 0x0e, 0xb9, 0x13, 0x97, 0x79, 0xba, 0x67, 0x48, 0x24, 0x4f, 0x06, 0x03, 0x82, 0x3d, 0x01,
		0x7b, 0x02, 0xf6, 0x24, 0x1b, 0xec, 0x89, 0x24, 0x82, 0x74, 0x46, 0x80, 0xa5, 0x10, 0xa5, 0x92,
		0x8f, 0x3c, 0xf8, 0x12, 0xf0, 0x25, 0xe0, 0x4b, 0x64, 0xab, 0x90, 0xe1, 0x80, 0x2f, 0x76, 0x9b,
		0xd1, 0xe5, 0x10, 0x06, 0xa3, 0x23, 0x6f, 0x50, 0x45, 0xde, 0xa0, 0x83, 0xa4, 0xc1, 0x74, 0xd5,
		0x90, 0x1a, 0x75, 0x24, 0x9f, 0x7d, 0x28, 0xe4, 0x32, 0x63, 0x90, 0xf6, 0x2e, 0x0c, 0x12, 0x05,
		0x57, 0xcc, 0x12, 0x26, 0x0a, 0xde, 0x5c, 0x55, 0x6f, 0x2a, 0xe4, 0xb9, 0x82, 0x77, 0x95, 0xcb,
		0xca, 0x5d, 0xe5, 0xe6, 0x1c, 0x69, 0x7c, 0xd3, 0x53, 0x44, 0x1b, 0x40, 0x9b, 0x67, 0x37, 0x5a,
		0x7e, 0xd9, 0x0c, 0x2a, 0x8d, 0x2e, 0x2b, 0x6c, 0x7c, 0x4f, 0x5c, 0x72, 0xa2, 0x52, 0xfe, 0x32,
		0x23, 0xff, 0x90, 0x96, 0xd0, 0x8c, 0x58, 0x3c, 0x29, 0xc4, 0xa6, 0xbc, 0x3d, 0x93, 0xd1, 0xdd,
		0xd5, 0xb4, 0x3a, 0xa6, 0x45, 0xd0, 0xde, 0x35, 0x1a, 0x17, 0x5c, 0x08, 0xb8, 0x10, 0x70, 0x21,
		0x9b, 0xc1, 0x85, 0x48, 0xa6, 0x55, 0x67, 0x0e, 0x82, 0x54, 0x7a, 0x95, 0x48, 0xb5, 0x80, 0x0f,
		0x01, 0x1f, 0x02, 0x3e, 0x44, 0x36, 0xe2, 0x97, 0xad, 0xaa, 0x86, 0x03, 0xcb, 0x08, 0xf5, 0xae,
		0x3c, 0x4d, 0xe2, 0xe1, 0xdf, 0x55, 0xca, 0x8b, 0xc8, 0x7f, 0x25, 0x53, 0x62, 0x2a, 0x94, 0x99,
		0x42, 0xa5, 0xa6, 0x4a, 0xb9, 0x29, 0x57, 0x72, 0xca, 0x95, 0x9d, 0x5a, 0xa5, 0x47, 0x47, 0xa0,
		0x90, 0x12, 0x63, 0x54, 0xe4, 0xf0, 0x3c, 0xc5, 0x45, 0x75, 0x95, 0x7c, 0x06, 0x7e, 0xa1, 0xb0,
		0x6e, 0xfc, 0x7d, 0x21, 0xef, 0xbf, 0x37, 0xbd, 0x3b, 0x47, 0x0a, 0xa6, 0x52, 0xd3, 0x8f, 0x4f,
		0xdd, 0x6e, 0x0d, 0xbf, 0x98, 0xca, 0xfe, 0x7c, 0xc3, 0x49, 0x15, 0xf7, 0xe9, 0x1b, 0xce, 0x9b,
		0x56, 0xef, 0xb5, 0xd1, 0x19, 0x51, 0xdd, 0x83, 0x8d, 0x58, 0xdd, 0xcf, 0x17, 0x29, 0x85, 0x7d,
		0xfc, 0x66, 0x44, 0x4a, 0x75, 0x3f, 0x3f, 0xc8, 0x16, 0x71, 0x9f, 0x3f, 0x75, 0xb3, 0xa0, 0xa4,
		0x74, 0x3c, 0x03, 0xff, 0xcc, 0x5e, 0x75, 0xf2, 0x9e, 0x80, 0x33, 0x10, 0x6c, 0x7d, 0xeb, 0xe6,
		0x0f, 0x4a, 0xc7, 0x4e, 0x57, 0xa4, 0x2d, 0xf5, 0xb7, 0xff, 0xb5, 0xfd, 0x2b, 0x2a, 0xc8, 0xaa,
		0x7d, 0x6e, 0x2a, 0xc7, 0xe8, 0xca, 0x74, 0xbd, 0x53, 0xcf, 0x73, 0x68, 0x9d, 0xa3, 0x6b, 0xd3,
		0xaa, 0x74, 0xc2, 0x40, 0x21, 0x71, 0xe6, 0xc0, 0xb5, 0xf1, 0x3a, 0x36, 0xd3, 0xde, 0xa7, 0x72,
		0xf9, 0xf0, 0xa8, 0x5c, 0x2e, 0x1e, 0xed, 0x1f, 0x15, 0x8f, 0x0f, 0x0e, 0xf6, 0x0e, 0xf7, 0x08,
		0x0d, 0xb0, 0x76, 0xeb, 0xb4, 0x99, 0xc3, 0xda, 0x67, 0x6f, 0xda, 0x49, 0xc1, 0xea, 0x75, 0x3a,
		0x2a, 0xa6, 0xfa, 0xe2, 0x32, 0x87, 0xd4, 0xb6, 0x52, 0x49, 0x1e, 0x71, 0x46, 0xc2, 0x70, 0x1e,
		0x65, 0x99, 0x09, 0x74, 0xaa, 0x65, 0xb3, 0x53, 0x4b, 0xd2, 0xcf, 0x60, 0x08, 0xe3, 0xf2, 0x52,
		0x13, 0x19, 0xe4, 0x6f, 0xad, 0xd4, 0x8a, 0xaf, 0x41, 0xb9, 0x28, 0xba, 0x32, 0xaf, 0xc1, 0xf0,
		0x39, 0x8b, 0x49, 0x96, 0x10, 0x93, 0x1c, 0x9f, 0x02, 0x31, 0xc9, 0xc4, 0x7a, 0x12, 0x31, 0x49,
		0xc4, 0x24, 0x97, 0x2b, 0x2f, 0xc4, 0x24, 0x53, 0x55, 0x6a, 0xaa, 0x94, 0x9b, 0x72, 0x25, 0xa7,
		0x5c, 0xd9, 0xa9, 0x55, 0x7a, 0xb4, 0x4e, 0x3d, 0x62, 0x92, 0x49, 0xe0, 0x17, 0x62, 0x92, 0xf1,
		0xf7, 0x05, 0x31, 0xc9, 0x1c, 0xec, 0xd6, 0x38, 0x89, 0x85, 0x98, 0xa4, 0xb2, 0x07, 0x40, 0x4c,
		0x92, 0x5a, 0xa4, 0x10, 0x93, 0x44, 0x4c, 0x92, 0xf3, 0x1f, 0x62, 0x92, 0xf1, 0x0c, 0x3c, 0x62,
		0x92, 0xd2, 0x26, 0x44, 0x4c, 0x32, 0x73, 0xcf, 0x8d, 0x98, 0x64, 0x6c, 0x2b, 0x8f, 0x98, 0x64,
		0xc6, 0x4f, 0x0a, 0x42, 0x6c, 0x99, 0x08, 0xb1, 0x49, 0xec, 0x53, 0x22, 0x7f, 0x67, 0xb3, 0x75,
		0x15, 0x91, 0xbd, 0x7a, 0x8e, 0xa1, 0xf7, 0x2c, 0xd7, 0x33, 0xbe, 0x77, 0x24, 0x17, 0xb4, 0xfe,
		0xfb, 0x99, 0xc9, 0x37, 0xed, 0x84, 0x71, 0xae, 0x9d, 0x9d, 0x28, 0x38, 0xbb, 0xfb, 0x62, 0xb7,
		0x59, 0xe1, 0xdf, 0x85, 0x7f, 0x86, 0x65, 0x2a, 0xfe, 0x99, 0xf3, 0xc8, 0x57, 0xb0, 0x0f, 0xeb,
		0x14, 0xf7, 0x5a, 0xbc, 0x51, 0x1f, 0x72, 0x80, 0x4e, 0xb4, 0x0b, 0xe6, 0xb6, 0x1c, 0xb3, 0x4b,
		0x9a, 0xb4, 0x32, 0x14, 0xea, 0xaa, 0xa5, 0xfb, 0x3a, 0xb1, 0x10, 0x2e, 0x58, 0x2f, 0x2c, 0x3c,
		0x54, 0x30, 0xdd, 0x82, 0x6d, 0x75, 0xde, 0x0a, 0x0e, 0xeb, 0xb0, 0x1f, 0x86, 0xe5, 0x15, 0x7c,
		0x19, 0x29, 0x78, 0xcf, 0xac, 0x10, 0xaa, 0xd4, 0x7f, 0xba, 0x85, 0x48, 0xa7, 0x7e, 0xb3, 0x82,
		0x35, 0x36, 0xdd, 0x82, 0xdb, 0x65, 0x2d, 0xf3, 0xd1, 0x64, 0xed, 0x02, 0x7b, 0xed, 0x76, 0xcc,
		0x96, 0xe9, 0x75, 0xde, 0x0a, 0x9e, 0x5d, 0xf8, 0xce, 0x0a, 0xe1, 0xf2, 0xef, 0x50, 0x09, 0x99,
		0x82, 0x40, 0xca, 0xf8, 0x79, 0x69, 0x8f, 0xed, 0x0f, 0x21, 0xd0, 0x51, 0x19, 0x45, 0x99, 0x38,
		0x3e, 0x4a, 0x45, 0x02, 0xed, 0xed, 0x32, 0xe0, 0x73, 0xa1, 0xbc, 0x4c, 0x3c, 0xe4, 0xa8, 0x49,
		0xcd, 0x7e, 0x12, 0x6a, 0x84, 0x76, 0xcf, 0xbc, 0xba, 0xf1, 0xd4, 0xac, 0x86, 0xcf, 0xb5, 0x46,
		0x65, 0x6f, 0x1c, 0xf6, 0xc8, 0x1c, 0x66, 0xb5, 0x08, 0x2a, 0xdf, 0x8c, 0x86, 0x46, 0xf1, 0x1b,
		0xe1, 0xc5, 0x44, 0xf1, 0x1b, 0x75, 0xa6, 0x1a, 0xc5, 0x6f, 0x04, 0x06, 0x44, 0xf1, 0x1b, 0x42,
		0x15, 0x43, 0xa9, 0x6a, 0x14, 0xa8, 0x9c, 0x34, 0xdc, 0x6d, 0x24, 0x9a, 0xae, 0x0b, 0x61, 0x4a,
		0x99, 0x68, 0xaa, 0xbb, 0xcc, 0x53, 0x92, 0x6c, 0x1a, 0x4c, 0x84, 0x84, 0x53, 0xd5, 0x4a, 0x4d,
		0xa1, 0x72, 0x53, 0xc9, 0x93, 0x14, 0x90, 0x70, 0x9a, 0x03, 0x36, 0xa3, 0xb0, 0x16, 0x09, 0xa7,
		0x1d, 0x66, 0x3c, 0x3a, 0xec, 0x51, 0x45, 0xbe, 0x29, 0x61, 0x4a, 0xa3, 0x56, 0x8b, 0x68, 0x8d,
		0x9d, 0x9d, 0xdd, 0x45, 0xff, 0x0b, 0xd8, 0x0a, 0xd6, 0xf6, 0x55, 0xb5, 0xbb, 0x1b, 0xe9, 0xec,
		0xe1, 0x0f, 0x03, 0xae, 0x3b, 0xa0, 0x12, 0x70, 0x39, 0x73, 0xce, 0x3c, 0xb8, 0x9c, 0x49, 0x0c,
		0x84, 0xd6, 0x3f, 0x72, 0x3c, 0xa4, 0x8e, 0x70, 0x3f, 0x53, 0x96, 0xfa, 0xc6, 0xfd, 0x4c, 0xb8,
		0xcd, 0x70, 0x9b, 0xe1, 0x36, 0xc3, 0x6d, 0x86, 0xdb, 0x0c, 0xb7, 0x19, 0x6e, 0x33, 0xdc, 0x66,
		0xb8, 0xcd, 0xeb, 0xe5, 0x36, 0xc3, 0x0b, 0x5c, 0x5b, 0x2f, 0x10, 0x29, 0xc4, 0xb1, 0xb7, 0x0d,
		0x29, 0xc4, 0xcb, 0x52, 0x88, 0x87, 0x4d, 0xe8, 0x90, 0x45, 0x9c, 0x31, 0xef, 0x6c, 0xe9, 0x5e,
		0x21, 0x91, 0x78, 0x5a, 0xb4, 0xef, 0x06, 0xba, 0x91, 0x36, 0x6f, 0x74, 0xb8, 0x07, 0xc8, 0x26,
		0xce, 0x2c, 0xd6, 0x9f, 0x38, 0x46, 0xea, 0xe5, 0x02, 0x29, 0xc5, 0x42, 0xff, 0x90, 0x52, 0xac,
		0x18, 0x4c, 0x66, 0x2f, 0xab, 0x78, 0x78, 0x66, 0xd7, 0x29, 0xb1, 0x58, 0x6e, 0x38, 0x83, 0x24,
		0x8c, 0x41, 0x96, 0x50, 0x5c, 0x42, 0x42, 0x71, 0x9e, 0x98, 0x3a, 0x24, 0x14, 0x67, 0x39, 0xa1,
		0xd8, 0x47, 0x23, 0x74, 0x61, 0xd1, 0x60, 0x74, 0x9a, 0xa8, 0x68, 0x11, 0xc9, 0xc4, 0x88, 0x8a,
		0x66, 0xde, 0xef, 0xde, 0xd0, 0xa8, 0x28, 0x59, 0x00, 0x60, 0x28, 0xf1, 0xcc, 0xea, 0xbd, 0xb0,
		0xd0, 0xfb, 0xa2, 0x90, 0xfa, 0x01, 0x76, 0x29, 0x13, 0x8c, 0x5d, 0xb1, 0x7a, 0x2f, 0x74, 0xe7,
		0xa9, 0x6e, 0xdf, 0x87, 0xe5, 0x93, 0x48, 0x7d, 0xfe, 0x62, 0x70, 0xb7, 0x36, 0xb8, 0xf6, 0x4a,
		0xe9, 0xe8, 0xef, 0x05, 0xc0, 0x7f, 0xe0, 0x0d, 0xe7, 0x2b, 0x21, 0xb0, 0x6e, 0x57, 0x2d, 0x8f,
		0x76, 0x17, 0xa2, 0x0d, 0xa0, 0xad, 0xc5, 0x33, 0x5a, 0xfe, 0x93, 0xc2, 0x1e, 0xe8, 0x88, 0x35,
		0x02, 0x93, 0xeb, 0x4b, 0x47, 0x48, 0x8c, 0x68, 0x49, 0xf0, 0xf7, 0x3f, 0xa4, 0xb8, 0xd9, 0xb2,
		0x37, 0x39, 0xfd, 0xcd, 0xd5, 0xa4, 0xd0, 0x27, 0x12, 0x98, 0x25, 0x31, 0xf9, 0xe2, 0x97, 0x0a,
		0x01, 0x89, 0x90, 0xc4, 0x1b, 0x49, 0xe5, 0x8b, 0x24, 0xf1, 0x44, 0xd2, 0xf8, 0x21, 0x99, 0x0e,
		0x1b, 0x81, 0x83, 0x26, 0xdb, 0x21, 0x23, 0x73, 0xc0, 0xc8, 0x1c, 0x2e, 0x1a, 0x07, 0x2b, 0x5d,
		0x2d, 0x2d, 0x8b, 0xd7, 0xd1, 0x22, 0x9d, 0xea, 0x30, 0xb7, 0xd7, 0xf1, 0xe4, 0x13, 0xc4, 0x93,
		0xc3, 0xcb, 0x25, 0x8a, 0x8b, 0xa8, 0x3c, 0x91, 0x65, 0xc6, 0x06, 0x44, 0x71, 0x9e, 0xb0, 0xbd,
		0x74, 0x06, 0x66, 0xbe, 0x0a, 0x90, 0xdd, 0x24, 0x83, 0x82, 0x78, 0xa1, 0x21, 0x5c, 0x68, 0x89,
		0x96, 0x90, 0x60, 0x39, 0x3d, 0x3f, 0xaf, 0xd4, 0xea, 0xcd, 0xbb, 0xdb, 0x2f, 0x75, 0x0a, 0x9a,
		0x65, 0x40, 0xaf, 0xfc, 0xbf, 0xca, 0x39, 0xe1, 0x24, 0x25, 0x7f, 0x92, 0x9b, 0xca, 0x1f, 0xf5,
		0xe6, 0x7d, 0xfd, 0xb4, 0x5e, 0xb9, 0xae, 0xdc, 0xd4, 0xb5, 0x6c, 0x93, 0x97, 0x64, 0xc4, 0xcd,
		0xe4, 0x86, 0x92, 0xd0, 0x36, 0xd3, 0x2b, 0x2d, 0xfd, 0x96, 0x57, 0xc4, 0x09, 0x8d, 0xc9, 0x8c,
		0x6c, 0x5a, 0x28, 0x9b, 0x17, 0x08, 0x2f, 0xd8, 0xa3, 0x11, 0x42, 0xaa, 0xe9, 0x25, 0x96, 0x38,
		0xc9, 0x6f, 0x86, 0x3b, 0x9a, 0xc7, 0x37, 0x80, 0xa0, 0x30, 0xd6, 0x8b, 0xc2, 0x10, 0xe7, 0xa5,
		0x04, 0x78, 0x83, 0x0f, 0x0a, 0x37, 0x4f, 0x3b, 0xed, 0x3d, 0xf9, 0x5f, 0x9d, 0xb5, 0x85, 0x52,
		0x9a, 0x25, 0xf1, 0x14, 0xbb, 0x11, 0xda, 0x3b, 0x99, 0xda, 0xd1, 0xc1, 0xcb, 0x73, 0x76, 0x76,
		0xe1, 0x9f, 0x86, 0x7f, 0x19, 0xdb, 0xe9, 0x99, 0x97, 0x86, 0xaf, 0x44, 0x3b, 0x2f, 0xca, 0x91,
		0x4c, 0x66, 0xbf, 0x6a, 0x67, 0x9f, 0x6b, 0x85, 0xf0, 0xc1, 0xa2, 0x04, 0x43, 0xb7, 0x60, 0xb4,
		0xdb, 0xac, 0x5d, 0xf0, 0xec, 0x42, 0xf4, 0x15, 0xa3, 0xbf, 0x07, 0xf9, 0x86, 0xbd, 0x4e, 0xe6,
		0x48, 0x9a, 0x62, 0x36, 0x49, 0x9a, 0xef, 0x4f, 0x5d, 0x1d, 0x3c, 0x0d, 0x0d, 0x4f, 0x33, 0x58,
		0x5b, 0x50, 0x35, 0xe1, 0x40, 0xfe, 0x7a, 0x0c, 0xd4, 0x83, 0x74, 0xa2, 0x66, 0x7c, 0x70, 0x59,
		0xb9, 0x47, 0x93, 0x3a, 0xa8, 0x6e, 0x77, 0xf5, 0x0e, 0xfb, 0xc1, 0x3a, 0x85, 0x96, 0x6d, 0x79,
		0x86, 0x69, 0x31, 0xa7, 0xf0, 0x68, 0x3b, 0x85, 0xb3, 0xcf, 0x35, 0x3d, 0xca, 0x6d, 0x6e, 0x15,
		0x24, 0x3f, 0xc2, 0x86, 0xd7, 0x28, 0x95, 0xa7, 0x9d, 0x40, 0x16, 0xa5, 0xa6, 0xbd, 0x24, 0xf3,
		0x45, 0x69, 0x6b, 0x53, 0xc5, 0x70, 0xb4, 0xc1, 0x0b, 0x47, 0xe5, 0xf8, 0x10, 0xe9, 0xf9, 0x0e,
		0x9a, 0x50, 0xd4, 0x4f, 0x24, 0xdc, 0xc9, 0x27, 0xf2, 0xc9, 0xb7, 0x97, 0xc3, 0x30, 0x6b, 0x2d,
		0xdb, 0x6a, 0x9b, 0x62, 0x26, 0x74, 0xbc, 0xf6, 0xed, 0x60, 0x2c, 0x4e, 0x21, 0x13, 0x33, 0x4f,
		0xc2, 0xe6, 0x48, 0x86, 0xf9, 0x91, 0x18, 0x98, 0x90, 0x65, 0x5b, 0xa4, 0xdb, 0x12, 0xe9, 0xb6,
		0x43, 0x6e, 0x60, 0x41, 0xad, 0x9f, 0x2e, 0x0a, 0x67, 0x03, 0xa4, 0x29, 0xe1, 0x18, 0xce, 0x45,
		0xb0, 0xc2, 0x47, 0x12, 0xfe, 0x2b, 0xfc, 0x57, 0xf8, 0xaf, 0x34, 0xfe, 0xab, 0xe1, 0xea, 0x3e,
		0x0e, 0xd2, 0x3b, 0xcc, 0x7a, 0x0a, 0xe0, 0x90, 0x64, 0x17, 0x76, 0x6a, 0x7c, 0xb8, 0x90, 0x70,
		0x21, 0xe1, 0x42, 0x52, 0xb8, 0x90, 0x68, 0x76, 0x21, 0x55, 0x6c, 0xd1, 0xec, 0x42, 0x8d, 0xe2,
		0xa1, 0x56, 0x40, 0xca, 0x14, 0x91, 0x32, 0x85, 0xa4, 0x4c, 0x31, 0xc9, 0x55, 0x50, 0x92, 0x15,
		0x15, 0x99, 0xc2, 0x1a, 0x0e, 0x6c, 0x77, 0x99, 0x63, 0x78, 0xb6, 0x43, 0x5f, 0xa8, 0x66, 0x38,
		0x13, 0xaa, 0x77, 0xaa, 0x56, 0x6e, 0xf3, 0x94, 0x5c, 0xd7, 0xee, 0x04, 0x19, 0x71, 0x2e, 0x4a,
		0x78, 0x66, 0x58, 0xfd, 0x2d, 0x52, 0x83, 0xa3, 0xdd, 0x43, 0x1d, 0xcf, 0x82, 0xda, 0x3a, 0x9e,
		0x66, 0x9b, 0x59, 0x9e, 0xe9, 0xbd, 0x29, 0xaa, 0xe5, 0x79, 0x40, 0x38, 0x47, 0x35, 0xfa, 0x2a,
		0x67, 0x86, 0xab, 0xe0, 0x90, 0x0e, 0x16, 0xf0, 0xb4, 0x5e, 0xbf, 0xab, 0x9e, 0x7d, 0xa9, 0x57,
		0x9a, 0xe7, 0xb7, 0xd7, 0xb5, 0xd3, 0xbb, 0xea, 0xfd, 0xed, 0x0d, 0xf5, 0x79, 0xfd, 0x6a, 0x74,
		0x7a, 0xcc, 0x95, 0x5e, 0xb2, 0x70, 0xde, 0xbf, 0x9f, 0xe4, 0x33, 0x2c, 0x58, 0xcd, 0xca, 0xff,
		0x4f, 0x23, 0x9f, 0xba, 0xff, 0x71, 0x7d, 0xd7, 0xef, 0x73, 0x05, 0xeb, 0x27, 0xb2, 0x7e, 0x57,
		0x2a, 0xd6, 0x8f, 0x74, 0x86, 0x06, 0x8c, 0x69, 0x01, 0x0d, 0x82, 0xd2, 0xde, 0x02, 0xed, 0x87,
		0x6f, 0xac, 0xe8, 0x1d, 0xb2, 0x70, 0x1a, 0x78, 0x63, 0xf0, 0xc6, 0xe0, 0x8d, 0xc1, 0x1b, 0xcb,
		0xa9, 0x37, 0xd6, 0x33, 0x2d, 0x6f, 0xbf, 0xa4, 0xc0, 0x11, 0xa3, 0xec, 0xa9, 0x70, 0x67, 0x58,
		0x4f, 0x8c, 0xdc, 0x39, 0xa1, 0x07, 0x86, 0xda, 0xb5, 0x69, 0x91, 0xab, 0x97, 0x49, 0x9f, 0x8e,
		0xb6, 0xa2, 0xd0, 0xc4, 0x7c, 0x97, 0x4e, 0x98, 0xdf, 0x76, 0x61, 0x3e, 0x99, 0x9e, 0xab, 0x70,
		0xe2, 0x1b, 0xf6, 0x64, 0x78, 0xe6, 0x0f, 0xff, 0xbb, 0x3e, 0x1a, 0x1d, 0x97, 0xad, 0x83, 0x97,
		0xa2, 0x5d, 0x1b, 0xaf, 0xea, 0x45, 0xa5, 0x5c, 0x3a, 0x2e, 0x1f, 0x1f, 0x1e, 0x95, 0x8e, 0x0f,
		0x20, 0x33, 0xb9, 0xf2, 0xcc, 0xe8, 0x46, 0x6f, 0xc0, 0x33, 0x5b, 0x53, 0xcf, 0x0c, 0x4d, 0x7b,
		0x94, 0x26, 0x7f, 0x8f, 0x12, 0x20, 0x77, 0x27, 0xf3, 0x21, 0x77, 0x27, 0xb3, 0xa3, 0xd0, 0xc9,
		0x55, 0x16, 0xf6, 0x45, 0x27, 0x57, 0xe4, 0x84, 0x64, 0xc8, 0x1d, 0x47, 0x4e, 0x88, 0x5a, 0x13,
		0x82, 0x9c, 0x90, 0xb8, 0xca, 0x0c, 0x2c, 0x64, 0x3c, 0x25, 0x07, 0x16, 0x32, 0x0f, 0xea, 0x6f,
		0x91, 0x1a, 0x04, 0x0b, 0x39, 0xb5, 0x3e, 0xc8, 0x09, 0xe1, 0x98, 0x03, 0x39, 0x21, 0x04, 0xff,
		0x90, 0x13, 0x92, 0xd3, 0xf5, 0x43, 0x4e, 0x88, 0xd8, 0xfa, 0x21, 0x27, 0x44, 0xb9, 0x31, 0x45,
		0x8a, 0x03, 0x52, 0x1c, 0xe0, 0x5c, 0xc0, 0xb9, 0x80, 0x73, 0xb1, 0x26, 0xce, 0x05, 0x52, 0x1c,
		0x32, 0x84, 0x73, 0x90, 0xe2, 0x40, 0x23, 0xeb, 0x48, 0x71, 0x90, 0x24, 0x2a, 0x48, 0x71, 0xc8,
		0xa9, 0xa3, 0x91, 0xbb, 0x14, 0x07, 0x44, 0xec, 0xa5, 0x8e, 0x9f, 0xe1, 0x88, 0xbd, 0xc4, 0x1e,
		0x65, 0xf2, 0xf7, 0x1a, 0x8d, 0xea, 0xd2, 0x95, 0x8e, 0x0c, 0xb4, 0xd1, 0x3f, 0x1f, 0x3e, 0x5b,
		0xf3, 0xec, 0xa9, 0x3b, 0xf6, 0xdb, 0xa9, 0x5b, 0x33, 0xbc, 0xe7, 0xab, 0xf0, 0x39, 0xd7, 0xa8,
		0xa7, 0x7e, 0xcb, 0x7e, 0x79, 0xe9, 0x59, 0xa6, 0xf7, 0xa6, 0xb7, 0xec, 0x9e, 0x45, 0xd0, 0x3c,
		0x69, 0x7a, 0x02, 0x54, 0x34, 0x92, 0x41, 0x81, 0xa0, 0xa2, 0x91, 0x3a, 0x42, 0x03, 0x15, 0x8d,
		0x44, 0x55, 0x0c, 0x2a, 0x1a, 0x91, 0x29, 0x1a, 0x4a, 0x85, 0xa3, 0x46, 0xf1, 0x50, 0x2b, 0x20,
		0x65, 0x8a, 0x48, 0x99, 0x42, 0x52, 0xa6, 0x98, 0xf2, 0xe1, 0x4e, 0x21, 0x7b, 0x2d, 0xae, 0x32,
		0x43, 0x80, 0x29, 0x9e, 0x92, 0x43, 0x80, 0x29, 0x0f, 0xea, 0x6f, 0x91, 0x1a, 0x44, 0x80, 0x69,
		0x6a, 0x7d, 0x90, 0xbd, 0xc6, 0x31, 0x07, 0xb2, 0xd7, 0x08, 0xfe, 0x21, 0x7b, 0x2d, 0xa7, 0xeb,
		0x87, 0xec, 0x35, 0xb1, 0xf5, 0x43, 0xf6, 0xda, 0xba, 0x18, 0x53, 0xdc, 0x9b, 0x4d, 0x73, 0x0b,
		0x90, 0xee, 0x07, 0x6f, 0x0c, 0xde, 0x18, 0xbc, 0x31, 0x78, 0x63, 0x31, 0xce, 0x0e, 0xd2, 0xfd,
		0x32, 0x04, 0x0c, 0x91, 0xee, 0x47, 0x23, 0xeb, 0x48, 0xf7, 0x93, 0x24, 0x2a, 0x48, 0xf7, 0xcb,
		0xa9, 0x67, 0x86, 0x8a, 0x46, 0xf0, 0xcc, 0x52, 0x1d, 0x11, 0xf9, 0x91, 0xfc, 0x19, 0x70, 0x53,
		0xe9, 0x51, 0x28, 0x69, 0x24, 0x0b, 0xfc, 0xa2, 0xa4, 0x11, 0x92, 0x42, 0x32, 0xe4, 0x8f, 0x23,
		0x29, 0x44, 0xad, 0x0d, 0x41, 0x52, 0x48, 0x5c, 0x65, 0x06, 0x1a, 0x32, 0x9e, 0x92, 0x03, 0x0d,
		0x99, 0x07, 0xf5, 0xb7, 0x48, 0x0d, 0x82, 0x86, 0x9c, 0x5a, 0x1f, 0x24, 0x85, 0x70, 0xcc, 0x81,
		0xa4, 0x10, 0x82, 0x7f, 0x48, 0x0a, 0xc9, 0xe9, 0xfa, 0x21, 0x29, 0x44, 0x6c, 0xfd, 0x90, 0x14,
		0xa2, 0xdc, 0x98, 0x22, 0xc7, 0x01, 0x39, 0x0e, 0x70, 0x2e, 0xe0, 0x5c, 0xc0, 0xb9, 0x58, 0x13,
		0xe7, 0x02, 0x39, 0x0e, 0x19, 0xc2, 0x39, 0xc8, 0x71, 0xa0, 0x91, 0x75, 0xe4, 0x38, 0x48, 0x12,
		0x15, 0xe4, 0x38, 0xe4, 0xd4, 0xd1, 0x40, 0x49, 0x23, 0x84, 0xec, 0xb3, 0x1a, 0xb2, 0x47, 0x4d,
		0xa3, 0xb4, 0xc5, 0x24, 0xcb, 0xe2, 0x91, 0xe5, 0xa2, 0x46, 0xe7, 0x83, 0x47, 0x3d, 0x0f, 0x9e,
		0x74, 0xad, 0xca, 0x1a, 0x49, 0xad, 0x39, 0x42, 0x53, 0x6b, 0x04, 0x45, 0x8c, 0x50, 0xc4, 0x48,
		0x15, 0x85, 0x81, 0x22, 0x46, 0x62, 0x03, 0x1a, 0x8f, 0xa6, 0xee, 0xfa, 0xff, 0x47, 0xe0, 0xe1,
		0x0e, 0xcf, 0xc4, 0xf8, 0x24, 0x34, 0x99, 0x6b, 0x45, 0x94, 0x33, 0x42, 0xe6, 0x5a, 0xc6, 0x54,
		0x93, 0x32, 0x15, 0x95, 0x0f, 0x57, 0x8a, 0x8c, 0x3b, 0x55, 0x94, 0x90, 0x41, 0x99, 0x88, 0xa1,
		0x26, 0x01, 0x63, 0x14, 0xaa, 0xbd, 0xac, 0x36, 0xef, 0xfd, 0xff, 0xab, 0xff, 0x59, 0xab, 0x50,
		0x1d, 0x2f, 0x05, 0x99, 0x16, 0x8a, 0xf2, 0x54, 0xaa, 0xb5, 0xaf, 0xe5, 0xe6, 0xe5, 0xd5, 0xed,
		0xef, 0xf7, 0xb5, 0xca, 0x39, 0x61, 0x28, 0xe4, 0xe3, 0x5a, 0x2c, 0xd4, 0xd5, 0xe9, 0x59, 0xe5,
		0xaa, 0x72, 0xd1, 0xfc, 0x72, 0x53, 0x3d, 0x3f, 0xbd, 0xaf, 0x63, 0xbd, 0x56, 0xac, 0x17, 0xd6,
		0x29, 0xce, 0x3a, 0x1d, 0x42, 0xae, 0x12, 0xae, 0x17, 0xd6, 0x69, 0xe5, 0x3a, 0x5d, 0x95, 0xbe,
		0xd6, 0x6e, 0x9a, 0x95, 0xaf, 0xb5, 0x1b, 0xac, 0xd2, 0xaa, 0x55, 0xfa, 0x5a, 0xbb, 0xba, 0xc7,
		0x2a, 0x2d, 0x59, 0xa5, 0x7d, 0x7f, 0x95, 0x02, 0x8d, 0x7e, 0xfd, 0xe5, 0xaa, 0x8e, 0xb3, 0x17,
		0x7f, 0xbd, 0xa0, 0xa9, 0xe2, 0xaf, 0xd6, 0x21, 0xa4, 0x2b, 0xe1, 0x7a, 0x41, 0xba, 0x56, 0xaf,
		0x56, 0xf5, 0xe6, 0x3f, 0xf7, 0xf5, 0xd3, 0x7a, 0x05, 0x8b, 0x14, 0x63, 0x91, 0x9a, 0xf7, 0xb5,
		0x4b, 0x2c, 0x54, 0x9c, 0x85, 0x02, 0xb0, 0x5a, 0xba, 0x50, 0xf7, 0x77, 0xf5, 0x4a, 0xb3, 0x76,
		0x7b, 0x55, 0x3d, 0xff, 0x33, 0x30, 0x84, 0x58, 0xab, 0xd8, 0x6b, 0x75, 0x88, 0xb5, 0x5a, 0xbc,
		0x56, 0x5f, 0x6b, 0x37, 0x6a, 0x08, 0x2b, 0x92, 0x91, 0x1b, 0x1b, 0xc6, 0x8b, 0x5f, 0x99, 0xae,
		0x77, 0xea, 0x79, 0x44, 0xd7, 0xba, 0xaf, 0x4d, 0xab, 0xd2, 0x09, 0xb3, 0x3c, 0x68, 0xb2, 0xf4,
		0xb4, 0x6b, 0xe3, 0x75, 0x6c, 0x86, 0xbd, 0x4f, 0xe5, 0xf2, 0xe1, 0x51, 0xb9, 0x5c, 0x3c, 0xda,
		0x3f, 0x2a, 0x1e, 0x1f, 0x1c, 0xec, 0x1d, 0x92, 0xf0, 0xe5, 0xb7, 0x4e, 0x9b, 0x39, 0xac, 0x7d,
		0xf6, 0xa6, 0x9d, 0x14, 0xac, 0x5e, 0xa7, 0x43, 0x39, 0xc5, 0x17, 0x97, 0x39, 0x24, 0xe9, 0x86,
		0x79, 0x4b, 0x56, 0x53, 0x56, 0x20, 0x28, 0x9b, 0x85, 0x5d, 0x46, 0x09, 0x50, 0x2e, 0xf3, 0x28,
		0xdb, 0xfe, 0x8c, 0x4f, 0x83, 0x70, 0x39, 0xc2, 0xe5, 0xcb, 0x77, 0x14, 0xe1, 0xf2, 0xb5, 0x84,
		0x05, 0xf4, 0xe1, 0x72, 0x5f, 0x77, 0x13, 0x87, 0xca, 0x09, 0x2e, 0x17, 0x69, 0xb5, 0x61, 0x36,
		0x6c, 0x4b, 0x77, 0xba, 0x76, 0xe7, 0x64, 0x2a, 0xf7, 0x75, 0xf0, 0x72, 0x90, 0xe9, 0xca, 0xda,
		0xbe, 0x16, 0x75, 0x77, 0x47, 0x72, 0x74, 0xe2, 0xff, 0x77, 0xd1, 0xdf, 0x26, 0x74, 0xef, 0xe2,
		0xbf, 0x2c, 0xfc, 0x83, 0x1e, 0xe4, 0xb0, 0x66, 0x5a, 0xae, 0xd8, 0xab, 0xe7, 0x18, 0x7a, 0xcf,
		0x72, 0x3d, 0xe3, 0x7b, 0x87, 0x48, 0xc2, 0x5c, 0xcf, 0xf0, 0x7a, 0x74, 0xa1, 0x7f, 0x05, 0xd7,
		0xef, 0xda, 0xac, 0xeb, 0xb0, 0x96, 0xe1, 0xb1, 0xf6, 0x9a, 0x5d, 0x5c, 0x8d, 0xb6, 0x66, 0x9d,
		0x2f, 0xae, 0x8e, 0xed, 0xdd, 0xc6, 0x5f, 0xe3, 0x6f, 0xc0, 0x61, 0xd9, 0x5c, 0x87, 0x85, 0xbd,
		0x7a, 0xba, 0x22, 0xa7, 0x65, 0x76, 0x2a, 0x38, 0x2e, 0x70, 0x5c, 0xe0, 0xb8, 0xc0, 0x71, 0x81,
		0xe3, 0xa2, 0xc2, 0x71, 0x99, 0xd1, 0xbf, 0xcb, 0xff, 0xba, 0xf4, 0x8f, 0x70, 0x62, 0xe0, 0xc4,
		0xc0, 0x89, 0x81, 0x13, 0x03, 0x27, 0x06, 0x4e, 0x4c, 0xfa, 0x4e, 0x4c, 0xc7, 0x6e, 0x19, 0x1d,
		0xdd, 0x47, 0x88, 0x3a, 0xfb, 0x1f, 0x9d, 0x03, 0x33, 0x39, 0x0d, 0x9c, 0x17, 0x38, 0x2f, 0x70,
		0x5e, 0xe0, 0xbc, 0x10, 0xc8, 0x3d, 0x59, 0x61, 0x37, 0xc2, 0x82, 0x6e, 0xc4, 0x85, 0xdc, 0x08,
		0xa1, 0xb0, 0x8a, 0xc2, 0x6d, 0xaa, 0x0a, 0xb6, 0x29, 0x2f, 0xba, 0xa5, 0xae, 0xd8, 0x16, 0x61,
		0xce, 0x9d, 0x92, 0x82, 0x6c, 0xca, 0x0b, 0xb1, 0xad, 0xb3, 0x2c, 0xc0, 0x2b, 0x81, 0x57, 0x92,
		0x75, 0xaf, 0xe4, 0x85, 0xb5, 0x49, 0xdd, 0x91, 0x68, 0x7c, 0xf8, 0x21, 0xf0, 0x43, 0xe0, 0x87,
		0xc0, 0x0f, 0x81, 0x1f, 0x02, 0x3f, 0x04, 0x7e, 0x08, 0xfc, 0x10, 0xf8, 0x21, 0xf0, 0x43, 0xe0,
		0x87, 0xc0, 0x0f, 0x19, 0x7e, 0x7d, 0x8b, 0xbd, 0x7a, 0xfa, 0xb3, 0xdd, 0x25, 0x2d, 0xdf, 0x38,
		0x3e, 0x09, 0x3c, 0x12, 0x78, 0x24, 0xf0, 0x48, 0xe0, 0x91, 0x10, 0xc8, 0xbd, 0xd9, 0xd5, 0x8d,
		0x76, 0xdb, 0x57, 0xe2, 0x94, 0x99, 0x5d, 0xc7, 0x04, 0x63, 0x47, 0x6b, 0x93, 0xdb, 0x44, 0x21,
		0xb3, 0xfb, 0xa3, 0x4c, 0xb8, 0xf6, 0x33, 0x7b, 0xf0, 0x89, 0x70, 0x8e, 0x9a, 0xe1, 0x79, 0xcc,
		0xb1, 0xc8, 0xbb, 0x0e, 0x69, 0x5b, 0x0f, 0x45, 0xfd, 0xb8, 0xf1, 0xfe, 0xb0, 0xa7, 0x1f, 0x37,
		0xc2, 0x1f, 0xf7, 0x82, 0xff, 0xfc, 0x2c, 0xf5, 0xdf, 0x4b, 0x0f, 0x45, 0xbd, 0x1c, 0xbd, 0x5a,
		0x3a, 0x78, 0x28, 0xea, 0x07, 0x8d, 0xed, 0xad, 0x6f, 0xdf, 0x76, 0x92, 0x7e, 0x66, 0xfb, 0xe7,
		0x7e, 0x9f, 0x2e, 0xff, 0xa7, 0x41, 0xb9, 0x0d, 0xb7, 0xf7, 0xd5, 0x3f, 0x94, 0xed, 0xc5, 0x5f,
		0x5b, 0xaa, 0x76, 0x63, 0xfb, 0x1f, 0x5a, 0xde, 0x5a, 0xb6, 0x7c, 0xcc, 0xb1, 0x5a, 0x3a, 0x84,
		0x5a, 0x4a, 0xaa, 0x96, 0x02, 0xa9, 0x36, 0xf4, 0xc7, 0x53, 0xfd, 0xb2, 0xf1, 0x73, 0xef, 0x63,
		0xb9, 0x7f, 0xb2, 0xfd, 0xf3, 0xa8, 0x3f, 0xfd, 0xe2, 0xfb, 0xbc, 0xb7, 0xed, 0x7d, 0x3c, 0xea,
		0x9f, 0x2c, 0xf8, 0xcb, 0x61, 0xff, 0x24, 0xe6, 0x18, 0x07, 0xfd, 0xad, 0x99, 0xb7, 0xfa, 0xaf,
		0x97, 0x16, 0x7d, 0xa0, 0xbc, 0xe0, 0x03, 0xfb, 0x8b, 0x3e, 0xb0, 0xbf, 0xe0, 0x03, 0x0b, 0x1f,
		0xa9, 0xb4, 0xe0, 0x03, 0x07, 0xfd, 0xf7, 0x99, 0xf7, 0x6f, 0xcd, 0x7f, 0xeb, 0x61, 0x7f, 0xfb,
		0x7d, 0xd1, 0xdf, 0x8e, 0xfa, 0xef, 0x27, 0xdb, 0xdb, 0x50, 0xd4, 0xb1, 0x15, 0x35, 0xc4, 0x53,
		0xbd, 0x78, 0xe6, 0xcf, 0x70, 0x6d, 0x18, 0x55, 0x86, 0x42, 0x40, 0x1c, 0x93, 0xa2, 0x10, 0x10,
		0x48, 0x57, 0xd5, 0xa4, 0xab, 0xed, 0x98, 0x4f, 0xa6, 0x45, 0x9a, 0xff, 0x31, 0x9a, 0x02, 0x84,
		0x2b, 0x08, 0x57, 0x10, 0xae, 0x20, 0x5c, 0x09, 0xe4, 0xde, 0x5f, 0xd8, 0x48, 0xd1, 0x18, 0x9e,
		0xe7, 0x04, 0xad, 0xde, 0x29, 0xa9, 0xd7, 0x32, 0xc1, 0xd8, 0x15, 0xab, 0xf7, 0x42, 0x77, 0xb6,
		0xea, 0xf6, 0xbd, 0xe7, 0x98, 0xd6, 0x13, 0x6d, 0xcf, 0xf7, 0x62, 0xd0, 0xb3, 0xe1, 0x73, 0x8d,
		0x92, 0xe3, 0xd8, 0xf3, 0xe7, 0xa8, 0xd0, 0xce, 0x51, 0x0a, 0xbe, 0xc7, 0xcd, 0xf9, 0xed, 0x75,
		0xed, 0xaa, 0x42, 0x55, 0x4c, 0x9a, 0xac, 0xb5, 0xbf, 0x5d, 0xb5, 0x3c, 0xda, 0x7d, 0xf6, 0x97,
		0x5f, 0x5a, 0x57, 0xcc, 0xb9, 0x33, 0x54, 0x83, 0x19, 0x8a, 0x94, 0x33, 0x8c, 0xb6, 0xf7, 0xa4,
		0x50, 0x42, 0x8f, 0x69, 0xa0, 0xf5, 0xac, 0xa3, 0x75, 0xc7, 0xee, 0x79, 0x2c, 0xb4, 0x6d, 0x64,
		0x70, 0x7d, 0x6c, 0x0e, 0xe0, 0x75, 0xe0, 0x75, 0xe0, 0x75, 0xe0, 0x75, 0x02, 0xb9, 0x67, 0x56,
		0xef, 0x85, 0x39, 0xa1, 0xa5, 0x00, 0x4c, 0x4f, 0x09, 0xa6, 0xdf, 0xd4, 0x2b, 0x77, 0x37, 0xa7,
		0x57, 0xf4, 0x58, 0xfd, 0x8f, 0x68, 0x22, 0xa0, 0xe8, 0x29, 0x51, 0x1a, 0x2c, 0x0c, 0x31, 0x94,
		0xbe, 0x19, 0x4e, 0x53, 0x04, 0xcc, 0x05, 0xcc, 0x25, 0x81, 0xb9, 0x99, 0xea, 0x2d, 0x4f, 0xb4,
		0x41, 0x9a, 0xdb, 0x7a, 0x66, 0x2f, 0x46, 0x77, 0x58, 0xfd, 0xac, 0xcb, 0xac, 0x56, 0x00, 0x3f,
		0xf5, 0xa9, 0x02, 0x68, 0x53, 0xbf, 0x86, 0xff, 0x09, 0x4b, 0x9e, 0x99, 0xfe, 0x63, 0xb9, 0xb3,
		0x2f, 0xed, 0xba, 0x9e, 0xe1, 0x85, 0x31, 0xa7, 0xd1, 0x8f, 0xbb, 0x2d, 0xdb, 0x6a, 0x47, 0x9f,
		0xf0, 0xc1, 0xc8, 0xd8, 0xaf, 0xe1, 0xc4, 0x72, 0x74, 0xaa, 0xf8, 0xee, 0x49, 0xd8, 0x39, 0xed,
		0xc5, 0xf0, 0x5a, 0xcf, 0xba, 0xe1, 0xea, 0xfe, 0x02, 0x4b, 0x2d, 0xf2, 0x39, 0xba, 0x8c, 0x3a,
		0x33, 0x85, 0x24, 0x89, 0x1b, 0x20, 0x0e, 0x49, 0xc3, 0xc9, 0x76, 0x6a, 0x28, 0x9c, 0x19, 0x5a,
		0x27, 0x86, 0xca, 0x79, 0x21, 0x77, 0x5a, 0xc8, 0x9d, 0x15, 0x72, 0x27, 0x25, 0x5b, 0xba, 0xfc,
		0xc2, 0x94, 0x9b, 0x46, 0xa0, 0xb5, 0x06, 0x67, 0x8b, 0xac, 0xeb, 0x49, 0x30, 0x3e, 0x0d, 0x7b,
		0xb2, 0x07, 0xf6, 0x04, 0xec, 0x09, 0xd8, 0x93, 0x2c, 0x7b, 0x07, 0xb2, 0x15, 0xd6, 0x70, 0x60,
		0x0a, 0x64, 0xb4, 0xf0, 0x6c, 0xc9, 0xc7, 0x48, 0x8b, 0x54, 0x1a, 0x51, 0x8c, 0x87, 0x4c, 0xb5,
		0xa9, 0x50, 0x71, 0x6a, 0x55, 0x9d, 0x2a, 0x95, 0xa7, 0x5c, 0xf5, 0x29, 0x57, 0x81, 0xca, 0x55,
		0x21, 0x1d, 0x05, 0x43, 0xca, 0xad, 0x51, 0x11, 0xcc, 0x33, 0xe7, 0x86, 0xae, 0xc0, 0xfa, 0x0c,
		0x32, 0x3b, 0xa2, 0xbd, 0x73, 0x41, 0x56, 0x70, 0x7d, 0x4c, 0xd3, 0x2f, 0x7a, 0x7d, 0xc1, 0xcb,
		0x04, 0xe5, 0xd5, 0xa9, 0x25, 0x8f, 0x98, 0xba, 0x53, 0x4f, 0xe1, 0xd1, 0x29, 0x00, 0x82, 0x2d,
		0x88, 0xf8, 0x17, 0x5f, 0x74, 0xec, 0x6e, 0x40, 0x63, 0xd1, 0x03, 0x99, 0xd9, 0x29, 0x01, 0x67,
		0xb2, 0x00, 0x67, 0x1c, 0x60, 0x99, 0x7c, 0x62, 0x19, 0x07, 0x40, 0x26, 0x05, 0x20, 0x33, 0xa3,
		0xc6, 0xa8, 0x72, 0x5c, 0x67, 0x70, 0x4d, 0x99, 0x70, 0x0e, 0xd2, 0x60, 0xfa, 0x68, 0x97, 0x54,
		0x04, 0xd5, 0x87, 0xb3, 0x05, 0xc1, 0xf5, 0xd3, 0x9b, 0x3f, 0x89, 0xf5, 0x40, 0x61, 0x18, 0x5f,
		0x3f, 0xbd, 0xba, 0x52, 0x31, 0x57, 0x94, 0x13, 0xfb, 0xb5, 0x72, 0x57, 0xd7, 0x48, 0x67, 0xeb,
		0x7f, 0xa4, 0x16, 0x07, 0xea, 0xc8, 0xfe, 0x48, 0x75, 0x5e, 0x11, 0x07, 0xf7, 0x47, 0x33, 0xdd,
		0xfc, 0x49, 0x5f, 0xb2, 0xac, 0x10, 0xa6, 0x13, 0x04, 0x22, 0x40, 0x95, 0x33, 0x4b, 0x6b, 0x08,
		0x88, 0xe5, 0x4b, 0xbb, 0x60, 0x8f, 0x46, 0xaf, 0xe3, 0xd1, 0xab, 0x00, 0x1f, 0x06, 0x8c, 0x26,
		0xf3, 0x51, 0x00, 0xfc, 0xb0, 0x35, 0xf5, 0xc3, 0x36, 0x3a, 0x17, 0x26, 0x4b, 0x29, 0x17, 0x33,
		0xd9, 0x03, 0x52, 0x93, 0x30, 0xe4, 0xef, 0xb7, 0xcc, 0xdc, 0xf3, 0x60, 0x7d, 0xe8, 0x82, 0xa6,
		0xe1, 0xf0, 0x39, 0x8b, 0x99, 0x96, 0x10, 0x33, 0x55, 0xeb, 0x74, 0x23, 0x66, 0xba, 0xa6, 0x56,
		0x04, 0x31, 0xd3, 0x64, 0x2a, 0x0d, 0x24, 0x63, 0xda, 0xaa, 0x4e, 0x95, 0xca, 0x53, 0xae, 0xfa,
		0x94, 0xab, 0x40, 0xe5, 0xaa, 0x90, 0xd6, 0xc3, 0x44, 0xcc, 0x34, 0x01, 0x32, 0x43, 0xcc, 0x34,
		0xdb, 0xae, 0x27, 0x42, 0x80, 0xb0, 0xce, 0x74, 0xd6, 0x19, 0x21, 0xc0, 0x9c, 0x9a, 0x66, 0x84,
		0x00, 0xd3, 0xb0, 0xcb, 0x08, 0x01, 0x0a, 0xec, 0x12, 0x42, 0x80, 0x12, 0xe6, 0x42, 0x08, 0x90,
		0x43, 0x75, 0x22, 0x04, 0x98, 0x2d, 0x43, 0x50, 0x40, 0x08, 0x30, 0x6d, 0xb7, 0x02, 0x11, 0xad,
		0xcc, 0x46, 0xb4, 0xc2, 0x40, 0x0c, 0x6e, 0x99, 0xa7, 0x27, 0x28, 0xd9, 0x16, 0x10, 0x4d, 0x6a,
		0x4c, 0xd1, 0xe9, 0xb5, 0x3c, 0x2b, 0x82, 0xb7, 0x77, 0xe1, 0xb7, 0xa9, 0x05, 0x8f, 0xdc, 0x0c,
		0xff, 0x73, 0x31, 0x7c, 0xf0, 0xe6, 0xfd, 0xe0, 0x69, 0x9b, 0xe7, 0xc3, 0xc7, 0x6b, 0x9e, 0x3d,
		0x75, 0xc7, 0x7e, 0xbb, 0xf6, 0x1f, 0xf6, 0xd4, 0xad, 0x19, 0xde, 0xf3, 0x3d, 0xf3, 0xd6, 0xef,
		0x6a, 0x7c, 0xcb, 0x7e, 0x79, 0xe9, 0x59, 0xa6, 0xf7, 0x46, 0x79, 0x39, 0x7e, 0x72, 0x12, 0x5c,
		0x8f, 0x97, 0x41, 0x74, 0xe0, 0x7a, 0xbc, 0x3a, 0xee, 0x02, 0xd7, 0xe3, 0xc5, 0x06, 0xc4, 0xf5,
		0x78, 0x42, 0x45, 0x43, 0xa9, 0x70, 0xd4, 0x28, 0x1e, 0x6a, 0x05, 0xa4, 0x4c, 0x11, 0x29, 0x53,
		0x48, 0xca, 0x14, 0x53, 0x3e, 0xdc, 0x2b, 0xb2, 0x54, 0x0f, 0x1a, 0x74, 0xb4, 0x44, 0x8f, 0xc9,
		0xc7, 0x49, 0x8b, 0xd4, 0x1a, 0x02, 0x4a, 0x69, 0xab, 0x3b, 0x55, 0x6a, 0x4f, 0xb9, 0xfa, 0x53,
		0xae, 0x06, 0x95, 0xab, 0x43, 0x5a, 0x36, 0x11, 0xe9, 0x1e, 0x09, 0xd0, 0x59, 0x5e, 0xd3, 0x3d,
		0x26, 0x74, 0xfd, 0xe2, 0xbf, 0x2c, 0xfc, 0x03, 0x2e, 0xca, 0x2f, 0x9c, 0x07, 0x17, 0xe5, 0x97,
		0x10, 0x3e, 0xc8, 0x92, 0x01, 0xa8, 0x41, 0x96, 0x4c, 0x5e, 0x11, 0x0d, 0xb2, 0x64, 0xd2, 0x80,
		0x33, 0xc8, 0x92, 0x11, 0xd8, 0x25, 0x64, 0xc9, 0x48, 0x98, 0x0b, 0x59, 0x32, 0x1c, 0xaa, 0x13,
		0x59, 0x32, 0xd9, 0x32, 0x04, 0x05, 0x64, 0xc9, 0xc0, 0x0f, 0xc3, 0x45, 0xf9, 0xdc, 0x6c, 0x64,
		0x06, 0xb3, 0x46, 0x26, 0xb9, 0x11, 0x5c, 0x95, 0x97, 0x04, 0x70, 0x71, 0x55, 0x1e, 0xf1, 0xd3,
		0x0c, 0xb9, 0xdb, 0x88, 0x9f, 0xaa, 0xb5, 0x23, 0x88, 0x9f, 0x26, 0x57, 0x6b, 0xa0, 0x1a, 0xd3,
		0x56, 0x77, 0xaa, 0xd4, 0x9e, 0x72, 0xf5, 0xa7, 0x5c, 0x0d, 0x2a, 0x57, 0x87, 0xb4, 0x7e, 0x26,
		0xe2, 0xa7, 0x09, 0xd0, 0x19, 0xe2, 0xa7, 0x79, 0x70, 0x43, 0x11, 0x0e, 0x84, 0x8d, 0xa6, 0xb3,
		0xd1, 0x08, 0x07, 0xe6, 0xd4, 0x40, 0x23, 0x1c, 0x98, 0x86, 0x75, 0x46, 0x38, 0x50, 0x60, 0x97,
		0x10, 0x0e, 0x94, 0x30, 0x17, 0xc2, 0x81, 0x1c, 0xaa, 0x13, 0xe1, 0xc0, 0x6c, 0x19, 0x82, 0x02,
		0xc2, 0x81, 0x69, 0xbb, 0x15, 0x88, 0x6e, 0x65, 0x38, 0xba, 0x85, 0x6b, 0xf3, 0x69, 0x8b, 0x4a,
		0xd6, 0x45, 0x24, 0xf3, 0x17, 0xe7, 0xcf, 0x07, 0x4f, 0xbb, 0x96, 0x77, 0xe7, 0xd9, 0xab, 0xa7,
		0xe6, 0xfe, 0xfc, 0xec, 0x44, 0xb8, 0x43, 0x2f, 0x83, 0xf7, 0xc0, 0x1d, 0x7a, 0x75, 0x54, 0x06,
		0xee, 0xd0, 0x8b, 0x0d, 0x88, 0x3b, 0xf4, 0x84, 0x8a, 0x86, 0x52, 0xe1, 0xa8, 0x51, 0x3c, 0xd4,
		0x0a, 0x48, 0x99, 0x22, 0x52, 0xa6, 0x90, 0x94, 0x29, 0xa6, 0x7c, 0x78, 0x5b, 0x64, 0x39, 0x20,
		0x74, 0x28, 0x69, 0xe1, 0x09, 0xa3, 0xc2, 0x4b, 0x8b, 0xd4, 0x1b, 0xe2, 0x4c, 0x69, 0xab, 0x3d,
		0x55, 0xea, 0x4f, 0xb9, 0x1a, 0x54, 0xae, 0x0e, 0x95, 0xab, 0x45, 0x5a, 0x92, 0x11, 0xb9, 0x20,
		0x09, 0x50, 0x5a, 0x5e, 0x73, 0x41, 0x66, 0xf4, 0xfd, 0xf2, 0xbf, 0x2e, 0xfd, 0x23, 0xee, 0xd5,
		0x2f, 0x9c, 0x07, 0xf7, 0xea, 0x97, 0x90, 0x41, 0x48, 0xa4, 0x01, 0xc0, 0x41, 0x22, 0x4d, 0x5e,
		0xd1, 0x0d, 0x12, 0x69, 0xd2, 0x80, 0x36, 0x48, 0xa4, 0x11, 0xd8, 0x25, 0x24, 0xd2, 0x48, 0x98,
		0x0b, 0x89, 0x34, 0x1c, 0xaa, 0x13, 0x89, 0x34, 0xd9, 0x32, 0x04, 0x05, 0x24, 0xd2, 0xc0, 0x0f,
		0xc3, 0xbd, 0xfa, 0xdc, 0x6c, 0x64, 0x06, 0xd3, 0x4a, 0x66, 0x39, 0x12, 0xdc, 0xad, 0x97, 0x04,
		0x72, 0x71, 0xb7, 0x1e, 0x71, 0xd5, 0x0c, 0xb9, 0xdc, 0x88, 0xab, 0xaa, 0xb5, 0x25, 0x88, 0xab,
		0xf2, 0xab, 0x37, 0xd0, 0x8e, 0x69, 0xab, 0x3d, 0x55, 0xea, 0x4f, 0xb9, 0x1a, 0x54, 0xae, 0x0e,
		0x95, 0xab, 0x45, 0x5a, 0x9f, 0x13, 0x71, 0xd5, 0x04, 0x28, 0x0d, 0x71, 0x55, 0xdc, 0xb7, 0x47,
		0x98, 0x10, 0xf6, 0x1a, 0x61, 0xc2, 0x9c, 0x1b, 0x6b, 0x84, 0x09, 0xd3, 0xb0, 0xd4, 0x08, 0x13,
		0x0a, 0xec, 0x12, 0xc2, 0x84, 0x12, 0xe6, 0x42, 0x98, 0x90, 0x43, 0x75, 0x22, 0x4c, 0x98, 0x2d,
		0x43, 0x50, 0x40, 0x98, 0x30, 0x6d, 0xb7, 0x02, 0x51, 0xaf, 0x8c, 0x47, 0xbd, 0x70, 0xe7, 0x3e,
		0x6d, 0x71, 0xc9, 0x83, 0x98, 0x64, 0xfe, 0xde, 0x7d, 0xe5, 0xd5, 0x5b, 0xd7, 0xab, 0xf7, 0x72,
		0xa3, 0xb5, 0x24, 0x51, 0x5a, 0xb2, 0x6b, 0xf5, 0x25, 0x5c, 0xab, 0xc7, 0xb5, 0xfa, 0xe5, 0x0c,
		0x05, 0xae, 0xd5, 0x27, 0x1b, 0xd0, 0x78, 0x34, 0x75, 0xd7, 0xff, 0x3f, 0xd3, 0xa2, 0x4b, 0x01,
		0x19, 0x9f, 0x84, 0x26, 0x11, 0xa4, 0x88, 0x0b, 0xf6, 0x48, 0x04, 0xc9, 0x98, 0x6a, 0x52, 0xa6,
		0xa2, 0xf2, 0xe1, 0x5e, 0x91, 0xf1, 0xa5, 0x43, 0xb9, 0x37, 0xdb, 0xcc, 0xf2, 0x4c, 0xef, 0x8d,
		0x26, 0xaa, 0x39, 0x44, 0x35, 0x07, 0x04, 0x63, 0x57, 0xa3, 0x47, 0x3f, 0x33, 0x5c, 0x46, 0x1f,
		0x17, 0x3b, 0xbd, 0xac, 0x36, 0xef, 0xfd, 0xff, 0xab, 0xff, 0x59, 0xab, 0x50, 0x1d, 0xaf, 0xaf,
		0x46, 0xa7, 0xc7, 0x5c, 0xed, 0xa4, 0xf0, 0x40, 0x46, 0x84, 0x10, 0x73, 0xc7, 0x83, 0xe5, 0xaa,
		0xd6, 0xbe, 0x96, 0x9b, 0x97, 0x57, 0xb7, 0xbf, 0xdf, 0xd7, 0x2a, 0xe7, 0x5a, 0x1e, 0xb9, 0x29,
		0x95, 0x0b, 0x75, 0x75, 0x7a, 0x56, 0xb9, 0xaa, 0x5c, 0x34, 0xbf, 0xdc, 0x54, 0xcf, 0x4f, 0xef,
		0xeb, 0x58, 0xaf, 0x15, 0xeb, 0x85, 0x75, 0x8a, 0xb3, 0x4e, 0x87, 0x90, 0xab, 0x84, 0xeb, 0x85,
		0x75, 0x5a, 0xb9, 0x4e, 0x57, 0xa5, 0xaf, 0xb5, 0x9b, 0x66, 0xe5, 0x6b, 0xed, 0x06, 0xab, 0xb4,
		0x6a, 0x95, 0xbe, 0xd6, 0xae, 0xee, 0xb1, 0x4a, 0x4b, 0x56, 0x69, 0xdf, 0x5f, 0xa5, 0x40, 0xa3,
		0x5f, 0x7f, 0xb9, 0xaa, 0xe3, 0xec, 0xc5, 0x5f, 0x2f, 0x68, 0xaa, 0xf8, 0xab, 0x75, 0x08, 0xe9,
		0x4a, 0xb8, 0x5e, 0x90, 0xae, 0xd5, 0xab, 0x55, 0xbd, 0xf9, 0xcf, 0x7d, 0xfd, 0xb4, 0x5e, 0xc1,
		0x22, 0xc5, 0x58, 0xa4, 0xe6, 0x7d, 0xed, 0x12, 0x0b, 0x15, 0x67, 0xa1, 0x00, 0xac, 0x96, 0x2e,
		0xd4, 0xfd, 0x5d, 0xbd, 0xd2, 0xac, 0xdd, 0x5e, 0x55, 0xcf, 0xff, 0x0c, 0x0c, 0x21, 0xd6, 0x2a,
		0xf6, 0x5a, 0x1d, 0x62, 0xad, 0x16, 0xaf, 0xd5, 0xd7, 0xda, 0x8d, 0x1a, 0xc2, 0x8a, 0x64, 0xe4,
		0xc6, 0x86, 0xf1, 0xe2, 0x57, 0xa6, 0xeb, 0x9d, 0x7a, 0x1e, 0xd1, 0x2d, 0xc9, 0x6b, 0xd3, 0xaa,
		0x74, 0xc2, 0x8c, 0x0f, 0x9a, 0x1c, 0x41, 0xed, 0xda, 0x78, 0x1d, 0x9b, 0x61, 0xef, 0x53, 0xb9,
		0x7c, 0x78, 0x54, 0x2e, 0x17, 0x8f, 0xf6, 0x8f, 0x8a, 0xc7, 0x07, 0x07, 0x7b, 0x87, 0x24, 0x7c,
		0xf9, 0xad, 0xd3, 0x66, 0x0e, 0x6b, 0x9f, 0xbd, 0x69, 0x27, 0x05, 0xab, 0xd7, 0xe9, 0x50, 0x4e,
		0xf1, 0xc5, 0x65, 0xfe, 0xe6, 0x3c, 0x1a, 0x1d, 0x97, 0x6d, 0x40, 0x39, 0x00, 0xda, 0x3b, 0xb5,
		0x4a, 0x7a, 0x55, 0x23, 0x2a, 0x3c, 0x67, 0xc1, 0x11, 0x15, 0x8e, 0x35, 0x11, 0xa2, 0xc2, 0x4a,
		0xad, 0x1f, 0x7d, 0x54, 0x98, 0xee, 0x9e, 0x2b, 0xe5, 0xfd, 0xd6, 0x4d, 0xeb, 0x1d, 0x2d, 0x5b,
		0xae, 0xd8, 0xab, 0xe7, 0x18, 0x7a, 0xcf, 0x72, 0x3d, 0xe3, 0x7b, 0x87, 0x48, 0xc2, 0x5c, 0xcf,
		0xf0, 0x7a, 0x74, 0x11, 0x6e, 0x05, 0x37, 0xcb, 0xda, 0xac, 0xeb, 0xb0, 0x96, 0xe1, 0xb1, 0xf6,
		0x9a, 0x5d, 0xc7, 0x8c, 0xb6, 0x66, 0x9d, 0xaf, 0x63, 0x8e, 0xed, 0x5d, 0xde, 0x6e, 0x64, 0x7e,
		0xc8, 0xb6, 0xcf, 0x98, 0x4d, 0x5c, 0x4e, 0x5f, 0xef, 0x46, 0x59, 0x9d, 0x1b, 0xe0, 0x73, 0xe0,
		0x73, 0xe0, 0x73, 0xe0, 0x73, 0xe0, 0xf3, 0x5c, 0xd6, 0x9d, 0x01, 0x56, 0x07, 0x56, 0x07, 0x56,
		0x07, 0x56, 0x07, 0x56, 0x5f, 0xb4, 0xf7, 0x1d, 0xbb, 0x65, 0x74, 0x74, 0x1f, 0x08, 0xe9, 0xec,
		0x7f, 0x74, 0x38, 0x7d, 0x72, 0x1a, 0x60, 0x74, 0x60, 0x74, 0x60, 0x74, 0x60, 0x74, 0x02, 0xb9,
		0xef, 0x99, 0x96, 0xb7, 0x5f, 0x22, 0x84, 0xe8, 0x14, 0x08, 0xfd, 0xce, 0xb0, 0x9e, 0x58, 0x1e,
		0x11, 0xdf, 0xb5, 0x69, 0xd1, 0x03, 0xb0, 0xe0, 0x7a, 0x16, 0x7d, 0xd9, 0x20, 0xed, 0xd2, 0x31,
		0x5a, 0x9e, 0x69, 0x5b, 0x17, 0xe6, 0x93, 0x49, 0x95, 0x83, 0x30, 0x29, 0xb3, 0xec, 0xc9, 0xf0,
		0xcc, 0x1f, 0x8c, 0x24, 0x64, 0x4f, 0x78, 0x8c, 0x27, 0x45, 0xc0, 0x78, 0x55, 0x27, 0x02, 0xe5,
		0xd2, 0x71, 0xf9, 0xf8, 0xf0, 0xa8, 0x74, 0x7c, 0x00, 0x59, 0x00, 0xf8, 0xce, 0x3d, 0xf8, 0x7e,
		0x61, 0x6d, 0x52, 0xd4, 0x1d, 0x8d, 0x0f, 0xb8, 0x0d, 0xb8, 0x0d, 0xb8, 0x0d, 0xb8, 0x0d, 0xb8,
		0x0d, 0xb8, 0x0d, 0xb8, 0x0d, 0xb8, 0x0d, 0xb8, 0x0d, 0xb8, 0xbd, 0x89, 0x70, 0xdb, 0x62, 0xaf,
		0x9e, 0xfe, 0x6c, 0x77, 0x49, 0x2b, 0x88, 0x8d, 0x4f, 0x02, 0xe0, 0x0d, 0xe0, 0x0d, 0xe0, 0x0d,
		0xe0, 0x4d, 0x20, 0xf7, 0x66, 0x57, 0x37, 0xda, 0x6d, 0x87, 0xb9, 0x2e, 0x65, 0x3a, 0xca, 0x31,
		0xc1, 0xd8, 0xd1, 0xda, 0xe4, 0x36, 0xbb, 0xc1, 0xec, 0xfe, 0x28, 0x13, 0xae, 0xfd, 0xcc, 0x1e,
		0x7c, 0xa2, 0x6d, 0x49, 0xe5, 0x31, 0xc7, 0x22, 0x2d, 0x7d, 0x16, 0x4c, 0xb4, 0xf5, 0x50, 0xd4,
		0x8f, 0x1b, 0xef, 0x0f, 0x7b, 0xfa, 0x71, 0x23, 0xfc, 0x71, 0x2f, 0xf8, 0xcf, 0xcf, 0x52, 0xff,
		0xbd, 0xf4, 0x50, 0xd4, 0xcb, 0xd1, 0xab, 0xa5, 0x83, 0x87, 0xa2, 0x7e, 0xd0, 0xd8, 0xde, 0xfa,
		0xf6, 0x6d, 0x27, 0xe9, 0x67, 0xb6, 0x7f, 0xee, 0xf7, 0xe9, 0x92, 0x16, 0x1a, 0x94, 0xdb, 0x70,
		0x7b, 0x5f, 0xfd, 0x43, 0xd9, 0x5e, 0xfc, 0xb5, 0xa5, 0x6a, 0x37, 0xb6, 0xff, 0x41, 0xb8, 0x1f,
		0x79, 0x6a, 0xc1, 0xa3, 0x46, 0x2d, 0x1d, 0x42, 0x2d, 0x25, 0x55, 0x4b, 0x81, 0x54, 0x1b, 0xfa,
		0xe3, 0xa9, 0x7e, 0xd9, 0xf8, 0xb9, 0xf7, 0xb1, 0xdc, 0x3f, 0xd9, 0xfe, 0x79, 0xd4, 0x9f, 0x7e,
		0xf1, 0x7d, 0xde, 0xdb, 0xf6, 0x3e, 0x1e, 0xf5, 0x4f, 0x16, 0xfc, 0xe5, 0xb0, 0x7f, 0x12, 0x73,
		0x8c, 0x83, 0xfe, 0xd6, 0xcc, 0x5b, 0xfd, 0xd7, 0x4b, 0x8b, 0x3e, 0x50, 0x5e, 0xf0, 0x81, 0xfd,
		0x45, 0x1f, 0xd8, 0x5f, 0xf0, 0x81, 0x85, 0x8f, 0x54, 0x5a, 0xf0, 0x81, 0x83, 0xfe, 0xfb, 0xcc,
		0xfb, 0xb7, 0xe6, 0xbf, 0xf5, 0xb0, 0xbf, 0xfd, 0xbe, 0xe8, 0x6f, 0x47, 0xfd, 0xf7, 0x93, 0xed,
		0x6d, 0x28, 0xea, 0xd8, 0x8a, 0x1a, 0xe2, 0xa9, 0x5e, 0x3c, 0xf3, 0x67, 0xb8, 0xb2, 0xce, 0x08,
		0xa1, 0x16, 0xc5, 0x34, 0x8f, 0x8b, 0x5a, 0x14, 0x6b, 0xc4, 0x2d, 0xda, 0x8e, 0xf9, 0x64, 0x5a,
		0xa4, 0xd1, 0xfc, 0xd1, 0x14, 0xe0, 0x15, 0xc1, 0x2b, 0x82, 0x57, 0x04, 0xaf, 0x48, 0x20, 0xf7,
		0xfe, 0xc2, 0x46, 0x8a, 0xc6, 0xf0, 0x3c, 0x87, 0xaa, 0x7f, 0x2b, 0x65, 0xdf, 0x56, 0xda, 0x7e,
		0xad, 0x6a, 0xfa, 0xb4, 0x86, 0xfd, 0x59, 0xab, 0x9f, 0x6b, 0x94, 0xae, 0x7c, 0xd0, 0x97, 0xb5,
		0x42, 0x3b, 0x47, 0xd4, 0x8f, 0xf5, 0xfc, 0xf6, 0xba, 0x76, 0x55, 0xa1, 0x2a, 0xdb, 0x49, 0xd6,
		0x38, 0x99, 0xbc, 0x07, 0x6b, 0xb0, 0xfc, 0xa4, 0xbd, 0x57, 0x03, 0x21, 0x22, 0x0d, 0xa8, 0x8f,
		0x6f, 0x2f, 0x55, 0xbf, 0xd5, 0xcc, 0x77, 0xf8, 0xcc, 0x24, 0x28, 0x75, 0xec, 0x9e, 0xc7, 0x42,
		0x15, 0x4e, 0x86, 0x4a, 0xc7, 0xe6, 0x00, 0x2c, 0x05, 0x2c, 0x05, 0x2c, 0x05, 0x2c, 0x25, 0x90,
		0x7b, 0x66, 0xf5, 0x5e, 0x98, 0x13, 0xf6, 0xb0, 0x05, 0x1a, 0x4d, 0x09, 0x8d, 0xde, 0xd4, 0x2b,
		0x77, 0x37, 0xa7, 0x57, 0xf4, 0x90, 0xf4, 0x8f, 0x68, 0x22, 0x80, 0xc5, 0x29, 0x51, 0x1a, 0x2c,
		0x0c, 0x31, 0x62, 0xbc, 0x19, 0x4e, 0x53, 0x04, 0x9a, 0xcb, 0xc0, 0x48, 0x68, 0x04, 0x1e, 0xbf,
		0x11, 0xb8, 0xc4, 0xbe, 0xf0, 0x12, 0xda, 0x68, 0x7f, 0x48, 0x71, 0xdb, 0x65, 0x6f, 0x77, 0x96,
		0xb6, 0x59, 0x93, 0xd2, 0x9f, 0x5c, 0x6a, 0x3f, 0x77, 0x31, 0x99, 0xe3, 0x97, 0x14, 0x01, 0x29,
		0xd1, 0x5a, 0x03, 0x5f, 0x48, 0x4c, 0x3a, 0xc6, 0x4a, 0x65, 0x07, 0xe3, 0x09, 0xca, 0xad, 0x9c,
		0xa6, 0xec, 0xd2, 0x1c, 0x3d, 0x99, 0x8e, 0xdd, 0xb8, 0x23, 0xe7, 0xc8, 0xf1, 0xe2, 0x64, 0x7b,
		0x6d, 0x64, 0x5e, 0x1a, 0x99, 0x57, 0x36, 0xed, 0x85, 0x39, 0x52, 0x5c, 0xb0, 0x74, 0x75, 0xb7,
		0xac, 0xf6, 0xe9, 0x5a, 0xcb, 0xe8, 0x74, 0x22, 0x45, 0x2c, 0x4f, 0x44, 0x86, 0xe7, 0x7d, 0x6c,
		0x70, 0x49, 0x7b, 0x29, 0x97, 0xf5, 0x91, 0xce, 0xf6, 0x50, 0xb0, 0x3c, 0x04, 0x4a, 0x81, 0x9a,
		0xd2, 0x21, 0xa7, 0x72, 0xc8, 0x29, 0x1c, 0x1a, 0xa5, 0x91, 0x4d, 0xdc, 0x2f, 0x9d, 0x9f, 0x21,
		0x2c, 0x89, 0x49, 0x51, 0x0a, 0x73, 0x58, 0x02, 0x73, 0x67, 0x67, 0x77, 0xf6, 0x7f, 0x83, 0xfa,
		0x97, 0x73, 0x60, 0xea, 0xc2, 0x3f, 0x0d, 0xff, 0x22, 0xaf, 0x66, 0x65, 0xd6, 0x9d, 0xbc, 0xb7,
		0x27, 0xdb, 0xd3, 0xed, 0x96, 0xde, 0xb2, 0x5f, 0xba, 0x0e, 0x73, 0x5d, 0xd6, 0xd6, 0xfd, 0xdd,
		0xf7, 0x27, 0xe9, 0x67, 0xc5, 0xdd, 0x92, 0x80, 0xa6, 0x4c, 0xcb, 0xf5, 0x02, 0xab, 0xe6, 0xd8,
		0x9e, 0xdd, 0xb2, 0x3b, 0x32, 0x53, 0x7a, 0x46, 0xc9, 0xda, 0x73, 0x26, 0x81, 0xfd, 0x84, 0xfd,
		0x84, 0xfd, 0xdc, 0x30, 0xfb, 0x69, 0xb6, 0x99, 0xe5, 0x99, 0xde, 0x1b, 0x91, 0x0d, 0x95, 0x98,
		0x44, 0xaa, 0x55, 0xa3, 0x47, 0x3d, 0x33, 0x5c, 0xc2, 0x70, 0x72, 0xf5, 0xe6, 0xbe, 0x7e, 0x7a,
		0x75, 0xd5, 0xac, 0xdd, 0xdd, 0xd6, 0x6f, 0xcf, 0x6f, 0xaf, 0x9a, 0xf5, 0x3f, 0x6b, 0x15, 0xd9,
		0x67, 0x23, 0xa8, 0x6f, 0x40, 0x53, 0x62, 0x99, 0x28, 0xcc, 0x33, 0x58, 0x9e, 0xb3, 0xcf, 0x35,
		0x82, 0xe0, 0xe2, 0xc7, 0xbc, 0x2d, 0xc3, 0x45, 0xf5, 0xae, 0x72, 0x5e, 0xbf, 0xfa, 0xb3, 0x79,
		0x7e, 0x7b, 0x73, 0x53, 0x39, 0xaf, 0x57, 0x2e, 0xb0, 0x2a, 0x05, 0xed, 0xf3, 0x5d, 0xf5, 0xac,
		0x8a, 0x85, 0x28, 0x68, 0xd5, 0xcf, 0xd7, 0x38, 0x26, 0xfe, 0x3a, 0xdc, 0x57, 0xef, 0xb1, 0x0e,
		0x05, 0xed, 0xea, 0xf6, 0x9c, 0x22, 0x9a, 0x9c, 0xd3, 0x85, 0x68, 0x9e, 0x7e, 0xfe, 0x7c, 0x57,
		0xf9, 0x4c, 0xd2, 0x44, 0x3d, 0x7f, 0x4b, 0x72, 0x4b, 0xd2, 0x23, 0x3d, 0x9f, 0xeb, 0xb0, 0x8f,
		0x85, 0x28, 0x68, 0xb5, 0xf3, 0x0a, 0x8c, 0x87, 0xbf, 0x0e, 0xd5, 0x6b, 0x2c, 0x43, 0x41, 0xbb,
		0xaf, 0x9f, 0xd6, 0xab, 0xe7, 0x59, 0xcf, 0xe8, 0x6b, 0x20, 0x63, 0x25, 0xd1, 0xb8, 0x79, 0x20,
		0x33, 0x91, 0x3b, 0x22, 0x2b, 0x77, 0x24, 0x4a, 0x4b, 0xc8, 0x61, 0x82, 0xc6, 0x8b, 0xe1, 0xb5,
		0x9e, 0x75, 0xd3, 0xf2, 0x98, 0xf3, 0x68, 0x48, 0xe0, 0x21, 0x47, 0xa5, 0xa1, 0xa7, 0x06, 0x46,
		0xca, 0xc6, 0xca, 0x25, 0x43, 0xca, 0x06, 0x52, 0x36, 0x96, 0x7d, 0x25, 0x79, 0x29, 0x1b, 0x72,
		0xb2, 0xb2, 0x66, 0x04, 0x58, 0x4a, 0x76, 0x96, 0xe4, 0x23, 0x2f, 0xfd, 0xe8, 0x53, 0xa8, 0x00,
		0x42, 0x55, 0x40, 0xa5, 0x12, 0xc8, 0x55, 0x03, 0xb9, 0x8a, 0xa0, 0x55, 0x15, 0xd9, 0x84, 0xbb,
		0xb2, 0x54, 0xc8, 0x70, 0x40, 0x79, 0xc8, 0x61, 0xe1, 0x59, 0x90, 0x85, 0x21, 0x16, 0x29, 0x18,
		0xdc, 0xff, 0x9b, 0x54, 0x3c, 0xe6, 0x23, 0xae, 0xfe, 0xa5, 0xa8, 0x8e, 0x16, 0xa9, 0x25, 0xf3,
		0x11, 0xb7, 0xfe, 0x64, 0x4b, 0xfb, 0x1a, 0x34, 0x5c, 0x36, 0x1f, 0x4f, 0x86, 0x0a, 0xd2, 0x9d,
		0x7e, 0x21, 0xfa, 0x3d, 0xfb, 0x7d, 0x8f, 0x89, 0x68, 0x18, 0x75, 0x74, 0x8c, 0xfc, 0x13, 0x25,
		0xf3, 0x9e, 0xbe, 0xdb, 0xfb, 0xae, 0xc0, 0x50, 0x4f, 0xcc, 0x02, 0x5b, 0x0d, 0x5b, 0x0d, 0x5b,
		0x0d, 0x5b, 0x0d, 0x5b, 0x1d, 0xd3, 0x56, 0x3f, 0x8c, 0x6c, 0xf5, 0xbf, 0x5b, 0x3d, 0xc7, 0x61,
		0x96, 0xb7, 0xb5, 0xbd, 0xbb, 0xb3, 0xb3, 0x3b, 0x7c, 0x47, 0x23, 0xfa, 0xc8, 0xb8, 0x9e, 0x75,
		0xe7, 0xbc, 0x36, 0x1c, 0xb9, 0xcd, 0x5e, 0x61, 0xf6, 0xf3, 0x66, 0xf6, 0x71, 0xa1, 0x9b, 0x3a,
		0x5a, 0x33, 0x15, 0x9a, 0x90, 0x12, 0xbd, 0x91, 0xb7, 0x7d, 0x7d, 0x29, 0x37, 0x8f, 0x0d, 0x8f,
		0xc9, 0xe7, 0x77, 0xc3, 0x61, 0x33, 0x4e, 0xef, 0x96, 0x40, 0xef, 0xe6, 0x09, 0xab, 0x81, 0xde,
		0x05, 0xbd, 0x0b, 0x97, 0x11, 0x2e, 0x23, 0x5c, 0x46, 0xb8, 0x8c, 0x70, 0x19, 0x0b, 0x19, 0xa1,
		0x77, 0xc1, 0x62, 0xc2, 0x24, 0xc1, 0x24, 0xc1, 0x24, 0xc1, 0x24, 0xc1, 0x24, 0xad, 0x1f, 0x8b,
		0x09, 0xb2, 0x2e, 0xbf, 0x64, 0x1d, 0xca, 0x2f, 0x52, 0xed, 0x77, 0xa6, 0xf6, 0x39, 0x1b, 0xf5,
		0x17, 0xaf, 0xfd, 0x87, 0xaa, 0x0e, 0x9f, 0x29, 0xb7, 0xf9, 0xfd, 0x16, 0x33, 0x9f, 0x9e, 0xbf,
		0xdb, 0x8e, 0xee, 0x32, 0x4f, 0x76, 0x8a, 0xff, 0xc4, 0xd8, 0xc8, 0xf2, 0x8f, 0x83, 0x77, 0x91,
		0xe5, 0x8f, 0x2c, 0xff, 0x85, 0x5f, 0x09, 0x59, 0xfe, 0x59, 0x72, 0x85, 0x11, 0x06, 0x52, 0xe3,
		0xec, 0x22, 0x0c, 0x94, 0xe5, 0x30, 0x50, 0x68, 0xe9, 0x5d, 0xe6, 0xe9, 0x76, 0x37, 0xac, 0x45,
		0x4d, 0x46, 0xbf, 0xcd, 0x4e, 0x05, 0x0e, 0x4e, 0x05, 0x07, 0xe7, 0xa0, 0xe5, 0x4f, 0x36, 0x59,
		0x38, 0x07, 0xfd, 0x7e, 0x54, 0xa8, 0x19, 0xdd, 0x61, 0xae, 0xe7, 0x98, 0x2d, 0x8f, 0xb5, 0xd1,
		0x93, 0x72, 0x76, 0x43, 0xd4, 0x75, 0x01, 0x3a, 0xbd, 0xf9, 0x93, 0xbc, 0x01, 0x50, 0xf5, 0xe6,
		0x6b, 0xe5, 0xae, 0x8e, 0xf6, 0x3f, 0xd3, 0x9a, 0xe7, 0xe6, 0x4f, 0xf2, 0x4e, 0x8e, 0xc1, 0xc2,
		0x9f, 0x14, 0xf6, 0xf2, 0xd2, 0xf7, 0x87, 0xe0, 0xa8, 0x5e, 0xb0, 0x47, 0xa3, 0xd7, 0xf1, 0xe8,
		0x84, 0xdd, 0xb7, 0x55, 0xa3, 0x49, 0x7c, 0x53, 0x85, 0x2c, 0xe0, 0xcd, 0xbd, 0xfc, 0x23, 0x95,
		0xfc, 0x5b, 0x68, 0x50, 0x25, 0xd2, 0x80, 0x80, 0xec, 0x80, 0xec, 0x80, 0xec, 0x80, 0xec, 0x53,
		0x12, 0x9f, 0xf3, 0xd0, 0xf9, 0xdc, 0xd6, 0x10, 0x3b, 0x3b, 0xbb, 0x41, 0x8c, 0x8c, 0xb5, 0x7d,
		0xbd, 0xe9, 0xee, 0x8e, 0x6b, 0xd1, 0xc9, 0xdf, 0x76, 0x71, 0x89, 0x17, 0xb7, 0x79, 0xb2, 0xb9,
		0x41, 0x59, 0x08, 0x1c, 0x4f, 0x1c, 0x15, 0x5c, 0xe8, 0x89, 0xa9, 0x52, 0x71, 0xa1, 0x27, 0xb3,
		0x68, 0x0c, 0x91, 0x9c, 0x74, 0xd0, 0x16, 0x22, 0x39, 0xb2, 0xce, 0x04, 0x22, 0x39, 0x70, 0x0b,
		0xe1, 0x16, 0xc2, 0x2d, 0x44, 0x24, 0x27, 0xd9, 0xd8, 0x88, 0xe4, 0xc4, 0x9b, 0x03, 0x91, 0x9c,
		0x25, 0x9a, 0x07, 0x91, 0x1c, 0x05, 0xbb, 0x99, 0xff, 0x48, 0x0e, 0x02, 0x16, 0x08, 0x58, 0x00,
		0x99, 0x02, 0x99, 0x02, 0x99, 0x12, 0x48, 0x3c, 0x02, 0x16, 0x0c, 0x17, 0xf7, 0x62, 0x9d, 0xc6,
		0x0d, 0xe1, 0xe5, 0x71, 0x77, 0x8f, 0x6a, 0xcb, 0xb3, 0xb6, 0xd5, 0x19, 0xba, 0xbe, 0x77, 0x13,
		0x3d, 0xd6, 0x3d, 0xf3, 0xf2, 0x7b, 0x81, 0x2f, 0x84, 0x1d, 0x14, 0xd7, 0xf7, 0xc6, 0x46, 0xc6,
		0xe5, 0x3d, 0x85, 0x20, 0x16, 0x97, 0xf7, 0x70, 0x79, 0x6f, 0xc9, 0x40, 0xb8, 0xbc, 0x97, 0x51,
		0xbf, 0x16, 0x21, 0xdf, 0x14, 0xfc, 0x56, 0x84, 0x7c, 0x05, 0x06, 0x44, 0xc8, 0x17, 0xc4, 0x1a,
		0x88, 0x35, 0x10, 0x6b, 0xeb, 0x43, 0xac, 0x21, 0xe4, 0x9b, 0x6c, 0x43, 0x10, 0xf2, 0x4d, 0xe9,
		0x2c, 0x8c, 0x6d, 0x01, 0x42, 0xbe, 0x6a, 0xb5, 0x5a, 0x01, 0x21, 0x5f, 0x25, 0xda, 0x1e, 0x49,
		0xff, 0x94, 0x4b, 0xac, 0x49, 0x24, 0xfe, 0x16, 0x9a, 0x53, 0x69, 0x14, 0x20, 0xe0, 0x3a, 0xe0,
		0x3a, 0xe0, 0x3a, 0xe0, 0xfa, 0x94, 0xc4, 0x6f, 0x42, 0x1c, 0x7c, 0xa4, 0x43, 0xc7, 0x7f, 0x8e,
		0x6e, 0x22, 0xe1, 0xee, 0x1e, 0xee, 0xee, 0x65, 0x74, 0x83, 0xb2, 0x10, 0x38, 0x9e, 0x39, 0x2f,
		0xb8, 0xb9, 0xb7, 0x52, 0xa7, 0xe2, 0xe6, 0x5e, 0x66, 0xe1, 0x18, 0xc2, 0x38, 0xe9, 0xc0, 0x2d,
		0x84, 0x71, 0x64, 0x9d, 0x09, 0x84, 0x71, 0xe0, 0x17, 0xc2, 0x2f, 0x84, 0x5f, 0x88, 0x30, 0x4e,
		0xb2, 0xb1, 0x11, 0xc6, 0x89, 0x37, 0x07, 0xc2, 0x38, 0x4b, 0x34, 0x0f, 0xc2, 0x38, 0x0a, 0x76,
		0x13, 0x37, 0xf7, 0x28, 0x56, 0x17, 0xd1, 0x0a, 0xa0, 0x52, 0xa0, 0x52, 0xa0, 0xd2, 0x5c, 0xa3,
		0x52, 0x44, 0x2b, 0x70, 0x71, 0x2f, 0xf6, 0x81, 0xdc, 0x08, 0x52, 0x1e, 0xd7, 0xf6, 0xa8, 0x36,
		0x3c, 0x5b, 0x1b, 0x9d, 0xa1, 0x4b, 0x7b, 0x21, 0xb4, 0xc9, 0xf5, 0x95, 0x3d, 0xcf, 0x78, 0xa2,
		0xb8, 0xaf, 0x37, 0x18, 0x16, 0x97, 0xf5, 0x14, 0x62, 0x57, 0x5c, 0xd6, 0xc3, 0x65, 0xbd, 0x25,
		0x03, 0xe1, 0xb2, 0x5e, 0x46, 0xdd, 0x59, 0x44, 0x79, 0x53, 0x70, 0x57, 0x11, 0xe5, 0x15, 0x18,
		0x10, 0x51, 0x5e, 0xf0, 0x69, 0xe0, 0xd3, 0xc0, 0xa7, 0xad, 0x0f, 0x9f, 0x86, 0x28, 0x6f, 0xb2,
		0x0d, 0x41, 0x94, 0x37, 0xa5, 0xb3, 0x30, 0xb6, 0x05, 0x88, 0xf2, 0xaa, 0xd5, 0x6a, 0x05, 0x44,
		0x79, 0x95, 0x68, 0x7b, 0x64, 0xf9, 0x53, 0x2e, 0xb1, 0x26, 0x8b, 0xf2, 0x5b, 0x68, 0x4b, 0xe5,
		0x90, 0x7f, 0x00, 0xea, 0x00, 0xea, 0x00, 0xea, 0x00, 0xea, 0x53, 0x12, 0xbf, 0x09, 0x81, 0xef,
		0x48, 0x81, 0x0e, 0x7f, 0xc0, 0xcd, 0x3c, 0xdc, 0xcc, 0xcb, 0xe8, 0x06, 0x65, 0x21, 0x36, 0x3c,
		0x38, 0x25, 0xb8, 0x96, 0x17, 0x53, 0x87, 0xe2, 0x5a, 0x5e, 0x66, 0xe1, 0x17, 0x02, 0x36, 0xe9,
		0xc0, 0x2b, 0x04, 0x6c, 0x64, 0x9d, 0x09, 0x04, 0x6c, 0xe0, 0x07, 0xc2, 0x0f, 0x84, 0x1f, 0x88,
		0x80, 0x4d, 0xb2, 0xb1, 0x11, 0xb0, 0x89, 0x37, 0x07, 0x02, 0x36, 0x4b, 0x34, 0x0f, 0x02, 0x36,
		0x0a, 0x76, 0x13, 0xd7, 0xf2, 0x28, 0x56, 0x17, 0x71, 0x09, 0xe0, 0x51, 0xe0, 0x51, 0xe0, 0xd1,
		0x9c, 0xe2, 0x51, 0xc4, 0x25, 0xb2, 0x66, 0x9a, 0x40, 0xbf, 0xab, 0xa5, 0xdf, 0x71, 0x01, 0x8f,
		0x6a, 0xb7, 0x33, 0xb4, 0xcb, 0x19, 0xba, 0x7d, 0x57, 0x37, 0x9e, 0x72, 0x7a, 0xf5, 0x4e, 0x4e,
		0x58, 0x47, 0x6a, 0x38, 0x47, 0xfa, 0x55, 0xbb, 0x12, 0xae, 0xda, 0x65, 0x01, 0x75, 0xe2, 0xaa,
		0x5d, 0x12, 0xbf, 0x5e, 0xda, 0x55, 0x3b, 0xa3, 0xd3, 0x89, 0x74, 0x30, 0xc1, 0x7d, 0xbb, 0xb1,
		0xc1, 0xe5, 0xc6, 0x70, 0x8b, 0xb8, 0x74, 0x97, 0x65, 0x17, 0x15, 0x31, 0xdc, 0x3c, 0x21, 0x7e,
		0xe9, 0x2e, 0x27, 0xa1, 0xab, 0x49, 0xe1, 0x62, 0x2e, 0x77, 0x2d, 0xa3, 0xcd, 0x3f, 0x99, 0x83,
		0x50, 0x17, 0xfe, 0x69, 0xf8, 0x17, 0x79, 0x6e, 0x67, 0x36, 0xd2, 0x7c, 0x4c, 0xcb, 0xf5, 0x02,
		0xa5, 0xee, 0xd8, 0x9e, 0xdd, 0xb2, 0x3b, 0x3a, 0xfb, 0x9f, 0x7c, 0xb3, 0x31, 0x6f, 0x12, 0x98,
		0x0f, 0x98, 0x0f, 0x98, 0x8f, 0x0d, 0x33, 0x1f, 0x66, 0x9b, 0x59, 0x9e, 0xe9, 0xbd, 0x11, 0x99,
		0x90, 0x03, 0x89, 0x63, 0x56, 0xa3, 0x47, 0x3d, 0x33, 0x5c, 0x46, 0x17, 0x17, 0xaa, 0xde, 0xdc,
		0xd7, 0x4f, 0xaf, 0xae, 0x9a, 0xb5, 0xbb, 0xdb, 0xfa, 0xed, 0xf9, 0xed, 0x55, 0xb3, 0xfe, 0x67,
		0xad, 0x22, 0xfb, 0x6c, 0x7c, 0x35, 0x3a, 0x3d, 0xe6, 0x6a, 0x27, 0x85, 0x07, 0xe9, 0x24, 0x2e,
		0x51, 0x20, 0x64, 0xb0, 0x3c, 0x67, 0x9f, 0x6b, 0x5a, 0x1e, 0xc2, 0xb2, 0xc4, 0xcb, 0x70, 0x51,
		0xbd, 0xab, 0x9c, 0xd7, 0xaf, 0xfe, 0x6c, 0x9e, 0xdf, 0xde, 0xdc, 0x54, 0xce, 0xeb, 0x95, 0x0b,
		0xac, 0x4a, 0x41, 0xfb, 0x7c, 0x57, 0x3d, 0xab, 0x62, 0x21, 0x0a, 0x5a, 0xf5, 0xf3, 0x35, 0x8e,
		0x89, 0xbf, 0x0e, 0xf7, 0xd5, 0x7b, 0xac, 0x43, 0x41, 0xbb, 0xba, 0x3d, 0x3f, 0xbd, 0xc2, 0x42,
		0x44, 0x0b, 0xd1, 0x3c, 0xfd, 0xfc, 0xf9, 0xae, 0xf2, 0xf9, 0xb4, 0x5e, 0xc1, 0x92, 0x14, 0xb4,
		0xdb, 0xfb, 0xda, 0x25, 0xd6, 0x21, 0x5c, 0x87, 0x7d, 0x2c, 0x44, 0x41, 0xab, 0x9d, 0x57, 0x60,
		0x3c, 0xfc, 0x75, 0xa8, 0x5e, 0x63, 0x19, 0x0a, 0xda, 0x7d, 0xfd, 0xb4, 0x5e, 0x3d, 0xcf, 0x7a,
		0x8e, 0x4e, 0x23, 0x6b, 0x9e, 0x37, 0x92, 0x06, 0x26, 0xc6, 0x4b, 0x35, 0x69, 0x40, 0x42, 0x32,
		0x88, 0x40, 0x6c, 0xfe, 0x83, 0xc2, 0xfd, 0xd3, 0x4e, 0x7b, 0x4f, 0xfe, 0xb7, 0x67, 0x6d, 0x21,
		0xe7, 0x5e, 0x52, 0x2e, 0xc0, 0x90, 0x23, 0x9f, 0xda, 0x54, 0x21, 0xbe, 0x7d, 0x6c, 0xb3, 0x67,
		0x5e, 0x1a, 0xbe, 0x32, 0xda, 0x7c, 0xd1, 0x54, 0x84, 0x0b, 0xe6, 0xb6, 0x1c, 0xb3, 0x1b, 0x9d,
		0x04, 0xed, 0xec, 0x73, 0xad, 0x10, 0x3e, 0x5b, 0x61, 0x34, 0x47, 0xc1, 0x68, 0xb7, 0x59, 0xbb,
		0xe0, 0xd9, 0x85, 0xe8, 0x8b, 0x0e, 0xde, 0xf2, 0x62, 0xb7, 0x7b, 0x1d, 0x86, 0xc2, 0xc3, 0xab,
		0x45, 0xc5, 0x6e, 0xe9, 0xdf, 0x9f, 0xba, 0x3a, 0x12, 0x22, 0x68, 0x12, 0x22, 0x06, 0x6b, 0x8b,
		0x9c, 0x88, 0x70, 0x20, 0x7f, 0x3d, 0xc6, 0x74, 0x84, 0xf4, 0xf8, 0xd6, 0xd4, 0xf8, 0xb2, 0x6e,
		0xe2, 0x4e, 0xea, 0xa2, 0xba, 0xdd, 0xd5, 0x3b, 0xec, 0x07, 0xeb, 0xf8, 0xaa, 0xc8, 0x33, 0x4c,
		0x8b, 0x39, 0x05, 0x54, 0x3e, 0xce, 0x98, 0x2e, 0xa2, 0xd2, 0x49, 0xe4, 0xba, 0x89, 0x5c, 0x47,
		0x91, 0xeb, 0xaa, 0x35, 0x43, 0xf4, 0x8a, 0x11, 0x68, 0x83, 0x17, 0x81, 0xca, 0xf1, 0x1c, 0x52,
		0xf5, 0x18, 0x34, 0xa1, 0x7c, 0x5a, 0xc1, 0x84, 0x62, 0x3e, 0xc1, 0x4f, 0xbe, 0xc9, 0x1c, 0xc6,
		0x58, 0xb4, 0x6c, 0xbf, 0x9c, 0x32, 0xfd, 0x82, 0xc6, 0x49, 0xd8, 0x18, 0xc9, 0x30, 0x3e, 0x12,
		0x53, 0x36, 0x64, 0x59, 0x16, 0xe9, 0x96, 0x44, 0xba, 0xe5, 0x90, 0x9b, 0x72, 0xa1, 0xd6, 0x31,
		0x17, 0x85, 0xae, 0x5a, 0xa4, 0x51, 0x24, 0xb9, 0xe6, 0xc1, 0x68, 0x72, 0xfc, 0xd2, 0x22, 0x1a,
		0xe2, 0xc0, 0x29, 0x55, 0x7f, 0x7c, 0xb3, 0xe1, 0x91, 0x4a, 0xcb, 0x8c, 0x1a, 0xbb, 0x40, 0x13,
		0x94, 0xc6, 0x90, 0x20, 0x70, 0x03, 0x33, 0xf9, 0x69, 0xad, 0x98, 0x64, 0xb2, 0xe2, 0x8b, 0xb9,
		0xa1, 0x78, 0xf3, 0x0c, 0xb0, 0xb9, 0x6b, 0x22, 0xaa, 0xc1, 0xb7, 0x42, 0x46, 0x56, 0x86, 0x71,
		0x15, 0x34, 0xaa, 0xc0, 0xb6, 0xc0, 0xb6, 0xea, 0x35, 0x92, 0xb0, 0x11, 0x94, 0x78, 0x9b, 0x44,
		0xc6, 0xed, 0x91, 0xf1, 0xdb, 0x22, 0xc2, 0x0d, 0x7e, 0xd5, 0x28, 0x2e, 0xb1, 0x5b, 0xbc, 0x52,
		0x6e, 0xef, 0x4a, 0x73, 0xcb, 0x4b, 0x50, 0x5d, 0x50, 0x5d, 0x70, 0xcb, 0xe1, 0x96, 0xc3, 0x2d,
		0x87, 0x5b, 0x0e, 0xb7, 0x1c, 0xde, 0x6a, 0x3a, 0xde, 0xaa, 0x40, 0xd6, 0x18, 0x07, 0xe6, 0xfb,
		0x40, 0xb8, 0x19, 0xbe, 0x4e, 0xe2, 0xb4, 0x2e, 0xda, 0x95, 0xe9, 0x7a, 0xa7, 0x9e, 0xc7, 0x67,
		0x25, 0xb5, 0x6b, 0xd3, 0xaa, 0x74, 0xc2, 0x95, 0xe5, 0xb3, 0x24, 0xda, 0xb5, 0xf1, 0x3a, 0x36,
		0xc2, 0xde, 0xa7, 0x72, 0xf9, 0xf0, 0xa8, 0x5c, 0x2e, 0x1e, 0xed, 0x1f, 0x15, 0x8f, 0x0f, 0x0e,
		0xf6, 0x0e, 0x79, 0xae, 0xf8, 0x69, 0xb7, 0x4e, 0x9b, 0x39, 0xac, 0x7d, 0xf6, 0x26, 0x8e, 0x98,
		0x7b, 0x2e, 0x73, 0x78, 0x01, 0xb3, 0x04, 0xd3, 0x33, 0x6e, 0x6e, 0xec, 0xf0, 0x5b, 0xe9, 0xdf,
		0x45, 0x4a, 0x71, 0x48, 0x35, 0x33, 0x13, 0xa6, 0x25, 0x58, 0xa9, 0x0c, 0xbb, 0x50, 0x43, 0xa1,
		0xf8, 0xe2, 0x3f, 0x28, 0x47, 0xa5, 0xd3, 0xa4, 0xa7, 0x92, 0xbd, 0x7a, 0x8e, 0xa1, 0xf7, 0x2c,
		0xd7, 0x33, 0xbe, 0x77, 0xf8, 0xc4, 0x60, 0x7c, 0xcf, 0x79, 0x13, 0x3e, 0x25, 0x78, 0x4b, 0x02,
		0x87, 0x80, 0xca, 0x55, 0x92, 0x72, 0x18, 0xe8, 0xdd, 0x25, 0xfe, 0x43, 0x21, 0x60, 0xca, 0x13,
		0x7f, 0xaa, 0x41, 0x7a, 0x0e, 0x04, 0x21, 0x82, 0x7a, 0x68, 0xa0, 0x71, 0x11, 0x34, 0x3c, 0x69,
		0x21, 0xc9, 0x44, 0x23, 0xfe, 0xc6, 0xc6, 0x7b, 0x67, 0xcc, 0x8d, 0xe4, 0xdd, 0x40, 0x55, 0x1b,
		0x17, 0x6f, 0x11, 0x57, 0x2f, 0xc9, 0xf2, 0x77, 0xac, 0x58, 0xac, 0x04, 0x18, 0x2c, 0x19, 0xe6,
		0x4a, 0x8e, 0xb1, 0xa4, 0x60, 0xaa, 0x09, 0x0c, 0x65, 0xf5, 0x3a, 0x9d, 0x24, 0x1f, 0x89, 0x2c,
		0xec, 0xa3, 0xd1, 0x71, 0x99, 0xd0, 0xa2, 0x26, 0x94, 0x3c, 0x52, 0x89, 0x8b, 0xa1, 0x15, 0x12,
		0x69, 0x81, 0xe5, 0x62, 0xbb, 0x58, 0x18, 0xe7, 0xff, 0x65, 0xc1, 0x4a, 0xc6, 0x5d, 0x41, 0x89,
		0x2b, 0x37, 0xff, 0x7b, 0xcd, 0x3e, 0xf5, 0xe4, 0x2b, 0x53, 0xcf, 0xbf, 0xea, 0xb9, 0x79, 0x9f,
		0x77, 0xce, 0x26, 0x2e, 0xdb, 0xb4, 0xc9, 0xef, 0x32, 0x7a, 0xe2, 0xb1, 0xa7, 0xd5, 0x5c, 0xaf,
		0x3b, 0xf3, 0x88, 0x63, 0xb4, 0x42, 0x77, 0x6a, 0xca, 0x05, 0x34, 0xfa, 0x42, 0x3e, 0x6e, 0x19,
		0xbf, 0x36, 0xce, 0x97, 0xcd, 0xce, 0x14, 0x07, 0x7a, 0xc5, 0xa6, 0xb3, 0x62, 0xc3, 0xa4, 0x69,
		0xba, 0xc9, 0x7f, 0xae, 0x84, 0x7b, 0xbf, 0x88, 0xb4, 0xd5, 0x9e, 0x3a, 0xf6, 0x77, 0xa3, 0xb3,
		0xf8, 0xcb, 0x0c, 0x96, 0x23, 0x7a, 0xdf, 0x82, 0x07, 0x5c, 0x1e, 0xc7, 0x58, 0x49, 0x8c, 0xc6,
		0x21, 0x3c, 0x57, 0x6f, 0x4c, 0x52, 0x6c, 0x9c, 0x98, 0x77, 0x4c, 0x8c, 0x6b, 0x63, 0x6d, 0x1c,
		0x9f, 0x12, 0x5a, 0xc5, 0xc2, 0xc7, 0xcd, 0x3b, 0x4d, 0x96, 0x5f, 0x1a, 0x33, 0x60, 0x15, 0x9b,
		0x09, 0x4f, 0xc2, 0x74, 0xc7, 0x17, 0x00, 0x5e, 0x27, 0x89, 0x9b, 0x88, 0xe6, 0x76, 0x78, 0x12,
		0x09, 0x88, 0x1c, 0x50, 0x15, 0x37, 0x7c, 0xa3, 0x7d, 0xef, 0xb6, 0x7b, 0xfa, 0xa3, 0xd9, 0xf1,
		0x58, 0x7c, 0x26, 0x6b, 0x74, 0x9b, 0x67, 0xec, 0xc3, 0x31, 0x97, 0x22, 0x59, 0x10, 0x26, 0x71,
		0xb0, 0x85, 0x27, 0xa8, 0x92, 0x5c, 0xe4, 0x44, 0xfd, 0x73, 0xe1, 0x58, 0x88, 0xb0, 0xef, 0xcd,
		0x25, 0x92, 0x34, 0x4e, 0x52, 0xe2, 0x90, 0xc4, 0x48, 0xfc, 0x6c, 0xbb, 0xc3, 0x0c, 0x2b, 0xc9,
		0x86, 0x0d, 0x34, 0xdb, 0x5e, 0x26, 0xfc, 0x3c, 0xe1, 0x94, 0xbd, 0x18, 0xbe, 0xd9, 0xc7, 0x98,
		0x3a, 0xe0, 0xa9, 0x67, 0x04, 0x02, 0xc9, 0xa3, 0x02, 0xc2, 0xcf, 0x42, 0x03, 0x40, 0x03, 0x40,
		0x03, 0xe4, 0x56, 0x03, 0x04, 0x87, 0x58, 0xf7, 0xcc, 0x17, 0x66, 0xf7, 0x3c, 0xdd, 0x61, 0x2d,
		0xfb, 0x07, 0x73, 0xde, 0xf8, 0x34, 0xc2, 0x82, 0xb1, 0xa0, 0x21, 0xa0, 0x21, 0x14, 0x6b, 0x88,
		0x9e, 0x69, 0x79, 0x9f, 0x38, 0xf4, 0x43, 0x82, 0xe8, 0xa9, 0x76, 0x67, 0x58, 0x4f, 0x2c, 0x71,
		0x98, 0x89, 0x2f, 0x6a, 0xcc, 0x1f, 0x98, 0x0d, 0x6a, 0x9b, 0x0a, 0x24, 0x40, 0x5f, 0x3a, 0x46,
		0xcb, 0x57, 0x70, 0x17, 0xe6, 0x93, 0xc9, 0x1b, 0xb5, 0x0e, 0xb7, 0x86, 0x3d, 0x19, 0x9e, 0xf9,
		0x83, 0xc5, 0x22, 0x3a, 0x25, 0xc4, 0x51, 0x06, 0xd4, 0xae, 0xf8, 0xd2, 0x95, 0x0e, 0x0e, 0xf2,
		0xbf, 0x78, 0x44, 0x91, 0x93, 0x06, 0xec, 0xe9, 0x98, 0x3d, 0x75, 0xcc, 0xf6, 0x13, 0xd3, 0x0d,
		0xd7, 0xed, 0x39, 0x86, 0x95, 0x84, 0x9c, 0x18, 0x5a, 0xd1, 0xe9, 0x11, 0x60, 0x3b, 0x61, 0x3b,
		0x81, 0xae, 0x73, 0xa9, 0x0d, 0x98, 0x65, 0x7c, 0xef, 0xb0, 0xf6, 0xb0, 0xa9, 0x43, 0x72, 0x6d,
		0x30, 0x33, 0x02, 0xb4, 0x01, 0xb4, 0x81, 0x62, 0x6d, 0xc0, 0xd7, 0x91, 0x80, 0xa7, 0xe3, 0x80,
		0x58, 0x47, 0x81, 0xb1, 0x02, 0x9d, 0xb5, 0x61, 0xb7, 0x80, 0xa4, 0x3b, 0x2e, 0xd0, 0x08, 0x40,
		0x30, 0x6f, 0xf2, 0xfa, 0xbe, 0xce, 0x51, 0x65, 0x96, 0x03, 0x12, 0x0b, 0x3e, 0xe7, 0xdd, 0x69,
		0xad, 0x7a, 0xd1, 0xac, 0x7d, 0xbd, 0xaf, 0xe7, 0xe2, 0x69, 0xf9, 0x56, 0x35, 0xd1, 0x27, 0x1a,
		0x29, 0x1d, 0x69, 0xae, 0x4c, 0x64, 0xfe, 0x0c, 0x64, 0xa9, 0x99, 0xc7, 0x1c, 0xd9, 0x32, 0xb3,
		0x1f, 0x8d, 0x9d, 0x35, 0xb3, 0x69, 0xb8, 0xc3, 0x7b, 0x66, 0x4e, 0xeb, 0xd9, 0xb0, 0x2c, 0xd6,
		0xd1, 0x5f, 0x4c, 0x37, 0xca, 0xf3, 0xe0, 0x64, 0xfa, 0x97, 0x8e, 0x06, 0x3c, 0x02, 0x3c, 0x02,
		0xef, 0x24, 0x97, 0x5a, 0xa2, 0x63, 0xdb, 0x5d, 0x5e, 0x9d, 0x30, 0xf6, 0x59, 0x68, 0x00, 0x68,
		0x00, 0x68, 0x80, 0xec, 0x69, 0x80, 0x8c, 0xa4, 0x11, 0xbb, 0x5d, 0xc3, 0xb2, 0x4c, 0xeb, 0x49,
		0xf7, 0x1c, 0xc6, 0x76, 0x5d, 0xaf, 0xbb, 0x1b, 0xe6, 0x1a, 0xc6, 0xaa, 0x7d, 0xb3, 0x24, 0xa7,
		0x77, 0x49, 0x82, 0x60, 0xbc, 0xd2, 0x0f, 0x89, 0x4a, 0x3c, 0x24, 0xce, 0x8c, 0x2b, 0x21, 0x33,
		0x4e, 0xba, 0x1a, 0x42, 0x66, 0x1c, 0x2c, 0x23, 0x2c, 0x63, 0xca, 0x96, 0x11, 0x89, 0x67, 0x38,
		0x60, 0x38, 0x60, 0x79, 0x38, 0x60, 0xc8, 0xeb, 0xc2, 0x01, 0x5c, 0xbf, 0x03, 0x88, 0xbc, 0xae,
		0xc1, 0x87, 0x91, 0xd7, 0x85, 0xbc, 0xae, 0xf4, 0xf3, 0xba, 0x90, 0x36, 0x05, 0xd3, 0x04, 0xd3,
		0x94, 0x27, 0x6c, 0x88, 0xac, 0x24, 0x1c, 0x36, 0x64, 0x25, 0x21, 0x2b, 0x29, 0xd6, 0x53, 0x23,
		0x2b, 0x89, 0xe4, 0x69, 0x91, 0x95, 0x34, 0xeb, 0x09, 0x6d, 0x6e, 0x56, 0x12, 0x92, 0x7e, 0x60,
		0xee, 0x61, 0xee, 0xd7, 0x01, 0x5b, 0x23, 0xa7, 0x06, 0x07, 0x0c, 0x07, 0x8c, 0xf7, 0x80, 0x65,
		0x3d, 0x65, 0x25, 0x46, 0x01, 0xec, 0xec, 0x54, 0xa1, 0x5b, 0xf4, 0x2d, 0xb4, 0xa5, 0x99, 0x33,
		0xe3, 0x85, 0xdd, 0xee, 0xbd, 0x6e, 0xf3, 0x73, 0xf8, 0x99, 0xb8, 0x15, 0xea, 0xe6, 0xd4, 0x53,
		0x33, 0x2d, 0x8f, 0x39, 0x8f, 0x46, 0x8b, 0xb9, 0xab, 0xcb, 0x90, 0x8d, 0xbd, 0x17, 0xa5, 0xc8,
		0xf2, 0x52, 0x8a, 0x6c, 0xb8, 0x69, 0xf1, 0x53, 0xae, 0x46, 0x1f, 0x41, 0x41, 0x32, 0xa4, 0x5d,
		0x85, 0x6f, 0x4c, 0xd8, 0x49, 0x99, 0xaf, 0x73, 0x72, 0xc2, 0x96, 0x4c, 0x80, 0x4c, 0xeb, 0x0f,
		0x99, 0x92, 0x36, 0x3c, 0xe2, 0xca, 0x0f, 0x9c, 0x85, 0x5b, 0x89, 0xf3, 0x04, 0x39, 0x51, 0x3f,
		0xb7, 0x28, 0x8b, 0x88, 0xb4, 0xb8, 0x68, 0x8b, 0x8a, 0xb8, 0x34, 0x51, 0x97, 0x26, 0xf2, 0x52,
		0x44, 0x9f, 0x8f, 0x0a, 0x4c, 0x5a, 0x7f, 0x9e, 0xbb, 0x59, 0x90, 0x80, 0x37, 0xc1, 0xe9, 0x55,
		0xf0, 0x7e, 0x45, 0xd1, 0x12, 0xfb, 0xd2, 0x9a, 0xee, 0x26, 0x28, 0x51, 0xff, 0x31, 0xa1, 0x8e,
		0x4a, 0xc6, 0x43, 0xcc, 0x57, 0x51, 0x49, 0xf8, 0x08, 0x68, 0x28, 0x68, 0x28, 0x68, 0x28, 0x68,
		0xa8, 0x58, 0x8f, 0xc7, 0xda, 0x4f, 0x4c, 0xef, 0xda, 0x8e, 0xc7, 0xaf, 0xa0, 0x46, 0x43, 0x40,
		0x3f, 0x41, 0x3f, 0xad, 0x99, 0x7e, 0xe2, 0xcb, 0x6f, 0x98, 0xd1, 0x51, 0x3c, 0xcd, 0xe0, 0x84,
		0xf2, 0x1d, 0x66, 0xbe, 0xc8, 0x7d, 0xbd, 0xd6, 0xac, 0x5c, 0x7c, 0xae, 0x34, 0x6b, 0xb7, 0x77,
		0x75, 0x5e, 0xd1, 0x11, 0x48, 0x80, 0x18, 0xfc, 0x93, 0xd4, 0x90, 0x36, 0xf8, 0x2a, 0xa7, 0x5f,
		0xea, 0xb7, 0x02, 0x4d, 0xaa, 0x3e, 0x66, 0xe2, 0x4b, 0x5c, 0x54, 0xef, 0x4f, 0xcf, 0xae, 0x2a,
		0xb9, 0xff, 0x1e, 0x95, 0x1b, 0xc1, 0xaf, 0xc1, 0xf5, 0xc9, 0x46, 0xc6, 0x34, 0xce, 0x9a, 0xc3,
		0x05, 0x41, 0x5f, 0x06, 0x6e, 0x0c, 0x60, 0xc2, 0x5a, 0xc2, 0x04, 0xd7, 0x8b, 0x72, 0x06, 0x74,
		0xcf, 0x1f, 0x4b, 0x00, 0x29, 0x94, 0x39, 0x3e, 0x5b, 0xb1, 0x7a, 0x2f, 0xfc, 0x12, 0x53, 0xb7,
		0xef, 0xc3, 0x1e, 0xd2, 0x42, 0xfd, 0x5e, 0x8b, 0x41, 0x42, 0xdd, 0xed, 0x6d, 0x5d, 0xa4, 0xdf,
		0xe6, 0x9e, 0x3f, 0xc8, 0xd5, 0xed, 0x6d, 0x4d, 0x64, 0x90, 0x92, 0x3f, 0xc8, 0xcd, 0xed, 0x0d,
		0xa7, 0x2d, 0xe2, 0x6d, 0x28, 0x5d, 0xb7, 0xab, 0x96, 0x27, 0xb6, 0x86, 0xc1, 0x37, 0x8f, 0x1d,
		0x15, 0x99, 0x2f, 0x90, 0xfe, 0xf7, 0x5e, 0x59, 0xf7, 0x60, 0xe9, 0x10, 0xc1, 0x26, 0x9e, 0x14,
		0x8a, 0x6b, 0xd1, 0x61, 0x7a, 0xcd, 0xed, 0x71, 0xc7, 0xb4, 0xfe, 0x1b, 0xaa, 0x1c, 0x6e, 0x9b,
		0x3c, 0x1a, 0x02, 0x76, 0x19, 0x76, 0x79, 0x0d, 0xed, 0x32, 0xaf, 0x80, 0xaf, 0x8f, 0x59, 0xae,
		0x95, 0x6a, 0xc2, 0x56, 0xf9, 0xfe, 0xb7, 0xd3, 0xbb, 0xca, 0x45, 0xee, 0x4c, 0xaa, 0xff, 0xd5,
		0xb9, 0x6f, 0x85, 0x86, 0x07, 0x3f, 0xfc, 0xe2, 0x27, 0x85, 0x3d, 0x18, 0xc4, 0xec, 0x1b, 0xc4,
		0x28, 0x69, 0x8e, 0xd3, 0x16, 0xc6, 0x68, 0x82, 0x0c, 0x33, 0x08, 0x33, 0x98, 0x3b, 0x33, 0xf8,
		0xdd, 0x70, 0x99, 0x3e, 0xcc, 0xf6, 0xd3, 0x05, 0xc9, 0xec, 0x23, 0x8e, 0xcf, 0xd6, 0x86, 0xa9,
		0xb1, 0x2d, 0xdd, 0x7c, 0x3c, 0x19, 0x65, 0x98, 0x4e, 0xbf, 0x10, 0xfd, 0x1e, 0x9c, 0x44, 0x28,
		0x42, 0x9e, 0x77, 0x52, 0x57, 0x4d, 0x4c, 0x92, 0xeb, 0x3c, 0xb6, 0xcf, 0xa3, 0x1d, 0x8e, 0x53,
		0x72, 0x30, 0xfe, 0x57, 0x8e, 0x73, 0x1f, 0x24, 0x91, 0x55, 0xe0, 0xb1, 0x06, 0xb8, 0x03, 0x52,
		0x40, 0x42, 0xa3, 0xa0, 0xd6, 0x1e, 0x79, 0xe4, 0xcc, 0x78, 0xe4, 0xbc, 0x4f, 0x9d, 0x40, 0x35,
		0x0f, 0x55, 0xf2, 0xce, 0x4e, 0x74, 0x22, 0x77, 0xe3, 0x2b, 0x5d, 0x39, 0xc7, 0x32, 0x5e, 0x85,
		0xd0, 0x39, 0x4e, 0xdd, 0xea, 0x4a, 0xa1, 0x33, 0x2b, 0x93, 0xf4, 0x60, 0x96, 0x70, 0x30, 0xd7,
		0xf4, 0x60, 0x22, 0xd3, 0x18, 0x1e, 0x06, 0x3c, 0x0c, 0xd9, 0x1e, 0x86, 0xf2, 0x3c, 0x3e, 0x24,
		0xec, 0xe2, 0xa0, 0xe3, 0xa0, 0xe3, 0xa0, 0xf3, 0x1d, 0x74, 0xe4, 0xbd, 0xe2, 0x98, 0xe3, 0x98,
		0x2f, 0xde, 0x6f, 0xe4, 0xbd, 0x8e, 0x0f, 0x86, 0xbc, 0x57, 0xf9, 0x5f, 0x02, 0x79, 0xaf, 0x3c,
		0x9a, 0x60, 0xf0, 0xaf, 0x91, 0x99, 0x02, 0xb5, 0x48, 0x1f, 0x85, 0xb5, 0x85, 0xb5, 0x45, 0xfa,
		0x28, 0xd2, 0x47, 0x45, 0xac, 0x12, 0xd2, 0x47, 0x39, 0x8d, 0x21, 0xb2, 0x30, 0x61, 0xde, 0x60,
		0xde, 0xb2, 0x6f, 0xde, 0x90, 0x85, 0x89, 0x2c, 0xcc, 0x35, 0xce, 0xc2, 0x44, 0x32, 0x23, 0xac,
		0x09, 0xac, 0x89, 0x12, 0x6b, 0xb2, 0x11, 0xc9, 0x8c, 0x9b, 0x96, 0x13, 0x18, 0xa3, 0xa6, 0x6b,
		0xfc, 0x6f, 0x2c, 0x56, 0x2a, 0xf1, 0x3f, 0xec, 0x2d, 0xa6, 0xfa, 0x4c, 0x56, 0x64, 0x3f, 0x79,
		0x71, 0x7d, 0x29, 0x45, 0xf5, 0x39, 0x8a, 0xe9, 0x73, 0x14, 0xd1, 0x4f, 0xb3, 0x2c, 0xf0, 0x3c,
		0x81, 0xd2, 0x62, 0xa5, 0x9f, 0x4d, 0x97, 0xd9, 0xad, 0x0e, 0x3f, 0x9e, 0xdb, 0xea, 0xc2, 0x63,
		0xb5, 0x7b, 0x05, 0xaa, 0x05, 0xbf, 0xf8, 0x96, 0x63, 0x65, 0x9d, 0xe0, 0x97, 0xc5, 0x76, 0x17,
		0x15, 0x82, 0x25, 0x58, 0x68, 0xc9, 0x15, 0x82, 0x63, 0x96, 0x76, 0x4d, 0x56, 0xd2, 0x15, 0xb5,
		0x81, 0xe5, 0x42, 0xba, 0x2c, 0xd7, 0x06, 0x7e, 0xb4, 0x9d, 0xbf, 0x0d, 0xa7, 0xed, 0xeb, 0x9b,
		0x36, 0xeb, 0x18, 0x1c, 0x4d, 0x6c, 0x67, 0x46, 0x40, 0x7a, 0xbd, 0x42, 0x7f, 0x03, 0xe9, 0xf5,
		0x68, 0x5d, 0x3b, 0xfe, 0xe1, 0x41, 0xff, 0xd5, 0x32, 0x5a, 0xd7, 0xf2, 0x2e, 0xdd, 0x7e, 0x11,
		0x9d, 0x6b, 0x17, 0xfc, 0x6b, 0x48, 0x3d, 0xef, 0xec, 0xd5, 0x73, 0x0c, 0xbd, 0x67, 0xb9, 0x9e,
		0xf1, 0xbd, 0x93, 0xf0, 0xe4, 0x3b, 0xec, 0x91, 0x39, 0x2c, 0x6c, 0x68, 0x4b, 0x7e, 0x22, 0x07,
		0x6a, 0xa6, 0x5a, 0xa9, 0x54, 0x0a, 0x9f, 0x8a, 0xa5, 0x9d, 0xbd, 0x8b, 0xc2, 0xde, 0xd1, 0xce,
		0xde, 0xfe, 0xce, 0x41, 0xe1, 0x2c, 0x68, 0x8f, 0x5b, 0xb8, 0x0c, 0xad, 0x60, 0xe1, 0x22, 0x81,
		0x09, 0xa4, 0x22, 0xae, 0x46, 0x6b, 0x93, 0x25, 0xee, 0x2a, 0xf6, 0xe2, 0xad, 0xa9, 0xb4, 0xf3,
		0xf2, 0x30, 0xc2, 0x97, 0x52, 0xe5, 0x5c, 0xec, 0x7a, 0x66, 0x9d, 0x8e, 0xad, 0x7b, 0xff, 0x1f,
		0x7b, 0xff, 0xde, 0x9c, 0x36, 0xb2, 0x7d, 0x8d, 0xe3, 0xff, 0xfb, 0x55, 0xa8, 0x54, 0x53, 0xf5,
		0xd8, 0x9f, 0x8a, 0x6c, 0xc0, 0x80, 0x2f, 0x55, 0x4f, 0x9d, 0x22, 0x36, 0xc9, 0xf0, 0x1b, 0xdf,
		0x1e, 0x9b, 0x9c, 0x5b, 0xc2, 0xb8, 0x14, 0x68, 0x3b, 0xfa, 0x1d, 0x2c, 0xf1, 0x91, 0x9a, 0x4c,
		0x7c, 0x12, 0xde, 0xfb, 0xb7, 0x10, 0x20, 0xc0, 0xdc, 0xd4, 0xdd, 0xbb, 0x85, 0x84, 0x56, 0xfe,
		0x98, 0x8c, 0x1d, 0xd4, 0x42, 0xad, 0xde, 0xbb, 0xd7, 0x5a, 0xbd, 0x2f, 0x8e, 0x4c, 0xd6, 0xe5,
		0xcc, 0xb5, 0x00, 0x87, 0x00, 0x87, 0x00, 0x87, 0x5b, 0x06, 0x87, 0x45, 0x80, 0x43, 0xe9, 0xa9,
		0x03, 0x38, 0x04, 0x38, 0x8c, 0x09, 0x0e, 0xab, 0x13, 0x7c, 0xf3, 0xfb, 0x70, 0xff, 0x33, 0x9a,
		0xce, 0x0b, 0x03, 0x32, 0x8c, 0x85, 0x0c, 0x97, 0xcd, 0x1c, 0x60, 0x61, 0x2a, 0x61, 0xa1, 0xd7,
		0xed, 0x58, 0x6d, 0xaf, 0x2f, 0x10, 0x4e, 0x32, 0x85, 0x85, 0xd3, 0x6b, 0xe3, 0xe6, 0x79, 0xb3,
		0x27, 0xbb, 0xdf, 0xe5, 0x42, 0x66, 0x6d, 0x56, 0xe3, 0x2d, 0x9d, 0x16, 0xa0, 0x29, 0xa0, 0x29,
		0xa0, 0x29, 0xa0, 0x29, 0xa0, 0x29, 0xa0, 0xe9, 0xae, 0x43, 0xd3, 0x62, 0xc9, 0x68, 0xfa, 0xb6,
		0x1b, 0xbc, 0x38, 0xdc, 0xf8, 0xdd, 0xeb, 0x76, 0x8c, 0x0b, 0x81, 0x6d, 0x38, 0xef, 0xe8, 0x74,
		0xc5, 0xe4, 0x01, 0xa0, 0xa6, 0x11, 0xa0, 0xbe, 0xd8, 0x3f, 0x2c, 0xfb, 0x59, 0x42, 0xb4, 0x9c,
		0x5c, 0x08, 0x58, 0x08, 0x58, 0x08, 0x58, 0xb8, 0x65, 0x58, 0x58, 0x05, 0x2c, 0x94, 0x9d, 0xba,
		0x32, 0x60, 0x21, 0x60, 0x61, 0x4c, 0x58, 0x78, 0x3a, 0xd1, 0xdd, 0xae, 0xed, 0x1f, 0x46, 0xed,
		0x19, 0x72, 0x65, 0x3c, 0x40, 0xb8, 0x30, 0x6d, 0x80, 0x82, 0x69, 0x85, 0x82, 0xdf, 0xbc, 0x9e,
		0x1c, 0x14, 0x1c, 0x5e, 0x08, 0x28, 0x08, 0x28, 0x08, 0x28, 0x08, 0x85, 0x30, 0xab, 0x50, 0xb0,
		0x54, 0xa9, 0x00, 0x0b, 0x02, 0x0b, 0xae, 0xc7, 0x82, 0xff, 0xcf, 0x28, 0x1e, 0x1f, 0x96, 0xaa,
		0x87, 0xe5, 0x31, 0xa8, 0x69, 0x3a, 0x2f, 0x2c, 0x00, 0x10, 0x5c, 0x0b, 0x04, 0x97, 0xcf, 0x19,
		0x50, 0x60, 0x1a, 0x51, 0x20, 0x1a, 0x47, 0x00, 0xff, 0x65, 0x07, 0xff, 0x05, 0xa3, 0x52, 0x25,
		0x12, 0x7d, 0x23, 0x4e, 0x05, 0xae, 0xb9, 0x62, 0xee, 0x73, 0x98, 0x89, 0x0a, 0x08, 0xb8, 0xe3,
		0x10, 0xf0, 0xb8, 0x04, 0x04, 0x08, 0x04, 0x18, 0x03, 0x01, 0x9e, 0x1a, 0xd7, 0x0f, 0x4d, 0x63,
		0xb4, 0x37, 0xf5, 0xfd, 0x70, 0xbb, 0x37, 0x46, 0x65, 0x7c, 0x9f, 0x1c, 0xe6, 0x1b, 0xfb, 0xd7,
		0x17, 0x8d, 0xcb, 0x03, 0xc0, 0xc2, 0xcd, 0xb0, 0x30, 0xde, 0x44, 0x02, 0x2b, 0xa6, 0x11, 0x2b,
		0xfa, 0xec, 0xbb, 0x13, 0x88, 0x7c, 0xf9, 0xc8, 0x9a, 0xa2, 0x2b, 0x81, 0x19, 0x81, 0x19, 0xb7,
		0xa0, 0x19, 0x1e, 0x97, 0x24, 0x30, 0xe3, 0xc9, 0xce, 0x8a, 0x86, 0x05, 0x20, 0x46, 0xd9, 0xa9,
		0x2b, 0x97, 0xce, 0xca, 0x67, 0xd5, 0x93, 0xd2, 0x19, 0xb4, 0x43, 0x20, 0x47, 0x75, 0xe4, 0x08,
		0xc8, 0xa8, 0x0a, 0x19, 0x81, 0x15, 0x93, 0xc7, 0x8a, 0xa9, 0x2d, 0x94, 0xf6, 0x32, 0xfc, 0x4f,
		0x9c, 0xee, 0xbb, 0x6b, 0x0a, 0x9c, 0xad, 0x29, 0xb2, 0xf5, 0x12, 0x70, 0xcb, 0x19, 0x7a, 0x22,
		0xb7, 0x1d, 0x36, 0x4b, 0x89, 0x59, 0x66, 0x6a, 0xfe, 0x32, 0x54, 0x9b, 0x42, 0xb5, 0xa9, 0xc5,
		0xe5, 0x24, 0x11, 0x86, 0x31, 0x7b, 0xb5, 0xe6, 0x5e, 0xb1, 0xe0, 0x55, 0xbb, 0xca, 0xab, 0x84,
		0x7b, 0xc5, 0xc6, 0xac, 0xb1, 0xb7, 0xf2, 0x35, 0xc7, 0xaa, 0xb9, 0xa7, 0xb8, 0x70, 0xa5, 0x17,
		0xb0, 0xca, 0x42, 0x56, 0x5f, 0xd0, 0x3a, 0x10, 0x1e, 0xca, 0x36, 0xc7, 0xfc, 0x86, 0xa2, 0x86,
		0x10, 0x5d, 0xf8, 0x35, 0x3c, 0xe3, 0xb6, 0x7a, 0xbe, 0xe3, 0xf9, 0x0e, 0x7f, 0x55, 0x6f, 0xe8,
		0xf6, 0x76, 0x40, 0xc9, 0x29, 0x97, 0xab, 0x74, 0xae, 0x6c, 0x3a, 0x14, 0x26, 0x44, 0x67, 0x4a,
		0x54, 0x26, 0x45, 0x6e, 0x5a, 0xe4, 0x26, 0x46, 0x6a, 0x6a, 0x72, 0x26, 0xa7, 0x20, 0xce, 0x18,
		0x4a, 0x95, 0xd3, 0x17, 0xd6, 0x4b, 0xc0, 0x7b, 0xd6, 0x1b, 0x33, 0x92, 0x6d, 0xcd, 0xf1, 0xd6,
		0x9e, 0xaa, 0x0a, 0x43, 0x4c, 0x13, 0xf6, 0xcd, 0xe3, 0xd2, 0x49, 0xf5, 0x54, 0xe5, 0xeb, 0xfc,
		0x6e, 0x07, 0xd3, 0xe1, 0xd4, 0x96, 0x8d, 0xa4, 0x7a, 0xa9, 0xae, 0x99, 0x90, 0xaa, 0x9b, 0xd4,
		0x6a, 0xa7, 0x36, 0xe5, 0x8e, 0x5e, 0xc9, 0x23, 0x32, 0x40, 0x32, 0xb5, 0x74, 0xe5, 0xab, 0xa8,
		0x16, 0xcb, 0xe5, 0x1c, 0xbe, 0x8e, 0xbd, 0xed, 0x5c, 0xdd, 0x4a, 0xd4, 0x7b, 0x2b, 0x08, 0xb5,
		0x84, 0xc2, 0xad, 0x06, 0xa7, 0xb4, 0x3a, 0x41, 0xe8, 0x64, 0x92, 0xe9, 0x32, 0x73, 0x82, 0x7d,
		0xa7, 0x06, 0xdb, 0x74, 0x80, 0x16, 0x1d, 0xca, 0xaf, 0x76, 0x1c, 0xb3, 0x41, 0x19, 0x8e, 0xf5,
		0x0a, 0x60, 0xb9, 0xf1, 0x66, 0x58, 0x4e, 0x6a, 0x5e, 0x18, 0x47, 0x59, 0x7a, 0x56, 0x9f, 0x40,
		0x99, 0x73, 0xc1, 0x50, 0x48, 0xeb, 0xa8, 0xf3, 0xb6, 0xf1, 0x38, 0xa0, 0x6b, 0xa0, 0x6b, 0xa0,
		0x6b, 0x42, 0xeb, 0xa5, 0xef, 0xb8, 0xbc, 0x58, 0xdd, 0x32, 0x39, 0xdb, 0x6d, 0x12, 0x54, 0x04,
		0x09, 0x4a, 0x0b, 0x09, 0x2a, 0x17, 0xce, 0xca, 0xe0, 0x40, 0xe0, 0x40, 0x59, 0xe5, 0x40, 0xa7,
		0x85, 0x52, 0xd1, 0x6a, 0x5e, 0x58, 0xd7, 0x8d, 0xf7, 0xc6, 0xe4, 0xe7, 0xeb, 0x80, 0x2b, 0x05,
		0xb5, 0x80, 0xfa, 0xc4, 0xa1, 0x3e, 0x9b, 0x67, 0x1e, 0x76, 0x0a, 0xc6, 0xb3, 0xf9, 0x6b, 0x7f,
		0xef, 0xda, 0xae, 0x3a, 0xdf, 0x09, 0x47, 0x01, 0xdb, 0x01, 0xdb, 0x01, 0xdb, 0x11, 0x63, 0x3b,
		0x6e, 0xfc, 0x4c, 0x88, 0x75, 0xc6, 0x53, 0x3c, 0x53, 0x18, 0x63, 0xfc, 0x38, 0xa9, 0x01, 0x16,
		0x43, 0x67, 0x22, 0xaf, 0x9e, 0x10, 0x73, 0x41, 0x62, 0x4e, 0x48, 0x37, 0x5d, 0x5a, 0x38, 0xa2,
		0x2e, 0xae, 0xa8, 0x9d, 0xa5, 0xe8, 0x63, 0x2b, 0x84, 0x1c, 0x52, 0x0b, 0x97, 0xd4, 0xc8, 0x29,
		0x77, 0xe1, 0xad, 0xed, 0xa5, 0x63, 0x94, 0xd6, 0xde, 0x16, 0xd7, 0x1e, 0xb5, 0x6f, 0xf6, 0x43,
		0x57, 0x48, 0xe7, 0x9e, 0x45, 0x32, 0xf2, 0x57, 0xc3, 0x38, 0x9b, 0x73, 0xe6, 0xbb, 0x64, 0x1e,
		0xda, 0xdc, 0x2f, 0x17, 0xce, 0x3e, 0x17, 0xac, 0x72, 0xeb, 0x57, 0xb9, 0xf0, 0xb9, 0x60, 0x9d,
		0xb6, 0x3e, 0x17, 0xac, 0xb3, 0xd6, 0xaf, 0xcf, 0x45, 0xeb, 0x78, 0xf4, 0xbf, 0x3f, 0x8f, 0x07,
		0xc3, 0x9f, 0xce, 0xc6, 0x3f, 0x15, 0xdf, 0x95, 0xc6, 0x3f, 0x1f, 0x7c, 0xf9, 0x72, 0xf8, 0xe5,
		0xcb, 0xa1, 0xc2, 0x00, 0xea, 0xe4, 0xad, 0x45, 0x31, 0xa5, 0xb7, 0x0f, 0x8d, 0x7f, 0x92, 0xcf,
		0xeb, 0x9f, 0xdb, 0x9c, 0xd8, 0xdf, 0xcc, 0x6d, 0x9b, 0x72, 0x46, 0x68, 0xb1, 0x50, 0xb7, 0xff,
		0x75, 0xd8, 0x64, 0xa6, 0xa7, 0xbf, 0xc2, 0xae, 0x31, 0xdc, 0x32, 0x67, 0x46, 0x2a, 0x9e, 0x96,
		0xcb, 0xd5, 0x93, 0x72, 0xb9, 0x70, 0x72, 0x7c, 0x52, 0x38, 0xab, 0x54, 0x8a, 0xd5, 0x62, 0x45,
		0x61, 0xf0, 0x5b, 0xbf, 0xc3, 0x7c, 0xd6, 0x79, 0xff, 0x6a, 0x9e, 0x1b, 0x6e, 0xbf, 0xdb, 0xa5,
		0x18, 0xea, 0x53, 0xc0, 0x7c, 0xa5, 0xed, 0x0c, 0x82, 0x86, 0xe6, 0x30, 0x5f, 0xc5, 0x89, 0x12,
		0xcf, 0x46, 0x9a, 0x4b, 0xfe, 0x99, 0xfb, 0x29, 0x56, 0xa2, 0x92, 0xfc, 0xec, 0x08, 0xcc, 0x8c,
		0xe9, 0xb8, 0x9c, 0xf9, 0x4f, 0x76, 0x9c, 0xac, 0xa6, 0x95, 0x28, 0x61, 0x66, 0x0c, 0x04, 0xf7,
		0xeb, 0x13, 0x7b, 0x10, 0xdc, 0x9f, 0x64, 0x70, 0x7f, 0xb4, 0xa8, 0xd5, 0xe5, 0xd2, 0xe9, 0x50,
		0x6a, 0x9a, 0x69, 0x11, 0x9a, 0x29, 0x34, 0xd3, 0x6c, 0x68, 0xa6, 0xb2, 0x66, 0x17, 0x0d, 0x20,
		0x99, 0x6c, 0xb6, 0x72, 0xd9, 0x49, 0x25, 0x9f, 0x11, 0x1b, 0x22, 0x99, 0x41, 0x52, 0x1a, 0x26,
		0xbd, 0x81, 0x52, 0x1b, 0xaa, 0x36, 0x83, 0xd5, 0x66, 0xb8, 0x5a, 0x0c, 0x98, 0x46, 0x9d, 0x52,
		0xd4, 0x96, 0x94, 0x0d, 0x7b, 0xc6, 0xc0, 0x03, 0x4e, 0xb7, 0x34, 0xa6, 0x66, 0x1e, 0x70, 0xaa,
		0x55, 0xa1, 0x76, 0x52, 0xa9, 0xcd, 0xe8, 0x75, 0x18, 0xbf, 0x3e, 0x27, 0xa0, 0xcb, 0x19, 0x68,
		0x77, 0x0a, 0xda, 0x9d, 0x83, 0x56, 0x27, 0x41, 0xe3, 0x2c, 0x88, 0x9c, 0x46, 0xf4, 0xa4, 0xca,
		0x27, 0xa9, 0x2b, 0xd7, 0xab, 0x70, 0xa9, 0xaf, 0xb8, 0xd6, 0x7f, 0x42, 0x38, 0x24, 0xed, 0x99,
		0xe2, 0xe4, 0x0f, 0xad, 0x3d, 0x19, 0xba, 0xce, 0x18, 0xa3, 0xc1, 0x35, 0x9d, 0x35, 0x46, 0xe3,
		0xeb, 0x3e, 0xbd, 0x9a, 0xae, 0x3d, 0x5d, 0xa7, 0x58, 0xc4, 0x66, 0x37, 0xff, 0x6a, 0x35, 0x9c,
		0x45, 0x2e, 0xbc, 0xda, 0x52, 0x61, 0xfc, 0x07, 0xaf, 0x38, 0x11, 0xff, 0x4c, 0x3f, 0x5a, 0x2b,
		0x55, 0xfb, 0x06, 0x61, 0x70, 0xed, 0xc2, 0xd8, 0x74, 0xc1, 0xb6, 0x09, 0x38, 0xe6, 0x35, 0x8d,
		0x6c, 0x8b, 0xc6, 0x9d, 0xe7, 0xf3, 0x3b, 0x9b, 0x7f, 0xbb, 0xa0, 0xc3, 0xc0, 0x49, 0x20, 0xb8,
		0x65, 0x48, 0x8e, 0x3a, 0x50, 0x37, 0x71, 0x50, 0xb7, 0x14, 0xdc, 0x6d, 0x7e, 0x6b, 0xf0, 0x2f,
		0x5b, 0xf1, 0x2f, 0x44, 0x67, 0x68, 0x0b, 0xe3, 0x92, 0x9f, 0xa9, 0xd1, 0xbf, 0x10, 0x8a, 0x5c,
		0x19, 0xa1, 0x4e, 0x22, 0xb1, 0x7d, 0x9c, 0x40, 0xa7, 0x11, 0x50, 0x79, 0x50, 0x79, 0x50, 0xf9,
		0x1d, 0xa1, 0xf2, 0x5f, 0xed, 0x80, 0x59, 0xd1, 0x91, 0x99, 0xe5, 0xb3, 0x27, 0x0d, 0xb4, 0xbe,
		0x48, 0xc9, 0xeb, 0xef, 0xa2, 0x98, 0x80, 0xb6, 0xe5, 0x3c, 0x9d, 0x4f, 0x8f, 0xc3, 0xdf, 0xfe,
		0x62, 0xfc, 0x73, 0xe8, 0xd9, 0xb0, 0x01, 0xee, 0xce, 0x06, 0xd8, 0xf3, 0x7c, 0xae, 0x5e, 0x06,
		0x6e, 0xa5, 0x45, 0xcc, 0x0f, 0x8f, 0x2d, 0x11, 0x5b, 0x22, 0xb6, 0xc4, 0x5c, 0x6d, 0x89, 0x01,
		0xef, 0x59, 0x73, 0x4e, 0x40, 0xb5, 0xa4, 0xdd, 0x2a, 0x6f, 0x50, 0x81, 0xda, 0x4d, 0x3c, 0x38,
		0xd4, 0xee, 0x84, 0xcd, 0x70, 0xfe, 0xd5, 0x26, 0xa2, 0x76, 0x97, 0xa1, 0x73, 0x43, 0x87, 0xa2,
		0x78, 0x0d, 0xd0, 0xb9, 0xdf, 0x6c, 0x7c, 0x4b, 0x14, 0xd3, 0x42, 0xa8, 0x98, 0x6a, 0xaa, 0xbb,
		0x97, 0x14, 0xae, 0x5b, 0x86, 0xef, 0x72, 0xa3, 0x79, 0xaf, 0x79, 0x83, 0xf0, 0x3b, 0xa0, 0xff,
		0x09, 0xd3, 0xff, 0xad, 0x46, 0xd3, 0x11, 0x4f, 0x3c, 0x69, 0x8e, 0xca, 0x8c, 0x8c, 0x35, 0x15,
		0xb0, 0x64, 0x12, 0x57, 0xe8, 0xa6, 0x5c, 0x61, 0xba, 0x69, 0x0e, 0x29, 0x28, 0x0f, 0x27, 0x88,
		0x14, 0x18, 0x04, 0x13, 0xa7, 0x4b, 0x59, 0x41, 0x30, 0xf1, 0x16, 0x14, 0x93, 0x68, 0xbd, 0x0d,
		0xb7, 0x17, 0x9a, 0x13, 0x03, 0xca, 0x93, 0x82, 0xe8, 0x84, 0xe0, 0xf0, 0x70, 0xec, 0x41, 0x8f,
		0xd4, 0xcf, 0x00, 0xb6, 0xe3, 0x46, 0x03, 0x6e, 0x73, 0x42, 0x3f, 0x3a, 0x1a, 0x2e, 0x65, 0x59,
		0x19, 0x25, 0x38, 0x52, 0x38, 0xd2, 0x4c, 0x39, 0x52, 0x64, 0x65, 0x6c, 0x1b, 0x3d, 0xe9, 0x30,
		0x7e, 0x7d, 0x4e, 0x40, 0xb7, 0xbe, 0x81, 0x73, 0xab, 0x04, 0x74, 0x04, 0x64, 0x65, 0x90, 0x0c,
		0x89, 0x73, 0x2a, 0x9c, 0x53, 0x6d, 0xc1, 0xec, 0xe6, 0x5f, 0x2d, 0xb2, 0x32, 0x52, 0xf5, 0x8a,
		0xa1, 0x1a, 0xc7, 0x78, 0x0d, 0x38, 0xad, 0x7a, 0xb3, 0xdd, 0x21, 0x2b, 0x23, 0xe5, 0xa0, 0x6e,
		0x29, 0xb8, 0x43, 0x56, 0x06, 0xb5, 0x7f, 0x49, 0x45, 0x4c, 0x66, 0xdb, 0xeb, 0xbb, 0x9c, 0xf9,
		0x81, 0x0e, 0x36, 0x3b, 0x1e, 0x99, 0x96, 0xd1, 0x16, 0xc1, 0x68, 0xc1, 0x68, 0xc1, 0x68, 0x29,
		0x9e, 0x94, 0x4a, 0x0e, 0x8b, 0x06, 0xfc, 0xda, 0xeb, 0xf4, 0x2d, 0x9f, 0xb5, 0x99, 0xf3, 0x9d,
		0x75, 0xe8, 0xd7, 0x56, 0x94, 0xfa, 0x30, 0x77, 0x1b, 0xe2, 0xd7, 0x4f, 0x2b, 0x9c, 0x69, 0x73,
		0x37, 0x3a, 0xdd, 0x8e, 0x7e, 0xf7, 0xb3, 0x0d, 0x58, 0xa6, 0xc5, 0x1d, 0x6d, 0x17, 0x93, 0x51,
		0xbb, 0x27, 0x4d, 0xc0, 0x8b, 0x78, 0xc5, 0x93, 0x0b, 0x71, 0xab, 0xa0, 0x4b, 0xb5, 0xac, 0x63,
		0xc9, 0x8f, 0x1d, 0xcc, 0xa9, 0x86, 0xa1, 0xf5, 0x68, 0x74, 0xfa, 0x28, 0xe1, 0x54, 0xd8, 0xd1,
		0xa8, 0xd9, 0x2d, 0x08, 0x3c, 0x9a, 0xf4, 0x96, 0xc4, 0x05, 0x9e, 0xe4, 0x84, 0x1e, 0x4d, 0x96,
		0x3c, 0xbf, 0x04, 0x34, 0x6a, 0x7b, 0x0b, 0x4b, 0x80, 0xb6, 0x52, 0x76, 0xde, 0x57, 0xc5, 0x5e,
		0x36, 0x46, 0x6d, 0xa5, 0x54, 0x4e, 0xa0, 0xec, 0xa1, 0x12, 0x42, 0xe3, 0x60, 0x04, 0x0f, 0x74,
		0xa2, 0xef, 0xf0, 0x16, 0x40, 0xde, 0x40, 0xde, 0x40, 0xde, 0x40, 0xde, 0x40, 0xde, 0x40, 0xde,
		0x40, 0xde, 0x40, 0xde, 0x40, 0xde, 0x40, 0xde, 0xd9, 0x42, 0xde, 0xb9, 0x48, 0x2f, 0xd3, 0x9e,
		0xed, 0x14, 0x46, 0xa7, 0x1f, 0x11, 0x9f, 0xf7, 0x8d, 0xbe, 0x3a, 0xf7, 0xfb, 0x6d, 0x3e, 0xce,
		0x49, 0x32, 0x1f, 0x78, 0xef, 0xf1, 0x3a, 0x18, 0xfd, 0xa7, 0x31, 0xfe, 0x46, 0x8f, 0x8d, 0xc9,
		0xd7, 0x78, 0xbc, 0x98, 0x7c, 0x81, 0x1d, 0x3a, 0x9e, 0xed, 0xb0, 0xc0, 0x79, 0x76, 0x6d, 0xce,
		0x3a, 0xd6, 0x57, 0xdf, 0xe9, 0x3c, 0x33, 0xcb, 0xee, 0x74, 0x7c, 0x16, 0x68, 0x38, 0xaf, 0x5d,
		0x7d, 0x2b, 0x84, 0x24, 0xa7, 0x8f, 0xc7, 0xe1, 0x00, 0x77, 0x2b, 0x3c, 0x2d, 0x2f, 0x21, 0xc9,
		0x2f, 0x76, 0x9b, 0xd8, 0xfc, 0x0d, 0xe2, 0xd6, 0xa6, 0x53, 0xb3, 0x25, 0x6e, 0xc5, 0x19, 0x0d,
		0xfc, 0xb9, 0x60, 0x9d, 0xd9, 0xd6, 0x53, 0xcd, 0xfa, 0xd0, 0xfa, 0x59, 0x1a, 0xec, 0x9f, 0xcf,
		0xff, 0x7c, 0xf0, 0xb3, 0x32, 0xa0, 0x5b, 0x57, 0x2d, 0xca, 0x09, 0xd1, 0xd1, 0xa0, 0x34, 0x1a,
		0xfd, 0xcf, 0xcd, 0xd3, 0xf2, 0x9b, 0x89, 0x50, 0x4e, 0xe1, 0xb1, 0x33, 0x19, 0xca, 0x79, 0xff,
		0xe1, 0xa2, 0x5c, 0x3c, 0x3d, 0x35, 0xde, 0xdf, 0x37, 0x2e, 0x3f, 0xd6, 0xad, 0xeb, 0xc6, 0x7b,
		0xa3, 0xe3, 0xf1, 0x62, 0xe7, 0x81, 0xf7, 0xee, 0x3c, 0x9f, 0x5f, 0x46, 0x90, 0xe2, 0x7d, 0x88,
		0x28, 0x10, 0xd8, 0xb9, 0xdd, 0xad, 0x71, 0xe9, 0x16, 0x29, 0xfa, 0x0e, 0x11, 0xe6, 0xb9, 0x13,
		0x3c, 0x42, 0x5f, 0x1d, 0xce, 0x35, 0xf7, 0x02, 0x93, 0x00, 0x93, 0x00, 0x93, 0xc8, 0x15, 0x93,
		0x08, 0x78, 0xef, 0xad, 0x1b, 0xd0, 0x55, 0x96, 0xb3, 0x4a, 0x38, 0xe4, 0x25, 0x7b, 0xb2, 0xfb,
		0xdd, 0xf0, 0xcd, 0x1f, 0x97, 0x4e, 0xaa, 0xa7, 0x94, 0x5f, 0xf7, 0x77, 0x3b, 0x98, 0x0e, 0x4f,
		0xbb, 0x6c, 0x91, 0xa6, 0x69, 0x24, 0x70, 0xe0, 0x84, 0x34, 0xcd, 0xf5, 0xaf, 0x36, 0x89, 0x34,
		0xcd, 0x6a, 0xb1, 0x8c, 0x82, 0xa2, 0x79, 0xc7, 0xd6, 0xe0, 0xf5, 0xe0, 0xf5, 0xe0, 0xf5, 0xe0,
		0xf5, 0xe0, 0xf5, 0x1d, 0x4b, 0x4f, 0x4d, 0xa2, 0xb7, 0x37, 0x00, 0x83, 0x07, 0x83, 0x07, 0x83,
		0xcf, 0x15, 0x83, 0x47, 0x79, 0x22, 0xf0, 0x5e, 0xf0, 0xde, 0xb4, 0xf0, 0xde, 0x72, 0xe9, 0xac,
		0x7c, 0x56, 0x3d, 0x29, 0x9d, 0x55, 0xf0, 0x8e, 0x41, 0x7e, 0x41, 0x7e, 0xb7, 0x48, 0x7e, 0x51,
		0xab, 0x28, 0xeb, 0xd4, 0x17, 0x75, 0x8b, 0x76, 0x80, 0xf8, 0x86, 0x2d, 0xdf, 0xdc, 0xfe, 0x8b,
		0x56, 0xf2, 0x1b, 0xdd, 0x04, 0x04, 0x18, 0x04, 0x18, 0x04, 0x38, 0x77, 0x04, 0xb8, 0x58, 0x4d,
		0xf9, 0x81, 0x35, 0x08, 0x30, 0x08, 0x70, 0x2e, 0x08, 0x70, 0xb5, 0x52, 0x39, 0x06, 0xf7, 0x05,
		0xf7, 0x05, 0xf7, 0xdd, 0x26, 0xf7, 0x1d, 0xfe, 0x04, 0xee, 0x9b, 0x65, 0xee, 0x1b, 0xbe, 0x41,
		0xf8, 0x9d, 0x1d, 0xe0, 0xbe, 0x89, 0x84, 0x72, 0xcf, 0xdf, 0x09, 0x2c, 0x18, 0x2c, 0x18, 0x2c,
		0x38, 0x57, 0x2c, 0x38, 0xe0, 0xbd, 0x79, 0x27, 0xa0, 0x2b, 0x8c, 0xbb, 0x02, 0x56, 0xac, 0x89,
		0x3a, 0xa1, 0x6b, 0xcd, 0xce, 0xb2, 0xe2, 0x12, 0x82, 0xa1, 0xc1, 0x89, 0xc1, 0x89, 0xc1, 0x89,
		0xc1, 0x89, 0xc1, 0x89, 0xf3, 0xcd, 0x89, 0x7d, 0xcf, 0xe3, 0x89, 0x94, 0x49, 0x9a, 0xbb, 0x11,
		0x18, 0x31, 0x18, 0x31, 0x18, 0x71, 0xae, 0x18, 0x31, 0x8a, 0x24, 0xa1, 0x48, 0xd2, 0xf2, 0xd1,
		0x51, 0x24, 0x09, 0xfc, 0x41, 0x9c, 0x3f, 0xdc, 0x7b, 0x1e, 0xf8, 0x43, 0xa6, 0xf9, 0x43, 0xf8,
		0x06, 0xc1, 0x1f, 0x76, 0x80, 0x3f, 0x24, 0x72, 0xa6, 0x36, 0x7f, 0x27, 0x30, 0x08, 0x30, 0x08,
		0x30, 0x88, 0x5c, 0x31, 0x08, 0x14, 0x47, 0x5a, 0xb6, 0x6e, 0x51, 0x1c, 0x09, 0x31, 0xb2, 0xb1,
		0xac, 0x08, 0xa7, 0x81, 0x2b, 0x5e, 0x2d, 0x8a, 0x23, 0x01, 0x57, 0x83, 0xcf, 0x83, 0xcf, 0x83,
		0xcf, 0x83, 0xcf, 0xe7, 0x93, 0xcf, 0x3f, 0x79, 0xfe, 0x5f, 0xb6, 0xdf, 0xb1, 0xb8, 0x6f, 0xbb,
		0x81, 0x13, 0x38, 0xc3, 0x1d, 0x4b, 0xc3, 0x69, 0xe0, 0xf2, 0xdb, 0x80, 0xc9, 0x83, 0xc9, 0x83,
		0xc9, 0xe7, 0x8a, 0xc9, 0xeb, 0x68, 0x5c, 0xa9, 0xa1, 0x61, 0x25, 0x28, 0x30, 0x28, 0x70, 0x3e,
		0x28, 0x70, 0x72, 0x8d, 0x26, 0xc1, 0x88, 0xc1, 0x88, 0xc1, 0x88, 0xd7, 0xf0, 0xa9, 0x0f, 0x23,
		0x90, 0xdc, 0x0c, 0x31, 0x32, 0x25, 0x42, 0x06, 0x2b, 0x4e, 0x90, 0x15, 0x2f, 0x79, 0x8b, 0xf0,
		0x3f, 0x19, 0x64, 0xc6, 0xe3, 0x6e, 0xaa, 0xc4, 0x44, 0x38, 0x1c, 0x15, 0xbc, 0x17, 0xbc, 0x17,
		0xbc, 0x37, 0x57, 0xbc, 0xf7, 0xab, 0x1d, 0x30, 0x2b, 0x6a, 0x05, 0x6d, 0xf9, 0xec, 0x49, 0x47,
		0x28, 0xec, 0x09, 0x6d, 0x28, 0xec, 0xb8, 0x11, 0x76, 0xdb, 0x72, 0x9e, 0xce, 0x67, 0x3a, 0x5a,
		0xbf, 0xf9, 0xc5, 0xf8, 0xe7, 0xd0, 0xb3, 0xed, 0x90, 0xff, 0xd7, 0x57, 0x2e, 0x0f, 0x35, 0xf2,
		0xb0, 0x0f, 0x60, 0x1f, 0xc8, 0xe7, 0x3e, 0x80, 0x1a, 0x79, 0xa4, 0x0a, 0x19, 0xc4, 0xcf, 0x54,
		0xc8, 0x61, 0xa8, 0x91, 0xb7, 0xd3, 0xaf, 0x17, 0x6a, 0x67, 0x8c, 0xd7, 0x00, 0xb5, 0xf3, 0xcd,
		0x56, 0xb7, 0x41, 0x27, 0x83, 0xb6, 0xb9, 0x5d, 0x38, 0xb7, 0x14, 0xd6, 0x6d, 0x7a, 0x67, 0xf0,
		0x2d, 0x59, 0x65, 0xb2, 0xfa, 0x12, 0x75, 0x50, 0xf1, 0x0e, 0x9c, 0x16, 0x9c, 0x36, 0xc7, 0x9c,
		0x16, 0x15, 0xef, 0x32, 0xcf, 0x71, 0x51, 0xf1, 0x6e, 0x67, 0x39, 0x2e, 0x2a, 0xde, 0x81, 0xe1,
		0x82, 0xe1, 0x6a, 0x61, 0xb8, 0x8d, 0x7a, 0xbd, 0x6e, 0x9c, 0x16, 0x4a, 0x87, 0xc5, 0x4b, 0xa3,
		0x78, 0x72, 0x58, 0x3c, 0x3e, 0x2c, 0x16, 0x8c, 0x21, 0x4f, 0x32, 0x1a, 0x1d, 0xe6, 0x72, 0xe7,
		0xc9, 0x61, 0xbe, 0x71, 0x47, 0x8b, 0x8c, 0xc1, 0x77, 0x29, 0x21, 0x9f, 0xd8, 0x1b, 0x84, 0xdf,
		0xc9, 0x2a, 0xfb, 0x0d, 0xb8, 0xcd, 0x99, 0x26, 0xea, 0x3b, 0x1a, 0x1b, 0xbc, 0x17, 0xbc, 0x17,
		0xbc, 0x37, 0x57, 0xbc, 0xd7, 0x09, 0xb7, 0x08, 0xfe, 0xaa, 0x29, 0x98, 0x87, 0x92, 0xed, 0x36,
		0xc6, 0x5f, 0xf5, 0xbd, 0x1d, 0x68, 0x30, 0x87, 0xc9, 0x84, 0x3c, 0x34, 0xef, 0x1e, 0xef, 0x6e,
		0xef, 0x9b, 0x8f, 0x0f, 0xcd, 0x5a, 0xb3, 0x4e, 0x6d, 0x13, 0x21, 0xa1, 0x09, 0xc8, 0xf1, 0xa1,
		0x1e, 0x8c, 0x38, 0x37, 0x2f, 0xef, 0xaf, 0x6e, 0x2f, 0xfe, 0x68, 0xdc, 0x7c, 0x34, 0xb3, 0xc0,
		0x4a, 0x35, 0xcf, 0xc5, 0x65, 0xe3, 0xa1, 0xf6, 0xfe, 0xaa, 0x7e, 0x89, 0xb9, 0x30, 0xcc, 0x0f,
		0xb7, 0xf7, 0xff, 0xa8, 0xdd, 0x5f, 0x62, 0x65, 0x84, 0xb3, 0x71, 0x55, 0xaf, 0xdd, 0xdf, 0x60,
		0x2e, 0x46, 0x73, 0xd1, 0x78, 0x68, 0xd6, 0x35, 0x4d, 0x06, 0xe9, 0x88, 0xad, 0x1d, 0x45, 0x0d,
		0xd0, 0x3a, 0xde, 0xac, 0xc8, 0x0d, 0x27, 0xc3, 0x0f, 0x84, 0x24, 0x08, 0x12, 0x07, 0x25, 0xba,
		0x8f, 0xf5, 0xe2, 0xa0, 0x6c, 0x64, 0x50, 0xd9, 0xf0, 0xbd, 0xae, 0x06, 0x4d, 0x23, 0x1c, 0x15,
		0x6a, 0x06, 0xd4, 0x0c, 0xa8, 0x19, 0x50, 0x33, 0xa0, 0x66, 0xdc, 0x37, 0x1f, 0xef, 0x6f, 0xaf,
		0x20, 0x66, 0x44, 0xd3, 0x52, 0xbb, 0x6a, 0xd6, 0xef, 0x6f, 0x6a, 0xcd, 0x3a, 0x78, 0x9a, 0x61,
		0xbe, 0xaf, 0x5d, 0xfc, 0xf1, 0xe9, 0x0e, 0x33, 0x61, 0x98, 0x97, 0xf5, 0x87, 0xc6, 0xc7, 0xe1,
		0xb2, 0x80, 0xb2, 0x33, 0x04, 0xdd, 0xb7, 0xb7, 0x4d, 0x50, 0x77, 0x50, 0xf7, 0x54, 0x50, 0xf7,
		0x46, 0xbd, 0x5e, 0x3f, 0x2d, 0x94, 0x8a, 0xd6, 0xf5, 0x43, 0xf3, 0x2e, 0x24, 0x80, 0x0e, 0x63,
		0x6c, 0xf8, 0x9b, 0xeb, 0x60, 0x44, 0x02, 0xef, 0xe9, 0x30, 0x3f, 0xc8, 0x3b, 0x25, 0x98, 0x8d,
		0xf9, 0xea, 0x40, 0xdf, 0x93, 0xa6, 0xef, 0x7b, 0x5b, 0xf4, 0x74, 0x66, 0xcd, 0x75, 0x3d, 0x6e,
		0x73, 0xc7, 0xa3, 0x89, 0x0c, 0x35, 0x83, 0xf6, 0x37, 0xf6, 0x62, 0xf7, 0xa2, 0x84, 0xff, 0x1e,
		0x73, 0xdb, 0x21, 0xd5, 0xb6, 0x82, 0x9e, 0xed, 0xba, 0x8e, 0xfb, 0x6c, 0x71, 0x9f, 0xb1, 0xa3,
		0x80, 0xf7, 0x8e, 0x5e, 0xc6, 0xff, 0xb1, 0x9c, 0xa1, 0x83, 0x75, 0xdb, 0x2c, 0x98, 0xfb, 0xe9,
		0x68, 0xa6, 0x4e, 0xc0, 0xb4, 0x42, 0x40, 0xa0, 0x2e, 0x32, 0xc9, 0xcf, 0xb8, 0xdc, 0x95, 0x92,
		0xef, 0x68, 0xe8, 0x92, 0x14, 0xeb, 0xbc, 0x98, 0x57, 0x4e, 0xc0, 0x6b, 0x9c, 0xfb, 0x4a, 0x2f,
		0xd7, 0xbc, 0x76, 0xdc, 0x7a, 0x97, 0x0d, 0x1d, 0x89, 0x62, 0x68, 0xa6, 0x79, 0x6d, 0xff, 0x98,
		0x19, 0x89, 0xb6, 0x60, 0x9c, 0x79, 0xeb, 0x77, 0x98, 0xcf, 0x3a, 0xef, 0x87, 0xb3, 0xe6, 0xf6,
		0xbb, 0x5d, 0x8a, 0xa1, 0x3e, 0x05, 0xcc, 0x57, 0x8a, 0x15, 0x95, 0x7d, 0xf9, 0x44, 0x86, 0xa9,
		0xdd, 0x20, 0x15, 0xf6, 0x48, 0x33, 0xe0, 0x7e, 0xbf, 0xcd, 0xdd, 0x09, 0x49, 0xe6, 0xbd, 0xc7,
		0xe1, 0x56, 0x34, 0xfc, 0x4f, 0x63, 0x7c, 0xcb, 0xc7, 0x46, 0x74, 0x9f, 0xbd, 0x64, 0x0c, 0x56,
		0xec, 0x0a, 0xc1, 0xb7, 0xab, 0xfa, 0x56, 0x35, 0xbd, 0x4d, 0xb1, 0xb9, 0x8d, 0x3f, 0x43, 0x02,
		0xb3, 0x63, 0x86, 0x5f, 0xad, 0x23, 0x3c, 0x2b, 0xd3, 0xce, 0x90, 0xa3, 0xeb, 0x05, 0xdf, 0x87,
		0x9c, 0xaa, 0x2c, 0xad, 0x1e, 0xab, 0xa8, 0xc4, 0xea, 0x6a, 0xb0, 0x2a, 0x86, 0x26, 0x53, 0x77,
		0xc9, 0x00, 0x30, 0x89, 0x5a, 0xab, 0xd7, 0xe2, 0xa5, 0x55, 0xd6, 0xe8, 0x7d, 0x77, 0x99, 0xfd,
		0x24, 0xa7, 0xa4, 0xaa, 0x14, 0x73, 0x8a, 0x8a, 0x36, 0x1d, 0x1e, 0x1e, 0x8d, 0x5c, 0xcc, 0xd1,
		0xd8, 0xc4, 0x52, 0xe0, 0x2c, 0xe4, 0x62, 0x70, 0x67, 0xb2, 0xcc, 0xc4, 0x4f, 0x98, 0xa3, 0xb9,
		0x94, 0x75, 0x15, 0x25, 0xb8, 0x0a, 0xb8, 0x8a, 0xb5, 0xdf, 0xf0, 0xd2, 0x91, 0xc3, 0xe9, 0xe6,
		0xb8, 0x9f, 0x99, 0x6a, 0x03, 0xf6, 0x69, 0x85, 0xb9, 0xf9, 0xf1, 0x64, 0xe9, 0x8b, 0xd2, 0x89,
		0xad, 0xf2, 0x09, 0x2d, 0xc5, 0x89, 0x2c, 0xdd, 0x09, 0x2c, 0x95, 0x7e, 0x45, 0x7e, 0xc2, 0x4a,
		0x2e, 0x46, 0x91, 0x9e, 0xa0, 0x26, 0x4b, 0xb8, 0x95, 0x4f, 0x44, 0x89, 0xfb, 0x94, 0x53, 0xf4,
		0x25, 0x27, 0xeb, 0x43, 0xae, 0xb5, 0xef, 0x78, 0x4b, 0xe5, 0x01, 0x29, 0xfb, 0x8a, 0x6b, 0xee,
		0x23, 0xde, 0x4a, 0x74, 0x3d, 0x13, 0x1e, 0x5f, 0x10, 0x1e, 0x57, 0x10, 0xa8, 0x8c, 0xcb, 0xb2,
		0x26, 0x4f, 0x0e, 0x8b, 0xa5, 0xc3, 0x8a, 0xf1, 0xc9, 0x75, 0xfe, 0xb7, 0xcf, 0x0c, 0x67, 0x9c,
		0x73, 0xd7, 0x0e, 0xc9, 0xb6, 0xe1, 0x3d, 0x19, 0xb6, 0x31, 0xda, 0xd6, 0x08, 0x44, 0x7d, 0xea,
		0xc3, 0x08, 0x9d, 0x87, 0x0f, 0xda, 0x0e, 0x1b, 0x56, 0x26, 0x3f, 0xc6, 0x7e, 0x11, 0xdb, 0x96,
		0xce, 0x93, 0xb6, 0xe2, 0xbd, 0x04, 0xec, 0xde, 0x7c, 0xd3, 0xdb, 0x96, 0x0c, 0x0c, 0x2a, 0x56,
		0xe5, 0x01, 0x1a, 0x04, 0x1a, 0xcc, 0x2d, 0x1a, 0xd4, 0xd0, 0x73, 0x9a, 0xa0, 0x56, 0x2b, 0x65,
		0x4f, 0x69, 0xca, 0x1e, 0xd2, 0x44, 0xf5, 0x74, 0x08, 0x60, 0x06, 0x65, 0xbd, 0x1c, 0xea, 0x1a,
		0xb0, 0xda, 0x4a, 0xa6, 0xd0, 0x97, 0x48, 0xa1, 0x08, 0x50, 0xa7, 0xac, 0x6f, 0xa3, 0xa3, 0x67,
		0x73, 0x96, 0x5e, 0x47, 0xb6, 0x50, 0x13, 0xb8, 0xcf, 0x66, 0xee, 0x33, 0xaa, 0x37, 0x72, 0x62,
		0xbc, 0x0f, 0x37, 0x19, 0x4d, 0x25, 0x63, 0xc0, 0x7a, 0x36, 0x97, 0x7c, 0x59, 0xfb, 0x0a, 0xc0,
		0x77, 0x34, 0xf0, 0x9d, 0x4e, 0xd4, 0x39, 0xda, 0xf2, 0x3d, 0x8f, 0xd3, 0x89, 0xe0, 0xab, 0x06,
		0x06, 0xff, 0x01, 0xff, 0x01, 0xff, 0x11, 0x5a, 0x2f, 0x50, 0xc3, 0x05, 0xfd, 0x2d, 0xd4, 0x70,
		0x20, 0x42, 0x71, 0x33, 0x5b, 0x93, 0x9e, 0x7d, 0x19, 0x6d, 0x66, 0xf7, 0x9e, 0xc7, 0x01, 0x06,
		0x35, 0x80, 0xc1, 0xf8, 0xb3, 0x0f, 0x1c, 0x98, 0x00, 0x0e, 0xa4, 0x13, 0xc0, 0x57, 0x8e, 0x0c,
		0x24, 0x08, 0x24, 0x08, 0x24, 0x28, 0xb4, 0x5e, 0xa0, 0x84, 0x0b, 0x8d, 0x05, 0x25, 0x3c, 0xce,
		0x78, 0x50, 0xc2, 0x95, 0x5f, 0x05, 0x94, 0xf0, 0x0c, 0xe0, 0x28, 0xf0, 0x1e, 0xf0, 0x1e, 0xf0,
		0x1e, 0xf0, 0x9e, 0xb9, 0x57, 0xf1, 0xcd, 0xeb, 0x76, 0x2c, 0xee, 0xbc, 0x30, 0x75, 0xa2, 0x33,
		0x1d, 0x0a, 0xcc, 0x06, 0xcc, 0x06, 0xcc, 0x46, 0x68, 0xbd, 0xf4, 0x1d, 0x97, 0x9f, 0x12, 0xd0,
		0x98, 0x0a, 0xe8, 0x02, 0xe8, 0x42, 0xda, 0xe9, 0x42, 0xa9, 0x52, 0x01, 0x59, 0x00, 0x59, 0xd8,
		0x31, 0xb2, 0xf0, 0xbb, 0xd7, 0xed, 0x34, 0xe5, 0xe1, 0x0f, 0x68, 0x82, 0x24, 0x4d, 0x88, 0xe6,
		0x1d, 0x04, 0x41, 0x03, 0x41, 0xe8, 0xda, 0x01, 0xb7, 0xb8, 0xd7, 0xf3, 0xba, 0xde, 0xf3, 0xab,
		0xd5, 0xfe, 0x36, 0xc6, 0x08, 0x8a, 0x5c, 0x61, 0xe9, 0xa8, 0xa0, 0x0d, 0xa0, 0x0d, 0xa0, 0x0d,
		0x42, 0xeb, 0x65, 0x48, 0xb7, 0xb9, 0xd3, 0xfe, 0x4f, 0x50, 0x2d, 0x13, 0x90, 0x07, 0x95, 0xc8,
		0x98, 0x4f, 0xee, 0x08, 0x80, 0x99, 0xae, 0xed, 0x7a, 0x01, 0x6b, 0x7b, 0x6e, 0x47, 0x29, 0x5a,
		0x07, 0x64, 0x04, 0x64, 0x24, 0x11, 0x32, 0x42, 0x5b, 0x45, 0x0c, 0xec, 0x64, 0x67, 0x90, 0x8f,
		0x64, 0x49, 0xa9, 0x05, 0x1f, 0x2d, 0x55, 0x5a, 0x0a, 0xe8, 0x06, 0xe8, 0x06, 0xa2, 0xa8, 0xe3,
		0xf2, 0x62, 0x75, 0xcb, 0xc1, 0x1d, 0xbb, 0x0d, 0x44, 0x8a, 0x00, 0x22, 0x69, 0x01, 0x22, 0xe5,
		0xc2, 0x59, 0x19, 0xc0, 0x23, 0xdd, 0xc0, 0x03, 0xb2, 0xe8, 0x72, 0x4f, 0x1d, 0x55, 0x07, 0x6f,
		0x5e, 0x84, 0xda, 0xdc, 0xe4, 0xe7, 0xeb, 0x80, 0x4f, 0x53, 0xd9, 0x20, 0x8c, 0x6a, 0x4a, 0x22,
		0xdc, 0x3c, 0xf3, 0x20, 0x08, 0x1a, 0x08, 0x42, 0x18, 0xce, 0xdd, 0xf6, 0x02, 0xae, 0xce, 0x11,
		0xa6, 0x43, 0x81, 0x26, 0x80, 0x26, 0x80, 0x26, 0x08, 0xd3, 0x84, 0xe3, 0x12, 0x01, 0x4d, 0x38,
		0x01, 0x4d, 0x58, 0x81, 0x4d, 0xa1, 0x57, 0xa6, 0x87, 0x26, 0x94, 0xce, 0xca, 0x67, 0xd5, 0x93,
		0xd2, 0x19, 0x54, 0x4a, 0x90, 0x85, 0x4c, 0x92, 0x85, 0x35, 0x67, 0xf9, 0xf7, 0x9e, 0xc7, 0x2f,
		0xe4, 0x61, 0x10, 0xa8, 0xc2, 0x3a, 0x7c, 0x10, 0x67, 0xde, 0x41, 0x14, 0x74, 0x11, 0x85, 0x9e,
		0xe7, 0x53, 0x11, 0x85, 0x70, 0x28, 0x10, 0x05, 0x10, 0x05, 0x10, 0x05, 0x61, 0xa2, 0x80, 0xf3,
		0x04, 0x10, 0x85, 0x9c, 0x24, 0x65, 0x56, 0x2a, 0xc7, 0xe0, 0x08, 0xe0, 0x08, 0xbb, 0xc8, 0x11,
		0xee, 0xe4, 0x11, 0x10, 0x38, 0x82, 0x02, 0x47, 0x08, 0xe7, 0x1d, 0x1c, 0x41, 0x03, 0x47, 0x78,
		0x13, 0x0c, 0x4d, 0x50, 0x81, 0x70, 0x61, 0x44, 0x30, 0x06, 0x30, 0x06, 0x30, 0x06, 0xa1, 0xf5,
		0xd2, 0xf6, 0xfa, 0x2e, 0x67, 0xfe, 0xd6, 0xa3, 0xab, 0x41, 0x1a, 0x40, 0x1a, 0x12, 0x21, 0x0d,
		0x88, 0x86, 0x06, 0x87, 0xc8, 0x01, 0x87, 0x68, 0x7a, 0xbd, 0x0b, 0x25, 0x54, 0x04, 0x16, 0x21,
		0xc9, 0x22, 0x66, 0x66, 0x1e, 0x3c, 0x42, 0x03, 0x8f, 0xf8, 0xde, 0xb5, 0x5d, 0x75, 0xee, 0x10,
		0x8e, 0x02, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x20, 0xb4, 0x5e, 0xfa, 0xae, 0xe3, 0xb9, 0x14, 0x45,
		0xca, 0xcf, 0x14, 0xc6, 0x18, 0x3f, 0x4e, 0x6a, 0xf6, 0xe1, 0xa1, 0x33, 0x91, 0xcf, 0x80, 0x5a,
		0x36, 0x3d, 0x55, 0x82, 0xa1, 0x68, 0x28, 0x15, 0xdd, 0x74, 0x69, 0xa1, 0x58, 0x8b, 0xf8, 0xfe,
		0x1d, 0xed, 0xb8, 0xba, 0x40, 0xbd, 0x3e, 0x70, 0x4f, 0x48, 0xc1, 0xb4, 0x50, 0xb1, 0x85, 0x57,
		0x46, 0x97, 0x17, 0xb2, 0x0b, 0x6f, 0x6d, 0x2f, 0x1d, 0xa3, 0xb4, 0xf6, 0xb6, 0xb8, 0xf6, 0xa8,
		0x7d, 0xb3, 0xaf, 0x50, 0x7e, 0x63, 0xe9, 0xee, 0x75, 0x4a, 0x30, 0x16, 0x55, 0x13, 0x8a, 0x68,
		0xc0, 0xfd, 0x72, 0xe1, 0xec, 0x73, 0xc1, 0x2a, 0xb7, 0x7e, 0x95, 0x0b, 0x9f, 0x0b, 0xd6, 0x69,
		0xeb, 0x73, 0xc1, 0x3a, 0x6b, 0xfd, 0xfa, 0x5c, 0xb4, 0x8e, 0x47, 0xff, 0xfb, 0xf3, 0x78, 0x30,
		0xfc, 0xe9, 0x6c, 0xfc, 0x53, 0xf1, 0x5d, 0x69, 0xfc, 0xf3, 0xc1, 0x97, 0x2f, 0x87, 0x5f, 0xbe,
		0x1c, 0x2a, 0x0c, 0xa0, 0xce, 0x75, 0x5a, 0x14, 0x53, 0x4a, 0xd9, 0xdc, 0x23, 0x1a, 0xf5, 0xcf,
		0x6d, 0x4e, 0xec, 0x6f, 0xe6, 0xb6, 0x4d, 0x39, 0x23, 0x6a, 0xcf, 0x95, 0x13, 0xf0, 0x1a, 0xe7,
		0xbe, 0x1a, 0xce, 0xbd, 0x76, 0xdc, 0x7a, 0x97, 0x0d, 0x51, 0xbe, 0xe2, 0xae, 0x31, 0xdc, 0x32,
		0x67, 0x46, 0xa2, 0x95, 0x1d, 0xcd, 0x5b, 0xbf, 0xc3, 0x7c, 0xd6, 0x79, 0xff, 0x6a, 0x9e, 0x1b,
		0x6e, 0xbf, 0xdb, 0xa5, 0x18, 0xea, 0x53, 0xc0, 0x7c, 0xa5, 0xed, 0x4c, 0x82, 0xff, 0xef, 0x69,
		0x5c, 0x19, 0x66, 0xcd, 0x75, 0x3d, 0x1e, 0xb6, 0xd5, 0x96, 0x5a, 0x13, 0x66, 0xd0, 0xfe, 0xc6,
		0x5e, 0xec, 0x9e, 0xcd, 0xbf, 0x0d, 0x37, 0x92, 0x23, 0xaf, 0xc7, 0xdc, 0x76, 0xc8, 0xdd, 0xad,
		0xa0, 0x67, 0xbb, 0xae, 0xe3, 0x3e, 0x5b, 0xdc, 0x67, 0xec, 0x28, 0xe0, 0xbd, 0xa3, 0x97, 0xf1,
		0x7f, 0x2c, 0xc7, 0x0d, 0xb8, 0xed, 0xb6, 0x59, 0x30, 0xf7, 0xd3, 0x51, 0xc0, 0x6d, 0x2e, 0x58,
		0xc0, 0x2b, 0xfe, 0xe4, 0xc4, 0xfb, 0x64, 0xcc, 0xe9, 0x1b, 0x12, 0x71, 0xe1, 0xaa, 0x0e, 0x72,
		0xd6, 0x27, 0x6f, 0x6d, 0xa4, 0xd6, 0xa5, 0x60, 0x4d, 0x0a, 0xd6, 0x13, 0xf7, 0x75, 0x48, 0xae,
		0x62, 0xca, 0xd5, 0x2b, 0x80, 0x9c, 0xcc, 0x80, 0xfb, 0xfd, 0x36, 0x77, 0xc7, 0xe8, 0xeb, 0x81,
		0xf7, 0x1e, 0xaf, 0x83, 0xd1, 0x7f, 0x1a, 0x93, 0xd1, 0xf6, 0x68, 0xd6, 0xf4, 0xfa, 0x4f, 0x6c,
		0x98, 0x5e, 0xd1, 0x69, 0x55, 0x9c, 0xce, 0xf5, 0xcf, 0xbc, 0xfa, 0x49, 0xd6, 0x3c, 0x85, 0x39,
		0x72, 0x29, 0x9b, 0xbe, 0xfc, 0x4c, 0x6b, 0x91, 0xe1, 0xc7, 0x37, 0xcc, 0xca, 0x04, 0xdf, 0x6e,
		0xf8, 0x58, 0x24, 0x61, 0x96, 0x36, 0x7c, 0x50, 0x40, 0xaa, 0x14, 0x97, 0x24, 0x45, 0xa5, 0x47,
		0x69, 0x89, 0x51, 0x5a, 0x4a, 0x94, 0x92, 0x0c, 0xd5, 0xd6, 0xf5, 0xa5, 0x13, 0xcf, 0x07, 0x9b,
		0x4f, 0x9e, 0xff, 0x97, 0xed, 0x77, 0x86, 0x0b, 0xb7, 0xc3, 0xba, 0x76, 0xfc, 0x46, 0x50, 0xd1,
		0x8b, 0x5a, 0x18, 0x21, 0xee, 0x06, 0x23, 0xa4, 0x9f, 0x0b, 0xeb, 0xe5, 0x32, 0xfa, 0xb8, 0xbc,
		0x1e, 0x2e, 0xab, 0x7f, 0x2b, 0xeb, 0xdd, 0xca, 0xfa, 0xb6, 0x92, 0x9e, 0x4d, 0x0b, 0x39, 0x84,
		0xf5, 0x69, 0xe9, 0xb2, 0xe2, 0x12, 0x65, 0xc4, 0x25, 0x85, 0x54, 0x09, 0xc0, 0xa9, 0x22, 0x8c,
		0x4e, 0xd5, 0x34, 0x49, 0xfe, 0x44, 0x25, 0x99, 0xa9, 0x4b, 0x63, 0x32, 0xa7, 0x82, 0x2a, 0x02,
		0x65, 0x34, 0x75, 0xc7, 0x85, 0xec, 0xcf, 0x9d, 0x26, 0x8a, 0xd1, 0x22, 0xb5, 0x77, 0x85, 0xc8,
		0x0c, 0x85, 0x48, 0x0c, 0x09, 0x8b, 0x5c, 0xdd, 0x4c, 0xbe, 0x32, 0xe9, 0x64, 0xfe, 0x61, 0xb4,
		0x0b, 0x1a, 0x97, 0x02, 0x5b, 0x20, 0xc5, 0x06, 0xb2, 0x6c, 0x23, 0x51, 0x0d, 0xa6, 0x20, 0x3b,
		0x33, 0xdd, 0xd0, 0x06, 0x7e, 0xc5, 0xe4, 0x65, 0x6d, 0xb5, 0xef, 0x11, 0xd8, 0x83, 0xf9, 0x8d,
		0x75, 0xbb, 0x9e, 0x58, 0x87, 0x9a, 0x69, 0x47, 0x9a, 0xe9, 0xb5, 0xc0, 0x5e, 0xc0, 0x5e, 0xc0,
		0x5e, 0x5b, 0xc6, 0x5e, 0x45, 0x60, 0x2f, 0xe9, 0xa9, 0x03, 0xf6, 0x02, 0xf6, 0x8a, 0x89, 0xbd,
		0xaa, 0x13, 0xf8, 0xf0, 0xfb, 0x70, 0xff, 0x33, 0x24, 0x7b, 0x92, 0xe4, 0x11, 0x78, 0x2d, 0x9b,
		0xb9, 0x7c, 0xa2, 0x2e, 0xaf, 0xdb, 0xb1, 0xc2, 0xe4, 0x17, 0x09, 0xd4, 0x35, 0xbd, 0x36, 0xa6,
		0xcd, 0x4d, 0x1b, 0x1e, 0xc7, 0xb7, 0x1a, 0xb3, 0x1a, 0xef, 0xcd, 0xb4, 0x80, 0xfc, 0x80, 0xfc,
		0x80, 0xfc, 0x80, 0xfc, 0x80, 0xfc, 0x80, 0xfc, 0x76, 0x1d, 0xf9, 0x15, 0x4b, 0x46, 0xd3, 0xb7,
		0xdd, 0xe0, 0xc5, 0xe1, 0xc6, 0xef, 0x5e, 0xb7, 0x63, 0x5c, 0x08, 0x6c, 0xc3, 0x79, 0x07, 0x7f,
		0x2b, 0x26, 0x2f, 0x97, 0xf8, 0xef, 0xc5, 0xfe, 0x61, 0xd9, 0xcf, 0x12, 0x92, 0xdb, 0xe4, 0x42,
		0xa0, 0x2e, 0xa0, 0x2e, 0xa0, 0xae, 0x2d, 0xa3, 0xae, 0x2a, 0x50, 0x97, 0xec, 0xd4, 0x95, 0x81,
		0xba, 0x80, 0xba, 0x62, 0xa2, 0xae, 0xd3, 0x89, 0x6a, 0x74, 0x6d, 0xff, 0x30, 0x6a, 0xcf, 0x10,
		0xdb, 0xe2, 0xe1, 0xad, 0x85, 0x69, 0xcb, 0x2d, 0xd2, 0xfa, 0xe6, 0xf5, 0xe4, 0x90, 0xd6, 0xf0,
		0x42, 0x20, 0x2d, 0x20, 0x2d, 0x20, 0x2d, 0xe8, 0x5b, 0x59, 0x45, 0x5a, 0xa5, 0x4a, 0x05, 0x50,
		0x0b, 0x50, 0x6b, 0x3d, 0xd4, 0xfa, 0x7f, 0x46, 0xf1, 0xf8, 0xb0, 0x54, 0x3d, 0x2c, 0x8f, 0x31,
		0x43, 0xd3, 0x79, 0x91, 0x2a, 0xdd, 0x93, 0x27, 0x9c, 0xb5, 0x7c, 0xce, 0x72, 0x09, 0xb2, 0xc6,
		0xf9, 0x36, 0x82, 0x08, 0x2b, 0xbc, 0x0a, 0xf0, 0x0a, 0xf0, 0x2a, 0x61, 0x78, 0x15, 0x70, 0xdf,
		0x71, 0x9f, 0x25, 0xf0, 0x95, 0x48, 0xde, 0xbd, 0x79, 0xc5, 0xdc, 0xe7, 0x30, 0x5b, 0x0b, 0x08,
		0x6b, 0xc7, 0x11, 0xd6, 0x71, 0x09, 0x00, 0x0b, 0x00, 0x2b, 0x06, 0xc0, 0x3a, 0x35, 0xae, 0x1f,
		0x9a, 0xc6, 0x68, 0x6f, 0xea, 0xfb, 0x61, 0xf6, 0xa7, 0x31, 0x6d, 0x22, 0x6a, 0xec, 0x5f, 0x5f,
		0x34, 0x2e, 0x0f, 0x80, 0xba, 0x36, 0xa3, 0xae, 0x78, 0x13, 0x99, 0x4b, 0x28, 0xe6, 0xb3, 0xef,
		0x4e, 0x20, 0x92, 0xad, 0x3d, 0x6d, 0x7d, 0x34, 0xb9, 0x12, 0x90, 0x0c, 0x90, 0x6c, 0x0b, 0x8a,
		0x97, 0x50, 0x8b, 0x51, 0x89, 0x96, 0xa2, 0x19, 0x93, 0xbc, 0x0a, 0x00, 0x64, 0xb2, 0x53, 0xa7,
		0xda, 0xc2, 0x13, 0xc0, 0x0c, 0xc0, 0xcc, 0x50, 0xea, 0xab, 0x0f, 0x44, 0x36, 0x3f, 0x83, 0xbb,
		0x07, 0xc5, 0xd2, 0x5d, 0xfd, 0x25, 0x46, 0xbd, 0xa7, 0x35, 0x55, 0x5f, 0xf6, 0x04, 0x9e, 0x29,
		0xee, 0xb3, 0x08, 0x3f, 0x83, 0xb9, 0xb6, 0xf6, 0xcc, 0xb2, 0x2a, 0x3f, 0xcb, 0x9f, 0x77, 0xf1,
		0x69, 0x96, 0x3c, 0x89, 0xe9, 0xdb, 0x3d, 0xa7, 0x63, 0xf5, 0xbe, 0x07, 0xab, 0x13, 0x32, 0xa6,
		0x40, 0x79, 0xfa, 0xd9, 0x15, 0x73, 0xb2, 0xbe, 0x8e, 0xcd, 0x46, 0x28, 0x1c, 0x07, 0xfa, 0xc6,
		0x87, 0xba, 0x71, 0x7d, 0x91, 0x30, 0x94, 0x15, 0x76, 0x2c, 0x42, 0x50, 0x55, 0x6c, 0x15, 0x6e,
		0xaa, 0x3b, 0x13, 0xaf, 0x6e, 0xbb, 0x48, 0x7d, 0x76, 0xe1, 0x62, 0x45, 0x05, 0x14, 0x2b, 0x22,
		0xe7, 0x31, 0x09, 0x15, 0x2b, 0x6a, 0x4f, 0xde, 0xa1, 0x20, 0xa5, 0x1e, 0x5f, 0x27, 0x46, 0xa8,
		0x8b, 0x20, 0xd4, 0x20, 0xd4, 0x62, 0x0b, 0x34, 0xba, 0xe0, 0x6b, 0x78, 0x12, 0x69, 0xf5, 0x7c,
		0xc7, 0xf3, 0x1d, 0xfe, 0x2a, 0x3e, 0xfb, 0x93, 0xf7, 0xfd, 0x76, 0x20, 0xc1, 0x29, 0x94, 0xeb,
		0x51, 0x21, 0xdd, 0x9b, 0x42, 0xa5, 0x27, 0x85, 0x7a, 0x2f, 0x0a, 0x4a, 0xb0, 0xaf, 0xd4, 0x7b,
		0x42, 0x0f, 0xd2, 0x97, 0xed, 0x35, 0xa1, 0xb7, 0xba, 0xaa, 0x74, 0x4f, 0x89, 0x99, 0x63, 0xc0,
		0x9e, 0xf5, 0x66, 0x99, 0x5b, 0x7c, 0x38, 0xaa, 0xc4, 0x0a, 0x90, 0xef, 0x9b, 0x30, 0x93, 0x9c,
		0x6b, 0x1e, 0x97, 0x4e, 0xaa, 0xa7, 0x32, 0xb7, 0xff, 0xdd, 0x0e, 0xa6, 0xc3, 0xc8, 0xbd, 0x76,
		0xc5, 0x7e, 0x0d, 0x6a, 0x35, 0x8f, 0xd5, 0xdb, 0xb7, 0x10, 0xb5, 0xba, 0x23, 0xaf, 0xdc, 0x4f,
		0x57, 0xa9, 0x7f, 0xa0, 0x56, 0x0c, 0x9a, 0x6e, 0x8a, 0xab, 0xc5, 0x72, 0x79, 0x87, 0xa7, 0x39,
		0xa1, 0xda, 0xd3, 0x2d, 0xad, 0xde, 0x91, 0xa0, 0xf7, 0x1c, 0x41, 0xcf, 0x39, 0x82, 0x86, 0x3f,
		0x8b, 0x61, 0xed, 0x27, 0x93, 0xb0, 0xf6, 0x99, 0x03, 0xbf, 0x3b, 0x39, 0x98, 0x42, 0xb9, 0x89,
		0xeb, 0x50, 0xee, 0xc8, 0xf7, 0xf5, 0x0d, 0x4a, 0x5e, 0xac, 0x29, 0xce, 0xb9, 0x65, 0xa9, 0x56,
		0x75, 0x7f, 0x7d, 0xf6, 0xb8, 0xe5, 0xb5, 0xad, 0xb6, 0xf7, 0xd2, 0xf3, 0x59, 0x10, 0xb0, 0x8e,
		0xd5, 0x65, 0xf6, 0xd3, 0x70, 0x30, 0x5d, 0x9a, 0xa7, 0xc0, 0x23, 0xca, 0x97, 0xe5, 0x5d, 0xb0,
		0x5c, 0xc9, 0xf2, 0xbc, 0xa0, 0x10, 0xa0, 0x10, 0x99, 0xa1, 0x10, 0xa2, 0x89, 0x1a, 0x6f, 0x17,
		0x77, 0x25, 0xb7, 0x38, 0xbd, 0x0c, 0x9c, 0xae, 0x1b, 0xa7, 0x1f, 0x03, 0xa4, 0x03, 0xa4, 0x6f,
		0x09, 0xa4, 0x93, 0x95, 0x27, 0x06, 0x3c, 0xd7, 0x57, 0xbe, 0x18, 0xc0, 0x3c, 0x43, 0xc0, 0x5c,
		0xa2, 0x4e, 0xf3, 0x82, 0x9d, 0x0a, 0xd7, 0x6b, 0x06, 0x18, 0x07, 0x18, 0x07, 0x18, 0xdf, 0x79,
		0x30, 0x5e, 0x04, 0x18, 0xd7, 0x0d, 0xc6, 0x8b, 0x00, 0xe3, 0x00, 0xe3, 0x5b, 0x02, 0xe3, 0x34,
		0xf5, 0xaa, 0x81, 0xc4, 0x35, 0xd5, 0xb3, 0x06, 0x0c, 0xcf, 0x12, 0x0c, 0x17, 0x2f, 0xdc, 0xbd,
		0x08, 0xc3, 0x45, 0x0b, 0x78, 0x47, 0x23, 0xc8, 0x14, 0xf2, 0x8e, 0x2e, 0xae, 0x8a, 0x2d, 0xcd,
		0x16, 0x28, 0x02, 0x28, 0x02, 0x28, 0x02, 0x28, 0x02, 0x28, 0x02, 0x28, 0x02, 0x28, 0xc2, 0x6e,
		0x53, 0x04, 0xb2, 0xc2, 0xe6, 0x60, 0x09, 0xfa, 0x0a, 0x9f, 0x83, 0x28, 0x64, 0x88, 0x28, 0x88,
		0x56, 0x78, 0x5f, 0x30, 0x52, 0xb1, 0x4a, 0xef, 0x80, 0xe1, 0x80, 0xe1, 0x80, 0xe1, 0x3b, 0x0f,
		0xc3, 0xab, 0x80, 0xe1, 0xba, 0x61, 0x38, 0x62, 0xdb, 0x01, 0xc3, 0xb7, 0x05, 0xc3, 0x09, 0x2a,
		0xdd, 0x03, 0x80, 0xeb, 0xa8, 0x84, 0x0f, 0xe8, 0x9d, 0x21, 0xe8, 0xfd, 0xbd, 0x6b, 0xbb, 0x96,
		0xd3, 0x91, 0x87, 0xde, 0x93, 0x01, 0x00, 0xbd, 0x01, 0xbd, 0x77, 0x0c, 0x7a, 0xcb, 0x2d, 0x6d,
		0x43, 0x31, 0xc7, 0x15, 0x1a, 0x38, 0xc0, 0x77, 0x4c, 0xf0, 0x7d, 0x56, 0x06, 0xfc, 0x06, 0x78,
		0x20, 0x06, 0x0f, 0xa4, 0x45, 0x39, 0x24, 0x27, 0x40, 0xa8, 0x00, 0xd6, 0xb4, 0xc4, 0xd4, 0xd1,
		0xd0, 0x63, 0x1f, 0x8d, 0x0b, 0xc9, 0x24, 0x58, 0x47, 0xd6, 0x71, 0x39, 0xf3, 0x9f, 0xec, 0x36,
		0x0b, 0xc4, 0xcb, 0xde, 0xcc, 0x5c, 0x8b, 0xd2, 0x37, 0x09, 0x42, 0xa2, 0x5c, 0x97, 0xbe, 0x89,
		0x16, 0x9d, 0x3c, 0xee, 0x9f, 0x0e, 0x21, 0x87, 0xfc, 0x8b, 0x40, 0xfe, 0x40, 0xfe, 0x7a, 0x76,
		0x5d, 0x51, 0x73, 0x88, 0x2e, 0x14, 0x2c, 0x5d, 0xb6, 0x72, 0xb9, 0x08, 0x95, 0x32, 0x23, 0x32,
		0x10, 0x65, 0x43, 0xa1, 0x30, 0x18, 0x3a, 0xc3, 0xd1, 0x29, 0xcd, 0x29, 0x19, 0x52, 0x32, 0xba,
		0x9c, 0xac, 0x61, 0x29, 0xc2, 0x67, 0xc9, 0x15, 0x23, 0x6b, 0x70, 0x33, 0x86, 0x17, 0x70, 0xf5,
		0x57, 0x3c, 0x35, 0xbf, 0x80, 0xab, 0xbe, 0x5d, 0x39, 0x7d, 0x8a, 0xdc, 0x18, 0x29, 0x8d, 0x92,
		0xde, 0x38, 0xa9, 0x8d, 0x54, 0x9b, 0xb1, 0x6a, 0x33, 0x5a, 0x2d, 0xc6, 0xab, 0x66, 0xc4, 0x04,
		0x3a, 0x85, 0x9a, 0x7e, 0xb6, 0x72, 0xbd, 0x09, 0x37, 0x2e, 0xd8, 0x64, 0x9d, 0x27, 0x04, 0x43,
		0xa9, 0xc9, 0x6d, 0x74, 0xf2, 0x9b, 0x16, 0x39, 0x4e, 0x97, 0x3c, 0xa7, 0x5d, 0x48, 0xd2, 0x27,
		0x2c, 0x11, 0x9b, 0x09, 0xb9, 0xbc, 0xb7, 0xf2, 0x95, 0x95, 0x0a, 0xe3, 0x3f, 0x78, 0x75, 0x24,
		0xfe, 0x91, 0x6e, 0x94, 0xd6, 0x56, 0xfd, 0x34, 0xc1, 0x11, 0xff, 0xc2, 0x98, 0xea, 0x47, 0xfe,
		0x1a, 0x1d, 0xe3, 0x9a, 0xc8, 0xdc, 0xa2, 0x71, 0xe7, 0xf9, 0xfc, 0xce, 0xe6, 0xdf, 0x2e, 0xd4,
		0x31, 0xa0, 0x4e, 0x84, 0xb3, 0x0c, 0xe9, 0x50, 0x45, 0x0c, 0x24, 0x06, 0x7a, 0x96, 0x82, 0x9f,
		0xcd, 0x6f, 0x05, 0xf6, 0x4f, 0x6a, 0xff, 0x8a, 0x67, 0x0c, 0x0b, 0xe3, 0x91, 0x9d, 0x39, 0xd0,
		0x4d, 0xb4, 0xca, 0x91, 0x9b, 0x50, 0xbb, 0xdd, 0x8d, 0x3e, 0x47, 0xa0, 0x0d, 0x2f, 0xa8, 0x25,
		0xa8, 0x25, 0xa8, 0x65, 0x42, 0xd4, 0xf2, 0xab, 0x1d, 0x30, 0x2b, 0x3a, 0x92, 0xb0, 0x7c, 0xf6,
		0x44, 0x48, 0x33, 0x8b, 0x14, 0x3c, 0xf3, 0x2e, 0x3a, 0xcb, 0x6c, 0x5b, 0xce, 0xd3, 0xf9, 0xf4,
		0xd8, 0xef, 0xed, 0x2f, 0xc6, 0x3f, 0x87, 0x9e, 0x06, 0x1b, 0x4b, 0x7a, 0x37, 0x96, 0x9e, 0xe7,
		0x73, 0xf9, 0xe6, 0x11, 0x2b, 0x57, 0xf2, 0xfc, 0xb0, 0xd8, 0x6a, 0xb0, 0xd5, 0x60, 0xab, 0x49,
		0xd5, 0x56, 0x13, 0xf0, 0x9e, 0x35, 0x67, 0xa4, 0xb2, 0x8d, 0x30, 0x56, 0x59, 0x6b, 0x05, 0xaa,
		0xa6, 0xa4, 0x44, 0x06, 0x55, 0x93, 0xc8, 0x6c, 0xe6, 0x5f, 0x99, 0x56, 0x55, 0xb3, 0x0c, 0x3d,
		0x13, 0x7a, 0xc6, 0xec, 0xf4, 0x42, 0xcf, 0x9c, 0x2a, 0x67, 0x85, 0x50, 0x39, 0x23, 0xee, 0xde,
		0xa1, 0x1b, 0xf7, 0x2c, 0xc3, 0x3f, 0x3b, 0xab, 0x6d, 0xae, 0x79, 0x43, 0xf0, 0x0b, 0xa0, 0xa3,
		0x49, 0x5c, 0x29, 0x1b, 0xb5, 0x43, 0x34, 0xa1, 0x4a, 0xb1, 0xda, 0x33, 0x32, 0xc8, 0x54, 0x00,
		0x11, 0x09, 0xe0, 0x56, 0x9f, 0x42, 0x99, 0xce, 0xfb, 0x4a, 0xa2, 0x32, 0x85, 0x98, 0xac, 0xc8,
		0xec, 0x11, 0x24, 0x98, 0x0c, 0x63, 0x47, 0x90, 0x20, 0x21, 0x13, 0x8f, 0xd6, 0xcb, 0xd0, 0x4d,
		0xab, 0x29, 0xbc, 0x14, 0xca, 0x6e, 0xa4, 0xe8, 0x1e, 0x1e, 0x8e, 0x3d, 0xd6, 0x91, 0xbc, 0x66,
		0x9b, 0x8c, 0xdb, 0x1a, 0x75, 0xba, 0x57, 0xf6, 0x5b, 0xa3, 0x61, 0xb6, 0x1c, 0xdd, 0x5c, 0x82,
		0xe3, 0x82, 0xe3, 0x4a, 0xc4, 0x71, 0x21, 0xba, 0x59, 0x17, 0x8a, 0xa0, 0x34, 0x4a, 0x7a, 0xe3,
		0xd4, 0xc5, 0x8f, 0x71, 0x2e, 0x40, 0xc0, 0x47, 0x11, 0xdd, 0x1c, 0x6b, 0x28, 0x9c, 0x03, 0x50,
		0x8c, 0x8b, 0x73, 0x00, 0x44, 0x37, 0x27, 0xff, 0xea, 0xa0, 0xfa, 0xe1, 0x34, 0x00, 0xd1, 0xcd,
		0x5b, 0x03, 0x3d, 0x4b, 0xc1, 0x0f, 0xa2, 0x9b, 0x13, 0xbb, 0xbf, 0x4a, 0x6c, 0x56, 0xd8, 0x30,
		0x84, 0xf9, 0x01, 0x25, 0xeb, 0x1a, 0x8f, 0x48, 0xc3, 0xbc, 0x8a, 0x60, 0x5e, 0x60, 0x5e, 0xf9,
		0x64, 0x5e, 0xaa, 0x72, 0x4a, 0x34, 0xd0, 0xd7, 0x5e, 0xa7, 0x6f, 0xf9, 0xac, 0xcd, 0x9c, 0xef,
		0xac, 0x43, 0xb7, 0x46, 0xa2, 0x90, 0xe2, 0xb9, 0xe1, 0x89, 0x5e, 0x27, 0x8d, 0xf0, 0x42, 0xee,
		0x06, 0x74, 0xb8, 0x03, 0x7d, 0x6e, 0x21, 0x49, 0xd8, 0x42, 0xea, 0x26, 0xb6, 0x83, 0x59, 0xa8,
		0xdc, 0x06, 0x31, 0x30, 0x21, 0x5a, 0xb1, 0x64, 0x42, 0xce, 0xaa, 0x2d, 0xbf, 0x5a, 0xa6, 0x5c,
		0xb2, 0x63, 0x07, 0x70, 0x4a, 0x38, 0x24, 0xad, 0xc6, 0x43, 0x4f, 0x69, 0xb4, 0x6a, 0x3e, 0x0b,
		0x42, 0x02, 0x31, 0xbf, 0x4f, 0x4c, 0x48, 0xd0, 0x2f, 0x28, 0x68, 0xd0, 0x84, 0xb4, 0x6a, 0x43,
		0x8b, 0xb2, 0xde, 0x69, 0xb9, 0x5c, 0x3d, 0x29, 0x97, 0x0b, 0x27, 0xc7, 0x27, 0x85, 0xb3, 0x4a,
		0xa5, 0x58, 0x2d, 0x56, 0xf0, 0xb6, 0x13, 0xf1, 0xd6, 0xf4, 0xa3, 0xb5, 0x52, 0x42, 0x6f, 0x09,
		0xac, 0x61, 0x04, 0x15, 0x03, 0xe6, 0x72, 0x4d, 0x28, 0x34, 0x1c, 0x1a, 0x08, 0x14, 0x08, 0x14,
		0x08, 0x14, 0x08, 0x14, 0x08, 0x14, 0x08, 0x14, 0x08, 0x14, 0x08, 0x14, 0x08, 0x74, 0x57, 0x10,
		0xe8, 0x4e, 0xa5, 0x55, 0x90, 0x67, 0x03, 0x84, 0xd1, 0xa6, 0x47, 0x44, 0xe7, 0x2f, 0xa3, 0xaf,
		0xc8, 0xfd, 0x7e, 0x9b, 0x8f, 0x63, 0xf8, 0xcd, 0x07, 0xde, 0x7b, 0xfc, 0x7b, 0xd7, 0x76, 0x1f,
		0x1b, 0x93, 0x5b, 0x3e, 0x5e, 0x4c, 0x6e, 0x96, 0xc1, 0xa3, 0xaf, 0x0e, 0x0b, 0x9c, 0x67, 0xd7,
		0xe6, 0xac, 0x63, 0x7d, 0x0d, 0x1b, 0x39, 0x59, 0x76, 0xa7, 0xe3, 0xb3, 0x80, 0xf0, 0x2c, 0x6c,
		0xf5, 0x2d, 0x10, 0x96, 0x98, 0x1c, 0x07, 0xc1, 0xe1, 0x18, 0xc2, 0x12, 0x63, 0xac, 0xb7, 0x17,
		0xbb, 0x4d, 0x64, 0x9e, 0xb3, 0x26, 0x5a, 0x3c, 0xa5, 0x29, 0x89, 0xc3, 0x99, 0xef, 0x92, 0x11,
		0x07, 0xf3, 0x73, 0xc1, 0x3a, 0xb3, 0xad, 0xa7, 0x9a, 0xf5, 0xa1, 0xf5, 0xb3, 0x34, 0xd8, 0x3f,
		0x9f, 0xff, 0xf9, 0xe0, 0x67, 0x65, 0xa0, 0xbe, 0x3e, 0x5a, 0x14, 0x0f, 0x7e, 0xfb, 0xd0, 0xf8,
		0x27, 0xf9, 0xd3, 0xff, 0xb9, 0xf9, 0xf1, 0x7f, 0x33, 0x11, 0x0e, 0xb6, 0x30, 0x66, 0x26, 0xc2,
		0xc1, 0xee, 0x3f, 0x5c, 0x94, 0x8b, 0xa7, 0xa7, 0xc6, 0xfb, 0xfb, 0xc6, 0xe5, 0xc7, 0xba, 0x75,
		0xdd, 0x78, 0x6f, 0x74, 0x3c, 0x5e, 0xec, 0x3c, 0xf0, 0xde, 0x9d, 0xe7, 0xf3, 0xcb, 0x68, 0x4b,
		0x1e, 0x75, 0x6f, 0x44, 0x70, 0xd8, 0x16, 0x64, 0x2e, 0xd1, 0x77, 0x84, 0x50, 0xb1, 0x54, 0xe2,
		0x65, 0xfa, 0x9a, 0x5e, 0x6b, 0xee, 0x01, 0xc4, 0x0c, 0xc4, 0x0c, 0xc4, 0x9c, 0x2a, 0xc4, 0x1c,
		0xf0, 0xde, 0x5b, 0x33, 0xa5, 0x2e, 0xf1, 0x55, 0x25, 0x18, 0xea, 0x92, 0x3d, 0xd9, 0xfd, 0x6e,
		0xf8, 0x26, 0x8f, 0x4b, 0x27, 0xd5, 0x53, 0x8a, 0xaf, 0xf7, 0xbb, 0x1d, 0x4c, 0x87, 0xa5, 0x59,
		0x76, 0x39, 0x4d, 0x41, 0x42, 0x1e, 0x0b, 0x91, 0x81, 0xcf, 0xbf, 0x32, 0x9d, 0x29, 0x48, 0xd5,
		0x62, 0x19, 0xc5, 0xc8, 0x76, 0x0d, 0x53, 0x82, 0x6f, 0x82, 0x6f, 0x82, 0x6f, 0x82, 0x6f, 0xa6,
		0x91, 0x6f, 0xd2, 0xd6, 0x85, 0x78, 0x3b, 0x30, 0x98, 0x25, 0x98, 0x25, 0x98, 0x65, 0xaa, 0x98,
		0x25, 0x4a, 0x44, 0x80, 0x9f, 0x81, 0x9f, 0xc9, 0xbe, 0xb2, 0x72, 0xe9, 0xac, 0x7c, 0x56, 0x3d,
		0x29, 0x9d, 0x55, 0xf0, 0xee, 0x40, 0xd2, 0x40, 0xd2, 0x04, 0x08, 0x00, 0xea, 0x45, 0xa4, 0x9d,
		0xa2, 0xa1, 0x76, 0x44, 0x0a, 0x09, 0x5a, 0xd8, 0xe6, 0xc3, 0xed, 0xbf, 0x68, 0x21, 0x69, 0xd1,
		0xe0, 0x20, 0x6a, 0x20, 0x6a, 0x20, 0x6a, 0xa9, 0x23, 0x6a, 0xc5, 0x6a, 0xca, 0x0e, 0xfc, 0x40,
		0xd4, 0x40, 0xd4, 0x32, 0x41, 0xd4, 0xaa, 0x95, 0xca, 0x31, 0x38, 0x1a, 0x38, 0x1a, 0x38, 0x9a,
		0x08, 0x03, 0x18, 0xfe, 0x04, 0x8e, 0x96, 0x66, 0x8e, 0x16, 0xbe, 0x21, 0xf8, 0x85, 0x14, 0x72,
		0x34, 0xad, 0x21, 0x9b, 0xe8, 0xc8, 0x0a, 0xb6, 0x06, 0xb6, 0x96, 0x62, 0xb6, 0x86, 0x8e, 0xac,
		0xa9, 0x65, 0x6f, 0xa8, 0xc4, 0x9e, 0x39, 0xf6, 0x86, 0x8e, 0xac, 0xe0, 0x6e, 0xe0, 0x6e, 0xe0,
		0x6e, 0xe0, 0x6e, 0xe0, 0x6e, 0x9a, 0xb9, 0x9b, 0xef, 0x79, 0x5c, 0x6b, 0x79, 0x8a, 0xb9, 0x1b,
		0x80, 0xb9, 0x81, 0xb9, 0x81, 0xb9, 0xa5, 0x8a, 0xb9, 0xa1, 0x38, 0x05, 0x8a, 0x53, 0xa0, 0x38,
		0x45, 0x7e, 0x70, 0xf2, 0xbd, 0xe7, 0x01, 0x27, 0xa7, 0x1a, 0x27, 0x87, 0x6f, 0x08, 0x38, 0x39,
		0x85, 0x38, 0x59, 0xeb, 0x19, 0xc7, 0xfc, 0x1d, 0x80, 0x94, 0x81, 0x94, 0x81, 0x94, 0x53, 0x85,
		0x94, 0x51, 0x94, 0x02, 0x45, 0x29, 0xa4, 0x07, 0x45, 0x2c, 0x1d, 0xb1, 0x81, 0xcf, 0xbf, 0x32,
		0x14, 0xa5, 0x48, 0xec, 0xb5, 0xe1, 0x3c, 0x06, 0x3c, 0x13, 0x3c, 0x13, 0x3c, 0x13, 0x3c, 0x93,
		0x8c, 0x67, 0x3e, 0x79, 0xfe, 0x5f, 0xb6, 0xdf, 0xb1, 0xb8, 0x6f, 0xbb, 0x81, 0x13, 0x38, 0xc3,
		0x9d, 0x81, 0xf0, 0x34, 0x66, 0xf9, 0xf0, 0x60, 0x98, 0x60, 0x98, 0x60, 0x98, 0xa9, 0x62, 0x98,
		0x94, 0xcd, 0x86, 0x08, 0x9b, 0x0c, 0x81, 0xaa, 0x81, 0xaa, 0x65, 0x83, 0xaa, 0xe9, 0x6f, 0x0e,
		0x04, 0xe6, 0x06, 0xe6, 0xb6, 0x93, 0xcc, 0xed, 0xc3, 0x08, 0x24, 0x36, 0x43, 0x8c, 0x48, 0x81,
		0x10, 0xc1, 0xde, 0x34, 0xb0, 0xb7, 0x25, 0x6f, 0x09, 0xfe, 0x21, 0x05, 0x0c, 0x6e, 0xdc, 0xc9,
		0x8a, 0x88, 0xb0, 0x85, 0xa3, 0x81, 0x9f, 0x81, 0x9f, 0x81, 0x9f, 0xa5, 0x8a, 0x9f, 0x7d, 0xb5,
		0x03, 0x66, 0x45, 0x6d, 0xf1, 0x2c, 0x9f, 0x3d, 0x51, 0x86, 0xcc, 0x9d, 0xd0, 0x84, 0xcc, 0x8d,
		0x9b, 0xfe, 0xb5, 0x2d, 0xe7, 0xe9, 0x7c, 0xa6, 0x9b, 0xdf, 0x9b, 0x5f, 0x8c, 0x7f, 0x0e, 0x3d,
		0x4d, 0x06, 0xfd, 0x2d, 0x7d, 0x59, 0x20, 0xd4, 0x02, 0x82, 0xdf, 0x85, 0xdf, 0x35, 0x50, 0x0b,
		0x08, 0xa2, 0x18, 0x44, 0xb1, 0x9d, 0x12, 0xc5, 0x50, 0x0b, 0x08, 0x2a, 0x18, 0x54, 0xb0, 0x78,
		0x2a, 0x18, 0x34, 0xaf, 0xf4, 0x69, 0x5e, 0x50, 0xb8, 0x52, 0xc3, 0xb8, 0xe8, 0x03, 0xe0, 0x51,
		0xd9, 0x07, 0xdc, 0x0b, 0xdc, 0x2b, 0xc5, 0xdc, 0x0b, 0x95, 0x7d, 0x52, 0xcb, 0xc5, 0x50, 0xd9,
		0x27, 0x73, 0x5c, 0x0c, 0x95, 0x7d, 0xc0, 0xc4, 0xc0, 0xc4, 0xc2, 0x8d, 0xa5, 0x51, 0xaf, 0xd7,
		0x8d, 0xd3, 0x42, 0xe9, 0xb0, 0x78, 0x69, 0x14, 0x4f, 0x0e, 0x8b, 0xc7, 0x87, 0xc5, 0x82, 0x31,
		0xc4, 0xfb, 0x46, 0xa3, 0xc3, 0x5c, 0xee, 0x3c, 0x39, 0xcc, 0x37, 0xee, 0x68, 0x90, 0x21, 0x78,
		0x99, 0x0c, 0x24, 0x12, 0x7b, 0x43, 0xf0, 0x0b, 0x69, 0x61, 0x69, 0x01, 0xb7, 0x39, 0x23, 0xa6,
		0x68, 0xa3, 0x31, 0xc1, 0xcf, 0xc0, 0xcf, 0xc0, 0xcf, 0x52, 0xc5, 0xcf, 0x9c, 0xd0, 0x15, 0xf3,
		0x57, 0xe2, 0x60, 0x04, 0x0a, 0x56, 0xd6, 0x18, 0x7f, 0xb5, 0xf7, 0x76, 0x40, 0xb8, 0x8c, 0x27,
		0x0f, 0xfe, 0xd0, 0xbc, 0x7b, 0xbc, 0xbb, 0xbd, 0x6f, 0x3e, 0x3e, 0x34, 0x6b, 0xcd, 0x3a, 0xd5,
		0x5a, 0x0e, 0x81, 0x7a, 0x40, 0x86, 0x9b, 0x68, 0xb1, 0xd3, 0xdc, 0xf3, 0xbf, 0xbf, 0xba, 0xbd,
		0xf8, 0xa3, 0x71, 0xf3, 0xd1, 0x4c, 0x23, 0x8b, 0xd2, 0xf4, 0xcc, 0x97, 0x8d, 0x87, 0xda, 0xfb,
		0xab, 0xfa, 0x65, 0x9e, 0x9e, 0xf9, 0xc3, 0xed, 0xfd, 0x3f, 0x6a, 0xf7, 0x97, 0x39, 0x7b, 0xd3,
		0x57, 0xf5, 0xda, 0xfd, 0x4d, 0xde, 0x9e, 0xb9, 0xf1, 0xd0, 0xac, 0x13, 0x3f, 0x34, 0xc9, 0x48,
		0xad, 0x8c, 0xef, 0xba, 0x38, 0xed, 0x5c, 0x7e, 0xb2, 0xf6, 0x40, 0x00, 0xea, 0x41, 0xad, 0x65,
		0xd0, 0x6c, 0xac, 0x17, 0x03, 0x46, 0x9d, 0x02, 0x46, 0xed, 0x7b, 0x5d, 0x42, 0x2e, 0x1d, 0x8e,
		0x06, 0x16, 0x0d, 0x16, 0x0d, 0x16, 0x0d, 0x16, 0x9d, 0x2a, 0x16, 0x7d, 0x7f, 0x7b, 0x95, 0x43,
		0x12, 0x5d, 0xbb, 0x6a, 0xd6, 0xef, 0x6f, 0x6a, 0xcd, 0x7a, 0x9e, 0x78, 0xc6, 0xfb, 0xda, 0xc5,
		0x1f, 0x9f, 0xee, 0x72, 0xa5, 0x1b, 0xd4, 0x1f, 0x1a, 0x1f, 0x87, 0xaf, 0x39, 0x57, 0xca, 0xc1,
		0xfd, 0xed, 0x6d, 0x13, 0x54, 0x12, 0x54, 0x92, 0x64, 0x31, 0x35, 0xea, 0xf5, 0xfa, 0x69, 0xa1,
		0x54, 0xb4, 0xae, 0x1f, 0x9a, 0x77, 0x21, 0x61, 0x71, 0x18, 0x63, 0xc3, 0xdf, 0x5c, 0x07, 0x23,
		0xd2, 0x72, 0xaf, 0x8e, 0x6d, 0x41, 0x26, 0x65, 0x40, 0x5d, 0xcc, 0x57, 0x03, 0x3a, 0x49, 0x45,
		0x27, 0xf7, 0x12, 0xf4, 0x3c, 0x66, 0xcd, 0x75, 0x3d, 0x6e, 0x73, 0xc7, 0x53, 0x8b, 0x24, 0x33,
		0x83, 0xf6, 0x37, 0xf6, 0x62, 0xf7, 0xa2, 0x04, 0xd1, 0x1e, 0x73, 0xdb, 0x21, 0x05, 0xb4, 0x82,
		0x9e, 0xed, 0xba, 0x8e, 0xfb, 0x6c, 0x71, 0x9f, 0xb1, 0xa3, 0x80, 0xf7, 0x8e, 0x7c, 0xbb, 0xe7,
		0x74, 0xac, 0xde, 0xf7, 0x80, 0x1f, 0x7d, 0xef, 0xda, 0xee, 0xd1, 0x4c, 0x1e, 0xe9, 0x34, 0x83,
		0x34, 0x90, 0x17, 0x29, 0xc4, 0x67, 0x50, 0xec, 0x0a, 0xc1, 0xb9, 0x1e, 0xba, 0x04, 0xc9, 0xbc,
		0x7b, 0xf3, 0xca, 0x09, 0x78, 0x8d, 0x73, 0x5f, 0xea, 0xe5, 0x98, 0xd7, 0x8e, 0x5b, 0xef, 0xb2,
		0xa1, 0x21, 0x4b, 0x86, 0x6e, 0x99, 0xd7, 0xf6, 0x8f, 0x99, 0x11, 0x68, 0x0a, 0xe0, 0x98, 0xb7,
		0x7e, 0x87, 0xf9, 0xac, 0xf3, 0x7e, 0x38, 0x2b, 0x6e, 0xbf, 0xdb, 0x55, 0x19, 0xe2, 0x53, 0xc0,
		0x7c, 0xa9, 0xd8, 0x31, 0xd1, 0x97, 0xa8, 0x68, 0x28, 0xe4, 0x06, 0x22, 0xb1, 0xa7, 0x98, 0x01,
		0xf7, 0xfb, 0x6d, 0xee, 0x4e, 0xc8, 0x19, 0xef, 0x3d, 0xfe, 0xbd, 0x6b, 0xbb, 0x8f, 0x8d, 0x68,
		0xcc, 0x3d, 0x3d, 0x46, 0x13, 0xef, 0x93, 0x31, 0xdf, 0x88, 0xec, 0x9b, 0x20, 0x7a, 0x03, 0xf1,
		0xe6, 0x68, 0xf3, 0x13, 0xc7, 0x78, 0x5a, 0x53, 0x2c, 0xd4, 0x66, 0x26, 0xa8, 0x3a, 0xbe, 0xf0,
		0x1e, 0x89, 0x09, 0x31, 0x3f, 0x1e, 0xe9, 0x7a, 0xa5, 0x98, 0x17, 0x48, 0xe8, 0x77, 0xf2, 0x3a,
		0x9d, 0x2c, 0xaa, 0x53, 0xd6, 0xdd, 0x94, 0x21, 0x99, 0x92, 0x8e, 0x46, 0x6b, 0x5f, 0x97, 0x8e,
		0xd8, 0x76, 0x63, 0x8e, 0xcb, 0xd6, 0xcb, 0xf6, 0x79, 0x9b, 0x16, 0xc0, 0x98, 0x1f, 0x47, 0x74,
		0x97, 0x95, 0x12, 0xae, 0xa5, 0x85, 0x6a, 0x15, 0x61, 0x5a, 0x5d, 0x88, 0x56, 0xa5, 0x2f, 0x64,
		0x42, 0x33, 0x19, 0x17, 0x21, 0x11, 0x92, 0xf5, 0xe2, 0x38, 0x69, 0x61, 0x98, 0xa8, 0x1d, 0x9a,
		0x4a, 0xfb, 0x33, 0xe5, 0x76, 0x67, 0x5a, 0xda, 0x9b, 0xb5, 0x64, 0x1e, 0x84, 0xa2, 0x7d, 0x99,
		0xa6, 0x76, 0x65, 0x2d, 0xad, 0xeb, 0x8f, 0x40, 0x1d, 0x22, 0x50, 0x83, 0x14, 0x48, 0xe2, 0xb2,
		0xe0, 0xfc, 0x93, 0xc3, 0x62, 0xe9, 0xb0, 0x62, 0x7c, 0x72, 0x9d, 0xff, 0xed, 0x33, 0xc3, 0x19,
		0x87, 0x7e, 0xb7, 0x43, 0x7c, 0x67, 0x78, 0x4f, 0x86, 0x6d, 0x8c, 0xb6, 0x05, 0x05, 0x0d, 0x85,
		0x4a, 0xeb, 0xd1, 0xa1, 0xed, 0x90, 0x6b, 0x39, 0x2b, 0x63, 0xec, 0x63, 0x4f, 0x74, 0xd2, 0xca,
		0x85, 0x6e, 0x2b, 0xdb, 0xd3, 0x60, 0x8f, 0xe6, 0x9b, 0x56, 0x3d, 0xca, 0xa0, 0x47, 0x32, 0x49,
		0x19, 0xa8, 0x07, 0xa8, 0x27, 0xf5, 0xa8, 0x87, 0xb0, 0xb5, 0x95, 0x42, 0x89, 0x25, 0x8a, 0xd6,
		0x55, 0x14, 0xad, 0xaa, 0x14, 0xd3, 0x89, 0x15, 0xb6, 0x5f, 0x8a, 0x74, 0x61, 0xaa, 0x52, 0x4d,
		0xe4, 0x99, 0xa5, 0x74, 0x99, 0xa4, 0x2a, 0xf1, 0x5c, 0x14, 0xe9, 0xbd, 0x94, 0xad, 0xa1, 0xd2,
		0x3c, 0xcd, 0xe9, 0x44, 0x0b, 0xc0, 0xe4, 0x93, 0x74, 0xcc, 0x13, 0xe3, 0x7d, 0xe8, 0xb4, 0x89,
		0x33, 0x66, 0x81, 0xc6, 0x63, 0x4e, 0x31, 0x70, 0x78, 0x8c, 0xf9, 0x7d, 0xdb, 0xe2, 0x56, 0x59,
		0x84, 0x5c, 0x35, 0x20, 0x70, 0x39, 0x70, 0x39, 0xd4, 0x48, 0xa8, 0x91, 0x50, 0x23, 0x77, 0x0d,
		0xf9, 0xac, 0xc9, 0x96, 0x21, 0x6b, 0x38, 0x99, 0x5f, 0xd0, 0x13, 0x7f, 0x76, 0x81, 0x77, 0x24,
		0xf0, 0x8e, 0xba, 0x00, 0xb9, 0x72, 0x44, 0x20, 0x1e, 0x20, 0x1e, 0x28, 0x91, 0x50, 0x22, 0xa1,
		0x44, 0x42, 0x89, 0x84, 0x12, 0x09, 0x25, 0x12, 0x78, 0x1c, 0x78, 0x1c, 0x78, 0xfc, 0xcd, 0xd4,
		0x8e, 0xbb, 0x9f, 0x3b, 0xee, 0xb3, 0xd5, 0x61, 0x5d, 0x5b, 0x01, 0x87, 0x2f, 0x8c, 0x04, 0xfc,
		0x0d, 0xfc, 0xbd, 0x63, 0xf8, 0xbb, 0xef, 0xb8, 0xfc, 0x54, 0x01, 0x6c, 0x57, 0x72, 0x0b, 0x72,
		0xcb, 0x00, 0xb9, 0xba, 0x41, 0xee, 0x31, 0x10, 0x2e, 0x10, 0x6e, 0x22, 0x08, 0x77, 0xf1, 0x20,
		0xb8, 0x32, 0x39, 0x08, 0x1e, 0xb7, 0x60, 0x36, 0x2e, 0x25, 0x20, 0x00, 0x00, 0xae, 0xd0, 0xe4,
		0x02, 0xdf, 0xc6, 0x98, 0xd9, 0x6f, 0xac, 0xdb, 0xf5, 0x2c, 0xee, 0x48, 0x34, 0xa0, 0x8e, 0x96,
		0xfb, 0xcc, 0x18, 0xc0, 0xb4, 0xc0, 0xb4, 0xc0, 0xb4, 0xc0, 0xb4, 0x14, 0x1d, 0x66, 0x80, 0x69,
		0x63, 0x4c, 0x31, 0x30, 0x2d, 0x30, 0xed, 0x96, 0x30, 0x6d, 0x75, 0x02, 0xbb, 0x7e, 0x1f, 0xee,
		0xff, 0x46, 0x53, 0x7c, 0xff, 0x07, 0xa0, 0x8d, 0x3f, 0xb3, 0x40, 0xb3, 0x71, 0xd0, 0xac, 0xd7,
		0xed, 0x58, 0x6d, 0xaf, 0x1f, 0x4e, 0xac, 0x2c, 0x9a, 0x9d, 0x8e, 0x21, 0x68, 0xeb, 0xd3, 0xf3,
		0x5a, 0x71, 0x2b, 0x35, 0xab, 0x62, 0x6f, 0xb8, 0x05, 0xa4, 0x0d, 0xa4, 0x0d, 0xa4, 0x0d, 0xa4,
		0x0d, 0xa4, 0x0d, 0xa4, 0x0d, 0xa4, 0xbd, 0xdb, 0x48, 0xbb, 0x58, 0x32, 0x9a, 0xbe, 0xed, 0x06,
		0x2f, 0x0e, 0x37, 0x7e, 0xf7, 0xba, 0x1d, 0xe3, 0x42, 0x02, 0x9e, 0x00, 0x6c, 0x0b, 0x4d, 0x2e,
		0xf0, 0x76, 0x5c, 0xbc, 0xad, 0x28, 0x1e, 0x47, 0x43, 0x00, 0xd1, 0x02, 0xd1, 0x02, 0xd1, 0x02,
		0xd1, 0x22, 0xe8, 0x37, 0x19, 0x44, 0x5b, 0xaa, 0x54, 0x00, 0x69, 0x01, 0x69, 0x93, 0x80, 0xb4,
		0x6b, 0x82, 0x52, 0x87, 0x90, 0x0b, 0xd2, 0xb1, 0xe4, 0xbe, 0x19, 0x67, 0x5e, 0x01, 0x64, 0x63,
		0x4c, 0x6a, 0xd7, 0x0e, 0xb8, 0xc5, 0xbd, 0x9e, 0xd7, 0xf5, 0x9e, 0x5f, 0xad, 0xf6, 0xb7, 0xf1,
		0x1e, 0x2a, 0x89, 0x69, 0x97, 0x8e, 0x06, 0x78, 0x0b, 0x78, 0xbb, 0x63, 0xf0, 0x76, 0x48, 0xdb,
		0xb8, 0xd3, 0xfe, 0x4f, 0x50, 0x2d, 0x2b, 0x80, 0x5c, 0x99, 0xfa, 0x02, 0x9f, 0xdc, 0x11, 0xe0,
		0x30, 0x5d, 0xdb, 0xf5, 0x02, 0xd6, 0xf6, 0xdc, 0x8e, 0x54, 0x8d, 0x03, 0x80, 0x65, 0x80, 0xe5,
		0x58, 0x53, 0x4c, 0xd3, 0x1a, 0x01, 0xe8, 0x39, 0x75, 0x3b, 0xff, 0x8b, 0xfd, 0xc3, 0xb2, 0x55,
		0x36, 0xfb, 0xc9, 0x00, 0xd8, 0xdf, 0xb1, 0xbf, 0x43, 0xbe, 0x82, 0x7c, 0x35, 0x4a, 0xa8, 0xc6,
		0x8e, 0xac, 0x7b, 0x47, 0x46, 0xc2, 0x3a, 0xd4, 0xab, 0x64, 0xd4, 0xab, 0xc5, 0x33, 0xc3, 0xd3,
		0x49, 0x80, 0xde, 0xb5, 0xfd, 0xc3, 0xa8, 0xa1, 0x78, 0xbd, 0xd4, 0xae, 0x19, 0x63, 0x5a, 0x81,
		0x60, 0xe3, 0xd8, 0x88, 0xe7, 0x71, 0xab, 0xed, 0x05, 0x0a, 0x31, 0x8f, 0xd3, 0x21, 0x80, 0x62,
		0x81, 0x62, 0x77, 0x10, 0xc5, 0x1e, 0x97, 0x14, 0x60, 0xec, 0x09, 0x84, 0x25, 0xc0, 0x58, 0x6d,
		0x30, 0xb6, 0x74, 0x56, 0x3e, 0xab, 0x9e, 0x94, 0xce, 0x20, 0x27, 0x01, 0xce, 0x26, 0x02, 0x67,
		0xd7, 0x1c, 0x1a, 0xde, 0x7b, 0x1e, 0xbf, 0x10, 0x87, 0x01, 0xc0, 0xb3, 0x71, 0xe7, 0x15, 0x80,
		0x36, 0x2e, 0xa0, 0xed, 0x79, 0xbe, 0x2a, 0xa0, 0x0d, 0x87, 0x00, 0xa0, 0x05, 0xa0, 0xdd, 0x41,
		0x40, 0x5b, 0xac, 0x26, 0x5c, 0xd3, 0x14, 0x80, 0x16, 0x80, 0x36, 0xd6, 0x14, 0x57, 0x2b, 0x95,
		0x63, 0x60, 0x59, 0x60, 0xd9, 0x34, 0x60, 0xd9, 0x3b, 0x71, 0x04, 0x00, 0x2c, 0x1b, 0x77, 0x5e,
		0x81, 0x65, 0x63, 0x4c, 0xea, 0x9b, 0x28, 0x40, 0x85, 0xc6, 0x45, 0x0b, 0x23, 0x01, 0xd9, 0x02,
		0xd9, 0xee, 0x18, 0xb2, 0x0d, 0xcb, 0x2e, 0x30, 0x3f, 0xf1, 0x70, 0x42, 0x80, 0x5b, 0x80, 0xdb,
		0x58, 0x53, 0x8c, 0x30, 0x40, 0x60, 0xdd, 0x14, 0x62, 0xdd, 0xa6, 0xd7, 0xbb, 0x90, 0x42, 0x05,
		0x40, 0xbb, 0xf1, 0x67, 0x16, 0x78, 0x37, 0xc6, 0xb4, 0x7e, 0xef, 0xda, 0xae, 0xe5, 0x74, 0xe4,
		0x61, 0xee, 0x64, 0x00, 0xa0, 0x5b, 0xa0, 0xdb, 0x1d, 0x43, 0xb7, 0x72, 0x4b, 0xdb, 0x80, 0x70,
		0x8b, 0x0a, 0x47, 0x49, 0x60, 0xdb, 0x72, 0xe1, 0xac, 0x0c, 0x2c, 0x9b, 0xd6, 0x3d, 0x78, 0x8f,
		0x70, 0x2d, 0x99, 0x35, 0xd7, 0xf5, 0xb8, 0x3d, 0x7c, 0x53, 0x42, 0xcb, 0xc7, 0x0c, 0xda, 0xdf,
		0xd8, 0x8b, 0xdd, 0xb3, 0xf9, 0xb7, 0xa1, 0x3f, 0x3b, 0xf2, 0x7a, 0xcc, 0x6d, 0x87, 0x3b, 0xa8,
		0x15, 0xf4, 0x6c, 0xd7, 0x75, 0xdc, 0x67, 0x8b, 0xfb, 0x8c, 0x1d, 0x05, 0xbc, 0x77, 0xe4, 0xdb,
		0x3d, 0xa7, 0x63, 0xf5, 0xbe, 0x07, 0xfc, 0x68, 0xe8, 0xf8, 0x8e, 0x02, 0x6e, 0xf3, 0x98, 0x11,
		0x9d, 0x9b, 0x1f, 0x36, 0xc6, 0x83, 0x0a, 0x43, 0x11, 0x49, 0x3f, 0x2d, 0x08, 0x3d, 0x84, 0x21,
		0x87, 0x0c, 0xd4, 0x90, 0x87, 0x18, 0xb2, 0xd0, 0x42, 0x19, 0x52, 0x28, 0x43, 0x09, 0x25, 0x08,
		0x41, 0x6b, 0x5e, 0xc2, 0x50, 0x61, 0x9a, 0x39, 0xce, 0xec, 0x27, 0x9f, 0x3d, 0x89, 0xbc, 0xb0,
		0x49, 0x9b, 0x6e, 0x81, 0x28, 0x45, 0xf3, 0x6e, 0x6c, 0xc1, 0x87, 0x87, 0x47, 0x23, 0xfb, 0x3d,
		0x9a, 0xac, 0x79, 0x2a, 0xfb, 0xdc, 0x53, 0x98, 0xc7, 0xe1, 0x5a, 0x8a, 0x6f, 0x87, 0xe6, 0x95,
		0x13, 0xf0, 0x1a, 0xe7, 0x7e, 0xac, 0x19, 0x1f, 0xa2, 0x92, 0x7a, 0x97, 0x0d, 0xd7, 0x49, 0xcc,
		0xfd, 0x69, 0xb8, 0xc9, 0xce, 0x5c, 0x21, 0xa7, 0x00, 0x99, 0xb7, 0x7e, 0x87, 0xf9, 0xac, 0xf3,
		0x7e, 0xf8, 0x60, 0x6e, 0xbf, 0xdb, 0x15, 0xb9, 0xe4, 0x53, 0xc0, 0xfc, 0x58, 0x1b, 0xe0, 0xa6,
		0x79, 0x15, 0x74, 0xfb, 0x2a, 0xee, 0x3e, 0xc6, 0x0a, 0x36, 0x03, 0xee, 0xf7, 0xdb, 0xdc, 0x1d,
		0x2f, 0xfd, 0x07, 0xde, 0x7b, 0xfc, 0xfb, 0xf0, 0xca, 0x3d, 0xb9, 0x85, 0xb5, 0xfc, 0x5f, 0x56,
		0x4c, 0x49, 0xdc, 0xa9, 0x90, 0x9c, 0x82, 0xe5, 0xcf, 0xb0, 0xf8, 0x0d, 0x97, 0x7c, 0x3b, 0xd3,
		0x1f, 0x3a, 0xae, 0x55, 0xdf, 0x69, 0x1a, 0xe0, 0xb4, 0xda, 0xad, 0x47, 0x1e, 0x61, 0xc5, 0x3f,
		0x6f, 0xda, 0x80, 0xe2, 0x6c, 0x38, 0xf1, 0x37, 0x98, 0xb8, 0x1b, 0x8a, 0xf0, 0x06, 0x22, 0xbc,
		0x61, 0x08, 0x6d, 0x10, 0x62, 0xab, 0xe9, 0xd2, 0x59, 0xef, 0x7d, 0xcc, 0xf6, 0x64, 0xce, 0x37,
		0x4c, 0xc2, 0xf4, 0x20, 0x24, 0xfc, 0xfc, 0x26, 0x3f, 0xb9, 0xf6, 0x45, 0x0b, 0x23, 0x0e, 0x11,
		0xa4, 0x21, 0x8e, 0x30, 0x44, 0x91, 0x85, 0x34, 0xa2, 0x90, 0x46, 0x12, 0x52, 0x08, 0x42, 0x6d,
		0xa7, 0xdb, 0xb4, 0x70, 0xa2, 0x0f, 0xbe, 0xe9, 0x6a, 0x2d, 0x0e, 0x6a, 0xdf, 0x0e, 0x00, 0x70,
		0x0b, 0x70, 0x9b, 0x30, 0xb8, 0x25, 0xe8, 0xce, 0x2e, 0x21, 0x84, 0xa9, 0x74, 0x63, 0x57, 0xe9,
		0xc2, 0x2e, 0x29, 0xbc, 0x49, 0xe8, 0x8b, 0x2a, 0x42, 0x9b, 0xea, 0xe1, 0x31, 0x99, 0xe4, 0xa3,
		0x2e, 0xf5, 0x48, 0x08, 0x69, 0x4a, 0x02, 0x1a, 0x45, 0xf7, 0xf4, 0x34, 0x4d, 0x9f, 0x26, 0xe5,
		0xaa, 0x45, 0xea, 0x7d, 0x14, 0x4e, 0x73, 0x15, 0x4e, 0x71, 0x15, 0x44, 0xff, 0xc5, 0x2c, 0xe7,
		0x93, 0x49, 0x96, 0x73, 0xa3, 0xc3, 0x5c, 0xee, 0x3c, 0x39, 0xcc, 0x37, 0xee, 0xc4, 0xb6, 0x65,
		0x8a, 0x4d, 0x6d, 0xd9, 0xe6, 0xa6, 0x7a, 0x5c, 0xab, 0xe7, 0x3c, 0x48, 0x70, 0x0a, 0x77, 0x74,
		0xe5, 0xcb, 0x6a, 0xb6, 0xaf, 0xcf, 0x1e, 0xb7, 0xbc, 0xb6, 0xd5, 0xf6, 0x5e, 0x7a, 0x3e, 0x0b,
		0x02, 0xd6, 0xb1, 0xba, 0xcc, 0x7e, 0x1a, 0x0e, 0x32, 0x48, 0x50, 0x8d, 0x95, 0x6e, 0xa4, 0xae,
		0xda, 0x40, 0x1d, 0x10, 0x16, 0x10, 0x96, 0x0c, 0xc2, 0x8a, 0x56, 0x44, 0x92, 0xa8, 0x84, 0x94,
		0x31, 0xdc, 0x58, 0x06, 0x6e, 0x94, 0x9d, 0xba, 0x63, 0x80, 0x46, 0x80, 0xc6, 0x98, 0xa0, 0x91,
		0xac, 0x81, 0x78, 0x1e, 0xe1, 0x22, 0x55, 0x83, 0x70, 0x00, 0xc5, 0x04, 0x80, 0xa2, 0x44, 0x47,
		0x72, 0xf9, 0x4e, 0xe4, 0x00, 0x87, 0x00, 0x87, 0x00, 0x87, 0xda, 0xc0, 0x61, 0x11, 0xe0, 0x50,
		0x7a, 0xea, 0x00, 0x0e, 0x01, 0x0e, 0x63, 0x82, 0x43, 0x9a, 0x4e, 0xdc, 0x79, 0x44, 0x86, 0x24,
		0x9d, 0xb6, 0x01, 0x0b, 0x93, 0x80, 0x85, 0xe2, 0xad, 0xbd, 0xe5, 0x5b, 0x7a, 0x4b, 0xb5, 0xf2,
		0x8e, 0xdb, 0xc2, 0xbb, 0x05, 0x68, 0x0a, 0x68, 0x0a, 0x68, 0x0a, 0x68, 0x0a, 0x68, 0x0a, 0x68,
		0xba, 0xeb, 0xd0, 0x94, 0xac, 0x75, 0x75, 0x1e, 0xd1, 0x29, 0x55, 0x6b, 0x6a, 0x00, 0xd4, 0x04,
		0x00, 0xaa, 0x68, 0x23, 0x21, 0xc9, 0x06, 0x42, 0x80, 0x85, 0x80, 0x85, 0x80, 0x85, 0xda, 0x60,
		0x61, 0x15, 0xb0, 0x50, 0x76, 0xea, 0x10, 0x03, 0x09, 0x58, 0x18, 0x17, 0x16, 0x12, 0x34, 0xd0,
		0xc9, 0x23, 0x20, 0x54, 0x6f, 0x90, 0x03, 0x28, 0xa8, 0x0a, 0x05, 0xd3, 0x9b, 0x81, 0x39, 0xfc,
		0xcf, 0x38, 0x71, 0x4c, 0x36, 0x87, 0x72, 0x4d, 0x1e, 0x9f, 0xe3, 0x72, 0xe6, 0x3f, 0xd9, 0xed,
		0x18, 0x35, 0x2c, 0x23, 0xc3, 0x9f, 0xb9, 0x06, 0xa9, 0x6c, 0x48, 0x65, 0x7b, 0xb3, 0x90, 0xc4,
		0xa9, 0xd2, 0xf4, 0x52, 0x31, 0xb2, 0x54, 0x04, 0x59, 0x02, 0x59, 0x12, 0x5b, 0xa6, 0xd1, 0x05,
		0x31, 0x53, 0x77, 0x57, 0xbe, 0xe6, 0x58, 0xa9, 0xbc, 0x8a, 0x0b, 0x57, 0x7a, 0x01, 0xab, 0x2c,
		0x64, 0xf5, 0x05, 0xad, 0x03, 0xca, 0xa1, 0x9e, 0x59, 0xcc, 0x6f, 0x28, 0x6a, 0x08, 0x33, 0x06,
		0x21, 0xd1, 0x6a, 0x70, 0x89, 0x59, 0x48, 0xb7, 0x19, 0x92, 0x2c, 0xf6, 0xa7, 0x6c, 0x24, 0x14,
		0xc6, 0x42, 0x67, 0x34, 0x54, 0xc6, 0x43, 0x6e, 0x44, 0xe4, 0xc6, 0x44, 0x6a, 0x54, 0x72, 0xc6,
		0xa5, 0x20, 0xae, 0x18, 0x4a, 0xc5, 0x03, 0x97, 0x4a, 0x76, 0x52, 0xdd, 0x0c, 0xdf, 0x5a, 0xcf,
		0x89, 0xc2, 0x10, 0x6a, 0x35, 0x05, 0xe5, 0x15, 0x05, 0x52, 0xcd, 0x6f, 0xa5, 0x90, 0xa5, 0x58,
		0x6b, 0x90, 0x5c, 0xd7, 0xa2, 0xd7, 0xb9, 0x88, 0x96, 0x35, 0x99, 0x86, 0xb8, 0xf2, 0x55, 0x94,
		0x0a, 0xe3, 0x3f, 0xf9, 0x7b, 0x25, 0x7b, 0xdb, 0xb9, 0xba, 0x95, 0xa8, 0x5f, 0x24, 0x28, 0xce,
		0x4d, 0x20, 0x6d, 0x6a, 0x70, 0x4c, 0x6b, 0x4e, 0xc4, 0x8b, 0xc6, 0x9d, 0xe7, 0xf3, 0x3b, 0x9b,
		0x7f, 0x53, 0x6c, 0xb5, 0x48, 0x8d, 0x00, 0x74, 0x28, 0xa3, 0xda, 0x41, 0x41, 0x4c, 0xe5, 0xf4,
		0xed, 0xac, 0xc3, 0x3e, 0x75, 0x0a, 0xb1, 0xf4, 0xc2, 0xac, 0xfa, 0x04, 0xca, 0x9c, 0x8b, 0x8d,
		0x6b, 0xd3, 0x29, 0x52, 0x9d, 0x70, 0x14, 0x50, 0x1d, 0x50, 0x1d, 0x50, 0x1d, 0xa1, 0xf5, 0xf2,
		0xd5, 0x0e, 0x98, 0x15, 0x49, 0xbe, 0x96, 0x58, 0x5d, 0xd4, 0x95, 0x8a, 0x9a, 0x0a, 0xef, 0xb9,
		0x8b, 0x0e, 0x62, 0xda, 0x96, 0xf3, 0x74, 0x3e, 0x3d, 0xde, 0x78, 0xfb, 0x8b, 0xf1, 0xcf, 0xa1,
		0xe5, 0xc3, 0x61, 0x27, 0xe7, 0xb0, 0x7b, 0x9e, 0xcf, 0xc5, 0x8b, 0xe4, 0xad, 0x5c, 0x81, 0xf3,
		0xc3, 0xc1, 0x85, 0xc3, 0x85, 0xc3, 0x85, 0x0b, 0xad, 0x97, 0x80, 0xf7, 0xac, 0x39, 0x23, 0x12,
		0x2d, 0xf8, 0xb7, 0xca, 0x9a, 0x2a, 0x50, 0xaf, 0xa0, 0x5e, 0xa5, 0x5e, 0xbd, 0x2a, 0x43, 0xb7,
		0x82, 0x6e, 0xb5, 0x2b, 0xba, 0x55, 0x21, 0x54, 0x50, 0x88, 0xaa, 0x16, 0x42, 0xc3, 0x92, 0xd0,
		0xb0, 0xd6, 0xbc, 0x01, 0xd8, 0x6d, 0xee, 0xe8, 0x91, 0xd6, 0xe8, 0x00, 0xc5, 0x89, 0x12, 0x0f,
		0x5c, 0x9c, 0xe1, 0xd2, 0x53, 0x16, 0x1d, 0x27, 0x9a, 0x51, 0x7e, 0x5e, 0x44, 0xfa, 0x1a, 0x4a,
		0x29, 0x81, 0x2a, 0x0a, 0x20, 0x3a, 0x1a, 0x6e, 0x85, 0x0e, 0xa2, 0xa3, 0xa1, 0xc8, 0xfb, 0x16,
		0x6f, 0x57, 0x44, 0x21, 0xc7, 0x2d, 0x69, 0x5f, 0x24, 0x2e, 0xb4, 0xe9, 0x71, 0x13, 0xa3, 0x26,
		0x67, 0xd2, 0x7e, 0x62, 0x74, 0x79, 0xc2, 0xa1, 0x82, 0x25, 0x38, 0x0a, 0x38, 0x8a, 0xb5, 0xdf,
		0x10, 0xa1, 0x82, 0x10, 0x5f, 0xb5, 0x18, 0x91, 0x36, 0x46, 0x05, 0xf1, 0x15, 0xa1, 0x82, 0x6f,
		0x15, 0x3e, 0x88, 0xad, 0x08, 0x15, 0xdc, 0xcd, 0x57, 0x02, 0xc9, 0x55, 0x70, 0x2c, 0x84, 0x0a,
		0x42, 0x66, 0x45, 0xa8, 0x20, 0x99, 0x12, 0xf9, 0x4e, 0x86, 0x19, 0xf4, 0x5d, 0xce, 0xfc, 0x80,
		0x82, 0x1d, 0x8c, 0x47, 0x52, 0x63, 0x08, 0x45, 0x30, 0x04, 0x30, 0x84, 0x6c, 0x30, 0x04, 0x59,
		0x3a, 0x1e, 0x0d, 0xf0, 0xb5, 0xd7, 0xe9, 0x5b, 0x3e, 0x6b, 0x33, 0xe7, 0x3b, 0xeb, 0xa8, 0xbf,
		0xeb, 0x28, 0x5e, 0x6f, 0x6e, 0x58, 0xc5, 0xd7, 0xa3, 0x46, 0xdc, 0xc9, 0xcc, 0x93, 0xd2, 0x4c,
		0xe9, 0xcd, 0x35, 0x89, 0x6d, 0x9d, 0xc4, 0x7c, 0x93, 0xdd, 0xd3, 0x55, 0xcd, 0x99, 0x68, 0xe3,
		0x56, 0x5c, 0x71, 0xca, 0x42, 0xc0, 0xaa, 0xad, 0xb2, 0x5a, 0xa6, 0x58, 0x72, 0x63, 0x03, 0x3d,
		0x25, 0x18, 0x8a, 0x46, 0x23, 0xa0, 0x83, 0xe4, 0x5a, 0x34, 0x83, 0x05, 0xc2, 0x4a, 0xc4, 0x27,
		0xb5, 0x13, 0x56, 0x7d, 0xc4, 0x95, 0x50, 0x53, 0xd0, 0xa2, 0x2d, 0x2c, 0xca, 0x3d, 0xa7, 0xe5,
		0x72, 0xf5, 0xa4, 0x5c, 0x2e, 0x9c, 0x1c, 0x9f, 0x14, 0xce, 0x2a, 0x95, 0x62, 0xb5, 0x58, 0xc1,
		0x5b, 0x24, 0xf1, 0x96, 0x74, 0xa3, 0xb4, 0xb6, 0x44, 0xb7, 0x14, 0x56, 0xf1, 0x08, 0x3a, 0x05,
		0xcc, 0xe5, 0xc4, 0x68, 0x2c, 0x1c, 0x12, 0x48, 0x0c, 0x48, 0x0c, 0x48, 0x0c, 0x48, 0x0c, 0x48,
		0x0c, 0x48, 0x0c, 0x48, 0x0c, 0x48, 0x6c, 0xf7, 0x91, 0x58, 0x26, 0x63, 0x8a, 0x69, 0x42, 0x66,
		0xc3, 0x10, 0xb2, 0x23, 0x45, 0x51, 0x7c, 0xf4, 0x7d, 0xb8, 0xdf, 0x6f, 0xf3, 0x71, 0xe0, 0xab,
		0xf9, 0xc0, 0x7b, 0x8f, 0xf7, 0x01, 0xef, 0x3d, 0x36, 0x26, 0xb7, 0x7a, 0xbc, 0x98, 0xdc, 0x24,
		0xc5, 0xe7, 0x0c, 0x1d, 0x16, 0x38, 0xcf, 0xae, 0xcd, 0x59, 0xc7, 0xfa, 0x1a, 0x96, 0xce, 0xb5,
		0xec, 0x4e, 0xc7, 0x67, 0x01, 0xc1, 0xc1, 0xc3, 0xea, 0xa1, 0x11, 0xab, 0x84, 0x93, 0x88, 0x2d,
		0x01, 0xe6, 0xac, 0xc6, 0x2a, 0xbd, 0xd8, 0x6d, 0x45, 0xf3, 0x99, 0x35, 0xa1, 0xe2, 0xa9, 0x5a,
		0x92, 0x3f, 0x67, 0xbe, 0xab, 0x8c, 0x82, 0xcd, 0xcf, 0x05, 0xeb, 0xcc, 0xb6, 0x9e, 0x6a, 0xd6,
		0x87, 0xd6, 0xcf, 0xd2, 0x60, 0xff, 0x7c, 0xfe, 0xe7, 0x83, 0x9f, 0x95, 0x81, 0xfc, 0x7b, 0x6e,
		0xa9, 0x3c, 0xe0, 0xed, 0x43, 0xe3, 0x9f, 0x64, 0x4f, 0xf9, 0xe7, 0xe6, 0xc7, 0xfc, 0xcd, 0x44,
		0x8c, 0xc9, 0x56, 0x69, 0x54, 0x64, 0x66, 0xf7, 0x1f, 0x2e, 0xca, 0xc5, 0xd3, 0x53, 0xe3, 0xfd,
		0x7d, 0xe3, 0xf2, 0x63, 0xdd, 0xba, 0x6e, 0xbc, 0x37, 0x3a, 0x1e, 0x2f, 0x76, 0x1e, 0x78, 0xef,
		0xce, 0xf3, 0xf9, 0x65, 0xb4, 0xa5, 0x8d, 0xea, 0xcc, 0x23, 0xe2, 0x44, 0x83, 0x26, 0x22, 0xfa,
		0x0e, 0x10, 0x7f, 0x92, 0x08, 0x2e, 0xa4, 0xab, 0x1a, 0xb2, 0x66, 0x6c, 0x20, 0x43, 0x20, 0x43,
		0x20, 0x43, 0xa1, 0xf5, 0x12, 0xf0, 0xde, 0x5b, 0x33, 0xa2, 0x2a, 0x22, 0x52, 0x55, 0x18, 0x62,
		0xda, 0x21, 0xd8, 0x3c, 0x2e, 0x9d, 0x54, 0x4f, 0x55, 0xbe, 0xce, 0xef, 0x76, 0x30, 0x1d, 0x4e,
		0x6d, 0xd9, 0xec, 0x78, 0xbc, 0x7d, 0x01, 0xf1, 0xf6, 0x5b, 0x56, 0x62, 0xa7, 0x9d, 0xd2, 0x8a,
		0x65, 0x94, 0x37, 0x49, 0x3b, 0x96, 0x02, 0x0f, 0x02, 0x0f, 0x02, 0x0f, 0x02, 0x0f, 0x8a, 0xc3,
		0x83, 0x68, 0x92, 0x75, 0xdf, 0x0e, 0x08, 0xc6, 0x03, 0xc6, 0x03, 0xc6, 0x23, 0xb4, 0x5e, 0x90,
		0xb7, 0x0b, 0x1e, 0x91, 0x1f, 0x1e, 0x51, 0x2e, 0x9d, 0x95, 0xcf, 0xaa, 0x27, 0xa5, 0xb3, 0x0a,
		0xc8, 0x04, 0xc8, 0xc4, 0x4e, 0x93, 0x09, 0x24, 0xf1, 0x6e, 0x9b, 0x4a, 0x20, 0xa1, 0x37, 0x01,
		0x22, 0x11, 0x16, 0x7c, 0x76, 0xfb, 0x2f, 0xa4, 0x64, 0x22, 0x1a, 0x14, 0x84, 0x02, 0x84, 0x02,
		0x84, 0x42, 0x98, 0x50, 0x14, 0xab, 0x5b, 0x3e, 0x30, 0x01, 0xa1, 0x00, 0xa1, 0x48, 0x84, 0x50,
		0x54, 0x2b, 0x95, 0x63, 0x70, 0x09, 0x70, 0x89, 0xdd, 0xe6, 0x12, 0xc3, 0x9f, 0xc0, 0x25, 0xb6,
		0xc9, 0x25, 0xc2, 0x37, 0x00, 0x2e, 0x91, 0x00, 0x97, 0xd0, 0x12, 0x9a, 0x85, 0xde, 0x4e, 0x60,
		0x15, 0x60, 0x15, 0x0a, 0xeb, 0x05, 0xbd, 0x9d, 0x12, 0x67, 0x19, 0x28, 0x37, 0x9a, 0x1a, 0x96,
		0x81, 0xde, 0x4e, 0xe0, 0x18, 0xe0, 0x18, 0xe0, 0x18, 0xe0, 0x18, 0x99, 0xe7, 0x18, 0xbe, 0xe7,
		0x71, 0x2d, 0x69, 0xc1, 0x73, 0x03, 0x83, 0x61, 0x80, 0x61, 0x80, 0x61, 0x08, 0xad, 0x17, 0x24,
		0x05, 0x0b, 0xfa, 0x5b, 0x24, 0x05, 0x03, 0x0f, 0x6a, 0xc4, 0x83, 0xf7, 0x9e, 0x07, 0x3c, 0xb8,
		0x55, 0x3c, 0x18, 0xbe, 0x01, 0xe0, 0xc1, 0x04, 0xf0, 0xa0, 0x16, 0xcd, 0x79, 0x7e, 0x64, 0x20,
		0x42, 0x20, 0x42, 0x20, 0x42, 0xa1, 0xf5, 0x82, 0x64, 0x60, 0xa1, 0xb1, 0x10, 0x73, 0x13, 0x67,
		0x3c, 0xa8, 0xe1, 0xca, 0xaf, 0x02, 0xc9, 0xc0, 0x19, 0xc0, 0x51, 0xe0, 0x3f, 0xe0, 0x3f, 0xe0,
		0x3f, 0xe0, 0x3f, 0x4b, 0x5f, 0xc7, 0x93, 0xe7, 0xff, 0x65, 0xfb, 0x1d, 0x8b, 0xfb, 0xb6, 0x1b,
		0x38, 0x81, 0x33, 0xf4, 0xc0, 0x04, 0x6a, 0xf8, 0xf2, 0x61, 0xc1, 0x7c, 0xc0, 0x7c, 0xc0, 0x7c,
		0x84, 0xd6, 0x0b, 0x45, 0xc5, 0x78, 0x82, 0x4a, 0xf1, 0xa0, 0x14, 0xa0, 0x14, 0xc9, 0x50, 0x0a,
		0x7d, 0x15, 0xde, 0xc1, 0x30, 0xc0, 0x30, 0x52, 0xc5, 0x30, 0x3e, 0x8c, 0x40, 0x52, 0x33, 0xc4,
		0x48, 0x2a, 0x08, 0x09, 0x2c, 0x43, 0x81, 0x65, 0x2c, 0x79, 0x0b, 0x60, 0x1a, 0x1a, 0x98, 0xc6,
		0xb8, 0xa3, 0x80, 0x22, 0xb1, 0x08, 0x47, 0x01, 0x8f, 0x00, 0x8f, 0x00, 0x8f, 0x10, 0x5a, 0x2f,
		0x5f, 0xed, 0x80, 0x59, 0x51, 0xbb, 0x10, 0xcb, 0x67, 0x4f, 0x14, 0xa1, 0x35, 0x27, 0x6a, 0xa1,
		0x35, 0xe3, 0x8e, 0x27, 0x6d, 0xcb, 0x79, 0x3a, 0x9f, 0xe9, 0x6a, 0xf2, 0xe6, 0x17, 0xe3, 0x9f,
		0x43, 0xcb, 0x4f, 0xb1, 0x7f, 0xa3, 0x2b, 0x7f, 0x80, 0x9a, 0x07, 0xf0, 0x73, 0xf0, 0x73, 0x72,
		0xeb, 0x05, 0x35, 0x0f, 0x20, 0x96, 0xa0, 0xe6, 0x01, 0xd4, 0x11, 0xa8, 0x23, 0x59, 0x57, 0x47,
		0xa0, 0x85, 0x24, 0xaf, 0x85, 0x40, 0xf9, 0xd0, 0xc6, 0x0c, 0xe8, 0x02, 0x4b, 0x51, 0xc1, 0x00,
		0x1c, 0x01, 0x1c, 0x41, 0x61, 0xbd, 0xa0, 0x82, 0x41, 0xe2, 0x9c, 0x01, 0x15, 0x0c, 0x52, 0xc3,
		0x19, 0x50, 0xc1, 0x00, 0x8c, 0x21, 0xa3, 0x8c, 0xa1, 0x51, 0xaf, 0xd7, 0x8d, 0xd3, 0x42, 0xe9,
		0xb0, 0x78, 0x69, 0x14, 0x4f, 0x0e, 0x8b, 0xc7, 0x87, 0xc5, 0x82, 0x31, 0xc4, 0xad, 0x46, 0xa3,
		0xc3, 0x5c, 0xee, 0x3c, 0x39, 0xcc, 0x37, 0xee, 0xd4, 0x90, 0x11, 0xf8, 0xc3, 0x3a, 0xc8, 0x20,
		0xf6, 0x06, 0xc0, 0x26, 0x74, 0xb1, 0x89, 0xb0, 0xdd, 0x3b, 0x11, 0x95, 0x18, 0x8d, 0x05, 0x1e,
		0x01, 0x1e, 0x01, 0x1e, 0x21, 0xb4, 0x5e, 0x9c, 0xd0, 0xe5, 0xf1, 0x57, 0xa2, 0xc3, 0x54, 0x15,
		0xf6, 0xd0, 0x18, 0x7f, 0x95, 0xf7, 0x76, 0x40, 0xb0, 0xfc, 0x26, 0x0f, 0xf8, 0xd0, 0xbc, 0x7b,
		0xbc, 0xbb, 0xbd, 0x6f, 0x3e, 0x3e, 0x34, 0x6b, 0xcd, 0xba, 0xea, 0x1a, 0x0c, 0x01, 0x68, 0xa0,
		0x8c, 0x27, 0x68, 0x30, 0xc5, 0xdc, 0x73, 0xbe, 0xbf, 0xba, 0xbd, 0xf8, 0xa3, 0x71, 0xf3, 0xd1,
		0x4c, 0x03, 0xea, 0x27, 0x7e, 0xb6, 0xcb, 0xc6, 0x43, 0xed, 0xfd, 0x55, 0xfd, 0x72, 0x17, 0x9f,
		0xed, 0xc3, 0xed, 0xfd, 0x3f, 0x6a, 0xf7, 0x97, 0x3b, 0xfa, 0xe6, 0xae, 0xea, 0xb5, 0xfb, 0x9b,
		0x5d, 0x7d, 0xb6, 0xc6, 0x43, 0xb3, 0x4e, 0xf4, 0x70, 0x4a, 0x23, 0xb4, 0x32, 0xb2, 0x6b, 0xe5,
		0xfd, 0x34, 0xe8, 0x41, 0x01, 0xa4, 0x82, 0xd2, 0xad, 0x43, 0x6f, 0xb1, 0x26, 0x1e, 0x4c, 0x4e,
		0x03, 0x93, 0xf3, 0xbd, 0x2e, 0x01, 0x87, 0x0b, 0x47, 0x01, 0x7b, 0x03, 0x7b, 0x03, 0x7b, 0x03,
		0x7b, 0x5b, 0xca, 0xde, 0xee, 0x6f, 0xaf, 0x76, 0x98, 0xbc, 0xd5, 0xae, 0x9a, 0xf5, 0xfb, 0x9b,
		0x21, 0x3f, 0xdd, 0x41, 0x9c, 0xfc, 0xbe, 0x76, 0xf1, 0xc7, 0xa7, 0xbb, 0x9d, 0xe4, 0xa5, 0xf5,
		0x87, 0xc6, 0xc7, 0xe1, 0x6b, 0xdb, 0x49, 0x66, 0x7a, 0x7f, 0x7b, 0xdb, 0x04, 0xb5, 0x01, 0xb5,
		0x89, 0x8e, 0xad, 0x4e, 0x0b, 0xa5, 0xa2, 0x75, 0xfd, 0xd0, 0xbc, 0x0b, 0x01, 0xb6, 0xc3, 0x18,
		0x1b, 0xfe, 0xe6, 0x3a, 0x18, 0x81, 0xec, 0x7b, 0x79, 0x0c, 0x07, 0x72, 0xb3, 0x0e, 0xdc, 0xc4,
		0x9c, 0x7a, 0xd0, 0x1b, 0xd2, 0x2b, 0x04, 0x3d, 0x81, 0x59, 0x73, 0x5d, 0x8f, 0xdb, 0xdc, 0xf1,
		0xe4, 0x22, 0x4f, 0xcc, 0xa0, 0xfd, 0x8d, 0xbd, 0xd8, 0xbd, 0x28, 0xa1, 0xa8, 0xc7, 0xdc, 0x76,
		0x48, 0x4d, 0xac, 0xa0, 0x67, 0xbb, 0xae, 0xe3, 0x3e, 0x5b, 0xdc, 0x67, 0xec, 0x28, 0xe0, 0xbd,
		0x23, 0x7f, 0xf8, 0x9f, 0x99, 0x64, 0xa3, 0x69, 0x9a, 0x51, 0x20, 0xce, 0x74, 0xe3, 0x4f, 0x4b,
		0xbc, 0x4f, 0xc6, 0x9c, 0xb8, 0xa1, 0x5d, 0x0a, 0x26, 0x43, 0x9a, 0x57, 0x4e, 0xc0, 0x6b, 0x9c,
		0xfb, 0x42, 0x33, 0x6c, 0x5e, 0x3b, 0x6e, 0xbd, 0xcb, 0x86, 0xd6, 0x24, 0x18, 0xdf, 0x61, 0x5e,
		0xdb, 0x3f, 0x66, 0xae, 0x54, 0xcb, 0xea, 0x37, 0x6f, 0xfd, 0x0e, 0xf3, 0x59, 0xe7, 0xfd, 0xf0,
		0xa9, 0xdd, 0x7e, 0xb7, 0x2b, 0x73, 0xe9, 0xa7, 0x80, 0xf9, 0x42, 0x01, 0x25, 0x71, 0x5f, 0x86,
		0xe4, 0xea, 0xa5, 0x59, 0xb5, 0x02, 0xde, 0xd8, 0x0c, 0xb8, 0xdf, 0x6f, 0x73, 0x77, 0x42, 0x0f,
		0x78, 0xef, 0xf1, 0x3e, 0xe0, 0xbd, 0xc7, 0x46, 0x34, 0xd6, 0x1e, 0xcd, 0x4a, 0x5e, 0xff, 0x89,
		0x0d, 0xd3, 0x2a, 0x3a, 0x9d, 0x2a, 0xd3, 0xb8, 0xfe, 0x81, 0x57, 0x3f, 0xc6, 0x9a, 0x47, 0x30,
		0xe3, 0x9d, 0xcc, 0xcf, 0xc4, 0x22, 0x6e, 0xd6, 0x35, 0x23, 0x8e, 0xb9, 0xe1, 0x63, 0x91, 0x1c,
		0x53, 0xda, 0xf0, 0x41, 0x01, 0xd9, 0x45, 0x5c, 0x5e, 0x11, 0x05, 0x21, 0xd2, 0x72, 0x89, 0x34,
		0x82, 0x90, 0x92, 0x3f, 0xd4, 0x16, 0xf5, 0xa5, 0x13, 0xcf, 0xf1, 0x9a, 0xe3, 0x2a, 0xa7, 0xa2,
		0x6d, 0x29, 0xa6, 0x79, 0xbe, 0xf3, 0xd7, 0xc7, 0xdd, 0x4f, 0x84, 0x74, 0x40, 0x61, 0xdd, 0x4f,
		0x46, 0xe7, 0x93, 0xd7, 0xf5, 0x64, 0x51, 0xb0, 0xb2, 0x6e, 0xa7, 0x0c, 0x69, 0x95, 0x74, 0x39,
		0x5a, 0x84, 0x21, 0xac, 0xb3, 0x29, 0x76, 0x6f, 0x90, 0xe9, 0xd6, 0x20, 0xdd, 0x9d, 0x81, 0xb4,
		0x1b, 0x43, 0x4b, 0xe4, 0x0b, 0xab, 0x74, 0x5b, 0x20, 0xee, 0xae, 0xd0, 0x22, 0x5d, 0x2f, 0x0a,
		0x24, 0x5e, 0x81, 0xb4, 0x4b, 0x70, 0x85, 0x65, 0xb1, 0xa4, 0x27, 0x87, 0xc5, 0xd2, 0x61, 0xc5,
		0xf8, 0xe4, 0x3a, 0xff, 0xdb, 0x67, 0x86, 0x33, 0x8e, 0x64, 0x6c, 0x87, 0x20, 0xc4, 0xf0, 0x9e,
		0x0c, 0xdb, 0x18, 0xb9, 0x55, 0x09, 0xea, 0xab, 0x4a, 0xc9, 0x29, 0x29, 0x38, 0x19, 0xe5, 0x5e,
		0x19, 0x12, 0x1a, 0x7b, 0x22, 0x75, 0x13, 0x50, 0x6a, 0x2b, 0xd8, 0x23, 0xb0, 0x13, 0xf3, 0x4d,
		0x05, 0x73, 0xe9, 0xcd, 0x5d, 0x30, 0xf7, 0x0b, 0xbb, 0x3b, 0x76, 0x77, 0xb2, 0xdd, 0x9d, 0xa0,
		0x12, 0xbf, 0x44, 0x85, 0x05, 0x95, 0x4a, 0xfb, 0x2a, 0x95, 0xf5, 0x25, 0xb3, 0xb2, 0x24, 0xb6,
		0x25, 0x95, 0xac, 0x2b, 0xd5, 0xca, 0x0c, 0x64, 0x89, 0x3c, 0xea, 0x89, 0x3b, 0x32, 0x61, 0x14,
		0x2a, 0x59, 0x52, 0x14, 0x95, 0xec, 0xd3, 0x34, 0x7d, 0xdb, 0xdd, 0x25, 0xf3, 0x80, 0x15, 0x47,
		0x59, 0x2f, 0x27, 0xc6, 0xfb, 0xd0, 0x09, 0x12, 0x25, 0x1e, 0xe5, 0x0b, 0x25, 0xc6, 0x98, 0xc2,
		0x5c, 0xe2, 0x43, 0xd5, 0xde, 0xa4, 0x44, 0xbd, 0x48, 0x81, 0x17, 0x81, 0x17, 0xa1, 0x06, 0x41,
		0x0d, 0xca, 0xd3, 0x0e, 0xbf, 0x26, 0x08, 0x5a, 0xb9, 0x0f, 0xcc, 0xee, 0x6f, 0xee, 0xf1, 0x67,
		0x0f, 0xfb, 0xba, 0x4c, 0x8f, 0x49, 0xaa, 0x9e, 0x92, 0xd8, 0xd9, 0xb1, 0xb3, 0x43, 0x09, 0x82,
		0x12, 0x04, 0x25, 0x08, 0x4a, 0x10, 0x94, 0x20, 0xe0, 0x44, 0xe0, 0xc4, 0x54, 0xe1, 0xc4, 0x71,
		0xd3, 0x3c, 0xc7, 0x7d, 0xb6, 0x3a, 0xac, 0x6b, 0x4b, 0xe0, 0xc3, 0x85, 0x11, 0x80, 0x0b, 0x81,
		0x0b, 0x13, 0xc6, 0x85, 0x7d, 0xc7, 0xe5, 0xa7, 0x12, 0x20, 0xb0, 0xb2, 0xb3, 0x60, 0xac, 0x0c,
		0x30, 0x26, 0x3b, 0x75, 0xc7, 0x40, 0x62, 0x40, 0x62, 0x4b, 0xdd, 0xcc, 0xe2, 0x81, 0x52, 0x65,
		0x72, 0xa0, 0x34, 0xee, 0xe8, 0x65, 0x5c, 0x0a, 0x6c, 0x81, 0xf9, 0x02, 0x62, 0xb1, 0x27, 0x2f,
		0x97, 0x38, 0xec, 0x1b, 0xeb, 0x76, 0x3d, 0x8b, 0x3b, 0x02, 0xfd, 0xca, 0xa2, 0x65, 0x39, 0x73,
		0x2d, 0xb0, 0x17, 0xb0, 0x17, 0xb0, 0xd7, 0x96, 0xb1, 0x57, 0x11, 0xd8, 0x4b, 0x7a, 0xea, 0x80,
		0xbd, 0x80, 0xbd, 0x62, 0x62, 0xaf, 0xea, 0x04, 0x3e, 0xfc, 0x3e, 0xdc, 0xff, 0x8c, 0xa6, 0xf3,
		0x82, 0x60, 0xf9, 0x78, 0xc0, 0x6b, 0xd9, 0xcc, 0xe5, 0x13, 0x75, 0x79, 0xdd, 0x8e, 0x15, 0xb6,
		0xbb, 0x97, 0x40, 0x5d, 0xd3, 0x6b, 0x63, 0xda, 0xdc, 0xf4, 0x1c, 0x28, 0xbe, 0xd5, 0x98, 0xd5,
		0x78, 0x6f, 0xa6, 0x05, 0xe4, 0x07, 0xe4, 0x07, 0xe4, 0x07, 0xe4, 0x07, 0xe4, 0x07, 0xe4, 0xb7,
		0xeb, 0xc8, 0xaf, 0x58, 0x32, 0xc2, 0xd6, 0xf9, 0x2f, 0x0e, 0x37, 0x7e, 0xf7, 0xba, 0x1d, 0xe3,
		0x42, 0x60, 0x1b, 0xce, 0x3b, 0xf8, 0x5b, 0x31, 0x79, 0xf9, 0xc5, 0x7f, 0x92, 0xa2, 0x5b, 0x74,
		0x29, 0x90, 0x17, 0x90, 0x17, 0x90, 0xd7, 0x96, 0x91, 0x17, 0x82, 0xcf, 0xa4, 0xa7, 0xae, 0x54,
		0xa9, 0x00, 0x7a, 0x01, 0x7a, 0x2d, 0xf3, 0x33, 0x6b, 0x82, 0xa7, 0x86, 0xd0, 0x01, 0x92, 0xdb,
		0x8a, 0x7d, 0x25, 0xce, 0xbc, 0xe5, 0x12, 0x70, 0x75, 0xed, 0x80, 0x5b, 0xdc, 0xeb, 0x79, 0x5d,
		0xef, 0xf9, 0xd5, 0x6a, 0x7f, 0x1b, 0xef, 0x31, 0x82, 0xd8, 0x6b, 0xe9, 0x28, 0x80, 0x61, 0x80,
		0x61, 0x09, 0xc3, 0xb0, 0x21, 0xfc, 0xe7, 0x4e, 0xfb, 0x3f, 0x41, 0xb5, 0x2c, 0x01, 0xc6, 0x44,
		0xf2, 0x0c, 0x3f, 0xb9, 0xa3, 0x0d, 0xd6, 0x74, 0x6d, 0xd7, 0x0b, 0x58, 0xdb, 0x73, 0x3b, 0x42,
		0xb9, 0x8d, 0x00, 0x73, 0x79, 0x91, 0xd1, 0x94, 0x8a, 0x9e, 0x02, 0xdd, 0x69, 0xdb, 0xf9, 0x5e,
		0xec, 0x1f, 0x96, 0x2d, 0xb3, 0xd9, 0x4d, 0x2e, 0xc4, 0xfe, 0x86, 0xfd, 0x0d, 0x32, 0xc3, 0x96,
		0x77, 0xa6, 0x2a, 0x76, 0x26, 0xd9, 0xa9, 0x43, 0x82, 0x1b, 0x54, 0x86, 0xe5, 0x6e, 0x66, 0xf1,
		0x8c, 0xe2, 0x74, 0x12, 0xa0, 0x72, 0x6d, 0xff, 0x30, 0x6a, 0x28, 0x82, 0xb9, 0x74, 0x57, 0x89,
		0x31, 0x6d, 0xb9, 0x44, 0x5a, 0x61, 0x95, 0x82, 0xb6, 0x17, 0x48, 0xc4, 0xf4, 0x4c, 0x2f, 0x05,
		0xda, 0x02, 0xda, 0xda, 0x02, 0xda, 0x3a, 0x2e, 0x49, 0xc0, 0xad, 0x13, 0x08, 0x01, 0x80, 0x5b,
		0x0b, 0x70, 0xab, 0x74, 0x56, 0x3e, 0xab, 0x9e, 0x94, 0xce, 0x40, 0xff, 0x01, 0xbb, 0x96, 0xfa,
		0x9b, 0x35, 0x87, 0x14, 0xf7, 0x9e, 0xc7, 0x2f, 0xe2, 0x6f, 0x83, 0xf9, 0xc2, 0x5d, 0x71, 0xe6,
		0x2d, 0xbf, 0xc0, 0xab, 0xe7, 0xf9, 0xb2, 0xc0, 0x2b, 0xbc, 0x14, 0xc0, 0x0b, 0xc0, 0x6b, 0x0b,
		0xc0, 0xab, 0x58, 0xd5, 0x5c, 0x43, 0x0a, 0xc0, 0x2b, 0x27, 0xc0, 0xab, 0x5a, 0xa9, 0x1c, 0x03,
		0x73, 0x01, 0x73, 0xc9, 0x60, 0xae, 0xbb, 0xf8, 0x3b, 0x20, 0x30, 0xd7, 0xdb, 0x79, 0xcb, 0x25,
		0xe6, 0x7a, 0x13, 0x05, 0x23, 0x51, 0xb8, 0x7b, 0x61, 0x04, 0x20, 0x30, 0x20, 0xb0, 0x84, 0x11,
		0x58, 0x98, 0x46, 0xc9, 0x7c, 0xed, 0x61, 0x34, 0x00, 0x61, 0x39, 0x01, 0x61, 0x08, 0x83, 0x01,
		0x26, 0x23, 0xc0, 0x64, 0x4d, 0xaf, 0x77, 0x21, 0xb4, 0x2b, 0x02, 0x95, 0x2d, 0xce, 0xdc, 0xee,
		0xe1, 0xb2, 0x74, 0xf7, 0x9a, 0x8e, 0xd1, 0x53, 0x7e, 0x4d, 0x9b, 0xe9, 0x3d, 0x81, 0x67, 0x8a,
		0xfb, 0x2c, 0xc2, 0xcf, 0x60, 0xae, 0x6d, 0x76, 0xbd, 0xac, 0xa3, 0xf8, 0xf2, 0xe7, 0x5d, 0x7c,
		0x9a, 0xf9, 0xdf, 0xbc, 0x79, 0xae, 0x4d, 0xcf, 0x23, 0xf2, 0x1c, 0x4b, 0x1e, 0x61, 0xf1, 0xab,
		0xcf, 0x7f, 0xeb, 0xe9, 0x77, 0x9b, 0xf9, 0x5e, 0x66, 0xf0, 0x1a, 0x70, 0xf6, 0xb2, 0xf0, 0x7d,
		0xa6, 0x35, 0xd1, 0x47, 0xff, 0xfe, 0xe6, 0x49, 0x96, 0xb7, 0xef, 0x5e, 0x89, 0xc2, 0xd7, 0xa1,
		0xed, 0x39, 0x54, 0xfd, 0xba, 0xcc, 0x13, 0x6e, 0xf2, 0x74, 0xb1, 0x51, 0x72, 0x6c, 0x37, 0xb5,
		0x80, 0x7a, 0x5f, 0x97, 0xf8, 0x99, 0xf5, 0xef, 0x7a, 0x55, 0x7b, 0x6c, 0xd3, 0xb6, 0xed, 0xd5,
		0x4f, 0x32, 0x99, 0x8b, 0xe1, 0x87, 0x56, 0x7c, 0xb5, 0xf5, 0x9d, 0xd3, 0x37, 0x12, 0xa1, 0x38,
		0xc4, 0x67, 0xf6, 0x95, 0xac, 0xfe, 0x26, 0x22, 0x9b, 0x90, 0x30, 0x91, 0x11, 0xde, 0x51, 0xde,
		0xbe, 0xb2, 0xe1, 0xf7, 0x26, 0x72, 0x43, 0x9b, 0x3a, 0x9d, 0x9b, 0x76, 0x3b, 0x64, 0x18, 0x8e,
		0xfb, 0x1c, 0xbf, 0x4b, 0xfe, 0xcc, 0x35, 0xc4, 0xad, 0xf2, 0x0b, 0x7a, 0x5a, 0xe5, 0xaf, 0x5f,
		0x08, 0xb2, 0xa8, 0x64, 0xfb, 0xad, 0xf2, 0xd7, 0x2e, 0x14, 0x9a, 0x3d, 0x39, 0x76, 0xab, 0xfc,
		0xf6, 0xe4, 0x1d, 0x0a, 0x8a, 0x2c, 0xe3, 0xeb, 0xc4, 0xa4, 0x95, 0x62, 0x4a, 0xa5, 0x95, 0x78,
		0x0b, 0x6d, 0xf7, 0xa4, 0x95, 0x58, 0x0b, 0x51, 0x8f, 0xb4, 0x12, 0x77, 0x81, 0x2e, 0xf1, 0x78,
		0xd6, 0x0b, 0xe3, 0xdf, 0xbc, 0x8e, 0xf8, 0xfc, 0x2f, 0x3a, 0xc2, 0xc9, 0x50, 0x82, 0xd3, 0x28,
		0xa6, 0x14, 0x4a, 0x2f, 0x6b, 0x95, 0xe5, 0xad, 0xbe, 0xcc, 0x75, 0xb0, 0x3e, 0xa9, 0x65, 0xaf,
		0x97, 0xf2, 0x89, 0x9a, 0x81, 0x24, 0xa7, 0x13, 0x7c, 0xe3, 0xc2, 0xca, 0xe3, 0xc2, 0xfb, 0xee,
		0xbb, 0x43, 0xd0, 0x2f, 0xf1, 0xba, 0x27, 0xbe, 0xfa, 0x4c, 0xe2, 0xda, 0xf1, 0xd7, 0xfe, 0x2c,
		0xf5, 0x5a, 0xe4, 0x96, 0xd7, 0xdc, 0x43, 0x8f, 0x9a, 0xe5, 0xf3, 0x57, 0x9f, 0x3d, 0x49, 0x2e,
		0xb2, 0xb9, 0x29, 0xa8, 0x28, 0x8c, 0xd1, 0x18, 0x7f, 0x95, 0xf7, 0x76, 0x20, 0x6f, 0x3b, 0x0b,
		0x0f, 0x58, 0xab, 0xd5, 0x1e, 0xaf, 0xeb, 0xcd, 0xdf, 0x6f, 0x2f, 0x1f, 0x9b, 0xff, 0xba, 0xab,
		0x2b, 0x3c, 0xe4, 0x54, 0x5d, 0x0c, 0xa4, 0xdf, 0x18, 0xcd, 0xdb, 0x5b, 0xfa, 0xa0, 0x57, 0xb7,
		0x17, 0xb5, 0x2b, 0x53, 0x79, 0xcc, 0xc1, 0xbb, 0xb4, 0x3d, 0xd8, 0x7d, 0xed, 0xb2, 0xf1, 0xe9,
		0xe1, 0xb1, 0x76, 0xb5, 0x93, 0x4f, 0xd7, 0xac, 0x5d, 0xd4, 0x2e, 0xa8, 0x9e, 0x4e, 0x69, 0x84,
		0xd6, 0x5e, 0xb2, 0xf7, 0x95, 0x7c, 0x17, 0x04, 0x4e, 0x2f, 0xe0, 0xfe, 0x66, 0x4e, 0x17, 0xcb,
		0xdf, 0x9d, 0xee, 0x25, 0x33, 0x5f, 0x2d, 0xad, 0x7b, 0xe7, 0x95, 0x13, 0xf0, 0x1a, 0xe7, 0xbe,
		0xdc, 0xfe, 0x79, 0xed, 0xb8, 0xf5, 0x2e, 0x1b, 0xa2, 0x03, 0xc9, 0xa3, 0x11, 0xf3, 0xda, 0xfe,
		0x31, 0x33, 0x02, 0xcd, 0xc1, 0x8d, 0x79, 0xeb, 0x77, 0x98, 0xcf, 0x3a, 0xef, 0x5f, 0xe5, 0x71,
		0x58, 0x84, 0x0c, 0x02, 0xe6, 0xcb, 0x42, 0x30, 0x45, 0x2c, 0xf8, 0x16, 0x0f, 0x7a, 0xa3, 0xa7,
		0xb2, 0xbe, 0xbe, 0xaa, 0x2c, 0x5f, 0x2a, 0x5c, 0xb8, 0x80, 0x0d, 0xc3, 0x99, 0x4a, 0xc8, 0x26,
		0x06, 0x2a, 0x8b, 0xe2, 0xd3, 0xf0, 0x8b, 0x8e, 0x1e, 0x5d, 0xab, 0x69, 0x09, 0x4a, 0xfd, 0x0b,
		0xd7, 0xbf, 0x3e, 0x7b, 0xdc, 0xf2, 0xda, 0x56, 0xdb, 0x7b, 0xe9, 0xf9, 0x2c, 0x08, 0x58, 0xc7,
		0xea, 0x32, 0xfb, 0x69, 0x38, 0x98, 0xae, 0x33, 0x12, 0x5a, 0xda, 0x2a, 0x39, 0x01, 0xeb, 0x74,
		0xf6, 0x50, 0xed, 0x3e, 0x1a, 0xff, 0x65, 0xdb, 0xf6, 0xd1, 0x94, 0x9e, 0x1e, 0x8d, 0x55, 0x96,
		0x04, 0xc3, 0x6f, 0xd8, 0xf7, 0xb1, 0xdf, 0x12, 0xd4, 0x83, 0xc6, 0xd7, 0x41, 0x0f, 0x82, 0x1e,
		0x94, 0x8c, 0x1e, 0x14, 0x2e, 0x38, 0x79, 0x0d, 0x68, 0x74, 0xb9, 0x9c, 0xee, 0x53, 0x84, 0xee,
		0x03, 0xdd, 0x47, 0xcf, 0x06, 0x2b, 0x6a, 0x06, 0xd1, 0x85, 0x82, 0x3a, 0xfe, 0xca, 0xe5, 0x22,
		0xa4, 0xeb, 0x13, 0x19, 0x88, 0xb2, 0xa1, 0x50, 0x18, 0x0c, 0x9d, 0xe1, 0x50, 0x82, 0x65, 0x52,
		0x43, 0xd2, 0x02, 0x98, 0xc9, 0x0c, 0x6b, 0x2b, 0xf4, 0x5b, 0xda, 0xe0, 0xe6, 0xf7, 0xa1, 0x51,
		0xcf, 0x76, 0x32, 0x95, 0x6f, 0x66, 0x4c, 0xc5, 0x17, 0x23, 0x77, 0x52, 0x41, 0x6e, 0x98, 0x94,
		0x06, 0x4a, 0x6f, 0xa8, 0xd4, 0x06, 0xab, 0xcd, 0x70, 0xb5, 0x19, 0xb0, 0x16, 0x43, 0xa6, 0xd1,
		0xf1, 0x14, 0x35, 0x4e, 0xf9, 0x93, 0x94, 0x95, 0xeb, 0x8d, 0xe6, 0x90, 0x61, 0x61, 0xcf, 0xac,
		0x10, 0x8c, 0x45, 0x7a, 0xe8, 0xb0, 0xf0, 0xe0, 0xb5, 0x5a, 0xed, 0xb1, 0x76, 0x71, 0x71, 0xfb,
		0xe9, 0xa6, 0xd9, 0xb8, 0xf9, 0xf8, 0x58, 0xff, 0x7b, 0xfd, 0xa6, 0x49, 0x71, 0x0c, 0x11, 0xdd,
		0x88, 0xf0, 0x38, 0x42, 0x5d, 0x5f, 0x15, 0x9f, 0x8a, 0x8b, 0xdb, 0xeb, 0xeb, 0xda, 0xcd, 0xa5,
		0x49, 0x76, 0xcb, 0xc1, 0xbb, 0x4c, 0xce, 0xc3, 0xd5, 0xed, 0xc7, 0xc6, 0x0d, 0xe1, 0x2c, 0x90,
		0x8c, 0xd4, 0xca, 0xb8, 0x1f, 0x53, 0x94, 0xde, 0xf4, 0x49, 0x71, 0x74, 0xd3, 0xa4, 0x30, 0x45,
		0xa6, 0xcf, 0xda, 0xa3, 0x9d, 0x96, 0x08, 0x82, 0x8d, 0xc7, 0x03, 0xfc, 0x02, 0xfc, 0x02, 0xfc,
		0x4a, 0x15, 0xfc, 0x62, 0x6e, 0xff, 0x85, 0xf9, 0x23, 0x4f, 0x48, 0x08, 0xbf, 0xca, 0x04, 0x63,
		0xd5, 0xdd, 0xfe, 0x0b, 0xdd, 0xf2, 0x6d, 0x7a, 0x0f, 0xa3, 0x93, 0xdd, 0x73, 0xc2, 0xdd, 0xdb,
		0x2c, 0x84, 0x91, 0xfa, 0xcd, 0xda, 0x7d, 0xf3, 0xf1, 0xa1, 0x79, 0x7b, 0x67, 0xd2, 0x41, 0x0c,
		0xb3, 0x38, 0x1a, 0xfa, 0xf6, 0x8e, 0x66, 0xef, 0x27, 0x42, 0x3f, 0x66, 0xd3, 0x6b, 0x48, 0x28,
		0xc5, 0xeb, 0x3d, 0xd5, 0x74, 0xfe, 0x94, 0x9d, 0xf2, 0x9b, 0x81, 0xc3, 0x21, 0x8b, 0x7b, 0xe9,
		0x00, 0x4e, 0x80, 0x3c, 0xba, 0x21, 0x4f, 0xa2, 0x62, 0x17, 0xd1, 0x84, 0xca, 0x9e, 0x66, 0x8e,
		0xce, 0x08, 0x47, 0x7f, 0x09, 0x1d, 0x6d, 0xaa, 0xcf, 0x9a, 0xcc, 0xe9, 0x3a, 0x81, 0xb2, 0x47,
		0xa7, 0xe8, 0x29, 0x42, 0x49, 0x48, 0xeb, 0xc9, 0x40, 0x44, 0x48, 0xeb, 0x84, 0xd0, 0x6f, 0xda,
		0x1e, 0x87, 0xd9, 0x4f, 0x44, 0x21, 0xbd, 0x27, 0x0a, 0x63, 0xdc, 0x8d, 0x1d, 0xde, 0xe1, 0xe1,
		0xd8, 0x7b, 0x1d, 0xcd, 0x98, 0x75, 0x8a, 0x1d, 0xd9, 0x28, 0x7f, 0x56, 0xd9, 0x87, 0x8d, 0x86,
		0xd9, 0xf2, 0xc9, 0x60, 0x09, 0xee, 0x0b, 0xee, 0x2b, 0x11, 0xf7, 0x85, 0x93, 0x41, 0x48, 0x53,
		0x90, 0xa6, 0x20, 0x4d, 0x09, 0xac, 0x37, 0x9c, 0x0c, 0xe2, 0x64, 0x10, 0x27, 0x83, 0x38, 0x19,
		0x4c, 0x4c, 0x3d, 0xc2, 0x81, 0x19, 0x50, 0x09, 0x50, 0x09, 0x50, 0xc9, 0x7a, 0xce, 0x80, 0x03,
		0x33, 0x95, 0x51, 0x71, 0x60, 0x46, 0x30, 0x24, 0x0e, 0xcc, 0x34, 0x23, 0x81, 0xdc, 0x9e, 0x23,
		0xc5, 0x28, 0x0e, 0x48, 0x37, 0x69, 0x7a, 0x93, 0x3f, 0xfe, 0x60, 0xaf, 0x4a, 0x1a, 0xcf, 0xee,
		0x67, 0x3e, 0xbb, 0xfd, 0x6e, 0x97, 0x20, 0x4f, 0x56, 0xbc, 0x5a, 0x6d, 0xd2, 0x89, 0xb2, 0x04,
		0x96, 0x61, 0x4a, 0x9d, 0x14, 0xcc, 0xd5, 0x73, 0x0c, 0xef, 0xf1, 0x58, 0xb3, 0xed, 0xc7, 0x5a,
		0x74, 0x8f, 0xc7, 0x7a, 0x38, 0x38, 0xb2, 0x75, 0x57, 0xcd, 0x7e, 0x92, 0xd9, 0xba, 0x62, 0x27,
		0x3b, 0x52, 0x27, 0x39, 0xd2, 0xb9, 0xba, 0x25, 0xe4, 0xea, 0x52, 0x52, 0x20, 0xd4, 0x6e, 0x43,
		0xed, 0x36, 0xe4, 0xf0, 0xa2, 0x76, 0x5b, 0x2c, 0x5f, 0x8d, 0xda, 0x6d, 0xa8, 0xdd, 0x96, 0xc8,
		0xdb, 0x5b, 0xfa, 0xa0, 0xa8, 0xdd, 0x96, 0xc9, 0xa7, 0x43, 0xed, 0xb6, 0xe4, 0x9d, 0x1e, 0x6a,
		0xb7, 0xe5, 0x4c, 0xc1, 0x40, 0xed, 0x36, 0x3d, 0xb8, 0xd0, 0xc8, 0x5f, 0xed, 0xb6, 0x7c, 0x88,
		0x2a, 0x02, 0xfa, 0x6e, 0x86, 0x1a, 0xdd, 0xac, 0x79, 0x62, 0x33, 0x96, 0xee, 0xb3, 0x51, 0xa7,
		0x93, 0xee, 0x97, 0xb3, 0xa6, 0xf5, 0x86, 0xdd, 0xe7, 0xdf, 0x86, 0xc8, 0xb8, 0x1d, 0x6f, 0x12,
		0xa6, 0xa4, 0x7d, 0xfe, 0x3a, 0x74, 0x9f, 0x40, 0xf7, 0x89, 0xf1, 0x82, 0xea, 0xbc, 0x38, 0xae,
		0xd5, 0x1f, 0x79, 0x40, 0x41, 0x11, 0x73, 0xe6, 0x5a, 0x54, 0x1d, 0x84, 0x92, 0x99, 0x8c, 0x92,
		0x29, 0x59, 0x66, 0x4d, 0xad, 0xbc, 0x1a, 0xea, 0x0e, 0x42, 0xb3, 0x4c, 0x6b, 0xdd, 0xc1, 0x91,
		0x17, 0xee, 0xd9, 0x41, 0xf0, 0x97, 0x4a, 0x38, 0xe1, 0x1b, 0xaf, 0x1e, 0x8d, 0x87, 0x64, 0x49,
		0x64, 0x1b, 0x25, 0x6c, 0x68, 0x5b, 0x91, 0x92, 0x08, 0x93, 0x25, 0xb7, 0x2e, 0x29, 0x49, 0xce,
		0x40, 0xfd, 0x07, 0x57, 0x53, 0xb3, 0xe9, 0x56, 0xb7, 0xd7, 0xb6, 0xd8, 0x0f, 0x7e, 0x3e, 0x43,
		0xd8, 0xbe, 0xd9, 0xc1, 0x37, 0xd6, 0xb1, 0xbe, 0x87, 0xdd, 0x98, 0x49, 0x57, 0x7d, 0x18, 0x8b,
		0x42, 0xb8, 0xec, 0x93, 0x5e, 0xf0, 0xad, 0x2d, 0xc7, 0x90, 0x91, 0x17, 0x75, 0x48, 0x46, 0xfe,
		0x99, 0xdf, 0xe7, 0xc6, 0xeb, 0x8b, 0x7a, 0xfb, 0x9c, 0x0c, 0x8b, 0x5d, 0x14, 0xbb, 0x28, 0x76,
		0x51, 0x31, 0xa2, 0xe6, 0xbf, 0xf6, 0xf8, 0xd4, 0x90, 0x14, 0x33, 0x6e, 0xb7, 0xb4, 0xa5, 0xee,
		0x92, 0x8f, 0xdd, 0x9d, 0x70, 0xcd, 0x39, 0x31, 0xf4, 0x68, 0x2a, 0x63, 0x49, 0x95, 0xc4, 0x11,
		0x38, 0x05, 0x10, 0xd0, 0x96, 0xe4, 0x2a, 0x46, 0x28, 0x55, 0x8a, 0x50, 0x16, 0x39, 0x4a, 0x10,
		0x39, 0x20, 0x72, 0x40, 0xe4, 0x00, 0x3c, 0x03, 0x3c, 0x83, 0xc8, 0x01, 0x91, 0x03, 0x22, 0x07,
		0xa5, 0xc8, 0x01, 0x4d, 0x00, 0x9b, 0x0e, 0x36, 0x1d, 0x68, 0x02, 0x29, 0xd2, 0x04, 0x12, 0x74,
		0x49, 0x43, 0x76, 0x3a, 0x0e, 0x36, 0x22, 0xf1, 0x45, 0xd1, 0x78, 0x70, 0x42, 0x70, 0x42, 0x70,
		0x42, 0xd9, 0x42, 0xbe, 0x90, 0xee, 0x96, 0x48, 0x77, 0x12, 0x55, 0x08, 0x76, 0x3a, 0x7e, 0x77,
		0xd5, 0x44, 0x99, 0x42, 0x22, 0xe4, 0xaa, 0x20, 0xd7, 0xb9, 0xd1, 0x1f, 0x6b, 0xc3, 0xd1, 0x3f,
		0xc5, 0x0e, 0xf7, 0xa6, 0xc9, 0xbc, 0x16, 0x0c, 0x04, 0x93, 0x0b, 0x00, 0x43, 0xc4, 0xa2, 0x81,
		0x88, 0x45, 0x35, 0x0d, 0xf3, 0x4d, 0xec, 0xb5, 0x7a, 0xfe, 0xf5, 0xd2, 0xe1, 0x90, 0x83, 0xad,
		0x0f, 0x9f, 0x41, 0xea, 0x47, 0x0e, 0xb6, 0x66, 0x69, 0x10, 0x39, 0xd8, 0x92, 0xc3, 0x22, 0x07,
		0x3b, 0xf1, 0x07, 0x43, 0x0e, 0xb6, 0x5e, 0x86, 0x3b, 0xf9, 0x83, 0x1c, 0xec, 0xf4, 0x32, 0x6a,
		0xe4, 0x60, 0x0b, 0x0f, 0x8a, 0x1c, 0xec, 0x64, 0x74, 0xba, 0x9c, 0xe5, 0x60, 0x27, 0x2c, 0x56,
		0x91, 0x05, 0xe2, 0xe5, 0x48, 0x7c, 0x12, 0x89, 0xaa, 0x43, 0x55, 0x3e, 0x28, 0x43, 0x50, 0x86,
		0xa0, 0x0c, 0x41, 0x19, 0x82, 0x32, 0x04, 0x65, 0x08, 0xca, 0x10, 0x94, 0x21, 0x28, 0x43, 0x50,
		0x86, 0xa0, 0x0c, 0x41, 0x19, 0x82, 0x32, 0x04, 0x65, 0x08, 0xca, 0x10, 0x04, 0x96, 0x25, 0x02,
		0x0b, 0x6d, 0x85, 0xbe, 0x18, 0xfa, 0xca, 0x70, 0xf1, 0x04, 0xe2, 0xfa, 0xca, 0xe8, 0x32, 0x44,
		0xde, 0x40, 0x5f, 0x49, 0x46, 0x5f, 0x11, 0x2a, 0x6b, 0x47, 0xb1, 0x97, 0xa0, 0x4e, 0x18, 0xd4,
		0x93, 0xb4, 0xa6, 0xd0, 0x4a, 0x16, 0xce, 0x5b, 0x58, 0x2e, 0x52, 0x05, 0xf4, 0x14, 0x0d, 0x44,
		0xd9, 0x50, 0x28, 0x0c, 0x86, 0xce, 0x70, 0x28, 0x21, 0xa7, 0x81, 0xc4, 0x01, 0xad, 0x24, 0x56,
		0xda, 0xe0, 0xa2, 0x01, 0x94, 0xb3, 0xd6, 0x17, 0x16, 0x9e, 0x62, 0xde, 0xfa, 0x5b, 0x63, 0x44,
		0xaf, 0xdf, 0x24, 0x8d, 0x55, 0x9b, 0xd1, 0x6a, 0x33, 0x5e, 0x2d, 0x46, 0x4c, 0xa3, 0x84, 0xa5,
		0xaf, 0xd7, 0xaf, 0xb2, 0x62, 0x45, 0xa4, 0x5c, 0x51, 0xcd, 0x90, 0x72, 0xbe, 0xbc, 0xba, 0x1a,
		0xb8, 0x52, 0x61, 0xd1, 0x99, 0x3f, 0xbf, 0xc2, 0x9a, 0x08, 0xf2, 0xe8, 0x97, 0x9a, 0xd3, 0xd6,
		0x25, 0x65, 0xd5, 0xfd, 0x9d, 0xa6, 0xd0, 0x55, 0x34, 0x1e, 0x79, 0xc1, 0x2b, 0xf5, 0x69, 0x52,
		0xe9, 0xf5, 0x4f, 0x55, 0x52, 0x60, 0x25, 0x14, 0x50, 0x2b, 0x2a, 0x00, 0x44, 0x00, 0x44, 0x00,
		0x44, 0xa0, 0x09, 0x11, 0xd0, 0x16, 0x2d, 0x48, 0x19, 0x3c, 0x80, 0xdf, 0x5f, 0xfb, 0x38, 0xbe,
		0xd7, 0x25, 0x8c, 0x90, 0x08, 0x47, 0x83, 0x87, 0x87, 0x87, 0x87, 0x87, 0x57, 0x78, 0xa2, 0x6b,
		0xdb, 0xed, 0xd8, 0xdc, 0xf3, 0x5f, 0xe5, 0x75, 0x48, 0x8d, 0xbb, 0x85, 0x6c, 0x6c, 0xdb, 0xca,
		0xfd, 0xe1, 0x8c, 0x60, 0x2c, 0xa5, 0xd8, 0x37, 0x3d, 0x44, 0x50, 0x0f, 0xe9, 0x26, 0xde, 0x5d,
		0x89, 0x96, 0xac, 0xc6, 0x99, 0xa3, 0x89, 0x2a, 0x5c, 0x39, 0x7d, 0x15, 0xc2, 0x31, 0x49, 0xa3,
		0x0e, 0x57, 0x4e, 0xc8, 0xc3, 0xbf, 0x1e, 0x9a, 0xf5, 0xeb, 0xc7, 0xcb, 0xfa, 0x87, 0xc6, 0x4d,
		0xfd, 0xf2, 0xf1, 0xfe, 0xf6, 0xaa, 0xfe, 0x40, 0x38, 0x33, 0x06, 0x71, 0x68, 0xa2, 0xbe, 0x25,
		0xb2, 0x6e, 0x76, 0x86, 0xb3, 0xf2, 0x58, 0xbb, 0xbc, 0x6e, 0xdc, 0x98, 0xe4, 0xf7, 0x1b, 0x90,
		0x8e, 0xd8, 0xda, 0x4b, 0xd7, 0xf7, 0x52, 0x1f, 0xa5, 0x05, 0xbc, 0x9f, 0x5e, 0xbc, 0x1f, 0x04,
		0xdf, 0xac, 0xff, 0xb0, 0x57, 0x3a, 0xc8, 0x3f, 0x19, 0x10, 0xa8, 0x1f, 0xa8, 0x1f, 0xa8, 0x3f,
		0x55, 0x48, 0x7d, 0xd7, 0x4e, 0x7a, 0xe0, 0xda, 0xd7, 0x3e, 0x8e, 0x72, 0x09, 0xce, 0x45, 0xaa,
		0xa7, 0x56, 0x84, 0x13, 0xce, 0x1d, 0xce, 0x1d, 0xce, 0x1d, 0xce, 0x1d, 0xce, 0x5d, 0xe5, 0xca,
		0x6d, 0x77, 0x76, 0x52, 0x08, 0xfb, 0x0f, 0xc3, 0xe9, 0x8f, 0xa4, 0x1b, 0x17, 0xc9, 0xcf, 0x9b,
		0x4c, 0x3e, 0x87, 0x5c, 0x43, 0xa3, 0x25, 0x76, 0x29, 0xde, 0xd8, 0x68, 0xc1, 0x14, 0x55, 0x83,
		0x4f, 0x4b, 0x08, 0x3e, 0xd5, 0xb8, 0x01, 0x22, 0xf8, 0x74, 0xfa, 0xcd, 0x11, 0x7c, 0x0a, 0xd4,
		0x0a, 0xd4, 0x0a, 0xd4, 0x9a, 0x53, 0xd4, 0x8a, 0xe0, 0xd3, 0x7c, 0x04, 0x9f, 0x22, 0x26, 0x13,
		0x1b, 0x25, 0x36, 0x4a, 0x6c, 0x94, 0x89, 0x6d, 0x94, 0xe9, 0x8e, 0xc9, 0x44, 0xa8, 0x22, 0x1c,
		0x1f, 0x1c, 0x1f, 0x1c, 0x1f, 0x42, 0x15, 0xa5, 0x1f, 0x13, 0xa1, 0x8a, 0xdb, 0x59, 0xb2, 0x1a,
		0x67, 0x0e, 0xa1, 0x8a, 0x6f, 0x26, 0x04, 0xa1, 0x8a, 0x31, 0x66, 0x07, 0xa1, 0x8a, 0xdb, 0x1b,
		0xa5, 0x85, 0x08, 0x3e, 0x44, 0xf0, 0x01, 0x0c, 0x03, 0x0c, 0xa7, 0x54, 0x05, 0x48, 0x9d, 0x5c,
		0x8e, 0xc0, 0x36, 0xf8, 0x3c, 0xf8, 0x3c, 0xf8, 0x3c, 0xf8, 0x3c, 0x6d, 0x57, 0xee, 0x46, 0xbc,
		0x97, 0x44, 0xb7, 0x6b, 0xf9, 0x69, 0x93, 0x09, 0xf7, 0x52, 0xde, 0x54, 0xa8, 0x36, 0x13, 0xc5,
		0x4d, 0x04, 0x15, 0x07, 0x93, 0xd9, 0x1c, 0x10, 0xf4, 0x45, 0xe8, 0xf4, 0xa3, 0xf5, 0xd2, 0x65,
		0xf6, 0x13, 0x51, 0xbf, 0x90, 0x13, 0x85, 0x31, 0xee, 0xc6, 0xde, 0xee, 0xf0, 0x70, 0x1c, 0xa8,
		0x7a, 0x14, 0x19, 0x75, 0x52, 0x2e, 0x4c, 0x6b, 0x4d, 0xd6, 0x3f, 0x42, 0xbd, 0x40, 0xd6, 0x53,
		0xed, 0x7e, 0x51, 0x7f, 0xb7, 0xdf, 0xed, 0x12, 0x94, 0x80, 0x0f, 0xc3, 0x5f, 0x52, 0xdd, 0x1d,
		0x90, 0x64, 0x73, 0x37, 0xa5, 0xa2, 0xab, 0xfd, 0x7e, 0x9b, 0xbb, 0x13, 0xe9, 0x33, 0xbc, 0xcb,
		0x63, 0xcd, 0xb6, 0x1f, 0x6b, 0x73, 0x77, 0x79, 0xfc, 0x24, 0x5c, 0xf5, 0x3f, 0x47, 0x65, 0xf4,
		0x47, 0xe5, 0xe9, 0xa9, 0xca, 0xe8, 0xef, 0x29, 0xcc, 0x82, 0xe8, 0xd3, 0x2b, 0x3c, 0xb5, 0x19,
		0xab, 0x9d, 0x62, 0xac, 0xd5, 0xb5, 0x7e, 0xea, 0x56, 0x4f, 0xc8, 0x9a, 0xc9, 0x08, 0x7b, 0xda,
		0x79, 0xbe, 0xf3, 0xdf, 0x78, 0x73, 0x31, 0xd7, 0x0a, 0x6f, 0x7a, 0xd9, 0x86, 0xc9, 0x8e, 0x97,
		0x16, 0x10, 0x1b, 0x09, 0x8a, 0x20, 0x3e, 0x71, 0x64, 0x27, 0x8a, 0xe0, 0xa4, 0x91, 0x9a, 0x34,
		0x22, 0x93, 0x42, 0x5e, 0x6a, 0xe6, 0x12, 0x37, 0x4c, 0x5e, 0xb4, 0x08, 0xba, 0x5c, 0xd1, 0x73,
		0xb4, 0xae, 0x30, 0xd0, 0xba, 0x42, 0x6e, 0x81, 0x2e, 0xf7, 0x7b, 0x24, 0x9d, 0x41, 0x17, 0x46,
		0x43, 0x63, 0x50, 0x7d, 0x3c, 0x19, 0xad, 0x2d, 0xd0, 0x18, 0x34, 0xd6, 0x1f, 0x34, 0x06, 0xdd,
		0xfc, 0x80, 0x68, 0x0c, 0x9a, 0x88, 0xee, 0xa4, 0xf1, 0xc1, 0xd0, 0x18, 0x54, 0xaf, 0xd2, 0x38,
		0xf9, 0x83, 0xc6, 0xa0, 0xe2, 0xfe, 0x0e, 0x8d, 0x41, 0xd1, 0x18, 0x54, 0x2b, 0x16, 0x34, 0xd0,
		0x18, 0x94, 0xd0, 0x7f, 0x10, 0x34, 0x06, 0x4d, 0x58, 0x14, 0x26, 0x2b, 0x95, 0xb2, 0xeb, 0x52,
		0x6c, 0xc4, 0x50, 0x85, 0xca, 0x99, 0xd0, 0x74, 0x34, 0x65, 0xdf, 0xc7, 0xae, 0x4b, 0x50, 0x18,
		0x1a, 0x5f, 0x07, 0x61, 0x08, 0xc2, 0x50, 0x32, 0xc2, 0x50, 0xb8, 0xe0, 0xe4, 0x95, 0xa0, 0xd1,
		0xe5, 0xe8, 0x6a, 0x0a, 0xe9, 0x27, 0x55, 0xd2, 0x0f, 0xba, 0x9a, 0x22, 0xc6, 0x48, 0x9b, 0x21,
		0x69, 0xc1, 0xcc, 0x46, 0xce, 0x0b, 0x4b, 0x85, 0x1b, 0xc9, 0x28, 0x71, 0x9e, 0x4c, 0xe8, 0x9b,
		0x19, 0x13, 0x91, 0xe3, 0xfa, 0x0d, 0x95, 0xda, 0x60, 0xb5, 0x19, 0xae, 0x36, 0x03, 0xd6, 0x62,
		0xc8, 0x34, 0x52, 0x5e, 0xfa, 0x22, 0xc7, 0x69, 0xf3, 0x6f, 0x29, 0xf3, 0x6e, 0xf5, 0xe4, 0xdb,
		0xce, 0x9d, 0x3f, 0xd4, 0x3e, 0x35, 0x7f, 0xbf, 0xbd, 0x6f, 0xfc, 0xbb, 0xd6, 0x6c, 0xdc, 0xde,
		0x3c, 0xd6, 0xff, 0x5e, 0xbf, 0x69, 0x52, 0x1c, 0x46, 0x44, 0xf7, 0xd2, 0x90, 0x67, 0xab, 0x29,
		0xeb, 0x78, 0xd5, 0x6c, 0x5c, 0xdc, 0x5e, 0x5f, 0xd7, 0x6e, 0x2e, 0xe9, 0xb2, 0x6c, 0x07, 0xef,
		0xb2, 0x3b, 0x15, 0x37, 0x1f, 0x1a, 0x1f, 0xcd, 0x94, 0xe5, 0xf3, 0xb6, 0x32, 0xee, 0xd1, 0x50,
		0xc2, 0x98, 0x18, 0x03, 0x6e, 0x2b, 0xa5, 0x65, 0xaa, 0xf3, 0x8d, 0xd4, 0xb3, 0xd1, 0x5f, 0x19,
		0xa8, 0x61, 0x4c, 0x80, 0x79, 0xe9, 0xb0, 0x2e, 0x12, 0x5b, 0x40, 0x3a, 0x91, 0xd8, 0x92, 0xb6,
		0xc4, 0x96, 0x19, 0xb3, 0x46, 0x31, 0xf6, 0x44, 0x34, 0x33, 0x14, 0x63, 0x87, 0xfb, 0x82, 0x66,
		0x06, 0xcd, 0x0c, 0x9a, 0x19, 0x34, 0x33, 0x68, 0x66, 0xd0, 0xcc, 0xa0, 0x99, 0x41, 0x33, 0xdb,
		0x1d, 0xcd, 0x0c, 0x52, 0x92, 0x8c, 0x94, 0x94, 0x6c, 0x79, 0x94, 0x24, 0x6a, 0x0b, 0x48, 0xc3,
		0x3c, 0x54, 0x17, 0xd8, 0x34, 0xc4, 0xce, 0x56, 0x17, 0x58, 0x6e, 0x1c, 0xe4, 0xe5, 0x05, 0xa2,
		0xdb, 0x3c, 0xd6, 0xc3, 0xf1, 0x11, 0xd3, 0xba, 0xe6, 0x1d, 0x24, 0x19, 0xd3, 0x2a, 0xa6, 0xf2,
		0x48, 0xa9, 0x3a, 0xd2, 0x11, 0xad, 0x25, 0x44, 0xb4, 0x52, 0x92, 0x34, 0xa4, 0x3a, 0x23, 0xd5,
		0x19, 0xf1, 0xae, 0x94, 0xca, 0x04, 0x52, 0x9d, 0x57, 0x7f, 0x6d, 0xa4, 0x3a, 0x23, 0xd5, 0x59,
		0xf1, 0x41, 0x91, 0xea, 0x9c, 0xc9, 0xa7, 0x43, 0xaa, 0x73, 0xf2, 0x4e, 0x0f, 0xa9, 0xce, 0x39,
		0x13, 0x34, 0x90, 0xea, 0xac, 0x07, 0x17, 0x1a, 0xf9, 0x4b, 0x75, 0xce, 0x8d, 0xba, 0x22, 0xa0,
		0xf8, 0x66, 0xbd, 0x76, 0x63, 0xdc, 0xba, 0x86, 0x02, 0xca, 0x9d, 0x8e, 0xca, 0x8d, 0x31, 0x33,
		0xf3, 0xc4, 0x32, 0xf0, 0x50, 0xab, 0x91, 0xd6, 0x45, 0x6e, 0xa1, 0x56, 0xa3, 0x4e, 0xf3, 0x88,
		0x13, 0x42, 0x2c, 0xb7, 0x9a, 0x03, 0xe6, 0x7f, 0x67, 0xbe, 0xf5, 0xec, 0x7b, 0xfd, 0x5e, 0x10,
		0x7f, 0x51, 0xcf, 0x5f, 0x86, 0xb5, 0x8d, 0x3a, 0xa4, 0x8b, 0xcb, 0x49, 0x42, 0xa1, 0x9f, 0xbd,
		0x1a, 0xa5, 0x27, 0x12, 0xd4, 0x2a, 0x73, 0x2d, 0xd4, 0x4b, 0xe6, 0xda, 0xab, 0xe5, 0xd8, 0xa3,
		0xf8, 0x44, 0xa2, 0x0b, 0x9c, 0x9c, 0x74, 0xed, 0x72, 0xf1, 0x09, 0x9a, 0x06, 0x37, 0x68, 0x6e,
		0x83, 0x20, 0xfa, 0x6d, 0x18, 0xd5, 0x56, 0xf4, 0x50, 0xc2, 0x1c, 0xa0, 0xad, 0xeb, 0xa2, 0x5b,
		0x8e, 0x95, 0x23, 0xcf, 0x5f, 0x4d, 0x46, 0xd4, 0xa2, 0x49, 0x9f, 0x44, 0xe2, 0x24, 0x9c, 0x26,
		0x9c, 0xa6, 0xf8, 0x7a, 0xc9, 0xc5, 0x09, 0xfa, 0x43, 0xfd, 0xfe, 0xef, 0xf5, 0xfb, 0x1d, 0x3f,
		0x41, 0x1f, 0x1d, 0x34, 0xef, 0xee, 0x21, 0x33, 0x0e, 0x98, 0xf3, 0x07, 0x27, 0x76, 0x26, 0xfc,
		0x7a, 0x4e, 0xf7, 0x9d, 0xfb, 0x49, 0xaa, 0xcc, 0x85, 0xc0, 0x39, 0x9e, 0x80, 0x88, 0x26, 0x45,
		0x5f, 0x55, 0x68, 0x2b, 0x02, 0x2b, 0xa1, 0xe5, 0xa4, 0x3e, 0xb0, 0x52, 0xbe, 0xb4, 0x84, 0x4a,
		0x49, 0x89, 0x25, 0xa5, 0x24, 0xc4, 0xfb, 0xa3, 0xea, 0x71, 0x13, 0x23, 0xef, 0x15, 0xc8, 0x7b,
		0x8a, 0xc9, 0x00, 0x10, 0x7e, 0xe1, 0x2c, 0x52, 0xe5, 0x2c, 0xa4, 0x85, 0xdf, 0xd1, 0x8a, 0x26,
		0x28, 0xa0, 0x32, 0x1a, 0x07, 0x55, 0x87, 0xa1, 0x63, 0xe4, 0x42, 0xc7, 0x50, 0xae, 0xa0, 0x62,
		0x77, 0x3a, 0x43, 0x6e, 0x42, 0x27, 0x17, 0x4c, 0x06, 0x44, 0xed, 0x14, 0xfd, 0x26, 0x4a, 0x6d,
		0xaa, 0xda, 0x4c, 0x56, 0x9b, 0xe9, 0x6a, 0x31, 0x61, 0x1a, 0xb9, 0x23, 0x7d, 0xb5, 0x53, 0xd4,
		0x6b, 0xbc, 0x51, 0x00, 0xf3, 0x18, 0x40, 0x7d, 0xe2, 0x43, 0xb6, 0x55, 0xe9, 0x41, 0x61, 0xd3,
		0x54, 0x6c, 0x9f, 0xb0, 0xf0, 0xce, 0x94, 0xda, 0x28, 0x10, 0x01, 0x1b, 0x78, 0x53, 0x78, 0xd3,
		0xac, 0x7b, 0x53, 0x55, 0xa0, 0x44, 0x0e, 0x98, 0x34, 0x01, 0x27, 0x62, 0x00, 0x45, 0x6e, 0xfa,
		0x3a, 0x5c, 0x80, 0x3e, 0x57, 0xa0, 0xcb, 0x25, 0x68, 0x77, 0x0d, 0xda, 0x5d, 0x84, 0x56, 0x57,
		0x41, 0xe3, 0x32, 0x88, 0x5c, 0x07, 0x3d, 0x20, 0x5b, 0x58, 0xaf, 0x4e, 0xcf, 0xa2, 0xb5, 0x7e,
		0x43, 0x31, 0x2f, 0x7d, 0xd3, 0x1c, 0x7c, 0x26, 0x5d, 0x43, 0xb4, 0x36, 0xf5, 0x66, 0x66, 0xbf,
		0x97, 0x35, 0xcc, 0xed, 0xc2, 0x1c, 0x9f, 0x6a, 0x18, 0xfb, 0xce, 0xe6, 0x9c, 0xf9, 0x2e, 0xf9,
		0x74, 0x47, 0x37, 0xd8, 0xff, 0x5c, 0xb0, 0xce, 0x5a, 0xbf, 0x3e, 0x17, 0xad, 0xb3, 0xd6, 0xe8,
		0x7f, 0x8b, 0xe1, 0x5f, 0x3f, 0x4b, 0x83, 0x5f, 0xa5, 0xcf, 0x05, 0xab, 0x3c, 0xfe, 0x6d, 0xa9,
		0xf2, 0xb9, 0x60, 0x55, 0x5a, 0x07, 0xfb, 0x5f, 0xbe, 0x1c, 0x8a, 0x5e, 0x73, 0xf0, 0xf3, 0x78,
		0x60, 0x92, 0x7f, 0xfd, 0x96, 0x8e, 0xe9, 0xbe, 0x7d, 0x68, 0xfc, 0x53, 0xfb, 0x9c, 0xff, 0xb9,
		0x9f, 0xd4, 0xac, 0x1f, 0xfc, 0xa6, 0x61, 0xde, 0x49, 0x47, 0x1c, 0xbc, 0xcb, 0x90, 0x1b, 0xa9,
		0xc2, 0x8d, 0xac, 0x72, 0x23, 0xe1, 0xea, 0xb4, 0xad, 0xa7, 0x9a, 0xf5, 0xa1, 0xf5, 0xb3, 0xf8,
		0xae, 0x3c, 0x38, 0x3f, 0xf8, 0x79, 0x32, 0x78, 0xfb, 0xcb, 0x5f, 0xcb, 0x3e, 0x56, 0x7c, 0x77,
		0x32, 0x38, 0x5f, 0xf1, 0x2f, 0xd5, 0xc1, 0x79, 0xcc, 0x31, 0x2a, 0x83, 0xfd, 0x85, 0x8f, 0x0e,
		0x7f, 0x5f, 0x5a, 0x75, 0x41, 0x79, 0xc5, 0x05, 0xc7, 0xab, 0x2e, 0x38, 0x5e, 0x71, 0xc1, 0xca,
		0xaf, 0x54, 0x5a, 0x71, 0x41, 0x65, 0xf0, 0x6b, 0xe1, 0xf3, 0xfb, 0xcb, 0x3f, 0x5a, 0x1d, 0x1c,
		0xfc, 0x5a, 0xf5, 0x6f, 0x27, 0x83, 0x5f, 0xe7, 0x07, 0x07, 0x70, 0xac, 0x0b, 0x8e, 0x15, 0xcb,
		0x30, 0xf9, 0x65, 0x98, 0xfe, 0x8d, 0x66, 0x2f, 0x5d, 0xdf, 0x8b, 0x8a, 0x91, 0x10, 0x37, 0x70,
		0x8a, 0xc6, 0xd5, 0xd6, 0xc8, 0x89, 0xee, 0x85, 0x10, 0x4c, 0xa1, 0x5a, 0xb6, 0xd1, 0x4a, 0xac,
		0xa0, 0x90, 0x7d, 0x04, 0x11, 0x07, 0x22, 0x0e, 0x44, 0x9c, 0x8c, 0x8a, 0x38, 0xca, 0xd9, 0x53,
		0xab, 0x59, 0x01, 0x36, 0x9d, 0xdd, 0xd9, 0x74, 0xb8, 0xf3, 0xc2, 0xbc, 0x3e, 0xa7, 0xdf, 0x77,
		0x26, 0x03, 0x63, 0xeb, 0xc1, 0xd6, 0x83, 0xad, 0x27, 0x57, 0x5b, 0x4f, 0xdf, 0x71, 0x79, 0xb1,
		0xaa, 0x61, 0xeb, 0xa9, 0x12, 0x0e, 0x79, 0x6f, 0xbb, 0xcf, 0x99, 0x38, 0x3b, 0xb8, 0x76, 0x5c,
		0x72, 0x43, 0x8d, 0x06, 0x0f, 0xd3, 0xdf, 0xe8, 0xdc, 0xe0, 0xc2, 0xf8, 0x1f, 0x7c, 0xbb, 0x3d,
		0xdc, 0x9b, 0x2f, 0x9d, 0x67, 0x47, 0xb6, 0x20, 0x63, 0xbc, 0xb5, 0xc7, 0x9e, 0x6d, 0xee, 0x7c,
		0x67, 0x52, 0x8d, 0x1e, 0xb6, 0xa0, 0x0e, 0x1b, 0xe3, 0x4a, 0x93, 0xfa, 0x5f, 0x6d, 0xb5, 0x52,
		0x39, 0xae, 0xe0, 0xf5, 0x26, 0xa6, 0xc9, 0x40, 0xe1, 0xd9, 0x4d, 0xb0, 0xbd, 0x53, 0xbd, 0xd1,
		0x89, 0x72, 0x1d, 0xc7, 0x99, 0x3f, 0xe3, 0xbf, 0x95, 0x3a, 0x7c, 0xab, 0xcf, 0xb3, 0x4a, 0x9c,
		0xa4, 0x6f, 0x77, 0x9c, 0x3e, 0x61, 0xd8, 0xf9, 0x78, 0x3c, 0xc4, 0x49, 0x26, 0x47, 0x6e, 0x10,
		0x27, 0x89, 0x38, 0xc9, 0xd5, 0x03, 0x11, 0x05, 0x42, 0x2f, 0x2c, 0x5f, 0x92, 0x80, 0x68, 0x62,
		0x83, 0x87, 0xca, 0x01, 0x95, 0x03, 0x2a, 0x07, 0xad, 0x03, 0x89, 0x06, 0xb4, 0xdb, 0x6d, 0x6e,
		0xf5, 0x3c, 0x9f, 0xd3, 0xaf, 0xab, 0x28, 0xf4, 0x3a, 0xba, 0x05, 0xf1, 0x6b, 0xbf, 0x64, 0x4f,
		0x76, 0xbf, 0xcb, 0xb5, 0x44, 0x3d, 0x98, 0xc5, 0xd3, 0xe2, 0x31, 0xed, 0xc9, 0x3b, 0x71, 0xf4,
		0x07, 0xb1, 0x86, 0xac, 0xcd, 0xcb, 0xea, 0xf4, 0xb6, 0xfa, 0xbd, 0xae, 0x6e, 0xef, 0x9b, 0x98,
		0x17, 0x4e, 0xcc, 0x1b, 0x27, 0xe2, 0x95, 0x35, 0xe9, 0x1c, 0xc4, 0x2b, 0x9e, 0x5c, 0x93, 0x5e,
		0x58, 0xef, 0x43, 0xb7, 0x6a, 0xb9, 0xfd, 0x97, 0xaf, 0xd2, 0x69, 0xf9, 0x71, 0x5c, 0x4c, 0x55,
		0xc3, 0xd0, 0x7a, 0x04, 0xeb, 0xc9, 0x1f, 0x3d, 0x46, 0x6a, 0xe8, 0x16, 0xb0, 0xa3, 0x9b, 0x68,
		0x16, 0xb2, 0xa3, 0xfb, 0x24, 0xa5, 0x78, 0x4e, 0x17, 0xae, 0x6e, 0xe5, 0x53, 0x93, 0x2d, 0xcf,
		0x2f, 0x01, 0x8d, 0x42, 0xf7, 0xc2, 0x12, 0xd0, 0x28, 0x78, 0xe7, 0x61, 0x19, 0xec, 0x65, 0x63,
		0xd4, 0x54, 0xc7, 0xfe, 0xeb, 0x12, 0xca, 0xa3, 0xf1, 0xb5, 0x0b, 0xe6, 0xf4, 0x2f, 0x8e, 0x70,
		0x8a, 0xc3, 0x26, 0xc0, 0xba, 0x49, 0x58, 0x74, 0x8b, 0x8c, 0x91, 0xb0, 0x12, 0x48, 0x18, 0x48,
		0x18, 0x48, 0x18, 0x48, 0x18, 0x48, 0x18, 0x48, 0x18, 0x48, 0x18, 0x48, 0x18, 0x48, 0x18, 0x48,
		0x18, 0x48, 0x18, 0x48, 0x18, 0x35, 0x09, 0xf3, 0x19, 0xf7, 0x6d, 0x37, 0x78, 0x71, 0xb8, 0x65,
		0x73, 0xce, 0x5e, 0x7a, 0x3c, 0xd0, 0x47, 0xc7, 0x96, 0xdd, 0x0c, 0xcc, 0x04, 0xcc, 0x04, 0xcc,
		0x04, 0xcc, 0x84, 0x70, 0xbd, 0xf7, 0x1d, 0x97, 0x9f, 0x6a, 0xe4, 0x24, 0x15, 0x70, 0x12, 0x70,
		0x12, 0x70, 0x92, 0xed, 0x70, 0x92, 0x52, 0x05, 0x8c, 0x04, 0x8c, 0x04, 0x8c, 0x64, 0x67, 0x19,
		0x49, 0xc0, 0xda, 0x3e, 0xe3, 0xd6, 0x7f, 0xd8, 0xab, 0x3e, 0x22, 0x32, 0x73, 0x0f, 0xf0, 0x0f,
		0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0x4a, 0x99, 0xc3, 0xeb, 0x73, 0xc7, 0x7d, 0xb6, 0x7a, 0x76,
		0x10, 0x84, 0xcb, 0x47, 0x67, 0x75, 0x3f, 0x6c, 0x95, 0xd8, 0x2a, 0xd9, 0xab, 0xf5, 0xcd, 0x0e,
		0xbe, 0xb1, 0x4e, 0x12, 0x3b, 0xe6, 0xe4, 0x56, 0xd8, 0x38, 0xb1, 0x71, 0x62, 0xe3, 0xc4, 0xc6,
		0x49, 0xb8, 0xde, 0xdb, 0xfe, 0x6b, 0x8f, 0x47, 0xdb, 0xa6, 0xa5, 0xd0, 0x3e, 0x1e, 0x7b, 0x27,
		0xf6, 0xce, 0x0d, 0x7b, 0x67, 0xe8, 0x01, 0x2d, 0xea, 0xd6, 0x1b, 0x8b, 0x1b, 0xe7, 0xfc, 0x7d,
		0xb0, 0x6b, 0x62, 0xd7, 0xc4, 0xae, 0x89, 0x5d, 0x93, 0x70, 0xbd, 0x6b, 0xe9, 0xf4, 0xb1, 0xb0,
		0x59, 0x9e, 0x69, 0x18, 0x5b, 0x4b, 0xe7, 0x8f, 0xc9, 0x1f, 0x8d, 0x67, 0x5e, 0x09, 0x75, 0x02,
		0x59, 0x04, 0x2c, 0x1a, 0xef, 0xa1, 0xbb, 0x98, 0x7a, 0x74, 0xa3, 0xec, 0x76, 0x08, 0x99, 0xfc,
		0x69, 0xe9, 0x7c, 0x0d, 0x49, 0x14, 0xb6, 0x8f, 0xee, 0x96, 0xed, 0xce, 0x21, 0xd1, 0xfb, 0xd0,
		0x73, 0xac, 0xf5, 0x2e, 0xc3, 0x6e, 0xa9, 0x0a, 0xb7, 0x24, 0xea, 0x96, 0xd0, 0xea, 0x61, 0x67,
		0x3a, 0x8e, 0xec, 0xac, 0xa3, 0xc6, 0xf2, 0xdc, 0x89, 0x4e, 0x24, 0x9a, 0x37, 0x2e, 0xc4, 0x63,
		0xe4, 0x5e, 0x28, 0xcb, 0x45, 0xc1, 0x51, 0x3d, 0xf5, 0x2f, 0x47, 0x55, 0x1f, 0x49, 0xca, 0x60,
		0xd2, 0xbd, 0x0e, 0x8a, 0x2e, 0x01, 0x01, 0xb7, 0xb9, 0x86, 0xde, 0x34, 0xa3, 0x61, 0x53, 0x5e,
		0x3b, 0xaf, 0x84, 0xda, 0x79, 0x19, 0xd2, 0x29, 0x51, 0x3b, 0x0f, 0xb5, 0xf3, 0x50, 0x3b, 0x0f,
		0x65, 0x1b, 0x70, 0x5a, 0xb4, 0x4d, 0x2f, 0x9c, 0x98, 0x37, 0x4e, 0xc4, 0x2b, 0xeb, 0x61, 0x47,
		0x28, 0xdb, 0xb0, 0xdc, 0xc5, 0xa0, 0x6c, 0xc3, 0xcc, 0x17, 0x47, 0x8a, 0x94, 0xd2, 0xc2, 0x45,
		0x8a, 0x94, 0xe0, 0x12, 0x40, 0xd9, 0x86, 0x74, 0xc9, 0x67, 0x46, 0x16, 0x44, 0x39, 0x94, 0x88,
		0x43, 0x89, 0x38, 0x70, 0x0d, 0x70, 0x0d, 0x70, 0x0d, 0x70, 0x0d, 0x70, 0x0d, 0x70, 0x0d, 0x70,
		0x0d, 0x70, 0x0d, 0x70, 0x0d, 0x70, 0x8d, 0xdc, 0x70, 0x8d, 0xb6, 0xd7, 0x77, 0x39, 0xf3, 0x35,
		0xa6, 0x82, 0x44, 0x77, 0xd0, 0x03, 0xb5, 0x8b, 0x80, 0xda, 0x80, 0xda, 0x80, 0xda, 0x69, 0x84,
		0xda, 0xd4, 0x87, 0xb0, 0x53, 0x81, 0xa4, 0xdd, 0x66, 0x41, 0x60, 0x0d, 0xff, 0xd2, 0x51, 0xb9,
		0x71, 0x51, 0x2d, 0x99, 0xbf, 0x9f, 0xa6, 0x05, 0xa3, 0x47, 0x3b, 0xd0, 0xee, 0xd8, 0x92, 0x70,
		0x70, 0xc9, 0x39, 0xba, 0xa4, 0x1c, 0x5e, 0xe2, 0x8e, 0x2f, 0x71, 0x07, 0x98, 0xa8, 0x23, 0xd4,
		0x0c, 0x2d, 0x35, 0x59, 0x8c, 0x36, 0x2d, 0x62, 0x15, 0x08, 0xab, 0x96, 0x13, 0xc8, 0x8c, 0xd0,
		0x99, 0x18, 0xa1, 0x57, 0xa1, 0xd0, 0xaf, 0x54, 0x24, 0xaa, 0x58, 0x24, 0xad, 0x5c, 0x6c, 0x8d,
		0xba, 0x26, 0x4f, 0x61, 0x13, 0x50, 0x34, 0x12, 0x55, 0x36, 0x16, 0x96, 0x4a, 0xf1, 0xb4, 0x5c,
		0xae, 0x9e, 0x94, 0xcb, 0x85, 0x93, 0xe3, 0x93, 0xc2, 0x59, 0xa5, 0x52, 0xac, 0x16, 0x2b, 0x58,
		0x3d, 0x99, 0xd8, 0xad, 0xf4, 0x8f, 0x9e, 0x95, 0x0c, 0x0e, 0x0d, 0xd6, 0x39, 0xe1, 0x02, 0x3e,
		0xfb, 0xff, 0xb3, 0x76, 0x82, 0xdc, 0x63, 0x72, 0x3f, 0x70, 0x0f, 0x70, 0x0f, 0x70, 0x0f, 0x70,
		0x0f, 0x70, 0x0f, 0x70, 0x0f, 0x70, 0x0f, 0x70, 0x0f, 0x70, 0x0f, 0xac, 0x1e, 0x70, 0x8f, 0x9c,
		0x70, 0x0f, 0x9f, 0x71, 0xdf, 0x61, 0x1d, 0x2b, 0xe2, 0x04, 0xff, 0xdb, 0x67, 0x41, 0x12, 0x24,
		0x64, 0xd5, 0x8d, 0xc1, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0xc0,
		0x46, 0xc0, 0x46, 0xc0, 0x46, 0xb0, 0x7a, 0xc0, 0x46, 0x72, 0xc2, 0x46, 0xb8, 0xf3, 0xc2, 0xbc,
		0x3e, 0x4f, 0x9e, 0x8d, 0xac, 0xba, 0x31, 0xd8, 0x08, 0xd8, 0x08, 0xd8, 0x08, 0xd8, 0x08, 0xd8,
		0x08, 0xd8, 0x08, 0xd8, 0x08, 0xd8, 0x08, 0xd8, 0x08, 0x56, 0x0f, 0xd8, 0x48, 0x1a, 0xd9, 0x48,
		0xae, 0x2b, 0xeb, 0x6a, 0x2d, 0xe0, 0x1a, 0xd6, 0x25, 0x3d, 0xd2, 0x94, 0x73, 0x37, 0xfa, 0xfa,
		0xdc, 0xef, 0xb7, 0xb9, 0x3b, 0x06, 0x30, 0x0f, 0xe1, 0x77, 0x7d, 0xac, 0xd9, 0xf6, 0xe3, 0x43,
		0xf8, 0x45, 0x3e, 0x0e, 0xbf, 0xdc, 0xf8, 0xff, 0x1f, 0xef, 0xc3, 0x2f, 0xf5, 0x78, 0x31, 0xf9,
		0x3a, 0x39, 0x48, 0xa8, 0xf4, 0x19, 0xf7, 0x6d, 0x37, 0x78, 0x71, 0xb8, 0x65, 0x73, 0xce, 0x5e,
		0x74, 0x24, 0x28, 0xcd, 0x9d, 0xcb, 0xbd, 0xbd, 0x19, 0x2a, 0x9a, 0x20, 0xcd, 0x72, 0xeb, 0xac,
		0x16, 0x69, 0x96, 0xc9, 0xed, 0x57, 0xfa, 0x2b, 0x9a, 0xf4, 0x1d, 0x97, 0x9f, 0x6a, 0xac, 0x65,
		0x52, 0x41, 0x2d, 0x93, 0x64, 0x19, 0x28, 0x6a, 0x99, 0xa4, 0x99, 0x61, 0x26, 0x5b, 0xcb, 0xa4,
		0x54, 0x41, 0x25, 0x93, 0x74, 0x51, 0x39, 0x54, 0x32, 0x91, 0xe2, 0x25, 0x51, 0xaf, 0xf6, 0x24,
		0xfa, 0xc1, 0x03, 0x66, 0x03, 0x66, 0x03, 0x66, 0x03, 0x66, 0x93, 0xb2, 0x79, 0xaf, 0xcf, 0x1d,
		0xf7, 0x39, 0x6a, 0x05, 0x9f, 0xa1, 0x2e, 0xf0, 0x29, 0xdf, 0x11, 0xac, 0x6f, 0x76, 0xf0, 0x8d,
		0x75, 0x92, 0xd8, 0x18, 0x26, 0xb7, 0xc2, 0xfe, 0x80, 0xfd, 0x01, 0xfb, 0x03, 0xf6, 0x07, 0xc2,
		0xf5, 0xde, 0xf6, 0x5f, 0x7b, 0x3c, 0xda, 0x1d, 0x2c, 0x3e, 0xbc, 0x21, 0xb6, 0x08, 0xb5, 0x2d,
		0x22, 0x34, 0xf4, 0xa8, 0x6d, 0xb0, 0xbe, 0xfd, 0x61, 0xfe, 0x3e, 0xd8, 0x1c, 0xb0, 0x39, 0x60,
		0x73, 0xc0, 0xe6, 0x40, 0xb8, 0xde, 0x9d, 0x9e, 0xc6, 0xe6, 0xe7, 0xd1, 0x9e, 0x70, 0xa6, 0x61,
		0xec, 0xf1, 0xdc, 0x7c, 0xce, 0x70, 0xe3, 0xf9, 0x32, 0x1a, 0xcf, 0x0b, 0xde, 0x28, 0x6c, 0x6d,
		0xdd, 0xfa, 0xf5, 0xb9, 0x68, 0x9d, 0xb5, 0x46, 0xff, 0x5b, 0x0c, 0xff, 0xfa, 0x59, 0x1a, 0xfc,
		0x2a, 0x7d, 0x2e, 0x58, 0xe5, 0xf1, 0x6f, 0x4b, 0x95, 0xcf, 0x05, 0xab, 0xd2, 0x3a, 0xd8, 0xff,
		0xf2, 0xe5, 0x50, 0xf4, 0x9a, 0x83, 0x9f, 0xc7, 0x03, 0xb4, 0x59, 0xdf, 0x7c, 0xb7, 0x71, 0x9b,
		0xf5, 0x04, 0xde, 0x46, 0x06, 0xdb, 0x8a, 0xbf, 0xcb, 0xb0, 0x5b, 0xaa, 0xc2, 0x2d, 0x89, 0xba,
		0xa5, 0x65, 0x2d, 0xf7, 0x4f, 0x06, 0x6f, 0x7f, 0xb9, 0xa2, 0x33, 0xff, 0xc9, 0xe0, 0x7c, 0xc5,
		0xbf, 0x54, 0x07, 0xe7, 0x31, 0xc7, 0xa8, 0xac, 0xe8, 0xee, 0x5f, 0x5a, 0x75, 0x41, 0x79, 0xc5,
		0x05, 0xc7, 0xab, 0x2e, 0x38, 0x5e, 0x71, 0xc1, 0xca, 0xaf, 0x54, 0x5a, 0x71, 0x41, 0x65, 0xf0,
		0x6b, 0xe1, 0xf3, 0xfb, 0xcb, 0x3f, 0x5a, 0x1d, 0x1c, 0xfc, 0x5a, 0xf5, 0x6f, 0x27, 0x83, 0x5f,
		0xe7, 0x07, 0x07, 0x70, 0xd4, 0xb1, 0x1d, 0x35, 0x96, 0x67, 0xf2, 0xcb, 0x33, 0x7b, 0x1b, 0x57,
		0x7e, 0x0e, 0x91, 0x53, 0xd5, 0x79, 0x5c, 0x53, 0xf4, 0x70, 0x02, 0x51, 0xc3, 0x34, 0x2b, 0x5c,
		0xfd, 0x6d, 0xa8, 0x8d, 0xa0, 0xf8, 0x1e, 0x4d, 0xf6, 0x83, 0xfb, 0xb6, 0xd5, 0x77, 0x03, 0x6e,
		0x7f, 0xed, 0xd2, 0x70, 0x76, 0xf3, 0xaf, 0x6f, 0x8c, 0x6e, 0x77, 0x20, 0x5c, 0x53, 0x13, 0xa8,
		0x78, 0x78, 0x78, 0x74, 0x78, 0x78, 0x34, 0x5a, 0x4e, 0x47, 0xfc, 0xb5, 0xc7, 0x8c, 0xff, 0x6b,
		0xfc, 0x9f, 0x91, 0x50, 0x73, 0x7e, 0x5f, 0xbb, 0x6c, 0x7c, 0x7a, 0xf8, 0x3f, 0x84, 0x08, 0x52,
		0x97, 0x80, 0x36, 0x2b, 0x9c, 0x85, 0x33, 0x4e, 0xac, 0xe1, 0xe8, 0x96, 0xcb, 0xe6, 0x64, 0xb2,
		0x38, 0xaf, 0x24, 0x6d, 0x1e, 0x74, 0x6f, 0xbb, 0x3b, 0x8c, 0xaa, 0xe5, 0x13, 0x7b, 0x6e, 0xad,
		0x1e, 0x9b, 0x60, 0x6d, 0x4b, 0x24, 0x72, 0xa8, 0xad, 0x38, 0xf9, 0xf5, 0xa1, 0xf0, 0x66, 0xcd,
		0xd1, 0xd6, 0xa6, 0xfa, 0x42, 0xa7, 0x07, 0x39, 0xe1, 0x70, 0x8a, 0x2b, 0x8d, 0xa6, 0x75, 0xd5,
		0xf4, 0x7c, 0xa6, 0xa4, 0x38, 0x10, 0xe1, 0x79, 0x0c, 0xfd, 0xf9, 0x0b, 0xf5, 0x76, 0xa1, 0xed,
		0x7c, 0x45, 0xdb, 0x06, 0xa1, 0xe5, 0xfc, 0x64, 0xbb, 0x28, 0x8b, 0xaa, 0x35, 0x94, 0x49, 0x7d,
		0x72, 0x3b, 0xad, 0xbb, 0x4e, 0xaa, 0x9c, 0x11, 0x1f, 0xd1, 0x92, 0x1f, 0xcd, 0xea, 0x38, 0x92,
		0xd5, 0x77, 0x14, 0x9b, 0x04, 0x82, 0xd4, 0x72, 0xf4, 0x9a, 0x2c, 0x86, 0xa4, 0x3e, 0x6a, 0x4d,
		0x17, 0xd1, 0x26, 0x3f, 0x52, 0xd5, 0x7b, 0x94, 0xaa, 0xe3, 0x08, 0x55, 0xcf, 0xd1, 0xa9, 0xd6,
		0x43, 0x6a, 0xad, 0x47, 0xa5, 0x3a, 0xcf, 0x22, 0xb4, 0x9f, 0x41, 0x64, 0xf8, 0x48, 0xb4, 0xa5,
		0x63, 0xba, 0x93, 0x50, 0xd6, 0x33, 0x7e, 0xf4, 0xd9, 0x4a, 0x73, 0xcc, 0x8b, 0x5e, 0x37, 0x52,
		0x85, 0x1b, 0x59, 0xe5, 0x46, 0x70, 0x46, 0xb4, 0x33, 0x47, 0x98, 0x99, 0x77, 0xac, 0x58, 0x86,
		0x3b, 0x71, 0x54, 0x99, 0xd6, 0xa3, 0xbf, 0x56, 0x5a, 0x8e, 0xac, 0x08, 0x64, 0xae, 0xb6, 0xe7,
		0xba, 0x2c, 0xcc, 0x93, 0xb6, 0xec, 0xaf, 0x9e, 0xcf, 0x35, 0x68, 0x1a, 0x8b, 0xb7, 0x80, 0xba,
		0x01, 0x75, 0x03, 0xea, 0x46, 0xae, 0xd4, 0x0d, 0x1d, 0x25, 0x47, 0x35, 0x94, 0x18, 0xd5, 0x54,
		0xc0, 0x45, 0x03, 0x2b, 0xd1, 0x59, 0xb0, 0x45, 0x77, 0xa1, 0x96, 0xc4, 0x6a, 0x73, 0xe8, 0xaf,
		0xc9, 0xa1, 0xa3, 0xc4, 0xb9, 0xce, 0x42, 0x2c, 0x5b, 0x28, 0xe9, 0xb9, 0x4b, 0x6f, 0x1b, 0x88,
		0x34, 0x49, 0x44, 0xda, 0xee, 0x7a, 0x01, 0xd3, 0x8b, 0x48, 0xc7, 0xb7, 0x00, 0x22, 0x05, 0x22,
		0x05, 0x22, 0x05, 0x22, 0x05, 0x22, 0x05, 0x22, 0x05, 0x22, 0x05, 0x22, 0x05, 0x22, 0x05, 0x22,
		0x5d, 0x86, 0x48, 0x9f, 0x6c, 0xa7, 0xdb, 0xf7, 0x35, 0x63, 0xd2, 0xe8, 0x26, 0x40, 0xa5, 0x40,
		0xa5, 0x40, 0xa5, 0x40, 0xa5, 0x40, 0xa5, 0x40, 0xa5, 0x40, 0xa5, 0x40, 0xa5, 0x40, 0xa5, 0x40,
		0xa5, 0xcb, 0x50, 0xa9, 0xd7, 0x63, 0xae, 0x5e, 0x48, 0x3a, 0xba, 0x03, 0xf0, 0x28, 0xf0, 0x28,
		0xf0, 0x28, 0xf0, 0x28, 0xf0, 0x28, 0xf0, 0x28, 0xf0, 0x28, 0xf0, 0x28, 0xf0, 0x28, 0xf0, 0xe8,
		0x32, 0x3c, 0x3a, 0x6e, 0x95, 0xaf, 0x17, 0x92, 0x46, 0x37, 0x01, 0x2a, 0x05, 0x2a, 0x05, 0x2a,
		0x05, 0x2a, 0x05, 0x2a, 0x05, 0x2a, 0x05, 0x2a, 0x05, 0x2a, 0x05, 0x2a, 0x05, 0x2a, 0x8d, 0x5e,
		0x22, 0xf3, 0x7d, 0xcf, 0x0f, 0x2c, 0x9f, 0xb5, 0x99, 0xf3, 0x9d, 0xb0, 0x17, 0x53, 0xb4, 0x15,
		0xbd, 0xbd, 0x01, 0xd0, 0x28, 0xd0, 0x28, 0xd0, 0x28, 0xd0, 0x28, 0xd0, 0x28, 0xd0, 0x28, 0xd0,
		0x28, 0xd0, 0x28, 0xd0, 0x28, 0xd0, 0x68, 0xf4, 0x12, 0x5f, 0x58, 0x10, 0xd8, 0xcf, 0x4c, 0x27,
		0x1e, 0x5d, 0xbc, 0x05, 0x10, 0x29, 0x10, 0x29, 0x10, 0x29, 0x10, 0x29, 0x10, 0x29, 0x10, 0x29,
		0x10, 0x29, 0x10, 0x29, 0x10, 0x29, 0x10, 0xe9, 0x22, 0x22, 0x0d, 0x46, 0x5b, 0xae, 0x2e, 0x34,
		0x1a, 0x0e, 0x0f, 0x24, 0x0a, 0x24, 0x0a, 0x24, 0x0a, 0x24, 0x0a, 0x24, 0x0a, 0x24, 0x0a, 0x24,
		0x0a, 0x24, 0x0a, 0x24, 0x0a, 0x24, 0x1a, 0xbd, 0xc4, 0x71, 0x4b, 0x28, 0x62, 0x00, 0x1a, 0x8e,
		0x0a, 0xdc, 0x09, 0xdc, 0x09, 0xdc, 0x99, 0x2b, 0xdc, 0x19, 0x70, 0xdf, 0x71, 0x9f, 0x75, 0x74,
		0x52, 0x39, 0xdd, 0x21, 0x9f, 0x3b, 0x8e, 0xa1, 0xa7, 0x77, 0xbb, 0x93, 0x81, 0xe1, 0x79, 0xe1,
		0x79, 0xe1, 0x79, 0x73, 0xe5, 0x79, 0xfb, 0x8e, 0xcb, 0x8b, 0x55, 0x0d, 0x9e, 0xb7, 0x0a, 0xba,
		0x0f, 0xba, 0x0f, 0xba, 0x2f, 0xf6, 0x6a, 0xab, 0x95, 0xca, 0x31, 0xf8, 0x3d, 0xf8, 0xfd, 0x36,
		0x47, 0xc8, 0x47, 0x8b, 0xec, 0x51, 0x8f, 0xe6, 0x0c, 0xf6, 0xaa, 0xe6, 0x76, 0xdb, 0x6e, 0x07,
		0x74, 0xcd, 0xaa, 0xc7, 0xe3, 0xa5, 0xac, 0x5b, 0x75, 0x01, 0xdd, 0xaa, 0x53, 0x00, 0xe5, 0xd1,
		0xad, 0x3a, 0xfe, 0x13, 0x91, 0x75, 0xab, 0x6e, 0x4f, 0x6c, 0x80, 0x3e, 0x19, 0x7f, 0x38, 0x2e,
		0x2d, 0xc7, 0x2f, 0x82, 0xe3, 0x83, 0xe3, 0x83, 0xe3, 0x53, 0x3c, 0x29, 0x95, 0x03, 0x89, 0x06,
		0xec, 0x79, 0x3e, 0xa7, 0x5f, 0x52, 0x13, 0x23, 0x08, 0x47, 0x27, 0x7e, 0xd9, 0x97, 0xec, 0xc9,
		0xee, 0x77, 0xb9, 0x96, 0x8e, 0x93, 0x66, 0xf9, 0x8c, 0xb6, 0xe7, 0x21, 0x71, 0xdf, 0x4d, 0x62,
		0xd5, 0x54, 0x9b, 0x67, 0xd5, 0xe9, 0x61, 0xf5, 0x7b, 0x5a, 0xdd, 0x1e, 0x37, 0x31, 0xcf, 0x9b,
		0x98, 0x07, 0x4e, 0xc4, 0x13, 0x6b, 0x62, 0xf6, 0xc4, 0x2b, 0x9e, 0x5c, 0x85, 0x5d, 0xea, 0x54,
		0x2d, 0xb7, 0xff, 0xf2, 0x95, 0xf9, 0x1a, 0x7b, 0x56, 0x57, 0x35, 0x0c, 0xad, 0x47, 0xa2, 0x9d,
		0xfc, 0xd1, 0x63, 0xa4, 0x86, 0x6e, 0xc9, 0x36, 0xba, 0x89, 0x66, 0xe9, 0x36, 0xba, 0x4f, 0x52,
		0x1a, 0xdf, 0x74, 0xe1, 0xea, 0xd6, 0xfa, 0x34, 0xd9, 0xf2, 0xfc, 0x12, 0xd0, 0x28, 0xed, 0x2e,
		0x2c, 0x01, 0x8d, 0x12, 0x6f, 0x1e, 0x96, 0xc1, 0x5e, 0x36, 0x46, 0x6d, 0xa5, 0x7a, 0x23, 0x23,
		0x96, 0x68, 0x17, 0xc6, 0x7f, 0x7d, 0xf6, 0xb8, 0xe5, 0xb5, 0xad, 0xb6, 0xf7, 0xd2, 0xf3, 0x59,
		0x10, 0xb0, 0x8e, 0xd5, 0x65, 0xf6, 0xd3, 0xf0, 0x66, 0x69, 0xd5, 0xee, 0x09, 0xa7, 0xd8, 0x0c,
		0x58, 0xdb, 0x67, 0xdc, 0xfa, 0x0f, 0x7b, 0xd5, 0x47, 0xbf, 0x66, 0xee, 0x01, 0x1e, 0x02, 0x1e,
		0x02, 0x1e, 0x02, 0x1e, 0x42, 0xb8, 0xde, 0x7d, 0xaf, 0xcf, 0x1d, 0xf7, 0xd9, 0xea, 0xd9, 0x41,
		0x10, 0x2e, 0x1f, 0x7d, 0x64, 0x84, 0x28, 0x42, 0x0f, 0x5b, 0x65, 0xc6, 0xb7, 0x4a, 0xeb, 0x9b,
		0x1d, 0x7c, 0x23, 0x2c, 0xb1, 0xb1, 0x66, 0xc7, 0x9c, 0xdc, 0x0a, 0x1b, 0x27, 0x36, 0x4e, 0x6c,
		0x9c, 0xd8, 0x38, 0x09, 0xd7, 0x7b, 0xdb, 0x7f, 0xed, 0xf1, 0x68, 0xdb, 0xb4, 0xf8, 0xf0, 0x86,
		0xd8, 0x3b, 0xb1, 0x77, 0x6a, 0xd9, 0x3b, 0x43, 0x0f, 0x68, 0xd9, 0x9d, 0xce, 0xf0, 0xe1, 0x35,
		0x6e, 0x9c, 0xf3, 0xf7, 0xc1, 0xae, 0x89, 0x5d, 0x13, 0xbb, 0x26, 0x76, 0x4d, 0xc2, 0xf5, 0xee,
		0xf4, 0x34, 0x79, 0x97, 0xb9, 0xcd, 0xf2, 0x4c, 0xc3, 0xd8, 0xe3, 0xb9, 0xc9, 0xdc, 0xa9, 0xd7,
		0x74, 0xe6, 0xbf, 0x97, 0x35, 0xce, 0xfd, 0x22, 0x60, 0xd1, 0x78, 0x8f, 0x3b, 0x9b, 0x73, 0xe6,
		0xbb, 0xda, 0x5e, 0x47, 0x74, 0xa3, 0xfd, 0xcf, 0x05, 0xeb, 0xac, 0xf5, 0xeb, 0x73, 0xd1, 0x3a,
		0x6b, 0x8d, 0xfe, 0xb7, 0x18, 0xfe, 0xf5, 0xb3, 0x34, 0xf8, 0x55, 0xfa, 0x5c, 0xb0, 0xca, 0xe3,
		0xdf, 0x96, 0x2a, 0x9f, 0x0b, 0x56, 0xa5, 0x75, 0xb0, 0xff, 0xe5, 0xcb, 0xa1, 0xe8, 0x35, 0x07,
		0x3f, 0x8f, 0x07, 0xa6, 0xb6, 0xc7, 0x68, 0xe9, 0x7c, 0x0d, 0xb7, 0x0f, 0x8d, 0x7f, 0x26, 0xf6,
		0x2e, 0xfe, 0xdc, 0x4f, 0xea, 0x6d, 0x1c, 0xfc, 0xa6, 0xf1, 0x7d, 0xe8, 0x39, 0xd6, 0x7a, 0x97,
		0x61, 0xb7, 0x54, 0x85, 0x5b, 0x12, 0x75, 0x4b, 0xe1, 0xaa, 0xb6, 0xad, 0xa7, 0x9a, 0xf5, 0xa1,
		0xf5, 0xb3, 0xf8, 0xae, 0x3c, 0x38, 0x3f, 0xf8, 0x79, 0x32, 0x78, 0xfb, 0xcb, 0x5f, 0xcb, 0x3e,
		0x56, 0x7c, 0x77, 0x32, 0x38, 0x5f, 0xf1, 0x2f, 0xd5, 0xc1, 0x79, 0xcc, 0x31, 0x2a, 0x83, 0xfd,
		0x85, 0x8f, 0x0e, 0x7f, 0x5f, 0x5a, 0x75, 0x41, 0x79, 0xc5, 0x05, 0xc7, 0xab, 0x2e, 0x38, 0x5e,
		0x71, 0xc1, 0xca, 0xaf, 0x54, 0x5a, 0x71, 0x41, 0x65, 0xf0, 0x6b, 0xe1, 0xf3, 0xfb, 0xcb, 0x3f,
		0x5a, 0x1d, 0x1c, 0xfc, 0x5a, 0xf5, 0x6f, 0x27, 0x83, 0x5f, 0xe7, 0x07, 0x07, 0x70, 0xd4, 0xb1,
		0x1d, 0x35, 0x96, 0x67, 0xf2, 0xcb, 0x33, 0x7b, 0x1b, 0x17, 0xe2, 0x31, 0x72, 0x2f, 0x94, 0xa5,
		0x2a, 0x36, 0x5f, 0xd3, 0x0b, 0xd2, 0x94, 0xdb, 0x38, 0x4a, 0xe9, 0x3b, 0x1a, 0x27, 0xfc, 0xec,
		0x50, 0x01, 0x94, 0x51, 0xd2, 0x26, 0x79, 0x66, 0xd4, 0x68, 0xd8, 0x94, 0x27, 0x46, 0x95, 0x90,
		0x18, 0x95, 0x21, 0x9d, 0x12, 0x89, 0x51, 0x48, 0x8c, 0x22, 0x1c, 0x1b, 0x89, 0x51, 0x38, 0x21,
		0x32, 0x70, 0x42, 0x94, 0x2a, 0x0f, 0x9c, 0x88, 0x27, 0xd6, 0xc3, 0x88, 0x90, 0x18, 0xb5, 0xdc,
		0xc5, 0x20, 0x31, 0x6a, 0xe6, 0x8b, 0x23, 0x31, 0x4a, 0x69, 0xe1, 0x22, 0x31, 0x4a, 0x70, 0x09,
		0x20, 0x31, 0x2a, 0x5d, 0x92, 0x99, 0x91, 0x05, 0x21, 0x0e, 0xf9, 0x3f, 0xc8, 0xff, 0x01, 0xdc,
		0x06, 0xdc, 0x06, 0xdc, 0x26, 0x5d, 0xef, 0x19, 0xce, 0xff, 0x41, 0x9a, 0x0b, 0xd2, 0x5c, 0xb0,
		0x3f, 0x60, 0x7f, 0xc0, 0xfe, 0x80, 0x34, 0x97, 0x4c, 0x6d, 0x11, 0xc8, 0xe6, 0xc0, 0xe6, 0x80,
		0xcd, 0x01, 0x9b, 0x43, 0xe6, 0x37, 0x07, 0x64, 0x73, 0x2c, 0xfd, 0x83, 0x6c, 0x0e, 0x31, 0xcf,
		0x8c, 0x6c, 0x8e, 0xb8, 0x7f, 0x90, 0xcd, 0x81, 0x6c, 0x8e, 0x94, 0xbb, 0x25, 0x64, 0x73, 0x08,
		0xbb, 0x25, 0x84, 0xcb, 0x23, 0x9b, 0x23, 0xed, 0x8e, 0x1a, 0xcb, 0x13, 0xd9, 0x1c, 0x09, 0xf3,
		0x21, 0x23, 0xcd, 0x87, 0xc8, 0x48, 0x5a, 0x50, 0x4d, 0x5a, 0x20, 0xe8, 0xcb, 0x44, 0xf7, 0x36,
		0xb6, 0xdb, 0x51, 0x86, 0xfd, 0xe0, 0xbe, 0x6d, 0xf5, 0xdd, 0x80, 0xdb, 0x5f, 0xbb, 0x34, 0x9c,
		0xdd, 0xfc, 0xeb, 0x1b, 0xa3, 0xdb, 0x1d, 0x34, 0x64, 0x10, 0x1c, 0x1e, 0x1e, 0x1d, 0x1e, 0x8e,
		0x33, 0x57, 0x8e, 0xf8, 0x6b, 0x8f, 0x19, 0xff, 0xd7, 0xf8, 0x3f, 0x23, 0xa1, 0xe6, 0xbc, 0x59,
		0xbb, 0xa8, 0x5d, 0x3c, 0xfc, 0x9f, 0x8c, 0xa5, 0x17, 0x84, 0x33, 0x9e, 0xe5, 0xe4, 0x82, 0x38,
		0xaf, 0x24, 0x6d, 0x1e, 0x74, 0x6f, 0xbb, 0x3b, 0x4c, 0x3e, 0x5a, 0xe8, 0x91, 0x74, 0x8e, 0x1b,
		0x7d, 0x3f, 0xee, 0xf7, 0xdb, 0xdc, 0x1d, 0xfb, 0x80, 0x87, 0xf0, 0xcb, 0x3c, 0xd6, 0x6c, 0xfb,
		0xf1, 0x21, 0xbc, 0xd3, 0xc7, 0xe1, 0xdd, 0xc7, 0xff, 0xff, 0xd8, 0x1c, 0xdd, 0x75, 0x5b, 0x9d,
		0xfb, 0xf6, 0x12, 0x5c, 0x0f, 0x43, 0x37, 0x32, 0x9c, 0x10, 0x35, 0xea, 0x6c, 0x5e, 0x39, 0x01,
		0xaf, 0x71, 0xae, 0x96, 0x44, 0x63, 0x5e, 0x3b, 0x6e, 0xbd, 0xcb, 0x86, 0x4e, 0x41, 0x31, 0x6e,
		0xd2, 0xbc, 0xb6, 0x7f, 0xcc, 0x8c, 0x54, 0x3c, 0x2d, 0x97, 0xab, 0x27, 0xe5, 0x72, 0xe1, 0xe4,
		0xf8, 0xa4, 0x70, 0x56, 0xa9, 0x14, 0xab, 0x45, 0x85, 0x28, 0x50, 0xf3, 0xd6, 0xef, 0x30, 0x9f,
		0x75, 0xde, 0x0f, 0x27, 0xce, 0xed, 0x77, 0xbb, 0x14, 0x43, 0x7d, 0x0a, 0x98, 0xaf, 0x14, 0xc0,
		0x29, 0xfb, 0xfe, 0x89, 0xfc, 0x80, 0x1e, 0xfb, 0x57, 0x30, 0x7c, 0x11, 0x83, 0x97, 0xb3, 0x74,
		0x71, 0x3b, 0x15, 0xbb, 0x42, 0xf0, 0x8d, 0xaa, 0xbe, 0x49, 0xe2, 0x37, 0x28, 0x36, 0xa7, 0xf1,
		0x67, 0x46, 0x60, 0x56, 0x24, 0x73, 0x79, 0x95, 0x72, 0x76, 0x25, 0x73, 0x73, 0xa5, 0x73, 0x70,
		0x55, 0x4e, 0x97, 0xd5, 0x4f, 0x8f, 0x55, 0xc1, 0x2d, 0xd9, 0xe9, 0x2f, 0x19, 0x5c, 0x25, 0x39,
		0xbd, 0xd5, 0x6b, 0xe7, 0xb2, 0xb9, 0xaa, 0xe6, 0xd8, 0x17, 0x4a, 0xbe, 0xaa, 0xc9, 0x62, 0x09,
		0x47, 0x91, 0x05, 0x1b, 0x4a, 0xa1, 0x1b, 0xca, 0x21, 0x1a, 0x14, 0xa1, 0x18, 0x74, 0x21, 0x17,
		0x54, 0xcc, 0x90, 0x3c, 0x84, 0x82, 0x9c, 0xfb, 0x91, 0x86, 0x44, 0x24, 0x0b, 0x8f, 0x95, 0x43,
		0x19, 0x66, 0x76, 0x13, 0xdf, 0x71, 0x55, 0x7a, 0xe3, 0x2a, 0x86, 0xaa, 0x49, 0xc0, 0x15, 0x89,
		0x0d, 0x81, 0xab, 0xcc, 0xd7, 0xb4, 0x61, 0xb8, 0x7c, 0xb0, 0x1f, 0x7c, 0x0c, 0x7c, 0x4c, 0x6e,
		0x7d, 0x8c, 0xd3, 0x61, 0x2e, 0x77, 0xf8, 0xab, 0xcf, 0x9e, 0x28, 0x1c, 0x8d, 0x0a, 0x49, 0x6e,
		0x8c, 0xbf, 0xca, 0x7b, 0x3b, 0x20, 0x58, 0x7e, 0x93, 0x07, 0xac, 0xd5, 0x6a, 0x8f, 0x0f, 0xf5,
		0xfb, 0xbf, 0xd7, 0xef, 0x1f, 0x9b, 0xff, 0xba, 0xab, 0xab, 0x2e, 0xc2, 0x30, 0x2f, 0x34, 0x20,
		0x11, 0xab, 0x89, 0xeb, 0x05, 0xdd, 0xd7, 0x2e, 0x1b, 0x9f, 0x1e, 0xcc, 0x34, 0x94, 0x44, 0x22,
		0x7e, 0xb2, 0x91, 0x9e, 0xbb, 0xed, 0x56, 0xfc, 0xad, 0xa4, 0x7d, 0x03, 0xc4, 0x82, 0xa5, 0x62,
		0x81, 0xf8, 0x51, 0x9c, 0x80, 0x54, 0xb0, 0x47, 0x38, 0x73, 0x13, 0xa1, 0x54, 0x80, 0xfe, 0xc8,
		0xa9, 0xa2, 0xf2, 0x2a, 0x28, 0xa9, 0xea, 0xa9, 0xa0, 0x72, 0x2a, 0xa8, 0x9a, 0x71, 0x5f, 0x86,
		0xe4, 0xf2, 0x25, 0x5a, 0xb6, 0xa6, 0x90, 0x06, 0xb5, 0x59, 0x86, 0x8c, 0x67, 0x00, 0x9b, 0x97,
		0xf3, 0xfa, 0x4f, 0x6c, 0x98, 0x5b, 0xd1, 0x39, 0x95, 0x9f, 0xcb, 0xf5, 0x8f, 0xbb, 0xfa, 0x21,
		0xd6, 0x3c, 0x40, 0x4c, 0xa9, 0x4f, 0x48, 0xda, 0x8b, 0x29, 0xe5, 0xc5, 0x96, 0xee, 0x44, 0x98,
		0x81, 0x38, 0x03, 0x10, 0x45, 0xfa, 0xd2, 0x88, 0x5e, 0x1a, 0xb9, 0x4b, 0x21, 0xf4, 0x14, 0x2f,
		0xe9, 0xcd, 0x5b, 0xd7, 0x9a, 0xa5, 0xbc, 0x27, 0xf0, 0x38, 0x71, 0x1f, 0x43, 0xe4, 0xeb, 0x9b,
		0x6b, 0x6d, 0x69, 0xb9, 0xcb, 0x5a, 0xfe, 0xb0, 0x8b, 0x8f, 0xb2, 0xe4, 0x31, 0x4c, 0xbb, 0x6b,
		0xfb, 0x2f, 0xab, 0x53, 0xce, 0xa2, 0xf5, 0x3e, 0xfe, 0xdc, 0x8a, 0x89, 0x58, 0x6f, 0x91, 0x1b,
		0x2d, 0x31, 0x8e, 0x05, 0xce, 0x59, 0xde, 0xba, 0x2f, 0x23, 0x62, 0x74, 0xc2, 0xc6, 0x26, 0x6c,
		0x64, 0x0b, 0xc6, 0x35, 0xfa, 0xea, 0x44, 0x0b, 0x70, 0x93, 0xe4, 0x3c, 0x7a, 0x6d, 0xf1, 0xdd,
		0xef, 0xe8, 0xe3, 0xc4, 0xee, 0xb7, 0xa0, 0xc9, 0xfd, 0x6e, 0x5a, 0x04, 0x19, 0xf6, 0xc0, 0x1b,
		0x16, 0x09, 0x8d, 0x13, 0x8e, 0x7b, 0x5e, 0x61, 0xb6, 0x27, 0x6f, 0x32, 0xe6, 0xfc, 0x45, 0x99,
		0xc2, 0xa3, 0xeb, 0xe2, 0xe2, 0x78, 0xa1, 0x03, 0x3a, 0x61, 0x3d, 0x50, 0x46, 0xff, 0x93, 0x5a,
		0x6e, 0xaa, 0x12, 0x9f, 0xb2, 0xa4, 0xa7, 0x2c, 0xe1, 0xc9, 0x2e, 0x47, 0x3d, 0xfc, 0x4e, 0x3b,
		0xa5, 0x08, 0x9f, 0x6e, 0xf4, 0x97, 0x50, 0xdd, 0xec, 0x18, 0xb8, 0x3f, 0x86, 0x73, 0x72, 0x3a,
		0xe2, 0x86, 0xe5, 0x74, 0x04, 0x8d, 0xaa, 0x00, 0xa3, 0x82, 0x51, 0x29, 0x49, 0xdb, 0xd1, 0x5b,
		0xeb, 0x32, 0xfb, 0x49, 0x4c, 0xc6, 0x8e, 0x3c, 0xfb, 0x89, 0xc0, 0x35, 0x77, 0x63, 0xbb, 0x3d,
		0x3c, 0x1c, 0x01, 0xfa, 0x23, 0xa7, 0x93, 0xa4, 0x55, 0x8a, 0x45, 0xa8, 0x48, 0x45, 0xa6, 0x48,
		0x6f, 0x78, 0x25, 0xd8, 0xe6, 0x4e, 0xdb, 0xa6, 0x68, 0x1c, 0x89, 0xc8, 0x16, 0x22, 0xbf, 0x95,
		0x48, 0x6e, 0x29, 0xd2, 0x5b, 0x8b, 0xca, 0x32, 0x26, 0x59, 0xce, 0xaa, 0xcb, 0x9a, 0x6c, 0x79,
		0x93, 0x2d, 0x73, 0xaa, 0xe5, 0x9e, 0xcc, 0x49, 0x88, 0xf4, 0xe9, 0xab, 0x7a, 0x64, 0x87, 0x64,
		0x44, 0x87, 0x9e, 0x60, 0x49, 0x9f, 0x05, 0x92, 0x7e, 0x35, 0xaa, 0xe8, 0x37, 0x19, 0x01, 0x96,
		0x0e, 0x4b, 0x87, 0xa5, 0x53, 0x58, 0xba, 0xe0, 0x13, 0x12, 0xa4, 0xf3, 0x99, 0x3e, 0x7b, 0x62,
		0x3e, 0x73, 0xdb, 0xf2, 0x55, 0x6a, 0x08, 0x02, 0x59, 0x1a, 0xf5, 0xe6, 0x07, 0xe3, 0x5f, 0xb5,
		0x9b, 0x8f, 0x46, 0x6d, 0xb8, 0x94, 0x8c, 0x6b, 0xaf, 0xd3, 0xef, 0xb2, 0x73, 0xe3, 0xd2, 0xb7,
		0x9f, 0xb8, 0x61, 0x19, 0xfc, 0xb5, 0xc7, 0x3a, 0xec, 0xc9, 0x98, 0xb8, 0x9c, 0x2f, 0xee, 0x37,
		0xce, 0x7b, 0xc1, 0xf9, 0xd1, 0x11, 0xf7, 0xbc, 0x6e, 0x70, 0xe8, 0x30, 0xfe, 0x74, 0xe8, 0xf9,
		0xcf, 0x47, 0xdf, 0xf8, 0x4b, 0xf7, 0xa8, 0x33, 0xbc, 0xca, 0xfa, 0x6e, 0x77, 0xbb, 0x8e, 0x6b,
		0xb9, 0x8c, 0xbf, 0x78, 0x9d, 0xd1, 0x12, 0xb5, 0x5e, 0xc2, 0x71, 0xad, 0x42, 0x29, 0x65, 0x31,
		0x56, 0xd3, 0x97, 0x90, 0xe6, 0x30, 0xab, 0xe4, 0xdf, 0x52, 0xea, 0xa3, 0x36, 0x5a, 0x69, 0x48,
		0x7b, 0x60, 0xdf, 0x99, 0xef, 0xf0, 0x57, 0x85, 0xcc, 0x87, 0xc9, 0x08, 0xd8, 0xc9, 0xb1, 0x93,
		0xef, 0xe4, 0x4e, 0xae, 0x16, 0x29, 0xa9, 0x12, 0x21, 0x49, 0x13, 0x19, 0x19, 0x3d, 0xc8, 0xed,
		0x5d, 0xfd, 0xe6, 0xe2, 0xf6, 0xe6, 0x43, 0xe3, 0xe3, 0x63, 0xed, 0xaa, 0x76, 0x7f, 0xfd, 0xf8,
		0x50, 0xff, 0x7b, 0xfd, 0xbe, 0xd1, 0xfc, 0x97, 0xec, 0x4a, 0x22, 0x88, 0x89, 0x24, 0x0a, 0xf6,
		0xbc, 0xb8, 0x6f, 0x34, 0x1b, 0x17, 0xb5, 0x2b, 0x05, 0xaf, 0xff, 0x6e, 0xdb, 0xcf, 0x70, 0x5d,
		0xfb, 0xff, 0xdd, 0xde, 0x67, 0xfa, 0x01, 0x1a, 0x37, 0xd9, 0x7e, 0x80, 0x4f, 0x37, 0x7f, 0xdc,
		0xdc, 0xfe, 0xe3, 0x26, 0xcb, 0x8f, 0xf0, 0x8f, 0xda, 0xfd, 0x4d, 0xe3, 0xe6, 0x63, 0xd2, 0xe8,
		0xa7, 0x95, 0x32, 0xaf, 0x9f, 0x3b, 0x76, 0x33, 0x81, 0x61, 0x60, 0x37, 0x69, 0x66, 0x37, 0x74,
		0x6f, 0x09, 0xec, 0x26, 0xc6, 0x2b, 0xe2, 0xec, 0x07, 0x97, 0x67, 0x36, 0xe1, 0xd5, 0x60, 0x35,
		0x60, 0x35, 0xd0, 0x27, 0xa1, 0x4f, 0xea, 0xdf, 0xc1, 0x47, 0x1e, 0x7e, 0xe8, 0x74, 0xb0, 0x87,
		0xa7, 0x79, 0x0f, 0xa7, 0x7c, 0x4f, 0xd8, 0xc5, 0xe3, 0xec, 0xe2, 0xce, 0x0b, 0xb3, 0xda, 0x3e,
		0xb3, 0x39, 0x53, 0x88, 0x2a, 0x98, 0x1b, 0x05, 0xbb, 0x3a, 0x76, 0xf5, 0x9d, 0xdc, 0xd5, 0x87,
		0xab, 0x9c, 0x3b, 0xed, 0xff, 0x04, 0xd5, 0xb2, 0xc2, 0xd6, 0x2e, 0x51, 0xb1, 0xdc, 0xfc, 0xe4,
		0x8e, 0x5a, 0xd8, 0x9a, 0xae, 0xed, 0x7a, 0x01, 0x6b, 0x7b, 0x6e, 0x47, 0x6a, 0xe9, 0xa9, 0x35,
		0xa8, 0x56, 0xab, 0x28, 0xa7, 0xbe, 0xeb, 0x11, 0x35, 0x90, 0x26, 0xef, 0x0c, 0x4c, 0xd7, 0xf9,
		0x77, 0xa0, 0x56, 0x6a, 0x8f, 0x6e, 0x8a, 0x69, 0x2b, 0xf5, 0xa5, 0x7d, 0xd6, 0xf3, 0xb4, 0xdf,
		0xbf, 0xf6, 0x98, 0xa5, 0x12, 0x40, 0x38, 0x19, 0x00, 0xbb, 0x3c, 0x76, 0xf9, 0x9d, 0xdc, 0xe5,
		0xfb, 0xae, 0xe3, 0xb9, 0x2a, 0xd4, 0x5d, 0xa2, 0x5b, 0x95, 0x5a, 0x37, 0xaa, 0x5d, 0x28, 0x8a,
		0xf5, 0x6e, 0x5b, 0x4f, 0xbe, 0xf3, 0xa5, 0x7a, 0x16, 0x0e, 0xa6, 0x9b, 0xff, 0xba, 0xab, 0x3f,
		0x36, 0x2e, 0x77, 0xb7, 0x66, 0x4f, 0xad, 0xb1, 0x93, 0x05, 0x7b, 0xea, 0xff, 0xef, 0xae, 0xb9,
		0x8b, 0xcf, 0x75, 0x75, 0xbb, 0x93, 0xaf, 0xeb, 0xb6, 0x89, 0xe2, 0x4a, 0xd4, 0x90, 0x18, 0x32,
		0x77, 0x2c, 0xf9, 0x74, 0x04, 0xd1, 0xa1, 0x74, 0x6b, 0x46, 0xc4, 0x4b, 0x91, 0xf1, 0x96, 0x5e,
		0x55, 0x7e, 0xc9, 0x6f, 0x76, 0x93, 0xcf, 0x05, 0x8a, 0xae, 0xe9, 0xae, 0x39, 0x35, 0x2e, 0xaa,
		0xb6, 0x91, 0xd7, 0x8b, 0x95, 0x52, 0x13, 0x2f, 0xa1, 0x46, 0x52, 0x3a, 0x4d, 0xa2, 0x64, 0x9a,
		0x44, 0xa9, 0xb4, 0xad, 0xd5, 0x3c, 0x9a, 0x59, 0x42, 0x66, 0xac, 0xd4, 0xe6, 0x65, 0x55, 0x84,
		0xc2, 0xab, 0xb3, 0x59, 0x34, 0x69, 0x8d, 0xee, 0x10, 0xaf, 0x06, 0x52, 0xbb, 0xeb, 0xb5, 0xff,
		0xb3, 0xb9, 0x04, 0xd2, 0xe8, 0x63, 0x8a, 0x15, 0x90, 0x0a, 0x34, 0x15, 0x90, 0x82, 0xd7, 0x6c,
		0x96, 0x3f, 0x1a, 0x7e, 0xef, 0xa4, 0x6a, 0x1f, 0xc5, 0x2c, 0x5b, 0x23, 0x56, 0xae, 0x26, 0x2d,
		0xd5, 0x8f, 0xd6, 0x2f, 0x00, 0x59, 0xd8, 0xb5, 0xfd, 0xd2, 0x47, 0x6b, 0x17, 0x08, 0xcd, 0xde,
		0x16, 0xbb, 0xee, 0x11, 0x77, 0x5e, 0xd8, 0x7f, 0x3d, 0x97, 0x59, 0x42, 0x0d, 0x1a, 0xe6, 0x8e,
		0x07, 0xa7, 0x97, 0xef, 0x46, 0xc1, 0x96, 0x78, 0xcb, 0x4e, 0x15, 0xf5, 0xa7, 0xaf, 0x22, 0x44,
		0xac, 0x65, 0xa9, 0x07, 0x82, 0xca, 0x97, 0x6a, 0x99, 0x5b, 0x80, 0x96, 0x60, 0xed, 0x7e, 0x41,
		0x01, 0x37, 0xee, 0xd3, 0x28, 0x50, 0x70, 0x05, 0xea, 0xad, 0x20, 0xff, 0x37, 0x6a, 0x37, 0x35,
		0xa3, 0xe9, 0xbc, 0x30, 0xe3, 0xdf, 0x9e, 0xcb, 0x8c, 0x4b, 0x9b, 0xdb, 0x5f, 0xed, 0x60, 0x9c,
		0x32, 0x79, 0x7e, 0x74, 0xf4, 0xd7, 0x5f, 0x7f, 0x1d, 0x3a, 0xb6, 0x6b, 0x87, 0xf4, 0x2c, 0x8c,
		0x7b, 0x19, 0x4e, 0xf9, 0xb6, 0x8f, 0x88, 0x54, 0xb9, 0xb1, 0x9e, 0x53, 0x22, 0xd9, 0xb9, 0xd4,
		0x7d, 0xa6, 0xb4, 0x47, 0x4b, 0x5a, 0x75, 0x93, 0xcb, 0xd7, 0x67, 0x8f, 0x5b, 0x5e, 0xdb, 0x6a,
		0x7b, 0x2f, 0x3d, 0x9f, 0x05, 0x01, 0xeb, 0x58, 0x5d, 0x66, 0x3f, 0x0d, 0x07, 0x19, 0xec, 0x74,
		0xc5, 0xe2, 0x10, 0x81, 0xc7, 0xaa, 0xd1, 0x86, 0x62, 0xc5, 0xc0, 0x8b, 0xc0, 0x8b, 0xc0, 0x8b,
		0xc0, 0x8b, 0xc0, 0x8b, 0xc0, 0x8b, 0xc0, 0x8b, 0xe9, 0xc6, 0x8b, 0x99, 0x86, 0x63, 0x19, 0xae,
		0xb7, 0xbf, 0x4e, 0xd1, 0x5d, 0xad, 0x95, 0x5f, 0x84, 0x57, 0xa9, 0xe8, 0xcd, 0xeb, 0x85, 0xc9,
		0x78, 0x82, 0x24, 0x14, 0xe7, 0xf4, 0x29, 0xce, 0x1d, 0xef, 0xc5, 0x76, 0xdc, 0x78, 0xf0, 0x2f,
		0x9a, 0xdb, 0xd9, 0x8b, 0xe2, 0x71, 0x89, 0x02, 0xb4, 0xe7, 0xac, 0x72, 0x89, 0xd8, 0xe0, 0x4c,
		0x62, 0x79, 0xcc, 0xa3, 0xb0, 0x18, 0x9f, 0xbd, 0x62, 0xee, 0x73, 0xe8, 0x22, 0xe3, 0x81, 0x23,
		0xb1, 0x56, 0x59, 0xe2, 0x20, 0x3e, 0xca, 0x35, 0x10, 0x84, 0xde, 0xaa, 0x89, 0x04, 0xf2, 0x89,
		0x03, 0x03, 0xb1, 0x1e, 0x60, 0xf2, 0x53, 0x52, 0xaa, 0x1c, 0x67, 0x67, 0x52, 0x88, 0x30, 0x4f,
		0x2b, 0xc6, 0x0a, 0xbe, 0xb3, 0x39, 0x67, 0xbe, 0x1b, 0x7b, 0x09, 0x9b, 0xfb, 0xfb, 0xfb, 0xfb,
		0x9f, 0x6d, 0xeb, 0xbf, 0x35, 0xeb, 0xdf, 0x05, 0xeb, 0xec, 0xb1, 0x35, 0xf3, 0xc3, 0x97, 0x2f,
		0xd6, 0x63, 0xeb, 0xe0, 0x67, 0xe1, 0x5d, 0xb5, 0x38, 0x38, 0xf8, 0xdb, 0xf4, 0xf7, 0xad, 0x2f,
		0x5f, 0x0e, 0x0f, 0xfe, 0x47, 0xe6, 0xaa, 0xbf, 0x1d, 0xfc, 0x1a, 0x5e, 0x6b, 0xd2, 0x3c, 0xea,
		0xed, 0x43, 0xe3, 0x9f, 0xc2, 0xcf, 0xfb, 0xe7, 0x36, 0x1e, 0xf8, 0xb7, 0x18, 0x4f, 0x9c, 0x28,
		0xa0, 0x95, 0x16, 0x4c, 0xe5, 0x64, 0xc4, 0x6f, 0x5e, 0xc0, 0xc5, 0x30, 0x40, 0x74, 0x05, 0x00,
		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x56, 0x01, 0x40,
		0xd7, 0x7b, 0x76, 0x5c, 0xeb, 0xab, 0xed, 0xba, 0xcc, 0x8f, 0x0f, 0x02, 0xe6, 0xae, 0x02, 0x10,
		0x00, 0x10, 0x78, 0x33, 0xdf, 0xb1, 0x73, 0x32, 0x63, 0x1e, 0xc5, 0x64, 0xdc, 0xc8, 0x5e, 0x3c,
		0xde, 0x11, 0xb6, 0xb1, 0xd9, 0x8b, 0x60, 0x62, 0x30, 0x31, 0x98, 0xd8, 0x96, 0x4f, 0x60, 0xd6,
		0xc4, 0xf2, 0xc4, 0x3c, 0x4c, 0xe9, 0xf5, 0x63, 0xb4, 0x2f, 0x0e, 0x3f, 0x95, 0x8e, 0xe6, 0xc5,
		0x38, 0x48, 0x89, 0x11, 0xba, 0xdf, 0xeb, 0x0b, 0xc4, 0xed, 0xf7, 0xfa, 0x08, 0xda, 0x47, 0x10,
		0xd6, 0xf8, 0x83, 0x8e, 0xdb, 0x61, 0x3f, 0x24, 0x5a, 0xaa, 0x86, 0x97, 0x21, 0xe8, 0x4a, 0x40,
		0x20, 0x40, 0xd0, 0x95, 0x04, 0xd4, 0x58, 0x64, 0x7d, 0xdb, 0xea, 0xa7, 0x1a, 0x2e, 0x78, 0xb4,
		0x54, 0x85, 0x61, 0xee, 0xb4, 0x61, 0x0a, 0x37, 0x53, 0xfd, 0x66, 0xfb, 0x9d, 0xbf, 0x6c, 0x9f,
		0x59, 0x8e, 0xcb, 0x99, 0xef, 0xf7, 0x7b, 0x0a, 0x45, 0xcd, 0x97, 0x8c, 0x25, 0x57, 0x26, 0xad,
		0x98, 0xb1, 0x32, 0x69, 0x62, 0x0b, 0x5d, 0x75, 0xc1, 0x93, 0x2d, 0x7c, 0x32, 0x03, 0x20, 0x31,
		0x04, 0x31, 0x83, 0x90, 0x38, 0x92, 0x90, 0x32, 0x90, 0xe8, 0x42, 0xfb, 0xfb, 0xb3, 0x7a, 0x97,
		0xa4, 0xe1, 0x20, 0x92, 0x53, 0x2b, 0x57, 0x41, 0x50, 0xd9, 0x44, 0x28, 0x4c, 0x65, 0x99, 0xc9,
		0xf0, 0xd7, 0x9e, 0x54, 0x14, 0x30, 0x95, 0xf1, 0x90, 0x1b, 0x11, 0xb9, 0x31, 0xad, 0x32, 0xaa,
		0xd1, 0xcc, 0x25, 0x5d, 0xf0, 0x44, 0x72, 0xd5, 0x48, 0xd7, 0x23, 0x5c, 0x58, 0x33, 0x3d, 0xe6,
		0xb7, 0x99, 0xcb, 0xed, 0x67, 0x46, 0x50, 0xa7, 0x4e, 0xa5, 0x4c, 0x9d, 0x5a, 0x11, 0xe1, 0xc9,
		0x1f, 0xf5, 0x6a, 0x5b, 0x24, 0x45, 0x85, 0xa3, 0xc1, 0x88, 0x8a, 0x0b, 0x47, 0xe3, 0x51, 0x97,
		0xbb, 0x9d, 0xae, 0x07, 0xaa, 0xb2, 0xb7, 0x8a, 0x4b, 0x7b, 0xfe, 0x55, 0x10, 0x14, 0x1f, 0x5e,
		0x78, 0x15, 0xc5, 0x42, 0x0e, 0x5f, 0xc6, 0xde, 0x76, 0xae, 0x6e, 0x25, 0x54, 0x06, 0x4a, 0x62,
		0xb1, 0x99, 0x8e, 0x1b, 0x70, 0xdb, 0xe5, 0xea, 0xe8, 0x63, 0x32, 0x10, 0x10, 0x08, 0x10, 0x08,
		0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x48, 0x0c, 0x04, 0xc2, 0x99,
		0xff, 0xdd, 0xee, 0x52, 0x40, 0x90, 0xf1, 0x48, 0xc0, 0x20, 0xc0, 0x20, 0xc0, 0x20, 0xc2, 0x6b,
		0x26, 0xe0, 0x36, 0xb7, 0x14, 0x8d, 0xc8, 0x50, 0xeb, 0xc6, 0x14, 0x0d, 0x41, 0xd4, 0x95, 0x09,
		0xb0, 0x06, 0xb0, 0x26, 0x61, 0x58, 0x43, 0xde, 0xdd, 0x09, 0x38, 0x67, 0x27, 0x70, 0xce, 0x8b,
		0xc2, 0x6a, 0x9b, 0xc6, 0xdc, 0xda, 0x3f, 0x80, 0x6e, 0x80, 0x6e, 0x80, 0x6e, 0xa0, 0xb0, 0x00,
		0x8a, 0x00, 0x8a, 0x40, 0x61, 0x01, 0xf2, 0x88, 0x85, 0x3c, 0x2c, 0xee, 0xbc, 0x30, 0x12, 0xf8,
		0x31, 0x1a, 0x09, 0x18, 0x04, 0x18, 0x04, 0x18, 0x44, 0x78, 0xcd, 0xa8, 0x75, 0xb9, 0x86, 0xbe,
		0x02, 0x50, 0x03, 0x50, 0x03, 0x7d, 0x05, 0x28, 0x67, 0x29, 0xca, 0x51, 0x30, 0xfc, 0x29, 0xc0,
		0x71, 0x5c, 0x60, 0x1b, 0x60, 0x1b, 0x60, 0x1b, 0xe8, 0x2b, 0x80, 0x22, 0x80, 0x22, 0xd0, 0x57,
		0x80, 0x3c, 0x62, 0x21, 0x0f, 0x2a, 0x7d, 0x65, 0x32, 0x12, 0x30, 0x08, 0x30, 0x08, 0x30, 0x08,
		0xf4, 0x15, 0x80, 0x1a, 0x80, 0x1a, 0xe8, 0x2b, 0x40, 0x39, 0xd4, 0x28, 0x47, 0x6b, 0x1a, 0xb4,
		0x64, 0x2f, 0xbe, 0xe8, 0xfa, 0xd8, 0x05, 0xaf, 0x7a, 0xfd, 0x60, 0xf8, 0x9f, 0x71, 0x15, 0x0e,
		0xe5, 0x0a, 0x01, 0xc6, 0xea, 0x36, 0x25, 0xbd, 0xfe, 0xe3, 0xef, 0xe3, 0xe1, 0x1b, 0xd1, 0xe8,
		0xba, 0xba, 0xee, 0x0b, 0x94, 0xb5, 0x70, 0x3a, 0x5d, 0x26, 0x5f, 0x53, 0x21, 0xbc, 0x1a, 0x55,
		0x14, 0xf4, 0x01, 0x48, 0x54, 0x51, 0x40, 0x15, 0x05, 0xb0, 0x2f, 0xb0, 0xaf, 0x7c, 0xb0, 0x2f,
		0x28, 0xc0, 0x20, 0x4b, 0x50, 0x80, 0xc1, 0x8d, 0x32, 0xce, 0x8d, 0x50, 0x45, 0x01, 0x08, 0x04,
		0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x24, 0x23, 0x08, 0x04, 0x55,
		0x14, 0x80, 0x41, 0x80, 0x41, 0x50, 0x45, 0x61, 0x76, 0x08, 0x9c, 0x42, 0x03, 0xd6, 0x64, 0x13,
		0xd6, 0xe0, 0x14, 0x1a, 0x38, 0x67, 0xd9, 0x24, 0xa3, 0x8a, 0x02, 0xd0, 0x0d, 0xd0, 0x0d, 0x14,
		0x16, 0x40, 0x11, 0x40, 0x11, 0x28, 0x2c, 0x40, 0x1e, 0x06, 0xaa, 0x28, 0x00, 0x83, 0x00, 0x83,
		0xe4, 0x0a, 0x83, 0x20, 0xca, 0x1f, 0xa0, 0x06, 0xa0, 0x06, 0xfa, 0x0a, 0x50, 0x8e, 0x06, 0x94,
		0x83, 0x2a, 0x0a, 0xc0, 0x36, 0xc0, 0x36, 0xd0, 0x57, 0x00, 0x45, 0x00, 0x45, 0xa0, 0xaf, 0x00,
		0x79, 0xa0, 0x8a, 0x02, 0x30, 0x08, 0x30, 0x08, 0xf4, 0x15, 0xe8, 0x2b, 0x00, 0x35, 0x00, 0x35,
		0xd0, 0x57, 0x80, 0x72, 0x24, 0xaf, 0xc8, 0x48, 0x15, 0x05, 0x89, 0x9a, 0x00, 0xc6, 0xda, 0xba,
		0x09, 0x8d, 0xe1, 0x80, 0x69, 0x28, 0x95, 0xe0, 0x76, 0xd8, 0x0f, 0x85, 0x5a, 0x09, 0xe1, 0xe5,
		0x72, 0xc5, 0x12, 0x0a, 0x28, 0x96, 0x90, 0x24, 0x3e, 0xcc, 0x53, 0xb1, 0x04, 0x69, 0xd4, 0x17,
		0xbd, 0xef, 0xbe, 0x3b, 0x74, 0x31, 0x12, 0xaf, 0x7b, 0x52, 0x09, 0xe4, 0x4c, 0xe2, 0xda, 0xf1,
		0xd7, 0x96, 0xc3, 0x61, 0x04, 0x10, 0x97, 0xb9, 0xfd, 0x17, 0xe6, 0x8f, 0xbc, 0xab, 0x3a, 0xc4,
		0x2d, 0x96, 0x15, 0xc6, 0xa8, 0xbb, 0xfd, 0x17, 0x75, 0x6e, 0xd5, 0xf4, 0x1e, 0xb8, 0xef, 0xb8,
		0xcf, 0x24, 0x50, 0xc6, 0x2c, 0x0c, 0xe7, 0xa8, 0x76, 0x75, 0x65, 0xee, 0x6d, 0x11, 0x9d, 0x99,
		0x4d, 0xaf, 0xa1, 0x90, 0x53, 0x3b, 0x6f, 0xc8, 0x57, 0x57, 0x43, 0x77, 0xba, 0x25, 0x40, 0x92,
		0x28, 0x11, 0x24, 0xb0, 0x8e, 0xbe, 0xe3, 0xf2, 0xe3, 0x12, 0x81, 0x61, 0x9c, 0x80, 0xab, 0x81,
		0xab, 0xa5, 0x9d, 0xab, 0x95, 0x4b, 0x67, 0xe5, 0xb3, 0xea, 0x49, 0xe9, 0x0c, 0x0c, 0x6d, 0xd7,
		0x18, 0x5a, 0x2b, 0x05, 0xbc, 0xe3, 0x3f, 0xcc, 0x77, 0x59, 0x57, 0x9e, 0x78, 0x8c, 0xaf, 0x47,
		0x99, 0x36, 0x30, 0x8f, 0x54, 0x31, 0x0f, 0x94, 0x69, 0xc3, 0xf1, 0x8e, 0x16, 0x23, 0x22, 0x37,
		0xa6, 0x55, 0x46, 0x85, 0x10, 0x13, 0x84, 0x98, 0x00, 0xe1, 0x23, 0xc4, 0x04, 0xd0, 0x3e, 0x83,
		0xd0, 0x1e, 0x65, 0xda, 0x80, 0x40, 0x80, 0x40, 0x80, 0x40, 0x80, 0x40, 0x80, 0x40, 0x80, 0x40,
		0x80, 0x40, 0xb2, 0x82, 0x40, 0x50, 0xa6, 0x0d, 0x18, 0x04, 0x18, 0x04, 0x65, 0xda, 0x66, 0x87,
		0x40, 0x98, 0x2b, 0x60, 0x4d, 0x36, 0x61, 0x0d, 0xc2, 0x5c, 0x81, 0x73, 0x96, 0x4d, 0x32, 0xca,
		0xb4, 0x01, 0xdd, 0x00, 0xdd, 0x40, 0x61, 0x01, 0x14, 0x01, 0x14, 0x81, 0xc2, 0x02, 0xe4, 0x61,
		0xa0, 0x4c, 0x1b, 0x30, 0x08, 0x30, 0x48, 0xae, 0x30, 0x08, 0xd2, 0x88, 0x01, 0x6a, 0x00, 0x6a,
		0xa0, 0xaf, 0x00, 0xe5, 0x68, 0x40, 0x39, 0x28, 0xd3, 0x06, 0x6c, 0x03, 0x6c, 0x03, 0x7d, 0x05,
		0x50, 0x04, 0x50, 0x04, 0xfa, 0x0a, 0x90, 0x07, 0xca, 0xb4, 0x01, 0x83, 0x00, 0x83, 0x40, 0x5f,
		0x81, 0xbe, 0x02, 0x50, 0x03, 0x50, 0x03, 0x7d, 0x05, 0x28, 0x47, 0xf2, 0x8a, 0x8c, 0x94, 0x69,
		0x93, 0xaa, 0x0a, 0x60, 0xac, 0x2d, 0xd4, 0xf6, 0xc7, 0x68, 0xc8, 0x14, 0x94, 0x4c, 0x70, 0x1d,
		0x09, 0x1c, 0x13, 0xed, 0x8b, 0xe1, 0xd5, 0x28, 0x97, 0xa0, 0x0f, 0x29, 0xa2, 0x5c, 0x02, 0xca,
		0x25, 0x80, 0x66, 0x81, 0x66, 0xe5, 0x83, 0x66, 0x41, 0xea, 0x05, 0x2b, 0x82, 0xd4, 0x0b, 0x12,
		0x94, 0x71, 0x12, 0x84, 0x72, 0x09, 0x40, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x20,
		0x40, 0x20, 0x40, 0x20, 0x19, 0x41, 0x20, 0x28, 0x97, 0x00, 0x0c, 0x02, 0x0c, 0x82, 0x72, 0x09,
		0xb3, 0x43, 0xe0, 0xb8, 0x19, 0xb0, 0x26, 0x9b, 0xb0, 0x06, 0xc7, 0xcd, 0xc0, 0x39, 0xcb, 0x26,
		0x19, 0xe5, 0x12, 0x80, 0x6e, 0x80, 0x6e, 0xa0, 0xb0, 0x00, 0x8a, 0x00, 0x8a, 0x40, 0x61, 0x01,
		0xf2, 0x30, 0x50, 0x2e, 0x01, 0x18, 0x04, 0x18, 0x24, 0x57, 0x18, 0x04, 0xe1, 0xfc, 0x00, 0x35,
		0x00, 0x35, 0xd0, 0x57, 0x80, 0x72, 0x34, 0xa0, 0x1c, 0x94, 0x4b, 0x00, 0xb6, 0x01, 0xb6, 0x81,
		0xbe, 0x02, 0x28, 0x02, 0x28, 0x02, 0x7d, 0x05, 0xc8, 0x03, 0xe5, 0x12, 0x80, 0x41, 0x80, 0x41,
		0xa0, 0xaf, 0x40, 0x5f, 0x01, 0xa8, 0x01, 0xa8, 0x81, 0xbe, 0x02, 0x94, 0x23, 0x79, 0x45, 0x46,
		0xca, 0x25, 0x48, 0xd4, 0x04, 0x30, 0xd6, 0x16, 0x4b, 0xb8, 0x19, 0x0e, 0x98, 0x82, 0x52, 0x09,
		0x81, 0xf7, 0xc4, 0xff, 0xb2, 0x7d, 0x36, 0x8a, 0xcd, 0xf4, 0xfb, 0x3d, 0x2e, 0x5f, 0x38, 0x61,
		0xc9, 0x58, 0x28, 0xa3, 0xa0, 0x0f, 0x41, 0xa2, 0x8c, 0x02, 0xca, 0x28, 0x80, 0x7e, 0x81, 0x7e,
		0xe5, 0x83, 0x7e, 0x41, 0x02, 0x06, 0x5b, 0x82, 0x04, 0x0c, 0x72, 0x94, 0x71, 0x72, 0x84, 0x32,
		0x0a, 0x40, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x20, 0x19,
		0x41, 0x20, 0x28, 0xa3, 0x00, 0x0c, 0x02, 0x0c, 0x82, 0x32, 0x0a, 0xb3, 0x43, 0xe0, 0x18, 0x1a,
		0xb0, 0x26, 0x9b, 0xb0, 0x06, 0xc7, 0xd0, 0xc0, 0x39, 0xcb, 0x26, 0x19, 0x65, 0x14, 0x80, 0x6e,
		0x80, 0x6e, 0xa0, 0xb0, 0x00, 0x8a, 0x00, 0x8a, 0x40, 0x61, 0x01, 0xf2, 0x30, 0x50, 0x46, 0x01,
		0x18, 0x04, 0x18, 0x24, 0x57, 0x18, 0x04, 0x61, 0xfe, 0x00, 0x35, 0x00, 0x35, 0xd0, 0x57, 0x80,
		0x72, 0x34, 0xa0, 0x1c, 0x94, 0x51, 0x00, 0xb6, 0x01, 0xb6, 0x81, 0xbe, 0x02, 0x28, 0x02, 0x28,
		0x02, 0x7d, 0x05, 0xc8, 0x03, 0x65, 0x14, 0x80, 0x41, 0x80, 0x41, 0xa0, 0xaf, 0x40, 0x5f, 0x01,
		0xa8, 0x01, 0xa8, 0x81, 0xbe, 0x02, 0x94, 0x23, 0x79, 0x45, 0x46, 0xca, 0x28, 0x28, 0x57, 0x08,
		0x30, 0xd6, 0x16, 0x55, 0x78, 0x18, 0x0f, 0xdf, 0x88, 0x46, 0x4f, 0x41, 0x85, 0x05, 0xee, 0x71,
		0x89, 0xc8, 0xe9, 0xe9, 0x7e, 0x19, 0x5e, 0x8e, 0x3a, 0x0a, 0xfa, 0x20, 0x24, 0xea, 0x28, 0xa0,
		0x8e, 0x02, 0xf8, 0x17, 0xf8, 0x57, 0x3e, 0xf8, 0x17, 0x34, 0x60, 0xd0, 0x25, 0x68, 0xc0, 0x60,
		0x47, 0x19, 0x67, 0x47, 0xa8, 0xa3, 0x00, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04,
		0x02, 0x04, 0x02, 0x04, 0x92, 0x11, 0x04, 0x82, 0x3a, 0x0a, 0xc0, 0x20, 0xc0, 0x20, 0xa8, 0xa3,
		0x30, 0x3b, 0x04, 0xce, 0xa1, 0x01, 0x6b, 0xb2, 0x09, 0x6b, 0x70, 0x0e, 0x0d, 0x9c, 0xb3, 0x6c,
		0x92, 0x51, 0x47, 0x01, 0xe8, 0x06, 0xe8, 0x06, 0x0a, 0x0b, 0xa0, 0x08, 0xa0, 0x08, 0x14, 0x16,
		0x20, 0x0f, 0x03, 0x75, 0x14, 0x80, 0x41, 0x80, 0x41, 0x72, 0x85, 0x41, 0x10, 0xe7, 0x0f, 0x50,
		0x03, 0x50, 0x03, 0x7d, 0x05, 0x28, 0x47, 0x03, 0xca, 0x41, 0x1d, 0x05, 0x60, 0x1b, 0x60, 0x1b,
		0xe8, 0x2b, 0x80, 0x22, 0x80, 0x22, 0xd0, 0x57, 0x80, 0x3c, 0x50, 0x47, 0x01, 0x18, 0x04, 0x18,
		0x04, 0xfa, 0x0a, 0xf4, 0x15, 0x80, 0x1a, 0x80, 0x1a, 0xe8, 0x2b, 0x40, 0x39, 0x92, 0x57, 0x64,
		0xa4, 0x8e, 0x82, 0x4c, 0x51, 0x00, 0x63, 0x6d, 0xe9, 0x84, 0x66, 0x38, 0x62, 0x0a, 0xca, 0x25,
		0xf4, 0x03, 0xe6, 0xcb, 0x57, 0x4b, 0x08, 0xaf, 0x46, 0xb1, 0x04, 0x7d, 0x38, 0x11, 0xc5, 0x12,
		0x50, 0x2c, 0x01, 0x24, 0x0b, 0x24, 0x2b, 0x1f, 0x24, 0x0b, 0x42, 0x2f, 0x38, 0x11, 0x84, 0x5e,
		0x50, 0xa0, 0x8c, 0x53, 0x20, 0x14, 0x4b, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
		0x02, 0x01, 0x02, 0x01, 0x02, 0xc9, 0x08, 0x02, 0x41, 0xb1, 0x04, 0x60, 0x10, 0x60, 0x10, 0x14,
		0x4b, 0x98, 0x1d, 0x02, 0x87, 0xcd, 0x80, 0x35, 0xd9, 0x84, 0x35, 0x38, 0x6c, 0x06, 0xce, 0x59,
		0x36, 0xc9, 0x28, 0x96, 0x00, 0x74, 0x03, 0x74, 0x03, 0x85, 0x05, 0x50, 0x04, 0x50, 0x04, 0x0a,
		0x0b, 0x90, 0x87, 0x81, 0x62, 0x09, 0xc0, 0x20, 0xc0, 0x20, 0xb9, 0xc2, 0x20, 0x08, 0xe6, 0x07,
		0xa8, 0x01, 0xa8, 0x81, 0xbe, 0x02, 0x94, 0xa3, 0x01, 0xe5, 0xa0, 0x58, 0x02, 0xb0, 0x0d, 0xb0,
		0x0d, 0xf4, 0x15, 0x40, 0x11, 0x40, 0x11, 0xe8, 0x2b, 0x40, 0x1e, 0x28, 0x96, 0x00, 0x0c, 0x02,
		0x0c, 0x02, 0x7d, 0x05, 0xfa, 0x0a, 0x40, 0x0d, 0x40, 0x0d, 0xf4, 0x15, 0xa0, 0x1c, 0xc9, 0x2b,
		0x32, 0x52, 0x2c, 0x41, 0xa2, 0x26, 0x80, 0xb1, 0xb6, 0x56, 0xc2, 0xa7, 0xe1, 0x80, 0x29, 0x28,
		0x95, 0xf0, 0x97, 0xed, 0x70, 0xf9, 0x52, 0x09, 0xe1, 0xd5, 0x28, 0x95, 0xa0, 0x0f, 0x25, 0xa2,
		0x54, 0x02, 0x4a, 0x25, 0x80, 0x62, 0x81, 0x62, 0xe5, 0x83, 0x62, 0x41, 0xe6, 0x05, 0x23, 0x82,
		0xcc, 0x0b, 0x02, 0x94, 0x71, 0x02, 0x84, 0x52, 0x09, 0x40, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40,
		0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x20, 0x19, 0x41, 0x20, 0x28, 0x95, 0x00, 0x0c, 0x02, 0x0c,
		0x82, 0x52, 0x09, 0xb3, 0x43, 0xe0, 0xa8, 0x19, 0xb0, 0x26, 0x9b, 0xb0, 0x06, 0x47, 0xcd, 0xc0,
		0x39, 0xcb, 0x26, 0x19, 0xa5, 0x12, 0x80, 0x6e, 0x80, 0x6e, 0xa0, 0xb0, 0x00, 0x8a, 0x00, 0x8a,
		0x40, 0x61, 0x01, 0xf2, 0x30, 0x50, 0x2a, 0x01, 0x18, 0x04, 0x18, 0x24, 0x57, 0x18, 0x04, 0xa1,
		0xfc, 0x00, 0x35, 0x00, 0x35, 0xd0, 0x57, 0x80, 0x72, 0x34, 0xa0, 0x1c, 0x94, 0x4a, 0x00, 0xb6,
		0x01, 0xb6, 0x81, 0xbe, 0x02, 0x28, 0x02, 0x28, 0x02, 0x7d, 0x05, 0xc8, 0x03, 0xa5, 0x12, 0x80,
		0x41, 0x80, 0x41, 0xa0, 0xaf, 0x40, 0x5f, 0x01, 0xa8, 0x01, 0xa8, 0x81, 0xbe, 0x02, 0x94, 0x23,
		0x79, 0x45, 0x46, 0x4a, 0x25, 0x48, 0xd4, 0x04, 0x30, 0xd6, 0x96, 0x4a, 0xf8, 0xc7, 0x70, 0x40,
		0x5d, 0xa5, 0x12, 0xf6, 0x08, 0x67, 0x5e, 0x76, 0xc6, 0x25, 0x67, 0x3a, 0xde, 0x9c, 0x6c, 0x7e,
		0xc2, 0xf5, 0x9f, 0xd8, 0xf0, 0xec, 0x43, 0x4c, 0x36, 0x0a, 0xfa, 0xee, 0xb0, 0x4d, 0x70, 0xcc,
		0xbc, 0x72, 0x02, 0x5e, 0xe3, 0x3c, 0x5e, 0x76, 0xfe, 0x70, 0x8b, 0xab, 0x77, 0xd9, 0x10, 0x4d,
		0xc5, 0x74, 0x52, 0x43, 0x4f, 0x3c, 0x73, 0x85, 0x9c, 0x0b, 0x35, 0x6f, 0xfd, 0x0e, 0xf3, 0x59,
		0xe7, 0xfd, 0xf0, 0xb1, 0xdc, 0x7e, 0xb7, 0x2b, 0x72, 0x49, 0x58, 0xd5, 0x23, 0x8e, 0xf7, 0xdb,
		0x34, 0xab, 0x82, 0x2b, 0x49, 0x78, 0x05, 0xc5, 0x30, 0xd0, 0x95, 0x06, 0xb9, 0x7e, 0xdd, 0xad,
		0x5e, 0x4d, 0xcb, 0xff, 0x65, 0xc5, 0x4c, 0xc4, 0x9d, 0x01, 0xa1, 0x27, 0x5f, 0xfe, 0xcd, 0x17,
		0xbf, 0xd7, 0x92, 0xef, 0x64, 0x76, 0xdc, 0x60, 0xe5, 0x17, 0x89, 0x80, 0xef, 0xf0, 0x43, 0x2b,
		0x9e, 0x67, 0x7d, 0xd9, 0x93, 0x8d, 0x9c, 0x2f, 0x0e, 0xa7, 0x8b, 0x5f, 0xae, 0x24, 0x2e, 0x23,
		0x13, 0x66, 0x5c, 0xc2, 0x8c, 0x4a, 0xa8, 0x9c, 0x88, 0xd8, 0x0a, 0xda, 0x54, 0x06, 0xc4, 0x6c,
		0x4f, 0xe6, 0x7c, 0xc3, 0x24, 0x4c, 0xa6, 0x75, 0xfc, 0xf9, 0x4d, 0x0e, 0x31, 0x56, 0x7d, 0x9b,
		0xd8, 0x24, 0x5f, 0x84, 0xcc, 0x8b, 0xd7, 0xab, 0x11, 0xa5, 0xe6, 0xd2, 0x14, 0x5c, 0x9a, 0x6a,
		0x4b, 0xd5, 0x9b, 0x51, 0xdb, 0xd2, 0xe2, 0xd6, 0x8f, 0x31, 0x03, 0x66, 0xfb, 0xed, 0x6f, 0xf1,
		0x27, 0x2f, 0xca, 0xf0, 0x18, 0x5d, 0x17, 0x73, 0x02, 0xc4, 0xd4, 0x24, 0x61, 0xf5, 0x48, 0x46,
		0x2d, 0x92, 0x2f, 0x8c, 0x24, 0xab, 0x05, 0x29, 0x6b, 0x3f, 0xca, 0x5a, 0x8f, 0x52, 0xe1, 0x23,
		0x5a, 0x9c, 0x29, 0xac, 0xd4, 0x4c, 0x37, 0x28, 0xef, 0xc5, 0x76, 0x5c, 0x2b, 0xdc, 0xd4, 0x05,
		0x5e, 0xda, 0xc4, 0xa7, 0x09, 0x48, 0x31, 0xe6, 0x15, 0x73, 0x9f, 0xc3, 0x4d, 0x59, 0x4c, 0x2b,
		0x91, 0x20, 0x2a, 0x2a, 0x5a, 0xc8, 0x94, 0x70, 0x4b, 0xaa, 0x66, 0x54, 0x6c, 0x5a, 0x9d, 0x3d,
		0xcb, 0x68, 0xe6, 0x2a, 0xda, 0x45, 0x34, 0x75, 0xa5, 0xca, 0x71, 0xf6, 0x27, 0x4f, 0x13, 0xc1,
		0x6c, 0x09, 0x58, 0xcc, 0x9d, 0xcd, 0x39, 0xf3, 0x5d, 0x61, 0x93, 0x31, 0xf7, 0xf7, 0xf7, 0xf7,
		0x3f, 0xdb, 0xd6, 0x7f, 0x6b, 0xd6, 0xbf, 0x0b, 0xd6, 0xd9, 0x63, 0x6b, 0xe6, 0x87, 0x2f, 0x5f,
		0xac, 0xc7, 0xd6, 0xc1, 0xcf, 0xc2, 0xbb, 0x6a, 0x71, 0x70, 0xf0, 0xb7, 0xe9, 0xef, 0x5b, 0x5f,
		0xbe, 0x1c, 0x1e, 0xfc, 0x8f, 0xcc, 0x55, 0x7f, 0x3b, 0xf8, 0x35, 0xbc, 0xd6, 0xd4, 0x33, 0x05,
		0xb7, 0x0f, 0x8d, 0x7f, 0x4a, 0xcf, 0xc3, 0x9f, 0xdb, 0x98, 0x88, 0xdf, 0x04, 0x66, 0x82, 0x74,
		0x17, 0x10, 0x62, 0xd3, 0xf2, 0xac, 0x9a, 0x94, 0x5d, 0x2f, 0x65, 0xd9, 0x92, 0xc5, 0x27, 0x25,
		0x6a, 0x72, 0xaa, 0x9c, 0x44, 0xcd, 0x22, 0x10, 0x6f, 0xf4, 0xed, 0xad, 0xaf, 0xaf, 0x32, 0x4a,
		0x17, 0xc5, 0xa9, 0xd3, 0x1c, 0x1a, 0xe9, 0xa7, 0xa4, 0x98, 0xe8, 0x5b, 0x1d, 0x64, 0xf8, 0x68,
		0xa9, 0x10, 0xd8, 0x5e, 0x9f, 0x3d, 0x6e, 0x79, 0x6d, 0xab, 0xed, 0xbd, 0xf4, 0x7c, 0x16, 0x04,
		0xac, 0x63, 0x75, 0x99, 0xfd, 0x34, 0x1c, 0x64, 0x90, 0x0a, 0x15, 0x4d, 0x97, 0xde, 0xd3, 0x71,
		0x83, 0xa3, 0x31, 0x6d, 0x95, 0x55, 0x6d, 0xd6, 0xa8, 0x08, 0xdf, 0xbc, 0x80, 0x5b, 0xcc, 0xe5,
		0xbe, 0xc3, 0x82, 0xf8, 0x34, 0x7a, 0xee, 0x2a, 0x90, 0x69, 0x90, 0xe9, 0x37, 0x8b, 0xe9, 0x55,
		0x9c, 0x50, 0xcf, 0x5c, 0x2b, 0x46, 0xaa, 0x8b, 0x20, 0xd5, 0x20, 0xd5, 0x62, 0x0b, 0x55, 0x54,
		0x3e, 0x54, 0x93, 0x13, 0x15, 0x17, 0xae, 0xf4, 0x02, 0x56, 0x59, 0xc8, 0xea, 0x0b, 0x9a, 0x02,
		0xaf, 0x19, 0x28, 0x9f, 0x2d, 0xa5, 0x0b, 0x28, 0x94, 0xcf, 0xee, 0x3a, 0x76, 0x40, 0x50, 0x40,
		0x3b, 0x1c, 0x06, 0xa1, 0x77, 0xf2, 0x66, 0x43, 0x65, 0x3e, 0xe4, 0x66, 0x44, 0x6e, 0x4e, 0xa4,
		0x66, 0x25, 0x67, 0x5e, 0x0a, 0xf2, 0x9b, 0x41, 0x5d, 0x38, 0xca, 0x77, 0xdc, 0x67, 0x82, 0x88,
		0xbb, 0xe2, 0x69, 0xa2, 0x33, 0x20, 0x25, 0x64, 0xd0, 0x09, 0x1b, 0x5a, 0x85, 0x8e, 0xb5, 0xc2,
		0x47, 0xbc, 0xf0, 0x82, 0xd8, 0x74, 0x5b, 0x3e, 0xe8, 0x4a, 0xf6, 0xcd, 0x29, 0x86, 0x18, 0xd1,
		0xf1, 0x73, 0x75, 0x13, 0x96, 0x51, 0xcf, 0x87, 0xb4, 0x63, 0x1c, 0x1f, 0xa1, 0xb8, 0xe7, 0x45,
		0x23, 0x61, 0xdb, 0xc3, 0xb6, 0x87, 0x6d, 0x2f, 0x17, 0xdb, 0x5e, 0xce, 0x9d, 0xa7, 0xd3, 0xfb,
		0x5e, 0xb6, 0xec, 0x4e, 0x67, 0xf8, 0x95, 0x09, 0x8a, 0xce, 0xce, 0x8e, 0x06, 0x27, 0x0a, 0x27,
		0x0a, 0x27, 0x9a, 0xb4, 0xfd, 0x18, 0x92, 0x91, 0x22, 0x8b, 0x76, 0x20, 0x79, 0xfe, 0xbb, 0x30,
		0xd0, 0xfe, 0xe7, 0x82, 0x75, 0xd6, 0xfa, 0xf5, 0xb9, 0x68, 0x9d, 0xb5, 0x46, 0xff, 0x5b, 0x0c,
		0xff, 0xfa, 0x59, 0x1a, 0xfc, 0x2a, 0x7d, 0x2e, 0x58, 0xe5, 0xf1, 0x6f, 0x4b, 0x95, 0xcf, 0x05,
		0xab, 0xd2, 0x3a, 0xd8, 0xff, 0xf2, 0xe5, 0x50, 0xf4, 0x9a, 0x83, 0x9f, 0xc7, 0x03, 0xf9, 0xe5,
		0xd2, 0x52, 0x99, 0x26, 0x95, 0xb3, 0xf2, 0x85, 0xd1, 0xfe, 0xdc, 0x4f, 0x6a, 0xb6, 0x44, 0x4e,
		0xcc, 0x17, 0xe6, 0x0b, 0xc4, 0x14, 0xc4, 0x14, 0xd8, 0x2a, 0x06, 0xb6, 0xaa, 0x92, 0x62, 0xab,
		0x2a, 0xb0, 0x15, 0xb0, 0x15, 0xb0, 0xd5, 0xd6, 0xec, 0x27, 0x85, 0xd8, 0x2a, 0xdc, 0xfa, 0x6d,
		0xeb, 0xa9, 0x66, 0x7d, 0x68, 0xfd, 0x2c, 0xbe, 0x2b, 0x0f, 0xce, 0x0f, 0x7e, 0x9e, 0x0c, 0xde,
		0xfe, 0xf2, 0xd7, 0xb2, 0x8f, 0x15, 0xdf, 0x9d, 0x0c, 0xce, 0x57, 0xfc, 0x4b, 0x75, 0x70, 0x1e,
		0x73, 0x8c, 0xca, 0x60, 0x7f, 0xe1, 0xa3, 0xc3, 0xdf, 0x97, 0x56, 0x5d, 0x50, 0x5e, 0x71, 0xc1,
		0xf1, 0xaa, 0x0b, 0x8e, 0x57, 0x5c, 0xb0, 0xf2, 0x2b, 0x95, 0x56, 0x5c, 0x50, 0x19, 0xfc, 0x5a,
		0xf8, 0xfc, 0xfe, 0xf2, 0x8f, 0x56, 0x07, 0x07, 0xbf, 0x56, 0xfd, 0xdb, 0xc9, 0xe0, 0xd7, 0xf9,
		0xc1, 0xc1, 0x0e, 0xa1, 0x4d, 0x2c, 0x9f, 0xe4, 0x97, 0x0f, 0xd0, 0x37, 0xd0, 0x37, 0xd0, 0xb7,
		0x9e, 0x2b, 0xd2, 0x9a, 0xa2, 0xdf, 0x71, 0x83, 0xa3, 0xd9, 0xb0, 0xcb, 0xe9, 0x0f, 0xaf, 0xb1,
		0xc2, 0x43, 0xe5, 0x67, 0x45, 0x24, 0x7c, 0x58, 0xfa, 0x38, 0x4d, 0xf5, 0x18, 0x4d, 0x92, 0x9d,
		0x20, 0xa8, 0x0a, 0x41, 0x55, 0xda, 0xd9, 0x44, 0xf4, 0xbe, 0x87, 0x9e, 0xcf, 0x67, 0x4f, 0x32,
		0x2f, 0x7c, 0x42, 0x1c, 0x4e, 0x24, 0xae, 0xbd, 0x1b, 0x3b, 0x97, 0xc3, 0xc3, 0xb1, 0xa7, 0x38,
		0x8a, 0x8c, 0x2c, 0x05, 0x2e, 0x63, 0x54, 0x08, 0x43, 0xda, 0x5f, 0x8c, 0x2e, 0x4f, 0x38, 0x02,
		0xb3, 0x04, 0x67, 0x01, 0x67, 0xb1, 0xf6, 0x1b, 0x22, 0x02, 0x13, 0x4a, 0x1f, 0x94, 0xbe, 0x0c,
		0x2a, 0x7d, 0x88, 0xc0, 0x04, 0xd5, 0x66, 0x08, 0x58, 0xc4, 0x2e, 0x81, 0x5d, 0x02, 0xbb, 0x44,
		0x7a, 0x77, 0x09, 0xc4, 0xf7, 0xc1, 0xe7, 0xc0, 0xe7, 0xe4, 0xca, 0xe7, 0x20, 0xbe, 0x0f, 0xf1,
		0x7d, 0x88, 0xef, 0x03, 0xed, 0xc9, 0x25, 0xed, 0x41, 0x38, 0x1c, 0xa0, 0x08, 0xa0, 0x48, 0x8a,
		0xa0, 0x08, 0xc2, 0xe1, 0x10, 0xcf, 0x84, 0x70, 0xb8, 0x05, 0x70, 0x86, 0xe5, 0x83, 0x70, 0x38,
		0x80, 0xd5, 0x5d, 0x02, 0xab, 0x3b, 0x1f, 0x3d, 0x26, 0xd0, 0x89, 0x44, 0x7c, 0x52, 0x68, 0x0b,
		0x7c, 0x8d, 0x3b, 0x95, 0x08, 0x9e, 0x5c, 0xec, 0x4e, 0x99, 0x55, 0x31, 0x3b, 0x52, 0xb0, 0x9b,
		0xb4, 0xb4, 0xcb, 0x59, 0xb3, 0x6e, 0x4d, 0xa1, 0x18, 0xa3, 0x25, 0x7d, 0x50, 0x2e, 0xdd, 0xe0,
		0xf1, 0x77, 0x2f, 0xe0, 0xf5, 0x70, 0xb4, 0x9d, 0xaf, 0x21, 0x3a, 0x57, 0xb3, 0x53, 0x43, 0x25,
		0xd1, 0x80, 0xf9, 0xdf, 0x99, 0x2f, 0x50, 0x44, 0x74, 0x72, 0x01, 0xea, 0x87, 0xa2, 0x7e, 0xe8,
		0xec, 0x12, 0x92, 0x69, 0xc6, 0x11, 0x5e, 0x87, 0xba, 0xa1, 0x09, 0x0a, 0x2d, 0xb9, 0xae, 0x1b,
		0x2a, 0x2b, 0x44, 0x4e, 0xc3, 0xf3, 0xa4, 0xb4, 0x13, 0x04, 0xb9, 0x6f, 0x45, 0x4b, 0x44, 0x90,
		0xbb, 0xc8, 0xfb, 0x4e, 0x4d, 0x90, 0xfb, 0xc4, 0xc6, 0x52, 0x10, 0xe3, 0x8e, 0x3a, 0xc3, 0xf0,
		0x16, 0xbb, 0xe8, 0x2d, 0xe4, 0xa3, 0xdc, 0xa9, 0x4e, 0xf2, 0x70, 0x88, 0x87, 0x43, 0xbc, 0x2d,
		0x99, 0x96, 0xbc, 0xa6, 0x68, 0xa4, 0xe4, 0x10, 0x8f, 0xf2, 0x08, 0xef, 0x4c, 0x61, 0x8c, 0xf1,
		0x33, 0x6d, 0xbd, 0x23, 0x3f, 0x71, 0xa4, 0xd5, 0xc2, 0x1c, 0x9d, 0x12, 0x8c, 0x45, 0x75, 0x60,
		0x15, 0x0d, 0x98, 0xfe, 0x08, 0xac, 0xc9, 0x9f, 0x16, 0xc5, 0xf4, 0x51, 0x1e, 0xfa, 0x45, 0xa3,
		0x66, 0x23, 0x32, 0x2b, 0x9a, 0x47, 0xb5, 0x9e, 0xfc, 0xef, 0x52, 0x64, 0xa6, 0xd5, 0xfc, 0x98,
		0x29, 0x8e, 0x97, 0x33, 0x17, 0x9d, 0x90, 0x19, 0xc7, 0x85, 0x65, 0x95, 0xa9, 0xa8, 0x05, 0x22,
		0x47, 0x9e, 0x91, 0xa8, 0x89, 0x9c, 0x17, 0x82, 0xec, 0x79, 0x3e, 0x57, 0xe7, 0xc9, 0xe1, 0x28,
		0x92, 0x2f, 0xe0, 0x92, 0x3d, 0xd9, 0xfd, 0x2e, 0x57, 0xf2, 0x3a, 0x66, 0xe5, 0x58, 0x6e, 0xbd,
		0xb7, 0xc0, 0xec, 0xc1, 0xec, 0xc1, 0xec, 0x85, 0x8d, 0xdd, 0x72, 0xfb, 0x2f, 0x5f, 0x85, 0xbb,
		0xeb, 0x2e, 0x33, 0xa1, 0xaa, 0xc2, 0x10, 0xf7, 0xb6, 0xfb, 0x9c, 0x0a, 0x6a, 0xaf, 0xd2, 0x60,
		0x7e, 0x61, 0xb0, 0x49, 0xd7, 0xf4, 0xc2, 0x3b, 0x9a, 0xf1, 0xa8, 0x7a, 0xa8, 0x2f, 0x2e, 0x08,
		0xd5, 0x9e, 0xea, 0xc4, 0xe4, 0xcf, 0x50, 0x6d, 0x58, 0xbf, 0xf2, 0x55, 0x54, 0x2b, 0x95, 0xe3,
		0x4a, 0xfe, 0x5e, 0x07, 0x00, 0x60, 0xc6, 0x00, 0xe0, 0xce, 0x44, 0x93, 0x8e, 0xa3, 0xb7, 0xc6,
		0x7f, 0xa7, 0xa8, 0x04, 0x21, 0xea, 0x89, 0x69, 0x06, 0x95, 0x38, 0x69, 0xdd, 0x82, 0x69, 0xe3,
		0xa4, 0x15, 0x7c, 0x0c, 0x7c, 0x0c, 0x27, 0xad, 0x38, 0x69, 0x8d, 0x35, 0x47, 0x38, 0x69, 0x55,
		0xfa, 0x83, 0x93, 0x56, 0x9c, 0xb4, 0xe2, 0xa4, 0x15, 0x47, 0x62, 0x38, 0x69, 0xc5, 0x49, 0x2b,
		0x4e, 0x5a, 0xb3, 0x77, 0xd2, 0x8a, 0x83, 0xc9, 0xf8, 0x83, 0xe0, 0x60, 0x12, 0x44, 0x18, 0x44,
		0x38, 0x19, 0x22, 0x8c, 0x83, 0xc9, 0x85, 0x2f, 0x82, 0x83, 0x49, 0x1c, 0x4c, 0xee, 0xe0, 0xeb,
		0xd8, 0x75, 0xbc, 0xb4, 0xab, 0xe7, 0x78, 0xd9, 0x2b, 0x06, 0x23, 0x26, 0x4b, 0xec, 0x4e, 0x2d,
		0x18, 0xc9, 0xf3, 0xcd, 0x7e, 0x20, 0xbc, 0xf7, 0xaa, 0x80, 0xb4, 0x59, 0x60, 0xe6, 0x8d, 0xbe,
		0xbd, 0xf5, 0xf5, 0x55, 0xe6, 0xd4, 0x91, 0x02, 0x90, 0xcd, 0x81, 0xb0, 0x70, 0x26, 0x52, 0x70,
		0x60, 0xfd, 0xb6, 0x4a, 0xcf, 0xf0, 0xd1, 0x48, 0x0d, 0x85, 0xfd, 0xe0, 0xbe, 0x6d, 0xf5, 0xdd,
		0x80, 0xdb, 0x5f, 0xbb, 0x62, 0xaf, 0x71, 0xf6, 0x9d, 0x89, 0x82, 0x25, 0x85, 0xb3, 0x69, 0x89,
		0x45, 0x6a, 0x10, 0x9f, 0x4c, 0x2b, 0x2d, 0x56, 0x43, 0xdb, 0xe9, 0xb4, 0xf8, 0xa2, 0x95, 0xd8,
		0xae, 0xf6, 0x68, 0xb7, 0xdb, 0x34, 0x15, 0x93, 0x9a, 0xdf, 0xee, 0x48, 0x6a, 0x48, 0x3d, 0x8c,
		0x86, 0xda, 0xf9, 0x02, 0x52, 0x93, 0x7a, 0x4d, 0x3a, 0x6a, 0x47, 0xc5, 0x8a, 0xd9, 0x11, 0x8a,
		0xd1, 0x11, 0xae, 0x1b, 0x55, 0x42, 0xdd, 0x28, 0x72, 0xfd, 0x22, 0xb1, 0xba, 0x51, 0xb6, 0xdf,
		0xfe, 0x26, 0x53, 0x37, 0x2a, 0xbc, 0x4e, 0xac, 0x6e, 0x54, 0x01, 0x75, 0xa3, 0x50, 0x37, 0x4a,
		0x52, 0x18, 0x8b, 0xde, 0x57, 0xc7, 0x7b, 0xb1, 0x1d, 0xd7, 0x12, 0x6c, 0xbf, 0x25, 0x73, 0x6e,
		0x6a, 0x5e, 0x31, 0xf7, 0x39, 0x74, 0xef, 0xda, 0xd1, 0x9b, 0x8a, 0x94, 0x15, 0xe9, 0x25, 0x45,
		0x49, 0x90, 0x44, 0xa5, 0x8d, 0xa8, 0x6b, 0x21, 0x32, 0x67, 0x29, 0x2a, 0xd2, 0x53, 0x34, 0x75,
		0xa5, 0xca, 0x71, 0xf6, 0x27, 0x4f, 0x17, 0x52, 0x15, 0xb0, 0x18, 0xd9, 0xb3, 0x5f, 0x73, 0x7f,
		0x7f, 0x7f, 0xff, 0xb3, 0x6d, 0xfd, 0xb7, 0x66, 0xfd, 0xbb, 0x60, 0x9d, 0x3d, 0xb6, 0x66, 0x7e,
		0xf8, 0xf2, 0xc5, 0x7a, 0x6c, 0x1d, 0xfc, 0x2c, 0xbc, 0xab, 0x16, 0x07, 0x07, 0x7f, 0x9b, 0xfe,
		0xbe, 0xf5, 0xe5, 0xcb, 0xe1, 0xc1, 0xff, 0xc8, 0x5c, 0xf5, 0xb7, 0x83, 0x5f, 0xc3, 0x6b, 0x4d,
		0x3d, 0x53, 0xa0, 0x72, 0x06, 0x6e, 0xfe, 0xb9, 0x8d, 0x89, 0x10, 0x38, 0xe5, 0xa5, 0xa5, 0x2d,
		0x50, 0x94, 0xa0, 0x28, 0xed, 0x8a, 0xa2, 0x94, 0x65, 0x7a, 0xba, 0x59, 0xb9, 0x5e, 0x43, 0x4e,
		0xf7, 0x04, 0x1e, 0x27, 0xee, 0x63, 0x88, 0x7c, 0x7d, 0x73, 0x2d, 0x3b, 0x5e, 0xae, 0x3c, 0x2c,
		0x7f, 0xd8, 0xc5, 0x47, 0x59, 0xf2, 0x18, 0x66, 0xd7, 0x69, 0x33, 0x37, 0x58, 0x6d, 0x81, 0xd3,
		0x72, 0x8e, 0xe3, 0x0f, 0xae, 0x98, 0x8a, 0xf5, 0x2c, 0x7b, 0x23, 0x09, 0x8a, 0x43, 0x7a, 0x66,
		0x49, 0xce, 0xfa, 0x6f, 0x23, 0xe2, 0x5a, 0x84, 0x89, 0x8c, 0xb0, 0xbb, 0x78, 0x4b, 0x54, 0x26,
		0xdf, 0x9d, 0x68, 0x11, 0x6e, 0x62, 0xc7, 0x93, 0x37, 0x27, 0x50, 0x91, 0x3b, 0xba, 0x22, 0x1b,
		0x25, 0xb9, 0x37, 0x2f, 0x86, 0xec, 0xca, 0x2b, 0x1b, 0x17, 0x4b, 0xc2, 0x12, 0xcb, 0x26, 0x7f,
		0x21, 0xe9, 0x3f, 0x24, 0x97, 0xd6, 0xd6, 0x44, 0x16, 0xb1, 0xa7, 0xd9, 0x2d, 0xa1, 0x25, 0xf6,
		0x92, 0xd4, 0x23, 0xb6, 0x08, 0x17, 0xe9, 0x46, 0xd1, 0x5d, 0xad, 0x0b, 0x9b, 0x02, 0xcb, 0x1b,
		0x99, 0x48, 0x07, 0x15, 0x5e, 0xf8, 0x92, 0x62, 0x46, 0x62, 0x29, 0xa1, 0xed, 0xb1, 0x44, 0xa3,
		0x9a, 0x11, 0x3a, 0x1a, 0x67, 0x9b, 0xc1, 0xbb, 0xa1, 0xc8, 0x84, 0xf8, 0xdd, 0xad, 0x18, 0x3e,
		0x95, 0x03, 0x20, 0x77, 0x04, 0xe4, 0x0e, 0x81, 0xdc, 0x31, 0xc8, 0x39, 0x08, 0x05, 0x81, 0xd9,
		0xa0, 0x8d, 0xe3, 0xfd, 0xea, 0x79, 0x5d, 0x66, 0xbb, 0x14, 0xd9, 0xac, 0x45, 0x94, 0x12, 0x31,
		0x12, 0x4b, 0xd9, 0x18, 0x2f, 0x58, 0xab, 0x63, 0x73, 0x5b, 0xdd, 0xff, 0xcf, 0x8d, 0x06, 0x6f,
		0x0a, 0x6f, 0x0a, 0x6f, 0x2a, 0xb5, 0x6e, 0xfa, 0xee, 0xd0, 0x1f, 0xa1, 0x32, 0xc0, 0xfc, 0x16,
		0xe3, 0xb8, 0xb6, 0xff, 0x4a, 0x98, 0x6c, 0x7c, 0xb6, 0x23, 0xb9, 0xd8, 0x01, 0xf7, 0x1d, 0xf7,
		0x99, 0x34, 0x0b, 0x1b, 0x55, 0xc4, 0xf2, 0xb3, 0xf5, 0x3b, 0x1d, 0xba, 0x8d, 0xdf, 0xe9, 0x60,
		0xdb, 0xc7, 0xb6, 0x8f, 0x6d, 0x7f, 0x4b, 0x8e, 0x5c, 0xd1, 0x81, 0xc3, 0x91, 0xee, 0x48, 0x1a,
		0xd7, 0xd8, 0x82, 0x26, 0x7f, 0x07, 0xd1, 0x2f, 0xd2, 0x53, 0x94, 0x51, 0x61, 0xf7, 0x51, 0xdf,
		0x75, 0xb2, 0xda, 0x36, 0x13, 0x9a, 0xbc, 0x86, 0x5d, 0x03, 0xed, 0x33, 0x97, 0x2f, 0xd9, 0x85,
		0xf6, 0x99, 0x33, 0xe6, 0x86, 0xaa, 0xae, 0x52, 0x6e, 0xa3, 0x04, 0xb7, 0x01, 0xb7, 0x11, 0xeb,
		0x5b, 0xe2, 0x28, 0x0f, 0x47, 0x79, 0x60, 0xa1, 0x60, 0xa1, 0x5b, 0x60, 0xa1, 0xdb, 0x3f, 0xca,
		0x4b, 0x44, 0xfe, 0xea, 0xb0, 0xa0, 0xed, 0x3b, 0x3d, 0x25, 0xd6, 0x3a, 0xcd, 0xde, 0x9a, 0x19,
		0x0c, 0xae, 0x07, 0xae, 0x07, 0xae, 0x27, 0x9b, 0x02, 0x58, 0x22, 0x9e, 0x87, 0xfd, 0xe8, 0x39,
		0x7e, 0xa8, 0x02, 0x59, 0x1d, 0x19, 0x0e, 0xb3, 0x30, 0x6d, 0x6f, 0x07, 0x84, 0x07, 0x82, 0x07,
		0x82, 0x07, 0x92, 0x5a, 0x37, 0x7d, 0xc7, 0xe5, 0xd5, 0x32, 0x81, 0x07, 0x3a, 0x45, 0x29, 0xc2,
		0x37, 0x83, 0xa1, 0x14, 0xa1, 0xd2, 0xab, 0xd0, 0x51, 0x8a, 0x50, 0x2d, 0x55, 0x74, 0x57, 0xde,
		0x0e, 0x2a, 0x39, 0x2f, 0x87, 0x28, 0xac, 0x43, 0x04, 0x4d, 0x18, 0xa2, 0x02, 0x00, 0x49, 0x00,
		0x49, 0xa0, 0xc7, 0xac, 0xfb, 0x8e, 0x8e, 0x6b, 0xf5, 0x03, 0x02, 0x32, 0x34, 0x1e, 0x07, 0x0e,
		0x07, 0x0e, 0x07, 0x0e, 0x07, 0x0e, 0x67, 0x8d, 0xc3, 0x09, 0x82, 0x3e, 0x23, 0x52, 0x60, 0x66,
		0xc6, 0x82, 0xe3, 0x81, 0xe3, 0x81, 0xe3, 0x81, 0xf8, 0x02, 0xf1, 0x05, 0xe2, 0x0b, 0xc4, 0x17,
		0x88, 0x2f, 0xc8, 0xc9, 0x04, 0x38, 0x01, 0x38, 0xd9, 0x01, 0x70, 0x82, 0x9c, 0xcc, 0x25, 0x54,
		0x11, 0x39, 0x99, 0xcb, 0x27, 0x26, 0xf7, 0x39, 0x99, 0x48, 0x61, 0xc4, 0x2e, 0x89, 0x5d, 0x12,
		0x11, 0x5c, 0x09, 0xfb, 0xbb, 0x64, 0xfc, 0xce, 0x77, 0xbb, 0x4b, 0xe1, 0x72, 0x46, 0xc3, 0xc0,
		0xdb, 0xc0, 0xdb, 0xc0, 0xdb, 0xc8, 0xc1, 0xcf, 0x0c, 0x9e, 0x54, 0xec, 0x76, 0x82, 0x71, 0xf6,
		0xba, 0x45, 0x0a, 0xe3, 0xbe, 0xdd, 0x29, 0xef, 0xef, 0xf6, 0xbb, 0x5d, 0x85, 0x22, 0xf2, 0xf1,
		0x15, 0xc0, 0xb4, 0xf4, 0x7b, 0x5b, 0xb5, 0x6c, 0x95, 0xbb, 0xbe, 0x5d, 0x8d, 0xc6, 0x99, 0xfc,
		0xbd, 0xdb, 0xad, 0xdf, 0xde, 0xce, 0x62, 0x36, 0x4b, 0xec, 0xc7, 0x28, 0x1c, 0xbf, 0xee, 0x55,
		0x2b, 0x95, 0xda, 0xf7, 0x9e, 0x9f, 0x87, 0x28, 0x79, 0x73, 0xa9, 0xfd, 0xf1, 0x07, 0x53, 0x52,
		0x6a, 0xdf, 0x7b, 0xce, 0x66, 0x99, 0x7d, 0xef, 0x39, 0xb1, 0x12, 0xfb, 0x6d, 0xcf, 0x0d, 0xbc,
		0xae, 0x40, 0xe7, 0xc2, 0xc9, 0x05, 0x19, 0x29, 0xb0, 0xef, 0x3d, 0xef, 0x66, 0x71, 0x7d, 0xef,
		0x39, 0x35, 0x85, 0xf5, 0x05, 0xab, 0x94, 0xcb, 0x55, 0x27, 0x4f, 0x7d, 0x59, 0x7d, 0xef, 0x39,
		0x9f, 0x25, 0xf5, 0xbd, 0xe7, 0x6d, 0x95, 0xd3, 0xd7, 0x0e, 0xbe, 0x46, 0x9b, 0xd9, 0xd1, 0xd8,
		0xe3, 0x09, 0xd5, 0x22, 0x8a, 0x01, 0x95, 0xde, 0xc5, 0xe9, 0x0a, 0xda, 0x65, 0x6d, 0xee, 0xf9,
		0x81, 0x4c, 0x63, 0xd0, 0xc9, 0xa5, 0xb0, 0x2f, 0xd8, 0x97, 0x94, 0x7d, 0x09, 0xb7, 0xab, 0x98,
		0xac, 0x39, 0x85, 0x22, 0x37, 0x93, 0x11, 0x72, 0xd2, 0xb2, 0xc2, 0x7b, 0x46, 0x8d, 0x1b, 0xd5,
		0x45, 0x9f, 0x8c, 0x50, 0x25, 0x5d, 0xdf, 0x46, 0xb2, 0x87, 0x8b, 0x1a, 0x5a, 0x22, 0x32, 0x90,
		0xf4, 0x8a, 0xef, 0xde, 0x33, 0x84, 0xf7, 0xa4, 0x0c, 0x6b, 0x3b, 0xa2, 0xbb, 0xac, 0xc1, 0x45,
		0x03, 0x3c, 0xd9, 0x6d, 0xa7, 0xeb, 0xf0, 0x57, 0xf5, 0xd7, 0x3c, 0x59, 0x78, 0xd1, 0x88, 0x8a,
		0x2f, 0x45, 0xed, 0x24, 0x8c, 0xcc, 0x28, 0x29, 0x8d, 0x93, 0xde, 0x48, 0xa9, 0x8d, 0x55, 0x9b,
		0xd1, 0x6a, 0x33, 0x5e, 0x2d, 0x46, 0xac, 0x66, 0xcc, 0x8a, 0x46, 0x1d, 0x3d, 0x91, 0xf2, 0x89,
		0xda, 0xc2, 0x7a, 0x73, 0x3a, 0xcc, 0xe5, 0x0e, 0x7f, 0x95, 0x2b, 0x3c, 0xb9, 0x72, 0xbf, 0x24,
		0x08, 0x70, 0x36, 0x1b, 0xe3, 0xaf, 0xf6, 0xde, 0x0e, 0x08, 0x97, 0xf1, 0xe4, 0xc1, 0x1f, 0xfe,
		0xf5, 0x70, 0x75, 0xfb, 0xf1, 0xf1, 0x43, 0xed, 0xa2, 0x71, 0xd5, 0x68, 0xfe, 0x8b, 0x6a, 0x31,
		0x87, 0x41, 0xdf, 0x81, 0x72, 0xe8, 0xde, 0xec, 0x9f, 0x9f, 0x64, 0x23, 0xcd, 0x4d, 0x40, 0xed,
		0xea, 0xca, 0x24, 0x1b, 0x79, 0xf0, 0x2e, 0xf5, 0x8f, 0xfb, 0xe9, 0xb2, 0xd1, 0xcc, 0xd7, 0x03,
		0x37, 0x7f, 0xcf, 0xdb, 0xf3, 0xde, 0xdd, 0x37, 0xfe, 0x9e, 0xa7, 0x67, 0xbe, 0xb8, 0xbd, 0x79,
		0xb8, 0xbd, 0xaa, 0xe7, 0xe9, 0x91, 0xff, 0xa8, 0xdf, 0xdf, 0xd4, 0x73, 0xe5, 0xb9, 0xae, 0x6e,
		0x2f, 0x6a, 0x57, 0x85, 0xdc, 0x3d, 0x71, 0x31, 0x77, 0x4f, 0x5c, 0xca, 0xdd, 0x13, 0x1f, 0xe7,
		0xee, 0x89, 0xcb, 0xb9, 0x7b, 0xe2, 0x4a, 0xee, 0x9e, 0xb8, 0x9a, 0xbb, 0x27, 0x3e, 0xc9, 0xd3,
		0x13, 0x5f, 0xd7, 0x1a, 0xb9, 0xc2, 0x1f, 0x37, 0xcd, 0xbb, 0x3c, 0x3d, 0xee, 0x48, 0x18, 0xc8,
		0xd9, 0x13, 0x37, 0xeb, 0xd7, 0x8f, 0x97, 0xb5, 0xfa, 0xf5, 0xed, 0x4d, 0x9e, 0x1e, 0xfc, 0xd3,
		0x43, 0xfd, 0x9e, 0xf0, 0x79, 0x49, 0x46, 0x6a, 0x65, 0x5c, 0xa2, 0x24, 0xea, 0x11, 0x16, 0x8d,
		0x47, 0xde, 0x2b, 0x4c, 0x7d, 0x9a, 0x14, 0xa6, 0xc8, 0x0c, 0xd8, 0x77, 0xe6, 0x93, 0x9e, 0xae,
		0x44, 0x23, 0xe2, 0x74, 0x65, 0xe3, 0x5c, 0xe1, 0x74, 0x05, 0xa7, 0x2b, 0xab, 0x9f, 0x88, 0xfe,
		0x74, 0x25, 0x78, 0x0d, 0xba, 0xde, 0xb3, 0x45, 0x64, 0xa2, 0xb3, 0x66, 0x5a, 0x2c, 0x13, 0x8c,
		0x55, 0x77, 0xfb, 0x2f, 0x74, 0x4b, 0xb8, 0xe9, 0x3d, 0x8c, 0x92, 0x42, 0xcf, 0x09, 0xf7, 0x6b,
		0xb3, 0x30, 0x9c, 0xc7, 0xfa, 0x75, 0xfd, 0xfe, 0x63, 0xfd, 0xe6, 0x82, 0xea, 0x98, 0x26, 0x1c,
		0xb9, 0x38, 0x3a, 0x05, 0xa9, 0xdf, 0x37, 0x29, 0x47, 0x2d, 0x85, 0xba, 0xec, 0x7d, 0xa3, 0xd9,
		0xb8, 0xa8, 0x5d, 0x51, 0x0e, 0x7c, 0x1c, 0x4e, 0xc4, 0xfd, 0xfd, 0xed, 0x3d, 0xe5, 0xa8, 0xe5,
		0xe1, 0xa8, 0xff, 0xa8, 0xdd, 0xdf, 0x34, 0x6e, 0x3e, 0x52, 0x8e, 0x5b, 0x09, 0x99, 0xc3, 0x6d,
		0xb3, 0x71, 0x51, 0xa7, 0x1c, 0xb6, 0x3a, 0x1c, 0xb6, 0x71, 0xf3, 0xe1, 0xf6, 0xfe, 0xba, 0xd6,
		0x6c, 0xdc, 0xde, 0xd0, 0x4e, 0xf1, 0xc9, 0x70, 0xf4, 0xcb, 0xfa, 0xfb, 0x4f, 0x44, 0xf0, 0x9f,
		0x08, 0x01, 0x9b, 0x4d, 0xaf, 0x11, 0xfa, 0x59, 0x42, 0xb3, 0x1a, 0xad, 0x7b, 0xe9, 0xc8, 0xa6,
		0xe5, 0x5b, 0xff, 0x64, 0xd5, 0x0b, 0x37, 0xc0, 0x5b, 0x3b, 0xec, 0xe8, 0x85, 0x9c, 0x1b, 0x27,
		0x84, 0x63, 0x4e, 0x1d, 0x0a, 0x59, 0xcd, 0xac, 0xd1, 0xb8, 0xa1, 0x7d, 0x9e, 0x1b, 0xc7, 0x84,
		0x63, 0xce, 0x2f, 0xf7, 0x73, 0xa3, 0x4a, 0x38, 0xf6, 0xd8, 0x42, 0xcf, 0x8d, 0x0a, 0xe1, 0xa0,
		0x13, 0x77, 0x72, 0x6e, 0x94, 0xf7, 0xd2, 0x41, 0xac, 0x40, 0x89, 0x74, 0x53, 0xa2, 0x4c, 0xf6,
		0xa1, 0x96, 0xcd, 0x68, 0x88, 0x92, 0x04, 0xa2, 0xff, 0x93, 0x6a, 0xb8, 0x2c, 0x3f, 0x79, 0x32,
		0xb5, 0x2c, 0x94, 0xe3, 0xfa, 0xa8, 0xe2, 0xf9, 0x76, 0xae, 0xa2, 0x05, 0x82, 0x6a, 0x93, 0x67,
		0x8c, 0x59, 0xad, 0x64, 0x21, 0xdf, 0xe4, 0x79, 0x81, 0x01, 0x2a, 0xe0, 0xa1, 0x25, 0x4d, 0x9f,
		0x23, 0xa3, 0x4e, 0xb1, 0x0b, 0x53, 0x16, 0xcf, 0xa8, 0x44, 0x33, 0xb8, 0x30, 0xb8, 0x30, 0xb8,
		0xb0, 0xb4, 0xb9, 0xb0, 0xc8, 0xa8, 0xd3, 0xec, 0xc2, 0x38, 0x49, 0x1f, 0x02, 0x99, 0xae, 0xf6,
		0x0b, 0xb3, 0xaf, 0xea, 0xbc, 0x4a, 0x70, 0x5e, 0x70, 0x5e, 0x89, 0x38, 0x2f, 0x24, 0x35, 0xe9,
		0x46, 0x14, 0x94, 0xc6, 0x49, 0x6f, 0xa4, 0xd4, 0xc6, 0xaa, 0xcd, 0x68, 0xb5, 0x19, 0xaf, 0x16,
		0x23, 0x4e, 0x87, 0x3c, 0x86, 0xa4, 0x26, 0xb2, 0x07, 0x47, 0x52, 0x13, 0x92, 0x9a, 0x76, 0xfc,
		0x81, 0x91, 0xd4, 0xb4, 0xeb, 0xcf, 0x8c, 0xa4, 0xa6, 0x1c, 0x3c, 0x31, 0x92, 0x9a, 0x72, 0xf2,
		0xc4, 0x48, 0x6a, 0xda, 0xfd, 0x27, 0x46, 0x52, 0xd3, 0xee, 0x3f, 0x31, 0x92, 0x9a, 0x76, 0xfa,
		0x89, 0x91, 0xd4, 0xb4, 0xd3, 0x8f, 0x8b, 0xa4, 0xa6, 0xdc, 0x3c, 0x38, 0x92, 0x9a, 0x28, 0xaf,
		0x46, 0xae, 0xcf, 0x9a, 0x61, 0x70, 0xe8, 0x20, 0x37, 0xfb, 0x38, 0x74, 0x40, 0xae, 0x8f, 0x80,
		0x99, 0x22, 0xd7, 0x47, 0x79, 0x64, 0xe4, 0xfa, 0x20, 0xd7, 0x67, 0x7e, 0x74, 0xe4, 0xfa, 0xa8,
		0x6d, 0xfd, 0xc8, 0xf5, 0x41, 0xae, 0xcf, 0x2e, 0xe6, 0xfa, 0x20, 0x05, 0x46, 0x36, 0x05, 0x46,
		0xa2, 0x25, 0xa0, 0xfc, 0xdc, 0xe9, 0xad, 0x5a, 0x3f, 0x6e, 0x19, 0x38, 0x89, 0xf1, 0x32, 0x24,
		0x41, 0x9d, 0x5c, 0x07, 0xc1, 0xe8, 0x6a, 0xe9, 0x4e, 0x82, 0xd3, 0x11, 0x08, 0x3b, 0x0a, 0x46,
		0x83, 0xca, 0x77, 0x16, 0x5c, 0x1c, 0x42, 0xb8, 0xc3, 0xa0, 0xec, 0x1b, 0x4d, 0xac, 0x61, 0xe6,
		0x46, 0x3b, 0x31, 0xa5, 0xa2, 0x86, 0x97, 0x35, 0xa8, 0x1b, 0xdd, 0xea, 0xf1, 0x62, 0x74, 0xab,
		0xc7, 0x87, 0xc9, 0x0d, 0x32, 0xd1, 0x95, 0x33, 0xe9, 0x2e, 0x44, 0xd3, 0xc6, 0x3e, 0x49, 0x36,
		0x22, 0x12, 0x8a, 0xf6, 0x96, 0x8a, 0xee, 0x96, 0x6e, 0x40, 0x54, 0x42, 0x03, 0x22, 0x4a, 0xed,
		0x24, 0xc7, 0x0d, 0xbe, 0x04, 0x36, 0xfe, 0xcc, 0xb6, 0x42, 0x9d, 0x7f, 0x64, 0x33, 0x96, 0xed,
		0x6f, 0xf6, 0xd9, 0xd2, 0x1d, 0x55, 0xd7, 0xb4, 0xe7, 0x7c, 0x72, 0xba, 0x2c, 0x88, 0xdf, 0x97,
		0x72, 0xf4, 0x71, 0x74, 0xa5, 0x44, 0x57, 0xca, 0xe9, 0xf2, 0x11, 0xdf, 0xb1, 0xc2, 0xab, 0xd0,
		0x31, 0x0f, 0x1b, 0x96, 0xd4, 0x86, 0x25, 0xdc, 0x31, 0x4f, 0xb2, 0x39, 0x98, 0x5a, 0x53, 0x30,
		0x74, 0xcb, 0x4b, 0x74, 0x81, 0x93, 0x2d, 0x74, 0x92, 0x05, 0x9f, 0x8c, 0xee, 0x20, 0xdd, 0x2d,
		0x6f, 0xe8, 0x7f, 0x87, 0x50, 0xc3, 0xea, 0xa9, 0x9d, 0xa4, 0xce, 0x39, 0xf4, 0xd9, 0x01, 0x91,
		0x27, 0x8f, 0x54, 0xd3, 0x84, 0x4d, 0x6d, 0x3b, 0xc2, 0x2a, 0x5d, 0x9e, 0x7c, 0x30, 0x3a, 0x21,
		0x25, 0x48, 0x93, 0x3f, 0x55, 0x18, 0xe3, 0x8a, 0xb9, 0xcf, 0x21, 0xbb, 0x51, 0xcb, 0xdd, 0x22,
		0x38, 0x28, 0xbf, 0x76, 0x5c, 0xba, 0x03, 0xe8, 0x30, 0x25, 0x8d, 0xee, 0x40, 0xc7, 0xfc, 0xe0,
		0xdb, 0xed, 0x21, 0x6d, 0xbc, 0x74, 0x9e, 0x1d, 0x59, 0xb9, 0x75, 0xf9, 0x6a, 0x60, 0xcf, 0x36,
		0x77, 0xbe, 0x33, 0x29, 0x95, 0x93, 0x70, 0x61, 0xbf, 0xd5, 0x85, 0xe9, 0x5f, 0x45, 0xa9, 0x52,
		0xc9, 0xdf, 0xcb, 0xd8, 0xd2, 0x61, 0x53, 0x2b, 0x93, 0x87, 0x4d, 0xe4, 0x85, 0xeb, 0x92, 0xa9,
		0xd9, 0xf1, 0x62, 0xff, 0xb0, 0xbc, 0x1e, 0x73, 0x2d, 0xee, 0xbc, 0x10, 0xd4, 0xee, 0x98, 0x1f,
		0x4e, 0xb6, 0x22, 0x02, 0x7b, 0xb2, 0xfb, 0x5d, 0xae, 0xe4, 0xd7, 0xcd, 0x62, 0xb9, 0x2c, 0x99,
		0x82, 0xd5, 0x02, 0x1e, 0x04, 0x1e, 0x04, 0x1e, 0x14, 0x5a, 0x2f, 0x7d, 0xc7, 0xe5, 0xc7, 0x25,
		0x02, 0x3c, 0xa8, 0x52, 0x35, 0xe9, 0xde, 0x76, 0x9f, 0x19, 0xd0, 0x20, 0xd0, 0xa0, 0x6e, 0x34,
		0x58, 0x2e, 0x9d, 0x95, 0xcf, 0xaa, 0x27, 0xa5, 0x33, 0x80, 0x42, 0x80, 0xc2, 0x1d, 0x05, 0x85,
		0x81, 0xf3, 0x5f, 0x22, 0x3c, 0x18, 0x8e, 0xb4, 0x55, 0x28, 0x58, 0x28, 0x00, 0x0a, 0x02, 0x0a,
		0x02, 0x0a, 0x02, 0x0a, 0x02, 0x0a, 0x02, 0x0a, 0x02, 0x0a, 0x02, 0x0a, 0x02, 0x0a, 0xc6, 0xfc,
		0xda, 0xe3, 0xf0, 0x31, 0x45, 0x18, 0x18, 0x8e, 0x02, 0x2c, 0x05, 0x2c, 0x05, 0x2c, 0x25, 0xb4,
		0x5e, 0x70, 0xcc, 0x0a, 0x34, 0x85, 0x63, 0x56, 0xc0, 0x28, 0xc0, 0xa8, 0x8c, 0xc3, 0x28, 0xdf,
		0xa3, 0xe9, 0x8d, 0x30, 0x1e, 0x67, 0x9b, 0x6a, 0x1a, 0xa4, 0x34, 0xc0, 0x3f, 0xc0, 0x3f, 0x48,
		0x69, 0x00, 0x7f, 0x00, 0x7f, 0x90, 0xd2, 0x80, 0x01, 0xf3, 0x89, 0x01, 0x77, 0x2a, 0xa1, 0x3f,
		0xcc, 0x93, 0x0c, 0xff, 0x2b, 0xd5, 0xeb, 0x55, 0x20, 0xcd, 0x5e, 0x20, 0xf9, 0x4c, 0x35, 0xed,
		0x83, 0x28, 0xdd, 0x43, 0x12, 0x80, 0x22, 0x33, 0x0a, 0x99, 0x51, 0xda, 0x01, 0x23, 0x41, 0xdb,
		0x42, 0x95, 0x76, 0x85, 0xcb, 0x3a, 0xad, 0xbe, 0xb1, 0xb5, 0x14, 0xf8, 0x11, 0xa9, 0x13, 0x0c,
		0x95, 0x93, 0x0b, 0x78, 0x0c, 0x78, 0x0c, 0x78, 0x8c, 0xb8, 0x1e, 0x23, 0x34, 0xb0, 0x14, 0xb8,
		0x89, 0x69, 0x0d, 0x1d, 0x69, 0x5f, 0x31, 0x1d, 0x02, 0xc9, 0xd7, 0x70, 0x18, 0xa9, 0x72, 0x18,
		0xd2, 0xc9, 0xd7, 0x51, 0x65, 0x2f, 0x82, 0xb6, 0xe4, 0xd2, 0x35, 0xc2, 0x0c, 0xca, 0xce, 0xbe,
		0x10, 0x82, 0x75, 0x18, 0x13, 0xb9, 0x51, 0x91, 0x1a, 0x97, 0x9a, 0x52, 0xb2, 0xb5, 0xce, 0xbe,
		0x92, 0xa5, 0x40, 0x56, 0x2e, 0x3b, 0xa9, 0xd2, 0x20, 0xc4, 0x86, 0x48, 0x66, 0x90, 0x94, 0x86,
		0x49, 0x6f, 0xa0, 0xd4, 0x86, 0xaa, 0xcd, 0x60, 0xb5, 0x19, 0xae, 0x16, 0x03, 0x26, 0x12, 0x4c,
		0x15, 0x57, 0x9c, 0xaa, 0x61, 0x4f, 0x35, 0x2e, 0xaa, 0xd6, 0xdd, 0x8b, 0xa2, 0x17, 0x4d, 0x0b,
		0x6f, 0x45, 0x4e, 0xab, 0xdd, 0xf8, 0x75, 0x38, 0x01, 0x7d, 0xce, 0x40, 0x97, 0x53, 0xd0, 0xee,
		0x1c, 0xb4, 0x3b, 0x09, 0xad, 0xce, 0x82, 0xc6, 0x69, 0x10, 0x39, 0x0f, 0x75, 0x0e, 0xbf, 0x71,
		0xbd, 0xd2, 0xb6, 0x08, 0x5f, 0xd8, 0xf7, 0x29, 0x4b, 0xac, 0x6b, 0x69, 0x19, 0xbe, 0x30, 0x21,
		0x7a, 0x5a, 0x87, 0x47, 0xb7, 0xd1, 0xd0, 0x42, 0x7c, 0xf2, 0xe7, 0x27, 0xf9, 0x88, 0x86, 0xb6,
		0x96, 0xe2, 0xc4, 0x06, 0x92, 0xe4, 0x34, 0xd0, 0xb6, 0x1a, 0xcf, 0xf2, 0x44, 0x50, 0xb6, 0x20,
		0xcf, 0xf6, 0x3c, 0xd0, 0xb6, 0x26, 0xcf, 0xee, 0x5c, 0x90, 0xb7, 0x2c, 0xcf, 0xee, 0x54, 0x50,
		0xb7, 0x32, 0xcf, 0xee, 0x4c, 0x50, 0xb7, 0x38, 0xcf, 0xf8, 0x4c, 0x14, 0x31, 0x13, 0xf4, 0x2d,
		0xd1, 0x33, 0x3e, 0x13, 0xc7, 0x98, 0x09, 0xfa, 0x16, 0xea, 0x19, 0x9f, 0x89, 0x0a, 0x66, 0x82,
		0xbe, 0xe5, 0x7a, 0xc6, 0x67, 0xe2, 0x04, 0x33, 0x41, 0xdd, 0xa2, 0x3d, 0xbb, 0xf3, 0x40, 0xda,
		0xba, 0x3d, 0xbb, 0xd3, 0x40, 0xdd, 0xd2, 0x3d, 0xd3, 0x33, 0xa1, 0xa3, 0xd5, 0x7b, 0x76, 0x27,
		0x84, 0xb6, 0x05, 0x7c, 0x34, 0x0f, 0xa4, 0x23, 0xb6, 0x76, 0x54, 0xb2, 0x26, 0x0a, 0xe0, 0x5f,
		0x18, 0x97, 0x3c, 0xa0, 0x9f, 0x7e, 0x1a, 0x29, 0xb2, 0x66, 0xc8, 0x7a, 0xe6, 0x2f, 0x18, 0x05,
		0x61, 0x63, 0x6e, 0x03, 0xa7, 0x7d, 0x38, 0xed, 0x1b, 0xdf, 0x00, 0xa7, 0x7d, 0x19, 0x38, 0xed,
		0xa3, 0xef, 0xcd, 0xff, 0xd6, 0x0d, 0x50, 0xf4, 0xe8, 0x8f, 0xc6, 0x24, 0xed, 0xd5, 0x3f, 0x9d,
		0x5e, 0x1d, 0x3d, 0xfb, 0xa3, 0xd1, 0xb5, 0xf5, 0xee, 0x8f, 0xee, 0xa0, 0xa5, 0x87, 0x7f, 0x34,
		0xba, 0xae, 0x5e, 0xfe, 0xd1, 0x0d, 0xb4, 0xf4, 0xf4, 0x8f, 0x46, 0xd7, 0xd4, 0xdb, 0x3f, 0x1a,
		0x5f, 0x4f, 0x8f, 0xff, 0x68, 0x78, 0xad, 0xbd, 0xfe, 0xa3, 0xbb, 0x9c, 0x0c, 0xef, 0x32, 0x6a,
		0x31, 0xbf, 0x97, 0x62, 0x86, 0x60, 0x36, 0xbd, 0x46, 0xe8, 0xef, 0x35, 0x98, 0xe9, 0xc8, 0x7e,
		0x94, 0x23, 0x13, 0x97, 0x43, 0x98, 0x89, 0xf5, 0xc4, 0x6e, 0x2e, 0x2b, 0x34, 0xfc, 0xe8, 0xc5,
		0x29, 0x25, 0xea, 0xaf, 0xf6, 0xb8, 0x91, 0xe3, 0x22, 0x03, 0x60, 0xf3, 0xe3, 0x87, 0x76, 0x7f,
		0x6e, 0x1c, 0x6b, 0x18, 0x7b, 0xde, 0x6c, 0xce, 0x8d, 0xaa, 0x86, 0x7b, 0x8c, 0x2d, 0xff, 0xdc,
		0xa8, 0x68, 0x18, 0x7c, 0xe2, 0xb6, 0xce, 0x8d, 0xf2, 0x5e, 0x3a, 0x09, 0x2b, 0x28, 0x66, 0x5a,
		0x28, 0xe6, 0x56, 0x63, 0x5a, 0x89, 0x27, 0x5e, 0x25, 0x07, 0x7d, 0xb1, 0xaf, 0xbc, 0x54, 0x5a,
		0x3a, 0xdd, 0xfc, 0x2a, 0xcc, 0x2d, 0x5d, 0x88, 0x2f, 0x75, 0x68, 0x2f, 0x11, 0xc9, 0x47, 0x1c,
		0x7f, 0xba, 0xc8, 0x3b, 0xe2, 0xf8, 0xb7, 0x40, 0xca, 0x09, 0xd2, 0x6a, 0x57, 0x92, 0x6f, 0x02,
		0x48, 0xb8, 0x2c, 0x51, 0x7f, 0xe2, 0x44, 0x32, 0xe8, 0x52, 0xc9, 0x74, 0x54, 0x6a, 0xfd, 0x14,
		0x2e, 0x15, 0x2e, 0x15, 0x2e, 0x35, 0xaf, 0x2e, 0x35, 0x72, 0x22, 0x59, 0x74, 0xa9, 0x4a, 0xe5,
		0x49, 0x17, 0xfd, 0xa9, 0x42, 0x95, 0xd2, 0x85, 0xb7, 0x45, 0xe5, 0x4c, 0x4b, 0x70, 0xa6, 0x70,
		0xa6, 0x99, 0x72, 0xa6, 0xc8, 0x33, 0x55, 0x1d, 0x0e, 0x27, 0xcf, 0x38, 0x79, 0x4e, 0xcc, 0x59,
		0xd0, 0x49, 0x81, 0x06, 0xf2, 0x4c, 0x91, 0x67, 0xba, 0x70, 0x1b, 0xe4, 0x99, 0xea, 0x30, 0x90,
		0x24, 0xa7, 0x01, 0x79, 0xa6, 0xc8, 0x33, 0x45, 0x9e, 0xe9, 0xf2, 0xb9, 0x40, 0x9e, 0x29, 0xf2,
		0x4c, 0x17, 0x66, 0x02, 0x79, 0xa6, 0xc8, 0x33, 0x5d, 0x3a, 0x13, 0xc8, 0x33, 0x45, 0x9e, 0x29,
		0xf2, 0x4c, 0x57, 0xcd, 0x04, 0xf2, 0x4c, 0x91, 0x67, 0x8a, 0x3c, 0xd3, 0x25, 0x33, 0x81, 0x3c,
		0x53, 0xe4, 0x99, 0x22, 0xcf, 0x74, 0xf9, 0x4c, 0x20, 0xcf, 0x14, 0x79, 0xa6, 0xdb, 0x1e, 0x05,
		0x69, 0x96, 0x0a, 0xc3, 0xe1, 0xb0, 0x0b, 0x87, 0x5d, 0x4b, 0x6f, 0x80, 0xc3, 0x2e, 0x02, 0xdb,
		0x47, 0x9a, 0x25, 0xd2, 0x2c, 0xd7, 0x8f, 0x8e, 0x34, 0xcb, 0xb5, 0xe3, 0x23, 0xcd, 0x32, 0x39,
		0x80, 0x8c, 0x34, 0xcb, 0xa5, 0xc3, 0x23, 0xcd, 0x72, 0xf9, 0xd8, 0x48, 0xb3, 0xd4, 0xce, 0xd7,
		0x90, 0x65, 0x98, 0xfe, 0x2c, 0xc3, 0x51, 0xd8, 0xf2, 0xb6, 0xc2, 0xb7, 0x13, 0xed, 0x4d, 0xf4,
		0x07, 0x7b, 0x9d, 0x0d, 0xdf, 0x34, 0x14, 0x71, 0xad, 0x79, 0xe5, 0x04, 0xbc, 0xc6, 0xb9, 0x62,
		0xc3, 0xa3, 0x6b, 0xc7, 0xad, 0x77, 0xd9, 0x90, 0xaa, 0x28, 0xb6, 0xeb, 0x36, 0xaf, 0xed, 0x1f,
		0x33, 0x23, 0x15, 0x4f, 0xcb, 0xe5, 0xea, 0x49, 0xb9, 0x5c, 0x38, 0x39, 0x3e, 0x29, 0x9c, 0x55,
		0x2a, 0xc5, 0xaa, 0x4a, 0x74, 0x99, 0x79, 0xeb, 0x77, 0x98, 0xcf, 0x3a, 0xef, 0x87, 0x53, 0xe8,
		0xf6, 0xbb, 0x5d, 0x8a, 0xa1, 0x3e, 0x05, 0xcc, 0x57, 0xea, 0x27, 0xbe, 0xed, 0xae, 0xdc, 0xa4,
		0xa6, 0x68, 0x2a, 0xe5, 0x32, 0xf8, 0xfd, 0x36, 0x77, 0x27, 0xc2, 0x66, 0x78, 0xd7, 0xc7, 0xab,
		0xd1, 0x5d, 0x1f, 0x3f, 0x38, 0x5d, 0xf6, 0xf8, 0x30, 0xb9, 0x0b, 0xba, 0x85, 0x13, 0xbd, 0xb8,
		0x54, 0x74, 0xf0, 0x94, 0xca, 0x61, 0x51, 0xca, 0x59, 0x51, 0xee, 0xdc, 0x59, 0x42, 0xe7, 0xce,
		0x6d, 0x2a, 0x66, 0xbb, 0xdc, 0xb9, 0x53, 0xb5, 0x7f, 0xfe, 0xc2, 0xba, 0x51, 0xeb, 0xa3, 0xff,
		0xd6, 0x64, 0x0a, 0xe8, 0xe3, 0x89, 0x3e, 0x9e, 0xd9, 0xc0, 0xca, 0xca, 0xa2, 0xf2, 0xcc, 0x1e,
		0x13, 0xaa, 0xa7, 0x0a, 0xeb, 0x65, 0xb2, 0xe1, 0x9c, 0x2a, 0x8c, 0x71, 0xc5, 0xdc, 0xe7, 0x70,
		0xb3, 0x57, 0xcb, 0x23, 0x20, 0xa0, 0x6f, 0xd7, 0x0e, 0x5d, 0x99, 0x9f, 0x51, 0x7a, 0x04, 0xe1,
		0xe9, 0xd7, 0x07, 0xdf, 0x6e, 0x0f, 0x51, 0xd5, 0xa5, 0xf3, 0xec, 0xa8, 0xf2, 0x91, 0xf9, 0xd5,
		0xc0, 0x9e, 0x6d, 0xee, 0x7c, 0x67, 0x4a, 0x70, 0x9f, 0x58, 0x3c, 0x1c, 0x12, 0x26, 0xfa, 0x57,
		0x51, 0xaa, 0x54, 0xf2, 0xf7, 0x32, 0xb6, 0xa4, 0x1f, 0xb4, 0x92, 0x22, 0x33, 0x12, 0xc0, 0xf1,
		0xc5, 0xfe, 0x61, 0x0d, 0x79, 0x85, 0xc5, 0x9d, 0x17, 0xa6, 0x8e, 0x44, 0xe6, 0x87, 0x93, 0xed,
		0xce, 0xcc, 0x9e, 0xec, 0x7e, 0x97, 0x2b, 0xb9, 0x41, 0xb3, 0x58, 0x2e, 0x4b, 0x46, 0xa7, 0xb7,
		0x00, 0x9f, 0x00, 0x9f, 0x00, 0x9f, 0x84, 0xd6, 0x4b, 0xdf, 0x71, 0xf9, 0x71, 0x89, 0x00, 0x3e,
		0x29, 0x9c, 0xff, 0x98, 0xf7, 0xb6, 0xfb, 0xcc, 0x00, 0x9e, 0x00, 0x9e, 0x74, 0x83, 0xa7, 0x72,
		0xe9, 0xac, 0x7c, 0x56, 0x3d, 0x29, 0x9d, 0x01, 0x43, 0x01, 0x43, 0x8d, 0x40, 0x4f, 0xe0, 0xfc,
		0x97, 0x08, 0x3e, 0x85, 0x23, 0x6d, 0x15, 0x39, 0x15, 0x0a, 0x40, 0x4e, 0x40, 0x4e, 0x40, 0x4e,
		0x40, 0x4e, 0x40, 0x4e, 0x40, 0x4e, 0x40, 0x4e, 0x40, 0x4e, 0xba, 0x90, 0x53, 0x28, 0x15, 0x75,
		0xbd, 0xe7, 0x27, 0xa7, 0x4b, 0x80, 0x9e, 0xe6, 0x46, 0x03, 0x14, 0x01, 0x14, 0x01, 0x14, 0x11,
		0x5a, 0x2f, 0x38, 0x03, 0x03, 0x18, 0xc9, 0x13, 0x18, 0xa9, 0x14, 0x8b, 0x40, 0x21, 0x40, 0x21,
		0xe6, 0x38, 0xc0, 0x4e, 0x11, 0x7d, 0x84, 0xa3, 0x00, 0x75, 0x00, 0x75, 0x00, 0x75, 0x00, 0x75,
		0x00, 0x75, 0x00, 0x75, 0xac, 0x78, 0x15, 0x88, 0xbc, 0x01, 0xea, 0x18, 0x4e, 0xb2, 0xef, 0x29,
		0x75, 0x76, 0x88, 0xfc, 0xe7, 0x78, 0x9c, 0x6d, 0x9e, 0x18, 0xe1, 0xb8, 0x08, 0x68, 0x09, 0x68,
		0x29, 0x11, 0xb4, 0x84, 0xe3, 0x22, 0x60, 0x25, 0x1c, 0x17, 0x01, 0x32, 0x65, 0x1f, 0x32, 0xed,
		0x6c, 0xe6, 0xa5, 0x78, 0xaa, 0xba, 0x40, 0xd6, 0xe5, 0x1e, 0xe1, 0x6c, 0x4d, 0x52, 0xcd, 0x87,
		0x8f, 0x69, 0xc8, 0xe5, 0x90, 0xc9, 0x65, 0x97, 0xcb, 0x67, 0x93, 0x93, 0x66, 0x8f, 0x2b, 0x64,
		0x8b, 0x2b, 0x64, 0x87, 0xc7, 0x7d, 0x39, 0x92, 0x4b, 0x58, 0x61, 0xe9, 0x9a, 0x42, 0x29, 0xbd,
		0x1b, 0x52, 0xb9, 0xe3, 0x59, 0xc0, 0xe6, 0xf5, 0xbc, 0xfe, 0x13, 0x1b, 0x26, 0x53, 0x74, 0x12,
		0xe5, 0x26, 0x6f, 0xfd, 0xa3, 0xae, 0x7e, 0x80, 0x35, 0x5f, 0xde, 0xf4, 0xd9, 0x8b, 0xc7, 0x99,
		0x15, 0x30, 0xff, 0x3b, 0xf3, 0x83, 0x8d, 0x5f, 0x7e, 0xca, 0x06, 0xe7, 0xaf, 0xdb, 0x30, 0x3d,
		0xf1, 0x92, 0xa4, 0x63, 0x33, 0x26, 0x11, 0x66, 0x24, 0xce, 0x80, 0x44, 0x99, 0x8e, 0x34, 0xa3,
		0x91, 0x66, 0x2e, 0x52, 0x0c, 0x45, 0x6d, 0x81, 0xc7, 0x4d, 0x42, 0x9e, 0x5f, 0x18, 0xf1, 0xe7,
		0x70, 0xe9, 0xba, 0x8a, 0x3b, 0x8f, 0x62, 0x39, 0xf8, 0xc2, 0xc4, 0x5c, 0x86, 0x88, 0xcb, 0x13,
		0x6f, 0x59, 0xa2, 0xad, 0x4c, 0xac, 0x95, 0x89, 0xb4, 0x12, 0x71, 0xa6, 0x45, 0x1c, 0xa2, 0x39,
		0xf3, 0x66, 0x7b, 0xb2, 0x26, 0x24, 0x6b, 0x47, 0x8c, 0xaf, 0x4f, 0xb8, 0x78, 0x44, 0x01, 0xc5,
		0x23, 0xb6, 0xa9, 0x18, 0xed, 0x72, 0xf1, 0x88, 0x6f, 0x5e, 0xc0, 0xd5, 0x45, 0xe3, 0x70, 0x14,
		0xc8, 0xaf, 0x90, 0x5f, 0x21, 0xbf, 0x26, 0x65, 0x37, 0x73, 0x1b, 0xcb, 0x99, 0xc2, 0x18, 0xe3,
		0xa7, 0xd9, 0xba, 0xf8, 0x1a, 0x35, 0x1b, 0xed, 0x59, 0x76, 0xa7, 0xe3, 0xb3, 0x20, 0xa0, 0xec,
		0x04, 0x7f, 0x46, 0x30, 0x16, 0xc9, 0x4c, 0xd1, 0xcd, 0xd8, 0x92, 0x99, 0xfb, 0x5e, 0x26, 0x9c,
		0xbb, 0x85, 0x39, 0x3c, 0x25, 0x1c, 0xf3, 0xce, 0xe6, 0x9c, 0xf9, 0x2e, 0x79, 0x8f, 0x53, 0x73,
		0xff, 0x73, 0xc1, 0x3a, 0x6b, 0xfd, 0xfa, 0x5c, 0xb4, 0xce, 0x5a, 0xa3, 0xff, 0x2d, 0x86, 0x7f,
		0xfd, 0x2c, 0x0d, 0x7e, 0x95, 0x3e, 0x17, 0xac, 0xf2, 0xf8, 0xb7, 0xa5, 0xca, 0xe7, 0x82, 0x55,
		0x69, 0x1d, 0xec, 0x7f, 0xf9, 0x72, 0x28, 0x7a, 0xcd, 0xc1, 0xcf, 0xe3, 0x01, 0x5d, 0x55, 0xe0,
		0x16, 0xe5, 0xb4, 0xde, 0x3e, 0x34, 0xfe, 0xa9, 0x6d, 0x6e, 0xff, 0xdc, 0x4f, 0x6a, 0x76, 0x0f,
		0x7e, 0x23, 0x9c, 0xdf, 0x34, 0x15, 0xae, 0xd7, 0x63, 0xf6, 0x55, 0x98, 0x7d, 0xb8, 0xca, 0x6c,
		0xeb, 0xa9, 0x66, 0x7d, 0x68, 0xfd, 0x2c, 0xbe, 0x2b, 0x0f, 0xce, 0x0f, 0x7e, 0x9e, 0x0c, 0xde,
		0xfe, 0xf2, 0xd7, 0xb2, 0x8f, 0x15, 0xdf, 0x9d, 0x0c, 0xce, 0x57, 0xfc, 0x4b, 0x75, 0x70, 0x1e,
		0x73, 0x8c, 0xca, 0x60, 0x7f, 0xe1, 0xa3, 0xc3, 0xdf, 0x97, 0x56, 0x5d, 0x50, 0x5e, 0x71, 0xc1,
		0xf1, 0xaa, 0x0b, 0x8e, 0x57, 0x5c, 0xb0, 0xf2, 0x2b, 0x95, 0x56, 0x5c, 0x50, 0x19, 0xfc, 0x5a,
		0xf8, 0xfc, 0xfe, 0xf2, 0x8f, 0x56, 0x07, 0x07, 0xbf, 0x56, 0xfd, 0xdb, 0xc9, 0xe0, 0xd7, 0xf9,
		0xc1, 0x41, 0x8e, 0x1d, 0x21, 0x96, 0x5b, 0xf2, 0xcb, 0x2d, 0x7d, 0x1b, 0xc3, 0xde, 0x76, 0xbf,
		0x87, 0xe2, 0xc6, 0x44, 0x88, 0xdc, 0x3b, 0xde, 0x8b, 0xed, 0xb8, 0x56, 0x78, 0x8a, 0x43, 0x08,
		0xdd, 0x09, 0xf6, 0x1f, 0xaa, 0x78, 0x5c, 0x0d, 0xbb, 0x38, 0x65, 0xcc, 0x49, 0x34, 0xe8, 0x24,
		0xe0, 0x81, 0xb8, 0x73, 0x83, 0xb6, 0x78, 0x87, 0xe9, 0x52, 0xa2, 0x8e, 0x7b, 0x20, 0x86, 0x6f,
		0x06, 0x75, 0x6c, 0xca, 0xc2, 0x2b, 0x2b, 0x55, 0x8e, 0xf1, 0xd2, 0xc8, 0x5c, 0x2b, 0x91, 0x83,
		0x26, 0xf0, 0x40, 0xd4, 0x58, 0xc4, 0xdc, 0xdf, 0xdf, 0xdf, 0xff, 0x6c, 0x5b, 0xff, 0xad, 0x59,
		0xff, 0x2e, 0x58, 0x67, 0x8f, 0xad, 0x99, 0x1f, 0xbe, 0x7c, 0xb1, 0x1e, 0x5b, 0x07, 0x3f, 0x0b,
		0xef, 0xaa, 0xc5, 0xc1, 0xc1, 0xdf, 0xa6, 0xbf, 0x6f, 0x7d, 0xf9, 0x72, 0x78, 0xf0, 0x3f, 0x32,
		0x57, 0xfd, 0xed, 0xe0, 0xd7, 0xf0, 0x5a, 0x33, 0x1d, 0x53, 0xa9, 0x03, 0xdb, 0x0d, 0x31, 0x5d,
		0xf2, 0x13, 0x4a, 0x80, 0x66, 0x5a, 0xd9, 0x8a, 0xec, 0xda, 0x72, 0xf3, 0x82, 0xd7, 0x67, 0x8f,
		0x5b, 0x5e, 0xdb, 0x6a, 0x7b, 0x2f, 0xbd, 0x21, 0x61, 0x66, 0x1d, 0xab, 0xcb, 0xec, 0xa7, 0xe1,
		0xa0, 0x83, 0x14, 0x47, 0xf7, 0xbb, 0x8c, 0xff, 0xe5, 0xf9, 0xff, 0xb1, 0x1c, 0x37, 0xe0, 0xb6,
		0xdb, 0x26, 0x88, 0xf3, 0x5f, 0x18, 0x11, 0xc7, 0x37, 0x38, 0xbe, 0x11, 0x31, 0x48, 0x1c, 0xdf,
		0x2c, 0xd8, 0x90, 0xe5, 0xb3, 0x27, 0x8a, 0xe3, 0x1c, 0x95, 0x60, 0xfa, 0xbb, 0x28, 0xd8, 0xac,
		0x6d, 0xb9, 0x8c, 0x0f, 0xbf, 0xda, 0xf9, 0xdb, 0xef, 0x19, 0xac, 0xfb, 0xc7, 0xd9, 0x7f, 0x1b,
		0x85, 0x3b, 0xcc, 0x7d, 0x7a, 0xf8, 0xe8, 0xf0, 0xfc, 0xc9, 0x79, 0xfe, 0x71, 0xa4, 0x54, 0xcf,
		0xf3, 0x09, 0xce, 0xe9, 0x67, 0x07, 0xdb, 0x66, 0x86, 0x57, 0xa5, 0x58, 0x46, 0x8e, 0x17, 0x76,
		0x29, 0xec, 0x52, 0x49, 0xec, 0x52, 0x43, 0x6b, 0xb7, 0xdc, 0xfe, 0xcb, 0x57, 0xe6, 0x13, 0x6c,
		0x4e, 0x55, 0x24, 0x7a, 0xad, 0x50, 0x6e, 0x90, 0xe8, 0xb5, 0x6d, 0x31, 0x2d, 0x7a, 0x15, 0xd5,
		0x4a, 0xe5, 0x18, 0x39, 0x5e, 0x50, 0x02, 0x76, 0x10, 0x0f, 0x06, 0xe1, 0xde, 0x1d, 0x9d, 0xf7,
		0x2b, 0x43, 0xc2, 0x37, 0xe3, 0x01, 0x5f, 0x01, 0x5f, 0x01, 0x5f, 0x09, 0xad, 0x17, 0x92, 0x80,
		0xc5, 0x1d, 0x0d, 0xe5, 0x24, 0x0d, 0x48, 0x24, 0x3d, 0x11, 0xa6, 0x3f, 0x8f, 0xc9, 0x4c, 0xe0,
		0x61, 0xaa, 0xcf, 0x60, 0x32, 0x14, 0x60, 0xb8, 0x2b, 0x71, 0x1b, 0xc4, 0x01, 0x84, 0x29, 0x37,
		0x53, 0x44, 0x6e, 0x65, 0x36, 0x50, 0x30, 0xf5, 0x8e, 0x0b, 0xcb, 0x2a, 0x93, 0x01, 0x81, 0x38,
		0x42, 0xcf, 0x1a, 0x71, 0xde, 0xa9, 0x6a, 0x2f, 0xf3, 0x45, 0x16, 0xe6, 0x7f, 0x3c, 0x1a, 0x67,
		0x1c, 0xa7, 0xa0, 0xed, 0xbe, 0x54, 0xaa, 0xa8, 0x4a, 0xaa, 0x9b, 0xa4, 0xaa, 0x80, 0xbc, 0x69,
		0xe4, 0x4d, 0x6b, 0x57, 0x01, 0xa2, 0xf7, 0x3d, 0x74, 0x7d, 0x72, 0xc7, 0xfe, 0x2a, 0xc7, 0xfd,
		0xd1, 0x31, 0xff, 0xe1, 0xe1, 0xd8, 0x43, 0x1c, 0x85, 0x06, 0x96, 0x02, 0x37, 0x11, 0xb0, 0x2e,
		0x6b, 0x73, 0xcf, 0x0f, 0xe4, 0x7d, 0xc5, 0x74, 0x08, 0x14, 0x5a, 0x80, 0xc3, 0x48, 0x95, 0xc3,
		0x90, 0x2e, 0xb4, 0x30, 0x59, 0xd3, 0x04, 0x8a, 0xfd, 0x64, 0x24, 0x35, 0xad, 0xbe, 0x08, 0xad,
		0x1e, 0x5a, 0x7d, 0x36, 0xb4, 0x7a, 0x59, 0xa3, 0x8b, 0x06, 0x90, 0x2c, 0xfb, 0xb3, 0x72, 0xd9,
		0x49, 0x95, 0x01, 0x22, 0x36, 0x44, 0x32, 0x83, 0xa4, 0x34, 0x4c, 0x7a, 0x03, 0xa5, 0x36, 0x54,
		0x6d, 0x06, 0xab, 0xcd, 0x70, 0xb5, 0x18, 0xb0, 0xba, 0x78, 0x41, 0xa0, 0x61, 0x2b, 0x1b, 0x76,
		0x34, 0xd0, 0x93, 0xdd, 0x76, 0xba, 0x0e, 0x7f, 0xa5, 0x5b, 0x1e, 0x93, 0x05, 0x1c, 0x8d, 0x4c,
		0xf4, 0x12, 0xd5, 0x4e, 0xca, 0xb5, 0x19, 0xbf, 0x0e, 0x27, 0xa0, 0xcf, 0x19, 0xe8, 0x72, 0x0a,
		0xda, 0x9d, 0x83, 0x76, 0x27, 0xa1, 0xd5, 0x59, 0xd0, 0x38, 0x0d, 0x22, 0xe7, 0xa1, 0xce, 0xe1,
		0x37, 0xae, 0x57, 0xa7, 0xc3, 0x5c, 0xee, 0xf0, 0x57, 0xb5, 0xb0, 0xfe, 0x95, 0xfb, 0x7e, 0x85,
		0x70, 0xcc, 0xc6, 0xf8, 0xab, 0xbe, 0xb7, 0x03, 0x0d, 0xe6, 0x30, 0x99, 0x90, 0x87, 0x7f, 0x3d,
		0x5c, 0xdd, 0x7e, 0x7c, 0xfc, 0x50, 0xbb, 0x68, 0x5c, 0x35, 0x9a, 0xff, 0xa2, 0x36, 0x8a, 0x30,
		0x7c, 0x2f, 0x20, 0x2f, 0xd7, 0x60, 0x90, 0x66, 0x6c, 0x2f, 0x9d, 0x98, 0xda, 0xd5, 0x95, 0x49,
		0x7e, 0x87, 0xc1, 0xbb, 0xcc, 0x4d, 0xc3, 0xa7, 0xcb, 0x46, 0x13, 0x13, 0x31, 0x9c, 0x88, 0xe6,
		0xef, 0x98, 0x87, 0xd1, 0x3c, 0xdc, 0xdd, 0x37, 0xfe, 0x8e, 0xb9, 0x30, 0xcc, 0x8b, 0xdb, 0x9b,
		0x87, 0xdb, 0xab, 0x3a, 0xa6, 0xc2, 0x30, 0xff, 0xa8, 0xdf, 0xdf, 0xd4, 0xe1, 0x31, 0xcf, 0x0d,
		0xf3, 0xea, 0xf6, 0xa2, 0x76, 0x55, 0xc0, 0x4c, 0x8c, 0x67, 0xa2, 0x88, 0x99, 0x18, 0xcf, 0x44,
		0x09, 0x33, 0x31, 0x9e, 0x89, 0x63, 0xcc, 0xc4, 0x78, 0x26, 0xca, 0x98, 0x89, 0xf1, 0x4c, 0x54,
		0x30, 0x13, 0xe3, 0x99, 0xa8, 0x62, 0x26, 0xc6, 0x33, 0x71, 0x82, 0x99, 0x30, 0xcc, 0xeb, 0x5a,
		0x03, 0xb8, 0xea, 0xdc, 0x30, 0x6f, 0x9a, 0x77, 0x98, 0x86, 0x89, 0x60, 0x83, 0x99, 0x08, 0x67,
		0xa2, 0x59, 0xbf, 0x7e, 0xbc, 0xac, 0xd5, 0xaf, 0x6f, 0x6f, 0x30, 0x21, 0x86, 0xf9, 0xe9, 0xa1,
		0x7e, 0xaf, 0x61, 0x1e, 0x48, 0x47, 0x6c, 0xed, 0xa8, 0x64, 0x4d, 0x14, 0x8a, 0xbb, 0x30, 0x2e,
		0x79, 0x68, 0x2e, 0xfd, 0x34, 0x52, 0xe4, 0x8c, 0x07, 0xec, 0x3b, 0xf3, 0xb5, 0x9c, 0xf6, 0x45,
		0x23, 0xe3, 0xb4, 0x4f, 0x79, 0x2e, 0x71, 0xda, 0x17, 0xdd, 0x00, 0xa7, 0x7d, 0x19, 0x38, 0xed,
		0x0b, 0x5e, 0x83, 0xae, 0xf7, 0x6c, 0x11, 0xbb, 0x80, 0x59, 0x37, 0x50, 0x2c, 0x13, 0x8e, 0x59,
		0x77, 0xfb, 0x2f, 0xf4, 0xa6, 0xd0, 0xf4, 0x1e, 0xb8, 0xef, 0xb8, 0xcf, 0xe4, 0x23, 0x1b, 0xa3,
		0xce, 0xfe, 0xe7, 0x86, 0x59, 0xbf, 0xae, 0xdf, 0x7f, 0xac, 0xdf, 0x5c, 0x50, 0x1f, 0x1f, 0x86,
		0x77, 0x28, 0x8e, 0x4e, 0xe3, 0xea, 0xf7, 0x4d, 0x1d, 0xa3, 0x97, 0x42, 0x1d, 0xff, 0xbe, 0xd1,
		0x6c, 0x5c, 0xd4, 0xae, 0x74, 0xdc, 0xe0, 0x38, 0x9c, 0xa0, 0xfb, 0xfb, 0xdb, 0x7b, 0x1d, 0xa3,
		0x97, 0x87, 0xa3, 0xff, 0xa3, 0x76, 0x7f, 0xd3, 0xb8, 0xf9, 0xa8, 0x63, 0xfc, 0x4a, 0xc8, 0xbc,
		0x6e, 0x9b, 0x8d, 0x8b, 0xba, 0x8e, 0xe1, 0xab, 0xc3, 0xe1, 0x1b, 0x37, 0x1f, 0x6e, 0xef, 0xaf,
		0x6b, 0xcd, 0xc6, 0xed, 0x8d, 0x9e, 0x57, 0x70, 0x32, 0xbc, 0xcb, 0x65, 0xfd, 0xfd, 0x27, 0x62,
		0xda, 0x44, 0xcc, 0x10, 0xcc, 0xa6, 0xd7, 0x70, 0xb9, 0x1e, 0x33, 0x1d, 0xd9, 0x0f, 0x79, 0xf9,
		0xf0, 0x11, 0x84, 0x99, 0x58, 0xcf, 0xb9, 0x51, 0xd2, 0x30, 0xfc, 0xe8, 0xc5, 0x9d, 0x1b, 0x27,
		0x1a, 0xc6, 0x9e, 0x3a, 0x2e, 0xf2, 0x1a, 0xda, 0xa3, 0xf1, 0x43, 0xbb, 0x3f, 0x37, 0x8e, 0x35,
		0x8c, 0x3d, 0x6f, 0x36, 0x4a, 0x65, 0xbc, 0x56, 0x6f, 0xa4, 0x23, 0xcb, 0x3f, 0x37, 0x2a, 0x1a,
		0x06, 0x9f, 0xb8, 0xad, 0x73, 0xa3, 0xbc, 0x97, 0x4e, 0xc2, 0x0a, 0x8a, 0x99, 0x16, 0x8a, 0xb9,
		0xd5, 0x98, 0x56, 0xe2, 0x89, 0xa7, 0xcd, 0x26, 0x8d, 0x32, 0xab, 0xa2, 0xff, 0x93, 0x4a, 0x30,
		0xa5, 0x9b, 0x71, 0x85, 0xd9, 0xa6, 0x0b, 0xfa, 0xa5, 0x0e, 0xf6, 0x25, 0xa2, 0xfd, 0x88, 0xec,
		0x4f, 0x17, 0x9d, 0x47, 0x64, 0xff, 0x16, 0x68, 0x3a, 0x41, 0xa2, 0xed, 0x4a, 0x3a, 0x7e, 0x42,
		0x53, 0xa0, 0xe6, 0x4d, 0x22, 0x6e, 0xe4, 0x44, 0x32, 0xe8, 0x52, 0xc9, 0x94, 0x55, 0x6a, 0x45,
		0x15, 0x2e, 0x15, 0x2e, 0x15, 0x2e, 0x35, 0xaf, 0x2e, 0x35, 0x72, 0x22, 0x59, 0x74, 0xa9, 0xdc,
		0xe6, 0x8c, 0xd0, 0x9f, 0x86, 0xc3, 0xa5, 0x2c, 0xf3, 0xb4, 0x04, 0x67, 0x0a, 0x67, 0x9a, 0x29,
		0x67, 0x8a, 0xcc, 0x53, 0xd5, 0xe1, 0x70, 0x16, 0x8d, 0xb3, 0xe8, 0xc4, 0x9c, 0x05, 0x9d, 0x38,
		0x68, 0x20, 0xf3, 0x14, 0x99, 0xa7, 0x0b, 0xb7, 0x41, 0xe6, 0xa9, 0x0e, 0x03, 0x49, 0x72, 0x1a,
		0x90, 0x79, 0x8a, 0xcc, 0x53, 0x64, 0x9e, 0x2e, 0x9f, 0x0b, 0x64, 0x9e, 0x22, 0xf3, 0x74, 0x61,
		0x26, 0x90, 0x79, 0x8a, 0xcc, 0xd3, 0xa5, 0x33, 0x81, 0xcc, 0x53, 0x64, 0x9e, 0x22, 0xf3, 0x74,
		0xd5, 0x4c, 0x20, 0xf3, 0x14, 0x99, 0xa7, 0xc8, 0x3c, 0x5d, 0x32, 0x13, 0xc8, 0x3c, 0x45, 0xe6,
		0x29, 0x32, 0x4f, 0x97, 0xcf, 0x04, 0x32, 0x4f, 0x91, 0x79, 0xba, 0xed, 0x51, 0x90, 0x78, 0xa9,
		0x30, 0x1c, 0x0e, 0xbb, 0x70, 0xd8, 0xb5, 0xf4, 0x06, 0x38, 0xec, 0x22, 0xb0, 0x7d, 0x24, 0x5e,
		0x22, 0xf1, 0x72, 0xfd, 0xe8, 0x48, 0xbc, 0x5c, 0x3b, 0x3e, 0x12, 0x2f, 0x93, 0x03, 0xc8, 0x48,
		0xbc, 0x5c, 0x3a, 0x3c, 0x12, 0x2f, 0x97, 0x8f, 0x8d, 0xc4, 0x4b, 0xed, 0x7c, 0x0d, 0x79, 0x87,
		0x59, 0xcc, 0x3b, 0x1c, 0x05, 0x32, 0x6f, 0x2b, 0xa0, 0x3b, 0xd1, 0xfe, 0x45, 0x7f, 0xb0, 0xd7,
		0xd9, 0x80, 0x4e, 0x43, 0x11, 0xe9, 0x9a, 0x57, 0x4e, 0xc0, 0x6b, 0x9c, 0x2b, 0x36, 0x45, 0xba,
		0x76, 0xdc, 0x7a, 0x97, 0x0d, 0xc9, 0x4b, 0xa0, 0xe6, 0x57, 0xcd, 0x6b, 0xfb, 0xc7, 0xcc, 0x48,
		0xc5, 0xd3, 0x72, 0xb9, 0x7a, 0x52, 0x2e, 0x17, 0x4e, 0x8e, 0x4f, 0x0a, 0x67, 0x95, 0x4a, 0xb1,
		0xaa, 0x12, 0x6f, 0x66, 0xde, 0xfa, 0x1d, 0xe6, 0xb3, 0xce, 0xfb, 0xe1, 0x14, 0xba, 0xfd, 0x6e,
		0x97, 0x62, 0xa8, 0x4f, 0x01, 0x1b, 0x4e, 0xde, 0x93, 0xdd, 0x0d, 0x58, 0x26, 0x7b, 0xf0, 0x6a,
		0x36, 0x4e, 0x53, 0x29, 0xdf, 0xc1, 0xef, 0xb7, 0xb9, 0x3b, 0x11, 0x3f, 0xc3, 0xef, 0xf1, 0x78,
		0x35, 0xfa, 0x1e, 0x8f, 0xf7, 0xe1, 0x8d, 0x1f, 0xc2, 0xfb, 0x3e, 0x3e, 0x4c, 0xee, 0x86, 0xae,
		0xc1, 0xda, 0x5e, 0x69, 0x2a, 0x3a, 0x82, 0x4a, 0x65, 0xc0, 0x28, 0x65, 0xbc, 0x28, 0x77, 0x02,
		0x2d, 0xa1, 0x13, 0xe8, 0x36, 0xf5, 0xb6, 0x5d, 0xee, 0x04, 0x2a, 0xd5, 0x47, 0x7b, 0x61, 0xb1,
		0x48, 0xf4, 0xd3, 0x7e, 0x6b, 0x1c, 0x05, 0x74, 0x00, 0x45, 0x07, 0xd0, 0x6c, 0x20, 0x68, 0x65,
		0xf1, 0x99, 0xc2, 0x6e, 0xe6, 0x36, 0x96, 0x33, 0x85, 0x31, 0xc6, 0x4f, 0xa3, 0x96, 0x6b, 0x40,
		0x98, 0x2a, 0xe9, 0xf4, 0x2c, 0xbb, 0xd3, 0xf1, 0x59, 0x10, 0x50, 0xa6, 0x02, 0x9f, 0x11, 0x8c,
		0x45, 0x32, 0x53, 0x74, 0x33, 0xb6, 0x64, 0xe6, 0xbe, 0x97, 0x09, 0xe7, 0x6e, 0x61, 0x0e, 0x4f,
		0x09, 0xc7, 0xbc, 0xb3, 0x39, 0x67, 0xbe, 0x4b, 0x9e, 0xe4, 0x62, 0xee, 0x7f, 0x2e, 0x58, 0x67,
		0xad, 0x5f, 0x9f, 0x8b, 0xd6, 0x59, 0x6b, 0xf4, 0xbf, 0xc5, 0xf0, 0xaf, 0x9f, 0xa5, 0xc1, 0xaf,
		0xd2, 0xe7, 0x82, 0x55, 0x1e, 0xff, 0xb6, 0x54, 0xf9, 0x5c, 0xb0, 0x2a, 0xad, 0x83, 0xfd, 0x2f,
		0x5f, 0x0e, 0x45, 0xaf, 0x39, 0xf8, 0x79, 0x3c, 0xa0, 0x93, 0x85, 0x5b, 0x94, 0xd3, 0x7a, 0xfb,
		0xd0, 0xf8, 0xa7, 0xb6, 0xb9, 0xfd, 0x73, 0x3f, 0xa9, 0xd9, 0x3d, 0xf8, 0x8d, 0x70, 0x7e, 0xd3,
		0x74, 0x72, 0xa9, 0xc7, 0xec, 0xab, 0x30, 0xfb, 0x70, 0x95, 0xd9, 0xd6, 0x53, 0xcd, 0xfa, 0xd0,
		0xfa, 0x59, 0x7c, 0x57, 0x1e, 0x9c, 0x1f, 0xfc, 0x3c, 0x19, 0xbc, 0xfd, 0xe5, 0xaf, 0x65, 0x1f,
		0x2b, 0xbe, 0x3b, 0x19, 0x9c, 0xaf, 0xf8, 0x97, 0xea, 0xe0, 0x3c, 0xe6, 0x18, 0x95, 0xc1, 0xfe,
		0xc2, 0x47, 0x87, 0xbf, 0x2f, 0xad, 0xba, 0xa0, 0xbc, 0xe2, 0x82, 0xe3, 0x55, 0x17, 0x1c, 0xaf,
		0xb8, 0x60, 0xe5, 0x57, 0x2a, 0xad, 0xb8, 0xa0, 0x32, 0xf8, 0xb5, 0xf0, 0xf9, 0xfd, 0xe5, 0x1f,
		0xad, 0x0e, 0x0e, 0x7e, 0xad, 0xfa, 0xb7, 0x93, 0xc1, 0xaf, 0xf3, 0x83, 0x83, 0x1c, 0x3b, 0x42,
		0x2c, 0xb7, 0xe4, 0x97, 0x5b, 0xfa, 0x36, 0x86, 0xbd, 0xed, 0x7e, 0x0f, 0xc5, 0x8d, 0x89, 0x10,
		0xb9, 0x77, 0xbc, 0x17, 0xdb, 0x71, 0xad, 0x50, 0x6d, 0x25, 0x84, 0xee, 0x04, 0xfb, 0x8f, 0x79,
		0xc5, 0xdc, 0xe7, 0x50, 0xcb, 0x4c, 0x1d, 0x78, 0xbf, 0x76, 0x5c, 0xfa, 0xf8, 0x9d, 0x30, 0x83,
		0x9c, 0xfe, 0xe8, 0xde, 0xfc, 0xe0, 0xdb, 0x6d, 0xee, 0x78, 0xee, 0xa5, 0xf3, 0xec, 0xa8, 0x1e,
		0xd4, 0x2c, 0x5f, 0x4a, 0xec, 0xd9, 0xe6, 0xce, 0x77, 0xa6, 0x74, 0x1e, 0xa2, 0x11, 0xbe, 0x19,
		0xe3, 0x13, 0x26, 0x7d, 0xaf, 0xac, 0x54, 0x39, 0xc6, 0x4b, 0x23, 0x73, 0xad, 0x44, 0x0e, 0x9a,
		0xa6, 0x8e, 0x18, 0x29, 0x16, 0x31, 0xf7, 0xf7, 0xf7, 0xf7, 0x3f, 0xdb, 0xd6, 0x7f, 0x6b, 0xd6,
		0xbf, 0x0b, 0xd6, 0xd9, 0x63, 0x6b, 0xe6, 0x87, 0x2f, 0x5f, 0xac, 0xc7, 0xd6, 0xc1, 0xcf, 0xc2,
		0xbb, 0x6a, 0x71, 0x70, 0xf0, 0xb7, 0xe9, 0xef, 0x5b, 0x5f, 0xbe, 0x1c, 0x1e, 0xfc, 0x8f, 0xcc,
		0x55, 0x7f, 0x3b, 0xf8, 0x35, 0xbc, 0xd6, 0x4c, 0xc7, 0x54, 0xea, 0xc0, 0x76, 0x43, 0x4c, 0x97,
		0xfc, 0x84, 0x12, 0xa0, 0x99, 0xd6, 0x96, 0xa2, 0x16, 0x5a, 0x49, 0x1d, 0x94, 0x4a, 0x1c, 0x41,
		0xb9, 0x8c, 0xff, 0xe5, 0xf9, 0xff, 0xb1, 0x1c, 0x37, 0xe0, 0xb6, 0xab, 0x72, 0x18, 0x35, 0xc1,
		0x36, 0x0b, 0x23, 0xe2, 0xb4, 0x03, 0xa7, 0x1d, 0x02, 0x03, 0xe2, 0xb4, 0x63, 0xd1, 0x86, 0x2c,
		0xb5, 0x82, 0x52, 0x14, 0x65, 0x3e, 0xa3, 0xf2, 0x9e, 0x47, 0x5e, 0xdb, 0x72, 0x19, 0x1f, 0x7e,
		0xb5, 0xf3, 0xb7, 0xdf, 0x33, 0x58, 0xf7, 0x8f, 0xb3, 0xff, 0x36, 0x2e, 0x10, 0x3a, 0xfb, 0xe9,
		0xe1, 0xa3, 0xa7, 0xd8, 0x51, 0x8e, 0x03, 0x35, 0x7a, 0x9e, 0x4f, 0x70, 0x0a, 0x3c, 0x3b, 0x98,
		0xe4, 0x62, 0xbb, 0x64, 0x4f, 0x76, 0xbf, 0xcb, 0x95, 0x76, 0x75, 0xb3, 0x52, 0x94, 0xac, 0x10,
		0xd0, 0x82, 0x53, 0x87, 0x53, 0x87, 0x53, 0x17, 0x5a, 0x2f, 0x43, 0x6b, 0xb7, 0xdc, 0xfe, 0xcb,
		0x57, 0xe6, 0x13, 0xf8, 0x72, 0x85, 0x80, 0x74, 0xf3, 0xde, 0x76, 0x9f, 0x53, 0x71, 0x92, 0x4d,
		0x29, 0xe9, 0x44, 0xba, 0x00, 0x55, 0xae, 0xa7, 0x2e, 0x35, 0x80, 0x5e, 0x05, 0xa0, 0xc8, 0x11,
		0xa6, 0x94, 0x6a, 0xa2, 0x57, 0x51, 0xad, 0x54, 0x8e, 0x2b, 0xf9, 0x7b, 0x1d, 0xe0, 0x99, 0x0b,
		0x93, 0x1c, 0x84, 0x5b, 0x5d, 0x74, 0xf8, 0xaa, 0x8c, 0xa0, 0xde, 0x8c, 0x07, 0x38, 0x02, 0x38,
		0x02, 0x38, 0x22, 0xb4, 0x5e, 0x48, 0xa2, 0xc7, 0x76, 0x34, 0xae, 0x8e, 0x34, 0x3a, 0x8c, 0xf4,
		0x78, 0x8e, 0x5e, 0x1c, 0xcf, 0x4c, 0x14, 0x58, 0xaa, 0x05, 0xf1, 0x0c, 0x45, 0x7b, 0xed, 0xca,
		0x21, 0x3a, 0x71, 0x34, 0x57, 0xca, 0xcd, 0x14, 0x61, 0x34, 0x99, 0x8d, 0xda, 0x4a, 0xbd, 0xe3,
		0xc2, 0xb2, 0xca, 0x64, 0x74, 0xd6, 0xce, 0x9f, 0x67, 0xe6, 0x28, 0xf1, 0x53, 0x3c, 0xab, 0x5e,
		0x20, 0xe9, 0x73, 0x8f, 0x70, 0xfe, 0x26, 0x59, 0xf1, 0x02, 0x09, 0x39, 0x72, 0x89, 0xef, 0xf2,
		0x89, 0xee, 0xa4, 0x89, 0xed, 0x0a, 0x89, 0xec, 0x0a, 0x89, 0xeb, 0x71, 0x5f, 0x86, 0xe4, 0x22,
		0x26, 0x5d, 0xbc, 0xa6, 0x50, 0x4e, 0x71, 0xcc, 0x2c, 0xf3, 0x78, 0xb6, 0xb0, 0x79, 0x65, 0xaf,
		0xff, 0xc4, 0x86, 0x69, 0x16, 0x9d, 0x5e, 0xc5, 0x69, 0x5d, 0xff, 0xcc, 0xab, 0x9f, 0x64, 0xcd,
		0x53, 0x98, 0xdf, 0x63, 0x54, 0x7d, 0x8c, 0x10, 0xf5, 0xf7, 0x8d, 0xb5, 0x2d, 0x62, 0x26, 0x68,
		0xc7, 0x56, 0xc6, 0x44, 0x14, 0x30, 0x71, 0xa5, 0x4b, 0x54, 0xd1, 0x92, 0x56, 0xae, 0xa4, 0x15,
		0x2a, 0x29, 0x25, 0x4a, 0x6d, 0x4d, 0xc7, 0x4d, 0x80, 0x36, 0xdb, 0x93, 0x77, 0x18, 0x73, 0xf2,
		0x26, 0xaf, 0x67, 0x7c, 0x5d, 0xdc, 0xed, 0x44, 0x28, 0xe3, 0x5f, 0x58, 0x72, 0x95, 0x91, 0x58,
		0xe5, 0x25, 0x55, 0x59, 0x09, 0x55, 0x59, 0x32, 0x55, 0x96, 0x48, 0x95, 0x24, 0xd1, 0x41, 0x26,
		0xf7, 0xb4, 0xef, 0xfc, 0x75, 0xdc, 0xa8, 0x96, 0x6c, 0xb3, 0x89, 0xe1, 0x92, 0xa6, 0x25, 0x3e,
		0x84, 0x0d, 0x6b, 0x7a, 0x29, 0x6c, 0x0b, 0xb6, 0x25, 0x65, 0x5b, 0xa2, 0xd5, 0x2f, 0xa2, 0x35,
		0xa7, 0x50, 0x07, 0x46, 0xae, 0x38, 0x91, 0x72, 0x29, 0x98, 0x02, 0x4a, 0xc1, 0xc8, 0x0c, 0x84,
		0x52, 0x30, 0x06, 0x35, 0x32, 0xa2, 0x41, 0x4a, 0x44, 0x06, 0xa2, 0x6c, 0x28, 0x14, 0x06, 0x43,
		0x67, 0x38, 0x54, 0x06, 0x44, 0x6e, 0x48, 0xe4, 0x06, 0x45, 0x6a, 0x58, 0x6a, 0x22, 0xa0, 0xec,
		0xe1, 0xb5, 0x6a, 0xf7, 0x6e, 0xba, 0xae, 0xdd, 0xd4, 0xdd, 0xba, 0x89, 0x1a, 0x17, 0x90, 0x35,
		0x2c, 0x40, 0x6b, 0x7e, 0xb4, 0xe6, 0x4f, 0xc6, 0xa8, 0xa3, 0x27, 0x22, 0x6b, 0x34, 0xa0, 0xa9,
		0x9b, 0x36, 0x65, 0x17, 0x6d, 0x3d, 0xdd, 0xb3, 0x35, 0x77, 0xcd, 0xd6, 0xd1, 0x2d, 0x5b, 0x53,
		0xdb, 0x70, 0xd2, 0xee, 0xd8, 0x84, 0x09, 0xcd, 0xba, 0x1e, 0x97, 0xb6, 0x0b, 0x76, 0x16, 0x1e,
		0x98, 0xb2, 0xdb, 0x75, 0x36, 0x9e, 0x97, 0xb6, 0xab, 0x75, 0xfa, 0x9f, 0x99, 0xbc, 0x7b, 0x75,
		0xfa, 0x1f, 0x99, 0xba, 0x4b, 0x75, 0xfa, 0x9f, 0x98, 0xba, 0x1b, 0x75, 0x46, 0x9e, 0xb8, 0x98,
		0xbb, 0x27, 0x2e, 0xe5, 0xee, 0x89, 0x8f, 0x73, 0xf7, 0xc4, 0xe5, 0xdc, 0x3d, 0x71, 0x25, 0x77,
		0x4f, 0x5c, 0xcd, 0xdd, 0x13, 0x9f, 0xe4, 0xe9, 0x89, 0x69, 0xbb, 0x39, 0xa7, 0xff, 0x79, 0x49,
		0xbb, 0x36, 0xa7, 0xff, 0x71, 0xa9, 0xbb, 0x33, 0x67, 0xe2, 0x89, 0x75, 0x74, 0x61, 0x4e, 0xff,
		0x83, 0xd3, 0x76, 0x5b, 0xa6, 0xa9, 0x0f, 0xd6, 0x42, 0xaf, 0xad, 0xb9, 0xf1, 0x5e, 0x9f, 0x3d,
		0x6e, 0x79, 0x6d, 0xab, 0xed, 0xbd, 0xf4, 0x7c, 0x16, 0x04, 0xac, 0x63, 0x75, 0x99, 0xfd, 0x34,
		0x1c, 0x7c, 0x5b, 0x39, 0xc0, 0x03, 0x95, 0x16, 0x40, 0x54, 0x6d, 0xa2, 0xa9, 0xdb, 0x43, 0xe3,
		0x74, 0x45, 0x68, 0x44, 0x9c, 0xae, 0xe0, 0x74, 0x25, 0x86, 0x6d, 0x92, 0xb7, 0x6f, 0xa6, 0x6c,
		0xdb, 0x4c, 0xdb, 0xae, 0x59, 0x4f, 0x9b, 0x66, 0x7d, 0xed, 0x99, 0xf5, 0xb4, 0x65, 0xd6, 0xd6,
		0x8e, 0x59, 0x4f, 0x1b, 0x66, 0x5d, 0xed, 0x97, 0x35, 0xb5, 0x5d, 0xd6, 0xdb, 0x6e, 0x99, 0xbc,
		0xcd, 0x32, 0x59, 0x7f, 0x79, 0xf2, 0xb6, 0xca, 0x3a, 0xda, 0x29, 0x6b, 0x6a, 0xa3, 0xac, 0xa3,
		0x7d, 0xb2, 0xae, 0xb6, 0xc9, 0x3a, 0xda, 0x25, 0xeb, 0x6c, 0x93, 0xac, 0xa5, 0x3d, 0x32, 0x79,
		0x5b, 0x64, 0xb4, 0x1f, 0x4e, 0x3f, 0x25, 0xca, 0x45, 0xab, 0xd8, 0xef, 0xfc, 0x75, 0x59, 0xbb,
		0x66, 0x91, 0x04, 0x07, 0xf5, 0x89, 0x93, 0xa9, 0x0c, 0xa5, 0x1c, 0xd3, 0x47, 0x15, 0xcb, 0x87,
		0x6a, 0x50, 0x3a, 0x58, 0x24, 0x02, 0x6a, 0x35, 0x3a, 0x1b, 0xba, 0x6a, 0x50, 0x43, 0x27, 0x9d,
		0xa2, 0x22, 0xc3, 0x87, 0x87, 0x63, 0xcf, 0x75, 0x14, 0x19, 0x75, 0x9a, 0x8b, 0xdb, 0xa9, 0x0a,
		0x67, 0x54, 0x82, 0x19, 0x5c, 0x18, 0x5c, 0x18, 0x5c, 0x58, 0xda, 0x5c, 0x58, 0x64, 0xd4, 0x69,
		0x76, 0x61, 0x52, 0xcd, 0xde, 0x17, 0xfd, 0x97, 0x44, 0xd3, 0xf7, 0x85, 0xd9, 0x57, 0x75, 0x5e,
		0x25, 0x38, 0x2f, 0x38, 0xaf, 0x44, 0x9c, 0x17, 0x12, 0x9a, 0x74, 0x23, 0x0a, 0x4a, 0xe3, 0xa4,
		0x37, 0x52, 0x6a, 0x63, 0xd5, 0x66, 0xb4, 0xda, 0x8c, 0x57, 0x8b, 0x11, 0xa7, 0x43, 0x1a, 0x43,
		0x42, 0x13, 0xd9, 0x83, 0x23, 0xa1, 0x09, 0x09, 0x4d, 0x3b, 0xfe, 0xc0, 0x48, 0x68, 0xda, 0xf5,
		0x67, 0x46, 0x42, 0x53, 0x0e, 0x9e, 0x18, 0x09, 0x4d, 0x39, 0x79, 0x62, 0x24, 0x34, 0xed, 0xfe,
		0x13, 0x23, 0xa1, 0x69, 0xf7, 0x9f, 0x18, 0x09, 0x4d, 0x3b, 0xfd, 0xc4, 0x48, 0x68, 0xda, 0xe9,
		0xc7, 0x45, 0x42, 0x53, 0x6e, 0x1e, 0x1c, 0x09, 0x4d, 0x94, 0x57, 0x23, 0xcf, 0x67, 0xcd, 0x30,
		0x38, 0x74, 0x90, 0x9b, 0x7d, 0x1c, 0x3a, 0x20, 0xcf, 0x47, 0xc0, 0x4c, 0x91, 0xe7, 0xa3, 0x3c,
		0x32, 0xf2, 0x7c, 0x90, 0xe7, 0x33, 0x3f, 0x3a, 0xf2, 0x7c, 0xd4, 0xb6, 0x7e, 0xe4, 0xf9, 0x20,
		0xcf, 0x67, 0x17, 0xf3, 0x7c, 0x90, 0xfe, 0x22, 0x93, 0xfe, 0x22, 0xd1, 0x57, 0x4d, 0x7e, 0xde,
		0xf4, 0x56, 0xab, 0x1f, 0xf7, 0x5d, 0x9b, 0xc4, 0x77, 0x19, 0x92, 0x80, 0x4e, 0xae, 0x19, 0x5b,
		0x74, 0xb5, 0x74, 0x53, 0xb6, 0xe9, 0x08, 0x84, 0xcd, 0xd9, 0xa2, 0x41, 0xe5, 0x9b, 0xb4, 0x2d,
		0x0e, 0x21, 0xdc, 0xac, 0x4d, 0xf6, 0x8d, 0x26, 0xdd, 0x81, 0x70, 0xb9, 0x8d, 0x98, 0x52, 0xd1,
		0xc2, 0x6b, 0xda, 0xb8, 0xfd, 0x9d, 0xbf, 0x3e, 0x3e, 0x4c, 0x06, 0xcf, 0x44, 0x4b, 0xc3, 0x24,
		0x3b, 0x0e, 0x4d, 0x9b, 0xf8, 0x24, 0xd9, 0x74, 0x48, 0x28, 0xba, 0x5b, 0x2a, 0x9a, 0x5b, 0xba,
		0xd9, 0x50, 0x09, 0xcd, 0x86, 0x28, 0xb5, 0x92, 0x9c, 0x36, 0xf2, 0x12, 0xd8, 0xe8, 0xb3, 0xde,
		0x34, 0xf2, 0x7b, 0xac, 0x3d, 0x7f, 0xa3, 0x8f, 0x96, 0xee, 0x36, 0xb9, 0x27, 0x30, 0x29, 0x71,
		0x27, 0x43, 0x74, 0x12, 0xd6, 0x4c, 0xc0, 0xda, 0x07, 0x5f, 0xfe, 0xd0, 0x8b, 0x8f, 0xb4, 0xe4,
		0x71, 0xcc, 0x17, 0xbb, 0x1d, 0xb5, 0x9b, 0x5f, 0xf5, 0x2c, 0x91, 0xc7, 0x99, 0xfd, 0xf0, 0x8a,
		0xa9, 0x59, 0xef, 0x30, 0x37, 0x8a, 0xd8, 0x71, 0x1c, 0xe2, 0xac, 0x03, 0x0c, 0x5e, 0xd7, 0xf5,
		0x8d, 0x8b, 0xeb, 0xf0, 0x84, 0x1d, 0x9c, 0xb0, 0x43, 0x7b, 0xeb, 0xc0, 0x86, 0xdf, 0x9b, 0x68,
		0x31, 0x6e, 0x4a, 0xd7, 0x88, 0xdb, 0xd8, 0x49, 0xac, 0x81, 0x53, 0x5a, 0x7a, 0xa6, 0xae, 0x5f,
		0x00, 0xb2, 0x3b, 0xdf, 0xf6, 0x7b, 0xa6, 0xae, 0x5d, 0x20, 0x34, 0x2e, 0x3d, 0x76, 0xcf, 0x54,
		0xdf, 0xeb, 0x73, 0xc7, 0x7d, 0xb6, 0x5e, 0xec, 0xb6, 0x38, 0xdc, 0x9a, 0xbd, 0x58, 0x0c, 0x74,
		0x15, 0x52, 0xda, 0xe1, 0x31, 0xde, 0x92, 0xdb, 0x3d, 0xd0, 0x15, 0x6b, 0x49, 0xea, 0x01, 0x5d,
		0xc2, 0x07, 0x48, 0x02, 0x5b, 0xd6, 0x5a, 0xef, 0x76, 0x2a, 0x70, 0xcd, 0x9d, 0xcd, 0x39, 0xf3,
		0x5d, 0xe1, 0xcc, 0x0d, 0xf3, 0x73, 0xc1, 0x3a, 0xb3, 0xad, 0xa7, 0x9a, 0xf5, 0xa1, 0xf5, 0xb3,
		0x34, 0xd8, 0x3f, 0x9f, 0xff, 0xf9, 0xe0, 0x67, 0x65, 0x10, 0x7f, 0xde, 0x5b, 0x22, 0x5f, 0xf8,
		0xf6, 0xa1, 0xf1, 0x4f, 0xe9, 0x6f, 0xfd, 0xe7, 0xe6, 0xaf, 0xfd, 0x9b, 0xc0, 0xf7, 0x4e, 0x05,
		0x48, 0x57, 0x2e, 0xf4, 0x93, 0x55, 0x18, 0x3e, 0x63, 0x26, 0xb1, 0xaa, 0xeb, 0xc8, 0xf5, 0x6d,
		0x8f, 0xc7, 0xd8, 0x85, 0x98, 0xba, 0x30, 0x0e, 0x29, 0x01, 0x87, 0x00, 0x87, 0x00, 0x87, 0x00,
		0x87, 0x00, 0x87, 0x00, 0x87, 0x48, 0xe3, 0x90, 0x1d, 0xd8, 0xe6, 0x63, 0x88, 0x8b, 0x69, 0xd5,
		0xcb, 0xe2, 0x19, 0xd3, 0x72, 0xcd, 0xec, 0xda, 0x6e, 0xd7, 0xc6, 0x97, 0xaa, 0xc8, 0x66, 0xec,
		0xc5, 0xf3, 0x5f, 0x63, 0x28, 0x66, 0xa3, 0xcf, 0x41, 0x2c, 0x83, 0x58, 0x06, 0xb1, 0x2c, 0xcb,
		0x20, 0x55, 0x9b, 0x47, 0x0e, 0x1d, 0x04, 0x38, 0x17, 0x96, 0x73, 0x3a, 0x39, 0x57, 0xdb, 0xeb,
		0xbb, 0x9c, 0xf9, 0x81, 0x38, 0xe1, 0x8a, 0xae, 0xd4, 0x7c, 0xd4, 0x0e, 0xb6, 0xb5, 0xab, 0x6c,
		0x4b, 0xb4, 0x10, 0x99, 0xd9, 0xf6, 0x7c, 0x9f, 0xb5, 0xb9, 0xfd, 0xb5, 0xcb, 0x2c, 0xd6, 0x6e,
		0x5b, 0xcc, 0xf7, 0x3d, 0x81, 0xa5, 0xbb, 0x64, 0x09, 0x2f, 0x1d, 0x4f, 0x34, 0xc6, 0x4d, 0x2a,
		0xff, 0x47, 0x3a, 0xdf, 0x47, 0x25, 0xbf, 0x47, 0x7e, 0xc1, 0xab, 0x2e, 0x7c, 0x32, 0x03, 0x20,
		0x33, 0x04, 0x12, 0x83, 0x10, 0x33, 0x0c, 0x41, 0x03, 0x91, 0x97, 0x25, 0x16, 0xde, 0x77, 0xdf,
		0x71, 0x79, 0xb5, 0x2c, 0xf3, 0xbe, 0xc7, 0xab, 0xfb, 0x54, 0xe2, 0xd2, 0x7b, 0xdb, 0x7d, 0x66,
		0xd2, 0x85, 0xae, 0x14, 0xe2, 0x70, 0xaf, 0x1d, 0xf5, 0xc6, 0x00, 0xa3, 0x3a, 0x5d, 0x04, 0xe9,
		0x78, 0x1f, 0x7c, 0xbb, 0x3d, 0xc4, 0x95, 0x97, 0xce, 0xb3, 0x23, 0x1b, 0x7f, 0x3a, 0xff, 0x4e,
		0xd9, 0xb3, 0xcd, 0x9d, 0xef, 0x4c, 0x2a, 0xdc, 0x53, 0x61, 0x19, 0xce, 0x4f, 0xb1, 0xfd, 0x83,
		0x6e, 0x8a, 0x69, 0xe2, 0x69, 0xb3, 0x32, 0xeb, 0x09, 0x05, 0x76, 0xb7, 0x74, 0x45, 0xb1, 0x0a,
		0xa0, 0x24, 0xee, 0x71, 0xbb, 0x4b, 0xb2, 0x55, 0x2f, 0x8c, 0x84, 0x4d, 0x1a, 0x9b, 0x34, 0x36,
		0x69, 0x6c, 0xd2, 0xd8, 0xa4, 0xb1, 0x49, 0x63, 0x93, 0x56, 0xd9, 0xa4, 0xfb, 0x2e, 0x35, 0xaf,
		0x5e, 0x39, 0x22, 0x36, 0x6d, 0x6c, 0xda, 0xd8, 0xb4, 0xb1, 0x69, 0x63, 0xd3, 0xc6, 0xa6, 0x8d,
		0x4d, 0x5b, 0xee, 0x93, 0x69, 0x49, 0x64, 0x1b, 0x9f, 0x6c, 0x86, 0x07, 0x8a, 0x47, 0x82, 0x87,
		0x41, 0xc6, 0xea, 0xf0, 0x8d, 0x70, 0xd4, 0xc7, 0x8b, 0xc9, 0x78, 0x09, 0xe6, 0x9b, 0x3e, 0xf9,
		0x4c, 0x22, 0xdd, 0x34, 0xbc, 0x0a, 0x01, 0x87, 0x09, 0xe2, 0x14, 0x04, 0x1c, 0x4a, 0xe1, 0x0e,
		0x09, 0xbc, 0x21, 0x89, 0x33, 0xe4, 0x2a, 0x34, 0xc8, 0x03, 0x5f, 0x45, 0x3c, 0x41, 0xb6, 0xa3,
		0xa9, 0xef, 0x64, 0x03, 0xb9, 0xd2, 0x14, 0xea, 0x53, 0x47, 0x87, 0x13, 0xd2, 0x34, 0x9b, 0x9a,
		0xf6, 0xe9, 0x56, 0x82, 0x9b, 0x52, 0xef, 0xdb, 0x6b, 0xe0, 0xb4, 0xed, 0xae, 0xf8, 0xc6, 0x14,
		0x5d, 0x89, 0xcd, 0x09, 0x9b, 0x13, 0x36, 0x27, 0x6c, 0x4e, 0xd8, 0x9c, 0xb0, 0x39, 0xd1, 0x6e,
		0x4e, 0x3e, 0x0b, 0x98, 0xff, 0x9d, 0x75, 0x24, 0xb2, 0xb5, 0x26, 0x57, 0x62, 0x73, 0xc2, 0xe6,
		0x84, 0xcd, 0x09, 0x9b, 0x13, 0x36, 0x27, 0x6c, 0x4e, 0xb4, 0x9b, 0x53, 0x3f, 0x90, 0xd9, 0x98,
		0xc2, 0xab, 0xb0, 0x29, 0x61, 0x53, 0xc2, 0xa6, 0x84, 0x4d, 0x09, 0x9b, 0x12, 0x36, 0x25, 0x81,
		0x4d, 0x29, 0xcd, 0x09, 0x88, 0x59, 0xce, 0x06, 0x5f, 0x97, 0x63, 0x6d, 0x6c, 0x38, 0x49, 0x54,
		0x4b, 0x02, 0x0f, 0x02, 0xfb, 0x99, 0xc5, 0x29, 0x9c, 0x38, 0xf9, 0x64, 0x3a, 0x12, 0xc1, 0x37,
		0x7c, 0x1d, 0x23, 0xd5, 0xd9, 0xe0, 0xd1, 0x97, 0x47, 0x4a, 0xb8, 0x24, 0x18, 0x14, 0x5c, 0x0a,
		0xb2, 0x08, 0x70, 0xfb, 0x89, 0xb4, 0x9b, 0x97, 0x0a, 0x8d, 0x6f, 0x8e, 0x9d, 0x4d, 0x2b, 0xdc,
		0xa4, 0x4c, 0xb6, 0x19, 0x59, 0xda, 0xb9, 0x87, 0xc0, 0xb2, 0xdb, 0x3d, 0x02, 0x12, 0x7f, 0x59,
		0xa6, 0x8d, 0x85, 0xc8, 0xb7, 0xdd, 0x92, 0x69, 0xaf, 0x25, 0xd7, 0x46, 0x4b, 0xad, 0x5d, 0x96,
		0x7a, 0x5b, 0x2c, 0xb5, 0xf6, 0x57, 0xca, 0x6d, 0xae, 0xd4, 0xda, 0x59, 0xa9, 0xb6, 0xad, 0x52,
		0x6c, 0x4f, 0x45, 0xd3, 0x86, 0x4a, 0xba, 0xdd, 0x94, 0x70, 0x74, 0xb0, 0x74, 0xfb, 0x28, 0x95,
		0x36, 0x51, 0x8a, 0xed, 0xa0, 0x54, 0xda, 0x3e, 0xa9, 0xb6, 0x77, 0x52, 0x69, 0xe3, 0x44, 0xd1,
		0xae, 0x49, 0xa9, 0x2d, 0x93, 0x74, 0xfb, 0xa5, 0xac, 0x45, 0x78, 0xe6, 0xb7, 0x0a, 0xea, 0x78,
		0x63, 0xd6, 0x58, 0x8e, 0xa7, 0xc3, 0xbe, 0xf6, 0x9f, 0x2d, 0xe6, 0x72, 0xdf, 0x61, 0x41, 0x7c,
		0x4e, 0x31, 0x7f, 0x19, 0xa8, 0x05, 0xa8, 0xc5, 0xf2, 0x85, 0x15, 0x30, 0xff, 0xbb, 0xd3, 0x96,
		0x08, 0x53, 0x9e, 0xbf, 0x7c, 0x37, 0x4a, 0xf6, 0x80, 0x64, 0x6c, 0x91, 0x64, 0x48, 0x14, 0xef,
		0x89, 0x25, 0xb3, 0xa8, 0xc9, 0x2e, 0x8a, 0x4b, 0x58, 0x7a, 0x29, 0xab, 0x2c, 0x69, 0xa2, 0xa5,
		0xad, 0xba, 0xc4, 0xc9, 0x96, 0x3a, 0xd9, 0x92, 0xa7, 0x5b, 0xfa, 0x92, 0x47, 0x08, 0x82, 0xef,
		0x5e, 0xd4, 0x24, 0xa2, 0x0b, 0x99, 0x6b, 0x7f, 0xed, 0x0a, 0x9c, 0x56, 0xaf, 0x5c, 0x39, 0xff,
		0x1f, 0x7b, 0x5f, 0xff, 0xdb, 0xb6, 0x8e, 0xb4, 0xfb, 0x7b, 0xff, 0x0a, 0xc1, 0xb8, 0xc0, 0xb6,
		0xf7, 0xad, 0x12, 0x5b, 0xb6, 0xe3, 0x24, 0xc0, 0x8b, 0x85, 0x9b, 0xb8, 0x3d, 0xc1, 0x9b, 0xaf,
		0x9b, 0xb8, 0xbb, 0x7b, 0xb6, 0xcd, 0x35, 0x14, 0x99, 0x49, 0x74, 0x2b, 0x4b, 0x5e, 0x89, 0xce,
		0x36, 0x7b, 0x4e, 0xff, 0xf7, 0x0b, 0xf9, 0xfb, 0x33, 0x91, 0xc8, 0xa1, 0x2c, 0xd1, 0xcf, 0x01,
		0x76, 0x9b, 0xa6, 0xd6, 0x58, 0x24, 0x87, 0x33, 0xcf, 0x3c, 0x1c, 0xce, 0x4c, 0x04, 0x09, 0xce,
		0xf3, 0x29, 0x7b, 0xb0, 0x07, 0x1e, 0x17, 0xbe, 0x58, 0x38, 0x14, 0x32, 0x3c, 0xdc, 0x11, 0xeb,
		0x5e, 0x79, 0x27, 0xf8, 0xde, 0x72, 0x1d, 0xf8, 0xa5, 0x3b, 0xef, 0x53, 0x74, 0xdc, 0x27, 0xda,
		0xfc, 0x54, 0x46, 0x80, 0xdc, 0x18, 0x90, 0x1b, 0x05, 0x7a, 0xe3, 0x20, 0x66, 0x24, 0x04, 0x8d,
		0x85, 0x38, 0x59, 0xb7, 0x51, 0x73, 0xee, 0x83, 0xc0, 0x63, 0xb6, 0x2f, 0xa3, 0x35, 0x13, 0x6f,
		0x59, 0x29, 0x64, 0xfb, 0x5d, 0xe9, 0xb8, 0x56, 0x5e, 0x13, 0x44, 0x4e, 0xfc, 0xd3, 0x62, 0xfa,
		0xcd, 0xec, 0x6d, 0x2a, 0x74, 0x0f, 0x2b, 0x0a, 0x2b, 0x0a, 0x2b, 0xba, 0xa2, 0x39, 0x6e, 0x97,
		0xf9, 0xdc, 0xe5, 0x2f, 0x21, 0x7b, 0xa0, 0xb0, 0xa4, 0x12, 0xb7, 0xed, 0x4b, 0x67, 0xe3, 0x57,
		0xf9, 0x64, 0x47, 0x04, 0x3a, 0x38, 0x19, 0xe0, 0x90, 0x1e, 0xee, 0xdc, 0xb6, 0x6e, 0xfe, 0x76,
		0x76, 0xd2, 0x2a, 0xed, 0x58, 0x87, 0xf6, 0x3c, 0xb8, 0x08, 0x2d, 0xda, 0x73, 0x4f, 0xa9, 0xd4,
		0x05, 0xe6, 0x72, 0x7f, 0x81, 0x66, 0x4a, 0x44, 0xb3, 0x8a, 0x4f, 0x4f, 0x9a, 0x1a, 0x47, 0xa2,
		0x3e, 0x56, 0xd2, 0xb7, 0x16, 0xb5, 0x82, 0x11, 0xe8, 0x87, 0x02, 0xd2, 0x0f, 0xf2, 0xb5, 0x8c,
		0x62, 0x53, 0x28, 0xe6, 0xf7, 0xa6, 0xfe, 0x4e, 0xe4, 0xd0, 0xf1, 0x7a, 0x6c, 0x6d, 0xf6, 0xf6,
		0xc6, 0x16, 0x63, 0x7f, 0xb2, 0xdb, 0xf2, 0x60, 0x39, 0x52, 0x75, 0xa1, 0x5f, 0xb5, 0x1b, 0x29,
		0xba, 0xd1, 0x93, 0x91, 0x96, 0x16, 0xac, 0x06, 0xac, 0x06, 0x48, 0x4b, 0x90, 0x96, 0x08, 0xb7,
		0x11, 0x6e, 0x83, 0xb4, 0x04, 0xc7, 0x07, 0xa3, 0x03, 0xa3, 0x03, 0xa3, 0x03, 0x8e, 0x2f, 0x9b,
		0xf5, 0x05, 0x25, 0xb6, 0x99, 0x12, 0x4b, 0x70, 0x0f, 0x4f, 0x22, 0xae, 0x25, 0xcd, 0xf0, 0xf9,
		0x1f, 0xf6, 0x92, 0xde, 0xe3, 0x94, 0xce, 0xdd, 0x88, 0x37, 0x39, 0x4f, 0x99, 0x1c, 0x74, 0xe1,
		0xfa, 0x2d, 0x8f, 0xc5, 0xc6, 0x29, 0xe5, 0x15, 0xd3, 0xd2, 0x85, 0xfd, 0x73, 0xee, 0x49, 0xb9,
		0x8b, 0xaf, 0xa5, 0xab, 0xb0, 0xcb, 0x42, 0xd6, 0xfd, 0x14, 0x0f, 0xdc, 0x1f, 0x78, 0x9e, 0xc8,
		0xa3, 0x5f, 0x23, 0x16, 0xa6, 0xba, 0xe3, 0x9a, 0x9f, 0x82, 0xae, 0x6f, 0xeb, 0x2f, 0x41, 0x7d,
		0xd7, 0xd1, 0x97, 0x74, 0x4e, 0x63, 0xb1, 0xb7, 0x69, 0x78, 0x9e, 0xc2, 0x67, 0x1d, 0x2f, 0x26,
		0xf9, 0xa2, 0x17, 0xa8, 0x22, 0xa4, 0x87, 0x64, 0x63, 0x59, 0xae, 0x67, 0x72, 0x9f, 0x39, 0x7d,
		0x9a, 0xf1, 0xe4, 0x41, 0xc5, 0x09, 0xc6, 0x16, 0x12, 0x8c, 0xc9, 0xc3, 0x85, 0xc2, 0x27, 0x18,
		0xdb, 0xfd, 0xbe, 0x39, 0xf6, 0x36, 0x82, 0x64, 0xfd, 0x54, 0x02, 0x4e, 0xf9, 0x14, 0x47, 0xcd,
		0xe0, 0xeb, 0x45, 0xa3, 0x19, 0xf9, 0x53, 0xbe, 0x68, 0x74, 0x7b, 0x56, 0xe2, 0x90, 0xef, 0x50,
		0xe9, 0x08, 0xd9, 0x4f, 0x1e, 0xda, 0xe6, 0xc0, 0x8f, 0x86, 0xed, 0x83, 0xc4, 0xc6, 0x1a, 0xb2,
		0x07, 0x16, 0x32, 0xdf, 0xd9, 0x4a, 0x93, 0x94, 0xc9, 0x44, 0x9f, 0xb5, 0xda, 0x9f, 0x8d, 0x9b,
		0xcf, 0x27, 0x46, 0xbd, 0x66, 0xd5, 0x3e, 0x1a, 0xb7, 0x6c, 0x58, 0x48, 0xc7, 0x38, 0xd8, 0xb3,
		0xf6, 0xea, 0x7b, 0x39, 0xa3, 0xac, 0x66, 0x13, 0x96, 0x67, 0xd6, 0xea, 0xf5, 0x19, 0x45, 0xb7,
		0xaf, 0x04, 0xd3, 0xd9, 0x8b, 0x24, 0xee, 0xe0, 0xc4, 0x0f, 0xc3, 0x37, 0xc2, 0x37, 0xc2, 0x37,
		0x52, 0xf9, 0x46, 0x55, 0x7b, 0xdc, 0xed, 0x4a, 0xed, 0x72, 0xb7, 0x8b, 0x7d, 0x8e, 0x7d, 0x8e,
		0x7d, 0x0e, 0x0c, 0xac, 0x0e, 0x03, 0x37, 0x80, 0x81, 0x89, 0x31, 0x70, 0x03, 0x18, 0x38, 0xd1,
		0x74, 0xf6, 0x43, 0x37, 0x48, 0x55, 0xa6, 0x6d, 0x45, 0xad, 0xa7, 0x12, 0xe0, 0x25, 0xe1, 0x25,
		0xb5, 0xf5, 0x92, 0x03, 0xd7, 0xe7, 0x87, 0x12, 0x4e, 0xb2, 0x8e, 0xd6, 0xb6, 0x82, 0x72, 0xd0,
		0xda, 0xf6, 0xcd, 0x29, 0xb6, 0xea, 0xe8, 0x64, 0x9b, 0xb1, 0x33, 0x06, 0x88, 0x5d, 0x81, 0x5c,
		0x15, 0x60, 0x58, 0x5a, 0x0c, 0x5b, 0x01, 0x84, 0x4d, 0x06, 0x61, 0x03, 0x47, 0x86, 0xe3, 0x19,
		0x3f, 0x0f, 0xf8, 0x0a, 0xf8, 0x0a, 0x92, 0x07, 0x24, 0x8f, 0x32, 0xff, 0x78, 0x00, 0x92, 0x87,
		0xd8, 0x41, 0x1e, 0xec, 0x32, 0xc9, 0x43, 0x9a, 0x61, 0xd4, 0xfa, 0x39, 0x44, 0xfd, 0xc9, 0xb7,
		0x8d, 0x78, 0x4a, 0x57, 0xe0, 0x98, 0xec, 0x27, 0x3f, 0xe6, 0xcc, 0x63, 0x3d, 0xc6, 0xc3, 0x17,
		0xd3, 0xe6, 0x41, 0xcf, 0x75, 0xe4, 0x72, 0xbc, 0x86, 0x31, 0x86, 0x44, 0x92, 0x17, 0x75, 0x66,
		0x57, 0xc2, 0x9b, 0x90, 0x32, 0x76, 0x4f, 0xc2, 0xde, 0x49, 0x38, 0x92, 0x85, 0xdd, 0x68, 0x98,
		0x46, 0xfb, 0x89, 0x19, 0xb7, 0xc3, 0x52, 0xf9, 0xc6, 0x75, 0x18, 0xf0, 0xc0, 0x09, 0xbc, 0x2d,
		0x43, 0x0b, 0x59, 0xab, 0xa6, 0x06, 0x5d, 0x24, 0x99, 0xb7, 0xa2, 0xb5, 0x81, 0xca, 0x5b, 0xb2,
		0xfe, 0x30, 0x89, 0x7b, 0x3f, 0x5d, 0xde, 0xad, 0xf1, 0x76, 0x7a, 0xfe, 0xf8, 0x87, 0x52, 0x86,
		0x0d, 0x1b, 0xd1, 0x3c, 0x05, 0x69, 0xc7, 0x68, 0x9e, 0x92, 0xf8, 0x19, 0x34, 0x4f, 0x41, 0xf3,
		0x14, 0x34, 0x4f, 0x59, 0x35, 0xd6, 0x68, 0x9e, 0xb2, 0xdb, 0xcd, 0x53, 0x8a, 0x7e, 0x4b, 0xb0,
		0xd0, 0x9d, 0x3a, 0xdf, 0xee, 0x3b, 0xf9, 0x2a, 0xec, 0x94, 0xea, 0xd6, 0x19, 0x0c, 0x7c, 0x6e,
		0xf6, 0x03, 0x77, 0x74, 0x13, 0xf8, 0xad, 0x8e, 0x9d, 0xf3, 0x9f, 0x96, 0xec, 0xda, 0x69, 0xd1,
		0x74, 0xed, 0x7c, 0xbd, 0x5f, 0x77, 0x7e, 0x1b, 0x76, 0xbe, 0xda, 0x6f, 0x9b, 0xb8, 0x57, 0xe7,
		0xdc, 0xb2, 0x25, 0xbf, 0xe7, 0x3a, 0xff, 0x50, 0x31, 0x5a, 0xeb, 0x24, 0x6b, 0xdd, 0x5e, 0xbc,
		0x8b, 0xae, 0x89, 0x5a, 0xb3, 0x67, 0x74, 0xc7, 0x35, 0xd5, 0x55, 0xc1, 0xe9, 0xe2, 0xa4, 0xb8,
		0x1e, 0x98, 0xf7, 0x30, 0x33, 0x99, 0x92, 0xe9, 0x17, 0x61, 0x26, 0x52, 0xc2, 0xbc, 0x05, 0x97,
		0xe9, 0x4b, 0x73, 0x8a, 0x94, 0xe4, 0x9c, 0x2f, 0xc5, 0x39, 0x22, 0x96, 0x86, 0xfa, 0x9e, 0x25,
		0x09, 0x94, 0xaa, 0xdc, 0xa6, 0x50, 0x99, 0xcd, 0xbc, 0xdf, 0x3a, 0xc7, 0xbe, 0xcc, 0x7c, 0x5f,
		0xa6, 0xbf, 0x6b, 0xfe, 0x6c, 0xbb, 0x9e, 0xd0, 0xa9, 0xed, 0xec, 0xb2, 0xf9, 0x54, 0xc4, 0x6e,
		0x24, 0x61, 0xa4, 0x53, 0x6b, 0x59, 0xf5, 0x26, 0x53, 0x73, 0x32, 0x75, 0x27, 0x51, 0xfb, 0xf4,
		0x51, 0xb3, 0xb1, 0xb5, 0xcc, 0xe1, 0x83, 0x9a, 0x44, 0xea, 0xc5, 0x21, 0x52, 0x87, 0x05, 0xe5,
		0x20, 0x75, 0xf8, 0xcd, 0x29, 0x96, 0xab, 0x12, 0x56, 0xb4, 0x59, 0xdf, 0xa1, 0xac, 0x48, 0xb9,
		0xf2, 0x2f, 0x3b, 0x54, 0xfa, 0x05, 0xce, 0x78, 0x87, 0x9c, 0xb1, 0x1e, 0x97, 0xda, 0x23, 0xf7,
		0x3f, 0x32, 0x7d, 0x18, 0xe2, 0xa7, 0xb1, 0xb7, 0xb1, 0xb7, 0x01, 0xb4, 0x01, 0xb4, 0x01, 0xb4,
		0x01, 0xb4, 0x01, 0xb4, 0xa5, 0x9c, 0x31, 0x0f, 0x42, 0xfb, 0x91, 0x0d, 0xfb, 0xe8, 0x05, 0x3e,
		0x13, 0x48, 0xf4, 0x98, 0x43, 0x27, 0xcb, 0xa2, 0xe0, 0xa6, 0xe1, 0xa6, 0x35, 0x73, 0xd3, 0x5b,
		0xee, 0xac, 0xb6, 0x1f, 0x38, 0x66, 0xdf, 0xb3, 0xf9, 0x43, 0x10, 0xf6, 0x8e, 0xa7, 0x1b, 0x2d,
		0x5a, 0xff, 0xeb, 0x85, 0xdf, 0x26, 0x3f, 0xff, 0x51, 0x6b, 0x70, 0x06, 0xdc, 0xf5, 0xdc, 0xff,
		0x30, 0x89, 0x1b, 0x8f, 0x53, 0x09, 0x30, 0x2f, 0x30, 0x2f, 0x88, 0x02, 0x10, 0x05, 0x20, 0x0a,
		0x40, 0x14, 0x80, 0x28, 0x40, 0xec, 0x93, 0xb9, 0xb9, 0x06, 0x35, 0x97, 0xc6, 0x39, 0xff, 0x97,
		0x34, 0x7d, 0x76, 0x54, 0x67, 0x0c, 0x8f, 0xfb, 0xe8, 0x24, 0x38, 0x5d, 0x48, 0xd7, 0x3c, 0x27,
		0x7d, 0xd3, 0x1c, 0x92, 0x66, 0x39, 0x02, 0x4d, 0x72, 0x04, 0x9a, 0xe3, 0x6c, 0x2d, 0x0d, 0x7b,
		0x83, 0x42, 0x95, 0x12, 0xe5, 0x2e, 0xad, 0x4b, 0x6d, 0x8e, 0x65, 0x5c, 0x0f, 0x45, 0x14, 0x33,
		0xa7, 0x7b, 0x3e, 0x51, 0x5a, 0x22, 0x3d, 0xdb, 0xe7, 0xfd, 0xb7, 0xb3, 0xb2, 0xe3, 0x0f, 0x49,
		0x26, 0x63, 0x97, 0x91, 0x8c, 0x9d, 0x55, 0x32, 0xb6, 0x33, 0x99, 0xf3, 0x84, 0x79, 0xd8, 0xe3,
		0xcf, 0x23, 0x05, 0x1b, 0x29, 0xd8, 0xa3, 0x0f, 0x8e, 0x3a, 0x3f, 0x9b, 0x3e, 0xef, 0x9b, 0xf6,
		0x60, 0x68, 0x88, 0x52, 0xa6, 0x7d, 0x2e, 0x0b, 0x48, 0x9a, 0xee, 0x27, 0xd0, 0x32, 0x3a, 0x4d,
		0x8b, 0xe8, 0x3b, 0x24, 0x88, 0x67, 0x48, 0x19, 0x20, 0x41, 0x5c, 0xac, 0x91, 0x72, 0xca, 0xc6,
		0xc9, 0xaa, 0x21, 0xff, 0xcb, 0x63, 0xc0, 0xcd, 0xc0, 0x19, 0x9e, 0x03, 0x84, 0x2c, 0x8a, 0x58,
		0xd7, 0xf4, 0x98, 0xfd, 0x10, 0x0b, 0xf9, 0x95, 0x61, 0x02, 0x7a, 0xda, 0xb6, 0xf6, 0x82, 0x6d,
		0xec, 0x61, 0x83, 0x60, 0x83, 0x60, 0x83, 0x76, 0xd1, 0x06, 0xe5, 0x32, 0xec, 0xf5, 0x79, 0x7f,
		0x7f, 0x0c, 0xcf, 0x15, 0xf4, 0x25, 0x8d, 0xf1, 0xd9, 0x0f, 0xf6, 0x12, 0x25, 0x0f, 0x15, 0xa6,
		0x4f, 0x20, 0x58, 0x40, 0xb0, 0xb0, 0xa0, 0x44, 0x02, 0x57, 0x36, 0xc7, 0x0f, 0x2a, 0xbe, 0x1d,
		0x06, 0x87, 0xa8, 0xab, 0x43, 0x4c, 0x7d, 0x3b, 0x2c, 0x21, 0x31, 0x22, 0x47, 0x94, 0x48, 0x2a,
		0xae, 0xb0, 0x02, 0xcb, 0x28, 0xb2, 0xbc, 0x42, 0xcb, 0x2a, 0x36, 0x99, 0x82, 0x93, 0x29, 0x3a,
		0x89, 0xc2, 0xa7, 0x53, 0xfc, 0x94, 0x1b, 0x40, 0x78, 0x23, 0x4c, 0x1f, 0xfc, 0xc1, 0x5e, 0x4c,
		0x81, 0x6a, 0xd5, 0x2b, 0xea, 0x32, 0x96, 0x23, 0x38, 0xc1, 0x62, 0x99, 0x1c, 0xd2, 0x1b, 0x85,
		0x62, 0xc3, 0xd0, 0x6d, 0x1c, 0xaa, 0x0d, 0x44, 0xbe, 0x91, 0xc8, 0x37, 0x14, 0xe9, 0xc6, 0x12,
		0xdb, 0x60, 0x82, 0x1b, 0x4d, 0x3c, 0x14, 0xdb, 0xa8, 0x2f, 0x03, 0xd7, 0xe7, 0x95, 0x03, 0x19,
		0x7d, 0x19, 0xef, 0x9e, 0x03, 0x09, 0x11, 0x72, 0x19, 0x23, 0x93, 0xff, 0xe4, 0xf4, 0xd5, 0xa0,
		0xca, 0x20, 0x99, 0x0a, 0x23, 0xca, 0x24, 0x99, 0xca, 0xa3, 0xce, 0x6d, 0x98, 0xe9, 0x02, 0x55,
		0x8e, 0x83, 0xa4, 0x5a, 0x2f, 0x2e, 0x05, 0x41, 0xa6, 0xc9, 0xca, 0x52, 0x1c, 0xd4, 0xeb, 0xd5,
		0xfa, 0xee, 0x2d, 0xc7, 0xbb, 0xed, 0x3c, 0x7d, 0x97, 0xa9, 0x4d, 0x14, 0xe4, 0x76, 0xe8, 0xb9,
		0x1e, 0xf9, 0x09, 0x14, 0x98, 0x82, 0x21, 0x04, 0xe2, 0x32, 0x6e, 0x61, 0x01, 0x4c, 0x0d, 0x25,
		0x01, 0x4e, 0x01, 0x4e, 0x01, 0x4e, 0xa5, 0xd2, 0x17, 0xb7, 0xcb, 0x7c, 0xee, 0xf2, 0x17, 0xb1,
		0x9c, 0xfe, 0x95, 0x90, 0x5d, 0xc2, 0x57, 0x95, 0xce, 0xc6, 0xaf, 0xf2, 0xc9, 0x8e, 0x08, 0xd4,
		0x6f, 0x32, 0xc0, 0xcb, 0xf6, 0x75, 0xa7, 0xf9, 0xb5, 0xfd, 0x5b, 0xa7, 0xfd, 0xfb, 0x75, 0x4b,
		0x56, 0x05, 0x87, 0x6e, 0x39, 0x92, 0x06, 0x7e, 0x34, 0xe0, 0x6f, 0xfd, 0x30, 0x2f, 0x4e, 0xeb,
		0xa5, 0x2d, 0x3b, 0xe0, 0xbb, 0x82, 0xec, 0x22, 0x38, 0x60, 0xf3, 0x79, 0x8c, 0x33, 0x09, 0x3c,
		0xf0, 0x48, 0x14, 0x5c, 0x30, 0x5c, 0x30, 0x5c, 0x70, 0x2a, 0x7d, 0x11, 0xae, 0x6a, 0xb1, 0xe2,
		0x7d, 0x0f, 0x61, 0x3e, 0x05, 0xcd, 0xa7, 0x52, 0xb6, 0x59, 0x72, 0xa2, 0x52, 0x9d, 0x7d, 0x4f,
		0xce, 0x9b, 0x27, 0x3f, 0x24, 0x3a, 0x0c, 0x17, 0x9f, 0x8e, 0x34, 0x37, 0x1f, 0x05, 0xb9, 0x73,
		0x39, 0xce, 0x1c, 0xb7, 0x1e, 0xb7, 0xe2, 0x31, 0x70, 0xeb, 0x31, 0xcd, 0x7a, 0x6f, 0xf9, 0x52,
		0xf5, 0xde, 0xde, 0xd8, 0x4a, 0xec, 0x8f, 0xb7, 0x58, 0x2e, 0xea, 0x32, 0xa4, 0x29, 0x9f, 0xbb,
		0xc6, 0xa7, 0x26, 0x2f, 0xa3, 0xbb, 0x32, 0x97, 0xa2, 0xa6, 0xc2, 0x82, 0xa9, 0x80, 0xa9, 0x78,
		0xf5, 0x0d, 0x71, 0xee, 0x8c, 0x28, 0x0d, 0x51, 0x5a, 0x21, 0xa3, 0x34, 0x9c, 0x3b, 0xcf, 0xbf,
		0x08, 0xce, 0x9d, 0x71, 0xee, 0xac, 0xe1, 0x72, 0x14, 0xeb, 0xdc, 0x19, 0xc7, 0xb4, 0x40, 0x1f,
		0x40, 0x1f, 0x3b, 0x81, 0x3e, 0x70, 0x4c, 0x9b, 0xda, 0x8b, 0xe1, 0x98, 0x56, 0x89, 0xd7, 0x31,
		0x32, 0x2c, 0x0d, 0x84, 0x53, 0x4d, 0x78, 0x2c, 0x78, 0xac, 0x62, 0x7a, 0xac, 0xad, 0x9f, 0x6a,
		0xe2, 0x10, 0x70, 0x76, 0x08, 0x98, 0xa2, 0x88, 0x58, 0xfa, 0xd9, 0xa0, 0xbd, 0xa3, 0x36, 0x2e,
		0x32, 0x96, 0x8a, 0xa8, 0x4c, 0x57, 0x6e, 0x6c, 0x9e, 0xc4, 0x48, 0x57, 0x76, 0x6c, 0x3e, 0xe6,
		0x96, 0x2e, 0x3f, 0x36, 0x15, 0x96, 0xbe, 0x0c, 0xd9, 0xea, 0xa3, 0x89, 0xcb, 0x91, 0xa5, 0x5d,
		0x0e, 0xd5, 0x75, 0xef, 0xd6, 0xa9, 0x6b, 0x29, 0xd5, 0x39, 0xd1, 0x9a, 0x52, 0x65, 0x97, 0xbc,
		0x1f, 0xff, 0x2f, 0x56, 0x25, 0xed, 0x2f, 0xbb, 0x4f, 0x2f, 0x98, 0x2b, 0xb8, 0xee, 0x1e, 0xb1,
		0xf0, 0x99, 0x85, 0x29, 0x6e, 0xbb, 0x4f, 0x1e, 0xc0, 0x65, 0x77, 0x5c, 0x76, 0x9f, 0x57, 0x21,
		0x81, 0x3e, 0xa8, 0xa3, 0xe7, 0x70, 0xd5, 0x3d, 0x43, 0x60, 0xbc, 0xdb, 0x8d, 0x50, 0xbb, 0xdd,
		0x90, 0x45, 0x91, 0x44, 0x1b, 0xd4, 0xb1, 0x00, 0xe4, 0x27, 0xa9, 0x8b, 0x01, 0x91, 0x74, 0xb0,
		0xdb, 0xf9, 0x49, 0x93, 0x3d, 0x96, 0x83, 0x04, 0x25, 0x94, 0xc6, 0x80, 0xb5, 0xd0, 0xd1, 0x5a,
		0x08, 0xa7, 0x28, 0x89, 0x3a, 0x50, 0x22, 0x47, 0x0a, 0xd2, 0x15, 0xa4, 0xeb, 0xce, 0x93, 0xae,
		0x4f, 0x41, 0xc4, 0x29, 0x28, 0xd7, 0x23, 0x09, 0x19, 0xe3, 0xd1, 0x6c, 0x3d, 0x45, 0x69, 0x7a,
		0x74, 0xda, 0x37, 0xe5, 0x2c, 0x0a, 0xf5, 0x0c, 0xd1, 0xce, 0x14, 0xdd, 0x8c, 0xad, 0x99, 0xb9,
		0xe7, 0x1a, 0xe1, 0xdc, 0xad, 0xcc, 0xe1, 0x21, 0xa1, 0xcc, 0x6b, 0x9b, 0x73, 0x16, 0xfa, 0x64,
		0xd3, 0x39, 0x15, 0xfc, 0xfe, 0x5b, 0xd9, 0x3c, 0xba, 0xfb, 0xf3, 0x5b, 0xc5, 0x3c, 0xba, 0x1b,
		0xfd, 0x58, 0x19, 0xfe, 0xf1, 0x87, 0xf5, 0xeb, 0x4f, 0xeb, 0x5b, 0xd9, 0xac, 0x8d, 0x7f, 0x6b,
		0xd5, 0xbf, 0x95, 0xcd, 0xfa, 0xdd, 0x87, 0xf7, 0xdf, 0xbf, 0xef, 0xa5, 0x7d, 0xe6, 0xc3, 0x1f,
		0xd5, 0x5f, 0x25, 0xb2, 0xd7, 0xbe, 0xa3, 0x9c, 0xd6, 0xab, 0xdb, 0xb3, 0x7f, 0x28, 0x9b, 0xdb,
		0xff, 0xfb, 0x3e, 0xab, 0xd9, 0xfd, 0xf0, 0xbf, 0x08, 0xe7, 0x97, 0x44, 0xd2, 0xaf, 0x8f, 0x39,
		0xde, 0xf6, 0x07, 0xd8, 0xf6, 0x43, 0x2d, 0xb3, 0xcd, 0x87, 0xa6, 0xf9, 0xf9, 0xee, 0x8f, 0xca,
		0xc7, 0xda, 0xaf, 0xe3, 0x0f, 0x7f, 0x34, 0x7e, 0x2d, 0xff, 0xf2, 0xcf, 0x75, 0x1f, 0xab, 0x7c,
		0x6c, 0xfc, 0x3a, 0xde, 0xf0, 0x2f, 0x07, 0xbf, 0x8e, 0x13, 0xca, 0xa8, 0xff, 0x7a, 0xbf, 0xf2,
		0xd1, 0xf8, 0xf7, 0xd6, 0xa6, 0x07, 0x6a, 0x1b, 0x1e, 0xa8, 0x6e, 0x7a, 0xa0, 0xba, 0xe1, 0x81,
		0x8d, 0xaf, 0x64, 0x6d, 0x78, 0xa0, 0xfe, 0xeb, 0xcf, 0x95, 0xcf, 0xbf, 0x5f, 0xff, 0xd1, 0x83,
		0x5f, 0x1f, 0xfe, 0xdc, 0xf4, 0x6f, 0x8d, 0x5f, 0x7f, 0x1e, 0x7f, 0xf8, 0xb0, 0xc3, 0x86, 0x10,
		0xea, 0x96, 0xbd, 0xba, 0xe5, 0xcf, 0x31, 0xbc, 0xdb, 0xee, 0x7b, 0x48, 0x3a, 0x26, 0x42, 0xe4,
		0xde, 0x0d, 0x7a, 0xb6, 0xeb, 0x9b, 0x09, 0xfa, 0x8d, 0x65, 0xed, 0x7f, 0x4a, 0xe7, 0xcc, 0x7f,
		0x1c, 0x92, 0x93, 0xb9, 0x03, 0xef, 0x94, 0x37, 0x33, 0xa6, 0x42, 0xa7, 0x0d, 0x10, 0x3f, 0xd2,
		0xca, 0x55, 0x75, 0x35, 0x60, 0xa6, 0x4a, 0xd4, 0x57, 0x04, 0x88, 0xe1, 0x9b, 0x41, 0x7d, 0x83,
		0x63, 0x65, 0xc9, 0xac, 0x7a, 0x15, 0x8b, 0x46, 0x66, 0x5a, 0x89, 0x0c, 0x34, 0x81, 0x05, 0xa2,
		0xc6, 0x22, 0xa5, 0xf7, 0xef, 0xdf, 0xbf, 0xff, 0x66, 0x9b, 0xff, 0x69, 0x9a, 0xff, 0x2c, 0x9b,
		0x47, 0x9d, 0xbb, 0xb9, 0xbf, 0x7c, 0xff, 0x6e, 0x76, 0xee, 0x3e, 0xfc, 0x51, 0xfe, 0x78, 0x50,
		0xf9, 0xf5, 0xe1, 0xaf, 0xb3, 0xdf, 0xdf, 0x7d, 0xff, 0xbe, 0xf7, 0xe1, 0x7f, 0x8b, 0x3c, 0xf5,
		0xd7, 0x0f, 0x7f, 0xc6, 0xcf, 0x96, 0xf2, 0x31, 0x95, 0x2a, 0xb0, 0x5d, 0x8c, 0xe9, 0xb2, 0x9f,
		0x50, 0x02, 0x34, 0x73, 0x87, 0xe2, 0x9b, 0x29, 0xe4, 0x14, 0xb4, 0xf6, 0x97, 0x1d, 0x45, 0x81,
		0xe3, 0x0e, 0xc7, 0x4f, 0x74, 0xbb, 0x6b, 0x45, 0xa2, 0xe0, 0xc2, 0x88, 0xb4, 0x93, 0x5a, 0x11,
		0x72, 0xdb, 0xba, 0xf9, 0x5b, 0xeb, 0x46, 0x6c, 0x2f, 0xdc, 0xe1, 0xdc, 0x09, 0xe7, 0x4e, 0x69,
		0x2c, 0x09, 0xce, 0x9d, 0x4a, 0xcc, 0x1f, 0xf4, 0x58, 0x38, 0x32, 0xa7, 0x04, 0xc7, 0x4f, 0x35,
		0x09, 0x19, 0x2d, 0x7f, 0xd0, 0x93, 0x57, 0xbb, 0x76, 0x70, 0x3b, 0xba, 0xbf, 0x40, 0x81, 0xcb,
		0x4b, 0xe5, 0x61, 0x6e, 0xf2, 0xc8, 0x26, 0x11, 0xe0, 0x95, 0x4a, 0x2c, 0xee, 0xba, 0x45, 0x23,
		0xcc, 0x1a, 0x0a, 0xbb, 0xba, 0x3a, 0x2f, 0x6d, 0x93, 0x35, 0x28, 0xb5, 0x83, 0xb3, 0xe1, 0x16,
		0x22, 0x98, 0xed, 0xe1, 0xcc, 0x90, 0xc4, 0xaa, 0xa3, 0x79, 0x49, 0x5d, 0xd8, 0xe7, 0x35, 0x97,
		0x74, 0x6c, 0x94, 0xb7, 0x84, 0xaf, 0x50, 0x5b, 0x35, 0x43, 0x7c, 0xe5, 0xde, 0x0f, 0xc2, 0x88,
		0xcb, 0xa3, 0xaa, 0xb1, 0x9c, 0x6d, 0x62, 0xa9, 0x14, 0xad, 0x3a, 0x01, 0xa5, 0x00, 0xa5, 0x00,
		0xa5, 0xe4, 0xf4, 0x25, 0x7d, 0xeb, 0xd1, 0x8d, 0x30, 0xaa, 0x02, 0x8b, 0x9f, 0x9d, 0xc5, 0xf7,
		0x19, 0xff, 0x77, 0x10, 0xfe, 0x30, 0x5d, 0x3f, 0xe2, 0xb6, 0xef, 0x10, 0x44, 0xd4, 0x2b, 0x12,
		0x61, 0x4d, 0x61, 0x4d, 0x61, 0x4d, 0xa5, 0xf6, 0x90, 0x49, 0x54, 0x40, 0xa5, 0x21, 0x21, 0xe3,
		0x7a, 0x7a, 0xaf, 0xd3, 0x31, 0x7d, 0xc6, 0xe3, 0x57, 0x3b, 0x5e, 0x7e, 0xcf, 0xe8, 0xb5, 0x7f,
		0x9c, 0xff, 0xb7, 0xf1, 0xc5, 0x88, 0xf9, 0x4f, 0xc7, 0x43, 0x87, 0xe5, 0xcf, 0xce, 0xf2, 0xf7,
		0x83, 0x90, 0x00, 0xe9, 0x0f, 0xa5, 0x6c, 0x13, 0xe7, 0x57, 0xac, 0x2a, 0x50, 0x3e, 0xfc, 0x12,
		0xfc, 0x52, 0x16, 0x7e, 0x29, 0xde, 0xed, 0xa6, 0x3f, 0xe8, 0xdd, 0x27, 0xbe, 0xe3, 0xfc, 0xda,
		0x16, 0x42, 0x49, 0xd1, 0x65, 0x61, 0x28, 0x29, 0x2a, 0xb5, 0x14, 0x28, 0x29, 0x8a, 0x56, 0x96,
		0x40, 0x80, 0xc9, 0x11, 0x60, 0xc8, 0x1e, 0x58, 0x48, 0x80, 0x01, 0x47, 0x72, 0xc0, 0xf6, 0x02,
		0x07, 0x02, 0x07, 0xee, 0x04, 0x0e, 0x04, 0xdb, 0x5b, 0x4c, 0x8b, 0x1f, 0x0d, 0x77, 0xa9, 0x49,
		0x76, 0xe7, 0x7d, 0x49, 0x1e, 0x2c, 0x29, 0x2c, 0x29, 0x2c, 0x69, 0x2a, 0x7d, 0x21, 0xb9, 0xe6,
		0xad, 0xe9, 0x05, 0x78, 0xd2, 0x6b, 0xdc, 0xa4, 0xf7, 0x68, 0xe8, 0xb3, 0xd8, 0x0b, 0x73, 0x5d,
		0x3b, 0xd7, 0x99, 0xeb, 0x05, 0xba, 0x96, 0xad, 0xcb, 0x6d, 0x37, 0xe2, 0x6b, 0xd7, 0x39, 0xdf,
		0xa6, 0xb8, 0xef, 0x5a, 0xd8, 0xeb, 0xd5, 0xb9, 0x37, 0x5c, 0x50, 0xab, 0x42, 0x5e, 0xa3, 0xc6,
		0xc5, 0xa3, 0x1d, 0x08, 0x9c, 0x9f, 0x59, 0x18, 0xc9, 0x8c, 0x7d, 0xea, 0x2e, 0x27, 0x82, 0xb6,
		0x49, 0x96, 0xd6, 0x40, 0x94, 0x22, 0xbc, 0x47, 0x78, 0x9f, 0x45, 0x78, 0x3f, 0x70, 0x7d, 0x7e,
		0x48, 0x10, 0xd9, 0xd7, 0x71, 0x54, 0xbe, 0x24, 0x8c, 0xb8, 0xb6, 0x03, 0x8e, 0xca, 0xe5, 0x97,
		0xa2, 0x86, 0x63, 0x72, 0x60, 0xbf, 0x9c, 0x63, 0x3f, 0x6d, 0x9a, 0x25, 0x8d, 0x7b, 0x96, 0x8c,
		0xff, 0x1c, 0x57, 0x1a, 0xcf, 0x43, 0x85, 0xf1, 0x51, 0xd3, 0x26, 0xe1, 0x02, 0xe3, 0xa3, 0xc7,
		0x33, 0xae, 0x2f, 0x6e, 0xa1, 0xbe, 0xf8, 0x36, 0x21, 0x23, 0xea, 0x8b, 0x27, 0xd0, 0x17, 0x1c,
		0xb2, 0x22, 0x0a, 0x43, 0x14, 0x26, 0xa4, 0x2f, 0xa8, 0x2f, 0xbe, 0x3a, 0x27, 0xa8, 0x2f, 0x2e,
		0x3e, 0x73, 0xa8, 0x2f, 0x8e, 0xfa, 0xe2, 0xa8, 0x2f, 0x4e, 0x12, 0x93, 0x2a, 0x20, 0x37, 0x0c,
		0xd4, 0x17, 0x47, 0x7d, 0x71, 0x1c, 0x80, 0xeb, 0x63, 0x08, 0xa1, 0x6e, 0xa8, 0x2f, 0x8e, 0xfa,
		0xe2, 0xa8, 0x2f, 0x2e, 0xf3, 0x66, 0xa8, 0x2f, 0xbe, 0xa0, 0x4a, 0xa8, 0x2f, 0x8e, 0xfa, 0xe2,
		0x84, 0xa6, 0xd5, 0x40, 0x7d, 0x71, 0xd4, 0x17, 0x4f, 0x8c, 0xe9, 0x50, 0x5f, 0x5c, 0xf9, 0xf7,
		0xa2, 0x1c, 0x37, 0xca, 0x71, 0x8b, 0x6d, 0x7a, 0x1c, 0xd3, 0x24, 0x11, 0x88, 0x63, 0x9a, 0x65,
		0xba, 0x1e, 0xe5, 0xb8, 0xd7, 0x4c, 0x0d, 0xca, 0x71, 0x67, 0x1a, 0x3e, 0xa0, 0x1c, 0xb7, 0x72,
		0x38, 0x82, 0xea, 0xd5, 0x99, 0x40, 0x0f, 0xd4, 0x33, 0x01, 0xf2, 0x00, 0xf2, 0xc8, 0x0c, 0x79,
		0x6c, 0xbf, 0x9e, 0x09, 0x8a, 0x3d, 0xc3, 0xf8, 0xc0, 0xf8, 0xa0, 0xd8, 0x33, 0x8a, 0x3d, 0xe7,
		0xc1, 0x50, 0x06, 0x0f, 0x0f, 0x11, 0x23, 0x40, 0x92, 0x63, 0x39, 0x30, 0x8a, 0x30, 0x8a, 0x30,
		0x8a, 0xe9, 0x62, 0x30, 0x9f, 0x1f, 0xd4, 0x08, 0xac, 0x60, 0x0d, 0x17, 0x27, 0x97, 0x84, 0x4d,
		0x4e, 0x40, 0x8f, 0x2c, 0xab, 0x5a, 0x6d, 0x58, 0xe5, 0xea, 0xc1, 0x61, 0xbd, 0xd6, 0x68, 0xd4,
		0x0f, 0xcb, 0x87, 0x05, 0xba, 0xbf, 0x17, 0x6f, 0x33, 0x7d, 0x6f, 0x52, 0xae, 0xae, 0x4d, 0x03,
		0x77, 0x2b, 0x33, 0x7a, 0x3a, 0xdb, 0xbb, 0x95, 0xec, 0x27, 0x0f, 0x6d, 0x73, 0x10, 0xa3, 0xa6,
		0x7b, 0x4f, 0xd2, 0x76, 0x0e, 0xcb, 0xf0, 0xb2, 0x51, 0x5c, 0x97, 0x9b, 0x7b, 0x06, 0x37, 0x9f,
		0x4f, 0x8c, 0xfa, 0x51, 0xb9, 0x6e, 0x98, 0xc6, 0xe5, 0x08, 0x23, 0x1a, 0x6d, 0xb7, 0xc7, 0x8c,
		0xeb, 0x30, 0xe0, 0x81, 0x13, 0x78, 0xc6, 0xdf, 0x46, 0x15, 0x31, 0x8c, 0xda, 0xf1, 0xec, 0x77,
		0xb6, 0xdf, 0xfd, 0xee, 0x37, 0xbd, 0xc7, 0x20, 0x74, 0xf9, 0x53, 0x2f, 0x32, 0x6e, 0xfb, 0xcc,
		0x71, 0x1f, 0x5c, 0x67, 0x78, 0x36, 0xf0, 0xd1, 0xb8, 0x65, 0x43, 0x1d, 0x36, 0x0e, 0x29, 0xa8,
		0x6b, 0x22, 0x5c, 0xb1, 0x0e, 0x5f, 0xcc, 0x16, 0x84, 0x68, 0x93, 0x51, 0x43, 0x8d, 0xb5, 0x90,
		0x43, 0xed, 0x8a, 0xed, 0x9a, 0x5d, 0xc8, 0xa8, 0x97, 0x8b, 0xe7, 0x99, 0xae, 0xcf, 0x59, 0xf8,
		0x6c, 0x7b, 0x14, 0x4d, 0x5d, 0xe6, 0xc5, 0x21, 0x7a, 0x41, 0xf4, 0x82, 0xe8, 0x25, 0x95, 0xbe,
		0x0c, 0x5c, 0x9f, 0x57, 0x2d, 0x82, 0xf0, 0xa5, 0x81, 0xf0, 0x65, 0x03, 0x44, 0x46, 0x8b, 0x94,
		0xdc, 0x44, 0x2b, 0x35, 0xeb, 0xa8, 0x76, 0x74, 0xd0, 0xb0, 0x8e, 0xd0, 0x27, 0x05, 0x60, 0x04,
		0x8d, 0xe5, 0x70, 0x00, 0x0f, 0xc0, 0x04, 0xc0, 0x94, 0x7e, 0xb7, 0xa3, 0xb1, 0x1c, 0x50, 0x13,
		0x1a, 0xcb, 0x01, 0x30, 0xed, 0x1e, 0x60, 0x42, 0x1f, 0x36, 0xc0, 0x26, 0xc0, 0x26, 0xc0, 0xa6,
		0xd4, 0xfa, 0xb2, 0x23, 0x79, 0x8b, 0x61, 0x10, 0x70, 0xb3, 0xcb, 0x3c, 0xfb, 0x45, 0xde, 0x48,
		0xce, 0xc9, 0x82, 0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x49, 0xa5, 0x2f, 0x48, 0xcb, 0x51, 0x1d, 0xa1,
		0x21, 0x2d, 0x07, 0x69, 0x39, 0x08, 0xe0, 0xc8, 0x02, 0x38, 0xa4, 0xe5, 0xac, 0x37, 0xe4, 0x2a,
		0x93, 0x3c, 0x1a, 0x7b, 0x55, 0x24, 0xe6, 0x14, 0x2c, 0x31, 0x27, 0x5e, 0x33, 0x90, 0x3b, 0xca,
		0x62, 0x17, 0x37, 0xea, 0x53, 0x75, 0x90, 0x5a, 0x16, 0x88, 0x28, 0x06, 0x51, 0x0c, 0xa2, 0x18,
		0x44, 0x31, 0x88, 0x62, 0x10, 0xc5, 0x20, 0x8a, 0x41, 0x14, 0x83, 0x28, 0x86, 0x06, 0x11, 0xd7,
		0x10, 0xc3, 0x14, 0x2c, 0x86, 0xa9, 0x21, 0x82, 0x51, 0x11, 0xc1, 0x44, 0x43, 0x1d, 0x36, 0xc9,
		0x1a, 0x19, 0x2d, 0xc9, 0x43, 0xfc, 0x82, 0xf8, 0x05, 0xf1, 0x4b, 0xba, 0xf8, 0x85, 0xa2, 0x77,
		0x8f, 0xa6, 0x5d, 0x8d, 0x48, 0x7b, 0xf3, 0x90, 0x16, 0x47, 0xa7, 0x2f, 0x4d, 0x5c, 0x98, 0x1e,
		0x3c, 0xb9, 0x2e, 0x47, 0x5c, 0xa0, 0x5e, 0x3b, 0xba, 0xb4, 0x30, 0x20, 0xee, 0xa5, 0x93, 0xf3,
		0x6d, 0x8a, 0x26, 0x26, 0x85, 0xed, 0x99, 0x93, 0x7b, 0xc3, 0x05, 0xb5, 0x2a, 0x64, 0x6f, 0x1c,
		0x54, 0x93, 0x5f, 0x13, 0x67, 0xf2, 0xd0, 0xe6, 0x12, 0x65, 0x97, 0xe7, 0x5a, 0x48, 0x8f, 0x04,
		0x21, 0xb2, 0x44, 0x64, 0x89, 0xc8, 0x32, 0x95, 0xbe, 0x0c, 0x5c, 0x9f, 0x1f, 0x12, 0x04, 0x95,
		0x75, 0x9c, 0x8c, 0x2d, 0x09, 0xc3, 0x0d, 0x2c, 0xa9, 0xa5, 0x50, 0x71, 0x10, 0x66, 0xd5, 0x71,
		0xff, 0x2a, 0xe7, 0xc0, 0x03, 0x07, 0x5f, 0xeb, 0xed, 0x34, 0xfd, 0x31, 0x0a, 0x4e, 0xbb, 0x0a,
		0x71, 0xda, 0x85, 0x23, 0x2e, 0x15, 0xa1, 0xc7, 0x33, 0x55, 0x72, 0xde, 0xb3, 0x5c, 0x52, 0x1e,
		0xc9, 0x1d, 0xcc, 0x1a, 0xee, 0x5f, 0x22, 0x5c, 0x42, 0xb8, 0x84, 0x70, 0x49, 0x87, 0x70, 0xa9,
		0x82, 0x70, 0x29, 0x2f, 0xe1, 0x52, 0x0d, 0xc1, 0x92, 0x6e, 0x50, 0xe9, 0x9d, 0x42, 0xc5, 0x2c,
		0x35, 0x7d, 0x3f, 0xe0, 0x23, 0xd0, 0x2a, 0xa2, 0x8b, 0xa5, 0xc8, 0x79, 0x62, 0x3d, 0xbb, 0x3f,
		0xed, 0x44, 0xd1, 0x67, 0xfe, 0xa8, 0x93, 0x44, 0xec, 0x6b, 0x38, 0xeb, 0xed, 0x8f, 0xff, 0xf0,
		0x79, 0x7f, 0x3f, 0x62, 0x61, 0x0c, 0xbd, 0xc6, 0x7f, 0xee, 0x47, 0xdc, 0xe6, 0x29, 0xcb, 0x50,
		0x24, 0x9f, 0x8b, 0x64, 0x9f, 0x4c, 0x38, 0x5b, 0xb1, 0xa3, 0x1f, 0x36, 0x3e, 0x4d, 0x75, 0x18,
		0x5a, 0x3a, 0x77, 0x23, 0xde, 0xe4, 0x3c, 0x5d, 0xd1, 0x90, 0xd8, 0x42, 0xb7, 0x3c, 0x16, 0x3b,
		0xed, 0x94, 0xdb, 0x2e, 0x36, 0x28, 0x73, 0x4f, 0x56, 0x0e, 0x6b, 0xb5, 0x83, 0x46, 0xad, 0x56,
		0x6e, 0x54, 0x1b, 0xe5, 0xa3, 0x7a, 0xbd, 0x72, 0x50, 0x49, 0xe1, 0xc1, 0x4a, 0x57, 0x61, 0x97,
		0x85, 0xac, 0xfb, 0x29, 0x1e, 0xb8, 0x3f, 0xf0, 0x3c, 0x91, 0x47, 0xbf, 0x46, 0xc3, 0x8a, 0x29,
		0xc9, 0xf7, 0x79, 0xd2, 0xf5, 0x10, 0xd4, 0x5a, 0x09, 0x6d, 0x4d, 0x81, 0x1f, 0x4a, 0x11, 0x0f,
		0x07, 0x0e, 0xf7, 0xc7, 0xf0, 0xe3, 0x76, 0x28, 0xb2, 0x73, 0xc9, 0xfb, 0x9d, 0xdb, 0x91, 0xa8,
		0x77, 0x34, 0x0a, 0xfc, 0xfa, 0x27, 0xde, 0x98, 0xca, 0xb4, 0x53, 0x28, 0x32, 0x75, 0xaf, 0x0f,
		0x74, 0xf3, 0xeb, 0xbf, 0xf2, 0xea, 0xa5, 0x91, 0xd1, 0x78, 0xeb, 0x8d, 0xe7, 0x4e, 0x99, 0xe2,
		0x8f, 0xbf, 0x31, 0x15, 0x93, 0xc4, 0x84, 0x37, 0x3e, 0x36, 0x0d, 0x82, 0xde, 0xe8, 0x11, 0x99,
		0x26, 0xd8, 0x49, 0x1f, 0xd4, 0xa4, 0x0d, 0x5e, 0x84, 0x83, 0x14, 0xe1, 0x60, 0x44, 0x28, 0xe8,
		0x90, 0x53, 0xe6, 0x53, 0x37, 0x99, 0x91, 0x2d, 0xd9, 0x03, 0xfe, 0x64, 0xf6, 0xdc, 0xa8, 0x67,
		0x73, 0xe7, 0x29, 0xf9, 0x1c, 0x4e, 0x3b, 0x5f, 0x2f, 0x3c, 0x9e, 0xd4, 0x79, 0xa4, 0x8a, 0xbd,
		0x53, 0xc7, 0xda, 0x22, 0xb1, 0xb5, 0x78, 0x2c, 0x2d, 0x1a, 0x3b, 0x4b, 0xc7, 0xca, 0xd2, 0xb1,
		0xb1, 0x54, 0x2c, 0x4c, 0x0b, 0x27, 0x52, 0xc7, 0xb6, 0xd3, 0xf5, 0x72, 0x82, 0x81, 0xcf, 0x59,
		0x98, 0xea, 0x62, 0xdc, 0x44, 0x01, 0x53, 0xe4, 0x5d, 0x09, 0xc6, 0xab, 0x02, 0xf8, 0x51, 0x26,
		0x1e, 0x95, 0x3d, 0xae, 0x23, 0x0b, 0x72, 0xe4, 0x83, 0x1a, 0x11, 0x3e, 0x54, 0x26, 0x7e, 0x9c,
		0x85, 0xee, 0x52, 0x28, 0x31, 0xaf, 0xb3, 0xa9, 0x28, 0xa8, 0xb8, 0xa3, 0x42, 0x6e, 0x09, 0xdc,
		0x3c, 0xf3, 0xed, 0x7b, 0x8f, 0x99, 0x3e, 0xef, 0x9b, 0xb1, 0xd7, 0x49, 0xef, 0xab, 0x96, 0x05,
		0x24, 0xb4, 0x4d, 0x22, 0xec, 0x76, 0x9a, 0x8a, 0x82, 0x77, 0xf0, 0x9a, 0xf0, 0x9a, 0x19, 0x7b,
		0xcd, 0xf4, 0x15, 0xf8, 0x52, 0x56, 0xdc, 0xa3, 0xdc, 0xf2, 0x5d, 0xd1, 0xad, 0xde, 0xc5, 0x16,
		0xc7, 0x16, 0xc7, 0x16, 0xdf, 0xde, 0x16, 0xcf, 0x2f, 0x1f, 0xf3, 0x36, 0xd3, 0xfa, 0x0a, 0x1b,
		0xf3, 0x2e, 0xc5, 0x70, 0x92, 0x0e, 0x23, 0xcd, 0xeb, 0x97, 0x5e, 0xa5, 0x83, 0xd6, 0x53, 0x6d,
		0xeb, 0x07, 0xbb, 0x3a, 0x94, 0x35, 0xc3, 0x28, 0xf5, 0xc3, 0xc0, 0x61, 0x51, 0xc4, 0x36, 0xdf,
		0xa2, 0x9d, 0x2b, 0xe6, 0x3c, 0xf9, 0xe8, 0x86, 0xe9, 0x78, 0x9d, 0x5a, 0x7a, 0xd3, 0xa4, 0x25,
		0x31, 0x61, 0xf3, 0x26, 0x2b, 0x7e, 0x9f, 0xd7, 0xa6, 0x2b, 0xa1, 0x8d, 0x4a, 0x6d, 0x93, 0x52,
		0xdb, 0xa0, 0x65, 0x9b, 0x33, 0x7c, 0x71, 0x22, 0x15, 0x7c, 0x8b, 0x0c, 0x9a, 0xac, 0x5a, 0x72,
		0x16, 0x71, 0xf2, 0x40, 0x31, 0x78, 0xc4, 0x37, 0x94, 0xa0, 0xb8, 0x44, 0xe2, 0xeb, 0x4a, 0x92,
		0x31, 0x93, 0xd8, 0x77, 0x05, 0x80, 0x5a, 0xfc, 0x90, 0x1e, 0xe0, 0x28, 0xa1, 0x92, 0xe9, 0x87,
		0x8e, 0x92, 0x29, 0x61, 0xde, 0xe0, 0x91, 0xc7, 0xec, 0x87, 0x90, 0x3d, 0x88, 0xc0, 0xa3, 0x14,
		0x75, 0x87, 0x4a, 0xd7, 0x63, 0x7f, 0xbe, 0xb7, 0x37, 0xc2, 0x1c, 0xfb, 0xb1, 0xc2, 0x67, 0x18,
		0x41, 0x25, 0x3b, 0x1d, 0x5a, 0x99, 0x9d, 0x24, 0xa7, 0x44, 0x29, 0xad, 0x7c, 0x6a, 0x6b, 0x8f,
		0x8d, 0x59, 0xe0, 0x8d, 0x99, 0xd4, 0x6b, 0x4c, 0x1f, 0xb0, 0xc3, 0xc7, 0xf4, 0x45, 0x5a, 0x66,
		0xc7, 0x50, 0xf1, 0xd3, 0x29, 0x67, 0x4b, 0x2c, 0x03, 0x54, 0x38, 0xf3, 0x53, 0x26, 0xe3, 0x53,
		0x42, 0x9d, 0x65, 0xd5, 0x9a, 0x4c, 0xbd, 0xc9, 0xd4, 0x9c, 0x46, 0xdd, 0x05, 0x99, 0xf1, 0x94,
		0x6b, 0x2e, 0x9c, 0xb3, 0x39, 0x7f, 0x2b, 0xd4, 0xf5, 0x1f, 0x45, 0x16, 0x7c, 0x5a, 0x5d, 0x40,
		0xe9, 0x08, 0x85, 0x52, 0x7a, 0xa6, 0x4f, 0x0b, 0xa7, 0xf6, 0xcc, 0x24, 0x10, 0xa6, 0xf8, 0x4c,
		0x85, 0x8a, 0xa7, 0xfa, 0xac, 0x8a, 0x48, 0x9d, 0xf2, 0x93, 0x5e, 0x33, 0x53, 0xac, 0x59, 0xc9,
		0xe9, 0x0f, 0xcc, 0x41, 0x64, 0x3f, 0xb2, 0x31, 0xad, 0x20, 0x6e, 0x73, 0x57, 0x24, 0xc1, 0xfe,
		0xc2, 0xfe, 0x6a, 0x67, 0x7f, 0x45, 0xf2, 0x0b, 0x96, 0x55, 0x5c, 0xa0, 0xbe, 0x8b, 0x64, 0x7e,
		0xbc, 0xc4, 0x25, 0x01, 0x8a, 0x7c, 0x78, 0xaa, 0x6b, 0xc3, 0xe4, 0x49, 0xd7, 0x74, 0xc9, 0xd6,
		0x12, 0xf9, 0xee, 0x24, 0x79, 0xee, 0x0a, 0xf2, 0x15, 0x8a, 0x30, 0xeb, 0x19, 0xa5, 0x98, 0xdf,
		0xe5, 0xca, 0x53, 0x0f, 0x22, 0x81, 0x3e, 0x8b, 0x6b, 0xfc, 0xf4, 0x50, 0x0e, 0xbc, 0x34, 0xbc,
		0x34, 0xbc, 0x34, 0xbc, 0x34, 0xbc, 0x34, 0xbc, 0x34, 0xbc, 0x34, 0x8d, 0x97, 0xe6, 0xae, 0xe7,
		0xfe, 0x47, 0xec, 0xce, 0xd8, 0xa2, 0x9b, 0x9e, 0x13, 0x04, 0x3f, 0x0d, 0x3f, 0xad, 0x9d, 0x9f,
		0xee, 0xb3, 0xd0, 0x61, 0x3e, 0xb7, 0x1f, 0x99, 0x84, 0xa3, 0xae, 0xc3, 0x51, 0xc3, 0x51, 0x2b,
		0x73, 0xd4, 0xe5, 0x32, 0xfc, 0xb2, 0x06, 0x7e, 0xb9, 0xc7, 0x7a, 0x41, 0xf8, 0x32, 0x0a, 0x7c,
		0xc5, 0x9d, 0xf2, 0x82, 0x14, 0x78, 0x64, 0x78, 0x64, 0xed, 0x3c, 0xf2, 0x40, 0xb4, 0xab, 0x1c,
		0xc2, 0x66, 0x78, 0x63, 0x84, 0xcd, 0x70, 0xcf, 0x72, 0xee, 0x99, 0x22, 0x72, 0x5e, 0x23, 0x0b,
		0xae, 0x1a, 0xae, 0x1a, 0xc1, 0x33, 0x82, 0x67, 0xb8, 0x6b, 0x04, 0xcf, 0xf0, 0xce, 0xa9, 0xbd,
		0xf3, 0xf8, 0xfa, 0x98, 0xa0, 0x3f, 0x1e, 0x3e, 0x0d, 0x0f, 0x0c, 0x0f, 0x8c, 0x64, 0xdc, 0x65,
		0xfd, 0x4e, 0x9b, 0x8c, 0xab, 0x64, 0x77, 0xa7, 0xb9, 0xa8, 0xb5, 0x0a, 0x42, 0x12, 0x5f, 0xd8,
		0xc2, 0xde, 0xc6, 0xde, 0x06, 0x11, 0x06, 0x64, 0x0d, 0x64, 0x0d, 0x22, 0x0c, 0x50, 0x7b, 0xd3,
		0xa4, 0x45, 0xdc, 0x0e, 0xb9, 0xc9, 0x5d, 0x19, 0xc0, 0x3d, 0x27, 0x03, 0xae, 0x19, 0xae, 0x59,
		0x3b, 0xd7, 0x1c, 0x6b, 0x36, 0x77, 0x9d, 0x1f, 0x51, 0xe6, 0xfe, 0xf9, 0xab, 0x3f, 0x32, 0x8d,
		0x25, 0xdf, 0xf6, 0x83, 0x88, 0x39, 0x81, 0xdf, 0x15, 0xe9, 0xb3, 0x01, 0x3f, 0x0f, 0x3f, 0x0f,
		0x3f, 0xaf, 0x9f, 0x9f, 0x2f, 0x54, 0x09, 0xf7, 0x69, 0x69, 0xa6, 0xc9, 0x4f, 0x69, 0xfa, 0x0d,
		0xa8, 0x2e, 0xf6, 0x35, 0xee, 0x27, 0xf0, 0x36, 0xbb, 0x90, 0xee, 0xc2, 0x71, 0xfa, 0x0b, 0xc6,
		0x24, 0x17, 0x8a, 0x05, 0x2e, 0x10, 0x0b, 0x5c, 0x18, 0xde, 0x56, 0x01, 0xb5, 0x15, 0x45, 0x2a,
		0x25, 0x2a, 0x44, 0xb2, 0xa6, 0x2e, 0xd9, 0xf5, 0xf8, 0xf9, 0x42, 0x16, 0x62, 0x9b, 0x95, 0x3a,
		0x93, 0x28, 0xad, 0x16, 0x45, 0x4f, 0xe6, 0xb8, 0x9f, 0xc2, 0x9b, 0xb5, 0xd5, 0xe6, 0x3e, 0x9b,
		0x8f, 0xe2, 0x6a, 0xd1, 0x4b, 0x64, 0x72, 0x16, 0xf6, 0x0a, 0x59, 0x60, 0x6d, 0xfa, 0xf2, 0x59,
		0x15, 0x59, 0x73, 0x26, 0xb3, 0x9f, 0xb0, 0xc6, 0xda, 0xf8, 0xf3, 0xc4, 0x25, 0xd6, 0xca, 0xca,
		0x5a, 0x35, 0xbc, 0xa5, 0x0a, 0xa2, 0x51, 0x58, 0x2e, 0xfa, 0x35, 0xbc, 0xa1, 0x2a, 0x34, 0x4e,
		0x30, 0x71, 0xa9, 0xb5, 0x51, 0x79, 0x5b, 0xd1, 0xb2, 0xb8, 0x4a, 0xab, 0xe2, 0xc6, 0xb3, 0xbc,
		0x6b, 0x45, 0x71, 0x93, 0x6a, 0xbe, 0x2c, 0x0f, 0x91, 0xcb, 0xca, 0xb8, 0x09, 0x77, 0x86, 0x1a,
		0xcc, 0x9c, 0xe7, 0xf2, 0xb8, 0x8a, 0x61, 0xff, 0xcb, 0x63, 0xc0, 0xcd, 0xc0, 0x31, 0x9d, 0xa0,
		0xd7, 0x0f, 0x63, 0x1c, 0xd2, 0x35, 0x3d, 0x66, 0x3f, 0xc4, 0x42, 0x7e, 0x65, 0x58, 0x60, 0xae,
		0x3f, 0xee, 0xff, 0x6b, 0xa6, 0x6d, 0x46, 0x3b, 0x5f, 0x4b, 0x74, 0x51, 0x82, 0x4a, 0xf3, 0xf4,
		0x37, 0x0b, 0xc6, 0x09, 0xc6, 0x29, 0xef, 0xc6, 0x89, 0xf9, 0x83, 0x1e, 0x0b, 0xd3, 0xa6, 0xb2,
		0x4e, 0x0d, 0x54, 0x8a, 0x96, 0x97, 0xa5, 0x96, 0x3f, 0x10, 0xa8, 0x01, 0xd5, 0x0e, 0x6e, 0x47,
		0xa9, 0x10, 0x42, 0xbc, 0x6e, 0x39, 0x1e, 0xe3, 0xdf, 0x2c, 0x11, 0x22, 0xb5, 0x32, 0x7c, 0xb4,
		0x22, 0xf2, 0xa8, 0x35, 0x7a, 0xb4, 0x93, 0xd4, 0x04, 0x08, 0xf3, 0xdd, 0xc1, 0xd9, 0x50, 0x05,
		0x05, 0x26, 0xe6, 0x6f, 0x15, 0xb1, 0xde, 0xb1, 0xe3, 0x61, 0x25, 0x2e, 0xa9, 0xb9, 0x6c, 0x12,
		0x8f, 0x8d, 0xb2, 0xd6, 0x14, 0x59, 0x4e, 0x7c, 0x65, 0x68, 0x73, 0x66, 0x7a, 0x6e, 0xcf, 0xe5,
		0xe9, 0xbd, 0xe4, 0xdc, 0xb3, 0x70, 0x4d, 0x70, 0x4d, 0x5b, 0x73, 0x4d, 0x03, 0xd7, 0xe7, 0x95,
		0x03, 0x01, 0xaf, 0x74, 0x80, 0x66, 0x6b, 0x4b, 0xcf, 0xa3, 0xd9, 0x9a, 0x71, 0x50, 0xaf, 0x57,
		0xd1, 0x5d, 0x6d, 0x63, 0x10, 0x02, 0xe7, 0x39, 0xc7, 0x94, 0xb3, 0x28, 0x8e, 0x0e, 0x45, 0xfd,
		0xe7, 0xe2, 0xe3, 0x70, 0xa1, 0x70, 0xa1, 0x70, 0xa1, 0x70, 0xa1, 0x70, 0xa1, 0x70, 0xa1, 0xbb,
		0xe3, 0x42, 0xb9, 0xdb, 0x63, 0xc1, 0x40, 0xc0, 0x79, 0x4e, 0x1e, 0x84, 0xdb, 0x84, 0xdb, 0x84,
		0xdb, 0x84, 0xdb, 0x84, 0xdb, 0x84, 0xdb, 0xd4, 0xc4, 0x6d, 0xe6, 0x32, 0xc3, 0x6e, 0x96, 0xe9,
		0xb5, 0x3f, 0xce, 0x02, 0x12, 0xcd, 0x90, 0x7b, 0xb5, 0x53, 0x68, 0x92, 0xd6, 0x60, 0xa9, 0x5a,
		0x82, 0xe5, 0xa5, 0xe1, 0x23, 0xb2, 0x91, 0x08, 0x94, 0x1b, 0xd9, 0x48, 0xc0, 0xb6, 0xc0, 0xb6,
		0x06, 0xfa, 0xf1, 0xcf, 0xbe, 0x13, 0xc9, 0x3e, 0xd8, 0xfb, 0xd8, 0xfb, 0xc4, 0x7b, 0x1f, 0xc9,
		0x3e, 0x9b, 0x1e, 0x45, 0xb2, 0xcf, 0x86, 0x07, 0x8b, 0x9d, 0xec, 0x83, 0x5c, 0x1a, 0x58, 0x7e,
		0x58, 0x7e, 0x30, 0x9a, 0x60, 0x34, 0xc1, 0x68, 0xe6, 0x8d, 0xd1, 0x44, 0xaa, 0x0a, 0x3c, 0x14,
		0x3c, 0x14, 0x3c, 0x14, 0x3c, 0x14, 0x3c, 0x94, 0xc6, 0x1e, 0x0a, 0x99, 0x20, 0xf0, 0x4a, 0xf0,
		0x4a, 0xf0, 0x4a, 0xf0, 0x4a, 0xf0, 0x4a, 0x19, 0x79, 0xa5, 0xbc, 0x27, 0x5a, 0x24, 0x28, 0x86,
		0x95, 0xd7, 0x4a, 0x44, 0x6f, 0x16, 0x06, 0x32, 0x36, 0x56, 0x60, 0xba, 0x8d, 0x9e, 0x6e, 0x47,
		0x4f, 0xca, 0x14, 0x31, 0x7a, 0x35, 0x93, 0x24, 0x51, 0x06, 0x49, 0xe2, 0xd2, 0x45, 0x16, 0x59,
		0xe9, 0xa2, 0xa2, 0x56, 0x2d, 0xca, 0xac, 0x60, 0xd1, 0x7d, 0x10, 0x24, 0xac, 0x4c, 0x3b, 0x7f,
		0x8e, 0x9d, 0xa8, 0x10, 0x6d, 0x42, 0x60, 0x98, 0x45, 0xd9, 0x22, 0x5d, 0x73, 0x84, 0x54, 0xa7,
		0x07, 0x25, 0x86, 0x6f, 0x82, 0x65, 0x5c, 0x53, 0x94, 0x6d, 0x15, 0x2d, 0xd3, 0x9a, 0x12, 0xe3,
		0xa5, 0x40, 0xaa, 0x22, 0x98, 0x4e, 0x14, 0xcb, 0x49, 0x83, 0x10, 0x71, 0xf0, 0x91, 0xa6, 0xd0,
		0xb5, 0x08, 0x56, 0x23, 0x2c, 0x8b, 0xba, 0xcd, 0x59, 0x22, 0x82, 0x50, 0x77, 0x0a, 0x92, 0x40,
		0x9d, 0x41, 0x18, 0x32, 0x9f, 0x9b, 0x5d, 0x9b, 0xb3, 0x74, 0xa6, 0x7e, 0xe5, 0x49, 0x58, 0x7c,
		0x58, 0xfc, 0xa5, 0xf9, 0x8e, 0x75, 0xc3, 0xb4, 0xfd, 0x6e, 0xd2, 0xda, 0xf4, 0xb3, 0x36, 0x39,
		0x09, 0x3e, 0x7b, 0x6d, 0x73, 0xce, 0x42, 0x3f, 0xb1, 0xf9, 0x2e, 0x7d, 0x2b, 0x9b, 0x47, 0x77,
		0x7f, 0xd4, 0x7e, 0x7d, 0xff, 0x6e, 0xbe, 0x2f, 0x7f, 0xab, 0x98, 0x47, 0x77, 0x7f, 0x56, 0xbe,
		0x95, 0x4d, 0xeb, 0xee, 0xc3, 0xdc, 0x6f, 0xbe, 0x55, 0xac, 0xbb, 0xe1, 0x07, 0xff, 0xac, 0x7e,
		0x2b, 0x57, 0xee, 0x3e, 0x7c, 0x6b, 0xf3, 0xbb, 0xf7, 0xe5, 0xd1, 0x6f, 0x2a, 0xa3, 0x3f, 0xac,
		0x6f, 0x65, 0xb3, 0x7a, 0xf7, 0xe1, 0x78, 0xf2, 0xeb, 0x6f, 0x15, 0xb3, 0x3e, 0x7a, 0x66, 0xdd,
		0xef, 0xfe, 0x3c, 0x28, 0x7f, 0x78, 0xff, 0xfd, 0xfb, 0xde, 0xf0, 0x2f, 0xff, 0xf5, 0xe1, 0xaf,
		0xef, 0xbf, 0xfd, 0xf3, 0x3f, 0x77, 0x7f, 0xbe, 0xff, 0xf6, 0x5f, 0x66, 0x0a, 0xb9, 0x1f, 0x3e,
		0xbc, 0xbd, 0xb8, 0x77, 0x49, 0xe6, 0xec, 0xea, 0xf6, 0xec, 0x1f, 0xa9, 0x27, 0xee, 0xff, 0xbe,
		0x2f, 0xf4, 0xd4, 0x7d, 0xf8, 0x5f, 0xa5, 0xad, 0xd8, 0xd6, 0x6e, 0xd0, 0xb3, 0x5d, 0xdf, 0x4c,
		0xd4, 0x4c, 0x6d, 0xb6, 0x65, 0xe6, 0x1e, 0x82, 0x45, 0x85, 0x45, 0x15, 0x56, 0x8f, 0xd4, 0xf6,
		0xf4, 0x9c, 0xf9, 0x8f, 0x43, 0xa6, 0x21, 0x5f, 0x68, 0xb8, 0x02, 0x34, 0xbc, 0x3c, 0x25, 0x56,
		0xbd, 0xba, 0x7b, 0xe0, 0x57, 0x05, 0x22, 0x78, 0xff, 0xfe, 0xfd, 0xfb, 0x6f, 0xb6, 0xf9, 0x9f,
		0xa6, 0xf9, 0xcf, 0xb2, 0x79, 0xd4, 0xb9, 0x9b, 0xfb, 0xcb, 0xf7, 0xef, 0x66, 0xe7, 0xee, 0xc3,
		0x1f, 0xe5, 0x8f, 0x07, 0x95, 0x5f, 0x1f, 0xfe, 0x3a, 0xfb, 0xfd, 0xdd, 0xf7, 0xef, 0x7b, 0x1f,
		0xfe, 0xb7, 0xc8, 0x53, 0x7f, 0xfd, 0xf0, 0x67, 0xfc, 0xec, 0x76, 0x1d, 0xf9, 0x16, 0x06, 0xbc,
		0x25, 0xef, 0xfb, 0x14, 0x44, 0x3c, 0x9d, 0xeb, 0x9d, 0x3e, 0x01, 0xbf, 0x0b, 0xbf, 0x0b, 0xbf,
		0x0b, 0xbf, 0x0b, 0xbf, 0x0b, 0xbf, 0x0b, 0xbf, 0x9b, 0xd2, 0xef, 0x7a, 0x76, 0xc4, 0xcd, 0xd1,
		0x31, 0xe5, 0x60, 0x74, 0xab, 0x69, 0xc8, 0xfe, 0x44, 0xdc, 0xee, 0xf5, 0x93, 0xfb, 0xe2, 0x57,
		0xa5, 0xc0, 0x3f, 0xc3, 0x3f, 0xe3, 0x6c, 0x09, 0x67, 0x4b, 0x38, 0x5b, 0xca, 0xf5, 0xd9, 0x92,
		0x17, 0x3c, 0xba, 0xbe, 0x79, 0x6f, 0xfb, 0x3e, 0x0b, 0x53, 0x58, 0xfe, 0xf9, 0xa7, 0x60, 0xe9,
		0x61, 0xe9, 0x97, 0xe6, 0x3b, 0x1a, 0xdd, 0x45, 0x4e, 0x13, 0x84, 0x29, 0xd0, 0xed, 0x5e, 0xc0,
		0xbb, 0xa9, 0x55, 0x7b, 0xfe, 0x21, 0x68, 0x36, 0x34, 0x3b, 0x97, 0x9a, 0x1d, 0x05, 0x0f, 0xfc,
		0xdf, 0x76, 0xc8, 0x12, 0xd7, 0xf8, 0x98, 0xbd, 0xff, 0xf2, 0x93, 0xd0, 0x71, 0xe8, 0x78, 0x2e,
		0x75, 0x7c, 0xd0, 0x4f, 0x99, 0xd7, 0x38, 0x79, 0x00, 0x1a, 0x0d, 0x8d, 0x46, 0xe4, 0x89, 0xc8,
		0x13, 0x91, 0xe7, 0xf6, 0x23, 0xcf, 0xed, 0x5e, 0xb9, 0xd8, 0x7c, 0x5b, 0x24, 0xd9, 0x9d, 0x09,
		0xce, 0x3c, 0x9f, 0xf1, 0xc4, 0xbd, 0x9f, 0x17, 0x3f, 0x8e, 0xf6, 0xcf, 0x68, 0xff, 0x9c, 0x64,
		0xc9, 0xb3, 0x44, 0x1c, 0x28, 0xb8, 0x8a, 0x82, 0xab, 0x46, 0x69, 0xe8, 0x43, 0x50, 0x75, 0x91,
		0x76, 0x0b, 0x48, 0x6f, 0x05, 0xe9, 0x2d, 0x21, 0xbf, 0x35, 0x52, 0xc2, 0x06, 0xf4, 0x7f, 0x7e,
		0xeb, 0x39, 0xf4, 0xb4, 0x84, 0x2d, 0x80, 0x2d, 0x20, 0xb1, 0x05, 0xa8, 0x27, 0x21, 0x1b, 0xad,
		0x93, 0xc5, 0xa3, 0xf2, 0x71, 0xa9, 0x40, 0x14, 0x2f, 0x15, 0xcd, 0xaf, 0x4c, 0x1d, 0xea, 0x49,
		0x88, 0x87, 0xfb, 0x3b, 0xe6, 0x3c, 0x51, 0x28, 0x10, 0x2e, 0x14, 0x2e, 0x14, 0x2e, 0x14, 0x2e,
		0x14, 0x2e, 0x14, 0x2e, 0x54, 0xc8, 0x85, 0xa2, 0x92, 0x21, 0xdc, 0x26, 0xdc, 0x26, 0xdc, 0x26,
		0xdc, 0x26, 0xdc, 0x26, 0xdc, 0x66, 0x82, 0x4f, 0x6c, 0xab, 0xd4, 0xe2, 0xc2, 0x09, 0x36, 0xda,
		0x5a, 0xe2, 0x94, 0x15, 0xa7, 0xac, 0x38, 0x65, 0x05, 0xbe, 0xd5, 0x1b, 0xdf, 0x16, 0xa4, 0xaf,
		0x25, 0x0e, 0x31, 0xb1, 0xd5, 0x10, 0x4a, 0x22, 0x94, 0x44, 0x28, 0x89, 0x50, 0x92, 0x30, 0x94,
		0xc4, 0x19, 0x21, 0x3c, 0x14, 0x3c, 0x14, 0x3c, 0x14, 0x3c, 0x14, 0x3c, 0x94, 0xc6, 0x1e, 0x0a,
		0x47, 0x70, 0xf0, 0x4a, 0xf0, 0x4a, 0xf0, 0x4a, 0xf0, 0x4a, 0xf0, 0x4a, 0x19, 0x79, 0xa5, 0x02,
		0x9c, 0x70, 0x15, 0xb8, 0x9f, 0x58, 0x92, 0xcb, 0xa6, 0xc6, 0xc6, 0x96, 0x62, 0xed, 0xe1, 0xd3,
		0x29, 0xbb, 0x8a, 0xbd, 0x7b, 0x65, 0x9c, 0x6f, 0x8d, 0x2f, 0xe9, 0xb8, 0x4a, 0x6b, 0x5b, 0x97,
		0xad, 0x8e, 0x60, 0xf1, 0xa5, 0x67, 0xaf, 0x36, 0xf7, 0x5a, 0xa5, 0xd8, 0xd7, 0xb9, 0xbe, 0xed,
		0x99, 0x5d, 0xf6, 0xec, 0xae, 0xf1, 0xe0, 0x73, 0x17, 0x77, 0x17, 0x3f, 0xb8, 0x34, 0xb4, 0xf5,
		0x27, 0x8b, 0x1b, 0xb1, 0xcb, 0x6b, 0x18, 0x65, 0x1e, 0x8b, 0x04, 0x7d, 0xbe, 0x09, 0x8b, 0xbc,
		0x85, 0x39, 0x12, 0x63, 0x8b, 0xc4, 0x18, 0x62, 0x19, 0x2b, 0x4c, 0x5f, 0x2e, 0xa5, 0x1a, 0x6c,
		0x3a, 0xb9, 0x7b, 0xeb, 0x6a, 0x6d, 0xb2, 0x2b, 0xb5, 0x59, 0xdf, 0x9e, 0x7e, 0x65, 0x89, 0xd2,
		0xc2, 0xc3, 0xec, 0x6f, 0x4f, 0x6f, 0x5e, 0xc2, 0x6d, 0x59, 0xb0, 0xa5, 0x7d, 0xb6, 0xbf, 0xfc,
		0xf7, 0xd7, 0x12, 0x0e, 0x92, 0xdd, 0xd8, 0xf7, 0x82, 0x47, 0xd7, 0xb1, 0x3d, 0xd3, 0x79, 0xb2,
		0x7d, 0x9f, 0x79, 0xd1, 0xdb, 0xfa, 0xb6, 0xf2, 0x04, 0x34, 0x2f, 0x77, 0x9a, 0xf7, 0xf6, 0xbd,
		0xfd, 0xd1, 0xe2, 0xa5, 0xb8, 0xb8, 0x3f, 0x7e, 0xa0, 0x18, 0x37, 0xf7, 0x13, 0x28, 0x83, 0x68,
		0xb4, 0xba, 0xfd, 0x9c, 0x92, 0xb7, 0x95, 0x85, 0x06, 0x51, 0x26, 0xce, 0x29, 0x49, 0x58, 0x04,
		0x22, 0x9d, 0xe7, 0x12, 0x54, 0xad, 0xad, 0x11, 0x25, 0x29, 0x54, 0x4e, 0x3f, 0xa2, 0x24, 0xb9,
		0x4a, 0xaa, 0x21, 0x4a, 0x92, 0xaa, 0xea, 0xf4, 0x01, 0xbb, 0xdb, 0x73, 0x7d, 0x33, 0x59, 0x56,
		0xdd, 0xc6, 0x55, 0x9f, 0x17, 0x92, 0x72, 0xfe, 0xd2, 0xb1, 0x7e, 0xc2, 0x4a, 0x2d, 0xa3, 0xdc,
		0x44, 0x4a, 0x2e, 0xab, 0xec, 0x64, 0x4a, 0x4f, 0xa6, 0xfc, 0x74, 0x9b, 0x40, 0x90, 0x99, 0x48,
		0xb9, 0xf6, 0xa9, 0x59, 0xc4, 0xd7, 0x14, 0xdd, 0xe4, 0xb1, 0x34, 0x81, 0xe5, 0x9f, 0x98, 0xef,
		0x9a, 0xc0, 0xb3, 0x2d, 0x7f, 0xd0, 0x13, 0x57, 0x9c, 0x76, 0x70, 0x3b, 0xaa, 0xcf, 0x28, 0x2a,
		0x61, 0x28, 0xa5, 0x1c, 0x4f, 0x44, 0xeb, 0xb2, 0xf9, 0xe9, 0xbc, 0x75, 0x2a, 0xa8, 0x79, 0x43,
		0x39, 0x95, 0x58, 0xce, 0xe9, 0xd9, 0xad, 0xb4, 0x20, 0x2b, 0x16, 0x74, 0xd1, 0x3c, 0xbb, 0x6c,
		0x97, 0x84, 0x84, 0xfc, 0xfa, 0x28, 0x3a, 0x9d, 0x67, 0x3e, 0x97, 0x9b, 0xcb, 0xe9, 0xf0, 0x53,
		0x37, 0x64, 0x59, 0x54, 0x8b, 0xcb, 0x89, 0x94, 0xb2, 0x84, 0x94, 0xd1, 0x14, 0x1e, 0x1b, 0x96,
		0xd8, 0x2c, 0xe6, 0x6c, 0xb3, 0x0b, 0x66, 0xf0, 0x4f, 0x9f, 0x97, 0xce, 0xe4, 0x4f, 0x3f, 0xcc,
		0x34, 0x95, 0x09, 0x1d, 0xcf, 0x65, 0x3e, 0x37, 0x7b, 0x76, 0xbf, 0xef, 0xfa, 0x8f, 0x66, 0x2f,
		0xe8, 0x4a, 0xf8, 0xef, 0x75, 0xc2, 0xe0, 0xc7, 0xe1, 0xc7, 0xb5, 0xf5, 0xe3, 0x6e, 0x97, 0xf9,
		0xdc, 0xe5, 0x2f, 0x21, 0x7b, 0x90, 0x71, 0xe1, 0x02, 0x47, 0x41, 0xa5, 0xb3, 0xf1, 0x57, 0x7f,
		0xb2, 0x23, 0x09, 0xdd, 0x99, 0x0c, 0xe4, 0xe4, 0xfc, 0xac, 0x75, 0xd9, 0xee, 0x5c, 0x34, 0xaf,
		0xaf, 0xcf, 0x2e, 0xbf, 0x74, 0x2e, 0xae, 0x4e, 0x5b, 0xa2, 0x5a, 0x34, 0x3c, 0xe3, 0x8a, 0x52,
		0x9f, 0x62, 0xce, 0xff, 0x27, 0xee, 0x09, 0x17, 0x06, 0x15, 0x8f, 0xa2, 0x53, 0xf9, 0x47, 0xa5,
		0x5c, 0xfe, 0x52, 0x12, 0x96, 0xf8, 0xeb, 0x63, 0x4e, 0x86, 0x61, 0xe9, 0x31, 0x8c, 0x9a, 0x0e,
		0xc3, 0xb0, 0xf4, 0x50, 0x2a, 0x4b, 0x0f, 0xa5, 0xaa, 0xea, 0xb1, 0x1a, 0x35, 0xd9, 0x61, 0x08,
		0x3d, 0x79, 0x07, 0xbc, 0x9d, 0x25, 0xde, 0xee, 0xb2, 0xc8, 0x09, 0xdd, 0xbe, 0xd0, 0xf8, 0x66,
		0x6d, 0x46, 0xe7, 0x84, 0x00, 0x5f, 0x03, 0x5f, 0x6b, 0x8b, 0xaf, 0x13, 0xf7, 0x01, 0xd9, 0x08,
		0xad, 0x0f, 0x61, 0xac, 0xc4, 0x8d, 0x95, 0xeb, 0x77, 0xd9, 0x4f, 0x71, 0x33, 0x35, 0x7a, 0x1c,
		0x06, 0x0a, 0x06, 0x4a, 0x5b, 0x03, 0x35, 0x70, 0x7d, 0x5e, 0xb5, 0x24, 0x0c, 0x54, 0x43, 0xe0,
		0x51, 0xb1, 0x34, 0x61, 0x79, 0xc8, 0x2a, 0x95, 0x36, 0xbc, 0xc8, 0x0f, 0xc8, 0x51, 0xcc, 0x06,
		0x65, 0x1e, 0xec, 0x6c, 0x4d, 0x65, 0xf3, 0x61, 0x09, 0xe2, 0x09, 0xa9, 0xf4, 0xe2, 0x95, 0x29,
		0xae, 0x59, 0x47, 0xb5, 0xa3, 0x83, 0x86, 0x75, 0x54, 0xd7, 0x77, 0xae, 0x33, 0x3a, 0x64, 0xb8,
		0x03, 0x8e, 0x10, 0xc7, 0x11, 0x4b, 0x19, 0x6e, 0xa3, 0x23, 0x4f, 0x61, 0x58, 0xb1, 0x56, 0x1a,
		0x50, 0x06, 0x50, 0x06, 0x8e, 0x19, 0x5e, 0x8f, 0x85, 0xb6, 0x7f, 0xcc, 0x70, 0x7e, 0xf5, 0xe5,
		0xec, 0xa4, 0x79, 0xde, 0x69, 0x9d, 0xb7, 0x2e, 0x5a, 0x97, 0xed, 0xce, 0xf5, 0xcd, 0x55, 0xfb,
		0xea, 0xe4, 0xea, 0xbc, 0xd3, 0xfe, 0xfd, 0x5a, 0x83, 0x03, 0x87, 0x78, 0x38, 0x9d, 0x56, 0xfb,
		0xb7, 0xd6, 0xcd, 0x65, 0xab, 0x5d, 0x64, 0x3e, 0x72, 0x38, 0x90, 0xab, 0xf6, 0x25, 0xc8, 0x48,
		0xcd, 0xfd, 0x72, 0xd0, 0xbf, 0xb7, 0x9d, 0x1f, 0x92, 0xc7, 0xfe, 0x8b, 0x62, 0xe0, 0x89, 0xe1,
		0x89, 0xb5, 0xf5, 0xc4, 0x0b, 0xaa, 0xbe, 0xdb, 0xa9, 0x7b, 0x97, 0x57, 0x97, 0x2d, 0xe9, 0xbc,
		0xbd, 0xcf, 0xcd, 0x93, 0xb3, 0xf3, 0xb3, 0xf6, 0xef, 0xd2, 0x79, 0x7b, 0xed, 0xd6, 0xcd, 0xc5,
		0xd9, 0x65, 0xf3, 0x5c, 0x46, 0x50, 0x35, 0x16, 0xd4, 0xbc, 0x3d, 0x3b, 0xe9, 0x5c, 0xff, 0xf6,
		0x7b, 0xe7, 0xfc, 0xea, 0x44, 0x4e, 0x5c, 0x6d, 0x41, 0xdc, 0x4d, 0xeb, 0xe2, 0xaa, 0x2d, 0x35,
		0x61, 0xf5, 0xa9, 0xbc, 0x8b, 0xe6, 0x89, 0xfc, 0xeb, 0x1d, 0x2c, 0x88, 0x1b, 0xbf, 0x5e, 0xd1,
		0x12, 0x1f, 0x97, 0xa6, 0xe3, 0xd8, 0x90, 0x60, 0x3a, 0x56, 0x26, 0x23, 0xd5, 0xe5, 0xfd, 0xf5,
		0xd2, 0x66, 0x8a, 0x74, 0x6c, 0x54, 0x29, 0x84, 0x4d, 0x5f, 0xad, 0x26, 0x21, 0x6d, 0xba, 0xeb,
		0xe4, 0xd2, 0x45, 0x87, 0x16, 0x40, 0x2e, 0x57, 0x74, 0xba, 0x6d, 0x33, 0x4c, 0x17, 0x15, 0x30,
		0xba, 0xb3, 0xf2, 0xab, 0xa2, 0x66, 0x2f, 0xf6, 0xb5, 0x33, 0x29, 0xb1, 0xab, 0x05, 0x70, 0x15,
		0x07, 0xae, 0xc3, 0x6a, 0x9a, 0x8e, 0x67, 0x47, 0x91, 0x38, 0x6a, 0x9d, 0x93, 0x01, 0xc8, 0x0a,
		0xc8, 0x0a, 0xf2, 0x28, 0xef, 0xe4, 0x51, 0xfb, 0xe6, 0xec, 0xd3, 0xd7, 0x76, 0xf3, 0xe6, 0xf7,
		0xce, 0x4d, 0xb3, 0xdd, 0xea, 0x9c, 0x9c, 0x37, 0x6f, 0x6f, 0x35, 0x21, 0x8e, 0xe2, 0xa1, 0x8d,
		0x46, 0x55, 0x29, 0x17, 0x3c, 0x95, 0x6d, 0x61, 0x28, 0xda, 0x8c, 0xa4, 0xae, 0xcf, 0x50, 0x74,
		0x19, 0x88, 0x46, 0xea, 0x55, 0xd1, 0x47, 0xbd, 0x2c, 0x7d, 0x56, 0xc5, 0xd2, 0x67, 0x55, 0xaa,
		0xfa, 0xac, 0x4a, 0x55, 0x9f, 0x55, 0xa9, 0xe9, 0xb3, 0x2a, 0x35, 0x7d, 0x56, 0xa5, 0x5e, 0xd6,
		0x68, 0x28, 0xda, 0x8c, 0x44, 0x9f, 0xa1, 0x1c, 0xe8, 0xa3, 0x5f, 0x07, 0xfa, 0xac, 0x4a, 0x43,
		0x9f, 0x55, 0x69, 0xe8, 0xb3, 0x2a, 0x87, 0xfa, 0xac, 0xca, 0xa1, 0x3e, 0xab, 0x72, 0xa4, 0xcf,
		0xaa, 0x1c, 0xe9, 0xb3, 0x2a, 0x9a, 0x8c, 0xc3, 0xda, 0xab, 0xeb, 0x32, 0x12, 0x7d, 0xa8, 0x3c,
		0x4b, 0xa3, 0x91, 0x68, 0xb3, 0xe3, 0x2d, 0x7d, 0x18, 0x30, 0x4b, 0x9f, 0x50, 0xc5, 0xd2, 0x68,
		0xaf, 0xe8, 0xc3, 0x80, 0x59, 0xfa, 0x30, 0x60, 0x96, 0x3e, 0x0c, 0x98, 0xa5, 0x0f, 0x03, 0x66,
		0xe9, 0xc3, 0x80, 0x59, 0xfa, 0x30, 0x60, 0x1a, 0x19, 0x30, 0x7d, 0x18, 0x30, 0x4b, 0x1f, 0x06,
		0xcc, 0xd2, 0x87, 0x01, 0xb3, 0xf4, 0x61, 0xc0, 0x2c, 0x7d, 0x18, 0x30, 0x4b, 0x1f, 0x06, 0xcc,
		0xd2, 0x87, 0x01, 0xb3, 0xf4, 0x61, 0xc0, 0x2c, 0x7d, 0x18, 0xb0, 0xaa, 0x3e, 0x7c, 0x4b, 0x55,
		0xa3, 0x91, 0xe8, 0xa3, 0x5f, 0xfa, 0xf0, 0x2d, 0x55, 0x7d, 0xf8, 0x96, 0xaa, 0x3e, 0x7c, 0x8b,
		0x3e, 0x81, 0xbd, 0x3e, 0x71, 0x7d, 0x4d, 0x9b, 0x81, 0x68, 0xa3, 0x5c, 0xfa, 0xd0, 0x13, 0xfa,
		0xc4, 0xf4, 0xfa, 0x84, 0xf4, 0xfa, 0x44, 0xf4, 0xfa, 0x04, 0xf4, 0xfa, 0xc4, 0xf3, 0xfa, 0x84,
		0xf3, 0xfa, 0x44, 0xf3, 0xfa, 0x04, 0xf3, 0x92, 0xb1, 0x3c, 0x4a, 0xb6, 0xe4, 0xff, 0xe6, 0x2b,
		0x67, 0x11, 0x37, 0x23, 0xf7, 0xd1, 0xb7, 0x3d, 0xf1, 0xab, 0xaf, 0xf3, 0x42, 0x70, 0xf7, 0xf5,
		0x2d, 0x31, 0xb8, 0xfb, 0xba, 0xa5, 0xad, 0x2c, 0x7f, 0xf7, 0xf5, 0x3e, 0x08, 0x3c, 0x66, 0xfb,
		0x32, 0xf7, 0x5e, 0x2b, 0xb0, 0x56, 0x12, 0xd6, 0x2a, 0x74, 0xef, 0xcd, 0x7e, 0x18, 0xf0, 0xc0,
		0x09, 0x64, 0xec, 0xd5, 0x82, 0x18, 0x58, 0x2c, 0x58, 0x2c, 0xdc, 0xd6, 0x7f, 0xdd, 0x6a, 0xe5,
		0xe9, 0xb6, 0xbe, 0x8e, 0x45, 0x1e, 0x2b, 0xe5, 0xf2, 0x97, 0x56, 0xe1, 0x2b, 0x3c, 0xc6, 0xa3,
		0xe8, 0x5c, 0x9c, 0x7f, 0xd1, 0x60, 0x20, 0x5f, 0x5a, 0x9d, 0xf3, 0xe6, 0xa5, 0x1e, 0x03, 0xf9,
		0xbb, 0x0e, 0x03, 0xd1, 0x60, 0x7b, 0xd4, 0xb4, 0xd8, 0xe4, 0x35, 0x1d, 0x06, 0x71, 0xa8, 0xc5,
		0x52, 0x7c, 0x3e, 0x6f, 0xfd, 0xe3, 0xaa, 0xf8, 0x75, 0x81, 0x4f, 0x2a, 0x47, 0x96, 0x06, 0xa3,
		0xa8, 0x1d, 0x6a, 0x30, 0x88, 0xc6, 0x81, 0x06, 0xa3, 0x38, 0xfd, 0x6a, 0x69, 0x31, 0x88, 0x96,
		0x0e, 0xa3, 0xa8, 0xea, 0x30, 0x88, 0x9a, 0x0e, 0x83, 0x38, 0xb9, 0xd4, 0x61, 0x14, 0xb1, 0xd3,
		0xeb, 0x9c, 0x7c, 0xba, 0xd1, 0x66, 0x2c, 0x5f, 0x3e, 0x5f, 0x6b, 0x50, 0xdb, 0xff, 0xf6, 0xec,
		0x8b, 0x06, 0xa3, 0xf8, 0x5a, 0x69, 0xe9, 0x30, 0x0a, 0x4b, 0x8b, 0x41, 0x68, 0xb1, 0x14, 0x55,
		0x1d, 0x06, 0x51, 0xd3, 0x61, 0x10, 0x1a, 0xb8, 0xbf, 0xdb, 0xf6, 0x45, 0xe5, 0x40, 0x87, 0x51,
		0x58, 0x75, 0x2d, 0x86, 0x71, 0x50, 0x43, 0x7a, 0x44, 0xf1, 0x0e, 0x1c, 0xdf, 0x11, 0x4e, 0x84,
		0xe8, 0x04, 0x94, 0x22, 0xe7, 0x89, 0xf5, 0xec, 0xbe, 0xcd, 0x9f, 0x62, 0x85, 0xda, 0x0f, 0xfa,
		0xcc, 0x77, 0x86, 0x47, 0x84, 0xc3, 0x83, 0x28, 0xd7, 0xb7, 0x3d, 0xb3, 0xcb, 0x9e, 0x5d, 0x87,
		0xed, 0x2f, 0xff, 0x7d, 0xa9, 0x5f, 0x5d, 0xb4, 0x3f, 0xfe, 0x61, 0x7f, 0xf4, 0x7c, 0x32, 0x8d,
		0x7c, 0x7b, 0x12, 0x12, 0x4c, 0x40, 0x89, 0xf1, 0x27, 0x16, 0xfa, 0x2c, 0x79, 0xd3, 0x85, 0xe9,
		0x0e, 0x9a, 0x3e, 0x99, 0x70, 0x9a, 0x27, 0x07, 0x51, 0x09, 0x3f, 0x9e, 0xf6, 0xb4, 0x55, 0xe4,
		0x94, 0x55, 0xf2, 0x74, 0x55, 0xf4, 0x54, 0x55, 0xfa, 0x34, 0x55, 0xfa, 0x14, 0x55, 0xfe, 0xf4,
		0x94, 0x76, 0x0b, 0x9e, 0xba, 0x61, 0xba, 0x85, 0x73, 0x26, 0xda, 0x21, 0x98, 0x3f, 0x30, 0x7e,
		0x5e, 0x2c, 0x71, 0xa0, 0x82, 0xc4, 0x81, 0xcc, 0x54, 0x9d, 0x4c, 0xe5, 0xe9, 0x54, 0x3f, 0x1b,
		0xb7, 0x9c, 0x76, 0x4b, 0x4c, 0x1f, 0xb4, 0xbd, 0xc8, 0xec, 0x32, 0xcf, 0x7e, 0x91, 0x3f, 0xb1,
		0x9f, 0x89, 0x12, 0x9c, 0xeb, 0x59, 0x7f, 0x93, 0x6f, 0x32, 0xbd, 0xa5, 0xc4, 0x70, 0x96, 0xe0,
		0x3b, 0x8b, 0x65, 0x07, 0x49, 0x6f, 0x76, 0x8a, 0x4d, 0x4f, 0xbc, 0xf9, 0xa9, 0x8c, 0x00, 0xb9,
		0x31, 0x20, 0x37, 0x0a, 0xf4, 0xc6, 0x41, 0x2e, 0x46, 0x10, 0xee, 0x9f, 0x25, 0x9a, 0x6d, 0xb4,
		0xa2, 0x39, 0xc2, 0x6d, 0xec, 0x97, 0xf7, 0x51, 0x43, 0x42, 0x84, 0x5c, 0x5b, 0x7b, 0x9a, 0x88,
		0xd1, 0xa0, 0x6a, 0x73, 0x3f, 0x15, 0x46, 0xd4, 0xee, 0x7e, 0x2a, 0x8f, 0xba, 0x15, 0xfb, 0x4c,
		0x17, 0xa8, 0x5a, 0xb2, 0x13, 0x84, 0xfd, 0xb3, 0xa5, 0x20, 0x68, 0x87, 0xbf, 0xb2, 0x14, 0x54,
		0x6d, 0xf1, 0x8b, 0xb8, 0x26, 0xef, 0xb6, 0xf3, 0xf4, 0x5d, 0xa6, 0x86, 0x51, 0x92, 0xe4, 0xa0,
		0x27, 0x3b, 0xc4, 0x27, 0x50, 0xa4, 0x5b, 0x9d, 0xe3, 0xb9, 0xcc, 0xe7, 0xa6, 0xed, 0x45, 0xf2,
		0xa0, 0x70, 0x4e, 0xd6, 0x36, 0x51, 0xa1, 0x5c, 0x53, 0x6d, 0x80, 0x43, 0x80, 0x43, 0x80, 0x43,
		0x51, 0xcd, 0x61, 0xfe, 0xa0, 0xc7, 0xc2, 0x91, 0x39, 0x95, 0x47, 0x88, 0x15, 0x99, 0xc6, 0xa5,
		0x52, 0xcd, 0x8f, 0x67, 0x53, 0x43, 0xd1, 0x04, 0x79, 0x2e, 0x60, 0x95, 0x6f, 0x86, 0x3c, 0x15,
		0x36, 0x6c, 0x8a, 0x7c, 0xde, 0xbc, 0x6d, 0xdd, 0x74, 0x6e, 0x7f, 0xfb, 0xda, 0x3e, 0xbd, 0xfa,
		0xfb, 0x25, 0x85, 0xd8, 0x61, 0x8b, 0x64, 0x39, 0x1b, 0x4a, 0x84, 0xea, 0x08, 0x9a, 0xfe, 0xae,
		0x3a, 0x85, 0x63, 0xc3, 0x22, 0x98, 0xa4, 0xa5, 0x69, 0x97, 0xea, 0x8d, 0x3b, 0xdb, 0x44, 0xe3,
		0x1e, 0xb9, 0x5b, 0xc2, 0x5d, 0xbf, 0x80, 0xbb, 0x04, 0x71, 0x57, 0xae, 0x4f, 0xe1, 0x14, 0x1c,
		0x46, 0x4d, 0x0e, 0x78, 0x52, 0x9d, 0x4a, 0xa5, 0x9f, 0xad, 0x34, 0xb7, 0x07, 0x3d, 0xaf, 0xdb,
		0x17, 0x27, 0xfd, 0x87, 0x4f, 0x83, 0xf2, 0x57, 0x0c, 0xe8, 0x40, 0xf9, 0x8b, 0xda, 0x00, 0x61,
		0xca, 0x5f, 0xf0, 0x34, 0x6c, 0x35, 0xb4, 0x13, 0x39, 0x15, 0x93, 0xdc, 0x2a, 0x88, 0x8d, 0x10,
		0x1b, 0x6d, 0x1f, 0xa7, 0x88, 0x6e, 0xbd, 0xa9, 0x00, 0xe6, 0xdb, 0xf7, 0x1e, 0xeb, 0xca, 0x2f,
		0xf5, 0x2c, 0xc6, 0x1a, 0x09, 0x94, 0x5c, 0x17, 0x0a, 0xae, 0x65, 0x2a, 0x6c, 0xc8, 0x38, 0xca,
		0x05, 0x0b, 0x77, 0x92, 0xe3, 0x91, 0x23, 0x60, 0xc8, 0x8c, 0x0d, 0xa5, 0xd1, 0x51, 0x64, 0x7c,
		0xa8, 0x8d, 0x90, 0x32, 0x63, 0xa4, 0xcc, 0x28, 0xa9, 0x33, 0x4e, 0xf2, 0x61, 0x18, 0x49, 0xe0,
		0x2c, 0x4b, 0xe8, 0xac, 0x68, 0x9e, 0x78, 0x75, 0x94, 0x8d, 0x68, 0xa0, 0xb2, 0xd5, 0x29, 0x22,
		0x8a, 0x3f, 0xd5, 0xc5, 0xa1, 0x04, 0x01, 0xbd, 0x04, 0x3e, 0x89, 0xfc, 0x20, 0xe8, 0x53, 0xf0,
		0x5e, 0x53, 0x0d, 0x9a, 0x4a, 0x84, 0xdf, 0x82, 0xdf, 0x82, 0xdf, 0x82, 0xdf, 0x82, 0xdf, 0x82,
		0xdf, 0xca, 0x41, 0x80, 0x47, 0x45, 0x44, 0xab, 0xe4, 0x59, 0x3d, 0xaf, 0xdb, 0x17, 0x22, 0x5b,
		0xc5, 0xa7, 0x54, 0x24, 0x99, 0xc0, 0x67, 0xee, 0xe3, 0xd3, 0x7d, 0x10, 0x12, 0xe4, 0x12, 0xcc,
		0x44, 0x6d, 0x99, 0x73, 0xb2, 0xc0, 0x39, 0x81, 0x73, 0x2a, 0x1a, 0xe7, 0x34, 0xd9, 0x3d, 0x74,
		0xe8, 0x7d, 0x2a, 0x91, 0x06, 0xed, 0x56, 0x80, 0x76, 0x81, 0x76, 0x77, 0x1d, 0xed, 0xca, 0x6e,
		0xf3, 0xa9, 0x20, 0xc9, 0x53, 0x9e, 0x8d, 0x8a, 0x2c, 0x75, 0xea, 0xa3, 0x68, 0xeb, 0x93, 0x9b,
		0x00, 0x15, 0xa6, 0x40, 0xb1, 0x49, 0x50, 0x65, 0x1a, 0x94, 0x9b, 0x08, 0xe5, 0xa6, 0x42, 0xbd,
		0xc9, 0xa0, 0x31, 0x1d, 0x44, 0x26, 0x44, 0x55, 0x54, 0x98, 0x5d, 0x50, 0x33, 0xc5, 0xf9, 0xd3,
		0x9f, 0xa4, 0xe2, 0x1c, 0xfa, 0x55, 0xa2, 0xb8, 0x99, 0xe0, 0x0c, 0x22, 0x1e, 0xf4, 0x4c, 0xee,
		0x3d, 0x47, 0x0a, 0x8c, 0xf4, 0x9c, 0xf0, 0x9c, 0x5b, 0x6a, 0xab, 0x18, 0x96, 0x5a, 0x20, 0x1b,
		0x08, 0x56, 0x9a, 0xc2, 0x4a, 0x0f, 0x27, 0x5e, 0x53, 0x0b, 0x4d, 0x05, 0xf6, 0xa6, 0x02, 0xb9,
		0xf7, 0x4c, 0xaf, 0x52, 0xd3, 0x2a, 0xfa, 0xde, 0x33, 0xb5, 0x32, 0xd1, 0x1a, 0x15, 0x65, 0x30,
		0x50, 0xa5, 0x91, 0xc9, 0xc0, 0xd8, 0xa8, 0x36, 0x3a, 0x99, 0x19, 0x9f, 0xcc, 0x8c, 0x50, 0x36,
		0xc6, 0x88, 0xd6, 0x28, 0x11, 0x1b, 0x27, 0x65, 0x46, 0x4a, 0x55, 0x84, 0x9a, 0x4d, 0xc4, 0x9a,
		0x91, 0x09, 0x53, 0x6e, 0xca, 0xb2, 0x30, 0x69, 0x19, 0x9a, 0xb6, 0xac, 0x4c, 0x5c, 0xe6, 0xa6,
		0x2e, 0x73, 0x93, 0x97, 0xad, 0xe9, 0x53, 0x63, 0x02, 0x15, 0x99, 0x42, 0xd5, 0x91, 0x75, 0x3e,
		0x22, 0xed, 0x59, 0xe8, 0xb8, 0xcf, 0xbd, 0x67, 0xd2, 0xc8, 0x5b, 0xfd, 0xaa, 0x2b, 0x58, 0xf1,
		0x52, 0x30, 0x70, 0xd5, 0x3b, 0xa9, 0xf8, 0x4b, 0xd4, 0x7a, 0xa8, 0x32, 0x3c, 0x14, 0x3c, 0x14,
		0x3c, 0xd4, 0x6e, 0x78, 0x28, 0xb2, 0xa4, 0xa9, 0x37, 0x77, 0x8c, 0xc7, 0xec, 0x07, 0xb1, 0x66,
		0x63, 0xa9, 0x21, 0x76, 0x43, 0xe1, 0x77, 0x5c, 0x8f, 0x9d, 0xec, 0xde, 0xde, 0x7e, 0xc4, 0x6d,
		0xce, 0xf6, 0x63, 0x83, 0xbc, 0xdb, 0x4e, 0xcf, 0x8c, 0x06, 0xf7, 0x5c, 0xa5, 0x1e, 0xcd, 0x3b,
		0xbf, 0xe9, 0x97, 0xc1, 0x09, 0xc2, 0x09, 0xc2, 0x09, 0xc2, 0x09, 0xc2, 0x09, 0xe6, 0xc3, 0x09,
		0x4e, 0x0d, 0xf3, 0x0e, 0x3b, 0xc3, 0xe1, 0x64, 0xa8, 0x77, 0x83, 0xa3, 0xaf, 0x29, 0x38, 0x4f,
		0x69, 0xc1, 0x01, 0xc2, 0x01, 0xc2, 0x01, 0xe6, 0xc2, 0x01, 0xaa, 0x3a, 0xba, 0xc9, 0x84, 0x1a,
		0x5b, 0x17, 0x25, 0xa8, 0x56, 0x5e, 0xb5, 0x51, 0x42, 0x66, 0xd1, 0x42, 0x96, 0x46, 0x73, 0x0b,
		0xc6, 0x33, 0x6b, 0x23, 0xba, 0x35, 0x63, 0xba, 0x35, 0xa3, 0xba, 0x1d, 0xe3, 0xaa, 0xd6, 0xc8,
		0x2a, 0x36, 0xb6, 0xd9, 0x45, 0x1d, 0x6b, 0x70, 0x63, 0x28, 0x7f, 0x87, 0x3a, 0x15, 0x88, 0x3c,
		0x7c, 0x57, 0xcc, 0xf5, 0x57, 0xb8, 0xf6, 0x99, 0x30, 0x66, 0xeb, 0x7c, 0xa2, 0x62, 0xe6, 0x0c,
		0xbe, 0x11, 0xbe, 0x11, 0xbe, 0x11, 0xbe, 0x11, 0xbe, 0x11, 0xbe, 0x51, 0x78, 0x6e, 0xb2, 0x75,
		0x8a, 0xf0, 0x86, 0xf0, 0x86, 0xf0, 0x86, 0xf0, 0x86, 0xf0, 0x86, 0xcb, 0x3b, 0x4e, 0xb6, 0x4d,
		0x53, 0x5a, 0xf3, 0x58, 0xcd, 0xe0, 0xab, 0x68, 0xda, 0x3e, 0x25, 0xfd, 0x2f, 0x1b, 0xfb, 0x61,
		0x50, 0xb7, 0x91, 0x4a, 0xfc, 0xa5, 0x93, 0x1e, 0x47, 0x56, 0xa5, 0xd6, 0xa8, 0x1d, 0x56, 0x0f,
		0x6a, 0x87, 0x1f, 0xb3, 0x7d, 0x01, 0x55, 0xbd, 0x90, 0x92, 0xef, 0x95, 0x59, 0xcf, 0xa4, 0xd8,
		0x7c, 0x66, 0xf6, 0xe5, 0xbf, 0x3e, 0x66, 0xa8, 0x5a, 0xf6, 0xcf, 0x1c, 0xa8, 0x56, 0x63, 0x87,
		0x55, 0x8b, 0xa6, 0x1d, 0x57, 0x3e, 0xfc, 0x64, 0x76, 0xdf, 0x72, 0x87, 0xd8, 0x6a, 0x45, 0xa9,
		0x9e, 0xc7, 0xdb, 0x2a, 0xa3, 0xe0, 0x6a, 0xf4, 0x75, 0x88, 0xae, 0x10, 0x5d, 0x21, 0xba, 0x42,
		0x74, 0x85, 0xe8, 0x6a, 0xbe, 0xae, 0xa8, 0xeb, 0xdb, 0xe1, 0x4b, 0x86, 0xe1, 0xd5, 0x51, 0x51,
		0xdd, 0x21, 0x6e, 0xfb, 0xad, 0xf9, 0x9e, 0x3c, 0xdc, 0xf6, 0x1b, 0xa5, 0x20, 0xee, 0x70, 0xaa,
		0x67, 0x36, 0x17, 0x1e, 0x70, 0xd3, 0x61, 0xab, 0x58, 0x09, 0x89, 0x9e, 0x05, 0xc4, 0x42, 0x48,
		0xf4, 0xdc, 0x22, 0xd6, 0xd1, 0xfe, 0xa6, 0x43, 0xa1, 0xae, 0x38, 0xe4, 0xba, 0x5e, 0xcc, 0xff,
		0xb0, 0x97, 0x89, 0x8b, 0x33, 0x82, 0x81, 0x6b, 0xa8, 0x4b, 0x51, 0x2a, 0x9d, 0xbb, 0x11, 0x6f,
		0x72, 0xae, 0xa8, 0x3e, 0xcd, 0x85, 0xeb, 0xb7, 0x3c, 0x16, 0x5b, 0x1c, 0x45, 0x5c, 0x61, 0xe9,
		0xc2, 0xfe, 0x39, 0xf7, 0x0d, 0x95, 0xc3, 0x5a, 0xed, 0xa0, 0x51, 0xab, 0x95, 0x1b, 0xd5, 0x46,
		0xf9, 0xa8, 0x5e, 0xaf, 0x1c, 0x54, 0xea, 0x0a, 0xbe, 0xf4, 0x2a, 0xec, 0xb2, 0x90, 0x75, 0x3f,
		0xc5, 0xab, 0xe4, 0x0f, 0x3c, 0x4f, 0xe5, 0x57, 0x7c, 0x8d, 0x58, 0xa8, 0x84, 0xec, 0xa4, 0x56,
		0x5a, 0xc5, 0x18, 0x3f, 0x0f, 0xd8, 0xbe, 0xa4, 0xe4, 0x62, 0x54, 0x38, 0x70, 0xb8, 0x3f, 0xf6,
		0x0d, 0xed, 0xf1, 0xab, 0x9f, 0x0e, 0xdf, 0xbc, 0x73, 0x32, 0x7a, 0xd1, 0x4e, 0x6b, 0xfc, 0xa2,
		0x9d, 0x73, 0xaf, 0xdb, 0xef, 0x5c, 0x8e, 0x5f, 0xaf, 0xd3, 0xf6, 0x9e, 0x69, 0x0d, 0xee, 0x2f,
		0xd4, 0x71, 0x2d, 0x92, 0x4e, 0xea, 0x54, 0xcc, 0xd5, 0xed, 0xd2, 0xd7, 0x70, 0x75, 0xbb, 0xc4,
		0xa5, 0x5b, 0xcb, 0x28, 0xb2, 0x9d, 0xf7, 0xa8, 0x0e, 0x45, 0xb6, 0x8b, 0x66, 0x9c, 0xc9, 0x23,
		0x2f, 0x85, 0x91, 0x96, 0x8a, 0xc8, 0x6a, 0x35, 0x92, 0x72, 0xbb, 0x3a, 0x59, 0x76, 0xda, 0xab,
		0xdf, 0x4a, 0xae, 0x7a, 0xef, 0x7a, 0x69, 0x6e, 0xd8, 0x77, 0xd8, 0x77, 0x65, 0xf6, 0x9d, 0xbc,
		0x44, 0xb7, 0xfd, 0xc8, 0xd4, 0x95, 0xe8, 0x8e, 0x85, 0xab, 0x29, 0xd1, 0x5d, 0x46, 0x89, 0x6e,
		0x94, 0xe8, 0xce, 0x93, 0x21, 0xda, 0x64, 0x90, 0x76, 0xb1, 0x44, 0xb7, 0x32, 0xfa, 0x7f, 0xaa,
		0xf1, 0x03, 0xd7, 0xe7, 0x07, 0x35, 0x15, 0x0a, 0x3f, 0xb6, 0x2f, 0x0a, 0xd2, 0x8c, 0x15, 0x67,
		0x86, 0x2b, 0x3c, 0x6c, 0xc9, 0x22, 0xf3, 0x7b, 0x9a, 0x8e, 0xab, 0x3a, 0xf7, 0x2d, 0xeb, 0xac,
		0xdb, 0xec, 0xb2, 0x6c, 0x55, 0x66, 0x75, 0x66, 0x91, 0xa1, 0x3d, 0x55, 0x81, 0x6c, 0x4e, 0x1e,
		0x76, 0x45, 0x2b, 0x0a, 0x72, 0x8a, 0x78, 0x97, 0x57, 0xf2, 0x9d, 0x30, 0x8c, 0x73, 0x9e, 0xec,
		0x28, 0x72, 0x23, 0x93, 0x90, 0x9f, 0x5d, 0x71, 0x8d, 0x73, 0xdf, 0x01, 0xe8, 0x0d, 0xe8, 0x0d,
		0xe8, 0x0d, 0xe8, 0x4d, 0xaa, 0xf1, 0xca, 0x2a, 0x18, 0x28, 0xaa, 0x58, 0x90, 0x77, 0x4f, 0x60,
		0x2a, 0x49, 0xf1, 0x5c, 0xe3, 0x0e, 0x4c, 0x15, 0x29, 0x2f, 0xf0, 0x09, 0xf0, 0x09, 0xf0, 0x09,
		0xbb, 0xee, 0x13, 0xd4, 0x1a, 0x99, 0x05, 0xe7, 0x50, 0x53, 0x20, 0xbb, 0xe5, 0x0f, 0x7a, 0xea,
		0xf6, 0x54, 0x3b, 0xb8, 0x1d, 0xb9, 0x4c, 0xa5, 0x09, 0xb1, 0xe5, 0x78, 0x1d, 0x4e, 0x7e, 0x6b,
		0xde, 0xde, 0x9e, 0xdd, 0x76, 0x4e, 0xae, 0x2e, 0xae, 0xaf, 0x2e, 0x5b, 0x97, 0x6d, 0x95, 0x79,
		0xb1, 0x95, 0xf8, 0x1b, 0xcf, 0x2e, 0xdb, 0xad, 0x9b, 0xcf, 0xcd, 0x93, 0x56, 0xa7, 0x79, 0x7e,
		0xd6, 0xbc, 0x55, 0xf9, 0x7d, 0x56, 0xfc, 0x7d, 0xd7, 0x57, 0x37, 0xed, 0x6c, 0x86, 0x57, 0x8d,
		0xbf, 0xee, 0xa2, 0x79, 0xd2, 0x69, 0x9e, 0x9e, 0xde, 0xb4, 0x6e, 0x95, 0x0e, 0xad, 0x16, 0x7f,
		0xd7, 0x65, 0xab, 0xfd, 0xf7, 0xab, 0x9b, 0xff, 0xc9, 0xe2, 0xfb, 0xea, 0x8b, 0x4b, 0x77, 0xd9,
		0xbc, 0x68, 0xa9, 0xfc, 0xba, 0x83, 0xf8, 0xeb, 0xce, 0xaf, 0x4e, 0x9a, 0xe7, 0xa5, 0x62, 0xa5,
		0xb1, 0x07, 0x67, 0x43, 0xc7, 0xa1, 0x70, 0xdb, 0xae, 0xee, 0x58, 0xa5, 0xd4, 0xd3, 0xca, 0x7e,
		0x55, 0x56, 0x81, 0x7d, 0xe9, 0xdb, 0x86, 0x2a, 0x76, 0x6c, 0x28, 0xa4, 0xf1, 0xc6, 0x0a, 0x76,
		0x6c, 0x1c, 0xa8, 0xa4, 0x41, 0xe7, 0xec, 0x81, 0xd2, 0x72, 0x32, 0x2b, 0xd6, 0xe0, 0xd8, 0xa8,
		0xa9, 0xbc, 0x7f, 0xb0, 0x68, 0x56, 0x8f, 0x0d, 0x6b, 0x37, 0xef, 0x1e, 0xe4, 0x32, 0x56, 0x54,
		0xc9, 0x16, 0x82, 0x25, 0x44, 0x44, 0x88, 0x88, 0x10, 0x11, 0x21, 0xb5, 0xc6, 0x83, 0x25, 0xa4,
		0x18, 0xab, 0x67, 0x47, 0xdc, 0x1c, 0xf4, 0xbb, 0x2a, 0xda, 0xfd, 0xcc, 0x12, 0x7b, 0xe7, 0xbe,
		0x04, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x80, 0x16, 0x63, 0x2a, 0xce, 0xd5, 0xaa, 0x21,
		0x57, 0x6b, 0x2e, 0x42, 0xcd, 0x32, 0x57, 0xeb, 0xc8, 0xb2, 0xaa, 0xd5, 0x86, 0x55, 0xae, 0x1e,
		0x1c, 0xd6, 0x6b, 0x8d, 0x46, 0xfd, 0xb0, 0x7c, 0xa8, 0x71, 0x9e, 0x8e, 0xd2, 0xf2, 0x9b, 0xda,
		0x24, 0x6f, 0xad, 0xea, 0x44, 0x03, 0xb9, 0x5b, 0xb9, 0xe1, 0x4b, 0x0c, 0xe4, 0x6e, 0x09, 0x2e,
		0x7a, 0xcf, 0xf6, 0xed, 0xc7, 0x61, 0x71, 0x04, 0xd3, 0xee, 0x76, 0x43, 0x16, 0x45, 0xea, 0x20,
		0xf9, 0x9a, 0xef, 0x02, 0x32, 0x07, 0x32, 0x07, 0x32, 0x07, 0x32, 0x07, 0x4b, 0x53, 0x00, 0xcf,
		0xa0, 0x38, 0xa7, 0x6b, 0xd3, 0x17, 0xc2, 0x47, 0xc0, 0x47, 0xc0, 0x47, 0xc0, 0x47, 0xc0, 0x47,
		0xe4, 0xce, 0x47, 0xf4, 0x83, 0x90, 0x9b, 0x5d, 0x16, 0x39, 0xa1, 0xdb, 0x57, 0x52, 0xd6, 0x6b,
		0xba, 0x5e, 0x2b, 0xdf, 0x04, 0xaf, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xaf, 0x90, 0x4f,
		0xaf, 0xa0, 0x32, 0xbd, 0x67, 0xf2, 0x05, 0xf0, 0x01, 0xf0, 0x01, 0xf0, 0x01, 0xf0, 0x01, 0xf0,
		0x01, 0x79, 0xf5, 0x01, 0x8a, 0x29, 0xa3, 0x85, 0x6f, 0x81, 0x37, 0x80, 0x37, 0x80, 0x37, 0x80,
		0x37, 0x28, 0x8a, 0x85, 0x31, 0x70, 0x01, 0xf0, 0xed, 0x6f, 0x29, 0x67, 0x7c, 0x1d, 0xaf, 0x92,
		0xed, 0x75, 0x3c, 0x2b, 0xc3, 0xeb, 0x78, 0xd5, 0x8c, 0xaf, 0xe3, 0xd5, 0xb2, 0xbd, 0x8e, 0x37,
		0xbc, 0xfd, 0xd7, 0xfc, 0xd2, 0xba, 0x6c, 0x77, 0x4e, 0xce, 0x6e, 0x4e, 0xbe, 0x9e, 0xb5, 0x3b,
		0x67, 0xa7, 0xb8, 0xff, 0xb7, 0x6e, 0xe3, 0x2a, 0xbf, 0xff, 0xb7, 0xb2, 0x0c, 0x6a, 0xef, 0xc8,
		0xad, 0x5e, 0xff, 0x2b, 0x67, 0x79, 0xfd, 0xaf, 0xa6, 0xd5, 0xf5, 0x3f, 0x2b, 0xd3, 0xeb, 0x7f,
		0xd5, 0x2c, 0xaf, 0xff, 0x55, 0x70, 0xfd, 0x2f, 0x37, 0x01, 0x62, 0xf4, 0x12, 0x71, 0xd6, 0xcb,
		0xe6, 0xf0, 0x68, 0xcd, 0x77, 0x21, 0x58, 0x44, 0xb0, 0x88, 0x60, 0x11, 0xc1, 0x22, 0xad, 0x9d,
		0x51, 0x4f, 0x1d, 0x2a, 0x90, 0x7d, 0xce, 0xfc, 0xc7, 0x61, 0x77, 0x09, 0xdc, 0x0a, 0x59, 0xf7,
		0x25, 0xa8, 0xe0, 0x9b, 0xd3, 0x40, 0xc6, 0xc8, 0xfc, 0x12, 0x88, 0x55, 0x47, 0xc1, 0xde, 0xfc,
		0xa0, 0x64, 0x03, 0x97, 0x3e, 0xe4, 0xb0, 0xf7, 0xb8, 0xa3, 0xa0, 0x5a, 0xd0, 0x3d, 0xfc, 0x12,
		0xa0, 0x6d, 0xa0, 0x6d, 0xa0, 0x6d, 0xa0, 0x6d, 0xa0, 0x6d, 0xa0, 0x6d, 0xa0, 0x6d, 0xa0, 0x6d,
		0xa0, 0x6d, 0xa0, 0xed, 0x9d, 0x41, 0xdb, 0x9c, 0x7b, 0xea, 0x50, 0x76, 0x2c, 0x1c, 0xe8, 0x1a,
		0xe8, 0x1a, 0xe8, 0x1a, 0xe8, 0x9a, 0x54, 0xe3, 0x07, 0xae, 0xcf, 0x2b, 0x07, 0x0a, 0xd1, 0xf5,
		0x01, 0xea, 0x1b, 0x01, 0x5b, 0x03, 0x5b, 0x6f, 0x07, 0x5b, 0x1f, 0xd4, 0xeb, 0x55, 0xa0, 0x6b,
		0xa0, 0xeb, 0x2d, 0xa1, 0xeb, 0x5c, 0x35, 0x9f, 0x6e, 0xfa, 0x7e, 0xc0, 0x6d, 0xf2, 0x0c, 0x94,
		0x52, 0xe4, 0x3c, 0xb1, 0x9e, 0xdd, 0x1f, 0x77, 0xee, 0xdf, 0x0f, 0xfa, 0xcc, 0x77, 0x86, 0x18,
		0x78, 0xd8, 0xca, 0xdb, 0xf5, 0x6d, 0xcf, 0xec, 0xb2, 0x67, 0xd7, 0x61, 0xfb, 0xcb, 0x7f, 0xf7,
		0x82, 0x47, 0xd7, 0xb1, 0x3d, 0xd3, 0x79, 0xb2, 0x7d, 0x9f, 0x79, 0xd1, 0xfe, 0xf8, 0x87, 0x7d,
		0xc6, 0x9f, 0x58, 0xe8, 0x33, 0xbe, 0x1f, 0x63, 0x9e, 0x7d, 0x9f, 0xb9, 0x8f, 0x4f, 0xf7, 0x41,
		0x18, 0x4d, 0x7f, 0xda, 0x1f, 0x75, 0xbc, 0x7f, 0x97, 0x8f, 0x45, 0x92, 0x93, 0x20, 0xb9, 0xbc,
		0x31, 0xee, 0x25, 0x29, 0x05, 0x5e, 0x3a, 0x77, 0x23, 0xde, 0xe4, 0x9c, 0xa6, 0x43, 0x79, 0xec,
		0xe9, 0x5b, 0xde, 0xb0, 0xca, 0x09, 0x91, 0x49, 0x8c, 0x1d, 0xc7, 0x9c, 0x44, 0x35, 0x5d, 0x46,
		0x4b, 0x57, 0x61, 0x97, 0x85, 0xac, 0xfb, 0x29, 0x9e, 0x53, 0x7f, 0xe0, 0x79, 0x94, 0x22, 0xbf,
		0x46, 0x2c, 0x24, 0xb1, 0xd9, 0xb2, 0x2a, 0xc3, 0x7e, 0xf2, 0xd0, 0x36, 0x07, 0x7e, 0xc4, 0xed,
		0x7b, 0x8f, 0x06, 0x5f, 0x97, 0x42, 0xf6, 0xc0, 0x42, 0xe6, 0x3b, 0x74, 0xb0, 0x94, 0xd0, 0x44,
		0x4d, 0xc0, 0xfe, 0x59, 0xab, 0xd5, 0x32, 0x6e, 0x79, 0xd7, 0x38, 0x2c, 0x5b, 0x7b, 0x95, 0xe6,
		0x27, 0xd3, 0x2a, 0x57, 0x0e, 0x3e, 0x1a, 0x11, 0x1b, 0x3a, 0x70, 0xa3, 0xb1, 0x57, 0xf9, 0x68,
		0x9c, 0xb2, 0x88, 0xbb, 0xfe, 0xd0, 0x4e, 0x1a, 0xf4, 0xe5, 0xdb, 0x54, 0x85, 0xc1, 0xf3, 0xe1,
		0xef, 0x6c, 0x29, 0x88, 0xa3, 0x31, 0xd5, 0x91, 0xef, 0x42, 0xc4, 0x2b, 0xba, 0x56, 0x79, 0xf3,
		0xde, 0xef, 0xb6, 0x8b, 0x6e, 0x64, 0x6d, 0x05, 0x31, 0x6a, 0xd8, 0x06, 0x5a, 0x20, 0xd8, 0x06,
		0xa5, 0x88, 0x87, 0x03, 0x87, 0x8f, 0x33, 0x09, 0x4a, 0xed, 0xf1, 0xab, 0x9d, 0x0e, 0xdf, 0xac,
		0x73, 0x32, 0x7a, 0x91, 0x4e, 0x6b, 0xfc, 0x22, 0x9d, 0x73, 0xaf, 0xdb, 0xef, 0x5c, 0x4e, 0xbe,
		0xfe, 0xdd, 0x76, 0xf4, 0x47, 0xec, 0x49, 0x41, 0x7d, 0xa1, 0xd2, 0x93, 0x0c, 0xf5, 0x43, 0x6c,
		0x5d, 0xd2, 0xcf, 0xaa, 0xc0, 0x8c, 0x96, 0x46, 0xf8, 0x56, 0x74, 0x22, 0xe7, 0x8e, 0x8e, 0xc5,
		0xdb, 0x02, 0x4c, 0x4f, 0x87, 0x05, 0x1f, 0x9f, 0xf2, 0xe0, 0x82, 0x17, 0x2d, 0x28, 0xf8, 0xee,
		0x79, 0x5e, 0x3b, 0xe8, 0xf3, 0xa1, 0x0a, 0x49, 0x58, 0x03, 0x2a, 0xe7, 0x4d, 0xce, 0x55, 0x93,
		0x7b, 0xe6, 0x65, 0xee, 0x79, 0x3a, 0x79, 0x05, 0xb1, 0x46, 0xa7, 0xae, 0x5c, 0x18, 0x53, 0x72,
		0x82, 0x81, 0xcf, 0x59, 0x28, 0x5f, 0x25, 0x78, 0xd6, 0x65, 0x73, 0x22, 0x51, 0x36, 0xde, 0x93,
		0xda, 0x96, 0xab, 0xdb, 0x53, 0x32, 0x34, 0xa3, 0x3c, 0x96, 0x52, 0x70, 0x0c, 0x45, 0x8d, 0xb7,
		0x95, 0x1d, 0x33, 0x29, 0x03, 0xd7, 0x6a, 0x8e, 0x91, 0xb6, 0xcb, 0x79, 0xc8, 0x6e, 0xef, 0xa9,
		0xa0, 0x87, 0xd0, 0xee, 0x31, 0xb3, 0xeb, 0x46, 0x8e, 0x1d, 0xd2, 0x15, 0x72, 0x9a, 0xea, 0xf1,
		0xa2, 0x78, 0xa2, 0xf5, 0xa4, 0x3d, 0xb7, 0x26, 0x3f, 0xaf, 0x56, 0x71, 0x4e, 0xad, 0xf0, 0x7c,
		0x3a, 0x8b, 0x80, 0x5c, 0xc9, 0x79, 0x74, 0xb6, 0xd1, 0x38, 0xf9, 0xf9, 0x73, 0xbe, 0xb8, 0x71,
		0xf2, 0x73, 0xe6, 0x65, 0xb7, 0x4f, 0xda, 0x42, 0x67, 0x62, 0x02, 0x08, 0xf3, 0x36, 0x15, 0x1d,
		0x29, 0x2b, 0x38, 0xb8, 0x57, 0x79, 0x84, 0xac, 0xfa, 0xe8, 0x38, 0xb3, 0xb3, 0x42, 0xf5, 0x67,
		0x84, 0x0a, 0x8e, 0x88, 0x95, 0x1e, 0x0d, 0x4f, 0x97, 0x56, 0xcd, 0xc1, 0x81, 0xee, 0xab, 0x9d,
		0xd3, 0x13, 0xd6, 0xbb, 0xbc, 0x1c, 0x01, 0x7e, 0xa4, 0xc2, 0xa2, 0x2c, 0x0c, 0x83, 0xd0, 0x24,
		0xb4, 0x71, 0x4b, 0x60, 0x74, 0x2a, 0x1f, 0x68, 0x14, 0x68, 0x14, 0x68, 0x14, 0x68, 0x14, 0x68,
		0x14, 0x68, 0x14, 0x68, 0x14, 0x68, 0x14, 0x68, 0x14, 0x68, 0x74, 0x03, 0x1a, 0x0d, 0x06, 0x5c,
		0x2d, 0x1c, 0x8d, 0xbf, 0x00, 0x78, 0x14, 0x78, 0x14, 0x78, 0x14, 0x78, 0x14, 0x78, 0x14, 0x78,
		0x14, 0x78, 0x14, 0x78, 0x14, 0x78, 0x14, 0x78, 0x74, 0x05, 0x8f, 0xaa, 0xe3, 0x45, 0xc1, 0x88,
		0x02, 0x81, 0x02, 0x81, 0x02, 0x81, 0x02, 0x81, 0x02, 0x81, 0x02, 0x81, 0x02, 0x81, 0x02, 0x81,
		0x02, 0x81, 0xae, 0x43, 0xa0, 0x0a, 0xb9, 0x50, 0xb0, 0xa0, 0xc0, 0xa0, 0xc0, 0xa0, 0xc0, 0xa0,
		0xc0, 0xa0, 0xc0, 0xa0, 0xc0, 0xa0, 0xc0, 0xa0, 0xc0, 0xa0, 0xc0, 0xa0, 0x4b, 0x8b, 0xe8, 0xd9,
		0x11, 0x37, 0x1d, 0x8f, 0xd9, 0x21, 0x3d, 0x08, 0x9d, 0x93, 0x0d, 0x14, 0x0a, 0x14, 0x0a, 0x14,
		0xba, 0x63, 0x28, 0xb4, 0x6b, 0x73, 0x66, 0xda, 0x7e, 0xd7, 0xe4, 0x2e, 0x69, 0x2b, 0x0b, 0x15,
		0x65, 0xe6, 0x4b, 0xd7, 0x36, 0xe7, 0x2c, 0xf4, 0xc9, 0xc1, 0x68, 0xe9, 0xfb, 0xf7, 0xee, 0x1f,
		0xb5, 0x5f, 0x66, 0xfc, 0x87, 0x35, 0xf9, 0xa3, 0x3d, 0xfa, 0xe3, 0x78, 0xe1, 0x8f, 0xf7, 0xdf,
		0xbf, 0xef, 0x7d, 0xff, 0xde, 0xfd, 0xaf, 0x0f, 0x7f, 0x7d, 0xff, 0xcf, 0x3f, 0xbf, 0x7d, 0xff,
		0xfe, 0x5f, 0xdf, 0xbf, 0x9b, 0x77, 0x0b, 0x9f, 0xf8, 0x50, 0x82, 0x0f, 0x5b, 0x33, 0xc3, 0xdc,
		0x7b, 0x56, 0x77, 0xe3, 0x76, 0x5e, 0x38, 0xbc, 0x18, 0xbc, 0x18, 0xbc, 0x18, 0xb8, 0x14, 0x70,
		0x29, 0xe0, 0x52, 0xc0, 0xa5, 0x80, 0x4b, 0x01, 0x97, 0x02, 0x1c, 0xba, 0x84, 0x43, 0x07, 0xfe,
		0x0f, 0x3f, 0xf8, 0xb7, 0xaf, 0x06, 0x87, 0x4e, 0x84, 0x03, 0x87, 0x02, 0x87, 0x02, 0x87, 0x02,
		0x87, 0x02, 0x87, 0x02, 0x87, 0x02, 0x87, 0x02, 0x87, 0x02, 0x87, 0xea, 0x83, 0x43, 0x51, 0x9b,
		0x3b, 0x4d, 0xed, 0xe5, 0x61, 0x3d, 0xe2, 0x7d, 0xa2, 0x4a, 0xa8, 0x86, 0x60, 0x5d, 0xee, 0x93,
		0xc9, 0xd7, 0x6f, 0xab, 0x2e, 0xb7, 0x44, 0x01, 0x62, 0xe6, 0xdb, 0xf7, 0x1e, 0xeb, 0xd2, 0x55,
		0xa5, 0x9d, 0x08, 0x94, 0x2d, 0xc8, 0xc9, 0x1e, 0xec, 0x81, 0xc7, 0x49, 0x70, 0x44, 0x69, 0x68,
		0xca, 0xe4, 0x56, 0xe7, 0x8e, 0xa6, 0xc8, 0x6e, 0x59, 0xf3, 0x22, 0xbb, 0x04, 0x35, 0xb1, 0x55,
		0xc5, 0x53, 0xc5, 0x2f, 0xb4, 0x2b, 0x5f, 0x33, 0x3b, 0x1f, 0x5e, 0x86, 0x2c, 0x46, 0x9a, 0x6a,
		0xde, 0x7d, 0x10, 0x78, 0xcc, 0xa6, 0x20, 0x46, 0xa6, 0x67, 0xcb, 0x95, 0x02, 0x1a, 0xf3, 0xc8,
		0x0f, 0x82, 0xbe, 0xeb, 0x3f, 0xd2, 0x59, 0xf3, 0xa9, 0x44, 0x98, 0x73, 0x98, 0x73, 0x98, 0x73,
		0x98, 0x73, 0x98, 0xf3, 0x2c, 0x9e, 0xd4, 0xbe, 0x67, 0x8e, 0x44, 0xbb, 0x45, 0x81, 0x7e, 0x39,
		0xef, 0x14, 0xce, 0xbd, 0xec, 0x9c, 0x2b, 0x9f, 0xeb, 0x92, 0x50, 0xb7, 0xa0, 0xb4, 0x41, 0x70,
		0xba, 0xb5, 0x4c, 0xbe, 0x22, 0x29, 0x56, 0x43, 0xb0, 0xc7, 0x91, 0x54, 0x6f, 0x23, 0xc1, 0xe6,
		0x29, 0xc2, 0xbd, 0x8c, 0x64, 0x1c, 0x3d, 0x91, 0x63, 0x97, 0x75, 0xe4, 0x64, 0x8e, 0x9b, 0xcc,
		0x51, 0xd3, 0x39, 0x66, 0xb5, 0x96, 0x46, 0xb4, 0x49, 0x49, 0xc9, 0xf6, 0x22, 0xb3, 0xcb, 0x3c,
		0xfb, 0x45, 0xbe, 0x01, 0xd8, 0x4c, 0x94, 0x68, 0x23, 0x25, 0x82, 0x48, 0xa0, 0x54, 0x16, 0x73,
		0x1d, 0x77, 0x72, 0x8d, 0xcb, 0xca, 0xb2, 0x8d, 0xcb, 0xca, 0x68, 0x5c, 0xa6, 0x1a, 0xc5, 0xa3,
		0x71, 0x19, 0x35, 0x3a, 0x9f, 0x6a, 0xce, 0xc0, 0xf5, 0x79, 0xd5, 0x92, 0x51, 0x9a, 0xf1, 0x3e,
		0x6a, 0x48, 0x88, 0xa0, 0x39, 0x5d, 0xa6, 0x69, 0x47, 0x4d, 0x17, 0xcb, 0x12, 0x9f, 0x16, 0x2b,
		0x3b, 0x2f, 0xa4, 0x3f, 0x1f, 0xfc, 0x45, 0xd3, 0xc7, 0x9b, 0x7e, 0x29, 0x6a, 0xd6, 0x51, 0xed,
		0xe8, 0xa0, 0x61, 0x1d, 0xd5, 0x77, 0x6f, 0x4d, 0xb6, 0x14, 0x2b, 0xdf, 0xe5, 0xb8, 0x7f, 0xaa,
		0xe3, 0xb9, 0xcc, 0xe7, 0xa6, 0xed, 0x45, 0xf2, 0x18, 0x6a, 0x4e, 0xd6, 0x36, 0x41, 0x54, 0xab,
		0xfd, 0x5b, 0xeb, 0xe6, 0xb2, 0xd5, 0x06, 0x96, 0x02, 0x96, 0x02, 0x96, 0xca, 0x16, 0x4b, 0x31,
		0x7f, 0xd0, 0x63, 0xe1, 0x88, 0x35, 0x92, 0x07, 0x54, 0x95, 0x9a, 0x84, 0x8c, 0x96, 0x3f, 0xe8,
		0xc9, 0xeb, 0x5e, 0x3b, 0xb8, 0xe5, 0x21, 0xc5, 0xd1, 0xd3, 0x38, 0xbe, 0x3b, 0x36, 0x4a, 0x97,
		0x57, 0x97, 0x2d, 0x0a, 0x0a, 0xb8, 0x12, 0x0b, 0x3b, 0x6f, 0xde, 0xb6, 0x6e, 0x3a, 0xb7, 0xbf,
		0x7d, 0x6d, 0x9f, 0x5e, 0xfd, 0xfd, 0x92, 0x42, 0xac, 0x15, 0x8b, 0x95, 0xb3, 0xa1, 0x44, 0x20,
		0xa8, 0xd4, 0x0e, 0xce, 0x7c, 0x9a, 0x22, 0x52, 0xb3, 0x01, 0x09, 0xb7, 0xd9, 0x5e, 0x10, 0xb7,
		0x34, 0xed, 0xd2, 0x5d, 0x86, 0x47, 0x9b, 0x28, 0x56, 0x8c, 0x63, 0xa3, 0x5c, 0x2c, 0x4a, 0x3f,
		0x13, 0x98, 0xc2, 0x22, 0x3f, 0x94, 0x07, 0x28, 0x43, 0x29, 0x5b, 0x6e, 0xf2, 0x0e, 0xff, 0x0e,
		0xff, 0x5e, 0xb8, 0x26, 0xef, 0xf6, 0x33, 0x61, 0xee, 0x45, 0x2c, 0x0c, 0x69, 0x0a, 0x49, 0x36,
		0x29, 0x7f, 0xe9, 0xb3, 0x08, 0x39, 0x0a, 0x14, 0x82, 0x97, 0x76, 0xf0, 0x68, 0x66, 0x91, 0xa0,
		0xb0, 0xa4, 0x73, 0x5d, 0xe6, 0xb8, 0x3d, 0xdb, 0x23, 0xb9, 0x8b, 0x33, 0xf5, 0x98, 0x14, 0x78,
		0x6b, 0x85, 0x64, 0xa2, 0x10, 0x4a, 0x7b, 0xa3, 0x87, 0xf0, 0x6a, 0x94, 0x8a, 0x1b, 0x3c, 0x53,
		0x02, 0xf0, 0xc8, 0xb2, 0xaa, 0xd5, 0x86, 0x55, 0xae, 0x1e, 0x1c, 0xd6, 0x6b, 0x8d, 0x46, 0xfd,
		0xb0, 0x7c, 0x48, 0x7c, 0x2d, 0x4e, 0xc5, 0x62, 0x6d, 0x62, 0x06, 0x63, 0x13, 0x41, 0x77, 0xe5,
		0x8e, 0xf0, 0xba, 0x98, 0x8a, 0xab, 0x3a, 0xaf, 0xac, 0x61, 0xa3, 0xc0, 0x6b, 0x48, 0x7b, 0x23,
		0xe7, 0x57, 0x4e, 0x6e, 0xbc, 0xdc, 0x15, 0x30, 0xd1, 0xd6, 0xf5, 0x23, 0x6e, 0x13, 0x84, 0xdc,
		0x53, 0x87, 0x32, 0x11, 0x08, 0xbc, 0x07, 0xbc, 0x07, 0xbc, 0x07, 0xbc, 0x07, 0xbc, 0x07, 0xbc,
		0x07, 0xbc, 0x07, 0xbc, 0x07, 0xbc, 0x97, 0x13, 0xbc, 0xc7, 0x59, 0xf8, 0x6c, 0x7b, 0x94, 0x80,
		0x6f, 0x2c, 0x11, 0x88, 0x0f, 0x88, 0x0f, 0x88, 0x2f, 0x77, 0x88, 0x2f, 0xe2, 0x36, 0x37, 0x89,
		0x36, 0xa9, 0x41, 0x5b, 0x69, 0xa7, 0xf4, 0xd5, 0x1f, 0xb9, 0x9e, 0x92, 0x6f, 0xfb, 0x41, 0xc4,
		0x9c, 0xc0, 0xef, 0x92, 0xec, 0x8d, 0xdd, 0xc4, 0x7d, 0x65, 0xd5, 0x08, 0xa1, 0x5c, 0x18, 0x84,
		0x50, 0x14, 0x98, 0xa7, 0xbe, 0xf2, 0x4e, 0x91, 0x57, 0x11, 0x38, 0x4f, 0x78, 0x51, 0x7a, 0x04,
		0x5a, 0x3b, 0x75, 0x21, 0xb1, 0x30, 0xa0, 0x3b, 0xa0, 0x3b, 0xa0, 0x3b, 0xf0, 0x79, 0xe0, 0xf3,
		0xc0, 0xe7, 0x81, 0xcf, 0x03, 0x9f, 0x07, 0x9c, 0x97, 0x17, 0x9c, 0x37, 0x6a, 0x4a, 0x44, 0x09,
		0xf6, 0x28, 0xda, 0x1c, 0x01, 0xf1, 0x01, 0xf1, 0x01, 0xf1, 0x29, 0x40, 0x7c, 0xf1, 0xde, 0xe4,
		0xae, 0xf3, 0x23, 0x22, 0xc5, 0x7c, 0x60, 0xf3, 0xc0, 0xe6, 0x81, 0xcd, 0x03, 0x9b, 0x07, 0x94,
		0x97, 0x4b, 0x94, 0x47, 0x60, 0x68, 0x66, 0x00, 0xcf, 0xf5, 0x81, 0xed, 0x80, 0xed, 0x80, 0xed,
		0xc0, 0xe6, 0x81, 0xcd, 0x03, 0x9b, 0x07, 0x36, 0x0f, 0x6c, 0x1e, 0x70, 0x5e, 0x6e, 0x70, 0x1e,
		0x35, 0x9b, 0x37, 0x91, 0x08, 0xc4, 0x07, 0xc4, 0x07, 0xc4, 0x07, 0x36, 0x0f, 0x6c, 0x1e, 0xd8,
		0x3c, 0xb0, 0x79, 0x60, 0xf3, 0x80, 0xf2, 0xd0, 0x0d, 0x81, 0xb4, 0x42, 0xff, 0xa8, 0x81, 0x9d,
		0x44, 0xc1, 0x25, 0x23, 0x7d, 0xbd, 0xfe, 0x56, 0xfc, 0x6d, 0x39, 0x2e, 0x62, 0xf5, 0xc0, 0x1c,
		0x73, 0xe0, 0x3b, 0x41, 0x18, 0x32, 0x87, 0xdb, 0xf7, 0x1e, 0x33, 0xef, 0xbd, 0xc0, 0xf9, 0x41,
		0x50, 0x79, 0x73, 0xa3, 0x64, 0x14, 0xb3, 0x44, 0xb1, 0x2b, 0x49, 0xa8, 0xbe, 0xbb, 0xc5, 0x2c,
		0x29, 0x3a, 0x53, 0x13, 0x60, 0x70, 0xd4, 0x06, 0xdf, 0x2a, 0x7a, 0xda, 0xa1, 0xda, 0xe0, 0xea,
		0x30, 0x2e, 0xaa, 0x84, 0x2b, 0xc2, 0xae, 0xd9, 0x20, 0x17, 0xd7, 0x37, 0x0f, 0xcb, 0x56, 0xe5,
		0x5f, 0xe6, 0x43, 0x68, 0xf7, 0x18, 0x01, 0x60, 0x59, 0x16, 0x08, 0x9c, 0x12, 0xbb, 0x5a, 0xc6,
		0x9f, 0x00, 0x51, 0x04, 0x20, 0x4a, 0x3c, 0x6f, 0x40, 0x27, 0x40, 0x27, 0x40, 0x27, 0x40, 0x27,
		0x40, 0x27, 0xbb, 0x88, 0x4e, 0x86, 0x74, 0x87, 0xc9, 0xc2, 0x30, 0x08, 0x69, 0xd0, 0xc9, 0x82,
		0x40, 0xa0, 0x13, 0xa0, 0x13, 0xa0, 0x13, 0xa0, 0x13, 0xa0, 0x13, 0xa0, 0x13, 0xa0, 0x13, 0xa0,
		0x93, 0xb4, 0xe8, 0xc4, 0xb1, 0xc3, 0xd0, 0x65, 0x21, 0x25, 0x3e, 0x59, 0x12, 0x09, 0x84, 0x02,
		0x84, 0x02, 0x84, 0x02, 0x84, 0x02, 0x84, 0x02, 0x84, 0x02, 0x84, 0xa2, 0x0f, 0x42, 0x11, 0xb4,
		0x92, 0xec, 0x27, 0x0f, 0x6d, 0x73, 0xe0, 0x47, 0xc3, 0x64, 0x10, 0x39, 0x7b, 0x19, 0xb2, 0x07,
		0x16, 0x32, 0xdf, 0xc9, 0x85, 0x8d, 0x9a, 0x18, 0xef, 0x9b, 0xcf, 0x27, 0x46, 0xe5, 0xa0, 0x56,
		0x35, 0x4e, 0xd9, 0x83, 0xeb, 0xbb, 0xb1, 0xee, 0x45, 0x46, 0xf0, 0x60, 0x5c, 0xd8, 0xbe, 0xfd,
		0xc8, 0xba, 0xdf, 0xfd, 0xab, 0xfb, 0xff, 0xc7, 0x1c, 0x1e, 0x19, 0x0f, 0x41, 0x68, 0xf0, 0x27,
		0x66, 0x4c, 0x92, 0x84, 0x4c, 0xcf, 0xfd, 0xc1, 0x8c, 0xb3, 0xd8, 0xf2, 0x3f, 0xd8, 0x0e, 0x33,
		0x62, 0x7f, 0x12, 0xed, 0xe5, 0x3c, 0xc7, 0x7b, 0xb6, 0x04, 0x45, 0x4a, 0xf3, 0xa6, 0x5e, 0x23,
		0x44, 0x27, 0x8a, 0xa2, 0x93, 0xd0, 0x21, 0x8d, 0x4c, 0x66, 0xe2, 0x10, 0x95, 0x20, 0x2a, 0x41,
		0x54, 0x82, 0xa8, 0x04, 0x51, 0x09, 0xa2, 0x12, 0x44, 0x25, 0x88, 0x4a, 0x76, 0x21, 0x2a, 0xb1,
		0x0e, 0x2b, 0x47, 0xc7, 0xc6, 0x0d, 0xeb, 0x05, 0x9c, 0x19, 0x97, 0x8c, 0xff, 0x3b, 0x08, 0x7f,
		0x18, 0x17, 0x81, 0xef, 0xf2, 0x20, 0x74, 0xfd, 0x47, 0xe3, 0xe2, 0xec, 0x93, 0x61, 0x7e, 0xf7,
		0x87, 0x17, 0x25, 0x6e, 0xb9, 0xcd, 0xa3, 0x93, 0x9b, 0x93, 0xa6, 0xe7, 0x3e, 0xfa, 0x2d, 0x19,
		0xcc, 0x84, 0x48, 0xe4, 0xad, 0x48, 0x44, 0x76, 0x5d, 0x10, 0x7d, 0xa8, 0x89, 0x3e, 0x1e, 0x42,
		0xfb, 0x31, 0x5e, 0x27, 0xca, 0xd4, 0xd2, 0x65, 0x99, 0x88, 0x43, 0x10, 0x87, 0x20, 0x0e, 0x41,
		0x1c, 0x82, 0x38, 0x04, 0x71, 0x08, 0xe2, 0x10, 0x60, 0x94, 0xb4, 0x18, 0x65, 0xd8, 0x2f, 0x2b,
		0x1c, 0xf4, 0x39, 0xeb, 0x9a, 0xfc, 0x27, 0x09, 0x44, 0x59, 0x12, 0x09, 0x84, 0x02, 0x84, 0x02,
		0x84, 0x02, 0x84, 0x02, 0x84, 0x02, 0x84, 0x02, 0x84, 0xa2, 0x0f, 0x42, 0x01, 0x53, 0xba, 0xde,
		0x78, 0x23, 0x7f, 0x23, 0x57, 0x80, 0x62, 0x2d, 0xb0, 0x40, 0xfe, 0x46, 0x31, 0xa2, 0x93, 0xff,
		0x67, 0xdf, 0xdf, 0xb3, 0x90, 0x92, 0x3f, 0x5d, 0x94, 0x88, 0xd8, 0x04, 0xb1, 0x09, 0x62, 0x13,
		0xc4, 0x26, 0x88, 0x4d, 0x10, 0x9b, 0x20, 0x36, 0x01, 0x3e, 0x49, 0x8b, 0x4f, 0x3c, 0x9b, 0x33,
		0xd3, 0x09, 0x3c, 0xcf, 0x8d, 0x64, 0x4a, 0x56, 0xce, 0x03, 0x94, 0x25, 0x91, 0x40, 0x28, 0x40,
		0x28, 0x40, 0x28, 0x40, 0x28, 0x40, 0x28, 0x40, 0x28, 0x40, 0x28, 0xfa, 0x20, 0x14, 0xb0, 0xa7,
		0xeb, 0x8d, 0x37, 0xd8, 0xd3, 0x5c, 0x01, 0x8a, 0xb5, 0xc0, 0x02, 0xec, 0x69, 0x31, 0xa2, 0x93,
		0x9e, 0xed, 0x98, 0x4e, 0xe0, 0xf3, 0x30, 0xf0, 0x28, 0x29, 0xd4, 0x35, 0x62, 0x11, 0xa5, 0x20,
		0x4a, 0x41, 0x94, 0x82, 0x28, 0x05, 0x51, 0x0a, 0xa2, 0x14, 0x44, 0x29, 0x40, 0x2a, 0x22, 0x48,
		0x65, 0x74, 0xb1, 0xde, 0x0c, 0x7f, 0x92, 0x81, 0x94, 0x99, 0x44, 0xe0, 0x13, 0xe0, 0x13, 0xe0,
		0x13, 0xe0, 0x13, 0xe0, 0x13, 0xe0, 0x13, 0xe0, 0x13, 0x7d, 0xf0, 0x09, 0x58, 0xd4, 0xf5, 0xc6,
		0x1b, 0x2c, 0x6a, 0xae, 0x00, 0xc5, 0x5a, 0x60, 0x01, 0x16, 0xb5, 0x38, 0xb1, 0x49, 0xdf, 0x1e,
		0x44, 0x8c, 0x9a, 0x43, 0x5d, 0x10, 0x8a, 0x08, 0x05, 0x11, 0x0a, 0x22, 0x14, 0x44, 0x28, 0x88,
		0x50, 0x10, 0xa1, 0x20, 0x42, 0x01, 0x4a, 0x49, 0x8f, 0x52, 0x7e, 0x46, 0xee, 0x7f, 0x98, 0xc9,
		0x7e, 0x3a, 0x8c, 0x75, 0x59, 0x97, 0x08, 0xa5, 0x2c, 0x09, 0x05, 0x4a, 0x01, 0x4a, 0x01, 0x4a,
		0x01, 0x4a, 0x01, 0x4a, 0x01, 0x4a, 0x01, 0x4a, 0x01, 0x4a, 0x49, 0x8b, 0x52, 0x82, 0x67, 0x16,
		0x0e, 0x11, 0x05, 0x21, 0x95, 0xb2, 0x2c, 0x13, 0x18, 0x05, 0x18, 0x05, 0x18, 0x05, 0x18, 0x05,
		0x18, 0x05, 0x18, 0x05, 0x18, 0x05, 0x18, 0x25, 0x2d, 0x46, 0xe9, 0x3b, 0x91, 0x79, 0xef, 0xf6,
		0x29, 0xfb, 0xc6, 0x2c, 0x89, 0x04, 0x42, 0x89, 0x3d, 0x6d, 0xd0, 0xe7, 0x26, 0x67, 0x61, 0x0f,
		0x30, 0x45, 0x00, 0xa6, 0x4c, 0x27, 0x0f, 0x58, 0x05, 0x58, 0x05, 0x58, 0x05, 0x58, 0x05, 0x58,
		0x65, 0x57, 0xb1, 0xca, 0x10, 0x54, 0xb0, 0xae, 0x19, 0x31, 0x27, 0xf0, 0xbb, 0x74, 0x80, 0x65,
		0x59, 0x2e, 0x50, 0x0b, 0x50, 0x0b, 0x50, 0x0b, 0x50, 0x0b, 0x50, 0x0b, 0x50, 0x0b, 0x50, 0x0b,
		0x50, 0x8b, 0x1c, 0x6a, 0x89, 0xd8, 0x33, 0x0b, 0x99, 0xf7, 0xa2, 0x0c, 0xbe, 0x6c, 0xfc, 0x02,
		0xe0, 0x18, 0xe0, 0x18, 0xe0, 0x18, 0xe0, 0x18, 0xe0, 0x18, 0xe0, 0x18, 0xe0, 0x18, 0xe0, 0x18,
		0x39, 0x1c, 0x33, 0xf0, 0xed, 0x67, 0xdb, 0xf5, 0xec, 0x7b, 0x8f, 0x91, 0x43, 0x98, 0x75, 0xb2,
		0x81, 0x5e, 0x80, 0x5e, 0x80, 0x5e, 0x80, 0x5e, 0x80, 0x5e, 0x80, 0x5e, 0x80, 0x5e, 0x80, 0x5e,
		0xc4, 0xd1, 0x4b, 0xe4, 0xfa, 0x8f, 0x1e, 0x75, 0xf5, 0xfa, 0x15, 0xa1, 0xc0, 0x2b, 0xc8, 0xc6,
		0x15, 0x87, 0x2a, 0xc8, 0xc6, 0x05, 0x4a, 0x01, 0x4a, 0x01, 0x4a, 0x01, 0x4a, 0xc9, 0x1b, 0x4a,
		0x41, 0xe5, 0xa5, 0xf5, 0xc6, 0x1b, 0x95, 0x97, 0x72, 0x05, 0x28, 0xd6, 0x02, 0x0b, 0x54, 0x5e,
		0x2a, 0x48, 0x84, 0xf2, 0xd2, 0xbb, 0x0f, 0xbc, 0xd1, 0x01, 0x2e, 0x4d, 0x74, 0x32, 0x2f, 0x10,
		0x91, 0x09, 0x22, 0x13, 0x44, 0x26, 0x88, 0x4c, 0x10, 0x99, 0x20, 0x32, 0x41, 0x64, 0x82, 0xc8,
		0x04, 0x91, 0x09, 0x22, 0x13, 0x44, 0x26, 0x88, 0x4c, 0x92, 0x44, 0x26, 0x03, 0xbf, 0x4b, 0x5f,
		0xc8, 0x64, 0x45, 0x28, 0x22, 0x14, 0x44, 0x28, 0x88, 0x50, 0x10, 0xa1, 0x20, 0x42, 0x41, 0x84,
		0x82, 0x08, 0x05, 0x11, 0xca, 0x2e, 0x44, 0x28, 0xd6, 0x61, 0xe5, 0xe8, 0xd8, 0xb8, 0x61, 0xbd,
		0x80, 0x33, 0xe3, 0x92, 0xf1, 0x7f, 0x07, 0xe1, 0x0f, 0xe3, 0x22, 0xf0, 0x5d, 0x1e, 0x84, 0xae,
		0xff, 0x68, 0x5c, 0x9c, 0x7d, 0x32, 0xcc, 0xef, 0x3e, 0x8b, 0x71, 0xef, 0x2d, 0xb7, 0x79, 0xf4,
		0x75, 0x82, 0x9a, 0xae, 0x7f, 0xf0, 0x08, 0x41, 0x89, 0xa2, 0xa0, 0x44, 0x72, 0x59, 0x10, 0x87,
		0x28, 0x88, 0x43, 0x82, 0x01, 0x37, 0x0f, 0xcb, 0x56, 0xe5, 0x5f, 0x64, 0x41, 0xc8, 0x8a, 0x44,
		0x44, 0x20, 0x88, 0x40, 0x10, 0x81, 0x20, 0x02, 0x41, 0x04, 0x82, 0x08, 0x04, 0x11, 0x08, 0xf0,
		0x49, 0x6a, 0x7c, 0x72, 0xef, 0x05, 0xce, 0x0f, 0xb2, 0x52, 0x8a, 0x2b, 0x12, 0x81, 0x4f, 0x70,
		0x1b, 0x4e, 0x12, 0xa4, 0xe0, 0x36, 0x1c, 0x90, 0x0a, 0x90, 0x0a, 0x90, 0x0a, 0x90, 0xca, 0x6e,
		0x23, 0x15, 0x27, 0x74, 0x48, 0x71, 0xca, 0x9c, 0x3c, 0xa0, 0x14, 0xa0, 0x14, 0xa0, 0x14, 0xa0,
		0x14, 0xa0, 0x14, 0xa0, 0x14, 0xa0, 0x14, 0xa0, 0x14, 0x09, 0x94, 0xd2, 0xb3, 0x1d, 0xd3, 0x09,
		0x7c, 0x1e, 0x06, 0x1e, 0xe9, 0xa9, 0xcf, 0x1a, 0xb9, 0x40, 0x2d, 0x38, 0xfb, 0x11, 0x07, 0x2c,
		0x38, 0xfb, 0x01, 0x56, 0x01, 0x56, 0x01, 0x56, 0x01, 0x56, 0xd9, 0x69, 0xac, 0x32, 0x62, 0x40,
		0x4c, 0xfe, 0x93, 0x0e, 0xa6, 0xcc, 0x44, 0x02, 0xa1, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0xa1, 0x00,
		0xa1, 0x00, 0xa1, 0x00, 0xa1, 0xe8, 0x83, 0x50, 0x90, 0x1f, 0xbf, 0xde, 0x78, 0xe3, 0x06, 0x6f,
		0xae, 0x00, 0xc5, 0x5a, 0x60, 0x81, 0x1b, 0xbc, 0x05, 0x8a, 0x4e, 0xfa, 0xf6, 0x20, 0x62, 0xe4,
		0x3c, 0xea, 0x82, 0x54, 0xc4, 0x28, 0x88, 0x51, 0x10, 0xa3, 0x20, 0x46, 0x41, 0x8c, 0x82, 0x18,
		0x05, 0x31, 0x0a, 0x70, 0x4a, 0x6a, 0x9c, 0xd2, 0x77, 0x22, 0xf3, 0xde, 0xed, 0x93, 0xe6, 0xa6,
		0x2d, 0xc9, 0x04, 0x46, 0x41, 0x7e, 0x9a, 0x24, 0x50, 0x41, 0x7e, 0x1a, 0xd0, 0x0a, 0xd0, 0x0a,
		0xd0, 0x0a, 0xd0, 0xca, 0xee, 0xa2, 0x95, 0x7e, 0x10, 0x71, 0xf3, 0x81, 0x39, 0xe6, 0x3d, 0x23,
		0x28, 0xd7, 0xbc, 0x20, 0x4d, 0x0e, 0xa1, 0x54, 0x80, 0x50, 0x80, 0x50, 0x8a, 0x86, 0x50, 0x4e,
		0xdd, 0x50, 0x4e, 0x71, 0xec, 0xe7, 0x47, 0xf9, 0x65, 0x9e, 0x68, 0x5f, 0x2c, 0x4c, 0x72, 0x3d,
		0xe4, 0xc2, 0x05, 0xb2, 0x4d, 0x49, 0xb9, 0x39, 0x37, 0x6e, 0xd2, 0x97, 0x3e, 0xcb, 0x7b, 0x2d,
		0x22, 0x92, 0x5d, 0xab, 0x6c, 0xf7, 0xbe, 0xba, 0x8b, 0x87, 0xb3, 0xbb, 0x6d, 0x17, 0x2e, 0xa9,
		0x7d, 0xd2, 0x01, 0xc8, 0x8a, 0xee, 0x75, 0x99, 0xe3, 0xf6, 0x6c, 0x4f, 0x2a, 0x10, 0x59, 0xf1,
		0x9c, 0x16, 0x81, 0xac, 0x15, 0x54, 0x57, 0x39, 0x24, 0x90, 0x4a, 0x13, 0xef, 0xd0, 0xc5, 0x3d,
		0x4a, 0xe2, 0x9f, 0x15, 0xf0, 0x7d, 0x64, 0x59, 0xd5, 0x6a, 0xc3, 0x2a, 0x57, 0x0f, 0x0e, 0xeb,
		0xb5, 0x46, 0xa3, 0x7e, 0x58, 0x3e, 0xfc, 0x48, 0xfb, 0x4d, 0x4a, 0x56, 0x6b, 0x13, 0x18, 0x8f,
		0x0d, 0x05, 0x99, 0xf0, 0x5f, 0x1f, 0x09, 0x17, 0x91, 0x30, 0x72, 0x4a, 0xb0, 0x88, 0x8d, 0x22,
		0x2f, 0x22, 0x4d, 0x44, 0x45, 0x63, 0x96, 0xe9, 0xa4, 0xdc, 0x6d, 0x29, 0xc2, 0x93, 0xd0, 0xe2,
		0x92, 0xeb, 0x47, 0xdc, 0x1e, 0xfa, 0x4a, 0x22, 0xd8, 0x37, 0x11, 0x08, 0xe8, 0x07, 0xe8, 0x07,
		0xe8, 0x07, 0xe8, 0x07, 0xe8, 0x07, 0xe8, 0x07, 0xe8, 0x07, 0xe8, 0x07, 0xe8, 0x97, 0x3f, 0xe8,
		0xc7, 0x59, 0xf8, 0x6c, 0x7b, 0x94, 0xd8, 0x6f, 0x2c, 0x11, 0xe0, 0x2f, 0x09, 0xf8, 0x03, 0xf0,
		0x53, 0x05, 0xfc, 0x00, 0xfa, 0xd6, 0xea, 0x5c, 0xc4, 0x6d, 0x6e, 0x12, 0x6d, 0x52, 0x83, 0x26,
		0x09, 0x61, 0x2a, 0xea, 0xab, 0x3f, 0xf2, 0x3d, 0x25, 0xdf, 0xf6, 0x83, 0x88, 0x39, 0x81, 0xdf,
		0x25, 0xd9, 0x1b, 0xbb, 0x89, 0xfc, 0xca, 0xaa, 0x21, 0x42, 0xb9, 0x30, 0x08, 0xa1, 0x28, 0x38,
		0x4f, 0x5d, 0x92, 0x84, 0x0e, 0xab, 0x08, 0x9c, 0x27, 0xbc, 0x28, 0x3d, 0x02, 0xad, 0x9d, 0xba,
		0x90, 0x58, 0x18, 0xd0, 0x1d, 0xa8, 0x3d, 0x50, 0x7b, 0xa0, 0xf6, 0x40, 0xed, 0x81, 0xda, 0x03,
		0xb5, 0x07, 0x6a, 0x0f, 0x90, 0x2f, 0x87, 0x90, 0xcf, 0xe4, 0x6e, 0x8f, 0x91, 0xe2, 0xbe, 0x91,
		0x44, 0x80, 0x3f, 0x50, 0x7b, 0xa0, 0xf6, 0x72, 0x07, 0xfa, 0xe2, 0xbd, 0xc9, 0x5d, 0xe7, 0x47,
		0x44, 0x0a, 0xfb, 0x40, 0xec, 0x81, 0xd8, 0x03, 0xb1, 0x07, 0x62, 0x0f, 0x28, 0x2f, 0x97, 0x28,
		0x8f, 0xc0, 0xd0, 0xcc, 0x00, 0x9e, 0xeb, 0x03, 0xdb, 0x81, 0xd8, 0x03, 0xb1, 0x07, 0x62, 0x0f,
		0xc4, 0x1e, 0x88, 0x3d, 0x10, 0x7b, 0x20, 0xf6, 0x00, 0xf9, 0xf2, 0x08, 0xf9, 0xa8, 0x89, 0xbd,
		0x89, 0x44, 0x80, 0x3f, 0x10, 0x7b, 0x20, 0xf6, 0x40, 0xec, 0x81, 0xd8, 0x03, 0xb1, 0x07, 0x62,
		0x0f, 0xc4, 0x1e, 0x50, 0x9e, 0x1c, 0xca, 0xcb, 0xb4, 0xf4, 0x4b, 0xd3, 0xf7, 0x03, 0x6e, 0xc7,
		0x9a, 0x22, 0x57, 0x01, 0x26, 0x72, 0x9e, 0x58, 0xcf, 0xee, 0xdb, 0xfc, 0x29, 0x36, 0xec, 0xfb,
		0x41, 0x9f, 0xf9, 0xce, 0x10, 0x91, 0x0d, 0x0b, 0xe1, 0xb8, 0xbe, 0xed, 0x99, 0x5d, 0xf6, 0xec,
		0x3a, 0x6c, 0x7f, 0xf9, 0xef, 0x5e, 0xf0, 0xe8, 0x3a, 0xb6, 0x67, 0x3a, 0x4f, 0xb6, 0xef, 0x33,
		0x2f, 0xda, 0x1f, 0xff, 0xb0, 0xcf, 0xc6, 0xd5, 0xca, 0xf7, 0x23, 0x6e, 0x73, 0xb6, 0x4f, 0x50,
		0xa4, 0x69, 0xf4, 0xa6, 0x3c, 0x1c, 0x38, 0xdc, 0x1f, 0x7b, 0xc9, 0xf6, 0xf8, 0x6d, 0x4e, 0x87,
		0x2f, 0xd3, 0x39, 0x19, 0x7d, 0x77, 0x67, 0x52, 0x29, 0xbd, 0x73, 0x1d, 0x44, 0xfc, 0x33, 0x73,
		0x3e, 0xb1, 0xb0, 0x94, 0xe7, 0x72, 0x58, 0x21, 0x23, 0xac, 0x86, 0x35, 0x27, 0x0c, 0xc5, 0xb0,
		0x50, 0x0c, 0x4b, 0x12, 0x9e, 0xa3, 0x18, 0x96, 0x8c, 0xf6, 0xa1, 0x18, 0x56, 0xaa, 0x4d, 0x8a,
		0x20, 0x1b, 0xa7, 0x2b, 0x59, 0x07, 0xda, 0x38, 0x5d, 0xd9, 0x81, 0x28, 0x1b, 0xa7, 0x2b, 0x1a,
		0xc4, 0xdd, 0x38, 0x5d, 0x41, 0xdc, 0xad, 0x42, 0x8b, 0x51, 0x0c, 0x0b, 0xd0, 0x0f, 0xd0, 0x0f,
		0xd0, 0x0f, 0xd0, 0x0f, 0xd0, 0x0f, 0xd0, 0x0f, 0xd0, 0x0f, 0xd0, 0x6f, 0x97, 0xa0, 0x1f, 0x8a,
		0x61, 0x6d, 0x15, 0xfc, 0x01, 0xf8, 0x21, 0xb1, 0x26, 0x53, 0xd0, 0x87, 0x62, 0x58, 0xbb, 0x82,
		0xfc, 0x90, 0x5a, 0x53, 0x38, 0x9c, 0x87, 0xd4, 0x1a, 0xe0, 0x3c, 0x25, 0x38, 0x0f, 0xc5, 0xb0,
		0x40, 0xed, 0x81, 0xda, 0x03, 0xb5, 0x07, 0x6a, 0x0f, 0xd4, 0x1e, 0xa8, 0x3d, 0x50, 0x7b, 0x80,
		0x7c, 0xbb, 0x00, 0xf9, 0x50, 0x0c, 0x0b, 0xd4, 0x1e, 0xa8, 0xbd, 0x9d, 0x01, 0x7d, 0xb8, 0x33,
		0x07, 0x62, 0x0f, 0xc4, 0x1e, 0x88, 0x3d, 0x10, 0x7b, 0x3b, 0x84, 0xf2, 0x50, 0x0c, 0x0b, 0xc4,
		0x1e, 0x88, 0x3d, 0x10, 0x7b, 0x20, 0xf6, 0x40, 0xec, 0x81, 0xd8, 0x03, 0xb1, 0x07, 0xc8, 0xb7,
		0x03, 0x90, 0x0f, 0xc5, 0xb0, 0x40, 0xec, 0x81, 0xd8, 0x03, 0xb1, 0x07, 0x62, 0x0f, 0xc4, 0x1e,
		0x88, 0x3d, 0x10, 0x7b, 0x40, 0x79, 0xf9, 0x44, 0x79, 0x28, 0x86, 0xb5, 0xbe, 0x18, 0x96, 0x74,
		0x8d, 0x26, 0x43, 0xa0, 0x16, 0x56, 0xc8, 0xf2, 0x5f, 0x0a, 0xeb, 0x5f, 0xe6, 0xf3, 0xd8, 0xb0,
		0x48, 0x96, 0xc1, 0x9a, 0x08, 0x42, 0x09, 0x2c, 0x94, 0xc0, 0x92, 0x04, 0xe5, 0x28, 0x81, 0x25,
		0xa3, 0x7d, 0x28, 0x81, 0x85, 0xb0, 0x1a, 0x61, 0x35, 0xce, 0x52, 0xa4, 0x10, 0xbf, 0x85, 0x90,
		0x5a, 0x30, 0x3e, 0xdb, 0xc2, 0x51, 0x8a, 0x85, 0x93, 0x14, 0xd5, 0x6b, 0xd8, 0x28, 0xf0, 0x1a,
		0x22, 0xc4, 0x26, 0x0d, 0xb1, 0x51, 0xf7, 0x0a, 0x78, 0x0f, 0x78, 0x0f, 0x78, 0x0f, 0x78, 0x0f,
		0x78, 0x0f, 0x78, 0x0f, 0x78, 0x0f, 0x78, 0x0f, 0x78, 0x6f, 0x23, 0xde, 0x43, 0xb1, 0x2b, 0x20,
		0x3e, 0x20, 0xbe, 0xdd, 0x41, 0x7c, 0x28, 0x76, 0xb5, 0x2b, 0xb8, 0x0f, 0xa9, 0x33, 0x85, 0x83,
		0x79, 0x48, 0x9d, 0x01, 0xce, 0x53, 0x82, 0xf3, 0x50, 0xec, 0x0a, 0xe8, 0x0e, 0xe8, 0x0e, 0x7c,
		0x1e, 0xf8, 0x3c, 0xf0, 0x79, 0xe0, 0xf3, 0xc0, 0xe7, 0x01, 0xe7, 0x69, 0x8b, 0xf3, 0x50, 0xe1,
		0x0a, 0x88, 0x0f, 0x88, 0x6f, 0x67, 0x10, 0x1f, 0x2e, 0xc2, 0x81, 0xcd, 0x03, 0x9b, 0x07, 0x36,
		0x0f, 0x6c, 0xde, 0x0e, 0xa1, 0x3c, 0x54, 0xb8, 0x02, 0xb6, 0x03, 0xb6, 0x03, 0x9b, 0x07, 0x36,
		0x0f, 0x6c, 0x1e, 0xd8, 0x3c, 0xb0, 0x79, 0xc0, 0x79, 0xba, 0xe2, 0x3c, 0x94, 0xb5, 0x02, 0xe2,
		0x03, 0xe2, 0x03, 0x9b, 0x07, 0x36, 0x0f, 0x6c, 0x1e, 0xd8, 0x3c, 0xb0, 0x79, 0x40, 0x79, 0xf9,
		0x44, 0x79, 0x28, 0x6b, 0xb5, 0xb6, 0xac, 0x95, 0x5c, 0xcd, 0x25, 0x23, 0x7d, 0x49, 0xab, 0xff,
		0x33, 0xda, 0xae, 0x59, 0xd5, 0xb3, 0x7a, 0xa7, 0x70, 0xb9, 0x65, 0x97, 0x59, 0xfd, 0xf2, 0xa6,
		0x9b, 0xe6, 0xe4, 0x93, 0x95, 0xec, 0x93, 0x09, 0xa7, 0xb3, 0xc4, 0x7e, 0xf2, 0xd0, 0x36, 0x07,
		0x7e, 0xc4, 0xed, 0x7b, 0x2f, 0x1d, 0x5e, 0x2b, 0xfd, 0xfb, 0x89, 0xf9, 0xa9, 0xc1, 0x89, 0xc0,
		0x52, 0x4d, 0xf0, 0xdf, 0xde, 0xfe, 0x68, 0x85, 0x96, 0x57, 0x60, 0x88, 0x97, 0x8d, 0xff, 0x36,
		0xfe, 0x72, 0x7d, 0x73, 0xd5, 0xee, 0xb4, 0xda, 0xbf, 0xb5, 0x6e, 0x2e, 0x5b, 0xed, 0xbf, 0x08,
		0xec, 0x2b, 0xd9, 0x50, 0x64, 0x3e, 0xf4, 0x18, 0xce, 0x8e, 0xa0, 0x0d, 0xa3, 0x0a, 0x34, 0x16,
		0x02, 0x8b, 0xb4, 0xd3, 0x97, 0x49, 0x01, 0xbb, 0x53, 0x16, 0x39, 0xa1, 0xdb, 0x97, 0x32, 0xd7,
		0x53, 0x05, 0x39, 0xf3, 0x1d, 0x6f, 0xd0, 0x65, 0x06, 0x7f, 0x62, 0xc6, 0xc4, 0xe8, 0x19, 0xfd,
		0x30, 0xe0, 0x81, 0x13, 0x78, 0x46, 0xbc, 0x2b, 0xdd, 0x88, 0xbb, 0x4e, 0x64, 0x04, 0xbe, 0xf7,
		0x62, 0xc4, 0x0b, 0x14, 0x7f, 0xf4, 0xbb, 0x3f, 0xfd, 0xc8, 0x20, 0x62, 0x5d, 0xe3, 0xfe, 0x65,
		0x28, 0xc0, 0x73, 0xfd, 0x1f, 0x86, 0x1b, 0x4d, 0x05, 0xed, 0x89, 0x2e, 0x26, 0x41, 0x78, 0x3b,
		0xaf, 0x57, 0xdd, 0xb9, 0x19, 0x93, 0xf0, 0x1c, 0x94, 0xb1, 0xec, 0x82, 0x9a, 0x29, 0x5e, 0x84,
		0x7c, 0x3a, 0xaf, 0x77, 0xb4, 0x18, 0x2c, 0xa9, 0xf5, 0x16, 0x74, 0x82, 0x2a, 0x9d, 0x5f, 0x0a,
		0x9d, 0x4c, 0x87, 0x5e, 0x92, 0xad, 0xfc, 0xdb, 0x2b, 0x91, 0x60, 0x6e, 0x4b, 0xae, 0xdf, 0x65,
		0xc9, 0xa3, 0xa5, 0xb9, 0xeb, 0xbd, 0xf1, 0x63, 0x09, 0xd7, 0x2e, 0x1d, 0x4b, 0x98, 0x9a, 0x0d,
		0x14, 0x61, 0xfd, 0x24, 0x4b, 0x60, 0x8a, 0x5a, 0x3a, 0x69, 0xc2, 0x4e, 0xda, 0x98, 0xc9, 0x97,
		0xb0, 0xa4, 0x45, 0x65, 0xa9, 0xb9, 0xb3, 0xe9, 0xca, 0x79, 0xcc, 0x7e, 0x08, 0xd9, 0x43, 0x9a,
		0x55, 0x9b, 0x9c, 0x7d, 0xa6, 0x38, 0x96, 0x29, 0x5d, 0x8f, 0x4d, 0xc7, 0xde, 0x14, 0x54, 0x8c,
		0x74, 0x3f, 0xd3, 0x3d, 0xfa, 0x18, 0xb2, 0x28, 0x12, 0xd9, 0xa5, 0xa3, 0x07, 0xd3, 0xed, 0xd3,
		0x0a, 0xf6, 0x29, 0xf6, 0xe9, 0x0a, 0x7a, 0x4d, 0x59, 0x3a, 0xb6, 0xe4, 0x4c, 0xb4, 0x23, 0xe5,
		0xcc, 0x4f, 0x16, 0x7c, 0xfc, 0x7c, 0xca, 0x59, 0x13, 0xab, 0xce, 0x2c, 0x7c, 0x00, 0x25, 0x73,
		0xe0, 0x44, 0x54, 0x85, 0x99, 0x32, 0x90, 0x93, 0x3a, 0x43, 0x52, 0x13, 0xca, 0x49, 0x55, 0x59,
		0x56, 0xcb, 0xcb, 0x88, 0x56, 0x53, 0x1e, 0xd5, 0x46, 0x79, 0xb0, 0x1d, 0x82, 0x62, 0xe6, 0x33,
		0x51, 0x72, 0xe5, 0xcc, 0xcb, 0x28, 0x67, 0x4e, 0x19, 0xc5, 0x1a, 0x28, 0x67, 0x9e, 0x01, 0xff,
		0x2d, 0x7d, 0xee, 0x3a, 0xd5, 0x9c, 0x7b, 0x3b, 0x62, 0xe6, 0x74, 0x2f, 0x99, 0xe9, 0x60, 0x25,
		0x05, 0xcc, 0xdc, 0x08, 0x3b, 0xf7, 0x03, 0xc7, 0x74, 0x1f, 0x8e, 0xa7, 0xef, 0x16, 0x2d, 0xff,
		0x62, 0xfc, 0xf7, 0x61, 0x68, 0x59, 0xc8, 0xd3, 0x87, 0x97, 0xc7, 0x80, 0x9b, 0x81, 0x63, 0x3a,
		0x41, 0xaf, 0x1f, 0xa3, 0x55, 0xd6, 0x35, 0x63, 0x68, 0x1f, 0x0b, 0xfd, 0x95, 0xe3, 0x7e, 0x14,
		0xfd, 0xa7, 0x97, 0x68, 0x9e, 0x1f, 0x90, 0xb7, 0xe5, 0x2b, 0x12, 0x61, 0xd2, 0x61, 0xd2, 0x61,
		0xd2, 0x05, 0x35, 0x27, 0x3d, 0x3d, 0xa0, 0xdc, 0x8e, 0xf7, 0x3d, 0x9b, 0x3f, 0x04, 0x61, 0xef,
		0x38, 0x36, 0x75, 0x81, 0xcf, 0x7c, 0x1e, 0xad, 0xff, 0x75, 0xfc, 0x5b, 0x1e, 0xda, 0x7e, 0xe4,
		0x30, 0xf7, 0x99, 0x85, 0xc7, 0x73, 0x3f, 0x2f, 0xff, 0xd3, 0xb2, 0xd1, 0x88, 0x96, 0x3f, 0x30,
		0x61, 0x2d, 0x97, 0x7e, 0x9d, 0x82, 0xc4, 0xa0, 0x5a, 0xdb, 0x73, 0x37, 0xe2, 0x4d, 0xce, 0x25,
		0x5b, 0x90, 0x5c, 0xb8, 0x7e, 0xcb, 0x63, 0xb1, 0x8a, 0x4b, 0x66, 0x46, 0x94, 0x2e, 0xec, 0x9f,
		0x73, 0x92, 0x68, 0xf3, 0x3a, 0x4a, 0x57, 0x61, 0x97, 0x85, 0xac, 0xfb, 0xe9, 0xa5, 0x74, 0x6c,
		0xf8, 0x03, 0xcf, 0xa3, 0x10, 0xf5, 0x35, 0x62, 0xa1, 0x54, 0xca, 0x06, 0x5c, 0xbd, 0x90, 0xab,
		0x9f, 0xdb, 0x37, 0xf2, 0x5e, 0x7e, 0x5e, 0x18, 0x1c, 0x3c, 0x1c, 0x3c, 0x1c, 0xfc, 0x8e, 0x3a,
		0xf8, 0xe9, 0x6f, 0x11, 0xba, 0xc9, 0xd8, 0xf3, 0x5d, 0x4b, 0xbd, 0x1a, 0x9f, 0xe9, 0x8c, 0x0f,
		0xa3, 0x94, 0xa5, 0x5e, 0xa5, 0x3a, 0xdb, 0xb6, 0x39, 0x13, 0x27, 0xfa, 0x47, 0x8f, 0x67, 0xcc,
		0xf3, 0x5b, 0xe0, 0xf9, 0xc1, 0xf3, 0x27, 0x7c, 0x4d, 0xf0, 0xfc, 0xc0, 0x8c, 0xc0, 0x8c, 0x5a,
		0x60, 0xc6, 0x9d, 0xe6, 0xf9, 0x41, 0x8b, 0xc3, 0x02, 0xc2, 0x02, 0x22, 0x6a, 0x06, 0x2d, 0x0e,
		0x5a, 0xfc, 0x35, 0x49, 0xbb, 0x47, 0x8b, 0x83, 0x45, 0x86, 0x3f, 0x84, 0x3f, 0x84, 0x3f, 0xdc,
		0x51, 0x16, 0x19, 0xa4, 0x6b, 0x52, 0xd2, 0xb5, 0x40, 0xd7, 0x5d, 0x73, 0x74, 0x61, 0x2a, 0xdd,
		0x35, 0x04, 0x23, 0xf1, 0x7d, 0xa9, 0xb3, 0xb1, 0xdc, 0x0c, 0xaf, 0x62, 0x2c, 0x5f, 0x28, 0xb5,
		0xa3, 0xc8, 0x7d, 0xf4, 0x27, 0x60, 0x29, 0xe5, 0xf5, 0x8c, 0xd7, 0x84, 0xe1, 0xca, 0x06, 0xae,
		0x6c, 0x48, 0x5a, 0x80, 0xd4, 0x57, 0x36, 0x66, 0xfa, 0x27, 0x7e, 0x9a, 0x33, 0x27, 0x03, 0x57,
		0x37, 0x14, 0xe3, 0x4d, 0x1c, 0xe9, 0x88, 0x42, 0x0c, 0xe1, 0x23, 0x1d, 0xc1, 0x5b, 0x4d, 0x2b,
		0x8a, 0x23, 0x74, 0xbb, 0x49, 0x72, 0xab, 0x20, 0x74, 0x43, 0xe8, 0xb6, 0xfd, 0xd0, 0x4d, 0x74,
		0xeb, 0xcd, 0xbc, 0x94, 0xe7, 0x05, 0x8e, 0x7c, 0xf2, 0xca, 0xa2, 0xd7, 0x9a, 0xc9, 0x44, 0x45,
		0xcc, 0x8c, 0xb6, 0x2c, 0xf5, 0xd6, 0x55, 0xb6, 0x85, 0x95, 0x6d, 0x65, 0x75, 0x5b, 0x5a, 0x6e,
		0x6b, 0x4b, 0x6e, 0x71, 0x3a, 0x96, 0x66, 0x45, 0xf3, 0x8a, 0x53, 0x09, 0xbd, 0x8a, 0x9a, 0x98,
		0x29, 0x85, 0x6e, 0xb1, 0x12, 0x7a, 0x15, 0x95, 0xd0, 0x55, 0xaf, 0x61, 0xa3, 0xc0, 0x6b, 0x88,
		0x1a, 0x99, 0xf4, 0xbe, 0x81, 0x28, 0x05, 0x79, 0x2a, 0x8f, 0x3c, 0x15, 0x59, 0x7e, 0xa2, 0x65,
		0x4a, 0xbe, 0xcf, 0x68, 0x94, 0x61, 0xcd, 0x3a, 0x42, 0xa4, 0xbb, 0x24, 0x18, 0x70, 0x17, 0x70,
		0x17, 0x70, 0x37, 0xa7, 0x70, 0x97, 0xf9, 0x83, 0x1e, 0x0b, 0x29, 0xe2, 0xd2, 0x05, 0xc0, 0x5b,
		0x23, 0x90, 0xd5, 0xf2, 0x07, 0x3d, 0x3a, 0x1d, 0x6e, 0x07, 0xb7, 0x3c, 0x74, 0xfd, 0x47, 0x52,
		0x44, 0x52, 0x2a, 0xc7, 0x73, 0x78, 0x7e, 0xf5, 0xe5, 0xec, 0xa4, 0x79, 0xde, 0x39, 0xf9, 0xad,
		0x79, 0x79, 0xd9, 0x3a, 0x2f, 0x11, 0x42, 0xa8, 0x4a, 0x2c, 0xff, 0xea, 0xba, 0xbd, 0x20, 0xff,
		0x5d, 0x8e, 0x80, 0x5e, 0xa9, 0x1d, 0x9c, 0x09, 0x90, 0xf9, 0xaf, 0x8a, 0x5c, 0x9e, 0x4f, 0xd2,
		0xea, 0xe4, 0x2b, 0xb3, 0x79, 0x6c, 0x54, 0x72, 0x02, 0x97, 0x7e, 0x01, 0x2e, 0xe5, 0x17, 0x2e,
		0x75, 0x09, 0x6a, 0xeb, 0xae, 0x21, 0x1b, 0x28, 0xca, 0xcf, 0x02, 0x26, 0x01, 0x26, 0x01, 0x26,
		0x29, 0x85, 0x49, 0xd1, 0x08, 0x3b, 0x10, 0x22, 0xa4, 0x43, 0x18, 0xfb, 0xfc, 0x1a, 0xfb, 0x74,
		0x25, 0x8b, 0xdf, 0xd4, 0x9e, 0x34, 0xa5, 0x8c, 0x61, 0xe0, 0x61, 0xe0, 0x61, 0xe0, 0x33, 0x37,
		0xf0, 0x03, 0xd7, 0xe7, 0x55, 0x8b, 0xd0, 0xc0, 0x37, 0x70, 0x3a, 0x93, 0x52, 0x28, 0x3a, 0x96,
		0x29, 0x8a, 0xd1, 0x0d, 0xe5, 0x87, 0x31, 0x35, 0xeb, 0xa8, 0x76, 0x74, 0xd0, 0xb0, 0x8e, 0xd0,
		0xa7, 0x8c, 0x8e, 0x0e, 0x30, 0x70, 0x06, 0xa3, 0x3b, 0xce, 0x5c, 0x4a, 0xcf, 0xa6, 0x43, 0x9c,
		0xcb, 0x82, 0x81, 0x3d, 0x81, 0x3d, 0x81, 0x3d, 0x73, 0x8a, 0x3d, 0xe5, 0x2f, 0x88, 0xad, 0xb0,
		0x0b, 0x14, 0xe8, 0x73, 0xfe, 0xc2, 0xd8, 0x64, 0xf1, 0x8e, 0x97, 0x6f, 0xe4, 0xcc, 0xff, 0xdb,
		0xca, 0xed, 0x9c, 0xf9, 0x7f, 0x9c, 0xbb, 0x0d, 0x3d, 0xfd, 0x9d, 0xc4, 0x55, 0x68, 0xaa, 0xd5,
		0x94, 0x68, 0xd9, 0xb7, 0x51, 0x66, 0x6f, 0x10, 0xf1, 0x3c, 0xa2, 0xf6, 0x69, 0xeb, 0xbf, 0xbd,
		0xfd, 0xa5, 0x33, 0x7a, 0xe3, 0xbf, 0x8d, 0xbf, 0x2c, 0x9d, 0xba, 0xfc, 0x85, 0xf2, 0x18, 0xeb,
		0x94, 0x90, 0x3c, 0xdf, 0x38, 0xac, 0xf6, 0x13, 0x33, 0x96, 0xc7, 0x15, 0x2f, 0x85, 0x71, 0xcf,
		0x8c, 0x88, 0x71, 0x83, 0x07, 0xc6, 0xd2, 0x18, 0x8d, 0x87, 0x20, 0xfc, 0xee, 0xf3, 0x27, 0x37,
		0x32, 0xe2, 0x3d, 0x18, 0x7f, 0xe2, 0x9e, 0x19, 0xcf, 0xb6, 0xe7, 0x76, 0x4b, 0xc4, 0x38, 0x93,
		0xd8, 0x1d, 0x6c, 0x72, 0x0d, 0x74, 0x07, 0x0a, 0x99, 0xfa, 0x8a, 0x8d, 0x7e, 0x83, 0x76, 0x4d,
		0x49, 0xdf, 0xf5, 0x17, 0x42, 0x05, 0x84, 0x0a, 0xd9, 0x85, 0x0a, 0x3d, 0xbb, 0xdf, 0xa7, 0x48,
		0x5f, 0x98, 0x9a, 0xcb, 0x89, 0x40, 0x84, 0x06, 0x08, 0x0d, 0x10, 0x1a, 0xe4, 0x34, 0x34, 0x70,
		0xbb, 0xcc, 0xe7, 0x2e, 0x7f, 0x21, 0x0e, 0x0f, 0x08, 0x68, 0xba, 0xd2, 0xd9, 0xf8, 0xd5, 0x3e,
		0xd9, 0x11, 0xa1, 0x2e, 0x4f, 0x06, 0xfe, 0xf9, 0xa6, 0x79, 0xd1, 0xea, 0x5c, 0x34, 0xaf, 0xaf,
		0xcf, 0x2e, 0xbf, 0x74, 0xae, 0x6f, 0xae, 0xda, 0x57, 0x27, 0x57, 0x54, 0xa9, 0x55, 0x23, 0xde,
		0x32, 0x22, 0xc3, 0xe8, 0xb4, 0x38, 0x7d, 0x61, 0x1e, 0x9a, 0x17, 0xd7, 0xa5, 0x3c, 0xf2, 0xc9,
		0x8a, 0x86, 0xfb, 0x69, 0xb7, 0x86, 0x7b, 0xf2, 0xe9, 0x66, 0x97, 0x86, 0xfb, 0xe5, 0xf3, 0x75,
		0xe7, 0xf3, 0xae, 0x0d, 0xb8, 0xbd, 0x53, 0x03, 0x26, 0xdd, 0xbf, 0x24, 0x92, 0xee, 0x90, 0x97,
		0xa9, 0x73, 0x5c, 0x14, 0xf4, 0xb9, 0x9a, 0x23, 0x94, 0x65, 0xc1, 0x88, 0x93, 0x10, 0x27, 0x21,
		0x4e, 0xca, 0x69, 0x9c, 0x54, 0x80, 0x23, 0x94, 0xac, 0x6b, 0xee, 0x51, 0x2d, 0x16, 0x4e, 0x48,
		0x26, 0x27, 0x24, 0x4b, 0x37, 0x47, 0xb4, 0x3c, 0x21, 0x59, 0x1a, 0x23, 0x4e, 0x48, 0x72, 0xe2,
		0x0a, 0x36, 0xba, 0x05, 0xda, 0x35, 0xc5, 0x09, 0x89, 0xc2, 0x58, 0x02, 0x91, 0x80, 0xd2, 0x48,
		0x80, 0x87, 0xee, 0xfd, 0x80, 0xdb, 0xe1, 0x8b, 0x19, 0x79, 0x01, 0x37, 0x89, 0x73, 0xf8, 0xd7,
		0x4a, 0x47, 0x4c, 0x80, 0x98, 0x00, 0x31, 0x41, 0x4e, 0x63, 0x02, 0xea, 0x8c, 0x7e, 0xd4, 0x5b,
		0x4a, 0x2b, 0x74, 0x92, 0x1e, 0x6e, 0x55, 0x6a, 0x8d, 0xda, 0x61, 0xf5, 0xa0, 0x76, 0x58, 0xe0,
		0xf4, 0xf0, 0xdd, 0x2c, 0xb3, 0x34, 0x5d, 0xba, 0x06, 0x32, 0xfb, 0x01, 0x46, 0x77, 0x0c, 0x8c,
		0x16, 0xb2, 0x63, 0xae, 0x82, 0xea, 0xfa, 0xaf, 0x54, 0x91, 0x9f, 0xe3, 0x49, 0x84, 0xfa, 0xc5,
		0x8a, 0xcf, 0xb5, 0x48, 0x83, 0x1c, 0xb9, 0x98, 0x80, 0xe4, 0x3e, 0x2f, 0x9a, 0xe2, 0x28, 0x03,
		0xf5, 0xa8, 0xac, 0xac, 0xda, 0x46, 0x69, 0xdb, 0x14, 0x67, 0x6f, 0x6f, 0x6c, 0xbd, 0xf6, 0x65,
		0xda, 0xb3, 0x65, 0x62, 0xc3, 0xc4, 0x7a, 0x61, 0xaf, 0x2c, 0x80, 0x48, 0x4f, 0xec, 0x95, 0xa9,
		0x97, 0xb5, 0x61, 0x16, 0x6c, 0x18, 0x6c, 0x18, 0xaa, 0xc3, 0xa3, 0x3a, 0x3c, 0x38, 0x45, 0x70,
		0x8a, 0x45, 0xe0, 0x14, 0x51, 0x1d, 0x5e, 0x7f, 0xb6, 0x12, 0xd5, 0xe1, 0x8b, 0x4f, 0x5b, 0xa2,
		0x3a, 0xbc, 0xf6, 0xfc, 0x25, 0x8a, 0xa6, 0x03, 0x05, 0x02, 0x05, 0x02, 0x05, 0x6e, 0x01, 0x05,
		0xa2, 0x68, 0xba, 0x94, 0x54, 0x14, 0x4d, 0x47, 0xd1, 0x74, 0x32, 0x14, 0x81, 0x5a, 0xe2, 0xa8,
		0x25, 0x0e, 0xf4, 0x00, 0xf4, 0x50, 0x1c, 0xf4, 0x90, 0xbb, 0x5a, 0xe2, 0x28, 0xb1, 0x0d, 0xbb,
		0x07, 0xbb, 0x07, 0xbb, 0xa7, 0xd8, 0xee, 0xa1, 0xc4, 0x76, 0x9a, 0x17, 0x43, 0x89, 0xed, 0x05,
		0x1d, 0x42, 0x89, 0x6d, 0x94, 0xd8, 0xa6, 0x0f, 0x1e, 0x8d, 0x9d, 0x25, 0xb2, 0x51, 0x79, 0x1a,
		0x90, 0x0c, 0x90, 0x6c, 0xd7, 0x21, 0x19, 0x2a, 0x4f, 0x6f, 0x6f, 0x35, 0x51, 0x57, 0x01, 0x95,
		0xa7, 0x51, 0x57, 0x61, 0xdb, 0xbe, 0x62, 0xa3, 0xdf, 0x40, 0xe5, 0x69, 0x20, 0xe8, 0xd7, 0x6d,
		0x2d, 0x0a, 0x32, 0x03, 0x31, 0x03, 0x31, 0xef, 0x18, 0x62, 0x46, 0x41, 0x66, 0x14, 0x64, 0x46,
		0x41, 0x66, 0x6d, 0x87, 0x8b, 0x82, 0xcc, 0xfa, 0x0f, 0x18, 0x05, 0x99, 0xb7, 0x1b, 0x2e, 0xdc,
		0xed, 0x64, 0xce, 0x17, 0xea, 0x14, 0x23, 0x7c, 0x40, 0xf8, 0xb0, 0xeb, 0xe1, 0x03, 0xea, 0x14,
		0x2b, 0x5b, 0x2c, 0xf0, 0xe9, 0xa8, 0x53, 0x0c, 0x3e, 0x7d, 0xdb, 0xae, 0x60, 0xa3, 0x5b, 0x40,
		0x9d, 0xe2, 0x0c, 0xa5, 0xdc, 0xa1, 0x7c, 0xef, 0x92, 0x49, 0x41, 0xf9, 0x5e, 0x40, 0x65, 0x40,
		0xe5, 0x22, 0x41, 0x65, 0x94, 0xef, 0x4d, 0xf1, 0x62, 0x28, 0xdf, 0xbb, 0x5e, 0x97, 0x50, 0xbe,
		0x17, 0xe5, 0x7b, 0x81, 0xd1, 0x08, 0x9e, 0xdc, 0xdd, 0xaa, 0xb6, 0xa3, 0x42, 0x89, 0x59, 0x15,
		0x84, 0x7c, 0xa7, 0x70, 0x51, 0x62, 0xb4, 0x24, 0x7a, 0x57, 0xae, 0x74, 0xee, 0x46, 0xbc, 0xc9,
		0xb9, 0x58, 0xed, 0xbc, 0xd8, 0x3f, 0xb5, 0x3c, 0x36, 0x9c, 0x5b, 0x31, 0x5b, 0x11, 0x9b, 0xc9,
		0x39, 0x09, 0x95, 0xc3, 0x5a, 0xed, 0xa0, 0x51, 0xab, 0x95, 0x1b, 0xd5, 0x46, 0xf9, 0xa8, 0x5e,
		0xaf, 0x1c, 0x88, 0x1c, 0xa1, 0x97, 0xae, 0xc2, 0x2e, 0x0b, 0x59, 0xf7, 0x53, 0x3c, 0x2d, 0xfe,
		0xc0, 0xf3, 0x64, 0x44, 0x7c, 0x8d, 0x58, 0x28, 0x64, 0xac, 0xd2, 0xae, 0xa2, 0xe4, 0x96, 0xda,
		0xde, 0x56, 0x2a, 0x09, 0x55, 0x3b, 0x0d, 0x07, 0x0e, 0xf7, 0x27, 0xc4, 0xd0, 0xf8, 0x85, 0x4e,
		0x87, 0xef, 0xd3, 0x39, 0x19, 0x7d, 0x5d, 0xa7, 0x39, 0xfb, 0x8a, 0x77, 0x6a, 0x76, 0x5b, 0xb2,
		0x4f, 0x26, 0x5c, 0x49, 0xd1, 0x15, 0xcc, 0x78, 0xe5, 0x92, 0xcd, 0xe5, 0xdb, 0x33, 0x93, 0x60,
		0x56, 0x4a, 0x01, 0x4f, 0x3e, 0x15, 0xb3, 0xd8, 0x94, 0x27, 0xa5, 0xc6, 0x52, 0x16, 0xac, 0x4d,
		0x1d, 0x92, 0x8b, 0x84, 0xde, 0x92, 0x21, 0xb6, 0x68, 0x28, 0x2d, 0x1d, 0x32, 0x4b, 0x87, 0xc6,
		0xf2, 0x21, 0x30, 0xed, 0x6e, 0x4c, 0x5b, 0x10, 0xb6, 0xe4, 0x4c, 0xb4, 0x23, 0xe5, 0xcc, 0x4f,
		0x16, 0x7c, 0xfc, 0x7c, 0x5a, 0xe7, 0x2d, 0x54, 0x73, 0x59, 0x98, 0x5d, 0x92, 0x61, 0x93, 0x88,
		0xd8, 0x23, 0x59, 0xb6, 0x88, 0x8c, 0x1d, 0x22, 0x63, 0x83, 0xe8, 0xd8, 0x1f, 0xb5, 0x40, 0x51,
		0xb4, 0x46, 0xf2, 0x32, 0xcd, 0xfa, 0x18, 0xda, 0xfe, 0xc0, 0xb3, 0x43, 0x97, 0xbf, 0xc8, 0x57,
		0x2c, 0x7f, 0x45, 0x36, 0x5a, 0x31, 0xa0, 0x8c, 0xf9, 0xd6, 0x89, 0xd8, 0xa2, 0xb6, 0x62, 0xa0,
		0x49, 0x69, 0xa6, 0x48, 0x65, 0xa6, 0x4d, 0x61, 0x9e, 0x1d, 0x27, 0xdf, 0x9c, 0x7d, 0xfa, 0xda,
		0x6e, 0xde, 0xfc, 0xde, 0xb9, 0x3d, 0xbf, 0x6a, 0x77, 0xbe, 0xdc, 0x34, 0x2f, 0xbf, 0x9e, 0x37,
		0x6f, 0xce, 0xda, 0xbf, 0xcb, 0x2a, 0x25, 0x61, 0xda, 0x32, 0x71, 0xba, 0x76, 0x3c, 0xe6, 0xd1,
		0x70, 0x2b, 0x7b, 0x56, 0xfd, 0x0b, 0xc1, 0xf1, 0xc2, 0xc7, 0xfc, 0x0e, 0xd1, 0xda, 0xd3, 0x7d,
		0x84, 0x24, 0xe3, 0x7b, 0xb7, 0x1d, 0xba, 0xb2, 0x98, 0x84, 0x23, 0x79, 0x3f, 0xb2, 0x6c, 0xba,
		0xc3, 0x70, 0xee, 0x9a, 0xbd, 0xe8, 0xd1, 0xb4, 0x07, 0x3c, 0x20, 0x80, 0x5c, 0xf3, 0xd2, 0x00,
		0xb2, 0x00, 0xb2, 0x00, 0xb2, 0x04, 0x35, 0xe7, 0x3e, 0x08, 0x3c, 0x66, 0xfb, 0x14, 0x00, 0xab,
		0x02, 0x7b, 0x9a, 0xbd, 0x3d, 0x65, 0x3f, 0xfb, 0xcc, 0xe1, 0xac, 0x4b, 0x67, 0x53, 0xa7, 0x12,
		0x61, 0x57, 0x61, 0x57, 0x61, 0x57, 0x05, 0x35, 0x47, 0xba, 0x98, 0xaa, 0x64, 0x11, 0x55, 0x98,
		0x55, 0x29, 0xb3, 0xca, 0x43, 0xdb, 0x8f, 0x7a, 0x2e, 0xa7, 0x33, 0xab, 0x53, 0x89, 0x30, 0xab,
		0x30, 0xab, 0x30, 0xab, 0x30, 0xab, 0x85, 0x35, 0xab, 0xbb, 0x96, 0x44, 0x12, 0x70, 0x5f, 0xa8,
		0x85, 0x78, 0x8a, 0x2c, 0x8e, 0x14, 0xc7, 0xeb, 0x62, 0x6d, 0x76, 0xa5, 0xda, 0xeb, 0x4a, 0x1f,
		0xf1, 0x5a, 0x38, 0xe2, 0xc5, 0x11, 0x6f, 0xc2, 0xd7, 0x14, 0x3e, 0xe2, 0xbd, 0xb7, 0x9d, 0x1f,
		0x8f, 0x61, 0x30, 0xf0, 0xbb, 0xe6, 0xbd, 0x17, 0x38, 0x3f, 0x4c, 0x16, 0x86, 0x41, 0x18, 0xc9,
		0x23, 0xb8, 0x4d, 0x82, 0x01, 0xe4, 0x00, 0xe4, 0x00, 0xe4, 0x04, 0x35, 0xc7, 0x09, 0x06, 0x3e,
		0x67, 0xa1, 0x54, 0xc3, 0xda, 0xc9, 0x56, 0x92, 0xb8, 0xfe, 0x41, 0x74, 0x73, 0x86, 0xe0, 0x7a,
		0x11, 0xe5, 0x4d, 0x19, 0xea, 0x7a, 0xfa, 0xca, 0x6e, 0x55, 0xd0, 0xdf, 0xa6, 0x20, 0x38, 0x2c,
		0x25, 0xbd, 0xf9, 0x32, 0x5d, 0x0a, 0x9a, 0xcc, 0xf0, 0xa2, 0xaf, 0xce, 0x96, 0xee, 0x96, 0xdc,
		0xe5, 0x98, 0x72, 0x72, 0x82, 0x2e, 0x33, 0x9f, 0xdd, 0xc0, 0x1b, 0x46, 0x3d, 0x04, 0x78, 0x65,
		0x59, 0x20, 0x70, 0x0a, 0x70, 0x0a, 0x70, 0x0a, 0x70, 0x0a, 0x70, 0x0a, 0x70, 0x0a, 0x70, 0x0a,
		0x70, 0x8a, 0x20, 0x4e, 0x19, 0xb2, 0x1e, 0x6c, 0xcc, 0x81, 0x10, 0xc0, 0x94, 0x25, 0x79, 0x40,
		0x29, 0x40, 0x29, 0x40, 0x29, 0x40, 0x29, 0x40, 0x29, 0x40, 0x29, 0x40, 0x29, 0x3a, 0xa2, 0x14,
		0x41, 0x2b, 0x49, 0x58, 0x3f, 0xb3, 0x14, 0xb2, 0x07, 0x16, 0x32, 0xdf, 0xc9, 0x85, 0x8d, 0x9a,
		0x18, 0xef, 0xb3, 0xf6, 0x57, 0xb3, 0x6d, 0xdc, 0x30, 0x67, 0xcf, 0xf8, 0xb2, 0x77, 0x68, 0x1d,
		0xe4, 0xbc, 0x9e, 0xd9, 0x6c, 0x0e, 0x8b, 0x54, 0xd2, 0x6c, 0x65, 0x92, 0x11, 0x23, 0x28, 0x8c,
		0x11, 0x22, 0xe6, 0x04, 0x7e, 0x97, 0x30, 0x48, 0x98, 0x08, 0x44, 0x94, 0x80, 0x28, 0x01, 0x51,
		0x02, 0xa2, 0x04, 0x44, 0x09, 0x88, 0x12, 0x10, 0x25, 0x00, 0xa7, 0x88, 0xe2, 0x94, 0xc8, 0x0f,
		0x09, 0xc0, 0x49, 0x2c, 0x45, 0x0e, 0x91, 0x54, 0x80, 0x48, 0x80, 0x48, 0x8a, 0x86, 0x48, 0x44,
		0x53, 0x34, 0xa7, 0x02, 0xec, 0x67, 0xc2, 0xf6, 0xa4, 0xb1, 0x30, 0x14, 0x4c, 0x4f, 0xb2, 0x49,
		0xf9, 0x4b, 0x9f, 0x45, 0xa8, 0x96, 0x4e, 0x4d, 0x2d, 0x4c, 0x67, 0x16, 0xa5, 0xd2, 0x97, 0x74,
		0xae, 0xcb, 0x1c, 0xb7, 0x67, 0x7b, 0x52, 0x01, 0xc7, 0x8a, 0xc7, 0xb4, 0x08, 0x64, 0xad, 0xa0,
		0x37, 0x0b, 0x45, 0xd8, 0x05, 0x31, 0xf6, 0x91, 0x65, 0x55, 0xab, 0x0d, 0xab, 0x5c, 0x3d, 0x38,
		0xac, 0xd7, 0x1a, 0x8d, 0xfa, 0x61, 0x59, 0x79, 0x35, 0x76, 0x0b, 0xd5, 0xd8, 0x55, 0xaf, 0x61,
		0xa3, 0xc0, 0x6b, 0x88, 0xb2, 0xec, 0x94, 0xdf, 0x2f, 0xd3, 0x3a, 0xc7, 0xf5, 0x23, 0x6e, 0xfb,
		0x9c, 0x0e, 0xeb, 0x4d, 0x04, 0x02, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01,
		0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0xe5, 0x04, 0xef, 0x71, 0x16, 0x3e, 0xdb, 0x1e, 0x25,
		0xe0, 0x1b, 0x4b, 0x04, 0xe2, 0x03, 0xe2, 0x03, 0xe2, 0xcb, 0x1d, 0xe2, 0x8b, 0xb8, 0xcd, 0x4d,
		0xa2, 0x4d, 0x6a, 0xd0, 0xa4, 0x17, 0x4c, 0x45, 0x7d, 0xf5, 0x47, 0xae, 0xa7, 0xe4, 0xdb, 0x7e,
		0x20, 0x97, 0x40, 0x04, 0xdc, 0x47, 0xde, 0x47, 0xaf, 0xc0, 0x8d, 0xfa, 0x8a, 0x02, 0xf3, 0xd4,
		0xa5, 0x3f, 0xe8, 0xb0, 0x8a, 0xc0, 0x79, 0xc2, 0x8b, 0xd2, 0xb3, 0x09, 0x3b, 0x60, 0xc7, 0xc2,
		0x80, 0xee, 0x80, 0xee, 0x80, 0xee, 0xc0, 0xe7, 0x81, 0xcf, 0x03, 0x9f, 0x07, 0x3e, 0x0f, 0x7c,
		0x1e, 0x70, 0x5e, 0x5e, 0x70, 0x9e, 0xc9, 0xdd, 0x1e, 0x23, 0x05, 0x7b, 0x23, 0x89, 0x40, 0x7c,
		0x40, 0x7c, 0x40, 0x7c, 0xb9, 0x43, 0x7c, 0xf1, 0xde, 0xe4, 0xae, 0xf3, 0x23, 0x22, 0xc5, 0x7c,
		0x60, 0xf3, 0xc0, 0xe6, 0x81, 0xcd, 0x03, 0x9b, 0x07, 0x94, 0x97, 0x4b, 0x94, 0x47, 0x60, 0x68,
		0x66, 0x00, 0xcf, 0xf5, 0x81, 0xed, 0x80, 0xed, 0x80, 0xed, 0xc0, 0xe6, 0x81, 0xcd, 0x03, 0x9b,
		0x07, 0x36, 0x0f, 0x6c, 0x1e, 0x70, 0x5e, 0x6e, 0x70, 0x1e, 0x35, 0x9b, 0x37, 0x91, 0x08, 0xc4,
		0x07, 0xc4, 0x07, 0xc4, 0x07, 0x36, 0x0f, 0x6c, 0x1e, 0xd8, 0x3c, 0xb0, 0x79, 0x60, 0xf3, 0x80,
		0xf2, 0xe4, 0x50, 0x5e, 0x21, 0x7b, 0x93, 0x2a, 0x6a, 0xbd, 0x39, 0xec, 0x58, 0xb9, 0x2f, 0x51,
		0x6b, 0x69, 0xf4, 0x72, 0x3c, 0x1c, 0x38, 0xdc, 0x1f, 0x3b, 0xc6, 0xf6, 0xf8, 0x05, 0x4e, 0x87,
		0xdf, 0xdf, 0x39, 0x19, 0x7d, 0x5d, 0xe7, 0x8a, 0xfb, 0x9d, 0x56, 0xfc, 0x45, 0x39, 0x2e, 0x5d,
		0xf5, 0xc0, 0x1c, 0xd3, 0x09, 0xc2, 0x70, 0xd8, 0xa3, 0xdf, 0xbc, 0x1f, 0xed, 0x6c, 0xc9, 0x42,
		0x56, 0x6b, 0x64, 0xa2, 0xd0, 0x26, 0xca, 0x5a, 0x49, 0x82, 0x72, 0x14, 0xda, 0x44, 0xa1, 0x4d,
		0x05, 0xe8, 0x17, 0x85, 0x36, 0x73, 0x83, 0x6a, 0x51, 0x68, 0x93, 0x90, 0x3d, 0xd0, 0xb2, 0xd0,
		0xe6, 0x12, 0xb2, 0x78, 0xe1, 0x8c, 0x1e, 0xae, 0x0c, 0x85, 0x02, 0xaf, 0x00, 0xaf, 0x00, 0xaf,
		0x00, 0xaf, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xaf, 0x48, 0xe0, 0x95, 0x81, 0x3f, 0x06,
		0x17, 0xf6, 0xbd, 0xc7, 0xc8, 0xda, 0x1d, 0x6e, 0x94, 0x0c, 0xe4, 0x02, 0xe4, 0x02, 0xe4, 0x02,
		0xe4, 0x02, 0xe4, 0x02, 0xe4, 0x02, 0xe4, 0x02, 0xe4, 0x42, 0x86, 0x5c, 0x62, 0x1f, 0xa6, 0x04,
		0xb8, 0x8c, 0x04, 0x03, 0xb7, 0x00, 0xb7, 0x00, 0xb7, 0x00, 0xb7, 0x00, 0xb7, 0x00, 0xb7, 0x00,
		0xb7, 0x00, 0xb7, 0x08, 0xe2, 0x96, 0x7e, 0x10, 0x71, 0x33, 0xc6, 0x18, 0xf7, 0x8c, 0xa0, 0x25,
		0xdb, 0x82, 0x34, 0xb4, 0x66, 0x03, 0x42, 0xd9, 0x31, 0x84, 0x82, 0xd6, 0x6c, 0x6a, 0x36, 0x25,
		0xe5, 0xe6, 0xdc, 0xb8, 0x49, 0x71, 0x3d, 0x44, 0xd1, 0xf5, 0x90, 0xd9, 0xec, 0xe2, 0x8a, 0xc8,
		0x92, 0xee, 0x15, 0xe7, 0x52, 0x70, 0xe5, 0x10, 0xf7, 0x43, 0x04, 0xc1, 0xf7, 0x16, 0x6e, 0x05,
		0x57, 0x0e, 0x71, 0x2d, 0x58, 0xf5, 0x22, 0x36, 0x8a, 0xbc, 0x88, 0xb8, 0x31, 0x42, 0xf9, 0xfd,
		0xe8, 0xd2, 0x06, 0xe8, 0x07, 0xe8, 0x07, 0xe8, 0x07, 0xe8, 0x07, 0xe8, 0x07, 0xe8, 0x07, 0xe8,
		0x07, 0xe8, 0x07, 0xe8, 0x97, 0x08, 0xfa, 0xa1, 0x61, 0xdb, 0x56, 0xc1, 0x1f, 0x80, 0x1f, 0x4a,
		0xc2, 0x64, 0x0a, 0xfa, 0xd0, 0xb0, 0x6d, 0x57, 0x90, 0x1f, 0x8a, 0xc2, 0x14, 0x0e, 0xe7, 0xa1,
		0x28, 0x0c, 0x70, 0x9e, 0x12, 0x9c, 0x87, 0x86, 0x6d, 0xa0, 0xf6, 0x40, 0xed, 0x81, 0xda, 0x03,
		0xb5, 0x07, 0x6a, 0x0f, 0xd4, 0x1e, 0xa8, 0x3d, 0x40, 0xbe, 0x5d, 0x80, 0x7c, 0xe8, 0xdd, 0x06,
		0x6a, 0x0f, 0xd4, 0xde, 0xce, 0x80, 0x3e, 0x54, 0x7b, 0x06, 0xb1, 0x07, 0x62, 0x0f, 0xc4, 0x1e,
		0x88, 0xbd, 0x1d, 0x42, 0x79, 0xe8, 0xdd, 0x06, 0x62, 0x0f, 0xc4, 0x1e, 0x88, 0x3d, 0x10, 0x7b,
		0x20, 0xf6, 0x40, 0xec, 0x81, 0xd8, 0x03, 0xe4, 0xdb, 0x01, 0xc8, 0x87, 0x36, 0x6e, 0x20, 0xf6,
		0x40, 0xec, 0x81, 0xd8, 0x03, 0xb1, 0x07, 0x62, 0x0f, 0xc4, 0x1e, 0x88, 0x3d, 0xa0, 0xbc, 0x7c,
		0xa2, 0x3c, 0xb4, 0x71, 0x5b, 0x6e, 0xe3, 0x46, 0x50, 0x9f, 0xc9, 0x48, 0xd5, 0xce, 0xed, 0x3a,
		0x88, 0xf8, 0x67, 0xe6, 0x7c, 0x62, 0xb9, 0x6e, 0xea, 0xd6, 0x0f, 0x19, 0x61, 0x0d, 0xac, 0x39,
		0x61, 0x28, 0x81, 0x85, 0x12, 0x58, 0x92, 0xa0, 0x1c, 0x25, 0xb0, 0x64, 0xb4, 0x0f, 0x25, 0xb0,
		0x52, 0x6d, 0x52, 0x84, 0xd6, 0x38, 0x53, 0xc9, 0x3a, 0xbc, 0xc6, 0x99, 0xca, 0x0e, 0xc4, 0xd6,
		0x38, 0x53, 0xd1, 0x20, 0xda, 0xc6, 0x99, 0x0a, 0xa2, 0x6d, 0x15, 0x5a, 0x8c, 0x12, 0x58, 0x80,
		0x7e, 0x80, 0x7e, 0x80, 0x7e, 0x80, 0x7e, 0x80, 0x7e, 0x80, 0x7e, 0x80, 0x7e, 0x80, 0x7e, 0xbb,
		0x04, 0xfd, 0x50, 0x02, 0x6b, 0xab, 0xe0, 0x0f, 0xc0, 0x0f, 0xe9, 0x34, 0x99, 0x82, 0x3e, 0x94,
		0xc0, 0xda, 0x15, 0xe4, 0x87, 0x84, 0x9a, 0xc2, 0xe1, 0x3c, 0x24, 0xd4, 0x00, 0xe7, 0x29, 0xc1,
		0x79, 0x28, 0x81, 0x05, 0x6a, 0x0f, 0xd4, 0x1e, 0xa8, 0x3d, 0x50, 0x7b, 0xa0, 0xf6, 0x40, 0xed,
		0x81, 0xda, 0x03, 0xe4, 0xdb, 0x05, 0xc8, 0x87, 0x12, 0x58, 0xa0, 0xf6, 0x40, 0xed, 0xed, 0x0c,
		0xe8, 0xc3, 0x4d, 0x39, 0x10, 0x7b, 0x20, 0xf6, 0x40, 0xec, 0x81, 0xd8, 0xdb, 0x21, 0x94, 0x87,
		0x12, 0x58, 0x20, 0xf6, 0x40, 0xec, 0x81, 0xd8, 0x03, 0xb1, 0x07, 0x62, 0x0f, 0xc4, 0x1e, 0x88,
		0x3d, 0x40, 0xbe, 0x1d, 0x80, 0x7c, 0x28, 0x81, 0x05, 0x62, 0x0f, 0xc4, 0x1e, 0x88, 0x3d, 0x10,
		0x7b, 0x20, 0xf6, 0x40, 0xec, 0x81, 0xd8, 0x03, 0xca, 0xcb, 0x27, 0xca, 0x43, 0x09, 0xac, 0x95,
		0x12, 0x58, 0xd2, 0xe5, 0x99, 0x8c, 0x74, 0x15, 0xb0, 0x42, 0x96, 0xff, 0x02, 0x58, 0xff, 0x32,
		0x9f, 0xc7, 0xe6, 0x44, 0xb2, 0xf8, 0xd5, 0x44, 0x10, 0x0a, 0x5f, 0xa1, 0xf0, 0x95, 0x24, 0x14,
		0x47, 0xe1, 0x2b, 0x19, 0xed, 0x43, 0xe1, 0x2b, 0x04, 0xd3, 0x08, 0xa6, 0x71, 0x82, 0x22, 0x85,
		0xf3, 0x2d, 0x04, 0xd2, 0x82, 0x51, 0xd9, 0x16, 0x0e, 0x50, 0x2c, 0x9c, 0x9f, 0xa8, 0x5e, 0xc3,
		0x46, 0x81, 0xd7, 0x10, 0x81, 0x35, 0x69, 0x60, 0x8d, 0x6a, 0x57, 0xc0, 0x7b, 0xc0, 0x7b, 0xc0,
		0x7b, 0xc0, 0x7b, 0xc0, 0x7b, 0xc0, 0x7b, 0xc0, 0x7b, 0xc0, 0x7b, 0xc0, 0x7b, 0x1b, 0xf1, 0x1e,
		0x4a, 0x5c, 0x01, 0xf1, 0x01, 0xf1, 0xed, 0x0e, 0xe2, 0x43, 0x89, 0xab, 0x5d, 0xc1, 0x7d, 0x48,
		0x98, 0x29, 0x1c, 0xcc, 0x43, 0xc2, 0x0c, 0x70, 0x9e, 0x12, 0x9c, 0x87, 0x12, 0x57, 0x40, 0x77,
		0x40, 0x77, 0xe0, 0xf3, 0xc0, 0xe7, 0x81, 0xcf, 0x03, 0x9f, 0x07, 0x3e, 0x0f, 0x38, 0x4f, 0x5b,
		0x9c, 0x87, 0xba, 0x56, 0x40, 0x7c, 0x40, 0x7c, 0x3b, 0x83, 0xf8, 0x70, 0xfd, 0x0d, 0x6c, 0x1e,
		0xd8, 0x3c, 0xb0, 0x79, 0x60, 0xf3, 0x76, 0x08, 0xe5, 0xa1, 0xae, 0x15, 0xb0, 0x1d, 0xb0, 0x1d,
		0xd8, 0x3c, 0xb0, 0x79, 0x60, 0xf3, 0xc0, 0xe6, 0x81, 0xcd, 0x03, 0xce, 0xd3, 0x15, 0xe7, 0xa1,
		0x98, 0x15, 0x10, 0x1f, 0x10, 0x1f, 0xd8, 0x3c, 0xb0, 0x79, 0x60, 0xf3, 0xc0, 0xe6, 0x81, 0xcd,
		0x03, 0xca, 0xcb, 0x27, 0xca, 0x43, 0x31, 0xab, 0xe5, 0x62, 0x56, 0x72, 0xe5, 0x96, 0x8c, 0x54,
		0x85, 0xac, 0xfe, 0xcf, 0x68, 0x93, 0xe6, 0xb8, 0x8a, 0x55, 0xd8, 0x75, 0xcd, 0x5e, 0xf4, 0x28,
		0x5f, 0xc5, 0x6a, 0x22, 0x48, 0xae, 0x8a, 0x55, 0x19, 0x55, 0xac, 0xa8, 0xb1, 0x39, 0xaa, 0x58,
		0xa9, 0x36, 0x7b, 0xd2, 0x70, 0x7b, 0xee, 0x12, 0x4c, 0xe8, 0xfa, 0x32, 0x45, 0xa8, 0xa6, 0x6c,
		0xea, 0x61, 0x8e, 0x6d, 0x4e, 0xc4, 0x9e, 0x59, 0xc8, 0xbc, 0x17, 0x93, 0x85, 0x61, 0x10, 0xb2,
		0xae, 0x39, 0x81, 0xed, 0xd2, 0x46, 0x68, 0xa3, 0x64, 0x58, 0x25, 0x58, 0x25, 0x58, 0x25, 0x41,
		0xcd, 0x71, 0x82, 0x81, 0xcf, 0x59, 0x28, 0x15, 0xfa, 0x13, 0x84, 0xfc, 0x44, 0x21, 0x39, 0x01,
		0x2b, 0x42, 0x19, 0x82, 0x53, 0x87, 0xde, 0xca, 0x82, 0x35, 0xfa, 0x20, 0x8d, 0x20, 0xc4, 0x26,
		0x0d, 0xad, 0x33, 0x08, 0xa9, 0x8b, 0xb4, 0x3a, 0x5b, 0x0a, 0x59, 0xef, 0x72, 0x8c, 0x5c, 0x78,
		0xe8, 0xde, 0x0f, 0xb8, 0x1d, 0xbe, 0x98, 0x91, 0x17, 0x70, 0xf3, 0x31, 0xb4, 0xfd, 0x81, 0x67,
		0x87, 0x2e, 0x7f, 0x91, 0xc7, 0x2e, 0xaf, 0xc8, 0x06, 0x7a, 0x01, 0x7a, 0x01, 0x7a, 0x11, 0xd4,
		0x1c, 0xb7, 0xcb, 0x7c, 0xee, 0xf2, 0x97, 0x90, 0x3d, 0x50, 0x04, 0x56, 0x12, 0x8e, 0xa0, 0x74,
		0x36, 0x7e, 0x95, 0x4f, 0x76, 0x44, 0x78, 0x76, 0xda, 0xbe, 0x39, 0xfb, 0xf4, 0xb5, 0xdd, 0xbc,
		0xf9, 0xbd, 0x73, 0x7b, 0x7e, 0xd5, 0xee, 0x7c, 0xb9, 0x69, 0x5e, 0x7e, 0x3d, 0x6f, 0xde, 0x9c,
		0xb5, 0x7f, 0x97, 0x55, 0xca, 0xa1, 0x3f, 0x8c, 0x48, 0x0e, 0x41, 0x88, 0x3c, 0xf4, 0xfc, 0x98,
		0x47, 0xc3, 0xad, 0xec, 0x59, 0xf5, 0x2f, 0xa5, 0x3c, 0x60, 0x11, 0x65, 0x43, 0xb4, 0xf6, 0x74,
		0x1f, 0x21, 0xc9, 0xf8, 0xa4, 0x24, 0xdc, 0x65, 0x6d, 0x17, 0xb3, 0xc1, 0x2b, 0x7c, 0x48, 0xca,
		0x9a, 0xf6, 0x80, 0x07, 0x04, 0x08, 0x65, 0x5e, 0x1a, 0x30, 0x09, 0x30, 0x09, 0x30, 0x89, 0xa0,
		0xe6, 0xdc, 0x07, 0x81, 0xc7, 0x6c, 0x9f, 0x02, 0x8f, 0x54, 0x0a, 0x60, 0x7e, 0xd8, 0xcf, 0x3e,
		0x73, 0x38, 0xeb, 0xd2, 0x99, 0xa0, 0xa9, 0x44, 0x98, 0x21, 0x98, 0x21, 0x98, 0x21, 0x41, 0xcd,
		0xd9, 0x8d, 0xe3, 0xa6, 0x89, 0xcd, 0x08, 0x99, 0xf3, 0x4c, 0x67, 0x81, 0x86, 0xd2, 0x60, 0x7d,
		0x60, 0x7d, 0x60, 0x7d, 0x60, 0x7d, 0x12, 0x58, 0x1f, 0x1e, 0xda, 0x7e, 0xd4, 0x73, 0x39, 0x9d,
		0x05, 0x9a, 0x4a, 0x84, 0x15, 0x82, 0x15, 0x82, 0x15, 0x82, 0x15, 0x7a, 0xe5, 0x1d, 0x07, 0xbe,
		0xfd, 0x6c, 0xbb, 0x9e, 0x7d, 0xef, 0x31, 0xba, 0x6c, 0x9b, 0x75, 0x42, 0x61, 0x8b, 0x60, 0x8b,
		0x60, 0x8b, 0x04, 0x35, 0x07, 0x89, 0x36, 0x4b, 0x2f, 0x82, 0x44, 0x1b, 0x24, 0xda, 0xe8, 0xbf,
		0x3a, 0xba, 0x27, 0xda, 0xbc, 0x53, 0xa8, 0xab, 0xb2, 0x77, 0x4e, 0x94, 0xde, 0x35, 0x49, 0xe7,
		0xc1, 0x92, 0xcf, 0x53, 0xb2, 0x4f, 0x26, 0x9c, 0xc9, 0x12, 0xfb, 0xc9, 0x43, 0xdb, 0x1c, 0xf8,
		0x11, 0x8f, 0x91, 0x5c, 0xaa, 0x59, 0x2c, 0xfd, 0xfb, 0x89, 0xf9, 0xa9, 0x1d, 0x85, 0xc0, 0x2a,
		0x4d, 0x3c, 0xe4, 0xde, 0xfe, 0x68, 0x71, 0x96, 0x27, 0x7f, 0x78, 0x6f, 0xd7, 0xf8, 0x6f, 0xe3,
		0x2f, 0xd7, 0x37, 0x57, 0xed, 0xce, 0x55, 0xfb, 0xf2, 0x2f, 0x02, 0x2e, 0x54, 0x16, 0x72, 0xcd,
		0x43, 0xad, 0xe1, 0xc4, 0x08, 0x02, 0x0a, 0x2a, 0x80, 0xb5, 0x00, 0xac, 0x52, 0xcc, 0x5c, 0x26,
		0x11, 0xc9, 0x29, 0x8b, 0x9c, 0xd0, 0xed, 0x4b, 0x5d, 0x16, 0x9b, 0xaa, 0xc5, 0x99, 0xef, 0x78,
		0x83, 0x2e, 0x33, 0xf8, 0x13, 0x33, 0xae, 0xda, 0x97, 0x46, 0x3f, 0x0c, 0x78, 0xe0, 0x04, 0x9e,
		0xd1, 0xb5, 0xb9, 0x6d, 0x04, 0xbe, 0xf7, 0x62, 0xc4, 0x0b, 0x12, 0xff, 0xfb, 0x77, 0x7f, 0x3c,
		0x70, 0xc3, 0x8d, 0x8c, 0x41, 0xe4, 0xfa, 0x8f, 0xc3, 0x27, 0x1e, 0x42, 0xbb, 0xe7, 0xfa, 0x8f,
		0x7b, 0xa2, 0x6b, 0x46, 0x80, 0xd6, 0xe7, 0xd5, 0xa7, 0x3b, 0x37, 0x3b, 0x12, 0x40, 0x8e, 0x12,
		0xaa, 0x2f, 0x68, 0x13, 0xe1, 0x84, 0xe7, 0xd3, 0x0b, 0xbd, 0xa3, 0xf5, 0xa2, 0x49, 0x6d, 0xb1,
		0xa0, 0x37, 0x53, 0xe4, 0xc5, 0x52, 0xa8, 0x5e, 0xe2, 0x3b, 0x91, 0xc9, 0xd6, 0xfb, 0xed, 0xf9,
		0x4f, 0x30, 0xa3, 0xa5, 0x91, 0x13, 0x4e, 0x3a, 0x91, 0x0b, 0xad, 0x88, 0x92, 0xde, 0x0f, 0x9d,
		0xb2, 0x3f, 0x09, 0x3f, 0x3e, 0x65, 0x2a, 0x12, 0x16, 0xca, 0x11, 0x61, 0x26, 0x24, 0x99, 0x08,
		0x51, 0x5b, 0x26, 0xcd, 0x34, 0x48, 0x9b, 0x2b, 0x79, 0x26, 0x81, 0x16, 0x59, 0x9d, 0xba, 0x61,
		0xba, 0x85, 0xb3, 0xbb, 0x3d, 0xd7, 0x37, 0xd3, 0xa9, 0xed, 0xca, 0xaa, 0xcf, 0x0b, 0x49, 0x39,
		0x7f, 0x62, 0x34, 0x9c, 0x30, 0xfd, 0x26, 0x43, 0xbb, 0x11, 0xd1, 0x6d, 0x94, 0x98, 0x4f, 0x8a,
		0x5e, 0x53, 0x83, 0xfa, 0xa4, 0xe8, 0x34, 0xb5, 0x81, 0x9b, 0x30, 0x6d, 0xb6, 0x4e, 0xd1, 0x87,
		0x28, 0x56, 0x64, 0xf9, 0x27, 0xe6, 0xbb, 0x26, 0xf0, 0x6c, 0xcb, 0x1f, 0xf4, 0xc4, 0x15, 0xa7,
		0x1d, 0xdc, 0x8e, 0x8e, 0x1e, 0xa4, 0x30, 0x63, 0x39, 0x9e, 0x88, 0xd6, 0x65, 0xf3, 0xd3, 0x79,
		0xeb, 0x54, 0x06, 0x29, 0x56, 0x62, 0x39, 0xa7, 0x67, 0xb7, 0xd2, 0x82, 0xac, 0x58, 0xd0, 0x45,
		0xf3, 0xec, 0xb2, 0x5d, 0xca, 0x96, 0x85, 0x0d, 0xce, 0x24, 0xfb, 0xc3, 0xcf, 0x86, 0x9f, 0xd8,
		0x9d, 0xaf, 0x57, 0x8b, 0xcb, 0x89, 0x14, 0x09, 0xca, 0x69, 0x3c, 0x85, 0xc7, 0x86, 0x55, 0x70,
		0x7c, 0x9c, 0x62, 0x3d, 0x4b, 0x8e, 0xe7, 0x32, 0x9f, 0x9b, 0x3d, 0xbb, 0xdf, 0x77, 0xfd, 0x47,
		0xb3, 0x17, 0x74, 0x25, 0xdc, 0xe0, 0x3a, 0x61, 0x70, 0x87, 0x70, 0x87, 0xda, 0xba, 0x43, 0xb9,
		0x8b, 0x4e, 0x32, 0x17, 0x9c, 0x68, 0x2e, 0x36, 0x4d, 0x07, 0x72, 0x72, 0x7e, 0xd6, 0xba, 0x6c,
		0x77, 0x2e, 0x9a, 0xd7, 0xd7, 0x67, 0x97, 0x5f, 0x3a, 0x17, 0x57, 0xa7, 0x2d, 0x51, 0x2d, 0x22,
		0xb8, 0xc1, 0x44, 0x74, 0x4b, 0x2b, 0x1e, 0x45, 0xa7, 0xf2, 0x8f, 0x4a, 0xb9, 0x2c, 0x71, 0xd7,
		0x45, 0xe2, 0x20, 0x87, 0x76, 0x18, 0x96, 0x1e, 0xc3, 0xa8, 0xe9, 0x30, 0x0c, 0x4b, 0x0f, 0xa5,
		0xb2, 0xf4, 0x50, 0xaa, 0xaa, 0x1e, 0xab, 0x51, 0x93, 0x1d, 0x86, 0xd0, 0x93, 0x77, 0x85, 0x84,
		0xad, 0x5d, 0x89, 0xa3, 0x8c, 0xb9, 0x9a, 0xfa, 0xa2, 0x8c, 0x3f, 0x60, 0x2a, 0x60, 0x6a, 0x81,
		0x60, 0xaa, 0x70, 0xc2, 0xa5, 0x60, 0xa2, 0xa5, 0x9a, 0x3d, 0xef, 0xfa, 0x5d, 0xf6, 0x53, 0x7c,
		0xb7, 0x8f, 0x1e, 0xc7, 0x3e, 0xc7, 0x3e, 0xd7, 0x76, 0x9f, 0x0f, 0x5c, 0x9f, 0x57, 0x2d, 0x89,
		0x7d, 0x2e, 0xd0, 0xab, 0x42, 0x32, 0x73, 0x51, 0x82, 0x3b, 0xa4, 0xc8, 0x54, 0xa4, 0xca, 0x50,
		0x24, 0xcf, 0x7d, 0xa3, 0xcb, 0x79, 0x93, 0xe9, 0x3a, 0x41, 0x91, 0x81, 0x38, 0x9d, 0xe2, 0x9a,
		0x75, 0x54, 0x3b, 0x3a, 0x68, 0x58, 0x47, 0x75, 0x7d, 0xe7, 0x3a, 0x23, 0xe6, 0xf8, 0x2e, 0x07,
		0xee, 0xd8, 0x73, 0xfd, 0x1f, 0xb2, 0xe7, 0xa6, 0x73, 0x32, 0xe0, 0x98, 0xe1, 0x98, 0xb5, 0x75,
		0xcc, 0xcc, 0x1f, 0xf4, 0x58, 0x68, 0x0b, 0xe6, 0x96, 0xe9, 0x71, 0x62, 0xfa, 0xf5, 0x5a, 0xfe,
		0xb0, 0xf4, 0xea, 0xef, 0x97, 0xd2, 0x07, 0xa5, 0xed, 0xd6, 0x6d, 0xfb, 0xec, 0xf2, 0x4b, 0xf1,
		0x8e, 0x4a, 0xe3, 0xc1, 0xcb, 0x1d, 0x93, 0x4e, 0x86, 0x2e, 0xd5, 0x33, 0x2c, 0x5e, 0xc8, 0x63,
		0xa3, 0xbc, 0x43, 0x67, 0xa4, 0xeb, 0xd2, 0x77, 0x25, 0x7c, 0xde, 0x3a, 0x69, 0xf0, 0x7e, 0xf0,
		0x7e, 0x38, 0x25, 0x7d, 0xdd, 0xfb, 0x6d, 0xff, 0x94, 0xf4, 0xfc, 0xea, 0xcb, 0xd9, 0x49, 0xf3,
		0xbc, 0xd3, 0x3a, 0x6f, 0x5d, 0xb4, 0x2e, 0xdb, 0x9d, 0xeb, 0x9b, 0xab, 0xf6, 0xd5, 0xc9, 0xd5,
		0x79, 0xa7, 0xfd, 0xfb, 0xb5, 0x06, 0xe7, 0xa5, 0xc3, 0xeb, 0x08, 0xad, 0xf6, 0x6f, 0xad, 0x9b,
		0xcb, 0x56, 0xbb, 0xc8, 0xc7, 0x29, 0x93, 0x7b, 0x15, 0x38, 0x4b, 0x49, 0xe6, 0xde, 0x82, 0xfe,
		0xbd, 0xed, 0xfc, 0x90, 0x4c, 0xfe, 0x59, 0x14, 0x03, 0x87, 0x06, 0x87, 0xa6, 0xad, 0x43, 0x5b,
		0x50, 0xf5, 0xdd, 0xce, 0x83, 0xbd, 0xbc, 0xba, 0x6c, 0x49, 0xc7, 0x75, 0x9f, 0x9b, 0x27, 0x67,
		0xe7, 0x72, 0xc5, 0x93, 0x27, 0xb1, 0xdd, 0xcd, 0xc5, 0xd9, 0x65, 0xf3, 0x5c, 0x46, 0x50, 0x35,
		0x16, 0xd4, 0xbc, 0x3d, 0x3b, 0xe9, 0x5c, 0xff, 0xf6, 0x7b, 0xe7, 0xfc, 0xea, 0x44, 0x4e, 0x5c,
		0x6d, 0x41, 0xdc, 0x4d, 0xeb, 0xe2, 0xaa, 0x2d, 0x35, 0x61, 0xf5, 0xa9, 0xbc, 0x8b, 0xe6, 0x89,
		0xfc, 0xeb, 0x1d, 0x2c, 0x88, 0x1b, 0xbf, 0x5e, 0xd1, 0x42, 0xe3, 0xa5, 0xe9, 0x38, 0x36, 0x64,
		0x2a, 0x86, 0x2f, 0x4f, 0xc6, 0xb1, 0x71, 0x20, 0x2b, 0x6d, 0xa6, 0x48, 0xc7, 0x46, 0x95, 0x42,
		0xd8, 0xf4, 0xd5, 0x6a, 0x12, 0xd2, 0xa6, 0xbb, 0x4e, 0x8e, 0x54, 0x18, 0x5a, 0x00, 0xb9, 0xc4,
		0xeb, 0xe9, 0xb6, 0xcd, 0x30, 0xf7, 0x5a, 0xe8, 0xfe, 0xec, 0x83, 0x3d, 0xf0, 0xb8, 0x84, 0xd9,
		0x8b, 0x7d, 0xed, 0x4c, 0x4a, 0xea, 0x0e, 0xf9, 0x6a, 0xf0, 0x5f, 0x68, 0x73, 0x66, 0x3a, 0x9e,
		0x1d, 0x45, 0xe2, 0xe0, 0x6f, 0x4e, 0x06, 0x90, 0x1f, 0x90, 0x1f, 0xa8, 0x8c, 0xbc, 0x53, 0x19,
		0xb3, 0x0e, 0x16, 0x37, 0xcd, 0x76, 0xab, 0x73, 0x72, 0xde, 0xbc, 0xbd, 0xd5, 0x84, 0xc6, 0x18,
		0xf6, 0x38, 0x18, 0x8e, 0xaa, 0x52, 0x2e, 0x78, 0x5e, 0xe8, 0xc2, 0x50, 0xb4, 0x19, 0x49, 0x5d,
		0x9f, 0xa1, 0xe8, 0x32, 0x10, 0x8d, 0xd4, 0xab, 0xa2, 0x8f, 0x7a, 0x59, 0xfa, 0xac, 0x8a, 0xa5,
		0xcf, 0xaa, 0x54, 0xf5, 0x59, 0x95, 0xaa, 0x3e, 0xab, 0x52, 0xd3, 0x67, 0x55, 0x6a, 0xfa, 0xac,
		0x4a, 0xbd, 0xac, 0xd1, 0x50, 0xb4, 0x19, 0x89, 0x3e, 0x43, 0x39, 0xd0, 0x47, 0xbf, 0x0e, 0xf4,
		0x59, 0x95, 0x86, 0x3e, 0xab, 0xd2, 0xd0, 0x67, 0x55, 0x0e, 0xf5, 0x59, 0x95, 0x43, 0x7d, 0x56,
		0xe5, 0x48, 0x9f, 0x55, 0x39, 0xd2, 0x67, 0x55, 0x34, 0x19, 0x87, 0x5c, 0x1b, 0xd3, 0x5c, 0x8d,
		0x44, 0x1f, 0x2a, 0xcf, 0xd2, 0x68, 0x24, 0xda, 0xec, 0x78, 0x4b, 0x1f, 0x06, 0xcc, 0xd2, 0x27,
		0x54, 0xb1, 0x34, 0xda, 0x2b, 0xfa, 0x30, 0x60, 0x96, 0x3e, 0x0c, 0x98, 0xa5, 0x0f, 0x03, 0x66,
		0xe9, 0xc3, 0x80, 0x59, 0xfa, 0x30, 0x60, 0x96, 0x3e, 0x0c, 0x98, 0x46, 0x06, 0x4c, 0x1f, 0x06,
		0xcc, 0xd2, 0x87, 0x01, 0xb3, 0xf4, 0x61, 0xc0, 0x2c, 0x7d, 0x18, 0x30, 0x4b, 0x1f, 0x06, 0xcc,
		0xd2, 0x87, 0x01, 0xb3, 0xf4, 0x61, 0xc0, 0x2c, 0x7d, 0x18, 0x30, 0x4b, 0x1f, 0x06, 0xac, 0xaa,
		0x0f, 0xdf, 0x52, 0xd5, 0x68, 0x24, 0xfa, 0xe8, 0x97, 0x3e, 0x7c, 0x4b, 0x55, 0x1f, 0xbe, 0xa5,
		0xaa, 0x0f, 0xdf, 0xa2, 0x4f, 0x60, 0xaf, 0x4f, 0x5c, 0x5f, 0xd3, 0x66, 0x20, 0xda, 0x28, 0x97,
		0x3e, 0xf4, 0x84, 0x3e, 0x31, 0xbd, 0x3e, 0x21, 0xbd, 0x3e, 0x11, 0xbd, 0x3e, 0x01, 0xbd, 0x3e,
		0xf1, 0xbc, 0x3e, 0xe1, 0xbc, 0x3e, 0xd1, 0xbc, 0x3e, 0xc1, 0xbc, 0x64, 0x2c, 0xbf, 0x43, 0x05,
		0x44, 0x38, 0x8b, 0xb8, 0x19, 0xb9, 0x8f, 0xbe, 0xed, 0x89, 0xdf, 0x20, 0x9d, 0x17, 0x82, 0x2b,
		0xa4, 0x6f, 0x89, 0xc1, 0x15, 0x52, 0xaa, 0x1d, 0x91, 0xf9, 0x15, 0xd2, 0xfb, 0x20, 0xf0, 0x98,
		0x2d, 0x55, 0x07, 0xb2, 0x92, 0x87, 0x4d, 0x1f, 0xba, 0xf7, 0xe6, 0xa4, 0x07, 0xb1, 0xc4, 0xb6,
		0x5f, 0x10, 0x83, 0x8d, 0x8f, 0x8d, 0x8f, 0xbb, 0xe3, 0xaf, 0x6f, 0xfe, 0x3c, 0xdd, 0x1d, 0xd7,
		0xb1, 0x00, 0x5e, 0xa5, 0x5c, 0xfe, 0xd2, 0x2a, 0x7c, 0xf5, 0xbb, 0x78, 0x14, 0x9d, 0x8b, 0xf3,
		0x2f, 0x1a, 0x0c, 0xe4, 0x4b, 0xab, 0x73, 0xde, 0xbc, 0xd4, 0x63, 0x20, 0x7f, 0xd7, 0x61, 0x20,
		0x1a, 0x6c, 0x8f, 0x9a, 0x16, 0x9b, 0xbc, 0xa6, 0xc3, 0x20, 0x0e, 0xb5, 0x58, 0x8a, 0xcf, 0xe7,
		0xad, 0x7f, 0x5c, 0x15, 0xbf, 0x66, 0xea, 0x49, 0xe5, 0xc8, 0xd2, 0x60, 0x14, 0xb5, 0x43, 0x0d,
		0x06, 0xd1, 0x38, 0xd0, 0x60, 0x14, 0xa7, 0x5f, 0x2d, 0x2d, 0x06, 0xd1, 0xd2, 0x61, 0x14, 0x55,
		0x1d, 0x06, 0x51, 0xd3, 0x61, 0x10, 0x27, 0x97, 0x3a, 0x8c, 0x22, 0x76, 0x7a, 0x9d, 0x93, 0x4f,
		0x37, 0xda, 0x8c, 0xe5, 0xcb, 0xe7, 0x6b, 0x0d, 0xea, 0x9e, 0xdf, 0x9e, 0x7d, 0xd1, 0x60, 0x14,
		0x5f, 0x2b, 0x2d, 0x1d, 0x46, 0x61, 0x69, 0x31, 0x08, 0x2d, 0x96, 0xa2, 0xaa, 0xc3, 0x20, 0x6a,
		0x3a, 0x0c, 0x42, 0x03, 0xf7, 0x77, 0xdb, 0xbe, 0xa8, 0x1c, 0xe8, 0x30, 0x0a, 0xab, 0xae, 0xc5,
		0x30, 0x0e, 0x6a, 0x3b, 0x7c, 0x58, 0xff, 0x8e, 0x70, 0xad, 0x4a, 0x4d, 0xdf, 0x0f, 0xb8, 0x9d,
		0xba, 0xb5, 0x7a, 0x29, 0x72, 0x9e, 0x58, 0xcf, 0xee, 0xdb, 0xfc, 0x29, 0x5e, 0x97, 0xfd, 0xa0,
		0xcf, 0x7c, 0x67, 0x78, 0xd2, 0x36, 0x3c, 0xcf, 0x71, 0x7d, 0xdb, 0x33, 0xbb, 0xec, 0xd9, 0x75,
		0xd8, 0xfe, 0xf2, 0xdf, 0x97, 0x5a, 0x62, 0x45, 0xfb, 0xe3, 0x1f, 0xf6, 0x47, 0xad, 0x21, 0xdf,
		0xd1, 0xcc, 0xc1, 0xeb, 0x9f, 0x78, 0x63, 0x76, 0x4a, 0xff, 0xc3, 0x5e, 0x92, 0x76, 0x91, 0x2e,
		0x9d, 0xbb, 0x11, 0x6f, 0x72, 0x1e, 0x26, 0x9a, 0xbf, 0xd2, 0x85, 0xeb, 0xb7, 0x3c, 0xd6, 0x63,
		0x7e, 0xd2, 0x5e, 0xa6, 0xa5, 0x0b, 0xfb, 0xe7, 0xdc, 0x13, 0x95, 0xc3, 0x5a, 0xed, 0xa0, 0x51,
		0xab, 0x95, 0x1b, 0xd5, 0x46, 0xf9, 0xa8, 0x5e, 0xaf, 0x1c, 0x24, 0x39, 0x23, 0x2a, 0x5d, 0x85,
		0x5d, 0x16, 0xb2, 0xee, 0xa7, 0x78, 0x58, 0xfe, 0xc0, 0xf3, 0xd2, 0x3c, 0xf2, 0x35, 0x62, 0x61,
		0xa2, 0x66, 0xa9, 0x6f, 0xcd, 0x6a, 0x4a, 0x5d, 0x53, 0xa0, 0x63, 0x09, 0x4e, 0xad, 0x4a, 0x11,
		0x0f, 0x07, 0x0e, 0xf7, 0x27, 0xc7, 0x5f, 0x63, 0xc9, 0xa7, 0x43, 0xc1, 0x9d, 0x93, 0xb1, 0x9c,
		0x77, 0x62, 0xba, 0xb7, 0xfe, 0x5f, 0x36, 0xcc, 0x5b, 0xd2, 0xf9, 0x22, 0x9c, 0xa7, 0xf5, 0xe3,
		0x5a, 0x7d, 0xeb, 0x35, 0x6f, 0x5c, 0x0a, 0xfa, 0xe3, 0xa6, 0x97, 0xb6, 0x37, 0x6c, 0x95, 0xb2,
		0xb9, 0xc0, 0xfc, 0xec, 0x78, 0x7c, 0xe5, 0x91, 0x0d, 0x33, 0x31, 0x39, 0x0e, 0xdd, 0xf0, 0xcf,
		0x6f, 0x9d, 0xf1, 0x27, 0x39, 0xcb, 0x4f, 0x79, 0x66, 0x9f, 0xf4, 0x6c, 0x3e, 0xf5, 0x19, 0x7c,
		0xea, 0xb3, 0xf6, 0xf4, 0x67, 0xea, 0xe9, 0xb4, 0xf0, 0xd4, 0x7d, 0xdd, 0xb4, 0x95, 0x12, 0x75,
		0x92, 0x9a, 0x4e, 0x6f, 0x82, 0x86, 0x51, 0x6f, 0x2c, 0xf7, 0xea, 0xb2, 0xbf, 0xd1, 0xe0, 0x32,
		0x4d, 0x2a, 0x87, 0x60, 0xea, 0x46, 0xda, 0x54, 0x0d, 0xe1, 0xd4, 0x0c, 0xe1, 0x54, 0x0c, 0xf1,
		0xd4, 0x0b, 0x39, 0x57, 0xfa, 0x96, 0xfa, 0x4c, 0x3f, 0xe8, 0x4c, 0x56, 0x33, 0xe1, 0x0c, 0x4e,
		0x16, 0x6a, 0xfc, 0x5c, 0xc2, 0x59, 0x48, 0xa6, 0x5a, 0x89, 0x2d, 0x8b, 0x8c, 0xaa, 0x49, 0xaa,
		0x9c, 0xa8, 0xea, 0x49, 0xab, 0xa0, 0xb4, 0x2a, 0xca, 0xab, 0xa4, 0x2e, 0x58, 0x78, 0xc5, 0x01,
		0xee, 0xc7, 0xff, 0xbf, 0x3f, 0x56, 0x69, 0x2a, 0x28, 0x9c, 0xc0, 0x7c, 0x0d, 0x7b, 0x9b, 0xb9,
		0xdd, 0xf4, 0xbb, 0x6f, 0xf2, 0x60, 0xba, 0xed, 0x57, 0xc6, 0xf6, 0xc3, 0xf6, 0x5b, 0x7e, 0x9d,
		0xd4, 0x49, 0x77, 0xb3, 0x16, 0x7d, 0xcc, 0x7e, 0x48, 0x97, 0x68, 0x37, 0xf5, 0x03, 0x8d, 0x14,
		0xcf, 0x5c, 0x8f, 0x77, 0xf8, 0xde, 0xde, 0x28, 0x56, 0xdd, 0x9f, 0x28, 0x7f, 0x86, 0x1b, 0x75,
		0x14, 0x24, 0xa7, 0xde, 0xa6, 0xa3, 0xc7, 0x14, 0xfb, 0x48, 0x0b, 0x9b, 0x54, 0xfb, 0x4d, 0x9a,
		0x14, 0xce, 0x4d, 0x1f, 0xe8, 0xb2, 0xc8, 0x09, 0xdd, 0x7e, 0x6a, 0xaf, 0xba, 0xb0, 0xea, 0xf3,
		0x42, 0x90, 0x36, 0xae, 0x48, 0xd9, 0xc9, 0x94, 0x9e, 0x4c, 0xf9, 0xe9, 0x36, 0x81, 0x20, 0x29,
		0x9b, 0x79, 0xda, 0x78, 0x34, 0x6a, 0xd5, 0x2a, 0x91, 0x31, 0x7e, 0x98, 0x83, 0xeb, 0x22, 0x69,
		0xd1, 0xa4, 0x24, 0xaa, 0xc4, 0x5e, 0xc7, 0x5e, 0x2f, 0xe0, 0x5e, 0x1f, 0xb8, 0x3e, 0xaf, 0x1c,
		0x48, 0xec, 0x75, 0x81, 0x56, 0xb5, 0xa5, 0x1b, 0xdb, 0x7f, 0x64, 0xc2, 0xd7, 0x2f, 0x24, 0xda,
		0xf6, 0x5e, 0xb8, 0xbe, 0x54, 0xdf, 0x5f, 0x63, 0x7a, 0x7b, 0x44, 0xae, 0xff, 0xec, 0x50, 0xce,
		0xe7, 0xd0, 0x76, 0x62, 0x30, 0x71, 0xea, 0x3e, 0xba, 0x49, 0x0f, 0x62, 0x5e, 0x5f, 0x53, 0xf6,
		0x68, 0x73, 0xf7, 0x99, 0x25, 0x3a, 0x27, 0x21, 0x54, 0xc3, 0xc5, 0x29, 0xb6, 0x7f, 0xd2, 0x4d,
		0xf1, 0x41, 0xbd, 0x5e, 0xad, 0xeb, 0x3b, 0xcd, 0x19, 0x75, 0x1e, 0xbe, 0xcb, 0x81, 0x37, 0x7e,
		0x66, 0x7e, 0x37, 0x08, 0xa5, 0xfc, 0xf1, 0x4c, 0x04, 0x3c, 0x32, 0x3c, 0x32, 0xd0, 0x77, 0xf6,
		0xe8, 0x5b, 0x4f, 0xa2, 0x3b, 0x7f, 0x29, 0x1f, 0xc9, 0x22, 0x0f, 0x24, 0x7d, 0x24, 0x9e, 0xd7,
		0xec, 0x92, 0x3e, 0xd6, 0xeb, 0x98, 0x74, 0xca, 0xc7, 0x45, 0x2c, 0x44, 0x93, 0x7c, 0x8f, 0xd5,
		0x84, 0x0b, 0x89, 0x84, 0x8f, 0xd7, 0xa9, 0xe8, 0x44, 0xd4, 0x73, 0xe2, 0xc4, 0x0e, 0x0b, 0x89,
		0x1d, 0xe4, 0x89, 0x1d, 0xea, 0xd5, 0xed, 0x15, 0xf3, 0xbe, 0x46, 0xc5, 0xde, 0xbd, 0xf2, 0xd2,
		0x6f, 0xbd, 0xac, 0xf8, 0x4b, 0x96, 0xd6, 0x6a, 0xf6, 0x66, 0x7b, 0xb0, 0x38, 0x9c, 0xd9, 0x4b,
		0x8f, 0x7e, 0x1a, 0xbf, 0xf6, 0xa6, 0xd7, 0x2d, 0xb9, 0xd1, 0x49, 0xd0, 0xeb, 0x87, 0x2c, 0x8a,
		0x58, 0xf7, 0x76, 0xf8, 0xca, 0x2b, 0xaa, 0x50, 0x72, 0xa3, 0xcf, 0xf6, 0x0f, 0x76, 0x13, 0x04,
		0xab, 0x6a, 0xb2, 0x3c, 0xcc, 0xd2, 0xfc, 0x3f, 0x2d, 0xbc, 0xf4, 0xfc, 0xcb, 0xfe, 0x7a, 0xf7,
		0xeb, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x36, 0xba, 0x9b, 0xad,
		0xb0, 0x3e, 0xcb, 0x01,
	}
)

// ΛEnumTypes is a map, keyed by a YANG schema path, of the enumerated types that
// correspond with the leaf. The type is represented as a reflect.Type. The naming
// of the map ensures that there are no clashes with valid YANG identifiers.
func initΛEnumTypes() {
	ΛEnumTypes = map[string][]reflect.Type{
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/actions/config/forwarding-action": {
			reflect.TypeOf((E_Acl_FORWARDING_ACTION)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/actions/config/log-action": {
			reflect.TypeOf((E_Acl_LOG_ACTION)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/actions/state/forwarding-action": {
			reflect.TypeOf((E_Acl_FORWARDING_ACTION)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/actions/state/log-action": {
			reflect.TypeOf((E_Acl_LOG_ACTION)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/config/protocol": {
			reflect.TypeOf((E_PacketMatchTypes_IP_PROTOCOL)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/icmpv4/config/code": {
			reflect.TypeOf((E_Icmpv4Types_CODE)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/icmpv4/config/type": {
			reflect.TypeOf((E_Icmpv4Types_TYPE)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/icmpv4/state/code": {
			reflect.TypeOf((E_Icmpv4Types_CODE)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/icmpv4/state/type": {
			reflect.TypeOf((E_Icmpv4Types_TYPE)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/state/protocol": {
			reflect.TypeOf((E_PacketMatchTypes_IP_PROTOCOL)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv6/config/protocol": {
			reflect.TypeOf((E_PacketMatchTypes_IP_PROTOCOL)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv6/icmpv6/config/code": {
			reflect.TypeOf((E_Icmpv6Types_CODE)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv6/icmpv6/config/type": {
			reflect.TypeOf((E_Icmpv6Types_TYPE)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv6/icmpv6/state/code": {
			reflect.TypeOf((E_Icmpv6Types_CODE)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv6/icmpv6/state/type": {
			reflect.TypeOf((E_Icmpv6Types_TYPE)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/ipv6/state/protocol": {
			reflect.TypeOf((E_PacketMatchTypes_IP_PROTOCOL)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/l2/config/ethertype": {
			reflect.TypeOf((E_PacketMatchTypes_ETHERTYPE)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/l2/state/ethertype": {
			reflect.TypeOf((E_PacketMatchTypes_ETHERTYPE)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/mpls/config/end-label-value": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/mpls/config/start-label-value": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/mpls/state/end-label-value": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/mpls/state/start-label-value": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/transport/config/builtin-detail": {
			reflect.TypeOf((E_Transport_BuiltinDetail)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/transport/config/destination-port": {
			reflect.TypeOf((E_PacketMatchTypes_PortNumRange_Enum)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/transport/config/detail-mode": {
			reflect.TypeOf((E_Transport_DetailMode)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/transport/config/explicit-detail-match-mode": {
			reflect.TypeOf((E_Transport_ExplicitDetailMatchMode)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/transport/config/explicit-tcp-flags": {
			reflect.TypeOf((E_PacketMatchTypes_TCP_FLAGS)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/transport/config/source-port": {
			reflect.TypeOf((E_PacketMatchTypes_PortNumRange_Enum)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/transport/state/builtin-detail": {
			reflect.TypeOf((E_Transport_BuiltinDetail)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/transport/state/destination-port": {
			reflect.TypeOf((E_PacketMatchTypes_PortNumRange_Enum)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/transport/state/detail-mode": {
			reflect.TypeOf((E_Transport_DetailMode)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/transport/state/explicit-detail-match-mode": {
			reflect.TypeOf((E_Transport_ExplicitDetailMatchMode)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/transport/state/explicit-tcp-flags": {
			reflect.TypeOf((E_PacketMatchTypes_TCP_FLAGS)(0)),
		},
		"/acl/acl-sets/acl-set/acl-entries/acl-entry/transport/state/source-port": {
			reflect.TypeOf((E_PacketMatchTypes_PortNumRange_Enum)(0)),
		},
		"/acl/acl-sets/acl-set/config/type": {
			reflect.TypeOf((E_Acl_ACL_TYPE)(0)),
		},
		"/acl/acl-sets/acl-set/state/type": {
			reflect.TypeOf((E_Acl_ACL_TYPE)(0)),
		},
		"/acl/interfaces/interface/egress-acl-sets/egress-acl-set/config/type": {
			reflect.TypeOf((E_Acl_ACL_TYPE)(0)),
		},
		"/acl/interfaces/interface/egress-acl-sets/egress-acl-set/state/type": {
			reflect.TypeOf((E_Acl_ACL_TYPE)(0)),
		},
		"/acl/interfaces/interface/ingress-acl-sets/ingress-acl-set/config/type": {
			reflect.TypeOf((E_Acl_ACL_TYPE)(0)),
		},
		"/acl/interfaces/interface/ingress-acl-sets/ingress-acl-set/state/type": {
			reflect.TypeOf((E_Acl_ACL_TYPE)(0)),
		},
		"/acl/state/counter-capability": {
			reflect.TypeOf((E_Acl_ACL_COUNTER_CAPABILITY)(0)),
		},
		"/aps/aps-modules/aps-module/config/force-to-port": {
			reflect.TypeOf((E_ApsModule_ForceToPort)(0)),
		},
		"/aps/aps-modules/aps-module/state/active-path": {
			reflect.TypeOf((E_TransportLineProtection_APS_PATHS)(0)),
		},
		"/aps/aps-modules/aps-module/state/force-to-port": {
			reflect.TypeOf((E_ApsModule_ForceToPort)(0)),
		},
		"/bfd/interfaces/interface/micro-bfd-sessions/micro-bfd-session/state/local-diagnostic-code": {
			reflect.TypeOf((E_Bfd_BfdDiagnosticCode)(0)),
		},
		"/bfd/interfaces/interface/micro-bfd-sessions/micro-bfd-session/state/remote-diagnostic-code": {
			reflect.TypeOf((E_Bfd_BfdDiagnosticCode)(0)),
		},
		"/bfd/interfaces/interface/micro-bfd-sessions/micro-bfd-session/state/remote-session-state": {
			reflect.TypeOf((E_Bfd_BfdSessionState)(0)),
		},
		"/bfd/interfaces/interface/micro-bfd-sessions/micro-bfd-session/state/session-state": {
			reflect.TypeOf((E_Bfd_BfdSessionState)(0)),
		},
		"/bfd/interfaces/interface/peers/peer/state/local-diagnostic-code": {
			reflect.TypeOf((E_Bfd_BfdDiagnosticCode)(0)),
		},
		"/bfd/interfaces/interface/peers/peer/state/remote-diagnostic-code": {
			reflect.TypeOf((E_Bfd_BfdDiagnosticCode)(0)),
		},
		"/bfd/interfaces/interface/peers/peer/state/remote-session-state": {
			reflect.TypeOf((E_Bfd_BfdSessionState)(0)),
		},
		"/bfd/interfaces/interface/peers/peer/state/session-state": {
			reflect.TypeOf((E_Bfd_BfdSessionState)(0)),
		},
		"/bfd/interfaces/interface/peers/peer/state/subscribed-protocols": {
			reflect.TypeOf((E_PolicyTypes_INSTALL_PROTOCOL_TYPE)(0)),
		},
		"/components/component/port/breakout-mode/groups/group/config/breakout-speed": {
			reflect.TypeOf((E_IfEthernet_ETHERNET_SPEED)(0)),
		},
		"/components/component/port/breakout-mode/groups/group/state/breakout-speed": {
			reflect.TypeOf((E_IfEthernet_ETHERNET_SPEED)(0)),
		},
		"/components/component/port/optical-port/config/admin-state": {
			reflect.TypeOf((E_TransportTypes_AdminStateType)(0)),
		},
		"/components/component/port/optical-port/state/admin-state": {
			reflect.TypeOf((E_TransportTypes_AdminStateType)(0)),
		},
		"/components/component/port/optical-port/state/optical-port-type": {
			reflect.TypeOf((E_TransportTypes_OPTICAL_PORT_TYPE)(0)),
		},
		"/components/component/state/last-reboot-reason": {
			reflect.TypeOf((E_PlatformTypes_COMPONENT_REBOOT_REASON)(0)),
		},
		"/components/component/state/last-switchover-reason/trigger": {
			reflect.TypeOf((E_PlatformTypes_ComponentRedundantRoleSwitchoverReasonTrigger)(0)),
		},
		"/components/component/state/oper-status": {
			reflect.TypeOf((E_PlatformTypes_COMPONENT_OPER_STATUS)(0)),
		},
		"/components/component/state/redundant-role": {
			reflect.TypeOf((E_PlatformTypes_ComponentRedundantRole)(0)),
		},
		"/components/component/state/temperature/alarm-severity": {
			reflect.TypeOf((E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY)(0)),
		},
		"/components/component/state/type": {
			reflect.TypeOf((E_PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT)(0)),
			reflect.TypeOf((E_PlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT)(0)),
		},
		"/components/component/transceiver/config/ethernet-pmd-preconf": {
			reflect.TypeOf((E_TransportTypes_ETHERNET_PMD_TYPE)(0)),
		},
		"/components/component/transceiver/config/fec-mode": {
			reflect.TypeOf((E_PlatformTypes_FEC_MODE_TYPE)(0)),
		},
		"/components/component/transceiver/config/form-factor-preconf": {
			reflect.TypeOf((E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE)(0)),
		},
		"/components/component/transceiver/config/module-functional-type": {
			reflect.TypeOf((E_TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE)(0)),
		},
		"/components/component/transceiver/state/connector-type": {
			reflect.TypeOf((E_TransportTypes_FIBER_CONNECTOR_TYPE)(0)),
		},
		"/components/component/transceiver/state/ethernet-pmd": {
			reflect.TypeOf((E_TransportTypes_ETHERNET_PMD_TYPE)(0)),
		},
		"/components/component/transceiver/state/ethernet-pmd-preconf": {
			reflect.TypeOf((E_TransportTypes_ETHERNET_PMD_TYPE)(0)),
		},
		"/components/component/transceiver/state/fec-mode": {
			reflect.TypeOf((E_PlatformTypes_FEC_MODE_TYPE)(0)),
		},
		"/components/component/transceiver/state/fec-status": {
			reflect.TypeOf((E_PlatformTypes_FEC_STATUS_TYPE)(0)),
		},
		"/components/component/transceiver/state/form-factor": {
			reflect.TypeOf((E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE)(0)),
		},
		"/components/component/transceiver/state/form-factor-preconf": {
			reflect.TypeOf((E_TransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE)(0)),
		},
		"/components/component/transceiver/state/module-functional-type": {
			reflect.TypeOf((E_TransportTypes_TRANSCEIVER_MODULE_FUNCTIONAL_TYPE)(0)),
		},
		"/components/component/transceiver/state/otn-compliance-code": {
			reflect.TypeOf((E_TransportTypes_OTN_APPLICATION_CODE)(0)),
		},
		"/components/component/transceiver/state/present": {
			reflect.TypeOf((E_Transceiver_Present)(0)),
		},
		"/components/component/transceiver/state/sonet-sdh-compliance-code": {
			reflect.TypeOf((E_TransportTypes_SONET_APPLICATION_CODE)(0)),
		},
		"/components/component/transceiver/thresholds/threshold/state/severity": {
			reflect.TypeOf((E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY)(0)),
		},
		"/defined-sets/port-sets/port-set/config/port": {
			reflect.TypeOf((E_PacketMatchTypes_PortNumRange_Enum)(0)),
		},
		"/defined-sets/port-sets/port-set/state/port": {
			reflect.TypeOf((E_PacketMatchTypes_PortNumRange_Enum)(0)),
		},
		"/interfaces/interface/aggregation/config/lag-type": {
			reflect.TypeOf((E_IfAggregate_AggregationType)(0)),
		},
		"/interfaces/interface/aggregation/state/lag-type": {
			reflect.TypeOf((E_IfAggregate_AggregationType)(0)),
		},
		"/interfaces/interface/aggregation/switched-vlan/config/interface-mode": {
			reflect.TypeOf((E_VlanTypes_VlanModeType)(0)),
		},
		"/interfaces/interface/aggregation/switched-vlan/state/interface-mode": {
			reflect.TypeOf((E_VlanTypes_VlanModeType)(0)),
		},
		"/interfaces/interface/config/loopback-mode": {
			reflect.TypeOf((E_TransportTypes_LoopbackModeType)(0)),
		},
		"/interfaces/interface/config/tpid": {
			reflect.TypeOf((E_VlanTypes_TPID_TYPES)(0)),
		},
		"/interfaces/interface/config/type": {
			reflect.TypeOf((E_IETFInterfaces_InterfaceType)(0)),
		},
		"/interfaces/interface/ethernet/config/duplex-mode": {
			reflect.TypeOf((E_Ethernet_DuplexMode)(0)),
		},
		"/interfaces/interface/ethernet/config/fec-mode": {
			reflect.TypeOf((E_IfEthernet_INTERFACE_FEC)(0)),
		},
		"/interfaces/interface/ethernet/config/port-speed": {
			reflect.TypeOf((E_IfEthernet_ETHERNET_SPEED)(0)),
		},
		"/interfaces/interface/ethernet/state/duplex-mode": {
			reflect.TypeOf((E_Ethernet_DuplexMode)(0)),
		},
		"/interfaces/interface/ethernet/state/fec-mode": {
			reflect.TypeOf((E_IfEthernet_INTERFACE_FEC)(0)),
		},
		"/interfaces/interface/ethernet/state/negotiated-duplex-mode": {
			reflect.TypeOf((E_Ethernet_NegotiatedDuplexMode)(0)),
		},
		"/interfaces/interface/ethernet/state/negotiated-port-speed": {
			reflect.TypeOf((E_IfEthernet_ETHERNET_SPEED)(0)),
		},
		"/interfaces/interface/ethernet/state/port-speed": {
			reflect.TypeOf((E_IfEthernet_ETHERNET_SPEED)(0)),
		},
		"/interfaces/interface/ethernet/switched-vlan/config/interface-mode": {
			reflect.TypeOf((E_VlanTypes_VlanModeType)(0)),
		},
		"/interfaces/interface/ethernet/switched-vlan/state/interface-mode": {
			reflect.TypeOf((E_VlanTypes_VlanModeType)(0)),
		},
		"/interfaces/interface/routed-vlan/ipv4/addresses/address/config/type": {
			reflect.TypeOf((E_IfIp_Ipv4AddressType)(0)),
		},
		"/interfaces/interface/routed-vlan/ipv4/addresses/address/state/origin": {
			reflect.TypeOf((E_IfIp_IpAddressOrigin)(0)),
		},
		"/interfaces/interface/routed-vlan/ipv4/addresses/address/state/type": {
			reflect.TypeOf((E_IfIp_Ipv4AddressType)(0)),
		},
		"/interfaces/interface/routed-vlan/ipv4/neighbors/neighbor/state/origin": {
			reflect.TypeOf((E_IfIp_NeighborOrigin)(0)),
		},
		"/interfaces/interface/routed-vlan/ipv4/proxy-arp/config/mode": {
			reflect.TypeOf((E_ProxyArp_Mode)(0)),
		},
		"/interfaces/interface/routed-vlan/ipv4/proxy-arp/state/mode": {
			reflect.TypeOf((E_ProxyArp_Mode)(0)),
		},
		"/interfaces/interface/routed-vlan/ipv6/addresses/address/config/type": {
			reflect.TypeOf((E_InetTypes_Ipv6AddressType)(0)),
		},
		"/interfaces/interface/routed-vlan/ipv6/addresses/address/state/origin": {
			reflect.TypeOf((E_IfIp_IpAddressOrigin)(0)),
		},
		"/interfaces/interface/routed-vlan/ipv6/addresses/address/state/status": {
			reflect.TypeOf((E_Address_Status)(0)),
		},
		"/interfaces/interface/routed-vlan/ipv6/addresses/address/state/type": {
			reflect.TypeOf((E_InetTypes_Ipv6AddressType)(0)),
		},
		"/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor/state/neighbor-state": {
			reflect.TypeOf((E_Neighbor_NeighborState)(0)),
		},
		"/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor/state/origin": {
			reflect.TypeOf((E_IfIp_NeighborOrigin)(0)),
		},
		"/interfaces/interface/routed-vlan/ipv6/router-advertisement/config/mode": {
			reflect.TypeOf((E_RouterAdvertisement_Mode)(0)),
		},
		"/interfaces/interface/routed-vlan/ipv6/router-advertisement/state/mode": {
			reflect.TypeOf((E_RouterAdvertisement_Mode)(0)),
		},
		"/interfaces/interface/state/admin-status": {
			reflect.TypeOf((E_Interface_AdminStatus)(0)),
		},
		"/interfaces/interface/state/loopback-mode": {
			reflect.TypeOf((E_TransportTypes_LoopbackModeType)(0)),
		},
		"/interfaces/interface/state/oper-status": {
			reflect.TypeOf((E_Interface_OperStatus)(0)),
		},
		"/interfaces/interface/state/tpid": {
			reflect.TypeOf((E_VlanTypes_TPID_TYPES)(0)),
		},
		"/interfaces/interface/state/type": {
			reflect.TypeOf((E_IETFInterfaces_InterfaceType)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/config/type": {
			reflect.TypeOf((E_IfIp_Ipv4AddressType)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/state/origin": {
			reflect.TypeOf((E_IfIp_IpAddressOrigin)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/state/type": {
			reflect.TypeOf((E_IfIp_Ipv4AddressType)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/ipv4/neighbors/neighbor/state/origin": {
			reflect.TypeOf((E_IfIp_NeighborOrigin)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/ipv4/proxy-arp/config/mode": {
			reflect.TypeOf((E_ProxyArp_Mode)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/ipv4/proxy-arp/state/mode": {
			reflect.TypeOf((E_ProxyArp_Mode)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/config/type": {
			reflect.TypeOf((E_InetTypes_Ipv6AddressType)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/state/origin": {
			reflect.TypeOf((E_IfIp_IpAddressOrigin)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/state/status": {
			reflect.TypeOf((E_Address_Status)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/state/type": {
			reflect.TypeOf((E_InetTypes_Ipv6AddressType)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor/state/neighbor-state": {
			reflect.TypeOf((E_Neighbor_NeighborState)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor/state/origin": {
			reflect.TypeOf((E_IfIp_NeighborOrigin)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/ipv6/router-advertisement/config/mode": {
			reflect.TypeOf((E_RouterAdvertisement_Mode)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/ipv6/router-advertisement/state/mode": {
			reflect.TypeOf((E_RouterAdvertisement_Mode)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/state/admin-status": {
			reflect.TypeOf((E_Interface_AdminStatus)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/state/oper-status": {
			reflect.TypeOf((E_Interface_OperStatus)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/vlan/egress-mapping/config/tpid": {
			reflect.TypeOf((E_VlanTypes_TPID_TYPES)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/vlan/egress-mapping/config/vlan-stack-action": {
			reflect.TypeOf((E_VlanTypes_VlanStackAction)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/vlan/egress-mapping/state/tpid": {
			reflect.TypeOf((E_VlanTypes_TPID_TYPES)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/vlan/egress-mapping/state/vlan-stack-action": {
			reflect.TypeOf((E_VlanTypes_VlanStackAction)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/vlan/ingress-mapping/config/tpid": {
			reflect.TypeOf((E_VlanTypes_TPID_TYPES)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/vlan/ingress-mapping/config/vlan-stack-action": {
			reflect.TypeOf((E_VlanTypes_VlanStackAction)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/vlan/ingress-mapping/state/tpid": {
			reflect.TypeOf((E_VlanTypes_TPID_TYPES)(0)),
		},
		"/interfaces/interface/subinterfaces/subinterface/vlan/ingress-mapping/state/vlan-stack-action": {
			reflect.TypeOf((E_VlanTypes_VlanStackAction)(0)),
		},
		"/keychains/keychain/config/tolerance": {
			reflect.TypeOf((E_Keychain_Tolerance_Enum)(0)),
		},
		"/keychains/keychain/keys/key/config/crypto-algorithm": {
			reflect.TypeOf((E_KeychainTypes_CRYPTO_TYPE)(0)),
		},
		"/keychains/keychain/keys/key/state/crypto-algorithm": {
			reflect.TypeOf((E_KeychainTypes_CRYPTO_TYPE)(0)),
		},
		"/keychains/keychain/state/tolerance": {
			reflect.TypeOf((E_Keychain_Tolerance_Enum)(0)),
		},
		"/lacp/interfaces/interface/config/interval": {
			reflect.TypeOf((E_Lacp_LacpPeriodType)(0)),
		},
		"/lacp/interfaces/interface/config/lacp-mode": {
			reflect.TypeOf((E_Lacp_LacpActivityType)(0)),
		},
		"/lacp/interfaces/interface/members/member/state/activity": {
			reflect.TypeOf((E_Lacp_LacpActivityType)(0)),
		},
		"/lacp/interfaces/interface/members/member/state/synchronization": {
			reflect.TypeOf((E_Lacp_LacpSynchronizationType)(0)),
		},
		"/lacp/interfaces/interface/members/member/state/timeout": {
			reflect.TypeOf((E_Lacp_LacpTimeoutType)(0)),
		},
		"/lacp/interfaces/interface/state/interval": {
			reflect.TypeOf((E_Lacp_LacpPeriodType)(0)),
		},
		"/lacp/interfaces/interface/state/lacp-mode": {
			reflect.TypeOf((E_Lacp_LacpActivityType)(0)),
		},
		"/lldp/config/chassis-id-type": {
			reflect.TypeOf((E_LldpTypes_ChassisIdType)(0)),
		},
		"/lldp/config/suppress-tlv-advertisement": {
			reflect.TypeOf((E_LldpTypes_LLDP_TLV)(0)),
		},
		"/lldp/interfaces/interface/neighbors/neighbor/capabilities/capability/state/name": {
			reflect.TypeOf((E_LldpTypes_LLDP_SYSTEM_CAPABILITY)(0)),
		},
		"/lldp/interfaces/interface/neighbors/neighbor/state/chassis-id-type": {
			reflect.TypeOf((E_LldpTypes_ChassisIdType)(0)),
		},
		"/lldp/interfaces/interface/neighbors/neighbor/state/port-id-type": {
			reflect.TypeOf((E_LldpTypes_PortIdType)(0)),
		},
		"/lldp/state/chassis-id-type": {
			reflect.TypeOf((E_LldpTypes_ChassisIdType)(0)),
		},
		"/lldp/state/suppress-tlv-advertisement": {
			reflect.TypeOf((E_LldpTypes_LLDP_TLV)(0)),
		},
		"/messages/config/severity": {
			reflect.TypeOf((E_SystemLogging_SyslogSeverity)(0)),
		},
		"/messages/debug-entries/debug-service/config/service": {
			reflect.TypeOf((E_Messages_DEBUG_SERVICE)(0)),
		},
		"/messages/debug-entries/debug-service/state/service": {
			reflect.TypeOf((E_Messages_DEBUG_SERVICE)(0)),
		},
		"/messages/state/severity": {
			reflect.TypeOf((E_SystemLogging_SyslogSeverity)(0)),
		},
		"/network-instances/network-instance/afts/ipv4-unicast/ipv4-entry/state/decapsulate-header": {
			reflect.TypeOf((E_AftTypes_EncapsulationHeaderType)(0)),
		},
		"/network-instances/network-instance/afts/ipv4-unicast/ipv4-entry/state/origin-protocol": {
			reflect.TypeOf((E_PolicyTypes_INSTALL_PROTOCOL_TYPE)(0)),
		},
		"/network-instances/network-instance/afts/ipv6-unicast/ipv6-entry/state/decapsulate-header": {
			reflect.TypeOf((E_AftTypes_EncapsulationHeaderType)(0)),
		},
		"/network-instances/network-instance/afts/ipv6-unicast/ipv6-entry/state/origin-protocol": {
			reflect.TypeOf((E_PolicyTypes_INSTALL_PROTOCOL_TYPE)(0)),
		},
		"/network-instances/network-instance/afts/mpls/label-entry/state/label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/afts/mpls/label-entry/state/popped-mpls-label-stack": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/afts/next-hops/next-hop/state/decapsulate-header": {
			reflect.TypeOf((E_AftTypes_EncapsulationHeaderType)(0)),
		},
		"/network-instances/network-instance/afts/next-hops/next-hop/state/encapsulate-header": {
			reflect.TypeOf((E_AftTypes_EncapsulationHeaderType)(0)),
		},
		"/network-instances/network-instance/afts/next-hops/next-hop/state/origin-protocol": {
			reflect.TypeOf((E_PolicyTypes_INSTALL_PROTOCOL_TYPE)(0)),
		},
		"/network-instances/network-instance/afts/next-hops/next-hop/state/pushed-mpls-label-stack": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/afts/policy-forwarding/policy-forwarding-entry/state/ip-protocol": {
			reflect.TypeOf((E_PacketMatchTypes_IP_PROTOCOL)(0)),
		},
		"/network-instances/network-instance/afts/policy-forwarding/policy-forwarding-entry/state/mpls-label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/config/type": {
			reflect.TypeOf((E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE)(0)),
		},
		"/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/config/type": {
			reflect.TypeOf((E_NetworkInstanceTypes_ENDPOINT_TYPE)(0)),
		},
		"/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/state/type": {
			reflect.TypeOf((E_NetworkInstanceTypes_ENDPOINT_TYPE)(0)),
		},
		"/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-peers/endpoint-peer/state/peer-state": {
			reflect.TypeOf((E_EndpointPeer_PeerState)(0)),
		},
		"/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-vnis/endpoint-vni/state/learning-mode": {
			reflect.TypeOf((E_EvpnTypes_LearningMode)(0)),
		},
		"/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-vnis/endpoint-vni/state/multidestination-traffic": {
			reflect.TypeOf((E_EndpointVni_MultidestinationTraffic_Enum)(0)),
		},
		"/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-vnis/endpoint-vni/state/svi-state": {
			reflect.TypeOf((E_EndpointVni_SviState)(0)),
		},
		"/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-vnis/endpoint-vni/state/vni-state": {
			reflect.TypeOf((E_EndpointVni_VniState)(0)),
		},
		"/network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-vnis/endpoint-vni/state/vni-type": {
			reflect.TypeOf((E_EndpointVni_VniType)(0)),
		},
		"/network-instances/network-instance/encapsulation/config/encapsulation-type": {
			reflect.TypeOf((E_NetworkInstanceTypes_ENCAPSULATION)(0)),
		},
		"/network-instances/network-instance/encapsulation/config/label-allocation-mode": {
			reflect.TypeOf((E_NetworkInstanceTypes_LABEL_ALLOCATION_MODE)(0)),
		},
		"/network-instances/network-instance/encapsulation/state/encapsulation-type": {
			reflect.TypeOf((E_NetworkInstanceTypes_ENCAPSULATION)(0)),
		},
		"/network-instances/network-instance/encapsulation/state/label-allocation-mode": {
			reflect.TypeOf((E_NetworkInstanceTypes_LABEL_ALLOCATION_MODE)(0)),
		},
		"/network-instances/network-instance/evpn/evpn-instances/evpn-instance/config/encapsulation-type": {
			reflect.TypeOf((E_NetworkInstanceTypes_ENCAPSULATION)(0)),
		},
		"/network-instances/network-instance/evpn/evpn-instances/evpn-instance/config/replication-mode": {
			reflect.TypeOf((E_EvpnInstance_ReplicationMode)(0)),
		},
		"/network-instances/network-instance/evpn/evpn-instances/evpn-instance/config/route-distinguisher": {
			reflect.TypeOf((E_EvpnInstance_RouteDistinguisher_Enum)(0)),
		},
		"/network-instances/network-instance/evpn/evpn-instances/evpn-instance/config/service-type": {
			reflect.TypeOf((E_EvpnTypes_EVPN_TYPE)(0)),
		},
		"/network-instances/network-instance/evpn/evpn-instances/evpn-instance/import-export-policy/config/export-route-target": {
			reflect.TypeOf((E_ImportExportPolicy_ExportRouteTarget_Enum)(0)),
		},
		"/network-instances/network-instance/evpn/evpn-instances/evpn-instance/import-export-policy/config/import-route-target": {
			reflect.TypeOf((E_ImportExportPolicy_ImportRouteTarget_Enum)(0)),
		},
		"/network-instances/network-instance/evpn/evpn-instances/evpn-instance/import-export-policy/state/export-route-target": {
			reflect.TypeOf((E_ImportExportPolicy_ExportRouteTarget_Enum)(0)),
		},
		"/network-instances/network-instance/evpn/evpn-instances/evpn-instance/import-export-policy/state/import-route-target": {
			reflect.TypeOf((E_ImportExportPolicy_ImportRouteTarget_Enum)(0)),
		},
		"/network-instances/network-instance/evpn/evpn-instances/evpn-instance/state/encapsulation-type": {
			reflect.TypeOf((E_NetworkInstanceTypes_ENCAPSULATION)(0)),
		},
		"/network-instances/network-instance/evpn/evpn-instances/evpn-instance/state/replication-mode": {
			reflect.TypeOf((E_EvpnInstance_ReplicationMode)(0)),
		},
		"/network-instances/network-instance/evpn/evpn-instances/evpn-instance/state/route-distinguisher": {
			reflect.TypeOf((E_EvpnInstance_RouteDistinguisher_Enum)(0)),
		},
		"/network-instances/network-instance/evpn/evpn-instances/evpn-instance/state/service-type": {
			reflect.TypeOf((E_EvpnTypes_EVPN_TYPE)(0)),
		},
		"/network-instances/network-instance/fdb/l2rib/mac-ip-table/entries/entry/producers/producer/state/mobility-state": {
			reflect.TypeOf((E_Producer_MobilityState)(0)),
		},
		"/network-instances/network-instance/fdb/l2rib/mac-ip-table/entries/entry/producers/producer/state/producer": {
			reflect.TypeOf((E_Producer_Producer)(0)),
		},
		"/network-instances/network-instance/fdb/l2rib/mac-ip-table/next-hop-groups/next-hop-group/state/type": {
			reflect.TypeOf((E_NextHopGroup_Type)(0)),
		},
		"/network-instances/network-instance/fdb/l2rib/mac-table/entries/entry/producers/producer/state/mobility-state": {
			reflect.TypeOf((E_Producer_MobilityState)(0)),
		},
		"/network-instances/network-instance/fdb/l2rib/mac-table/entries/entry/producers/producer/state/producer": {
			reflect.TypeOf((E_Producer_Producer)(0)),
		},
		"/network-instances/network-instance/fdb/l2rib/mac-table/next-hop-groups/next-hop-group/state/type": {
			reflect.TypeOf((E_NextHopGroup_Type)(0)),
		},
		"/network-instances/network-instance/fdb/mac-table/entries/entry/state/entry-type": {
			reflect.TypeOf((E_Entry_EntryType)(0)),
		},
		"/network-instances/network-instance/inter-instance-policies/apply-policy/config/default-export-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/inter-instance-policies/apply-policy/config/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/inter-instance-policies/apply-policy/state/default-export-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/inter-instance-policies/apply-policy/state/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/inter-instance-policies/import-export-policy/config/export-route-target": {
			reflect.TypeOf((E_ImportExportPolicy_ExportRouteTarget_Enum)(0)),
		},
		"/network-instances/network-instance/inter-instance-policies/import-export-policy/config/import-route-target": {
			reflect.TypeOf((E_ImportExportPolicy_ImportRouteTarget_Enum)(0)),
		},
		"/network-instances/network-instance/inter-instance-policies/import-export-policy/state/export-route-target": {
			reflect.TypeOf((E_ImportExportPolicy_ExportRouteTarget_Enum)(0)),
		},
		"/network-instances/network-instance/inter-instance-policies/import-export-policy/state/import-route-target": {
			reflect.TypeOf((E_ImportExportPolicy_ImportRouteTarget_Enum)(0)),
		},
		"/network-instances/network-instance/interfaces/interface/config/associated-address-families": {
			reflect.TypeOf((E_Types_ADDRESS_FAMILY)(0)),
		},
		"/network-instances/network-instance/interfaces/interface/config/irb-anycast-gateway": {
			reflect.TypeOf((E_Interface_IrbAnycastGateway)(0)),
		},
		"/network-instances/network-instance/interfaces/interface/state/associated-address-families": {
			reflect.TypeOf((E_Types_ADDRESS_FAMILY)(0)),
		},
		"/network-instances/network-instance/interfaces/interface/state/irb-anycast-gateway": {
			reflect.TypeOf((E_Interface_IrbAnycastGateway)(0)),
		},
		"/network-instances/network-instance/mpls/global/config/null-label": {
			reflect.TypeOf((E_MplsTypes_NULL_LABEL_TYPE)(0)),
		},
		"/network-instances/network-instance/mpls/global/config/pw-encapsulation": {
			reflect.TypeOf((E_MplsTypes_PSEUDOWIRE_ENCAPSULATION)(0)),
		},
		"/network-instances/network-instance/mpls/global/reserved-label-blocks/reserved-label-block/config/lower-bound": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/global/reserved-label-blocks/reserved-label-block/config/upper-bound": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/global/reserved-label-blocks/reserved-label-block/state/lower-bound": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/global/reserved-label-blocks/reserved-label-block/state/upper-bound": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/global/state/null-label": {
			reflect.TypeOf((E_MplsTypes_NULL_LABEL_TYPE)(0)),
		},
		"/network-instances/network-instance/mpls/global/state/pw-encapsulation": {
			reflect.TypeOf((E_MplsTypes_PSEUDOWIRE_ENCAPSULATION)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/named-explicit-paths/named-explicit-path/config/sid-selection-mode": {
			reflect.TypeOf((E_NamedExplicitPath_SidSelectionMode)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/named-explicit-paths/named-explicit-path/explicit-route-objects/explicit-route-object/config/hop-type": {
			reflect.TypeOf((E_Mpls_MplsHopType)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/named-explicit-paths/named-explicit-path/explicit-route-objects/explicit-route-object/state/hop-type": {
			reflect.TypeOf((E_Mpls_MplsHopType)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/named-explicit-paths/named-explicit-path/state/sid-selection-mode": {
			reflect.TypeOf((E_NamedExplicitPath_SidSelectionMode)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/bandwidth/config/specification-type": {
			reflect.TypeOf((E_Mpls_TeBandwidthType)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/bandwidth/state/specification-type": {
			reflect.TypeOf((E_Mpls_TeBandwidthType)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/config/admin-status": {
			reflect.TypeOf((E_MplsTypes_TUNNEL_ADMIN_STATUS)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/config/metric-type": {
			reflect.TypeOf((E_MplsTypes_LSP_METRIC_TYPE)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/config/protection-style-requested": {
			reflect.TypeOf((E_MplsTypes_PROTECTION_TYPE)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/config/signaling-protocol": {
			reflect.TypeOf((E_MplsTypes_PATH_SETUP_PROTOCOL)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/config/type": {
			reflect.TypeOf((E_MplsTypes_TUNNEL_TYPE)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-primary-path/p2p-primary-path/config/cspf-tiebreaker": {
			reflect.TypeOf((E_Mpls_CspfTieBreaking)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-primary-path/p2p-primary-path/config/path-computation-method": {
			reflect.TypeOf((E_MplsTypes_PATH_COMPUTATION_METHOD)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-primary-path/p2p-primary-path/config/path-control": {
			reflect.TypeOf((E_Pcep_LspControlType)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-primary-path/p2p-primary-path/path-metric-bound-constraints/path-metric-bound-constraint/config/type": {
			reflect.TypeOf((E_MplsTypes_PATH_METRIC_TYPE)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-primary-path/p2p-primary-path/path-metric-bound-constraints/path-metric-bound-constraint/state/type": {
			reflect.TypeOf((E_MplsTypes_PATH_METRIC_TYPE)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-primary-path/p2p-primary-path/state/cspf-tiebreaker": {
			reflect.TypeOf((E_Mpls_CspfTieBreaking)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-primary-path/p2p-primary-path/state/path-computation-method": {
			reflect.TypeOf((E_MplsTypes_PATH_COMPUTATION_METHOD)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-primary-path/p2p-primary-path/state/path-control": {
			reflect.TypeOf((E_Pcep_LspControlType)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-secondary-paths/p2p-secondary-path/config/cspf-tiebreaker": {
			reflect.TypeOf((E_Mpls_CspfTieBreaking)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-secondary-paths/p2p-secondary-path/config/path-computation-method": {
			reflect.TypeOf((E_MplsTypes_PATH_COMPUTATION_METHOD)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-secondary-paths/p2p-secondary-path/config/path-control": {
			reflect.TypeOf((E_Pcep_LspControlType)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-secondary-paths/p2p-secondary-path/path-metric-bound-constraints/path-metric-bound-constraint/config/type": {
			reflect.TypeOf((E_MplsTypes_PATH_METRIC_TYPE)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-secondary-paths/p2p-secondary-path/path-metric-bound-constraints/path-metric-bound-constraint/state/type": {
			reflect.TypeOf((E_MplsTypes_PATH_METRIC_TYPE)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-secondary-paths/p2p-secondary-path/state/cspf-tiebreaker": {
			reflect.TypeOf((E_Mpls_CspfTieBreaking)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-secondary-paths/p2p-secondary-path/state/path-computation-method": {
			reflect.TypeOf((E_MplsTypes_PATH_COMPUTATION_METHOD)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/p2p-tunnel-attributes/p2p-secondary-paths/p2p-secondary-path/state/path-control": {
			reflect.TypeOf((E_Pcep_LspControlType)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/state/admin-status": {
			reflect.TypeOf((E_MplsTypes_TUNNEL_ADMIN_STATUS)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/state/metric-type": {
			reflect.TypeOf((E_MplsTypes_LSP_METRIC_TYPE)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/state/oper-status": {
			reflect.TypeOf((E_MplsTypes_LSP_OPER_STATUS)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/state/protection-style-requested": {
			reflect.TypeOf((E_MplsTypes_PROTECTION_TYPE)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/state/role": {
			reflect.TypeOf((E_MplsTypes_LSP_ROLE)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/state/signaling-protocol": {
			reflect.TypeOf((E_MplsTypes_PATH_SETUP_PROTOCOL)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/constrained-path/tunnels/tunnel/state/type": {
			reflect.TypeOf((E_MplsTypes_TUNNEL_TYPE)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/egress/config/incoming-label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/egress/config/push-label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/egress/state/incoming-label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/egress/state/push-label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/ingress/config/incoming-label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/ingress/config/push-label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/ingress/state/incoming-label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/ingress/state/push-label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/transit/config/incoming-label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/transit/config/push-label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/transit/state/incoming-label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/lsps/static-lsps/static-lsp/transit/state/push-label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/ldp/interface-attributes/interfaces/interface/address-families/address-family/config/afi-name": {
			reflect.TypeOf((E_MplsLdp_MplsLdpAfi)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/ldp/interface-attributes/interfaces/interface/address-families/address-family/state/afi-name": {
			reflect.TypeOf((E_MplsLdp_MplsLdpAfi)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/ldp/neighbors/neighbor/hello-adjacencies/hello-adjacency/state/adjacency-type": {
			reflect.TypeOf((E_MplsLdp_MplsLdpAdjacencyType)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/ldp/neighbors/neighbor/state/negotiated-label-advertisement-mode": {
			reflect.TypeOf((E_MplsLdp_LabelAdvertisementMode)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/ldp/neighbors/neighbor/state/peer-label-advertisement-mode": {
			reflect.TypeOf((E_MplsLdp_LabelAdvertisementMode)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/ldp/neighbors/neighbor/state/session-state": {
			reflect.TypeOf((E_MplsLdp_Neighbor_SessionState)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/ldp/targeted/address-families/address-family/config/afi-name": {
			reflect.TypeOf((E_MplsLdp_MplsLdpAfi)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/ldp/targeted/address-families/address-family/state/afi-name": {
			reflect.TypeOf((E_MplsLdp_MplsLdpAfi)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/interface-attributes/interface/authentication/config/authentication-type": {
			reflect.TypeOf((E_MplsTypes_RSVP_AUTH_TYPE)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/interface-attributes/interface/authentication/state/authentication-type": {
			reflect.TypeOf((E_MplsTypes_RSVP_AUTH_TYPE)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/interface-attributes/interface/bandwidth-reservations/bandwidth-reservation/state/priority": {
			reflect.TypeOf((E_BandwidthReservation_Priority_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/interface-attributes/interface/protection/config/link-protection-style-requested": {
			reflect.TypeOf((E_MplsTypes_PROTECTION_TYPE)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/interface-attributes/interface/protection/state/link-protection-style-requested": {
			reflect.TypeOf((E_MplsTypes_PROTECTION_TYPE)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/neighbors/neighbor/state/neighbor-status": {
			reflect.TypeOf((E_Neighbor_NeighborStatus)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/sessions/session/explicit-route-objects/explicit-route-object/state/label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/sessions/session/explicit-route-objects/explicit-route-object/state/type": {
			reflect.TypeOf((E_ExplicitRouteObject_Type)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/sessions/session/record-route-objects/record-route-object/state/reported-label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/sessions/session/state/label-in": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/sessions/session/state/label-out": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/sessions/session/state/protection-requested": {
			reflect.TypeOf((E_MplsTypes_PROTECTION_TYPE)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/sessions/session/state/status": {
			reflect.TypeOf((E_Session_Status)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/rsvp-te/sessions/session/state/type": {
			reflect.TypeOf((E_MplsTypes_LSP_ROLE)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/segment-routing/aggregate-sid-counters/aggregate-sid-counter/state/mpls-label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/signaling-protocols/segment-routing/interfaces/interface/sid-counters/sid-counter/state/mpls-label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/mpls/te-global-attributes/srlgs/srlg/config/flooding-type": {
			reflect.TypeOf((E_Mpls_MplsSrlgFloodingType)(0)),
		},
		"/network-instances/network-instance/mpls/te-global-attributes/srlgs/srlg/state/flooding-type": {
			reflect.TypeOf((E_Mpls_MplsSrlgFloodingType)(0)),
		},
		"/network-instances/network-instance/mpls/te-interface-attributes/interface/igp-flooding-bandwidth/config/threshold-specification": {
			reflect.TypeOf((E_IgpFloodingBandwidth_ThresholdSpecification)(0)),
		},
		"/network-instances/network-instance/mpls/te-interface-attributes/interface/igp-flooding-bandwidth/config/threshold-type": {
			reflect.TypeOf((E_IgpFloodingBandwidth_ThresholdType)(0)),
		},
		"/network-instances/network-instance/mpls/te-interface-attributes/interface/igp-flooding-bandwidth/state/threshold-specification": {
			reflect.TypeOf((E_IgpFloodingBandwidth_ThresholdSpecification)(0)),
		},
		"/network-instances/network-instance/mpls/te-interface-attributes/interface/igp-flooding-bandwidth/state/threshold-type": {
			reflect.TypeOf((E_IgpFloodingBandwidth_ThresholdType)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/config/type": {
			reflect.TypeOf((E_Policy_Type)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/config/protocol": {
			reflect.TypeOf((E_PacketMatchTypes_IP_PROTOCOL)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/icmpv4/config/code": {
			reflect.TypeOf((E_Icmpv4Types_CODE)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/icmpv4/config/type": {
			reflect.TypeOf((E_Icmpv4Types_TYPE)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/icmpv4/state/code": {
			reflect.TypeOf((E_Icmpv4Types_CODE)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/icmpv4/state/type": {
			reflect.TypeOf((E_Icmpv4Types_TYPE)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/state/protocol": {
			reflect.TypeOf((E_PacketMatchTypes_IP_PROTOCOL)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/config/protocol": {
			reflect.TypeOf((E_PacketMatchTypes_IP_PROTOCOL)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/icmpv6/config/code": {
			reflect.TypeOf((E_Icmpv6Types_CODE)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/icmpv6/config/type": {
			reflect.TypeOf((E_Icmpv6Types_TYPE)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/icmpv6/state/code": {
			reflect.TypeOf((E_Icmpv6Types_CODE)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/icmpv6/state/type": {
			reflect.TypeOf((E_Icmpv6Types_TYPE)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/state/protocol": {
			reflect.TypeOf((E_PacketMatchTypes_IP_PROTOCOL)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/l2/config/ethertype": {
			reflect.TypeOf((E_PacketMatchTypes_ETHERTYPE)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/l2/state/ethertype": {
			reflect.TypeOf((E_PacketMatchTypes_ETHERTYPE)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/transport/config/builtin-detail": {
			reflect.TypeOf((E_Transport_BuiltinDetail)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/transport/config/destination-port": {
			reflect.TypeOf((E_PacketMatchTypes_PortNumRange_Enum)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/transport/config/detail-mode": {
			reflect.TypeOf((E_Transport_DetailMode)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/transport/config/explicit-detail-match-mode": {
			reflect.TypeOf((E_Transport_ExplicitDetailMatchMode)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/transport/config/explicit-tcp-flags": {
			reflect.TypeOf((E_PacketMatchTypes_TCP_FLAGS)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/transport/config/source-port": {
			reflect.TypeOf((E_PacketMatchTypes_PortNumRange_Enum)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/transport/state/builtin-detail": {
			reflect.TypeOf((E_Transport_BuiltinDetail)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/transport/state/destination-port": {
			reflect.TypeOf((E_PacketMatchTypes_PortNumRange_Enum)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/transport/state/detail-mode": {
			reflect.TypeOf((E_Transport_DetailMode)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/transport/state/explicit-detail-match-mode": {
			reflect.TypeOf((E_Transport_ExplicitDetailMatchMode)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/transport/state/explicit-tcp-flags": {
			reflect.TypeOf((E_PacketMatchTypes_TCP_FLAGS)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/transport/state/source-port": {
			reflect.TypeOf((E_PacketMatchTypes_PortNumRange_Enum)(0)),
		},
		"/network-instances/network-instance/policy-forwarding/policies/policy/state/type": {
			reflect.TypeOf((E_Policy_Type)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/apply-policy/config/default-export-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/apply-policy/config/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/apply-policy/state/default-export-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/apply-policy/state/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/config/afi-safi-name": {
			reflect.TypeOf((E_BgpTypes_AFI_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/config/send-community-type": {
			reflect.TypeOf((E_BgpTypes_CommunityType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/state/afi-safi-name": {
			reflect.TypeOf((E_BgpTypes_AFI_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/state/send-community-type": {
			reflect.TypeOf((E_BgpTypes_CommunityType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/global/apply-policy/config/default-export-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/global/apply-policy/config/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/global/apply-policy/state/default-export-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/global/apply-policy/state/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/apply-policy/config/default-export-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/apply-policy/config/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/apply-policy/state/default-export-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/apply-policy/state/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/config/afi-safi-name": {
			reflect.TypeOf((E_BgpTypes_AFI_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/config/send-community-type": {
			reflect.TypeOf((E_BgpTypes_CommunityType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/state/afi-safi-name": {
			reflect.TypeOf((E_BgpTypes_AFI_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/state/send-community-type": {
			reflect.TypeOf((E_BgpTypes_CommunityType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/apply-policy/config/default-export-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/apply-policy/config/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/apply-policy/state/default-export-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/apply-policy/state/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/config/peer-type": {
			reflect.TypeOf((E_BgpTypes_PeerType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/config/remove-private-as": {
			reflect.TypeOf((E_BgpTypes_RemovePrivateAsOption)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/config/send-community": {
			reflect.TypeOf((E_BgpTypes_CommunityType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/config/send-community-type": {
			reflect.TypeOf((E_BgpTypes_CommunityType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/graceful-restart/state/mode": {
			reflect.TypeOf((E_GracefulRestart_Mode)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/messages/received/last-notification-error-code": {
			reflect.TypeOf((E_BgpTypes_BGP_ERROR_CODE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/messages/received/last-notification-error-subcode": {
			reflect.TypeOf((E_BgpTypes_BGP_ERROR_SUBCODE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/messages/sent/last-notification-error-code": {
			reflect.TypeOf((E_BgpTypes_BGP_ERROR_CODE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/messages/sent/last-notification-error-subcode": {
			reflect.TypeOf((E_BgpTypes_BGP_ERROR_SUBCODE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/peer-type": {
			reflect.TypeOf((E_BgpTypes_PeerType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/remove-private-as": {
			reflect.TypeOf((E_BgpTypes_RemovePrivateAsOption)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/send-community": {
			reflect.TypeOf((E_BgpTypes_CommunityType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/send-community-type": {
			reflect.TypeOf((E_BgpTypes_CommunityType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/session-state": {
			reflect.TypeOf((E_Bgp_Neighbor_SessionState)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/supported-capabilities": {
			reflect.TypeOf((E_BgpTypes_BGP_CAPABILITY)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/apply-policy/config/default-export-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/apply-policy/config/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/apply-policy/state/default-export-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/apply-policy/state/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/config/afi-safi-name": {
			reflect.TypeOf((E_BgpTypes_AFI_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/config/send-community-type": {
			reflect.TypeOf((E_BgpTypes_CommunityType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/state/afi-safi-name": {
			reflect.TypeOf((E_BgpTypes_AFI_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/state/send-community-type": {
			reflect.TypeOf((E_BgpTypes_CommunityType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/apply-policy/config/default-export-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/apply-policy/config/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/apply-policy/state/default-export-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/apply-policy/state/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/config/peer-type": {
			reflect.TypeOf((E_BgpTypes_PeerType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/config/remove-private-as": {
			reflect.TypeOf((E_BgpTypes_RemovePrivateAsOption)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/config/send-community": {
			reflect.TypeOf((E_BgpTypes_CommunityType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/config/send-community-type": {
			reflect.TypeOf((E_BgpTypes_CommunityType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/state/peer-type": {
			reflect.TypeOf((E_BgpTypes_PeerType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/state/remove-private-as": {
			reflect.TypeOf((E_BgpTypes_RemovePrivateAsOption)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/state/send-community": {
			reflect.TypeOf((E_BgpTypes_CommunityType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/state/send-community-type": {
			reflect.TypeOf((E_BgpTypes_CommunityType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/loc-rib/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-in-post/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-in-pre/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-out-post/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-srte-policy/neighbors/neighbor/adj-rib-out-pre/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/loc-rib/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/loc-rib/routes/route/state/origin": {
			reflect.TypeOf((E_PolicyTypes_INSTALL_PROTOCOL_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-in-post/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-in-pre/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-out-post/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-out-pre/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/loc-rib/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-in-post/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-in-pre/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-out-post/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-srte-policy/neighbors/neighbor/adj-rib-out-pre/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/loc-rib/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/loc-rib/routes/route/state/origin": {
			reflect.TypeOf((E_PolicyTypes_INSTALL_PROTOCOL_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-in-post/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-in-pre/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-out-post/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-out-pre/routes/route/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-five-ip-prefix/type-five-route/paths/path/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-five-ip-prefix/type-five-route/paths/path/state/source-address-family": {
			reflect.TypeOf((E_BgpTypes_AFI_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-four-ethernet-segment/type-four-route/paths/path/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-four-ethernet-segment/type-four-route/paths/path/state/source-address-family": {
			reflect.TypeOf((E_BgpTypes_AFI_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-one-ethernet-auto-discovery/type-one-route/paths/path/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-one-ethernet-auto-discovery/type-one-route/paths/path/state/source-address-family": {
			reflect.TypeOf((E_BgpTypes_AFI_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-three-inclusive-multicast-ethernet-tag/type-three-route/paths/path/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-three-inclusive-multicast-ethernet-tag/type-three-route/paths/path/state/source-address-family": {
			reflect.TypeOf((E_BgpTypes_AFI_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-two-mac-ip-advertisement/type-two-route/paths/path/state/invalid-reason": {
			reflect.TypeOf((E_RibBgpTypes_INVALID_ROUTE_REASON)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/l2vpn-evpn/loc-rib/routes/route-distinguisher/type-two-mac-ip-advertisement/type-two-route/paths/path/state/source-address-family": {
			reflect.TypeOf((E_BgpTypes_AFI_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/state/afi-safi-name": {
			reflect.TypeOf((E_BgpTypes_AFI_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/as-path/as-segment/state/type": {
			reflect.TypeOf((E_BgpTypes_AsPathSegmentType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/as4-path/as4-segment/state/type": {
			reflect.TypeOf((E_BgpTypes_AsPathSegmentType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/state/origin": {
			reflect.TypeOf((E_BgpTypes_BgpOriginAttrType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/tunnel-encapsulation/tunnels/tunnel/state/type": {
			reflect.TypeOf((E_RibBgpTypes_TUNNEL_ENCAPSULATION_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/tunnel-encapsulation/tunnels/tunnel/subtlvs/subtlv/segment-lists/segment-list/segments/segment/state/sid": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/tunnel-encapsulation/tunnels/tunnel/subtlvs/subtlv/segment-lists/segment-list/segments/segment/state/type": {
			reflect.TypeOf((E_Segment_Type)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/tunnel-encapsulation/tunnels/tunnel/subtlvs/subtlv/state/binding-sid": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/attr-sets/attr-set/tunnel-encapsulation/tunnels/tunnel/subtlvs/subtlv/state/type": {
			reflect.TypeOf((E_RibBgpTypes_TUNNEL_ENCAPSULATION_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/bgp/rib/communities/community/state/community": {
			reflect.TypeOf((E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/config/identifier": {
			reflect.TypeOf((E_PolicyTypes_INSTALL_PROTOCOL_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/afi-safi/af/config/afi-name": {
			reflect.TypeOf((E_IsisTypes_AFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/afi-safi/af/config/safi-name": {
			reflect.TypeOf((E_IsisTypes_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/afi-safi/af/multi-topology/config/afi-name": {
			reflect.TypeOf((E_IsisTypes_AFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/afi-safi/af/multi-topology/config/safi-name": {
			reflect.TypeOf((E_IsisTypes_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/afi-safi/af/multi-topology/state/afi-name": {
			reflect.TypeOf((E_IsisTypes_AFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/afi-safi/af/multi-topology/state/safi-name": {
			reflect.TypeOf((E_IsisTypes_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/afi-safi/af/state/afi-name": {
			reflect.TypeOf((E_IsisTypes_AFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/afi-safi/af/state/safi-name": {
			reflect.TypeOf((E_IsisTypes_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/config/hello-padding": {
			reflect.TypeOf((E_IsisTypes_HelloPaddingType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/config/level-capability": {
			reflect.TypeOf((E_IsisTypes_LevelType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/igp-shortcuts/afi/config/afi-name": {
			reflect.TypeOf((E_IsisTypes_AFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/igp-shortcuts/afi/config/nh-type": {
			reflect.TypeOf((E_MplsTypes_PATH_SETUP_PROTOCOL)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/igp-shortcuts/afi/state/afi-name": {
			reflect.TypeOf((E_IsisTypes_AFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/igp-shortcuts/afi/state/nh-type": {
			reflect.TypeOf((E_MplsTypes_PATH_SETUP_PROTOCOL)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/inter-level-propagation-policies/level1-to-level2/config/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/inter-level-propagation-policies/level1-to-level2/state/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/inter-level-propagation-policies/level2-to-level1/config/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/inter-level-propagation-policies/level2-to-level1/state/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/lsp-bit/overload-bit/reset-triggers/reset-trigger/config/reset-trigger": {
			reflect.TypeOf((E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/lsp-bit/overload-bit/reset-triggers/reset-trigger/state/reset-trigger": {
			reflect.TypeOf((E_IsisTypes_OVERLOAD_RESET_TRIGGER_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/segment-routing/flex-algorithm-bindings/flex-algorithm-binding/config/isis-level": {
			reflect.TypeOf((E_IsisTypes_LevelType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/segment-routing/flex-algorithm-bindings/flex-algorithm-binding/state/isis-level": {
			reflect.TypeOf((E_IsisTypes_LevelType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/state/hello-padding": {
			reflect.TypeOf((E_IsisTypes_HelloPaddingType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/state/level-capability": {
			reflect.TypeOf((E_IsisTypes_LevelType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/timers/lsp-generation/state/adaptive-timer": {
			reflect.TypeOf((E_IsisTypes_AdaptiveTimerType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/global/timers/spf/state/adaptive-timer": {
			reflect.TypeOf((E_IsisTypes_AdaptiveTimerType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/afi-safi/af/config/afi-name": {
			reflect.TypeOf((E_IsisTypes_AFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/afi-safi/af/config/safi-name": {
			reflect.TypeOf((E_IsisTypes_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/afi-safi/af/state/afi-name": {
			reflect.TypeOf((E_IsisTypes_AFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/afi-safi/af/state/safi-name": {
			reflect.TypeOf((E_IsisTypes_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/authentication/config/auth-mode": {
			reflect.TypeOf((E_IsisTypes_AUTH_MODE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/authentication/config/auth-type": {
			reflect.TypeOf((E_KeychainTypes_AUTH_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/authentication/state/auth-mode": {
			reflect.TypeOf((E_IsisTypes_AUTH_MODE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/authentication/state/auth-type": {
			reflect.TypeOf((E_KeychainTypes_AUTH_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/config/circuit-type": {
			reflect.TypeOf((E_IsisTypes_CircuitType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/config/hello-padding": {
			reflect.TypeOf((E_IsisTypes_HelloPaddingType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/adjacencies/adjacency/state/adjacency-state": {
			reflect.TypeOf((E_IsisTypes_IsisInterfaceAdjState)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/adjacencies/adjacency/state/adjacency-type": {
			reflect.TypeOf((E_IsisTypes_LevelType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/adjacencies/adjacency/state/neighbor-circuit-type": {
			reflect.TypeOf((E_IsisTypes_LevelType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/adjacencies/adjacency/state/nlpid": {
			reflect.TypeOf((E_Adjacency_Nlpid)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/adjacencies/adjacency/state/topology": {
			reflect.TypeOf((E_IsisTypes_AFI_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/config/afi-name": {
			reflect.TypeOf((E_IsisTypes_AFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/config/safi-name": {
			reflect.TypeOf((E_IsisTypes_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/adjacency-sids/adjacency-sid/config/sid-id": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
			reflect.TypeOf((E_AdjacencySid_SidId_Enum)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/adjacency-sids/adjacency-sid/state/allocated-dynamic-local": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/adjacency-sids/adjacency-sid/state/sid-id": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
			reflect.TypeOf((E_AdjacencySid_SidId_Enum)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/flex-algo-prefix-sids/flex-algo-prefix-sid/config/sid-id": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/flex-algo-prefix-sids/flex-algo-prefix-sid/state/sid-id": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/prefix-sids/prefix-sid/config/label-options": {
			reflect.TypeOf((E_PrefixSid_LabelOptions)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/prefix-sids/prefix-sid/config/sid-id": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/prefix-sids/prefix-sid/state/label-options": {
			reflect.TypeOf((E_PrefixSid_LabelOptions)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/prefix-sids/prefix-sid/state/sid-id": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/state/afi-name": {
			reflect.TypeOf((E_IsisTypes_AFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/state/safi-name": {
			reflect.TypeOf((E_IsisTypes_SAFI_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/hello-authentication/config/auth-mode": {
			reflect.TypeOf((E_IsisTypes_AUTH_MODE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/hello-authentication/config/auth-type": {
			reflect.TypeOf((E_KeychainTypes_AUTH_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/hello-authentication/state/auth-mode": {
			reflect.TypeOf((E_IsisTypes_AUTH_MODE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/hello-authentication/state/auth-type": {
			reflect.TypeOf((E_KeychainTypes_AUTH_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/state/circuit-type": {
			reflect.TypeOf((E_IsisTypes_CircuitType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/state/hello-padding": {
			reflect.TypeOf((E_IsisTypes_HelloPaddingType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/weighted-ecmp/config/load-balancing-weight": {
			reflect.TypeOf((E_WeightedEcmp_LoadBalancingWeight_Enum)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/interfaces/interface/weighted-ecmp/state/load-balancing-weight": {
			reflect.TypeOf((E_WeightedEcmp_LoadBalancingWeight_Enum)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/authentication/config/auth-mode": {
			reflect.TypeOf((E_IsisTypes_AUTH_MODE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/authentication/config/auth-type": {
			reflect.TypeOf((E_KeychainTypes_AUTH_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/authentication/state/auth-mode": {
			reflect.TypeOf((E_IsisTypes_AUTH_MODE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/authentication/state/auth-type": {
			reflect.TypeOf((E_KeychainTypes_AUTH_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/config/metric-style": {
			reflect.TypeOf((E_IsisTypes_MetricStyle)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/state/flags": {
			reflect.TypeOf((E_Lsp_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/state/pdu-type": {
			reflect.TypeOf((E_Lsp_PduType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/authentication/state/crypto-type": {
			reflect.TypeOf((E_Authentication_CryptoType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/flags/state/flags": {
			reflect.TypeOf((E_Flags_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/flags/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/ipv4-source-router-id/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/ipv6-source-router-id/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/prefix-sids/prefix-sid/state/flags": {
			reflect.TypeOf((E_PrefixSid_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/adjacency-sids/adjacency-sid/state/flags": {
			reflect.TypeOf((E_AdjacencySid_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/available-bandwidth/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/lan-adjacency-sids/lan-adjacency-sid/state/flags": {
			reflect.TypeOf((E_LanAdjacencySid_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-attributes/state/local-protection": {
			reflect.TypeOf((E_LinkAttributes_LocalProtection)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-protection-type/state/type": {
			reflect.TypeOf((E_LinkProtectionType_Type)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/unconstrained-lsp/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/extended-is-reachability/neighbors/neighbor/instances/instance/subtlvs/subtlv/utilized-bandwidth/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-external-reachability/prefixes/prefix/default-metric/state/flags": {
			reflect.TypeOf((E_DefaultMetric_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-external-reachability/prefixes/prefix/delay-metric/state/flags": {
			reflect.TypeOf((E_Isis_IsisMetricFlags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-external-reachability/prefixes/prefix/error-metric/state/flags": {
			reflect.TypeOf((E_Isis_IsisMetricFlags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-external-reachability/prefixes/prefix/expense-metric/state/flags": {
			reflect.TypeOf((E_Isis_IsisMetricFlags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-internal-reachability/prefixes/prefix/default-metric/state/flags": {
			reflect.TypeOf((E_DefaultMetric_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-internal-reachability/prefixes/prefix/delay-metric/state/flags": {
			reflect.TypeOf((E_Isis_IsisMetricFlags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-internal-reachability/prefixes/prefix/error-metric/state/flags": {
			reflect.TypeOf((E_Isis_IsisMetricFlags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-internal-reachability/prefixes/prefix/expense-metric/state/flags": {
			reflect.TypeOf((E_Isis_IsisMetricFlags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv4-srlgs/ipv4-srlg/state/flags": {
			reflect.TypeOf((E_Ipv4Srlg_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-reachability/prefixes/prefix/subtlvs/subtlv/flags/state/flags": {
			reflect.TypeOf((E_Flags_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-reachability/prefixes/prefix/subtlvs/subtlv/flags/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-reachability/prefixes/prefix/subtlvs/subtlv/ipv4-source-router-id/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-reachability/prefixes/prefix/subtlvs/subtlv/ipv6-source-router-id/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-reachability/prefixes/prefix/subtlvs/subtlv/prefix-sids/prefix-sid/state/flags": {
			reflect.TypeOf((E_PrefixSid_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-reachability/prefixes/prefix/subtlvs/subtlv/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/ipv6-srlgs/ipv6-srlg/state/flags": {
			reflect.TypeOf((E_Ipv6Srlg_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/is-reachability/neighbors/neighbor/default-metric/state/flags": {
			reflect.TypeOf((E_DefaultMetric_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/is-reachability/neighbors/neighbor/delay-metric/state/flags": {
			reflect.TypeOf((E_Isis_IsisMetricFlags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/is-reachability/neighbors/neighbor/error-metric/state/flags": {
			reflect.TypeOf((E_Isis_IsisMetricFlags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/is-reachability/neighbors/neighbor/expense-metric/state/flags": {
			reflect.TypeOf((E_Isis_IsisMetricFlags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/adjacency-sids/adjacency-sid/state/flags": {
			reflect.TypeOf((E_AdjacencySid_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/available-bandwidth/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/lan-adjacency-sids/lan-adjacency-sid/state/flags": {
			reflect.TypeOf((E_LanAdjacencySid_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-attributes/state/local-protection": {
			reflect.TypeOf((E_LinkAttributes_LocalProtection)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-protection-type/state/type": {
			reflect.TypeOf((E_LinkProtectionType_Type)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/unconstrained-lsp/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/utilized-bandwidth/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/flags/state/flags": {
			reflect.TypeOf((E_Flags_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/flags/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/ipv4-source-router-id/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/ipv6-source-router-id/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/prefix-sids/prefix-sid/state/flags": {
			reflect.TypeOf((E_PrefixSid_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv4-reachability/prefixes/prefix/subtlvs/subtlv/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv6-reachability/prefixes/prefix/subtlvs/subtlv/flags/state/flags": {
			reflect.TypeOf((E_Flags_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv6-reachability/prefixes/prefix/subtlvs/subtlv/flags/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv6-reachability/prefixes/prefix/subtlvs/subtlv/ipv4-source-router-id/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv6-reachability/prefixes/prefix/subtlvs/subtlv/ipv6-source-router-id/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv6-reachability/prefixes/prefix/subtlvs/subtlv/prefix-sids/prefix-sid/state/flags": {
			reflect.TypeOf((E_PrefixSid_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-ipv6-reachability/prefixes/prefix/subtlvs/subtlv/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/adjacency-sids/adjacency-sid/state/flags": {
			reflect.TypeOf((E_AdjacencySid_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/available-bandwidth/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/lan-adjacency-sids/lan-adjacency-sid/state/flags": {
			reflect.TypeOf((E_LanAdjacencySid_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-attributes/state/local-protection": {
			reflect.TypeOf((E_LinkAttributes_LocalProtection)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-protection-type/state/type": {
			reflect.TypeOf((E_LinkProtectionType_Type)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/unconstrained-lsp/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isis-neighbor-attribute/neighbors/neighbor/instances/instance/subtlvs/subtlv/utilized-bandwidth/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/adjacency-sids/adjacency-sid/state/flags": {
			reflect.TypeOf((E_AdjacencySid_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/available-bandwidth/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/lan-adjacency-sids/lan-adjacency-sid/state/flags": {
			reflect.TypeOf((E_LanAdjacencySid_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-attributes/state/local-protection": {
			reflect.TypeOf((E_LinkAttributes_LocalProtection)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/link-protection-type/state/type": {
			reflect.TypeOf((E_LinkProtectionType_Type)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/unconstrained-lsp/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/mt-isn/neighbors/neighbor/instances/instance/subtlvs/subtlv/utilized-bandwidth/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/multi-topology/topologies/topology/state/attributes": {
			reflect.TypeOf((E_Topology_Attributes)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/nlpid/state/nlpid": {
			reflect.TypeOf((E_Nlpid_Nlpid)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/router-capabilities/capability/state/flags": {
			reflect.TypeOf((E_Capability_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/router-capabilities/capability/subtlvs/subtlv/segment-routing-algorithms/state/algorithm": {
			reflect.TypeOf((E_SegmentRoutingAlgorithms_Algorithm)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/router-capabilities/capability/subtlvs/subtlv/segment-routing-capability/srgb-descriptors/srgb-descriptor/state/label": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/router-capabilities/capability/subtlvs/subtlv/segment-routing-capability/state/flags": {
			reflect.TypeOf((E_SegmentRoutingCapability_Flags)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/router-capabilities/capability/subtlvs/subtlv/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/link-state-database/lsp/tlvs/tlv/state/type": {
			reflect.TypeOf((E_IsisLsdbTypes_ISIS_TLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/isis/levels/level/state/metric-style": {
			reflect.TypeOf((E_IsisTypes_MetricStyle)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/interfaces/interface/config/network-type": {
			reflect.TypeOf((E_OspfTypes_OSPF_NETWORK_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/interfaces/interface/neighbors/neighbor/state/adjacency-state": {
			reflect.TypeOf((E_OspfTypes_OSPF_NEIGHBOR_STATE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/interfaces/interface/state/network-type": {
			reflect.TypeOf((E_OspfTypes_OSPF_NETWORK_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/as-external-lsa/state/metric-type": {
			reflect.TypeOf((E_AsExternalLsa_MetricType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/nssa-external-lsa/state/metric-type": {
			reflect.TypeOf((E_AsExternalLsa_MetricType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-link/state/link-type": {
			reflect.TypeOf((E_OspfTypes_OSPFV2_ROUTER_LINK_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-link/tlvs/tlv/adjacency-sid/state/sid-type": {
			reflect.TypeOf((E_OspfTypes_SrSidType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-link/tlvs/tlv/state/type": {
			reflect.TypeOf((E_OspfTypes_OSPFV2_EXTENDED_LINK_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/state/address-family": {
			reflect.TypeOf((E_ExtendedPrefix_AddressFamily)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/state/route-type": {
			reflect.TypeOf((E_ExtendedPrefix_RouteType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/extended-prefix-range/state/address-family": {
			reflect.TypeOf((E_ExtendedPrefix_AddressFamily)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/prefix-sid/state/sid-scope": {
			reflect.TypeOf((E_PrefixSid_SidScope)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/prefix-sid/state/sid-value-type": {
			reflect.TypeOf((E_PrefixSid_SidValueType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/sid-label-binding/tlvs/tlv/ero-path/segments/segment/state/type": {
			reflect.TypeOf((E_OspfTypes_OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/sid-label-binding/tlvs/tlv/sid-label-binding/state/sid-type": {
			reflect.TypeOf((E_OspfTypes_SrSidType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/sid-label-binding/tlvs/tlv/state/type": {
			reflect.TypeOf((E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/extended-prefix/tlvs/tlv/state/type": {
			reflect.TypeOf((E_OspfTypes_OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/grace-lsa/tlvs/tlv/state/reason": {
			reflect.TypeOf((E_Tlv_Reason)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/grace-lsa/tlvs/tlv/state/type": {
			reflect.TypeOf((E_OspfTypes_GRACE_LSA_TLV_TYPES)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/router-information/tlvs/tlv/segment-routing-algorithm/state/supported-algorithms": {
			reflect.TypeOf((E_OspfTypes_SR_ALGORITHM)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/router-information/tlvs/tlv/segment-routing-sid-label-range/tlvs/tlv/sid-label/state/entry-type": {
			reflect.TypeOf((E_OspfTypes_SrSidType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/router-information/tlvs/tlv/segment-routing-sid-label-range/tlvs/tlv/state/type": {
			reflect.TypeOf((E_OspfTypes_OSPF_RI_SR_SID_LABEL_TLV_TYPES)(0)),
			reflect.TypeOf((E_SegmentRoutingSidLabelRange_Tlv_Type_Enum)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/router-information/tlvs/tlv/state/type": {
			reflect.TypeOf((E_OspfTypes_RI_LSA_TLV_TYPES)(0)),
			reflect.TypeOf((E_RouterInformation_Tlv_Type_Enum)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/state/scope": {
			reflect.TypeOf((E_OpaqueLsa_Scope)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/state/type": {
			reflect.TypeOf((E_OspfTypes_OSPF_OPAQUE_LSA_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering/tlvs/tlv/link/sub-tlvs/sub-tlv/state/link-type": {
			reflect.TypeOf((E_SubTlv_LinkType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering/tlvs/tlv/link/sub-tlvs/sub-tlv/state/type": {
			reflect.TypeOf((E_OspfTypes_OSPF_TE_LINK_TLV_TYPE)(0)),
			reflect.TypeOf((E_Link_SubTlv_Type_Enum)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering/tlvs/tlv/node-attribute/sub-tlvs/sub-tlv/state/type": {
			reflect.TypeOf((E_OspfTypes_TE_NODE_ATTRIBUTE_TLV_TYPE)(0)),
			reflect.TypeOf((E_NodeAttribute_SubTlv_Type_Enum)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/opaque-lsa/traffic-engineering/tlvs/tlv/state/type": {
			reflect.TypeOf((E_OspfTypes_OSPF_TE_LSA_TLV_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/lsas/lsa/router-lsa/state/type": {
			reflect.TypeOf((E_OspfTypes_ROUTER_LSA_TYPES)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/lsdb/lsa-types/lsa-type/state/type": {
			reflect.TypeOf((E_OspfTypes_OSPF_LSA_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/areas/area/virtual-links/virtual-link/state/adjacency-state": {
			reflect.TypeOf((E_OspfTypes_OSPF_NEIGHBOR_STATE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/global/config/summary-route-cost-mode": {
			reflect.TypeOf((E_Global_SummaryRouteCostMode)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/global/inter-area-propagation-policies/inter-area-propagation-policy/config/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/global/inter-area-propagation-policies/inter-area-propagation-policy/state/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/global/state/summary-route-cost-mode": {
			reflect.TypeOf((E_Global_SummaryRouteCostMode)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/global/timers/lsa-generation/state/timer-type": {
			reflect.TypeOf((E_LsaGeneration_TimerType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/global/timers/max-metric/config/include": {
			reflect.TypeOf((E_OspfTypes_MAX_METRIC_INCLUDE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/global/timers/max-metric/config/trigger": {
			reflect.TypeOf((E_OspfTypes_MAX_METRIC_TRIGGER)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/global/timers/max-metric/state/include": {
			reflect.TypeOf((E_OspfTypes_MAX_METRIC_INCLUDE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/global/timers/max-metric/state/trigger": {
			reflect.TypeOf((E_OspfTypes_MAX_METRIC_TRIGGER)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/ospfv2/global/timers/spf/state/timer-type": {
			reflect.TypeOf((E_LsaGeneration_TimerType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/pcep/path-computation-servers/path-computation-server/config/pce-type": {
			reflect.TypeOf((E_Pcep_PceModeType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/pcep/path-computation-servers/path-computation-server/state/pce-type": {
			reflect.TypeOf((E_Pcep_PceModeType)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/pim/interfaces/interface/config/mode": {
			reflect.TypeOf((E_PimTypes_PIM_MODE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/pim/interfaces/interface/neighbors/neighbor/state/mode": {
			reflect.TypeOf((E_PimTypes_PIM_MODE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/pim/interfaces/interface/state/mode": {
			reflect.TypeOf((E_PimTypes_PIM_MODE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/state/identifier": {
			reflect.TypeOf((E_PolicyTypes_INSTALL_PROTOCOL_TYPE)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/static-routes/static/next-hops/next-hop/config/next-hop": {
			reflect.TypeOf((E_LocalRouting_LOCAL_DEFINED_NEXT_HOP)(0)),
		},
		"/network-instances/network-instance/protocols/protocol/static-routes/static/next-hops/next-hop/state/next-hop": {
			reflect.TypeOf((E_LocalRouting_LOCAL_DEFINED_NEXT_HOP)(0)),
		},
		"/network-instances/network-instance/route-limits/route-limit/config/afi": {
			reflect.TypeOf((E_Types_ADDRESS_FAMILY)(0)),
		},
		"/network-instances/network-instance/route-limits/route-limit/state/afi": {
			reflect.TypeOf((E_Types_ADDRESS_FAMILY)(0)),
		},
		"/network-instances/network-instance/segment-routing/srgbs/srgb/config/dataplane-type": {
			reflect.TypeOf((E_SegmentRoutingTypes_SrDataplaneType)(0)),
		},
		"/network-instances/network-instance/segment-routing/srgbs/srgb/state/dataplane-type": {
			reflect.TypeOf((E_SegmentRoutingTypes_SrDataplaneType)(0)),
		},
		"/network-instances/network-instance/segment-routing/srlbs/srlb/config/dataplane-type": {
			reflect.TypeOf((E_SegmentRoutingTypes_SrDataplaneType)(0)),
		},
		"/network-instances/network-instance/segment-routing/srlbs/srlb/state/dataplane-type": {
			reflect.TypeOf((E_SegmentRoutingTypes_SrDataplaneType)(0)),
		},
		"/network-instances/network-instance/segment-routing/te-policies/te-policy/candidate-paths/candidate-path/segment-lists/segment-list/next-hops/next-hop/state/decapsulate-header": {
			reflect.TypeOf((E_AftTypes_EncapsulationHeaderType)(0)),
		},
		"/network-instances/network-instance/segment-routing/te-policies/te-policy/candidate-paths/candidate-path/segment-lists/segment-list/next-hops/next-hop/state/encapsulate-header": {
			reflect.TypeOf((E_AftTypes_EncapsulationHeaderType)(0)),
		},
		"/network-instances/network-instance/segment-routing/te-policies/te-policy/candidate-paths/candidate-path/segment-lists/segment-list/next-hops/next-hop/state/origin-protocol": {
			reflect.TypeOf((E_PolicyTypes_INSTALL_PROTOCOL_TYPE)(0)),
		},
		"/network-instances/network-instance/segment-routing/te-policies/te-policy/candidate-paths/candidate-path/segment-lists/segment-list/next-hops/next-hop/state/pushed-mpls-label-stack": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/segment-routing/te-policies/te-policy/candidate-paths/candidate-path/segment-lists/segment-list/sids/sid/state/value": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/segment-routing/te-policies/te-policy/candidate-paths/candidate-path/segment-lists/segment-list/state/invalid-reason": {
			reflect.TypeOf((E_SegmentRoutingTypes_SrteInvalidSlReason)(0)),
		},
		"/network-instances/network-instance/segment-routing/te-policies/te-policy/candidate-paths/candidate-path/state/enlp": {
			reflect.TypeOf((E_SegmentRoutingTypes_EnlpType)(0)),
		},
		"/network-instances/network-instance/segment-routing/te-policies/te-policy/candidate-paths/candidate-path/state/protocol-origin": {
			reflect.TypeOf((E_SegmentRoutingTypes_SrteProtocolType)(0)),
		},
		"/network-instances/network-instance/segment-routing/te-policies/te-policy/state/bsid": {
			reflect.TypeOf((E_MplsTypes_MplsLabel_Enum)(0)),
		},
		"/network-instances/network-instance/state/type": {
			reflect.TypeOf((E_NetworkInstanceTypes_NETWORK_INSTANCE_TYPE)(0)),
		},
		"/network-instances/network-instance/table-connections/table-connection/config/address-family": {
			reflect.TypeOf((E_Types_ADDRESS_FAMILY)(0)),
		},
		"/network-instances/network-instance/table-connections/table-connection/config/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/table-connections/table-connection/config/dst-protocol": {
			reflect.TypeOf((E_PolicyTypes_INSTALL_PROTOCOL_TYPE)(0)),
		},
		"/network-instances/network-instance/table-connections/table-connection/config/src-protocol": {
			reflect.TypeOf((E_PolicyTypes_INSTALL_PROTOCOL_TYPE)(0)),
		},
		"/network-instances/network-instance/table-connections/table-connection/state/address-family": {
			reflect.TypeOf((E_Types_ADDRESS_FAMILY)(0)),
		},
		"/network-instances/network-instance/table-connections/table-connection/state/default-import-policy": {
			reflect.TypeOf((E_RoutingPolicy_DefaultPolicyType)(0)),
		},
		"/network-instances/network-instance/table-connections/table-connection/state/dst-protocol": {
			reflect.TypeOf((E_PolicyTypes_INSTALL_PROTOCOL_TYPE)(0)),
		},
		"/network-instances/network-instance/table-connections/table-connection/state/src-protocol": {
			reflect.TypeOf((E_PolicyTypes_INSTALL_PROTOCOL_TYPE)(0)),
		},
		"/network-instances/network-instance/tables/table/config/address-family": {
			reflect.TypeOf((E_Types_ADDRESS_FAMILY)(0)),
		},
		"/network-instances/network-instance/tables/table/config/protocol": {
			reflect.TypeOf((E_PolicyTypes_INSTALL_PROTOCOL_TYPE)(0)),
		},
		"/network-instances/network-instance/tables/table/state/address-family": {
			reflect.TypeOf((E_Types_ADDRESS_FAMILY)(0)),
		},
		"/network-instances/network-instance/tables/table/state/protocol": {
			reflect.TypeOf((E_PolicyTypes_INSTALL_PROTOCOL_TYPE)(0)),
		},
		"/network-instances/network-instance/vlans/vlan/config/status": {
			reflect.TypeOf((E_Vlan_Status)(0)),
		},
		"/network-instances/network-instance/vlans/vlan/state/status": {
			reflect.TypeOf((E_Vlan_Status)(0)),
		},
		"/optical-amplifier/amplifiers/amplifier/config/amp-mode": {
			reflect.TypeOf((E_OpticalAmplifier_OPTICAL_AMPLIFIER_MODE)(0)),
		},
		"/optical-amplifier/amplifiers/amplifier/config/fiber-type-profile": {
			reflect.TypeOf((E_OpticalAmplifier_FIBER_TYPE_PROFILE)(0)),
		},
		"/optical-amplifier/amplifiers/amplifier/config/gain-range": {
			reflect.TypeOf((E_OpticalAmplifier_GAIN_RANGE)(0)),
		},
		"/optical-amplifier/amplifiers/amplifier/config/type": {
			reflect.TypeOf((E_OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE)(0)),
		},
		"/optical-amplifier/amplifiers/amplifier/state/amp-mode": {
			reflect.TypeOf((E_OpticalAmplifier_OPTICAL_AMPLIFIER_MODE)(0)),
		},
		"/optical-amplifier/amplifiers/amplifier/state/fiber-type-profile": {
			reflect.TypeOf((E_OpticalAmplifier_FIBER_TYPE_PROFILE)(0)),
		},
		"/optical-amplifier/amplifiers/amplifier/state/gain-range": {
			reflect.TypeOf((E_OpticalAmplifier_GAIN_RANGE)(0)),
		},
		"/optical-amplifier/amplifiers/amplifier/state/type": {
			reflect.TypeOf((E_OpticalAmplifier_OPTICAL_AMPLIFIER_TYPE)(0)),
		},
		"/routing-policy/defined-sets/bgp-defined-sets/community-sets/community-set/config/community-member": {
			reflect.TypeOf((E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY)(0)),
		},
		"/routing-policy/defined-sets/bgp-defined-sets/community-sets/community-set/config/match-set-options": {
			reflect.TypeOf((E_PolicyTypes_MatchSetOptionsType)(0)),
		},
		"/routing-policy/defined-sets/bgp-defined-sets/community-sets/community-set/state/community-member": {
			reflect.TypeOf((E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY)(0)),
		},
		"/routing-policy/defined-sets/bgp-defined-sets/community-sets/community-set/state/match-set-options": {
			reflect.TypeOf((E_PolicyTypes_MatchSetOptionsType)(0)),
		},
		"/routing-policy/defined-sets/bgp-defined-sets/ext-community-sets/ext-community-set/config/match-set-options": {
			reflect.TypeOf((E_PolicyTypes_MatchSetOptionsType)(0)),
		},
		"/routing-policy/defined-sets/bgp-defined-sets/ext-community-sets/ext-community-set/state/match-set-options": {
			reflect.TypeOf((E_PolicyTypes_MatchSetOptionsType)(0)),
		},
		"/routing-policy/defined-sets/prefix-sets/prefix-set/config/mode": {
			reflect.TypeOf((E_PrefixSet_Mode)(0)),
		},
		"/routing-policy/defined-sets/prefix-sets/prefix-set/state/mode": {
			reflect.TypeOf((E_PrefixSet_Mode)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/config/set-med": {
			reflect.TypeOf((E_BgpPolicy_BgpSetMedType_Enum)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/config/set-next-hop": {
			reflect.TypeOf((E_BgpPolicy_BgpNextHopType_Enum)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/config/set-route-origin": {
			reflect.TypeOf((E_BgpTypes_BgpOriginAttrType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-community/config/method": {
			reflect.TypeOf((E_SetCommunity_Method)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-community/config/options": {
			reflect.TypeOf((E_BgpPolicy_BgpSetCommunityOptionType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-community/inline/config/communities": {
			reflect.TypeOf((E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-community/inline/state/communities": {
			reflect.TypeOf((E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-community/state/method": {
			reflect.TypeOf((E_SetCommunity_Method)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-community/state/options": {
			reflect.TypeOf((E_BgpPolicy_BgpSetCommunityOptionType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-ext-community/config/method": {
			reflect.TypeOf((E_SetCommunity_Method)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-ext-community/config/options": {
			reflect.TypeOf((E_BgpPolicy_BgpSetCommunityOptionType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-ext-community/inline/config/communities": {
			reflect.TypeOf((E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-ext-community/inline/state/communities": {
			reflect.TypeOf((E_BgpTypes_BGP_WELL_KNOWN_STD_COMMUNITY)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-ext-community/state/method": {
			reflect.TypeOf((E_SetCommunity_Method)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-ext-community/state/options": {
			reflect.TypeOf((E_BgpPolicy_BgpSetCommunityOptionType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/state/set-med": {
			reflect.TypeOf((E_BgpPolicy_BgpSetMedType_Enum)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/state/set-next-hop": {
			reflect.TypeOf((E_BgpPolicy_BgpNextHopType_Enum)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/state/set-route-origin": {
			reflect.TypeOf((E_BgpTypes_BgpOriginAttrType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/config/policy-result": {
			reflect.TypeOf((E_RoutingPolicy_PolicyResultType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/set-tag/config/mode": {
			reflect.TypeOf((E_SetTag_Mode)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/set-tag/state/mode": {
			reflect.TypeOf((E_SetTag_Mode)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/actions/state/policy-result": {
			reflect.TypeOf((E_RoutingPolicy_PolicyResultType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/as-path-length/config/operator": {
			reflect.TypeOf((E_PolicyTypes_ATTRIBUTE_COMPARISON)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/as-path-length/state/operator": {
			reflect.TypeOf((E_PolicyTypes_ATTRIBUTE_COMPARISON)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/community-count/config/operator": {
			reflect.TypeOf((E_PolicyTypes_ATTRIBUTE_COMPARISON)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/community-count/state/operator": {
			reflect.TypeOf((E_PolicyTypes_ATTRIBUTE_COMPARISON)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/config/afi-safi-in": {
			reflect.TypeOf((E_BgpTypes_AFI_SAFI_TYPE)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/config/origin-eq": {
			reflect.TypeOf((E_BgpTypes_BgpOriginAttrType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/config/route-type": {
			reflect.TypeOf((E_BgpConditions_RouteType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/match-as-path-set/config/match-set-options": {
			reflect.TypeOf((E_PolicyTypes_MatchSetOptionsType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/match-as-path-set/state/match-set-options": {
			reflect.TypeOf((E_PolicyTypes_MatchSetOptionsType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/match-community-set/config/match-set-options": {
			reflect.TypeOf((E_PolicyTypes_MatchSetOptionsType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/match-community-set/state/match-set-options": {
			reflect.TypeOf((E_PolicyTypes_MatchSetOptionsType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/match-ext-community-set/config/match-set-options": {
			reflect.TypeOf((E_PolicyTypes_MatchSetOptionsType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/match-ext-community-set/state/match-set-options": {
			reflect.TypeOf((E_PolicyTypes_MatchSetOptionsType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/state/afi-safi-in": {
			reflect.TypeOf((E_BgpTypes_AFI_SAFI_TYPE)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/state/origin-eq": {
			reflect.TypeOf((E_BgpTypes_BgpOriginAttrType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/state/route-type": {
			reflect.TypeOf((E_BgpConditions_RouteType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/config/install-protocol-eq": {
			reflect.TypeOf((E_PolicyTypes_INSTALL_PROTOCOL_TYPE)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/match-neighbor-set/config/match-set-options": {
			reflect.TypeOf((E_PolicyTypes_MatchSetOptionsRestrictedType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/match-neighbor-set/state/match-set-options": {
			reflect.TypeOf((E_PolicyTypes_MatchSetOptionsRestrictedType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/match-prefix-set/config/match-set-options": {
			reflect.TypeOf((E_PolicyTypes_MatchSetOptionsRestrictedType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/match-prefix-set/state/match-set-options": {
			reflect.TypeOf((E_PolicyTypes_MatchSetOptionsRestrictedType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/match-tag-set/config/match-set-options": {
			reflect.TypeOf((E_PolicyTypes_MatchSetOptionsRestrictedType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/match-tag-set/state/match-set-options": {
			reflect.TypeOf((E_PolicyTypes_MatchSetOptionsRestrictedType)(0)),
		},
		"/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/state/install-protocol-eq": {
			reflect.TypeOf((E_PolicyTypes_INSTALL_PROTOCOL_TYPE)(0)),
		},
		"/stp/global/config/enabled-protocol": {
			reflect.TypeOf((E_SpanningTreeTypes_STP_PROTOCOL)(0)),
		},
		"/stp/global/state/enabled-protocol": {
			reflect.TypeOf((E_SpanningTreeTypes_STP_PROTOCOL)(0)),
		},
		"/stp/interfaces/interface/config/edge-port": {
			reflect.TypeOf((E_SpanningTreeTypes_STP_EDGE_PORT)(0)),
		},
		"/stp/interfaces/interface/config/guard": {
			reflect.TypeOf((E_SpanningTreeTypes_StpGuardType)(0)),
		},
		"/stp/interfaces/interface/config/link-type": {
			reflect.TypeOf((E_SpanningTreeTypes_StpLinkType)(0)),
		},
		"/stp/interfaces/interface/state/edge-port": {
			reflect.TypeOf((E_SpanningTreeTypes_STP_EDGE_PORT)(0)),
		},
		"/stp/interfaces/interface/state/guard": {
			reflect.TypeOf((E_SpanningTreeTypes_StpGuardType)(0)),
		},
		"/stp/interfaces/interface/state/link-type": {
			reflect.TypeOf((E_SpanningTreeTypes_StpLinkType)(0)),
		},
		"/stp/mstp/mst-instances/mst-instance/interfaces/interface/state/port-state": {
			reflect.TypeOf((E_SpanningTreeTypes_STP_PORT_STATE)(0)),
		},
		"/stp/mstp/mst-instances/mst-instance/interfaces/interface/state/role": {
			reflect.TypeOf((E_SpanningTreeTypes_STP_PORT_ROLE)(0)),
		},
		"/stp/rapid-pvst/vlan/interfaces/interface/state/port-state": {
			reflect.TypeOf((E_SpanningTreeTypes_STP_PORT_STATE)(0)),
		},
		"/stp/rapid-pvst/vlan/interfaces/interface/state/role": {
			reflect.TypeOf((E_SpanningTreeTypes_STP_PORT_ROLE)(0)),
		},
		"/stp/rstp/interfaces/interface/state/port-state": {
			reflect.TypeOf((E_SpanningTreeTypes_STP_PORT_STATE)(0)),
		},
		"/stp/rstp/interfaces/interface/state/role": {
			reflect.TypeOf((E_SpanningTreeTypes_STP_PORT_ROLE)(0)),
		},
		"/system/aaa/accounting/config/accounting-method": {
			reflect.TypeOf((E_AaaTypes_AAA_METHOD_TYPE)(0)),
		},
		"/system/aaa/accounting/events/event/config/event-type": {
			reflect.TypeOf((E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE)(0)),
		},
		"/system/aaa/accounting/events/event/config/record": {
			reflect.TypeOf((E_Event_Record)(0)),
		},
		"/system/aaa/accounting/events/event/state/event-type": {
			reflect.TypeOf((E_AaaTypes_AAA_ACCOUNTING_EVENT_TYPE)(0)),
		},
		"/system/aaa/accounting/events/event/state/record": {
			reflect.TypeOf((E_Event_Record)(0)),
		},
		"/system/aaa/accounting/state/accounting-method": {
			reflect.TypeOf((E_AaaTypes_AAA_METHOD_TYPE)(0)),
		},
		"/system/aaa/authentication/config/authentication-method": {
			reflect.TypeOf((E_AaaTypes_AAA_METHOD_TYPE)(0)),
		},
		"/system/aaa/authentication/state/authentication-method": {
			reflect.TypeOf((E_AaaTypes_AAA_METHOD_TYPE)(0)),
		},
		"/system/aaa/authentication/users/user/config/role": {
			reflect.TypeOf((E_AaaTypes_SYSTEM_DEFINED_ROLES)(0)),
		},
		"/system/aaa/authentication/users/user/state/role": {
			reflect.TypeOf((E_AaaTypes_SYSTEM_DEFINED_ROLES)(0)),
		},
		"/system/aaa/authorization/config/authorization-method": {
			reflect.TypeOf((E_AaaTypes_AAA_METHOD_TYPE)(0)),
		},
		"/system/aaa/authorization/events/event/config/event-type": {
			reflect.TypeOf((E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE)(0)),
		},
		"/system/aaa/authorization/events/event/state/event-type": {
			reflect.TypeOf((E_AaaTypes_AAA_AUTHORIZATION_EVENT_TYPE)(0)),
		},
		"/system/aaa/authorization/state/authorization-method": {
			reflect.TypeOf((E_AaaTypes_AAA_METHOD_TYPE)(0)),
		},
		"/system/aaa/server-groups/server-group/config/type": {
			reflect.TypeOf((E_AaaTypes_AAA_SERVER_TYPE)(0)),
		},
		"/system/aaa/server-groups/server-group/state/type": {
			reflect.TypeOf((E_AaaTypes_AAA_SERVER_TYPE)(0)),
		},
		"/system/alarms/alarm/state/severity": {
			reflect.TypeOf((E_AlarmTypes_OPENCONFIG_ALARM_SEVERITY)(0)),
		},
		"/system/alarms/alarm/state/type-id": {
			reflect.TypeOf((E_AlarmTypes_OPENCONFIG_ALARM_TYPE_ID)(0)),
		},
		"/system/cpus/cpu/state/index": {
			reflect.TypeOf((E_Cpu_Index_Enum)(0)),
		},
		"/system/logging/console/selectors/selector/config/facility": {
			reflect.TypeOf((E_SystemLogging_SYSLOG_FACILITY)(0)),
		},
		"/system/logging/console/selectors/selector/config/severity": {
			reflect.TypeOf((E_SystemLogging_SyslogSeverity)(0)),
		},
		"/system/logging/console/selectors/selector/state/facility": {
			reflect.TypeOf((E_SystemLogging_SYSLOG_FACILITY)(0)),
		},
		"/system/logging/console/selectors/selector/state/severity": {
			reflect.TypeOf((E_SystemLogging_SyslogSeverity)(0)),
		},
		"/system/logging/files/file/selectors/selector/config/facility": {
			reflect.TypeOf((E_SystemLogging_SYSLOG_FACILITY)(0)),
		},
		"/system/logging/files/file/selectors/selector/config/severity": {
			reflect.TypeOf((E_SystemLogging_SyslogSeverity)(0)),
		},
		"/system/logging/files/file/selectors/selector/state/facility": {
			reflect.TypeOf((E_SystemLogging_SYSLOG_FACILITY)(0)),
		},
		"/system/logging/files/file/selectors/selector/state/severity": {
			reflect.TypeOf((E_SystemLogging_SyslogSeverity)(0)),
		},
		"/system/logging/remote-servers/remote-server/selectors/selector/config/facility": {
			reflect.TypeOf((E_SystemLogging_SYSLOG_FACILITY)(0)),
		},
		"/system/logging/remote-servers/remote-server/selectors/selector/config/severity": {
			reflect.TypeOf((E_SystemLogging_SyslogSeverity)(0)),
		},
		"/system/logging/remote-servers/remote-server/selectors/selector/state/facility": {
			reflect.TypeOf((E_SystemLogging_SYSLOG_FACILITY)(0)),
		},
		"/system/logging/remote-servers/remote-server/selectors/selector/state/severity": {
			reflect.TypeOf((E_SystemLogging_SyslogSeverity)(0)),
		},
		"/system/logging/vty/selectors/selector/config/facility": {
			reflect.TypeOf((E_SystemLogging_SYSLOG_FACILITY)(0)),
		},
		"/system/logging/vty/selectors/selector/config/severity": {
			reflect.TypeOf((E_SystemLogging_SyslogSeverity)(0)),
		},
		"/system/logging/vty/selectors/selector/state/facility": {
			reflect.TypeOf((E_SystemLogging_SYSLOG_FACILITY)(0)),
		},
		"/system/logging/vty/selectors/selector/state/severity": {
			reflect.TypeOf((E_SystemLogging_SyslogSeverity)(0)),
		},
		"/system/messages/config/severity": {
			reflect.TypeOf((E_SystemLogging_SyslogSeverity)(0)),
		},
		"/system/messages/debug-entries/debug-service/config/service": {
			reflect.TypeOf((E_Messages_DEBUG_SERVICE)(0)),
		},
		"/system/messages/debug-entries/debug-service/state/service": {
			reflect.TypeOf((E_Messages_DEBUG_SERVICE)(0)),
		},
		"/system/messages/state/severity": {
			reflect.TypeOf((E_SystemLogging_SyslogSeverity)(0)),
		},
		"/system/ntp/ntp-keys/ntp-key/config/key-type": {
			reflect.TypeOf((E_System_NTP_AUTH_TYPE)(0)),
		},
		"/system/ntp/ntp-keys/ntp-key/state/key-type": {
			reflect.TypeOf((E_System_NTP_AUTH_TYPE)(0)),
		},
		"/system/ntp/servers/server/config/association-type": {
			reflect.TypeOf((E_Server_AssociationType)(0)),
		},
		"/system/ntp/servers/server/state/association-type": {
			reflect.TypeOf((E_Server_AssociationType)(0)),
		},
		"/system/ssh-server/config/protocol-version": {
			reflect.TypeOf((E_SshServer_ProtocolVersion)(0)),
		},
		"/system/ssh-server/state/protocol-version": {
			reflect.TypeOf((E_SshServer_ProtocolVersion)(0)),
		},
		"/terminal-device/logical-channels/channel/config/admin-state": {
			reflect.TypeOf((E_TransportTypes_AdminStateType)(0)),
		},
		"/terminal-device/logical-channels/channel/config/client-mapping-mode": {
			reflect.TypeOf((E_TransportTypes_CLIENT_MAPPING_MODE)(0)),
		},
		"/terminal-device/logical-channels/channel/config/logical-channel-type": {
			reflect.TypeOf((E_TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE)(0)),
		},
		"/terminal-device/logical-channels/channel/config/loopback-mode": {
			reflect.TypeOf((E_TransportTypes_LoopbackModeType)(0)),
		},
		"/terminal-device/logical-channels/channel/config/rate-class": {
			reflect.TypeOf((E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE)(0)),
		},
		"/terminal-device/logical-channels/channel/config/trib-protocol": {
			reflect.TypeOf((E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE)(0)),
		},
		"/terminal-device/logical-channels/channel/ethernet/config/client-als": {
			reflect.TypeOf((E_Ethernet_ClientAls)(0)),
		},
		"/terminal-device/logical-channels/channel/ethernet/lldp/neighbors/neighbor/state/chassis-id-type": {
			reflect.TypeOf((E_LldpTypes_ChassisIdType)(0)),
		},
		"/terminal-device/logical-channels/channel/ethernet/lldp/neighbors/neighbor/state/port-id-type": {
			reflect.TypeOf((E_LldpTypes_PortIdType)(0)),
		},
		"/terminal-device/logical-channels/channel/ethernet/state/client-als": {
			reflect.TypeOf((E_Ethernet_ClientAls)(0)),
		},
		"/terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/assignment-type": {
			reflect.TypeOf((E_Assignment_AssignmentType)(0)),
		},
		"/terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/mapping": {
			reflect.TypeOf((E_TransportTypes_FRAME_MAPPING_PROTOCOL)(0)),
		},
		"/terminal-device/logical-channels/channel/logical-channel-assignments/assignment/state/assignment-type": {
			reflect.TypeOf((E_Assignment_AssignmentType)(0)),
		},
		"/terminal-device/logical-channels/channel/logical-channel-assignments/assignment/state/mapping": {
			reflect.TypeOf((E_TransportTypes_FRAME_MAPPING_PROTOCOL)(0)),
		},
		"/terminal-device/logical-channels/channel/otn/config/tributary-slot-granularity": {
			reflect.TypeOf((E_TransportTypes_TRIBUTARY_SLOT_GRANULARITY)(0)),
		},
		"/terminal-device/logical-channels/channel/otn/state/tributary-slot-granularity": {
			reflect.TypeOf((E_TransportTypes_TRIBUTARY_SLOT_GRANULARITY)(0)),
		},
		"/terminal-device/logical-channels/channel/state/admin-state": {
			reflect.TypeOf((E_TransportTypes_AdminStateType)(0)),
		},
		"/terminal-device/logical-channels/channel/state/client-mapping-mode": {
			reflect.TypeOf((E_TransportTypes_CLIENT_MAPPING_MODE)(0)),
		},
		"/terminal-device/logical-channels/channel/state/link-state": {
			reflect.TypeOf((E_Channel_LinkState)(0)),
		},
		"/terminal-device/logical-channels/channel/state/logical-channel-type": {
			reflect.TypeOf((E_TransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE)(0)),
		},
		"/terminal-device/logical-channels/channel/state/loopback-mode": {
			reflect.TypeOf((E_TransportTypes_LoopbackModeType)(0)),
		},
		"/terminal-device/logical-channels/channel/state/rate-class": {
			reflect.TypeOf((E_TransportTypes_TRIBUTARY_RATE_CLASS_TYPE)(0)),
		},
		"/terminal-device/logical-channels/channel/state/trib-protocol": {
			reflect.TypeOf((E_TransportTypes_TRIBUTARY_PROTOCOL_TYPE)(0)),
		},
	}
}
